[
  {
    "path": ".deepsource.toml",
    "content": "version = 1\n\ntest_patterns = [\"**/tests/**\"]\n\nexclude_patterns = [\n    \"include/vendor/**\",\n    \"include/jpgraph/**\",\n]\n\n[[analyzers]]\nname = \"shell\"\n\n[[analyzers]]\nname = \"javascript\"\n\n  [analyzers.meta]\n  environment = [\"browser\"]\n\n[[analyzers]]\nname = \"python\"\n\n  [analyzers.meta]\n  runtime_version = \"3.x.x\"\n  max_line_length = 188\n\n[[analyzers]]\nname = \"php\"\n\n  [analyzers.meta]\n  bootstrap_files = [\"include/dbase.stub.php\", \"config/settings.inc.php.in\"]\n"
  },
  {
    "path": ".editorconfig",
    "content": "# EditorConfig helps maintain consistent coding styles between editors and IDEs.\n# See https://editorconfig.org\n# Root marker\nroot = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n# Let linters/formatters (ruff, eslint) enforce line length\nmax_line_length = off\n\n[*.{py,php,js,jsx,ts,tsx,cjs,mjs,sh,bash}]\nindent_style = space\nindent_size = 4\ntab_width = 4\n\n[*.{yml,yaml}]\nindent_style = space\nindent_size = 2\n\n[*.{json,jsonc}]\nindent_style = space\nindent_size = 2\n\n[*.md]\n# Preserve intentional double-space line breaks and trailing spaces in tables\ntrim_trailing_whitespace = false\ninsert_final_newline = true\n\n[Makefile]\n# Tabs are required for make recipes\nindent_style = tab\n\n[Dockerfile]\nindent_style = space\nindent_size = 4\n\n[*.{ini,conf}]\nindent_style = space\nindent_size = 4\n"
  },
  {
    "path": ".github/ci_db_testdata.py",
    "content": "\"\"\"Update The Test Database.\n\nThe test database instance for CI has static data for testing.  This is static\nfrom the time of the docker image build.  This script runs from GHA and does\nsome mucking with the database to improve coverage.\n\n\"\"\"\n\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\nfrom sqlalchemy.engine import Connection\n\nLOG = logger()\n\n\n@with_sqlalchemy_conn(\"isuag\")\ndef create_realtime_isuag(conn: Connection | None = None) -> None:\n    \"\"\"Create the realtime table if needed.\"\"\"\n    nt = NetworkTable(\"ISUSM\")\n    for sid in nt.sts:\n        conn.execute(\n            sql_helper(\"\"\"\n    insert into sm_minute (station, valid, tair_c_avg_qc, sv_t2_qc,\n    sv_vwc2_qc) values\n    (:sid, now(), :tmpc, :tmpc, :vwc)\"\"\"),\n            {\n                \"sid\": sid,\n                \"tmpc\": None if sid == \"AHDI4\" else 20.0,\n                \"vwc\": None if sid in [\"AMFI4\", \"AHDI4\"] else 0.2,\n            },\n        )\n        conn.execute(\n            sql_helper(\"\"\"\n    insert into sm_daily (station, valid, tair_c_max_qc) values\n    (:sid, now(), :tmpc)\"\"\"),\n            {\"sid\": sid, \"tmpc\": 20.0},\n        )\n        if sid in [\"CRFI4\", \"BOOI4\", \"CAMI4\"]:\n            conn.execute(\n                sql_helper(\"\"\"\n        insert into sm_inversion (station, valid, tair_15_c_avg_qc) values\n        (:sid, now(), :tmpc)\"\"\"),\n                {\"sid\": sid, \"tmpc\": 20.0},\n            )\n\n    conn.commit()\n\n\n@with_sqlalchemy_conn(\"iem\")\ndef create_iemaccess_isuag(conn: Connection | None = None) -> None:\n    \"\"\"Create the realtime table if needed.\"\"\"\n    nt = NetworkTable(\"ISUSM\")\n    for sid in nt.sts:\n        conn.execute(\n            sql_helper(\"\"\"\n    insert into current (iemid, valid, tmpf) values\n    (:iemid, now(), :tmpf)\"\"\"),\n            {\n                \"iemid\": nt.sts[sid][\"iemid\"],\n                \"tmpf\": 20.0 if sid[2] > \"F\" else None,\n            },\n        )\n    conn.commit()\n\n\n@with_sqlalchemy_conn(\"id3b\")\ndef ldm_product_log(conn: Connection | None = None) -> None:\n    \"\"\"Update these to the future.\"\"\"\n    conn.execute(\n        sql_helper(\"\"\"\n    update ldm_product_log SET\n    entered_at = now() - ('2024-12-03 19:30+00'::timestamptz - entered_at),\n    valid_at = now() - ('2024-12-03 19:30+00'::timestamptz - valid_at),\n    wmo_valid_at = now() -\n    ('2024-12-03 19:30+00'::timestamptz - wmo_valid_at)\n    where entered_at between '2024-12-03 16:00+00'\n    and '2024-12-03 20:00+00'\n\"\"\")\n    )\n    conn.commit()\n\n\n@with_sqlalchemy_conn(\"radar\")\ndef nexrad_attributes(conn: Connection | None = None) -> None:\n    \"\"\"Update these to be current.\"\"\"\n    res = conn.execute(\n        sql_helper(\"update nexrad_attributes SET valid = now()\")\n    )\n    LOG.warning(\"Updated %s nexrad_attributes to current time\", res.rowcount)\n    conn.commit()\n\n\ndef main():\n    \"\"\"Go Main.\"\"\"\n    ldm_product_log()\n    nexrad_attributes()\n    create_realtime_isuag()\n    create_iemaccess_isuag()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": ".github/copilot-instructions.md",
    "content": "# IEM Repo\n\nEvery time you choose to apply a rule(s), explicitly state the rule(s) in the\noutput. You can abbreviate the rule description to a single word or phrase.\n\n## Code Stack\n\n- PHP 8.4\n- Tabulator JavaScript library for interactive tables\n- Python 3.14\n- PostgreSQL 18\n- Bootstrap 5\n- OpenLayers for interactive maps\n\n## Code Organization and Abstractions\n\n- Before creating new utility functions, check if similar functionality exists\n  in `/htdocs/js/iemjs/` or `/src/iemjs/`.\n- When refactoring for complexity, prefer creating reusable abstractions\n  in `/htdocs/js/iemjs/` or `/src/iemjs/`.\n- Look for patterns that appear across multiple modules and extract them to\n  shared utilities.\n- When fixing ESLint complexity warnings, prioritize creating shared utilities \n  over module-specific helper functions.\n- Always search the codebase for similar patterns before creating new functions.\n- Common patterns that should be abstracted:\n  - Form validation and input handling\n  - URL parameter parsing/updating and hash migration\n  - API request handling with error management and loading states\n  - DOM element selection and manipulation beyond what's in domUtils.js\n  - Date/time formatting and parsing utilities\n  - Table/data processing and formatting\n  - Keyboard navigation and event handling patterns\n\n## Refactoring Strategy\n\n- When asked to \"address complexity\", first analyze if the complexity comes from:\n  1. **Reusable logic** → extract to shared utilities in `/src/iemjs/`\n  2. **Module-specific orchestration** → break into smaller, focused functions\n  3. **Repetitive patterns** → create abstractions that multiple modules can use\n- Before creating 3+ similar helper functions across different modules, \n  consolidate into a shared utility.\n- When creating shared utilities, design them to handle the most common use cases\n  across the codebase, not just the immediate problem.\n\n**Note**: This abstraction strategy applies only to ES modules (files using `import`/`export`). \nLegacy JavaScript files should keep complexity-reducing functions within their own modules.\n\n## Rules\n\n- It is not acceptable to rewrite a file by creating a new file and then overwriting\n  the original file with the new file.  Instead, you should edit the original file\n  directly.\n- Jquery should not be used and any instances of it should be replaced\n  with vanilla JavaScript.\n- Code comments should explain functionality, not detail why the code was\n  added.\n- JavaScript code should not be embedded in HTML files.\n- Jquery-UI should not be used and any instances of it should be replaced\n  with vanilla JavaScript.\n- Avoid usage of `this` in JavaScript code, as it can lead to confusion\n  and bugs. Use arrow functions or bind methods to the correct context instead.\n- When you suggest URLs to open for testing, you should use the domain name\n  of `iem.local` instead of `localhost`.  HTTPS is required.\n\n## ESLint Usage\n\n- **ALWAYS use `npx eslint <filepath>` for linting individual files.**\n- Use the direct ESLint command to get accurate, file-specific linting results.\n\n## Project Context\n\nThis repo does a lot of different things with weather data modification.\n\n## Code Style and Structure\n\n```text\ncgi-bin/     # One line front end references to pylib application code\nconfig/      # PHP configuration\ndata/        # Stuff used by PHP and python scripts\ndeployment/  # Stuff associated with deployment of this code\ndocs/        # centralized docs\nhtdocs/      # The apache webroot with mostly PHP stuff and python pointers\n             # to things within pylib\n├── agclimate/ # ISU Soil Moisture Network\ninclude/     # PHP include scripts\npylib/       # python library stuff used within this repo only\nscripts/     # python cron jobs that process data, these are not web accessible\nsrc/iemjs/   # Centralized `iemjs` npm ES package, used by this repo and friends.\n             # This is where new utility functions should be added.\ntests/       # Python testing code mostly for pylib and for integration tests\n```\n\n## Code Quality and Technical Debt\n\n- Avoid creating many small, single-purpose functions when a more general \n  utility would serve multiple modules.\n- When fixing the same type of complexity issue across multiple files, \n  step back and create a shared solution.\n- If you find yourself writing similar JSDoc comments across different modules,\n  that's a signal the functionality should be abstracted.\n- Consider the maintenance burden: 10 lines of shared utility code is better\n  than 50 lines of duplicated helper functions across 5 modules.\n\n## Decision Making Process\n\n- When approaching complexity refactoring:\n  1. First, semantic_search for similar patterns in other modules\n  2. Check existing utilities in `/src/iemjs/` and `/htdocs/js/iemjs/`\n  3. If pattern exists 2+ times, create shared utility\n  4. If truly module-specific, create focused helper functions\n  5. Document the decision rationale in comments\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"monthly\"\n    labels:\n      - \"Bot\"\n    groups:\n      github-actions:\n        patterns:\n          - '*'\n  - package-ecosystem: \"npm\"\n    directory: \"/\"\n    schedule:\n      interval: \"monthly\"\n    labels:\n      - \"Bot\"\n    groups:\n      npm:\n        patterns:\n          - '*'\n"
  },
  {
    "path": ".github/ms_environment.yml",
    "content": "dependencies:\n  - mapserver\n"
  },
  {
    "path": ".github/setupdata.sh",
    "content": "# Ensure we error out\nset -x -e\n# Paths are setup in setuppaths.sh\npython .github/ci_db_testdata.py\npython scripts/dbutil/sync_stations.py\npython scripts/mrms/init_daily_mrms.py --year=2024\npython scripts/mrms/init_mrms_dailyc.py\npython scripts/prism/init_daily.py --year=2024\npython scripts/iemre/init_daily.py --year=2022 --domain=conus\npython scripts/iemre/init_daily.py --year=2023 --ci\npython scripts/iemre/init_daily.py --year=2024 --domain=conus\npython scripts/iemre/init_daily.py --year=2024 --domain=europe\npython scripts/iemre/init_daily.py --year=2024 --domain=sa\npython scripts/iemre/init_hourly.py --year=2023 --ci\npython scripts/iemre/init_dailyc.py\npython scripts/iemre/init_stage4_hourly.py --year=2024 --ci\npython scripts/iemre/init_stage4_daily.py --year=2024 --ci\npython scripts/iemre/init_daily_ifc.py --year=2024 --ci\n\ncurl -o /mesonet/share/features/2022/03/220325.png \\\nhttps://mesonet.agron.iastate.edu/onsite/features/2022/03/220325.png\n\ncurl -o /mesonet/ldmdata/gis/images/4326/USCOMP/n0q_0.json \\\nhttps://mesonet.agron.iastate.edu/data/gis/images/4326/USCOMP/n0q_0.json\ncurl -o /mesonet/ldmdata/gis/images/4326/USCOMP/n0r_0.json \\\nhttps://mesonet.agron.iastate.edu/data/gis/images/4326/USCOMP/n0r_0.json\n\ncurl -o /mesonet/share/pickup/yieldfx/ames.met \\\nhttps://mesonet.agron.iastate.edu/pickup/yieldfx/ames.met\n\ncurl -o /mesonet/data/iemre/ndfd_current.nc \\\nhttps://mesonet.agron.iastate.edu/onsite/iemre/ndfd_current.nc\n\ncurl -o /mesonet/data/iemre/gfs_current.nc \\\nhttps://mesonet.agron.iastate.edu/onsite/iemre/gfs_current.nc\n\ncurl -o /opt/iem/htdocs/vtec/assets.json \\\nhttps://mesonet.agron.iastate.edu/vtec/assets.json\n\n# A corrupted RTMA file\nmkdir -p /mesonet/ARCHIVE/data/2024/01/01/model/rtma/00\necho > /mesonet/ARCHIVE/data/2024/01/01/model/rtma/00/rtma2p5_ru.t0000z.2dvaranl_ndfd.grb2\n\n# A corrupted HRRR refd file\nmkdir -p /mesonet/ARCHIVE/data/2024/01/01/model/hrrr/00\necho > /mesonet/ARCHIVE/data/2024/01/01/model/hrrr/00/hrrr.t00z.refd.grib2\n"
  },
  {
    "path": ".github/setuppaths.sh",
    "content": "set -e -x\n# Only path setups here, adding data handled in setupdata.sh\nsudo ln -s `pwd` /opt/iem\n# Kind of hacky, but that is what daryl does\n# needed by all kinds of things\n# /mesonet was setup in ci_tooling\nmkdir -p /mesonet/ldmdata/gis/images/4326/USCOMP\nmkdir -p /mesonet/share/pickup/yieldfx\nmkdir -p /mesonet/share/features/2022/03\n\nmkdir _webtmp\nsudo ln -s `pwd`/_webtmp /var/webtmp\n"
  },
  {
    "path": ".github/workflows/build.yml",
    "content": "name: IEM CI\non:\n  pull_request:\n    branches:\n      - main\n  push:\n    branches:\n      - main\n\njobs:\n  build:\n    defaults:\n      run:\n        # Ensures environment gets sourced right\n        shell: bash -l -e {0}\n    name: Python (${{ matrix.PYTHON_VERSION }}) Data (${{ matrix.WITH_TEST_DATA }}) Test Web (${{ matrix.TEST_WEB }})\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        PYTHON_VERSION: [\"3.14\"]\n        WITH_TEST_DATA: [\"test_data\", \"no_test_data\"]\n        TEST_WEB: [\"YES\", \"NO\"]\n        exclude:\n          # This combination is not all that useful\n          - PYTHON_VERSION: \"3.14\"\n            TEST_WEB: \"NO\"\n            WITH_TEST_DATA: \"no_test_data\"\n    env:\n      PYTHON_VERSION: ${{ matrix.PYTHON_VERSION }}\n      WITH_TEST_DATA: ${{ matrix.WITH_TEST_DATA }}\n      TEST_WEB: ${{ matrix.TEST_WEB }}\n    steps:\n    - uses: actions/checkout@v6\n\n    # Lots of daryl's codes use aliases defined in /etc/hosts\n    - name: Add /etc/hosts entries\n      run: |\n        cat .github/workflows/etchosts.txt | sudo tee -a /etc/hosts\n\n    # Required for all matrix jobs\n    - name: Create Docker Network\n      run: docker network create iem_network\n\n    # Required for all matrix jobs\n    - name: Run IEM Database Container label:${{ env.WITH_TEST_DATA }}\n      run: |\n        docker run -d --name iem_database --network iem_network -p 5432:5432 ghcr.io/akrherz/iem_database:${{ env.WITH_TEST_DATA }}\n        n=0\n        until docker exec iem_database pg_isready -h localhost; do\n          n=$((n+1))\n          if [ $n -ge 10 ]; then\n            echo \"iem_database did not become ready in time\"\n            docker logs iem_database\n            exit 1\n          fi\n          sleep 6\n        done\n\n    # Required for all matrix jobs\n    - name: Run IEM Web Services Container\n      run: |\n        docker run -d --name iem_web_services --network iem_network -p 8080:8000 -e IEMWS_DBHOST=iem_database -e IEMWS_DBUSER=mesonet ghcr.io/akrherz/iem-web-services:latest\n        n=0\n        # Test something that does a db query\n        until curl -sf http://localhost:8080/networks.geojson; do\n          n=$((n+1))\n          if [ $n -ge 10 ]; then\n            echo \"iem-web-services did not become ready in time\"\n            docker logs iem_web_services\n            exit 1\n          fi\n          sleep 1\n        done\n\n    # Required for all matrix jobs\n    - name: Run Memcached container\n      run: |\n        docker run -d --name iem_memcached -p 11211:11211 memcached:1.6.9\n\n    - uses: akrherz/ci_tooling/actions/iemwebfarm@main\n      with:\n        environment-file: environment.yml\n        python-version: ${{ matrix.PYTHON_VERSION }}\n        environment-name: prod\n\n    # Copy repo's default settings into the real position\n    - name: Copy PHP Setting Defaults\n      run: |\n        cp config/settings.inc.php.in config/settings.inc.php\n\n    # All jobs need to have directories laid out\n    - name: Setup Directory Paths\n      run: sh .github/setuppaths.sh\n\n    # Only one job needs to load the test data\n    - name: Setup IEM Data\n      if: ${{ matrix.WITH_TEST_DATA == 'test_data' }}\n      run: sh .github/setupdata.sh\n\n    - name: IEM TileCache Backend\n      if: ${{ matrix.TEST_WEB == 'YES' }}\n      run: |\n        nohup bash deployment/start_tc_wsgi.sh > /tmp/iem-tilecache.log 2>&1 &\n        echo $! > /tmp/iem-tilecache.pid\n\n        n=0\n        until curl -sS -o /dev/null http://127.0.0.1:9081/; do\n          n=$((n+1))\n          if [ $n -ge 30 ]; then\n            echo \"iem-tilecache did not become ready in time\"\n            cat /tmp/iem-tilecache.log\n            exit 1\n          fi\n          sleep 1\n        done\n\n\n    - name: Configure Webfarm Server\n      if: ${{ matrix.TEST_WEB == 'YES' }}\n      run: |\n        echo '<VirtualHost *:80>' | sudo tee /etc/apache2/sites-enabled/iem.conf > /dev/null\n        cat config/mesonet.inc | sudo tee -a /etc/apache2/sites-enabled/iem.conf > /dev/null\n        echo '</VirtualHost>' | sudo tee -a /etc/apache2/sites-enabled/iem.conf > /dev/null\n\n        # ci_tooling places a mod_wsgi conf with startup disabled, we enable it\n        sudo sed -i 's/# WSGIImportScript/WSGIImportScript/' /etc/apache2/sites-enabled/mod_wsgi.conf\n\n        # restart apache\n        sudo service apache2 restart\n        sudo systemctl status apache2.service -l\n\n    - name: Run IEM Production checks\n      if: ${{ matrix.TEST_WEB == 'YES' }}\n      run: |\n        git clone --depth 1 https://github.com/akrherz/iem-production-checks.git .ipc\n        SERVICE=http://iem.local pytest -n 4 .ipc/tests/test_*.py\n\n    - name: Run mod_wsgi smoke test\n      if: ${{ matrix.TEST_WEB == 'YES' }}\n      run: pytest -n 4 tests/test_mod_wsgi.py\n\n    - name: Test PHP webscripts\n      if: ${{ matrix.TEST_WEB == 'YES' }}\n      run: pytest -n 4 tests/test_php.py\n\n    # - name: Setup upterm session\n    #  if: ${{ matrix.TEST_WEB == 'NO' && matrix.WITH_TEST_DATA == 'test_data' }}\n    #  uses: owenthereal/action-upterm@v1\n    #  with:\n    #    limit-access-to-actor: true\n\n    - name: Run IEMWeb Python Check\n      if: ${{ matrix.TEST_WEB == 'NO' && matrix.WITH_TEST_DATA == 'test_data' }}\n      run: |\n        export PYTHONPATH=/opt/iem/pylib\n        python -m pytest --mpl --cov=iemweb --durations=10 -n 4 -W error::FutureWarning tests/iemweb/\n        python -m coverage xml\n\n    - name: Upload to Codecov\n      if: ${{ matrix.TEST_WEB == 'NO' && matrix.WITH_TEST_DATA == 'test_data' }}\n      uses: codecov/codecov-action@v6\n      with:\n        files: coverage.xml\n        fail_ci_if_error: true\n\n    - name: View Apache Logs\n      if: ${{ failure() && matrix.TEST_WEB == 'YES' }}\n      run: |\n        sudo systemctl status apache2 -l\n        sudo cat /var/log/apache2/error.log\n\n    - name: View TileCache Logs\n      if: ${{ failure() && matrix.TEST_WEB == 'YES' }}\n      run: |\n        if [ -f /tmp/iem-tilecache.pid ]; then\n          ps -fp \"$(cat /tmp/iem-tilecache.pid)\" || true\n        fi\n        if [ -f /tmp/iem-tilecache.log ]; then\n          cat /tmp/iem-tilecache.log\n        fi\n\n    - name: View PHP-FPM Logs\n      if: ${{ failure() && matrix.TEST_WEB == 'YES' }}\n      run: |\n        sudo cat /var/log/php*-fpm.log\n"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "content": "name: \"CodeQL\"\n\non:\n  push:\n    branches: [ \"main\" ]\n  pull_request:\n    branches: [ \"main\" ]\n  schedule:\n    - cron: \"22 12 * * 1\"\n\njobs:\n  analyze:\n    name: Analyze (${{ matrix.language }})\n    runs-on: ubuntu-latest\n    timeout-minutes: 360\n    permissions:\n      actions: read\n      contents: read\n      security-events: write\n\n    strategy:\n      fail-fast: false\n      matrix:\n        language: [ javascript, python ]\n\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n\n      - name: Initialize CodeQL\n        uses: github/codeql-action/init@v4\n        with:\n          languages: ${{ matrix.language }}\n          queries: +security-and-quality\n\n      - name: Autobuild\n        uses: github/codeql-action/autobuild@v4\n\n      - name: Perform CodeQL Analysis\n        uses: github/codeql-action/analyze@v4\n        with:\n          category: \"/language:${{ matrix.language }}\"\n          upload: true\n"
  },
  {
    "path": ".github/workflows/etchosts.txt",
    "content": "127.0.0.1 iem.local\n127.0.0.1 iemdb.local\n127.0.0.1 iemdb-hads.local\n127.0.0.1 iemdb-mos.local\n127.0.0.1 iemdb-idep.local\n127.0.0.1 iemdb-dep_china.local\n127.0.0.1 iemdb-dep_europe.local\n127.0.0.1 iemdb-dep_sa.local\n127.0.0.1 iemdb-iembot.local\n127.0.0.1 iemdb-iemre.local\n127.0.0.1 iemdb-iemre_china.local\n127.0.0.1 iemdb-iemre_europe.local\n127.0.0.1 iemdb-iemre_sa.local\n127.0.0.1 iemdb-postgis.local\n127.0.0.1 iemdb-mesosite.local\n127.0.0.1 iemdb-afos.local\n127.0.0.1 iemdb-asos.local\n127.0.0.1 iemdb-hml.local\n127.0.0.1 iemdb-id3b.local\n127.0.0.1 iemdb-nldn.local\n127.0.0.1 iemdb-snet.local\n127.0.0.1 iemdb-mos.local\n127.0.0.1 iemdb-raob.local\n127.0.0.1 iemdb-rwis.local\n127.0.0.1 iemdb-squaw.local\n127.0.0.1 iemdb-awos.local\n127.0.0.1 iemdb-iem.local\n127.0.0.1 iemdb-other.local\n127.0.0.1 iemdb-radar.local\n127.0.0.1 iemdb-scan.local\n127.0.0.1 iemdb-wepp.local\n127.0.0.1 iemdb-coop.local\n127.0.0.1 iemdb-isuag.local\n127.0.0.1 iemdb-portfolio.local\n127.0.0.1 iemdb-smos.local\n127.0.0.1 iemdb-talltowers.local\n127.0.0.1 iemdb-td.local\n127.0.0.1 iemdb-uscrn.local\n127.0.0.1 iemdb-sustainablecorn.local\n127.0.0.1 iemdb-asos1min.local\n127.0.0.1 iem-memcached3\n127.0.0.1 iem-memcached\n127.0.0.1 iem-web-services\n127.0.0.1 iem-web-services.agron.iastate.edu\n"
  },
  {
    "path": ".github/workflows/mapserver.yml",
    "content": "name: Test Mapserver Files\non:\n  pull_request:\n    branches:\n      - main\n  push:\n    branches:\n      - main\njobs:\n  build-linux:\n    name: Test Mapserver Files\n    defaults:\n      run:\n        # Ensures environment gets sourced right\n        shell: bash -l -e {0}\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v6\n\n    - name: Add /etc/hosts entries\n      run: |\n        cat .github/workflows/etchosts.txt | sudo tee -a /etc/hosts\n\n    # setup conda-forge with micromamba\n    - name: Setup Python\n      uses: mamba-org/setup-micromamba@v3\n      with:\n        environment-file: .github/ms_environment.yml\n        condarc: |\n          channels:\n            - conda-forge\n        create-args: >-\n          python=3.14\n        environment-name: prod\n        cache-environment: true\n\n    - name: Run IEM Database container\n      run: |\n        docker run -d --name iem_database -p 5432:5432 ghcr.io/akrherz/iem_database:test_data\n        until docker exec iem_database pg_isready -h localhost; do\n          sleep 6\n        done\n\n    - name: Setup CI from ci-tooling\n      run: |\n        set -e\n        sudo ln -s `pwd` /opt/iem\n        sudo mkdir -p /mesonet/ldmdata/\n        wget -q http://mesonet.agron.iastate.edu/pickup/ci_msinc.tgz\n        sudo tar -C / -xzf ci_msinc.tgz\n\n    - name: Run map2img\n      run: |\n        set -e\n        bash tests/run_mapserver.sh\n"
  },
  {
    "path": ".github/workflows/publish-iemjs.yml",
    "content": "name: Publish iemjs to npm\n\non:\n  push:\n    tags:\n      - 'iemjs-v*'  # Triggers on tags like iemjs-v1.0.0, iemjs-v1.2.3, etc.\n\njobs:\n  publish:\n    runs-on: ubuntu-latest\n    \n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v6\n        \n      - name: Setup Node.js\n        uses: actions/setup-node@v6\n        with:\n          node-version: '18'\n          registry-url: 'https://registry.npmjs.org'\n          \n      - name: Extract version from tag\n        id: extract_version\n        run: |\n          # Extract version from tag (iemjs-v1.0.0 -> 1.0.0)\n          VERSION=${GITHUB_REF#refs/tags/iemjs-v}\n          echo \"version=$VERSION\" >> $GITHUB_OUTPUT\n          echo \"Publishing version: $VERSION\"\n          \n      - name: Validate package\n        run: |\n          cd src/iemjs\n          npm pack --dry-run\n          \n      - name: Run basic syntax check\n        run: |\n          cd src/iemjs\n          node -c src/domUtils.js\n          node -c src/iemdata.js\n          node -c src/index.js\n          \n      - name: Publish to npm\n        run: |\n          cd src/iemjs\n          npm publish --access public\n        env:\n          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}\n          \n      - name: Extract changelog for this version\n        id: changelog\n        run: |\n          cd src/iemjs\n          if [ -f \"CHANGELOG.md\" ]; then\n            # Extract changelog section for this version\n            VERSION=${{ steps.extract_version.outputs.version }}\n            CHANGELOG_SECTION=$(sed -n \"/## \\[$VERSION\\]/,/## \\[/p\" CHANGELOG.md | head -n -1)\n            if [ -z \"$CHANGELOG_SECTION\" ]; then\n              CHANGELOG_SECTION=\"See CHANGELOG.md for details.\"\n            fi\n            # Save to output, escaping newlines\n            echo \"content<<EOF\" >> $GITHUB_OUTPUT\n            echo \"$CHANGELOG_SECTION\" >> $GITHUB_OUTPUT\n            echo \"EOF\" >> $GITHUB_OUTPUT\n          else\n            echo \"content=No changelog available.\" >> $GITHUB_OUTPUT\n          fi\n\n      - name: Create GitHub Release\n        uses: actions/create-release@v1\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        with:\n          tag_name: ${{ github.ref }}\n          release_name: iemjs v${{ steps.extract_version.outputs.version }}\n          body: |\n            ## iemjs v${{ steps.extract_version.outputs.version }}\n            \n            Published to npm: https://www.npmjs.com/package/iemjs\n            \n            ### Changes\n            ${{ steps.changelog.outputs.content }}\n            \n            ### Installation\n            ```bash\n            npm install iemjs@${{ steps.extract_version.outputs.version }}\n            ```\n          draft: false\n          prerelease: false\n"
  },
  {
    "path": ".github/workflows/test-iemjs.yml",
    "content": "name: Test iemjs package\n\non:\n  push:\n    branches: [ main, master ]\n    paths:\n      - 'src/iemjs/**'\n      - '.github/workflows/test-iemjs.yml'\n  pull_request:\n    branches: [ main, master ]\n    paths:\n      - 'src/iemjs/**'\n      - '.github/workflows/test-iemjs.yml'\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n    \n    strategy:\n      matrix:\n        node-version: [16, 18, 20]\n        \n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v6\n        \n      - name: Setup Node.js ${{ matrix.node-version }}\n        uses: actions/setup-node@v6\n        with:\n          node-version: ${{ matrix.node-version }}\n          \n      - name: Run iemjs tests\n        run: |\n          cd src/iemjs\n          npm test\n          \n      - name: Test npm pack (dry run)\n        run: |\n          cd src/iemjs\n          npm pack --dry-run\n          echo \"✅ npm pack simulation successful\"\n          \n      - name: Run ESLint on iemjs files\n        run: |\n          # Check ESLint against our iemjs files\n          npx eslint src/iemjs/src/*.js --format=compact || echo \"⚠️  ESLint warnings found (not failing build)\"\n          \n  # Test on different operating systems\n  cross-platform:\n    runs-on: ${{ matrix.os }}\n    strategy:\n      matrix:\n        os: [ubuntu-latest, windows-latest, macos-latest]\n        node-version: [18]\n        \n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v6\n        \n      - name: Setup Node.js\n        uses: actions/setup-node@v6\n        with:\n          node-version: ${{ matrix.node-version }}\n          \n      - name: Test basic functionality\n        run: |\n          cd src/iemjs\n          npm run test:syntax\n        shell: bash\n"
  },
  {
    "path": ".gitignore",
    "content": "/.settings\n/.buildpath\n/.project\n/.pydevproject\n**/fe.py\n/.vscode\n**/gemglb.nts\n**/last.nts\n/config/settings.inc.php\nnode_modules\n**/.coverage\ncoverage.xml\n# Stuff built by iemvtec\nhtdocs/vtec/assets*\nhtdocs/vtec/legends\nhtdocs/vtec/_index_content.html\n"
  },
  {
    "path": ".pre-commit-config.yaml",
    "content": "ci:\n  autoupdate_schedule: quarterly\nrepos:\n  - repo: https://github.com/pre-commit/mirrors-eslint\n    rev: 'v10.3.0'\n    hooks:\n      - id: eslint\n        additional_dependencies:\n          - \"eslint\"\n          - \"@eslint/js\"\n          - \"globals\"\n        files: \\.js?$\n        types: [file]\n        args:\n        - --fix\n        language_version: 'system'  # Use system Node.js which should support ES modules\n\n  - repo: https://github.com/astral-sh/ruff-pre-commit\n    rev: \"v0.15.13\"\n    hooks:\n      - id: ruff-check\n        args: [--fix, --exit-non-zero-on-fix]\n      - id: ruff-format\n\n"
  },
  {
    "path": ".prettierrc",
    "content": "{\n  \"semi\": true,\n  \"trailingComma\": \"es5\",\n  \"singleQuote\": true,\n  \"printWidth\": 100,\n  \"tabWidth\": 4,\n  \"useTabs\": false,\n  \"bracketSpacing\": true,\n  \"arrowParens\": \"avoid\",\n  \"endOfLine\": \"lf\",\n  \"overrides\": [\n    {\n      \"files\": \"*.php\",\n      \"options\": {\n        \"parser\": \"php\",\n        \"printWidth\": 120\n      }\n    },\n    {\n      \"files\": \"*.html\",\n      \"options\": {\n        \"printWidth\": 120,\n        \"htmlWhitespaceSensitivity\": \"css\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "LICENSE",
    "content": "Copyright (c) 2005 Iowa State University\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# Iowa Environmental Mesonet\n\n    If using this code causes your server to have kittens, it is your own fault.\n\nThis monolith drives much of the ingest, processing, product generation, and\nweb presence of the [IEM](https://mesonet.agron.iastate.edu).  Hopefully it can\nbe found useful for others to at least look at to see how some of the magic happens.\n\nLimited integration testing is done on Github Actions: [![Build Status](https://github.com/akrherz/iem/workflows/IEM%20CI/badge.svg)](https://github.com/akrherz/iem)\n[![DeepSource](https://app.deepsource.com/gh/akrherz/iem.svg/?label=active+issues&show_trend=true&token=WvZunVBligt7HgkO2JGg5uMe)](https://app.deepsource.com/gh/akrherz/iem/)\n[![codecov](https://codecov.io/gh/akrherz/iem/graph/badge.svg?token=zKXnLZdxIk)](https://codecov.io/gh/akrherz/iem)\n[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/akrherz/iem/main.svg)](https://results.pre-commit.ci/latest/github/akrherz/iem/main)\n\nSee [@akrherz Github Profile](https://github.com/akrherz) for an overview of\nrepositories found here and how the fit together.\n\n## Requirements\n\n    - Python 3.10+ (CI tests with 3.14)\n    - PHP 8\n\n## Deployment Notes\n\n- Vendor static assets used by web pages are documented in\n    [docs/deployment/vendor-static-assets.md](docs/deployment/vendor-static-assets.md).\n"
  },
  {
    "path": "cgi-bin/afos/retrieve.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/afos/retrieve.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py?help\"\"\"\n\nfrom iemweb.afos.retrieve import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/climate/orc.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/climate/orc.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/climate/orc.py?help\"\"\"\n\nfrom iemweb.climate.orc import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/geocoder.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/geocoder.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/geocoder.py?help\"\"\"\n\nfrom iemweb.geocoder import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/index.php",
    "content": "<?php\nHeader(\"Location: /api\");\n"
  },
  {
    "path": "cgi-bin/mywindrose.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/mywindrose.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/mywindrose.py?help\"\"\"\n\nfrom iemweb.mywindrose import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/onsite/birthday/getweather.py",
    "content": "\"\"\"Implementation at pylib/iemweb/getweather.py\"\"\"\n\nfrom iemweb.getweather import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/precip/catAZOS.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/precip/catAZOS.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/precip/catAZOS.py?help\"\"\"\n\nfrom iemweb.precip.catAZOS import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/precip/catSNET.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/precip/catSNET.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/precip/catSNET.py?help\"\"\"\n\nfrom iemweb.precip.catSNET import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/asos.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/asos.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/asos.py?help\"\"\"\n\nfrom iemweb.request.asos import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/asos1min.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/asos1min.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/asos1min.py?help\"\"\"\n\nfrom iemweb.request.asos1min import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/coop.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/coop.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/coop.py?help\"\"\"\n\nfrom iemweb.request.coop import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/coopobs.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/coopobs.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/coopobs.py?help\"\"\"\n\nfrom iemweb.request.coopobs import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/daily.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/daily.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/daily.py?help\"\"\"\n\nfrom iemweb.request.daily import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/feel.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/feel.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/feel.py?help\"\"\"\n\nfrom iemweb.request.feel import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/gis/awc_gairmets.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/gis/awc_gairmets.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/gis/awc_gairmets.py?help\"\"\"\n\nfrom iemweb.request.gis.awc_gairmets import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/gis/cwas.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/gis/cwas.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/gis/cwas.py?help\"\"\"\n\nfrom iemweb.request.gis.cwas import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/gis/lsr.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/gis/lsr.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/gis/lsr.py?help\"\"\"\n\nfrom iemweb.request.gis.lsr import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/gis/misc.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/gis/misc.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/gis/misc.py?help\"\"\"\n\nfrom iemweb.request.gis.misc import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/gis/nexrad_storm_attrs.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/gis/nexrad_storm_attrs.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/gis/nexrad_storm_attrs.py?help\"\"\"\n\nfrom iemweb.request.gis.nexrad_storm_attrs import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/gis/pireps.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/gis/pireps.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/gis/pireps.py?help\"\"\"\n\nfrom iemweb.request.gis.pireps import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/gis/sigmets.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/gis/sigmets.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/gis/sigmets.py?help\"\"\"\n\nfrom iemweb.request.gis.sigmets import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/gis/spc_mcd.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/gis/spc_mcd.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/gis/spc_mcd.py?help\"\"\"\n\nfrom iemweb.request.gis.spc_mcd import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/gis/spc_outlooks.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/gis/spc_outlooks.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/gis/spc_outlooks.py?help\"\"\"\n\nfrom iemweb.request.gis.spc_outlooks import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/gis/spc_watch.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/gis/spc_watch.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/gis/spc_watch.py?help\"\"\"\n\nfrom iemweb.request.gis.spc_watch import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/gis/sps.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/gis/sps.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/gis/sps.py?help\"\"\"\n\nfrom iemweb.request.gis.sps import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/gis/watch_by_county.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/gis/watch_by_county.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/gis/watch_by_county.py?help\"\"\"\n\nfrom iemweb.request.gis.watch_by_county import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/gis/watchwarn.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/gis/watchwarn.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/gis/watchwarn.py?help\"\"\"\n\nfrom iemweb.request.gis.watchwarn import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/gis/wpc_mpd.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/gis/wpc_mpd.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/gis/wpc_mpd.py?help\"\"\"\n\nfrom iemweb.request.gis.wpc_mpd import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/grx_rings.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/grx_rings.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/grx_rings.py?help\"\"\"\n\nfrom iemweb.request.grx_rings import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/hads.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/hads.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/hads.py?help\"\"\"\n\nfrom iemweb.request.hads import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/hml.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/hml.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/hml.py?help\"\"\"\n\nfrom iemweb.request.hml import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/hourlyprecip.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/hourlyprecip.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/hourlyprecip.py?help\"\"\"\n\nfrom iemweb.request.hourlyprecip import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/index.php",
    "content": "<?php\n\nheader(\"Location: /api/\");\n"
  },
  {
    "path": "cgi-bin/request/isusm.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/isusm.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/isusm.py?help\"\"\"\n\nfrom iemweb.request.isusm import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/metars.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/metars.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/metars.py?help\"\"\"\n\nfrom iemweb.request.metars import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/mos.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/mos.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/mos.py?help\"\"\"\n\nfrom iemweb.request.mos import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/nass_iowa.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/nass_iowa.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/nass_iowa.py?help\"\"\"\n\nfrom iemweb.request.nass_iowa import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/nlaeflux.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/nlaeflux.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/nlaeflux.py?help\"\"\"\n\nfrom iemweb.request.nlaeflux import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/normals.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/normals.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/normals.py?help\"\"\"\n\nfrom iemweb.request.normals import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/other.py",
    "content": "\"\"\"implemented in /pylib/iemweb/request/other.py\"\"\"\n\nfrom iemweb.request.other import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/purpleair.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/purpleair.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/purpleair.py?help\"\"\"\n\nfrom iemweb.request.purpleair import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/raob.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/raob.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/raob.py?help\"\"\"\n\nfrom iemweb.request.raob import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/raster2netcdf.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/raster2netcdf.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/raster2netcdf.py?help\"\"\"\n\nfrom iemweb.request.raster2netcdf import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/rwis.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/rwis.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/rwis.py?help\"\"\"\n\nfrom iemweb.request.rwis import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/scan.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/scan.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/scan.py?help\"\"\"\n\nfrom iemweb.request.scan import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/scp.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/scp.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/scp.py?help\"\"\"\n\nfrom iemweb.request.scp import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/smos.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/smos.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/smos.py?help\"\"\"\n\nfrom iemweb.request.smos import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/ss.py",
    "content": "\"\"\"implemented in /pylib/iemweb/request/ss.py\"\"\"\n\nfrom iemweb.request.ss import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/taf.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/taf.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/taf.py?help\"\"\"\n\nfrom iemweb.request.taf import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/talltowers.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/talltowers.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/talltowers.py?help\"\"\"\n\nfrom iemweb.request.talltowers import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/tempwind_aloft.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/tempwind_aloft.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/tempwind_aloft.py?help\"\"\"\n\nfrom iemweb.request.tempwind_aloft import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/uscrn.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/uscrn.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/uscrn.py?help\"\"\"\n\nfrom iemweb.request.uscrn import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/request/wmo_bufr_srf.py",
    "content": "\"\"\"Implementation at https://github.com/akrherz/iem/blob/main/pylib/iemweb/request/wmo_bufr_srf.py\nUser documentation available at https://mesonet.agron.iastate.edu/cgi-bin/request/wmo_bufr_srf.py?help\"\"\"\n\nfrom iemweb.request.wmo_bufr_srf import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "cgi-bin/wms/goes/alaska_ir.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/goes/alaska_ir.map\nexport MS_MAPFILE\n\nmapserv"
  },
  {
    "path": "cgi-bin/wms/goes/alaska_vis.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/goes/alaska_vis.map\nexport MS_MAPFILE\n\nmapserv"
  },
  {
    "path": "cgi-bin/wms/goes/alaska_wv.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/goes/alaska_wv.map\nexport MS_MAPFILE\n\nmapserv"
  },
  {
    "path": "cgi-bin/wms/goes/conus_ir.cgi",
    "content": "#!/bin/sh\n#echo -e \"Content-type: text/plain\\n\\n\"\n#echo -e \"\\n\"\n#exit 0\n\nMS_MAPFILE=/opt/iem/data/wms/goes/conus_ir.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/goes/conus_vis.cgi",
    "content": "#!/bin/sh\n#echo -e \"Content-type: text/plain\\n\\n\"\n#echo -e \"\\n\"\n#exit 0\n\nMS_MAPFILE=/opt/iem/data/wms/goes/conus_vis.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/goes/conus_wv.cgi",
    "content": "#!/bin/sh\n#echo -e \"Content-type: text/plain\\n\\n\"\n#echo -e \"\\n\"\n#exit 0\n\nMS_MAPFILE=/opt/iem/data/wms/goes/conus_wv.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/goes/east_ir.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/goes/east_ir.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/goes/east_vis.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/goes/east_vis.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/goes/east_wv.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/goes/east_wv.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/goes/goes.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/goes/goes.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/goes/hawaii_ir.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/goes/hawaii_ir.map\nexport MS_MAPFILE\n\nmapserv"
  },
  {
    "path": "cgi-bin/wms/goes/hawaii_vis.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/goes/hawaii_vis.map\nexport MS_MAPFILE\n\nmapserv"
  },
  {
    "path": "cgi-bin/wms/goes/hawaii_wv.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/goes/hawaii_wv.map\nexport MS_MAPFILE\n\nmapserv"
  },
  {
    "path": "cgi-bin/wms/goes/west_ir.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/goes/west_ir.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/goes/west_vis.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/goes/west_vis.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/goes/west_wv.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/goes/west_wv.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/goes_east.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/goes_east.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/goes_west.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/goes_west.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/hrrr/refd.cgi",
    "content": "#!/bin/sh\n#echo -e \"Content-type: text/plain\\n\\n\"\n#echo -e \"\\n\"\n#exit 0\n\nMS_MAPFILE=/opt/iem/data/wms/model/hrrr_refd.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/hrrr/refp.cgi",
    "content": "#!/bin/sh\n#echo -e \"Content-type: text/plain\\n\\n\"\n#echo -e \"\\n\"\n#exit 0\n\nMS_MAPFILE=/opt/iem/data/wms/model/hrrr_refp.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/idep.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/idep.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/index.php",
    "content": "<?php\nHeader(\"Location: /ogc\");\n"
  },
  {
    "path": "cgi-bin/wms/iowa/rainfall.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/iowa/rainfall.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/iowa/roadcond.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/iowa/roadcond.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/nexrad/daa.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/nexrad/daa.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/nexrad/dta.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/nexrad/dta.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/nexrad/eet.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/nexrad/eet.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/nexrad/n0q-t.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/nexrad/n0q-t.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/nexrad/n0r-t.cgi",
    "content": "#!/bin/sh\n#echo -e \"Content-type: text/plain\\n\\n\"\n#echo -e \"\\n\"\n#exit 0\n\nMS_MAPFILE=/opt/iem/data/wms/nexrad/n0r-t.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/nexrad/n1p.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/nexrad/daa.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/nexrad/net.cgi",
    "content": "#!/bin/sh\n#echo -e \"Content-type: text/plain\\n\\n\"\n#echo -e \"\\n\"\n#exit 0\n\nMS_MAPFILE=/opt/iem/data/wms/nexrad/net.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/nexrad/ntp.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/nexrad/dta.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/nexrad/ridge.cgi",
    "content": "#!/bin/sh\n#echo -e \"Content-type: text/plain\\n\\n\"\n#echo -e \"\\n\"\n#exit 0\n\nMS_MAPFILE=/opt/iem/data/wms/nexrad/ridge.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/q2.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/q2.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/us/counties.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/political.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/us/mrms.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/us/mrms.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/us/mrms_nn.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/us/mrms_nn.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/us/obs.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/us/obs.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/us/roadtemps.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/us/roadtemps.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "cgi-bin/wms/us/states.cgi",
    "content": "#!/bin/sh\n\nMS_MAPFILE=/opt/iem/data/wms/political.map\nexport MS_MAPFILE\n\nmapserv\n"
  },
  {
    "path": "config/00iem-ssl.conf",
    "content": "<VirtualHost *:443>\n  # Use a daily deadicated log file, this avoids server reloads every day\n  # which are not much fun when servicing a 1,000 req/sec\n  CustomLog \"|/usr/sbin/rotatelogs -l ${IEMWEBFARM_LOGROOT}/iemssl-%Y%m%d 86400\" combined\n\n  SSLEngine on\n  # using ISU Certs due to cross-signing ugliness with LE and ancient kiosks\n  # https://mesonet.agron.iastate.edu/onsite/news.phtml?id=1423\n  # SSLCertificateChainFile was removed in Apache 2.4.8\n  # Termination happening at the F5, so the cert here is simple\n  # Note that I manually reorder the chain to put the ISU cert first\n  SSLCertificateFile /etc/pki/tls/iem.cert_and_chain\n  SSLCertificateKeyFile /etc/pki/tls/iem.key\n\n  Include conf.d/mesonet.inc\n\n</VirtualHost>\n"
  },
  {
    "path": "config/00iem.conf",
    "content": "<VirtualHost *:80>\n  # Use a daily deadicated log file, this avoids server reloads every day\n  # which are not much fun when servicing a 1,000 req/sec\n  CustomLog \"|/usr/sbin/rotatelogs -l ${IEMWEBFARM_LOGROOT}/iem-%Y%m%d 86400\" combined\n\n  Include conf.d/mesonet.inc\n\n</VirtualHost>\n"
  },
  {
    "path": "config/backend.conf",
    "content": "# It turns out that backending everything with one mapserv.fcgi instance\n# was not ideal as having one slow node would quickly back everything up\n# as other nodes could then not reach this backend.  So instead, lets keep\n# things isolated and make the nodes backend themselves\n<VirtualHost *:80>\n  ServerName iem-backend.local\n  DocumentRoot /opt/iem/htdocs\n  # Don't log any accesses\n  CustomLog /dev/null common\n\n  # Point to system-installed mapserv binary (from conda env)\n  ScriptAlias /cgi-bin/mapserv/mapserv.fcgi ${IEMWEBFARM_MAPSERV}\n  ScriptAlias /cgi-bin/mapserv/mapserv ${IEMWEBFARM_MAPSERV}\n  <Location \"/cgi-bin/mapserv\">\n    SetHandler fcgid-script\n    Options +ExecCGI\n  </Location>\n\n  # Only need cgi-bin, note we have AllowOverride None, which saves a bit\n  # in performance as apache does not need to look for .htaccess with each\n  # request\n  ScriptAlias /cgi-bin/ \"/opt/iem/cgi-bin/\"\n  <Directory \"/opt/iem/cgi-bin\">\n    AllowOverride None\n    Order allow,deny\n    Allow from all\n  </Directory>\n\n</VirtualHost>\n"
  },
  {
    "path": "config/iem-archive.conf",
    "content": "# backend for /archive/data requests from webfarm\n<VirtualHost *:80>\n  ServerName iem-archive.agron.iastate.edu\n  ServerAlias iem-archive.local\n  DocumentRoot /var/www/html\n  # Don't log any accesses\n  CustomLog /dev/null common\n\n  Alias /archive/data /mesonet/ARCHIVE/data\n  <Directory \"/mesonet/ARCHIVE/data\">\n    Options Indexes FollowSymLinks\n    IndexOptions NameWidth=*\n    AllowOverride None\n    Require all granted\n  </Directory>\n\n</VirtualHost>"
  },
  {
    "path": "config/mesonet-longterm-vhost.conf",
    "content": "# apache vhost file for mesonet-longterm.agron.iastate.edu\n# This now resides on anticyclone\n\n<VirtualHost 129.186.185.7:80>\n  ServerName mesonet-longterm.agron.iastate.edu\n  ServerAlias mesonet-longterm.local\n\n  Alias \"/archive/nexrad\" \"/mnt/mesonet2/longterm/nexrad3_iowa\"  \n  <Directory \"/mnt/mesonet2/longterm/nexrad3_iowa\">\n    # Need FollowSymLinks for mod_rewrite to work!\n    Options Indexes FollowSymLinks \n    Order allow,deny\n    Allow from all\n  </Directory>\n  \n  Alias \"/archive/gempak\" \"/mnt/mesonet2/longterm/gempak\"  \n  <Directory \"/mnt/mesonet2/longterm/gempak\">\n    # Need FollowSymLinks for mod_rewrite to work!\n    Options Indexes\n    Order allow,deny\n    Allow from all\n  </Directory>\n  \n  Alias \"/archive/raw\" \"/mnt/mesonet2/longterm/raw\"  \n  <Directory \"/mnt/mesonet2/longterm/raw\">\n    # Need FollowSymLinks for mod_rewrite to work!\n    Options Indexes\n    Order allow,deny\n    Allow from all\n  </Directory>\n  \n</VirtualHost>"
  },
  {
    "path": "config/mesonet.inc",
    "content": "# Apache vhost configuration for IEM\n\n# mod_wsgi is configured from https://github.com/akrherz/iemwebfarm\n# DirectoryIndex index.py\n# WSGIDaemonProcess iemwsgi_ap processes=24 threads=1 display-name=%{GROUP} maximum-requests=100\n\nInclude /opt/iemwebfarm/config/vhost_common.conf\n\nServerName mesonet.agron.iastate.edu\nServerAlias www.mesonet.agron.iastate.edu\nServerAlias mesonet1.agron.iastate.edu\nServerAlias mesonet2.agron.iastate.edu\nServerAlias mesonet3.agron.iastate.edu\nServerAlias iem.local\nServerAdmin akrherz@iastate.edu\nDocumentRoot /opt/iem/htdocs\n\n# http://enable-cors.org/server_apache.html\nHeader set Access-Control-Allow-Origin \"*\"\n\n# RewriteEngine is not enabled for vhosts by default\nRewriteEngine On\n# Useful for debugging\n# LogLevel alert rewrite:trace3\n\nRedirect permanent /archive/nexrad https://mesonet-longterm.agron.iastate.edu/archive/nexrad\nRedirect permanent /archive/gempak https://mesonet-longterm.agron.iastate.edu/archive/gempak\nRedirect permanent /archive/raw https://mesonet-longterm.agron.iastate.edu/archive/raw\nRedirect permanent /data/nexrd2/raw https://nomads.ncep.noaa.gov/pub/data/nccf/radar/nexrad_level2\n\n<Directory \"/opt/iem/htdocs\">\n    # Need FollowSymLinks for mod_rewrite to work!\n    Options Indexes FollowSymLinks\n    AllowOverride None\n    Require all granted\n\n    # Default handler for python scripts\n    WSGIProcessGroup iemwsgi_ap\n    # Allow wsgi scripts to emit 404s that can come back to the handler.\n    # FIXME this causes all error handling to come back, which is a problem\n    # https://github.com/GrahamDumpleton/mod_wsgi/issues/825\n    # WSGIErrorOverride On\n    AddHandler wsgi-script .py\n    Options +ExecCGI\n</Directory>\n\n<Directory \"/mesonet/ARCHIVE\">\n    Options Indexes FollowSymLinks\n    AllowOverride None\n    Require all granted\n</Directory>\n\n<Directory \"/mesonet/data\">\n    Options Indexes FollowSymLinks\n    AllowOverride None\n    Require all granted\n</Directory>\n\n<Directory \"/mesonet/share\">\n    Options Indexes FollowSymLinks\n    AllowOverride None\n    Require all granted\n</Directory>\n\n# Point to system-installed mapserv binary (from conda env)\nScriptAlias /cgi-bin/mapserv/mapserv.fcgi ${IEMWEBFARM_MAPSERV}\nScriptAlias /cgi-bin/mapserv/mapserv ${IEMWEBFARM_MAPSERV}\n<Location \"/cgi-bin/mapserv\">\n    SetHandler fcgid-script\n    Options +ExecCGI\n</Location>\n\nAlias /cgi-bin/ \"/opt/iem/cgi-bin/\"\n<Directory \"/opt/iem/cgi-bin\">\n    AllowOverride None\n    Options FollowSymLinks\n    Require all granted\n\n    # Default handler for python scripts\n    WSGIProcessGroup iemwsgi_ap\n    AddHandler wsgi-script .py\n    AddHandler cgi-script .cgi\n    Options +ExecCGI\n</Directory>\n\n<LocationMatch \"^/one(/index\\.html)?$\">\n    # Prevent caching of index.html\n    Header set Cache-Control \"no-cache, no-store, must-revalidate\"\n    Header set Pragma \"no-cache\"\n    Header set Expires \"0\"\n</LocationMatch>\n\nAlias /usage \"/mesonet/share/usage/mesonet.agron.iastate.edu/\"\n<Directory \"/mesonet/share/usage/mesonet.agron.iastate.edu/\">\n    Options Indexes MultiViews\n    AllowOverride None\n    Require all granted\n</Directory>\n\nAlias /agclimate/usage \"/mesonet/share/usage/agclimate/\"\n<Directory \"/mesonet/share/usage/agclimate/\">\n    Options Indexes MultiViews\n    AllowOverride None\n    Require all granted\n</Directory>\n\n<Directory \"/opt/iem/htdocs/river\">\n    RewriteRule wfo.phtml index.php\n</Directory>\n\nAlias /data \"/mesonet/ldmdata\"\n<Directory \"/mesonet/ldmdata\">\n    Options Indexes MultiViews FollowSymLinks\n    AllowOverride None\n    Require all granted\n    Redirect permanent /data/gis/images/unproj /data/gis/images/4326\n    Redirect permanent /data/gis/shape/unproj /data/gis/shape/4326\n</Directory>\n\nAlias \"/onsite/lapses\" \"/mesonet/share/lapses\"\nAlias \"/onsite/windrose\" \"/mesonet/share/windrose\"\nAlias \"/onsite/iemre\" \"/mesonet/data/iemre\"\nAlias \"/onsite/iemre_china\" \"/mesonet/data/iemre_china\"\nAlias \"/onsite/iemre_europe\" \"/mesonet/data/iemre_europe\"\nAlias \"/onsite/iemre_sa\" \"/mesonet/data/iemre_sa\"\nAlias \"/onsite/mrms\" \"/mesonet/data/mrms\"\nAlias \"/onsite/prism\" \"/mesonet/data/prism\"\nAlias \"/onsite/stage4\" \"/mesonet/data/stage4\"\nAlias \"/onsite/era5land\" \"/mesonet/data/era5\"\nAlias \"/present\" \"/mesonet/share/present\"\nAlias \"/cases\" \"/mesonet/share/cases\"\nAlias \"/GIS/data/gis\" \"/mesonet/data/gis\"\nAlias \"/archive/awos\" \"/mesonet/ARCHIVE/awos\"\nAlias \"/archive/raw\" \"/mesonet/ARCHIVE/raw\"\n# 7 Mar 2026 removeme at some point\nAlias \"/archive/rer\" \"/mesonet/ARCHIVE/rer\"\nAlias \"/m/img\"     \"/mesonet/share/iemmaps\"\nAlias \"/sites/pics\"     \"/mesonet/share/pics\"\nAlias \"/climodat/reports\" \"/mesonet/share/climodat/reports\"\nAlias \"/climodat/ks\" \"/mesonet/share/climodat/ks\"\n\nAlias \"/pickup\" \"/mesonet/share/pickup\"\n<Directory \"/mesonet/share/pickup\">\n    AllowOverride None\n    Options FollowSymLinks Indexes MultiViews\n    Require all granted\n</Directory>\n\nAlias /tmp /var/webtmp\n<Directory \"/var/webtmp\">\n    AllowOverride None\n</Directory>\n\n<Directory \"/opt/iem/cgi-bin/wms/nexrad\">\n    RewriteRule n0r.cgi /cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0r.map& [QSA,L]\n    RewriteRule n0q.cgi /cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0q.map& [QSA,L]\n</Directory>\n\n<Directory \"/opt/iem/cgi-bin/wms/us\">\n    RewriteRule wwa.cgi /cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/us/wwa.map& [QSA,L]\n</Directory>\n\n<Proxy \"http://127.0.0.1:9081/*\">\n    # The backend doesn't really care about the hostname attm\n    ProxyPreserveHost Off\n    RequestHeader set \"Host\" \"iem.local\"\n    # Attempt to reduce random proxy noise\n    ProxySet connectiontimeout=5 timeout=55 retry=0 disablereuse=On\n</Proxy>\n\nProxyPass /c http://127.0.0.1:9081/c\nProxyPass /cache http://127.0.0.1:9081/cache\n\n<Directory \"/opt/iem/htdocs/GIS\">\n    RewriteRule vtec_(.*).png radmap.php?layers[]=places&layers[]=nexrad&layers[]=cities&layers[]=interstates&layers[]=uscounties&vtec=$1&width=797&height=400\n</Directory>\n\n<Directory \"/opt/iem/htdocs/agclimate\">\n    # Lots of old links out there to bad URIs\n    RewriteRule index\\.(html|pl|php)$ /agclimate/ [R]\n\n    Redirect /agclimate/daily-pics https://mesonet.agron.iastate.edu/agclimate/daily_pics\n    Redirect /agclimate/daily_pics https://mesonet.agron.iastate.edu/data/agclimate\n    Redirect /agclimate/info.txt https://mesonet.agron.iastate.edu/agclimate/info.phtml\n\n    #\n    RewriteRule smplot/([0-9]{1,12})/(.*).png$ isusm.py?t=$1&v=$2\n    RewriteRule isusm.csv nmp_csv.py\n</Directory>\n\n<Directory \"/opt/iem/htdocs/info\">\n    RewriteRule datasets/([a-z_]+).html$ datasets.php?id=$1 [QSA]\n    RewriteRule datasets/?$ datasets.php [QSA]\n</Directory>\n\n<LocationMatch \"/api/1\">\n    # As a reminder, we are going via this route to take advantage of caching\n    # port 8080 is nginx, which proxies to fastapi on 8000\n    # Always immediately retry a connection\n    # We wait up to 5 seconds to connect to the remote server\n    # We wait up to 60 seconds for the remote server to respond\n    ProxyPass \"http://iem-web-services.agron.iastate.edu:8080\" retry=0 connectiontimeout=5 timeout=60\n    ProxyPassReverse \"http://iem-web-services.agron.iastate.edu:8080\"\n    ProxyErrorOverride On 502 503 504\n    ErrorDocument 502 /api/proxy_error_handler.py\n    ErrorDocument 503 /api/proxy_error_handler.py\n    ErrorDocument 504 /api/proxy_error_handler.py\n</LocationMatch>\n\n<Location \"/archive/data\">\n    RequestHeader set \"Host\" \"iem-archive.local\"\n    ProxyPreserveHost Off\n    # Send 404s back here\n    ProxyErrorOverride On\n    # hacky to keep the paths matching in auto-index\n    ProxyPass \"http://iem-archive.local/archive/data\"\n    ProxyPassReverse \"http://iem-archive.local/archive/data\"\n</Location>\n\n<Directory \"/opt/iem/htdocs/content\">\n    RewriteRule pil_([A-Z0-9]{3,6}).png$ pil.php?pil=$1\n</Directory>\n\n<Directory \"/opt/iem/htdocs/sites\">\n    # Allow for python scripts to act has directories NETWORK/SID/TOOL\n    RewriteRule ^([^/]{3,20})/([^/]{3,20})/([^/]+)$ $3.py\n</Directory>\n\n\n<Directory \"/opt/iem/htdocs/wx/afos\">\n    RewriteRule ([0-9]{12})_([A-Z0-9\\s]+).png$ text2png.py?e=$1&pil=$2 [B,L]\n</Directory>\n\n<Directory \"/opt/iem/pylib/iemweb/\">\n    Require all granted\n    WSGIProcessGroup iemwsgi_ap\n    AddHandler wsgi-script .py\n</Directory>\n# note the preceding directory config\nWSGIScriptAlias /geojson /opt/iem/pylib/iemweb/dispatch.py\nWSGIScriptAlias /json /opt/iem/pylib/iemweb/dispatch.py\nWSGIScriptAlias /search /opt/iem/pylib/iemweb/dispatch.py\nWSGIScriptAlias /agclimate/ames_precip.py /opt/iem/pylib/iemweb/dispatch.py\nWSGIScriptAlias /agclimate/isusm.py /opt/iem/pylib/iemweb/dispatch.py\nWSGIScriptAlias /agclimate/nmp_csv.py /opt/iem/pylib/iemweb/dispatch.py\n\n<Directory \"/opt/iem/htdocs/iemre\">\n    RewriteRule daily/([0-9\\-]+)/([0-9\\.\\-]+)/([0-9\\.\\-]+)/(json) daily.py?date=$1&lat=$2&lon=$3&format=$4\n    RewriteRule hourly/([0-9\\-]+)/([0-9\\.\\-]+)/([0-9\\.\\-]+)/(json) hourly.py?date=$1&lat=$2&lon=$3&format=$4\n    RewriteRule multiday/([0-9\\-]+)/([0-9\\-]+)/([0-9\\.]+)/([0-9\\.\\-]+)/(json) multiday.py?sdate=$1&edate=$2&lat=$3&lon=$4&format=$5\n    RewriteRule cum/([0-9\\-]+)/([0-9\\-]+)/(shp) cum.py?date0=$1&date1=$2&format=$3&base=50&ceil=86\n    RewriteRule cumcounty/([0-9]+)/([0-9\\-]+)/([0-9\\-]+)/([0-9]+)/([0-9]+)/(json) cum.py?county=$1&date0=$2&date1=$3&format=$6&base=$4&ceil=$5\n</Directory>\n\n<Directory \"/opt/iem/htdocs/kml\">\n    RewriteRule roadcond.kml roadcond.php\n    RewriteRule roadcond_v2.kml roadcond.php?linewidth=6&maxtype=2\n</Directory>\n\n<Directory \"/opt/iem/htdocs/nws\">\n    RewriteRule days_since_([A-Z][A-Z])_([A-Z]).png /plotting/auto/plot/92/phenomena:$1::significance:$2::dpi:100.png\n</Directory>\n\n<Directory \"/opt/iem/htdocs/onsite/features\">\n    RewriteRule tags/([^\\.]+)\\.html tags/index.php?tag=$1 [L]\n    RewriteRule vote/(good|bad|abstain).json$ vote.py?vote=$1\n    RewriteRule vote.json$ vote.py\n    RewriteRule ^[0-9]{4}/[0-9]{2}/.*$ content.py [PT]\n</Directory>\n\n<Directory \"/opt/iem/htdocs/current\">\n    RewriteRule live/(.*).jpg live.py?id=$1 [L]\n</Directory>\n\n<Directory \"/opt/iem/htdocs/plotting/auto\">\n    RewriteRule qrcode/([0-9]{1,12})/(.*).png$ gen_qrcode.py?p=$1&q=$2&fmt=png [B]\n    RewriteRule plot/([0-9]{1,12})/(.*).(png|csv|txt|xlsx|js|geojson|pdf|svg|geotiff)$ autoplot.py?p=$1&q=$2&fmt=$3 [B]\n    RewriteRule meta/([0-9]{1,12}).json meta.py?p=$1 [QSA,B]\n</Directory>\n\n<Directory \"/opt/iem/htdocs/request\">\n    RewriteRule maxcsv/(.*).txt$ maxcsv.py?q=$1\n\n    RewriteRule grx/iadot_trucks.txt grx/iadot_trucks.py\n    # Legacy link was removed 5 Jan 2015\n    RewriteRule grx/idot_trucks.php grx/iadot_trucks.py\n    # PHP replaced by python 24 May 2020\n    RewriteRule grx/time_mot_loc.(php|txt) grx/time_mot_loc.py [QSA]\n\n    # .php was legacy stuff, lets not break old paths\n    RewriteRule grx/l3attr.(php|txt) grx/l3attr.py [QSA]\n</Directory>\n\n<Directory \"/opt/iem/htdocs/roads\">\n    RewriteRule kcau.jpg kcau.php\n    RewriteRule ktiv.jpg ktiv.php\n    RewriteRule kwwl.jpg kwwl.php?v2\n</Directory>\n\n<Directory \"/opt/iem/htdocs/vtec\">\n    RewriteRule ^event/.* index.py [L]\n    RewriteRule ([^\\.]+)\\.html index.py?vtec=$1 [L]\n    RewriteRule f/(.*)$ f.py [QSA]\n</Directory>\n\n<Directory \"/opt/iem/htdocs/metadata/xml\">\n    RewriteRule pl_(.*)_(.*).xml pl.py?network=$1&station=$2 [QSA]\n    RewriteRule sd_(.*)_(.*).xml sd.py?network=$1&station=$2 [QSA]\n</Directory>\n"
  },
  {
    "path": "config/navbar.json",
    "content": "{\n    \"tabs\": [\n        {\n            \"title\": \"Apps\",\n            \"subs\": [\n                {\n                    \"title\": \"Application Index\",\n                    \"url\": \"/apps.php\"\n                },\n                {\n                    \"title\": \"Automated Data Plotting\",\n                    \"url\": \"/plotting/auto/\"\n                },\n                {\n                    \"title\": \"Climodat\",\n                    \"url\": \"/climodat/\"\n                },\n                {\n                    \"title\": \"Climodat Monitor\",\n                    \"url\": \"/climodat/monitor.php\"\n                },\n                {\n                    \"title\": \"IEM Explorer\",\n                    \"url\": \"/explorer/\"\n                },\n                {\n                    \"title\": \"Hourly Precip\",\n                    \"url\": \"/rainfall/obhour.phtml\"\n                },\n                {\n                    \"title\": \"Interactive Radar\",\n                    \"url\": \"/GIS/apps/rview/warnings.phtml\"\n                },\n                {\n                    \"title\": \"Pest Maps + Forecasting\",\n                    \"url\": \"/topics/pests/\"\n                },\n                {\n                    \"title\": \"Sortable Currents\",\n                    \"url\": \"/my/current.phtml\"\n                },\n                {\n                    \"title\": \"Time Machine\",\n                    \"url\": \"/timemachine/\"\n                },\n                {\n                    \"title\": \"Wind Roses\",\n                    \"url\": \"/sites/windrose.phtml?station=AMW&network=IA_ASOS\"\n                }\n            ]\n        },\n        {\n            \"title\": \"Areas\",\n            \"subs\": [\n                {\n                    \"title\": \"Ag Weather/Climate Info\",\n                    \"url\": \"/agweather/\"\n                },\n                {\n                    \"title\": \"Archive Mainpage\",\n                    \"url\": \"/archive/\"\n                },\n                {\n                    \"title\": \"Climate Mainpage\",\n                    \"url\": \"/climate/\"\n                },\n                {\n                    \"title\": \"Current Mainpage\",\n                    \"url\": \"/current/\"\n                },\n                {\n                    \"title\": \"Drought\",\n                    \"url\": \"/dm/\"\n                },\n                {\n                    \"title\": \"GIS Mainpage\",\n                    \"url\": \"/GIS/\"\n                },\n                {\n                    \"title\": \"NWS Mainpage\",\n                    \"url\": \"/nws/\"\n                },\n                {\n                    \"title\": \"Severe Weather Mainpage\",\n                    \"url\": \"/current/severe.phtml\"\n                }\n            ]\n        },\n        {\n            \"title\": \"Datasets\",\n            \"subs\": [\n                {\n                    \"title\": \"Daily Climatology\",\n                    \"url\": \"/COOP/extremes.php\"\n                },\n                {\n                    \"title\": \"Daily Observations\",\n                    \"url\": \"/request/daily.phtml\"\n                },\n                {\n                    \"title\": \"Dataset Documentation\",\n                    \"url\": \"/info/datasets/\"\n                },\n                {\n                    \"title\": \"IEM Reanalysis\",\n                    \"url\": \"/iemre/\"\n                },\n                {\n                    \"title\": \"Model Output Statistics\",\n                    \"url\": \"/mos/\"\n                },\n                {\n                    \"title\": \"NEXRAD Mosaic\",\n                    \"url\": \"/docs/nexrad_mosaic/\"\n                },\n                {\n                    \"title\": \"PIREP - Pilot Reports\",\n                    \"url\": \"/request/gis/pireps.php\"\n                },\n                {\n                    \"title\": \"Roads Mainpage\",\n                    \"url\": \"/roads/\"\n                },\n                {\n                    \"title\": \"RADAR & Satellite\",\n                    \"url\": \"/current/radar.phtml\"\n                },\n                {\n                    \"title\": \"Rainfall Data\",\n                    \"url\": \"/rainfall/\"\n                },\n                {\n                    \"title\": \"Sounding Archive\",\n                    \"url\": \"/archive/raob/\"\n                },\n                {\n                    \"title\": \"Soil Moisture Satellite\",\n                    \"url\": \"/smos/\"\n                }\n            ]\n        },\n        {\n            \"title\": \"Info\",\n            \"subs\": [\n                {\n                    \"title\": \"Info Mainpage\",\n                    \"url\": \"/info.php\"\n                },\n                {\n                    \"title\": \"Daily Features\",\n                    \"url\": \"/onsite/features/past.php\"\n                },\n                {\n                    \"title\": \"Links\",\n                    \"url\": \"/info/links.php\"\n                },\n                {\n                    \"title\": \"News\",\n                    \"url\": \"/onsite/news.phtml\"\n                },\n                {\n                    \"title\": \"Presentations\",\n                    \"url\": \"/present/\"\n                },\n                {\n                    \"title\": \"Referenced By\",\n                    \"url\": \"/info/refs.php\"\n                },\n                {\n                    \"title\": \"Station Data and Metadata\",\n                    \"url\": \"/sites/locate.php\"\n                },\n                {\n                    \"title\": \"Quality Control\",\n                    \"url\": \"/QC/\"\n                },\n                {\n                    \"title\": \"Variables\",\n                    \"url\": \"/info/variables.phtml\"\n                }\n            ]\n        },\n        {\n            \"title\": \"Networks\",\n            \"subs\": [\n                {\n                    \"title\": \"Network Tables\",\n                    \"url\": \"/sites/networks.php\"\n                },\n                {\n                    \"title\": \"ASOS/AWOS Airports\",\n                    \"url\": \"/ASOS/\"\n                },\n                {\n                    \"title\": \"CoCoRaHS - Citizen Science\",\n                    \"url\": \"/cocorahs/\"\n                },\n                {\n                    \"title\": \"DCP/HADS/SHEF - Hydrological\",\n                    \"url\": \"/DCP/\"\n                },\n                {\n                    \"title\": \"NWS COOP - Daily Climate\",\n                    \"url\": \"/COOP/\"\n                },\n                {\n                    \"title\": \"ISU Soil Moisture\",\n                    \"url\": \"/agclimate/\"\n                },\n                {\n                    \"title\": \"NLAE Flux\",\n                    \"url\": \"/nstl_flux/\"\n                },\n                {\n                    \"title\": \"RWIS - Roadway Weather\",\n                    \"url\": \"/RWIS/\"\n                },\n                {\n                    \"title\": \"SCAN - NRCS Soil Climate\",\n                    \"url\": \"/scan/\"\n                },\n                {\n                    \"title\": \"Other\",\n                    \"url\": \"/other/\"\n                },\n                {\n                    \"title\": \"US Climate Reference\",\n                    \"url\": \"/uscrn/\"\n                }\n            ]\n        },\n        {\n            \"title\": \"NWS Data\",\n            \"subs\": [\n                {\n                    \"title\": \"NWS Mainpage\",\n                    \"url\": \"/nws/\"\n                },\n                {\n                    \"title\": \"Local Storm Report App\",\n                    \"url\": \"/lsr/\"\n                },\n                {\n                    \"title\": \"IEM Cow (SBW Verification)\",\n                    \"url\": \"/cow/\"\n                },\n                {\n                    \"title\": \"IEM Raccoon (SBW Powerpoints)\",\n                    \"url\": \"/raccoon/\"\n                },\n                {\n                    \"title\": \"River Summary\",\n                    \"url\": \"/river/\"\n                },\n                {\n                    \"title\": \"Satellite Data\",\n                    \"url\": \"/GIS/goes.phtml\"\n                },\n                {\n                    \"title\": \"Search for Warnings\",\n                    \"url\": \"/vtec/search.php\"\n                },\n                {\n                    \"title\": \"Special Weather Statement (SPS) Search\",\n                    \"url\": \"/nws/sps_search/\"\n                },\n                {\n                    \"title\": \"SPC Convective Outlook / MCD Search\",\n                    \"url\": \"/nws/spc_outlook_search/\"\n                },\n                {\n                    \"title\": \"SPC Watches\",\n                    \"url\": \"/GIS/apps/rview/watch.phtml\"\n                },\n                {\n                    \"title\": \"Text Archives Mainpage\",\n                    \"url\": \"/nws/text.php\"\n                },\n                {\n                    \"title\": \"Text Listing by WFO/Center/Product\",\n                    \"url\": \"/wx/afos/list.phtml\"\n                },\n                {\n                    \"title\": \"Text by Product ID\",\n                    \"url\": \"/wx/afos/\"\n                },\n                {\n                    \"title\": \"VTEC Browser\",\n                    \"url\": \"/vtec/\"\n                }\n            ]\n        },\n        {\n            \"title\": \"Services\",\n            \"subs\": [\n                {\n                    \"title\": \"API Mainpage\",\n                    \"url\": \"/api/\"\n                },\n                {\n                    \"title\": \"CGI / Bulk Data\",\n                    \"url\": \"/api/#cgi\"\n                },\n                {\n                    \"title\": \"Gibson Ridge Placefiles\",\n                    \"url\": \"/request/grx/\"\n                },\n                {\n                    \"title\": \"iembot\",\n                    \"url\": \"/projects/iembot/\"\n                },\n                {\n                    \"title\": \"JSON Webservices\",\n                    \"url\": \"/api/#json\"\n                },\n                {\n                    \"title\": \"LDM\",\n                    \"url\": \"/request/ldm.php\"\n                },\n                {\n                    \"title\": \"Max CSV\",\n                    \"url\": \"/request/maxcsv.py?help\"\n                },\n                {\n                    \"title\": \"OGC Webservices\",\n                    \"url\": \"/ogc/\"\n                },\n                {\n                    \"title\": \"RadMap API\",\n                    \"url\": \"/GIS/radmap_api.phtml\"\n                },\n                {\n                    \"title\": \"RADAR Services\",\n                    \"url\": \"/GIS/radview.phtml\"\n                }\n            ]\n        },\n        {\n            \"title\": \"Webcams\",\n            \"subs\": [\n                {\n                    \"title\": \"Webcam mainpage\",\n                    \"url\": \"/projects/webcam.php\"\n                },\n                {\n                    \"title\": \"Build your own lapses\",\n                    \"url\": \"/current/bloop.phtml\"\n                },\n                {\n                    \"title\": \"Cool lapses\",\n                    \"url\": \"/cool/\"\n                },\n                {\n                    \"title\": \"IEM Webcam Viewer\",\n                    \"url\": \"/current/viewer.phtml\"\n                },\n                {\n                    \"title\": \"ISU Campus Webcams\",\n                    \"url\": \"/current/isucams.phtml\"\n                },\n                {\n                    \"title\": \"Recent lapses\",\n                    \"url\": \"/current/camlapse/\"\n                },\n                {\n                    \"title\": \"Still images\",\n                    \"url\": \"/current/webcam.php\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "config/settings.inc.php.in",
    "content": "<?php\n/**\n * This is a template file for the settings.inc.php file that is used to\n * configure the IEM.  You should copy this file to settings.inc.php and\n * edit it to match your configuration.\n */\n\n// Ensure our dates default to Iowa\ndate_default_timezone_set('America/Chicago');\n\nclass IEMConfig{\n    // How internal code finds a webserver to make calls to\n    const INTERNAL_BASEURL = \"http://iem.local\";  // no trail slash\n    // How we document references to this server to the outside world\n    const EXTERNAL_BASEURL = \"https://mesonet.agron.iastate.edu\"; // no trail slash\n    // Bing Maps API Key\n    const BING_MAPS_API_KEY = \"...\";\n}\n\n// Shortcuts to allow usage in string blocks\n$INTERNAL_BASEURL = IEMConfig::INTERNAL_BASEURL;\n$EXTERNAL_BASEURL = IEMConfig::EXTERNAL_BASEURL;\n$BING_MAPS_API_KEY = IEMConfig::BING_MAPS_API_KEY;\n\n// Legacy cruft to remove\n$fb_feature_key='';\n$fb_feature_secret='';\n$fb_feature_id='';\n"
  },
  {
    "path": "conftest.py",
    "content": "\"\"\"Centralized Testing Stuff.\"\"\"\n\nimport pytest\nfrom pyiem.database import get_dbconnc\n\n\n@pytest.fixture\ndef dbcursor(database: str):\n    \"\"\"Yield a cursor for the given database.\"\"\"\n    dbconn, cursor = get_dbconnc(database)\n    yield cursor\n    cursor.close()\n    dbconn.close()\n"
  },
  {
    "path": "data/gis/avl/iemrainfall.avl",
    "content": "/3.1\r\n(ODB.1\r\n\tFirstRootClassName:\t\"Legend\"\r\n\tRoots:\t2\r\n\tVersion:\t31\r\n)\r\n\r\n(Legend.2\r\n\tSymType:\t0x02\r\n\tLegType:\t0x02\r\n\tClassType:\t0x03\r\n\tFieldNames:\t3\r\n\tSymbols:\t4\r\n\tClass:\t49\r\n\tClass:\t50\r\n\tClass:\t51\r\n\tClass:\t52\r\n\tClass:\t53\r\n\tClass:\t54\r\n\tClass:\t55\r\n\tClass:\t56\r\n\tClass:\t57\r\n\tClass:\t58\r\n\tClass:\t59\r\n\tStdDevs:\t1.00000000000000\r\n\tNullSym:\t60\r\n\tNullValues:\t64\r\n\tStatValues:\t65\r\n\tPrecision:\t-3\r\n)\r\n\r\n(AVStr.3\r\n\tS:\t\"Rainfall\"\r\n)\r\n\r\n(SymList.4\r\n\tChild:\t5\r\n\tChild:\t9\r\n\tChild:\t13\r\n\tChild:\t17\r\n\tChild:\t21\r\n\tChild:\t25\r\n\tChild:\t29\r\n\tChild:\t33\r\n\tChild:\t37\r\n\tChild:\t41\r\n\tChild:\t45\r\n)\r\n\r\n(BShSym.5\r\n\tColor:\t6\r\n\tOutlineColor:\t7\r\n\tOutlineWidth:\t0.10000000000000\r\n\tBgColor:\t8\r\n)\r\n\r\n(TClr.6\r\n\tRed:\t0xffff\r\n\tGreen:\t0xffff\r\n\tBlue:\t0xffff\r\n)\r\n\r\n(TClr.7\r\n)\r\n\r\n(TClr.8\r\n\tRed:\t0xffff\r\n\tGreen:\t0xffff\r\n\tBlue:\t0xffff\r\n)\r\n\r\n(BShSym.9\r\n\tColor:\t10\r\n\tOutlineColor:\t11\r\n\tOutlineWidth:\t0.10000000000000\r\n\tBgColor:\t12\r\n)\r\n\r\n(TClr.10\r\n\tRed:\t0xc3b5\r\n\tGreen:\t0xff00\r\n\tBlue:\t0xc33b\r\n)\r\n\r\n(TClr.11\r\n)\r\n\r\n(TClr.12\r\n\tRed:\t0xffff\r\n\tGreen:\t0xffff\r\n\tBlue:\t0xffff\r\n)\r\n\r\n(BShSym.13\r\n\tColor:\t14\r\n\tOutlineColor:\t15\r\n\tOutlineWidth:\t0.10000000000000\r\n\tBgColor:\t16\r\n)\r\n\r\n(TClr.14\r\n\tGreen:\t0xffff\r\n)\r\n\r\n(TClr.15\r\n)\r\n\r\n(TClr.16\r\n\tRed:\t0xffff\r\n\tGreen:\t0xffff\r\n\tBlue:\t0xffff\r\n)\r\n\r\n(BShSym.17\r\n\tColor:\t18\r\n\tOutlineColor:\t19\r\n\tOutlineWidth:\t0.10000000000000\r\n\tBgColor:\t20\r\n)\r\n\r\n(TClr.18\r\n\tRed:\t0x189\r\n\tGreen:\t0x8200\r\n\tBlue:\t0x81\r\n)\r\n\r\n(TClr.19\r\n)\r\n\r\n(TClr.20\r\n\tRed:\t0xffff\r\n\tGreen:\t0xffff\r\n\tBlue:\t0xffff\r\n)\r\n\r\n(BShSym.21\r\n\tColor:\t22\r\n\tOutlineColor:\t23\r\n\tOutlineWidth:\t0.10000000000000\r\n\tBgColor:\t24\r\n)\r\n\r\n(TClr.22\r\n\tRed:\t0xae6d\r\n\tGreen:\t0xa559\r\n\tBlue:\t0xff00\r\n)\r\n\r\n(TClr.23\r\n)\r\n\r\n(TClr.24\r\n\tRed:\t0xffff\r\n\tGreen:\t0xffff\r\n\tBlue:\t0xffff\r\n)\r\n\r\n(BShSym.25\r\n\tColor:\t26\r\n\tOutlineColor:\t27\r\n\tOutlineWidth:\t0.10000000000000\r\n\tBgColor:\t28\r\n)\r\n\r\n(TClr.26\r\n\tBlue:\t0xffff\r\n)\r\n\r\n(TClr.27\r\n)\r\n\r\n(TClr.28\r\n\tRed:\t0xffff\r\n\tGreen:\t0xffff\r\n\tBlue:\t0xffff\r\n)\r\n\r\n(BShSym.29\r\n\tColor:\t30\r\n\tOutlineColor:\t31\r\n\tOutlineWidth:\t0.10000000000000\r\n\tBgColor:\t32\r\n)\r\n\r\n(TClr.30\r\n\tRed:\t0xdc00\r\n\tGreen:\t0xdb\r\n\tBlue:\t0xdb\r\n)\r\n\r\n(TClr.31\r\n)\r\n\r\n(TClr.32\r\n\tRed:\t0xffff\r\n\tGreen:\t0xffff\r\n\tBlue:\t0xffff\r\n)\r\n\r\n(BShSym.33\r\n\tColor:\t34\r\n\tOutlineColor:\t35\r\n\tOutlineWidth:\t0.10000000000000\r\n\tBgColor:\t36\r\n)\r\n\r\n(TClr.34\r\n\tRed:\t0x6400\r\n\tGreen:\t0x63\r\n\tBlue:\t0x6025\r\n)\r\n\r\n(TClr.35\r\n)\r\n\r\n(TClr.36\r\n\tRed:\t0xffff\r\n\tGreen:\t0xffff\r\n\tBlue:\t0xffff\r\n)\r\n\r\n(BShSym.37\r\n\tColor:\t38\r\n\tOutlineColor:\t39\r\n\tOutlineWidth:\t0.10000000000000\r\n\tBgColor:\t40\r\n)\r\n\r\n(TClr.38\r\n\tRed:\t0xae0b\r\n\tGreen:\t0x13e\r\n\tBlue:\t0x313d\r\n)\r\n\r\n(TClr.39\r\n)\r\n\r\n(TClr.40\r\n\tRed:\t0xffff\r\n\tGreen:\t0xffff\r\n\tBlue:\t0xffff\r\n)\r\n\r\n(BShSym.41\r\n\tColor:\t42\r\n\tOutlineColor:\t43\r\n\tOutlineWidth:\t0.10000000000000\r\n\tBgColor:\t44\r\n)\r\n\r\n(TClr.42\r\n\tRed:\t0xfb84\r\n\tGreen:\t0x6a67\r\n\tBlue:\t0xa6ed\r\n)\r\n\r\n(TClr.43\r\n)\r\n\r\n(TClr.44\r\n\tRed:\t0xffff\r\n\tGreen:\t0xffff\r\n\tBlue:\t0xffff\r\n)\r\n\r\n(BShSym.45\r\n\tColor:\t46\r\n\tOutline:\t1\r\n\tOutlineColor:\t47\r\n\tOutlineWidth:\t0.10000000000000\r\n\tBgColor:\t48\r\n)\r\n\r\n(TClr.46\r\n\tName:\t\"Transparent\"\r\n)\r\n\r\n(TClr.47\r\n\tName:\t\"Transparent\"\r\n)\r\n\r\n(TClr.48\r\n\tRed:\t0xffff\r\n\tGreen:\t0xffff\r\n\tBlue:\t0xffff\r\n)\r\n\r\n(LClass.49\r\n\tLabel:\t\"0 - 0.01\"\r\n\tMaxNum:\t0.01000000000000\r\n\tPrecision:\t-3\r\n)\r\n\r\n(LClass.50\r\n\tLabel:\t\"0.02 - 0.04\"\r\n\tMinNum:\t0.02000000000000\r\n\tMaxNum:\t0.04000000000000\r\n\tPrecision:\t-3\r\n)\r\n\r\n(LClass.51\r\n\tLabel:\t\"0.05 - 0.24\"\r\n\tMinNum:\t0.05000000000000\r\n\tMaxNum:\t0.24000000000000\r\n\tPrecision:\t-3\r\n)\r\n\r\n(LClass.52\r\n\tLabel:\t\"0.25 - 0.49\"\r\n\tMinNum:\t0.25000000000000\r\n\tMaxNum:\t0.49000000000000\r\n\tPrecision:\t-3\r\n)\r\n\r\n(LClass.53\r\n\tLabel:\t\"0.5 - 0.74\"\r\n\tMinNum:\t0.50000000000000\r\n\tMaxNum:\t0.74000000000000\r\n\tPrecision:\t-3\r\n)\r\n\r\n(LClass.54\r\n\tLabel:\t\"0.75 - 0.99\"\r\n\tMinNum:\t0.75000000000000\r\n\tMaxNum:\t0.99000000000000\r\n\tPrecision:\t-3\r\n)\r\n\r\n(LClass.55\r\n\tLabel:\t\"1 - 1.99\"\r\n\tMinNum:\t1.00000000000000\r\n\tMaxNum:\t1.99000000000000\r\n\tPrecision:\t-3\r\n)\r\n\r\n(LClass.56\r\n\tLabel:\t\"2 - 3.99\"\r\n\tMinNum:\t2.00000000000000\r\n\tMaxNum:\t3.99000000000000\r\n\tPrecision:\t-3\r\n)\r\n\r\n(LClass.57\r\n\tLabel:\t\"4 - 5.99\"\r\n\tMinNum:\t4.00000000000000\r\n\tMaxNum:\t5.99000000000000\r\n\tPrecision:\t-3\r\n)\r\n\r\n(LClass.58\r\n\tLabel:\t\"6 - 12\"\r\n\tMinNum:\t6.00000000000000\r\n\tMaxNum:\t12.00000000000000\r\n\tPrecision:\t-3\r\n)\r\n\r\n(LClass.59\r\n\tIsNoData:\t1\r\n\tLabel:\t\"No Data\"\r\n\tMaxNum:\t-1.00000000000000\r\n\tPrecision:\t-3\r\n)\r\n\r\n(BShSym.60\r\n\tColor:\t61\r\n\tOutline:\t1\r\n\tOutlineColor:\t62\r\n\tOutlineWidth:\t0.10000000000000\r\n\tBgColor:\t63\r\n)\r\n\r\n(TClr.61\r\n\tName:\t\"Transparent\"\r\n)\r\n\r\n(TClr.62\r\n\tName:\t\"Transparent\"\r\n)\r\n\r\n(TClr.63\r\n\tRed:\t0xffff\r\n\tGreen:\t0xffff\r\n\tBlue:\t0xffff\r\n)\r\n\r\n(NameDict.64\r\n)\r\n\r\n(NameDict.65\r\n)\r\n\r\n"
  },
  {
    "path": "data/gis/base.sym",
    "content": "SYMBOLSET\n\nSYMBOL\n  NAME 'circle'\n  TYPE ELLIPSE\n  Filled TRUE\n  POINTS 1 1 END\nEND\n\nSYMBOL\n  NAME \"triangle\"\n  TYPE vector\n  POINTS\n    0 4\n    2 0\n    4 4\n    0 4\n  END\nEND\n\nSYMBOL\n  NAME \"tornado\"\n  TYPE vector\n  FILLED TRUE\n  POINTS\n   0 0\n   2 4\n   4 0\n   0 0\n  END\nEND\n\nSymbol\n  Name 'iem_logo'\n  Type PIXMAP\n  Image 'symbols/iem_logo.png'\n  Transparent 0\nEND\n\nSymbol\n  Name 'arrow'\n  Type PIXMAP\n  Image 'symbols/arrow.gif'\n  Transparent 2\nEND\n\nSymbol\n Name 'interstate_shield'\n Type PIXMAP\n Image 'symbols/interstate-2.png'\n Transparent 0\nEND\nEND\n"
  },
  {
    "path": "data/gis/fonts.list",
    "content": "liberation-bold\t/usr/share/fonts/liberation-serif/LiberationSerif-Bold.ttf\nliberation      /usr/share/fonts/liberation-serif/LiberationSerif-Regular.ttf\nliberation-mono /usr/share/fonts/liberation-mono/LiberationMono-Regular.ttf\nweather         weather.ttf\nesri34          esri_34.ttf\n"
  },
  {
    "path": "data/gis/iem.mapinc",
    "content": "#\n# AWIPS Cities\n#\nLAYER\n  NAME 'cities'\n  METADATA\n      \"wms_title\"       \"city\"\n  END\n  PROJECTION\n    \"init=epsg:4326\"\n  END\n  STATUS OFF\n  TYPE POINT\n  DATA \"/mesonet/data/gis/static/shape/4326/nws/cities.shp\"\n  LABELITEM 'name'\n  LABELCACHE TRUE\n  CLASS\n    LABEL\n          COLOR 255 255 153\n          OUTLINECOLOR 0 0 0\n          FONT \"liberation-bold\"\n          TYPE truetype\n          SIZE 11\n          OFFSET 0 2\n          BUFFER 40\n          ANGLE AUTO\n          POSITION UC\n          PARTIALS FALSE\n          PRIORITY 10\n          STYLE\n            SYMBOL 'circle'\n            COLOR 0 0 0\n            SIZE 4\n         END\n      END\n   END\nEND\n\n# Credits\nLAYER\n  NAME \"bar640t-title\"\n  TYPE POINT\n  STATUS OFF\n  TRANSFORM FALSE\n  LABELCACHE OFF\n  CLASS\n    NAME 's14y'\n    LABEL\n      COLOR 255 255 0\n      TYPE TRUETYPE\n      SIZE 14\n      FONT 'liberation'\n      POSITION CR\n    END\n  END\n  CLASS\n    NAME 's12w'\n    LABEL\n      COLOR 255 255 255\n      TYPE TRUETYPE\n      SIZE 12\n      FONT 'liberation'\n      POSITION CR\n    END\n  END\nEND\n\nLAYER\n  CONNECTIONTYPE postgis\n  NAME airtemps\n  # Connect to a remote spatial database\n  CONNECTION \"user=nobody dbname=iem host=iemdb-iem.local\"\n  # Get the lines from the 'geom' column of the 'roads' table\n  DATA \"geom from (select geom, round(tmpf::numeric,0) as tmpf, \n    c.iemid as foid from current c JOIN stations t ON (t.iemid = c.iemid) \n    WHERE (valid > CURRENT_TIMESTAMP - '70 minutes'::interval)\n    and tmpf is not null\n    ) as foo using unique foid using srid=4326\"\n  STATUS OFF\n  TYPE POINT\n  LABELCACHE ON\n  PROJECTION\n   \"init=epsg:4326\"\n  END\n  CLASS\n    EXPRESSION ([tmpf] >= 35 AND [tmpf] < 120)\n    TEXT ([tmpf])\n    STYLE\n      COLOR -1 -1 -1\n    END\n    LABEL\n      COLOR 30 190 20\n      OUTLINECOLOR 0 0 0\n      TYPE TRUETYPE\n      FONT 'liberation'\n      SIZE 10\n      POSITION UL\n      OFFSET 2 2\n      BUFFER 1\n      PARTIALS TRUE\n      FORCE FALSE\n    END\n  END\n  CLASS\n    EXPRESSION ([tmpf] >= 34)\n    TEXT ([tmpf])\n    STYLE\n      COLOR -1 -1 -1\n    END\n    LABEL\n      COLOR 215 255 0\n      OUTLINECOLOR 0 0 0\n      TYPE TRUETYPE\n      FONT 'liberation'\n      SIZE 10\n      POSITION UL\n      OFFSET 2 2\n      BUFFER 1\n      PARTIALS TRUE\n      FORCE FALSE\n    END\n  END\n  CLASS\n    EXPRESSION ([tmpf] >= 33)\n    TEXT ([tmpf])\n    STYLE\n      COLOR -1 -1 -1\n    END\n    LABEL\n      COLOR 255 164 0\n      OUTLINECOLOR 0 0 0\n      TYPE TRUETYPE\n      FONT 'liberation'\n      SIZE 10\n      POSITION UL\n      OFFSET 2 2\n      BUFFER 1\n      PARTIALS TRUE\n      FORCE FALSE\n    END\n  END\n  CLASS\n    EXPRESSION ([tmpf] >= 32)\n    TEXT ([tmpf])\n    STYLE\n      COLOR -1 -1 -1\n    END\n    LABEL\n      COLOR 255 50 0\n      OUTLINECOLOR 0 0 0\n      TYPE TRUETYPE\n      FONT 'liberation'\n      SIZE 10\n      POSITION UL\n      OFFSET 2 2\n      BUFFER 1\n      PARTIALS TRUE\n      FORCE FALSE\n    END\n  END\n  CLASS\n    EXPRESSION ([tmpf] >= 31)\n    TEXT ([tmpf])\n    STYLE\n      COLOR -1 -1 -1\n    END\n    LABEL\n      COLOR 255 0 144\n      OUTLINECOLOR 0 0 0\n      TYPE TRUETYPE\n      FONT 'liberation'\n      SIZE 10\n      POSITION UL\n      OFFSET 2 2\n      BUFFER 1\n      PARTIALS TRUE\n      FORCE FALSE\n    END\n  END\n  CLASS\n    EXPRESSION ([tmpf] >= 30)\n    TEXT ([tmpf])\n    STYLE\n      COLOR -1 -1 -1\n    END\n    LABEL\n      #COLOR 232 164 226\n      COLOR 255 0 255\n      OUTLINECOLOR 0 0 0\n      TYPE TRUETYPE\n      FONT 'liberation'\n      SIZE 10\n      POSITION UL\n      OFFSET 2 2\n      BUFFER 1\n      PARTIALS TRUE\n      FORCE FALSE\n    END\n  END\n  CLASS\n    EXPRESSION ([tmpf] > -40)\n    TEXT ([tmpf])\n    STYLE\n      COLOR -1 -1 -1\n    END\n    LABEL\n      #COLOR 232 214 226\n      COLOR 255 255 255\n      OUTLINECOLOR 0 0 0\n      TYPE TRUETYPE\n      FONT 'liberation'\n      SIZE 10\n      POSITION UL\n      OFFSET 2 2\n      BUFFER 1\n      PARTIALS TRUE\n      FORCE FALSE\n    END\n  END\nEND\n\n#\n# Generic stuff useful to all IEM base*.map\n#\n# USDM!\nLAYER\n  NAME usdm\n  STATUS OFF\n  TYPE LINE\n  DATA /mesonet/ldmdata/gis/shape/4326/us/dm_current.shp\n  PROJECTION\n   \"init=epsg:4326\"\n  END\n  CLASSITEM \"DM\"\n  CLASS\n    EXPRESSION /0/\n    STYLE\n      COLOR 100 0 0\n      SIZE 4\n      SYMBOL 'circle'\n    END\n    TEXT \"D0\"\n    LABEL\n      COLOR 255 255 255\n    END\n  END\n  CLASS\n    EXPRESSION /1/\n    TEXT \"D1\"\n    STYLE\n      COLOR 120 0 0\n      SIZE 4\n      SYMBOL 'circle'\n    END\n    LABEL\n      COLOR 255 255 255\n    END\n  END\n  CLASS\n    EXPRESSION /2/\n    TEXT \"D2\"\n    STYLE\n      COLOR 160 0 0\n      SIZE 4\n      SYMBOL 'circle'\n    END\n    LABEL\n      COLOR 255 255 255\n    END\n  END\n  CLASS\n    EXPRESSION /3/\n    TEXT \"D3\"\n    STYLE\n      COLOR 200 0 0\n      SYMBOL 'circle'\n      SIZE 4\n    END\n    LABEL\n      COLOR 255 255 255\n    END\n  END\n  CLASS\n    EXPRESSION /4/\n    TEXT \"D4\"\n    STYLE\n      COLOR 255 0 0\n      SIZE 4\n      SYMBOL 'circle'\n    END\n    LABEL\n      COLOR 255 255 255\n    END\n  END\nEND\nLAYER\n  NAME \"iem_headerbar\"\n  TYPE POLYGON\n  TRANSFORM FALSE\n  UNITS pixels\n  FEATURE\n    POINTS 0 0 0 53 2000 53 2000 0 0 0 END\n  END\n  STATUS OFF\n  LABELCACHE OFF\n  CLASS\n    STYLE\n      COLOR 0 0 0\n    END\n  END\nEND\n\nLAYER\n  NAME \"iem_headerbar_logo\"\n  TYPE POINT\n  TRANSFORM FALSE\n  LABELCACHE ON\n  UNITS pixels\n  FEATURE\n    POINTS 40 30 END\n  END\n  STATUS OFF\n  LABELCACHE OFF\n  CLASS\n    STYLE\n      SYMBOL 'iem_logo'\n    END\n  END\nEND\n\nLAYER\n  NAME \"iem_headerbar_title\"\n  TYPE POINT\n  STATUS OFF\n  LABELCACHE ON\n  TRANSFORM FALSE\n  UNITS pixels\n  CLASS\n    LABEL\n      COLOR 255 255 0\n      TYPE TRUETYPE\n      SIZE 18\n      FONT 'liberation-bold'\n      POSITION UR\n      FORCE TRUE\n      PARTIALS TRUE\n    END\n  END\n  CLASS\n    LABEL\n      COLOR 255 255 255\n      TYPE TRUETYPE\n      SIZE 12\n      FONT 'liberation-mono'\n      POSITION UR\n      FORCE TRUE\n      PARTIALS TRUE\n    END\n  END\nEND\n\nLAYER\n  NAME \"station_plot\"\n  TYPE POINT\n  PROJECTION\n   \"init=epsg:4326\"\n  END\n  LABELCACHE ON\n  STATUS OFF\n  CLASS\n    NAME \"station-cr\"\n    STYLE\n      COLOR 0 0 0\n    END\n    LABEL\n      COLOR 0 0 0\n      FONT 'liberation'\n      POSITION CR\n      TYPE TRUETYPE\n      FORCE TRUE\n      SIZE 12\n      PARTIALS FALSE\n    END\n  END\n  CLASS\n    NAME \"station-ul\"\n    STYLE\n      COLOR 0 0 0\n    END\n    LABEL\n      COLOR 255 0 0\n      FONT 'liberation'\n      POSITION UL\n      TYPE TRUETYPE\n      FORCE TRUE\n      SIZE 12\n      PARTIALS FALSE\n    END\n  END\n  CLASS\n    NAME \"station-ll\"\n    STYLE\n      COLOR 0 0 255\n    END\n    LABEL\n      COLOR 0 0 255\n      FONT 'liberation'\n      POSITION LL\n      TYPE TRUETYPE\n      FORCE TRUE\n      SIZE 12\n      PARTIALS FALSE\n    END\n  END\nEND\n\nLAYER\n  NAME cwas\n  STATUS OFF\n  TYPE POLYGON\n  DATA /mesonet/data/gis/static/shape/4326/nws/cwas.shp\n  PROJECTION\n   \"init=epsg:4326\"\n  END\n  LABELITEM \"WFO\"\n  CLASS\n    STYLE\n      OUTLINECOLOR 255 165 0\n    END\n    LABEL\n      MINFEATURESIZE 50\n      OUTLINECOLOR 0 0 0\n      COLOR 255 255 255\n      TYPE BITMAP\n      SIZE MEDIUM\n      POSITION CC\n      PARTIALS FALSE\n    END\n  END\nEND\n\nLAYER\n  NAME cwsu\n  STATUS OFF\n  TYPE POLYGON\n  DATA /mesonet/data/gis/static/shape/4326/nws/cwsu.shp\n  PROJECTION\n   \"init=epsg:4326\"\n  END\n  LABELITEM \"ID\"\n  CLASS\n    STYLE\n      OUTLINECOLOR 255 165 0\n    END\n    LABEL\n      MINFEATURESIZE 50\n      OUTLINECOLOR 0 0 0\n      COLOR 255 255 255\n      TYPE BITMAP\n      SIZE MEDIUM\n      POSITION CC\n      PARTIALS FALSE\n    END\n  END\nEND\n\n\nLAYER\n  CONNECTIONTYPE postgis\n  NAME warnings0_c\n  CONNECTION \"user=nobody dbname=postgis host=iemdb-postgis.local\"\n  DATA \"geom from (select phenomena, significance, u.geom, random() as  oid from warnings w JOIN ugcs u on (u.gid = w.gid) WHERE  expire > CURRENT_TIMESTAMP) as foo using unique oid using SRID=4326\"\n  STATUS OFF\n  TYPE LINE\n  PROJECTION\n   \"init=epsg:4326\"\n  END\n  CLASS\n    NAME \"Flash Flood Warn\"\n    EXPRESSION (('[phenomena]' = 'FF' or '[phenomena]' = 'MA') and '[significance]' = 'W')\n    STYLE\n      COLOR 0 255 0\n      SIZE 2\n      SYMBOL 'circle'\n    END\n  END\n  CLASS\n    NAME \"Svr T'storm Warn\"\n    EXPRESSION ('[phenomena]' = 'SV' and '[significance]' = 'W')\n    STYLE\n      COLOR 0 0 0\n      SIZE 4\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR 255 255 0\n      SIZE 2\n      SYMBOL 'circle'\n    END\n  END\n  CLASS\n    NAME \"Tornado Warn\"\n    EXPRESSION ('[phenomena]' = 'TO' and '[significance]' = 'W')\n    STYLE\n      COLOR 0 0 0\n      SIZE 4\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR 255 0 0\n      SIZE 2\n      SYMBOL 'circle'\n    END\n  END\n\n    # Advisories\n    CLASS\n        NAME \"Winter Advisory\"\n        EXPRESSION (('[phenomena]' = 'WW' or '[phenomena]' = 'BZ'  or '[phenomena]' = 'WS' or '[phenomena]' = 'IP' or '[phenomena]' = 'HP' or '[phenomena]' = 'ZR' or '[phenomena]' = 'IS') and '[significance]' = 'Y')\n        STYLE\n          COLOR  222 184 135\n          SIZE  3\n          SYMBOL    'circle'\n        END\n        #STYLE\n        #  COLOR 222 184 135\n        #  SIZE  1\n        #  SYMBOL    'circle'\n        #END\n    END\n    # Snow and Blowing snow\n    CLASS\n        NAME \"Sn or Blow Sn Adv\"\n        EXPRESSION (('[phenomena]' = 'LE' or '[phenomena]' = 'SN' or '[phenomena]' = 'BS' or '[phenomena]' = 'SB') and '[significance]' = 'Y')\n        STYLE\n          COLOR 176 224 230\n          SIZE  3 \n          SYMBOL    'circle'\n        END\n        STYLE\n          COLOR 255 255 255\n          SIZE  1\n          SYMBOL    'circle'\n        END\n    END\n\n    # Heavy Snow\n    CLASS\n        NAME \"Heavy Snow Warn\"\n        EXPRESSION ('[phenomena]' = 'HS' and '[significance]' = 'W')\n        STYLE\n          COLOR 138 43 226\n          SIZE 3\n          SYMBOL 'circle'\n        END\n        STYLE\n          COLOR 255 255 255\n          SIZE 1\n          SYMBOL 'circle'\n        END\n    END\n    # WW Warning\n    CLASS\n        NAME \"Winter Storm Warn\"\n        EXPRESSION (('[phenomena]' = 'LE' or '[phenomena]' = 'WS' or '[phenomena]' = 'WW') and '[significance]' = 'W')\n        STYLE\n          COLOR   255 105 180\n          SIZE    3\n          SYMBOL  'circle'\n        END\n    END\n    # Sleet Fz\n    CLASS\n        NAME \"Ice/Frz/Sleet Warn\"\n        EXPRESSION (('[phenomena]' = 'IP' or '[phenomena]' = 'HP' or '[phenomena]' = 'ZR' or '[phenomena]' = 'IS') and '[significance]' = 'W')         \n        STYLE\n          COLOR   255 20 147\n          SIZE    3\n          SYMBOL  'circle'\n        END\n    END\n    # Blizzard\n    CLASS\n        NAME \"Blizzard Warn\"\n        EXPRESSION ('[phenomena]' = 'BZ' and '[significance]' = 'W')\n        STYLE\n          COLOR   255 0 0\n          SIZE    3\n          SYMBOL  'circle'\n        END\n    END\n    # Freeze Warning\n    CLASS\n        NAME \"Freeze Warn\"\n        EXPRESSION ('[phenomena]' = 'FZ' and '[significance]' = 'W')\n        STYLE\n          COLOR   255 0 0\n          SIZE    3\n          SYMBOL  'circle'\n        END\n    END\n    # Marine Statement?\n    CLASS\n        NAME \"Marine Statement\"\n        EXPRESSION ('[phenomena]' = 'MA' and '[significance]' = 'S')\n        STYLE\n          COLOR   0 200 0\n          SIZE    3\n          SYMBOL  'circle'\n        END\n    END\nEND\n\n# Bar Header Bar!\nLAYER\n  NAME bar640t\n  TYPE POLYGON\n  TRANSFORM FALSE\n  STATUS OFF\n  FEATURE\n    POINTS 0 0 0 36 640 36 640 0 0 0 END\n  END\n  LABELCACHE FALSE\n  CLASS\n    STYLE\n      COLOR 0 0 0\n    END\n  END\nEND\n\nLAYER\n  NAME \"n0q-ramp\"\n  TYPE POINT\n  STATUS default\n  TRANSFORM FALSE\n  CLASS\n    LABEL\n    END\n    STYLE\n      SYMBOL 'n0q-ramp'\n      COLOR 0 0 0\n    END\n  END\nEND\n\n# IEM Logo\nLAYER\n  NAME logo\n  TYPE POINT\n  STATUS default\n  TRANSFORM FALSE\n  FEATURE\n    WKT \"POINT(100 100)\"\n  END\n  CLASS\n    STYLE\n      SYMBOL 'iem_logo'\n    END\n  END\nEND\n\nLAYER\n  NAME \"n0r-ramp\"\n  TYPE POINT\n  STATUS default\n  TRANSFORM FALSE\n  CLASS\n    LABEL\n    END\n    STYLE\n      SYMBOL 'n0r-ramp'\n      COLOR 0 0 0\n    END\n  END\nEND\n\n"
  },
  {
    "path": "data/gis/lsrs.mapinc",
    "content": "LAYER\n  CONNECTIONTYPE postgis\n  NAME lsrs\n  CONNECTION \"user=nobody dbname=postgis host=iemdb-postgis.local\"\n  DATA \"geom from (select distinct city, magnitude, valid, geom, type as ltype, city || magnitude || x(geom) || y(geom) as k from lsrs WHERE valid > 'YESTERDAY'::timestamp) as foo USING unique k USING SRID=4326 \"\n  STATUS OFF\n  TYPE POINT\n  PROJECTION\n   \"init=epsg:4326\"\n  END\n  CLASSITEM \"ltype\"\n  CLASS\n    EXPRESSION /W/\n    TEXT 'WATERSPOUT'\n    LABEL\n      OUTLINECOLOR 0 0 0\n      COLOR 255 255 255\n      TYPE BITMAP\n      SIZE MEDIUM\n      POSITION AUTO\n      PARTIALS FALSE\n    END\n    STYLE\n      COLOR 255 255 255\n      SYMBOL 'tornado'\n      SIZE 10\n    END\n  END\n  CLASS\n    EXPRESSION /G/\n    TEXT 'G[magnitude] MPH'\n    LABEL\n      OUTLINECOLOR 0 0 0\n      COLOR 255 255 255\n      TYPE BITMAP\n      SIZE MEDIUM\n      POSITION AUTO\n      PARTIALS FALSE\n    END\n    STYLE\n      COLOR 255 255 255\n      SYMBOL 'circle'\n      SIZE 10\n    END\n  END\n  CLASS\n    EXPRESSION /M/\n    TEXT 'G[magnitude] MPH'\n    LABEL\n      OUTLINECOLOR 0 0 0\n      COLOR 255 255 255\n      TYPE BITMAP\n      SIZE MEDIUM\n      POSITION AUTO\n      PARTIALS FALSE\n    END\n    STYLE\n      COLOR 255 255 255\n      SYMBOL 'circle'\n      SIZE 10\n    END\n  END\n  CLASS\n    EXPRESSION /T/\n    TEXT 'TORNADO [magnitude]'\n    LABEL\n      OUTLINECOLOR 0 0 0\n      COLOR 255 255 255\n      TYPE BITMAP\n      SIZE MEDIUM\n      POSITION AUTO\n      PARTIALS FALSE\n    END\n    STYLE\n      COLOR 255 255 255\n      SYMBOL 'tornado'\n      SIZE 10\n    END\n  END\n  CLASS\n    EXPRESSION /R/\n    TEXT 'HEAVY RAIN [magnitude]'\n    LABEL\n      OUTLINECOLOR 0 0 0\n      COLOR 255 255 255\n      TYPE BITMAP\n      SIZE MEDIUM\n      POSITION AUTO\n      PARTIALS FALSE\n    END\n    STYLE\n      COLOR 255 255 255\n      SYMBOL 'circle'\n      SIZE 10\n    END\n  END\n  CLASS\n    EXPRESSION /F/\n    TEXT 'FLASH FLOOD'\n    LABEL\n      OUTLINECOLOR 0 0 0\n      COLOR 255 255 255\n      TYPE BITMAP\n      SIZE MEDIUM\n      POSITION AUTO\n      PARTIALS FALSE\n    END\n    STYLE\n      COLOR 255 255 255\n      SYMBOL 'circle'\n      SIZE 10\n    END\n  END\n  CLASS\n    EXPRESSION /H/\n    TEXT 'HAIL [magnitude]'\n    LABEL\n      OUTLINECOLOR 0 0 0\n      COLOR 255 255 255\n      TYPE BITMAP\n      SIZE MEDIUM\n      POSITION AUTO\n      PARTIALS FALSE\n    END\n    STYLE\n      COLOR 255 255 255\n      SYMBOL 'triangle'\n      SIZE 10\n    END\n  END\n  CLASS\n    EXPRESSION /S/\n    TEXT 'SNOW [magnitude]inch'\n    LABEL\n      OUTLINECOLOR 0 0 0\n      COLOR 255 255 255\n      TYPE BITMAP\n      SIZE MEDIUM\n      POSITION AUTO\n      PARTIALS FALSE\n    END\n    STYLE\n      COLOR 255 255 255\n      SYMBOL 'circle'\n      SIZE 7\n    END\n  END\n  CLASS\n    EXPRESSION /5/\n    TEXT 'ICE [magnitude]inch'\n    LABEL\n      OUTLINECOLOR 0 0 0\n      COLOR 255 255 255\n      TYPE BITMAP\n      SIZE MEDIUM\n      POSITION AUTO\n      PARTIALS FALSE\n    END\n    STYLE\n      COLOR 255 255 255\n      SYMBOL 'circle'\n      SIZE 7\n    END\n  END\n  CLASS\n    EXPRESSION /D/\n    TEXT 'WND DMG [city]'\n    LABEL\n      OUTLINECOLOR 0 0 0\n      COLOR 255 255 255\n      TYPE BITMAP\n      SIZE MEDIUM\n      POSITION AUTO\n      PARTIALS FALSE\n    END\n    STYLE\n      COLOR 255 255 255\n      SYMBOL 'triangle'\n      SIZE 10\n    END\n  END\nEND\n"
  },
  {
    "path": "data/gis/meta/26914.prj",
    "content": "PROJCS[\"NAD_1983_UTM_Zone_14N\",GEOGCS[\"GCS_North_American_1983\",DATUM[\"D_North_American_1983\",SPHEROID[\"GRS_1980\",6378137.0,298.257222101]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"False_Easting\",500000.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",-99.0],PARAMETER[\"Scale_Factor\",0.9996],PARAMETER[\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]]"
  },
  {
    "path": "data/gis/meta/26915.prj",
    "content": "PROJCS[\"NAD_1983_UTM_Zone_15N\",GEOGCS[\"GCS_North_American_1983\",DATUM[\"D_North_American_1983\",SPHEROID[\"GRS_1980\",6378137.0,298.257222101]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"False_Easting\",500000.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",-93.0],PARAMETER[\"Scale_Factor\",0.9996],PARAMETER[\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]]"
  },
  {
    "path": "data/gis/meta/5070.prj",
    "content": "PROJCS[\"NAD_1983_Contiguous_USA_Albers\",GEOGCS[\"GCS_North_American_1983\",DATUM[\"D_North_American_1983\",SPHEROID[\"GRS_1980\",6378137.0,298.257222101]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Albers\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",-96.0],PARAMETER[\"Standard_Parallel_1\",29.5],PARAMETER[\"Standard_Parallel_2\",45.5],PARAMETER[\"Latitude_Of_Origin\",23.0],UNIT[\"Meter\",1.0]]"
  },
  {
    "path": "data/gis/meta/current_ww.shp.xml",
    "content": "<?xml version=\"1.0\"?>\r\n<!--<!DOCTYPE metadata SYSTEM \"http://www.esri.com/metadata/esriprof80.dtd\">-->\r\n<metadata xml:lang=\"en\"><Esri><MetaID>{FE96CD88-E2E3-4F1F-80D8-3DA8C64033D4}</MetaID><CreaDate>20080625</CreaDate><CreaTime>11070300</CreaTime><SyncOnce>FALSE</SyncOnce><SyncDate>20080625</SyncDate><SyncTime>11173200</SyncTime><ModDate>20080625</ModDate><ModTime>11232900</ModTime></Esri><idinfo><native>Red Hat Enterprise Linux 5; PostGIS</native><descript><langdata Sync=\"TRUE\">en</langdata><abstract>Shapefile of National Weather Service issued short and long fuse watch/warning/advisories.  This file is by no means complete, but covers most of the high impact weather statements.</abstract><purpose>Provide GIS users with something usable without worry about parsing lots of nasty text formats :)</purpose></descript><citation><citeinfo><origin>REQUIRED: The name of an organization or individual that developed the data set.</origin><pubdate>REQUIRED: The date when the data set is published or otherwise made available for release.</pubdate><title>Current Watch Warnings</title><ftname Sync=\"TRUE\">current_ww</ftname><geoform Sync=\"TRUE\">vector digital data</geoform><onlink Sync=\"TRUE\">\\\\AKRHERZ-VM222\\C$\\Documents and Settings\\akrherz\\Desktop\\IEM\\current_ww.shp</onlink></citeinfo></citation><timeperd><current>publication date</current><timeinfo><sngdate><caldate>unknown</caldate></sngdate></timeinfo></timeperd><status><progress>In work</progress><update>Continually</update></status><spdom><bounding><westbc Sync=\"TRUE\">-112.700000</westbc><eastbc Sync=\"TRUE\">-66.566666</eastbc><northbc Sync=\"TRUE\">48.645798</northbc><southbc Sync=\"TRUE\">18.150459</southbc></bounding><lboundng><leftbc Sync=\"TRUE\">-112.700000</leftbc><rightbc Sync=\"TRUE\">-66.566666</rightbc><bottombc Sync=\"TRUE\">18.150459</bottombc><topbc Sync=\"TRUE\">48.645798</topbc></lboundng></spdom><keywords><theme><themekt>unknown</themekt><themekey>warnings, nws</themekey></theme></keywords><accconst>None</accconst><useconst>None</useconst><natvform Sync=\"TRUE\">Shapefile</natvform><ptcontac><cntinfo><cntperp><cntper>Daryl Herzmann</cntper><cntorg>Iowa State University</cntorg></cntperp><cntpos>Assistant Scientist</cntpos><cntvoice>515 294 5978</cntvoice><cntemail>akrherz@iastate.edu</cntemail></cntinfo></ptcontac><datacred>National Weather Service</datacred><secinfo><secclass>Unclassified</secclass></secinfo></idinfo><dataIdInfo><envirDesc Sync=\"TRUE\">Microsoft Windows XP Version 5.1 (Build 2600) Service Pack 3; ESRI ArcCatalog 9.2.4.1420</envirDesc><dataLang><languageCode Sync=\"TRUE\" value=\"en\"></languageCode></dataLang><idCitation><resTitle Sync=\"TRUE\">current_ww</resTitle><presForm><PresFormCd Sync=\"TRUE\" value=\"005\"></PresFormCd></presForm></idCitation><spatRpType><SpatRepTypCd Sync=\"TRUE\" value=\"001\"></SpatRepTypCd></spatRpType><dataExt><geoEle><GeoBndBox esriExtentType=\"native\"><westBL Sync=\"TRUE\">-112.7</westBL><eastBL Sync=\"TRUE\">-66.566666</eastBL><northBL Sync=\"TRUE\">48.645798</northBL><southBL Sync=\"TRUE\">18.150459</southBL><exTypeCode Sync=\"TRUE\">1</exTypeCode></GeoBndBox></geoEle></dataExt><geoBox esriExtentType=\"decdegrees\"><westBL Sync=\"TRUE\">-112.7</westBL><eastBL Sync=\"TRUE\">-66.566666</eastBL><northBL Sync=\"TRUE\">48.645798</northBL><southBL Sync=\"TRUE\">18.150459</southBL><exTypeCode Sync=\"TRUE\">1</exTypeCode></geoBox></dataIdInfo><metainfo><langmeta Sync=\"TRUE\">en</langmeta><metstdn Sync=\"TRUE\">FGDC Content Standards for Digital Geospatial Metadata</metstdn><metstdv Sync=\"TRUE\">FGDC-STD-001-1998</metstdv><mettc Sync=\"TRUE\">local time</mettc><metc><cntinfo><cntorgp><cntper>REQUIRED: The person responsible for the metadata information.</cntper><cntorg>REQUIRED: The organization responsible for the metadata information.</cntorg></cntorgp><cntaddr><addrtype>REQUIRED: The mailing and/or physical address for the organization or individual.</addrtype><city>REQUIRED: The city of the address.</city><state>REQUIRED: The state or province of the address.</state><postal>REQUIRED: The ZIP or other postal code of the address.</postal></cntaddr><cntvoice>REQUIRED: The telephone number by which individuals can speak to the organization or individual.</cntvoice></cntinfo></metc><metd Sync=\"TRUE\">20080625</metd><metextns><onlink Sync=\"TRUE\">http://www.esri.com/metadata/esriprof80.html</onlink><metprof Sync=\"TRUE\">ESRI Metadata Profile</metprof></metextns></metainfo><mdLang><languageCode Sync=\"TRUE\" value=\"en\"></languageCode></mdLang><mdStanName Sync=\"TRUE\">ISO 19115 Geographic Information - Metadata</mdStanName><mdStanVer Sync=\"TRUE\">DIS_ESRI1.0</mdStanVer><mdChar><CharSetCd Sync=\"TRUE\" value=\"004\"></CharSetCd></mdChar><mdHrLv><ScopeCd Sync=\"TRUE\" value=\"005\"></ScopeCd></mdHrLv><mdHrLvName Sync=\"TRUE\">dataset</mdHrLvName><distinfo><resdesc Sync=\"TRUE\">Downloadable Data</resdesc><stdorder><digform><digtinfo><transize Sync=\"TRUE\">0.500</transize><dssize Sync=\"TRUE\">0.500</dssize></digtinfo></digform></stdorder></distinfo><distInfo><distributor><distorTran><onLineSrc><orDesc Sync=\"TRUE\">002</orDesc><linkage Sync=\"TRUE\">file://\\\\AKRHERZ-VM222\\C$\\Documents and Settings\\akrherz\\Desktop\\IEM\\current_ww.shp</linkage><protocol Sync=\"TRUE\">Local Area Network</protocol></onLineSrc><transSize Sync=\"TRUE\">0.500</transSize></distorTran><distorFormat><formatName Sync=\"TRUE\">Shapefile</formatName></distorFormat></distributor></distInfo><spdoinfo><direct Sync=\"TRUE\">Vector</direct><ptvctinf><esriterm Name=\"current_ww\"><efeatyp Sync=\"TRUE\">Simple</efeatyp><efeageom Sync=\"TRUE\">Polygon</efeageom><esritopo Sync=\"TRUE\">FALSE</esritopo><efeacnt Sync=\"TRUE\">137</efeacnt><spindex Sync=\"TRUE\">FALSE</spindex><linrefer Sync=\"TRUE\">FALSE</linrefer></esriterm><sdtsterm Name=\"current_ww\"><sdtstype Sync=\"TRUE\">G-polygon</sdtstype><ptvctcnt Sync=\"TRUE\">137</ptvctcnt></sdtsterm></ptvctinf></spdoinfo><spref><horizsys><cordsysn><geogcsn Sync=\"TRUE\">GCS_North_American_1983</geogcsn></cordsysn><geograph><geogunit Sync=\"TRUE\">Decimal degrees</geogunit><latres Sync=\"TRUE\">0.000000</latres><longres Sync=\"TRUE\">0.000000</longres></geograph><geodetic><horizdn Sync=\"TRUE\">North American Datum of 1983</horizdn><ellips Sync=\"TRUE\">Geodetic Reference System 80</ellips><semiaxis Sync=\"TRUE\">6378137.000000</semiaxis><denflat Sync=\"TRUE\">298.257222</denflat></geodetic></horizsys></spref><refSysInfo><RefSystem><refSysID><identCode Sync=\"TRUE\">GCS_North_American_1983</identCode></refSysID></RefSystem></refSysInfo><spatRepInfo><VectSpatRep><topLvl><TopoLevCd Sync=\"TRUE\" value=\"001\"></TopoLevCd></topLvl><geometObjs Name=\"current_ww\"><geoObjTyp><GeoObjTypCd Sync=\"TRUE\" value=\"001\"></GeoObjTypCd></geoObjTyp><geoObjCnt Sync=\"TRUE\">137</geoObjCnt></geometObjs></VectSpatRep></spatRepInfo><eainfo><detailed Name=\"current_ww\"><enttyp><enttypl Sync=\"TRUE\">current_ww</enttypl><enttypt Sync=\"TRUE\">Feature Class</enttypt><enttypc Sync=\"TRUE\">137</enttypc></enttyp><attr><attrlabl Sync=\"TRUE\">FID</attrlabl><attalias Sync=\"TRUE\">FID</attalias><attrtype Sync=\"TRUE\">OID</attrtype><attwidth Sync=\"TRUE\">4</attwidth><atprecis Sync=\"TRUE\">0</atprecis><attscale Sync=\"TRUE\">0</attscale><attrdef Sync=\"TRUE\">Internal feature number.</attrdef><attrdefs Sync=\"TRUE\">ESRI</attrdefs><attrdomv><udom Sync=\"TRUE\">Sequential unique whole numbers that are automatically generated.</udom></attrdomv></attr><attr><attrlabl Sync=\"TRUE\">Shape</attrlabl><attalias Sync=\"TRUE\">Shape</attalias><attrtype Sync=\"TRUE\">Geometry</attrtype><attwidth Sync=\"TRUE\">0</attwidth><atprecis Sync=\"TRUE\">0</atprecis><attscale Sync=\"TRUE\">0</attscale><attrdef Sync=\"TRUE\">Feature geometry.</attrdef><attrdefs Sync=\"TRUE\">ESRI</attrdefs><attrdomv><udom Sync=\"TRUE\">Coordinates defining the features.</udom></attrdomv></attr><attr><attrlabl Sync=\"TRUE\">ISSUED</attrlabl><attalias Sync=\"TRUE\">ISSUED</attalias><attrtype Sync=\"TRUE\">String</attrtype><attwidth Sync=\"TRUE\">12</attwidth></attr><attr><attrlabl Sync=\"TRUE\">EXPIRED</attrlabl><attalias Sync=\"TRUE\">EXPIRED</attalias><attrtype Sync=\"TRUE\">String</attrtype><attwidth Sync=\"TRUE\">12</attwidth></attr><attr><attrlabl Sync=\"TRUE\">TYPE</attrlabl><attalias Sync=\"TRUE\">TYPE</attalias><attrtype Sync=\"TRUE\">String</attrtype><attwidth Sync=\"TRUE\">2</attwidth></attr><attr><attrlabl Sync=\"TRUE\">GTYPE</attrlabl><attalias Sync=\"TRUE\">GTYPE</attalias><attrtype Sync=\"TRUE\">String</attrtype><attwidth Sync=\"TRUE\">1</attwidth></attr><attr><attrlabl Sync=\"TRUE\">SIG</attrlabl><attalias Sync=\"TRUE\">SIG</attalias><attrtype Sync=\"TRUE\">String</attrtype><attwidth Sync=\"TRUE\">1</attwidth></attr></detailed></eainfo><mdDateSt Sync=\"TRUE\">20080625</mdDateSt></metadata>\r\n"
  },
  {
    "path": "data/gis/roads.mapinc",
    "content": "LAYER\n  CONNECTIONTYPE postgis\n  NAME \"roads\"\n  CONNECTION \"user=nobody dbname=postgis host=iemdb-postgis.local\"\n  DATA \"geom from (select b.type as rtype, b.int1, random() as boid, b.segid, c.cond_code, b.geom from roads_base b, roads_current c WHERE b.segid = c.segid and b.type > 1 ORDER by b.segid DESC) as foo using UNIQUE boid using SRID=26915\"\n  STATUS OFF\n  TYPE LINE\n  METADATA\n    \"wfs_title\" \"Iowa Non-Interstates Conditions\"\n    \"wms_title\" \"Iowa Non-Interstates Conditions\"\n    \"wms_srs\"   \"EPSG:4326 EPSG:26915 EPSG:3857\"\n  END\n  #FILTER \"expire > CURRENT_TIMESTAMP and gtype = 'C'\"\n  PROJECTION\n   \"init=epsg:26915\"\n  END\n  TEMPLATE \"roadsq.html\"\n  LABELCACHE ON\n  CLASS\n    NAME 'normal'\n    EXPRESSION ([cond_code] = 0 or [cond_code] = 76)\n    STYLE\n      COLOR 153 153 153\n      SIZE 5\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR 0 0 0\n      WIDTH 3\n      ANTIALIAS TRUE\n    END\n  END\n  CLASS\n    NAME 'wet'\n    EXPRESSION ([cond_code] = 1)\n    STYLE\n      COLOR 0 0 0\n      SIZE 5\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR 0 204 0\n      WIDTH 3\n      ANTIALIAS TRUE\n    END\n  END\n  CLASS\n    NAME 'frost'\n    EXPRESSION ([cond_code] >= 3 and [cond_code] <= 14)\n    STYLE\n      COLOR 0 0 0\n      SIZE 5\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR  240 240 0\n      WIDTH 3\n      ANTIALIAS TRUE\n    END\n  END\n  CLASS\n    NAME 'closed'\n    EXPRESSION ([cond_code] = 86)\n    STYLE\n      COLOR 250 250 0\n      WIDTH 7\n      ANTIALIAS TRUE\n    END\n    STYLE\n      COLOR 230 0 0\n      SIZE 5\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR  250 250 0\n      SIZE 3\n      SYMBOL 'fill45'\n    END\n  END\n  CLASS\n    NAME 'not advised'\n    EXPRESSION ([cond_code] = 51)\n    STYLE\n      COLOR 0 0 0\n      SIZE 5\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR  232 95 1\n      WIDTH 3\n      ANTIALIAS TRUE\n    END\n  END\n  # SLUSH!\n  CLASS\n    NAME 'pc-mix'\n    EXPRESSION ([cond_code] = 56 or [cond_code] = 27 or [cond_code] = 15)\n    STYLE\n      COLOR 0 0 0\n      SIZE 5\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR 255 197 197\n      WIDTH 3\n      ANTIALIAS TRUE\n    END\n  END\n  CLASS\n    NAME 'mc-mix'\n    EXPRESSION ([cond_code] = 60 or [cond_code] = 31 or [cond_code] = 19)\n    STYLE\n      COLOR 0 0 0\n      SIZE 5\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR 254 51 153\n      WIDTH 3\n      ANTIALIAS TRUE\n    END\n  END\n  CLASS\n    NAME 'cc-mix'\n    EXPRESSION ([cond_code] = 64 or [cond_code] = 35 or [cond_code] = 23)\n    STYLE\n      COLOR 0 0 0\n      SIZE 5\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR 181 0 181\n      WIDTH 3\n      ANTIALIAS TRUE\n    END\n  END\n # Snow!\n  CLASS\n    NAME 'pc-snow'\n    EXPRESSION ([cond_code] = 39)\n    STYLE\n      COLOR 0 0 0\n      SIZE 5\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR  153 255 255\n      WIDTH 3\n      ANTIALIAS TRUE\n    END\n  END\n  CLASS\n    NAME 'mc-snow'\n    EXPRESSION ([cond_code] = 43)\n    STYLE\n      COLOR 0 0 0\n      SIZE 5\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR  0 153 254\n      WIDTH 3\n      ANTIALIAS TRUE\n    END\n  END\n  CLASS\n    NAME 'cc-snow'\n    EXPRESSION ([cond_code] = 47)\n    STYLE\n      COLOR 0 0 0\n      SIZE 5\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR  0 0 158\n      WIDTH 3\n      ANTIALIAS TRUE\n    END\n  END\n\n#  CLASS\n#    NAME 'others'\n#    STYLE\n#      COLOR 255 255 0\n#      WIDTH 3\n#      ANTIALIAS TRUE\n#    END\n#  END\n  TOLERANCE 50\nEND\n\n#____________________\n#  We label interstates a bit larger!\n#\nLAYER\n  CONNECTIONTYPE postgis\n  NAME \"roads-inter\"\n  CONNECTION \"user=nobody dbname=postgis host=iemdb-postgis.local\"\n  DATA \"geom from (select b.type as rtype, b.int1, random() as boid, b.segid, c.cond_code, b.geom from roads_base b, roads_current c WHERE b.segid = c.segid and b.type = 1 ORDER by b.segid DESC) as foo using UNIQUE boid using SRID=26915\"\n  STATUS OFF\n  TYPE LINE\n  METADATA\n    \"wfs_title\" \"Iowa Interstates Conditions\"\n    \"wms_title\" \"Iowa Interstates Conditions\"\n    \"wms_srs\"   \"EPSG:4326 EPSG:26915 EPSG:3857\"\n  END\n  #FILTER \"expire > CURRENT_TIMESTAMP and gtype = 'C'\"\n  PROJECTION\n   \"init=epsg:26915\"\n  END\n  TEMPLATE \"roadsq.html\"\n  LABELCACHE ON\n  CLASS\n    NAME 'normal'\n    EXPRESSION ([cond_code] = 0 or [cond_code] = 76)\n    STYLE\n      COLOR 220 220 220\n      SIZE 7\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR 0 0 0\n      WIDTH 5\n      ANTIALIAS TRUE\n    END\n  END\n  CLASS\n    NAME 'wet'\n    EXPRESSION ([cond_code] = 1)\n    STYLE\n      COLOR 220 220 220\n      SIZE 7\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR 0 204 0\n      WIDTH 5\n      ANTIALIAS TRUE\n    END\n  END\n  CLASS\n    NAME 'frost'\n    EXPRESSION ([cond_code] >= 3 and [cond_code] <= 14)\n    STYLE\n      COLOR 220 220 220\n      SIZE 7\n      SYMBOL 'circle'\n    END\n    STYLE\n      #COLOR  152 152 152\n      COLOR  240 240 0\n      WIDTH 5\n      ANTIALIAS TRUE\n    END\n  END\n\n  CLASS\n    NAME 'closed-int'\n    EXPRESSION ([cond_code] = 86)\n    STYLE\n      COLOR 250 250 0\n      WIDTH 7\n      ANTIALIAS TRUE\n    END\n    STYLE\n      COLOR 230 0 0\n      SIZE 5\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR  250 250 0\n      SIZE 3\n      SYMBOL 'fill45'\n    END\n  END\n  CLASS\n    NAME 'not advised'\n    EXPRESSION ([cond_code] = 51)\n    STYLE\n      COLOR 220 220 220\n      SIZE 7\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR  232 95 1\n      WIDTH 5\n      ANTIALIAS TRUE\n    END\n  END\n  # SLUSH!\n  CLASS\n    NAME 'pc-mix'\n    EXPRESSION ([cond_code] = 56 or [cond_code] = 27 or [cond_code] = 15)\n    STYLE\n      COLOR 0 0 0\n      SIZE 7\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR 255 197 197\n      WIDTH 5\n      ANTIALIAS TRUE\n    END\n  END\n  CLASS\n    NAME 'mc-mix'\n    EXPRESSION ([cond_code] = 60 or [cond_code] = 31 or [cond_code] = 19)\n    STYLE\n      COLOR 0 0 0\n      SIZE 7\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR 254 51 153\n      WIDTH 5\n      ANTIALIAS TRUE\n    END\n  END\n  CLASS\n    NAME 'cc-mix'\n    EXPRESSION ([cond_code] = 64 or [cond_code] = 35 or [cond_code] = 23)\n    STYLE\n      COLOR 0 0 0\n      SIZE 7\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR 181 0 181\n      WIDTH 5\n      ANTIALIAS TRUE\n    END\n  END\n  CLASS\n    NAME 'snow'\n    EXPRESSION ([cond_code] = 39)\n    STYLE\n      COLOR 220 220 220\n      SIZE 7\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR  153 255 255\n      WIDTH 5\n      ANTIALIAS TRUE\n    END\n  END\n  CLASS\n    NAME 'snow'\n    EXPRESSION ([cond_code] = 43)\n    STYLE\n      COLOR 220 220 220\n      SIZE 7\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR  0 153 254\n      WIDTH 5\n      ANTIALIAS TRUE\n    END\n  END\n  CLASS\n    NAME 'snow'\n    EXPRESSION ([cond_code] = 47)\n    STYLE\n      COLOR 220 220 220\n      SIZE 7\n      SYMBOL 'circle'\n    END\n    STYLE\n      COLOR  0 0 158\n      WIDTH 5\n      ANTIALIAS TRUE\n    END\n  END\n\n\n  TOLERANCE 50\nEND\n"
  },
  {
    "path": "data/gis/stations.sym",
    "content": "SYMBOLSET\n\n SYMBOL\n   NAME 'circle'\n   TYPE ELLIPSE\n   Filled TRUE\n   POINTS 1 1 END\n END\n\n\n SYMBOL\n   TYPE vector\n   POINTS\n    0 0\n    6 6\n   END\n END\nSYMBOL\n  NAME 'fill45'\n  TYPE Ellipse\n  FILLED TRUE\n  POINTS\n   1 1\n  END\n#  STYLE 1 5 END\nEND\nSYMBOL\n  NAME \"triangle\"\n  TYPE vector\n  POINTS\n    0 4\n    2 0\n    4 4\n    0 4\n  END\nEND\n\nSYMBOL\n  NAME \"tornado\"\n  TYPE vector\n  FILLED TRUE\n  POINTS\n   0 0\n   2 4\n   4 0\n   0 0\n  END\nEND\t\t\t\n\nSymbol\n  Name 'airplane'\n  Type PIXMAP\n  Image 'images/airplane.png'\n  Transparent 0\nEND\n\nSymbol\n  Name 'airplane_yellow'\n  Type PIXMAP\n  Image 'images/airplane_yellow.png'\n  Transparent 0\nEND\n\nSymbol\n  Name 'water'\n  Type PIXMAP\n  Image 'images/water.png'\n  Transparent 0\nEND\nSymbol\n  Name 'schoolhouse'\n  Type PIXMAP\n  Image 'images/schoolhouse.png'\n  Transparent 1\nEND\nSymbol\n  Name 'nws'\n  Type PIXMAP\n  Image 'images/nws.png'\n  Transparent 0\nEND\nSymbol\n  Name 'cyclone'\n  Type PIXMAP\n  Image 'images/cyclone.png'\n  Transparent 18\nEND\nSymbol\n  Name 'nrcs'\n  Type PIXMAP\n  Image 'images/nrcs.png'\n  Transparent 0\nEND\nSymbol\n  Name 'roadcond'\n  Type PIXMAP\n  Image 'images/roadcond.png'\nEND\n\nSymbol\n  Name 'n0r-ramp'\n  Type PIXMAP\n  Image 'images/n0r-ramp.png'\nEND\n\nSymbol\n  Name 'n0q-ramp'\n  Type PIXMAP\n  Image 'images/n0q-ramp.png'\n  Transparent 0\nEND\n\n\n\n    Symbol\n      Name 'interstate_shield'\n      Type PIXMAP\n      Image 'interstate-2.png'\n      Transparent 0\n    END\n\n    Symbol\n      Name 'us_highway_shield'\n      Type PIXMAP\n      Image 'images/ushwy.png'\n      Transparent 1\n    END\n\n    Symbol\n      Name 'state_highway_shield'\n      Type PIXMAP\n      Image 'images/sthwy.png'\n    END \n\n    Symbol\n      Name 'county_highway_shield'\n      Type PIXMAP\n      Image 'images/ctyhwy.png'\n      Transparent 0\t\n    END\n\n    Symbol\n      Name 'x'\n      Type PIXMAP\n      Image 'images/x.png'\n      Transparent 1\t\n    END\n\n    Symbol\n      Name 'kcci8'\n      Type PIXMAP\n      Image 'images/kcci8.png'\n#      Transparent 1\n    END\n\nSymbol\n  NAME 'iem_logo'\n  TYPE PIXMAP\n  IMAGE 'images/iem_logo.png'\n  TRANSPARENT 0\nEND\n    Symbol\n      Name 'nws_logo'\n      Type PIXMAP\n      Image 'images/nws.png'\n      Transparent 0\n    END\n\n\n\n\n    Symbol\n      Name 'doppler8'\n      Type PIXMAP\n      Image 'images/doppler8.png'\n      Transparent 253\n    END\n\nSymbol\n Name 'kcci-lsd2007'\n Type PIXMAP\n Image 'images/kcci-lsd2007.png'\n Transparent 0\nEND\n\nSymbol\n  Name 'clrbar'\n  Type PIXMAP\n  Image 'images/clrbar.png'\n  Transparent 17\nEND\n\nEND\n"
  },
  {
    "path": "data/gis/symbols/stations.sym",
    "content": "SYMBOLSET\n SYMBOL\n   NAME 'circle'\n   TYPE ELLIPSE\n   Filled TRUE\n   POINTS 1 1 END\n END\n\n\n SYMBOL\n   TYPE vector\n   POINTS\n    0 0\n    6 6\n   END\n END\n\nSYMBOL\n  NAME \"triangle\"\n  TYPE vector\n  Filled TRUE\n  POINTS\n    0 4\n    2 0\n    4 4\n    0 4\n  END\nEND\n\nSYMBOL\n  NAME \"tornado\"\n  TYPE vector\n  FILLED TRUE\n  POINTS\n   0 0\n   2 4\n   4 0\n   0 0\n  END\nEND\t\t\t\n\nSymbol\n  Name 'airplane'\n  Type PIXMAP\n  Image 'images/airplane.png'\n  Transparent 0\nEND\n\nSymbol\n  Name 'precip'\n  Type PIXMAP\n  Image 'bars/rainbow2.png'\n  #Transparent 0\nEND\n\n\nSymbol\n  Name 'airplane_yellow'\n  Type PIXMAP\n  Image 'images/airplane_yellow.png'\n  Transparent 0\nEND\n\nSymbol\n  Name 'water'\n  Type PIXMAP\n  Image 'images/water.png'\n  Transparent 0\nEND\nSymbol\n  Name 'schoolhouse'\n  Type PIXMAP\n  Image 'images/schoolhouse.png'\n  Transparent 1\nEND\nSymbol\n  Name 'nws'\n  Type PIXMAP\n  Image 'images/nws.png'\n  Transparent 0\nEND\nSymbol\n  Name 'cyclone'\n  Type PIXMAP\n  Image 'images/cyclone.png'\n  Transparent 18\nEND\nSymbol\n  Name 'nrcs'\n  Type PIXMAP\n  Image 'images/nrcs.png'\n  Transparent 0\nEND\n\n\n\n    Symbol\n      Name 'interstate_shield'\n      Type PIXMAP\n      Image 'interstate-2.png'\n      Transparent 0\n    END\n\n    Symbol\n      Name 'us_highway_shield'\n      Type PIXMAP\n      Image 'images/ushwy.png'\n      Transparent 1\n    END\n\n    Symbol\n      Name 'state_highway_shield'\n      Type PIXMAP\n      Image 'images/sthwy.png'\n    END \n\n    Symbol\n      Name 'county_highway_shield'\n      Type PIXMAP\n      Image 'images/ctyhwy.png'\n      Transparent 0\t\n    END\n\n    Symbol\n      Name 'x'\n      Type PIXMAP\n      Image 'images/x.png'\n      Transparent 1\t\n    END\n\n    Symbol\n      Name 'kcci8'\n      Type PIXMAP\n      Image 'images/kcci8.png'\n#      Transparent 1\n    END\n\n    Symbol\n      Name 'iem_logo'\n      Type PIXMAP\n      Image 'images/iem_logo.png'\n      Transparent 0\n    END\n\n\n\n    Symbol\n      Name 'doppler8'\n      Type PIXMAP\n      Image 'images/doppler8.png'\n      Transparent 253\n    END\n\nSymbol\n  Name 'clrbar'\n  Type PIXMAP\n  Image 'images/clrbar.png'\n  Transparent 17\nEND\nEND\n"
  },
  {
    "path": "deployment/iem-tilecache.service",
    "content": "[Unit]\nDescription=IEM TileCache Gunicorn backend (/c and /cache)\nAfter=network.target\nBefore=httpd.service\n\n[Service]\nType=simple\nUser=apache\nEnvironment=PATH=/opt/miniconda3/envs/prod/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin\nExecStartPre=/usr/bin/test -x /opt/miniconda3/envs/prod/bin/gunicorn\nExecStartPre=/usr/bin/test -x /opt/iem/deployment/start_tc_wsgi.sh\nExecStart=/opt/iem/deployment/start_tc_wsgi.sh\nRestart=on-failure\nRestartSec=5\nSyslogIdentifier=iem-tc\nStandardOutput=syslog\nStandardError=syslog\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "deployment/start_tc_wsgi.sh",
    "content": "#!/bin/bash\n# Start the dedicated Gunicorn backend for TileCache (/c and /cache).\n#\n# Mirrors the legacy iemwsgi_tc daemon sizing while moving the Python app\n# server off Apache.\n\nPORT=${1:-9081}\nCONDA_PREFIX=/opt/miniconda3/envs/prod\nMAX_REQUESTS=${MAX_REQUESTS:-10000000}\nMAX_REQUESTS_JITTER=${MAX_REQUESTS_JITTER:-5000}\n\n# Use the conda env's binaries directly rather than relying on interactive\n# shell activation (systemd runs non-interactive shells).\nexport PATH=\"${CONDA_PREFIX}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin\"\n\n# Attempt to get some logging when bad things happen\nexport PYTHONFAULTHANDLER=1\n\n# Keep request-count recycling enabled to cap Python memory leaks. Gunicorn\n# rotates individual workers instead of restarting an embedded Apache stack.\nexec \"${CONDA_PREFIX}/bin/gunicorn\" \\\n        --bind \"127.0.0.1:${PORT}\" \\\n        --no-control-socket \\\n        --workers 3 \\\n        --worker-class gthread \\\n        --threads 15 \\\n        --backlog 2048 \\\n        --pythonpath /opt/iem/pylib/ \\\n        --max-requests \"$MAX_REQUESTS\" \\\n        --max-requests-jitter \"$MAX_REQUESTS_JITTER\" \\\n        --timeout 60 \\\n        --graceful-timeout 60 \\\n        --error-logfile - \\\n        --capture-output \\\n        --log-level warn \\\n        --log-syslog \\\n        --log-syslog-facility local1 \\\n        iemweb.tilecache_dispatch:application\n"
  },
  {
    "path": "deployment/symlink_manager.py",
    "content": "\"\"\"Attempt to manage the disaster that is IEM symlinking\"\"\"\n\nfrom pathlib import Path\n\nfrom pyiem.util import logger\n\nLOG = logger()\n\n# LINK , TARGET\nM2 = \"/mnt/mesonet2\"\nPAIRS = [\n    [\"/mesonet/data/merra2\", f\"{M2}/data/merra2\"],\n    [\"/mesonet/nawips\", f\"{M2}/gempak\"],\n    [\"/mesonet/wepp\", f\"{M2}/idep\"],\n    [\"/mesonet/ARCHIVE/gempak\", f\"{M2}/longterm/gempak\"],\n    [\"/mesonet/ARCHIVE/raw\", f\"{M2}/longterm/raw\"],\n    [\"/mesonet/ARCHIVE/rer\", f\"{M2}/ARCHIVE/rer\"],\n    [\"/mesonet/data/conus404\", f\"{M2}/data/conus404\"],\n    [\"/mesonet/data/dotcams\", f\"{M2}/data/dotcams\"],\n    [\"/mesonet/data/era5\", f\"{M2}/data/era5\"],\n    [\"/mesonet/data/era5_china\", f\"{M2}/data/era5_china\"],\n    [\"/mesonet/data/era5_europe\", f\"{M2}/data/era5_europe\"],\n    [\"/mesonet/data/era5_sa\", f\"{M2}/data/era5_sa\"],\n    [\"/mesonet/data/gempak\", f\"{M2}/data/gempak\"],\n    [\"/mesonet/data/iemre\", f\"{M2}/data/iemre\"],\n    [\"/mesonet/data/iemre_china\", f\"{M2}/data/iemre_china\"],\n    [\"/mesonet/data/iemre_europe\", f\"{M2}/data/iemre_europe\"],\n    [\"/mesonet/data/iemre_sa\", f\"{M2}/data/iemre_sa\"],\n    [\"/mesonet/data/prism\", f\"{M2}/data/prism\"],\n    [\"/mesonet/data/incoming\", f\"{M2}/data/incoming\"],\n    [\"/mesonet/data/madis\", f\"{M2}/data/madis\"],\n    [\"/mesonet/data/model\", f\"{M2}/data/model\"],\n    [\"/mesonet/data/mrms\", f\"{M2}/data/mrms\"],\n    [\"/mesonet/data/ndfd\", f\"{M2}/data/ndfd\"],\n    [\"/mesonet/data/nldas\", f\"{M2}/data/nldas\"],\n    [\"/mesonet/data/smos\", f\"{M2}/data/smos\"],\n    [\"/mesonet/data/stage4\", f\"{M2}/data/stage4\"],\n    [\"/mesonet/data/text\", f\"{M2}/data/text\"],\n    [\"/mesonet/ldmdata\", f\"{M2}/ldmdata\"],  # May fail if node writes data\n    [\"/mesonet/share/cases\", f\"{M2}/share/cases\"],\n    [\"/mesonet/share/climodat\", f\"{M2}/share/climodat\"],\n    [\"/mesonet/share/features\", f\"{M2}/share/features\"],\n    [\"/mesonet/share/iemmaps\", f\"{M2}/share/iemmaps\"],\n    [\"/mesonet/share/lapses\", f\"{M2}/share/lapses\"],\n    [\"/mesonet/share/pickup\", f\"{M2}/share/pickup\"],\n    [\"/mesonet/share/pics\", f\"{M2}/share/pics\"],\n    [\"/mesonet/share/present\", f\"{M2}/share/present\"],\n    [\"/mesonet/share/usage\", f\"{M2}/share/usage\"],\n    [\"/mesonet/share/windrose\", f\"{M2}/share/windrose\"],\n    [\"/mesonet/home\", f\"{M2}/home\"],\n]\n\n\ndef workflow(link: Path, target: Path):\n    \"\"\"Do things\"\"\"\n    if not target.exists():\n        LOG.info(\"ERROR: link target: %s is not found\", target)\n        return\n    if not link.is_symlink() and link.is_dir():\n        LOG.info(\"ERROR: symlink: %s is already a directory!\", link)\n        return\n    if link.is_symlink():\n        oldtarget = link.resolve()\n        if oldtarget == target:\n            return\n        link.unlink()\n    LOG.info(\"%s -> %s\", link, target)\n    link.symlink_to(target)\n\n\ndef main():\n    \"\"\"Go Main\"\"\"\n    # Ensure some base folders exist\n    for mysubdir in [\"share\", \"ARCHIVE\", \"data\"]:\n        path = Path(\"/mesonet\") / Path(mysubdir)\n        if not path.is_dir():\n            path.mkdir(parents=True)\n    # Quasi dynamic generation of /mesonet/ARCHIVE/data/YYYY links\n    if not Path(\"/mesonet/ARCHIVE/data\").is_dir():\n        Path(\"/mesonet/ARCHIVE/data\").mkdir(parents=True)\n    for year in range(1893, 2015):\n        link = Path(\"/mesonet/ARCHIVE/data\") / str(year)\n        target = Path(f\"/mnt/archive32/ARCHIVE/data/{year}\")\n        workflow(link, target)\n    for year in range(2015, 2019):\n        link = Path(\"/mesonet/ARCHIVE/data\") / str(year)\n        target = Path(f\"/mnt/archive5/ARCHIVE/data/{year}\")\n        workflow(link, target)\n    for year in range(2019, 2024):\n        link = Path(\"/mesonet/ARCHIVE/data\") / str(year)\n        target = Path(f\"/mnt/archive32/ARCHIVE/data/{year}\")\n        workflow(link, target)\n    for year in range(2024, 2025):\n        link = Path(\"/mesonet/ARCHIVE/data\") / str(year)\n        target = Path(f\"/mnt/archive5/ARCHIVE/data/{year}\")\n        workflow(link, target)\n    for year in range(2025, 2027):\n        link = Path(\"/mesonet/ARCHIVE/data\") / str(year)\n        target = Path(f\"/mnt/archive33/ARCHIVE/data/{year}\")\n        workflow(link, target)\n\n    for link, target in PAIRS:\n        workflow(Path(link), Path(target))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "docs/datasets/afos.md",
    "content": "## <a name=\"afos\"></a> NWS Text Product Archive\n\n### Summary\n\nThis archive consists of raw ASCII text products issued by the National\nWeather Service.  Some places on the website will refer to this as \"AFOS\", which\nis an archaic old abbreviation associated with this dataset.  The realtime source\nof this dataset is the processing of text products sent over the NOAAPort SBN, but\narchives have been backfilled based on what exists at NCEI and also some archives\nprovided by the University of Wisconsin.\n\n* __Download Interface__: [IEM On-Demand](https://mesonet.agron.iastate.edu/wx/afos/)\n* __Spatial Domain__: Generally US NWS Offices that issue text products.\n* __Temporal Domain__: Some data back to 1996, but archive quality and completeness\ngreatly improves for dates after 1998.\n\n### Justification for processing\n\nWhile the Internet provides many places to view current NWS Text Products, archives of these are much more difficult to find.  One of the primary goals of the IEM website is to maintain stable URLs, so when links are generates to NWS Text Products, they need to work into the future!  Many of these text products have very useful information in them for researchers and others in the public.\n\n### Other Sources of Information\n\nThe [NCEI Site](https://www.ncei.noaa.gov) would be an authoritative source, but their archives of this data are very painful to work with.  There are a number of other sites that have per-UTC day files with some text products included.  For example [Oklahoma Mesonet](https:/mesonet.org/data/public/noaa/text/archive/).\n\n### Processing and Quality Control\n\nGenerally, some quality control is done to ensure that the data is ASCII format and not filled with control characters.  There are also checks that product timestamps are sane and represent a timestamp that is close to reality.  For example over the NOAAPort SBN feed, there is about one product per day that is a misfire or some other error that is not allowed to be inserted into the database.\n\nThis database culls some of the more frequently issued text products.  The reason being to save space and some of the text products are not very appropriate for long term archives.  The most significant deletion are the SHEF products, which would overwhelm my storage system if I attempted to save the data! [The script](https://github.com/akrherz/iem/blob/main/scripts/dbutil/clean_afos.py) that does the database culling each day contains the exact AWIPS IDs used for this cleaning.\n\n### <a name=\"faq\"></a> Frequently Asked Questions\n\n1. How can I bulk download the data?\n\nSadly, this is not well done at the moment.  The [WX AFOS](https://mesonet.agron.iastate.edu/wx/afos/) is about the best option as it has a \"Download Text\" button.\n\n2. Please describe any one-offs within the archive?\n\nThe `RRM` product is generally SHEF and thus was culled from the database to conserve space.\nAn IEM user requested that this product be retained, so the culling of it stopped on 31\nMarch 2023.  So this product's archive only dates back till then.\n"
  },
  {
    "path": "docs/datasets/climodat.md",
    "content": "## <a name=\"climodat\"></a> IEM Climodat Reports and Data\n\n### Summary\n\nThis document describes the once daily climate dataset that provides observations and estimates of high and low temperature, precipitation, snowfall, and snow depth.  Parts of this dataset have been curated over the years by a number of Iowa State employees including Dr Shaw, Dr Carlson, and Dr Todey.\n\n* __Download Interface__: [IEM On-Demand](https://mesonet.agron.iastate.edu/request/coop/fe.phtml)\n* __Spatial Domain__: United States\n* __Temporal Domain__: varies by station\n* __Variables Provided__: Once daily high and low temperature, precipitation, snowfall, snow depth\n\n### Justification for processing\n\nThe most basic and important long term climate record are the once daily reports of high and low temperature along with precipitation and sometimes snow.  The most commonly asked question of the IEM datasets are climate related, so curating a long-term dataset of daily observations is necessary.\n\n### Other Sources of Information\n\nA great source of much of the same type of data is [Regional Climate Centers ACIS](http://www.rcc-acis.org/).  The complication when comparing IEM Climodat data to other sources is the difference in station identifiers used.  The history of station identifiers is long and complicated.  The National Center for Environmental Information (NCEI) has made strides in attempting to straighten the identifiers out.  This continues to be complicated as the upstream data source of information uses a completely different set of identifiers known as National Weather Service Location Identifiers (NWSLI), which are different than what NCEI or the IEM uses for our climate datasets.\n\n### Processing and Quality Control\n\nThere is nothing easy or trivial about processing or quality control of this dataset. After decades of work, plenty of issues remain.  Having human observers be the primary driver of this dataset is both a blessing and a curse.  The good aspects include the archive dating back to the late 1800s for some locations and relatively high data quality.  The bad aspects include lots of metadata issues due to observation timing, station moves, and equipment siting.\n\nThe primary data source for this dataset is the National Weather Service COOP observers.  These reports come to the IEM over a variety of paths:\n\n* Realtime reports found in NWS SHEF Text Products, processed in realtime by the IEM\n* Via manually downloaded data archives provided by NCEI\n* Via web services provided by RCC ACIS\n\nThe merging of these four datasets creates a bit of a nightmare to manage.\n\nSnowfall and snow depth data is always problematic.  First, lets clarify what the terms mean.  \"Snowfall\" is the amount of snow that fell from the sky over the previous 24 hour period.  \"Snow depth\" is the amount of snow measured to be on the ground due to previous snowfalls.  These numbers may sometimes contradict with snowfall amounts being larger than snow depth due to melting and/or compaction.  Care should be used when analyzing the snowfall and snow depth reports.\n\n### <a name=\"faq\"></a> Frequently Asked Questions\n\n1. This data contains 'Statewide' and 'Climate District' observations, where do they come from?\n\n    The IEM produces gridded analyses of observed variables.  A GIS-style weighted spatial sampling is done from this grid to derive averaged values over geographies like states and climate districts.  Of course, when you average something like precipitation over a large area, you end up with rates that are lower than peak station rates and also with more precipitation events than individual stations within the region.\n\n1. The download provides only a date, what time period does this represent?\n\n    Almost always, this date *does not* represent a local calendar date's worth of data.  This date represents the date on which the observation was taken.  Typically, this observation is taken at about 7 AM and so represents a 24 hour period prior to 7 AM.  Explicitly providing the time of observation is a future and necessary enhancement to this dataset, but just tricky to do.  Some observation locations have switched times over the years and some even observe 24 hour precipitation totals at a different time than the temperature values.  Nothing is ever easy with this dataset...\n\n1. Where does the radiation data come from?\n\n    The NWS COOP Network does not provide observations of daily solar radiation, but this variable is extremely important to many folks that use this information for modelling.  As a convience, the IEM processes a number of reanalysis datasets and produces point sampling from the gridded information to provide \"daily\" radiation totals.  A major complication is that the 'daily' COOP observations are typically at 7 AM and the gridded solar radiation data is extracted on close to a local calendar day basis.  In general, the 7 AM value is for the previous day.\n\n1. Where does the non-radiation data come from?\n\n    This information is primarily driven by the realtime processing of NWS COOP observations done by the IEM.  For data older than the past handful of years, it is taken from the NCEI databases and now the ACIS web services.  Some manual work is done to meld the differences in site identifiers used between the various online resources.\n\n1. How do I know which variables have been estimated and which are observations?\n\n    The download interface for this dataset provides an option to include a flag for which observations have estimated temperatures or precipitation.  Presently, a general flag is provided for both high and low temperature and no flag is provided for the snowfall and snow depth information.\n"
  },
  {
    "path": "docs/datasets/iemre.md",
    "content": "## <a name=\"iemre\"></a> IEM Reanalysis\n\n### Summary\n\nThe IEM Reanalysis dataset is a daily gridded product combining a number of\ndatasets into one product hopefully void of missing values.  In some cases,\ndata is interpolated and in other cases, the data is resampled from another\ngrid.  Keeping the workflow doing is a daily challenge due to changes in various\ninput datasets and quirks with datasets over time.\n\n* __Download Interface__: [IEM On-Demand](https://mesonet.agron.iastate.edu/iemre/)\n* __Spatial Domain__: ...\n* __Temporal Domain__: ...\n\n### Justification for processing\n\nA consistent and complete gridded analysis enables many downstream products and\napplications.  Single point observations are of higher quality, but often have\ngaps and their representativity varies depending on many factors.\n\nThere are many alternative sources available today with similiar data, but it is\ngood to have a product under IEM workflow control that is not subject to outages\nand data service dropouts.  For example, government shutdowns.\n\n### Other Sources of Information\n\nThere are many. NARR, ERA5, and the list goes on.\n\n### Processing and Quality Control\n\nTo be written...\n\n### <a name=\"faq\"></a> Frequently Asked Questions\n\n1. When are daily fields updated?\n\n Well, there is a long story!\n\n1. This is another question I have?\n\n Well, there is another story?"
  },
  {
    "path": "docs/datasets/metar.md",
    "content": "## <a name=\"metar\"></a>ASOS/AWOS Global METAR Archives\n\n### Summary\n\nThe primary format that worldwide airport weather station data is reported in is called METAR. This format is somewhat archaic, but well known and utilized in the community.   The data is sourced from a number of places including: [Unidata IDD](https://www.unidata.ucar.edu/projects/#idd), [NCEI ISD](https://www.ncdc.noaa.gov/isd), [MADIS One Minute ASOS](https://madis.ncep.noaa.gov/madis_OMO.shtml), and [NCEI GHCHh](https://www.ncei.noaa.gov/products/global-historical-climatology-network-hourly). The weather stations included are typically called \"Automated Surface Observation System (ASOS)\".  The term \"Automated Weather Observation System (AWOS)\" is often used inter-changably.\n\n* __Download Interface__: [IEM On-Demand](https://mesonet.agron.iastate.edu/request/download.phtml)\n* __Spatial Domain__: Worldwide\n* __Temporal Domain__: 1900-present\n\n### Justification for processing\n\nThe highest quality weather information comes from the ASOS sites.  These stations get routine maintenance, considerable quality control, and is the baseline hourly interval dataset used by all kinds of folks.  The data stream processed by the IEM contains global stations, so extending the ingest to the entire data stream was not significant effort.\n\n### Other Sources of Information\n\n[NCEI Integrated Surface Database (ISD)](https://www.ncdc.noaa.gov/isd) is likely the most authoritative source of this information.\n\n### Processing and Quality Control\n\nA Python based ingestor using the metar package processes this information into the IEM database.\n\n### <a name=\"faq\"></a> Frequently Asked Questions\n\n1. Why is precipitation data all missing / zero for non-US locations?\n\nIt is the IEM's understanding that precipitation is not included in the global data streams due to previous data distribution agreements.  The precipitation data is considered of very high value as it can be used to model and predict the status of agricultural crops in the country.  Such information could push commodity markets.  For the present day, other satellite datasets likely negate some of these advantages, but alas.\n\n2. How are \"daily\" precipitation totals calculated?\n\nIn general, the ASOS stations operate in local standard time for the entire year round. This has some implications with computation of various daily totals as during daylight saving time, the calendar day total will represent a 1 AM to 1 AM local daylight time period.  For the context of this METAR dataset, not all METAR reporting sites will generate a total that can be used for assignment of a calendar day's total.  So the IEM uses a number of approaches to arrive at this total.\n\n* A script manually totals up the hourly precipitation reports and computes a true local calendar day total for the station, this total may later be overwritten by either of the below.\n* A real-time ingest process gleans the daily totals from the Daily Summary Message (DSM) issued by some ASOS sites.\n* A real-time ingest process gleans the daily totals from the Climate Report (CLI) that is issued for some ASOS sites by their respective local NWS Forecast Offfice.\n\nNot all stations have DSM and/or CLI products, so the manual totaling provides a minimum accounting.  The complication is that this total does not cover the same period that a CLI/DSM product does.  So complicated!\n\n3. Please explain the temperature units, storage and processing.\n\nThis is why we can not have nice things.  The following discussion generally applies to the US observation sites.  No matter what you see in various data feeds, the ASOS stations internally store their temperatures in **whole degree Fahrenheit**. The issues happen when the station transmits the data in whole degree Celsius and thus not have enough precision to covert back to Fahrenheit.  For example, if the station observed a 78F temperature and then transmitted a 26C value, that 26C value converts back to 78.8F, which rounds to 79F.  And down the rabbit-hole we go!\n\nThe IEM's archive of ASOS/METAR data comes from 3 main sources and some minor auxillary ones.  The main source is the NOAA satellite feed, called NOAAPort.  This feed provides data in METAR format, so the transmitted units are always whole degree Celsius, but sometimes the METAR `T-group` is included, so there is enough added precision to reliabily convert back to whole degree Fahrenheit.  The IEM's processing attempts to prioritize those METARs that include the `T-group`, so that reliable Fahrenheit storage can occur.\n\nThe next main source is from the MADIS 5-minute ASOS dataset, previously called High Frequency METAR.  This data feed has a significant issue whereby the transmitted data from the FAA to the NWS is only in whole degree Celsius.  Such data can not be reliably converted back to whole degree Fahrenheit.  For this reason, the IEM database stores these values as missing and they are not included in the data download.  BUT, for those that really want this information, these values are included in the IEM-encoded raw METAR string that you can download with the data.  You can find further discussion on this [IEM News Item](https://mesonet.agron.iastate.edu/onsite/news.phtml?id=1290).\n\nThe third main source is from the [NCEI ISD](https://www.ncdc.noaa.gov/isd).  At this time, there are no known issues with the temperature data in this feed being reliable for whole degree Fahrenheit.\n"
  },
  {
    "path": "docs/datasets/template.md",
    "content": "## <a name=\"template\"></a> IEM Template [WIP]\n\n### Summary\n\nThis is...\n\n* __Download Interface__: [IEM On-Demand](https://mesonet.agron.iastate.edu)\n* __Spatial Domain__: ...\n* __Temporal Domain__: ...\n\n### Justification for processing\n\nThis is...\n\n### Other Sources of Information\n\nThis is...\n\n### Processing and Quality Control\n\n\n| First Header  | Second Header |\n| ------------- | ------------- |\n| Content Cell  | Content Cell  |\n| Content Cell  | Content Cell  |\n\n### <a name=\"faq\"></a> Frequently Asked Questions\n\n1. Where does the radiation data come from?\n\n Well, there is a long story!\n\n1. Where does the non-radiation data come from?\n\n Well, ther eis another story?"
  },
  {
    "path": "docs/datasets/vtec.md",
    "content": "# <a name=\"vtec\"></a> NWS Valid Time Extent Code (VTEC) Archives\n\n## Summary\n\nThe National Weather Service uses a rather complex and extensive suite of products and methodologies to issue watch, warnings, and advisories (WWA).  Back in the 1990s and early 2000s, the automated processing of these products was extremely difficult and rife with errors.  To help with automated parsing, the NWS implemented a system called Valid Time Extent Code (VTEC) which provides a more programatic description of what an individual WWA product is doing.  The implementation of began in 2005 and was mostly wrapped up by 2008.  The IEM attempts to do high fidelity processing of this data stream and has a number of Internet unique archives and applications to view this information.\n\n* __Download Interface__: [Shapefile/KML Download](https://mesonet.agron.iastate.edu/request/gis/watchwarn.phtml)\n* __Spatial Domain__: United States, including Guam, Puerto Rico and some other islands\n* __Temporal Domain__: Most WWA types back to 2008 or 2005, an archive of Flash Flood Warnings goes back to 2002 or so, and Tornado / Severe Thunderstorm Warnings goes back to 1986\n\n## Justification for processing\n\nNWS issued WWA alerts are an important environmental hazard dataset and has broad interest in the research and insurance industries.  Even in 2017, there are very few places that you can find long term archives of this information in usable formats.\n\n## Other Sources of Information\n\nThe [National Center for Environmental Information](https://www.ncei.noaa.gov) has raw text product archives that do not contain processed atomic data of the actual WWA alerts.  So the user is left to the adventure of text parsing the products.  Otherwise, it is not clear if any other archive exists on the Internet of this information.\n\n## Processing and Quality Control\n\nThe [pyIEM](https://github.com/akrherz/pyIEM) python package is the primary code that does the text parsing and databasing of the WWA products.  A large number of unit tests exist against the various variations and quirks found with processing the WWA data stream since the mid 2000s.  New quirks and edge cases are still found today with minor corrections made to the archive when necessary.  The IEM continuously alerts and annoys the NWS when various issues are found, hoping to get the NWS to correct their products.  While it has been a long and frustrating process, things do eventually get fixed leading to more robust data archives.\n\nThe pyIEM parsers send emails to the IEM developer when issues are found.  The parser alerts when the following errors are encountered:\n\n* VTEC Event IDs (ETNs) being used that are out of sequential order.\n* Warning product segments are missing or have invalid Universal Geographic Code (UGC) encoding\n* Product segment has invalid VTEC encoding\n* Polygons included in the warning are invalid or counterclockwise\n* Timestamps are formatted incorrectly\n* The UGC / VTEC sequence of a particular product contains logical errors, for example a UGC zone silently drops out or into a warning.\n* Products are expired outside of the acceptable temporal bounds\n* Any other type of error and/or code bug that caused a processing fault\n\n## <a name=\"faq\"></a> Frequently Asked Questions\n\n1. Please fully describe the schema used within the downloaded shapefiles.\n\n    Grab some coffee and headache medicine as I am going to try to explain how the IEM processes these events into the database.  The first concept to understand is that when the NWS issues a Watch, Warning, Advisory (WaWA) event, this event undergoes a lifecycle.  The NWS can issue updates that modify the start and end times of the event and the spatial extent of the event.  They can also do upgrades on the event, for example moving from a watch into a warning.  The IEM database does not necessary fully document the event's lifecycle, but provides the metadata for the last known state of the event.\n\n    For the context of IEM provided shapefiles, here is a discussion of what each DBF column represents.  We will go into an example afterwards attempting to illustrate what each column means.\n\n    But first, the timestamps.  The presented timestamps are always in UTC timezone.  The timestamp is represented by a 12 character string in the form of year, month, day, 24-hour,minute.  To my knowledge, there is no timestamp data type in DBF, so this is the pain we have to live with.\n\n    | DBF Column  | Type | Description |\n| ------------- | ------------- | ----- |\n| WFO | 3 Char | This is the three character NWS Office/Center identifier.  For CONUS locations, this is the 4 character ID dropping the first `K`.  For non-CONUS sites, this is the identifier dropping the `P`. |\n| ISSUED  | 12 Char | This timestamp represents the start time of the event.  When an event's lifecycle begins, this issued value can be updated as the NWS issues updates.  The value presented represents the last known state of the event start time.|\n| EXPIRED  | 12 Char  | Similiar to the ISSUED column above, this represents the products event end time.  Again, this value is updated as the event lifecycle happens with updates made by the NWS. |\n| INIT_ISS | 12 Char | This is timestamp of the NWS Text Product that started the event.  This timestamp is important for products like Winter Storm Watch, which have a begin time a number of days/hours into the future, but are typically considered to be in effect at the time of the text product issuace.  Yeah, this is where the headaches start.  This timestamp can also be used to form a canonical URL back to the IEM to fetch the raw NWS Text for this event. It is __not__ updated during the event's lifecycle. |\n| INIT_EXP | 12 Char | Similiar to `INIT_ISS` above, this is the expiration of the event denoted with the first issuance of the event.  It is __not__ updated during the event's lifecycle. |\n| PHENOM or TYPE | 2 Char | This is the two character NWS identifier used to denote the VTEC event type.  For example, `TO` for Tornado and `SV` for Severe Thunderstorm.  A lookup table of these codes exists [within pyiem library](https://github.com/akrherz/pyIEM/blob/main/src/pyiem/nws/vtec.py). |\n| SIG | 1 Char | This is the one character NWS identifier used to denote the VTEC significance.  The same link above for `PHENOM` has a lookup table for these. |\n| GTYPE | 1 Char | Either `P` for polygon or `C` for county/zone/parish.  The shapefiles you download could contain both so-called storm-based (polygon) events and traditional county/zone based events. |\n| ETN | Int | The VTEC event identifier.  A tracking number that should be unique for this event, but sometimes it is not.  Yes, more headaches. Note that the uniqueness is not based on the combination of a UGC code, but the issuance center and a continuous spatial region for the event. |\n| STATUS | 3 Char | The VTEC status code denoting the state the event is during its life cycle.  This is purely based on any updates the event got and not some logic on the IEM's end denoting if the event is in the past or not. |\n| NWS_UGC | 6 Char | For county,zone,parish warnings `GTYPE=C`, the Universal Geographic Code that the NWS uses.  Sadly, this is not exactly FIPS. |\n| AREA_KM2 | Number | The IEM computed area of this event, this area computation is done in Albers (EPSG:9311). |\n| UPDATED | 12 Char | The timestamp when this event's lifecycle was last updated by the NWS. |\n| HV_NWSLI | 5 Char | For events that have H-VTEC (Hydro VTEC), this is the five character NWS Location Identifier. |\n| HV_SEV | 1 Char | For events that have H-VTEC (Hydro VTEC), this is the one character flood severity __at issuance__. |\n| HV_CAUSE | 2 Char | For events that have H-VTEC (Hydro VTEC), this is the two character cause of the flood. |\n| HV_REC | 2 Char | For events that have H-VTEC (Hydro VTEC), this is the code denoting if a record crest is expected __at issuance__. |\n| EMERGENC | Boolean | Based on unofficial IEM logic, is this event an \"Emergency\" at any point during its life cycle. |\n| POLY_BEG | 12 Char | In the case of polygons (GTYPE=P) the UTC timestamp that the polygon is initially valid for. |\n| POLY_END | 12 Char | In the case of polygons (GTYPE=P) the UTC timestamp that the polygon expires at. |\n| HAILTAG | Number | The IBW hail size tag (inches).  This is only included with the (GTYPE=P) entries as there is a 1 to 1 association between the tags and the polygons.  If you do not include SVS updates, it is just the issuance tag. |\n| WINDTAG | Number | The IBW wind gust tag (MPH).  See HAILTAG. |\n| TORNTAG | 16 Char | The IBW tornado tag.  See HAILTAG. |\n| DAMAGTAG | 16 Char | The IBW damage tag. See HAILTAG. |\n| PROD_ID | 36 Char | Issuance text. IEM identifier used to uniquely (99% of the time) identify NWS Text Products. The value can be passed to ``https://mesonet.agron.iastate.edu/p.php?pid=PROD_ID`` for a website viewer or against the IEM API service ``https://mesonet.agron.iastate.edu/api/1/nwstext/PROD_ID``. |\n| FCSTER | 24 Char | The product signature, which is often the forecaster who\nissued the event. |\n\n1. I notice entires with an `expire` timestamp before the `issue` timestamp. How can this be?\n\n    Oh my, buckle up for some confusion.  The first point in this space is that our database\n    represents the most recent snapshot of the given VTEC event during its life cycle.  The\n    life cycle includes the issuance to its death via a cancels, expiration, or\n    upgrade to a different VTEC event.\n\n    To illustrate the evolution of the database fields with a VTEC event lifecycle,\n    please consider this example.  At noon on 19 March 2019, NWS Des Moines `wfo=DMX` issues a Winter Storm Watch `phenom=WS` `sig=A` for Story County (`nws_ugc=IAZ048`). This watch goes into effect at 6 PM (tomorrow, 20 March) until 6 AM 21 March.  The storm is a day away yet... The database entry looks like so:\n\n    | STATUS | ISSUE | INIT_ISS | EXPIRE | INIT_EXP |\n| --- | --- | --- | --- | --- |\n| NEW | 201903202300 | 201903171700 | 201903211100 | 201903211100 |\n\n    Now tomorrow comes and the NWS needs to decide what to do with the watch prior to 6 PM, since these type of\n    watches can not reach their issuance time without either being cancelled or upgraded.  So at 5 PM, the NWS\n    decides to issue a Winter Storm Warning.  Now the database entry for the __watch__ looks like so:\n\n    | STATUS | ISSUE | INIT_ISS | EXPIRE | INIT_EXP |\n| --- | --- | --- | --- | --- |\n| UPG | 201903202300 | 201903171700 | __201903202200__ | 201903211100 |\n\n    See how the `EXPIRE` column is now less than the `ISSUE` column, but the `INIT_ISS` and `INIT_EXP` columns\n    are unchanged to hopefully help the end user deal with this situation.  You have life choices to make on\n    how to deal with this situation.\n\n    In general, the watch _practically_ is in effect once the NWS issued it, regardless of when the actual bad\n    weather is going to start.  So the recommendation is to use the `INIT_ISS` column as the watch start time\n    and the `EXPIRE` as the watch end time, but this logic is totally at your discretion.\n\n1. How do Severe Thunderstorm, Flash Flood, or Tornado warnings have VTEC codes for dates prior to implementation?\n\n    Good question!  A number of years ago, a kind NWS manager provided a database dump of their curated WWA archive for dates between 1986 and 2005.  While not perfect, this archive was the best/only source that was known at the time.  The IEM did some logic processing and attempted to back-compute VTEC ETNs for this archive of warnings.  The database was atomic to a local county/parish, so some logic was done to merge multiple counties when they spatially touched and had similiar issuance timestamps.  Again from the above, automated machine parsing of the raw text is next to impossible.  The ETNs were assigned as a convience so that various IEM apps and plots would present this data online.\n\n1. The database has Weather Forecast Offices (WFOs) issuing WWA products for dates prior to the office even existing?  How can this be!?!?\n\n    Yeah, this is somewhat poor, but was done to again provide some continuity with current day operations.  The archive database provided to the IEM did not contain the issuance forecast office, so without a means to properly attribute these, the present day WFOs were used.  This issue is rarely raised by IEM users, but it is good to document.  Maybe someday, a more authoritative archive will be made and these old warnings and be assigned to the various WSOs, etc that existed at the time.\n\n1. What are the VTEC phenomena and significance codes?\n\n    The phenomena code (two characters) and significance code (one character) denote the particular WWA hazzard at play with the product. The [NWS VTEC Site](https://www.weather.gov/vtec/) contains a one pager PDF that documents these codes.  The NWS uses these codes to color encode their WAWA Map found on their homepage.  You can find a lookup reference table of these codes and colors, [see pyiem library](https://github.com/akrherz/pyIEM/blob/main/src/pyiem/nws/vtec.py).\n\n1. How do polygon warnings exist in the IEM archive prior to being official?\n\n    The NWS offices started experimenting with polygons beginning in 2002.  These polygons were included with the warnings, but sometimes were not geographically valid and/or leaked well outside of a local office's CWA bounds.  On 1 October 2007, these polygons became the official warning for some VTEC types.  In general, the IEM's data ingestor attempts to save these polygons whenever found.\n\n1. What is the source of Alaska Marine VTEC events?\n\n    For various convoluted reasons, Alaska WFOs do not issue full blown VTEC\n    enabled products for their Marine Zones.  Instead, somewhat cryptic headlines\n    are generated within their `CWF` and `OFF` products that create faked VTEC\n    events for their marine zones.  On 4 January 2025, the IEM created a workflow\n    that attempts to process these into somewhat spatial/temporally coherent\n    VTEC events.  At the time, an evaluation was done on a similar fake VTEC\n    generation that was being done by the NWS within its CAP messages.  This was\n    found to be lacking due to very crude event identifier generation.\n\n    So the IEM processing runs in real-time and these events were backfilled into\n    years dating back to 2005. Further back processing was not straight forward\n    due to complexities with the raw text.\n\n    Some processing quirks include VTEC events are not permitted to cross year\n    boundaries and there is no \"in the future\" logic that attempts to glean from\n    the text if the given event is not yet active.  Rewording, if the `CWF` or\n    `OFF` text says \"Gale Warning\", the assumption is that the \"Gale Warning\" is\n    now in effect.\n"
  },
  {
    "path": "docs/deployment/vendor-static-assets.md",
    "content": "# Vendor Static Assets Deployment\n\nThis document explains how assets under /vendor/ are provided to the webroot.\n\n## Why This Exists\n\nA number of IEM maintained repos use common javascript / CSS libraries.  Since\nit is nice to do offline development and for patching, a simple github vendor\nrepo is maintained and synced to /opt/vendor within the webfarm nodes.\n\n## Source of Truth\n\n- Upstream repo: [akrherz/vendor](https://github.com/akrherz/vendor)\n- Version pinning policy: None\n- Integrity/verification policy: None\n\n## Provisioning Model\n\n1. The github repo is cloned to /opt/vendor\n2. That same repo contains an apache configuration snippet that mounts the\n   repo to answer /vendor/ URLs within other repos.\n\n## Validation\n\nIt is safe for code review to assume resources are properly references with\n/vendor/ mounted URI paths.\n"
  },
  {
    "path": "docs/meetings.md",
    "content": "Assorted Meeting Notes\n=====\n\n14 Jan 2020 Dr Takle, Iowa Climate Assessment\n----\n\n- Seeking to have first Iowa specific climate assessment report made\n- Just to note that Iowa is one of the few states without sig orography\n- maps can be of trends in the 9 climate regions\n- orography allows us to downscale more easily (?)\n- [ ] would like to see some sort of humidity variable in climodat\n- review Indiana's well done assessment\n- Seek a report on Iowa's current human health related to climate\n- would be nice to talk some about ozone, but am unsure of data sources\n\n30 Aug 2018 Monsanto\n-----\n\n- Taylor, Todey, Arritt, Dohleman, Colman\n- 10-11 Oct in St Louis is the ag-mesonets workshop\n- Dicamba label says to not spray in an inversion\n- when forecast probabilities are <10% or >90%, accuracy is 93%\n- code for spraying app is in the public domain\n- sprayer height is 24 inches above canopy\n- spraying in the morning goes with the probabilities, not so in afternoon\n- app has some spraying metadata management help\n- does logging of the pin drops exist, likely not\n- hours below temperature per year would be helpful\n- wind speed does not fully descriminate inversion presence\n\n29 Mar 2016 Syngenta Discussion at Slater\n----\n\n- Joe Colleti, Bill Bevis, Kendall Lamkey, Joe Byrun, Greg Dudan, Homer Coden\nJosh Larson, Paul Travis, Danny Sign, Jim Reece, Tom Warner, Chad Geater\nCraig Davis, Mike Lorsan, Caroline Lawrence, James Coyle\n- Conference calls left off with need to resolve access and mechanics of how\nthis would work out.\n- Syngenta has roughtly relationships with 15-20 Universities per 12-18 months\n- Never known transfer of actual data to another university though\n- Discussion about what the NSF funded midwest data hub looks like\n- It has 8 spokes, one of which is digitial Ag, another is Food, Energy, Water\n- The hub has the hope of collaborating with industry partners\n- the hub is a blanket umbrella for other projects to get funded with\n- The IP rights of such a collaboration are not necessarily defaulted to ISU\n- The hope is to get the lawyers to approve of this activity only once\n- There are two proposals in consideration as a part of the data hub spoke\n- USDA has a new foundation called FAR to fund stuff\n- NSF proposal cycle has deadlines for next Jan, Feb\n- the hope is that these proposals would be coming from blessing by the hub\nspokes and not rouge proposals\n- There are always proposal deadlines for things to consider\n- There are collaboration opportunities withe computer engineering and others\nto deal with computational tasks\n- Need to have a means to lure faculty into this that may have an interest\n- Syngenta has interest in persuing external funding\n- We'll be having breakouts today to further discuss things\n- I went to the Environmental Data Group with Joe Colleti and Chad Geater\n- Field weather stations have standard variables\n- They use gridded 0.25 degree data from the ECMWF (proprietary)\n- need to tease out drought tolerance variables from obs\n- unsure what exists for soybean data\n- a recent push was to push for GPS coordinates on all their data\n- Unsure what management data exists\n- they may have some soil temperature data\n- an issue is finding agreement between environmental datasets\n- Data needed depends on the science, or is it vice versa\n- A key aspect is where the compute runs that has to access the data\n- Likely can not determine logistics today\n- Not all of their data is relational, in fact, likely not even a majority\n- What is the quality of metadata?\n- They are working on data tagging.\n- Some of the datasets have changes in how the data was observed over the years\n- Would it be good to embed people within each institution to help with this\ncollaboration?\n- A vast majority of the data would take effort to move and curate, not ready\n- Lots of data already exists, no energy to start processing it\n- Cateloging the data is a big time sync\n- talk about a project called G2F taking field measurements\n- G2F is having good luck with standardizing protocols\n- Need to make sure questions being posed are not redundant between groups\n- There is a some NSF data hub meeting on May 15-16\n- Do ISU corn and soybean faculty currently collaborate?  Sort of.\n- Not everybody at ISU is into team science :)\n- Talk about the structure of an ISU / Syngenta symposium\n"
  },
  {
    "path": "docs/nmp.md",
    "content": "National Mesonet Project Meetings\n======\n\n25 Jan 2017 SGT Conference call at AMS Seattle\n----\n\n- Background of SGT, primarly with NASA (400 out of 550m $US)\n- South Alabama Mesonet presentation\n- Florida AWN presented some details on their network\n- reliability reports are not on calendar months, but period of days\n- adding new stations does not mean an immediate increase in funding\n"
  },
  {
    "path": "docs/soilmoisture.md",
    "content": "Soil Moisture Network Meeting Notes\n===================================\n\n17 May 2021 :: Planning with new hire Mark\n-----\n\n- [x] \"Hourly Radiation\" on pulldown is vague.\n- [ ] Frozen Soil on Sortable Currents is in poor taste.\n- There's a new Fruit + Vegetable hire coming, which may take over vineyards.\n- Decided to barry the soilvue to 12 inches depth and place a reflectometer\nat the 4inch depth.\n- [ ] no close icon on the popup for homepage map\n- [x] daily precip plotting does not work\n\n13 Jan 2020 :: Planning meeting with Dr Lamkey\n----\n\n- Continued desire to get time with the farm managers\n- Dr Honeyman appears to be onboard with 1/2 weather station replacement\n- \"Redesign Iowa Agriculture\" is a theme to hit on.\n- Small companies in Iowa are the ones that will use our data the most.\n- Look into what the Iowa Flood Center is doing for water table obs.\n- Discussion of proposing 6 positions for the Iowa Weather Network.\n- Should also target livestock industry in the state.\n- [ ] remove the county colors from the map.\n- [ ] only show stations on the map that have longer term data?\n- [ ] look into the 1977 drought in Story County.\n- Make plots of heat index and stress changes over the years.\n\n17 Dec 2019 :: Meeting with Dr Lamkey\n----\n\n- Weather data is important to Ag Research and we need to emphasis that.\n- Dr Lamkey discussed replacing Ethan with Dr Honeyman, who is on board.\n- There is experiment station money that needs to be spent on research.\n- Dr Lamkey would like to see more monetization of the IEM.\n- Discussion of previous inversion station efforts.\n- [ ] create a one pager describing the usage of IEM/ISUSM\n- Will provide the one pager to the Dean, who may wish to promote it.\n- Dr Lamkey wishes we not concentrate on implementation, but request a budget.\n- People think NOAA stations are enough, one pager to show otherwise.\n- Discussion of new Dr Taylor position and how that may work out.\n- Tie in Climate Smart Ag.\n- Loop in USCRN?\n- Have a grad student do research / station maintenance next summer.\n\n15 Aug 2019 :: Vineyard Station Meeting\n----\n\n- Jim Schraeder uses my stuff a bunch already\n- [ ] Send some example ISU Farm cooperator agreements for their review\n- Kenny McCabe installed the stations and still is on campus somewhere\n- [ ] product they use is hours of wetness per week\n- [ ] add comments to excel headers for easier usage\n\n7 Feb 2018\n----\n\n- Hornbuckle, Flory, Ethan, Vanloocke\n- Add vineyard station modems to the quote\n- Add cooperator stations modems to the quote\n- place the 6 Dr Todey sensors on 3 towers to replicate current towers\n- Maybe our inversion station is slightly over 5K\n- Campbell will announce pricing soon on the SoilVue10\n\n23 Jan 2018\n----\n\n- Hornbuckle, Flory, Ethan, Vanloocke\n- Discussion on budgeting the $36K we have to spend on the sensors\n  1 need to replace the modems\n  2 need to buy some parts for Ethan\n  3 Inversion stations with target of 5K per station\n- [ ] daryl writes up the proposal and gives options needed.\n\n20 Mar 2017\n----\n\n- Archontoulis, Goode, Ethan, KenP(Nashua), VanLoocke, Berns, Taylor, Flory\n- Mark Honeyman was unable to attend\n- The remaining vineyard station modems are in Flory's Office\n- Discussion on what to do with the precipitation sensors and if we should\nadd a second at each site.  Will be adding a second at AEA Farm to test\n- [ ] Need to make a correction to Sutherland's precip in 2013\n- [ ] convert yieldfx reports back to a basis of COOP data\n- Dr Taylor noted that proximity to power lines help shield the stations\nfrom lightning\n- [ ] engage Dr Honeyman again about automating precip report for farm sites\nthat don't do COOP reporting\n\n25 Aug 2016\n-----\n\n- Tim Goode, Mark Honeyman, Ethan, Archontoulis, VanLoocke, Arritt, Cochran\n- Lots of discussion on the 5 vineyard stations, some highlights\n- currently in boxes, purchased in June\n- would like to spread them out over the state\n- have leaf wetness sensors\n- They will likely not be under bare soil\n- discussion on how these stations can be used for frost protection(?), this\n  was not fully clear to me, but it would involve some aux forecast data\n- the soils are high pH, but not necessily sandy\n- they have the same cell modems\n- still have to resolve where they are putting soil moisture sensors\n- [x] email Flory and gauge interest on this matter\n- discussion of placing a new sensor on a farm of interest NE of Ames\n- is the new station at Marcus too close to others?\n\n29 Jun 2016\n----\n\n- Tim Goode, Mark Honeyman, Ethan, Flory, Archontoulis, Taylor, Vanloocke.\n  Arritt\n- Dr Honeyman has a draft agreement that was worked on with legal council\nfor the sites that are on private farms\n- Dr Taylor expressed a need to start replacing the wind sensors soon\n- He has a spot in mind (Marcus, IA) for the current unused station\n- Discussion about how soil moisture calibration is done in Oklahoma and\nhow we could apply it here\n- They take two samples down to 5ft and then do gravimetric\n- Dr Taylor believes that we don't need per-site logger program calibrations\nof the sensors, errors are within 2%\n- Flory is going to look into multiplexors\n- [ ] daryl's TODO item on replacing winter precip was discussed again\n- Voted to have a bare soil requirement, Dr Honeyman will email out the group\n- We can likely increase the reporting interval as the timing and bandwidth\nexists\n- The door was opened again for having the Hort/Vineyard stations join the\nnetwork\n- Discussion on what the Iowa Flood Center is deploying for soil moisture\nstations.\n\n9 Jun 2016\n----\n\n- Tim Goode, Mark Honeyman, Ethan, Flory, Archontoulis, Lamkey\n- Discussion of the new vineyard stations and likely not to include them at\nthis time\n- I raised the need for 5-15 minute data and was wondering about the cell\nphone bill and if it could support more frequent data\n- Need to look into a legal aggreement with the private farm weather stations\nas the lat/lons are published for them\n- Need to decide if bare soil would be maintained for sites for the 4 inch\nsensor.\n- Need coefficients for each site so to get accurate soil moisture data\n- perhaps the soil moisture data should be removed from the website until\nthis issue is resolved...\n- [ ] daryl should implement a replacement of the winter time precip so to\nallow for more complete data\n- [x] change the alerting threshold for offline alerts as they are being\nignored by others\n- Ethan is funded 100% now from Experiment Station, so can work on this\n- [ ] create electronic version of the checklist for stations to do\n- Email Tim and Ethan on issues at the same time.\n"
  },
  {
    "path": "docs/yieldproject.md",
    "content": "FACTs Project Meeting Notes\n========\n\n26 Jun 2019 Archontoulis Angelos\n----\n\n- For next year, the PSIMs domain may expand to MN and NE\n- [ ] akrherz/iem#199 can we move IEMRE to the database to make it faster\n- [ ] would like to launch a crop dry down app by Aug 3\n- Instead of providing average RH, I could just provide daily min/max\n- [ ] produce a map showing RH computation bias by averaging method\n- [ ] NASA POWER has a RH field I could potentially use\n- [ ] daymet allow maybe has a RH field I could use\n\n23 May 2019 Archontoulis Isaiah\n----\n\n- [ ] CFS may have some strange issues around cold days < 40F\n- [x] Send Angelo new map addresses\n- [x] Take location labels off the map\n- [x] Plot Magnitude of GDD departure\n\n2 May 2019 Archontoulis\n----\n\n- [ ] he wants CFS radiation capped at 31 MJ/d\n- Plan is to push weekly update at 9 AM Wednesday, so runs made on Tuesday\n- [ ] Deliver a WPC Map of forecasted 7 day precipitation\n- [x] GDD departures over the coming week\n- [x] next week daily max temperature and daily min temperature\n- [ ] create a pyIEM zoom for the corn belt, IA->IN\n- [ ] PSIMs yearly scenario substitions, like what is done for station data\n\n5 Apr 2019 Archontoulis, Angelos, Isaiah, one other\n----\n\n- The regional interest this year is IA, IL and IN\n- [ ] investigate NASA Power and see how difference its radiation is\n- There are three deliverables they want\n- [x] Static 1980-2018 PSIMs files, like I generated last year\n- [x] four routinely updated PSIMs files, one for each CFS 9 mon realization\n- [ ] scenarios with all years substituted.  This may be too much data for\n    them, so lower priority for now.\n\n5 Jan 2017 Dr Archontoulis\n----\n\n- Review Nov 1 to today plot, to ensure it is doing the right thing\n- [ ] remove the march 15 to today plot, not used\n- [ ] Add NASS county yield somehow to the aridity x/y plot\n- A new folder was created at dropbox for the uploads to go to\n\n11 Apr 2016 Dr Archontoulis\n----\n\n- He now has 6 files processed up until 23 March, wants data till 30 Nov\n- March 15th start date for the various GDD, etc plots\n- For the future scatter, just make it a cloud with some lines in it\n- Would like to use dropbox for sharing files\n- Add a GDD column and others for the APSIM met file\n- FIX: the units of the soil moisture shown in the download page\n- Will want me to produce a differently formatted file later in July\n- He wants 4 days of forecast data\n- Output file name is Ames_YYYYmmdd.met\n\n24 Mar 2016 Dr Archontoulis\n----\n\n- Discuss my involvement with the yield forecasting project\n- Dr Helmers Cobbs site will be sending hourly precip data my way\n- They have a good web developer, so I am just wrangling data\n- I need to look at a dataset called agmerra\n- So the complicated routine about producing a 1980-2015 weather data file\nthat has this year's data + forecast replacing that year's period.  Then the\nrest of the year is simply taking that old year's data.  I'll automate this\n- Look into usage of GFS + CFS for forecast data\n- There are six sites in play\n"
  },
  {
    "path": "environment.yml",
    "content": "dependencies:\n  # NB: these are requirements of code in this repo\n  # autoplot uses\n  - affine\n  # pytest\n  - beautifulsoup4\n  # don't download stuff\n  - cartopy_offlinedata\n  # command line\n  - click\n  # pytest\n  - coverage\n  # mastodon iembot page\n  - cryptocode\n  # ?help support\n  - docutils\n  # one wxc script\n  - ephem\n  # various places\n  - fiona\n  # various places\n  - gdal\n  # TC backend\n  - gunicorn\n  - libgdal-pg\n  # ISUSM ingest\n  - inotify\n  # For grib to TIFF conversion\n  - libgdal-grib\n  # important\n  - geopandas\n  # Get stuff\n  - httpx\n  # mrms script\n  - imageio\n  # Unknown problem with netCDF4 not loading\n  - libnetcdf=4.9\n  # soft requirement for pandas\n  - lxml\n  - mastodon.py\n  - matplotlib-base\n  # various places\n  - metar\n  # duh\n  - metpy>=1.0.0\n  # yup\n  - netcdf4\n  # Transient dep for pyIEM, which is pip installed\n  - nh3\n  # yup\n  - numpy\n  # racoon\n  - odfpy\n  # Complicated dep need for iemwebfarm mod_wsgi usage\n  - openldap\n  # excel output\n  - openpyxl\n  # due to config settings\n  - pandas>=3\n  # mod-wsgi\n  - paste\n  # PIL\n  - pillow\n  # for downstream installs\n  - pip\n  # for psql and friends\n  - postgresql\n  # database\n  - psycopg\n  # for pyiem\n  - pyarrow\n  # validation\n  - pydantic\n  # lots of places\n  - pygrib\n  # caching\n  - pymemcache\n  # various places\n  - pyproj\n  # various shapefile dumpers\n  - pyshp>=2\n  # for testing\n  - pytest\n  - pytest-cov\n  - pytest-httpx\n  - pytest-mpl\n  - pytest-runner\n  - pytest-xdist\n  - qrcode\n  # various places\n  - rasterio\n  # various places\n  - rasterstats\n  # Can't really avoid\n  - requests\n  # Testing\n  - responses\n  # important\n  - scipy\n  # autoplots\n  - seaborn\n  # needed for downstream pip install?\n  - setuptools-markdown\n  # cow et al\n  - shapely\n  # various dumpers\n  - simplejson\n  - sqlalchemy\n  # for streaming back zip files\n  - stream-zip\n  # scripts\n  - tqdm\n  # AHPS scripts\n  - twisted\n  # testing\n  - werkzeug\n  # need to use more\n  - verde\n  # Excel\n  - xlsxwriter\n  # Excel\n  - xlwt\n"
  },
  {
    "path": "eslint.config.js",
    "content": "// Legacy CommonJS ESLint configuration for pre-commit compatibility\nconst js = require(\"@eslint/js\");\nconst globals = require(\"globals\");\n\nmodule.exports = [\n    // Configuration for ESLint config file itself (Node.js environment)\n    {\n        files: [\"eslint.config.js\"],\n        languageOptions: {\n            ecmaVersion: 2020,\n            sourceType: \"script\",\n            globals: {\n                ...globals.node\n            }\n        },\n        rules: {\n            \"no-console\": \"off\"\n        }\n    },\n    // Ignore other problematic files\n    {\n        ignores: [\"htdocs/vtec/assets/*.js\", \"htdocs/lsr/static.js\"]\n    },\n    js.configs.recommended,\n    // Configuration for traditional script files (.js)\n    {\n        files: [\"**/*.js\"],\n        ignores: [\"src/iemjs/**/*.js\"],\n        languageOptions: {\n            ecmaVersion: 2020,\n            sourceType: \"script\",\n            globals: {\n                ...globals.browser,\n                // Prohibited globals (set to false to trigger errors)\n                \"$\": false,\n                \"jQuery\": false,\n                // Allowed globals for traditional scripts\n                \"ol\": \"readonly\",\n                \"Ext\": \"readonly\",\n                \"iemdata\": \"readonly\",\n                \"moment\": \"readonly\",\n                \"flowplayer\": \"readonly\",\n                \"bootstrap\": \"readonly\"\n            }\n        },\n        rules: {\n            // jQuery prohibition rules\n            \"no-restricted-globals\": [\n                \"warn\",\n                {\n                    \"name\": \"$\",\n                    \"message\": \"jQuery should not be used. Use vanilla JavaScript instead.\"\n                },\n                {\n                    \"name\": \"jQuery\",\n                    \"message\": \"jQuery should not be used. Use vanilla JavaScript instead.\"\n                }\n            ],\n\n            // Modernization hints\n            \"no-restricted-syntax\": [\n                \"warn\",\n                {\n                    \"selector\": \"CallExpression[callee.property.name='substr']\",\n                    \"message\": \"substr() is deprecated. Use substring() or slice() instead.\"\n                },\n                {\n                    \"selector\": \"CallExpression > Identifier[name='undefined']:last-child\",\n                    \"message\": \"Avoid explicitly passing 'undefined' as the last argument. Omit the argument instead - it defaults to undefined.\"\n                },\n                // Encourage optional chaining over && in conditionals\n                {\n                    \"selector\": \"IfStatement[test.type='LogicalExpression'][test.operator='&&'][test.right.type='MemberExpression']\",\n                    \"message\": \"Use optional chaining (?.) instead of && for null checks before property access.\"\n                },\n                {\n                    \"selector\": \"IfStatement[test.type='LogicalExpression'][test.operator='&&'][test.right.type='CallExpression'][test.right.callee.type='MemberExpression']\",\n                    \"message\": \"Use optional chaining (?.) instead of && for null checks before method calls.\"\n                },\n                {\n                    \"selector\": \"ConditionalExpression[test.type='LogicalExpression'][test.operator='&&'][test.right.type='MemberExpression']\",\n                    \"message\": \"Use optional chaining (?.) instead of && in conditional expressions for property access.\"\n                },\n                {\n                    \"selector\": \"ConditionalExpression[test.type='LogicalExpression'][test.operator='&&'][test.right.type='CallExpression'][test.right.callee.type='MemberExpression']\",\n                    \"message\": \"Use optional chaining (?.) instead of && in conditional expressions for method calls.\"\n                },\n                {\n                    \"selector\": \"IfStatement[consequent.type='BlockStatement'][consequent.body.length=1][consequent.body.0.type='ReturnStatement'][consequent.body.0.argument.type='Literal'][consequent.body.0.argument.value=true][alternate.type='BlockStatement'][alternate.body.length=1][alternate.body.0.type='ReturnStatement'][alternate.body.0.argument.type='Literal'][alternate.body.0.argument.value=false]\",\n                    \"message\": \"Found complex boolean return - return the boolean expression directly instead of if/else with true/false.\"\n                },\n                {\n                    \"selector\": \"IfStatement[consequent.type='ReturnStatement'][consequent.argument.type='Literal'][consequent.argument.value=true][alternate.type='ReturnStatement'][alternate.argument.type='Literal'][alternate.argument.value=false]\",\n                    \"message\": \"Found complex boolean return - return the boolean expression directly instead of if/else with true/false.\"\n                },\n                {\n                    \"selector\": \"TemplateLiteral[expressions.length=0]\",\n                    \"message\": \"Template Literal Found - use single quotes instead of template literals when no interpolation is needed.\"\n                }\n            ],\n\n            // Code quality\n            \"curly\": [\"error\", \"all\"],\n            \"eqeqeq\": \"error\",\n            \"no-console\": \"warn\",\n            \"no-debugger\": \"error\",\n            \"one-var\": [\"error\", \"never\"], // Require one variable declaration per line\n            \"init-declarations\": [\"error\", \"always\"], // Require variables to be initialized when declared\n            \"object-shorthand\": \"warn\", // Use shorthand property syntax for object literals (e.g., {foo} instead of {foo: foo})\n\n\n            // Variable shadowing detection\n            \"no-shadow\": [\"error\", {\n                \"builtinGlobals\": false,\n                \"hoist\": \"functions\",\n                \"allow\": [\"err\", \"error\", \"resolve\", \"reject\", \"cb\", \"callback\", \"done\"]\n            }],\n\n            // Duplicate assignment detection\n            \"no-self-assign\": \"error\",\n            \"no-sequences\": \"error\",\n            \"no-unreachable\": \"error\",\n\n            // Block-scoped declarations\n            \"no-inner-declarations\": [\"error\", \"both\"], // Function or var declarations in nested blocks is not preferred\n\n            // Additional code quality rules to catch common issues\n            \"no-implicit-coercion\": \"warn\",\n            \"no-return-assign\": \"error\",\n            \"array-callback-return\": \"error\",\n            \"no-unused-expressions\": [\"error\", { \"allowShortCircuit\": true, \"allowTernary\": true }],\n            \"prefer-arrow-callback\": \"warn\", // Consider using arrow functions for callbacks\n            \"prefer-template\": \"warn\", // Template Literal Found - use template literals instead of string concatenation\n            \"prefer-const\": \"warn\", // Use const declarations for variables that are never reassigned\n            \"default-case\": \"warn\", // No default cases in switch statements\n            \"complexity\": [\"warn\", { \"max\": 15 }], // Function with cyclomatic complexity higher than threshold\n            \"no-unused-vars\": [\"warn\", {\n                \"vars\": \"all\",\n                \"args\": \"after-used\",\n                \"ignoreRestSiblings\": false,\n                \"argsIgnorePattern\": \"^_\",\n                \"varsIgnorePattern\": \"^_\",\n                \"caughtErrors\": \"all\"\n            }], // Found unused objects\n\n            // Avoid usage of `this` in JavaScript code (IEM rule)\n            \"no-invalid-this\": \"error\",\n            \"consistent-this\": [\"error\", \"self\"],\n            \"class-methods-use-this\": \"warn\", // Warn when class methods don't use `this` and could be static\n\n            // Disable some rules that might be too strict for legacy code\n            \"no-redeclare\": \"off\"\n        }\n    },\n\n    // Configuration for ES modules (.module.js and IEM utilities)\n    {\n        files: [\"**/*.module.js\", \"src/iemjs/**/*.js\"],\n        languageOptions: {\n            ecmaVersion: 2022,\n            sourceType: \"module\",\n            globals: {\n                ...globals.browser\n            }\n        },\n        rules: {\n            // Base ES5+ compliance rules\n            \"no-var\": \"error\",\n\n            // jQuery prohibition rules\n            \"no-restricted-globals\": [\n                \"error\",\n                {\n                    \"name\": \"$\",\n                    \"message\": \"jQuery should not be used. Use vanilla JavaScript instead.\"\n                },\n                {\n                    \"name\": \"jQuery\",\n                    \"message\": \"jQuery should not be used. Use vanilla JavaScript instead.\"\n                }\n            ],\n\n            // Modern JavaScript preferences (more strict for modules)\n            \"prefer-arrow-callback\": \"error\",\n            \"prefer-template\": \"error\",\n            \"prefer-const\": \"error\", // Use const declarations for variables that are never reassigned\n            \"object-shorthand\": \"error\",\n            \"no-return-await\": \"error\", // Prevent unnecessary return await (performance issue)\n\n\n            // Deprecated method warnings for modules too\n            \"no-restricted-syntax\": [\n                \"warn\",\n                {\n                    \"selector\": \"CallExpression[callee.property.name='substr']\",\n                    \"message\": \"substr() is deprecated. Use substring() or slice() instead.\"\n                },\n                {\n                    \"selector\": \"ArrowFunctionExpression > AssignmentExpression\",\n                    \"message\": \"Avoid assignment operations in arrow function implicit returns. Use block statements with curly braces for side effects.\"\n                },\n                {\n                    \"selector\": \"CallExpression > Identifier[name='undefined']:last-child\",\n                    \"message\": \"Avoid explicitly passing 'undefined' as the last argument. Omit the argument instead - it defaults to undefined.\"\n                },\n                {\n                    \"selector\": \"IfStatement[test.type='LogicalExpression'][test.operator='&&'][test.left.type='Identifier'][test.right.type='MemberExpression']\",\n                    \"message\": \"Use optional chaining (?.) instead of && for null checks before property access.\"\n                },\n                {\n                    \"selector\": \"IfStatement[test.type='LogicalExpression'][test.operator='&&'][test.left.type='Identifier'][test.right.type='CallExpression'][test.right.callee.type='MemberExpression']\",\n                    \"message\": \"Use optional chaining (?.) instead of && for null checks before method calls.\"\n                },\n                {\n                    \"selector\": \"IfStatement[consequent.type='BlockStatement'][consequent.body.length=1][consequent.body.0.type='ReturnStatement'][consequent.body.0.argument.type='Literal'][consequent.body.0.argument.value=true][alternate.type='BlockStatement'][alternate.body.length=1][alternate.body.0.type='ReturnStatement'][alternate.body.0.argument.type='Literal'][alternate.body.0.argument.value=false]\",\n                    \"message\": \"Found complex boolean return - return the boolean expression directly instead of if/else with true/false.\"\n                },\n                {\n                    \"selector\": \"IfStatement[consequent.type='ReturnStatement'][consequent.argument.type='Literal'][consequent.argument.value=true][alternate.type='ReturnStatement'][alternate.argument.type='Literal'][alternate.argument.value=false]\",\n                    \"message\": \"Found complex boolean return - return the boolean expression directly instead of if/else with true/false.\"\n                },\n                {\n                    \"selector\": \"TemplateLiteral[expressions.length=0]\",\n                    \"message\": \"Template Literal Found - use single quotes instead of template literals when no interpolation is needed.\"\n                }\n            ],\n\n            // Code quality\n            \"curly\": [\"error\", \"all\"],\n            \"eqeqeq\": \"error\",\n            \"no-console\": \"warn\",\n            \"no-debugger\": \"error\",\n            \"one-var\": [\"error\", \"never\"], // Require one variable declaration per line\n            \"init-declarations\": [\"error\", \"always\"], // Require variables to be initialized when declared\n\n            // Variable shadowing detection\n            \"no-shadow\": [\"error\", {\n                \"builtinGlobals\": false,\n                \"hoist\": \"functions\",\n                \"allow\": [\"err\", \"error\", \"resolve\", \"reject\", \"cb\", \"callback\", \"done\"]\n            }],\n\n            // Duplicate assignment detection\n            \"no-self-assign\": \"error\",\n            \"no-sequences\": \"error\",\n            \"no-unreachable\": \"error\",\n\n            // Block-scoped declarations\n            \"no-inner-declarations\": [\"error\", \"both\"], // Function or var declarations in nested blocks is not preferred\n\n            // Additional code quality rules (stricter for modules)\n            \"no-implicit-coercion\": \"error\",\n            \"no-return-assign\": \"error\",\n            \"array-callback-return\": \"error\",\n            \"no-unused-expressions\": [\"error\", { \"allowShortCircuit\": true, \"allowTernary\": true }],\n            \"require-await\": \"error\", // Async functions must contain await expressions\n            \"default-case\": \"error\", // No default cases in switch statements\n            \"complexity\": [\"error\", { \"max\": 15 }], // Function with cyclomatic complexity higher than threshold\n            \"no-unused-vars\": [\"error\", {\n                \"vars\": \"all\",\n                \"args\": \"after-used\",\n                \"ignoreRestSiblings\": false,\n                \"argsIgnorePattern\": \"^_\",\n                \"varsIgnorePattern\": \"^_\",\n                \"caughtErrors\": \"all\"\n            }], // Found unused objects\n\n            // Avoid usage of `this` in JavaScript code (IEM rule)\n            \"no-invalid-this\": \"error\",\n            \"consistent-this\": [\"error\", \"self\"],\n\n            // Disable some rules that might be too strict\n            \"no-redeclare\": \"off\"\n        }\n    },\n\n    // Configuration for test files - allow console usage for test output\n    {\n        files: [\"**/tests/**/*.js\", \"**/*.test.js\", \"**/*.spec.js\"],\n        languageOptions: {\n            globals: {\n                ...globals.node  // Add Node.js globals like process, Buffer, etc.\n            }\n        },\n        rules: {\n            \"no-console\": \"off\",  // Console output is essential for test feedback\n            \"require-await\": \"off\",  // Test runners often have async functions with await in loops\n            \"complexity\": [\"error\", { \"max\": 30 }], // Function with cyclomatic complexity higher than threshold\n        }\n    }\n];\n"
  },
  {
    "path": "htdocs/.well-known/ai-plugin.json",
    "content": "{\n    \"schema_version\": \"v1\",\n    \"name_for_human\": \"IEM Plugin\",\n    \"name_for_model\": \"iem\",\n    \"description_for_human\": \"Plugin for working with IEM data.\",\n    \"description_for_model\": \"Plugin for working with IEM data.\",\n    \"auth\": {\n        \"type\": \"none\"\n    },\n    \"api\": {\n        \"type\": \"openapi\",\n        \"url\": \"https://mesonet.agron.iastate.edu/api/1/openapi.json\",\n        \"is_user_authenticated\": false\n    },\n    \"logo_url\": \"https://mesonet.agron.iastate.edu/images/logo_small.png\",\n    \"contact_email\": \"akrherz@iastate.edu\",\n    \"legal_info_url\": \"https://mesonet.agron.iastate.edu/disclaimer.php\"\n}\n"
  },
  {
    "path": "htdocs/.well-known/traffic-advice",
    "content": "[\n    {\"user_agent\": \"prefetch-proxy\", \"disallow\": true}\n]"
  },
  {
    "path": "htdocs/ASOS/current.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 7);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/mlib.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/database.inc.php\";\n\n$network = get_str404(\"network\", 'IA_ASOS', 10);\n$metar = get_str404(\"metar\", \"no\");\n$sortcol = get_str404(\"sortcol\", \"ts\");\n$sorder = get_str404(\"sorder\", \"desc\");\n$format = get_str404(\"format\", \"html\");\n\n$t = new MyView();\n$t->title = \"{$network} Current Conditions\";\n$t->refresh = 1200;\n$t->iemselect2 = TRUE;\n$t->current_network = \"ASOS\";\n\n$nt = new NetworkTable($network, FALSE, TRUE);\n$cities = $nt->table;\n$mesosite = iemdb('mesosite');\n$stname = iem_pg_prepare($mesosite, \"SELECT tzname from networks where id = $1\");\n$rs = pg_execute($mesosite, $stname, array($network));\nif (pg_num_rows($rs) < 1) {\n    $tzname = \"America/Chicago\";\n} else {\n    $row = pg_fetch_assoc($rs, 0);\n    $tzname = $row[\"tzname\"];\n}\n\n$vals = array(\n    \"tmpf\" => \"Air Temperature [°F]\", \"dwpf\" => \"Dew Point Temp [°F]\",\n    \"sknt\" => \"Wind Speed [knots]\", \"drct\" => \"Wind Direction [deg]\",\n    \"alti\" => \"Altimeter [mb]\", \"peak\" => \"Today's Wind Gust [knots]\",\n    \"peak_ts\" => \"Time of Peak Gust\", \"relh\" => \"Relative Humidity\",\n    \"feel\" => \"Feels Like [°F]\", \"vsby\" => \"Visibility [miles]\",\n    \"ts\" => \"Observation Time\", \"phour\" => \"Last Hour Rainfall [inch]\",\n    \"min_tmpf\" => \"Today's Low Temperature\", \"name\" => \"Station Name\",\n    \"max_tmpf\" => \"Today's High Temperature\", \"id\" => \"Station Identifier\",\n    \"skyl1\" => \"Cloud Level 1\",\n    \"skyl2\" => \"Cloud Level 2\",\n    \"skyl3\" => \"Cloud Level 3\",\n    \"skyl4\" => \"Cloud Level 4\",\n    \"pday\" => \"Today Rainfall [inch]\",\n);\nif (!array_key_exists($sortcol, $vals)) {\n    $sortcol = \"name\";\n}\n\n$arr = array(\n    \"network\" => $network,\n);\n$jobj = iemws_json(\"currents.json\", $arr);\n\n/* Final data array */\n$mydata = array();\n\nforeach ($jobj[\"data\"] as $bogus => $iemob) {\n    $key = $iemob[\"station\"];\n    $mydata[$key] = $iemob;\n    $mydata[$key][\"ts\"] = new DateTime($iemob[\"local_valid\"]);\n    $mydata[$key][\"sped\"] = $mydata[$key][\"sknt\"] * 1.15078;\n    if ($mydata[$key][\"max_gust\"] > $mydata[$key][\"max_sknt\"]) {\n        $mydata[$key][\"peak\"] = $mydata[$key][\"max_gust\"];\n        if (! is_null($mydata[$key][\"local_max_gust_ts\"])) {\n            $mydata[$key][\"peak_ts\"] = new DateTime($mydata[$key][\"local_max_gust_ts\"]);\n        }\n    } else {\n        $mydata[$key][\"peak\"] = $mydata[$key][\"max_sknt\"];\n        if (! is_null($mydata[$key][\"local_max_sknt_ts\"])) {\n            $mydata[$key][\"peak_ts\"] = new DateTime($mydata[$key][\"local_max_sknt_ts\"]);\n        }\n    }\n} // End of while\n\nif ($format == 'csv') {\n    $csv = \"station,valid_gmt,tmpf,max_tmpf,min_tmpf,dwpf,sknt,drct,relh,vsby,phour_in,pday_in,metar\\n\";\n    foreach ($mydata as $key => $data) {\n        $dt = new DateTime($data['utc_valid']);\n        $csv .= sprintf(\n            \"%s,%s,%.0f,%.0f,%.0f,%.0f,%.0f,%.0f,%.1f,%s,%.2f,%.2f,%s\\n\",\n            $key,\n            $dt->format(\"Y-m-d H:i\"),\n            $data['tmpf'],\n            $data[\"max_tmpf\"],\n            $data[\"min_tmpf\"],\n            $data['dwpf'],\n            $data['sknt'],\n            $data['drct'],\n            $data['relh'],\n            $data['vsby'],\n            $data['phour'],\n            $data['pday'],\n            $data['raw']\n        );\n    }\n    header(\"Content-type: text/plain\");\n    echo $csv;\n    die();\n}\n\n$nselect = selectNetworkType(\"ASOS\", $network);\n\n$ar = array(\n    \"no\" => \"No\",\n    \"yes\" => \"Yes\"\n);\n$mselect = make_select(\"metar\", $metar, $ar);\n\n$ar = array(\n    \"asc\" => \"Ascending\",\n    \"desc\" => \"Descending\"\n);\n$sselect = make_select(\"sorder\", $sorder, $ar);\n\n$ar = array(\n    \"html\" => \"Web Page\",\n    \"csv\" => \"Comma Delimited\",\n);\n$fselect = make_select(\"format\", $format, $ar);\n\n$uri = \"current.phtml?sorder=$sorder&metar=$metar&network=$network&sortcol=\";\n\n$year = date(\"Y\");\n$month = date(\"m\");\n$day = date(\"d\");\n$tkeys = array_keys($cities);\n$station = $tkeys[0];\n$table = <<<EOM\n<table class=\"table table-bordered table-sm\">\n<tr>\n  <td>\n<form method=\"GET\" action=\"current.phtml\">\n<input type=\"hidden\" name=\"sortcol\" value=\"{$sortcol}\">\nSelect Network: {$nselect}</td>\n  <td>Include METARS:<br />{$mselect}</td>\n<td>Sort Order: {$sselect}</td>\n<td>Format: {$fselect}</td></td>\n<td><input type=\"submit\" value=\"Go!\"></form></td>\n</tr></table>\n<br />Times shown are for timezone: <strong>{$tzname}.</strong> The local day summary\nis based on that timezone. <br />Table sorted by: <b>({$vals[$sortcol]})</b>\n&nbsp; &nbsp; Click on\na column to sort it. Click on site ID for more information. You can download data from\nthis network <a href='/request/download.phtml?network={$network}'>here</a>\nand you can view <a href=\"/sites/hist.phtml?station={$station}&network={$network}&mode=daily&year=$year&month=$month&day=$day\">daily summaries</a>\non this network.\n\n<form method=\"GET\" action=\"/my/current.phtml\">\n\n<table class=\"table table-striped table-sm\">\n<thead class=\"sticky\">\n<tr>\n  <th rowspan=\"2\">ADD:</th>\n  <th rowspan=\"2\"><a href=\"{$uri}id\">ID</a></th>\n  <th rowspan=\"2\"><a href=\"{$uri}name\">Station</a></th>\n  <th rowspan=\"2\"><a href=\"{$uri}ts\">Ob Time</a></th>\n  <th rowspan=\"2\">Present Wx</th>\n  <th colspan=\"5\">Temps &deg;F</th>\n  <th colspan=\"3\">&nbsp;</th>\n  <th colspan=\"3\">Wind [knots]</th>\n  <th colspan=\"2\">Precip</font></th>\n  <th colspan=\"4\">Clouds</font></th>\n<tr>\n  <th><a href=\"{$uri}tmpf\">Air</a></th>\n  <th><a href=\"{$uri}max_tmpf\">Hi</a></th>\n  <th><a href=\"{$uri}min_tmpf\">Lo</a></th>\n  <th><a href=\"{$uri}dwpf\">Dewp</a></th>\n  <th><a href=\"{$uri}feel\">Feels</a></th>\n  <th><a href=\"{$uri}relh\">RH %</a></th>\n  <th><a href=\"{$uri}alti\">Alti</a></th>\n  <th><a href=\"{$uri}vsby\">Vsby</a></th>\n  <th><a href=\"{$uri}sknt\">Speed</a></th>\n  <th><a href=\"{$uri}drct\">Drct</a></th>\n  <th><a href=\"{$uri}peak\">Gust</a>\n    @ <a href=\"{$uri}peak_ts\">Time</a></th>\n  <th><a href=\"{$uri}phour\">1 Hour</a></th>\n  <th><a href=\"{$uri}pday\">Today</a></th>\n  <th><a href=\"{$uri}skyl1\">Level 1</a></th>\n  <th><a href=\"{$uri}skyl2\">Level 2</a></th>\n  <th><a href=\"{$uri}skyl3\">Level 3</a></th>\n  <th><a href=\"{$uri}skyl4\">Level 4</a></th>\n</tr></thead>\n<tbody>\nEOM;\n\n$finalA = aSortBySecondIndex($mydata, $sortcol, $sorder);\n$now = time();\n$i = 0;\n$old = \"\";\n\n$domain = array_keys($nt->table);\n$online = array();\n\nforeach ($finalA as $key => $parts) {\n    // Keep track of online stations\n    $online[] = $key;\n    $i++;\n\n    $row = \"<tr\";\n    if ($i % 2 == 0)  $row .= \" bgcolor='#eeeeee'\";\n    $row .= \"><td><input type=\\\"checkbox\\\" name=\\\"st[]\\\" value=\\\"\" . $key . \"\\\"></td>\";\n\n    $tdiff = $now - strtotime($parts[\"utc_valid\"]);\n    $url = sprintf(\"/sites/site.php?station=%s&network=%s\", $key, $network);\n    $row .= sprintf(\"<td><a href='%s'>%s</a></td>\", $url, $key);\n    $row .= \"<td>\" . $cities[$key][\"name\"] . \"</td>\";\n    $row .= \"<td \";\n    if ($tdiff > 10000) {\n        $fmt = \"d M h:i P\";\n        $row .= \"bgcolor=\\\"red\\\">\" . $parts[\"ts\"]->format($fmt) . \"</td><td colspan=\\\"18\\\">Site Offline</td></tr>\";\n        $old .= $row;\n        continue;\n    } else if ($tdiff > 7200) {\n        $fmt = \"h:i A\";\n        $row .= 'bgcolor=\"orange\"';\n    } else if ($tdiff > 3600) {\n        $fmt = \"h:i A\";\n        $row .= 'bgcolor=\"green\"';\n    } else {\n        $fmt = \"h:i A\";\n    }\n    $phour = ($parts[\"phour\"] != 0.0001) ? $parts[\"phour\"] : 'T';\n    $pday = ($parts[\"pday\"] != 0.0001) ? $parts[\"pday\"] : 'T';\n\n    $ptmpf = ($parts[\"tmpf\"] !== null) ? myround($parts[\"tmpf\"], 0) : 'M';\n    $pdwpf = ($parts[\"dwpf\"] !== null) ? myround($parts[\"dwpf\"], 0) : 'M';\n    $pfeel = ($ptmpf === \"M\" || $pdwpf === \"M\" || $parts[\"feel\"] === null) ? \"M\" : myround($parts[\"feel\"], 0);\n    $prelh = ($ptmpf === \"M\" || $pdwpf === \"M\" || $parts[\"relh\"] === null) ? \"M\" : myround($parts[\"relh\"], 0);\n    $wxc = is_null($parts[\"wxcodes\"]) ? \"\" : str_replace(\"{\", \" \", $parts[\"wxcodes\"]);\n    $row .= \">\" . $parts[\"ts\"]->format($fmt) . \"</td>\" .\n        \"<td align='center'>{$wxc}</td>\" .\n        \"<td align='center'>\" . $ptmpf . \"</td><td><font color=\\\"#ff0000\\\">\" . myround($parts[\"max_tmpf\"], 0) . \"</font></td><td><font color=\\\"#0000ff\\\">\" . myround($parts[\"min_tmpf\"], 0) . \"</font></td>\n     <td>\" . $pdwpf . \"</td>\n     <td>\" . $pfeel . \"</td>\n        <td>\" . $prelh . \"</td>\n        <td>\" . $parts[\"alti\"] . \"</td>\n        <td>\" . $parts[\"vsby\"] . \"</td>\n             <td>\" . myround($parts[\"sknt\"], 0);\n\n    if (floatval($parts[\"gust\"] > 0)) {\n        $row .= \"G\" . myround($parts[\"gust\"], 0);\n    }\n    $row .= \"</td>\";\n    $row .= \"<td>\" . drct2txt($parts[\"drct\"]) . \"</td><td>\";\n    if (isset($parts[\"peak_ts\"])) {\n        $row .= sprintf(\n            \"%s @ %s\",\n            myround($parts[\"peak\"],0),\n            $parts[\"peak_ts\"]->format(\"h:i A\"),\n        );\n    }\n    $text_pday = $parts['pday'] == -99 ? 'M' : $parts['pday'];\n    $row .= \"</td><td>{$phour}</td>\n            <td>{$pday}</td>\n<td>\" . $parts[\"skyc1\"] . \" \" . $parts[\"skyl1\"] . \"</td>\n<td>\" . $parts[\"skyc2\"] . \" \" . $parts[\"skyl2\"] . \"</td>\n<td>\" . $parts[\"skyc3\"] . \" \" . $parts[\"skyl3\"] . \"</td>\n<td>\" . $parts[\"skyc4\"] . \" \" . $parts[\"skyl4\"] . \"</td>\n        </tr>\\n\";\n    if ($metar == \"yes\") {\n        $row .= \"<tr\";\n        if ($i % 2 == 0)  $row .= \" bgcolor='#eeeeee'\";\n        $row .= \">\";\n        $row .= \"<td colspan=\\\"22\\\">\n             <font color=\\\"brown\\\">\" . $parts[\"raw\"] . \"</font></td>\n             </tr>\\n\";\n    }\n    $table .= $row;\n}\n\n$offline = array_diff($domain, $online);\n$offline_entries = \"\";\n// loop over offline entries\nforeach ($offline as $sid) {\n    $sname = $nt->table[$sid][\"name\"];\n    $url = sprintf(\"/sites/site.php?station=%s&network=%s\", $sid, $network);\n    $offline_entries .= sprintf(\n        \"<tr><td><input type=\\\"checkbox\\\" name=\\\"st[]\\\" value=\\\"%s\\\"></td>\" .\n            \"<td><a href='%s'>%s</a></td>\" .\n            \"<td>%s</td><td colspan=\\\"19\\\">Site Offline</td></tr>\\n\",\n        $sid,\n        $url,\n        $sid,\n        $sname\n    );\n}\n\n$table .= $old;\n$table .= $offline_entries;\n$table .= <<<EOM\n</tbody>\n\n</table>\n\n<input type=\"submit\" value=\"Add to Favorites\">\n<input type=\"reset\" value=\"Reset\">\n\n</form>\nEOM;\n$t->content = $table;\n$t->render('sortables.phtml');\n"
  },
  {
    "path": "htdocs/ASOS/index.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 21);\nrequire_once '../../include/myview.php';\n\n$t = new MyView();\n$t->title = \"ASOS/AWOS Network\";\n\n$t->content = <<< EOM\n<h1 class=\"h4 mb-3\">ASOS / AWOS Network</h1>\n\n<aside class=\"card card-body float-end ms-3 mb-3\" role=\"complementary\" aria-labelledby=\"asos-card-heading\">\n  <h2 class=\"h6 mb-2\" id=\"asos-card-heading\">ASOS Quick Facts</h2>\n  <p class=\"mb-1\">Reports: Hourly</p>\n  <p class=\"mb-0\"><a href=\"/sites/locate.php?network=IA_ASOS\">View Locations</a></p>\n</aside>\n\n<p>The Automated Surface Observing System (ASOS) is considered to be the flagship automated observing network. Located at airports, the ASOS stations provide essential observations for the National Weather Service (NWS), the Federal Aviation Administration (FAA), and the Department of Defense (DOD). The primary function of the ASOS stations are to take minute-by-minute observations and generate basic weather reports.<sup class=\"text-muted\">[1]</sup></p>\n\n<p>Please see this <a href=\"/onsite/news.phtml?id=1469\" class=\"btn btn-danger\"><i class=\"bi bi-info-circle-fill\" aria-hidden=\"true\"></i> Important News Item</a> regarding wagering on ASOS temperatures.</p>\n\n<div class=\"row g-4\">\n  <div class=\"col-md-6\">\n    <section aria-labelledby=\"current-heading\">\n      <h2 class=\"h5\" id=\"current-heading\">Current ASOS Data</h2>\n      <ul class=\"mb-4\">\n        <li><a href=\"current.phtml\">Sortable Current Conditions</a></li>\n        <li><a href=\"/data/mesonet.gif\">Combined Mesonet</a></li>\n        <li><a href=\"/data/asos.gif\">ASOS Mesonet</a></li>\n        <li><a href=\"/data/wcht.gif\">Wind Chill Index</a></li>\n        <li><a href=\"recent.phtml\">Recent Interesting METAR Reports</a></li>\n        <li><a href=\"/data/relh.gif\">Relative Humidity</a></li>\n      </ul>\n    </section>\n\n    <section aria-labelledby=\"one-minute-heading\">\n      <h2 class=\"h5\" id=\"one-minute-heading\">1 Minute Archive</h2>\n      <p>The National Center for Environmental Information (NCEI) provides an archive of one minute interval observations from many US ASOS sites back to the year 2000. This archive is available <a href=\"https://www.ncei.noaa.gov/pub/data/asos-onemin/\">here</a>, but in a difficult to use format. The IEM makes a best-guess effort at processing the mostly undocumented data format and updates the archive daily. This dataset is <strong>not realtime</strong> and is delayed by 18–36 hours or more due to NCEI availability.</p>\n      <ul class=\"mb-1\">\n        <li><a href=\"/request/asos/1min.phtml\">Download</a> these observations</li>\n        <li><a href=\"/plotting/auto/?q=211\">Plot</a> these observations</li>\n      </ul>\n      <p class=\"mb-4\">Data is available for some sites back to 2000.</p>\n    </section>\n\n    <section aria-labelledby=\"qc-heading\">\n      <h2 class=\"h5\" id=\"qc-heading\">Quality Control</h2>\n      <ul>\n        <li><a href=\"/QC/madis/network.phtml?network=IA_ASOS\">MADIS Raw QC Values</a></li>\n        <li><a href=\"precipnote.phtml\">Note about ASOS Precipitation Timing</a></li>\n      </ul>\n    </section>\n  </div>\n\n  <div class=\"col-md-6\">\n    <section aria-labelledby=\"historical-heading\" class=\"mb-4\">\n      <h2 class=\"h5\" id=\"historical-heading\">Historical Data</h2>\n      <ul class=\"mb-4\">\n        <li><a href=\"/request/download.phtml\">Download</a> raw observations from the archive</li>\n        <li><a href=\"/cgi-bin/precip/catAZOS.py\">Hourly Precipitation</a> tables</li>\n        <li><a href=\"/ASOS/reports/mon_prec.php\">Monthly Precipitation</a> tables</li>\n        <li><a href=\"/request/hourlyprecip.phtml\">Download</a> computed hourly precipitation totals</li>\n        <li><a href=\"/request/daily.phtml\">Download</a> computed daily summaries</li>\n        <li><a href=\"/climodat/\">IEM Climodat</a> has monthly/yearly summaries of precipitation and temperature.</li>\n      </ul>\n    </section>\n\n    <section aria-labelledby=\"comparisons-heading\" class=\"mb-4\">\n      <h2 class=\"h5\" id=\"comparisons-heading\">Comparisons</h2>\n      <ul>\n        <li><a href=\"/data/temps.gif\">Temperatures vs RWIS Network</a></li>\n        <li><a href=\"/data/snet/Tcompare.gif\">Temperatures vs SchoolNet Network</a></li>\n        <li><a href=\"/data/dewps.gif\">Dew Points vs RWIS Network</a></li>\n        <li><a href=\"/data/snet/Dcompare.gif\">Dew Points vs SchoolNet Network</a></li>\n        <li><a href=\"/data/winds.gif\">Winds vs RWIS Network</a></li>\n      </ul>\n    </section>\n\n    <section aria-labelledby=\"references-heading\">\n      <h2 class=\"h5\" id=\"references-heading\">References</h2>\n      <p class=\"mb-2\"><sup class=\"text-muted\">[1]</sup> Adapted from the <a href=\"https://www.weather.gov/media/asos/aum-toc.pdf\">ASOS User's Guide</a></p>\n      <ul class=\"mb-0\">\n        <li><a href=\"https://www.weather.gov/media/asos/ASOS%20Implementation/awpag27B6relnotes.pdf\">All Weather Precipitation Gauge</a> install dates.</li>\n      </ul>\n    </section>\n  </div>\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/ASOS/precipnote.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Note about ASOS Precipitation Data\";\n\n$t->content = <<<EOM\n<h3>Notes about ASOS Precipitation Reports</h3>\n\n<p>The Automated Surface Observation System <a href=\"/ASOS/\">ASOS</a> is the\nprimary automated weather observation system in the country.  The network is\nmaintained by the Federal Aviation Administration and National Weather Service.\nThe IEM processes, archives, and <a href=\"/request/download.phtml\">makes available data</a> from this network.  The\npurpose of this page is to document some interesting aspects of the precipitation\ndata from this network.\n\n<p><div class=\"warning\">Please feel free to \n<a href=\"/info/contacts.php\">report any doubts or concerns</a> you\nhave with this documentation.  This information has been pieced together based\non conversations with the NWS and reviewing the \n<a href=\"https://www.weather.gov/media/asos/aum-toc.pdf\">ASOS Users Manual</a>.</div>\n\n<h4>Regarding Time Zones...</h4>\n\n<p>Depending on the report type, observations from this network are reported in\neither local standard time or UTC (sometimes called GMT) time.  The internal \nclocks on the ASOS sites are not updated for daylight time.  This is an important\nconsideration when using its local daily precipitation report found in the \nDaily Summary Message (DSM).  This 24 hour period is between local midnight in\nstandard time.  So when the local calendar is in daylight time, the period will\nrepresent the time between 1 AM and 1 AM.  This 24 hour is not exactly as stated\nand leads to the next section.\n\n<h4>Regarding Exact Timing...</h4>\n\n<p>The ASOS reports time in hours and minutes without seconds.  This creates some\nambiguity when attempting to ascertain exactly when a reported precipitation rate\noccurred.  When the time hits 00 seconds, the ASOS starts processing its memory of \nrecently saved data.  This processing ends promptly at 23 seconds after and various\ndisplays are updated, products disseminated, and one minute interval data archived.\n\n<p>The one minute precipitation data is thus some nearly 60 second period between\nwhen the previous minute's processing got to totaling the precipitation data\nto this minute's processing.  So the one minute total is strictly not from a \nperiod between 00 seconds of the previous minute and 00 seconds of the current\nperiod.  Instead this is approximately the 60 second period between 24 seconds\nafter the previous minute to 23 seconds of the current minute.  For example:\n\n<p>For one minute data, the 12:45 UTC observation approximately represents\na period between 12:44:24 and 12:45:23 UTC.  \n\n<p>For the hourly METAR precipitation, the 12:54 UTC observation represents a\nperiod between 11:54:24 and 12:54:23 UTC.\n\n<p>For the daily summary message, the observation represents a period between\n11:59:24 PM LST of the previous day to 11:59:23 PM LST of the current day.\n\n<p>For the hourly data in the daily summary message, the observation is a \nperiod from (HH-1):59:24 to HH:59:23 LST.\n\n<h4>Heavy Precipitation Rates...</h4>\n\n<p>The ASOS uses a tipping bucket method to measure precipitation.  This means\nthat a single tip of the bucket records 0.01 inch of precipitation with the data\nlogger.  Under intense rainfall rates, various physical things happen causing\nthe tipping mechanism to not be able to keep up with the flowing water rate. The <a href=\"https://www.weather.gov/media/asos/aum-toc.pdf\">ASOS Users Manual</a>\nnotes in section 3.4.2 that a correction is applied to the measured\naccumulation on a minute by minute basis.\nThe equation shown in the manual is as follows:\n\n<br /><blockquote><pre>C = A(1 + 0.60A)</pre><br />where C is the reported\naccumulation and A is the measured accumulation from the tipping bucket.</blockquote>\n\n<p><img src=\"eqn342.png\" />\n\n<p>This means that when the ASOS reports a one minute accumulation of 0.25 \ninches, the actual measured value was around 0.22 inches.  <b>Please note that\nit is not our intention to claim this correction is wrong, but just to document that\nit is there.</b>  Extremely intense rainfall rates such as these are rare, so the \ntypical adjustment is practically zero. \n\n<h4>In Summary</h4>\n\n<p>The timing and precipitation totals are not exact, but they are conservative\nover time when summed. Please let us know of any corrections or clarifications\nyou would like to see made.\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/ASOS/recent.css",
    "content": "/* Ensure the region scrolls nicely if tall */\n.table-responsive { max-height: 70vh; overflow: auto; }\n\n/* Sticky header hint (Bootstrap adds .sticky-top logic) */\nthead.sticky-top th { background: #f8f9fa; }\n\n#recent-status { font-size: 0.875rem; }\n\n@media (max-width: 575.98px) {\n    #recent-heading { font-size: 1.05rem; }\n    #recent-desc { font-size: 0.9rem; }\n}\n"
  },
  {
    "path": "htdocs/ASOS/recent.module.js",
    "content": "\nlet report = 'snowdepth';\n\nconst getAllowedReports = (select) => new Set([...select.options].map((opt) => opt.value));\n\nconst buildCell = (tagName, text) => {\n    const cell = document.createElement(tagName);\n    cell.textContent = text;\n    return cell;\n};\n\n/**\n * Fetch recent interesting METAR reports and populate the table.\n * Exposed for potential reuse (e.g. manual refresh button later).\n */\nconst buildRow = (feat) => {\n    const row = document.createElement('tr');\n    row.appendChild(buildCell('td', feat.properties.station));\n    row.appendChild(buildCell('td', feat.properties.network));\n    row.appendChild(buildCell('td', feat.properties.valid));\n    row.appendChild(buildCell('td', `${feat.properties.value ?? ''}`));\n    row.appendChild(buildCell('td', feat.properties.metar));\n    return row;\n};\n\nconst buildMessageRow = (message) => {\n    const row = document.createElement('tr');\n    const cell = buildCell('th', message);\n    cell.colSpan = 5;\n    row.appendChild(cell);\n    return row;\n};\n\nconst updateStatus = (live, message) => { if (live) {live.textContent = message;} };\n\nexport const fetchData = async () => {\n    const tableBody = document.querySelector('#datatable tbody');\n    if (!tableBody) {return;}\n    const live = document.getElementById('recent-status');\n\n    tableBody.replaceChildren(buildMessageRow('Querying server, one moment'));\n    updateStatus(live, 'Loading recent METAR reports…');\n    try {\n        const resp = await fetch(`/geojson/recent_metar.py?q=${encodeURIComponent(report)}`);\n        if (!resp.ok) {throw new Error(`${resp.status} ${resp.statusText}`);}\n        const j = await resp.json();\n        tableBody.replaceChildren();\n        j.features.forEach((feat) => tableBody.appendChild(buildRow(feat)));\n        if (j.features.length === 0) {\n            tableBody.replaceChildren(buildMessageRow('No results were found, sorry!'));\n            updateStatus(live, 'No recent METAR reports found for selected type.');\n            return;\n        }\n        updateStatus(live, `${j.features.length} recent METAR report${j.features.length === 1 ? '' : 's'} loaded.`);\n    } catch (error) {\n        tableBody.replaceChildren(buildMessageRow(`Error loading data ${error.message}`));\n        updateStatus(live, `Error loading data: ${error.message}`);\n    }\n};\n\n/** Get current report type. */\nexport const getReport = () => report;\n\n/**\n * Set current report type, update the URL hash, refresh data.\n * @param {string} value\n */\nexport const setReport = (value) => {\n    report = value;\n    // Update ?report= parameter without reloading page.\n    const params = new URLSearchParams(window.location.search);\n    params.set('report', value);\n    const newUrl = `${window.location.pathname}?${params.toString()}`;\n    window.history.replaceState({}, '', newUrl);\n    fetchData();\n};\n\n/** Initialize report selection from current URL hash. */\nconst initReportFromURL = () => {\n    const select = document.getElementById('report');\n    if (!(select instanceof HTMLSelectElement)) {\n        return;\n    }\n    const allowedReports = getAllowedReports(select);\n    const params = new URLSearchParams(window.location.search);\n    const fromParam = params.get('report');\n    let candidate = fromParam;\n    // Hash shim: allow legacy #value and migrate to ?report=value\n    if (!candidate && window.location.hash.length > 1) {\n        candidate = window.location.hash.substring(1);\n        // Migrate hash -> query param (preserve other params if they appear later)\n        const migrateParams = new URLSearchParams(window.location.search);\n        migrateParams.set('report', candidate);\n        const newUrl = `${window.location.pathname}?${migrateParams.toString()}`;\n        window.history.replaceState({}, '', newUrl);\n    }\n    if (candidate?.length && allowedReports.has(candidate)) {\n        report = candidate;\n        select.value = report;\n    }\n};\n\n/** Wire up UI events and perform initial data load. */\nexport const init = () => {\n    const select = document.getElementById('report');\n    if (select instanceof HTMLSelectElement) {\n        select.addEventListener('change', (e) => {\n            const target = e.currentTarget;\n            if (target instanceof HTMLSelectElement) {setReport(target.value);}\n        });\n    }\n    initReportFromURL();\n    fetchData();\n};\n\n// Auto initialize when DOM is ready.\ndocument.addEventListener('DOMContentLoaded', init);\n"
  },
  {
    "path": "htdocs/ASOS/recent.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 104);\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Recent Interesting METAR Reports\";\n\n$t->content = <<<EOM\n<nav aria-label=\"Breadcrumb\">\n    <ol class=\"breadcrumb mb-3\">\n        <li class=\"breadcrumb-item\"><a href=\"/ASOS/\">ASOS Mainpage</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">Recent Interesting METAR Reports</li>\n    </ol>\n</nav>\n<h1 class=\"h4 mb-3\" id=\"recent-heading\">Recent Interesting METAR Reports</h1>\n<p id=\"recent-desc\">The IEM processes and archives a feed of METAR formatted weather observations. These observations sometimes contain interesting things reported. This page lists such recent occurrences of a given phenomena for roughly the past 2–3 days.</p>\n\n<form name=\"local\" class=\"row gy-2 gx-3 align-items-end mb-4\" aria-describedby=\"recent-desc\">\n    <div class=\"col-sm-6 col-md-4 col-lg-3\">\n        <label for=\"report\" class=\"form-label\">Select Report Type</label>\n        <select id=\"report\" name=\"report\" class=\"form-select\" aria-describedby=\"recent-desc\">\n                <option value=\"snowdepth\">Snow Depth Reports (4/xxx)</option>\n                <option value=\"fc\">Funnel Cloud / Tornado / Waterspouts Reports (FC/+FC)</option>\n                <option value=\"gr\">Hail Reports (GR)</option>\n                <option value=\"i1\">Ice Accretion 1 Hour (I1nnn)</option>\n                <option value=\"i3\">Ice Accretion 3 Hours (I3nnn)</option>\n                <option value=\"i6\">Ice Accretion 6 Hours (I6nnn)</option>\n                <option value=\"pno\">No Precipitation Reported (PNO)</option>\n                <option value=\"pwino\">Precipitation Identifier Information Not Available (PWINO)</option>\n                <option value=\"50\">Wind Sustained/Gusts AOA 50 kts (US Only)</option>\n                <option value=\"50A\">Wind Sustained/Gusts AOA 50 kts (Worldwide)</option>\n        </select>\n    </div>\n</form>\n\n<div id=\"recent-status\" class=\"visually-hidden\" aria-live=\"polite\" aria-atomic=\"true\"></div>\n\n<div class=\"table-responsive\" role=\"region\" aria-labelledby=\"recent-heading\" aria-describedby=\"recent-desc\">\n    <table class=\"table table-bordered table-striped table-sm align-middle mb-0\" id=\"datatable\">\n        <caption class=\"visually-hidden\">Table of recent interesting METAR reports filtered by selected report type</caption>\n        <thead class=\"table-light sticky-top\">\n            <tr>\n                <th scope=\"col\">ID</th>\n                <th scope=\"col\">Network</th>\n                <th scope=\"col\">UTC Valid</th>\n                <th scope=\"col\">Value</th>\n                <th scope=\"col\">METAR</th>\n            </tr>\n        </thead>\n        <tbody>\n        </tbody>\n    </table>\n</div>\nEOM;\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" type=\"text/css\" href=\"recent.css\">\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"recent.module.js\" type=\"module\"></script>\nEOM;\n\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/ASOS/reports/mon_prec.css",
    "content": "/* Bootstrap 5 enhancements for Monthly Precipitation Report */\n\n/* Tabulator container styling */\n#tabulator-container {\n    margin-top: 1rem;\n}\n\n/* Table controls styling */\n#table-controls {\n    margin-bottom: 1rem;\n    padding: 1rem;\n    background-color: var(--bs-light);\n    border-radius: 0.375rem;\n    border: 1px solid var(--bs-border-color);\n}\n\n#table-controls .btn-group {\n    margin-right: 0.5rem;\n    margin-bottom: 0.5rem;\n}\n\n#table-controls .btn {\n    margin-right: 0.25rem;\n}\n\n/* Enhance the \"Interactive Grid\" button */\n#create-grid {\n    background: linear-gradient(135deg, var(--bs-success), var(--bs-primary));\n    border: none;\n    color: white;\n    padding: 0.75rem 1.5rem;\n    border-radius: 0.5rem;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    transition: all 0.3s ease;\n    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n}\n\n#create-grid:hover {\n    transform: translateY(-2px);\n    box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);\n}\n\n#create-grid:active {\n    transform: translateY(0);\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n/* Original table wrapper */\n#original-table {\n    margin-top: 1rem;\n}\n\n/* Tabulator table customizations */\n.tabulator {\n    border: 1px solid var(--bs-border-color);\n    border-radius: 0.375rem;\n    overflow: hidden;\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n}\n\n.tabulator .tabulator-header {\n    background: var(--bs-primary);\n    color: white;\n    border-bottom: 2px solid var(--bs-primary);\n}\n\n.tabulator .tabulator-header .tabulator-col {\n    border-right: 1px solid rgba(255, 255, 255, 0.2);\n    background: var(--bs-primary);\n}\n\n.tabulator .tabulator-header .tabulator-col-title {\n    font-weight: 600;\n    color: white !important;\n    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n}\n\n.tabulator .tabulator-header .tabulator-col-sorter {\n    color: white !important;\n}\n\n.tabulator .tabulator-header .tabulator-header-filter input {\n    background-color: rgba(255, 255, 255, 0.9);\n    border: 1px solid rgba(255, 255, 255, 0.3);\n    border-radius: 0.25rem;\n    color: var(--bs-dark);\n    font-size: 0.875rem;\n}\n\n.tabulator .tabulator-header .tabulator-header-filter input:focus {\n    background-color: white;\n    border-color: var(--bs-primary);\n    box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), 0.25);\n}\n\n/* Row styling */\n.tabulator .tabulator-row:nth-child(even) {\n    background-color: var(--bs-light);\n}\n\n.tabulator .tabulator-row:hover {\n    background-color: rgba(var(--bs-primary-rgb), 0.1);\n}\n\n.tabulator .tabulator-row .tabulator-cell {\n    border-right: 1px solid var(--bs-border-color);\n    padding: 0.5rem 0.75rem;\n    font-family: 'Courier New', monospace;\n    text-align: center;\n}\n\n.tabulator .tabulator-row .tabulator-cell:first-child,\n.tabulator .tabulator-row .tabulator-cell:nth-child(2) {\n    font-family: inherit;\n    text-align: left;\n}\n\n/* Highlight special columns */\n.tabulator .tabulator-row .tabulator-cell.highlight-summer {\n    background-color: rgba(var(--bs-warning-rgb), 0.1);\n    font-weight: 600;\n    border-left: 3px solid var(--bs-warning);\n}\n\n.tabulator .tabulator-row .tabulator-cell.highlight-annual {\n    background-color: rgba(var(--bs-success-rgb), 0.1);\n    font-weight: 600;\n    border-left: 3px solid var(--bs-success);\n}\n\n/* Link styling in table */\n.tabulator .tabulator-row .tabulator-cell a {\n    color: var(--bs-primary);\n    text-decoration: none;\n    font-weight: 500;\n}\n\n.tabulator .tabulator-row .tabulator-cell a:hover {\n    color: var(--bs-primary);\n    text-decoration: underline;\n}\n\n/* Pagination styling */\n.tabulator .tabulator-footer {\n    background-color: var(--bs-light);\n    border-top: 1px solid var(--bs-border-color);\n}\n\n.tabulator .tabulator-footer .tabulator-page {\n    background-color: white;\n    border: 1px solid var(--bs-border-color);\n    color: var(--bs-primary);\n    border-radius: 0.25rem;\n    margin: 0 0.125rem;\n}\n\n.tabulator .tabulator-footer .tabulator-page:hover {\n    background-color: var(--bs-primary);\n    color: white;\n}\n\n.tabulator .tabulator-footer .tabulator-page.active {\n    background-color: var(--bs-primary);\n    color: white;\n    border-color: var(--bs-primary);\n}\n\n/* Form styling improvements */\nform[name=\"change\"] {\n    background: linear-gradient(135deg, rgba(var(--bs-primary-rgb), 0.05), rgba(var(--bs-info-rgb), 0.05));\n    border-radius: 0.5rem;\n    padding: 1.5rem;\n    margin-bottom: 1.5rem;\n    border: 1px solid var(--bs-border-color);\n}\n\nform[name=\"change\"] p {\n    margin-bottom: 1rem;\n}\n\nform[name=\"change\"] select {\n    margin-right: 1rem;\n    margin-bottom: 0.5rem;\n}\n\nform[name=\"change\"] input[type=\"submit\"] {\n    background: var(--bs-primary);\n    color: white;\n    border: none;\n    padding: 0.5rem 1rem;\n    border-radius: 0.375rem;\n    font-weight: 500;\n    transition: all 0.2s ease;\n}\n\nform[name=\"change\"] input[type=\"submit\"]:hover {\n    background: var(--bs-primary);\n    transform: translateY(-1px);\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n    #table-controls {\n        padding: 0.75rem;\n    }\n    \n    #table-controls .btn-group {\n        display: flex;\n        flex-direction: column;\n        width: 100%;\n        margin-bottom: 0.5rem;\n    }\n    \n    #table-controls .btn {\n        margin-right: 0;\n        margin-bottom: 0.25rem;\n    }\n    \n    .tabulator .tabulator-header .tabulator-col {\n        min-width: 60px;\n    }\n    \n    form[name=\"change\"] {\n        padding: 1rem;\n    }\n    \n    form[name=\"change\"] select {\n        width: 100%;\n        margin-right: 0;\n        margin-bottom: 0.75rem;\n    }\n    \n    form[name=\"change\"] input[type=\"submit\"] {\n        width: 100%;\n    }\n}\n\n/* Breadcrumb enhancement */\n.breadcrumb {\n    background: linear-gradient(135deg, var(--bs-light), rgba(var(--bs-primary-rgb), 0.05));\n    border-radius: 0.375rem;\n    padding: 0.75rem 1rem;\n    margin-bottom: 1.5rem;\n    border: 1px solid var(--bs-border-color);\n}\n\n/* Missing data styling */\n.tabulator .tabulator-row .tabulator-cell:has-text(\"M\") {\n    color: var(--bs-secondary);\n    font-style: italic;\n}\n\n/* Loading spinner */\n.tabulator-loader {\n    border: 3px solid var(--bs-light);\n    border-top: 3px solid var(--bs-primary);\n    border-radius: 50%;\n    width: 40px;\n    height: 40px;\n    animation: spin 1s linear infinite;\n    margin: 2rem auto;\n}\n\n@keyframes spin {\n    0% { transform: rotate(0deg); }\n    100% { transform: rotate(360deg); }\n}\n\n/* Page header styling */\nh1, h2, h3 {\n    color: var(--bs-primary);\n    font-weight: 600;\n}\n\n/* Info text styling */\np {\n    line-height: 1.6;\n    color: var(--bs-body-color);\n}\n\n/* Button group improvements */\n.btn-group .btn {\n    border-radius: 0.375rem;\n    margin-right: 0.25rem;\n    font-weight: 500;\n}\n\n.btn-group .btn:last-child {\n    margin-right: 0;\n}\n\n/* Sticky header enhancement */\n.sticky {\n    position: sticky;\n    top: 0;\n    z-index: 10;\n    background: var(--bs-primary);\n    color: white;\n}\n\n/* Table wrapper for original table */\n#original-table {\n    overflow-x: auto;\n    border-radius: 0.375rem;\n    border: 1px solid var(--bs-border-color);\n}\n\n#original-table table {\n    margin-bottom: 0;\n}\n\n#original-table th {\n    background: var(--bs-primary);\n    color: white;\n    padding: 0.75rem 0.5rem;\n    text-align: center;\n    font-weight: 600;\n    border-color: rgba(255, 255, 255, 0.2);\n}\n\n#original-table td {\n    padding: 0.5rem;\n    text-align: center;\n    font-family: 'Courier New', monospace;\n    border-color: var(--bs-border-color);\n}\n\n#original-table td:first-child,\n#original-table td:nth-child(2) {\n    font-family: inherit;\n    text-align: left;\n}\n"
  },
  {
    "path": "htdocs/ASOS/reports/mon_prec.module.js",
    "content": "// Tabulator-based Monthly Precipitation Report\n// Replaces ExtJS TableGrid implementation with modern Tabulator\nimport {TabulatorFull as Tabulator} from 'https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator_esm.min.mjs';\n\n// Application state\nlet precipTable = null;\nlet originalData = [];\nlet statusEl = null;\n\n// Common Tabulator configuration\nconst commonConfig = {\n    layout: \"fitDataStretch\",\n    pagination: \"local\",\n    paginationSize: 25,\n    paginationSizeSelector: [10, 25, 50, 100, true],\n    movableColumns: true,\n    resizableColumns: true,\n    sortMode: \"local\",\n    filterMode: \"local\",\n    responsiveLayout: false, // Use horizontal scroll instead of hiding columns\n    tooltips: true,\n    clipboard: true,\n    clipboardCopyHeader: true,\n    height: \"70vh\",\n    placeholder: \"No precipitation data available\",\n    initialSort: [\n        {column: \"name\", dir: \"asc\"}\n    ]\n};\n\n// Format precipitation values (handle missing data)\nfunction formatPrecipitation(cell) {\n    const value = cell.getValue();\n    if (value === null || value === undefined || value === \"M\") {return \"M\";}\n    if (typeof value === 'string' && value.trim() === '') {return \"M\";}\n    const numValue = parseFloat(value);\n    if (isNaN(numValue)) {return \"M\";}\n    return numValue.toFixed(2);\n}\n\n// Column definitions for monthly precipitation data\nfunction getPrecipitationColumns() {\n    return [\n        {\n            title: \"Station ID\", \n            field: \"id\", \n            frozen: true, \n            width: 100, \n            sorter: \"string\",\n            formatter: \"link\",\n            formatterParams: {\n                urlPrefix: '/sites/site.php?station=',\n                urlSuffix: () => `&network=${getNetworkFromURL()}`,\n                target: \"_blank\"\n            },\n            headerFilter: \"input\",\n            headerFilterPlaceholder: \"Filter ID...\"\n        },\n        {\n            title: \"Station Name\", \n            field: \"name\", \n            frozen: true, \n            minWidth: 200, \n            sorter: \"string\",\n            headerFilter: \"input\",\n            headerFilterPlaceholder: \"Filter name...\"\n        },\n        {title: \"Jan\", field: \"jan\", width: 80, sorter: \"number\", formatter: formatPrecipitation, headerTooltip: \"January precipitation (inches)\"},\n        {title: \"Feb\", field: \"feb\", width: 80, sorter: \"number\", formatter: formatPrecipitation, headerTooltip: \"February precipitation (inches)\"},\n        {title: \"Mar\", field: \"mar\", width: 80, sorter: \"number\", formatter: formatPrecipitation, headerTooltip: \"March precipitation (inches)\"},\n        {title: \"Apr\", field: \"apr\", width: 80, sorter: \"number\", formatter: formatPrecipitation, headerTooltip: \"April precipitation (inches)\"},\n        {title: \"May\", field: \"may\", width: 80, sorter: \"number\", formatter: formatPrecipitation, headerTooltip: \"May precipitation (inches)\"},\n        {title: \"Jun\", field: \"jun\", width: 80, sorter: \"number\", formatter: formatPrecipitation, headerTooltip: \"June precipitation (inches)\"},\n        {title: \"Jul\", field: \"jul\", width: 80, sorter: \"number\", formatter: formatPrecipitation, headerTooltip: \"July precipitation (inches)\"},\n        {title: \"Aug\", field: \"aug\", width: 80, sorter: \"number\", formatter: formatPrecipitation, headerTooltip: \"August precipitation (inches)\"},\n        {title: \"Sep\", field: \"sep\", width: 80, sorter: \"number\", formatter: formatPrecipitation, headerTooltip: \"September precipitation (inches)\"},\n        {title: \"Oct\", field: \"oct\", width: 80, sorter: \"number\", formatter: formatPrecipitation, headerTooltip: \"October precipitation (inches)\"},\n        {title: \"Nov\", field: \"nov\", width: 80, sorter: \"number\", formatter: formatPrecipitation, headerTooltip: \"November precipitation (inches)\"},\n        {title: \"Dec\", field: \"dec\", width: 80, sorter: \"number\", formatter: formatPrecipitation, headerTooltip: \"December precipitation (inches)\"},\n        {\n            title: \"MJJA\", \n            field: \"mjja\", \n            width: 90, \n            sorter: \"number\", \n            formatter: formatPrecipitation,\n            headerTooltip: \"May-June-July-August total (growing season)\",\n            cssClass: \"highlight-summer\"\n        },\n        {\n            title: \"Annual\", \n            field: \"annual\", \n            width: 90, \n            sorter: \"number\", \n            formatter: formatPrecipitation,\n            headerTooltip: \"Annual total precipitation\",\n            cssClass: \"highlight-annual\"\n        }\n    ];\n}\n\n// Get network parameter from URL\nfunction getNetworkFromURL() {\n    const urlParams = new URLSearchParams(window.location.search);\n    return urlParams.get('network') || 'IA_ASOS';\n}\n\n// Load and process precipitation data from the existing table\nfunction loadTableData() {\n    const tableElement = document.querySelector('#original-table');\n    if (!tableElement) {\n        return [];\n    }\n\n    const rows = tableElement.querySelectorAll('tbody tr');\n    const data = [];\n\n    rows.forEach(row => {\n        const cells = row.querySelectorAll('td');\n        if (cells.length >= 16) {\n            // Extract station ID from the link\n            const linkElement = cells[0].querySelector('a');\n            const stationId = linkElement ? linkElement.textContent.trim() : cells[0].textContent.trim();\n\n            data.push({\n                id: stationId,\n                name: cells[1].textContent.trim(),\n                jan: cells[2].textContent.trim(),\n                feb: cells[3].textContent.trim(),\n                mar: cells[4].textContent.trim(),\n                apr: cells[5].textContent.trim(),\n                may: cells[6].textContent.trim(),\n                jun: cells[7].textContent.trim(),\n                jul: cells[8].textContent.trim(),\n                aug: cells[9].textContent.trim(),\n                sep: cells[10].textContent.trim(),\n                oct: cells[11].textContent.trim(),\n                nov: cells[12].textContent.trim(),\n                dec: cells[13].textContent.trim(),\n                mjja: cells[14].textContent.trim(),\n                annual: cells[15].textContent.trim()\n            });\n        }\n    });\n\n    return data;\n}\n\n// Initialize the Tabulator table\nfunction initializeTable() {\n    // Load data from existing table\n    originalData = loadTableData();\n    \n    if (originalData.length === 0) {\n        return;\n    }\n\n    // Create Tabulator table\n    precipTable = new Tabulator(\"#precipitation-tabulator-table\", {\n        ...commonConfig,\n        columns: getPrecipitationColumns(),\n        data: originalData\n    });\n\n    // Show the new table and controls\n    const container = document.getElementById('tabulator-container');\n    container.classList.remove('d-none');\n    const controls = document.getElementById('table-controls');\n    controls.classList.remove('d-none');\n    controls.removeAttribute('aria-hidden');\n    if (statusEl) {statusEl.textContent = 'Interactive table loaded. Use header inputs to filter and column headers to sort.';}\n    \n    // Hide the original table and button\n    const original = document.getElementById('original-table');\n    original.style.display = 'none';\n    const btn = document.getElementById('create-grid');\n    btn.style.display = 'none';\n    btn.setAttribute('aria-expanded', 'true');\n}\n\n// Setup table control event handlers\nfunction setupControls() {\n    // Download CSV button\n    document.getElementById('download-csv').addEventListener('click', () => {\n        if (precipTable) {\n            const year = new URLSearchParams(window.location.search).get('year') || new Date().getFullYear();\n            const network = getNetworkFromURL();\n            precipTable.download(\"csv\", `${network}_${year}_precipitation.csv`);\n        }\n    });\n\n    // Download JSON button\n    document.getElementById('download-json').addEventListener('click', () => {\n        if (precipTable) {\n            const year = new URLSearchParams(window.location.search).get('year') || new Date().getFullYear();\n            const network = getNetworkFromURL();\n            precipTable.download(\"json\", `${network}_${year}_precipitation.json`);\n        }\n    });\n\n    // Copy to clipboard button\n    document.getElementById('copy-clipboard').addEventListener('click', () => {\n        if (precipTable) {\n            precipTable.copyToClipboard(\"active\");\n        }\n    });\n\n    // Clear all filters button\n    document.getElementById('clear-filters').addEventListener('click', () => {\n        if (precipTable) {\n            precipTable.clearHeaderFilter();\n        }\n    });\n}\n\n// Initialize the application\ndocument.addEventListener('DOMContentLoaded', () => {\n    statusEl = document.getElementById('precip-status');\n    // Setup the \"Interactive Grid\" button\n    const createGridButton = document.getElementById('create-grid');\n    if (createGridButton) {\n        createGridButton.addEventListener('click', () => {\n            if (statusEl) {statusEl.textContent = 'Initializing interactive table…';}\n            initializeTable();\n        });\n    }\n\n    // Setup table controls\n    setupControls();\n});"
  },
  {
    "path": "htdocs/ASOS/reports/mon_prec.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\n\n$network = isset($_GET[\"network\"]) ? xssafe($_GET[\"network\"]) : \"IA_ASOS\";\n$year = get_int404(\"year\", date(\"Y\"));\n\n$netselect = selectNetworkType(\"ASOS\", $network);\n$yselect = yearSelect(2004, $year, \"year\");\n\ndefine(\"IEM_APPID\", 29);\n$t = new MyView();\n$t->title = \"{$year} {$network} Monthly Precipitation\";\n\n$pgconn = iemdb(\"iem\");\n$nt = new NetworkTable($network);\n$cities = $nt->table;\n\n$stname = iem_pg_prepare($pgconn, <<<EOM\nSELECT \n id,\n sum(pday) as precip,\n extract(month from day) as month\nFROM summary_{$year} s JOIN stations t ON (t.iemid = s.iemid)\nWHERE\n network = $1\n and pday >= 0\nGROUP by id, month\nEOM\n);\n$rs = pg_execute($pgconn, $stname, array($network));\n$data = array();\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n    if (!array_key_exists($row['id'], $data)) {\n        $data[$row['id']] = array(\n            null, null, null, null, null, null, null,\n            null, null, null, null, null\n        );\n    }\n    $data[$row[\"id\"]][intval($row[\"month\"]) - 1] = $row[\"precip\"];\n}\n$t->headextra = <<<EOM\n<link type=\"text/css\" href=\"https://unpkg.com/tabulator-tables@6.3.1/dist/css/tabulator_bootstrap5.min.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"mon_prec.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script type=\"module\" src=\"mon_prec.module.js?v=2\"></script>\nEOM;\n\nreset($data);\nfunction friendly($val)\n{\n    if (is_null($val)) return \"M\";\n    return sprintf(\"%.2f\", $val);\n}\n$table = \"\";\nforeach ($data as $key => $val) {\n    $table .= sprintf(\n        \"<tr><td><a href=\\\"/sites/site.php?station=%s&network=%s\\\">%s</a></td><td>%s</td>\n  <td>%s</td><td>%s</td><td>%s</td>\n  <td>%s</td><td>%s</td><td>%s</td>\n  <td>%s</td><td>%s</td><td>%s</td>\n  <td>%s</td><td>%s</td><td>%s</td>\n  <td>%.2f</td><td>%.2f</td>\n  </tr>\",\n        $key,\n        $network,\n        $key,\n        $cities[$key][\"name\"],\n        friendly($val[0]),\n        friendly($val[1]),\n        friendly($val[2]),\n        friendly($val[3]),\n        friendly($val[4]),\n        friendly($val[5]),\n        friendly($val[6]),\n        friendly($val[7]),\n        friendly($val[8]),\n        friendly($val[9]),\n        friendly($val[10]),\n        friendly($val[11]),\n        array_sum(array_slice($val, 4, 4)),\n        array_sum($val)\n    );\n}\n\n$d = date(\"d M Y h a\");\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/ASOS/\">ASOS Mainpage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">{$year} {$network} Precipitation Report</li>\n</ol>\n</nav>\n\n<h1 class=\"h4 mb-3\">{$year} {$network} Monthly Precipitation</h1>\n<p>This table was generated at <strong>{$d}</strong> and is based on available ASOS data. <strong>No attempt was made to estimate missing data.</strong></p>\n\n<form name=\"change\" class=\"mb-4\">\n<div class=\"row align-items-end\">\n    <div class=\"col-md-4 mb-3\">\n        <label for=\"network\" class=\"form-label\">Network:</label>\n        {$netselect}\n    </div>\n    <div class=\"col-md-4 mb-3\">\n        <label for=\"year\" class=\"form-label\">Year:</label>\n        {$yselect}\n    </div>\n    <div class=\"col-md-4 mb-3\">\n        <button type=\"submit\" class=\"btn btn-primary\">Change Year</button>\n    </div>\n</div>\n</form>\n\n<div>\n    <div class=\"d-flex justify-content-between align-items-center mb-3\">\n            <h2 class=\"h5 mb-0\">Monthly Precipitation Data</h2>\n            <button id=\"create-grid\" type=\"button\" class=\"btn btn-success\" aria-controls=\"tabulator-container precip-status\" aria-expanded=\"false\">Make Table Interactive</button>\n    </div>\n\n    <div id=\"precip-status\" class=\"mb-3 visually-hidden\" role=\"status\" aria-live=\"polite\"></div>\n\n<!-- Tabulator Table Controls (hidden initially) -->\n<div id=\"table-controls\" class=\"d-none\" aria-hidden=\"true\">\n    <div class=\"d-flex flex-wrap align-items-center\">\n        <div class=\"btn-group me-3 mb-2\" role=\"group\" aria-label=\"Download data\">\n            <button id=\"download-csv\" type=\"button\" class=\"btn btn-outline-primary\">\n                <i class=\"bi bi-download\" aria-hidden=\"true\"></i> Download CSV\n            </button>\n            <button id=\"download-json\" type=\"button\" class=\"btn btn-outline-primary\">\n                <i class=\"bi bi-download\" aria-hidden=\"true\"></i> Download JSON\n            </button>\n        </div>\n        <div class=\"btn-group me-3 mb-2\" role=\"group\" aria-label=\"Utility actions\">\n            <button id=\"copy-clipboard\" type=\"button\" class=\"btn btn-outline-secondary\">\n                <i class=\"bi bi-clipboard\" aria-hidden=\"true\"></i> Copy\n            </button>\n            <button id=\"clear-filters\" type=\"button\" class=\"btn btn-outline-warning\">\n                <i class=\"bi bi-funnel\" aria-hidden=\"true\"></i> Clear Filters\n            </button>\n        </div>\n    </div>\n</div>\n\n<!-- Modern Tabulator Table (hidden initially) -->\n<div id=\"tabulator-container\" class=\"d-none\" aria-label=\"Interactive precipitation data table\">\n    <div id=\"precipitation-tabulator-table\"></div>\n</div>\n\n<!-- Original Table (shown initially) -->\n<div id=\"original-table\">\n<table class=\"table table-striped table-sm\" id=\"datagrid\">\n<caption class=\"text-start\">Monthly and seasonal (MJJA) precipitation totals (inches) for stations in the {$network} network, year {$year}. M denotes missing.</caption>\n<thead class=\"sticky\">\n<tr>\n<th>ID</th>\n<th>Name</th>\n<th>Jan</th>\n<th>Feb</th>\n<th>Mar</th>\n<th>Apr</th>\n<th>May</th>\n<th>Jun</th>\n<th>Jul</th>\n<th>Aug</th>\n<th>Sep</th>\n<th>Oct</th>\n<th>Nov</th>\n<th>Dec</th>\n<th><strong>MJJA</strong></th>\n<th><strong>Year</strong></th>\n</tr>\n</thead>\n<tbody>\n{$table}\n</tbody>\n</table>\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/AWOS/current.phtml",
    "content": "<?php\nheader(\"Location: /ASOS/current.phtml\");\n"
  },
  {
    "path": "htdocs/AWOS/index.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 64);\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Iowa AWOS Network\";\n$t->content = <<<EOM\n\n<h3>Iowa AWOS Network</h3>\n\n<p>The term \"AWOS\" is typically applied to a subset of ASOS stations (airport\nweather stations) that are not federally owned.  Over the years, the IEM has\ncollected some datasets and products that are limited to AWOS sites in Iowa.\nThis page details these Iowa-specific AWOS products.  The main page for data\nfrom these sites resides with the <a href=\"/ASOS/\">ASOS Mainpage</a>.</p>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n\n<h3>Docs:</h3>\n<ul>\n<li><b>27 Oct 2004:</b> <a href=\"/onsite/news.phtml?id=300\">About AWOS 80+ Dewpoints</a></li>\n<li><a href=\"manual/\">ADAS/AWOS Manual</a></li>\n<li><a href=\"skyc.phtml\">Note about archived cloud coverages</a></li>\n</ul>\n\n<p><h3>Archived One Minute Data:</h3>\n\n<p>The Iowa DOT kept an one minute interval archive of their data between\n1995 and <strong>1 April 2011</strong>.  Due to communication changes, \nthis archival was discontinued.  You can download data from this archive at the \nlinks below. \n\n<ul>\n  <li><a href=\"/plotting/awos/1station_1min.php\">Daily Data Plotting</a></li>\n  <li><a href=\"/request/awos/1min.php\">Download/View/Plot Archived Data</a></li>\n</ul>\n\n</div>\n<div class=\"col-md-6\">\n\n<h3>QC Info:</h3>\n<ul>\n<li>Sites <a href=\"/QC/offline.php\">offline</a></li>\n<li><a href=\"/QC/tickets.phtml\">Open Trouble Tickets</a></li>\n</ul>\n\n</div>\n</div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/AWOS/reports/mon_prec.php",
    "content": "<?php\nheader(\"Location: /ASOS/reports/mon_prec.php\");\n"
  },
  {
    "path": "htdocs/AWOS/skyc.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"AWOS Archive | Sky Coverages\";\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/AWOS/\">AWOS</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">AWOS Sky Coverage Codes</li>\n</ol>\n</nav>\n\n<h3>AWOS Sky Coverages</h3>\n\n<p>The Iowa DOT provides the IEM with an <a href=\"/request/awos/1min.php\">archive of 1 minute observations</a>\nfrom their AWOS network.  This archive contains numerically coded values for\nsky coverage.  Unfortunately, there does not appear to be a definitive cross\nreference to match these values up to something humans can understand (ex. overcast).\nHere is our (Harry Hillaker and Daryl Herzmann) educated guess at a cross reference\nto what the sky coverage codes mean that are found in the archive.</p>\n\n<div class=\"table-responsive\">\n<table class=\"table table-bordered table-striped\">\n<thead class=\"table-light\">\n<tr>\n  <th>Code</th>\n  <th>Translated Code:</th>\n  <th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n\n<tr><th>0</th><th>NOREPORT</th>\n  <td>No report, since lower cloud layers are obstructing.</td></tr>\n\n<tr><th>1</th><th>SCATTERED</th>\n  <td>Scattered (10% to 50% coverage)</td></tr>\n\n<tr><th>2</th><th>BROKEN</th>\n  <td>Broken (60% to 90% coverage)</td></tr>\n\n<tr><th>4</th><th>OVERCAST</th>\n  <td>Overcast (More than 90% coverage)</td></tr>\n\n<tr><th>8</th><th>OBSCURATION</th>\n  <td>Full obscuration (no ceiling or cloud amount available)</td></tr>\n\n<tr><th>17</th><th>OBSCURATION</th>\n  <td>Partial obscuration, lowest cloud layer is scattered.</td></tr>\n\n<tr><th>18</th><th>OBSCURATION</th>\n  <td>Partial obscuration, lowest cloud layer is broken.</td></tr>\n\n<tr><th>20</th><th>OBSCURATION</th>\n  <td>Partial obscuration, lowest cloud layer is overcast.</td></tr>\n\n<tr><th>32</th><th>INDEFINITE</th>\n  <td>Indefinite ceiling (no cloud cover amount available?)</td></tr>\n\n<tr><th>64</th><th>CLEAR</th>\n  <td>No clouds below 12000 feet</td></tr>\n\n<tr><th>128</th><th>FEW</th>\n  <td>Few (less than 10% coverage)</td></tr>\n\n<tr><th>255</th><th>MISSING</th>\n  <td>Missing (sky condition not measured).</td></tr>\n\n<tr><th>*</th><th>UNKNOWNCODE</th>\n  <td>All other values that may appear in the database.</td></tr>\n\n</tbody>\n</table>\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/COOP/7am-app.js",
    "content": "/* global ol */\nlet renderattr = 'pday';\nlet map = null;\nlet coopLayer = null;\nlet azosLayer = null;\nlet mrmsLayer = null;\nlet cocorahsLayer = null;\n\n/**\n * Replace HTML special characters with their entity equivalents\n * @param string val\n * @returns string converted string\n */\nfunction escapeHTML(val) {\n    return val\n        .replace(/&/g, '&amp;')\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/\"/g, '&quot;')\n        .replace(/'/g, '&#039;');\n}\n\n/**\n * Format date as YYMMDD string\n * @param {Date} date\n * @returns {string}\n */\nfunction formatDateYYMMDD(date) {\n    const year = date.getFullYear().toString().substring(2);\n    const month = (date.getMonth() + 1).toString().padStart(2, '0');\n    const day = date.getDate().toString().padStart(2, '0');\n    return year + month + day;\n}\n\n/**\n * Format date as YYYY-MM-DD string\n * @param {Date} date\n * @returns {string}\n */\nfunction formatDateISO(date) {\n    const year = date.getFullYear();\n    const month = (date.getMonth() + 1).toString().padStart(2, '0');\n    const day = date.getDate().toString().padStart(2, '0');\n    return `${year}-${month}-${day}`;\n}\n\n/**\n * Parse YYMMDD string to Date object\n * @param {string} dateStr\n * @returns {Date}\n */\nfunction parseDateYYMMDD(dateStr) {\n    const year = parseInt(`20${dateStr.substring(0, 2)}`, 10);\n    const month = parseInt(dateStr.substring(2, 4), 10) - 1;\n    const day = parseInt(dateStr.substring(4, 6), 10);\n    return new Date(year, month, day);\n}\n\n/**\n * Parse YYYY-MM-DD string to Date object without timezone issues\n * @param {string} dateStr\n * @returns {Date}\n */\nfunction parseDateISO(dateStr) {\n    const parts = dateStr.split('-');\n    const year = parseInt(parts[0]);\n    const month = parseInt(parts[1]) - 1; // Month is 0-based\n    const day = parseInt(parts[2]);\n    return new Date(year, month, day);\n}\n\n/**\n * Add days to a date string without timezone issues\n * @param {string} dateStr - YYYY-MM-DD format\n * @param {number} days - Number of days to add (can be negative)\n * @returns {string} - New date in YYYY-MM-DD format\n */\nfunction addDaysToDateString(dateStr, days) {\n    const date = parseDateISO(dateStr);\n    date.setDate(date.getDate() + days);\n    return formatDateISO(date);\n}\n\n/**\n * Migrate legacy hash URLs to URLSearchParams\n * This maintains backward compatibility with old bookmarked URLs\n * Legacy format: #240610/pday\n * New format: ?date=240610&attr=pday\n */\nfunction migrateLegacyHashURLs() {\n    const hash = window.location.hash;\n    if (hash && hash.length > 1) {\n        const hashContent = hash.substring(1); // Remove the # character\n        const subtokens = hashContent.split('/');\n        \n        if (subtokens.length >= 1) {\n            const url = new URL(window.location);\n            \n            // Clear the hash and set as URL parameters\n            url.hash = '';\n            url.searchParams.set('date', subtokens[0]);\n            \n            if (subtokens.length > 1) {\n                url.searchParams.set('attr', subtokens[1]);\n            }\n            \n            // Replace the URL without adding to history\n            window.history.replaceState({}, '', url);\n            \n            return {\n                date: subtokens[0],\n                attr: subtokens.length > 1 ? subtokens[1] : null\n            };\n        }\n    }\n    return null;\n}\n\n/**\n * Parse URL parameters to set initial state\n * Handles both URLSearchParams and legacy hash URLs (with migration)\n */\nfunction parseURLParams() {\n    // First, check for legacy hash URLs and migrate them\n    const migrated = migrateLegacyHashURLs();\n    \n    // Get current URL parameters (either from migration or existing params)\n    const params = new URLSearchParams(window.location.search);\n    const dateParam = params.get('date') || (migrated?.date);\n    const attrParam = params.get('attr') || (migrated?.attr);\n    \n    if (attrParam) {\n        renderattr = escapeHTML(attrParam);\n        const renderAttrElement = document.getElementById('renderattr');\n        if (renderAttrElement instanceof HTMLSelectElement) {\n            renderAttrElement.value = renderattr;\n        }\n    }\n    \n    if (dateParam) {\n        const dt = parseDateYYMMDD(escapeHTML(dateParam));\n        const datepickerElement = document.getElementById('datepicker');\n        if (datepickerElement instanceof HTMLInputElement) {\n            datepickerElement.value = formatDateISO(dt);\n        }\n    }\n}\n\n/**\n * Update URL with current parameters using URLSearchParams\n */\nfunction updateURL() {\n    const datepickerElement = document.getElementById('datepicker');\n    if (!(datepickerElement instanceof HTMLInputElement)) {return;}\n\n    // Use parseDateISO to avoid timezone issues instead of new Date()\n    const selectedDate = parseDateISO(datepickerElement.value);\n    const tt = formatDateYYMMDD(selectedDate);\n    \n    const url = new URL(window.location);\n    url.searchParams.set('date', tt);\n    url.searchParams.set('attr', renderattr);\n    \n    // Clear any legacy hash\n    url.hash = '';\n    \n    // Update URL without page reload\n    window.history.replaceState({}, '', url);\n}\n\nfunction updateMap() {\n    const renderattrElement = document.getElementById('renderattr');\n    if (renderattrElement instanceof HTMLSelectElement) {\n        renderattr = escapeHTML(renderattrElement.value);\n    }\n    coopLayer.setStyle(coopLayer.getStyle());\n    azosLayer.setStyle(azosLayer.getStyle());\n    updateURL();\n    // Announce change to assistive tech\n    const status = document.getElementById('status');\n    if (status) {\n        const label = renderattrElement?.selectedOptions?.[0]?.text || renderattr;\n        status.textContent = `Parameter updated: ${label}`;\n    }\n}\n\nfunction updateDate() {\n    // We have a changed date, hello!\n    const datepickerElement = document.getElementById('datepicker');\n    if (!(datepickerElement instanceof HTMLInputElement)) {return;}\n\n    // Use parseDateISO to avoid timezone issues instead of new Date()\n    const selectedDate = parseDateISO(datepickerElement.value);\n    const fullDate = formatDateISO(selectedDate);\n\n    // Create new sources with updated URLs to force refresh\n    // This ensures OpenLayers actually fetches new data\n    cocorahsLayer.setSource(new ol.source.Vector({\n        format: new ol.format.GeoJSON(),\n        projection: ol.proj.get('EPSG:3857'),\n        url: `/geojson/7am.py?group=cocorahs&dt=${fullDate}`,\n    }));\n    \n    coopLayer.setSource(new ol.source.Vector({\n        format: new ol.format.GeoJSON(),\n        projection: ol.proj.get('EPSG:3857'),\n        url: `/geojson/7am.py?group=coop&dt=${fullDate}`,\n    }));\n    \n    azosLayer.setSource(new ol.source.Vector({\n        format: new ol.format.GeoJSON(),\n        projection: ol.proj.get('EPSG:3857'),\n        url: `/geojson/7am.py?group=azos&dt=${fullDate}`,\n    }));\n\n    mrmsLayer.setSource(\n        new ol.source.XYZ({\n            url: get_tms_url(),\n        })\n    );\n    updateURL();\n    const status = document.getElementById('status');\n    if (status) {\n        status.textContent = `Date updated: ${fullDate}`;\n    }\n}\n\nfunction pretty(val) {\n    if (val === null || val === undefined) {return 'M';}\n    if (val === 0.0001) {return 'T';}\n    return val;\n}\n\nfunction makeVectorLayer(dt, title, group) {\n    return new ol.layer.Vector({\n        title,\n        source: new ol.source.Vector({\n            format: new ol.format.GeoJSON(),\n            projection: ol.proj.get('EPSG:3857'),\n            url: `/geojson/7am.py?group=${group}&dt=${dt}`,\n        }),\n        style(feature) {\n            let txt = feature.get(renderattr) === 0.0001 ? 'T' : feature.get(renderattr);\n            txt = txt === null || txt === undefined ? '.' : txt;\n            return [\n                new ol.style.Style({\n                    text: new ol.style.Text({\n                        font: '14px Calibri,sans-serif',\n                        text: txt.toString(),\n                        stroke: new ol.style.Stroke({\n                            color: '#fff',\n                            width: 3,\n                        }),\n                        fill: new ol.style.Fill({\n                            color: 'black',\n                        }),\n                    }),\n                }),\n            ];\n        },\n    });\n}\nfunction get_tms_url() {\n    // Generate the TMS URL given the current settings\n    const datepickerElement = document.getElementById('datepicker');\n    if (!(datepickerElement instanceof HTMLInputElement)) {return '';}\n\n    // Use parseDateISO to avoid timezone issues instead of new Date()\n    const selectedDate = parseDateISO(datepickerElement.value);\n    const dateStr = formatDateISO(selectedDate);\n    return `https://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/idep0::mrms-12z24h::${dateStr}/{z}/{x}/{y}.png`;\n}\n\nfunction buildUI() {\n    const renderAttrElement = document.getElementById('renderattr');\n    if (renderAttrElement) {\n        renderAttrElement.addEventListener('change', () => {\n            updateMap();\n        });\n    }\n\n    // Set up date input with HTML5 date type\n    const datepickerElement = document.getElementById('datepicker');\n    if (datepickerElement instanceof HTMLInputElement) {\n        datepickerElement.type = 'date';\n        datepickerElement.min = '2009-02-01';\n        datepickerElement.max = formatDateISO(new Date());\n        datepickerElement.value = formatDateISO(new Date());\n        datepickerElement.addEventListener('change', () => {\n            updateDate();\n        });\n    }\n\n    const minusDayElement = document.getElementById('minusday');\n    if (minusDayElement) {\n        minusDayElement.addEventListener('click', (event) => {\n            event.preventDefault(); // Prevent form submission\n            const datepicker = document.getElementById('datepicker');\n            if (datepicker instanceof HTMLInputElement) {\n                if (datepicker.value) {\n                    datepicker.value = addDaysToDateString(datepicker.value, -1);\n                    updateDate();\n                }\n            }\n        });\n    }\n\n    const plusDayElement = document.getElementById('plusday');\n    if (plusDayElement) {\n        plusDayElement.addEventListener('click', (event) => {\n            event.preventDefault(); // Prevent form submission\n            const datepicker = document.getElementById('datepicker');\n            if (datepicker instanceof HTMLInputElement) {\n                if (datepicker.value) {\n                    datepicker.value = addDaysToDateString(datepicker.value, 1);\n                    updateDate();\n                }\n            }\n        });\n    }\n}\ndocument.addEventListener('DOMContentLoaded', () => {\n    buildUI();\n    parseURLParams();\n\n    // Get the date from the datepicker after parseURLParams() has run\n    // This will be either the URL date or today's date (set by buildUI)\n    const datepickerElement = document.getElementById('datepicker');\n    let currentDate = formatDateISO(new Date());\n    if (datepickerElement instanceof HTMLInputElement) {\n        if (datepickerElement.value) {\n            currentDate = datepickerElement.value;\n        }\n    }\n    \n    cocorahsLayer = makeVectorLayer(currentDate, 'IA CoCoRaHS Reports', 'cocorahs');\n    coopLayer = makeVectorLayer(currentDate, 'NWS COOP Reports', 'coop');\n    azosLayer = makeVectorLayer(currentDate, 'ASOS/AWOS Reports', 'azos');\n\n    mrmsLayer = new ol.layer.Tile({\n        title: 'MRMS 12z 24 Hour',\n        source: new ol.source.XYZ({\n            url: get_tms_url(),\n        }),\n    });\n\n    map = new ol.Map({\n        target: 'map',\n        layers: [\n            mrmsLayer,\n            new ol.layer.Tile({\n                title: 'County Boundaries',\n                source: new ol.source.XYZ({\n                    url: '/c/tile.py/1.0.0/uscounties/{z}/{x}/{y}.png',\n                }),\n            }),\n            new ol.layer.Tile({\n                title: 'State Boundaries',\n                source: new ol.source.XYZ({\n                    url: '/c/tile.py/1.0.0/usstates/{z}/{x}/{y}.png',\n                }),\n            }),\n            new ol.layer.Tile({\n                title: 'NWS CWA Boundaries',\n                source: new ol.source.XYZ({\n                    url: '/c/tile.py/1.0.0/wfo/{z}/{x}/{y}.png',\n                }),\n            }),\n            cocorahsLayer,\n            coopLayer,\n            azosLayer,\n        ],\n        view: new ol.View({\n            projection: 'EPSG:3857',\n            center: [-10505351, 5160979],\n            zoom: 7,\n        }),\n    });\n\n    const layerSwitcher = new ol.control.LayerSwitcher();\n    map.addControl(layerSwitcher);\n\n    const element = document.getElementById('popup');\n\n    const popup = new ol.Overlay({\n        element,\n        positioning: 'bottom-center',\n        stopEvent: false,\n    });\n    map.addOverlay(popup);\n\n    // Simple popover implementation to replace Bootstrap popover\n    let popoverVisible = false;\n\n    function showPopover(content) {\n        if (element) {\n            // Put content directly in the popup element\n            element.innerHTML = content;\n\n            // Use CSS classes instead of inline styles\n            element.classList.add('popup-visible');\n            popoverVisible = true;\n        }\n    }\n\n    function hidePopover() {\n        if (element && popoverVisible) {\n            element.classList.remove('popup-visible');\n            element.innerHTML = '';\n            popoverVisible = false;\n        }\n    }\n\n    // display popup on click\n    map.on('click', evt => {\n        const feature = map.forEachFeatureAtPixel(evt.pixel, feature2 => {\n            return feature2;\n        });\n        if (feature) {\n            const geometry = feature.getGeometry();\n            const coord = geometry.getCoordinates();\n            popup.setPosition(coord);\n            const link = `/sites/site.php?station=${feature.getId()}&network=${feature.get('network')}`;\n            const dt = new Date(feature.get('valid'));\n            const content = [\n                `<p><strong><a href=\"${link}\" target=\"_new\">${feature.getId()}</a> ${feature.get('name')}</strong>`,\n                `<br />Hour of Ob: ${feature.get('hour')}`,\n                `<br />High: ${pretty(feature.get('high'))}`,\n                `<br />Low: ${pretty(feature.get('low'))}`,\n                `<br />Temp at Ob: ${pretty(feature.get('coop_tmpf'))}`,\n                `<br />Precip: ${pretty(feature.get('pday'))}`,\n                `<br />Snow: ${pretty(feature.get('snow'))}`,\n                `<br />Snow Depth: ${pretty(feature.get('snowd'))}`,\n                `<br />Valid: ${dt}`,\n                '</p>',\n            ];\n            showPopover(content.join(''));\n        } else {\n            hidePopover();\n        }\n    });\n});\n"
  },
  {
    "path": "htdocs/COOP/7am.css",
    "content": ".map {\n    height: 400px;\n    width: 100%;\n    background-color: #FFFFFF;\n}\n\n.popover {\n    width: 300px;\n}\n\n/* Custom popup styles for map feature popover */\n#popup {\n    position: relative;\n    background: white;\n    border: 1px solid #ccc;\n    border-radius: 5px;\n    padding: 10px;\n    box-shadow: 0 2px 10px rgba(0,0,0,0.2);\n    font-size: 12px;\n    line-height: 1.4;\n    min-width: 200px;\n    max-width: 300px;\n    display: none; /* Hidden by default */\n}\n\n/* Visible state for popup */\n#popup.popup-visible {\n    display: block;\n}\n\n/* Style for links within popup */\n#popup a {\n    color: #0066cc;\n    text-decoration: none;\n}\n\n#popup a:hover {\n    text-decoration: underline;\n}\n\n/* Strong text styling within popup */\n#popup strong {\n    font-weight: bold;\n}"
  },
  {
    "path": "htdocs/COOP/7am.php",
    "content": "<?php\n$OL = \"10.6.1\";\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 86);\nrequire_once \"../../include/mlib.php\";\nforce_https();\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Iowa Daily COOP Reports and Comparisons\";\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol.css\" type=\"text/css\">\n<link type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" rel=\"stylesheet\" />\n<link rel=\"stylesheet\" href=\"7am.css\" type=\"text/css\">\nEOM;\n\n$t->jsextra = <<<EOM\n<script src=\"/vendor/openlayers/{$OL}/ol.js\" type=\"text/javascript\"></script>\n<script src='/vendor/openlayers/{$OL}/ol-layerswitcher.js'></script>\n<script src='7am-app.js?v=10'></script>\nEOM;\n\n$t->content = <<<EOM\n<nav aria-label=\"Breadcrumb\">\n    <ol class=\"breadcrumb small mb-3\">\n        <li class=\"breadcrumb-item\"><a href=\"/COOP/\">NWS COOP</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">7 AM - 24 Hour Precipitation Analysis</li>\n    </ol>\n</nav>\n\n<header class=\"mb-3\">\n    <h1 class=\"h3 mb-2\">Iowa Daily COOP Reports & Comparisons</h1>\n    <p class=\"mb-0\">Visual comparison of multiple data sources for the once-daily COOP reports. Choose a parameter and date to update the map. Data is valid for the 24-hour period ending near 7 AM local time.</p>\n</header>\n\n<form name=\"bah\" class=\"mb-3\" aria-labelledby=\"controlPanelHeading\">\n    <h2 id=\"controlPanelHeading\" class=\"visually-hidden\">Map Controls</h2>\n    <div class=\"row g-3 align-items-end\">\n        <div class=\"col-md-6\">\n            <div class=\"mb-2\">\n                <label for=\"renderattr\" class=\"form-label\">Parameter</label>\n                <select id=\"renderattr\" class=\"form-select form-select-sm\" aria-describedby=\"paramHelp\">\n                    <option value='pday'>Precipitation (inches)</option>\n                    <option value='snow'>Snowfall (inches)</option>\n                    <option value='snowd'>Snow Depth (inches)</option>\n                    <option value='high'>24 Hour High Temperature (°F)</option>\n                    <option value='low'>24 Hour Low Temperature (°F)</option>\n                    <option value='coop_tmpf'>Temperature at Observation Time (°F)</option>\n                </select>\n                <div id=\"paramHelp\" class=\"form-text\">Select the variable to render on the map.</div>\n            </div>\n            <div class=\"d-flex align-items-center gap-2 flex-wrap\">\n                <div class=\"small fw-bold\">MRMS Legend:</div>\n                <img src=\"/images/mrms_q3_p24h.png\" alt=\"Legend for MRMS 24 hour precipitation\" class=\"img-fluid\" style=\"max-height:48px\" loading=\"lazy\" decoding=\"async\" />\n            </div>\n        </div>\n        <div class=\"col-md-6\">\n            <fieldset class=\"mb-0\" aria-describedby=\"dateHelp\">\n                <legend class=\"form-label mb-1\">View Date</legend>\n                <div class=\"input-group input-group-sm\" style=\"max-width:320px;\">\n                    <button type=\"button\" id=\"minusday\" class=\"btn btn-outline-secondary\" aria-label=\"Previous Day\">-1</button>\n                    <input type=\"date\" id=\"datepicker\" class=\"form-control\" aria-label=\"Date to view\" />\n                    <button type=\"button\" id=\"plusday\" class=\"btn btn-outline-secondary\" aria-label=\"Next Day\">+1</button>\n                </div>\n                <div id=\"dateHelp\" class=\"form-text\">Select a date between Feb 1 2009 and today.</div>\n            </fieldset>\n        </div>\n    </div>\n</form>\n\n<div id=\"status\" class=\"visually-hidden\" aria-live=\"polite\" aria-atomic=\"true\"></div>\n\n<section class=\"mb-3\" aria-labelledby=\"mapHeading\">\n    <h2 id=\"mapHeading\" class=\"h5 mb-2\">Interactive Map</h2>\n    <p class=\"small text-muted mb-2\">Use the layer switcher to toggle station networks or MRMS background. Click a station label for details.</p>\n    <div id=\"map\" class=\"map\" role=\"region\" aria-label=\"COOP map display\"><div id=\"popup\" aria-live=\"polite\"></div></div>\n</section>\n\n<div id=\"popover-content\" hidden>\n    <p>This is the popover content</p>\n</div>\n\nEOM;\n$t->render(\"full.phtml\");\n"
  },
  {
    "path": "htdocs/COOP/cat.module.js",
    "content": "let currentmode = true;\n\n/**\n * Toggle visibility of table rows without data\n */\nfunction hiderows() {\n    const noDataRows = document.querySelectorAll('tr.nodata');\n    const rowShower = document.getElementById('rowshower');\n    \n    if (currentmode) {\n        noDataRows.forEach(row => {\n            row.style.display = 'none';\n        });\n        if (rowShower) {\n            rowShower.value = 'Show rows without data';\n        }\n    } else {\n        noDataRows.forEach(row => {\n            row.style.display = '';\n        });\n        if (rowShower) {\n            rowShower.value = 'Hide rows without data';\n        }\n    }\n    currentmode = !currentmode;\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    const rowShower = document.getElementById('rowshower');\n    if (rowShower) {\n        rowShower.addEventListener('click', hiderows);\n    }\n});"
  },
  {
    "path": "htdocs/COOP/cat.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 4);\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/network.php\";\n\n$station = get_str404(\"station\", \"\", 5);\n$network = get_str404(\"network\", \"IA_COOP\", 7);\n$date = get_str404(\"date\", \"\", 10);\n$sortvar = get_str404(\"sortvar\", \"\", 10);\n$year = get_int404(\"year\", date(\"Y\"));\n\nif ($date == \"\" && $station == \"\") $station = \"AMSI4\";\n$t = new MyView();\n$t->title = \"NWS COOP Observations by Date by Site\";\n\n$content = <<<EOM\n  <nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb bg-light px-3 py-2 mb-4 rounded\">\n      <li class=\"breadcrumb-item\"><a href=\"/COOP/\">NWS Cooperative Observers</a></li>\n      <li class=\"breadcrumb-item active\" aria-current=\"page\">View Reports by Date or Site</li>\n    </ol>\n  </nav>\n  <div class=\"card mb-4\">\n    <div class=\"card-body\">\n      <p>This page presents the raw observations of daily high and low temperature \n      along with precipitation and snow when available.  The dates shown are the \n      date when the observation was reported.  For observations made at 7 AM, this \n      would be a for a 24 hour period up until that time and not for that local date.\n      The timestamps shown are valid for the local timezone of that reporting station.</p>\n      <div class=\"alert alert-info mb-0\"><strong>Hint:</strong> You should be able to \n        highlight the values in the table and then copy + paste these values into a \n        spreadsheet program like Excel. A \n        <a class=\"alert-link\" href=\"/request/daily.phtml?network={$network}\">download interface</a> does exist for these\n        observations.</div>\n    </div>\n  </div>\n  <form name=\"switchnwsli\" action=\"cat.phtml\" method=\"GET\" class=\"row g-3 align-items-end mb-4 bg-white p-3 rounded shadow-sm\">\nEOM;\n\n// SCENARIO 1: Print out data for year for station\nif (strlen($station) > 0) {\n    $link = \"cat.phtml?year=$year&station=$station&network=$network&sortvar=\";\n    if ($sortvar == \"\") $sortvar = \"day\";\n    $stationselect = networkSelect($network, $station);\n    $content .= <<<EOM\n      <div class=\"col-md-6\">\n        <h3 class=\"h5 mb-2\">COOP obs listed by station</h3>\n        <div class=\"mb-2\"><i>Click on a date to get all obs for a particular date.</i></div>\n        {$stationselect}\n        <label for=\"year\" class=\"form-label\">Select Year:</label>\nEOM;\n    $content .= yearSelect(2004, $year, \"year\");\n    $content .= \"</div>\";\n}\n\n// SCENARIO 2: Print out all stations for network and date\nif (strlen($date) > 0) {\n    $year = substr($date, 0, 4);\n    $link = \"cat.phtml?date=$date&network=$network&sortvar=\";\n    if ($sortvar == \"\") $sortvar = \"station\";\n    $content .= <<<EOM\n      <div class=\"col-md-6\">\n        <h3 class=\"h5 mb-2\">COOP obs listed by date</h3>\n        <div class=\"mb-2\"><i>Click on the NWSLI to view all obs from one station.</i></div>\n        <label for=\"date\" class=\"form-label\">Enter Date:</label>\n        <input type=\"date\" name=\"date\" value=\"{$date}\" class=\"form-control mb-2\">\n      </div>\nEOM;\n}\n\n$netselect = selectNetworkType(\"COOP\", $network);\n\n$content .= <<<EOM\n      <div class=\"col-md-6\">\n        <label for=\"network\" class=\"form-label\">Select Network:</label>\n        {$netselect}\n        <button type=\"submit\" class=\"btn btn-primary mt-2\">View Data</button>\n        <button id=\"rowshower\" type=\"button\" class=\"btn btn-outline-secondary mt-2 ms-2\">Hide rows without data</button>\n      </div>\n    </form>\n\n    <div class=\"table-responsive\">\n      <table class=\"table table-striped table-bordered table-sm align-middle\">\n        <thead class=\"sticky\">\n          <tr>\n            <th><a href=\"{$link}station\">NWSLI:</a></th>\n            <th><a href=\"{$link}sname\">Site Name:</a></th>\n            <th><a href=\"{$link}day\">Date:</a></th>\n            <th><a href=\"{$link}coop_tmpf\">Temp at Ob</a></th>\n            <th><a href=\"{$link}max_tmpf\">Max Air Temp</a></th>\n            <th><a href=\"{$link}min_tmpf\">Min Air Temp</a></th>\n            <th><a href=\"{$link}pday\">Precip</a></th>\n            <th><a href=\"{$link}snow\">Snowfall</a></th>\n            <th><a href=\"{$link}snowd\">Snow Depth</a></th>\n            <th><a href=\"{$link}snoww\">Snow Water Equiv</a></th>\n          </tr>\n        </thead>\nEOM;\n\n$nt = new NetworkTable($network);\n$cities = $nt->table;\n$iemdb = iemdb(\"iem\");\n\n$sortdir = \"ASC\";\nif (\n    $sortvar == \"pday\" || $sortvar == \"snow\" || $sortvar == \"snowd\" ||\n    $sortvar == \"max_tmpf\" || $sortvar == \"snoww\"\n)\n    $sortdir = \"DESC\";\nif (strlen($station) > 0) {\n    $stname = iem_pg_prepare($iemdb, \"SELECT c.*, s.id as station, \n     s.name as sname, c.coop_valid at time zone s.tzname as cts, c.report \n     from summary_$year c, stations s\n     WHERE s.id = $1 and s.network = $2 and c.iemid = s.iemid \n     and c.day <= 'TODAY' ORDER by $sortvar $sortdir\");\n    $rs = pg_execute($iemdb, $stname, array($station, $network));\n} else {\n    $stname = iem_pg_prepare($iemdb, \"SELECT c2.*, s.id as station, \n     s.name as sname, c2.coop_valid at time zone s.tzname as cts, c2.report\n     from summary_$year c2, stations s\n     WHERE c2.day = $1\n     and s.network = $2 and c2.iemid = s.iemid ORDER by $sortvar $sortdir\");\n    $rs = pg_execute($iemdb, $stname, array($date, $network));\n}\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    $nwsli = $row[\"station\"];\n    $high = $row[\"max_tmpf\"];\n    if ($high == \"-99\" || $high == \"\") $high = \"M\";\n    if ($high > 130 || $high < -90) $high = \"M\";\n\n\n    $tmpf = $row[\"coop_tmpf\"];\n    if ($tmpf == \"-99\" || $tmpf == \"\") $tmpf = \"M\";\n    if ($tmpf > 130 || $tmpf < -90) $tmpf = \"M\";\n\n    $low = $row[\"min_tmpf\"];\n    if ($low == \"99\" || $low == \"\" || $low == -99) $low = \"M\";\n    if ($low > 130 || $low < -90) $low = \"M\";\n\n    $rain = $row[\"pday\"];\n    if ($rain == 0.0001) $rain = \"T\";\n    else if ($rain == -99 || $rain == \"\") $rain = \"M\";\n    else if ($rain > 30 || $rain < 0) $rain = \"M\";\n\n    $snow = $row[\"snow\"];\n    if ($snow == 0.0001) $snow = \"T\";\n    else if ($snow == -99 || $snow == \"\") $snow = \"M\";\n    else if ($snow > 100 || $snow < 0) $snow = \"M\";\n\n    $snowd = $row[\"snowd\"];\n    if ($snowd == 0.0001) $snowd = \"T\";\n    else if ($snowd == -99 || $snowd == \"\") $snowd = \"M\";\n    else if ($snowd > 1000 || $snowd < 0) $snowd = \"M\";\n\n    $snoww = $row[\"snoww\"];\n    if ($snoww == 0.0001) $snoww = \"T\";\n    else if ($snoww == -99 || $snoww == \"\") $snoww = \"M\";\n    else if ($snoww > 1000 || $snoww < 0) $snoww = \"M\";\n\n    $rowcontent = \"<tr><td>\";\n    if (strlen($station) > 0) {\n        $rowcontent .= $nwsli;\n    } else {\n        $rowcontent .= \"<a href=\\\"cat.phtml?station=\" . $nwsli . \"&network=\" . $network . \"\\\">\" . $nwsli . \"</a>\";\n    }\n\n    $rowcontent .= \"</td><td>\" . $cities[$nwsli][\"name\"] . \"</td>\";\n    $dstring = $row[\"day\"];\n\n    if (\n        $tmpf == \"M\" && $high == \"M\" && $low == \"M\" && $rain == \"M\"\n        && $snow == \"M\" && $snowd == \"M\"\n    ) {\n        $dddd = \"<a href=\\\"cat.phtml?date=\" . $row[\"day\"] . \"&network=\" . $network . \"\\\">\" . $dstring . \"</a>\";\n        $rowcontent = str_replace(\"<tr>\", \"<tr class=\\\"nodata\\\">\", $rowcontent) .\n            \"<td colspan=\\\"8\\\">No Observation Reported for $dddd</td></tr>\";\n    } else {\n        $rowcontent .= \"<td>\";\n        if ($row[\"cts\"]) {\n            $dstring = date(\"j M Y gA\", strtotime(substr($row[\"coop_valid\"], 0, 16)));\n        }\n\n        if (strlen($date) > 0) {\n            $rowcontent .= $dstring;\n        } else {\n            $rowcontent .= \"<a href=\\\"cat.phtml?date=\" . $row[\"day\"] . \"&network=\" . $network . \"\\\">\" . $dstring . \"</a>\";\n        }\n        $rowcontent .= \"</td><td>\" . $tmpf . \"</td><td>\" . $high . \"</td><td>\" . $low . \"</td><td>\" . $rain . \"</td><td>\" . $snow . \"</td><td>\" . $snowd . \"</td><td>\" . $snoww . \"</td></tr>\\n\";\n        if (!is_null($row[\"report\"])) {\n            $rowcontent .= sprintf(\n                '<tr><td colspan=\"8\">%s</td></tr>',\n                $row[\"report\"],\n            );\n        }\n    }\n    $content .= $rowcontent;\n}\n\n$content .= <<<EOM\n      </table>\n    </div>\n    <p class=\"mt-4\">Errors exist in this dataset and you should evaluate the observations\n    before using...</p>\n  </div>\nEOM;\n$t->content = $content;\n$t->jsextra = '<script type=\"module\" src=\"cat.module.js\"></script>';\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/COOP/current.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 41);\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/mlib.php\";\n\n$t = new MyView();\n$nt = new NetworkTable(\"WFO\");\n$mesosite = iemdb(\"mesosite\");\n\n$network = isset($_GET['network']) ? xssafe($_GET['network']) : 'IA_COOP';\n$wfo = isset($_REQUEST[\"wfo\"]) ? xssafe($_REQUEST['wfo']) : null;\n$sortcol = isset($_GET['sortcol']) ? xssafe($_GET['sortcol']) : 'ts';\n$sortdir = isset($_GET['sortdir']) ? xssafe($_GET['sortdir']) : 'desc';\nif ($sortdir != \"asc\" && $sortdir != \"desc\") $sortdir = \"desc\";\n\nfunction precip_formatter($val)\n{\n    if ($val === '') return '';\n    if ($val === 0.0001) return 'T';\n    if ($val < 0) return 'M';\n    return $val;\n}\n\nfunction make_row($dict, $oddrow)\n{\n    $s = \"<tr\";\n    if ($oddrow) $s .= ' bgcolor=\"#EEEEEE\"';\n    $s .= \">\";\n\n    $sitesurl = sprintf(\n        \"/sites/site.php?station=%s&network=%s\",\n        $dict[\"sid\"],\n        $dict[\"network\"]\n    );\n\n    $s .= <<<EOM\n    <td><input type=\"checkbox\" name=\"st[]\" value=\"{$dict[\"sid\"]}\" aria-label=\"Add {$dict['sid']} to favorites\"/></td>\n    <td><a href=\"/p.php?pid={$dict[\"raw\"]}\" class=\"btn btn-small\" aria-label=\"View source text for {$dict['sid']}\"><i class=\"bi bi-paperclip\" aria-hidden=\"true\"></i><span class=\"visually-hidden\">Source Text</span></a>\n    </td>\nEOM;\n    $s .= \"<td><a href=\\\"cat.phtml?station=\" . $dict[\"sid\"] . \"&network=\" . $dict[\"network\"] . \"\\\">\" . $dict['sid'] . \"</a></td>\";\n    $s .= \"<td><a href=\\\"$sitesurl\\\">\" . $dict[\"name\"] . \", \" . $dict[\"state\"] . \"</a></td>\";\n    $s .= \"<td>\" . $dict[\"county\"] . \"</td>\";\n\n    $fmt = (date(\"Ymd\") != date(\"Ymd\", $dict[\"ts\"])) ? 'd M Y h:i A' : 'h:i A';\n    $s .= \"<td>\" . date($fmt, $dict[\"lts\"]) . \"</td>\";\n\n    $s .= sprintf(\n        \"<td>%s</td><td><span style=\\\"color: #F00;\\\">%s</span></td>\n    <td><span style=\\\"color: #00F;\\\">%s</span></td>\",\n        $dict[\"tmpf\"] != \"\" ? $dict[\"tmpf\"] : \"M\",\n        $dict[\"max_tmpf\"] != \"\" ? $dict[\"max_tmpf\"] : \"M\",\n        $dict[\"min_tmpf\"] != \"\" ? $dict[\"min_tmpf\"] : \"M\"\n    );\n\n    $s .= sprintf(\n        \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>\",\n        precip_formatter($dict[\"pday\"]),\n        precip_formatter($dict[\"snow\"]),\n        precip_formatter($dict[\"ratio\"]),\n        precip_formatter($dict[\"snowd\"]),\n        precip_formatter($dict[\"snoww\"])\n    );\n\n    $s .= \"</tr>\\n\";\n    return $s;\n}\n\nif (is_null($wfo)) {\n    $arr = array(\n        \"network\" => $network,\n    );\n    $baseurl = \"current.phtml?network=$network\";\n} else {\n    $arr = array(\n        \"networkclass\" => \"COOP\",\n        \"wfo\" => $wfo,\n    );\n    $baseurl = \"current.phtml?wfo=$wfo\";\n}\n$jobj = iemws_json(\"currents.json\", $arr);\n\n$db = array();\nforeach ($jobj[\"data\"] as $bogus => $iemob) {\n    $site = $iemob[\"station\"];\n    $db[$site] = array(\n        'snow' => \"\", 'snowd' => \"\", 'ratio' => \"\", 'pday' => \"\",\n        'min_tmpf' => \"\", 'max_tmpf' => \"\", 'tmpf' => \"\", 'snoww' => \"\"\n    );\n    $db[$site]['ts'] = strtotime($iemob[\"local_valid\"]);\n    $db[$site]['lts'] = strtotime($iemob[\"local_valid\"]);\n    $db[$site]['sid'] = $site;\n    $db[$site]['name'] = $iemob[\"name\"];\n    $db[$site]['raw'] = $iemob[\"raw\"];\n    $db[$site]['state'] = $iemob[\"state\"];\n    $db[$site]['network'] = $iemob[\"network\"];\n    $db[$site]['county'] = $iemob[\"county\"];\n    if ($iemob[\"tmpf\"] > -100) {\n        $db[$site]['tmpf'] = $iemob[\"tmpf\"];\n    }\n    if ($iemob[\"max_tmpf\"] > -100) {\n        $db[$site]['max_tmpf'] = $iemob[\"max_tmpf\"];\n    }\n\n    if ($iemob[\"min_tmpf\"] < 99) {\n        $db[$site]['min_tmpf'] = $iemob[\"min_tmpf\"];\n    }\n\n    $db[$site]['pday'] = $iemob[\"pday\"];\n    $db[$site]['snoww'] = $iemob[\"snoww\"];\n    $db[$site]['snow'] = ($iemob[\"snow\"] >= 0) ? $iemob[\"snow\"] : \"\";\n    $db[$site]['snowd'] = ($iemob[\"snowd\"] >= 0) ? $iemob[\"snowd\"] : \"\";\n    $db[$site][\"ratio\"] = -1;\n    if ($db[$site][\"snow\"] > 0.0001 && $db[$site][\"pday\"] > 0.0001) {\n        $db[$site][\"ratio\"] = intval($db[$site][\"snow\"] / $db[$site][\"pday\"]);\n    }\n}\n\n$db = aSortBySecondIndex($db, $sortcol, $sortdir);\n\n$oddrow = true;\n$firstsection = \"\";\n$lastsection = \"\";\nforeach ($db as $site => $value) {\n    $oddrow = !$oddrow;\n    if (date(\"Ymd\", $value[\"ts\"]) == date(\"Ymd\")) {\n        $firstsection .= make_row($value, $oddrow);\n    } else {\n        $value[\"tmpf\"] = \"\";\n        $lastsection .= make_row($value, $oddrow);\n    }\n}\n\nfunction get_sortdir($baseurl, $column, $sortCol, $sortDir)\n{\n    $newSort = ($sortDir == \"asc\") ? \"desc\" : \"asc\";\n    if ($column == $sortCol) return \"{$baseurl}&sortcol=$column&sortdir=$newSort\";\n    return \"{$baseurl}&sortcol=$column&sortdir=$sortDir\";\n}\n\n$t->title = \"NWS COOP Current Sortables\";\n\n$cols = array(\n    \"ts\" => \"Valid\", \"county\" => \"County\",\n    \"sid\" => \"Site ID\", \"name\" => \"Station Name\",\n    \"ratio\" => \"Snow to Water Ratio\",\n    \"tmpf\" => \"Ob Temperature\", \"max_tmpf\" => \"24 hour High\",\n    \"min_tmpf\" => \"24 hour Low\", \"snow\" => \"24 hour Snowfall\",\n    \"snowd\" => \"Snowfall Depth\", \"pday\" => \"24 hour rainfall\",\n    \"phour\" => \"Rainfall One Hour\", \"snoww\" => \"Snow Water Equivalent\"\n);\nif (!array_key_exists($sortcol, $cols)) {\n    xssafe(\"</script>\");\n}\n$t->current_network = \"COOP\";\n\n$nselect = '<select name=\"network\" id=\"network-select\" aria-label=\"Select state network\">';\n$rs = pg_query($mesosite, \"SELECT id, name from networks where id ~* 'COOP' ORDER by name ASC\");\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n    $sel = '';\n    if ($network == $row[\"id\"]) {\n        $sel = \" selected='SELECTED'\";\n    }\n    $nselect .= sprintf(\n        \"<option value='%s'%s>%s</option>\\n\",\n        $row[\"id\"],\n        $sel,\n        $row[\"name\"]\n    );\n}\n$nselect .= \"</select>\";\n\n$wselect = \"<select name=\\\"wfo\\\" id=\\\"wfo-select\\\" aria-label=\\\"Select Weather Forecast Office\\\">\";\nforeach ($nt->table as $key => $value) {\n    $wselect .= \"<option value=\\\"$key\\\" \";\n    if ($wfo == $key) $wselect .= \"SELECTED\";\n    $wselect .= \">[\" . $key . \"] \" . $nt->table[$key][\"name\"] . \"\\n\";\n}\n$wselect .= \"</select>\";\n\n$sorts = array(\"asc\" => \"Ascending\", \"desc\" => \"Descending\");\n\n$one = get_sortdir($baseurl, \"sid\", $sortcol, $sortdir);\n$two = get_sortdir($baseurl, \"name\", $sortcol, $sortdir);\n$three = get_sortdir($baseurl, \"county\", $sortcol, $sortdir);\n$four = get_sortdir($baseurl, \"ts\", $sortcol, $sortdir);\n$five = get_sortdir($baseurl, \"tmpf\", $sortcol, $sortdir);\n$six = get_sortdir($baseurl, \"max_tmpf\", $sortcol, $sortdir);\n$seven = get_sortdir($baseurl, \"min_tmpf\", $sortcol, $sortdir);\n$eight = get_sortdir($baseurl, \"pday\", $sortcol, $sortdir);\n$nine = get_sortdir($baseurl, \"snow\", $sortcol, $sortdir);\n$ten = get_sortdir($baseurl, \"ratio\", $sortcol, $sortdir);\n$eleven = get_sortdir($baseurl, \"snowd\", $sortcol, $sortdir);\n$twelve = get_sortdir($baseurl, \"snoww\", $sortcol, $sortdir);\n\n$content = <<<EOM\n<form method=\"GET\" action=\"current.phtml\" name=\"stctrl\">\n<input type=\"hidden\" name=\"sortcol\" value=\"{$sortcol}\">\n<label for=\"network-select\">Option 1: <strong>View by State:</strong></label> {$nselect}\n<input type=\"submit\" value=\"Go!\">\n</form>\n\n<form method=\"GET\" action=\"current.phtml\" name=\"wfoctrl\">\n<input type=\"hidden\" name=\"sortcol\" value=\"{$sortcol}\">\n<label for=\"wfo-select\">Option 2: <strong>View by WFO:</strong></label> {$wselect}\n<input type=\"submit\" value=\"Go!\">\n</form>\n\n<form method=\"GET\" action=\"cat.phtml\" name=\"cat\">\n<input type=\"hidden\" name=\"network\" value=\"{$network}\">\n<label for=\"report-date\">Option 3: <strong>COOP Reports for Date:</strong></label>\n<input type=\"date\" name=\"date\" id=\"report-date\" aria-label=\"Select date for COOP reports\">\n<input type=\"submit\" value=\"Go!\">\n</form>\n\n<p>Sorted by: <strong>{$cols[$sortcol]} {$sorts[$sortdir]}</strong>.\nTimes are presented in the local time of the site. Click on the identifier to\nget all daily observations for the site.  Click on the site name to get more\ninformation on the site. Click on the column heading to sort the column, clicking\nagain will reverse the sort. A new <a href=\"/COOP/map/\">interactive map</a> app\nexists that plots this data on a map.</p>\n\n<form name=\"st\" action=\"/my/current.phtml\" method=\"GET\">\n<table class=\"table table-striped table-sm table-bordered\" aria-label=\"Current COOP observations\">\n<thead>\n<tr>\n  <th rowspan=\"2\">Add:</th>\n  <th rowspan=\"2\">Source Text:</th>\n  <th rowspan=\"2\"><a href=\"{$one}\">SiteID:</a></th>\n  <th rowspan=\"2\"><a href=\"{$two}\">Station Name:</a></th>\n  <th rowspan=\"2\"><a href=\"{$three}\">County:</a></th>\n  <th rowspan=\"2\"><a href=\"{$four}\">Valid:</a></th>\n  <th colspan=\"3\">Temperatures [F]</th>\n  <th colspan=\"5\">Hydro</th></tr>\n\n<tr>\n  <th><a href=\"{$five}\">At Ob</a></th>\n  <th><a href=\"{$six}\">24h High</a></th>\n  <th><a href=\"{$seven}\">24h Low</a></th>\n  <th><a href=\"{$eight}\">24hour Rain</a></th>\n  <th><a href=\"{$nine}\">Snowfall</a></th>\n  <th><a href=\"{$ten}\">Ratio</a></th>\n  <th><a href=\"{$eleven}\">Snow Depth</a></th>\n  <th><a href=\"{$twelve}\">SWE</a></th>\n</tr></thead>\n<tbody>\nEOM;\n\n\n$content .= <<<EOM\n{$firstsection}\n{$lastsection}\n</tbody>\n</table>\n<input type=\"submit\" value=\"Add to Favorites\">\n</form>\nEOM;\n$t->content = $content;\n$t->render('sortables.phtml');\n"
  },
  {
    "path": "htdocs/COOP/dl/normals.phtml",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 118);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n$t->title = \"NWS COOP Daily Normals\";\n\n$year = date(\"Y\");\n$network = isset($_REQUEST['network']) ? xssafe($_REQUEST['network']) : 'IACLIMATE';\n$nselect = networkSelect($network, \"\");\n$mselect = monthSelect(\"month\");\n$dselect = daySelect(\"day\");\n\n$sselect = selectNetworkType(\"CLIMATE\", $network);\n\n$t->content = <<<EOM\n\n<p>With this interface, you can download daily climate normals for NWS COOP\nsites.  Please fill out the form below:</p>\n\n<p>Data is available from the following states: \n<form name=\"sss\" method=\"GET\">\n{$sselect}\n<input type=\"submit\" value=\"Select State\">\n</form>\n\n<form method=\"GET\" action=\"/cgi-bin/request/normals.py\" name=\"dl\">\n<input type=\"hidden\" name=\"network\" value=\"{$network}\">\n<h3>1. Climatology Source:</h3>\n\n<p>The IEM maintains a set of station idenitifers that does not exactly match\nwhat NCEI uses.  When you select the NCEI climatology and an IEM station identifier,\nyou are getting the cross reference between the two idenitifer sets.  Hopefully, this\nis generally one to one, but it could be \"nearest station\"</p>\n\n<strong>Select Data Source</strong><br />\n <select name=\"source\">\n    <option value=\"climate\">IEM Climatology 1893-{$year}</option>\n    <option value=\"climate51\">IEM Climatology 1951-{$year}</option>\n    <option value=\"climate71\" SELECTED>IEM Climatology 1971-2000</option>\n    <option value=\"ncdc_climate81\">NCEI Climatology 1981-2010 *Official*</option>\n    <option value=\"ncei_climate91\">NCEI Climatology 1991-2020 *Official*</option>\n    <option value=\"climate81\">IEM Climatology 1981-2010</option>\n </select>\n\n<h3>2. Download Type:</h3>\n\n<div class=\"row\">\n  <div class=\"col-md-6\">\n    <p><b>2a. Select Station:</b><br />\n\n    <input type=\"radio\" name=\"mode\" value=\"station\" checked=\"CHECKED\">Single Station, All Days</input>\n\n    <br>{$nselect}\n\n  </div>\n  <div class=\"col-md-6\">\n    <p><b>2b. Select Month & Date:</b><br>\n\n    <input type=\"radio\" name=\"mode\" value=\"day\">All Stations, One Day</input>\n\n    <br />Select Month: {$mselect}\n    <br />Select Day: {$dselect}\n </div>\n</div>\n\n<h3>3. Download Options:</h3>\n\n<select name=\"fmt\">\n  <option value=\"online\">View Online</option>\n  <option value=\"csv\">Download to Disk (.csv)</option>\n  <option value=\"excel\" selected=\"selected\">Download as Microsoft Excel (.xlsx)</option>\n  <option value=\"json\">Download as JSON</option>\n</select><p>\n\n<h3>4. Submit Form:</h3><br>\n<input type=\"submit\" value=\"Get Data\"><input type=\"reset\">\n\n</form><p>\n\n<p><img src=\"/images/gisready.png\"> Data includes Lat/Lon information.\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/COOP/extremes.css",
    "content": "/* COOP Extremes App Styles */\n\n/* Loading indicator */\n.spinner-border {\n    width: 3rem;\n    height: 3rem;\n}\n\n/* Sticky table header */\n.sticky {\n    position: sticky;\n    top: 0;\n    background-color: var(--bs-light);\n    z-index: 10;\n}\n\n/* Table styling improvements */\n.table-responsive {\n    margin-top: 1rem;\n    overflow-x: auto;\n}\n\n/* Tabulator horizontal scrolling */\n.tabulator {\n    overflow-x: auto !important;\n    width: 100% !important;\n}\n\n.tabulator .tabulator-tableHolder {\n    overflow-x: auto !important;\n}\n\n#data-table {\n    margin-bottom: 0;\n    min-width: 1300px; /* Ensure minimum width for all columns */\n}\n\n#data-table th {\n    background-color: var(--bs-light);\n    font-weight: 600;\n    border-bottom: 2px solid var(--bs-border-color);\n}\n\n#data-table th a {\n    color: var(--bs-primary);\n    text-decoration: none;\n}\n\n#data-table th a:hover {\n    color: var(--bs-primary);\n    text-decoration: underline;\n}\n\n/* Mobile responsive improvements */\n@media (max-width: 768px) {\n    .table-responsive {\n        font-size: 0.875rem;\n    }\n    \n    #data-table th,\n    #data-table td {\n        padding: 0.5rem 0.25rem;\n        white-space: nowrap;\n    }\n    \n    /* Hide less critical columns on small screens */\n    .hide-mobile {\n        display: none;\n    }\n}\n\n/* API info styling */\n#api-info {\n    margin-top: 1rem;\n    margin-bottom: 1rem;\n}\n\n#api-info code {\n    word-break: break-all;\n    background-color: var(--bs-gray-100);\n    padding: 0.25rem 0.5rem;\n    border-radius: 0.25rem;\n}\n\n/* Form styling */\n#controls-form {\n    margin-bottom: 1rem;\n}\n\n#controls-form .table {\n    margin-bottom: 0;\n}\n\n/* Form controls styling */\n#controls-form .card {\n    border: 1px solid #dee2e6;\n    margin-bottom: 1.5rem;\n}\n\n#controls-form .card-header {\n    background-color: #f8f9fa;\n    border-bottom: 1px solid #dee2e6;\n    padding: 0.75rem 1rem;\n}\n\n#controls-form .card-header h6 {\n    color: #0d6efd;\n    font-weight: 600;\n}\n\n#controls-form .form-label {\n    font-weight: 500;\n    margin-bottom: 0.25rem;\n}\n\n#controls-form .form-select,\n#controls-form .btn {\n    font-size: 0.875rem;\n}\n\n/* Header section */\n#header-section h3 {\n    color: #0d6efd;\n    font-size: 1.5rem;\n}\n\n#header-section h4 {\n    font-size: 1.25rem;\n    font-weight: 600;\n}\n\n#header-section .text-muted {\n    font-size: 0.9rem;\n}\n\n/* Error state styling */\n.error-message {\n    color: var(--bs-danger);\n    padding: 1rem;\n    background-color: var(--bs-danger-bg-subtle);\n    border: 1px solid var(--bs-danger-border-subtle);\n    border-radius: 0.375rem;\n    margin: 1rem 0;\n}\n\n/* Mode explanation alert */\n.alert-info h5 {\n    color: #0c5460;\n    font-size: 1rem;\n    margin-bottom: 0.75rem;\n}\n\n.alert-info .row > div {\n    padding: 0.5rem;\n}\n\n.alert-info strong {\n    color: #0c5460;\n    font-size: 0.95rem;\n}\n\n.alert-info .small {\n    line-height: 1.4;\n    margin-top: 0.25rem;\n}\n\n/* Back button styling */\n.btn-outline-primary.btn-sm {\n    font-size: 0.8rem;\n    padding: 0.375rem 0.75rem;\n}\n\n/* Column grouping visual separation */\n.temp-group {\n    border-left: 3px solid var(--bs-warning);\n}\n\n.precip-group {\n    border-left: 3px solid var(--bs-info);\n}\n\n/* Sortable column indicators */\n.sortable {\n    cursor: pointer;\n    user-select: none;\n}\n\n.sortable:hover {\n    background-color: var(--bs-gray-100);\n}\n\n.sort-indicator {\n    margin-left: 0.25rem;\n    opacity: 0.5;\n    font-size: 0.75rem;\n}\n\n.sort-indicator.active {\n    opacity: 1;\n}\n\n/* Map container and view toggle */\n#view-toggle {\n    margin-bottom: 1rem;\n}\n\n#view-toggle .btn-group {\n    box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n#map-container {\n    height: 500px;\n    width: 100%;\n    border: 2px solid var(--bs-border-color);\n    border-radius: 0.375rem;\n    margin-bottom: 1rem;\n    position: relative;\n}\n\n#map-container.hidden {\n    display: none;\n}\n\n/* Map popup styling */\n.ol-popup {\n    position: absolute;\n    background-color: white;\n    box-shadow: 0 1px 4px rgba(0,0,0,0.2);\n    padding: 15px;\n    border-radius: 10px;\n    border: 1px solid #cccccc;\n    bottom: 12px;\n    left: -50px;\n    min-width: 280px;\n    max-width: 400px;\n}\n\n.ol-popup:after, .ol-popup:before {\n    top: 100%;\n    border: solid transparent;\n    content: \" \";\n    height: 0;\n    width: 0;\n    position: absolute;\n    pointer-events: none;\n}\n\n.ol-popup:after {\n    border-top-color: white;\n    border-width: 10px;\n    left: 48px;\n    margin-left: -10px;\n}\n\n.ol-popup:before {\n    border-top-color: #cccccc;\n    border-width: 11px;\n    left: 48px;\n    margin-left: -11px;\n}\n\n.ol-popup-closer {\n    text-decoration: none;\n    position: absolute;\n    top: 2px;\n    right: 8px;\n    font-size: 16px;\n    color: #999;\n}\n\n.ol-popup-closer:after {\n    content: \"✖\";\n}\n\n.ol-popup-content {\n    font-size: 14px;\n}\n\n.ol-popup-content h5 {\n    margin: 0 0 5px 0;\n    color: var(--bs-primary);\n}\n\n.popup-data-table {\n    width: 100%;\n    font-size: 12px;\n    margin-top: 8px;\n}\n\n.popup-data-table td {\n    padding: 2px 6px;\n    border-bottom: 1px solid #eee;\n}\n\n.popup-data-table .label {\n    font-weight: bold;\n    color: #666;\n}\n\n/* Mobile responsive map */\n@media (max-width: 768px) {\n    #map-container {\n        height: 400px;\n    }\n    \n    .ol-popup {\n        min-width: 200px;\n        max-width: 280px;\n        font-size: 12px;\n    }\n    \n    .map-controls {\n        position: relative;\n        top: auto;\n        left: auto;\n        margin-bottom: 10px;\n        width: 100%;\n        display: flex;\n        align-items: center;\n        gap: 8px;\n    }\n    \n    .map-controls label {\n        white-space: nowrap;\n    }\n}\n\n/* Layer switcher customization */\n.layer-switcher {\n    position: absolute;\n    top: 10px;\n    right: 10px;\n    background: rgba(255, 255, 255, 0.95);\n    border-radius: 4px;\n    box-shadow: 0 2px 4px rgba(0,0,0,0.2);\n}\n\n.layer-switcher button {\n    background: none;\n    border: none;\n    padding: 8px;\n    cursor: pointer;\n}\n\n.layer-switcher button:hover {\n    background: rgba(0,0,0,0.1);\n}\n\n/* Legend for temperature colors */\n.legend-title {\n    font-weight: bold;\n    margin-bottom: 3px;\n    color: var(--bs-primary);\n    font-size: 12px;\n}\n\n.legend-subtitle {\n    font-size: 10px;\n    color: #666;\n    margin-bottom: 3px;\n    font-style: italic;\n}\n\n.legend-item {\n    display: flex;\n    align-items: center;\n    margin-bottom: 2px;\n}\n\n.legend-color {\n    width: 12px;\n    height: 12px;\n    border-radius: 2px;\n    margin-right: 5px;\n    border: 1px solid #fff;\n}\n\n/* Map controls */\n.map-controls {\n    position: absolute;\n    top: 10px;\n    left: 10px;\n    background: rgba(255, 255, 255, 0.95);\n    padding: 12px;\n    border-radius: 6px;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.15);\n    z-index: 100;\n    font-size: 13px;\n    min-width: 200px;\n}\n\n.control-row {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    margin-bottom: 8px;\n}\n\n.control-row:last-of-type {\n    margin-bottom: 0;\n}\n\n.control-row label {\n    font-weight: 500;\n    margin: 0;\n    white-space: nowrap;\n}\n\n/* Year filter specific styling */\n.control-row:has(#year-filter) {\n    border-top: 1px solid #e9ecef;\n    padding-top: 8px;\n    margin-top: 8px;\n}\n\n.control-row:has(#year-filter) label {\n    color: #6c757d;\n    font-size: 12px;\n}\n\n.legend-row {\n    display: flex;\n    align-items: flex-start;\n    gap: 8px;\n}\n\n.legend-row label {\n    font-weight: 500;\n    margin: 0;\n    white-space: nowrap;\n    margin-top: 2px;\n}\n\n.map-legend {\n    flex: 1;\n    font-size: 11px;\n}\n\n.map-controls select {\n    width: auto;\n    display: inline-block;\n}\n\n/* Tabulator table styling overrides */\n.tabulator {\n    border: 1px solid var(--bs-border-color) !important;\n    border-radius: 0.375rem !important;\n    font-size: 0.875rem !important;\n    background-color: var(--bs-body-bg) !important;\n}\n\n.tabulator .tabulator-header {\n    background-color: var(--bs-light) !important;\n    border-bottom: 2px solid var(--bs-border-color) !important;\n    font-weight: 600 !important;\n}\n\n.tabulator .tabulator-header .tabulator-col {\n    background-color: var(--bs-light) !important;\n    border-right: 1px solid var(--bs-border-color) !important;\n    color: var(--bs-body-color) !important;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n    padding: 8px 6px !important;\n    white-space: nowrap !important;\n    overflow: hidden !important;\n    text-overflow: ellipsis !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row {\n    border-bottom: 1px solid var(--bs-border-color) !important;\n    background-color: transparent !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row:hover {\n    background-color: var(--bs-light) !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {\n    border-right: 1px solid var(--bs-border-color) !important;\n    padding: 6px 8px !important;\n    vertical-align: middle !important;\n    white-space: nowrap !important;\n    overflow: hidden !important;\n    text-overflow: ellipsis !important;\n}\n\n/* Tabulator row striping */\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row:nth-child(even) {\n    background-color: rgba(0, 0, 0, 0.05) !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row:nth-child(even):hover {\n    background-color: var(--bs-light) !important;\n}\n\n/* Station/Date column special styling */\n.tabulator .tabulator-cell.station-col {\n    font-weight: 600 !important;\n    background-color: rgba(13, 110, 253, 0.1) !important;\n}\n\n.tabulator .tabulator-cell.years-col {\n    text-align: center !important;\n    font-weight: 500 !important;\n}\n\n/* Numeric cell alignment */\n.tabulator .tabulator-cell.temp-group,\n.tabulator .tabulator-cell.precip-group {\n    text-align: right !important;\n}\n\n/* Column header improvements */\n.tabulator .tabulator-header .tabulator-col.temp-group .tabulator-col-content {\n    background-color: rgba(255, 193, 7, 0.1) !important;\n}\n\n.tabulator .tabulator-header .tabulator-col.precip-group .tabulator-col-content {\n    background-color: rgba(13, 202, 240, 0.1) !important;\n}\n\n/* Frozen column styling */\n.tabulator .tabulator-cell.station-col {\n    position: sticky !important;\n    left: 0 !important;\n    z-index: 5 !important;\n    border-right: 2px solid var(--bs-border-color) !important;\n}\n\n.tabulator .tabulator-header .tabulator-col:first-child {\n    position: sticky !important;\n    left: 0 !important;\n    z-index: 10 !important;\n    border-right: 2px solid var(--bs-border-color) !important;\n}\n\n/* Enhanced Tabulator styling for frozen columns and height */\n.tabulator .tabulator-freeze-left {\n    border-right: 2px solid var(--bs-primary) !important;\n    background-color: var(--bs-light) !important;\n    z-index: 10 !important;\n}\n\n.tabulator .tabulator-freeze-left .tabulator-cell {\n    background-color: var(--bs-light) !important;\n    font-weight: 500 !important;\n}\n\n.tabulator .tabulator-freeze-left:hover .tabulator-cell {\n    background-color: var(--bs-info) !important;\n}\n\n/* Ensure proper table height and scrolling */\n.tabulator .tabulator-tableHolder {\n    max-height: calc(70vh - 120px) !important; /* Account for header and pagination */\n    overflow-y: auto !important;\n}\n\n/* Pagination styling for better visibility */\n.tabulator .tabulator-footer {\n    border-top: 2px solid var(--bs-border-color) !important;\n    background-color: var(--bs-light) !important;\n    padding: 8px !important;\n}\n\n.tabulator .tabulator-paginator {\n    color: var(--bs-body-color) !important;\n}\n\n.tabulator .tabulator-page {\n    color: var(--bs-primary) !important;\n    border: 1px solid var(--bs-border-color) !important;\n    background-color: var(--bs-body-bg) !important;\n}\n\n.tabulator .tabulator-page.active {\n    background-color: var(--bs-primary) !important;\n    color: white !important;\n}\n\n/* Column grouping visual indicators for Tabulator */\n.tabulator .tabulator-header .temp-group {\n    border-left: 3px solid var(--bs-warning) !important;\n}\n\n.tabulator .tabulator-header .precip-group {\n    border-left: 3px solid var(--bs-info) !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .temp-group {\n    border-left: 3px solid var(--bs-warning) !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .precip-group {\n    border-left: 3px solid var(--bs-info) !important;\n}\n\n/* Links in Tabulator cells */\n.tabulator .tabulator-cell a {\n    color: var(--bs-primary) !important;\n    text-decoration: none !important;\n}\n\n.tabulator .tabulator-cell a:hover {\n    color: var(--bs-primary) !important;\n    text-decoration: underline !important;\n}\n\n/* Prevent text wrapping in table cells */\n.tabulator .tabulator-cell {\n    white-space: nowrap !important;\n    overflow: hidden !important;\n    text-overflow: ellipsis !important;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n    white-space: nowrap !important;\n    overflow: hidden !important;\n    text-overflow: ellipsis !important;\n}\n\n/* Sort arrow styling */\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n    right: 4px !important;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-content:hover {\n    background-color: rgba(0, 0, 0, 0.1) !important;\n}\n\n/* Improve frozen column appearance */\n.tabulator .tabulator-frozen.tabulator-frozen-left {\n    border-right: 2px solid var(--bs-primary) !important;\n}\n\n/* Better responsive handling */\n@media (max-width: 1200px) {\n    .tabulator {\n        font-size: 0.75rem !important;\n    }\n    \n    .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n        padding: 6px 4px !important;\n    }\n    \n    .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {\n        padding: 4px 6px !important;\n    }\n}\n"
  },
  {
    "path": "htdocs/COOP/extremes.js",
    "content": "/**\n * COOP Extremes App - Simple function-based implementation\n * Handles data fetching, table rendering, and sorting for climatology data\n */\n\n/* global ol, Tabulator */\n\n// Global app state\nconst appState = {\n    config: null,\n    data: null,\n    sortColumn: null,\n    sortDirection: null,\n    isStationView: false,\n    map: null,\n    vectorSource: null,\n    popup: null,\n    currentApiUrl: null,\n    labelAttribute: 'avg_high', // Default label attribute - use numeric for legend\n    colorRanges: null, // Will store calculated color ranges for current attribute\n    table: null, // Tabulator instance\n    yearFilter: null, // Selected year for filtering\n    allFeatures: null // Store all features for filtering\n};\n\n/**\n * Initialize the application\n */\nfunction initializeApp() {\n    appState.config = getConfig();\n    appState.sortColumn = appState.config.sortcol;\n    appState.sortDirection = appState.config.sortdir;\n    appState.isStationView = Boolean(appState.config.station);\n    appState.labelAttribute = appState.config.labelAttribute; // Set from URL parameter\n    appState.yearFilter = appState.config.yearFilter; // Set from URL parameter\n\n    // Hide/show components based on view mode\n    if (appState.isStationView) {\n        // Station view - hide map and form controls\n        const mapContainer = document.getElementById('map-container');\n        const formContainer = document.getElementById('controls-form');\n        if (mapContainer) {\n            mapContainer.style.display = 'none';\n        }\n        if (formContainer) {\n            formContainer.style.display = 'none';\n        }\n    } else {\n        // Date view - show form controls, hide form in station view\n        const formContainer = document.getElementById('controls-form');\n        if (formContainer) {\n            formContainer.style.display = 'block';\n        }\n    }\n\n    showLoading(true);\n\n    fetchData()\n        .then(() => {\n            renderHeader();\n            updateTable();\n            showApiInfo();\n            if (!appState.isStationView) {\n                initializeMap();\n            }\n            attachEventListeners();\n        })\n        .catch((error) => {\n            showError(`Failed to load climatology data: ${error.message}`);\n        })\n        .finally(() => {\n            showLoading(false);\n        });\n}\n\n/**\n * Extract configuration from DOM elements (form inputs, URL parameters)\n */\nfunction getConfig() {\n    // Get URL parameters\n    const urlParams = new URLSearchParams(window.location.search);\n\n    // Helper to get value from URL or fallback\n    function getParamOrInput(param, selector, fallback) {\n        const urlVal = urlParams.get(param);\n        if (urlVal !== null && urlVal !== undefined && urlVal !== '') {\n            return urlVal;\n        }\n        const input = document.querySelector(selector);\n        if (input && input.value !== undefined && input.value !== '') {\n            return input.value;\n        }\n        return fallback;\n    }\n\n    return {\n        tbl: getParamOrInput('tbl', 'select[name=\"tbl\"]', 'climate'),\n        month: parseInt(getParamOrInput('month', 'select[name=\"month\"]', new Date().getMonth() + 1), 10),\n        day: parseInt(getParamOrInput('day', 'select[name=\"day\"]', new Date().getDate()), 10),\n        sortcol: getParamOrInput('sortcol', 'unused', 'station'),\n        network: getParamOrInput('network', 'select[name=\"network\"]', 'IACLIMATE'),\n        station: urlParams.get('station') || null,\n        sortdir: getParamOrInput('sortdir', 'unused', 'ASC'),\n        labelAttribute: getParamOrInput('label', 'unused', 'avg_high'),\n        yearFilter: getParamOrInput('year', 'unused', null)\n    };\n}\n\n\n\n/**\n * Fetch climatology data from appropriate API endpoint\n */\nfunction fetchData() {\n    const vars = appState.config;\n    const syear = getStartYear(vars.tbl);\n    const eyear = getEndYear(vars.tbl);\n    const apiUrl = vars.station\n        ? `/json/climodat_stclimo.py?station=${vars.station}&syear=${syear}&eyear=${eyear}`\n        : `/geojson/climodat_dayclimo.py?network=${vars.network}&month=${vars.month}&day=${vars.day}&syear=${syear}&eyear=${eyear}`;\n\n    appState.currentApiUrl = apiUrl;\n\n    return fetch(apiUrl)\n        .then((response) => {\n            if (!response.ok) {\n                throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n            }\n            return response.json();\n        })\n        .then((jsonData) => {\n            if (vars.station) {\n                // Process station data\n                appState.data = jsonData.climatology.map((item) => ({\n                    ...item,\n                    valid: new Date(2000, item.month - 1, item.day) // Create date for sorting\n                }));\n            } else {\n                // Process day data from GeoJSON\n                appState.data = jsonData.features.map((feature) => feature.properties);\n            }\n        });\n};\n\n/**\n * Get start year based on table selection\n */\nfunction getStartYear(tbl) {\n    switch (tbl) {\n        case 'climate51': return 1951;\n        case 'climate71': return 1971;\n        case 'climate81': return 1981;\n        default: return 1800;\n    }\n};\n\n/**\n * Get end year based on table selection\n */\nfunction getEndYear(tbl) {\n    switch (tbl) {\n        case 'climate71': return 2001;\n        case 'climate81': return 2011;\n        default: return new Date().getFullYear() + 1;\n    }\n};\n\n/**\n * Render header section with clear mode indication\n */\nfunction renderHeader() {\n    const headerSection = document.getElementById('header-section');\n    const vars = appState.config;\n    const headerHtml = vars.station ? (() => {\n        // Station mode - Daily Climatology for Single Station\n        const backLink = `extremes.php?network=${vars.network}&tbl=${vars.tbl}&month=${vars.month}&day=${vars.day}&label=${appState.labelAttribute}${appState.yearFilter ? `&year=${appState.yearFilter}` : ''}`;\n        return `\n            <div class=\"d-flex align-items-center justify-content-between mb-3\">\n                <div>\n                    <h3 class=\"mb-1\">🏛️ Daily Climatology for Single Station</h3>\n                    <h4 class=\"text-primary mb-0\">Station: ${vars.station}</h4>\n                    <p class=\"text-muted mb-0\">Showing records for all days of the year at this station</p>\n                </div>\n                <div class=\"text-end\">\n                    <a href=\"${backLink}\" class=\"btn btn-outline-primary btn-sm\">\n                        <i class=\"bi bi-arrow-left\" aria-hidden=\"true\"></i><span class=\"visually-hidden\">Back</span> Back to Date View\n                    </a>\n                </div>\n            </div>\n        `;\n    })() : (() => {\n        // Date mode - Single Date Climatology for State\n        const date = new Date(2000, vars.month - 1, vars.day);\n        const dateStr = date.toLocaleDateString('en-US', { month: 'long', day: 'numeric' });\n        const networkName = getNetworkDisplayName(vars.network);\n        return `\n            <div class=\"mb-3\">\n                <h3 class=\"mb-1\">🌡️ Single Date Climatology for State</h3>\n                <h4 class=\"text-primary mb-0\">${dateStr} - ${networkName}</h4>\n                <p class=\"text-muted mb-0\">Showing records for all stations on this date. Click any station ID to see its full year of data.</p>\n            </div>\n        `;\n    })();\n\n    headerSection.innerHTML = headerHtml;\n};\n\n/**\n * Get display name for network\n */\nfunction getNetworkDisplayName(network) {\n    const networkNames = {\n        'IACLIMATE': 'Iowa',\n        'ILCLIMATE': 'Illinois',\n        'INCLIMATE': 'Indiana',\n        'KSCLIMATE': 'Kansas',\n        'KYCLIMATE': 'Kentucky',\n        'MICLIMATE': 'Michigan',\n        'MNCLIMATE': 'Minnesota',\n        'MOCLIMATE': 'Missouri',\n        'NECLIMATE': 'Nebraska',\n        'NDCLIMATE': 'North Dakota',\n        'OHCLIMATE': 'Ohio',\n        'SDCLIMATE': 'South Dakota',\n        'WICLIMATE': 'Wisconsin'\n    };\n    return networkNames[network] || network;\n};\n\n/**\n * Initialize Tabulator table\n */\nfunction initializeTable() {\n    const columns = getTableColumns();\n\n    appState.table = new Tabulator(\"#data-table\", {\n        data: prepareTableData(), // Use prepared data instead of raw data\n        layout: \"fitDataTable\",\n        responsiveLayout: \"hide\",\n        pagination: \"local\",\n        paginationSize: 10, // Show 10 rows by default\n        paginationSizeSelector: [10, 25, 50, 100],\n        height: \"70vh\", // Set table height to 70% of viewport height\n        movableColumns: true,\n        resizableColumns: true,\n        tooltips: true,\n        columnHeaderSortMulti: false,\n        scrollHorizontal: true, // Enable horizontal scrolling\n        freezeFirstColumn: true, // Freeze the first column\n        headerSort: true, // Make headers sticky\n        columns,\n        placeholder: \"No climatology data available for the selected criteria\",\n        initialSort: [\n            {column: appState.isStationView ? \"date_link\" : \"station_link\", dir: \"asc\"}\n        ]\n    });\n\n    // Add export buttons after table is created\n    addExportButtons();\n}\n\n/**\n * Get column definitions for Tabulator based on view type\n */\nfunction getTableColumns() {\n    const firstColumnTitle = appState.isStationView ? 'Date' : 'Station';\n    const firstColumnField = appState.isStationView ? 'date_link' : 'station_link';\n\n    return [\n        {\n            title: firstColumnTitle,\n            field: firstColumnField,\n            formatter: \"html\",\n            width: appState.isStationView ? 120 : 200, // Wider for station names\n            headerSort: true,\n            cssClass: \"station-col\",\n            sorter(a, b, aRow, bRow) {\n                // Use proper sorting for dates in station view\n                if (appState.isStationView) {\n                    const aSort = aRow.getData().date_sort || 0;\n                    const bSort = bRow.getData().date_sort || 0;\n                    return aSort - bSort;\n                }\n                // For station names, use the station id\n                const aText = aRow.getData().station || '';\n                const bText = bRow.getData().station || '';\n                return aText.localeCompare(bText);\n            }\n        },\n        {\n            title: \"Years\",\n            field: \"years\",\n            width: 60,\n            headerSort: true,\n            formatter(cell) {\n                return cell.getValue() || '';\n            }\n        },\n        // High Temperature column group\n        {\n            title: \"Avg High °F\",\n            field: \"avg_high\",\n            width: 90,\n            formatter(cell) {\n                return formatNumber(cell.getValue(), 1);\n            },\n            cssClass: \"temp-group\",\n            sorter: \"number\"\n        },\n        {\n            title: \"Max High °F\",\n            field: \"max_high\",\n            width: 90,\n            formatter(cell) {\n                return cell.getValue() || '';\n            },\n            cssClass: \"temp-group\",\n            sorter: \"number\"\n        },\n        {\n            title: \"Max High Year\",\n            field: \"max_high_years\",\n            width: 100,\n            formatter(cell) {\n                return formatYears(cell.getValue());\n            },\n            cssClass: \"temp-group\",\n            sorter(a, b) {\n                // Custom sorter for year arrays\n                const aStr = Array.isArray(a) ? a.join('') : String(a || '');\n                const bStr = Array.isArray(b) ? b.join('') : String(b || '');\n                return aStr.localeCompare(bStr);\n            }\n        },\n        {\n            title: \"Min High °F\",\n            field: \"min_high\",\n            width: 90,\n            formatter(cell) {\n                return cell.getValue() || '';\n            },\n            cssClass: \"temp-group\",\n            sorter: \"number\"\n        },\n        {\n            title: \"Min High Year\",\n            field: \"min_high_years\",\n            width: 100,\n            formatter(cell) {\n                return formatYears(cell.getValue());\n            },\n            cssClass: \"temp-group\",\n            sorter(a, b) {\n                const aStr = Array.isArray(a) ? a.join('') : String(a || '');\n                const bStr = Array.isArray(b) ? b.join('') : String(b || '');\n                return aStr.localeCompare(bStr);\n            }\n        },\n        // Low Temperature column group\n        {\n            title: \"Avg Low °F\",\n            field: \"avg_low\",\n            width: 90,\n            formatter(cell) {\n                return formatNumber(cell.getValue(), 1);\n            },\n            cssClass: \"temp-group\",\n            sorter: \"number\"\n        },\n        {\n            title: \"Max Low °F\",\n            field: \"max_low\",\n            width: 90,\n            formatter(cell) {\n                return cell.getValue() || '';\n            },\n            cssClass: \"temp-group\",\n            sorter: \"number\"\n        },\n        {\n            title: \"Max Low Year\",\n            field: \"max_low_years\",\n            width: 100,\n            formatter(cell) {\n                return formatYears(cell.getValue());\n            },\n            cssClass: \"temp-group\",\n            sorter(a, b) {\n                const aStr = Array.isArray(a) ? a.join('') : String(a || '');\n                const bStr = Array.isArray(b) ? b.join('') : String(b || '');\n                return aStr.localeCompare(bStr);\n            }\n        },\n        {\n            title: \"Min Low °F\",\n            field: \"min_low\",\n            width: 90,\n            formatter(cell) {\n                return cell.getValue() || '';\n            },\n            cssClass: \"temp-group\",\n            sorter: \"number\"\n        },\n        {\n            title: \"Min Low Year\",\n            field: \"min_low_years\",\n            width: 100,\n            formatter(cell) {\n                return formatYears(cell.getValue());\n            },\n            cssClass: \"temp-group\",\n            sorter(a, b) {\n                const aStr = Array.isArray(a) ? a.join('') : String(a || '');\n                const bStr = Array.isArray(b) ? b.join('') : String(b || '');\n                return aStr.localeCompare(bStr);\n            }\n        },\n        // Precipitation column group\n        {\n            title: \"Avg Precip in\",\n            field: \"avg_precip\",\n            width: 100,\n            formatter(cell) {\n                return formatNumber(cell.getValue(), 2);\n            },\n            cssClass: \"precip-group\",\n            sorter: \"number\"\n        },\n        {\n            title: \"Max Precip in\",\n            field: \"max_precip\",\n            width: 100,\n            formatter(cell) {\n                return formatNumber(cell.getValue(), 2);\n            },\n            cssClass: \"precip-group\",\n            sorter: \"number\"\n        },\n        {\n            title: \"Max Precip Year\",\n            field: \"max_precip_years\",\n            width: 110,\n            formatter(cell) {\n                return formatYears(cell.getValue());\n            },\n            cssClass: \"precip-group\",\n            sorter(a, b) {\n                const aStr = Array.isArray(a) ? a.join('') : String(a || '');\n                const bStr = Array.isArray(b) ? b.join('') : String(b || '');\n                return aStr.localeCompare(bStr);\n            }\n        }\n    ];\n}\n\n/**\n * Update table with new data\n */\nfunction updateTable() {\n    if (!appState.table) {\n        initializeTable();\n        return;\n    }\n\n    // Prepare data for Tabulator\n    const tableData = prepareTableData();\n    appState.table.setData(tableData);\n\n    // Ensure export buttons are present\n    addExportButtons();\n}\n\n/**\n * Prepare data for Tabulator display\n */\nfunction prepareTableData() {\n    if (!appState.data || appState.data.length === 0) {\n        return [];\n    }\n\n    const vars = appState.config;\n\n    return appState.data.map((row) => {\n        const linkData = appState.isStationView ? (() => {\n            // Station view - link to date\n            const date = new Date(2000, row.month - 1, row.day);\n            const dateStr = date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n            let link = `extremes.php?day=${row.day}&month=${row.month}&network=${vars.network}&tbl=${vars.tbl}`;\n            if (appState.labelAttribute) {\n                link += `&label=${appState.labelAttribute}`;\n            }\n            if (appState.yearFilter) {\n                link += `&year=${appState.yearFilter}`;\n            }\n            return {\n                linkCell: `<a href=\"${link}\">${dateStr}</a>`,\n                linkField: 'date_link'\n            };\n        })() : (() => {\n            // Day view - link to station with name and ID\n            let link = `extremes.php?station=${row.station}&network=${vars.network}&tbl=${vars.tbl}`;\n            if (appState.labelAttribute) {\n                link += `&label=${appState.labelAttribute}`;\n            }\n            if (appState.yearFilter) {\n                link += `&year=${appState.yearFilter}`;\n            }\n\n            // Use station name if available, otherwise fall back to station ID\n            const displayText = row.name ? `${row.name} (${row.station})` : row.station;\n            return {\n                linkCell: `<a href=\"${link}\">${displayText}</a>`,\n                linkField: 'station_link'\n            };\n        })();\n\n        // Create a new object with the link field\n        const tableRow = { ...row };\n        tableRow[linkData.linkField] = linkData.linkCell;\n\n        // Add sortable date field for station view (month*100 + day gives proper numeric sort)\n        if (appState.isStationView) {\n            tableRow.date_sort = row.month * 100 + row.day;\n        }\n\n        return tableRow;\n    });\n}\n\n/**\n * Format numeric values with specified decimal places\n */\nfunction formatNumber(value, decimals) {\n    if (value === null || value === undefined || value === '') {return '';}\n    return parseFloat(value).toFixed(decimals);\n};\n\n/**\n * Format year arrays as comma-separated strings\n */\nfunction formatYears(years) {\n    if (!years || !Array.isArray(years)) {return '';}\n    return years.join(', ');\n};\n\n/**\n * Show/hide loading indicator\n */\nfunction showLoading(show) {\n    const loadingIndicator = document.getElementById('loading-indicator');\n    const contentArea = document.getElementById('content-area');\n\n    if (loadingIndicator) {\n        loadingIndicator.style.display = show ? 'block' : 'none';\n    }\n    if (contentArea) {\n        contentArea.style.display = show ? 'none' : 'block';\n    }\n};\n\n/**\n * Show API information\n */\nfunction showApiInfo() {\n    const apiInfo = document.getElementById('api-info');\n    const apiUrl = document.getElementById('api-url');\n\n    if (apiInfo && apiUrl) {\n        if (appState.currentApiUrl) {\n        apiUrl.textContent = appState.currentApiUrl;\n        apiInfo.style.display = 'block';\n        }\n    }\n};\n\n/**\n * Show error message\n */\nfunction showError(message) {\n    const contentArea = document.getElementById('content-area');\n    const errorDiv = document.createElement('div');\n    errorDiv.className = 'error-message';\n    errorDiv.innerHTML = `\n        <h5>Error Loading Data</h5>\n        <p>${message}</p>\n        <p>Please try again or contact support if the problem persists.</p>\n    `;\n\n    if (contentArea) {\n        contentArea.insertBefore(errorDiv, contentArea.firstChild);\n    }\n};\n\n/**\n * Attach event listeners for enhanced interactions\n */\nfunction attachEventListeners() {\n    // Helper to add change listeners to form elements\n    function addFormChangeListeners(form) {\n        const selectors = ['select[name=\"network\"]', 'select[name=\"month\"]', 'select[name=\"day\"]', 'select[name=\"tbl\"]'];\n        selectors.forEach((selector) => {\n            const el = form.querySelector(selector);\n            if (el) {\n                el.addEventListener('change', handleFormChange);\n            }\n        });\n    }\n\n    // Handle form changes dynamically (don't submit, just update data)\n    const form = document.getElementById('controls-form');\n    const submitBtn = document.getElementById('form-submit-btn');\n    const dynamicIndicator = document.getElementById('dynamic-indicator');\n\n    if (form && !appState.isStationView) {\n        // Update submit button text for dynamic mode\n        if (submitBtn) {\n            submitBtn.value = 'Update View';\n            submitBtn.style.backgroundColor = '#0d6efd';\n            submitBtn.style.color = 'white';\n            submitBtn.style.border = '1px solid #0d6efd';\n        }\n\n        // Show dynamic indicator\n        if (dynamicIndicator) {\n            dynamicIndicator.style.display = 'block';\n        }\n\n        // Prevent form submission\n        form.addEventListener('submit', (e) => {\n            e.preventDefault();\n            handleFormChange();\n            return false;\n        });\n\n        // Add change listeners to all form elements\n        addFormChangeListeners(form);\n    }\n\n    // Handle browser back/forward navigation\n    window.addEventListener('popstate', () => {\n        // Reload the page to handle URL parameter changes\n        window.location.reload();\n    });\n\n    // Handle label attribute changes for map\n    const labelSelect = document.getElementById('label-attribute');\n    if (labelSelect && !appState.isStationView) {\n        // Set initial value\n        labelSelect.value = appState.labelAttribute;\n\n        labelSelect.addEventListener('change', function() {\n            appState.labelAttribute = this.value;\n            appState.config.labelAttribute = this.value;\n\n            // Update year filter visibility based on new attribute\n            updateYearFilterVisibility();\n\n            // Repopulate year filter with years relevant to the new attribute\n            if (appState.allFeatures && !['avg_high', 'avg_low', 'avg_precip', 'station', 'years'].includes(this.value)) {\n                populateYearFilter(appState.allFeatures);\n            }\n\n            // Update URL to persist the selection\n            updateUrl();\n\n            // Update map\n            updateMapLabels();\n\n            // Re-apply year filter since filtering logic depends on selected attribute\n            if (appState.yearFilter) {\n                applyYearFilter();\n            }\n        });\n    }\n\n    // Handle year filter changes for map\n    const yearFilter = document.getElementById('year-filter');\n    if (yearFilter && !appState.isStationView) {\n        // Set initial value from URL parameter\n        if (appState.yearFilter) {\n            yearFilter.value = appState.yearFilter;\n        }\n\n        // Set initial visibility based on current attribute\n        updateYearFilterVisibility();\n\n        yearFilter.addEventListener('change', function() {\n            appState.yearFilter = this.value || null;\n            appState.config.yearFilter = this.value || null;\n\n            // Update URL to persist the selection\n            updateUrl();\n\n            // Apply filter\n            applyYearFilter();\n        });\n    }\n};\n\n/**\n * Initialize OpenLayers map\n */\nfunction initializeMap() {\n    // Create vector source for station data\n    appState.vectorSource = new ol.source.Vector();\n\n    // Create popup overlay\n    const container = document.getElementById('popup');\n    const closer = document.getElementById('popup-closer');\n\n    appState.popup = new ol.Overlay({\n        element: container,\n        autoPan: {\n            animation: {\n                duration: 250\n            }\n        }\n    });\n\n    // Close popup when X is clicked\n    closer.onclick = function() {\n        appState.popup.setPosition();\n        closer.blur();\n        return false;\n    };\n\n    // Initialize map\n    appState.map = new ol.Map({\n        target: 'map-container',\n        layers: [\n            // Base layers group\n            new ol.layer.Group({\n                title: 'Base Maps',\n                layers: [\n                    new ol.layer.Tile({\n                        title: 'OpenStreetMap',\n                        type: 'base',\n                        visible: true,\n                        source: new ol.source.OSM()\n                    }),\n                    new ol.layer.Tile({\n                        title: 'Satellite',\n                        type: 'base',\n                        visible: false,\n                        source: new ol.source.XYZ({\n                            url: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',\n                            attributions: 'Tiles © Esri'\n                        })\n                    })\n                ]\n            }),\n            // Vector layer for stations\n            new ol.layer.Vector({\n                title: 'Climate Stations',\n                source: appState.vectorSource,\n                style: getStationStyle\n            })\n        ],\n        overlays: [appState.popup],\n        view: new ol.View({\n            center: ol.proj.fromLonLat([-93.5, 42.0]), // Default to Iowa\n            zoom: 7\n        })\n    });\n\n    // Add layer switcher control\n    const layerSwitcher = new ol.control.LayerSwitcher({\n        tipLabel: 'Toggle layer visibility',\n        groupSelectStyle: 'children'\n    });\n    appState.map.addControl(layerSwitcher);\n\n    // Add click handler for station popups\n    appState.map.on('singleclick', (evt) => {\n        const clickedFeature = appState.map.forEachFeatureAtPixel(evt.pixel, (feature) => feature);\n        if (clickedFeature) {\n            showStationPopup(clickedFeature, evt.coordinate);\n        } else {\n            appState.popup.setPosition();\n        }\n    });\n\n    // Change cursor when hovering over stations\n    appState.map.on('pointermove', (evt) => {\n        if (evt.dragging) {return;}\n        const pixel = appState.map.getEventPixel(evt.originalEvent);\n        const hit = appState.map.hasFeatureAtPixel(pixel);\n        const target = appState.map.getTarget();\n        if (target?.style) {\n            target.style.cursor = hit ? 'pointer' : '';\n        }\n    });\n\n    // Add stations to map if data is available\n    if (appState.data) {\n        addStationsToMap();\n    }\n};\n\n/**\n * Add station data to map as features\n */\nfunction addStationsToMap() {\n    if (!appState.vectorSource || appState.isStationView) {return;}\n\n    appState.vectorSource.clear();\n\n    // Get the original GeoJSON features (we need to fetch again to get coordinates)\n    // Since we already processed the data, we need the original GeoJSON\n    fetchGeoJSONForMap();\n}\n\n/**\n * Fetch GeoJSON data specifically for map display\n */\nfunction fetchGeoJSONForMap() {\n    const vars = appState.config;\n    const syear = getStartYear(vars.tbl);\n    const eyear = getEndYear(vars.tbl);\n    const apiUrl = `/geojson/climodat_dayclimo.py?network=${vars.network}&month=${vars.month}&day=${vars.day}&syear=${syear}&eyear=${eyear}`;\n\n    fetch(apiUrl)\n        .then((response) => {\n            return response.json();\n        })\n        .then((geoJsonData) => {\n            addGeoJSONToMap(geoJsonData);\n        })\n        .catch(() => {\n            // Silently handle error - map will remain empty\n        });\n}\n\n/**\n * Add GeoJSON features to the map\n */\nfunction addGeoJSONToMap(geoJsonData) {\n    const format = new ol.format.GeoJSON();\n    const features = format.readFeatures(geoJsonData, {\n        featureProjection: 'EPSG:3857' // Web Mercator for display\n    });\n\n    // Store all features for filtering\n    appState.allFeatures = features;\n\n    // Apply current filter\n    const filteredFeatures = filterFeaturesByYear(features);\n    appState.vectorSource.addFeatures(filteredFeatures);\n\n    // Populate year filter dropdown\n    populateYearFilter(features);\n\n    // Calculate initial color ranges and update legend\n    appState.colorRanges = calculateColorRanges();\n    updateLegend();\n\n    // Fit map to show all stations\n    if (filteredFeatures.length > 0) {\n        const extent = appState.vectorSource.getExtent();\n        appState.map.getView().fit(extent, {\n            padding: [20, 20, 20, 20],\n            maxZoom: 10\n        });\n    }\n}\n\n/**\n * Get style for station features based on selected attribute\n */\nfunction getStationStyle(feature) {\n    const props = feature.getProperties();\n    const value = props[appState.labelAttribute];\n    const backgroundColor = getColorForValue(value);\n\n    // Refactored for complexity: split getLabelText into smaller helpers (Rule: complexity, refactoring)\n    function isNullOrUndefined(val) {\n        return val === null || val === undefined;\n    }\n\n    function formatStationOrYears(val) {\n        return String(val);\n    }\n\n    function formatPrecip(val) {\n        return typeof val === 'number' ? `${val.toFixed(2)}\"` : String(val);\n    }\n\n    function formatHighLow(val) {\n        return typeof val === 'number' ? `${Math.round(val)}°` : String(val);\n    }\n\n    function formatArray(val) {\n        return val.join(',');\n    }\n\n    function formatNumber1(val) {\n        return val.toFixed(1);\n    }\n\n    function getLabelText(val, attr) {\n        if (isNullOrUndefined(val)) {return '';}\n        if (attr === 'station' || attr === 'years') {\n            return formatStationOrYears(val);\n        }\n        if (attr.includes('precip')) {\n            return formatPrecip(val);\n        }\n        if (attr.includes('high') || attr.includes('low')) {\n            return formatHighLow(val);\n        }\n        if (Array.isArray(val)) {\n            return formatArray(val);\n        }\n        if (typeof val === 'number') {\n            return formatNumber1(val);\n        }\n        return String(val);\n    }\n\n    const labelText = getLabelText(value, appState.labelAttribute);\n\n    return new ol.style.Style({\n        text: new ol.style.Text({\n            text: labelText,\n            font: 'bold 12px Arial',\n            fill: new ol.style.Fill({ color: '#333333' }),\n            stroke: new ol.style.Stroke({ color: '#ffffff', width: 2 }),\n            backgroundFill: new ol.style.Fill({ color: backgroundColor }),\n            backgroundStroke: new ol.style.Stroke({ color: '#ffffff', width: 1 }),\n            padding: [3, 6, 3, 6]\n        })\n    });\n};\n\n/**\n * Show popup with station information\n\n\n/**\n * Helper to generate a table row with optional highlight if year matches\n * Exported for use in other functions.\n */\nwindow.popupRow = function popupRow(label, value, yearsArr, yearFilter, valueSuffix = '', formatYearsFn = null) {\n    let highlight = '';\n    if (yearFilter) {\n        if (yearsArr?.includes?.(parseInt(yearFilter))) {\n            highlight = ' style=\"background: #fff3cd; font-weight: bold;\"';\n        }\n    }\n    let yearsStr = '';\n    if (yearsArr) {\n        if (formatYearsFn) {\n            yearsStr = formatYearsFn(yearsArr);\n        } else {\n            yearsStr = yearsArr;\n        }\n    }\n    let suffixYears = '';\n    if (yearsArr) {\n        suffixYears = ` (${yearsStr})`;\n    }\n    return `<tr${highlight}><td class=\"label\">${label}:</td><td>${value}${valueSuffix}${suffixYears}</td></tr>`;\n};\n\nfunction showStationPopup(feature, coordinate) {\n    const props = feature.getProperties();\n    const content = document.getElementById('popup-content');\n\n    // Use station name if available, otherwise fall back to station ID\n    const stationDisplayName = props.name ? `${props.name} (${props.station})` : props.station;\n\n    let popupHtml = `<h5>${stationDisplayName}</h5>`;\n\n    // If year filter is active, highlight records from that year\n    if (appState.yearFilter) {\n        const filterYear = parseInt(appState.yearFilter);\n        popupHtml += `<div style=\"background: #d1ecf1; padding: 4px 8px; border-radius: 4px; margin-bottom: 8px; font-size: 11px;\">\n            <strong>Showing records from ${filterYear}</strong>\n        </div>`;\n    }\n\n\n    popupHtml += '<table class=\"popup-data-table\">';\n    popupHtml += `<tr><td class=\"label\">Years:</td><td>${props.years || 'N/A'}</td></tr>`;\n    popupHtml += `<tr><td class=\"label\">Avg High:</td><td>${formatNumber(props.avg_high, 1)}°F</td></tr>`;\n\n    // Use helper for rows with year highlighting\n    popupHtml += window.popupRow('Max High', props.max_high || 'N/A', props.max_high_years, appState.yearFilter, '°F', formatYears);\n    popupHtml += window.popupRow('Min High', props.min_high || 'N/A', props.min_high_years, appState.yearFilter, '°F', formatYears);\n    popupHtml += `<tr><td class=\"label\">Avg Low:</td><td>${formatNumber(props.avg_low, 1)}°F</td></tr>`;\n    popupHtml += window.popupRow('Max Low', props.max_low || 'N/A', props.max_low_years, appState.yearFilter, '°F', formatYears);\n    popupHtml += window.popupRow('Min Low', props.min_low || 'N/A', props.min_low_years, appState.yearFilter, '°F', formatYears);\n    popupHtml += `<tr><td class=\"label\">Avg Precip:</td><td>${formatNumber(props.avg_precip, 2)}\"</td></tr>`;\n    popupHtml += window.popupRow('Max Precip', formatNumber(props.max_precip, 2), props.max_precip_years, appState.yearFilter, '\"', formatYears);\n\n    popupHtml += `</table>\n        <p style=\"margin-top: 8px; font-size: 11px;\">\n            <a href=\"extremes.php?station=${props.station}&network=${appState.config.network}&tbl=${appState.config.tbl}${appState.labelAttribute ? `&label=${appState.labelAttribute}` : ''}${appState.yearFilter ? `&year=${appState.yearFilter}` : ''}\"\n               target=\"_blank\">View station details →</a>\n        </p>`;\n\n    content.innerHTML = popupHtml;\n    appState.popup.setPosition(coordinate);\n}\n\n/**\n * Update map labels when attribute selection changes\n */\nfunction updateMapLabels() {\n    if (appState.vectorSource) {\n        // Recalculate color ranges for new attribute\n        appState.colorRanges = calculateColorRanges();\n\n        // Update legend\n        updateLegend();\n\n        // Force redraw of all features by changing the style\n        const features = appState.vectorSource.getFeatures();\n        features.forEach((feature) => {\n            feature.changed();\n        });\n    }\n}\n\n/**\n * Update the legend based on current attribute and data\n */\nfunction updateLegend() {\n    const legendElement = document.querySelector('.map-legend');\n\n    if (!legendElement) {\n        return;\n    }\n\n    let legendHtml = '';\n\n    if (!appState.colorRanges) {\n        // No color ranges (e.g., station names) - show info message instead\n        legendElement.style.display = 'block';\n        legendElement.innerHTML = `\n            <div style=\"font-size: 11px; color: #666;\">\n                ${getAttributeLabel(appState.labelAttribute)} (no color coding)\n            </div>\n        `;\n        return;\n    }\n\n    // Show legend with current attribute info\n    legendElement.style.display = 'block';\n\n    const attributeLabel = getAttributeLabel(appState.labelAttribute);\n\n    legendHtml = `\n        <div style=\"font-size: 11px; color: #666; margin-bottom: 4px;\">\n            ${attributeLabel} ranges:\n        </div>\n    `;\n\n    appState.colorRanges.ranges.forEach((range) => {\n        legendHtml += `\n            <div class=\"legend-item\">\n                <div class=\"legend-color\" style=\"background: ${range.color};\"></div>\n                <span style=\"font-size: 10px;\">${range.label}${appState.colorRanges.units}</span>\n            </div>\n        `;\n    });\n\n    legendElement.innerHTML = legendHtml;\n}\n\n/**\n * Get human-readable label for attribute\n */\nfunction getAttributeLabel(attribute) {\n    const labels = {\n        'station': 'Station ID',\n        'avg_high': 'Average High Temperature',\n        'max_high': 'Maximum High Temperature',\n        'min_high': 'Minimum High Temperature',\n        'avg_low': 'Average Low Temperature',\n        'max_low': 'Maximum Low Temperature',\n        'min_low': 'Minimum Low Temperature',\n        'avg_precip': 'Average Precipitation',\n        'max_precip': 'Maximum Precipitation',\n        'years': 'Years of Data'\n    };\n    return labels[attribute] || attribute;\n}\n\n/**\n * Calculate color ranges for the currently selected attribute\n */\nfunction calculateColorRanges() {\n    if (!appState.data || appState.data.length === 0) {return null;}\n\n    // Skip color calculation for non-numeric attributes\n    if (appState.labelAttribute === 'station') {return null;}\n\n    // Get all numeric values for the selected attribute\n    const values = appState.data\n        .map((item) => item[appState.labelAttribute])\n        .filter((val) => typeof val === 'number' && !isNaN(val))\n        .sort((a, b) => a - b);\n\n    if (values.length === 0) {return null;}\n\n    const min = values[0];\n    const max = values[values.length - 1];\n    const range = max - min;\n\n    if (range === 0) {return null;}\n\n    // For temperature data, use appropriate decimal places\n    const isTemp = appState.labelAttribute.includes('high') || appState.labelAttribute.includes('low');\n    const isPrecip = appState.labelAttribute.includes('precip');\n    const decimals = isPrecip ? 2 : (isTemp ? 0 : 1);\n\n    // Create 5 equal ranges\n    const step = range / 5;\n\n    return {\n        min,\n        max,\n        ranges: [\n            { min, max: min + step, color: '#3388ff', label: `${min.toFixed(decimals)} - ${(min + step).toFixed(decimals)}` },\n            { min: min + step, max: min + 2 * step, color: '#44bb44', label: `${(min + step).toFixed(decimals)} - ${(min + 2 * step).toFixed(decimals)}` },\n            { min: min + 2 * step, max: min + 3 * step, color: '#ffbb44', label: `${(min + 2 * step).toFixed(decimals)} - ${(min + 3 * step).toFixed(decimals)}` },\n            { min: min + 3 * step, max: min + 4 * step, color: '#ff8844', label: `${(min + 3 * step).toFixed(decimals)} - ${(min + 4 * step).toFixed(decimals)}` },\n            { min: min + 4 * step, max, color: '#ff4444', label: `${(min + 4 * step).toFixed(decimals)} - ${max.toFixed(decimals)}` }\n        ],\n        units: getAttributeUnits(appState.labelAttribute)\n    };\n}\n\n/**\n * Get appropriate units for display based on attribute type\n */\nfunction getAttributeUnits(attribute) {\n    if (attribute.includes('precip')) {return '\"';}\n    if (attribute.includes('high') || attribute.includes('low')) {return '°F';}\n    return '';\n}\n\n/**\n * Get color for a value based on current color ranges\n */\nfunction getColorForValue(value) {\n    if (!appState.colorRanges || typeof value !== 'number') {\n        return '#cccccc'; // Default gray for non-numeric or missing data\n    }\n\n    for (let i = 0; i < appState.colorRanges.ranges.length; i++) {\n        const range = appState.colorRanges.ranges[i];\n        if (i === appState.colorRanges.ranges.length - 1) {\n            // Last range includes max value\n            if (value >= range.min && value <= range.max) {\n                return range.color;\n            }\n        } else {\n            if (value >= range.min && value < range.max) {\n                return range.color;\n            }\n        }\n    }\n\n    return '#cccccc'; // Default\n}\n\n/**\n * Handle form changes - update URL and reload data dynamically\n */\nfunction handleFormChange() {\n    // Get current form values\n    const form = document.getElementById('controls-form');\n    const networkSelect = form.querySelector('select[name=\"network\"]');\n    const monthSelect = form.querySelector('select[name=\"month\"]');\n    const daySelect = form.querySelector('select[name=\"day\"]');\n    const tblSelect = form.querySelector('select[name=\"tbl\"]');\n\n    // Build new URL parameters\n    const params = new URLSearchParams(window.location.search);\n\n    if (networkSelect) {params.set('network', networkSelect.value);}\n    if (monthSelect) {params.set('month', monthSelect.value);}\n    if (daySelect) {params.set('day', daySelect.value);}\n    if (tblSelect) {params.set('tbl', tblSelect.value);}\n\n    // Keep existing sort parameters\n    if (appState.config.sortcol) {params.set('sortcol', appState.config.sortcol);}\n    if (appState.config.sortdir) {params.set('sortdir', appState.config.sortdir);}\n\n    // Keep current label attribute setting\n    if (appState.labelAttribute) {params.set('label', appState.labelAttribute);}\n\n    // Clear year filter when switching to different dataset (network/date change)\n    // The year filter is specific to a particular dataset combination\n    appState.yearFilter = null;\n    appState.config.yearFilter = null;\n\n    // Make sure year parameter is not included in the new URL\n    params.delete('year');\n\n    // Update URL without page reload\n    const newUrl = `${window.location.pathname}?${params.toString()}`;\n    window.history.pushState({}, '', newUrl);\n\n    // Update app config\n    appState.config = getConfig();\n\n    // Show loading and reload data\n    showLoading(true);\n\n    // Clear any existing error messages\n    const existingErrors = document.querySelectorAll('.error-message');\n    existingErrors.forEach((error) => {\n        error.remove();\n    });\n\n    fetchData()\n        .then(() => {\n            renderHeader();\n            updateTable();\n            showApiInfo();\n            if (!appState.isStationView) {\n                // Clear and reload map data\n                if (appState.vectorSource) {\n                    appState.vectorSource.clear();\n                }\n                addStationsToMap();\n\n                // Reset year filter UI since we have a new dataset\n                const yearSelect = document.getElementById('year-filter');\n                if (yearSelect) {\n                    yearSelect.value = '';\n                }\n\n                // Update year filter visibility for current attribute\n                updateYearFilterVisibility();\n            }\n        })\n        .catch((error) => {\n            showError(`Failed to load climatology data: ${error.message}`);\n        })\n        .finally(() => {\n            showLoading(false);\n        });\n}\n\n/**\n * Update URL with current application state\n */\nfunction updateUrl() {\n    const params = new URLSearchParams();\n\n    // Add all current config values to ensure they're preserved\n    params.set('network', appState.config.network);\n    params.set('month', appState.config.month);\n    params.set('day', appState.config.day);\n    params.set('tbl', appState.config.tbl);\n\n    // Only add non-default values to keep URLs clean\n    if (appState.config.sortcol && appState.config.sortcol !== 'station') {\n        params.set('sortcol', appState.config.sortcol);\n    }\n    if (appState.config.sortdir && appState.config.sortdir !== 'ASC') {\n        params.set('sortdir', appState.config.sortdir);\n    }\n    if (appState.labelAttribute && appState.labelAttribute !== 'avg_high') {\n        params.set('label', appState.labelAttribute);\n    }\n    if (appState.yearFilter) {\n        params.set('year', appState.yearFilter);\n    }\n\n    const newUrl = `${window.location.pathname}?${params.toString()}`;\n    window.history.pushState({}, '', newUrl);\n}\n\n/**\n * Populate the year filter dropdown with available years\n */\nfunction populateYearFilter(features) {\n    const yearSelect = document.getElementById('year-filter');\n    if (!yearSelect) {return;}\n\n    // Collect years based on the currently selected attribute\n    const allYears = new Set();\n\n    // Determine which year field to use based on current label attribute\n    let yearField = null;\n    switch (appState.labelAttribute) {\n        case 'max_high':\n            yearField = 'max_high_years';\n            break;\n        case 'min_high':\n            yearField = 'min_high_years';\n            break;\n        case 'max_low':\n            yearField = 'max_low_years';\n            break;\n        case 'min_low':\n            yearField = 'min_low_years';\n            break;\n        case 'max_precip':\n            yearField = 'max_precip_years';\n            break;\n        default:\n            // For non-record attributes, collect from all year arrays\n            yearField = null;\n    }\n\n    features.forEach((feature) => {\n        const props = feature.getProperties();\n\n        if (yearField) {\n            // Collect years from specific field only\n            const years = props[yearField];\n            if (Array.isArray(years)) {\n                years.forEach((year) => {\n                    allYears.add(year);\n                });\n            }\n        } else {\n            // Collect from all year arrays (for avg attributes)\n            const yearArrays = [\n                'max_high_years', 'min_high_years', 'max_low_years',\n                'min_low_years', 'max_precip_years'\n            ];\n\n            yearArrays.forEach((yearArrayField) => {\n                const years = props[yearArrayField];\n                if (Array.isArray(years)) {\n                    years.forEach((year) => {\n                        allYears.add(year);\n                    });\n                }\n            });\n        }\n    });\n\n    // Sort years in descending order\n    const sortedYears = Array.from(allYears).sort((a, b) => b - a);\n\n    // Clear existing options except \"All Years\"\n    yearSelect.innerHTML = '<option value=\"\">All Years</option>';\n\n    // Add year options\n    sortedYears.forEach((year) => {\n        const option = document.createElement('option');\n        option.value = year;\n        option.textContent = year;\n        if (appState.yearFilter && parseInt(appState.yearFilter) === year) {\n            option.selected = true;\n        }\n        yearSelect.appendChild(option);\n    });\n}\n\n/**\n * Filter features by selected year\n */\nfunction filterFeaturesByYear(features) {\n    if (!appState.yearFilter) {\n        return features; // No filter applied\n    }\n\n    // Determine which year field to check based on the currently selected attribute\n    let yearField = null;\n    switch (appState.labelAttribute) {\n        case 'max_high':\n            yearField = 'max_high_years';\n            break;\n        case 'min_high':\n            yearField = 'min_high_years';\n            break;\n        case 'max_low':\n            yearField = 'max_low_years';\n            break;\n        case 'min_low':\n            yearField = 'min_low_years';\n            break;\n        case 'max_precip':\n            yearField = 'max_precip_years';\n            break;\n        default:\n            // For non-record attributes (avg_high, avg_low, avg_precip, station, years),\n            // check if ANY record was set in the selected year\n            return features.filter((feature) => {\n                const props = feature.getProperties();\n                const yearArrays = [\n                    'max_high_years', 'min_high_years', 'max_low_years',\n                    'min_low_years', 'max_precip_years'\n                ];\n\n                for (let i = 0; i < yearArrays.length; i++) {\n                    const years = props[yearArrays[i]];\n                    if (years?.includes?.(parseInt(appState.yearFilter))) {\n                        return true;\n                    }\n                }\n                return false;\n            });\n    }\n\n    // Filter by specific record type\n    return features.filter((feature) => {\n        const props = feature.getProperties();\n        const years = props[yearField];\n        return Boolean(years?.includes?.(parseInt(appState.yearFilter)));\n    });\n}\n\n/**\n * Apply year filter to the map\n */\nfunction applyYearFilter() {\n    if (!appState.allFeatures || !appState.vectorSource) {return;}\n\n    // Clear current features first\n    appState.vectorSource.clear();\n\n    // Filter features based on selected year\n    const filteredFeatures = filterFeaturesByYear(appState.allFeatures);\n\n    // Add filtered features to the map (even if it's an empty array)\n    if (filteredFeatures.length > 0) {\n        appState.vectorSource.addFeatures(filteredFeatures);\n    }\n\n    // Note: We don't zoom/fit the map view when filtering - this preserves\n    // the user's current view and spatial context\n    // Note: Color ranges and legend are NOT updated here - they should remain\n    // consistent based on the full dataset, not the filtered subset\n}\n\n/**\n * Update year filter visibility based on selected attribute\n */\nfunction updateYearFilterVisibility() {\n    const yearFilter = document.querySelector('#year-filter');\n    if (!yearFilter) {\n        return;\n    }\n    const yearFilterRow = yearFilter.closest('.control-row');\n    if (!yearFilterRow) {\n        return;\n    }\n\n    // Hide year filter for average attributes since they don't have specific record years\n    const isAverageAttribute = ['avg_high', 'avg_low', 'avg_precip', 'station', 'years'].includes(appState.labelAttribute);\n\n    if (isAverageAttribute) {\n        yearFilterRow.style.display = 'none';\n        // Clear any active year filter when hiding\n        if (appState.yearFilter) {\n            appState.yearFilter = null;\n            appState.config.yearFilter = null;\n            const yearSelect = document.getElementById('year-filter');\n            if (yearSelect) {\n                yearSelect.value = '';\n            }\n            // Update URL to remove year parameter\n            updateUrl();\n            // Apply the cleared filter (show all features)\n            if (appState.allFeatures) {\n                applyYearFilter();\n            }\n        }\n    } else {\n        yearFilterRow.style.display = 'flex';\n    }\n}\n\n/**\n * Add export buttons for CSV and Excel download\n */\nfunction addExportButtons() {\n    // Create export buttons container\n    const tableContainer = document.getElementById('data-table');\n    let exportContainer = document.getElementById('table-export-buttons');\n\n    if (!exportContainer) {\n        exportContainer = document.createElement('div');\n        exportContainer.id = 'table-export-buttons';\n        exportContainer.className = 'mb-2 d-flex gap-2';\n        exportContainer.innerHTML = `${''}\n            <button id=\"download-csv\" class=\"btn btn-outline-success btn-sm\">\n                <i class=\"bi bi-download\" aria-hidden=\"true\"></i><span class=\"visually-hidden\">Download CSV</span> Download CSV\n            </button>\n            <button id=\"download-xlsx\" class=\"btn btn-outline-primary btn-sm\">\n                <i class=\"bi bi-download\" aria-hidden=\"true\"></i><span class=\"visually-hidden\">Download Excel</span> Download Excel\n            </button>\n        `;\n\n        // Insert before the table\n        tableContainer.parentNode.insertBefore(exportContainer, tableContainer);\n    }\n\n    // Add event listeners for export buttons\n    document.getElementById('download-csv').addEventListener('click', () => {\n        const filename = generateExportFilename('csv');\n        appState.table.download(\"csv\", filename);\n    });\n\n    document.getElementById('download-xlsx').addEventListener('click', () => {\n        const filename = generateExportFilename('xlsx');\n        appState.table.download(\"xlsx\", filename, {sheetName: \"Climate Data\"});\n    });\n}\n\n/**\n * Generate appropriate filename for exports\n */\nfunction generateExportFilename(extension) {\n    const vars = appState.config;\n    const filename = appState.isStationView\n        ? `climate_station_${vars.station}`\n        : (() => {\n        const monthStr = vars.month.toString().padStart(2, '0');\n        const dayStr = vars.day.toString().padStart(2, '0');\n        const networkStr = vars.network.toLowerCase();\n        return `climate_${networkStr}_${monthStr}-${dayStr}`;\n    })();\n\n    return `${filename}.${extension}`;\n}\n\n// Initialize the app when DOM is ready\ndocument.addEventListener('DOMContentLoaded', initializeApp);\n"
  },
  {
    "path": "htdocs/COOP/extremes.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 2);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/network.php\";\n\n$OL = \"10.6.1\";\n$t = new MyView();\n$t->title = \"NWS COOP Daily Climatology\";\n\n// Get URL parameters with defaults\n$tbl = substr(get_str404(\"tbl\", \"climate\"), 0, 10);\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$sortcol = get_str404(\"sortcol\", \"station\");\n$network = substr(get_str404(\"network\", \"IACLIMATE\"), 0, 9);\n$station = get_str404(\"station\", null);\n$sortdir = get_str404(\"sortdir\", \"ASC\");\n\n// Build render variables array\n$render_vars = array(\n    'tbl' => $tbl,\n    'month' => $month,\n    'day' => $day,\n    'sortcol' => $sortcol,\n    'network' => $network,\n    'station' => $station,\n    'sortdir' => $sortdir\n);\n\n// Create form selects\n$netselect = selectNetworkType(\"CLIMATE\", $network);\n$mselect = monthSelect($month, \"month\");\n$dselect = daySelect($day, \"day\");\n\n$ar = array(\n    \"climate\" => \"All Available\",\n    \"climate51\" => \"Since 1951\",\n    \"climate71\" => \"1971-2000\",\n    \"climate81\" => \"1981-2010\"\n);\n$tblselect = make_select(\"tbl\", $tbl, $ar);\n\n\n$t->content = <<<EOM\n<div id=\"loading-indicator\" class=\"text-center my-4\" style=\"display: none;\">\n    <div class=\"spinner-border text-primary\" role=\"status\">\n        <span class=\"visually-hidden\">Loading...</span>\n    </div>\n    <p class=\"mt-2\">Loading climatology data...</p>\n</div>\n\n<div id=\"content-area\">\n    <div id=\"header-section\">\n        <!-- Header will be populated by JavaScript -->\n    </div>\n\n    <div class=\"alert alert-info\">\n        <h5 class=\"alert-heading\">Two App Modes Available:</h5>\n        <div class=\"row\">\n            <div class=\"col-md-6\">\n                <strong>🌡️ Single Date Climatology for State</strong>\n                <p class=\"mb-0 small\">Select a specific date to see records for all stations on that day. Use the form below to choose date and state.</p>\n            </div>\n            <div class=\"col-md-6\">\n                <strong>🏛️ Daily Climatology for Single Station</strong>\n                <p class=\"mb-0 small\">Click any station ID in the table to see all daily records for that station throughout the year.</p>\n            </div>\n        </div>\n    </div>\n\n    <p>This table gives a listing of <b>unofficial</b> daily records for NWS\n    COOP stations. You may click on a column to sort it.  You can click on the station\n    name to get all daily records for that station or click on the date to get all records\n    for that date.</p>\n\n    <p><a href=\"/COOP/dl/normals.phtml\" class=\"btn btn-primary\">\n    <i class=\"bi bi-download\" aria-hidden=\"true\"></i> Download Daily Climatology</a></p>\n\n    <div id=\"api-info\" class=\"alert alert-info\" style=\"display: none;\">\n        <p class=\"mb-0\">The data found in this table was derived from the following\n        <a href=\"/json/\">JSON webservice</a>:<br />\n        <code id=\"api-url\"></code>\n        </p>\n    </div>\n\n    <form method=\"GET\" action=\"extremes.php\" name=\"myform\" id=\"controls-form\">\n    <div class=\"card\">\n        <div class=\"card-header\">\n            <h6 class=\"mb-0\">🌡️ Single Date Mode Controls</h6>\n            <small class=\"text-muted\">Change state or date to view different climatology data</small>\n        </div>\n        <div class=\"card-body p-3\">\n            <div class=\"row g-2 align-items-end\">\n                <div class=\"col-md-3\">\n                    <label for=\"network\" class=\"form-label small\">Select State:</label>\n                    {$netselect}\n                </div>\n                <div class=\"col-md-3\">\n                    <label class=\"form-label small\">Select Date:</label>\n                    <div class=\"d-flex gap-1\">\n                        {$mselect} {$dselect}\n                    </div>\n                </div>\n                <div class=\"col-md-3\">\n                    <label for=\"tbl\" class=\"form-label small\">Record Database:</label>\n                    {$tblselect}\n                </div>\n                <div class=\"col-md-3\">\n                    <input type=\"submit\" value=\"Update Data\" class=\"btn btn-primary btn-sm\" id=\"form-submit-btn\">\n                    <div id=\"dynamic-indicator\" style=\"display: none; font-size: 11px; color: #666; margin-top: 4px;\">\n                        Changes update automatically\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    </form>\n\n    <br />\n\n    <!-- Map Container (only visible for all stations mode) -->\n    <div id=\"map-container\">\n        <div class=\"map-controls\">\n            <div class=\"control-row\">\n                <label for=\"label-attribute\">Label Points With:</label>\n                <select id=\"label-attribute\" class=\"form-select form-select-sm\">\n                    <option value=\"station\">Station ID</option>\n                    <option value=\"avg_high\" selected>Avg High</option>\n                    <option value=\"max_high\">Max High</option>\n                    <option value=\"min_high\">Min High</option>\n                    <option value=\"avg_low\">Avg Low</option>\n                    <option value=\"max_low\">Max Low</option>\n                    <option value=\"min_low\">Min Low</option>\n                    <option value=\"avg_precip\">Avg Precip</option>\n                    <option value=\"max_precip\">Max Precip</option>\n                    <option value=\"years\">Years</option>\n                </select>\n            </div>\n            <div class=\"control-row\">\n                <label for=\"year-filter\">Filter by Record Year:</label>\n                <select id=\"year-filter\" class=\"form-select form-select-sm\">\n                    <option value=\"\">All Years</option>\n                    <!-- Options populated dynamically -->\n                </select>\n            </div>\n            <div class=\"legend-row\">\n                <label>Legend:</label>\n                <div class=\"map-legend\">\n                    <!-- Legend will be populated dynamically by JavaScript -->\n                </div>\n            </div>\n        </div>\n        <div id=\"popup\" class=\"ol-popup\">\n            <a href=\"#\" id=\"popup-closer\" class=\"ol-popup-closer\"></a>\n            <div id=\"popup-content\" class=\"ol-popup-content\"></div>\n        </div>\n    </div>\n\n    <div class=\"table-responsive\">\n        <div id=\"data-table\"></div>\n    </div>\n</div>\nEOM;\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol.css\" type=\"text/css\">\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" type=\"text/css\">\n<link rel=\"stylesheet\" href=\"https://unpkg.com/tabulator-tables@6.3.1/dist/css/tabulator_bootstrap5.min.css\" type=\"text/css\">\n<link rel=\"stylesheet\" href=\"extremes.css\" type=\"text/css\">\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"/vendor/openlayers/{$OL}/ol.js\"></script>\n<script src=\"/vendor/openlayers/{$OL}/ol-layerswitcher.js\"></script>\n<script src=\"https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator.min.js\"></script>\n<script src=\"extremes.js?v=2\" type=\"text/javascript\"></script>\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/COOP/freezing.php",
    "content": "<?php\ndefine(\"IEM_APPID\", 158);\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/mlib.php\";\n\n$sortcol = get_str404(\"sortcol\", \"station\");\n$network = get_str404(\"network\", \"IACLIMATE\");\n\n$t = new MyView();\n$t->title = \"Freezing Dates\";\n\n$nt = new NetworkTable($network);\n$cities = $nt->table;\n\n$nselect = selectNetworkType(\"CLIMATE\", $network);\n\n$conn = iemdb(\"coop\");\n\n$query = \"select station, valid, min_low, min_low_yr from climate\n     WHERE valid > '2000-08-01' and min_low <= $2\n     and substr(station,0,3) = $1 ORDER by valid\";\n$stname = iem_pg_prepare($conn, $query);\n$rs = pg_execute($conn, $stname, array(substr($network, 0, 2), 32));\n\n\n$query = \"select station, valid, low from climate\n     WHERE valid > '2000-08-01' and low <= $2\n     and substr(station,0,3) = $1 ORDER by valid\";\n$stname = iem_pg_prepare($conn, $query);\n$rs2 = pg_execute($conn, $stname, array(substr($network, 0, 2), 40));\n\n$data = array();\nwhile ($row = pg_fetch_assoc($rs)) {\n    $st = $row[\"station\"];\n    if (!isset($data[$st])) {\n        $data[$st] = array(\n            \"min_low\" => 100,\n            \"avglow32day\" => null,\n            \"avglow28day\" => null,\n            \"station\" => $st);\n        $data[$st][\"low\"] = $row[\"min_low\"];\n        $data[$st][\"lowyr\"] = $row[\"min_low_yr\"] . \"-\" . substr($row[\"valid\"], 5, 6);\n    }\n    if (!isset($data[$st][\"low28\"])) {\n        if (intval($row[\"min_low\"]) < 29) {\n            $data[$st][\"low28\"] = $row[\"min_low\"];\n            $data[$st][\"low28yr\"] = $row[\"min_low_yr\"] . \"-\" . substr($row[\"valid\"], 5, 6);\n        }\n    }\n}\n\nwhile ($row = pg_fetch_assoc($rs2)) {\n    $st = $row[\"station\"];\n    if (!isset($data[$st][\"avelow40day\"])) {\n        if (intval($row[\"low\"]) < 41) {\n            $data[$st][\"avelow40day\"] = substr($row[\"valid\"], 5, 6);\n        }\n    }\n    if (!isset($data[$st][\"avelow32day\"])) {\n        if (intval($row[\"low\"]) < 33) {\n            $data[$st][\"avelow32day\"] = substr($row[\"valid\"], 5, 6);\n        }\n    }\n    if (!isset($data[$st][\"avelow28day\"])) {\n        if (intval($row[\"low\"]) < 28) {\n            $data[$st][\"avelow28day\"] = substr($row[\"valid\"], 5, 6);\n        }\n    }\n}\n\n$finalA = array();\n$finalA = aSortBySecondIndex($data, $sortcol);\n\n$table = \"\";\nforeach ($finalA as $key => $value) {\n    if (!array_key_exists($key, $cities)) continue;\n    $table .= \"<tr><td>\" . $cities[strtoupper($key)][\"name\"] . \"</td>\n    <td>\" . $data[$key][\"low\"] . \"</td>\n    <td>\" . $data[$key][\"lowyr\"] . \"</td>\n    <td>\" . $data[$key][\"low28\"] . \"</td>\n    <td>\" . $data[$key][\"low28yr\"] . \"</td>\n    <td>\" . $data[$key][\"avelow40day\"] . \"</td>\n    <td>\" . $data[$key][\"avelow32day\"] . \"</td>\n    <td>\" . $data[$key][\"avelow28day\"] . \"</td>\n    </tr>\\n\";\n}\n\n\n$t->content = <<<EOM\n<h3>Freezing Dates</h3>\n\n<p>Using the NWS COOP data archive, significant dates relating to fall are\nextracted and presented on this page.  The specific dates are the first\noccurance of that temperature and may have occured again in subsequent\nyears.\n\n<br>The \"Record Lows\" columns show the first fall occurance of a low\ntemperature.  The \"Average Lows\" column shows when certain climatological\nthresholds are surpassed in the fall.\n</p>\n\n<form method=\"GET\" action=\"freezing.php\">\n  <div class=\"row\">\n    <div class=\"col-md-4\">\n      <strong>Select Network:</strong> {$nselect}\n      <input type=\"submit\" value=\"Switch Network\">\n    </div>\n  </div>\n</form>\n\n<table class=\"table table-sm table-striped\">\n<thead class=\"sticky\">\n  <tr>\n    <th rowspan='3'><a href='freezing.php?sortcol=station'>COOP Site:</a></th>\n    <th colspan='4'>Record Lows:</th>\n    <th colspan='3'>Average Lows:</th>\n  </tr>\n  <tr>\n    <th colspan='2'>Temp <= 32&deg;F</th>\n    <th colspan='2'>Temp <= 28&deg;F</th>\n    <td rowspan='2'><a href='freezing.php?sortcol=avelow40day'>Below 40&deg;F</a></td>\n    <td rowspan='2'><a href='freezing.php?sortcol=avelow32day'>Below 32&deg;F</a></td>\n    <td rowspan='2'><a href='freezing.php?sortcol=avelow28day'>Below 28&deg;F</a></td>\n  </tr>\n    <td>Temp:</td>\n    <td><a href='freezing.php?sortcol=lowyr'>Date:</a></td>\n    <td>Temp:</td>\n    <td><a href='freezing.php?sortcol=low28yr'>Date:</a></td>\n  </tr>\n</thead>\n<tbody>\n  {$table}\n</tbody>\n</table>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/COOP/hpd.php",
    "content": "<?php\n// List out HPD data for a date and station of your choice\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 91);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\n\n$station = get_str404(\"station\", null);\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n\n$yselect = yearSelect(2008, $year, \"year\");\n$mselect = monthSelect($month, \"month\");\n$dselect = daySelect($day, \"day\");\n\n$table = \"<p>Please select a station and date.</p>\";\nif ($station) {\n    $dbconn = iemdb('other');\n    $stname = iem_pg_prepare(\n        $dbconn,\n        \"select * from hpd_alldata WHERE station = $1 and valid >= $2 \" .\n            \"and valid < $3 ORDER by valid ASC\"\n    );\n    $valid = mktime(0, 0, 0, $month, $day, $year);\n    $sts = date(\"Y-m-d 00:00\", $valid);\n    $ets = date(\"Y-m-d 23:59\", $valid);\n    $rs = pg_execute($dbconn, $stname, array($station, $sts, $ets));\n    $table = '<table class=\"table table-striped\"><tr><th>Valid</th><th>Precip</th></tr>';\n    while ($row = pg_fetch_assoc($rs)) {\n        $table .= sprintf(\n            \"<tr><td>%s</td><td>%s</td></tr>\",\n            $row[\"valid\"],\n            $row[\"precip\"]\n        );\n    }\n    $table .= \"</table>\";\n}\n\n$t = new MyView();\n$t->title = \"COOP HPD FisherPorter Precip\";\n\n$sselect = networkSelect(\"IA_HPD\", $station);\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"/COOP/\">COOP Data</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">Fisher Porter Rain Gauge Data</li>\n    </ol>\n</nav>\n\n<p>The IEM maintains an archive of processed rain gauge data from the \"Fisher Porter\"\nequipment that is run at some NWS COOP locations in Iowa. There is considerable\ndelay to the availability of this data from\n<a href=\"https://www.ncei.noaa.gov/pub/data/hpd/data/\">NCEI</a>. Currently, a process\nruns on the 15th each month and downloads data for the previous 3rd, 6th, and 12th month\nto the current date.</p>\n\n<p><strong>Updated 3 Feb 2023:</strong> As it stands currently, I can not find\nthis datasource available from NCEI. So there's no data in this archive since\n~Feb 2021.</p>\n\n<form method=\"GET\" name=\"st\" class=\"mb-3\">\n    <div class=\"row g-2 align-items-end\">\n        <div class=\"col-md-6\">\n            <label for=\"station\" class=\"form-label\">Select Station</label>\n            {$sselect}\n        </div>\n        <div class=\"col-md-4\">\n            <label class=\"form-label\">Select Date</label>\n            <div class=\"d-flex gap-2\">{$yselect} {$mselect} {$dselect}</div>\n        </div>\n        <div class=\"col-md-2\">\n            <button type=\"submit\" class=\"btn btn-primary\">Show</button>\n        </div>\n    </div>\n</form>\n\n<div class=\"table-responsive\">\n{$table}\n</div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/COOP/index.css",
    "content": "div.tease {\n margin: 5px;\n padding: 5px;\n width: 400px;\n background: #e8cc84;\n float: left;\n}\ndiv.tease img {\n margin-right: 5px;\n float: left;\n}\ndiv.tease a {\n font-weight: bold;\n padding: 5px;\n}"
  },
  {
    "path": "htdocs/COOP/index.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/generators.php\";\n$t = new MyView();\n$t->title = \"NWS COOP Data\";\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" type=\"text/css\" href=\"index.css\">\nEOM;\n\n$yr = date(\"Y\");\n\n$dict = array(\n    array(\n        \"img\" => \"chart_line_f_t.png\",\n        \"url\" => \"/plotting/coop/threshold_histogram_fe.phtml\",\n        \"title\" => \"Winter Min Low Temp Frequencies\",\n        \"desc\" => \"Histogram showing the number of years that a certain low temperature threshold is exceeded.\"\n    ),\n\n    array(\n        \"img\" => \"chart_line_h_t.png\",\n        \"url\" => \"/plotting/coop/spread_fe.phtml\",\n        \"title\" => \"Daily Temperature Spread\",\n        \"desc\" => \"Histogram showing daily high/low temperatures.\"\n    ),\n\n    array(\n        \"img\" => \"data_table.png\",\n        \"url\" => \"/COOP/periods.phtml\",\n        \"title\" => \"Yearly Average Temperatures\",\n        \"desc\" => \"For a date interval of your choice, get the yearly statewide average temperatures.\"\n    ),\n\n    array(\n        \"img\" => \"data_table.png\",\n        \"url\" => \"/sites/hist.phtml?station=AMSI4&network=IA_COOP\",\n        \"title\" => \"Observations by Month\",\n        \"desc\" => \"View observations per station and per month basis.\"\n    ),\n\n    array(\n        \"img\" => \"data_table.png\",\n        \"url\" => \"/COOP/freezing.php\",\n        \"title\" => \"Fall Freezing Dates\",\n        \"desc\" => \"Statistics of dates for significant first fall freezes.\"\n    ),\n\n    array(\n        \"img\" => \"data_table.png\",\n        \"url\" => \"/COOP/snowd_duration.phtml\",\n        \"title\" => \"Snow Depth Duration\",\n        \"desc\" => \"For a given date, how long will the snow stick around?\"\n    ),\n\n    array(\n        \"img\" => \"data_table.png\",\n        \"url\" => \"/COOP/extremes.php\",\n        \"title\" => \"Daily Climate in Tables\",\n        \"desc\" => \"Tables of daily temperature and precipitation climatology.\"\n    ),\n\n    array(\n        \"img\" => \"thumb_map.png\",\n        \"url\" => \"/GIS/apps/coop/index.php\",\n        \"title\" => \"Daily Climate in Maps\",\n        \"desc\" => \"Plots of daily extremes and averages with a GIS Ready! download of the data presented.\"\n    ),\n\n    array(\n        \"img\" => \"chart_line_t_d.png\",\n        \"url\" => \"/plotting/coop/climate_fe.php\",\n        \"title\" => \"Daily Average Temperatures\",\n        \"desc\" => \"Dynamically produced chart of average daily temperatures.\"\n    ),\n\n    array(\n        \"img\" => \"chart_line_t_y.png\",\n        \"url\" => \"/plotting/auto/?q=100\",\n        \"title\" => \"Yearly Average Temperatures\",\n        \"desc\" => \"Plot average daily temperatures for a year of your choice.\"\n    ),\n\n    array(\n        \"img\" => \"chart_line_d_a.png\",\n        \"url\" => \"/plotting/auto/?q=107\",\n        \"title\" => \"Accumulated Precipitation Probabilities\",\n        \"desc\" => \"Chart of precip probabilities for a time period of your choice.\"\n    ),\n\n    array(\n        \"img\" => \"chart_line_t_d.png\",\n        \"url\" => \"/plotting/auto/?q=99\",\n        \"title\" => \"Yearly Departures from Average\",\n        \"desc\" => \"Plot average temperatures versus what actually occured during one year.\"\n    ),\n\n    array(\n        \"img\" => \"chart_line_ac_d.png\",\n        \"url\" => \"/plotting/auto/?q=108\",\n        \"title\" => \"Accumulated Departures from Average\",\n        \"desc\" => \"Plot an accumulated departure from average for rainfall and growing degree days for a time period of your choice!\"\n    ),\n\n    array(\n        \"img\" => \"thumb_map.png\",\n        \"url\" => \"/COOP/map/\",\n        \"title\" => \"Map Daily Observations\",\n        \"desc\" => \"Interactive map of daily observations.\"\n    ),\n\n);\n$content = \"\";\nforeach ($dict as $k => $v) {\n        // Card-like teaser; image is decorative (title + text already conveys info)\n        $content .= <<<EOM\n<div class=\"col\" role=\"listitem\">\n    <article class=\"card h-100 shadow-sm\">\n        <div class=\"card-body p-3\">\n            <div class=\"d-flex align-items-start\">\n                <div class=\"flex-shrink-0 me-2\">\n                    <a href=\"{$v[\"url\"]}\" class=\"stretched-link\" aria-label=\"Open: {$v[\"title\"]}\">\n                        <img src=\"/images/{$v[\"img\"]}\" alt=\"\" class=\"img-fluid\" loading=\"lazy\" decoding=\"async\" width=\"48\" height=\"48\" />\n                    </a>\n                </div>\n                <div class=\"flex-grow-1\">\n                    <h4 class=\"h6 mb-1\">{$v[\"title\"]}</h4>\n                    <p class=\"card-text small mb-0\">{$v[\"desc\"]}</p>\n                </div>\n            </div>\n        </div>\n    </article>\n</div>\nEOM;\n}\n\n$t->content = <<<EOM\n\n<section aria-labelledby=\"coop-intro\" class=\"mb-4\">\n    <h2 id=\"coop-intro\" class=\"h3\">National Weather Service Cooperative Observer Program (COOP)</h2>\n    <p>The COOP network is comprised of volunteer observers reporting once-daily high and low air temperature, liquid precipitation, snowfall and snow depth. Explore popular applications below.</p>\n    <nav aria-label=\"COOP quick actions\" class=\"mb-3\">\n        <div class=\"d-flex flex-wrap gap-2\">\n            <a class=\"btn btn-outline-secondary\" href=\"current.phtml\"><i class=\"bi bi-arrow-repeat\" aria-hidden=\"true\"></i><span class=\"visually-hidden\">Refresh</span> <span>Sortable Currents</span></a>\n            <a class=\"btn btn-primary\" href=\"/request/coop/obs-fe.phtml\"><i class=\"bi bi-cloud-download\" aria-hidden=\"true\"></i><span class=\"visually-hidden\">Download</span> <span>Download Observations</span></a>\n            <a class=\"btn btn-outline-secondary\" href=\"/sites/locate.php?network=IA_COOP\"><i class=\"bi bi-search\" aria-hidden=\"true\"></i><span class=\"visually-hidden\">Search</span> <span>Locate Sites</span></a>\n            <a class=\"btn btn-outline-secondary\" href=\"cat.phtml\"><i class=\"bi bi-eye\" aria-hidden=\"true\"></i><span class=\"visually-hidden\">View</span> <span>View Obs by Day/Year</span></a>\n        </div>\n    </nav>\n</section>\n\n<section aria-labelledby=\"climodat\" class=\"mb-4\">\n    <h2 id=\"climodat\" class=\"h3\">IEM Value-Added Climodat Dataset</h2>\n    <p>The IEM processes preliminary COOP reports, applies limited quality control, and estimates some missing data to produce the coherent <strong>Climodat</strong> dataset. Popular Climodat applications:</p>\n    <nav aria-label=\"Climodat quick actions\" class=\"mb-3\">\n        <div class=\"d-flex flex-wrap gap-2\">\n            <a class=\"btn btn-outline-secondary\" href=\"/climodat/\"><i class=\"bi bi-file-earmark-text\" aria-hidden=\"true\"></i><span class=\"visually-hidden\">Report</span> <span>Climodat Reports</span></a>\n            <a class=\"btn btn-primary\" href=\"/request/coop/fe.phtml\"><i class=\"bi bi-cloud-download\" aria-hidden=\"true\"></i><span class=\"visually-hidden\">Download</span> <span>Download Quality Controlled</span></a>\n            <a class=\"btn btn-outline-secondary\" href=\"/sites/locate.php?network=IACLIMATE\"><i class=\"bi bi-search\" aria-hidden=\"true\"></i><span class=\"visually-hidden\">Search</span> <span>Locate Sites</span></a>\n            <a class=\"btn btn-outline-secondary\" href=\"/GIS/apps/coop/gsplot.phtml\"><i class=\"bi bi-image\" aria-hidden=\"true\"></i><span class=\"visually-hidden\">Image</span> <span>Growing Season Plotter</span></a>\n        </div>\n    </nav>\n</section>\n\n\n<div class=\"row g-4\">\n<aside class=\"col-md-5\" aria-labelledby=\"data-plots-heading\">\n\n<h2 id=\"data-plots-heading\" class=\"h4\">Data Plots</h2>\n<ul>\n    <li><a href=\"/timemachine/?product=37\">Iowa Precipitation Contour</a></li>\n    <li><a href=\"/timemachine/?product=38\">Midwest Precipitation Contour</a></li>\n    <li><a href=\"/data/coopMonthPlot.gif\">Rainfall totals for this month</a></li>\n    <li><a href=\"/data/coopSnowPlot.gif\">Snowfall totals this morning</a></li>\n    <li><a href=\"/data/coopMonthSPlot.gif\">Snowfall totals this month</a></li>\n    <li><a href=\"/data/coopSnowDepth.gif\">Snow depth this morning</a></li>\n    <li><a href=\"/data/coopHighLow.gif\">High + Low Temperatures this morning</a></li>\n</ul>\n\n<h2 class=\"h4\">Data + Summaries</h2>\n\n<ul>\n <li>A <a href=\"/data/gis/shape/4326/iem/coopobs.zip\">GIS shapefile</a> is\n generated daily with the most recent set of COOP observation in it.</li>\n <li>A <a href=\"/data/csv/coop.csv\">Comma Delimited File</a> of today's\n COOP observations.</li>\n <li><a href=\"/data/text/IEMNWSDPR.txt\">Today's Rainfall Reports</a>\n    <br />Rainfall reports valid for today along with today's climatology.</li>\n <li><a href=\"/data/text/IEMNWSMPR.txt\">This Month's Totals</a>\n    <br />Rainfall totals for this month along with climatology.</li>\n <li><a href=\"/data/text/IEMNWSYPR.txt\">This Year's Totals</a>\n    <br />Rainfall totals this year along with climatology.</li>\n\n</ul>\n\n<h2 class=\"h4\">Download Data</h2>\n<ul>\n  <li><a href=\"/request/coop/fe.phtml\">Download Daily Oberservations</a>\n    <br>Pick your site, pick a time period, and download the data.</li>\n  <li><a href=\"/COOP/cat.phtml\">2004-<?php echo date(\"Y\"); ?> Observations</a>\n    <br />View all obs from 2004 to <?php echo date(\"Y\"); ?> for one site or pick a date and view all sites!</li>\n  <li><a href=\"/climodat\">ClimoDat Interface</a>\n    <br>Handy application to access summary COOP data.</li>\n  <li><a href=\"/COOP/hpd.php\">Fisher Porter Rain Gauge Download</a>\n    <br />IEM processed data made available by NCEI for Iowa stations only.</li>\n  <li><a href=\"/GIS/apps/coop/gsplot.phtml\">Growing Season Plotter</a>\n    <br>Plot growing season totals since 1893 for a date span of your choice.\n    <br>The resulting data is also available in a GIS Ready! format.</li>\n  <li><a href=\"dl/normals.phtml\">Daily Climate Normals</a>\n    <br>Download daily normal high and low temperatures and average rainfall.</li>\n</ul>\n\n</aside>\n<div class=\"col-md-7\" aria-labelledby=\"data-apps-heading\">\n    <h2 id=\"data-apps-heading\" class=\"h4 mb-3\">Data Applications</h2>\n    <div class=\"row row-cols-1 row-cols-sm-2 g-3\" role=\"list\">\n        {$content}\n    </div>\n</div>\n</div><!-- /.row -->\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/COOP/map/index.css",
    "content": "/* Climap Application Styles */\n\n.map {\n    height: 70vh;\n    width: 100%;\n    border: 1px solid #dee2e6;\n    border-radius: 0.375rem;\n    position: relative;\n}\n\n.popover {\n    width: 320px;\n    max-width: 90vw;\n}\n\n.popover-body {\n    font-size: 0.875rem;\n    line-height: 1.5;\n}\n\n/* Font size controls styling */\n.btn-group .btn.disabled {\n    pointer-events: none;\n    background-color: #e9ecef;\n    border-color: #dee2e6;\n}\n\n/* Loading states */\n.loading {\n    opacity: 0.6;\n    pointer-events: none;\n}\n\n.loading-spinner {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n    z-index: 1000;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n    .map {\n        height: 50vh;\n    }\n    \n    .popover {\n        width: 280px;\n    }\n    \n    .btn-group .btn {\n        padding: 0.25rem 0.5rem;\n        font-size: 0.875rem;\n    }\n}"
  },
  {
    "path": "htdocs/COOP/map/index.js",
    "content": "/* global ol */\nlet renderattr = 'high';\nlet vectorLayer = null;\nlet map = null;\nlet popup = null;\nlet fontSize = 14;\n\n/**\n * Replace HTML special characters with their entity equivalents\n */\nfunction escapeHTML(val) {\n    return val\n        .replace(/&/g, '&amp;')\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/\"/g, '&quot;')\n        .replace(/'/g, '&#039;');\n}\n\n/**\n * Get current date string from date picker (YYYY-MM-DD format)\n * Avoids timezone issues by working directly with the string value\n */\nfunction getCurrentDateString() {\n    const datePicker = document.getElementById('datepicker');\n    return escapeHTML(datePicker.value); // Already in YYYY-MM-DD format\n}\n\n/**\n * Update URL parameters with current state\n */\nfunction updateURL() {\n    const dateStr = getCurrentDateString();\n    const url = new URL(window.location);\n    url.searchParams.set('date', dateStr);\n    url.searchParams.set('var', renderattr);\n\n    // Add map position\n    if (map) {\n        const view = map.getView();\n        const center = ol.proj.toLonLat(view.getCenter());\n        url.searchParams.set('lon', center[0].toFixed(4));\n        url.searchParams.set('lat', center[1].toFixed(4));\n        url.searchParams.set('zoom', view.getZoom().toFixed(0));\n    }\n\n    window.history.pushState({}, '', url);\n}\n\n/**\n * Update map with new render attribute\n */\nfunction updateMap() {\n    const selectElement = document.getElementById('renderattr');\n    renderattr = escapeHTML(selectElement.value);\n    vectorLayer.setStyle(vectorLayer.getStyle());\n    updateURL();\n}\n\n/**\n * Update map with new date\n */\nfunction updateDate() {\n    const dateStr = getCurrentDateString();\n\n    // Show loading state\n    const mapElement = document.getElementById('map');\n    mapElement.classList.add('loading');\n\n    map.removeLayer(vectorLayer);\n    vectorLayer = makeVectorLayer(dateStr);\n    map.addLayer(vectorLayer);\n\n    // Remove loading state after a brief delay\n    setTimeout(() => {\n        mapElement.classList.remove('loading');\n    }, 500);\n\n    updateURL();\n}\n\n/**\n * Style function for vector features\n */\nconst vectorStyleFunction = feature => {\n    const value = feature.get(renderattr);\n    const outlinecolor = '#000000';\n    if (value !== null && !isNaN(value)) {\n        return [\n            new ol.style.Style({\n                fill: new ol.style.Fill({\n                    color: 'rgba(255, 255, 255, 0.6)',\n                }),\n                text: new ol.style.Text({\n                    font: `${fontSize}px Calibri,sans-serif`,\n                    text: value.toString(),\n                    fill: new ol.style.Fill({\n                        color: '#FFFFFF',\n                        width: 1,\n                    }),\n                    stroke: new ol.style.Stroke({\n                        color: outlinecolor,\n                        width: 3,\n                    }),\n                }),\n            }),\n        ];\n    }\n    return [\n        new ol.style.Style({\n            image: new ol.style.Circle({\n                fill: new ol.style.Fill({\n                    color: 'rgba(255,255,255,0.4)',\n                }),\n                stroke: new ol.style.Stroke({\n                    color: '#3399CC',\n                    width: 1.25,\n                }),\n                radius: 5,\n            }),\n            fill: new ol.style.Fill({\n                color: 'rgba(255,255,255,0.4)',\n            }),\n            stroke: new ol.style.Stroke({\n                color: '#3399CC',\n                width: 1.25,\n            }),\n        }),\n    ];\n};\n\n/**\n * Create vector layer for given date\n */\nfunction makeVectorLayer(dt) {\n    return new ol.layer.Vector({\n        source: new ol.source.Vector({\n            format: new ol.format.GeoJSON(),\n            projection: ol.proj.get('EPSG:3857'),\n            url: `/geojson/coopobs.py?valid=${dt}`,\n        }),\n        style: vectorStyleFunction,\n    });\n}\n\n/**\n * Extract feature data with defaults\n */\nfunction getFeatureData(feature) {\n    const get = (key, defaultValue = 'N/A') => feature.get(key) ?? defaultValue;\n\n    return {\n        station: feature.get('station'),\n        network: feature.get('network'),\n        name: get('name'),\n        utcValid: get('utc_valid'),\n        coopTmpf: get('coop_tmpf'),\n        hour: get('hour'),\n        high: get('high', 'M'),\n        low: get('low', 'M'),\n        precip: get('precip', 'M'),\n        snow: get('snow', 'M'),\n        snowd: get('snowd', 'M'),\n        report: get('report')\n    };\n}\n\n/**\n * Create and show popover with feature information\n */\nfunction showPopover(feature, coordinate) {\n    const data = getFeatureData(feature);\n\n    const content = `\n        <div class=\"p-2\" style=\"font-family: monospace; white-space: pre-wrap; font-size: 12px;\">\n<strong>NWSLI:</strong> <a target=\"_blank\" href=\"/sites/site.php?station=${data.station}&network=${data.network}\">${data.station}</a>\n<strong>Name:</strong> ${data.name}\n<strong>Reported At:</strong> ${data.utcValid}\n<strong>Report Local Hour:</strong> ${data.hour}\n<strong>Air Temp:</strong> ${data.coopTmpf} <strong>High:</strong> ${data.high} <strong>Low:</strong> ${data.low}\n<strong>Precip:</strong> ${data.precip}\n<strong>Snow:</strong> ${data.snow} <strong>Snow Depth:</strong> ${data.snowd}\n<strong>SHEF Report:</strong> ${data.report}\n        </div>\n    `;\n\n    // Use the OpenLayers popup element directly\n    const popupElement = document.getElementById('popup');\n    popupElement.innerHTML = `\n        <div class=\"popover bs-popover-top show\">\n            <div class=\"popover-arrow\"></div>\n            <div class=\"popover-body\">${content}</div>\n        </div>\n    `;\n\n    // Position the popup using OpenLayers\n    popup.setPosition(coordinate);\n}\n\n/**\n * Hide popover\n */\nfunction hidePopover() {\n    const popupElement = document.getElementById('popup');\n    popupElement.innerHTML = '';\n    popup.setPosition(null);\n}\n\n/**\n * Fetch and display CLI report\n */\nasync function fetchCLIReport(url) {\n    const reportDiv = document.getElementById('clireport');\n    reportDiv.innerHTML =\n        '<div class=\"d-flex align-items-center\"><div class=\"spinner-border spinner-border-sm me-2\" role=\"status\"></div>Loading CLI report...</div>';\n\n    try {\n        const response = await fetch(url);\n        if (!response.ok) {throw new Error('Network response was not ok');}\n        const data = await response.text();\n        reportDiv.innerHTML = `<pre class=\"mb-0\">${data}</pre>`;\n    } catch (error) {\n        reportDiv.innerHTML = `<div class=\"alert alert-warning mb-0\">Failed to fetch CLI report. ${error} Please try again.</div>`;\n    }\n}\n\n/**\n * Set date picker to specific date string (YYYY-MM-DD format)\n * Avoids timezone issues by working directly with string values\n */\nfunction setDatePickerValue(dateStr) {\n    const datePicker = document.getElementById('datepicker');\n    datePicker.value = dateStr;\n}\n\n/**\n * Parse URL parameters and update interface\n * Handles migration from legacy hash-based URLs to modern URL parameters\n * Legacy format: #YYMMDD/variable -> Modern format: ?date=YYYY-MM-DD&var=variable\n */\nfunction parseURLParameters() {\n    const urlParams = new URLSearchParams(window.location.search);\n\n    // Check for legacy hash parameters first and migrate them\n    const tokens = window.location.href.split('#');\n    if (tokens.length === 2) {\n        const hashTokens = tokens[1].split('/');\n        if (hashTokens.length === 2) {\n            const tpart = escapeHTML(hashTokens[0]);\n            const hashRenderattr = escapeHTML(hashTokens[1]);\n\n            // Parse date from hash (YYMMDD format) and convert to YYYY-MM-DD\n            if (tpart.length === 6) {\n                const year = 2000 + parseInt(tpart.substring(0, 2));\n                const month = String(parseInt(tpart.substring(2, 4))).padStart(2, '0');\n                const day = String(parseInt(tpart.substring(4, 6))).padStart(2, '0');\n                const dateStr = `${year}-${month}-${day}`;\n\n                // Redirect to new URL format\n                const newUrl = new URL(window.location);\n                newUrl.hash = '';\n                newUrl.searchParams.set('date', dateStr);\n                newUrl.searchParams.set('var', hashRenderattr);\n                window.location.replace(newUrl.toString());\n                return;\n            }\n        }\n    }\n\n    // Handle modern URL parameters\n    const dateParam = urlParams.get('date');\n    const varParam = urlParams.get('var');\n\n    if (varParam) {\n        renderattr = escapeHTML(varParam);\n        const selectElement = document.getElementById('renderattr');\n        selectElement.value = renderattr;\n    }\n\n    if (dateParam) {\n        // Validate date format (YYYY-MM-DD) and set directly to avoid timezone issues\n        if (/^\\d{4}-\\d{2}-\\d{2}$/.test(dateParam)) {\n            setDatePickerValue(dateParam);\n            updateDate();\n        }\n    }\n}\n\n/**\n * Initialize the application\n */\ndocument.addEventListener('DOMContentLoaded', () => {\n    // Initialize renderattr from the form's selected value\n    const selectElement = document.getElementById('renderattr');\n    renderattr = selectElement.value;\n\n    // Set up date picker (PHP already sets the initial value)\n    const datePicker = document.getElementById('datepicker');\n\n    // Set up date picker change handler\n    datePicker.addEventListener('change', () => {\n        updateDate();\n    });\n\n    // Initialize vector layer with current date picker value\n    const currentDateStr = getCurrentDateString();\n    vectorLayer = makeVectorLayer(currentDateStr);\n\n    // Get map position from URL or use defaults\n    const urlParams = new URLSearchParams(window.location.search);\n    const lon = parseFloat(urlParams.get('lon')) || -95.0;\n    const lat = parseFloat(urlParams.get('lat')) || 42.0;\n    const zoom = parseInt(urlParams.get('zoom')) || 3;\n    const center = ol.proj.fromLonLat([lon, lat]);\n\n    // Set up map\n    map = new ol.Map({\n        target: 'map',\n        layers: [\n            new ol.layer.Tile({\n                title: 'Global Imagery',\n                source: new ol.source.XYZ({\n                    attributions:\n                        'Tiles © <a href=\"https://services.arcgisonline.com/ArcGIS/' +\n                        'rest/services/World_Imagery/MapServer\">ArcGIS</a>',\n                    url:\n                        'https://server.arcgisonline.com/ArcGIS/rest/services/' +\n                        'World_Imagery/MapServer/tile/{z}/{y}/{x}',\n                }),\n            }),\n            new ol.layer.Tile({\n                title: 'State Boundaries',\n                source: new ol.source.XYZ({\n                    url: '/c/tile.py/1.0.0/usstates/{z}/{x}/{y}.png',\n                }),\n            }),\n            vectorLayer,\n        ],\n        view: new ol.View({\n            projection: 'EPSG:3857',\n            center,\n            zoom,\n        }),\n    });\n\n    map.addControl(new ol.control.LayerSwitcher());\n\n    // Update URL when map is moved or zoomed\n    map.on('moveend', () => {\n        updateURL();\n    });\n\n    // Set up popup overlay\n    const element = document.getElementById('popup');\n    popup = new ol.Overlay({\n        element,\n        positioning: 'bottom-center',\n        stopEvent: true, // Allow clicks on links inside the popup\n    });\n    map.addOverlay(popup);\n\n    // Handle map clicks\n    map.on('click', evt => {\n        const feature = map.forEachFeatureAtPixel(evt.pixel, feature2 => {\n            return feature2;\n        });\n\n        if (feature) {\n            const geometry = feature.getGeometry();\n            const coord = geometry.getCoordinates();\n            showPopover(feature, coord);\n\n            // Fetch CLI report\n            const link = feature.get('link');\n            if (link) {\n                fetchCLIReport(link);\n            }\n        } else {\n            hidePopover();\n        }\n    });\n\n    // Parse URL parameters if present\n    parseURLParameters();\n\n    // Font size buttons\n    document.getElementById('fplus').addEventListener('click', () => {\n        fontSize += 2;\n        vectorLayer.setStyle(vectorStyleFunction);\n    });\n\n    document.getElementById('fminus').addEventListener('click', () => {\n        fontSize -= 2;\n        vectorLayer.setStyle(vectorStyleFunction);\n    });\n\n    // Render attribute change handler\n    document.getElementById('renderattr').addEventListener('change', () => {\n        updateMap();\n    });\n});\n"
  },
  {
    "path": "htdocs/COOP/map/index.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 168);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/mlib.php\";\nrequire_once \"../../../include/forms.php\";\nforce_https();\n\n// Handle URL parameters for date and variable selection\n$date_param = get_str404(\"date\", date(\"Y-m-d\"));\n$var_param = get_str404(\"var\", \"high\");\n\n// Validate date parameter\n$valid_date = $date_param;\nif (!preg_match('/^\\d{4}-\\d{2}-\\d{2}$/', $date_param) || !strtotime($date_param)) {\n    $valid_date = date(\"Y-m-d\");\n}\n\n// Define available render variables with their display names\n$render_vars = [\n    \"high\" => \"High Temperature (°F)\",\n    \"low\" => \"Low Temperature (°F)\",\n    \"coop_tmpf\" => \"Observation Temperature (°F)\",\n    \"precip\" => \"Precipitation (inch)\",\n    \"snow\" => \"Snowfall (inch)\",\n    \"snowd\" => \"Snow Depth (inch)\",\n];\n\n// Validate variable parameter\n$valid_var = array_key_exists($var_param, $render_vars) ? $var_param : \"high\";\n\n// Generate select element using helper function\n$render_select = make_select(\"renderattr\", $valid_var, $render_vars, \"\", \"form-select\", FALSE, FALSE, TRUE, [\"id\" => \"renderattr\"]);\n\n$t = new MyView();\n$t->title = \"Map of Daily NWS COOP Reports\";\n$OL = '10.7.0';\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol.css\" type=\"text/css\">\n<link type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"index.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"/vendor/openlayers/{$OL}/ol.js\" type=\"text/javascript\"></script>\n<script src='/vendor/openlayers/{$OL}/ol-layerswitcher.js'></script>\n<script src='index.js?v=9'></script>\nEOM;\n\n$t->content = <<<EOM\n\n<div id=\"popover-content\" style=\"display: none\">\n  <!-- Hidden div with the popover content -->\n  <p>This is the popover content</p>\n</div>\n\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"/COOP/\">NWS COOP Mainpage</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">Map of NWS Daily COOP Reports</li>\n</ol>\n</nav>\n\n<div class=\"row\">\n<div class=\"col-12\">\n    <div class=\"d-flex justify-content-between align-items-center mb-3\">\n        <h4 class=\"mb-0\">Map of NWS Daily COOP Reports</h4>\n        <div class=\"btn-group\" role=\"group\" aria-label=\"Font size controls\">\n            <button id=\"fminus\" class=\"btn btn-outline-secondary btn-sm\" type=\"button\"\n                title=\"Decrease font size\">\n                <i class=\"bi bi-dash\" aria-hidden=\"true\"></i>\n            </button>\n            <span class=\"btn btn-outline-secondary btn-sm disabled\">\n                <i class=\"bi bi-text-paragraph\" aria-hidden=\"true\"></i>\n            </span>\n            <button id=\"fplus\" class=\"btn btn-outline-secondary btn-sm\" type=\"button\"\n                title=\"Increase font size\">\n                <i class=\"bi bi-plus\" aria-hidden=\"true\"></i>\n            </button>\n        </div>\n    </div>\n\n    <form name='climapform' class=\"mb-4\">\n        <div class=\"row g-3 align-items-end\">\n            <div class=\"col-md-6\">\n                <label for=\"renderattr\" class=\"form-label\">Select Variable to Plot:</label>\n                {$render_select}\n            </div>\n            <div class=\"col-md-4\">\n                <label for=\"datepicker\" class=\"form-label\">Select Date:</label>\n                <input type=\"date\" id=\"datepicker\" class=\"form-control\" value=\"{$valid_date}\">\n            </div>\n        </div>\n    </form>\n</div></div><!-- ./row -->\n\n<div class=\"row\">\n<div class=\"col-12\">\n    <div id=\"map\" class=\"map\">\n        <div id=\"popup\"></div>\n    </div>\n</div>\n</div>\n\nEOM;\n\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/COOP/periods.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/network.php\";\n\n$t = new MyView();\ndefine(\"IEM_APPID\", 31);\n$smonth = get_int404(\"smonth\", 0);\n$emonth = get_int404(\"emonth\", 0);\n$sday = get_int404(\"sday\", 0);\n$eday = get_int404(\"eday\", 0);\n$sortcol = isset($_GET[\"sortcol\"]) ? xssafe($_GET[\"sortcol\"]) : \"avg_high\";\n$station = get_str404('station', 'IA0000', 6);\n$network = get_str404(\"network\", \"IACLIMATE\", 9);\n\n$nt = new NetworkTable($network);\n\n$t->title = \"Time period comparisons\";\n\n$table = \"\";\nif ($sday > 0) {\n    $sts = mktime(0, 0, 0, $smonth, $sday, 2000);\n    $ets = mktime(0, 0, 0, $emonth, $eday, 2000);\n\n    $coop = iemdb(\"coop\");\n    $sname = $nt->table[$station]['name'];\n    $link = \"periods.phtml?station={$station}&amp;network={$network}&amp;sday=$sday&eday=$eday&smonth=$smonth&emonth=$emonth&sortcol=\";\n    $nicedate = sprintf(\"%s - %s\", date(\"d M\", $sts), date(\"d M\", $ets));\n    $table .= <<<EOM\n     <p><strong>Yearly average temperatures for {$sname} [$station] between ({$nicedate}) \n     dates inclusive</strong><br />\n     <table class=\"table table-striped table-sm table-bordered\">\n     <tr>\n       <th><a href=\"{$link}year\">Year:</a></th>\n       <th><a href=\"{$link}avg_temp\">Avg Temp (F):</a></th>\n       <th><a href=\"{$link}avg_high\">Avg High Temp (F):</a></th>\n       <th><a href=\"{$link}avg_low\">Avg Low Temp (F):</a></th>\n       <th><a href=\"{$link}sum_precip\">Precip Total (inch):</a></th>\n       <th><a href=\"{$link}sum_snow\">Snow Total (inch):</a></th>\n       </tr>\nEOM;\n    $mytable = sprintf(\"alldata_%s\", substr($station, 0, 2));\n    $stname = iem_pg_prepare($coop, \"select year,\n             sum(precip) as sum_precip, sum(snow) as sum_snow,\n             avg(high) as avg_high, avg(low) as avg_low,\n             avg((high+low)/2.0) as avg_temp from {$mytable}\n             WHERE station = $1 and sday >= $2 and sday <= $3\n             GROUP by year ORDER by {$sortcol} DESC\");\n\n    $rs = pg_execute($coop, $stname, array(\n        $station, date(\"md\", $sts),\n        date(\"md\", $ets)\n    ));\n    while ($row = pg_fetch_assoc($rs)) {\n        $table .= sprintf(\n            \"<tr><th>%s</th><td>%.2f</td><td>%.2f</td><td>%.2f</td><td>%.2f</td><td>%.1f</td></tr>\",\n            $row[\"year\"],\n            $row[\"avg_temp\"],\n            $row[\"avg_high\"],\n            $row[\"avg_low\"],\n            $row[\"sum_precip\"],\n            $row[\"sum_snow\"]\n        );\n    }\n    $table .= \"</table>\";\n}\n\n$smonthselect = monthSelect($smonth, \"smonth\");\n$sdayselect = daySelect($sday, \"sday\");\n$emonthselect = monthSelect($emonth, \"emonth\");\n$edayselect = daySelect($eday, \"eday\");\n$nselect = networkSelect($network, $station);\n$sselect = selectNetworkType(\"CLIMATE\", $network);\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n    <li><a href=\"/COOP/\">NWS COOP</a></li>\n    <li class=\"active\">Yearly time period averages</li>\n</ol>\n\n<h3>COOP Yearly Summary Between Two Dates</h3>\n\n<p>This application summarizes data for a date period of your choice, by year\nand by station.  Not all stations reported snowfall each year, so please be\ncareful with that data.</p>\n\n<form name=\"ssswitch\" method=\"GET\">\n<p>Data is available from the following states:\n{$sselect}\n<input type=\"submit\" value=\"Select State\">\n</form>\n\n<p><form name=\"switcher\" method=\"GET\">\n<input type=\"hidden\" name=\"network\" value=\"{$network}\" />\n<table class=\"table\">\n<tr><th>Select Station:</th><td>{$nselect}</td>\n<td rowspan=\"3\"><input type=\"submit\" value=\"Make yearly comparison\"></td>\n</tr>\n<tr><th>Start Date:</th><td>{$smonthselect} {$sdayselect}</td></tr>\n<tr><th>End Date:</th><td>{$emonthselect} {$edayselect}</td></tr>\n</table>\n</form>\n\n{$table}\n\n<p>Theoretically, you should be able to highlight the entire table with \nyour cursor and then copy-paste it into a spreadsheet program if you \nlike.\n\n<p>Errors exist in this dataset and you should evaluate the observations\nbefore using...\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/COOP/snowd_duration.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 42);\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\n$coopdb = iemdb('coop');\n$station = isset($_GET[\"station\"]) ? xssafe($_GET[\"station\"]) : 'IA0200';\n$month = get_int404(\"month\", 12);\n$day = get_int404(\"day\", 25);\n\n$ts = strtotime(\"2000-{$month}-{$day}\");\n$sday = date('md', $ts);\n\n$stname1 = iem_pg_prepare($coopdb, \"SELECT * from alldata_ia\n      WHERE station = $1 and sday = $2 and snowd > 0 ORDER\n      by year ASC\");\n$stname2 = iem_pg_prepare($coopdb, \"SELECT min(day) as m from alldata_ia\n      WHERE day > $1 and station = $2 and snowd = 0\");\n\n$table = <<<EOM\n<table class=\"table table-striped table-bordered\">\n<tr><th>Start Day</th><th>Depth [inch]</th><th>End Date</th>\n <th>Duration [days]</th></tr>\nEOM;\n\n/* Find all snow days for this date! */\n$rs = pg_execute($coopdb, $stname1, array(strtoupper($station), $sday));\n$data = array();\nwhile ($row = pg_fetch_assoc($rs)) {\n    $rs2 = pg_execute($coopdb, $stname2, array($row[\"day\"], $station));\n    $row2 = pg_fetch_assoc($rs2, 0);\n    $sts = strtotime($row[\"day\"]);\n    $endts = strtotime($row2[\"m\"]);\n    $days = ($endts - $sts) / 86400;\n    $data[] = $days;\n    $table .= sprintf(\n        \"<tr><td>%s</td><td>%s</td><td>%s</td><td>%.0f</td></tr>\",\n        date('Y M d', $sts),\n        $row[\"snowd\"],\n        date('Y M d', $endts),\n        $days\n    );\n}\nif (pg_num_rows($rs) > 0) {\n    $table .= sprintf(\"<tr><th colspan=\\\"3\\\" align=\\\"right\\\">Average</th><td>%.0f</td></tr>\", (array_sum($data) / pg_num_rows($rs)));\n}\n$table .= \"</table>\";\n\n$t->title = \"COOP Snow Depth Duration\";\n$nselect = networkSelect(\"IACLIMATE\", $station);\n$mselect = monthSelect($month);\n$dselect = daySelect($day);\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/COOP/\">NWS COOP Network</a></li>\n <li class=\"active\">Snow Depth Duration</li>\n</ol>\n\n<h3>Snow Depth Duration</h3>\n\n<p>This application creates a table of duration of snow cover for a given \nday.  The default example answers the question, \"When there is snow on the\nground for Christmas in Ames, how long does it stick around for?\"</p>\n\n<p>The dataset used for this application is based on NWS COOP observations, but\n also contains estimates when data is missing.</p>\n\n<form method=\"GET\" action=\"snowd_duration.phtml\" name=\"Select\">\n<table class=\"table table-striped table-bordered\">\n<tr><th>Select Station</th><th>Month</th><th>Day</th><td></td></tr>\n<tr>\n  <td>{$nselect}</td>\n  <td>{$mselect}</td>\n  <td>{$dselect}</td>\n  <td><input type=\"submit\" value=\"Generate Table\"></td>\n</tr>\n</table>\n</form>\n\n{$table}\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/DCP/cat.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/myview.php\";\n\n$pgconn = iemdb(\"hads\");\n$mesosite = iemdb(\"mesosite\");\n$t = new MyView();\n\n$network = get_str404(\"network\", 'IA_DCP', 9);\n$minute = get_int404(\"minute\", 0);\n$hour = get_int404(\"hour\", date(\"H\"));\n$day = get_int404(\"day\", date(\"d\"));\n$month = get_int404(\"month\", date(\"m\"));\n$year = get_int404(\"year\", date(\"Y\"));\n\n$now = time() - 3600;\n$ts = mktime($hour, $minute, 0, $month, $day, $year);\n$nt = new NetworkTable(array($network));\n$cities = $nt->table;\n\n$t->title = \"GOES/DCP/HADS Display Observations\";\n\n$dstr = date(\"d M Y h:i a\", $ts);\n\n$nselect = \"<select name=\\\"network\\\">\";\n$rs = pg_query($mesosite, \"SELECT id, name from networks \" .\n    \"where id ~* '_DCP' or id ~* '_COOP' ORDER by name ASC\");\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n    $sel = '';\n    if ($network == $row[\"id\"]) {\n        $sel = \" selected='SELECTED'\";\n    }\n    $nselect .= sprintf(\n        \"<option value='%s'%s>%s</option>\\n\",\n        $row[\"id\"],\n        $sel,\n        $row[\"name\"]\n    );\n}\n$nselect .= \"</select>\";\n$ys = yearSelect(2002, $year, \"year\");\n$ms = monthSelect($month);\n$ds = daySelect($day);\n$hs = hourSelect($hour, 'hour');\n\n$ar = array(\"00\" => \"00\", \"15\" => \"15\", \"30\" => \"30\", \"45\" => \"45\");\n$mis = make_select(\"minute\", $minute, $ar);\n\n$tbl = sprintf(\"raw%s\", date(\"Y_m\", $ts));\n$dstr = date(\"Y-m-d H:i\", $ts);\n$ldate = date(\"d M Y h:i A\", $ts);\n\n$stname = iem_pg_prepare($pgconn, \"SELECT t.* from $tbl t, stations s WHERE \" .\n    \"valid = $1 and s.id = t.station and s.network = $2\");\n\n$rs = pg_execute($pgconn, $stname, array($dstr, $network));\n\n/* Load up the data into a big fat array */\n$data = array();\n$datakeys = array();\nwhile ($row = pg_fetch_assoc($rs)) {\n    $station = $row[\"station\"];\n    if (!array_key_exists($station, $cities)) {\n        continue;\n    }\n    $data[$row[\"station\"]][substr($row[\"key\"], 0, 3)] = $row[\"value\"];\n    $datakeys[substr($row[\"key\"], 0, 3)] = 1;\n}\n$stations = array_keys($data);\n$keys = array_keys($datakeys);\nasort($stations);\nasort($keys);\n\n$table = \"<table class=\\\"table table-sm table-striped table-bordered\\\">\";\n$header = \"<tr style=\\\"background: #eee;\\\">\n <th>NWS ID</th><th>Station</th>\";\nforeach ($keys as $k => $v) {\n    $header .= sprintf(\"<th>%s</th>\", $v);\n}\n$header .= \"</tr>\";\n\n$row = 0;\nforeach ($stations as $k => $v) {\n    if ($row % 25 == 0) {\n        $table .= $header;\n    }\n    $row += 1;\n\n    $table .= sprintf(\"<tr><td><a href='site.phtml?station=%s&year=%s&month=%s&day=%s'>%s</a></td><td>%s</td>\", $v, date(\"Y\", $ts), date(\"m\", $ts), date(\"d\", $ts), $v, $cities[$v]['name']);\n    reset($keys);\n    foreach ($keys as $k => $key) {\n        $table .= sprintf(\"<td>%s</td>\", $data[$v][$key] ?? '');\n    }\n    $table .= \"</tr>\";\n}\n$table .= \"</table>\";\n\n$t->content = <<<EOM\n<div class=\"breadcrumb\">\n        <li><a href=\"/DCP/\">DCP/HADS Mainpage</a></li>\n        <li class=\"active\">View All Reports at One Time</li>\n    </div>\n\n<h3>DCP Data Report for time: {$dstr}</h3>\n\n<p>This application will display a table of observations valid at a given\ntime.  The SHEF encoded variable identifier is used to show which sites\nreported which variables.  All times displayed are in <strong>central \nstandard/daylight time</strong>.  If you click on the site identifier, you will\nget a listing of all observations for that site for the date of your \nchoice.\n\n<form method=\"GET\" action=\"cat.phtml\">\n<table>\n<tr>\n  <th>State</th>\n  <th>Year</th>\n  <th>Month</th>\n  <th>Day</th>\n  <th>Hour</th>\n  <th>Minute</th>\n  <td></td>\n</tr>\n\n<tr>\n  <td>\n  Select State: {$nselect}\n</td>\n  <td>{$ys}</td>\n  <td>{$ms}</td>\n  <td>{$ds}</td>\n  <td>{$hs}</td>\n  <td>{$mis}</td>\n  <td><input type=\"Submit\" value=\"View Data\"></td>\n</tr>\n\n{$table}\n</form>\n\n<strong>Legend:</strong>  TAI = Air Temp (F), PCI = Rainfall Counter, PPH = Hourly Precip,\nUDI = Wind Direction, USI = Wind Speed\n\n</table>\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/DCP/current.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 75);\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/mlib.php\";\n$pgconn = iemdb('iem');\n\n$sortcol = isset($_GET['sortcol']) ? xssafe($_GET['sortcol']) : \"valid\";\n$network = get_str404(\"network\", 'IA_DCP', 9);\n$shef = isset($_REQUEST['shef']) && $_REQUEST['shef'] == 'yes';\n\n$t->title = \"DCP/GOES Current Conditions\";\n$t->refresh = 600;\n\n$t->breadcrumbs = <<<EOM\n<ol class=\"breadcrumb\">\n<li><a href=\"/DCP/\">DCP Network</a></li>\n<li class=\"active\">Sortable Currents</li>\n</ol>\nEOM;\n$cols = array(\n    \"valid\" => \"Timestamp\",\n    'station' => \"Station ID\",\n    'name' => 'Station Name',\n    'HGIZ' => 'Water Stage Height',\n    'TAIZ' => 'Air Temperature',\n    'PPHZ' => '1 Hour Precip',\n    'PPDZ' => 'Today Precip',\n    'VBIZ' => 'Battery Voltage',\n    'TWIZ' => 'Water Temperature',\n);\nif (!array_key_exists($sortcol, $cols)) {\n    xssafe(\"</script>\");\n}\n\n$stname = iem_pg_prepare(\n    $pgconn,\n    \"select c.*, s.name, \" .\n        \"c.valid at time zone s.tzname as localvalid \" .\n        \"from current_shef c JOIN stations s \" .\n        \"on (c.station = s.id) where s.network = $1 and c.value > -1000 \".\n        \"order by valid desc\"\n);\n$rs = pg_execute($pgconn, $stname, array($network));\n\n$obs = array();\nwhile ($row = pg_fetch_assoc($rs)) {\n    $datakey = sprintf(\n        \"%s%s%s\",\n        $row[\"physical_code\"],\n        $row[\"duration\"],\n        $row[\"extremum\"]\n    );\n    $lvalid = strtotime($row[\"localvalid\"]);\n    if (!array_key_exists($row['station'], $obs)) {\n        $obs[$row['station']] = array(\"valid\" => $lvalid);\n    }\n    if ($lvalid != $obs[$row['station']]['valid']) {\n        continue;\n    }\n    $obs[$row['station']][$datakey] = $row[\"value\"];\n    $obs[$row['station']]['name'] = $row[\"name\"];\n}\n$final = aSortBySecondIndex($obs, $sortcol, \"desc\");\n\n$nselect = selectNetworkType(\"DCP\", $network);\n\n$ar = array(\"no\" => \"No\", \"yes\" => \"Yes\");\n$sselect = make_select(\"shef\", $shef, $ar);\n\n$t->current_network = \"DCP\";\n$baseurl2 = \"current.phtml?network=$network&sortcol=\";\n\n$content = <<<EOM\n<form method=\"GET\" action=\"current.phtml\" name=\"myselector\">\n<input type=\"hidden\" name=\"sortcol\" value=\"{$sortcol}\">\n<strong>Select Network:</strong> {$nselect}\n\n<strong>Show SHEF Codes:</strong> {$sselect}\n\n<input type=\"submit\" value=\"Go!\">\n</form>\n\n<p>Sorted by: {$cols[$sortcol]}\n<table class=\"table table-sm table-striped table-bordered\">\n<thead>\n<tr>\n  <th><a href=\"{$baseurl2}station\">SiteID:</a></th>\n  <th><a href=\"{$baseurl2}name\">Station Name:</a></th>\n  <th><a href=\"{$baseurl2}valid\">Valid:</a></th>\n  <th><a href=\"{$baseurl2}HGIZ\">Stage</a> [ft]</th>\n  <th><a href=\"{$baseurl2}TAIZ\">Temp</a> [F]</th>\n  <th><a href=\"{$baseurl2}TWIZ\">Water Temp</a> [F]</th>\n  <th><a href=\"{$baseurl2}PPHZ\">1h Rain</a> [in]</th>\n  <th><a href=\"{$baseurl2}PPDZ\">Today Rain</a> [in]</th>\n  <th><a href=\"{$baseurl2}VBIZ\">Battery</a> [V]</th>\n  </tr></thead>\n<tbody>\nEOM;\n$now = time();\nforeach ($final as $site => $value) {\n    $url = sprintf(\"/sites/site.php?station=%s&network=%s\", $site, $network);\n    $content .= \"<tr><td><a href=\\\"$url\\\">$site</a></td>\n    <td>\" . $value[\"name\"] . \"</font></td>\";\n    $content .= \"<td \";\n    $tdiff = $now - $value[\"valid\"];\n    $dtfmt = \"d M h:i A\";\n    if ($tdiff > (6 * 3600)) {\n        $dtfmt = \"d M Y h:i A\";\n        $content .= 'bgcolor=\"red\"';\n    }\n    $content .= \">\" . date($dtfmt, $value[\"valid\"]) . \"</td>\";\n\n    if (array_key_exists('HGIZ', $value)) {\n        $content .= sprintf(\"<td>%s</td>\", $value[\"HGIZ\"]);\n    } else {\n        $content .= \"<td></td>\";\n    }\n\n    if (array_key_exists('TAIZ', $value)) {\n        $content .= sprintf(\"<td>%s</td>\", $value[\"TAIZ\"]);\n    } else {\n        $content .= \"<td></td>\";\n    }\n\n    if (array_key_exists('TWIZ', $value)) {\n        $content .= sprintf(\"<td>%s</td>\", $value[\"TWIZ\"]);\n    } else {\n        $content .= \"<td></td>\";\n    }\n\n    if (array_key_exists('PPHZ', $value)) {\n        $content .= sprintf(\"<td>%s</td>\", $value[\"PPHZ\"]);\n    } else {\n        $content .= \"<td></td>\";\n    }\n\n    if (array_key_exists('PPDZ', $value)) {\n        $content .= sprintf(\"<td>%s</td>\", $value[\"PPDZ\"]);\n    } else {\n        $content .= \"<td></td>\";\n    }\n\n    if (array_key_exists('VBIZ', $value)) {\n        $content .= sprintf(\"<td>%s</td>\", $value[\"VBIZ\"]);\n    } else {\n        $content .= \"<td></td>\";\n    }\n\n\n    $content .= \"</tr>\";\n    if ($shef) {\n        $content .= \"<tr><td colspan=\\\"9\\\">\";\n        foreach ($value as $k => $v) {\n            if ($k == 'name' || $k == 'valid') continue;\n            $content .= sprintf(\"/%s %s \", $k, $v);\n        }\n        $content .= \"</td></tr>\";\n    }\n}\n$content .= <<<EOM\n</tbody><tfoot>\n<tr><td colspan=\"9\">&nbsp;</td></tr>\n</tfoot></table>\nEOM;\n$t->content = $content;\n$t->render('sortables.phtml');\n"
  },
  {
    "path": "htdocs/DCP/index.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"GOES/HADS/DCP\";\n\n$t->content = <<<EOM\n<h3>GOES DCP</h3>\n\n<p>The Geostationary Operational Environmental Satellites\n(GOES) Data Collection Platforms (DCPs) are a set of hydrologic and meteorologic\ndata collection points.  The DCPs are a collection of networks owned and operated\nby a host of entities. [<b>1</b>]  The IEM receives this dataset from our\n<a href=\"https://www.unidata.ucar.edu\">Unidata</a>\nfeed, which contains the products produced by the Office of Dissemination\nof the National Weather Service.<p>\n\n<p>The NWS has a fantastic\n<a href=\"https://hads.ncep.noaa.gov\">website</a> if you are curious\nabout this dataset.</p>\n\n<p>The IEM attempts to process all available data in this feed.  The applications\n below are divided up by states, so switch the state shown to find data outside of\n Iowa. </p>\n\n<h3>Available Tools:</h3>\n<ul>\n<li><a href=\"/sites/locate.php?network=IA_DCP\">IEM Station Data + Metadata</a>\n <br />View maps of sites by state/country that the IEM processes SHEF data for.</li>\n<li><a href='plot.phtml'>Create Current/Historical Timeseries Plots</a>\n  <br />Generate a plot of a station, time period, and variable of your choice.</li>\n<li><a href='map.php'>Interactive Map of Currents by SHEF Code</a>\n  <br />View current data processed by the IEM for a SHEF code of your choice.</li>\n<li><a href='current.phtml'>Sortable Current Conditions</a>\n  <br />View the most recent observations from the network.</li>\n<li><a href='tomb.phtml'>Stations with Unknown Metadata</a>\n  <br />NWSLI site identiers used that are unknown in NWSLI database.</li>\n<li><a href='cat.phtml'>View Observations By Time</a>\n  <br />View a table of observations at a valid time of your choice.</li>\n<li><a href='site.phtml'>View Observations By Site By Day</a>\n  <br />View a table of observations for a site for a day.</li>\n<li><a href='/request/hourlyprecip.phtml'><i class=\"bi bi-download\" aria-hidden=\"true\"></i> Download Hourly Precipitation</a>\n  <br />A subset of observations limited to hourly precipitation reports.</li>\n<li><a href='/request/dcp/fe.phtml'><i class=\"bi bi-download\" aria-hidden=\"true\"></i> Download from the archive</a>\n  <br />Download the observations from the archive.</li>\n</ul>\n<p>\n\n\n<b>References:</b><br>\n<b>1</b> <a\nhref=\"https://hads.ncep.noaa.gov/dcp_operators.shtml\">https://hads.ncep.noaa.gov/dcp_operators.shtml</a>\n, viewed 12 Jul 2017\n<br><a href=\"https://water.usgs.gov/pubs/circ/circ1123/\">https://water.usgs.gov/pubs/circ/circ1123/</a>\n , viewed: 21 May 2025\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/DCP/map.css",
    "content": ".map {\n    height: 400px;\n    width: 100%;\n    background-color: #D2B48C;\n}\n.popover {\n    width: 300px;\n}\n\n/* Custom popup styles */\n.simple-popup {\n    position: absolute;\n    background: white;\n    border: 1px solid #ccc;\n    border-radius: 4px;\n    padding: 10px;\n    max-width: 250px;\n    box-shadow: 0 2px 10px rgba(0,0,0,0.3);\n    z-index: 1000;\n    font-size: 12px;\n    font-family: Arial, sans-serif;\n}\n\n.popup-close-button {\n    float: right;\n    cursor: pointer;\n    font-weight: bold;\n    color: #999;\n    margin-left: 10px;\n    font-size: 16px;\n    line-height: 1;\n}\n\n.popup-close-button:hover {\n    color: #333;\n}"
  },
  {
    "path": "htdocs/DCP/map.js",
    "content": "/* global ol */\nlet physical_code = 'EP';\nlet duration = 'D';\nlet days = 2;\nlet vectorLayer = null;\nlet map = null;\nlet fontSize = 14;\n\n/**\n * Replace HTML special characters with their entity equivalents\n */\nfunction escapeHTML(val) {\n    return val\n        .replace(/&/g, '&amp;')\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/\"/g, '&quot;')\n        .replace(/'/g, '&#039;');\n}\n\n/**\n * Update the URL with current parameters using URLSearchParams\n */\nfunction updateURL() {\n    const url = new URL(window.location);\n    url.searchParams.set('pe', physical_code);\n    url.searchParams.set('duration', duration);\n    url.searchParams.set('days', days);\n    // Clear any legacy hash\n    url.hash = '';\n    window.history.replaceState({}, '', url);\n}\n\n/**\n * Update the map with current form values\n */\nfunction updateMap() {\n    const peSelect = document.getElementById('pe');\n    const durationSelect = document.getElementById('duration');\n    const daysInput = document.getElementById('days');\n\n    // Validate that all required fields have values\n    if (!peSelect.value || !durationSelect.value || !daysInput.value.trim()) {\n        return; // Don't update if any field is empty\n    }\n\n    // Validate that days is a positive number\n    const daysValue = parseInt(daysInput.value.trim(), 10);\n    if (isNaN(daysValue) || daysValue <= 0) {\n        return; // Don't update if days is not a valid positive number\n    }\n\n    physical_code = escapeHTML(peSelect.value);\n    duration = escapeHTML(durationSelect.value);\n    days = daysValue; // Use the validated number\n\n    map.removeLayer(vectorLayer);\n    vectorLayer = makeVectorLayer();\n    map.addLayer(vectorLayer);\n    updateURL();\n}\n\nconst vectorStyleFunction = feature => {\n    if (feature.get('value') !== 'M') {\n        return [\n            new ol.style.Style({\n                fill: new ol.style.Fill({\n                    color: 'rgba(255, 255, 255, 0.6)',\n                }),\n                text: new ol.style.Text({\n                    font: `${fontSize}px Calibri,sans-serif`,\n                    text: feature.get('value').toString(),\n                    fill: new ol.style.Fill({\n                        color: '#FFFFFF',\n                        width: 1,\n                    }),\n                    stroke: new ol.style.Stroke({\n                        color: '#000000',\n                        width: 3,\n                    }),\n                }),\n            }),\n        ];\n    }\n    return [\n        new ol.style.Style({\n            image: new ol.style.Circle({\n                fill: new ol.style.Fill({\n                    color: 'rgba(255,255,255,0.4)',\n                }),\n                stroke: new ol.style.Stroke({\n                    color: '#3399CC',\n                    width: 1.25,\n                }),\n                radius: 5,\n            }),\n            fill: new ol.style.Fill({\n                color: 'rgba(255,255,255,0.4)',\n            }),\n            stroke: new ol.style.Stroke({\n                color: '#3399CC',\n                width: 1.25,\n            }),\n        }),\n    ];\n};\n\n/**\n * Create and return a vector layer with current parameters\n */\nfunction makeVectorLayer() {\n    const vs = new ol.source.Vector({\n        format: new ol.format.GeoJSON(),\n        projection: ol.proj.get('EPSG:3857'),\n        url: `/api/1/shef_currents.geojson?duration=${duration}&pe=${physical_code}&days=${days}`,\n    });\n    vs.on('change', () => {\n        if (vs.getFeatures().length === 0) {\n            alert('No Data Found!'); // skipcq\n        }\n    });\n    return new ol.layer.Vector({\n        source: vs,\n        style: vectorStyleFunction,\n    });\n}\n\n/**\n * Show a popup with station information\n */\nfunction showPopup(coord, content) {\n    // Create a simple popup div if it doesn't exist\n    let popupDiv = document.getElementById('simple-popup');\n    if (!popupDiv) {\n        popupDiv = document.createElement('div');\n        popupDiv.id = 'simple-popup';\n        popupDiv.className = 'simple-popup';\n        document.body.appendChild(popupDiv);\n    }\n\n    // Create close button element\n    const closeButton = document.createElement('div');\n    closeButton.innerHTML = '×';\n    closeButton.className = 'popup-close-button';\n    closeButton.addEventListener('click', hidePopup);\n\n    // Set content with close button\n    popupDiv.innerHTML = '';\n    popupDiv.appendChild(closeButton);\n    const contentDiv = document.createElement('div');\n    contentDiv.innerHTML = content;\n    popupDiv.appendChild(contentDiv);\n\n    popupDiv.style.display = 'block';\n\n    // Position the popup near the click location\n    const pixel = map.getPixelFromCoordinate(coord);\n    const mapElement = document.getElementById('map');\n    const rect = mapElement.getBoundingClientRect();\n\n    // Add scroll offsets to handle page scrolling\n    const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;\n    const scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n\n    // Calculate popup position with proper offsets\n    const left = rect.left + scrollLeft + pixel[0] + 10;\n    const top = rect.top + scrollTop + pixel[1] - 60;\n\n    popupDiv.style.left = `${left}px`;\n    popupDiv.style.top = `${top}px`;\n}\n\n/**\n * Hide the popup\n */\nfunction hidePopup() {\n    const popupDiv = document.getElementById('simple-popup');\n    if (popupDiv) {\n        popupDiv.style.display = 'none';\n    }\n}\n\n/**\n * Initialize the map and UI components\n */\nfunction initializeMap() {\n    vectorLayer = makeVectorLayer();\n    map = new ol.Map({\n        target: 'map',\n        layers: [\n            new ol.layer.Tile({\n                title: 'Global Imagery',\n                source: new ol.source.XYZ({\n                    attributions:\n                        'Tiles © <a href=\"https://services.arcgisonline.com/ArcGIS/' +\n                        'rest/services/World_Imagery/MapServer\">ArcGIS</a>',\n                    url:\n                        'https://server.arcgisonline.com/ArcGIS/rest/services/' +\n                        'World_Imagery/MapServer/tile/{z}/{y}/{x}',\n                }),\n            }),\n            new ol.layer.Tile({\n                title: 'State Boundaries',\n                source: new ol.source.XYZ({\n                    url: '/c/tile.py/1.0.0/usstates/{z}/{x}/{y}.png',\n                }),\n            }),\n            vectorLayer,\n        ],\n        view: new ol.View({\n            projection: 'EPSG:3857',\n            center: [-10575351, 5160979],\n            zoom: 3,\n        }),\n    });\n\n    const layerSwitcher = new ol.control.LayerSwitcher();\n    map.addControl(layerSwitcher);\n\n    // Handle map clicks for popup display\n    map.on('click', evt => {\n        const feature = map.forEachFeatureAtPixel(evt.pixel, feature2 => {\n            return feature2;\n        });\n        if (feature) {\n            const geometry = feature.getGeometry();\n            const coord = geometry.getCoordinates();\n            const content = `<p><strong>ID:</strong> ${feature.get('station')}<br /><strong>Value:</strong> ${feature.get('value')}<br /><strong>UTC Valid:</strong> ${feature.get('utc_valid')}</p>`;\n            showPopup(coord, content);\n        } else {\n            hidePopup();\n        }\n    });\n}\n\n/**\n * Parse URL parameters and set form values, handling legacy hash format\n */\nfunction parseLegacyHashParams() {\n    const url = new URL(window.location);\n    if (url.hash?.includes('.')) {\n        const hashTokens = url.hash.substring(1).split('.');\n        if (hashTokens.length === 3) {\n            const pe = escapeHTML(hashTokens[0]);\n            const dur = escapeHTML(hashTokens[1]);\n            const daysParam = parseInt(hashTokens[2], 10);\n            if (!isNaN(daysParam) && daysParam > 0) {\n                return { pe, dur, days: daysParam, migrated: true };\n            }\n        }\n    }\n    return { migrated: false };\n}\n\nfunction parseModernUrlParams() {\n    const url = new URL(window.location);\n    const pe = url.searchParams.has('pe') ? escapeHTML(url.searchParams.get('pe')) : null;\n    const dur = url.searchParams.has('duration')\n        ? escapeHTML(url.searchParams.get('duration'))\n        : null;\n    let daysVal = null;\n    if (url.searchParams.has('days')) {\n        const daysParam = parseInt(url.searchParams.get('days'), 10);\n        if (!isNaN(daysParam) && daysParam > 0) {\n            daysVal = daysParam;\n        }\n    }\n    return { pe, dur, days: daysVal };\n}\n\nfunction parseURLParams() {\n    // Try legacy hash first\n    const legacy = parseLegacyHashParams();\n    let migrated = false;\n    if (legacy.migrated) {\n        physical_code = legacy.pe;\n        duration = legacy.dur;\n        days = legacy.days;\n        migrated = true;\n    }\n\n    // Modern URL params override hash\n    const modern = parseModernUrlParams();\n    if (modern.pe) {\n        physical_code = modern.pe;\n        migrated = false;\n    }\n    if (modern.dur) {\n        duration = modern.dur;\n        migrated = false;\n    }\n    if (modern.days) {\n        days = modern.days;\n        migrated = false;\n    }\n\n    if (migrated) {\n        updateURL();\n    }\n\n    // Set form values based on parsed or default values\n    const peSelect = document.getElementById('pe');\n    const durationSelect = document.getElementById('duration');\n    const daysInput = document.getElementById('days');\n\n    if (peSelect) {peSelect.value = physical_code;}\n    if (durationSelect) {durationSelect.value = duration;}\n    if (daysInput) {daysInput.value = days;}\n}\n\n/**\n * Initialize font size controls\n */\nfunction initializeFontControls() {\n    const fplusButton = document.getElementById('fplus');\n    const fminusButton = document.getElementById('fminus');\n\n    if (fplusButton) {\n        fplusButton.addEventListener('click', () => {\n            fontSize += 2;\n            vectorLayer.setStyle(vectorStyleFunction);\n        });\n    }\n\n    if (fminusButton) {\n        fminusButton.addEventListener('click', () => {\n            fontSize -= 2;\n            vectorLayer.setStyle(vectorStyleFunction);\n        });\n    }\n}\n\n/**\n * Initialize the application\n */\nfunction init() {\n    initializeMap();\n    parseURLParams();\n    initializeFontControls();\n    initializeFormHandlers();\n    updateMap();\n}\n\n/**\n * Initialize form event handlers for real-time updates\n */\nfunction initializeFormHandlers() {\n    const peSelect = document.getElementById('pe');\n    const durationSelect = document.getElementById('duration');\n    const daysInput = document.getElementById('days');\n\n    let inputTimeout = null;\n\n    if (peSelect) {\n        peSelect.addEventListener('change', updateMap);\n    }\n    if (durationSelect) {\n        durationSelect.addEventListener('change', updateMap);\n    }\n    if (daysInput) {\n        // Use debounced input to prevent updates while user is typing\n        daysInput.addEventListener('input', () => {\n            clearTimeout(inputTimeout);\n            inputTimeout = setTimeout(updateMap, 500); // Wait 500ms after user stops typing\n        });\n\n        // Also update on blur (when user clicks away)\n        daysInput.addEventListener('blur', updateMap);\n    }\n}\n\n// Initialize when DOM is loaded\nif (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n} else {\n    init();\n}\n"
  },
  {
    "path": "htdocs/DCP/map.php",
    "content": "<?php \n/**\n * Produce a map of SHEF values\n */\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 119);\nrequire_once \"../../include/mlib.php\";\nforce_https();\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"SHEF Physical Code Map\";\n$OL = '10.5.0';\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol.css\" type=\"text/css\">\n<link type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"map.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"/vendor/openlayers/{$OL}/ol.js\" type=\"text/javascript\"></script>\n<script src='/vendor/openlayers/{$OL}/ol-layerswitcher.js'></script>\n<script src='map.js?v=3'></script>\nEOM;\n\n$t->content = <<<EOM\n\n<div id=\"popover-content\" style=\"display: none\">\n  <!-- Hidden div with the popover content -->\n  <p>This is the popover content</p>\n</div>\n\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/DCP/\">DCP/HADS Mainpage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Map of SHEF Reports</li>\n  </ol>\n</nav>\n\n<div class=\"row\">\n<div class=\"col-md-12\">\n\n<div class=\"float-end\">\n<i class=\"bi bi-type\" aria-hidden=\"true\"></i>\n<button id=\"fminus\" class=\"btn btn-secondary\" type=\"button\"><i class=\"bi bi-dash\" aria-hidden=\"true\"></i></button>\n<button id=\"fplus\" class=\"btn btn-secondary\" type=\"button\"><i class=\"bi bi-plus\" aria-hidden=\"true\"></i></button>\n</div>\n\n<p>The IEM processes the raw SHEF encoded data into its raw components which\ninclude the physical code and time duration.  This tool presents a simple map\nof the last parsed value for a given physical code and duration.  The within days\nlimits the map to only show stations that have reported the value within the\ngiven number of days.  This is a work-in-progress here and <a href=\"/info/contacts.php\">your feedback</a> would\nbe wonderful.</p>\n\n<form name='bah'><p><strong>Select Physical Code:</strong> \n<select id=\"pe\">\n<option value=\"AD\">[AD] Reserved</option>\n<option value=\"AF\">[AF] Surface frost intensity (coded, see Table 20)</option>\n<option value=\"AG\">[AG] Percent of green vegetation (%)</option>\n<option value=\"AM\">[AM] Surface dew intensity (coded, see Table 21)</option>\n<option value=\"AT\">[AT] Time below critical temperature, 25 DF or -3.9 DC (HRS and MIN)</option>\n<option value=\"AU\">[AU] Time below critical temperature, 32 DF or 0 DC (HRS and MIN)</option>\n<option value=\"AW\">[AW] Leaf wetness (HRS and MIN)</option>\n<option value=\"BA\">[BA] Solid portion of water equivalent (in, mm)</option>\n<option value=\"BB\">[BB] Heat deficit (in, mm)</option>\n<option value=\"BC\">[BC] Liquid water storage (in, mm)</option>\n<option value=\"BD\">[BD] Temperature index (DF, DC)</option>\n<option value=\"BE\">[BE] Maximum water equivalent since snow began to accumulate (in, mm)</option>\n<option value=\"BF\">[BF] Areal water equivalent just prior to the new snowfall (in, mm)</option>\n<option value=\"BG\">[BG] Areal extent of snow cover from the areal depletion curve just prior to the new snowfall (%)</option>\n<option value=\"BH\">[BH] Amount of water equivalent above which 100 % areal snow cover temporarily exists (in, mm)</option>\n<option value=\"BI\">[BI] Excess liquid water in storage (in, mm)</option>\n<option value=\"BJ\">[BJ] Areal extent of snow cover adjustment (in, mm)</option>\n<option value=\"BK\">[BK] Lagged excess liquid water for interval 1 (in, mm)</option>\n<option value=\"BL\">[BL] Lagged excess liquid water for interval 2 (in, mm)</option>\n<option value=\"BM\">[BM] Lagged excess liquid water for interval 3 (in, mm)</option>\n<option value=\"BN\">[BN] Lagged excess liquid water for interval 4 (in, mm)</option>\n<option value=\"BO\">[BO] Lagged excess liquid water for interval 5 (in, mm)</option>\n<option value=\"BP\">[BP] Lagged excess liquid water for interval 6 (in, mm)</option>\n<option value=\"BQ\">[BQ] Lagged excess liquid water for interval 7 (in, mm)</option>\n<option value=\"CA\">[CA] Upper zone tension water contents (in, mm)</option>\n<option value=\"CB\">[CB] Upper zone free water contents (in, mm)</option>\n<option value=\"CC\">[CC] Lower zone tension water contents (in, mm)</option>\n<option value=\"CD\">[CD] Lower zone free water supplementary storage contents (in, mm)</option>\n<option value=\"CE\">[CE] Lower zone free water primary storage contents (in, mm)</option>\n<option value=\"CF\">[CF] Additional impervious area contents (in, mm)</option>\n<option value=\"CG\">[CG] Antecedent precipitation index (in, mm)</option>\n<option value=\"CH\">[CH] Soil moisture index deficit (in, mm)</option>\n<option value=\"CI\">[CI] Base flow storage contents (in, mm)</option>\n<option value=\"CJ\">[CJ] Base flow index (in, mm)</option>\n<option value=\"CK\">[CK] First quadrant index Antecedent Evaporation Index (AEI) (in, mm)</option>\n<option value=\"CL\">[CL] First quadrant index Antecedent Temperature Index (ATI) (DF, DC)</option>\n<option value=\"CM\">[CM] Frost index (DF, DC)</option>\n<option value=\"CN\">[CN] Frost efficiency index (%)</option>\n<option value=\"CO\">[CO] Indicator of first quadrant index (AEI or ATI)</option>\n<option value=\"CP\">[CP] Storm total rainfall (in, mm)</option>\n<option value=\"CQ\">[CQ] Storm total runoff (in, mm)</option>\n<option value=\"CR\">[CR] Storm antecedent index (in, mm)</option>\n<option value=\"CS\">[CS] Current antecedent index (in, mm)</option>\n<option value=\"CT\">[CT] Storm period counter (integer)</option>\n<option value=\"CU\">[CU] Average air temperature (DF, DC)</option>\n<option value=\"CV\">[CV] Current corrected synthetic temperature (DF, DC)</option>\n<option value=\"CW\">[CW] Storm antecedent evaporation index, AEI (in, mm)</option>\n<option value=\"CX\">[CX] Current AEI (in, mm)</option>\n<option value=\"CY\">[CY] Current API (in, mm)</option>\n<option value=\"CZ\">[CZ] Climate Index</option>\n<option value=\"EA\">[EA] Evapotranspiration potential amount (IN, MM)</option>\n<option value=\"ED\">[ED] Evaporation, pan depth (IN, MM)</option>\n<option value=\"EM\">[EM] Evapotranspiration amount (IN, MM)</option>\n<option value=\"EP\">[EP] Evaporation, pan increment (IN, MM)</option>\n<option value=\"ER\">[ER] Evaporation rate (IN/day, MM/day)</option>\n<option value=\"ET\">[ET] Evapotranspiration total (IN, MM)</option>\n<option value=\"EV\">[EV] Evaporation, lake computed (IN, MM)</option>\n<option value=\"FA\">[FA] Fish - shad</option>\n<option value=\"FB\">[FB] Fish - sockeye</option>\n<option value=\"FC\">[FC] Fish - chinook</option>\n<option value=\"FE\">[FE] Fish - chum</option>\n<option value=\"FK\">[FK] Fish - coho</option>\n<option value=\"FL\">[FL] Fish - ladder (1=left, 2=right, 3=total)</option>\n<option value=\"FP\">[FP] Fish - pink</option>\n<option value=\"FS\">[FS] Fish - steelhead</option>\n<option value=\"FT\">[FT] Fish type - type (1=adult, 2=jacks, 3=fingerlings)</option>\n<option value=\"FZ\">[FZ] Fish - count of all types combined</option>\n<option value=\"GC\">[GC] Condition, road surface (coded, see Table 1)</option>\n<option value=\"GD\">[GD] Frost depth, depth of frost penetration, non permafrost (IN, CM)</option>\n<option value=\"GL\">[GL] Salt content on a surface (e.g., road) (%)</option>\n<option value=\"GP\">[GP] Frost, depth of pavement surface (IN, CM)</option>\n<option value=\"GR\">[GR] Frost report, structure (coded, see Table 16)</option>\n<option value=\"GS\">[GS] Ground state (coded, see Table 18)</option>\n<option value=\"GT\">[GT] Frost, depth of surface frost thawed (IN, CM)</option>\n<option value=\"GW\">[GW] Frost, depth of pavement surface frost thawed (IN, CM)</option>\n<option value=\"HA\">[HA] Height of reading, altitude above surface (FT, M)</option>\n<option value=\"HB\">[HB] Depth of reading below surface, or to water table or groundwater (FT, M)</option>\n<option value=\"HC\">[HC] Height, ceiling (FT, M)</option>\n<option value=\"HD\">[HD] Height, head (FT, M)</option>\n<option value=\"HE\">[HE] Height, regulating gate (FT, M)</option>\n<option value=\"HF\">[HF] Elevation, project powerhouse forebay (FT, M)</option>\n<option value=\"HG\">[HG] Height, river stage (FT, M)</option>\n<option value=\"HH\">[HH] Height of reading, elevation in MSL (FT, M)</option>\n<option value=\"HI\">[HI] Stage trend indicator (coded, see Table 19)</option>\n<option value=\"HJ\">[HJ] Height, spillway gate (FT, M)</option>\n<option value=\"HK\">[HK] Height, lake above a specified datum (FT, M)</option>\n<option value=\"HL\">[HL] Elevation, natural lake (FT, M)</option>\n<option value=\"HM\">[HM] Height of tide, MLLW (FT, M)</option>\n<option value=\"HN\">[HN] (S) Height, river stage, daily minimum, translates to HGIRZNZ (FT, M)</option>\n<option value=\"HO\">[HO] Height, flood stage (FT, M)</option>\n<option value=\"HP\">[HP] Elevation, pool (FT, M)</option>\n<option value=\"HQ\">[HQ] Distance from a ground reference point to the river's edge used to estimate stage (coded, see Chapter 7.4.6)</option>\n<option value=\"HR\">[HR] Elevation, lake or reservoir rule curve (FT, M)</option>\n<option value=\"HS\">[HS] Elevation, spillway forebay (FT, M)</option>\n<option value=\"HT\">[HT] Elevation, project tail water stage (FT, M)</option>\n<option value=\"HU\">[HU] Height, cautionary stage (FT, M)</option>\n<option value=\"HV\">[HV] Depth of water on a surface (e.g., road) (IN, MM)</option>\n<option value=\"HW\">[HW] Height, spillway tail water (FT, M)</option>\n<option value=\"HX\">[HX] (S) Height, river stage, daily maximum, translates to HGIRZXZ (FT, M)</option>\n<option value=\"HY\">[HY] (S) Height, river stage at 7 a.m. local just prior to date-time stamp, translates to HGIRZZZ at 7 a.m. local time (FT, M)</option>\n<option value=\"HZ\">[HZ] Elevation, freezing level (KFT, KM)</option>\n<option value=\"IC\">[IC] Ice cover, river (%)</option>\n<option value=\"IE\">[IE] Extent of ice from reporting area, upstream “+,” downstream - (MI, KM)</option>\n<option value=\"IO\">[IO] Extent of open water from reporting area, downstream “+,” upstream - (FT, M)</option>\n<option value=\"IR\">[IR] Ice report type, structure, and cover (coded, see Table 14)</option>\n<option value=\"IT\">[IT] Ice thickness (IN, CM)</option>\n<option value=\"LA\">[LA] Lake surface area (KAC,KM2)</option>\n<option value=\"LC\">[LC] Lake storage volume change (KAF,MCM)</option>\n<option value=\"LS\">[LS] Lake storage volume (KAF,MCM)</option>\n<option value=\"MD\">[MD] Dielectric Constant at depth, paired value vector (coded, see Chapter 7.4.6 for format)</option>\n<option value=\"MI\">[MI] Moisture, soil index or API (IN, CM)</option>\n<option value=\"ML\">[ML] Moisture, lower zone storage (IN, CM)</option>\n<option value=\"MM\">[MM] Fuel moisture, wood (%)</option>\n<option value=\"MN\">[MN] Soil Salinity at depth, paired value vector (coded, see Chapter 7.4.6 for format)</option>\n<option value=\"MS\">[MS] Soil Moisture amount at depth (coded, see Chapter 7.4.6)</option>\n<option value=\"MT\">[MT] Fuel temperature, wood probe (DF, DC)</option>\n<option value=\"MU\">[MU] Moisture, upper zone storage (IN, CM)</option>\n<option value=\"MV\">[MV] Water Volume at Depth, paired value vector (coded, see Chapter 7.4.6 for format)</option>\n<option value=\"MW\">[MW] Moisture, soil, percent by weight (%)</option>\n<option value=\"NC\">[NC] River control switch (0=manual river control, 1=open river uncontrolled)</option>\n<option value=\"NG\">[NG] Total of gate openings (FT, M)</option>\n<option value=\"NL\">[NL] Number of large flash boards down (whole number)</option>\n<option value=\"NN\">[NN] Number of the spillway gate reported (used with HP, QS)</option>\n<option value=\"NO\">[NO] Gate opening for a specific gate (coded, see Chapter 7.4.6)</option>\n<option value=\"NS\">[NS] Number of small flash boards down (whole number)</option>\n<option value=\"PA\">[PA] Pressure, atmospheric (IN-HG, KPA)</option>\n<option value=\"PC\">[PC] Precipitation, accumulator (IN, MM)</option>\n<option value=\"PD\">[PD] Pressure, atmospheric net change during past 3 hours (IN-HG, KPA)</option>\n<option value=\"PE\">[PE] Pressure, characteristic, NWS Handbook #7, table 10.7</option>\n<option value=\"PF\">[PF] (S) Precipitation, flash flood guidance, precipitation to initiate flooding, translates to PPTCF for 3-hour intervals (IN, MM)</option>\n<option value=\"PJ\">[PJ] Precipitation, departure from normal (IN, MM)</option>\n<option value=\"PL\">[PL] Pressure, sea level (IN-HG, KPA)</option>\n<option value=\"PM\">[PM] Probability of measurable precipitation (dimensionless) (coded, see Table 22)</option>\n<option value=\"PN\">[PN] Precipitation normal (IN, MM)</option>\n<option value=\"PP\">[PP] Precipitation (includes liquid amount of new snowfall), actual increment (IN, MM)</option>\n<option value=\"PR\">[PR] Precipitation rate (IN/day, MM/day)</option>\n<option value=\"PT\">[PT] Precipitation, type (coded, see Table 17)</option>\n<option value=\"PY\">[PY] (S) Precipitation, increment ending at 7 a.m. local just prior to date-time stamp, translates to PPDRZZZ at 7 a.m. local time (IN, MM)</option>\n<option value=\"QA\">[QA] Discharge, adjusted for storage at project only (KCFS, CMS)</option>\n<option value=\"QB\">[QB] Runoff depth (IN, MM)</option>\n<option value=\"QC\">[QC] Runoff volume (KAF, MCM)</option>\n<option value=\"QD\">[QD] Discharge, canal diversion (KCFS, CMS)</option>\n<option value=\"QE\">[QE] Discharge, percent of flow diverted from channel (%)</option>\n<option value=\"QF\">[QF] Discharge velocity (MPH, KPH)</option>\n<option value=\"QG\">[QG] Discharge from power generation (KCFS, CMS)</option>\n<option value=\"QI\">[QI] Discharge, inflow (KCFS, CMS)</option>\n<option value=\"QL\">[QL] Discharge, rule curve (KCFS, CMS)</option>\n<option value=\"QM\">[QM] Discharge, preproject conditions in basin (KCFS, CMS)</option>\n<option value=\"QN\">[QN] (S) Discharge, minimum flow, translates to QRIRZNZ (KCFS, CMS)</option>\n<option value=\"QP\">[QP] Discharge, pumping (KCFS, CMS)</option>\n<option value=\"QR\">[QR] Discharge, river (KCFS, CMS)</option>\n<option value=\"QS\">[QS] Discharge, spillway (KCFS, CMS)</option>\n<option value=\"QT\">[QT] Discharge, computed total project outflow (KCFS, CMS)</option>\n<option value=\"QU\">[QU] Discharge, controlled by regulating outlet (KCFS, CMS)</option>\n<option value=\"QV\">[QV] Cumulative volume increment (KAF, MCM)</option>\n<option value=\"QX\">[QX] (S) Discharge, maximum flow, translates to QRIRZXZ (KCFS, CMS)</option>\n<option value=\"QY\">[QY] (S) Discharge, river at 7 a.m. local just prior to date-time stamp translates to QRIRZZZ at 7 a.m. local time (KCFS, CMS)</option>\n<option value=\"QZ\">[QZ] Reserved</option>\n<option value=\"RA\">[RA] Radiation, albedo (%)</option>\n<option value=\"RI\">[RI] Radiation, accumulated incoming solar over specified duration in langleys (LY)</option>\n<option value=\"RN\">[RN] Radiation, net radiometers (watts/meter squared)</option>\n<option value=\"RP\">[RP] Radiation, sunshine percent of possible (%)</option>\n<option value=\"RT\">[RT] Radiation, sunshine hours (HRS)</option>\n<option value=\"RW\">[RW] Radiation, total incoming solar radiation (watts/meter squared)</option>\n<option value=\"SA\">[SA] Snow, areal extent of basin snow cover (%)</option>\n<option value=\"SB\">[SB] Snow, Blowing Snow Sublimation (IN)</option>\n<option value=\"SD\">[SD] Snow, depth (IN, CM)</option>\n<option value=\"SE\">[SE] Snow, Average Snowpack Temperature (DF)</option>\n<option value=\"SF\">[SF] Snow, depth, new snowfall (IN, CM)</option>\n<option value=\"SI\">[SI] Snow, depth on top of river or lake ice (IN, CM)</option>\n<option value=\"SL\">[SL] Snow, elevation of snow line (KFT, M)</option>\n<option value=\"SM\">[SM] Snow, Melt (IN)</option>\n<option value=\"SP\">[SP] Snowmelt plus rain (IN)</option>\n<option value=\"SR\">[SR] Snow report, structure, type, surface, and bottom (coded, see Table 15)</option>\n<option value=\"SS\">[SS] Snow density (IN SWE/IN snow, CM SWE/CM snow)</option>\n<option value=\"ST\">[ST] Snow temperature at depth measured from ground (See Chapter 7.4.6 for format)</option>\n<option value=\"SU\">[SU] Snow, Surface Sublimation (IN)</option>\n<option value=\"SW\">[SW] Snow, water equivalent (IN, MM)</option>\n<option value=\"TA\">[TA] Temperature, air, dry bulb (DF,DC)</option>\n<option value=\"TB\">[TB] Temperature in bare soil at depth (coded, see Chapter 7.4.6 for format)</option>\n<option value=\"TC\">[TC] Temperature, degree days of cooling, above 65 DF or 18.3 DC (DF,DC)</option>\n<option value=\"TD\">[TD] Temperature, dew point (DF,DC)</option>\n<option value=\"TE\">[TE] Temperature, air temperature at elevation above MSL (See Chapter 7.4.6 for format)</option>\n<option value=\"TF\">[TF] Temperature, degree days of freezing, below 32 DF or 0 DC (DF,DC)</option>\n<option value=\"TH\">[TH] Temperature, degree days of heating, below 65 DF or 18.3 DC (DF,DC)</option>\n<option value=\"TJ\">[TJ] Temperature, departure from normal (DF, DC)</option>\n<option value=\"TM\">[TM] Temperature, air, wet bulb (DF,DC)</option>\n<option value=\"TN\">[TN] (S) Temperature, air minimum, translates to TAIRZNZ (DF,DC)</option>\n<option value=\"TP\">[TP] Temperature, pan water (DF,DC)</option>\n<option value=\"TR\">[TR] Temperature, road surface (DF,DC)</option>\n<option value=\"TS\">[TS] Temperature, bare soil at the surface (DF,DC)</option>\n<option value=\"TV\">[TV] Temperature in vegetated soil at depth (coded, see Chapter 7.4.6 for format)</option>\n<option value=\"TW\">[TW] Temperature, water (DF,DC)</option>\n<option value=\"TX\">[TX] (S) Temperature, air maximum, translates to TAIRZXZ (DF,DC)</option>\n<option value=\"TZ\">[TZ] Temperature, Freezing, road surface (DF,DC)</option>\n<option value=\"UC\">[UC] Wind, accumulated wind travel (MI,KM)</option>\n<option value=\"UD\">[UD] Wind, direction (whole degrees)</option>\n<option value=\"UE\">[UE] Wind, standard deviation (Degrees)</option>\n<option value=\"UG\">[UG] Wind, gust at observation time (MI/HR,M/SEC)</option>\n<option value=\"UH\">[UH] Wind gust direction associated with the wind gust (in tens of degrees)</option>\n<option value=\"UL\">[UL] Wind, travel length accumulated over specified (MI,KM)</option>\n<option value=\"UP\">[UP] Peak wind speed (MPH)</option>\n<option value=\"UQ\">[UQ] Wind direction and speed combined (SSS.SDDD), a value of 23.0275 would indicate a wind of 23.0 mi/hr from 275 degrees</option>\n<option value=\"UR\">[UR] Peak wind direction associated with peak wind speed (in tens of degrees)</option>\n<option value=\"US\">[US] Wind, speed (MI/HR,M/SEC)</option>\n<option value=\"UT\">[UT] Minute of the peak wind speed (in minutes past the hour, 0-59)</option>\n<option value=\"VB\">[VB] Voltage - battery (volt)</option>\n<option value=\"VC\">[VC] Generation, surplus capacity of units on line (megawatts)</option>\n<option value=\"VE\">[VE] Generation, energy total (megawatt hours)</option>\n<option value=\"VG\">[VG] Generation, pumped water, power produced (megawatts)</option>\n<option value=\"VH\">[VH] Generation, time (HRS)</option>\n<option value=\"VJ\">[VJ] Generation, energy produced from pumped water (megawatt hours)</option>\n<option value=\"VK\">[VK] Generation, energy stored in reservoir only (megawatt * “duration”)</option>\n<option value=\"VL\">[VL] Generation, storage due to natural flow only (megawatt * “duration”)</option>\n<option value=\"VM\">[VM] Generation, losses due to spill and other water losses (megawatt * “duration”)</option>\n<option value=\"VP\">[VP] Generation, pumping use, power used (megawatts)</option>\n<option value=\"VQ\">[VQ] Generation, pumping use, total energy used (megawatt hours)</option>\n<option value=\"VR\">[VR] Generation, stored in reservoir plus natural flow, energy potential (megawatt * “duration”)</option>\n<option value=\"VS\">[VS] Generation, station load, energy used (megawatt hours)</option>\n<option value=\"VT\">[VT] Generation, power total (megawatts)</option>\n<option value=\"VU\">[VU] Generator, status (encoded)</option>\n<option value=\"VW\">[VW] Generation station load, power used (megawatts)</option>\n<option value=\"WA\">[WA] Water, dissolved nitrogen & argon (PPM, MG/L)</option>\n<option value=\"WC\">[WC] Water, conductance (uMHOS/CM)</option>\n<option value=\"WD\">[WD] Water, piezometer water depth (IN, CM)</option>\n<option value=\"WG\">[WG] Water, dissolved total gases, pressure (IN-HG, MM-HG)</option>\n<option value=\"WH\">[WH] Water, dissolved hydrogen sulfide (PPM, MG/L)</option>\n<option value=\"WL\">[WL] Water, suspended sediment (PPM, MG/L)</option>\n<option value=\"WO\">[WO] Water, dissolved oxygen (PPM, MG/L)</option>\n<option value=\"WP\">[WP] Water, ph (PH value)</option>\n<option value=\"WS\">[WS] Water, salinity (parts per thousand, PPT)</option>\n<option value=\"WT\">[WT] Water, turbidity (JTU)</option>\n<option value=\"WV\">[WV] Water, velocity (FT/SEC, M/SEC)</option>\n<option value=\"WX\">[WX] Water, Oxygen Saturation (%)</option>\n<option value=\"WY\">[WY] Water, Chlorophyll (ppb, ug/L)</option>\n<option value=\"XC\">[XC] Total sky cover (tenths)</option>\n<option value=\"XG\">[XG] Lightning, number of strikes per grid box (whole number)</option>\n<option value=\"XL\">[XL] Lightning, point strike, assumed one strike at transmitted latitude and longitude (whole number)</option>\n<option value=\"XP\">[XP] Weather, past NWS synoptic code (see Appendix D)</option>\n<option value=\"XR\">[XR] Humidity, relative (%)</option>\n<option value=\"XU\">[XU] Humidity, absolute (grams/FT3,grams/M3)</option>\n<option value=\"XV\">[XV] Weather, visibility (MI, KM)</option>\n<option value=\"XW\">[XW] Weather, present NWS synoptic code (see Appendix C)</option>\n<option value=\"YA\">[YA] Number of 15-minute periods a river has been above a specified critical level (whole number)</option>\n<option value=\"YC\">[YC] Random report sequence number (whole number)</option>\n<option value=\"YF\">[YF] Forward power, a measurement of the DCP, antenna, and coaxial cable (watts)</option>\n<option value=\"YI\">[YI] SERFC unique</option>\n<option value=\"YP\">[YP] Reserved Code</option>\n<option value=\"YR\">[YR] Reflected power, a measurement of the DCP, antenna, and coaxial cable (watts)</option>\n<option value=\"YS\">[YS] Sequence number of the number of times the DCP has transmitted (whole number)</option>\n<option value=\"YT\">[YT] Number of 15-minute periods since a random report was generated due to an increase of 0.4 inch of precipitation (whole number)</option>\n<option value=\"YU\">[YU] GENOR raingage status level 1 - NERON observing sites (YUIRG)</option>\n<option value=\"YV\">[YV] A Second Battery Voltage (NERON sites ONLY), voltage 0 (YVIRG)</option>\n<option value=\"YW\">[YW] GENOR raingage status level 2 - NERON observing sites (YWIRG)</option>\n<option value=\"YY\">[YY] GENOR raingage status level 3 - NERON observing sites (YYIRG)</option>\n<option value=\"YZ\">[YZ] Time of Observation - Minutes of the calendar day, minutes 0 - NERON observing sites (YZIRG)</option>\n</select>\n\n&nbsp; &nbsp; <strong>Duration:</strong>\n<select id=\"duration\">\n    <option value=\"D\">D Day (24 Hour)</option>\n    <option value=\"I\">I Instantaneous</option>\n    <option value=\"Q\">Q 6 Hour</option>\n</select>\n\n&nbsp; <strong>Within # of Days:</strong> <input id=\"days\" type=\"text\" size=\"5\" name=\"days\" value=\"2\">\n\n</form>\n</div></div>\n\n<div id=\"map\" class=\"map\"><div id=\"popup\"></div></div>\n\nEOM;\n\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/DCP/plot.module.js",
    "content": "// ES Module for DCP plotting application\n\nimport { escapeHTML, requireSelectElement } from '/js/iemjs/domUtils.js';\nimport { states } from '/js/iemjs/iemdata.js';\n\n// DOM element references\nlet stateSelect = null;\nlet stationSelect = null; \nlet variableSelect = null;\nlet dateInput = null;\nlet dayIntervalInput = null;\nlet imageDisplay = null;\nlet messageDiv = null;\n\n/**\n * Initialize the form elements and event handlers\n */\nfunction initializeForm() {\n    // Get DOM elements\n    stateSelect = requireSelectElement('state-select');\n    stationSelect = requireSelectElement('station-select');\n    variableSelect = requireSelectElement('variable-select');\n    dateInput = document.getElementById('date-input');\n    dayIntervalInput = document.getElementById('day-interval');\n    imageDisplay = document.getElementById('imagedisplay');\n    messageDiv = document.getElementById('msg');\n\n    // Populate state dropdown\n    populateStateSelect();\n\n    // Set up event handlers\n    stateSelect.addEventListener('change', handleStateChange);\n    stationSelect.addEventListener('change', handleStationChange);\n    \n    // Set up form submission\n    const plotButton = document.getElementById('plot-button');\n    if (plotButton) {\n        plotButton.addEventListener('click', updateImage);\n    }\n\n    // Set default values\n    if (dateInput) {\n        const today = new Date();\n        dateInput.value = formatDateForInput(today);\n        dateInput.setAttribute('min', '2002-01-01');\n        dateInput.setAttribute('max', formatDateForInput(today));\n    }\n\n    if (dayIntervalInput) {\n        dayIntervalInput.value = '5';\n        dayIntervalInput.min = '1';\n        dayIntervalInput.max = '31';\n    }\n\n    // Check URL for initial values (supports both legacy hash and modern URLParams)\n    parseURLHash();\n    parseURLParams();\n}\n\n/**\n * Populate the state dropdown with options\n */\nfunction populateStateSelect() {\n    // Clear existing options except the first placeholder\n    stateSelect.innerHTML = '<option value=\"\">Select State...</option>';\n    \n    states.forEach(([abbr, name]) => {\n        const option = document.createElement('option');\n        option.value = abbr;\n        option.textContent = `[${abbr}] ${name}`;\n        stateSelect.appendChild(option);\n    });\n}\n\n/**\n * Handle state selection change\n */\nasync function handleStateChange() {\n    const selectedState = stateSelect.value;\n    \n    // Clear dependent dropdowns\n    clearSelect(stationSelect, 'Select Station...');\n    clearSelect(variableSelect, 'Select Variable...');\n    clearMessage();\n\n    if (!selectedState) {return;}\n\n    try {\n        const response = await fetch(`/json/network.json?network=${selectedState}_DCP`);\n        if (!response.ok) {throw new Error('Network response was not ok');}\n        \n        const data = await response.json();\n        populateStationSelect(data.stations || []);\n    } catch (error) {\n        showMessage(`Error loading stations: ${error.message}`);\n    }\n}\n\n/**\n * Populate station dropdown\n */\nfunction populateStationSelect(stations) {\n    clearSelect(stationSelect, 'Select Station...');\n    \n    stations.forEach(station => {\n        const option = document.createElement('option');\n        option.value = station.id;\n        option.textContent = `[${station.id}] ${station.name}`;\n        stationSelect.appendChild(option);\n    });\n}\n\n/**\n * Handle station selection change\n */\nasync function handleStationChange() {\n    const selectedStation = stationSelect.value;\n    \n    // Clear variable dropdown\n    clearSelect(variableSelect, 'Select Variable...');\n    clearMessage();\n\n    if (!selectedStation) {return;}\n\n    try {\n        const response = await fetch(`/json/dcp_vars.json?station=${selectedStation}`);\n        if (!response.ok) {throw new Error('Network response was not ok');}\n        \n        const data = await response.json();\n        populateVariableSelect(data.vars || []);\n        \n        if (data.vars && data.vars.length === 0) {\n            showMessage('Sorry, did not find any variables for this site!');\n        }\n    } catch (error) {\n        showMessage(`Error loading variables: ${error.message}`);\n    }\n}\n\n/**\n * Populate variable dropdown\n */\nfunction populateVariableSelect(variables) {\n    clearSelect(variableSelect, 'Select Variable...');\n    \n    variables.forEach(variable => {\n        const option = document.createElement('option');\n        option.value = variable.id;\n        option.textContent = `[${variable.id}]`;\n        variableSelect.appendChild(option);\n    });\n}\n\n/**\n * Clear a select element and add placeholder option\n */\nfunction clearSelect(selectElement, placeholderText) {\n    selectElement.innerHTML = `<option value=\"\">${escapeHTML(placeholderText)}</option>`;\n}\n\n/**\n * Show message to user\n */\nfunction showMessage(message) {\n    if (messageDiv) {\n        messageDiv.textContent = message;\n    }\n}\n\n/**\n * Clear message\n */\nfunction clearMessage() {\n    if (messageDiv) {\n        messageDiv.textContent = '';\n    }\n}\n\n/**\n * Format date for HTML date input (YYYY-MM-DD)\n */\nfunction formatDateForInput(date) {\n    return date.toISOString().split('T')[0];\n}\n\n/**\n * Add days to a date\n */\nfunction addDays(date, days) {\n    const result = new Date(date);\n    result.setDate(result.getDate() + days);\n    return result;\n}\n\n/**\n * Validate form inputs for plotting\n * @returns {object} validation result with isValid flag and error message\n */\nfunction validatePlotInputs() {\n    const state = stateSelect.value;\n    const station = stationSelect.value;\n    const variable = variableSelect.value;\n    const startDate = dateInput?.value;\n    const dayInterval = parseInt(dayIntervalInput?.value || '5', 10);\n\n    if (!state || !station || !variable || !startDate) {\n        return { isValid: false, error: 'Please fill in all required fields.' };\n    }\n\n    return { isValid: true, values: { state, station, variable, startDate, dayInterval } };\n}\n\n/**\n * Generate plot image URL\n * @param {object} values form values\n * @returns {string} image URL\n */\nfunction generatePlotImageUrl(values) {\n    const { station, variable, startDate, dayInterval } = values;\n    const startDateObj = new Date(startDate);\n    const endDateObj = addDays(startDateObj, dayInterval);\n    const endDate = formatDateForInput(endDateObj);\n\n    const params = new URLSearchParams({\n        station,\n        sday: startDate,\n        eday: endDate,\n        var: variable\n    });\n    \n    return `plot.php?${params.toString()}`;\n}\n\n/**\n * Update the plot image and URL\n */\nfunction updateImage() {\n    const validation = validatePlotInputs();\n    \n    if (!validation.isValid) {\n        showMessage(validation.error);\n        return;\n    }\n\n    try {\n        const imageUrl = generatePlotImageUrl(validation.values);\n        \n        if (imageDisplay) {\n            imageDisplay.src = imageUrl;\n        }\n\n        // Update browser URL\n        const { state, station, variable, startDate, dayInterval } = validation.values;\n        updateURL(state, station, variable, startDate, dayInterval);\n        \n        clearMessage();\n    } catch (error) {\n        showMessage(`Error creating plot: ${error.message}`);\n    }\n}\n\n/**\n * Update the URL with current form values using URLSearchParams\n */\nfunction updateURL(state, station, variable, startDate, dayInterval) {\n    const url = new URL(window.location);\n    url.searchParams.set('state', state);\n    url.searchParams.set('station', station);\n    url.searchParams.set('variable', variable);\n    url.searchParams.set('startDate', startDate);\n    url.searchParams.set('dayInterval', dayInterval);\n    \n    // Update URL without reloading the page\n    window.history.replaceState({}, '', url);\n}\n\n/**\n * Extract URL parameters\n * @returns {object|null} URL parameters or null if insufficient data\n */\nfunction extractURLParameters() {\n    const urlParams = new URLSearchParams(window.location.search);\n    \n    const state = urlParams.get('state');\n    const station = urlParams.get('station');\n    const variable = urlParams.get('variable');\n    const startDate = urlParams.get('startDate');\n    const dayInterval = urlParams.get('dayInterval');\n\n    // Only proceed if we have the minimum required parameters\n    if (!state || !station || !variable || !startDate) {\n        return null;\n    }\n\n    return { state, station, variable, startDate, dayInterval };\n}\n\n/**\n * Validate URL parameters\n * @param {object} params URL parameters\n * @returns {object} validation result\n */\nfunction validateURLParams(params) {\n    const { startDate, dayInterval } = params;\n\n    // Validate date format (YYYY-MM-DD)\n    const dateRegex = /^\\d{4}-\\d{2}-\\d{2}$/;\n    if (!dateRegex.test(startDate)) {\n        return { isValid: false, error: 'Invalid date format in URL. Please use YYYY-MM-DD format.' };\n    }\n\n    // Validate dayInterval is a reasonable number\n    const interval = parseInt(dayInterval, 10);\n    if (dayInterval && (isNaN(interval) || interval < 1 || interval > 31)) {\n        return { isValid: false, error: 'Invalid day interval in URL. Must be between 1 and 31 days.' };\n    }\n\n    return { isValid: true };\n}\n\n/**\n * Parse URL search parameters and set form values\n */\nfunction parseURLParams() {\n    const params = extractURLParameters();\n    if (!params) {return;}\n\n    const validation = validateURLParams(params);\n    if (!validation.isValid) {\n        showMessage(validation.error);\n        return;\n    }\n\n    const { state, station, variable, startDate, dayInterval } = params;\n    setFormValues(state, station, variable, startDate, dayInterval || '5');\n}\n\n/**\n * Parse URL hash and migrate to URLParams (for backward compatibility)\n * Legacy URLs used format: #IA.AEEI4.HGIZ.2024-12-01.7\n * New URLs use format: ?state=IA&station=AEEI4&variable=HGIZ&startDate=2024-12-01&dayInterval=7\n */\nfunction parseURLHash() {\n    const hash = window.location.hash.substring(1); // Remove #\n    if (!hash) {return;}\n\n    const tokens = hash.split('.');\n    if (tokens.length !== 5) {return;}\n\n    const [state, station, variable, startDate, dayInterval] = tokens;\n\n    // Migrate hash to URLParams and clear the hash\n    const url = new URL(window.location);\n    url.searchParams.set('state', state);\n    url.searchParams.set('station', station);\n    url.searchParams.set('variable', variable);\n    url.searchParams.set('startDate', startDate);\n    url.searchParams.set('dayInterval', dayInterval);\n    url.hash = ''; // Clear the hash\n    \n    // Update URL and set form values\n    window.history.replaceState({}, '', url);\n    setFormValues(state, station, variable, startDate, dayInterval);\n}\n\n/**\n * Set form values and trigger appropriate updates\n */\nfunction setFormValues(state, station, variable, startDate, dayInterval) {\n    if (state && stateSelect) {\n        stateSelect.value = state;\n        handleStateChange().then(() => {\n            if (station && stationSelect) {\n                // Wait a bit for stations to load, then set station\n                setTimeout(() => {\n                    stationSelect.value = station;\n                    handleStationChange().then(() => {\n                        if (variable && variableSelect) {\n                            // Wait for variables to load, then set variable\n                            setTimeout(() => {\n                                variableSelect.value = variable;\n                                if (dateInput && startDate) {dateInput.value = startDate;}\n                                if (dayIntervalInput && dayInterval) {dayIntervalInput.value = dayInterval;}\n                                updateImage();\n                            }, 100);\n                        }\n                    });\n                }, 100);\n            }\n        });\n    }\n}\n\n// Initialize when DOM is loaded\ndocument.addEventListener('DOMContentLoaded', initializeForm);\n\n// Export functions for potential external use\nexport { initializeForm, updateImage };\n"
  },
  {
    "path": "htdocs/DCP/plot.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../include/jpgraph/jpgraph_date.php\";\n$nt = new NetworkTable('IA_DCP');\n$pgconn = iemdb(\"hads\");\n\n$station = get_str404('station', 'AESI4');\n$varname = get_str404('var', 'tmpf');\n$sday = strtotime(get_str404('sday', '2010-01-01'));\n$eday = strtotime(get_str404('eday', '2010-01-02'));\n\n$stname = iem_pg_prepare(\n    $pgconn,\n    \"SELECT * from raw\" . date(\"Y\", $sday) .\n        \" WHERE station = $1 and valid BETWEEN $2 and $3 and key = $4 \" .\n        \"ORDER by valid ASC\"\n);\n\n$rs = pg_execute($pgconn, $stname, array(\n    $station,\n    date('Y-m-d', $sday),\n    date('Y-m-d', $eday),\n    $varname\n));\n\n$data = array();\n$times = array();\nwhile ($row = pg_fetch_assoc($rs)) {\n    $times[] = strtotime($row[\"valid\"]);\n    $data[] = $row[\"value\"];\n}\n\n$graph = new Graph(640, 480);\n$graph->SetScale(\"datelin\");\n\n$graph->SetMarginColor('white');\n\n$graph->img->SetMargin(40, 40, 45, 120);\n\n$title = sprintf(\n    \"%s [%s] \\nPlot of SHEF Variable [%s]\",\n    $nt->table[$station]['name'],\n    $station,\n    $varname\n);\n$graph->title->Set($title);\n\n$graph->xaxis->scale->SetDateFormat(\"M d h A\");\n\n$graph->xaxis->SetTitle(sprintf(\n    \"Time Interval: %s - %s\",\n    date('d M Y', $sday),\n    date('d M Y', $eday)\n));\n\n$graph->xaxis->SetTitleMargin(90);\n$graph->xaxis->SetLabelAngle(90);\n\n// Create the linear plot\n$lineplot = new LinePlot($data, $times);\n$lineplot->SetColor(\"red\");\n$lineplot->SetWeight(2);\n$graph->Add($lineplot);\n\n// Display the graph\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/DCP/plot.phtml",
    "content": "<?php \nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n\n$t->jsextra = <<<EOM\n<script type=\"module\" src=\"plot.module.js\"></script>\nEOM;\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/DCP/\">DCP/HADS Mainpage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Historical DCP Plotting</li>\n  </ol>\n</nav>\n\n<p>This application allows you to plot historical DCP data for \na station, time period, and variable of your choice.  Select a station first\nto reveal available variables for that station.  You may also wish to\n<a href=\"/request/dcp/fe.phtml\">download</a> the raw observations.</p>\n\n<br clear=\"all\" />\n\n<div class=\"row\">\n    <div class=\"col-md-6\">\n        <div id=\"myform\" style=\"float: left;\">\n            <h4>Make Plot Selections Below...</h4>\n            <div class=\"mb-3\">\n                <label for=\"state-select\" class=\"form-label\">Select State:</label>\n                <select id=\"state-select\" class=\"form-select\">\n                    <option value=\"\">Select State...</option>\n                </select>\n            </div>\n            <div class=\"mb-3\">\n                <label for=\"station-select\" class=\"form-label\">Station:</label>\n                <select id=\"station-select\" class=\"form-select\">\n                    <option value=\"\">Select Station...</option>\n                </select>\n            </div>\n            <div class=\"mb-3\">\n                <label for=\"variable-select\" class=\"form-label\">Variable:</label>\n                <select id=\"variable-select\" class=\"form-select\">\n                    <option value=\"\">Select Variable...</option>\n                </select>\n            </div>\n            <div class=\"mb-3\">\n                <label for=\"date-input\" class=\"form-label\">Start Date:</label>\n                <input type=\"date\" id=\"date-input\" class=\"form-control\" />\n            </div>\n            <div class=\"mb-3\">\n                <label for=\"day-interval\" class=\"form-label\">Number of Days:</label>\n                <input type=\"number\" id=\"day-interval\" class=\"form-control\" min=\"1\" max=\"31\" value=\"5\" />\n            </div>\n            <button id=\"plot-button\" class=\"btn btn-primary\">Create Graph</button>\n        </div>\n    </div>\n    <div class=\"col-md-6\">\n        <div id=\"msg\"></div><br />\n        <img src=\"\" id=\"imagedisplay\" class=\"img img-fluid\"/>\n    </div>\n</div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/DCP/site.css",
    "content": "#map {\n    width: 100%;\n    height: 400px;\n    border: 2px solid black;\n}"
  },
  {
    "path": "htdocs/DCP/site.phtml",
    "content": "<?php\n$OL = \"10.6.1\";\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 110);\nrequire_once \"../../include/mlib.php\";\nforce_https();\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\n\n$day = get_int404(\"day\", date(\"d\"));\n$month = get_int404(\"month\", date(\"m\"));\n$year = get_int404(\"year\", date(\"Y\"));\n$station = isset($_GET['station']) ? xssafe($_GET['station']) : null;\n$shefvar = isset($_GET['shefvar']) ? xssafe($_GET['shefvar']) : null;\n$network = get_str404(\"network\", 'IA_DCP', 9);\n\n$ts = mktime(1, 0, 0, $month, $day, $year);\n\n$hads = iemdb(\"hads\");\n$mesosite = iemdb(\"mesosite\");\n\nif (!is_null($station)) {\n    /* Make sure this site is not both a DCP and COOP site, this would cause\n     * the app to do a yearlong query, which is expensive.\n     */\n    $stname = iem_pg_prepare($mesosite, \"SELECT network from stations\n            WHERE id = $1 and (network ~* '_DCP' or network ~* '_COOP')\");\n    $rs = pg_execute($mesosite, $stname, array($station));\n    $alone = (pg_num_rows($rs) == 1) ? TRUE : FALSE;\n\n    if (preg_match('/_COOP/', $network) && $alone) {\n        $table = sprintf(\"raw%s\", date(\"Y\", $ts));\n        if (is_null($shefvar)) {\n            $stname = iem_pg_prepare($hads, \"SELECT * from $table WHERE\n            station = $1 ORDER by valid ASC\");\n            $rs = pg_execute($hads, $stname, array($station));\n        } else {\n            $stname = iem_pg_prepare($hads, \"SELECT * from $table WHERE\n            station = $1 and key = $2 ORDER by valid ASC\");\n            $rs = pg_execute($hads, $stname, array($station, $shefvar));\n        }\n    } else {\n        $table = sprintf(\"raw%s_%s\", date(\"Y\", $ts), date(\"m\", $ts));\n        if (is_null($shefvar)) {\n            $stname = iem_pg_prepare($hads, \"SELECT * from $table WHERE\n                station = $1 and valid BETWEEN $2 and $3 ORDER by valid ASC\");\n            $rs = pg_execute(\n                $hads,\n                $stname,\n                array($station, date(\"Y-m-d\", $ts), date(\"Y-m-d\", $ts + 86400))\n            );\n        } else {\n            $stname = iem_pg_prepare($hads, \"SELECT * from $table WHERE\n                station = $1 and key = $2 and valid BETWEEN $3 and $4 ORDER by valid ASC\");\n            $rs = pg_execute(\n                $hads,\n                $stname,\n                array($station, $shefvar, date(\"Y-m-d\", $ts), date(\"Y-m-d\", $ts + 86400))\n            );\n        }\n    }\n\n    $data = array();\n    $cols = array();\n    while ($row = pg_fetch_assoc($rs)) {\n        $cols[$row[\"key\"]] = 1;\n        $data[strtotime(substr($row[\"valid\"], 0, 16))][$row[\"key\"]] = $row[\"value\"];\n    }\n    $mycols = array_keys($cols);\n    sort($mycols);\n}\n\n$t->title = \"SHEF Data by Site by Day\";\n$t->iemselect2 = TRUE;\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"site.css\" type=\"text/css\">\nEOM;\nif (is_null($station)) {\n    $t->headextra .= <<<EOM\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol.css\" type=\"text/css\">\n<link type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" rel=\"stylesheet\" />\nEOM;\n    $t->jsextra = <<<EOM\n<script src=\"/vendor/openlayers/{$OL}/ol.js\" type=\"text/javascript\"></script>\n<script src='/vendor/openlayers/{$OL}/ol-layerswitcher.js'></script>\n<script src=\"/js/olselect.js\"></script>\nEOM;\n}\n\n$nselect = '<select name=\"network\" class=\"iemselect2\">';\n$rs = pg_query($mesosite, \"SELECT id, name from networks \" .\n    \"where id ~* '_DCP' or id ~* '_COOP' ORDER by name ASC\");\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n    $sel = '';\n    if ($network == $row[\"id\"]) {\n        $sel = \" selected='SELECTED'\";\n    }\n    $nselect .= sprintf(\n        \"<option value='%s'%s>%s</option>\\n\",\n        $row[\"id\"],\n        $sel,\n        $row[\"name\"]\n    );\n}\n$nselect .= \"</select>\";\n$n2select = networkSelect($network, $station);\n\n$ys = yearSelect(2002, $year);\n$ms = monthSelect($month);\n$ds = daySelect($day);\n\n$extra = \"\";\nif (is_null($station)) {\n    $extra = <<<EOM\n<i>Click on the dot to select your site:</i><br />\n<div id=\"map\" data-network=\"{$network}\"></div>\nEOM;\n} else {\n    if (!$alone) {\n        $extra = <<<EOM\n<div class=\"warning\">This site is listed within the IEM database as both a \n    \"COOP\" and \"DCP\" site. This printout below will only include a days \n    worth of data.</div>\nEOM;\n    }\n    $extra .= \"<br /><br />\n    <table class=\\\"table table-striped table-bordered\\\" style=\\\"width: auto;\\\">\";\n    $theader = \"<thead class=\\\"sticky\\\"><tr><th>Site:</th><th>Valid:</th>\";\n    foreach ($mycols as $k => $v) {\n        $theader .= sprintf(\n            '<th><a href=\"site.phtml?station=%s&amp;network=%s&amp;year=%s' .\n                '&amp;month=%s&amp;day=%s&amp;shefvar=%s\">%s</a></th>',\n            $station,\n            $network,\n            date(\"Y\", $ts),\n            date(\"m\", $ts),\n            date(\"d\", $ts),\n            $v,\n            $v,\n        );\n    }\n    $theader .= \"</tr></thead>\";\n    $extra .= $theader;\n\n    $times = array_keys($data);\n    if (sizeof($times) == 0) {\n        $extra .= \"<tr><td colspan=\\\"2\\\">No Data Found</td></tr>\";\n    }\n    $colorme = True;\n    $cnt = 0;\n    foreach ($times as $k => $ts) {\n        $extra .= sprintf(\n            \"<tr%s><td>%s</td><td><a href='cat.phtml?year=%s&month=%s&day=%s&hour=%s&minute=%s'>%s</a></td>\",\n            ($colorme) ? \" style='background: #eee;'\" : \"\",\n            $station,\n            date(\"Y\", $ts),\n            date(\"m\", $ts),\n            date(\"d\", $ts),\n            date(\"H\", $ts),\n            date(\"i\", $ts),\n            date(\"Y-m-d H:i\", $ts)\n        );\n        $colorme = !$colorme;\n        foreach ($mycols as $k => $v) {\n            $extra .= sprintf(\"<td>%s</td>\", $data[$ts][$v] ?? '');\n        }\n        $extra .= \"</tr>\";\n\n        $cnt += 1;\n    }\n\n    $extra .= \"</table>\";\n}\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb bg-light px-3 py-2 mb-4 rounded\">\n    <li class=\"breadcrumb-item\"><a href=\"/DCP/\">GOES DCP/HADS Mainpage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">List Obs by Date</li>\n  </ol>\n</nav>\n<div class=\"row g-4 mb-4\">\n  <div class=\"col-12\">\n    <div class=\"card h-100\">\n      <div class=\"card-body\">\n        <h3 class=\"card-title mb-3\">SHEF Site Observations by Date</h3>\n        <ul class=\"mb-4\">\n          <li>Timestamps are presented in central standard or daylight time</li>\n          <li>The column headings are the <a href=\"https://vlab.noaa.gov/web/mdl/shef-information\">SHEF</a> encoded variable names.</li>\n          <li>Archive begins on 1 Jan 2002 for Iowa, 9 Dec 2010 for other states. The archive is not complete for all the sites listed.</li>\n          <li>The IEM classifies SHEF provided data into two classes on a state by state basis. The COOP network sites are mostly official once-daily cooperative observer sites. The DCP network is everybody else!</li>\n          <li>If you select a COOP network site, you are provided observations for the entire year.</li>\n        </ul>\n        <form method=\"GET\" name=\"chstate\" class=\"row g-3 align-items-end mb-3\">\n          <div class=\"col-md-8\">\n            <label class=\"form-label fw-bold\">Select Network:</label>\n            {$nselect}\n          </div>\n          <div class=\"col-md-4\">\n            <button type=\"submit\" class=\"btn btn-primary w-100\">Select Network</button>\n          </div>\n        </form>\n        <form method=\"GET\" name=\"olselect\" class=\"row g-3 align-items-end\">\n          <input type=\"hidden\" name=\"network\" value=\"{$network}\" />\n          <div class=\"col-md-3\">\n            <label class=\"form-label fw-bold\">Station:</label>\n            {$n2select}\n            <div><a href=\"site.phtml?year={$year}&month={$month}&day={$day}&network={$network}\">Select from map</a></div>\n          </div>\n          <div class=\"col-md-2\">\n            <label class=\"form-label fw-bold\">Year:</label>\n            {$ys}\n          </div>\n          <div class=\"col-md-2\">\n            <label class=\"form-label fw-bold\">Month:</label>\n            {$ms}\n          </div>\n          <div class=\"col-md-2\">\n            <label class=\"form-label fw-bold\">Day:</label>\n            {$ds}\n          </div>\n          <div class=\"col-md-3 d-flex align-items-end\">\n            <button type=\"submit\" class=\"btn btn-success w-100\">View Data</button>\n          </div>\n        </form>\n      </div>\n    </div>\n  </div>\n</div>\n{$extra}\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/DCP/tomb.module.js",
    "content": "\n// Vanilla JS table filter for #table1\ndocument.addEventListener('DOMContentLoaded', () => {\n    const table = document.getElementById('table1');\n    if (!table) {return;}\n    const rows = [...table.tBodies[0].rows];\n\n    const updateCount = (countNode, visible, total) => {\n        countNode.textContent = `${visible} of ${total} rows shown`;\n    };\n\n    // Create filter input\n    const filterDiv = document.createElement('div');\n    filterDiv.className = 'row g-2 align-items-end mb-3';\n    const controlCol = document.createElement('div');\n    controlCol.className = 'col-sm-8 col-md-6 col-lg-4';\n    const label = document.createElement('label');\n    label.textContent = 'Filter Table By';\n    label.setAttribute('for', 'table1-filter');\n    label.className = 'form-label';\n    const input = document.createElement('input');\n    input.type = 'text';\n    input.id = 'table1-filter';\n    input.className = 'form-control';\n    input.setAttribute('placeholder', 'Filter by NWSLI, source, or product');\n    input.setAttribute('aria-describedby', 'table1-filter-count');\n    const count = document.createElement('div');\n    count.id = 'table1-filter-count';\n    count.className = 'form-text';\n    label.appendChild(input);\n    controlCol.appendChild(label);\n    controlCol.appendChild(count);\n    filterDiv.appendChild(controlCol);\n\n    // Insert filter above table\n    table.parentNode.insertBefore(filterDiv, table);\n    updateCount(count, rows.length, rows.length);\n\n    input.addEventListener('input', () => {\n        const filter = input.value.trim().toLowerCase();\n        let visibleRows = 0;\n        for (const row of rows) {\n            const text = row.textContent.toLowerCase();\n            const matches = filter === '' || text.includes(filter);\n            row.style.display = matches ? '' : 'none';\n            if (matches) {\n                visibleRows += 1;\n            }\n        }\n        updateCount(count, visibleRows, rows.length);\n    });\n});\n"
  },
  {
    "path": "htdocs/DCP/tomb.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 99);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/iemprop.php\";\n\n$prop = get_iemprop(\"nwsli.syncdate\");\n$nwsli_sync_date = is_null($prop) ? \"N/A\": $prop;\n$pgconn = iemdb('hads');\n$rs = pg_query($pgconn, \"SELECT nwsli, max(product) from unknown\"\n    . \" WHERE length(nwsli) = 5 and \"\n    . \"nwsli ~* '[A-Z][A-Z][A-Z][A-Z][0-9]' \"\n    . \"GROUP by nwsli ORDER by nwsli ASC\");\n$table = <<<EOM\n<div class=\"table-responsive\">\n<table id=\"table1\" class=\"table table-striped table-bordered align-middle mb-0\">\n  <thead class=\"table-light sticky-top\">\n    <tr>\n      <th scope=\"col\">NWSLI</th>\n      <th scope=\"col\">WMO Source</th>\n      <th scope=\"col\">Recent Product</th>\n    </tr>\n  </thead>\n  <tbody>\nEOM;\n$floor = date(\"YmdHi\", time() - 8 * 86400);\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n  $product = htmlspecialchars($row[\"max\"], ENT_QUOTES);\n  $nwsli = htmlspecialchars($row[\"nwsli\"], ENT_QUOTES);\n  $source = htmlspecialchars(substr($row[\"max\"], 13, 4), ENT_QUOTES);\n  $link = sprintf(\n    '<a href=\"/p.php?pid=%s\">%s</a>',\n    urlencode($row[\"max\"]),\n    $product\n  );\n  if (substr($row[\"max\"], 0, 12) < $floor) {\n    $link = $product;\n    }\n    $table .= sprintf(\n    \"<tr><td>%s</td><td>%s</td><td>%s</td></tr>\\n\",\n    $nwsli,\n    $source,\n        $link\n    );\n}\n$table .= \"</tbody></table></div>\";\n\n$t = new MyView();\n$t->title = \"Unknown NWSLIs used in SHEF Products\";\n$t->jsextra = <<<EOM\n<script src=\"tomb.module.js?v=2\" type=\"module\"></script>\nEOM;\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb bg-light px-3 py-2 mb-4 rounded\">\n    <li class=\"breadcrumb-item\"><a href=\"/DCP/\">HADS/DCP Mainpage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Unknown NWSLIs</li>\n  </ol>\n</nav>\n\n<div class=\"alert alert-info mb-4\" role=\"alert\">\n  <strong>Unknown NWSLIs used in SHEF Products</strong>\n</div>\n<p>The IEM attempts to process all SHEF encoded products that come via a\nNOAAPort data stream. The identifiers used by the stations reported in this\ndata feed are supposed to adhere to the <a href=\"https://www.weather.gov/media/mdl/SHEF_CodeManual_5July2012.pdf\" target=\"_blank\" rel=\"noopener\">SHEF Manual</a>\nspecification for site identifiers. The most common set of identifiers are\nfound within the <a href=\"https://weather.gov/directives/sym/pd03012004curr.pdf\" target=\"_blank\" rel=\"noopener\">National Weather Service Location Identifier (NWSLI)</a> database.\nUnfortunately, not all site ids used by issuance centers are contained within\nNWSLI. This page lists out unknown NWSLI-like identifiers.</p>\n\n<p>The IEM gets about a quarterly dump of the NWSLI database, which was most\nrecently received on <strong>{$nwsli_sync_date}</strong>. So newly added sites\nto NWSLI and listed here would be false positives. The IEM maintains only\na seven day archive of raw SHEF products, so thus why only some links are\nactive within the table.</p>\n\n<p>This page is similar to\n<a href=\"https://www.nohrsc.noaa.gov/shef_archive/tomb.html\" target=\"_blank\" rel=\"noopener\">NOHRSC's Unknown Stations</a>,\nbut this page only contains <strong>NWSLI-like identifiers</strong>.</p>\n\n{$table}\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/GIS/ams_030211.phtml",
    "content": "<?php \nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"AMS GIS Presentation\";\n\n$t->content = <<<EOM\n<h3>2003 AMS Presentation Notes</h3>\n\n        <div class=\"alert alert-danger\">Sorry, some of the links on this page are no\n        longer functioning.</div>\n        \n<p>On 11 Feb 2003, the IEM presented a paper at the 83rd AMS\nAnnual Meeting in Long Beach California.  This page contains links to the\n<a href=\"/present/030211_ams/\">presentation</a> and URLS for applications referenced in the talk.</p>\n\n\n<p><b><a href=\"/GIS/apps/coop/\">Example 1</a>\nClimatological Data</b>\n<br>Interactive climate plots are generated from a climate spatial database.  \nYou can download data you see presented in GIS format.</p>\n\n<p><b>Example 2 IEM Real-time Precipitation Analysis (discontinued)</b>\n<br>Current rainfall observations are combined with NEXRAD precip imagery to\ncreate this dynamic plotting application.  Data is immediately available to\ndownload from this app.</p>\n\n<p><b><a href=\"GIS/apps/pcs/\">Example 3</a> Archived NEXRAD vs ASOS/AWOS precipitation comparisons</b>\n<br>This application allows dynamic comparisons between historical hourly rainfall\nestimates from the NEXRAD and observations from the AWOS/ASOS.  Eventually, this \napplication will work in real-time and archived mode and with other networks.</p>\n\n<p><b><a href=\"/sites/locate.php\">Example 4</a> IEM Site Location Maps</b>\n<br>This slick application combines topography, photography and other layers\nwith an IEM site location to produce a zoomable plot of a site's location. The\nmaps are <b>fascinating</b> to look at.  Once you follow the link, you will\nwant to select a station and then \"Location Maps\".</p>\n\n<p><b><a href=\"/GIS/apps/plotter/currents.php\">Example 5</a>\nDynamic Data Plotter</b>\n<br>Utilizing GIS data and the power of PHP, dynamic images are generated from\nuser selections of stations and data variable.</p>\n\n<p>All of these applications are open-source and available for your use.  Please\nsend Daryl (akrherz@iastate.edu) an email if you are interested in any of these apps.\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/GIS/apps/agclimate/chill.php",
    "content": "<?php\nrequire_once \"../../../../config/settings.inc.php\";\nrequire_once \"../../../../include/iemmap.php\";\nrequire_once \"../../../../include/database.inc.php\";\nrequire_once \"../../../../include/network.php\";\nrequire_once \"../../../../include/forms.php\";\nrequire_once \"../../../../include/vendor/mapscript.php\";\n$nt = new NetworkTable(\"ISUSM\");\n$ISUAGcities = $nt->table;\n\n$year = get_int404(\"year\", date(\"Y\", time() - 86400 - (7 * 3600)));\n$month = get_int404(\"month\", date(\"m\", time() - 86400 - (7 * 3600)));\n$day = get_int404(\"day\", date(\"d\", time() - 86400 - (7 * 3600)));\n$date = isset($_GET[\"date\"]) ? xssafe($_GET[\"date\"]) : $year . \"-\" . $month . \"-\" . $day;\n\n$ts = strtotime($date);\n\n$myStations = $ISUAGcities;\n$height = 480;\n$width = 640;\n\n$map = new mapObj(\"../../../../data/gis/base26915.map\");\n$map->setProjection(\"init=epsg:26915\");\n$map->setsize($width, $height);\n$map->setextent(175000, 4440000, 775000, 4890000);\n\n$counties = $map->getLayerByName(\"counties\");\n$counties->__set(\"status\", MS_ON);\n\n$snet = $map->getLayerByName(\"station_plot\");\n$snet->__set(\"status\", MS_ON);\n\n$iards = $map->getLayerByName(\"iards\");\n$iards->__set(\"status\", 1);\n\n$bar640t = $map->getLayerByName(\"bar640t\");\n$bar640t->__set(\"status\", MS_ON);\n\n$states = $map->getLayerByName(\"states\");\n$states->__set(\"status\", MS_ON);\n\n$ponly = $map->getLayerByName(\"pointonly\");\n$ponly->__set(\"status\", MS_ON);\n\n$img = $map->prepareImage();\n$counties->draw($map, $img);\n$states->draw($map, $img);\n$iards->draw($map, $img);\n$bar640t->draw($map, $img);\n\n$c = iemdb(\"isuag\");\n// Figure out when we should start counting\n$doy1 = date(\"j\", mktime(0, 0, 0, 9, 1, $year));\n$doy2 = date(\"j\", $ts);\n$edate = date(\"Y-m-d\", $ts);\nif ($month >= 9) {\n    $sdate = sprintf(\"%s-09-01\", $year);\n    $dateint = \"extract(doy from valid) BETWEEN $doy1 and $doy2\";\n} else {\n    $sdate = sprintf(\"%s-09-01\", intval($year) - 1);\n    $dateint = \"(extract(doy from valid) < $doy1 or extract(doy from valid) > $doy2)\";\n}\n\n$data = array();\n$dbargs = array($sdate, $edate);\n$sql = <<<EOM\n    select station, min(valid) as v from sm_hourly\n    WHERE valid > $1 and tair_c_avg < f2c(29.0) and\n    valid < $2 GROUP by station\nEOM;\n$stname = iem_pg_prepare($c, $sql);\n$rs =  pg_execute($c, $stname, $dbargs);\n\n$sql = <<< EOM\n    select count(distinct valid) as c from sm_hourly \n    WHERE station = $1 and valid > $2 and valid < $3\n    and tair_c_avg >= f2c(32.0) and tair_c_avg <= f2c(45.0)\nEOM;\n$sub_st1 = iem_pg_prepare($c, $sql);\n\n$sql = <<< EOM\n    select count(distinct valid) as c \n    from sm_hourly WHERE station = $1 and tair_c_avg >= f2c(32)\n    and tair_c_avg <= f2c(45) \n    and extract(year from valid) >= $2 and \n    extract(year from valid) < extract(year from now()) and\n    $dateint\nEOM;\n$sub_st2 = iem_pg_prepare($c, $sql);\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    $bdate = $sdate;\n    $key = $row[\"station\"];\n\n    $data[$key]['name'] = $ISUAGcities[$key]['name'];\n    $data[$key]['lon'] = $ISUAGcities[$key]['lon'];\n    $data[$key]['lat'] = $ISUAGcities[$key]['lat'];\n\n    $rs2 = pg_execute($c, $sub_st1, array($key, $row[\"v\"], $edate));\n    if (pg_num_rows($rs2) == 0) {\n        continue;\n    }\n    $r = pg_fetch_assoc($rs2, 0);\n    $val = $r[\"c\"];\n\n    $data[$key]['var'] = $val;\n\n    // Calculate average?\n    $syear = 2000;\n    if (!is_null($ISUAGcities[$key][\"archive_begin\"])) {\n        $syear = intval($ISUAGcities[$key][\"archive_begin\"]->format(\"Y\"));\n    }\n\n    $rs2 = pg_execute($c, $sub_st2, array($key, $syear));\n    if (pg_num_rows($rs2) == 0) continue;\n    $r = pg_fetch_assoc($rs2, 0);\n    if ((intval(date(\"Y\")) - $syear - 1) == 0) continue;\n    $avg = ($r[\"c\"]) / (intval(date(\"Y\")) - $syear - 1);\n\n    $data[$key]['var2'] = round($avg, 0);\n\n    // Red Dot... \n    $pt = new pointObj();\n    $pt->setXY($ISUAGcities[$key]['lon'], $ISUAGcities[$key]['lat'], 0);\n    $pt->draw($map, $ponly, $img, 0, \"\");\n\n    // Value UL\n    $pt = new pointObj();\n    $pt->setXY($ISUAGcities[$key]['lon'], $ISUAGcities[$key]['lat'], 0);\n    $pt->draw($map, $snet, $img, 1, $val);\n\n    // City Name\n    $pt = new pointObj();\n    $pt->setXY($ISUAGcities[$key]['lon'], $ISUAGcities[$key]['lat'], 0);\n    if ($key == \"A131909\" || $key == \"A130209\") {\n        $pt->draw($map, $snet, $img, 0, $ISUAGcities[$key]['name']);\n    } else {\n        $pt->draw($map, $snet, $img, 0, $ISUAGcities[$key]['name']);\n    }\n}\n\niemmap_title(\n    $map,\n    $img,\n    \"Standard Chill Units [ $sdate thru \" . date(\"Y-m-d\", $ts) . \" ]\",\n    (pg_num_rows($rs) == 0) ? 'No Data Found!' : null\n);\n$map->drawLabelCache($img);\n\nheader(\"Content-type: image/png\");\necho $img->getBytes();\n"
  },
  {
    "path": "htdocs/GIS/apps/agclimate/dayplot.phtml",
    "content": "<?php\nrequire_once \"../../../../config/settings.inc.php\";\n\nheader(\"Location: /plotting/auto/?q=199\");\n"
  },
  {
    "path": "htdocs/GIS/apps/agclimate/gsplot.css",
    "content": "#map {\n    width: 100%;\n    height: 450px;\n    border: 2px solid #ddd;\n    border-radius: 4px;\n    margin-bottom: 20px;\n}\n\n/* Popup styling improvements */\n.ol-popup {\n    background: white;\n    border: 2px solid #0066cc;\n    border-radius: 5px;\n    padding: 10px;\n    box-shadow: 0 2px 8px rgba(0,0,0,0.3);\n    max-width: 300px;\n    font-size: 14px;\n}\n\n.ol-popup h4 {\n    margin: 0 0 10px 0;\n    color: #0066cc;\n}\n\n.ol-popup hr {\n    border: none;\n    border-top: 1px solid #eee;\n    margin: 8px 0;\n}\n\n/* Loading state */\n#datatable {\n    min-height: 100px;\n    font-family: 'Courier New', monospace;\n    font-size: 12px;\n    background-color: #f8f9fa;\n    border: 1px solid #dee2e6;\n    padding: 10px;\n}\n\n/* Responsive improvements */\n@media (max-width: 768px) {\n    #map {\n        height: 300px;\n    }\n    \n    .table-responsive {\n        font-size: 12px;\n    }\n}\n.legend-table {\n    margin-top: 10px;\n}\n.legend-table th, .legend-table td {\n    padding: 4px 8px;\n    text-align: left;\n}"
  },
  {
    "path": "htdocs/GIS/apps/agclimate/gsplot.js",
    "content": "/* global ol */\nlet map = null;\nlet dataLayer = null;\nlet popup = null;\nlet datavar = null;\n\nfunction roundValue(value, varType) {\n    const round = {\"precip\": 2, \"gdd\": 0, \"sgdd\": 0, \"et\": 2, \"srad\": 0};\n    const roundDigits = round[varType] || 0;\n    return parseFloat(value).toFixed(roundDigits);\n}\n\nfunction generateASCIITable(features) {\n    const mapDiv = document.getElementById('map');\n    if (!mapDiv) {return '';}\n    \n    const varname = mapDiv.dataset.var;\n    if (!varname || !datavar) {return '';}\n    const vardisplay = mapDiv.dataset.vardisplay;\n    const period = mapDiv.dataset.period;\n    const year = mapDiv.dataset.year;\n    \n    let output = `# ${year} ${vardisplay} (${period})\\n`;\n    output += \"#-----------------------snip------------------\\n\";\n    output += `ID   ,StationName                             ,City           ,Latitude  ,Longitude ,${varname.padEnd(10)},climate_${varname}\\n`;\n    \n    const climovar = `climo_${datavar}`;\n    \n    features.forEach(feature => {\n        const props = feature.getProperties();\n        if (props[datavar] === null || props[datavar] === undefined) {\n            return; // Skip missing data\n        }\n        \n        let climo = \"M\";\n        if (props[climovar] !== null && props[climovar] !== undefined) {\n            climo = roundValue(props[climovar], datavar);\n        }\n        \n        // Format each field with proper width and alignment\n        const station = props.station.toString().padEnd(5);\n        const name = props.name.substring(0, 40).padEnd(40);\n        const city = props.city.substring(0, 15).padEnd(15);\n        const lat = props.lat.toFixed(4).padStart(10);\n        const lon = props.lon.toFixed(4).padStart(10);\n        const value = roundValue(props[datavar], datavar).toString().padStart(10);\n        const climoStr = climo.toString().padStart(10);\n        \n        output += `${station},${name},${city},${lat},${lon},${value},${climoStr}\\n`;\n    });\n    \n    return output;\n}\n\nfunction createPopupContent(feature) {\n    const props = feature.getProperties();\n    const mapDiv = document.getElementById('map');\n    if (!mapDiv) {return '';}\n    \n    if (!datavar) {\n        return '';\n    }\n    const vardisplay = mapDiv.dataset.vardisplay;\n    \n    let value = props[datavar];\n    if (value === null || value === undefined) {\n        value = \"M\";\n    } else {\n        value = roundValue(value, datavar);\n    }\n    \n    return `\n        <div class=\"popup-content\">\n            <h4>${props.name}</h4>\n            <p><strong>Station ID:</strong> ${props.station}</p>\n            <p><strong>City:</strong> ${props.city}</p>\n            <p><strong>Location:</strong> ${props.lat.toFixed(4)}, ${props.lon.toFixed(4)}</p>\n            <hr>\n            <p><strong>${vardisplay}:</strong> ${value}</p>\n        </div>\n    `;\n}\n\nfunction initMap() {\n    const mapDiv = document.getElementById('map');\n    if (!mapDiv) {return;}\n    const wsuri = mapDiv.dataset.wsuri;\n    datavar = mapDiv.dataset.datavar;\n    if (!wsuri || !datavar) {return;}\n\n    // Create data layer\n    dataLayer = new ol.layer.Vector({\n        title: 'ISU Soil Moisture Station Data',\n        source: new ol.source.Vector({\n            url: wsuri,\n            format: new ol.format.GeoJSON(),\n            projection: 'EPSG:4326'\n        }),\n        style: (feature) => {\n            const props = feature.getProperties();\n            const value = props[datavar];\n            \n            if (value === null || value === undefined) {\n                // Missing data - gray circle\n                return new ol.style.Style({\n                    image: new ol.style.Circle({\n                        radius: 8,\n                        fill: new ol.style.Fill({color: '#cccccc'}),\n                        stroke: new ol.style.Stroke({color: '#000000', width: 1})\n                    })\n                });\n            }\n            \n            // Display value as text on the map\n            const displayValue = roundValue(value, datavar);\n            \n            return new ol.style.Style({\n                image: new ol.style.Circle({\n                    radius: 18,\n                    fill: new ol.style.Fill({color: 'rgba(255, 255, 255, 0.9)'}),\n                    stroke: new ol.style.Stroke({color: '#0066cc', width: 2})\n                }),\n                text: new ol.style.Text({\n                    text: displayValue.toString(),\n                    font: 'bold 13px Arial',\n                    fill: new ol.style.Fill({color: '#0066cc'}),\n                    stroke: new ol.style.Stroke({color: '#ffffff', width: 3})\n                })\n            });\n        }\n    });\n\n    // Base layers\n    const osmLayer = new ol.layer.Tile({\n        title: 'OpenStreetMap',\n        type: 'base',\n        visible: true,\n        source: new ol.source.OSM()\n    });\n    \n    const stateLayer = new ol.layer.Tile({\n        title: 'State Boundaries',\n        source: new ol.source.XYZ({\n            url: '/c/tile.py/1.0.0/usstates/{z}/{x}/{y}.png'\n        })\n    });\n\n    const countyLayer = new ol.layer.Tile({\n        title: 'County Boundaries',\n        visible: false,\n        source: new ol.source.XYZ({\n            url: '/c/tile.py/1.0.0/uscounties/{z}/{x}/{y}.png'\n        })\n    });\n\n    // Create map\n    map = new ol.Map({\n        target: 'map',\n        layers: [osmLayer, stateLayer, countyLayer, dataLayer],\n        view: new ol.View({\n            projection: 'EPSG:3857',\n            center: ol.proj.transform([-93.5, 42.1], 'EPSG:4326', 'EPSG:3857'),\n            zoom: 7\n        })\n    });\n\n    // Add layer switcher\n    const layerSwitcher = new ol.control.LayerSwitcher();\n    map.addControl(layerSwitcher);\n\n    // Create popup overlay\n    const popupElement = document.createElement('div');\n    popupElement.className = 'ol-popup';\n    popupElement.style.cssText = `${''}\n        background: white;\n        border: 2px solid #000;\n        border-radius: 5px;\n        padding: 10px;\n        box-shadow: 0 1px 4px rgba(0,0,0,0.2);\n        max-width: 300px;\n    `;\n    \n    popup = new ol.Overlay({\n        element: popupElement,\n        positioning: 'bottom-center',\n        stopEvent: false,\n        offset: [0, -15]\n    });\n    map.addOverlay(popup);\n\n    // Handle map clicks\n    map.on('click', (evt) => {\n        const feature = map.forEachFeatureAtPixel(evt.pixel, (feature2) => {\n            return feature2;\n        });\n        \n        if (feature) {\n            const coordinates = feature.getGeometry().getCoordinates();\n            popup.setPosition(coordinates);\n            popupElement.innerHTML = createPopupContent(feature);\n        } else {\n            popup.setPosition();\n        }\n    });\n\n    // Handle data loading\n    dataLayer.getSource().on('change', () => {\n        const state = dataLayer.getSource().getState();\n        const tableElement = document.getElementById('datatable');\n        if (!tableElement) {return;}\n        \n        if (state === 'loading') {\n            tableElement.textContent = 'Loading station data...';\n        } else if (state === 'ready') {\n            const features = dataLayer.getSource().getFeatures();\n            if (features.length > 0) {\n                // Generate and populate ASCII table\n                const tableContent = generateASCIITable(features);\n                tableElement.textContent = tableContent;\n                \n                // Fit map to data extent with padding\n                map.getView().fit(dataLayer.getSource().getExtent(), {\n                    size: map.getSize(),\n                    padding: [50, 50, 50, 50],\n                    maxZoom: 10\n                });\n                \n            } else {\n                tableElement.textContent = 'No data available for the selected period.';\n            }\n        } else if (state === 'error') {\n            tableElement.textContent = 'Error loading data. Please try refreshing the page or selecting a different time period.';\n        }\n    });\n\n    // Handle cursor changes on hover\n    map.on('pointermove', (evt) => {\n        const pixel = map.getEventPixel(evt.originalEvent);\n        const hit = map.hasFeatureAtPixel(pixel);\n        const target = map.getTarget();\n        if (target?.style) {\n            target.style.cursor = hit ? 'pointer' : '';\n        }\n    });\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n    // Initialize the map\n    initMap();\n\n    // Handle CSV download (vanilla JS)\n    const saveBtn = document.getElementById('save');\n    if (saveBtn) {\n        saveBtn.addEventListener('click', () => {\n            const datatable = document.getElementById('datatable');\n            if (!datatable) {return;}\n            const content = datatable.textContent.split(/\\n/).slice(2).join(\"\\n\");\n            const link = document.createElement('a');\n            link.setAttribute('download', 'isusm.csv');\n            link.setAttribute('href', `data:text/plain;charset=utf-8,${encodeURIComponent(content)}`);\n            link.click();\n        });\n    }\n});"
  },
  {
    "path": "htdocs/GIS/apps/agclimate/gsplot.php",
    "content": "<?php\n\nrequire_once \"../../../../config/settings.inc.php\";\nrequire_once \"../../../../include/iemmap.php\";\nrequire_once \"../../../../include/forms.php\";\nrequire_once \"../../../../include/vendor/mapscript.php\";\n\n$var = isset($_GET[\"var\"]) ? $_GET[\"var\"] : \"gdd50\";\n$year = get_int404(\"year\", date(\"Y\"));\n$smonth = get_int404(\"smonth\", 5);\n$emonth = get_int404(\"emonth\", 9);\n$sday = get_int404(\"sday\", 1);\n$eday = get_int404(\"eday\", 30);\n$imgsz = isset($_GET[\"imgsz\"]) ? $_GET[\"imgsz\"] : \"640x480\";\n$ar = explode(\"x\", $imgsz);\n$width = $ar[0];\n$height = $ar[1];\n\n$gddbase = 50;\n$datavar = $var;\nif (substr($var, 0, 3) == \"gdd\") {\n    $gddbase = intval(str_replace(\"gdd\", \"\", $var));\n    $datavar = \"gdd\";\n}\nif (substr($var, 0, 4) == \"sgdd\") {\n    $gddbase = intval(str_replace(\"sgdd\", \"\", $var));\n    $datavar = \"sgdd\";\n}\n\n$wsuri = sprintf(\n    \"/api/1/isusm/daily.geojson?sdate=%s-%02.0f-%02.0f&edate=%s-%02.0f-%02.0f&\" .\n        \"gddbase=%s&gddceil=%s\",\n    $year,\n    $smonth,\n    $sday,\n    $year,\n    $emonth,\n    $eday,\n    $gddbase,\n    86\n);\n\n$varDef = array(\n    \"gdd32\" => \"Growing Degree Days (base=32)\",\n    \"gdd41\" => \"Growing Degree Days (base=41)\",\n    \"gdd46\" => \"Growing Degree Days (base=46)\",\n    \"gdd48\" => \"Growing Degree Days (base=48)\",\n    \"gdd50\" => \"Growing Degree Days (base=50)\",\n    \"gdd51\" => \"Growing Degree Days (base=51)\",\n    \"gdd52\" => \"Growing Degree Days (base=52)\",\n    \"et\" => \"Potential Evapotranspiration (inch)\",\n    \"precip\" => \"Precipitation (inch)\",\n    \"srad\" => \"Solar Radiation (langleys)\",\n    \"sgdd50\" => \"Soil Growing Degree Days (base=50)\",\n    \"sgdd52\" => \"Soil Growing Degree Days (base=52)\",\n    \"sdd86\" => \"Stress Degree Days (base=86)\"\n);\n\n$rnd = array(\n    \"gdd\" => 0,\n    \"et\" => 2, \"c11\" => 2,\n    \"precip\" => 2,\n    \"srad\" => 0,\n    \"sgdd\" => 0\n);\n\n$proj = \"init=epsg:26915\";\n\n$map = new mapObj(\"../../../../data/gis/base26915.map\");\n$map->setsize($width, $height);\n$map->setProjection($proj);\n\n$map->setextent(175000, 4440000, 775000, 4890000);\n\n$counties = $map->getLayerByName(\"counties\");\n$counties->__set(\"status\", MS_ON);\n\n$snet = $map->getLayerByName(\"station_plot\");\n$snet->__set(\"status\", MS_ON);\n\n$iards = $map->getLayerByName(\"iards\");\n$iards->__set(\"status\", MS_ON);\n\n$bar640t = $map->getLayerByName(\"bar640t\");\n$bar640t->__set(\"status\", MS_ON);\n\n$ponly = $map->getLayerByName(\"pointonly\");\n$ponly->__set(\"status\", MS_ON);\n\n$states = $map->getLayerByName(\"states\");\n$states->__set(\"status\", MS_ON);\n\n$img = $map->prepareImage();\n$counties->draw($map, $img);\n$states->draw($map, $img);\n$iards->draw($map, $img);\n$bar640t->draw($map, $img);\n\n$sdate = new DateTime(\"{$year}-{$smonth}-{$sday}\");\n$edate = new DateTime(\"{$year}-{$emonth}-{$eday}\");\n$sstr_txt = $sdate->format(\"M j\");\n$estr_txt = $edate->format(\"M j\");\n\n$jdata = file_get_contents($INTERNAL_BASEURL . $wsuri);\n$jobj = json_decode($jdata, $assoc = TRUE);\n\nforeach ($jobj[\"features\"] as $bogus => $value) {\n    $props = $value[\"properties\"];\n    $value = $props[$datavar];\n    if (is_null($value)) {\n        continue;\n    }\n    $sid = $props[\"station\"];\n    $lon = $props[\"lon\"];\n    $lat = $props[\"lat\"];\n    if ($datavar == \"et\" && $sid == \"GVNI4\") {\n        continue;\n    }\n    if ($sid == \"DONI4\") {\n        $lat -= 0.2;\n    } elseif ($sid == \"AHTI4\") {\n        $lat += 0.2;\n        $lon -= 0.2;\n    } elseif ($sid == \"AKCI4\") {\n        $lat -= 0.2;\n        $lon += 0.2;\n    } elseif ($sid == \"AMFI4\") {\n        continue;\n    } elseif ($sid == \"BOOI4\") {\n        $lon -= 0.2;\n    } elseif ($sid == \"FRUI4\") {\n        $lat -= 0.05;\n    }\n\n    // Red Dot... \n    $pt = new pointObj();\n    $pt->setXY($lon, $lat, 0);\n    $pt->draw($map, $ponly, $img, 0, \"\");\n\n    // Value UL\n    $pt = new pointObj();\n    $pt->setXY($lon, $lat, 0);\n    $pt->draw($map, $snet, $img, 1, round($value, $rnd[$datavar]));\n\n    // Climate\n    if (substr($var, 0, 3) == \"gdd\" || $var == \"precip\") {\n        $pt = new pointObj();\n        $pt->setXY($lon, $lat, 0);\n        $pt->draw($map, $snet, $img, 2, \"(\" . round($value - $props[\"climo_\" . $datavar], $rnd[$datavar]) . \")\");\n    }\n\n    // City Name\n    $pt = new pointObj();\n    $pt->setXY($lon, $lat, 0);\n    $ar = explode(\"-\", $props['name']);\n    $pt->draw($map, $snet, $img, 0, $ar[0]);\n}\n\niemmap_title(\n    $map,\n    $img,\n    $year . \" \" . $varDef[$var],\n    \"(\" . $sstr_txt . \" - \" . $estr_txt . \") [some stations moved for legibility]\"\n);\n$map->drawLabelCache($img);\n\nheader(\"Content-type: image/png\");\necho $img->getBytes();\n"
  },
  {
    "path": "htdocs/GIS/apps/agclimate/gsplot.phtml",
    "content": "<?php\nrequire_once \"../../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 51);\nrequire_once \"../../../../include/forms.php\";\nrequire_once \"../../../../include/myview.php\";\n\n$var = isset($_GET[\"var\"]) ? xssafe($_GET[\"var\"]) : \"gdd50\";\n$year = get_int404(\"year\", date(\"Y\"));\n$smonth = get_int404(\"smonth\", 5);\n$emonth = get_int404(\"emonth\", 9);\n$sday = get_int404(\"sday\", 1);\n$eday = get_int404(\"eday\", 30);\n\n$OL = \"10.5.0\";\n\n// Make sure our edate is not too late\n$today = time() - 86400;\n$edate = mktime(0, 0, 0, $emonth, $eday, $year);\nif ($edate > $today) {\n    $emonth = date(\"m\", $today);\n    $eday = date(\"d\", $today);\n}\n\n$varDef = array(\n    \"gdd32\" => \"Growing Degree Days (base=32)\",\n    \"gdd41\" => \"Growing Degree Days (base=41)\",\n    \"gdd46\" => \"Growing Degree Days (base=46)\",\n    \"gdd48\" => \"Growing Degree Days (base=48)\",\n    \"gdd50\" => \"Growing Degree Days (base=50)\",\n    \"gdd51\" => \"Growing Degree Days (base=51)\",\n    \"gdd52\" => \"Growing Degree Days (base=52)\",\n    \"et\" => \"Potential Evapotranspiration\",\n    \"precip\" => \"Precipitation\",\n    \"srad\" => \"Solar Radiation (langleys)\",\n    \"sgdd50\" => \"Soil Growing Degree Days (base=50)\",\n    \"sgdd52\" => \"Soil Growing Degree Days (base=52)\"\n);\nif (!array_key_exists($var, $varDef)) {\n    die(\"variable undefined.\");\n}\n$gddbase = 50;\n$datavar = $var;\nif (substr($var, 0, 3) == \"gdd\") {\n    $gddbase = intval(str_replace(\"gdd\", \"\", $var));\n    $datavar = \"gdd\";\n}\nif (substr($var, 0, 4) == \"sgdd\") {\n    $gddbase = intval(str_replace(\"sgdd\", \"\", $var));\n    $datavar = \"sgdd\";\n}\n\n$wsuri = sprintf(\n    \"/api/1/isusm/daily.geojson?sdate=%s-%02.0f-%02.0f&edate=%s-%02.0f-%02.0f&\" .\n        \"gddbase=%s&gddceil=%s\",\n    $year,\n    $smonth,\n    $sday,\n    $year,\n    $emonth,\n    $eday,\n    $gddbase,\n    86\n);\n\n$t = new MyView();\n$t->title = \"ISUAG Growing Season Data\";\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol.css\" type=\"text/css\">\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" type=\"text/css\">\n<link rel=\"stylesheet\" href=\"gsplot.css\" type=\"text/css\">\nEOM;\n\n$vselect = make_select(\"var\", $var, $varDef);\n\n$h3 = \"\";\nif ($datavar == \"gdd\" ||  $var == \"precip\") {\n    $h3 = \"Departure from climatology is shown below the accumulated value.\";\n}\n$yselect = yearSelect(1986, $year, \"year\");\n$smselect = monthSelect($smonth, 'smonth');\n$sdselect = daySelect($sday, 'sday');\n$emselect = monthSelect($emonth, 'emonth');\n$edselect = daySelect($eday, 'eday');\n\n$t->content = <<<EOM\n<h3>Growing Season Maps</h3>\n\n<p>This application will plot an accumulated variable for a time period of your \nselection.  Data is based on the automated sensors from the ISU AG Climate\nnetwork.  A <a href=\"/GIS/apps/coop/gsplot.phtml\">similar application</a> \nexists based on the COOP network data, which\nis of higher quality for temperature and precipitation.\n\n<form method=\"GET\" action=\"gsplot.phtml\">\n<table class=\"table\"> \n<thead>\n<tr>\n   <th>Plot Parameter</th>\n   <th>Year</th>\n   <th>Month</th>\n   <th>Day</th>\n   <td></td>\n  </tr>\n</thead>\n <tr>\n  <td rowspan=2>{$vselect}</td>\n  <td rowspan=2>{$yselect}</td>\n  <td>{$smselect}</td>\n  <td>{$sdselect}</td>\n  <td rowspan=2><input type=\"submit\" value=\"Update Map\"></td>\n  </tr>\n <tr>\n  <td>{$emselect}</td>\n  <td>{$edselect}</td>\n  </tr>\n</table>\n</form>\n\n<div class=\"row\">\n<div class=\"col-sm-12\">\n\n<h3>Interactive Map</h3>\n{$h3}\n<p>Click on any station marker to view detailed information. Use mouse wheel to zoom, drag to pan.</p>\n<div id=\"map\" \n     data-wsuri=\"{$wsuri}\" \n     data-var=\"{$var}\" \n     data-datavar=\"{$datavar}\" \n     data-vardisplay=\"{$varDef[$var]}\" \n     data-period=\"{$smonth}/{$sday} - {$emonth}/{$eday}\"\n     data-year=\"{$year}\"\n     role=\"application\"\n     aria-label=\"Interactive weather station map showing {$varDef[$var]} data\"></div>\n\n<h3>Dynamic Historical Data:</h3>\n<a href=\"/plotting/auto/?q=199\">Daily Data Plots</a>\n<br /><b>Growing Season Plots</b>\n\n\n<p><b>*Note:</b> Precipitation recorded from this network is not reliable.\n You should use precipitation obs from the <a href=\"/COOP/\">COOP</a> network.\n\n</div></div>\n\n<div class=\"row\">\n<div class=\"col-sm-12\">\n<h3>Station Data Table</h3>\n<p>This table contains the raw data for all weather stations shown on the map above.</p>\n<p>\n<button type=\"button\" role=\"button\" id=\"save\" class=\"btn btn-primary\" \n        aria-describedby=\"download-help\">Download CSV Text</button>\n<span id=\"download-help\" class=\"sr-only\">Downloads the station data as a CSV file for use in spreadsheet applications</span>\n<br />\n<pre id=\"datatable\" aria-live=\"polite\" aria-label=\"Weather station data table\">Loading data...</pre>\n\n<p>You should be able to 'copy & paste' this raw data listing into a simple\ntext editor and save the data file on your machine.  Most GIS systems can \nthen import this dataset as a layer.  You may have to omit the commented lines\n(#) if your GIS has trouble importing the data.\n</div>\n</div>\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"/vendor/openlayers/{$OL}/ol.js\"></script>\n<script src=\"/vendor/openlayers/{$OL}/ol-layerswitcher.js\"></script>\n<script src=\"gsplot.js?v=7\"></script>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/GIS/apps/agclimate/month.php",
    "content": "<?php\nrequire_once \"../../../../config/settings.inc.php\";\nrequire_once \"../../../../include/iemmap.php\";\nrequire_once \"../../../../include/database.inc.php\";\nrequire_once \"../../../../include/network.php\";\nrequire_once \"../../../../include/forms.php\";\nrequire_once \"../../../../include/vendor/mapscript.php\";\n\n$dbconn = iemdb(\"isuag\");\n$dvar = isset($_GET[\"dvar\"]) ? xssafe($_GET[\"dvar\"]) : \"rain_in_tot\";\n\n$title = array(\n    \"rain_in_tot\" => \"Rainfall (inches)\",\n    \"dailyet\" => \"Potential Evapotrans. (in)\"\n);\nif (!array_key_exists($dvar, $title)) die();\n\n$stname = iem_pg_prepare($dbconn, \"select station, sum({$dvar}_qc) as s,\n    min(valid) as min_valid, max(valid) as max_valid from sm_daily \n    WHERE extract(month from valid) = $1 and\n    extract(year from valid) = $2 GROUP by station\");\n\n$nt = new NetworkTable(\"ISUSM\");\n$ISUAGcities = $nt->table;\n\n$year = get_int404(\"year\", date(\"Y\", time() - 86400 - (7 * 3600)));\n$month = get_int404(\"month\", date(\"m\", time() - 86400 - (7 * 3600)));\n$day = get_int404(\"day\", date(\"d\", time() - 86400 - (7 * 3600)));\n\n$sts = mktime(0, 0, 0, $month, 1, $year);\n\n$myStations = $ISUAGcities;\n$height = 768;\n$width = 1024;\n\n$map = new mapObj(\"../../../../data/gis/base26915.map\");\n$map->setProjection(\"init=epsg:26915\");\n$map->setsize($width, $height);\n$map->setextent(175000, 4440000, 775000, 4890000);\n\n$counties = $map->getLayerByName(\"counties\");\n$counties->__set(\"status\", MS_ON);\n\n$snet = $map->getLayerByName(\"station_plot\");\n$snet->__set(\"status\", MS_ON);\n\n$iards = $map->getLayerByName(\"iards\");\n$iards->__set(\"status\", 1);\n\n$bar640t = $map->getLayerByName(\"bar640t\");\n$bar640t->__set(\"status\", MS_ON);\n\n$states = $map->getLayerByName(\"states\");\n$states->__set(\"status\", MS_ON);\n\n$ponly = $map->getLayerByName(\"pointonly\");\n$ponly->__set(\"status\", MS_ON);\n\n$img = $map->prepareImage();\n$counties->draw($map, $img);\n$states->draw($map, $img);\n$iards->draw($map, $img);\n$bar640t->draw($map, $img);\n\n$rs = pg_execute($dbconn, $stname, array($month, $year));\n$minvalid = null;\n$maxvalid = null;\nwhile ($row = pg_fetch_assoc($rs)) {\n    $key = $row[\"station\"];\n    if ($key == \"AMFI4\" or $key == \"AHTI4\") continue;\n    $minv = strtotime($row[\"min_valid\"]);\n    $maxv = strtotime($row[\"max_valid\"]);\n\n    if (is_null($minvalid) || $minv < $minvalid) {\n        $minvalid = $minv;\n    }\n    if (is_null($maxvalid) || $maxv > $maxvalid) {\n        $maxvalid = $maxv;\n    }\n    if ($dvar == \"rain_in_tot\") {\n        $val = round($row[\"s\"], 2);\n    } else {\n        $val = round($row[\"s\"] / 25.4, 2);\n    }\n\n    // Red Dot... \n    $pt = new pointObj();\n    $pt->setXY($ISUAGcities[$key]['lon'], $ISUAGcities[$key]['lat'], 0);\n    $pt->draw($map, $ponly, $img, 0, \"\");\n\n    // Value UL\n    $pt = new pointObj();\n    $pt->setXY($ISUAGcities[$key]['lon'], $ISUAGcities[$key]['lat'], 0);\n    $pt->draw($map, $snet, $img, 0, $val);\n\n    // City Name\n    $pt = new pointObj();\n    $pt->setXY($ISUAGcities[$key]['lon'], $ISUAGcities[$key]['lat'], 0);\n    if ($key == \"A131909\" || $key == \"A130209\") {\n        $pt->draw($map, $snet, $img, 1, $ISUAGcities[$key]['plot_name']);\n    } else {\n        $pt->draw($map, $snet, $img, 1, $ISUAGcities[$key]['plot_name']);\n    }\n}\nif (!is_null($minvalid)) {\n    $minvalid = date(\"Y-m-d\", $minvalid);\n    $maxvalid = date(\"Y-m-d\", $maxvalid);\n    iemmap_title($map, $img, $title[$dvar] . \" [ \" .\n        $minvalid . \" thru \" . $maxvalid . \" ]\");\n}\n$map->drawLabelCache($img);\n\nheader(\"Content-type: image/png\");\necho $img->getBytes();\n"
  },
  {
    "path": "htdocs/GIS/apps/agclimate/plot.php",
    "content": "<?php\nrequire_once \"../../../../config/settings.inc.php\";\n\nheader(\"Location: /plotting/auto/?q=199\");\n"
  },
  {
    "path": "htdocs/GIS/apps/coop/gsplot.php",
    "content": "<?php\nrequire_once \"../../../../config/settings.inc.php\";\nrequire_once \"../../../../include/database.inc.php\";\nrequire_once \"../../../../include/forms.php\";\nrequire_once \"../../../../include/network.php\";\nrequire_once \"../../../../include/vendor/mapscript.php\";\n\n$coopdb = iemdb(\"coop\");\n\n$var = isset($_GET[\"var\"]) ? xssafe($_GET[\"var\"]) : \"gdd50\";\n$year = get_int404(\"year\", date(\"Y\"));\n$smonth = get_int404(\"smonth\", 5);\n$sday = get_int404(\"sday\", 1);\n$emonth = get_int404(\"emonth\", date(\"m\"));\n$eday = get_int404(\"eday\", date(\"d\"));\n$network = isset($_REQUEST[\"network\"]) ? xssafe($_REQUEST[\"network\"]) : \"IACLIMATE\";\nif (strlen($network) > 9){\n    xssafe(\"<tag>\");\n}\n\n$nt = new NetworkTable($network);\n$cities = $nt->table;\n\n$sts = new DateTime(\"{$year}-{$smonth}-{$sday}\");\n$ets = new DateTime(\"{$year}-{$emonth}-{$eday}\");\n\n\nfunction mktitlelocal($map, $imgObj, $titlet)\n{\n\n    $layer = $map->getLayerByName(\"credits26915\");\n\n    // point feature with text for location\n    $point = new pointobj();\n    $point->setXY(0, 10);\n    $point->draw($map, $layer, $imgObj, 0, $titlet);\n}\n\nfunction plotNoData($map, $img)\n{\n    $layer = $map->getLayerByName(\"credits\");\n\n    $point = new pointobj();\n    $point->setXY(100, 200);\n    $point->draw(\n        $map,\n        $layer,\n        $img,\n        1,\n        \"  No data found for this date! \"\n    );\n}\n\n$varDef = array(\n    \"gdd32\" => \"Growing Degree Days (base=32)\",\n    \"gdd41\" => \"Growing Degree Days (base=41)\",\n    \"gdd46\" => \"Growing Degree Days (base=46)\",\n    \"gdd48\" => \"Growing Degree Days (base=48)\",\n    \"gdd50\" => \"Growing Degree Days (base=50)\",\n    \"gdd51\" => \"Growing Degree Days (base=51)\",\n    \"gdd52\" => \"Growing Degree Days (base=52)\",\n    \"cdd65\" => \"Cooling Degree Days (base=65)\",\n    \"hdd65\" => \"Heating Degree Days (base=65)\",\n    \"et\" => \"Potential Evapotranspiration\",\n    \"prec\" => \"Precipitation\",\n    \"sgdd50\" => \"Soil Growing Degree Days (base=50)\",\n    \"sdd86\" => \"Stress Degree Days (base=86)\",\n    \"mintemp\" => \"Minimum Temperature [F]\",\n    \"maxtemp\" => \"Maximum Temperature [F]\",\n);\n\n$rnd = array(\n    \"gdd32\" => 0,\n    \"gdd41\" => 0,\n    \"gdd46\" => 0,\n    \"gdd48\" => 0,\n    \"gdd50\" => 0,\n    \"gdd51\" => 0,\n    \"gdd52\" => 0,\n    \"et\" => 2,\n    \"prec\" => 2,\n    \"sgdd50\" => 0,\n    \"sdd86\" => 0,\n    \"cdd65\" => 0,\n    \"hdd65\" => 0,\n    \"mintemp\" => 0,\n    \"maxtemp\" => 0\n);\n$myStations = $cities;\n$height = 480;\n$width = 640;\n\n$map = new MapObj(\"../../../../data/gis/base4326.map\");\n$map->imagecolor->setRGB(255, 255, 255);\n$map->setSize(1024, 768);\n\n$state = substr($network, 0, 2);\n$dbconn = iemdb(\"postgis\");\n$stname = iem_pg_prepare($dbconn,\n    \"SELECT ST_xmin(g), ST_xmax(g), ST_ymin(g), ST_ymax(g) from (\n        select ST_Extent(the_geom) as g from states\n        where state_abbr = $1\n        ) as foo\");\n$rs = pg_execute($dbconn, $stname, Array($state));\n$row = pg_fetch_assoc($rs);\n$buf = 0.2; // 35km\n$xsz = $row[\"st_xmax\"] - $row[\"st_xmin\"];\n$ysz = $row[\"st_ymax\"] - $row[\"st_ymin\"];\n$minx = $row[\"st_xmin\"] - $buf;\n$maxx = $row[\"st_xmax\"] + $buf;\n$miny = $row[\"st_ymin\"] - $buf;\n$maxy = $row[\"st_ymax\"] + $buf;\n$map->setextent($minx, $miny, $maxx, $maxy);\n\n$counties = $map->getLayerByName(\"counties\");\n$counties->__set(\"status\", MS_ON);\n\n$states = $map->getLayerByName(\"states\");\n$states->__set(\"status\", MS_ON);\n\n$bar640t = $map->getLayerByName(\"bar640t\");\n$bar640t->__set(\"status\", MS_ON);\n\n$snet = $map->getLayerByName(\"snet\");\n$snet->__set(\"status\", MS_ON);\n\n$ponly = $map->getLayerByName(\"pointonly\");\n$ponly->__set(\"status\", MS_ON);\n\n$img = $map->prepareImage();\n$counties->draw($map, $img);\n$states->draw($map, $img);\n$bar640t->draw($map, $img);\n\n// Allow 15 labels in each direction?\n$dy = ($map->extent->maxy - $map->extent->miny) / 25;\n$dx = ($map->extent->maxx - $map->extent->minx) / 25;\n\n$stname = iem_pg_prepare($coopdb, <<<EOM\n    SELECT station,\n    sum(precip) as s_prec,\n    sum(gddxx(32, 86, high, low)) as s_gdd32,\n    sum(gddxx(41, 86, high, low)) as s_gdd41,\n    sum(gddxx(46, 86, high, low)) as s_gdd46,\n    sum(gddxx(48, 86, high, low)) as s_gdd48,\n    sum(gddxx(50, 86, high, low)) as s_gdd50,\n    sum(gddxx(51, 86, high, low)) as s_gdd51,\n    sum(gddxx(52, 86, high, low)) as s_gdd52,\n    sum(cdd(high, low, 65)) as s_cdd65,\n    sum(hdd(high, low, 65)) as s_hdd65,\n    sum(sdd86(high,low)) as s_sdd86, min(low) as s_mintemp,\n    max(high) as s_maxtemp from alldata_{$state}\n    WHERE day >= $1 and day <= $2\n    and substr(station, 3, 4) != '0000' and substr(station, 3, 1) != 'C'\n    GROUP by station\n    ORDER by station ASC\nEOM\n);\n$rs = pg_execute($coopdb, $stname, array(\n    $sts->format(\"Y-m-d\"),\n    $ets->format(\"Y-m-d\")\n));\n\n$used = Array();\n\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n\n    $ukey = $row[\"station\"];\n    if (!isset($cities[$ukey])) continue;\n    $key = sprintf(\n        \"%.0f_%.0f\",\n        ($cities[$ukey][\"lon\"] - $map->extent->minx) / $dx,\n        ($cities[$ukey][\"lat\"] - $map->extent->miny) / $dy,\n    );\n    if (in_array($key, $used)) continue;\n    $used[] = $key;\n    // Red Dot...\n    $pt = new PointObj();\n    $pt->setXY($cities[$ukey]['lon'], $cities[$ukey]['lat'], 0);\n    $pt->draw($map, $ponly, $img, 2, \"\");\n\n    // City Name\n    $pt = new PointObj();\n    $pt->setXY($cities[$ukey]['lon'], $cities[$ukey]['lat'], 0);\n    $pt->draw($map, $snet, $img, 3, substr($ukey, 2, 4));\n\n    // Value UL\n    $pt = new PointObj();\n    $pt->setXY($cities[$ukey]['lon'], $cities[$ukey]['lat'], 0);\n    $pt->draw(\n        $map,\n        $snet,\n        $img,\n        0,\n        round($row[\"s_\" . $var], $rnd[$var])\n    );\n}\nif ($i == 0)\n    plotNoData($map, $img);\n\n$title = sprintf(\n    \"%s (%s through %s)\",\n    $varDef[$var],\n    $sts->format(\"Y-m-d\"),\n    $ets->format(\"Y-m-d\")\n);\n\nmktitlelocal($map, $img, $title);\n$map->drawLabelCache($img);\n\nheader(\"Content-type: image/png\");\necho $img->getBytes();\n"
  },
  {
    "path": "htdocs/GIS/apps/coop/gsplot.phtml",
    "content": "<?php\ndefine(\"IEM_APPID\", 32);\n\nrequire_once \"../../../../config/settings.inc.php\";\nrequire_once \"../../../../include/database.inc.php\";\nrequire_once \"../../../../include/forms.php\";\nrequire_once \"../../../../include/network.php\";\nrequire_once \"../../../../include/myview.php\";\n$coopdb = iemdb(\"coop\");\n\n$t = new MyView();\n\n$var = isset($_GET[\"var\"]) ? xssafe($_GET[\"var\"]) : \"gdd50\";\n$year = get_int404(\"year\", date(\"Y\", time() - 86400));\n$smonth = get_int404(\"smonth\", 5);\n$sday = get_int404(\"sday\", 1);\n$emonth = get_int404(\"emonth\", date(\"m\", time() - 86400));\n$eday = get_int404(\"eday\", date(\"d\", time() - 86400));\n$network = isset($_REQUEST[\"network\"]) ? xssafe($_REQUEST[\"network\"]) : \"IACLIMATE\";\nif (strlen($network) > 9){\n    xssafe(\"<tag>\");\n}\n\n$nt = new NetworkTable($network);\n$cities = $nt->table;\n\n$sts = new DateTime(\"{$year}-{$smonth}-{$sday}\");\n$ets = new DateTime(\"{$year}-{$emonth}-{$eday}\");\n\n$imgurl = sprintf(\n    \"gsplot.php?network=%s&smonth=%s&sday=%s&var=%s&emonth=%s&eday=%s&year=%s\",\n    $network,\n    $smonth,\n    $sday,\n    $var,\n    $emonth,\n    $eday,\n    $year\n);\n\n$t->title = \"NWS COOP Growing Season Data\";\n\n$tr = sprintf(\n    \"# IEM Estimated COOP Accumulations (start: %s to inclusive date: %s)\\n\",\n    $sts->format(\"Y-m-d\"),\n    $ets->format(\"Y-m-d\")\n);\n$tr .= \"# Download From: {$EXTERNAL_BASEURL}/GIS/apps/coop/gsplot.phtml\n# Download Date: \" . date(\"d M Y\") . \"\n# CLIM_ values are based on climatology 1951-today\n# Data Contact: Daryl Herzmann akrherz@iastate.edu 515.294.5978\n#-----------------------snip------------------\\n\";\n\n$state = substr($network, 0, 2);\n\n/* Query the obs */\n$stname = iem_pg_prepare($coopdb, <<<EOM\nWITH data as (\n  SELECT station,\n  sum(precip) as s_rainfall,\n  sum(gddxx(32, 86, high, low)) as s_gdd32,\n  sum(gddxx(41, 86, high, low)) as s_gdd41,\n  sum(gddxx(46, 86, high, low)) as s_gdd46,\n  sum(gddxx(48, 86, high, low)) as s_gdd48,\n  sum(gddxx(50, 86, high, low)) as s_gdd50,\n  sum(gddxx(51, 86, high, low)) as s_gdd51,\n  sum(gddxx(52, 86, high, low)) as s_gdd52,\n  sum(cdd(high, low, 65)) as s_cdd65,\n  sum(hdd(high, low, 65)) as s_hdd65,\n  sum(sdd86(high,low)) as s_sdd86,\n  min(low) as s_mintemp,\n  max(high) as s_maxtemp from alldata_{$state}\n  WHERE year = $3 and sday >= $1 and sday <= $2 GROUP by station, year\n), climo as (\n  SELECT station,\n  sum(precip) as c_rainfall,\n  sum(gdd32) as c_gdd32,\n  sum(gdd41) as c_gdd41,\n  sum(gdd46) as c_gdd46,\n  sum(gdd48) as c_gdd48,\n  sum(gdd50) as c_gdd50,\n  sum(gdd51) as c_gdd51,\n  sum(gdd52) as c_gdd52,\n  sum(sdd86) as c_sdd86,\n  sum(cdd65) as c_cdd65,\n  sum(hdd65) as c_hdd65\n  from climate WHERE\n  station in (select station from data) and\n  valid >= $4 and valid <= $5 GROUP by station\n)\nSELECT d.*, c_rainfall, c_gdd32, c_gdd41, c_gdd46, c_gdd48, c_gdd50,\nc_gdd51, c_gdd52, c_sdd86, c_cdd65, c_hdd65\nfrom data d JOIN climo c on (d.station = c.station)\nEOM\n);\n\n$rs = pg_execute($coopdb, $stname, array(\n    $sts->format(\"md\"),\n    $ets->format(\"md\"),\n    $year,\n    sprintf(\"2000-%s\", $sts->format(\"m-d\")),\n    sprintf(\"2000-%s\", $ets->format(\"m-d\")),\n));\n\n\n$tr .= sprintf(\n    \"%6s,%21s,%10s,%10s,%10s,%10s,%10s,%10s,\" .\n        \"%10s,%10s,%10s,%10s,%10s,%10s,%10s,%10s,%10s\\n\",\n    'ID',\n    'StationName',\n    'Latitude',\n    'Longitude',\n    'GDD50',\n    'GDD48',\n    'SDD86',\n    'PRECIP',\n    'CLIM_GDD50',\n    'CLIM_GDD48',\n    'CLIM_PRECIP',\n    'MAX_TEMP',\n    'MIN_TEMP',\n    'CDD65',\n    'HDD65',\n    'CLIM_CDD65',\n    'CLIM_HDD65'\n);\nwhile ($row = pg_fetch_assoc($rs)) {\n\n    $ukey = $row[\"station\"];\n    if (!isset($cities[$ukey])) continue;\n    $tr .= sprintf(\n        \"%6s,%-21s,%10.4f,%10.4f,%10.0f,%10.0f,%10.0f,\" .\n            \"%10.2f,%10.0f,%10.0f,%10.2f,%10.0f,%10.0f,%10.2f,%10.2f\" .\n            \",%10.2f,%10.2f\\n\",\n        $ukey,\n        $cities[$ukey]['name'],\n        $cities[$ukey]['lat'],\n        $cities[$ukey]['lon'],\n        $row[\"s_gdd50\"],\n        $row[\"s_gdd48\"],\n        $row[\"s_sdd86\"],\n        $row[\"s_rainfall\"],\n        $row[\"c_gdd50\"],\n        $row[\"c_gdd48\"],\n        $row[\"c_rainfall\"],\n        $row[\"s_maxtemp\"],\n        $row[\"s_mintemp\"],\n        $row[\"s_cdd65\"],\n        $row[\"s_hdd65\"],\n        $row[\"c_cdd65\"],\n        $row[\"s_hdd65\"]\n    );\n}\n\n$netselect = selectNetworkType(\"CLIMATE\", $network);\n\n$ar = array(\n    \"gdd32\" => \"Growing Degree Days (base=32)\",\n    \"gdd41\" => \"Growing Degree Days (base=41)\",\n    \"gdd46\" => \"Growing Degree Days (base=46)\",\n    \"gdd48\" => \"Growing Degree Days (base=48)\",\n    \"gdd50\" => \"Growing Degree Days (base=50)\",\n    \"gdd51\" => \"Growing Degree Days (base=51)\",\n    \"gdd52\" => \"Growing Degree Days (base=52)\",\n    \"cdd65\" => \"Cooling Degree Days (base=65)\",\n    \"hdd65\" => \"Heating Degree Days (base=65)\",\n    \"prec\" => \"Precipitation\",\n    \"sdd86\" => \"Stress Degree Days (base=86)\",\n    \"mintemp\" => \"Minimum Temperature\",\n    \"maxtemp\" => \"Maximum Temperature\",\n);\n$vselect = make_select(\"var\", $var, $ar);\n$yselect = yearselect(1893, $year);\n$m1select = monthSelect($smonth, 'smonth');\n$d1select = daySelect($sday, 'sday');\n$m2select = monthSelect($emonth, 'emonth');\n$d2select = daySelect($eday, 'eday');\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/COOP/\">NWS Cooperative Network</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Custom Date Duration Charts</li>\n  </ol>\n</nav>\n\n<p>With this application, you can total a parameter of your\nchoice over a duration of your choice.  The resulting data is presented \ngraphically as well as textually for use in a GIS. \n<strong>The end date is inclusive to the data presented.</strong> \nThe raw daily data used for this application can be downloaded\nfrom <a href=\"/request/coop/fe.phtml\">here</a>.\n\n<form method=\"GET\" action=\"gsplot.phtml\" name=\"theform\">\n<table class=\"table table-sm\">\n<thead>\n <tr>\n   <th>Available State:</th>\n   <th>Select Parameter:</th>\n   <th>Year</th>\n   <th>Month</th>\n   <th>Day</th>\n   <th></th>\n  </tr>\n  </thead>\n  <tbody>\n <tr>\n <td rowspan=\"2\">\n {$netselect}\n </td>\n  <td rowspan=\"2\">{$vselect}</td>\n  <td>{$yselect}</td>\n  <td>{$m1select}</td>\n  <td>{$d1select}</td>\n  <td rowspan=2><input type=\"submit\" value=\"Make Plot\" class=\"btn btn-primary\"></td>\n  </tr>\n <tr>\n  <td>to inclusive date:</td>\n  <td>{$m2select}</td>\n  <td>{$d2select}</td>\n  </tr>\n  </tbody>\n</table>\n</form>\n\n<p>*Note: Only a sub-sample of stations are plotted on the map due to \nspace restrictions.  The small four digit label is the station identifier used\nin the data listing below (without the 2 character state identifier included).\n<br />\n  <img src=\"{$imgurl}\" class=\"img img-fluid\" />\n  </p>\n\n<h3> Data Listing</h3>\n<pre>{$tr}</pre>\n\n<p>You should be able to 'copy &amp; paste' this raw data listing into a simple\ntext editor and save the data file on your machine.  Most GIS systems can \nthen import this dataset as a layer.  You may have to omit the commented lines\n(#) if your GIS has trouble importing the data.\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/GIS/apps/coop/index.php",
    "content": "<?php\nrequire_once \"../../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 52);\nrequire_once \"../../../../include/myview.php\";\nrequire_once \"../../../../include/database.inc.php\";\nrequire_once \"../../../../include/iemmap.php\";\nrequire_once \"../../../../include/network.php\";\nrequire_once \"../../../../include/mlib.php\";\nrequire_once \"../../../../include/forms.php\";\nrequire_once \"../../../../include/rview_lib.php\";\nrequire_once \"../../../../include/vendor/mapscript.php\";\n\n$t = new MyView();\n$t->title = \"NWS COOP Plotting\";\n\n$coopdb = iemdb(\"coop\");\n$nt = new NetworkTable(\"IACLIMATE\");\n$cities = $nt->table;\n\n$plot = isset($_GET[\"plot\"]) ? xssafe($_GET[\"plot\"]) : \"high\";\n$area = isset($_GET[\"area\"]) ? xssafe($_GET[\"area\"]) : \"all\";\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n\n$height = 350;\n$width = 350;\n\n$map = new mapObj(\"../../../../data/gis/base4326.map\");\n$map->setProjection(\"init=epsg:26915\");\n\n$lx =  200000;\n$ux =  710000;\n$ly = 4400000;\n$uy = 4900000;\n$dx = $ux - $lx;\n$dy = $uy - $ly;\n\n$ex = array(\n    \"all\" => array($lx,          $ly,           $ux,           $uy),\n    \"ne\" => array($lx + ($dx / 2), $ly + ($dy / 2), $ux,           $uy),\n    \"se\" => array($lx + ($dx / 2), $ly,           $ux, $uy - ($dy / 2)),\n    \"sw\" => array($lx,           $ly,           $ux - ($dx / 2), $uy - ($dy / 2)),\n    \"nw\" => array($lx,           $ly + ($dy / 2), $ux - ($dx / 2), $uy)\n);\nif (!array_key_exists($area, $ex)) {\n    xssafe(\"<tag>\");\n}\n\n$map->setextent($ex[$area][0], $ex[$area][1], $ex[$area][2], $ex[$area][3]);\n\n$namer = $map->getLayerByName(\"namerica\");\n$namer->__set(\"status\", MS_ON);\n\n$counties = $map->getLayerByName(\"uscounties\");\n$counties->__set(\"status\", MS_ON);\n\n$stlayer = $map->getLayerByName(\"states\");\n$stlayer->__set(\"status\", 1);\n\n$dot = $map->getLayerByName(\"pointonly\");\n$dot->__set(\"status\", MS_ON);\n\n$datal = new layerObj($map);\n$datal->__set(\"name\", \"q\");\n$datal->__set(\"status\", MS_ON);\n$datal->__set(\"type\", MS_LAYER_POINT);\n$datal->setProjection(\"init=epsg:4326\");\n\n$datalc0 = new classObj($datal);\n$datalc0->addLabel(new labelObj());\n$datalc0->getLabel(0)->color->setrgb(255, 255, 0);\n$datalc0->getLabel(0)->__set(\"font\", \"liberation\");\n$datalc0->getLabel(0)->__set(\"size\", 12);\n$datalc0->getLabel(0)->__set(\"force\", MS_TRUE);\n$datalc0->getLabel(0)->__set(\"partials\", MS_FALSE);\n$datalc0->getLabel(0)->__set(\"position\", MS_UR);\n$datalc0->getLabel(0)->__set(\"angle\", 0);\n\n$img = $map->prepareImage();\n\n$tpos = array(\n    \"all\" => array(-95.4, 40.2),\n    \"ne\" => array(-92.9, 43.7),\n    \"se\" => array(-92.9, 40.3),\n    \"sw\" => array(-96.4, 40.4),\n    \"nw\" => array(-96.7, 43.65)\n);\n\n$ts = mktime(0, 0, 0, $month, $day, 2000);\n$plotDate = date('M d', $ts);\n\n$var = array(\n    \"max_precip\" => \"Record Daily Precip [in]\",\n    \"precip\" => \"Average Precipitation [in]\",\n    \"low\" => \"Average Low Temp [F]\",\n    \"max_low\" => \"Record Max Low Temp [F]\",\n    \"max_high\" => \"Record Max High Temp [F]\",\n    \"min_low\" => \"Record Min Low Temp [F]\",\n    \"min_high\" => \"Record Min High Temp [F]\",\n    \"high\" => \"Average High Temp [F]\"\n);\nif (!array_key_exists($plot, $var)) {\n    xssafe(\"<tag>\");\n}\n\n$dbdate = new DateTime(\"2000-{$month}-{$day}\");\n\nif (strcmp($area, 'all') != 0) {\n\n    $dbarray = array(\n        \"high\" => \"round(high::numeric, 0)::int\",\n        \"low\" => \"round(low::numeric, 0)::int\",\n        \"max_low\" => \"round(max_low::numeric, 0)::int ||'W'|| max_low_yr \",\n        \"max_high\" => \"round(max_high::numeric, 0)::int ||'W'|| max_high_yr \",\n        \"min_high\" => \"round(min_high::numeric, 0)::int ||'W'|| min_high_yr \",\n        \"min_low\" => \"round(min_low::numeric, 0)::int ||'W'|| min_low_yr \",\n        \"max_precip\" => \"to_char(max_precip, '99.99') ||'W'|| max_precip_yr \",\n        \"precip\" => \"round(precip::numeric, 2)\"\n    );\n} else {\n    $dbarray = array(\n        \"high\" => \"round(high::numeric, 0)::int\",\n        \"low\" => \"round(low::numeric, 0)::int\",\n        \"max_low\" => \"round(max_low::numeric, 0)::int\",\n        \"max_high\" => \"round(max_high::numeric, 0)::int\",\n        \"min_high\" => \"round(min_high::numeric, 0)::int\",\n        \"min_low\" => \"round(min_low::numeric, 0)::int\",\n        \"max_precip\" => \"to_char(max_precip, '99.99') \",\n        \"precip\" => \"round(precip::numeric, 2)\"\n    );\n}\n\n$stname = iem_pg_prepare($coopdb, \"SELECT station, \" . $dbarray[$plot] . \" as d\n    from climate WHERE valid = $1\n    and substr(station,1,2) = 'IA' and substr(station, 3, 1) not in ('T', 'C')\n    and substr(station, 3, 4) != '0000' \");\n\n$rs = pg_execute($coopdb, $stname, array($dbdate->format('Y-m-d')));\nif ($rs !== FALSE) {\n    while ($row = pg_fetch_assoc($rs)) {\n        $station = $row[\"station\"];\n        if (!array_key_exists($station, $cities)) continue;\n        $pt = new pointObj();\n        $pt->setXY($cities[$station]['lon'], $cities[$station]['lat'], 0);\n        $pt->draw($map, $datal, $img, 0, $row[\"d\"]);\n    }\n}\n\n$namer->draw($map, $img);\n$counties->draw($map, $img);\n$stlayer->draw($map, $img);\n$datal->draw($map, $img);\niemmap_title($map, $img, $plotDate . \" \" . $var[$plot]);\n\n$map->drawLabelCache($img);\n\n$url = saveWebImage($img);\n\n$ar = array(\n    \"all\" => \"Iowa\",\n    \"ne\" => \"NE Iowa\",\n    \"se\" => \"SE Iowa\",\n    \"sw\" => \"SW Iowa\",\n    \"nw\" => \"NW Iowa\"\n);\n$aselect = make_select(\"area\", $area, $ar);\n\n$ar = array(\n    \"high\" => \"Average High Temperature\",\n    \"low\"         => \"Average Low Temperature\",\n    \"precip\"      => \"Average Precip\",\n    \"max_high\"      => \"Record High Temperature\",\n    \"min_low\"      => \"Record Low Temperature\",\n    \"max_precip\" => \"Record Precip\",\n    \"min_high\"      => \"Record Minimum High Temp\",\n    \"max_low\"      => \"Record Maximum Low Temp\"\n);\n$pselect = make_select(\"plot\", $plot, $ar);\n\n$mselect = monthSelect($month, \"month\");\n$dselect = daySelect($day);\n\n$t->content = <<<EOM\n<h3>COOP Climate Data</h3>\n\n<div class=\"alert alert-info\">\n  <h5 class=\"alert-heading\">Try Updated App!</h5>\n  The <a href=\"/COOP/extremes.php\">COOP Extremes App</a> has greatly improved\n  and hopefully will someday replace this app.\n  </div>\n\n Using the COOP data archive, daily averages and extremes\n  were calculated.  These numbers are <b>not</b> official, but we believe them\n  to be accurate.  Please make your form selections on the left hand side and\n  then click the 'Generate Plot' button.\n\n  <div class=\"row\">\n  <div class=\"col-md-7\">\n\n<img src=\"{$url}\" class=\"img img-fluid\" />\n   <br><i>You can right-click on the image to save it.</i>\n  <br><li>Only one year with the record value is shown, there may have been \n    more.</li>\n\n   </div><div class=\"col-md-5\">\n    \n    <form name=\"f\" method=\"GET\" action=\"index.php\">\n\n<table width=\"100%\">\n<tr>\n  <td colspan=2><b>Display Area:</b>\n  </td></tr>\n\n<tr><td colspan=2>\n  {$aselect}\n   <br><i>If you select a sub-region, the year of a record event will appear \n   as well.</i><br><br>\n\n</td></tr>\n\n<tr>\n  <td colspan=\"2\"><b>Select Parameter:</b>\n  </td></tr>\n\n<tr><td colspan=2>\n  {$pselect}<br><br>\n\n</td></tr>\n\n<tr>\n  <td colspan=\"2\"><b>Select Date:</b>\n  </td></tr>\n\n<tr>\n  <td>\n\n <b>Month:</b>\n  <br>{$mselect}\n\n</td><td>\n\n <b>Day:</b>\n  <br>{$dselect}\n\n<tr>\n  <td colspan=2 align=\"center\">\n     <input type=\"submit\" value=\"Generate Plot\" class=\"btn btn-primary\">\n    </form><br><br>\n  </td></tr>\n\n<tr>\n  <td colspan=\"2\"><b>Download Options:</b>\n  </td></tr>\n\n<tr>\n  <td colspan=\"2\">\n    <a href=\"request.php?month={$month}&day={$day}\">\n    <img src=\"/images/gisready.png\" border=\"0\"> shp, dbf, shx</a><br><br>\n  </td></tr>\n\n\n<tr>\n  <td colspan=\"2\"><b>Map Information:</b>\n  </td></tr>\n\n<tr>\n  <td colspan=\"2\">\n  The black and red dots signify the climate record for the station.  Sites in \n  black date back till 1893 and sites in red to 1951.\n\n</td></tr>\n\n</table>\n\n</div></div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/GIS/apps/coop/plot.phtml",
    "content": "<?php\n\nrequire_once \"../../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 49);\nrequire_once \"../../../../include/myview.php\";\nrequire_once \"../../../../include/database.inc.php\";\nrequire_once \"../../../../include/iemmap.php\";\nrequire_once \"../../../../include/forms.php\";\nrequire_once \"../../../../include/network.php\";\nrequire_once \"../../../../include/vendor/mapscript.php\";\n\n$var = isset($_GET[\"var\"]) ? xssafe($_GET[\"var\"]) : \"high\";\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$source = isset($_GET[\"source\"]) ? xssafe($_GET[\"source\"]) : \"prelim\";\n$size = isset($_GET[\"size\"]) ? xssafe($_GET[\"size\"]) : \"1024x768\";\n$showlabels = (isset($_GET[\"labels\"]) && $_GET[\"labels\"] == \"on\");\n$timing = isset($_GET[\"timing\"]) ? xssafe($_GET[\"timing\"]) : \"1\";\n$state = isset($_GET[\"state\"]) ? xssafe(substr($_GET[\"state\"], 0, 2)) : \"IA\";\n$tokens = explode(\"x\", $size);\n$width = $tokens[0];\n$height = $tokens[1];\n\n$ts = new DateTime(\"{$year}-{$month}-{$day}\");\n$ndate = $ts->format(\"Y-m-d\");\n\n$t = new MyView();\n$t->title = \"NWS COOP Daily Plotter\";\n\n$ar = array(\n    \"0\" => \"All Available\",\n    \"1\" => \"Morning Obs (5-11 AM)\",\n);\n$timingsel = make_select(\"timing\", $timing, $ar);\n\nif ($source == \"qc\") $nt = new NetworkTable(\"{$state}CLIMATE\");\nelse $nt = new NetworkTable(\"{$state}_COOP\");\n$cities = $nt->table;\n\nfunction plotNoData($map, $img)\n{\n    $layer = $map->getLayerByName(\"credits\");\n\n    $point = new pointObj();\n    $point->setXY(100, 200);\n    $point->draw(\n        $map,\n        $layer,\n        $img,\n        1,\n        \"  No data found for this date! \"\n    );\n}\n\n$vardef = array(\n    \"high\" => \"High Temperature\",\n    \"low\" => \"Low Temperature\",\n    \"tob\" => \"Temperature At Observation\",\n    \"precip\" => \"Precipitation\",\n    \"snow\" => \"Snow [1]\",\n    \"snowd\" => \"Snow Depth [2]\",\n    \"ratio\" => \"Snow to Liquid Ratio\",\n);\nif (!array_key_exists($var, $vardef)) {\n    $var = \"precip\";\n}\n$pcols = Array(\"precip\", \"snow\", \"snowd\", \"ratio\");\n$timecol = in_array($var, $pcols) ? \"precip_hour\" : \"temp_hour\";\n\n$rnd = array(\n    \"et\" => 2,\n    \"prec\" => 2,\n    \"snow\" => 0,\n    \"ratio\" => 1\n);\n\n$myStations = $cities;\n\n$map = new mapObj(\"../../../../data/gis/base4326.map\");\n$map->imagecolor->setRGB(255, 255, 255);\n$map->selectOutputFormat(\"PNG24\");\n$map->setSize($width, $height);\n$dbconn = iemdb(\"postgis\");\n$stname = iem_pg_prepare(\n    $dbconn,\n    \"SELECT ST_xmin(the_geom), ST_xmax(the_geom), ST_ymin(the_geom), ST_ymax(the_geom) \".\n    \"from states where state_abbr = $1\");\n$rs = pg_execute($dbconn, $stname, Array($state));\n$row = pg_fetch_assoc($rs, 0);\n$buf = 0.5;\n$map->setextent(\n    $row[\"st_xmin\"] - $buf,\n    $row[\"st_ymin\"] - $buf,\n    $row[\"st_xmax\"] + $buf,\n    $row[\"st_ymax\"] + $buf\n);\n\n$states = $map->getLayerByName(\"states\");\n$states->status = MS_ON;\n$states_c0 = $states->getClass(0);\n$states_c0_s0 = $states_c0->getStyle(0);\n$states_c0_s0->width = 1.5;\n$states_c0_s0->color->setRGB(210, 170, 130);\n\n$cwas = $map->getLayerByName(\"cwas\");\n$cwas->status = MS_ON;\n$cwas_c0 = $cwas->getClass(0);\n$cwas_c0_s0 = $cwas_c0->getStyle(0);\n$cwas_c0_s0->outlinecolor->setRGB(255, 0, 0);\n\n$counties = $map->getLayerByName(\"uscounties\");\n$counties->__set(\"status\", MS_ON);\n$counties_c0 = $counties->getClass(0);\n$counties_c0_s0 = $counties_c0->getStyle(0);\n$counties_c0_s0->color->setRGB(180, 180, 180);\n\n$snet = $map->getLayerByName(\"datapoint\");\n$snet->__set(\"status\", MS_ON);\n\n$ponly = $map->getLayerByName(\"pointonly\");\n$ponly->__set(\"status\", MS_ON);\n\n$cityname = $map->getLayerByName(\"cityname\");\n$cityname->__set(\"status\", MS_ON);\n\n$img = $map->prepareImage();\n$counties->draw($map, $img);\n$states->draw($map, $img);\n$cwas->draw($map, $img);\n\n$dbvar = ($var == \"ratio\") ? \"snow\" : $var;\n$timingsql = \"\";\nif ($source == \"qc\") {\n    $c = iemdb(\"coop\");\n    if ($timing == \"1\") {\n        $timingsql = \" and temp_hour between 4 and 12 \";\n    }\n    $dbargs = Array($ts->format(\"Y-m-d\"));\n    $sql = <<<EOM\n    SELECT *, $timecol as hour from alldata_{$state}\n    WHERE day = $1 and {$dbvar} is not null\n    and substr(station, 3, 1) not in ('C', 'D', 'T')\n    and substr(station, 3, 4) != '0000' $timingsql ORDER by $dbvar DESC\nEOM;\n    $cutstring1 = 2;\n    $cutstring2 = 4;\n} else {\n    $c = iemdb(\"iem\");\n    $cutstring1 = 0;\n    $cutstring2 = 5;\n    if ($timing == \"1\") {\n        $timingsql = \" and extract(hour from coop_valid) between 4 and 12 \";\n    }\n    $dbargs = Array($ts->format(\"Y-m-d\"), \"{$state}_COOP\");\n    $sql = <<<EOM\n    SELECT id as station, day, snowd, max_tmpf as high,\n    extract(hour from coop_valid) as hour,\n    min_tmpf as low, pday as precip, snow, snowd, coop_tmpf as tob\n    from summary_{$ts->format('Y')} s JOIN stations t on (t.iemid = s.iemid)\n    WHERE day = $1 and network = $2 $timingsql ORDER by $dbvar DESC\nEOM;\n}\n\n$stname = iem_pg_prepare($c, $sql);\n$rs =  pg_execute($c, $stname, $dbargs);\n$vals = array();\nwhile ($row = pg_fetch_assoc($rs)) {\n    $stid = $row['station'];\n    if ($var == \"ratio\") {\n        if ($row[\"snow\"] > 0 && $row[\"precip\"] > 0) {\n            $vals[$stid] = Array(\n                \"val\" => round($row[\"snow\"] / $row[\"precip\"], 1),\n                \"hour\" => $row[\"hour\"],\n            );\n        } else {\n            $vals[$stid] = Array(\"val\" => 0, \"hour\" => $row[\"hour\"]);\n        }\n    } else {\n        if (is_null($row[$var])) continue;\n        $vals[$stid] = Array(\n            \"val\" => (float)$row[$var],\n            \"hour\" => $row[\"hour\"],\n        );\n    }\n}\n/* ------------------------------------------------------- */\n\n\n$tr = \"# \" . $ndate . \" \" . $vardef[$var] . \"\n# Download From: {$EXTERNAL_BASEURL}/GIS/apps/coop/plot.phtml\n# Download Date: \" . date(\"d M Y\") . \"\n# Data Contact: Daryl Herzmann akrherz@iastate.edu 515.294.5978\n#-----------------------snip------------------\\n\";\n$tr .= sprintf(\n    \"%-6s, %-20s, %-20s, %-10s, %10s, %10s, %4s, %10s\\n\",\n    'ID',\n    'StationName',\n    'County',\n    'Date',\n    'Latitude',\n    'Longitude',\n    'Hour',\n    $var\n);\nforeach ($vals as $key => $value) {\n    $ukey = strtoupper($key);\n    if (!isset($cities[$ukey])) continue;\n\n    $tr .= sprintf(\n        \"%-6s, %-20s, %-20s, %10s, %10.4f, %10.4f, %4s, %10s\\n\",\n        $key,\n        $cities[$ukey]['name'],\n        $cities[$ukey]['county'],\n        $ndate,\n        $cities[$ukey]['lat'],\n        $cities[$ukey]['lon'],\n        $value[\"hour\"],\n        $value[\"val\"],\n    );\n\n    if ($showlabels) {\n        $pt = new pointObj();\n        $pt->setXY($cities[$ukey]['lon'], $cities[$ukey]['lat'], 0);\n        $pt->draw($map, $ponly, $img, 0, \"\");\n\n        $pt = new pointObj();\n        $pt->setXY($cities[$ukey]['lon'], $cities[$ukey]['lat'], 0);\n        $pt->draw($map, $cityname, $img, 0, substr($key, $cutstring1, $cutstring2));\n    }\n\n    // Value UL\n    $pt = new pointObj();\n    $pt->setXY($cities[$ukey]['lon'], $cities[$ukey]['lat'], 0);\n    if ($value[\"val\"] == 0.0001) $value[\"val\"] = \"T\";\n    $pt->draw($map, $snet, $img, 0, $value[\"val\"]);\n}\n\nif (pg_num_rows($rs) == 0)\n    plotNoData($map, $img);\n\niemmap_title($map, $img, $ndate . \" \" . $vardef[$var]);\n$map->drawLabelCache($img);\n\n$url = saveWebImage($img);\n\n$ar = array(\n    \"qc\" => \"QC'd (1893-)\",\n    \"prelim\" => \"Preliminary (2004+)\"\n);\n$sourceselect = make_select(\"source\", $source, $ar);\n\n$varselect = make_select(\"var\", $var, $vardef);\n\n$yselect = yearselect(1893, $year);\n$mselect = monthSelect($month, 'month');\n$dselect = daySelect($day, 'day');\n\n$ar = array(\n    \"640x480\" => \"640x480\",\n    \"1024x768\" => \"1024x768\",\n    \"1280x1024\" => \"1280x1024\"\n);\n$sizeselect = make_select(\"size\", $size, $ar);\n\n$showlabelson = ($showlabels) ? \" CHECKED=\\\"CHECKED\\\" \" : \"\";\n\n$sselect = stateSelect($state);\n$yest = clone $ts;\n$yest->sub(new DateInterval(\"P1D\"));\n$minusone = sprintf(\n    \"plot.phtml?source=%s&amp;var=%s&amp;year=%s&amp;\" .\n        \"month=%s&amp;day=%s&amp;size=%s&amp;labels=%s&amp;timing=%s&amp;state=%s\",\n    $source,\n    $var,\n    $yest->format(\"Y\"),\n    $yest->format(\"m\"),\n    $yest->format(\"d\"),\n    $size,\n    $showlabels ? \"on\" : \"off\",\n    $timing,\n    $state,\n);\n$tomorrow = clone $ts;\n$tomorrow->add(new DateInterval(\"P1D\"));\n$plusone = sprintf(\n    \"plot.phtml?source=%s&amp;var=%s&amp;year=%s&amp;\" .\n        \"month=%s&amp;day=%s&amp;size=%s&amp;labels=%s&amp;timing=%s&amp;state=%s\",\n    $source,\n    $var,\n    $tomorrow->format(\"Y\"),\n    $tomorrow->format(\"m\"),\n    $tomorrow->format(\"d\"),\n    $size,\n    $showlabels ? \"on\" : \"off\",\n    $timing,\n    $state,\n);\n\n$t->content = <<<EOM\n\n<div class=\"alert alert-info\" role=\"alert\">\n  A new <a href=\"/COOP/map/\">interactive map</a> application is available and\n  will replace this application someday, unless feedback says otherwise!\n</div>\n\n<p>With this application, you can plot COOP observations for a date of your\nchoice.\n\n<form method=\"GET\" name=\"myform\">\n<table class=\"table table-bordered\">\n <tr>\n    <th>Select State:</th>\n   <th>Select Datasource:</th>\n   <th>Select Parameter:</th>\n   <th>Timing</th>\n   <th>Year</th>\n   <th>Month</th>\n   <th>Day</th>\n   <th>Image Size</th>\n   <td></td>\n  </tr>\n <tr>\n  <td>{$sselect}</td>\n  <td>{$sourceselect}</td>\n  <td>{$varselect}\n  <br /><i>Note:</i> Temperature at Observation is only available for the\n  \"Preliminary\" data source.\n  </td>\n  <td>{$timingsel}</td>\n  <td>{$yselect}</td>\n  <td>{$mselect}</td>\n  <td>{$dselect}</td>\n  <td>{$sizeselect}</td>\n  <td><input type=\"submit\" value=\"Make Plot\">\n    <a href=\"{$minusone}\" class=\"btn btn-secondary\"><i class=\"bi bi-dash\" aria-hidden=\"true\"></i> 1 Day</a>\n    <a href=\"{$plusone}\" class=\"btn btn-secondary\"><i class=\"bi bi-plus\" aria-hidden=\"true\"></i> 1 Day</a>\n  </td>\n  </tr>\n</table>\n\n<br /><img src=\"{$url}\">\n\n<p><input type=\"checkbox\" name=\"labels\"{$showlabelson}>Show point labels\n\n</form>\n<ul>\n<li>Snowfall data is not complete.  Please be careful using the data.</li>\n<li>Snowfall depth data only goes back to 1991 for Quality Controled source.</li>\n<li>The preliminary data is for the date the observation was reported and not\nnecessarily for the local date.  The reports are around 7 AM, so the high\ntemperature (for example) was most likely for the previous date.</li>\n</ul>\n\n<p>\n<img src=\"/images/gisready.png\"><h3> Data Listing</h3>\n<pre>{$tr}</pre>\n\n<p>You should be able to 'copy & paste' this raw data listing into a simple\ntext editor and save the data file on your machine.  Most GIS systems can\nthen import this dataset as a layer.  You may have to omit the commented lines\n(#) if your GIS has trouble importing the data.\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/GIS/apps/coop/request.php",
    "content": "<?php\nrequire_once \"../../../../config/settings.inc.php\";\n\n// Prevent client abort from leaving temp files around\nignore_user_abort(true);\n\nrequire_once \"../../../../include/database.inc.php\";\nrequire_once \"../../../../include/network.php\";\nrequire_once \"../../../../include/forms.php\";\nrequire_once \"../../../../include/vendor/mapscript.php\";\n\n$month = get_int404(\"month\", 1);\n$day = get_int404(\"day\", 1);\n\n$ts = new DateTime(\"2000-{$month}-{$day}\");\n$sqlDate = $ts->format('Y-m-d');\n$filePre = $ts->format('md') . \"_coop\";\n\n$pgcon = iemdb(\"coop\");\n$sql = <<<EOM\n    select c.*, ST_X(s.geom) as lon, ST_Y(s.geom) as lat, s.name,\n    to_char(c.valid, 'YYYYMMDD') as cvalid from climate c JOIN stations s\n    ON (c.station = s.id) WHERE c.valid = $1 and s.network ~* 'CLIMATE'\nEOM;\n$stname = iem_pg_prepare($pgcon, $sql);\n$rs = pg_execute($pgcon, $stname, Array($sqlDate));\n\nif (! is_dir(\"/tmp/cli2shp\")){\n    mkdir(\"/tmp/cli2shp\", 0755);\n}\nchdir(\"/tmp/cli2shp\");\n\n$shpFname =  $filePre;\n$shpFile = new shapeFileObj($shpFname, MS_SHAPEFILE_POINT);\n$dbfFile = dbase_create($shpFname . \".dbf\", array(\n    array(\"SITE\", \"C\", 6),\n    array(\"CRECORD\", \"N\", 5, 0),\n    array(\"DATE\", \"D\"),\n    array(\"AVG_HIGH\", \"N\", 3, 0),\n    array(\"AVG_LOW\", \"N\", 3, 0),\n    array(\"AVG_PREC\", \"N\", 8, 2),\n    array(\"MAX_PREC\", \"N\", 8, 2),\n    array(\"MAX_HIGH\", \"N\", 3, 0),\n    array(\"MAX_LOW\", \"N\", 3, 0),\n    array(\"MIN_HIGH\", \"N\", 3, 0),\n    array(\"MIN_LOW\", \"N\", 3, 0)\n));\n\n\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n    // Create the shape\n    $pt = new pointObj();\n    $pt->setXY($row[\"lon\"], $row[\"lat\"], 0);\n    $shpFile->addPoint($pt);\n\n    dbase_add_record($dbfFile, array(\n        $row[\"station\"],\n        $row[\"years\"],\n        $row[\"cvalid\"],\n        $row[\"high\"],\n        $row[\"low\"],\n        $row[\"precip\"],\n        $row[\"max_precip\"],\n        $row[\"max_high\"],\n        $row[\"max_low\"],\n        $row[\"min_high\"],\n        $row[\"min_low\"]\n    ));\n} // End of for\nunset($shpFile);\ndbase_close($dbfFile);\n\n// Generate zip file\ncopy(\"/opt/iem/data/gis/meta/4326.prj\", $filePre . \".prj\");\npopen(\"zip {$filePre}.zip {$filePre}.shp {$filePre}.shx {$filePre}.dbf {$filePre}.prj\", 'r');\n\nheader(\"Content-type: application/octet-stream\");\nheader(\"Content-Disposition: attachment; filename={$filePre}.zip\");\nreadfile(\"{$filePre}.zip\");\nunlink(\"{$filePre}.zip\");\nunlink(\"{$filePre}.shp\");\nunlink(\"{$filePre}.prj\");\nunlink(\"{$filePre}.dbf\");\nunlink(\"{$filePre}.shx\");\n"
  },
  {
    "path": "htdocs/GIS/apps/iem/freeze.js",
    "content": "// filepath: /home/akrherz/projects/iem/htdocs/GIS/apps/iem/freeze.js\ndocument.addEventListener('DOMContentLoaded', () => {\n    // Initialize button states and event listeners\n    initializeMapControls();\n    initializePresetViews();\n\n    function resetButtons() {\n        // Reset all button images to their off state\n        const panButton = document.querySelector('img[name=\"panButton\"]');\n        const zoominButton = document.querySelector('img[name=\"zoominButton\"]');\n        const zoomoutButton = document.querySelector('img[name=\"zoomoutButton\"]');\n\n        if (panButton && panButton instanceof HTMLImageElement) {\n            panButton.src = '/images/button_pan_off.png';\n        }\n        if (zoominButton && zoominButton instanceof HTMLImageElement) {\n            zoominButton.src = '/images/button_zoomin_off.png';\n        }\n        if (zoomoutButton && zoomoutButton instanceof HTMLImageElement) {\n            zoomoutButton.src = '/images/button_zoomout_off.png';\n        }\n    }\n\n    function initializeMapControls() {\n        const myForm = document.querySelector('form[name=\"myform\"]');\n        if (!myForm || !(myForm instanceof HTMLFormElement)) {return;}\n\n        // Zoom In button\n        const zoominButton = document.querySelector('img[name=\"zoominButton\"]');\n        if (zoominButton && zoominButton instanceof HTMLImageElement) {\n            zoominButton.addEventListener('click', function () {\n                resetButtons();\n                this.src = '/images/button_zoomin_on.png';\n                const zoomInput = myForm.querySelector('input[name=\"zoom\"]');\n                if (zoomInput && zoomInput instanceof HTMLInputElement) {\n                    zoomInput.value = '-2';\n                }\n            });\n        }\n\n        // Pan button\n        const panButton = document.querySelector('img[name=\"panButton\"]');\n        if (panButton && panButton instanceof HTMLImageElement) {\n            panButton.addEventListener('click', function () {\n                resetButtons();\n                this.src = '/images/button_pan_on.png';\n                const zoomInput = myForm.querySelector('input[name=\"zoom\"]');\n                if (zoomInput && zoomInput instanceof HTMLInputElement) {\n                    zoomInput.value = '1';\n                }\n            });\n        }\n\n        // Zoom Out button\n        const zoomoutButton = document.querySelector('img[name=\"zoomoutButton\"]');\n        if (zoomoutButton && zoomoutButton instanceof HTMLImageElement) {\n            zoomoutButton.addEventListener('click', function () {\n                resetButtons();\n                this.src = '/images/button_zoomout_on.png';\n                const zoomInput = myForm.querySelector('input[name=\"zoom\"]');\n                if (zoomInput && zoomInput instanceof HTMLInputElement) {\n                    zoomInput.value = '2';\n                }\n            });\n        }\n    }\n\n    function initializePresetViews() {\n        // Handle preset view dropdown navigation\n        const baForm = document.querySelector('form[name=\"ba\"]');\n        if (baForm && baForm instanceof HTMLFormElement) {\n            const baSelect = baForm.querySelector('select[name=\"ba\"]');\n            if (baSelect && baSelect instanceof HTMLSelectElement) {\n                baSelect.addEventListener('change', function () {\n                    const selectedValue = this.options[this.selectedIndex].value;\n                    if (selectedValue && selectedValue !== '#') {\n                        window.location.href = selectedValue;\n                    }\n                });\n            }\n        }\n    }\n});\n"
  },
  {
    "path": "htdocs/GIS/apps/iem/freeze.phtml",
    "content": "<?php\nrequire_once \"../../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 46);\nrequire_once \"../../../../include/myview.php\";\nrequire_once \"../../../../include/iemmap.php\";\nrequire_once \"../../../../include/database.inc.php\";\nrequire_once \"../../../../include/forms.php\";\n\n$t = new MyView();\n\n$state = isset($_GET['state']) ? xssafe($_GET['state']) : '';\n$radar = isset($_GET['radar']) ? xssafe($_GET['radar']) : 1;\n$refresh = isset($_GET['refresh']) ? xssafe($_GET['refresh']) : 0;\n$imgsize = isset($_GET[\"imgsize\"]) ? xssafe($_GET[\"imgsize\"]) : \"1280x1024\";\n$tokens = explode(\"x\", $imgsize);\n$imgwidth = intval($tokens[0]);\n$imgheight = intval($tokens[1]);\n$uri = \"freeze.phtml\";\n\nif ($state == \"MN_N\")\n    $sextent = \"-96,44,-91,49\";\nelse if ($state == \"MN_S\")\n    $sextent = \"-96,42,-91,47\";\nelse if ($state == \"ND\")\n    $sextent = \"-105,45,-96,47\";\nelse if ($state == \"SD\")\n    $sextent = \"-105,42,-96,47\";\nelse if ($state == \"KS\")\n    $sextent = \"-102.5,37,-94.5,40\";\nelse if ($state == \"NE\")\n    $sextent = \"-104,40,-95.3,43\";\nelse if ($state == \"WI\")\n    $sextent = \"-95,43,-87,47\";\nelse if ($state == \"IL\")\n    $sextent = \"-93,37,-87,43\";\nelse if ($state == \"MO\")\n    $sextent = \"-95,36,-90,41\";\nelse if ($state == \"IA_NE\")\n    $sextent = \"-93.6,41.9,-90,43.8\";\nelse if ($state == \"IA_SE\")\n    $sextent = \"-93.6,40.3,-90,41.9\";\nelse if ($state == \"IA_C\")\n    $sextent = \"-95.1,41.1,-91.5,42.7\";\nelse if ($state == \"IA_SW\")\n    $sextent = \"-96.6,40.3,-93.6,41.9\";\nelse if ($state == \"IA_NW\")\n    $sextent = \"-96.6,41.9,-93.6,43.8\";\nelse if ($state == \"IA\")\n    $sextent = \"-96,40,-91,45\";\nelse if ($state == \"AK\")\n    $sextent = \"-178.227822,51.590982,-130.007704,71.38269\";\nelse if ($state == \"HI\")\n    $sextent = \"-160.249925,18.913826,-154.809286,22.23603\";\nelse if ($state == \"NW\")\n    $sextent = \"-120.85,37.983,-101.853,51.983\";\n\nif (isset($sextent))\n    $oextents = $sextent;\nelse\n    $oextents = isset($_GET['extents']) ? xssafe($_GET['extents']) : \"-105,36,-86,50\";\n$zoom = isset($_GET['zoom']) ? intval($_GET['zoom']) : 0;\n/**\n * Something simple to enable click interface on a PHP mapcript\n * application\n */\nfunction click2geo($oextents, $click_x, $click_y, $imgsz_x, $imgsz_y, $zoom)\n{\n\n    $arExtents = explode(\",\", $oextents);\n    $ll_x = $arExtents[0];\n    $ll_y = $arExtents[1];\n    $ur_x = $arExtents[2];\n    $ur_y = $arExtents[3];\n    //  print_r($arExtents);\n\n    $dy = ($ur_y - $ll_y) / floatval($imgsz_y);\n    $dx = ($ur_x - $ll_x) / floatval($imgsz_x);\n\n    $centerX = ($click_x * $dx) + $ll_x;\n    $centerY = $ur_y - ($click_y * $dy);\n\n    if (intval($zoom) < 0)\n        $zoom = -1 / intval($zoom);\n\n    $n_ll_x = $centerX - (($dx * $zoom) * ($imgsz_x / 2.00));\n    $n_ur_x = $centerX + (($dx * $zoom) * ($imgsz_x / 2.00));\n    $n_ll_y = $centerY - (($dy * $zoom) * ($imgsz_y / 2.00));\n    $n_ur_y = $centerY + (($dy * $zoom) * ($imgsz_y / 2.00));\n\n    return \"{$n_ll_x},{$n_ll_y},{$n_ur_x},{$n_ur_y}\";\n}\nif (isset($_GET['img_x'])) {\n    $extents = click2geo(\n        $oextents,\n        xssafe($_GET['img_x']),\n        xssafe($_GET['img_y']),\n        $imgwidth,\n        $imgheight,\n        $zoom\n    );\n} else {\n    $extents = $oextents;\n}\n\n$imgurl = \"/GIS/radmap.php?layers[]=airtemps&amp;layers[]=uscounties&amp;\";\n$imgurl .= sprintf(\n    \"width=%s&amp;height=%s&amp;layers[]=surface&amp;bbox=%s&amp;\",\n    $imgwidth,\n    $imgheight,\n    $extents\n);\nif ($radar) {\n    $imgurl .= \"layers[]=nexrad&\";\n}\n$imgurl .= \"&title=IEM%20Freeze&layers[]=interstates\";\n\nif ($refresh > 0) {\n    $t->headextra = \"<meta http-equiv=\\\"refresh\\\" content=\\\"\" . $refresh . \"; URL=\" . $uri . \"?imgsize=$imgsize&refresh=\" . $refresh . \"&extents=\" . $extents . \"&state=\" . $state . \"\\\">\\n\";\n}\n$t->title = \"IEM Freeze\";\n$t->jsextra = <<<EOM\n<script type=\"text/javascript\" src=\"freeze.js\"></script>\nEOM;\n\n$ar = array(\"1\" => \"Show\", \"0\" => \"Hide\");\n$rselect = make_select(\"radar\", $radar, $ar);\n\n$ar = array(\"0\" => \"Never\", \"300\" => \"5 minutes\", \"600\" => \"10 minutes\");\n$reselect = make_select(\"refresh\", $refresh, $ar);\n\n$sselect = \"<select name=\\\"ba\\\">\";\n$sselect .= \"<option value=\\\"#\\\"> -- User Defined -- </option>\";\n$ar = array(\n    \"A\" => \"Midwest US\",\n    \"AK\" => \"Alaska\",\n    \"HI\" => \"Hawaii\",\n    \"IL\" => \"Illinois\",\n    \"IA\" => \"Iowa\",\n    \"IA_C\" => \"Iowa Central\",\n    \"IA_NE\" => \"Iowa Northeast\",\n    \"IA_SE\" => \"Iowa Southeast\",\n    \"IA_SW\" => \"Iowa Southwest\",\n    \"IA_NW\" => \"Iowa Northwest\",\n    \"KS\" => \"Kansas\",\n    \"NE\" => \"Nebraska\",\n    \"MN_N\" => \"Minnesota North\",\n    \"MN_S\" => \"Minnsota South\",\n    \"MO\" => \"Missouri\",\n    \"ND\" => \"North Dakota\",\n    \"NW\" => \"Pacific Northwest\",\n    \"SD\" => \"South Dakota\",\n    \"WI\" => \"Wisconsin\"\n);\nforeach ($ar as $key => $val) {\n    $sselect .= sprintf(\n        \"<option value=\\\"%s?width=%s&amp;height=%s&amp;state=%s\\\"%s>%s</option>\\n\",\n        $uri,\n        $imgwidth,\n        $imgheight,\n        $key,\n        ($state == $key) ? \" SELECTED\" : \"\",\n        $val\n    );\n}\n$sselect .= \"</select>\";\n\n$ar = array(\n    \"640x480\" => \"640x480\",\n    \"800x600\" => \"800x600\",\n    \"1280x1024\" => \"1280x1024\"\n);\n$imgsizeselect = make_select(\"imgsize\", $imgsize, $ar);\n\n\n$t->content = <<<EOM\n\n<div class=\"alert alert-warning text-center mb-3\" role=\"alert\">\n  <strong>Notice:</strong> The newly created\n  <a href=\"/one/?dashcam=1&rwisobs=1\" class=\"alert-link\">IEM One app</a>\n  generally replicates this\n  app's functionality and more.  If there are no user complaints, this app\n  will be retired in the future.\n</div>\n\n<div class=\"row\">\n<div class=\"col-md-5\"><u>Temperature Key:</u><br />\n<img src=\"freeze_legend.png\" class=\"img img-fluid\">\n</div>\n<div class=\"col-md-7\"><h3>IEM Freeze</h3></div>\n</div>\n\n<form method=\"GET\" action=\"{$uri}\" name=\"myform\">\n\n<input type=\"hidden\" name=\"extents\" value=\"{$extents}\">\n<input type=\"hidden\" name=\"state\" value=\"{$state}\">\n<input type=\"hidden\" name=\"zoom\" value=\"1\">\n\n\n<div class=\"row\">\n\n<div class=\"col-md-3\"><b>Map Controls:</b><br />\n<img src=\"/images/button_zoomin_off.png\" name=\"zoominButton\" alt=\"Zoom In\">\n<img src=\"/images/button_pan_on.png\" name=\"panButton\" alt=\"Pan\">\n<img src=\"/images/button_zoomout_off.png\" name=\"zoomoutButton\" alt=\"Zoom Out\">\n<a href=\"{$uri}\">Reset</a>\n</div>\n\n<div class=\"col-md-3\"><b>Radar Layer?</b> {$rselect}</div>\n<div class=\"col-md-2\"><b>Map Refresh?</b> {$reselect}</div>\n<div class=\"col-md-2\"><b>Map Size?</b> {$imgsizeselect}</div>\n<div class=\"col-md-2\"><input type=\"submit\" value=\"View\" class=\"btn btn-primary\"></div>\n\n</div>\n\n\n<div class=\"row\">\n<div class=\"col-sm-12\">\n\n<input class=\"img img-fluid\" type=\"image\" name=\"img\" src=\"{$imgurl}\">\n</div>\n</div>\n</form>\n\n<b>Preset Views:</b><br />\n<form name=\"ba\">\n{$sselect}\n</form>\n\n<br>\n\n<div class=\"alert alert-info\">This application uses the \n<a class=\"alert-link\" href=\"/GIS/radmap_api.phtml\">IEM RadMap API</a> to generate\nthe image you see above.  You could place the above image on your webpage by\nright-clicking the image above and select \"Copy Image URL\" and then use that\nas your image source on your webpage.</div>\n        \n<p><b>IEM Freeze</b> lets you quickly evaluate air\nand pavement temperatures, along with concurrent radar observations\nof precipitation:<br>\n<ul>\n<li><b>Pavement temperatures</b> are indicated by color-coded dots.</li>\n<li><b>Air temperatures</b> are given by numerical values (also color-coded).</li>\n<li><b>Current Composite RADAR</b> also is overlain on each plot.</li>\n</ul>\n\n<p>This <a href=\"/cool/images/freeze_031215.png\">historical plot</a> \n    shows how IEM Freeze looks when the winter weather gets interesting.</p>\n\n        <p>Your feedback is needed!  Please <a href=\"/info/contacts.php\">let me know</a> how you would like this \napplication to behave.\nEOM;\n$t->render(\"single.phtml\");\n"
  },
  {
    "path": "htdocs/GIS/apps/onsite/robins.php",
    "content": "<?php\nrequire_once \"../../../../config/settings.inc.php\";\nrequire_once \"../../../../include/vendor/mapscript.php\";\n\n\n$map = new mapObj(\"robins.map\");\n\n$counties = $map->getLayerByName(\"counties\");\n$counties->__set(\"status\", MS_ON);\n\n$robins = $map->getLayerByName(\"robins\");\n$robins->__set(\"status\", MS_ON);\n\n$img = $map->prepareImage();\n\n$counties->draw($map, $img);\n$robins->draw($map, $img);\n\n$map->drawLabelCache($img);\n\nheader(\"Content-type: image/png\");\necho $img->getBytes();\n"
  },
  {
    "path": "htdocs/GIS/apps/profit/index.css",
    "content": "/* Profit Map Styling - Simplified Layout */\n\n/* Ensure the map fills its container properly */\n#map {\n    background-color: #f8f9fa;\n}\n\n/* Style the year selection buttons */\n.btn-group-vertical .btn-check {\n    position: absolute;\n    clip: rect(0, 0, 0, 0);\n    pointer-events: none;\n}\n\n/* Ensure proper spacing in vertical button group */\n.btn-group-vertical .btn {\n    border-radius: 0.375rem !important;\n    margin-bottom: 2px;\n}\n\n.btn-group-vertical .btn:last-child {\n    margin-bottom: 0;\n}\n\n/* Legend image styling */\n.card-body img {\n    max-width: 100%;\n    height: auto;\n}\n\n/* Disclaimer toggle button styling */\n#disclaimer_btn {\n    font-weight: 500;\n}\n\n#disclaimer_btn:hover {\n    text-decoration: underline !important;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n    .col-md-9, .col-md-3 {\n        margin-bottom: 1rem;\n    }\n    \n    #map {\n        height: 400px !important;\n    }\n}"
  },
  {
    "path": "htdocs/GIS/apps/profit/index.js",
    "content": "/**\n * Profitability Map Application\n * Simplified vanilla JavaScript implementation\n */\n/* global ol */\n\nlet map = null;\nlet player = null;\n\n/**\n * Initialize the map and controls\n */\nfunction initializeMap() {\n    // Create the profitability layer\n    player = new ol.layer.Tile({\n        title: 'Profitability',\n        visible: true,\n        source: new ol.source.XYZ({\n            url: '/c/tile.py/1.0.0/profit2010/{z}/{x}/{y}.png'\n        })\n    });\n\n    // Initialize OpenLayers map\n    map = new ol.Map({\n        target: 'map',\n        layers: [\n            new ol.layer.Tile({\n                title: 'OpenStreetMap',\n                visible: true,\n                source: new ol.source.OSM()\n            }),\n            player\n        ],\n        view: new ol.View({\n            projection: 'EPSG:3857',\n            center: ol.proj.transform([-93.5, 42.1], 'EPSG:4326', 'EPSG:3857'),\n            zoom: 7\n        })\n    });\n    \n    // Add layer switcher control\n    map.addControl(new ol.control.LayerSwitcher());\n}\n\n/**\n * Handle year selection change\n * @param {Event} event - The change event\n */\nfunction handleYearChange(event) {\n    const year = event.target.value;\n    if (player && year) {\n        player.setSource(new ol.source.XYZ({\n            url: `/c/tile.py/1.0.0/profit${year}/{z}/{x}/{y}.png`\n        }));\n    }\n}\n\n/**\n * Initialize event listeners\n */\nfunction initializeEventListeners() {\n    // Year selection radio buttons\n    const yearRadios = document.querySelectorAll('input[name=\"whichyear\"]');\n    yearRadios.forEach((radio) => {\n        radio.addEventListener('change', handleYearChange);\n    });\n}\n\n/**\n * Application initialization\n */\ndocument.addEventListener('DOMContentLoaded', () => {\n    initializeMap();\n    initializeEventListeners();\n});\n"
  },
  {
    "path": "htdocs/GIS/apps/profit/index.php",
    "content": "<?php \nrequire_once \"../../../../config/settings.inc.php\";\n\nrequire_once \"../../../../include/myview.php\";\nrequire_once \"../../../../include/mlib.php\";\nforce_https();\n$OL = \"10.6.1\";\n$t = new MyView();\n$t->title = \"Profitability Map\";\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol.css\" type=\"text/css\">\n<link type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"index.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"/vendor/openlayers/{$OL}/ol.js\" type=\"text/javascript\"></script>\n<script src='/vendor/openlayers/{$OL}/ol-layerswitcher.js'></script>\n<script src=\"index.js\"></script>\nEOM;\n\n$t->content = <<<EOM\n<div class=\"row\">\n  <div class=\"col-md-12\">\n  <h3><i class=\"bi bi-bar-chart\" aria-hidden=\"true\"></i> Iowa Corn/Soybean Profitability Map</h3>\n    <p class=\"lead\">\n      This interactive map shows estimates of profitability for corn and soybean production \n      across Iowa fields. Select a year to view profitability data for that growing season.\n    </p>\n  </div>\n</div>\n\n<div class=\"row\">\n  <div class=\"col-md-9\">\n    <div class=\"card\">\n      <div class=\"card-body p-0\">\n        <div id=\"map\" style=\"height: 500px; width: 100%;\"></div>\n      </div>\n    </div>\n  </div>\n  \n  <div class=\"col-md-3\">\n    <!-- Year Selection Panel -->\n    <div class=\"card mb-3\">\n      <div class=\"card-header\">\n        <h6 class=\"mb-0\">Select Year</h6>\n      </div>\n      <div class=\"card-body\">\n        <div class=\"btn-group-vertical d-grid gap-1\" role=\"group\" aria-label=\"Year selection\">\n          <input type=\"radio\" class=\"btn-check\" name=\"whichyear\" id=\"y2010\" value=\"2010\" checked>\n          <label class=\"btn btn-outline-primary\" for=\"y2010\">2010</label>\n          \n          <input type=\"radio\" class=\"btn-check\" name=\"whichyear\" id=\"y2011\" value=\"2011\">\n          <label class=\"btn btn-outline-primary\" for=\"y2011\">2011</label>\n          \n          <input type=\"radio\" class=\"btn-check\" name=\"whichyear\" id=\"y2012\" value=\"2012\">\n          <label class=\"btn btn-outline-primary\" for=\"y2012\">2012</label>\n          \n          <input type=\"radio\" class=\"btn-check\" name=\"whichyear\" id=\"y2013\" value=\"2013\">\n          <label class=\"btn btn-outline-primary\" for=\"y2013\">2013</label>\n          \n          <input type=\"radio\" class=\"btn-check\" name=\"whichyear\" id=\"y2015\" value=\"2015\">\n          <label class=\"btn btn-outline-primary\" for=\"y2015\">2015</label>\n        </div>\n      </div>\n    </div>\n\n    <!-- Legend Panel -->\n    <div class=\"card\">\n      <div class=\"card-header\">\n        <h6 class=\"mb-0\">Legend</h6>\n      </div>\n      <div class=\"card-body text-center\">\n        <img src=\"profit_legend.png\" alt=\"Profitability Legend\" class=\"img-fluid\" />\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"row mt-3\">\n  <div class=\"col-md-12\">\n    <div class=\"card\">\n      <div class=\"card-header\">\n        <button class=\"btn btn-link p-0 text-decoration-none\" type=\"button\" id=\"disclaimer_btn\" \n                data-bs-toggle=\"collapse\" data-bs-target=\"#disclaimerContent\" \n                aria-expanded=\"false\" aria-controls=\"disclaimerContent\">\n          <i class=\"bi bi-info-circle\" aria-hidden=\"true\"></i> View Disclaimer\n        </button>\n      </div>\n      <div class=\"collapse\" id=\"disclaimerContent\">\n        <div class=\"card-body\">\n          <p>\n          This map shows estimates of profitability of fields in corn or\n          soybean. This map is meant to provide insight into alternative land\n          management to improve farm profitability using publically available\n          (and funded) data, thus allowing access without purchase of a private\n          farm data management plan. While useful for insight into relative\n          performance of areas within fields, and representative of Iowa farm\n          management, this map does not contain individual economic or\n          management data, and actual profitability will depend on actual\n          expenses, revenue and management. We present a snapshot of the\n          current possibilities with the available data and hope to improve\n          this map in the future to allow user-defined values for\n          individualized results. Local variations of yields, management and\n          marketing practices, land tenure, and inaccuracy of the underlying\n          spatial data result in deviations from the estimates presented here.\n          </p>\n\n          <p>For a complete\n          description of the underlying data and methods, please refer to the\n          research article \"Subfield profitability analysis reveals an\n          economic case for cropland diversification,\" that can be freely\n          accessed <a href=\"http://iopscience.iop.org/article/10.1088/1748-9326/11/1/014009/meta;jsessionid=0059946EA9A46A2380CB698ABA6BAA8C.c4.iopscience.cld.iop.org\">online</a>.\n          </p>\n\n          <p>The analysis was\n          performed for fields that were planted in corn or soybeans according\n          to the <a href=\"http://nassgeodata.gmu.edu/CropScape/\">cropland data\n          layer</a> (CDL) for 2010-2013. The 2013 CDL was used for 2015.\n          Patches of similar profitability are defined by <a href=\"http://websoilsurvey.sc.egov.usda.gov/\">soil\n          survey</a> (SSURGO) and <a href=\"http://www.fsa.usda.gov/programs-and-services/aerial-photography/imagery-products/common-land-unit-clu/index\">common\n          land unit</a> (CLU, 2008) delineations. Profitability was calculated\n          by deducting cash rent and crop production cost estimates from the\n          crop revenue (crop yield x grain price). Potential yields were taken\n          from the <a href=\"http://www.extension.iastate.edu/soils/ispaid\">Iowa\n          soil properties and interpretations database (ISPAID)</a> and\n          adjusted to <a href=\"http://quickstats.nass.usda.gov\">average county\n          yields</a> (NASS, 2010-2013) or to <a href=\"http://webapp.rma.usda.gov/apps/actuarialinformationbrowser/\">trend\n          county yields</a> (USDA RMA, 2015). Grain prices are the average\n          monthly prices of each marketing year, and the forecast for 2015 from\n          the <a href=\"http://usda.mannlib.cornell.edu/MannUsda/viewDocumentInfo.do?documentID=1194\">USDA\n          WASDE report</a> of May 2016. Cash rents are taken from <a href=\"https://www.extension.iastate.edu/agdm/wholefarm/html/c2-10.html\">county\n          surveys</a> (ISU extension, 2010-2013, 2015), adjusted to corn\n          suitability rating (CSR). Crop production costs were taken from the\n          <a href=\"http://www.extension.iastate.edu/agdm/crops/html/a1-20.html\">ISU\n          Ag Decision Maker cost estimates</a>.\n          </p>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\nEOM;\n\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/GIS/apps/rview/anim_gif.php",
    "content": "<?php\nrequire_once \"../../../../config/settings.inc.php\";\n// Create animated GIF! and then send it to them...\nrequire_once \"../../../../include/memcache.php\";\n\n// Prevent client abort from leaving temp files around\nignore_user_abort(true);\n\n$fts = isset($_GET[\"fts\"]) ? intval($_GET[\"fts\"]) : null;\nif (is_null($fts)) {\n    http_response_code(422);\n    die(\"fts not found, ERROR\");\n}\n\n$memcache = MemcacheSingleton::getInstance();\n$urls = $memcache->get(\"/GIS/apps/rview/warnings.phtml?fts={$fts}\");\nif (!$urls) {\n    die(\"fts not found, ERROR\");\n}\nchdir(\"/var/webtmp\");\n$cmdstr = \"gifsicle --colors 256 --loopcount=0 --delay=100 -o {$fts}_anim.gif \";\nforeach ($urls as $k => $v) {\n    // value is now single quoted, so remove those\n    $res = file_get_contents(sprintf(\n        \"%s%s\",\n        $INTERNAL_BASEURL,\n        str_replace(\"'\", \"\", $v)\n    ));\n    $fn = \"{$fts}_{$k}.png\";\n    $gfn = \"{$fts}_{$k}.gif\";\n    $f = fopen($fn, 'wb');\n    fwrite($f, $res);\n    fclose($f);\n    if (exec(escapeshellcmd(\"magick $fn $gfn\")) === FALSE) {  // skipcq\n        die(\"magick failed\");\n    };\n    $cmdstr .= \" {$gfn} \";\n}\n\nif (exec(escapeshellcmd($cmdstr)) === FALSE){  // skipcq\n    die(\"gifsicle failed\");\n};\n\nheader(\"Content-type: application/octet-stream\");\nheader(\"Content-Disposition: attachment; filename=myanimation.gif\");\n\nreadfile(\"{$fts}_anim.gif\");\n"
  },
  {
    "path": "htdocs/GIS/apps/rview/compare.phtml",
    "content": "<?php\nrequire_once \"../../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 68);\nrequire_once \"../../../../include/myview.php\";\nrequire_once \"../../../../include/rview_lib.php\";\nrequire_once \"../../../../include/network.php\";\nrequire_once \"../../../../include/forms.php\";\nrequire_once \"../../../../include/vendor/mapscript.php\";\n\n$t = new MyView();\n\n$county = isset($_GET['county']) ? xssafe($_GET[\"county\"]) : \"\";\n$cntyext = isset($_GET['cntyext']) ? xssafe($_GET[\"cntyext\"]) : \"\";\n$ul_x = isset($_GET[\"ul_x\"]) ? xssafe($_GET[\"ul_x\"]) : \"\";\n$ul_y = isset($_GET[\"ul_y\"]) ? xssafe($_GET[\"ul_y\"]) : \"\";\n$lr_x = isset($_GET[\"lr_x\"]) ? xssafe($_GET[\"lr_x\"]) : \"\";\n$lr_y = isset($_GET[\"lr_y\"]) ? xssafe($_GET[\"lr_y\"]) : \"\";\n$map_x = isset($_GET[\"map_x\"]) ? xssafe($_GET[\"map_x\"]) : \"\";\n$map_y = isset($_GET[\"map_y\"]) ? xssafe($_GET[\"map_y\"]) : \"\";\n$map_height = isset($_GET[\"map_height\"]) ? xssafe($_GET[\"map_height\"]) : \"\";\n$map_width = isset($_GET[\"map_width\"]) ? xssafe($_GET[\"map_width\"]) : \"\";\n\nif ($ul_x != \"\") {\n    $dx = ($ul_x - $lr_x) / $map_width;\n    $dy = ($ul_y - $lr_y) / $map_height;\n    $clickx = ($map_x * (0 - $dx)) + $ul_x;\n    $clicky = ($map_y * (0 - $dy)) + $ul_y;\n    $extents = array($clickx - 0.3, $clicky - 0.3, $clickx + 0.3, $clicky + 0.3);\n} else if ($cntyext != \"\") {\n    $extents = explode(\" \", $cntyext);\n} else {\n    $extents = array(-96.639706, 39.1497, -90.140061, 44.726);\n}\n\n$t->title = \"RADAR Comparison\";\n$nt = new NetworkTable(\"NEXRAD\");\n\n$latlon = new projectionObj(\"init=epsg:4326\");\n$p26915 = new projectionObj(\"init=epsg:26915\");\n\n$cntyMdpoint = new pointObj();\n$cntyMdpoint->setXY(($extents[0] + $extents[2]) / 2,\n    ($extents[1] + $extents[3]) / 2\n);\n$cntyMdpoint->project($latlon, $p26915);\n\n$n = array(\"DMX\", \"DVN\", \"ARX\", \"MPX\", \"FSD\", \"OAX\", \"EAX\");\n$distances = array();\nforeach ($n as $key => $site) {\n    $r = new pointObj();\n    $r->setXY($nt->table[$site]['lon'], $nt->table[$site]['lat']);\n    $r->project($latlon, $p26915);\n    $distances[$site] = round($r->distanceToPoint($cntyMdpoint) / 1000, 0);\n}\n\n$site = \"DMX\";\n$dmx_url = drawCountyNEXRAD($site, $extents);\n$site = \"DVN\";\n$dvn_url = drawCountyNEXRAD($site, $extents);\n$site = \"ARX\";\n$arx_url = drawCountyNEXRAD($site, $extents);\n$site = \"FSD\";\n$fsd_url = drawCountyNEXRAD($site, $extents);\n$site = \"OAX\";\n$oax_url = drawCountyNEXRAD($site, $extents);\n$site = \"MPX\";\n$mpx_url = drawCountyNEXRAD($site, $extents);\n$site = \"EAX\";\n$eax_url = drawCountyNEXRAD($site, $extents);\n\n$ftime = filemtime('/mesonet/ldmdata/gis/images/4326/ridge/DMX/N0B_0.png');\n$radTS = date(\"m/d h:i a\", $ftime);\n$s = drawStateNEXRAD($extents);\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n<li><a href=\"/current/radar.phtml\">Current RADAR Products</a></li>\n<li class=\"active\">RADAR comparison</li>\n</ol>\n\n<h3>RADAR Base Reflectivity Comparison:</h3><p>\n<table>\n<tr>\n <td><b>DMX - Des Moines:</b>\n   <br><i>Distance:</i> {$distances['DMX']} km\n   <br><img src=\"{$dmx_url}\"></td>\n <td></td>\n <td rowspan=4 valign=\"TOP\">\n  <b>Directions:</b> Click on the State NEXRAD view to change your comparison \n  area (shown in white)<br>\n  {$s}\n \n    <a href=\"compare.phtml\">Reset app</a> <i>(view state)</i>\n      <br>RADAR composite valid: $radTS \n<p><b>Notes:</b>\n<li>This app is purely for educational purposes.</li>\n<li>Distances are measured from the RADAR site to the midpoint of the area \n you selected.\n<li>Only radars in precip mode are shown.</li>\n\n</td>\n</tr>\n<tr>\n <td><b>ARX - LaCrosse:</b>\n   <br><i>Distance:</i> {$distances['ARX']} km\n   <br><img src=\"{$arx_url}\"></td>\n <td><b>MPX - Minneapolis:</b>\n   <br><i>Distance:</i> {$distances['MPX']} km\n   <br><img src=\"{$mpx_url}\"></td>\n</tr>\n<tr>\n <td><b>FSD - Sioux Falls:</b>\n   <br><i>Distance:</i> {$distances['FSD']} km\n   <br><img src=\"{$fsd_url}\"></td>\n <td><b>OAX - Omaha:</b>\n   <br><i>Distance:</i> {$distances['OAX']} km\n   <br><img src=\"{$oax_url}\"></td>\n</tr>\n<tr>\n <td><b>DVN - Davenport:</b>\n   <br><i>Distance:</i> {$distances['DVN']} km\n   <br><img src=\"{$dvn_url}\"></td>\n <td><b>EAX - Pleasant Hill:</b>\n   <br><i>Distance:</i> {$distances['EAX']} km\n   <br><img src=\"{$eax_url}\"></td>\n</tr>\n\n</table>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/GIS/apps/rview/warnings.css",
    "content": "div.wwaW {\n    border-top: 1px solid #000;\n    border-left: 10px solid #f00;\n    margin-bottom: 3px;\n    float: left;\n    width: 90%;\n}\n\ndiv.wwaY {\n    border-top: 1px solid #000;\n    border-left: 10px solid #ff0;\n    margin-bottom: 3px;\n    float: left;\n    width: 90%;\n}\n\ndiv.wwaS {\n    border-left: 10px solid #fff;\n    border-top: 1px solid #000;\n    margin-bottom: 3px;\n    float: left;\n    width: 90%;\n}\n\ndiv.wwaA {\n    border-top: 1px solid #000;\n    border-left: 10px solid #f0f;\n    margin-bottom: 3px;\n    float: left;\n    width: 90%;\n}\n\n.issued {\n    background: #eee;\n    width: 33%;\n    float: left;\n}\n\n.updated {\n    background: #eee;\n    width: 33%;\n    float: left;\n}\n\n.vtec {\n    clear: both;\n    float: left;\n    background: #eee;\n    width: 33%;\n}\n\n.wwa-state {\n    clear: both;\n    border: 1px solid #000;\n    float: left;\n    padding: 5px;\n    width: 30px;\n}\n\n/* Legend container styling to prevent layout conflicts */\n.legend-container {\n    clear: both;\n    margin: 10px 0;\n    text-align: left;\n}\n\n.legend-container img {\n    display: block;\n    max-width: 100%;\n    height: auto;\n}"
  },
  {
    "path": "htdocs/GIS/apps/rview/warnings.module.js",
    "content": "/**\n * Warnings Application - Vanilla JavaScript ES Module\n * Migrated from jQuery to vanilla JavaScript\n */\n\nimport { getElement } from '/js/iemjs/domUtils.js';\n\n/**\n * Show or hide control panels\n * @param {string} layerName ID of the control panel to toggle\n */\nfunction showControl(layerName) {\n    const targetElement = getElement(layerName);\n    const oldval = targetElement ? targetElement.style.display : 'none';\n    \n    // Hide all control panels\n    setLayerDisplay(\"layers-control\", 'none');\n    setLayerDisplay(\"locations-control\", 'none');\n    setLayerDisplay(\"time-control\", 'none');\n    setLayerDisplay(\"options-control\", 'none');\n    \n    // Show the target panel if it was hidden\n    if (oldval === 'none') {\n        setLayerDisplay(layerName, 'block');\n    }\n}\n\n/**\n * Set display style for a layer element\n * @param {string} layerName ID of the element to modify\n * @param {string} displayValue CSS display value to set\n */\nfunction setLayerDisplay(layerName, displayValue) {\n    const element = getElement(layerName);\n    if (element) {\n        element.style.display = displayValue;\n    }\n}\n\n/**\n * Initialize the application\n */\nfunction init() {\n    // Set up event listeners for control buttons\n    const dataWindow = getElement('datawindow');\n    if (dataWindow) {\n        const buttons = dataWindow.querySelectorAll('button[data-control]');\n        buttons.forEach(button => {\n            button.addEventListener('click', (event) => {\n                const controlType = event.target.getAttribute('data-control');\n                if (controlType) {\n                    showControl(`${controlType}-control`);\n                }\n            });\n        });\n    }\n\n    // Set up auto-refresh for non-archive mode\n    const urlParams = new URLSearchParams(window.location.search);\n    if (!urlParams.has('archive')) {\n        // Auto-refresh every 5 minutes if not in archive mode\n        setTimeout(() => {\n            const form = document.forms.myform;\n            if (form) {\n                form.submit();\n            }\n        }, 300000);\n    }\n}\n\n// Initialize when DOM is loaded\nif (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n} else {\n    init();\n}\n"
  },
  {
    "path": "htdocs/GIS/apps/rview/warnings.phtml",
    "content": "<?php\nrequire_once \"../../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 96);\nrequire_once \"../../../../include/database.inc.php\";\nrequire_once \"../../../../include/reference.php\";\nrequire_once \"../../../../include/network.php\";\nrequire_once \"../../../../include/forms.php\";\nrequire_once \"../../../../include/myview.php\";\nrequire_once \"../../../../include/memcache.php\";\n$t = new MyView();\nrequire_once \"../../../../include/rview_lib.php\";\n$baseuri = \"warnings.phtml\";\nputenv(\"TZ=UTC\");\ndate_default_timezone_set('UTC');\n\nif (isset($_GET[\"img_x\"]) && isset($_GET[\"img_y\"])) {\n    $arExtents = explode(\",\", $_GET[\"extents\"]);\n    $ll_x = $arExtents[0];\n    $ll_y = $arExtents[1];\n    $ur_x = $arExtents[2];\n    $ur_y = $arExtents[3];\n\n    $dy = ($ur_y - $ll_y) / floatval(480);\n    $dx = ($ur_x - $ll_x) / floatval(640);\n\n    $_GET[\"lon0\"] = (get_int404(\"img_x\", 0) * $dx) + $ll_x;\n    $_GET[\"lat0\"] = $ur_y - (get_int404(\"img_y\", 0) * $dy);\n    /* $_GET[\"site\"] = \"user\"; */\n}\n\n$layers = isset($_GET[\"layers\"]) ? $_GET[\"layers\"] : array(\n    \"cwas\", \"warnings\",\n    \"uscounties\", \"nexrad\", \"watches\"\n);\nif (!is_array($layers)) {\n    $layers = array($layers);\n}\n$cu = get_int404(\"cu\", 0);\n$loop = get_int404(\"loop\", 0);\nif ($loop == 2) $loop = 1;\n$tz = isset($_GET[\"tz\"]) ? strtoupper(xssafe($_GET[\"tz\"])) : \"CDT\";\n$tzdict = array(\n    \"UTC\" => 0, \"EDT\" => 14400, \"EST\" => 18000, \"CDT\" => 18000,\n    \"CST\" => 21600, \"MDT\" => 21600, \"MST\" => 25200, \"PDT\" => 25200,\n    \"PST\" => 28800\n);\nif (!array_key_exists($tz, $tzdict)) {\n    xssafe(\"<tag>\");\n}\n\n$tzoff = $tzdict[$tz];\n$filter = get_int404(\"filter\", 0);\n$lsrwindow = get_int404(\"lsrwindow\", \"0\");\n$lsrlook = isset($_GET[\"lsrlook\"]) ? xssafe($_GET[\"lsrlook\"]) : \"+\";\n// careful here as we can have PXXX sites\n$site = isset($_GET[\"site\"]) ? strtoupper(substr(xssafe($_GET[\"site\"]), 0, 4)) : \"DMX\";\n$osite = isset($_GET[\"osite\"]) ? substr($_GET[\"osite\"], 0, 4) : \"DMX\";\n$sortcol = isset($_GET[\"sortcol\"]) ? substr(xssafe($_GET[\"sortcol\"]), 0, 20) : \"issued\";\n$sortdir = isset($_GET[\"sortdir\"]) ? xssafe($_GET[\"sortdir\"]) : \"DESC\";\n$lon0 = isset($_GET[\"lon0\"]) ? floatval($_GET[\"lon0\"]) : 0;\n$lat0 = isset($_GET[\"lat0\"]) ? floatval($_GET[\"lat0\"]) : 0;\n$zoom = get_int404(\"zoom\", 250);\n$imgsize = isset($_GET[\"imgsize\"]) ? xssafe($_GET[\"imgsize\"]) : \"640x480\";\n$interval = get_int404(\"interval\", 5);\n$frames = get_int404(\"frames\", 10);\n$warngeo = isset($_GET[\"warngeo\"]) ? xssafe($_GET[\"warngeo\"]) : \"both\";\n$ar = explode(\"x\", $imgsize);\nif (count($ar) != 2) {\n    xssafe(\"<tag>\");\n}\n$width = $ar[0];\n$height = $ar[1];\n\n$isarchive = (isset($_GET[\"archive\"]) && $_GET[\"archive\"] == \"yes\") ? 1 : 0;\n$archive = isset($_GET[\"archive\"]) ? xssafe($_GET[\"archive\"]) : \"\";\n//if ($isarchive) { $loop = 0; }\n$a = time();\nif ($isarchive) {\n    $year = get_int404(\"year\", date(\"Y\", $a - $tzoff));\n    $month = get_int404(\"month\", date(\"m\", $a - $tzoff));\n    $day = get_int404(\"day\", date(\"d\", $a - $tzoff));\n    $hour = get_int404(\"hour\", date(\"H\", $a - $tzoff));\n    $m = get_int404(\"minute\", date(\"i\", $a - $tzoff));\n} else {\n    $year = date(\"Y\", $a - $tzoff);\n    $month = date(\"m\", $a - $tzoff);\n    $day = date(\"d\", $a - $tzoff);\n    $hour = date(\"H\", $a - $tzoff);\n    $m = date(\"i\", $a - $tzoff);\n}\n\nif ($m >= 55) $ma = \"55\";\nelse if ($m >= 50) $ma = \"50\";\nelse if ($m >= 45) $ma = \"45\";\nelse if ($m >= 40) $ma = \"40\";\nelse if ($m >= 35) $ma = \"35\";\nelse if ($m >= 30) $ma = \"30\";\nelse if ($m >= 25) $ma = \"25\";\nelse if ($m >= 20) $ma = \"20\";\nelse if ($m >= 15) $ma = \"15\";\nelse if ($m >= 10) $ma = \"10\";\nelse if ($m >= 5) $ma = \"05\";\nelse $ma = \"00\";\n\n$m = $ma;\n$basets = mktime($hour, $m, 0, $month, $day, $year);\n$wfo_filter_ts = mktime(0, 0, 0, 8, 29, 2004);\nif ($isarchive && $basets < $wfo_filter_ts) {\n    $filter = 0;\n}\n\n$nt = new NetworkTable(Array(\"WFO\", \"RFC\", \"CWSU\"), TRUE);\n$nt->table[\"NHC\"] = array(\n    \"lat\" => 25.75, \"lon\" => -80.38,\n    \"name\" => \"National Hurricane Center\"\n);\nif (!array_key_exists($site, $nt->table)){\n    http_response_code(422);\n    die(\"Invalid Site Identifier\");\n}\n\n$uri = \"$baseuri?frames=$frames&amp;interval=$interval&amp;site=$site&amp;\" .\n    \"cu=$cu&amp;archive=$archive&amp;year=$year&amp;month=$month&amp;\" .\n    \"day=$day&amp;hour=$hour&amp;minute=$m&amp;loop=$loop&amp;\" .\n    \"filter=$filter&amp;sortdir=$sortdir&amp;zoom=$zoom&amp;warngeo=$warngeo\";\n$uri_nowfo = \"$baseuri?frames=$frames&amp;interval=$interval&amp;\" .\n    \"archive=$archive&amp;cu=$cu&amp;year=$year&amp;month=$month&amp;\" .\n    \"day=$day&amp;hour=$hour&amp;minute=$m&amp;loop=$loop&amp;\" .\n    \"filter=$filter&amp;sortdir=$sortdir&amp;zoom=$zoom&amp;warngeo=$warngeo\";\n\n\n/*\n Okay, complicated location stuff here...\n  + case1: Default DMX (first page load)\n  + case2: User clicks on map\n  + case3: User selects different WFO  ($osite != $site)\n  + case4: Nothing happens. lat0 lon0 are defined\n*/\n\nif (isset($_GET[\"lat0\"]) && isset($_GET[\"lon0\"]) && $osite == $site) {\n    $uri .= \"&lat0=$lat0&lon0=$lon0\";\n} else if (isset($_GET[\"site\"]) || $lat0 == 0 || $lon0 == 0 || $osite != $site) {\n    $osite = $site;\n    $lat0 = $nt->table[$site][\"lat\"];\n    $lon0 = $nt->table[$site][\"lon\"];\n    $uri .= \"&lat0=$lat0&lon0=$lon0\";\n}\n\n$t->title = \"RADAR &amp; NWS Warnings\";\n$t->jsextra = <<<EOM\n<script src=\"warnings.module.js\" type=\"module\"></script>\nEOM;\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" type=\"text/css\" href=\"warnings.css\" />\nEOM;\n\n$content = <<<EOM\n<form style=\"display: inline;\" method=\"GET\" name=\"myform\" action=\"{$baseuri}\">\n<input type=\"hidden\" value=\"{$site}\" name=\"osite\">\n<input type=\"hidden\" name=\"tzoff\" value=\"0\">\nEOM;\nif (isset($_GET[\"lat0\"])) {\n    $content .= \"<input type=\\\"hidden\\\" value=\\\"{$lat0}\\\" name=\\\"lat0\\\">\n    <input type=\\\"hidden\\\" value=\\\"{$lon0}\\\" name=\\\"lon0\\\">\";\n}\n\n$rtl = array(\n    \"usdm\" => \"US Drought Monitor\",\n    \"goes_vis\" => \"CONUS GOES Visible\",\n    \"goes_ir\" => \"CONUS GOES Infrared\",\n    \"goes_wv\" => \"CONUS GOES Water Vapor\",\n    \"current_barbs\" => \"Current Wind Barbs\",\n    \"airtemps\" => \"Current Air Temps\",\n    \"current_sites\" => \"Site Labels\",\n);\n$rtlselect = \"\";\nforeach ($rtl as $key => $val) {\n    $rtlselect .= sprintf(\n        '<br /><input id=\"layer%s\" name=\"layers[]\" type=\"checkbox\" '\n            .' value=\"%s\"%s> <label for=\"layer%s\">%s</label>',\n        $key,\n        $key,\n        (in_array($key, $layers)) ? ' checked=\"checked\"' : '',\n        $key,\n        $val\n    );\n}\n\n$ll = array(\n    \"nexrad\" => \"CONUS NEXRAD\",\n    \"akn0q\" => \"Alaska NEXRAD (2010+)\",\n    \"hin0q\" => \"Hawaii NEXRAD (2010+)\",\n    \"prn0q\" => \"Puerto Rico NEXRAD (2010+)\",\n    \"warnings\" => \"Warnings\",\n    \"cwsu\" => \"CWSU Boundaries\",\n    \"cwas\" => \"WFO Boundaries\",\n    \"uscounties\" => \"US Counties\",\n    \"interstates\" => \"US Interstates\",\n    \"watches\" => \"Watches\",\n);\n$lselect = \"\";\nforeach ($ll as $key => $val) {\n    $lselect .= sprintf(\n        '<br /><input id=\"layer%s\" name=\"layers[]\" type=\"checkbox\" '\n            .' value=\"%s\"%s> <label for=\"layer%s\">%s</label>',\n        $key,\n        $key,\n        (in_array($key, $layers)) ? ' checked=\"checked\"' : '',\n        $key,\n        $val\n    );\n}\n\n$wselect = '<select name=\"site\" style=\"width: 100%\">';\nforeach ($nt->table as $key => $value) {\n    $wselect .= \"<option value=\\\"$key\\\" \";\n    if ($site == $key) $wselect .= \"SELECTED\";\n    $wselect .= \">[\" . $key . \"] \" . $value[\"name\"] . \"</option>\";\n}\n$wselect .= \"</select>\";\n\n$ar = array(\n    \"UTC\" => \"UTC\", \"EDT\" => \"EDT\", \"EST\" => \"EST\",\n    \"CDT\" => \"CDT\",\n    \"CST\" => \"CST\",\n    \"MDT\" => \"MDT\",\n    \"MST\" => \"MST\", \"PDT\" => \"PDT\",\n    \"PST\" => \"PST\"\n);\n$tzselect = make_select(\"tz\", $tz, $ar);\n\n$ar = array(\n    \"both\" => \"County + Polygon\",\n    \"county\" => \"County Only\",\n    \"sbw\" => \"Storm Based Warning\"\n);\n$wgselect = make_select(\"warngeo\", $warngeo, $ar);\n\n$ar = array(\n    5 => \"5 km\", 10 => \"10 km\", 25 => \"25 km\", 50 => \"50 km\",\n    100 => \"100 km\", 250 => \"250 km\", 500 => \"500 km\", 1000 => \"1000 km\",\n    3000 => \"3000 km\"\n);\n$zselect = make_select(\"zoom\", $zoom, $ar);\n\n$ar = array(\n    0 => \"Hide\", 5 => \"5 minutes\", 10 => \"10 minutes\",\n    15 => \"15 minutes\", 30 => \"30 minutes\", 60 => \"60 minutes\"\n);\n$lwselect = make_select(\"lsrwindow\", $lsrwindow, $ar);\n\n$ar = array(\n    \"fcster\" => \"Product Author\", \"phenomena\" => \"Product Type\",\n    \"expire\" => \"Product Expiration\", \"issue\" => \"Product Issued\",\n    \"sname\" => \"State Name\", \"updated\" => \"Product Updated\",\n    \"wfo\" => \"Weather Office\", \"eventid\" => \"VTEC Event ID\",\n    \"status\" => \"VTEC Status\"\n);\n$sselect = make_select(\"sortcol\", $sortcol, $ar);\n\n$ar = array(\n    \"640x480\" => \"640x480\",\n    \"800x600\" => \"800x600\",\n    \"1024x768\" => \"1024x768\",\n    \"1280x1024\" => \"1280x1024\",\n);\n$igselect = make_select(\"imgsize\", $imgsize, $ar);\n\n$ar = array(\n    \"+\" => \"+\",\n    \"-\" => \"-\",\n    \"+/-\" => \"+/-\",\n);\n$lrselect = make_select(\"lsrlook\", $lsrlook, $ar);\n\n$ar = array(\n    \"0\" => \"1 image only\",\n    \"1\" => \"Java Script Loop\"\n);\n$loselect = make_select(\"loop\", $loop, $ar);\n\n$ar = array(\n    \"5\" => \"5 minutes\",\n    \"10\" => \"10 minutes\",\n    \"15\" => \"15 minutes\",\n    \"30\" => \"30 minutes\",\n    \"60\" => \"1 hour\",\n    \"120\" => \"2 hours\",\n    \"1440\" => \"1 day\",\n);\n$ivselect = make_select(\"interval\", $interval, $ar);\n\n$ar = array(\"0\" => \"No\", \"1\" => \"Yes\");\n$wfselect = make_select(\"filter\", $filter, $ar);\n\n$pradio = \"<br /><input type=\\\"radio\\\" value=\\\"0\\\" name=\\\"cu\\\" \";\nif ($cu == 0) {\n    $pradio .= \"checked\";\n}\n$pradio .= \">Show All\";\n$pradio .= \"<br /><input type=\\\"radio\\\" value=\\\"1\\\" name=\\\"cu\\\" \";\nif ($cu == 1) {\n    $pradio .= \"checked\";\n}\n$pradio .= \">Convective Only\";\n\n$ar = array(\"DESC\" => \"DESC\", \"ASC\" => \"ASC\");\nif (!array_key_exists($sortdir, $ar)){ $sortdir = \"DESC\"; }\n$sdselect = make_select(\"sortdir\", $sortdir, $ar);\n\n$yselect = yearSelect(2003, $year, \"year\");\n$mselect = monthSelect($month, \"month\");\n$dselect = daySelect($day, \"day\");\n$hselect = hourSelect($hour, \"hour\");\n$miselect = minuteSelect($m, \"minute\", 5);\n\n$achecked = ($isarchive) ? \" CHECKED='CHECKED'\" : \"\";\n$dwwidth = $width + 250;\n$dwheight = $height + 100;\n$content .= <<<EOM\n<div id=\"datawindow\"\n style=\"background: #eee; height: {$dwheight}px; width: {$dwwidth}px; z-index: 2;\">\n<button type=\"button\" data-control=\"layers\" style=\"background: #73FA4D;\">\nLayers</button>\n<button type=\"button\" data-control=\"locations\" style=\"background: #F2FE5A;\">\nLocations</button>\n<button type=\"button\" data-control=\"time\" style=\"background: #FF5EC4;\">\nTime</button>\n<button type=\"button\" data-control=\"options\" style=\"background: #2EA7F2;\">\nOptions</button>\n<input type=\"submit\" value=\"Update Map\">\n<br />\n<div id=\"layers-control\" style=\"width: 450px; background: #73FA4D; display: none; z-index: 3; position: absolute; padding: 5px; margin: 2px; border: 2px solid #000;\">\n\n<strong>Available Layers</strong>\n{$rtlselect}\n{$lselect}\n<input type=\"hidden\" name=\"layers[]\" value=\"blank\">\n\n<div style=\"float: right;\">\n<button type=\"button\" data-control=\"layers\">Save Settings</button>\n<input type=\"submit\" value=\"Save + Update Map\"> </div>\n</div>\n<div id=\"locations-control\" style=\"width: 450px; background: #F2FE5A; display: none; z-index: 3; position: absolute;  padding: 5px; margin: 2px; border: 2px solid #000;\">\n<strong>NWS CWSU/WFO/RFC Office:</strong><br />\n{$wselect}\n\n<br />Selecting a different office will move the display to that office.\n<div style=\"float: right;\">\n<button type=\"button\" data-control=\"locations\">Save Settings</button>\n<input type=\"submit\" value=\"Save + Update Map\"> </div>\n</div>\n<div id=\"time-control\" style=\"width: 450px; background: #FF5EC4; display: none; z-index: 3; position: absolute;  padding: 5px; margin: 2px; border: 2px solid #000;\">\n<p><strong>Select Time Zone</strong><br />\n{$tzselect}\n\n<p><strong>Archive Options</strong><br />\n<input type=\"checkbox\" value=\"yes\" name=\"archive\"{$achecked}>Set Archive Mode</td>\n<br />If you are producing an animation, this date specifies the end date of\nthe loop.</p>\n<table class=\"table table-sm\">\n<tr><th>Year:</th><td>{$yselect}</td></tr>\n<tr><th>Month:</th><td>{$mselect}</td></tr>\n<tr><th>Day:</th><td>{$dselect}</td></tr>\n<tr><th>Time:</th><td>{$hselect}:{$miselect}</td></tr>\n</table>\n\n<p><div style=\"float: right;\">\n<button type=\"button\" data-control=\"time\">Save Settings</button>\n<input type=\"submit\" value=\"Save + Update Map\"> </div>\n</div>\n<div id=\"options-control\" style=\"width: 450px; background: #2EA7F2; display: none; z-index: 3; position: absolute;  padding: 5px; margin: 2px; border: 2px solid #000;\">\n<strong>Warning geography:</strong>\n<br />Short term warnings (SVR,TOR,SMW) have a storm based and county\ngeography associated with them.  You can pick which or both to display:\n<br />{$wgselect}\n\n<p><strong>Map Extent:</strong>\n<br />View Scale: {$zselect}\n\n<br />Image Size:\n{$igselect}\n\n<p><strong>Loop Options</strong>\n<br />{$loselect}\n<br />Loop Frames:\n<input type=\"text\" value=\"{$frames}\" name=\"frames\" size=\"3\">\n<br />Loop Frame Interval:\n{$ivselect}\n\n<p><strong>Text Warning Listing</strong>\n<br />Filter by WFO:\n{$wfselect}\n\n<br />Product Filter:\n{$pradio}\n\n<br />Sort Column:\n{$sselect}\n\n<br />Sort Direction:\n{$sdselect}\n\n<p><strong>Local Storm Reports (LSR)</strong>\n<br />Time window around plot valid time to plot LSRs.\n<br />{$lrselect}\n{$lwselect}\n<div style=\"float: right;\">\n<button type=\"button\" data-control=\"options\">Save Settings</button>\n<input type=\"submit\" value=\"Save + Update Map\"> </div>\n</div>\nEOM;\n\n$heightadd = 0;\n$maptitle = \"IEM NEXRAD Mosaic Base Reflectivity\";\nif ($loop === 1 || $loop === 2) {\n    $t->jsani = true;\n    // Alternative 1, we want javascript looper!\n    $hidden_list = '<ul style=\"display: none;\" id=\"iemjsani_frames\">';\n    $urls = array();\n    for ($i = 0; $i < $frames; $i++) {\n        $imgi = $frames - 1 - $i;\n        include \"../../../../include/warnings_plot.php\";\n        $hidden_list .= sprintf('<li>%s</li>', $url);\n        $urls[] = \"'{$url}'\";\n    }\n    $hidden_list .= \"</ul>\";\n    // Save this animation to memcache for future potential use\n    $memcache = MemcacheSingleton::getInstance();\n    // UNIX time is not unique enough, so we multiply by a random int\n    $fts = time() * random_int(1, 100);\n    $memcache->set(\"/GIS/apps/rview/warnings.phtml?fts={$fts}\", $urls, 86400);\n\n    $content .= <<<EOM\n</form>\n<a href=\"anim_gif.php?fts=$fts\">Download as Animated Gif</a><br />\n<div id=\"iemjsani\" style=\"width: {$width}px; height: {$height}px;\"></div>\n{$hidden_list}\nEOM;\n\n} else {\n    $imgi = 0;\n    require \"../../../../include/warnings_plot.php\";\n    $content .= \"<input type=\\\"hidden\\\" name=\\\"extents\\\" value=\\\"{$x0},{$y0},{$x1},{$y1}\\\">\\n\";\n    $content .= \"<input type=\\\"image\\\" name=\\\"img\\\" src=\\\"\" . $url . \"\\\" border=\\\"1\\\">\\n\";\n    $content .= \"</form>\";\n}\n$content .= <<<EOM\n</div>\nEOM;\n\n$content .= \"<input type=\\\"hidden\\\" name=\\\"extents\\\" value=\\\"{$x0},{$y0},{$x1},{$y1}\\\">\\n\";\n\n// Position legend outside datawindow to prevent layout conflicts\n$content .= <<<EOM\n<!-- Warnings Key positioned outside datawindow -->\n<div class=\"legend-container\">\n<img src=\"static/warnings_legend.png\" alt=\"Warnings Legend\">\n</div>\nEOM;\n\n$connection = iemdb(\"postgis\");\n\n$scols = array(\"wfo\", \"phenomena\", \"cname\", \"expire\", \"sname\", \"issue\", \"updated\", \"status\", \"fcster\", \"eventid\");\nif (!in_array($sortcol, $scols)) {\n    $sortcol = \"issue\";\n}\n\n$wtable = \"warnings_$year\";\n$tsextra = \"CURRENT_TIMESTAMP and issue < CURRENT_TIMESTAMP \";\nif ($isarchive) {\n    $wtable = \"warnings_$year\";\n    $tsextra = \"'\" . date(\"Y-m-d H:i:00+00\", $basets + $tzoff) . \"' and w.issue < '\" . date(\"Y-m-d H:i:00+00\", $basets + $tzoff) . \"'\";\n}\n$cuextra = \"\";\nif ($cu == 1) {\n    $cuextra = \" and w.phenomena IN ('SV','TO','MA') \";\n}\n$query = \"SELECT w.phenomena, u.name as cname, w.expire as expire,\n  w.updated as updated, w.status as status, w.fcster as fcster,\n  w.eventid as eventid, w.significance as significance,\n  w.issue as issue, u.state as sname, ST_xmax(u.geom) as lon0,\n  ST_ymax(u.geom) as lat0, w.wfo as wfo\n  from $wtable w, nws_ugc u\n  WHERE w.expire > $tsextra and w.significance != 'A'\n   and w.ugc = u.ugc $cuextra ORDER by {$sortcol} {$sortdir}\";\npg_query($connection, \"set time zone 'UTC'\");\n$result = pg_query($connection, $query);\n\n$afos = array(\n    \"SV\" => \"Svr Tstorm\",\n    \"TO\" => \"Tornado\",\n    \"FF\" => \"Flash Flood\"\n);\n$content .= \"<div style=\\\"clear: both;\\\">\nWarnings Valid at: <b>\";\n\nif ($tzoff == 0) {\n    if ($isarchive)\n        $content .= date(\"d M Y H:i T\", $basets);\n    else\n        $content .= date(\"d M Y H:i T\");\n} else {\n    if ($isarchive)\n        $content .= date(\"d M Y h:i A \", $basets) . $tz;\n    else\n        $content .= date(\"d M Y h:i A \", time() - $tzoff) . $tz;\n}\n$content .= \"</b>\n<br clear=\\\"all\\\" />\";\n$k = 0;\nif ($tzoff == 0) {\n    $dformat = \"H:i UTC\";\n} else {\n    $dformat = \"h:i A\";\n}\n\n/* Loop thru results from database! */\n$wA = array();\n$iA = array();\n$uA = array();\n$fA = array();\nfor ($i = 0; $row = pg_fetch_assoc($result); $i++) {\n    /* Save the drama! */\n    if ($filter && $row[\"wfo\"] != $site) continue;\n\n    /* key is wfo_state_vtecP_vtecE_vtecSig_expire_status */\n    $key = sprintf(\n        \"%s|%s|%s|%s|%s|%s|%s\",\n        $row[\"wfo\"],\n        $row[\"sname\"],\n        $row[\"phenomena\"],\n        $row[\"eventid\"],\n        $row[\"significance\"],\n        $row[\"expire\"],\n        $row[\"status\"]\n    );\n\n    $iA[$key] = $row[\"issue\"];\n    $uA[$key] = $row[\"updated\"];\n    $fA[$key] = $row[\"fcster\"];\n    if (!array_key_exists($key, $wA)) {\n        $wA[$key] = \"\";\n    }\n    $wA[$key] .= \"<a href=\\\"warnings.phtml?archive=$archive&tz=$tz&cu=$cu&year=$year&month=$month&day=$day&hour=$hour&minute=$m&tzoff=$tzoff&sortdir=$sortdir&loop=$loop&sortcol=$sortcol&c=yes&lon0=\" . $row[\"lon0\"] . \"&lat0=\" . $row[\"lat0\"] . \"&warngeo=$warngeo\\\">\" . $row[\"cname\"] . \"</a>, \";\n}\n\n/* Now we loop thru aggregated warnings */\nforeach ($wA as $key => $val) {\n    $tokens = explode(\"|\", $key);\n    $wfo = $tokens[0];\n    $sname = $tokens[1];\n    $phenomena = $tokens[2];\n    $eventid = $tokens[3];\n    $significance = $tokens[4];\n    $expire = $tokens[5];\n    $status = $tokens[6];\n\n    $warningscat = sprintf(\"/vtec/%s-O-NEW-K%s-%s-%s-%04d.html\",\n        $year, $wfo, $phenomena, $significance, $eventid);\n\n    $k += 1;\n    $issue = strtotime($iA[$key]) - $tzoff;\n    $expire = strtotime($expire) - $tzoff;\n    $updated = strtotime($uA[$key]) - $tzoff;\n    $resetApp = \"$uri_nowfo&tz=$tz&cu=$cu&year=$year&month=$month&day=$day&hour=$hour&minute=$m&archive=$archive&tzoff=$tzoff&site=$wfo\";\n\n    $pp = (array_key_exists($phenomena, $reference[\"vtec_phenomena\"])) ? $reference[\"vtec_phenomena\"][$phenomena]: \"(($phenomena))\";\n    $content .= \"<div class=\\\"wwa-state\\\">$sname</div>\" .\n        \"<div class=\\\"wwa$significance\\\"><span style=\\\"font-size: 14pt;\\\">\" .\n        $pp . \" \" . $reference[\"vtec_significance\"][$significance] .\n        \"</span> (<a href=\\\"$warningscat\\\">View Text</a>) expires \" .\n        date($dformat, $expire) . \" by <a href=\\\"$resetApp\\\">$wfo</a> (\" .\n        $fA[$key] . \")<br />\" . $wA[$key] .\n        \"in $sname  <br /><div class=\\\"vtec\\\">VTEC# $eventid ($status)</div>\" .\n        \"<div class=\\\"issued\\\">Issued: \" . date($dformat, $issue) . \"</div>\" .\n        \"<div class=\\\"updated\\\">Updated: \" .  date($dformat, $updated) . \"</div>&nbsp;</div>\\n\";\n}\nif ($k == 0 && $filter) {\n    $msg = \"<p>No warnings currently valid for \" . $nt->table[$site][\"name\"];\n} else if ($k == 0) {\n    $msg = \"<p>No warnings valid in the United States\";\n}\nif ($k == 0) {\n    $content .= $msg;\n}\n\n$content .= \"<div style=\\\"clear: both;\\\">\";\nif (!$isarchive) {\n    $content .= \"<img src=\\\"/images/gisready.png\\\">Download <a href=\\\"/data/gis/shape/unproj/us/current_ww.zip\\\">GIS shapefile of current warnings</a> and/or <a href=\\\"/data/gis/images/4326/USCOMP/n0r_0.gtif.Z\\\">GeoTiff of NEXRAD base reflectivity</a>.\";\n}\n$content .= <<<EOM\n<p><b>Notes:</b>\n<ul>\n <li>The status column is simply the status of the warning.\n The warning is in 'NEW' state until a SVS is issued, then it goes to 'CON' for continued.</li>\n <li>NEXRAD composite is available since 1 Jan 1997.</li>\n <li>Prior to the NWS adoption of VTEC, warnings were not expired nor canceled.</li>\n <li>SVS updates were added in 2005.</li>\n <li>LSR archive begins 1 Jan 2002.</li>\n <li>Archive of watches begins 1 Jan 1997.</li>\n</ul>\n</div>\nEOM;\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/GIS/apps/rview/warnings_cat.phtml",
    "content": "<?php\n// remove me someday\nrequire_once \"../../../../config/settings.inc.php\";\nrequire_once \"../../../../include/forms.php\";\n\n/* Get some stuff from our request */\n$year = get_int404(\"year\", 2008);\n$wfo = isset($_GET[\"wfo\"]) ? substr(xssafe($_GET[\"wfo\"]),0,3) : \"DMX\";\n$eventid = get_int404(\"eventid\", 13);\n$phenomena = isset($_GET[\"phenomena\"]) ? substr(xssafe($_GET[\"phenomena\"]),0,2) : \"TO\";\n$significance = isset($_GET[\"significance\"]) ? substr(xssafe($_GET[\"significance\"]),0,1) : \"W\";\n\n/* Generate URL for forwarding */\n$uri = sprintf(\"/vtec/?wfo=%s&year=%s&phenomena=%s&significance=%s&eventid=%04d\",\n  $wfo, $year, $phenomena, $significance, $eventid);\n\nheader(\"Location: $uri\");\n"
  },
  {
    "path": "htdocs/GIS/apps/rview/watch.phtml",
    "content": "<?php\nrequire_once \"../../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 72);\nputenv(\"TZ=UTC\");\nrequire_once \"../../../../include/myview.php\";\nrequire_once \"../../../../include/forms.php\";\nrequire_once \"../../../../include/database.inc.php\";\n\n/* Needed GET variables */\n$year = get_int404(\"year\", date(\"Y\"));\n$num = get_int404(\"num\", 1);\n\n$t = new MyView();\n$t->title = \"SPC $year Convective Watch $num\";\n\nrequire_once \"../../../../include/rview_lib.php\";\n$db = iemdb(\"postgis\");\npg_query($db, \"SET TIME ZONE 'UTC'\");\n\n$stname = iem_pg_prepare($db, \"SELECT *, ST_xmin(geom) as x0,\n      ST_xmax(geom) as x1, ST_ymin(geom) as y0, ST_ymax(geom) as y1,\n      ST_askml(geom) as kml,\n      ST_asGeoJSON(geom) as geojson from watches\n      where extract(year from issued) = $1 and num = $2\");\n\n$ERROR = \"\";\n\n\n$rs = pg_execute($db, $stname, array($year, $num));\nif (pg_num_rows($rs) == 0) {\n    $t->content = \"<h3>Sorry, watch number $num for year $year was not found</h3>\";\n    $t->render('single.phtml');\n    die();\n}\n\n$row = pg_fetch_assoc($rs);\n\n$textlinks = \"\";\nif (!is_null($row[\"product_id_saw\"])) {\n    $textlinks .= sprintf(\n        '<tr><th>SAW Issuance</th><td><a href=\"/p.php?pid=%s\">%s</a></td></tr>',\n        $row[\"product_id_saw\"],\n        $row[\"product_id_saw\"],\n    );\n}\nif (!is_null($row[\"product_id_sel\"])) {\n    $textlinks .= sprintf(\n        '<tr><th>SEL Issuance</th><td><a href=\"/p.php?pid=%s\">%s</a></td></tr>',\n        $row[\"product_id_sel\"],\n        $row[\"product_id_sel\"],\n    );\n}\nif (!is_null($row[\"product_id_sel\"])) {\n    $textlinks .= sprintf(\n        '<tr><th>Watch Probs</th><td><a href=\"/p.php?pid=%s\">%s</a></td></tr>',\n        $row[\"product_id_wwp\"],\n        $row[\"product_id_wwp\"],\n    );\n}\n\n$ts = strtotime($row[\"issued\"]);\n$expires = strtotime($row[\"expired\"]);\n$d = date(\"d F Y H:i\",  $ts);\n\n$maptitle = htmlentities(\"SPC Watch number $num during $year\");\n$margin = 0.5;\n$url = sprintf(\"/GIS/radmap.php?title=%s&layers[]=uscounties&layers[]=nexrad&ts=%s&height=480&width=640&layers[]=watches&layers[]=watch_by_county&sector=conus&bbox=%s,%s,%s,%s\", $maptitle, gmdate('YmdHi', $ts), $row[\"x0\"] - $margin, $row[\"y0\"] - $margin, $row[\"x1\"] + $margin, $row[\"y1\"] + $margin);\n\n/*____________________________ Plot LSRs */\nif ($expires < time() && $year > 2002) {\n    $lurl = sprintf(\"/GIS/radmap.php?layers[]=lsrs&ts=%s&ts2=%s&height=480&width=640&layers[]=watches&sector=conus&bbox=%s,%s,%s,%s\", gmdate('YmdHi', $ts), gmdate('YmdHi', $expires), $row[\"x0\"] - $margin, $row[\"y0\"] - $margin, $row[\"x1\"] + $margin, $row[\"y1\"] + $margin);\n}\n\n$ourl = sprintf(\"/GIS/radmap.php?layers[]=nexrad&ts=%s&height=480&width=640&layers[]=watches&sector=conus\", gmdate('YmdHi', $ts));\n\n$prevlink = \"\";\nif ($num > 1) {\n    $prevlink = \"<a href=\\\"watch.phtml?year=$year&num=\" . ($num - 1) . \"\\\">Previous Watch</a>\";\n}\n$nextlink = \"<a href=\\\"watch.phtml?year=$year&num=\" . ($num + 1) . \"\\\">Next Watch</a>\";\n\n$yselect = yearSelect(1997, $year);\n\n$issue = substr($row[\"issued\"], 0, 16);\n$expire = substr($row[\"expired\"], 0, 16);\n\n$spclink = sprintf(\n    \"https://www.spc.noaa.gov/products/watch/%s/ww%04d.html\",\n    $year,\n    $num\n);\n\n$woulink = \"\";\n/* Include a link to download WOU outlines... */\nif (date(\"Y\", $ts) > 2005) {\n    $woulink .= \"<tr><th>WOU Outline Shapefiles</th><td>\";\n    $begints = $ts + ((60 - intval(date(\"i\", $ts))) * 60);\n    $endts = $expires - (intval(date(\"i\", $expires)) * 60);\n    while ($begints <= $endts) {\n        $woulink .= sprintf(\n            \"<a href=\\\"/cgi-bin/request/gis/watch_by_county.py?year=%s&month=%s&day=%s&hour=%s&minute=00&etn=%s\\\">%sZ</a>, \",\n            gmdate(\"Y\", $begints),\n            gmdate(\"m\", $begints),\n            gmdate(\"d\", $begints),\n            gmdate(\"H\", $begints),\n            $num,\n            gmdate(\"H\", $begints)\n        );\n        $begints += 3600;\n    }\n}\n\n$ltext = \"\";\nif (isset($lurl)) {\n    $ltext .= \"<h3>Local Storm Reports:</h3><img src=\\\"$lurl\\\">\";\n}\n$kml = htmlentities($row[\"kml\"]);\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/current/severe.phtml\">Severe Wx Products</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Storm Prediction Center Convective Watch Archive</li>\n  </ol>\n</nav>\n\n<p>This application presents a browsable archive\nof <a href=\"https://www.spc.noaa.gov\">SPC</a> issued tornado and\nsevere thunderstorm watches. Each sequential\nwatch is assigned a numeric ID, which uniquely identifies a watch for each year.\nUp until 2006, the polygon was the valid area of the watch.  Since then, the\nvalid area is issued by county and marine zone.\n</p>\n\n<p><strong>Related Links:</strong>\n<a class=\"btn btn-primary\" href=\"{$spclink}\">View This Watch on SPC Website</a>\n&nbsp;\n<a class=\"btn btn-primary\" href=\"/request/gis/spc_watch.phtml\">Download Watches</a>\n&nbsp;\n<a class=\"btn btn-primary\" href=\"/nws/pds_watches.php\">List PDS Watches</a>\n</p>\n\n\n<form method=\"GET\" action=\"watch.phtml\">\n\n<div class=\"row\">\n <div class=\"col-md-7\">\n<strong>All active watches at issuance:</strong>\n<img src=\"{$ourl}\" class=\"img img-fluid\">\n\n</div><div class=\"col-md-5\">\n\n<p>\n{$prevlink} &nbsp; -- &nbsp; {$nextlink}\n\n<table class=\"table table-striped\">\n<tr><th>Type:</th><td>{$row[\"type\"]}</td></tr>\n<tr><th>Watch #:</th><td>{$yselect}\n<input name=\"num\" type=\"text\" size=\"5\" value=\"{$row[\"num\"]}\">\n<input type=\"submit\" value=\"GO!\" class=\"btn btn-primary\"></td></tr>\n\n{$textlinks}\n<tr><th>Issue:</th><td>{$issue} UTC</td></tr>\n<tr><th>Expired/Cancelled:</th><td>{$expire} UTC</td></tr>\n{$woulink}\n</table>\n\n\n<p><strong>Archive Status:</strong>\n<ul>\n  <li>Watch archive should be complete back to 1997.</li>\n  <li>RADAR composite is mostly complete back to 1997.</li>\n  <li>Local Storm Reports are available after 2002.</li>\n</ul>\n\n</div></div>\n\n</form>\n\n<h3>Initial Watch Box and Watch By County Outline</h3>\n<br />{$ERROR}\n<img src=\"{$url}\">\n\n{$ltext}\n\n<p><strong>Watch Polygon (KML):</strong><br />\n<pre>{$kml}</pre>\n\n<p><strong>Watch Polygon (GeoJSON):</strong><br />\n<pre>{$row[\"geojson\"]}</pre>\n\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/GIS/awips211.aux.xml",
    "content": "<PAMDataset>\n  <SRS>PROJCS[&quot;North_America_Lambert_Conformal_Conic&quot;,GEOGCS[&quot;GCS_North_American_1983&quot;,DATUM[&quot;North_American_Datum_1983&quot;,SPHEROID[&quot;GRS_1980&quot;,6378137.0,298.257222101]],PRIMEM[&quot;Greenwich&quot;,0.0],UNIT[&quot;Degree&quot;,0.0174532925199433]],PROJECTION[&quot;Lambert_Conformal_Conic_2SP&quot;],PARAMETER[&quot;False_Easting&quot;,0.0],PARAMETER[&quot;False_Northing&quot;,0.0],PARAMETER[&quot;Central_Meridian&quot;,-95.0],PARAMETER[&quot;Standard_Parallel_1&quot;,25.0],PARAMETER[&quot;Standard_Parallel_2&quot;,25.0],PARAMETER[&quot;Latitude_Of_Origin&quot;,25.0],UNIT[&quot;Meter&quot;,1.0]]</SRS>\n</PAMDataset>\n"
  },
  {
    "path": "htdocs/GIS/awips211.prj",
    "content": "PROJCS[\"North_America_Lambert_Conformal_Conic\",GEOGCS[\"GCS_North_American_1983\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS_1980\",6378137.0,298.257222101]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",-95.0],PARAMETER[\"Standard_Parallel_1\",25.0],PARAMETER[\"Standard_Parallel_2\",25.0],PARAMETER[\"Latitude_Of_Origin\",25.0],UNIT[\"Meter\",1.0]]\n"
  },
  {
    "path": "htdocs/GIS/goes.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"GOES GIS Products\";\n\n$adir = date(\"Y/m/d\");\n\n$t->content = <<<EOM\n<h3>GOES Satellite Imagery for GIS</h3>\n\n<p>The IEM has a long history processing the GOES Satellite information into\nformats and services appropriate for GIS.  This processing was based on the\nGINI format of products provided by NOAA.  The IEM implemented a number of\nservices and archives based on this format.</p>\n\n<p>With the advent of GOES-R and GOES-S, this GINI format was discontinued and\nthe IEM <a href=\"/onsite/news.phtml?id=1369\">pulled the plug</a> on the various\nGOES East services back in 2018 and now in late 2019 GOES West.</p>\n\n<p>A renewed effort is now being made to process the new GOES-R and GOES-S data\ninto similar formats and services as before.  There is not a one-to-one match\nhere due to many reasons.</p>\n\n<p>The source of our GOES data comes via <a href=\"https://www.unidata.ucar.edu/data/nimage.html\">Unidata NIMAGE</a>\nproducts, which nicely merge the netCDF tiles into consistent products. These\nproducts use a geostationary satellite projection that the IEM attempts to\nnatively store and use within the various services.</p>\n\n<div class=\"row\">\n <div class=\"col-md-6\">\n\n <h3>Satellite native projections</h3>\n<img src=\"goes_c13.png\" class=\"img img-fluid\" />\n <br /><a href=\"/data/gis/images/GOES/\">current imagery folder</a>\n </div>\n\n<div class=\"col-md-6\">\n\n <h3>Ready for Google-Maps</h3>\n <img src=\"goes-gm.png\" class=\"img img-fluid\" />\n <br /><a href=\"/ogc/\">Tile Map Service</a>\n <br /><a href=\"/ogc/openlayers_example.html\">OpenLayers Example</a>\n\n </div>\n</div>\n\n<h4>Changes</h4>\n\n<ul>\n<li><strong>30 Aug 2024:</strong> It was discovered that the various Hawaii\nservices were no longer updating.  Turns out that the input source was\n<a href=\"https://www.weather.gov/media/notification/pdf2/scn22-94_geo_spectral_coverage_goes-east-west_aab.pdf\">discontinued by NOAA</a>.\nThe GOES West services cover Hawaii now and should be used instead.</li>\n<li><strong>1 December 2019:</strong> GOES West products have stopped and everything\nhas been migrated to new workflows based on GOES-R (GOES-16) and GOES-S (GOES-17).</li>\n\n<li><strong>30 January 2018:</strong> GOES East products and services have been removed</li>\n\n<li><b>18 December 2017:</b> The GOES \"East\" satellite has been assigned now to\nthe recently launched GOES R/16 satelitte. Sadly, due to format changes and the\namount of CPU processing and disk storage needed, the IEM can likely no longer process\nthese datasets.  The old GOES \"East\" continues to transmit until the first week or\nso of January.</li>\n\n<li><b>24 November 2014:</b> The Infrared Imagery is now color enhanced by\ndefault.  The previous default grayscale was not very useful.  You can find\na color ramp <a href=\"legends/ir_ramp.png\">here</a>.</li>\n</ul>\n\n<h3>OGC Web Map Service</h3>\n\n<p><strong>GOES West infrared imagery</strong>\n<br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/goes/west_ir.cgi?</code>\n\n<p><strong>GOES West Alaska infrared imagery</strong>\n<br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/goes/alaska_ir.cgi?</code>\n\n<hr />\n\n<p><strong>GOES West visible imagery</strong>\n<br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/goes/west_vis.cgi?</code>\n\n<p><strong>GOES West Alaska visible imagery</strong>\n<br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/goes/alaska_vis.cgi?</code>\n\n<hr>\n\n<p><strong>GOES West water vapor imagery</strong>\n<br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/goes/west_wv.cgi?</code>\n\n<p><strong>GOES West Alaska water vapor imagery</strong>\n<br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/goes/alaska_wv.cgi?</code>\n\n<p><b>Note:</b>  To get the WMS capabilities, you need to add\n<br /><code>VER=1.1.1&amp;SERVICE=WMS&amp;REQUEST=GetCapabilities</code>\n<br />to the URIs above.  Your WMS application may require it.\n\n<h3>Color Ramps Used</h3>\n<div class=\"row\">\n<div class=\"col-md-6\">\n<p><strong>Channel 1</strong>\n<br /><img src=\"/images/goes_c01.png\" alt=\"Channel 1 Color Ramp\"></p>\n<p><strong>Channel 2</strong>\n<br /><img src=\"/images/goes_c02.png\" alt=\"Channel 2 Color Ramp\"></p>\n<p><strong>Channel 3</strong>\n<br /><img src=\"/images/goes_c03.png\" alt=\"Channel 3 Color Ramp\"></p>\n<p><strong>Channel 4</strong>\n<br /><img src=\"/images/goes_c04.png\" alt=\"Channel 4 Color Ramp\"></p>\n<p><strong>Channel 5</strong>\n<br /><img src=\"/images/goes_c05.png\" alt=\"Channel 5 Color Ramp\"></p>\n<p><strong>Channel 6</strong>\n<br /><img src=\"/images/goes_c06.png\" alt=\"Channel 6 Color Ramp\"></p>\n<p><strong>Channel 7</strong>\n<br /><img src=\"/images/goes_c07.png\" alt=\"Channel 7 Color Ramp\"></p>\n<p><strong>Channel 8</strong>\n<br /><img src=\"/images/goes_c08.png\" alt=\"Channel 8 Color Ramp\"></p>\n</div>\n<div class=\"col-md-6\">\n<p><strong>Channel 9</strong>\n<br /><img src=\"/images/goes_c09.png\" alt=\"Channel 9 Color Ramp\"></p>\n<p><strong>Channel 10</strong>\n<br /><img src=\"/images/goes_c10.png\" alt=\"Channel 10 Color Ramp\"></p>\n<p><strong>Channel 11</strong>\n<br /><img src=\"/images/goes_c11.png\" alt=\"Channel 11 Color Ramp\"></p>\n<p><strong>Channel 12</strong>\n<br /><img src=\"/images/goes_c12.png\" alt=\"Channel 12 Color Ramp\"></p>\n<p><strong>Channel 13</strong>\n<br /><img src=\"/images/goes_c13.png\" alt=\"Channel 13 Color Ramp\"></p>\n<p><strong>Channel 14</strong>\n<br /><img src=\"/images/goes_c14.png\" alt=\"Channel 14 Color Ramp\"></p>\n<p><strong>Channel 15</strong>\n<br /><img src=\"/images/goes_c15.png\" alt=\"Channel 15 Color Ramp\"></p>\n<p><strong>Channel 16</strong>\n<br /><img src=\"/images/goes_c16.png\" alt=\"Channel 16 Color Ramp\"></p>\n\n</div>\n</div>\n\n<h3>Archive</h3>\n\n<p>Since 20 Dec 2005, the IEM has archived 4km composites of East/West imagery.\n<p>Since 8 March 2009, water vapor channel was added to the archive as well.\n<p>Since 21 June 2011, the IEM started archiving GOES East and West vis,ir, and water vapor\nimagery in PNG format on the AWIPS 211 projection.\n<p>Since 14 March 2012, the IEM started archiving all of the GINI processed imagery.\n<p>22 March 2012, removed the confusing filenames of including the GOES satellite\nidentifier in the filename.  This causes problems when the satellites change from\neast to west.\n\n<div>\n<strong>Today's archive of imagery</strong>\n<br /><code><a href=\"{$EXTERNAL_BASEURL}/archive/data/{$adir}/GIS/sat/\">{$EXTERNAL_BASEURL}/archive/data/{$adir}/GIS/sat/</a></code>\n<br/>The URL pattern contains the year, month, and day.  The datafiles have\ntimestamps in UTC.\n</div>\n\n<h3>Online Applications</h3>\n<ul>\n\n<li>The <a href=\"/GIS/apps/rview/warnings.phtml\">RADAR &amp; NWS Warnings</a> app provides a neat web mapping interface combining\nradar and satellite data along with NWS warning products.</li>\n\n</ul>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/GIS/index.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"GIS Mainpage\";\n$t->content = <<<EOM\n\n<h3>IEM GIS Information</h3>\n\n<p>Geographic Information System (GIS) is a system for manipulating spatially \nreferenced data.  Since the IEM contains many spatially referenced datasets, it would only seem\nnatural to integrate IEM data into GIS applications.<p>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n\n<h3>Presentations & Docs:</h3>\n<ul>\n <li><i>28 Jul 2003:</i> <a href=\"/docs/radmapserver/\">NEXRAD + Mapserver HOWTO</a>\n<br />A HowTo on generating NEXRAD composite images with GEMPAK and \nserving them out with Mapserver.</li>\n <li><a href=\"/present/\">IEM Presentation Archive</a>\n<br />The IEM has given a number of GIS related talks.  You can browse an\narchive of presentations.</li>\n <li><a href=\"rasters.php\">IEM RASTERs Lookup Tables</a>\n<br />Metadata on how you can convert IEM produced RASTERs into actual\n        values!</li>\n</ul>\n\n\n<p><h3>Web Applications:</h3>\n<ul>\n    <li><a href=\"/GIS/apps/rview/warnings.phtml\">NEXRAD w/ warnings</a></li>\n    <li><a href=\"/GIS/apps/coop/\">COOP Daily Extremes and Averages</a></li>\n    <li><a href=\"/my/current.php\">Dynamic Plotting</a></li>\n    <li><a href=\"/sites/locate.php\">IEM Site Locator</a></li>\n    <li><a href=\"rad-by-year-fe.phtml\">NEXRAD Mosaic by Year</a>\n    <br />Displays NEXRAD mosaicked base reflectivity for a user specified\n    sector for the same time each year going back to 1995.</li>\n</ul>\n\n\n<p><h3>Links:</h3>\n<ul>\n <li><a href=\"http://droughtmonitor.unl.edu/MapsAndData.aspx\">US Drought Monitor GIS data</a>\n  <br />Download current and historical drought monitor products in GIS formats</li>\n <li><a href=\"http://www.ncdc.noaa.gov/swdi/\">NCDC Severe Weather Data Inventory</a>\n <br />A tremendous website with lots of hard to find data!</li>\n <li><a href=\"http://www.spc.noaa.gov/gis/svrgis/\">GIS Severe Weather reports</a>\n <br />Archive of NCDC provided storm reports (1950-)!</li>\n <li><a href=\"https://gis.ncdc.noaa.gov/map/viewer/#app=cdo\">NCDC GIS Portal</a><br />National Climate Data Center GIS goodies</li>\n\n <li>NCEI's <a href=\"https://www.ncdc.noaa.gov/data-access/radar-data/radar-display-tools\">Display and Conversion Tools</a>.</li>\n\n <li><a href=\"http://wdssii.nssl.noaa.gov/?r=products\">NSSL Google Earth Data</a>\n  <br />Weather data integrated into Google Earth!</li>\n <li><a href=\"http://www.ocs.orst.edu/prism/products/matrix.phtml\">Oregon State PRISM</a>\n    <br />These folks provide nationwide GIS ready datasets of climate data.  Their site is outstanding!</li>\n  \n  <li><a href=\"http://www.prism.oregonstate.edu/\">USDA PRISM</a> data page (GIS Climate Data).</li>\n <li>Iowa <a href=\"http://www.igsb.uiowa.edu/nrgis/gishome.htm\">Natural Resources Geographic Information System (NRGIS)</a></li>\n <li>NOAA's Ken Waters work with <a href=\"http://www.weather.gov/regsci/gis/\">GIS and NWS warnings</a><br />They have some historical GIS datasets of warnings too.</li>\n <li><a href=\"http://pnwpest.org/US/index.html\">Index to Degree-Day Data</a></li>\n <li><a href=\"http://map.nasa.gov/MAP06/\">NASA MAP'06 program</a>\n  <br />Has some GIS satellite data.</li>\n</ul>\n\n</div>\n<div class=\"col-md-6\">\n\n<img src=\"/images/gisready.png\">You may have noticed this image appearing on\nIEM webpages.  It signifies that the data link is ready for most GIS systems.\n\n<p><h3>IEM GIS Projects</h3>\n<ul>\n <li><a href=\"/GIS/tiff/\">Grib to GeoTIFF Service</a>\n <br />Provides various archived grib files in a GeoTIFF format.</li>\n <li><a href=\"goes.phtml\">GOES Satellite GIS Products</a>\n  <br />Current and archived GIS products from NOAA's GOES satellites</li>\n <li><a href=\"/ogc/\">Open GIS Web Services</a>\n  <br />A listing of OGC web services offered by the IEM</li>\n <li><a href=\"/climodat/index.phtml#ks\">Iowa Climate Summaries</a>\n  <br />GIS ready data files of monthly and yearly climate summaries dating\nback to 1951.</li>\n    <li><a href=\"/GIS/apps/iem/freeze.phtml\">IEM Freeze</a>\n    <br />Web mapping application to support winter weather nowcasting.</li>\n    <li><a href=\"/GIS/radview.phtml\">IEM Radview</a>\n    <br />Our effort to provide NEXRAD information in realtime to GIS systems.</li>\n <li><a href=\"/rainfall/\">IEM Rainfall</a>\n  <br />Gridded rainfall estimates in GIS formats dating back to 2002 for Iowa.</li>\n <li><a href=\"/roads/\">IEM Iowa Road Conditions</a>\n  <br />Current and archived Iowa road conditions.</li>\n <li><a href=\"/cow/\">IEM Cow</a>\n  <br />Unofficial NWS polygon warning verification.</li>\n <li><a href=\"/docs/nexrad_mosaic/\">NEXRAD Mosaic on the IEM</a>\n  <br />Information about the NEXRAD Mosiac that the IEM generates.</li>\n</ul>\n\n<p><h3>GIS Shapefiles:</h3>\n<ul>\n<li><a href=\"/request/gis/spc_mcd.phtml\"><i class=\"bi bi-download\" aria-hidden=\"true\"></i>\nSPC Mesoscale Discussion Shapefile Download</a></li>\n\n<li><a href=\"/request/gis/outlooks.phtml\"><i class=\"bi bi-download\" aria-hidden=\"true\"></i>\n SPC/WPC Outlook Shapefile Download</a></li>\n\n<li><a href=\"/request/gis/spc_watch.phtml\"><i class=\"bi bi-download\" aria-hidden=\"true\"></i>\n SPC Watch Polygon Shapefile Download</a></li>\n\n<li>Past 24 hours of Storm Reports\n <br /><a href=\"/data/gis/shape/4326/us/lsr_24hour.zip\">ESRI Shapefile</a>, \n <a href=\"/data/gis/shape/4326/us/lsr_24hour.csv\">Comma Delimited</a>,\n <a href=\"/data/gis/shape/4326/us/lsr_24hour.geojson\">GeoJSON</a>\n <br />The IEM parses the realtime feed of NWS Local Storm Reports.  Every\n 5 minutes, a process collects up the last 24 hours worth of reports and\n dumps them to the above files.</li>\n \n <li><a href=\"/request/gis/lsrs.phtml\">Archived Local Storm Reports</a>\n <br />Generate a shapefile of LSRs for a period of your choice dating back \n  to 2003!</li>\n <li><a href=\"/data/gis/shape/4326/us/current_ww.zip\">Current NWS Warnings</a>\n <br />A shapefile of active county based and polygon based weather warnings. \nThis file is updated every minute.</li>\n <li><a href=\"/request/gis/watchwarn.phtml\">Archived NWS Warnings</a>\n <br />Generate a shapefile of weather warnings for a time period of your\n choice!</li>\n\n <li><a href=\"/data/gis/shape/4326/us/current_nexattr.zip\">Current NEXRAD Storm Attributes</a>\n  <br />Point shapefile generated every minute containing a summary of\n   NEXRAD storm attributes.</li>\n <li><a href=\"/request/gis/nexrad_storm_attrs.php\">Archived NEXRAD Storm Attributes</a>\n <br />Generate a shapefile of storm attributes for a RADAR and time period\n of your choice from the archive.</li>\n <li><a href=\"/data/gis/shape/4326/iem/coopobs.zip\">NWS COOP Observations</a>\n   <br>Today's climate reports</li>\n <li><a href=\"/request/gis/sps.phtml\">Special Weather Statement (SPS) Polygons</a><br />\n Shapefile download of SPS polygons and IBW tags.</li>\n <li><a href=\"/data/gis/\">Browse</a> GIS data stored on the IEM website.</li>\n\n<li><a href=\"/request/gis/wpc_mpd.phtml\"><i class=\"bi bi-download\" aria-hidden=\"true\"></i>\nWPC Precip Discussion MPD Polygon Shapefile Download</a></li>\n\n </ul>\n\n</div></div>\nEOM;\n$t->render(\"single.phtml\");\n"
  },
  {
    "path": "htdocs/GIS/isu_021120.phtml",
    "content": "<?php \nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"ISU GIS Day 2002\";\n\n$t->content = <<<EOM\n<h3>Iowa State GIS Day</h3>\n\n<div class=\"alert alert-danger\">Sorry, some of the links on this page are no\n        longer functioning.</div>\n\n<p>On 20 Nov 2002, the IEM was privileged to be invitied as the\nkeynote speaker for the <a href=\"http://www.gis.iastate.edu/gisday02/home.htm\">Iowa State GIS Day</a>.\n  This page provides a link to the \n<a href=\"/present/021120_isugis/\">presentation</a> and URLS for applications referenced in the talk.</p>\n\n\n<p><b>>Example 1. Precipitation Analysis (discontinued)</b>\n<br>Web mapping application that combines NEXRAD precipitation estimates with\nobservations in near real-time.</p>\n\n<p><b><a href=\"/cgi-bin/mapserv/mapserv?map=/opt/iem/htdocs/GIS/apps/iatorn/iatorn.map\">Example 2</a>  Iowa Tornado Database</b>\n<br>Based on an Iowa Tornado reports archive, this web application allows you\nthe ability to dynamically plot and query tornado reports.</p>\n\n<p><b>Example 3 NWS Archive Warnings with National Composite NEXRAD</b>\n<br>NWS severe bulletins are ingested into the IEM spatial database in real-time\nand combined with a recent national RADAR mosiac.</p>\n\n<p><b>Example 4 3-4 June 2002 Flooding (discontinued)</b>\n<br>This application was quickly produced last summer in response to flooding in Eastern Iowa on\nthe dates of 3-4 June 2002.</p>\n\n<p><b><a href=\"/my/current.php\">Example 5</a> Dynamic Variable Plotting</b>\n<br>With the IEM Currents page, you can dynamically select stations you would \nlike to plot and the variable of your choice.  The link may take you to a blank\npage, if so, you will want to select a data network and add stations to your\nfavorites list.</p>\n\n<p><b><a href=\"/GIS/apps/pcs/\">Example 6</a> Archived NEXRAD vs ASOS/AWOS precipitation comparisons</b>\n<br>This application allows dynamic comparisons between historical hourly rainfall\nestimates from the NEXRAD and observations from the AWOS/ASOS.  Eventually, this \napplication will work in real-time and archived mode and with other networks.</p>\n\n<p><b><a href=\"/sites/locate.php\">Example 7</a> IEM Site Location Maps</b>\n<br>This slick application combines topography, photography and other layers\nwith an IEM site location to produce a zoomable plot of a site's location. The\nmaps are <b>fascinating</b> to look at.  Once you follow the link, you will\nwant to select a station and then \"Location Maps\".</p>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/GIS/maps/pyims.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<IMSFACADE>\n  <SERVICES>\n    <SERVICE name=\"US RADAR (4326)\">\n      <PROPERTIES imagetype=\"PNG8\" mapfile=\"/opt/iem/htdocs/GIS/maps/usradar.map\"/>\n    </SERVICE>\n  </SERVICES>\n</IMSFACADE>\n"
  },
  {
    "path": "htdocs/GIS/model.phtml",
    "content": "<?php \nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n\ndefine(\"IEM_APPID\", 67);\n$t->title = \"HRRR Reflectivity Information\";\n\n$d = date(\"Y/m/d\");\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"radview.phtml\">IEM RadView Mainpage</a></li>\n <li class=\"active\">HRRR Reflectivity</li>\n</ol>\n\n<h3>IEM Provided NCEP HRRR Forecated Simulated Reflectivity</h3>\n\n<div style=\"width: 310px; float: right; border: 1px solid #000; padding: 5px; margin: 5px;\">\n<a href=\"/data/gis/images/4326/hrrr/refd_0060.png\">\n<img width=\"300\" src=\"/data/gis/images/4326/hrrr/refd_0060.png\">\n</a>\n<br />Latest HRRR 1 Hour Forecast (<code>REFD</code>)\n<a href=\"/data/gis/images/4326/hrrr/refp_0060.png\">\n<img width=\"300\" src=\"/data/gis/images/4326/hrrr/refp_0060.png\">\n</a>\n<br />Latest HRRR 1 Hour Forecast with Precipitation Type (<code>REFP</code>)\n</div>\n\n\n<p>Since 2003, the IEM has been providing GIS web services providing NEXRAD composite and\nsingle site products. A common feature request made is for forecasted reflectivity to be \nmade as well.  Thanks to some simulated reflectivity products from the NCEP HRRR Model, this\nis now possible.</p>\n\n<h3>Quick Overview</h3>\n<ul>\n <li><strong>Archive Begins:</strong> 14 Jul 2017 00 UTC</li>\n <li><strong>Imagery Resolution:</strong> 0.02x0.02 degree lat/lon</li>\n <li><strong>Current raw RASTERs:</strong> <a href=\"/data/gis/images/4326/hrrr/\">here</a>, JSON metadata files are available for each file there</li>\n <li><strong>Archived raw RASTERs:</strong> <a href=\"/archive/data/2017/07/14/GIS/hrrr/00/\">here</a> based on UTC timestamps</li>\n</ul>\n\n<h3>Changelog</h3>\n<ul>\n<li><strong>25 Nov 2024:</strong> Initial support for HRRR Reflectivity with\na precipitation type color ramp applied. The hope is to backfill the archive\nwith this eventually.</li>\n</ul>\n\n<h3>Tile Map Service (TMS)</h3>\n\n<p>You can call the TMS with either model initialization time explicit set or latest run\nprocessed by the IEM.  For the explicit time set, the URL form looks like so:\n<code>{$EXTERNAL_BASEURL}/cache/tile.py/1.0.0/hrrr::REFD-F0000-201707140100/6/15/24.png</code>\n<br />\n<code>{$EXTERNAL_BASEURL}/cache/tile.py/1.0.0/hrrr::REFP-F0000-201707140100/6/15/24.png</code>\n<br />\nThe important parts here are <i>hrrr::REFD-F0000-201707140100</i> which equates to HRRR model reflectivity\nfor forecast <strong>minute</strong> 0000 (needs to be 4 characters) for model initialization on 14 July 2017\nat 01 UTC.  Whew, that's a mouthful!  HRRR forecasts are available every 15 minutes between initialization\nand forecast hour 18.  <strong>Again, this F**** value is in minutes, not hours!</strong></p>\n\n<p>You can also specify <i>0</i> as the model initialization time, of which the last run processed by the\nIEM will be picked.  For example:\n<code>{$EXTERNAL_BASEURL}/cache/tile.py/1.0.0/hrrr::REFD-F0000-0/6/15/24.png</code>\n<br /><code>{$EXTERNAL_BASEURL}/cache/tile.py/1.0.0/hrrr::REFP-F0000-0/6/15/24.png</code></p>\n\n<h3>Suggested TMS Usage for Realtime</h3>\n\n<p>To avoid any caching ugliness on the IEM's end, it is always best to use the explicit TMS URLs\nthat specify the HRRR model initialization time.  A simple query you can do to figure out the\nlatest run is to fetch the 18-hour (1080 minute) forecast JSON metadata file:\n\n<br /><a href=\"/data/gis/images/4326/hrrr/refd_1080.json\">/data/gis/images/4326/hrrr/refd_1080.json</a>\n\n<p>The <code>model_init_utc</code> value in that file would be the latest run available.</p>\n\n<h3>Web Map Service (WMS)</h3>\n\n<p>There is also a standard WMS located at:\n<code>{$EXTERNAL_BASEURL}/cgi-bin/wms/hrrr/refd.cgi</code>\n<br />The individual forecast hours have individual LAYERS defined like so\n<code>refd_0000</code> where 0000 is the forecast time in <strong>minutes</strong></p>\n\n<code>{$EXTERNAL_BASEURL}/cgi-bin/wms/hrrr/refp.cgi</code>\n<br />The individual forecast hours have individual LAYERS defined like so\n<code>refp_0000</code> where 0000 is the forecast time in <strong>minutes</strong></p>\n\n<p>Here's a legend for the <code>REFP</code> product:\n<br /><img src=\"legends/REFP.png\" alt=\"HRRR Reflectivity with Precip Type\"/></p>\n\n<h3>FAQ</h3>\n\n<ol>\n<li>How soon is the latest run made available?\n<br />At :40 minutes after the hour, a process starts that looks for the HRRR run initialized for\nthe previous hour.  This processing takes about 10 minutes, so at for example 01:50 UTC, the 00 UTC\nrun should be available.</li>\n\n<li>What color index to reflectivity value scale is used for the <code>REFD</code> RASTERS?\n<br />These images should match the\n<a href=\"/GIS/rasters.php?rid=2\">IEM N0Q Composites</a>.</li>\n\n<li>What color index to reflectivity value scale is used for the <code>REFP</code> RASTERS?\n<br />These images use a 22-color per precipitation type scale. This RASTER\nis not intended to be used as data within a GIS.</li>\n\n<li>What exact dataset is being shown here?\n<br />This is the production NCEP HRRR \"REFD\" variable, \"1000 m above ground\"\nsimulated RADAR reflectivity.  The <code>REFP</code> applies a color ramp to\nthe reflectivity to indicate if it is rain, snow, freezing rain, and finally\nice.</li> \n\n<li>Am I free to use this service for lucrative commercial interests?\n<br />You betcha, but don't sue us and also send us <a href=\"/info/contacts.php\">feedback</a> on how\nthings can be improved for better usage.</li>\n</ol>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/GIS/rad-by-year-fe.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\ndefine(\"IEM_APPID\", 53);\n\n$day = get_int404(\"day\", date(\"d\"));\n$month = get_int404(\"month\", date(\"m\"));\n$hour = get_int404(\"hour\", date(\"H\"));\n$minute = get_int404(\"minute\", 0);\n$sz = isset($_GET[\"sz\"]) ? floatval($_GET[\"sz\"]) : 2.5;\n\n/* Do areal extents */\n$map_x = get_int404(\"map_x\", 0);\n$map_y = get_int404(\"map_y\", 0);\n$ul_x = -126.0;\n$ul_y = 50.0;\n$lr_y = 24.0;\n$lr_x = -66.0;\nif ($map_x != 0 && $map_y != 0)\n{\n  $dx = ($ul_x - $lr_x) / 300.0;\n  $dy = ($ul_y - $lr_y) / 130.0;\n  $clickx = ($map_x * (0 - $dx) ) + $ul_x;\n  $clicky = ($map_y * (0 - $dy) ) + $ul_y;\n  $sz_x = floatval($sz);\n  $sz_y = floatval($sz) * 7.0 / 8.0 ;\n\n  $extents = Array($clickx - $sz_x, $clicky - $sz_y, $clickx + $sz_x, $clicky + $sz_y);\n\n} else if (isset($_GET[\"osz\"]) && $sz != $_GET[\"osz\"]){\n  $oextents = explode(\",\", $_GET[\"oextents\"]);\n  $clickx = $oextents[0] + (($oextents[2] - $oextents[0]) / 2.0);\n  $clicky = $oextents[1] + (($oextents[3] - $oextents[1]) / 2.0);\n  $sz_x = floatval($sz) ;\n  $sz_y = floatval($sz) * 7.0 / 8.0 ;\n  $extents = Array($clickx - $sz_x, $clicky - $sz_y, $clickx + $sz_x, $clicky + $sz_y);\n\n} else if (isset($_GET[\"oextents\"])){\n  $extents = explode(\",\", $_GET[\"oextents\"]);\n} else {\n  $extents = Array(-98,39,-90,46);\n}\n\n\n$ourl = sprintf(\"rby-overview.php?BBOX=%s,%s,%s,%s\",  $extents[0], $extents[1], $extents[2], $extents[3]);\n$image_url = sprintf(\"rad-by-year.php?month=%s&day=%s&hour=%s&minute=%s&BBOX=%s,%s,%s,%s\", $month, $day, $hour, $minute, $extents[0], $extents[1], $extents[2], $extents[3]);\n\n$t = new MyView();\n$t->title = \"IEM NEXRAD by Year\";\n$er = implode(\",\", $extents);\n\n$ar = Array(\"0.5\" => \"100 km\",\n    \"2.5\" => \"500 km\",\n    \"5\" => \"1000 km\",\n    \"20\" => \"4000 km\");\n$szselect = make_select(\"sz\", $sz, $ar);\n\n$monselect = monthSelect($month, \"month\");\n$dayselect = daySelect($day, \"day\");\n$hrselect =  hourSelect($hour, \"hour\");\n$minselect = minuteSelect($minute, \"minute\", 5);\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/GIS/\">GIS Mainpage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">IEM NEXRAD Mosaic by Year</li>\n  </ol>\n</nav>\n\n<h3>IEM NEXRAD Mosiac of Base Reflectivity by Year</h3>\n\n<p>This application generates a summary image of IEM generated NEXRAD\nmosaic of base reflectivity for a given time over the archive's duration. \nYou can click on the map to move the desired location.</p>\n\n<form method=\"GET\" action=\"rad-by-year-fe.phtml\" name=\"Selector\">\n<input type=\"hidden\" name=\"oextents\" value=\"{$er}\">\n<input type=\"hidden\" name=\"osz\" value=\"{$sz}\">\n<table cellpadding=\"2\" border=\"0\" cellspacing=\"0\">\n<tr><th>Select Area</th><th colspan=\"2\">Select Date</th></tr>\n<tr>\n<td rowspan=\"5\">\n  <input type=\"image\" src=\"{$ourl}\" name=\"map\">\n<br /><strong>Select Rough Box Size</strong>\n{$szselect}\n</td>\n<td>Month:</td><td>{$monselect}</td></tr>\n<tr><td>Day:</td><td>{$dayselect}</td></tr>\n<tr><td>Hour:</td><td>{$hrselect}</td></tr>\n<tr><td>Minute:</td><td>{$minselect}</td></tr>\n<tr><td colspan='2'><input type='submit' value='Generate Image' class='btn btn-primary' aria-label='Generate image'></td></tr>\n</table>\n</form>\n<p><i>The image below may take a few moments to appear...</i><br />\n<img src='$image_url' class='img-fluid'>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/GIS/rad-by-year.php",
    "content": "<?php\n/* Generate a plot of a locations RADAR by year */\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/vendor/mapscript.php\";\nrequire_once \"../../include/forms.php\";\n\n$mapFile = \"../../data/gis/base4326.map\";\n\n$beginYear = 1995;\n$endYear = intval(date(\"Y\"));\n\n$twidth = 160 - 2;\n$theight = 140 - 2;\n$header = 40;\n$cols = 6;\n\n$ts = time();\n$m = intval(date(\"i\", $ts));\n$ts = $ts - (($m % 5) * 60.0);\n\n$day = get_int404(\"day\", date(\"d\", $ts));\n$month = get_int404(\"month\", date(\"m\", $ts));\n$year = get_int404(\"year\", date(\"Y\", $ts));\n$hour = get_int404(\"hour\", date(\"H\", $ts));\n$minute = get_int404(\"minute\", date(\"i\", $ts));\n$extents = array_key_exists(\"BBOX\", $_GET) ? explode(\",\", $_GET[\"BBOX\"]) : array(-105, 40, -97, 47);\n$dt = new DateTime(\"{$year}-{$month}-{$day} {$hour}:{$minute}\");\n\n/* This is our final image!  */\n$map2 = new mapObj($mapFile);\n$map2->imagecolor->setrgb(155, 155, 155);\n$map2->setSize($twidth * $cols + 11, $theight * 6 + $header + 13);\n$img2 = $map2->prepareImage();\n\n/* Title Bar */\n$bar640t = $map2->getLayerByName(\"bar640t\");\n$bar640t->__set(\"status\", MS_ON);\n$bar640t->draw($map2, $img2);\n\n/* Draw the title */\n$tlayer = $map2->getLayerByName(\"bar640t-title\");\n$point = new pointObj();\n$point->setXY(80, 16);\n$d = $dt->format(\"d M h:i A\");\n$point->draw($map2, $tlayer, $img2, 0, \"NEXRAD by Year for Time: $d\");\n\n/* Draw the subtitle */\n$point = new pointObj();\n$point->setXY(80, 31);\n$d = date(\"d M Y h:i A T\");\n$point->draw($map2, $tlayer, $img2, 1, \" map generated $d\");\n\n/* Draw the logo! */\n$layer = $map2->getLayerByName(\"logo\");\n$c0 = $layer->getClass(0);\n$c0s0 = $c0->getStyle(0);\n$c0s0->__set(\"size\", 40);\n$point = new pointObj();\n$point->setXY(40, 20);\n$point->draw($map2, $layer, $img2, 0, \"\");\n\n$layer = $map2->getLayerByName(\"n0r-ramp\");\n$point = new pointObj();\n$point->setXY(560, 15);\n$point->draw($map2, $layer, $img2, 0, \"\");\n\n$map2->drawLabelCache($img2);\n\n$gdimg_dest = imagecreatefromstring($img2->getBytes());\n\n$i = 0;\n$utcnow = new DateTime('now', new DateTimeZone(\"UTC\"));\nfor ($year = $beginYear; $year <= $endYear; $year++) {\n    $radts = new DateTime(\"{$year}-{$month}-{$day} {$hour}:{$minute}\");\n    $radts->setTimezone(new DateTimeZone(\"UTC\"));\n    if ($radts > $utcnow) {\n        continue;\n    }\n\n    /* Render the little maps */\n    $map = new mapObj($mapFile);\n    $map->__set(\"width\", $twidth);\n    $map->__set(\"height\", $theight);\n    $map->setExtent($extents[0], $extents[1], $extents[2], $extents[3]);\n\n    $img = $map->prepareImage();\n\n    $namerica = $map->getLayerByName(\"namerica\");\n    $namerica->__set(\"status\", MS_ON);\n    $namerica->draw($map, $img);\n\n    $lakes = $map->getLayerByName(\"lakes\");\n    $lakes->__set(\"status\", MS_ON);\n    $lakes->draw($map, $img);\n\n    /* Draw NEXRAD Layer */\n    $radarfp =  sprintf(\n        \"/mesonet/ARCHIVE/data/%s/GIS/uscomp/n0r_%s.png\",\n        $radts->format(\"Y/m/d\"),\n        $radts->format(\"YmdHi\"),\n    );\n    if (is_file($radarfp)) {\n        $radar = $map->getLayerByName(\"nexrad_n0r\");\n        $radar->__set(\"status\", MS_ON);\n        $radar->__set(\"data\", $radarfp);\n        $radar->draw($map, $img);\n    }\n\n    $counties = $map->getLayerByName(\"uscounties\");\n    if (($extents[2] - $extents[0]) > 5) {\n        $counties->__set(\"status\", MS_OFF);\n    } else {\n        $counties->__set(\"status\", MS_ON);\n    }\n    $counties->draw($map, $img);\n\n    $states = $map->getLayerByName(\"states\");\n    $states->__set(\"status\", MS_ON);\n    $states->draw($map, $img);\n\n    $bar640t = $map->getLayerByName(\"bar640t\");\n    $bar640t->__set(\"status\", 1);\n\n    $tlayer = $map->getLayerByName(\"bar640t-title\");\n    $point = new pointObj();\n    $point->setXY(2, 12);\n    $point->draw($map, $tlayer, $img, 1, \"$year\");\n\n    $map->drawLabelCache($img);\n\n    $y0 = intval($i / $cols) * ($theight + 3)  + $header;\n    $x0 = ($i % $cols) * ($twidth + 3)  + 3;\n    $gdimg_src = imagecreatefromstring($img->getBytes());\n    imagecopy(\n        $gdimg_dest,\n        $gdimg_src,\n        $x0,\n        $y0,\n        0, 0, $twidth, $theight,\n    );\n    imagedestroy($gdimg_src);\n    $i += 1;\n}\nheader(\"Content-type: image/png\");\necho imagepng($gdimg_dest);\n"
  },
  {
    "path": "htdocs/GIS/radmap.php",
    "content": "<?php\n/*\n * I am sort of inspired by the old mapblaster days.  Lets create a map of\n * all sorts of data with tons of CGI vars, yippeee\n */\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/reference.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/vendor/mapscript.php\";\n\n$vtec_phenomena = $reference[\"vtec_phenomena\"];\n$vtec_significance = $reference[\"vtec_significance\"];\n$postgis = iemdb(\"postgis\");\n\n$plotmeta = array(\n    \"title\" => array(),\n    \"subtitle\" => \"\"\n);\n\nfunction draw_header($map, $img, $width, $height)\n{\n    /*\n     * Draw the black bar at the top of the screen\n     */\n    $layer = new LayerObj($map);\n    $layer->status = MS_ON;\n    $layer->type = MS_LAYER_POLYGON;\n    $layer->transform = MS_OFF;\n    $wkt = \"POLYGON((0 0, 0 $height, $width $height, $width 0, 0 0))\";\n    $shp = shapeObj::fromWKT($wkt);\n    $layer->addFeature($shp);\n\n    $layerc0 = new ClassObj($layer);\n    $layerc0s0 = new StyleObj($layerc0);\n    $layerc0s0->color->setRGB(0, 0, 0);\n    $layer->draw($map, $img);\n}\n\n/**\n * Get a filename and timestamp for the given inbound timestamp and prod\n *\n * @param DateTime $ts\n * @param string $product\n *\n * @return array (filename, timestamp)\n */\nfunction get_goes_fn_and_time($ts, $product)\n{\n    $domain = Array(\"WV\", \"IR\", \"VIS\");\n    if (!in_array($product, $domain)) {\n        return array(NULL, NULL);\n    }\n    $base = \"/mesonet/ARCHIVE/data/\";\n    // clone the timestamp\n    $lts = clone $ts;\n    // Rectify the timestamp back to the nearest 5 minutes\n    $mins = intval($lts->format(\"i\")) % 5;\n    if ($mins > 0) {\n        $lts->sub(new DateInterval(\"PT{$mins}M\"));\n    }\n    // Now we search backwards for up to 60 minutes\n    for ($i = 0; $i < 12; $i++) {\n        if ($i > 0) {\n            $lts->sub(new DateInterval(\"PT5M\"));\n        }\n        $testfn = sprintf(\n            \"%s%s/GIS/sat/conus_goes_%s4km_%s.tif\",\n            $base,\n            $lts->format(\"Y/m/d\"),\n            strtolower($product),\n            $lts->format(\"Hi\"),\n        );\n        if (is_file($testfn)) {\n            return array($testfn, $lts);\n        }\n    }\n    return array(NULL, NULL);\n}\n\nfunction get_ridge_fn_and_time($ts, $radar, $product)\n{\n    /*\n     * Return a filename or NULL for a requested RIDGE Product and time\n     * using a crude search algorithm\n     */\n    $base = \"/mesonet/ARCHIVE/data/\";\n    for ($i = 0; $i < 10; $i++) {\n        foreach (array(1, -1) as $mul) {\n            $lts = clone $ts;\n            if ($i < 0) $lts->sub(new DateInterval(\"PT{$i}M\"));\n            else $lts->add(new DateInterval(\"PT{$i}M\"));\n            $testfn = $base . $lts->format(\"Y/m/d\") . \"/GIS/ridge/$radar/$product/{$radar}_{$product}_\" .\n                $lts->format(\"YmdHi\") . \".png\";\n            if (is_file($testfn)) {\n                return array($testfn, $lts);\n            }\n        }\n    }\n    return array(NULL, NULL);\n}\n\n$sectors = array(\n    \"iem\" => array(\"epsg\" => 4326, \"ext\" => array(-100.0, 38.5, -88.0, 46.5)),\n    \"lot\" => array(\"epsg\" => 4326, \"ext\" => array(-94.8, 39.0, -83.5, 46.5)),\n    \"ict\" => array(\"epsg\" => 4326, \"ext\" => array(-102.4, 35.45, -94.4, 40.35)),\n    \"sd\" => array(\"epsg\" => 4326, \"ext\" => array(-105.5, 40.5, -95.5, 48.0)),\n    \"hun\" => array(\"epsg\" => 4326, \"ext\" => array(-90.0, 32.0, -84.0, 36.0)),\n    \"conus\" => array(\n        \"epsg\" => 2163,\n        \"ext\" => array(-2110437, -2251067, 2548326, 1239063)\n    ),\n    \"texas\" => array(\n        \"epsg\" => 2163,\n        \"ext\" => array(-532031.375, -2133488, 723680.125, -959689.625)\n    ),\n    \"etexas\" => array(\n        \"epsg\" => 2163,\n        \"ext\" => array(-132031.375, -1933488, 623680.125, -1259689.625)\n    ),\n    \"florida\" => array(\n        \"epsg\" => 2163,\n        \"ext\" => array(1184257, -2271667, 2198502, -1189456)\n    ),\n    \"maine\" => array(\n        \"epsg\" => 2163,\n        \"ext\" => array(2201008.54544837, 209411.348773363, 2516387.56069489, 732383.197334035)\n    ),\n    \"michigan\" => array(\n        \"epsg\" => 26915,\n        \"ext\" => array(697867.530690471, 4641622.22153389, 1363156.86711036, 5347664.58607328)\n    ),\n    \"washington\" => array(\n        \"epsg\" => 2163,\n        \"ext\" => array(-1816611.94664531, 247411.313142634, -1231350.67314885, 688254.98213837)\n    ),\n    \"california\" => array(\n        \"epsg\" => 2163,\n        \"ext\" => array(-2031905.01470961, -1244659.20932869, -1296945.03256045, -39583.1960413812)\n    ),\n);\n\n\n/* Setup layers */\n$layers = array_key_exists(\"layers\", $_GET) ? $_GET[\"layers\"] : array(\"n0q\");\n// Make sure layers is an array...\nif (gettype($layers) == \"string\") {\n    $layers = array($layers);\n}\n\n// Alias for visual plot of VTEC\nif (array_key_exists(\"visual\", $_GET) && array_key_exists(\"wfo\", $_GET)){\n    $layers = array(\"legend\", \"ci\", \"cbw\", \"sbw\", \"uscounties\", \"bufferedlsr\");\n}\n\n/* Straight CGI Butter */\n$sector = get_str404(\"sector\", \"iem\");\nif (!array_key_exists($sector, $sectors)){\n    $opts = implode(\", \", array_keys($sectors));\n    die(\"Invalid sector provided, available: {$opts}\");\n}\n$width = get_int404(\"width\", 640);\n$height = get_int404(\"height\", 480);\n$lsrbuffer = get_int404(\"lsrbuffer\", 15);\n\n// Now, maybe we set a VTEC string, lets do all sorts of fun\n$vtec_limiter = \"\";\nif (array_key_exists(\"vtec\", $_GET)) {\n    $cvtec = xssafe($_GET[\"vtec\"]);\n    // cull errand _\n    $pos = strpos($cvtec, \"_\");\n    if ($pos !== false) {\n        $cvtec = substr($cvtec, 0, $pos);\n    }\n    // we may have gotten here with '-' or '.' in vtec string, rectify\n    $cvtec = str_replace(\"-\", \".\", strtoupper($cvtec));\n    $tokens = explode(\".\", $cvtec);\n    if (sizeof($tokens) == 7) {\n        list(\n            $year, $pclass, $status, $wfo, $phenomena, $significance,\n            $eventid\n        ) = explode(\".\", $cvtec);\n    } else {\n        list(\n            $year, $wfo, $phenomena, $significance,\n            $eventid\n        ) = explode(\".\", $cvtec);\n    }\n    $eventid = intval($eventid);\n    $year = intval($year);\n    if ($year < 1980 || $year > 2030){\n        xssafe(\"<tag>\");\n    }\n    $wfo = substr($wfo, 1, 3);\n    // Try to find this warning as a polygon first, then look at warnings table\n    $sql = <<<EOM\n      with one as (\n          SELECT max(issue at time zone 'UTC') as v,\n          max(expire at time zone 'UTC') as e, ST_extent(geom),\n          max('P')::text as gtype\n          from sbw\n          WHERE wfo = $1 and phenomena = $2 and eventid = $3 and\n          significance = $4 and status = 'NEW' and vtec_year = $5),\n      two as (\n          SELECT max(issue at time zone 'UTC') as v,\n          max(expire at time zone 'UTC') as e, ST_extent(u.geom),\n          'C'::text as gtype from warnings w JOIN ugcs u on (w.gid = u.gid)\n          WHERE w.wfo = $1 and phenomena = $2 and eventid = $3 and\n          significance = $4 and vtec_year = $5),\n      agg as (SELECT * from one UNION ALL select * from two)\n\n      SELECT v, e, ST_xmax(st_extent) as x1, st_xmin(st_extent) as x0,\n      ST_ymax(st_extent) as y1, st_ymin(st_extent) as y0, gtype from agg\n      WHERE gtype is not null and v is not null LIMIT 1\nEOM;\n    $stname = iem_pg_prepare($postgis, $sql);\n    $rs = pg_execute($postgis, $stname, array(\n        $wfo, $phenomena, $eventid,\n        $significance, $year,\n    ));\n    if ($rs === FALSE || pg_num_rows($rs) != 1) exit(\"ERROR: Unable to find warning!\");\n    $row = pg_fetch_assoc($rs, 0);\n    $lpad = 0.5;\n    $y1 = $row[\"y1\"] + $lpad;\n    $y0 = $row[\"y0\"] - $lpad;\n    $x1 = $row[\"x1\"] + $lpad;\n    $x0 = $row[\"x0\"] - $lpad;\n    $xc = $x0 + ($row[\"x1\"] - $row[\"x0\"]) / 2;\n    $yc = $y0 + ($row[\"y1\"] - $row[\"y0\"]) / 2;\n\n    $sector = \"custom\";\n    $sectors[\"custom\"] = array(\"epsg\" => 4326, \"ext\" => array($x0, $y0, $x1, $y1));\n\n    // Now the concern here is what to do with the valid time of this plot\n    // If now() is less than event end, set the plot time to now\n    $dts = new DateTime($row[\"v\"], new DateTimeZone(\"UTC\"));\n    $dts2 = new DateTime($row[\"e\"], new DateTimeZone(\"UTC\"));\n    $aa = new DateTime('now', new DateTimeZone('UTC'));\n    if ($dts2 > $aa) {\n        $dts = new DateTime('now', new DateTimeZone('UTC'));\n    }\n\n    $vtec_limiter = sprintf(\n        \"and phenomena = '%s' and eventid = %s and\n        significance = '%s' and w.wfo = '%s'\",\n        $phenomena,\n        $eventid,\n        $significance,\n        $wfo\n    );\n    if ($row[\"gtype\"] == 'P') {\n        $layers[] = 'sbw';\n    } else {\n        $layers[] = 'cbw';\n    }\n}\nif (array_key_exists(\"pid\", $_REQUEST)) {\n    $pid = $_REQUEST[\"pid\"];\n    $dts = DateTime::createFromFormat(\n        \"YmdHi\",\n        substr($_GET[\"pid\"], 0, 12),\n        new DateTimeZone(\"UTC\"),\n    );\n    /* First, we query for a bounding box please */\n    $stname = iem_pg_prepare(\n        $postgis,\n        \"SELECT ST_xmax(ST_extent(geom)) as x1, ST_xmin(ST_extent(geom)) as x0, \"\n            . \"ST_ymin(ST_extent(geom)) as y0, ST_ymax(ST_extent(geom)) as y1 \"\n            . \"from sps WHERE product_id = $1\"\n    );\n    $result = pg_execute($postgis, $stname, array($pid));\n    $row = pg_fetch_assoc($result, 0);\n    $lpad = 0.5;\n    $y1 = $row[\"y1\"] + $lpad;\n    $y0 = $row[\"y0\"] - $lpad;\n    $x1 = $row[\"x1\"] + $lpad;\n    $x0 = $row[\"x0\"] - $lpad;\n    $xc = $x0 + ($row[\"x1\"] - $row[\"x0\"]) / 2;\n    $yc = $y0 + ($row[\"y1\"] - $row[\"y0\"]) / 2;\n    $sector = \"custom\";\n    $sectors[\"custom\"] = array(\"epsg\" => 4326, \"ext\" => array($x0, $y0, $x1, $y1));\n}\n\n/* Could define a custom box */\nif (array_key_exists(\"bbox\", $_GET)) {\n    $sector = \"custom\";\n    $bbox = explode(\",\", $_GET[\"bbox\"]);\n    if (sizeof($bbox) != 4){\n        xssafe(\"</script>\");\n    }\n    $sectors[\"custom\"] = array(\"epsg\" => 4326, \"ext\" => $bbox);\n}\n/* Fetch bounds based on wfo as being set by bounds */\nif ($sector == \"wfo\") {\n    $sector_wfo = strtoupper(get_str404(\"sector_wfo\", \"DMX\"));\n    /* Fetch the bounds */\n    $stname = iem_pg_prepare($postgis, \"SELECT ST_xmax(geom) as xmax, ST_ymax(geom) as ymax, \"\n        . \" ST_xmin(geom) as xmin, ST_ymin(geom) as ymin from \"\n        . \" (SELECT ST_Extent(geom) as geom from ugcs WHERE \"\n        . \" wfo = $1 and end_ts is null) as foo\");\n    $rs = pg_execute($postgis, $stname, array($sector_wfo));\n    if (pg_num_rows($rs) > 0) {\n        $row = pg_fetch_assoc($rs);\n        $buffer = 0.25;\n        $sectors[\"wfo\"] = array(\n            \"epsg\" => 4326,\n            \"ext\" => array(\n                $row[\"xmin\"] - $buffer, $row[\"ymin\"] - $buffer,\n                $row[\"xmax\"] + $buffer, $row[\"ymax\"] + $buffer\n            )\n        );\n    }\n}\n\n/* Lets determine our timestamp.  Our options include\n   1.  Specified by URI, $ts\n   2.  They specified a VTEC string, use that\n   3.  Nothing specified, realtime!\n*/\n\n$utcnow = new DateTime('now', new DateTimeZone(\"UTC\"));\n$ts = array_key_exists(\"ts\", $_GET) ? DateTime::createFromFormat(\"YmdHi\", $_GET[\"ts\"], new DateTimeZone(\"UTC\")) : $utcnow;\nif (is_bool($ts)) xssafe(\"<tag>\");\n$ts1 = array_key_exists(\"ts1\", $_GET) ? DateTime::createFromFormat(\"YmdHi\", $_GET[\"ts1\"], new DateTimeZone(\"UTC\")) : null;\n$ts2 = array_key_exists(\"ts2\", $_GET) ? DateTime::createFromFormat(\"YmdHi\", $_GET[\"ts2\"], new DateTimeZone(\"UTC\")) : null;\nif (isset($dts) && !array_key_exists(\"ts\", $_GET)) {\n    $ts = clone $dts;\n}\nif (is_null($ts1)) {\n    $ts1 = clone $ts;\n}\nif (isset($dts2) && !array_key_exists(\"ts2\", $_GET)) {\n    $ts2 = clone $dts2;\n}\n/* Make sure we have a minute %5 */\n$radts = clone $ts;\n$mins = intval($ts->format(\"i\")) % 5;\nif ($mins > 0) {\n    $radts->sub(new DateInterval(\"PT{$mins}M\"));\n}\n\n/* Lets Plot stuff already! */\n$mapFile = \"../../data/gis/base\" . $sectors[$sector]['epsg'] . \".map\";\n$map = new mapObj($mapFile);\n$map->setSize($width, $height);\n$map->setExtent(\n    $sectors[$sector]['ext'][0],\n    $sectors[$sector]['ext'][1],\n    $sectors[$sector]['ext'][2],\n    $sectors[$sector]['ext'][3]\n);\nif (in_array(\"n0q\", $layers) || in_array(\"ridge\", $layers) || in_array(\"prn0q\", $layers) || in_array(\"akn0q\", $layers) || in_array(\"hin0q\", $layers)) {\n    $map->selectOutputFormat(\"png24\");\n}\n\n$img = $map->prepareImage();\n\n$namerica = $map->getLayerByName(\"namerica\");\n$namerica->status = MS_ON;\n$namerica->draw($map, $img);\n\n$lakes = $map->getLayerByName(\"lakes\");\n$lakes->status = MS_ON;\n$lakes->draw($map, $img);\n\n$places = $map->getLayerByName(\"places2010\");\n$places->status = in_array(\"places\", $layers);\n$places->draw($map, $img);\n\nif (in_array(\"goes\", $layers) && array_key_exists(\"goes_product\", $_REQUEST)) {\n    $res = get_goes_fn_and_time(\n        $ts,\n        strtoupper($_REQUEST[\"goes_product\"])\n    );\n    if (!is_null($res[0])) {\n        $glayer = new LayerObj($map);\n        $glayer->status = MS_ON;\n        $glayer->data = $res[0];\n        $glayer->type = MS_LAYER_RASTER;\n        $glayer->draw($map, $img);\n\n        $plotmeta[\"subtitle\"] .= sprintf(\n            \" CONUS GOES %s %s \",\n            $_REQUEST[\"goes_product\"],\n            $res[1]->format(\"H:i e\")\n        );\n    } else {\n        $plotmeta[\"subtitle\"] .= sprintf(\n            \" CONUS GOES %s Unavailable \",\n            $_REQUEST[\"goes_product\"],\n        );\n    }\n}\n\n\nif (in_array(\"nexrad\", $layers) || in_array(\"nexrad_tc\", $layers)  || in_array(\"nexrad_tc6\", $layers)) {\n    $radarfp = \"/mesonet/ldmdata/gis/images/4326/USCOMP/n0r_0.tif\";\n    $tss = clone $ts;\n    $tss->add(new DateInterval(\"PT5M\"));\n    if ($tss < $utcnow) {\n        $radarfp = sprintf(\n            \"/mesonet/ARCHIVE/data/%s/GIS/uscomp/n0r_%s.png\",\n            $radts->format(\"Y/m/d\"),\n            $radts->format(\"YmdHi\"),\n        );\n    }\n    if (in_array(\"nexrad_tc\", $layers)) {\n        $radarfp = sprintf(\n            \"/mesonet/ARCHIVE/data/%s/GIS/uscomp/max_n0r_0z0z_%s.png\",\n            $ts->format(\"Y/m/d\"),\n            $ts->format(\"Ymd\"),\n        );\n    }\n    if (in_array(\"nexrad_tc6\", $layers)) {\n        $radarfp = sprintf(\n            \"/mesonet/ARCHIVE/data/%s/GIS/uscomp/max_n0r_6z6z_%s.png\",\n            $ts->format(\"Y/m/d\"),\n            $ts->format(\"Ymd\"),\n        );\n    }\n    if (is_file($radarfp)) {\n        $radar = $map->getLayerByName(\"nexrad_n0r\");\n        $radar->status = MS_ON;\n        $radar->data = $radarfp;\n        $radar->draw($map, $img);\n    }\n}\n\n/* Draw NEXRAD Layer */\n$prefixes = array(\"\" => \"us\", \"ak\" => \"ak\", \"pr\" => \"pr\", \"hi\" => \"hi\");\nforeach ($prefixes as $p1 => $p2) {\n    if (in_array(\"{$p1}n0q\", $layers) || in_array(\"{$p1}n0q_tc\", $layers) || in_array(\"{$p1}n0q_tc6\", $layers)) {\n        $radarfp = sprintf(\"/mesonet/ldmdata/gis/images/4326/%sCOMP/n0q_0.png\", strtoupper($p2));\n        $tss = clone $ts;\n        $tss->add(new DateInterval(\"PT5M\"));\n        if ($tss < $utcnow) {\n            $radarfp = sprintf(\n                \"/mesonet/ARCHIVE/data/%s/GIS/%scomp/n0q_%s.png\",\n                $radts->format(\"Y/m/d\"),\n                $p2,\n                $radts->format(\"YmdHi\"),\n            );\n        }\n        if (in_array(\"{$p1}n0q_tc\", $layers)) {\n            $radarfp = sprintf(\n                \"/mesonet/ARCHIVE/data/%s/GIS/%scomp/max_n0q_0z0z_%s.png\",\n                $ts->format(\"Y/m/d\"),\n                $p2,\n                $ts->format(\"Ymd\"),\n            );\n        }\n        if (in_array(\"{$p1}n0q_tc6\", $layers)) {\n            $radarfp = sprintf(\n                \"/mesonet/ARCHIVE/data/%s/GIS/%scomp/max_n0q_6z6z_%s.png\",\n                $ts->format(\"Y/m/d\"),\n                $p2,\n                $ts->format(\"Ymd\"),\n            );\n        }\n        if (is_file($radarfp)) {\n            $radar = $map->getLayerByName(\"nexrad_n0q\");\n            $radar->status = MS_ON;\n            $radar->data = $radarfp;\n            $radar->draw($map, $img);\n        }\n        break;\n    }\n}\n\n\nif (\n    in_array(\"ridge\", $layers) && array_key_exists(\"ridge_radar\", $_REQUEST) &&\n    array_key_exists(\"ridge_product\", $_REQUEST)\n) {\n    $res = get_ridge_fn_and_time(\n        $ts,\n        strtoupper($_REQUEST[\"ridge_radar\"]),\n        strtoupper($_REQUEST[\"ridge_product\"])\n    );\n    if ($res[0] != NULL) {\n        $radar = $map->getLayerByName(\"nexrad_n0q\");\n        $radar->status = MS_ON;\n        $radar->data = $res[0];\n        $radar->draw($map, $img);\n        $plotmeta[\"subtitle\"] .= sprintf(\n            \" RIDGE %s %s %s \",\n            $_REQUEST[\"ridge_radar\"],\n            $_REQUEST[\"ridge_product\"],\n            $res[1]->format(\"h:i A e\")\n        );\n    }\n}\n\n$states = $map->getLayerByName(\"states\");\n$states->status = MS_ON;\n$states->draw($map, $img);\n\n/* All SBWs for a WFO */\nif (in_array(\"allsbw\", $layers) && array_key_exists(\"sector_wfo\", $_REQUEST)) {\n    $sbwh = $map->getLayerByName(\"allsbw\");\n    $sbwh->status =  MS_ON;\n    $sbwh->connection = get_dbconn_str(\"postgis\");\n    $sql = sprintf(\n        \"geom from (select phenomena, geom, random() as oid from sbw \"\n            . \"WHERE significance = 'W' and status = 'NEW' and wfo = '%s' and \"\n            . \"phenomena in ('SV') \"\n            . \"and issue > '2007-10-01') as foo \"\n            . \"using unique oid using SRID=4326\",\n        $sector_wfo\n    );\n    $sbwh->data = $sql;\n    $sbwh->draw($map, $img);\n}\n$counties = $map->getLayerByName(\"uscounties\");\n$counties->status = in_array(\"uscounties\", $layers);\n$counties->draw($map, $img);\n\n$cwas = $map->getLayerByName(\"cwas\");\n$cwas->status = in_array(\"cwas\", $layers);\n$cwas->draw($map, $img);\n\n$cwsu = $map->getLayerByName(\"cwsu\");\n$cwsu->status = in_array(\"cwsu\", $layers);\n$cwsu->draw($map, $img);\n\n/* Buffered LSRs */\nif (in_array(\"bufferedlsr\", $layers)) {\n    $blsr = new LayerObj($map);\n    $blsr->setConnectionType(MS_POSTGIS, \"\");\n    $blsr->connection = get_dbconn_str(\"postgis\");\n    $blsr->status = in_array(\"bufferedlsr\", $layers);\n    $sql = \"geo from (select distinct city, magnitude, valid, \"\n        . \"ST_Transform(ST_Buffer(ST_Transform(geom,9311),{$lsrbuffer}000),4326) as geo, \"\n        . \"type as ltype, city || magnitude || ST_x(geom) || ST_y(geom) as k \"\n        . \"from lsrs WHERE \"\n        . \"ST_Overlaps((select geom from sbw_\" . $ts->format(\"Y\") . \" WHERE \"\n        . \"wfo = '$wfo' and phenomena = '$phenomena' and \"\n        . \"significance = '$significance' and eventid = $eventid \"\n        . \"and status = 'NEW' LIMIT 1), \"\n        . \"ST_Transform(ST_Buffer(ST_Transform(geom,9311),{$lsrbuffer}000),4326) \"\n        . \") and \"\n        . \"valid >= '\" . $ts->format(\"Y-m-d H:i\") . \"' and \"\n        . \"valid < '\" . $ts2->format(\"Y-m-d H:i\") . \"' and \"\n        . \"((type = 'M' and magnitude >= 34) or \"\n        . \"(type = 'H' and magnitude >= 0.75) or type = 'W' or \"\n        . \"type = 'T' or (type = 'G' and magnitude >= 58) or type = 'D' \"\n        . \"or type = 'F') ORDER by valid DESC) as foo \"\n        . \"USING unique k USING SRID=4326\";\n    $blsr->data = $sql;\n    $blsr->type = MS_LAYER_POLYGON;\n    $blsr->setProjection(\"init=epsg:4326\");\n    $blc0 = new ClassObj($blsr);\n    $blc0->name = \"Buffered LSRs ({$lsrbuffer} km)\";\n    $blc0s0 = new StyleObj($blc0);\n    //$blc0s0->set(\"symbolname\", \"circle\");\n    $blc0s0->color->setRGB(0, 0, 0);\n    $blc0s0->outlinecolor->setRGB(50, 50, 50);\n    $blsr->draw($map, $img);\n}\n\n/* Watch by County */\n$wbc = $map->getLayerByName(\"watch_by_county\");\n$wbc->status = in_array(\"watch_by_county\", $layers);\n$wbc->connection = get_dbconn_str(\"postgis\");\n$sql = sprintf(\n    \"g from (select phenomena, eventid, \" .\n        \"ST_buffer(ST_collect(u.simple_geom), 0) as g \" .\n        \"from warnings w JOIN ugcs u \" .\n        \"on (u.gid = w.gid) WHERE \" .\n        \"significance = 'A' and phenomena IN ('TO','SV') and \" .\n        \"issue <= '%s:00+00' and expire > '%s:00+00' \" .\n        \"GROUP by phenomena, eventid ORDER by phenomena ASC) as foo \" .\n        \"using SRID=4326 using unique phenomena\",\n    $ts->format(\"Y-m-d H:i\"),\n    $ts->format(\"Y-m-d H:i\")\n);\n$wbc->data = $sql;\n$wbc->draw($map, $img);\n\n$watches = $map->getLayerByName(\"watches\");\n$watches->status = in_array(\"watches\", $layers);\n$watches->connection = get_dbconn_str(\"postgis\");\n$sql = sprintf(\n    \"geom from (select type as wtype, geom, num from watches \"\n        . \"WHERE issued <= '%s:00+00' and expired > '%s:00+00') as foo \"\n        . \"using SRID=4326 using unique num\",\n    $ts->format(\"Y-m-d H:i\"),\n    $ts->format(\"Y-m-d H:i\")\n);\n$watches->data = $sql;\n$watches->draw($map, $img);\n\n/* Plot the warning explicitly */\nif (isset($_REQEST[\"pid\"])) {\n    $wc = new LayerObj($map);\n    $wc->setConnectionType(MS_POSTGIS, \"\");\n    $wc->connection = get_dbconn_str(\"postgis\");\n    $wc->status = MS_ON;\n    $sql = sprintf(\"geom from (select geom, product_id from sps \"\n        . \"WHERE product_id = '$pid') as foo using unique product_id using SRID=4326\");\n    $wc->data = $sql;\n    $wc->type = MS_LAYER_LINE;\n    $wc->setProjection(\"init=epsg:4326\");\n\n    $wcc0 = new ClassObj($wc);\n    $wcc0->name = \"Product\";\n    $wcc0s0 = new StyleObj($wcc0, 'circle');\n    $wcc0s0->color->setRGB(255, 0, 0);\n    $wcc0s0->size = 3;\n    $wc->draw($map, $img);\n}\n\n\n// Draws the county-based VTEC warning, only if \"cbw\" in $layers\nif (array_key_exists(\"vtec\", $_REQUEST) && in_array(\"cbw\", $layers)) {\n    $wc = new LayerObj($map);\n    $wc->setConnectionType(MS_POSTGIS, \"\");\n    $wc->connection = get_dbconn_str(\"postgis\");\n    $wc->status = MS_ON;\n    $sql = sprintf(\"geom from (select eventid, w.wfo, significance, \"\n        . \"phenomena, u.geom, random() as oid from warnings w JOIN ugcs u \"\n        . \"on (u.gid = w.gid) WHERE w.vtec_year = $year and w.wfo = '$wfo' \"\n        . \"and phenomena = '$phenomena' and significance = '$significance' \"\n        . \"and eventid = $eventid ORDER by phenomena ASC) as foo \"\n        . \"using unique oid using SRID=4326\");\n    $wc->data = $sql;\n    $wc->type = MS_LAYER_LINE;\n    $wc->setProjection(\"init=epsg:4326\");\n\n    $wcc0 = new ClassObj($wc);\n    $wcc0->name = $vtec_phenomena[$phenomena] . \" \" . $vtec_significance[$significance];\n    $wcc0s0 = new StyleObj($wcc0);\n    $wcc0s0->color->setRGB(255, 0, 0);\n    $wcc0s0->width = 3;\n    //$wcc0s0->symbol = 'circle';\n    $wc->draw($map, $img);\n}\n\n/* Storm based warning history, plotted as a white outline, I think */\nif (in_array(\"sbwh\", $layers) && intval($ts->format(\"Y\")) > 2001) {\n    $ptext = \"'ZZ' as phenomena\";\n    $sbwh = $map->getLayerByName(\"sbw\");\n    $sbwh->status = MS_ON;\n    $sbwh->connection = get_dbconn_str(\"postgis\");\n    $sql = sprintf(\n        \"geom from (select %s, geom, random() as oid from sbw_%s w \"\n            . \"WHERE significance != 'A' and polygon_begin <= '%s:00+00' and \"\n            . \"polygon_end > '%s:00+00' \"\n            . \"%s) as foo using unique oid using SRID=4326\",\n        $ptext,\n        $ts->format(\"Y\"),\n        $ts->format(\"Y-m-d H:i\"),\n        $ts->format(\"Y-m-d H:i\"),\n        $vtec_limiter\n    );\n    $sbwh->data = $sql;\n    $sbwh->draw($map, $img);\n}\n\n/* Storm Based Warning */\nif (in_array(\"sbw\", $layers)  && intval($ts->format(\"Y\")) > 2001) {\n    $ptext = \"phenomena\";\n    if (in_array(\"sbw\", $layers) && in_array(\"cbw\", $layers)) {\n        $ptext = \"'ZZ' as phenomena\";\n    }\n    $sbw = $map->getLayerByName(\"sbw\");\n    $sbw->status = MS_ON;\n    $sbw->connection = get_dbconn_str(\"postgis\");\n    $sql = sprintf(\n        \"geom from (select %s, geom, random() as oid from sbw_%s w \"\n            . \"WHERE significance != 'A' and polygon_begin <= '%s:00+00' \"\n            . \"and polygon_end > '%s:00+00' \"\n            . \"%s) as foo using unique oid using SRID=4326\",\n        $ptext,\n        $ts->format(\"Y\"),\n        $ts->format(\"Y-m-d H:i\"),\n        $ts->format(\"Y-m-d H:i\"),\n        $vtec_limiter\n    );\n    $sbw->data = $sql;\n    $sbw->draw($map, $img);\n}\n\n/* warnings by county */\n$w0c = $map->getLayerByName(\"warnings0_c\");\n$w0c->connection = get_dbconn_str(\"postgis\");\n$w0c->status = in_array(\"county_warnings\", $layers);\n$sql = sprintf(\n    \"geom from (select u.geom, phenomena, significance, \"\n        . \"random() as oid from warnings_%s w JOIN ugcs u on (u.gid = w.gid) \"\n        . \"WHERE issue <= '%s:00+00' and expire > '%s:00+00' %s \"\n        . \"ORDER by phenomena ASC) as foo using unique oid using SRID=4326\",\n    $ts->format(\"Y\"),\n    $ts->format(\"Y-m-d H:i\"),\n    $ts->format(\"Y-m-d H:i\"),\n    $vtec_limiter\n);\n$w0c->data = $sql;\n$w0c->draw($map, $img);\n\n/* Local Storm Reports */\n$lsrs = $map->getLayerByName(\"lsrs\");\n$lsrs->connection = get_dbconn_str(\"postgis\");\n$lsrs->status = in_array(\"lsrs\", $layers);\nif ($ts2 > $ts1) {\n    $sql = \"geom from (select distinct city, magnitude, valid, geom, \"\n        . \"type as ltype, city || magnitude || ST_x(geom) || ST_y(geom) as k \"\n        . \"from lsrs WHERE \"\n        . \"valid >= '\" . $ts1->format(\"Y-m-d H:i\") . \":00+00' and \"\n        . \"valid < '\" . $ts2->format(\"Y-m-d H:i\") . \":00+00' \"\n        . \"ORDER by valid DESC) as foo USING unique k USING SRID=4326\";\n} else {\n    $sql = \"geom from (select distinct city, magnitude, valid, geom, \"\n        . \"type as ltype, city || magnitude || ST_x(geom) || ST_y(geom) as k \"\n        . \"from lsrs WHERE \"\n        . \"valid = '\" . $ts->format(\"Y-m-d H:i\") . \":00+00') as foo \"\n        . \"USING unique k USING SRID=4326\";\n}\n$lsrs->data = $sql;\n$lsrs->draw($map, $img);\n\n/* County Intersection */\nif (in_array(\"ci\", $layers)) {\n    $ci = new LayerObj($map);\n    $ci->setConnectionType(MS_POSTGIS, \"\");\n    $ci->connection = get_dbconn_str(\"postgis\");\n    $ci->status = in_array(\"ci\", $layers);\n    $tblyr = $ts->format(\"Y\");\n    $sql = <<<EOM\ngeo from (\n    WITH stormbased as (SELECT geom from sbw_$tblyr where wfo = '$wfo'\n        and eventid = $eventid and significance = '$significance'\n        and phenomena = '$phenomena' and status = 'NEW'),\n    countybased as (SELECT ST_Union(u.geom) as geom from\n        warnings_$tblyr w JOIN ugcs u on (u.gid = w.gid)\n        WHERE w.wfo = '$wfo' and eventid = $eventid and\n        significance = '$significance' and phenomena = '$phenomena')\n\n    SELECT ST_SetSRID(ST_intersection(\n          ST_buffer(ST_exteriorring(ST_geometryn(ST_multi(c.geom),1)),0.02),\n          ST_exteriorring(ST_geometryn(ST_multi(s.geom),1))\n       ), 4326) as geo,\n    random() as k\n    from stormbased s, countybased c\n\n) as foo USING unique k USING SRID=4326\nEOM;\n    $ci->data = $sql;\n    $ci->type = MS_LAYER_LINE;\n    $ci->setProjection(\"init=epsg:4326\");\n    $cic0 = new ClassObj($ci);\n    $cic0->name = \"County Intersection\";\n    $cic0s0 = new StyleObj($cic0);\n    $cic0s0->color->setRGB(250, 0, 250);\n    $cic0s0->width = 5;\n    $ci->draw($map, $img);\n}\n\n/* Interstates */\n$interstates = $map->getLayerByName(\"interstates\");\n$interstates->status = in_array(\"interstates\", $layers);\n$interstates->draw($map, $img);\n\n/* roads */\n$roads = $map->getLayerByName(\"roads\");\n$roads->connection = get_dbconn_str(\"postgis\");\n$roads->status = in_array(\"roads\", $layers);\n$roads->draw($map, $img);\n\n/* roads */\n$roadsint = $map->getLayerByName(\"roads-inter\");\n$roadsint->connection = get_dbconn_str(\"postgis\");\n$roadsint->status = in_array(\"roads-inter\", $layers);\n$roadsint->draw($map, $img);\n\nif (in_array(\"usdm\", $layers)) {\n    $usdm = $map->getLayerByName(\"usdm\");\n    $usdm->status = MS_ON;\n    $usdm->draw($map, $img);\n}\n\nif (in_array(\"cities\", $layers)) {\n    $l = $map->getLayerByName(\"cities\");\n    $l->status = MS_ON;\n    $l->draw($map, $img);\n}\n\nif (in_array(\"surface\", $layers)) {\n    $surface = $map->getLayerByName(\"surface\");\n    $surface->status = MS_ON;\n    $surface->draw($map, $img);\n}\nif (in_array(\"airtemps\", $layers)) {\n    $airtemps = $map->getLayerByName(\"airtemps\");\n    $airtemps->status = MS_ON;\n    if ($width > 800) {\n        for ($i = 0; $i < $airtemps->numclasses; $i++) {\n            $cl = $airtemps->getClass($i);\n            $cllabel = $cl->getLabel(0);\n            $cllabel->size = 20;\n        }\n    }\n    $airtemps->draw($map, $img);\n}\n\n$tlayer = $map->getLayerByName(\"bar640t-title\");\n$point = new pointobj();\n$point->setXY(80, 15);\n$tzformat = \"d M Y h:i A T\";\n$tzinfo = get_str404(\"tz\", \"America/Chicago\");\n// Translate to ZoneInfo compat\nif ($tzinfo == 'MDT' || $tzinfo == 'MST') {\n    $tzinfo = \"America/Denver\";\n} elseif ($tzinfo == 'PDT' || $tzinfo == 'PST') {\n    $tzinfo = \"America/Los_Angeles\";\n} elseif ($tzinfo == 'CDT' || $tzinfo == 'CST') {\n    $tzinfo = \"America/Chicago\";\n} elseif ($tzinfo == 'EDT' || $tzinfo == 'EST') {\n    $tzinfo = \"America/New_York\";\n}\nif ($tzinfo == 'UTC') {\n    $tzformat = \"d M Y H:i T\";\n}\n$lts = clone $ts;\n$lts->settimezone(new DateTimeZone($tzinfo));\n$d = $lts->format($tzformat);\n$tomorrow = clone $ts;\n$tomorrow->add(new DateInterval(\"P1D\"));\nif (array_key_exists(\"title\", $_GET)) {\n    $title = substr($_GET[\"title\"], 0, 100);\n} else if (array_key_exists(\"vtec\", $_GET)) {\n    $title = \"VTEC ID: \" . $_GET[\"vtec\"];\n} else if (in_array(\"nexrad\", $layers)) {\n    $title = \"NEXRAD Base Reflectivity\";\n} else if (in_array(\"n0q\", $layers) || in_array(\"akn0q\", $layers) || in_array(\"hin0q\", $layers) || in_array(\"prn0q\", $layers)) {\n    $title = \"NEXRAD Base Reflectivity\";\n} else if (in_array(\"n0q_tc\", $layers)) {\n    $title = \"IEM NEXRAD Daily N0Q Max Base Reflectivity\";\n    $d = sprintf(\n        \"Valid between %s 00:00 and 23:59 UTC\",\n        $ts->format(\"d M Y\")\n    );\n} else if (in_array(\"n0q_tc6\", $layers)) {\n    $title = \"IEM NEXRAD 24 Hour N0Q Max Base Reflectivity\";\n    $d = sprintf(\n        \"Valid between %s 06:00 and %s 05:55 UTC\",\n        $ts->format(\"d M Y\"),\n        $tomorrow->format(\"d M Y\")\n    );\n} else if (in_array(\"nexrad_tc\", $layers)) {\n    $title = \"IEM NEXRAD Daily N0R Max Base Reflectivity\";\n    $d = sprintf(\n        \"Valid between %s 00:00 and 23:59 UTC\",\n        $ts->format(\"d M Y\")\n    );\n} else if (in_array(\"nexrad_tc6\", $layers)) {\n    $title = \"IEM NEXRAD 24 Hour N0R Max Base Reflectivity\";\n    $d = sprintf(\n        \"Valid between %s 06:00 and %s 05:55 UTC\",\n        $ts->format(\"d M Y\"),\n        $tomorrow->format(\"d M Y\")\n    );\n} else {\n    $title = \"IEM Plot\";\n    if ($plotmeta[\"subtitle\"] != \"\") {\n        $title = $plotmeta[\"subtitle\"];\n        $plotmeta[\"subtitle\"] = \"\";\n    }\n}\n\n// Flush all the labels to the plot prior to doing headers and legends\n$map->drawLabelCache($img);\n\n$header_height = ($plotmeta[\"subtitle\"] == \"\") ? 36 : 53;\ndraw_header($map, $img, $width, $header_height);\n\n$point->draw($map, $tlayer, $img, 0, $title);\n\n$point = new pointobj();\n$point->setXY(80, 32);\n$point->draw($map, $tlayer, $img, 1, \"$d\");\nif ($plotmeta[\"subtitle\"] != \"\") {\n    $point = new pointobj();\n    $point->setXY(80, 47);\n    $point->draw($map, $tlayer, $img, 1, $plotmeta[\"subtitle\"]);\n}\n\n\n$layer = $map->getLayerByName(\"logo\");\n$point = new pointobj();\n$point->setXY(42, 32);\n$point->draw($map, $layer, $img, 0, \"\");\n\nif (in_array(\"nexrad\", $layers) || in_array(\"nexrad_tc\", $layers) || in_array(\"nexrad_tc6\", $layers)) {\n    $layer = $map->getLayerByName(\"n0r-ramp\");\n    $point = new pointobj();\n    $point->setXY(($width - 80), 15);\n    $point->draw($map, $layer, $img, 0, \"\");\n}\nif (in_array(\"n0q\", $layers) || in_array(\"n0q_tc\", $layers) || in_array(\"n0q_tc6\", $layers) || in_array(\"hin0q\", $layers) || in_array(\"akn0q\", $layers) || in_array(\"prn0q\", $layers)) {\n    $layer = $map->getLayerByName(\"n0q-ramp\");\n    $point = new pointobj();\n    $point->setXY(($width - 130), 18);\n    $point->draw($map, $layer, $img, 0, \"\");\n}\n\nif (in_array(\"legend\", $layers)) {\n    $map->embedLegend($img);\n}\n\nheader(\"Content-type: image/png\");\necho $img->getBytes();\n"
  },
  {
    "path": "htdocs/GIS/radmap_api.phtml",
    "content": "<?php \nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"RadMap API\";\n$t->content = <<<EOM\n<style>\ndiv.item h4 {\n color: #f00;\n border-bottom: 1px solid #ccc;\n margin-bottom: 1px;\n}\ndiv.desc {\n margin-left: 20px;\n}\n</style>\n\n\n<h3>IEM RadMap API</h3>\n\n<div class=\"alert alert-danger\">Please note: This mapping service is\nprovided without warranty.  Please do not use this on a high traffic website.\nIf necessary, this application may be disabled to keep the IEM web farm from\nmelting!  This API is intended to support local scripts to generate timelapse\nmovies.\n</div>\n\n<p>The \"radmap\" application dynamically generates a PNG image based on a set\nof HTTP provided parameters.  This page documents these parameters. Please note\nthat the API presented here may change in the future.\n\n<h3>Basic HTML example:</h3>\n<pre>\n&lt;img src=\"{$EXTERNAL_BASEURL}/GIS/radmap.php?layers[]=nexrad&amp;sector=conus&amp;ts=200806071000\" /&gt;\n</pre>\n<img src=\"/GIS/radmap.php?layers[]=nexrad&sector=conus&ts=200806071000\" \nwidth=\"640\" height=\"480\" alt=\"radmap image\"/>\n\n<h3>HTTP GET Parameters</h3>\n<div class=\"item\">\n <h4>&amp;layers[]=...&amp;layers[]=...&amp;...</h4>\n<div class=\"desc\">\n Layer(s) to draw in the map. Here is a list of available layers:\n<ul>\n    <li><i>airtemps</i> - <strong>Realtime Only</strong> Plot 2 meter air \n        temperatures in Fahrenheit.</li>\n <li><i>cbw</i> - County/Zone based Watch/Warning/Advisories</li>\n <li><i>county_warnings</i> - County based Warnings</li>\n <li><i>cwas</i> - National Weather Service County Warning Area (CWA)</li>\n <li><i>goes</i> - <a href=\"goes.phtml\">GOES Satellite</a> imagery, you\n also need to specify the product as a seperate \n CGI variable. <sup>[2]</sup>\n <ul>\n     <li><i>goes_product</i> VIS for visible, IR for infrared, and WV for water\n     vapor</li>\n </ul>\n </li>\n <li><i>interstates</i> - Interstate Roadways</li>\n <li><i>legend</i> - Include Legend on the Map</li>\n <li><i>lsrs</i> - Local Storm Reports <sup>[1]</sup></li>\n <li><i>nexrad</i> - CONUS Nexrad Base Reflectivity Composite <sup>[2]</sup></li>\n <li><i>places</i> - 2010 Census Incorporated Places </li>\n <li><i>ridge</i> - Single Site <a href=\"ridge.phtml\">NEXRAD/TDWR</a> imagery, you\n also need to specify the RADAR site and level 3 product as two seperate \n CGI variables. <sup>[2]</sup>\n <ul>\n     <li><i>ridge_radar</i> 3 character radar identifier</li>\n     <li><i>ridge_product</i> 3 character levelIII product identifier</li>\n </ul>\n </li>\n <li><i>roads</i> - Iowa Winter Road Conditions</li>\n <li><i>sbw</i> - Storm based Watch/Warning/Advisories</li>\n    <li><i>surface</i> - <strong>Realtime Only</strong> Plot dots for RWIS\n    pavement temperatures. See <a href=\"/GIS/apps/iem/freeze.phtml\">IEM Freeze</a> app.</li>\n  <li><i>uscounties</i> - CONUS Counties </li>\n <li><i>usdm</i> - United States Drought Monitor (latest only)</li>\n <li><i>watch_by_county</i> - Convective Watch-by-County</li>\n <li><i>watches</i> - Polygon SPC Watch boundaries</li>\n</ul>\n<p>[1] Storm reports are plotting valid at the given time (variable ts).\n        To specify a time range, set ts1 and ts2 variable to the UTC start\n        and end time respectively.\n        For example, &amp;ts1=200806071000&amp;ts2=200806071015 to get LSRs\n        between 10 and 1015z.</p>\n<p>[2] Logic is applied to these layers to find the closest imagery to the specified\ntime or the realtime imagery if no time (variable ts) is specified.\n</div>\n</div>\n\n\n<div class=\"item\">\n <h4>&amp;sector=...</h4>\n<div class=\"desc\">\n Predefined areal extent to use for the map. Current sectors are:\n<ul>\n <li><i>conus</i> - CONUS</li>\n <li><i>hun</i> - Northern Alabama</li>\n <li><i>iem</i> - Iowa</li>\n <li><i>ict</i> - Wichita, Kansas</li>\n <li><i>lot</i> - Chicago</li>\n <li><i>sd</i> - South Dakota</li>\n <li><i>texas</i> - Texas</li>\n <li><i>wfo</i> - NWS Weather Forecast Office, if you use this, then you need\n to also set the variable sector_wfo=XXX , where XXX is the 3 char call letters</li>\n</ul>\n</div>\n</div>\n\n<div class=\"item\">\n <h4>&amp;width=640&amp;height=480</h4>\n<div class=\"desc\">\n Width and height of the map in pixels.\n</div>\n</div>\n\n<div class=\"item\">\n <h4>&amp;vtec=...</h4>\n<div class=\"desc\">\n VTEC identification string of a specific product.  The result is a map \n centered on this product with a timestamp set to product issuance. An\n example VTEC string is: \"2008.O.NEW.KDMX.TO.W.0048\".\n</div>\n</div>\n\n<div class=\"item\">\n <h4>&amp;pid=...</h4>\n<div class=\"desc\">\n  This is for the specific example of offices who issue geometries with \n  their SPS statements.  An example string is: \"200903082123-KGRR-WWUS83-SPSGRR\"\n</div>\n</div>\n\n<div class=\"item\">\n <h4>&amp;bbox=xmin,ymin,xmax,ymax</h4>\n<div class=\"desc\">\n  Bounding box of the map (typically a latitude and longitude box). An example\n  would be \"-95.4,40.1,-89.4,44.5\".\n</div>\n</div>\n\n<div class=\"item\">\n <h4>&amp;ts=YYYYMMDDHHII</h4>\n<div class=\"desc\">\n  Timestamp in UTC for which the map is valid for.  For example, 6:45 UTC on \n5 Jun 2005 would be \"200506050645\".  For the imagery layers, this timestamp is\nused to find the closest imagery in time.\n</div>\n</div>\n\n<div class=\"item\">\n <h4>&amp;ts1=YYYYMMDDHHII&amp;ts2=YYYYMMDDHHII</h4>\n<div class=\"desc\">\n  Start and end timestamp in UTC for to look for Local Storm Reports. \n  For example, 6:45 UTC on 5 Jun 2005 would be \"200506050645\". If ts1 is not\n  specified, it defaults to the value of ts.\n</div>\n</div>\n\n<div class=\"item\">\n <h4>&amp;title=....</h4>\n<div class=\"desc\">\n  A customized title to place on the map.\n</div>\n</div>\n\n<div class=\"item\">\n <h4>&amp;tz=....</h4>\n<div class=\"desc\">\n  A lame specification of the timezone that should be used for the map.  This\n  can be only of the following \"UTC, EDT, EST, CDT, CST, MDT, MST, PDT, PST\".\n</div>\n</div>\n\n\n<h3>Example Python client script</h3>\n\n<p>Here is an example python script that will call this service and locally\ngenerate a folder of images that can then be converted into a movie.\n<br />\n<pre style=\"border-top: 1px solid #ccc; background: #EEFFCC; border-bottom: 1px solid #ccc; padding-left: 5px;\">\n#!/usr/bin/env python\n\nimport os\nfrom datetime import datetime, timedelta\n\n# Generate series of images between 0z and 12z on the 3rd of August\nnow = datetime(2008, 8, 3, 0, 0)\nets = datetime(2008, 8, 3, 12, 0)\ninterval = timedelta(minutes=5)\n\nbaseuri = \"{$EXTERNAL_BASEURL}/GIS/radmap.php?\"\nbaseuri += \"width=800&amp;height=600&amp;bbox=-95,42.5,-89,45.5\"\nbaseuri += \"&amp;layers[]=uscounties&amp;layers[]=nexrad&amp;layers[]=sbw\"\nbaseuri += \"&amp;layers[]=watch_by_county\"\n\n# Change into a frames folder\nos.chdir(\"frames\")\nstepi = 0\nwhile (now < ets):\n  url = \"%s&ts=%s\" % (baseuri, now.strftime(\"%Y%m%d%H%M\"))\n  cmd = \"wget -q -O %05i.png '%s'\" % (stepi, url )\n  os.system(cmd)\n  stepi += 1\n  now += interval\n\nos.system(\"ffmpeg -y -i %05d.png -b 2000k out.mp4\")\n</pre>\n\n<h3>Change Log</h3>\n<ul>\n  <li><strong>2 April 2025:</strong> Simplified what actually works with regards\n   to IEM GOES archive plotting. All the IEM has is a composite of WV, IR, and VIS.</li>\n <li><strong>22 May 2016:</strong> Clarified the Local Storm Reports timestamp\n        options.</li>\n <li><strong>4 May 2012:</strong> Add incorporated places as a layer option.</li>\n <li><strong>14 Apr 2012:</strong> Another cleanup and add ridge and GOES\n imagery layers as available plotting options.</li>\n <li><strong>18 Oct 2011:</strong> Cleanup and clarify LSRs.</li>\n <li><strong>10 Mar 2009:</strong> Initial release</li>\n</ul>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/GIS/radview.phtml",
    "content": "<?php \nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 66);\n\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"GIS RADAR Information\";\n$t->content = <<<EOM\n\n<h3>IEM Provided RADAR Information for GIS</h3>\n\n<p>Our RadView project is an effort to get real time NWS NEXRAD information\ninto GIS applications.  We have no magic bullets for getting this information\ninto GIS systems, but have a number of things for you to try out!\n\n<div class=\"alert alert-info\">These services are provided with-out\nwarranty and with \nprogram interfaces that may change or go away!</div>\n\n<h3>Quick links to specific products</h3>\n<div class=\"row\">\n        <div class=\"col-md-3\">\n<a href=\"/docs/nexrad_mosaic\"><strong>NEXRAD Mosaic</strong><br />\n<img src=\"/docs/nexrad_mosaic/example_raster.png\" class=\"img img-fluid\" /></a>\n</div>\n        <div class=\"col-md-3\">\n        <a href=\"ridge.phtml\"><strong>Single RADAR Imagery</strong><br />\n<img src=\"TLX_N0R_199905032356.png\" class=\"img img-fluid\" /></a>\n</div>\n        <div class=\"col-md-3\">\n        <a href=\"model.phtml\"><strong>HRRR Reflectivity Imagery</strong><br />\n<img src=\"/data/gis/images/4326/hrrr/refd_0060.png\" class=\"img img-fluid\" /></a>\n</div>\n        <div class=\"col-md-3\">\n<a href=\"/ogc/\"><strong>OGC Web Services</strong><br />\n<img src=\"olcode.png\" class=\"img img-fluid\" /></a>\n</div>\n\n</div>\n\n<h3>News:</h3>\n<ul>\n <li><strong>14 Jul 2017:</strong> Release the <a href=\"model.phtml\">HRRR Model Forecasted Reflectivity</a> services.</li>\n <li><strong>28 Jan 2012:</strong> Release the <a href=\"ridge.phtml\">Single Site NEXRAD</a> services.</li>\n <li><b>26 Apr 2004:</b> Add in links for the nationwide mosaics of NTP (storm total precip) and N1P (1 hour precip)!\n <li><b>13 Jan 2004:</b> Release the nationwide mosiac WMS!\n <li><b>16 Sep 2003:</b> Add US base reflectivity, remove Iowa NTP product.\n <li><b>04 Jul 2003:</b> The mosaic base reflectivity plot has been \ngreatly improved.  The geo-referencing is nearly perfect!\n <li><b>01 Jul 2003:</b> Initial release to the public.</li>\n</ul>\n\n<h3>NEXRAD + Mapserver Howto:</h3>\n\n<br>Here is a <a href=\"/docs/radmapserver/\">HOWTO</a> on generating NEXRAD \nmosiacs with GEMPAK and then displaying them in Mapserver.  Feedback\nis certainly welcome.<p>\n\n<h3>Geo-referenced Images:</h3>\n\n<br>Using geo-referenced images is probably the simpliest way of getting data \ninto your GIS.  Displaying timestamps and color bars are tricky business. The\nfollowing URLs contain pure RASTER data layers. \n\n<table class=\"table table-striped\">\n<tr>\n  <th>RADAR</th>\n  <td><a href=\"http://www.epsg.org\">EPSG Proj Code</a></td>\n  <td>Data Files</td>\n  <td>World File</td>\n</tr>\n\n<tr>\n  <td>US Base Reflectivity (N0R) Composite<br>(generated every 5 minutes)</td>\n  <td>4326<br> <i>(Lat-Lon)</i></td>\n  <td>\n  <ul>\n   <li><a href=\"/data/gis/images/4326/USCOMP/n0r_0.png\">PNG format</a></li>\n   <li><a href=\"/data/gis/images/4326/USCOMP/n0r_0.tif\">8bit TIFF</a></li>\n   </ul>\n   </td>\n  <td><a href=\"/data/gis/images/4326/USCOMP/n0r_0.wld\">Decimal Degree Units</a></td>\n</tr>\n\n<tr>\n  <td>US Base Reflectivity (N0Q) Composite<br>(generated every 5 minutes)</td>\n  <td>4326<br> <i>(Lat-Lon)</i></td>\n  <td>\n  <ul>\n   <li><a href=\"/data/gis/images/4326/USCOMP/n0r_0.png\">PNG format</a></li>\n   <li><a href=\"/data/gis/images/4326/USCOMP/n0r_0.tif\">8bit TIFF</a></li>\n   </ul>\n   </td>\n  <td><a href=\"/data/gis/images/4326/USCOMP/n0r_0.wld\">Decimal Degree Units</a></td>\n</tr>\n\n\n<tr>\n  <td>US Storm Total Precip (DTA) Composite<br>(generated every 5 minutes)</td>\n  <td>4326<br> <i>(Lat-Lon)</i></td>\n  <td>\n  <ul>\n   <li><a href=\"/data/gis/images/4326/USCOMP/dta_0.png\">PNG format</a></li>\n   <li><a href=\"/data/gis/images/4326/USCOMP/dta_0.tif\">8bit TIFF</a></li>\n   </ul>\n   </td>\n  <td><a href=\"/data/gis/images/4326/USCOMP/dta_0.wld\">Decimal Degree Units</a></td>\n</tr>\n\n<tr>\n  <td>US 1 Hour Precip (DAA) Composite<br>(generated every 5 minutes)</td>\n  <td>4326<br> <i>(Lat-Lon)</i></td>\n  <td>\n  <ul>\n   <li><a href=\"/data/gis/images/4326/USCOMP/daa_0.png\">PNG format</a></li>\n   <li><a href=\"/data/gis/images/4326/USCOMP/daa_0.tif\">8bit TIFF</a></li>\n   </ul></td>\n  <td><a href=\"/data/gis/images/4326/USCOMP/daa_0.wld\">Decimal Degree Units</a></td>\n</tr>\n\n</table><p>\n\n<h3 class=\"subtitle\">Web Map Service (WMS):</h3>\n\n<br><a href=\"http://www.opengis.org/techno/specs/01-068r3.pdf\">WMS</a> is a neat way to pull in images into your GIS, if your GIS can act\nas a WMS client.  Describing WMS is beyond the scope of this page, but we have\nset up a WMS on our webserver.  Point your WMS aware client at \n<br><br><code>{$EXTERNAL_BASEURL}/wms/radar.php?</code><br><br>\nfor Iowa imagery in EPSG: 26915 (<i>NAD83 / UTM Zone 15N</i>)\n\n<br><b>-or</b>\n\n<br />Base Reflectivity: &nbsp; <code>{$EXTERNAL_BASEURL}/cgi-bin/wms/nexrad/n0r.cgi?</code>\n<br />1 Hour Rainfall: &nbsp; <code>{$EXTERNAL_BASEURL}/cgi-bin/wms/nexrad/daa.cgi?</code>\n<br />Storm Total Rainfall: &nbsp; <code>{$EXTERNAL_BASEURL}/cgi-bin/wms/nexrad/dta.cgi?</code>\n\n<br /><br />for United States imagery in EPSG: 4326 (<i>unprojected lat-lon</i>)\n\n<p><b>Note:</b> The WMS service should be able to send back an image in the\nprojection of your choice.  This has worked during the limited testing done in house.\n\n<p>There are many free web WMS clients available on the Internet.  Recently,\nESRI has released an <a href=\"http://www.opengis.org\">OGC</a> extension \nsupporting WMS for their free client called <a href=\"http://www.esri.com/software/arcexplorer/\">ArcExplorer</a>.  After downloading ArcExplorer, you will want to also download the <a href=\"http://gis.esri.com/download/index.cfm?downloadid=321\">Interoperability Extension</a>.  ESRI has also released an extension for \nArcIMS! \n\n<h3>Notes and Caveats:</h3>\n<ol>\n<li>The storm total precipitation (NTP) product does not directly mosiac.  Each \nNEXRAD site reports the value for a different timespan.  Basically, once the\nradar detects rain, it will begin to accumulate the rainfall in the NTP product.\nOnce it stops raining for an hour, the value is reset to zero.  Since all sites\nreset at different times, you see the issue.</li>\n</ol>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/GIS/rasters.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 82);\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\n$t = new MyView();\n$mesosite = iemdb(\"mesosite\");\n\n$t->title = \"GIS RASTER Documentation\";\n\n$rid = get_int404(\"rid\", 1);\n\n$table = \"\";\n$rs = pg_query($mesosite, \"SELECT * from iemrasters ORDER by name ASC\");\n\n$rname = \"\";\n$runits = \"\";\n$urltemplate = \"\";\nwhile ($row = pg_fetch_assoc($rs)) {\n    if ($rid == intval($row[\"id\"])) {\n        $rname = $row[\"name\"];\n        $runits = $row[\"units\"];\n        $urltemplate = str_replace(\n            \"/mesonet/ARCHIVE\",\n            \"{$EXTERNAL_BASEURL}/archive\",\n            is_null($row[\"filename_template\"]) ? \"\": $row[\"filename_template\"]\n        );\n        $t->title = sprintf(\"RASTER info for %s\", $rname);\n    }\n    $table .= sprintf(\n        \"<tr><td><a href=\\\"?rid=%s\\\">%s</a></td>\"\n            . \"<td>%s</td><td>%s</td></tr>\\n\",\n        $row[\"id\"],\n        $row[\"name\"],\n        $row[\"description\"],\n        $row[\"units\"]\n    );\n}\n\nfunction rgb2html($r, $g, $b)\n{\n    if (is_array($r) && sizeof($r) == 3)\n        list($r, $g, $b) = $r;\n\n    $r = intval($r);\n    $g = intval($g);\n    $b = intval($b);\n\n    $r = dechex($r < 0 ? 0 : ($r > 255 ? 255 : $r));\n    $g = dechex($g < 0 ? 0 : ($g > 255 ? 255 : $g));\n    $b = dechex($b < 0 ? 0 : ($b > 255 ? 255 : $b));\n\n    $color = (strlen($r) < 2 ? '0' : '') . $r;\n    $color .= (strlen($g) < 2 ? '0' : '') . $g;\n    $color .= (strlen($b) < 2 ? '0' : '') . $b;\n    return '#' . $color;\n}\n\n$table2 = \"\";\nif ($rid > 0) {\n    $stname = iem_pg_prepare($mesosite, \"SELECT * from iemrasters_lookup\"\n        . \" WHERE iemraster_id = $1 ORDER by coloridx ASC\");\n    $rs = pg_execute($mesosite, $stname, array($rid));\n    while ($row = pg_fetch_assoc($rs)) {\n        $table2 .= sprintf(\n            \"<tr><td>%s</td><td>%s</td><td>%s</td>\"\n                . \"<td>%s</td><td>%s</td><td>%s</td></tr>\\n\",\n            $row[\"coloridx\"],\n            (is_null($row[\"value\"])) ? 'Missing' : $row[\"value\"],\n            $row[\"r\"],\n            $row[\"g\"],\n            $row[\"b\"],\n            rgb2html($row[\"r\"], $row[\"g\"], $row[\"b\"])\n        );\n    }\n}\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"/GIS/\">GIS Mainpage</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">IEM RASTER Information</li>\n    </ol>\n</nav>\n\n<p>The IEM produces a number of RASTER images meant for GIS use. These RASTERs\nare typically provided on the IEM website as 8 bit PNG images. This means there\nare 256 slots available for a binned value to be placed. This page documents\nthese RASTER images and provides the lookup table of PNG index to an actual\nvalue. Click on the item in the \"Label\" column to get the lookup table below.</p>\n\n<div class=\"table-responsive\">\n<table class=\"table table-sm table-striped\">\n    <thead>\n        <tr><th>Label</th><th>Description</th><th>Units</th></tr>\n    </thead>\n    <tbody>\n        {$table}\n    </tbody>\n</table>\n</div>\n\n<h3>Programmatic access to this RASTER source</h3>\n\n<p>The IEM generated RASTERs are stored in a programmatic way that should allow\nfor easy scripted download of the archive. This section documents the URL\ntemplate used with the time shown in UTC. The string format modifiers below\nare <a href=\"https://docs.python.org/2/library/time.html#time.strftime\">pythonic strftime values</a>.</p>\n\n<pre class=\"p-2 bg-light border\">{$urltemplate}</pre>\n\n<p>A general web service also exists to convert these RASTERs to netCDF \"on-the-fly\".\nThe URL format is like so:</p>\n\n<pre class=\"p-2 bg-light border\">{$EXTERNAL_BASEURL}/cgi-bin/request/raster2netcdf.py?dstr=%Y%m%d%H%M&amp;prod={$rname}</pre>\n\n<h4>Try the netCDF conversion</h4>\n<form method=\"GET\" name=\"try\" action=\"/cgi-bin/request/raster2netcdf.py\" class=\"row g-2 align-items-end\">\n    <input type=\"hidden\" name=\"prod\" value=\"{$rname}\">\n    <div class=\"col-auto\">\n        <label for=\"ts\" class=\"form-label\">UTC Timestamp (%Y%m%d%H%M)</label>\n        <input id=\"ts\" type=\"text\" name=\"dstr\" value=\"201710250000\" class=\"form-control\">\n    </div>\n    <div class=\"col-auto\">\n        <button type=\"submit\" class=\"btn btn-primary\"\n         aria-label=\"Generate raster\">Generate</button>\n    </div>\n</form>\n\n<h3 class=\"mt-4\">Lookup Table for {$rname}</h3>\n\n<div class=\"alert alert-info\">Would it help you to have the information below\nin a different format? Please <a class=\"alert-link\" href=\"/info/contacts.php\">contact us <i class=\"bi bi-chat-left-text\" aria-hidden=\"true\"></i></a>\nif so!</div>\n\n<div class=\"table-responsive\">\n<table class=\"table table-sm table-striped\">\n    <thead>\n        <tr><th>Color Index</th><th>Value ({$runits})</th><th>Red</th><th>Green</th>\n        <th>Blue</th><th>HEX</th></tr>\n    </thead>\n    <tbody>\n        {$table2}\n    </tbody>\n</table>\n</div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/GIS/rby-overview.php",
    "content": "<?php\n/*\n * Draw a map of the CONUS with a simple box showing the area of interest\n */\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/vendor/mapscript.php\";\n\n$extents = array_key_exists(\"BBOX\", $_GET) ? explode(\",\", $_GET[\"BBOX\"]) :\n    array(-105, 40, -97, 47);\n\n$mapFile = \"../../data/gis/base4326.map\";\n$map = new mapObj($mapFile);\n$map->setSize(300, 130);\n\n$map->setExtent(-126, 24, -66, 50);\n\n$img = $map->prepareImage();\n\n$namerica = $map->getLayerByName(\"namerica\");\n$namerica->__set(\"status\", MS_ON);\n$namerica->draw($map, $img);\n\n$lakes = $map->getLayerByName(\"lakes\");\n$lakes->__set(\"status\", MS_ON);\n$lakes->draw($map, $img);\n\n$states = $map->getLayerByName(\"states\");\n$states->__set(\"status\", MS_ON);\n$states->draw($map, $img);\n\n/* Now we draw a box */\n$rect = $map->getLayerByName(\"rect\");\n$rect->__set(\"status\", MS_ON);\n$rt = new rectObj($extents[0], $extents[1], $extents[2], $extents[3]);\n$rt->draw($map, $rect, $img, 0, \" \");\n\nheader(\"Content-type: image/png\");\necho $img->getBytes();\n"
  },
  {
    "path": "htdocs/GIS/ridge.phtml",
    "content": "<?php \nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n\ndefine(\"IEM_APPID\", 67);\n$t->title = \"GIS RADAR Information\";\n\n$d = date(\"Y/m/d\");\n$t->content = <<<EOM\n<style>\n.coded {\n    border-top: 1px solid #ccc; \n    background: #EEFFCC; \n    border-bottom: 1px solid #ccc; \n    padding-left: 5px;\n}\n</style>\n<h3>IEM Provided NWS NEXRAD Imagery for GIS</h3>\n\n<div class=\"warning\">This services are provided as-is and without warranty.\nThe purpose is to provide an archive to help support display applications\nand produce plots within GIS. Please do not use these services in applications\nthat have thousands of simultaneous users!  Our servers will melt!</div>\n\n<div style=\"width: 310px; float: right; border: 1px solid #000; padding: 5px; margin: 5px;\">\n<a href=\"{$EXTERNAL_BASEURL}/archive/data/1999/05/04/GIS/ridge/TLX/N0R/TLX_N0R_199905040012.png\">\n<img width=\"300\" src=\"{$EXTERNAL_BASEURL}/archive/data/1999/05/04/GIS/ridge/TLX/N0R/TLX_N0R_199905040012.png\">\n</a>\n<br />May 3, 1999 : Moore Oklahoma F5 Tornado 7:12 PM.\n</div>\n\n<p>Since 2003, the IEM has been providing <a href=\"/docs/nexrad_mosaic/\">mosiacs</a> \nof National Weather Service\nRADAR imagery for use within GIS systems.  While these mosaics are nice, they\nare often ugly at very small scales (due to the crude nature of the mosaicking\nprocess).  These images are also of base reflectivity and not of non-compositable\nproducts like velocity.\n\n<p>The services mentioned on this page provide access to products that contain\ndata from one RADAR site for one level3 product at one volume scan time!  The \narchive for these products starts in 2012.\n\n<p>These images are provided in the \n<a href=\"https://spatialreference.org/ref/epsg/4326/\">EPSG:4326</a> projection. This\nis a commonly used projection for what people like to call \"un-projected\" lat/lon. Of\ncourse, this is not correct terminology, but anyway...\n\n<h3>Change Log:</h3>\n<ul>\n  <li><strong>29 March 2022</strong>: The NWS will soon stop the NOAAPort dissemination of\n  a number of Level III RADAR products, including <code>N0Q</code>.  In preparation\n  for that upcoming date, <code>N0B</code> imagery is now being saved.</li>\n</ul>\n\n<h3>Realtime Raw Data:</h3>\n\n<p>The most recent imagery is dumped into a browser navigable folder \n<a href=\"/data/gis/images/4326/ridge/\">here</a>. There is one folder per RADAR\nsite given by its three character call identifier.  Data for FAA and DOD RADARs\nis available as well here.  Due to storage and CPU constraints, we are not \nprocessing all level3 products at this time.  The following is a list of \nprocessed products, click on the name for a color ramp for that product.\n<ul>\n <li>TZL - <a href=\"legends/TZL.gif\">TDWR Base Reflectivity</a></li>\n <li>TV0 - <a href=\"legends/TV0.gif\">TDWR Base Velocity</a></li>\n <li>N0B - <a href=\"legends/N0B.gif\">8bit High Resolution Base Reflectivity</a></li>\n <li>N0Q - <a href=\"legends/N0Q.gif\">8bit High Resolution Base Reflectivity</a></li>\n <li>N0S - <a href=\"legends/N0S.gif\">Storm Relative Base Velocity</a></li>\n <li>N0Z - <a href=\"legends/N0Z.gif\">248nm Base Reflectivity</a></li>\n <li>N0U - <a href=\"legends/N0U.gif\">8bit Base Velocity</a></li>\n <li>NET - <a href=\"legends/NET.gif\">Net Echo Tops</a></li>\n</ul>\n\n<p><strong>Wait! Why are you not processing XYZ?</strong> Well, perhaps because\nnobody has requested it. Contact us and let us know why XYZ is important! :)\n\n<p>These products are located within each RADAR ID folder as sub-folders.  Then\ninside of the product folder, is the raw imagery.  Each image has an associated\nworld file and a json formatted metadata file.  This json metadata has information\nlike volume coverage pattern and may contain other information in the future.\n\n<h3>Archived Raw Data:</h3>\n\n<p>An intense aspect of this effort is to archive all of the images we generate!\nThis is a scary proposition at the moment, but if we fail, let us fail in a \nspectacular manner!  This should generate terabytes of data per year and millions\nof files!  Anyway, these images are organized like the real-time data, but in\nper-UTC day folders like so:\n<br />\n<a href=\"/archive/data/{$d}/GIS/ridge/\">{$EXTERNAL_BASEURL}/archive/data/{$d}/GIS/ridge/</a> \n\n<p>Data appears in the archive at the same time as it does for the realtime data.\nSo this is neat, but how can you programically work with this data?  Here is\n<a href=\"https://github.com/akrherz/DEV/blob/main/ridge/fetch_files.py\">a example script</a>\nthat uses the API below to download a single RADAR product for a time period of \nyour choice.\n\n<h3>JSON Metadata services</h3>\n\n<p>In order to write fancy pants web applications, you need to be able to find out\nwhat imagery exists in the IEM's archive!  Here are details on a few JSON emitting\nweb services that may be able to help you.  These services are still being developed,\nso please send critical feedback on how to improve them.\n\n<p><strong>Available RADARs:</strong><br /> This service returns single site and\ncomposite RADAR IDs for a location and time of your choice.  This attempts to \nanswer the question: if I want to show a map for New York City on 28 March 2011, \nwhich RADAR sites are available?  If you do not specific a location, the\nservice returns an estimate of RADARs available for the date of your timestamp.\n<br />\n<pre class=\"coded\">\nURI: {$EXTERNAL_BASEURL}/json/radar.py?operation=available\nHTTPD GET Variables:\n lat    - (optional) Latitude of your interested point \n lon    - (optional) Longitude (-180 to 180) of your interested point\n start  - UTC timestamp in ISO-8601 format YYYY-mm-ddTHH:MMZ\n</pre></p>\n\n<p><strong>Available Products for RADAR:</strong><br /> This service returns\nwhat products are available for this RADAR near a given time. <br />\n<pre class=\"coded\">\nURI: {$EXTERNAL_BASEURL}/json/radar.py?operation=products\nHTTPD GET Variables:\n radar  - RADAR identifier \n start  - UTC timestamp in ISO-8601 format YYYY-mm-ddTHH:MMZ\n</pre></p>\n\n<p><strong>Available Volume Scans for RADAR+Product+Time Interval:</strong>\n<br /> This service returns what volume scan times are available for a given\nradar, product, and during a period of time.  The results of this query can\nthen be fed back to request actual images or tiles from the Tile Map Service.\n<strong>This service has a 500 scan limit return for each query.</strong><br />\n<pre class=\"coded\">\nURI: {$EXTERNAL_BASEURL}/json/radar.py?operation=list\nHTTPD GET Variables:\n radar  - RADAR identifier \n product- level3 product identifier\n start  - UTC timestamp in ISO-8601 format YYYY-mm-ddTHH:MMZ\n end    - UTC timestamp in ISO-8601 format YYYY-mm-ddTHH:MMZ\n</pre></p>\n\n<h3>Tile Map Service</h3>\n\n<p>The IEM provides a caching <a href=\"/ogc/\">tile map service</a> to provide \ntiles to Google Maps type applications in spherical mercator projection. This\narchive and current realtime imagery is exposed via this service!  Here is how\nyou can access it:<br />\n<pre class=\"coded\">\nArchived:\n{$EXTERNAL_BASEURL}/cache/tile.py/1.0.0/ridge::BMX-N0Q-201201230813/7/33/50.png\n\nLatest imagery:\n{$EXTERNAL_BASEURL}/cache/tile.py/1.0.0/ridge::BMX-N0Q-0/7/33/50.png\n</pre>\n\n<p>The 7/33/50 portion is the standard Z/X/Y tile map specification, your plotting\napplication will generate these automatically.  The key portion is the \n\"ridge::BMX-N0Q-201201230813\" service name.  This is used by the server code to \nfind the archived image you want.  The \"BMX-N0Q-201201230813\" should hopefully \nmake sense, it is the combination of RADAR ID, product ID, and UTC timestamp of\nthe imagery!  Specifying zero as the timestamp will give you the most recent \nimage, which is hopefully current!\n\n<p>There you have it, we would be happy to know what you think of this.  Hopefully\nyou come up with interesting things that do not overwhelm our server :)  Someday,\nwe will come up with something clever to provide legends for the imagery!\n\n<h3>LDM Service</h3>\n\n<p>All of the generated imagery passes through Unidata's LDM software.  If you \nhave LDM and would like a feed of the imagery, we can certainly provide you\none!  It comes on the EXP feedtype with easy to use product identifiers.\n\n<h3>Final Notes and Credits:</h3>\n\n<p>A big thanks goes to the National Weather Service RIDGE team, who we have worked\nwith on their RADAR web mapping projects.  It is our hope that many of the services\ndeveloped will find a stable and permanent home with the NWS someday!\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/GIS/sbw-history.php",
    "content": "<?php\n/* Generate an ultra fancy plot of a storm based warning history! */\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/reference.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/mlib.php\";\nrequire_once \"../../include/vendor/mapscript.php\";\n\n$mapFile = \"../../data/gis/base4326.map\";\n$postgis = iemdb(\"postgis\");\n\n/* Figure out what our VTEC is! */\n$vtec = get_str404(\"vtec\", \"2008.KICT.SV.W.0345\");\n\nlist($year, $wfo, $phenomena, $significance, $eventid) = explode(\".\", $vtec);\n$utcnow = new DateTime('now', new DateTimeZone(\"UTC\"));\n$eventid = intval(xssafe($eventid));\n$year = intval(xssafe($year));\nif (($year > (intval($utcnow->format(\"Y\")) + 1)) || ($year < 1980)) {\n    xssafe(\"<tag>\");\n}\n$wfo = substr(xssafe($wfo), 1, 3);\n$phenomena = substr(xssafe($phenomena), 0, 2);\n$significance = substr(xssafe($significance), 0, 1);\n\n$stname = iem_pg_prepare(\n    $postgis,\n    <<<EOM\n    SELECT polygon_begin at time zone 'UTC' as utc_polygon_begin,\n    ST_xmax(geom), ST_ymax(geom),\n    ST_xmin(geom), ST_ymin(geom), *,\n    round((ST_area2d(ST_transform(geom,9311))/1000000)::numeric,0 ) as area\n    from sbw WHERE phenomena = $1 and\n    eventid = $2 and wfo = $3 and significance = $4 and vtec_year = $5\n    ORDER by polygon_begin ASC\nEOM);\n\n$rs = pg_execute($postgis, $stname, array($phenomena, $eventid, $wfo, $significance, $year));\n\n$rows = pg_num_rows($rs);\n\nif ($rows < 2) {\n    $width = 640;\n    $height = 540;\n    $twidth = 636;\n    $theight = 476;\n    $px = array(3,);\n    $py = array(50,);\n} else if ($rows >= 2 && $rows < 5) {\n    $width = 640;\n    $height = 540;\n    $twidth = 316;\n    $theight = 236;\n    $px = array(3, 323, 3, 323);\n    $py = array(50, 50, 290, 290);\n} else {\n    $width = 640;\n    $height = 540;\n    $twidth = 206;\n    $theight = 154;\n    $px = array(10, 220, 430, 10, 220, 430, 10, 220, 430);\n    $py = array(60, 60, 60, 230, 230, 230, 390, 390, 390);\n}\n\n$map2 = new mapObj($mapFile);\n$map2->imagecolor->setrgb(155, 155, 155);\n$map2->setSize($width, $height);\n$img2 = $map2->prepareImage();\n\n$buffer = 0.3;\n\n$xmax = 0;\n$ymax = 0;\n$xmin = 0;\n$xmax = 0;\n$gdimg_dest = null;\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n    if ($i > 8) {\n        continue;\n    }\n    if ($i == 0) {\n        $xmax = $row[\"st_xmax\"];\n        $ymax = $row[\"st_ymax\"];\n        $xmin = $row[\"st_xmin\"];\n        $ymin = $row[\"st_ymin\"];\n        $xspace = $xmax - $xmin;\n        $yspace = ($ymax - $ymin) * 1.5;\n        $cross = ($xspace >= $yspace) ? $xspace : $yspace;\n        $xc = $xmin + ($xmax - $xmin) / 2;\n        $yc = $ymin + ($ymax - $ymin) / 2;\n        $xmin = $xc - ($cross / 2) - $buffer;\n        $ymin = $yc - ($cross / 2) - (.5 * $buffer);\n        $ymax = $yc + ($cross / 2) + (1.5 * $buffer);\n        $xmax = $xc + ($cross / 2) + $buffer;\n        $bar640t = $map2->getLayerByName(\"bar640t\");\n        $bar640t->__set(\"status\", MS_ON);\n        $bar640t->draw($map2, $img2);\n\n        $tlayer = $map2->getLayerByName(\"bar640t-title\");\n        $point = new pointObj();\n        $point->setXY(80, 8);\n        if ($rows > 8) {\n            $point->draw($map2, $tlayer, $img2, 0, \"Storm Based Warning History (First 9 shown)\");\n        } else {\n            $point->draw($map2, $tlayer, $img2, 0, \"Storm Based Warning History\");\n        }\n\n        $point = new pointObj();\n        $point->setXY(80, 25);\n        $d = date(\"d M Y h:i A T\",  strtotime($row[\"init_expire\"]));\n        $point->draw($map2, $tlayer, $img2, 1, \"$wfo \" . $reference[\"vtec_phenomena\"][$phenomena] . \" \" . $reference[\"vtec_significance\"][$significance] . \" #$eventid till  $d\");\n\n        $layer = $map2->getLayerByName(\"logo\");\n        $point = new pointObj();\n        $point->setXY(40, 26);\n        $point->draw($map2, $layer, $img2, 0, \"\");\n\n        $map2->drawLabelCache($img2);\n        $gdimg_dest = imagecreatefromstring($img2->getBytes());\n\n        $sz0 = ($row[\"area\"] < 0.001) ? 0.001 : $row[\"area\"];\n    }\n\n    $map = new mapObj($mapFile);\n    $map->__set(\"width\", $twidth);\n    $map->__set(\"height\", $theight);\n    $map->setExtent($xmin, $ymin, $xmax, $ymax);\n\n    $img = $map->prepareImage();\n\n    $namerica = $map->getLayerByName(\"namerica\");\n    $namerica->__set(\"status\", MS_ON);\n    $namerica->draw($map, $img);\n\n    $lakes = $map->getLayerByName(\"lakes\");\n    $lakes->__set(\"status\", MS_ON);\n    $lakes->draw($map, $img);\n\n    $polygon_begin = new DateTime($row[\"utc_polygon_begin\"], new DateTimeZone(\"UTC\"));\n    // Ensure we have a timestamp modulo 5 minutes to match archive RADAR\n    $radts = clone $polygon_begin;\n    $mins = intval($radts->format(\"i\")) % 5;\n    if ($mins > 0) {\n        $radts->sub(new DateInterval(\"PT{$mins}M\"));\n    }\n    $rtype = (intval($radts->format(\"Y\")) > 2010) ? \"n0q\": \"n0r\";\n    $radarfn = sprintf(\n        \"/mesonet/ARCHIVE/data/%s/GIS/uscomp/{$rtype}_%s.png\",\n        $radts->format(\"Y/m/d\"),\n        $radts->format(\"YmdHi\"),\n    );\n    if (is_file($radarfn)) {\n        $radar = $map->getLayerByName(\"nexrad_{$rtype}\");\n        $radar->__set(\"status\", MS_ON);\n        $radar->__set(\"data\", $radarfn);\n        $radar->draw($map, $img);\n    }\n\n    $counties = $map->getLayerByName(\"uscounties\");\n    $counties->__set(\"status\", MS_ON);\n    $counties->draw($map, $img);\n\n    $states = $map->getLayerByName(\"states\");\n    $states->__set(\"status\", MS_ON);\n    $states->draw($map, $img);\n\n    $wc = new layerObj($map);\n    $wc->setConnectionType(MS_POSTGIS, \"\");\n    $wc->__set(\"connection\", get_dbconn_str(\"postgis\"));\n    $wc->__set(\"status\", MS_ON);\n    $sql = sprintf(\n        \"geom from (select random() as oid, geom from sbw \" .\n            \"WHERE vtec_year = %s and phenomena = '%s' and wfo = '%s' and eventid = %s and \" .\n            \"significance = '%s' and status = 'NEW') as foo using unique oid \" .\n            \"using SRID=4326\",\n        $year,\n        $phenomena,\n        $wfo,\n        $eventid,\n        $significance\n    );\n    $wc->__set(\"data\", $sql);\n    $wc->__set(\"type\", MS_LAYER_LINE);\n    $wc->setProjection(\"init=epsg:4326\");\n\n    $wcc0 = new classObj($wc);\n    $wcc0s0 = new styleObj($wcc0);\n    $wcc0s0->color->setRGB(255, 255, 255);\n    $wcc0s0->__set(\"width\", 2);\n    $wcc0s0->__set(\"symbol\", 'circle');\n    $wc->draw($map, $img);\n    $map->drawLabelCache($img);\n\n    $wc = new layerObj($map);\n    $wc->setConnectionType(MS_POSTGIS, \"\");\n    $wc->__set(\"connection\", get_dbconn_str(\"postgis\"));\n    $wc->__set(\"status\", MS_ON);\n    $sql = sprintf(\n        \"geom from (select random() as oid, geom from sbw \" .\n            \"WHERE vtec_year = %s and phenomena = '%s' and wfo = '%s' and eventid = %s and \" .\n            \"significance = '%s' and polygon_begin = '%s') as foo \" .\n            \"using unique oid using SRID=4326\",\n        $year,\n        $phenomena,\n        $wfo,\n        $eventid,\n        $significance,\n        $row[\"polygon_begin\"]\n    );\n    $wc->__set(\"data\", $sql);\n    $wc->__set(\"type\", MS_LAYER_LINE);\n    $wc->setProjection(\"init=epsg:4326\");\n\n    $wcc0 = new classObj($wc);\n    $wcc0->__set(\"name\", $row[\"area\"] . \" sq km [\" . intval($row[\"area\"] / $sz0 * 100) . \"%]\");\n    $wcc0s0 = new styleObj($wcc0);\n    $wcc0s0->color->setRGB(255, 0, 0);\n    $wcc0s0->__set(\"width\", 3);\n    $wcc0s0->__set(\"symbol\", 'circle');\n    $wc->draw($map, $img);\n    $map->drawLabelCache($img);\n\n    $bar640t = $map->getLayerByName(\"bar640t\");\n    $bar640t->__set(\"status\", 1);\n    $bar640t->draw($map, $img);\n\n    $tlayer = $map->getLayerByName(\"bar640t-title\");\n    $point = new pointObj();\n    $point->setXY(2, 8);\n    $point->draw($map, $tlayer, $img, 0, $reference[\"vtec_action\"][$row[\"status\"]]);\n\n    $point = new pointObj();\n    $point->setXY(2, 25);\n    $d = date(\"d M Y h:i A T\",  strtotime($row[\"polygon_begin\"]));\n    $point->draw($map, $tlayer, $img, 1, \"$d\");\n\n    $map->embedLegend($img);\n    $map->drawLabelCache($img);\n    $gdimg_src = imagecreatefromstring($img->getBytes());\n    imagecopy(\n        $gdimg_dest,\n        $gdimg_src,\n        $px[$i],\n        $py[$i],\n        0,\n        0,\n        $twidth,\n        $theight,\n    );\n    imagedestroy($gdimg_src);\n}\nheader(\"Content-type: image/png\");\nif (is_null($gdimg_dest)){\n    $gdimg_dest = imagecreatefromstring($img2->getBytes());\n}\necho imagepng($gdimg_dest);\n"
  },
  {
    "path": "htdocs/GIS/tiff/index.py",
    "content": "\"\"\"implemented in pylib/iemweb/GIS/tiff/index.py\"\"\"\n\nfrom iemweb.GIS.tiff.index import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/QC/index.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Quality Control\";\n$t->content = <<<EOM\n\n<h3>Quality Control Products</h3>\n\n<p>This page contains links to Quality Control (QC) products generated\n    on the IEM server.</p>\n\n<ul>\n <li><a href=\"/QC/madis/network.phtml\">MADIS Raw QC</a></li>\n</ul>\n\n<p><h3>IEM Tracker Links:</h3>\n<ul>\n   <li>Sites currently <a href=\"offline.php\">offline</a></li>\n   <li><a href=\"tickets.phtml\">Active Trouble Tickets</a></li>\n</ul>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/QC/madis/network.css",
    "content": "#w { color: #ff0000;}\n#c { color: #0000ff;}\n#divider{ \n  border-style: none;\n  text-align: center;\n  background-color: #CCCCCC;\n}\n"
  },
  {
    "path": "htdocs/QC/madis/network.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 97);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/mlib.php\";\n\n$t = new MyView();\n$t->title = \"Quality Control, MADIS Raw QC\";\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/QC/madis/network.css\">\nEOM;\n$dbconn = iemdb(\"iem\");\n$stname = iem_pg_prepare(\n    $dbconn,\n    \"SELECT c.*, t.id as station, t.name, \" .\n        \"c.valid at time zone 'UTC' as uv from current_qc c JOIN stations t on \" .\n        \"(c.iemid = t.iemid) WHERE t.network = $1\"\n);\n$sortcol = isset($_GET[\"sortcol\"]) ? xssafe($_GET[\"sortcol\"]) : \"station\";\n$network = isset($_GET[\"network\"]) ? substr(xssafe($_GET[\"network\"]), 0, 10) : \"IA_ASOS\";\nif ($network == \"AWOS\") {\n    $network = \"IA_ASOS\";\n}\n$baa = \"network.phtml?network={$network}\";\n\n$rs = pg_execute($dbconn, $stname, array($network));\n\n$data = array();\nwhile ($row = pg_fetch_assoc($rs)) {\n    $data[$row[\"station\"]] = $row;\n}\n\n$finalA = array();\n$finalA = aSortBySecondIndex($data, $sortcol);\n\n$rs = pg_query(\n    iemdb(\"mesosite\"),\n    \"SELECT id, name from networks\"\n);\n$networks = array();\nwhile ($row = pg_fetch_assoc($rs)) {\n    $networks[$row[\"id\"]] = $row[\"name\"];\n}\n\n$rs = pg_query(\n    $dbconn,\n    \"select distinct network from current_qc q JOIN stations t \" .\n        \"ON (q.iemid = t.iemid) ORDER by network ASC\"\n);\n$ar = array();\nwhile ($row = pg_fetch_assoc($rs)) {\n    $ar[$row[\"network\"]] = $networks[$row[\"network\"]];\n}\n$sselect = make_select(\"network\", $network, $ar);\n\n$i = false;\n\nfunction vp($v, $r)\n{\n    if (is_null($v)) return \"<td>M</td>\";\n    $v = floatval($v);\n    if ($v > 0) return '<td><font id=\"c\">' . myround($v, $r) . '</font></td>';\n    else if ($v < 0) return '<td><font id=\"w\">' . myround($v, $r) . '</font></td>';\n    return '<td>' . myround($v, $r) . '</td>';\n}\nfunction pp($v, $r)\n{\n    if (is_null($v)) return \"M\";\n    $v = floatval($v);\n    if (intval($v) == -17966) return 'M';\n    return myround($v, $r);\n}\n$table = \"\";\n$now = new DateTime(\"now\");\n$thisyear = $now->format(\"Y\");\nforeach ($finalA as $key => $val) {\n    $ts = new DateTime($val[\"uv\"]);\n    $fmt = ($ts->format(\"Y\") == $thisyear) ? \"d G:i\" : \"Y M d G:i\";\n    $table .= '<tr ';\n    if ($i) $table .= 'class=\"even\"';\n    $table .= '><td>' . $val[\"station\"] . '</td><td>' . $val[\"name\"] . '</td>\n  <td>' . $ts->format($fmt) . 'Z</td>\n  <td id=\"divider\">' . pp($val[\"tmpf\"], 0) . '</td>' .\n        vp($val[\"tmpf_qc_av\"], 1) .\n        vp($val[\"tmpf_qc_sc\"], 1) .\n        '<td id=\"divider\">' . pp($val[\"dwpf\"], 0) . '</td>' .\n        vp($val[\"dwpf_qc_av\"], 1) .\n        vp($val[\"dwpf_qc_sc\"], 1) .\n        '<td id=\"divider\">' . pp($val[\"alti\"], 2) . '</td>' .\n        vp($val[\"alti_qc_av\"], 2) .\n        vp($val[\"alti_qc_sc\"], 2) .\n        '</tr>';\n\n    $i = !$i;\n}\n\n$t->content = <<<EOM\n<h1 class=\"h4 mb-3\">MADIS QC Values</h1>\n<p>Here are the MADIS quality control values for selected networks in the IEM.\n<span class=\"text-danger fw-semibold\">Red numbers</span> indicate the observed value is above the expected range.\n<span class=\"text-primary fw-semibold\">Blue numbers</span> indicate the observed value is below the expected range.\nThe <strong>QC</strong> value is an average of all MADIS QC routines. The <strong>Spatial</strong> column is the result of the <em>Spatial Consistency Check</em>.</p>\n\n<form method=\"GET\" name=\"switchNetwork\" class=\"row gy-2 align-items-end\" role=\"search\" aria-label=\"Select network to view\">\n    <div class=\"col-auto\">\n        <label for=\"network\" class=\"form-label fw-semibold\">Network</label>\n        {$sselect}\n    </div>\n    <div class=\"col-auto\">\n        <button type=\"submit\" class=\"btn btn-primary\">Switch Network</button>\n    </div>\n</form>\n\n<div class=\"mt-3 mb-2 small text-muted\" id=\"madis-qc-legend\" aria-live=\"polite\">Color legend: <span class=\"text-danger fw-semibold\">High bias</span>, <span class=\"text-primary fw-semibold\">Low bias</span>.</div>\n\n<table id=\"madis-qc-table\" class=\"table table-sm table-striped table-bordered align-middle\" aria-describedby=\"madis-qc-legend\">\n<caption class=\"text-start\">MADIS QC table listing recent observation valid time (UTC) with observed (OB), overall quality control (QC) average, and spatial consistency (Spatial) checks for Air Temperature, Dewpoint, and Altimeter. Column sort links reload the page.</caption>\n<thead class=\"sticky\">\n<tr>\n    <th scope=\"col\" rowspan=\"2\"><a href=\"{$baa}&sortcol=station\">Site ID</a></th>\n    <th scope=\"col\" rowspan=\"2\"><a href=\"{$baa}&sortcol=sname\">Station Name</a></th>\n    <th scope=\"col\" rowspan=\"2\">Ob Valid (UTC)</th>\n    <th scope=\"col\" colspan=\"3\" id=\"atgroup\">Air Temperature [F]</th>\n    <th scope=\"col\" colspan=\"3\" id=\"dwgroup\">Dewpoint [F]</th>\n    <th scope=\"col\" colspan=\"3\" id=\"altigroup\">Altimeter [inch]</th>\n</tr>\n<tr>\n    <th scope=\"col\"><a href=\"{$baa}&sortcol=tmpf\">OB</a></th>\n    <th scope=\"col\"><a href=\"{$baa}&sortcol=tmpf_qc_av\">QC</a></th>\n    <th scope=\"col\"><a href=\"{$baa}&sortcol=tmpf_qc_sc\">Spatial</a></th>\n    <th scope=\"col\"><a href=\"{$baa}&sortcol=dwpf\">OB</a></th>\n    <th scope=\"col\"><a href=\"{$baa}&sortcol=dwpf_qc_av\">QC</a></th>\n    <th scope=\"col\"><a href=\"{$baa}&sortcol=dwpf_qc_sc\">Spatial</a></th>\n    <th scope=\"col\"><a href=\"{$baa}&sortcol=alti\">OB</a></th>\n    <th scope=\"col\"><a href=\"{$baa}&sortcol=alti_qc_av\">QC</a></th>\n    <th scope=\"col\"><a href=\"{$baa}&sortcol=alti_qc_sc\">Spatial</a></th>\n</tr>\n</thead>\n<tbody>\n{$table}\n</tbody>\n</table>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/QC/offline.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 101);\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Quality Control, Sites Offline\";\n\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/mlib.php\";\n$pgconn = iemdb(\"iem\");\n$stname = iem_pg_prepare(\n    $pgconn,\n    \"SELECT *, to_char(valid, 'Mon DD YYYY HH:MI AM') as v from offline \".\n    \"WHERE network = $1 ORDER by valid ASC\",\n);\n\nfunction networkOffline($network)\n{\n    global $pgconn, $stname;\n    $nt = new NetworkTable($network);\n    $cities = $nt->table;\n    $s = \"\";\n    $rs = pg_execute($pgconn, $stname, Array($network) );\n\n    $q = 0;\n    while ($row = pg_fetch_assoc($rs))\n    {\n        $valid = $row[\"v\"];\n        $station = $row[\"station\"];\n        if (! isset($cities[$station]))  continue;\n        $name = $cities[$station]['name'];\n        $s .= \"<tr><td>$station</td><td>$name</td><td>$valid</td></tr>\\n\";\n        $q = 1;\n    }\n    if ($q == 0){ $s .= \"<tr><td colspan=3>All Sites Online!!!</td></tr>\\n\"; }\n\n    return $s;\n}\n$rwis = networkOffline(\"IA_RWIS\");\n$awos = networkOffline(\"IA_ASOS\");\n$isusm = networkOffline(\"ISUSM\");\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n <li class=\"breadcrumb-item\"><a href=\"/QC/\">Quality Control</a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\">Sites Offline</li>\n</ol>\n</nav>\n\n<p>Unfortunately, automated observing sites occasionally go offline due\nto a wide range of factors.  Here is a listing of sites currently offline.</p>\n\n<div class=\"table-responsive\">\n<table class=\"table table-striped table-bordered\">\n<thead class=\"table-light\">\n<tr>\n <th>Site ID:</th>\n <th>Name</th>\n <th>Flagged Offline At</th>\n</tr>\n</thead>\n<tbody>\n<tr><td colspan=\"3\" class=\"table-secondary fw-bold\">ISU Soil Moisture Network (3 hour tolerance)</td></tr>\n{$isusm}\n\n<tr><td colspan=\"3\" class=\"table-secondary fw-bold\">Iowa RWIS Network (1 hour tolerance)</td></tr>\n{$rwis}\n\n<tr><td colspan=\"3\" class=\"table-secondary fw-bold\">Iowa AWOS Network (90 minute tolerance)</td></tr>\n{$awos}\n\n</tbody>\n</table>\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/QC/tickets.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 100);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\n$t = new MyView();\n$t->title = \"Quality Control, Active Trouble Tickets\";\n\n$conn = iemdb(\"portfolio\");\n$rs = pg_query($conn, \"SELECT *, getSiteName(s_mid) as s_name from tt_base \" .\n    \"WHERE status != 'CLOSED' ORDER by id ASC\");\n\n$ars = array(\"isusm\" => \"\", \"iaawos\" => \"\", \"iarwis\" => \"\");\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    if (!array_key_exists($row[\"portfolio\"], $ars)) {\n        continue;\n    }\n    $entered = new DateTime(substr($row[\"entered\"], 0, 16));\n    $last = new DateTime(substr($row[\"last\"], 0, 16));\n    $s = \"<tr>\n        <th>\" . $row[\"id\"] . \"</th>\n        <td>\" . $row[\"status\"] . \"</td>\n        <td>\" . $entered->format(\"Y-m-d\") . \"</td>\n        <td>\" . $last->format(\"Y-m-d\") . \"</td>\n        <td>[\" . $row[\"s_mid\"] . \"] \" . $row[\"s_name\"] . \"</td>\n        <td>\" . $row[\"subject\"] . \"</td>\n     </tr>\";\n    if (array_key_exists($row[\"portfolio\"], $ars)) {\n        $ars[$row[\"portfolio\"]] .= $s;\n    } else {\n        $ars[$row[\"portfolio\"]] = $s;\n    }\n}\n\nforeach ($ars as $key => $val) {\n    if ($val == '')\n        $ars[$key] = \"<tr><td colspan=\\\"6\\\">No Open/Active Tickets Found</td></tr>\";\n}\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n <li class=\"breadcrumb-item\"><a href=\"/QC/\">Quality Control</a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\">Active Trouble Tickets</li>\n</ol>\n</nav>\n\n<p>The IEM developed a system called \"IEM Tracker\" to track meta-data\nof sites in our component networks.  This page presents a listing of\n'Trouble Tickets' that are currently active.  Currently, only the ticket\nheader is presented, but in the future more info will be made publicly\navailable.  If you have any questions or comments about a ticket listed,\nplease feel free to <a href=\"/info/contacts.php\">Contact Us</a>.</p>\n\n<h3 class=\"mt-4\">Iowa State Soil Moisture Network</h3>\n<div class=\"table-responsive\">\n<table class=\"table table-striped table-bordered\">\n<thead class=\"table-light\">\n<tr>\n <th>ID</th><th>Status:</th><th>Opened:</th><th>Updated:</th><th>Site:</th>\n <th>Ticket Topic:</th>\n</tr>\n</thead>\n<tbody>\n{$ars[\"isusm\"]}\n</tbody>\n</table>\n</div>\n\n<h3 class=\"mt-4\">Iowa AWOS network</h3>\n<div class=\"table-responsive\">\n<table class=\"table table-striped table-bordered\">\n<thead class=\"table-light\">\n<tr>\n <th>ID</th><th>Status:</th><th>Opened:</th><th>Updated:</th><th>Site:</th>\n <th>Ticket Topic:</th>\n</tr>\n</thead>\n<tbody>\n{$ars[\"iaawos\"]}\n</tbody>\n</table>\n</div>\n\n<h3 class=\"mt-4\">Iowa RWIS network</h3>\n<div class=\"table-responsive\">\n<table class=\"table table-striped table-bordered\">\n<thead class=\"table-light\">\n<tr>\n <th>ID</th><th>Status:</th><th>Opened:</th><th>Updated:</th><th>Site:</th>\n <th>Ticket Topic:</th>\n</tr>\n</thead>\n<tbody>\n{$ars[\"iarwis\"]}\n</tbody>\n</table>\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/RWIS/camera.module.js",
    "content": "import { escapeHTML, getElement, getInputElement, requireInputElement } from '/js/iemjs/domUtils.js';\n\n/**\n * Format date for display\n * @param {Date} date \n * @returns {string} formatted date string\n */\nfunction formatDateForDisplay(date) {\n    const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n                   'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n    const month = months[date.getMonth()];\n    const day = date.getDate().toString().padStart(2, '0');\n    return `${month} ${day} `;\n}\n\n/**\n * Parse ISO date string\n * @param {string} val ISO date string\n * @returns {Date|null} parsed date or null\n */\nfunction parseISODate(val) {\n    if (typeof val !== 'string') {return null;}\n    const reIsoDate = /^(\\d{4})-(\\d{2})-(\\d{2})((T)(\\d{2}):(\\d{2})(:(\\d{2})(\\.\\d*)?)?)?(Z)?$/;\n    const mm = val.match(reIsoDate);\n    if (mm) {\n        return new Date(Date.UTC(\n            Number(mm[1]), \n            Number(mm[2]) - 1, \n            Number(mm[3]), \n            Number(mm[6]) || 0, \n            Number(mm[7]) || 0, \n            Number(mm[9]) || 0, \n            parseInt((Number(mm[10])) * 1000, 10) || 0\n        ));\n    }\n    return null;\n}\n\n/**\n * Set up date picker functionality\n */\nfunction setupDatePicker() {\n    const datePicker = requireInputElement('datepicker');\n    const realDateInput = requireInputElement('realdate');\n    \n    // Set up HTML5 date input\n    datePicker.type = 'date';\n    datePicker.min = '2009-12-19'; // Minimum date from PHP\n    \n    // Set default date to today\n    const today = new Date();\n    const todayString = today.toISOString().split('T')[0];\n    datePicker.value = todayString;\n    \n    // Set real date field for backend - use 4-digit year format (YYYYMMDD)\n    // Parse date string directly to avoid timezone drift issues\n    const formatDateForBackend = (dateStr) => {\n        const [year, month, day] = dateStr.split('-');\n        return `${year}${month.padStart(2, '0')}${day.padStart(2, '0')}`;\n    };\n    \n    realDateInput.value = formatDateForBackend(todayString);\n    \n    // Add event listener for date changes\n    datePicker.addEventListener('change', () => {\n        realDateInput.value = formatDateForBackend(datePicker.value);\n        fetchTimes(false);\n    });\n}\n\n/**\n * Fetch available times for selected camera and date\n * @param {string|boolean} findTime specific time to select after loading\n */\nfunction fetchTimes(findTime) {\n    const cidSelect = document.querySelector('select[name=cid]');\n    const realDateInput = getInputElement('realdate');\n    const timesSelect = document.querySelector('select[name=times]');\n    \n    const cid = cidSelect.value;\n    const myDate = realDateInput.value;\n    \n    timesSelect.innerHTML = \"<option value='-1'>Loading...</option>\";\n    \n    fetch(`/json/webcam.py?cid=${cid}&date=${myDate}`)\n        .then(response => response.json())\n        .then(data => {\n            const html = generateTimeOptionsHTML(data.images);\n            timesSelect.innerHTML = html;\n            \n            if (findTime) {\n                selectTimeOption(findTime);\n            }\n        })\n        .catch(() => {\n            // Handle error by showing appropriate message to user\n            timesSelect.innerHTML = \"<option value='-1'>Error loading times</option>\";\n        });\n}\n\n/**\n * Update URL with URLSearchParams instead of hash\n * @param {string} filename current image filename\n */\nfunction updateURL(filename) {\n    const url = new URL(window.location);\n    url.searchParams.set('image', filename);\n    window.history.replaceState({}, '', url);\n}\n\n/**\n * Get URL parameters from current location\n * @returns {URLSearchParams} current URL search parameters\n */\nfunction getURLParams() {\n    return new URLSearchParams(window.location.search);\n}\n\n/**\n * Migrate legacy hash URLs to URLSearchParams\n * This maintains backward compatibility with old bookmarked URLs\n */\nfunction migrateLegacyHashURLs() {\n    const hash = window.location.hash;\n    if (hash && hash.length > 1) {\n        const filename = hash.substring(1); // Remove the # character\n        const url = new URL(window.location);\n        \n        // Clear the hash and set as URL parameter\n        url.hash = '';\n        url.searchParams.set('image', filename);\n        \n        // Replace the URL without adding to history\n        window.history.replaceState({}, '', url);\n        \n        return filename;\n    }\n    return null;\n}\n\n/**\n * Load and display selected image\n */\nfunction getImage() {\n    const timesSelect = document.querySelector('select[name=times]');\n    const theImage = getElement('theimage');\n    \n    const href = escapeHTML(timesSelect.value);\n    if (href && href !== '-1') {\n        // Show loading indicator\n        showLoadingState(true);\n        \n        const fn = href.split('/');\n        const filename = fn[fn.length - 1];\n        \n        // Update URL with URLSearchParams instead of hash\n        updateURL(filename);\n        \n        // Preload image to handle loading states\n        const newImage = new Image();\n        newImage.onload = () => {\n            theImage.src = newImage.src;\n            showLoadingState(false);\n            updateImageInfo(timesSelect.selectedOptions[0].textContent);\n        };\n        newImage.onerror = () => {\n            theImage.alt = 'Failed to load image';\n            showLoadingState(false);\n            updateImageInfo('Error loading image');\n        };\n        newImage.src = href;\n    }\n}\n\n/**\n * Show/hide loading state for image\n * @param {boolean} isLoading whether to show loading state\n */\nfunction showLoadingState(isLoading) {\n    const theImage = getElement('theimage');\n    const container = theImage.parentElement;\n    \n    if (isLoading) {\n        container.style.opacity = '0.6';\n        container.style.cursor = 'wait';\n    } else {\n        container.style.opacity = '1';\n        container.style.cursor = 'default';\n    }\n}\n\n/**\n * Update image information display\n * @param {string} timeInfo time information to display\n */\nfunction updateImageInfo(timeInfo) {\n    let infoElement = getElement('image-info');\n    if (!infoElement) {\n        infoElement = document.createElement('div');\n        infoElement.id = 'image-info';\n        infoElement.style.cssText = 'margin-top: 10px; font-weight: bold; text-align: center; color: #666;';\n        getElement('theimage').parentElement.appendChild(infoElement);\n    }\n    infoElement.textContent = `Current Image: ${timeInfo}`;\n}\n\n/**\n * Parse URL parameters to set initial state\n * Handles both URLSearchParams and legacy hash URLs (with migration)\n */\nfunction parseURLParams() {\n    // First, check for legacy hash URLs and migrate them\n    const migratedFilename = migrateLegacyHashURLs();\n    \n    // Get current URL parameters (either from migration or existing params)\n    const params = getURLParams();\n    const imageParam = params.get('image') || migratedFilename;\n    \n    if (imageParam) {\n        const fnTokens = imageParam.split(\"_\");\n        if (fnTokens.length === 2) {\n            const cid = fnTokens[0];\n            const tpart = fnTokens[1];\n            \n            // Set camera ID\n            const cidSelect = document.querySelector('select[name=cid]');\n            const cidOption = cidSelect.querySelector(`option[value=\"${cid}\"]`);\n            if (cidOption) {\n                cidOption.selected = true;\n            }\n            \n            // Set date\n            const year = tpart.substring(0, 4);\n            const month = tpart.substring(4, 6);\n            const day = tpart.substring(6, 8);\n            const dateStr = `${year}-${month}-${day}`;\n            \n            const datePicker = getInputElement('datepicker');\n            const realDateInput = getInputElement('realdate');\n            \n            datePicker.value = dateStr;\n            realDateInput.value = `${year}${month}${day}`; // YYYYMMDD format for backend\n            \n            // Create ISO time string for selection\n            const hour = tpart.substring(8, 10);\n            const minute = tpart.substring(10, 12);\n            const isotime = `${year}-${month}-${day}T${hour}:${minute}:00Z`;\n            \n            fetchTimes(isotime);\n        } else {\n            fetchTimes(false);\n        }\n    } else {\n        fetchTimes(false);\n    }\n}\n\n/**\n * Handle browser back/forward navigation\n */\nfunction handlePopState() {\n    parseURLParams();\n}\n\n/**\n * Add navigation controls for easier image browsing\n */\nfunction addNavigationControls() {\n    const timesSelect = document.querySelector('select[name=times]');\n    const controlsDiv = document.createElement('div');\n    controlsDiv.style.cssText = 'margin-top: 10px; text-align: center;';\n    \n    // Previous/Next buttons\n    const prevBtn = document.createElement('button');\n    prevBtn.textContent = '← Previous';\n    prevBtn.className = 'btn btn-sm btn-secondary';\n    prevBtn.style.marginRight = '10px';\n    prevBtn.onclick = () => navigateImage(-1);\n    \n    const nextBtn = document.createElement('button');\n    nextBtn.textContent = 'Next →';\n    nextBtn.className = 'btn btn-sm btn-secondary';\n    nextBtn.onclick = () => navigateImage(1);\n    \n    // Auto-play toggle\n    const autoPlayBtn = document.createElement('button');\n    autoPlayBtn.textContent = 'Auto-play';\n    autoPlayBtn.className = 'btn btn-sm btn-info';\n    autoPlayBtn.style.marginLeft = '20px';\n    autoPlayBtn.onclick = toggleAutoPlay;\n    \n    controlsDiv.appendChild(prevBtn);\n    controlsDiv.appendChild(nextBtn);\n    controlsDiv.appendChild(autoPlayBtn);\n    \n    timesSelect.parentElement.appendChild(controlsDiv);\n}\n\n/**\n * Navigate to previous/next image\n * @param {number} direction -1 for previous, 1 for next\n */\nfunction navigateImage(direction) {\n    const timesSelect = document.querySelector('select[name=times]');\n    const currentIndex = timesSelect.selectedIndex;\n    const maxIndex = timesSelect.options.length - 1;\n    \n    if (direction === -1 && currentIndex > 0) {\n        timesSelect.selectedIndex = currentIndex - 1;\n    } else if (direction === 1 && currentIndex < maxIndex) {\n        timesSelect.selectedIndex = currentIndex + 1;\n    }\n    getImage();\n}\n\nlet autoPlayInterval = null;\n\n/**\n * Toggle auto-play functionality\n */\nfunction toggleAutoPlay() {\n    const autoPlayBtn = document.querySelector('button:nth-of-type(3)');\n    \n    if (autoPlayInterval) {\n        clearInterval(autoPlayInterval);\n        autoPlayInterval = null;\n        autoPlayBtn.textContent = 'Auto-play';\n        autoPlayBtn.className = 'btn btn-sm btn-info';\n    } else {\n        autoPlayInterval = setInterval(() => {\n            const timesSelect = document.querySelector('select[name=times]');\n            const currentIndex = timesSelect.selectedIndex;\n            const maxIndex = timesSelect.options.length - 1;\n            \n            if (currentIndex < maxIndex) {\n                navigateImage(1);\n            } else {\n                // Loop back to start\n                timesSelect.selectedIndex = 0;\n                getImage();\n            }\n        }, 2000); // 2 second intervals\n        \n        autoPlayBtn.textContent = 'Stop Auto-play';\n        autoPlayBtn.className = 'btn btn-sm btn-warning';\n    }\n}\n\n/**\n * Convert 24-hour time to 12-hour format with AM/PM\n * @param {number} hour24 hour in 24-hour format\n * @returns {object} object with hour12 and period\n */\nfunction convertTo12Hour(hour24) {\n    const period = hour24 >= 12 ? ' PM' : ' AM';\n    let hour12 = hour24;\n    \n    if (hour12 > 12) {\n        hour12 = hour12 - 12;\n    } else if (hour12 === 0) {\n        hour12 = 12;\n    }\n    \n    return { hour12, period };\n}\n\n/**\n * Format time string for display\n * @param {Date} timestamp date object\n * @returns {string} formatted time string\n */\nfunction formatTimeString(timestamp) {\n    const dateStr = formatDateForDisplay(timestamp);\n    const { hour12, period } = convertTo12Hour(timestamp.getHours());\n    const minutes = timestamp.getMinutes().toString().padStart(2, '0');\n    return `${dateStr}${hour12}:${minutes}${period}`;\n}\n\n/**\n * Generate HTML options for time select dropdown\n * @param {Array} images array of image objects\n * @returns {string} HTML string for options\n */\nfunction generateTimeOptionsHTML(images) {\n    if (!images || images.length === 0) {\n        return \"<option value='-1'>No Images Found!</option>\";\n    }\n    \n    let html = '';\n    for (let i = 0; i < images.length; i++) {\n        const ts = parseISODate(images[i].valid);\n        if (!ts) {continue;}\n        \n        const timeStr = formatTimeString(ts);\n        html += `<option ts=\"${images[i].valid}\" value=\"${images[i].href}\">${timeStr}</option>`;\n    }\n    \n    return html || \"<option value='-1'>No Images Found!</option>\";\n}\n\n/**\n * Select a specific time option and load the image\n * @param {string} findTime ISO time string to find and select\n */\nfunction selectTimeOption(findTime) {\n    const timesSelect = document.querySelector('select[name=times]');\n    const targetOption = timesSelect.querySelector(`option[ts=\"${findTime}\"]`);\n    if (targetOption) {\n        targetOption.selected = true;\n        getImage();\n    }\n}\n\n/**\n * Check if keyboard navigation should be active for current focus\n * @param {HTMLElement} activeElement currently focused element\n * @param {Event} event keyboard event\n * @returns {boolean} true if navigation should be active\n */\nfunction shouldAllowKeyboardNavigation(activeElement, event) {\n    const timesSelectElement = document.querySelector('select[name=times]');\n    \n    return activeElement === timesSelectElement || \n           event.target.id === 'theimage' ||\n           event.target.tagName === 'SELECT' || \n           event.target.tagName === 'INPUT';\n}\n\n/**\n * Handle keyboard navigation events\n * @param {KeyboardEvent} event keyboard event\n */\nfunction handleKeyboardNavigation(event) {\n    if (!shouldAllowKeyboardNavigation(document.activeElement, event)) {\n        return;\n    }\n    \n    if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\n        event.preventDefault();\n        navigateImage(-1);\n    } else if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {\n        event.preventDefault();\n        navigateImage(1);\n    } else if (event.key === ' ' || event.key === 'Spacebar') {\n        event.preventDefault();\n        toggleAutoPlay();\n    }\n}\n\n/**\n * Initialize the application\n */\nfunction init() {\n    setupDatePicker();\n    addNavigationControls();\n    \n    // Set up event listeners\n    const cidSelect = document.querySelector('select[name=cid]');\n    const timesSelect = document.querySelector('select[name=times]');\n    const datePicker = document.getElementById('datepicker');\n    \n    cidSelect.addEventListener('change', () => {\n        // Stop auto-play when changing cameras\n        if (autoPlayInterval) {\n            toggleAutoPlay();\n        }\n        // Clear image parameter when changing cameras\n        const url = new URL(window.location);\n        url.searchParams.delete('image');\n        window.history.replaceState({}, '', url);\n        fetchTimes(false);\n    });\n    \n    // Update URL when date changes\n    datePicker.addEventListener('change', () => {\n        const url = new URL(window.location);\n        url.searchParams.delete('image'); // Clear image when date changes\n        window.history.replaceState({}, '', url);\n    });\n    \n    timesSelect.addEventListener('change', () => {\n        getImage();\n    });\n    \n    // Enhanced keyboard navigation\n    document.addEventListener('keydown', handleKeyboardNavigation);\n    \n    // Make image clickable for better UX\n    document.addEventListener('click', (event) => {\n        if (event.target.id === 'theimage') {\n            event.target.focus();\n        }\n    });\n    \n    // Handle browser back/forward navigation\n    window.addEventListener('popstate', handlePopState);\n    \n    // Parse URL parameters and initialize (handles both URLSearchParams and legacy hash migration)\n    parseURLParams();\n}\n\n// Initialize when DOM is loaded\nif (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n} else {\n    init();\n}\n"
  },
  {
    "path": "htdocs/RWIS/camera.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\n\n$t = new MyView();\ndefine(\"IEM_APPID\", 145);\n\n$t->title = \"RWIS Archived Webcam Imagery\";\n$t->jsextra = <<<EOM\n <script src=\"camera.module.js\" type=\"module\"></script>\nEOM;\n\n$conn = iemdb(\"mesosite\");\n$rs = pg_query($conn, \"SELECT id, name, date(sts) as s from webcams \" .\n    \"WHERE network = 'IDOT' ORDER by name ASC\");\n$sform = \"<select name='cid'>\";\nwhile ($row = pg_fetch_assoc($rs)) {\n    $sform .= sprintf(\n        \"<option value='%s'>%s -- (%s)</option>\\n\",\n        $row[\"id\"],\n        $row[\"name\"],\n        $row[\"s\"]\n    );\n}\n$sform .= \"</select>\";\n\n$t->content = <<<EOM\n<h3>Archived Iowa RWIS Webcam Imagery</h3>\n\n<p>The IEM archives imagery provided by the Iowa DOT RWIS network.  Each site\nwith a webcam has a number of preset views that are each queried about once\nper 10 minutes.  Please select the webcam view you wish to see and then \nselect a date of interest.  The left hand menu will automatically populate with\na listing of images available for that date.</p>\n\n<div class=\"alert alert-info\" style=\"margin: 10px 0;\">\n  <strong>Navigation Tips:</strong>\n  <ul style=\"margin-bottom: 0;\">\n    <li>Use arrow keys (↑↓ or ←→) to navigate between images</li>\n    <li>Press spacebar to start/stop auto-play mode</li>\n    <li>Click on the image to focus it for keyboard navigation</li>\n    <li>Use the Previous/Next buttons for manual control</li>\n  </ul>\n</div>\n\n<p>Archiving started back on 19 Dec 2009.  The start date of invidual webcams\nis shown in the select menu. The <a href=\"/current/viewer.phtml\">IEM Webcam Viewer</a>\nis another tool that allows viewing the RWIS webcam archive.</p>\n\n<input type=\"hidden\" id=\"realdate\" />\n\n<div class=\"row\">\n  <div class=\"col-md-8 col-sm-12\">\n  <span style=\"font-weight: bold;\">1. Select Webcam View:</span>\n  <br>{$sform}\n  </div>\n  <div class=\"col-md-4 col-sm-12\">\n  <span style=\"font-weight: bold;\">2. Date:</span> \n  <br><input type=\"text\" id=\"datepicker\" class=\"form-control\" style=\"max-width: 200px;\" />\n  </div>\n</div>\n\n<div class=\"row\" style=\"margin-top: 15px;\">\n  <div class=\"col-md-3 col-sm-12\">\n  <strong>3. Select Time:</strong>\n  <br />\n  <select size=\"25\" name=\"times\" class=\"form-control\" style=\"font-family: monospace; font-size: 12px;\">\n    <option value='-1'>Select a camera first...</option>\n  </select> \n  </div>\n  <div class=\"col-md-9 col-sm-12\">\n  <div style=\"text-align: center; border: 1px solid #ddd; padding: 10px; background-color: #f9f9f9;\">\n    <img id=\"theimage\" src=\"camera_instructions.png\" class=\"img img-fluid\" style=\"max-width: 100%; height: auto;\">\n  </div>\n  </div>\n</div>\n\n<br clear=\"all\" />\nEOM;\n$t->render(\"full.phtml\");\n"
  },
  {
    "path": "htdocs/RWIS/current.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 83);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/mlib.php\";\nrequire_once \"../../include/forms.php\";\n\n$t = new MyView();\n$t->current_network = 'RWIS';\n$sortcol = isset($_GET[\"sortcol\"]) ? xssafe($_GET[\"sortcol\"]) : \"ts\";\n$network = isset($_GET['network']) ? xssafe($_GET['network']) : 'IA_RWIS';\n$t->title = \"RWIS Sortable Currents\";\n$t->refresh = 600;\n\n$vals = array(\n    \"tmpf\" => \"Air Temperature [F]\", \"dwpf\" => \"Dew Point Temp [F]\",\n    \"sknt\" => \"Wind Speed [knots]\", \"drct\" => \"Wind Direction [deg]\",\n    \"pday\" => \"Precip Accum [inches]\", \"max_sknt\" => \"Wind Gust [knots]\",\n    \"ts\" => \"Observation Time [local]\", \"feel\" => \"Feels Like\", \"peak\" => \"Wind Gust\",\n    \"min_tmpf\" => \"Today's Low Temperature\", \"peak_ts\" => \"Time of Wind Gust\",\n    \"max_tmpf\" => \"Today's High Temperature\", \"name\" => \"Station Name\",\n    \"sid\" => \"Station ID\", \"relh\" => \"Relative Humidity\", \"vsby\" => \"Visibility\"\n);\n\n$nselect = selectNetworkType(\"RWIS\", $network);\n$uri = \"current.phtml?network={$network}&sortcol=\";\n\n$mydata = array();\n\n$arr = array(\n    \"network\" => $network,\n);\n$jobj = iemws_json(\"currents.json\", $arr);\n\nforeach ($jobj[\"data\"] as $bogus => $ob) {\n    $key = $ob[\"station\"];\n    $mydata[$key] = $ob;\n    $mydata[$key][\"ts\"] = new DateTime($ob[\"local_valid\"]);\n    $mydata[$key][\"relh\"] = $ob[\"relh\"];\n    $mydata[$key][\"feel\"] = $ob[\"feel\"];\n    if ($mydata[$key][\"dwpf\"] > $mydata[$key][\"tmpf\"]) {\n        $mydata[$key][\"feel\"] = \"\";\n        $mydata[$key][\"dwpf\"] = \"\";\n    }\n    if ($mydata[$key][\"relh\"] > 100 || $mydata[$key][\"relh\"] < 0) {\n        $mydata[$key][\"feel\"] = \"\";\n        $mydata[$key][\"dwpf\"] = \"\";\n        $mydata[$key][\"relh\"] = \"\";\n    }\n    if ($mydata[$key][\"tmpf\"] > 120 || $mydata[$key][\"tmpf\"] < -40) {\n        $mydata[$key][\"feel\"] = \"\";\n        $mydata[$key][\"dwpf\"] = \"\";\n        $mydata[$key][\"relh\"] = \"\";\n        $mydata[$key][\"tmpf\"] = \"\";\n        $mydata[$key][\"min_tmpf\"] = \"\";\n        $mydata[$key][\"max_tmpf\"] = \"\";\n    }\n    if ($mydata[$key][\"vsby\"] < 0) {\n        $mydata[$key][\"vsby\"] = \"\";\n    } else {\n        $mydata[$key][\"vsby\"] = myround($mydata[$key][\"vsby\"], 1);\n    }\n    $mydata[$key][\"peak_ts\"] = null;\n    if ($mydata[$key][\"max_gust\"] > $mydata[$key][\"max_sknt\"]) {\n        $mydata[$key][\"peak\"] = $mydata[$key][\"max_gust\"];\n        $mydata[$key][\"peak_ts\"] = new DateTime($mydata[$key][\"local_max_gust_ts\"]);\n    } else {\n        $mydata[$key][\"peak\"] = $mydata[$key][\"max_sknt\"];\n        if ($mydata[$key][\"local_max_sknt_ts\"]) {\n            $mydata[$key][\"peak_ts\"] = new DateTime($mydata[$key][\"local_max_sknt_ts\"]);\n        }\n    }\n\n    if ($mydata[$key][\"sknt\"] < 0) {\n        $mydata[$key][\"sknt\"] = \"\";\n        $mydata[$key][\"drct\"] = \"\";\n    }\n}\n\n$finalA = array();\n$finalA = aSortBySecondIndex($mydata, $sortcol, \"desc\");\n$i = 0;\n$now = time();\n$skippedStations = array();\n$table = \"\";\n// Loop though all data\nforeach ($finalA as $key => $val) {\n    $parts = $finalA[$key];\n    $tdiff = $now - strtotime($parts[\"utc_valid\"]);\n\n    if ($tdiff > 6900) {\n        $skippedStations[$key] = $parts;\n        continue;\n    }\n\n    $i++;\n\n    $table .= \"<tr>\";\n    $table .= \"<td><input type=\\\"checkbox\\\" name=\\\"st[]\\\"\n               value=\\\"\" . $key . \"\\\"></td>\";\n    $table .= \"<td><a href='../sites/site.php?network=\" . $network . \"&station=\" . $key . \"'>\" . $parts[\"name\"] . \"</a></td><td \";\n    $format = \"h:i A\";\n    if ($tdiff > 11900) {\n        $table .= 'bgcolor=\"red\"';\n        $format = \"M-d-Y h:i A\";\n    } else if ($tdiff > 6900) {\n        $table .= 'bgcolor=\"orange\"';\n    } else if ($tdiff > 1800) {\n        $table .= 'bgcolor=\"green\"';\n    }\n    $table .= \">\" . $parts[\"ts\"]->format($format) . \"</td>\n  <td align='center'>\" . myround($parts[\"tmpf\"], 1) . \"(<font color=\\\"#ff0000\\\">\" .\n        myround($parts[\"max_tmpf\"], 1) . \"</font>/<font color=\\\"#0000ff\\\">\" .\n        myround($parts[\"min_tmpf\"], 1) . \"</font>)</td>\n <td>\" . myround($parts[\"dwpf\"], 1) . \"</td>\n <td>\" . myround($parts[\"feel\"], 0) . \"</td>\n <td>\" . myround($parts[\"relh\"], 0) . \"</td>\n <td>\" . $parts[\"vsby\"] . \"</td>\n <td>\" . myround($parts[\"sknt\"], 0);\n    if (!is_null($parts[\"gust\"]) && strlen($parts[\"gust\"]) > 0 && $parts[\"gust\"] > 0) {\n        $table .= \"G\" . myround($parts[\"gust\"], 0);\n    }\n    $table .= \"</td>\";\n    if (! is_null($parts[\"peak_ts\"])){\n        $table .= \"<td>\" . $parts[\"drct\"] . \"</td>\n        <td>\" . myround($parts[\"peak\"], 0) . \"@ \" . $parts[\"peak_ts\"]->format(\"h:i A\") . \"</td>\n            <td>\" . myround($parts[\"pday\"], 2) . \"</td>\";\n    }\n            \n    $table .= \"</tr>\\n\";\n}\n\nforeach ($skippedStations as $key => $parts) {\n    $table .= \"<tr>\";\n    $table .= \"<td><input type=\\\"checkbox\\\" name=\\\"st[]\\\"\n               value=\\\"\" . $key . \"\\\"></td>\";\n    $table .= \"<td>\" . $parts[\"name\"] . \"</td><td \";\n    $table .= 'bgcolor=\"red\"';\n    $format = \"M-d-Y\";\n    $table .= \">\" . $parts[\"ts\"]->format($format) . \"</td><th align='center' colspan='9'>Site Offline</th></tr>\\n\";\n}\n\n$content = <<<EOM\n<form method=\"GET\" action=\"current.phtml\">\n{$nselect}\n<input type=\"submit\" value=\"Show State\">\n</form>\n\n<form method=\"GET\" action=\"/my/current.phtml\">\n<table class=\"table table-striped table-sm table-bordered\">\n<thead>\n<tr>\n  <th rowspan=\"2\">ADD:</th>\n  <th rowspan=\"2\"><a href=\"{$uri}name\">Station:</a></th>\n  <th rowspan=\"2\"><a href=\"{$uri}ts\">Ob Time</a></th>\n  <th colspan=\"3\" bgcolor=\"#acdcda\">Temps &deg;F</th>\n  <th>&nbsp;</th>\n  <th>&nbsp;</th>\n  <th colspan=\"3\" bgcolor=\"#EEEEEE\">Wind [knots]</th>\n  <th><a href=\"{$uri}pday\">Precip</a></th>\n</tr>\n<tr>\n  \n  <th>\n   <a href=\"{$uri}tmpf\">Air</a>\n   (<a href=\"{$uri}max_tmpf\">Hi</a> /\n   <a href=\"{$uri}min_tmpf\">Lo</a>)\n</th>\n  <th><a href=\"{$uri}dwpf\">DewP</a></th>\n  <th><a href=\"{$uri}feel\">Feels</a></th>\n  <th><a href=\"{$uri}relh\">RH%</a></th>\n  <th><a href=\"{$uri}vsby\">Vis</a></th>\n  <th><a href=\"{$uri}sknt\">Speed</a></th>\n  <th><a href=\"{$uri}drct\">Direction</a></th>\n  <th><a href=\"{$uri}peak\">Gust</a>\n    @<a href=\"{$uri}peak_ts\">Time</a></th>\n  <th><a href=\"{$uri}pday\">Accum</a> [1]</th>\n</tr></thead>\n<tbody>\n{$table}\n</tbody>\n</table>\n<input type=\"submit\" value=\"Add to Favorites\">\n<input type=\"reset\" value=\"Reset\">\n\n</form>\n\n<br><br>\n\n<b>Notes:</b><br>\n<b>1</b> Not all sites have the ability to measure precip nor visibility.<br>\n<b>2</b> The Iowa City (I-80) RWIS site does not have atmospheric sensors on it\n, so it is not included on this page.<br>\n\nEOM;\n$t->content = $content;\n$t->render('sortables.phtml');\n"
  },
  {
    "path": "htdocs/RWIS/currentSF.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/mlib.php\";\n\n$mesosite = iemdb('mesosite');\n$t = new MyView();\n$t->current_network = \"RWIS Surface\";\n$network = isset($_GET['network']) ? xssafe($_GET['network']) : 'IA_RWIS';\n$sortcol = isset($_GET['sortcol']) ? xssafe($_GET['sortcol']) : 'ts';\nif ($sortcol == \"sname\") $sortcol = \"name\";\n$t->title = \"RWIS Surface Currents\";\n$t->refresh = 600;\n\n$vals = array(\n    \"tsf0\" => \"Sensor 1 - Temp [F]\",\n    \"tmpf\" => \"Air Temp [F]\",\n    \"dwpf\" => \"Dew Point [F]\",\n    \"tsf1\" => \"Sensor 2 - Temp [F]\",\n    \"tsf2\" => \"Sensor 3 - Temp [F]\",\n    \"tsf3\" => \"Sensor 4 - Temp [F]\",\n    \"pave_avg\" => \"Ave Surf Temp\",\n    \"dry0\" => \"Sensor 1 - Cond [F]\",\n    \"dry1\" => \"Sensor 2 - Cond [F]\",\n    \"dry2\" => \"Sensor 3 - Cond [F]\",\n    \"dry3\" => \"Sensor 4 - Cond [F]\",\n    \"ts\" => \"Observation Time\",\n    \"name\" => \"Site Name\",\n);\nif (!array_key_exists($sortcol, $vals)) {\n    xssafe(\"</script>\");\n}\n\n$t->breadcrumbs = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/RWIS/\">RWIS</a></li>\n <li class=\"active\">Current Conditions</li>\n</ol>\nEOM;\n$nselect = \"<select name=\\\"network\\\">\";\n$rs = pg_query($mesosite, \"SELECT id, name from networks where id ~* 'RWIS' ORDER by name ASC\");\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n    $sel = '';\n    if ($network == $row[\"id\"]) {\n        $sel = \" selected='SELECTED'\";\n    }\n    $nselect .= sprintf(\n        \"<option value='%s'%s>%s</option>\\n\",\n        $row[\"id\"],\n        $sel,\n        $row[\"name\"]\n    );\n}\n$nselect .= \"</select>\";\n\n\n$mydata = array();\n$arr = array(\n    \"network\" => $network,\n);\n$jobj = iemws_json(\"currents.json\", $arr);\n\nforeach ($jobj[\"data\"] as $bogus => $ob) {\n    $key = $ob[\"station\"];\n    $mydata[$key] = $ob;\n    $mydata[$key][\"ts\"] = strtotime($ob[\"local_valid\"]);\n\n    if ($mydata[$key]['tmpf'] < -60) {\n        $mydata[$key]['tmpf'] = \"M\";\n        $mydata[$key]['dwpf'] = \"M\";\n    }\n\n    $t2 = array(\n        $mydata[$key]['tsf0'], $mydata[$key]['tsf1'],\n        $mydata[$key]['tsf2'], $mydata[$key]['tsf3']\n    );\n    arsort($t2);\n\n    while (min($t2) == -99) {\n        $ba = array_pop($t2);\n        if (sizeof($t2) == 0) break;\n    }\n\n    asort($t2);\n    if (sizeof($t2) > 0) {\n        while ((max($t2) - min($t2)) > 20) {\n            $ba = array_pop($t2);\n        }\n        $mydata[$key]['pave_avg'] = array_sum($t2) / sizeof($t2);\n    } else {\n        $mydata[$key]['pave_avg'] = -99.99;\n    }\n}\n\n$table = \"\";\n$finalA = array();\n$finalA = aSortBySecondIndex($mydata, $sortcol);\n$i = 0;\n$now = time();\nforeach ($finalA as $key => $parts) {\n    $i++;\n    $tdiff = $now - $parts[\"ts\"];\n    $table .= \"<tr\";\n    if ($i % 2 == 0)  $table .= \" bgcolor='#eeeeee'\";\n\n    $table .= \">\";\n    $table .= \"<td><input type=\\\"checkbox\\\" name=\\\"st[]\\\"\n            value=\\\"\" . $key . \"_SF\\\"></td>\";\n    $table .= \"<td>\" . $parts[\"name\"] . \"</td>\";\n    $table .= \"<td\";\n    if ($tdiff > 11900) {\n        $table .= ' bgcolor=\"red\">' . date(\"M-d-Y h:i A\", $parts[\"ts\"]) . '</td>';\n    } else if ($tdiff > 7200) {\n        $table .= ' bgcolor=\"orange\">' . date(\"M-d h:i A\", $parts[\"ts\"]) . '</td>';\n    } else if ($tdiff > 3600) {\n        $table .= ' bgcolor=\"green\">' . date(\"h:i A\", $parts[\"ts\"]) . '</td>';\n    } else {\n        $table .= '>' . date(\"h:i A\", $parts[\"ts\"]) . '</td>';\n    }\n    if ($parts[\"tsf0\"] < -90) $tmpf0 = \"M\";\n    else $tmpf0 = round($parts[\"tsf0\"], 1);\n    if ($parts[\"tsf1\"] < -90) $tmpf1 = \"M\";\n    else $tmpf1 = round($parts[\"tsf1\"], 1);\n    if ($parts[\"tsf2\"] < -90) $tmpf2 = \"M\";\n    else $tmpf2 = round($parts[\"tsf2\"], 1);\n    if ($parts[\"tsf3\"] < -90) $tmpf3 = \"M\";\n    else $tmpf3 = round($parts[\"tsf3\"], 1);\n    if ($parts[\"pave_avg\"] < -90) $pave_avg = \"M\";\n    else $pave_avg = round($parts[\"pave_avg\"], 1);\n\n    $table .= <<< EOM\n<td>{$parts[\"tmpf\"]}</td><td>{$parts[\"dwpf\"]}</td>\n<td>{$tmpf0} ({$parts[\"scond0\"]})</td>\n<td>{$tmpf1} ({$parts[\"scond1\"]})</td>\n<td>{$tmpf2} ({$parts[\"scond2\"]})</td>\n<td>{$tmpf3} ({$parts[\"scond3\"]})</td>\n<td>{$pave_avg}</td>\n</tr>\nEOM;\n}\n\n$content = <<<EOM\n<form method=\"GET\" action=\"currentSF.phtml\">\n{$nselect}\n<input type=\"submit\" value=\"Show State\">\n</form><p>\n\n\n<h3 class=\"subtitle\"><center>Current RWIS Surface Conditions</center></h3>\n\n<p>** This page will automatically refresh every 10 minutes.\n<br>Click on a column to sort it.</p>\n\n<p>Sorted by: <b>{$vals[$sortcol]}</b><br>\n\n\n<form method=\"GET\" action=\"/my/current.phtml\">\n<table class=\"table table-striped table-bordered table-sm\">\n<thead>\n<tr>\n  <th rowspan=\"2\">ADD:</th>\n  <th rowspan=\"2\"><a href=\"currentSF.phtml?network={$network}&sortcol=name\">Station:</a></th>\n  <th rowspan=\"2\"><a href=\"currentSF.phtml?network={$network}&sortcol=ts\">Ob Time</a></th>\n  <th colspan=\"2\">Air:</th>\n  <th>Sensor 1</th>\n  <th>Sensor 2</th>\n  <th>Sensor 3</th>\n  <th>Sensor 4</th>\n  <th>&nbsp;</th>\n<tr>\n  <th><a href=\"currentSF.phtml?network={$network}&sortcol=tmpf\">Temp</a></th>\n  <th><a href=\"currentSF.phtml?network={$network}&sortcol=dwpf\">Dew P</a></th>\n  <th><a href=\"currentSF.phtml?network={$network}&sortcol=tsf0\">Temp</a></th>\n  <th><a href=\"currentSF.phtml?network={$network}&sortcol=tsf1\">Temp</a></th>\n  <th><a href=\"currentSF.phtml?network={$network}&sortcol=tsf2\">Temp</a></th>\n  <th><a href=\"currentSF.phtml?network={$network}&sortcol=tsf3\">Temp</a></th>\n  <th><a href=\"currentSF.phtml?network={$network}&sortcol=pave_avg\">Ave Surface Temp</a> [<b>1</b>]</th>\n</tr></thead>\n<tbody>\n{$table}\n</tbody>\n</table>\n<input type=\"submit\" value=\"Add to Favorites\">\n<input type=\"reset\" value=\"Reset\">\n\n</form>\n\n\n<br><br>\n\n<b>Notes:</b><br>\n<b>1</b>  The average surface temperature is calculated by the IEM using some\nlogic to account for sites without 4 sensors or broken sensors.\n\n\n<br><br>\nEOM;\n$t->content = $content;\n$t->render('sortables.phtml');\n"
  },
  {
    "path": "htdocs/RWIS/index.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/cameras.inc.php\";\nrequire_once \"../../include/forms.php\";\n$camid = isset($_GET[\"camid\"]) ? xssafe($_GET[\"camid\"]) : \"IDOT-000\";\n\n$cdict = array();\n$selectform = \"<select name=\\\"camid\\\">\\n\";\nforeach ($cameras as $id => $cam) {\n    if ($cam[\"network\"] != \"IDOT\") {\n        continue;\n    }\n    $base = substr($id, 0, 8);\n    if (!array_key_exists($base, $cdict)) {\n        $cdict[$base] = 0;\n    }\n    $cdict[$base] += 1;\n\n    if (substr($id, 9, 2) == \"00\") {\n        $selectform .= \"<option value=\\\"$base\\\"\";\n        if ($base == $camid) {\n            $selectform .= \" selected=\\\"selected\\\" \";\n        }\n        $selectform .= \">\" . $cam[\"name\"] . \"</option>\";\n    }\n}\n$selectform .= \"</select>\\n\";\n\n$t = new MyView();\n$t->title = \"Roadway Weather Information System (RWIS) Data\";\n\n$camimgs = \"\";\nfor ($i = 0; $i < $cdict[$camid]; $i++) {\n    $camimgs .= sprintf(\n        \"<div class=\\\"col-md-3\\\"><img src=\\\"/data/camera/stills/%s-%02d.jpg?%s\\\" class=\\\"img img-fluid\\\"></div>\",\n        $camid,\n        $i,\n        time()\n    );\n}\n\n\n$t->content = <<<EOM\n<div class=\"container-fluid px-0\">\n  <div class=\"row mb-4\">\n    <div class=\"col-lg-9 col-md-8\">\n      <h1 class=\"display-5 mt-2 mb-3\">Roadway Weather Information System</h1>\n      <p class=\"lead\">\n        The IEM curates an archive of RWIS information. The Iowa data has been provided by the Iowa DOT through a long standing partnership since the founding of the IEM. Data for other states is provided via the <a href=\"https://madis.ncep.noaa.gov/\">NOAA MADIS</a> system.\n      </p>\n    </div>\n    <div class=\"col-lg-3 col-md-4 d-flex align-items-center justify-content-lg-end justify-content-md-end justify-content-start mt-3 mt-md-0\">\n      <a href=\"/sites/locate.php?network=IA_RWIS\" class=\"btn btn-outline-primary btn-lg\">Iowa RWIS Locations</a>\n    </div>\n  </div>\n\n  <div class=\"card mb-4\">\n    <div class=\"card-header d-flex flex-wrap align-items-center justify-content-between\">\n      <h2 class=\"h4 mb-0\">Roadside Webcams</h2>\n      <div class=\"btn-group mt-2 mt-md-0\">\n        <a href=\"camera.phtml\" class=\"btn btn-primary\">RWIS Archive Viewer</a>\n        <a href=\"/current/viewer.phtml\" class=\"btn btn-primary\">IEM Webcam Viewer</a>\n      </div>\n    </div>\n    <div class=\"card-body\">\n      <form method=\"\" action=\"\" name=\"widget\" class=\"row g-3 align-items-center mb-3\">\n        <div class=\"col-auto\">\n          <label for=\"camid\" class=\"col-form-label fw-bold\">Available sites:</label>\n        </div>\n        <div class=\"col-auto\">\n          {$selectform}\n        </div>\n        <div class=\"col-auto\">\n          <input type=\"submit\" value=\"View Webcam\" class=\"btn btn-primary\">\n        </div>\n      </form>\n      <div class=\"row g-3\">\n        {$camimgs}\n      </div>\n    </div>\n  </div>\n\n  <div class=\"row g-4\">\n    <div class=\"col-lg-4 col-md-6\">\n      <div class=\"card h-100\">\n        <div class=\"card-body\">\n          <h3 class=\"h5\">Current Conditions</h3>\n          <ul class=\"list-group list-group-flush mb-3\">\n            <li class=\"list-group-item\"><a href=\"current.phtml\">Atmospherics</a></li>\n            <li class=\"list-group-item\"><a href=\"currentSF.phtml\">Pavement</a></li>\n            <li class=\"list-group-item\"><a href=\"soil.phtml\">Soil Probes</a></li>\n            <li class=\"list-group-item\"><a href=\"traffic.phtml\">Traffic Data</a></li>\n            <li class=\"list-group-item\">\n              <a href=\"/GIS/apps/iem/freeze.phtml\">IEM Freeze</a>\n              <div class=\"small text-muted\">Combine air and pavement temperatures with current RADAR.</div>\n            </li>\n          </ul>\n          <h3 class=\"h6\">Time Series Plots</h3>\n          <ul class=\"list-group list-group-flush mb-3\">\n            <li class=\"list-group-item\"><a href=\"/plotting/rwis/sf_fe.php\">Recent Air/Pavement Temps</a></li>\n          </ul>\n          <h3 class=\"h6\">Plots with RWIS data</h3>\n          <ul class=\"list-group list-group-flush\">\n            <li class=\"list-group-item\"><a href=\"/data/mesonet.gif\">Combined Mesonet</a></li>\n            <li class=\"list-group-item\"><a href=\"/data/iowa_rwis.png\">RWIS Mesonet</a></li>\n            <li class=\"list-group-item\"><a href=\"/data/rwis_sf.png\">Pavement Temperatures</a></li>\n            <li class=\"list-group-item\"><a href=\"/data/heat.gif\">Heat Index</a></li>\n            <li class=\"list-group-item\"><a href=\"/data/wcht.gif\">Wind Chill Index</a></li>\n          </ul>\n        </div>\n      </div>\n    </div>\n    <div class=\"col-lg-4 col-md-6\">\n      <div class=\"card h-100\">\n        <div class=\"card-body\">\n          <h3 class=\"h5\">Station Plot with NEXRAD</h3>\n          <ul class=\"list-group list-group-flush\">\n            <li class=\"list-group-item\"><a href=\"/data/DMX_radar.gif\">Des Moines</a></li>\n            <li class=\"list-group-item\"><a href=\"/data/OAX_radar.gif\">Omaha</a></li>\n            <li class=\"list-group-item\"><a href=\"/data/DVN_radar.gif\">Davenport</a></li>\n            <li class=\"list-group-item\"><a href=\"/data/FSD_radar.gif\">Sioux Falls</a></li>\n            <li class=\"list-group-item\"><a href=\"/data/ARX_radar.gif\">LaCrosse</a></li>\n          </ul>\n        </div>\n      </div>\n    </div>\n    <div class=\"col-lg-4 col-md-12\">\n      <div class=\"card h-100\">\n        <div class=\"card-body\">\n          <h3 class=\"h5\">Data Download</h3>\n          <ul class=\"list-group list-group-flush mb-3\">\n            <li class=\"list-group-item\"><a href=\"/request/rwis/fe.phtml\">Atmosphere &amp; Pavement Data</a></li>\n            <li class=\"list-group-item\"><a href=\"/request/rwis/soil.phtml\">Soil Probe Data</a></li>\n            <li class=\"list-group-item\"><a href=\"/request/rwis/traffic.phtml\">Traffic Data</a></li>\n          </ul>\n          <h3 class=\"h6\">Comparisons</h3>\n          <ul class=\"list-group list-group-flush mb-3\">\n            <li class=\"list-group-item\"><a href=\"/data/temps.gif\">Temperatures vs ASOS/AWOS</a></li>\n            <li class=\"list-group-item\"><a href=\"/data/dewps.gif\">Dew Points vs ASOS/AWOS</a></li>\n            <li class=\"list-group-item\"><a href=\"/data/winds.gif\">Winds vs ASOS/AWOS</a></li>\n          </ul>\n          <h3 class=\"h6\">QC Info</h3>\n          <ul class=\"list-group list-group-flush\">\n            <li class=\"list-group-item\">Sites <a href=\"/QC/offline.php\">offline</a></li>\n          </ul>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\nEOM;\n\n$t->render(\"single.phtml\");\n"
  },
  {
    "path": "htdocs/RWIS/soil.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\n\n$t = new MyView();\n$dbconn = iemdb(\"iem\");\n$sortcol = isset($_GET['sortcol']) ? xssafe($_GET['sortcol']) : 'valid';\n$vals = array(\n    \"sname\" => \"Station Name\",\n    \"valid\" => \"Observation Time\",\n    \"tmpf_1in\" => \"1 inch Depth Temperature\",\n    \"tmpf_3in\" => \"3 inch Depth Temperature\",\n    \"tmpf_6in\" => \"6 inch Depth Temperature\",\n    \"tmpf_9in\" => \"9 inch Depth Temperature\",\n    \"tmpf_12in\" => \"12 inch Depth Temperature\",\n    \"tmpf_18in\" => \"18 inch Depth Temperature\",\n    \"tmpf_24in\" => \"24 inch Depth Temperature\",\n    \"tmpf_30in\" => \"30 inch Depth Temperature\",\n    \"tmpf_36in\" => \"36 inch Depth Temperature\",\n    \"tmpf_42in\" => \"42 inch Depth Temperature\",\n    \"tmpf_48in\" => \"48 inch Depth Temperature\",\n    \"tmpf_54in\" => \"54 inch Depth Temperature\",\n    \"tmpf_60in\" => \"60 inch Depth Temperature\",\n    \"tmpf_66in\" => \"66 inch Depth Temperature\",\n    \"tmpf_72in\" => \"72 inch Depth Temperature\",\n);\nif (!array_key_exists($sortcol, $vals)){\n    die(\"Invalid sortcol provided\");\n}\n\n/* Query out the data */\n$stname = iem_pg_prepare($dbconn, \"select t.valid, s.name as sname,\n    max(case when sensor_id = 1 then temp else null end) as tmpf_1in,\n    max(case when sensor_id = 3 then temp else null end) as tmpf_3in,\n    max(case when sensor_id = 6 then temp else null end) as tmpf_6in,\n    max(case when sensor_id = 9 then temp else null end) as tmpf_9in,\n    max(case when sensor_id = 12 then temp else null end) as tmpf_12in,\n    max(case when sensor_id = 18 then temp else null end) as tmpf_18in,\n    max(case when sensor_id = 24 then temp else null end) as tmpf_24in,\n    max(case when sensor_id = 30 then temp else null end) as tmpf_30in,\n    max(case when sensor_id = 36 then temp else null end) as tmpf_36in,\n    max(case when sensor_id = 42 then temp else null end) as tmpf_42in,\n    max(case when sensor_id = 48 then temp else null end) as tmpf_48in,\n    max(case when sensor_id = 54 then temp else null end) as tmpf_54in,\n    max(case when sensor_id = 60 then temp else null end) as tmpf_60in,\n    max(case when sensor_id = 66 then temp else null end) as tmpf_66in,\n    max(case when sensor_id = 72 then temp else null end) as tmpf_72in\n      from rwis_soil_data t, stations s\n      where s.remote_id = t.location_id GROUP by sname, valid\n      ORDER by $sortcol DESC NULLS LAST\");\n$rs = pg_execute($dbconn, $stname, array());\n\n$t->title = \"RWIS Current Soil Probe Data\";\n$t->refresh = 600;\n\n$t->current_network = \"RWIS Soil\";\n\nfunction fancytime($strtime)\n{\n    $now = time();\n    $ts = strtotime($strtime);\n    if (($now - $ts) < 600) {\n        return date(\"h:i A\", $ts);\n    } else {\n        return date(\"M d h:i A\", $ts);\n    }\n}\nfunction f($val)\n{\n    return $val;\n}\n\n\n$data = array();\n$table  = \"\";\nwhile ($row = pg_fetch_assoc($rs)) {\n    $table .= sprintf(\n        \"<tr><th>%s</th><th>%s</th>\n   <td>%s</td><td>%s</td><td>%s</td><td>%s</td>\n   <td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>\n   <td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>\n   <td>%s</td></tr>\\n\",\n        $row[\"sname\"],\n        fancytime($row[\"valid\"]),\n        f($row[\"tmpf_1in\"]),\n        f($row[\"tmpf_3in\"]),\n        f($row[\"tmpf_6in\"]),\n        f($row[\"tmpf_9in\"]),\n        f($row[\"tmpf_12in\"]),\n        f($row[\"tmpf_18in\"]),\n        f($row[\"tmpf_24in\"]),\n        f($row[\"tmpf_30in\"]),\n        f($row[\"tmpf_36in\"]),\n        f($row[\"tmpf_42in\"]),\n        f($row[\"tmpf_48in\"]),\n        f($row[\"tmpf_54in\"]),\n        f($row[\"tmpf_60in\"]),\n        f($row[\"tmpf_66in\"]),\n        f($row[\"tmpf_72in\"])\n    );\n}\n\n$t->content = <<<EOM\n<h3>Iowa RWIS Soil Probe Data</h3>\n\n<p>** This page will automatically refresh every 10 minutes.\n<br>Click on a column to sort it.</p>\n\n<p>Sorted by: <b>{$vals[$sortcol]}</b><br>\n\n<table style=\"width: 100%; font-size: 10pt;\" cellpadding=\"1\" cellspacing=\"0\"\n  border=\"1\">\n<thead>\n<tr>\n  <th rowspan=\"2\"><a href=\"soil.phtml?sortcol=sname\">Station:</a></th>\n  <th rowspan=\"2\"><a href=\"soil.phtml?sortcol=valid\">Ob Time</a></th>\n  <th colspan=\"15\">Soil Problems Located at Specified Depth</th>\n</tr>\n<tr>\n  <th><a href=\"soil.phtml?sortcol=tmpf_1in\">1</a></th>\n  <th><a href=\"soil.phtml?sortcol=tmpf_3in\">3</a></th>\n  <th><a href=\"soil.phtml?sortcol=tmpf_6in\">6</a></th>\n  <th><a href=\"soil.phtml?sortcol=tmpf_9in\">9</a></th>\n  <th><a href=\"soil.phtml?sortcol=tmpf_12in\">12</a></th>\n  <th><a href=\"soil.phtml?sortcol=tmpf_18in\">18</a></th>\n  <th><a href=\"soil.phtml?sortcol=tmpf_24in\">24</a></th>\n  <th><a href=\"soil.phtml?sortcol=tmpf_30in\">30</a></th>\n  <th><a href=\"soil.phtml?sortcol=tmpf_36in\">36</a></th>\n  <th><a href=\"soil.phtml?sortcol=tmpf_42in\">42</a></th>\n  <th><a href=\"soil.phtml?sortcol=tmpf_48in\">48</a></th>\n  <th><a href=\"soil.phtml?sortcol=tmpf_54in\">54</a></th>\n  <th><a href=\"soil.phtml?sortcol=tmpf_60in\">60</a></th>\n  <th><a href=\"soil.phtml?sortcol=tmpf_66in\">66</a></th>\n  <th><a href=\"soil.phtml?sortcol=tmpf_72in\">72</a></th>\n</tr>\n</thead>\n<tbody>\n{$table}\n</tbody>\n</table>\n\n</form>\n\n<br><br>\nEOM;\n$t->render('sortables.phtml');\n"
  },
  {
    "path": "htdocs/RWIS/traffic.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\n$t = new MyView();\n$t->current_network = \"RWIS Traffic\";\nrequire_once \"../../include/database.inc.php\";\n$dbconn = iemdb(\"iem\");\n$sortcol = isset($_GET['sortcol']) ? xssafe($_GET['sortcol']): 'valid';\n\n/* Query out the data */\n$stname = iem_pg_prepare($dbconn, <<<EOM\n    WITH data as (\n        SELECT t.location_id, avg_speed, normal_vol, long_vol, occupancy,\n        valid, s.name from\n        rwis_traffic t JOIN rwis_traffic_sensors s on (t.id = s.id)\n    )\n    select d.*, t.name as station_name from data d JOIN stations t ON\n    (d.location_id = t.remote_id) WHERE t.network = 'IA_RWIS'\nEOM\n);\n$rs = pg_execute($dbconn, $stname, Array() );\n\n $t->title = \"RWIS Current Traffic Data\";\n $t->refresh = 600;\n\n function fancytime($strtime){\n    if (is_null($strtime)) return \"\";\n     $now = time();\n     $ts = strtotime($strtime);\n     if (($now - $ts) < 600){ return date(\"h:i A\", $ts); }\n     else { return date(\"M d h:i A\", $ts); }\n }\n $vals = Array(\n         \"name\" => \"Station Name\",\n         \"valid\" => \"Observation Time\",\n         \"avg_speed\" => \"Average Speed [mph]\",\n         \"normal_vol\" => \"2 Axel Volume\",\n         \"long_vol\" => \"3+ Axel Volume\",\n         \"occupancy\" => \"Occupancy\",\n );\n\n $table = \"\";\n for($i=0;$row=pg_fetch_assoc($rs);$i++){\n     $table .= sprintf(\"<tr><th>%s</th><th>%s</th><td>%s</td><td>%.1f</td><td>%s</td><td>%s</td><td>%s</td></tr>\\n\",\n             $row[\"station_name\"], $row[\"name\"], fancytime($row[\"valid\"]), $row[\"avg_speed\"],\n             $row[\"normal_vol\"], $row[\"long_vol\"], $row[\"occupancy\"]);\n }\n\n$t->content = <<<EOM\n<h3>Iowa RWIS Traffic Data</h3>\n\n<p>** This page will automatically refresh every 10 minutes.\n<br>Click on a column to sort it.</p>\n\n<p>Sorted by: <b>{$vals[$sortcol]}</b><br>\n<table style=\"width: 100%; font-size: 10pt;\" cellspacing=\"0\" cellpadding=\"1\" border=\"1\">\n<thead>\n<tr>\n  <th><a href=\"traffic.phtml?sortcol=name\">Station:</a></th>\n  <th>Lane ID:</th>\n  <th><a href=\"traffic.phtml?sortcol=valid\">Ob Time</a></th>\n  <th><a href=\"traffic.phtml?sortcol=avg_speed\">Average Speed</a></th>\n  <th><a href=\"traffic.phtml?sortcol=normal_vol\">2 axel volume</a></th>\n  <th><a href=\"traffic.phtml?sortcol=long_vol\">3+ axel volume</a></th>\n  <th><a href=\"traffic.phtml?sortcol=occupancy\">Occupancy</a></th>\n</tr>\n</thead>\n<tbody>\n{$table}\n</tbody>\n</table>\n\n</form>\n\n<br><br>\nEOM;\n$t->render(\"sortables.phtml\");\n"
  },
  {
    "path": "htdocs/agclimate/ames_precip.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n\n$t->title = \"ISUSM - Ames Second Tipping Bucket Printout\";\n\n$table = file_get_contents($INTERNAL_BASEURL . \"/agclimate/ames_precip.py\");\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n    <li><a href=\"/agclimate/\">ISU Soil Moisture Network</a></li>\n    <li class=\"active\">Ames AEA Farm Dual Tipping Bucket</li>\n</ol>\n<style>\n.tableFixHead          { overflow-y: auto; height: 100px; }\n.tableFixHead thead th { position: sticky; top: 0; }\n\n/* Just common table stuff. Really. */\ntable  { border-collapse: collapse; width: 100%; }\nth, td { padding: 8px 16px; }\nth     { background:#eee; }\n</style>\n\n<h3>Ames ISU Ag Farm Dual Tipping Bucket</h3>\n\n<p>During the fall of 2017, a second tipping bucket was installed at the Ames\nISU Ag Farm location.  Here's a diagnostic printout of the observations. The\nCOOP total shown is a 24-hour value at 4 PM, not hourly like the buckets at\n4 PM.</p>\n\n{$table}\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/agclimate/current.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/mlib.php\";\n$nt = new NetworkTable(\"ISUSM\");\n\n$PUBLIC_URI = \"{$EXTERNAL_BASEURL}/api/1/currents.json?network=ISUSM\";\n$arr = array(\n    \"network\" => \"ISUSM\",\n);\n$jobj = iemws_json(\"currents.json\", $arr);\n\nfunction pretty($val, $fmt)\n{\n    // Pretty print things for the table\n    if (is_null($val)) {\n        return \"M\";\n    }\n    return sprintf($fmt, $val);\n}\n\n$table = <<<EOM\n<form method=\"GET\" action=\"/my/current.phtml\" name=\"my\">\n<table class='table table-striped table-bordered table-sm'>\n<thead class=\"sticky\">\n<tr>\n<th rowspan=\"2\">Add:</th>\n<th rowspan='2'>Location</th>\n<th rowspan='2'>Valid</th>\n<th colspan='3'>Air Temp &deg;F</th>\n<th rowspan=\"2\">Dew Pt &deg;F</th>\n<th colspan='3'>Wind MPH</th>\n<th rowspan='2'>Today's Rain inch</th>\n<th>4 inches</th>\n<th colspan='2'>12 inches</th>\n<th colspan='2'>24 inches</th>\n<th colspan='2'>50 inches</th>\n</tr>\n<tr>\n<th>Ob</th><th>High</th><th>Low</th>\n<th>Speed</th><th>Gust</th><th>Today's Peak</th>\n<th>Temp &deg;F</th><th>Temp &deg;F</th><th>Moist %</th>\n<th>Temp &deg;F</th><th>Moist %</th>\n<th>Temp &deg;F</th><th>Moist %</th>\n</tr>\n</thead>\n<tbody>\nEOM;\n$offline = array();\n$threshold = time() - 86400;\nforeach ($jobj[\"data\"] as $bogus => $data) {\n    $sid = $data[\"station\"];\n    $uri = sprintf(\"/sites/site.php?station=%s&network=ISUSM\", $sid);\n\n    $ts = strtotime($data[\"local_valid\"]);\n    if ($ts < $threshold) {\n        $offline[] = sprintf(\n            \"<a href=\\\"%s\\\">%s</a>\",\n            $uri,\n            $nt->table[$sid]['name']\n        );\n        continue;\n    }\n    $gts = is_null($data[\"local_max_gust_ts\"]) ? \"\": date(\"g:i A\", strtotime($data['local_max_gust_ts']));\n    $table .= sprintf(\n        \"<tr><td><input type=\\\"checkbox\\\" name=\\\"st[]\\\" value=\\\"%s\\\"></td>\" .\n            \"<td><a href=\\\"%s\\\">%s</a></td><td>%s</td>\" .\n            \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td>\" .\n            \"<td>%s @ %s</td><td>%s</td><td>%s @ %s</td>\" .\n            \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td>\" .\n            \"<td>%s</td><td>%s</td>\" .\n            \"<td>%s</td><td>%s</td></tr>\",\n        $sid,\n        $uri,\n        $nt->table[$sid]['name'],\n        date(\"g:i A\", $ts),\n        pretty($data[\"tmpf\"], '%.1f'),\n        pretty($data[\"max_tmpf\"], '%.1f'),\n        pretty($data[\"min_tmpf\"], '%.1f'),\n        pretty($data[\"dwpf\"], '%.1f'),\n        drct2txt($data[\"drct\"]),\n        pretty($data[\"sknt\"] * 1.15, '%.0f'),\n        pretty($data['gust'] * 1.15, '%.0f'),\n        pretty($data['max_gust'] * 1.15, '%.0f'),\n        $gts,\n        pretty($data['pday'], '%.2f'),\n        pretty($data[\"c1tmpf\"], '%.1f'),\n        pretty($data[\"c2tmpf\"], '%.1f'),\n        ($data[\"c2smv\"] < 0) ? \"Frozen\" : pretty($data[\"c2smv\"], '%.1f'),\n        pretty($data[\"c3tmpf\"], '%.1f'),\n        ($data[\"c3smv\"] < 0) ? \"Frozen\" : pretty($data[\"c3smv\"], '%.1f'),\n        pretty($data[\"c4tmpf\"], '%.1f'),\n        ($data[\"c4smv\"] < 0) ? \"Frozen\" : pretty($data[\"c4smv\"], '%.1f')\n    );\n}\n\n$table .= <<<EOM\n</tbody>\n</table>\n<input type=\"submit\" value=\"Add to Favorites\">\n<input type=\"reset\" value=\"Reset\">\n\n</form>\nEOM;\nif (sizeof($offline) > 0) {\n    $table .= sprintf(\"<br />Sites Offline: %s\", implode(\", \", $offline));\n}\n$v = isset($_REQUEST[\"v\"]) ? htmlentities($_REQUEST[\"v\"]) : 'tmpf';\n$t = new MyView();\n$t->current_network = \"ISU Soil Moisture\";\n$t->title = \"ISU Ag Climate Sortable Currents\";\n$t->refresh = 300;\n\n$t->breadcrumbs = <<<EOM\n <ol class=\"breadcrumb\">\n <li><a href=\"/agclimate/\">ISU Soil Moisture Network</a></li>\n <li class=\"active\">Sortable Currents</li>\n </ol>\nEOM;\n$t->content = <<<EOM\n<p>This table provides the most recent hourly observations collected from the\nnetwork.  The data was provided by <a href=\"{$PUBLIC_URI}\">this JSON webservice</a>.</p>\n\n<br />\n{$table}\n\nEOM;\n\n$t->render('sortables.phtml');\n"
  },
  {
    "path": "htdocs/agclimate/display.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\n\n$t = new MyView();\n$t->title = \"Ag Climate\";\n$prod = get_int404(\"prod\", 1);\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n\n$old2new = array(\n    \"/data/agclimate/air-temp-out.png\" => 1,\n    \"/data/agclimate/4in-temp-out.png\" => 2,\n    \"/agclimate/daily_pics/4in-temp-out.png\" => 2,\n    \"/data/agclimate/soil-hilo-out.png\" => 3,\n    \"/agclimate/daily_pics/soil-hilo-out.png\" => 3,\n    \"/data/agclimate/rad-out.png\" => 4,\n    \"/data/agclimate/prec-out.png\" => 5,\n    \"/data/agclimate/et-out.png\" => 6,\n    \"/data/agclimate/pk-wind-out.png\" => 7,\n    \"/data/agclimate/avewind-out.png\" => 8,\n    \"/data/agclimate/mon-et-out.png\" => 10,\n    \"/data/agclimate/mon-prec-out.png\" => 11\n);\n\n// Legacy\n$src = get_str404(\"src\", null);\nif (!is_null($src) && array_key_exists($src, $old2new)) {\n    $prod = $old2new[$src];\n}\n\n$data = array(\n    1 => array(\n        \"mapurl\" => \"/data/agclimate/air-temp-out.png\",\n        \"desc\" => \"High and low air temperature for a local day. Measurements are \n            made at a 2 meter height.\",\n    ),\n    2 => array(\n        \"mapurl\" => \"/data/agclimate/4in-temp-out.png\",\n        \"desc\" => \"Average 4 inch soil depth temperature.  Usually under a \n            bare soil.\",\n    ),\n    3 => array(\n        \"mapurl\" => \"/data/agclimate/soil-hilo-out.png\",\n        \"desc\" => \"High and low 4 inch soil depth temperature.  Usually under a \n            bare soil.\",\n    ),\n    4 => array(\n        \"mapurl\" => \"/data/agclimate/rad-out.png\",\n        \"desc\" => \"Daily total (direct + diffuse) solar radiation.\",\n    ),\n    5 => array(\n        \"mapurl\" => \"/data/agclimate/prec-out.png\",\n        \"desc\" => \"Daily total precipitation.  This is measured with a <b>non-heated</b> tipping bucket located near the ground.  These reported values should be\nused with extreme caution.  For various reasons, the reported values are \noften too low.\",\n    ),\n    6 => array(\n        \"mapurl\" => \"/data/agclimate/et-out.png\",\n        \"desc\" => \"Potential maximum estimated evapotranspiration.  This value uses\n            a daily Penman formulation with a crop coefficient of 1.\",\n    ),\n    7 => array(\n        \"mapurl\" => \"/data/agclimate/pk-wind-out.png\",\n        \"desc\" => \"Peak 5 second sustained wind gust.  The value is presented along\n      with the time using a 24 hour clock.  For example, 18:00 would be 6 PM.\n      Values are in local time, either CDT or CST depending on the time of\n      year.\",\n    ),\n    8 => array(\n        \"mapurl\" => \"/data/agclimate/avewind-out.png\",\n        \"desc\" => \"Average wind speed for the day as recorded by the data logger\n            on the station.\",\n    ),\n    10 => array(\n        \"mapurl\" => \"/GIS/apps/agclimate/month.php?dvar=dailyet&year=$year&month=$month\",\n        \"desc\" => \"Monthly total of daily maximum potential evapotranspiration. The\n            daily value is calculated via a Penman formulation with a crop\n            coefficient of 1.  The value would be a theoretical maximum.\"\n    ),\n    11 => array(\n        \"mapurl\" => \"/GIS/apps/agclimate/month.php?dvar=rain_in_tot&year=$year&month=$month\",\n        \"desc\" => \"Monthly total of daily reported precipitation. This is measured with a <b>non-heated</b> tipping bucket located near the ground.  These reported values should be\nused with extreme caution.  For various reasons, the reported values are \noften too low.\"\n    ),\n    12 => array(\n        \"mapurl\" => \"/data/agclimate/chill-sum.png\",\n        \"desc\" => \"The Standard Chill Unit map is a summation of hours during \n   which the temperature was between 32 and 45 degrees <b>after</b> \n   1 September.  The value has application for \n   fruit growers in the state.  The departure from average is also \n   presented.  This average is computed from the observational record at\n   the site.\"\n    ),\n);\n\n$extra = \"\";\nif ($prod == 10 || $prod == 11) {\n    $extra .= \"<form method='GET' name='ts'>\";\n    $extra .= \"<input type='hidden' value='$prod' name='prod'>\";\n    $extra .= \"<strong>Select Year: </strong>\" . yearSelect(1987, $year);\n    $extra .= \"<strong>Select Month: </strong>\" . monthSelect($month, \"month\");\n    $extra .= \"<input type='submit' value='Update Plot' />\";\n    $extra .= '</form>';\n}\n\n$t->content = <<<EOM\n<table style=\"float: left;\" width=\"100%\">\n<tr>\n<td valign=\"top\">\n{$extra}\n\n<img src=\"{$data[$prod][\"mapurl\"]}\" ALT=\"ISU Ag Climate\" style=\"border: 1px solid #000; \">\n\n<p><strong>Plot Description:</strong><br />\n{$data[$prod][\"desc\"]}\n\n<p><strong>QC Flags:</strong>\n<table>\n<tr>\n  <th>M</th>\n  <td>the data is missing</td></tr>\n\n<tr>\n  <th>E</th>\n  <td>An instrument may be flagged until repaired</td></tr>\n\n<tr>\n  <th>R</th>\n  <td>Estimate based on weighted linear regression from surrounding stations</td></tr>\n\n<tr>\n  <th>e</th>\n  <td>We are not confident of the estimate</td></tr>\n\n</table>\n</td>\n<td valign=\"TOP\" width=\"250\">\n\n<div id=\"right\">\n<table width=\"100%\" cellspacing=\"0\" cellpadding=\"1\">\n<tr>\n  <td class=\"heading\">\n     <b>Yesterday values:</b></td></tr>\n<tr>\n  <td>\n<div style=\"padding: 5px;\">\n  <A HREF=\"display.php?prod=1\">Max/Min Air Temps</A><br>\n  <A HREF=\"display.php?prod=2\">Avg 4in Soil Temps</A><br>\n  <A HREF=\"display.php?prod=3\">Max/Min 4in Soil Temps</A><br>\n  <a href=\"/data/soilt_day1.png\">County-based Soil Temps</a><br />\n  <A HREF=\"display.php?prod=4\">Solar Radiation Values</A><br>\n  <A HREF=\"display.php?prod=5\">Precipitation</A><br>\n  <A HREF=\"display.php?prod=6\">Potential E-T</A><br>\n  <A HREF=\"display.php?prod=7\">Peak Wind Gust (5 sec)</A><br>\n  <A HREF=\"display.php?prod=8\">Average Wind Speed</A><br>\n</div>\n  </td>\n</tr>\n\n<tr>\n  <td class=\"heading\">\n     <b>Accumulated values:</b></td></tr>\n<tr>\n  <td>\n<div style=\"padding: 5px;\">\n      <A HREF=\"display.php?prod=10\">Monthly evapotranspiration</A><br>\n      <A HREF=\"display.php?prod=11\">Monthly rainfall</A><br>\n      <A HREF=\"display.php?prod=12\">Standard Chill Units since 1 Sept</A><br>\n</div>\n  </td>\n</tr>\n\n<tr>\n  <td class=\"heading\">\n     <b>Data Applications:</b></td></tr>\n<tr><td>\n<div style=\"padding: 5px;\">\n  <a href=\"/GIS/apps/agclimate/gsplot.phtml\">Growing Season Maps</a><br>\n  <a href=\"/plotting/auto/?q=177\">Time Series Charts</a><br>\n  <a href=\"soilt-prob.php\">4in Soil Temperatures</a><br>\n  <A HREF=\"/plotting/auto/?q=199\">Daily Data Plotter</a><br>\n</div>\n  </td>\n</tr>\n\n<tr>\n  <td class=\"heading\">\n     <b>Data Request:</b></td></tr>\n<tr>\n  <td>\n<div style=\"padding: 5px;\">\n   <A HREF=\"/agclimate/hist/hourlyRequest.php\">Request Hourly Data</A><br>\n   <A HREF=\"/agclimate/hist/dailyRequest.php\">Request Daily Data</A><br>\n</div>\n  </td>\n</tr>\n\n</table>\n</div>\n\n</td></tr>\n</table>\n\n<br clear=\"all\" /><p>&nbsp;</p>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/agclimate/et.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n\n$t = new MyView();\n$t->title = \"ISUSM - Evapotranspiration Details\";\n\n$t->content = <<<EOM\n<ul class=\"breadcrumb\">\n    <li><a href=\"/agclimate/\">ISU Soil Moisture Network</a></li>\n    <li class=\"current\">ET Details</li>\n</ul>\n\n<h3>Evapotranspiration Details</h3>\n\n<p>Evapotranspiration (ET) is a term that describes the transport of water from\n    the ground surface and soil to the atmosphere.  This includes processes like\n    evaporation of liquid water and transpiration done by vegetation.  It is\n    an important part of the Water Cycle and knowing the amount of ET happening\n    during the growing season is important for usage in modelling, irrigation,\n    and crop management.</p>\n\n<h4>So lets 'observe' ET!</h4>\n\n<p>Directly measuring ET is not practical as you would have to somehow account\n    for every molecule of water vapor and know its exact source to know if it\n    contributed to the local ET.  The most common approach to directly\n    measuring ET is very expensive as it involves tracking air flow and\n    moisture in 3 dimensions. Another approach is through the usage of a\n    lysimeters, which attempt to keep an accounting of soil water.</p>\n\n<p>So when all else fails, we can produce model estimates based on more\n    commonly collected data.  That is what the legacy ISU AgClimate Network\n    and now ISU Soil Moisture Network has done.  This page attempts to fully\n    document the equations used and the application caveats of the data.</p>\n\n<h3>Estimating Evapotranspiration</h3>\n\n<div class=\"alert alert-info\">The estimation techniques described should apply\n        for both the legacy ISU AgClimate Network and the current ISU Soil\n        Moisture Network.</div>\n\n<p>Hourly estimates of ET are made by a set of equations found on the Campbell\n        Scientific Data Logger.  These hourly values are then summed to produce\n        calendar day totals to avoid confusion with having slightly conflicting\n        ET values for a given day.</p>\n\n<p>The hourly ET is estimated by the <a href=\"http://www.kimberly.uidaho.edu/water/asceewri/ASCE_Standardized_Ref_ET_Eqn_Phoenix2000.pdf\">ASCE Standardized Reference Evapotranspiration Equation</a>\n        , which assumes a reference tall crop (alfalfa).  The equation is as follows,\n        taken from the aforementioned reference.\n\n<br /><img src=\"images/eqn2_et.png\" alt=\"Reference ET Equation\" /></p>\n\n<p>The terms are defined as:\n    <table class=\"table table-striped table-sm table-bordered\">\n<thead><tr><th>Symbol</th><th>Description</th><th>Units</th></tr></thead>\n<tbody>\n        <tr>\n        <td>&Delta;</td>\n        <td>Slope of the vapor pressure-tempertaure curve, estimated by using\n        the mean temperature for the day or hour.</td>\n        <td>kPa &deg;C<sup>-1</sup></td>\n        </tr>\n\n        <tr>\n        <td>R<sub>n</sub></td>\n        <td>Net Radition.  This is the combination of received shortwave minus\n        the amount reflected by the crop (albedo) and longwave transmitted by\n        the soil.</td>\n        <td>MJ m<sup>-2</sup> d<sup>-1</sup></td>\n        </tr>\n\n        <tr>\n        <td>G</td>\n        <td>Ground Soil Heat Flux.</td>\n        <td>MJ m<sup>-2</sup> d<sup>-1</sup></td>\n        </tr>\n        \n</tbody>\n</table>\n        \n<p><strong>References:</strong>\n<ol>\n    <li><a href=\"https://en.wikipedia.org/wiki/Evapotranspiration\">Wikipedia's Evapotranspiration</a></li>\n    <li><a href=\"http://www.kimberly.uidaho.edu/water/asceewri/ASCE_Standardized_Ref_ET_Eqn_Phoenix2000.pdf\">ASCE Standardized Reference ET</a></li>\n    <li><a href=\"http://www.kimberly.uidaho.edu/water/fao56/fao56.pdf\">FAO 56</a></li>\n    <li><a href=\"https://github.com/woodcrafty/PyETo\">Python Implementation</a> of FAO 56 and other equations</li>\n</ol></p>\n\nEOM;\n\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/agclimate/hist/daily.php",
    "content": "<?php\n// Frontend for the ISUSM Daily Data Download\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/agclimate_boxinc.phtml\";\n\n$t = new MyView();\n$t->iem_resource = \"ISUSM\";\n$t->title = \"ISU Soil Moisture Daily Data Request\";\n\n$nt = new NetworkTable(\"ISUSM\");\n\n$yselect = yearSelect(2013, date(\"Y\"), \"year1\");\n$mselect = monthSelect(1, \"month1\");\n$dselect = daySelect(1, \"day1\");\n$yselect2 = yearSelect(2013, date(\"Y\"), \"year2\");\n$mselect2 = monthSelect(date(\"m\"), \"month2\");\n$dselect2 = daySelect(date(\"d\"), \"day2\");\n\n$sselect = \"\";\nforeach ($nt->table as $key => $val) {\n    $sselect .= sprintf(\n        '<div class=\"form-check\">' .\n            '<input class=\"form-check-input\" type=\"checkbox\" name=\"station\" value=\"%s\" id=\"%s\"> ' .\n            '<label class=\"form-check-label\" for=\"%s\">%s (%s County, %s)</label>' .\n        '</div>',\n        $key,\n        $key,\n        $key,\n        $val[\"name\"],\n        $val[\"county\"],\n        $key\n    );\n}\n\n$soilopts = \"\";\n$levels = array(4, 12, 24, 50);\nforeach ($levels as $key => $val) {\n    $soilopts .= sprintf(\n        '<div class=\"form-check\">' .\n            '<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"soil%02dtn\" ' .\n            'id=\"soil%02dtn\"> <label class=\"form-check-label\" for=\"soil%02dtn\">' .\n            'Daily Low %s inch Soil Temperature [F]</label>' .\n        '</div>' . \"\\n\",\n        $val,\n        $val,\n        $val,\n        $val\n    );\n    $soilopts .= sprintf(\n        '<div class=\"form-check\">' .\n            '<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"soil%02dt\" ' .\n            'id=\"soil%02dt\"> <label class=\"form-check-label\" for=\"soil%02dt\">' .\n            'Daily Average %s inch Soil Temperature [F]</label>' .\n        '</div>' . \"\\n\",\n        $val,\n        $val,\n        $val,\n        $val\n    );\n    $soilopts .= sprintf(\n        '<div class=\"form-check\">' .\n            '<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"soil%02dtx\" ' .\n            'id=\"soil%02dtx\"> <label class=\"form-check-label\" for=\"soil%02dtx\">' .\n            'Daily High %s inch Soil Temperature [F]</label>' .\n        '</div>' . \"\\n\",\n        $val,\n        $val,\n        $val,\n        $val\n    );\n}\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n<li class=\"breadcrumb-item\"><a href=\"/agclimate\">ISU Soil Moisture Network</a></li>\n<li class=\"breadcrumb-item active\" aria-current=\"page\">Daily Download</li>\n</ol>\n</nav>\n\n{$box}\n\n<div class=\"card mb-4\">\n<div class=\"card-header\">\n<h3 class=\"mb-0\">Daily Data Request Form</h3>\n</div>\n<div class=\"card-body\">\n\n<div class=\"alert alert-info mb-3\">\n<strong>Information:</strong> This interface accesses the archive of daily weather \ndata collected from the Iowa State Agclimate Automated Weather stations. Please\nselect the stations and weather variables desired below.\n</div>\n\n<div class=\"alert alert-warning mb-3\">\n<strong>Data Interval:</strong> Currently you are selected to download daily data. \nYou may wish to change this to <a href=\"hourly.php\">hourly data</a>.\n</div>\n\n<p><a href=\"/cgi-bin/request/isusm.py?help\" class=\"btn btn-info\">\n<i class=\"bi bi-file-earmark-text\"></i> Backend documentation</a> exists for those\nwishing to script against this data service.</p>\n\n<form name=\"dl\" method=\"GET\" action=\"/cgi-bin/request/isusm.py\">\n<input type=\"hidden\" name=\"mode\" value=\"daily\" />\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n\n<div class=\"mb-4\">\n<h5>Select station(s):</h5>\n<p><a href=\"/sites/networks.php?network=ISUSM&format=html\">View station metadata</a></p>\n{$sselect}\n</div>\n\n<div class=\"mb-4\">\n<h5>Select the time interval:</h5>\n<div class=\"alert alert-info\">\n<small><em>When selecting the time interval, make sure you choose <strong>valid</strong> dates.</em></small>\n</div>\n<div class=\"table-responsive\">\n<table class=\"table table-bordered\">\n<thead class=\"table-light\">\n<tr><th></th><th>Year:</th><th>Month:</th><th>Day:</th></tr>\n</thead>\n<tbody>\n<tr><th>Starting On:</th>\n<td>{$yselect}</td>\n<td>{$mselect}</td>\n<td>{$dselect}</td>\n</tr>\n<tr><th>Ending On:</th>\n<td>{$yselect2}</td>\n<td>{$mselect2}</td>\n<td>{$dselect2}</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div>\n\n<div class=\"card mb-4\">\n<div class=\"card-header\">\n<h5 class=\"mb-0\">Variables</h5>\n</div>\n<div class=\"card-body\">\n\n<div class=\"mb-3\">\n<strong>Select from available variables</strong>\n</div>\n\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"high\" id=\"high\">\n<label class=\"form-check-label\" for=\"high\">High Temperature [F]</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"low\" id=\"low\">\n<label class=\"form-check-label\" for=\"low\">Low Temperature [F]</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"chillhours\" id=\"chillhours\">\n<label class=\"form-check-label\" for=\"chillhours\">Daily Chill Hours,</label>\n<div class=\"d-inline-flex gap-2 ms-2\">\n<span>Base (&deg;F):</span> <input type=\"text\" size=\"3\" value=\"32\" name=\"chillbase\" class=\"form-control form-control-sm\">\n<span>Ceiling (&deg;F):</span> <input type=\"text\" size=\"3\" value=\"45\" name=\"chillceil\" class=\"form-control form-control-sm\">\n</div>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"rh_min\" id=\"rh_min\">\n<label class=\"form-check-label\" for=\"rh_min\">Minimum Relative Humidity [%]</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"rh\" id=\"rh\">\n<label class=\"form-check-label\" for=\"rh\">Average Relative Humidity [%]</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"rh_max\" id=\"rh_max\">\n<label class=\"form-check-label\" for=\"rh_max\">Maximum Relative Humidity [%]</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"gdd50\" id=\"gdd50\">\n<label class=\"form-check-label\" for=\"gdd50\">Growing Degree Days (base 50) [F]</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"solar\" id=\"solar\">\n<label class=\"form-check-label\" for=\"solar\">Solar Radiation [J/m^2]</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"solar_mj\" id=\"solar_mj\">\n<label class=\"form-check-label\" for=\"solar_mj\">Solar Radiation [MJ/m^2]</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"precip\" id=\"precip\">\n<label class=\"form-check-label\" for=\"precip\">Precipitation [inch]</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"speed\" id=\"speed\">\n<label class=\"form-check-label\" for=\"speed\">Average Wind Speed [mph]</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"gust\" id=\"gust\">\n<label class=\"form-check-label\" for=\"gust\">Wind Gust [mph]</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"et\" id=\"et\">\n<label class=\"form-check-label\" for=\"et\">Reference Evapotranspiration [inch] <a href=\"/agclimate/et.phtml\" target=\"_new\">More Info</a></label>\n</div>\n\n{$soilopts}\n\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"soil12vwc\" id=\"soil12vwc\">\n<label class=\"form-check-label\" for=\"soil12vwc\">12 inch Soil Moisture [%]</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"soil24vwc\" id=\"soil24vwc\">\n<label class=\"form-check-label\" for=\"soil24vwc\">24 inch Soil Moisture [%]</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"soil50vwc\" id=\"soil50vwc\">\n<label class=\"form-check-label\" for=\"soil50vwc\">50 inch Soil Moisture [%]</label>\n</div>\n\n<hr>\n\n<div class=\"mb-3\">\n<strong>Vineyard Station-only Variables</strong>\n<small class=\"d-block text-muted\">Sorry for the cryptic labels, this is a current work in progress.</small>\n</div>\n\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"lwmv_1\" id=\"lwmv_1\">\n<label class=\"form-check-label\" for=\"lwmv_1\">lwmv_1</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"lwmv_2\" id=\"lwmv_2\">\n<label class=\"form-check-label\" for=\"lwmv_2\">lwmv_2</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"lwmdry_1_tot\" id=\"lwmdry_1_tot\">\n<label class=\"form-check-label\" for=\"lwmdry_1_tot\">lwmdry_1_tot</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"lwmcon_1_tot\" id=\"lwmcon_1_tot\">\n<label class=\"form-check-label\" for=\"lwmcon_1_tot\">lwmcon_1_tot</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"lwmwet_1_tot\" id=\"lwmwet_1_tot\">\n<label class=\"form-check-label\" for=\"lwmwet_1_tot\">lwmwet_1_tot</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"lwmdry_2_tot\" id=\"lwmdry_2_tot\">\n<label class=\"form-check-label\" for=\"lwmdry_2_tot\">lwmdry_2_tot</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"lwmcon_2_tot\" id=\"lwmcon_2_tot\">\n<label class=\"form-check-label\" for=\"lwmcon_2_tot\">lwmcon_2_tot</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"lwmwet_2_tot\" id=\"lwmwet_2_tot\">\n<label class=\"form-check-label\" for=\"lwmwet_2_tot\">lwmwet_2_tot</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"bpres_avg\" id=\"bpres_avg\">\n<label class=\"form-check-label\" for=\"bpres_avg\">bpres_avg</label>\n</div>\n\n<hr>\n\n<div class=\"mb-3\">\n<p>The Ames-AEA, Ames-Kitchen, and Jefferson locations have the\n<a href=\"https://www.campbellsci.com/soilvue10\">CS SoilVue 10</a> installed.</p>\n\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv\" id=\"sv\">\n<label class=\"form-check-label\" for=\"sv\">SoilVue Temperature + Moisture Data</label>\n</div>\n</div>\n\n</div>\n</div>\n\n<div class=\"card mb-4\">\n<div class=\"card-header\">\n<h5 class=\"mb-0\">Options</h5>\n</div>\n<div class=\"card-body\">\n\n<div class=\"form-check mb-3\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"todisk\" value=\"yes\" id=\"todisk\">\n<label class=\"form-check-label\" for=\"todisk\">Download directly to disk</label>\n</div>\n\n<div class=\"mb-3\">\n<label for=\"format\" class=\"form-label\"><strong>How should the data be formatted?:</strong></label>\n<select name=\"format\" id=\"format\" class=\"form-select\">\n<option value=\"excel\">Microsoft Excel (xlsx)</option>\n<option value=\"comma\">Comma Delimited Text File</option>\n<option value=\"tab\">Tab Delimited Text File</option>\n</select>\n</div>\n\n<div class=\"mb-3\">\n<label for=\"missing\" class=\"form-label\"><strong>How should missing values be represented?:</strong></label>\n<select name=\"missing\" id=\"missing\" class=\"form-select\">\n<option value=\"-99\">-99</option>\n<option value=\"M\">M</option>\n<option value=\"\">(blank, empty space)</option>\n</select>\n</div>\n\n{$qcbox}\n\n<div class=\"mb-3\">\n<h6><strong>Submit your request:</strong></h6>\n<div class=\"d-flex gap-2\">\n<input type=\"submit\" value=\"Get Data\" class=\"btn btn-primary\">\n<input type=\"reset\" value=\"Reset Form\" class=\"btn btn-secondary\">\n</div>\n</div>\n\n</div>\n</div>\n\n</form>\n\n</div>\n<div class=\"col-md-6\">\n\n<div class=\"card\">\n<div class=\"card-header\">\n<h4 class=\"mb-0\">Meaning of Data Columns</h4>\n</div>\n<div class=\"card-body\">\n\n<dl class=\"row\">\n<dt class=\"col-sm-4\">station</dt>\n<dd class=\"col-sm-8\">National Weather Service Location Identifier for the\nsite. This is a five character identifier.</dd>\n\n<dt class=\"col-sm-4\">valid</dt>\n<dd class=\"col-sm-8\">Date of the observation</dd>\n\n<dt class=\"col-sm-4\">high</dt>\n<dd class=\"col-sm-8\">High Temperature [F]</dd>\n<dt class=\"col-sm-4\">low</dt>\n<dd class=\"col-sm-8\">Low Temperature [F]</dd>\n<dt class=\"col-sm-4\">rh</dt>\n<dd class=\"col-sm-8\">Average Relative Humidity [%]</dd>\n<dt class=\"col-sm-4\">rh_max</dt>\n<dd class=\"col-sm-8\">Maximum Relative Humidity based on hourly observations [%]</dd>\n<dt class=\"col-sm-4\">rh_min</dt>\n<dd class=\"col-sm-8\">Minimum Relative Humidity based on hourly observations [%]</dd>\n<dt class=\"col-sm-4\">gdd50</dt>\n<dd class=\"col-sm-8\">Growing Degree Days [F]</dd>\n<dt class=\"col-sm-4\">solar</dt>\n<dd class=\"col-sm-8\">Solar Radiation [J/m^2]</dd>\n<dt class=\"col-sm-4\">precip</dt>\n<dd class=\"col-sm-8\">Precipitation [inch]</dd>\n<dt class=\"col-sm-4\">speed</dt>\n<dd class=\"col-sm-8\">Average Wind Speed [mph], 10 minute average, 10 ft above ground</dd>\n<dt class=\"col-sm-4\">gust</dt>\n<dd class=\"col-sm-8\">Peak Wind Gust [mph], 10 minute average, 10 ft above ground</dd>\n<dt class=\"col-sm-4\">et</dt>\n<dd class=\"col-sm-8\">Evapotranspiration [inch]</dd>\n<dt class=\"col-sm-4\">soil04tn</dt>\n<dd class=\"col-sm-8\">Daily Low 4 inch Depth Soil Temperature [F]</dd>\n<dt class=\"col-sm-4\">soil04t</dt>\n<dd class=\"col-sm-8\">Daily Average 4 inch Depth Soil Temperature [F]</dd>\n<dt class=\"col-sm-4\">soil04tx</dt>\n<dd class=\"col-sm-8\">Daily High 4 inch Depth Soil Temperature [F]</dd>\n<dt class=\"col-sm-4\">soil12tn</dt>\n<dd class=\"col-sm-8\">Daily Low 12 inch Depth Soil Temperature [F]</dd>\n<dt class=\"col-sm-4\">soil12t</dt>\n<dd class=\"col-sm-8\">Daily Average 12 inch Depth Soil Temperature [F]</dd>\n<dt class=\"col-sm-4\">soil12tx</dt>\n<dd class=\"col-sm-8\">Daily High 12 inch Depth Soil Temperature [F]</dd>\n<dt class=\"col-sm-4\">soil24tn</dt>\n<dd class=\"col-sm-8\">Daily Low 24 inch Depth Soil Temperature [F]</dd>\n<dt class=\"col-sm-4\">soil24t</dt>\n<dd class=\"col-sm-8\">Daily Average 24 inch Depth Soil Temperature [F]</dd>\n<dt class=\"col-sm-4\">soil24tx</dt>\n<dd class=\"col-sm-8\">Daily High 24 inch Depth Soil Temperature [F]</dd>\n<dt class=\"col-sm-4\">soil50tn</dt>\n<dd class=\"col-sm-8\">Daily Low 50 inch Depth Soil Temperature [F]</dd>\n<dt class=\"col-sm-4\">soil50t</dt>\n<dd class=\"col-sm-8\">Daily Average 50 inch Depth Soil Temperature [F]</dd>\n<dt class=\"col-sm-4\">soil50tx</dt>\n<dd class=\"col-sm-8\">Daily High 50 inch Depth Soil Temperature [F]</dd>\n<dt class=\"col-sm-4\">soil12vwc</dt>\n<dd class=\"col-sm-8\">Average 12 inch Depth Soil Volumetric Water Content [%]</dd>\n<dt class=\"col-sm-4\">soil24vwc</dt>\n<dd class=\"col-sm-8\">Average 24 inch Depth Soil Volumetric Water Content [%]</dd>\n<dt class=\"col-sm-4\">soil50vwc</dt>\n<dd class=\"col-sm-8\">Average 50 inch Depth Soil Volumetric Water Content [%]</dd>\n</dl>\n\n</div>\n</div>\n\n</div>\n</div>\n\n</div>\n</div>\n\nEOM;\n$t->render(\"single.phtml\");\n"
  },
  {
    "path": "htdocs/agclimate/hist/dailyRequest.php",
    "content": "<?php\n/* Daily Data download for the ISUAG Network */\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\ndefine(\"IEM_APPID\", 12);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/agclimate_boxinc.phtml\";\n\n$t = new MyView();\n$t->iem_resource = \"ISUSM\";\n$t->title = \"ISU AgClimate Legacy Daily Data Request\";\n\n$ys = yearSelect(1986, date(\"Y\"), \"startYear\", '', 2014);\n$ms = monthSelect(1, \"startMonth\");\n$ds = daySelect(1, \"startDay\");\n$ys2 = yearSelect(1986, date(\"Y\"), \"endYear\", '', 2014);\n$ms2 = monthSelect(date(\"m\"), \"endMonth\");\n$ds2 = daySelect(date(\"d\"), \"endDay\");\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n<li class=\"breadcrumb-item\"><a href=\"/agclimate\">ISU AgClimate</a></li>\n<li class=\"breadcrumb-item active\" aria-current=\"page\">Legacy Network Daily Download</li>\n</ol>\n</nav>\n\n{$box}\n\n<div class=\"card mb-4\">\n<div class=\"card-header\">\n<h4 class=\"mb-0\">Daily Data Request Form</h4>\n</div>\n<div class=\"card-body\">\n\n<p>This interface allows the download of daily summary data from the legacy\nISU AgClimate Network sites.  Data for some of these sites exists back \ntill 1986 until they all were removed in 2014.  In general, \n<strong>the precipitation data is of poor quality and should not be used.</strong>\nPlease see the \n<a href=\"/request/coop/fe.phtml\">NWS COOP download page</a> \nfor high quality daily precipitation data.  If you are looking for hourly \ndata from this network, see <a href=\"hourlyRequest.php\">this page</a>.</p>\n\n<form name=\"dl\" method=\"GET\" action=\"worker.php\">\n<input type=\"hidden\" name=\"timeType\" value=\"daily\">\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n\n<div class=\"mb-4\">\n<h5>Select station(s):</h5>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A130209\" id=\"ames_daily\">\n<label class=\"form-check-label\" for=\"ames_daily\">Ames</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A131069\" id=\"calmar_daily\">\n<label class=\"form-check-label\" for=\"calmar_daily\">Calmar</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A131299\" id=\"castana_daily\">\n<label class=\"form-check-label\" for=\"castana_daily\">Castana</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A131329\" id=\"cedar_daily\">\n<label class=\"form-check-label\" for=\"cedar_daily\">Cedar Rapids</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A131559\" id=\"chariton_daily\">\n<label class=\"form-check-label\" for=\"chariton_daily\">Chariton</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A131909\" id=\"crawford_daily\">\n<label class=\"form-check-label\" for=\"crawford_daily\">Crawfordsville</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A130219\" id=\"gilbert_daily\">\n<label class=\"form-check-label\" for=\"gilbert_daily\">Gilbert</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A134309\" id=\"kanawha_daily\">\n<label class=\"form-check-label\" for=\"kanawha_daily\">Kanawha</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A134759\" id=\"lewis_daily\">\n<label class=\"form-check-label\" for=\"lewis_daily\">Lewis</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A135849\" id=\"muscatine_daily\">\n<label class=\"form-check-label\" for=\"muscatine_daily\">Muscatine</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A135879\" id=\"nashua_daily\">\n<label class=\"form-check-label\" for=\"nashua_daily\">Nashua</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A136949\" id=\"rhodes_daily\">\n<label class=\"form-check-label\" for=\"rhodes_daily\">Rhodes</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A138019\" id=\"sutherland_daily\">\n<label class=\"form-check-label\" for=\"sutherland_daily\">Sutherland</label>\n</div>\n</div>\n\n<div class=\"mb-4\">\n<h5>Select data:</h5>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c11\" id=\"high_temp\">\n<label class=\"form-check-label\" for=\"high_temp\">High Temperature (F)</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c12\" id=\"low_temp\">\n<label class=\"form-check-label\" for=\"low_temp\">Low Temperature (F)</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c30l\" id=\"soil_low\">\n<label class=\"form-check-label\" for=\"soil_low\">Daily Low 4in Soil Temperature (F)</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c30\" id=\"soil_avg\">\n<label class=\"form-check-label\" for=\"soil_avg\">Average 4in Soil Temperature (F)</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c30h\" id=\"soil_high\">\n<label class=\"form-check-label\" for=\"soil_high\">Daily Max 4in Soil Temperature (F)</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c40\" id=\"wind_avg\">\n<label class=\"form-check-label\" for=\"wind_avg\">Average Windspeed (MPH) (~3 meter height)</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c509\" id=\"wind_gust_1\">\n<label class=\"form-check-label\" for=\"wind_gust_1\">Max Wind Gust -- 1 min (MPH)</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c529\" id=\"wind_gust_5\">\n<label class=\"form-check-label\" for=\"wind_gust_5\">Max Wind Gust -- 5 sec (MPH)</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c90\" id=\"precip_daily\">\n<label class=\"form-check-label\" for=\"precip_daily\">Daily Precipitation (inch)</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c20\" id=\"humidity_avg\">\n<label class=\"form-check-label\" for=\"humidity_avg\">Average Relative Humidity (%)</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c80\" id=\"solar_rad\">\n<label class=\"form-check-label\" for=\"solar_rad\">Solar Radiation (langley)</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c70\" id=\"evapo\">\n<label class=\"form-check-label\" for=\"evapo\"><a href=\"/agclimate/et.phtml\" target=\"_new\">Reference Evapotranspiration (alfalfa)</a> [inch]</label>\n</div>\n</div>\n\n</div>\n<div class=\"col-md-6\">\n\n<div class=\"mb-4\">\n<h5>Select the time interval:</h5>\n<div class=\"alert alert-info\">\n<small><em>When selecting the time interval, make sure you choose <strong>valid</strong> dates.</em></small>\n</div>\n<div class=\"table-responsive\">\n<table class=\"table table-bordered\">\n<thead class=\"table-light\">\n<tr><th></th><th>Year:</th><th>Month:</th><th>Day:</th></tr>\n</thead>\n<tbody>\n<tr><th>Starting On:</th>\n<td>{$ys}</td>\n<td>{$ms}</td>\n<td>{$ds}</td>\n</tr>\n<tr><th>Ending On:</th>\n<td>{$ys2}</td>\n<td>{$ms2}</td>\n<td>{$ds2}</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div>\n\n<div class=\"card mb-4\">\n<div class=\"card-header\">\n<h5 class=\"mb-0\">Options</h5>\n</div>\n<div class=\"card-body\">\n\n<div class=\"form-check mb-3\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"qcflags\" value=\"yes\" id=\"qcflags_daily\">\n<label class=\"form-check-label\" for=\"qcflags_daily\">Include quality control flags</label>\n</div>\n\n<div class=\"table-responsive mb-3\">\n<table class=\"table table-striped\">\n<thead class=\"table-dark\">\n<tr><th>Flag</th><th>Meaning</th></tr>\n</thead>\n<tbody>\n<tr>\n<th>M</th>\n<td>the data is missing</td>\n</tr>\n<tr>\n<th>E</th>\n<td>An instrument may be flagged until repaired</td>\n</tr>\n<tr>\n<th>R</th>\n<td>Estimate based on weighted linear regression from surrounding stations</td>\n</tr>\n<tr>\n<th>e</th>\n<td>We are not confident of the estimate</td>\n</tr>\n</tbody>\n</table>\n</div>\n\n<div class=\"form-check mb-3\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"todisk\" value=\"yes\" id=\"todisk_daily\">\n<label class=\"form-check-label\" for=\"todisk_daily\">Download directly to disk</label>\n</div>\n\n<div class=\"row mb-3\">\n<div class=\"col-md-6\">\n<label for=\"delim_daily\" class=\"form-label\">How should the values be separated?:</label>\n<select name=\"delim\" id=\"delim_daily\" class=\"form-select\">\n<option value=\"comma\">by commas</option>\n<option value=\"tab\">by tabs</option>\n</select>\n</div>\n<div class=\"col-md-6\">\n<label for=\"lf_daily\" class=\"form-label\">Text file format:</label>\n<select name=\"lf\" id=\"lf_daily\" class=\"form-select\">\n<option value=\"dos\">Windows/DOS</option>\n<option value=\"unix\">UNIX/MacOSX</option>\n</select>\n</div>\n</div>\n\n<div class=\"alert alert-success\">\n<strong>Pro-Tip</strong>: The downloaded text files should be easily loaded into spreadsheet programs, like Microsoft Excel.\nFrom Microsoft Excel, go to File → Open and set the file type to \"All Files\" or something appropriate for delimited text.\n</div>\n\n</div>\n</div>\n\n</div>\n</div>\n\n<div class=\"mb-3\">\n<h5>Submit your request:</h5>\n<div class=\"d-flex gap-2\">\n<input type=\"submit\" value=\"Get Data\" class=\"btn btn-primary\">\n<input type=\"reset\" value=\"Reset Form\" class=\"btn btn-secondary\">\n</div>\n</div>\n\n</form>\n</div>\n</div>\n\n\n<br />\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/agclimate/hist/hourly.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n$t->iem_resource = \"ISUSM\";\n$t->title = \"ISU Soil Moisture Minute/Hourly Data Request\";\n\n$nt = new NetworkTable(\"ISUSM\");\nrequire_once \"../../../include/agclimate_boxinc.phtml\";\n\n$yselect = yearSelect(2013, 2013, \"year1\");\n$mselect = monthSelect(1, \"month1\");\n$dselect = daySelect(1, \"day1\");\n$yselect2 = yearSelect(2013, date(\"Y\"), \"year2\");\n$mselect2 = monthSelect(date(\"m\"), \"month2\");\n$dselect2 = daySelect(date(\"d\"), \"day2\");\n\n$sselect = \"\";\nforeach ($nt->table as $key => $val) {\n    $sselect .= sprintf(\n        '<div class=\"form-check\">' .\n            '<input class=\"form-check-input\" type=\"checkbox\" name=\"station\" value=\"%s\" id=\"%s\"> ' .\n            '<label class=\"form-check-label\" for=\"%s\">[%s] %s (%s County) (%s-%s)</label>' .\n        '</div>',\n        $key,\n        $key,\n        $key,\n        $key,\n        $val[\"name\"],\n        $val[\"county\"],\n        is_null($val[\"archive_begin\"]) ? \"\" : $val[\"archive_begin\"]->format(\"Y-m-d\"),\n        is_null($val[\"archive_end\"]) ? \"today\" : $val[\"archive_end\"]->format(\"Y-m-d\"),\n    );\n}\n\n$ar = array(\n    \"tmpf\" => \"Air Temperature [°F]\",\n    \"relh\" => \"Relative Humidity [%]\",\n    \"solar\" => \"Solar Radiation [J/m2]\",\n    \"precip\" => \"Precipitation [inch]\",\n    \"speed\" => \"Average Wind Speed [mph]\",\n    \"drct\" => \"Wind Direction [°]\",\n    \"et\" => \"Potential Evapotranspiration [inch]\",\n    \"soil04t\" => \"4 inch Soil Temperature [°F]\",\n    \"soil12t\" => \"12 inch Soil Temperature [°F]\",\n    \"soil24t\" => \"24 inch Soil Temperature [°F]\",\n    \"soil50t\" => \"50 inch Soil Temperature [°F]\",\n    \"soil12vwc\" => \"12 inch Soil Moisture [%]\",\n    \"soil24vwc\" => \"24 inch Soil Moisture [%]\",\n    \"soil50vwc\" => \"50 inch Soil Moisture [%]\",\n    \"cci\" => \"Comprehensive Climate Index (CCI) No-Shade Effect [unitless]\",\n    \"cci_shade\" => \"Comprehensive Climate Index (CCI) Shade Effect [unitless]\",\n    \"bp_mb\" => \"Atmospheric Pressure [mb] (only Ames ISU Hort Farm at 15 minute interval)\",\n);\n$vselect = make_checkboxes(\"vars\", \"\", $ar);\n\n$ar = array(\n    \"lwmv_1\" => \"lwmv_1\",\n    \"lwmv_2\" => \"lwmv_2\",\n    \"lwmdry_1_tot\" => \"lwmdry_1_tot\",\n    \"lwmcon_1_tot\" => \"lwmcon_1_tot\",\n    \"lwmwet_1_tot\" => \"lwmwet_1_tot\",\n    \"lwmdry_2_tot\" => \"lwmdry_2_tot\",\n    \"lwmcon_2_tot\" => \"lwmcon_2_tot\",\n    \"lwmwet_2_tot\" => \"lwmwet_2_tot\",\n    \"bpres_avg\" => \"bpres_avg\",\n);\n$vselect2 = make_checkboxes(\"vars\", \"\", $ar);\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n<li class=\"breadcrumb-item\"><a href=\"/agclimate\">ISU Soil Moisture Network</a></li>\n<li class=\"breadcrumb-item active\" aria-current=\"page\">Minute/Hourly Download</li>\n</ol>\n</nav>\n\n{$box}\n\n<div class=\"card mb-4\">\n<div class=\"card-header\">\n<h3 class=\"mb-0\">Minute/Hourly Data</h3>\n</div>\n<div class=\"card-body\">\n\n<p>The present data collection interval from this network is every 15 minutes\nfor the vineyard sites and every minute for the others. The minute interval\ndata only started in 2021 though. The default download is to provide the\nhourly data.</p>\n\n<p><a href=\"/cgi-bin/request/isusm.py?help\" class=\"btn btn-info\">\n<i class=\"bi bi-file-earmark-text\"></i> Backend documentation</a> exists for those\nwishing to script against this data service.</p>\n\n<form name='dl' method=\"GET\" action=\"/cgi-bin/request/isusm.py\">\n<input type=\"hidden\" name=\"mode\" value=\"hourly\" />\n\n<div class=\"row\">\n<div class=\"col-md-7\">\n\n<div class=\"mb-4\">\n<h5>Select Time Resolution:</h5>\n<select name=\"timeres\" class=\"form-select\">\n<option value=\"hourly\" selected=\"selected\">Hourly</option>\n<option value=\"minute\">Minute</option>\n</select>\n</div>\n\n<div class=\"mb-4\">\n<h5>Select station(s):</h5>\n<p><a href=\"/sites/networks.php?network=ISUSM\">View station metadata</a></p>\n\n{$sselect}\n</div>\n\n</div>\n<div class=\"col-md-5\">\n\n<div class=\"mb-4\">\n<h5>Select the time interval:</h5>\n<div class=\"table-responsive\">\n<table class=\"table table-bordered\">\n<thead class=\"table-light\">\n<tr><th></th><th>Year:</th><th>Month:</th><th>Day:</th></tr>\n</thead>\n<tbody>\n<tr><th>Starting On:</th>\n<td>{$yselect}</td>\n<td>{$mselect}</td>\n<td>{$dselect}</td>\n</tr>\n<tr><th>Ending On:</th>\n<td>{$yselect2}</td>\n<td>{$mselect2}</td>\n<td>{$dselect2}</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div>\n\n<div class=\"card mb-4\">\n<div class=\"card-header\">\n<h5 class=\"mb-0\">Variables</h5>\n</div>\n<div class=\"card-body\">\n\n<div class=\"mb-3\">\n<strong>Select from available variables</strong><br />\n<small><a href=\"/agclimate/et.phtml\" target=\"_new\">Reference Evapotranspiration (alfalfa)</a></small>\n</div>\n\n{$vselect}\n\n<hr>\n\n<div class=\"mb-3\">\n<p>The Ames-AEA, Ames-Kitchen, Ames-Hinds, and Jefferson locations have the\n<a href=\"https://www.campbellsci.com/soilvue10\">CS SoilVue 10</a> installed,\nbut the depth of installation varies by site with the first depth at\nthe Ames-AEA location being at 14 inches.</p>\n\n<div class=\"form-check mb-3\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv\" id=\"sv\">\n<label class=\"form-check-label\" for=\"sv\">All SoilVue Temperature + Moisture Data</label>\n</div>\n\n<div class=\"mb-2\"><strong>or</strong> select from the following depths:</div>\n\n<div class=\"row\">\n<div class=\"col-md-4\">\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv2\" id=\"sv2\">\n<label class=\"form-check-label\" for=\"sv2\">2 inch</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv12\" id=\"sv12\">\n<label class=\"form-check-label\" for=\"sv12\">12 inch</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv20\" id=\"sv20\">\n<label class=\"form-check-label\" for=\"sv20\">20 inch</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv30\" id=\"sv30\">\n<label class=\"form-check-label\" for=\"sv30\">30 inch</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv40\" id=\"sv40\">\n<label class=\"form-check-label\" for=\"sv40\">40 inch</label>\n</div>\n</div>\n\n<div class=\"col-md-4\">\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv4\" id=\"sv4\">\n<label class=\"form-check-label\" for=\"sv4\">4 inch</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv14\" id=\"sv14\">\n<label class=\"form-check-label\" for=\"sv14\">14 inch</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv24\" id=\"sv24\">\n<label class=\"form-check-label\" for=\"sv24\">24 inch</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv32\" id=\"sv32\">\n<label class=\"form-check-label\" for=\"sv32\">32 inch</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv42\" id=\"sv42\">\n<label class=\"form-check-label\" for=\"sv42\">42 inch</label>\n</div>\n</div>\n\n<div class=\"col-md-4\">\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv8\" id=\"sv8\">\n<label class=\"form-check-label\" for=\"sv8\">8 inch</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv16\" id=\"sv16\">\n<label class=\"form-check-label\" for=\"sv16\">16 inch</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv28\" id=\"sv28\">\n<label class=\"form-check-label\" for=\"sv28\">28 inch</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv36\" id=\"sv36\">\n<label class=\"form-check-label\" for=\"sv36\">36 inch</label>\n</div>\n<div class=\"form-check\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"vars\" value=\"sv52\" id=\"sv52\">\n<label class=\"form-check-label\" for=\"sv52\">52 inch</label>\n</div>\n</div>\n</div>\n</div>\n\n<hr>\n\n<div class=\"mb-3\">\n<strong>Vineyard Station-only Variables</strong>\n{$vselect2}\n</div>\n\n{$qcbox}\n\n</div>\n</div>\n\n<div class=\"card mb-4\">\n<div class=\"card-header\">\n<h5 class=\"mb-0\">Options</h5>\n</div>\n<div class=\"card-body\">\n\n<div class=\"form-check mb-3\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"todisk\" value=\"yes\" id=\"dd\">\n<label class=\"form-check-label\" for=\"dd\">Download directly to disk</label>\n</div>\n\n<div class=\"mb-3\">\n<label for=\"format\" class=\"form-label\"><strong>How should the data be formatted?:</strong></label>\n<select name=\"format\" id=\"format\" class=\"form-select\">\n<option value=\"excel\">Microsoft Excel (xlsx)</option>\n<option value=\"comma\">Comma Delimited Text File</option>\n<option value=\"tab\">Tab Delimited Text File</option>\n</select>\n</div>\n\n<div class=\"mb-3\">\n<label for=\"missing\" class=\"form-label\"><strong>How should missing values be represented?:</strong></label>\n<select name=\"missing\" id=\"missing\" class=\"form-select\">\n<option value=\"-99\">-99</option>\n<option value=\"M\">M</option>\n<option value=\"\">(blank, empty space)</option>\n</select>\n</div>\n\n<div class=\"mb-3\">\n<label for=\"tz\" class=\"form-label\"><strong>Timezone for Data:</strong></label>\n<select name=\"tz\" id=\"tz\" class=\"form-select\">\n<option value=\"America/Chicago\">Central Standard/Daylight Time</option>\n<option value=\"UTC\">UTC</option>\n</select>\n</div>\n\n<div class=\"mb-3\">\n<h6><strong>Submit your request:</strong></h6>\n<div class=\"d-flex gap-2\">\n<input type=\"submit\" value=\"Submit\" class=\"btn btn-primary\">\n<input type=\"reset\" value=\"Reset Form\" class=\"btn btn-secondary\">\n</div>\n</div>\n\n</div>\n</div>\n\n</div>\n</div>\n\n</form>\n</div>\n</div>\n\n<div class=\"card\">\n<div class=\"card-header\">\n<h4 class=\"mb-0\">Description of variables in download</h4>\n</div>\n<div class=\"card-body\">\n\n<dl class=\"row\">\n<dt class=\"col-sm-3\">station</dt>\n<dd class=\"col-sm-9\">National Weather Service Location Identifier for the\nsite. This is a five character identifier.</dd>\n<dt class=\"col-sm-3\">valid</dt>\n<dd class=\"col-sm-9\">Timestamp of the observation either in CST or CDT</dd>\n<dt class=\"col-sm-3\">tmpf</dt>\n<dd class=\"col-sm-9\">Air Temperature [F]</dd>\n<dt class=\"col-sm-3\">relh</dt>\n<dd class=\"col-sm-9\">Relative Humidity [%]</dd>\n<dt class=\"col-sm-3\">solar</dt>\n<dd class=\"col-sm-9\">Solar Radiation [Joule/m2]</dd>\n<dt class=\"col-sm-3\">precip</dt>\n<dd class=\"col-sm-9\">One Hour Precipitation [inch]</dd>\n<dt class=\"col-sm-3\">speed</dt>\n<dd class=\"col-sm-9\">Wind Speed [mph], 10 minute average, 10 ft above ground</dd>\n<dt class=\"col-sm-3\">drct</dt>\n<dd class=\"col-sm-9\">Wind Direction [degrees North], 10 minute average, 10 ft above ground</dd>\n<dt class=\"col-sm-3\">et</dt>\n<dd class=\"col-sm-9\">Potential Evapotranspiration (Alfalfa) [inch]</dd>\n<dt class=\"col-sm-3\">soil04t</dt>\n<dd class=\"col-sm-9\">4 inch Depth Soil Temperature [F]</dd>\n<dt class=\"col-sm-3\">soil12t</dt>\n<dd class=\"col-sm-9\">12 inch Depth Soil Temperature [F]</dd>\n<dt class=\"col-sm-3\">soil24t</dt>\n<dd class=\"col-sm-9\">24 inch Depth Soil Temperature [F]</dd>\n<dt class=\"col-sm-3\">soil50t</dt>\n<dd class=\"col-sm-9\">50 inch Depth Soil Temperature [F]</dd>\n<dt class=\"col-sm-3\">soil12vwc</dt>\n<dd class=\"col-sm-9\">12 inch Depth Soil Volumetric Water Content [%]</dd>\n<dt class=\"col-sm-3\">soil24vwc</dt>\n<dd class=\"col-sm-9\">24 inch Depth Soil Volumetric Water Content [%]</dd>\n<dt class=\"col-sm-3\">soil50vwc</dt>\n<dd class=\"col-sm-9\">50 inch Depth Soil Volumetric Water Content [%]</dd>\n</dl>\n\n</div>\n</div>\n\nEOM;\n$t->render(\"full.phtml\");\n"
  },
  {
    "path": "htdocs/agclimate/hist/hourlyRequest.php",
    "content": "<?php\n/* Daily Data download for the ISUAG Network */\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/myview.php\";\ndefine(\"IEM_APPID\", 13);\nrequire_once \"../../../include/agclimate_boxinc.phtml\";\n\n$t = new MyView();\n$t->iem_resource = \"ISUSM\";\n$t->title = \"ISU AgClimate Legacy Hourly Data Request\";\n\n$ys = yearSelect(1986, date(\"Y\"), \"startYear\", '', 2014);\n$ms = monthSelect(1, \"startMonth\");\n$ds = daySelect(1, \"startDay\");\n$ys2 = yearSelect(1986, date(\"Y\"), \"endYear\", '', 2014);\n$ms2 = monthSelect(date(\"m\"), \"endMonth\");\n$ds2 = daySelect(date(\"d\"), \"endDay\");\n\n$t->content = <<<EOM\n <nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n   <li class=\"breadcrumb-item\"><a href=\"/agclimate\">ISU AgClimate</a></li>\n   <li class=\"breadcrumb-item active\" aria-current=\"page\">Legacy Network Hourly Download</li>\n  </ol>\n </nav>\n{$box}\n\n<div class=\"card mb-4\">\n<div class=\"card-header\">\n<h4 class=\"mb-0\">Hourly Data Request Form</h4>\n</div>\n<div class=\"card-body\">\n\n<p>This interface allows the download of hourly data from the legacy\nISU AgClimate Network sites.  Data for some of these sites exists back \ntill 1986 until they all were removed in 2014.  In general, \n<strong>the precipitation data is of poor quality and should not be used.</strong>\nIf you are looking for daily \ndata from this network, see <a href=\"dailyRequest.php\">this page</a>.</p>\n\n<form method=\"GET\" action=\"worker.php\">\n<input type=\"hidden\" name=\"startHour\" value=\"0\">\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n\n<div class=\"mb-4\">\n<h5>Select station(s):</h5>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A130209\" id=\"ames\">\n    <label class=\"form-check-label\" for=\"ames\">Ames</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A131069\" id=\"calmar\">\n    <label class=\"form-check-label\" for=\"calmar\">Calmar</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A131299\" id=\"castana\">\n    <label class=\"form-check-label\" for=\"castana\">Castana</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A131329\" id=\"cedar\">\n    <label class=\"form-check-label\" for=\"cedar\">Cedar Rapids</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A131559\" id=\"chariton\">\n    <label class=\"form-check-label\" for=\"chariton\">Chariton</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A131909\" id=\"crawford\">\n    <label class=\"form-check-label\" for=\"crawford\">Crawfordsville</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A130219\" id=\"gilbert\">\n    <label class=\"form-check-label\" for=\"gilbert\">Gilbert</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A134309\" id=\"kanawha\">\n    <label class=\"form-check-label\" for=\"kanawha\">Kanawha</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A134759\" id=\"lewis\">\n    <label class=\"form-check-label\" for=\"lewis\">Lewis</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A135849\" id=\"muscatine\">\n    <label class=\"form-check-label\" for=\"muscatine\">Muscatine</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A135879\" id=\"nashua\">\n    <label class=\"form-check-label\" for=\"nashua\">Nashua</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A136949\" id=\"rhodes\">\n    <label class=\"form-check-label\" for=\"rhodes\">Rhodes</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"sts[]\" value=\"A138019\" id=\"sutherland\">\n    <label class=\"form-check-label\" for=\"sutherland\">Sutherland</label>\n</div>\n</div>\n\n</div>\n<div class=\"col-md-6\">\n\n<div class=\"mb-4\">\n<h5>Select data:</h5>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c100\" id=\"temp\">\n    <label class=\"form-check-label\" for=\"temp\">Air Temperature [F]</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c800\" id=\"solar\">\n    <label class=\"form-check-label\" for=\"solar\">Solar Radiation Values [kilo calorie per meter squared per hour]</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c900\" id=\"precip\">\n    <label class=\"form-check-label\" for=\"precip\">Precipitation [inches]</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c300\" id=\"soil\">\n    <label class=\"form-check-label\" for=\"soil\">4 inch Soil Temperatures [F]</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c200\" id=\"humidity\">\n    <label class=\"form-check-label\" for=\"humidity\">Relative Humidity [%]</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c400\" id=\"wind_speed\">\n    <label class=\"form-check-label\" for=\"wind_speed\">Wind Speed [MPH] (~3 meter height)</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"vars[]\" value=\"c600\" id=\"wind_dir\">\n    <label class=\"form-check-label\" for=\"wind_dir\">Wind Direction [deg] (~3 meter height)</label>\n</div>\n</div>\n\n</div>\n</div>\n\n<div class=\"mb-4\">\n<h5>Select the time interval:</h5>\n<div class=\"table-responsive\">\n<table class=\"table table-bordered\">\n<thead class=\"table-light\">\n<tr><th></th><th>Year:</th><th>Month:</th><th>Day:</th></tr>\n</thead>\n<tbody>\n<tr><th>Starting On:</th>\n<td>{$ys}</td>\n<td>{$ms}</td>\n<td>{$ds}</td>\n</tr>\n<tr><th>Ending On:</th>\n<td>{$ys2}</td>\n<td>{$ms2}</td>\n<td>{$ds2}</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div>\n\n<div class=\"card mb-4\">\n<div class=\"card-header\">\n<h5 class=\"mb-0\">Options</h5>\n</div>\n<div class=\"card-body\">\n\n<div class=\"form-check mb-3\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"qcflags\" value=\"yes\" id=\"qcflags\">\n<label class=\"form-check-label\" for=\"qcflags\">Include QC Flags</label>\n</div>\n\n<div class=\"table-responsive mb-3\">\n<table class=\"table table-striped\">\n<thead class=\"table-dark\">\n<tr><th>Flag</th><th>Meaning</th></tr>\n</thead>\n<tbody>\n<tr>\n  <th>M</th>\n  <td>the data is missing</td>\n</tr>\n<tr>\n  <th>E</th>\n  <td>An instrument may be flagged until repaired</td>\n</tr>\n<tr>\n  <th>R</th>\n  <td>Estimate based on weighted linear regression from surrounding stations</td>\n</tr>\n<tr>\n  <th>e</th>\n  <td>We are not confident of the estimate</td>\n</tr>\n</tbody>\n</table>\n</div>\n\n<div class=\"form-check mb-3\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"todisk\" value=\"yes\" id=\"todisk\">\n<label class=\"form-check-label\" for=\"todisk\">Download directly to disk</label>\n</div>\n\n<div class=\"row mb-3\">\n<div class=\"col-md-6\">\n<label for=\"delim\" class=\"form-label\">Delimination:</label>\n<select name=\"delim\" id=\"delim\" class=\"form-select\">\n  <option value=\"comma\">Comma Delimited</option>\n  <option value=\"tab\">Tab Delimited</option>\n</select>\n</div>\n<div class=\"col-md-6\">\n<label for=\"lf\" class=\"form-label\">Text file format:</label>\n<select name=\"lf\" id=\"lf\" class=\"form-select\">\n  <option value=\"dos\">Windows/DOS</option>\n  <option value=\"unix\">UNIX/MacOSX</option>\n</select>\n</div>\n</div>\n\n</div>\n</div>\n\n<div class=\"mb-3\">\n<h5>Submit your request:</h5>\n<div class=\"d-flex gap-2\">\n<input type=\"submit\" value=\"Submit Query\" class=\"btn btn-primary\">\n<input type=\"reset\" value=\"Reset Form\" class=\"btn btn-secondary\">\n</div>\n</div>\n\n</form>\n</div>\n</div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/agclimate/hist/inversion.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->title = \"ISU Soil Moisture Inversion Data Request\";\n\nrequire_once \"../../../include/network.php\";\n$nt = new NetworkTable(\"ISUSM\");\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/agclimate_boxinc.phtml\";\n\n$yselect = yearSelect(2021, 2021, \"year1\");\n$mselect = monthSelect(1, \"month1\");\n$dselect = daySelect(1, \"day1\");\n$yselect2 = yearSelect(2021, date(\"Y\"), \"year2\");\n$mselect2 = monthSelect(date(\"m\"), \"month2\");\n$dselect2 = daySelect(date(\"d\"), \"day2\");\n\n$sselect = \"\";\n$sites = array(\"BOOI4\", \"CAMI4\", \"CRFI4\");\nforeach ($nt->table as $key => $val) {\n    if (!in_array($key, $sites)) {\n        continue;\n    }\n    $sselect .= sprintf(\n        '<div class=\"form-check\">' .\n            '<input class=\"form-check-input\" type=\"checkbox\" name=\"station\" value=\"%s\" id=\"%s\"> ' .\n            '<label class=\"form-check-label\" for=\"%s\">[%s] %s (%s County) (2021-%s)</label>' .\n        '</div>',\n        $key,\n        $key,\n        $key,\n        $key,\n        $val[\"name\"],\n        $val[\"county\"],\n        is_null($val[\"archive_end\"]) ? \"today\" : $val[\"archive_end\"]->format(\"Y-m-d\"),\n    );\n}\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n<li class=\"breadcrumb-item\"><a href=\"/agclimate\">ISU Soil Moisture Network</a></li>\n<li class=\"breadcrumb-item active\" aria-current=\"page\">Inversion Download</li>\n</ol>\n</nav>\n\n{$box}\n\n<div class=\"card mb-4\">\n<div class=\"card-header\">\n<h3 class=\"mb-0\">Minute/Hourly Data</h3>\n</div>\n<div class=\"card-body\">\n\n<p>The ISU Soil Moisture Network includes three sites that attempt to measure\ntemperature inversions.  This is accomplished by a temperature sensor at heights\nof 1.5, 5, and 10 feet above the ground.</p>\n\n<form name='dl' method=\"GET\" action=\"/cgi-bin/request/isusm.py\">\n<input type=\"hidden\" name=\"mode\" value=\"inversion\" />\n\n<div class=\"row\">\n<div class=\"col-md-7\">\n\n<div class=\"mb-4\">\n<h5>Select station(s):</h5>\n<p><a href=\"/sites/networks.php?network=ISUSM\">View station metadata</a></p>\n\n{$sselect}\n</div>\n\n</div>\n<div class=\"col-md-5\">\n\n<div class=\"mb-4\">\n<h5>Select the time interval:</h5>\n<div class=\"table-responsive\">\n<table class=\"table table-bordered\">\n<thead class=\"table-light\">\n<tr><th></th><th>Year:</th><th>Month:</th><th>Day:</th></tr>\n</thead>\n<tbody>\n<tr><th>Starting On:</th>\n<td>{$yselect}</td>\n<td>{$mselect}</td>\n<td>{$dselect}</td>\n</tr>\n<tr><th>Ending On:</th>\n<td>{$yselect2}</td>\n<td>{$mselect2}</td>\n<td>{$dselect2}</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div>\n\n<div class=\"card mb-4\">\n<div class=\"card-header\">\n<h5 class=\"mb-0\">Options</h5>\n</div>\n<div class=\"card-body\">\n\n<div class=\"form-check mb-3\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"todisk\" value=\"yes\" id=\"dd\">\n<label class=\"form-check-label\" for=\"dd\">Download directly to disk</label>\n</div>\n\n<div class=\"mb-3\">\n<label for=\"format\" class=\"form-label\"><strong>How should the data be formatted?:</strong></label>\n<select name=\"format\" id=\"format\" class=\"form-select\">\n<option value=\"excel\">Microsoft Excel (xlsx)</option>\n<option value=\"comma\">Comma Delimited Text File</option>\n<option value=\"tab\">Tab Delimited Text File</option>\n</select>\n</div>\n\n<div class=\"mb-3\">\n<label for=\"missing\" class=\"form-label\"><strong>How should missing values be represented?:</strong></label>\n<select name=\"missing\" id=\"missing\" class=\"form-select\">\n<option value=\"-99\">-99</option>\n<option value=\"M\">M</option>\n<option value=\"\">(blank, empty space)</option>\n</select>\n</div>\n\n<div class=\"mb-3\">\n<label for=\"tz\" class=\"form-label\"><strong>Timezone for Data:</strong></label>\n<select name=\"tz\" id=\"tz\" class=\"form-select\">\n<option value=\"America/Chicago\">Central Standard/Daylight Time</option>\n<option value=\"UTC\">UTC</option>\n</select>\n</div>\n\n<div class=\"mb-3\">\n<h6><strong>Submit your request:</strong></h6>\n<div class=\"d-flex gap-2\">\n<input type=\"submit\" value=\"Submit\" class=\"btn btn-primary\">\n<input type=\"reset\" value=\"Reset Form\" class=\"btn btn-secondary\">\n</div>\n</div>\n\n</div>\n</div>\n\n</div>\n</div>\n\n</form>\n</div>\n</div>\n\n<div class=\"card\">\n<div class=\"card-header\">\n<h4 class=\"mb-0\">Description of variables in download</h4>\n</div>\n<div class=\"card-body\">\n\n<dl class=\"row\">\n<dt class=\"col-sm-3\">station</dt>\n<dd class=\"col-sm-9\">National Weather Service Location Identifier for the\nsite. This is a five character identifier.</dd>\n<dt class=\"col-sm-3\">valid</dt>\n<dd class=\"col-sm-9\">Timestamp of the observation</dd>\n<dt class=\"col-sm-3\">tair_15</dt>\n<dd class=\"col-sm-9\">Air Temperature (F) at 1.5ft above the ground</dd>\n<dt class=\"col-sm-3\">tair_5</dt>\n<dd class=\"col-sm-9\">Air Temperature (F) at 5ft above the ground</dd>\n<dt class=\"col-sm-3\">tair_10</dt>\n<dd class=\"col-sm-9\">Air Temperature (F) at 10ft above the ground</dd>\n<dt class=\"col-sm-3\">speed</dt>\n<dd class=\"col-sm-9\">Wind Speed (mph) at 10ft above the ground</dd>\n<dt class=\"col-sm-3\">gust</dt>\n<dd class=\"col-sm-9\">Wind Gust (mph) at 10ft above the ground</dd>\n</dl>\n\n</div>\n</div>\n\nEOM;\n$t->render(\"full.phtml\");\n"
  },
  {
    "path": "htdocs/agclimate/hist/worker.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\n// worker.php\nheader(\"Content-type: text/plain\");\n\n$nt = new NetworkTable(\"ISUAG\");\n$ISUAGcities = $nt->table;\n\n$d = array(\"comma\" => \",\", \"tab\" => \"\\t\", \"space\" => \" \");\n\n$vardict = array(\n    \"c11\" => \"High Air Temp\",\n    \"c12\" => \"Low Air Temp\",\n    \"c30\" => \"Daily Average Soil Temp\",\n    \"c30l\" => \"Daily Low Soil Temp\",\n    \"c30h\" => \"Daily High Soil Temp\",\n    \"c40\" => \"Average Wind Vel\",\n    \"c509\" => \"Max Wind Vel (1 min)\",\n    \"c529\" => \"Max Wind Vel (5 sec)\",\n    \"c90\" => \"Daily Precip\",\n    \"c20\"  => \"Ave RH%\",\n    \"c80\"  => \"Solar Rad\",\n    \"c70\"  => \"Potential ET\",\n    \"c100\" => \"Air Temp\",\n    \"c800\" => \"Solar Radiation\",\n    \"c900\" => \"Hourly Precip\",\n    \"c300\" => \"4 inch Soil Temp\",\n    \"c200\" => \"RH%\",\n    \"c400\" => \"Wind Speed\",\n    \"c600\" => \"Wind Direction\"\n);\n\n$st   = isset($_GET['sts']) ? $_GET['sts'] : array();\n$vars = isset($_GET['vars']) ? $_GET['vars'] : array();\n$s_yr = get_int404('startYear');\n$e_yr = get_int404('endYear');\n$s_mo = get_int404('startMonth');\n$s_dy = get_int404('startDay');\n$e_mo = get_int404('endMonth');\n$e_dy = get_int404('endDay');\n$delim = isset($_GET[\"delim\"]) ? xssafe($_GET['delim']): \"comma\";\n$cr = isset($_GET['lf']) ? \"\\r\\n\" : \"\\n\";\n\n// Error Catching\nif (sizeof($st) == 0) die(\"You did not select a station\");\nif (sizeof($vars) == 0) die(\"You did not select a variable\");\n\n\n$rtype = \"daily\";\nif (isset($_GET[\"startHour\"]))\n    $rtype = \"hourly\";\nif (strlen($delim) == 0)\n    $delim = \"tab\";\n\n$fvars = array();\nif (isset($_GET[\"qcflags\"])) {  // They want QC too!\n    foreach ($vars as $var) {\n        $fvars[] = $var;\n        $fvars[] = $var . \"_f\";\n        $vardict[$var . \"_f\"] = \"QC\";\n    }\n} else {\n    $fvars = $vars;\n}\n$num_vars = sizeof($fvars);\n\n$sts  = mktime(0, 0, 0, $s_mo, $s_dy, $s_yr);\n$ets  = mktime(0, 0, 0, $e_mo, $e_dy, $e_yr);\n\nif ($sts > $ets) die(\"Your start time is greater than your end time!\");\n\n$stationSQL = \"{\". implode(\",\", $st) .\"}\";\n\n$str_vars = implode(\",\", $fvars);\n$str_sts  = date(\"Y-m-d H:00\", $sts);\nif ($rtype == 'hourly') {\n    $str_ets  = date(\"Y-m-d H:00\", $ets + 86400);\n    $tsfmt = \"YYYY-MM-DD HH24:MI\";\n} else {\n    $str_ets  = date(\"Y-m-d H:00\", $ets);\n    $tsfmt = \"YYYY-MM-DD\";\n}\n\nif (isset($_GET[\"todisk\"])) {\n    header(\"Content-type: application/octet-stream\");\n    header(\"Content-Disposition: attachment; filename=changeme.txt\");\n}\n\necho \"# ISU Ag Climate Download -- Iowa Environmental Mesonet $cr\";\necho \"# For units and more information: $cr\";\necho \"#    {$EXTERNAL_BASEURL}/agclimate/info.txt $cr\";\necho \"# Data Contact: $cr\";\necho \"#    Daryl Herzmann akrherz@iastate.edu 515.294.5978 $cr\";\n\necho \"Site ID\" . $d[$delim] . \"Site Name\" . $d[$delim] . \"valid\" .  $d[$delim];\nfor ($j = 0; $j < $num_vars; $j++) {\n    echo $vardict[$fvars[$j]] . $d[$delim];\n}\necho $cr;\n\n$c = iemdb(\"isuag\");\n$rs = array();\n$tbl = sprintf(\"%s\", $rtype);\n$stname = iem_pg_prepare($c, \"SELECT station, to_char(valid, '{$tsfmt}') as dvalid, \n   $str_vars from $tbl \n   WHERE station = ANY($1) and\n   valid BETWEEN '$str_sts' and '$str_ets'\n   ORDER by station, valid\");\n$rs = pg_execute($c, $stname, array($stationSQL));\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    echo $row[\"station\"] . $d[$delim] . $ISUAGcities[$row[\"station\"]]['name']\n        . $d[$delim] . $row[\"dvalid\"] . $d[$delim];\n    for ($j = 0; $j < $num_vars; $j++) {\n        echo $row[$fvars[$j]] . $d[$delim];\n    }\n    echo $cr;\n}\n"
  },
  {
    "path": "htdocs/agclimate/index.css",
    "content": "/* Modern Bootstrap 5 UI Enhancements */\n\n/* Map styling with modern shadow and border */\n#map {\n  width: 100%;\n  height: 450px;\n  border: 1px solid #dee2e6;\n  border-radius: 0.5rem;\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  overflow: hidden;\n}\n\n/* Custom popup styling */\n#popup {\n  background: white;\n  border: 1px solid #dee2e6;\n  border-radius: 0.5rem;\n  padding: 12px;\n  font-size: 13px;\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  min-width: 200px;\n  display: none;\n  position: relative;\n  z-index: 1000;\n  max-width: 300px;\n}\n\n#popup::before {\n  content: '';\n  position: absolute;\n  bottom: -8px;\n  left: 50%;\n  margin-left: -8px;\n  border: 8px solid transparent;\n  border-top-color: white;\n}\n\n#popup::after {\n  content: '';\n  position: absolute;\n  bottom: -9px;\n  left: 50%;\n  margin-left: -8px;\n  border: 8px solid transparent;\n  border-top-color: #dee2e6;\n  z-index: -1;\n}\n\n/* Enhanced form controls */\n#datetimepicker {\n  border-radius: 0.375rem;\n  border: 1px solid #ced4da;\n  padding: 0.5rem 0.75rem;\n  font-size: 0.875rem;\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n}\n\n#datetimepicker:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n#varpicker {\n  border-radius: 0.375rem;\n  border: 1px solid #ced4da;\n  padding: 0.5rem 0.75rem;\n  font-size: 0.875rem;\n  background-color: #fff;\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n}\n\n#varpicker:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n/* Enhanced cards */\n.card {\n  border: 0;\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n}\n\n.card-header {\n  border-bottom: 1px solid #dee2e6;\n  padding: 1rem 1.25rem;\n  background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);\n}\n\n.card-body {\n  padding: 1.5rem;\n}\n\n/* Enhanced buttons */\n.btn {\n  border-radius: 0.375rem;\n  font-weight: 500;\n  border: 1px solid transparent;\n}\n\n.btn-outline-secondary {\n  color: #6c757d;\n  border-color: #6c757d;\n}\n\n/* Enhanced alerts */\n.alert {\n  border: 1px solid transparent;\n  border-radius: 0.5rem;\n  padding: 1rem;\n  margin-bottom: 1rem;\n  border-left: 4px solid;\n}\n\n.alert-info {\n  background-color: #d1ecf1;\n  border-color: #bee5eb;\n  color: #0c5460;\n  border-left-color: #17a2b8;\n}\n\n.alert-warning {\n  background-color: #fff3cd;\n  border-color: #ffeaa7;\n  color: #856404;\n  border-left-color: #ffc107;\n}\n\n.alert-primary {\n  background-color: #d1ecf1;\n  border-color: #bee5eb;\n  color: #0c5460;\n  border-left-color: #007bff;\n}\n\n/* Enhanced list groups */\n.list-group-item {\n  border: none;\n  border-bottom: 1px solid #dee2e6;\n  padding: 0.75rem 1.25rem;\n  background-color: transparent;\n}\n\n.list-group-item:last-child {\n  border-bottom: none;\n}\n\n.list-group-item-action {\n  color: #495057;\n  text-decoration: none;\n}\n\n/* Temperature inversion styling */\n.inversion-station {\n  background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%);\n  border: 1px solid #dee2e6;\n  border-radius: 0.5rem;\n  padding: 1.25rem;\n  margin-bottom: 1rem;\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n}\n\n.inversion-station img {\n  margin-right: 8px;\n  vertical-align: middle;\n}\n\n/* Control section styling */\n.control-section {\n  background: #ffffff;\n  border: 1px solid #dee2e6;\n  border-radius: 0.5rem;\n  padding: 1.5rem;\n  margin-bottom: 1.5rem;\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n}\n\n.control-section h5 {\n  color: #495057;\n  font-weight: 600;\n  margin-bottom: 1rem;\n  border-bottom: 2px solid #e9ecef;\n  padding-bottom: 0.5rem;\n}\n\n/* Enhanced focus states */\n.form-control:focus,\n.form-select:focus {\n  border-color: #86b7fe;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n/* Responsive design improvements */\n@media (max-width: 768px) {\n  #map {\n    height: 350px;\n  }\n  \n  .dt {\n    font-size: 0.75rem;\n    padding: 0.25rem 0.5rem;\n    margin-bottom: 0.25rem;\n  }\n  \n  .card-body {\n    padding: 1rem;\n  }\n  \n  .control-section {\n    padding: 1rem;\n  }\n  \n  .inversion-station {\n    padding: 1rem;\n  }\n}\n\n@media (max-width: 576px) {\n  .container-fluid {\n    padding-left: 1rem;\n    padding-right: 1rem;\n  }\n  \n  #map {\n    height: 300px;\n  }\n  \n  .card-header {\n    padding: 0.75rem 1rem;\n  }\n  \n  .card-body {\n    padding: 0.75rem;\n  }\n}"
  },
  {
    "path": "htdocs/agclimate/index.js",
    "content": "/* global ol */\nlet map = null;\nlet gj = null;\nlet invgj = null;\nlet dtpicker = null;\nlet n0q = null;\nlet varname = 'tmpf';\nlet currentdt = new Date();\nlet timeChanged = false;\n\n/**\n * Replace HTML special characters with their entity equivalents\n * @param string val\n * @returns string converted string\n */\nfunction escapeHTML(val) {\n    return val.replace(/&/g, '&amp;')\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/\"/g, '&quot;')\n        .replace(/'/g, '&#039;');\n}\n\nfunction pad(number) {\n    let strnum = String(number);\n    if (strnum.length === 1) {\n        strnum = `0${strnum}`;\n    }\n    return strnum;\n};\n\nfunction getN0QSource() {\n    // currentdt needs to be rectified to the nearest 5 minute value in the past\n    const rectifiedDate = new Date(Math.floor(currentdt.getTime() / (5 * 60 * 1000)) * (5 * 60 * 1000));\n    return new ol.source.XYZ({\n        url: `https://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/ridge::USCOMP-N0Q-${toIEMString(rectifiedDate)}/{z}/{x}/{y}.png`\n    });\n}\n\nfunction toIEMString(val) {\n    return `${val.getUTCFullYear()}${pad(val.getUTCMonth() + 1)}${pad(val.getUTCDate())}${pad(val.getUTCHours())}${pad(val.getUTCMinutes())}`;\n};\n\nfunction toISOString(val) {\n    return `${val.getUTCFullYear()}-${pad(val.getUTCMonth() + 1)}-${pad(val.getUTCDate())}T${pad(val.getUTCHours())}:${pad(val.getUTCMinutes())}Z`;\n};\n\nfunction logic() {\n    timeChanged = true;\n    currentdt = new Date(dtpicker.value);\n    updateMap();\n}\n\nfunction updateTitle() {\n    const selectedOption = document.querySelector('#varpicker option:checked');\n    const maptitleDiv = document.getElementById('maptitle');\n\n    if (maptitleDiv && selectedOption) {\n        // Find the specific text element within the maptitle structure\n        const textDiv = maptitleDiv.querySelector('.small');\n        if (textDiv) {\n            // Format the datetime for display\n            const options = {\n                year: 'numeric',\n                month: 'short',\n                day: 'numeric',\n                hour: '2-digit',\n                minute: '2-digit',\n                timeZoneName: 'short'\n            };\n            const formattedDate = currentdt.toLocaleString('en-US', options);\n            textDiv.textContent = `The map is displaying ${selectedOption.textContent} valid at ${formattedDate}`;\n        }\n    }\n    updateURL();\n}\n\nfunction updateURL() {\n    const url = new URL(window.location);\n    url.searchParams.set('var', varname);\n    if (timeChanged) {\n        url.searchParams.set('dt', toISOString(currentdt));\n    } else {\n        url.searchParams.delete('dt');\n    }\n    // Remove hash if present\n    url.hash = '';\n    window.history.replaceState({}, '', url);\n}\n\nfunction updateMap() {\n    if (currentdt && typeof currentdt !== \"string\") {\n        const dt = toISOString(currentdt);\n        const uristamp = timeChanged ? `dt=${dt}` : \"\";\n        gj.setSource(new ol.source.Vector({\n            url: `/geojson/agclimate.py?${uristamp}`,\n            format: new ol.format.GeoJSON()\n        })\n        );\n        invgj.setSource(new ol.source.Vector({\n            url: `/geojson/agclimate.py?inversion=1&${uristamp}`,\n            format: new ol.format.GeoJSON()\n        })\n        );\n    }\n    n0q.setSource(getN0QSource());\n    updateTitle();\n}\n\n\nconst mystyle = new ol.style.Style({\n    text: new ol.style.Text({\n        font: '16px Calibri,sans-serif',\n        fill: new ol.style.Fill({\n            color: '#000',\n            width: 3\n        }),\n        stroke: new ol.style.Stroke({\n            color: '#ff0',\n            width: 5\n        })\n    })\n});\nconst greenArrow = new ol.style.Style({\n    image: new ol.style.Icon({\n        crossOrigin: 'anonymous',\n        scale: 0.04,\n        src: '/images/green_arrow_up.svg',\n    })\n});\nconst redArrow = new ol.style.Style({\n    image: new ol.style.Icon({\n        crossOrigin: 'anonymous',\n        scale: 0.04,\n        src: '/images/red_arrow_down.svg',\n    })\n});\n\nfunction setupMap() {\n    gj = new ol.layer.Vector({\n        title: 'ISUSM Data',\n        source: new ol.source.Vector({\n            url: \"/geojson/agclimate.py\",\n            format: new ol.format.GeoJSON()\n        }),\n        style(feature) {\n            mystyle.getText().setText(feature.get(varname).toString());\n            return [mystyle];\n        }\n    });\n    invgj = new ol.layer.Vector({\n        title: 'ISUSM Inversion Data',\n        source: new ol.source.Vector({\n            url: \"/geojson/agclimate.py?inversion=1\",\n            format: new ol.format.GeoJSON()\n        }),\n        style(feature) {\n            // Update the img src to the appropriate arrow\n            const arrowEl = document.getElementById(`${feature.getId()}_arrow`);\n            if (arrowEl) {\n                arrowEl.src = feature.get(\"is_inversion\") ? \"/images/red_arrow_down.svg\" : \"/images/green_arrow_up.svg\";\n            }\n            const temp15El = document.getElementById(`${feature.getId()}_15`);\n            if (temp15El) {temp15El.textContent = feature.get('tmpf_15');}\n            const temp5El = document.getElementById(`${feature.getId()}_5`);\n            if (temp5El) {temp5El.textContent = feature.get('tmpf_5');}\n            const temp10El = document.getElementById(`${feature.getId()}_10`);\n            if (temp10El) {temp10El.textContent = feature.get('tmpf_10');}\n            return [feature.get(\"is_inversion\") ? redArrow : greenArrow];\n        }\n    });\n    n0q = new ol.layer.Tile({\n        title: 'NEXRAD Base Reflectivity',\n        source: getN0QSource()\n    });\n    map = new ol.Map({\n        target: 'map',\n        layers: [new ol.layer.Tile({\n            title: 'OpenStreetMap',\n            visible: true,\n            source: new ol.source.OSM()\n        }), n0q, invgj, gj],\n        view: new ol.View({\n            projection: 'EPSG:3857',\n            center: ol.proj.transform([-93.5, 42.1], 'EPSG:4326', 'EPSG:3857'),\n            zoom: 7\n        })\n    });\n\n    // Popup showing the position the user clicked\n    const popup = new ol.Overlay({\n        element: document.getElementById('popup')\n    });\n    map.addOverlay(popup);\n    // Support clicking on the map to get more details on the station\n    map.on('click', (evt) => {\n        const element = popup.getElement();\n        // Clear any existing content\n        element.innerHTML = '';\n        element.style.display = 'none';\n\n        const pixel = map.getEventPixel(evt.originalEvent);\n        const feature = map.forEachFeatureAtPixel(pixel, (feature2) => {\n            return feature2;\n        });\n        if (feature) {\n            popup.setPosition(evt.coordinate);\n            let content = [\n                `<p>Site ID: <code>${feature.getId()}</code>`,\n                `Name: ${feature.get('name')}`,\n                `Air Temp: ${feature.get('tmpf')}`,\n                '</p>'\n            ].join('<br/>');\n            if (feature.get(\"tmpf_15\")) {\n                content = [\n                    `<p>Site ID: <code>${feature.getId()}</code>`,\n                    `Name: ${feature.get('name')}`,\n                    `Inversion: ${feature.get(\"is_inversion\") ? \"Likely\" : \"Unlikely\"}`,\n                    `Air Temp @1.5ft: ${feature.get('tmpf_15')}`,\n                    `Air Temp @5ft: ${feature.get('tmpf_5')}`,\n                    `Air Temp @10ft: ${feature.get('tmpf_10')}`,\n                    '</p>'\n                ].join('<br/>');\n            }\n            element.innerHTML = content;\n            element.style.display = 'block';\n        }\n    });\n\n    const layerSwitcher = new ol.control.LayerSwitcher();\n    map.addControl(layerSwitcher);\n\n    dtpicker = document.getElementById('datetimepicker');\n    dtpicker.addEventListener('change', logic);\n\n    // Set min and max dates for the datetime picker\n    const minDate = new Date(2013, 1, 1, 0, 0);\n    const maxDate = new Date();\n    dtpicker.min = minDate.toISOString().slice(0, 16);\n    dtpicker.max = maxDate.toISOString().slice(0, 16);\n\n    try {\n        // First check for hash parameters (legacy) and migrate to URL params\n        const hashTokens = window.location.href.split('#');\n        if (hashTokens.length === 2) {\n            const hashParts = hashTokens[1].split(\"/\");\n            varname = escapeHTML(hashParts[0]);\n            document.getElementById('varpicker').value = varname;\n            if (hashParts.length === 2) {\n                currentdt = (new Date(Date.parse(escapeHTML(hashParts[1]))));\n                timeChanged = true;\n            }\n            gj.setStyle(gj.getStyle());\n            // Migrate to URL params and remove hash\n            updateURL();\n            return;\n        }\n\n        // Check for URL parameters\n        const urlParams = new URLSearchParams(window.location.search);\n        if (urlParams.has('var')) {\n            varname = escapeHTML(urlParams.get('var'));\n            document.getElementById('varpicker').value = varname;\n            if (urlParams.has('dt')) {\n                currentdt = new Date(Date.parse(escapeHTML(urlParams.get('dt'))));\n                timeChanged = true;\n            }\n            gj.setStyle(gj.getStyle());\n        }\n    } catch {\n        varname = 'tmpf';\n        currentdt = new Date(document.getElementById(\"defaultdt\").dataset.dt);\n    }\n\n    setDate();\n    updateMap();\n};\n\nfunction setDate() {\n    if (currentdt && dtpicker) {\n        // Convert to local datetime string for the input\n        const year = currentdt.getFullYear();\n        const month = String(currentdt.getMonth() + 1).padStart(2, '0');\n        const day = String(currentdt.getDate()).padStart(2, '0');\n        const hours = String(currentdt.getHours()).padStart(2, '0');\n        const minutes = String(currentdt.getMinutes()).padStart(2, '0');\n\n        dtpicker.value = `${year}-${month}-${day}T${hours}:${minutes}`;\n    }\n}\n\nfunction setupUI() {\n    const dtButtons = document.querySelectorAll(\".dt\");\n    dtButtons.forEach(button => {\n        button.addEventListener('click', (event) => {\n            timeChanged = true;\n            event.target.classList.remove('focus');\n            const delta = parseInt(event.target.dataset.delta);\n            // Defensive: ensure currentdt is a valid Date\n            if (!(currentdt instanceof Date) || isNaN(currentdt.valueOf())) {\n                currentdt = new Date();\n            }\n            currentdt = new Date(currentdt.valueOf() + delta);\n            setDate();\n            updateMap();\n        });\n    });\n\n    const varpicker = document.getElementById('varpicker');\n    varpicker.addEventListener('change', () => {\n        varname = escapeHTML(varpicker.value);\n        gj.setStyle(gj.getStyle());\n        updateTitle(); // Update the title when variable changes\n    });\n};\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    currentdt = new Date(document.getElementById(\"defaultdt\").dataset.dt);\n    setupMap();\n    setupUI();\n});\n"
  },
  {
    "path": "htdocs/agclimate/index.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/mlib.php\";\nforce_https();\n\ndefine(\"IEM_APPID\", 10);\n$OL = \"10.8.0\";\n$t = new MyView();\n$t->title = \"ISU Soil Moisture Network\";\n\n$t->jsextra = <<<EOM\n<script src=\"/vendor/openlayers/{$OL}/ol.js\"></script>\n<script src=\"/vendor/openlayers/{$OL}/ol-layerswitcher.js\"></script>\n<script src=\"index.js?v=1\"></script>\nEOM;\n\n// Pick a sensible default datetime\n$dt = new DateTime();\n// Move back 3 minutes to allow data to arrive\n$dt->sub(new DateInterval(\"PT3M\"));\n// Set back to nearest minute modulo 5\n$dt->modify('-' . ($dt->format('i') % 5) . ' minutes');\n\n$dt = $dt->format(\"Y/m/d H:i\");\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol.css\"/ >\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\"/ >\n<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"index.css\"/ >\nEOM;\n\n$t->content = <<<EOM\n<div class=\"container-fluid\">\n<h3>ISU Soil Moisture Network</h3>\n\n<span id=\"defaultdt\" data-dt=\"{$dt}\"></span>\n\n<p>\nIowa State University maintains a network of observation stations located primarily\nat the <a href=\"https://www.farms.ag.iastate.edu/\">Research and Demonstration Farms</a>, but\nalso at cooperating locations.  Data from this network dates back to 1986!  The stations\ncomprising the network has changed over the years with a complete network replacement started\nduring 2012.\n</p>\n\n  <form name=\"mapper\">\n    <div class=\"row\">\n      <div class=\"col-lg-3 col-md-4\">\n        <div class=\"card border-0 shadow-sm mb-4\">\n          <div class=\"card-header bg-primary\">\n            <div class=\"d-flex align-items-center justify-content-between\">\n              <h4 class=\"card-title mb-0\">\n                <i class=\"bi bi-tools me-2\"></i>Popular Tools\n              </h4>\n            </div>\n          </div>\n          <div class=\"card-body p-0\">\n            <div class=\"list-group list-group-flush\">\n              <a href=\"soilt.php\" class=\"list-group-item list-group-item-action d-flex align-items-center\">\n                <div class=\"flex-shrink-0\">\n                  <div class=\"bg-warning bg-opacity-25 rounded-circle p-2\">\n                    <i class=\"bi bi-map text-warning\"></i>\n                  </div>\n                </div>\n                <div class=\"flex-grow-1 ms-3\">\n                  <div class=\"fw-semibold\">County Soil Temp Map</div>\n                  <small class=\"text-muted\">Visual soil temperature mapping</small>\n                </div>\n                <div class=\"flex-shrink-0\">\n                  <i class=\"bi bi-chevron-right text-muted\"></i>\n                </div>\n              </a>\n              <a href=\"hist/daily.php\" class=\"list-group-item list-group-item-action d-flex align-items-center\">\n                <div class=\"flex-shrink-0\">\n                  <div class=\"bg-success bg-opacity-25 rounded-circle p-2\">\n                    <i class=\"bi bi-download text-success\"></i>\n                  </div>\n                </div>\n                <div class=\"flex-grow-1 ms-3\">\n                  <div class=\"fw-semibold\">Daily Download</div>\n                  <small class=\"text-muted\">Historical daily data export</small>\n                </div>\n                <div class=\"flex-shrink-0\">\n                  <i class=\"bi bi-chevron-right text-muted\"></i>\n                </div>\n              </a>\n              <a href=\"/GIS/apps/agclimate/gsplot.phtml\" class=\"list-group-item list-group-item-action d-flex align-items-center\">\n                <div class=\"flex-shrink-0\">\n                  <div class=\"bg-info bg-opacity-25 rounded-circle p-2\">\n                    <i class=\"bi bi-flower1 text-info\"></i>\n                  </div>\n                </div>\n                <div class=\"flex-grow-1 ms-3\">\n                  <div class=\"fw-semibold\">Growing Season Maps</div>\n                  <small class=\"text-muted\">Seasonal agricultural mapping</small>\n                </div>\n                <div class=\"flex-shrink-0\">\n                  <i class=\"bi bi-chevron-right text-muted\"></i>\n                </div>\n              </a>\n              <a href=\"hist/hourly.php\" class=\"list-group-item list-group-item-action d-flex align-items-center\">\n                <div class=\"flex-shrink-0\">\n                  <div class=\"bg-warning bg-opacity-25 rounded-circle p-2\">\n                    <i class=\"bi bi-clock text-warning\"></i>\n                  </div>\n                </div>\n                <div class=\"flex-grow-1 ms-3\">\n                  <div class=\"fw-semibold\">Minute/Hourly Download</div>\n                  <small class=\"text-muted\">High-resolution time series data</small>\n                </div>\n                <div class=\"flex-shrink-0\">\n                  <i class=\"bi bi-chevron-right text-muted\"></i>\n                </div>\n              </a>\n              <a href=\"/agclimate/isusm.csv\" class=\"list-group-item list-group-item-action d-flex align-items-center\">\n                <div class=\"flex-shrink-0\">\n                  <div class=\"bg-secondary bg-opacity-25 rounded-circle p-2\">\n                    <i class=\"bi bi-filetype-csv text-secondary\"></i>\n                  </div>\n                </div>\n                <div class=\"flex-grow-1 ms-3\">\n                  <div class=\"fw-semibold\">Current IOOS CSV</div>\n                  <small class=\"text-muted\">Real-time CSV data feed</small>\n                </div>\n                <div class=\"flex-shrink-0\">\n                  <span class=\"badge bg-success bg-opacity-25 text-success me-2\">Live</span>\n                  <i class=\"bi bi-box-arrow-up-right text-muted\"></i>\n                </div>\n              </a>\n              <a href=\"/sites/networks.php?network=ISUSM\" class=\"list-group-item list-group-item-action d-flex align-items-center\">\n                <div class=\"flex-shrink-0\">\n                  <div class=\"bg-primary bg-opacity-25 rounded-circle p-2\">\n                    <i class=\"bi bi-list-ul text-primary\"></i>\n                  </div>\n                </div>\n                <div class=\"flex-grow-1 ms-3\">\n                  <div class=\"fw-semibold\">Listing of Stations</div>\n                  <small class=\"text-muted\">Complete station directory</small>\n                </div>\n                <div class=\"flex-shrink-0\">\n                  <i class=\"bi bi-chevron-right text-muted\"></i>\n                </div>\n              </a>\n              <a href=\"smts.php\" class=\"list-group-item list-group-item-action d-flex align-items-center\">\n                <div class=\"flex-shrink-0\">\n                  <div class=\"bg-info bg-opacity-25 rounded-circle p-2\">\n                    <i class=\"bi bi-graph-up text-info\"></i>\n                  </div>\n                </div>\n                <div class=\"flex-grow-1 ms-3\">\n                  <div class=\"fw-semibold\">Plot Time Series</div>\n                  <small class=\"text-muted\">Interactive data visualization</small>\n                </div>\n                <div class=\"flex-shrink-0\">\n                  <i class=\"bi bi-chevron-right text-muted\"></i>\n                </div>\n              </a>\n              <a href=\"info.phtml\" class=\"list-group-item list-group-item-action d-flex align-items-center\">\n                <div class=\"flex-shrink-0\">\n                  <div class=\"bg-secondary bg-opacity-25 rounded-circle p-2\">\n                    <i class=\"bi bi-gear text-secondary\"></i>\n                  </div>\n                </div>\n                <div class=\"flex-grow-1 ms-3\">\n                  <div class=\"fw-semibold\">Sensor Package</div>\n                  <small class=\"text-muted\">Technical specifications</small>\n                </div>\n                <div class=\"flex-shrink-0\">\n                  <i class=\"bi bi-chevron-right text-muted\"></i>\n                </div>\n              </a>\n              <a href=\"current.phtml\" class=\"list-group-item list-group-item-action d-flex align-items-center\">\n                <div class=\"flex-shrink-0\">\n                  <div class=\"bg-success bg-opacity-25 rounded-circle p-2\">\n                    <i class=\"bi bi-arrow-repeat text-success\"></i>\n                  </div>\n                </div>\n                <div class=\"flex-grow-1 ms-3\">\n                  <div class=\"fw-semibold\">Sortable Currents</div>\n                  <small class=\"text-muted\">Real-time data table</small>\n                </div>\n                <div class=\"flex-shrink-0\">\n                  <span class=\"badge bg-success bg-opacity-25 text-success me-2\">Live</span>\n                  <i class=\"bi bi-chevron-right text-muted\"></i>\n                </div>\n              </a>\n              <a href=\"/sites/locate.php?network=ISUSM\" class=\"list-group-item list-group-item-action d-flex align-items-center\">\n                <div class=\"flex-shrink-0\">\n                  <div class=\"bg-danger bg-opacity-25 rounded-circle p-2\">\n                    <i class=\"bi bi-geo-alt text-danger\"></i>\n                  </div>\n                </div>\n                <div class=\"flex-grow-1 ms-3\">\n                  <div class=\"fw-semibold\">Station Metadata</div>\n                  <small class=\"text-muted\">Location and station details</small>\n                </div>\n                <div class=\"flex-shrink-0\">\n                  <i class=\"bi bi-chevron-right text-muted\"></i>\n                </div>\n              </a>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"col-lg-9 col-md-8\">\n        <div class=\"card border-0 shadow-sm mb-4\">\n          <div class=\"card-header bg-light\">\n            <h4 class=\"card-title mb-0\">\n              <i class=\"bi bi-sliders me-2 text-primary\"></i>Data Controls\n            </h4>\n          </div>\n          <div class=\"card-body\">\n            <div class=\"row g-4\">\n              <div class=\"col-md-6\">\n                <div class=\"control-section\">\n                  <h5 class=\"mb-3\">\n                    <i class=\"bi bi-clock me-2 text-primary\"></i>Select Time\n                  </h5>\n                  <div class=\"mb-3\">\n                    <input type=\"datetime-local\" id=\"datetimepicker\" name=\"dosomething\" step=\"300\" class=\"form-control\" />\n                  </div>\n                  <div class=\"d-flex flex-wrap gap-2\">\n                    <button type=\"button\" class=\"btn btn-outline-secondary btn-sm dt\" data-delta=\"-86400000\">\n                      <i class=\"bi bi-skip-backward me-1\"></i>-1 Day\n                    </button>\n                    <button type=\"button\" class=\"btn btn-outline-secondary btn-sm dt\" data-delta=\"-3600000\">\n                      <i class=\"bi bi-rewind me-1\"></i>-1 HR\n                    </button>\n                    <button type=\"button\" class=\"btn btn-outline-secondary btn-sm dt\" data-delta=\"-300000\">-5 Min</button>\n                    <button type=\"button\" class=\"btn btn-outline-secondary btn-sm dt\" data-delta=\"300000\">+5 Min</button>\n                    <button type=\"button\" class=\"btn btn-outline-secondary btn-sm dt\" data-delta=\"3600000\">\n                      +1 HR<i class=\"bi bi-fast-forward ms-1\"></i>\n                    </button>\n                    <button type=\"button\" class=\"btn btn-outline-secondary btn-sm dt\" data-delta=\"86400000\">\n                      +1 Day<i class=\"bi bi-skip-forward ms-1\"></i>\n                    </button>\n                  </div>\n                </div>\n              </div>\n\n              <div class=\"col-md-6\">\n                <div class=\"control-section\">\n                  <h5 class=\"mb-3\">\n                    <i class=\"bi bi-thermometer-half me-2 text-danger\"></i>Select Variable\n                  </h5>\n                  <select name=\"varname\" id=\"varpicker\" class=\"form-select\">\n                    <option value=\"tmpf\">Air Temperature [F]</option>\n                    <option value=\"cci\">Comprehensive Climate Index</option>\n                    <option value=\"thi\">Temperature Humidity Index</option>\n                    <option value=\"bat\">Battery Voltage [V]</option>\n                    <option value=\"encrh_avg\">Logger Enclosure Rel Humid [%]</option>\n                    <option value=\"et\">Hourly Evapotranspiration [inch]</option>\n                    <option value=\"dailyet\">Daily Evapotranspiration [inch]</option>\n                    <option value=\"high\">Daily High Temperature [F]</option>\n                    <option value=\"low\">Daily Low Temperature [F]</option>\n                    <option value=\"pday\">Calendar Day Precipitation [inch]</option>\n                    <option value=\"pmonth\">Month-to-date Precipitation [inch]</option>\n                    <option value=\"p24i\">24 Hour Precipitation [inch]</option>\n                    <option value=\"hrprecip\">Hourly Precipitation [inch]</option>\n                    <option value=\"radmj\">Hourly Solar Radiation [MJ]</option>\n                    <option value=\"srad_wm2\">Solar Radiation [W/m2]</option>\n                    <option value=\"rh\">Relative Humidity [%]</option>\n                    <option value=\"plant_water_6_30\">Plant Available Water Estimate (6-30in) [inch]</option>\n                    <option value=\"soil12m\">Soil Moisture (12 inch) [Vol %]</option>\n                    <option value=\"soil24m\">Soil Moisture (24 inch) [Vol %]</option>\n                    <option value=\"soil50m\">Soil Moisture (50 inch) [Vol %]</option>\n                    <option value=\"soil04t\">Soil Temperature (4 inch) [F]</option>\n                    <option value=\"soil12t\">Soil Temperature (12 inch) [F]</option>\n                    <option value=\"soil24t\">Soil Temperature (24 inch) [F]</option>\n                    <option value=\"soil50t\">Soil Temperature (50 inch) [F]</option>\n                    <option value=\"wind\">Wind Direction + Speed [mph]</option>\n                    <option value=\"gust\">Wind Gust [mph]</option>\n                  </select>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <div class=\"alert alert-primary border-0 shadow-sm d-flex align-items-center\" role=\"alert\" id=\"maptitle\">\n          <div class=\"flex-shrink-0\">\n            <div class=\"bg-primary bg-opacity-25 rounded-circle p-2\">\n              <i class=\"bi bi-map text-primary\"></i>\n            </div>\n          </div>\n          <div class=\"flex-grow-1 ms-3\">\n            <h6 class=\"mb-1 fw-semibold\">Current Map Display</h6>\n            <div class=\"small\">The map is displaying Air Temperature [F] valid at {$dt}</div>\n          </div>\n          <div class=\"flex-shrink-0 d-none d-sm-block\">\n            <span class=\"badge bg-primary bg-opacity-25 text-primary px-3 py-2\">\n              <i class=\"bi bi-eye me-1\"></i>Live Data\n            </span>\n          </div>\n        </div>\n\n        <div id=\"map\" class=\"mb-4\"></div>\n        <div id=\"popup\" title=\"Station Information\"></div>\n\n        <div class=\"card border-0 shadow-sm mb-4\">\n          <div class=\"card-header bg-warning text-dark\">\n            <h5 class=\"card-title mb-0\">\n              <i class=\"bi bi-thermometer-sun me-2\"></i>Air Temperature Inversion Station Locations\n            </h5>\n          </div>\n          <div class=\"card-body\">\n            <div class=\"row g-3\">\n              <div class=\"col-md-4\">\n                <div class=\"inversion-station\">\n                  <div class=\"d-flex align-items-center mb-2\">\n                    <img id=\"CAMI4_arrow\" src=\"/images/pixel.gif\" width=\"20\" height=\"20\" class=\"me-2\">\n                    <strong class=\"text-primary\">Northwest (Sutherland)</strong>\n                  </div>\n                  <div class=\"small\">\n                    <div><em>1.5ft:</em> <span id=\"CAMI4_15\" class=\"fw-bold\">M</span>°F</div>\n                    <div><em>5ft:</em> <span id=\"CAMI4_5\" class=\"fw-bold\">M</span>°F</div>\n                    <div><em>10ft:</em> <span id=\"CAMI4_10\" class=\"fw-bold\">M</span>°F</div>\n                  </div>\n                </div>\n              </div>\n\n              <div class=\"col-md-4\">\n                <div class=\"inversion-station\">\n                  <div class=\"d-flex align-items-center mb-2\">\n                    <img id=\"BOOI4_arrow\" src=\"/images/pixel.gif\" width=\"20\" height=\"20\" class=\"me-2\">\n                    <strong class=\"text-success\">Central (Ames)</strong>\n                  </div>\n                  <div class=\"small\">\n                    <div><em>1.5ft:</em> <span id=\"BOOI4_15\" class=\"fw-bold\">M</span>°F</div>\n                    <div><em>5ft:</em> <span id=\"BOOI4_5\" class=\"fw-bold\">M</span>°F</div>\n                    <div><em>10ft:</em> <span id=\"BOOI4_10\" class=\"fw-bold\">M</span>°F</div>\n                  </div>\n                </div>\n              </div>\n\n              <div class=\"col-md-4\">\n                <div class=\"inversion-station\">\n                  <div class=\"d-flex align-items-center mb-2\">\n                    <img id=\"CRFI4_arrow\" src=\"/images/pixel.gif\" width=\"20\" height=\"20\" class=\"me-2\">\n                    <strong class=\"text-info\">Southeast (Crawfordsville)</strong>\n                  </div>\n                  <div class=\"small\">\n                    <div><em>1.5ft:</em> <span id=\"CRFI4_15\" class=\"fw-bold\">M</span>°F</div>\n                    <div><em>5ft:</em> <span id=\"CRFI4_5\" class=\"fw-bold\">M</span>°F</div>\n                    <div><em>10ft:</em> <span id=\"CRFI4_10\" class=\"fw-bold\">M</span>°F</div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </form>\n\n    <div class=\"row g-4\">\n      <div class=\"col-md-6\">\n        <div class=\"card border-0 shadow-sm h-100\">\n          <div class=\"card-header bg-light\">\n            <h5 class=\"card-title mb-0\">\n              <i class=\"bi bi-info-circle me-2 text-info\"></i>Important Information\n            </h5>\n          </div>\n          <div class=\"card-body\">\n            <div class=\"alert alert-warning\" role=\"alert\">\n              <div class=\"d-flex\">\n                <div class=\"flex-shrink-0\">\n                  <i class=\"bi bi-exclamation-triangle\"></i>\n                </div>\n                <div class=\"flex-grow-1 ms-3\">\n                  <h6 class=\"alert-heading\">Rainfall Disclaimer</h6>\n                  <p class=\"mb-0\">The Soil Moisture Network uses a non-heated tipping bucket rain gauge and is unable to measure snowfall. If you are interested in higher quality precipitation data, check out the <a href=\"/COOP/\" class=\"alert-link\">NWS COOP</a> network of human observations.</p>\n                </div>\n              </div>\n            </div>\n\n            <div class=\"mb-4\">\n              <h6 class=\"text-primary mb-3\">\n                <i class=\"bi bi-tools me-2\"></i>Additional Tools/Apps\n              </h6>\n              <div class=\"list-group list-group-flush\">\n                <a href=\"soilt-prob.php\" class=\"list-group-item list-group-item-action border-0 px-0\">\n                  <i class=\"bi bi-thermometer-half text-warning me-2\"></i> 4 inch Soil Temperature Probabilities\n                </a>\n                <a href=\"/plotting/auto/?q=199\" class=\"list-group-item list-group-item-action border-0 px-0\">\n                  <i class=\"bi bi-graph-up text-primary me-2\"></i> Daily Data Plotter\n                </a>\n              </div>\n            </div>\n\n            <div>\n              <h6 class=\"text-primary mb-3\">\n                <i class=\"bi bi-info me-2\"></i>Information\n              </h6>\n              <div class=\"list-group list-group-flush\">\n                <a href=\"/agclimate/info.phtml\" class=\"list-group-item list-group-item-action border-0 px-0\">\n                  <i class=\"bi bi-diagram-3 text-success me-2\"></i> Information about network stations\n                </a>\n                <a href=\"et.phtml\" class=\"list-group-item list-group-item-action border-0 px-0\">\n                  <i class=\"bi bi-droplet text-info me-2\"></i> Information on Evapotranspiration calculations\n                </a>\n                <a href=\"/agclimate/usage/\" class=\"list-group-item list-group-item-action border-0 px-0\">\n                  <i class=\"bi bi-bar-chart text-secondary me-2\"></i> Website Usage Stats\n                </a>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"col-md-6\">\n        <div class=\"card border-0 shadow-sm h-100\">\n          <div class=\"card-header bg-light\">\n            <h5 class=\"card-title mb-0\">\n              <i class=\"bi bi-graph-up me-2 text-success\"></i>Data Visualization\n            </h5>\n          </div>\n          <div class=\"card-body\">\n            <div class=\"row g-4\">\n              <div class=\"col-12\">\n                <h6 class=\"text-danger mb-3\">\n                  <i class=\"bi bi-thermometer-sun me-2\"></i>Temperature Plots\n                </h6>\n                <div class=\"list-group list-group-flush\">\n                  <a href=\"display.php?prod=1\" class=\"list-group-item list-group-item-action border-0 px-0\">\n                    <i class=\"bi bi-thermometer-high text-danger me-2\"></i> Max/Min Air Temps\n                  </a>\n                  <a href=\"display.php?prod=12\" class=\"list-group-item list-group-item-action border-0 px-0\">\n                    <i class=\"bi bi-snow text-info me-2\"></i> Standard Chill Units since 1 Sept\n                  </a>\n                </div>\n              </div>\n\n              <div class=\"col-12\">\n                <h6 class=\"text-success mb-3\">\n                  <i class=\"bi bi-layers me-2\"></i>Soil Plots\n                </h6>\n                <div class=\"list-group list-group-flush\">\n                  <a href=\"display.php?prod=2\" class=\"list-group-item list-group-item-action border-0 px-0\">\n                    <i class=\"bi bi-thermometer text-success me-2\"></i> Avg 4in Soil Temps\n                  </a>\n                  <a href=\"display.php?prod=3\" class=\"list-group-item list-group-item-action border-0 px-0\">\n                    <i class=\"bi bi-graph-up text-success me-2\"></i> Max/Min 4in Soil Temps\n                  </a>\n                </div>\n              </div>\n\n              <div class=\"col-12\">\n                <h6 class=\"text-primary mb-3\">\n                  <i class=\"bi bi-droplet me-2\"></i>Moisture Plots\n                </h6>\n                <div class=\"list-group list-group-flush\">\n                  <a href=\"display.php?prod=10\" class=\"list-group-item list-group-item-action border-0 px-0\">\n                    <i class=\"bi bi-calendar3 text-primary me-2\"></i> Monthly evapotranspiration\n                  </a>\n                  <a href=\"display.php?prod=11\" class=\"list-group-item list-group-item-action border-0 px-0\">\n                    <i class=\"bi bi-cloud-rain text-primary me-2\"></i> Monthly rainfall\n                  </a>\n                  <a href=\"display.php?prod=6\" class=\"list-group-item list-group-item-action border-0 px-0\">\n                    <i class=\"bi bi-tree text-primary me-2\"></i> Potential E-T\n                  </a>\n                </div>\n              </div>\n\n              <div class=\"col-12\">\n                <h6 class=\"text-warning mb-3\">\n                  <i class=\"bi bi-brightness-high me-2\"></i>Solar/Wind\n                </h6>\n                <div class=\"list-group list-group-flush\">\n                  <a href=\"display.php?prod=4\" class=\"list-group-item list-group-item-action border-0 px-0\">\n                    <i class=\"bi bi-sun text-warning me-2\"></i> Solar Radiation Values\n                  </a>\n                  <a href=\"display.php?prod=7\" class=\"list-group-item list-group-item-action border-0 px-0\">\n                    <i class=\"bi bi-wind text-info me-2\"></i> Peak Wind Gust (5 sec)\n                  </a>\n                  <a href=\"display.php?prod=8\" class=\"list-group-item list-group-item-action border-0 px-0\">\n                    <i class=\"bi bi-wind text-secondary me-2\"></i> Average Wind Speed\n                  </a>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\nEOM;\n\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/agclimate/info.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n\n$t->title = \"ISUSM - Network Metadata\";\n\n$t->content = <<<EOM\n\n<nav aria-label=\"breadcrumb\">\n       <ol class=\"breadcrumb\">\n              <li class=\"breadcrumb-item\"><a href=\"/agclimate/\">ISU Soil Moisture Network</a></li>\n              <li class=\"breadcrumb-item active\" aria-current=\"page\">Network Metadata</li>\n       </ol>\n</nav>\n\n<h1 class=\"mb-3\">ISU Soil Moisture Network Metadata</h1>\n\n<div class=\"alert alert-info\">These stations were installed in 2013-2014 and include soil moisture sensors.</div>\n\n<h2 class=\"h5 mt-4\">Campbell Scientific Sensor Package</h2>\n\n<ul>\n <li><a href=\"https://www.campbellsci.com/cr1000\" target=\"_blank\" rel=\"noopener\" aria-label=\"CR1000 Data Logger (opens in new tab)\">CR1000 Data Logger</a></li>\n <li><a href=\"https://www.campbellsci.com/cm106\" target=\"_blank\" rel=\"noopener\" aria-label=\"CM106 Tripod (opens in new tab)\">CM106 Tripod</a> (station mast)</li>\n <li><a href=\"https://www.campbellsci.com/cs300-pyranometer\" target=\"_blank\" rel=\"noopener\" aria-label=\"CS300 Pyranometer (opens in new tab)\">CS300 Pyranometer</a> (total incoming solar radiation)</li>\n <li><a href=\"https://www.campbellsci.com/03002-wind-sentry\" target=\"_blank\" rel=\"noopener\" aria-label=\"03002 Wind Sentry (opens in new tab)\">03002 Wind Sentry</a> (wind speed and direction @ approximately 10 feet AGL)</li>\n <li><a href=\"https://www.campbellsci.com/cs215-l\" target=\"_blank\" rel=\"noopener\" aria-label=\"CS215 Air Temperature and Relative Humidity (opens in new tab)\">CS215 Air Temperature and Relative Humidity</a> (@ approximately 5 feet AGL)</li>\n <li><a href=\"https://www.campbellsci.com/te525-l\" target=\"_blank\" rel=\"noopener\" aria-label=\"TE525 Rain Gage (opens in new tab)\">TE525 Rain Gage</a></li>\n <li><a href=\"https://www.campbellsci.com/cs655\" target=\"_blank\" rel=\"noopener\" aria-label=\"Campbell CS655 Water Content Reflectometers (opens in new tab)\">Campbell CS655 Water Content Reflectometers</a> (Soil Moisture, Temperature)</li>\n</ul>\n\n<h2 class=\"h5 mt-4\">Legacy ISU Ag Climate Network</h2>\n\n<div class=\"alert alert-info\">These stations were removed in spring 2014.</div>\n\n<div class=\"table-responsive mb-4\">\n<table class=\"table table-striped\">\n<caption>Station Id conversion table</caption>\n<thead>\n<tr><th scope=\"col\">StationId</th><th scope=\"col\">Station Name</th><th scope=\"col\">Data Starts At</th><th scope=\"col\">Data Ends At</th></tr>\n</thead>\n<tbody>\n<tr><td>a130209</td><td>Ames</td><td>Jul 01, 1986</td><td>Apr 23, 2014</td></tr>\n<tr><td>a131069</td><td>Calmar</td><td>Sep 21, 2001 </td><td>Jan 8, 2014</td></tr>  \n<tr><td>a131299</td><td>Castana</td><td>May 19, 1988</td><td>Jan 8, 2014</td></tr>\n<tr><td>a131329</td><td>Cedar Rapids </td><td>Jun 22, 1998</td><td>Apr 23, 2014</td></tr>\n<tr><td>a131559</td><td>Chariton</td><td>Aug 17, 1988</td><td>Jan 8, 2014</td></tr>\n<tr><td>a131909</td><td>Crawfordsville</td><td>Jan 01, 1990</td><td>Apr 23, 2014</td></tr>\n<tr><td>a130219</td><td>Gilbert</td><td>Aug 28, 1986</td><td>Jan 8, 2014</td></tr>\n<tr><td>a135879</td><td>Nashua</td><td>Sep 01, 1988</td><td>Apr 16, 2014</td></tr>\n<tr><td>a138019</td><td>Sutherlan</td><td>Jul 23, 1988</td><td>Aug 7, 2013</td></tr>\n<tr><td>a134759</td><td>Lewis</td><td>Jun 19, 1997</td><td>Apr 16, 2014</td></tr>\n<tr><td>a136949</td><td>Rhodes</td><td>May 17, 1999</td><td>Oct 11,2006</td></tr>\n<tr><td>a134309</td><td>Kanawha</td><td>Jun 19, 1997</td><td>Apr 23, 2014</td></tr>\n<tr><td>a135849</td><td>Muscatine</td><td>Mar 27, 2000</td><td>Apr 16, 2014</td></tr>\n</tbody>\n</table>\n</div>\n\n<p>You can get lat/lon information from <a href=\"/sites/networks.php?network=ISUAG&format=html\">this page</a>.</p>\n\n<div class=\"row g-3\">\n              <div class=\"col-12 col-md-6\">\n              <h2 class=\"h5\">Units for Data</h2>\n              <div class=\"table-responsive\">\n              <table class=\"table table-striped\">\n              <thead>\n              <tr><th scope=\"col\">Measurement</th><th scope=\"col\">Units</th></tr>\n              </thead>\n              <tbody>\n              <tr><td>Evapotranspiration</td><td>inches</td></tr>\n              <tr><td>Precipation</td><td>inches</td></tr>\n              <tr><td>Hourly Solar Radiation</td><td>Kilo calories per meter squared per hour</td></tr>\n              <tr><td>Daily Solar Radiation</td><td>Langleys</td></tr>\n              <tr><td>Temperatures</td><td>Fahrenhit</td></tr>\n              <tr><td>Wind speeds</td><td>MPH</td></tr>\n              <tr><td>Time</td><td>local time, either CST or CDT</td></tr>\n              </tbody>\n              </table>\n              </div>\n\n              <h2 class=\"h5 mt-4\">Hardware Specs</h2>\n\n              <p><strong>Soil Temperature:</strong> The soil probe is 4 inches deep underneath a one square meter bare patch of soil.</p>\n\n              <p><strong>Temperature:</strong> All of our stations have either the Campbell HMP35 or HMP45. The 35 was discontinued and replaced with the 45. They are mounted within a radiation grill at 2 meters height.</p>\n\n              <p><strong>Solar Radiation:</strong> LI-COR pyranometer, model <a href=\"http://www.campbellsci.com/li200x-l\" target=\"_blank\" rel=\"noopener\" aria-label=\"LI200X pyranometer (opens in new tab)\">LI200X</a>.</p>\n\n              </div>\n              <div class=\"col-12 col-md-6 bg-light border rounded p-3 d-flex align-items-center justify-content-center\">\n                     <img src=\"/agclimate/images/campbell.jpg\" class=\"img-fluid rounded\" alt=\"Campbell Scientific sensor package\" />\n              </div>\n</div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/agclimate/smts.php",
    "content": "<?php\ndefine(\"IEM_APPID\", 114);\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/myview.php\";\n\n$t = new MyView();\n$t->title = \"ISU Soil Moisture Plots\";\n\n$now = time();\n$d2 = time() - 5 * 86400;\n$station = get_str404(\"station\", \"BOOI4\");\n$opt = get_str404(\"opt\", \"1\");\n\nif (array_key_exists(\"sts\", $_GET)) {\n    $sts = new DateTime(get_str404(\"sts\", null));\n    $ets = new DateTime(get_str404(\"ets\", null));\n} else {\n    // Legacy CGI parameters\n    $year1 = get_int404('year1', date(\"Y\", $d2));\n    $month1 = get_int404('month1', date(\"m\", $d2));\n    $day1 = get_int404('day1', date(\"d\", $d2));\n    $hour1 = get_int404('hour1', 0);\n\n    $year2 = get_int404('year2', date(\"Y\", $now));\n    $month2 = get_int404('month2', date(\"m\", $now));\n    $day2 = get_int404('day2', date(\"d\", $now));\n    $hour2 = get_int404('hour2', 23);\n    $sts = new DateTime();\n    $sts->setDate($year1, $month1, $day1);\n    $sts->setTime($hour1, 0);\n    $ets = new DateTime();\n    $ets->setDate($year2, $month2, $day2);\n    $ets->setTime($hour2, 0);\n}\n\n$errmsg = \"\";\nif ($ets <= $sts) {\n    $errmsg = \"<div class=\\\"alert alert-warning\\\">Error, your requested\" .\n        \" End Time is before the Start Time.  Please adjust your selection\" .\n        \" and try once again.</div>\";\n}\n\n$sselect = networkSelect(\"ISUSM\", $station, array(), \"station\", FALSE, 'form-select w-100');\n$y1 = yearSelect(2012, $sts->format(\"Y\"), \"year1\");\n$m1 = monthSelect($sts->format(\"m\"), \"month1\");\n$d1 = daySelect($sts->format(\"d\"), \"day1\");\n$h1 = hourSelect($sts->format(\"H\"), \"hour1\");\n$y2 = yearSelect(2012, $ets->format(\"Y\"), \"year2\");\n$m2 = monthSelect($ets->format(\"m\"), \"month2\");\n$d2 = daySelect($ets->format(\"d\"), \"day2\");\n$h2 = hourSelect($ets->format(\"H\"), \"hour2\");\n\n// Retreive the autoplot description JSON\n$content = file_get_contents($INTERNAL_BASEURL . \"/plotting/auto/meta/177.json\");\n$meta = json_decode($content, $assoc=TRUE);\n$dd = \"This plot is a time series graph of\nobservations from a time period and ISU Soil Moisture station of your choice.\";\n$desc = array();\nforeach ($meta[\"arguments\"] as $arg) {\n    if ($arg[\"name\"] == \"opt\") {\n        $ar = $arg[\"options\"];\n        $keys = array_keys($ar);\n        foreach ($keys as $key) {\n            $desc[$key] = $dd;\n        }\n        break;\n    }\n}\n\n$desc[\"m\"] = <<<EOM\nThis plot presents a Meteogram, which is just a time series of common weather\nvariables including temperature, dew point, wind speed, and wind direction. If\nthe plot covers more than five days, an hourly interval dataset is used,\notherwise the values are plotted at one minute interval.\nEOM;\n$desc[\"6\"] = <<<EOM\nThis plot presents a histogram of hourly volumetric soil moisture observations.\nThe y-axis is expressed in logarithmic to better show the low frequency obs\nwithin the distribution.\nEOM;\n$desc[\"7\"] = <<<EOM\nThis plot computes the daily change in soil water approximately between\nthe depths of 6 to 30 inches.  This is using only two measurements at\n12, and 24 inch depths.  The 12 inch depth is assumed to cover the\n6-18 inch layer and the 24 inch depth to cover 18-30 layer.  If you select a\nperiod of less than 60 days, the daily rainfall will be plotted as well.\nEOM;\n$desc[\"10\"] = <<<EOM\nThis plot provides a diagnostic of the data being provided by the inversion\nsensors.  These temperature sensors are installed at 1.5 and 10 feet above the\nground, which then can sense if temperature increases with height.  This\nsensor package was installed in 2021 and only found at three sites BOOI4 - Ames\nAEA, CRFI4 - Crawfordsville, and CAMI4 - Sutherland.\nEOM;\n$desc[\"encrh\"] = <<<EOM\nMany of the stations track the humidity within the logger enclosure to ensure\nthat desiccant packs are working as intended.  Elevated humidity leads to\ndamage of wiring.\nEOM;\n\n$thedescription = $desc[$opt];\n$oselect = make_select(\"opt\", $opt, $ar, '', 'form-select w-100');\n\n$img = sprintf(\n    \"<img src=\\\"/plotting/auto/plot/177/network:ISUSM::\" .\n        \"station:%s::opt:%s::sts:%s::\" .\n        \"ets:%s.png\" .\n        \"\\\" class=\\\"img-fluid\\\">\",\n    $station,\n    $opt,\n    $sts->format(\"Y-m-d Hi\"),  // lame format, but alas\n    $ets->format(\"Y-m-d Hi\")\n);\nif ($errmsg != \"\") {\n    $img = $errmsg;\n}\n\n$t->content = <<<EOM\n    <nav aria-label=\"breadcrumb\">\n        <ol class=\"breadcrumb\">\n            <li class=\"breadcrumb-item\"><a href=\"/agclimate/\">ISU Soil Moisture Network</a></li>\n            <li class=\"breadcrumb-item active\" aria-current=\"page\">Soil Moisture Plots</li>\n        </ol>\n    </nav>\n\n    <h1 class=\"mb-3\">Soil Moisture and Precipitation Timeseries</h1>\n    <h2 class=\"h5\">Plot Selection</h2>\n    <p>This application plots a timeseries of soil moisture and precipitation from\n        an ISU Soil Moisture station of your choice. Please select a start and end time\n        and click the 'Make Plot' button below.</p>\n\n        <form name=\"selector\" method=\"GET\" autocomplete=\"off\">\n            <div class=\"row g-3 align-items-end\">\n                <div class=\"col-12 col-md-4\">\n                    <label for=\"station\" class=\"form-label\">Station</label>\n                    {$sselect}\n                </div>\n                <div class=\"col-12 col-md-4\">\n                    <label for=\"opt\" class=\"form-label\">Plot Option</label>\n                    {$oselect}\n                </div>\n                <div class=\"col-12 col-md-2\">\n                    <label for=\"sts\" class=\"form-label\">Start Time (US Central)</label>\n                    <input type=\"datetime-local\" id=\"sts\" name=\"sts\" class=\"form-control\" value=\"{$sts->format('Y-m-d\\TH:i')}\" />\n                </div>\n                <div class=\"col-12 col-md-2\">\n                    <label for=\"ets\" class=\"form-label\">End Time (US Central)</label>\n                    <input type=\"datetime-local\" id=\"ets\" name=\"ets\" class=\"form-control\" value=\"{$ets->format('Y-m-d\\TH:i')}\" />\n                </div>\n                <div class=\"col-12 mt-2 d-flex justify-content-center\">\n                    <button type=\"submit\" class=\"btn btn-primary w-auto\">Make Plot</button>\n                </div>\n            </div>\n        </form>\n\n    <div aria-live=\"polite\">\n        {$img}\n    </div>\n\n    <section class=\"mt-4\">\n        <h2 class=\"h5\">Plot Description</h2>\n        <p>{$thedescription}</p>\n    </section>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/agclimate/soilt-prob.php",
    "content": "<?php\n// Create a table of soil temperature probabilities based on obs?\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 88);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\n$t = new MyView();\n\n$station = get_str404(\"station\", \"A130209\");\n$tstr = get_str404(\"tstr\", \"50,45,40,35,32,28,23\");\n\n$conn = iemdb(\"isuag\");\n$stname1 = iem_pg_prepare($conn, \"SELECT extract(year from valid) as yr,\n      max(extract(doy from valid)) as v from daily WHERE station = $1 and c30 < $2 and\n      extract(month from valid) < 7 and c30_f != 'e' GROUP by yr\");\n$stname2 = iem_pg_prepare($conn, \"SELECT extract(year from valid) as yr,\n      min(extract(doy from valid)) as v from daily WHERE station = $1 and c30 < $2 and\n      extract(month from valid) > 6 and c30_f != 'e' GROUP by yr\");\n\n$thresholds = explode(\",\", $tstr);\n$tblrows = array();\n\n$row1 = '<tr><th scope=\"col\">Date</th>';\nforeach ($thresholds as $k => $thres) {\n    if (!is_numeric($thres)){\n        // Bad user!\n        xssafe(\"<tag>\");\n    }\n    $row1 .= sprintf('<th scope=\"col\">%s</th>', $thres);\n    $rs = pg_execute($conn, $stname1, array($station, $thres));\n    $cnts = array();\n    $yrs = pg_num_rows($rs);\n    while ($row = pg_fetch_assoc($rs)) {\n        if (!array_key_exists($row[\"v\"], $cnts)) {\n            $cnts[$row[\"v\"]] = 0;\n        }\n        $cnts[$row[\"v\"]] += 1;\n    }\n    $probs = array();\n    $running = $yrs;\n    for ($i = 0; $i < 182; $i++) {\n        if (array_key_exists($i, $cnts)) {\n            $running -= $cnts[$i];\n        }\n        $probs[$i] = $running;\n    }\n    /* Day Sampler */\n    for ($i = 0; $i < 182; $i = $i + 5) {\n        $ts = mktime(0, 0, 0, 1, 1, 2000) + ($i * 86400);\n        $val = array_key_exists($i, $probs) ? $probs[$i] : 0;\n        if (!array_key_exists($i, $tblrows)) {\n            $tblrows[$i] = \"\";\n        }\n        if ($yrs == 0) {\n            $tblrows[$i] .= \"<td>0</td>\";\n        } else {\n            $tblrows[$i] .= sprintf(\"<td>%.0f</td>\", $val / $yrs * 100);\n        }\n    }\n}\n$spring = '<table class=\"table table-sm table-striped table-bordered '\n    . 'table-hover align-middle mb-0\">'\n    . '<thead class=\"table-light sticky-top\">'\n    . $row1\n    . '</tr></thead><tbody>';\n/* Print webpage */\nfor ($i = 0; $i < 182; $i = $i + 5) {\n    $ts = mktime(0, 0, 0, 1, 1, 2000) + ($i * 86400);\n    $spring .= sprintf(\n        '<tr><th scope=\"row\">%s</th>%s</tr>',\n        date(\"M d\", $ts),\n        $tblrows[$i]\n    );\n}\n$spring .= '</tbody></table>';\n\n/* ________________________FALL ______________ */\n$tblrows = array();\nforeach ($thresholds as $k => $thres) {\n    $rs = pg_execute($conn, $stname2, array($station, $thres));\n    $cnts = array();\n    $yrs = pg_num_rows($rs);\n    for ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n        if (!array_key_exists($row[\"v\"], $cnts)) {\n            $cnts[$row[\"v\"]] = 0;\n        }\n        $cnts[$row[\"v\"]] += 1;\n    }\n    $probs = array();\n    $running = 0;\n    for ($i = 182; $i < 366; $i++) {\n        if (array_key_exists($i, $cnts)) {\n            $running += $cnts[$i];\n        }\n        $probs[$i] = $running;\n    }\n    /* Day Sampler */\n    for ($i = 182; $i < 366; $i = $i + 5) {\n        $ts = mktime(0, 0, 0, 1, 1, 2000) + ($i * 86400);\n        $val = array_key_exists($i, $probs) ? $probs[$i] : 0;\n        if (!array_key_exists($i, $tblrows)) {\n            $tblrows[$i] = \"\";\n        }\n        if ($yrs == 0) {\n            $tblrows[$i] .= \"<td>0</td>\";\n        } else {\n            $tblrows[$i] .= sprintf(\"<td>%.0f</td>\", $val / $yrs * 100);\n        }\n    }\n}\n$fall = '<table class=\"table table-sm table-striped table-bordered '\n    . 'table-hover align-middle mb-0\">'\n    . '<thead class=\"table-light sticky-top\">'\n    . $row1\n    . '</tr></thead><tbody>';\n/* Print webpage */\nfor ($i = 182; $i < 366; $i = $i + 5) {\n    $ts = mktime(0, 0, 0, 1, 1, 2000) + ($i * 86400);\n    $fall .= sprintf(\n        '<tr><th scope=\"row\">%s</th>%s</tr>',\n        date(\"M d\", $ts),\n        $tblrows[$i]\n    );\n}\n$fall .= '</tbody></table>';\n\n$sselect = networkSelect(\"ISUAG\", $station);\n\n$t->title = \"ISUSM - Soil Temperature Probabilities\";\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb mb-4\">\n        <li class=\"breadcrumb-item\"><a href=\"/agclimate/\">ISU Soil Moisture Network</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">Soil Temperature Probabilities</li>\n    </ol>\n</nav>\n\n<div class=\"mb-4\">\n    <h1 class=\"h3 mb-3\">4 inch Soil Temperature Probabilities</h1>\n\n    <p class=\"mb-3\">This application computes soil temperature exceedance based on the\n    observation record of an ISU Ag Climate site. The average daily 4 inch\n    soil temperature is used in this calculation.</p>\n\n    <ul class=\"mb-3\">\n        <li>Spring: The values represent the percentage of years that a temperature\n        below the given threshold was observed <strong>after</strong> a given date.</li>\n        <li>Fall: The values represent the percentage of years that a temperature\n        below the given threshold was observed <strong>before</strong> a given date.</li>\n    </ul>\n</div>\n\n<div class=\"alert alert-info mb-4\" role=\"alert\">This application uses the legacy ISU Ag Climate\nnetwork for its computations.  Data from the newer ISU Soil Moisture Network\nis not considered.</div>\n\n<form method=\"GET\" name=\"soil\" class=\"card mb-4\">\n    <div class=\"card-body\">\n        <div class=\"row g-3 align-items-end\">\n            <div class=\"col-md-6\">\n                <label for=\"station\" class=\"form-label fw-semibold\">Select Station</label>\n                {$sselect}\n            </div>\n            <div class=\"col-md-6\">\n                <label for=\"tstr\" class=\"form-label fw-semibold\">Thresholds</label>\n                <input type=\"text\" value=\"{$tstr}\" name=\"tstr\" id=\"tstr\" class=\"form-control\">\n                <div class=\"form-text\">Comma separated thresholds.</div>\n            </div>\n            <div class=\"col-12\">\n                <button type=\"submit\" class=\"btn btn-primary\">Request</button>\n            </div>\n        </div>\n    </div>\n</form>\n\n<div class=\"row g-4\">\n    <div class=\"col-lg-6\">\n        <div class=\"card h-100\">\n            <div class=\"card-header\">\n                <h2 class=\"h5 mb-0\">Spring Probabilities</h2>\n                <div class=\"small text-muted\">Given date to July 1</div>\n            </div>\n            <div class=\"card-body p-0\">\n                <div class=\"table-responsive\">\n                    {$spring}\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"col-lg-6\">\n        <div class=\"card h-100\">\n            <div class=\"card-header\">\n                <h2 class=\"h5 mb-0\">Fall Probabilities</h2>\n                <div class=\"small text-muted\">July 1 to given date</div>\n            </div>\n            <div class=\"card-body p-0\">\n                <div class=\"table-responsive\">\n                    {$fall}\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/agclimate/soilt.css",
    "content": "/* Style the Image Used to Trigger the Modal */\n#myImg {\n    border-radius: 5px;\n    cursor: pointer;\n    transition: 0.3s;\n}\n\n#myImg:hover {\n    opacity: 0.7;\n}\n\n/* The Modal (background) */\n.modal {\n    display: none;\n    /* Hidden by default */\n    position: fixed;\n    /* Stay in place */\n    z-index: 10000;\n    /* Sit on top */\n    padding-top: 100px;\n    /* Location of the box */\n    left: 0;\n    top: 0;\n    width: 100%;\n    /* Full width */\n    height: 100%;\n    /* Full height */\n    overflow: auto;\n    /* Enable scroll if needed */\n    background-color: rgb(0, 0, 0);\n    /* Fallback color */\n    background-color: rgba(0, 0, 0, 0.9);\n    /* Black w/ opacity */\n}\n\n/* Modal Content (Image) */\n.modal-content {\n    margin: auto;\n    display: block;\n    width: 80%;\n    max-width: 900px;\n}\n\n/* Add Animation - Zoom in the Modal */\n.modal-content {\n    animation-name: zoom;\n    animation-duration: 0.6s;\n}\n\n@keyframes zoom {\n    from {\n        transform: scale(0)\n    }\n\n    to {\n        transform: scale(1)\n    }\n}\n\n/* The Close Button */\n.close {\n    position: absolute;\n    top: 15px;\n    right: 35px;\n    color: #f1f1f1;\n    font-size: 40px;\n    font-weight: bold;\n    transition: 0.3s;\n}\n\n.close:hover,\n.close:focus {\n    color: #bbb;\n    text-decoration: none;\n    cursor: pointer;\n}\n\n/* 100% Image Width on Smaller Screens */\n@media only screen and (max-width: 700px) {\n    .modal-content {\n        width: 100%;\n    }\n}"
  },
  {
    "path": "htdocs/agclimate/soilt.module.js",
    "content": "\nimport { requireElement } from \"/js/iemjs/domUtils.js\";\n\nfunction initializeModal() {\n    // Get the modal elements\n    const modal = requireElement(\"myModal\");\n    const modalImg = requireElement(\"img01\");\n    const span = document.getElementsByClassName(\"close\")[0];\n\n    if (!span) {\n        return;\n    }\n\n    // Add click handlers to all clickable images\n    const clickableImages = document.querySelectorAll(\"div.clickme img\");\n    clickableImages.forEach(img => {\n        img.addEventListener(\"click\", (evt) => {\n            modal.style.display = \"block\";\n            modalImg.src = evt.target.src;\n        });\n    });\n\n    // Close modal when clicking the close button\n    span.addEventListener(\"click\", () => {\n        modal.style.display = \"none\";\n    });\n\n    // Close modal when clicking outside the image\n    modal.addEventListener(\"click\", (evt) => {\n        if (evt.target === modal) {\n            modal.style.display = \"none\";\n        }\n    });\n}\n\n/**\n * Initialize the soil temperature page functionality\n */\nfunction init() {\n    initializeModal();\n}\n\n// Initialize when DOM is loaded\nif (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", init);\n} else {\n    init();\n}\n"
  },
  {
    "path": "htdocs/agclimate/soilt.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$nounce = time();\n$t->title = \"ISU Soil Moisture County Temperature Estimates\";\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"soilt.css\" />\nEOM;\n$t->jsextra = <<<EOM\n<script type=\"module\" src=\"soilt.module.js\"></script>\nEOM;\n// This plot is confusing during the morning hours before the latest GFS updates\n$d0 = <<<EOM\n    <img src=\"/data/forecast/gfs_soilt_day_f0.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"GFS soil temperature forecast day 0\">\nEOM;\n// So, if we are before 9 AM local, don't show the $d0 plot\n$now = new DateTimeImmutable(\"now\", new DateTimeZone(\"America/Chicago\"));\nif ($now->format(\"H\") < 9) {\n    $d0 = \"\";\n}\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/agclimate/\">ISU Soil Moisture Network</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">County 4 inch Soil Temperature Maps</li>\n  </ol>\n</nav>\n\n<h1 class=\"mb-3\">County 4 inch Soil Temperature Maps</h1>\n<h2 class=\"h5\">About These Maps</h2>\n<p>This page presents daily soil temperature analysis maps. The left column combines ISU Soil Moisture Network observations and bias-corrected NWS NAM forecast model analyses for higher resolution. The right column shows simple GFS forecast model outputs without bias correction.</p>\n\n<div class=\"mb-3\">\n  <strong>Links:</strong>\n  <a class=\"btn btn-outline-secondary mb-1\" href=\"/timemachine/?product=57\">Archive of This Map</a>\n  <a class=\"btn btn-outline-secondary mb-1\" href=\"/agclimate/hist/daily.php\">Observation Download</a>\n  <a class=\"btn btn-outline-secondary mb-1\" href=\"/agclimate/#soil04t\">Real-time Map</a>\n</div>\n\n<!-- The Modal -->\n<div id=\"myModal\" class=\"modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"caption\">\n  <span class=\"close\" aria-label=\"Close dialog\">&times;</span>\n  <img class=\"modal-content\" id=\"img01\" alt=\"Soil temperature map preview\">\n  <div id=\"caption\"></div>\n</div>\n\n<div class=\"row g-3 clickme\">\n  <div class=\"col-12 col-md-6\">\n    <h2 class=\"h5\">Past Three Day Observations</h2>\n    <img src=\"/data/soilt_day1.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"Soil temperature map for day 1\">\n    <img src=\"/data/soilt_day2.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"Soil temperature map for day 2\">\n    <img src=\"/data/soilt_day3.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"Soil temperature map for day 3\">\n  </div>\n  <div class=\"col-12 col-md-6\">\n    <h2 class=\"h5\">GFS Forecast</h2>\n    {$d0}\n    <img src=\"/data/forecast/gfs_soilt_day_f1.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"GFS soil temperature forecast day 1\">\n    <img src=\"/data/forecast/gfs_soilt_day_f2.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"GFS soil temperature forecast day 2\">\n    <img src=\"/data/forecast/gfs_soilt_day_f3.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"GFS soil temperature forecast day 3\">\n    <img src=\"/data/forecast/gfs_soilt_day_f4.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"GFS soil temperature forecast day 4\">\n    <img src=\"/data/forecast/gfs_soilt_day_f5.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"GFS soil temperature forecast day 5\">\n    <img src=\"/data/forecast/gfs_soilt_day_f6.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"GFS soil temperature forecast day 6\">\n    <img src=\"/data/forecast/gfs_soilt_day_f7.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"GFS soil temperature forecast day 7\">\n    <img src=\"/data/forecast/gfs_soilt_day_f8.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"GFS soil temperature forecast day 8\">\n    <img src=\"/data/forecast/gfs_soilt_day_f9.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"GFS soil temperature forecast day 9\">\n    <img src=\"/data/forecast/gfs_soilt_day_f10.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"GFS soil temperature forecast day 10\">\n    <img src=\"/data/forecast/gfs_soilt_day_f11.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"GFS soil temperature forecast day 11\">\n    <img src=\"/data/forecast/gfs_soilt_day_f12.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"GFS soil temperature forecast day 12\">\n    <img src=\"/data/forecast/gfs_soilt_day_f13.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"GFS soil temperature forecast day 13\">\n    <img src=\"/data/forecast/gfs_soilt_day_f14.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"GFS soil temperature forecast day 14\">\n    <img src=\"/data/forecast/gfs_soilt_day_f15.png?{$nounce}\" class=\"img-fluid mb-3\" alt=\"GFS soil temperature forecast day 15\">\n  </div>\n</div>\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/agweather/index.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 11);\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Agricultural Weather/Climate Information\";\n\n$y = date(\"Y\");\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n  <li class=\"breadcrumb-item\"><a href=\"/\">IEM Homepage</a></li>\n  <li class=\"breadcrumb-item active\" aria-current=\"page\">IEM Ag Weather/Climate Information</li>\n</ol>\n\n<p>The IEM website contains data from many <a href=\"/sites/locate.php\">different observation networks</a>. While \nyou may know what you are looking for, figuring out which network has this data \nis tricky.  This table is an attempt to help you locate the data / product you\nneed.  Please do <a href=\"/info/contacts.php\">contact us</a> with your \nquestions!</p>\n\n<p>IEM's most popular applications:\n<a type=\"button\" class=\"btn btn-success me-2 mb-2\" href=\"/plotting/auto/\"><i class=\"bi bi-graph-up-arrow me-1\" aria-hidden=\"true\"></i>Automated Data Plotting</a>\n<a type=\"button\" class=\"btn btn-success me-2 mb-2\" href=\"/climodat/\"><i class=\"bi bi-card-list me-1\" aria-hidden=\"true\"></i>Climodat</a>\n<a type=\"button\" class=\"btn btn-success me-2 mb-2\" href=\"/explorer/\"><i class=\"bi bi-map me-1\" aria-hidden=\"true\"></i>IEM Explorer</a>\n<a type=\"button\" class=\"btn btn-success me-2 mb-2\" href=\"/plotting/auto/?q=108\"><i class=\"bi bi-graph-up-arrow me-1\" aria-hidden=\"true\"></i>Single Site Graphs</a>\n<a type=\"button\" class=\"btn btn-success me-2 mb-2\" href=\"#nass\"><i class=\"bi bi-card-list me-1\" aria-hidden=\"true\"></i>USDA NASS Products</a>\n</p>\n\n\n<table class=\"table table-striped table-bordered\">\n<thead class=\"sticky\">\n<tr>\n <th rowspan=\"2\">Variable</th>\n <th colspan=\"6\">Timescale / Reporting Interval</th>\n</tr>\n<tr>\n<th>Seconds/Minutes</th>\n<th>Hourly</th>\n<th>Daily</th>\n<th>Weekly/Monthly</th>\n<th>Seasonal</th>\n<th>Yearly</th>\n</tr>\n</thead>\n<tbody>\n\n<tr><td>Air Temperature</td>\n<td>\n<a href=\"/agclimate/\">ISU Soil Moisture</a> stations record real-time data\nat one minute intervals.  <a href=\"/ASOS/\">ASOS</a> also provides data at\nsuch frequency, but it is delayed by ~24 hours.\n</td>\n<td><a href=\"/ASOS/\">ASOS/AWOS</a> are stations located at airports and are\nthe baseline weather observation network. The \n<a href=\"/agclimate\">ISU Soil Moisture</a> network has data for Iowa.</td>\n\n<td>\n<a href=\"/COOP/\">NWS COOP</a> has high quality high and low temperature\nreports for 24 hour periods, not always for the calendar day.\n<ul>\n <li><a href=\"/data/coopHighLow.gif\">COOP High + Low Temperature</a></li>\n <li><a href=\"/timemachine/?product=63\">ASOS 12 UTC Low Temperature</a></li>\n <li><a href=\"/timemachine/?product=116\">ASOS High Temperature</a></li>\n <li><a href=\"/data/awos_rtp_00z.shef\">00Z RTP First Guess</a> Formatted\nproduct generated for the National Weather Service for comparison.</li>\n<li><a href=\"/data/awos_rtp.shef\">12Z RTP First Guess</a> Formatted\nproduct generated for the National Weather Service for comparison.</li>\n<li><a href=\"/data/climate/iowa_today_avg_hilo_pt.png\">Average Hi/Low Temp</a></li>\n<li><a href=\"/data/climate/iowa_today_rec_hilo_pt.png\">Record Hi/Low Temp</a></li>\n<li><a href=\"/COOP/dl/normals.phtml\">Download Climatology Data</a></li>\n</ul>\n</td>\n\n<td colspan=\"3\">The <a href=\"/climodat/\">Climodat</a> reports contain summarized\ndata from the NWS COOP network.\n\n<br /><a href=\"/plotting/auto/?q=99\">Plot of Daily Departures by Year</a>\n\n<p><a href=\"/topics/pests/\">Pest Maps and Forecasts</a> track degree days\nfor various pests of interest.</p>\n</td>\n</tr>\n\n<tr><td>Growing Degree Days</td>\n<td colspan=\"2\">Not applicable</td>\n<td>The <a href=\"/COOP/\">NWS COOP</a> network data contains the best quality \ninformation for daily temperatures, but they are not always on a calendar date.\n</td>\n<td colspan=\"3\">\nThe <a href=\"/climodat/\">Climodat</a> reports present summarized GDD data.\n<ul>\n <li><a href=\"/climodat/monitor.php\">Climodat Station Monitor</a></li>\n <li><a href=\"/plotting/coop/gddprobs.phtml\">Probabilies + Scenarios</a></li>\n <li><a href=\"/GIS/apps/coop/gsplot.phtml?var=gdd50&year={$y}\">Map of Totals</a></li>\n <li><a href=\"/plotting/auto/?q=108\">Single Site Graphs</a></li>\n</ul>\n\n<p>Maps of Growing Degree Days:\n<ul>\n <li><a href=\"/plotting/auto/?q=125\">Custom Climatology Maps</a></li>\n <li><a href=\"/data/summary/gdd_mon.png\">This Month's GDD 50/86</a></li>\n <li><a href=\"/data/summary/gdd_jan1.png\">This Years's GDD 50/86</a></li>\n <li><a href=\"/data/summary/gdd_may1.png\">May 1 - Nov 1 GDD 50/86</a></li>\n <li><a href=\"/data/summary/gdd_may1_6086.png\">May 1 - Nov 1 GDD 60/86</a></li>\n <li><a href=\"/data/summary/gdd_may1_6586.png\">May 1 - Nov 1 GDD 65/86</a></li>\n</ul>\n\n<p><a href=\"/topics/pests/\">Pest Maps and Forecasts</a> track degree days\nfor various pests of interest.</p>\n\n</td>\n</tr>\n\n<tr><td>Precipitation (liquid + melted snow)</td>\n <td>The IEM processes the one minute <a href=\"/request/asos/1min.phtml\">Iowa ASOS</a>\n data, but there is a month delay for receipt of this data.</td>\n <td>The <a href=\"/ASOS/\">ASOS</a> (not AWOS) sites include a heated sensor that\n melts snowfall to produce liquid equivalent.</td>\n <td rowspan=\"2\">The <a href=\"/COOP/\">NWS COOP</a> network report precipitation totals that\n include melted snowfall.\n <ul>\n  <li><a href=\"/COOP/7am.php\">Map of Daily COOP Reports</a></li>\n  <li><a href=\"/COOP/extremes.php\">Daily Climatology</a></li>\n  <li><a href=\"/data/summary/today_prec.png\">Today's total</a></li>\n </ul>\n \n <br />The IEM processes gridded analyses of precipitation\n <ul>\n   <li><a href=\"/plotting/auto/?q=86&var=p01d\">IEM Reanalysis</a></li>\n   <li><a href=\"/timemachine/?product=45\">MRMS ~1km Product</a></li>\n   <li><a href=\"/timemachine/?product=41\">NCEP Stage IV</a></li>\n </ul>\n \n <br />There are daily <a href=\"/request/daily.phtml\">ASOS precip reports</a>\n available for download.\n \n </td>\n <td colspan=\"3\" rowspan=\"2\">\n <ul>\n  <li><a href=\"/climodat/\">Climodat Reports</a> contain summarized precipitation\n  data from the NWS COOP network.</li>\n  <li><a href=\"/climodat/monitor.php\">Climodat Station Monitor</a></li>\n  <li><a href=\"/GIS/apps/coop/gsplot.phtml?var=prec&smonth=1&sday=1&year={$y}\">Map of Totals</a> (legacy app)</li>\n  <li><a href=\"/plotting/auto/?q=97\">Maps of Totals/Departures</a></li>\n  <li><a href=\"/plotting/auto/?q=84\">Multiday summaries of MRMS estimates</a></li>\n  <li><a href=\"/plotting/auto/?q=108\">Single Site Graphs</a></li>\n </ul>\n\n\n </td>\n</tr>\n\n<tr><td>Rainfall (liquid only)</td>\n <td>The <a href=\"/schoolnet/\">SchoolNet</a> sensors do report minute rainfall, \n but the data is not of great quality.</td>\n <td>The <a href=\"/ASOS/\">ASOS/AWOS</a> sites report hourly rainfall as well as\n the <a href=\"/agclimate/\">ISU Soil Moisture</a> network.</td>\n</tr>\n\n\n<tr><td>Solar Radiation</td>\n<td colspan=\"2\">The <a href=\"/agclimate/\">ISU Soil Moisture</a> network collects solar \nradiation at minute and hourly intervals.</td>\n<td>The <a href=\"/agclimate/\">ISU Soil Moisture</a> network makes daily \nsummaries available. The IEM also provides estimated radiation data for download\nfor <a href=\"/request/coop/fe.phtml\">NWS COOP</a> sites based on model analyses.</td>\n<td colspan=\"3\">\nThe model analyses (MERRAv2, HRRR, NARR, and ERA5Land) used to provide solar radiation\ndata for the <a href=\"/request/coop/fe.phtml\">NWS COOP</a> sites and be summarized\nover time here:\n<ul>\n  <li><a href=\"/plotting/auto/?q=107\">Autoplot 107</a> has daily averages over a period\n  of your choice.</li>\n</ul>\n</td>\n</tr>\n\n<tr><td>Soil Moisture</td>\n<td colspan=\"2\">The <a href=\"/agclimate/\">ISU Soil Moisture</a> network collects five minute and hourly\nsoil moisture data.</td>\n<td>The <a href=\"https://dailyerosion.org\">Daily Erosion Project</a>\nproduces soil moisture analyses based on a model called WEPP.</td>\n<td colspan=\"3\">Summarized data for this timescale does not exist on the IEM \nat this time.</td>\n</tr>\n\n<tr><td>Soil Temperature</td>\n<td colspan=\"2\">The <a href=\"/agclimate/\">ISU Soil Moisture</a> network collects five minute and hourly\nsoil temperature data.</td>\n<td>The <a href=\"/agclimate/\">ISU Soil Moisture</a> network produces daily\nsummaries of high and low temperature.\n<ul>\n <li><a href=\"/agclimate/soilt.php\">County Estimates</a></li>\n <li><a href=\"/timemachine/?product=57\">Archived County Estimates</a></li>\n</ul>\n</td>\n<td colspan=\"3\">Summarized data for this timescale does not exist on the IEM \nat this time.</td>\n</tr>\n\n\n<tr><td>Snowfall</td>\n <td>Does not exist</td>\n <td>The NWS has paid snowfall observers that report 6 hour snowfall totals, but\n the IEM does not have a good interface to get this data.</td>\n <td>\n The IEM collects the <a href=\"/COOP/cat.phtml\">24 hour snowfall reports</a>\n from the NWS COOP network.\n <ul>\n   <li><a href=\"/data/coopSnowDepth.gif\">COOP Snow Depth</a></li>\n </ul>\n </td>\n<td colspan=\"3\">Summarized data for this timescale does not exist on the IEM \nat this time.</td>\n</tr>\n\n<tr><td>Stress Degree Days</td>\n<td colspan=\"2\">Not applicable</td>\n<td>The <a href=\"/COOP/\">NWS COOP</a> network data contains the best quality \ninformation for daily temperatures, but they are not always on a calendar date.\n</td>\n<td colspan=\"3\">The <a href=\"/climodat/\">Climodat</a> reports present\nsummarized SDD data.\n<ul>\n    <li><a href=\"/climodat/monitor.php\">Climodat Station Monitor</a></li>\n      <li><a href=\"/GIS/apps/coop/gsplot.phtml?var=sdd86&year={$y}\">Map of Totals</a></li>\n      <li><a href=\"/plotting/auto/?q=108\">Single Site Graphs</a></li>\n</ul>\n</td>\n</tr>\n\n<tr><td>Wind</td>\n<td>\n<a href=\"/agclimate/\">ISU Soil Moisture</a> stations record real-time data\nat one minute intervals.  <a href=\"/ASOS/\">ASOS</a> also provides data at\nsuch frequency, but it is delayed by ~24 hours.\n</td>\n<td>\n<a href=\"/ASOS/\">ASOS</a> data is typically the best at this temporal scale.\n</td>\n<td>\n<ul>\n    <li><a href=\"/data/summary/today_gust.png\">Peak Wind Gust</a></li>\n</ul>\n</td>\n<td colspan=\"3\">\n<p><a href=\"/sites/windrose.phtml?station=AMW&network=IA_ASOS\">Windroses</a> are\nneat visualizations of wind direction and speed frequency.  The link takes you\nto the interface for the Ames Airport.  You can switch stations to find the\nsame for other locations.</p>\n</td>\n</tr>\n\n</tbody>\n</table>\n\n<a name=\"nass\"></a>\n<h4>USDA NASS Products</h4>\n\n<p>The IEM attempts to sync much of the <a href=\"http://www.nass.usda.gov/\">USDA NASS</a>\ndata into our database.  A number of <a href=\"/plotting/auto/\">automated plots</a>\nare available for this data (search for NASS in the dropdown menu).</p>\n\n<p>The IEM also attempts to glean the Iowa Ag Reporting District data found in the\nweekly <a href=\"https://www.nass.usda.gov/Statistics_by_State/Iowa/Publications/Crop_Progress_&_Condition/\">weekly crop progress</a>\nPDF reports.  You can download the IEM's entire database as this\n<a href=\"/cgi-bin/request/nass_iowa.py\"><i class=\"bi bi-download me-1\" aria-hidden=\"true\"></i>Excel file</a>.</p>\n\n<h4>Historical Freeze Risk</h4>\n\n<blockquote>An air temperature less than 27 is generally considered to be the Hard Freeze, \nthat is a crop killing event, although plant damage and yield loss is often observed at \nless extreme low temperatures. Crop threshold temperatures for plant damage in Fall differ\nfrom Spring thresholds (mainly because of plant size/height).</blockquote>\n\n<ul>\n <li><a href=\"/COOP/freezing.php\">Fall Freezing Dates</a></li>\n <li><a href=\"/climodat/index.phtml?station=IA0200&report=22\">First Fall Freeze Probabilities</a></li>\n <li><a href=\"/plotting/coop/threshold_histogram_fe.phtml\">Winter Minimum Temperature Frequencies</a></li>\n</ul>\n\n<h4>External Links</h4>\n<ul>\n <li><a href=\"https://iowaagriculture.gov/climatology-bureau\">State of Iowa Climatologist</a></li>\n <li><a href=\"https://www.nass.usda.gov/Charts_and_Maps/Crop_Progress_&_Condition/index.asp\">USDA Charts &amp; Maps of Crop Progress</a></li>\n <li><a href=\"https://www.nass.usda.gov/Publications/State_Crop_Progress_and_Condition/index.asp\">USDA State Crop Progress &amp; Condition</a></li>\n <li><a href=\"https://planthardiness.ars.usda.gov/PHZMWeb/\">USDA Plant Hardiness Map</a> (enter\n your zipcode or click on the map)</li>\n</ul>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/api/index.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 123);\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"API Documentation\";\n\n$t->content = <<< EOM\n\n<h1 class=\"mb-4\">IEM Web Services and APIs</h1>\n\n<div class=\"alert alert-warning\">\n<p><strong>Disclaimer:</strong> All of these services are provided as-is and\nwithout warranty.  You are free to use these services for any lawful purpose\n(including commercial whereby your company makes lots of money using these)\nand please do not sue us if they do not work as you expect or if one of them\nbreaks during your critical time of need.</p>\n</div>\n\n<p>The primary goal of this website is to make data freely available in an\nopen manner. This page presents details the IEM's various Web Services and\nApplication Programming Interfaces (API). These services are structured into\nfour categories.</p>\n\n<div class=\"row g-3 mb-4\">\n  <div class=\"col-12 col-md-3\">\n    <div class=\"card h-100\">\n      <div class=\"card-body\">\n        <h2 class=\"h5\">API v1</h2>\n        <a class=\"btn btn-primary mb-2\" href=\"/api/1/docs\"><i class=\"bi bi-info-circle\" aria-hidden=\"true\"></i> <span class=\"visually-hidden\">Info</span> IEM API v1 Docs</a>\n        <p>Represents a more formal API using the <a href=\"https://fastapi.tiangolo.com/\">FastAPI</a> framework. This API generates JSON Table Schema responses and is more geared toward smallish requests that can be serviced within a second or two. The source code for these services is found within the <a href=\"https://github.com/akrherz/iem-web-services\">iem-web-services repo</a>.</p>\n      </div>\n    </div>\n  </div>\n  <div class=\"col-12 col-md-3\">\n    <div class=\"card h-100\">\n      <div class=\"card-body\">\n        <h2 class=\"h5\">Ad-hoc Services</h2>\n        <a class=\"btn btn-primary mb-2\" href=\"#json\"><i class=\"bi bi-info-circle\" aria-hidden=\"true\"></i> <span class=\"visually-hidden\">Info</span> (Geo)-JSON Services</a>\n        <p>Represents a hodge-podge of services invented over the past many years that are not necessarily well thought out or structured. They individually have help pages that attempt to explain how to use them. The source code for these services is found with the main <a href=\"https://github.com/akrherz/iem/tree/main/pylib/iemweb\">iem repo</a>.</p>\n      </div>\n    </div>\n  </div>\n  <div class=\"col-12 col-md-3\">\n    <div class=\"card h-100\">\n      <div class=\"card-body\">\n        <h2 class=\"h5\">Ad-hoc CGI Services</h2>\n        <a class=\"btn btn-primary mb-2\" href=\"#cgi\"><i class=\"bi bi-info-circle\" aria-hidden=\"true\"></i> <span class=\"visually-hidden\">Info</span> Scriptable CGI Services</a>\n        <p>Represents a collection of backends that often service various bulk data download portals. These services are heavily trafficked and typically emit simple CSV responses. None of these will do JSON, often due to various constraints. The source code for these services is found with the main <a href=\"https://github.com/akrherz/iem/tree/main/pylib/iemweb\">iem repo</a>.</p>\n      </div>\n    </div>\n  </div>\n  <div class=\"col-12 col-md-3\">\n    <div class=\"card h-100\">\n      <div class=\"card-body\">\n        <h2 class=\"h5\">OGC Services</h2>\n        <a class=\"btn btn-primary mb-2\" href=\"/ogc/\"><i class=\"bi bi-info-circle\" aria-hidden=\"true\"></i> <span class=\"visually-hidden\">Info</span> OGC Services</a>\n        <p>Represents a collection of Open Geospatial Consortium services. The source code for these services is found with the main <a href=\"https://github.com/akrherz/iem/tree/main/pylib/iemweb\">iem repo</a>.</p>\n      </div>\n    </div>\n  </div>\n</div>\n\n<h3>But first, perhaps there are better alternatives!</h3>\n\n<blockquote>\n<p>The following is a list of other web service providers.  They all do a better\njob than this website does.  Some of these are commercial and this listing should\nnot be implied as an endorsement. Of course, you can just search google for\n<a href=\"https://www.google.com/search?q=weather+api\">Weather API</a> :)</p>\n\n<ul>\n <li><a href=\"https://developer.baronweather.com/\">Baron Weather</a></li>\n <li><a href=\"https://openweathermap.org/api\">OpenWeatherMap</a></li>\n <li><a href=\"https://pirateweather.net\">Pirate Weather</a></li>\n <li><a href=\"https://realearth.ssec.wisc.edu/doc/api.php\">SSEC RealEarth API</a></li>\n <li><a href=\"https://synopticdata.com/\">Synoptic Data PBC</a></li>\n <li><a href=\"https://www.tomorrow.io/weather-api/\">Tomorrow.io</a></li>\n <li><a href=\"https://xweather.com/docs\">Vaisala Xweather</a></li>\n <li><a href=\"https://www.visualcrossing.com/weather-api\">Visual Crossing Weather</a></li>\n <li><a href=\"https://www.weatherbit.io/api/\">Weatherbit API</a></li>\n</ul>\n</blockquote>\n\n<h3>\n<a href=\"#json\" aria-label=\"Jump to JSON Services\"><i class=\"bi bi-bookmark\" aria-hidden=\"true\"></i></a>\n<a name=\"json\"></a>(Geo)-JSON Services</h3>\n\n<div class=\"row\">\n<div class=\"col-md-4\">\n\n<div class=\"card mb-3\">\n  <div class=\"card-header\">IEM Data / Metadata</div>\n  <div class=\"card-body\">\n  <ul>\n    <li><a href=\"/json/climodat_stclimo.py?help\">Climodat State Climatology</a></li>\n    <li><a href=\"/geojson/climodat_dayclimo.py?help\">Climodat Day Climatology</a></li>\n    <li><a href=\"/json/current.py?help\">Current Obs</a></li>\n    <li><a href=\"/geojson/7am.py?help\">COOP and other data valid @ 7 AM</a></li>\n    <li><a href=\"/json/dcp_vars.py?help\">HADS/DCP Reporting SHEF Vars</a></li>\n    <li><a href=\"/json/products.py?help\">Archive IEM Web Products</a></li>\n    <li><a href=\"/geojson/network.py?help\">Network GeoJSON</a></li>\n    <li><a href=\"/geojson/networks.py?help\">Network Identifiers</a></li>\n    <li><a href=\"/json/reference.py?help\">pyIEM reference data</a></li>\n    <li><a href=\"/geojson/recent_metar.py?help\">Recent \"Interesting\" METAR Reports</a></li>\n    <li><a href=\"/json/stations.py?help\">Station Metadata Changes</a></li>\n    <li><a href=\"/geojson/station_neighbors.py?help\">Station Neighbors GeoJSON</a></li>\n    <li><a href=\"/json/tms.py?help\">Tile Map Services metadata</a></li>\n    <li>Webcam Archive Metadata:\n        <a href=\"/geojson/webcam.py?help\">GeoJSON</a> or\n        <a href=\"/json/webcams.py?help\">JSON</a></li>\n  </ul>\n  </div>\n</div>\n\n<div class=\"card mb-3\">\n  <div class=\"card-header\">Aviation Services</div>\n  <div class=\"card-body\">\n  <ul>\n    <li><a href=\"/geojson/convective_sigmet.py?help\">SIGMETs</a></li>\n  </ul>\n  </div>\n</div>\n\n\n</div>\n<div class=\"col-md-4\">\n\n<div class=\"card mb-3\">\n  <div class=\"card-header\">NWS Data</div>\n  <div class=\"card-body\">\n  <ul>\n      <li>CF6 Data: <a href=\"/geojson/cf6.py?help\">GeoJSON</a> or\n      <a href=\"/json/cf6.py?help\">JSON</a></li>\n      <li>CLI Data: <a href=\"/geojson/cli.py?help\">GeoJSON</a> or\n      <a href=\"/json/cli.py?help\">JSON</a> or <a href=\"/json/cli_audit.py?help\">CLI Audit</a></li>\n      <li><a href=\"/geojson/coopobs.py?help\">Daily COOP Obs GeoJSON</a></li>\n      <li><a href=\"/geojson/lsr.py?help\">Local Storm Reports</a></li>\n      <li><a href=\"/geojson/nexrad_attr.py?help\">NEXRAD Storm Attributes</a></li>\n      <li><a href=\"/json/ibw_tags.py?help\">Impact Based Warning Tags</a></li>\n      <li><a href=\"/json/radar.py?help\">NEXRAD/TWDR Archive Metadata</a></li>\n      <li><a href=\"/json/ridge_current.py?help\">NEXRAD/TWDR Current Metadata</a></li>\n      <li><a href=\"/json/snowfall_observations_v2.py?help\">Six Hour Snowfall over past 48 Hours</a></li>\n      <li><a href=\"/json/outlook_progression.py?help\">SPC/WPC Outlook Progression by Point by Date</a></li>\n      <li><a href=\"/json/spcmcd.py?help\">SPC Mesoscale Discussions</a></li>\n      <li><a href=\"/json/spcoutlook.py?help\">SPC Outlooks</a></li>\n      <li><a href=\"/json/spc_bysize.py?help\">SPC Outlooks by Size</a></li>\n      <li><a href=\"/json/spcwatch.py?help\">SPC Watches</a></li>\n      <li><a href=\"/json/raob.py?help\">Sounding/RAOB Data</a></li>\n      <li><a href=\"/geojson/sps.py?help\">Special Weather Statements (SPS)</a></li>\n      <li><a href=\"/json/sps_by_point.py?help\">Special Weather Statements (SPS) by Point</a></li>\n      <li><a href=\"/json/nwstext.py?help\">Text Data</a></li>\n      <li><a href=\"/json/nwstext_search.py?help\">Text Product Metadata Search</a></li>\n      <li><a href=\"/json/wpcmpd.py?help\">WPC Mesoscale Discussions</a></li>\n      <li><a href=\"/json/wpcoutlook.py?help\">WPC Outlooks</a></li>\n  </ul>\n  </div>\n</div>\n\n\n</div>\n<div class=\"col-md-4\">\n\n<div class=\"card mb-3\">\n  <div class=\"card-header\">NWS Watch, Warning, and Advisories</div>\n  <div class=\"card-body\">\n  <ul>\n      <li><a href=\"/geojson/sbw.py?help\">Storm Based Warnings</a></li>\n      <li><a href=\"/json/sbw_by_point.py?help\">Storm Based Warnings by Point</a></li>\n      <li><a href=\"/geojson/sbw_county_intersect.py?help\">SBW Polygon County Intersection</a></li>\n      <li><a href=\"/geojson/vtec_event.py?help\">VTEC Event Data</a></li>\n      <li><a href=\"/json/vtec_events.py?help\">VTEC Events</a></li>\n      <li><a href=\"/json/vtec_events_bypoint.py?help\">VTEC Events by Point</a></li>\n      <li><a href=\"/json/vtec_events_bystate.py?help\">VTEC Events by State</a></li>\n      <li><a href=\"/json/vtec_events_byugc.py?help\">VTEC Events by UGC</a></a>\n      <li><a href=\"/json/vtec_events_bywfo.py?help\">VTEC Events by WFO</a></li>\n      <li><a href=\"/json/vtec_max_etn.py?help\">VTEC Max Event ID</a></li>\n  </ul>\n  </div>\n</div>\n\n<div class=\"card mb-3\">\n  <div class=\"card-header\">Miscellaneous</div>\n  <div class=\"card-body\">\n  <ul>\n    <li><a href=\"/geojson/winter_roads.py?help\">Iowa Winter Road Conditions</a></li>\n    <li><a href=\"/json/state_ugc.py?help\">NWS State UGC Codes</a></li>\n    <li><a href=\"/json/prism.py?help\">PRISM</a></li>\n    <li><a href=\"/json/stage4.py?help\">Stage IV</a></li>\n    <li><a href=\"/geojson/usdm.py?help\">US Drought Monitor</a></li>\n  </ul>\n  </div>\n</div>\n\n</div>\n</div><!-- ./row -->\n\n<h3>\n<a href=\"#cgi\" aria-label=\"Jump to CGI Services\"><i class=\"bi bi-bookmark\" aria-hidden=\"true\"></i></a>\n<a name=\"cgi\"></a>Scriptable CGI Services</h3>\n\n<p>Some of the IEM data services are not ammenable to being used within a API\nservice that aims for sub-second response times.  These services also consume\na lot of resources and are not as scalable.  As such, we have a few services\nrooted within <code>/cgi-bin/</code> style 2000s era web services.  There are primative\nhelp pages for these services:</p>\n\n<ul>\n<li><a href=\"/cgi-bin/request/asos.py?help\">ASOS/METAR Data (/cgi-bin/request/asos.py)</a></li>\n<li><a href=\"/cgi-bin/request/asos1min.py?help\">ASOS 1 Minute NCEI Data (/cgi-bin/request/asos1min.py)</a></li>\n<li><a href=\"/cgi-bin/request/scp.py?help\">ASOS Satellite + Cloud Product (/cgi-bin/request/scp.py)</a></li>\n<li><a href=\"/cgi-bin/request/gis/awc_gairmets.py?help\">AWC Graphical Airmets (/cgi-bin/request/gis/awc_gairmets.py)</a></li>\n<li><a href=\"/cgi-bin/request/gis/cwas.py?help\">Center Weather Advisories (/cgi-bin/request/gis/cwas.py)</a></li>\n<li><a href=\"/cgi-bin/request/coopobs.py?help\">NWS COOP Obs (/cgi-bin/request/coopobs.py)</a></li>\n<li><a href=\"/cgi-bin/request/hads.py?help\">HADS/DCP/SHEF Data (/cgi-bin/request/hads.py)</a></li>\n<li><a href=\"/cgi-bin/request/grx_rings.py?help\">Gibson Ridge Range Ring Placefile (/cgi-bin/request/grx_rings.py)</a></li>\n<li><a href=\"/cgi-bin/request/hml.py?help\">HML Processed Data (/cgi-bin/request/hml.py)</a></li>\n<li><a href=\"/cgi-bin/request/hourlyprecip.py?help\">Hourly Precip (/cgi-bin/request/hourlyprecip.py)</a></li>\n<li><a href=\"/cgi-bin/request/nass_iowa.py?help\">Iowa NASS (/cgi-bin/request/nass_iowa.py)</a></li>\n<li><a href=\"/cgi-bin/request/normals.py?help\">NCEI/IEM Climate Normals (/cgi-bin/request/normals.py)</a></li>\n<li><a href=\"/cgi-bin/request/isusm.py?help\">Iowa State Soil Moisture Network (/cgi-bin/request/isusm.py)</a></li>\n<li><a href=\"/cgi-bin/request/coop.py?help\">IEM Climodat stations (/cgi-bin/request/coop.py)</a></li>\n<li><a href=\"/cgi-bin/request/daily.py?help\">IEM Computed Daily Summaries (/cgi-bin/request/daily.py)</a></li>\n<li><a href=\"/cgi-bin/request/gis/lsr.py?help\">Local Storm Reports (/cgi-bin/request/gis/lsr.py)</a></li>\n<li><a href=\"/cgi-bin/request/metars.py?help\">METARs (/cgi-bin/request/metars.py)</a></li>\n<li><a href=\"/cgi-bin/request/other.py?help\">Miscellaneous/Other (/cgi-bin/request/other.py)</a></li>\n<li><a href=\"/cgi-bin/request/mos.py?help\">Model Output Statistics (/cgi-bin/request/mos.py)</a></li>\n<li><a href=\"/cgi-bin/request/nlaeflux.py?help\">NLAE Flux Stations (/cgi-bin/request/nlaeflux.py)</a></li>\n<li><a href=\"/cgi-bin/request/gis/nexrad_storm_attrs.py?help\">NEXRAD Storm Attributes (/cgi-bin/request/gis/nexrad_storm_attrs.py)</a></li>\n<li><a href=\"/cgi-bin/afos/retrieve.py?help\">NWS Text Data (/cgi-bin/afos/retrieve.py)</a></li>\n<li><a href=\"/cgi-bin/request/gis/watchwarn.py?help\">NWS Watch/Warning/Advisories (/cgi-bin/request/gis/watchwarn.py)</a></li>\n<li><a href=\"/cgi-bin/request/gis/pireps.py?help\">Pilot Reports PIREPS (/cgi-bin/request/gis/pireps.py)</a></li>\n<li><a href=\"/cgi-bin/request/raster2netcdf.py?help\">RASTER 2 netcdf (/cgi-bin/request/raster2netcdf.py)</a></li>\n<li><a href=\"/cgi-bin/request/raob.py?help\">RAOB Soundings (/cgi-bin/request/raob.py)</a></li>\n<li><a href=\"/cgi-bin/request/rwis.py?help\">Roadway Weather Information (RWIS) (/cgi-bin/request/rwis.py)</a></li>\n<li><a href=\"/cgi-bin/request/scan.py?help\">Soil Climate Analysis Network (/cgi-bin/request/scan.py)</a></li>\n<li><a href=\"/cgi-bin/request/gis/sigmets.py?help\">SIGMETs (/cgi-bin/request/gis/sigmets.py)</a></li>\n<li><a href=\"/cgi-bin/request/smos.py?help\">SMOS (/cgi-bin/request/smos.py)</a></li>\n<li><a href=\"/cgi-bin/request/gis/spc_mcd.py?help\">SPC MCD (/cgi-bin/request/gis/spc_mcd.py)</a></li>\n<li><a href=\"/cgi-bin/request/gis/spc_outlooks.py?help\">SPC/WPC Outlooks (/cgi-bin/request/gis/spc_outlooks.py)</a></li>\n<li><a href=\"/cgi-bin/request/gis/spc_watch.py?help\">SPC Convective Watches (/cgi-bin/request/gis/spc_watch.py)</a></li>\n<li><a href=\"/cgi-bin/request/gis/sps.py?help\">Special Weather Statements SPS (/cgi-bin/request/gis/sps.py)</a></li>\n<li><a href=\"/cgi-bin/request/talltowers.py?help\">Talltowers (/cgi-bin/request/talltowers.py)</a></li>\n<li><a href=\"/cgi-bin/request/gis/watch_by_county.py?help\">SPC Watch by County (/cgi-bin/request/gis/watch_by_county.py)</a></li>\n<li><a href=\"/cgi-bin/request/tempwind_aloft.py?help\">Temp Winds Aloft (/cgi-bin/request/tempwind_aloft.py)</a></li>\n<li><a href=\"/cgi-bin/request/taf.py?help\">Terminal Aerodome Forecast TAF (/cgi-bin/request/taf.py)</a></li>\n<li><a href=\"/cgi-bin/request/uscrn.py?help\">US Climate Reference Network (/cgi-bin/request/uscrn.py)</a></li>\n<li><a href=\"/cgi-bin/request/gis/wpc_mpd.py?help\">WPC Mesoscale Precip Discussions (/cgi-bin/request/gis/wpc_mpd.py)</a></li>\n<li><a href=\"/cgi-bin/mywindrose.py?help\">Windrose Generator (/cgi-bin/mywindrose.py)</a></li>\n\n</ul>\n\n<h3>API Stability?</h3>\n\n<p>In general, we do not try to break things but bugs happen.  As always,\nplease <a href=\"/info/contacts.php\">email us</a> with any concerns you have.  We\nare extremely responsive to email :)\n\nEOM;\n\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/api/proxy_error_handler.py",
    "content": "\"\"\"Implementation at /pylib/iemweb/proxy_error_handler.py\"\"\"\n\nfrom iemweb.proxy_error_handler import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/apps.module.js",
    "content": "\nwindow.addEventListener('DOMContentLoaded', () => {\n    const filterInput = document.getElementById('appFilter');\n    const table = document.getElementById('table1');\n    if (!filterInput || !table) {return;}\n    filterInput.addEventListener('input', (event) => {\n        const filter = event.target.value.trim().toLowerCase();\n        const rows = table.querySelectorAll('tbody tr');\n        rows.forEach(row => {\n            const text = row.textContent.toLowerCase();\n            row.style.display = filter === '' || text.includes(filter) ? '' : 'none';\n        });\n    });\n});\n"
  },
  {
    "path": "htdocs/apps.php",
    "content": "<?php\nrequire_once \"../config/settings.inc.php\";\nrequire_once \"../include/myview.php\";\n$t = new MyView();\ndefine(\"IEM_APPID\", 39);\nrequire_once \"../include/database.inc.php\";\n$dbconn = iemdb(\"mesosite\");\n\n$t->title = \"Application Listing\";\n$t->jsextra = <<<EOM\n<script src=\"apps.module.js\" type=\"module\"></script>\nEOM;\n\n$table = \"\";\n$tags = Array();\n$rs = pg_query(\n    $dbconn,\n    \"SELECT appid, string_agg(tag, ',') as t from iemapps_tags \".\n    \"GROUP by appid\"\n);\nfor ($i=0;$row=pg_fetch_assoc($rs);$i++){\n    $tags[$row[\"appid\"]] = $row[\"t\"];\n}\n$rs = pg_query($dbconn, \"SELECT * from iemapps ORDER by appid ASC\");\nwhile ($row=pg_fetch_assoc($rs)){\n    $tt = \"\";\n    if (array_key_exists($row[\"appid\"], $tags)){\n        $tt = $tags[$row[\"appid\"]];\n    }\n    $table .= sprintf(\n        \"<tr><th><a href='%s'>%s</a></th><td>%s</td><td>%s</td></tr>\\n\",\n        $row[\"url\"],  $row[\"name\"], $row[\"description\"], $tt);\n}\n\n$t->content = <<<EOM\n <h3>IEM Application Listing</h3>\n <p>This website contains a large number of 'applications' which allow for\n dynamic query and product generation.  This page displays a listing of these\n apps along with a brief description.  The tags shown are used to organize the\n apps.</p>\n\n <div class=\"mb-3\">\n   <input type=\"text\" id=\"appFilter\" class=\"form-control\" placeholder=\"Filter applications by keyword...\" />\n </div>\n\n <table class=\"table table-striped table-bordered\" id=\"table1\">\n <thead>\n <tr><th>Title</th><th>Description</th><th>Tags</th></tr>\n </thead>\n <tbody>\n{$table}\n </tbody>\n</table>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/archive/codsat/index.css",
    "content": "/* MTArchive + COD Satellite Browser Styles */\n\n#imageContainer {\n    min-height: 400px;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    align-items: center;\n}\n\n#imageWrapper {\n    width: 100%;\n}\n\n#satelliteImage {\n    width: 100%;\n    height: auto;\n    border-radius: 4px;\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n#noImageMessage {\n    padding: 3rem 1rem;\n}\n\n.card {\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.card-header {\n    background-color: #f8f9fa;\n    border-bottom: 1px solid #dee2e6;\n}\n\n#animationCard {\n    margin-top: 1rem;\n}\n\n/* Animation controls styling */\n.btn-group button {\n    min-width: 80px;\n}\n\n/* Timeline styling */\n.timeline-container {\n    margin-top: 0.5rem;\n    padding: 0.5rem 0;\n    background-color: #f8f9fa;\n    border-radius: 4px;\n    overflow-x: auto;\n}\n\n#timeline {\n    display: block;\n    min-width: 100%;\n}\n\n.timeline-line {\n    stroke: #dee2e6;\n    stroke-width: 2;\n}\n\n.timeline-dot {\n    cursor: pointer;\n    transition: all 0.2s ease;\n}\n\n.timeline-dot:hover {\n    r: 6;\n    stroke-width: 3;\n}\n\n.timeline-dot.active {\n    stroke-width: 3;\n}\n\n.timeline-label {\n    font-size: 10px;\n    fill: #6c757d;\n    pointer-events: none;\n}\n\n/* Loading spinner alignment */\n#loadingRow .spinner-border {\n    vertical-align: middle;\n}\n\n/* Form select disabled state */\nselect:disabled {\n    cursor: not-allowed;\n}\n\n/* Progress bar styling */\n.progress {\n    background-color: #e9ecef;\n}\n\n.progress-bar {\n    transition: width 0.1s ease;\n    background-color: #0d6efd;\n}\n\n/* Responsive adjustments */\n@media (max-width: 991px) {\n    #imageContainer {\n        min-height: 300px;\n    }\n\n    .card {\n        margin-bottom: 1rem;\n    }\n}\n\n/* Alert styling for image count */\n.alert-success {\n    border-left: 4px solid #198754;\n}\n\n/* Icon sizing in buttons */\n.btn i {\n    margin-right: 0.25rem;\n}\n"
  },
  {
    "path": "htdocs/archive/codsat/index.module.js",
    "content": "/**\n * MTArchive + COD Satellite Browser\n *\n * Provides cascading selection UI and animation controls for GOES satellite imagery\n * from the Iowa State MTArchive powered by College of DuPage NEXLAB\n */\n\nconst BASE_URL = \"https://mtarchive.geol.iastate.edu\";\n\n// State management\nconst state = {\n    date: null,\n    satellite: null,\n    sectorType: null,\n    sector: null,\n    plotType: null,\n    images: [],\n    currentIndex: 0,\n    currentTimestamp: null,\n    isPlaying: false,\n    animationInterval: null,\n    speed: 500,\n    skipFrames: 1,\n    loop: true\n};\n\n// DOM elements\nconst elements = {\n    dateSelect: null,\n    datePrevBtn: null,\n    dateNextBtn: null,\n    satelliteSelect: null,\n    sectorTypeSelect: null,\n    sectorSelect: null,\n    plotTypeSelect: null,\n    satelliteImage: null,\n    playBtn: null,\n    stopBtn: null,\n    speedSlider: null,\n    speedValue: null,\n    skipSlider: null,\n    skipValue: null,\n    loopCheck: null,\n    currentFrame: null,\n    totalFrames: null,\n    currentTime: null,\n    timeline: null,\n    imageWrapper: null,\n    noImageMessage: null,\n    animationCard: null,\n    imageCount: null,\n    loadingRow: null,\n    imagesLoadedRow: null,\n    shareBtn: null,\n    statusIndicator: null,\n    statusMessage: null\n};\n\n/**\n * Initialize the application\n */\nasync function init() {\n    // Cache DOM elements\n    elements.dateSelect = document.getElementById(\"dateSelect\");\n    elements.datePrevBtn = document.getElementById(\"datePrevBtn\");\n    elements.dateNextBtn = document.getElementById(\"dateNextBtn\");\n    elements.satelliteSelect = document.getElementById(\"satelliteSelect\");\n    elements.sectorTypeSelect = document.getElementById(\"sectorTypeSelect\");\n    elements.sectorSelect = document.getElementById(\"sectorSelect\");\n    elements.plotTypeSelect = document.getElementById(\"plotTypeSelect\");\n    elements.satelliteImage = document.getElementById(\"satelliteImage\");\n    elements.playBtn = document.getElementById(\"playBtn\");\n    elements.stopBtn = document.getElementById(\"stopBtn\");\n    elements.speedSlider = document.getElementById(\"speedSlider\");\n    elements.speedValue = document.getElementById(\"speedValue\");\n    elements.skipSlider = document.getElementById(\"skipSlider\");\n    elements.skipValue = document.getElementById(\"skipValue\");\n    elements.loopCheck = document.getElementById(\"loopCheck\");\n    elements.currentFrame = document.getElementById(\"currentFrame\");\n    elements.totalFrames = document.getElementById(\"totalFrames\");\n    elements.currentTime = document.getElementById(\"currentTime\");\n    elements.timeline = document.getElementById(\"timeline\");\n    elements.imageWrapper = document.getElementById(\"imageWrapper\");\n    elements.noImageMessage = document.getElementById(\"noImageMessage\");\n    elements.animationCard = document.getElementById(\"animationCard\");\n    elements.imageCount = document.getElementById(\"imageCount\");\n    elements.loadingRow = document.getElementById(\"loadingRow\");\n    elements.imagesLoadedRow = document.getElementById(\"imagesLoadedRow\");\n    elements.shareBtn = document.getElementById(\"shareBtn\");\n    elements.statusIndicator = document.getElementById(\"statusIndicator\");\n    elements.statusMessage = document.getElementById(\"statusMessage\");\n\n    // Set default date to yesterday (satellite data has delay)\n    const today = new Date();\n    const yesterday = new Date(today);\n    yesterday.setDate(today.getDate() - 1);\n    const yesterdayStr = yesterday.toISOString().split('T')[0];\n    const todayStr = today.toISOString().split('T')[0];\n\n    elements.dateSelect.value = yesterdayStr;\n    elements.dateSelect.max = todayStr;\n    updateDateNavButtons();\n\n    // Attach event listeners\n    attachEventListeners();\n\n    // Load state from URL parameters if present, otherwise trigger initial load\n    const hasURLParams = await loadStateFromURL();\n\n    // If no URL parameters, trigger initial date change to load data\n    if (!hasURLParams) {\n        state.date = yesterdayStr;\n        await handleDateChange();\n    }\n}\n\n/**\n * Load state from URL parameters\n * @returns {Promise<boolean>} True if URL parameters were loaded\n */\nasync function loadStateFromURL() {\n    const params = new URLSearchParams(window.location.search);\n\n    const urlState = {\n        date: params.get('date'),\n        satellite: params.get('satellite'),\n        sectorType: params.get('sectorType'),\n        sector: params.get('sector'),\n        plotType: params.get('plotType'),\n        speed: params.get('speed'),\n        skipFrames: params.get('skip'),\n        loop: params.get('loop'),\n        timestamp: params.get('timestamp')\n    };\n\n    // Apply speed and loop settings if present\n    if (urlState.speed) {\n        state.speed = parseInt(urlState.speed);\n        elements.speedSlider.value = urlState.speed;\n        elements.speedValue.textContent = urlState.speed;\n    }\n\n    if (urlState.skipFrames) {\n        state.skipFrames = parseInt(urlState.skipFrames);\n        elements.skipSlider.value = urlState.skipFrames;\n        elements.skipValue.textContent = urlState.skipFrames;\n    }\n\n    if (urlState.loop !== null) {\n        state.loop = urlState.loop === 'true';\n        elements.loopCheck.checked = state.loop;\n    }\n\n    // Store timestamp for later use\n    if (urlState.timestamp) {\n        state.currentTimestamp = urlState.timestamp;\n    }\n\n    // If no date parameter, we're done\n    if (!urlState.date) {return false;}\n\n    // Set date and trigger cascade\n    elements.dateSelect.value = urlState.date;\n    state.date = urlState.date;\n    updateDateNavButtons();\n\n    try {\n        await loadCascadingSelections(urlState);\n    } catch {\n        // Silently fail - user can manually select options\n    }\n\n    return true;\n}\n\n/**\n * Load cascading selections from URL state\n */\nasync function loadCascadingSelections(urlState) {\n    // Load satellites\n    showRow(\"satelliteRow\");\n    const satellites = await fetchAvailableSatellites(urlState.date);\n    populateSelect(elements.satelliteSelect, satellites, \"Select satellite...\");\n    elements.satelliteSelect.disabled = false;\n\n    if (!urlState.satellite || !satellites.includes(urlState.satellite)) {return;}\n\n    elements.satelliteSelect.value = urlState.satellite;\n    state.satellite = urlState.satellite;\n\n    // Continue loading sector types and beyond\n    await loadSectorTypesAndBeyond(urlState);\n}\n\n/**\n * Load sector types and subsequent selections\n */\nasync function loadSectorTypesAndBeyond(urlState) {\n    hideFromRow(\"sectorTypeRow\");\n    showRow(\"sectorTypeRow\");\n    const sectorTypes = await fetchAvailableSectorTypes(urlState.date, urlState.satellite);\n    populateSelect(elements.sectorTypeSelect, sectorTypes, \"Select sector type...\");\n    elements.sectorTypeSelect.disabled = false;\n\n    if (!urlState.sectorType || !sectorTypes.includes(urlState.sectorType)) {return;}\n\n    elements.sectorTypeSelect.value = urlState.sectorType;\n    state.sectorType = urlState.sectorType;\n\n    // Continue loading sectors and beyond\n    await loadSectorsAndBeyond(urlState);\n}\n\n/**\n * Load sectors and subsequent selections\n */\nasync function loadSectorsAndBeyond(urlState) {\n    hideFromRow(\"sectorRow\");\n    showRow(\"sectorRow\");\n    const sectors = await fetchAvailableSectors(urlState.date, urlState.satellite, urlState.sectorType);\n    populateSelect(elements.sectorSelect, sectors, \"Select sector...\");\n    elements.sectorSelect.disabled = false;\n\n    if (!urlState.sector || !sectors.includes(urlState.sector)) {return;}\n\n    elements.sectorSelect.value = urlState.sector;\n    state.sector = urlState.sector;\n\n    // Continue loading plot types and images\n    await loadPlotTypesAndImages(urlState);\n}\n\n/**\n * Load plot types and images\n */\nasync function loadPlotTypesAndImages(urlState) {\n    hideFromRow(\"plotTypeRow\");\n    showRow(\"plotTypeRow\");\n    const plotTypes = await fetchAvailablePlotTypes(urlState.date, urlState.satellite, urlState.sectorType, urlState.sector);\n    populateSelect(elements.plotTypeSelect, plotTypes, \"Select plot type...\");\n    elements.plotTypeSelect.disabled = false;\n\n    if (!urlState.plotType || !plotTypes.includes(urlState.plotType)) {return;}\n\n    elements.plotTypeSelect.value = urlState.plotType;\n    state.plotType = urlState.plotType;\n\n    // Load images\n    await loadImagesForSelection();\n}\n\n/**\n * Load images for current selection\n */\nasync function loadImagesForSelection() {\n    elements.loadingRow.style.display = \"block\";\n    const images = await fetchAvailableImages(\n        state.date,\n        state.satellite,\n        state.sectorType,\n        state.sector,\n        state.plotType\n    );\n    state.images = images;\n    elements.loadingRow.style.display = \"none\";\n\n    if (images.length > 0) {\n        elements.imagesLoadedRow.style.display = \"block\";\n        elements.imageCount.textContent = images.length;\n        elements.totalFrames.textContent = images.length;\n        elements.animationCard.style.display = \"block\";\n\n        // Check if we have a timestamp from URL to load specific frame\n        let initialIndex = 0;\n        if (state.currentTimestamp) {\n            const timestampIndex = images.findIndex(img => img.timestamp === state.currentTimestamp);\n            if (timestampIndex !== -1) {\n                initialIndex = timestampIndex;\n            }\n        }\n\n        // Set current index before rendering timeline\n        state.currentIndex = initialIndex;\n\n        // Show wrapper first so timeline can measure correctly\n        elements.imageWrapper.style.display = \"block\";\n        elements.noImageMessage.style.display = \"none\";\n\n        // Use requestAnimationFrame to ensure layout is updated before measuring\n        requestAnimationFrame(() => {\n            // Render the timeline with correct index and width\n            renderTimeline();\n\n            // Load the image\n            loadImage(initialIndex);\n        });\n    }\n}\n\n/**\n * Update URL with current state\n */\nfunction updateURL() {\n    const params = new URLSearchParams();\n\n    // Add parameters that exist\n    const paramMap = {\n        date: state.date,\n        satellite: state.satellite,\n        sectorType: state.sectorType,\n        sector: state.sector,\n        plotType: state.plotType\n    };\n\n    Object.entries(paramMap).forEach(([key, value]) => {\n        if (value) {params.set(key, value);}\n    });\n\n    // Add current timestamp if available\n    if (state.currentTimestamp) {\n        params.set('timestamp', state.currentTimestamp);\n    }\n\n    // Add non-default settings\n    if (state.speed !== 500) {params.set('speed', state.speed);}\n    if (state.skipFrames !== 1) {params.set('skip', state.skipFrames);}\n    if (!state.loop) {params.set('loop', 'false');}\n\n    const queryString = params.toString();\n    const newURL = queryString ? `${window.location.pathname}?${queryString}` : window.location.pathname;\n    window.history.replaceState({}, '', newURL);\n}\n\n/**\n * Attach all event listeners\n */\nfunction attachEventListeners() {\n    elements.dateSelect.addEventListener(\"change\", () => handleDateChange({ preserveSelections: true }));\n    elements.datePrevBtn.addEventListener(\"click\", () => shiftDateByDays(-1));\n    elements.dateNextBtn.addEventListener(\"click\", () => shiftDateByDays(1));\n    elements.satelliteSelect.addEventListener(\"change\", handleSatelliteChange);\n    elements.sectorTypeSelect.addEventListener(\"change\", handleSectorTypeChange);\n    elements.sectorSelect.addEventListener(\"change\", handleSectorChange);\n    elements.plotTypeSelect.addEventListener(\"change\", handlePlotTypeChange);\n\n    elements.playBtn.addEventListener(\"click\", playAnimation);\n    elements.stopBtn.addEventListener(\"click\", stopAnimation);\n\n    elements.speedSlider.addEventListener(\"input\", (e) => {\n        state.speed = parseInt(e.target.value);\n        elements.speedValue.textContent = state.speed;\n        updateURL();\n        if (state.isPlaying) {\n            stopAnimation();\n            playAnimation();\n        }\n    });\n\n    elements.skipSlider.addEventListener(\"input\", (e) => {\n        state.skipFrames = parseInt(e.target.value);\n        elements.skipValue.textContent = state.skipFrames;\n        updateURL();\n    });\n\n    elements.loopCheck.addEventListener(\"change\", (e) => {\n        state.loop = e.target.checked;\n        updateURL();\n    });\n\n    elements.shareBtn.addEventListener(\"click\", copyShareLink);\n\n    // Keyboard shortcuts\n    document.addEventListener(\"keydown\", handleKeyboardInput);\n\n    // Re-render timeline on window resize\n    let resizeTimeout = null;\n    window.addEventListener(\"resize\", () => {\n        clearTimeout(resizeTimeout);\n        resizeTimeout = setTimeout(() => {\n            if (state.images.length > 0) {\n                renderTimeline();\n            }\n        }, 250);\n    });\n}\n\n/**\n * Handle date selection change\n */\nasync function handleDateChange(options = {}) {\n    const { preserveSelections = true } = options;\n    const date = elements.dateSelect.value;\n    if (!date) {return;}\n\n    // Validate date format is complete (YYYY-MM-DD)\n    if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(date)) {\n        return;\n    }\n\n    if (!isDateWithinBounds(date)) {\n        return;\n    }\n\n    const previousSelections = {\n        satellite: state.satellite,\n        sectorType: state.sectorType,\n        sector: state.sector,\n        plotType: state.plotType\n    };\n\n    state.date = date;\n    state.images = [];\n    state.currentIndex = 0;\n\n    resetUI();\n    showRow(\"satelliteRow\");\n    updateURL();\n    updateDateNavButtons();\n\n    if (preserveSelections) {\n        const preserved = await restoreSelectionsForDate(date, previousSelections);\n        if (preserved) {\n            return;\n        }\n    }\n\n    state.satellite = null;\n    state.sectorType = null;\n    state.sector = null;\n    state.plotType = null;\n\n    try {\n        const satellites = await fetchAvailableSatellites(date);\n        populateSelect(elements.satelliteSelect, satellites, \"Select satellite...\");\n        elements.satelliteSelect.disabled = false;\n    } catch {\n        showError(elements.satelliteSelect, \"Failed to load satellites\");\n    }\n}\n\n/**\n * Attempt to restore the previous selections for a new date\n * @returns {Promise<boolean>} True if restoration was attempted\n */\nasync function restoreSelectionsForDate(date, selections) {\n    const satellites = await fetchAvailableSatellites(date);\n    populateSelect(elements.satelliteSelect, satellites, \"Select satellite...\");\n    elements.satelliteSelect.disabled = false;\n\n    if (!selections.satellite || !satellites.includes(selections.satellite)) {\n        return false;\n    }\n\n    elements.satelliteSelect.value = selections.satellite;\n    state.satellite = selections.satellite;\n\n    hideFromRow(\"sectorTypeRow\");\n    showRow(\"sectorTypeRow\");\n    const sectorTypes = await fetchAvailableSectorTypes(date, selections.satellite);\n    populateSelect(elements.sectorTypeSelect, sectorTypes, \"Select sector type...\");\n    elements.sectorTypeSelect.disabled = false;\n\n    if (!selections.sectorType || !sectorTypes.includes(selections.sectorType)) {\n        return true;\n    }\n\n    elements.sectorTypeSelect.value = selections.sectorType;\n    state.sectorType = selections.sectorType;\n\n    hideFromRow(\"sectorRow\");\n    showRow(\"sectorRow\");\n    const sectors = await fetchAvailableSectors(date, selections.satellite, selections.sectorType);\n    populateSelect(elements.sectorSelect, sectors, \"Select sector...\");\n    elements.sectorSelect.disabled = false;\n\n    if (!selections.sector || !sectors.includes(selections.sector)) {\n        return true;\n    }\n\n    elements.sectorSelect.value = selections.sector;\n    state.sector = selections.sector;\n\n    hideFromRow(\"plotTypeRow\");\n    showRow(\"plotTypeRow\");\n    const plotTypes = await fetchAvailablePlotTypes(\n        date,\n        selections.satellite,\n        selections.sectorType,\n        selections.sector\n    );\n    populateSelect(elements.plotTypeSelect, plotTypes, \"Select plot type...\");\n    elements.plotTypeSelect.disabled = false;\n\n    if (!selections.plotType || !plotTypes.includes(selections.plotType)) {\n        return true;\n    }\n\n    elements.plotTypeSelect.value = selections.plotType;\n    state.plotType = selections.plotType;\n\n    await loadImagesForSelection();\n    return true;\n}\n\n/**\n * Update the date navigation buttons based on the current date value\n */\nfunction updateDateNavButtons() {\n    const currentDate = elements.dateSelect.value;\n    if (!currentDate || !elements.datePrevBtn || !elements.dateNextBtn) {return;}\n\n    const minDate = elements.dateSelect.min || \"2017-04-15\";\n    const maxDate = elements.dateSelect.max;\n\n    const prevDate = addDaysToDateString(currentDate, -1);\n    const nextDate = addDaysToDateString(currentDate, 1);\n\n    elements.datePrevBtn.disabled = !prevDate || (minDate && prevDate < minDate);\n    elements.dateNextBtn.disabled = !nextDate || (maxDate && nextDate > maxDate);\n}\n\n/**\n * Shift the currently selected date by a number of days\n */\nfunction shiftDateByDays(days) {\n    const currentDate = elements.dateSelect.value || state.date;\n    if (!currentDate) {return;}\n\n    const newDate = addDaysToDateString(currentDate, days);\n    if (!newDate || !isDateWithinBounds(newDate)) {return;}\n\n    elements.dateSelect.value = newDate;\n    updateDateNavButtons();\n    handleDateChange({ preserveSelections: true });\n}\n\n/**\n * Parse YYYY-MM-DD string to Date without timezone shifts\n */\nfunction parseDateISO(dateStr) {\n    const parts = dateStr.split('-');\n    if (parts.length !== 3) {return null;}\n    const year = parseInt(parts[0], 10);\n    const month = parseInt(parts[1], 10) - 1;\n    const day = parseInt(parts[2], 10);\n    if (Number.isNaN(year) || Number.isNaN(month) || Number.isNaN(day)) {\n        return null;\n    }\n    return new Date(year, month, day);\n}\n\n/**\n * Format Date to YYYY-MM-DD\n */\nfunction formatDateISO(date) {\n    const year = date.getFullYear();\n    const month = String(date.getMonth() + 1).padStart(2, '0');\n    const day = String(date.getDate()).padStart(2, '0');\n    return `${year}-${month}-${day}`;\n}\n\n/**\n * Add days to a YYYY-MM-DD date string\n */\nfunction addDaysToDateString(dateStr, days) {\n    const date = parseDateISO(dateStr);\n    if (!date) {return null;}\n    date.setDate(date.getDate() + days);\n    return formatDateISO(date);\n}\n\n/**\n * Validate date is within input min/max bounds\n */\nfunction isDateWithinBounds(dateStr) {\n    const selectedDate = parseDateISO(dateStr);\n    if (!selectedDate) {return false;}\n\n    const minDate = elements.dateSelect.min ? parseDateISO(elements.dateSelect.min) : null;\n    const maxDate = elements.dateSelect.max ? parseDateISO(elements.dateSelect.max) : null;\n\n    if (minDate && selectedDate < minDate) {\n        return false;\n    }\n    return  !(maxDate && selectedDate > maxDate);\n}\n\n/**\n * Handle satellite selection change\n */\nasync function handleSatelliteChange() {\n    const satellite = elements.satelliteSelect.value;\n    if (!satellite) {return;}\n\n    state.satellite = satellite;\n    state.sectorType = null;\n    state.sector = null;\n    state.plotType = null;\n    state.images = [];\n\n    hideFromRow(\"sectorTypeRow\");\n    showRow(\"sectorTypeRow\");\n    updateURL();\n\n    try {\n        const sectorTypes = await fetchAvailableSectorTypes(state.date, satellite);\n        populateSelect(elements.sectorTypeSelect, sectorTypes, \"Select sector type...\");\n        elements.sectorTypeSelect.disabled = false;\n    } catch {\n        showError(elements.sectorTypeSelect, \"Failed to load sector types\");\n    }\n}\n\n/**\n * Handle sector type selection change\n */\nasync function handleSectorTypeChange() {\n    const sectorType = elements.sectorTypeSelect.value;\n    if (!sectorType) {return;}\n\n    state.sectorType = sectorType;\n    state.sector = null;\n    state.plotType = null;\n    state.images = [];\n\n    hideFromRow(\"sectorRow\");\n    showRow(\"sectorRow\");\n    updateURL();\n\n    try {\n        const sectors = await fetchAvailableSectors(state.date, state.satellite, sectorType);\n        populateSelect(elements.sectorSelect, sectors, \"Select sector...\");\n        elements.sectorSelect.disabled = false;\n    } catch {\n        showError(elements.sectorSelect, \"Failed to load sectors\");\n    }\n}\n\n/**\n * Handle sector selection change\n */\nasync function handleSectorChange() {\n    const sector = elements.sectorSelect.value;\n    if (!sector) {return;}\n\n    state.sector = sector;\n    state.plotType = null;\n    state.images = [];\n\n    hideFromRow(\"plotTypeRow\");\n    showRow(\"plotTypeRow\");\n    updateURL();\n\n    try {\n        const plotTypes = await fetchAvailablePlotTypes(state.date, state.satellite, state.sectorType, sector);\n        populateSelect(elements.plotTypeSelect, plotTypes, \"Select plot type...\");\n        elements.plotTypeSelect.disabled = false;\n    } catch {\n        showError(elements.plotTypeSelect, \"Failed to load plot types\");\n    }\n}\n\n/**\n * Handle plot type selection change\n */\nasync function handlePlotTypeChange() {\n    const plotType = elements.plotTypeSelect.value;\n    if (!plotType) {return;}\n\n    state.plotType = plotType;\n    state.images = [];\n    state.currentIndex = 0;\n\n    elements.loadingRow.style.display = \"block\";\n    elements.imagesLoadedRow.style.display = \"none\";\n    updateURL();\n\n    try {\n        const images = await fetchAvailableImages(\n            state.date,\n            state.satellite,\n            state.sectorType,\n            state.sector,\n            plotType\n        );\n\n        state.images = images;\n        elements.loadingRow.style.display = \"none\";\n\n        if (images.length > 0) {\n            elements.imagesLoadedRow.style.display = \"block\";\n            elements.imageCount.textContent = images.length;\n            elements.totalFrames.textContent = images.length;\n            elements.animationCard.style.display = \"block\";\n\n            // Set current index\n            state.currentIndex = 0;\n\n            // Show wrapper first so timeline can measure correctly\n            elements.imageWrapper.style.display = \"block\";\n            elements.noImageMessage.style.display = \"none\";\n\n            // Use requestAnimationFrame to ensure layout is updated before measuring\n            requestAnimationFrame(() => {\n                // Render timeline with correct width\n                renderTimeline();\n\n                // Load first image\n                loadImage(0);\n            });\n        } else {\n            showError(null, \"No images found for this selection\");\n        }\n    } catch {\n        elements.loadingRow.style.display = \"none\";\n        showError(null, \"Failed to load images\");\n    }\n}\n\n/**\n * Fetch available satellites for a date\n */\nasync function fetchAvailableSatellites(date) {\n    const [year, month, day] = date.split('-');\n    const url = `${BASE_URL}/${year}/${month}/${day}/cod/sat/`;\n\n    const dirs = await fetchDirectoryListing(url);\n    return dirs.filter(d => d.startsWith('goes')).sort();\n}\n\n/**\n * Fetch available sector types for a satellite\n */\nfunction fetchAvailableSectorTypes(date, satellite) {\n    const [year, month, day] = date.split('-');\n    const url = `${BASE_URL}/${year}/${month}/${day}/cod/sat/${satellite}/`;\n\n    return fetchDirectoryListing(url);\n}\n\n/**\n * Fetch available sectors for a sector type\n */\nfunction fetchAvailableSectors(date, satellite, sectorType) {\n    const [year, month, day] = date.split('-');\n    const url = `${BASE_URL}/${year}/${month}/${day}/cod/sat/${satellite}/${sectorType}/`;\n\n    return fetchDirectoryListing(url);\n}\n\n/**\n * Fetch available plot types for a sector\n */\nfunction fetchAvailablePlotTypes(date, satellite, sectorType, sector) {\n    const [year, month, day] = date.split('-');\n    const url = `${BASE_URL}/${year}/${month}/${day}/cod/sat/${satellite}/${sectorType}/${sector}/`;\n\n    return fetchDirectoryListing(url);\n}\n\n/**\n * Fetch available images by parsing Apache directory listing\n */\nasync function fetchAvailableImages(date, satellite, sectorType, sector, plotType) {\n    const [year, month, day] = date.split('-');\n    const url = `${BASE_URL}/${year}/${month}/${day}/cod/sat/${satellite}/${sectorType}/${sector}/${plotType}/`;\n\n    try {\n        const response = await fetch(url);\n        if (!response.ok) {\n            throw new Error(`HTTP error! status: ${response.status}`);\n        }\n\n        const html = await response.text();\n        const parser = new DOMParser();\n        const doc = parser.parseFromString(html, 'text/html');\n        const links = Array.from(doc.querySelectorAll('a'));\n        const jpgFiles = links\n            .map(link => link.getAttribute('href'))\n            .filter(href => href?.match(/\\.jpg$/i));\n\n        return jpgFiles.map(filename => {\n            const fullUrl = `${BASE_URL}/${year}/${month}/${day}/cod/sat/${satellite}/${sectorType}/${sector}/${plotType}/${filename}`;\n            const timestamp = extractTimestamp(filename);\n            return { url: fullUrl, filename, timestamp };\n        });\n    } catch {\n        return [];\n    }\n}\n\n/**\n * Extract timestamp from filename\n * Format: sector_band_YYYYMMDDHHmmss.jpg\n */\nfunction extractTimestamp(filename) {\n    const match = filename.match(/(\\d{14})/);\n    if (match) {\n        const ts = match[1];\n        const year = ts.substring(0, 4);\n        const month = ts.substring(4, 6);\n        const day = ts.substring(6, 8);\n        const hour = ts.substring(8, 10);\n        const minute = ts.substring(10, 12);\n        const second = ts.substring(12, 14);\n\n        return `${year}-${month}-${day} ${hour}:${minute}:${second} UTC`;\n    }\n    return \"Unknown\";\n}\n\n/**\n * Fetch directory listing by parsing HTML\n */\nasync function fetchDirectoryListing(url) {\n    showStatus(`Fetching directory listing ${url}`, 'info');\n    try {\n        const response = await fetch(url);\n        if (!response.ok) {\n            showStatus(`URL failed (${response.status}) ${url}`, 'danger');\n            throw new Error(`HTTP error! status: ${response.status}`);\n        }\n\n        const html = await response.text();\n        showStatus(`Successfully fetched directory listing ${url}`, 'success');\n        const parser = new DOMParser();\n        const doc = parser.parseFromString(html, 'text/html');\n        const links = doc.querySelectorAll('a');\n\n        const dirs = [];\n        links.forEach(link => {\n            const href = link.getAttribute('href');\n            const dirName = extractValidDirectoryName(href);\n            if (dirName) {\n                dirs.push(dirName);\n            }\n        });\n\n        return dirs.sort();\n    } catch (error) {\n        // Only show status if it wasn't already shown (avoid duplicate messages)\n        if (!error.message.includes('HTTP error')) {\n            showStatus(`Unable to load directory listing from ${url}`, 'danger');\n        }\n        return [];\n    }\n}\n\n/**\n * Show status message\n * @param {string} message - Status message to display\n * @param {string} type - Bootstrap alert type: info, success, danger, warning\n */\nfunction showStatus(message, type = 'info') {\n    if (!elements.statusIndicator || !elements.statusMessage) {return;}\n\n    elements.statusMessage.textContent = message;\n    elements.statusIndicator.className = `alert alert-${type} mb-3`;\n    elements.statusIndicator.style.display = 'block';\n}\n\n/**\n * Extract valid directory name from href\n * Returns null if href is not a valid local directory\n */\nfunction extractValidDirectoryName(href) {\n    if (!href || !href.endsWith('/')) {return null;}\n\n    // Match simple directory names: alphanumeric, underscores, hyphens, followed by /\n    // This excludes ../, /, paths with slashes, and URLs\n    const match = href.match(/^([a-zA-Z0-9_-]+)\\/$/);\n    return match ? match[1] : null;\n}\n\n/**\n * Populate select element with options\n */\nfunction populateSelect(selectElement, options, placeholder) {\n    selectElement.innerHTML = `<option value=\"\">${placeholder}</option>`;\n\n    options.forEach(option => {\n        const optElement = document.createElement('option');\n        optElement.value = option;\n        optElement.textContent = formatOptionText(option);\n        selectElement.appendChild(optElement);\n    });\n}\n\n// Label mappings for satellite products\nconst PRODUCT_LABELS = {\n    // Product names\n    'natcolor': 'Natural Color',\n    'natcolorfire': 'Natural Color + Fire',\n    'truecolor': 'True Color',\n    'airmass': 'Air Mass',\n    'dcphase': 'Day Cloud Phase',\n    'ntmicro': 'Night Microphysics',\n    'sandwich': 'Sandwich',\n    'simplewv': 'Simple Water Vapor',\n    'abi01': 'Visible Blue (abi01)',\n    'abi02': 'Visible Red (abi02)',\n    'abi03': 'Veggie NIR (abi03)',\n    'abi04': 'Cirrus NIR (abi04)',\n    'abi05': 'Snow/Ice NIR (abi05)',\n    'abi06': 'Particle Size (abi06)',\n    'abi07': 'Shortwave IR (abi07)',\n    'abi08': 'Upper-level WV (abi08)',\n    'abi09': 'Mid-level WV (abi09)',\n    'abi10': 'Lower-level WV (abi10)',\n    'abi11': 'Cloud Top Phase (abi11)',\n    'abi12': 'Ozone (abi12)',\n    'abi13': 'Clean LWIR (abi13)',\n    'abi14': 'Long-wave IR (abi14)',\n    'abi15': 'Dirty LWIR (abi15)',\n    'abi16': 'CO2 LWIR (abi16)'\n};\n\n/**\n * Format option text for display\n */\nfunction formatOptionText(text) {\n    // Check for GOES satellite pattern: goes16, goes17, etc.\n    const goesMatch = text.match(/^goes(\\d+)$/);\n    if (goesMatch) {\n        return `GOES-${goesMatch[1]}`;\n    }\n\n    // Look up in product labels dictionary\n    if (PRODUCT_LABELS[text]) {\n        return PRODUCT_LABELS[text];\n    }\n\n    // Return original text if no match\n    return text;\n}\n\n/**\n * Load and display an image\n */\nfunction loadImage(index) {\n    if (index < 0 || index >= state.images.length) {return;}\n\n    state.currentIndex = index;\n    const imageData = state.images[index];\n\n    elements.satelliteImage.src = imageData.url;\n    elements.currentFrame.textContent = index + 1;\n    elements.currentTime.textContent = imageData.timestamp;\n\n    // Update state and URL with current timestamp\n    state.currentTimestamp = imageData.timestamp;\n    updateURL();\n\n    // Update timeline visualization\n    updateTimelinePosition();\n\n    // Preload next few images for smoother playback\n    preloadImages(index);\n}\n\n/**\n * Preload next few images for smoother animation\n */\nfunction preloadImages(startIndex) {\n    const preloadCount = 5;\n    for (let i = 1; i <= preloadCount; i++) {\n        const nextIndex = startIndex + (i * state.skipFrames);\n        if (nextIndex < state.images.length && state.images[nextIndex]) {\n            const img = new Image();\n            img.src = state.images[nextIndex].url;\n        }\n    }\n}\n\n/**\n * Render interactive timeline with clickable dots for each frame\n */\nfunction renderTimeline() {\n    if (!state.images || state.images.length === 0) {return;}\n\n    const svg = elements.timeline;\n    const width = svg.clientWidth || 800;\n    const height = 50;\n    const margin = { left: 30, right: 30, top: 10, bottom: 20 };\n    const chartWidth = width - margin.left - margin.right;\n\n    // Clear existing content\n    svg.innerHTML = '';\n    svg.setAttribute('viewBox', `0 0 ${width} ${height}`);\n\n    // Draw timeline line\n    const line = document.createElementNS('http://www.w3.org/2000/svg', 'line');\n    line.setAttribute('x1', margin.left);\n    line.setAttribute('y1', height / 2);\n    line.setAttribute('x2', width - margin.right);\n    line.setAttribute('y2', height / 2);\n    line.setAttribute('class', 'timeline-line');\n    svg.appendChild(line);\n\n    // Calculate positions for dots\n    const dotSpacing = chartWidth / (state.images.length - 1 || 1);\n\n    // For large datasets, we need to sample dots to avoid overcrowding\n    // Show max ~100 dots, but always include first, last, and current\n    const maxDots = 100;\n    const shouldSample = state.images.length > maxDots;\n    const sampleRate = shouldSample ? Math.ceil(state.images.length / maxDots) : 1;\n\n    // Track which indices have dots rendered (for updateTimelinePosition)\n    const renderedIndices = new Set();    // Draw dots for each frame\n    state.images.forEach((image, index) => {\n        // Always show first, last, and current frame\n        const isFirst = index === 0;\n        const isLast = index === state.images.length - 1;\n        const isCurrent = index === state.currentIndex;\n        const isSampled = index % sampleRate === 0;\n\n        if (!isFirst && !isLast && !isCurrent && !isSampled) {\n            return; // Skip this dot\n        }\n\n        renderedIndices.add(index);        const x = margin.left + (index * dotSpacing);\n        const y = height / 2;\n\n        // Check if this is the current/active frame\n        const isActive = index === state.currentIndex;\n\n        // Create dot with larger size for active frame\n        const dot = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n        dot.setAttribute('cx', x);\n        dot.setAttribute('cy', y);\n        dot.setAttribute('r', isActive ? 6 : 3);\n        dot.setAttribute('fill', isActive ? '#dc3545' : '#0d6efd');\n        dot.setAttribute('stroke', '#fff');\n        dot.setAttribute('stroke-width', isActive ? 2 : 1);\n        dot.setAttribute('class', isActive ? 'timeline-dot active' : 'timeline-dot');\n        dot.setAttribute('data-index', index);\n        dot.setAttribute('data-timestamp', image.timestamp);\n\n        // Add click handler\n        dot.addEventListener('click', () => {\n            if (state.isPlaying) {\n                stopAnimation();\n            }\n            loadImage(index);\n        });\n\n        // Add hover title\n        const title = document.createElementNS('http://www.w3.org/2000/svg', 'title');\n        title.textContent = image.timestamp;\n        dot.appendChild(title);\n\n        svg.appendChild(dot);\n\n        // Add time labels for first, middle, and last frames\n        const shouldShowLabel = index === 0 ||\n                               index === Math.floor(state.images.length / 2) ||\n                               index === state.images.length - 1;\n\n        if (shouldShowLabel) {\n            const label = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n            label.setAttribute('x', x);\n            label.setAttribute('y', height - 5);\n            label.setAttribute('text-anchor', 'middle');\n            label.setAttribute('class', 'timeline-label');\n            label.textContent = image.timestamp.substring(11, 16); // HH:mm\n            svg.appendChild(label);\n        }\n    });\n\n    // Update the active position\n    updateTimelinePosition();\n}\n\n/**\n * Update timeline to highlight current position\n */\nfunction updateTimelinePosition() {\n    if (!elements.timeline) {return;}\n\n    // Get all existing dots\n    const dots = elements.timeline.querySelectorAll('.timeline-dot');\n\n    // Check if current index has a dot\n    let currentDotExists = false;    // Update existing dots\n    dots.forEach((dot) => {\n        const dotIndex = parseInt(dot.getAttribute('data-index'));\n        const isCurrent = dotIndex === state.currentIndex;\n\n        if (isCurrent) {\n            currentDotExists = true;\n            dot.setAttribute('fill', '#dc3545');\n            dot.setAttribute('r', 6);\n            dot.setAttribute('stroke-width', 2);\n            dot.classList.add('active');\n        } else {\n            dot.setAttribute('fill', '#0d6efd');\n            dot.setAttribute('r', 3);\n            dot.setAttribute('stroke-width', 1);\n            dot.classList.remove('active');\n        }\n    });\n\n    // If current frame doesn't have a dot, add one\n    if (!currentDotExists && state.images.length > 0) {\n        const svg = elements.timeline;\n        const width = svg.clientWidth || 800;\n        const height = 50;\n        const margin = { left: 30, right: 30, top: 10, bottom: 20 };\n        const chartWidth = width - margin.left - margin.right;\n        const dotSpacing = chartWidth / (state.images.length - 1 || 1);\n\n        const x = margin.left + (state.currentIndex * dotSpacing);\n        const y = height / 2;\n\n        const dot = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n        dot.setAttribute('cx', x);\n        dot.setAttribute('cy', y);\n        dot.setAttribute('r', 6);\n        dot.setAttribute('fill', '#dc3545');\n        dot.setAttribute('stroke', '#fff');\n        dot.setAttribute('stroke-width', 2);\n        dot.setAttribute('class', 'timeline-dot active current-indicator');\n        dot.setAttribute('data-index', state.currentIndex);\n        dot.setAttribute('data-timestamp', state.images[state.currentIndex].timestamp);\n\n        // Add click handler\n        dot.addEventListener('click', () => {\n            if (state.isPlaying) {\n                stopAnimation();\n            }\n            loadImage(state.currentIndex);\n        });\n\n        // Add hover title\n        const title = document.createElementNS('http://www.w3.org/2000/svg', 'title');\n        title.textContent = state.images[state.currentIndex].timestamp;\n        dot.appendChild(title);\n\n        svg.appendChild(dot);\n    }\n}\n/**\n * Handle keyboard shortcuts\n */\nfunction handleKeyboardInput(e) {\n    // Ignore if focus is on an input or select\n    if (e.target.tagName === 'INPUT' || e.target.tagName === 'SELECT') {return;}\n\n    if (handleShiftDayNavigation(e)) {return;}\n\n    if (state.images.length === 0) {return;}\n\n    const handlers = {\n        ArrowLeft: () => handleFrameStep(-1),\n        ArrowRight: () => handleFrameStep(1),\n        Home: handleFirstFrame,\n        End: handleLastFrame,\n        ' ': () => handlePlayPause(e)\n    };\n\n    const handler = handlers[e.key];\n    if (handler) {\n        handler();\n    }\n}\n\nfunction handleShiftDayNavigation(e) {\n    if (!e.shiftKey || (e.key !== 'ArrowLeft' && e.key !== 'ArrowRight')) {\n        return false;\n    }\n\n    e.preventDefault();\n    shiftDateByDays(e.key === 'ArrowLeft' ? -1 : 1);\n    return true;\n}\n\nfunction handleFrameStep(direction) {\n    stopAnimation();\n    let nextIndex = state.currentIndex + (direction * state.skipFrames);\n    if (nextIndex < 0) {\n        nextIndex = state.loop ? state.images.length - 1 : 0;\n    }\n    if (nextIndex >= state.images.length) {\n        nextIndex = state.loop ? 0 : state.images.length - 1;\n    }\n    loadImage(nextIndex);\n}\n\nfunction handlePlayPause(event) {\n    event.preventDefault(); // Prevent scrolling\n    if (state.isPlaying) {\n        stopAnimation();\n    } else {\n        playAnimation();\n    }\n}\n\nfunction handleFirstFrame() {\n    stopAnimation();\n    loadImage(0);\n}\n\nfunction handleLastFrame() {\n    stopAnimation();\n    loadImage(state.images.length - 1);\n}\n\n/**\n * Play animation\n */\nfunction playAnimation() {\n    if (state.images.length === 0) {return;}\n\n    state.isPlaying = true;\n    elements.playBtn.disabled = true;\n    elements.stopBtn.disabled = false;\n\n    state.animationInterval = setInterval(() => {\n        let nextIndex = state.currentIndex + state.skipFrames;\n\n        if (nextIndex >= state.images.length) {\n            if (state.loop) {\n                nextIndex = 0;\n            } else {\n                stopAnimation();\n                return;\n            }\n        }\n\n        loadImage(nextIndex);\n    }, state.speed);\n}\n\n/**\n * Stop animation and stay on current frame\n */\nfunction stopAnimation() {\n    state.isPlaying = false;\n    clearInterval(state.animationInterval);\n\n    elements.playBtn.disabled = false;\n    elements.stopBtn.disabled = true;\n\n    // Stay on current frame, don't reset to first frame\n}\n\n/**\n * Reset UI to initial state\n */\nfunction resetUI() {\n    hideFromRow(\"sectorTypeRow\");\n    elements.animationCard.style.display = \"none\";\n    elements.imageWrapper.style.display = \"none\";\n    elements.noImageMessage.style.display = \"block\";\n    elements.loadingRow.style.display = \"none\";\n    elements.imagesLoadedRow.style.display = \"none\";\n\n    if (state.isPlaying) {\n        stopAnimation();\n    }\n}\n\n/**\n * Show a row and all subsequent rows\n */\nfunction showRow(rowId) {\n    document.getElementById(rowId).style.display = \"block\";\n}\n\n/**\n * Hide a row and all subsequent rows\n */\nfunction hideFromRow(rowId) {\n    const rows = [\"sectorTypeRow\", \"sectorRow\", \"plotTypeRow\", \"loadingRow\", \"imagesLoadedRow\"];\n    const startIndex = rows.indexOf(rowId);\n\n    if (startIndex !== -1) {\n        for (let i = startIndex; i < rows.length; i++) {\n            document.getElementById(rows[i]).style.display = \"none\";\n\n            // Disable and reset corresponding select\n            const selectId = rows[i].replace(\"Row\", \"Select\");\n            const select = document.getElementById(selectId);\n            if (select) {\n                select.disabled = true;\n                select.innerHTML = '<option value=\"\">Loading...</option>';\n            }\n        }\n    }\n}\n\n/**\n * Show error message\n */\nfunction showError(element, message) {\n    if (element) {\n        element.innerHTML = `<option value=\"\">Error: ${message}</option>`;\n    }\n    // Could add a toast notification here\n}\n\n/**\n * Copy shareable link to clipboard\n */\nasync function copyShareLink(event) {\n    event.preventDefault();\n    const url = window.location.href;\n\n    try {\n        await navigator.clipboard.writeText(url);\n\n        // Visual feedback\n        const originalText = elements.shareBtn.innerHTML;\n        elements.shareBtn.innerHTML = '<i class=\"bi bi-check\"></i> Copied!';\n        elements.shareBtn.classList.remove('btn-outline-success');\n        elements.shareBtn.classList.add('btn-success');\n\n        setTimeout(() => {\n            elements.shareBtn.innerHTML = originalText;\n            elements.shareBtn.classList.remove('btn-success');\n            elements.shareBtn.classList.add('btn-outline-success');\n        }, 2000);\n    } catch {\n        // Fallback for older browsers\n        const textarea = document.createElement('textarea');\n        textarea.value = url;\n        textarea.style.position = 'fixed';\n        textarea.style.opacity = '0';\n        document.body.appendChild(textarea);\n        textarea.select();\n\n        try {\n            document.execCommand('copy');\n            elements.shareBtn.innerHTML = '<i class=\"bi bi-check\"></i> Copied!';\n        } catch {\n            elements.shareBtn.innerHTML = '<i class=\"bi bi-x\"></i> Failed';\n        }\n\n        document.body.removeChild(textarea);\n\n        setTimeout(() => {\n            elements.shareBtn.innerHTML = '<i class=\"bi bi-share\"></i> Share';\n        }, 2000);\n    }\n}\n\n// Initialize when DOM is ready\nif (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n} else {\n    init();\n}\n"
  },
  {
    "path": "htdocs/archive/codsat/index.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 167);\nrequire_once \"../../../include/myview.php\";\n\n$t = new MyView();\n$t->title = \"MTArchive + College of DuPage Satellite Archive Browser\";\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/archive/codsat/index.css\"/>\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"/archive/codsat/index.module.js?v=6\" type=\"module\"></script>\nEOM;\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/archive/\">Data Archive</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">COD Satellite Browser</li>\n</ol>\n</nav>\n\n<h3>MTArchive + College of DuPage Satellite Archive Browser</h3>\n\n<p>This application allows you to browse and animate GOES satellite imagery from the\n<a href=\"https://mtarchive.geol.iastate.edu/\" target=\"_blank\">Iowa State MTArchive</a>\npowered by the <a href=\"https://weather.cod.edu/satrad/\" target=\"_blank\">College of DuPage NEXLAB</a> imagery.</p>\n\n<div class=\"alert alert-info\">\n    <strong><i class=\"bi bi-info-circle\"></i> Notice:</strong>\n    The app is meant for archive usage and not near real-time imagery.  Please\n    continue to use the excellent CoD website for real-time viewing!\n</div>\n\n<div id=\"statusIndicator\" class=\"alert alert-info mb-3\" style=\"display: none;\">\n    <small>\n        <strong>Status:</strong> <span id=\"statusMessage\"></span>\n    </small>\n</div>\n\n<div class=\"row\">\n    <div class=\"col-lg-4 col-xl-3\">\n        <div class=\"card mb-3\">\n            <div class=\"card-header\">\n                <h5 class=\"card-title mb-0\">Image Selection</h5>\n            </div>\n            <div class=\"card-body\">\n                <form id=\"selectionForm\">\n                    <div class=\"mb-3\">\n                        <label for=\"dateSelect\" class=\"form-label\">Date (UTC) [since 15 Apr 2017]:</label>\n                        <div class=\"input-group\">\n                            <button type=\"button\" class=\"btn btn-outline-secondary\" id=\"datePrevBtn\" aria-label=\"Previous day\">\n                                <i class=\"bi bi-arrow-left\" aria-hidden=\"true\"></i>\n                            </button>\n                            <input type=\"date\" class=\"form-control\" id=\"dateSelect\" min=\"2017-04-15\" required>\n                            <button type=\"button\" class=\"btn btn-outline-secondary\" id=\"dateNextBtn\" aria-label=\"Next day\">\n                                <i class=\"bi bi-arrow-right\" aria-hidden=\"true\"></i>\n                            </button>\n                        </div>\n                        <small class=\"form-text text-muted\">Select date to browse available imagery</small>\n                    </div>\n\n                    <div class=\"mb-3\" id=\"satelliteRow\" style=\"display: none;\">\n                        <label for=\"satelliteSelect\" class=\"form-label\">Satellite:</label>\n                        <select class=\"form-select\" id=\"satelliteSelect\" disabled>\n                            <option value=\"\">Loading...</option>\n                        </select>\n                        <small class=\"form-text text-muted\">Available GOES satellites for selected date</small>\n                    </div>\n\n                    <div class=\"mb-3\" id=\"sectorTypeRow\" style=\"display: none;\">\n                        <label for=\"sectorTypeSelect\" class=\"form-label\">Sector Type:</label>\n                        <select class=\"form-select\" id=\"sectorTypeSelect\" disabled>\n                            <option value=\"\">Loading...</option>\n                        </select>\n                        <small class=\"form-text text-muted\">Continental, global, mesoscale, regional, or subregional</small>\n                    </div>\n\n                    <div class=\"mb-3\" id=\"sectorRow\" style=\"display: none;\">\n                        <label for=\"sectorSelect\" class=\"form-label\">Sector:</label>\n                        <select class=\"form-select\" id=\"sectorSelect\" disabled>\n                            <option value=\"\">Loading...</option>\n                        </select>\n                        <small class=\"form-text text-muted\">Available sectors for selected type</small>\n                    </div>\n\n                    <div class=\"mb-3\" id=\"plotTypeRow\" style=\"display: none;\">\n                        <label for=\"plotTypeSelect\" class=\"form-label\">Plot Type:</label>\n                        <select class=\"form-select\" id=\"plotTypeSelect\" disabled>\n                            <option value=\"\">Loading...</option>\n                        </select>\n                        <small class=\"form-text text-muted\">Available imagery types</small>\n                    </div>\n\n                    <div class=\"mb-3\" id=\"loadingRow\" style=\"display: none;\">\n                        <div>\n                            <div class=\"spinner-border spinner-border-sm text-primary\" role=\"status\">\n                                <span class=\"visually-hidden\">Loading...</span>\n                            </div>\n                            <span class=\"ms-2\">Loading available images...</span>\n                        </div>\n                    </div>\n\n                    <div id=\"imagesLoadedRow\" style=\"display: none;\">\n                        <div class=\"alert alert-success mb-0 d-flex justify-content-between align-items-center\">\n                            <span><strong id=\"imageCount\">0</strong> images loaded and ready to animate</span>\n                            <button type=\"button\" class=\"btn btn-sm btn-outline-success\" id=\"shareBtn\" title=\"Copy shareable link\">\n                                <i class=\"bi bi-share\"></i> Share\n                            </button>\n                        </div>\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-lg-8 col-xl-9\">\n        <div class=\"card\">\n            <div class=\"card-header\">\n                <h5 class=\"card-title mb-0\">Animation Viewer</h5>\n            </div>\n            <div class=\"card-body\" id=\"imageContainer\">\n                <div class=\"text-center text-muted\" id=\"noImageMessage\">\n                    <i class=\"bi bi-image\" style=\"font-size: 4rem;\"></i>\n                    <p class=\"mt-3 fs-5\">Select options to view imagery</p>\n                </div>\n                <div id=\"imageWrapper\" style=\"display: none;\">\n                    <img id=\"satelliteImage\" class=\"img-fluid\" alt=\"Satellite imagery\">\n                    <div class=\"mt-3 mb-2 d-flex justify-content-between align-items-center\">\n                        <div>\n                            <small class=\"text-muted\">\n                                Frame <span id=\"currentFrame\">0</span> of <span id=\"totalFrames\">0</span>\n                                <br>\n                                Time: <span id=\"currentTime\">--</span>\n                            </small>\n                        </div>\n                    </div>\n                    <div class=\"timeline-container\">\n                        <svg id=\"timeline\" width=\"100%\" height=\"50\"></svg>\n                    </div>\n                </div>\n            </div>\n            <div class=\"card-footer bg-light\" id=\"animationCard\" style=\"display: none;\">\n                <div class=\"d-flex justify-content-center gap-2 mb-3\">\n                    <button class=\"btn btn-primary\" id=\"playBtn\">\n                        <i class=\"bi bi-play-fill\"></i> Play\n                    </button>\n                    <button class=\"btn btn-secondary\" id=\"stopBtn\" disabled>\n                        <i class=\"bi bi-stop-fill\"></i> Stop\n                    </button>\n                </div>\n\n                <div class=\"row mb-2\">\n                    <label for=\"speedSlider\" class=\"col-sm-2 col-form-label col-form-label-sm\">Speed:</label>\n                    <div class=\"col-sm-10\">\n                        <input type=\"range\" class=\"form-range\" id=\"speedSlider\" min=\"100\" max=\"2000\" step=\"100\" value=\"500\">\n                        <small class=\"form-text text-muted\">Delay between frames: <span id=\"speedValue\">500</span>ms</small>\n                    </div>\n                </div>\n\n                <div class=\"row mb-2\">\n                    <label for=\"skipSlider\" class=\"col-sm-2 col-form-label col-form-label-sm\">Skip:</label>\n                    <div class=\"col-sm-10\">\n                        <input type=\"range\" class=\"form-range\" id=\"skipSlider\" min=\"1\" max=\"20\" step=\"1\" value=\"1\">\n                        <small class=\"form-text text-muted\">Play every <span id=\"skipValue\">1</span> frame(s)</small>\n                    </div>\n                </div>\n\n                <div class=\"row\">\n                    <div class=\"col-sm-10 offset-sm-2\">\n                        <div class=\"form-check\">\n                            <input class=\"form-check-input\" type=\"checkbox\" id=\"loopCheck\" checked>\n                            <label class=\"form-check-label\" for=\"loopCheck\">\n                                Loop animation\n                            </label>\n                        </div>\n                        <small class=\"form-text text-muted mt-2 d-block\">\n                            Shortcuts: Left/Right = frame, Shift+Left/Right = day, Space = play/pause, Home/End = first/last\n                        </small>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\nEOM;\n$t->render(\"full.phtml\");\n"
  },
  {
    "path": "htdocs/archive/index.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/generators.php\";\n\ndefine(\"IEM_APPID\", 19);\n$t = new MyView();\n$t->iem_resource = \"ARCHIVE\";\n$t->title = \"Archived Data Resources\";\n\n$dllist = $get_iemapps_tags(\"download\");\n$d = date(\"Y/m/d\");\n$t->content = <<<EOM\n<div class=\"mb-4\">\n    <h3>Archived Data & Plots</h3>\n\n    <p>This page contains a listing of archive resources. A brief\n    description of each link is included to aid your search. If you are still\n    having difficulty finding something, please\n    <a href=\"/info/contacts.php\">let us know</a>.</p>\n</div>\n\n<div class=\"row g-4\">\n    <div class=\"col-lg-6\">\n\n        <div class=\"card mb-4\">\n            <div class=\"card-header\">\n                <h4 class=\"card-title mb-0\">Multi-RADAR Multi-Sensor (MRMS) Archiving</h4>\n            </div>\n            <div class=\"card-body\">\n            See <a href=\"/archive/mrms.php\">IEM MRMS archive page</a>.\n            </div>\n        </div>\n\n        <div class=\"card mb-4\">\n            <div class=\"card-header\">\n                <h4 class=\"card-title mb-0\">NWS Watch/Warnings/Advisories</h4>\n            </div>\n            <div class=\"card-body\">\n                <ul>\n                 <li><a href=\"/request/gis/watchwarn.phtml\">Download Shapefiles</a>\n                  <br />Download shapefiles of warning geometries and metadata.</li>\n                 <li><a href=\"/vtec/search.php\">Search by County/Zone</a>\n                  <br />Find archived warnings by searching for a county or zone.</li>\n                 <li><a href=\"/vtec/\">VTEC Browser</a>\n                  <br />Interactively navigate our archive of warnings.</li>\n                </ul>\n            </div>\n        </div>\n\n        <div class=\"card mb-4\">\n            <div class=\"card-header\">\n                <h4 class=\"card-title mb-0\">RADAR Data</h4>\n            </div>\n            <div class=\"card-body\">\n                <ul>\n                    <li><a href=\"https://s3.amazonaws.com/unidata-nexrad-level2/index.html\">Amazon S3 NEXRAD II Archive</a>\n                    <br />Your first stop if you are looking for archived Level II files!</li>\n\n                    <li><a href=\"/archive/nexrad/\">NIDS NEXRAD Data</a>\n                     <br>NEXRAD data from the seven sites (DMX,DVN,OAX,FSD,ARX,MPX,EAX) with\n                    Iowa coverage. Since mid April 2002, all NIDS products are archived. Before\n                    then, only base reflectivity was saved.</li>\n\n                    <li><a href=\"https://mesonet-nexrad.agron.iastate.edu/level2/raw/\">IEM 2 day Level II Archive</a>\n                     <br />The IEM maintains an archive of Level II data for roughly the past two days.</li>\n\n                     <li><a href=\"/archive/data/\">GIS NEXRAD Composites</a>\n                      <br />Composites of NEXRAD base reflectivity. The raw files are found\n                       in the general IEM archive in the sub-directory called 'GIS/uscomp/'.</li>\n                </ul>\n            </div>\n        </div>\n\n        <div class=\"card mb-4\">\n            <div class=\"card-header\">\n                <h4 class=\"card-title mb-0\">Satellite</h4>\n            </div>\n            <div class=\"card-body\">\n                <ul>\n                 <li><a href=\"http://www.class.noaa.gov/\">NOAA Satellite and Information Service</a>\n                 <br />A wonderful site to download historical satellite data.</li>\n                 <li><a href=\"http://stormtrack.nssl.noaa.gov/\">NSSL Storm Tracker</a>\n                 <br />Current and archived satellite imagery along with some derived products.</li>\n                </ul>\n            </div>\n        </div>\n\n        <div class=\"card mb-4\">\n            <div class=\"card-header\">\n                <h4 class=\"card-title mb-0\">NWS Text Products</h4>\n            </div>\n            <div class=\"card-body\">\n                <p>Please visit this <a href=\"/nws/text.php\">dedicated page</a> for information\n                about the IEM's text product archives.</p>\n            </div>\n        </div>\n\n    </div>\n    <div class=\"col-lg-6\">\n\n        <div class=\"card mb-4\">\n            <div class=\"card-header\">\n                <h4 class=\"card-title mb-0\">Raw Data</h4>\n            </div>\n            <div class=\"card-body\">\n                <p><a href=\"schema.php\">Directory schema</a> details for the per-UTC date\n                <a href=\"/archive/data/\">IEM Archive</a> and <a href=\"https://mtarchive.geol.iastate.edu\">MTArchive</a>.</p>\n\n                <ul>\n                 <li>BUFKIT archives\n                  <br /><a href=\"/archive/data/\">Iowa Only</a> The general IEM data archive\n                  contains a sub-directory called 'bufkit'.\n                   This directory contains model point soundings for locations near Iowa. The\n                   archive started 25 January 2006 - 27 March 2015.\n                  <br /><a href=\"https://mtarchive.geol.iastate.edu/\">Mtarchive BUFKIT Archive</a>\n                  This archive contains data for many more sites and models.\n                  <br /><a href=\"/api/1/docs#/default/service_nws_bufkit__fmt__get\">IEM API BUFKIT Webservice</a>\n                  allows for nearest in space/time searches, atomic data download and more.\n                  </li>\n\n                 <li><a href=\"https://mtarchive.geol.iastate.edu/\">GEMPAK data archive</a>\n                  <br />Archive of gempak products taken from the UNIDATA NOAAPORT feed. This\n                   archive dates back to 2001 and for some dates even further.</li>\n\n                 <li><a href=\"http://home.chpc.utah.edu/~u0553130/Brian_Blaylock/hrrr_FAQ.html\">HRRR Model Archive</a>\n                 <br />Archive maintained by University of Utah of the HRRR model.</li>\n\n                 <li><a href=\"/archive/raw/\">IEM Network Data</a>\n                  <br />IEM data in its original unprocessed form. ASOS/AWOS METAR observation,\n                   RWIS comma-deliminated data, schoolnet csv data, SCAN site format and COOP\n                   observations</li>\n\n                 <li><a href=\"http://lead.unidata.ucar.edu:8080/thredds/catalog.html\">Unidata IDD 6 month archive</a>\n                  <br />Archive of raw data provided by Unidata for the past 6 months!</li>\n                 <li><a href=\"http://nomads.ncdc.noaa.gov/data/\">NCDC NOMADS Big Archive!!</a>\n                  <br />Lots of raw model data and other goodies, a definite must-visit.</li>\n                </ul>\n            </div>\n        </div>\n\n        <div class=\"card mb-4\">\n            <div class=\"card-header\">\n                <h4 class=\"card-title mb-0\">Miscellaneous Archives</h4>\n            </div>\n            <div class=\"card-body\">\n                <ul>\n                    <li><a href=\"/timemachine/\">Archived IEM Product Browser</a>\n                      <br />This \"time machine\" interface allows for quick browsing of IEM Products.</li>\n\n                    <li><a href=\"http://archive.atmos.colostate.edu/\">NWS DIFAX Archive (2000-)</a>\n                     <br />Excellent archive of the NWS DIFAX products.</li>\n\n                    <li><a href=\"https://www.weather.gov/unr/uac\">Precipitable Water Climatologies</a>\n                     <br />Fascinating month-by-month plots of PWAT climatologies for the RAOB sites in the CONUS</li>\n\n                    <li><a href=\"http://www2.mmm.ucar.edu/imagearchive/\">UCAR plot archive</a>\n                      <br />Assorted RADAR, satellite, and model plots back to 1998.</li>\n\n                    <li><a href=\"/archive/data/\">IEM Generated Plots</a>\n                      <br>Images and data products mostly displayed in real time on the current\n                    data page. Iowa Mesonet plots, hourly precip plots, mesonet stats and\n                    COOP precip plots are examples.</li>\n\n                    <li><a href=\"/archive/gempak/\">IEM Data in GEMPAK Format</a>\n                      <br />IEM surface data in GEMPAK format. Data files exist with different\n                    combinations of IEM networks.</li>\n\n                    <li><a href=\"http://www.mdl.nws.noaa.gov/~mos/archives/\">Model MOS Archive</a>\n                    <br>NWS archive of model output statistics (MOS)</li>\n\n                    <li><a href=\"/mos/\">IEM's Model MOS Archive</a>\n                    <br>IEM's archive of model output statistics (MOS)</li>\n\n                    <li><a href=\"http://www.ncdc.noaa.gov/swdi\">NCDC Severe Weather Data Inventory</a>\n                    <br />Extremely fancy archive of various datasets dealing with severe\n                    weather.</li>\n\n                    <li><a href=\"http://www.ncdc.noaa.gov/ussc/USSCAppController?action=map\">NCDC Snow Climatologies</a>\n                    <br />Lots of great statistics on snowfall and snow depth.</li>\n\n                    <li><a href=\"http://www.pals.iastate.edu/archivewx/data/\">PALS WX Image Archive</a><br />The PALS website generates hourly plots of US weather. Of interest are\n                    archives of RUC, ETA, and AVN model plots. National radar summaries,\n                    surface plots and other plots.</li>\n\n                    <li><a href=\"ftp://ftp.wcc.nrcs.usda.gov/support/climate/wind_daily\">NRCS wind climatologies (1961-1990)</a></li>\n\n                    <li><a href=\"http://climate.engin.umich.edu/tornadopaths/\">Historical Tornado Tracks</a></li>\n\n                    <li><a href=\"http://ida.water.usgs.gov/ida/\">USGS Instantaneous Data Archive</a>\n                    <br />Goldmine of historical USGS river gauge data.</li>\n                </ul>\n            </div>\n        </div>\n\n        <div class=\"card mb-4\">\n            <div class=\"card-header\">\n                <h4 class=\"card-title mb-0\">US Daily Weather Maps</h4>\n            </div>\n            <div class=\"card-body\">\n                <ul>\n                 <li><a href=\"https://www.wpc.ncep.noaa.gov/dailywxmap/pdffiles.html\">Recent maps from NCEP</a></li>\n                 <li><a href=\"https://www.wpc.ncep.noaa.gov/dailywxmap/index.html\">Daily maps</a></li>\n                 <li><a href=\"http://docs.lib.noaa.gov/rescue/dwm/data_rescue_daily_weather_maps.html\">Maps from 1872 to 2002</a></li>\n                 <li><a href=\"http://www7.ncdc.noaa.gov/IPS/\">NCDC Image and Publications System</a></li>\n                </ul>\n            </div>\n        </div>\n\n        <div class=\"card mb-4\">\n            <div class=\"card-header\">\n                <h4 class=\"card-title mb-0\">Data Download Forms</h4>\n            </div>\n            <div class=\"card-body\">\n                {$dllist}\n            </div>\n        </div>\n\n    </div>\n</div>\n\n<div class=\"alert alert-info mt-4\">\n    <p class=\"mb-0\">Are we forgetting something? Please let us know of other\n    archives that are available for Iowa data.</p>\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/archive/mrms.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"IEM Provided MRMS Archives\";\n\n$d = date(\"Y/m/d\");\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/archive/\">Archive</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">MRMS Archives</li>\n  </ol>\n</nav>\n\n<h3>IEM Provided MRMS Archives</h3>\n\n<h4>Archive Changelog</h4>\n<ul>\n  <li><strong>30 Sep 2025</strong>: Document the \"Path Forward\" for the MRMS hourly zip\n  files.</li>\n  <li><strong>24 Sep 2025</strong>: Attempting to consolidate documentation on this\n  page and start to document an upcoming archive data removal of hourly zip files\n  per Iowa State cloud storage changes.</li>\n</ul>\n\n<div class=\"row g-4\">\n  <div class=\"col-md-12\">\n    <div class=\"card h-100\">\n      <div class=\"card-header\">\n        <h5 class=\"card-title mb-0\"><i class=\"bi bi-arrow-right-circle\"></i> \"Path Forward\" for MRMS hourly zip archive</h5>\n      </div>\n      <div class=\"card-body\">\n\n<p class=\"card-text\">The IEM has been providing an\narchive of <a href=\"https://mrms.agron.iastate.edu\">hourly MRMS zip files</a> since September\n2019.  This archive consisted of some modest local storage caching recent data\nand then the rest being made available via cloud storage.  Due to a quota change\nwith the cloud storage, this archive is no longer viable in its entirety. So here\nis a listing of the path forward for this archive.</p>\n\n<p class=\"card-text\"><strong>27 Sep 2019 - 30 Oct 2020</strong>:  This portion of the archive is not\navailable via the NOAA AWS OpenData MRMS archive.  The data also represents a period\nprior to a <a\nhref=\"https://mesonet.agron.iastate.edu/wx/afos/p.php?pil=PNSWSH&e=202009101318\">major MRMS upgrade</a>\nthat happened, which makes it not as seemlessly comparable with MRMS data after.  NOAA\nmade a decision to not backfill this data to AWS OpenData for this reason.  There\nis space locally to continue to host this data and it will be kept around until\nperhaps better things are made available from NOAA...</p>\n\n<p class=\"card-text\"><strong>Nov 2020 - Present</strong>: This portion of the archive should be\navailable via the <a href=\"https://registry.opendata.aws/noaa-mrms-pds/\">NOAA AWS\nOpenData MRMS archive</a>.  There is limited utility for it to be kept around, but\nsome folks may have a usage for the convience factor of having everything zipped up\nin one file.  So going forward, a very limited cache will be kept around, which should\nbe a month or two of data.  Presently, a cross checking process is running to ensure\nthe AWS archive contains everything found within this archive.  So you will notice\nfiles start being removed once the cross check completes.</p>\n\n</div></div></div>\n\n\n<div class=\"row g-4\">\n  <div class=\"col-md-6\">\n    <div class=\"card h-100\">\n      <div class=\"card-header\">\n        <h5 class=\"card-title mb-0\"><i class=\"bi bi-info-circle\"></i> MRMS Project Overview</h5>\n      </div>\n      <div class=\"card-body\">\n        <p class=\"card-text\">The <a href=\"https://www.nssl.noaa.gov/projects/mrms/\">MRMS Project</a> is\n        an important part of the IEM's data curation effort. It directly drives the\n        rainfall product within the <a href=\"https://dailyerosion.org\">Daily Erosion Project</a>\n        and is used in a variety of other applications. The IEM has been archiving and\n        generating products from MRMS since the early days running at NSSL prior to being\n        operationalized by the NWS NCEP.</p>\n\n<p class=\"card-text\">The NSSL MRMS website has a handy\n<a href=\"https://www.nssl.noaa.gov/projects/mrms/operational/tables.php\">Grib Table Listing</a>,\nwhich helps with knowing what is available and grib file units.</p>\n        </div>\n    </div>\n  </div>\n\n  <div class=\"col-md-6\">\n    <div class=\"card h-100\">\n      <div class=\"card-header\">\n        <h5 class=\"card-title mb-0\"><i class=\"bi bi-cloud\"></i> AWS OpenData Archive</h5>\n      </div>\n      <div class=\"card-body\">\n        <p class=\"card-text\">Starting in October 2020, MRMS started to be archived at\n        <a href=\"https://registry.opendata.aws/noaa-mrms-pds/\">AWS OpenData</a>, which\n        obsoleted much of the utility of IEM's raw grib product archives. However, this\n        archive does not include what the IEM archived prior to Oct 2020 back to about\n        Sep 2019.</p>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"col-md-6\">\n    <div class=\"card h-100\">\n      <div class=\"card-header\">\n        <h5 class=\"card-title mb-0\"><i class=\"bi bi-server\"></i> MTArchive Site</h5>\n      </div>\n      <div class=\"card-body\">\n        <p class=\"card-text\">To support the Daily Erosion Project and other applications, the IEM\n        archived a select number of MRMS grib fields at per UTC date trees on the\n        <a href=\"https://mtarchive.geol.iastate.edu/{$d}/mrms/ncep/\">MTArchive site</a>\n        , which contains products back to October 2014 (NCEP implementation) and also\n        a \"Tile2\" binary file (which covered Iowa) from the NSSL days.</p>\n\n        <p class=\"card-text\">The MTArchive site also contains an <a href=\"https://mtarchive.geol.iastate.edu/2001/11/01/mrms/reanalysis/\">archive example</a>\n        of the <a href=\"https://osf.io/9gzp2/\">MRMS ReAnalysis</a>, but a more useful\n        copy exists on <a href=\"https://registry.opendata.aws/noaa-oar-myrorss-pds/\">AWS OpenData</a>.</p>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"col-md-6\">\n    <div class=\"card h-100\">\n      <div class=\"card-header\">\n        <h5 class=\"card-title mb-0\"><i class=\"bi bi-clock\"></i> Real-time Files</h5>\n      </div>\n      <div class=\"card-body\">\n        <p class=\"card-text\">The IEM also has a cache of near realtime grib files on\n        <a href=\"http://metfs1.agron.iastate.edu/data/mrms/\">metfs1 service</a>,\n        but its utility is not as useful as what you can find at the\n        official <a href=\"https://mrms.ncep.noaa.gov/data/\">MRMS Data Website</a>.</p>\n      </div>\n    </div>\n  </div>\n</div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/archive/raob/index.module.js",
    "content": "\n/**\n * Initialize datetime input fields with appropriate defaults and constraints\n */\nfunction initializeDateTimeInputs() {\n    // Find all elements that were previously using flatpickr\n    const dateInputs = document.querySelectorAll('.fdp');\n    \n    // Set minimum date to 1947-02-01 (consistent with original flatpickr config)\n    const minDateTime = '1947-02-01T00:00';\n    \n    dateInputs.forEach(input => {\n        // Convert to datetime-local input type for native browser support\n        input.type = 'datetime-local';\n        input.min = minDateTime;\n        \n        // Set default value if empty\n        if (!input.value) {\n            // Set default to current date/time for better UX\n            const now = new Date();\n            const year = now.getFullYear();\n            const month = String(now.getMonth() + 1).padStart(2, '0');\n            const day = String(now.getDate()).padStart(2, '0');\n            const hours = String(now.getHours()).padStart(2, '0');\n            const minutes = String(now.getMinutes()).padStart(2, '0');\n            \n            input.value = `${year}-${month}-${day}T${hours}:${minutes}`;\n        }\n    });\n}\n\n/**\n * Initialize the RAOB archive page functionality\n */\nfunction init() {\n    initializeDateTimeInputs();\n}\n\n// Initialize when DOM is loaded\nif (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", init);\n} else {\n    init();\n}\n\nexport { init, initializeDateTimeInputs };"
  },
  {
    "path": "htdocs/archive/raob/index.phtml",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/myview.php\";\ndefine(\"IEM_APPID\", 146);\n$t = new MyView();\n$t->iem_resource = \"RAOB\";\n$t->jsextra=<<<EOM\n<script type=\"module\" src=\"index.module.js\"></script>\nEOM;\n$t->title = \"Rawinsonde Data Archive\";\n$nselect = networkSelect(\"RAOB\", \"OAX\");\n$t->content = <<<EOM\n<h3>Rawinsonde (RAOB) Data Archive</h3>\n\n<p>For many moons, the IEM archived the soundings provided by the now defunct\nNOAA rucsoundings website. This website was shutdown during September 2024, so\nthe IEM started to ingest what was provided by the\n<a href=\"https://www.spc.noaa.gov/exper/soundings/\">Storm Prediction Center</a>\nwebsite. This source was found to be missing many sounding locations that the\nIEM previous archived. So the IEM started to ingest what is provided by\n<a href=\"https://www.ncei.noaa.gov/data/integrated-global-radiosonde-archive/\">\nNCEI Integrated Global Radiosonde Archive</a>, but this archive is not in real-time.\nSo as of March 2025, this website contains near real-time data from SPC and is\nbackfilled eventually with data from the NCEI archive.</p>\n\n<p>Data for the United States and Canada is available. This\n data are vertical profiles of the atmosphere taken from weather balloons released\n twice daily.</p>\n\n<div class=\"card mb-4\">\n    <div class=\"card-header\">\n        <h4 class=\"card-title mb-0\">Available Tools</h4>\n    </div>\n    <div class=\"card-body\">\n        <div class=\"row\">\n            <div class=\"col-md-6\">\n                <ul>\n                    <li><a href=\"list.phtml\">List Sounding Parameters per Year</a></li>\n                    <li><a href=\"/plotting/auto/?q=150\">View Sounding Percentiles</a> (Autoplot 150)</li>\n                    <li><a href=\"/plotting/auto/?q=198\">Sounding Monthly Min/Max values</a> (Autoplot 198)</li>\n                </ul>\n            </div>\n            <div class=\"col-md-6\">\n                <ul>\n                    <li><a href=\"/plotting/auto/?q=212\">Sounding Yearly Timeseries</a> (Autoplot 212)</li>\n                    <li><a href=\"https://www.spc.noaa.gov/exper/soundingclimo/\">SPC Sounding Climatology Page</a></li>\n                </ul>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"card mb-4\">\n    <div class=\"card-header\">\n        <h4 class=\"card-title mb-0\">Download Data</h4>\n    </div>\n    <div class=\"card-body\">\n        <p>This form provides a simple comma delimited file of RAOB data, the columns\n         should be self-explanatory except the 'levelcode' column. Those values \n         provide metadata on that level of data. The start time is inclusive and\n         end time is exclusive. Special soundings should be in this archive as well.</p>\n\n        <div class=\"row mb-4\">\n            <div class=\"col-md-6\">\n                <div class=\"card h-100\">\n                    <div class=\"card-header\">\n                        <h5 class=\"card-title mb-0\">Level Codes</h5>\n                    </div>\n                    <div class=\"card-body\">\n                        <ul class=\"mb-0\">\n                           <li>4 = mandatory level</li>\n                           <li>5 = significant level</li>\n                           <li>6 = wind level (PPBB)</li> \n                           <li>7 = tropopause level</li>\n                           <li>8 = maximum wind level</li>\n                           <li>9 = surface level</li>\n                        </ul>\n                    </div>\n                </div>\n            </div>\n            <div class=\"col-md-6\">\n                <div class=\"card h-100\">\n                    <div class=\"card-header\">\n                        <h5 class=\"card-title mb-0\">Output Datafile Columns</h5>\n                    </div>\n                    <div class=\"card-body\">\n                        <pre class=\"mb-0\">station      3 or 4 character station identifier\nvalidUTC     RAOB Launch Cycle Time in UTC\nlevelcode    Level Code for this observation, not always available\npressure_mb  Pressure of data in millibar\nheight_m     Height above sea level m\ntmpc         Air Temperature in C\ndwpc         Dew Point Temperature in C\ndrct         Wind Direction in deg from North\nspeed_kts    Wind Speed in knots\nbearing      Balloon bearing in degree, not always available\nrange_sm     Ballon range from launch in statute miles, not always available</pre>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"card\">\n            <div class=\"card-header\">\n                <h5 class=\"card-title mb-0\">Data Request Form</h5>\n            </div>\n            <div class=\"card-body\">\n                <form method=\"GET\" action=\"/cgi-bin/request/raob.py\">\n                    <div class=\"row g-3 mb-3\">\n                        <div class=\"col-md-6\">\n                            <label class=\"form-label\">Select Site:</label>\n                            {$nselect}\n                        </div>\n                        <div class=\"col-md-6\">\n                            <div class=\"form-check\">\n                                <input type=\"checkbox\" name=\"dl\" id=\"dd\" class=\"form-check-input\">\n                                <label for=\"dd\" class=\"form-check-label\">Download to disk</label>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"row g-3 mb-3\">\n                        <div class=\"col-md-6\">\n                            <label for=\"sts\" class=\"form-label\">Start UTC Time:</label>\n                            <input type=\"datetime-local\" id=\"sts\" name=\"sts\" class=\"form-control\" \n                                   title=\"Select start date and time in UTC\"/>\n                        </div>\n                        <div class=\"col-md-6\">\n                            <label for=\"ets\" class=\"form-label\">End UTC Time:</label>\n                            <input type=\"datetime-local\" id=\"ets\" name=\"ets\" class=\"form-control\"\n                                   title=\"Select end date and time in UTC\"/>\n                        </div>\n                    </div>\n                    <div class=\"row\">\n                        <div class=\"col-12\">\n                            <button type=\"submit\" class=\"btn btn-primary btn-lg\">\n                                <i class=\"bi bi-download\"></i> Get Data\n                            </button>\n                        </div>\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"card\">\n    <div class=\"card-header\">\n        <h4 class=\"card-title mb-0\">JSON(P) Webservice</h4>\n    </div>\n    <div class=\"card-body\">\n        <p class=\"mb-0\">A JSON webservice exists for more programatic access, more information is\n        <a href=\"/json/raob.py?help\">here</a>.</p>\n    </div>\n</div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/archive/raob/list.module.js",
    "content": "/* RAOB List - Tabulator + Vanilla JS Implementation */\nimport {TabulatorFull as Tabulator} from 'https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator_esm.min.mjs';\nimport { requireElement } from '/js/iemjs/domUtils.js';\n\nlet station = '_OAX';\nlet year = new Date().getFullYear();\nlet table = null;\nlet sortby = \"-\";  // Sentinel value for no sort\nlet asc = \"desc\";\nlet filter_year = true;  // Not implemented as too much data for JSON\n\nfunction rnd(val, precision) {\n    return (val === null) ? \"\" : val.toFixed(precision);\n}\n\n// Column definitions for Tabulator\nconst columns = [\n    {title: \"ID\", field: \"station\", width: 80, frozen: true},\n    {title: \"Valid\", field: \"valid\", width: 120, frozen: true},\n    {title: \"SBCAPE J/kg\", field: \"sbcape_jkg\", width: 110, formatter: (cell) => rnd(cell.getValue(), 0), sorter: \"number\"},\n    {title: \"MUCAPE J/kg\", field: \"mucape_jkg\", width: 110, formatter: (cell) => rnd(cell.getValue(), 0), sorter: \"number\"},\n    {title: \"SBCIN J/kg\", field: \"sbcin_jkg\", width: 110, formatter: (cell) => rnd(cell.getValue(), 0), sorter: \"number\"},\n    {title: \"MUCIN J/kg\", field: \"mucin_jkg\", width: 110, formatter: (cell) => rnd(cell.getValue(), 0), sorter: \"number\"},\n    {title: \"PrecipWater mm\", field: \"pwater_mm\", width: 120, formatter: (cell) => rnd(cell.getValue(), 1), sorter: \"number\"},\n    {title: \"LCL m\", field: \"lcl_agl_m\", width: 80, formatter: (cell) => rnd(cell.getValue(), 0), sorter: \"number\"},\n    {title: \"LFC m\", field: \"lfc_agl_m\", width: 80, formatter: (cell) => rnd(cell.getValue(), 0), sorter: \"number\"},\n    {title: \"EL m\", field: \"el_agl_m\", width: 80, formatter: (cell) => rnd(cell.getValue(), 0), sorter: \"number\"},\n    {title: \"Total Totals\", field: \"total_totals\", width: 100, formatter: (cell) => rnd(cell.getValue(), 1), sorter: \"number\"},\n    {title: \"SWEAT\", field: \"sweat_index\", width: 80, formatter: (cell) => rnd(cell.getValue(), 1), sorter: \"number\"},\n    {title: \"SRH 0-3 km m²/s²\", field: \"srh_sfc_3km_total\", width: 130, formatter: (cell) => rnd(cell.getValue(), 0), sorter: \"number\"},\n    {title: \"SRH 0-1 km m²/s²\", field: \"srh_sfc_1km_total\", width: 130, formatter: (cell) => rnd(cell.getValue(), 0), sorter: \"number\"},\n    {title: \"SHR 0-6 km m/s\", field: \"shear_sfc_6km_smps\", width: 120, formatter: (cell) => rnd(cell.getValue(), 1), sorter: \"number\"}\n];\n\nfunction initializeTable() {\n    table = new Tabulator(\"#datatable\", {\n        height: \"80vh\",\n        layout: \"fitColumns\",\n        responsiveLayout: \"hide\",\n        responsiveLayoutCollapseStartOpen: false,\n        columnDefaults: {\n            tooltip: true,\n        },\n        columns,\n        placeholder: \"No data available\",\n        pagination: \"local\",\n        paginationSize: 50,\n        paginationSizeSelector: [25, 50, 100, 200, true],\n        movableColumns: true,\n        resizableRows: false,\n        selectable: false,\n        data: [],\n        footerElement: '<div class=\"tabulator-footer\"><span class=\"tabulator-info\">Viewing: Table of Sounding Parameters</span></div>'\n    });\n}\n\nfunction buildServiceUrl() {\n    const ascbool = (asc === \"asc\") ? \"true\" : \"false\";\n    let service = `/api/1/raobs_by_year.json?station=${station}&asc=${ascbool}`;\n\n    if (sortby !== \"-\") {\n        service += `&sortby=${sortby}`;\n    } else if (filter_year) {\n        service += `&year=${year}`;\n    }\n\n    return service;\n}\n\nfunction buildCaption() {\n    let caption = `RAOB Data for ${station}`;\n\n    if (sortby !== \"-\") {\n        caption = `${caption} sorted by ${sortby} ${asc} (Top 100)`;\n    } else if (filter_year) {\n        caption = `${caption} for ${year}`;\n    }\n\n    return caption;\n}\n\nfunction updateUrlParameters() {\n    const url = new URL(window.location);\n    url.searchParams.set('station', station);\n\n    if (sortby !== \"-\") {\n        url.searchParams.set('sortby', sortby);\n        url.searchParams.set('asc', asc);\n        url.searchParams.delete('year');\n    } else if (filter_year) {\n        url.searchParams.set('year', year);\n        url.searchParams.set('asc', asc);\n        url.searchParams.delete('sortby');\n    }\n\n    window.history.replaceState({}, '', url);\n}\n\nfunction updateFooterCaption(caption, suffix = '') {\n    const footerInfo = document.querySelector('.tabulator-info');\n    if (footerInfo) {\n        footerInfo.textContent = `${caption}${suffix}`;\n    }\n}\n\nfunction handleFetchSuccess(data, caption) {\n    table.setData(data.data);\n    updateFooterCaption(`Viewing: ${caption}`, ` (${data.data.length} records)`);\n    \n    if (data.data.length === 0) {\n        table.setData([]);\n    }\n}\n\nfunction handleFetchError(error) {\n    updateFooterCaption(`Error loading data ${error.message}`);\n}\n\nasync function fetchData() {\n    const service = buildServiceUrl();\n    const caption = buildCaption();\n    \n    updateUrlParameters();\n    updateFooterCaption(`Loading: ${caption}...`);\n    \n    try {\n        const response = await fetch(service);\n        if (!response.ok) {\n            throw new Error(`HTTP error! status: ${response.status}`);\n        }\n        const data = await response.json();\n        handleFetchSuccess(data, caption);\n    } catch (error) {\n        handleFetchError(error);\n    }\n}\n\nfunction setupEventListeners() {\n    // Station select change\n    const stationSelect = document.querySelector(\"select[name='station']\");\n    if (stationSelect) {\n        stationSelect.addEventListener('change', (e) => {\n            station = e.target.value;\n            fetchData();\n        });\n    }\n    \n    // Year select change\n    const yearSelect = document.querySelector(\"select[name='year']\");\n    if (yearSelect) {\n        yearSelect.addEventListener('change', (e) => {\n            const sortbySelect = document.querySelector(\"select[name='sortby']\");\n            if (sortbySelect) {\n                sortbySelect.value = \"-\";\n            }\n            sortby = \"-\";\n            year = e.target.value;\n            fetchData();\n        });\n    }\n    \n    // Sort by select change\n    const sortbySelect = document.querySelector(\"select[name='sortby']\");\n    if (sortbySelect) {\n        sortbySelect.addEventListener('change', (e) => {\n            sortby = e.target.value;\n            if (sortby !== \"-\") {\n                fetchData();\n            }\n        });\n    }\n    \n    // Ascending/Descending select change\n    const ascSelect = document.querySelector(\"select[name='asc']\");\n    if (ascSelect) {\n        ascSelect.addEventListener('change', (e) => {\n            asc = e.target.value;\n            fetchData();\n        });\n    }\n    \n    // Download button\n    const downloadBtn = requireElement('download');\n    downloadBtn.addEventListener('click', () => {\n        const service = `/api/1/raobs_by_year.txt?station=${encodeURIComponent(station)}`;\n        window.location.href = service;\n    });\n}\n\nfunction setStationFromToken(token) {\n    station = token;\n    const stationSelect = document.querySelector(\"select[name='station']\");\n    if (stationSelect) {\n        stationSelect.value = station;\n    }\n}\n\nfunction setYearFromToken(token) {\n    year = token;\n    const yearSelect = document.querySelector(\"select[name='year']\");\n    if (yearSelect) {\n        yearSelect.value = year;\n    }\n}\n\nfunction setSortbyFromToken(token) {\n    sortby = token;\n    const sortbySelect = document.querySelector(\"select[name='sortby']\");\n    if (sortbySelect) {\n        sortbySelect.value = sortby;\n    }\n    filter_year = false;\n}\n\nfunction setAscFromToken(token) {\n    asc = token;\n    const ascSelect = document.querySelector(\"select[name='asc']\");\n    if (ascSelect) {\n        ascSelect.value = asc;\n    }\n}\n\nfunction handleSecondToken(token) {\n    const yearRegex = /^\\d{4}$/;\n    if (yearRegex.test(token)) {\n        setYearFromToken(token);\n    } else {\n        setSortbyFromToken(token);\n    }\n}\n\nfunction parseLegacyHashFormat(hash) {\n    const tokens = hash.split(\":\");\n    if (tokens.length === 0) {return false;}\n    \n    // Set station\n    setStationFromToken(tokens[0]);\n    filter_year = true;\n    \n    // Handle second token (year or sortby)\n    if (tokens.length > 1) {\n        handleSecondToken(tokens[1]);\n    }\n    \n    // Handle third token (asc)\n    if (tokens.length > 2) {\n        setAscFromToken(tokens[2]);\n    }\n    \n    return true;\n}\n\nfunction convertLegacyHashToUrlParams() {\n    const url = new URL(window.location);\n    url.hash = '';\n    url.searchParams.set('station', station);\n    \n    if (sortby !== \"-\") {\n        url.searchParams.set('sortby', sortby);\n        url.searchParams.set('asc', asc);\n    } else if (filter_year) {\n        url.searchParams.set('year', year);\n        url.searchParams.set('asc', asc);\n    }\n    \n    window.history.replaceState({}, '', url);\n}\n\nfunction parseStationParam(urlParams) {\n    if (urlParams.has('station')) {\n        setStationFromToken(urlParams.get('station'));\n    }\n}\n\nfunction parseYearParam(urlParams) {\n    if (urlParams.has('year')) {\n        setYearFromToken(urlParams.get('year'));\n        filter_year = true;\n    }\n}\n\nfunction parseSortbyParam(urlParams) {\n    if (urlParams.has('sortby')) {\n        setSortbyFromToken(urlParams.get('sortby'));\n    }\n}\n\nfunction parseAscParam(urlParams) {\n    if (urlParams.has('asc')) {\n        setAscFromToken(urlParams.get('asc'));\n    }\n}\n\nfunction parseModernUrlParameters(urlParams) {\n    parseStationParam(urlParams);\n    parseYearParam(urlParams);\n    parseSortbyParam(urlParams);\n    parseAscParam(urlParams);\n}\n\nfunction parseUrlParameters() {\n    const urlParams = new URLSearchParams(window.location.search);\n    const hash = window.location.hash.substring(1); // Remove #\n    \n    // Check for legacy hash format first for backwards compatibility\n    if (hash && !urlParams.has('station')) {\n        if (parseLegacyHashFormat(hash)) {\n            convertLegacyHashToUrlParams();\n            return;\n        }\n    }\n    \n    // Parse modern URL parameters\n    parseModernUrlParameters(urlParams);\n}\n\n// Initialize when DOM is loaded\ndocument.addEventListener('DOMContentLoaded', () => {\n    initializeTable();\n    setupEventListeners();\n    parseUrlParameters();\n    fetchData();\n});\n"
  },
  {
    "path": "htdocs/archive/raob/list.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 124);\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->title = \"List Sounding Parameters by Year\";\n\n$stationselect = networkselect(\"RAOB\", \"_OAX\");\n$year = date(\"Y\");\n$yearselect = yearSelect(1947, $year);\n$t->headextra = <<<EOM\n<link href=\"https://unpkg.com/tabulator-tables@6.3.1/dist/css/tabulator_bootstrap5.min.css\" rel=\"stylesheet\">\nEOM;\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"/archive/raob/\">Sounding Archive Mainpage</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">List Soundings by Year</li>\n    </ol>\n</nav>\n<p>This page presents a yearly listing of sounding parameters computed by the\nIEM using <a href=\"https://unidata.github.io/MetPy/latest/index.html\">Unidata's MetPy</a>.\n<strong>Please use caution</strong> when using these parameters directly as they\ncan struggle with GIGO. A <a href=\"/api/1/docs/\">JSON Webservice</a> backends this page.</p>\n\n<div class=\"card mb-4\">\n    <div class=\"card-body\">\n        <form name=\"local\">\n            <div class=\"row g-3\">\n                <div class=\"col-md-4\">\n                    <label class=\"form-label fw-bold\">Select Site:</label>\n                    {$stationselect}\n                </div>\n                <div class=\"col-md-4\">\n                    <!--\n                    <input type=\"checkbox\" name=\"filter_year\" id=\"filter_year\" checked=\"checked\" />\n                    <label for=\"filter_year\">Filter by Year:</label>\n                    -->\n                    <label class=\"form-label fw-bold\">Select Year:</label> {$yearselect}\n                </div>\n                <div class=\"col-md-4\">\n                    <label class=\"form-label fw-bold\">View Top 100 by Parameter:</label>\n                    <select name=\"sortby\" id=\"sortby\" class=\"form-select mb-2\">\n                        <option value=\"-\">Select Parameter...</option>\n                        <option value=\"sbcape_jkg\">Surface Based CAPE (J/kg)</option>\n                        <option value=\"sbcin_jkg\">Surface Based CIN (J/kg)</option>\n                        <option value=\"mucape_jkg\">Most Unstable CAPE (J/kg)</option>\n                        <option value=\"mucin_jkg\">Most Unstable CIN (J/kg)</option>\n                        <option value=\"pwater_mm\">Precipitable Water (mm)</option>\n                        <option value=\"lcl_agl_m\">LCL Height (m AGL)</option>\n                        <option value=\"lfc_agl_m\">LFC Height (m AGL)</option>\n                        <option value=\"el_agl_m\">EL Height (m AGL)</option>\n                        <option value=\"total_totals\">Total Totals Index</option>\n                        <option value=\"sweat_index\">Sweat Index</option>\n                        <option value=\"srh_sfc_1km_total\">Surface to 1km Storm Relative Helicity (m^2/s^2)</option>\n                        <option value=\"srh_sfc_3km_total\">Surface to 3km Storm Relative Helicity (m^2/s^2)</option>\n                        <option value=\"shear_sfc_6km_smps\">Surface to 6km Shear (m/s)</option>\n                    </select>\n                    <select name=\"asc\" id=\"asc\" class=\"form-select\">\n                        <option value=\"desc\">Descending</option>\n                        <option value=\"asc\">Ascending</option>\n                    </select>\n                </div>\n            </div>\n        </form>\n    </div>\n</div>\n\n<div class=\"d-flex gap-2 mb-4\">\n    <button id=\"download\" type=\"button\" class=\"btn btn-success\">Download all data as CSV</button>\n</div>\n\n<div class=\"table-responsive\">\n    <div id=\"datatable\"></div>\n</div>\n\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"list.module.js?v=5\" type=\"module\"></script>\nEOM;\n\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/archive/schema.php",
    "content": "<?php \nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\ndefine(\"IEM_APPID\", 20);\n$t->title = \"Archived Data Schema\";\n\n$url = sprintf(\"%s/archive/data/%s\", $EXTERNAL_BASEURL, gmdate('Y/m/d'));\n$u = sprintf(\"<a href=\\\"%s\\\">%s</a>\\n\", $url, $url);\n\n$url2 = sprintf(\"https://mtarchive.geol.iastate.edu/%s\", gmdate('Y/m/d'));\n$u2 = sprintf(\"<a href=\\\"%s\\\">%s</a>\\n\", $url2, $url2);\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/archive/\">Archive</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Data Schema</li>\n  </ol>\n</nav>\n\n<h3>Archived Data Schema</h3>\n\n<p>The IEM maintains two directly web-accessible trees of archived weather\nproducts.  This page provides a crude schema of what products are archived and\nwhere within the directory tree you can find them.  The reason there are\ntwo archives is that the products have different funding / support resources\nand legacy.</p>\n\n<p>The products are generally organized by UTC date, but some of the products\nfound are for the local/Iowa calendar date.</p>\n\n<pre>\nROOT={$u}\n|- base folder full of various images for the date \n|- GIS\n   |- NWS coop obs shapefile and road conditions shapefile per update\n   |- sat\n      |- GOES Conus Satellite imagery TIF\n   |- {akcomp,gucomp,hicomp,prcomp,uscomp}\n      |- NEXRAD mosaics\n   | - hrrr reflectivity imagery\n   | - mrms imagery\n   | - ifc Iowa Flood Center precipitation imagery\n   | - ridge single site NEXRAD RADAR imagery \n|- camera\n   |- Per webcam site 5 minute interval imagery\n|- comprad\n   |- Iowa pre-generated NEXRAD imagery w/ warnings and watches\n|- hunrad\n   |- Pre-generated NEXRAD imagery w/ warnings and watches Alabama\n|- ictrad\n   |- Pre-generated NEXRAD imagery w/ warnings and watches Kansas\n|- lotrad\n   |- Pre-generated NEXRAD imagery w/ warnings and watches Illinois\n| - model\n   |- rtma selected gribs from the RTMA and RTMA-RU (Rapid Update)\n|- raw\n   |- Raw datafiles for the AWOS and RWIS network\n|- srad\n   |- Pre-generated NEXRAD imagery w/ warnings and watches South Dakota\n|- sel[0-10]rad\n   |- Pre-generated NEXRAD imagery w/ warnings and watches for floating\n      watch sectors issued by the Storm Prediction Center\n|- text\n   |- raw Iowa State road condition reports\n   |- noaaport\n      |- Saved raw text products from our NWS NOAAPort feed\n   |- ot\n      |- raw datafiles for some of the sites in the Other Network\n|- usrad\n   |- Pre-generated NEXRAD imagery w/ warnings and watches United States\n|- stage4\n   |- Archive of the NCEP Stage4 Precipitation product in Grib format\n</pre>\n\n<pre>\nROOT={$u2}\n|- base folder full of various images for the date\n   | - bufkit :: Archive of BUFKIT data files for a RAP, GFS, NAM, SREF models\n   | - cod :: GOES 16+17 Imagery from College of Dupage\n   | - gempak :: some NWS/NCEP data in GEMPAK format\n   | - grib2 :: limited assortment of NCEP/NWS grib2 products\n   | - mrms :: Grib2 NCEP MRMS products\n   | - text :: some NWS data in text format\n</pre>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/c/c.py",
    "content": "\"\"\"implemented in pylib/iemweb/c/tile.py\"\"\"\n\nfrom iemweb.c.tile import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/c/tile.py",
    "content": "\"\"\"implemented in pylib/iemweb/c/c.py\"\"\"\n\nfrom iemweb.c.tile import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/cache/tile.py",
    "content": "\"\"\"implemented in pylib/iemweb/cache/tile.py\"\"\"\n\nfrom iemweb.cache.tile import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/circa2001.phtml",
    "content": "<HTML>\n\n<HEAD>\n    <TITLE>Iowa Mesonet Development</TITLE>\n    <META NAME=\"AUTHOR\" CONTENT=\"Daryl Herzmann\">\n    <style>\n        /* Generic class for warning messages */\n        .warning {\n            border: solid 1px #000;\n            background: #FCF9CE url(images/warning.png) 6px 4px no-repeat;\n            color: #222222;\n            padding-left: 40px;\n            padding-top: 10px;\n            padding-bottom: 10px;\n            text-align: left;\n        }\n\n        .sans11 {\n            font-size: 11px;\n            font-family: Arial, Helvetica, Geneva, Swiss, SunSans-Regular\n        }\n\n        .title {\n            border: 10px;\n            font-size: 24px;\n            font-family: Helvetica, Geneva, Swiss, SunSans-Regular\n        }\n\n        .siders {\n            color: black;\n            font-weight: bold;\n            font-size: 12px;\n        }\n\n        .bluet {\n            color: blue;\n            font-weight: bold;\n            font-size: 14px;\n        }\n\n        .here {\n            color: black;\n            font-weight: bold;\n            font-size: 11px;\n        }\n\n        .there {\n            font-size: 11px;\n            font-family: Arial;\n        }\n\n        a {\n            font-size: 11px;\n            color: blue;\n        }\n    </style>\n</HEAD>\n\n<?php\n$title = \"Iowa Environmental Mesonet\"; ?>\n\n<BODY rightmargin=\"0\" leftmargin=\"0\" marginwidth=\"0\" topmargin=\"0\" marginheight=\"0\" BGCOLOR=\"#EEEEEE\">\n    <div class=\"warning\">\n        The IEM website celebrates its 10th anniversary today! Here is how the homepage looked on\n        17 June 2001. Thank you for visiting the website and support of our project.\n        All of the links on the page take you to the current homepage.\n    </div>\n\n    <TABLE width=\"100%\" bgcolor=\"white\" cellspacing=\"0\" border=\"0\" cellpadding=\"0\" rowspacing=\"0\" border=\"0\">\n        <TR bgcolor=\"#336699\">\n            <TD colspan=\"5\" align=\"CENTER\">\n\n                <font color=\"white\" class=\"title\"><?php print($title); ?></font>\n\n            </TD>\n        </TR>\n\n        <TR bgcolor=\"black\">\n            <TH colspan=\"5\">\n                <span>\n                    <font color=\"white\" class=\"sans11\"> Department of Agronomy & Iowa State\n                        University</font>\n                </span>\n            </TH>\n        </TR>\n\n        <TR>\n\n            <TD bgcolor=\"#ccccff\" width=\"3\"><img src=\"/icons/spacer.gif\" border=\"0\" width=\"3\"></TD>\n            <TD bgcolor=\"#ccccff\" valign=\"TOP\" width=\"120\">\n                <BR>\n\n                <!-- Feature Section -->\n                <TABLE bgcolor=\"black\" cellpadding=\"2\" rowspacing=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\">\n                    <TR>\n                        <TD>\n\n                            <TABLE bgcolor=\"#ffefd5\" cellpadding=\"3\" border=\"0\" cellspacing=\"0\" rowspacing=\"0\" width=\"100%\">\n                                <TR>\n                                    <TD>\n                                        <font class=\"bluet\">Feature:</font><BR>\n                                        <img src=\"https://meteor.geol.iastate.edu/mesonet/data/feature.gif\" width=\"150\">\n\n                                        <BR><B>14 Jun 2001:</B><BR>\n                                        Powerful storms move into Iowa! Check out the radar.\n\n\n                                    </TD>\n                                </TR>\n                            </TABLE>\n\n                        </TD>\n                    </TR>\n                </TABLE>\n                <!-- End of Feature Section -->\n\n\n\n                <TABLE width=\"100%\" cellpadding=\"2\" rowspacing=\"2\" border=\"0\" cellspacing=\"0\">\n\n\n                    <TR>\n                        <TD><BR></TD>\n                    </TR>\n\n                    <TR>\n                        <TD NOBR>\n                            <span class=\"siders\">Cooperating Members:</span>\n                        </TD>\n                    </TR>\n                    <TR>\n                        <TD>\n                            <a href=\"https://weather.gov/dmx/\">NWS Des Moines</a>\n                            <BR><a href=\"http://www.weatherview.dot.state.ia.us/\">IaDOT RWIS</a>\n                            <BR><a href=\"https://meteor.geol.iastate.edu/agclimate\">ISU Agclimate Network</a>\n                        </TD>\n                    </TR>\n\n                    <TR>\n                        <TD><BR></TD>\n                    </TR>\n\n                    <TR>\n                        <TD NOBR>\n                            <P class=\"siders\">Contact Information:\n                        </TD>\n                    </TR>\n                    <TR>\n                        <TD>\n                            Dennis Todey<BR>\n                            &nbsp; &nbsp; (<i><a href=\"mailto:dptodey@iastate.edu\">dptodey@iastate.edu</a></i>)\n\n                            <P>Daryl Herzmann<BR>\n                                &nbsp; &nbsp; (<i><a href=\"mailto:akrherz@iastate.edu\">akrherz@iastate.edu</a></i>)\n                        </TD>\n                    </TR>\n\n                    <TR>\n                        <TD><BR></TD>\n                    </TR>\n\n                    <TR>\n                        <TD align=\"center\">\n                            <img src=\"http://pals.agron.iastate.edu/cgi-bin/Count.cgi?df=mesonet.dat&chcolor=T\" align=\"absmiddle\">\n                        </TD>\n                    </TR>\n\n                </TABLE>\n\n\n            </TD>\n\n            <TD bgcolor=\"#336699\" width=\"3\"> <img src=\"/icons/spacer.gif\" border=\"0\" width=\"3\"></TD>\n            <TD bgcolor=\"white\" width=\"3\"> <img src=\"/icons/spacer.gif\" border=\"0\" width=\"3\"></TD>\n\n\n\n\n            <TD width=\"500\">\n\n                <TABLE border=\"0\" cellpadding=\"3\" cellspacing=\"0\" rowspacing=\"0\">\n                    <TR>\n                        <TD>\n\n\n\n                            <P><img src=\"/icons/alert.red.gif\">This site is a temporary test bed for Iowa mesonet products.\n\n                                <BR><BR>\n\n\n\n                            <TABLE cellpadding=\"2\" cellspacing=\"0\" rowspacing=\"0\" colspacing=\"0\" border=\"0\">\n\n                                <TR>\n                                    <TD colspan=\"2\">\n                                        <font class=\"bluet\"><B>Current Data:</B></font>\n                                    </TD>\n                                    <TH>\n                                        17 Jun 2001 15 UTC\n                                    </TH>\n                                </TR>\n\n                                <TR>\n                                    <TD rowspan=\"6\"><BR></TD>\n                                    <TD>Iowa DOT RWIS data with ASOS/AWOS data.</TD>\n                                    <TD> [ <a href=\"/index2.phtml\">Current</a> ] </TD>\n                                </TR>\n                                <TR>\n                                    <TD>ASOS/AWOS data plotted by itself.</TD>\n                                    <TD> [ <a href=\"/index2.phtml\">Current</a> ]\n                                        &nbsp; 48 / 49 Reporting\n                                    </TD>\n                                </TR>\n                                <TR>\n                                    <TD>RWIS data plotted by itself.</TD>\n                                    <TD> [ <a href=\"/index2.phtml\">Current</a> ]\n                                        &nbsp; 42 / 49 Reporting\n                                    </TD>\n                                </TR>\n\n                                <TR>\n                                    <TD>Today's total precip. [ASOS]</TD>\n                                    <TD> <a href=\"/index2.phtml\">Plot</a>\n                                    </TD>\n                                </TR>\n\n                                <TR>\n                                    <TD>Hourly Mesonet + DMX NEXRAD</TD>\n                                    <TD> <a href=\"/index2.phtml\">Image</a>\n                                    </TD>\n                                </TR>\n\n                                <TR>\n                                    <TD>20 Minute Mesonet + DMX NEXRAD</TD>\n                                    <TD> <a href=\"/index2.phtml\">Image</a> &nbsp; | &nbsp;\n                                        <a href=\"/index2.phtml\">Loop</a>\n                                    </TD>\n                                </TR>\n\n                                <!-- spacer -->\n                                <TR>\n                                    <TD colspan=\"3\">&nbsp;</TD>\n                                </TR>\n\n                                <TR>\n\n                                    <TD colspan=\"2\">\n                                        <font class=\"bluet\"><B>Comparison Plots:</B></font>\n                                    </TD>\n                                    <TD></TD>\n                                </TR>\n                                <TR>\n                                    <TD rowspan=\"3\"> &nbsp;</TD>\n                                    <TD>Temperatures [RWIS vs ASOS].</TD>\n                                    <TD>\n                                        <a href=\"/index2.phtml\">Plot</a> |\n                                        <a href=\"/index2.phtml\">Contour</a>\n                                    </TD>\n                                </TR>\n                                <TR>\n                                    <TD>Dew Points [RWIS vs ASOS].</TD>\n                                    <TD>\n                                        <a href=\"/index2.phtml\">Plot</a> |\n                                        <a href=\"/index2.phtml\">Contour</a>\n                                    </TD>\n                                </TR>\n\n                                <TR>\n                                    <TD>Meteograms [RWIS vs ASOS].</TD>\n                                    <TD>\n                                        <a href=\"/index2.phtml\">Cedar Rapids</a> |\n                                        <a href=\"/index2.phtml\">Council Bluffs</a> |\n                                        <a href=\"/index2.phtml\">Des Moines</a>\n                                    </TD>\n                                </TR>\n\n\n                                <!-- spacer -->\n                                <TR>\n                                    <TD colspan=\"4\">&nbsp;</TD>\n                                </TR>\n\n                                <TR>\n\n                                    <TD colspan=\"2\">\n                                        <font class=\"bluet\"><B>Climatology:</B></font>\n                                    </TD>\n                                    <TD></TD>\n                                </TR>\n\n                                <TR>\n                                    <TD rowspan=\"5\"> &nbsp;</TD>\n                                    <TD>High/Low Temperatures [ASOS/AWOS/RWIS].</TD>\n                                    <TD>\n                                        [ <a href=\"/index2.phtml\">Yesterday</a> ]\n                                    </TD>\n                                </TR>\n\n                                <TR>\n                                    <TD colspan=\"2\"> &nbsp; &nbsp; &nbsp; <i>Selected Areas</I>\n                                        ( <a href=\"/index2.phtml\">Cedar Rapids</a> )\n                                        ( <a href=\"/index2.phtml\">Council Bluffs</a> )\n                                        ( <a href=\"/index2.phtml\">Des Moines</a> )\n                                    </TD>\n                                </TR>\n\n                                <TR>\n\n                                    <TD>Total Precipitation [ASOS].</TD>\n                                    <TD>\n                                        [ <a href=\"/index2.phtml\">Yesterday</a> ]\n                                        [ <a href=\"/index2.phtml\">Ending 00Z</a> ]\n                                        [ <a href=\"/index2.phtml\">Ending 12Z</a> ]\n                                    </TD>\n                                </TR>\n\n                                <TR>\n\n                                    <TD>Growing Degree Days (base=50) [ASOS/AWOS]</TD>\n                                    <TD>\n                                        <a href=\"/index2.phtml\">Plot</a> | <a href=\"/index2.phtml\">Contour</a>\n                                    </TD>\n                                </TR>\n\n                                <TR>\n\n                                    <TD>Growing Degree Days (base=50) [RWIS]</TD>\n                                    <TD>\n                                        <a href=\"/index2.phtml\">Plot</a>\n                                    </TD>\n                                </TR>\n\n\n\n                                <!-- spacer -->\n                                <TR>\n                                    <TD colspan=\"3\">&nbsp;</TD>\n                                </TR>\n\n                                <TR>\n\n                                    <TD colspan=\"2\">\n                                        <font class=\"bluet\"><B>Current Data Files:</B></font>\n                                    </TD>\n                                    <TD></TD>\n                                </TR>\n\n                                <TR>\n                                    <TD rowspan=\"3\"> &nbsp;</TD>\n                                    <TD>ASOS/AWOS.</TD>\n                                    <TD>\n                                        <a href=\"/index2.phtml\">GEMPAK</a>\n                                    </TD>\n                                </TR>\n\n                                <TR>\n                                    <TD>RWIS Data.</TD>\n                                    <TD>\n                                        <a href=\"/index2.phtml\">RAW CDF</a> | <a href=\"/index2.phtml\">GEMPAK</a>\n                                    </TD>\n                                </TR>\n\n\n                                <TR>\n\n                                    <TD>Combined Mesonet.</TD>\n                                    <TD>\n                                        <a href=\"/index2.phtml\">GEMPAK</a>\n                                    </TD>\n                                </TR>\n\n                            </TABLE>\n\n                        </TD>\n                    </TR>\n                </TABLE>\n\n                <P align=\"CENTER\">\n                    <font size=\"+1\"><B> | </B></font>\n                    <font class=\"here\">Homepage</font>\n                    <font size=\"+1\"><B> | </B></font>\n                    <a class=\"there\" href=\"/index2.phtml\">Info</a>\n                    <font size=\"+1\"><B> | </B></font>\n                    <a class=\"there\" href=\"/index2.phtml\">Docs</a>\n                    <font size=\"+1\"><B> | </B></font>\n\n            </TD>\n        </TR>\n\n        <TR bgcolor=\"black\">\n            <TD colspan=\"5\"><img src=\"/icons/spacer.gif\" height=\"1\" border=\"0\" width=\"1\"></TD>\n        </TR>\n\n        <TR bgcolor=\"#EEEEEE\">\n            <TD colspan=\"5\" align=\"right\">\n                &copy; 2001: Iowa Environmental Mesonet<BR>\n                Iowa State University\n\n            </TD>\n        </TR>\n\n    </TABLE>\n\n</BODY>\n\n</HTML>"
  },
  {
    "path": "htdocs/clientaccesspolicy.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?> \n<access-policy> \n<cross-domain-access> \n<policy> \n<allow-from http-request-headers=\"*\"> \n<domain uri=\"*\" /> \n<domain uri=\"http://*\" />\n</allow-from> \n<grant-to> \n<resource path=\"/\" include-subpaths=\"true\" /> \n</grant-to> \n</policy> \n</cross-domain-access> \n</access-policy>"
  },
  {
    "path": "htdocs/climate/index.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Climatology\";\n\n$t->content = <<<EOM\n<h3>Climatological Products</h3>\n\n<div style=\"margin-left: 20px;\">\n<p>Climatology provides information on what you may expect for various \nvariables and durations.  The IEM Climatology section is organized by\ndifferent periods of time (see second row of links in the banner).\n\n<p><img src=\"/images/wizard.png\" style=\"float:left; margin: 5px;\">The \n<a href=\"/climodat/\">Climodat</a> application provides pre-generated reports\nof Iowa's climate based on the most popular requests we get from the \ngeneral public.  You should check out that page first, it may have what \nyou need.\n</p>\n\n<p><strong>Most Popular Products</strong>\n<ul>\n  <li>Download <a href=\"/COOP/dl/normals.phtml\">Daily Climate Normals</a></li>\n</ul>\n\n<p><strong>Iowa's Earliest Snowfall on Record</strong>\n<br />There is no one exact or official answer to this question.  In\nthe modern era, September 25th 1942 could be considered as the earliest \ndate in the fall of accumulating snowfall. Up to 4 inches fell \nthat day with nearly all of the state seeing something.\n\n<br />&nbsp;<br />However, there was an earlier event back on September 16, 1881 when snow\naccumulated over about the western one-half of Iowa and 4 to 6 inches was\nreported between Avoca and Stuart in west central Iowa.\n\n<br />&nbsp;<br />There were reports of a few flakes on September 6, 1929 \nnear Alton about 9 a.m.\n\n</div>\n\n<h4>Other Resources</h4>\n\n<p>The <a href=\"http://www.iowaagriculture.gov/climatology.asp\">Iowa State Climatologist's page</a> has a number of products from the official source of \nclimate data in the state.\n\n<p>The <a href=\"http://www.ncdc.noaa.gov\">National Climatic Data Center</a>\nis <strong>the online archive</strong> for climate information from Iowa\nand the world!</p>\n\n<p>The <a href=\"http://www.hprcc.unl.edu/\">High Plains Climate Center</a> and\n<a href=\"https://mrcc.purdue.edu/\">Midwestern Regional Cimate Center</a>\nhave a number of quality products for Iowa.\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/climate/records.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Information\";\n\n$t->content = <<<EOM\n<h3>Iowa Weather/Climate Records</h3>\n\n<strong>The information on this page is not being updated!</strong>\n\n<p>Here is a summary of Iowa weather and climate records.  The <a href=\"http://www.agriculture.state.ia.us/climatology.htm\">Iowa State \nClimatologist</a>, Dr Justin Glisan, is the source of these records unless \notherwise noted.\n\n<h3>Air Temperature (All values in Fahrenhit)</h3>\n\n<table cellpadding=\"5\">\n<tr><td valign=\"top\">\n\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"0\">\n<caption>For Any Day</caption>\n<tr><td rowspan=\"2\">Maximum High:</td>\n <td>Atlantic</td><td>25 July 1936</td><td rowspan=\"2\">117</td></tr>\n<tr>\n <td>Logan</td><td>25 July 1936</td></tr>\n<tr><td>Latest 100F</td><td>Glenwood</td><td>28 Sep 1953</td><td>103</td></tr>\n</table>\n\n</td><td>\n\n<table border=\"1\" cellpadding=\"2\" cellspacing=\"0\">\n<caption>Max High For A Given Month</caption>\n<tr><th>Month:</th><th>Location:</th><th>Day/Year</th><th>High</th></tr>\n<tr><td>January</td><td>Keokuk</td><td>24 Jan 1950</td><td>73</td></tr>\n<tr><td>February</td><td>Sidney</td><td>29 Feb 1972</td><td>82</td></tr>\n<tr><td rowspan=\"3\">March</td><td>Clarinda</td><td>25 Mar 1907</td><td rowspan=\"3\">92</td></tr>\n<tr><td>Massena</td><td>25 Mar 1907</td></tr>\n<tr><td>Glenwood</td><td>29 Mar 1986</td></tr>\n<tr><td rowspan=\"2\">April</td><td>Fort Dodge</td><td>22 Apr 1980</td><td rowspan=\"2\">100</td></tr>\n<tr><td>Waterloo</td><td>22 Apr 1980</td></tr>\n<tr><td>May</td><td>Inwood</td><td>30 May 1934</td><td>111</td></tr>\n<tr><td>June</td><td>Denison</td><td>10 Jun 1933</td><td>109</td></tr>\n<tr><td rowspan=\"2\">July</td><td>Atlantic</td><td>25 Jul 1936</td><td rowspan=\"2\">117</td></tr>\n<tr><td>Logan</td><td>25 Jul 1936</td></tr>\n<tr><td rowspan=\"2\">August</td><td>Ottumwa</td><td>8 Aug 1934</td><td rowspan=\"2\">115</td></tr>\n<tr><td>Keosauqua</td><td>9 Aug 1934</td></tr>\n<tr><td rowspan=\"3\">September</td><td>Bedford</td><td>5 Sep 1913</td><td rowspan=\"3\">107</td></tr>\n<tr><td>Logan</td><td>6 Sep 1939</td></tr>\n<tr><td>Glenwood</td><td>7 Sep 1939</td></tr>\n<tr><td rowspan=\"6\">October</td><td>Malvern</td><td>1 Oct 1897</td><td rowspan=\"6\">97</td></tr>\n<tr><td>Ottumwa</td><td>1 Oct 1897</td></tr>\n<tr><td>Onawa</td><td>3 Oct 1938</td></tr>\n<tr><td>Knoxville</td><td>4 Oct 1938</td></tr>\n<tr><td>Forest City</td><td>5 Oct 1963</td></tr>\n<tr><td>Shenandoah</td><td>5 Oct 1963</td></tr>\n<tr><td>November</td><td>Glenwood</td><td>13 Nov 1999</td><td>85</td></tr>\n<tr><td>December</td><td>Thurman</td><td>6 Dec 1939</td><td>74</td></tr>\n</table>\n\n</td><td valign=\"top\">\n\n<table border=\"1\" cellpadding=\"2\" cellspacing=\"0\">\n<caption>Min Low For A Given Month</caption>\n<tr><th>Month:</th><th>Location:</th><th>Day/Year</th><th>Low</th></tr>\n<tr><td>January</td><td>Washta</td><td>12 Jan 1912</td><td>-47</td></tr>\n<tr><td>February</td><td>Elkader</td><td>3 Feb 1996</td><td>-47</td></tr>\n<tr><td rowspan=\"2\">March</td><td>Hampton</td><td>1 Mar 1962</td><td rowspan=\"2\">-35</td></tr>\n<tr><td>Winterset</td><td>1 Mar 1962</td></tr>\n<tr><td>April</td><td>Manchester</td><td>6 Apr 1982</td><td>-9</td></tr>\n<tr><td>May</td><td>Washta</td><td>2 May 1908 </td><td>13</td></tr>\n<tr><td>June</td><td>Decorah</td><td>3 Jun 1946</td><td>27</td></tr>\n<tr><td rowspan=\"3\">July</td><td>Logan</td><td>9 Jul 1895</td><td rowspan=\"3\">35</td></tr>\n<tr><td>Neola</td><td>9 Jul 1895</td></tr>\n<tr><td>Elkader</td><td>7 Jul 1984</td></tr>\n<tr><td rowspan=\"4\">August</td><td>Elkader</td><td>30 Aug 1893</td><td rowspan=\"4\">30</td></tr>\n<tr><td>Mason City</td><td>30 Aug 1915</td></tr>\n<tr><td>Britt</td><td>20 Aug 1950</td></tr>\n<tr><td>Sibley</td><td>20 Aug 1950</td></tr>\n<tr><td rowspan=\"3\">September</td><td>Sheldon</td><td>29 Sep 1899</td><td rowspan=\"3\">15</td></tr>\n<tr><td>Sibley</td><td>29 Sep 1899</td></tr>\n<tr><td>Mason City</td><td>30 Sep 1899</td></tr>\n<tr><td>October</td><td>Inwood</td><td>29 Oct 1925</td><td>-15</td></tr>\n<tr><td>November</td><td>Cresco</td><td>28 Nov 1887</td><td>-25</td></tr>\n<tr><td>December</td><td>Washta</td><td>29 Dec 1917</td><td>-40</td></tr>\n</table>\n\n\n\n</td></tr></table>\n\n<h3>Rainfall Accumulation (All values in inches)</h3>\n\n<table cellpadding=\"5\">\n<tr><td valign=\"top\">\n\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"0\">\n<caption>For Any Month</caption>\n<tr><th>Rank:</th><th>Location:</th><th>Month/Year</th><th>Amount</th></tr>\n<tr><td>1.</td><td>Red Oak</td><td>Jun 1967</td><td>22.18</td></tr>\n<tr><td>2.</td><td>Leon</td><td>Jul 1993</td><td>20.74</td></tr>\n<tr><td>3.</td><td>Corydon</td><td>Jul 1993</td><td>20.51</td></tr>\n<tr><td>4.</td><td>Larrabee</td><td>Jun 1891</td><td>19.88</td></tr>\n<tr><td>5.</td><td>Audubon</td><td>Jul 1958</td><td>19.78</td></tr>\n<tr><td>6.</td><td>Beaconsfield</td><td>Jul 1993</td><td>19.75</td></tr>\n<tr><td>7.</td><td>Emerson</td><td>Jun 1967</td><td>19.70</td></tr>\n<tr><td>8.</td><td>Malvern</td><td>Jun 1967</td><td>19.63</td></tr>\n<tr><td>9.</td><td>Rathbun Dam</td><td>Aug 2007</td><td>19.43</td></tr>\n<tr><td>10.</td><td>Norwich</td><td>Jul 1958</td><td>19.28</td></tr>\n</table>\n\n</td><td>\n\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"0\">\n<caption>For A Given Month</caption>\n<tr><th>Month:</th><th>Location:</th><th>Year</th><th>Amount</th></tr>\n<tr><td>January</td><td>Keokuk</td><td>1965</td><td>8.58</td></tr>\n<tr><td>February</td><td>Brookside</td><td>1865</td><td>7.00</td></tr>\n<tr><td>March</td><td>Muscatine</td><td>1852</td><td>8.60</td></tr>\n<tr><td>April</td><td>Strawberry Point</td><td>1951</td><td>12.52</td></tr>\n<tr><td>May</td><td>Grand Meadow</td><td>1902</td><td>18.04</td></tr>\n<tr><td>June</td><td>Red Oak</td><td>1967</td><td>22.18</td></tr>\n<tr><td>July</td><td>Leon</td><td>1993</td><td>20.74</td></tr>\n<tr><td>August</td><td>Rathbun Dam</td><td>2007</td><td>19.43</td></tr>\n<tr><td>September</td><td>Corydon</td><td>1926</td><td>18.57</td></tr>\n<tr><td>October</td><td>Burlington Airport</td><td>1941</td><td>15.10</td></tr>\n<tr><td>November</td><td>Humboldt</td><td>1909</td><td>11.48</td></tr>\n<tr><td>December</td><td>Keokuk</td><td>1873</td><td>8.56</td></tr>\n</table>\n\n</td></tr>\n</table>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/climate/week.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Climatology Plots for Past 7 Days\";\n\n$t->content = <<<EOM\n<h4>Temperature</h4>\n<ul>\n<li><a href=\"/data/summary/7day/iaavg_max_tmpf.png\">Average High</a></li>\n<li><a href=\"/data/summary/7day/iaavg_min_tmpf.png\">Average Low</a></li>\n</ul>\n\n<h4>Precipitation</h4>\n<ul>\n<li><a href=\"/rainfall/obhour.phtml\">Hourly Precip Accumulator</a></li>\n<li><a href=\"/data/summary/7day/ia_precip.png\">Precip Accumulation</a> [ASOS+AWOS]</li>\n</ul>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/climate/year.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\nrequire_once \"../../include/forms.php\";\n$t->title = \"Climatology by Year\";\n\n$year = get_int404(\"year\", date(\"Y\") - 1);\n$prod = get_int404(\"prod\", 1);\n\n$products = array(\n    1 => array(\n        \"name\" => \"Total Precipitation\",\n        \"tpl\" => \"/archive/data/%Y/summary/total_precip.png\"\n    ),\n    2 => array(\n        \"name\" => \"Days with Precipitation\",\n        \"tpl\" => \"/archive/data/%Y/summary/precip_days.png\"\n    ),\n    20 => array(\n        \"name\" => \"Average High Temperature\",\n        \"tpl\" => \"/archive/data/%Y/summary/avg_high.png\"\n    ),\n    21 => array(\n        \"name\" => \"Average Low Temperature\",\n        \"tpl\" => \"/archive/data/%Y/summary/avg_low.png\"\n    ),\n    22 => array(\n        \"name\" => \"Average Temperature\",\n        \"tpl\" => \"/archive/data/%Y/summary/avg_temp.png\"\n    ),\n\n);\n\n$ts = new DateTime(\"{$year}-01-01\");\n$imgurl = str_replace(\"%Y\", $ts->format(\"Y\"), $products[$prod][\"tpl\"]);\n\n$a = \"\";\nforeach ($products as $key => $ar) {\n    $a .= sprintf(\n        \"<option value=\\\"%s\\\" %s>%s\",\n        $key,\n        ($prod == $key) ? \"SELECTED\" : \"\",\n        $ar[\"name\"]\n    );\n}\n$ys = yearSelect(1893, $year);\n\n$t->content = <<<EOM\n<h3>Yearly Summaries</h3>\n<p>Please select from the following menu to view an analysis map of your \nchoice.  Some of these maps are generated by a griding of once daily NWS COOP \nobservations.  Data quality is always an issue, so please exercise caution\nwhen using these plots.</p>\n\n<div style=\"border: 1px solid #000; padding: 5px;\">\n<form name=\"selector\" action=\"year.phtml\">\n<strong>Year:</strong> {$ys} \n<strong>Product:</strong> <select name=\"prod\">{$a}</select>\n<input type=\"submit\" value=\"Request Plot\">\n<br />\n<img src=\"{$imgurl}\" alt=\"plot\" />\n</form>\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/climate/yesterday.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Climatology Plots for Yesterday\";\n\n$u1 = sprintf(\n    \"/archive/data/%scoop_avg_temp.png\",\n    date(\"Y/m/d/\", date(\"U\") - 86400)\n);\n$u2 = sprintf(\n    \"/archive/data/%scoop_rec_temp.png\",\n    date(\"Y/m/d/\", date(\"U\") - 86400)\n);\n\n$t->content = <<<EOM\n<h4>Temperature</h4>\n<ul>\n<li><a href=\"/data/coopHighLow.gif\">High Temps</a>[COOP]</li>\n<li><a href=\"/data/awos_rtp_00z.shef\">00Z RTP First Guess</a></li>\n<li><a href=\"/data/awos_rtp.shef\">12Z RTP First Guess</a></li>\n<li><a href=\"{$u1}\">Average Hi/Low Temp</a></li>\n<li><a href=\"/timemachine/?product=125\">Record Hi/Low Temp</a></li>\n</ul>\n\n<h4>Precipitation</h4>\n<ul>\n<li><a href=\"/rainfall/obhour.phtml\">Hourly Precip Accumulator</a></li>\n<li><a href=\"https://meteor.geol.iastate.edu/pix/radp6.gif\">Radar-estimate of storm total precip through MIDNIGHT (CST)</a></li>\n</ul>\n\n<h4>Wind</h4>\n<ul>\n<li><a href=\"/data/summary/yest_gust.gif\">Peak Wind Gust</a></li>\n</ul>\n\n<h4>Soil Temperatures</h4>\n<ul>\n<li><a href=\"/agclimate/daily_pics/soil-hilo-out.png\">Yesterday's 4-inch</a></li>\n<li><a href=\"/data/soilt_day1.png\">County estimate 4-inch</a></li>\n</ul>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/climodat/index.css",
    "content": "#map {\n   width: 640px;\n   height: 400px;\n   border: 2px solid black;\n}"
  },
  {
    "path": "htdocs/climodat/index.phtml",
    "content": "<?php\n\n$OL = \"10.7.0\";\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 15);\nrequire_once \"../../include/mlib.php\";\nforce_https();\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/iemprop.php\";\nrequire_once \"../../include/forms.php\";\n\n/**\n * Ensure the network string matches the station prefix.\n * If the station is set and its prefix does not match the network,\n * update the network to match the station's prefix.\n *\n * @param string $station Station identifier (e.g., 'IA0001')\n * @param string $network Network string (e.g., 'IACLIMATE')\n * @return string Corrected network string\n */\nfunction match_network_to_station($station, $network) {\n    if ($station !== \"\" && substr($station, 0, 2) !== substr($network, 0, 2)) {\n        return sprintf(\"%sCLIMATE\", substr($station, 0, 2));\n    }\n    return $network;\n}\n\n$report = sprintf(\"%02d\", get_int404(\"report\", 1));\n$station = strtoupper(get_str404(\"station\", \"\", 6));\n$network = strtoupper(get_str404('network', 'IACLIMATE', 9));\n$network = match_network_to_station($station, $network);\n\nif (isset($_GET[\"id\"])) {\n    $station = substr(xssafe($_GET[\"id\"]), 0, 6);\n}\n\n$xref = array(\n    \"01\" => \"110/\",\n    \"02\" => \"111/\",\n    \"03\" => \"112/\",\n    \"04\" => \"113/var:maxmin::\",\n    \"05\" => \"113/var:precip::\",\n    \"06\" => \"113/var:range::\",\n    \"07\" => \"113/var:means::\",\n    \"08\" => \"114/\",\n    \"09\" => \"10/threshold:32::varname:low::direction:below::\",\n    \"10\" => \"10/threshold:30::varname:low::direction:below::\",\n    \"11\" => \"10/threshold:28::varname:low::direction:below::\",\n    \"12\" => \"10/threshold:26::varname:low::direction:below::\",\n    \"13\" => \"10/threshold:24::varname:low::direction:below::\",\n    \"14\" => \"115/var:avg_high::\",\n    \"15\" => \"115/var:avg_low::\",\n    \"16\" => \"115/var:avg_temp::\",\n    \"17\" => \"115/var:precip::\",\n    \"18\" => \"116/var:hdd::\",\n    \"19\" => \"116/var:cdd::\",\n    \"20\" => \"117/\",\n    \"21\" => \"118/var:precip_days::\",\n    \"22\" => \"119/\",\n    \"23\" => \"120/\",\n    \"24\" => \"121/\",\n    \"25\" => \"118/var:snow_days::\",\n    \"26\" => \"122/\",\n    \"27\" => \"123/\",\n    \"28\" => \"124/\",\n    \"29\" => \"115/var:snow::\",\n);\n\nif (isset($_GET[\"dl\"])) {\n    if (array_key_exists($report, $xref)) {\n        $uri = sprintf(\n            \"%s/plotting/auto/plot/%sstation:%s::network:%s.txt\",\n            $INTERNAL_BASEURL,\n            $xref[$report],\n            $station,\n            $network\n        );\n        header(\"Content-type: text/plain\");\n        header(sprintf(\n            \"Content-Disposition: attachment;Filename=%s_%s.txt\",\n            $station,\n            $report\n        ));\n        echo file_get_contents($uri);\n        die();\n    }\n}\nif (isset($_GET[\"xlsx\"])) {\n    if (array_key_exists($report, $xref)) {\n        $uri = sprintf(\n            \"%s/plotting/auto/plot/%sstation:%s::network:%s.xlsx\",\n            $INTERNAL_BASEURL,\n            $xref[$report],\n            $station,\n            $network\n        );\n        header(\"Content-type: application/vnd.ms-excel\");\n        header(\"Content-Disposition: attachment;Filename=iem.xlsx\");\n        echo file_get_contents($uri);\n        die();\n    }\n}\n\n$coop_archive_end = strtotime(get_iemprop(\"iaclimate.end\"));\n$t = new MyView();\n$t->iemselect2 = TRUE;\n$t->iem_resource = \"CLIMODAT\";\n$t->title = \"Climodat Reports\";\n\nif ($station == \"\" || !is_file(\"/mesonet/share/climodat/reports/{$station}_$report.txt\")) {\n    $t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol.css\" type=\"text/css\">\n<link type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"index.css\" rel=\"stylesheet\" />\nEOM;\n    $t->jsextra = <<<EOM\n<script src=\"/vendor/openlayers/{$OL}/ol.js\" type=\"text/javascript\"></script>\n<script src='/vendor/openlayers/{$OL}/ol-layerswitcher.js'></script>\n<script src=\"/js/olselect.js\"></script>\nEOM;\n}\n$enddate = date('d M Y', $coop_archive_end);\n$nselect = networkSelect($network, ($station == \"\") ? \"IATAME\" : $station);\n\n$ar = array(\n    \"Precipitation\" => array(\n        \"05\" => \"Daily Maximum Precipitation\",\n        \"17\" => \"Monthly + Yearly Precipitation Total\",\n        \"21\" => \"Monthly Rainy Days\",\n        \"28\" => \"Precipitation Events by Month &amp; Year\",\n        \"01\" => \"Precipitation Events per Climate Week\",\n        \"02\" => \"Top 30 Rainfall Events\",\n    ),\n    \"Temperature\" => array(\n        \"04\" => \"Daily Record Highs and Lows\",\n        \"06\" => \"Daily Record High and Low Ranges\",\n        \"07\" => \"Daily Mean Highs and Lows\",\n        \"27\" => \"High/Low Consecutive Day Streaks\",\n        \"14\" => \"Monthly Average Maximum Temperatures\",\n        \"15\" => \"Monthly Average Minimum Temperatures\",\n        \"16\" => \"Monthly Average Mean Temperatures\",\n        \"18\" => \"Monthly Heating Degree Days\",\n        \"19\" => \"Monthly Cooling Degree Days\",\n        \"08\" => \"Number of Days Each Year Min &gt;= 32\",\n        \"20\" => \"Heat Stress Variables\",\n        \"26\" => \"Yearly Temperature Exceedance Histograms\",\n    ),\n    \"Growing Season\" => array(\n        \"03\" => \"Growing Degree Days\",\n        \"09\" => \"Last Spring / First Fall / Length of Season Base=32\",\n        \"10\" => \"Last Spring / First Fall / Length of Season Base=30\",\n        \"11\" => \"Last Spring / First Fall / Length of Season Base=28\",\n        \"12\" => \"Last Spring / First Fall / Length of Season Base=26\",\n        \"13\" => \"Last Spring / First Fall / Length of Season Base=24\",\n        \"22\" => \"First Fall Freeze Probabilities\",\n        \"23\" => \"Last Spring Freeze Probabilities\",\n        \"24\" => \"Freeze/Thaw Cycles\",\n    ),\n    \"Snow\" => array(\n        \"25\" => \"Monthly Snowy Days\",\n        \"29\" => \"Monthly + Yearly Snow Total\",\n    )\n);\n\n$vselect = make_select(\"report\", $report, $ar);\n$sselect = selectNetworkType(\"CLIMATE\", $network);\n\n$content = <<<EOM\n<h3>IEM \"Climodat\" Reports</h3>\n\n<p>These \"Climodat\" reports provide some answers to the most common climatological\nquestions we get routinely asked.  Here are some important notes about the\nproducts presented on this page.</p>\n\n<ol>\n<li>These reports are based on the daily\nclimate observations from the <a href=\"/COOP/\">NWS COOP</a> network.  Some quality\ncontrol is done and estimating is done to create a complete time series without\nmissing data. You can <a href=\"/request/coop/fe.phtml\">download the daily data</a>.</li>\n\n<li>There is a <a href=\"monitor.php\">station monitor app</a> that allows you to see\ncurrent summarized statistics for a station collection of your choice.</li>\n\n\n<li>The <a href=\"/plotting/auto/\">Automated Data Plotting</a> application on\nthis website contains charts and downloadable datasets that may interest you.</li>\n\n</ol>\n\n<p>Data is available from the following states:\n<form name=\"sss\" method=\"GET\">\n{$sselect}\n<input type=\"submit\" value=\"Select State\">\n</form>\n\n\n<div>\n<form method=\"GET\" action=\"index.phtml\" name=\"olselect\">\n<input type=\"hidden\" name=\"network\" value=\"{$network}\" />\n\n<table class=\"table table-sm\">\n<thead>\n  <tr><th>Select Climate Station:</th><th>Select Report:</th><td></td></tr>\n</thead>\n<tbody>\n<tr><td>{$nselect}\n<br />or <a href=\"index.phtml?report={$report}\">Select from map</a></td>\n\n<td valign=\"top\">\n{$vselect}</td>\n<td><input type=\"submit\" value=\"View Report\"></td></tr>\n</tbody>\n</table>\n</form>\n<p>\nEOM;\n\nif ($station != \"\") {\n    $tokens = explode(\"/\", $xref[$report]);\n    $autoploturi = sprintf(\n        \"/plotting/auto/?q=%s&amp;station=%s&amp;network=%s&amp;_fmt=text\",\n        $tokens[0],\n        $station,\n        $network\n    );\n    $dluri = sprintf(\n        \"/climodat/?station=%s&amp;network=%s&amp;dl=yes&amp;report=%s\",\n        $station,\n        $network,\n        $report\n    );\n    $xluri = sprintf(\n        \"/climodat/?station=%s&amp;network=%s&amp;xlsx=yes&amp;report=%s\",\n        $station,\n        $network,\n        $report\n    );\n    $content .= <<<EOM\n<p>\n<a href=\"{$dluri}\" class=\"btn btn-primary\"><i class=\"bi bi-journal-bookmark\" aria-hidden=\"true\"></i> Download This Report</a>\n<a href=\"{$xluri}\" class=\"btn btn-primary\"><i class=\"bi bi-download\" aria-hidden=\"true\"></i> Download This Report as Excel</a>\n<a href=\"{$autoploturi}\" class=\"btn btn-primary\"><i class=\"bi bi-graph-up-arrow\" aria-hidden=\"true\"></i> View This Report in Autoplot App</a>\n</p>\n<pre>\nEOM;\n    if (array_key_exists($report, $xref)) {\n        $uri = sprintf(\n            \"%s/plotting/auto/plot/%sstation:%s::network:%s.txt\",\n            $INTERNAL_BASEURL,\n            $xref[$report],\n            $station,\n            $network\n        );\n        $content .= file_get_contents($uri);\n    }\n    $content .= \"</pre>\\n\";\n} else {\n    $content .= <<<EOM\n\n<p>Available stations are presented on the map below. Green dots indicate sites\nthat have data up until today.  Yellow dots have data, but not for a period\nending today.  Clicking on one of the dots will change the station select\nform above.</p>\n\n<div id=\"map\" data-network=\"{$network}\"></div>\n\n<a name=\"ks\"><h3 class=\"subtitle\">\"Kitchen Sink\" Datafiles</h3></a>\n<div>\nWhile the climodat reports are useful, they only provide information for one variable and one site at a time.  These \"kitchen sink\" datafiles contain the raw information broken down by year and month for variables like high/low temperature and precipitation.\n\n<p><strong>Download:</strong>\n<br />You can <a href=\"ks/\">browse a directory</a> to pick the individual files you want.\n\n<p><strong>Format:</strong>\n<br /><img src=\"/images/gisready.png\" style=\"float: left;\"> These text files are in a simple comma delimited format.  Two of the data columns contain the latitude\nand longitude information which allows easy import into most GIS systems.\n\n<p><strong>Details: <i>yearly file</i></strong>\n<br />There is one yearly file (named <a href=\"ks/yearly.csv\">yearly.csv</a>) which contains yearly summaries dating back to 1951.  Please consult the help file (named <a href=\"ks/yearly_ks.txt\">yearly_ks.txt</a>) for further details.\n\n<p><strong>Details: <i>monthly files</i></strong>\n<br />For every year dating back to 1951, there is one file per year which\ncontains monthly summaries of high/low temperature and precipitation.  You\ncan browse <a href=\"ks/\">this directory</a> to pick the files you want. Please\nconsult the help file (named <a href=\"ks/monthly_ks.txt\">monthly_ks.txt</a>)\nfor further details.\n\n<p>Did these reports help?  Please let <a href=\"/info/contacts.php\">us know</a>\nif you would like to see other variables in these files or have any other comments about them.  Enjoy!\n</div>\n\n<p><b>Disclaimer:</b> While we use care to provide accurate weather/climatic information, errors may occur because of equipment or other failure. We therefore provide this information without any warranty of accuracy. Users of this weather/climate data do so at their own risk, and are advised to use independent judgement as to whether to verify the data presented.</p>\n</div>\nEOM;\n}\n$t->content = $content;\n$t->render(\"single.phtml\");\n"
  },
  {
    "path": "htdocs/climodat/monitor.module.js",
    "content": "import { requireElement, requireInputElement } from '/js/iemjs/domUtils.js';\n\n/**\n * Handle map station selection functionality\n */\nfunction handleMapStationSelection() {\n    const addMapStationsBtn = requireElement('#addmapstations');\n    addMapStationsBtn.addEventListener('click', () => {\n        const stationsOut = requireElement('#stations_out');\n        stationsOut.setAttribute('name', 's[]');\n    });\n}\n\n/**\n * Convert date format from HTML5 date input (YYYY-MM-DD) to PHP format (MM/DD/YYYY)\n */\nfunction convertDateFormat(dateValue) {\n    if (!dateValue) {return null;}\n    \n    const dateParts = dateValue.split('-');\n    if (dateParts.length !== 3) {return null;}\n    \n    const [year, month, day] = dateParts;\n    return `${month}/${day}/${year}`;\n}\n\n/**\n * Create hidden input element for form submission\n */\nfunction createHiddenInput(name, value) {\n    const hiddenInput = document.createElement('input');\n    hiddenInput.type = 'hidden';\n    hiddenInput.name = name;\n    hiddenInput.value = value;\n    return hiddenInput;\n}\n\n/**\n * Handle date format conversion for form submission\n */\nfunction handleDateFormSubmission() {\n    const dateForm = document.querySelector('form[name=\"dates\"]');\n    if (!dateForm) {return;}\n\n    dateForm.addEventListener('submit', () => {\n        const sdateInput = requireInputElement('sdate');\n        const edateInput = requireInputElement('edate');\n\n        // Handle start date conversion\n        if (sdateInput.value) {\n            const sdateFormatted = convertDateFormat(sdateInput.value);\n            if (sdateFormatted) {\n                const hiddenSdate = createHiddenInput('sdate', sdateFormatted);\n                dateForm.appendChild(hiddenSdate);\n                sdateInput.removeAttribute('name');\n            }\n        }\n\n        // Handle end date conversion\n        if (edateInput.value) {\n            const edateFormatted = convertDateFormat(edateInput.value);\n            if (edateFormatted) {\n                const hiddenEdate = createHiddenInput('edate', edateFormatted);\n                dateForm.appendChild(hiddenEdate);\n                edateInput.removeAttribute('name');\n            }\n        }\n    });\n}\n\n/**\n * Initialize the monitor page functionality\n */\nfunction init() {\n    handleMapStationSelection();\n    handleDateFormSubmission();\n}\n\n// Initialize when DOM is loaded\nif (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", init);\n} else {\n    init();\n}\n\nexport { init, handleMapStationSelection, handleDateFormSubmission, convertDateFormat };\n"
  },
  {
    "path": "htdocs/climodat/monitor.php",
    "content": "<?php\n// Monitor a bunch of climodat sites\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 89);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/forms.php\";\n\nfunction ss($v)\n{\n    if ($v == '') return '';\n    return intval($v);\n}\n\n$year = date(\"Y\");\n$sdate = get_str404(\"sdate\", \"05/01/{$year}\");\n$network = get_str404(\"network\", \"IACLIMATE\", 9);\n$edate = get_str404(\"edate\", \"12/31/{$year}\");\n$gddbase = get_int404(\"gddbase\", 50);\n$gddfloor = ss(get_str404(\"gddfloor\", \"50\"));\n$gddceil = ss(get_str404(\"gddceil\", \"86\"));\n\n$hiddendates = <<<EOM\n<input type=\"hidden\" name=\"sdate\" value=\"{$sdate}\">\n<input type=\"hidden\" name=\"edate\" value=\"{$edate}\">\nEOM;\n$sdate = strtotime($sdate);\n$edate = strtotime($edate);\n$s = array_key_exists(\"s\", $_GET) ? $_GET[\"s\"] : array();\nif (array_key_exists('r', $_GET)) {\n    $r = $_GET[\"r\"];\n    foreach ($r as $k => $v) {\n        if (($key = array_search($v, $s)) !== false) {\n            unset($s[$key]);\n        }\n    }\n}\n// Prevent stations from appearing twice in the display\n$tmpst = array();\nforeach ($s as $k => $v) {\n    if (in_array($v, $tmpst) || strlen($v) != 6) {\n        unset($s[$k]);\n    } else {\n        $tmpst[] = $v;\n    }\n}\n\n$hiddenstations = \"\";\n$table = \"\";\n$stationgrps = array();\nforeach ($s as $k => $v) {\n    $state = substr($v, 0, 2);\n    if (!array_key_exists($state, $stationgrps)) {\n        $stationgrps[$state] = array();\n    }\n    $stationgrps[$state][] = $v;\n    $hiddenstations .= \"<input type=\\\"hidden\\\" name=\\\"s[]\\\" value=\\\"$v\\\">\";\n}\n$networks = array();\nforeach ($stationgrps as $state => $v) {\n    $networks[] = sprintf(\"%sCLIMATE\", $state);\n}\n$nt2 = new NetworkTable($networks);\n\n$sdatestr = date(\"Y-m-d\", $sdate);\n$edatestr = date(\"Y-m-d\", $edate);\n\n$gddstr = \"gddxx({$gddbase}, {$gddceil}, high, low)\";\nif ($gddfloor == '' || $gddceil == '') {\n    $gddstr = \"gdd_onlybase({$gddbase}, high, low)\";\n}\n$pgconn = iemdb('coop');\n\n// Loop over station groups\nforeach ($stationgrps as $state => $stations) {\n    $sstring = \"('\" . implode(\",\", $stations) . \"')\";\n    $sstring = str_replace(\",\", \"','\", $sstring);\n    // bulk radiation bias values applied below\n    $sql = <<<EOM\n    WITH climo as (\n      SELECT station, sday, avg(precip) as avg_precip,\n      avg(sdd86(high,low)) as avg_sdd,\n      avg({$gddstr}) as avg_gdd,\n      avg(merra_srad) as avg_srad\n      from alldata_{$state} WHERE station in {$sstring}\n      and year > 1950 GROUP by station, sday)\n\n    select o.station,\n       sum({$gddstr}) as ogdd50,\n       sum(o.precip) as oprecip,\n       sum(c.avg_gdd) as cgdd50, sum(c.avg_precip) as cprecip,\n       coalesce(sum(c.avg_srad), 1) as csrad,\n       max(o.high) as maxtmpf, min(o.low) as mintmpf,\n       avg( (o.high + o.low) / 2.0 ) as avgtmpf,\n       sum(c.avg_sdd) as csdd86, sum(sdd86(o.high, o.low)) as osdd86,\n       sum(coalesce(merra_srad, narr_srad / 1.14, hrrr_srad * 1.09)) as osrad\n      from alldata_{$state} o, climo c WHERE\n       o.station in {$sstring}\n       and o.station = c.station\n       and day >= '{$sdatestr}' and day <= '{$edatestr}'\n       and o.sday = c.sday  GROUP by o.station\n       ORDER by o.station ASC\nEOM;\n    $rs = pg_query($pgconn, $sql);\n    for ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n        $table .= sprintf(\n            \"<tr><td>\"\n                . \"<input type=\\\"checkbox\\\" name=\\\"r[]\\\" value=\\\"%s\\\" >\"\n                . \" %s</td><td>%s</td>\"\n                . \"<td>%.2f</td><td>%.2f</td><td>%.2f</td>\"\n                . \"<td>%.1f</td><td>%.1f</td><td>%.1f</td>\"\n                . \"<td>%.1f</td><td>%.1f</td><td>%.1f</td>\"\n                . \"<td>%s</td><td>%s</td><td>%.1f</td>\"\n                . \"<td>%.1f</td><td>%.1f %.1f%%</td></tr>\",\n            $row['station'],\n            $row['station'],\n            $nt2->table[$row['station']]['name'],\n            $row[\"oprecip\"],\n            $row[\"cprecip\"],\n            $row[\"oprecip\"] - $row[\"cprecip\"],\n            $row[\"ogdd50\"],\n            $row[\"cgdd50\"],\n            $row[\"ogdd50\"] - $row[\"cgdd50\"],\n            $row[\"osdd86\"],\n            $row[\"csdd86\"],\n            $row[\"osdd86\"] - $row[\"csdd86\"],\n            $row[\"maxtmpf\"],\n            $row[\"mintmpf\"],\n            $row[\"avgtmpf\"],\n            $row['osrad'],\n            $row['osrad'] - $row['csrad'],\n            ($row['osrad'] - $row['csrad']) / $row['csrad'] * 100.\n        );\n    }\n}\n$nselect = networkSelect($network, \"IA0000\", array(), \"s[]\");\n\n$t = new MyView();\n$showmap = \"d-none\";\nif (array_key_exists('map', $_GET)) {\n    $t->iemss = True;\n    $showmap = \"\";\n}\n$t->title = \"Climodat Station Monitor\";\n\n$sdatestr = date(\"m/d/Y\", $sdate);\n$edatestr = date(\"m/d/Y\", $edate);\n// Convert to HTML5 date format (YYYY-MM-DD) for date inputs\n$sdateiso = date(\"Y-m-d\", $sdate);\n$edateiso = date(\"Y-m-d\", $edate);\n$t->jsextra = <<<EOM\n<script type=\"module\" src=\"monitor.module.js\"></script>\nEOM;\n\n$sselect = selectNetworkType(\"CLIMATE\", $network);\n\n$snice = date(\"d M Y\", $sdate);\n$today = ($edate > time()) ? time() : $edate;\n$enice = date(\"d M Y\", $today);\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n <li class=\"breadcrumb-item\"><a href=\"/climodat/\">Climodat Reports</a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\">IEM Climodat Station Monitor</li>\n</ol>\n</nav>\n\n<p>The purpose of this page is to provide a one-stop view of summarized\nIEM Climodat data for a period of your choice.  Once you have configured\nyour favorite sites, <strong>please bookmark the page</strong>. There are\noptions presented on this page on how to compute Growing Degree Days.  Here\nis a description of the three options.</p>\n\n<ul>\n <li><i>base</i>: This is the base temperature (F) to substract the daily\n average [(high + low) / 2] temperature from.  The resulting value is\n always non-negative.</li>\n <li><i>floor</i>: If the high or low temperature is below this value, the\n temperature is set to this value before the averaging is done. Delete the\n entry to remove this calculation.</li>\n <li><i>ceiling</i>: If the high temperature is above this value, the\n high temperature is set to this value prior to averaging.  Delete the\n entry to remove this calculation.</li>\n</ul>\n\n<p><strong>Updated 4 Oct 2018:</strong>  Model based solar radiation\nvalues are now included.  These values are based on the combination of\nNASA MERRA, NARR, and HRRR data. See <a href=\"/plotting/auto/?q=38\">IEM Autoplot 38</a>\nfor a bias assessment of these values.</p>\n\n<hr />\n<h4>Available States with Data</h4>\n\n<form name=\"switch\">\n{$hiddendates}\n{$hiddenstations}\n<div class=\"mb-3\">\n{$sselect}\n<button type=\"submit\" class=\"btn btn-primary\">Select State</button>\n</div>\n</form>\n\n<hr />\n<div class=\"row\">\n<div class=\"col-md-6\">\n<h4>Available Stations within Selected State</h4>\n\n<form name=\"add\" class=\"mb-3\">\n<input type=\"hidden\" name=\"network\" value=\"{$network}\">\n{$hiddendates}\n{$hiddenstations}\n    {$nselect}\n    <button type=\"submit\" class=\"btn btn-primary\">Add Station</button>\n</form>\n<form name=\"addfrommap\">\n<input type=\"hidden\" name=\"network\" value=\"{$network}\">\n<input type=\"hidden\" name=\"map\" value=\"1\">\n{$hiddendates}\n{$hiddenstations}\n<button type=\"submit\" class=\"btn btn-secondary\">Select Stations From Map</button>\n</form>\n</div>\n<div class=\"col-md-6 {$showmap}\" id=\"mappanel\">\n<!-- The map, when appropriate -->\n<form name=\"iemss\">\n<input type=\"hidden\" name=\"network\" value=\"{$network}\">\n{$hiddendates}\n{$hiddenstations}\n<div id=\"iemss\" data-network=\"{$network}\" data-supports-all=\"0\"></div>\n<button id=\"addmapstations\" type=\"submit\" class=\"btn btn-primary mt-3\">Add Station(s)</button>\n</form>\n</div>\n</div>\n\n<hr />\n<h4>Table Options</h4>\n\n<form name=\"dates\">\n<input type=\"hidden\" name=\"network\" value=\"{$network}\">\n{$hiddenstations}\n<div class=\"table-responsive\">\n<table class=\"table table-sm\">\n<tbody>\n<tr><th>Growing Degree Days</th>\n <td>base: <input type=\"text\" name=\"gddbase\" size=\"4\" value=\"{$gddbase}\" class=\"form-control form-control-sm d-inline-block\" style=\"width: auto;\">\n floor: <input type=\"text\" name=\"gddfloor\" size=\"4\" value=\"{$gddfloor}\" class=\"form-control form-control-sm d-inline-block\" style=\"width: auto;\">\n ceiling: <input type=\"text\" name=\"gddceil\" size=\"4\" value=\"{$gddceil}\" class=\"form-control form-control-sm d-inline-block\" style=\"width: auto;\">\n </td></tr>\n\n<tr><th>Period</th><td>start: <input type=\"date\" id=\"sdate\" name=\"sdate\" value=\"{$sdateiso}\" class=\"form-control form-control-sm d-inline-block\" style=\"width: auto;\">\n    end: <input type=\"date\" id=\"edate\" name=\"edate\" value=\"{$edateiso}\" class=\"form-control form-control-sm d-inline-block\" style=\"width: auto;\"> (inclusive)</td></tr>\n\n<tr><td colspan=\"2\">\n<button type=\"submit\" class=\"btn btn-primary\">Apply Table Options</button>\n</td></tr>\n</tbody>\n</table>\n</div>\n</form>\n\n<hr />\n<h4>The following table is valid for a period from {$snice} to {$enice} (inclusive).</h4>\n\n<p><i>\"Climo\"</i> is the climatology value, which is computed over the period of\nrecord since 1951.</p>\n\n<form name=\"remove\">\n<input type=\"hidden\" name=\"network\" value=\"{$network}\">\n{$hiddenstations}\n{$hiddendates}\n<div class=\"table-responsive\">\n<table class=\"table table-bordered table-striped table-sm\">\n<thead class=\"table-light\"><tr>\n    <th rowspan=\"2\">ID</th>\n    <th rowspan=\"2\">Name</th>\n    <th colspan=\"3\">Precipitation [inch]</th>\n    <th colspan=\"3\">Growing Degree Days (base {$gddbase}, floor {$gddfloor}, ceil {$gddceil})</th>\n    <th colspan=\"3\">Stress Degree Days (base 86)</th>\n    <th colspan=\"3\">Daily Temperature [F]</th>\n    <th colspan=\"2\">Solar Rad [MJ]</th>\n</tr>\n<tr>\n    <th>Total</th><th>Climo</th><th>Departure</th>\n    <th>Total</th><th>Climo</th><th>Departure</th>\n    <th>Total</th><th>Climo</th><th>Departure</th>\n    <th>Max</th><th>Min</th><th>Avg</th>\n    <th>Total</th><th>Departure</th>\n</tr>\n</thead>\n<tbody>{$table}</tbody>\n</table>\n</div>\n\n<button type=\"submit\" class=\"btn btn-danger\">Remove Selected Stations From List</button>\n</form>\nEOM;\n\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/climodat/monthly_ks.txt",
    "content": "IEM Climodat Reports https://mesonet.agron.iastate.edu/climodat\nREADME for monthly 'Kitchen Sink' reports\n\nData Source:\n\n   - Daily observations from the National Weather Service Cooperative\n     Observer (COOP) network in Iowa dating back to 1951.\n\nData File(s):\n\n   - One per year with the nomenclature of <year>_monthly.csv\n\nData Format:\n\n   - Comma delimited.  Should directly import into most any spreadsheet\n     or stats package.   The latitude and longitude columns should also \n     make this file an easy import into GIS as an event theme.\n\nData Units:\n   - Rainfall is in inches\n   - Temperatures are in Fahrenhit\n\nData Fields:\n\n   stationID   => Identification for a site\n   stationName => Traditional name for the site\n   Latitude    => Current latitude of the site\n   Longitude   => Current longitude of the site\n   \n   (Now for each month of the year [01 -> 12], there are 6 columns.)\n\n   ##_MINT  -> Average minimum temperature for month ## of year ????\n   C##_MINT -> Climatological average minimum temperature for month ##\n   ##_MAXT  -> Average maximum temperature for month ## of year ???? \n   C##_MAXT -> Climatological average maximum temperature for month ##\n   ##_PREC  -> Total precipitation for month ## of year ????\n   C##_PREC -> Climatological average precipitation for month ##\n\n   (Then the 6 columns are yearly summaries)\n\n   ????_MINT -> Average minimum temperature for year ????\n   CYR_MINT  -> Climatological average minimum temperature\n   ????_MAXT -> Average maximum temperature for year ????\n   CYR_MAXT  -> Climatological average maximum temperature\n   ????_PREC -> Total precipitation for year ????\n   CYR_PREC  -> Climatological average yearly precipitation \n\n\nData Contact:\n\n   Daryl Herzmann 515.294.5978  akrherz@iastate.edu\n"
  },
  {
    "path": "htdocs/climodat/yearly_ks.txt",
    "content": "IEM Climodat Reports https://mesonet.agron.iastate.edu/climodat\nREADME for yearly 'Kitchen Sink' reports\n\nData Source:\n\n   - Daily observations from the National Weather Service Cooperative\n     Observer (COOP) network in Iowa dating back to 1951.\n\nData File(s):\n\n   - One file named 'yearly.csv'\n\nData Format:\n\n   - Comma delimited.  Should directly import into most any spreadsheet\n     or stats package.   The latitude and longitude columns should also \n     make this file an easy import into GIS as an event theme.\n\nData Units:\n   - Rainfall is in inches\n   - Temperatures are in Fahrenhit\n\nData Fields:\n\n   stationID   => Identification for a site\n   stationName => Traditional name for the site\n   Latitude    => Current latitude of the site\n   Longitude   => Current longitude of the site\n   \n   (Now for each year [1951 -> 2004], there are 3 columns.)\n\n   ????_MINT -> Average minimum temperature for year ????\n   ????_MAXT -> Average maximum temperature for year ????\n   ????_PREC -> Total precipitation for year ????\n\n   (Then the 3 columns are climatologies)\n\n   CYR_MINT  -> Climatological yearly average daily minimum temperature\n   CYR_MAXT  -> Climatological yearly average daily maximum temperature\n   CYR_PREC  -> Climatological average yearly precipitation total\n\nData Contact:\n\n   Daryl Herzmann 515.294.5978  akrherz@iastate.edu\n"
  },
  {
    "path": "htdocs/cocorahs/current.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/mlib.php\";\n$t = new MyView();\n\ndefine(\"IEM_APPID\", 56);\n$network = get_str404('network', 'IA_COCORAHS');\n$sortcol = get_str404('sortcol', 'ts');\n\nfunction ffmt($val){\n    if (is_null($val)) return \"M\";\n    if ($val > 0 and $val < 0.005) return \"T\";\n    return sprintf(\"%.2f\", $val);\n}\n\n$nselect = selectNetworkType(\"COCORAHS\", $network);\n\n$t->title = \"CoCoRaHS Last Observation\";\n$t->current_network = \"CoCoRaHS\";\n\n$dbconn = iemdb(\"coop\");\n$year = date(\"Y\");\n$sql = <<<EOM\nwith today as (\n    select t.id, c.*, t.tzname, t.name, t.county\n    from cocorahs_$year c JOIN stations t on (c.iemid = t.iemid)\n    WHERE day = 'TODAY' and t.network = $1),\nmonth as (\n    SELECT iemid,\n    sum(case when precip is not null then 1 else 0 end) as count,\n    sum(precip) as pmonth from\n    cocorahs_$year s WHERE day >= $2 GROUP by iemid)\n\nselect t.*, m.pmonth, m.count,\nobvalid at time zone t.tzname as local_valid\nfrom today t JOIN month m on (t.iemid = m.iemid)\nORDER by t.id asc\nEOM;\n$day1 = new DateTime();\n$days_this_month = intval($day1->format(\"d\"));\n$stname = iem_pg_prepare($dbconn, $sql);\n$rs = pg_execute($dbconn, $stname, array($network, $day1->format(\"Y-m\") . '-01'));\n$db = array();\nwhile ($row = pg_fetch_assoc($rs)) {\n    $site = $row[\"id\"];\n    $db[$site] = array(\n        'sid' => $site,\n        'ts' => strtotime($row[\"local_valid\"]),\n        'name' => $row[\"name\"],\n        'county' => $row[\"county\"],\n        'pmonth' => $row[\"pmonth\"],\n        'count' => $row[\"count\"],\n        'snow' => ($row[\"snow\"] >= 0) ? $row[\"snow\"] : \" \",\n        'snowd' => ($row[\"snowd\"] >= 0) ? $row[\"snowd\"] : \" \",\n        'ratio' => -1,\n        'pday' => $row[\"precip\"],\n        'pmonth' => $row[\"pmonth\"],\n        'pmiss' => $days_this_month - $row[\"count\"],\n    );\n    if ($db[$site][\"snow\"] > 0.0001 && $db[$site][\"pday\"] > 0.0001) {\n        $db[$site][\"ratio\"] = intval($db[$site][\"snow\"] / $db[$site][\"pday\"]);\n    }\n}\n$db = aSortBySecondIndex($db, $sortcol, \"desc\");\n\n$cols = array(\n    \"ts\" => \"Valid\",\n    \"county\" => \"County\",\n    \"sid\" => \"Site ID\",\n    \"name\" => \"Station Name\",\n    \"tmpf\" => \"Ob Temperature\",\n    \"max_tmpf\" => \"24 hour High\",\n    \"min_tmpf\" => \"24 hour Low\",\n    \"snow\" => \"24 hour Snowfall\",\n    \"snowd\" => \"Snowfall Depth\",\n    \"pday\" => \"24 hour rainfall\",\n    \"pmonth\" => \"Precipitation for Month\"\n);\n\n$baseurl2 = \"current.phtml?sortcol=\";\n$content = <<<EOM\n<p>Sorted by: {$cols[$sortcol]}.\nThe number of observations missing for this month is shown in parenthesis.\n\n<form method=\"GET\" action=\"current.phtml\" name=\"stctrl\">\n<input type=\"hidden\" name=\"sortcol\" value=\"{$sortcol}\">\nOption 1: <strong>View by State:</strong> {$nselect}\n<input type=\"submit\" value=\"Go!\">\n</form>\n\n\n<form name=\"st\" action=\"/my/current.phtml\" method=\"GET\">\n<table class=\"table table-striped table-sm table-bordered\">\n<thead class=\"sticky\">\n<tr>\n  <th rowspan=\"2\">Add:</th>\n  <th rowspan=\"2\"><a href=\"{$baseurl2}sid\">SiteID:</a></th>\n  <th rowspan=\"2\"><a href=\"{$baseurl2}name\">Station Name:</a></th>\n  <th rowspan=\"2\"><a href=\"{$baseurl2}county\">County:</a></th>\n  <th rowspan=\"2\"><a href=\"{$baseurl2}ts\">Valid:</a></th>\n  <th colspan=\"5\">Hydro</th></tr>\n\n<tr>\n  <th><a href=\"{$baseurl2}pday\">24hour Precip</a></th>\n  <th><a href=\"{$baseurl2}pmonth\">Month Precip</a></th>\n  <th><a href=\"{$baseurl2}snow\">Snowfall</a></th>\n  <th><a href=\"{$baseurl2}ratio\">Ratio</a></th>\n  <th><a href=\"{$baseurl2}snowd\">Snow Depth</a></th>\n</tr></thead>\n<tbody>\nEOM;\n$oddrow = true;\n$now = time();\nforeach ($db as $site => $value) {\n    $tdiff = $now - $value[\"ts\"];\n    $obslink = sprintf(\"obs.phtml?station=%s&network=%s\", $site, $network);\n    $content .= <<<EOM\n<tr>\n<th><input type=\"checkbox\" name=\"st[]\" value=\"{$site}\"></th>\n<td>\n<a href=\"{$obslink}\" alt=\"View Obs\"><i class=\"bi bi-list\"></i></a>\n<a href=\"/sites/site.php?station={$site}&network={$network}\">$site</a></td>\n<td>{$value[\"name\"]}</td>\n<td>{$value[\"county\"]}</td>\nEOM;\n    $content .= \"<td>\" . date(\"h:i A\", $value[\"ts\"]) . \"</td>\";\n\n    if ($value[\"pday\"] == 0.0001) $value[\"pday\"] = \"T\";\n    if ($value[\"pmonth\"] == 0.0001) $value[\"pmonth\"] = \"T\";\n    if ($value[\"pday\"] < 0) $value[\"pday\"] = \"M\";\n    if ($value[\"snow\"] == 0.0001) $value[\"snow\"] = \"T\";\n    if ($value[\"snowd\"] == 0.0001) $value[\"snowd\"] = \"T\";\n    if ($value[\"snow\"] < 0) $value[\"snow\"] = \"M\";\n\n    $content .= \"<td>\" . $value[\"pday\"] . \"</td>\";\n    $content .= \"<td>\" . ffmt($value[\"pmonth\"]);\n    if ($value[\"pmiss\"] > 0) $content .= \" (\" . $value[\"pmiss\"] . \")\";\n    $content .= \"</td>\";\n    $content .= \"<td>\" . $value[\"snow\"] . \"</td>\";\n    if ($value[\"ratio\"] > 0) $content .= \"<td>\" . $value[\"ratio\"] . \"</td>\";\n    else $content .= \"<td></td>\";\n    $content .= \"<td>\" . $value[\"snowd\"] . \"</td>\";\n    $content .= \"</tr>\";\n}\n$content .= <<<EOM\n</tbody>\n</table>\n<input type=\"submit\" value=\"Add to Favorites\">\n</form>\nEOM;\n$t->content = $content;\n$t->render('sortables.phtml');\n"
  },
  {
    "path": "htdocs/cocorahs/index.phtml",
    "content": "<?php \nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n\n$t->title = \"CoCoRaHS\";\n\n$t->content = <<<EOM\n\n<h3>Community Collaborative Rain, Hail, and Snow Network</h3>\n\n<p><a href=\"https://cocorahs.org\">CoCoRaHS</a> is a nationwide effort to collect\n    observations of rain, hail, and snowfall.  This network is a lot like the\n    <a href=\"/COOP/\">NWS Cooperative Observer (COOP)</a> network, but is not\n    as official.  The IEM collects the daily reports from this network and\n    offers a few tools for the dataset.</p>\n\n<ul>\n    <li><a href=\"current.phtml\">Sortable Currents</a></li>\n    <li><a href=\"obs.phtml\">View Observations by date or site</a></li>\n</ul>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/cocorahs/obs.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 57);\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\n\n$access = iemdb(\"coop\");\n\n$t = new MyView();\n$t->title = \"CoCoRaHS Observations\";\n\n$station = isset($_GET[\"station\"]) ? xssafe($_GET[\"station\"]) : null;\n$network = isset($_GET[\"network\"]) ? xssafe($_GET[\"network\"]) : \"IA_COCORAHS\";\n$datestr = isset($_GET[\"date\"]) ? substr(xssafe($_GET[\"date\"]), 0, 10) : date(\"Y-m-d\");\n$sortvar = isset($_GET[\"sortvar\"]) ? substr(xssafe($_GET[\"sortvar\"]), 0, 10) : \"precip\";\n$year = get_int404(\"year\", date(\"Y\"));\n\n$single_station_mode = !is_null($station);\n\nif ($year < 2000 || $year > (intval(date(\"Y\")) + 1)) {\n    // naughty request\n    xssafe(\"<tag>\");\n}\n\ntry {\n    $dt = new DateTime($datestr);\n} catch (Exception $e) {\n    xssafe(\"<tag>\");\n}\nif ($sortvar == \"pday\") {\n    $sortvar = \"precip\";\n}\n$opts = array(\"precip\", \"snow\", \"snowd\", \"station\");\nif (!in_array($sortvar, $opts)) {\n    $sortvar = \"precip\";\n}\n$sortdir = \"ASC\";\nif (\n    $sortvar == \"precip\" || $sortvar == \"snow\" ||\n    $sortvar == \"snowd\" || $sortvar == \"max_tmpf\"\n) {\n    $sortdir = \"DESC\";\n}\nif ($single_station_mode) {\n    $link = \"obs.phtml?station=$station&network=$network&year={$year}&sortvar=\";\n    $stname = iem_pg_prepare(\n        $access,\n        <<<EOM\n    SELECT s.*, t.id as station, t.name, t.county\n    from cocorahs_$year s JOIN stations t\n    ON (t.iemid = s.iemid) WHERE t.id = $1\n    ORDER by $sortvar $sortdir\nEOM\n    );\n    $rs = pg_execute($access, $stname, array($station));\n} else {\n    $year = $dt->format(\"Y\");\n    $link = \"obs.phtml?network=$network&date={$datestr}&sortvar=\";\n    $table = sprintf(\"cocorahs_%s\", $dt->format(\"Y\"));\n    $stname = iem_pg_prepare(\n        $access,\n        <<<EOM\n        SELECT s.*, t.id as station, t.name, t.county\n        from $table s JOIN stations t\n        ON (t.iemid = s.iemid) WHERE day = $1 and\n        network = $2 ORDER by $sortvar $sortdir\nEOM\n    );\n    $rs = pg_execute($access, $stname, array($dt->format(\"Y-m-d\"), $network));\n}\n$hirow = 1;\n$table = \"\";\n\nfunction fmt($val){\n    if (is_null($val)){\n        return \"M\";\n    }\n    if ($val > 0 && $val < 0.005){\n        return \"T\";\n    }\n    return $val;\n}\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    $nwsli = $row[\"station\"];\n\n    $rain = fmt($row[\"precip\"]);\n    $snow = fmt($row[\"snow\"]);\n    $snowd = fmt($row[\"snowd\"]);\n\n    $table .= sprintf(\n        '<tr><td><a href=\"obs.phtml?station=%s&network=%s&year=%s\">%s</a></td>'.\n        '<td>%s</td><td>%s</td>'.\n        '<td><a href=\"obs.phtml?date=%s&network=%s\">%s</a></td>'.\n        '<td>%s</td><td>%s</td><td>%s</td></tr>',\n        $nwsli,\n        $network,\n        $year,\n        $nwsli,\n        $row[\"name\"],\n        $row[\"county\"],\n        $row[\"day\"],\n        $network,\n        $row[\"day\"],\n        $rain,\n        $snow,\n        $snowd,\n    );\n\n}\n\n$ss = networkSelect($network, $station);\n$nselect = selectNetworkType(\"COCORAHS\", $network);\n$ys =  yearSelect(2000, $year, \"year\");\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"/cocorahs/\">CoCoRaHS Mainpage</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">CoCoRaHS Obs by Date or Station</li>\n    </ol>\n</nav>\n\n<p>This page allows you to explore CoCoRaHS observations for a given\nstate by date or by single station for a given year.\nYou can then click on stations and dates to update\nthe data presentation.</p>\n\n<div class=\"row mb-4\">\n    <div class=\"col-md-6\">\n        <div class=\"card\">\n            <div class=\"card-body\">\n                <h5 class=\"card-title\">Option 1: Select State and Date</h5>\n                <form method=\"GET\" name=\"switchnet\">\n                    <div class=\"mb-3\">\n                        <label class=\"form-label\">State:</label>\n                        {$nselect}\n                    </div>\n                    <div class=\"mb-3\">\n                        <label for=\"date-input\" class=\"form-label\">Date:</label>\n                        <input type=\"date\" id=\"date-input\" name=\"date\" value=\"{$datestr}\" class=\"form-control\">\n                    </div>\n                    <input type=\"submit\" value=\"Submit\" class=\"btn btn-primary\">\n                </form>\n            </div>\n        </div>\n    </div>\n    <div class=\"col-md-6\">\n        <div class=\"card\">\n            <div class=\"card-body\">\n                <h5 class=\"card-title\">Option 2: Select Station and Year</h5>\n                <form method=\"GET\" name=\"switchnet2\">\n                    <div class=\"mb-3\">\n                        <label class=\"form-label\">Station:</label>\n                        {$ss}\n                    </div>\n                    <div class=\"mb-3\">\n                        <label class=\"form-label\">Year:</label>\n                        {$ys}\n                    </div>\n                    <input type=\"submit\" value=\"Submit\" class=\"btn btn-primary\">\n                </form>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"table-responsive\">\n    <table class=\"table table-striped table-bordered\">\n        <thead class=\"sticky\">\n        <tr>\n          <th><a href=\"{$link}station\">ID #:</a></th>\n          <th>Site Name:</th>\n          <th>County:</th>\n          <th><a href=\"{$link}day\">Date:</a></th>\n          <th><a href=\"{$link}precip\">Precip</a></th>\n          <th><a href=\"{$link}snow\">Snowfall</a></th>\n          <th><a href=\"{$link}snowd\">Snow Depth</a></th>\n        </tr>\n        </thead>\n        <tbody>\n        {$table}\n        </tbody>\n    </table>\n</div>\n\n<div class=\"alert alert-info mt-3\">\n    <p><strong>Usage Tips:</strong></p>\n    <ul class=\"mb-0\">\n        <li>You can highlight the entire table with your cursor and copy-paste it into a spreadsheet program.</li>\n        <li>Errors exist in this dataset and you should evaluate the observations before using.</li>\n    </ul>\n</div>\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/content/date.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/forms.php\";\n$width = 87;\n$height = 60;\n$Font = '/mesonet/data/gis/static/fonts/handgotn.ttf';\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$ts = new DateTime(\"{$year}-{$month}-{$day}\");\n\n$gif = ImageCreate($width, $height);\n\n$black = ImageColorAllocate($gif, 0, 0, 0);\n$white = ImageColorAllocate($gif, 250, 250, 250);\n$green = ImageColorAllocate($gif, 0, 255, 0);\n$red = ImageColorAllocate($gif, 255, 0, 0);\n$grey = ImageColorAllocate($gif, 110, 110, 110);\n\nImageFilledRectangle($gif, 2, 2, $width, $height, $grey);\nImageFilledRectangle($gif, 1, 1, $width - 2, $height - 2, $white);\n\n$size = imagettfbbox(12, 0, $Font, $ts->format(\"M\"));\n$dx = abs($size[2] - $size[0]);\n$dy = abs($size[5] - $size[3]);\n$x_pad = round(($width - $dx) / 2, 0);\nImageTTFText($gif, 12, 0, $x_pad, 15, $black, $Font, $ts->format(\"M\"));\n\n$size = imagettfbbox(20, 0, $Font, $ts->format(\"d\"));\n$dx = abs($size[2] - $size[0]);\n$dy = abs($size[5] - $size[3]);\n$x_pad = round(($width - $dx) / 2, 0);\nImageTTFText($gif, 18, 0, $x_pad, 35, $red, $Font, $ts->format(\"d\"));\n\n$size = imagettfbbox(15, 0, $Font, $ts->format(\"Y\"));\n$dx = abs($size[2] - $size[0]);\n$dy = abs($size[5] - $size[3]);\n$x_pad = round(($width - $dx) / 2, 0);\nImageTTFText($gif, 14, 0, $x_pad, 55, $black, $Font, $ts->format(\"Y\"));\n\nheader(\"content-type: image/png\");\nImagePng($gif);\nImageDestroy($gif);\n"
  },
  {
    "path": "htdocs/content/pil.php",
    "content": "<?php\nrequire \"../../include/forms.php\";\nrequire_once \"../../include/memcache.php\";\n// Generate Cheezy PIL image\n$pil = substr(get_str404(\"pil\", 'AFDDMX'), 0, 6);\n\n// Try to get it from memcached\n$memcache = MemcacheSingleton::getInstance();\n$val = $memcache->get(\"pil_{$pil}.png\");\nif ($val) {\n    header(\"Content-type: image/png\");\n    die($val);\n}\n// Need to buffer the output so that we can save it to memcached later\nob_start();\n\n$img = imagecreate(80, 80);\n$white = imagecolorallocate($img, 255, 255, 255);\n$black = imagecolorallocate($img, 0, 0, 0);\n$ee = imagecolorallocate($img, 150, 150, 150);\nimagefilledrectangle($img, 0, 0, 85, 85, $white);\nimagettftext(\n    $img,\n    32,\n    0,\n    1,\n    35,\n    $black,\n    \"/usr/share/fonts/liberation-mono/LiberationMono-Bold.ttf\",\n    substr($pil, 0, 3)\n);\nimagettftext(\n    $img,\n    12,\n    0,\n    31,\n    54,\n    $ee,\n    \"/usr/share/fonts/liberation-mono/LiberationMono-Bold.ttf\",\n    \"by\"\n);\nimagettftext(\n    $img,\n    14,\n    0,\n    1,\n    74,\n    $black,\n    \"/usr/share/fonts/liberation-mono/LiberationMono-Bold.ttf\",\n    sprintf(\"NWS %s\", substr($pil, 3, 3))\n);\n\nheader(\"content-type: image/png\");\nimagepng($img);\nimagedestroy($img);\n\n$memcache->set(\"pil_{$pil}.png\", ob_get_contents(), 0);\nob_end_flush();\n"
  },
  {
    "path": "htdocs/cool/index.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 103);\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Cool Webcam Lapses\";\n\n$t->content = <<<EOM\n<h3>IEM Cool Webcam Lapses</h3>\n\n<p>The IEM collects and archives still images from many webcams.  We produce\n    <a href=\"/current/camlapse/\">lapses</a> of these still images each day.\n    Sometimes these lapses capture something interesting, so they are shared\n    on <a href=\"https://youtube.com/akrherz\">YouTube</a> for all to easily see.\n    This page highlights some of these lapses.</p>\n\n<h4>Most Recent Web Camera Videos:</h4>\n\n<p>Click on the three-bar menu in upper left corner to display a listing of\n        recent movies.</p>\n\n<iframe src=\"https://www.youtube.com/embed/?listType=user_uploads&list=akrherz\" width=\"100%\" height=\"400\"></iframe>\n\n<p><div>\n<table width=\"100%\">\n<thead> <tr><th colspan=\"2\" align=\"left\"><b>6 May 2007: Gravity Wave</b></th></tr></thead>\n<tbody><tr><td>\n<object width=\"425\" height=\"350\"><param name=\"movie\" value=\"https://www.youtube.com/v/yXnkzeCU3bE\"></param><param name=\"wmode\" value=\"transparent\"></param><embed src=\"https://www.youtube.com/v/yXnkzeCU3bE\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"425\" height=\"350\"></embed></object>\n</td><td>\nJust a wonderful lapse of a gravity wave associated with an intense\nconvective line early on 6 May 2007.  This lapse is from the Tama\nwebcamera and you can see the distinct wave action and the motion of the\nclouds within the wave.\n<br /><br /><a href=\"/onsite/lapses/tama_gw_070506.mpg\">4 MB MPEG1</a>\n</td></tr></tbody></table></div>\n\n<p><div>\n<table width=\"100%\">\n<thead> <tr><th colspan=\"2\" align=\"left\"><b>2 March 2007: Iowa Blizzard</b></th></tr></thead>\n<tbody><tr><td>\n<img src=\"/cool/images/070302_tractor.jpg\" style=\"float: left; margin-right: 15px;\"> Winter brought everything it could muster during the last week of February and into March of 2007. Two ice and snow storms brought Iowa to halt by shuting down interstates from blowing snow with dangerous whiteout conditions.  The webcamera at the ISU Agronomy Farm caught a great lapses of the blowing\nsnow that was common after the storm.\n<br />\n<ul>\n  <li>Attacking the drifts with a backhoe: <a href=\"/onsite/lapses/iemwest_070302_backhoe.mpg\">View 640x480 MPG (1 MB)</a></li>\n  <li>Drifts filling back in: <a href=\"/onsite/lapses/iemwest_070302_2.mpg\">View 640x480 MPG (1 MB)</a></li>\n  <li>Finally, the sun setting:<a href=\"/onsite/lapses/iemwest_070302_sunset.mpg\">View 640x480 MPG (1 MB)</a></li>\n</ul>\n</td></tr></tbody></table></div>\n\n\n<p><div>\n<table width=\"100%\"><thead> <tr><th colspan=\"2\" align=\"left\"><b>17 Jul 2006: Tama Tornado</b></th></tr></thead> <tbody><tr><td><br /><img src=\"/cool/images/STQI4_200607172150.jpg\" width=\"320\"></td><td valign=\"top\"><br />A very short lapse from the Tama webcamera of a funnel cloud and possible tornado to the north of the webcamera.  The tornado appears to touchdown for less than 30 seconds and quickly return to the cloud.  The National Weather Service didn't receive any other confirmation of a tornado.  It is certainly not clear if this was an actual tornado.\n<br /><br /><a href=\"/onsite/lapses/tama_060717_funnel.mpg\">View 640x480 MPG (1 MB)</a>\n</td></tr></tbody></table></div>\n\n<p><div>\n<table width=\"100%\"><thead> <tr><th align=\"left\"><b>6 Jun 2006: Explosive Convection</b></th></tr></thead>\n<tbody><tr><td>\n\n<p>What a tremendous day for webcamera lapses of cumulus convection! This day\nsaw a slow moving cold front provide just enough surface convergence to\nrealize a modest amount of convective energy available in the atmosphere. The\nclear skies and dry air behind the front allowed from some great lapses!\n\n<table>\n<tr>\n  <td><img src=\"images/creston_060606_cu1.jpg\"> <br /><b>Creston #1</b>\n<br /><a href=\"/onsite/lapses/creston_060606_cu1.mpg\">MPEG (3 MB)</a>\n<br /><a href=\"/onsite/lapses/creston_060606_cu1.qt\">AVI (3 MB)</a>\n  <td><img src=\"images/creston_060606_cu2.jpg\"> <br /><b>Creston #2</b>\n<br /><a href=\"/onsite/lapses/creston_060606_cu2.mpg\">MPEG (2.5 MB)</a>\n<br /><a href=\"/onsite/lapses/creston_060606_cu2.qt\">AVI (2.5 MB)</a>\n  <td><img src=\"images/indy_060606_cu1.jpg\"> <br /><b>Indianola</b>\n<br /><a href=\"/onsite/lapses/indy_060606_cu1.mpg\">MPEG (3 MB)</a>\n<br /><a href=\"/onsite/lapses/indy_060606_cu1.qt\">AVI (3 MB)</a>\n<td>\n  <td><img src=\"images/madrid_060606_cu.jpg\"> <br /><b>Madrid</b>\n<br /><a href=\"/onsite/lapses/madrid_060606_cu.mpg\">MPEG (3.4 MB)</a>\n<br /><a href=\"/onsite/lapses/madrid_060606_cu.qt\">AVI (3.4 MB)</a>\n<td>\n  <td><img src=\"images/pella_060606_cu.jpg\"> <br /><b>Pella (Must see!)</b>\n<br /><a href=\"/onsite/lapses/pella_060606_cu.mpg\">MPEG (3 MB)</a>\n<br /><a href=\"/onsite/lapses/pella_060606_cu.qt\">AVI (3 MB)</a>\n<td>\n</tr>\n</table>\n\n</td></tr></tbody>\n</table></div>\n\n\n<p><div>\n<table width=\"100%\"><thead> <tr><th colspan=\"2\" align=\"left\"><b>22 Mar 2006: Radiation 101</b></th></tr></thead> <tbody><tr><td><br /><img src=\"/cool/images/ames_060322_tree.jpg\" width=\"320\"></td><td valign=\"top\"><br />After an early spring snow storm, the skies cleared nicely the next day allowing full sunshine to hit these two evergreen trees near the Ames webcam.  What happened during the day and shown in this lapse can be found in the radiation 101 book.  The green tree absorbs incoming short wave radiation from the sun and then emitts it back to the snow surface as long wave radiation.  The snow reflects the short wave and absorbs the long wave thus melting the snow around the tree near the long wave radiation source (the trees).\n<br /><br /><a href=\"/onsite/lapses/ames_060322_tree.mpg\">View MPG (2 MB)</a>\n<br /><br /><a href=\"/onsite/lapses/ames_060322_tree.qt\">View QT (2 MB)</a>\n</td></tr></tbody></table></div>\n\n\n<p><div>\n<table width=\"100%\"><thead> <tr><th colspan=\"2\" align=\"left\"><b>12 Nov 2005: Ames tornado</b></th></tr></thead> <tbody><tr><td><br /><img src=\"/cool/images/ames_051112.jpg\" width=\"320\"></td><td valign=\"top\"><br />The second tornado caught by a web camera on this day.  This tornado briefly touched down in NW Ames and badly damaged a few houses.  It was the second tornado to hit the city of Ames in 2005.\n<br /><br /><a href=\"/cases/051112/ames_webcam_tornado_kcci/ames_TORNADO.mpg\">View MPG (2 MB)</a>\n<br /><br /><a href=\"/cases/051112/ames_webcam_tornado_kcci/ames_TORNADO.qt\">View QT (2 MB)</a>\n</td></tr></tbody></table></div>\n\n<p><div>\n<table width=\"100%\"><thead> <tr><th colspan=\"2\" align=\"left\"><b>12 Nov 2005: Woodward tornado</b></th></tr></thead> <tbody><tr><td><br /><img src=\"/cool/images/madrid_051112.jpg\" width=\"320\"></td><td valign=\"top\"><br />Just a great time lapse from the Madrid webcamera looking SW toward the city of Woodward.  This storm produced extensive damage there, but the dissipation of the tornado shown in this lapse happened just as the tornado approached the city.  It could have been much worse.\n<br /><br /><a href=\"/cases/051112/madrid_webcam_tornado_kcci/madrid_TORNADO_1.mpg\">View MPG (2 MB)</a>\n<br /><br /><a href=\"/cases/051112/madrid_webcam_tornado_kcci/madrid_TORNADO_1.qt\">View QT (2 MB)</a>\n</td></tr></tbody></table></div>\n\n<p><div>\n<table width=\"100%\"><thead> <tr><th colspan=\"2\" align=\"left\"><b>24 Jul 2005: Tama Cloud Burp</b></th></tr></thead> <tbody><tr><td><br /><img src=\"/cool/images/tama_050724_burp.jpg\" width=\"320\"></td><td valign=\"top\"><br />Nice little lapse of a quick updraft looking northeast from Tama around 7 PM.  If you watch the lapse, you will see a little bit of ice get thrown out of the top of the cloud!  It is kind of neat to see.  14 minutes of time elapse during this lapse.\n<br /><br /><a href=\"/onsite/lapses/tama_050724.mpg\">View MPG (3 MB)</a>\n<br /><br /><a href=\"/onsite/lapses/tama_050724.qt\">View QT (3 MB)</a>\n</td></tr></tbody></table></div>\n\n\n<p><div>\n<table width=\"100%\"><thead>\n<tr><th colspan=\"2\" align=\"left\"><b>12 Jun 2005: Creston Convection</b></th></tr></thead>\n<tbody><tr><td><br /><img src=\"/cool/images/creston_050612.jpg\" width=\"320\"></td><td valign=\"top\"><br />Caught a neat lapse of growing convection looking east from Creston during the late afternoon.  These storms were in an environment of about 2000 J/kg of CAPE and not much shear.  They did not produce any significant hail or wind.\n<br /><br /><a href=\"/onsite/lapses/creston_050612_1.mpg\">View MPG (3 MB)</a>\n<br /><br /><a href=\"/onsite/lapses/creston_050612_1.qt\">View QT (3 MB)</a>\n</td></tr></tbody></table></div>\n\n\n<p><div>\n<table width=\"100%\"><thead>\n<tr><th colspan=\"2\" align=\"left\"><b>6 Jun 2005: Newton Convection</b></th></tr></thead>\n<tbody><tr><td><br /><img src=\"/cool/images/newton_050606.jpg\" width=\"320\"></td>\n<td valign=\"top\"><br />Caught this thunderstorm looking north from Newton.  No severe weather was reported with this cell, but it made for a pretty lapse.  You can see how this cell was not able to sustain an updraft.  This lapse contains\n900 frames between 3:45 and 5:45 PM.\n<br /><br /><a href=\"/onsite/lapses/newton_050606.mpg\">View MPG (8 MB)</a>\n<br /><br /><a href=\"/onsite/lapses/newton_050606.qt\">View QT (8 MB)</a>\n</td></tr></tbody></table></div>\n\n<p><div>\n<table width=\"100%\"><thead>\n<tr><th colspan=\"2\" align=\"left\"><b>8 May 2005: Tornado or Not Tornado...</b></th></tr></thead>\n<tbody><tr><td><br /><img src=\"/cool/images/carr_dust.jpg\" width=\"320\"></td>\n<td valign=\"top\"><br />Was this storm a tornado or not?  It is hard to tell. It certainly did not last long.  The movie shows a rotating(?) dust column to the west of Carroll between 5:06 and 5:09 PM.  The cloud base is at about 4,000 feet and RADAR returns at the time were not indicating much rotation.  You can decide for yourself!\n<br /><br /><a href=\"/onsite/lapses/carr_050508_1.mpg\">View MPG (1.2 MB)</a>\n<br /><br /><a href=\"/onsite/lapses/carr_050508_1.qt\">View QT (1.2 MB)</a>\n</td></tr></tbody></table></div>\n\n<br clear=\"left\" />\n<p><div>\n<table width=\"100%\"><thead>\n<tr><th colspan=\"2\" align=\"left\"><b>29 Oct 2004: Super Cell!</b></th></tr></thead>\n<tbody><tr><td><br /><img src=\"/cool/images/winterset_041029.jpg\" width=\"320\"></td>\n<td valign=\"top\"><br />This is a fancy video at the anvil and overshooting top of a supercell east of the Winterset Camera.  The day was characterized by very strong speed shear and 'good-enough' convective available potential energy (CAPE).  Storms away from the cold front were able to have decent organized structure.\n.<br /><br /><a href=\"/onsite/lapses/winterset_041029.mpg\">View MPG (3.2 MB)</a></td></tr></tbody></table></div>\n\n<br clear=\"left\" />\n<p><div>\n<table width=\"100%\"><thead>\n<tr><th colspan=\"2\" align=\"left\"><b>27 Aug 2004: Humboldt Convection</b></th></tr></thead>\n<tbody><tr><td><br /><img src=\"/cool/images/humboldt_cu.jpg\"></td>\n<td valign=\"top\"><br />This is a video of a supercell east of Humboldt. The\nconvection in this storm is very vigorous and supported very large hail.  This was one of the first cells to fire on a very active weather day in Iowa\n.<br /><br /><a href=\"/onsite/lapses/humboldt_040826_cu.mpg\">View MPG (3.3 MB)</a></td></tr></tbody></table></div>\n\n<br clear=\"left\" />\n<p><div>\n<table width=\"100%\"><thead>\n<tr><th colspan=\"2\" align=\"left\"><b>27 Aug 2004: Rockwell City Beaver Tail</b></th></tr></thead>\n<tbody><tr><td><br /><img src=\"/cool/images/rock_beaver.jpg\"></td>\n<td valign=\"top\"><br />This is a fantastic lapse of a beaver tail flowing\ninto a vigorous thunderstorms.  Storms on this day produced baseball sized\nin numerous locations.  This view is looking west.<br /><br /><a href=\"../onsite/lapses/rockcity_040826_1.mpg\">View MPG (1.7\nMB)</a></td></tr></tbody></table></div>\n\n<br clear=\"left\" />\n<p><div>\n<table width=\"100%\"><thead>\n<tr><th colspan=\"2\" align=\"left\"><b>11 July 2004: Carroll Convection Video\n#2</b></th></tr></thead>\n<tbody><tr><td><br /><img src=\"/cool/images/carr_conv2.jpg\"></td>\n<td valign=\"top\"><br />Another movie of bubbling convection from Carroll.  This shot is looking\nnorthwest.  This is not as nice as the #1 video, but it is still worth the\ndownload for you weather junkies.<br /><br /><a\nhref=\"/onsite/lapses/carroll_040711_1.mpg\">View MPG (6.4\nMB)</a></td></tr></tbody></table></div>\n\n<br clear=\"left\" />\n<p><div>\n<table width=\"100%\"><thead>\n<tr><th colspan=\"2\" align=\"left\"><b>4 July 2004: Carroll Convection Video #1</b></th></tr></thead>\n<tbody><tr><td><br /><img src=\"/cool/images/carr_conv1.jpg\"></td>\n<td valign=\"top\"><br />This is a fantastic movie of bubbling convection as captured by the\nwebcamera in Carroll.  This image is looking due east and near sunset.<br /><br /><a href=\"../onsite/lapses/carroll_040704_1.mpg\">View MPG (4.6 MB)</a>\n</td></tr></tbody></table></div>\n\n<br clear=\"left\" />\n<p><div>\n<table width=\"100%\"><thead><tr><th colspan=\"2\" align=\"left\"><b>11 June 2004: Tornado on Webster City\nWebcamera</b></th></tr></thead>\n<tbody><tr><td>\n<br /><img src=\"/cool/images/web_thumb.jpg\"></td>\n<td valign=\"top\"><br />This tornado was caught by the Webster City webcamera that is a part of <a href=\"/schoolnet/\">KCCI's SchoolNet project</a>.  The movie is taken looking\nfar south and a bit west.<br /><br /><a href=\"/onsite/lapses/webstercity_040611_full.mpg\">View MPG (3\nMB)</a></td></tr><tbody></table></div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/cow/chart.php",
    "content": "<?php\nrequire_once \"../../include/forms.php\";\n/*\n * Generate an image used for the COW output\n */\n$ae = get_str404(\"ae\", \"AAA\");\n$aw = get_str404(\"aw\", \"AAA\");\n$b = get_str404(\"b\", \"BBB\");\n$c = get_str404(\"c\", \"CCC\");\n$d = get_str404(\"d\", \"DDD\");\n\nfunction ImageRectangleWithRoundedCorners(&$im, $x1, $y1, $x2, $y2, $radius, $color)\n{\n    // draw rectangle without corners\n    imagefilledrectangle($im, $x1 + $radius, $y1, $x2 - $radius, $y2, $color);\n    imagefilledrectangle($im, $x1, $y1 + $radius, $x2, $y2 - $radius, $color);\n    // draw circled corners\n    imagefilledellipse($im, $x1 + $radius, $y1 + $radius, $radius * 2, $radius * 2, $color);\n    imagefilledellipse($im, $x2 - $radius, $y1 + $radius, $radius * 2, $radius * 2, $color);\n    imagefilledellipse($im, $x1 + $radius, $y2 - $radius, $radius * 2, $radius * 2, $color);\n    imagefilledellipse($im, $x2 - $radius, $y2 - $radius, $radius * 2, $radius * 2, $color);\n}\nfunction imagettftextalign($image, $size, $angle, $x, $y, $color, $font, $text, $alignment = 'L')\n{\n    //check width of the text\n    $bbox = imagettfbbox($size, $angle, $font, $text);\n    $textWidth = $bbox[2] - $bbox[0];\n    switch ($alignment) {\n        case \"R\":\n            $x -= $textWidth;\n            break;\n        case \"C\":\n            $x -= $textWidth / 2;\n            break;\n    }\n\n    //write text\n    imagettftext($image, $size, $angle, $x, $y, $color, $font, $text);\n}\n\n/* Make fancy chart! */\n$width = 130;\n$height = 122;\n$font = \"/usr/share/fonts/liberation-serif/LiberationSerif-Bold.ttf\";\nif (!file_exists($font)) {\n    http_response_code(422);\n    die(\"Missing font\");\n}\n\n$png = ImageCreate($width, $height);\n\n$white = ImageColorAllocate($png, 255, 255, 255);\n$black = ImageColorAllocate($png, 0, 0, 0);\n$green = ImageColorAllocate($png, 0, 255, 0);\n$blue = ImageColorAllocate($png, 0, 0, 255);\n$red = ImageColorAllocate($png, 255, 0, 0);\n$grey = ImageColorAllocate($png, 220, 220, 220);\n\n/* Draw the box! */\n$margin_left = 40;\n$margin_right = 4;\n$margin_top = 40;\n$margin_bottom = 4;\nImageRectangleWithRoundedCorners($png, $margin_left, $margin_top, $width - $margin_right, $height - $margin_bottom, 10, $black);\nImageRectangleWithRoundedCorners($png, $margin_left + 4, $margin_top + 4, $width - $margin_right - 4, $height - $margin_bottom - 4, 10, $white);\n\n$boxcenterx = $margin_left + (($width - $margin_right - $margin_left) / 2);\n$boxcentery = $margin_top + (($height - $margin_top - $margin_bottom) / 2);\n$boxwidth = $width - $margin_left - $margin_right;\n$boxheight = $height - $margin_top - $margin_bottom;\n\nImageLine($png, $boxcenterx, $margin_top, $boxcenterx, $height - $margin_bottom, $black);\nImageLine($png, $margin_left, $boxcentery, $width - $margin_right, $boxcentery, $black);\n\n\nImageTTFText($png, 12, 90, 14, $height - 2, $blue, $font, \"Observation\");\nImageTTFText($png, 14, 0, 25, $boxcentery - 10, $black, $font, \"Y\");\nImageTTFText($png, 14, 0, 25, $boxcentery + 25, $black, $font, \"N\");\n\nImageTTFText($png, 12, 0, $width - 75, 14, $red, $font, \"Warning\");\nImageTTFText($png, 14, 0, $boxcenterx - 20, 34, $black, $font, \"Y\");\nImageTTFText($png, 14, 0, $boxcenterx + 10, 34, $black, $font, \"N\");\n\n/* Now we get fancy! */\nImageTTFTextAlign($png, 28, 0, $boxcenterx - ($boxwidth / 4), $boxcentery - 2, $grey, $font, \"A\", \"C\");\nImageTTFTextAlign($png, 28, 0, $boxcenterx + ($boxwidth / 4), $boxcentery - 2, $grey, $font, \"B\", 'C');\nImageTTFTextAlign($png, 28, 0, $boxcenterx - ($boxwidth / 4), $boxcentery + 30, $grey, $font, \"C\", 'C');\nImageTTFTextAlign($png, 28, 0, $boxcenterx + ($boxwidth / 4), $boxcentery + 30, $grey, $font, \"D\", 'C');\n\n/* Finally plot! */\nImageTTFTextAlign($png, 14, 0, $boxcenterx - ($boxwidth / 4), $boxcentery - ($boxheight / 4) + 2, $red, $font, $aw, 'C');\nImageTTFTextAlign($png, 14, 0, $boxcenterx - ($boxwidth / 4), $boxcentery - ($boxheight / 4) + 18, $blue, $font, $ae, 'C');\nImageTTFTextAlign($png, 14, 0, $boxcenterx + ($boxwidth / 4), $boxcentery - ($boxheight / 4) + 7, $black, $font, $b, 'C');\nImageTTFTextAlign($png, 14, 0, $boxcenterx - ($boxwidth / 4), $boxcentery + ($boxheight / 4) + 7, $black, $font, $c, 'C');\nImageTTFTextAlign($png, 14, 0, $boxcenterx + ($boxwidth / 4), $boxcentery + ($boxheight / 4) + 7, $black, $font, $d, 'C');\n\nheader(\"Content-type: image/png\");\nImagePng($png);\nImageDestroy($png);\n"
  },
  {
    "path": "htdocs/cow/index.module.js",
    "content": "// COW (Cowley's Verification Application) - ES Module\n// Provides checkbox selection functionality for LSR types and warning types\n\n/**\n * Select all LSR (Local Storm Report) type checkboxes\n * Enables all available LSR report types for verification analysis\n */\nconst selectAllLSRTypes = () => {\n    const lsrTypeIds = [\"T\", \"D\", \"H\", \"G\", \"FF2\", \"MA2\", \"DS2\", \"SQ2\"];\n    lsrTypeIds.forEach(id => {\n        const element = document.getElementById(id);\n        if (element) {\n            element.checked = true;\n        }\n    });\n};\n\n/**\n * Select all warning type checkboxes\n * Enables all available warning types for verification analysis\n */\nconst selectAllWarningTypes = () => {\n    const warningTypeIds = [\"TO\", \"SV\", \"MA\", \"FF\", \"DS\", \"SQ\"];\n    warningTypeIds.forEach(id => {\n        const element = document.getElementById(id);\n        if (element) {\n            element.checked = true;\n        }\n    });\n};\n\n/**\n * Initialize event handlers when DOM is loaded\n * Sets up click handlers for select all buttons\n */\nconst init = () => {\n    // Find all \"Select All\" buttons and determine their context\n    const buttons = document.querySelectorAll('button');\n\n    buttons.forEach(button => {\n        if (button.textContent.trim() === 'Select All') {\n            // Find the closest table row to determine context\n            const row = button.closest('tr');\n            if (row) {\n                const header = row.querySelector('th');\n                if (header) {\n                    const headerText = header.textContent;\n\n                    if (headerText.includes('Warning Type')) {\n                        button.addEventListener('click', (event) => {\n                            event.preventDefault();\n                            selectAllWarningTypes();\n                        });\n                    } else if (headerText.includes('LSR Type')) {\n                        button.addEventListener('click', (event) => {\n                            event.preventDefault();\n                            selectAllLSRTypes();\n                        });\n                    }\n                }\n            }\n        }\n    });\n};\n\n// Initialize when DOM is ready\nif (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n} else {\n    // DOM already loaded\n    init();\n}\n\n// Export functions for potential external use or testing\nexport { selectAllLSRTypes, selectAllWarningTypes, init };\n"
  },
  {
    "path": "htdocs/cow/index.phtml",
    "content": "<?php\ndefine(\"IEM_APPID\", 107);\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/forms.php\";\n$t = new MyView();\n$t->iemselect2 = true;\n$t->iem_resource = \"COW\";\n\n$wtype = isset($_GET[\"wtype\"]) ? xssafe($_GET[\"wtype\"]) : array();\n$ltype = isset($_GET[\"ltype\"]) ? xssafe($_GET[\"ltype\"]) : array();\n$syear = get_int404(\"syear\", date(\"Y\"));\n$smonth = get_int404(\"smonth\", 1);\n$sday = get_int404(\"sday\", 1);\n$shour = get_int404(\"shour\", 12);\n$sts = new DateTime(\"{$syear}-{$smonth}-{$sday} {$shour}:00\");\n\n$tomorrow = new DateTime('now', new DateTimeZone(\"UTC\"));\n$tomorrow->add(new DateInterval(\"PT24H\"));\n\n$eyear = get_int404(\"eyear\", $tomorrow->format(\"Y\"));\n$emonth = get_int404(\"emonth\", $tomorrow->format(\"m\"));\n$eday = get_int404(\"eday\", $tomorrow->format(\"d\"));\n$ehour = get_int404(\"ehour\", 12);\n$ets = new DateTime(\"{$eyear}-{$emonth}-{$eday} {$ehour}:00\");\n\n$hail = isset($_GET[\"hail\"]) ? floatval(xssafe($_GET[\"hail\"])) : 1.0;\n$wind = isset($_REQUEST[\"wind\"]) ? floatval(xssafe($_REQUEST[\"wind\"])) : 58;\n$wfo = isset($_GET[\"wfo\"]) ? substr(xssafe($_GET[\"wfo\"]), 0, 4) : \"MPX\";\n$lsrbuffer = get_int404(\"lsrbuffer\", 15);\n$warnbuffer = isset($_GET[\"warnbuffer\"]) ? floatval(xssafe($_GET[\"warnbuffer\"])) : 0.01;\n$useWindHailTag = isset($_REQUEST[\"windhailtag\"]) ? xssafe($_REQUEST[\"windhailtag\"]) : 'N';\n$limitwarns = isset($_REQUEST[\"limitwarns\"]) ? xssafe($_REQUEST[\"limitwarns\"]) : 'N';\n$fcster = isset($_GET[\"fcster\"]) ? xssafe($_GET[\"fcster\"]) : '';\n\n$abegin = new DateTime(\"2005-08-06\");\nif ($sts < $abegin) {\n    $sts = $abegin;\n}\nif ($ets < $sts) {\n    $n = $sts;\n    $sts = $ets;\n    $ets = $n;\n}\n\nif (in_array(\"FF\", $wtype) && $syear < 2008) {\n    $wtype = array_diff($wtype, array(\"FF\"));\n}\nif (in_array(\"FF\", $ltype) && $syear < 2008) {\n    $ltype = array_diff($ltype, array(\"FF\"));\n}\n\nif (in_array(\"DS\", $wtype) && $syear < 2018) {\n    $wtype = array_diff($wtype, array(\"FF\"));\n}\nif (in_array(\"DS\", $ltype) && $syear < 2018) {\n    $ltype = array_diff($ltype, array(\"DS\"));\n}\n\n$t->title = \"Cow (Storm Based Warning Verification)\";\n$nt = new NetworkTable(\"WFO\");\n\n$y1 = yearSelect(2005, $syear, \"syear\");\n$m1 = monthSelect($smonth, \"smonth\");\n$d1 = daySelect($sday, \"sday\");\n$h1 = gmtHourSelect($shour, \"shour\");\n\n$y2 = yearSelect(2005, $eyear, \"eyear\");\n$m2 = monthSelect($emonth, \"emonth\");\n$d2 = daySelect($eday, \"eday\");\n$h2 = gmtHourSelect($ehour, \"ehour\");\n\n$wselect = '<select name=\"wfo\" class=\"iemselect2\">';\nforeach ($nt->table as $key => $value) {\n    $wselect .= \"<option value=\\\"$key\\\" \";\n    if ($wfo == $key) $wselect .= \"SELECTED\";\n    $wselect .= \">\" . $nt->table[$key][\"name\"] . \" [\" . $key . \"]</option>\\n\";\n}\n$wselect .= \"</select>\";\n\n$ar = array(\n    \"TO\" => \"Tornado\",\n    \"SV\" => \"Svr T'storm\",\n    \"MA\" => \"Marine\",\n    \"FF\" => \"Flash Flood (2008+)\",\n    \"DS\" => \"Dust Storm (2018+)\",\n    \"SQ\" => \"Snow Squall (2018+)\",\n);\n$tselect = \"\";\nforeach ($ar as $k => $v) {\n    $tselect .= sprintf(\n        '<input name=\"wtype[]\" type=\"checkbox\" id=\"%s\" value=\"%s\"%s> ' .\n            '<label for=\"%s\">%s</label> ',\n        $k,\n        $k,\n        (in_array($k, $wtype) ? \" CHECKED\" : \"\"),\n        $k,\n        $v\n    );\n}\n\n$ar = array(\n    \"T\" => \"Tornado\",\n    \"D\" => \"Wind Damage\",\n    \"H\" => \"Hail\",\n    \"G\" => \"Wind Gust\",\n    \"MA\" => \"Marine\",\n    \"FF\" => \"Flash Flood (2008+)\",\n    \"DS\" => \"Dust Storm (2018+)\",\n    \"SQ\" => \"Snow Squall (Oct 2023+)\",\n);\n$ltselect = \"\";\nforeach ($ar as $k => $v) {\n    if ($k == \"MA2\") $ltselect .= \"<br />\";\n    $ltselect .= sprintf(\n        '<input name=\"ltype[]\" type=\"checkbox\" id=\"%s%s\" value=\"%s\"%s> ' .\n            '<label for=\"%s%s\">%s</label> ',\n        $k,\n        (strlen($k) == 2) ? \"2\" : \"\",\n        $k,\n        (in_array($k, $ltype) ? \" CHECKED\" : \"\"),\n        $k,\n        (strlen($k) == 2) ? \"2\" : \"\",\n        $v\n    );\n}\n\n\n$ar = array(\n    \"0.75\" => \"0.75\",\n    \"1.00\" => \"1.00\",\n    \"1.75\" => \"1.75\",\n    \"2.00\" => \"2.00\",\n    \"2.75\" => \"2.75\",\n    \"7.00\" => \"7.00\"\n);\n\n$hselect = make_select(\"hail\", $hail, $ar);\n\n$ar = array(\"5\" => \"5\", \"15\" => \"15\", \"30\" => \"30\");\n$lbselect = make_select(\"lsrbuffer\", $lsrbuffer, $ar);\n\n$ar = array(\"0\" => \"0\", \"0.01\" => \"0.01\");\n$wbuffer = make_select(\"warnbuffer\", $warnbuffer, $ar);\n\n$ar = array(58 => \"58 mph\", 70 => \"70 mph\", 75 => \"75 mph\", 80 => \"80 mph\", 150 => \"150 mph\");\n$wiselect = make_select(\"wind\", $wind, $ar);\n\n$tagselect = '<input id=\"windhailtag\" name=\"windhailtag\" type=\"checkbox\" value=\"Y\" ';\n$tagselect .= (($useWindHailTag == 'Y') ? \" CHECKED\" : \"\");\n$tagselect .= <<<EOM\n> <label for=\"windhailtag\">When possible, verify SVR warnings against\nissuance WIND...HAIL tag</label>\n <a href=\"/nws/list_tags.php\" target=\"_new\"><i class=\"bi bi-link-45deg\" aria-hidden=\"true\"></i> App listing per-WFO tags</a>\n<br /><input id=\"limitwarns\" name=\"limitwarns\" type=\"checkbox\" value=\"Y\"\nEOM;\n$tagselect .= (($limitwarns == 'Y') ? \" CHECKED\" : \"\");\n$tagselect .= '> <label for=\"limitwarns\">When possible, limit considered warnings to your hail/wind threshold</label>';\n\n$forecaster_form = \"\";\n$resetlink = \"/cow/\";\n// Allow for a special bypass to expose this configuration setting\nif (isset($_GET[\"f\"])) {\n    $resetlink = \"/cow/?f\";\n    $forecaster_form = <<<EOM\n    <input type=\"hidden\" name=\"f\" />\n<br />Filter by Product Signature (exact match):<input type=\"text\" name=\"fcster\" size=\"15\" value=\"{$fcster}\" />\nEOM;\n}\n\n$content = <<<EOM\n<a href=\"{$resetlink}\">Reset Application</a> (All timestamps are displayed in UTC)\n<form method=\"GET\" name=\"cow\" rel=\"nofollow\">\n\n<div class=\"row\">\n    <div class=\"col-sm-6\">\n\n<table class=\"table table-sm\">\n<tr><th>Start:</th><td>{$y1} {$m1} {$d1} {$h1}</td></tr>\n<tr><th>End:</th><td>{$y2} {$m2} {$d2} {$h2}</td></tr>\n<tr><th>WFO:</th><td colspan=\"3\">{$wselect}</td></tr>\n<tr><th>Hail Size:</th><td>{$hselect}</td></tr>\n<tr><th>LSR Buffer:</th><td>{$lbselect} km</td></tr>\n<tr><th>Warning Buffer:</th><td>{$wbuffer} degrees</td></tr>\n<tr><th>Wind:</th><td>{$wiselect}</td></tr>\n</table>\n\n    </div>\n    <div class=\"col-sm-6\">\n\n<table class=\"table table-sm\">\n<tr><th>Warning Type:</th>\n<td>\n<button>Select All</button> {$tselect}\n</td></tr>\n\n<tr><th>LSR Type:</th><td>\n\n<button>Select All</button> {$ltselect}\n</td></tr>\n\n <tr><td colspan=\"2\">\n {$tagselect}\n {$forecaster_form}\n </td></tr>\n\n</table>\n\n    </div>\n</div>\n\n<input type=\"submit\" value=\"Go Cow Go\">\n</form>\nEOM;\nif (isset($_GET[\"hail\"])) {\n    require_once \"../../include/cow_worker.php\";\n} else {\n    $content .= <<<EOM\n\n<h3>IEM Cow (NWS Storm Based Warning Verification)</h3>\n\n<p><a href=\"#api\" class=\"btn btn-primary\"><i class=\"bi bi-download\" aria-hidden=\"true\"></i> IEM Cow API Access</a></p>\n\n<p><img src=\"cow.jpg\" align=\"right\" style=\"margin: 5px;\">Data presented here is <b>unofficial</b> and should be used for\neducational purposes only.  This application allows you to view warnings\nand storm reports issued by a Weather Forecast Office (WFO) for a period\nof time of your choice.  The application attempts to automatically provide\nverification numbers for the warnings issued.\n\n<p>This application works for dates after 8 June 2005.\n\n<h3>Storm Based Warnings</h3>\n<p>On the first of October 2007, the National Weather\nService began issuing warnings for tornados, severe weather, floods, and\nmarine hazards on a storm by storm basis.  Previously, the warnings\nwere issued for an entire county. This application attempts to provide\nverification statistics for these storm based warnings.\n\n<p>Related links:\n<ul>\n <li><a href=\"sbwsum.phtml\">Graphical Summaries of Daily SBW</a></li>\n <li><a href=\"sbwstats.phtml\">SBW Size Statistics</a></li>\n</ul>\n\n<br clear=\"all\"/>\n\n<h3>Verification Methodology</h3>\n\n<p><img src=\"verif_example.png\" style=\"float: left; margin-right: 20px;\" />\n\n<p>The map on the left illustrates some of the spatial statistics the Cow\nproduces.  The following is a brief description of these values.\n\n<ul>\n<li><strong>SBW Area: (P)</strong> (<i>black/white outline polygon</i>) This is\nthe areal size of the polygon expressed in square kilometers.  The computation\nis done in the projection \"US National Atlas Equal Area\" (EPSG 9311).</li>\n<li><strong>County Area: (C)</strong> (<i>red outline polygon</i>) Each storm\nbased warning is associated with one or more counties.  This value is the total\narea of the associated counties.  Same projected used as above.</li>\n<li><strong>Size % (C-P)/C</strong> This is the size <strong>reduction</strong>\npercentage of the storm based warning versus the counties. Prior to SBW,\nthe warning would have included the entire area of the county.  So larger\nreduction values are desired.</li>\n<li><strong>Perimeter Ratio:</strong> (<i>purple line</i>) This is an attempt\nto determine how much of the storm based warning perimeter is being influenced\nby a county political boundary.  The ratio is simply the portion of the SBW\nperimeter that closely coincides with a political boundary.  A 100% value\nimplies the warning is simply a retracement of county borders.</li>\n<li><strong>Verification Area %:</strong> (<i>filled ovals</i>) Local Storm\nReports are buffered out in a circular fashion and combined to create a\ncoverage of impacted areas.  The area of the buffered LSRs is then compared\nwith the area of the storm based warning to yield a percentage.</li>\n</ul>\n\n<h3><a name=\"api\"></a> API for IEM Cow Data</h3>\n\n<p>\n<strong>6 April 2026</strong>:  The backend/database computation of a polygon\nshared-border was too intensive and causing large requests to time-out. Code\nwas added to pre-compute the values and store it within the database, but there\nis up to about five minutes of lag for this value to be available for near\nreal-time warnings.  Rewording, for warnings issued within the past five minutes,\nthe shared border value will be missing.\n</p>\n\n<p><strong>29 May 2024</strong>: A few updates were made to provide some\naccounting of tornado <code>POSSIBLE</code> tags within Severe Thunderstorm\nWarnings.</p>\n\n<p><strong>28 Nov 2023</strong>: The option to do verification for Snow Squall\nWarnings was added, but note that verifying LSRs only became an option after\n1 October 2023.  So no prior warnings will show as verified prior to that date.\n</p>\n\n<p>The JSON emitting service endpoint is:\n<br /><code>{$EXTERNAL_BASEURL}/api/1/cow.json</code></p>\n\n<p>This endpoint accepts a large number of CGI parameters via HTTP GET. None of\nthe parameters are required.</p>\n\n<table class=\"table table-striped\">\n<thead>\n<tr><th>Parameter</th><th>Default</th><th>Description</th></tr>\n</thead>\n<tbody>\n\n<tr>\n <td>callback=func</td>\n <td>not used</td>\n <td>This supports JSON-P style requests with the resulting JSON data begin\n encapsulated by a javascript function call. i.e. <code>callback=gotdata</code></td>\n </tr>\n\n<tr>\n <td>wfo=XXX</td>\n <td>All WFOs considered</td>\n <td>This specifies the three character WFO identifier that you wish to get\n statistics for.  If none are specified, then you get the entire NWS.  You can\n provide this parameter one or more times, i.e. <code>wfo=XXX&amp;wfo=YYY</code></td>\n </tr>\n<tr><th colspan=\"3\">Time Specification Option 1</th></tr>\n<tr>\n <td>begints=ISO8601<br />endts=ISO8601</td>\n <td>Last 4 Hour Period</td>\n <td>This start time and end time sets the window to look for NWS Storm Based\n Warnings and Local Storm Reports.  For the case of warnings, the warning must\n have been issued after the start time and have an expiration prior to the end\n time.  The tricky issue issue is when warnings cross either the start or end\n time, this can lead to incomplete statistics (ie a storm report was actually\n covered by a warning, but that warning was outside your time domain. <strong>These\n timestamps are in UTC.</strong>, i.e. <code>begints=2018-06-18T12:00Z&amp;endts=2018-06-19T12:00Z</code>\n</td></tr>\n\n<tr><th colspan=\"3\">Time Specification Option 2</th></tr>\n<tr>\n<td>syear=YYYY smonth=MM sday=DD shour=HH24\n<br />&nbsp;<br />eyear=YYYY emonth=MM eday=DD ehour=HH24\n</td>\n<td>Last 4 Hour Period</td>\n<td>Same time details above as with Option 1, but here you are just specifying manually\neach part of the date, i.e. <code>syear=2018&amp;smonth=6&amp;sday=18&amp;shour=12&amp;eyear=2018&amp;emonth=6&amp;eday=19&amp;ehour=12&amp;</code></td>\n</tr>\n\n<tr>\n<td>phenomena=XX</td>\n<td>All TO, SV, FF, MA, DS</td>\n<td>These are the VTEC phenomena codes that you want the data and stats for.  These\nare two character and the currently supported Storm Based Warning types are\nTornado (TO), Severe Thunderstorm (SV), Flash Flood (FF), Marine (MA), and\nDust Storm (DS). You can\nspecify more than one phenomena, i.e. <code>phenomena=TO&amp;phenomena=SV</code>\n</td></tr>\n\n<tr>\n<td>lsrtype=XX</td>\n<td>All TO, SV, FF, MA, DS</td>\n<td>So like in the case of phenomena above, here you are specifying which\ncategory of Local Storm Reports to consider.  This gets to be a bit difficult\nto fully explain. In general, the codes reflect with Local Storm Report types\nshould be used that can potentially verify the warning. i.e. <code>lsrtype=TO&amp;lsrtype=SV</code>.\nThe two letter identifiers are aliases to explicit LSR types.  You can specify\nthe explicit types of <code>T</code>: Tornado, <code>G</code>: TStorm Wind Gust,\n<code>D</code>: TStorm Wind Damanage, <code>H</code>: Hail.\n</td></tr>\n\n<tr>\n<td>hailsize=SIZE_IN_INCHES</td>\n<td>1.00 inches</td>\n<td>What hail size in inches should be considered when verifying the warnings.  The\npresent day standard is one inch, but previously it was 0.75 inches.  This parameter\nonly considers one value, i.e. <code>hailsize=1.50</code></td></tr>\n\n<tr>\n<td>lsrbuffer=DIST_IN_KM</td>\n<td>15 km</td>\n<td>IEM Cow attempts to provide an areal verification percentage within the polygons,\nthis areal value is computed by buffering out the point LSR reports by the given radius\nin kilometers.  The GIS operation is done in USGS Albers (EPSG:9311).\nexample, <code>lsrbuffer=15</code></td></tr>\n\n<tr>\n<td>warningbuffer=DIST_IN_KM</td>\n<td>1 km</td>\n<td>So this is kind of a bug-a-boo and dirty little secret, but the NWS Storm Based\nWarnings are not necessarily exact in latitude/longitude space.  The basic data\nprovides polygon points with two places of decimal precision.  Given political boundaries\nand other lame limitations, there are places in the country that would never receive\na warning if not for allowing the polygons to buffer out slightly for folks implementing\nworkflows with this data.  So we default to buffer out the warning 1km, which is used\nin verification, but not in size calculations.  example, <code>warningbuffer=1</code></td>\n</tr>\n\n<tr>\n<td>wind=SPEED_IN_MPH</td>\n<td>58 MPH</td>\n<td>For wind Local Storm Reports, what minimum speed should be considered for\nverifying a warning.  This value is not used in the case of Marine Warnings.\nexample, <code>wind=58</code></td></tr>\n\n<tr>\n<td>windhailtag=N_or_Y</td>\n<td>No</td>\n<td>For Severe Thunderstorm Warnings, the tags used to denote the wind speed\nand hail size at issuance are used to verify the warning.  For example, if a hail\ntag of 2 inches was used at issuance, any reports below that would not be considered\nas verifying the report.</td></tr>\n\n<tr>\n<td>limitwarns=N_or_Y</td>\n<td>No</td>\n<td>Use the <code>wind</code> and <code>hailsize</code> parameters to filter\nconsidered warnings for the verification.  For example, if you set <code>wind=70</code>\nthen any warnings issued with a wind tag below 70 MPH would be ignored.</td></tr>\n\n<tr>\n<td>fcster=string</td>\n<td>Not considered</td>\n<td><strong>With this enabled, resulting stats should not be used</strong> This\nwill limit considered warnings to those signed by the exact string provided. This\ncreates a problematic situation with all storm reports considered, but only a subset\nof warnings provided for verification.  The actual verification of individual warnings\nwill be accurate, but the bulk stats are not correct.\nexample, <code>fcster=forecaster10</code></td></tr>\n\n</tbody>\n</table>\n\n<h4>Resulting JSON Schema.</h4>\n\n<pre>\n{\"generated_at\": \"ISO8601\",\n \"params\": {dictionary of how API was called},\n \"stats\": {dictionary of generated statistics},\n   \"area_verify%\": float # percent of polygon area verified\n   \"avg_leadtime[min]\": int # Average leadtime in minutes\n   \"avg_size[sq km]\": float # Average polygon size in square kilometers\n   \"CSI[1]\": float # Critical Success Index 0-1\n   \"events_verified\": int # Number of warning events verified\n   \"events_total\": int # Number of warning events considered for report\n   \"FAR[1]\": float # False Alarm Rate 0-1\n   \"max_leadtime[min]\": int # Longest leadtime in minutes\n   \"min_leadtime[min]\": int # Shortest leadtime in minutes\n   \"POD[1]\": float # Probability of Detection 0-1\n   \"reports_total: int # Number of LSRs considered for report\n   \"shared_border%\": float # percent of polygon border coincident with political bounds\n   \"size_poly_vs_county[%s]\" : float # percent of polygon size compared to county size\n   \"tdq_stormreports\": int # number of non-verifying storm reports in a TOR but outside SVR\n   \"unwarned_reports\": int # number of LSRs without a warning\n   \"svr_with_torpossible_total\": int # number of SVRs with a TORNADO POSSIBLE at issuance\n   \"svr_with_torpossible_verified\": int # number of SVRs with a TORNADO POSSIBLE at issuance that got Tornado LSR\n\n \"events\": GeoJSON-style object of warnings,\n   \"features\": []\n     \"id\": str # unique id for this warning\n     \"properties\":\n       \"ar_ugc\": [] # list of ugc codes for this warning\n       \"ar_ugcname\": [] # list of ugc names for this warning\n       \"areaverify\": float # percent of polygon area verified\n       \"carea\": float # area of associated counties/parishes in square kilometers\n       \"eventid\": int # VTEC Event Identifier\n       \"expire\": \"ISO8601\" # expiration time of warning\n       \"fcster\": str # Forecaster/Product Signature of the warning\n       \"hailtag\": float # IBW Hail Size (inch) at issuance\n       \"issue\": \"ISO8601\" # issue time of warning\n       \"lat0\": float # latitude of polygon centroid\n       \"lead0\": int # leadtime in minutes of the first verifying LSR\n       \"lon0\": float # longitude of polygon centroid\n       \"parea\": float # sq km area of polygon computed in EPSG:9311\n       \"perimeter\": float # perimeter of polygon computed in EPSG:9311\n       \"phenomena\": str # VTEC Phenomena Two-Letter Code\n       \"sharedborder\": float # perimeter of polygon shared with political border\n       \"significance\": str # VTEC Significance One-Letter Code\n       \"status\": str # VTEC Status of last event product update\n       \"statuses\": str # typo of status, but kept for backwards compatibility\n       \"stormreports\": str # comma seperated list of storm report IDs that verified warning\n       \"stormreports_all\": str # comma seperated list of all storm reports within space/time bounds\n       \"verify\": bool # true if warning verified\n       \"wfo\": str # WFO that issued warning\n       \"windtag\": float # IBW Wind Speed (mph) at issuance\n       \"year\": int # year of warning\n       \"tor_in_svrtorpossible\": bool # did the SVR warning have a tornado POSSIBLE at issuance\n \"stormreports\": GeoJSON-style object on LSRS\n   \"features\": []\n     \"id\": int # Sequential LSR identifier used for cross-references\n     \"properties\":\n       \"city\": str # City name of LSR\n       \"county\": str # County name of LSR\n       \"lat0\": float # latitude of LSR\n       \"leadtime\": int # leadtime in minutes to first verifying warning\n       \"lon0\": float # longitude of LSR\n       \"lsrtype\": str # LSR type (SV, TO, FF, MA)\n       \"magnitude\": float # LSR magnitude\n       \"remark\": str # LSR remark\n       \"source\": str # LSR source\n       \"state\": str # State identifier of LSR\n       \"tdq\": bool # Was this LSR covered only by a TOR warning, but not of a\n                   # TOR LSR type?  Such events are not counted against verif.\n       \"type\": str # IEM internal LSR type code (1 char)\n       \"typetext\": str # LSR type found in NWS Product Text\n       \"valid\": \"ISO8601\" # LSR valid time\n       \"warned\": bool # Was this LSR warned for?\n       \"wfo\": str # WFO that issued warning\n}\n</pre>\n\n<p>There is a <a href=\"https://github.com/akrherz/DEV/blob/main/cow/api2shapefile.py\">Python based example</a>\nthat uses this API to generate shapefiles of the verification data.</p>\n\nEOM;\n}\n$t->jsextra = <<<EOM\n<script type=\"module\" src=\"index.module.js\"></script>\nEOM;\n$t->content = $content;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/cow/maplsr.phtml",
    "content": "<?php\n/* Legacy App that dynamically forwards to LSR app */\nrequire_once \"../../config/settings.inc.php\";\n\n$ts = isset($_GET[\"ts\"]) ? strtotime($_GET[\"ts\"]) : time();\n$ts2 = isset($_GET[\"ts2\"]) ? strtotime($_GET[\"ts2\"]) : $ts;\n$wfo = isset($_GET[\"wfo\"]) ? $_GET[\"wfo\"] : \"\";\n$mywfos = isset($_GET[\"wfos\"]) ? $_GET[\"wfos\"] : array();\nif (sizeof($mywfos) == 0 && $wfo != \"\") {\n    $mywfos[] = $wfo;\n}\n$url = sprintf(\n    \"/lsr/?by=wfo&wfo=%s&sts=%s&ets=%s\",\n    implode(\",\", $mywfos),\n    date(\"YmdHi\", $ts),\n    date(\"YmdHi\", $ts2)\n);\nheader(\"Location: $url\");\n"
  },
  {
    "path": "htdocs/cow/sbwstats.css",
    "content": ".phto  { background: #FFC1C1 !important; }\n.phsv  { background: #FFFF7E !important;}\n.phma  { background: #A2CD5A !important;}\n.phfa { background: #C8F526 !important;}\n.phff { background: #FFEC8B !important;}\n.phds { background: #FFE4C4 !important;}\n.phsq { background: #C71585 !important;}"
  },
  {
    "path": "htdocs/cow/sbwstats.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 149);\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/myview.php\";\n\n$t = new MyView();\n$t->title = \"Storm Based Warning Stats\";\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" type=\"text/css\" href=\"sbwstats.css\">\nEOM;\n\n$nt = new NetworkTable(\"WFO\", TRUE);\n$postgis = iemdb(\"postgis\");\n\n$syear = get_int404(\"syear\", date(\"Y\", time() - 86400));\n$eyear = get_int404(\"eyear\", date(\"Y\", time() - 86400));\n$smonth = get_int404(\"smonth\", date(\"m\", time() - 86400));\n$sday = get_int404(\"sday\", date(\"d\", time() - 86400));\n$shour = get_int404(\"shour\", 0);\n$emonth = get_int404(\"emonth\", date(\"m\"));\n$eday = get_int404(\"eday\", date(\"d\"));\n$ehour = get_int404(\"ehour\", 0);\n\n$sortby = isset($_GET[\"sortby\"]) ? xssafe($_GET[\"sortby\"]) : \"wfo\";\n$sts = mktime($shour, 0, 0, $smonth, $sday, $syear);\n$ets = mktime($ehour, 0, 0, $emonth, $eday, $eyear);\n$gis_url = sprintf(\n    \"/cgi-bin/request/gis/watchwarn.py?limit1=yes&amp;\" .\n        \"year1=%s&amp;month1=%s&amp;day1=%s&amp;hour1=%s&amp;minute1=0&amp;\" .\n        \"year2=%s&amp;month2=%s&amp;day2=%s&amp;hour2=%s&amp;minute2=0\",\n    date(\"Y\", $sts),\n    date(\"m\", $sts),\n    date(\"d\", $sts),\n    date(\"H\", $sts),\n    date(\"Y\", $ets),\n    date(\"m\", $ets),\n    date(\"d\", $ets),\n    date(\"H\", $ets)\n);\n\n$stname = iem_pg_prepare($postgis, \"SELECT wfo, phenomena, count(*) as cnt,\n  sum( st_area2d( ST_transform(geom,9311) ) ) as sum_polysize,\n  avg( st_area2d( ST_transform(geom,9311) ) ) as avg_polysize,\n  sum( st_perimeter( ST_transform(geom,9311) ) ) as sum_perimsize,\n  avg( st_perimeter( ST_transform(geom,9311) ) ) as avg_perimsize\n  from sbw WHERE status = 'NEW' and \n  phenomena IN ('SV','TO','MA','FF','FA','DS','SQ') and significance = 'W'\n  and issue BETWEEN $1 and $2 GROUP by wfo, phenomena ORDER by $sortby ASC\");\n\npg_query($postgis, \"SET TIME ZONE 'UTC'\");\n$rs = pg_execute(\n    $postgis,\n    $stname,\n    array(date('Y-m-d H:i', $sts), date('Y-m-d H:i', $ets))\n);\n\n$data = array();\n$sorted = array();\n$suffixes = array(\"cnt\", \"sum_polysize\", \"sum_perimsize\", \"avg_polysize\", \"avg_perimsize\");\n$phenoms = array(\"SV\", \"TO\", \"MA\", \"FF\", \"FA\", \"DS\", \"SQ\");\nwhile ($row = pg_fetch_assoc($rs)) {\n    $wfo = $row[\"wfo\"];\n    if (!array_key_exists($wfo, $data)) {\n        $sorted[] = $wfo;\n        $data[$wfo] = array();\n        foreach ($phenoms as $k => $p) {\n            foreach ($suffixes as $k => $s) {\n                $data[$wfo][\"{$p}_$s\"] = 0;\n            }\n        }\n    }\n    $data[$wfo][$row[\"phenomena\"] . \"_sum_polysize\"] = $row[\"sum_polysize\"];\n    $data[$wfo][$row[\"phenomena\"] . \"_sum_perimsize\"] = $row[\"sum_perimsize\"];\n    $data[$wfo][$row[\"phenomena\"] . \"_avg_polysize\"] = $row[\"avg_polysize\"];\n    $data[$wfo][$row[\"phenomena\"] . \"_avg_perimsize\"] = $row[\"avg_perimsize\"];\n    $data[$wfo][$row[\"phenomena\"] . \"_cnt\"] = $row[\"cnt\"];\n}\n\n$table = \"\n<table border=\\\"1\\\" class=\\\"table\\\">\n<caption>Data valid for warnings issued between \" . date('d M Y H:i', $sts) . \" and \" . date('d M Y H:i', $ets) . \" UTC</caption>\n<thead class=\\\"sticky\\\">\n<tr>\n  <th colspan='2'>Weather Forecast Office</th>\n  <th colspan='3'>Summary</th>\n  <th colspan='3' class='phto'>Tornado</th>\n  <th colspan='3' class='phsv'>Severe Thunderstorm</th>\n  <th colspan='3' class='phma'>Marine</th>\n  <th colspan='3' class='phff'>Flash Flood</th>\n  <th colspan='3' class='phfa'>Areal Flood</th>\n  <th colspan='3' class='phds'>Dust Storm</th>\n  <th colspan='3' class='phsq'>Snow Squall</th>\n</tr>\n<tr>\n <th>ID</th><th>Name</th>\n <th>Cnt</th><th>Perim</th><th>Area</th>\n <th class='phto'>Cnt</th><th class='phto'>Perim</th><th class='phto'>Area</th>\n <th class='phsv'>Cnt</th><th class='phsv'>Perim</th><th class='phsv'>Area</th>\n <th class='phma'>Cnt</th><th class='phma'>Perim</th><th class='phma'>Area</th>\n <th class='phff'>Cnt</th><th class='phff'>Perim</th><th class='phff'>Area</th>\n <th class='phfa'>Cnt</th><th class='phfa'>Perim</th><th class='phfa'>Area</th>\n <th class='phds'>Cnt</th><th class='phds'>Perim</th><th class='phds'>Area</th>\n <th class='phsq'>Cnt</th><th class='phsq'>Perim</th><th class='phsq'>Area</th>\n</tr>\n</thead>\n<tbody>\n\";\n$totals = array(\n    \"TO_cnt\" => 0, \"TO_perim\" => 0, \"TO_area\" => 0,\n    \"SV_cnt\" => 0, \"SV_perim\" => 0, \"SV_area\" => 0,\n    \"MA_cnt\" => 0, \"MA_perim\" => 0, \"MA_area\" => 0,\n    \"FF_cnt\" => 0, \"FF_perim\" => 0, \"FF_area\" => 0,\n    \"FA_cnt\" => 0, \"FA_perim\" => 0, \"FA_area\" => 0,\n    \"DS_cnt\" => 0, \"DS_perim\" => 0, \"DS_area\" => 0,\n    \"SQ_cnt\" => 0, \"SQ_perim\" => 0, \"SQ_area\" => 0,\n);\nforeach ($sorted as $v => $wfo) {\n    foreach ($phenoms as $idx => $phenom) {\n        $totals[\"{$phenom}_cnt\"] += $data[$wfo][\"{$phenom}_cnt\"];\n        $totals[\"{$phenom}_perim\"] += $data[$wfo][\"{$phenom}_sum_perimsize\"];\n        $totals[\"{$phenom}_area\"] += $data[$wfo][\"{$phenom}_sum_polysize\"];\n    }\n\n    $cnt = $data[$wfo][\"TO_cnt\"] +\n        $data[$wfo][\"SV_cnt\"] +\n        $data[$wfo][\"MA_cnt\"] +\n        $data[$wfo][\"FA_cnt\"] +\n        $data[$wfo][\"FF_cnt\"] +\n        $data[$wfo][\"DS_cnt\"] +\n        $data[$wfo][\"SQ_cnt\"];\n    $perim = $data[$wfo][\"TO_sum_perimsize\"] +\n        $data[$wfo][\"SV_sum_perimsize\"] +\n        $data[$wfo][\"MA_sum_perimsize\"] +\n        $data[$wfo][\"FA_sum_perimsize\"] +\n        $data[$wfo][\"FF_sum_perimsize\"] +\n        $data[$wfo][\"DS_sum_perimsize\"] +\n        $data[$wfo][\"SQ_sum_perimsize\"];\n    $poly = $data[$wfo][\"TO_sum_polysize\"] +\n        $data[$wfo][\"SV_sum_polysize\"] +\n        $data[$wfo][\"MA_sum_polysize\"] +\n        $data[$wfo][\"FA_sum_polysize\"] +\n        $data[$wfo][\"FF_sum_polysize\"] +\n        $data[$wfo][\"DS_sum_polysize\"] +\n        $data[$wfo][\"SQ_sum_polysize\"];\n\n    $counts = array();\n    foreach ($phenoms as $k => $p) {\n        $counts[$p] = max(1, $data[$wfo][\"{$p}_cnt\"]);\n    }\n    $table .= sprintf(\n        \"<tr><td>%s</td><td>%s</td>\n         <td>%s</td><td>%.1f</td><td>%.1f</td>\n         <td class='phto'>%s</td><td class='phto'>%.1f</td><td class='phto'>%.1f</td>\n         <td class='phsv'>%s</td><td class='phsv'>%.1f</td><td class='phsv'>%.1f</td>\n         <td class='phma'>%s</td><td class='phma'>%.1f</td><td class='phma'>%.1f</td>\n         <td class='phff'>%s</td><td class='phff'>%.1f</td><td class='phff'>%.1f</td>\n         <td class='phfa'>%s</td><td class='phfa'>%.1f</td><td class='phfa'>%.1f</td>\n         <td class='phds'>%s</td><td class='phds'>%.1f</td><td class='phds'>%.1f</td>\n         <td class='phsq'>%s</td><td class='phsq'>%.1f</td><td class='phsq'>%.1f</td>\n          </tr>\",\n        $wfo,\n        $nt->table[$wfo]['name'],\n        $cnt,\n        $perim / $cnt / 1000.0,\n        $poly / $cnt / 1000000.0,\n        $data[$wfo][\"TO_cnt\"],\n        $data[$wfo][\"TO_sum_perimsize\"] / $counts[\"TO\"] / 1000.0,\n        $data[$wfo][\"TO_sum_polysize\"] / $counts[\"TO\"] / 1000000.0,\n        $data[$wfo][\"SV_cnt\"],\n        $data[$wfo][\"SV_sum_perimsize\"] / $counts[\"SV\"] / 1000.0,\n        $data[$wfo][\"SV_sum_polysize\"] / $counts[\"SV\"] / 1000000.0,\n        $data[$wfo][\"MA_cnt\"],\n        $data[$wfo][\"MA_sum_perimsize\"] / $counts[\"MA\"] / 1000.0,\n        $data[$wfo][\"MA_sum_polysize\"] / $counts[\"MA\"] / 1000000.0,\n        $data[$wfo][\"FF_cnt\"],\n        $data[$wfo][\"FF_sum_perimsize\"] / $counts[\"FF\"] / 1000.0,\n        $data[$wfo][\"FF_sum_polysize\"] / $counts[\"FF\"] / 1000000.0,\n        $data[$wfo][\"FA_cnt\"],\n        $data[$wfo][\"FA_sum_perimsize\"] / $counts[\"FA\"] / 1000.0,\n        $data[$wfo][\"FA_sum_polysize\"] / $counts[\"FA\"] / 1000000.0,\n        $data[$wfo][\"DS_cnt\"],\n        $data[$wfo][\"DS_sum_perimsize\"] / $counts[\"DS\"] / 1000.0,\n        $data[$wfo][\"DS_sum_polysize\"] / $counts[\"DS\"] / 1000000.0,\n        $data[$wfo][\"SQ_cnt\"],\n        $data[$wfo][\"SQ_sum_perimsize\"] / $counts[\"SQ\"] / 1000.0,\n        $data[$wfo][\"SQ_sum_polysize\"] / $counts[\"SQ\"] / 1000000.0\n    );\n}\n\n$tcount = $totals[\"TO_cnt\"] + $totals[\"SV_cnt\"] + $totals[\"MA_cnt\"] +\n    $totals[\"FF_cnt\"] + $totals[\"FA_cnt\"] + $totals[\"DS_cnt\"] + $totals[\"SQ_cnt\"];\n$tpoly = $totals[\"TO_area\"] + $totals[\"SV_area\"] + $totals[\"MA_area\"] +\n    $totals[\"FF_area\"] + $totals[\"FA_area\"] + $totals[\"DS_area\"] + $totals[\"SQ_area\"];\n$tperim = $totals[\"TO_perim\"] + $totals[\"SV_perim\"] + $totals[\"MA_perim\"] +\n    $totals[\"FF_perim\"] + $totals[\"FA_perim\"] + $totals[\"DS_perim\"] + $totals[\"SQ_perim\"];\n\n$counts = array();\nforeach ($phenoms as $k => $p) {\n    $counts[$p] = max(1, $totals[\"{$p}_cnt\"]);\n}\n\nfunction mydiv($numer, $demon){\n    if (is_null($demon) || $demon == 0){\n        return 0;\n    }\n    return $numer / $demon;\n}\n\n$table .= sprintf(\n    \"<tr><th> </th><th>Total/Averages</th>\" .\n        \"<th>%s</th><th>%.1f</th><th>%.1f</th>\" .\n        \"<th class='phto'>%s</th><th class='phto'>%.1f</th><th class='phto'>%.1f</th>\" .\n        \"<th class='phsv'>%s</th><th class='phsv'>%.1f</th><th class='phsv'>%.1f</th>\" .\n        \"<th class='phma'>%s</th><th class='phma'>%.1f</th><th class='phma'>%.1f</th>\" .\n        \"<th class='phff'>%s</th><th class='phff'>%.1f</th><th class='phff'>%.1f</th>\" .\n        \"<th class='phfa'>%s</th><th class='phfa'>%.1f</th><th class='phfa'>%.1f</th>\" .\n        \"<th class='phds'>%s</th><th class='phds'>%.1f</th><th class='phds'>%.1f</th>\" .\n        \"<th class='phsq'>%s</th><th class='phsq'>%.1f</th><th class='phsq'>%.1f</th>\" .\n        \"</tr>\",\n    $tcount,\n    mydiv($tperim, $tcount) / 1000.0,\n    mydiv($tpoly, $tcount) / 1000000.0,\n    $totals[\"TO_cnt\"],\n    mydiv($totals[\"TO_perim\"], $counts[\"TO\"]) / 1000.0,\n    mydiv($totals[\"TO_area\"], $counts[\"TO\"]) / 1000000.0,\n    $totals[\"SV_cnt\"],\n    mydiv($totals[\"SV_perim\"], $counts[\"SV\"]) / 1000.0,\n    mydiv($totals[\"SV_area\"], $counts[\"SV\"]) / 1000000.0,\n    $totals[\"MA_cnt\"],\n    mydiv($totals[\"MA_perim\"], $counts[\"MA\"]) / 1000.0,\n    mydiv($totals[\"MA_area\"], $counts[\"MA\"]) / 1000000.0,\n    $totals[\"FF_cnt\"],\n    mydiv($totals[\"FF_perim\"], $counts[\"FF\"]) / 1000.0,\n    mydiv($totals[\"FF_area\"], $counts[\"FF\"]) / 1000000.0,\n    $totals[\"FA_cnt\"],\n    mydiv($totals[\"FA_perim\"], $counts[\"FA\"]) / 1000.0,\n    mydiv($totals[\"FA_area\"], $counts[\"FA\"]) / 1000000.0,\n    $totals[\"DS_cnt\"],\n    mydiv($totals[\"DS_perim\"], $counts[\"DS\"]) / 1000.0,\n    mydiv($totals[\"DS_area\"], $counts[\"DS\"]) / 1000000.0,\n    $totals[\"SQ_cnt\"],\n    mydiv($totals[\"SQ_perim\"], $counts[\"SQ\"]) / 1000.0,\n    mydiv($totals[\"SQ_area\"], $counts[\"SQ\"]) / 1000000.0\n);\n\n$table .= \"</tbody></table>\";\n\n$y1select = yearSelect(2002, $syear, \"syear\");\n$m1select = monthSelect($smonth, \"smonth\");\n$d1select = daySelect($sday, \"sday\");\n$h1select = hour24Select($shour, \"shour\");\n$y2select = yearSelect(2002, $eyear, \"eyear\");\n$m2select = monthSelect($emonth, \"emonth\");\n$d2select = daySelect($eday, \"eday\");\n$h2select = hour24Select($ehour, \"ehour\");\n\n/* BEGIN OUTPUT! */\n$t->content = <<<EOM\n<h3>Storm Based Warning Geometry Statistics</h3>\n\n<p>Pick a time period of your choice and get back a summary table of\nstorm based warning polygon statistics. You should be able to highlight \nthis table and paste it into Excel, if you wish.  Please note that prior to\nformal implementation of Storm Based Warnings, the polygons were not the official \nwarning and so their shape may not have been accurately representing the threat.\n<br /><strong>Note:</strong>  Areal flood warning polygons have only been issued\nsince summer of 2007.\n<br /><strong>Perimeter values are in kilometers and area values in square kilometers.</strong>\n<br /><b>Links:</b> <a class=\"btn btn-info\" href=\"{$gis_url}\">Download shapefile of these warnings</a> - \n<a class=\"btn btn-info\" href=\"sbwsum.phtml\">View visual summaries</a></p>\n\n\n<form method=\"GET\" name=\"a21234\">\n<table cellpadding=\"3\" class=\"table table-striped\">\n<thead class=\"sticky\">\n <tr><td></td><th>Year</th><th>Month</th><th>Day</th><th>Hour</th><td></td></tr>\n</thead>\n<tbody>\n <tr><td>Start:</td>\n  <td>{$y1select}</td>\n  <td>{$m1select}</td>\n  <td>{$d1select}</td>\n  <td>{$h1select}</td>\n  <td><input type='submit' value='Generate Stats'></td>\n <tr><td>End:</td>\n  <td>{$y2select}</td>\n  <td>{$m2select}</td>\n  <td>{$d2select}</td>\n  <td>{$h2select}</td>\n  <td></td>\n </tr>\n</tbody>\n</table>\n</form>\n\n\n{$table}\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/cow/sbwsum.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 152);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\n\n$year = get_int404(\"year\", date(\"Y\", time() - 3600));\n$month = get_int404(\"month\", date(\"m\", time() - 3600));\n$day = get_int404(\"day\", date(\"d\", time() - 3600));\n$sortby = isset($_GET[\"sortby\"]) ? xssafe($_GET[\"sortby\"]) : \"size\";\n$typ = isset($_GET[\"typ\"]) ? xssafe($_GET[\"typ\"]) : \"W\";\n\n$d = array(\"size\" => \"S\", \"wfo\" => \"W\", \"time\" => \"T\");\n\n$ts = mktime(0, 0, 0, $month, $day, $year);\n\n$archivebegin = mktime(0, 0, 0, 1, 1, 2005);\nif ($ts < $archivebegin) {\n    $ts = $archivebegin;\n}\n\n$imap = sprintf(\n    \"%s/plotting/auto/plot/203/typ:%s::sort:%s::date:%s.txt\",\n    $INTERNAL_BASEURL,\n    substr($typ, 0, 1),\n    $d[$sortby],\n    date(\"Y-m-d\", $ts)\n);\n$imgurl = sprintf(\n    \"/plotting/auto/plot/203/typ:%s::sort:%s::date:%s.png\",\n    substr($typ, 0, 1),\n    $d[$sortby],\n    date(\"Y-m-d\", $ts)\n);\n\n$gis_url = sprintf(\n    \"/cgi-bin/request/gis/watchwarn.py?year1=%s&amp;year2=%s&amp;\" .\n        \"month1=%s&amp;day1=%s&amp;hour1=0&amp;minute1=0&amp;month2=%s&amp;\" .\n        \"day2=%s&amp;hour2=0&amp;minute2=0&amp;limit1=yes\",\n    date(\"Y\", $ts),\n    date(\"Y\", $ts),\n    date(\"m\", $ts),\n    date(\"d\", $ts),\n    date(\"m\", $ts + 86400),\n    date(\"d\", $ts + 86400)\n);\n\n$t = new MyView();\n$t->title = \"Storm Based Warning Polygon Visual Summary\";\n\n$opts = array(\n    \"size\" => \"Polygon Size\",\n    \"wfo\" => \"NWS WFO Office\",\n    \"time\" => \"Issuance Time\"\n);\n$sselect = make_select(\"sortby\", $sortby, $opts);\n$opts = array(\n    \"W\" => \"Tornado + Severe Thunderstorm Warning\",\n    \"F\" => \"Flash Flood Warning\",\n    \"M\" => \"Marine Warning\"\n);\n$wselect = make_select(\"typ\", $typ, $opts);\n\n\n$today = date(\"d M Y\", time() - 3600);\n\n$ys = yearSelect(2002, date(\"Y\", $ts), \"year\");\n$ds = daySelect(date(\"d\", $ts), \"day\");\n$ms = monthSelect(date(\"m\", $ts), \"month\");\n$content = <<<EOM\n\n<div class=\"page-header\">\n<h3>Daily Storm Based Warning Summaries</h3>\n</div>\n\n<div class=\"row\">\n<div class=\"col-md-5\">\n\n<form method=\"GET\">\n\n<table class=\"table table-bordered\"><caption>Select a date:</caption>\n<thead><tr><th>Year:</th><th>Month:</th><th>Day:</th><td></td></tr></thead>\n<tbody>\n<tr>\n<td>{$ys}</td>\n<td>{$ms}</td>\n<td>{$ds}</td>\n<td rowspan=\"2\"><input type=\"submit\" value=\"GO!\"></td>\n</tr>\n<tr><td colspan=\"3\">\nSort by: {$sselect}\n<br />Warning Types: {$wselect}\n\n</td></tr>\n</tbody>\n</table>\n</form>\n</div><!-- end of col-md-5 -->\n<div class=\"col-md-7\">\n\n<p>This application displays an image summary of NWS\nStorm Based Warnings for a\ngiven UTC date (0z to 0z).  This summary is based \non an archive the IEM maintains and so is unofficial.  Also, prior to\n1 October 2007, these warnings were not official and their shapes may or \nmay not have been considered by the issuing forecaster. This page works for\ndates between 1 Jan 2002 and {$today}.\nAreas are computed and polygons shown using a US National Atlas Equal Area \nprojection (EPSG:9311).</p>\n\n<p><strong>Related Data Links:</strong>\n<br /> You can download a GIS dataset with these polygons via the\n<a href=\"/request/gis/watchwarn.phtml\">GIS WWA Download</a>. For convenience,\nhere is a <a href=\"{$gis_url}\">direct shapefile link</a> with the polygons\nyou see below. The <a href=\"sbwstats.phtml\">summary size statistics page</a>\nprovides an overview of the size of these polygons.  The actual image below\nwas generated by <a href=\"/plotting/auto/?q=203\">Autoplot #203</a>.</p>\n\n</div><!-- ./ col-md-7 -->\n</div><!-- ./ row -->\n\nEOM;\n$content .= file_get_contents($imap);\n$content .= <<<EOM\n<div class='alert alert-info'>Note: You can click on the polygon to get the \nwarning text, radar, and more!</div>\n\n<!-- note: can't make this responsive as then the imagemap gets fouled up -->\n<p><img src=\"{$imgurl}\" usemap=\"#mymap\"></p>\n\n<p><b>Image Legend:</b><br />\n<div style=\"float: left; margin-right: 5px;\"><img src=\"example.png\"></div>\nThe storm based warning is drawn with red meaning Tornado and yellow \nmeaning Severe Thunderstorm. \"422 km^2\" is the size of the polygon, \"73%\" \nis the reduction in size of the warning versus the county based warning.\n\"BMX.TO.84.2252\" indicates the Forecast Office, warning type, event ID \nnumber for the year, and issuance time for the date the image is valid (22:52 UTC).\n<br /><span style=\"color: #f00;\">Red text indicates less than 25% reduction in size</span>\n<br /><span style=\"color: #0f0;\">Green text indicates greater than 75% reduction in size</span>\nEOM;\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/cow/top10.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/reference.php\";\nrequire_once \"../../include/mlib.php\";\n\n$t = new MyView();\n\n$nt = new NetworkTable(\"WFO\");\n$nt->table[\"ALL\"] = array(\"name\" => \" --- All ---- \", \"id\" => \"ALL\", \"archive_begin\" => null);\n$vtec_phenomena = $reference[\"vtec_phenomena\"];\n$vtec_significance = $reference[\"vtec_significance\"];\n$postgis = iemdb('postgis');\n\n$wfo = get_str404(\"wfo\", 'ALL', 4);\n$limit = isset($_GET[\"limit\"]) ? xssafe($_GET[\"limit\"]) : 'TOSV';\n$tlimit = isset($_GET[\"tlimit\"]) ? xssafe($_GET[\"tlimit\"]) : '2007';\n$lstring = \"'SV','TO'\";\nif ($limit == \"TO\") {\n    $lstring = \"'TO'\";\n} else if ($limit == 'SV') {\n    $lstring = \"'SV'\";\n} else if ($limit == 'FF') {\n    $lstring = \"'FF'\";\n} else if ($limit == 'MA') {\n    $lstring = \"'MA'\";\n} else if ($limit == 'SQ') {\n    $lstring = \"'SQ'\";\n}\n\n$tstring = '1980-01-01';\nif ($tlimit == '2007') {\n    $tstring = '2007-10-01';\n} else if ($tlimit == '2011') {\n    $tstring = '2011-01-01';\n}\n$wlimit = \"and wfo = $1\";\nif ($wfo == 'ALL') {\n    $wlimit = \"and 'ALL' = $1\";\n}\n\npg_query($postgis, \"SET TIME ZONE 'UTC'\");\n$stname_asc = iem_pg_prepare(\n    $postgis,\n    \"select round((ST_AREA(ST_Transform(geom,9311)) / 1000000.0)::numeric,2) as area,\n    eventid, date(issue), phenomena, significance, wfo, vtec_year from sbw\nWHERE status = 'NEW' and phenomena in ($lstring) $wlimit and\nsignificance = 'W' and issue > '$tstring' and ST_Area(geom) > 0 ORDER by area ASC LIMIT 10\");\n$stname_desc = iem_pg_prepare($postgis, \"select round((ST_AREA(ST_Transform(geom,9311)) / 1000000.0)::numeric,2) as area,\neventid, date(issue), phenomena, significance, wfo, vtec_year from sbw\nWHERE status = 'NEW' and phenomena in ($lstring) $wlimit and\nsignificance = 'W' and issue > '$tstring'  ORDER by area DESC LIMIT 10\");\n\n$t->title = \"NWS SVR/TOR Storm Based Warnings by Size\";\n\n$extra = array(\"ALL\" => array(\"name\" => \"--- ALL Forecast Offices ---\", \"id\" => \"ALL\", \"archive_begin\" => null));\n$sselect = networkSelect(\"WFO\", $wfo, $extra, \"wfo\");\n\n$ar = array(\n    \"TOSV\" => \"Tornado + Severe Thunderstorm\",\n    \"TO\" => \"Tornado Only\",\n    \"SV\" => \"Severe Thunderstorm Only\",\n    \"FF\" => \"Flash Flood Only\",\n    \"MA\" => \"Marine Only\",\n    \"SQ\" => \"Snow Squall\",\n);\n\n$lselect = make_select(\"limit\", $limit, $ar);\n\n$ar = array(\n    \"all\" => \"All Available\",\n    \"2007\" => \"After 1 Oct 2007\",\n    \"2011\" => \"After 1 Jan 2011\"\n);\n$tselect = make_select(\"tlimit\", $tlimit, $ar);\n\n$ltable = \"\";\n$rs = pg_execute($postgis, $stname_desc, array(unrectify_wfo($wfo)));\nwhile ($row = pg_fetch_assoc($rs)) {\n\n    $url = sprintf(\n        \"/vtec/?year=%s&wfo=%s&phenomena=%s&significance=%s&eventid=%s\",\n        $row[\"vtec_year\"],\n        rectify_wfo($row['wfo']),\n        $row[\"phenomena\"],\n        $row['significance'],\n        $row[\"eventid\"]\n    );\n    $ltable .= sprintf(\n        \"<tr><td>%s</td><td>%.0f</td><td>%s</td><td><a href='%s'>%s %s %s</a></td></tr>\\n\",\n        $row['date'],\n        $row['area'],\n        $row['wfo'],\n        $url,\n        $vtec_phenomena[$row['phenomena']],\n        $vtec_significance[$row[\"significance\"]],\n        $row['eventid']\n    );\n}\n\n$btable = \"\";\n$rs = pg_execute($postgis, $stname_asc, array(unrectify_wfo($wfo)));\nwhile ($row = pg_fetch_assoc($rs)) {\n    $url = sprintf(\n        \"/vtec/?year=%s&wfo=%s&phenomena=%s&significance=%s&eventid=%s\",\n        $row[\"vtec_year\"],\n        rectify_wfo($row['wfo']),\n        $row[\"phenomena\"],\n        $row['significance'],\n        $row[\"eventid\"]\n    );\n    $btable .= sprintf(\n        \"<tr><td>%s</td><td>%.2f</td><td>%s</td><td><a href='%s'>%s %s %s</a></td></tr>\\n\",\n        $row['date'],\n        $row['area'],\n        $row[\"wfo\"],\n        $url,\n        $vtec_phenomena[$row['phenomena']],\n        $vtec_significance[$row[\"significance\"]],\n        $row['eventid']\n    );\n}\n\n$t->content = <<<EOM\n\n<nav aria-label=\"Breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"/current/severe.phtml\">Severe Weather Mainpage</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">Top 10 Warnings by size</li>\n    </ol>\n</nav>\n\n<h3>Top 10 NWS WFO Storm Based Warnings by Size</h3>\n\n<p>This application prints out a listing of the top 10 largest and smallest\nstorm based warnings by Weather Forecast Office (WFO). You can click the\nEvent ID to get more information on that warning. This page defaults to show the\nlargest and smallest warnings from any WFO.  Storm Based Warnings did not become\noperational until 1 Oct 2007, so warning polygons prior to that date were only\nexperimental at best.  The areas shown are computed using\n<a href=\"https://spatialreference.org/ref/epsg/9311/\">EPSG:9311</a> (US National Atlas Equal Area).</p>\n\n<div class=\"alert alert-info\" role=\"status\" aria-live=\"polite\">Please be patient for page to load...</div>\n\n<form name=\"selector\" method=\"GET\" aria-label=\"Filter warnings by WFO, type, and time period\">\n    <div class=\"row g-2 align-items-end mb-3\">\n        <div class=\"col-md-4\">\n            <label for=\"wfo\" class=\"form-label\">Select WFO:</label>\n            {$sselect}\n        </div>\n        <div class=\"col-md-4\">\n            <label for=\"limit\" class=\"form-label\">Limit Option:</label>\n            {$lselect}\n        </div>\n        <div class=\"col-md-4\">\n            <label for=\"tlimit\" class=\"form-label\">Time Period:</label>\n            {$tselect}\n        </div>\n        <div class=\"col-auto\">\n            <button type=\"submit\" class=\"btn btn-primary\" aria-label=\"Apply filters\">Giveme Giveme!</button>\n        </div>\n    </div>\n</form>\n\n\n<h3 id=\"largest-table\">Top 10 Largest for WFO: {$wfo}</h3>\n<table class=\"table table-sm table-striped\" aria-labelledby=\"largest-table\">\n    <thead>\n        <tr>\n            <th scope=\"col\">Date Issued</th>\n            <th scope=\"col\">Size (sq km)</th>\n            <th scope=\"col\">WFO</th>\n            <th scope=\"col\">Phenomena</th>\n        </tr>\n    </thead>\n    <tbody>\n        {$ltable}\n    </tbody>\n</table>\n\n\n<h3 id=\"smallest-table\">Top 10 Smallest for WFO: {$wfo}</h3>\n<table class=\"table table-sm table-striped\" aria-labelledby=\"smallest-table\">\n    <thead>\n        <tr>\n            <th scope=\"col\">Date Issued</th>\n            <th scope=\"col\">Size (sq km)</th>\n            <th scope=\"col\">WFO</th>\n            <th scope=\"col\">Phenomena</th>\n        </tr>\n    </thead>\n    <tbody>\n        {$btable}\n    </tbody>\n</table>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/crossdomain.xml",
    "content": "<?xml version=\"1.0\"?>\n<!DOCTYPE cross-domain-policy SYSTEM\n\"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd\">\n<cross-domain-policy>\n<allow-access-from domain=\"*\" to-ports=\"*\"/>\n</cross-domain-policy>"
  },
  {
    "path": "htdocs/css/iastate-iem.css",
    "content": "@charset \"UTF-8\";\n/*\n * Iowa Environmental Mesonet CSS\n * Simplified navigation styles for Bootstrap 5\n */\n\n/* === Utility Classes === */\n.navbar-transition { transition: all 0.5s ease; }\n.navbar-text-white { color: #fff !important; }\n.navbar-text-shadow { text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }\n\nheader {\n    display: block;\n}\n/* === Global === */\nbody {\n  font-family: \"Nimbus Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 16px;\n  line-height: 1.5;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n#loading {\n  display: none;\n}\n\nthead.sticky {\n    position: sticky;\n    top: 0;\n    background: #FFF;\n    z-index: 10;\n}\n\n/* Fix for dark tables with sticky headers */\nthead.sticky.table-dark {\n    background: #212529;\n}\n\n.table-responsive thead.sticky {\n    position: sticky;\n    top: 0;\n    z-index: 10;\n}\n\n/* === Header === */\n/* === Navs === */\n#navs {\n  background: #fff;\n}\n\n/* navbar collapse breakpoint */\n@media (max-width: 991px) {\n  .navbar-nav {\n    float: none !important;\n  }\n\n  .navbar-toggler {\n    display: block;\n  }\n\n  .navbar-collapse {\n    border-top: 0;\n    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  }\n\n  .fixed-top {\n    top: 0;\n    border-width: 0 0 1px;\n  }\n\n  .navbar-nav {\n    float: none !important;\n    margin-top: 0;\n    margin-bottom: 0;\n  }\n\n  .navbar-nav > li {\n    float: none;\n  }\n\n  .collapse.show {\n    display: block !important;\n  }\n}\n\n/* === navbar === */\n.navbar {\n  border: none;\n}\n\n.navbar a,\n.navbar a:hover,\n.navbar a:focus {\n  text-decoration: none;\n}\n\n.navbar label {\n  font-weight: 400;\n  margin-bottom: 0;\n}\n\n/* Legacy layout rules removed - no longer used */\n/* Unused form and text styles removed */\n\n/* --- navbar-nav --- */\n.navbar-nav > li > a {\n  white-space: nowrap;\n}\n.navbar-site-wordmark {\n  flex: 1;\n  max-width: none;\n  float: left;\n}\n\n/* --- navbar-site --- */\n.navbar-site {\n  background-color: #c00;\n  color: #fff;\n  font-size: 16px;\n  padding: 8px 0;\n  position: relative;\n  z-index: 1030;\n}\n\n.navbar-site .container {\n  padding: 0 15px;\n}\n\n/* === Mobile navbar layout === */\n/* Simple single row layout for mobile */\n.mobile-navbar-row {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  min-height: 40px;\n  padding: 8px 0;\n}\n\n.mobile-logo {\n  flex: 0 0 auto;\n}\n\n.mobile-logo img {\n  height: 30px;\n  width: auto;\n}\n\n.mobile-search {\n  flex: 1;\n  max-width: 200px;\n  margin: 0 15px;\n}\n\n.mobile-search .form-control {\n  background: rgba(255, 255, 255, 0.9);\n  border: none;\n  border-radius: 20px;\n  font-size: 14px;\n  height: 32px;\n  padding: 4px 12px;\n  color: #333;\n}\n\n.mobile-search .form-control::placeholder {\n  color: #666;\n}\n\n.mobile-menu {\n  flex: 0 0 auto;\n}\n\n.mobile-menu .navbar-toggler {\n  background: none;\n  border: 1px solid rgba(255, 255, 255, 0.5);\n  border-radius: 4px;\n  padding: 8px;\n  color: #fff;\n  width: 40px;\n  height: 40px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.mobile-menu .navbar-toggler:hover {\n  background-color: rgba(255, 255, 255, 0.1);\n  border-color: rgba(255, 255, 255, 0.7);\n}\n\n.mobile-menu .navbar-toggler:active,\n.mobile-menu .navbar-toggler:focus {\n  outline: none;\n  box-shadow: 0 0 0 0.2rem rgba(255, 255, 255, 0.25);\n}\n\n.mobile-menu .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 1%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: 20px 20px;\n  width: 20px;\n  height: 20px;\n  display: inline-block;\n}\n\n/* Mobile site links */\n.mobile-site-nav {\n  flex-direction: column;\n  padding: 10px 0;\n  border-top: 1px solid rgba(255, 255, 255, 0.2);\n  margin-top: 10px;\n}\n\n.mobile-site-nav .nav-item {\n  border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.mobile-site-nav .nav-item:last-child {\n  border-bottom: none;\n}\n\n.mobile-site-nav .nav-link {\n  color: #fff;\n  padding: 8px 0;\n  font-size: 14px;\n  text-transform: uppercase;\n  font-weight: 600;\n}\n\n.mobile-site-nav .nav-link:hover {\n  color: rgba(255, 255, 255, 0.8);\n  background-color: rgba(255, 255, 255, 0.1);\n  padding-left: 10px;\n  transition: all 0.2s ease;\n}\n\n/* === Desktop navbar layout === */\n/* Clean organized layout for desktop */\n.desktop-navbar-row {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  min-height: 55px;\n  padding: 5px 0;\n}\n\n.desktop-wordmark {\n  flex: 0 0 auto;\n  max-width: 50%;\n}\n\n.desktop-wordmark .wordmark-unit {\n  color: #fff;\n  text-decoration: none;\n  display: block;\n}\n\n.desktop-wordmark .wordmark-isu {\n  color: transparent;\n  background-image: url(\"/vendor/img/isu.svg\");\n  background-repeat: no-repeat;\n  background-size: contain;\n  background-position: left center;\n  text-indent: -9999px;\n  overflow: hidden;\n  display: inline-block;\n  width: 150px;\n  margin-right: 15px;\n  vertical-align: middle;\n}\n\n.desktop-wordmark .wordmark-unit-title {\n  color: #fff;\n  font-weight: 700;\n  font-size: 24px;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n  display: inline-block;\n  vertical-align: middle;\n}\n\n.desktop-right {\n  flex: 0 0 auto;\n  display: flex;\n  flex-direction: column;\n  align-items: flex-end;\n  gap: 8px;\n}\n\n.desktop-search .form-control {\n  background: rgba(255, 255, 255, 0.9);\n  border: 1px solid rgba(255, 255, 255, 0.3);\n  border-radius: 4px;\n  color: #333;\n  width: 280px;\n  height: 35px;\n  transition: width 0.3s ease;\n}\n\n.desktop-search .form-control:focus {\n  background: #fff;\n  width: 320px;\n  outline: none;\n  box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5);\n}\n\n.desktop-links .nav {\n  flex-direction: row;\n  gap: 0;\n}\n\n.desktop-links .nav-item {\n  margin: 0 8px;\n}\n\n.desktop-links .nav-link {\n  color: #fff;\n  padding: 4px 8px;\n  font-size: 13px;\n  text-transform: uppercase;\n  font-weight: 600;\n  text-decoration: none;\n  border-radius: 3px;\n  transition: background-color 0.2s ease;\n}\n\n.desktop-links .nav-link:hover {\n  background-color: rgba(255, 255, 255, 0.1);\n}\n\n/* === Shared navbar styles === */\n.navbar-site {\n  background-color: #c00;\n  color: #fff;\n  font-size: 16px;\n  padding: 0;\n  position: relative;\n  z-index: 1030;\n  -webkit-transition: all 0.5s ease;\n  -moz-transition: all 0.5s ease;\n  -ms-transition: all 0.5s ease;\n  -o-transition: all 0.5s ease;\n  transition: all 0.5s ease;\n}\n\n.navbar-site .container {\n  padding: 0 15px;\n  transition: all 0.5s ease;\n}\n\n.navbar-site a {\n  text-decoration: none;\n}\n\n.navbar-site a:hover {\n  text-decoration: none;\n}\n\n/* Ensure proper z-index stacking */\n.navbar.navbar-expand-lg {\n  position: relative;\n  z-index: 1020;\n}\n\n/* === Main navigation navbar === */\n/* Clean layout for the main menu navbar */\n.navbar.navbar-expand-lg {\n  background-color: #fff;\n  border-bottom: 1px solid #ddd;\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n  margin-bottom: 20px;\n  width: 100%;\n  min-height: 50px;\n  align-items: center;\n}\n\n.navbar.navbar-expand-lg .container {\n  padding: 0 15px;\n}\n\n/* Desktop IEM logo in main navbar */\n.navbar.navbar-expand-lg .d-none.d-lg-block img {\n  height: 50px;\n  width: auto;\n  max-width: none;\n}\n\n/* Main navigation links */\n.navbar.navbar-expand-lg .nav-link {\n  color: #333 !important;\n  padding: 10px 10px;\n  border-bottom: 3px solid transparent;\n  transition: all 0.25s ease;\n}\n\n.navbar.navbar-expand-lg .nav-link:hover,\n.navbar.navbar-expand-lg .nav-link:focus {\n  color: #c00 !important;\n  border-bottom-color: #c00;\n  background-color: rgba(0, 0, 0, 0.05);\n}\n\n.navbar.navbar-expand-lg .nav-item.active .nav-link,\n.navbar.navbar-expand-lg .nav-item .nav-link.active {\n  color: #c00 !important;\n  border-bottom-color: #c00;\n  background-color: rgba(0, 0, 0, 0.05);\n}\n\n/* Mobile layout for main navbar */\n@media (max-width: 991px) {\n  /* Show main navbar on mobile when collapse is active */\n  .navbar.navbar-expand-lg {\n    display: block !important;\n    background-color: #fff;\n    border-top: 1px solid #ddd;\n    margin-top: 0;\n    min-height: auto;\n  }\n  \n  /* Hide main navbar content by default */\n  .navbar.navbar-expand-lg .navbar-collapse.collapse:not(.show) {\n    display: none !important;\n  }\n  \n  /* Show main navbar content when toggled */\n  .navbar.navbar-expand-lg .navbar-collapse.collapse.show {\n    display: block !important;\n    padding: 10px 0;\n  }\n  \n  /* Hide the desktop logo on mobile */\n  .navbar.navbar-expand-lg .d-none.d-lg-block {\n    display: none !important;\n  }\n}\n\n/* Desktop layout for main navbar */\n@media (min-width: 992px) {\n  .navbar.navbar-expand-lg .navbar-collapse {\n    display: flex !important;\n    visibility: visible !important;\n  }\n  \n  .navbar.navbar-expand-lg .navbar-collapse.collapse {\n    display: flex !important;\n  }\n  \n  .navbar.navbar-expand-lg #navbar-menu-collapse.collapse {\n    display: flex !important;\n  }\n}\n\n/* === Breadcrumb === */\ndiv.breadcrumb {\n  border-radius: 0;\n  background-color: #f5f5f5;\n  padding: 8px 15px;\n  margin-bottom: 20px;\n}\n\ndiv.breadcrumb span {\n  display: inline-block;\n}\n\ndiv.breadcrumb span + span::before {\n  content: '›';\n  color: #777;\n  padding: 0 9px 0 7px;\n  font-weight: 600;\n}\n\ndiv.breadcrumb span.active {\n  color: #777;\n}\n\n/* === Main === */\nmain {\n  background: #fff;\n  padding-bottom: 40px;\n}\n\nmain .container {\n  transition: all 0.5s ease;\n}\n\nmain .container:hover {\n  transition: all 0.5s ease;\n}\n\nmain > .container > form:first-of-type {\n  margin-top: 20px;\n}\n\n/* === Footer === */\nfooter {\n  background-color: #f3f3f3;\n  color: #686868;\n  font-size: 14px;\n  line-height: 24px;\n  padding: 20px 0;\n  vertical-align: top;\n  width: 100%;\n}\n\nfooter .container {\n  transition: all 0.5s ease;\n  max-width: 1200px;\n  margin: 0 auto;\n  padding: 0 15px;\n  width: 100%;\n}\n\nfooter .container:hover {\n  transition: all 0.5s ease;\n}\n\nfooter section {\n  border-bottom: 0;\n  margin-top: 20px;\n  margin-bottom: 20px;\n  padding-bottom: 0;\n}\n\n@media (max-width: 991px) {\n  footer section {\n    margin-top: 15px;\n    margin-bottom: 15px;\n    padding-bottom: 15px;\n  }\n}\nfooter p {\n  line-height: 21px;\n}\n\nfooter ul {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n}\n\nfooter a {\n  color: #1f1f1f;\n}\n\nfooter a:active,\nfooter a:focus,\nfooter a:hover {\n  color: #1f1f1f;\n  text-decoration: underline;\n}\n\nfooter section.contact h1 {\n  display: none;\n}\n\nfooter ul.menu {\n  margin: 0;\n}\n\nfooter .wordmark-isu {\n  fill: #c00;\n  width: 180px;\n  margin-bottom: 10px;\n}\n\n/* === Buttons === */\n.btn-wrap {\n  white-space: normal;\n}\n\n/* === Forms === */\nfieldset {\n  background: #f3f3f3;\n  border-radius: 5px;\n  margin-bottom: 15px;\n  padding: 10px;\n}\n\nlegend {\n  background: #f3f3f3;\n  border-radius: 5px;\n  border-width: 0;\n  font-size: 1em;\n  margin-bottom: 0;\n  padding: 0 10px;\n  width: auto;\n}\n\n/* input-group */\n.input-group .form-control:not(:first-child):not(:last-child),\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child) {\n  border-left: 0;\n}\n\n/* === Pagination === */\n[class^=\"pagination\"] {\n  color: #555555;\n  display: inline-block;\n  margin: 10px;\n  vertical-align: middle;\n}\n\n/* === Social === */\n.footer-social ul {\n  list-style: none;\n  min-height: 84px;\n}\n\n.footer-social li {\n  padding: 0;\n  margin: 0;\n}\n\n.footer-social ul.unlabeled li {\n  display: inline-block;\n  width: 42px;\n  text-align: center;\n}\n\n@media (max-width: 991px) {\n  .footer-social ul.unlabeled li {\n    text-align: center;\n  }\n}\n.footer-social a {\n  display: block;\n  height: 42px;\n  line-height: 42px;\n  margin: 0;\n  padding: 0;\n}\n\n.footer-social ul.unlabeled a {\n  margin-right: 0;\n}\n\n.footer-social a .fa:before {\n  border-radius: 0;\n  color: #444;\n  display: inline-block;\n  width: 42px;\n  height: 42px;\n  line-height: 42px;\n  font-size: 34px;\n  font-family: FontAwesome;\n  font-weight: normal;\n  text-align: center;\n  -webkit-transition: all 0.2s ease-in-out;\n  -moz-transition: all 0.2s ease-in-out;\n  -ms-transition: all 0.2s ease-in-out;\n  -o-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  vertical-align: middle;\n}\n\n.footer-social a:hover .fa:before {\n  text-decoration: none;\n}\n\n.footer-social a[href*='facebook.com'] .fa:before {\n  content: \"\\f082\";\n}\n\n.footer-social a[href*='facebook.com']:hover .fa:before {\n  color: #3b5998;\n}\n\n.footer-social a[href*='twitter.com'] .fa:before {\n  content: \"\\f081\";\n}\n\n.footer-social a[href*='twitter.com']:hover .fa:before {\n  color: #4099ff;\n}\n\n.footer-social a[href*='instagram.com'] .fa:before {\n  content: \"\\f16d\";\n}\n\n.footer-social a[href*='instagram.com']:hover .fa:before {\n  background: -webkit-radial-gradient(circle farthest-corner at 35% 90%, #fec564, transparent 50%), -webkit-radial-gradient(circle farthest-corner at 0 140%, #fec564, transparent 50%), -webkit-radial-gradient(ellipse farthest-corner at 0 -25%, #5258cf, transparent 50%), -webkit-radial-gradient(ellipse farthest-corner at 20% -50%, #5258cf, transparent 50%), -webkit-radial-gradient(ellipse farthest-corner at 100% 0, #893dc2, transparent 50%), -webkit-radial-gradient(ellipse farthest-corner at 60% -20%, #893dc2, transparent 50%), -webkit-radial-gradient(ellipse farthest-corner at 100% 100%, #d9317a, transparent), -webkit-linear-gradient(#6559ca, #bc318f 30%, #e33f5f 50%, #f77638 70%, #fec66d 100%);\n  background: radial-gradient(circle farthest-corner at 35% 90%, #fec564, transparent 50%), radial-gradient(circle farthest-corner at 0 140%, #fec564, transparent 50%), radial-gradient(ellipse farthest-corner at 0 -25%, #5258cf, transparent 50%), radial-gradient(ellipse farthest-corner at 20% -50%, #5258cf, transparent 50%), radial-gradient(ellipse farthest-corner at 100% 0, #893dc2, transparent 50%), radial-gradient(ellipse farthest-corner at 60% -20%, #893dc2, transparent 50%), radial-gradient(ellipse farthest-corner at 100% 100%, #d9317a, transparent), linear-gradient(#6559ca, #bc318f 30%, #e33f5f 50%, #f77638 70%, #fec66d 100%);\n  -webkit-background-clip: text;\n  background-clip: text;\n  -webkit-text-fill-color: transparent;\n}\n\n.footer-social a[href*='youtube.com'] .fa:before {\n  content: \"\\f166\";\n}\n\n.footer-social a[href*='youtube.com']:hover .fa:before {\n  color: #e52d27;\n}\n\n.footer-social a[href*='github.com'] .fa:before {\n  content: \"\\f092\";\n}\n\n.footer-social a[href*='github.com']:hover .fa:before {\n  color: #000000;\n}\n\n.footer-social a[href*='plus.google.com'] .fa:before {\n  content: \"\\f0d4\";\n}\n\n.footer-social a[href*='plus.google.com']:hover .fa:before {\n  color: #dd4b39;\n}\n\n.footer-social a[href*='linkedin.com'] .fa:before {\n  content: \"\\f08c\";\n}\n\n.footer-social a[href*='linkedin.com']:hover .fa:before {\n  color: #007bb5;\n}\n\n.footer-social a[href*='pinterest.com'] .fa:before {\n  content: \"\\f0d3\";\n}\n\n.footer-social a[href*='pinterest.com']:hover .fa:before {\n  color: #cb2027;\n}\n\n.footer-social a[href*='reddit.com'] .fa:before {\n  content: \"\\f1a2\";\n}\n\n.footer-social a[href*='reddit.com']:hover .fa:before {\n  color: #ff4500;\n}\n\n.footer-social a[href*='snapchat.com'] .fa:before {\n  content: \"\\f2ad\";\n}\n\n.footer-social a[href*='snapchat.com']:hover .fa:before {\n  color: #fffc00;\n}\n\n.footer-social a[href*='vimeo.com'] .fa:before {\n  content: \"\\f194\";\n}\n\n.footer-social a[href*='vimeo.com']:hover .fa:before {\n  color: #1ab7ea;\n}\n\n.footer-social a[href*='wordpress'] .fa:before {\n  content: \"\\f19a\";\n}\n\n.footer-social a[href*='wordpress']:hover .fa:before {\n  color: #21759b;\n}\n\n.footer-social a[href*='tumblr.com'] .fa:before {\n  content: \"\\f174\";\n}\n\n.footer-social a[href*='tumblr.com']:hover .fa:before {\n  color: #32506d;\n}\n\n.footer-social a[href*='twitch.tv'] .fa:before {\n  content: \"\\f1e8\";\n  font-size: 30px;\n}\n\n.footer-social a[href*='twitch.tv']:hover .fa:before {\n  color: #6441A5;\n}\n\n.footer-social a[href*='vine.co'] .fa:before {\n  content: \"\\f1ca\";\n  font-size: 30px;\n}\n\n.footer-social a[href*='vine.co']:hover .fa:before {\n  color: #00b488;\n}\n\n.footer-social a[href*='rss'] .fa:before {\n  content: \"\\f143\";\n}\n\n.footer-social a[href*='rss']:hover .fa:before {\n  color: #f26522;\n}\n\n/* === Typeahead === */\n.tt-hint {\n  color: #999;\n}\n\n.tt-menu {\n  width: 100%;\n  color: #fff;\n  background-color: #666;\n}\n\n.tt-suggestion p {\n  margin: 0;\n}\n\n/* === Utility === */\n.overflow-scroll {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n}\n\n/* === Legacy === */\n.wd-Grid-cell, .grid, .wd-Grid-cell--1, .wd-Grid-cell--2, .wd-Grid-cell--3, .wd-Grid-cell--4, .wd-Grid-cell--1of1, .g-1, .g-1-1, .wd-Grid-cell--1of2, .g-1-2, .wd-Grid-cell--1of3, .g-1-3, .wd-Grid-cell--2of3, .g-2-3, .wd-Grid-cell--1of4, .g-1-4, .wd-Grid-cell--3of4, .g-3-4, .wd-Grid-cell--1of5, .g-1-5, .wd-Grid-cell--2of5, .g-2-5, .wd-Grid-cell--3of5, .g-3-5, .wd-Grid-cell--4of5, .g-4-5 {\n  font-size: 16px;\n  line-height: 1.5;\n}\n\n/* Bootstrap 5 Migration: Dropdown toggle arrow fixes */\n/* Override the existing FontAwesome dropdown arrows with Bootstrap 5 style */\n.dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0;\n  border-left: 0.3em solid transparent;\n  font-family: inherit !important; /* Override FontAwesome */\n}\n\n.dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n/* Ensure dropdown arrows show properly in navigation */\n.nav-link.dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0;\n  border-left: 0.3em solid transparent;\n}\n\n/* Fix for navbar dropdown arrows specifically */\n.navbar-nav .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0;\n  border-left: 0.3em solid transparent;\n}\n\n/* Ensure dropdown functionality works properly */\n.dropdown-menu {\n  display: none;\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n/* Fix dropdown item styling for Bootstrap 5 */\n.dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 0.25rem 1rem;\n  clear: both;\n  font-weight: 400;\n  color: #212529;\n  text-align: inherit;\n  text-decoration: none;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0;\n}\n\n.dropdown-item:hover,\n.dropdown-item:focus {\n  color: #1e2125;\n  background-color: #e9ecef;\n}\n\n.dropdown-item.active,\n.dropdown-item:active {\n  color: #fff;\n  text-decoration: none;\n  background-color: #0d6efd;\n}\n\n/* Duplicate rules removed - consolidated above */\n\n/* navbar-caps layout */\n.navbar-site .navbar-caps .navbar-nav {\n  display: flex;\n  flex-direction: row;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n\n@media only screen and (max-width: 991px) {\n  .navbar-site .navbar-caps .navbar-nav {\n    flex-direction: column;\n    width: 100%;\n  }\n}\n\n/* Fix nav-item spacing */\n.navbar-site .navbar-caps .nav-item {\n  margin: 0;\n}\n\n.navbar-site .navbar-caps .nav-link {\n  display: block;\n  padding: 15px 10px;\n  color: #fff;\n  text-decoration: none;\n  font-size: 14px;\n  font-weight: 700;\n  transition: all 0.25s ease;\n}\n\n.navbar-site .navbar-caps .nav-link:hover,\n.navbar-site .navbar-caps .nav-link:focus {\n  background-color: rgba(255, 255, 255, 0.1);\n  color: #fff;\n  text-decoration: none;\n}\n\n/* --- Bootstrap 5 dropdown positioning fixes --- */\n/* Ensure dropdowns work properly in both navbars */\n.navbar .dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  min-width: 10rem;\n  padding: 0;\n  margin: 0;\n  font-size: 16px;\n  color: #333;\n  text-align: left;\n  background-color: #e7e7e7;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 0;\n}\n\n.navbar .dropdown-menu.show {\n  display: block;\n}\n\n/* Fix dropdown items */\n.navbar .dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 10px 20px;\n  clear: both;\n  font-weight: 400;\n  color: #333;\n  text-align: inherit;\n  text-decoration: none;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0;\n}\n\n.navbar .dropdown-item:hover,\n.navbar .dropdown-item:focus {\n  color: #222;\n  background-color: #d7d7d7;\n  background-color: rgba(0, 0, 0, 0.05);\n}\n\n.navbar .dropdown-item.active,\n.navbar .dropdown-item:active {\n  color: #fff;\n  text-decoration: none;\n  background-color: #c00;\n}\n\n/* Fix mobile dropdown behavior */\n@media (max-width: 991px) {\n  .navbar .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  \n  .navbar .dropdown-item {\n    padding-left: 30px;\n  }\n}\n\n/* Fix navbar collapse transition */\n.navbar .navbar-collapse {\n  transition: height 0.35s ease;\n}\n\n.navbar .navbar-collapse.collapsing {\n  transition: height 0.35s ease;\n}\n\n/* Mobile navigation rules consolidated above */\n\n/* Fix button z-index and positioning */\n.navbar-site .navbar-header .navbar-toggler {\n  position: relative;\n  z-index: 1040;\n  background-color: rgba(255, 255, 255, 0.1);\n  border: 1px solid rgba(255, 255, 255, 0.3);\n}\n\n/* --- Header text visibility and contrast fixes --- */\n/* Ensure wordmark text is visible and properly contrasted */\n.navbar-site .wordmark-isu {\n  color: transparent !important; /* Keeps the background image visible */\n  background-image: url(\"/vendor/img/isu.svg\");\n  background-repeat: no-repeat;\n  background-size: 100%;\n  background-position: left top;\n  text-indent: -9999px; /* Hide text but keep for accessibility */\n  overflow: hidden;\n}\n\n.navbar-site .wordmark-unit-title {\n  color: #fff !important;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n  font-weight: 900;\n  display: block;\n}\n\n/* Fix wordmark link contrast and hover states */\n.navbar-site a.wordmark-unit {\n  color: #fff;\n  text-decoration: none;\n}\n\n.navbar-site a.wordmark-unit:hover,\n.navbar-site a.wordmark-unit:focus {\n  color: #fff;\n  text-decoration: none;\n  opacity: 0.9;\n}\n\n/* Ensure search input visibility */\n.navbar-site .navbar-site-search .form-control {\n  background: rgba(0, 0, 0, 0.15);\n  border: 1px solid rgba(255, 255, 255, 0.3);\n  color: #fff;\n  transition: all 0.3s ease;\n  border-radius: 4px;\n}\n\n.navbar-site .navbar-site-search .form-control::placeholder {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.navbar-site .navbar-site-search .form-control:focus {\n  background: #fff;\n  color: #333;\n  border-color: #fff;\n  box-shadow: 0 0 0 0.2rem rgba(255, 255, 255, 0.25);\n  outline: none;\n}\n\n/* Enhanced search input expansion with visual feedback */\n@media only screen and (min-width: 992px) {\n  .navbar-site .navbar-site-search.search-active {\n    z-index: 1050;\n  }\n  \n  .navbar-site .navbar-site-search .form-control.expanded {\n    transform: scale(1.02);\n    box-shadow: 0 0 0 0.2rem rgba(255, 255, 255, 0.25), 0 4px 8px rgba(0, 0, 0, 0.1);\n  }\n}\n\n/* Fix navigation links visibility */\n.navbar-site .navbar-caps .nav-link {\n  color: #fff !important;\n  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);\n}\n\n.navbar-site .navbar-caps .nav-link:hover,\n.navbar-site .navbar-caps .nav-link:focus {\n  color: #fff !important;\n  background-color: rgba(255, 255, 255, 0.1);\n  text-decoration: none;\n}\n\n/* Ensure button icon visibility */\n.navbar-site .navbar-header .navbar-toggler-bar {\n  background-color: #fff !important;\n  opacity: 1;\n}\n\n.navbar-site .navbar-header .navbar-toggler-label {\n  color: #fff !important;\n  opacity: 1;\n}\n\n/* Fix any potential overflow issues */\n.navbar-site {\n  overflow: visible;\n}\n\n.navbar-site .container {\n  overflow: visible;\n}\n\n/* Fix logo visibility in main navbar */\n.navbar.navbar-expand-lg .d-none.d-md-block img {\n  height: 50px;\n  width: auto;\n  max-width: none;\n}\n\n/* --- Bootstrap Icons integration --- */\n/* Ensure Bootstrap Icons display properly with existing styles */\n.bi {\n  display: inline-block;\n  vertical-align: -0.125em;\n  fill: currentColor;\n}\n\n/* Accessibility utility: visually hidden but focusable (shared) */\n.visually-hidden-focusable:not(:focus):not(:active) {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  clip: rect(0 0 0 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n.visually-hidden-focusable:focus, .visually-hidden-focusable:active {\n  position: static !important;\n  width: auto !important;\n  height: auto !important;\n  margin: 0 !important;\n  overflow: visible !important;\n  clip: auto !important;\n  white-space: normal !important;\n}\n\n:focus-visible {\n  outline: 2px solid #0d6efd;\n  outline-offset: 2px;\n}\n\n/* Fix Bootstrap Icons in navigation */\n.nav-link .bi {\n  font-size: 1.1em;\n  margin-right: 0.25em;\n}\n\n.navbar-nav .nav-link .bi {\n  color: inherit;\n}\n\n/* Fix Bootstrap Icons in footer links */\nfooter a .bi {\n  margin-right: 0.5em;\n  font-size: 0.9em;\n}\n\n/* === Bootstrap 5 Collapse Functionality === */\n/* Ensure collapsible elements work properly */\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapse.show {\n  display: block;\n}\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n\n/* Mobile navbar collapse behavior */\n#mobile-site-links.collapse:not(.show) {\n  display: none;\n}\n\n#mobile-site-links.collapse.show {\n  display: block;\n  animation: fadeInDown 0.3s ease;\n}\n\n#navbar-menu-collapse.collapse:not(.show) {\n  display: none;\n}\n\n#navbar-menu-collapse.collapse.show {\n  display: block;\n}\n\n/* Main navbar responsive behavior */\n@media (max-width: 991px) {\n  .navbar.navbar-expand-lg #navbar-menu-collapse.collapse:not(.show) {\n    display: none;\n  }\n  \n  .navbar.navbar-expand-lg #navbar-menu-collapse.collapse.show {\n    display: block;\n    background-color: #fff;\n    border-top: 1px solid #ddd;\n    margin-top: 0;\n    padding: 10px 0;\n  }\n}\n\n@media (min-width: 992px) {\n  .navbar.navbar-expand-lg #navbar-menu-collapse.collapse {\n    display: flex !important;\n  }\n}\n\n/* Smooth animations */\n@keyframes fadeInDown {\n  from {\n    opacity: 0;\n    transform: translateY(-10px);\n  }\n  to {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n"
  },
  {
    "path": "htdocs/css/iemss.css",
    "content": "/* IEM Station Selector (iemss) Styling - Bootstrap 5 Enhanced */\n\n/* Main container improvements */\n.iemss-container {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  border: 1px solid rgba(0, 0, 0, 0.125);\n  border-radius: 0.375rem;\n}\n\n/* Card header styling */\n.iemss-container .card-header {\n  background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);\n  border-bottom: 1px solid #dee2e6;\n  padding: 1rem 1.25rem;\n}\n\n.iemss-container .card-title {\n  margin-bottom: 0;\n  font-weight: 600;\n  color: #495057;\n}\n\n/* Station selection lists */\n#stations_in,\n#stations_out {\n  min-height: 200px;\n  height: 200px;\n  border: 1px solid #ced4da;\n  border-radius: 0.375rem;\n  font-size: 0.875rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n#stations_in:focus,\n#stations_out:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n/* Selected options styling */\n#stations_in option:checked,\n#stations_out option:checked {\n  background: linear-gradient(135deg, #0d6efd 0%, #0a58ca 100%);\n  color: white;\n}\n\n#stations_in option:hover,\n#stations_out option:hover {\n  background-color: #f8f9fa;\n}\n\n#stationfilter:focus {\n  border-color: #86b7fe;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n/* Button group improvements */\n.iemss-button-group {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.5rem;\n  margin-top: 0.5rem;\n}\n\n/* Top row with sort dropdown and filter input */\n.iemss-container .d-flex.gap-2 {\n  align-items: center;\n  margin-bottom: 0.5rem;\n  min-height: 38px; /* Match Bootstrap form control height */\n}\n\n.iemss-container .d-flex.gap-2 #stationfilter {\n  min-width: 150px;\n}\n\n/* Right side label container to match left side height */\n.iemss-container .d-flex.align-items-center {\n  margin-bottom: 0.5rem;\n}\n\n/* Labels styling */\n.iemss-container label {\n  font-weight: 600;\n  color: #495057;\n  margin-bottom: 0.5rem;\n}\n\n.iemss-button-group .btn {\n  border-radius: 0.375rem;\n  font-weight: 500;\n  transition: all 0.15s ease-in-out;\n  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n}\n\n.iemss-button-group .btn:hover {\n  transform: translateY(-1px);\n  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n}\n\n.iemss-button-group .btn:active {\n  transform: translateY(0);\n}\n\n/* Dropdown menu improvements */\n.iemss-container .dropdown-menu {\n  border-radius: 0.375rem;\n  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n  border: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n.iemss-container .dropdown-item {\n  padding: 0.5rem 1rem;\n  transition: background-color 0.15s ease-in-out;\n}\n\n.iemss-container .dropdown-item:hover {\n  background-color: #f8f9fa;\n}\n\n/* Map container styling */\n#map {\n  border-radius: 0.375rem;\n  border: 1px solid #dee2e6;\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n  overflow: hidden;\n  width: 100%;\n  height: 400px;\n}\n\n/* Hidden elements */\n.iemss-hidden {\n  display: none;\n}\n\n/* Popup styling */\n#popup {\n  width: 250px;\n}\n\n#popover-content {\n  display: none;\n}\n\n/* Map legend styling */\n.iemss-map-legend {\n  margin-top: 0.5rem;\n  font-size: 0.875rem;\n  color: #6c757d;\n  display: flex;\n  align-items: center;\n  gap: 1rem;\n}\n\n.iemss-legend-item {\n  display: flex;\n  align-items: center;\n  gap: 0.25rem;\n}\n\n.iemss-legend-dot {\n  width: 8px;\n  height: 8px;\n  border-radius: 50%;\n  display: inline-block;\n}\n\n.iemss-legend-dot.online {\n  background-color: #198754;\n}\n\n.iemss-legend-dot.offline {\n  background-color: #dc3545;\n}\n\n/* Column spacing improvements */\n.iemss-container .col-sm-6 {\n  padding-left: 0.75rem;\n  padding-right: 0.75rem;\n}\n\n/* Labels styling */\n/* Moved above to consolidate with top row styling */\n\n/* Station count displays */\n.iemss-station-count {\n  margin-top: 0.25rem;\n  margin-bottom: 0.5rem;\n  font-style: italic;\n  display: flex;\n  align-items: center;\n}\n\n.iemss-station-count::before {\n  content: \"📊\";\n  margin-right: 0.25rem;\n  font-size: 0.75em;\n}\n\n/* Form inline improvements - no longer needed */\n\n/* Filter input styling */\n#stationfilter {\n  border-radius: 0.375rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n/* Responsive improvements */\n@media (max-width: 576px) {\n  .iemss-container .card-header {\n    padding: 0.75rem 1rem;\n  }\n  \n  .iemss-container .card-header .btn {\n    margin-top: 0.5rem;\n  }\n  \n  .iemss-container .col-sm-6 {\n    margin-bottom: 1rem;\n    padding-left: 0.5rem;\n    padding-right: 0.5rem;\n  }\n  \n  #stations_in,\n  #stations_out {\n    min-height: 150px;\n    height: 150px;\n  }\n  \n  #map {\n    height: 300px !important;\n  }\n  \n  .iemss-button-group {\n    justify-content: center;\n  }\n  \n  .iemss-button-group .btn {\n    flex: 1;\n    min-width: 120px;\n  }\n  \n  .iemss-map-legend {\n    justify-content: center;\n    flex-wrap: wrap;\n  }\n}\n\n@media (min-width: 768px) {\n  /* No special desktop overrides needed for new layout */\n}\n\n/* Popover styling improvements */\n.popover {\n  border-radius: 0.375rem;\n  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n  border: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n.popover-header {\n  background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);\n  border-bottom: 1px solid #dee2e6;\n  font-weight: 600;\n}\n\n.popover-body {\n  padding: 0.75rem;\n  font-size: 0.875rem;\n}\n\n/* Loading state styling */\n.iemss-loading {\n  opacity: 0.7;\n  pointer-events: none;\n}\n\n.iemss-loading::after {\n  content: '';\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 20px;\n  height: 20px;\n  margin: -10px 0 0 -10px;\n  border: 2px solid #f3f3f3;\n  border-top: 2px solid #0d6efd;\n  border-radius: 50%;\n  animation: iemss-spin 1s linear infinite;\n}\n\n@keyframes iemss-spin {\n  0% { transform: rotate(0deg); }\n  100% { transform: rotate(360deg); }\n}\n\n/* Accessibility improvements */\n.iemss-container .btn:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n.iemss-container .dropdown-item:focus {\n  background-color: #e9ecef;\n  outline: 2px solid #0d6efd;\n  outline-offset: -2px;\n}\n\n/* High contrast mode support */\n@media (prefers-contrast: high) {\n  #stations_in,\n  #stations_out {\n    border-width: 2px;\n  }\n  \n  .iemss-container .btn {\n    border-width: 2px;\n  }\n  \n  #map {\n    border-width: 2px;\n  }\n}\n\n/* Reduced motion support */\n@media (prefers-reduced-motion: reduce) {\n  .iemss-button-group .btn {\n    transition: none;\n  }\n  \n  .iemss-button-group .btn:hover {\n    transform: none;\n  }\n  \n  #stationfilter {\n    transition: none;\n  }\n  \n  .iemss-loading::after {\n    animation: none;\n  }\n}\n"
  },
  {
    "path": "htdocs/css/main.css",
    "content": "body {\n    background: #fff url(../images/hbar.gif) repeat-x;\n    margin: 0px;\n    font-family: arial, sans-serif;\n}\n\n#menuwrapper {\n    min-width: 850px;\n    position: absolute;\n    top: 75px;\n    left: 10px;\n}\n\n.clearit {\n    clear: both;\n    height: 0;\n    line-height: 0.0;\n    font-size: 0;\n}\n\n#p7menubar,\n#p7menubar ul {\n    padding: 0;\n    margin: 0;\n    list-style: none;\n    font-family: Arial, Helvetica, sans-serif;\n}\n\n#p7menubar a {\n    display: block;\n    text-decoration: none;\n    padding: 5px 10px 5px 10px;\n    border-right: 3px solid #eee;\n    font-size: .85em;\n    color: #0000FF;\n}\n\n#p7menubar a.trigger {\n    padding: 5px 16px 5px 10px;\n    background-image: url(../images/p7PM_dark_south.gif);\n    background-repeat: no-repeat;\n    background-position: right center;\n}\n\n#p7menubar a.atrigger {\n    padding: 4px 16px 5px 10px;\n    border-top: 1px solid #000;\n    border-right: 1px solid #000;\n    border-left: 1px solid #000;\n    background-color: #fff;\n    background-image: url(../images/p7PM_dark_south.gif);\n    background-repeat: no-repeat;\n    background-position: right center;\n}\n\n#p7menubar li {\n    float: left;\n    width: 9em;\n}\n\n#p7menubar li ul,\n#p7menubar ul li {\n    width: 12em;\n}\n\n#p7menubar ul li a {\n    color: #FFFFFF;\n    border-right: 0;\n    padding: 3px 12px 3px 16px;\n}\n\n#p7menubar li ul {\n    position: absolute;\n    z-index: 10;\n    display: none;\n    border-right: 1px solid #333333;\n    border-bottom: 1px solid #333333;\n}\n\n#p7menubar li:hover a,\n#p7menubar a:focus,\n#p7menubar a:active,\n#p7menubar li.p7hvr a {\n    color: #000000;\n    background-color: #78dbed;\n}\n\n#p7menubar li:hover ul,\n#p7menubar li.p7hvr ul {\n    display: block;\n}\n\n#p7menubar li:hover ul a,\n#p7menubar li.p7hvr ul a span {\n    color: #000000;\n    background-color: #f3f3f3;\n}\n\n#p7menubar li:hover ul .alink {\n    background-color: #c4f6ff;\n}\n\n#p7menubar ul a:hover {\n    background-color: #606060 !important;\n    color: #FFFFFF !important;\n}\n\n#p7menubar li {\n    width: auto;\n}\n\n#iem-main {\n    min-width: 800px;\n    /* border: #000 solid; */\n}\n\n#iem-mainwide {\n    /* width: 800px; */\n    min-width: 800px;\n    border: 1px #000 solid;\n    background-color: #FEFEFE;\n}\n\n#iem-image {\n    width: 100%;\n}\n\n#iem-header {\n    background: #fff url(../images/hbar.gif) repeat-x;\n    height: 100px;\n    width: 100%;\n}\n\n#iem-header:after {\n    content: \".\";\n    display: block;\n    height: 0;\n    overflow: hidden;\n    clear: both;\n    visibility: hidden;\n}\n\n/* Holly Hack Targets IE Win only \\*/\n* html #iem-header {\n    height: 130px;\n}\n\n/* End Holly Hack */\n\n#iem-header-title {\n    position: absolute;\n    top: 26px;\n    left: 90px;\n    width: 500px;\n}\n\n#iem-header-title h3 {\n    margin: 0px;\n    padding: 0px;\n    color: #f6f623;\n    font-size: 1em;\n}\n\n#iem-header-title h4 {\n    margin: 0px;\n    color: #f6f623;\n    font-size: 1em;\n}\n\n#iem-header-logo {\n    position: absolute;\n    left: 5px;\n    top: 5px;\n    margin-right: 5px;\n}\n\n#iem-header-logo img {\n    border: 0px;\n    background-color: transparent;\n}\n\n#iem-header-items {\n    position: absolute;\n    top: 30px;\n    right: 10px;\n    width: 250px;\n    text-align: right;\n    font-size: 0.8em;\n}\n\n#iem-header-items {\n    color: #fff;\n    font-weight: bold;\n}\n\n#iem-header-items a {\n    color: #fff;\n    font-weight: bold;\n}\n\n#iemwebring {\n    font-size: 0.8em;\n    padding: .1em 0;\n    text-align: center;\n    float: right;\n    margin-top: 3px;\n}\n\n#iemwebring a {\n    padding: 0 .2em 0 .4em;\n    text-decoration: none;\n    border: none;\n}\n\n#iemwebring li {\n    list-style: none;\n    display: inline;\n}\n\n.horiz-list li {\n    list-style: none;\n    display: inline;\n    margin-right: 10px;\n}\n\n#iem-content {\n    clear: left;\n    background: #fff;\n    padding: 5px;\n}\n\n#left {\n    width: 570px;\n}\n\n#right {\n    width: 330px;\n    margin-left: 5px;\n    border-left: 1px solid;\n}\n\nul.iem-list {\n    margin-left: 17px;\n    margin-top: 3px;\n    padding-left: 0px;\n    padding-top: 0px;\n}\n\n#iem-section {\n    padding: 0px;\n    height: 40px;\n}\n\n#iem-section th {\n    border-left: 1px solid;\n    padding: 5px\n}\n\n#iem-section a:hover {\n    border-bottom: 1px #000000 dashed;\n}\n\n#iem-content-feature {\n    border: 1px #000 dashed;\n    padding: 2px;\n    width: 490px;\n}\n\n#iem-content-feature-img {\n    float: right;\n    border: 1px #000 solid;\n    font-size: 0.8em;\n}\n\n#iem-content-feature-img img {\n    padding: 2px;\n    border: 0px;\n}\n\n.iem-news-descript {\n    padding-left: 10px;\n    font-size: smaller;\n}\n\n#iem-footer {\n    clear: both;\n    width: auto;\n    font-size: 10pt;\n    border-top: 1px #ccc solid;\n    padding-left: 5px;\n    padding-bottom: 2px;\n}\n\n#iem_header_logo img {\n    border: 0px;\n}\n\n.dashboard {\n    border: 2px solid #ddd;\n    background: #eee;\n}\n\n.dashboard li {\n    list-style: none;\n    display: inline;\n    float: left;\n    margin-left: 20px;\n}\n\n.dashboard a {\n    text-decoration: none;\n}\n\n.dashboard img {\n    border: 0px;\n    padding-left: 15px;\n    padding-bottom: 5px;\n}\n\n.dashboard:after {\n    content: \".\";\n    display: block;\n    height: 0;\n    overflow: hidden;\n    clear: both;\n    visibility: hidden;\n}\n\n.heading {\n    border-bottom: 1px solid #CCCCCC;\n    color: #336699;\n    padding: 4px 0;\n    margin: 4px 0;\n}\n\nthead th,\ntfoot td {\n    background: #ddd;\n}\n\ntr.ruled {\n    background: #9cf;\n}\n\ntable.ruler {\n    border: 1px solid #000;\n    border-collapse: collapse;\n}\n\nth.ruler,\ntd.ruler {\n    border: 1px solid #000;\n    border-collapse: collapse;\n    padding: 2px;\n}\n\n.ninfo {\n    margin-left: 10px;\n    padding: 3px;\n    border: 1px solid #000;\n    background-color: #EEEEEE;\n}\n\n#helpwindow {\n    width: 400px;\n    display: none;\n    padding: 5px;\n    border: 1px dashed;\n    background-color: #eee;\n}\n\na {\n    color: #000099;\n}\n\na:hover {\n    color: #999999;\n}\n\n#iem-content a:hover {\n    color: #000066;\n}\n\n.even {\n    background-color: #CDDFF9;\n}\n\n.odd {\n    background-color: #FFFFFF;\n}\n\ntr.ruled {\n    background: #99CCFF;\n}\n\n.kelo {\n    background: #6699CC;\n}\n\n.kimt {\n    background: #00efef;\n}\n\n.tabcommands {\n    color: #003366;\n}\n\nthead th,\ntfoot td {\n    background: #6699CC;\n}\n\n#helpwindow {\n    border-color: #003366;\n}\n\ndiv.iembox {\n    background: #D4F4F9;\n    border: #004662 1px solid;\n}\n\n/* Generic class for warning messages */\n.warning {\n    border: solid 1px #000;\n    background: #FCF9CE url(../images/warning.png) 6px 4px no-repeat;\n    color: #222222;\n    padding-left: 40px;\n    padding-top: 10px;\n    padding-bottom: 10px;\n    text-align: left;\n}\n\n/* http://pixify.com/blog/use-google-plus-to-improve-your-ui/ */\n.buttons {\n    float: left;\n    padding-bottom: 20px;\n    clear: both;\n}\n\na.button {\n    color: #6e6e6e;\n    font: bold 12px Helvetica, Arial, sans-serif;\n    text-decoration: none;\n    padding: 7px 12px;\n    position: relative;\n    display: inline-block;\n    text-shadow: 0 1px 0 #fff;\n    -webkit-transition: border-color .218s;\n    -moz-transition: border .218s;\n    -o-transition: border-color .218s;\n    transition: border-color .218s;\n    background: #f3f3f3;\n    background: -webkit-gradient(linear, 0% 40%, 0% 70%, from(#F5F5F5), to(#F1F1F1));\n    background: -moz-linear-gradient(linear, 0% 40%, 0% 70%, from(#F5F5F5), to(#F1F1F1));\n    border: solid 1px #dcdcdc;\n    border-radius: 2px;\n    -webkit-border-radius: 2px;\n    -moz-border-radius: 2px;\n    margin-right: 10px;\n}\n\na.button:hover {\n    color: #333;\n    border-color: #999;\n    -moz-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.2);\n    -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);\n}\n\na.button:active {\n    color: #000;\n    border-color: #444;\n}\n\na.left {\n    -webkit-border-top-right-radius: 0;\n    -moz-border-radius-topright: 0;\n    border-top-right-radius: 0;\n    -webkit-border-bottom-right-radius: 0;\n    -moz-border-radius-bottomright: 0;\n    border-bottom-right-radius: 0;\n    margin: 0;\n}\n\na.middle {\n    border-radius: 0;\n    -webkit-border-radius: 0;\n    -moz-border-radius: 0;\n    border-left: solid 1px #f3f3f3;\n    margin: 0;\n    border-left: solid 1px rgba(255, 255, 255, 0);\n}\n\na.middle:hover,\na.right:hover {\n    border-left: solid 1px #999\n}\n\na.right {\n    -webkit-border-top-left-radius: 0;\n    -moz-border-radius-topleft: 0;\n    border-top-left-radius: 0;\n    -webkit-border-bottom-left-radius: 0;\n    -moz-border-radius-bottomleft: 0;\n    border-bottom-left-radius: 0;\n    border-left: solid 1px #f3f3f3;\n    border-left: solid 1px rgba(255, 255, 255, 0);\n}\n\na.big {\n    font-size: 16px;\n    padding: 10px 15px;\n}\n\na.supersize {\n    font-size: 20px;\n    padding: 15px 20px;\n}\n\na.save {\n    background: url(sprite.png) 10px 7px no-repeat #f3f3f3;\n    padding-left: 30px;\n}\n\na.add {\n    background: url(sprite.png) 10px -27px no-repeat #f3f3f3;\n    padding-left: 30px;\n}\n\na.delete {\n    background: url(sprite.png) 10px -61px no-repeat #f3f3f3;\n    padding-left: 30px;\n}\n\na.flag {\n    background: url(sprite.png) 10px -96px no-repeat #f3f3f3;\n    padding-left: 30px;\n}\n\na.up {\n    background: url(sprite.png) 10px -133px no-repeat #f3f3f3;\n    padding-left: 30px;\n}\n\na.book {\n    background: url(../images/book.png) no-repeat 5px 5px #f3f3f3;\n    padding-left: 40px;\n}\n\na.agweather {\n    background: url(../images/tractor.png) no-repeat 5px 5px #f3f3f3;\n    padding-left: 40px;\n}\n\na.nws {\n    background: url(../images/nws.png) no-repeat 5px 5px #f3f3f3;\n    padding-left: 40px;\n}\n\na.down {\n    background: url(sprite.png) 10px -168px no-repeat #f3f3f3;\n    padding-left: 30px;\n}\n\na.save-big {\n    background: url(sprite.png) 15px 11px no-repeat #f3f3f3;\n    font-size: 16px;\n    padding: 10px 15px 10px 35px;\n}\n\na.add-big {\n    background: url(sprite.png) 15px -23px no-repeat #f3f3f3;\n    font-size: 16px;\n    padding: 10px 15px 10px 35px;\n}\n\na.delete-big {\n    background: url(sprite.png) 15px -57px no-repeat #f3f3f3;\n    font-size: 16px;\n    padding: 10px 15px 10px 35px;\n}\n\na.flag-big {\n    background: url(sprite.png) 15px -92px no-repeat #f3f3f3;\n    font-size: 16px;\n    padding: 10px 15px 10px 35px;\n}\n\na.up-big {\n    background: url(sprite.png) 15px -128px no-repeat #f3f3f3;\n    width: 18px;\n    font-size: 16px;\n    padding: 10px 15px;\n}\n\na.down-big {\n    background: url(sprite.png) 15px -163px no-repeat #f3f3f3;\n    width: 18px;\n    font-size: 16px;\n    padding: 10px 15px;\n}\n\n.ui-datepicker {\n    z-index: 10000 !important;\n}"
  },
  {
    "path": "htdocs/css/print.css",
    "content": "#iem-footer {\n    display: none;\n}\n\n#iem-header {\n    display: none;\n}\n\n#menuwrapper {\n    display: none;\n}"
  },
  {
    "path": "htdocs/current/all.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/mlib.php\";\n\n$t = new MyView();\n$sortcol = isset($_GET[\"sortcol\"]) ? xssafe($_GET[\"sortcol\"]) : \"peak\";\n$metar = isset($_GET[\"metar\"]) ? xssafe($_GET['metar']) : \"no\";\n$sorder = isset($_GET[\"sorder\"]) ? xssafe($_GET[\"sorder\"]) : \"desc\";\n$state = get_str404(\"state\", \"IA\", 2);\n\n$t->refresh = 60;\n$t->title = \"$state Current Conditions\";\n\n$arr = array(\"state\" => $state);\n$jobj = iemws_json(\"currents.json\", $arr);\n\n$vals = array(\n    \"tmpf\" => \"Air Temperature [F]\", \"dwpf\" => \"Dew Point Temp [F]\",\n    \"sknt\" => \"Wind Speed [knots]\", \"drct\" => \"Wind Direction [deg]\",\n    \"alti\" => \"Altimeter [mb]\", \"peak\" => \"Today's Wind Gust [knots]\",\n    \"peak_ts\" => \"Time of Peak Gust\", \"relh\" => \"Relative Humidity\",\n    \"feel\" => \"Feels Like [F]\", \"vsby\" => \"Visibility [miles]\",\n    \"ts\" => \"Observation Time\", \"phour\" => \"Last Hour Rainfall [inch]\",\n    \"min_tmpf\" => \"Today's Low Temperature\",\n    \"max_tmpf\" => \"Today's High Temperature\",\n    \"pday\" => \"Today Rainfall [inch]\"\n);\nif (! array_key_exists($sortcol, $vals)) {\n    // Bad user!\n    xssafe(\"<tag>\");\n}\n\n$t->current_network = 'By State';\n\n$mno = ($metar == \"no\") ? \" CHECKED\" : '';\n$myes = ($metar == \"yes\") ? \" CHECKED\" : '';\n$ar = array(\n    \"asc\" => \"Ascending\",\n    \"desc\" => \"Descending\"\n);\n$aselect = make_select(\"sorder\", $sorder, $ar);\n\n$uri = \"all.phtml?state=$state&metar=$metar&sorder=$sorder&sortcol=\";\n\n$mydata = array();\nforeach ($jobj[\"data\"] as $bogus => $iemob) {\n    $key = $iemob[\"station\"];\n    $mydata[$key] = $iemob;\n    $mydata[$key][\"sped\"] = $mydata[$key][\"sknt\"] * 1.15078;\n    $mydata[$key][\"relh\"] = relh(f2c($mydata[$key][\"tmpf\"]), f2c($mydata[$key][\"dwpf\"]));\n    if ($mydata[$key][\"relh\"] < 5) {\n        $mydata[$key][\"relh\"] = \"M\";\n        $mydata[$key][\"dewpf\"] = \"M\";\n        if ($sortcol == \"feel\" || $sortcol == \"dwpf\" || $sortcol == \"relh\") {\n            $mydata[$key][\"feel\"] = null;\n            continue;\n        }\n    }\n    if ($mydata[$key][\"tmpf\"] < -60) {\n        $mydata[$key][\"tmpf\"] = \"M\";\n        if ($sortcol == \"tmpf\" || $sortcol == \"feel\" || $sortcol == \"dwpf\" || $sortcol == \"relh\") {\n            $mydata[$key][\"feel\"] = null;\n            continue;\n        }\n    }\n    if ($mydata[$key][\"alti\"] < -60) {\n        $mydata[$key][\"alti\"] = \"M\";\n        if ($sortcol == \"alti\") {\n            $mydata[$key][\"alti\"] = null;\n            continue;\n        }\n    }\n    if ($mydata[$key][\"vsby\"] < 0) {\n        $mydata[$key][\"vsby\"] = \"M\";\n        if ($sortcol == \"vsby\") {\n            $mydata[$key][\"vsby\"] = null;\n            continue;\n        }\n    }\n\n    if ($mydata[$key][\"max_gust\"] > $mydata[$key][\"max_sknt\"]) {\n        $mydata[$key][\"peak\"] = $mydata[$key][\"max_gust\"];\n        if (! is_null($mydata[$key][\"local_max_gust_ts\"])) {\n            $mydata[$key][\"peak_ts\"] = strtotime($mydata[$key][\"local_max_gust_ts\"]);\n        }\n    } else {\n        $mydata[$key][\"peak\"] = $mydata[$key][\"max_sknt\"];\n        $mydata[$key][\"peak_ts\"] = 0;\n        if (! is_null($mydata[$key][\"local_max_sknt_ts\"])) {\n            $mydata[$key][\"peak_ts\"] = strtotime($mydata[$key][\"local_max_sknt_ts\"]);\n        }\n    }\n}\n\n$finalA = array();\n$finalA = aSortBySecondIndex($mydata, $sortcol, $sorder);\n$now = time();\n$i = 0;\n$table = \"\";\nforeach ($finalA as $key => $val) {\n    $i++;\n    if ($i > 30) break;\n    $parts = $finalA[$key];\n\n    $table .= \"<tr\";\n    if ($i % 2 == 0)  $table .= \" bgcolor='#eeeeee'\";\n    $table .= \"><td><input type=\\\"checkbox\\\" name=\\\"st[]\\\" value=\\\"{$key}\\\"></td>\";\n\n    $tdiff = $now - strtotime($parts[\"local_valid\"]);\n    $table .= \"<td>\" . $parts[\"name\"] . \" (\" . $key . \")</td>\";\n    $table .= \"<td \";\n    $fmt = \"h:i A\";\n    if ($tdiff > 10000) {\n        $fmt = \"d M h:i A\";\n        $table .= 'bgcolor=\"red\"';\n    } else if ($tdiff > 7200) {\n        $table .= 'bgcolor=\"orange\"';\n    } else if ($tdiff > 3600) {\n        $table .= 'bgcolor=\"green\"';\n    }\n    $table .= \">\" . date($fmt, strtotime($parts[\"local_valid\"])) . \"</td>\n     <td align='center'>\" . myround($parts[\"tmpf\"], 0) . \"(<font color=\\\"#ff0000\\\">\" . myround($parts[\"max_tmpf\"], 0) . \"</font>/<font color=\\\"#0000ff\\\">\" . myround($parts[\"min_tmpf\"], 0) . \"</font>)</td>\n     <td>\" . myround($parts[\"dwpf\"], 0) . \"</td>\n     <td>\" . myround($parts[\"feel\"], 0) . \"</td>\n        <td>\" . $parts[\"relh\"] . \"</td>\n        <td>\" . $parts[\"alti\"] . \"</td>\n        <td>\" . $parts[\"vsby\"] . \"</td>\n             <td>\" . myround($parts[\"sknt\"], 0);\n    if (strlen($parts[\"gust\"] != 0)) {\n        $table .= \"G\" . myround($parts[\"gust\"], 0);\n    }\n    $table .= \"</td>\";\n    $table .= \"<td>\" . $parts[\"drct\"] . \"</td><td>\";\n    if (array_key_exists(\"peak\", $parts) && array_key_exists(\"peak_ts\", $parts)) {\n        $table .= myround($parts[\"peak\"], 0) . \" @ \" . date(\"h:i A\", $parts[\"peak_ts\"]);\n    }\n    $table .= \"<td>{$parts['phour']}</td><td>{$parts['pday']}</td></tr>\\n\";\n    if ($metar == \"yes\") {\n        $table .= \"<tr\";\n        if ($i % 2 == 0)  $table .= \" bgcolor='#eeeeee'\";\n        $table .= \">\";\n        $table .= \"<td colspan=14>\n             <font color=\\\"brown\\\">\" . $parts[\"raw\"] . \"</font></td>\n             </tr>\\n\";\n    }\n}\n$sselect = stateSelect($state);\n$t->content = <<<EOM\n<p>\n<form method=\"GET\" action=\"all.phtml\" name=\"work\">\n<input type=\"hidden\" value=\"{$sortcol}\" name=\"sortcol\">\n<table border=1 cellspacing=0 cellpadding=1>\n<tr>\n  <th>View Options:</th>\n  <td>Include METARS:\n  <input value=\"no\" type=\"radio\" name=\"metar\"{$mno}> No\n  <input value=\"yes\" type=\"radio\" name=\"metar\"{$myes}> Yes\n</td>\n<td>Sort Order:{$aselect}</td>\n<td>State:{$sselect}</td>\n<td><input type=\"submit\" value=\"Go!\"></form></td>\n</tr></table>\n<p>Top 30 values of <b>{$vals[$sortcol]}</b> displayed from the combination\nof RWIS, ASOS, & AWOS sites in the state.\n\n<form method=\"GET\" action=\"/my/current.phtml\">\n\n<table style=\"width: 100%; font-size: 10pt;\" cellspacing=0 cellpadding=1 border=1>\n<thead class=\"sticky\">\n<tr>\n  <th rowspan=\"2\">ADD:</th>\n  <th rowspan=\"2\">Station:</th>\n  <th rowspan=\"2\"><a href=\"{$uri}ts\">Ob Time</a></th>\n  <th colspan=\"3\">Temps &deg;F</th>\n  <th colspan=\"3\">&nbsp;</th>\n  <th colspan=\"3\">Wind [knots]</th>\n  <th colspan=\"2\">Precip</font></th>\n<tr>\n  <th>\n <a href=\"{$uri}tmpf\">Air</a>\n (<a href=\"{$uri}max_tmpf\">Hi</a> /\n <a href=\"{$uri}min_tmpf\">Lo</a>)\n</th>\n  <th><a href=\"{$uri}dwpf\">Dewp</a></th>\n  <th><a href=\"{$uri}feel\">Feels Like</a></th>\n  <th><a href=\"{$uri}relh\">RH %</a></th>\n  <th><a href=\"{$uri}alti\">Alti</a></th>\n  <th><a href=\"{$uri}vsby\">Vsby</a></th>\n  <th><a href=\"{$uri}sknt\">Speed</a></th>\n  <th><a href=\"{$uri}drct\">Direction</a></th>\n  <th><a href=\"{$uri}peak\">Gust</a>\n    @ <a href=\"{$uri}peak_ts\">Time</a></th>\n  <th><a href=\"{$uri}phour\">Last Hour</a></th>\n  <th><a href=\"{$uri}pday\">Today</a></th>\n</tr></thead>\n<tbody>  \n{$table}\n</tbody>\n</table>\n\n<input type=\"submit\" value=\"Add to Favorites\">\n<input type=\"reset\" value=\"Reset\">\n\n</form></div>\nEOM;\n$t->render('sortables.phtml');\n"
  },
  {
    "path": "htdocs/current/bloop.phtml",
    "content": "<?php\nrequire_once '../../config/settings.inc.php';\n$JQUERYUI = \"1.12.1\";\nrequire_once '../../include/myview.php';\nrequire_once \"../../include/cameras.inc.php\";\nrequire_once \"../../include/forms.php\";\ndefine(\"IEM_APPID\", 117);\n$t = new MyView();\n\n$java = get_str404(\"java\", 'script');\n$cid = get_str404('cid', 'ISUC-006');\n\n$frames  = get_int404('frames', 12);\n$interval = get_int404('interval', 300);\n$day = get_int404(\"day\", date(\"d\", time() - 3600));\n$month = get_int404(\"month\", date(\"m\", time() - 3600));\n$hour = get_int404(\"hour\", date(\"H\", time() - 3600));\n$minute = get_int404(\"minute\", date(\"i\", time() - 3600));\n$minute = $minute - ($minute % 5);\n$year = get_int404(\"year\", date(\"Y\", time() - 3600));\n$nts = mktime($hour, $minute, 0, $month, $day, $year);\n\n$width = 320; $height = 240;\n$szSwitch = mktime(14,0,0,5,12,2011);\nif ($nts > $szSwitch){\n    $width = 640;\n    $height = 480;\n}\n\n$now = time();\n$wmessage = \"\";\nif ($nts < $cameras[$cid][\"sts\"] || $nts > $cameras[$cid][\"ets\"]){\n  $wmessage = \"<p><div class=\\\"warning\\\"><b>Error:</b> Your choice of time and station is outside of the archive available for this site!</div>\\n\";\n  $day = date(\"d\", $cameras[$cid][\"ets\"] - 3600);\n  $month = date(\"m\", $cameras[$cid][\"ets\"] - 3600);\n  $hour = date(\"H\", $cameras[$cid][\"ets\"] - 3600);\n  $minute = date(\"i\", $cameras[$cid][\"ets\"] - 3600);\n  $year = date(\"Y\", $cameras[$cid][\"ets\"] - 3600);\n  $minute = $minute - ($minute % 5);\n}\n\n$nts = mktime($hour, $minute, 0, $month, $day, $year);\n\n$images = Array();\n$labels = Array();\n$files = \"\";\nfor ($i=0; $i < (intval($frames));$i++){\n  $ts = $nts + ($i * (intval($interval) ));\n  if ($ts > $now) { /* We are in the future! */\n    $frames = $i;\n    break;\n  }\n  $uri = \"/archive/data/\". gmdate('Y/m/d/', $ts) .\"camera/$cid/\". $cid .\"_\". gmdate('YmdHi', $ts) .\".jpg\";\n  $labels[] = date(\"d M Y H:i a\", $ts);\n  $images[] = $uri;\n  $files .= $uri .\",\";\n}\n\n$cselect = \"<select name=\\\"cid\\\">\";\nforeach($cameras as $k => $v){\n    if ($v[\"network\"] == \"IDOT\"){ continue; }\n    $lbl = sprintf(\"%s (%s)\", $v[\"name\"], date(\"d M Y\", $v[\"sts\"]) );\n    $cselect .= \"<option value=\\\"$k\\\"\";\n    if ($cid == $k) $cselect .= \"selected=\\\"selected\\\"\";\n    $cselect .= \">\". $lbl .\"\\n\";\n}\n$cselect .= \"</select>\";\n$ys = yearSelect(2003, $year, \"year\");\n$ms = monthSelect($month);\n$ds = daySelect($day);\n$hs = hourSelect($hour, \"hour\");\n$mi = minuteSelect($minute, \"minute\",5);\n\n$ar = Array(\n        \"script\" => \"Java Script\",\n        \"none\" => \"List Images\",\n);\n$loopselect = make_select(\"java\", $java, $ar);\n\n$ar = Array(\n        \"60\" => \"1 minute\",\n        \"300\" => \"5 minutes\",\n        \"900\" => \"15 minutes\",\n        \"3600\" => \"1 hour\",\n        \"86400\" => \"1 day\",\n        \"604800\" => \"1 week\",\n);\n$intselect = make_select(\"interval\", $interval, $ar);\n\n$jsextra = \"\";\n$headextra = \"\";\nif ($java == \"script\") {\n    $t->jsani = true;\n    $sz = sizeof($images);\n    $hidden_list = '<ul id=\"iemjsani_frames\" style=\"display: none;\">';\n    foreach($images as $key => $val){\n        $hidden_list .= sprintf(\"<li>%s</li>\", $val);\n    }\n    $hidden_list .= \"</ul>\";\n    $control = <<<EOM\n<div id=\"iemjsani\" style=\"width: {$width}px; height: {$height}px;\"></div>\n{$hidden_list}\nEOM;\n} else {\n    $control = \"\";\n    foreach($images as $key => $val){\n        $control .= sprintf(\"<img src=\\\"%s\\\" style=\\\"margin: 2px;\\\">\", $val);\n    }\n}\n\n$imglinks = \"\";\nreset($images);\nforeach($images as $key => $value){\n    $imglinks .= \"<li><a href=\\\"\". $images[$key] .\"\\\">\". $labels[$key] .\"</a></li>\";\n}\n\n$t->jsextra = $jsextra;\n$t->headextra = $headextra;\n$t->content = <<<EOM\n{$wmessage}\n\n<p>Still images are saved from the SchoolNet8 web cameras every 5 minutes.\nThis page gives you a tool to build animations from this archive of images.</p>\n\n\n<form method=\"GET\" action=\"bloop.phtml\" name=\"imageform\">\n\n<table>\n<tr><th>Camera (Archive Starts / Ends):</th>\n<th>Year:</th><th>Month:</th><th>Day:</th><th>Hour:</th><th>Minute:</th></tr>\n <tr>\n  <td>{$cselect}\n</td>\n\n<td>{$ys}</td>\n<td>{$ms}</td>\n<td>{$ds}</td>\n<td>{$hs}</td>\n<td>{$mi}</td>\n</tr>\n</table>\n\n<table>\n<tr>\n<th>Frames:</th>\n<td><input type=\"text\" maxsize=\"2\" size=\"3\" name=\"frames\" value=\"{$frames}\"></td>\n<th>Loop Tool:</th>\n<td>{$loopselect}</td>\n<th>Frame Interval:</th><td>\n{$intselect}\n</td></tr></table>\n<input type=\"submit\" value=\"Gen Loop\"></form>\n\n<div style=\"text-align: center;\">\n{$control}\n</div>\n\n<p>Images used in this loop.<br>\n<ul>\n{$imglinks}\n</ul>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/current/camera.module.js",
    "content": "/**\n * Switch the archived checkbox to checked state\n */\nexport function switchToArchiveMode() {\n    const isArchivedElement = document.getElementById('isarchived');\n    if (isArchivedElement instanceof HTMLInputElement) {\n        isArchivedElement.checked = true;\n    }\n}\n\n/**\n * Set up event listeners for camera form controls\n */\nfunction setupEventListeners() {\n    // Get all the form controls that should trigger archive mode\n    const formControls = [\n        document.querySelector('select[name=\"year\"]'),\n        document.querySelector('select[name=\"month\"]'),\n        document.querySelector('select[name=\"day\"]'),\n        document.querySelector('select[name=\"hour\"]'),\n        document.querySelector('select[name=\"minute\"]')\n    ];\n\n    // Add change event listeners to all form controls\n    formControls.forEach(control => {\n        if (control) {\n            control.addEventListener('change', switchToArchiveMode);\n        }\n    });\n}\n\n// Initialize when DOM is loaded\ndocument.addEventListener('DOMContentLoaded', setupEventListeners);"
  },
  {
    "path": "htdocs/current/camera.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/iemprop.php\";\n$camera_refresh = get_iemprop(\"webcam.interval\");\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/cameras.inc.php\";\n$t = new MyView();\n/* CGI GET Requests */\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$hour = get_int404(\"hour\", date(\"H\"));\n$minute = get_int404(\"minute\", date(\"i\"));\n$isarchive = isset($_GET[\"archive\"]);\n$network = get_str404(\"network\", \"KCCI\");\n\n$ts = time();\nif ($isarchive) {\n    $radts = mktime($hour, $minute, 0, $month, $day, $year) - (($minute % 5) * 60);\n} else {\n    $radts = time();\n}\n$num = 1;\nif ($network == \"KCRG\") {\n    $cameras[\"KCCI-017\"][\"network\"] = \"KCRG\";\n}\nforeach ($cameras as $id => $val) {\n    if ($cameras[$id][\"network\"] != $network) continue;\n\n    $cameras[$id][\"url\"] = sprintf(\"/data/camera/stills/%s.jpg?%s\", $id, time());\n    $camfn = \"/mesonet/ldmdata/camera/stills/{$id}.jpg\";\n    if (!is_file($camfn) || filemtime($camfn) < (time() - 1200)) {\n        $cameras[$id][\"active\"] = false;\n    }\n\n    if ($isarchive) {\n        $cameras[$id][\"active\"] = true;\n        $ts = mktime($hour, $minute, 0, $month, $day, $year);\n        $ts5 = mktime($hour, $minute - ($minute % 5), 0, $month, $day, $year);\n\n        $fp = \"/mesonet/ARCHIVE/data/\" . gmdate(\"Y/m/d/\", $ts) . \"camera/$id/{$id}_\" . gmdate(\"YmdHi\", $ts) . \".jpg\";\n        $url = \"/archive/data/\" . gmdate(\"Y/m/d/\", $ts) . \"camera/$id/{$id}_\" . gmdate(\"YmdHi\", $ts) . \".jpg\";\n        $fp5 = \"/mesonet/ARCHIVE/data/\" . gmdate(\"Y/m/d/\", $ts5) . \"camera/$id/{$id}_\" . gmdate(\"YmdHi\", $ts5) . \".jpg\";\n        $url5 = \"/archive/data/\" . gmdate(\"Y/m/d/\", $ts5) . \"camera/$id/{$id}_\" . gmdate(\"YmdHi\", $ts5) . \".jpg\";\n\n        if (is_file($fp)) $cameras[$id][\"url\"] = $url;\n        else if (is_file($fp5)) $cameras[$id][\"url\"] = $url5;\n        else $cameras[$id][\"active\"] = false;\n    }\n\n    if ($cameras[$id][\"active\"]) {\n        $cameras[$id][\"num\"] = intval(substr($id, 5, 3));\n    }\n}/* End of while */\n\nreset($cameras);\n\n$t->title = \"Web Cameras\";\n$t->jsextra = '<script type=\"module\" src=\"camera.module.js\"></script>';\n\nif (!$isarchive && isset($camera_refresh))\n    $t->refresh = $camera_refresh;\n\n$selback = array(\n    \"KELO\" => \"#fff\",\n    \"KCCI\" => \"#fff\",\n    \"KCRG\" => \"#fff\",\n    \"MCFC\" => \"#fff\"\n);\n$selback[$network] = \"#ffcc99\";\n\n$isarchived = ($isarchive) ? \" CHECKED=CHECKED\" : \"\";\n$ys = yearSelect(2003, $year, \"year\");\n$month_select = monthSelect($month, \"month\");\n$ds = daySelect($day, \"day\");\n$hs = hourSelect($hour, \"hour\");\n$ms = minuteSelect($minute, \"minute\", 1);\n$dd = date(\"YmdHi\", $radts);\n\n$misstxt = \"Cameras Missing: \";\n$control = \"\";\nforeach ($cameras as $id => $v) {\n    if ($v[\"network\"] != $network) {\n        continue;\n    }\n    if (!$v[\"active\"]) {\n        $misstxt .= $v[\"name\"] . \" , \";\n        continue;\n    }\n    $control .= sprintf(\"<div style=\\\"float: left; margin-left: 5px;\\\"><b>%s. %s, %s</b> (%s County)<br /><img src=\\\"%s\\\"></div>\", $v[\"num\"], $v[\"name\"], $v[\"state\"], $v[\"county\"], $v[\"url\"]);\n}\n\n$t->content = <<<EOM\n\n<div class=\"alert alert-danger\">This legacy app will be removed at some point\nin the future.  Please use the <a href=\"/current/webcam.php\">newer version</a>.</div>\n\n<strong>Webcam Networks</strong>\n<div style=\"width:775px; border: 1px dashed #ccc;\">\n<div style=\"float: left; width: 250px; text-align: center; border: 3px #eee solid; background: {$selback[\"KCCI\"]}\">\n  <a href=\"camera.phtml?network=KCCI\">KCCI-TV<br />Des Moines, IA</a>\n</div>\n<div style=\"float: left; width: 250px; text-align: center; border: 3px #eee solid; background: {$selback[\"KCRG\"]}\">\n  <a href=\"camera.phtml?network=KCRG\">KCRG-TV<br />Cedar Rapids, IA</a>\n</div>\n<div style=\"float: left; width: 250px; text-align: center; border: 3px #eee solid; background: {$selback[\"KELO\"]}\">\n  <a href=\"camera.phtml?network=KELO\">KELO-TV<br />Sioux Falls, SD</a>\n</div>\n<br clear=\"all\" />\n</div>\n\n<form method=\"GET\" action=\"camera.phtml\">\n<input type=\"hidden\" value=\"{$network}\" name=\"network\"> \n<table><caption>Time Settings:</caption>\n<thead><tr><th>&nbsp;</th><th>Year:</th><th>Month:</th><th>Day:</th><th>Hour:</th><th>Minute</th><td></td></tr></thead>\n<tbody>\n<tr>\n<td>\n<input type=\"checkbox\" value=\"yes\" id=\"isarchived\" name=\"archive\" {$isarchived}>\n<label for=\"isarchived\">Archived Images</label>\n</td>\n<td>{$ys}</td>\n<td>{$month_select}</td>\n<td>{$ds}</td>\n<td>{$hs}</td>\n<td>{$ms}</td>\n<td><input type=\"submit\" value=\"GO!\"></td>\n</tr>\n</tbody></table>\n</form>\n\n<div style=\"float: left; margin-left: 5px;\"><b>Radar View</b><br />\n<img src=\"camrad.php?network={$network}&ts={$dd}\"></div>\n\n{$control}\n{$misstxt}\n\n<br style=\"clear: both;\">\n\n<p><b>Cool Shots!</b>\n<ul>\n <li><a href=\"camera.phtml?archive=yes&year=2004&month=6&day=11&hour=19&minute=32\">11 Jun 2004 - 7:32 PM, Webster City Tornado</a></li>\n <li><a href=\"camera.phtml?archive=yes&year=2005&month=5&day=26&hour=19&minute=15\">26 May 2005 - 7:15 PM, Pella Double Rainbow</a></li>\n <li><a href=\"camera.phtml?archive=yes&year=2005&month=6&day=8&hour=20&minute=55\">8 Jun 2005 - 8:55 PM, All sorts of colours</a></li>\n <li><a href=\"camera.phtml?archive=yes&year=2005&month=9&day=8&hour=12&minute=30\">8 Sep 2005 - 12:30 PM, Blurry shot of Ames Tornado</a></li>\n <li><a href=\"camera.phtml?archive=yes&year=2005&month=11&day=12&hour=16&minute=38\">12 Nov 2005 - 4:38 PM, Woodward tornado from Madrid</a></li>\n <li><a href=\"camera.phtml?archive=yes&year=2005&month=11&day=12&hour=17&minute=00\">12 Nov 2005 - 5:00 PM, Ames tornado</a></li>\n <li><a href=\"camera.phtml?archive=yes&year=2006&month=07&day=17&hour=16&minute=50\">17 Jul 2006 - 4:50 PM, Tama possible brief tornado</a></li>\n <li><a href=\"camera.phtml?archive=yes&year=2007&month=10&day=2&hour=17&minute=56\">2 Oct 2007 - 5:56 PM, Twin Cedars possible tornado</a></li>\n <li><a href=\"camera.phtml?archive=yes&year=2008&month=8&day=30&hour=20&minute=20\">30 Aug 2008 - 8:20 PM, Interesting Sunset Halos</a></li>\n</ul>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/current/camlapse/app.js",
    "content": "/* global flowplayer */\n\n// https://stackoverflow.com/questions/5202085\nfunction rsplit(val, sep, maxsplit) {\n    const split = val.split(sep);\n    return maxsplit ? [split.slice(0, -maxsplit).join(sep)].concat(split.slice(-maxsplit)) : split;\n}\n\n/**\n * Replace HTML special characters with their entity equivalents\n * @param string val\n * @returns string converted string\n */\nfunction escapeHTML(val) {\n    return val.replace(/&/g, '&amp;')\n              .replace(/</g, '&lt;')\n              .replace(/>/g, '&gt;')\n              .replace(/\"/g, '&quot;')\n              .replace(/'/g, '&#039;');\n}\n\nlet player = null;\n\nfunction myloader() {\n    const ts = new Date();\n    const mycam = escapeHTML(document.theform.mycam.value);\n    const mylapse = escapeHTML(document.theform.mylapse.value);\n    window.location.href = `#${mycam}_${mylapse}`;\n    const url = `https://mesonet.agron.iastate.edu/onsite/lapses/auto/${mycam}_${mylapse}.mp4?${ts.getTime()}`;\n\n    if (player) {\n        // Load new video into existing player\n        player.load({\n            sources: [\n                { type: \"video/mp4\", src: url }\n            ]\n        });\n    }\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    // Initialize the flowplayer\n    const container = document.querySelector('.flowplayer');\n    player = flowplayer(container, {\n        clip: {\n            sources: [\n                { type: \"video/mp4\", src: \"https://mesonet.agron.iastate.edu/onsite/lapses/auto/isu_curtis_center_sunrise.mp4\" }\n            ]\n        }\n    });\n\n    player.on(\"error\", (_e, api, err) => {\n        if (err.code === 4) { // Video file not found\n            // reset state\n            api.error = api.loading = false;\n        }\n    });\n\n    const tokens = window.location.href.split('#');\n    if (tokens.length === 2) {\n        const tokens2 = rsplit(tokens[1], '_', 1);\n        if (tokens2.length === 2) {\n            const mycam = tokens2[0];\n            document.getElementById('mycam').value = mycam;\n            const mylapse = tokens2[1];\n            document.getElementById('mylapse').value = mylapse;\n            window.setTimeout(myloader, 1000);\n        } else {\n            document.getElementById('mycam').value = 'isu_curtis_center';\n        }\n    } else {\n        document.getElementById('mycam').value = 'isu_curtis_center';\n    }\n});\n"
  },
  {
    "path": "htdocs/current/camlapse/index.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/cameras.inc.php\";\n\n$t = new MyView();\n$t->title = \"Webcam Lapse Player\";\n$t->headextra = <<<EOM\n<link href=\"/vendor/flowplayer/7.2.6/skin/skin.css\" rel=\"stylesheet\">\nEOM;\n\n$camselect = \"<select id=\\\"mycam\\\" name=\\\"mycam\\\" onchange=\\\"myloader();\\\">\";\nforeach ($cameras as $key => $dict) {\n    if ($dict[\"removed\"] || $dict[\"network\"] == \"IDOT\") {\n        continue;\n    }\n    $camselect .= \"<option value=\\\"\" . $dict[\"moviebase\"] . \"\\\">\" . $dict[\"name\"] . \" \\n\";\n}\n$camselect .= \"</select>\";\n\n$t->content = <<<EOM\n<h3>Recent Web Cam Time Lapses</h3>\n\n<p>Each day, the IEM generates five time lapses from each of the web cameras.\nThis page allows you to view the most recent iteration of these lapses. Please\nnote the timestamp on the lapses, some of them may be old.</p>\n\n\n<div style=\"background: #eee; border: 1px solid #000; margin: 5px; padding: 5px;\">\n<div class=\"flowplayer\">\n<video>\n<source type=\"video/mp4\" src=\"https://mesonet.agron.iastate.edu/onsite/lapses/auto/isu_curtis_center_sunrise.mp4\">\n<source type=\"video/flv\" src=\"https://mesonet.agron.iastate.edu/onsite/lapses/auto/isu_curtis_center_sunrise.flv\">\n</video>\n</div>\n<form name=\"theform\">\n<br /><strong>Select Camera:</strong>\n{$camselect}\n<strong>Select Lapse:</strong>\n<select id=\"mylapse\" name=\"mylapse\" onchange=\"myloader()\">\n <option value=\"sunrise\">Sunrise\n <option value=\"morning\">Morning (8 AM - 11 AM)\n <option value=\"afternoon\">Afternoon (1 PM - 4 PM)\n <option value=\"eve\">Sunset\n <option value=\"day\">Full day\n</select>\n</div>\n</form>\nEOM;\n$t->jsextra = <<<EOM\n<script type=\"text/javascript\" src=\"/vendor/flowplayer/7.2.6/flowplayer.min.js\"></script>\n<script type=\"text/javascript\" src=\"app.js?v=2\"></script>\nEOM;\n\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/current/camlapse/kcrg.js",
    "content": "// global flowplayer\nflowplayer.conf = {\n    engine: 'flash',\n    swf: '/vendor/flowplayer/6.0.2/flowplayer.swf'\n};\nlet mycam = null;\nlet mylapse = null;\nlet ts = new Date();\nconst container = document.getElementById(\"player\");\nflowplayer(container, {\n    clip: {\n        sources: [{\n            type: 'video/mp4',\n            src: `/onsite/lapses/auto/kirkwood_sunrise.mp4?${ts.getTime()}`\n        },\n        {\n            type: 'video/flv',\n            src: `/onsite/lapses/auto/kirkwood_sunrise.flv?${ts.getTime()}`\n        }\n\n        ]\n    }\n});\n\nfunction myloader() {\n    ts = new Date();\n    mycam = document.theform.mycam.value;\n    mylapse = document.theform.mylapse.value;\n    window.location.href = `#${encodeURIComponent(mycam)}_${encodeURIComponent(mylapse)}`;\n    const url = `/onsite/lapses/auto/${encodeURIComponent(mycam)}_${encodeURIComponent(mylapse)}.flv?${ts.getTime()}`;\n    const url2 = `/onsite/lapses/auto/${encodeURIComponent(mycam)}_${encodeURIComponent(mylapse)}.mp4?${ts.getTime()}`;\n    const api = flowplayer();\n    api.load([{ flash: url, mp4: url2 }]);\n}\n\nconst tokens = window.location.href.split('#');\nif (tokens.length === 2) {\n    const tokens2 = tokens[1].split('_');\n    if (tokens2.length === 2) {\n        mycam = tokens2[0];\n        document.getElementById('mycam').value = mycam;\n        mylapse = tokens2[1];\n        document.getElementById('mylapse').value = mylapse;\n        myloader();\n    }\n}\n"
  },
  {
    "path": "htdocs/current/camlapse/kcrg.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/cameras.inc.php\";\n\n$camselect = \"<select id=\\\"mycam\\\" name=\\\"mycam\\\" onchange=\\\"myloader();\\\">\";\nforeach ($cameras as $key => $dict) {\n    if ($dict[\"removed\"] || ($dict[\"network\"] != \"KCRG\" && $key != 'KCCI-017')) {\n        continue;\n    }\n    $camselect .= \"<option value=\\\"\" . $dict[\"moviebase\"] . \"\\\">\" . $dict[\"name\"] . \" \\n\";\n}\n$camselect .= \"</select>\";\n\necho <<<EOM\n<html>\n<head>\n<title>Webcam Lapse Player</title>\n<link href=\"/vendor/flowplayer/6.0.2/skin/minimalist.css\" rel=\"stylesheet\">\n<script type=\"text/javascript\" src=\"/vendor/flowplayer/6.0.2/flowplayer.min.js\"></script>\n</head>\n<body>\n\n<div style=\"background: #eee; border: 1px solid #000; margin: 5px; padding: 5px; width: 650px;\">\n<div id=\"player\"  style=\"display:block;width:640px;height:490px;\"></div>\n<form name=\"theform\">\n<br /><strong>Select Camera:</strong>\n{$camselect}\n<strong>Select Lapse:</strong>\n<select id=\"mylapse\" name=\"mylapse\" onchange=\"myloader()\">\n <option value=\"sunrise\">Sunrise \n <option value=\"morning\">Morning (8 AM - 11 AM) \n <option value=\"afternoon\">Afternoon (1 PM - 4 PM)\n <option value=\"eve\">Sunset \n <option value=\"day\">Full day\n</select>\n</div>\n</form>\n\n<script src=\"kcrg.js\"></script>\n</body>\n</html>\nEOM;\n"
  },
  {
    "path": "htdocs/current/camrad.php",
    "content": "<?php\n// Generate a RADAR image with webcams overlain for some *UTC* timestamp!\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/cameras.inc.php\";\nrequire_once \"../../include/vendor/mapscript.php\";\nrequire_once \"../../include/forms.php\";\n\n$conn = iemdb(\"mesosite\");\n\n/* First, we need some GET vars */\n$network = isset($_GET[\"network\"]) ? substr(xssafe($_GET[\"network\"]), 0, 4) : null;\nif (is_null($network)) {\n    http_response_code(422);\n    die(\"network not found, ERROR\");\n}\n$ts = null;\n\nif ($network == \"KCRG\") {\n    $cameras[\"KCCI-017\"][\"network\"] = \"KCRG\";\n}\n\nif (isset($_GET[\"ts\"]) && $_GET[\"ts\"] != \"0\") {\n    $ts = DateTime::createFromFormat('YmdHi', $_GET[\"ts\"]);\n}\n\nif (! is_null($ts)) {\n    // If we are in archive mode and requesting a non 5 minute interval,\n    // what shall we do? Lets check for entries in the database\n    $sql = sprintf(\n        \"SELECT * from camera_log WHERE valid = '%s'\",\n        $ts->format(\"Y-m-d H:i\")\n    );\n    $rs = pg_query($conn, $sql);\n    if (pg_num_rows($rs) == 0) {\n        $mins = intval($ts->format(\"i\")) % 5;\n        if ($mins > 0){\n            $ts = $ts->sub(new DateInterval(\"PT{$mins}M\"));\n        }\n        $sql = sprintf(\n            \"SELECT * from camera_log WHERE valid = '%s'\",\n            $ts->format(\"Y-m-d H:i\")\n        );\n        $rs = pg_query($conn, $sql);\n    }\n\n    /* Now we compute the RADAR timestamp, yippee */\n    $mins = intval($ts->format(\"i\")) % 5;\n    $radts = clone $ts;\n    $radts->sub(new DateInterval(\"PT{$mins}M\"));\n} else {\n    $ts = new DateTime();\n    $sql = \"SELECT * from camera_current WHERE valid > (now() - '30 minutes'::interval)\";\n    $rs = pg_query($conn, $sql);\n    $radts = new DateTime();\n    $mins = intval($radts->format(\"i\")) % 5;\n    $radts = $radts->sub(new DateInterval(\"PT{$mins}M\"));\n}\n\n/* Who was online and where did they look?  Hehe */\n$cdrct = array();\nwhile ($row = pg_fetch_assoc($rs)) {\n    $cdrct[$row[\"cam\"]] = $row[\"drct\"];\n}\n\n/* Finally we get to map rendering */\n$map = new mapObj(\"../../data/gis/base4326.map\");\n\n/* Hard coded extents based on network */\nif ($network == \"KCCI\")\n    $map->setExtent(-95.1, 40.55, -92.2, 43.4);\nelseif ($network == \"IDOT\")\n    $map->setExtent(-95.5, 39.7, -91.2, 44.6);\nelseif ($network == \"KELO\")\n    $map->setExtent(-98.8, 42.75, -95.9, 45.6);\nelseif ($network == \"KCRG\")\n    $map->setExtent(-93.0, 40.9, -90.1, 43.7);\n$map->setSize(320, 240);\n\n$namer = $map->getLayerByName(\"namerica\");\n$namer->__set(\"status\", 1);\n\n$stlayer = $map->getLayerByName(\"states\");\n$stlayer->__set(\"status\", 1);\n\n$counties = $map->getLayerByName(\"uscounties\");\n$counties->__set(\"status\", 1);\n\n$c0 = $map->getLayerByName(\"sbw\");\n$c0->__set(\"status\", MS_ON);\n$db_ts = $ts->format(\"Y-m-d H:i\");\n$year = $ts->format(\"Y\");\n$c0->__set(\"data\", <<<EOM\n    geom from (\n    select significance, phenomena, geom, random() as oid from sbw\n    WHERE vtec_year = $year and polygon_end > '$db_ts' and\n    polygon_begin <= '$db_ts' and issue <= '$db_ts'\n    and significance = 'W' ORDER by phenomena ASC) as foo\n    using unique oid using SRID=4326\nEOM);\n\n$radar = $map->getLayerByName(\"nexrad_n0q\");\n$radar->__set(\"status\", MS_ON);\n$radts->setTimezone(new DateTimeZone(\"UTC\"));\n$fp = \"/mesonet/ARCHIVE/data/\" . $radts->format('Y/m/d/') . \"GIS/uscomp/n0r_\" . $radts->format('YmdHi') . \".png\";\nif (file_exists($fp)) {\n    $radar->__set(\"data\", $fp);\n    $title = \"RADAR\";\n    $y = 10;\n} else {\n    $radar->__set(\"status\", MS_OFF);\n    $title = \"RADAR Unavailable\\n\";\n    $y = 20;\n}\n\n$cp = new layerObj($map);\n$cp->setProjection(\"epsg:4326\");\n$cp->__set(\"type\", MS_SHAPE_POINT);\n$cp->__set(\"status\", MS_ON);\n$cp->__set(\"labelcache\", MS_ON);\n$cl = new classObj($cp);\n$lbl = new labelObj();\n$cl->addLabel($lbl);\n$cl->getLabel(0)->__set(\"size\", 10);\n$cl->getLabel(0)->__set(\"position\", MS_CR);\n$cl->getLabel(0)->__set(\"font\", \"liberation-bold\");\n$cl->getLabel(0)->__set(\"force\", MS_ON);\n$cl->getLabel(0)->__set(\"offsetx\", 6);\n$cl->getLabel(0)->__set(\"offsety\", 0);\n$cl->getLabel(0)->outlinecolor->setRGB(255, 255, 255);\n$cl->getLabel(0)->color->setRGB(0, 0, 0);\n\n$cl2 = new classObj($cp);\n$lbl = new labelObj();\n$cl2->addLabel($lbl);\n$cl2->getLabel(0)->__set(\"size\", \"10\");\n$cl2->getLabel(0)->__set(\"font\", \"esri34\");\n$cl2->getLabel(0)->__set(\"position\", MS_CC);\n$cl2->getLabel(0)->__set(\"force\", MS_ON);\n$cl2->getLabel(0)->__set(\"partials\", MS_ON);\n$cl2->getLabel(0)->outlinecolor->setRGB(0, 0, 0);\n$cl2->getLabel(0)->color->setRGB(255, 255, 255);\n\n$img = $map->prepareImage();\n$namer->draw($map, $img);\n$counties->draw($map, $img);\n$stlayer->draw($map, $img);\n$radar->draw($map, $img);\n$c0->draw($map, $img);\n\n/* Draw Points */\nforeach ($cdrct as $key => $drct) {\n    if ($cameras[$key][\"network\"] != $network) continue;\n    $lon = $cameras[$key]['lon'];\n    $lat = $cameras[$key]['lat'];\n\n    $pt = new pointObj();\n    $pt->setXY($lon, $lat, 0);\n    $pt->draw($map, $cp, $img, 0, intval(substr($key, 5, 3)));\n\n    if ($cdrct[$key] >= 0 && $network != 'IDOT') {\n        $pt = new pointObj();\n        $pt->setXY($lon, $lat, 0);\n        $cl2->getLabel(0)->__set(\"angle\", (0 - $cdrct[$key]) + 90);\n        $pt->draw($map, $cp, $img, 1, 'a');\n    }\n}\n$d = $ts->format(\"m/d/Y h:i A\");\n\n$layer = $map->getLayerByName(\"credits\");\n$point = new pointobj();\n$point->setXY(5, $y);\n$point->draw($map, $layer, $img, 0,  \"{$title}: $d\");\n\n$map->drawLabelCache($img);\n\nheader(\"Content-type: image/png\");\necho $img->getBytes();\n"
  },
  {
    "path": "htdocs/current/index.phtml",
    "content": "<?php\ndefine(\"IEM_APPID\", 105);\nrequire_once '../../config/settings.inc.php';\nrequire_once '../../include/myview.php';\n\n$daylink = sprintf(\"%s0000\", date(\"Ymd\"));\n$mhourlink = gmdate(\"YmdH\", time() - 3600) . \"00\";\n\n$cfg = array();\n\n$cfg[\"air_temperature\"] = array(\n    \"name\" => \"Air Temperature\",\n    \"prods\" => array(\n        \"2m_air_temperature\" => array(\n            \"label\" => \"2m Air Temperature\",\n            \"timemachine\" => \"?product=115\",\n            \"img\" => \"/data/iowa_tmpf.png\",\n            \"desc\" => \"Analysis of air temperature readings from airport \" .\n                \"weather stations.\"\n        ),\n        \"2m_wetbulb_temperature\" => array(\n            \"label\" => \"2m Wet Bulb Temperature\",\n            \"timemachine\" => \"?product=129\",\n            \"img\" => \"/data/iowa_wetbulb.png\",\n            \"desc\" => \"Analysis of wet bulb temperature readings from airport \" .\n                \"weather stations.\"\n        ),\n        \"12z_low\" => array(\n            \"label\" => \"12 UTC Low Temperature\",\n            \"timemachine\" => \"?product=63\",\n            \"img\" => \"/data/summary/iowa_asos_12z_low.png\",\n            \"desc\" => \"Based on manually computed minimums and 12 hour \" .\n                \"minimums, when available, the plot shows low temperatures at \" .\n                \"12 UTC.\"\n        ),\n        \"0z_high\" => array(\n            \"label\" => \"00 UTC High Temperature\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/iowa_asos_0z_high.png\",\n            \"desc\" => <<<EOM\nThis plot presents a computed high temperature between the 12z and 0z time\nperiod for the date.  Available 6-hour max values at 18 and 00 UTC are\nincluded within the calculation.\nEOM\n        ),\n        \"today_high\" => array(\n            \"label\" => \"Today's High Temperature\",\n            \"timemachine\" => \"?product=116\",\n            \"img\" => \"/data/summary/iowa_asos_high.png\",\n            \"desc\" => \"IEM computed calendar day high temperature.\"\n        ),\n        \"iowa_heat_index\" => array(\n            \"label\" => \"Heat Index\",\n            \"timemachine\" => \"?product=10\",\n            \"img\" => \"/data/heat.gif\",\n            \"desc\" => \"Current heat index values computed using present day \" .\n                \"NWS equation.\"\n        ),\n        \"iowa_wc_index\" => array(\n            \"label\" => \"Wind Chill Index\",\n            \"timemachine\" => \"?product=25\",\n            \"img\" => \"/data/wcht.gif\",\n            \"desc\" => \"Current wind chill index values computed using present \" .\n                \"day NWS equation.\"\n        ),\n        \"iowa_wc_min\" => array(\n            \"label\" => \"Today's Min Wind Chill Index\",\n            \"timemachine\" => \"?product=117\",\n            \"img\" => \"/data/summary/iowa_min_windchill.png\",\n            \"desc\" => \"This plot presents the minimum wind chill temperature\" .\n                \" for the local calendar day.\"\n        ),\n        \"iowa_tw\" => array(\n            \"label\" => \"Surface Temps &amp; Winds\",\n            \"timemachine\" => \"?product=23\",\n            \"img\" => \"/data/surfaceTW0.gif\",\n            \"desc\" => \"Legacy GEMPAK plot showing temp analysis and winds.\"\n        ),\n        \"iowa_te\" => array(\n            \"label\" => \"Surface Theta E &amp; Winds\",\n            \"timemachine\" => \"?product=22\",\n            \"img\" => \"/data/surfaceTE0.gif\",\n            \"desc\" => \"Legacy GEMPAK plot showing surface theta E and winds.\"\n        ),\n        \"iowa_divergence\" => array(\n            \"label\" => \"Surface Divergence\",\n            \"timemachine\" => \"?product=18\",\n            \"img\" => \"/data/surfaceDIV0.gif\",\n            \"desc\" => \"Legacy GEMPAK plot showing surface divergence.\"\n        ),\n        \"iowa_annual\" => array(\n            \"label\" => \"Annual Average Temperature\",\n            \"timemachine\" => null,\n            \"link\" => \"/plotting/coop/climate_fe.php\",\n            \"desc\" => \"\"\n        ),\n        \"coop_freezing\" => array(\n            \"label\" => \"COOP Freezing Statistics\",\n            \"timemachine\" => null,\n            \"link\" => \"/COOP/freezing.php\",\n            \"desc\" => \"\"\n        ),\n        \"gdd48_jan1\" => array(\n            \"label\" => \"Accumulated Growing Degree Days (base=48)\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/gdd48_jan1.png\",\n            \"desc\" => \"Growing degree days (base 48, ceiling 86) since 1 Jan.\"\n        ),\n        \"gdd50_jan1\" => array(\n            \"label\" => \"Accumulated Growing Degree Days (base=50)\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/gdd_jan1.png\",\n            \"desc\" => \"Growing degree days (base 50, ceiling 86) since 1 Jan.\"\n        ),\n        \"gdd52_jan1\" => array(\n            \"label\" => \"Accumulated Growing Degree Days (base=52)\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/gdd52_jan1.png\",\n            \"desc\" => \"Growing degree days (base 52, ceiling 86) since 1 Jan.\"\n        ),\n        \"gdd50_fx\" => array(\n            \"label\" => \"Forecast 7 Day Growing Degree Days Departure (base=50)\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/cb_ndfd_7day_gdd.png\",\n            \"desc\" => <<<EOM\nGrowing degree days (base 50, ceiling 86) seven day forecast departure\nbased on NWS NDFD and a climatology of daily GDDs.\nEOM\n        ),\n        \"daily_departures\" => array(\n            \"label\" => \"Yearly Departures from Average\",\n            \"timemachine\" => null,\n            \"link\" => \"/plotting/auto/?q=99\",\n            \"img\" => \"/plotting/auto/plot/99/img.png\",\n            \"desc\" => \"\"\n        ),\n        \"monthly_mean_t\" => array(\n            \"label\" => \"Monthly Average Temperature\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/mon_mean_T.png\",\n            \"desc\" => \"Monthly mean temperature (high+low)/2.\"\n        ),\n        \"monthly_sdd\" => array(\n            \"label\" => \"Accumulated Stress Degree Days (base=86)\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/sdd_mon.png\",\n            \"desc\" => \"Stress degree days for this month..\"\n        ),\n        \"monthly_gdd\" => array(\n            \"label\" => \"Accumulated Growing Degree Days (base=50)\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/gdd_mon.png\",\n            \"desc\" => \"Growing degree days (base 50, ceiling 86) for this month\"\n        ),\n    )\n);\n\n$cfg[\"humidity\"] = array(\n    \"name\" => \"Air Humidity\",\n    \"prods\" => array(\n        \"relative_humidity\" => array(\n            \"label\" => \"Relative Humidity\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/relh.gif\",\n            \"desc\" => \"Relative humidity is the percentage of capacity of the \" .\n                \"air to hold water vapor.\"\n        ),\n        \"iowa_md\" => array(\n            \"label\" => \"Surface Moisture Divergence &amp; Winds\",\n            \"timemachine\" => \"?product=21\",\n            \"img\" => \"/data/surfaceMD0.gif\",\n            \"desc\" => \"Legacy plot of surface moisture divergence.\"\n        ),\n        \"iowa_dw\" => array(\n            \"label\" => \"Surface Dew Points &amp; Winds\",\n            \"timemachine\" => \"?product=19\",\n            \"img\" => \"/data/surfaceDW0.gif\",\n            \"desc\" => \"Legacy plot of surface winds and dew point.\"\n        ),\n    )\n);\n\n$cfg[\"precipitation\"] = array(\n    \"name\" => \"Precipitation\",\n    \"prods\" => array(\n        \"today_mrms_iowa\" => array(\n            \"label\" => \"MRMS Today's Precip\",\n            \"timemachine\" => \"?product=45&timestamp={$daylink}\",\n            \"img\" => \"/data/iowa_q2_1d.png\",\n            \"desc\" => <<<EOM\nMulti-RADAR Multi-Sensor (MRMS) summary of hourly precipitation estimates for\na central time zone calendar date.\nEOM\n        ),\n        \"hour_mrms_iowa\" => array(\n            \"label\" => \"MRMS Hourly Precip\",\n            \"timemachine\" => \"?product=46&timestamp={$daylink}\",\n            \"img\" => \"/data/iowa_q2_1h.png\",\n            \"desc\" => <<<EOM\nMulti-RADAR Multi-Sensor (MRMS) hourly precipitation esimates.\nEOM\n        ),\n        \"3hour_mrms_iowa\" => array(\n            \"label\" => \"MRMS Three Hourly Precip\",\n            \"timemachine\" => \"?product=47&timestamp={$daylink}\",\n            \"img\" => \"/data/iowa_q2_3h.png\",\n            \"desc\" => <<<EOM\nMulti-RADAR Multi-Sensor (MRMS) 3 hour precipitation estimates computed by\ncombining hourly esimates.\nEOM\n        ),\n        \"6hour_mrms_iowa\" => array(\n            \"label\" => \"MRMS Six Hourly Precip\",\n            \"timemachine\" => \"?product=48&timestamp={$daylink}\",\n            \"img\" => \"/data/iowa_q2_6h.png\",\n            \"desc\" => <<<EOM\nMulti-RADAR Multi-Sensor (MRMS) 6 hour precipitation estimates computed by\ncombining hourly esimates.\nEOM\n        ),\n        \"today_asos_iowa\" => array(\n            \"label\" => \"Iowa ASOS Today's Precip\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/today_prec.png\",\n            \"desc\" => <<<EOM\nIEM computed calendar day precipitation total based on available hourly reports\nEOM\n        ),\n        \"7day_asos_iowa\" => array(\n            \"label\" => \"Iowa ASOS/AWOS 7 Day Precip\",\n            \"timemachine\" => \"?product=84\",\n            \"img\" => \"/data/summary/7day/ia_precip.png\",\n            \"desc\" => \"This plot presents a summary of calendar day precip\" .\n                \" obs over the past 7 days.\"\n        ),\n        \"31day_asos_iowa\" => array(\n            \"label\" => \"Iowa ASOS/AWOS 31 Day Precip\",\n            \"timemachine\" => \"?product=85\",\n            \"img\" => \"/data/summary/31day/ia_precip.png\",\n            \"desc\" => \"This plot presents a summary of calendar day precip\" .\n                \" obs over the past 31 days.\"\n        ),\n        \"91day_asos_iowa\" => array(\n            \"label\" => \"Iowa ASOS/AWOS 91 Day Precip\",\n            \"timemachine\" => \"?product=86\",\n            \"img\" => \"/data/summary/91day/ia_precip.png\",\n            \"desc\" => \"This plot presents a summary of calendar day precip\" .\n                \" obs over the past 91 days.\"\n        ),\n        \"today_stage4_us\" => array(\n            \"label\" => \"Stage IV Today's Precip\",\n            \"timemachine\" => \"?product=43&timestamp={$daylink}\",\n            \"img\" => \"/data/conus_stage4_1d.png\",\n            \"desc\" => <<<EOM\nIEM totaling of available NCEP Stage IV hourly precipitation estimates.\nEOM\n        ),\n        \"today_stage4_midwest\" => array(\n            \"label\" => \"Stage IV Today's Precip\",\n            \"timemachine\" => \"?product=42&timestamp={$daylink}\",\n            \"img\" => \"/data/midwest_stage4_1d.png\",\n            \"desc\" => <<<EOM\nIEM totaling of available NCEP Stage IV hourly precipitation for the central\ntime zone calendar day.\nEOM\n        ),\n        \"today_stage4_iowa\" => array(\n            \"label\" => \"Stage IV Today's Precip\",\n            \"timemachine\" => \"?product=41&timestamp={$daylink}\",\n            \"img\" => \"/data/iowa_stage4_1d.png\",\n            \"desc\" => <<<EOM\nIEM totaling of available NCEP Stage IV hourly precipitation for the central\ntime zone calendar day.\nEOM\n        ),\n        \"hour_stage4_midwest\" => array(\n            \"label\" => \"Stage IV Hourly Precip\",\n            \"timemachine\" => \"?product=40&timestamp={$mhourlink}\",\n            \"img\" => \"/data/midwest_stage4_1h.png\",\n            \"desc\" => <<<EOM\nIEM computed total of NCEP Stage IV precipitation over an hour.\nEOM\n        ),\n        \"today_stage4_iowa\" => array(\n            \"label\" => \"Stage IV Hourly Precip\",\n            \"timemachine\" => \"?product=39&timestamp={$mhourlink}\",\n            \"img\" => \"/data/iowa_stage4_1h.png\",\n            \"desc\" => <<<EOM\nIEM totaling of available NCEP Stage IV hourly precipitation for the central\ntime zone calendar day.\nEOM\n        ),\n        \"midwest_coop_contour\" => array(\n            \"label\" => \"COOP Precipitation Analysis\",\n            \"timemachine\" => \"?product=38\",\n            \"img\" => \"/data/midwest_coop_12z_precip.png\",\n            \"desc\" => \"Contour plot of available COOP reports.\"\n        ),\n        \"iowa_coop_contour\" => array(\n            \"label\" => \"COOP Precipitation Analysis\",\n            \"timemachine\" => \"?product=37\",\n            \"img\" => \"/data/iowa_coop_12z_precip.png\",\n            \"desc\" => \"Contour plot of available COOP reports.\"\n        ),\n        \"iowa_flood_center\" => array(\n            \"label\" => \"Iowa Flood Center\",\n            \"timemachine\" => \"?product=82\",\n            \"img\" => \"/data/iowa_ifc_1d.png\",\n            \"desc\" => <<<EOM\nIEM computed daily total of available Iowa Flood Center precipitation estimates.\nEOM\n        ),\n        \"year_departure\" => array(\n            \"label\" => \"Departure from Average\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/year/diff.png\",\n            \"desc\" => (\"This map presents the difference between the estimated precipitation \" .\n                \"total for this year vs the NCEI Climatology for 1991-2020.\"\n            )\n        ),\n        \"year_stage4\" => array(\n            \"label\" => \"Stage IV Yearly Total\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/year/stage4obs.png\",\n            \"desc\" => \"Yearlong total of NCEP Stage IV Precipitation.\"\n        ),\n        \"year_average\" => array(\n            \"label\" => \"Yearly Average Total\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/year/normals.png\",\n            \"desc\" => \"IEM computed precipitation average for the year.\"\n        ),\n        \"4mon_accum\" => array(\n            \"label\" => \"4 Month Estimated accumulation\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/4mon_stage4obs.png\",\n            \"desc\" => \"IEM computed 4 month precipitation from NCEP Stage IV.\"\n        ),\n        \"4mon_climate\" => array(\n            \"label\" => \"4 Month Climatology\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/4mon_normals.png\",\n            \"desc\" => \"IEM computed 4 month climatology based on long term climate sites.\"\n        ),\n        \"4mon_diff\" => array(\n            \"label\" => \"4 Month Departures\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/4mon_diff.png\",\n            \"desc\" => \"IEM computed departure from average based on long term climate sites.\"\n        ),\n        \"asos_month_accum\" => array(\n            \"label\" => \"Monthly Accumulation ASOS\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/month_prec.png\",\n            \"desc\" => \"IEM computed monthly precipitation total from ASOS.\"\n        ),\n        \"coop_month_accum\" => array(\n            \"label\" => \"Monthly Accumulation [COOP]\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/coopMonthPlot.png\",\n            \"desc\" => \"IEM computed monthly precipitation total from COOP.\"\n        ),\n    )\n);\n\n$cfg[\"pressure\"] = array(\n    \"name\" => \"Pressure\",\n    \"prods\" => array(\n        \"iowa_altimeter\" => array(\n            \"label\" => \"Iowa Altimeter\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/mesonet_altm.gif\",\n            \"desc\" => \"Pressure altimeter analysis.\"\n        ),\n    )\n);\n\n$cfg[\"snow\"] = array(\n    \"name\" => \"Snow\",\n    \"prods\" => array(\n        \"seasonal_snowfall\" => array(\n            \"label\" => \"Seasonal Snowfall\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/summary/mw_season_snowfall.png\",\n            \"desc\" => \"Seasonal snowfall total based on NWS CLI Sites.\"\n        ),\n        \"monthly_snowfall\" => array(\n            \"label\" => \"Monthly Snowfall\",\n            \"timemachine\" => null,\n            \"img\" => \"/data/coopMonthSPlot.gif\",\n            \"desc\" => \"Monthly snowfall total from NWS COOP sites.\"\n        ),\n    )\n);\n\n$cfg[\"soil_temperature\"] = array(\n    \"name\" => \"Soil Temperature\",\n    \"prods\" => array(\n        \"day1\" => array(\n            \"label\" => \"Yesterday Average\",\n            \"timemachine\" => \"?product=57\",\n            \"img\" => \"/data/soilt_day1.png\",\n            \"desc\" => \"IEM Soil Temperature analysis maps.\"\n        ),\n        \"day2\" => array(\n            \"label\" => \"Day 2 Average\",\n            \"timemachine\" => \"?product=57\",\n            \"img\" => \"/data/soilt_day2.png\",\n            \"desc\" => \"IEM Soil Temperature analysis maps.\"\n        ),\n        \"day3\" => array(\n            \"label\" => \"Day 3 Average\",\n            \"timemachine\" => \"?product=57\",\n            \"img\" => \"/data/soilt_day3.png\",\n            \"desc\" => \"IEM Soil Temperature analysis maps.\"\n        ),\n    )\n);\n\n$cfg[\"station_plot\"] = array(\n    \"name\" => \"Station Plot\",\n    \"prods\" => array(\n        \"iem\" => array(\n            \"label\" => \"IEM Mesoplot\",\n            \"timemachine\" => \"?product=1\",\n            \"img\" => \"/data/mesonet.gif\",\n            \"desc\" => \"Iowa Mesonet station plot combining ASOS + RWIS.\"\n        ),\n        \"mw\" => array(\n            \"label\" => \"Midwest Mesoplot\",\n            \"timemachine\" => \"?product=4\",\n            \"img\" => \"/data/MWmesonet.gif\",\n            \"desc\" => \"Midwest station plot of airport data.\"\n        ),\n    )\n);\n\n$cfg[\"sounding\"] = array(\n    \"name\" => \"Sounding\",\n    \"prods\" => array(\n        \"dvn\" => array(\n            \"label\" => \"Daveport RAOB\",\n            \"timemachine\" => null,\n            \"img\" => \"http://www.rap.ucar.edu/weather/upper/dvn.gif\",\n            \"desc\" => \"Recent sounding for Davenport.\"\n        ),\n        \"oax\" => array(\n            \"label\" => \"Omaha RAOB\",\n            \"timemachine\" => null,\n            \"img\" => \"http://www.rap.ucar.edu/weather/upper/oax.gif\",\n            \"desc\" => \"Recent sounding for Omaha.\"\n        ),\n        \"mpx\" => array(\n            \"label\" => \"Minneapolis RAOB\",\n            \"timemachine\" => null,\n            \"img\" => \"http://www.rap.ucar.edu/weather/upper/mpx.gif\",\n            \"desc\" => \"Recent sounding for Minneapolis.\"\n        ),\n        \"top\" => array(\n            \"label\" => \"Topeka RAOB\",\n            \"timemachine\" => null,\n            \"img\" => \"http://www.rap.ucar.edu/weather/upper/top.gif\",\n            \"desc\" => \"Recent sounding for Topeka.\"\n        ),\n    )\n);\n\n$cfg[\"wind_speed\"] = array(\n    \"name\" => \"Wind\",\n    \"prods\" => array(\n        \"10m_gust\" => array(\n            \"label\" => \"10m Today's Peak Wind Gust\",\n            \"timemachine\" => \"?product=16\",\n            \"img\" => \"/data/summary/today_gust.png\",\n            \"desc\" => \"Computed wind gust from ASOS stations.\"\n        ),\n        \"wind_power\" => array(\n            \"label\" => \"Wind Power Potential\",\n            \"timemachine\" => \"?product=60\",\n            \"img\" => \"/data/midwest/rtma_wind_power.png\",\n            \"desc\" => \"An estimate of wind power based on NCEP RTMA.\"\n        ),\n        \"iowa_frontogenesis\" => array(\n            \"label\" => \"Surface Frontogenesis &amp; Winds\",\n            \"timemachine\" => \"?product=18\",\n            \"img\" => \"/data/surfaceFRNT0.gif\",\n            \"desc\" => \"Legacy surface frontogenesis plot.\"\n        ),\n        \"windroses\" => array(\n            \"label\" => \"Wind Roses\",\n            \"timemachine\" => null,\n            \"link\" => \"/sites/windrose.phtml?station=DSM&network=IA_ASOS\",\n            \"img\" => \"/onsite/windrose/IA_ASOS/DSM/DSM_yearly.png\",\n            \"desc\" => \"These plots are a fancy way to show two dimensional \" .\n                \"histograms of wind speed and direction.  The directions \" .\n                \"shown are where the wind is blowing from and not toward. \" .\n                \"This website contains tools that can generate these plots \" .\n                \"on demand.\"\n        ),\n    )\n);\n\n$cfg[\"visibility\"] = array(\n    \"name\" => \"Visibility\",\n    \"prods\" => array(\n        \"iowa_vsby\" => array(\n            \"label\" => \"Iowa Visibility\",\n            \"timemachine\" => \"?product=24\",\n            \"img\" => \"/data/iowa_vsby.png\",\n            \"desc\" => \"Analysis of visibility from ASOS stations.\"\n        ),\n    )\n);\n\n$pathinfo = isset($_SERVER[\"PATH_INFO\"]) ? $_SERVER[\"PATH_INFO\"] : null;\n$maincontent = \"\";\n$showmenu = TRUE;\n$sectionlabel = \"\";\nif ($pathinfo) {\n    $arr = explode(\"/\", $pathinfo);\n    if (sizeof($arr) == 2) {\n        $showmenu = FALSE;\n        $sectionlabel = $arr[1];\n        $section = $cfg[$arr[1]];\n        $maincontent .= sprintf(\"<p><a href=\\\"/current/index.phtml\\\"\" .\n            \" class=\\\"btn btn-outline-secondary\\\">Back to Current Weather</a></p>\");\n        $maincontent .= \"<div class=\\\"row\\\">\\n\";\n        $i = 0;\n        foreach ($section[\"prods\"] as $path => $product) {\n            if ($i > 0 && $i % 3 == 0) {\n                $maincontent .= \"</div>\\n<div class=\\\"row\\\">\\n\";\n            }\n            if (array_key_exists(\"link\", $product)) {\n                $maincontent .= sprintf(\n                    \"<div class=\\\"col-md-4 bg-light border rounded p-3\\\">\" .\n                        \"<a href=\\\"%s\\\">\" .\n                        \"<h4><i class=\\\"bi bi-link-45deg\\\"></i> %s</h4>\" .\n                        \"<img src=\\\"%s\\\" class=\\\"img img-fluid\\\">\" .\n                        \"</a></div>\",\n                    $product[\"link\"],\n                    $product[\"label\"],\n                    (array_key_exists(\"img\", $product)) ? $product[\"img\"] : \"/images/iem_logo.svg\"\n                );\n            } else {\n                $maincontent .= sprintf(\n                    \"<div class=\\\"col-md-4 bg-light border rounded p-3\\\">\" .\n                        \"<a href=\\\"/current/index.phtml/%s/%s\\\">\" .\n                        \"<h4>%s</h4>\" .\n                        \"<img src=\\\"%s\\\" class=\\\"img img-fluid\\\">\" .\n                        \"</a></div>\",\n                    $arr[1],\n                    $path,\n                    $product[\"label\"],\n                    $product[\"img\"]\n                );\n            }\n            $i += 1;\n        }\n        $maincontent .= \"</div>\\n\";\n    } else if (sizeof($arr) == 3) {\n        $showmenu = FALSE;\n        $sectionlabel = $arr[1];\n        $section = $cfg[$arr[1]];\n        $maincontent .= sprintf(\n            \"<p><a href=\\\"/current/index.phtml/%s\\\"\" .\n                \" class=\\\"btn btn-outline-secondary\\\">Back to %s</a></p>\",\n            $arr[1],\n            $section[\"name\"]\n        );\n        $product = $section[\"prods\"][$arr[2]];\n        $tm = \"\";\n        if ($product[\"timemachine\"]) {\n            $tm = sprintf(\n                \"<p>An archive of this image is in the <a href=\\\"/timemachine/%s\\\" \" .\n                    \"class=\\\"btn btn-success\\\"><i class=\\\"bi bi-clock\\\"></i> IEM Time Machine</a></p>\",\n                $product[\"timemachine\"]\n            );\n        }\n        $maincontent .= sprintf(\n            \"<h4>%s</h4>\" .\n                \"%s\" .\n                \"<img src=\\\"%s\\\" class=\\\"img img-fluid\\\">\" .\n                \"<br /><p>%s</p>\",\n            $product[\"label\"],\n            $tm,\n            $product[\"img\"],\n            $product[\"desc\"]\n        );\n    }\n}\n// Build left hand menu\nreset($cfg);\n$menuhidden = ($showmenu) ? \"\" : \" d-none d-md-block\";\n$menu = \"\";\nforeach ($cfg as $path => $section) {\n    $menu .= sprintf(\n        \"<li><a href=\\\"/current/index.phtml/%s\\\"\" .\n            \" class=\\\"btn btn-outline-secondary w-100 mb-2%s\\\">%s</a></li>\",\n        $path,\n        ($path == $sectionlabel) ? \" btn-primary\" : \"\",\n        $section[\"name\"]\n    );\n}\n\n$t = new MyView();\n$t->title = \"Current Products\";\n$t->headextra = \"<meta http-equiv=\\\"refresh\\\" content=\\\"60\\\">\";\n\nif ($maincontent == \"\") {\n    $maincontent = <<<EOM\n<p>&nbsp;</p>\n<p>&nbsp;</p>\n<p>Please select from the available data types to view IEM products.</p>\nEOM;\n}\n\n$t->content = <<<EOM\n\n<div class=\"row\">\n <div class=\"col-md-3{$menuhidden}\">\n\n<div class=\"card\">\n  <div class=\"card-header\">Current Weather</div>\n  <div class=\"card-body\">\n    <ul class=\"list-unstyled\">\n     {$menu}\n    </ul>\n  </div>\n</div>\n\n</div><!-- ./col-md-3 -->\n\n <div class=\"col-md-9\">\n    {$maincontent}\n </div><!-- ./col-md-9 -->\n</div><!-- ./row -->\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/current/isucams.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 116);\nrequire_once \"../../include/myview.php\";\n\n$t = new MyView();\n$t->refresh = 60;\n$t->title = \"Iowa State Webcams\";\n\n$cb = rand(0, 100000);\n\n$t->content = <<<EOM\n<style>\n.nopadding {\n   padding: 0 !important;\n   margin: 0 !important;\n}\n</style>\n\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/projects/webcam.php\">IEM Webcam Project</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">ISU Webcams</li>\n  </ol>\n</nav>\n\n<p>This page provides the most recently cached webcam image by the IEM.</p>\n\n<div class=\"row\">\n  <div class=\"col-md-6\">\n<h4>AEA Farm</h4>\n<img src=\"/data/camera/stills/KCCI-027.jpg?{$cb}\" class=\"img-fluid\"></div>\n<div class=\"col-md-6\">\n<h4>Memorial Union</h4>\n<img src=\"/data/camera/stills/ISUC-003.jpg?{$cb}\" class=\"img-fluid\"></div>\n</div>\n\n<h4>Curtis Hall</h4>\n\n<div class=\"row\">\n  <div class=\"col-md-4 nopadding\"><img src=\"/data/camera/stills/ISUC-004.jpg?{$cb}\" class=\"img-fluid\"></div>\n  <div class=\"col-md-4 nopadding\"><img src=\"/data/camera/stills/ISUC-005.jpg?{$cb}\" class=\"img-fluid\"></div>\n  <div class=\"col-md-4 nopadding\"><img src=\"/data/camera/stills/ISUC-006.jpg?{$cb}\" class=\"img-fluid\"></div>\n</div>\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/current/live.py",
    "content": "\"\"\"implemented in pylib/iemweb/current/live.py\"\"\"\n\nfrom iemweb.current.live import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/current/loop.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\n$t = new MyView();\n/* Script to generate a loop of whatever */\n$prod = get_str404('prod', 'mesonet');\n$java = get_str404('java', 'none');\n$frames = get_int404('frames', 10);\n\n$products = array(\n    \"mesonet\" => array(\n        \"aformat\" => 'mesonet_%H00.gif',\n        \"tint\" => 3600, \"width\" => 900, \"height\" => 700, \"minute\" => 8,\n        \"name\" => \"Iowa Mesonet Plot\"\n    ),\n    \"mwmesonet\" => array(\n        \"aformat\" => 'MWmesonet_%H00.gif',\n        \"tint\" => 3600, \"width\" => 900, \"height\" => 700, \"minute\" => 8,\n        \"name\" => \"Midwest Mesonet Plot\"\n    ),\n);\n\n$baseurl2 = '/archive/data/';\n$files = \"\";\n$hrefs = \"\";\n$loopendts = time();\n$m = date(\"i\");\nif ($m < $products[$prod][\"minute\"])  $loopendts = time() - 3600;\n\n$q = $frames - 1;\nfor ($i = $q; $i >= 0; $i--) {\n    $ts = $loopendts - ($products[$prod][\"tint\"] * $i);\n    $gts = strtotime(gmdate(\"Y-m-d H:i\", $ts));\n    $aa = str_replace(\"%H\", date(\"H\", $gts), $products[$prod][\"aformat\"]);\n    $u = $baseurl2 . date(\"Y/m/d/\", $gts) . $aa;\n    $hrefs .= \"<br><img src=\\\"$u\\\">\";\n    $files .= $u . \",\";\n}\n\n$t->title = \"Product Looper\";\n$ar = array(\n    \"none\" => \"List Images\"\n);\n$loopselect = make_select(\"java\", $java, $ar);\n\n$prodselect = \"<select name=\\\"prod\\\">\";\nforeach ($products as $k => $v) {\n    $prodselect .= \"<option value=\\\"$k\\\" \";\n    if ($prod == $k) $prodselect .= \" SELECTED \";\n    $prodselect .= \">\" . $products[$k][\"name\"] . \"\\n\";\n}\n$prodselect .= \"</select>\";\n\n$control =  $hrefs;\n\n$t->content = <<<EOM\n<h3>IEM Product Looper</h3>\n\n<div class=\"bg-light border p-3\">\n\n<form method=\"GET\" action=\"loop.phtml\">\n<div class=\"row mb-3\">\n<div class=\"col-md-3\">\n <label class=\"form-label\">Loop Mode:</label>\n {$loopselect}\n</div>\n<div class=\"col-md-3\">\n <label class=\"form-label\">Select Product:</label>\n {$prodselect}\n</div>\n<div class=\"col-md-3\">\n <label class=\"form-label\">Frames:</label>\n <input type=\"text\" name=\"frames\" value=\"{$frames}\" size=\"3\" class=\"form-control\">\n</div>\n<div class=\"col-md-3\">\n <input type=\"submit\" value=\"Generate Loop\" class=\"btn btn-primary mt-4\">\n</div>\n</div>\n</form>\n\n{$control}\n\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/current/mcview.module.js",
    "content": "// mcview.module.js - NEXRAD Mosaic Loop Application\n// Provides functionality for switching between real-time and archive modes\n\n/**\n * Switch the mode selector to archive mode when date/time controls are changed\n * This provides intuitive UX by automatically switching modes when users interact with date controls\n */\nconst switchToArchiveMode = () => {\n    const modeSelect = document.querySelector('select[name=\"mode\"]');\n    if (modeSelect) {\n        modeSelect.value = 'archive';\n    }\n};\n\n/**\n * Initialize event handlers when DOM is loaded\n * Sets up change listeners for date/time controls to auto-switch to archive mode\n */\nconst init = () => {\n    // Find all date and time related form controls\n    const dateTimeControls = document.querySelectorAll(\n        'select[name=\"year\"], select[name=\"month\"], select[name=\"day\"], select[name=\"hour\"], select[name=\"minute\"]'\n    );\n    \n    // Add change listeners to automatically switch to archive mode\n    dateTimeControls.forEach(control => {\n        control.addEventListener('change', switchToArchiveMode);\n    });\n};\n\n// Initialize when DOM is ready\nif (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n} else {\n    // DOM already loaded\n    init();\n}\n\n// Export functions for potential external use or testing\nexport { switchToArchiveMode, init };\n"
  },
  {
    "path": "htdocs/current/mcview.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\n\n$t = new MyView();\n$uri = 'mcview.phtml';\n$postgis = iemdb(\"postgis\");\n\n$stname = iem_pg_prepare(\n    $postgis,\n    \"select * from watches \" .\n        \"WHERE issued <= $1 and expired >= $1 ORDER by sel ASC\"\n);\n\n/** Import our variables */\n$prod = isset($_GET[\"prod\"]) ? xssafe($_GET[\"prod\"]) : \"comprad\";\n$java = isset($_GET[\"java\"]) ? xssafe($_GET[\"java\"]) : \"script\";\n$mode = isset($_GET[\"mode\"]) ? xssafe($_GET[\"mode\"]) : \"realtime\";\n$frames = get_int404(\"frames\", 13);\n$interval = get_int404(\"interval\", 5);\n$autopilot = isset($_GET[\"autopilot\"]) ? xssafe($_GET[\"autopilot\"]) : \"no\";\n\n/* Lets see what the form is set to */\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$hour = get_int404(\"hour\", date(\"H\"));\n$minute = get_int404(\"minute\", date(\"i\"));\n\n// Used for the info presented below the plot on getting the raw data\n$gissource = ($year > 2014) ? 'n0q' : 'n0r';\n$gissourcenum = ($year > 2014) ? '2' : '1';\n\n/** Acceptable number of frames are between 1 and 10000 */\nif (intval($frames) > 10000 || intval($frames) < 1) $frames = 13;\n/** Acceptable interval is between 5 and 60 */\nif (intval($interval) > 60 || intval($interval) < 5) $interval = 5;\n\n$jan2007 = mktime(0, 0, 0, 1, 1, 2007);\n$astart = array(\n    \"comprad\" => mktime(0, 0, 0, 1, 1, 1995),\n    \"usrad\" => mktime(0, 0, 0, 1, 1, 1995),\n    \"ictrad\" => mktime(0, 0, 0, 1, 1, 1995),\n    \"hunrad\" => mktime(0, 0, 0, 1, 1, 1995),\n    \"sdrad\" => mktime(0, 0, 0, 1, 1, 1995),\n    \"sel0rad\" => $jan2007,\n    \"sel1rad\" => $jan2007,\n    \"sel2rad\" => $jan2007,\n    \"sel3rad\" => $jan2007,\n    \"sel4rad\" => $jan2007,\n    \"sel5rad\" => $jan2007,\n    \"sel6rad\" => $jan2007,\n    \"sel7rad\" => $jan2007,\n    \"sel8rad\" => $jan2007,\n    \"sel9rad\" => $jan2007,\n    \"lotrad\" => mktime(0, 0, 0, 1, 1, 1995)\n);\nif (!array_key_exists($prod, $astart)) {\n    // Naughty request\n    xssafe(\"<tag>\");\n}\n\n$now = time() - 60;\n$aend = time();\n\n/* Figure when the lapse starts! $ts */\nif ($mode == \"realtime\") {\n    $ts = $now - ($frames - 1) * (intval($interval) * 60);\n} else { /* Historical */\n    $ots = mktime($hour, $minute, 0, $month, $day, $year);\n    /* Make sure archive request is not sooner than archive start */\n    if ($ots < $astart[$prod])\n        $ts = $astart[$prod];\n    /* Make sure archive request is not in the future */\n    else if ($ots > $now)\n        $ts = $now - (($frames) * (intval($interval) * 60));\n    /* Set the timestamp */\n    else\n        $ts = $ots;\n}\n\n$rs = pg_execute($postgis, $stname, array(date(\"Y-m-d H:i\", $ts)));\n$watches = \"<div style=\\\"border: 1px solid #000; padding-left: 10px; background: #eee; width: 100%;\\\"><strong>Valid Watches:</strong> \";\nwhile ($row = pg_fetch_assoc($rs)) {\n    $issued = strtotime($row[\"issued\"]);\n    $watches .= sprintf(\n        \"<a href=\\\"mcview.phtml?prod=%srad&java=none&mode=%s&frames=1&interval=5&year=%s&month=%s&day=%s&hour=%s&minute=%s\\\">%s (%s %s)</a> &nbsp; \",\n        trim(strtolower(is_null($row[\"sel\"]) ? \"\": $row[\"sel\"])),\n        $mode,\n        $year,\n        $month,\n        $day,\n        $hour,\n        $minute,\n        $row[\"sel\"],\n        $row[\"type\"],\n        $row[\"num\"]\n    );\n}\nif (pg_num_rows($rs) == 0) {\n    $watches .= \" <i>None valid for the selected time</i> \";\n}\n$watches .= \"</div>\";\n\n\n// This is what we set the form time to\n$formts = $ts;\n\n$ar = localtime($ts);\n$m = $ar[1];\n\nif ($m >= 55) $ma = \"55\";\nelse if ($m >= 50) $ma = \"50\";\nelse if ($m >= 45) $ma = \"45\";\nelse if ($m >= 40) $ma = \"40\";\nelse if ($m >= 35) $ma = \"35\";\nelse if ($m >= 30) $ma = \"30\";\nelse if ($m >= 25) $ma = \"25\";\nelse if ($m >= 20) $ma = \"20\";\nelse if ($m >= 15) $ma = \"15\";\nelse if ($m >= 10) $ma = \"10\";\nelse if ($m >= 5) $ma = \"05\";\nelse if ($m >= 0) $ma = \"00\";\n\n$diff = $m - intval($ma);\n\n$hour  = date(\"H\", $formts);\n$day   = date(\"d\", $formts);\n$month = date(\"m\", $formts);\n$year  = date(\"Y\", $formts);\n$minute = $ma;\n\n/* Our actual loop start time! */\n$loopts = $ts - ($diff * 60);\n$lwidth = 650;\n$lheight = 550;\n\n$images = array();\n$radtimes = array();\nfor ($i = 0; $i < intval($frames); $i++) {\n    $fts = $loopts + ($i * (intval($interval) * 60));\n    if ($fts > time()) {\n        continue;\n    }\n    $myuri = \"/archive/data/\" . gmdate('Y/m/d/', $fts) . \"$prod/n0r_\" .\n        gmdate('Ymd_Hi', $fts) . \".png\";\n    $myhref = \"/archive/data/\" . gmdate('Y/m/d/', $fts) . \"GIS/uscomp/n0r_\" .\n        gmdate('YmdHi', $fts) . \".png\";\n    $gisbase = \"/archive/data/\" . gmdate('Y/m/d/', $fts) . \"GIS/uscomp/\";\n    $images[] = $myuri;\n    $radtimes[] = $fts;\n}\n\n$ar = array(\n    \"comprad\" => \"A1. Iowa (Default)\",\n    \"usrad\" => \"A1. United States\",\n    \"hunrad\" => \"A1. Huntsville, AL\",\n    \"lotrad\" => \"A1. North Illinois\",\n    \"sdrad\" => \"A1. South Dakota\",\n    \"ictrad\" => \"A1. Wichita, KS\",\n    \"sel0rad\" => \"A3. Watch (SEL0)\",\n    \"sel1rad\" => \"A3. Watch (SEL1)\",\n    \"sel2rad\" => \"A3. Watch (SEL2)\",\n    \"sel3rad\" => \"A3. Watch (SEL3)\",\n    \"sel4rad\" => \"A3. Watch (SEL4)\",\n    \"sel5rad\" => \"A3. Watch (SEL5)\",\n    \"sel6rad\" => \"A3. Watch (SEL6)\",\n    \"sel7rad\" => \"A3. Watch (SEL7)\",\n    \"sel8rad\" => \"A3. Watch (SEL8)\",\n    \"sel9rad\" => \"A3. Watch (SEL9)\",\n);\n$prodselect = make_select(\"prod\", $prod, $ar);\n\n$ar = array(\n    \"script\" => \"Java Script\",\n    \"none\" => \"List Images\",\n);\n$loopselect = make_select(\"java\", $java, $ar);\n\n$ar = array(\n    \"realtime\" => \"Real Time\",\n    \"archive\" => \"Archived\",\n);\n$modeselect = make_select(\"mode\", $mode, $ar);\n\n$ar = array(\n    \"5\" => \"5 Min (Default)\",\n    \"10\" => \"10 min\",\n    \"15\" => \"15 min\",\n    \"20\" => \"20 min\",\n    \"30\" => \"30 min\",\n    \"60\" => \"60 min\",\n);\n$intselect = make_select(\"interval\", $interval, $ar);\n\n$start = intval(1995);\n$now = new DateTime();\n$tyear = $now->format(\"Y\");\n$dateselect = \"<select name='year'>\\n\";\nfor ($i = $start; $i <= $tyear; $i++) {\n    $dateselect .= \"<option value='\" . $i . \"' \";\n    if ($i == intval($year)) $dateselect .= \"SELECTED\";\n    $dateselect .= \">\" . $i . \"\\n\";\n}\n$dateselect .= \"</select>\\n\";\n\n$dateselect .= \"<select name='month'>\\n\";\nfor ($i = 1; $i <= 12; $i++) {\n    $ts = new DateTime(\"2000-$i-01\");\n    $dateselect .= \"<option value='\" . $i . \"' \";\n    if ($i == intval($month)) $dateselect .= \"SELECTED\";\n    $dateselect .= \">\" . $ts->format(\"M\") . \"\\n\";\n}\n$dateselect .= \"</select>\\n\";\n\n$dateselect .= \"<select name='day'>\\n\";\nfor ($k = 1; $k < 32; $k++) {\n    $dateselect .= \"<option value=\\\"\" . $k . \"\\\" \";\n    if ($k == (int)$day) {\n        $dateselect .= \"SELECTED\";\n    }\n    $dateselect .= \">\" . $k . \"\\n\";\n}\n$dateselect .= \"</select>\\n\";\n\n\n$timeselect = \"<select name='hour'>\\n\";\nfor ($i = 0; $i < 24; $i++) {\n    $ts = new DateTime(\"2000-01-01 $i:00\");\n    $timeselect .= \"<option value='{$i}' \";\n    if ($i == intval($hour)) $timeselect .= \"SELECTED\";\n    $timeselect .= \">\" . $ts->format(\"h A\") . \"\\n\";\n}\n$timeselect .= \"</select>\\n\";\n\n$timeselect .= \"<select name='minute'>\\n\";\nfor ($i = 0; $i < 60; $i = $i + 5) {\n    $timeselect .= \"<option value='{$i}' \";\n    if ($i == intval($minute)) $timeselect .= \"SELECTED\";\n    $timeselect .= sprintf(\">%02d\\n\", $i);\n}\n$timeselect .= \"</select>\\n\";\n\n$autoselected = ($autopilot == \"yes\") ? \" checked=\\\"checked\\\"\" : \"\";\n$rtmessage = ($mode == \"realtime\") ? \" &nbsp; <b>REAL-TIME mode:</b> Will refresh in 5 minutes\" : \"\";\n\n$headextra = \"\";\n\nif ($java == 'script') {\n    $t->jsani = true;\n    $i = 0;\n    $jsurls = '<ul id=\"iemjsani_frames\" style=\"display: none;\">';\n    foreach ($images as $key => $val) {\n        $jsurls .= sprintf(\"<li>%s</li>\\n\", $val);\n    }\n    $jsurls .= \"</ul>\";\n    $control = <<<EOM\n{$jsurls}\n<p><div id=\"iemjsani\" style=\"width: 800px; height: 640px;\"></div></p>\nEOM;\n} else {\n    reset($images);\n    $control = \"\";\n    foreach ($images as $key => $val) {\n        $control .= \"<p><img src=\\\"{$val}\\\" class=\\\"img-fluid\\\">\\n\";\n    }\n}\n\n$radlinks = \"\";\nforeach ($radtimes as $value) {\n    $myhref = \"/archive/data/\" . gmdate('Y/m/d/', $value) . \"GIS/uscomp/{$gissource}_\" . gmdate('YmdHi', $value) . \".png\";\n    $myhref2 = \"{$EXTERNAL_BASEURL}{$myhref}\";\n    $radlinks .= \"<li><a href='$myhref'>$myhref2</a> \" .\n        \"(<a href='/request/gis/{$gissource}2gtiff.php?dstr=\" . gmdate('YmdHi', $value) . \"'>GeoTiff</a> or \" .\n        \"<a href=\\\"/cgi-bin/request/raster2netcdf.py?dstr=\" . gmdate('YmdHi', $value) . \"&prod=composite_{$gissource}\\\">netCDF</a>)</li>\\n\";\n}\n\n/* We finally start output */\n\nif ($autopilot == \"yes\") {\n    $headextra .= <<<EOM\n<style>\nbody{\n  background: #fff;\n}\n#iem-header{\n display: none;\n}\n.iembox{\n display: none;\n}\n</style>\nEOM;\n}\n$t->headextra = $headextra;\nif ($mode == \"realtime\") {\n    $t->refresh = 300;\n}\n$t->title = \"Current & Historical IEM NEXRAD Mosaic Loop\";\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb\">\n <li class=\"breadcrumb-item\"><a href=\"/current/\">Current Data</a></li>\n <li class=\"breadcrumb-item active\"><b>IEM NEXRAD Mosaic</b> <a href=\"{$uri}\">Reset Application for a Current Loop</a></li>\n </ol>\n</nav>\n\n<p><div class=\"alert alert-info\">\n<i class=\"bi bi-chat\"></i>\nIf you like this page,\nyou may also like the <a href=\"/one/\">IEM One</a> app.  Please try it out and\n<a href=\"/info/contacts.php\">provide feedback</a>!</div>\n\n<div class=\"row\">\n<div class=\"col-md-9\">\n\n{$watches}\n\n{$rtmessage}\n\n{$control}\n\n</div>\n<div class=\"col-md-3\">\n\n<form method=\"GET\" action=\"{$uri}\" name=\"controls\">\n\n<p><strong>Composite Product:</strong><br />\n{$prodselect}\n\n<br />(<i>Archive Begins @</i>)\n<br /><b>Al.</b> 1 Jan 1995\n<br /><b>A2.</b> 21 Sep 2005\n<br /><b>A3.</b> 1 Jan 2007\n\n<p><strong>Display Tool:</strong><br />\n{$loopselect}\n\n<p><strong>Mode:</strong></br />\n{$modeselect}\n\n<p><strong>Frames:</strong><br />\n<input type=\"text\" size=\"5\" name=\"frames\" value=\"{$frames}\" class=\"form-control\">\n\n<p><strong>Frame Interval:</strong><br />\n{$intselect}\n\n<p><strong>Date:</strong><br />\n{$dateselect}\n<p><strong>Time:</strong><br />\n{$timeselect}\n\n<p><div class=\"form-check\">\n<input type=\"checkbox\" value=\"yes\" name=\"autopilot\"{$autoselected} class=\"form-check-input\" id=\"autopilot\">\n<label class=\"form-check-label\" for=\"autopilot\">Hide menus + header</label>\n</div>\n\n<p><input type=\"submit\" value=\"Generate Loop\" class=\"btn btn-primary\">\n\n<p><strong>Related Links:</strong><br /> \n<a href=\"/GIS/apps/rview/warnings.phtml\">Interactive RADAR</a>\n<br /><a href=\"/cow/\">Warning Verification</a>\n</form>\n\n</div></div>\n\n<br />\n<p><b>GIS NEXRAD layers</b>\n<br />The NEXRAD layer used in these images are available in a georeferenced \nRASTER format. You will need this \n<a href=\"/data/gis/images/4326/USCOMP/{$gissource}_0.wld\">this world file</a> \nto correctly georeference them.  The projection of \nthese images is geographic NAD83 (<i>unprojected</i>).  You will need to \nrename the world file to match the filename of the RADAR layer before loading\ninto your GIS.  You may also be interested in the <a href=\"/GIS/rasters.php?rid={$gissourcenum}\">conversion</a> of\ncolor index values to dBZ and <a href=\"/docs/nexrad_mosaic/\">more details</a>\non these mosaics.</p>\n<br>\n<ul>\n{$radlinks}\n</ul>\nEOM;\n$t->jsextra = '<script type=\"module\" src=\"mcview.module.js\"></script>';\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/current/radar.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"RADAR + Satellite Data\";\n\n$tm1 = gmdate(\"Ymd\", time() - 86400);\n$t->content = <<<EOM\n<h3>RADAR + Satellite Data</h3>\n\n<div class=\"row\"><div class=\"col-md-6\">\n\n<h3>Mosiac Products:</h3>\n<p>The IEM generates <a href=\"/docs/nexrad_mosaic/\">mosaics</a>\n of NWS NEXRAD data.  These mosiacs are used to generate\nvarious products on the IEM website.\n<ul>\n <li><a href=\"/one/\">IEM One</a>: Modern interactive map interface.</li>\n <li><a href=\"mcview.phtml?prod=comprad&java=none&mode=realtime&frames=1\">MidWest Mosaic w/ warnings</a></li>\n <li><a href=\"mcview.phtml?prod=usrad&java=none&mode=realtime&frames=1\">CONUS Mosaic</a></li>\n <li><a href=\"sel.phtml\">Convective Watches Overview</a></li>\n <li><a href=\"/timemachine/?product=27&amp;timestamp={$tm1}0000\">Yesterday (GMT) CONUS</a> Max dBZ Mosiac</li>\n <li><a href=\"/timemachine/?product=26&amp;timestamp={$tm1}0000\">Yesterday (GMT) Iowa</a> Max dBZ Mosaic</li>\n</ul>\n\n<h3>Raw Level II Data:</h3>\n\n<p>The NWS operated WSR-88D RADARs produce data and products in different\nformats.  Once of these formats is called \"Level II\" and is high resolution\ninformation without much of the processing \"Level III\" products have.\n<p>\n<ul>\n <li><a href=\"https://mesonet-nexrad.agron.iastate.edu/level2/raw/\">directory</a> of raw data</li>\n <li><a href=\"https://www.weather.gov/nl2/NEXRADView\">NWS Feed Monitor</a></li>\n <li><a href=\"https://nomads.ncep.noaa.gov/pub/data/nccf/radar/nexrad_level2/\">NCEP NOMADS Realtime Level II</a></li>\n <li><a href=\"https://thredds.ucar.edu/thredds/catalog/nexrad/level2/catalog.html\">Unidata Thredd's service</a></li>\n <li><a href=\"https://s3.amazonaws.com/unidata-nexrad-level2/index.html\">AWS EC2 Complete Level II Archive</a></li>\n</ul>\n</div>\n<div class=\"col-md-6\">\n\n<h3>GIS Web-Mapping Apps:</h3>\n\nThese applications utilize the NEXRAD mosiacs generated by the IEM.\n<ul>\n<li><a href=\"/GIS/apps/rview/compare.phtml\">Iowa RADAR comparisons</a></li>\n<li><a href=\"/current/mcview.phtml\">Current/Archived Mosaic Loop</a></li>\n<li><a href=\"/GIS/apps/rview/warnings.phtml\">Nationwide Weather Warnings.</a> (NWS WFO Friendly)</li>\n<li><a href=\"/GIS/apps/rview/watch.phtml\">Storm Prediction Center (SPC) Watches since 1997.</a></li>\n<li><a href=\"/vtec/\">VTEC product browser</a></li>\n</ul>\n\n<h3>Satellite Products</h3>\n\n<a href=\"/archive/codsat/\">MTArchive + College of DuPage Satellite Archive Browser</a>\n\n</div></div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/current/sel.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 70);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\n\n$t = new MyView();\n$conn = iemdb(\"postgis\");\n$sel = get_int404(\"sel\", -1);\n$t->refresh = 300;\n$t->title = \"SPC Watches Overview\";\n\n$metadata = array();\n$rs = pg_query(\n    $conn,\n    <<<EOM\nwith data as (\n    select sel, rank() OVER (PARTITION by sel ORDER by issued DESC),\n    issued, expired, num\n    from watches where issued > now() - '120 days'::interval)\nselect * from data where rank = 1\nEOM\n    );\nwhile ($row = pg_fetch_assoc($rs)) {\n    $metadata[$row[\"sel\"]] = $row;\n    $metadata[$row[\"sel\"]][\"sts\"] = strtotime(substr($row[\"issued\"], 0, 16));\n    $metadata[$row[\"sel\"]][\"ets\"] = strtotime(substr($row[\"expired\"], 0, 16));\n}\n\nif ($sel > -1) {\n    $row = $metadata[\"SEL{$sel}\"];\n\n    $t->content = <<<EOM\n<a href=\"sel.phtml\">View All Watches</a>\n\n<p><img src=\"/data/sel{$sel}comp.png\" />\n\nEOM;\n} else {\n    $content = \"\";\n    for ($i = 0; $i < 10; $i++) {\n        $row = $metadata[\"SEL{$i}\"];\n        $content .= \"<div class=\\\"col-md-4 bg-light border rounded p-3 mb-3\\\">\n        <strong>SEL{$i}:</strong> Issued: \" . date(\"j M Y g:i A\", $row[\"sts\"])\n            . \"<br />Expired: \" . date(\"j M Y g:i A\", $row[\"ets\"]) . \",\n                        <a href=\\\"/GIS/apps/rview/watch.phtml?year=\" . date(\"Y\", $row[\"sts\"]) . \"&num=\" . $row[\"num\"] . \"\\\">more info</a>\n                        <br /><a href=\\\"sel.phtml?sel={$i}\\\">\n        <img src=\\\"/data/sel{$i}comp.png\\\" class=\\\"img-fluid\\\"></a>\n        </div>\";\n    }\n    $t->content = <<<EOM\n\n<p>Click on an image to get an enlarged view as well as the text for the watch. \nThese images are for the last 10 areas in which watches have been valid for.  \nIf the watch is currently valid, it will appear on the plot.  The timestamps\npresented are in US Central time.\n\n$content\n\nEOM;\n}\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/current/severe.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Severe Weather Products\";\n$t->content = <<<EOM\n<div class=\"row\">\n<div class=\"col-md-3\">\n <h3>Current Severe Weather</h3>\n  <ul>\n<li><a href=\"/wx/afos/\">NWS Text Product Finder</a>\n  <br />A quick and easy way to find NWS text products if you know the\n  product identifiers.</li>\n\n<li><a href=\"https://weather.im/iembot/\">Web iembot monitor</a>\n  <br />This fancy application allows you to monitor text products coming\n  from your local NWS office or the entire nation in realtime!</li>\n\n<li><a href=\"/data/gis/shape/4326/us/current_nexattr.zip\">Current NEXRAD Storm Attributes</a>\n  <br />Point shapefile generated every minute containing a summary of\n   NEXRAD storm attributes.</li>\n\n<li><a href=\"sel.phtml\">Convective Watches Overview</a>\n  <br />10 maps of the last locations of convective watches issued by SPC.</li>\n\n</ul>\n\n <h3>GIS Local Storm Reports</h3>\n<ul>\n\n<li>Past 24 hours of Storm Reports\n<br /><a href=\"/data/gis/shape/4326/us/lsr_24hour.zip\">ESRI Shapefile</a>,\n<a href=\"/data/gis/shape/4326/us/lsr_24hour.csv\">Comma Delimited</a>,\n<a href=\"/data/gis/shape/4326/us/lsr_24hour.geojson\">GeoJSON</a>\n<br />The IEM parses the realtime feed of NWS Local Storm Reports.  Every\n5 minutes, a process collects up the last 24 hours worth of reports and\ndumps them to the above files.</li>\n\n<li><a href=\"/request/gis/lsrs.phtml\">Download Archived LSRs</a>\n <br />Generate a shapefile of LSRs for a period of your choice dating back\n  to 2003!</li>\n\n</ul>\n\n <h3>GIS Watch/Warnings</h3>\n<ul>\n\n<li><a href=\"/data/gis/shape/4326/us/current_ww.zip\">Current Shapefile</a>\n <br />A shapefile of active county based and storm based based weather warnings. This file is updated every 5 minutes.</li>\n\n<li><a href=\"/request/gis/watchwarn.phtml\">Download Archived NWS Warnings</a>\n <br />Generate a GIS shapefile of weather warnings for a time period of your\n choice!</li>\n\n  </ul>\n</div>\n<div class=\"col-md-3\">\n <h3>Apps with Statistics</h3>\n <ul>\n <li><a href=\"/cow/sbwstats.phtml\">Summary of Polygon Sizes</a>\n  <br />View storm based warning size summary statistics by WFO for a period of your\n  choice.</li>\n<li><a href=\"/cow/top10.phtml\">Top 10 Polygon Sizes</a>\n  <br />List top 10 largest and smallest storm based warnings by WFO.</li>\n\n  <li><a href=\"/nws/mcd_top10.phtml\">Top 10 SPC Mesoscale Convective Discussion Sizes</a>\n  <br />List top 10 largest and smallest polygons associated with SPC MCDs.</li>\n\n  <li><a href=\"/plotting/auto/?q=92\">Days since VTEC WWA Product</a>\n  <br />Generates a map of the number of days since a VTEC WWA Product.</li>\n\n  <li><a href=\"/vtec/events.php\">VTEC Events by WFO or State by Year</a>\n  <br />Simple table listing any VTEC events by a given WFO or state for\n  a given year.</li>\n\n   <li><a href=\"/vtec/maxetn.php\">Maximum VTEC EventID (ETN) by year</a>\n  <br />This diagnostic prints out the maximum issued VTEC eventid (ETN) by\nyear.  A useful diagnostic for a NWS Office wishing to check their local VTEC\neventd database.</li>\n\n<li><a href=\"/vtec/emergencies.php\">Tornado + Flash Flood Emergencies listing</a>\n<br />Simple table showing IEM indicated Tornado and Flash Flood Emergency\nevents.</li>\n\n<li><a href=\"/vtec/yearly_counts.php\">Yearly counts of VTEC Products</a>\n  <br />Generates a table of the number of VTEC products issued by year.</li>\n  </ul>\n\n <h3>Apps with Archives</h3>\n<ul>\n<li><a href=\"/cow/\">IEM Cow</a>\n  <br />Unofficial NWS storm-based warning verification.</li>\n\n<li><a href=\"/raccoon/\">IEM Raccoon</a>\n  <br />Generate Microsoft Powerpoint overviews of storm based warnings.</li>\n\n<li><a href=\"/vtec/search.php\">Search by County/Zone or Point</a>\n  <br />Find archived warnings by searching for a county or zone.  You can\n  also search for storm based warnings by a point.</li>\n\n<li><a href=\"/GIS/apps/rview/watch.phtml\">Storm Prediction Center (SPC) Watches since 1997.</a>\n <br />Maps of SPC issued watches and initial RADAR (since 1997) at watch issuance.</li>\n\n<li><a href=\"/GIS/apps/rview/warnings.phtml\">Nationwide Weather Warnings.</a>\n <br />Popular web mapping application showing all sorts of information\n  relating to severe weather.  Works great for situational awareness\n  displays.</li>\n\n<li><a href=\"/vtec/\">VTEC product browser</a>\n <br />Popular application that allows you to navigate thru an archive of\n  weather warnings.  Full text is displayed along with the maps.</li>\n\n<li><a href=\"/one/\">IEM One</a>\n  <br />Modern interactive map interface.</li>\n  <li><a href=\"mcview.phtml?prod=comprad&java=none&mode=realtime&frames=1\">MidWest Composite w/ warnings</a></li>\n  <li><a href=\"mcview.phtml?prod=usrad&java=none&mode=realtime&frames=1\">US Composite w/ warnings</a></li>\n\n <li>Storm Based Warnings: <a href=\"/cow/sbwsum.phtml\">daily summary images</a>, images displaying sbw for a given date.</li>\n</ul>\n</div>\n<div class=\"col-md-6\">\n <h3>Severe Weather Outlooks</h3>\n\n<p>The IEM attempts to main a realtime ingest of the\n<a href=\"https://www.spc.noaa.gov\">Storm Prediction Center</a> convective outlooks. This comparison\nis a simple visual diagnostic between the two.</p>\n\n<h4>Current Day 1 Outlook</h4>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n <a href=\"https://www.spc.noaa.gov/products/outlook/day1otlk.html\">\n        <img src=\"https://www.spc.noaa.gov/products/outlook/day1otlk.png\" class=\"img-fluid\" alt=\"Day 1 Outlook\"></a>\n</div>\n<div class=\"col-md-6\">\n <a href=\"/plotting/auto/?q=220\">\n    <img src=\"/plotting/auto/plot/220/which:1C::cat:categorical::t:state::csector:conus.png\"\n    class=\"img-fluid\" alt=\"IEM Day 1 Outlook\"></a>\n</div>\n</div>\n\n<h4>Current Day 2 Outlook</h4>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n <a href=\"https://www.spc.noaa.gov/products/outlook/day2otlk.html\">\n        <img src=\"https://www.spc.noaa.gov/products/outlook/day2otlk.png\" class=\"img-fluid\" alt=\"Day 1 Outlook\"></a>\n</div>\n<div class=\"col-md-6\">\n <a href=\"/plotting/auto/?q=220\">\n    <img src=\"/plotting/auto/plot/220/which:2C::cat:categorical::t:state::csector:conus.png\"\n    class=\"img-fluid\" alt=\"IEM Day 2 Outlook\"></a>\n</div>\n</div>\n\n<h4>Current Day 3 Outlook</h4>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n <a href=\"https://www.spc.noaa.gov/products/outlook/day3otlk.html\">\n        <img src=\"https://www.spc.noaa.gov/products/outlook/day3otlk.png\" class=\"img-fluid\" alt=\"Day 1 Outlook\"></a>\n</div>\n<div class=\"col-md-6\">\n <a href=\"/plotting/auto/?q=220\">\n    <img src=\"/plotting/auto/plot/220/which:3C::cat:categorical::t:state::csector:conus.png\"\n    class=\"img-fluid\" alt=\"IEM Day 3 Outlook\"></a>\n</div>\n</div>\n\n<h4>Current Day 4-8 Outlook</h4>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n<a href=\"https://www.spc.noaa.gov/products/exper/day4-8/\">\n        <img src=\"https://www.spc.noaa.gov/products/exper/day4-8/day48prob.gif\" class=\"img-fluid\" alt=\"Day 4-8 Outlook\"></a>\n</div>\n<div class=\"col-md-6\">\n <a href=\"/plotting/auto/?q=220\">\n    <img src=\"/plotting/auto/plot/220/which:4C::cat:categorical::t:state::csector:conus.png\"\n    class=\"img-fluid\" alt=\"IEM Day 4 Outlook\"></a>\n</div>\n</div>\n\n<h3>WPC Excessive Rainfall Outlooks</h3>\n\n<p>The IEM attempts to main a realtime ingest of the\n<a href=\"https://www.wpc.noaa.gov\">Weather Prediction Center</a> rainfall outlooks. This comparison\nis a simple visual diagnostic between the two.</p>\n\n<h4>Current Day 1 Outlook</h4>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n <a href=\"https://www.wpc.ncep.noaa.gov/qpf/ero.php?opt=curr&day=1\">\n        <img src=\"https://www.wpc.ncep.noaa.gov/qpf/94ewbg.gif\" class=\"img-fluid\" alt=\"Day 1 Outlook\"></a>\n</div>\n<div class=\"col-md-6\">\n <a href=\"/plotting/auto/?q=220\">\n    <img src=\"/plotting/auto/plot/220/which:1E::cat:categorical::t:state::csector:conus.png\"\n    class=\"img-fluid\" alt=\"IEM Day 1 Outlook\"></a>\n</div>\n</div>\n\n<h4>Current Day 2 Outlook</h4>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n <a href=\"https://www.wpc.ncep.noaa.gov/qpf/ero.php?opt=curr&day=2\">\n        <img src=\"https://www.wpc.ncep.noaa.gov/qpf/98ewbg.gif\" class=\"img-fluid\" alt=\"Day 2 Outlook\"></a>\n</div>\n<div class=\"col-md-6\">\n <a href=\"/plotting/auto/?q=220\">\n    <img src=\"/plotting/auto/plot/220/which:2E::cat:categorical::t:state::csector:conus.png\"\n    class=\"img-fluid\" alt=\"IEM Day 2 Outlook\"></a>\n</div>\n</div>\n\n<h4>Current Day 3 Outlook</h4>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n <a href=\"https://www.wpc.ncep.noaa.gov/qpf/ero.php?opt=curr&day=3\">\n        <img src=\"https://www.wpc.ncep.noaa.gov/qpf/99ewbg.gif\" class=\"img-fluid\" alt=\"Day 3 Outlook\"></a>\n</div>\n<div class=\"col-md-6\">\n <a href=\"/plotting/auto/?q=220\">\n    <img src=\"/plotting/auto/plot/220/which:3E::cat:categorical::t:state::csector:conus.png\"\n    class=\"img-fluid\" alt=\"IEM Day 3 Outlook\"></a>\n</div>\n</div>\n\n<h4>Experimental Day 4 Outlook</h4>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n<a href=\"https://www.wpc.ncep.noaa.gov/qpf/ero.php?opt=curr&day=4\">\n<img src=\"https://www.wpc.ncep.noaa.gov/qpf/ero_d45/images/d4wbg.gif\" class=\"img-fluid\" alt=\"Day 4 Outlook\"></a>\n</div>\n<div class=\"col-md-6\">\n <a href=\"/plotting/auto/?q=220\">\n    <img src=\"/plotting/auto/plot/220/which:4E::cat:categorical::t:state::csector:conus.png\"\n    class=\"img-fluid\" alt=\"IEM Day 4 Outlook\"></a>\n</div>\n</div>\n\n<h4>Experimental Day 5 Outlook</h4>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n<a href=\"https://www.wpc.ncep.noaa.gov/qpf/ero.php?opt=curr&day=5\">\n<img src=\"https://www.wpc.ncep.noaa.gov/qpf/ero_d45/images/d5wbg.gif\" class=\"img-fluid\" alt=\"Day 5 Outlook\"></a>\n</div>\n<div class=\"col-md-6\">\n <a href=\"/plotting/auto/?q=220\">\n    <img src=\"/plotting/auto/plot/220/which:5E::cat:categorical::t:state::csector:conus.png\"\n    class=\"img-fluid\" alt=\"IEM Day 5 Outlook\"></a>\n</div>\n</div>\n\n        </div>\n</div><!-- ./row -->\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/current/uscrn.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/mlib.php\";\n\n$t = new MyView();\n$sortcol = isset($_GET[\"sortcol\"]) ? xssafe($_GET[\"sortcol\"]) : \"state\";\n$sorder = isset($_GET[\"sorder\"]) ? xssafe($_GET[\"sorder\"]) : \"asc\";\n\n$t->refresh = 60;\n$t->title = \"US Climate Reference Network Latest Reports\";\n\n$arr = array(\"network\" => \"USCRN\");\n$jobj = iemws_json(\"currents.json\", $arr);\n\n$vals = array(\n    \"tmpf\" => \"Air Temperature [F]\", \"dwpf\" => \"Dew Point Temp [F]\",\n    \"sknt\" => \"Wind Speed [knots]\", \"drct\" => \"Wind Direction [deg]\",\n    \"srad\" => \"Solar Radiation [W / m2]\", \"peak\" => \"Today's Wind Gust [knots]\",\n    \"peak_ts\" => \"Time of Peak Gust\", \"relh\" => \"Relative Humidity\",\n    \"feel\" => \"Feels Like [F]\", \"vsby\" => \"Visibility [miles]\",\n    \"ts\" => \"Observation Time\", \"phour\" => \"Last Hour Rainfall [inch]\",\n    \"min_tmpf\" => \"Today's Low Temperature\",\n    \"max_tmpf\" => \"Today's High Temperature\", \"name\" => \"Station Name\",\n    \"state\" => \"Station State\",\n    \"pday\" => \"Today Rainfall [inch]\"\n);\n\n$t->current_network = 'USCRN';\n\n$ar = array(\n    \"asc\" => \"Ascending\",\n    \"desc\" => \"Descending\"\n);\n$aselect = make_select(\"sorder\", $sorder, $ar);\n\n$uri = \"uscrn.phtml?sorder=$sorder&sortcol=\";\n\n$mydata = array();\nforeach ($jobj[\"data\"] as $bogus => $iemob) {\n    $key = $iemob[\"station\"];\n    $mydata[$key] = $iemob;\n    if ($mydata[$key][\"relh\"] < 5) {\n        $mydata[$key][\"relh\"] = \"M\";\n        $mydata[$key][\"dewpf\"] = \"M\";\n        if ($sortcol == \"feel\" || $sortcol == \"dwpf\" || $sortcol == \"relh\") {\n            $mydata[$key][\"feel\"] = null;\n        }\n    }\n    if ($mydata[$key][\"tmpf\"] < -60) {\n        $mydata[$key][\"tmpf\"] = \"M\";\n        if ($sortcol == \"tmpf\" || $sortcol == \"feel\" || $sortcol == \"dwpf\" || $sortcol == \"relh\") {\n            $mydata[$key][\"tmpf\"] = null;\n        }\n    }\n    if ($mydata[$key][\"alti\"] < -60) {\n        $mydata[$key][\"alti\"] = \"M\";\n        if ($sortcol == \"alti\") {\n            $mydata[$key][\"alti\"] = null;\n        }\n    }\n    if ($mydata[$key][\"vsby\"] < 0) {\n        $mydata[$key][\"vsby\"] = \"M\";\n        if ($sortcol == \"vsby\") {\n            $mydata[$key][\"vsby\"] = null;\n        }\n    }\n\n    if ($mydata[$key][\"max_gust\"] > $mydata[$key][\"max_sknt\"]) {\n        $mydata[$key][\"peak\"] = $mydata[$key][\"max_gust\"];\n        $mydata[$key][\"peak_ts\"] = strtotime($mydata[$key][\"local_max_gust_ts\"]);\n    } else {\n        $mydata[$key][\"peak\"] = $mydata[$key][\"max_sknt\"];\n        $mydata[$key][\"peak_ts\"] = null;\n        if ($mydata[$key][\"local_max_sknt_ts\"]) {\n            $mydata[$key][\"peak_ts\"] = strtotime($mydata[$key][\"local_max_sknt_ts\"]);\n        }\n    }\n}\n\n$finalA = array();\n$finalA = aSortBySecondIndex($mydata, $sortcol, $sorder);\n$now = time();\n$i = 0;\n$table = \"\";\nforeach ($finalA as $key => $val) {\n    $i++;\n    $parts = $finalA[$key];\n\n    $table .= \"<tr\";\n    if ($i % 2 == 0)  $table .= \" bgcolor='#eeeeee'\";\n    $table .= \"><td><input type=\\\"checkbox\\\" name=\\\"st[]\\\" value=\\\"\" . $key . \"\\\"></td>\";\n\n    $tdiff = $now - strtotime($parts[\"local_valid\"]);\n    $table .= sprintf(\n        \"<td>%s [%s] (<a href=\\\"/sites/site.php?station=%s&amp;\" .\n            \"network=%s\\\">%s</a>)</td>\",\n        $parts[\"name\"],\n        $parts[\"state\"],\n        $key,\n        \"USCRN\",\n        $key\n    );\n    $table .= \"<td \";\n    if ($tdiff > 10000) {\n        $fmt = \"d M h:i A\";\n    } else {\n        $fmt = \"h:i A\";\n    }\n\n    $table .= \">\" . date($fmt, strtotime($parts[\"local_valid\"])) . \"</td>\n     <td align='center'>\" . myround($parts[\"tmpf\"], 0) . \"(<font color=\\\"#ff0000\\\">\" . myround($parts[\"max_tmpf\"], 0) . \"</font>/<font color=\\\"#0000ff\\\">\" . myround($parts[\"min_tmpf\"], 0) . \"</font>)</td>\n     <td>\" . myround($parts[\"dwpf\"], 0) . \"</td>\n     <td>\" . myround($parts[\"feel\"], 0) . \"</td>\n        <td>\" . $parts[\"srad\"] . \"</td>\n             <td>\" . myround($parts[\"sknt\"], 0);\n    if (strlen($parts[\"gust\"] != 0)) {\n        $table .= \"G\" . myround($parts[\"gust\"], 0);\n    }\n    $table .= \"</td>\";\n    $table .= \"<td>\" . myround($parts[\"peak\"], 0) . \" @ \" . date(\"h:i A\", $parts[\"peak_ts\"]) . \"</td>\n        </tr>\\n\";\n}\n$t->content = <<<EOM\n\n<form method=\"GET\" action=\"uscrn.phtml\" name=\"work\">\n<input type=\"hidden\" value=\"{$sortcol}\" name=\"sortcol\">\n\nSort Order: {$aselect}\n\n<input type=\"submit\" value=\"Go!\">\n</form>\n\n<p>The displayed timestamps are valid for the local time zone of the weather\nstation.</p>\n\n<form method=\"GET\" action=\"/my/current.phtml\">\n\n<table class=\"table table-bordered table-striped\">\n<thead>\n<tr>\n  <th rowspan=\"2\">ADD:</th>\n  <th rowspan=\"2\">Station:</th>\n  <th rowspan=\"2\"><a href=\"{$uri}ts\">Ob Time</a></th>\n  <th colspan=\"3\">Temps &deg;F</th>\n  <th colspan=\"1\">&nbsp;</th>\n  <th colspan=\"2\">Wind [knots]</th>\n<tr>\n  <th>\n <a href=\"{$uri}tmpf\">Air</a>\n (<a href=\"{$uri}max_tmpf\">Hi</a> / <a href=\"{$uri}min_tmpf\">Lo</a>)\n</th>\n  <th><a href=\"{$uri}dwpf\">Dewp</a></th>\n  <th><a href=\"{$uri}feel\">Feels Like</a></th>\n  <th><a href=\"{$uri}srad\">Solar Rad</a></th>\n  <th><a href=\"{$uri}sknt\">Speed</a></th>\n  <th><a href=\"{$uri}peak\">Gust</a>\n    @ <a href=\"{$uri}peak_ts\">Time</a></th>\n</tr></thead>\n<tbody>\n{$table}\n</tbody>\n</table>\n\n<input type=\"submit\" value=\"Add to Favorites\">\n<input type=\"reset\" value=\"Reset\">\n\n</form></div>\nEOM;\n$t->render('sortables.phtml');\n"
  },
  {
    "path": "htdocs/current/viewer.css",
    "content": " h3 {\n   margin-top: 0px;\n}"
  },
  {
    "path": "htdocs/current/viewer.js",
    "content": "/* global ol, moment, bootstrap */\n\n/**\n * Format date for datetime-local input (YYYY-MM-DDTHH:MM)\n * @param {Date} date - Date to format\n * @returns {string} Formatted date string\n */\nfunction formatDateTimeLocal(date) {\n    const year = date.getFullYear();\n    const month = String(date.getMonth() + 1).padStart(2, '0');\n    const day = String(date.getDate()).padStart(2, '0');\n    const hours = String(date.getHours()).padStart(2, '0');\n    const minutes = String(date.getMinutes()).padStart(2, '0');\n    return `${year}-${month}-${day}T${hours}:${minutes}`;\n}\n\n/**\n * Parse datetime-local input value to Date object\n * @param {string} dateTimeStr - Datetime string from input\n * @returns {Date} Parsed date object\n */\nfunction parseDateTimeLocal(dateTimeStr) {\n    return new Date(dateTimeStr);\n}\n\n\nlet map = null;\nlet n0q = null;\nlet webcamGeoJsonLayer = null;\nlet idotdashcamGeoJsonLayer = null;\nlet idotRWISLayer = null;\nlet sbwlayer = null;\nlet ts = null;\nlet aqlive = 0;\nlet realtimeMode = true;\nlet currentCameraFeature = null;\nlet element = null;\nlet popup = null;\nlet bootstrapPopover = null;\nlet cameraID = \"ISUC-006\";\nconst ISOFMT = \"Y-MM-DD[T]HH:mm:ss[Z]\";\n\nconst sbwLookup = {\n    \"TO\": 'red',\n    \"MA\": 'purple',\n    \"EW\": 'green',\n    \"SV\": 'yellow',\n    \"SQ\": \"#C71585\",\n    \"DS\": \"#FFE4C4\"\n};\n\nconst sbwStyle = [new ol.style.Style({\n    stroke: new ol.style.Stroke({\n        color: '#FFF',\n        width: 4.5\n    })\n}), new ol.style.Style({\n    stroke: new ol.style.Stroke({\n        color: '#319FD3',\n        width: 3\n    })\n})\n];\n\nconst cameraStyle = new ol.style.Style({\n    image: new ol.style.Icon({\n        src: '/images/yellow_arrow.png'\n    })\n});\nconst trackaplowStyle = new ol.style.Style({\n    image: new ol.style.Icon({\n        src: '/images/trackaplow.png',\n        scale: 0.4\n    })\n});\nconst trackaplowStyle2 = new ol.style.Style({\n    image: new ol.style.Icon({\n        src: '/images/trackaplow_red.png',\n        scale: 0.6\n    })\n});\nconst rwisStyle = new ol.style.Style({\n    image: new ol.style.Icon({\n        src: '/images/rwiscam.svg',\n        scale: 0.6\n    })\n});\nconst cameraStyle2 = new ol.style.Style({\n    image: new ol.style.Icon({\n        src: '/images/red_arrow.png',\n        scale: 1.2\n    })\n});\n\n/**\n * Replace HTML special characters with their entity equivalents\n * @param string val \n * @returns string converted string\n */\nfunction escapeHTML(val) {\n    return val.replace(/&/g, '&amp;')\n              .replace(/</g, '&lt;')\n              .replace(/>/g, '&gt;')\n              .replace(/\"/g, '&quot;')\n              .replace(/'/g, '&#039;');\n}\n\nfunction liveShot() {\n    if (aqlive) {return;}\n    aqlive = true;\n    ts = new Date();\n    const webcamImg = document.getElementById(\"webcam_image\");\n    if (webcamImg) {\n        webcamImg.src = `/current/live/${currentCameraFeature.get(\"cid\")}.jpg?ts=${ts.getTime()}`;\n    }\n    aqlive = false;\n}\n\n// Updates the window location shown for deep linking\nfunction updateHashLink() {\n    if (!currentCameraFeature) {\n        return;\n    }\n    let extra = \"\";\n    if (!realtimeMode) {\n        const dtpicker = document.getElementById('dtpicker');\n        if (dtpicker?.value) {\n            const dt = moment(parseDateTimeLocal(dtpicker.value));\n            extra = `/${dt.utc().format(ISOFMT)}`;\n        }\n    }\n    window.location.href = `#${currentCameraFeature.get(\"cid\")}${extra}`;\n}\n\nfunction findFeatureByCid(cid) {\n    // Find the feature for the given camera id\n    let feature = null;\n    webcamGeoJsonLayer.getSource().forEachFeature((feat) => {\n        if (feat.get('cid') === cid) {\n            feature = feat;\n        }\n    });\n    if (feature) {\n        return feature;\n    }\n    idotdashcamGeoJsonLayer.getSource().forEachFeature((feat) => {\n        if (feat.get('cid') === cid) {\n            feature = feat;\n        }\n    });\n    if (feature) {\n        return feature;\n    }\n    idotRWISLayer.getSource().forEachFeature((feat) => {\n        if (feat.get('cid') === cid) {\n            feature = feat;\n        }\n    });\n    return feature;\n}\n\nfunction handleRWISClick(img) {\n    const rwisMain = document.getElementById(\"rwismain\");\n    if (rwisMain && img?.src) {\n        rwisMain.src = img.src;\n    }\n}\n\nwindow.hrs = handleRWISClick;\n\nfunction doRWISView() {\n    // Do the magic that is the multi-view RWIS data...\n    const singleImageView = document.getElementById(\"singleimageview\");\n    const rwisView = document.getElementById(\"rwisview\");\n    const rwisList = document.getElementById(\"rwislist\");\n    const rwisMain = document.getElementById(\"rwismain\");\n    if (singleImageView) {singleImageView.style.display = \"none\";}\n    if (rwisView) {rwisView.style.display = \"block\";}\n    if (rwisList) {rwisList.innerHTML = \"\";}\n    let i = 0;\n    let hit = false;\n    while (i < 10) {\n        const url = currentCameraFeature.get(`imgurl${i}`);\n        if (url !== null && url !== undefined) {\n            if (!hit) {\n                if (rwisMain) {rwisMain.src = url;}\n                hit = true;\n                i += 1;\n                continue;\n            }\n            if (rwisList) {\n                const div = document.createElement(\"div\");\n                div.className = \"col-md-2\";\n                const img = document.createElement(\"img\");\n                img.src = url;\n                img.className = \"img img-fluid\";\n                img.onclick = function() { handleRWISClick(this); };\n                div.appendChild(img);\n                rwisList.appendChild(div);\n            }\n        }\n        i += 1;\n    }\n}\n\n// main workflow for updating the webcam image shown to the user\nfunction updateCamera() {\n    if (!currentCameraFeature) {\n        currentCameraFeature = findFeatureByCid(cameraID);\n        if (!currentCameraFeature) {\n            return;\n        }\n    }\n    const cid = currentCameraFeature.get(\"cid\");\n    if (cid.startsWith(\"IDOT-\")) {\n        doRWISView();\n        updateHashLink();\n        return;\n    }\n    showSingleImageView();\n}\n\nfunction showSingleImageView() {\n    setSingleImageViewVisibility();\n    const url = getSingleImageUrl();\n    if (url !== undefined) {\n        setWebcamImageAndTitle(url);\n        updateHashLink();\n    }\n}\n\nfunction setSingleImageViewVisibility() {\n    const singleImageView = document.getElementById(\"singleimageview\");\n    const rwisView = document.getElementById(\"rwisview\");\n    const liveShotBtn = document.getElementById(\"liveshot\");\n    if (singleImageView) {singleImageView.style.display = \"block\";}\n    if (rwisView) {rwisView.style.display = \"none\";}\n    if (liveShotBtn) {liveShotBtn.style.display = \"block\";}\n    const url = getCameraImageUrl();\n    if (url === undefined && liveShotBtn) {liveShotBtn.style.display = \"none\";}\n}\n\nfunction getSingleImageUrl() {\n    let url = getCameraImageUrl();\n    if (url === undefined) {\n        url = getFallbackCameraImageUrl();\n    }\n    return url;\n}\n\nfunction setWebcamImageAndTitle(url) {\n    const valid = currentCameraFeature.get(\"valid\") ?? currentCameraFeature.get(\"utc_valid\");\n    const name = currentCameraFeature.get(\"name\") ?? \"Iowa DOT Dash Cam\";\n    const webcamImg = document.getElementById(\"webcam_image\");\n    const webcamTitle = document.getElementById(\"webcam_title\");\n    if (webcamImg) {webcamImg.src = url;}\n    if (webcamTitle) {webcamTitle.innerHTML =\n        `[${currentCameraFeature.get(\"cid\")}] ${name} @ ${moment(valid).format(\"D MMM YYYY h:mm A\")}`;}\n}\n\nfunction getCameraImageUrl() {\n    return currentCameraFeature.get(\"url\");\n}\n\nfunction getFallbackCameraImageUrl() {\n    return currentCameraFeature.get(\"imgurl\") ?? currentCameraFeature.get(\"imgurl0\");\n}\nfunction cronMinute() {\n    // We are called every minute\n    if (!realtimeMode) {return;}\n    refreshRADAR();\n    refreshJSON();\n}\n\nfunction getRADARSource() {\n    let dt = moment();\n    if (!realtimeMode) {\n        const dtpicker = document.getElementById('dtpicker');\n        if (dtpicker?.value) {\n            dt = moment(parseDateTimeLocal(dtpicker.value));\n        }\n    }\n    dt.subtract(dt.minutes() % 5, 'minutes');\n    const prod = dt.year() < 2011 ? 'N0R' : 'N0Q';\n    const radarTitle = document.getElementById(\"radar_title\");\n    if (radarTitle) {radarTitle.innerHTML = `US Base Reflectivity @ ${dt.format(\"h:mm A\")}`;}\n    return new ol.source.XYZ({\n        url: `https://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/ridge::USCOMP-${prod}-${dt.utc().format('YMMDDHHmm')}/{z}/{x}/{y}.png`\n    });\n}\n\nfunction refreshRADAR() {\n    if (n0q) {\n        n0q.setSource(getRADARSource());\n    }\n}\nfunction refreshJSON() {\n    setWebcamGeoJsonLayer();\n    setDashcamGeoJsonLayer();\n    setRWISGeoJsonLayer();\n    setSBWLayer();\n}\n\nfunction setWebcamGeoJsonLayer() {\n    let url = \"/geojson/webcam.geojson?network=TV\";\n    if (!realtimeMode) {\n        const dtpicker = document.getElementById('dtpicker');\n        if (dtpicker?.value) {\n            const dt = moment(parseDateTimeLocal(dtpicker.value));\n            url += `&valid=${dt.utc().format(ISOFMT)}`;\n        }\n    }\n    setLayerSource(webcamGeoJsonLayer, url);\n}\n\nfunction setDashcamGeoJsonLayer() {\n    let url = \"/api/1/idot_dashcam.geojson\";\n    if (!realtimeMode) {\n        const dtpicker = document.getElementById('dtpicker');\n        if (dtpicker?.value) {\n            const dt = moment(parseDateTimeLocal(dtpicker.value));\n            url += `?valid=${dt.utc().format(ISOFMT)}`;\n        }\n    }\n    setLayerSource(idotdashcamGeoJsonLayer, url);\n}\n\nfunction setRWISGeoJsonLayer() {\n    let url = \"/api/1/idot_rwiscam.geojson\";\n    if (!realtimeMode) {\n        const dtpicker = document.getElementById('dtpicker');\n        if (dtpicker?.value) {\n            const dt = moment(parseDateTimeLocal(dtpicker.value));\n            url += `?valid=${dt.utc().format(ISOFMT)}`;\n        }\n    }\n    setLayerSource(idotRWISLayer, url);\n}\n\nfunction setSBWLayer() {\n    let url = \"/geojson/sbw.geojson\";\n    if (!realtimeMode) {\n        const dtpicker = document.getElementById('dtpicker');\n        if (dtpicker?.value) {\n            const dt = moment(parseDateTimeLocal(dtpicker.value));\n            url += `?ts=${dt.utc().format(ISOFMT)}`;\n        }\n    }\n    sbwlayer.setSource(new ol.source.Vector({\n        url,\n        format: new ol.format.GeoJSON()\n    }));\n}\n\nfunction setLayerSource(layer, url) {\n    const newsource = new ol.source.Vector({\n        url,\n        format: new ol.format.GeoJSON()\n    });\n    newsource.on('change', () => {\n        updateCamera();\n    });\n    layer.setSource(newsource);\n}\n\nfunction parseURI() {\n    const tokens = window.location.href.split('#');\n    if (tokens.length === 2) {\n        const tokens2 = tokens[1].split(\"/\");\n        if (tokens2.length === 1) {\n            cameraID = escapeHTML(tokens[1]);\n        } else {\n            cameraID = escapeHTML(tokens2[0]);\n            const toggleBtns = document.querySelectorAll('#toggle_event_mode button');\n            if (toggleBtns[1]) {toggleBtns[1].click();}\n            const dtpicker = document.getElementById('dtpicker');\n            if (dtpicker) {\n                const momentDate = moment(escapeHTML(tokens2[1]));\n                dtpicker.value = formatDateTimeLocal(momentDate.toDate());\n            }\n        }\n    }\n}\n\nfunction buildUI() {\n\n    const liveShotBtn = document.getElementById(\"liveshot\");\n    if (liveShotBtn) {\n        liveShotBtn.addEventListener('click', () => {\n            liveShot();\n        });\n    }\n\n    // Time increment and decrement buttons\n    document.querySelectorAll(\"button.timecontrol\").forEach(button => {\n        button.addEventListener('click', (evt) => {\n            const offset = parseInt(evt.target.dataset.offset);\n            const dtpicker = document.getElementById('dtpicker');\n            if (dtpicker?.value) {\n                const currentDate = parseDateTimeLocal(dtpicker.value);\n                const newDate = new Date(currentDate.getTime() + (offset * 60000)); // offset in minutes\n                dtpicker.value = formatDateTimeLocal(newDate);\n                // Trigger change event manually\n                dtpicker.dispatchEvent(new Event('change'));\n            }\n            // unblur the button\n            evt.target.blur();\n        });\n    });\n\n    // Thanks to http://jsfiddle.net/hmgyu371/\n    document.querySelectorAll('#toggle_event_mode button').forEach((button, idx, btns) => {\n        button.addEventListener('click', function () {\n            if (this.classList.contains('locked_active') || this.classList.contains('unlocked_inactive')) {\n                // Enable Archive\n                realtimeMode = false;\n                document.getElementById('dtdiv').style.display = '';\n                refreshJSON();\n            } else {\n                // Enable Realtime\n                realtimeMode = true;\n                document.getElementById('dtdiv').style.display = 'none';\n                cronMinute();\n            }\n            // Toggle classes\n            const btn0 = btns[0];\n            const btn1 = btns[1];\n            btn0.classList.toggle('locked_inactive');\n            btn0.classList.toggle('locked_active');\n            btn0.classList.toggle('btn-secondary');\n            btn0.classList.toggle('btn-info');\n            btn1.classList.toggle('unlocked_inactive');\n            btn1.classList.toggle('unlocked_active');\n            btn1.classList.toggle('btn-info');\n            btn1.classList.toggle('btn-secondary');\n        });\n    });\n\n    // Initialize native datetime picker\n    const dtpicker = document.getElementById('dtpicker');\n    if (dtpicker) {\n        // Set default value to current date/time\n        dtpicker.value = formatDateTimeLocal(new Date());\n        \n        // Add change event listener\n        dtpicker.addEventListener('change', () => {\n            if (!realtimeMode) {\n                refreshJSON();\n                refreshRADAR();\n            }\n        });\n    }\n}\n\n/**\n * Popup the SBW information\n * @param feature {ol.Feature}\n */\nfunction popupSBW(feature) {\n    const content = `<strong>You clicked:</strong> ${feature.get('wfo')} `\n    + `<a target=\"_new\" href=\"${feature.get('href')}\">`\n    + `${feature.get('ps')} ${feature.get('eventid')}</a>`\n    + '<button type=\"button\" class=\"btn-close btn-close-white ms-2\" aria-label=\"Close\" onclick=\"closeSBWPopover()\"></button>';\n    const geometry = feature.getGeometry();\n    const coord = geometry.getFirstCoordinate();\n    popup.setPosition(coord);\n    \n    // Update popover content\n    const popoverContent = document.getElementById('popover-content');\n    popoverContent.innerHTML = content;\n    \n    // Show Bootstrap 5 popover\n    if (bootstrapPopover) {\n        bootstrapPopover.dispose();\n    }\n    bootstrapPopover = new bootstrap.Popover(element, {\n        content: popoverContent.innerHTML,\n        html: true,\n        placement: 'top'\n    });\n    bootstrapPopover.show();\n}\n\n/**\n * Close the SBW popover\n */\n// eslint-disable-next-line no-unused-vars\nfunction closeSBWPopover() {\n    if (bootstrapPopover) {\n        bootstrapPopover.hide();\n    }\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    buildUI();\n\n    sbwlayer = new ol.layer.Vector({\n        title: 'Storm Based Warnings',\n        source: new ol.source.Vector({\n            url: \"/geojson/sbw.geojson\",\n            format: new ol.format.GeoJSON()\n        }),\n        style: (feature) => {\n            let color = sbwLookup[feature.get('phenomena')];\n            if (color === undefined) {\n                color = '#000000';\n            }\n            sbwStyle[1].getStroke().setColor(color);\n            return sbwStyle;\n        }\n    });\n    idotdashcamGeoJsonLayer = new ol.layer.Vector({\n        title: 'Iowa DOT Truck Dashcams (2014-)',\n        style: (feature) => {\n            if (currentCameraFeature &&\n                currentCameraFeature.get(\"cid\") === feature.get(\"cid\")) {\n                currentCameraFeature = feature;\n                return [trackaplowStyle2];\n            }\n            return [trackaplowStyle];\n        }\n    });\n    idotRWISLayer = new ol.layer.Vector({\n        title: 'Iowa DOT RWIS Webcams (2010-)',\n        style(feature) {\n            if (currentCameraFeature &&\n                currentCameraFeature.get(\"cid\") === feature.get(\"cid\")) {\n                currentCameraFeature = feature;\n                return [rwisStyle];\n            }\n            return [rwisStyle];\n        }\n    });\n    webcamGeoJsonLayer = new ol.layer.Vector({\n        title: 'Webcams (2003-)',\n        style: (feature) => {\n            if (currentCameraFeature &&\n                currentCameraFeature.get(\"cid\") === feature.get(\"cid\")) {\n                currentCameraFeature = feature;\n                // OL rotation is in radians!\n                cameraStyle2.getImage().setRotation(\n                    parseInt(feature.get('angle')) / 180.0 * 3.14, 10);\n                return [cameraStyle2];\n            }\n            cameraStyle.getImage().setRotation(\n                parseInt(feature.get('angle')) / 180.0 * 3.14, 10);\n            return [cameraStyle];\n        }\n    });\n    n0q = new ol.layer.Tile({\n        title: 'NEXRAD Base Reflectivity',\n        source: getRADARSource()\n    });\n\n    map = new ol.Map({\n        target: 'map',\n        layers: [new ol.layer.Tile({\n            title: 'OpenStreetMap',\n            visible: true,\n            source: new ol.source.OSM()\n        }),\n            n0q,\n            sbwlayer,\n            idotdashcamGeoJsonLayer,\n            idotRWISLayer,\n            webcamGeoJsonLayer\n        ],\n        view: new ol.View({\n            projection: 'EPSG:3857',\n            center: ol.proj.transform([-93.5, 42.1], 'EPSG:4326', 'EPSG:3857'),\n            zoom: 6\n        })\n    });\n    map.addControl(new ol.control.LayerSwitcher());\n\n    element = document.getElementById('popup');\n\n    popup = new ol.Overlay({\n        element,\n        positioning: 'bottom-center',\n        stopEvent: false\n    });\n    map.addOverlay(popup);\n\n    // Initialize Bootstrap 5 popover (will be created dynamically when needed)\n    // Note: Popover will be created in popupSBW function\n\n    map.on('click', (evt) => {\n        const feature = map.forEachFeatureAtPixel(evt.pixel, (ft) => ft);\n        if (!feature) {\n            // Hide existing popover when clicking on empty map area\n            if (bootstrapPopover) {\n                bootstrapPopover.hide();\n            }\n            return;\n        }\n        if (feature.get(\"cid\") === undefined){\n            popupSBW(feature);\n            return;\n        }\n        \n        // Hide existing popover when clicking on camera features\n        if (bootstrapPopover) {\n            bootstrapPopover.hide();\n        }\n\n        // Remove styling\n        if (currentCameraFeature) {\n            currentCameraFeature.setStyle(feature.getStyle());\n        }\n        // Update\n        currentCameraFeature = feature;\n        // Set new styling\n        if (feature.get(\"angle\") !== undefined) {\n            cameraStyle2.getImage().setRotation(\n                parseInt(feature.get('angle')) / 180.0 * 3.14, 10);\n            feature.setStyle(cameraStyle2);\n        }\n        updateCamera();\n    });\n\n    parseURI();\n    refreshJSON();\n    updateCamera();\n\n    window.setInterval(cronMinute, 60000);\n});\n"
  },
  {
    "path": "htdocs/current/viewer.phtml",
    "content": "<?php\n$OL = \"10.6.1\";\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 95);\nrequire_once \"../../include/mlib.php\";\nforce_https();\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\n$t = new MyView();\nrequire_once \"../../include/cameras.inc.php\";\n$id = get_str404(\"id\", \"ISUC-006\");\n\n$t->title =  \"Current + Live Web Camera Shots\";\n$t->jsextra = <<<EOM\n <script src='/vendor/openlayers/{$OL}/ol.js'></script>\n <script src='/vendor/openlayers/{$OL}/ol-layerswitcher.js'></script>\n <script src=\"/vendor/moment/2.30.1/moment.min.js\"></script>\n <script src='viewer.js?d=1'></script>\nEOM;\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol.css\" type=\"text/css\">\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" type=\"text/css\">\n<link rel=\"stylesheet\" href=\"viewer.css\" type=\"text/css\">\nEOM;\n\n$t->content = <<<EOM\n<div class=\"alert alert-warning text-center mb-3\" role=\"alert\">\n  <strong>Notice:</strong> The newly created\n  <a href=\"/one/?dashcam=1&rwis=1\" class=\"alert-link\">IEM One app</a>\n  generally replicates this\n  app's functionality and more.  If there are no user complaints, this app\n  will be retired in the future.\n</div>\n<div class=\"row\">\n<div class=\"col-sm-4\">\n<h3><i class=\"bi bi-camera\"></i> IEM Webcam Viewer</h3>\n</div>\n<div class='col-sm-4'>\n    <strong>Mode:</strong>\n<div class=\"btn-group\" id=\"toggle_event_mode\">\n    <button type=\"button\" class=\"btn btn-info locked_active\">Realtime</button>\n    <button type=\"button\" class=\"btn btn-outline-secondary unlocked_inactive\">Archive</button>\n</div>\n        </div>\n        <div class='col-sm-4'>\n<div id=\"dtdiv\" style=\"display: none;\">\n<strong>Date &amp; Time:</strong>\n<br />\n<button data-offset=\"-60\" class=\"btn btn-outline-secondary timecontrol\" type=\"button\">-1h</button>\n<button data-offset=\"-5\" class=\"btn btn-outline-secondary timecontrol\" type=\"button\">-5min</button>\n<button data-offset=\"-1\" class=\"btn btn-outline-secondary timecontrol\" type=\"button\">-1min</button>\n<button data-offset=\"1\" class=\"btn btn-outline-secondary timecontrol\" type=\"button\">+1min</button>\n<button data-offset=\"5\" class=\"btn btn-outline-secondary timecontrol\" type=\"button\">+5min</button>\n<button data-offset=\"60\" class=\"btn btn-outline-secondary timecontrol\" type=\"button\">+1h</button>\n<br />\n<div class=\"mb-3\">\n    <input type=\"datetime-local\" id=\"dtpicker\" class=\"form-control\" />\n</div>\n</div>\n        </div>\n     </div>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n\n<div id=\"singleimageview\">\n<img id=\"webcam_image\" name=\"camera\" src=\"/data/camera/stills/{$id}.jpg\" class=\"img-fluid\">\n<br /><button role=\"button\" id=\"liveshot\">Request Live Shot</button>\n<h3 id=\"webcam_title\"></h3>\n</div>\n\n<div id=\"rwisview\" style=\"display: none;\">\n<img id=\"rwismain\" class=\"img-fluid\">\n<br />\n<strong>Click on thumbnail to view</strong><br />\n<div class=\"row\" id=\"rwislist\" style=\"height: 100px;\">\n</div>\n</div><!-- ./rwisview -->\n<br />\n</div><!-- ./col-md-6 -->\n<div class=\"col-md-6\">\n<div style=\"width: 100%; height: 400px;\" id=\"map\">\n<div id=\"popup\"></div>\n</div>\n<br />\n<h3 id=\"radar_title\">Application is Loading...</h3>\n\n<table>\n<tr><th>Key:</th>\n<th><img src=\"/images/rwiscam.svg\" style=\"height: 30px;\"> IDOT RWIS</th>\n<th><img src=\"/images/trackaplow.png\" style=\"height: 30px;\"> IDOT Track-A-Plow</th>\n<th><img src=\"/images/yellow_arrow.png\" style=\"height: 30px;\"> Media Webcams</th>\n</tr>\n</table>\n</div>\n</div><!-- ./row -->\n\n<br clear=\"all\" />\n\n<h3>Application Details</h3>\n\n<p>This webpage should dynamically update while in \"Realtime\" mode, so there\n    is no need to refresh the page.  If you click the \"Archive\" mode option,\n    a time selector will appear and all presented data should be approximately\n    valid at that time.</p>\n\n<p>Routinely, the IEM is archiving webcam imagery every 5 minutes.  During\n    interesting weather, this interval is decreased to every 1 minute.  So\n    if you pick a minute (ie 35) divisible by 5, you are most likely to\n    get an archived image.</p>\n\n<p>The media webcams have pan-tilt-zoom capabilities along with the option to request\na live image.  The arrows on the map indicate the direction the webcam is pointed in, but\ncan sometimes be wrong for various painful reasons.</p>\n\n<p>More information on the IEM's webcam work can be found\n    <a href=\"/projects/webcam.php\">here</a>.</p>\n\n<div id=\"popover-content\" style=\"display: none; width: 300px;\">\n  <!-- Hidden div with the popover content -->\n  <p>This is the popover content</p>\n</div>\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/current/webcam.css",
    "content": "/* Webcam ExtJS App Styling - Integrated with Bootstrap */\n\n.webimage {\n  height: 240px;\n  width : 320px;\n}\n\n.thumb-wrap{\n    float: left;\n    margin: 1px;\n    margin-right: 0;\n    padding: 5px;\n    width: 325px;\n}\n\n.x-view-over{\n    border:1px solid #dddddd;\n    padding: 4px;\n}\n\n/* Ensure ExtJS panel plays nice with Bootstrap */\n#main .x-panel {\n    border: 1px solid #dee2e6;\n    border-radius: 0.375rem;\n}\n\n/* Improve ExtJS toolbar styling within Bootstrap */\n.x-toolbar {\n    background: #f8f9fa !important;\n    border-color: #dee2e6 !important;\n}"
  },
  {
    "path": "htdocs/current/webcam.js",
    "content": "/* global Ext, app, cfg */\nExt.namespace('app');\nExt.namespace('cfg');\ncfg.refreshint = 60000;\ncfg.jsonSource = '/json/webcams.json';\nlet imagestore = null;\nlet disableStore = null;\nconst ISO8601 = 'Y-m-d\\\\TH:i:s\\\\Z';\n\n/**\n * Convert a date to UTC\n * @param {Date} dt \n * @returns \n */\nfunction toUTC(dt) {\n    return Ext.Date.add(dt, Ext.Date.MINUTE, dt.getTimezoneOffset());\n}\n\n/**\n * Convert a date from UTC\n * @param {Date} dt\n * @returns\n */\nfunction fromUTC(dt) {\n    return Ext.Date.add(dt, Ext.Date.MINUTE, -dt.getTimezoneOffset());\n}\n\nExt.onReady(() => {\n\n    // Handle cool archived images links - Rule: jQuery removal\n    document.addEventListener('click', (event) => {\n        if (event.target.classList.contains('ccool')) {\n            event.preventDefault();\n            const opt = event.target.getAttribute('data-opt');\n            if (opt) {\n                app.appSetTime(opt);\n            }\n        }\n    });\n\n    /* Hack needed for Ext 3.0-rc2 to keep timefield working */\n    Ext.override(Ext.form.ComboBox, {\n        beforeBlur: Ext.emptyFn\n    });\n\n    // Set up a model to use in our Store\n    Ext.define('Image', {\n        extend: 'Ext.data.Model',\n        fields: [\n            { name: 'cid', type: 'string' },\n            { name: 'show', type: 'boolean', defaultValue: true },\n            { name: 'name', type: 'string' },\n            { name: 'county', type: 'string' },\n            { name: 'network', type: 'string' },\n            { name: 'url', type: 'string' }\n        ]\n    });\n\n    disableStore = new Ext.data.Store({\n        idProperty: 'cid',\n        model: 'Image'\n    });\n\n    imagestore = new Ext.data.JsonStore({\n        isLoaded: false,\n        proxy: {\n            type: 'ajax',\n            url: cfg.jsonSource,\n            reader: {\n                type: 'json',\n                idProperty: 'cid',\n                rootProperty: 'images'\n            }\n        },\n        model: 'Image'\n    });\n    /*\n     * When the image store loads, we need to check our listing of disabled\n     * webcams so that we don't show it again\n     */\n    imagestore.on('load', (_store, records) => {\n        const data = Array();\n        Ext.each(records, (record) => {\n            const checked = (disableStore.find('cid', record.get(\"cid\")) === -1);\n            data.push({\n                boxLabel: `${record.get(\"cid\")} ${record.get(\"name\")}`,\n                name: record.get(\"cid\"),\n                checked,\n                listeners: {\n                    change(cb, isChecked) {\n                        const id = cb.getName();\n                        if (!imagestore.isLoaded) { return; }\n\n                        let rec = imagestore.getAt(imagestore.find(\"cid\", id));\n                        rec.set('show', isChecked, { silent: true });\n                        if (isChecked) {\n                            rec = disableStore.getAt(disableStore.find('cid', id));\n                            disableStore.remove(rec);\n                            imagestore.sort(Ext.getCmp(\"sortSelect\").getValue(), \"ASC\");\n                        } else {\n                            disableStore.add(rec);\n                            imagestore.sort(Ext.getCmp(\"sortSelect\").getValue(), \"ASC\");\n                        }\n                    }\n                }\n            });\n        });\n        if (Ext.getCmp(\"camselector\")) {\n            Ext.getCmp(\"camselector\").destroy();\n        }\n        if (records.length > 0) {\n            Ext.getCmp(\"cameralist\").add({\n                xtype: 'checkboxgroup',\n                columns: 1,\n                id: 'camselector',\n                hideLabel: true,\n                items: data\n            });\n            Ext.getCmp(\"cameralist\").doLayout();\n        } else {\n            Ext.Msg.alert('Status', 'Sorry, no images found for this time. '\n                + 'Try selecting a time divisible by 5.');\n        }\n        imagestore.isLoaded = true;\n    });\n\n\n    const tpl = new Ext.XTemplate(\n        '<tpl for=\".\">',\n        '<tpl if=\"this.shouldShow(cid)\">',\n        '<div class=\"thumb-wrap\" id=\"{cid}\">',\n        '<div class=\"thumb\"><img class=\"webimage\" src=\"{url}\" title=\"{name}\"></div>',\n        '<span>[{cid}] {name}, {state} ({county} County)</span></div>',\n        '</tpl>',\n        '</tpl>',\n        '<div class=\"x-clear\"></div>',\n        {\n            shouldShow(cid) {\n                return (disableStore.find('cid', cid) === -1);\n            }\n        }\n    );\n\n    Ext.create('Ext.Panel', {\n        renderTo: 'main',\n        height: 700,\n        layout: {\n            type: 'border',\n            align: 'stretch'\n        },\n        items: [{\n            xtype: 'form',\n            id: 'cameralist',\n            region: 'west',\n            collapsible: true,\n            autoScroll: true,\n            title: \"Select Webcams\",\n            tbar: [{\n                xtype: 'button',\n                text: 'All Off',\n                handler() {\n                    Ext.getCmp(\"camselector\").items.each((i) => {\n                        i.setValue(false);\n                    });\n                }\n            }, {\n                xtype: 'button',\n                text: 'All On',\n                handler()  {\n                    Ext.getCmp(\"camselector\").items.each((i) => {\n                        i.setValue(true);\n                    });\n                }\n            }]\n        }, {\n            region: 'center',\n            xtype: 'panel',\n            autoScroll: true,\n            items: [{\n                xtype: 'dataview',\n                store: imagestore,\n                itemSelector: 'div.thumb-wrap',\n                autoHeight: true,\n                overItemCls: 'x-view-over',\n                emptyText: \"No Images Loaded or Selected for Display\",\n                tpl\n            }],\n            tbar: [{\n                xtype: 'tbtext',\n                text: 'Sort By:'\n            }, {\n                xtype: 'combo',\n                id: 'sortSelect',\n                triggerAction: 'all',\n                width: 80,\n                editable: false,\n                mode: 'local',\n                displayField: 'desc',\n                valueField: 'name',\n                lazyInit: false,\n                value: 'name',\n                store: new Ext.data.ArrayStore({\n                    fields: ['name', 'desc'],\n                    data: [['name', 'Name'], ['county', 'County'], ['cid', 'Camera ID']]\n                }),\n                listeners: {\n                    'select': (sb) => {\n                        imagestore.sort(sb.getValue(), \"ASC\");\n                    }\n                }\n            }, {\n                xtype: 'combo',\n                id: 'networkSelect',\n                triggerAction: 'all',\n                width: 140,\n                editable: false,\n                mode: 'local',\n                displayField: 'desc',\n                valueField: 'name',\n                lazyInit: false,\n                value: 'name',\n                store: new Ext.data.ArrayStore({\n                    fields: ['name', 'desc'],\n                    data: [['IDOT', 'Iowa DOT RWIS'],\n                    ['KCCI', 'KCCI-TV Des Moines'],\n                    ['KCRG', 'KCRG-TV Cedar Rapids'],\n                    ['KELO', 'KELO-TV Sioux Falls'],\n                    ['MCFC', 'McLaughlin Family of Companies']]\n                }),\n                listeners: {\n                    'select': () => {\n                        imagestore.isLoaded = false;\n                        let ts = `${Ext.Date.format(Ext.getCmp(\"datepicker\").getValue(), 'm/d/Y')} ${Ext.getCmp(\"timepicker\").getRawValue()}`;\n                        const dt = new Date(ts);\n                        if (Ext.getCmp(\"timemode\").realtime) { ts = 0; }\n                        else { ts = Ext.Date.format(toUTC(dt), ISO8601); }\n                        imagestore.reload({\n                            add: false,\n                            params: {\n                                ts,\n                                'network': Ext.getCmp(\"networkSelect\").getValue()\n                            }\n                        });\n                        window.location.href = `#${Ext.getCmp(\"networkSelect\").getValue()}-${ts}`;\n                    }\n                }\n\n            }, {\n                xtype: 'tbseparator'\n            }, {\n                xtype: 'button',\n                id: 'timemode',\n                text: 'Real Time Mode',\n                realtime: true,\n                handler(btn) {\n                    if (btn.realtime) {\n                        Ext.getCmp(\"datepicker\").enable();\n                        Ext.getCmp(\"timepicker\").enable();\n                        btn.setText(\"Archived Mode\");\n                        btn.realtime = false;\n                    } else {\n                        Ext.getCmp(\"datepicker\").disable();\n                        Ext.getCmp(\"timepicker\").disable();\n                        btn.setText(\"Real Time Mode\");\n                        btn.realtime = true;\n                        imagestore.isLoaded = false;\n                        imagestore.reload({\n                            add: false, params: {\n                                'network': Ext.getCmp(\"networkSelect\").getValue()\n                            }\n                        });\n                        window.location.href = `#${Ext.getCmp(\"networkSelect\").getValue()}-0`;\n                    }\n                }\n            }, {\n                xtype: 'datefield',\n                id: 'datepicker',\n                maxValue: new Date(),\n                emptyText: 'Select Date',\n                minValue: '07/23/2003',\n                value: new Date(),\n                width: 100,\n                disabled: true,\n                listeners: {\n                    select() {\n                        imagestore.isLoaded = false;\n                        const ts = `${Ext.Date.format(Ext.getCmp(\"datepicker\").getValue(), 'm/d/Y')} ${Ext.getCmp(\"timepicker\").getRawValue()}`;\n                        const dt = new Date(ts);\n                        imagestore.reload({\n                            add: false,\n                            params: {\n                                'ts': Ext.Date.format(toUTC(dt), ISO8601),\n                                'network': Ext.getCmp(\"networkSelect\").getValue()\n                            }\n                        });\n                        window.location.href = `#${Ext.getCmp(\"networkSelect\").getValue()}-${Ext.Date.format(toUTC(dt), 'YmdHi')}`;\n                    }\n                }\n            }, {\n                xtype: 'timefield',\n                allowBlank: false,\n                increment: 1,\n                width: 100,\n                emptyText: 'Select Time',\n                id: 'timepicker',\n                value: new Date(),\n                disabled: true,\n                listeners: {\n                    select: () => {\n                        imagestore.isLoaded = false;\n                        const ts = `${Ext.Date.format(Ext.getCmp(\"datepicker\").getValue(), 'm/d/Y')} ${Ext.getCmp(\"timepicker\").getRawValue()}`;\n                        const dt = new Date(ts);\n                        imagestore.reload({\n                            add: false,\n                            params: {\n                                'ts': Ext.Date.format(toUTC(dt), ISO8601),\n                                'network': Ext.getCmp(\"networkSelect\").getValue()\n                            }\n                        });\n                        window.location.href = `#${Ext.getCmp(\"networkSelect\").getValue()}-${Ext.Date.format(toUTC(dt), 'YmdHi')}`;\n                    }\n                }\n            }\n            ]\n        }]\n    });\n\n\n    const task = {\n        run() {\n            // Modernization: optional chaining instead of duplicated && null-guard (Rule: optional-chaining)\n            const timemodeCmp = Ext.getCmp(\"timemode\");\n            if (imagestore.data.length > 0 && timemodeCmp?.realtime) {\n                imagestore.reload({\n                    add: false,\n                    params: {\n                        'network': Ext.getCmp(\"networkSelect\").getValue()\n                    }\n                });\n            }\n        },\n        interval: cfg.refreshint\n    };\n    Ext.TaskManager.start(task);\n\n    app.appSetTime = (s) => {\n        if (s.length === 17) {\n            const tokens2 = s.split(\"-\");\n            const network = tokens2[0];\n            Ext.getCmp(\"networkSelect\").setValue(network);\n            const tstamp = tokens2[1];\n            const dt = Ext.Date.parseDate(tstamp, 'YmdHi');\n            Ext.getCmp(\"datepicker\").setValue(fromUTC(dt));\n            Ext.getCmp(\"timepicker\").setValue(fromUTC(dt));\n            Ext.getCmp(\"datepicker\").enable();\n            Ext.getCmp(\"timepicker\").enable();\n            Ext.getCmp(\"timemode\").setText(\"Archived Mode\");\n            Ext.getCmp(\"timemode\").realtime = false;\n            imagestore.isLoaded = false;\n            imagestore.reload({\n                add: false,\n                params: {\n                    'ts': Ext.Date.format(dt, ISO8601),\n                    'network': Ext.getCmp(\"networkSelect\").getValue()\n                }\n            });\n            window.location.href = `#${Ext.getCmp(\"networkSelect\").getValue()}-${Ext.Date.format(dt, 'YmdHi')}`;\n        } else if (s.length === 6) {\n            const tokens3 = s.split(\"-\");\n            Ext.getCmp(\"networkSelect\").setValue(tokens3[0]);\n            imagestore.load({\n                add: false, params: { 'network': tokens3[0] }\n            });\n        } else {\n            imagestore.load();\n            Ext.getCmp(\"networkSelect\").setValue(\"KCCI\");\n        }\n    };\n\n    // Anchor bookmark support\n    const tokens = window.location.href.split('#');\n    if (tokens.length === 2) {\n        app.appSetTime(tokens[1]);\n    } else {\n        imagestore.load();\n        Ext.getCmp(\"networkSelect\").setValue(\"KCCI\");\n    }\n\n});\n"
  },
  {
    "path": "htdocs/current/webcam.php",
    "content": "<?php\n/* \n * This is an Extjs application that allows historical and current viewing of\n * webcam images.\n */\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 9);\nrequire_once \"../../include/myview.php\";\n\n$t = new MyView();\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" type=\"text/css\" href=\"https://extjs.cachefly.net/ext/gpl/5.0.0/build/packages/ext-theme-neptune/build/resources/ext-theme-neptune-all.css\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"webcam.css\"/>\nEOM;\n$t->jsextra = <<<EOM\n<script type=\"text/javascript\" src=\"https://extjs.cachefly.net/ext/gpl/5.0.0/build/ext-all.js\"></script>\n<script type='text/javascript' src='webcam.js'></script>\nEOM;\n$t->title = \"Webcams\";\n$t->content = <<<EOM\n<div class=\"row\">\n  <div class=\"col-md-12\">\n  <h3><i class=\"bi bi-camera\" aria-hidden=\"true\"></i> Web Camera Interactive Viewer</h3>\n    <p class=\"lead\">\n      View current and historical webcam imagery from across Iowa. \n      Switch to archived mode to browse historical images.\n    </p>\n  </div>\n</div>\n\n<div class=\"row\">\n  <div class=\"col-md-12\">\n    <div id=\"main\" style=\"height: 700px;\"></div>\n  </div>\n</div>\n\n<div class=\"row mt-3\">\n  <div class=\"col-md-12\">\n    <div class=\"card\">\n      <div class=\"card-header\">\n        <button class=\"btn btn-link p-0\" type=\"button\" data-bs-toggle=\"collapse\" \n                data-bs-target=\"#helpContent\" aria-expanded=\"false\" aria-controls=\"helpContent\">\n          <i class=\"bi bi-info-circle\" aria-hidden=\"true\"></i> Help & Cool Archived Images\n        </button>\n      </div>\n      <div class=\"collapse\" id=\"helpContent\">\n        <div class=\"card-body\">\n          <p>This application provides an interactive view of current and historical\n          web camera imagery. Click on the 'Real Time' button above to switch the\n          application into 'Archived Mode'. You can then select the time of interest\n          and the application will automatically update to show you the images. The IEM has archived images every 5 minutes, but may have an image every minute during active weather.</p>\n          \n          <h5>Cool Archived Images:</h5>\n          <ul>\n           <li><a class=\"ccool\" href=\"#\" data-opt=\"KCCI-200406120032\">11 Jun 2004 - 7:32 PM, Webster City Tornado</a></li>\n           <li><a class=\"ccool\" href=\"#\" data-opt=\"KCCI-200505270115\">26 May 2005 - 7:15 PM, Pella Double Rainbow</a></li>\n           <li><a class=\"ccool\" href=\"#\" data-opt=\"KCCI-200506090255\">8 Jun 2005 - 8:55 PM, All sorts of colours</a></li>\n           <li><a class=\"ccool\" href=\"#\" data-opt=\"KCCI-200509081730\">8 Sep 2005 - 12:30 PM, Blurry shot of Ames Tornado</a></li>\n           <li><a class=\"ccool\" href=\"#\" data-opt=\"KCCI-200511122238\">12 Nov 2005 - 4:38 PM, Woodward tornado from Madrid</a></li>\n           <li><a class=\"ccool\" href=\"#\" data-opt=\"KCCI-200511122300\">12 Nov 2005 - 5:00 PM, Ames tornado</a></li>\n           <li><a class=\"ccool\" href=\"#\" data-opt=\"KCCI-200607172150\">17 Jul 2006 - 4:50 PM, Tama possible brief tornado</a></li>\n           <li><a class=\"ccool\" href=\"#\" data-opt=\"KCCI-200710022256\">2 Oct 2007 - 5:56 PM, Twin Cedars possible tornado</a></li>\n           <li><a class=\"ccool\" href=\"#\" data-opt=\"KCCI-200808310120\">30 Aug 2008 - 8:20 PM, Interesting Sunset Halos</a></li>\n          </ul>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/disclaimer.php",
    "content": "<?php\nrequire_once \"../config/settings.inc.php\";\nrequire_once \"../include/myview.php\";\n$t = new MyView();\n$t->title = \"Disclaimer\";\n$t->content = <<< EOM\n<h3><i class=\"bi bi-exclamation-triangle\" aria-hidden=\"true\"></i> Disclaimer</h3>\n\n<p>While we use care to provide accurate weather/climatic information,\nerrors may occur because of equipment or other failure. We therefore provide this\ninformation without any warranty of accuracy. Users of this weather/climate data\ndo so at their own risk, and are advised to use independent judgement as to \nwhether to verify the data presented.</p>\n\n<h3>Usage of IEM Products</h3>\n\n<p>The materials found on this website are in the public domain and may be used\nfreely by anyone for any lawful purpose.  Attributing the Iowa Environmental\nMesonet of Iowa State University would be appreciated.</p>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/dm/index.phtml",
    "content": "<?php\nrequire_once '../../config/settings.inc.php';\ndefine(\"IEM_APPID\", 58);\nrequire_once '../../include/myview.php';\n\n$t = new MyView();\n$t->title = \"Drought Monitoring Products\";\n$startyear = intval(date(\"Y\"));\nif (intval(date(\"m\")) < 10) {\n    $startyear -= 1;\n}\n$departureplot = sprintf(\n    \"/plotting/auto/plot/97/sector:IA::var:precip_depart\" .\n        \"::date1:%s-10-01::usdm:no::date2:%s::dpi:100.png\",\n    $startyear,\n    date(\"Y-m-d\")\n);\n\n\n$t->content = <<<EOM\n<h3>Drought Monitoring Products</h3>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n\n<p><b>Current Drought Monitor:</b>\n\n<img src=\"https://droughtmonitor.unl.edu/data/png/current/current_ia_trd.png\" class=\"img-fluid\">\n\n<br />The <a href=\"https://droughtmonitor.unl.edu/\">US Drought Monitor</a> website is a wonderful\nresource for drought information.</p>\n\n\n<p><b>IEM Relevant Autoplots Apps</b>\n<br />The \"IEM Autoplot\" applications are dynamically generated plots that also\noffer the raw data behind the plot as well.\n<ul>\n <li><a href=\"/plotting/auto/?q=84\">Gridded Precip Estimates/Departures (#84)</a></li>\n <li><a href=\"/plotting/auto/?q=97\">Station Precip Estimates/Departures (#97)</a></li>\n <li><a href=\"/plotting/auto/?q=142\">Station Trailing Days Timeseries (#142)</a></li>\n <li><a href=\"/plotting/auto/?q=194\">US Drought Monitor Time Duration Maps (#194)</a></li>\n</ul>\n\n<p><b>Statements:</b>\n<ul>\n  <li><a href=\"http://www.cpc.ncep.noaa.gov/products/predictions/experimental/edb/droughtblend-access-page.html\">Drought Blends</a> [CPC]</li>\n</ul>\n\n<p><b>Soil Moisture Status:</b>\n<ul>\n <li><a href=\"http://www.cpc.ncep.noaa.gov/soilmst/img/curr.w.anom.daily.gif\">Calculated Soil Moisture Anomaloy</a> [CPC]</li>\n</ul>\n\n<p><b>Ground Water Status:</b>\n<ul>\n <li><a href=\"http://groundwaterwatch.usgs.gov/\">USGS Ground Water Watch</a></li>\n</ul>\n\n</div>\n<div class=\"col-md-6\">\n\n<p><strong>Water Year (October 1 - Today)</strong>\n\n<p>The \"Water Year\" is typically defined to start on October 1<sup>rst</sup> and represents the\ntime when new water received goes to help the next year's growing season.</p>\n\n<p><b>Precipitation Departures:</b>\n\n<img src=\"{$departureplot}\" class=\"img-fluid\"/>\n\n<br /><a href=\"/plotting/auto/?q=97\" class=\"btn btn-secondary\">Generate More Plots Like this</a></p>\n\n\n<p><b>Rainfall Status:</b>\n<ul>\n <li><a href=\"http://www.cpc.ncep.noaa.gov/soilmst/img/curr.p.full.daily.gif\">This month's rainfall</a> [CPC] </li>\n <li><a href=\"http://www.cpc.ncep.noaa.gov/soilmst/img/curr.p.anom.daily.gif\">This month's rainfall anomaly</a> [CPC] </li>\n <li><a href=\"https://legacy.climate.ncsu.edu/water/map/\">Interactive Maps of Departures</a>\n<br /><span class=\"badge bg-primary\">Recommended</span> Excellent website providing summaries of precip\nand US Drought Monitor status.</li>\n <li><a href=\"http://www.wrcc.dri.edu/spi/spi.html\">Standardized Precipitation Index</a> [WRCC]</li>\n</ul>\n\n<p><b>Misc:</b>\n<ul>\n <li><a href=\"https://www.esrl.noaa.gov/psd/eddi/\">Evaporative Demand Drought Index (EDDI)</a></li>\n <li><a href=\"http://drought.eng.uci.edu/\">Global Integrated Drought Monitoring and Prediction System</a></li>\n <li><a href=\"http://www.cdc.noaa.gov/~gtb/tele/pna.gif\">PNA trends</a> [CDC] </li>\n</ul>\n\n<p><b>Websites referenced:</b>\n<ul>\n <li><a href=\"http://www.cpc.ncep.noaa.gov/\">Climate Prediction Center, NOAA</a></li>\n <li><a href=\"http://ndmc.unl.edu/\">National Drought Mitigation Center, UNL</a></li>\n <li><a href=\"http://www.wrcc.dri.edu/\">Western Regional Climate Center</a></li>\n</ul>\n\n</div>\n</div>\n\n<p>Please <a href=\"/info/contacts.php\">contact us</a> if you have links you would like added on this page.\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/docs/forecast/highs.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ninclude_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->title = \"High Temperature Forecasting\";\n\n$t->content = <<<EOM\n<h3>High Temperature Forecasting Methods</h3>\n\n<p><img src=\"figs/year.png\">\n<p><img src=\"figs/jan.png\">\n<img src=\"figs/feb.png\">\n<img src=\"figs/mar.png\">\n<img src=\"figs/apr.png\">\n<img src=\"figs/may.png\">\n<img src=\"figs/jun.png\">\n<img src=\"figs/jul.png\">\n<img src=\"figs/aug.png\">\n<img src=\"figs/sep.png\">\n<img src=\"figs/oct.png\">\n<img src=\"figs/nov.png\">\n<img src=\"figs/dec.png\">\n\n<p>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/docs/nexrad_mosaic/index.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->iem_resource = \"MOSAIC\";\n$t->title = \"About NEXRAD Mosaics\";\n$d = date(\"Y/m/d\");\n$t->content = <<<EOM\n\n<h3>Documentation on IEM generated NEXRAD Mosaics</h3>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n\n<img src=\"example_raster.png\" class=\"img-fluid\" />\n<br />Example composite from 1 March 2007.\n\n<h4>Quick Information:</h4>\n<table class=\"table table-striped\">\n<thead><tr><td></td><th>N0R</th><th>N0Q</th></tr></thead>\n<tbody>\n<tr>\n <th>Product:</th>\n <td>4 bit Base Reflectivity 5dbz</td>\n <td>8 bit Base Reflectivity 0.5dbz</td>\n </tr>\n \n<tr>\n <th>Format:</th>\n <td colspan=\"2\">PNG image (GeoTiff available)</td></tr>\n\n<tr>\n <th>Size:</th>\n <td>6000x2600 pixels</td>\n <td>12000x5200 pixels<br />12200x5400 after 8 Aug 2014</td>\n </tr>\n \n<tr>\n <th>Time:</th>\n <td>Every 5 minutes since 1 Jan 1995</td>\n <td>Every 5 minutes since 13 Nov 2010 16:25 UTC</td>\n </tr>\n\n<tr><th>Download:</th>\n<td colspan=\"2\"><a href=\"/data/gis/images/4326/USCOMP/\">Current</a> \nand <a href=\"/archive/data/{$d}/GIS/uscomp/\">Archive for today</a></td></tr>\n</tbody>\n</table>\n\n</div>\n<div class=\"col-md-6\">\n\n<table class=\"table table-bordered\">\n<thead>\n<tr>\n <th colspan=\"4\">Precipitation</th>\n <th colspan=\"2\">N0R (4bit) Reflectivity</th>\n <th colspan=\"2\">N0Q (8bit) Reflectivity</th>\n</tr>\n</thead>\n<tr>\n <td>Ramp</td>\n <td colspan=\"3\">Index values [inch]</td>\n <td>Ramp</td><td>Index values [dBZ]</td>\n <td>Ramp</td><td>Index values [dBZ]</td>\n </tr>\n<tr>\n<td><img src=\"precip_ramp.png\" width=\"10\" style=\"float: left;\" /></td>\n<td valign=\"top\">\n0\n<br />0.25\n<br />0.5\n<br />0.75\n<br />1.0\n<br />1.25\n<br />1.5\n<br />1.75\n<br />2.0\n<br />2.25\n<br />2.5\n<br />2.75\n<br />3.0\n<br />3.25\n<br />3.5\n<br />3.75\n<br />4\n</td>\n<td valign=\"top\">\n4.8\n<br />5.6\n<br />6.4\n<br />7.2\n<br />8.0\n<br />8.8\n<br />9.6\n<br />10.4\n<br />11.2\n</td><td valign=\"top\">\n12\n<br />13\n<br />14\n<br />15\n<br />16\n<br />17\n<br />18\n<br />19\n<br />20\n<br />21\n<br />22\n<br />23\n<br />24+\n</td>\n<td><img src=\"reflect_ramp.png\" width=\"20\" style=\"float: left;\" /></td>\n<td>\nNODATA\n<br />-30\n<br />-25\n<br />-20\n<br />-15\n<br />-10\n<br />-5\n<br />0\n<br />5\n<br />10\n<br />15\n<br />20\n<br />25\n<br />30\n<br />35\n<br />40\n<br />45\n<br />50\n<br />55\n<br />60\n<br />65\n<br />70\n<br />75\n</td>\n<td><img src=\"n0q_ramp.png\" width=\"20\" style=\"float: left;\" /></td>\n<td>\nNODATA\n<br />-32 dBZ\n<br />through\n<br />90 dBZ\n<br />0.5 dBZ increment\n</td>\n</tr></table>\n\n</div></div>\n\n<p><strong>IEM Applications using this product</strong>\n<ul>\n <li><a href=\"/current/mcview.phtml\">Static Maps</a></li>\n <li><a href=\"/GIS/apps/rview/warnings.phtml\">Interactive RADAR</a></li>\n <li><a href=\"/vtec/\">VTEC Product Browser</a></li>\n <li><a href=\"/data/summary/max_n0r_0z0z_usrad.png\">Max Reflectivity Mosaic 0z-0z</a></li>\n <li><a href=\"/data/summary/max_n0r_6z6z_usrad.png\">Max Reflectivity Mosaic 6z-6z</a></li>\n <li><a href=\"/GIS/rad-by-year-fe.phtml\">NEXRAD Mosiacs by Year</a></li>\n</ul>\n\n<p>Since 2003, the IEM has been generating and archiving nationwide mosaics \nof NEXRAD base reflectivity every 5 minutes.  These mosaics are generated \nby combining the 130+ individual RADARs that comprise the NEXRAD network. This\npage provides background information on this dataset and highlights various\nways this dataset can be and is used.  <b>Please note:</b>  Errors can and do\noccur during the automated generation of these images, please use them with \ncare.\n\n<h3>Important changes to this product.</h3>\n<ul>\n <li><b>1 August 2003:</b> 5 minute interval archive begins.  The initial\n  pixel resolution is roughly ~2 km.</li>\n <li><b>14 November 2005:</b> The pixel resolution is increased to ~1 km\n  thanks to the support of a <a href=\"/docs/unidata2006/\">Unidata Equipment grant</a>.</li>\n <li><b>10 May 2007:</b> Implemented a clutter suppression algorithm to \n  remove most anomalous propogation during the summertime.</li>\n <li><b>11 Nov 2008:</b> Implemented a crude check against RUC model\nsurface temperature analysis for near freezing areas to stop the clutter\nsuppression algorithm from removing areas of winter precipitation.</li>\n <li><b>14 May 2009:</b> Completed a 7 month process of backfilling the\nmosaics back to 1 Jan 1995. Also regenerated mosaics prior to 2006 to\nproduce them on a ~1 km grid as well.  Big thanks to Steve Ansari at NCEI \nfor providing the level3 archive.</li>\n <li><b>25 Aug 2010:</b> Reprocessed 2005 + 2006 data to improve product\nquality and to backfill the archive with clutter suppression enabled during\nthe summer months (Apr-Sep).</li>\n    <li><strong>16 July 2014:</strong> Modified the clutter removal routine\n    to use the higher resolution EET level III product.  Previously NET was\n    used.</li>\n    <li><strong>8 Aug 2014:</strong> The spatial domain of the N0Q composite\n    was expanded 1 degree east and south.  The reason is that the clipping was\n    occurring on the eastern and southern borders of the domain.</li>\n<li><strong>7 Sep 2016 1940 UTC</strong>: The original intent of the N0Q\nmosaics was to provide imagery at a resolution of 0.5 dBZ.  After some\ninvestigation, it was discovered that the N0Q mosaics only contained data\nat values of whole integer values of dBZ. After some debugging of GEMPAK, the\nissue was <a href=\"https://github.com/Unidata/gempak/pull/11\">hopefully fixed within GEMPAK</a>.  The good news is that this bug did\nnot impact any processing of the file.  The conversion of color index and\nRGB colors to dBZ was OK.  There just was not any data at those 0.5 dBZ, non-int\nvalues.</li>\n<li><strong>5 May 2021</strong>: The NWS discontinued the dissemination of the\nN0R product.  The IEM is now generating a <a href=\"/onsite/news.phtml?id=1419\">pseudo composite</a>\nderived from the N0Q composite.</li>\n<li><strong>18 April 2022</strong>: The NWS discontinued the dissemination of the\nN0Q product.  The IEM is now using <a href=\"/onsite/news.phtml?id=1431\">the N0B product</a>\nas the source for N0Q.</li>\n\n<li><strong>28 September 2023</strong>: The NWS discontinued the dissemination of\nN1P (1 Hour Precip) and NTP (Storm Total Precip) products.  The IEM is now producing\ncomposites of DAA and DTA instead with no plans of creating a psuedo composite.</li>\n\n</ul>\n\n<h3>Product Generation:</h3>\n<div style=\"float: right; padding: 5px; border: 2px solid #000; margin: 5px;\">\n<a href=\"https://mesonet.agron.iastate.edu/archive/data/2007/10/19/usrad/max_n0r_0z0z_20071019.png\"><img src=\"https://mesonet.agron.iastate.edu/archive/data/2007/10/19/usrad/max_n0r_0z0z_20071019.png\" width=\"480\"></a>\n<br />Composite of mosaics for 18 Oct 2007. Click image for regular size.\n</div>\n<p>The IEM receives a feed of NEXRAD Level III products from the <a href=\"http://www.unidata.ucar.edu/software/idd/\">Unidata Internet Data Distribution</a>. \nThis feed includes the Base Reflectivity (N0R) and Net Echo Top (NET) products\nwhich are saved to disk for later processing.  Every 5 minutes, a script runs\na <a href=\"http://www.unidata.ucar.edu/software/gempak/\">GEMPAK</a> program \ncalled <a href=\"http://www.unidata.ucar.edu/cgi-bin/gempak/manual/programs_index?nex2img\">nex2img</a>.  nex2img searches the on-disk data for current (within\n15 minutes of runtime) products and then mosaics them into a large image.</p>\n\n\n<p>The result of the nex2img process is a simple raster image with size of 6000\npixels in width by 2600 pixels in height.  This raster image is then compared\nwith a similiar raster of NET to remove any suspected false echos.  In the\nwintertime, this comparison is skipped for most of the country. The final result\nis a PNG formatted image looking much like the example image shown above.\n\n<p>The final image is shipped to the IEM webfarm for archival and use. You can\nalways find the 10 most recently generated rasters <a href=\"https://mesonet.agron.iastate.edu/data/gis/images/4326/USCOMP/\">here</a> (n0r_0* is the newest). \nYou can also find current and historical images in the archive.  The format \nfor the URL is:\n<br /><code style=\"margin: 20px;\">\nhttps://mesonet.agron.iastate.edu/archive/data/YYYY/mm/dd/GIS/uscomp/\n</code>\n<br />For example, here are the images generated for today:\n<code style=\"margin: 20px;\">\nhttps://mesonet.agron.iastate.edu/archive/data/{$d}/GIS/uscomp/\n</code>\n<br />All dates in the archive are in UTC time.\n\n<h3>Product Format:</h3>\n\n<p>The images are stored in PNG format.  They have a 4-bit colormap and are\nnon-interlaced.  Images for the past 50 minutes are also available in TIFF, \nGeoTIFF, and gzipped GeoTIFF format.  Most people want to use these images\nin a GIS, so world files (.wld or .tfw) are available in the same current and\narchive folders.  The projection of these images is in EPSG:4326 (WGS84 longlat).\n\n<p>For some people, the PNG format is not readable by their GIS, so the \nIEM provides a server-side conversion of the PNG files for delivery of a \nGeoTIFF.  This application is called like so:\n<br /><code style=\"margin: 20px;\">\nhttps://mesonet.agron.iastate.edu/request/gis/n0r2gtiff.php?dstr=200711010025\n</code>\n<br />where <i>dstr</i> specifies the {year}{month}{day}{hour}{minute} in UTC\nof the requested raster.  Rasters are only available at minutes modulo 5.\n\n<h3>Colormap Information:</h3>\n\n<img src=\"color_ramp.gif\" style=\"float: left; margin: 10px; border: 1px;\">\n\n<p>The raster image has a colormap associated with it. The raw pixel values \nincrease monotonically from -30 dbz to 75 dbz every 5 dbz.  All values below\n0 dbz are assigned black (rgb 0 0 0).  We have tried to match the commonly\nused NEXRAD display as what you see on <a href=\"http://radar.weather.gov\">National Weather Service</a> page. <b>Please note:</b> We do not include a concept\nof missing data or \"no-data\".  So spots with beem blockage in the mountains\nor out away from the CONUS are just \"black\".\n\n<h3>Web Map Service (WMS)</h3>\n\n<p>A special way you can interface with this data archive is via the Web \nMap Service that also supports time based retrieval (<a href=\"http://www.opengeospatial.org/standards/wms\">WMS-T</a>).  Point your WMS-T aware app at:\n<br /><code style=\"margin: 20px;\">\nhttps://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?\n</code>\n<br />The <i>nexrad-n0r-wmst</i> layer is time aware!\n\n<h3>Example WMS-T Application</h3>\n\n<p>Here is an <a href=\"wmst.html\">example interface</a> utilizing the WMS-T NEXRAD service. \n        The interface code is a part of the \n        <a href=\"http://www.openlayers.org/\">OpenLayers toolkit</a>. \n        The default time display shows Hurricane Katrina making landfall.\n<br />\n<iframe src=\"wmst.html\" style=\"width: 550px; height: 450px;\"></iframe>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/docs/nexrad_mosaic/wmst.html",
    "content": "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <style type=\"text/css\">\n        #map {\n            width: 512px;\n            height: 400px;\n            border: 1px solid black;\n        }\n    </style>\n    <script src=\"/vendor/openlayers/2.13.1/OpenLayers.js\"></script>\n    <script type=\"text/javascript\">\n        var map, ia_wms;\n        var image = new Image();\n        var image2 = new Image();\n        var timeout_state = null;\n\n        function init() {\n            map = new OpenLayers.Map('map');\n\n            var ol_wms = new OpenLayers.Layer.WMS(\"OpenLayers WMS\",\n                \"http://vmap0.tiles.osgeo.org/wms/vmap0?\", {\n                    layers: 'basic'\n                });\n\n            var jpl_wms = new OpenLayers.Layer.WMS(\"NASA Global Mosaic\",\n                \"http://t1.hypercube.telascience.org/cgi-bin/landsat7\", {\n                    layers: \"landsat7\"\n                });\n\n            ia_wms = new OpenLayers.Layer.WMS(\"Nexrad\", \"https://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?\", {\n                layers: \"nexrad-n0r-wmst\",\n                transparent: true,\n                format: 'image/png',\n                time: \"2005-08-29T13:00:00Z\"\n            });\n\n            jpl_wms.setVisibility(false);\n\n            map.addLayers([ol_wms, jpl_wms, ia_wms]);\n            map.addControl(new OpenLayers.Control.LayerSwitcher());\n            map.zoomToExtent(new OpenLayers.Bounds(-100.898437, 22.148438, -78.398437, 39.726563));\n        }\n\n        function pad(i) {\n            if (i < 10) i = '0' + i;\n            return i;\n        }\n\n        function change_time(t, i) {\n            var s = t.split('T');\n            var d = s[0].split('-');\n            var t = s[1].split(':');\n            var date = Date.UTC(d[0], parseInt(d[1] - 1), parseInt(d[2]), parseInt(t[0]), parseInt(t[1]));\n            var nd = new Date(date + i * 60 * 1000);\n\n            var nm = pad(nd.getUTCMonth() + 1);\n            var ns = nd.getUTCFullYear() + '-' + nm + '-' + pad(nd.getUTCDate()) + 'T' + pad(nd.getUTCHours()) + ':' + pad(nd.getUTCMinutes());\n            return ns;\n        }\n\n        function increment_time() {\n            var ns = change_time(document.getElementById('time').value, document.getElementById('increment').value);\n            image.src = ia_wms.getFullRequestString({\n                \"TIME\": ns\n            })\n\n            document.getElementById('time').value = ns;\n            ia_wms.mergeNewParams({\n                \"time\": ns\n            });\n\n        }\n\n        function decrement_time() {\n            var ns = change_time(document.getElementById('time').value, 0 - document.getElementById('increment').value);\n            image.src = ia_wms.getFullRequestString({\n                \"TIME\": ns\n            })\n            document.getElementById('time').value = ns;\n            ia_wms.mergeNewParams({\n                \"time\": ns\n            });\n        }\n\n        function animate() {\n            increment_time();\n            timeout_state = setTimeout(animate, 3000);\n        }\n\n        function buttonCheck() {\n            if (document.getElementById('startstop').value == \"Start\") {\n                document.getElementById('startstop').value = \"Stop\";\n                animate();\n            } else {\n                document.getElementById('startstop').value = \"Start\";\n                clearTimeout(timeout_state);\n                timeout_state = null;\n            }\n        }\n    </script>\n</head>\n\n<body onload=\"init()\">\n    <input type=\"button\" value=\"-\" onClick='decrement_time();'>\n    <input type='text' id='time' value=\"2005-08-29T13:00\" onChange='ia_wms.mergeNewParams({\"time\":this.value});'>\n    <input type='text' id='increment' value=\"15\" size=\"4\">\n    <input type=\"button\" value=\"+\" onClick='increment_time();'>\n    <input type=\"button\" id=\"startstop\" value=\"Start\" onClick='buttonCheck();'>\n    <div id=\"map\"></div>\n</body>\n\n</html>"
  },
  {
    "path": "htdocs/docs/radmapserver/howto-0.rtf",
    "content": "{\\rtf1\\ansi\n{\\fonttbl\n{\\f0\\fswiss Helvetica;}\n{\\f1\\fmodern Courier;}\n{\\f2\\froman Times;}\n{\\f3\\froman Symbol;}\n}\n{\\info{\\comment Translated from SGML to RTF w/ Linuxdoc-SGML}}\n\n\\page{\\pard\\plain\\keepn\\f0\\fs36\\b\\tx576{1 Introduction}}\n{}#{\\footnote TOC_0}\n\n${\\footnote Introduction}\n+{\\footnote browse}\n\\par\\pard\\plain\\li500\\sb200\\fi0\n{}K{\\footnote Introduction}\n\nAlmost every weather website on the Internet has some sort of \\url{NEXRAD data display}. Unfortunately almost all of these sites are only fulfilling a single purpose, allowing the user to view an image.  Geographical Information Systems (GIS) goes beyond this single purpose model to allow the user to view the image, but then also process it within a GIS system.  Processing could involve working with the RASTER data, reprojecting the image, querying the image, or many other things.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\nThis HOWTO covers a mechanism to produce geo-referenced NEXRAD imagery from \\url{GEMPAK}. As a GIS web mapping example, we use \\url{Mapserver} to create a simple, but \npowerfull web application. This HOWTO assumes that you are running a  \nmodern version of Linux.  Other UNIXs with \\url{GNU software} installed  \nshould work as well.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\nThis HOWTO is geared for those in the \\url{UNIDATA community} with an active \\url{Internet Data Distribution} feed and already have GEMPAK installed.  If you don't have  \neither of these, you will probably just be interested in the Mapserver sections. \nThe {\\i radmapserver-files.tar.gz} contains an example RADAR image ready \nfor use with Mapserver or any other raster supporting GIS.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{1.1 411 on abbreviations}}\n{}#{\\footnote TOC_1}\n{}K{\\footnote 411 on abbreviations}\n\nSome of the abbreviations used in this HOWTO. \n\\cellx2000\n\\cellx4000\n\\cellx6000\n\\cellx8000\n\\cellx10000\n\\cellx12000\n\\cellx14000\n\\cellx16000\n\\cellx18000\n\\intbl\nIEM\n\\cell\nIowa Environmental Mesonet\n\\cell\\row\\intbl \nUNIDATA\n\\cell\nUniversity meteorological research group\n\\cell\\row\\intbl \nNEXRAD\n\\cell\nNetwork of Next Generation (WSR-88D) RADAR used by the National Weather Service\n\\cell\\row\\intbl \nNWS\n\\cell\nNational Weather Service\n\\cell\\row\\intbl \nGEMPAK\n\\cell\nGeneral Meteorological Application Package. Useful for dealing with NWS produced formats\n\\cell\\row\\pard\n\\li500{}\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\\qc Abbreviations<@@par>\n\\pard\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{1.2 Reading this HOWTO}}\n{}#{\\footnote TOC_2}\n{}K{\\footnote Reading this HOWTO}\n\nSome of you reading this may have no interest in generating the composites,  \nbut wish to use the composites.  Currently, I am not aware of a group  \ngenerating this data source for free.  I have started generating a national \nbase composite reflectivity as a proof of concept.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{1.3 The Quick and Dirty version}}\n{}#{\\footnote TOC_3}\n{}K{\\footnote The Quick and Dirty version}\n\nThe files used in this howto are available here: \\url{urlnam}.\n\\par\\pard\\plain\n\\li1000{}\n\\sb200\\fi0\n\\li1000{}\\fi-200{\\f3\\'B7} Download and install Proj.4 from \\url{urlnam} .\n\\par\\pard\\plain\n\\li1000{}\n\\sb200\\fi0\n\\li1000{}\\fi-200{\\f3\\'B7} Download and compile Mapserver with proj, TIFF and PNG support from \\url{urlnam}  . Place the resulting 'mapserv' binary in your \nwebserver's CGI-BIN directory.\n\\par\\pard\\plain\n\\li1000{}\n\\sb200\\fi0\n\\li1000{}\\fi-200{\\f3\\'B7}  Extract the {\\i radmapserver-files.tar.gz} archive into your web root.\n\\par\\pard\\plain\n\\li1000{}\n\\sb200\\fi0\n\\li1000{}\\fi-200{\\f3\\'B7}  Point your browser at \\url{urlnam} .\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{1.4 Links}}\n{}#{\\footnote TOC_4}\n{}K{\\footnote Links}\n\n\\par\\pard\\plain\n\\li1000{}\n\\sb200\\fi0\n\\li1000{}\\fi-200{\\f3\\'B7} \\url{UNIDATA}\n\\par\\pard\\plain\n\\li1000{}\n\\sb200\\fi0\n\\li1000{}\\fi-200{\\f3\\'B7} \\url{Mapserver} \n\\par\\pard\\plain\n\\li1500{}\n\\sb200\\fi0\n\\li1500{}\\fi-200{\\f3\\'B7} \\url{Mapserver Docs}\n\\par\\pard\\plain\n\\li1500{}\n\\sb200\\fi0\n\\li1500{}\\fi-200{\\f3\\'B7} \\url{Mapserver WIKI}\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n\\page{\\pard\\plain\\keepn\\f0\\fs36\\b\\tx576{2 Requirements}}\n{}#{\\footnote TOC_5}\n\n${\\footnote Requirements}\n+{\\footnote browse}\n\\par\\pard\\plain\\li500\\sb200\\fi0\n{}K{\\footnote Requirements}\n\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{2.1 Software and Data Access}}\n{}#{\\footnote TOC_6}\n{}K{\\footnote Software and Data Access}\n\nThe following items must be installed and configured before any of this HOWTO \ncould potentially work for you.  Describing the installation of any of these  \npackages is beyond the scope of this document. \n\\par\\pard\\plain\n\\li1000{}\n\\sb200\\fi0\n\\li1000{}\\fi-200{\\f3\\'B7}  You should be using the Linux operating system, but there is no reason \nthis won't work on Solaris or a BSD variant.\n\\par\\pard\\plain\n\\li1000{}\n\\sb200\\fi0\n\\li1000{}\\fi-200{\\f3\\'B7}  GEMPAK, for converting the NIDS file format into RASTER\n\\par\\pard\\plain\n\\li1000{}\n\\sb200\\fi0\n\\li1000{}\\fi-200{\\f3\\'B7}  Some mechanism for NIDS data access \n\\par\\pard\\plain\n\\li1500{}\n\\sb200\\fi0\n\\li1500{}\\fi-200{\\f3\\'B7} Realtime access via UNIDATA IDD using LDM\n\\par\\pard\\plain\n\\li1500{}\n\\sb200\\fi0\n\\li1500{}\\fi-200{\\f3\\'B7} Or FTP access to NIDS files via NOAA\n\\par\\pard\\plain\n\\li1500{}\n\\sb200\\fi0\n\\li1500{}\\fi-200{\\f3\\'B7} Or locally available NIDS files on your hard-drive.\n\\par\\pard\\plain\n\\li1000{}\n\\sb200\\fi0\n\\li1000{}\\fi-200{\\f3\\'B7}  A webserver, which should be Apache.\n\\par\\pard\\plain\n\\li1000{}\n\\sb200\\fi0\n\\li1000{}\\fi-200{\\f3\\'B7}  ImageMagick: used to {\\i convert} the GIF files to TIFF.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\nThe following items will be installed during this howto.  The installation of \nProj.4 will require privileged access to your system.  The Mapserver components \nwill require access to your webserver's CGI-BIN directory.  \n\\par\\pard\\plain\n\\li1000{}\n\\sb200\\fi0\n\\li1000{}\\fi-200{\\f3\\'B7} Proj.4\n\\par\\pard\\plain\n\\li1000{}\n\\sb200\\fi0\n\\li1000{}\\fi-200{\\f3\\'B7} Mapserver\n\\par\\pard\\plain\n\\li1000{}\n\\sb200\\fi0\n\\li1000{}\\fi-200{\\f3\\'B7} Simple Mapserver application\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{2.2 Hardware}}\n{}#{\\footnote TOC_7}\n{}K{\\footnote Hardware}\n\nHardware requirements is a tricky topic.  I have seen 300 MHz machines outperform 1 GHz machines when properly configured.  Common sense applies here.  If you want to generate nationwide composites every 5 minutes, you will need a healthy machine.  If you are supporting a small intranet, a modest machine will do. \n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\nFor our purposes, Mapserver will not introduce a performance bottleneck \non your system.  It is extremely fast and robust!  Any slowness typically comes \nwhen you start reprojecting massive raster layers, but we aren't going to  \ndo that!\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{2.3 System Environment}}\n{}#{\\footnote TOC_8}\n{}K{\\footnote System Environment}\n\nYou are going to need root privileges on your system.  So either know your  \nroot password or be very kind to the system administrator! We will be installing \nProj.4 into /usr/local, which is a standard place to put 3rd party software. \nMapserver will be installed into the cgi-bin directory of your webserver.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n\\page{\\pard\\plain\\keepn\\f0\\fs36\\b\\tx576{3 Building the composites with GEMPAK}}\n{}#{\\footnote TOC_9}\n\n${\\footnote Building_the_composites_with_GEMPAK}\n+{\\footnote browse}\n\\par\\pard\\plain\\li500\\sb200\\fi0\n{}K{\\footnote Building the composites with GEMPAK}\n\nProbably the easiest component of this HOWTO is building the composite  \nimage within GEMPAK!  If you are running a version of GEMPAK before 5.6.j, you \nwill need to download and install the nex2img program.  If you already have \nnex2img, then you can skip the next subsection.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\nGEMPAK is publicly available from the \\url{UNIDATA website}.  Installing GEMPAK  \nis way outside the scope of this HOWTO.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\nNex2img was written by Steve Chiswell at the UNIDATA Program Center.  His  \nprogram is the key to making this whole system work.  Before nex2img, it was \nextremely tricky to get the geo-referencing of RASTERs, produced in GEMPAK, correct for use  \nwithin GIS.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{3.1 Building nex2img}}\n{}#{\\footnote TOC_10}\n{}K{\\footnote Building nex2img}\n\nBuilding nex2img is very straightforward with GEMPAK already installed. \n\n\\par\\pard\\sb200\\keep\\li1000{}{\\f1 \\line\n\\line\n\\par\\pard\\sb200\\keep\\li1500{}{\\f1 $ cd $NAWIPS \\line\n$ wget https://mesonet.agron.iastate.edu/docs/radmapserver/nex2img.tar.gz \\line\n$ tar -zxvf nex2img.tar.gz \\line\n$ cd unidata/programs/nex2img \\line\n$ make clean \\line\n$ make all \\line\n$ make install \\line\n$ make clean \\line\n$ rehash \\line\n$ which nex2img}\\line\n\\par\\pard\\sb200\\li1000{}}\n\\par\\pard\\sb200\\li500{}\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\nWith the nex2img program built, you are now ready to generate the composites.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{3.2 Scripting the generation of the composite}}\n{}#{\\footnote TOC_11}\n{}K{\\footnote Scripting the generation of the composite}\n\nThis simple script will crank out an image.  I am specifying a GRDAREA for \nIowa and extended. You will want to modify for your own needs.  Keep in mind \nthat this application composites individual site NEXRADs,  you can't build a nationwide  \ncomposite without having all the individual sites.  \n\n\\par\\pard\\sb200\\keep\\li1000{}{\\f1 \\line\n\\line\n\\par\\pard\\sb200\\keep\\li1500{}{\\f1 #!/bin/csh \\line\n\\line\n# Replace to fit your environment! \\line\nsource /home/nawips/Gemenviron \\line\n\\line\nset gtime=`date -u +'%y%m%d/%H%M'` \\line\n\\line\nrm -f radar.gif radar.tif >& /dev/null \\line\n\\line\nnex2img << EOF > nex2img.log \\line\n GRDAREA  = 37.00;-104.00;48.99;-87.01 \\line\n PROJ     = CED \\line\n KXKY     = 1700;1200 \\line\n CPYFIL   =   \\line\n GFUNC    = n0r \\line\n RADTIM   = ${gtime} \\line\n RADDUR   = 15 \\line\n RADFRQ   =  \\line\n STNFIL   = nexrad.tbl \\line\n RADMODE  = P \\line\n RADFIL   = radar.gif \\line\n LUTFIL   = upc_rad24.tbl \\line\n list \\line\n run \\line\n\\line\n exit \\line\nEOF \\line\n\\line\nif (-e radar.gif) then \\line\n  convert radar.gif radar.tif \\line\n  cp radar.tif /var/www/htdocs/radmapserver/gisdata \\line\nendif \\line\n}\\line\n\\par\\pard\\sb200\\li1000{}}\n\\par\\pard\\sb200\\li500{}\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\nThe nex2img program will generate an image called \"radar.gif\".  In order to  \nwork with most GIS systems, you will probably want to convert this file \nto another format namely TIFF, but you can choose JPG or PNG.  We then place \nthe radar.tif file in the webserver directory for later use by mapserver.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\nWithout getting too long winded, lets discuss image formats.  The easiest  \nformat for use within GIS is probably TIFF.  Although very large, uncompressed \ntiff files are extremely fast within GIS.  The reason is that the application  \ncan \"seek\" the file to only pull needed data.  With compressed formats, an \nentire set of data needs to be uncompressed and then processed.  Also, most  \npeople will probably try loading the image in ESRI's ArcView.  ArcView likes \nTIFF files and has built in support for them.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{3.3 Geo-referencing the composite image}}\n{}#{\\footnote TOC_12}\n{}K{\\footnote Geo-referencing the composite image}\n\nNow that we have an image, we need to georeference it.  Georeferencing of  \nimages is done with a world file.  A world file is simply a file with 6 lines \nof meta data describing the navigation of an image.  The format is for  \nexample: \n\n\\par\\pard\\sb200\\keep\\li1000{}{\\f1 \\line\n\\line\n\\par\\pard\\sb200\\keep\\li1500{}{\\f1 0.010 (size of pixel in x direction) \\line\n0.000000000000 (rotation term for row) *Typically zero \\line\n0.000000000000 (rotation term for column) *Typically zero \\line\n-0.010 (size of pixel in y direction) \\line\n-95.0000 (x coordinate of centre of upper left pixel in map units) \\line\n42.300 (y coordinate of centre of upper left pixel in map units) }\\line\n\\par\\pard\\sb200\\li1000{}}\n\\par\\pard\\sb200\\li500{} \nNote that the units of the geo-referencing are in the same units of the \nprojection.  Since we are in lat-lon space, the units are decimal degrees. \nIf you were in UTM space, it would probably be meters. \nFor the image generated from my example of nex2img, my world file  \nwould look like \n\n\\par\\pard\\sb200\\keep\\li1000{}{\\f1 \\line\n\\line\n\\par\\pard\\sb200\\keep\\li1500{}{\\f1    0.01000 \\line\n   0.00000 \\line\n   0.00000 \\line\n  -0.01000 \\line\n-104.00000 \\line\n  49.00000}\\line\n\\par\\pard\\sb200\\li1000{}}\n\\par\\pard\\sb200\\li500{}\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\plain\\f0\\sb200\\fs24\\b\\tx576{Naming the world file}}\n{}K{\\footnote Naming the world file}\\par\\pard\\plain\\li500\\sb200\\fi0\n\nDepending on your GIS, the naming convention of your world file may be  \ndifferent.  Many systems use a generic {\\i .wld} to describe any world  \nfile.  Others use variants on the image format nomenclature, for instance, the world file \nfor TIF formated files is {\\i .tfw} and for PNG is {\\i .pngw}. For our \npurposes, we will use {\\i .wld}.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{3.4 Lets pause for a second}}\n{}#{\\footnote TOC_13}\n{}K{\\footnote Lets pause for a second}\n\nIf you have made it this far, you are probably wondering what to do with the \nRASTER image with no political borders or other denotations and this silly \n6 line world file.  The next section shows an example of taking this image \nand using the powerful Mapserver to produce a Web Map application.  Trust me,  \nthis is not the only application of this data.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n\\page{\\pard\\plain\\keepn\\f0\\fs36\\b\\tx576{4 Building Proj.4 & Mapserver}}\n{}#{\\footnote TOC_14}\n\n${\\footnote Building_Proj_4___Mapserver}\n+{\\footnote browse}\n\\par\\pard\\plain\\li500\\sb200\\fi0\n{}K{\\footnote Building Proj.4 & Mapserver}\n\nLike many Open Source packages, Mapserver relies on external libraries to handle \nmuch of the heavy lifting.  This is both a good thing and a bad thing.  The good thing is that the Mapserver folks don't have to program all the needed functionality, the bad thing is that you can reach dependency-hell with this setup.  For our purposes, we will only build with Proj.4 support, but you can rebuild mapserver later  \nto link with other libraries for more functionality.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{4.1 Building Proj.4}}\n{}#{\\footnote TOC_15}\n{}K{\\footnote Building Proj.4}\n\n\\url{Proj.4} provides projection and reprojection support for Mapserver.  Building and installing is hopefully \nsimple, if you have ever built an open source package before.  Make sure \nthat /usr/local/lib is included in /etc/ld.so.conf, so that Mapserver can \nlink to that library without special configuration. \n\n\\par\\pard\\sb200\\keep\\li1000{}{\\f1 \\line\n\\line\n\\par\\pard\\sb200\\keep\\li1500{}{\\f1 $ wget ftp://ftp.remotesensing.org/pub/proj/proj-4.4.8.tar.gz \\line\n$ tar -zxvf proj-4.4.8.tar.gz \\line\n$ cd proj-4.4.8 \\line\n$ ./configure; make \\line\n$ su -l \\line\n# make install   #(as root, to install in /usr/local!) \\line\n# /sbin/ldconfig \\line\n# exit \\line\n$ make clean}\\line\n\\par\\pard\\sb200\\li1000{}}\n\\par\\pard\\sb200\\li500{}\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\nIf everything went well, you should notice a libproj in /usr/local/lib that  \nmapserver can link to.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{4.2 Building Mapserver}}\n{}#{\\footnote TOC_16}\n{}K{\\footnote Building Mapserver}\n\nAs I write this (28 Jul 2004), Mapserver is at version 4.2.1 .  It is preferable that you be running this version for this HOWTO, but it is not required. \nFor our purposes, the \nonly difference between the current version 4.2.1 and the old 3.6.x versions \nis the 'OFFSITE' keyword in the .map file.  In Mapserver 4.x, this is a RGB value and in Mapserver 3.x, this is a color map index value.  \n\n\\par\\pard\\sb200\\keep\\li1000{}{\\f1 \\line\n\\line\n\\par\\pard\\sb200\\keep\\li1500{}{\\f1 $ wget http://cvs.gis.umn.edu/dist/mapserver-4.2.1.tar.gz \\line\n$ tar -zxvf mapserver-4.2.1.tar.gz \\line\n$ cd mapserver-4.2.1 \\line\n$ ./configure --with-proj --with-png  \\line\n$ make \\line\n$ cp -i mapserv /var/www/cgi-bin/mapserv}\\line\n\\par\\pard\\sb200\\li1000{}}\n\\par\\pard\\sb200\\li500{}\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\nNow, if the build process worked, you should have a binary called 'mapserv' \nif your current working directory.  Verify that the mapserv binary is okay  \nby executing \n\n\\par\\pard\\sb200\\keep\\li1000{}{\\f1 \\line\n\\line\n\\par\\pard\\sb200\\keep\\li1500{}{\\f1 $ ./mapserv -v}\\line\n\\par\\pard\\sb200\\li1000{}}\n\\par\\pard\\sb200\\li500{} \nThis command will spit out the capabilities of Mapserver.  For this demo,  \nwe need support for SHAPEFILES and the TIFF file format.  The output from the \nabove command should contain {\\i OUTPUT=PNG INPUT=TIFF INPUT=SHAPEFILE}.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{4.3 Lets pause again!}}\n{}#{\\footnote TOC_17}\n{}K{\\footnote Lets pause again!}\n\nIf you got this far with these instructions, you are much smarter than I am.  \nSince I couldn't even get this to work following my own instructions.  Anyway, \nwe now have a CGI application that we can install on our webserver and begin  \nbuilding a web mapping application!  Yeah!\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n\\page{\\pard\\plain\\keepn\\f0\\fs36\\b\\tx576{5 Building your Web Mapping Application}}\n{}#{\\footnote TOC_18}\n\n${\\footnote Building_your_Web_Mapping_Application}\n+{\\footnote browse}\n\\par\\pard\\plain\\li500\\sb200\\fi0\n{}K{\\footnote Building your Web Mapping Application}\n\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{5.1 Getting Started}}\n{}#{\\footnote TOC_19}\n{}K{\\footnote Getting Started}\n\nIt is somewhat hard to keep this generic, when everyone does things differently. \nI will assume a base RPM install of apache on Red Hat Linux.  If your  \nenvironment is different, you should know how it is different!\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\nAssuming that your web directory root is {\\i /var/www/htdocs} and that \nyour CGI-BIN directory is {\\i /var/www/cgi-bin}, you will want to issue the \nfollowing commands as a privileged user to these directories. \n\n\\par\\pard\\sb200\\keep\\li1000{}{\\f1 \\line\n\\line\n\\par\\pard\\sb200\\keep\\li1500{}{\\f1 $ cd /tmp \\line\n$ wget https://mesonet.agron.iastate.edu/docs/radmapserver/radmapserver-files.tar.gz \\line\n$ cd /var/www/htdocs \\line\n$ mkdir mstmp \\line\n$ chown apache mstmp \\line\n$ tar -xzvf /tmp/radmapserver-files.tar.gz }\\line\n\\par\\pard\\sb200\\li1000{}}\n\\par\\pard\\sb200\\li500{} \nThe mstmp directory is needed by mapserver to write temporary files to.  The \nradmapserver directory is where we will build our application interface at.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{5.2 The Mapserver .map file}}\n{}#{\\footnote TOC_20}\n{}K{\\footnote The Mapserver .map file}\n\nFundamental to the Mapserver application, is a .map configuration file.  For  \nour demo, we will build a simple map file called radmapserver.map in our \n{\\i /var/www/htdocs/radmapserver} directory.  The file is as follows. \n\n\\par\\pard\\sb200\\keep\\li1000{}{\\f1 \\line\n\\line\n\\par\\pard\\sb200\\keep\\li1500{}{\\f1 # Start of Mapfile (radmapserver.map) \\line\nNAME radmapserver \\line\nSTATUS ON \\line\nSIZE 450 350 \\line\nEXTENT -104 37 -87 49 \\line\nUNITS DD \\line\nIMAGETYPE PNG \\line\n\\line\n# Map projection definition \\line\nPROJECTION \\line\n  \"proj=epsg:4326\" \\line\nEND \\line\n\\line\n \\line\n# Map interface definition \\line\nWEB \\line\n  LOG \"/var/www/htdocs/mstmp/radmapserver.log\" \\line\n  TEMPLATE radmapserver.html \\line\n  IMAGEPATH \"/var/www/htdocs/mstmp/\" \\line\n  IMAGEURL \"/mstmp/\" \\line\nEND \\line\n\\line\n# Our Geo-referenced RADAR layer \\line\nLAYER \\line\n  TYPE RASTER \\line\n  STATUS ON \\line\n  NAME radar \\line\n  DATA \"/var/www/htdocs/radmapserver/gisdata/radar.tif\" \\line\n  PROJECTION \\line\n   \"proj=epsg:4326\" \\line\n  END \\line\n  # For Mapserver 3.x, we would use \\line\n  # OFFSITE 0 \\line\n  OFFSITE 0 0 0 \\line\nEND \\line\n\\line\n# Our states shapefile, just to get some political boundaries \\line\nLAYER \\line\n  TYPE POLYGON \\line\n  STATUS ON \\line\n  NAME states \\line\n  DATA \"/var/www/htdocs/radmapserver/gisdata/states.shp\" \\line\n  PROJECTION \\line\n    \"proj=epsg:4326\" \\line\n  END \\line\n  CLASS \\line\n    OUTLINECOLOR 255 0 0 \\line\n  END \\line\nEND \\line\n\\line\nEND # End of mapfile radmapserver.map}\\line\n\\par\\pard\\sb200\\li1000{}}\n\\par\\pard\\sb200\\li500{}\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\nIn the Web definition of our mapfile, we referenced a file called {\\i radmapserver.html}. \nThis file is a HTML template mapserver uses to generate an interface.  Our \nexample radmapserver.html file is as follows. \n\n\\par\\pard\\sb200\\keep\\li1000{}{\\f1 \\line\n\\line\n\\par\\pard\\sb200\\keep\\li1500{}{\\f1 [lt    ]html[gt    ] \\line\n[lt    ]head[gt    ] \\line\n  [lt    ]title[gt    ]RadMapserver Test[lt    ]/title[gt    ] \\line\n[lt    ]/head[gt    ] \\line\n\\line\n[lt    ]form method=\"GET\" action=\"/cgi-bin/mapserv\" name=\"mapserv\"[gt    ] \\line\n[lt    ]input type=\"hidden\" value=\"[mapext]\" name=\"imgext\"[gt    ] \\line\n[lt    ]!-- imgxy is set to half of your display image size --[gt    ] \\line\n[lt    ]input type=\"hidden\" value=\"225 175\" name=\"imgxy\"[gt    ] \\line\n[lt    ]input type=\"hidden\" value=\"[map]\" name=\"map\"[gt    ] \\line\n[lt    ]input type=\"hidden\" value=\"browse\" name=\"mode\"[gt    ] \\line\n\\line\n[lt    ]table border=\"1\"[gt    ] \\line\n[lt    ]tr[gt    ][lt    ]td[gt    ] \\line\n\\line\n[lt    ]input name=\"img\" type=\"image\" src=\"[img]\" border=\"0\"[gt    ] \\line\n\\line\n[lt    ]/td[gt    ][lt    ]td[gt    ] \\line\n\\line\n[lt    ]p[gt    ] [lt    ]b[gt    ] Select layers to display [lt    ]/b[gt    ]  \\line\n[lt    ]br[gt    ][lt    ]input type=\"checkbox\" value=\"radar\" name=\"layer\" [radar_check] [gt    ] RADAR layer \\line\n[lt    ]br[gt    ][lt    ]input type=\"checkbox\" value=\"states\" name=\"layer\" [states_check] [gt    ] States layer \\line\n\\line\n[lt    ]p[gt    ]  Set your zoom option: \\line\n[lt    ]br[gt    ]   \\line\n[lt    ]select name=\"zoom\" size=\"1\"[gt    ]   \\line\n  [lt    ]option value=\"4\" [zoom_4_select][gt    ] Zoom in 4 times  \\line\n  [lt    ]option value=\"3\" [zoom_3_select][gt    ] Zoom in 3 times  \\line\n  [lt    ]option value=\"2\" [zoom_2_select][gt    ] Zoom in 2 times  \\line\n  [lt    ]option value=\"1\" [zoom_1_select][gt    ] Recenter Map  \\line\n  [lt    ]option value=\"-2\" [zoom_-2_select][gt    ] Zoom out 2 times  \\line\n  [lt    ]option value=\"-3\" [zoom_-3_select][gt    ] Zoom out 3 times  \\line\n  [lt    ]option value=\"-4\" [zoom_-4_select][gt    ] Zoom out 4 times  \\line\n[lt    ]/select[gt    ] \\line\n\\line\n[lt    ]p[gt    ] \\line\n[lt    ]input type=\"submit\" value=\"Make Map!\"[gt    ] \\line\n[lt    ]form[gt    ] \\line\n[lt    ]/td[gt    ][lt    ]/tr[gt    ][lt    ]/table[gt    ] \\line\n\\line\n[lt    ]html[gt    ]}\\line\n\\par\\pard\\sb200\\li1000{}}\n\\par\\pard\\sb200\\li500{}\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\nBelieve it or not, we are ready to rock and roll!  Get your favorite Open Source \nweb browser loaded up and point it at your website with the following URL \n\n\\par\\pard\\sb200\\keep\\li1000{}{\\f1 http://your.web.site/cgi-bin/mapserv?map=/var/www/htdocs/radmapserver/radmapserver.map[amp   ]layers=states}\\line\n\\par\\pard\\sb200\\li500{}\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n\\page{\\pard\\plain\\keepn\\f0\\fs36\\b\\tx576{6 GIS-Ready! NEXRAD information}}\n{}#{\\footnote TOC_21}\n\n${\\footnote GIS_Ready__NEXRAD_information}\n+{\\footnote browse}\n\\par\\pard\\plain\\li500\\sb200\\fi0\n{}K{\\footnote GIS-Ready! NEXRAD information}\n\nThis section contains links to folks already generating GIS-Ready products  \nfrom NEXRAD data.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{6.1 Iowa Environmental Mesonet}}\n{}#{\\footnote TOC_22}\n{}K{\\footnote Iowa Environmental Mesonet}\n\nThe IEM is generating a nationwide composite of base reflectivity every 5 \nminutes.  This product is available in this directory: \n\n\\par\\pard\\sb200\\keep\\li1000{}{\\f1 https://mesonet.agron.iastate.edu/data/gis/images/unproj/USCOMP/}\\line\n\\par\\pard\\sb200\\li500{} \nThe IEM is generating a PNG and TIFF formatted image.  There is also a  \ncompressed TIFF image available in that directory as well.  The file prefix \n{\\i n0r[lowbar]0} contains the current data.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\plain\\f0\\sb200\\fs24\\b\\tx576{Scripting an automated download}}\n{}K{\\footnote Scripting an automated download}\\par\\pard\\plain\\li500\\sb200\\fi0\n\nHere is an example script which would allow you to automatically download files \nfrom the IEM website and then save them to a local directory \n\n\\par\\pard\\sb200\\keep\\li1000{}{\\f1 \\line\n\\line\n\\par\\pard\\sb200\\keep\\li1500{}{\\f1 #!/bin/csh \\line\n\\line\nset DATADIR=\"/set/me/to/something\" \\line\n\\line\ncd /tmp \\line\n\\line\nwget -q https://mesonet.agron.iastate.edu/data/gis/images/unproj/USCOMP/n0r_0.tif.Z \\line\nuncompress n0r_0.tif.Z \\line\n\\line\ncd ${DATADIR} \\line\n\\line\nforeach i (9 8 7 6 5 4 3 2 1 0) \\line\n  cp -f n0r_${num}.tif n0r_`echo ${num} + 1 | bc`.tif \\line\nend \\line\n\\line\nmv /tmp/n0r_0.tif n0r_0.tif \\line\n\\line\nexit}\\line\n\\par\\pard\\sb200\\li1000{}}\n\\par\\pard\\sb200\\li500{}\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n\\page{\\pard\\plain\\keepn\\f0\\fs36\\b\\tx576{7 Conclusions }}\n{}#{\\footnote TOC_23}\n\n${\\footnote Conclusions}\n+{\\footnote browse}\n\\par\\pard\\plain\\li500\\sb200\\fi0\n{}K{\\footnote Conclusions}\n\nThis HOWTO demonstrated a very primitive component of GIS, web mapping.  There \nis just so much more that can be done.  For those of you familiar with PHP,  \nMapserver has an outstanding PHP interface to the Mapserver API.  You can  \ncreate some of the neatest applications using the Mapserver API and the power \nof PHP.  The Iowa Environmental Mesonet has implemented most of its Mapserver \ninterfaces using the PHP mapscript module.  The source code for these applications is licensed under the GPL, but I just don't place the code on the website to download.  Just \nemail me if you would like a copy...\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{7.1 Future Work}}\n{}#{\\footnote TOC_24}\n{}K{\\footnote Future Work}\n\nI would suspect that most people will not have the ability to generate nationwide NEXRAD composites.  One of the neat things Mapserver can do is act as a  \nWeb Map Service (WMS) server and client.  Potentially a WMS server could be \nset up somewhere on the Internet and then your mapserver could make a remote \nWMS call to it get the image.\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\nAnother option, will be for either UNIDATA, the IEM, or somebody else to generate the nationwide composite (in 'unprojected' coordinates) and make that available on the IDD.  This is probably \nthe easiest way to get this data to the community. \n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\nAlthough never covered in this HOWTO, timestamps are a big issue with this  \nsystem.  I have built hacks using DBF files in order to get timestamps on the  \ngenerated images.  Here is an example of output using this 'hack'.  At some  \npoint, I will add this hack to the HOWTO. \n\n\\par\\pard\\sb200\\keep\\li1000{}{\\f1 \\url{urlnam}}\\line\n\\par\\pard\\sb200\\li500{}\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n\n{\\pard\\sb200\\plain\\f0\\fs24\\b\\tx576{7.2 Contact info}}\n{}#{\\footnote TOC_25}\n{}K{\\footnote Contact info}\n\nIf you have questions, shoot me an email (akrherz@iastate.edu) or give me a call (515.294.5978).  Good luck!\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n}"
  },
  {
    "path": "htdocs/docs/radmapserver/howto-1.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n<HTML>\n<HEAD>\n <META NAME=\"GENERATOR\" CONTENT=\"LinuxDoc-Tools 0.9.20\">\n <TITLE>Mapserver + NEXRAD Composite HOWTO: Introduction</TITLE>\n <LINK HREF=\"howto-2.html\" REL=next>\n\n <LINK HREF=\"howto.html#toc1\" REL=contents>\n</HEAD>\n<BODY>\n<A HREF=\"howto-2.html\">Next</A>\nPrevious\n<A HREF=\"howto.html#toc1\">Contents</A>\n<HR>\n<H2><A NAME=\"s1\">1.</A> <A HREF=\"howto.html#toc1\">Introduction</A></H2>\n\n<P>Almost every weather website on the Internet has some sort of \n<A HREF=\"http://www.nws.noaa.gov/radar_tab.html\">NEXRAD data display</A>. Unfortunately almost all of these sites are only fulfilling a single purpose, allowing the user to view an image.  Geographical Information Systems (GIS) goes beyond this single purpose model to allow the user to view the image, but then also process it within a GIS system.  Processing could involve working with the RASTER data, reprojecting the image, querying the image, or many other things.</P>\n<P>This HOWTO covers a mechanism to produce geo-referenced NEXRAD imagery from \n<A HREF=\"http://my.unidata.ucar.edu/content/software/gempak/index.html\">GEMPAK</A>. As a GIS web mapping example, we use \n<A HREF=\"http://mapserver.gis.umn.edu\">Mapserver</A> to create a simple, but\npowerfull web application. This HOWTO assumes that you are running a \nmodern version of Linux.  Other UNIXs with \n<A HREF=\"http://www.gnu.org\">GNU software</A> installed \nshould work as well.</P>\n<P>This HOWTO is geared for those in the \n<A HREF=\"http://my.unidata.ucar.edu\">UNIDATA community</A> with an active \n<A HREF=\"http://my.unidata.ucar.edu/content/software/idd/index.html\">Internet Data Distribution</A> feed and already have GEMPAK installed.  If you don't have \neither of these, you will probably just be interested in the Mapserver sections.\nThe <I>radmapserver-files.tar.gz</I> contains an example RADAR image ready\nfor use with Mapserver or any other raster supporting GIS.</P>\n<H2><A NAME=\"ss1.1\">1.1</A> <A HREF=\"howto.html#toc1.1\">411 on abbreviations</A>\n</H2>\n\n<P>Some of the abbreviations used in this HOWTO.\n<BR><CENTER>\n<TABLE BORDER><TR><TD>\nIEM</TD><TD>Iowa Environmental Mesonet</TD></TR><TR><TD>\nUNIDATA</TD><TD>University meteorological research group</TD></TR><TR><TD>\nNEXRAD</TD><TD>Network of Next Generation (WSR-88D) RADAR used by the National Weather Service</TD></TR><TR><TD>\nNWS</TD><TD>National Weather Service</TD></TR><TR><TD>\nGEMPAK</TD><TD>General Meteorological Application Package. Useful for dealing with NWS produced formats\n</TD></TR></TABLE>\n<CAPTION>Abbreviations</CAPTION>\n</CENTER><BR>\n</P>\n<H2><A NAME=\"ss1.2\">1.2</A> <A HREF=\"howto.html#toc1.2\">Reading this HOWTO</A>\n</H2>\n\n<P>Some of you reading this may have no interest in generating the composites, \nbut wish to use the composites.  Currently, I am not aware of a group \ngenerating this data source for free.  I have started generating a national\nbase composite reflectivity as a proof of concept.</P>\n<H2><A NAME=\"ss1.3\">1.3</A> <A HREF=\"howto.html#toc1.3\">The Quick and Dirty version</A>\n</H2>\n\n<P>The files used in this howto are available here: \n<A HREF=\"https://mesonet.agron.iastate.edu/docs/radmapserver/radmapserver-files.tar.gz\">https://mesonet.agron.iastate.edu/docs/radmapserver/radmapserver-files.tar.gz</A>.</P>\n<P>\n<UL>\n<LI>Download and install Proj.4 from \n<A HREF=\"http://www.remotesensing.org/proj/\">http://www.remotesensing.org/proj/</A> .</LI>\n<LI>Download and compile Mapserver with proj, TIFF and PNG support from \n<A HREF=\"http://mapserver.gis.umn.edu\">http://mapserver.gis.umn.edu</A>  . Place the resulting 'mapserv' binary in your\nwebserver's CGI-BIN directory.</LI>\n<LI> Extract the <I>radmapserver-files.tar.gz</I> archive into your web root.</LI>\n<LI> Point your browser at \n<A HREF=\"http://your.host.name/cgi-bin/mapserv?map=/var/www/htdocs/radmapserver/radmapserver.map&amp;layers=states\">http://your.host.name/cgi-bin/mapserv?map=/var/www/htdocs/radmapserver/radmapserver.map&amp;layers=states</A> .</LI>\n</UL>\n</P>\n<H2><A NAME=\"ss1.4\">1.4</A> <A HREF=\"howto.html#toc1.4\">Links</A>\n</H2>\n\n<P>\n<UL>\n<LI>\n<A HREF=\"http://my.unidata.ucar.edu\">UNIDATA</A></LI>\n<LI>\n<A HREF=\"http://mapserver.gis.umn.edu\">Mapserver</A>\n<UL>\n<LI>\n<A HREF=\"http://mapserver.gis.umn.edu/docs/\">Mapserver Docs</A></LI>\n<LI>\n<A HREF=\"http://mapserver.gis.umn.edu/cgi-bin/wiki.pl\">Mapserver WIKI</A></LI>\n</UL>\n</LI>\n</UL>\n</P>\n<HR>\n<A HREF=\"howto-2.html\">Next</A>\nPrevious\n<A HREF=\"howto.html#toc1\">Contents</A>\n</BODY>\n</HTML>\n"
  },
  {
    "path": "htdocs/docs/radmapserver/howto-2.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n<HTML>\n<HEAD>\n <META NAME=\"GENERATOR\" CONTENT=\"LinuxDoc-Tools 0.9.20\">\n <TITLE>Mapserver + NEXRAD Composite HOWTO: Requirements</TITLE>\n <LINK HREF=\"howto-3.html\" REL=next>\n <LINK HREF=\"howto-1.html\" REL=previous>\n <LINK HREF=\"howto.html#toc2\" REL=contents>\n</HEAD>\n<BODY>\n<A HREF=\"howto-3.html\">Next</A>\n<A HREF=\"howto-1.html\">Previous</A>\n<A HREF=\"howto.html#toc2\">Contents</A>\n<HR>\n<H2><A NAME=\"s2\">2.</A> <A HREF=\"howto.html#toc2\">Requirements</A></H2>\n\n<H2><A NAME=\"ss2.1\">2.1</A> <A HREF=\"howto.html#toc2.1\">Software and Data Access</A>\n</H2>\n\n<P>The following items must be installed and configured before any of this HOWTO\ncould potentially work for you.  Describing the installation of any of these \npackages is beyond the scope of this document.\n<UL>\n<LI> You should be using the Linux operating system, but there is no reason\nthis won't work on Solaris or a BSD variant.</LI>\n<LI> GEMPAK, for converting the NIDS file format into RASTER</LI>\n<LI> Some mechanism for NIDS data access\n<UL>\n<LI>Realtime access via UNIDATA IDD using LDM</LI>\n<LI>Or FTP access to NIDS files via NOAA</LI>\n<LI>Or locally available NIDS files on your hard-drive.</LI>\n</UL>\n</LI>\n<LI> A webserver, which should be Apache.</LI>\n<LI> ImageMagick: used to <I>convert</I> the GIF files to TIFF.</LI>\n</UL>\n</P>\n<P>The following items will be installed during this howto.  The installation of\nProj.4 will require privileged access to your system.  The Mapserver components\nwill require access to your webserver's CGI-BIN directory. \n<UL>\n<LI>Proj.4</LI>\n<LI>Mapserver</LI>\n<LI>Simple Mapserver application</LI>\n</UL>\n</P>\n<H2><A NAME=\"ss2.2\">2.2</A> <A HREF=\"howto.html#toc2.2\">Hardware</A>\n</H2>\n\n<P>Hardware requirements is a tricky topic.  I have seen 300 MHz machines outperform 1 GHz machines when properly configured.  Common sense applies here.  If you want to generate nationwide composites every 5 minutes, you will need a healthy machine.  If you are supporting a small intranet, a modest machine will do. </P>\n<P>For our purposes, Mapserver will not introduce a performance bottleneck\non your system.  It is extremely fast and robust!  Any slowness typically comes\nwhen you start reprojecting massive raster layers, but we aren't going to \ndo that!</P>\n<H2><A NAME=\"ss2.3\">2.3</A> <A HREF=\"howto.html#toc2.3\">System Environment</A>\n</H2>\n\n<P>You are going to need root privileges on your system.  So either know your \nroot password or be very kind to the system administrator! We will be installing\nProj.4 into /usr/local, which is a standard place to put 3rd party software.\nMapserver will be installed into the cgi-bin directory of your webserver.</P>\n<HR>\n<A HREF=\"howto-3.html\">Next</A>\n<A HREF=\"howto-1.html\">Previous</A>\n<A HREF=\"howto.html#toc2\">Contents</A>\n</BODY>\n</HTML>\n"
  },
  {
    "path": "htdocs/docs/radmapserver/howto-3.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n<HTML>\n<HEAD>\n <META NAME=\"GENERATOR\" CONTENT=\"LinuxDoc-Tools 0.9.20\">\n <TITLE>Mapserver + NEXRAD Composite HOWTO: Building the composites with GEMPAK</TITLE>\n <LINK HREF=\"howto-4.html\" REL=next>\n <LINK HREF=\"howto-2.html\" REL=previous>\n <LINK HREF=\"howto.html#toc3\" REL=contents>\n</HEAD>\n<BODY>\n<A HREF=\"howto-4.html\">Next</A>\n<A HREF=\"howto-2.html\">Previous</A>\n<A HREF=\"howto.html#toc3\">Contents</A>\n<HR>\n<H2><A NAME=\"s3\">3.</A> <A HREF=\"howto.html#toc3\">Building the composites with GEMPAK</A></H2>\n\n<P>Probably the easiest component of this HOWTO is building the composite \nimage within GEMPAK!  If you are running a version of GEMPAK before 5.6.j, you\nwill need to download and install the nex2img program.  If you already have\nnex2img, then you can skip the next subsection.</P>\n<P>GEMPAK is publicly available from the \n<A HREF=\"http://my.unidata.ucar.edu/content/software/gempak/index.html\">UNIDATA website</A>.  Installing GEMPAK \nis way outside the scope of this HOWTO.</P>\n<P>Nex2img was written by Steve Chiswell at the UNIDATA Program Center.  His \nprogram is the key to making this whole system work.  Before nex2img, it was\nextremely tricky to get the geo-referencing of RASTERs, produced in GEMPAK, correct for use \nwithin GIS.</P>\n<H2><A NAME=\"ss3.1\">3.1</A> <A HREF=\"howto.html#toc3.1\">Building nex2img</A>\n</H2>\n\n<P>Building nex2img is very straightforward with GEMPAK already installed.\n<BLOCKQUOTE><CODE>\n<HR>\n<PRE>\n$ cd $NAWIPS\n$ wget https://mesonet.agron.iastate.edu/docs/radmapserver/nex2img.tar.gz\n$ tar -zxvf nex2img.tar.gz\n$ cd unidata/programs/nex2img\n$ make clean\n$ make all\n$ make install\n$ make clean\n$ rehash\n$ which nex2img\n</PRE>\n<HR>\n</CODE></BLOCKQUOTE>\n</P>\n<P>With the nex2img program built, you are now ready to generate the composites.</P>\n<H2><A NAME=\"ss3.2\">3.2</A> <A HREF=\"howto.html#toc3.2\">Scripting the generation of the composite</A>\n</H2>\n\n<P>This simple script will crank out an image.  I am specifying a GRDAREA for\nIowa and extended. You will want to modify for your own needs.  Keep in mind\nthat this application composites individual site NEXRADs,  you can't build a nationwide \ncomposite without having all the individual sites. \n<BLOCKQUOTE><CODE>\n<HR>\n<PRE>\n#!/bin/csh\n\n# Replace to fit your environment!\nsource /home/nawips/Gemenviron\n\nset gtime=`date -u +'%y%m%d/%H%M'`\n\nrm -f radar.gif radar.tif >&amp; /dev/null\n\nnex2img &lt;&lt; EOF > nex2img.log\n GRDAREA  = 37.00;-104.00;48.99;-87.01\n PROJ     = CED\n KXKY     = 1700;1200\n CPYFIL   =  \n GFUNC    = n0r\n RADTIM   = ${gtime}\n RADDUR   = 15\n RADFRQ   = \n STNFIL   = nexrad.tbl\n RADMODE  = P\n RADFIL   = radar.gif\n LUTFIL   = upc_rad24.tbl\n list\n run\n\n exit\nEOF\n\nif (-e radar.gif) then\n  convert radar.gif radar.tif\n  cp radar.tif /var/www/htdocs/radmapserver/gisdata\nendif\n</PRE>\n<HR>\n</CODE></BLOCKQUOTE>\n</P>\n<P>The nex2img program will generate an image called \"radar.gif\".  In order to \nwork with most GIS systems, you will probably want to convert this file\nto another format namely TIFF, but you can choose JPG or PNG.  We then place\nthe radar.tif file in the webserver directory for later use by mapserver.</P>\n<P>Without getting too long winded, lets discuss image formats.  The easiest \nformat for use within GIS is probably TIFF.  Although very large, uncompressed\ntiff files are extremely fast within GIS.  The reason is that the application \ncan \"seek\" the file to only pull needed data.  With compressed formats, an\nentire set of data needs to be uncompressed and then processed.  Also, most \npeople will probably try loading the image in ESRI's ArcView.  ArcView likes\nTIFF files and has built in support for them.</P>\n<H2><A NAME=\"ss3.3\">3.3</A> <A HREF=\"howto.html#toc3.3\">Geo-referencing the composite image</A>\n</H2>\n\n<P>Now that we have an image, we need to georeference it.  Georeferencing of \nimages is done with a world file.  A world file is simply a file with 6 lines\nof meta data describing the navigation of an image.  The format is for \nexample:\n<BLOCKQUOTE><CODE>\n<HR>\n<PRE>\n0.010 (size of pixel in x direction)\n0.000000000000 (rotation term for row) *Typically zero\n0.000000000000 (rotation term for column) *Typically zero\n-0.010 (size of pixel in y direction)\n-95.0000 (x coordinate of centre of upper left pixel in map units)\n42.300 (y coordinate of centre of upper left pixel in map units) \n</PRE>\n<HR>\n</CODE></BLOCKQUOTE>\n\nNote that the units of the geo-referencing are in the same units of the\nprojection.  Since we are in lat-lon space, the units are decimal degrees.\nIf you were in UTM space, it would probably be meters.\nFor the image generated from my example of nex2img, my world file \nwould look like\n<BLOCKQUOTE><CODE>\n<HR>\n<PRE>\n   0.01000\n   0.00000\n   0.00000\n  -0.01000\n-104.00000\n  49.00000\n</PRE>\n<HR>\n</CODE></BLOCKQUOTE>\n</P>\n<H3>Naming the world file</H3>\n\n<P>Depending on your GIS, the naming convention of your world file may be \ndifferent.  Many systems use a generic <I>.wld</I> to describe any world \nfile.  Others use variants on the image format nomenclature, for instance, the world file\nfor TIF formated files is <I>.tfw</I> and for PNG is <I>.pngw</I>. For our\npurposes, we will use <I>.wld</I>.</P>\n<H2><A NAME=\"ss3.4\">3.4</A> <A HREF=\"howto.html#toc3.4\">Lets pause for a second</A>\n</H2>\n\n<P>If you have made it this far, you are probably wondering what to do with the\nRASTER image with no political borders or other denotations and this silly\n6 line world file.  The next section shows an example of taking this image\nand using the powerful Mapserver to produce a Web Map application.  Trust me, \nthis is not the only application of this data.</P>\n<HR>\n<A HREF=\"howto-4.html\">Next</A>\n<A HREF=\"howto-2.html\">Previous</A>\n<A HREF=\"howto.html#toc3\">Contents</A>\n</BODY>\n</HTML>\n"
  },
  {
    "path": "htdocs/docs/radmapserver/howto-4.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n<HTML>\n<HEAD>\n <META NAME=\"GENERATOR\" CONTENT=\"LinuxDoc-Tools 0.9.20\">\n <TITLE>Mapserver + NEXRAD Composite HOWTO: Building Proj.4 &amp; Mapserver</TITLE>\n <LINK HREF=\"howto-5.html\" REL=next>\n <LINK HREF=\"howto-3.html\" REL=previous>\n <LINK HREF=\"howto.html#toc4\" REL=contents>\n</HEAD>\n<BODY>\n<A HREF=\"howto-5.html\">Next</A>\n<A HREF=\"howto-3.html\">Previous</A>\n<A HREF=\"howto.html#toc4\">Contents</A>\n<HR>\n<H2><A NAME=\"s4\">4.</A> <A HREF=\"howto.html#toc4\">Building Proj.4 &amp; Mapserver</A></H2>\n\n<P>Like many Open Source packages, Mapserver relies on external libraries to handle\nmuch of the heavy lifting.  This is both a good thing and a bad thing.  The good thing is that the Mapserver folks don't have to program all the needed functionality, the bad thing is that you can reach dependency-hell with this setup.  For our purposes, we will only build with Proj.4 support, but you can rebuild mapserver later \nto link with other libraries for more functionality.</P>\n<H2><A NAME=\"ss4.1\">4.1</A> <A HREF=\"howto.html#toc4.1\">Building Proj.4</A>\n</H2>\n\n<P>\n<A HREF=\"http://www.remotesensing.org/proj/\">Proj.4</A> provides projection and reprojection support for Mapserver.  Building and installing is hopefully\nsimple, if you have ever built an open source package before.  Make sure\nthat /usr/local/lib is included in /etc/ld.so.conf, so that Mapserver can\nlink to that library without special configuration.\n<BLOCKQUOTE><CODE>\n<HR>\n<PRE>\n$ wget ftp://ftp.remotesensing.org/pub/proj/proj-4.4.8.tar.gz\n$ tar -zxvf proj-4.4.8.tar.gz\n$ cd proj-4.4.8\n$ ./configure; make\n$ su -l\n# make install   #(as root, to install in /usr/local!)\n# /sbin/ldconfig\n# exit\n$ make clean\n</PRE>\n<HR>\n</CODE></BLOCKQUOTE>\n</P>\n<P>If everything went well, you should notice a libproj in /usr/local/lib that \nmapserver can link to.</P>\n<H2><A NAME=\"ss4.2\">4.2</A> <A HREF=\"howto.html#toc4.2\">Building Mapserver</A>\n</H2>\n\n<P>As I write this (28 Jul 2004), Mapserver is at version 4.2.1 .  It is preferable that you be running this version for this HOWTO, but it is not required.\nFor our purposes, the\nonly difference between the current version 4.2.1 and the old 3.6.x versions\nis the 'OFFSITE' keyword in the .map file.  In Mapserver 4.x, this is a RGB value and in Mapserver 3.x, this is a color map index value. \n<BLOCKQUOTE><CODE>\n<HR>\n<PRE>\n$ wget http://cvs.gis.umn.edu/dist/mapserver-4.2.1.tar.gz\n$ tar -zxvf mapserver-4.2.1.tar.gz\n$ cd mapserver-4.2.1\n$ ./configure --with-proj --with-png \n$ make\n$ cp -i mapserv /var/www/cgi-bin/mapserv\n</PRE>\n<HR>\n</CODE></BLOCKQUOTE>\n</P>\n<P>Now, if the build process worked, you should have a binary called 'mapserv'\nif your current working directory.  Verify that the mapserv binary is okay \nby executing\n<BLOCKQUOTE><CODE>\n<HR>\n<PRE>\n$ ./mapserv -v\n</PRE>\n<HR>\n</CODE></BLOCKQUOTE>\n\nThis command will spit out the capabilities of Mapserver.  For this demo, \nwe need support for SHAPEFILES and the TIFF file format.  The output from the\nabove command should contain <I>OUTPUT=PNG INPUT=TIFF INPUT=SHAPEFILE</I>.</P>\n<H2><A NAME=\"ss4.3\">4.3</A> <A HREF=\"howto.html#toc4.3\">Lets pause again!</A>\n</H2>\n\n<P>If you got this far with these instructions, you are much smarter than I am. \nSince I couldn't even get this to work following my own instructions.  Anyway,\nwe now have a CGI application that we can install on our webserver and begin \nbuilding a web mapping application!  Yeah!</P>\n<HR>\n<A HREF=\"howto-5.html\">Next</A>\n<A HREF=\"howto-3.html\">Previous</A>\n<A HREF=\"howto.html#toc4\">Contents</A>\n</BODY>\n</HTML>\n"
  },
  {
    "path": "htdocs/docs/radmapserver/howto-5.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n<HTML>\n<HEAD>\n <META NAME=\"GENERATOR\" CONTENT=\"LinuxDoc-Tools 0.9.20\">\n <TITLE>Mapserver + NEXRAD Composite HOWTO: Building your Web Mapping Application</TITLE>\n <LINK HREF=\"howto-6.html\" REL=next>\n <LINK HREF=\"howto-4.html\" REL=previous>\n <LINK HREF=\"howto.html#toc5\" REL=contents>\n</HEAD>\n<BODY>\n<A HREF=\"howto-6.html\">Next</A>\n<A HREF=\"howto-4.html\">Previous</A>\n<A HREF=\"howto.html#toc5\">Contents</A>\n<HR>\n<H2><A NAME=\"s5\">5.</A> <A HREF=\"howto.html#toc5\">Building your Web Mapping Application</A></H2>\n\n<H2><A NAME=\"ss5.1\">5.1</A> <A HREF=\"howto.html#toc5.1\">Getting Started</A>\n</H2>\n\n<P>It is somewhat hard to keep this generic, when everyone does things differently.\nI will assume a base RPM install of apache on Red Hat Linux.  If your \nenvironment is different, you should know how it is different!</P>\n<P>Assuming that your web directory root is <I>/var/www/htdocs</I> and that\nyour CGI-BIN directory is <I>/var/www/cgi-bin</I>, you will want to issue the\nfollowing commands as a privileged user to these directories.\n<BLOCKQUOTE><CODE>\n<HR>\n<PRE>\n$ cd /tmp\n$ wget https://mesonet.agron.iastate.edu/docs/radmapserver/radmapserver-files.tar.gz\n$ cd /var/www/htdocs\n$ mkdir mstmp\n$ chown apache mstmp\n$ tar -xzvf /tmp/radmapserver-files.tar.gz \n</PRE>\n<HR>\n</CODE></BLOCKQUOTE>\n\nThe mstmp directory is needed by mapserver to write temporary files to.  The\nradmapserver directory is where we will build our application interface at.</P>\n<H2><A NAME=\"ss5.2\">5.2</A> <A HREF=\"howto.html#toc5.2\">The Mapserver .map file</A>\n</H2>\n\n<P>Fundamental to the Mapserver application, is a .map configuration file.  For \nour demo, we will build a simple map file called radmapserver.map in our\n<I>/var/www/htdocs/radmapserver</I> directory.  The file is as follows.\n<BLOCKQUOTE><CODE>\n<HR>\n<PRE>\n# Start of Mapfile (radmapserver.map)\nNAME radmapserver\nSTATUS ON\nSIZE 450 350\nEXTENT -104 37 -87 49\nUNITS DD\nIMAGETYPE PNG\n\n# Map projection definition\nPROJECTION\n  \"proj=epsg:4326\"\nEND\n\n\n# Map interface definition\nWEB\n  LOG \"/var/www/htdocs/mstmp/radmapserver.log\"\n  TEMPLATE radmapserver.html\n  IMAGEPATH \"/var/www/htdocs/mstmp/\"\n  IMAGEURL \"/mstmp/\"\nEND\n\n# Our Geo-referenced RADAR layer\nLAYER\n  TYPE RASTER\n  STATUS ON\n  NAME radar\n  DATA \"/var/www/htdocs/radmapserver/gisdata/radar.tif\"\n  PROJECTION\n   \"proj=epsg:4326\"\n  END\n  # For Mapserver 3.x, we would use\n  # OFFSITE 0\n  OFFSITE 0 0 0\nEND\n\n# Our states shapefile, just to get some political boundaries\nLAYER\n  TYPE POLYGON\n  STATUS ON\n  NAME states\n  DATA \"/var/www/htdocs/radmapserver/gisdata/states.shp\"\n  PROJECTION\n    \"proj=epsg:4326\"\n  END\n  CLASS\n    OUTLINECOLOR 255 0 0\n  END\nEND\n\nEND # End of mapfile radmapserver.map\n</PRE>\n<HR>\n</CODE></BLOCKQUOTE>\n</P>\n<P>In the Web definition of our mapfile, we referenced a file called <I>radmapserver.html</I>.\nThis file is a HTML template mapserver uses to generate an interface.  Our\nexample radmapserver.html file is as follows.\n<BLOCKQUOTE><CODE>\n<HR>\n<PRE>\n&lt;html&gt;\n&lt;head&gt;\n  &lt;title&gt;RadMapserver Test&lt;/title&gt;\n&lt;/head&gt;\n\n&lt;form method=\"GET\" action=\"/cgi-bin/mapserv\" name=\"mapserv\"&gt;\n&lt;input type=\"hidden\" value=\"[mapext]\" name=\"imgext\"&gt;\n&lt;!-- imgxy is set to half of your display image size --&gt;\n&lt;input type=\"hidden\" value=\"225 175\" name=\"imgxy\"&gt;\n&lt;input type=\"hidden\" value=\"[map]\" name=\"map\"&gt;\n&lt;input type=\"hidden\" value=\"browse\" name=\"mode\"&gt;\n\n&lt;table border=\"1\"&gt;\n&lt;tr&gt;&lt;td&gt;\n\n&lt;input name=\"img\" type=\"image\" src=\"[img]\" border=\"0\"&gt;\n\n&lt;/td&gt;&lt;td&gt;\n\n&lt;p&gt; &lt;b&gt; Select layers to display &lt;/b&gt; \n&lt;br&gt;&lt;input type=\"checkbox\" value=\"radar\" name=\"layer\" [radar_check] &gt; RADAR layer\n&lt;br&gt;&lt;input type=\"checkbox\" value=\"states\" name=\"layer\" [states_check] &gt; States layer\n\n&lt;p&gt;  Set your zoom option:\n&lt;br&gt;  \n&lt;select name=\"zoom\" size=\"1\"&gt;  \n  &lt;option value=\"4\" [zoom_4_select]&gt; Zoom in 4 times \n  &lt;option value=\"3\" [zoom_3_select]&gt; Zoom in 3 times \n  &lt;option value=\"2\" [zoom_2_select]&gt; Zoom in 2 times \n  &lt;option value=\"1\" [zoom_1_select]&gt; Recenter Map \n  &lt;option value=\"-2\" [zoom_-2_select]&gt; Zoom out 2 times \n  &lt;option value=\"-3\" [zoom_-3_select]&gt; Zoom out 3 times \n  &lt;option value=\"-4\" [zoom_-4_select]&gt; Zoom out 4 times \n&lt;/select&gt;\n\n&lt;p&gt;\n&lt;input type=\"submit\" value=\"Make Map!\"&gt;\n&lt;form&gt;\n&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;\n\n&lt;html&gt;\n</PRE>\n<HR>\n</CODE></BLOCKQUOTE>\n</P>\n<P>Believe it or not, we are ready to rock and roll!  Get your favorite Open Source\nweb browser loaded up and point it at your website with the following URL\n<HR>\n<PRE>\nhttp://your.web.site/cgi-bin/mapserv?map=/var/www/htdocs/radmapserver/radmapserver.map&amp;layers=states\n</PRE>\n<HR>\n</P>\n<HR>\n<A HREF=\"howto-6.html\">Next</A>\n<A HREF=\"howto-4.html\">Previous</A>\n<A HREF=\"howto.html#toc5\">Contents</A>\n</BODY>\n</HTML>\n"
  },
  {
    "path": "htdocs/docs/radmapserver/howto-6.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n<HTML>\n<HEAD>\n <META NAME=\"GENERATOR\" CONTENT=\"LinuxDoc-Tools 0.9.20\">\n <TITLE>Mapserver + NEXRAD Composite HOWTO: GIS-Ready! NEXRAD information</TITLE>\n <LINK HREF=\"howto-7.html\" REL=next>\n <LINK HREF=\"howto-5.html\" REL=previous>\n <LINK HREF=\"howto.html#toc6\" REL=contents>\n</HEAD>\n<BODY>\n<A HREF=\"howto-7.html\">Next</A>\n<A HREF=\"howto-5.html\">Previous</A>\n<A HREF=\"howto.html#toc6\">Contents</A>\n<HR>\n<H2><A NAME=\"s6\">6.</A> <A HREF=\"howto.html#toc6\">GIS-Ready! NEXRAD information</A></H2>\n\n<P>This section contains links to folks already generating GIS-Ready products \nfrom NEXRAD data.</P>\n<H2><A NAME=\"ss6.1\">6.1</A> <A HREF=\"howto.html#toc6.1\">Iowa Environmental Mesonet</A>\n</H2>\n\n<P>The IEM is generating a nationwide composite of base reflectivity every 5\nminutes.  This product is available in this directory:\n<HR>\n<PRE>\nhttps://mesonet.agron.iastate.edu/data/gis/images/unproj/USCOMP/\n</PRE>\n<HR>\n\nThe IEM is generating a PNG and TIFF formatted image.  There is also a \ncompressed TIFF image available in that directory as well.  The file prefix\n<I>n0r_0</I> contains the current data.</P>\n<H3>Scripting an automated download</H3>\n\n<P>Here is an example script which would allow you to automatically download files\nfrom the IEM website and then save them to a local directory\n<BLOCKQUOTE><CODE>\n<HR>\n<PRE>\n#!/bin/csh\n\nset DATADIR=\"/set/me/to/something\"\n\ncd /tmp\n\nwget -q https://mesonet.agron.iastate.edu/data/gis/images/unproj/USCOMP/n0r_0.tif.Z\nuncompress n0r_0.tif.Z\n\ncd ${DATADIR}\n\nforeach i (9 8 7 6 5 4 3 2 1 0)\n  cp -f n0r_${num}.tif n0r_`echo ${num} + 1 | bc`.tif\nend\n\nmv /tmp/n0r_0.tif n0r_0.tif\n\nexit\n</PRE>\n<HR>\n</CODE></BLOCKQUOTE>\n</P>\n<HR>\n<A HREF=\"howto-7.html\">Next</A>\n<A HREF=\"howto-5.html\">Previous</A>\n<A HREF=\"howto.html#toc6\">Contents</A>\n</BODY>\n</HTML>\n"
  },
  {
    "path": "htdocs/docs/radmapserver/howto-7.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n<HTML>\n<HEAD>\n <META NAME=\"GENERATOR\" CONTENT=\"LinuxDoc-Tools 0.9.20\">\n <TITLE>Mapserver + NEXRAD Composite HOWTO: Conclusions </TITLE>\n <LINK HREF=\"howto-6.html\" REL=previous>\n <LINK HREF=\"howto.html#toc7\" REL=contents>\n</HEAD>\n<BODY>\nNext\n<A HREF=\"howto-6.html\">Previous</A>\n<A HREF=\"howto.html#toc7\">Contents</A>\n<HR>\n<H2><A NAME=\"s7\">7.</A> <A HREF=\"howto.html#toc7\">Conclusions </A></H2>\n\n<P>This HOWTO demonstrated a very primitive component of GIS, web mapping.  There\nis just so much more that can be done.  For those of you familiar with PHP, \nMapserver has an outstanding PHP interface to the Mapserver API.  You can \ncreate some of the neatest applications using the Mapserver API and the power\nof PHP.  The Iowa Environmental Mesonet has implemented most of its Mapserver\ninterfaces using the PHP mapscript module.  The source code for these applications is licensed under the GPL, but I just don't place the code on the website to download.  Just\nemail me if you would like a copy...</P>\n<H2><A NAME=\"ss7.1\">7.1</A> <A HREF=\"howto.html#toc7.1\">Future Work</A>\n</H2>\n\n<P>I would suspect that most people will not have the ability to generate nationwide NEXRAD composites.  One of the neat things Mapserver can do is act as a \nWeb Map Service (WMS) server and client.  Potentially a WMS server could be\nset up somewhere on the Internet and then your mapserver could make a remote\nWMS call to it get the image.</P>\n<P>Another option, will be for either UNIDATA, the IEM, or somebody else to generate the nationwide composite (in 'unprojected' coordinates) and make that available on the IDD.  This is probably\nthe easiest way to get this data to the community. </P>\n<P>Although never covered in this HOWTO, timestamps are a big issue with this \nsystem.  I have built hacks using DBF files in order to get timestamps on the \ngenerated images.  Here is an example of output using this 'hack'.  At some \npoint, I will add this hack to the HOWTO.\n<BLOCKQUOTE><CODE>\n<A HREF=\"https://mesonet.agron.iastate.edu/data/mwcomp.png\">https://mesonet.agron.iastate.edu/data/mwcomp.png</A></CODE></BLOCKQUOTE>\n</P>\n<H2><A NAME=\"ss7.2\">7.2</A> <A HREF=\"howto.html#toc7.2\">Contact info</A>\n</H2>\n\n<P>If you have questions, shoot me an email (akrherz@iastate.edu) or give me a call (515.294.5978).  Good luck!</P>\n<HR>\nNext\n<A HREF=\"howto-6.html\">Previous</A>\n<A HREF=\"howto.html#toc7\">Contents</A>\n</BODY>\n</HTML>\n"
  },
  {
    "path": "htdocs/docs/radmapserver/howto.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n<HTML>\n<HEAD>\n <META NAME=\"GENERATOR\" CONTENT=\"LinuxDoc-Tools 0.9.20\">\n <TITLE>Mapserver + NEXRAD Composite HOWTO</TITLE>\n <LINK HREF=\"howto-1.html\" REL=next>\n\n\n</HEAD>\n<BODY>\n<A HREF=\"howto-1.html\">Next</A>\nPrevious\nContents\n<HR>\n<H1>Mapserver + NEXRAD Composite HOWTO</H1>\n\n<H2>Daryl Herzmann</H2>\n<HR>\n<EM>This HOWTO explains how to create \"unprojected\" geo-referenced NEXRAD\nimagery ready for use within GIS.  As an example,  \n<A HREF=\"http://mapserver.gis.umn.edu\">Mapserver</A> is used to illustrate web mapping with this raster file.\nUpdated on 28 Jul 2004 with various fixes to make the document current.</EM>\n<HR>\n<P>\n<H2><A NAME=\"toc1\">1.</A> <A HREF=\"howto-1.html\">Introduction</A></H2>\n\n<UL>\n<LI><A NAME=\"toc1.1\">1.1</A> <A HREF=\"howto-1.html#ss1.1\">411 on abbreviations</A>\n<LI><A NAME=\"toc1.2\">1.2</A> <A HREF=\"howto-1.html#ss1.2\">Reading this HOWTO</A>\n<LI><A NAME=\"toc1.3\">1.3</A> <A HREF=\"howto-1.html#ss1.3\">The Quick and Dirty version</A>\n<LI><A NAME=\"toc1.4\">1.4</A> <A HREF=\"howto-1.html#ss1.4\">Links</A>\n</UL>\n<P>\n<H2><A NAME=\"toc2\">2.</A> <A HREF=\"howto-2.html\">Requirements</A></H2>\n\n<UL>\n<LI><A NAME=\"toc2.1\">2.1</A> <A HREF=\"howto-2.html#ss2.1\">Software and Data Access</A>\n<LI><A NAME=\"toc2.2\">2.2</A> <A HREF=\"howto-2.html#ss2.2\">Hardware</A>\n<LI><A NAME=\"toc2.3\">2.3</A> <A HREF=\"howto-2.html#ss2.3\">System Environment</A>\n</UL>\n<P>\n<H2><A NAME=\"toc3\">3.</A> <A HREF=\"howto-3.html\">Building the composites with GEMPAK</A></H2>\n\n<UL>\n<LI><A NAME=\"toc3.1\">3.1</A> <A HREF=\"howto-3.html#ss3.1\">Building nex2img</A>\n<LI><A NAME=\"toc3.2\">3.2</A> <A HREF=\"howto-3.html#ss3.2\">Scripting the generation of the composite</A>\n<LI><A NAME=\"toc3.3\">3.3</A> <A HREF=\"howto-3.html#ss3.3\">Geo-referencing the composite image</A>\n<LI><A NAME=\"toc3.4\">3.4</A> <A HREF=\"howto-3.html#ss3.4\">Lets pause for a second</A>\n</UL>\n<P>\n<H2><A NAME=\"toc4\">4.</A> <A HREF=\"howto-4.html\">Building Proj.4 &amp; Mapserver</A></H2>\n\n<UL>\n<LI><A NAME=\"toc4.1\">4.1</A> <A HREF=\"howto-4.html#ss4.1\">Building Proj.4</A>\n<LI><A NAME=\"toc4.2\">4.2</A> <A HREF=\"howto-4.html#ss4.2\">Building Mapserver</A>\n<LI><A NAME=\"toc4.3\">4.3</A> <A HREF=\"howto-4.html#ss4.3\">Lets pause again!</A>\n</UL>\n<P>\n<H2><A NAME=\"toc5\">5.</A> <A HREF=\"howto-5.html\">Building your Web Mapping Application</A></H2>\n\n<UL>\n<LI><A NAME=\"toc5.1\">5.1</A> <A HREF=\"howto-5.html#ss5.1\">Getting Started</A>\n<LI><A NAME=\"toc5.2\">5.2</A> <A HREF=\"howto-5.html#ss5.2\">The Mapserver .map file</A>\n</UL>\n<P>\n<H2><A NAME=\"toc6\">6.</A> <A HREF=\"howto-6.html\">GIS-Ready! NEXRAD information</A></H2>\n\n<UL>\n<LI><A NAME=\"toc6.1\">6.1</A> <A HREF=\"howto-6.html#ss6.1\">Iowa Environmental Mesonet</A>\n</UL>\n<P>\n<H2><A NAME=\"toc7\">7.</A> <A HREF=\"howto-7.html\">Conclusions </A></H2>\n\n<UL>\n<LI><A NAME=\"toc7.1\">7.1</A> <A HREF=\"howto-7.html#ss7.1\">Future Work</A>\n<LI><A NAME=\"toc7.2\">7.2</A> <A HREF=\"howto-7.html#ss7.2\">Contact info</A>\n</UL>\n<HR>\n<A HREF=\"howto-1.html\">Next</A>\nPrevious\nContents\n</BODY>\n</HTML>\n"
  },
  {
    "path": "htdocs/docs/radmapserver/howto.rtf",
    "content": "{\\rtf1\\ansi\n{\\fonttbl\n{\\f0\\fswiss Helvetica;}\n{\\f1\\fmodern Courier;}\n{\\f2\\froman Times;}\n{\\f3\\froman Symbol;}\n}\n{\\info{\\comment Translated from SGML to RTF w/ Linuxdoc-SGML}}\n+{\\footnote browse}\n\n{\\pard\\plain\\f0\\sb200\\fs36\\b\\tx576{Mapserver + NEXRAD Composite HOWTO}}\n{}K{\\footnote Mapserver + NEXRAD Composite HOWTO}\\par\\pard\\plain\\li500\\sb200\\fi0\n\n\\par\\pard\\plain\n\\li500{}\n\\sb200\\fi0\n{\\b Daryl Herzmann}\n\\par\\par\nThis HOWTO explains how to create \"unprojected\" geo-referenced NEXRAD \nimagery ready for use within GIS.  As an example,  \\url{Mapserver} is used to illustrate web mapping with this raster file. \nUpdated on 28 Jul 2004 with various fixes to make the document current.\\par\\par\\pard\\plain\n\\li500\\fi-200{\\f3\\'B7} 1 {\\uldb Introduction}{\\v TOC_0}\\par\n\\li1000\\fi-200{\\f3\\'B7} 1.1 {\\uldb 411 on abbreviations}{\\v TOC_1}\\par\n\\li1000\\fi-200{\\f3\\'B7} 1.2 {\\uldb Reading this HOWTO}{\\v TOC_2}\\par\n\\li1000\\fi-200{\\f3\\'B7} 1.3 {\\uldb The Quick and Dirty version}{\\v TOC_3}\\par\n\\li1000\\fi-200{\\f3\\'B7} 1.4 {\\uldb Links}{\\v TOC_4}\\par\n\\li500\\fi-200{\\f3\\'B7} 2 {\\uldb Requirements}{\\v TOC_5}\\par\n\\li1000\\fi-200{\\f3\\'B7} 2.1 {\\uldb Software and Data Access}{\\v TOC_6}\\par\n\\li1000\\fi-200{\\f3\\'B7} 2.2 {\\uldb Hardware}{\\v TOC_7}\\par\n\\li1000\\fi-200{\\f3\\'B7} 2.3 {\\uldb System Environment}{\\v TOC_8}\\par\n\\li500\\fi-200{\\f3\\'B7} 3 {\\uldb Building the composites with GEMPAK}{\\v TOC_9}\\par\n\\li1000\\fi-200{\\f3\\'B7} 3.1 {\\uldb Building nex2img}{\\v TOC_10}\\par\n\\li1000\\fi-200{\\f3\\'B7} 3.2 {\\uldb Scripting the generation of the composite}{\\v TOC_11}\\par\n\\li1000\\fi-200{\\f3\\'B7} 3.3 {\\uldb Geo-referencing the composite image}{\\v TOC_12}\\par\n\\li1000\\fi-200{\\f3\\'B7} 3.4 {\\uldb Lets pause for a second}{\\v TOC_13}\\par\n\\li500\\fi-200{\\f3\\'B7} 4 {\\uldb Building Proj.4 & Mapserver}{\\v TOC_14}\\par\n\\li1000\\fi-200{\\f3\\'B7} 4.1 {\\uldb Building Proj.4}{\\v TOC_15}\\par\n\\li1000\\fi-200{\\f3\\'B7} 4.2 {\\uldb Building Mapserver}{\\v TOC_16}\\par\n\\li1000\\fi-200{\\f3\\'B7} 4.3 {\\uldb Lets pause again!}{\\v TOC_17}\\par\n\\li500\\fi-200{\\f3\\'B7} 5 {\\uldb Building your Web Mapping Application}{\\v TOC_18}\\par\n\\li1000\\fi-200{\\f3\\'B7} 5.1 {\\uldb Getting Started}{\\v TOC_19}\\par\n\\li1000\\fi-200{\\f3\\'B7} 5.2 {\\uldb The Mapserver .map file}{\\v TOC_20}\\par\n\\li500\\fi-200{\\f3\\'B7} 6 {\\uldb GIS-Ready! NEXRAD information}{\\v TOC_21}\\par\n\\li1000\\fi-200{\\f3\\'B7} 6.1 {\\uldb Iowa Environmental Mesonet}{\\v TOC_22}\\par\n\\li500\\fi-200{\\f3\\'B7} 7 {\\uldb Conclusions}{\\v TOC_23}\\par\n\\li1000\\fi-200{\\f3\\'B7} 7.1 {\\uldb Future Work}{\\v TOC_24}\\par\n\\li1000\\fi-200{\\f3\\'B7} 7.2 {\\uldb Contact info}{\\v TOC_25}\\par\n\n}\n"
  },
  {
    "path": "htdocs/docs/radmapserver/howto.sgml",
    "content": "<!DOCTYPE linuxdoc system>\n<article>\n\n<title>Mapserver + NEXRAD Composite HOWTO</title>\n<author>\n  <name>Daryl Herzmann</name>\n</author>\n\n<abstract>\nThis HOWTO explains how to create \"unprojected\" geo-referenced NEXRAD\nimagery ready for use within GIS.  As an example,  <url url=\"http://mapserver.gis.umn.edu\" name=\"Mapserver\"> is used to illustrate web mapping with this \nraster file.\n\nUpdated on 28 Jul 2004 with various fixes to make the document current.\n</abstract>\n\n<toc>\n\n<sect>\n <heading>Introduction</heading>\n<p>\nAlmost every weather website on the Internet has some sort of <url url=\"http://www.nws.noaa.gov/radar_tab.html\" name=\"NEXRAD data display\">. Unfortunately almost all of these sites are only fulfilling a single purpose, allowing the user to view an image.  Geographical Information Systems (GIS) goes beyond this single purpose model to allow the user to view the image, but then also process it within a GIS system.  Processing could involve working with the RASTER data, reprojecting the image, querying the image, or many other things.\n</p>\n\n<p>\nThis HOWTO covers a mechanism to produce geo-referenced NEXRAD imagery from <url url=\"http://my.unidata.ucar.edu/content/software/gempak/index.html\" name=\"GEMPAK\">. As a GIS web mapping example, we use <url url=\"http://mapserver.gis.umn.edu\" name=\"Mapserver\"> to create a simple, but\npowerfull web application. This HOWTO assumes that you are running a \nmodern version of Linux.  Other UNIXs with <url url=\"http://www.gnu.org\" name=\"GNU software\"> installed \nshould work as well.\n</p>\n\n<p>\nThis HOWTO is geared for those in the <url url=\"http://my.unidata.ucar.edu\" name=\"UNIDATA community\"> with an active <url url=\"http://my.unidata.ucar.edu/content/software/idd/index.html\" name=\"Internet\nData Distribution\"> feed and already have GEMPAK installed.  If you don't have \neither of these, you will probably just be interested in the Mapserver sections.\nThe <it>radmapserver-files.tar.gz</it> contains an example RADAR image ready\nfor use with Mapserver or any other raster supporting GIS.\n</p>\n\n<sect1>411 on abbreviations\n<p>\nSome of the abbreviations used in this HOWTO.\n<table>\n<tabular ca=\"ll\">\nIEM|Iowa Environmental Mesonet@\nUNIDATA|University meteorological research group@\nNEXRAD|Network of Next Generation (WSR-88D) RADAR used by the National Weather Service@\nNWS|National Weather Service@\nGEMPAK|General Meteorological Application Package.  Useful for dealing with NWS produced formats\n</tabular>\n<caption>Abbreviations</caption>\n</table>\n</p>\n</sect1>\n\n<sect1>Reading this HOWTO\n<p>\nSome of you reading this may have no interest in generating the composites, \nbut wish to use the composites.  Currently, I am not aware of a group \ngenerating this data source for free.  I have started generating a national\nbase composite reflectivity as a proof of concept.\n</p>\n</sect1>\n\n<sect1>The Quick and Dirty version\n<p>\nThe files used in this howto are available here: <url url=\"https://mesonet.agron.iastate.edu/docs/radmapserver/radmapserver-files.tar.gz\">.\n</p>\n<p>\n<itemize>\n<item>Download and install Proj.4 from <url url=\"http://www.remotesensing.org/proj/\"> .\n<item>Download and compile Mapserver with proj, TIFF and PNG support from <url url=\"http://mapserver.gis.umn.edu\">  . Place the resulting 'mapserv' binary in your\nwebserver's CGI-BIN directory.\n<item> Extract the <it>radmapserver-files.tar.gz</it> archive into your web root.\n<item> Point your browser at <url url=\"http://your.host.name/cgi-bin/mapserv?map=/var/www/htdocs/radmapserver/radmapserver.map&amp;layers=states\"> .\n</itemize>\n</p>\n</sect1>\n\n<sect1>Links\n<p>\n<itemize>\n  <item><url url=\"http://my.unidata.ucar.edu\" name=\"UNIDATA\">\n  <item><url url=\"http://mapserver.gis.umn.edu\" name=\"Mapserver\">\n  <itemize>\n    <item><url url=\"http://mapserver.gis.umn.edu/docs/\" name=\"Mapserver Docs\">\n    <item><url url=\"http://mapserver.gis.umn.edu/cgi-bin/wiki.pl\" name=\"Mapserver WIKI\">\n  </itemize>\n</itemize>\n</p>\n</sect1>\n\n</sect>\n<!-- Requirements -->\n<sect>\n <heading>Requirements</heading>\n<sect1>Software and Data Access\n<p>\nThe following items must be installed and configured before any of this HOWTO\ncould potentially work for you.  Describing the installation of any of these \npackages is beyond the scope of this document.\n<itemize>\n <item> You should be using the Linux operating system, but there is no reason\n this won't work on Solaris or a BSD variant.\n <item> GEMPAK, for converting the NIDS file format into RASTER\n <item> Some mechanism for NIDS data access\n <itemize>\n   <item>Realtime access via UNIDATA IDD using LDM\n   <item>Or FTP access to NIDS files via NOAA\n   <item>Or locally available NIDS files on your hard-drive.\n </itemize>\n <item> A webserver, which should be Apache.\n <item> ImageMagick: used to <it>convert</it> the GIF files to TIFF.\n</itemize>\n</p>\n\n<p>\nThe following items will be installed during this howto.  The installation of\nProj.4 will require privileged access to your system.  The Mapserver components\nwill require access to your webserver's CGI-BIN directory. \n<itemize>\n <item>Proj.4\n <item>Mapserver\n <item>Simple Mapserver application\n</itemize>\n</p>\n\n<sect1>Hardware\n<p>\nHardware requirements is a tricky topic.  I have seen 300 MHz machines outperform 1 GHz machines when properly configured.  Common sense applies here.  If you want to generate nationwide composites every 5 minutes, you will need a healthy machine.  If you are supporting a small intranet, a modest machine will do. \n</p>\n\n<p>\nFor our purposes, Mapserver will not introduce a performance bottleneck\non your system.  It is extremely fast and robust!  Any slowness typically comes\nwhen you start reprojecting massive raster layers, but we aren't going to \ndo that!\n</p>\n\n<sect1>System Environment\n<p>\nYou are going to need root privileges on your system.  So either know your \nroot password or be very kind to the system administrator! We will be installing\nProj.4 into /usr/local, which is a standard place to put 3rd party software.\nMapserver will be installed into the cgi-bin directory of your webserver.\n</p>\n\n</sect>\n\n<!-- Building the composites -->\n<sect>\n <heading>Building the composites with GEMPAK</heading>\n<p>\nProbably the easiest component of this HOWTO is building the composite \nimage within GEMPAK!  If you are running a version of GEMPAK before 5.6.j, you\nwill need to download and install the nex2img program.  If you already have\nnex2img, then you can skip the next subsection.\n</p>\n\n<p>\nGEMPAK is publicly available from the <url url=\"http://my.unidata.ucar.edu/content/software/gempak/index.html\" name=\"UNIDATA website\">.  Installing GEMPAK \nis way outside the scope of this HOWTO.\n</p>\n\n<p>\nNex2img was written by Steve Chiswell at the UNIDATA Program Center.  His \nprogram is the key to making this whole system work.  Before nex2img, it was\nextremely tricky to get the geo-referencing of RASTERs, produced in GEMPAK, correct for use \nwithin GIS.\n</p>\n\n<sect1>Building nex2img\n<p>\nBuilding nex2img is very straightforward with GEMPAK already installed.\n<tscreen><code>\n$ cd $NAWIPS\n$ wget https://mesonet.agron.iastate.edu/docs/radmapserver/nex2img.tar.gz\n$ tar -zxvf nex2img.tar.gz\n$ cd unidata/programs/nex2img\n$ make clean\n$ make all\n$ make install\n$ make clean\n$ rehash\n$ which nex2img\n</code></tscreen>\n</p>\n\n<p>\nWith the nex2img program built, you are now ready to generate the composites.\n</p>\n\n<sect1>Scripting the generation of the composite\n<p>\nThis simple script will crank out an image.  I am specifying a GRDAREA for\nIowa and extended. You will want to modify for your own needs.  Keep in mind\nthat this application composites individual site NEXRADs,  you can't build a nationwide \ncomposite without having all the individual sites. \n<tscreen><code>\n#!/bin/csh\n\n# Replace to fit your environment!\nsource /home/nawips/Gemenviron\n\nset gtime=`date -u +'%y%m%d/%H%M'`\n\nrm -f radar.gif radar.tif >& /dev/null\n\nnex2img << EOF > nex2img.log\n GRDAREA  = 37.00;-104.00;48.99;-87.01\n PROJ     = CED\n KXKY     = 1700;1200\n CPYFIL   =  \n GFUNC    = n0r\n RADTIM   = ${gtime}\n RADDUR   = 15\n RADFRQ   = \n STNFIL   = nexrad.tbl\n RADMODE  = P\n RADFIL   = radar.gif\n LUTFIL   = upc_rad24.tbl\n list\n run\n\n exit\nEOF\n\nif (-e radar.gif) then\n  convert radar.gif radar.tif\n  cp radar.tif /var/www/htdocs/radmapserver/gisdata\nendif\n\n</code></tscreen>\n</p>\n\n<p>\nThe nex2img program will generate an image called \"radar.gif\".  In order to \nwork with most GIS systems, you will probably want to convert this file\nto another format namely TIFF, but you can choose JPG or PNG.  We then place\nthe radar.tif file in the webserver directory for later use by mapserver.\n</p>\n\n<p>\nWithout getting too long winded, lets discuss image formats.  The easiest \nformat for use within GIS is probably TIFF.  Although very large, uncompressed\ntiff files are extremely fast within GIS.  The reason is that the application \ncan \"seek\" the file to only pull needed data.  With compressed formats, an\nentire set of data needs to be uncompressed and then processed.  Also, most \npeople will probably try loading the image in ESRI's ArcView.  ArcView likes\nTIFF files and has built in support for them.\n</p>\n\n<sect1>Geo-referencing the composite image\n<p>\nNow that we have an image, we need to georeference it.  Georeferencing of \nimages is done with a world file.  A world file is simply a file with 6 lines\nof meta data describing the navigation of an image.  The format is for \nexample:\n<tscreen><code>\n0.010 (size of pixel in x direction)\n0.000000000000 (rotation term for row) *Typically zero\n0.000000000000 (rotation term for column) *Typically zero\n-0.010 (size of pixel in y direction)\n-95.0000 (x coordinate of centre of upper left pixel in map units)\n42.300 (y coordinate of centre of upper left pixel in map units) \n</code></tscreen>\nNote that the units of the geo-referencing are in the same units of the\nprojection.  Since we are in lat-lon space, the units are decimal degrees.\nIf you were in UTM space, it would probably be meters.\nFor the image generated from my example of nex2img, my world file \nwould look like\n<tscreen><code>\n   0.01000\n   0.00000\n   0.00000\n  -0.01000\n-104.00000\n  49.00000\n</code></tscreen>\n</p>\n\n<sect2>Naming the world file\n<p>\nDepending on your GIS, the naming convention of your world file may be \ndifferent.  Many systems use a generic <it>.wld</it> to describe any world \nfile.  Others use variants on the image format nomenclature, for instance, the world file\nfor TIF formated files is <it>.tfw</it> and for PNG is <it>.pngw</it>. For our\npurposes, we will use <it>.wld</it>.\n</p>\n</sect2>\n\n</sect1>\n\n<sect1>Lets pause for a second\n<p>\nIf you have made it this far, you are probably wondering what to do with the\nRASTER image with no political borders or other denotations and this silly\n6 line world file.  The next section shows an example of taking this image\nand using the powerful Mapserver to produce a Web Map application.  Trust me, \nthis is not the only application of this data.\n</p>\n\n</sect1>\n\n</sect>\n\n<!-- Building Mapserver -->\n<sect>\n  <heading>Building Proj.4 & Mapserver</heading>\n\n<p>\nLike many Open Source packages, Mapserver relies on external libraries to handle\nmuch of the heavy lifting.  This is both a good thing and a bad thing.  The good thing is that the Mapserver folks don't have to program all the needed functionality, the bad thing is that you can reach dependency-hell with this setup.  For our purposes, we will only build with Proj.4 support, but you can rebuild mapserver later \nto link with other libraries for more functionality.\n</p>\n\n<sect1>Building Proj.4\n<p>\n <url url=\"http://www.remotesensing.org/proj/\" name=\"Proj.4\"> provides projection and reprojection support for Mapserver.  Building and installing is hopefully\nsimple, if you have ever built an open source package before.  Make sure\nthat /usr/local/lib is included in /etc/ld.so.conf, so that Mapserver can\nlink to that library without special configuration.\n<tscreen><code>\n$ wget ftp://ftp.remotesensing.org/pub/proj/proj-4.4.8.tar.gz\n$ tar -zxvf proj-4.4.8.tar.gz\n$ cd proj-4.4.8\n$ ./configure; make\n$ su -l\n# make install   #(as root, to install in /usr/local!)\n# /sbin/ldconfig\n# exit\n$ make clean\n</code></tscreen>\n</p>\n\n<p>\nIf everything went well, you should notice a libproj in /usr/local/lib that \nmapserver can link to.\n</sect1>\n\n<sect1>Building Mapserver\n<p>\nAs I write this (28 Jul 2004), Mapserver is at version 4.2.1 .  It is preferable that you be running this version for this HOWTO, but it is not required.\nFor our purposes, the\nonly difference between the current version 4.2.1 and the old 3.6.x versions\nis the 'OFFSITE' keyword in the .map file.  In Mapserver 4.x, this is a RGB value and in Mapserver 3.x, this is a color map index value. \n<tscreen><code>\n$ wget http://cvs.gis.umn.edu/dist/mapserver-4.2.1.tar.gz\n$ tar -zxvf mapserver-4.2.1.tar.gz\n$ cd mapserver-4.2.1\n$ ./configure --with-proj --with-png \n$ make\n$ cp -i mapserv /var/www/cgi-bin/mapserv\n</code></tscreen>\n</p>\n\n<p>\nNow, if the build process worked, you should have a binary called 'mapserv'\nif your current working directory.  Verify that the mapserv binary is okay \nby executing\n<tscreen><code>\n$ ./mapserv -v\n</code></tscreen>\nThis command will spit out the capabilities of Mapserver.  For this demo, \nwe need support for SHAPEFILES and the TIFF file format.  The output from the\nabove command should contain <it>OUTPUT=PNG INPUT=TIFF INPUT=SHAPEFILE</it>.\n</p>\n</sect1>\n\n<sect1>Lets pause again!\n<p>\nIf you got this far with these instructions, you are much smarter than I am. \nSince I couldn't even get this to work following my own instructions.  Anyway,\nwe now have a CGI application that we can install on our webserver and begin \nbuilding a web mapping application!  Yeah!\n</p>\n</sect1>\n\n\n<sect>Building your Web Mapping Application\n<sect1>Getting Started\n<p>\nIt is somewhat hard to keep this generic, when everyone does things differently.\nI will assume a base RPM install of apache on Red Hat Linux.  If your \nenvironment is different, you should know how it is different!\n</p>\n\n<p>\nAssuming that your web directory root is <it>/var/www/htdocs</it> and that\nyour CGI-BIN directory is <it>/var/www/cgi-bin</it>, you will want to issue the\nfollowing commands as a privileged user to these directories.\n<tscreen><code>\n$ cd /tmp\n$ wget https://mesonet.agron.iastate.edu/docs/radmapserver/radmapserver-files.tar.gz\n$ cd /var/www/htdocs\n$ mkdir mstmp\n$ chown apache mstmp\n$ tar -xzvf /tmp/radmapserver-files.tar.gz \n</code></tscreen>\nThe mstmp directory is needed by mapserver to write temporary files to.  The\nradmapserver directory is where we will build our application interface at.\n</p>\n\n</sect1>\n\n<sect1>The Mapserver .map file\n<p>\nFundamental to the Mapserver application, is a .map configuration file.  For \nour demo, we will build a simple map file called radmapserver.map in our\n<it>/var/www/htdocs/radmapserver</it> directory.  The file is as follows.\n<tscreen><code>\n# Start of Mapfile (radmapserver.map)\nNAME radmapserver\nSTATUS ON\nSIZE 450 350\nEXTENT -104 37 -87 49\nUNITS DD\nIMAGETYPE PNG\n\n# Map projection definition\nPROJECTION\n  \"proj=epsg:4326\"\nEND\n\n\n# Map interface definition\nWEB\n  LOG \"/var/www/htdocs/mstmp/radmapserver.log\"\n  TEMPLATE radmapserver.html\n  IMAGEPATH \"/var/www/htdocs/mstmp/\"\n  IMAGEURL \"/mstmp/\"\nEND\n\n# Our Geo-referenced RADAR layer\nLAYER\n  TYPE RASTER\n  STATUS ON\n  NAME radar\n  DATA \"/var/www/htdocs/radmapserver/gisdata/radar.tif\"\n  PROJECTION\n   \"proj=epsg:4326\"\n  END\n  # For Mapserver 3.x, we would use\n  # OFFSITE 0\n  OFFSITE 0 0 0\nEND\n\n# Our states shapefile, just to get some political boundaries\nLAYER\n  TYPE POLYGON\n  STATUS ON\n  NAME states\n  DATA \"/var/www/htdocs/radmapserver/gisdata/states.shp\"\n  PROJECTION\n    \"proj=epsg:4326\"\n  END\n  CLASS\n    OUTLINECOLOR 255 0 0\n  END\nEND\n\nEND # End of mapfile radmapserver.map\n</code></tscreen>\n</p>\n\n<p>\nIn the Web definition of our mapfile, we referenced a file called <it>radmapserver.html</it>.\nThis file is a HTML template mapserver uses to generate an interface.  Our\nexample radmapserver.html file is as follows.\n<tscreen><code>\n&lt;html&gt;\n&lt;head&gt;\n  &lt;title&gt;RadMapserver Test&lt;/title&gt;\n&lt;/head&gt;\n\n&lt;form method=\"GET\" action=\"/cgi-bin/mapserv\" name=\"mapserv\"&gt;\n&lt;input type=\"hidden\" value=\"[mapext]\" name=\"imgext\"&gt;\n&lt;!-- imgxy is set to half of your display image size --&gt;\n&lt;input type=\"hidden\" value=\"225 175\" name=\"imgxy\"&gt;\n&lt;input type=\"hidden\" value=\"[map]\" name=\"map\"&gt;\n&lt;input type=\"hidden\" value=\"browse\" name=\"mode\"&gt;\n\n&lt;table border=\"1\"&gt;\n&lt;tr&gt;&lt;td&gt;\n\n&lt;input name=\"img\" type=\"image\" src=\"[img]\" border=\"0\"&gt;\n\n&lt;/td&gt;&lt;td&gt;\n\n&lt;p&gt; &lt;b&gt; Select layers to display &lt;/b&gt; \n&lt;br&gt;&lt;input type=\"checkbox\" value=\"radar\" name=\"layer\" [radar_check] &gt; RADAR layer\n&lt;br&gt;&lt;input type=\"checkbox\" value=\"states\" name=\"layer\" [states_check] &gt; States layer\n\n&lt;p&gt;  Set your zoom option:\n&lt;br&gt;  \n&lt;select name=\"zoom\" size=\"1\"&gt;  \n  &lt;option value=\"4\" [zoom_4_select]&gt; Zoom in 4 times \n  &lt;option value=\"3\" [zoom_3_select]&gt; Zoom in 3 times \n  &lt;option value=\"2\" [zoom_2_select]&gt; Zoom in 2 times \n  &lt;option value=\"1\" [zoom_1_select]&gt; Recenter Map \n  &lt;option value=\"-2\" [zoom_-2_select]&gt; Zoom out 2 times \n  &lt;option value=\"-3\" [zoom_-3_select]&gt; Zoom out 3 times \n  &lt;option value=\"-4\" [zoom_-4_select]&gt; Zoom out 4 times \n&lt;/select&gt;\n\n&lt;p&gt;\n&lt;input type=\"submit\" value=\"Make Map!\"&gt;\n&lt;form&gt;\n&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;\n\n&lt;html&gt;\n</code></tscreen>\n</p>\n\n<p>\nBelieve it or not, we are ready to rock and roll!  Get your favorite Open Source\nweb browser loaded up and point it at your website with the following URL\n<code>http://your.web.site/cgi-bin/mapserv?map=/var/www/htdocs/radmapserver/radmapserver.map&amp;layers=states</code>\n</p>\n</sect>\n\n<sect>GIS-Ready! NEXRAD information\n<p>\nThis section contains links to folks already generating GIS-Ready products \nfrom NEXRAD data.\n</p>\n\n<sect1>Iowa Environmental Mesonet\n<p>\nThe IEM is generating a nationwide composite of base reflectivity every 5\nminutes.  This product is available in this directory:\n<code>https://mesonet.agron.iastate.edu/data/gis/images/unproj/USCOMP/\n</code>\nThe IEM is generating a PNG and TIFF formatted image.  There is also a \ncompressed TIFF image available in that directory as well.  The file prefix\n<it>n0r_0</it> contains the current data.\n</p>\n\n<sect2>Scripting an automated download\n<p>\nHere is an example script which would allow you to automatically download files\nfrom the IEM website and then save them to a local directory\n<tscreen><code>\n#!/bin/csh\n\nset DATADIR=\"/set/me/to/something\"\n\ncd /tmp\n\nwget -q https://mesonet.agron.iastate.edu/data/gis/images/unproj/USCOMP/n0r_0.tif.Z\nuncompress n0r_0.tif.Z\n\ncd ${DATADIR}\n\nforeach i (9 8 7 6 5 4 3 2 1 0)\n  cp -f n0r_${num}.tif n0r_`echo ${num} + 1 | bc`.tif\nend\n\nmv /tmp/n0r_0.tif n0r_0.tif\n\nexit\n</code></tscreen>\n</p>\n</sect2>\n\n</sect1>\n\n</sect>\n\n<sect>Conclusions \n<p>\nThis HOWTO demonstrated a very primitive component of GIS, web mapping.  There\nis just so much more that can be done.  For those of you familiar with PHP, \nMapserver has an outstanding PHP interface to the Mapserver API.  You can \ncreate some of the neatest applications using the Mapserver API and the power\nof PHP.  The Iowa Environmental Mesonet has implemented most of its Mapserver\ninterfaces using the PHP mapscript module.  The source code for these applications is licensed under the GPL, but I just don't place the code on the website to download.  Just\nemail me if you would like a copy...\n</p>\n\n<sect1>Future Work\n<p>\nI would suspect that most people will not have the ability to generate nationwide NEXRAD composites.  One of the neat things Mapserver can do is act as a \nWeb Map Service (WMS) server and client.  Potentially a WMS server could be\nset up somewhere on the Internet and then your mapserver could make a remote\nWMS call to it get the image.\n</p>\n<p>\nAnother option, will be for either UNIDATA, the IEM, or somebody else to generate the nationwide composite (in 'unprojected' coordinates) and make that available on the IDD.  This is probably\nthe easiest way to get this data to the community. \n</p>\n<p>\nAlthough never covered in this HOWTO, timestamps are a big issue with this \nsystem.  I have built hacks using DBF files in order to get timestamps on the \ngenerated images.  Here is an example of output using this 'hack'.  At some \npoint, I will add this hack to the HOWTO.\n<tscreen>\n<url url=\"https://mesonet.agron.iastate.edu/data/mwcomp.png\">\n</tscreen>\n</p>\n</sect1>\n\n<sect1>Contact info\n<p>\nIf you have questions, shoot me an email (akrherz@iastate.edu) or give me a call (515.294.5978).  Good luck!\n</p>\n</sect1>\n\n</sect>\n\n</article>\n"
  },
  {
    "path": "htdocs/docs/radmapserver/howto.txt",
    "content": "  Mapserver + NEXRAD Composite HOWTO\n  Daryl Herzmann\n\n\n  This HOWTO explains how to create \"unprojected\" geo-referenced NEXRAD\n  imagery ready for use within GIS.  As an example,  Mapserver\n  <http://mapserver.gis.umn.edu> is used to illustrate web mapping with\n  this raster file.  Updated on 28 Jul 2004 with various fixes to make\n  the document current.\n  ______________________________________________________________________\n\n  Table of Contents\n\n\n  1. Introduction\n     1.1 411 on abbreviations\n     1.2 Reading this HOWTO\n     1.3 The Quick and Dirty version\n     1.4 Links\n\n  2. Requirements\n     2.1 Software and Data Access\n     2.2 Hardware\n     2.3 System Environment\n\n  3. Building the composites with GEMPAK\n     3.1 Building nex2img\n     3.2 Scripting the generation of the composite\n     3.3 Geo-referencing the composite image\n        3.3.1 Naming the world file\n     3.4 Lets pause for a second\n\n  4. Building Proj.4 & Mapserver\n     4.1 Building Proj.4\n     4.2 Building Mapserver\n     4.3 Lets pause again!\n\n  5. Building your Web Mapping Application\n     5.1 Getting Started\n     5.2 The Mapserver .map file\n\n  6. GIS-Ready! NEXRAD information\n     6.1 Iowa Environmental Mesonet\n        6.1.1 Scripting an automated download\n\n  7. Conclusions\n     7.1 Future Work\n     7.2 Contact info\n\n\n  ______________________________________________________________________\n\n  \u001b[1m1.  Introduction\u001b[0m\n\n  Almost every weather website on the Internet has some sort of NEXRAD\n  data display <http://www.nws.noaa.gov/radar_tab.html>. Unfortunately\n  almost all of these sites are only fulfilling a single purpose,\n  allowing the user to view an image.  Geographical Information Systems\n  (GIS) goes beyond this single purpose model to allow the user to view\n  the image, but then also process it within a GIS system.  Processing\n  could involve working with the RASTER data, reprojecting the image,\n  querying the image, or many other things.\n\n  This HOWTO covers a mechanism to produce geo-referenced NEXRAD imagery\n  from GEMPAK\n  <http://my.unidata.ucar.edu/content/software/gempak/index.html>. As a\n  GIS web mapping example, we use Mapserver\n  <http://mapserver.gis.umn.edu> to create a simple, but powerfull web\n  application. This HOWTO assumes that you are running a modern version\n  of Linux.  Other UNIXs with GNU software <http://www.gnu.org>\n  installed should work as well.\n\n  This HOWTO is geared for those in the UNIDATA community\n  <http://my.unidata.ucar.edu> with an active Internet Data Distribution\n  <http://my.unidata.ucar.edu/content/software/idd/index.html> feed and\n  already have GEMPAK installed.  If you don't have either of these, you\n  will probably just be interested in the Mapserver sections.  The\n  \u001b[4mradmapserver-files.tar.gz\u001b[24m contains an example RADAR image ready for\n  use with Mapserver or any other raster supporting GIS.\n\n  \u001b[1m1.1.  411 on abbreviations\u001b[0m\n\n  Some of the abbreviations used in this HOWTO.\n\n  IEM       Iowa Environmental Mesonet\n  UNIDATA   University meteorological research group\n  NEXRAD    Network of Next Generation (WSR-88D) RADAR used by the National Weather Service\n  NWS       National Weather Service\n  GEMPAK    General Meteorological Application Package. Useful for dealing with NWS produced formats\n\n\n                              Abbreviations\n\n  \u001b[1m1.2.  Reading this HOWTO\u001b[0m\n\n  Some of you reading this may have no interest in generating the\n  composites, but wish to use the composites.  Currently, I am not aware\n  of a group generating this data source for free.  I have started\n  generating a national base composite reflectivity as a proof of\n  concept.\n\n  \u001b[1m1.3.  The Quick and Dirty version\u001b[0m\n\n  The files used in this howto are available here:\n  <https://mesonet.agron.iastate.edu/docs/radmapserver/radmapserver-\n  files.tar.gz>.\n\n\n  +\bo  Download and install Proj.4 from\n     <http://www.remotesensing.org/proj/> .\n\n  +\bo  Download and compile Mapserver with proj, TIFF and PNG support from\n     <http://mapserver.gis.umn.edu>  . Place the resulting 'mapserv'\n     binary in your webserver's CGI-BIN directory.\n\n  +\bo  Extract the \u001b[4mradmapserver-files.tar.gz\u001b[24m archive into your web root.\n\n  +\bo  Point your browser at  <http://your.host.name/cgi-\n     bin/mapserv?map=/var/www/htdocs/radmapserver/radmapserver.map&layers=states>\n     .\n\n  \u001b[1m1.4.  Links\u001b[0m\n\n\n  +\bo  UNIDATA <http://my.unidata.ucar.edu>\n\n  +\bo  Mapserver <http://mapserver.gis.umn.edu>\n\n     +\bo  Mapserver Docs <http://mapserver.gis.umn.edu/docs/>\n\n     +\bo  Mapserver WIKI <http://mapserver.gis.umn.edu/cgi-bin/wiki.pl>\n\n  \u001b[1m2.  Requirements\u001b[0m\n\n  \u001b[1m2.1.  Software and Data Access\u001b[0m\n\n  The following items must be installed and configured before any of\n  this HOWTO could potentially work for you.  Describing the\n  installation of any of these packages is beyond the scope of this\n  document.\n\n  +\bo  You should be using the Linux operating system, but there is no\n     reason this won't work on Solaris or a BSD variant.\n\n  +\bo  GEMPAK, for converting the NIDS file format into RASTER\n\n  +\bo  Some mechanism for NIDS data access\n\n     +\bo  Realtime access via UNIDATA IDD using LDM\n\n     +\bo  Or FTP access to NIDS files via NOAA\n\n     +\bo  Or locally available NIDS files on your hard-drive.\n\n  +\bo  A webserver, which should be Apache.\n\n  +\bo  ImageMagick: used to \u001b[4mconvert\u001b[24m the GIF files to TIFF.\n\n  The following items will be installed during this howto.  The\n  installation of Proj.4 will require privileged access to your system.\n  The Mapserver components will require access to your webserver's CGI-\n  BIN directory.\n\n  +\bo  Proj.4\n\n  +\bo  Mapserver\n\n  +\bo  Simple Mapserver application\n\n  \u001b[1m2.2.  Hardware\u001b[0m\n\n  Hardware requirements is a tricky topic.  I have seen 300 MHz machines\n  outperform 1 GHz machines when properly configured.  Common sense\n  applies here.  If you want to generate nationwide composites every 5\n  minutes, you will need a healthy machine.  If you are supporting a\n  small intranet, a modest machine will do.\n\n  For our purposes, Mapserver will not introduce a performance\n  bottleneck on your system.  It is extremely fast and robust!  Any\n  slowness typically comes when you start reprojecting massive raster\n  layers, but we aren't going to do that!\n\n  \u001b[1m2.3.  System Environment\u001b[0m\n\n  You are going to need root privileges on your system.  So either know\n  your root password or be very kind to the system administrator! We\n  will be installing Proj.4 into /usr/local, which is a standard place\n  to put 3rd party software.  Mapserver will be installed into the cgi-\n  bin directory of your webserver.\n\n  \u001b[1m3.  Building the composites with GEMPAK\u001b[0m\n\n  Probably the easiest component of this HOWTO is building the composite\n  image within GEMPAK!  If you are running a version of GEMPAK before\n  5.6.j, you will need to download and install the nex2img program.  If\n  you already have nex2img, then you can skip the next subsection.\n\n\n  GEMPAK is publicly available from the UNIDATA website\n  <http://my.unidata.ucar.edu/content/software/gempak/index.html>.\n  Installing GEMPAK is way outside the scope of this HOWTO.\n\n  Nex2img was written by Steve Chiswell at the UNIDATA Program Center.\n  His program is the key to making this whole system work.  Before\n  nex2img, it was extremely tricky to get the geo-referencing of\n  RASTERs, produced in GEMPAK, correct for use within GIS.\n\n  \u001b[1m3.1.  Building nex2img\u001b[0m\n\n  Building nex2img is very straightforward with GEMPAK already\n  installed.\n\n\n       ______________________________________________________________________\n       $ cd $NAWIPS\n       $ wget https://mesonet.agron.iastate.edu/docs/radmapserver/nex2img.tar.gz\n       $ tar -zxvf nex2img.tar.gz\n       $ cd unidata/programs/nex2img\n       $ make clean\n       $ make all\n       $ make install\n       $ make clean\n       $ rehash\n       $ which nex2img\n       ______________________________________________________________________\n\n\n\n  With the nex2img program built, you are now ready to generate the\n  composites.\n\n  \u001b[1m3.2.  Scripting the generation of the composite\u001b[0m\n\n  This simple script will crank out an image.  I am specifying a GRDAREA\n  for Iowa and extended. You will want to modify for your own needs.\n  Keep in mind that this application composites individual site NEXRADs,\n  you can't build a nationwide composite without having all the\n  individual sites.\n\n\n\n  ______________________________________________________________________\n  #!/bin/csh\n\n  # Replace to fit your environment!\n  source /home/nawips/Gemenviron\n\n  set gtime=`date -u +'%y%m%d/%H%M'`\n\n  rm -f radar.gif radar.tif >& /dev/null\n\n  nex2img << EOF > nex2img.log\n   GRDAREA  = 37.00;-104.00;48.99;-87.01\n   PROJ     = CED\n   KXKY     = 1700;1200\n   CPYFIL   =\n   GFUNC    = n0r\n   RADTIM   = ${gtime}\n   RADDUR   = 15\n   RADFRQ   =\n   STNFIL   = nexrad.tbl\n   RADMODE  = P\n   RADFIL   = radar.gif\n   LUTFIL   = upc_rad24.tbl\n   list\n   run\n\n   exit\n  EOF\n\n  if (-e radar.gif) then\n    convert radar.gif radar.tif\n    cp radar.tif /var/www/htdocs/radmapserver/gisdata\n  endif\n  ______________________________________________________________________\n\n\n\n  The nex2img program will generate an image called \"radar.gif\".  In\n  order to work with most GIS systems, you will probably want to convert\n  this file to another format namely TIFF, but you can choose JPG or\n  PNG.  We then place the radar.tif file in the webserver directory for\n  later use by mapserver.\n\n  Without getting too long winded, lets discuss image formats.  The\n  easiest format for use within GIS is probably TIFF.  Although very\n  large, uncompressed tiff files are extremely fast within GIS.  The\n  reason is that the application can \"seek\" the file to only pull needed\n  data.  With compressed formats, an entire set of data needs to be\n  uncompressed and then processed.  Also, most people will probably try\n  loading the image in ESRI's ArcView.  ArcView likes TIFF files and has\n  built in support for them.\n\n  \u001b[1m3.3.  Geo-referencing the composite image\u001b[0m\n\n  Now that we have an image, we need to georeference it.  Georeferencing\n  of images is done with a world file.  A world file is simply a file\n  with 6 lines of meta data describing the navigation of an image.  The\n  format is for example:\n\n\n\n  ______________________________________________________________________\n  0.010 (size of pixel in x direction)\n  0.000000000000 (rotation term for row) *Typically zero\n  0.000000000000 (rotation term for column) *Typically zero\n  -0.010 (size of pixel in y direction)\n  -95.0000 (x coordinate of centre of upper left pixel in map units)\n  42.300 (y coordinate of centre of upper left pixel in map units)\n  ______________________________________________________________________\n\n\n\n  Note that the units of the geo-referencing are in the same units of\n  the projection.  Since we are in lat-lon space, the units are decimal\n  degrees.  If you were in UTM space, it would probably be meters.  For\n  the image generated from my example of nex2img, my world file would\n  look like\n\n\n       ______________________________________________________________________\n          0.01000\n          0.00000\n          0.00000\n         -0.01000\n       -104.00000\n         49.00000\n       ______________________________________________________________________\n\n\n\n  \u001b[1m3.3.1.  Naming the world file\u001b[0m\n\n  Depending on your GIS, the naming convention of your world file may be\n  different.  Many systems use a generic \u001b[4m.wld\u001b[24m to describe any world\n  file.  Others use variants on the image format nomenclature, for\n  instance, the world file for TIF formated files is \u001b[4m.tfw\u001b[24m and for PNG is\n  \u001b[4m.pngw\u001b[24m. For our purposes, we will use \u001b[4m.wld\u001b[24m.\n\n  \u001b[1m3.4.  Lets pause for a second\u001b[0m\n\n  If you have made it this far, you are probably wondering what to do\n  with the RASTER image with no political borders or other denotations\n  and this silly 6 line world file.  The next section shows an example\n  of taking this image and using the powerful Mapserver to produce a Web\n  Map application.  Trust me, this is not the only application of this\n  data.\n\n  \u001b[1m4.  Building Proj.4 & Mapserver\u001b[0m\n\n  Like many Open Source packages, Mapserver relies on external libraries\n  to handle much of the heavy lifting.  This is both a good thing and a\n  bad thing.  The good thing is that the Mapserver folks don't have to\n  program all the needed functionality, the bad thing is that you can\n  reach dependency-hell with this setup.  For our purposes, we will only\n  build with Proj.4 support, but you can rebuild mapserver later to link\n  with other libraries for more functionality.\n\n  \u001b[1m4.1.  Building Proj.4\u001b[0m\n\n  Proj.4 <http://www.remotesensing.org/proj/> provides projection and\n  reprojection support for Mapserver.  Building and installing is\n  hopefully simple, if you have ever built an open source package\n  before.  Make sure that /usr/local/lib is included in /etc/ld.so.conf,\n  so that Mapserver can link to that library without special\n  configuration.\n       ______________________________________________________________________\n       $ wget ftp://ftp.remotesensing.org/pub/proj/proj-4.4.8.tar.gz\n       $ tar -zxvf proj-4.4.8.tar.gz\n       $ cd proj-4.4.8\n       $ ./configure; make\n       $ su -l\n       # make install   #(as root, to install in /usr/local!)\n       # /sbin/ldconfig\n       # exit\n       $ make clean\n       ______________________________________________________________________\n\n\n\n  If everything went well, you should notice a libproj in /usr/local/lib\n  that mapserver can link to.\n\n  \u001b[1m4.2.  Building Mapserver\u001b[0m\n\n  As I write this (28 Jul 2004), Mapserver is at version 4.2.1 .  It is\n  preferable that you be running this version for this HOWTO, but it is\n  not required.  For our purposes, the only difference between the\n  current version 4.2.1 and the old 3.6.x versions is the 'OFFSITE'\n  keyword in the .map file.  In Mapserver 4.x, this is a RGB value and\n  in Mapserver 3.x, this is a color map index value.\n\n\n       ______________________________________________________________________\n       $ wget http://cvs.gis.umn.edu/dist/mapserver-4.2.1.tar.gz\n       $ tar -zxvf mapserver-4.2.1.tar.gz\n       $ cd mapserver-4.2.1\n       $ ./configure --with-proj --with-png\n       $ make\n       $ cp -i mapserv /var/www/cgi-bin/mapserv\n       ______________________________________________________________________\n\n\n\n  Now, if the build process worked, you should have a binary called\n  'mapserv' if your current working directory.  Verify that the mapserv\n  binary is okay by executing\n\n\n       ______________________________________________________________________\n       $ ./mapserv -v\n       ______________________________________________________________________\n\n\n\n  This command will spit out the capabilities of Mapserver.  For this\n  demo, we need support for SHAPEFILES and the TIFF file format.  The\n  output from the above command should contain \u001b[4mOUTPUT=PNG\u001b[24m \u001b[4mINPUT=TIFF\u001b[0m\n  \u001b[4mINPUT=SHAPEFILE\u001b[24m.\n\n  \u001b[1m4.3.  Lets pause again!\u001b[0m\n\n  If you got this far with these instructions, you are much smarter than\n  I am.  Since I couldn't even get this to work following my own\n  instructions.  Anyway, we now have a CGI application that we can\n  install on our webserver and begin building a web mapping application!\n  Yeah!\n\n\n  \u001b[1m5.  Building your Web Mapping Application\u001b[0m\n\n  \u001b[1m5.1.  Getting Started\u001b[0m\n\n  It is somewhat hard to keep this generic, when everyone does things\n  differently.  I will assume a base RPM install of apache on Red Hat\n  Linux.  If your environment is different, you should know how it is\n  different!\n\n  Assuming that your web directory root is \u001b[4m/var/www/htdocs\u001b[24m and that your\n  CGI-BIN directory is \u001b[4m/var/www/cgi-bin\u001b[24m, you will want to issue the\n  following commands as a privileged user to these directories.\n\n\n       ______________________________________________________________________\n       $ cd /tmp\n       $ wget https://mesonet.agron.iastate.edu/docs/radmapserver/radmapserver-files.tar.gz\n       $ cd /var/www/htdocs\n       $ mkdir mstmp\n       $ chown apache mstmp\n       $ tar -xzvf /tmp/radmapserver-files.tar.gz\n       ______________________________________________________________________\n\n\n\n  The mstmp directory is needed by mapserver to write temporary files\n  to.  The radmapserver directory is where we will build our application\n  interface at.\n\n  \u001b[1m5.2.  The Mapserver .map file\u001b[0m\n\n  Fundamental to the Mapserver application, is a .map configuration\n  file.  For our demo, we will build a simple map file called\n  radmapserver.map in our \u001b[4m/var/www/htdocs/radmapserver\u001b[24m directory.  The\n  file is as follows.\n\n\n\n  ______________________________________________________________________\n  # Start of Mapfile (radmapserver.map)\n  NAME radmapserver\n  STATUS ON\n  SIZE 450 350\n  EXTENT -104 37 -87 49\n  UNITS DD\n  IMAGETYPE PNG\n\n  # Map projection definition\n  PROJECTION\n    \"proj=epsg:4326\"\n  END\n\n\n  # Map interface definition\n  WEB\n    LOG \"/var/www/htdocs/mstmp/radmapserver.log\"\n    TEMPLATE radmapserver.html\n    IMAGEPATH \"/var/www/htdocs/mstmp/\"\n    IMAGEURL \"/mstmp/\"\n  END\n\n  # Our Geo-referenced RADAR layer\n  LAYER\n    TYPE RASTER\n    STATUS ON\n    NAME radar\n    DATA \"/var/www/htdocs/radmapserver/gisdata/radar.tif\"\n    PROJECTION\n     \"proj=epsg:4326\"\n    END\n    # For Mapserver 3.x, we would use\n    # OFFSITE 0\n    OFFSITE 0 0 0\n  END\n\n  # Our states shapefile, just to get some political boundaries\n  LAYER\n    TYPE POLYGON\n    STATUS ON\n    NAME states\n    DATA \"/var/www/htdocs/radmapserver/gisdata/states.shp\"\n    PROJECTION\n      \"proj=epsg:4326\"\n    END\n    CLASS\n      OUTLINECOLOR 255 0 0\n    END\n  END\n\n  END # End of mapfile radmapserver.map\n  ______________________________________________________________________\n\n\n\n  In the Web definition of our mapfile, we referenced a file called\n  \u001b[4mradmapserver.html\u001b[24m.  This file is a HTML template mapserver uses to\n  generate an interface.  Our example radmapserver.html file is as\n  follows.\n\n\n\n  ______________________________________________________________________\n  <html>\n  <head>\n    <title>RadMapserver Test</title>\n  </head>\n\n  <form method=\"GET\" action=\"/cgi-bin/mapserv\" name=\"mapserv\">\n  <input type=\"hidden\" value=\"[mapext]\" name=\"imgext\">\n  <!-- imgxy is set to half of your display image size -->\n  <input type=\"hidden\" value=\"225 175\" name=\"imgxy\">\n  <input type=\"hidden\" value=\"[map]\" name=\"map\">\n  <input type=\"hidden\" value=\"browse\" name=\"mode\">\n\n  <table border=\"1\">\n  <tr><td>\n\n  <input name=\"img\" type=\"image\" src=\"[img]\" border=\"0\">\n\n  </td><td>\n\n  <p> <b> Select layers to display </b>\n  <br><input type=\"checkbox\" value=\"radar\" name=\"layer\" [radar_check] > RADAR layer\n  <br><input type=\"checkbox\" value=\"states\" name=\"layer\" [states_check] > States layer\n\n  <p>  Set your zoom option:\n  <br>\n  <select name=\"zoom\" size=\"1\">\n    <option value=\"4\" [zoom_4_select]> Zoom in 4 times\n    <option value=\"3\" [zoom_3_select]> Zoom in 3 times\n    <option value=\"2\" [zoom_2_select]> Zoom in 2 times\n    <option value=\"1\" [zoom_1_select]> Recenter Map\n    <option value=\"-2\" [zoom_-2_select]> Zoom out 2 times\n    <option value=\"-3\" [zoom_-3_select]> Zoom out 3 times\n    <option value=\"-4\" [zoom_-4_select]> Zoom out 4 times\n  </select>\n\n  <p>\n  <input type=\"submit\" value=\"Make Map!\">\n  <form>\n  </td></tr></table>\n\n  <html>\n  ______________________________________________________________________\n\n\n\n  Believe it or not, we are ready to rock and roll!  Get your favorite\n  Open Source web browser loaded up and point it at your website with\n  the following URL\n\n  ______________________________________________________________________\n  http://your.web.site/cgi-bin/mapserv?map=/var/www/htdocs/radmapserver/radmapserver.map&layers=states\n  ______________________________________________________________________\n\n\n\n  \u001b[1m6.  GIS-Ready! NEXRAD information\u001b[0m\n\n  This section contains links to folks already generating GIS-Ready\n  products from NEXRAD data.\n\n  \u001b[1m6.1.  Iowa Environmental Mesonet\u001b[0m\n\n  The IEM is generating a nationwide composite of base reflectivity\n  every 5 minutes.  This product is available in this directory:\n  ______________________________________________________________________\n  https://mesonet.agron.iastate.edu/data/gis/images/unproj/USCOMP/\n  ______________________________________________________________________\n\n\n  The IEM is generating a PNG and TIFF formatted image.  There is also a\n  compressed TIFF image available in that directory as well.  The file\n  prefix \u001b[4mn0r_0\u001b[24m contains the current data.\n\n  \u001b[1m6.1.1.  Scripting an automated download\u001b[0m\n\n  Here is an example script which would allow you to automatically\n  download files from the IEM website and then save them to a local\n  directory\n\n\n       ______________________________________________________________________\n       #!/bin/csh\n\n       set DATADIR=\"/set/me/to/something\"\n\n       cd /tmp\n\n       wget -q https://mesonet.agron.iastate.edu/data/gis/images/unproj/USCOMP/n0r_0.tif.Z\n       uncompress n0r_0.tif.Z\n\n       cd ${DATADIR}\n\n       foreach i (9 8 7 6 5 4 3 2 1 0)\n         cp -f n0r_${num}.tif n0r_`echo ${num} + 1 | bc`.tif\n       end\n\n       mv /tmp/n0r_0.tif n0r_0.tif\n\n       exit\n       ______________________________________________________________________\n\n\n\n  \u001b[1m7.  Conclusions\u001b[0m\n\n  This HOWTO demonstrated a very primitive component of GIS, web\n  mapping.  There is just so much more that can be done.  For those of\n  you familiar with PHP, Mapserver has an outstanding PHP interface to\n  the Mapserver API.  You can create some of the neatest applications\n  using the Mapserver API and the power of PHP.  The Iowa Environmental\n  Mesonet has implemented most of its Mapserver interfaces using the PHP\n  mapscript module.  The source code for these applications is licensed\n  under the GPL, but I just don't place the code on the website to\n  download.  Just email me if you would like a copy...\n\n  \u001b[1m7.1.  Future Work\u001b[0m\n\n  I would suspect that most people will not have the ability to generate\n  nationwide NEXRAD composites.  One of the neat things Mapserver can do\n  is act as a Web Map Service (WMS) server and client.  Potentially a\n  WMS server could be set up somewhere on the Internet and then your\n  mapserver could make a remote WMS call to it get the image.\n\n  Another option, will be for either UNIDATA, the IEM, or somebody else\n  to generate the nationwide composite (in 'unprojected' coordinates)\n  and make that available on the IDD.  This is probably the easiest way\n  to get this data to the community.\n\n\n  Although never covered in this HOWTO, timestamps are a big issue with\n  this system.  I have built hacks using DBF files in order to get\n  timestamps on the generated images.  Here is an example of output\n  using this 'hack'.  At some point, I will add this hack to the HOWTO.\n\n       <https://mesonet.agron.iastate.edu/data/mwcomp.png>\n\n\n  \u001b[1m7.2.  Contact info\u001b[0m\n\n  If you have questions, shoot me an email (akrherz@iastate.edu) or give\n  me a call (515.294.5978).  Good luck!\n\n\n\n"
  },
  {
    "path": "htdocs/docs/radmapserver/index.phtml",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->title = \"RadMapserver Docs\";\n\n$t->content = <<<EOM\n<h3>NEXRAD Composite + Mapserver Documentation</h3>\n\n<div class=\"text\">\n<p>This page hopefully explains how to produce a geo-referenced NEXRAD composite\nimage within GEMPAK. We then use Mapserver, as an example of how to create a \nGIS web mapping application.</p>\n\n<table width=\"100%\"><tr><td>\n\n<h3 class=\"subtitle\">The HOWTO:</h3>\nThe HOWTO is available in various formats.\n<ul>\n  <li><a href=\"howto.html\">On-Line, HTML</a></li>\n  <li><a href=\"howto.sgml\">Linux-Doc SGML</a></li>\n  <li><a href=\"howto.txt\">Plain Text</a></li>\n</ul>\n\n<h3>Links:</h3>\nLinks to resources you may find useful.\n<ul>\n  <li>Mapserver (<a href=\"http://mapserver.org\">http://mapserver.org</a>)</li>\n</ul>\n\n<h3>Files:</h3>\nLinks to files referenced in this HOWTO:\n<ul>\n  <li><a href=\"radmapserver-files.tar.gz\">radmapserver-files.tar.gz</a></li>\n  <ul>\n    <li><a href=\"/radmapserver/radmapserver.map\">radmapserver.map file</a></li>\n    <li><a href=\"/radmapserver/radmapserver.html\">radmapserver.html template file</a></li>\n    <li><a href=\"/radmapserver/gisdata/radar.tif\">Sample TIFF RADAR file</a></li>\n    <li><a href=\"/radmapserver/gisdata/radar.wld\">Sample world file for RADAR TIFF</a></li>\n    <li><a href=\"states.zip\">Upper midwest states shapefile</a></li>\n  </ul>\n  <li><a href=\"nex2img.tar.gz\">nex2img</a> program for GEMPAK</li>\n</ul>\n\n</td><td valign=\"TOP\">\n\n<h3>Real-time Data:</h3>\n<li>US Composite <a href=\"/data/gis/images/unproj/USCOMP/\">Base Reflectivity</a>\n<br>(<i>Generated every 5 minutes</i>)<p>\n\n<h3>IEM RADAR Applications:</h3>\n<li><a href=\"/GIS/apps/rview/warnings.phtml\">Nationwide Warnings & Loops</a></li>\n<li><a href=\"/current/mcview.phtml\">Current &\nArchived Iowa Composite Loops</a></li><p>\n\n<h3>HOWTO Online Demo:</h3>\n<li>Here is the working demo: <a\nhref=\"/cgi-bin/mapserv/mapserv?map=/opt/iem/htdocs/radmapserver/radmapserver.map&layers=states\">demo</a>.</li><p>\n\n<h3>News:</h3>\n<ul>\n\t\t<li><strong>11 Apr 2016:</strong> corrected some URIs</li>\n<li><b>28 Jul 2004:</b> Updated for Mapserver 4.x support.  URL fixes.</li>\n<li><b>28 Jul 2003:</b> Release the nationwide composite.</li>\n<li><b>25 Jul 2003:</b> Initial release for review.</li>\n</ul>\n\t\t\n</td></tr></table></div>\nEOM;\n$t->render('single.phtml');\n?>\n"
  },
  {
    "path": "htdocs/docs/unidata2006/index.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Unidata Equipment Grant Report\";\n$t->content = <<<EOM\n\n<div style=\"text-align: center; width: 800px;\">\n<h3>Increasing GIS Web Services Capacity to Serve The Unidata Community.</h3>\nWilliam Gallus Jr\n<br />Daryl Herzmann\n</div>\n\n<p>The recent few years have seen an explosion with the need and use of \nenvironmental data provided via web services and standard formats to \nGeographic Information Systems (GIS).  Unidata has been a pioneer in \ndeveloping software and stimulating its community to meet this growing \nneed.  To that end, the <a href=\"http://www.unidata.ucar.edu/community/equipaward/\">Unidata Equipment Grants program</a> provided funding \nto the <a href=\"https://mesonet.agron.iastate.edu\">Iowa Environmental Mesonet</a> (IEM) of <a href=\"http://www.iastate.edu\">Iowa State University</a> to \nincrease its capacity to serve Unidata provided datasets to the expanding GIS user base within the Unidata Community.\n\n<h4>Hardware Purchased</h4>\n\n<div style=\"float: right; border: 2px solid #000; margin: 5px;\">\n<img src=\"webfarm.png\">\n<br />Figure 1: IEM server configuration\n</div>\n\n<p>Using funds provided by the Unidata Equipment Grant and supplemental local \nfunds, the IEM was able to build a mostly fault tolerant and scalable \ninfrastructure to support the mass dissemination of GIS products and web \nservices.  Specifically, two powerful Dell servers (PowerEdge 2850) along \nwith nearly 1 terabyte of fast disk space were purchased with the Unidata \ngrant.  After some bureaucratic fun, these systems were placed in \nproduction on November 29, 2005.\n\n<p>These new servers were configured as participants in a <a href=\"http://www.linuxvirtualserver.org/\">Linux Virtual \nServer</a> (LVS) cluster.  Figure 1 shows the current topology of the cluster \nwith the Unidata grant providing the \"LDM Processor\" and \"Spatial \nDatabase\" components.  A LVS cluster provides a software based solution to \ndo high availability and load balanced computing.  Two \"director\" nodes \ncreate a redundant virtual presence providing services by brokering \ntraffic between external clients and cluster internal services.  These \nservices include a Local Data Manager (LDM) instance, Spatial database, and web \nservers.\n\n<p style=\"clear: both;\"><h4>Delivering Unidata datasets to GIS</h4>\n\n<p>The project proposal outlined a number of Unidata provided datasets that \nwould be made accessible via web services and GIS formats.  During the past year, \nsome of these datasets are now being provided in GIS formats/services by \ninstitutions such as the National Weather Service (NWS).  The NWS should \nbe commended for efforts such as their <a href=\"http://radar.weather.gov/ridge/\">RIDGE RADAR</a> data display system and \nthe <a href=\"http://www.srh.noaa.gov/rfcshare/precip_analysis_new.php\">Precipitation Analysis</a> website which provides the GIS community with \noperationally supported datasets.\n\n<p>Thanks to the Unidata grant, the IEM is now providing these services and \ndata files for the communities use.\n\n<ol>\n<li>CONUS NEXRAD base reflectivity composites\n   <br /><i>Availability:</i> LDM/IDD, <a href=\"https://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi?\">OGC WMS-T</a>, <a href=\"https://mesonet.agron.iastate.edu/data/gis/images/4326/USCOMP/\">HTTP GeoTiff</a>\n   <br /><i>Notes:</i> This dataset is by far the most requested and the most\n    widely used dataset the IEM provides.  It is produced by using the <a href=\"http://www.unidata.ucar.edu/software/gempak/help_and_documentation/manual/programs/chap4.php?prog=nex2img\">'nex2img'</a>\n    <a href=\"http://www.unidata.ucar.edu/software/gempak/\">GEMPAK</a> program written by the Unidata Program Center.  Nationwide ~1 km \n    resolution products are generated every 5 minutes.  The equipment grant\n    allowed the IEM to provide a <a href=\"http://www.opengeospatial.org/standards/wms\">Web Map Service</a> (WMS) that supports the time\n    specification (WMS-T).  This feature exposes our entire 5 minute interval \n    archive dating back to 2003 to WMS-T aware GIS clients!\n</li>\n\n<li>NWS watch/warning products\n   <br /><i>Availability:</i> LDM/IDD, <a href=\"https://mesonet.agron.iastate.edu/wfs/ww.php?\">OGC WFS</a>, <a href=\"https://mesonet.agron.iastate.edu/data/gis/shape/4326/us/current_ww.zip\">HTTP Shapefile</a>, <a href=\"https://mesonet.agron.iastate.edu/projects/iembot/\">XMPP Jabber</a>\n   <br /><i>Notes:</i> Utilizing the robust and extremely fast LDM/IDD \n    infrastructure provided by Unidata, the IEM wrote a number of decoders\n    to ingest various NWS issued products into a spatial database (PostGIS).\n    This software will be eventually released to the Unidata community\n    under an Open Source license.  Organizations interested in beta-testing\n    this software should contact Daryl Herzmann.\n</li> \n\n<li>GOES satellite composites\n   <br /><i>Availability:</i> <a href=\"https://mesonet.agron.iastate.edu/ogc/\">OGC WMS</a>, <a href=\"https://mesonet.agron.iastate.edu/data/gis/images/4326/goes/\">HTTP GeoTiff</a>\n   <br /><i>Notes:</i> GOES East and West, IR and VIS imagery is available.  CONUS composites are also generated using a <a href=\"http://www.gdal.org\">GDAL</a> utility.  An archive of these products will be exposed via a WMS-T instance later this summer.\n</li>\n\n<li>\"Stage 4\" NWS precipitation estimates\n  <br /><i>Availability:</i> <a href=\"http://www.srh.noaa.gov/rfcshare/precip_analysis_new.php\">NWS Precipitation Analysis</a> \n  <br /><i>Notes:</i> The NWS has provided this wonderful service, so there was\n   no need for the IEM to duplicate this effort.  In the near future, the IEM\n   will provide OGC WMS, WFS, and WCS services of this dataset.\n</li>\n\n</ol>\n\n<p>Here is an example interface utilizing the WMS-T NEXRAD service.  The interface \ncode is a part of the <a href=\"http://www.openlayers.org/\">OpenLayers</a>\ntoolkit.  The default time display shows Hurricane Katrina making landfall.\n\n<p>\n<iframe src=\"wmst.html\" style=\"width: 550px; height: 450px;\"></iframe>\n\n<p><h4>Summary:</h4>\n\n<p>The Unidata equipment grant provided funding necessary to increase the \ncapacity of the IEM to provide datasets to the GIS community.  Since the\ninstallation, the IEM web farm is now handling 4 times the number of \nweb hits than when it was previously at full capacity last fall.  The infrastructure in\nplace should allow another 8 fold increase in internet traffic before more \nsubstantial resources would need to be purchased.\n\n<p>As always, the IEM continues to work with other members of the Unidata \ncommunity, NWS, and private/public sector to increase the use of these\nservices and adoption of similar technologies.  Please do not hesitate to contact <a href=\"https://mesonet.agron.iastate.edu/info/contacts.php\">Daryl Herzmann</a> if you have\nany questions or suggestions.\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/docs/unidata2006/wmst.html",
    "content": "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <style type=\"text/css\">\n        #map {\n            width: 512px;\n            height: 400px;\n            border: 1px solid black;\n        }\n    </style>\n    <script src=\"https://openlayers.org/api/2.11/OpenLayers.js\"></script>\n    <script type=\"text/javascript\">\nvar map,ia_wms;\nvar image= new Image();\nvar image2= new Image();\nvar timeout_state=null;\n        function init(){\n            map = new OpenLayers.Map('map');\n\n            var ol_wms = new OpenLayers.Layer.WMS( \"OpenLayers WMS\",\n                    \"http://vmap0.tiles.osgeo.org/wms/vmap0?\", {layers: 'basic'} );\n\n                var jpl_wms = new OpenLayers.Layer.WMS( \"NASA Global Mosaic\",\n                    \"http://t1.hypercube.telascience.org/cgi-bin/landsat7\", \n                    {layers: \"landsat7\"});\n\n            ia_wms = new OpenLayers.Layer.WMS(\"Nexrad\",\n                \"https://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?\",\n                {layers:\"nexrad-n0r-wmst\",transparent:true,\n                    format:'image/png',\n                    time:document.getElementById('time').value});\n\n            jpl_wms.setVisibility(false);\n\n            map.addLayers([ol_wms, jpl_wms, ia_wms]);\n            map.addControl(new OpenLayers.Control.LayerSwitcher());\n            map.zoomToExtent(new OpenLayers.Bounds(-100.898437,22.148438,-78.398437,39.726563));\n        }\n    function pad(i){\n        if (i<10) i='0'+i;\n        return i;\n    }\n    function change_time(t,i){\n        var s=t.split('T');\n        var d=s[0].split('-');\n        var t=s[1].split(':');\n        var date=Date.UTC(d[0],parseInt(d[1]-1),parseInt(d[2]),parseInt(t[0]),parseInt(t[1]));\n        var nd=new Date(date+i*60*1000);\n        var nm=pad(nd.getUTCMonth()+1);\n        var ns=nd.getUTCFullYear()+'-'+nm+'-'+pad(nd.getUTCDate())+'T'+pad(nd.getUTCHours())+':'+pad(nd.getUTCMinutes());\n        return ns;\n    }\n    function increment_time(){\n        var ns=change_time(document.getElementById('time').value,document.getElementById('increment').value);\n        image.src=ia_wms.getFullRequestString({\"TIME\":ns})\n        image.onload=function (){\n            document.getElementById('time').value=ns;\n            ia_wms.mergeNewParams({\"time\":ns});\n        }\n    }\n    function decrement_time(){\n        var ns=change_time(document.getElementById('time').value,0-document.getElementById('increment').value);\n        image.src=ia_wms.getFullRequestString({\"TIME\":ns})\n        image.onload=function (){\n        document.getElementById('time').value=ns;\n        ia_wms.mergeNewParams({\"time\":ns});}\n    }\n    function animate ( ) {\n        increment_time();\n              timeout_state = setTimeout (animate, 3000 ) ;\n          }\n    function buttonCheck(){\n          if (document.getElementById('startstop').value==\"Start\"){\n                document.getElementById('startstop').value=\"Stop\";\n                animate();\n            } else {\n                document.getElementById('startstop').value=\"Start\";\n                clearTimeout ( timeout_state ) ;\n                timeout_state = null ;\n            }\n      }\n    </script>\n  </head>\n  <body onload=\"init()\">\n    <input type=\"button\" value=\"-\" onClick='decrement_time();'>\n    <input type='text' id='time'  value=\"2005-08-29T13:00\" onChange='ia_wms.mergeNewParams({\"time\":this.value});' >\n    <input type='text' id='increment'  value=\"15\" size=\"4\" >\n    <input type=\"button\" value=\"+\" onClick='increment_time();'>\n    <input type=\"button\" id=\"startstop\" value=\"Start\" onClick='buttonCheck();'>\n    <div id=\"map\"></div>\n  </body>\n</html>\n"
  },
  {
    "path": "htdocs/docs/unidata2021/index.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Unidata 2021 Equipment Award Report\";\n$t->content = <<<EOM\n\n<div style=\"text-align: center; width: 800px;\">\n<h3>Unidata 2021 Equipment Award Report</h3>\nRick Cruse\n<br />Daryl Herzmann\n</div>\n\n<p><a href=\"https://unidata.ucar.edu\">Unidata</a> is a community program \nout of UCAR that provides data and software tools to universities.\nThe program is funded by the National Science Foundation.</p>\n\n<p>Unidata offers a yearly competitive equipment grant award to encourge\nadoptation of their software tools and enhancements of data services offered\nto the community.  The IEM submitted a successful proposal for the \n<a href=\"https://www.unidata.ucar.edu/community/equipaward/index.html#2021\">2021 award</a>.\nThis page summarizes the status of deliverables outlined in the proposal.</p>\n\n<p>The proposal funded the purchase of a Dell R7525 server modelled after\nthe <a href=\"https://letsencrypt.org/2021/01/21/next-gen-database-servers.html\">specification used by LetsEncrypt</a>\nto increase database server capacity.  The server was purchased in early\nJuly 2021 with the following specs:</p>\n\n<ul>\n  <li>(x2) AMD EPYC 7302 3GHz,16C</li>\n  <li>256GB RAM</li>\n  <li>(x6) 1.8TB Mixed-use NVMe drives</li>\n  <li>(x2) 480GB SSD (OS Drives)</li>\n</ul>\n\n<p>The server was deployed by mid July with the intention of running\n<a href=\"https://zfsonlinux.org/\">ZFS</a> and PostgreSQL over the NVMe drives.\nWhile the performance of this combination was an order of magnitude better\nthan what the IEM had in place at the time, it was not as fast as using a more\nconventional approach of XFS over software RAID10.  Not to delve too deeply into\nthe technical reasons why, but the lack of\n<a href=\"https://github.com/openzfs/zfs/pull/10018\">ZFS Direct IO Support</a> seemed\nto be the main culprit.  Nevertheless, the server was put into production by the\nend of July 2021 and meet the proposal goals.</p>\n\n<h3>Goal: Increase the capacity for processing and delivering hydrological data</h3>\n\n<p>The IEM attempts a robust processing of SHEF formatted hydrological data provided\nby NOAA/NWS via Unidata's <a href=\"https://www.unidata.ucar.edu/projects/index.html#idd\">IDD</a>\ndata stream.  Prior to this grant, the\n<a href=\"https://mesonet.agron.iastate.edu/request/dcp/fe.phtml\">IEM download portal</a> had\nsome arcane throttles in place to prevent the server from being overwhelmed by\nrequests.  These throttles were removed and server successfully delivers\nthousands of requests per day.</p>\n\n<p>Related to this work, but not directly funded by this proposal, were software enhancements \nmade to the open source <a href=\"https://github.com/akrherz/pyIEM\">pyIEM</a> library\nto directly process SHEF encoded data.  Previously, a convoluted process of piping\nthe data to an ancient FORTRAN library called SHEFIT was used.  The new approach\nis faster, more robust, and includes a test suite to ensure the library is working\nas expected.</p>\n\n<h3>Goal: Increase capacity for serving data requested by Unidata's Siphon</h3>\n\n<p>Unidata's <a href=\"https://www.unidata.ucar.edu/software/siphon/\">Siphon</a> python\nlibrary allows users to easily access various internet data sources.  One of the\nsupported data sources is IEM's Upper Air\n<a href=\"https://mesonet.agron.iastate.edu/json/#RAOB+Soundings\">sounding archive</a>.\nThe server purchased allowed this server to perform much better and again, with\nout any throttles in place.</p>\n\n<h3>Goal: Increase web service capacity for serving data to the community</h3>\n\n<p>Unidata community members utilize a number of web services and tools provided by the IEM\nwebsite.  These include:\n<ul>\n <li><a href=\"https://mesonet.agron.iastate.edu/request/download.phtml\">ASOS/METAR download</a></li>\n <li><a href=\"https://mesonet.agron.iastate.edu/wx/afos/list.phtml\">NWS Text Product Archive</a></li>\n <li><a href=\"https://mesonet.agron.iastate.edu/request/gis/watchwarn.phtml\">NWS Watch/Warnings</a></li>\n <li><a href=\"https://mesonet.agron.iastate.edu/ogc/\">OGC GIS Services</a></li>\n</ul>\n</p>\n\n<p>The purchased server partially supports all of these within the IEM webfarm and\nhas improved the performance of each.  Addtionally, besides running a PostgreSQL\ndatabase server, this server also runs a python FastAPI server that provides\nthe <a href=\"https://mesonet.agron.iastate.edu/api/1/docs\">IEM API</a>.\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/explorer/index.css",
    "content": "\n/* Three-Column Layout Improvements */\n\n/* Main container and grid layout */\n.container-fluid {\n    padding: 0 15px;\n    max-width: 100vw;\n}\n\n.row.g-3 {\n    margin: 0;\n    --bs-gutter-x: 1rem;\n    --bs-gutter-y: 1rem;\n}\n\n/* Panel styling */\n.legend-panel,\n.map-panel,\n.quick-plots-panel {\n    background-color: #fff;\n    border: 1px solid #dee2e6;\n    border-radius: 0.5rem;\n    padding: 0.75rem;\n    height: 100%;\n    box-shadow: 0 2px 4px rgba(0,0,0,0.05);\n}\n\n.panel-title {\n    color: #495057;\n    font-weight: 600;\n    margin-bottom: 0.75rem;\n    padding-bottom: 0.375rem;\n    border-bottom: 2px solid #007bff;\n    font-size: 1rem;\n}\n\n#overviewmap {\n    width: 100%;\n    height: 200px;\n    border-radius: 0.375rem;\n    position: relative;       /* Ensure OL children position within container */\n    overflow: hidden;         /* Clip internal map within rounded corners */\n    box-shadow: 0 2px 4px rgba(0,0,0,0.05);\n}\n\n/* Ensure OpenLayers OverviewMap fills the target container */\n#overviewmap .ol-overviewmap,\n#overviewmap .ol-overviewmap-map,\n#overviewmap .ol-viewport,\n#overviewmap canvas {\n    width: 100% !important;\n    height: 100% !important;\n    max-width: 100% !important;\n}\n\n/* Left Sidebar: Legend and Overview Map */\n.legend-panel {\n    min-height: 750px;\n    display: flex;\n    flex-direction: column;\n    /* Allow vertical scrolling if needed, avoid horizontal overflow */\n    overflow-x: hidden;\n    overflow-y: auto;\n}\n\n.legend-controls {\n    margin-bottom: 1rem;\n    flex-shrink: 0; /* Don't shrink the controls */\n}\n\n.legend-controls .form-check {\n    margin-bottom: 0.5rem;\n    padding-left: 0;\n    display: flex;            /* Align checkbox and label horizontally */\n    align-items: center;\n    gap: 0.5rem;\n}\n\n.legend-controls .form-check-label {\n    display: flex;\n    align-items: center;\n    font-weight: 500;\n    cursor: pointer;\n    padding: 0.375rem 0.5rem;\n    border-radius: 0.375rem;\n    transition: background-color 0.2s ease;\n    font-size: 0.9rem;\n    flex: 1;                  /* Let label take remaining width */\n    white-space: normal;      /* Allow wrapping */\n    word-break: break-word;   /* Avoid overflow on long words */\n}\n\n.legend-controls .form-check-label:hover {\n    background-color: #f8f9fa;\n}\n\n.legend-controls .form-check-label img {\n    width: 20px;\n    height: 20px;\n    margin-right: 0.5rem;\n    object-fit: contain;\n    flex-shrink: 0;\n}\n\n.legend-controls .form-check-input {\n    margin-right: 0.5rem;\n    margin-top: 0;\n    flex-shrink: 0;\n    /* Override Bootstrap's negative margin/float that pushes input outside */\n    float: none;\n    margin-left: 0;\n    position: static;\n}\n\n/* Center: Main Map */\n.map-panel {\n    min-height: 750px;\n}\n\n/* Right Sidebar: Quick Access Plots */\n.quick-plots-panel {\n    min-height: 750px;\n    overflow-y: auto;\n}\n\n.plot-item {\n    margin-bottom: 1.5rem;\n    padding: 1rem;\n    border: 1px solid #e9ecef;\n    border-radius: 0.375rem;\n    background-color: #f8f9fa;\n    transition: all 0.2s ease;\n}\n\n.plot-item:hover {\n    background-color: #e9ecef;\n    transform: translateY(-2px);\n    box-shadow: 0 4px 8px rgba(0,0,0,0.1);\n}\n\n.plot-item h6 {\n    margin-bottom: 0.75rem;\n    font-weight: 600;\n    color: #495057;\n    font-size: 0.95rem;\n}\n\n.plot-item img {\n    width: 100%;\n    height: auto;\n    border-radius: 0.25rem;\n    cursor: pointer;\n    transition: transform 0.2s ease;\n}\n\n.plot-item img:hover {\n    transform: scale(1.02);\n}\n\n/* Visible focus style for keyboard navigation */\n.plot-item img:focus {\n    outline: 3px solid #0d6efd;\n    outline-offset: 2px;\n}\n\n/* OpenLayers Map Styling */\n\nh3.title {\n    color: #ff0;\n    font-weight: bolder;\n    font-size: 32px;\n    position: absolute;\n    top: -15px;\n    left: 150px;\n}\n\n#olmap {\n    width: 100%;\n    min-height: 600px;\n    height: 650px;\n    border-radius: 0.375rem;\n    overflow: hidden;\n}\n\n/* Update maprow for new layout */\n.maprow {\n    display: flex;\n    flex-direction: column;\n}\n\n\n/* Bootstrap 5 Modal Enhancements */\n.modal-dialog.modal-xl {\n    max-width: 90vw;\n}\n\n.modal.fade .modal-dialog {\n    transition: transform 0.3s ease-out;\n}\n\n/* Fix modal backdrop issues with multiple modals */\n.modal-backdrop.show {\n    opacity: 0.5;\n}\n\n/* Ensure modals don't interfere with each other */\n.modal {\n    --bs-modal-zindex: 1055;\n}\n\n.modal.show {\n    display: block !important;\n}\n\n/* Custom Modal Controls */\n.modal-header .btn-group {\n    margin-left: auto;\n    margin-right: 10px;\n}\n\n.modal-header .btn-group .btn {\n    padding: 0.25rem 0.5rem;\n    font-size: 0.875rem;\n    border-radius: 0.2rem;\n    min-width: 32px;\n    height: 32px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n}\n\n.modal-header .btn-group .btn:not(:last-child) {\n    margin-right: 5px;\n}\n\n/* Better button hover states */\n.modal-header .btn-outline-secondary:hover {\n    background-color: #6c757d;\n    border-color: #6c757d;\n    color: #fff;\n}\n\n/* Consistent styling for custom close button */\n.close-btn {\n    border: 1px solid #6c757d !important;\n    background-color: transparent !important;\n    color: #6c757d !important;\n}\n\n.close-btn:hover {\n    background-color: #dc3545 !important;\n    border-color: #dc3545 !important;\n    color: #fff !important;\n}\n\n/* Icons for minimize/maximize buttons (using Unicode symbols as fallback) */\n.minimize-btn span,\n.maximize-btn span,\n.close-btn span {\n    font-family: monospace;\n    font-size: 14px;\n    font-weight: bold;\n    line-height: 1;\n}\n\n/* Modal layout improvements */\n.modal-body.d-flex {\n    height: calc(80vh - 60px); /* Subtract header height */\n}\n\n.data-sidebar {\n    min-width: 250px;\n    max-width: 300px;\n    background-color: #f8f9fa;\n    border-right: 1px solid #dee2e6;\n    overflow-y: auto;\n}\n\n.data-sidebar h6 {\n    color: #495057;\n    font-weight: 600;\n    margin-bottom: 1rem;\n    padding-bottom: 0.5rem;\n    border-bottom: 1px solid #dee2e6;\n}\n\n.data-display-area {\n    flex: 1;\n    overflow: auto;\n    background-color: #fff;\n}\n\n/* Responsive modal layout */\n@media (max-width: 992px) {\n    .modal-body.d-flex {\n        flex-direction: column;\n        height: auto;\n        max-height: 80vh;\n    }\n    \n    .data-sidebar {\n        width: 100% !important;\n        max-width: none;\n        border-right: none;\n        border-bottom: 1px solid #dee2e6;\n        max-height: 200px;\n    }\n}\n\n/* Modal z-index management */\n.modal {\n    z-index: 2000 !important;\n}\n\n.modal-backdrop {\n    z-index: 1999 !important;\n}\n\n/* Ensure modal content doesn't overflow */\n.modal-body {\n    overflow: auto;\n    max-height: calc(100vh - 200px);\n}\n\n/* Chart container styling */\n.viz {\n    width: 100%;\n    height: 100%;\n    min-height: 400px;\n}\n\n/* Checkbox styling for Bootstrap 5 */\n.form-check {\n    margin-bottom: 0.5rem;\n}\n\n.form-check-input {\n    margin-right: 0.5rem;\n}\n\n.form-check-label {\n    display: flex;\n    align-items: center;\n    cursor: pointer;\n}\n\n.form-check-label img {\n    margin-right: 0.5rem;\n}\n\n/* QR Button */\n.qrbutton {\n    position: absolute;\n    top: 3px;\n    right: 3px;\n    z-index: 200;\n}\n\n/* Skip links: visually hidden until focused */\n.skip-link {\n    position: absolute;\n    left: -9999px;\n    top: auto;\n    width: 1px;\n    height: 1px;\n    overflow: hidden;\n}\n.skip-link:focus {\n    position: static;\n    width: auto;\n    height: auto;\n    padding: 0.5rem 1rem;\n    margin: 0.25rem;\n    background: #0d6efd;\n    color: #fff;\n    border-radius: 0.25rem;\n    z-index: 3000;\n}\n\n/* Popover styling */\n#popover {\n    background-color: rgba(0, 0, 0, 0.75);\n    color: #FFF;\n    padding: 8px 20px;\n    z-index: 1002;\n    border-radius: 4px;\n    max-width: 300px;\n}\n\n#popover span {\n    font-weight: bold;\n    font-size: 1.2em;\n    color: #ffd700;\n}\n\n/* Data display buttons */\n.ddisplay button {\n    margin: 3px;\n}\n\n/* Responsive adjustments */\n@media (max-width: 1200px) {\n    .legend-panel,\n    .map-panel,\n    .quick-plots-panel {\n        min-height: 650px;\n    }\n    \n    #olmap {\n        height: 550px;\n    }\n    \n}\n\n@media (max-width: 992px) {\n    .container-fluid {\n        padding: 0 10px;\n    }\n    \n    .legend-panel,\n    .map-panel {\n        min-height: 500px;\n    }\n    \n    .quick-plots-panel {\n        min-height: auto;\n        max-height: 600px;\n    }\n    \n    #olmap {\n        height: 450px;\n    }\n    \n    \n    .plot-item {\n        margin-bottom: 1rem;\n        padding: 0.75rem;\n    }\n    \n    .plot-item h6 {\n        font-size: 0.9rem;\n    }\n    \n    .legend-controls .form-check-label {\n        padding: 0.25rem 0.375rem;\n        font-size: 0.85rem;\n    }\n    \n    .legend-controls .form-check-label img {\n        width: 18px;\n        height: 18px;\n        margin-right: 0.375rem;\n    }\n}\n\n@media (max-width: 768px) {\n    .panel-title {\n        font-size: 1rem;\n        margin-bottom: 0.75rem;\n    }\n    \n    .legend-panel,\n    .map-panel,\n    .quick-plots-panel {\n        min-height: auto;\n        margin-bottom: 1rem;\n    }\n    \n    .legend-panel {\n        min-height: 400px;\n    }\n    \n    #olmap {\n        height: 400px;\n        min-height: 350px;\n    }\n    \n    \n    .legend-controls {\n        margin-bottom: 0.75rem;\n    }\n    \n    .legend-controls .form-check {\n        margin-bottom: 0.375rem;\n    }\n    \n    .legend-controls .form-check-label {\n        padding: 0.25rem 0.375rem;\n        font-size: 0.8rem;\n    }\n    \n    .legend-controls .form-check-label img {\n        width: 16px;\n        height: 16px;\n        margin-right: 0.375rem;\n    }\n    \n    .plot-item {\n        padding: 0.5rem;\n        margin-bottom: 0.75rem;\n    }\n    \n    .plot-item h6 {\n        margin-bottom: 0.5rem;\n        font-size: 0.85rem;\n    }\n    \n    .modal-dialog.modal-xl {\n        max-width: 95vw;\n        margin: 10px auto;\n    }\n}\n\n@media (max-width: 576px) {\n    .container-fluid {\n        padding: 0 5px;\n    }\n    \n    .row.g-3 {\n        --bs-gutter-x: 0.5rem;\n        --bs-gutter-y: 0.5rem;\n    }\n    \n    .legend-panel,\n    .map-panel,\n    .quick-plots-panel {\n        padding: 0.75rem;\n    }\n    \n    #olmap {\n        height: 350px;\n    }\n    \n    \n    .panel-title {\n        font-size: 0.95rem;\n        margin-bottom: 0.5rem;\n    }\n}\n\n/* Loading states */\n.modal-body.loading {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    min-height: 200px;\n}\n\n.modal-body.loading::after {\n    content: \"Loading...\";\n    color: #6c757d;\n}\n\n/* Improve button spacing in autoload sections */\n.autoload {\n    margin: 0.25rem 0;\n    padding: 0.5rem;\n    border: 1px solid #dee2e6;\n    border-radius: 0.375rem;\n    cursor: pointer;\n    transition: all 0.2s ease;\n    background-color: #fff;\n}\n\n.autoload:hover {\n    background-color: #f8f9fa;\n    border-color: #0d6efd;\n    transform: translateY(-1px);\n    box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.autoload.active {\n    background-color: #e7f3ff;\n    border-color: #0d6efd;\n    color: #0d6efd;\n    font-weight: 500;\n}\n\n/* Modal header button consistency */\n.modal-header .btn-group .btn {\n    border: 1px solid #6c757d;\n    background-color: transparent;\n    color: #6c757d;\n    padding: 0.25rem 0.5rem;\n    font-size: 0.875rem;\n    min-width: 2rem;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n\n.modal-header .btn-group .btn:hover {\n    background-color: #6c757d;\n    color: white;\n    border-color: #6c757d;\n}\n\n.modal-header .btn-group .btn:focus {\n    box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.25);\n}\n\n.modal-header .btn-group .btn span {\n    font-size: 1rem;\n    line-height: 1;\n}\n\n/* Ensure all three buttons look the same */\n.modal-header .btn-group .minimize-btn,\n.modal-header .btn-group .maximize-btn,\n.modal-header .btn-group .close-btn {\n    border: 1px solid #6c757d !important;\n    background-color: transparent !important;\n    color: #6c757d !important;\n}\n\n/* Style the data templates */\n.asos-data-template,\n.coop-data-template,\n.isusm-data-template {\n    display: none;\n    padding: 1rem;\n    border: 1px solid #dee2e6;\n    border-radius: 0.5rem;\n    background-color: #f8f9fa;\n    margin-top: 1rem;\n}\n\n/* Modal layout improvements */\n.modal-xl {\n    max-width: 90vw;\n}\n\n.modal-content {\n    height: 80vh;\n}\n\n.modal-body {\n    overflow: hidden;\n    height: calc(80vh - 60px); /* Account for header height */\n}\n\n.data-sidebar {\n    width: 280px;\n    min-width: 280px;\n    border-right: 1px solid #dee2e6;\n    background-color: #f8f9fa;\n    overflow-y: auto;\n    flex-shrink: 0;\n}\n\n.sidebar-content {\n    padding: 1rem;\n}\n\n.data-display-area {\n    flex: 1;\n    overflow: auto;\n    min-width: 0; /* Allow flexbox to shrink this area */\n}\n\n.data-display {\n    min-height: 200px;\n    padding: 1rem;\n    width: 100%;\n}\n\n/* Responsive modal adjustments */\n@media (max-width: 1200px) {\n    .data-sidebar {\n        width: 250px;\n        min-width: 250px;\n    }\n}\n\n@media (max-width: 992px) {\n    .modal-xl {\n        max-width: 95vw;\n    }\n    \n    .data-sidebar {\n        width: 200px;\n        min-width: 200px;\n    }\n    \n    .sidebar-content {\n        padding: 0.75rem;\n    }\n}\n\n@media (max-width: 768px) {\n    .modal-body {\n        flex-direction: column;\n    }\n    \n    .data-sidebar {\n        width: 100%;\n        min-width: unset;\n        max-height: 200px;\n        border-right: none;\n        border-bottom: 1px solid #dee2e6;\n    }\n    \n    .data-display-area {\n        flex: 1;\n        min-height: 300px;\n    }\n}\n\n/* Better form styling */\n.data-display select,\n.data-display input,\n.sidebar-content select,\n.sidebar-content input {\n    margin: 0.25rem;\n    padding: 0.5rem;\n    border: 1px solid #ced4da;\n    border-radius: 0.375rem;\n    width: calc(100% - 0.5rem);\n    box-sizing: border-box;\n}\n\n.data-display label,\n.sidebar-content label {\n    font-weight: 500;\n    margin-bottom: 0.25rem;\n    display: inline-block;\n}\n\n/* Chart and image improvements */\n.data-display img,\n.viz {\n    max-width: 100%;\n    height: auto;\n    display: block;\n    margin: 0 auto;\n}\n\n.viz {\n    min-height: 400px;\n    background-color: #fff;\n    border: 1px solid #dee2e6;\n    border-radius: 0.375rem;\n    margin-top: 1rem;\n}\n\n/* Button improvements in sidebar */\n.sidebar-content .btn {\n    width: 100%;\n    margin-bottom: 0.5rem;\n}\n\n.sidebar-content .autoload {\n    width: 100%;\n    text-align: left;\n}\n\n/* Loading spinner for charts */\n.chart-loading {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    height: 200px;\n    color: #6c757d;\n}\n\n.chart-loading::after {\n    content: \"\";\n    width: 20px;\n    height: 20px;\n    border: 2px solid #f3f3f3;\n    border-top: 2px solid #0d6efd;\n    border-radius: 50%;\n    animation: spin 1s linear infinite;\n    margin-right: 10px;\n}\n\n@keyframes spin {\n    0% { transform: rotate(0deg); }\n    100% { transform: rotate(360deg); }\n}"
  },
  {
    "path": "htdocs/explorer/index.js",
    "content": "/* global Highcharts, ol, bootstrap */\nlet epoch = 0;\nlet olMap = null;\nlet overviewMap = null;\nlet popup = null;\nlet stationLayer = null;\nlet dockPosition = 0;\n\n// Helper predicates to reduce complexity in style function\nfunction isAirportNetwork(network) {\n    return network.endsWith('ASOS');\n}\nfunction isISUSMNetwork(network) {\n    return network === 'ISUSM';\n}\nfunction isClimateDistrictSid(sid) {\n    return sid.length >= 3 && sid.charAt(2) === 'C';\n}\nfunction isStateSid(sid) {\n    return sid.length >= 6 && sid.substring(2, 6) === '0000';\n}\nfunction climateDistrictLabelFromSid(sid) {\n    const num = parseInt(sid.substring(3), 10);\n    return `${sid.substring(0, 2)}${Number.isFinite(num) ? num : ''}`;\n}\n\nconst airportStyle = new ol.style.Style({\n    zIndex: 99,\n    image: new ol.style.Icon({\n        src: 'img/airport.svg',\n        scale: [0.2, 0.2],\n    }),\n});\nairportStyle.enabled = true;\nconst isusmStyle = new ol.style.Style({\n    zIndex: 99,\n    image: new ol.style.Icon({\n        src: 'img/isu.svg',\n        scale: [0.2, 0.2],\n    }),\n});\nisusmStyle.enabled = true;\nconst climateStyle = new ol.style.Style({\n    zIndex: 100,\n    image: new ol.style.Circle({\n        fill: new ol.style.Fill({ color: '#00ff00' }),\n        stroke: new ol.style.Stroke({\n            color: '#008800',\n            width: 2.25,\n        }),\n        radius: 7,\n    }),\n});\nclimateStyle.enabled = true;\nconst climodistrictStyle = new ol.style.Style({\n    zIndex: 101,\n    text: new ol.style.Text({\n        text: '',\n        font: 'bold 14pt serif',\n        fill: new ol.style.Fill({\n            color: [255, 255, 255, 1],\n        }),\n        backgroundFill: new ol.style.Fill({\n            color: [0, 0, 255, 1],\n        }),\n        padding: [2, 2, 2, 2],\n    }),\n});\nclimodistrictStyle.enabled = true;\nconst stateStyle = new ol.style.Style({\n    zIndex: 102,\n    text: new ol.style.Text({\n        text: '',\n        font: 'bold 14pt serif',\n        fill: new ol.style.Fill({\n            color: [255, 255, 255, 1],\n        }),\n        backgroundFill: new ol.style.Fill({\n            color: [255, 0, 0, 1],\n        }),\n        padding: [2, 2, 2, 2],\n    }),\n});\nstateStyle.enabled = true;\n\nfunction make_iem_tms(title, layername, visible, type) {\n    return new ol.layer.Tile({\n        title,\n        visible,\n        type,\n        source: new ol.source.XYZ({\n            url: `/c/tile.py/1.0.0/${layername}/{z}/{x}/{y}.png`,\n        }),\n    });\n}\n\n/**\n * Replace HTML special characters with their entity equivalents\n * @param string val\n * @returns string converted string\n */\nfunction escapeHTML(val) {\n    return val\n        .replace(/&/g, '&amp;')\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/\"/g, '&quot;')\n        .replace(/'/g, '&#039;');\n}\n\nfunction mapClickHandler(event) {\n    const feature = olMap.forEachFeatureAtPixel(event.pixel, feature2 => {\n        return feature2;\n    });\n    if (feature === undefined) {\n        return;\n    }\n    // Station selected; window opens below\n    // Create new div to hold window content\n    const div = document.createElement('div');\n    div.classList.add('datadiv');\n    const station = feature.get('sid');\n    div.setAttribute('data-station', station);\n    const network = feature.get('network');\n    div.setAttribute('data-network', network);\n    div.setAttribute('title', `${station} ${feature.get('sname')}`);\n    // Treat ASOS as airport template\n    let prefix = network.endsWith('ASOS') ? 'asos' : 'coop';\n    prefix = network === 'ISUSM' ? 'isusm' : prefix;\n    // Rule: jQuery removal - replace template cloning with vanilla JS\n    const template = document.querySelector(`.${prefix}-data-template`);\n    const newdiv = template.cloneNode(true);\n    newdiv.style.display = 'block';\n    div.appendChild(newdiv);\n\n    // Update all anchor href attributes\n    const links = newdiv.querySelectorAll('a');\n    links.forEach(a => {\n        a.href = a.href.replaceAll('{station}', station).replaceAll('{network}', network);\n    });\n    newdiv.classList.remove(`${prefix}-data-template`);\n    const classID = `${station}_${epoch}`;\n    epoch += 1;\n    windowFactory(div, classID);\n}\n\nfunction stationLayerStyleFunc(feature) {\n    const network = feature.get('network') || '';\n    const sid = feature.get('sid') || '';\n\n    // Pipeline of rules to determine style; return first defined result\n    const rules = [\n        () =>\n            isAirportNetwork(network) ? (airportStyle.enabled ? airportStyle : null) : undefined,\n        () => (isISUSMNetwork(network) ? (isusmStyle.enabled ? isusmStyle : null) : undefined),\n        () =>\n            isClimateDistrictSid(sid)\n                ? (climodistrictStyle.getText().setText(climateDistrictLabelFromSid(sid)),\n                  climodistrictStyle.enabled ? climodistrictStyle : null)\n                : undefined,\n        () =>\n            isStateSid(sid)\n                ? (stateStyle.getText().setText(sid.substring(0, 2)),\n                  stateStyle.enabled ? stateStyle : null)\n                : undefined,\n        () => (climateStyle.enabled ? climateStyle : null),\n    ];\n    for (const rule of rules) {\n        const res = rule();\n        if (res !== undefined) {return res;}\n    }\n    return null;\n}\nfunction displayFeature(evt) {\n    const features = olMap.getFeaturesAtPixel(olMap.getEventPixel(evt.originalEvent));\n    if (features.length > 0) {\n        const feature = features[0];\n        popup.element.hidden = false;\n        popup.element.setAttribute('aria-hidden', 'false');\n        popup.setPosition(evt.coordinate);\n        // Rule: jQuery removal - replace simple HTML content update\n        document.getElementById('info-name').innerHTML =\n            `[${feature.get('sid')}] ${escapeHTML(feature.get('sname'))}`;\n    } else {\n        popup.element.hidden = true;\n        popup.element.setAttribute('aria-hidden', 'true');\n    }\n}\n\nfunction initMap() {\n    stationLayer = new ol.layer.Vector({\n        title: 'Stations',\n        source: new ol.source.Vector({\n            url: '/geojson/network.py?network=FPS',\n            format: new ol.format.GeoJSON(),\n        }),\n        style: stationLayerStyleFunc,\n    });\n    overviewMap = new ol.control.OverviewMap({\n        target: document.querySelector('#overviewmap'),\n        layers: [\n            new ol.layer.Tile({\n                title: 'OpenStreetMap',\n                visible: true,\n                type: 'base',\n                source: new ol.source.OSM(),\n            }),\n            make_iem_tms('US States', 'usstates', true, ''),\n        ],\n        collapseLabel: '\\u00BB',\n        collapsible: false,\n        label: '\\u00AB',\n        collapsed: false,\n    });\n    olMap = new ol.Map({\n        target: 'olmap',\n        controls: ol.control.defaults.defaults().extend([overviewMap]),\n        view: new ol.View({\n            enableRotation: false,\n            center: ol.proj.transform([-94.5, 42.1], 'EPSG:4326', 'EPSG:3857'),\n            zoom: 7,\n            maxZoom: 16,\n            minZoom: 6,\n        }),\n        layers: [\n            new ol.layer.Tile({\n                title: 'OpenStreetMap',\n                visible: true,\n                type: 'base',\n                source: new ol.source.OSM(),\n            }),\n            make_iem_tms('US States', 'usstates', true, ''),\n            make_iem_tms('US Counties', 'uscounties', false, ''),\n            stationLayer,\n        ],\n    });\n\n    const ls = new ol.control.LayerSwitcher();\n    olMap.addControl(ls);\n    olMap.on('click', mapClickHandler);\n    olMap.on('pointermove', evt => {\n        if (evt.dragging) {\n            return;\n        }\n        displayFeature(evt);\n    });\n    //  showing the position the user clicked\n    popup = new ol.Overlay({\n        element: document.getElementById('popover'),\n        offset: [7, 7],\n    });\n    // Initialize popover ARIA\n    const popEl = document.getElementById('popover');\n    if (popEl) {\n        popEl.setAttribute('role', 'tooltip');\n        popEl.setAttribute('aria-hidden', 'true');\n    }\n    olMap.addOverlay(popup);\n    // Label the main map region for screen readers\n    const olmapEl = document.getElementById('olmap');\n    if (olmapEl) {\n        olmapEl.setAttribute('role', 'region');\n        olmapEl.setAttribute(\n            'aria-label',\n            'Map of stations. Click a symbol to view available plots.'\n        );\n    }\n}\n\nfunction loadImage(elem) {\n    const div = document.createElement('div');\n    div.title = elem.title;\n    // Rule: jQuery removal - replace data attribute access\n    const tgt = elem.dataset.target;\n    const pp = document.createElement('p');\n    const ahref = document.createElement('a');\n    ahref.href = tgt;\n    ahref.target = '_blank';\n    ahref.text = 'IEM Website Link';\n    ahref.classList.add('btn');\n    ahref.classList.add('btn-secondary');\n    pp.appendChild(ahref);\n    div.appendChild(pp);\n    const img = document.createElement('img');\n    img.classList.add('img');\n    img.classList.add('img-fluid');\n    img.src = elem.src;\n    div.appendChild(img);\n\n    // Rule: jQuery removal - replace jQuery UI dialog with Bootstrap modal\n    const modalId = `modal-${Date.now()}`;\n    const modal = document.createElement('div');\n    modal.className = 'modal fade';\n    modal.id = modalId;\n    modal.setAttribute('tabindex', '-1');\n    modal.setAttribute('aria-hidden', 'true');\n    modal.setAttribute('aria-modal', 'true');\n    const titleId = `${modalId}-label`;\n    modal.setAttribute('aria-labelledby', titleId);\n\n    modal.innerHTML = `\n        <div class=\"modal-dialog modal-lg modal-dialog-centered\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header\">\n                    <h5 class=\"modal-title\" id=\"${titleId}\">${escapeHTML(div.title)}</h5>\n                    <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n                </div>\n                <div class=\"modal-body text-center\">\n                </div>\n            </div>\n        </div>\n    `;\n\n    // Add content to modal body\n    const modalBody = modal.querySelector('.modal-body');\n    modalBody.appendChild(div);\n\n    // Add modal to DOM\n\n    // Show modal using Bootstrap (with fallback)\n    let bootstrapModal = null;\n    if (typeof bootstrap !== 'undefined' && bootstrap?.Modal) {\n        bootstrapModal = new bootstrap.Modal(modal);\n        bootstrapModal.show();\n    } else {\n        // Fallback: show modal manually\n        modal.classList.add('show');\n        modal.style.display = 'block';\n        document.body.classList.add('modal-open');\n\n        // Create backdrop\n        const backdrop = document.createElement('div');\n        backdrop.className = 'modal-backdrop fade show';\n        document.body.appendChild(backdrop);\n\n        // Clean up function\n        modal._cleanup = () => {\n            backdrop.remove();\n            document.body.classList.remove('modal-open');\n        };\n    }\n\n    // Clean up when modal is hidden\n    modal.addEventListener('hidden.bs.modal', () => {\n        modal.remove();\n    });\n\n    // Fallback cleanup for manual modal\n    const closeBtn = modal.querySelector('.btn-close');\n    if (closeBtn) {\n        closeBtn.addEventListener('click', () => {\n            if (bootstrapModal) {\n                bootstrapModal.hide();\n            } else {\n                modal.classList.remove('show');\n                modal.style.display = 'none';\n                if (modal._cleanup) {modal._cleanup();}\n                setTimeout(() => modal.remove(), 300);\n            }\n        });\n    }\n}\n\nfunction compute_href(uri) {\n    // Some magic here :/\n    const tokens = uri.split('/');\n    let res = '';\n    if (tokens[1] === 'plotting') {\n        res = `/plotting/auto/?q=${escapeHTML(tokens[4])}&`;\n        const tokens2 = escapeHTML(tokens[5]).split('::');\n        tokens2.forEach(a => {\n            if (a.startsWith('_')) {\n                return;\n            }\n            const tokens3 = a.split(':');\n            res += `${tokens3[0]}=${tokens3[1]}&`;\n        });\n    }\n    return res;\n}\nfunction loadAutoplot(container, uri, divid) {\n    // Rule: jQuery removal - replace simple DOM selection\n    let target = container.querySelector('.data-display');\n\n    // If target is not found, try to find it in modal structure\n    if (!target) {\n        const modal = container.closest('.modal');\n        if (modal) {\n            target = modal.querySelector('.data-display');\n        }\n    }\n\n    // If still not found, create a data display area\n    if (!target) {\n        target = document.createElement('div');\n        target.className = 'data-display';\n        container.appendChild(target);\n    }\n\n    // Remove any previous content\n    target.innerHTML = '';\n    target.setAttribute('role', 'region');\n    const regionLabel = container.dataset?.station\n        ? `Data display for ${container.dataset.station}`\n        : 'Data display';\n    target.setAttribute('aria-label', regionLabel);\n    target.setAttribute('aria-live', 'polite');\n    target.setAttribute('aria-busy', 'true');\n    const iemhref = compute_href(uri);\n    const pp = document.createElement('p');\n    const ahref = document.createElement('a');\n    ahref.href = iemhref;\n    ahref.target = '_blank';\n    ahref.text = 'IEM Website Link';\n    ahref.classList.add('btn');\n    ahref.classList.add('btn-secondary');\n    ahref.classList.add('mb-3');\n    pp.appendChild(ahref);\n    // Rule: jQuery removal - replace appendTo with vanilla JS\n    target.appendChild(pp);\n    if (uri.endsWith('js')) {\n        // Create a div to append into that target\n        const datadiv = document.createElement('div');\n        datadiv.id = divid;\n        datadiv.classList.add('viz');\n        target.appendChild(datadiv);\n        // Rule: jQuery removal - replace $.getScript with vanilla JS\n        const script = document.createElement('script');\n        script.src = uri;\n        script.onload = () => target.setAttribute('aria-busy', 'false');\n        script.onerror = () => target.setAttribute('aria-busy', 'false');\n        document.head.appendChild(script);\n    } else {\n        const img = document.createElement('img');\n        img.classList.add('img');\n        img.classList.add('img-fluid');\n        img.src = uri;\n        img.alt = 'Plot image';\n        img.onload = () => target.setAttribute('aria-busy', 'false');\n        img.onerror = () => target.setAttribute('aria-busy', 'false');\n        target.appendChild(img);\n    }\n}\nfunction changeStations(elem) {\n    // Rule: jQuery removal - replace simple attribute access\n    const netclass = elem.id;\n    if (netclass === 'asos') {\n        airportStyle.enabled = elem.checked;\n    }\n    if (netclass === 'isusm') {\n        isusmStyle.enabled = elem.checked;\n    }\n    if (netclass === 'coop') {\n        climateStyle.enabled = elem.checked;\n    }\n    if (netclass === 'cd') {\n        climodistrictStyle.enabled = elem.checked;\n    }\n    if (netclass === 'state') {\n        stateStyle.enabled = elem.checked;\n    }\n    stationLayer.changed();\n}\nfunction loaderClicked(elem) {\n    // Use closest containers that carry station metadata\n    let container = elem.closest('.datadiv');\n    if (!container) {container = elem.closest('.modal');}\n\n    // Require station/network context to proceed\n    if (!container || !container.dataset.station || !container.dataset.network) {return;}\n\n    const station = container.dataset.station;\n    const network = container.dataset.network;\n    const tpl = elem.dataset.urlTemplate;\n    if (!tpl) {return;} // Nothing to load\n\n    const divid = `d${station}${network}`;\n\n    // Optional form controls\n    const monthSelect = container.querySelector('select[name=month]');\n    const typeSelect = container.querySelector('select[name=type]');\n    const month = monthSelect ? escapeHTML(monthSelect.value) : '';\n    const type = typeSelect ? escapeHTML(typeSelect.value) : '';\n\n    // Replace required placeholders first\n    let uri = tpl\n        .replaceAll('{station}', station)\n        .replaceAll('{network}', network)\n        .replaceAll('{elem}', divid);\n\n    // Only replace optional placeholders if present in the template\n    if (uri.includes('{month}')) {uri = uri.replaceAll('{month}', month);}\n    if (uri.includes('{type}')) {uri = uri.replaceAll('{type}', type);}\n\n    loadAutoplot(container, uri, divid);\n}\nfunction initUI() {\n    // Make quick-plot images keyboard accessible\n    document.querySelectorAll('.maprow img').forEach(img => {\n        img.setAttribute('tabindex', '0');\n        img.setAttribute('role', 'button');\n        if (img.title) {img.setAttribute('aria-label', img.title);}\n    });\n    // Add event delegation for maprow images - Rule: jQuery removal\n    document.addEventListener('click', event => {\n        if (event.target.matches('.maprow img')) {\n            loadImage(event.target);\n        }\n    });\n    // Keyboard activation for images acting as buttons\n    document.addEventListener('keydown', event => {\n        if (event.target.matches('.maprow img')) {\n            if (event.key === 'Enter' || event.key === ' ') {\n                event.preventDefault();\n                loadImage(event.target);\n            }\n        }\n    });\n\n    // Add event delegation for checkboxes - use change for reliability\n    document.addEventListener('change', event => {\n        if (event.target.matches('.cs') || event.target.matches('.form-check-input.cs')) {\n            changeStations(event.target);\n        }\n    });\n}\n\nfunction resizeCharts(container) {\n    // Rule: jQuery removal - update resizeCharts to work with Bootstrap modals\n    // console.log(\"resizeCharts called\");\n\n    // Find all charts within the container and resize them\n    Highcharts.charts.forEach(chart => {\n        if (!chart) {return;} // Skip undefined/null charts\n\n        // Check if this chart is within the current container\n        const chartContainer = chart.renderTo;\n    if (container.contains?.(chartContainer)) {\n            const height = chartContainer.clientHeight;\n            const width = chartContainer.clientWidth;\n            chart.setSize(width, height);\n        }\n    });\n}\n\nfunction windowFactory(initdiv, classID) {\n    // Rule: jQuery removal - replace jQuery UI dialog with custom Bootstrap modal\n    const modalId = `modal-${classID}-${Date.now()}`;\n    const modal = document.createElement('div');\n    modal.className = `modal fade ${classID}`;\n    modal.id = modalId;\n    modal.setAttribute('tabindex', '-1');\n    modal.setAttribute('role', 'dialog');\n    modal.setAttribute('aria-modal', 'true');\n    modal.setAttribute('aria-hidden', 'true');\n    const titleId = `${modalId}-label`;\n    modal.setAttribute('aria-labelledby', titleId);\n\n    // Get title from initdiv\n    const title = initdiv.getAttribute('title') || 'Data Window';\n\n    modal.innerHTML = `\n        <div class=\"modal-dialog modal-xl\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header d-flex justify-content-between align-items-center\">\n                    <h5 class=\"modal-title\" id=\"${titleId}\">${title}</h5>\n                    <div class=\"btn-group\">\n                        <button type=\"button\" class=\"btn btn-sm btn-outline-secondary minimize-btn\" title=\"Minimize\" aria-label=\"Minimize window\">\n                            <span aria-hidden=\"true\">−</span>\n                        </button>\n                        <button type=\"button\" class=\"btn btn-sm btn-outline-secondary maximize-btn\" title=\"Maximize\" aria-label=\"Maximize window\">\n                            <span aria-hidden=\"true\">□</span>\n                        </button>\n                        <button type=\"button\" class=\"btn btn-sm btn-outline-secondary close-btn\" title=\"Close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\n                            <span aria-hidden=\"true\">×</span>\n                        </button>\n                    </div>\n                </div>\n                <div class=\"modal-body p-0 d-flex\">\n                    <div class=\"data-sidebar\">\n                        <div class=\"sidebar-content\">\n                        </div>\n                    </div>\n                    <div class=\"data-display-area\">\n                        <div class=\"data-display\">\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    `;\n\n    // Add content to modal body with improved layout\n    const modalBody = modal.querySelector('.modal-body');\n    const sidebarContent = modalBody.querySelector('.sidebar-content');\n    const dataDisplay = modalBody.querySelector('.data-display');\n    // Assign a unique id for aria-controls\n    const displayId = `display-${classID}`;\n    dataDisplay.id = displayId;\n\n    // Copy data attributes from initdiv to modal for reference\n    modal.dataset.station = initdiv.dataset.station;\n    modal.dataset.network = initdiv.dataset.network;\n\n    // Move the form controls and buttons to sidebar\n    const formElements = initdiv.querySelectorAll('select, input, button, .autoload');\n    formElements.forEach(element => {\n        sidebarContent.appendChild(element);\n    });\n    // Wire aria-controls on autoload buttons to the display area\n    sidebarContent.querySelectorAll('.autoload').forEach(btn => {\n        btn.setAttribute('aria-controls', displayId);\n        if (!btn.hasAttribute('aria-pressed')) {btn.setAttribute('aria-pressed', 'false');}\n    });\n\n    // Create or ensure data display area exists\n    if (!dataDisplay.hasChildNodes()) {\n        // If no content in data display, set up a placeholder\n        const placeholder = document.createElement('div');\n        placeholder.className = 'text-center text-muted p-4';\n        placeholder.innerHTML = '<p>Select an option from the sidebar to display data</p>';\n        dataDisplay.appendChild(placeholder);\n    }\n\n    // Add modal to DOM\n    document.body.appendChild(modal);\n\n    // Create Bootstrap modal instance\n    let bootstrapModal = null;\n    if (typeof bootstrap !== 'undefined' && bootstrap?.Modal) {\n        bootstrapModal = new bootstrap.Modal(modal, {\n            backdrop: false, // Allow multiple modals\n            keyboard: true,\n        });\n    }\n\n    // Add custom minimize/maximize functionality\n    const minimizeBtn = modal.querySelector('.minimize-btn');\n    const maximizeBtn = modal.querySelector('.maximize-btn');\n    const closeBtn = modal.querySelector('.close-btn');\n    const modalDialog = modal.querySelector('.modal-dialog');\n    const modalContent = modal.querySelector('.modal-content');\n\n    let isMinimized = false;\n    let isMaximized = false;\n    let originalState = {};\n\n    minimizeBtn.addEventListener('click', () => {\n        if (!isMinimized) {\n            originalState = {\n                height: modalContent.style.height,\n                position: modalDialog.style.position,\n                top: modalDialog.style.top,\n                left: modalDialog.style.left,\n                width: modalDialog.style.width,\n            };\n            modalContent.style.height = '40px';\n            modalDialog.style.position = 'fixed';\n            modalDialog.style.top = `${window.innerHeight - 50 - dockPosition}px`;\n            modalDialog.style.left = '0px';\n            modalDialog.style.width = '300px';\n            modalBody.style.display = 'none';\n            dockPosition += 50;\n            isMinimized = true;\n            minimizeBtn.innerHTML = '<span aria-hidden=\"true\">□</span>';\n            minimizeBtn.title = 'Restore';\n            minimizeBtn.setAttribute('aria-expanded', 'false');\n        } else {\n            modalContent.style.height = originalState.height;\n            modalDialog.style.position = originalState.position;\n            modalDialog.style.top = originalState.top;\n            modalDialog.style.left = originalState.left;\n            modalDialog.style.width = originalState.width;\n            modalBody.style.display = 'block';\n            dockPosition -= 50;\n            isMinimized = false;\n            minimizeBtn.innerHTML = '<span aria-hidden=\"true\">−</span>';\n            minimizeBtn.title = 'Minimize';\n            minimizeBtn.setAttribute('aria-expanded', 'true');\n        }\n    });\n\n    maximizeBtn.addEventListener('click', () => {\n        if (!isMaximized) {\n            if (!isMinimized) {\n                originalState = {\n                    height: modalContent.style.height,\n                    maxWidth: modalDialog.style.maxWidth,\n                };\n            }\n            modalContent.style.height = '100vh';\n            modalDialog.style.maxWidth = '100vw';\n            modalDialog.className = 'modal-dialog w-100 h-100 m-0';\n            isMaximized = true;\n            maximizeBtn.innerHTML = '<span aria-hidden=\"true\">⧉</span>';\n            maximizeBtn.title = 'Restore';\n            maximizeBtn.setAttribute('aria-expanded', 'true');\n        } else {\n            modalContent.style.height = originalState.height || '80vh';\n            modalDialog.style.maxWidth = originalState.maxWidth || '90vw';\n            modalDialog.className = 'modal-dialog modal-xl';\n            isMaximized = false;\n            maximizeBtn.innerHTML = '<span aria-hidden=\"true\">□</span>';\n            maximizeBtn.title = 'Maximize';\n            maximizeBtn.setAttribute('aria-expanded', 'false');\n        }\n        // Trigger chart resize after maximize/restore\n        setTimeout(() => resizeCharts(modal), 200);\n    });\n\n    // Close button handler\n    // Remember the element that opened the modal to restore focus\n    const previouslyFocused = document.activeElement;\n    closeBtn.addEventListener('click', () => {\n        if (bootstrapModal) {\n            bootstrapModal.hide();\n        } else {\n            modal.classList.remove('show');\n            modal.style.display = 'none';\n            setTimeout(() => modal.remove(), 300);\n        }\n        if (previouslyFocused?.focus) {\n            setTimeout(() => previouslyFocused.focus(), 0);\n        }\n    });\n\n    // Show modal\n    if (bootstrapModal) {\n        bootstrapModal.show();\n    } else {\n        // Fallback: show modal manually\n        modal.classList.add('show');\n        modal.style.display = 'block';\n    }\n\n    // Clean up when modal is hidden\n    modal.addEventListener('hidden.bs.modal', () => {\n        modal.remove();\n    });\n\n    // Trigger chart resize when modal is shown\n    modal.addEventListener('shown.bs.modal', () => {\n        resizeCharts(modal);\n    });\n\n    // Fallback for manual modal show\n    if (!bootstrapModal) {\n        setTimeout(() => resizeCharts(modal), 300);\n    }\n    // Need to reattach the click handler as elements have been moved to modal\n    // Rule: jQuery removal - replace jQuery selection and event handling\n    const divs = modal.querySelectorAll('.autoload');\n    divs.forEach(div => {\n        div.addEventListener('click', event => {\n            // Remove active class from all autoload divs in this modal\n            divs.forEach(d => {\n                d.classList.remove('active');\n                d.setAttribute('aria-pressed', 'false');\n            });\n            // Use the button element itself, not a child icon\n            const btn = event.currentTarget;\n            btn.classList.add('active');\n            btn.setAttribute('aria-pressed', 'true');\n            loaderClicked(btn);\n        });\n        // Initialize ARIA pressed state\n        if (!div.hasAttribute('aria-pressed')) {div.setAttribute('aria-pressed', 'false');}\n    });\n\n    // Also ensure form elements work properly\n    const selectElements = modal.querySelectorAll('select');\n    const inputElements = modal.querySelectorAll('input');\n    const buttonElements = modal.querySelectorAll(\n        'button:not(.minimize-btn):not(.maximize-btn):not(.close-btn):not(.btn-close)'\n    );\n\n    // Add event listeners for form interactions\n    [...selectElements, ...inputElements].forEach(element => {\n        element.addEventListener('change', () => {\n            // Trigger any active autoload when form values change\n            const activeAutoload = modal.querySelector('.autoload.active');\n            if (activeAutoload) {\n                loaderClicked(activeAutoload);\n            }\n        });\n    });\n\n    buttonElements.forEach(button => {\n        if (!button.hasAttribute('data-listener-added')) {\n            button.addEventListener('click', event => {\n                event.preventDefault();\n                if (button.classList.contains('autoload')) {\n                    // Remove active class from all autoload divs in this modal\n                    divs.forEach(d => {\n                        d.classList.remove('active');\n                        d.setAttribute('aria-pressed', 'false');\n                    });\n                    // Add active class to clicked div\n                    button.classList.add('active');\n                    button.setAttribute('aria-pressed', 'true');\n                }\n                loaderClicked(button);\n            });\n            button.setAttribute('data-listener-added', 'true');\n        }\n    });\n\n    if (divs.length > 0) {\n        divs[0].classList.add('active');\n        divs[0].setAttribute('aria-pressed', 'true');\n        // Focus the first action for accessibility\n        divs[0].focus();\n        divs[0].click();\n    }\n}\n\n// Rule: jQuery removal - replace document ready\ndocument.addEventListener('DOMContentLoaded', () => {\n    initMap();\n    initUI();\n});\n"
  },
  {
    "path": "htdocs/explorer/index.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 138);\nrequire_once \"../../include/myview.php\";\n$OL = \"10.6.1\";\n$t = new MyView();\n$t->title = \"IEM Explorer\";\n$YEAR = intval(date('Y'));\n$TODAY = date('Y-m-d');\n$JAN1 = sprintf('%04d-01-01', $YEAR);\n$MAY1 = sprintf('%04d-05-01', $YEAR);\n$AUG1 = sprintf('%04d-08-01', $YEAR);\n$AUG31 = sprintf('%04d-08-31', $YEAR);\n$t->headextra = <<<EOM\n<link rel='stylesheet' href=\"/vendor/openlayers/{$OL}/ol.css\" type='text/css'>\n<link rel='stylesheet' href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" type='text/css'>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"index.css\" />\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"/vendor/moment/2.13.0/moment.min.js\"></script>\n<script src='/vendor/openlayers/{$OL}/ol.js'></script>\n<script src='/vendor/openlayers/{$OL}/ol-layerswitcher.js'></script>\n<script src=\"/vendor/highcharts/10.1.0/highcharts.js\"></script>\n<script src=\"/vendor/highcharts/10.1.0/highcharts-more.js\"></script>\n<script src=\"/vendor/highcharts/10.1.0/modules/accessibility.js\"></script>\n<script src=\"/vendor/highcharts/10.1.0/modules/exporting.js\"></script>\n<script src=\"/vendor/highcharts/10.1.0/modules/heatmap.js\"></script>\n<script src=\"index.js?v=2\"></script>\nEOM;\n\n$t->content = <<<EOM\n    <a class=\"skip-link\" href=\"#main-map\">Skip to main map</a>\n    <a class=\"skip-link\" href=\"#legend\">Skip to legend</a>\n    <a class=\"skip-link\" href=\"#quick-plots\">Skip to quick plots</a>\n\n    <div id=\"popover\">\n        <span id=\"info-name\"></span>\n    </div>\n\n    <div class=\"container-fluid\">\n        <div class=\"row g-3\">\n            <!-- Left Sidebar: Symbol Legend and Overview Map -->\n            <div class=\"col-xl-2 col-lg-3 col-md-4 order-1\" id=\"legend\">\n                <div class=\"legend-panel\">\n                    <h5 class=\"panel-title\">Symbol Legend</h5>\n                    \n                    <div class=\"legend-controls\">\n                        <div class=\"form-check\">\n                            <input type=\"checkbox\" class=\"form-check-input cs\" id=\"isusm\" checked=\"checked\">\n                            <label class=\"form-check-label\" for=\"isusm\">\n                                <img src=\"img/isu.svg\" alt=\"ISU\"> ISU Soil Moisture\n                            </label>\n                        </div>\n                        \n                        <div class=\"form-check\">\n                            <input type=\"checkbox\" class=\"form-check-input cs\" id=\"asos\" checked=\"checked\">\n                            <label class=\"form-check-label\" for=\"asos\">\n                                <img src=\"img/airport.svg\" alt=\"Airport\"> Airports\n                            </label>\n                        </div>\n                        \n                        <div class=\"form-check\">\n                            <input type=\"checkbox\" class=\"form-check-input cs\" id=\"coop\" checked=\"checked\">\n                            <label class=\"form-check-label\" for=\"coop\">\n                                <img src=\"img/green_dot.svg\" alt=\"Climate\"> Climate Stations\n                            </label>\n                        </div>\n                        \n                        <div class=\"form-check\">\n                            <input type=\"checkbox\" class=\"form-check-input cs\" id=\"cd\" checked=\"checked\">\n                            <label class=\"form-check-label\" for=\"cd\">\n                                <img src=\"img/blue_square.svg\" alt=\"District\"> Climate Districts\n                            </label>\n                        </div>\n                        \n                        <div class=\"form-check\">\n                            <input type=\"checkbox\" class=\"form-check-input cs\" id=\"state\" checked=\"checked\">\n                            <label class=\"form-check-label\" for=\"state\">\n                                <img src=\"img/red_square.svg\" alt=\"State\"> State Averages\n                            </label>\n                        </div>\n                    </div>\n                    <div id=\"overviewmap\"></div>\n                </div>\n            </div>\n            \n            <!-- Center: Main Map -->\n            <div class=\"col-xl-7 col-lg-6 col-md-8 order-2 order-md-2\" id=\"main-map\">\n                <div class=\"map-panel\">\n                    <h5 class=\"panel-title\">Click symbol on map to view available plots</h5>\n                    <div id=\"olmap\"></div>\n                </div>\n            </div>\n            \n            <!-- Right Sidebar: Quick Access Plots -->\n            <div class=\"col-xl-3 col-lg-3 col-md-12 order-3\" id=\"quick-plots\">\n                <div class=\"quick-plots-panel maprow\">\n                    <h5 class=\"panel-title\">Quick Access Plots</h5>\n                    \n                    <div class=\"plot-item\">\n                        <h6>4 inch Soil Temperatures</h6>\n                        <img src=\"/data/soilt_day1.png\" role=\"button\" title=\"4in Soil Temperatures\" class=\"img-fluid\"\n                             data-target=\"{$EXTERNAL_BASEURL}/agclimate/soilt.php\">\n                    </div>\n\n                    <div class=\"plot-item\">\n                        <h6>Today's Precipitation</h6>\n                        <img src=\"/data/iowa_ifc_1d.png\" role=\"button\" title=\"Iowa Flood Center Rainfall\" class=\"img-fluid\"\n                             data-target=\"{$EXTERNAL_BASEURL}\">\n                    </div>\n\n                    <div class=\"plot-item\">\n                        <h6>Precipitation Departure</h6>\n                        <img src=\"/plotting/auto/plot/84/sector:IA::src:mrms::opt:dep::usdm:yes::ptype:g::sdate:{$AUG1}::edate:{$TODAY}::cmap:BrBG::_r:43.png\"\n                             role=\"button\" title=\"Precip Departure Aug 1\" class=\"img-fluid\"\n                             data-target=\"{$EXTERNAL_BASEURL}\">\n                    </div>\n\n                    <div class=\"plot-item\">\n                        <h6>Days to Accum 2 inches</h6>\n                        <img src=\"/plotting/auto/plot/185/sector:IA::threshold:2.0::cmap:terrain::_r:43.png\" role=\"button\" class=\"img-fluid\"\n                             title=\"Days to Accumulate 2 inches\"\n                             data-target=\"{$EXTERNAL_BASEURL}\">\n                    </div>\n\n                    <div class=\"plot-item\">\n                        <h6>Iowa Drought Coverage</h6>\n                        <img src=\"/plotting/auto/plot/183/s:state::state:IA::sdate:{$JAN1}::_r:43.png\" role=\"button\" class=\"img-fluid\"\n                             title=\"Iowa Drought Coverage\"\n                             data-target=\"{$EXTERNAL_BASEURL}\">\n                    </div>\n\n                    <div class=\"plot-item\">\n                        <h6>NASS Corn Denting Progress</h6>\n                        <img src=\"/plotting/auto/plot/127/state:IA::short_desc:CD::cmap:jet::_r:43.png\" role=\"button\" class=\"img-fluid\"\n                             title=\"USDA NASS Corn Denting Progress\"\n                             data-target=\"{$EXTERNAL_BASEURL}/plotting/auto/?_wait=no&q=127&state=IA&short_desc=CD&cmap=jet&_r=43&dpi=100&_fmt=png\">\n                    </div>\n\n                    <div class=\"plot-item\">\n                        <h6>Climate District Ranks</h6>\n                        <img src=\"/plotting/auto/plot/24/csector:midwest::var:precip::p:month::year:{$YEAR}::month:summer::cmap:RdBu_r::_r:43.png\" role=\"button\"\n                        title=\"Climate District Precip Ranks\"\n                        data-target=\"{$EXTERNAL_BASEURL}/plotting/auto/?_wait=no&q=24&csector=midwest&var=precip&p=month&year={$YEAR}&month=summer&sdate={$YEAR}%2F04%2F05&edate={$YEAR}%2F05%2F03&cmap=RdBu&cmap_r=on&_r=t&dpi=100&_fmt=png\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"row isusm-data-template ddisplay\"\n    style=\"display:none; min-height: 0px; height: 100%; width: 100%;\">\n       <div class=\"col-md-4\" style=\"overflow-y: scroll; height: 100%;\">\n            <a class=\"btn btn-secondary\" target=\"_blank\" href=\"/sites/site.php?station={station}&amp;network={network}\" aria-label=\"Open site mainpage in new tab\"><i class=\"bi bi-box-arrow-up-right\" aria-hidden=\"true\"></i> Site Mainpage</a>\n\n            <br /><button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/145/network:ISUSM::station:{station}::var:tsoil::year:{$YEAR}::_r:86.png\"><i class=\"bi bi-thermometer-half\" aria-hidden=\"true\"></i> 4in Soil Temps</button>\n            <button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/177/network:ISUSM::station:{station}::opt:sm::sts:{$MAY1}%200000::_r:86.png\"><i class=\"bi bi-droplet\" aria-hidden=\"true\"></i> Soil Moisture</button>\n            <button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/177/network:ISUSM::station:{station}::opt:7::sts:{$MAY1}%200000::_r:86.png\"><i class=\"bi bi-battery-half\" aria-hidden=\"true\"></i> Available Soil Water</button>\n           <button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/177/network:ISUSM::station:{station}::opt:4::sts:{$MAY1}%200000::_r:43.png\"><i class=\"bi bi-sun\" aria-hidden=\"true\"></i> Daily Solar Radiation</i></button>\n\n       </div>\n       <div class=\"col-md-8 data-display\" style=\"overflow-y: auto;\"></div>\n   </div><!-- ./isuag-data-template -->\n\n    <div class=\"row asos-data-template ddisplay\"\n     style=\"display:none; min-height: 0px; height: 100%; width: 100%;\">\n        <div class=\"col-md-4\" style=\"overflow-y: scroll; height: 100%;\">\n            <a class=\"btn btn-secondary\" target=\"_blank\" href=\"/sites/site.php?station={station}&amp;network={network}\"><i class=\"bi bi-box-arrow-up-right\" aria-hidden=\"true\"></i> Site Mainpage</a>\n\n            <br /><button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/140/network:{network}::station:{station}::syear:1973::month:4::day:1::days:30::varname:avg_wind_speed::year:{$YEAR}::_r:86.png\">\n            <i class=\"bi bi-wind\" aria-hidden=\"true\"></i> April Wind Speed</button>\n            \n            <button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/140/network:{network}::station:{station}::syear:1973::month:6::day:1::days:92::varname:avg_dewp::year:{$YEAR}::_r:43.png\">\n            <i class=\"bi bi-fire\" aria-hidden=\"true\"></i> Summer Dew Points</button>\n            \n            <button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/93/network:{network}::zstation:{station}::syear:1973::year:{$YEAR}::var:heatindex::ytd:yes::inc:no::_r:43.png\">\n            <i class=\"bi bi-table\" aria-hidden=\"true\"></i> {$YEAR} Heat Index Hrs</button>\n\n            <button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/82/network:{network}::station:{station}::var:high_departure::sdate:{$MAY1}::edate:{$AUG31}::_r:43.png\">\n            <i class=\"bi bi-calendar3\" aria-hidden=\"true\"></i> {$YEAR} Highs Calendar</button>\n\n            <button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/51/network:{network}::station:{station}::sdate:{$MAY1}::base:50::ceil:86::year2:2023::year3:2019::which:gdd::_r:43.png\">\n            <i class=\"bi bi-fire\" aria-hidden=\"true\"></i> {$YEAR} GS Accum GDD</button>\n\n            <button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/51/network:{network}::station:{station}::sdate:{$MAY1}::base:50::ceil:86::year2:2023::year3:2019::which:precip::_r:43.png\">\n            <i class=\"bi bi-droplet\" aria-hidden=\"true\"></i> {$YEAR} GS Accum Precip</button>\n\n            <h3>Wind Roses</h3>\n            <strong>Month/Season:</strong>\n            <select name=\"month\">\n                <option value=\"yearly\">Calendar Year</option>\n                <option value=\"jan\">January</option>\n                <option value=\"feb\">February</option>\n                <option value=\"mar\">March</option>\n                <option value=\"apr\">April</option>\n                <option value=\"may\">May</option>\n                <option value=\"jun\">June</option>\n                <option value=\"jul\">July</option>\n                <option value=\"aug\" selected=\"selected\">August</option>\n                <option value=\"sep\">September</option>\n                <option value=\"oct\">October</option>\n                <option value=\"nov\">November</option>\n                <option value=\"dec\">December</option>\n            </select>\n            <button role=\"button\" class=\"autoload\"\n            data-url-template=\"/onsite/windrose/{network}/{station}/{station}_{month}.png\">\n            <i class=\"bi bi-pie-chart\" aria-hidden=\"true\"></i> View Windrose</button>\n\n        </div>\n        <div class=\"col-md-8 data-display\" style=\"overflow-y: auto;\"></div>\n    </div><!-- ./asos-data-template -->\n\n    <div class=\"row coop-data-template ddisplay\"\n     style=\"display:none; min-height: 0px; height: 100%; width: 100%;\">\n        <div class=\"col-md-4\" style=\"overflow-y: scroll; height: 100%;\">\n            <a class=\"btn btn-secondary\" target=\"_blank\" href=\"/sites/site.php?station={station}&amp;network={network}\"><i class=\"bi bi-box-arrow-up-right\" aria-hidden=\"true\"></i> Site Mainpage</a>\n\n            <br /><button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/3/network:{network}::station:{station}::month:year::type:avg-temp::_e:{elem}.js\"\n            ><i class=\"bi bi-thermometer-half\" aria-hidden=\"true\"></i> Average Temperature</button>\n\n            <br /><button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/32/network:{network}::station:{station}::year:{$YEAR}::var:high::gddbase:50::gddceil:86::how:diff::cmap:jet::_r:43.png\"\n            ><i class=\"bi bi-thermometer-half\" aria-hidden=\"true\"></i> {$YEAR} High Departures</button>\n\n            <br /><button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/3/network:{network}::station:{station}::month:year::type:max-precip::_e:{elem}.js\"\n            ><i class=\"bi bi-droplet\" aria-hidden=\"true\"></i> Daily Max Precip</button>\n\n            <br /><button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/3/network:{network}::station:{station}::month:spring::type:sum-precip::_e:{elem}.js\"\n            ><i class=\"bi bi-droplet\" aria-hidden=\"true\"></i> Spring Season Precip</button>\n\n            <br /><button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/10/network:{network}::station:{station}::direction:below::varname:low::threshold:32::year:1893::_r:86::dpi:100.png\"\n            ><i class=\"bi bi-tree\" aria-hidden=\"true\"></i> Growing Season Days</button>\n\n            <br /><button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/142/network:{network}::station:{station}::p1:31::p2:91::p3:365::pvar:precip::how:diff::_r:86.png\"\n            ><i class=\"bi bi-star-half\" aria-hidden=\"true\"></i> Drought Monitoring</button>\n\n            <br /><button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/215/network:{network}::station:{station}::v:high::month:all::sy1:1930::ey1:1939::sy2:2012::ey2:2021::_r:43.png\"\n            ><i class=\"bi bi-arrows-angle-expand\" aria-hidden=\"true\"></i> 1930s vs 2010s</button>\n\n            <br /><button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/28/network:{network}::station:{station}::opt:rank::_r:43.png\"\n            ><i class=\"bi bi-arrow-repeat\" aria-hidden=\"true\"></i> Precip Status</button>\n\n            <br /><button role=\"button\" type=\"button\" class=\"autoload\"\n            data-url-template=\"/plotting/auto/plot/176/network:{network}::station:{station}::opt:0::w:daily::_e:{elem}.js\"\n            ><i class=\"bi bi-plus-circle\" aria-hidden=\"true\"></i> Records Set by Year</button>\n\n            <h3>Trends</h3>\n            <strong>Variable:</strong>\n            <select name=\"type\">\n                <option value=\"max-high\">Maximum High</option>\n                <option value=\"avg-high\">Average High</option>\n                <option value=\"min-high\">Minimum High</option>\n                <option value=\"max-low\">Maximum Low</option>\n                <option value=\"avg-low\">Average Low</option>\n                <option value=\"min-low\">Minimum Low</option>\n                <option value=\"avg-temp\">Average Temp</option>\n                <option value=\"range-avghi-avglo\">Ave High + Low Range</option>\n                <option value=\"max-precip\">Maximum Daily Precip</option>\n                <option value=\"sum-precip\">Total Precipitation</option>\n            </select>\n            <br /><strong>Month/Season:</strong>\n            <select name=\"month\">\n                <option value=\"year\">Calendar Year</option>\n                <option value=\"spring\">Spring (MAM)</option>\n                <option value=\"fall\">Fall (SON)</option>\n                <option value=\"winter\">Winter (DJF)</option>\n                <option value=\"summer\">Summer (JJA)</option>\n                <option value=\"1\">January</option>\n                <option value=\"2\">February</option>\n                <option value=\"3\">March</option>\n                <option value=\"4\">April</option>\n                <option value=\"5\">May</option>\n                <option value=\"6\">June</option>\n                <option value=\"7\">July</option>\n                <option value=\"8\" selected=\"selected\">August</option>\n                <option value=\"9\">September</option>\n                <option value=\"10\">October</option>\n                <option value=\"11\">November</option>\n                <option value=\"12\">December</option>\n            </select>\n\n            <button role=\"button\" class=\"autoload\"\n             data-url-template=\"/plotting/auto/plot/3/network:{network}::station:{station}::month:{month}::type:{type}::_e:{elem}.js\"><i class=\"bi bi-graph-up\" aria-hidden=\"true\"></i> Create Chart</button>\n\n        </div>\n        <div class=\"col-md-8 data-display\" style=\"overflow-y: auto;\"></div>\n    </div><!-- ./coop-data-template -->\n\n\nEOM;\n$t->render(\"full.phtml\");\n"
  },
  {
    "path": "htdocs/feature_rss.php",
    "content": "<?php\nrequire_once \"../config/settings.inc.php\";\nrequire_once \"../include/memcache.php\";\ndefine(\"IEM_APPID\", 62);\nheader(\"Content-type: text/xml; charset=UTF-8\");\n\n$memcache = MemcacheSingleton::getInstance();\n$val = $memcache->get(\"/feature_rss.php\");\nif ($val) {\n    die($val);\n}\n// Need to buffer the output so that we can save it to memcached later\nob_start();\n\nrequire_once \"../include/database.inc.php\";\n$d = date('D, d M Y H:i:s O');\necho <<<EOM\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n<channel>\n<atom:link href=\"{$EXTERNAL_BASEURL}/feature_rss.php\" rel=\"self\" type=\"application/rss+xml\" />\n<title>Iowa Environmental Mesonet Daily Feature</title>\n<link>{$EXTERNAL_BASEURL}</link>\n<description>Iowa Environmental Mesonet Daily Feature</description>\n<lastBuildDate>{$d}</lastBuildDate>\nEOM;\n$conn = iemdb(\"mesosite\");\n$rs = pg_query(\n    $conn,\n    \"SELECT *, to_char(valid, 'YYYY/MM/YYMMDD') as imageref from feature \" .\n        \"WHERE valid < now() ORDER by valid DESC LIMIT 20\"\n);\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n    $appurl = \"\";\n    if ($row[\"appurl\"] != \"\") {\n        $appurl = \"<p><a href=\\\"{$EXTERNAL_BASEURL}{$row['appurl']}\\\">Generate This Chart on IEM Website</a></p>\";\n    }\n    $mediaurl = sprintf(\n        \"{$EXTERNAL_BASEURL}/onsite/features/%s.%s\",\n        $row[\"imageref\"],\n        $row[\"mediasuffix\"]\n    );\n    if ($row[\"mediasuffix\"] == 'mp4') {\n        $cbody = <<<EOM\n<video controls>\n        <source src=\"{$mediaurl}\" type=\"video/mp4\">\n        Your browser does not support the video tag.\n</video>\nEOM;\n    } else {\n        $cbody = <<<EOM\n<img src=\"{$mediaurl}\"\n alt=\"Feature\" style=\"float: left; padding: 5px;\" />\nEOM;\n    }\n    $cbody .= <<<EOM\n<p>{$row[\"story\"]}</p>\n {$appurl}\nEOM;\n    $t = $row[\"title\"];\n    $v = substr($row[\"valid\"], 0, 10);\n    echo <<<EOM\n<item>\n<title><![CDATA[{$t}]]></title>\n<author>akrherz@iastate.edu (Daryl Herzmann)</author>\n<link>{$EXTERNAL_BASEURL}/onsite/features/cat.php?day={$v}</link>\n<guid>{$EXTERNAL_BASEURL}/onsite/features/cat.php?day={$v}</guid>\n<description><![CDATA[{$cbody}]]></description>\n</item>\nEOM;\n}\necho \"</channel>\\n\";\necho \"</rss>\\n\";\n\n$memcache->set(\"/feature_rss.php\", ob_get_contents(), 3600); // one hour\nob_end_flush();\n"
  },
  {
    "path": "htdocs/icons/README",
    "content": "Public Domain Icons\n\n     These icons were originally made for Mosaic for X and have been\n     included in the NCSA httpd and Apache server distributions in the\n     past. They are in the public domain and may be freely included in any\n     application. The originals were done by Kevin Hughes \n     (kevinh@kevcom.com).\n\n     Many thanks to Andy Polyakov for tuning the icon colors and adding a\n     few new images. If you'd like to contribute additions or ideas to\n     this set, please let me know.\n\n     Almost all of these icons are 20x22 pixels in size.  There are\n     alternative icons in the \"small\" directory that are 16x16 in size,\n     provided by Mike Brown (mike@hyperreal.org).\n\nSuggested Uses\n\nThe following are a few suggestions, to serve as a starting point for ideas.\nPlease feel free to tweak and rename the icons as you like.\n\n     a.gif\n          This might be used to represent PostScript or text layout\n          languages.\n\n     alert.black.gif, alert.red.gif\n          These can be used to highlight any important items, such as a\n          README file in a directory.\n\n     back.gif, forward.gif\n          These can be used as links to go to previous and next areas.\n\n     ball.gray.gif, ball.red.gif\n          These might be used as bullets.\n\n     binary.gif\n          This can be used to represent binary files.\n\n     binhex.gif\n          This can represent BinHex-encoded data.\n\n     blank.gif\n          This can be used as a placeholder or a spacing element.\n\n     bomb.gif\n          This can be used to represent core files.\n\n     box1.gif, box2.gif\n          These icons can be used to represent generic 3D applications and\n          related files.\n\n     broken.gif\n          This can represent corrupted data.\n\n     burst.gif\n          This can call attention to new and important items.\n\n     c.gif\n          This might represent C source code.\n\n     comp.blue.gif, comp.red.gif\n          These little computer icons can stand for telnet or FTP\n          sessions.\n\n     compressed.gif\n          This may represent compressed data.\n\n     continued.gif\n          This can be a link to a continued listing of a directory.\n\n     down.gif, up.gif, left.gif, right.gif\n          These can be used to scroll up, down, left and right in a\n          listing or may be used to denote items in an outline.\n\n     dvi.gif\n          This can represent DVI files.\n\n     f.gif\n          This might represent FORTRAN or Forth source code.\n\n     folder.gif, folder.open.gif, folder.sec.gif\n          The folder can represent directories. There is also a version\n          that can represent secure directories or directories that cannot\n          be viewed.\n\n     generic.gif, generic.sec.gif, generic.red.gif\n          These can represent generic files, secure files, and important\n          files, respectively.\n\n     hand.right.gif, hand.up.gif\n          These can point out important items (pun intended).\n\n     image1.gif, image2.gif, image3.gif\n          These can represent image formats of various types.\n\n     index.gif\n          This might represent a WAIS index or search facility.\n\n     layout.gif\n          This might represent files and formats that contain graphics as\n          well as text layout, such as HTML and PDF files.\n\n     link.gif\n          This might represent files that are symbolic links.\n\n     movie.gif\n          This can represent various movie formats.\n\n     p.gif\n          This may stand for Perl or Python source code.\n\n     pie0.gif ... pie8.gif\n          These icons can be used in applications where a list of\n          documents is returned from a search. The little pie chart images\n          can denote how relevant the documents may be to your search\n          query.\n\n     patch.gif\n          This may stand for patches and diff files.\n\n     portal.gif\n          This might be a link to an online service or a 3D world.\n\n     ps.gif, quill.gif\n          These may represent PostScript files.\n\n     screw1.gif, screw2.gif\n          These may represent CAD or engineering data and formats.\n\n     script.gif\n          This can represent any of various interpreted languages, such as\n          Perl, python, TCL, and shell scripts, as well as server\n          configuration files.\n\n     sound1.gif, sound2.gif\n          These can represent sound files.\n\n     sphere1.gif, sphere2.gif\n          These can represent 3D worlds or rendering applications and\n          formats.\n\n     tex.gif\n          This can represent TeX files.\n\n     text.gif\n          This can represent generic (plain) text files.\n\n     transfer.gif\n          This can represent FTP transfers or uploads/downloads.\n\n     unknown.gif\n          This may represent a file of an unknown type.\n\n     uuencoded.gif\n          This can stand for uuencoded data.\n\n     world1.gif, world2.gif\n          These can represent 3D worlds or other 3D formats.\n"
  },
  {
    "path": "htdocs/iemre/daily.py",
    "content": "\"\"\"implemented in pylib/iemweb/iemre/daily.py\"\"\"\n\nfrom iemweb.iemre.daily import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/iemre/hourly.py",
    "content": "\"\"\"implemented in pylib/iemweb/iemre/hourly.py\"\"\"\n\nfrom iemweb.iemre.hourly import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/iemre/index.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Reanalysis Data\";\n$t->iem_resource = \"IEMRE\";\n\n$s4link = sprintf(\"/archive/data/%s/stage4/\", date(\"Y/m/d\"));\n\n$t->content = <<<EOM\n<div class=\"container-fluid\">\n<h3 class=\"mb-4\">IEM Reanalysis (IEMRE)</h3>\n\n<div class=\"row mb-4\">\n    <div class=\"col-md-2 text-center\">\n        <img src=\"iemre_anim.gif\" class=\"img-fluid rounded shadow-sm\" alt=\"IEMRE Animation\" />\n    </div>\n    <div class=\"col-md-10\">\n\n<p>IEM Reanalysis (IEMRE) is an effort to provide near real-time gridded\nanalyses of a number of variables useful to drive downstream modeling projects,\nlike the <a href=\"https://dailyerosion.org\">Daily Erosion Project</a>.  The\nIEM presently does not have the compute, nor storage capacity to run this effort\nglobally at high resolution, so a number of regional domains are curated.</p>\n\n<div class=\"alert alert-info\">\n    <h5 class=\"alert-heading\"><i class=\"bi bi-info-circle me-2\" aria-hidden=\"true\"></i>Use better products!</h5>\n    IEMRE is nothing special. It was cool maybe 15 years ago,\n    but now days there are superior products available.  Use those instead!\n</div>\n\n<div class=\"row\">\n    <div class=\"col-lg-6 mb-3\">\n        <div class=\"card h-100\">\n            <div class=\"card-body\">\n                <h5 class=\"card-title\">Why do this?</h5>\n                <p class=\"card-text\">Previously, the IEM has only provided raw observations with limited\n                quality control checks in place.  Quality control is hard!  Many times, users\n                are simply looking for something \"close\" and perhaps not as perfect as high\n                quality sensor observations can be.  Producing a gridded analysis is one\n                way to produce a dataset from point observations which can be sampled as\n                a means of spatial interpolation.</p>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-lg-6 mb-3\">\n        <div class=\"card h-100\">\n            <div class=\"card-body\">\n                <h5 class=\"card-title\">Isn't this a duplication of effort?</h5>\n                <p class=\"card-text\">While there are other \"reanalysis\" type projects out there with\n                data freely available, many times their data does not update in near real-time\n                and does not include many of the datasets the IEM uniquely collects.</p>\n                <p class=\"card-text\"><strong>Alternatives:</strong></p>\n                <ul class=\"list-unstyled\">\n                    <li><a href=\"https://www.ecmwf.int/en/era5-land\" class=\"btn btn-sm btn-outline-primary me-2 mb-2\">ERA5Land</a></li>\n                    <li><a href=\"https://daymet.ornl.gov/\" class=\"btn btn-sm btn-outline-primary me-2 mb-2\">DayMet</a></li>\n                    <li><a href=\"http://www.climatologylab.org/gridmet.html\" class=\"btn btn-sm btn-outline-primary me-2 mb-2\">GridMet</a></li>\n                    <li><a href=\"https://prism.oregonstate.edu/\" class=\"btn btn-sm btn-outline-primary me-2 mb-2\">PRISM</a></li>\n                </ul>\n            </div>\n        </div>\n    </div>\n</div>\n\n    </div>\n</div>\n\n<h3 class=\"mt-5 mb-4\">Product Changes</h3>\n\n<div class=\"alert alert-warning\">\n    <ul class=\"mb-0\">\n        <li><strong>11 Mar 2026:</strong> For Non-CONUS domains, the\n        <a href=\"https://www.ecmwf.int/en/forecasts/datasets/open-data\">ECMWF IFS</a>\n        is used to provide near-term analysis prior to ERA5Land arriving.</li>\n        <li><strong>26 Jul 2025:</strong> Non-CONUS domains are now available\n        for South America, Europe, and Southeast Asia/China.</li>\n        <li><strong>4 Jan 2023:</strong> Near realtime solar radiation is sourced from\n        the HRRR model.  For dates prior to 8 days ago, it is sourced from ERA5Land.\n        This is a change as it used to be sourced from MERRAv2.</li>\n        <li><strong>1 May 2018:</strong> Grid domain expanded to cover CONUS.  It will\n        take a while to fully populate the grids.  At the moment, just the previous\n        midwestern US data is available.  Grid resolution increased to 0.125x0.125\n        degree.</li>\n    </ul>\n</div>\n\n<h3 class=\"mt-5 mb-4\">Data Flow</h3>\n\n<div class=\"row g-4\">\n    <div class=\"col-lg-4\">\n        <div class=\"card h-100\">\n            <div class=\"card-header bg-primary text-white\">\n                <h4 class=\"mb-0\">1. Input Datasets</h4>\n            </div>\n            <div class=\"card-body\">\n                <ul class=\"list-group list-group-flush\">\n                    <li class=\"list-group-item px-0\">\n                        <strong>NCEP Stage IV Precipitation</strong>\n                        <br />This is an hourly gridded product with precipitation estimates\n                        derived by RADAR and then bias corrected by gauge data. The IEM\n                        caches the <a href=\"{$s4link}\">grib data</a> and makes hourly\n                        plots available <a href=\"/timemachine/?product=40\">here</a>.\n                    </li>\n\n                    <li class=\"list-group-item px-0\">\n                        <strong>MRMS Precipitation</strong>\n                        <br />Currently, this is only used to populate a daily total in a\n                        dedicated netcdf file.\n                    </li>\n\n                    <li class=\"list-group-item px-0\">ASOS/AWOS Daily Summaries</li>\n                    <li class=\"list-group-item px-0\">NWS Daily Climate Summaries</li>\n                    <li class=\"list-group-item px-0\">HRRR/MERRA/NARR Daily Solar Radiation</li>\n                    <li class=\"list-group-item px-0\">NWS COOPerative Observations</li>\n                    <li class=\"list-group-item px-0\">Manually QC'd Iowa COOP data from Iowa's State Climatologist</li>\n                    <li class=\"list-group-item px-0\">NCDC QC'd COOP Data</li>\n                </ul>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-lg-4\">\n        <div class=\"card h-100\">\n            <div class=\"card-header bg-success text-white\">\n                <h4 class=\"mb-0\">2. IEM ReAnalysis Gridded Datasets</h4>\n            </div>\n            <div class=\"card-body\">\n                <ul class=\"list-group list-group-flush\">\n                    <li class=\"list-group-item px-0\">\n                        <a href=\"/plotting/auto/?q=86\">Daily Maps of Gridded Variables</a>\n                        <br />View a smoothed or gridded plot of IEMRE data\n                    </li>\n                    <li class=\"list-group-item px-0\">\n                        <a href=\"/plotting/auto/?q=84\">Maps of Precipitation</a>\n                        <br />Generate maps for a single day or multiple days.\n                    </li>\n                    <li class=\"list-group-item px-0\">\n                        Download the raw NetCDF Files <a href=\"/onsite/iemre/\">here</a>.\n                    </li>\n                </ul>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-lg-4\">\n        <div class=\"card h-100\">\n            <div class=\"card-header bg-info text-white\">\n                <h4 class=\"mb-0\">3. Climodat Station Data</h4>\n            </div>\n            <div class=\"card-body\">\n                <p>The location of the IEM Longterm tracked climate stations are used to\n                sample from the IEMRE grid to produce daily values of high / low\n                temperature, precipitation, snowfall, snow depth, and radiation.  For\n                some stations, a direct copy of the corresponding ASOS station data\n                is used.</p>\n                <ul class=\"list-group list-group-flush\">\n                    <li class=\"list-group-item px-0\">\n                        <a href=\"/climodat/\">Climodat Reports</a>\n                        <br />These are pre-generated reports answering many of the commonly\n                        asked climatology questions.\n                    </li>\n                </ul>\n            </div>\n        </div>\n    </div>\n</div>\n\n<h3 class=\"mt-5 mb-4\">Hourly Data Sources</h3>\n\n<p>Yearly <a href=\"/onsite/iemre/\">netcdf files</a> since 1950, with updates\nat about 10 after the hour.  Since we want real-time data, some of these\nmodel sources are not available immediately, so the denoted intermediate source\nfills the gap until the final source is available.</p>\n\n<div class=\"table-responsive\">\n    <table class=\"table table-striped table-hover\">\n        <thead class=\"table-dark\">\n            <tr>\n                <th scope=\"col\">Variable</th>\n                <th scope=\"col\">Intermediate Source</th>\n                <th scope=\"col\">Final Source</th>\n            </tr>\n        </thead>\n        <tbody>\n\n        <tr>\n            <th scope=\"row\">Precipitation</th>\n            <td>Stage IV (CONUS)\n            <br />ECMWF IFS Short Term Forecast (non-CONUS)</td>\n            <td>1997+ Stage IV adjusted by PRISM (CONUS)\n            <br />1950-1997 ERA5-Land (CONUS)\n            <br />ERA5-Land (non-CONUS)</td>\n        </tr>\n\n        <tr>\n            <th scope=\"row\">\n                2m Air Temperature<br />\n                2 m Dew Point Temperature<br />\n                10m Wind Speed\n            </th>\n            <td>Crude ASOS grid analysis</td>\n            <td>2010+: RTMA, once available (CONUS)\n            <br />1950-2010 ERA5-Land</td>\n        </tr>\n\n        <tr>\n            <th scope=\"row\">4 inch (cough 0-10 or 0-7cm) Soil Temperature</th>\n            <td>HRRR</td>\n            <td>1950+: ERA5-Land</td>\n        </tr>\n\n        <tr>\n            <th scope=\"row\">Sky Coverage</th>\n            <td>Crude ASOS grid analysis</td>\n            <td>Crude ASOS grid analysis</td>\n        </tr>\n\n        </tbody>\n    </table>\n</div>\n\n<h3 class=\"mt-5 mb-4\">Daily Data Sources</h3>\n\n<p>Since IEMRE intends to support real-time modeling needs, the goal is to have\nat least a first guess analysis of all fields by approximately midnight. These\nfields are refined as better and more detailed data is processed.</p>\n\n<div class=\"table-responsive\">\n    <table class=\"table table-striped table-hover\">\n        <thead class=\"table-dark\">\n            <tr>\n                <th scope=\"col\">Variable</th>\n                <th scope=\"col\">Intermediate Source</th>\n                <th scope=\"col\">Final Source</th>\n            </tr>\n        </thead>\n        <tbody>\n\n        <tr>\n            <th scope=\"row\">High/Low 4 inch (cough 0-10 or 0-7cm) Soil Temperature</th>\n            <td>HRRR</td>\n            <td>1950+: ERA5-Land</td>\n        </tr>\n\n        <tr>\n            <th scope=\"row\">Average 2m Dew Point Temperature</th>\n            <td>Simple average of hourly RTMA</td>\n            <td>2010+: RTMA, once available<br />1950-2010 ERA5-Land</td>\n        </tr>\n\n        <tr>\n            <td scope=\"row\">24 Hour Snowfall at 12 UTC</td>\n            <td scope=\"row\">\n            <a href=\"https://www.nohrsc.noaa.gov/snowfall/\">NOHRSC Snowfall</a></td>\n            <td scope=\"row\">2008+: NOHRSC\n            <br />Prior: COOP snowfall analysis.</td>\n        </tr>\n\n        </tbody>\n    </table>\n</div>\n\n<h3 class=\"mt-5 mb-4\">Data Access</h3>\n\n<p>Here are some JSON web services you may try.</p>\n\n<div class=\"row g-3\">\n    <div class=\"col-lg-12\">\n        <div class=\"card\">\n            <div class=\"card-header bg-secondary text-white\">\n                <h5 class=\"mb-0\">MultiDay Request</h5>\n            </div>\n            <div class=\"card-body\">\n                <p class=\"card-text\"><strong>Form:</strong></p>\n                <code class=\"d-block bg-light p-2 rounded\">{$EXTERNAL_BASEURL}/iemre/multiday/{YYYY-MM-DD::date1}/{YYYY-MM-DD::date2}/{LAT}/{LON}/json</code>\n                <p class=\"card-text mt-2\"><strong>Example:</strong></p>\n                <code class=\"d-block bg-light p-2 rounded\">{$EXTERNAL_BASEURL}/iemre/multiday/2010-05-01/2010-09-30/42.54/-96.40/json</code>\n            </div>\n        </div>\n    </div>\n</div>\n<div class=\"row g-3\">\n    <div class=\"col-lg-12\">\n        <div class=\"card\">\n            <div class=\"card-header bg-secondary text-white\">\n                <h5 class=\"mb-0\">Single Day Request</h5>\n            </div>\n            <div class=\"card-body\">\n                <p class=\"card-text\"><strong>Form:</strong></p>\n                <code class=\"d-block bg-light p-2 rounded\">{$EXTERNAL_BASEURL}/iemre/daily/{YYYY-MM-DD}/{LAT}/{LON}/json</code>\n                <p class=\"card-text mt-2\"><strong>Example:</strong></p>\n                <code class=\"d-block bg-light p-2 rounded\">{$EXTERNAL_BASEURL}/iemre/daily/2010-05-01/42.54/-96.40/json</code>\n            </div>\n        </div>\n    </div>\n</div>\n<div class=\"row g-3\">\n    <div class=\"col-lg-12\">\n        <div class=\"card\">\n            <div class=\"card-header bg-secondary text-white\">\n                <h5 class=\"mb-0\">Hourly Request</h5>\n            </div>\n            <div class=\"card-body\">\n                <p class=\"card-text\"><strong>Form:</strong></p>\n                <code class=\"d-block bg-light p-2 rounded\">{$EXTERNAL_BASEURL}/iemre/hourly/{YYYY-MM-DD}/{LAT}/{LON}/json</code>\n                <p class=\"card-text mt-2\"><strong>Example:</strong></p>\n                <code class=\"d-block bg-light p-2 rounded\">{$EXTERNAL_BASEURL}/iemre/hourly/2010-05-01/42.54/-96.40/json</code>\n                <small class=\"text-muted\">Single Day's Hourly (CDT/CST) Request</small>\n            </div>\n        </div>\n    </div>\n</div>\n\n<h4 class=\"mt-5 mb-3\">Raw Data Access</h4>\n\n<p>The IEM makes extensive use of the <a href=\"https://www.unidata.ucar.edu/software/netcdf/\">NetCDF</a>\nfile format to store these gridded datasets.  You can find individual web directories for various\nIEMRE related datasets:</p>\n\n<div class=\"row g-3\">\n    <div class=\"col-md-6 col-lg-4\">\n        <div class=\"list-group\">\n            <a href=\"/onsite/iemre/\" class=\"list-group-item list-group-item-action\">\n                <i class=\"fas me-2\"></i>IEMRE CONUS Files\n                    <i class=\"bi bi-hdd-network me-2\" aria-hidden=\"true\"></i>IEMRE CONUS Files\n            </a>\n            <a href=\"/onsite/iemre_china/\" class=\"list-group-item list-group-item-action\">\n                <i class=\"fas me-2\"></i>IEMRE China Files\n                    <i class=\"bi bi-hdd-network me-2\" aria-hidden=\"true\"></i>IEMRE China Files\n            </a>\n            <a href=\"/onsite/iemre_europe/\" class=\"list-group-item list-group-item-action\">\n                <i class=\"fas me-2\"></i>IEMRE Europe Files\n                    <i class=\"bi bi-hdd-network me-2\" aria-hidden=\"true\"></i>IEMRE Europe Files\n            </a>\n            <a href=\"/onsite/iemre_sa/\" class=\"list-group-item list-group-item-action\">\n                <i class=\"fas me-2\"></i>IEMRE South America Files\n                    <i class=\"bi bi-hdd-network me-2\" aria-hidden=\"true\"></i>IEMRE South America Files\n            </a>\n            <a href=\"/onsite/era5land/\" class=\"list-group-item list-group-item-action\">\n                <i class=\"bi bi-cloud me-2\" aria-hidden=\"true\"></i>ERA5Land Hourly Netcdf Files\n            </a>\n            <a href=\"/onsite/mrms/\" class=\"list-group-item list-group-item-action\">\n                <i class=\"bi bi-broadcast-pin me-2\" aria-hidden=\"true\"></i>MRMS CST Daily Netcdf Files\n            </a>\n        </div>\n    </div>\n    <div class=\"col-md-6 col-lg-4\">\n        <div class=\"list-group\">\n            <a href=\"/onsite/stage4/\" class=\"list-group-item list-group-item-action\">\n                <i class=\"bi bi-graph-up-arrow me-2\" aria-hidden=\"true\"></i>NCEP Stage IV Hourly Data\n            </a>\n            <a href=\"/onsite/prism/\" class=\"list-group-item list-group-item-action\">\n                <i class=\"bi bi-signpost me-2\" aria-hidden=\"true\"></i>Oregon State PRISM Daily Data\n            </a>\n        </div>\n    </div>\n</div>\n\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/iemre/multiday.py",
    "content": "\"\"\"implemented in pylib/iemweb/iemre/multiday.py\"\"\"\n\nfrom iemweb.iemre.multiday import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/index.css",
    "content": "/* Custom styles for IEM homepage */\n\n/* Button icons */\na.book {\n    background: url(/images/book.png) no-repeat 10px center;\n    background-size: 24px 24px;\n    padding-left: 40px;\n}\n\na.agweather {\n    background: url(/images/tractor.png) no-repeat 10px center;\n    background-size: 24px 24px;\n    padding-left: 40px;\n}\n\na.nws {\n    background: url(/images/nws.png) no-repeat 10px center;\n    background-size: 24px 24px;\n    padding-left: 40px;\n}\n\n/* Card improvements */\n.card {\n    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n    border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header {\n    background-color: #f8f9fa;\n    border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n    font-weight: 500;\n}\n\n/* List group in cards */\n.list-group-flush .list-group-item {\n    border-left: 0;\n    border-right: 0;\n    border-radius: 0;\n}\n\n.list-group-item-action:hover {\n    background-color: #f8f9fa;\n}\n\n/* Feature sections */\n.feature-section {\n    margin: 2rem 0;\n}\n\n/* Partner logos responsive improvements */\n@media (max-width: 768px) {\n    .partners-section {\n        text-align: center;\n    }\n    \n    .partners-section .col-6 {\n        margin-bottom: 1rem;\n    }\n}\n"
  },
  {
    "path": "htdocs/index.js",
    "content": "// Vanilla JavaScript - no jQuery\nfunction onFeatureData(data) {\n    const goodVotes = document.getElementById(\"feature_good_votes\");\n    const badVotes = document.getElementById(\"feature_bad_votes\");\n    const abstainVotes = document.getElementById(\"feature_abstain_votes\");\n    const featureMsg = document.getElementById(\"feature_msg\");\n    const featureBtns = document.querySelectorAll(\"button.feature_btn\");\n    \n    if (goodVotes) {goodVotes.textContent = data.good;}\n    if (badVotes) {badVotes.textContent = data.bad;}\n    if (abstainVotes) {abstainVotes.textContent = data.abstain;}\n    \n    if (!data.can_vote) {\n        if (featureMsg) {\n            featureMsg.innerHTML = '<i class=\"bi bi-check-lg\" aria-hidden=\"true\"></i> Thanks for voting!';\n        }\n        featureBtns.forEach(btn => {\n            btn.disabled = true;\n        });\n    }\n}\n\n// Fetch data using modern fetch API\nasync function fetchFeatureData(url) {\n    const response = await fetch(url);\n    if (!response.ok) {\n        throw new Error(`HTTP error! status: ${response.status}`);\n    }\n    const data = await response.json();\n    onFeatureData(data);\n}\n\n// Add event listeners when DOM is loaded\ndocument.addEventListener('DOMContentLoaded', () => {\n    // Add click handlers to feature buttons\n    const featureBtns = document.querySelectorAll(\"button.feature_btn\");\n    featureBtns.forEach(btn => {\n        btn.addEventListener('click', (event) => {\n            const voting = event.target.dataset.voting;\n            if (voting) {\n                fetchFeatureData(`/onsite/features/vote/${voting}.json`);\n            }\n        });\n    });\n    \n    // Load initial vote data\n    fetchFeatureData(\"/onsite/features/vote.json\");\n});"
  },
  {
    "path": "htdocs/index.phtml",
    "content": "<?php\n/*\n * The IEM homepage!\n */\nrequire_once '../config/settings.inc.php';\ndefine(\"IEM_APPID\", 1);\nrequire_once '../include/mlib.php';\nforce_https();\nrequire_once '../include/myview.php';\nrequire_once '../include/generators.php';\nrequire_once '../include/iemprop.php';\nrequire_once '../include/cameras.inc.php';\n\n$t = new MyView();\n$t->headextra = <<<EOM\n<link rel=\"alternate\" type=\"application/rss+xml\"\n  title=\"IEM News + Notes Feed\"\n  href=\"/rss.php\" />\n<link rel=\"stylesheet\" href=\"index.css\" />\nEOM;\nif (date(\"md\") == \"0911\" || isset($_GET[\"911\"])){\n    $feature = <<<EOM\n<h1 class=\"text-center\">Remembering 9/11</h1>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n<p class=\"lead\">The fateful day of September 11th, 2001 is a distant memory for some, a\nconstant nightmare for others and an unexperienced event for most college age\nstudents and younger.  May we all not forget the ultimate sacrifice many made\nthat day and the years that followed.</p>\n</div>\n<div class=\"col-md-6\">\n<img src=\"/images/911.jpg\" class=\"img-fluid\">\n<br />&copy; Gordon Donovan/Yahoo News\n</div>\n</div>\n\nEOM;\n} else {\n    $feature = gen_feature($t);\n}\n$iemperf = $get_website_stats();\n$lsr_snow = get_iemprop(\"homepage.lsrmap.on\");\n\n$rancam = \"\";\n$loop = 0;\nwhile ($rancam == \"\" && $loop < 20)\n{\n    $cam = array_rand($cameras);\n    $camfn = \"/mesonet/ldmdata/camera/stills/{$cam}.jpg\";\n    if (is_file($camfn) && filemtime($camfn) > (time() - 1200))\n    {\n        $rancam = $cam;\n    }\n    $loop += 1;\n}\nif ($rancam == \"\"){ $rancam = \"ISUC-006\";}\n\n$lsrsnow = \"\";\n$nunce = time();\nif ($lsr_snow == 'true'){\n    $lsrsnow =  <<<EOM\n<div class=\"card mb-3\">\n<div class=\"card-header\">NWS Snowfall Reports:</div>\n  <div class=\"card-body\">\n<a href=\"/data/lsr_snowfall.png\">\n<img src=\"/data/lsr_snowfall.png?{$nunce}\" border=\"0\" alt=\"LSR Snowfall\" class=\"img-fluid\"/></a>\n  <a href=\"/lsr/?by=wfo&wfo=DMX,DVN,ARX,FSD,OAX&seconds=43200\">View Snowfall Reports on Map</a>\n  </div>\n</div>\nEOM;\n}\n\n$news = $get_recent_news();\n\n$nounce = time();\n$t->content = <<<EOM\n      <div class=\"row\">\n\n        <div class=\"col-md-9\">\n\n <p>The Iowa Environmental Mesonet (IEM) collects environmental data from\n cooperating members with observing networks. The data are stored and made\n available on this website.</p>\n\n\n<div class=\"row\">\n<div class=\"col-12 col-md-4 mb-2\">\n<a href=\"/agweather/\" class=\"btn btn-outline-secondary w-100 agweather\">Ag Weather</a>\n</div>\n<div class=\"col-12 col-md-4 mb-2\">\n<a href=\"/nws/\" class=\"btn btn-outline-secondary w-100 nws\">NWS Users</a>\n</div>\n<div class=\"col-12 col-md-4 mb-2\">\n<a href=\"/archive/\" class=\"btn btn-outline-secondary w-100 book\">Researchers</a>\n</div>\n</div>\n\n{$feature}\n        </div><!--/col-md-9-->\n        <div class=\"col-md-3\">\n\n{$lsrsnow}\n\n<div class=\"card mb-3\">\n  <div class=\"card-header\">{$cameras[$rancam][\"name\"]}, {$cameras[$rancam][\"state\"]} Webcam:</div>\n  <div class=\"card-body\">\n<a href=\"/current/webcam.php#{$cameras[$rancam][\"network\"]}-0\"><img src=\"/data/camera/stills/{$rancam}.jpg?{$nunce}\" border=\"0\" alt=\"Webcam\" class=\"img-fluid\"/></a>\n<div class=\"mt-2\">\n<a href=\"/current/webcam.php#{$cameras[$rancam][\"network\"]}-0\">View other webcams</a>\n</div>\n  </div>\n</div>\n\n<div class=\"card mb-3\">\n  <div class=\"card-header\">Most Popular (<a href=\"/apps.php\">List Apps</a>)</div>\n  <div class=\"card-body\">\n<div class=\"list-group list-group-flush\">\n<a href=\"/plotting/auto/\" class=\"list-group-item list-group-item-action\">Automated Data Plotting</a>\n<a href=\"/climodat/\" class=\"list-group-item list-group-item-action\">Climodat Reports</a>\n<a href=\"/timemachine/?product=1\" class=\"list-group-item list-group-item-action\">Iowa Mesonet Plot</a>\n<a href=\"/one/\" class=\"list-group-item list-group-item-action\">IEM One <small class=\"text-muted\">(RADAR + Warnings)</small></a>\n<a href=\"/rainfall/\" class=\"list-group-item list-group-item-action\">IEM GIS Rainfall</a>\n<a href=\"/my/current.phtml\" class=\"list-group-item list-group-item-action\">Sortable Currents</a>\n<a href=\"/onsite/features/tags/winter2526.html\" class=\"list-group-item list-group-item-action\">Winter Storms of 2025-2026</a>\n</div>\n    </div>\n</div>\n\n<div class=\"card mb-3\">\n  <div class=\"card-header\">News Items &nbsp; <a href=\"/rss.php\"><img src=\"/images/rss.gif\" /></a></div>\n  <div class=\"card-body\">\n\n{$news}\n\n<p><i class=\"bi bi-envelope\"></i>\n<a href=\"https://groups.google.com/g/iem-dailyb\">Sign up</a> for the\n<a href=\"/data/iemdb.html\">Daily Bulletin</a></p>\n\n  </div>\n</div>\n\n{$iemperf}\n\n        </div><!--/span-->\n      </div><!--/row-->\n\n<div class=\"row g-4 mt-4\">\n    <div class=\"col-md-4\">\n        <div class=\"text-center\">\n            <h3>Soil Temperatures</h3>\n            <a href=\"/agclimate/soilt.php\"><img src=\"/data/soilt_day1.png?{$nounce}\" class=\"img-fluid rounded shadow-sm\" /></a>\n            <p class=\"mt-3\">Data from the <a href=\"/agclimate\">Iowa State Soil Moisture Network</a>\n            is found on this website\n            and daily soil temperature averages are used to produce the highlighted\n            analysis.</p>\n        </div>\n    </div>\n    <div class=\"col-md-4\">\n        <div class=\"text-center\">\n            <h3>Precipitation</h3>\n            <a href=\"/timemachine/?product=82\"><img src=\"/data/iowa_ifc_1d.png\" class=\"img-fluid rounded shadow-sm\" /></a>\n            <p class=\"mt-3\"><a href=\"/current/index.phtml/precipitation\">More Precipitation Maps</a></p>\n        </div>\n    </div>\n    <div class=\"col-md-4\">\n        <div class=\"text-center\">\n            <h3>Current Data</h3>\n            <a href=\"/timemachine/?product=1\"><img src=\"/data/mesonet.gif\" class=\"img-fluid rounded shadow-sm\" /></a>\n            <p class=\"mt-3\">The IEM combines data from participating networks into products\n            like maps shown above and web applications to analyze the data.</p>\n            <p><a href=\"/current/\">More current products &raquo;</a></p>\n        </div>\n    </div>\n</div><!--/row-->\n\nEOM;\n\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/info/contacts.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Contacts\";\n\n$t->content = <<<EOM\n\n<h3>IEM Contacts</h3>\n\n<p>After the death of <a href=\"/onsite/news.phtml?id=1378\">Dr Ray Arritt</a>, a\nnew project coordinator has yet to be named. Please address all questions to\ndaryl.</p>\n\n<div class=\"alert alert-danger\">\nPlease send daryl an email before calling him!  Daryl rapidly turns around emails\nand can provide you web links to the resources you are looking for!\n</div>\n\n<h4>IEM Website Developer: daryl herzmann</h4>\n\n<br>716 Farm House Ln\n<br>Iowa State University\n<br>Ames, IA 50011\n<br><i>Email:</i> <a href=\"mailto:akrherz@iastate.edu\">akrherz@iastate.edu</a>\n<br><i>Phone:</i> 515.451.9249 (Please email before calling, please!)\n<br /><i>Blue Sky</i>\n<a href=\"https://bsky.app/profile/akrherz.bsky.social\">akrherz.bsky.social</a> \n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/info/datasets.php",
    "content": "<?php\n/*\n * Datasets listing app\n */\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 84);\nrequire_once \"../../include/vendor/erusev/parsedown/Parsedown.php\";\n\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\n$mesosite = iemdb(\"mesosite\");\n$t = new MyView();\n\n$myid = get_str404(\"id\", null);\n// Sanitize $myid\nif (!is_null($myid)) {\n    if (preg_match('/^[a-z_]+$/', $myid) != 1) {\n        $myid = null;\n    }\n}\n$t->title = \"Datasets :: {$myid}\";\n\nfunction get_text($pageid)\n{\n    $fn = \"../../docs/datasets/{$pageid}.md\";\n    $Parsedown = new Parsedown();\n    $c = $Parsedown->text(file_get_contents($fn));\n    $ts = date(\"F d, Y\", filemtime($fn));\n    $content = <<<EOM\n<div class=\"card border-info\">\n<div class=\"card-body\">\n{$c}\n</div>\n<div class=\"card-footer\">Updated: {$ts} <a href=\"/info/datasets/{$pageid}.html\">Permalink</a></div>\n</div>\nEOM;\n    return $content;\n}\n\n$content = \"\";\n$pages = array();\nif (is_null($myid)) {\n    if ($dh = opendir(\"../../docs/datasets\")) {\n        while (($file = readdir($dh)) !== false) {\n            if ($file == '.' || $file == '..' || $file == 'template.md') continue;\n            $pageid = preg_replace('/\\\\.[^.\\\\s]{2,4}$/', '', $file);\n            $pages[] = $pageid;\n            $content .= get_text($pageid);\n        }\n    }\n} else {\n    $content .= get_text($myid);\n}\n$tags = '';\nforeach ($pages as $k => $page) {\n    $tags .= sprintf(\"<a href=\\\"#%s\\\" class=\\\"btn btn-secondary\\\">%s</a>\", $page, $page);\n}\nif ($tags == '') {\n    $tags = \"<a href=\\\"/info/datasets/\\\" class=\\\"btn btn-secondary\\\"><i class=\\\"bi bi-list-ul\\\" aria-hidden=\\\"true\\\"></i> List All Datasets</a>\";\n} else {\n    $tags = \"<strong>Documented Datasets:</strong> :\" . $tags;\n}\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n<li class=\"breadcrumb-item\"><a href=\"/info/\">IEM Information</a></li>\n<li class=\"breadcrumb-item\"><a href=\"/info/datasets/\">IEM Dataset Documentation</a></li>\n<li class=\"breadcrumb-item active\" aria-current=\"page\">{$myid}</li>\n</ol>\n</nav>\n\n{$tags}\n\n{$content}\n\nEOM;\n\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/info/iem.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Information\";\n$t->content = <<<EOM\n\n<h3>Iowa Environmental Mesonet</h3>\n\n<p><strong>Last Updated:</strong> 2 February 2024</p>\n\n<br><div><h3>Background</h3>\n<p>The Iowa Environmental Mesonet [IEM] aims to gather, collect,\ncompare, disseminate and archive observations made in Iowa and beyond.  Unlike other \nmesonet projects, the IEM does not own or operate any of the automated stations.\nRather, the IEM collects data from existing public resources.  The result\nis a low-cost, high resolution mesonet for use in a wide \nrange of disciplines.</p>\n\n<p>One of the first questions we are often asked is, 'What does\nMesonet mean?' <i>Meso-net</i> is a combination of two meteorological\nterms.  <i>Meso</i> refers to a spatial scale on which Meteorologists\ndefine certain weather phenomena. In the context of an observing network,\n<i>meso</i> refers to a spatial scale at which a network of sensors can\nresolve mesoscale phenomena.  Mesonet implies a spatially and temporarily\ndense set of observing stations.</p>\n\n<br><h3>Partners</h3>\n<p>The IEM would not be possible without the generous cooperation\nand support from federal, state and local agencies as well as the private \nsector.  These groups have been very supportive of the IEM and responsive to\nrequests made by the IEM. Among these include...\n<ul>\n <li>Iowa Department of Transportation [IaDOT]</li>\n <li>Iowa State University & Department of Agronomy [ISU]</li>\n <li>Various broadcast TV stations</li>\n <li>National Weather Service [NWS]</li>\n</ul>\n\n<br><h3>Data Networks</h3>\n<p>As of the year 2024, the IEM is gathering information from the following:\n<ul>\n <li>Automated Surface Observing System [<a href=\"/ASOS/\">ASOS/AWOS</a>]</li>\n <li>Cooperative Observer Program [<a href=\"/COOP/\">COOP</a>]</li>\n <li>Community Collaborative Rain, Hail and Snow Network [<a href=\"https://cocorahs.org\">CoCoRaHS</a>]</li>\n <li>River Gauges / Data Collection Platforms [<a href=\"/DCP/\">DCP</a>]</li>\n <li>Iowa State University Soil Moisture Network [<a href=\"/agclimate\">ISUAG</a>]</li>\n <li>Roadway Weather Information System [<a href=\"/RWIS/\">RWIS</a>]</li>\n <li>Soil Climate Analysis Network [<a href=\"/scan/\">SCAN</a>]</li>\n <li>US Climate Reference Network [<a href=\"/current/uscrn.phtml\">USCRN</a>]</li>\n</ul></p>\n\n<p>Clearly, the aforementioned list provides a wide range of\nmeasurements for the state of Iowa.  The networks have <b>not</b> been\ndeveloped for similar purposes.  The ASOS/AWOS stations are located at\nAirports in support of aviation and weather prediction.  The SCAN site\nprovides detailed information about soil conditions and has no direct\napplication for use in aviation.  The RWIS sites are located near major\nhighways and provide pavement temperatures for frost forecasting and\nchemical application guidance.  The ISUAG sites primarily monitor soil\ntemperatures and augment precipitation observations in the state. \n The DCP network provides river gauging needed\nfor flood prediction and observation.  The COOP provides a daily weather \nrecord for climatological use.</p>\n\n<p>If you put all of these networks together, you can see the value\nthat each network brings.  Combining them into one product is very\ndifficult, hence the need for the IEM.  Sites in different networks are \nnot always similar in reporting\nroutines.  For example, many stations report wind information, but not \nevery station is\nat the same height or not every station averages the same way or not every\nstation reports in the same units.  These issues are important to consider\nbefore beginning any quality control work.</p>\n\n\n<p>If you have any questions or comments, please\n<a href=\"contacts.php\">let us know</a>.\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/info/links.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Links\";\n$t->content = <<<EOM\n\n<h3>Mostly Outdated Links :/</h3><p>\n\n<div class=\"row\"><div class=\"col-sm-6\">\n\n<h3>Other State Mesonets:</h3>\n<ul>\n <li><a href=\"http://www.georgiaweather.net/\">Georgia Environmental Network</a></li>\n <li><a href=\"https://mesonet.k-state.edu\">Kansas Mesonet</a></li>\n <li><a href=\"http://www.kymesonet.org\">Kentucky Mesonet</a></li>\n <li><a href=\"http://mesowest.utah.edu/\">Meso West</a></li>\n <li><a href=\"http://agebb.missouri.edu/weather/\">Missouri</a></li>\n <li><a href=\"http://nysmesonet.org/\">New York Mesonet</a></li>\n <li><a href=\"https://mesonet.org\">Oklahoma Mesonet</a></li>\n <li><a href=\"http://chiliweb.southalabama.edu/\">South Alabama Mesonet</a></li>\n <li><a href=\"http://www.mesonet.ttu.edu/\">West Texas Mesonet</a></li>\n <li><a href=\"https://wisconet.wisc.edu/\">Wisconsin - Wisconet</a></li>\n</ul>\n\n<h3>Real Time Air Quality Charts and Maps</h3>\n\n<p>Air pollutant concentrations are monitored for the DNR Air Quality\nBureau by the University of Iowa Hygienic Laboratory, the Polk County\nHealth Department, and the Linn County Health Department. You can\naccess this data in the following locations:</p>\n\n<ul>\n<li><A href=\"http://www.linncleanair.org/Default.aspx\">Linn County Health Department</A> (monitors in Linn County, Waterloo, Waverly) </li>\n\n<li><A href=\"http://www.polkcountyiowa.gov/airquality/\">Polk County Air Pollution Control</A> (monitors in Polk County)</li>\n<li><A href=\"http://airnow.gov/\">EPA AIRNOW</A>(national maps)</li>\n</ul>\n\n<h3>Iowa Links:</h3>\n<ul>\n <li><a href=\"http://www.weatherview.dot.state.ia.us/\">Iowa DOT WeatherView</a></li>\n <li><a href=\"http://www.511ia.org/\">Iowa 511 Website</a></li>\n</ul>\n\n</div><div class=\"col-sm-6\">\n\n<h3>Other Links:</h3>\n<ul>\n <li><a href=\"http://www.iowaagriculture.gov/climatology.asp\">Iowa State Climatologist Office</a></li>\n <li><a href=\"http://205.156.54.206/om/coop/index.htm\">National COOP Observer Program</a></li>\n <li><a href=\"http://www.weatherview.dot.state.ia.us/\">Iowa DOT WeatherView</a></li>\n <li><a href=\"http://www.missouri.edu/~moclimat/\">Missouri Climate Center</a></li>\n <li><a href=\"http://www.crh.noaa.gov/ncrfc/index.html\">North Central River Forecast Center</a> NWS</li>\n <li><a href=\"http://extension.agron.iastate.edu/soils/PDFs/acretrends.pdf\">Corn/Soybean Acres planted in Iowa</a></li>\n <li><a href=\"http://igic.gis.iastate.edu\">Iowa GIS Council [IGIC]</a></li>\n <li><a\n href=\"http://igic.gis.iastate.edu/about/committee/natural-resources\">IGIC\n Weather/Climate/Environment Sub-Committee</a></li>\n <li><a href=\"http://www.uni.edu/storm/\">UNI Storm Project</a></li>\n <li><a href=\"http://hpcc.unl.edu/\">High Plains Regional Climate Center</a></li>\n <li><a href=\"http://has.ncdc.noaa.gov/\">NCDC Level II/III RADAR Archive</a></li>\n</ul>\n\n<p><h3>Publicity</h3>\n<br />Sep 2005, <a href=\"http://www.unidata.ucar.edu/newsletter/05sep/05sepel.html#Article2\">Unidata Newsletter</a>\n<br>27 Feb 2004, <a href=\"http://archive.inside.iastate.edu/2004/0227/weather.shtml\">Inside Iowa State</a>\n<br>Jan 2004, <a href=\"http://www.agron.iastate.edu/Agron/News/2003_Agron_Alumni_News_Web.pdf\">2003 Agronomy Alumni Newsletter</a>\n<br>01 Jul 2003, <a href=\"http://www.iastate.edu/~nscentral/releases/2003/jul/mesonet.shtml\">Iowa State News Service</a>\n<br>27 Feb 2003, <a href=\"http://www.zwire.com/site/news.cfm?newsid=7200551&BRD=1813&PAG=461&dept_id=68588&rfi=6\">Iowa Falls Times-Citizen</a>\n<br>14 Jan 2003, <a href=\"http://www.las.iastate.edu/newnews/mesonet.shtml\">ISU Liberal Arts & Sciences <i>around LAS</i></a>\n<br>12 Dec 2002, <a href=\"http://www.ag.iastate.edu/aginfo/agaction/agaction.php?date=2002-12-12&function=view\">ISU Agricultural Action</a>\n<br>November 2002, <a href=\"http://www.nwas.org/2002awards.html\">National Weather Association, Larry R Johnson Award</a>\n<br>November 2002, <a href=\"http://www.cipco.net/images/advocate/200211PDF.pdf\">CIPCO Advocate</a>\n\n</div></div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/info/nni.css",
    "content": ".figure {\n    background: #eee;\n    border: 2px dashed #000;\n    text-align: center;\n}\n\n.ptext h3 {\n    border-bottom: 1px solid #00f;\n    padding-top: 30px;\n}\n\n.ptext h4 {\n    padding-left: 45px;\n    color: #f00;\n}\n\n.equation img {\n    float: left;\n}\n\n.equation span {\n    font-size: 0.8em;\n}\n\ntable {\n    caption-side: bottom;\n}\n"
  },
  {
    "path": "htdocs/info/nni.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Representivity\";\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/info/nni.css\">\nEOM;\n$t->content = <<<EOM\n<h2>IEM Representivity Analysis</h2>\n\n<h4>Daryl Herzmann and Jeff Wolt\n<br />Department of Agronomy, Iowa State University</h4>\n\n<p>The scale of representivity of a sampling network determines the area\nand time over which a measurement represents true conditions. This\ndocument provides information and statistics regarding the spatial\nrepresentativity of the Iowa Environmental Mesonet (IEM)\nfollowing methodology described by Dubois (2000).\n\n<ol>\n <li><a href=\"#introduction\">Introduction</a></li>\n <li><a href=\"#nearest\">Nearest Neighbor Index</a></li>\n <li><a href=\"#fractal\">Fractal Dimension</a></li>\n <li><a href=\"#morisita\">Morisita Index</a></li>\n <li><a href=\"#thiessen\">Thiessen Polygons</a></li>\n <li><a href=\"#represent\">Coefficient of Representativity</a></li>\n <li><a href=\"#conclusions\">Conclusions</a></li>\n</ol>\n\n<h3><a name=\"introduction\">1. Introduction:</a></h3>\n\n<p>The IEM is a collection of environmental monitoring networks that have\nbeen linked to produce a more precise analysis of weather and\nclimatic variables in the state than can be achieved with any single network.\nTo produce higher resolution products for\nthe entire state, point observations are often gridded onto a regular grid\nusing well known algorithms like nearest neighbor or a weighting function.\nThis\nprocess is not arbitrary due to the numerous tunable parameters to most any\nanalysis algorithm.  It is important to investigate the characteristics of\nthe Iowa Environmental Mesonet to determine the appropriate scales at\nwhich phenomena can be accurately analyzed.\n\n<p>Since the IEM is a collection of networks, each one is evaluated on its own.\nGroups of similar networks in data quality are then aggregated\nto explore the spatial statistical benefits of the IEM partnership.\n\n<p>\n<table cellpadding=\"3\" cellspacing=\"0\" border=\"1\">\n<caption>Table 1: An overview of the IEM networks used in this study.</caption>\n<thead>\n<tr><th>Abbreviation</th><th>Description</th><th>Map</th></tr>\n</thead>\n<tr><th>ASOS</th><td>The <a href=\"/ASOS/\">Automated Surface Observing System</a> sites are located at primary airports and are maintained by the National Weather Service.  This network is rigorously checked and\n quality controlled.  For Iowa, a limitation of the ASOS network is the\nlack of sites located in Westcentral and Southwest Iowa.</td><td><img src=\"nni_images/asos_locs.png\"></tr>\n\n<tr><th>AWOS</th><td>The <a href=\"/AWOS/\">Automated Weather Observing System</a> sites are located at secondary airports and\nare maintained by state government entities via third\nparty contractors.  Data quality should be comparable with the ASOS network\nsince they are using similar instrumentation, but a number of factors\nproduce biases when compared with the ASOS network.  The main issues include\nsiting, maintenance schedules, and network communication.  Most of the significant\ndifferences between the ASOS and AWOS network show up in the temperature\nand dew point measurements due to siting. </td><td><img src=\"nni_images/awos_locs.png\"></tr>\n\n<tr><th>RWIS</th><td>The <a href=\"/RWIS/\">Roadway Weather Information System</a> sites are located along side interstates and highways.  They are maintained by their respective state department of transportation via a\nthird party contractor.  Atmospheric data from this network is of lesser\nquality than the ASOS or AWOS networks.  The primary purpose of the RWIS network is for automated observation of winter weather. The IEM collects RWIS data\nfrom Iowa, Minnesota, Wisconsin, Nebraska, and Kansas.  Other states may have\nRWIS networks, but often their data is proprietary.</td><td><img src=\"nni_images/rwis_locs.png\"></td></tr>\n\n<tr><th>SchoolNet</th><td>The IEM collects data from a number of <a href=\"/schoolnet/\">SchoolNets</a>.  The IEM collects data from three\nSchoolNet data networks operated by KCCI-TV, KIMT-TV, and KELO-TV.  Data\nquality is close to that of the RWIS network, but siting issues make\nmeasurements like wind and precipitation problematic. </td><td><img src=\"nni_images/snet_locs.png\"></td></tr>\n\n<tr><th>ISUAG</th><td>The <a href=\"/agclimate/\">ISU Ag Climate</a> sites primarily provide soil temperature and solar radiation readings.\nThey are maintained by the Iowa State University Experiment Station.  The main issue with this network is the timing of observations received.  Each station is called daily to download its observation record from the previous day. </td><td><img src=\"nni_images/isuag_locs.png\"></td></tr>\n</table>\n\n<p>\n\n<table cellpadding=\"3\" cellspacing=\"0\" border=\"1\">\n<caption>Table 2: Proposed combination of networks based on data quality\nand reliability.</caption>\n<thead>\n<tr><th>Abbreviation</th><th>Description</th><th>Map</th></tr>\n</thead>\n<tr><th>Tier 1</th><td>ASOS + AWOS:  The combination of these two networks is\ncommonly used in the meteorological community to produce various analysis\nproducts.  Both networks are located at airports and are for the most part\nwell maintained.  Their instrumentation is very similiar as well.</td><td><img src=\"nni_images/tier1_locs.png\"></tr>\n\n<tr><th>Tier 2</th><td>ASOS + AWOS + RWIS:  The RWIS network is included in\nthis grouping, since it has the closest data quality reputation to the\nASOS+AWOS networks.  The quality of the instrumentation used on the RWIS sites\nis close to those found on the AWOS sites.</td><td><img src=\"nni_images/tier2_locs.png\"></tr>\n\n<tr><th>Tier 3</th><td>ASOS + AWOS + RWIS + SchoolNet + ISUAG:  All\nnetworks included.</td><td><img src=\"nni_images/tier3_locs.png\"></tr>\n\n</table>\n\n<h3><a name=\"nearest\">2. Nearest Neighbors Index (NNI)</a></h3>\n\n<p>The NNI is a statistic comparing the mean minimum distances between sampling points to those that are expected by chance over some sampling area.\n\n<h4>Procedure:</h4>\n\n<p>Point shapefile coverages for each of the network groups were created.  These files were loaded into ESRI's ArcGIS 9.1 software.  An ArcGIS extension named\n <a href=\"http://arcscripts.esri.com/details.asp?dbid=12227\"><i>Nearest Neighbor Analysis / Event-Event Distances</i></a> written by Dr M. Sawada was used to compute the NNI.\n\n<h4>Data:</h4>\n<table cellpadding=3 cellspacing=0 border=1>\n<caption>Table 3:  NNI and associated statistics.</caption>\n<thead>\n<tr><th>Network</th><th>Sites</th><th>NNI</th><th>Z</th><th>Avg Min Distance<br />[km]</th><th>Expected Min Distance<br />[km]</th></tr>\n</thead>\n<tr><th>ASOS</th><td>38</td>\n    <td>1.05</td>\n    <td>0.76</td>\n    <td>38.3</td>\n    <td>36.5</td>\n</tr>\n<tr><th>AWOS</th><td>76</td>\n <td>1.14</td>\n <td>2.12</td>\n <td>40.9</td>\n <td>36.0</td>\n</tr>\n<tr><th>RWIS</th><td>101</td>\n <td>1.10</td>\n <td>1.88</td>\n <td>34.2</td>\n <td>31.0</td>\n</tr>\n<tr><th>SchoolNet</th><td>102</td>\n <td>0.69</td>\n <td>5.54</td>\n <td>21.4</td>\n <td>31.0</td>\n</tr>\n<tr><th>ISUAG</th><td>12</td>\n <td>0.76</td>\n <td>1.44</td>\n <td>74.7</td>\n <td>98.8</td>\n</tr>\n<tr><th>Tier 1</th><td>114</td>\n <td>0.82</td>\n <td>3.83</td>\n <td>20.6</td>\n <td>25.2</td>\n</tr>\n<tr><th>Tier 2</th><td>215</td>\n <td>0.72</td>\n <td>7.57</td>\n <td>13.9</td>\n <td>19.2</td>\n</tr>\n<tr><th>Tier 3</th><td>329</td>\n <td>0.76</td>\n <td>7.98</td>\n <td>12.0</td>\n <td>15.7</td>\n</tr>\n</table>\n\n<p>Table 3 presents the results of the NNI computation.  Also presented are\nthe Z statistic, average minimum distance between two sites and expected minimum distance\nbased on a homogeneous in space distribution of sites.\n\n<h4>Analysis:</h4>\n\n<table cellpadding=2 cellspacing=0 border=1>\n<caption>Table 4: NNI interpretation</caption>\n<thead>\n<tr><th>NNI Value</th><th>Details</th></tr>\n</thead>\n<tr><td>&gt; 1</td><td>increasing values greater than 1 indicate more dispersion</td></tr>\n<tr><td>= 1</td><td>indicates sampling points have a uniform distribution</td></tr>\n<tr><td> &lt; 1</td><td>decreasing values less than 1 indicate more clustering</td></tr>\n</table>\n\n<p>Table 3 shows the results of the NNI computation. For NNI, the closest\nvalue to unity (which is desired for this statistic) is the ASOS network.\nThis implies that the ASOS network is representative at the expected minimum\ndistance of 36.5 km.  For the most part, the AWOS and RWIS networks have\nvalues close to unity as well.  The SchoolNet and ISUAG values well below\nunity indicate clustering.  When the networks are grouped together, Tier 1\nhas the closest values to unity.  The addition of more clustered networks in\nTier 2 and Tier 3 negatively impact the NNI statistics.\n\n<p>The Z statistic is also presented in Table 3.   If the NNI statistic\nindicates dispersion or clustering, the Z statistic tests to see if the\ndifference of NNI from unity (randomness) is significant (Clark 1954).\nValues above 1.96 or below -1.96 indicate a 95% confidence that the\ndistribution is <b>not</b> randomly distributed.   The only networks within\nthis desired range are the ASOS, RWIS, and ISUAG networks.  The large value\nof 5.54 for the SchoolNet clearly indicates the clustering of this network\ngiven our domain of interest.  It is interesting to note that all three\n\"tiers\" of networks have rather large Z values.  This can be explained by\nconsidering that many cities (spatially confined area) have a station from\na couple of the networks.  Thus the combination of networks into tiers\nproduces some clustering.\n\n<h3><a name=\"fractal\">3.  Fractal Dimension</a></h3>\n\n<p>The fractal dimension (D<sub>m</sub>) is used to characterize the distribution of a\ngeophysical data array (Lovejoy 1986).   An uniform distribution of\nelements on the surface of the Earth will have a fractal dimension of 2.\nAll other distributions should have a value between 0 and 2, with the degree\nof inhomogeneity being measured by 2 - D<sub>m</sub>.\n\n<p>The correlation dimension (D<sub>c</sub>) is often used as an approximation\nto the fractal dimension since it is easier to compute.  To compute\n(D<sub>c</sub>), rings of increasing radius are formed around each member of\nthe observing network.  The number of stations are then counted within each\nof these rings and then averaged for rings of the same radius.  The result is\nan average station frequency at various distances.\n\n<p>Doswell and Lasher-Trapp (1997) point out two problems with the\ncomputation of the correlation dimension.  The first is the problem of\nconsidering stations located near the edge of the observing network.  These\nstations will only have a majority of their neighbors to one preferred\ndirection.  Data from these stations will bias the computation.  The other\nissue is the arbitrary nature of actually computing the correlation\ndimension which involves computing the slope of a line comparing the\nnatural log of the station count versus the natural log of station frequency.\nThis slope of this line, thus the correlation dimension, is often not\nconsistent throughout the range of data.  Two parts of the curve may appear\nto be very linear, but their slopes will often be much different.\n\n<h4>Procedure</h4>\n\n<p>A python script was written to compute the needed variables for the\ncorrelation dimension statistic.  The spatial computations were done in\nthe PostGIS database using the NAD83 UTM Zone15 North projection.\n\n<h4>Data</h4>\n<div class=\"figure\">\n<img src=\"nni_images/fractal.png\">\n<br />Figure 1: Correlation Dimension\n</div>\n\n<p>\n\n<table cellpadding=2 cellspacing=0 border=1>\n<caption>Table 5: Correlation dimension results</caption>\n<thead><th>Distance</th><th>ASOS</th><th>AWOS</th><th>RWIS</th><th>SchoolNet</th><th>ISUAG</th><th>Tier 1</th><th>Tier 2</th><th>Tier 3</th></tr></thead>\n\n<tr><td>30-100km</td><td>1.01</td><td>0.85</td><td>0.84</td><td>0.70</td><td>0.69</td><td>0.91</td><td>0.79</td><td>0.76</td></tr>\n\n<tr><td>30-300km</td><td>2.23</td><td>1.90</td><td>1.86</td><td>1.38</td><td>1.99</td><td>2.00</td><td>1.82</td><td>1.75</td></tr>\n\n\n</table>\n\n<h4>Analysis</h4>\n\n<p>The issues pointed out in Doswell (1997) are evident in this analysis.\n  The arbitrary selection of points used in the linear regression\nyield results that may not be accurate for the entire range of scales\nrepresented.  Ideally, values should not exceed 2 with 2 being an uniform\ndistribution in 2 dimensions.  In both ranges, values decrease with the\ninclusion of Tier 1, 2, and 3 collections.  The reason for this is the\nincreased bias introduced by edge effects as the center of the domain becomes\nmore densely populated and the exterior portions of the state (namely Northeast\nand Southern Iowa) become comparatively less.\n\n<h3><a name=\"morisita\">4. Morisita Index</a></h3>\n\n<p>The Morisita index investigates how much clustering occurs when a sampling\nnetwork is broken up into regular cells. If each cell has the same number of\nobservation points inside of it, then the index should indicate uniformity in\nspace at that scale. The equation is as follows:\n\n<p>\n<div class=\"equation\">\n<img src=\"nni_images/morisita_eqn.png\">\n<span>where Q is the total number of cells,\nn<sub>i</sub> is the number of samples in i<sup>th</sup> cell, and N is the\ntotal number of sampling points.</span>\n</div>\n\n<br clear=\"all\" />\n\n<h4>Procedure:</h4>\n\n<p>A python script was written to compute this value.  The spatial computations were\ndone in NAD83 UTM Zone 15N, which is a common projection for Iowa.\n\n<p>Figures 2 illustrates the procedure for computing the Morisita index for\na hypothetical network.\nWithin an area of interest, there is a distribution of observation\npoints (left side graphic).  The area of interest is divided up into\nequal sized cells; the number of cells  with sites in them\n(right side graphic) represents the contributing members to the Morisita index.\n\n<div class=\"figure\">\n<table cellpadding=\"3\" cellspacing=\"0\" border=\"1\">\n<thead>\n<tr><th>Observation Points</th><th>Divided up by 25 cells</th></tr>\n</thead>\n<tr><td><img src=\"nni_images/morisita_1.png\" border=\"2\"></td>\n    <td><img src=\"nni_images/morisita_2.png\" border=\"2\"></td>\n</tr></table>\n<br />Figure 2:  Illustration of Morisita Index\n</div>\n\n<p>In this example, the Morisita index is around 13.  This is a very high\nnumber and indicates clustering.  This procedure is iterated over\na range of grid cell sizes to arrive at a better understanding\nof how the clustering varies at different scales.\n\n<h4>Data:</h4>\n<div class=\"figure\">\n<img src=\"nni_images/morisita.gif\">\n<br />Figure 3: Morisita Index\n</div>\n\n\n\n<h4>Analysis:</h4>\n\n<div class=\"table\">\n<table cellspacing=\"0\" cellpadding=\"3\" border=\"1\">\n<caption>Table 6: Morisita Index Interruptation\n<thead>\n<tr><th>Value</th><th>Conclusion</th></tr>\n</thead>\n<tr><td>0</td><td>No clustering.  All of the cells had 1 or fewer sampling points.</td></tr>\n<tr><td>approaches 1</td><td>for regular distributions, the index increases to\na value of 1 with increasing cell size.</td></tr>\n\n<tr><td>nearly 1</td><td>if the distribution of samples is random but\nhomogeneous, the value will fluctuate around 1</td></tr>\n\n<tr><td> &gt; 1</td><td>clusters are present</td></tr>\n</table>\n</div>\n\n<p>Figure 3 indicates the scales at which clustering (values larger than 1)\nis ocurring.  At the smallest scales of 10-40 km, clustering is evident in\nthe Tier 2 and Tier 3 networks.  This makes practical sense considering\nthe co-placement of RWIS sites near cities with ASOS/AWOS sites in Tier 2 and\nthe overall clustering of SchoolNet sites in Tier 3.  The general clustering\nof Schoolnet sites is very evident with values well above unity.\n\n\n<h3><a name=\"thiessen\">5. Thiessen/Voronoi polygons</a></h3>\n\n<p>Thiessen polygons have been a traditional staple of the spatial\nstatistician. Each constructed polygon contains exactly one measurement\npoint while having the property of all points within the polygon being\ncloser to this measurement point than any\nother point.  Isolated measurements will therefore have larger polygons than\nclustered measurements.  Histograms of the area covered by these polygons\nprovide insight into network homogeneity.\n\n<h4>Procedure:</h4>\n\n<p>The point coverage shapefiles were loaded into ArcGIS 9.1.  The ArcInfo\nThiessen polygon tool was then used to generate the polygons.  These\npolygons were then clipped by the border of Iowa within ArcGIS as well.\nThe resulting coverage was exported to shapefile and then loaded into the\nIEM's spatial database for analysis.\n\n<h4>Data:</h4>\n<div class=\"figure\">\n<table cellspacing=\"0\" cellpadding=\"3\" border=\"1\">\n<thead><tr><th colspan=\"2\">Figure 4: Tier 1</th></tr></thead>\n<tr><td><img src=\"nni_images/tier1_areas.png\"></td><td><img src=\"nni_images/tier1_th.png\"></td></tr>\n<thead><tr><th colspan=\"2\">Figure 5: Tier 2</th></tr></thead>\n<tr><td><img src=\"nni_images/tier2_areas.png\"></td><td><img src=\"nni_images/tier2_th.png\"></td></tr>\n<thead><tr><th colspan=\"2\">Figure 6: Tier 3</th></tr></thead>\n<tr><td><img src=\"nni_images/tier3_areas.png\"></td><td><img src=\"nni_images/tier3_th.png\"></td></tr>\n</table>\n</div>\n\n<h4>Analysis:</h4>\n\n<p>Thiessen polygons provide a quick synopsis of how large of an area is\nrepresented by a single point.  Areas in a network that are under sampled can\nquickly be seen, since large anonolous polygons will visually stick out.\n\n<p>Figure 4 shows the histogram and Thiessen Polygons for Tier 1.  The\nundersampled areas of Northern Missouri, Northeastern Kansas, and South\nDakota are clearly seen by their comparatively large polygons.  The histogram\nillustrates this difference with a large clustering of smaller polygons and\nthen numerous large ones outside of Iowa.\n\n<p>The addition of the RWIS networks in Tier 2, shown in Figure 5, almost\nexasperates the situation.  The lack of RWIS sites in Missouri and South Dakota\ndon't help shrink the size of the polygons in those areas.  The result can\nbe seen in the histogram with the general trend of smaller polygons, but still\npossessing some very large ones as well.\n\n<p>For Tier 3, the clustering of sites in Central Iowa with the SchoolNet\nnetwork creates a large number of smaller polygons and doesn't help to eliminate\nthe larger polygons in Missouri and Illinois.  The histogram shows a mode\naround 500 km^2 with around 15% of the polygons at least 7 times larger.  The\nconclusion is that for the <b>entire domain</b>, the addition of other networks\nis only beneficial when those networks have stations in each state used for\nthis analysis.\n\n\n<h3><a name=\"represent\">6. Coefficient of Representativity</a></h3>\n\n<p>The Coefficient of Representativity (CR) was proposed by Dubois (2000) as a\nmeasure to combine the Thiessen polygons and the distance to the nearest\nneighbor.\n\n<p>\n<div class=\"equation\">\n<img src=\"nni_images/cr_eqn.png\">\n<span>The CR is a product of two terms, the first (A) is a simple ratio of\nthe area of the Thiessen polygon (S<sub>Th</sub>) to the mean\nThiessen polygon (S<sub>m</sub>): total area divided by number of\nsampling points); the second (B) is a ratio between the\nsquared distance between nearest neighbors and the same mean Thiessen polygon.</span>\n</div>\n\n<h4>Procedure:</h4>\n\n<p>Thiessen polygons and network coverages were loaded into the IEM spatial\ndatabase.  Python scripts were then written to analyze distances and compute\nother parameters needed for the CR.\n\n<h4>Data:</h4>\n<div class=\"figure\">\n<table>\n<tr><td>Figure 7:<br/><img src=\"nni_images/tier1_cr.png\"></td>\n    <td>Figure 8:<br/><img src=\"nni_images/tier2_cr.png\"></td></tr>\n<tr><td>Figure 9:<br/><img src=\"nni_images/tier3_cr.png\"></td>\n    <td></td></tr>\n</table>\n</div>\n\n<h4>Analysis:</h4>\n\n<table cellspacing=\"0\" cellpadding=\"3\" border=\"1\">\n<caption>Table 7: CR Interruptation</caption>\n<thead><tr><th>CR Value</th><th>Conclusion</th></tr></thead>\n<tr><td>CR &gt; 1</td><td>The measure is isolated.</td></tr>\n<tr><td>CR ~~ 1</td><td>Ideal case, measure is spatially uniform.</td></tr>\n<tr><td>CR &lt; 1</td><td>The measure is clustered</td></tr>\n</table>\n\n<p>Tier 1 clearly shows the lack of observing sensors in Missouri, Nebraska,\nand South Dakota.  Ideally, the \"white\" color would dominate the map\nindicating areas of uniform representativity.  The analysis shows that perhaps\nonly portions of Northcentral Iowa are representatively measured by sensors\nin Tier 1.\n\n<p>It is interesting to note the dark blotches that appear in Figure 8 for\nTier 2.  The dark blues represent clustering and those are locations where\na RWIS site is located close to one or more ASOS/AWOS sites.  The overall\nimpact of adding RWIS sites is to increase the sparsity in states where the\nIEM doesn't collect RWIS data.\n\n<p>The addition of SchoolNet data in Tier 3 only makes the contrast more\ndistinct.  It is interesting to note the strong gradient of CR along the\nIowa/Missouri border.  This is a result of a dearth of observations in\nNorthern Missouri.\n\n<h3><a name=\"conclusions\">7. Conclusions</a></h3>\n\n<p>To evaluate the spatial representativity of the Iowa Environmental Mesonet\n(IEM),\nfive spatial statistics were computed following the work done by Dubois (2000).\nWhile each statistic showed some positive aspects of the Mesonet collaboration,\nthey clearly point out the need for caution before blindly combining all\navailable data into a high resolution product.\n\n<p>The CR figures most clearly illustrate the difficulties of adding stations\nfrom other networks and their localized impact on the overall analysis.  It\nis particularly dangerous to add networks that are not uniformly distributed\nacross our domain of interest. The easy solution would be to add stations\nin those areas to 'fill in the holes'.  Up until this study,\nthe IEM has focused on adding other networks to fill in these holes without\nrealizing the implications of additional clustering in areas like Central and\nEastern Iowa.  This \"catch-22\" can clearly be seen in Figure 8 for Tier 2 when\nthe RWIS sites, which are often located near the same towns as ASOS/AWOS sites,\nare added.  The addition of nearly 70 SchoolNet sites in Central Iowa only\nfurther exasperates the situation with under sampled areas showing up over the\nrest of the state as shown in Figure 9.\n\n<p>Clearly, this study points out the need for a disciplined approach before\nadding networks in an ad-hoc manner to produce an analysis.  Perhaps\nnon-standard networks included in Tier 2 and Tier 3 can be subsampled to\nselectively augment undersampled areas as shown in Figure 7.  There will\nalways be trade offs when working with combining network and data.  It is\nimportant that one of these trade offs is not degradation in data quality.\n\n<h3>References</h3>\n\n\n<p>Clark, P. and F. Evans, 1954: Distance to nearest neighbor as a measure\nof spatial relationships in populations. <i>Ecology</i>, <b>35</b>, 445-453.\n\n<p>Doswell III, C.A. and S. Lasher-Trapp, 1997: On measuring the degree of\nirregularity in an observing network. <i>Journal of Atmospheric and Oceanic\nTechnology</i>, <b>14</b>, 120-132.\n\n<p>Dubois, G., 2000: How representative are samples in a sampling network?\n<i>J Geographic Info Decision Anal</i>, <b>4</b>, 1-10.\n\n<p>Lovejoy, S., D. Schertzer, and P. Ladoy, 1986: Fractal characterization\nof inhomogeneous geophysical measuring networks. <i>Nature</i>, <b>319</b>,\n43-44.\n\n<h3>Links</h3>\n\n<ul>\n<li><a href=\"http://www.eumetnet.eu.org/Textes/WktZurich.htm\">Workshop on Methods and Tools for the design of Surface observation networks</a>\n<br />SWS - 2002 held in Zurich, 14-15 May 2002</li>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/info/refs.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\n$t = new MyView();\n$t->title = \"Referenced By\";\n\n$table = \"\";\n$pgconn = iemdb(\"mesosite\");\n$rs = pg_query(\n    $pgconn,\n    \"SELECT * from website_citations ORDER by publication_date DESC\"\n);\n\n$XREF = array(\n    \"ARCHIVE\" => \"/archive/\",\n    \"ASOS\" => \"/request/download.phtml\",\n    \"ASOS1MIN\" => \"/request/asos/1min.phtml\",\n    \"CLIMODAT\" => \"/climodat/\",\n    \"COW\" => \"/cow/\",\n    \"HADS\" => \"/request/dcp/fe.phtml\",\n    \"IEMRE\" => \"/iemre/\",\n    \"ISUSM\" => \"/agclimate/\",\n    \"LSR\" => \"/request/gis/lsrs.phtml\",\n    \"MOS\" => \"/mos/\",\n    \"MOSAIC\" => \"/docs/nexrad_mosaic\",\n    \"NWSTEXT\" => \"/nws/text.php\",\n    \"PIREPS\" => \"/request/gis/pireps.php\",\n    \"RAOB\" => \"/archive/raob/\",\n    \"RWIS\" => \"/request/rwis/fe.phtml\",\n    \"VTEC\" => \"/request/gis/watchwarn.phtml\",\n    \"WINDROSE\" => \"/archive/\",\n);\n$COUNTS = array();\n\n$year = \"\";\n$total = pg_num_rows($rs);\nwhile ($row = pg_fetch_assoc($rs)) {\n    $resource = $row[\"iem_resource\"];\n    if (!array_key_exists($resource, $COUNTS)) {\n        $COUNTS[$resource] = 0;\n    }\n    $COUNTS[$resource] += 1;\n    if ($year != substr($row[\"publication_date\"], 0, 4)) {\n        $year = substr($row[\"publication_date\"], 0, 4);\n        $table .= sprintf(\"<tr><td colspan=\\\"4\\\"><h3>%s</h3></td></tr>\\n\", $year);\n    }\n    $table .= sprintf(\n        \"<tr><td><a href=\\\"%s\\\" class=\\\"btn btn-primary\\\">%s</a></td>\" .\n            \"<td><a href=\\\"%s\\\">%s</a></td><td>%s</td></tr>\\n\",\n        $XREF[$resource],\n        $resource,\n        $row[\"link\"],\n        $row[\"publication_date\"],\n        $row[\"title\"],\n    );\n}\n$tags = \"\";\n// sort by count\narsort($COUNTS);\nforeach ($COUNTS as $key => $value) {\n    $tags .= sprintf(\n        \"<a href=\\\"%s\\\" class=\\\"btn btn-primary mb-1\\\">%s <span class=\\\"fw-bold\\\">(%s)</span></a>\",\n        $XREF[$key],\n        $key,\n        $value\n    );\n}\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n<li class=\"breadcrumb-item\"><a href=\"/info/\">IEM Information</a></li>\n<li class=\"breadcrumb-item active\" aria-current=\"page\">Referenced By</li>\n</ol>\n</nav>\n\n<div class=\"card mb-4 shadow-sm\">\n<div class=\"card-header\">\n<h3 class=\"mb-0\">Scholar Work Referencing IEM</h3>\n</div>\n<div class=\"card-body p-3 p-md-4\">\n<p>Sadly, the IEM does not have a canonical reference for materials found\non this website. This list attempts to curate scholarly work that uses\nwebsite citations for the IEM based on a Google Scholar alert, so this\nlisting is not meant to be complete.</p>\n\n<p>There are currently <strong>{$total}</strong> references in this list.\nEach entry includes a tag for the IEM resource referenced.  Here is how\nmany times each tag is used.</p>\n\n<div class=\"d-flex flex-wrap gap-2 mb-3 bg-light rounded p-3\">\n{$tags}\n</div>\n</div>\n</div>\n\n<div class=\"card shadow-sm\">\n<div class=\"card-body p-3 p-md-4\">\n<table class=\"table table-striped\">\n<thead class=\"table-dark sticky\">\n<tr>\n    <th>IEM Resource</th>\n    <th>Publication Date/Link</th>\n    <th>Title</th>\n</tr>\n</thead>\n<tbody>\n{$table}\n</tbody>\n</table>\n</div>\n</div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/info/variables.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Data Variables\";\n\n$t->content = <<<EOM\n\n<p>This table shows the variables reported from the various IEM networks.  As\nyou can see, no network reports everything, but the combination of all\nof these networks collects everything.  This is the motivation behind the \nIEM.\n\n<p><table class=\"table table-bordered table-striped\">\n<thead>\n<tr>\n  <td class=\"climo-header-left\" rowspan=\"2\" align=\"center\">Variable:</td>\n  <td class=\"climo-header-left\" colspan=\"9\" align=\"center\">IEM Network:</td>\n</tr>\n<tr>\n  <td><a href=\"/ASOS/\">ASOS</a></td>\n  <td><a href=\"/AWOS/\">AWOS</a></td>\n  <td><a href=\"/cocorahs/\">CoCoRaHS</a></td>\n  <td><a href=\"/COOP/\">COOP</a></td>\n  <td><a href=\"/DCP/\">DCP</a></td>\n  <td><a href=\"/agclimate/\">ISU Soil Moisture</a></td>\n  <td><a href=\"/nstl_flux/\">NLAE Flux</a></td>\n  <td><a href=\"/RWIS/\">RWIS</a></td>\n  <td><a href=\"/scan/\">SCAN</a></td>\n  </tr>\n</thead>\n        \n<tr class=\"odd\"><th>Air Temperature</th>\n  <td>X</td><td>X</td><td>&nbsp;</td><td>X</td><td>Some</td>\n  <td>X</td><td>X</td><td>X</td><td>X</td></tr>\n<tr class=\"even\"><th>Humidity</th>\n  <td>X</td><td>X</td><td>&nbsp;</td><td>&nbsp;</td><td>Some</td>\n  <td>X</td><td>X</td><td>X</td><td>X</td></tr>\n<tr class=\"odd\"><th>Wind Speed/Direction</th>\n  <td>X</td><td>X</td><td>&nbsp;</td><td>&nbsp;</td><td>Some</td>\n  <td>X</td><td>X</td><td>X</td><td>X</td></tr>\n<tr class=\"even\"><th>Air Pressure</th>\n  <td>X</td><td>X</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>\n  <td>&nbsp;</td><td>X</td><td>&nbsp;</td><td>X</td></tr>\n<tr class=\"odd\"><th>Precipitation</th>\n  <td>X</td><td>X</td><td>X</td><td>X</td><td>Some</td>\n  <td>X</td><td>X</td><td>Some</td><td>X</td></tr>\n<tr class=\"even\"><th>Solar Radiation</th>\n  <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>\n  <td>X</td><td>X</td><td>&nbsp;</td><td>X</td></tr>\n<tr class=\"odd\"><th>Visibility</th>\n  <td>X</td><td>X</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>\n  <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>\n<tr class=\"even\"><th>Clouds Heights/Coverage</th>\n  <td>X</td><td>X</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>\n  <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>\n<tr class=\"odd\"><th>Soil Temperature</th>\n  <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>\n  <td>X</td><td>&nbsp;</td><td>&nbsp;</td><td>X</td></tr>\n<tr class=\"even\"><th>Soil Moisture</th>\n  <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>\n  <td>X</td><td></td><td>&nbsp;</td><td>X</td></tr>\n\n<tr class=\"odd\"><th>Snowfall/Snow Depth</th>\n  <td>Few</td><td>&nbsp;</td><td>X</td><td>X</td><td>&nbsp;</td>\n  <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>\n        \n<tr class=\"even\"><th>River Stage</th>\n  <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>\n  <td>Some</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>\n  </tr>\n\n</table>\n\n<p><b>Legend:</b>\n  <dd>X == Network reports this variable\n  <br />Few == Very few stations report this variable\n   <br>Some == Some sites report this variable, not all\n   <br>(blank) == No sites report this variable</dd></div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/info.php",
    "content": "<?php\nrequire_once \"../config/settings.inc.php\";\nrequire_once \"../include/myview.php\";\n$t = new MyView();\ndefine(\"IEM_APPID\", 61);\n$t->title = \"Information Mainpage\";\n\n$t->content = <<<EOM\n<div class=\"container-fluid py-3\">\n  <h2 class=\"h3 mb-4\">Information/Documents</h2>\n\n  <div class=\"row g-4\">\n    <div class=\"col-12 col-md-6\">\n      <div class=\"card h-100\">\n        <div class=\"card-body\">\n          <h3 class=\"h5 card-title\">Quick Links</h3>\n          <ul class=\"list-group list-group-flush mb-3\">\n            <li class=\"list-group-item\"><a href=\"/info/iem.php\">IEM Info/Background</a></li>\n            <li class=\"list-group-item\">\n            <i class=\"bi bi-book\"></i> \"Mastering the Mesonet\" documentation kindly written by Jonathan Sailor, March 2026.\n            <a href=\"/pickup/mastering_mesonet/Mastering-the-Mesonet.pdf\">PDF</a> or\n            <a href=\"/pickup/mastering_mesonet/Mastering-the-Mesonet.epub\">ePub</a>\n            </li>\n            <li class=\"list-group-item\"><a href=\"/info/links.php\">Links</a></li>\n            <li class=\"list-group-item\"><a href=\"/info/variables.phtml\">Variables Collected</a></li>\n          </ul>\n\n          <p class=\"mb-0\">Information about requesting a <a href=\"/request/ldm.php\">real-time data feed</a>.</p>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"col-12 col-md-6\">\n      <div class=\"card h-100\">\n        <div class=\"card-body\">\n          <h3 class=\"h5 card-title\">Station Locations (graphical)</h3>\n          <ul class=\"list-group list-group-flush\">\n            <li class=\"list-group-item\"><a href=\"/sites/locate.php?network=IA_ASOS\">ASOS Locations</a></li>\n            <li class=\"list-group-item\"><a href=\"/sites/locate.php?network=IA_RWIS\">RWIS Locations</a></li>\n            <li class=\"list-group-item\"><a href=\"/sites/locate.php?network=IA_COOP\">COOP Locations</a></li>\n            <li class=\"list-group-item\"><a href=\"/sites/locate.php?network=ISUSM\">ISU Soil Moisture Locations</a></li>\n          </ul>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"col-12 col-md-6\">\n      <div class=\"card h-100\">\n        <div class=\"card-body\">\n          <h3 class=\"h5 card-title\">IEM Server Information</h3>\n          <ul class=\"list-group list-group-flush\">\n            <li class=\"list-group-item\"><a href=\"/usage/\">Webfarm Statistics</a></li>\n          </ul>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"col-12 col-md-6\">\n      <div class=\"card h-100\">\n        <div class=\"card-body\">\n          <h3 class=\"h5 card-title\">Papers/Presentations</h3>\n          <ul class=\"list-group list-group-flush\">\n            <li class=\"list-group-item\"><a href=\"/present/\">IEM Presentation Archive</a></li>\n            <li class=\"list-group-item\"><a href=\"/docs/unidata2006/\">2006 Unidata Equipment Grant Report</a></li>\n            <li class=\"list-group-item\"><a href=\"/docs/unidata2021/\">2021 Unidata Equipment Grant Report</a></li>\n          </ul>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/js/form2url.module.js",
    "content": "// auto documentation for a HTML form to show an example curl request\n\nfunction buildCurlCommand(form, queryString) {\n    const baseUrl = form.action || window.location.href;\n    \n    if (queryString.length > 2000) {\n        const stationSelectOut = form.querySelector('select[name=\"station\"], select[name=\"stations\"]');\n        const stationCount = stationSelectOut ? stationSelectOut.selectedOptions.length : 0;\n        \n        return `# URL too long (${queryString.length} chars) with ${stationCount} stations selected\n# Option 1: Use POST instead of GET\ncurl -X POST '${baseUrl}' \\\\\n     -H 'Content-Type: application/x-www-form-urlencoded' \\\\\n     -d '${queryString}' \\\\\n     -o changeme.txt\n\n# Option 2: Use fewer stations in your selection`;\n    }\n    \n    const url = new URL(baseUrl);\n    url.search = queryString;\n    return `curl '${url}' -o changeme.txt`;\n}\n\nfunction form2url(form) {\n    // Handle dynamic station selection from iemss module\n    // All options in the right-side select should already be selected by iemss.js\n    // We don't modify user selections - show exactly what they selected\n    \n    const formData = new FormData(form);\n    const queryString = new URLSearchParams(formData).toString();\n    \n    return buildCurlCommand(form, queryString);\n}\n\nfunction copyToClipboard(button) {\n    const command = button.getAttribute('data-command');\n    \n    // Use the modern Clipboard API if available\n    if (navigator.clipboard && window.isSecureContext) {\n        navigator.clipboard.writeText(command).then(() => {\n            showCopyFeedback(button, 'Copied!');\n        }).catch(() => {\n            fallbackCopyToClipboard(command, button);\n        });\n    } else {\n        fallbackCopyToClipboard(command, button);\n    }\n}\n\nfunction fallbackCopyToClipboard(text, button) {\n    // Fallback for older browsers or non-HTTPS contexts\n    const textArea = document.createElement('textarea');\n    textArea.value = text;\n    textArea.style.position = 'fixed';\n    textArea.style.left = '-999999px';\n    textArea.style.top = '-999999px';\n    document.body.appendChild(textArea);\n    textArea.focus();\n    textArea.select();\n    \n    try {\n        document.execCommand('copy');\n        showCopyFeedback(button, 'Copied!');\n    } catch {\n        showCopyFeedback(button, 'Copy failed');\n    }\n    \n    document.body.removeChild(textArea);\n}\n\nfunction showCopyFeedback(button, message) {\n    const originalText = button.innerHTML;\n    button.innerHTML = `<i class=\"bi bi-check-lg\"></i> ${message}`;\n    button.classList.remove('btn-outline-primary');\n    button.classList.add('btn-success');\n    \n    setTimeout(() => {\n        button.innerHTML = originalText;\n        button.classList.remove('btn-success');\n        button.classList.add('btn-outline-primary');\n    }, 2000);\n}\n\nfunction escapeHtml(text) {\n    const div = document.createElement('div');\n    div.textContent = text;\n    return div.innerHTML;\n}\n\nfunction updateForm2UrlDisplay(div) {\n    const form = div.closest('form');\n    if (form) {\n        const curlCommand = escapeHtml(form2url(form));\n        div.innerHTML = `<div class=\"alert alert-info\">\n            <div class=\"d-flex justify-content-between align-items-start mb-2\">\n                <h5 class=\"mb-0\"><i class=\"bi bi-terminal\"></i> Automation Example with Curl</h5>\n                <button type=\"button\" class=\"btn btn-sm btn-outline-primary copy-curl-btn\" data-command=\"${curlCommand}\">\n                    <i class=\"bi bi-clipboard\"></i> Copy\n                </button>\n            </div>\n            <p class=\"mb-2\">This command and URL should replicate your current form selections:</p>\n            <pre class=\"mb-0\"><code>${curlCommand}</code></pre>\n        </div>`;\n    }\n}\n\nfunction attachFormListeners(div, form) {\n    // Use event delegation to handle both existing and future form elements\n    form.addEventListener('input', () => {\n        updateForm2UrlDisplay(div);\n    });\n    \n    form.addEventListener('change', () => {\n        updateForm2UrlDisplay(div);\n    });\n    \n    // Listen for clicks on station movement buttons (iemss interface)\n    form.addEventListener('click', (event) => {\n        if (event.target.matches('#stations_add, #stations_addall, #stations_del, #stations_delall')) {\n            // Delay slightly to allow the DOM to update\n            setTimeout(() => updateForm2UrlDisplay(div), 100);\n        }\n    });\n    \n    // Listen for double-clicks on station select elements\n    form.addEventListener('dblclick', (event) => {\n        if (event.target.matches('#stations_in, #stations_out')) {\n            setTimeout(() => updateForm2UrlDisplay(div), 100);\n        }\n    });\n}\n\nfunction observeStationChanges(div, form) {\n    // Watch for the iemss station selector to be created\n    const observer = new MutationObserver((mutations) => {\n        let stationElementAdded = false;\n        \n        mutations.forEach((mutation) => {\n            mutation.addedNodes.forEach((node) => {\n                if (node.nodeType === Node.ELEMENT_NODE) {\n                    // Check if station select elements were added\n                    if (node.matches && (\n                        node.matches('select[name=\"station\"], select[name=\"stations\"]') ||\n                        node.querySelector && node.querySelector('select[name=\"station\"], select[name=\"stations\"]')\n                    )) {\n                        stationElementAdded = true;\n                    }\n                    \n                    // Also check for iemss container being populated\n                    if (node.matches && node.matches('.iemss-container')) {\n                        stationElementAdded = true;\n                    }\n                }\n            });\n        });\n        \n        if (stationElementAdded) {\n            updateForm2UrlDisplay(div);\n        }\n    });\n    \n    // Observe the form for changes\n    observer.observe(form, {\n        childList: true,\n        subtree: true\n    });\n    \n    // Also watch for when the iemss module loads stations (after AJAX)\n    const checkForStations = setInterval(() => {\n        const stationSelect = form.querySelector('select[name=\"station\"], select[name=\"stations\"]');\n        if (stationSelect && stationSelect.options.length > 0) {\n            updateForm2UrlDisplay(div);\n            clearInterval(checkForStations);\n        }\n    }, 500);\n    \n    // Clear the interval after 10 seconds to avoid infinite checking\n    setTimeout(() => clearInterval(checkForStations), 10000);\n    \n    return observer;\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    const form2urlDivs = document.querySelectorAll('div.form2url');\n    \n    form2urlDivs.forEach(div => {\n        const form = div.closest('form');\n        if (form) {\n            // Initial display\n            updateForm2UrlDisplay(div);\n            \n            // Attach event listeners for form changes\n            attachFormListeners(div, form);\n            \n            // Watch for dynamic station selection elements\n            observeStationChanges(div, form);\n        }\n    });\n    \n    // Event delegation for copy buttons\n    document.addEventListener('click', (event) => {\n        if (event.target.matches('.copy-curl-btn, .copy-curl-btn *')) {\n            const button = event.target.closest('.copy-curl-btn');\n            if (button) {\n                copyToClipboard(button);\n            }\n        }\n    });\n});\n"
  },
  {
    "path": "htdocs/js/iastate-iem.js",
    "content": "// bare minimum stuff to make the iastate theme work\n"
  },
  {
    "path": "htdocs/js/iemss.js",
    "content": "/* global ol, bootstrap */\nconst htmlInterface = ['<div class=\"card iemss-container\">',\n    '<div class=\"card-header\">',\n    '<a class=\"btn btn-secondary float-end\" href=\"/\" id=\"iemss-metadata-link\" target=\"_new\">',\n    '<i class=\"bi bi-info-circle\"></i> Station Metadata</a>',\n    '<h3 class=\"card-title\"><span id=\"iemss-network\"></span> Station Selector</h3> ',\n    '<br class=\"clearfix\" />',\n    '</div>',\n    '<div class=\"card-body\">',\n    '<div class=\"row\">',\n    '<div class=\"col-sm-6\">',\n\n    '<div class=\"d-flex gap-2 mb-2\">',\n    '<div class=\"btn-group\">',\n    '<button class=\"btn btn-secondary btn-sm dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">',\n    'Sort Available Stations: <span class=\"caret\"></span>',\n    '</button>',\n    '<ul class=\"dropdown-menu\" role=\"menu\">',\n    '<li id=\"iemss-sortbyid\"><a class=\"dropdown-item\" href=\"#\">Sort by Identifier</a></li>',\n    '<li id=\"iemss-sortbyname\"><a class=\"dropdown-item\" href=\"#\">Sort by Name</a></li>',\n    '</ul>',\n    '</div>',\n    '<input type=\"text\" class=\"form-control flex-fill\" id=\"stationfilter\" ',\n    'placeholder=\"Filter stations...\">',\n    '</div>',\n\n    '<select multiple id=\"stations_in\" class=\"form-control\">',\n    '</select>',\n    '<div class=\"iemss-station-count text-muted small\" id=\"available-count\">Available: 0 stations</div>',\n    '<div class=\"mb-3 iemss-button-group\">',\n    '<button type=\"button\" id=\"stations_add\" class=\"btn btn-secondary\"><i class=\"bi bi-plus-lg\"></i> Add Selected</button>',\n    '<button type=\"button\" id=\"stations_addall\" class=\"btn btn-secondary\">Add All</button>',\n    '</div>',\n    '</div>',\n    '<div class=\"col-sm-6\">',\n    '<div class=\"d-flex align-items-center mb-2\" style=\"height: 38px;\">',\n    '<label for=\"stations_out\" class=\"mb-0\">Selected Stations:</label>',\n    '</div>',\n    '<input type=\"checkbox\" name=\"stations\" value=\"_ALL\" class=\"iemss-hidden\">',\n    '<select multiple id=\"stations_out\" class=\"form-control\" name=\"stations\">',\n    '</select>',\n    '<div class=\"iemss-station-count text-muted small\" id=\"selected-count\">Selected: 0 stations</div>',\n    '<div class=\"mb-3 iemss-button-group\">',\n    '<button type=\"button\" id=\"stations_del\" class=\"btn btn-secondary\"><i class=\"bi bi-dash-lg\"></i> Remove Selected</button>',\n    '<button type=\"button\" id=\"stations_delall\" class=\"btn btn-secondary\">Remove All</button>',\n    '</div>',\n    '</div>',\n    '</div>',\n    '<br />',\n    '<div class=\"row\"><div class=\"col-sm-12\">',\n    '<div id=\"map\"></div>',\n    '<div class=\"iemss-map-legend\">',\n    '<div class=\"iemss-legend-item\">',\n    '<span class=\"iemss-legend-dot online\"></span>',\n    '<span>Online stations with current data</span>',\n    '</div>',\n    '<div class=\"iemss-legend-item\">',\n    '<span class=\"iemss-legend-dot offline\"></span>',\n    '<span>Offline stations or no recent data</span>',\n    '</div>',\n    '</div>',\n    '</div></div>',\n    '</div><!-- End of card-body -->',\n    '</div><!-- End of card -->'];\n\nconst iemssApp = {\n    map: null,\n    geojson: null,\n    geojsonSource: null,\n    network: null\n};\n\n// Vanilla JS replacement for jQuery filterByText functionality\nfunction setupFilterByText(selectElement, textboxElement, selectSingleMatch = false) {\n    const options = Array.from(selectElement.options).map(option => ({\n        value: option.value,\n        text: option.textContent\n    }));\n\n    // Store original options on the element\n    selectElement.dataset.originalOptions = JSON.stringify(options);\n\n    const handleFilter = () => {\n        const search = textboxElement.value.trim();\n        const regex = new RegExp(search, 'gi');\n\n        // Clear current options\n        selectElement.innerHTML = '';\n\n        // Filter and add matching options\n        options.forEach(optionData => {\n            if (optionData.text.match(regex) !== null) {\n                const option = document.createElement('option');\n                option.value = optionData.value;\n                option.textContent = optionData.text;\n                selectElement.appendChild(option);\n            }\n        });\n\n        // Auto-select if single match\n        if (selectSingleMatch && selectElement.options.length === 1) {\n            selectElement.options[0].selected = true;\n        }\n\n        // Update counts after filtering\n        updateStationCounts();\n    };\n\n    textboxElement.addEventListener('input', handleFilter);\n    textboxElement.addEventListener('change', handleFilter);\n}\n\nfunction sortListing(option) {\n    const stationsIn = document.getElementById('stations_in');\n    const options = Array.from(stationsIn.options);\n\n    options.sort((a, b) => {\n        let at = a.textContent;\n        let bt = b.textContent;\n        if (option === 'name') {\n            at = at.slice(at.indexOf(' ') + 1);\n            bt = bt.slice(bt.indexOf(' ') + 1);\n        }\n        return (at > bt) ? 1 : ((at < bt) ? -1 : 0);\n    });\n\n    // Clear and re-add sorted options\n    stationsIn.innerHTML = '';\n    options.forEach(opt => stationsIn.appendChild(opt));\n\n    // Update counts after sorting\n    updateStationCounts();\n}\n\n// Helper functions to replace jQuery functionality\nfunction moveSelectedOptions(fromSelect, toSelect) {\n    const selected = Array.from(fromSelect.selectedOptions);\n    selected.forEach(option => {\n        option.selected = false;\n        toSelect.appendChild(option);\n    });\n\n    // If moving to stations_out (right side), select all options there\n    if (toSelect.id === 'stations_out') {\n        selectAllOptions(toSelect);\n    }\n\n    updateStationCounts();\n    return false;\n}\n\nfunction moveAllOptions(fromSelect, toSelect) {\n    const options = Array.from(fromSelect.options);\n    options.forEach(option => {\n        toSelect.appendChild(option);\n    });\n\n    // If moving to stations_out (right side), select all options there\n    if (toSelect.id === 'stations_out') {\n        selectAllOptions(toSelect);\n    }\n\n    updateStationCounts();\n    return false;\n}\n\nfunction selectAllOptions(selectElement) {\n    Array.from(selectElement.options).forEach(option => {\n        option.selected = true;\n    });\n}\n\n/**\n * Display a Bootstrap alert message in the iemss container\n * @param {string} message - The message to display\n * @param {string} type - Bootstrap alert type (warning, danger, info, success)\n * @param {number} duration - How long to show the alert in milliseconds (0 = don't auto-dismiss)\n */\nfunction showIemssAlert(message, type = 'warning', duration = 5000) {\n    const cardBody = document.querySelector('.iemss-container .card-body');\n    if (!cardBody) {return;}\n\n    // Remove any existing alerts\n    const existingAlerts = cardBody.querySelectorAll('.iemss-alert');\n    existingAlerts.forEach(alert => alert.remove());\n\n    // Create the alert element\n    const alertDiv = document.createElement('div');\n    alertDiv.className = `alert alert-${type} alert-dismissible fade show iemss-alert`;\n    alertDiv.setAttribute('role', 'alert');\n    alertDiv.innerHTML = `\n        <i class=\"bi bi-exclamation-triangle-fill me-2\"></i>\n        <strong>${message}</strong>\n        <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\n    `;\n\n    // Insert at the top of card-body\n    cardBody.insertBefore(alertDiv, cardBody.firstChild);\n\n    // Scroll alert into view\n    alertDiv.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n\n    // Auto-dismiss after duration if specified\n    if (duration > 0) {\n        setTimeout(() => {\n            if (alertDiv.parentNode) {\n                // Use Bootstrap's alert dismissal if available\n                if (bootstrap?.Alert) {\n                    const bsAlert = bootstrap.Alert.getOrCreateInstance(alertDiv);\n                    bsAlert.close();\n                } else {\n                    // Fallback to manual removal with fade effect\n                    alertDiv.classList.remove('show');\n                    setTimeout(() => alertDiv.remove(), 150);\n                }\n            }\n        }, duration);\n    }\n}\n\n// Update station count displays\nfunction updateStationCounts() {\n    const stationsIn = document.getElementById('stations_in');\n    const stationsOut = document.getElementById('stations_out');\n    const availableCount = document.getElementById('available-count');\n    const selectedCount = document.getElementById('selected-count');\n\n    if (availableCount && stationsIn) {\n        const count = stationsIn.options.length;\n        availableCount.textContent = `Available: ${count.toLocaleString()} station${count !== 1 ? 's' : ''}`;\n    }\n\n    if (selectedCount && stationsOut) {\n        const count = stationsOut.options.length;\n        selectedCount.textContent = `Selected: ${count.toLocaleString()} station${count !== 1 ? 's' : ''}`;\n    }\n}\n\nfunction setupIemssDom(iemssElement, networkParam, select_name) {\n    if (select_name) {\n        document.getElementById('stations_out').setAttribute('name', select_name);\n    }\n    document.getElementById('iemss-network').textContent = networkParam;\n    document.getElementById('iemss-metadata-link').setAttribute('href', `/sites/networks.php?network=${networkParam}`);\n    if (iemssElement.getAttribute('data-supports-all') === '0') {\n        const addAllBtn = document.getElementById('stations_addall');\n        if (addAllBtn) {addAllBtn.style.display = 'none';}\n    }\n}\n\nfunction setupIemssFormSubmission(iemssElement) {\n    const form = document.querySelector(\"form[name='iemss']\");\n    const submitButtons = form ? Array.from(form.elements).filter(\n    el => (el.tagName === \"BUTTON\" || el.tagName === \"INPUT\") &&\n            (el.type === \"submit\" || el.type === \"image\")\n    ) : [];\n    submitButtons.forEach(button => {\n        button.addEventListener('click', (event) => {\n            const stationsOut = document.getElementById('stations_out');\n            const stationsCheckbox = document.querySelector(\"input[type='checkbox'][name='stations']\");\n            if (iemssElement.getAttribute('data-supports-all') !== '0') {\n                if (stationsOut && iemssApp.geojsonSource && stationsOut.options.length >= iemssApp.geojsonSource.getFeatures().length) {\n                    Array.from(stationsOut.options).forEach(opt => { opt.selected = false; });\n                    if (stationsCheckbox) {stationsCheckbox.checked = true;}\n                    return true;\n                } else {\n                    if (stationsCheckbox) {stationsCheckbox.checked = false;}\n                }\n            }\n            if (stationsOut) {\n                selectAllOptions(stationsOut);\n                if (stationsOut.options.length === 0) {\n                    showIemssAlert(\"No stations listed in 'Selected Stations'!\");\n                    event.preventDefault();\n                    return false;\n                }\n            }\n            return true;\n        });\n    });\n}\n\nfunction setupStationMovementHandlers() {\n    const stationsIn = document.getElementById('stations_in');\n    const stationsOut = document.getElementById('stations_out');\n    if (stationsIn && stationsOut) {\n        stationsIn.addEventListener('dblclick', () => moveSelectedOptions(stationsIn, stationsOut));\n        stationsOut.addEventListener('dblclick', () => moveSelectedOptions(stationsOut, stationsIn));\n    }\n    const addBtn = document.getElementById('stations_add');\n    if (addBtn) {addBtn.addEventListener('click', () => moveSelectedOptions(stationsIn, stationsOut));}\n    const addAllBtn = document.getElementById('stations_addall');\n    if (addAllBtn) {addAllBtn.addEventListener('click', () => {\n        moveAllOptions(stationsIn, stationsOut);\n        return false;\n    });}\n    const delAllBtn = document.getElementById('stations_delall');\n    if (delAllBtn) {delAllBtn.addEventListener('click', () => moveAllOptions(stationsOut, stationsIn));}\n    const delBtn = document.getElementById('stations_del');\n    if (delBtn) {delBtn.addEventListener('click', () => {\n        moveSelectedOptions(stationsOut, stationsIn);\n        return false;\n    });}\n}\n\nfunction setupSortAndFilterHandlers() {\n    const sortById = document.getElementById('iemss-sortbyid');\n    if (sortById) {sortById.addEventListener('click', (event) => { event.preventDefault(); sortListing(\"id\"); });}\n    const sortByName = document.getElementById('iemss-sortbyname');\n    if (sortByName) {sortByName.addEventListener('click', (event) => { event.preventDefault(); sortListing(\"name\"); });}\n}\n\nfunction setupIemssMapAndData(iemssElement, networkParam) {\n    const onlyOnline = (iemssElement.getAttribute('data-only-online') === '1');\n    let url = `/geojson/network/${networkParam}.geojson?only_online=${onlyOnline ? \"1\" : \"0\"}`;\n    const hasAttribute = iemssElement.getAttribute('data-has-attribute');\n    if (hasAttribute) {\n        url += `&has_attribute=${encodeURIComponent(hasAttribute)}`;\n    }\n    iemssApp.geojsonSource = new ol.source.Vector({\n        format: new ol.format.GeoJSON(),\n        projection: ol.proj.get('EPSG:3857'),\n        url\n    });\n    iemssApp.map = new ol.Map({\n        target: 'map',\n        layers: [new ol.layer.Tile({ source: new ol.source.OSM() })],\n        view: new ol.View({\n            projection: ol.proj.get('EPSG:3857'),\n            center: [-10575351, 5160979],\n            zoom: 3\n        })\n    });\n    iemssApp.geojson = new ol.layer.Vector({\n        source: iemssApp.geojsonSource,\n        style(feature) {\n            const online = feature.get('online');\n            const isOnline = online === true || online === 1 || online === '1';\n            return new ol.style.Style({\n                image: new ol.style.Circle({\n                    radius: 7,\n                    fill: new ol.style.Fill({ color: isOnline ? 'rgba(0, 128, 0, 1)' : 'rgba(255, 0, 0, 1)' })\n                })\n            });\n        },\n        renderBuffer: 200,\n        updateWhileAnimating: false,\n        updateWhileInteracting: false\n    });\n    iemssApp.map.addLayer(iemssApp.geojson);\n}\n\nfunction setupIemssMapPopups(mapInstance, geojsonInstance, geojsonSourceInstance, networkParam) {\n    geojsonSourceInstance.on('change', () => {\n        if (geojsonSourceInstance.getState() === 'ready') {\n            const stationsInSelect = document.getElementById('stations_in');\n            const iemssContainer = document.querySelector('.iemss-container');\n            if (iemssContainer) {iemssContainer.classList.remove('iemss-loading');}\n            geojsonSourceInstance.getFeatures().forEach(feat => {\n                let lbl = `[${feat.get('sid')}] ${feat.get('sname')}`;\n                if (networkParam !== 'TAF') {lbl += ` ${feat.get('time_domain')}`;}\n                const option = document.createElement('option');\n                option.value = feat.get('sid');\n                option.textContent = lbl;\n                stationsInSelect.appendChild(option);\n            });\n            sortListing(\"id\");\n            setupFilterByText(stationsInSelect, document.getElementById('stationfilter'), true);\n            updateStationCounts();\n            mapInstance.getView().fit(\n                geojsonSourceInstance.getExtent(),\n                { size: mapInstance.getSize(), padding: [50, 50, 50, 50] }\n            );\n        } else if (geojsonSourceInstance.getState() === 'loading') {\n            const iemssContainer = document.querySelector('.iemss-container');\n            if (iemssContainer) {iemssContainer.classList.add('iemss-loading');}\n        }\n    });\n    // Create popup elements\n    const mapElement = document.getElementById('map');\n    const popupDiv = document.createElement('div');\n    popupDiv.id = 'popup';\n    mapElement.appendChild(popupDiv);\n    const popoverContentDiv = document.createElement('div');\n    popoverContentDiv.id = 'popover-content';\n    mapElement.appendChild(popoverContentDiv);\n    const element = document.getElementById('popup');\n    const popup = new ol.Overlay({ element, positioning: 'bottom-center', stopEvent: false });\n    mapInstance.addOverlay(popup);\n    let popoverInstance = null;\n    if (typeof bootstrap !== 'undefined' && bootstrap?.Popover) {\n        popoverInstance = new bootstrap.Popover(element, {\n            placement: 'top', html: true,\n            content: () => document.getElementById('popover-content').innerHTML\n        });\n    }\n    mapInstance.on('click', (evt) => {\n        const feature = mapInstance.forEachFeatureAtPixel(evt.pixel, feat => feat);\n        if (feature) {\n            const geometry = feature.getGeometry();\n            const coord = geometry.getCoordinates();\n            const sid = feature.get('sid');\n            popup.setPosition(coord);\n            const content = `<p><strong>SID: </strong>${sid}`\n                + `<br /><strong>Name:</strong> ${feature.get('sname')}`\n                + `<br /><strong>Period:</strong> ${feature.get(\"time_domain\")}</p>`;\n            document.getElementById('popover-content').innerHTML = content;\n            if (popoverInstance) {popoverInstance.show();}\n            const stationsInSelect = document.getElementById('stations_in');\n            const stationOption = Array.from(stationsInSelect.options).find(option => option.value === sid);\n            if (stationOption) {\n                Array.from(stationsInSelect.options).forEach(opt => { opt.selected = false; });\n                stationOption.selected = true;\n                stationOption.scrollIntoView({ block: 'nearest' });\n            } else {\n                const filterInput = document.getElementById('stationfilter');\n                const originalFilter = filterInput.value;\n                filterInput.value = '';\n                filterInput.dispatchEvent(new Event('input'));\n                const foundOption = Array.from(stationsInSelect.options).find(option => option.value === sid);\n                if (foundOption) {\n                    Array.from(stationsInSelect.options).forEach(opt => { opt.selected = false; });\n                    foundOption.selected = true;\n                    foundOption.scrollIntoView({ block: 'nearest' });\n                }\n                setTimeout(() => {\n                    filterInput.value = originalFilter;\n                    filterInput.dispatchEvent(new Event('input'));\n                }, 100);\n            }\n        } else {\n            if (popoverInstance) {popoverInstance.hide();}\n        }\n    });\n}\n\n// Main orchestration function (refactored)\ndocument.addEventListener('DOMContentLoaded', () => {\n    const iemssElement = document.getElementById('iemss');\n    if (!iemssElement) {return;}\n    iemssElement.innerHTML = htmlInterface.join('');\n    iemssApp.network = iemssElement.getAttribute('data-network');\n    const select_name = iemssElement.getAttribute('data-name');\n    if (!iemssApp.network) {return;}\n    setupIemssDom(iemssElement, iemssApp.network, select_name);\n    setupIemssFormSubmission(iemssElement);\n    setupStationMovementHandlers();\n    setupSortAndFilterHandlers();\n    setupIemssMapAndData(iemssElement, iemssApp.network);\n    setupIemssMapPopups(iemssApp.map, iemssApp.geojson, iemssApp.geojsonSource, iemssApp.network);\n});\n"
  },
  {
    "path": "htdocs/js/jsani.js",
    "content": "// global $\n\n/**\n * Converts the iemjsani div into an animation player\n */\n$().ready(() => {\n    $(\"#iemjsani\").jsani({\n        imageSrcs: $(\"#iemjsani_frames li\").map((_i, el) => $(el).text()).get(),\n        aniWidth: $(\"#iemjsani\").width(),\n        aniHeight: $(\"#iemjsani\").height(),\n        initdwell: 200,\n        controls: ['stopplay', 'firstframe', 'previous', 'next', 'lastframe', 'looprock', 'slow', 'fast', 'zoom'],\n        last_frame_pause: 8,\n        first_frame_pause: 1,\n        frame_pause: '0:5, 3:6'\n    });\n});"
  },
  {
    "path": "htdocs/js/maptable.js",
    "content": "/* global ol */\n/* A combination Openlayers Map + DataTable\n\nExample:\n\n<div\n    class=\"iem-maptable row\"\n    data-label-field=\"sname\"\n    data-geojson-src=\"/geojson/networks.geojson?network=IA_ASOS\">\n</div>\n\n*/\n\nfunction get_style(color, text) {\n    return new ol.style.Style({\n        fill: new ol.style.Fill({\n            color: 'rgba(255, 255, 255, 0.6)'\n        }),\n        text: new ol.style.Text({\n            font: '14px Calibri,sans-serif',\n            text,\n            fill: new ol.style.Fill({\n                color,\n                width: 1\n            }),\n            stroke: new ol.style.Stroke({\n                color: '#FFF',\n                width: 3\n            })\n        })\n    });\n}\n\n\nfunction getLabelForFeature(inst, feat) {\n    let label = \"TBD\";\n    if (inst.label_field === \"id\") {\n        label = feat.getId();\n    } else if (inst.label_field) {\n        label = feat.get(inst.label_field).toString();\n    }\n    return label;\n}\n\n\nfunction highlightFeature(inst, feat) {\n    if (inst.selectedFeature) {\n        inst.selectedFeature.setStyle(null);\n    }\n    inst.selectedFeature = feat;\n    feat.setStyle(get_style(\"#F00\", getLabelForFeature(inst, feat)));\n}\n\n\nfunction init_map(idx, inst) {\n    inst.selectedFeature = null;\n    inst.vectorLayer = new ol.layer.Vector({\n        title: 'Data',\n        source: new ol.source.Vector({\n            format: new ol.format.GeoJSON()\n        }),\n        style: (feature) => [get_style(\"#000\", getLabelForFeature(inst, feature))]\n    });\n    fetch(inst.geojson_src)\n        .then(resp => resp.json())\n        .then(data => {\n            if (data.meta) {\n                inst.label_field = data.meta.propdefault;\n                inst.proporder = data.meta.proporder;\n            }\n            inst.vectorLayer.getSource().addFeatures(\n                (new ol.format.GeoJSON({ featureProjection: 'EPSG:3857' })).readFeatures(data)\n            );\n            buildTabulatorTable(idx, inst, data);\n        });\n    inst.map = new ol.Map({\n        target: inst.mapdiv,\n        layers: [\n            new ol.layer.Tile({\n                title: 'OpenStreetMap',\n                visible: true,\n                source: new ol.source.OSM()\n            }),\n            inst.vectorLayer\n        ],\n        view: new ol.View({\n            projection: 'EPSG:3857',\n            center: [-10575351, 5160979],\n            zoom: 3\n        })\n    });\n    inst.map.on('click', (evt) => {\n        const feature = inst.map.forEachFeatureAtPixel(evt.pixel,\n            (feature2) => feature2);\n        if (!feature) {\n            return;\n        }\n        highlightFeature(inst, feature);\n        const id = feature.getId();\n        inst.table.deselectRow();\n        const rows = inst.table.getRows();\n        for (const row of rows) {\n            if (row.getData().id === id) {\n                row.select();\n                break;\n            }\n        }\n    });\n\n    inst.vectorLayer.getSource().on('change', () => {\n        if (inst.vectorLayer.getSource().getState() === 'ready' && inst.zoomReset === false) {\n            inst.map.getView().fit(\n                inst.vectorLayer.getSource().getExtent(),\n                {\n                    size: inst.map.getSize(),\n                    padding: [50, 50, 50, 50]\n                }\n            );\n            inst.zoomReset = true;\n        }\n    });\n}\n\nfunction buildTabulatorTable(idx, inst, data) {\n    // Build columns and data array for Tabulator\n    const columns = [{ title: 'ID', field: 'id', headerSort: true }];\n    inst.select.innerHTML = '';\n    const idOption = document.createElement('option');\n    idOption.value = 'id';\n    idOption.textContent = 'ID';\n    inst.select.appendChild(idOption);\n    let proporder = inst.proporder || [];\n    if (proporder.length === 0 && data.features && data.features.length > 0) {\n        proporder = Object.keys(data.features[0].properties).filter(k => k !== 'id' && k !== 'geometry');\n    }\n    proporder.forEach((val) => {\n        columns.push({ title: val, field: val, headerSort: true });\n        const opt = document.createElement('option');\n        opt.value = val;\n        opt.textContent = val;\n        inst.select.appendChild(opt);\n    });\n    const tableData = data.features.map(f => ({ ...f.properties, id: f.id }));\n    const table = new window.Tabulator(`#maptable-table${idx}`, {\n        data: tableData,\n        columns,\n        layout: \"fitDataStretch\",\n        height: 400,\n        selectable: 1,\n        pagination: false,\n        rowClick(e, row) {\n            const id = row.getData().id;\n            const feat = inst.vectorLayer.getSource().getFeatureById(id);\n            if (feat) {\n                highlightFeature(inst, feat);\n            }\n        },\n        rowSelected(row) {\n            const id = row.getData().id;\n            const feat = inst.vectorLayer.getSource().getFeatureById(id);\n            if (feat) {\n                highlightFeature(inst, feat);\n            }\n        }\n    });\n    inst.table = table;\n    // When select changes, update label field and restyle\n    inst.select.addEventListener('change', function() {\n        inst.label_field = this.value;\n        inst.vectorLayer.setStyle(inst.vectorLayer.getStyle());\n        if (inst.selectedFeature) {\n            highlightFeature(inst, inst.selectedFeature);\n        }\n    });\n}\n\nfunction init(idx, div) {\n    // Setup the given div for usage\n    // Add left and right hand side divs\n    const inst = {};\n    inst.proporder = null;\n    inst.zoomReset = false;\n    inst.geojson_src = div.getAttribute('data-geojson-src');\n    inst.label_field = div.getAttribute('data-label-field');\n    const leftcol = document.createElement('div');\n    leftcol.className = 'col-md-6';\n    inst.mapdiv = document.createElement('div');\n    inst.mapdiv.style = \"height: 400px\";\n    leftcol.append(inst.mapdiv);\n    const pp = document.createElement('p');\n    const tt = document.createTextNode(\"Select variable for labels:\");\n    pp.appendChild(tt);\n    inst.select = document.createElement('select');\n    pp.appendChild(inst.select);\n    // Handled in buildTabulatorTable\n    leftcol.appendChild(pp);\n    div.append(leftcol);\n    const tablediv = document.createElement('div');\n    tablediv.className = 'col-md-6';\n    const tableElement = document.createElement('table');\n    tableElement.id = `maptable-table${idx}`;\n    tablediv.appendChild(tableElement);\n    div.append(tablediv);\n\n    init_map(idx, inst);\n    return inst;\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n    const maptables = document.querySelectorAll('div.iem-maptable');\n    maptables.forEach((div, idx) => {\n        init(idx, div);\n    });\n});"
  },
  {
    "path": "htdocs/js/olselect-lonlat.js",
    "content": "/* global ol */\n// A factory to generate an OpenLayers map with a single marker on the page\n// that is draggable, which then callbacks a given function with the lat/lon\n// values of the marker.\n//\n// Modern API using data attributes:\n// - data-initial-lon: Initial longitude (required)\n// - data-initial-lat: Initial latitude (required)\n// - data-suggested-lon: Optional suggested longitude\n// - data-suggested-lat: Optional suggested latitude\n// - data-zoom: Initial zoom level (default: 5)\n// - data-marker-src: Custom marker image source (default: '/images/marker.png')\n// - data-lon-input: ID of longitude input field for bidirectional sync (optional)\n// - data-lat-input: ID of latitude input field for bidirectional sync (optional)\n// - data-precision: Number of decimal places for input values (default: 4)\n// - data-click-to-move: Allow single click map repositioning (default: true)\n\n(function () {\n    // Helper functions for olSelectLonLat complexity reduction - encapsulated to avoid conflicts\n    function extractConfig(element) {\n        return {\n            initialLon: parseFloat(element.dataset.initialLon),\n            initialLat: parseFloat(element.dataset.initialLat),\n            suggestedLon: element.dataset.suggestedLon\n                ? parseFloat(element.dataset.suggestedLon)\n                : null,\n            suggestedLat: element.dataset.suggestedLat\n                ? parseFloat(element.dataset.suggestedLat)\n                : null,\n            zoom: element.dataset.zoom ? parseInt(element.dataset.zoom) : 5,\n            markerSrc: element.dataset.markerSrc || '/images/marker.png',\n            lonInputId: element.dataset.lonInput,\n            latInputId: element.dataset.latInput,\n            precision: element.dataset.precision ? parseInt(element.dataset.precision) : 4,\n            clickToMove: element.dataset.clickToMove !== 'false',\n        };\n    }\n\n    function validateConfig(config, callback) {\n        // Validate required parameters\n        if (isNaN(config.initialLon) || isNaN(config.initialLat)) {\n            throw new Error(\n                'Initial longitude and latitude must be provided via data-initial-lon and data-initial-lat attributes'\n            );\n        }\n\n        if (callback && typeof callback !== 'function') {\n            throw new Error('Callback must be a function');\n        }\n    }\n\n    function createMarker(config) {\n        const marker = new ol.Feature({\n            geometry: new ol.geom.Point(ol.proj.fromLonLat([config.initialLon, config.initialLat])),\n        });\n        const style = new ol.style.Style({\n            image: new ol.style.Icon({\n                anchor: [0.5, 1],\n                src: config.markerSrc,\n            }),\n        });\n\n        // Set the style for the marker\n        marker.setStyle(style);\n        return marker;\n    }\n\n    function createSuggestedMarker(config) {\n        if (config.suggestedLon === null || config.suggestedLat === null) {\n            return null;\n        }\n\n        const suggestedMarker = new ol.Feature({\n            geometry: new ol.geom.Point(\n                ol.proj.fromLonLat([config.suggestedLon, config.suggestedLat])\n            ),\n        });\n\n        const suggestedStyle = new ol.style.Style({\n            image: new ol.style.Circle({\n                radius: 10,\n                fill: new ol.style.Fill({\n                    color: '#ff0000',\n                }),\n                stroke: new ol.style.Stroke({\n                    color: '#000000',\n                    width: 2,\n                }),\n            }),\n        });\n\n        suggestedMarker.setStyle(suggestedStyle);\n        return suggestedMarker;\n    }\n\n    function createMapWithMarkers(element, config) {\n        const marker = createMarker(config);\n        const suggestedMarker = createSuggestedMarker(config);\n\n        const features = [marker];\n        if (suggestedMarker) {\n            features.push(suggestedMarker);\n        }\n\n        // Create a vector source and add the marker(s) to it\n        const vectorSource = new ol.source.Vector({\n            features,\n        });\n\n        // Create a vector layer with the vector source and add it to the map\n        const vectorLayer = new ol.layer.Vector({\n            source: vectorSource,\n        });\n\n        const map = new ol.Map({\n            target: element,\n            layers: [\n                new ol.layer.Tile({\n                    source: new ol.source.XYZ({\n                        url: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',\n                        attributions:\n                            'Tiles © Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community',\n                    }),\n                }),\n                new ol.layer.Tile({\n                    source: new ol.source.XYZ({\n                        url: 'https://server.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places/MapServer/tile/{z}/{y}/{x}',\n                        attributions: 'Tiles © Esri',\n                    }),\n                    opacity: 0.8,\n                    zIndex: 1000,\n                }),\n                new ol.layer.Tile({\n                    source: new ol.source.XYZ({\n                        url: 'https://server.arcgisonline.com/ArcGIS/rest/services/Reference/World_Transportation/MapServer/tile/{z}/{y}/{x}',\n                        attributions: 'Tiles © Esri',\n                    }),\n                    opacity: 0.7,\n                    zIndex: 1001,\n                }),\n                vectorLayer,\n            ],\n            view: new ol.View({\n                center: ol.proj.fromLonLat([config.initialLon, config.initialLat]),\n                zoom: config.zoom,\n            }),\n        });\n\n        // If both markers exist, fit the view to show both\n        if (suggestedMarker) {\n            // Calculate extent that includes both markers\n            const extent = vectorSource.getExtent();\n            map.getView().fit(extent, {\n                size: map.getSize(),\n                padding: [20, 20, 20, 20], // Optional padding around the extent\n                maxZoom: 15, // Optional: limit the maximum zoom level\n            });\n        }\n\n        return { marker, suggestedMarker, vectorSource, map };\n    }\n\n    function updateFormInputs(lonInput, latInput, config, lon, lat) {\n        // Update input fields if they exist\n        if (lonInput) {\n            lonInput.value = lon.toFixed(config.precision);\n        }\n        if (latInput) {\n            latInput.value = lat.toFixed(config.precision);\n        }\n    }\n\n    // Utility function to update coordinates\n    function updateCoordinates(callback, config, lonInput, latInput, lon, lat) {\n        updateFormInputs(lonInput, latInput, config, lon, lat);\n\n        // Call the custom callback if provided\n        if (callback) {\n            try {\n                callback(lon, lat);\n            } catch {\n                // pass\n            }\n        }\n    }\n\n    function syncFromInputs(marker, map, lonInput, latInput) {\n        const lon = parseFloat(lonInput.value);\n        const lat = parseFloat(latInput.value);\n\n        if (!isNaN(lon) && !isNaN(lat)) {\n            // Update marker position\n            const newCoords = ol.proj.fromLonLat([lon, lat]);\n            marker.getGeometry().setCoordinates(newCoords);\n\n            // Center map on new position\n            map.getView().setCenter(newCoords);\n        }\n    }\n\n    function setupMapInteractions(\n        map,\n        marker,\n        suggestedMarker,\n        vectorSource,\n        callback,\n        config,\n        lonInput,\n        latInput\n    ) {\n        const translate = new ol.interaction.Translate({\n            features: new ol.Collection([marker]),\n        });\n        map.addInteraction(translate);\n\n        // Direct marker dragging is more intuitive than vertex/handle editing.\n        translate.on('translateend', e => {\n            const coords = e.features.item(0).getGeometry().getCoordinates();\n            const lonLat = ol.proj.toLonLat(coords);\n            updateCoordinates(callback, config, lonInput, latInput, lonLat[0], lonLat[1]);\n        });\n\n        map.on('pointermove', event => {\n            const feature = map.forEachFeatureAtPixel(event.pixel, f => f);\n            const isInteractiveFeature = feature === marker || feature === suggestedMarker;\n            map.getTargetElement().style.cursor = isInteractiveFeature ? 'pointer' : '';\n        });\n\n        if (config.clickToMove) {\n            map.on('singleclick', event => {\n                const feature = map.forEachFeatureAtPixel(event.pixel, f => f);\n                if (feature === marker) {\n                    return;\n                }\n                const coords =\n                    feature === suggestedMarker\n                        ? suggestedMarker.getGeometry().getCoordinates()\n                        : event.coordinate;\n                marker.getGeometry().setCoordinates(coords);\n                const lonLat = ol.proj.toLonLat(coords);\n                updateCoordinates(callback, config, lonInput, latInput, lonLat[0], lonLat[1]);\n            });\n        }\n\n        // Add bidirectional sync: input fields → map marker\n        if (lonInput && latInput) {\n            // Set initial values in inputs before any listeners are added\n            updateFormInputs(lonInput, latInput, config, config.initialLon, config.initialLat);\n\n            // Add event listeners to input fields\n            lonInput.addEventListener('input', () =>\n                syncFromInputs(marker, map, lonInput, latInput)\n            );\n            lonInput.addEventListener('change', () =>\n                syncFromInputs(marker, map, lonInput, latInput)\n            );\n            latInput.addEventListener('input', () =>\n                syncFromInputs(marker, map, lonInput, latInput)\n            );\n            latInput.addEventListener('change', () =>\n                syncFromInputs(marker, map, lonInput, latInput)\n            );\n        }\n    }\n\n    // Main function - the only global export\n    function olSelectLonLat(div, callback) {\n        const element = typeof div === 'string' ? document.getElementById(div) : div;\n\n        if (!element) {\n            throw new Error(`Element with ID '${div}' not found`);\n        }\n\n        // Extract configuration from data attributes\n        const config = extractConfig(element);\n\n        // Get input elements if specified\n        const lonInput = config.lonInputId ? document.getElementById(config.lonInputId) : null;\n        const latInput = config.latInputId ? document.getElementById(config.latInputId) : null;\n\n        // Validate configuration\n        validateConfig(config, callback);\n\n        // Create markers and map\n        const { marker, suggestedMarker, vectorSource, map } = createMapWithMarkers(\n            element,\n            config\n        );\n\n        // Setup interactions\n        setupMapInteractions(\n            map,\n            marker,\n            suggestedMarker,\n            vectorSource,\n            callback,\n            config,\n            lonInput,\n            latInput\n        );\n\n        return { map, marker, suggestedMarker, config, lonInput, latInput };\n    }\n\n    // Export to global scope\n    window.olSelectLonLat = olSelectLonLat;\n})();\n"
  },
  {
    "path": "htdocs/js/olselect.js",
    "content": "/* global ol */\nlet map = null;\nlet vectorLayer = null;\nlet element = null;\nlet popup = null;\nlet network = null;\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    const mapElement = document.getElementById('map');\n    if (!mapElement) {\n        return;\n    }\n    network = mapElement.dataset.network;\n    if (network === null){\n        return;\n    }\n\n    vectorLayer = new ol.layer.Vector({\n        source: new ol.source.Vector({\n            url: `/api/1/network/${network}.geojson`,\n            format: new ol.format.GeoJSON()\n        }),\n        style: (feature) => {\n            const isOnline = feature.get(\"online\");\n            const color = isOnline ? '#198754' : '#ffc107'; // Bootstrap success and warning colors\n            const strokeColor = isOnline ? '#146c43' : '#ffca2c';\n            const zindex = isOnline ? 100 : 99;\n            return [\n                new ol.style.Style({\n                    zIndex: zindex,\n                    image: new ol.style.Circle({\n                        fill: new ol.style.Fill({\n                            color\n                        }),\n                        stroke: new ol.style.Stroke({\n                            color: strokeColor,\n                            width: 2.5\n                        }),\n                        radius: 8\n                    })\n                })\n            ];\n        }\n    });\n    vectorLayer.getSource().on('change', () => {\n        if (vectorLayer.getSource().getState() === 'ready') {\n            map.getView().fit(\n                vectorLayer.getSource().getExtent(),\n                {\n                    size: map.getSize(),\n                    padding: [50, 50, 50, 50]\n                }\n            );\n        }\n    });\n\n    map = new ol.Map({\n        target: 'map',\n        layers: [\n            new ol.layer.Tile({\n                source: new ol.source.XYZ({\n                    url: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',\n                    attributions: 'Tiles © Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community'\n                })\n            }),\n            new ol.layer.Tile({\n                source: new ol.source.XYZ({\n                    url: 'https://server.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places/MapServer/tile/{z}/{y}/{x}',\n                    attributions: 'Tiles © Esri'\n                }),\n                opacity: 0.8,\n                zIndex: 1000\n            }),\n            new ol.layer.Tile({\n                source: new ol.source.XYZ({\n                    url: 'https://server.arcgisonline.com/ArcGIS/rest/services/Reference/World_Transportation/MapServer/tile/{z}/{y}/{x}',\n                    attributions: 'Tiles © Esri'\n                }),\n                opacity: 0.7,\n                zIndex: 1001\n            }),\n            vectorLayer\n        ],\n        view: new ol.View({\n            projection: 'EPSG:3857',\n            center: [-10575351, 5160979],\n            zoom: 3\n        })\n    });\n\n    const layerSwitcher = new ol.control.LayerSwitcher();\n    map.addControl(layerSwitcher);\n\n    // Create popup element\n    element = document.createElement('div');\n    element.id = 'mappopup';\n    element.style.width = '400px';\n    document.getElementById('map').appendChild(element);\n    popup = new ol.Overlay({\n        element,\n        positioning: 'bottom-center',\n        stopEvent: false\n    });\n    map.addOverlay(popup);\n\n    // display popup on click\n    map.on('click', (evt) => {\n        const feature = map.forEachFeatureAtPixel(evt.pixel,\n            (feature2) => {\n                return feature2;\n            });\n        \n        // Hide any existing tooltip\n        hideTooltip();\n        \n        if (feature) {\n            const geometry = feature.getGeometry();\n            const coord = geometry.getCoordinates();\n            popup.setPosition(coord);\n\n            // Show custom tooltip\n            showTooltip(feature);\n\n            // Set the select form to proper value (Tom Select aware)\n            const stationSelect = document.querySelector('select[name=\"station\"]');\n            if (stationSelect?.tomselect) {\n                // Use Tom Select API to update value and UI\n                stationSelect.tomselect.setValue(feature.get('id'), true);\n            } else if (stationSelect) {\n                // Fallback for plain select\n                stationSelect.value = feature.get('id');\n                const changeEvent = new Event('change', { bubbles: true });\n                stationSelect.dispatchEvent(changeEvent);\n            }\n        }\n    });\n\n});\n\n// Custom tooltip functions with Bootstrap 5 styling\nfunction showTooltip(feature) {\n    const tooltip = document.createElement('div');\n    tooltip.id = 'custom-tooltip';\n    tooltip.className = 'tooltip bs-tooltip-top show';\n    tooltip.setAttribute('role', 'tooltip');\n    \n    const tooltipArrow = document.createElement('div');\n    tooltipArrow.className = 'tooltip-arrow';\n    \n    const tooltipInner = document.createElement('div');\n    tooltipInner.className = 'tooltip-inner';\n    tooltipInner.innerHTML = `\n        <div class=\"text-start\">\n            <strong>${feature.get('name')}</strong><br>\n            <small class=\"text-light\">Station ID: ${feature.get('id')}</small><br>\n            <span class=\"badge ${feature.get('online') ? 'bg-success' : 'bg-warning text-dark'} mt-1\">\n                ${feature.get('online') ? 'Online' : 'Offline'}\n            </span>\n        </div>\n    `;\n    \n    tooltip.appendChild(tooltipArrow);\n    tooltip.appendChild(tooltipInner);\n    \n    // Enhanced styling for better visibility\n    tooltip.style.cssText = `${''}\n        position: absolute;\n        z-index: 1070;\n        max-width: 250px;\n        font-size: 0.875rem;\n        word-wrap: break-word;\n        opacity: 1;\n        left: 50%;\n        bottom: 100%;\n        transform: translateX(-50%);\n        margin-bottom: 8px;\n        pointer-events: none;\n    `;\n    \n    element.appendChild(tooltip);\n}\n\nfunction hideTooltip() {\n    const existingTooltip = element.querySelector('#custom-tooltip');\n    if (existingTooltip) {\n        existingTooltip.remove();\n    }\n}\n"
  },
  {
    "path": "htdocs/js/select2.js",
    "content": "/* global TomSelect */\ndocument.addEventListener('DOMContentLoaded', () => {\n    document.querySelectorAll('.iemselect2').forEach(el => {\n        // Check if the original element has width styling\n        const computedStyle = window.getComputedStyle(el);\n        const inlineStyle = el.style.minWidth || el.style.width;\n        \n        const config = {\n            searchField: ['text', 'value'],\n            maxOptions: 1000,\n            allowEmptyOption: false,\n            selectOnTab: false,\n        };\n        \n        const ts = new TomSelect(el, config);\n        let defaultValue = null;\n        ts.on(\"dropdown_open\", () => {\n            defaultValue = ts.getValue();\n            // Clear out the search field\n            ts.clear();\n        });\n        ts.on(\"dropdown_close\", () => {\n            // Reset if no options are selected\n            if (ts.getValue().length === 0) {\n                ts.setValue(defaultValue);\n            }\n        });\n        \n        // Apply width from original element if it exists\n        if (inlineStyle || computedStyle.minWidth !== 'auto') {\n            const wrapper = ts.wrapper;\n            if (inlineStyle) {\n                if (el.style.minWidth) {wrapper.style.minWidth = el.style.minWidth;}\n                if (el.style.width) {wrapper.style.width = el.style.width;}\n            }\n        }\n        \n        window.ts = ts;\n    });\n});\n"
  },
  {
    "path": "htdocs/kml/network.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/forms.php\";\n\n// Get network parameter with validation\n$network = get_str404(\"network\", \"IA_ASOS\", 20);\n\nheader(\"Content-Type: application/vnd.google-earth.kml+xml\");\necho <<<EOM\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<kml xmlns=\"http://www.opengis.net/kml/2.2\">\n <Document>\n   <name>{$network} Network Stations</name>\n   <description>IEM Network Station Locations for {$network}</description>\n   <Style id=\"iemstyle\">\n     <IconStyle>\n      <scale>0.8</scale>\n      <Icon>\n        <href>https://maps.google.com/mapfiles/kml/shapes/placemark_circle.png</href>\n      </Icon>\n     </IconStyle>\n     <BalloonStyle>\n      <bgColor>ffffffff</bgColor>\n    </BalloonStyle>\n  </Style>\nEOM;\n\n$nt = new NetworkTable($network);\n\nforeach ($nt->table as $sid => $data) {\n    // Properly escape XML special characters\n    $name = htmlspecialchars($data[\"name\"], ENT_XML1 | ENT_COMPAT, 'UTF-8');\n    $sid_safe = htmlspecialchars($sid, ENT_XML1 | ENT_COMPAT, 'UTF-8');\n\n    // Build description with available station information\n    $description = \"<![CDATA[\\n\";\n    $description .= \"<h3>{$name}</h3>\\n\";\n    $description .= \"<table>\\n\";\n    $description .= \"<tr><th>Station ID:</th><td>{$sid_safe}</td></tr>\\n\";\n    if (!empty($data[\"elevation\"])) {\n        $description .= \"<tr><th>Elevation:</th><td>\" . round($data[\"elevation\"], 1) . \" m</td></tr>\\n\";\n    }\n    if (!empty($data[\"county\"])) {\n        $description .= \"<tr><th>County:</th><td>\" . htmlspecialchars($data[\"county\"], ENT_XML1) . \"</td></tr>\\n\";\n    }\n    if (!empty($data[\"climate_site\"])) {\n        $description .= \"<tr><th>Climate Site:</th><td>\" . htmlspecialchars($data[\"climate_site\"], ENT_XML1) . \"</td></tr>\\n\";\n    }\n    if (isset($data[\"archive_begin\"]) && $data[\"archive_begin\"] instanceof DateTime) {\n        $description .= \"<tr><th>Archive Begin:</th><td>\" . $data[\"archive_begin\"]->format('Y-m-d') . \"</td></tr>\\n\";\n    }\n    $description .= \"<tr><th>More Info:</th><td><a href=\\\"{$EXTERNAL_BASEURL}/sites/site.php?station={$sid_safe}&amp;network={$network}\\\">View Station Page</a></td></tr>\\n\";\n    $description .= \"</table>\\n\";\n    $description .= \"]]>\";\n\n    echo \"<Placemark>\\n\";\n    echo \"  <name>{$name}</name>\\n\";\n    echo \"  <description>\\n{$description}\\n  </description>\\n\";\n    echo \"  <ExtendedData>\\n\";\n    echo \"    <Data name=\\\"sid\\\"><value>{$sid_safe}</value></Data>\\n\";\n    echo \"    <Data name=\\\"network\\\"><value>{$network}</value></Data>\\n\";\n    if (!empty($data[\"elevation\"])) {\n        echo \"    <Data name=\\\"elevation\\\"><value>\" . $data[\"elevation\"] . \"</value></Data>\\n\";\n    }\n    echo \"  </ExtendedData>\\n\";\n    echo \"  <styleUrl>#iemstyle</styleUrl>\\n\";\n    echo \"  <Point>\\n\";\n    echo \"    <coordinates>{$data[\"lon\"]},{$data[\"lat\"]},0</coordinates>\\n\";\n    echo \"  </Point>\\n\";\n    echo \"</Placemark>\\n\";\n}\necho \"</Document></kml>\";\n"
  },
  {
    "path": "htdocs/kml/roadcond.php",
    "content": "<?php\nheader(\"Location: https://cloud.iowadot.gov/gis/data/winterroadconditions/tv/Iowa.kml\");\n"
  },
  {
    "path": "htdocs/kml/sbw_county_intersect.php",
    "content": "<?php\n/* \n * Generate KML of the county intersection of a SBW\n */\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\n$connect = iemdb(\"postgis\");\n\n$year = get_int404(\"year\", 2006);\n$wfo = isset($_GET[\"wfo\"]) ? substr(xssafe($_GET[\"wfo\"]), 0, 4) : \"MPX\";\nif (strlen($wfo) > 3) {\n    $wfo = substr($wfo, 1, 3);\n}\n$eventid = get_int404(\"eventid\", 103);\n$phenomena = isset($_GET[\"phenomena\"]) ? substr(xssafe($_GET[\"phenomena\"]), 0, 2) : \"SV\";\n$significance = isset($_GET[\"significance\"]) ? substr(xssafe($_GET[\"significance\"]), 0, 1) : \"W\";\n\n$sql = <<<EOM\n    WITH stormbased as (SELECT geom from sbw where vtec_year = $1 and\n        wfo = $2 \n        and eventid = $3 and significance = $4 \n        and phenomena = $5 and status = 'NEW'), \n    countybased as (SELECT ST_Union(u.geom) as geom from \n        warnings w JOIN ugcs u on (u.gid = w.gid) \n        WHERE w.vtec_year = $1 and w.wfo = $2 and eventid = $3 and \n        significance = $4 and phenomena = $5) \n                \n    SELECT ST_askml(geo) as kml, ST_Length(ST_transform(geo,9311)) as sz from\n        (SELECT ST_SetSRID(ST_intersection(\n          ST_buffer(ST_exteriorring(ST_geometryn(ST_multi(c.geom),1)),0.02),\n          ST_exteriorring(ST_geometryn(ST_multi(s.geom),1))\n            ), 4326) as geo\n    from stormbased s, countybased c) as foo\nEOM;\n$stname = iem_pg_prepare($connect, $sql);\n$rs = pg_execute($connect, $stname, array($year, $wfo, $eventid, $significance, $phenomena));\nheader('Content-disposition: attachment; filename=sbw.kml');\nheader(\"Content-Type: application/vnd.google-earth.kml+xml\");\n\necho <<<EOM\n<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\n<kml xmlns=\\\"http://earth.google.com/kml/2.2\\\">\n <Document>\n    <Style id=\\\"iemstyle0\\\">\n      <LineStyle>\n        <width>7</width>\n        <color>ff0000ff</color>\n      </LineStyle>\n    </Style>\n    <Style id=\\\"iemstyle1\\\">\n      <LineStyle>\n        <width>7</width>\n        <color>ff00ff00</color>\n      </LineStyle>\n    </Style>\n    <Style id=\\\"iemstyle2\\\">\n      <LineStyle>\n        <width>7</width>\n        <color>ffff0000</color>\n      </LineStyle>\n    </Style>\nEOM;\n\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n    echo sprintf(\"<Placemark>\n    <styleUrl>#iemstyle%s</styleUrl>\n    <name>Intersect size: %.1f km ID: %s</name>\", $i % 3, $row[\"sz\"] / 1000.0, $i);\n    echo $row[\"kml\"];\n    echo \"</Placemark>\";\n}\necho \" </Document>\n</kml>\";\n"
  },
  {
    "path": "htdocs/kml/sbw_exact_time.php",
    "content": "<?php\n/* Sucks to render a KML */\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/reference.php\";\n$vtec_action = $reference[\"vtec_action\"];\n$vtec_phenomena = $reference[\"vtec_phenomena\"];\n$vtec_significance = $reference[\"vtec_significance\"];\n$connect = iemdb(\"postgis\");\n\n$year = isset($_GET[\"year\"]) ? intval($_GET[\"year\"]) : 2006;\n$wfo = isset($_GET[\"wfo\"]) ? substr($_GET[\"wfo\"],0,3) : \"MPX\";\n$eventid = isset($_GET[\"eventid\"]) ? intval($_GET[\"eventid\"]) : 103;\n$phenomena = isset($_GET[\"phenomena\"]) ? substr($_GET[\"phenomena\"],0,2) : \"SV\";\n$significance = isset($_GET[\"significance\"]) ? substr($_GET[\"significance\"],0,1) : \"W\";\n\n$stname = iem_pg_prepare($connect, \"SELECT issue, expire, status, \n           ST_askml(geom) as kml,\n           round(ST_area(ST_transform(geom,9311)) / 1000000.0) as psize\n           from sbw\n           WHERE wfo = $1 and phenomena = $2 and \n           eventid = $3 and significance = $4 and vtec_year = $5 and\n           status = 'NEW'\");\n$result = pg_execute($connect, $stname, \n                     Array($wfo, $phenomena, $eventid, $significance, $year) );\n$row = pg_fetch_assoc($result, 0);\n$radarts = strtotime( $row[\"issue\"] );\nif (strtotime( $row[\"expire\"] ) > time()){\n  $radarts = time();\n}\n\nheader(\"Content-Type: application/vnd.google-earth.kml+xml\");\n// abgr\n$color = \"7dff0000\";\n$ca = Array(\"TO\" => \"7d0000ff\", \"SV\" => \"7d00ffff\", \"FF\" => \"7d00ff00\",\n             \"MA\" => \"7d00ff00\");\nif (isset($ca[$phenomena])) { $color = $ca[$phenomena]; }\n\necho \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\n<kml xmlns=\\\"http://earth.google.com/kml/2.2\\\">\n <Document>\n    <Style id=\\\"iemstyle\\\">\n      <LineStyle>\n        <width>1</width>\n        <color>ff000000</color>\n      </LineStyle>\n      <PolyStyle>\n        <color>$color</color>\n      </PolyStyle>\n    </Style>\n <ScreenOverlay id=\\\"legend_bar\\\">\n   <visibility>1</visibility>\n   <Icon>\n       <href>{$EXTERNAL_BASEURL}/kml/timestamp.php?label=\". date(\"d M Y h:i A T\", $radarts) .\"</href>\n   </Icon>\n   <description>WaterWatch Legend</description>\n   <overlayXY x=\\\".3\\\" y=\\\"0.99\\\" xunits=\\\"fraction\\\" yunits=\\\"fraction\\\"/>\n   <screenXY x=\\\".3\\\" y=\\\"0.99\\\" xunits=\\\"fraction\\\" yunits=\\\"fraction\\\"/>\n   <size x=\\\"0\\\" y=\\\"0\\\" xunits=\\\"pixels\\\" yunits=\\\"pixels\\\"/>\n  </ScreenOverlay>\n  <Placemark>\n    <description>\n        <![CDATA[\n  <p><font color=\\\"red\\\"><i>Polygon Size:</i></font> \". $row[\"psize\"] .\" sq km\n  <br /><font color=\\\"red\\\"><i>Status:</i></font> \". $vtec_action[$row[\"status\"]] .\"\n   </p>\n        ]]>\n    </description>\n    <styleUrl>#iemstyle</styleUrl>\n    <name>\". $vtec_phenomena[$phenomena] .\" \". $vtec_significance[$significance]  .\"</name>\\n\";\necho $row[\"kml\"];\necho \"</Placemark>\n </Document>\n</kml>\";\n"
  },
  {
    "path": "htdocs/kml/sbw_interval.php",
    "content": "<?php\n/* Sucks to render a KML */\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/reference.php\";\nrequire_once \"../../include/mlib.php\";\n$vtec_action = $reference[\"vtec_action\"];\n$vtec_phenomena = $reference[\"vtec_phenomena\"];\n$vtec_significance = $reference[\"vtec_significance\"];\n\nfunction nice_date($val)\n{\n    if (is_null($val)) return \"not available\";\n    return gmdate('d M Y H:i', strtotime($val)) . \" UTC\";\n}\n\n$connect = iemdb(\"postgis\");\n$has_error = false;\n$error_message = 'Unknown error occurred';\n$mywfos = array();\nif (isset($_REQUEST['location_group'])) {\n    $location_group = (string) $_REQUEST['location_group'];\n    if ($location_group === 'states') {\n        if (isset($_REQUEST[$location_group])) {\n            $mywfos = pull_wfos_in_states($_REQUEST[$location_group]);\n            if ($mywfos === null) {\n                $has_error = true;\n                $error_message = 'Error determine relevant list of WFO to use';\n            } else {\n                // Make sure we have at least one wfo\n                if (count($mywfos) === 0) {\n                    $has_error = true;\n                    $error_message = 'Unable to find any WFO in those states';\n                }\n            }\n        } else {\n            $has_error = true;\n            $error_message = 'No states specified';\n        }\n    } elseif ($location_group === 'wfo') {\n        $wfo = isset($_GET[\"wfo\"]) ? substr($_GET[\"wfo\"], 0, 3) : \"\";\n        $mywfos = isset($_GET[\"wfos\"]) ? $_GET[\"wfos\"] : array();\n        if (sizeof($mywfos) == 0 && $wfo != \"\") {\n            $mywfos[] = $wfo;\n        }\n    }\n} else {\n    $has_error = true;\n    $error_message = 'No location type specified';\n}\n\nif ($has_error) {\n    http_response_code(422);\n    echo $error_message;\n    exit;\n} else {\n    if (isset($_REQUEST[\"year1\"])) {\n        $ts = mktime($_REQUEST[\"hour1\"], $_REQUEST[\"minute1\"], 0, $_REQUEST[\"month1\"], $_REQUEST[\"day1\"], $_REQUEST[\"year1\"]);\n        $ts2 = mktime($_REQUEST[\"hour2\"], $_REQUEST[\"minute2\"], 0, $_REQUEST[\"month2\"], $_REQUEST[\"day2\"], $_REQUEST[\"year2\"]);\n    } else {\n        $ts = isset($_GET[\"ts\"]) ? strtotime($_GET[\"ts\"]) : die(\"APIFAIL\");\n        $ts2 = isset($_GET[\"ts2\"]) ? strtotime($_GET[\"ts2\"]) : die(\"APIFAIL\");\n    }\n\n    $tsSQL = date(\"Y-m-d H:i:00+00\", $ts);\n    $tsSQL2 = date(\"Y-m-d H:i:00+00\", $ts2);\n\n    $result = pull_vtec_events_by_wfo_year(\n        $connect,\n        $mywfos,\n        $tsSQL,\n        $tsSQL2,\n        $_GET\n    );\n}\n\nheader('Content-disposition: attachment; filename=sbw_interval.kml');\nheader(\"Content-Type: application/vnd.google-earth.kml+xml\");\n// abgr\n\necho \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\n<kml xmlns=\\\"http://earth.google.com/kml/2.2\\\">\n <Document>\n    <Style id=\\\"TOstyle\\\">\n      <LineStyle><width>1</width><color>ff000000</color></LineStyle>\n      <PolyStyle><color>7d0000ff</color></PolyStyle>\n    </Style>\n    <Style id=\\\"MAstyle\\\">\n      <LineStyle><width>1</width><color>ff000000</color></LineStyle>\n      <PolyStyle><color>7d00ff00</color></PolyStyle>\n    </Style>\n    <Style id=\\\"SVstyle\\\">\n      <LineStyle><width>1</width><color>ff000000</color></LineStyle>\n      <PolyStyle><color>7d00ffff</color></PolyStyle>\n    </Style>\n    <Style id=\\\"FAstyle\\\">\n      <LineStyle><width>1</width><color>ff000000</color></LineStyle>\n      <PolyStyle><color>7d00ff00</color></PolyStyle>\n    </Style>\n    <Style id=\\\"DSstyle\\\">\n      <LineStyle><width>1</width><color>ff000000</color></LineStyle>\n      <PolyStyle><color>7dFFE4C4</color></PolyStyle>\n    </Style>\n    <Style id=\\\"FFstyle\\\">\n      <LineStyle><width>1</width><color>ff000000</color></LineStyle>\n      <PolyStyle><color>7d00ff00</color></PolyStyle>\n    </Style>\";\nwhile ($row = pg_fetch_assoc($result)) {\n    $uri = sprintf(\n        \"<a href=\\\"%s/vtec?year=%s&wfo=%s&phenomena=%s&significance=%s&eventid=%04d\\\">%s</a>\",\n        $EXTERNAL_BASEURL,\n        date('Y', strtotime($row[\"polygon_begin\"])),\n        rectify_wfo($row[\"wfo\"]),\n        $row[\"phenomena\"],\n        $row[\"significance\"],\n        $row[\"eventid\"],\n        $row[\"eventid\"]\n    );\n    echo \"<Placemark>\n    <description>\n        <![CDATA[\n  <p><font color=\\\"red\\\"><i>Polygon Size:</i></font> \" . $row[\"psize\"] . \" sq km\n  <br /><font color=\\\"red\\\"><i>Event ID:</i></font> $uri\n  <br /><font color=\\\"red\\\"><i>Issued:</i></font> \" . nice_date($row[\"issue\"]) . \"\n  <br /><font color=\\\"red\\\"><i>Expires:</i></font> \" . nice_date($row[\"expire\"]) . \"\n  <br /><font color=\\\"red\\\"><i>Polygon Begin:</i></font> \" . nice_date($row[\"polygon_begin\"]) . \"\n  <br /><font color=\\\"red\\\"><i>Polygon End:</i></font> \" . nice_date($row[\"polygon_end\"]) . \"\n  <br /><font color=\\\"red\\\"><i>Status:</i></font> \" . $vtec_action[$row[\"status\"]] . \"\n  <br /><font color=\\\"red\\\"><i>Hail Tag:</i></font> {$row[\"hailtag\"]} IN\n  <br /><font color=\\\"red\\\"><i>Wind Tag:</i></font> {$row[\"windtag\"]} MPH\n  <br /><font color=\\\"red\\\"><i>Tornado Tag:</i></font> {$row[\"tornadotag\"]}\n  <br /><font color=\\\"red\\\"><i>Damage Tag:</i></font> {$row[\"damagetag\"]}\n   </p>\n        ]]>\n    </description>\n    <styleUrl>#\" . $row[\"phenomena\"] . \"style</styleUrl>\n    <name>\" . $vtec_phenomena[$row[\"phenomena\"]] . \" \" . $vtec_significance[$row[\"significance\"]]  . \"</name>\\n\";\n    echo $row[\"kml\"];\n    echo \"</Placemark>\";\n}\necho \"</Document>\n</kml>\";\n\nfunction pull_wfos_in_states($state_abbreviations)\n{\n    $db = iemdb(\"mesosite\");\n    $status = true;\n    $sql = 'SELECT distinct wfo FROM stations WHERE state IN (';\n    // Loop over the states just to be safe\n    $in_delimiter = '';\n    $valid_state_count = 0;\n    $wfos = array();\n    $wfo_count = 0;\n    foreach ($state_abbreviations as $state_abbreviation) {\n        if (preg_match('#^[A-Z]{2}$#', $state_abbreviation)) {\n            $sql .= $in_delimiter . '\\'' . $state_abbreviation . '\\'';\n            $in_delimiter = ',';\n            ++$valid_state_count;\n        } else {\n            $status = false;\n            break;\n        }\n    }\n    if ($status) {\n        if ($valid_state_count > 0) {\n            $sql .= ')';\n            $result  = pg_query($db, $sql);\n            while ($row = pg_fetch_assoc($result)) {\n                if ($row['wfo'] !== null) {\n                    $wfos[$wfo_count] = $row['wfo'];\n                    ++$wfo_count;\n                }\n            }\n        } else {\n            $status = false;\n        }\n    }\n\n    if (!$status) {\n        $wfos = null;\n    }\n\n    return $wfos;\n}\n\nfunction pull_vtec_events_by_wfo_year(\n    $db,\n    $wfos,\n    $tsSQL,\n    $tsSQL2,\n    $form\n) {\n    if (count($wfos) > 0 && ! in_array(\"ALL\", $wfos)) {\n        $wfolimiter = 'wfo IN (\\'' . implode(\"','\", $wfos) . '\\') and';\n    } else {\n        $wfolimiter = '';\n    }\n    $pslimiter = \"\";\n    if (isset($form[\"limitps\"]) && ($form[\"limitps\"] == \"1\")) {\n        $pslimiter = sprintf(\n            \" and phenomena = '%s' and significance = '%s' \",\n            $form[\"phenomena\"],\n            $form[\"significance\"],\n        );\n    }\n    $statuslimiter = \" status = 'NEW' \";\n    if (isset($form[\"addsvs\"]) && ($form[\"addsvs\"] == \"1\")) {\n        $statuslimiter = \" status != 'CAN' \";\n    }\n    if (isset($form[\"limit2\"]) && ($form[\"limit2\"] == \"1\")) {\n        // This is tough as the sbw table has events come in and out of\n        // emergency status\n        $stname_int = iem_pg_prepare(\n            $db,\n            <<<EOM\nwith possible_events as (\n    select distinct wfo, vtec_year, eventid, phenomena, significance from sbw\n    where is_emergency and $wfolimiter coalesce(issue, polygon_begin) >= $1\n    and coalesce(issue, polygon_begin) <= $2 $pslimiter\n)\n    SELECT\n    s.issue, s.expire, s.phenomena, s.significance, s.eventid, s.wfo, s.status,\n    ST_askml(s.geom) as kml,\n    round(ST_area(ST_transform(s.geom,2163)) / 1000000.0) as psize,\n    s.polygon_begin, s.polygon_end, s.tornadotag, s.damagetag, s.windtag,\n    s.hailtag from sbw s, possible_events pe\n    WHERE s.vtec_year = pe.vtec_year and s.wfo = pe.wfo and\n    s.eventid = pe.eventid and s.phenomena = pe.phenomena and $statuslimiter\nEOM\n        );\n        $stname = iem_pg_prepare(\n            $db,\n            <<<EOM\nwith possible_events as (\n    select distinct wfo, vtec_year, eventid, phenomena, significance from sbw\n    where is_emergency and $wfolimiter coalesce(issue, polygon_begin) <= $1\n    and expire > $2 $pslimiter\n)\n    SELECT\n    s.issue, s.expire, s.phenomena, s.significance, s.eventid, s.wfo, s.status,\n    ST_askml(s.geom) as kml,\n    round(ST_area(ST_transform(s.geom,2163)) / 1000000.0) as psize,\n    s.polygon_begin, s.polygon_end, s.tornadotag, s.damagetag, s.windtag,\n    s.hailtag from sbw s, possible_events pe\n    WHERE s.vtec_year = pe.vtec_year and s.wfo = pe.wfo and\n    s.eventid = pe.eventid and s.phenomena = pe.phenomena and $statuslimiter\nEOM\n        );\n    } else {\n        $stname_int = iem_pg_prepare($db, \"SELECT\n            issue, expire, phenomena, significance, eventid, wfo, status,\n            ST_askml(geom) as kml,\n            round(ST_area(ST_transform(geom,2163)) / 1000000.0) as psize,\n            polygon_begin, polygon_end, tornadotag, damagetag, windtag, hailtag\n            from sbw s\n            WHERE $wfolimiter coalesce(issue, polygon_begin) >= $1\n            and coalesce(issue, polygon_begin) <= $2\n            and $statuslimiter $pslimiter\");\n        $stname = iem_pg_prepare($db, \"SELECT\n            issue, expire, phenomena, significance, eventid, wfo, status,\n            ST_askml(geom) as kml,\n            round(ST_area(ST_transform(geom,2163)) / 1000000.0) as psize,\n            polygon_begin, polygon_end, tornadotag, damagetag, windtag, hailtag\n            from sbw s\n            WHERE $wfolimiter coalesce(issue, polygon_begin) <= $1 and\n            expire > $2\n            and $statuslimiter $pslimiter\");\n    }\n    if ($tsSQL != $tsSQL2) {\n        $result = pg_execute($db, $stname_int, array($tsSQL, $tsSQL2));\n    } else {\n        $result = pg_execute($db, $stname, array($tsSQL, $tsSQL));\n    }\n    return $result;\n}\n"
  },
  {
    "path": "htdocs/kml/sbw_lsrs.php",
    "content": "<?php\n/* Sucks to render a KML */\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\n$connect = iemdb(\"postgis\");\n\n$year = get_int404(\"year\", 2006);\n$wfo = isset($_GET[\"wfo\"]) ? substr(xssafe($_GET[\"wfo\"]),0,4) : \"MPX\";\nif (strlen($wfo) > 3){\n    $wfo = substr($wfo, 1, 3);\n}\n$eventid = get_int404(\"eventid\", 103);\n$phenomena = isset($_GET[\"phenomena\"]) ? substr(xssafe($_GET[\"phenomena\"]),0,2) : \"SV\";\n$significance = isset($_GET[\"significance\"]) ? substr(xssafe($_GET[\"significance\"]),0,1) : \"W\";\n\n$stname = iem_pg_prepare($connect, \"SELECT l.*, ST_askml(l.geom) as kml\n           from sbw w, lsrs l\n           WHERE w.vtec_year = $1 and w.wfo = $2 and w.phenomena = $3 and\n           w.eventid = $4 and w.significance = $5\n           and w.geom && l.geom and l.valid BETWEEN w.issue and w.expire\n           and w.status = 'NEW'\");\n\n$result = pg_execute($connect, $stname, array($year, $wfo, $phenomena, $eventid, $significance));\n$row = pg_fetch_assoc($result);\n\nheader('Content-disposition: attachment; filename=sbw_lsrs.kml');\nheader(\"Content-Type: application/vnd.google-earth.kml+xml\");\n// abgr\n$color = \"7dff0000\";\n$ca = Array(\"TO\" => \"7d0000ff\", \"SV\" => \"7d00ffff\", \"FF\" => \"7d00ff00\",\n             \"MA\" => \"7d00ff00\");\nif (isset($ca[$phenomena])) { $color = $ca[$phenomena]; }\n\necho \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\n<kml xmlns=\\\"http://earth.google.com/kml/2.2\\\">\n <Document>\n    <Style id=\\\"iemstyle\\\">\n      <LineStyle>\n        <width>1</width>\n        <color>ff000000</color>\n      </LineStyle>\n      <PolyStyle>\n        <color>$color</color>\n      </PolyStyle>\n    </Style>\";\nfor ($i=0;$row=pg_fetch_assoc($result);$i++)\n{\n  $ts = strtotime( $row[\"valid\"] );\n  echo \"<Placemark>\n    <description>\n        <![CDATA[\n  <p><font color=\\\"red\\\"><i>Location:</i></font> \". $row[\"city\"] .\" \". $row[\"county\"] .\" \". $row[\"state\"] .\"\n  <br /><font color=\\\"red\\\"><i>Time:</i></font> \". gmdate('d M Y H:i', $ts) .\" GMT\n  <br /><font color=\\\"red\\\"><i>Source:</i></font> \". $row[\"source\"] .\"\n  <br /><font color=\\\"red\\\"><i>Remark:</i></font> \". $row[\"remark\"] .\"\n   </p>\n        ]]>\n    </description>\n    <styleUrl>#iemstyle</styleUrl>\n    <name>\". $row[\"magnitude\"] .\" \". $row[\"typetext\"] .\"</name>\\n\";\necho $row[\"kml\"];\necho \"</Placemark>\";\n}\necho \"\n </Document>\n</kml>\";\n"
  },
  {
    "path": "htdocs/kml/timestamp.php",
    "content": "<?php\n// dynamic image generation of a timestamp\n$label = isset($_REQUEST[\"label\"]) ? substr($_GET[\"label\"], 0, 120) : \"No \\$label set\";\n$font_size = isset($_GET[\"font_size\"]) ? intval($_GET[\"font_size\"]) : 15;\n\n$Font = '/mesonet/data/gis/static/fonts/arialbd.ttf';\n\n$size = imagettfbbox($font_size, 0, $Font, $label);\n$dx = abs($size[2] - $size[0]);\n$dy = abs($size[5] - $size[3]);\n$x_pad = 30;\n$y_pad = 10;\n$width = $dx + $x_pad;\n$height = $dy + $y_pad;\n\n$gif = ImageCreate($width + 10, $height);\n$white = ImageColorAllocate($gif, 250, 250, 250);\n$black = ImageColorAllocate($gif, 0, 0, 0);\n$red = ImageColorAllocate($gif, 250, 0, 0);\n$grey = ImageColorAllocate($gif, 110, 110, 110);\n\nImageColorTransparent($gif, $white);\n\n$xborder = (int) ($x_pad / 2) - 5;\n\n\n//ImageTTFText($gif, $font_size, 0, (int) ($x_pad/2)+1, $dy + (int) ($y_pad/2), $grey, $Font, $label);\nImageTTFText($gif, $font_size, 0, (int) ($x_pad / 2), $dy + (int) ($y_pad / 2) - 1, $black, $Font, $label);\n\nheader(\"content-type: image/png\");\nImagePng($gif);\nImageDestroy($gif);\n"
  },
  {
    "path": "htdocs/kml/vtec.php",
    "content": "<?php\n/* Sucks to render a KML */\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/reference.php\";\nrequire_once \"../../include/forms.php\";\n$connect = iemdb(\"postgis\");\n$vtec_action = $reference[\"vtec_action\"];\n$vtec_phenomena = $reference[\"vtec_phenomena\"];\n$vtec_significance = $reference[\"vtec_significance\"];\n\n$year = get_int404(\"year\", 2006);\n$wfo = isset($_GET[\"wfo\"]) ? substr(xssafe($_GET[\"wfo\"]), 0, 4) : \"MPX\";\nif (strlen($wfo) > 3) {\n    $wfo = substr($wfo, 1, 3);\n}\n$eventid = get_int404(\"eventid\", 103);\n$phenomena = isset($_GET[\"phenomena\"]) ? substr(xssafe($_GET[\"phenomena\"]), 0, 2) : \"SV\";\n$significance = isset($_GET[\"significance\"]) ? substr(xssafe($_GET[\"significance\"]), 0, 1) : \"W\";\n\n$stname = iem_pg_prepare($connect, \"SELECT  \n           ST_askml(geom) as kml, issue, expire, status,\n           round(ST_area(ST_transform(geom,9311)) / 1000000.0) as psize\n           from sbw\n           WHERE wfo = $1 and phenomena = $2 and \n           eventid = $3 and significance = $4 and vtec_year = $5\n           and status = 'NEW'\");\n\n$result = pg_execute(\n    $connect,\n    $stname,\n    array($wfo, $phenomena, $eventid, $significance, $year)\n);\n\nif (pg_num_rows($result) <= 0) {\n    $stname = iem_pg_prepare($connect, \"SELECT \n            issue, expire, status,\n           ST_askml(u.geom) as kml,\n           round(ST_area(ST_transform(u.geom,9311)) / 1000000.0) as psize\n           from warnings w JOIN ugcs u on (u.gid = w.gid)\n           WHERE w.wfo = $1 and phenomena = $2 and \n           eventid = $3 and significance = $4 and vtec_year = $5\");\n\n    $result = pg_execute(\n        $connect,\n        $stname,\n        array($wfo, $phenomena, $eventid, $significance, $year)\n    );\n}\n\n$label = \"\";\nif (pg_num_rows($result) > 0) {\n    $row = pg_fetch_assoc($result, 0);\n    $radarts = strtotime($row[\"issue\"]);\n    if (strtotime($row[\"expire\"]) > time()) {\n        $radarts = time();\n    }\n    $label = date(\"d M Y h:i A T\", $radarts);\n}\nheader('Content-disposition: attachment; filename=vtec.kml');\nheader(\"Content-Type: application/vnd.google-earth.kml+xml\");\n// abgr\n$color = \"7dff0000\";\n$ca = array(\n    \"TO\" => \"7d0000ff\", \"SV\" => \"7d00ffff\", \"FF\" => \"7d00ff00\",\n    \"MA\" => \"7d00ff00\"\n);\nif (isset($ca[$phenomena])) {\n    $color = $ca[$phenomena];\n}\n\necho \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\n<kml xmlns=\\\"http://earth.google.com/kml/2.2\\\">\n <Document>\n    <Style id=\\\"iemstyle\\\">\n      <LineStyle>\n        <width>1</width>\n        <color>ff000000</color>\n      </LineStyle>\n      <PolyStyle>\n        <color>$color</color>\n      </PolyStyle>\n    </Style>\n\";\n\nwhile ($row = pg_fetch_assoc($result)) {\n    echo \"<Placemark>\n    <description>\n        <![CDATA[\n  <p><font color=\\\"red\\\"><i>Polygon Size:</i></font> \" . $row[\"psize\"] . \" sq km\n  <br /><font color=\\\"red\\\"><i>Status:</i></font> \" . $vtec_action[$row[\"status\"]] . \"\n   </p>\n        ]]>\n    </description>\n    <styleUrl>#iemstyle</styleUrl>\n    <name>\" . $vtec_phenomena[$phenomena] . \" \" . $vtec_significance[$significance]  . \"</name>\\n\";\n    echo $row[\"kml\"];\n    echo \"</Placemark>\";\n}\necho \" </Document>\n</kml>\";\n"
  },
  {
    "path": "htdocs/kml/webcams.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\n$network = isset($_GET[\"network\"]) ? xssafe($_GET[\"network\"]) : \"KCCI\"; \n\nheader(\"Content-Type: application/vnd.google-earth.kml+xml\");\necho <<<EOM\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<kml xmlns=\"http://earth.google.com/kml/2.2\">\n <Document>\n   <Style id=\"iemstyle\">\n     <IconStyle>\n      <scale>0.8</scale>\n      <Icon>\n        <href>http://maps.google.com/mapfiles/kml/shapes/webcam.png</href>\n      </Icon>\n     </IconStyle>\n     <BalloonStyle>\n      <bgColor>ffffffff</bgColor>\n    </BalloonStyle>\n  </Style>\nEOM;\n\n$conn = iemdb(\"mesosite\");\n$stname = iem_pg_prepare($conn, \"SELECT *, ST_x(geom) as lon, ST_y(geom) as lat\n        from camera_current c JOIN webcams w\n        on (w.id = c.cam) WHERE \n        valid > (now() - '30 minutes'::interval) and network = $1\");\n$rs = pg_execute($conn, $stname, Array($network)); \nwhile ($row=pg_fetch_assoc($rs))\n{\n  echo \"<Placemark>\n    <name>\". str_replace('&', '&amp;', $row[\"name\"]) .\"</name>\n    <description>\n<![CDATA[\n  <p><img src=\\\"{$EXTERNAL_BASEURL}/data/camera/stills/\". $row[\"cam\"] .\".jpg\\\" /></p>\n        ]]>\n    </description>\n    <styleUrl>#iemstyle</styleUrl>\n    <Point>\n       <coordinates>\". $row[\"lon\"] .\",\". $row[\"lat\"] .\",0</coordinates>\n    </Point>\n</Placemark>\";\n}\necho \"</Document></kml>\";\n"
  },
  {
    "path": "htdocs/layar/l3attr.php",
    "content": "<?php\n/* Generate JSON of l3 nexrad attributes! */\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\n$postgis = iemdb(\"radar\");\n\nheader(\"Content-type: application/json\");\n\n/* Figure out what was requested */\n$center_lat = isset($_GET[\"lat\"]) ? floatval(xssafe($_GET[\"lat\"])): 58.1;\n$center_lng = isset($_GET[\"lon\"]) ? floatval(xssafe($_GET[\"lon\"])): -97.0;\n$radius = isset($_GET[\"radius\"]) ? floatval(xssafe($_GET[\"radius\"])): 2000.0; # in meters\n\n$stname = iem_pg_prepare($postgis, \"SELECT ST_x(geom) as lon, ST_y(geom) as lat,\n     ST_distance(ST_transform(geom,9311), \n       ST_transform(\n        ST_Point($1, $2, 4326),9311)) as dist,\n      * from nexrad_attributes WHERE ST_distance(ST_transform(geom,9311), \n       ST_transform(\n        ST_Point($1, $2, 4326),9311)) < $3\");\n\n$rs = pg_execute($postgis, $stname, Array($center_lng, $center_lat, $radius));\nif (pg_num_rows($rs) == 0){\n  $json = array(\"hotspots\"=> Array(), \"layer\"=>\"nexradl3attr\", \"errorString\"=>\"Sorry, no attributes close to you right now!\", \"morePages\"=>false, \"errorCode\"=>21, \"nextPageKey\"=>null);\n  echo json_encode($json);\n  die();\n\n}\n/*\n nexrad         | character(3)             | \n storm_id       | character(2)             | \n geom           | geometry                 | \n azimuth        | smallint                 | \n range          | smallint                 | \n tvs            | character varying(10)    | \n meso           | character varying(10)    | \n posh           | smallint                 | \n poh            | smallint                 | \n max_size       | real                     | \n vil            | smallint                 | \n max_dbz        | smallint                 | \n max_dbz_height | real                     | \n top            | real                     | \n drct           | smallint                 | \n sknt           | smallint                 | \n valid          | timestamp with time zone | \n*/\n$json = Array(\"layer\"=>\"nexradl3attr\", \n        \"errorString\"=>\"ok\", \"morePages\"=>false, \"errorCode\"=>0, \n        \"nextPageKey\"=>null);\n\nfor($i=0;$row=pg_fetch_assoc($rs);$i++)\n{\n  $lat = sprintf(\"%.6f\", $row[\"lat\"]);\n  $lon = sprintf(\"%.6f\", $row[\"lon\"]);\n  $json[\"hotspots\"][] = array(\n    \"actions\" => array(),\n    \"attribution\" => \"NWS \". $row[\"nexrad\"] .\" NEXRAD\",\n    \"distance\" => intval($row[\"dist\"]), // km back to meter!\n    \"id\" => $i,\n    \"imageURL\" => null,\n    \"lat\" => (int) str_replace(\".\", \"\", $lat),\n    \"lon\" => (int) str_replace(\".\", \"\", $lon), \n    \"line2\" => sprintf(\"Azimuth: %.1f Range: %.1f\", $row[\"azimuth\"], $row[\"range\"]),\n    \"line3\" => sprintf(\"POSH: %.0f\", $row[\"posh\"]),\n    \"line4\" => sprintf(\"VIL: %.1f\", $row[\"vil\"]),\n    \"title\" => sprintf(\"%s %s %s\", $row['storm_id'], $row[\"azimuth\"], $row[\"range\"]),\n    \"type\" => 0);\n}\n\necho json_encode($json);\n"
  },
  {
    "path": "htdocs/lsr/old.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n        <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>IEM :: Local Storm Report App</title>\n    <meta name=\"description\" content=\"Iowa State University, Iowa Environmental Mesonet\">\n    <meta name=\"author\" content=\"daryl herzmann akrherz@iastate.edu\">\n\n    <!-- NB: we are stuck with FA 4.7.0 due to iastate theme -->\n    <link href=\"/vendor/fa/4.7.0/css/font-awesome.min.css\" rel=\"stylesheet\">\n    <link href=\"/vendor/iastate-v2.0.13/css/iastate.min.css\" rel=\"stylesheet\">\n\n    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->\n    <!--[if lt IE 9]>\n      <script src=\"/vendor/html5shiv/3.7.3/html5shiv.min.js\"></script>\n      <script src=\"/vendor/respond/1.4.2/respond.min.js\"></script>\n    <![endif]-->\n    <!-- Any page specific headextra content here -->\n    <link rel=\"stylesheet\" href=\"/vendor/jquery-datatables/1.11.1/datatables.min.css\" />\n<link rel=\"stylesheet\" href=\"/vendor/jquery-ui/1.11.4/jquery-ui.min.css\" />\n<link rel=\"stylesheet\" type=\"text/css\"\nhref=\"/vendor/datetimepicker/2.5.20/jquery.datetimepicker.min.css\" />\n<link rel='stylesheet' href=\"/vendor/openlayers/10.4.0/ol.css\" type='text/css'>\n<link type=\"text/css\" href=\"/vendor/openlayers/10.4.0/ol-layerswitcher.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"static.css\" rel=\"stylesheet\" />\n<link rel=\"stylesheet\" type=\"text/css\"\n href=\"/vendor/select2/4.1.0rc0/select2.min.css\"/ >\n    <!-- Essential Social Tags -->\n    <meta property=\"og:title\" content=\"IEM :: Local Storm Report App\">\n    <meta property=\"og:description\" content=\"Iowa Environmental Mesonet of Iowa State University\">\n    <meta property=\"og:image\" content=\"https://mesonet.agron.iastate.edu/images/logo_large.png\">\n    <meta property=\"og:url\" content=\"https://mesonet.agron.iastate.edu/lsr/old.phtml\">\n        <meta name=\"twitter:card\" content=\"summary\">\n\n    <!-- Non-essential -->\n    <meta name=\"twitter:creator\" content=\"@akrherz\">\n    <!-- Le fav and touch icons -->\n    <link rel=\"shortcut icon\" href=\"/favicon.ico\">\n    <link rel=\"apple-touch-icon-precomposed\" sizes=\"144x144\" href=\"/apple-touch-icon-precomposed.png\">\n    <link rel=\"apple-touch-icon-precomposed\" sizes=\"114x114\" href=\"/apple-touch-icon-precomposed.png\">\n    <link rel=\"apple-touch-icon-precomposed\" sizes=\"72x72\" href=\"/apple-touch-icon-precomposed.png\">\n    <link rel=\"apple-touch-icon-precomposed\" href=\"/apple-touch-icon-precomposed.png\">\n  </head>\n\n  <body>\n<header>\n<nav class=\"navbar-iastate\">\n\t<div class=\"container\">\n\t\t<!-- navbar-iastate-left -->\n\t\t<ul class=\"nav navbar-nav navbar-iastate-left\">\n\t\t\t<li><a href='https://www.iastate.edu'>iastate.edu</a></li>\n\t\t\t<li class=\"dropdown dropdown-hover isu-index\">\n\t\t\t\t<a href=\"https://www.iastate.edu/index/A\" class=\"dropdown-toggle\" data-toggle=\"\" role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\">Index</a>\n\t\t\t\t<ul class=\"dropdown-menu isu-index-alpha\">\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/A/\">A</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/B/\">B</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/C/\">C</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/D/\">D</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/E/\">E</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/F/\">F</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/G/\">G</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/H/\">H</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/I/\">I</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/J/\">J</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/K/\">K</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/L/\">L</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/M/\">M</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/N/\">N</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/O/\">O</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/P/\">P</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/Q/\">Q</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/R/\">R</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/S/\">S</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/T/\">T</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/U/\">U</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/V/\">V</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/W/\">W</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/X/\">X</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/Y/\">Y</a></li>\n\t\t\t\t\t<li><a href=\"https://www.iastate.edu/index/Z/\">Z</a></li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t</ul>\n\t\t<!-- /navbar-iastate-left -->\n\n\t\t<!-- navbar-iastate-right -->\n\t\t<ul class=\"nav navbar-nav navbar-right navbar-iastate-right\">\n\t\t\t<li><a href=\"https://info.iastate.edu/\">Directory</a></li>\n\t\t\t<li><a href=\"https://www.fpm.iastate.edu/maps/\">Maps</a></li>\n\t\t\t<li><a href=\"https://web.iastate.edu/safety/\">Safety</a></li>\n\t\t\t<li class=\"dropdown dropdown-hover\">\n\t\t\t\t<a href=\"//web.iastate.edu/signons/\" class=\"dropdown-toggle\" data-toggle=\"\" role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\">Sign Ons</a>\n\t\t\t\t<ul class=\"dropdown-menu\">\n\t\t\t\t\t<li><a href=\"https://accessplus.iastate.edu/\">AccessPlus</a></li>\n\t\t\t\t\t<li><a href=\"https://bb.its.iastate.edu/\">Blackboard</a></li>\n\t\t\t\t\t<li><a href=\"https://cymail.iastate.edu/\">CyMail</a></li>\n\t\t\t\t\t<li><a href=\"https://outlook.iastate.edu/\">Outlook</a></li>\n\t\t\t\t\t<li><a href=\"https://web.iastate.edu/signons/\">More Sign Ons...</a></li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t</ul>\n\t\t<!-- /navbar-iastate-right -->\n\n\t</div>\n</nav>\n<!-- /navbar-iastate -->\n\n<nav class=\"navbar-site\">\n\t<div class=\"container\">\n\n\t\t<div class=\"navbar-site-wordmark\">\n\t\t\t<a href=\"/\" title=\"Home\" class=\"wordmark-unit\">\n\t\t\t\t<span class=\"wordmark-isu\">Iowa State University</span>\n\t\t\t\t<span class=\"wordmark-unit-title\">Iowa Environmental Mesonet</span>\n\t\t\t</a>\n\t\t</div>\n\n\t\t<div class=\"navbar-header visible-xs visible-sm\">\n\t\t\t<button id=\"navbar-menu-button\" type=\"button\" class=\"navbar-toggle navbar-toggle-left collapsed\" data-toggle=\"collapse\" data-target=\"#navbar-menu-collapse, #navbar-site-links-collapse\" aria-expanded=\"false\">\n\t\t\t\t<span class=\"navbar-toggle-icon menu-icon\">\n\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t</span>\n\t\t\t\t<span class=\"navbar-toggle-label\">\n\t\t\t\t\tMenu <span class=\"sr-only\">Toggle</span>\n\t\t\t\t</span>\n\t\t\t</button>\n\t\t\t<button id=\"navbar-search-button\" type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar-site-search-collapse\" aria-expanded=\"false\">\n\t\t\t\t<span class=\"navbar-toggle-icon search-icon\"></span>\n\t\t\t\t<span class=\"navbar-toggle-label\">\n\t\t\t\t\tSearch <span class=\"sr-only\">Toggle</span>\n\t\t\t\t</span>\n\t\t\t</button>\n\t\t</div>\n\n\t\t<div class=\"navbar-site-info collapse navbar-collapse\" id=\"navbar-site-search-collapse\">\n\t\t\t<form action=\"/search\" class=\"navbar-site-search\" method=\"GET\" role=\"search\">\n\t\t\t\t<label for=\"search-input\" class=\"sr-only\">Search</label>\n\t\t\t\t<input name=\"q\" id=\"search-input\" aria-label=\"Text input for search\" title=\"Search\" placeholder=\"Search 'DSM' 'autoplot 100' 'street address'\" tabindex=\"0\" type=\"text\" class=\"form-control\">\n\t\t\t\t<input class=\"hidden\" title=\"Submit\" type=\"submit\" value=\"Search\">\n\t\t\t\t<span class=\"search-icon\"></span>\n\t\t\t</form>\n\t\t</div>\n\n\t\t<div class=\"navbar-site-info collapse navbar-collapse navbar-caps\" id=\"navbar-site-links-collapse\">\n\t\t\t<ul class=\"nav navbar-nav navbar-right\">\n\t\t\t\t<!-- Site-wide links. Customized for your site -->\n\t\t\t\t<li><a href=\"/info/contacts.php\">contact us</a></li>\n\t\t\t\t<li><a href=\"/disclaimer.php\">disclaimer</a></li>\n\t\t\t\t<li><a href=\"/apps.php\">apps</a></li>\n\t\t\t</ul>\n\t\t</div>\n\n\t</div>\n</nav>\n</header>\n\n<div class=\"container\">\n<div class=\"navbar navbar-default\">\n    <div class=\"navbar-header\">\n        <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n                <span class=\"icon-bar\"></span>\n                <span class=\"icon-bar\"></span>\n                <span class=\"icon-bar\"></span>\n        </button>\n\t</div>\n    <div class=\"navbar-collapse collapse\">\n    \t<div class=\"hidden-xs hidden-sm\">\n        <a href=\"/\"><img style=\"height: 50px;\" alt=\"IEM\" class=\"img-responsive pull-left\" src=\"/images/logo_small.png\" /></a>\n\t\t</div>\n        <ul class=\"nav navbar-nav\">\n\n<li class=\"dropdown\"><a class=\"dropdown-toggle\" data-toggle=\"dropdown\"\n\thref=\"#\"> <span class=\"fa fa-home\"></span> </a>\n\t<ul class=\"dropdown-menu\">\n        <li><a href=\"/projects/iao/\">Iowa Atmospheric Observatory</a></li>\n\t\t<li><a href=\"/\">Iowa Environmental Mesonet</a></li>\n\t\t<li><a href=\"https://cocorahs.org\">CoCoRaHS</a></li>\n\t\t<li><a href=\"https://dailyerosion.org\">Daily Erosion Project</a></li>\n\t\t<li><a href=\"https://weather.im\">Weather.IM Project</a></li>\n\t</ul></li>\n\n<li class=\"dropdown\">\n<a class=\"dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\">Apps</a>\n<ul class=\"dropdown-menu\">\n<li><a href=\"/apps.php\">Application Index</a></li>\n<li><a href=\"/plotting/auto/\">Automated Data Plotting</a></li>\n<li><a href=\"/climodat/\">Climodat</a></li>\n<li><a href=\"/climodat/monitor.php\">Climodat Monitor</a></li>\n<li><a href=\"/explorer/\">IEM Explorer</a></li>\n<li><a href=\"/rainfall/obhour.phtml\">Hourly Precip</a></li>\n<li><a href=\"/GIS/apps/rview/warnings.phtml\">Interactive Radar</a></li>\n<li><a href=\"/topics/pests/\">Pest Maps + Forecasting</a></li>\n<li><a href=\"/my/current.phtml\">Sortable Currents</a></li>\n<li><a href=\"/timemachine/\">Time Machine</a></li>\n<li><a href=\"/sites/windrose.phtml?station=AMW&network=IA_ASOS\">Wind Roses</a></li>\n</ul>\n</li>\n<li class=\"dropdown\">\n<a class=\"dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\">Areas</a>\n<ul class=\"dropdown-menu\">\n<li><a href=\"/agweather/\">Ag Weather/Climate Info</a></li>\n<li><a href=\"/archive/\">Archive Mainpage</a></li>\n<li><a href=\"/climate/\">Climate Mainpage</a></li>\n<li><a href=\"/current/\">Current Mainpage</a></li>\n<li><a href=\"/dm/\">Drought</a></li>\n<li><a href=\"/GIS/\">GIS Mainpage</a></li>\n<li><a href=\"/nws/\">NWS Mainpage</a></li>\n<li><a href=\"/current/severe.phtml\">Severe Weather Mainpage</a></li>\n</ul>\n</li>\n<li class=\"dropdown\">\n<a class=\"dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\">Datasets</a>\n<ul class=\"dropdown-menu\">\n<li><a href=\"/COOP/extremes.php\">Daily Climatology</a></li>\n<li><a href=\"/request/daily.phtml\">Daily Observations</a></li>\n<li><a href=\"/info/datasets/\">Dataset Documentation</a></li>\n<li><a href=\"/iemre/\">IEM Reanalysis</a></li>\n<li><a href=\"/mos/\">Model Output Statistics</a></li>\n<li><a href=\"/docs/nexrad_mosaic/\">NEXRAD Mosaic</a></li>\n<li><a href=\"/request/gis/pireps.php\">PIREP - Pilot Reports</a></li>\n<li><a href=\"/roads/\">Roads Mainpage</a></li>\n<li><a href=\"/current/radar.phtml\">RADAR & Satellite</a></li>\n<li><a href=\"/rainfall/\">Rainfall Data</a></li>\n<li><a href=\"/archive/raob/\">Sounding Archive</a></li>\n<li><a href=\"/smos/\">Soil Moisture Satellite</a></li>\n</ul>\n</li>\n<li class=\"dropdown\">\n<a class=\"dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\">Info</a>\n<ul class=\"dropdown-menu\">\n<li><a href=\"/info.php\">Info Mainpage</a></li>\n<li><a href=\"/onsite/features/past.php\">Daily Features</a></li>\n<li><a href=\"/info/links.php\">Links</a></li>\n<li><a href=\"/onsite/news.phtml\">News</a></li>\n<li><a href=\"/present/\">Presentations</a></li>\n<li><a href=\"/info/refs.php\">Referenced By</a></li>\n<li><a href=\"/sites/locate.php\">Station Data and Metadata</a></li>\n<li><a href=\"/QC/\">Quality Control</a></li>\n<li><a href=\"/info/variables.phtml\">Variables</a></li>\n</ul>\n</li>\n<li class=\"dropdown\">\n<a class=\"dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\">Networks</a>\n<ul class=\"dropdown-menu\">\n<li><a href=\"/sites/networks.php\">Network Tables</a></li>\n<li><a href=\"/ASOS/\">ASOS/AWOS Airports</a></li>\n<li><a href=\"/cocorahs/\">CoCoRaHS - Citizen Science</a></li>\n<li><a href=\"/DCP/\">DCP/HADS/SHEF - Hydrological</a></li>\n<li><a href=\"/COOP/\">NWS COOP - Daily Climate</a></li>\n<li><a href=\"/agclimate/\">ISU Soil Moisture</a></li>\n<li><a href=\"/nstl_flux/\">NLAE Flux</a></li>\n<li><a href=\"/RWIS/\">RWIS - Roadway Weather</a></li>\n<li><a href=\"/scan/\">SCAN - NRCS Soil Climate</a></li>\n<li><a href=\"/other/\">Other</a></li>\n<li><a href=\"/uscrn/\">US Climate Reference</a></li>\n</ul>\n</li>\n<li class=\"dropdown\">\n<a class=\"dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\">NWS Data</a>\n<ul class=\"dropdown-menu\">\n<li><a href=\"/nws/\">NWS Mainpage</a></li>\n<li><a href=\"/lsr/\">Local Storm Report App</a></li>\n<li><a href=\"/cow/\">IEM Cow (SBW Verification)</a></li>\n<li><a href=\"/raccoon/\">IEM Raccoon (SBW Powerpoints)</a></li>\n<li><a href=\"/river/\">River Summary</a></li>\n<li><a href=\"/GIS/goes.phtml\">Satellite Data</a></li>\n<li><a href=\"/vtec/search.php\">Search for Warnings</a></li>\n<li><a href=\"/nws/sps_search/\">Special Weather Statement (SPS) Search</a></li>\n<li><a href=\"/nws/spc_outlook_search/\">SPC Convective Outlook / MCD Search</a></li>\n<li><a href=\"/GIS/apps/rview/watch.phtml\">SPC Watches</a></li>\n<li><a href=\"/nws/text.php\">Text Archives Mainpage</a></li>\n<li><a href=\"/wx/afos/list.phtml\">Text Listing by WFO/Center/Product</a></li>\n<li><a href=\"/wx/afos/\">Text by Product ID</a></li>\n<li><a href=\"/vtec/\">VTEC Browser</a></li>\n</ul>\n</li>\n<li class=\"dropdown\">\n<a class=\"dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\">Services</a>\n<ul class=\"dropdown-menu\">\n<li><a href=\"/api/\">API Mainpage</a></li>\n<li><a href=\"/api/#cgi\">CGI / Bulk Data</a></li>\n<li><a href=\"/request/grx/\">Gibson Ridge Placefiles</a></li>\n<li><a href=\"/projects/iembot/\">iembot</a></li>\n<li><a href=\"/api/#json\">JSON Webservices</a></li>\n<li><a href=\"/request/ldm.php\">LDM</a></li>\n<li><a href=\"/request/maxcsv.py?help\">Max CSV</a></li>\n<li><a href=\"/ogc/\">OGC Webservices</a></li>\n<li><a href=\"/GIS/radmap_api.phtml\">RadMap API</a></li>\n<li><a href=\"/GIS/radview.phtml\">RADAR Services</a></li>\n</ul>\n</li>\n<li class=\"dropdown\">\n<a class=\"dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\">Webcams</a>\n<ul class=\"dropdown-menu\">\n<li><a href=\"/projects/webcam.php\">Webcam mainpage</a></li>\n<li><a href=\"/current/bloop.phtml\">Build your own lapses</a></li>\n<li><a href=\"/cool/\">Cool lapses</a></li>\n<li><a href=\"/current/viewer.phtml\">IEM Webcam Viewer</a></li>\n<li><a href=\"/current/isucams.phtml\">ISU Campus Webcams</a></li>\n<li><a href=\"/current/camlapse/\">Recent lapses</a></li>\n<li><a href=\"/current/webcam.php\">Still images</a></li>\n</ul>\n</li>\n</ul>\n        </div>\n      </div>\n    </div>\n</div><main role=\"main\" id=\"main-content\">\n<div class=\"container-fluid\">\n\n<div class=\"row\">\n  <div class=\"col-md-5\" id=\"leftside\">\n    <div class=\"row\">\n<div class=\"col-md-6\">\n<div class=\"form-group\">\n<input type=\"radio\" name=\"by\" id=\"by_wfo\" value=\"wfo\" checked=\"checked\">\n<label for=\"by_wfo\">Select by WFO: (default ALL)</label>\n<select name=\"wfo\" id=\"wfo\" class=\"form-control\" multiple=\"multiple\"></select>\n\n<br /><input type=\"radio\" name=\"by\" id=\"by_state\" value=\"state\">\n<label for=\"by_state\">Select by State: (default ALL)</label>\n<select name=\"state\" id=\"state\" class=\"form-control\" multiple=\"multiple\"></select>\n\n<br /><input type=\"checkbox\" id=\"realtime\" name=\"rt\">\n  <label for=\"realtime\"> Auto Refresh/Realtime</label>\n</div>\n</div><!-- ./col-md-6 -->\n<div class=\"col-md-6\">\n\n<div class=\"form-group\">\n<label for=\"sts\">Start Time</label>\n<input id=\"sts\" name=\"sts\" class=\"iemdtp\">\n</div>\n\n<div class=\"form-group\">\n<label for=\"ets\">End Time</label>\n<input id=\"ets\" name=\"ets\" class=\"iemdtp\">\n</div>\n</div><!-- ./col-md-6 -->\n</div><!-- ./row -->\n\n<div class=\"row\">\n<div class=\"col-md-10\">\n\n<div class=\"form-group\">\n<label for=\"timeslider\">RADAR Time: <span id=\"radartime\"></span></label>\n<div id=\"timeslider\" class=\"form-control\">\n<div id=\"custom-handle\" class=\"ui-slider-handle\"></div>\n</div>\n</div>\n\n</div>\n<div class=\"col-md-2\">\n\n<button id=\"load\" type=\"button\" class=\"btn btn-primary\">Load</button>\n\n</div><!-- ./col-md-2 -->\n</div><!-- ./row -->\n\n    <div id=\"map\"></div>\n  </div><!-- ./col-md-5 -->\n  <div class=\"col-md-7\" id=\"rightside\">\n\n  <div class=\"tab\", role=\"tabpanel\">\n    <ul class=\"nav nav-tabs\" role=\"tablist\">\n        <li class=\"active\"><a href=\"#1a\" data-toggle=\"tab\">Help</a></li>\n        <li><a id=\"lsrtab\" href=\"#2a\" data-toggle=\"tab\">Local Storm Reports</a></li>\n        <li><a href=\"#3a\" data-toggle=\"tab\">Storm Based Warnings</a></li>\n    </ul>\n\n    <div class=\"tab-content tabs clearfix\">\n        <div role=\"tabpanel\" class=\"tab-pane active\" id=\"1a\">\n            <h3>Local Storm Report App Help</h3>\n\n<p>This application is being replaced by the <a href=\"/lsr/\">new IEM LSR App</a>.</p>\n\n<p>This application allows the quick viewing of National Weather Service (NWS)\nissued Local Storm Reports (LSR).  These LSRs are issued by local NWS forecast\noffices for their area of responsibility.</p>\n<br />\n<p>To use this application, select the NWS forecast office(s) of choice and\nthen a time duration you are interested in.  Times presented on this\napplication are in the timezone of your local computer.</p>\n<br />\n<p>After selecting a time period and office(s), this application will\nautomatically generate a listing of any available LSR reports and also\ngenerate a listing of Storm Based Warnings (SBW)s valid for some portion\nof the period of interest.  You can switch between these data listings\nby click on the tabs found just above this text.</p>\n<br />\n<p>The map interface on the left hand side visually presents these LSRs\nand SBWs.  Clicking on the icon or polygon, highlights the corresponding\ndata in the two tables.</p>\n<br />\n<p>You also have the ability to overlay NEXRAD base reflectivity information\nfor any 5 minute interval during the time period of your choice.</p>\n<br />\n<h3>Linking to this Application</h3>\n<p>This application uses stable URLs allowing you to bookmark and easily\ngenerate links to it.  Currently, there are two calling modes:</p>\n<br />\n<p><i>/lsr/#WFO,WFO2/YYYYMMDDHHII/YYYYMMDDHHII</i> : where you can list\n  none or any number of Weather Forecast Office IDs.  Then there are two\n  timestamps in UTC time zone (beginning and end time).</p>\n<br />\n<p><i>/lsr/#WFO,WFO2/-SECONDS</i> : again, you can list none or multiple\n  WFO IDs.  You can then specify a number of seconds from now into the\n  past.  For example, <i>/lsr/#LWX/-86400</i> would produce LSRs from\n  LWX for the past day (86400 seconds).</p>\n\n<p>An additional URI parameter can be appended onto the end, which cryptically\ncontrols settings on the page.  So in the form above <code>/lsr/#WFO/YYYYMMDDHHII/YYYYMMDDHHII/??????</code>\n, where the <code>?</code> are sequential boolean flags (1=ON,0=OFF).  These values\nare as follows:\n<ul>\n<li>Show RADAR on Map</li>\n<li>Show LSRs on Map/li>\n<li>Show Warnings on Map</li>\n<li>Run in Realtime Mode</li>\n<li>Show States on Map</li>\n<li>Show Counties on Map</li>\n<ul>\n<br />\n        </div>\n        <div role=\"tabpanel\" class=\"tab-pane\" id=\"2a\">\n            <br />\n<p>\n<strong>Tools:</strong> &nbsp;\n<button id=\"lsrexcel\" class=\"btn btn-primary\" role=\"button\"><i class=\"fa fa-download\"></i> Excel</button>\n<button id=\"lsrgeojson\" class=\"btn btn-primary\" role=\"button\"><i class=\"fa fa-clone\"></i> GeoJSON</button>\n<button id=\"lsrkml\" class=\"btn btn-primary\" role=\"button\"><i class=\"fa fa-download\"></i> KML</button>\n<button id=\"lsrshapefile\" class=\"btn btn-primary\" role=\"button\"><i class=\"fa fa-download\"></i> Shapefile</button>\n<select name=\"lt\" id=\"lsrtypefilter\" class=\"form-control\"></select>\n</p>\n\n<br />\n<table id=\"lsrtable\">\n<thead>\n<tr>\n  <td></td>\n  <td></td>\n  <th>WFO</th>\n  <th>Report Time</th>\n  <th>County</th>\n  <th>Location</th>\n  <th>State</th>\n  <th>Event Type</th>\n  <th>Magnitude</th>\n</tr>\n</thead>\n</table>\n\n        </div>\n        <div role=\"tabpanel\" class=\"tab-pane\" id=\"3a\">\n            <br />\n<p>\n<strong>Tools:</strong> &nbsp;\n<button id=\"warnexcel\" class=\"btn btn-primary\" role=\"button\"><i class=\"fa fa-download\"></i> Excel</button>\n<button id=\"sbwgeojson\" class=\"btn btn-primary\" role=\"button\"><i class=\"fa fa-clone\"></i> SBW GeoJSON</button>\n<button id=\"sbwshapefile\" class=\"btn btn-primary\" role=\"button\"><i class=\"fa fa-download\"></i> SBW Shapefile</button>\n<button id=\"warnshapefile\" class=\"btn btn-primary\" role=\"button\"><i class=\"fa fa-download\"></i> Shapefile</button>\n<select name=\"lt\" id=\"sbwtypefilter\" class=\"form-control\"></select>\n</p>\n\n<table id=\"sbwtable\">\n<thead>\n<tr>\n  <td></td><td></td>\n  <th>WFO</th>\n  <th>Phenomena</th>\n  <th>Significance</th>\n  <th>Event ID</th>\n  <th>Issues</th>\n  <th>Expires</th>\n</tr>\n</thead>\n</table>\n        </div>\n\n    </div>\n  </div><!-- ./tabs -->\n  </div><!-- ./col-md-7 -->\n</div><!-- ./row -->\n\n</div><!--/.container-->\n</main>\n<!-- footer -->\n<footer role=\"contentinfo\">\n    <div class=\"container\" id=\"iem-footer\">\n        <div class=\"row\">\n\n            <!-- footer-associates -->\n            <section class=\"footer-associates col-sm-12 col-md-3\">\n                <ul>\n                    <li><a href=\"https://iastate.edu\"><img src=\"/vendor/img/isu-stacked.svg\" class=\"wordmark-isu\" alt=\"Iowa State University\"></a></li>\n                    <li><a href=\"https://www.ag.iastate.edu\">College of Ag</a></li>\n                    <li><a href=\"https://www.agron.iastate.edu\">Department of Agronomy</a></li>\n                </ul>\n            </section>\n\n            <!-- footer-contact -->\n            <section class=\"footer-contact col-sm-12 col-md-3\">\n                <p>\n                    <strong>Department of Agronomy</strong><br>\n                    <a href=\"https://maps.google.com/?q=716+Farm+House+Ln+Ames,+IA+50011\">716 Farm House Ln<br>\n                    Ames, IA 50011</a>\n                </p>\n                <a href=\"mailto:akrherz@iastate.edu\">akrherz@iastate.edu</a><br>\n            </section>\n\n            <!-- footer-social -->\n            <section class=\"footer-social col-sm-12 col-md-3\">\n                <ul class=\" labeled\">\n                <li><a href=\"https://www.facebook.com/IEM-157789644737/\"><span class=\"fa fa-external-link-square\" aria-label=\"hidden\"></span>Facebook</a></li>\n                <li><a href=\"https://twitter.com/akrherz\"><span class=\"fa fa-external-link-square\" aria-label=\"hidden\"></span>Twitter</a></li>\n                <li><a href=\"https://github.com/akrherz/iem\"><span class=\"fa fa-external-link-square\" aria-label=\"hidden\"></span>Github</a></li>\n                <li><a href=\"https://youtube.com/akrherz\"><span class=\"fa fa-external-link-square\" aria-label=\"hidden\"></span>YouTube</a></li>\n                <li><a href=\"/rss.php\"><span class=\"fa fa-external-link-square\" aria-label=\"hidden\"></span>RSS</a></li>\n                </ul>\n            </section>\n\n            <!-- footer-legal -->\n            <section class=\"footer-legal col-sm-12 col-md-3\">\n                <p>Copyright &copy; 2001-2025<br>\n                                Iowa State University<br>\n                                of Science and Technology<br>\n                                All rights reserved.</p>\n                <ul>\n                    <li><a href=\"https://www.policy.iastate.edu/policy/discrimination\">Non-discrimination Policy</a></li>\n                    <li><a href=\"https://www.policy.iastate.edu/electronicprivacy\">Privacy Policy</a></li>\n                    <li><a href=\"https://digitalaccess.iastate.edu\">Digital Access &amp; Accessibility</a></li>\n                </ul>\n            </section>\n\n        </div>\n    </div>\n</footer>\n<!-- /footer -->\n    <!-- Placed at the end of the document so the pages load faster -->\n    <script src=\"/vendor/jquery/1.11.3/jquery-1.11.3.min.js\"></script>\n    <script src=\"/vendor/bootstrap/3.3.7/js/bootstrap.min.js\"></script>\n    <script src=\"/vendor/iastate-v2.0.13/js/vendor/bootstrap-submenu.min.js\"></script>\n    <script src=\"/vendor/iastate-v2.0.13/js/iastate.js\"></script>\n\n    <!-- need to load before datatables -->\n<script src=\"/vendor/moment/2.13.0/moment.min.js\"></script>\n<script src=\"/vendor/jquery-datatables/1.11.1/datatables.min.js\"></script>\n<script src=\"/vendor/jquery-ui/1.11.4/jquery-ui.js\"></script>\n<script\n src=\"/vendor/datetimepicker/2.5.20/jquery.datetimepicker.full.min.js\">\n</script>\n<script src='/vendor/openlayers/10.4.0/ol.js'></script>\n<script src='/vendor/openlayers/10.4.0/ol-layerswitcher.js'></script>\n\n<script type=\"text/javascript\" src=\"wfos.js\"></script>\n<script type=\"text/javascript\" src=\"static.js?v=3\"></script>\n<script src=\"/vendor/select2/4.1.0rc0/select2.min.js\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "htdocs/lsr/old.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/mlib.php\";\nforce_https();\necho file_get_contents(\"old.html\");\n"
  },
  {
    "path": "htdocs/lsr/static.css",
    "content": "#map {\n    width: 100%;\n    min-height: 400px;\n    height: 75vh;\n}\n\n.ui-datepicker {\n    width: 17em;\n    padding: .2em .2em 0;\n    z-index: 9999 !important;\n}\n\ntd.details-control {\n    background: url('/images/details_open.png') no-repeat center center;\n    cursor: pointer;\n}\n\ntr.shown td.details-control {\n    background: url('/images/details_close.png') no-repeat center center;\n}\n\na:hover,\na:focus {\n    outline: none;\n    text-decoration: none;\n}\n\n.tab .nav-tabs {\n    border-bottom: 2px solid #e8e8e8;\n}\n\n.tab .nav-tabs li a {\n    display: block;\n    padding: 10px 20px;\n    margin: 0 5px 1px 0;\n    background: #fff;\n    font-weight: 700;\n    color: #112529;\n    text-align: center;\n    border: none;\n    border-radius: 0;\n    z-index: 2;\n    position: relative;\n    transition: all 0.3s ease 0s;\n}\n\n.tab .nav-tabs li a:hover,\n.tab .nav-tabs li.active a {\n    color: #198df8;\n    border: none;\n}\n\n.tab .nav-tabs li.active a:before {\n    content: \"\\f107\";\n    font-weight: 700;\n    color: #198df8;\n    margin: 0 auto;\n    position: absolute;\n    bottom: -30px;\n    left: 0;\n    right: 0;\n}\n\n.tab .nav-tabs li.active a:after {\n    content: \"\";\n    width: 100%;\n    height: 3px;\n    background: #198df8;\n    position: absolute;\n    bottom: -1px;\n    left: 0;\n    z-index: -1;\n    transition: all 0.3s ease 0s;\n}\n\n.tab .tab-content h3 {\n    margin-top: 5px;\n}\n\n@media only screen and (max-width: 479px) {\n    .tab .nav-tabs li {\n        width: 100%;\n        text-align: center;\n    }\n\n    .tab .nav-tabs li.active a:before {\n        content: \"\\f105\";\n        bottom: 15%;\n        left: 0;\n        right: auto;\n    }\n}\n\n.panel-popup {\n    font-size: 0.8em;\n    max-width: 230px;\n}\n\n.close {\n    color: #FFF !important;\n    opacity: 1 !important;\n}"
  },
  {
    "path": "htdocs/lsr/static.js",
    "content": "/* global $, moment, ol, iemdata */\nlet dragPan = null;\nlet olmap = null; // Openlayers map\nlet lsrtable = null; // LSR DataTable\nlet sbwtable = null; // SBW DataTable\nlet n0q = null; // RADAR Layer\nlet countiesLayer = null;\nlet statesLayer = null;\nlet wfoSelect = null;\nlet stateSelect = null;\nlet lsrtypefilter = null;\nlet sbwtypefilter = null;\nconst dateFormat1 = \"YYYYMMDDHHmm\";\nlet realtime = false;\nconst TABLE_FILTERED_EVENT = \"tfe\";\nlet nexradBaseTime = moment().utc().subtract(moment().minutes() % 5, \"minutes\");\n\n// Use momentjs for formatting\n$.datetimepicker.setDateFormatter('moment');\n\n// https://datatables.net/plug-ins/api/row().show()\n$.fn.dataTable.Api.register('row().show()', function() { // need this to work\n    const page_info = this.table().page.info();\n    // Get row index\n    const new_row_index = this.index();\n    // Row position\n    const row_position = this.table()\n        .rows({ search: 'applied' })[0]\n        .indexOf(new_row_index);\n    // Already on right page ?\n    if ((row_position >= page_info.start && row_position < page_info.end) || row_position < 0) {\n        // Return row object\n        return this;\n    }\n    // Find page number\n    const page_to_display = Math.floor(row_position / this.table().page.len());\n    // Go to that page\n    this.table().page(page_to_display);\n    // Return row object\n    return this;\n});\n\n/**\n * Replace HTML special characters with their entity equivalents\n * @param string val \n * @returns string converted string\n */\nfunction escapeHTML(val) {\n    return val.replace(/&/g, '&amp;')\n              .replace(/</g, '&lt;')\n              .replace(/>/g, '&gt;')\n              .replace(/\"/g, '&quot;')\n              .replace(/'/g, '&#039;');\n}\n\nfunction parse_href() {\n    // Figure out how we were called\n    let sts = null;\n    let ets = null;\n    const tokens = window.location.href.split('#');\n    if (tokens.length !== 2) {\n        return;\n    }\n    const tokens2 = tokens[1].split(\"/\");\n    if (tokens2.length < 2) {\n        return;\n    }\n    const ids = escapeHTML(tokens2[0]).split(\",\");\n    if (ids.length > 0){\n        if (ids[0].length === 3){\n            wfoSelect.val(ids).trigger(\"change\");\n        } else {\n            stateSelect.val(ids).trigger(\"change\");\n            $(\"#by_state\").click();\n        }\n    }\n    if (tokens2.length > 2) {\n        sts = moment.utc(escapeHTML(tokens2[1]), dateFormat1);\n        ets = moment.utc(escapeHTML(tokens2[2]), dateFormat1);\n    }\n    else {\n        realtime = true;\n        $(\"#realtime\").prop('checked', true);\n        // Offset timing\n        ets = moment.utc();\n        sts = moment.utc(ets).add(parseInt(tokens2[1], 10), 'seconds');\n    }\n    $(\"#sts\").val(sts.local().format(\"L LT\"));\n    $(\"#ets\").val(ets.local().format(\"L LT\"));\n    updateRADARTimes();\n    if (tokens2.length > 3) {\n        // We have settings\n        applySettings(tokens2[3]);\n    }\n    setTimeout(loadData, 0);\n}\n \nfunction cronMinute() {\n    if (!realtime) return;\n    // Compute the delta\n    const sts = moment($(\"#sts\").val(), 'L LT').utc();\n    const ets = moment($(\"#ets\").val(), 'L LT').utc();\n    $(\"#ets\").val(moment().format('L LT'));\n    const seconds = ets.diff(sts) / 1000;  // seconds\n    $(\"#sts\").val(moment().subtract(seconds, 'seconds').format('L LT'));\n    setTimeout(loadData, 0);\n}\nfunction getRADARSource(dt) {\n    const prod = dt.year() < 2011 ? 'N0R' : 'N0Q';\n    return new ol.source.XYZ({\n        url: `https://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/ridge::USCOMP-${prod}-${dt.utc().format('YMMDDHHmm')}/{z}/{x}/{y}.png`\n    });\n}\n\nfunction make_iem_tms(title, layername, visible, type) {\n    return new ol.layer.Tile({\n        title,\n        visible,\n        type,\n        source: new ol.source.XYZ({\n            url: `/c/tile.py/1.0.0/${layername}/{z}/{x}/{y}.png`\n        })\n    })\n}\n\nconst sbwLookup = {\n    \"TO\": 'red',\n    \"MA\": 'purple',\n    \"FF\": 'green',\n    \"EW\": 'green',\n    \"FA\": 'green',\n    \"FL\": 'green',\n    \"SV\": 'yellow',\n    \"SQ\": \"#C71585\",\n    \"DS\": \"#FFE4C4\"\n};\n\n// Lookup 'table' for styling\nconst lsrLookup = {\n    \"0\": \"icons/tropicalstorm.gif\",\n    \"1\": \"icons/flood.png\",\n    \"2\": \"icons/other.png\",\n    \"3\": \"icons/other.png\",\n    \"4\": \"icons/other.png\",\n    \"5\": \"icons/ice.png\",\n    \"6\": \"icons/cold.png\",\n    \"7\": \"icons/cold.png\",\n    \"8\": \"icons/fire.png\",\n    \"9\": \"icons/other.png\",\n    \"a\": \"icons/other.png\",\n    \"A\": \"icons/wind.png\",\n    \"B\": \"icons/downburst.png\",\n    \"C\": \"icons/funnelcloud.png\",\n    \"D\": \"icons/winddamage.png\",\n    \"E\": \"icons/flood.png\",\n    \"F\": \"icons/flood.png\",\n    \"v\": \"icons/flood.png\",\n    \"G\": \"icons/wind.png\",\n    \"h\": \"icons/hail.png\",\n    \"H\": \"icons/hail.png\",\n    \"I\": \"icons/hot.png\",\n    \"J\": \"icons/fog.png\",\n    \"K\": \"icons/lightning.gif\",\n    \"L\": \"icons/lightning.gif\",\n    \"M\": \"icons/wind.png\",\n    \"N\": \"icons/wind.png\",\n    \"O\": \"icons/wind.png\",\n    \"P\": \"icons/other.png\",\n    \"q\": \"icons/downburst.png\",\n    \"Q\": \"icons/tropicalstorm.gif\",\n    \"s\": \"icons/sleet.png\",\n    \"T\": \"icons/tornado.png\",\n    \"U\": \"icons/fire.png\",\n    \"V\": \"icons/avalanche.gif\",\n    \"W\": \"icons/waterspout.png\",\n    \"X\": \"icons/funnelcloud.png\",\n    \"x\": \"icons/debrisflow.png\",\n    \"Z\": \"icons/blizzard.png\"\n};\n\nconst sbwStyle = [new ol.style.Style({\n    stroke: new ol.style.Stroke({\n        color: '#000',\n        width: 4.5\n    })\n}), new ol.style.Style({\n    stroke: new ol.style.Stroke({\n        color: '#319FD3',\n        width: 3\n    })\n})\n];\nconst lsrStyle = new ol.style.Style({\n    image: new ol.style.Icon({ src: lsrLookup['9'] })\n});\n\nconst textStyle = new ol.style.Style({\n    text: new ol.style.Text({\n        font: 'bold 11px \"Open Sans\", \"Arial Unicode MS\", \"sans-serif\"',\n        fill: new ol.style.Fill({\n            color: 'white'\n        }),\n        placement: 'point',\n        backgroundFill: new ol.style.Fill({\n            color: \"black\"\n        }),\n        padding: [2, 2, 2, 2]\n    })\n});\nconst lsrTextBackgroundColor = {\n    'S': 'purple',\n    'R': 'blue',\n    '5': 'pink'\n};\n\n// create vector layer\nconst lsrLayer = new ol.layer.Vector({\n    title: \"Local Storm Reports\",\n    source: new ol.source.Vector({\n        format: new ol.format.GeoJSON()\n    }),\n    style(feature) {\n        if (feature.hidden === true) {\n            return new ol.style.Style();\n        }\n        const mag = feature.get('magnitude').toString();\n        const typ = feature.get('type');\n        if (mag !== \"\") {\n            textStyle.getText().setText(mag);\n            textStyle.getText().getBackgroundFill().setColor(\n                lsrTextBackgroundColor[typ] || 'black'\n            );\n            return textStyle;\n        }\n        const url = lsrLookup[typ];\n        if (url) {\n            const icon = new ol.style.Icon({\n                src: url\n            });\n            lsrStyle.setImage(icon);\n        }\n        return lsrStyle;\n    }\n});\nlsrLayer.addEventListener(TABLE_FILTERED_EVENT, () => {\n    // Turn all features back on\n    lsrLayer.getSource().getFeatures().forEach((feat) => {\n        feat.hidden = false;\n    });\n    // Filter out the map too\n    lsrtable.rows({ \"search\": \"removed\" }).every(function () {  // eslint-disable-line\n        lsrLayer.getSource().getFeatureById(this.data().id).hidden = true;\n    });\n    lsrLayer.changed();\n});\nlsrLayer.getSource().on('change', () => {\n    lsrtable.rows().remove().draw();\n    if (lsrLayer.getSource().isEmpty()) {\n        return;\n    }\n    if (lsrLayer.getSource().getState() === 'ready') {\n        olmap.getView().fit(\n            lsrLayer.getSource().getExtent(),\n            {\n                size: olmap.getSize(),\n                padding: [50, 50, 50, 50]\n            }\n        );\n    }\n    const data = [];\n    lsrLayer.getSource().getFeatures().forEach((feat) => {\n        const props = feat.getProperties();\n        props.id = feat.getId();\n        data.push(props);\n    });\n    lsrtable.rows.add(data).draw();\n\n    // Build type filter\n    lsrtable.column(7).data().unique().sort().each((d) => {\n        lsrtypefilter.append(`<option value=\"${d}\">${d}</option`);\n    });\n});\nlsrLayer.on('change:visible', updateURL);\n\nconst sbwLayer = new ol.layer.Vector({\n    title: \"Storm Based Warnings\",\n    source: new ol.source.Vector({\n        format: new ol.format.GeoJSON()\n    }),\n    visible: true,\n    style(feature) {\n        if (feature.hidden === true) {\n            return new ol.style.Style();\n        }\n        const color = sbwLookup[feature.get('phenomena')];\n        if (color === undefined) return sbwStyle;\n        sbwStyle[1].getStroke().setColor(color);\n        return sbwStyle;\n    }\n});\nsbwLayer.on('change:visible', updateURL);\nsbwLayer.addEventListener(TABLE_FILTERED_EVENT, () => {\n    // Turn all features back on\n    sbwLayer.getSource().getFeatures().forEach((feat) => {\n        feat.hidden = false;\n    });\n    // Filter out the map too\n    sbwtable.rows({ \"search\": \"removed\" }).every(function() { // eslint-disable-line\n        sbwLayer.getSource().getFeatureById(this.data().id).hidden = true;\n    });\n    sbwLayer.changed();\n});\nsbwLayer.getSource().on('change', () => {\n    sbwtable.rows().remove();\n    const data = [];\n    sbwLayer.getSource().getFeatures().forEach((feat) => {\n        const props = feat.getProperties();\n        props.id = feat.getId();\n        data.push(props);\n    });\n    sbwtable.rows.add(data).draw();\n\n    // Build type filter\n    sbwtable.column(3).data().unique().sort().each((d) => {\n        sbwtypefilter.append(`<option value=\"${iemdata.vtec_phenomena[d]}\">${iemdata.vtec_phenomena[d]}</option`);\n    });\n\n});\n\nfunction formatLSR(data) {\n    // Format what is presented\n    return `<div><strong>Source:</strong> ${data.source} &nbsp; <strong>UTC Valid:</strong> ${data.valid}<br /><strong>Remark:</strong> ${data.remark}</div>`;\n}\n\nfunction revisedRandId() {\n    return Math.random().toString(36).replace(/[^a-z]+/g, '').substring(2, 10);\n}\nfunction lsrHTML(feature) {\n    const lines = [];\n    const dt = moment.utc(feature.get(\"valid\"));\n    const ldt = dt.local().format(\"M/D LT\");\n    const zz = dt.utc().format(\"HH:mm\");\n    lines.push(`<strong>Valid:</strong> ${ldt} (${zz}Z)`);\n    let vv = feature.get(\"source\");\n    if (vv !== null) {\n        lines.push(`<strong>Source:</strong> ${vv}`);\n    }\n    vv = feature.get(\"typetext\");\n    if (vv !== null) {\n        lines.push(`<strong>Type:</strong> ${vv}`);\n    }\n    vv = feature.get(\"magnitude\");\n    if (vv !== null && vv !== \"\") {\n        let unit = feature.get(\"unit\");\n        if (unit === null) {\n            unit = \"\";\n        }\n        lines.push(`<strong>Magnitude:</strong> ${vv} ${unit}`);\n    }\n    vv = feature.get(\"remark\");\n    if (vv !== null) {\n        lines.push(`<strong>Remark:</strong> ${vv}`);\n    }\n    return lines.join(\"<br />\");\n}\n\nfunction formatSBW(feature) {\n    const lines = [];\n    const ph = feature.get(\"phenomena\");\n    const pph = ph in iemdata.vtec_phenomena ? iemdata.vtec_phenomena[ph] : ph;\n    const sig = feature.get(\"significance\");\n    const ss = sig in iemdata.vtec_significance ? iemdata.vtec_significance[sig] : sig;\n    lines.push(`<strong>${pph} ${ss}</strong>`);\n    const issue = moment.utc(feature.get(\"issue\"));\n    const expire = moment.utc(feature.get(\"expire\"));\n    let ldt = issue.local().format(\"M/D LT\");\n    let zz = issue.utc().format(\"HH:mm\")\n    lines.push(`<strong>Issued:</strong> ${ldt} (${zz}Z)`);\n    ldt = expire.local().format(\"M/D LT\");\n    zz = expire.utc().format(\"HH:mm\")\n    lines.push(`<strong>Expired:</strong> ${ldt} (${zz}Z)`);\n    lines.push(`<strong>More Details:</strong> <a href='${feature.get(\"href\")}' target='_blank'>VTEC Browser</a>`);\n    return lines.join(\"<br />\");\n}\n\nfunction handleSBWClick(feature) {\n    const divid = revisedRandId();\n    const div = document.createElement(\"div\");\n    const title = `${feature.get(\"wfo\")} ${feature.get(\"phenomena\")}.${feature.get(\"significance\")} #${feature.get(\"eventid\")}`;\n    div.innerHTML = `<div class=\"panel panel-primary panel-popup\" id=\"${divid}\"><div class=\"panel-heading\">${title} &nbsp; <button type=\"button\" class=\"close\" data-target=\"#${divid}\" data-dismiss=\"alert\"> <span aria-hidden=\"true\">&times;</span><span class=\"sr-only\">Close</span></button></div><div class=\"panel-body\">${formatSBW(feature)}</div></div>`;\n    const coordinates = feature.getGeometry().getFirstCoordinate();\n    const marker = new ol.Overlay({\n        position: coordinates,\n        positioning: 'center-center',\n        element: div,\n        stopEvent: false,\n        dragging: false\n    });\n    olmap.addOverlay(marker);\n    div.addEventListener('mousedown', () => {\n        dragPan.setActive(false);\n        marker.set('dragging', true);\n    });\n    olmap.on('pointermove', (evt) => {\n        if (marker.get('dragging') === true) {\n            marker.setPosition(evt.coordinate);\n        }\n    });\n    olmap.on('pointerup', () => {\n        if (marker.get('dragging') === true) {\n            dragPan.setActive(true);\n            marker.set('dragging', false);\n        }\n    });\n    const id = feature.getId();\n    sbwtable.rows().deselect();\n    sbwtable.row(\n        sbwtable.rows((idx, data) => {\n            if (data.id === id) {\n                sbwtable.row(idx).select();\n                return true;\n            }\n            return false;\n        })\n    ).show().draw(false);\n\n}\nfunction copyToClipboard(ttext, msg) {\n    const $temp = $(\"<input>\");\n    $(\"body\").append($temp);\n    $temp.val(ttext).select();\n    document.execCommand(\"copy\");\n    $temp.remove();\n    alert(msg);  // skipcq\n}\n \nfunction initUI() {\n    // Generate UI components of the page\n    const handle = $(\"#radartime\");\n    $(\"#timeslider\").slider({\n        min: 0,\n        max: 100,\n        create() {\n            handle.text(nexradBaseTime.local().format(\"L LT\"));\n        },\n        slide(_event, ui) {\n            const dt = moment(nexradBaseTime);\n            dt.add(ui.value * 5, 'minutes');\n            handle.text(dt.local().format(\"L LT\"));\n        },\n        change(_event, ui) {\n            const dt = moment(nexradBaseTime);\n            dt.add(ui.value * 5, 'minutes');\n            n0q.setSource(getRADARSource(dt));\n            handle.text(dt.local().format(\"L LT\"));\n        }\n    });\n    n0q = new ol.layer.Tile({\n        title: 'NEXRAD Base Reflectivity',\n        visible: true,\n        source: getRADARSource(nexradBaseTime)\n    });\n    n0q.on('change:visible', updateURL);\n    lsrtypefilter = $(\"#lsrtypefilter\").select2({\n        placeholder: \"Filter LSRs by Event Type\",\n        width: 300,\n        multiple: true\n    });\n    lsrtypefilter.on(\"change\", function() { // this\n        const vals = $(this).val();\n        const val = vals ? vals.join(\"|\") : null;\n        lsrtable.column(7).search(val ? `^${val}$` : '', true, false).draw();\n    });\n    sbwtypefilter = $(\"#sbwtypefilter\").select2({\n        placeholder: \"Filter SBWs by Event Type\",\n        width: 300,\n        multiple: true\n    });\n    sbwtypefilter.on(\"change\", function() { // this\n        const vals = $(this).val();\n        const val = vals ? vals.join(\"|\") : null;\n        sbwtable.column(3).search(val ? `^${val}$` : '', true, false).draw();\n    });\n    wfoSelect = $(\"#wfo\").select2({\n        templateSelection(state) {\n            return state.id;\n        }\n    });\n    stateSelect = $(\"#state\").select2({\n        templateSelection(state) {\n            return state.id;\n        }\n    });\n    $.each(iemdata.wfos, (_idx, entry) => {\n        const opt = new Option(`[${entry[0]}] ${entry[1]}`, entry[0], false, false);\n        wfoSelect.append(opt);\n    });\n    $.each(iemdata.states, (_idx, entry) => {\n        const opt = new Option(`[${entry[0]}] ${entry[1]}`, entry[0], false, false);\n        stateSelect.append(opt);\n    });\n\n    $(\".iemdtp\").datetimepicker({\n        format: \"L LT\",\n        step: 1,\n        maxDate: '+1970/01/03',\n        minDate: '2003/01/01'\n    });\n    const sts = moment().subtract(1, 'day');\n    const ets = moment();\n    $(\"#sts\").val(sts.format('L LT'));\n    $(\"#ets\").val(ets.format('L LT'));\n    updateRADARTimes();\n\n    $(\"#load\").click(() => {\n        setTimeout(loadData, 0);\n    });\n    $(\"#lsrshapefile\").click(() => {\n        window.location.href = getShapefileLink(\"lsr\");\n    });\n    $(\"#lsrexcel\").click(() => {\n        window.location.href = `${getShapefileLink(\"lsr\")}&fmt=excel`;\n    });\n    $(\"#lsrkml\").click(() => {\n        window.location.href = `${getShapefileLink(\"lsr\")}&fmt=kml`;\n    });\n    $(\"#lsrgeojson\").click(() => {\n        const opts = buildOpts();\n        const url = `https://mesonet.agron.iastate.edu/geojson/lsr.geojson?${$.param(opts)}`;\n        copyToClipboard(url, \"GeoJSON URL copied to clipboard\");\n    });\n    // =======\n    $(\"#warnshapefile\").click(() => {\n        window.location.href = getShapefileLink(\"watchwarn\");\n    });\n    $(\"#warnexcel\").click(() => {\n        window.location.href = `${getShapefileLink(\"watchwarn\")}&accept=excel`;\n    });\n    $(\"#sbwshapefile\").click(() => {\n        window.location.href = `${getShapefileLink(\"watchwarn\")}&limit1=yes`;\n    });\n    $(\"#sbwgeojson\").click(() => {\n        const opts = buildOpts();\n        const url = `https://mesonet.agron.iastate.edu/geojson/sbw.geojson?${$.param(opts)}`;\n        copyToClipboard(url, \"GeoJSON URL copied to clipboard\");\n    });\n    $(\"#realtime\").click(function() {\n        realtime = this.checked;\n        if (realtime) {\n            setTimeout(loadData, 0);\n        }\n    });\n    statesLayer = make_iem_tms('US States', 'usstates', true, '');\n    statesLayer.on('change:visible', updateURL);\n    countiesLayer = make_iem_tms('US Counties', 'uscounties', false, '');\n    countiesLayer.on('change:visible', updateURL);\n\n    olmap = new ol.Map({\n        target: 'map',\n        controls: ol.control.defaults.defaults().extend([new ol.control.FullScreen()]),\n        view: new ol.View({\n            enableRotation: false,\n            center: ol.proj.transform([-94.5, 42.1], 'EPSG:4326', 'EPSG:3857'),\n            zoom: 7,\n            maxZoom: 16\n        }),\n        layers: [\n            new ol.layer.Tile({\n                title: 'OpenStreetMap',\n                visible: true,\n                type: 'base',\n                source: new ol.source.OSM()\n            }),\n            new ol.layer.Tile({\n                title: \"MapTiler Toner (Black/White)\",\n                type: 'base',\n                visible: false,\n                source: new ol.source.TileJSON({\n                    url: 'https://api.maptiler.com/maps/toner/tiles.json?key=d7EdAVvDI3ocoa9OUt9Z',\n                    tileSize: 512,\n                    crossOrigin: 'anonymous'\n                })\n            }),\n            new ol.layer.Tile({\n                title: \"MapTiler Pastel\",\n                type: 'base',\n                visible: false,\n                source: new ol.source.TileJSON({\n                    url: 'https://api.maptiler.com/maps/pastel/tiles.json?key=d7EdAVvDI3ocoa9OUt9Z',\n                    tileSize: 512,\n                    crossOrigin: 'anonymous'\n                })\n            }),\n            n0q,\n            statesLayer,\n            countiesLayer,\n            sbwLayer,\n            lsrLayer\n        ]\n    });\n    const ls = new ol.control.LayerSwitcher();\n    olmap.addControl(ls);\n    olmap.getInteractions().forEach((interaction) => {\n        if (interaction instanceof ol.interaction.DragPan) {\n            dragPan = interaction;\n        }\n    });\n\n    olmap.on('click', (evt) => {\n        const feature = olmap.forEachFeatureAtPixel(evt.pixel,\n            (feature2) => {\n                return feature2;\n            });\n        if (feature === undefined) {\n            return;\n        }\n        if (feature.get(\"phenomena\") !== undefined) {\n            handleSBWClick(feature);\n            return;\n        }\n        if (feature.get('magnitude') === undefined) return;\n        // evt.originalEvent.x\n        const divid = revisedRandId();\n        const div = document.createElement(\"div\");\n        div.innerHTML = `<div class=\"panel panel-primary panel-popup\" id=\"${divid}\"><div class=\"panel-heading\">${feature.get(\"city\")}, ${feature.get(\"st\")} &nbsp; <button type=\"button\" class=\"close\" data-target=\"#${divid}\" data-dismiss=\"alert\"> <span aria-hidden=\"true\">&times;</span><span class=\"sr-only\">Close</span></button></div><div class=\"panel-body\">${lsrHTML(feature)}</div></div>`;\n        const coordinates = feature.getGeometry().getCoordinates();\n        const marker = new ol.Overlay({\n            position: coordinates,\n            positioning: 'center-center',\n            element: div,\n            stopEvent: false,\n            dragging: false\n        });\n        olmap.addOverlay(marker);\n        div.addEventListener('mousedown', () => {\n            dragPan.setActive(false);\n            marker.set('dragging', true);\n        });\n        olmap.on('pointermove', (evt2) => {\n            if (marker.get('dragging') === true) {\n                marker.setPosition(evt2.coordinate);\n            }\n        });\n        olmap.on('pointerup', () => {\n            if (marker.get('dragging') === true) {\n                dragPan.setActive(true);\n                marker.set('dragging', false);\n            }\n        });\n        const id = feature.getId();\n        lsrtable.rows().deselect();\n        lsrtable.row(\n            lsrtable.rows((idx, data) => {\n                if (data.id === id) {\n                    lsrtable.row(idx).select();\n                    return true;\n                }\n                return false;\n            })\n        ).show().draw(false);\n\n\n    });\n\n    lsrtable = $(\"#lsrtable\").DataTable({\n        select: true,\n        rowId: 'id',\n        columns: [\n            {\n                \"data\": \"valid\",\n                \"visible\": false\n            }, {\n                \"className\": 'details-control',\n                \"orderable\": false,\n                \"data\": null,\n                \"defaultContent\": ''\n            }, {\n                \"data\": \"wfo\"\n            }, {\n                \"data\": \"valid\",\n                \"type\": \"datetime\",\n                \"orderData\": [0]\n            }, {\n                \"data\": \"county\"\n            }, {\n                \"data\": \"city\"\n            }, {\n                \"data\": \"st\"\n            }, {\n                \"data\": \"typetext\"\n            }, {\n                \"data\": \"magnitude\"\n            }\n        ],\n        columnDefs: [\n            {\n                targets: 3,\n                render(data) {\n                    return moment.utc(data).local().format('M/D LT');\n                }\n            }\n        ]\n    });\n    lsrtable.on(\"search.dt\", () => {\n        lsrLayer.dispatchEvent(TABLE_FILTERED_EVENT);\n    });\n    // Add event listener for opening and closing details\n    $('#lsrtable tbody').on('click', 'td.details-control', function() { // this\n        const tr = $(this).closest('tr');\n        const row = lsrtable.row(tr);\n\n        if (row.child.isShown()) {\n            // This row is already open - close it\n            row.child.hide();\n            tr.removeClass('shown');\n        }\n        else {\n            // Open this row\n            row.child(formatLSR(row.data())).show();\n            tr.addClass('shown');\n        }\n    });\n    sbwtable = $(\"#sbwtable\").DataTable({\n        columns: [\n            {\n                \"data\": \"issue\",\n                \"visible\": false\n            }, {\n                \"data\": \"expire\",\n                \"visible\": false\n            }, {\n                \"data\": \"wfo\"\n            }, {\n                \"data\": \"phenomena\"\n            }, {\n                \"data\": \"significance\"\n            }, {\n                \"data\": \"eventid\"\n            }, {\n                \"data\": \"issue\",\n                \"orderData\": [0]\n            }, {\n                \"data\": \"expire\",\n                \"orderData\": [1]\n            }\n        ],\n        columnDefs: [\n            {\n                targets: 3,\n                render(data) {\n                    return data in iemdata.vtec_phenomena ? iemdata.vtec_phenomena[data] : data;\n                }\n            }, {\n                targets: 4,\n                render(data) {\n                    return data in iemdata.vtec_significance ? iemdata.vtec_significance[data] : data;\n                }\n            }, {\n                targets: 5,\n                render(_data, type, row) {\n                    if (type === 'display') {\n                        return `<a href=\"${row.href}\">${row.eventid}</a>`;\n                    }\n                    return row.eventid;\n                }\n            }, {\n                targets: [6, 7],\n                render(data) {\n                    return moment.utc(data).local().format('M/D LT');\n                }\n            }\n        ]\n    });\n    sbwtable.on(\"search.dt\", () => {\n        sbwLayer.dispatchEvent(TABLE_FILTERED_EVENT);\n    });\n}\n\nfunction genSettings() {\n    /* Generate URL options set on this page */\n    let res = \"\";\n    res += (n0q.isVisible() ? \"1\" : \"0\");\n    res += (lsrLayer.isVisible() ? \"1\" : \"0\");\n    res += (sbwLayer.isVisible() ? \"1\" : \"0\");\n    res += (realtime ? \"1\" : \"0\");\n    res += (statesLayer.isVisible() ? \"1\" : \"0\");\n    res += (countiesLayer.isVisible() ? \"1\" : \"0\");\n    return res;\n}\n\nfunction updateURL() {\n    const sts = moment($(\"#sts\").val(), 'L LT').utc().format(dateFormat1);\n    const ets = moment($(\"#ets\").val(), 'L LT').utc().format(dateFormat1);\n    const by = $(\"input[type=radio][name=by]:checked\").val();\n    const wfos = $(\"#wfo\").val();  // null for all or array\n    const states = $(\"#state\").val();  // null for all or array\n    let wstr = \"\";\n    if (wfos !== null && by === \"wfo\") wstr = wfos.join(\",\");\n    else if (states !== null && by === \"state\") wstr = states.join(\",\");\n    window.location.href = `#${escapeHTML(wstr)}/${sts}/${ets}/${genSettings()}`;\n\n}\nfunction applySettings(opts) {\n    if (opts[0] !== undefined) { // Show RADAR\n        n0q.setVisible(opts[0] === \"1\");\n    }\n    if (opts[1] !== undefined) { // Show LSRs\n        lsrLayer.setVisible(opts[1] === \"1\");\n    }\n    if (opts[2] !== undefined) { // Show SBWs\n        sbwLayer.setVisible(opts[2] === \"1\");\n    }\n    if (opts[3] === \"1\") { // Realtime\n        realtime = true;\n        $(\"#realtime\").prop('checked', true);\n    }\n    if (opts[4] !== undefined) {\n        statesLayer.setVisible(opts[4] === \"1\");\n    }\n    if (opts[5] !== undefined) {\n        countiesLayer.setVisible(opts[5] === \"1\");\n    }\n}\nfunction updateRADARTimes() {\n    // Figure out what our time slider should look like\n    const sts = moment($(\"#sts\").val(), 'L LT').utc();\n    const ets = moment($(\"#ets\").val(), 'L LT').utc();\n    sts.subtract(sts.minute() % 5, 'minutes');\n    ets.add(5 - ets.minute() % 5, 'minutes');\n    const times = ets.diff(sts) / 300000;  // 5 minute bins\n    nexradBaseTime = sts;\n    $(\"#timeslider\")\n        .slider(\"option\", \"max\", times - 1)\n        .slider(\"value\", realtime ? times - 1 : 0);\n}\nfunction buildOpts() {\n    const wfos = $(\"#wfo\").val();  // null for all or array\n    const states = $(\"#state\").val();  // null for all or array\n    const by = $(\"input[type=radio][name=by]:checked\").val();\n    const sts = moment($(\"#sts\").val(), 'L LT').utc().format(dateFormat1);\n    const ets = moment($(\"#ets\").val(), 'L LT').utc().format(dateFormat1);\n    const opts = {\n        sts,\n        ets\n    };\n    if (by === \"state\"){\n        opts.states = (states === null) ? \"\" : escapeHTML(states.join(\",\"));\n    } else {\n        opts.wfos = (wfos === null) ? \"\" : escapeHTML(wfos.join(\",\"));\n    }\n    return opts;\n}\nfunction loadData() {\n    // Load up the data please!\n    if ($(\".tab .active > a\").attr(\"href\") !== \"#2a\") {\n        $(\"#lsrtab\").click();\n    }\n    updateRADARTimes();\n\n    lsrLayer.getSource().clear(true);\n    sbwLayer.getSource().clear(true);\n    const opts = buildOpts();\n    $.ajax({\n        method: \"GET\",\n        url: `/geojson/lsr.geojson?${$.param(opts)}`,\n        dataType: 'json',\n        success(data) {\n            if (data.features.length === 10000) {\n                alert(\"App limit of 10,000 LSRs reached.\");  // skipcq\n            }\n            lsrLayer.getSource().addFeatures(\n                (new ol.format.GeoJSON({ featureProjection: 'EPSG:3857' })\n                ).readFeatures(data)\n            );\n        }\n    });\n    $.ajax({\n        method: \"GET\",\n        url: `/geojson/sbw.geojson?${$.param(opts)}`,\n        dataType: 'json',\n        success(data) {\n            sbwLayer.getSource().addFeatures(\n                (new ol.format.GeoJSON({ featureProjection: 'EPSG:3857' })\n                ).readFeatures(data)\n            );\n        }\n    });\n    updateURL();\n}\n\nfunction getShapefileLink(base) {\n    let uri = `/cgi-bin/request/gis/${base}.py?`;\n    const by = $(\"input[type=radio][name=by]:checked\").val();\n    const wfos = $(\"#wfo\").val();\n    if (wfos && by === \"wfo\") {\n        for (let i = 0; i < wfos.length; i++) {\n            uri += `&wfo=${escapeHTML(wfos[i])}`;\n        }\n    }\n    const states = $(\"#state\").val();\n    if (states && by === \"state\") {\n        for (let i = 0; i < states.length; i++) {\n            uri += `&state=${escapeHTML(states[i])}`;\n        }\n    }\n    const sts = moment($(\"#sts\").val(), 'L LT');\n    const ets = moment($(\"#ets\").val(), 'L LT');\n    uri += `&year1=${sts.utc().format('Y')}`;\n    uri += `&month1=${sts.utc().format('M')}`;\n    uri += `&day1=${sts.utc().format('D')}`;\n    uri += `&hour1=${sts.utc().format('H')}`;\n    uri += `&minute1=${sts.utc().format('m')}`;\n    uri += `&year2=${ets.utc().format('Y')}`;\n    uri += `&month2=${ets.utc().format('M')}`;\n    uri += `&day2=${ets.utc().format('D')}`;\n    uri += `&hour2=${ets.utc().format('H')}`;\n    uri += `&minute2=${ets.utc().format('m')}`;\n    return uri;\n}\n\n$().ready(() => {\n    initUI(); // static.js\n    parse_href();\n    window.setInterval(cronMinute, 60000);\n});\n"
  },
  {
    "path": "htdocs/lsr/wfos.js",
    "content": "const iemdata = {};\n\niemdata.nws_products = [\n    ['AFD', 'Area Forecast Discussion'],\n    ['HWO', 'Hazzardous Weather Outlook'],\n    ['NOW', 'Nowcast']\n];\n\niemdata.vtec_phenomena = {\n    'SV': 'Severe Thunderstorm',\n    'TO': 'Tornado',\n    'MA': 'Marine',\n    'AF': 'Ashfall',\n    'AS': 'Air Stagnation',\n    'AV': 'Avalanche',\n    'BS': 'Blowing Snow',\n    'BW': 'Brisk Wind',\n    'BZ': 'Blizzard',\n    'CF': 'Coastal Flood',\n    'CW': 'Cold Weather',\n    'DU': 'Blowing Dust',\n    'DS': 'Dust Storm',\n    'EC': 'Extreme Cold',\n    'EH': 'Excessive Heat',\n    'EW': 'Extreme Wind',\n    'FA': 'Flood',\n    'FF': 'Flash Flood',\n    'FL': 'Flood',\n    'FR': 'Frost',\n    'FZ': 'Freeze',\n    'UP': 'Freezing Spray',\n    'FG': 'Dense Fog',\n    'FW': 'Red Flag',\n    'GL': 'Gale',\n    'HF': 'Hurricane Force Wind',\n    'HI': 'Inland Hurricane Wind',\n    'HS': 'Heavy Snow',\n    'HP': 'Heavy Sleet',\n    'HT': 'Heat',\n    'HU': 'Hurricane',\n    'HW': 'High Wind',\n    'HY': 'Hydrologic',\n    'HZ': 'Hard Freeze',\n    'IS': 'Ice Storm',\n    'IP': 'Sleet',\n    'LB': 'Lake Effect Snow and Blowing Snow',\n    'LE': 'Lake Effect Snow',\n    'LO': 'Low Water',\n    'LS': 'Lakeshore Flood',\n    'LW': 'Lake Wind',\n    'RB': 'Small Craft for Rough Bar',\n    'RH': 'Radiological Hazard',\n    'SB': 'Snow and Blowing Snow',\n    'SC': 'Small Craft',\n    'SE': 'Hazardous Seas',\n    'SI': 'Small Craft for Winds',\n    'SM': 'Dense Smoke',\n    'SN': 'Snow',\n    'SQ': 'Snow Squall',\n    'SR': 'Storm',\n    'SU': 'High Surf',\n    'TI': 'Inland Tropical Storm Wind',\n    'TR': 'Tropical Storm',\n    'TS': 'Tsunami',\n    'TY': 'Typhoon',\n    'VO': 'Volcano',\n    'WC': 'Wind Chill',\n    'WI': 'Wind',\n    'WS': 'Winter Storm',\n    'WW': 'Winter Weather',\n    'XH': 'Extreme Heat',\n    'ZF': 'Freezing Fog',\n    'ZR': 'Freezing Rain'\n};\n\niemdata.vtec_significance = {\n    'W': 'Warning',\n    'Y': 'Advisory',\n    'A': 'Watch',\n    'S': 'Statement',\n    'F': 'Forecast',\n    'O': 'Outlook',\n    'N': 'Synopsis'\n};\n\niemdata.states = [\n    [\"AL\", \"Alabama\"],\n    [\"AK\", \"Alaska\"],\n    [\"AZ\", \"Arizona\"],\n    [\"AR\", \"Arkansas\"],\n    [\"CA\", \"California\"],\n    [\"CO\", \"Colorado\"],\n    [\"CT\", \"Connecticut\"],\n    [\"DE\", \"Delaware\"],\n    [\"FL\", \"Florida\"],\n    [\"GA\", \"Georgia\"],\n    [\"GU\", \"Guam\"],\n    [\"HI\", \"Hawaii\"],\n    [\"ID\", \"Idaho\"],\n    [\"IL\", \"Illinois\"],\n    [\"IN\", \"Indiana\"],\n    [\"IA\", \"Iowa\"],\n    [\"KS\", \"Kansas\"],\n    [\"KY\", \"Kentucky\"],\n    [\"LA\", \"Louisiana\"],\n    [\"ME\", \"Maine\"],\n    [\"MD\", \"Maryland\"],\n    [\"MA\", \"Massachusetts\"],\n    [\"MI\", \"Michigan\"],\n    [\"MN\", \"Minnesota\"],\n    [\"MS\", \"Mississippi\"],\n    [\"MO\", \"Missouri\"],\n    [\"MT\", \"Montana\"],\n    [\"NE\", \"Nebraska\"],\n    [\"NV\", \"Nevada\"],\n    [\"NH\", \"New Hampshire\"],\n    [\"NJ\", \"New Jersey\"],\n    [\"NM\", \"New Mexico\"],\n    [\"NY\", \"New York\"],\n    [\"NC\", \"North Carolina\"],\n    [\"ND\", \"North Dakota\"],\n    [\"OH\", \"Ohio\"],\n    [\"OK\", \"Oklahoma\"],\n    [\"OR\", \"Oregon\"],\n    [\"PA\", \"Pennsylvania\"],\n    [\"PR\", \"Puerto Rico\"],\n    [\"RI\", \"Rhode Island\"],\n    [\"SC\", \"South Carolina\"],\n    [\"SD\", \"South Dakota\"],\n    [\"TN\", \"Tennessee\"],\n    [\"TX\", \"Texas\"],\n    [\"UT\", \"Utah\"],\n    [\"VT\", \"Vermont\"],\n    [\"VA\", \"Virginia\"],\n    [\"WA\", \"Washington\"],\n    [\"WV\", \"West Virginia\"],\n    [\"WI\", \"Wisconsin\"],\n    [\"WY\", \"Wyoming\"]\n];\n\niemdata.wfos = [\n    ['ABQ', 'ALBUQUERQUE'],\n    ['ABR', 'ABERDEEN'],\n    ['AFC', 'ANCHORAGE'],\n    ['AFG', 'FAIRBANKS'],\n    ['AJK', 'JUNEAU'],\n    ['AKQ', 'WAKEFIELD'],\n    ['ALY', 'ALBANY'],\n    ['AMA', 'AMARILLO'],\n    ['APX', 'GAYLORD'],\n    ['ARX', 'LA_CROSSE'],\n    ['BGM', 'BINGHAMTON'],\n    ['BIS', 'BISMARCK'],\n    ['BMX', 'BIRMINGHAM'],\n    ['BOI', 'BOISE'],\n    ['BOU', 'DENVER'],\n    ['BOX', 'Boston / Norton'],\n    ['BRO', 'BROWNSVILLE'],\n    ['BTV', 'BURLINGTON'],\n    ['BUF', 'BUFFALO'],\n    ['BYZ', 'BILLINGS'],\n    ['CAE', 'COLUMBIA'],\n    ['CAR', 'CARIBOU'],\n    ['CHS', 'CHARLESTON'],\n    ['CLE', 'CLEVELAND'],\n    ['CRP', 'CORPUS_CHRISTI'],\n    ['CTP', 'STATE_COLLEGE'],\n    ['CYS', 'CHEYENNE'],\n    ['DDC', 'DODGE_CITY'],\n    ['DLH', 'DULUTH'],\n    ['DMX', 'DES_MOINES'],\n    ['DTX', 'DETROIT'],\n    ['DVN', 'QUAD_CITIES_IA'],\n    ['EAX', 'KANSAS_CITY/PLEASANT_HILL'],\n    ['EKA', 'EUREKA'],\n    ['EPZ', 'EL_PASO_TX/SANTA_TERESA'],\n    ['EWX', 'AUSTIN/SAN_ANTONIO'],\n    ['EYW', 'KEY WEST (EYW, pre 5/18/06)'],\n    ['FFC', 'PEACHTREE_CITY'],\n    ['FGF', 'EASTERN_NORTH_DAKOTA'],\n    ['FGZ', 'FLAGSTAFF'],\n    ['FSD', 'SIOUX_FALLS'],\n    ['FWD', 'DALLAS/FORT_WORTH'],\n    ['GGW', 'GLASGOW'],\n    ['GID', 'HASTINGS'],\n    ['GJT', 'GRAND_JUNCTION'],\n    ['GLD', 'GOODLAND'],\n    ['GRB', 'GREEN_BAY'],\n    ['GRR', 'GRAND_RAPIDS'],\n    ['GSP', 'GREENVILLE/SPARTANBURG'],\n    ['GYX', 'GRAY'],\n    ['HFO', 'HONOLULU'],\n    ['HGX', 'HOUSTON/GALVESTON'],\n    ['HNX', 'SAN_JOAQUIN_VALLEY/HANFORD'],\n    ['HUN', 'HUNTSVILLE'],\n    ['ICT', 'WICHITA'],\n    ['ILM', 'WILMINGTON'],\n    ['ILN', 'WILMINGTON'],\n    ['ILX', 'LINCOLN'],\n    ['IND', 'INDIANAPOLIS'],\n    ['IWX', 'NORTHERN_INDIANA'],\n    ['JAN', 'JACKSON'],\n    ['JAX', 'JACKSONVILLE'],\n    ['JKL', 'JACKSON'],\n    ['KEY', 'KEY WEST (KEY, post 5/18/06)'],\n    ['LBF', 'NORTH_PLATTE'],\n    ['LCH', 'LAKE_CHARLES'],\n    ['LIX', 'NEW_ORLEANS'],\n    ['LKN', 'ELKO'],\n    ['LMK', 'LOUISVILLE'],\n    ['LOT', 'CHICAGO'],\n    ['LOX', 'LOS_ANGELES/OXNARD'],\n    ['LSX', 'ST_LOUIS'],\n    ['LUB', 'LUBBOCK'],\n    ['LWX', 'BALTIMORE_MD/_WASHINGTON_DC'],\n    ['LZK', 'LITTLE_ROCK'],\n    ['MAF', 'MIDLAND/ODESSA'],\n    ['MEG', 'MEMPHIS'],\n    ['MFL', 'MIAMI'],\n    ['MFR', 'MEDFORD'],\n    ['MHX', 'NEWPORT/MOREHEAD_CITY'],\n    ['MKX', 'MILWAUKEE/SULLIVAN'],\n    ['MLB', 'MELBOURNE'],\n    ['MOB', 'MOBILE'],\n    ['MPX', 'TWIN_CITIES/CHANHASSEN'],\n    ['MQT', 'MARQUETTE'],\n    ['MRX', 'MORRISTOWN'],\n    ['MSO', 'MISSOULA'],\n    ['MTR', 'SAN_FRANCISCO'],\n    ['OAX', 'OMAHA/VALLEY'],\n    ['OHX', 'NASHVILLE'],\n    ['OKX', 'NEW_YORK'],\n    ['OTX', 'SPOKANE'],\n    ['OUN', 'NORMAN'],\n    ['PAH', 'PADUCAH'],\n    ['PBZ', 'PITTSBURGH'],\n    ['PDT', 'PENDLETON'],\n    ['PHI', 'MOUNT_HOLLY'],\n    ['PIH', 'POCATELLO/IDAHO_FALLS'],\n    ['PQR', 'PORTLAND'],\n    ['PSR', 'PHOENIX'],\n    ['PUB', 'PUEBLO'],\n    ['RAH', 'RALEIGH'],\n    ['REV', 'RENO'],\n    ['RIW', 'RIVERTON'],\n    ['RLX', 'CHARLESTON'],\n    ['RNK', 'BLACKSBURG'],\n    ['SEW', 'SEATTLE'],\n    ['SGF', 'SPRINGFIELD'],\n    ['SGX', 'SAN_DIEGO'],\n    ['SHV', 'SHREVEPORT'],\n    ['SJT', 'SAN_ANGELO'],\n    ['JSJ', 'SAN_JUAN'],\n    ['SLC', 'SALT_LAKE_CITY'],\n    ['STO', 'SACRAMENTO'],\n    ['TAE', 'TALLAHASSEE'],\n    ['TBW', 'TAMPA_BAY_AREA/RUSKIN'],\n    ['TFX', 'GREAT_FALLS'],\n    ['TOP', 'TOPEKA'],\n    ['TSA', 'TULSA'],\n    ['TWC', 'TUCSON'],\n    ['UNR', 'RAPID_CITY'],\n    ['VEF', 'LAS_VEGAS']\n];\n"
  },
  {
    "path": "htdocs/metadata/xml/index.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/network.php\";\n\n$nt = new NetworkTable(\"ISUSM\");\n\n$t = new MyView();\n$t->title = \"IEM NMP Metadata\";\n\n$content = <<<EOM\n\n<h3>IEM NMP Metadata</h3>\n\nEOM;\n\nforeach ($nt->table as $k => $v) {\n    $content .= sprintf(\n        \"<li><a href='pl_ISUSM_%s.xml'>%s %s</a></li>\",\n        $k,\n        $k,\n        $v[\"name\"]\n    );\n}\n\n$t->content = $content;\n$t->render(\"single.phtml\");\n"
  },
  {
    "path": "htdocs/metadata/xml/pl.py",
    "content": "\"\"\"implemented in pylib/iemweb/metadata/xml/pl.py\"\"\"\n\nfrom iemweb.metadata.xml.pl import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/metadata/xml/rp_IEM.xml",
    "content": "<!-- ================================ -->\n<!--           AGGREGATOR             -->\n<!-- ================================ -->\n\n<gmd:CI_ResponsibleParty xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sfl=\"http://sawi.gst.com/nmpa/sfl.xsd\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:swe=\"http://www.opengis.net/swe/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:nmpa=\"http://sawi.gst.com/nmpa/schema/metaExtension.xsd\" xmlns:gco=\"http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd\" xsi:schemaLocation=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\" id=\"IEM\">\n  <gmd:individualName>IEM</gmd:individualName>\n  <gmd:organisationName><gco:CharacterString>Iowa Environmental Mesonet of Iowa State University</gco:CharacterString></gmd:organisationName>\n  <gmd:positionName><gco:CharacterString>Staff</gco:CharacterString></gmd:positionName>\n  <gmd:contactInfo>\n    <gmd:phone>515-294-5978</gmd:phone>\n    <gmd:address>\n      <gmd:deliveryPoint>3015 Agronomy Hall</gmd:deliveryPoint>\n      <gmd:city>Ames</gmd:city>\n      <gmd:administrativeArea>Iowa</gmd:administrativeArea>\n      <gmd:postalCode>50010</gmd:postalCode>\n      <gmd:country>United States</gmd:country>\n      <gmd:electronicMailAddress>akrherz@iastate.edu</gmd:electronicMailAddress>\n    </gmd:address>\n    <gmd:onlineResource>\n      <gmd:CI_OnlineResource>\n        <gmd:linkage>\n          <gmd:URL>https://mesonet.agron.iastate.edu/</gmd:URL>\n        </gmd:linkage>\n      </gmd:CI_OnlineResource>\n    </gmd:onlineResource>\n    <gmd:hoursOfService>\n      <gco:CharacterString>Monday-Friday, 8am-5pm</gco:CharacterString>\n    </gmd:hoursOfService>\n    <gmd:contactInstructions>\n      <gco:CharacterString>Email or Call</gco:CharacterString>\n    </gmd:contactInstructions>\n  </gmd:contactInfo>\n  <gmd:role>\n        <gmd:CI_RoleCode codeList=\"http://www.example.com/\" codeListValue=\"http://www.example.com/\">N/A</gmd:CI_RoleCode>   <!-- role codes have not yet been defined -->\n  </gmd:role>\n</gmd:CI_ResponsibleParty>\n"
  },
  {
    "path": "htdocs/metadata/xml/sc_CS_03002.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sfl:SensorCharacteristic xmlns:xlink=\"http://www.w3.org/1999/xlink\"\nxmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\"\nxmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gts=\"http://www.isotc211.org/2005/gts\"\nxmlns:gsr=\"http://www.isotc211.org/2005/gsr\" xmlns:gss=\"http://www.isotc211.org/2005/gss\"\nxmlns:om=\"http://www.opengis.net/om/2.0\" xmlns:sfl=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"\nxmlns:swe=\"http://www.opengis.net/swe/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\nxsi:schemaLocation=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"                                \ngml:id=\"SensorCharacteristic_RMY_05103\">\n\n<!-- ================================================================================ -->\n<!--  Description:                                                                    -->\n<!--      This SensorCharacteristic file describes the R.M. Young 05103 Wind sensor.  -->\n<!--  Date:                                                                           -->\n<!--      August 21, 2012  -  HB                                                      -->\n<!--  Modifications:                                                                  -->\n<!--                                                                                  -->\n<!-- ================================================================================ -->\n\n\n\n<!-- ================================ -->\n<!--           MANUFACTURER           -->\n<!-- ================================ -->\n<!-- This section is used to identify the manufacturer -->\n\n<sfl:manufacturer xlink:href=\"http://sawi.gst.com/nmpa/rp/rp_RMYoung.xml\" />\n\n\n\n<!-- ================================ -->\n<!--             MODEL                -->\n<!-- ================================ -->\n<!-- This section is used to describe the manufacturer-designated model number -->\n\n<sfl:model>05103</sfl:model>\n\n\n\n<!-- ================================ -->\n<!--      OPERATIONAL COMPONENTS      -->\n<!-- ================================ -->\n<!-- These properties relate the operational aspects of the sensor -->\n\n<sfl:operationalComponent>\n  <swe:QuantityRange definition=\"http://sawi.gst.com/nmpa/docs/terms.html#operatingTemperature\">\n    <swe:uom code=\"K\"/>                                                                   \n    <swe:value>223.15 323.15</swe:value>     <!-- These SI units correspond to -50C and +50C -->\n  </swe:QuantityRange>\n</sfl:operationalComponent>\n\n<sfl:operationalComponent>\n  <swe:QuantityRange definition=\"http://sawi.gst.com/nmpa/docs/terms.html#operatingVoltage\">\n    <swe:uom code=\"VDC\"/>                                                                   \n    <swe:value>8 24</swe:value>\n  </swe:QuantityRange>\n</sfl:operationalComponent>\n\n\n<!-- ================================ -->\n<!--       PHYSICAL COMPONENTS        -->\n<!-- ================================ -->\n<!-- These properties relate the physical aspects of the sensor -->\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#netWeight\">\n    <swe:uom code=\"kg\"/>\n    <swe:value>1.5</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#propellerDiameter\">\n    <swe:uom code=\"m\"/>\n    <swe:value>.18</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#propellerBlades\">\n    <swe:uom code=\"1\"/>\n    <swe:value>4</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#height\">\n    <swe:uom code=\"m\"/>\n    <swe:value>.37</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#width\">\n    <swe:uom code=\"m\"/>\n    <swe:value>-</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#length\">\n    <swe:uom code=\"m\"/>\n    <swe:value>0.55</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#mainHousingDiameter-CS-05103\">\n    <swe:uom code=\"m\"/>\n    <swe:value>0.05</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#mountingPipeDiameter-CS-05103\">\n    <swe:uom code=\"m\"/>\n    <swe:value>0.55</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<!-- ================================ -->\n<!--       Provides:                  -->\n<!--          Wind Speed              -->\n<!--          Wind Direction          -->\n<!-- ================================ -->\n\n<sfl:provides>\n <sfl:SensingProcedure xlink:href=\"https://mesonet.agron.iastate.edu/metdata/xml/sp_CS_03002_windSpeed.xml\" />\n <sfl:SensingProcedure xlink:href=\"https://mesonet.agron.iastate.edu/metadata/xml/sp_CS_03002_windDirection.xml\" />\n</sfl:provides>\n\n\n<!-- ================================ -->\n<!--     Anything else?               -->\n<!-- ================================ -->\n\n</sfl:SensorCharacteristic>\n"
  },
  {
    "path": "htdocs/metadata/xml/sc_CS_CS215.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sfl:SensorCharacteristic xmlns:xlink=\"http://www.w3.org/1999/xlink\"\nxmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\"\nxmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gts=\"http://www.isotc211.org/2005/gts\"\nxmlns:gsr=\"http://www.isotc211.org/2005/gsr\" xmlns:gss=\"http://www.isotc211.org/2005/gss\"\nxmlns:om=\"http://www.opengis.net/om/2.0\" xmlns:sfl=\"http://sawi.gst.com/nmpa/sfl.xsd\"\nxmlns:swe=\"http://www.opengis.net/swe/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\nxsi:schemaLocation=\"http://sawi.gst.com/nmpa/sfl.xsd\"                                \ngml:id=\"SensorCharacteristic_Vaisala_PTB110\">\n\n<!-- ================================================================================ -->\n<!--  Description:                                                                    -->\n<!--      This SensorCharacteristic file describes the Vaisala HMP45C Temperature     -->\n<!--      and relative humidity sensor.                                               -->\n<!--  Date:                                                                           -->\n<!--    September 17, 2012  -  HB                                                     -->\n<!--  Modifications:                                                                  -->\n<!--                                                                                  -->\n<!-- ================================================================================ -->\n\n\n\n<!-- ================================ -->\n<!--           MANUFACTURER           -->\n<!-- ================================ -->\n<!-- This section is used to identify the manufacturer -->\n\n<sfl:manufacturer xlink:href=\"http://sawi.gst.com/nmpa/rp/rp_Vaisala.xml\" />\n\n\n\n<!-- ================================ -->\n<!--             MODEL                -->\n<!-- ================================ -->\n<!-- This section is used to describe the manufacturer-designated model number -->\n\n<sfl:model>HMP45C</sfl:model>\n\n\n\n<!-- ================================ -->\n<!--      OPERATIONAL COMPONENTS      -->\n<!-- ================================ -->\n<!-- These properties relate the operational aspects of the sensor -->\n\n<sfl:operationalComponent>\n  <swe:QuantityRange definition=\"http://sawi.gst.com/nmpa/docs/terms.html#operatingTemperature\">\n    <swe:uom code=\"K\"/>                                                                   \n    <swe:value>233.15 333.15</swe:value>     <!-- These SI units correspond to -40C and +60C -->\n  </swe:QuantityRange>\n</sfl:operationalComponent>\n\n<sfl:operationalComponent>\n  <swe:QuantityRange definition=\"http://sawi.gst.com/nmpa/docs/terms.html#storageTemperature\">\n    <swe:uom code=\"K\"/>                                                                   \n    <swe:value>233.15 353.15</swe:value>     <!-- These SI units correspond to -40C and +60C -->\n  </swe:QuantityRange>\n</sfl:operationalComponent>\n\n<sfl:operationalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#operatingVoltage\">\n    <swe:uom code=\"VDC\"/>                                                                   \n    <swe:value>12</swe:value>\n  </swe:Quantity>\n</sfl:operationalComponent>\n\n<sfl:operationalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#operatingCurrent\">\n    <swe:uom code=\"A\"/>                                                                   \n    <swe:value>.004</swe:value>\n  </swe:Quantity>\n</sfl:operationalComponent>\n\n\n<!-- ================================ -->\n<!--       PHYSICAL COMPONENTS        -->\n<!-- ================================ -->\n<!-- These properties relate the physical aspects of the sensor -->\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#probeLength\">\n    <swe:uom code=\"m\"/>\n    <swe:value>0.254</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#bodyDiameter\">\n    <swe:uom code=\"m\"/>\n    <swe:value>0.025</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#settlingTime\">\n    <swe:uom code=\"s\"/>\n    <swe:value>0.15</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<!-- ================================ -->\n<!--   Provides:                      -->\n<!--        Temperature               -->\n<!--        Relative Humidity         -->\n<!-- ================================ -->\n\n<sfl:provides>\n <sfl:SensingProcedure xlink:href=\"http://sawi.gst.com/nmpa/sensor/procedure/sp_Vaisala_HMP45C_temp.xml\" />\n <sfl:SensingProcedure xlink:href=\"http://sawi.gst.com/nmpa/sensor/procedure/sp_Vaisala_HMP45C_rh.xml\" />\n</sfl:provides>\n\n<!-- ================================ -->\n<!--     Anything else?               -->\n<!-- ================================ -->\n\n</sfl:SensorCharacteristic>\n"
  },
  {
    "path": "htdocs/metadata/xml/sc_CS_CS300.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sfl:SensorCharacteristic xmlns:xlink=\"http://www.w3.org/1999/xlink\"\nxmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\"\nxmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gts=\"http://www.isotc211.org/2005/gts\"\nxmlns:gsr=\"http://www.isotc211.org/2005/gsr\" xmlns:gss=\"http://www.isotc211.org/2005/gss\"\nxmlns:om=\"http://www.opengis.net/om/2.0\" xmlns:sfl=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"\nxmlns:swe=\"http://www.opengis.net/swe/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\nxsi:schemaLocation=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"                                \ngml:id=\"SensorCharacteristic_CS_CS300\">\n\n<!-- ================================================================================ -->\n<!--  Description:                                                                    -->\n<!--      This SensorCharacteristic file describes the Campbell Scientific CS300      -->\n<!-- ================================================================================ -->\n\n\n\n<!-- ================================ -->\n<!--           MANUFACTURER           -->\n<!-- ================================ -->\n<!-- This section is used to identify the manufacturer -->\n\n<sfl:manufacturer xlink:href=\"http://sawi.gst.com/nmpa/rp/rp_CampbellSci.xml\" />\n\n\n<!-- ================================ -->\n<!--             MODEL                -->\n<!-- ================================ -->\n<!-- This section is used to describe the manufacturer-designated model number -->\n\n<sfl:model>CS300</sfl:model>\n\n\n\n<!-- ================================ -->\n<!--      OPERATIONAL COMPONENTS      -->\n<!-- ================================ -->\n<!-- These properties relate the operational aspects of the sensor -->\n\n<sfl:operationalComponent>\n  <swe:QuantityRange definition=\"http://sawi.gst.com/nmpa/docs/terms.html#operatingTemperature\">\n    <swe:uom code=\"K\"/>                                                                   \n    <swe:value>248.15 328.15</swe:value>     <!-- These SI units correspond to -25C and +55C -->\n  </swe:QuantityRange>\n</sfl:operationalComponent>\n\n<sfl:operationalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#responseTime\">\n    <swe:uom code=\"s\"/>\n    <swe:value>0.00100</swe:value>\n  </swe:Quantity>\n</sfl:operationalComponent>\n\n<sfl:operationalComponent>\n  <swe:QuantityRange definition=\"http://sawi.gst.com/nmpa/docs/terms.html#humidity\">\n    <swe:uom code=\"%\"/>                                                                   \n    <swe:value>0 100</swe:value>\n  </swe:QuantityRange>\n</sfl:operationalComponent>\n\n<sfl:operationalComponent>\n      <swe:QuantityRange definition=\"http://sawi.gst.com/nmpa/docs/terms.html#validWavelengths\">\n        <swe:uom code=\"m\"/>\n        <swe:value>0.000000360 0.000001120</swe:value>  <!-- 360nm to 1120nm -->\n      </swe:QuantityRange>     \n</sfl:operationalComponent>\n\n\n<!-- ================================ -->\n<!--       PHYSICAL COMPONENTS        -->\n<!-- ================================ -->\n<!-- These properties relate the physical aspects of the sensor -->\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#netWeight\">\n    <swe:uom code=\"kg\"/>\n    <swe:value>0.065</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#height\">\n    <swe:uom code=\"m\"/>\n    <swe:value>0.025</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#diameter\">\n    <swe:uom code=\"m\"/>\n    <swe:value>0.024</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#cableLength\">\n    <swe:uom code=\"m\"/>\n    <swe:value>5.0</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<!-- ================================ -->\n<!--    Provides: Solar Radiation     -->\n<!-- ================================ -->\n\n<sfl:provides>\n <sfl:SensingProcedure xlink:href=\"https://mesonet.agron.iastate.edu/metadata/xml/sp_CS_CS300.xml\" />\n</sfl:provides>\n\n\n<!-- ================================ -->\n<!--     Anything else?               -->\n<!-- ================================ -->\n\n</sfl:SensorCharacteristic>\n"
  },
  {
    "path": "htdocs/metadata/xml/sc_CS_CS655.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sfl:SensorCharacteristic xmlns:xlink=\"http://www.w3.org/1999/xlink\"\nxmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\"\nxmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gts=\"http://www.isotc211.org/2005/gts\"\nxmlns:gsr=\"http://www.isotc211.org/2005/gsr\" xmlns:gss=\"http://www.isotc211.org/2005/gss\"\nxmlns:om=\"http://www.opengis.net/om/2.0\" xmlns:sfl=\"http://sawi.gst.com/nmpa/sfl.xsd\"\nxmlns:swe=\"http://www.opengis.net/swe/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\nxsi:schemaLocation=\"http://sawi.gst.com/nmpa/sfl.xsd\"                                \ngml:id=\"SensorCharacteristic_CS_CS655\">\n\n<!-- ================================================================================ -->\n<!--  Description:                                                                    -->\n<!--      This SensorCharacteristic file describes the Campbell Scientific CS655      -->\n<!--      soil moisture sensor.                                                       -->\n<!-- ================================================================================ -->\n\n<!-- ================================ -->\n<!--           MANUFACTURER           -->\n<!-- ================================ -->\n<!-- This section is used to identify the manufacturer -->\n\n<sfl:manufacturer xlink:href=\"http://sawi.gst.com/nmpa/rp/rp_CampbellSci.xml\" />\n\n\n<!-- ================================ -->\n<!--             MODEL                -->\n<!-- ================================ -->\n<!-- This section is used to describe the manufacturer-designated model number -->\n\n<sfl:model>CS655</sfl:model>\n\n<!-- ================================ -->\n<!--      OPERATIONAL COMPONENTS      -->\n<!-- ================================ -->\n<!-- These properties relate the operational aspects of the sensor -->\n\n<sfl:operationalComponent>\n  <swe:QuantityRange definition=\"http://sawi.gst.com/nmpa/docs/terms.html#operatingTemperature\">\n    <swe:uom code=\"K\"/>                                                                   \n    <swe:value>283.15 303.15</swe:value>     <!-- These SI units correspond to 10C and 30C -->\n  </swe:QuantityRange>\n</sfl:operationalComponent>\n\n<sfl:operationalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#maxCableLength\">\n    <swe:uom code=\"m\"/>\n    <swe:value>100</swe:value>     <!-- Volts DC -->\n  </swe:Quantity>\n</sfl:operationalComponent>\n\n<sfl:operationalComponent>\n  <swe:QuantityRange definition=\"http://sawi.gst.com/nmpa/docs/terms.html#operatingVoltage\">\n    <swe:uom code=\"V\"/>\n    <swe:value>9 18</swe:value>  <!-- VDC -->\n  </swe:QuantityRange>\n</sfl:operationalComponent>\n\n\n<!-- ================================ -->\n<!--       PHYSICAL COMPONENTS        -->\n<!-- ================================ -->\n<!-- These properties relate the physical aspects of the sensor -->\n\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#netWeight\">\n    <swe:uom code=\"kg\"/>\n    <swe:value>.280</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#length\">\n    <swe:uom code=\"m\"/>\n    <swe:value>.30</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#diameter\">\n    <swe:uom code=\"m\"/>\n    <swe:value>.0032</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n\n<!-- ================================ -->\n<!--    Provides: Solar Radiation     -->\n<!-- ================================ -->\n\n<sfl:provides>\n <sfl:SensingProcedure xlink:href=\"https://mesonet.agron.iastate.edu/metadata/xml/sp_CS_CS655.xml\" />\n</sfl:provides>\n\n\n<!-- ================================ -->\n<!--     Anything else?               -->\n<!-- ================================ -->\n\n</sfl:SensorCharacteristic>\n"
  },
  {
    "path": "htdocs/metadata/xml/sc_CS_TE525.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sfl:SensorCharacteristic xmlns:xlink=\"http://www.w3.org/1999/xlink\"\nxmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\"\nxmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gts=\"http://www.isotc211.org/2005/gts\"\nxmlns:gsr=\"http://www.isotc211.org/2005/gsr\" xmlns:gss=\"http://www.isotc211.org/2005/gss\"\nxmlns:om=\"http://www.opengis.net/om/2.0\" xmlns:sfl=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"\nxmlns:swe=\"http://www.opengis.net/swe/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\nxsi:schemaLocation=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"                                \ngml:id=\"SensorCharacteristic_TE_TE525USW\">\n\n<!-- ================================================================================ -->\n<!--  Description:                                                                    -->\n<!--      This SensorCharacteristic file describes the Texas Electronics TE525USW     -->\n<!--      rain gauge tipping bucket.                                                  -->\n<!--  Date:                                                                           -->\n<!--    September 4, 2012  -  HB                                                      -->\n<!--  Modifications:                                                                  -->\n<!--                                                                                  -->\n<!-- ================================================================================ -->\n\n\n\n<!-- ================================ -->\n<!--           MANUFACTURER           -->\n<!-- =====================T=========== -->\n<!-- This section is used to identify the manufacturer -->\n\n<sfl:manufacturer xlink:href=\"http://sawi.gst.com/nmpa/rp/rp_TexasElectronics.xml\" />\n\n\n<!-- ================================ -->\n<!--             MODEL                -->\n<!-- ================================ -->\n<!-- This section is used to describe the manufacturer-designated model number -->\n\n<sfl:model>TE525USW</sfl:model>\n\n\n\n<!-- ================================ -->\n<!--      OPERATIONAL COMPONENTS      -->\n<!-- ================================ -->\n<!-- These properties relate the operational aspects of the sensor -->\n\n<sfl:operationalComponent>\n  <swe:QuantityRange definition=\"http://sawi.gst.com/nmpa/docs/terms.html#operatingTemperature\">\n    <swe:uom code=\"K\"/>                                                                   \n    <swe:value>273.15 323.15</swe:value>     <!-- These SI units correspond to 0C and +50C -->\n  </swe:QuantityRange>\n</sfl:operationalComponent>\n\n<sfl:operationalComponent>\n  <swe:QuantityRange definition=\"http://sawi.gst.com/nmpa/docs/terms.html#storageTemperature\">\n    <swe:uom code=\"K\"/>                                                                   \n    <swe:value>233.15 343.15</swe:value>     <!-- These SI units correspond to -40C and +70C -->\n  </swe:QuantityRange>\n</sfl:operationalComponent>\n\n<sfl:operationalComponent>\n  <sfl:ComplexConditionalValue>\n    <sfl:condition>\n      <swe:QuantityRange definition=\"http://sawi.gst.com/nmpa/docs/terms.html#operatingCurrent\">\n        <swe:uom code=\"A\"/>                                                                   \n        <swe:value>0 2</swe:value>\n      </swe:QuantityRange>\n    </sfl:condition>\n    <sfl:value>\n      <swe:QuantityRange definition=\"http://sawi.gst.com/nmpa/docs/terms.html#operatingVoltage\">\n        <swe:uom code=\"VDC\"/>                                                                   \n        <swe:value>0 30</swe:value>\n      </swe:QuantityRange>\n    </sfl:value>      \n  </sfl:ComplexConditionalValue>\n</sfl:operationalComponent>\n\n\n<!-- ================================ -->\n<!--       PHYSICAL COMPONENTS        -->\n<!-- ================================ -->\n<!-- These properties relate the physical aspects of the sensor -->\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#netWeight\">\n    <swe:uom code=\"kg\"/>\n    <swe:value>1.2</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#height\">\n    <swe:uom code=\"m\"/>\n    <swe:value>0.28</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#collectorDiameter\">\n    <swe:uom code=\"m\"/>\n    <swe:value>0.203</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#funnelDepth\">\n    <swe:uom code=\"m\"/>\n    <swe:value>0.163</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<sfl:physicalComponent>\n  <swe:Quantity definition=\"http://sawi.gst.com/nmpa/docs/terms.html#splashOutProtection\">\n    <swe:uom code=\"m\"/>\n    <swe:value>0.050</swe:value>\n  </swe:Quantity>\n</sfl:physicalComponent>\n\n<!-- ================================ -->\n<!--       Provides: Rainfall         -->\n<!-- ================================ -->\n\n<sfl:provides>\n <sfl:SensingProcedure xlink:href=\"http://sawi.gst.com/nmpa/sensor/procedure/sp_TE-TE525USW_rainfall.xml\" />\n</sfl:provides>\n\n\n<!-- ================================ -->\n<!--     Anything else?               -->\n<!-- ================================ -->\n\n</sfl:SensorCharacteristic>\n"
  },
  {
    "path": "htdocs/metadata/xml/sd.py",
    "content": "\"\"\"implemented in pylib/iemweb/metadata/xml/sd.py\"\"\"\n\nfrom iemweb.metadata.xml.sd import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/metadata/xml/sp_CS_03002_WindDirection.xml",
    "content": "<!-- ================================================================== -->\n<!-- Title:   05103 Wind Direction SensingProcedure File                -->\n<!-- Date:    September 20, 2012                                        -->\n<!-- Author:  H. Brown                                                  -->\n<!-- ================================================================== -->\n\n<sfl:SensingProcedure\nxmlns:xlink=\"http://www.w3.org/1999/xlink\"\nxmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\"\nxmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gts=\"http://www.isotc211.org/2005/gts\"\nxmlns:gsr=\"http://www.isotc211.org/2005/gsr\" xmlns:gss=\"http://www.isotc211.org/2005/gss\"\nxmlns:om=\"http://www.opengis.net/om/2.0\" xmlns:sfl=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"\nxmlns:swe=\"http://www.opengis.net/swe/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\nxsi:schemaLocation=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\" \ngml:id=\"05103_WindDirection\">\n    <sfl:method>RM Young 05103 uses a variable potentiometer to determine the wind direction.</sfl:method>\n    <sfl:observedProperty xlink:href=\"http://sawi.gst.com/nmpa/docs/terms.html#windDirection\" /> <!-- FIXME: Update Terms file -->\n    <sfl:unitOfMeasure uom=\"deg\" />\n    <sfl:alternativeUnitOfMeasure uom=\"rad\" />\n    <sfl:qualifiedBy>\n      <sfl:MeasurementCapability gml:id=\"WindDirection\">\n\n        <sfl:detectionLimit>\n          <swe:Quantity>\n            <swe:uom code=\"m/s\" />\n            <swe:value>1.1</swe:value>\n          </swe:Quantity>\n        </sfl:detectionLimit>\n\n        <sfl:accuracy>\n          <sfl:value>\n            <swe:QuantityRange>\n              <swe:uom code=\"deg\" />\n              <swe:value>-3 3</swe:value>\n            </swe:QuantityRange>\n          </sfl:value>\n        </sfl:accuracy>\n\n        <sfl:range>\n          <swe:QuantityRange>\n            <swe:uom code=\"deg\"/>\n            <swe:value>0.0 360.0</swe:value>\n          </swe:QuantityRange>\n        </sfl:range>\n\n        <sfl:resolution>\n          <swe:Quantity>\n            <swe:uom code=\"deg\" />\n            <swe:value>0.1</swe:value>\n          </swe:Quantity>\n        </sfl:resolution>\n\n      <sfl:extension>\n        <swe:Quantity gml:id=\"DelayDistance\" definition=\"http://sawi.gst.com/nmpa/docs/terms.html#delayDistance\"> <!-- FIXME: Update Terms file -->\n          <swe:uom code=\"m\"/>\n          <swe:value>1.3</swe:value>\n        </swe:Quantity>\n        <swe:Quantity gml:id=\"DampedNaturalWavelength\" definition=\"http://sawi.gst.com/nmpa/docs/terms.html#dampedNaturalWavelength\"> <!-- FIXME: Update Terms file -->\n          <swe:uom code=\"m\"/>\n          <swe:value>7.4</swe:value>\n        </swe:Quantity>\n        <swe:Quantity gml:id=\"UndampedNaturalWavelength\" definition=\"http://sawi.gst.com/nmpa/docs/terms.html#undampedNaturalWavelength\"> <!-- FIXME: Update Terms file -->\n          <swe:uom code=\"m\"/>\n          <swe:value>7.2</swe:value>\n        </swe:Quantity>\n      </sfl:extension>\n\n      </sfl:MeasurementCapability>\n    </sfl:qualifiedBy>\n    <sfl:implementedBy xlink:href=\"http://sawi.gst.com/nmpa/sensor/characteristic/sc_RMY_05103.xml\" />\n  </sfl:SensingProcedure>\n"
  },
  {
    "path": "htdocs/metadata/xml/sp_CS_03002_WindSpeed.xml",
    "content": "<!-- ================================================================== -->\n<!-- Title:   05103 Wind Direction SensingProcedure File                -->\n<!-- Date:    September 20, 2012                                        -->\n<!-- Author:  H. Brown                                                  -->\n<!-- ================================================================== -->\n<sfl:SensingProcedure\nxmlns:xlink=\"http://www.w3.org/1999/xlink\"\nxmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\"\nxmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gts=\"http://www.isotc211.org/2005/gts\"\nxmlns:gsr=\"http://www.isotc211.org/2005/gsr\" xmlns:gss=\"http://www.isotc211.org/2005/gss\"\nxmlns:om=\"http://www.opengis.net/om/2.0\" xmlns:sfl=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"\nxmlns:swe=\"http://www.opengis.net/swe/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\nxsi:schemaLocation=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\" \ngml:id=\"05103_WindDirection\">\n    <sfl:method>RM Young 05103 uses a variable potentiometer to determine the wind direction.</sfl:method>\n    <sfl:observedProperty xlink:href=\"http://sawi.gst.com/nmpa/docs/terms.html#windDirection\" /> <!-- FIXME: Update Terms file -->\n    <sfl:unitOfMeasure uom=\"deg\" />\n    <sfl:alternativeUnitOfMeasure uom=\"rad\" />\n    <sfl:qualifiedBy>\n      <sfl:MeasurementCapability gml:id=\"WindDirection\">\n\n        <sfl:detectionLimit>\n          <swe:Quantity>\n            <swe:uom code=\"m/s\" />\n            <swe:value>1.1</swe:value>\n          </swe:Quantity>\n        </sfl:detectionLimit>\n\n        <sfl:accuracy>\n          <sfl:value>\n            <swe:QuantityRange>\n              <swe:uom code=\"deg\" />\n              <swe:value>-3 3</swe:value>\n            </swe:QuantityRange>\n          </sfl:value>\n        </sfl:accuracy>\n\n        <sfl:range>\n          <swe:QuantityRange>\n            <swe:uom code=\"deg\"/>\n            <swe:value>0.0 360.0</swe:value>\n          </swe:QuantityRange>\n        </sfl:range>\n\n        <sfl:resolution>\n          <swe:Quantity>\n            <swe:uom code=\"deg\" />\n            <swe:value>0.1</swe:value>\n          </swe:Quantity>\n        </sfl:resolution>\n\n      <sfl:extension>\n        <swe:Quantity gml:id=\"DelayDistance\" definition=\"http://sawi.gst.com/nmpa/docs/terms.html#delayDistance\"> <!-- FIXME: Update Terms file -->\n          <swe:uom code=\"m\"/>\n          <swe:value>1.3</swe:value>\n        </swe:Quantity>\n        <swe:Quantity gml:id=\"DampedNaturalWavelength\" definition=\"http://sawi.gst.com/nmpa/docs/terms.html#dampedNaturalWavelength\"> <!-- FIXME: Update Terms file -->\n          <swe:uom code=\"m\"/>\n          <swe:value>7.4</swe:value>\n        </swe:Quantity>\n        <swe:Quantity gml:id=\"UndampedNaturalWavelength\" definition=\"http://sawi.gst.com/nmpa/docs/terms.html#undampedNaturalWavelength\"> <!-- FIXME: Update Terms file -->\n          <swe:uom code=\"m\"/>\n          <swe:value>7.2</swe:value>\n        </swe:Quantity>\n      </sfl:extension>\n\n      </sfl:MeasurementCapability>\n    </sfl:qualifiedBy>\n    <sfl:implementedBy xlink:href=\"http://sawi.gst.com/nmpa/sensor/characteristic/sc_RMY_05103.xml\" />\n  </sfl:SensingProcedure>\n"
  },
  {
    "path": "htdocs/metadata/xml/sp_CS_CS215_RH.xml",
    "content": "<!-- ================================================================== -->\n<!-- Title:   HMP45C Relative Humidity SensingProcedure File            -->\n<!-- Date:    September 20, 2012                                        -->\n<!-- Author:  H. Brown                                                  -->\n<!-- ================================================================== -->\n\n <sfl:SensingProcedure gml:id=\"HMP45C_RelativeHumidity\">\n    <sfl:method>The HMP45C uses a Vaisala HUMICAP 180 capacitive relative humidity sensor (in combination with temperature) to determine RH.</sfl:method>\n    <sfl:observedProperty xlink:href=\"http://sawi.gst.com/nmpa/docs/terms.html#relativeHumidity\" /> <!-- FIXME: Update Terms file -->\n    <sfl:unitOfMeasure uom=\"1\" />    <!-- signifies percent, or '%' -->\n    <sfl:qualifiedBy>\n      <sfl:MeasurementCapability gml:id=\"RelativeHumidity\">\n\n        <sfl:accuracy>\n          <sfl:ComplexConditionalValue>        <!-- Case 1: 20C, 0-90% RH -->                           <!-- Is this the way to format this? -->\n            <sfl:condition>                    <!-- temperature-->\n              <swe:Quantity>\n                <swe:uom code=\"degK\" />\n                <swe:value>293.15</swe:value>  <!-- 20C -->\n              </swe:Quantity>\n            </sfl:condition>\n            <sfl:condition>                    <!--IF 0<= relative humidity < 90 -->\n              <swe:QuantityRange>\n                <swe:uom code=\"%\" />           <!-- % -->\n                <swe:value>0 90</swe:value>    <!-- 0-90% Humidity -->\n              </swe:QuantityRange>\n            </sfl:condition>\n            <sfl:value> \n              <swe:QuantityRange>\n                <swe:uom code=\"%\" />           <!-- % -->\n                <swe:value>-2 2</swe:value>\n              </swe:QuantityRange>\n            </sfl:value>\n          </sfl:ComplexConditionalValue>\n\n          <sfl:ComplexConditionalValue>        <!-- Case 2: 20C, 90-100% RH -->\n            <sfl:condition>                    <!-- temperature-->\n              <swe:Quantity>\n                <swe:uom code=\"degK\" />\n                <swe:value>293.15</swe:value>  <!-- 20C -->\n              </swe:Quantity>\n            </sfl:condition>\n            <sfl:condition>                    <!-- IF 90<=relative humidity<=100 -->\n              <swe:QuantityRange>\n                <swe:uom code=\"%\" />           <!-- % -->\n                <swe:value>90 10</swe:value>\n              </swe:QuantityRange>\n            </sfl:condition>\n            <sfl:value> \n              <swe:QuantityRange>\n                <swe:uom code=\"%\" />           <!-- % -->\n                <swe:value>-3 3</swe:value>\n              </swe:QuantityRange>\n            </sfl:value>\n          </sfl:ComplexConditionalValue>\n        </sfl:accuracy>\n\n        <sfl:range>\n          <swe:QuantityRange>\n            <swe:uom code=\"%\"/>                <!-- % -->\n            <swe:value>0 100</swe:value>       <!-- % relative humidity -->\n          </swe:QuantityRange>\n        </sfl:range>\n\n        <sfl:resolution>\n          <swe:Quantity>\n            <swe:uom code=\"%\" />               <!-- % -->\n            <swe:value>0.00992</swe:value>     <!--  (1V-0.008V)/100% = 0.00992 V/%  -->\n          </swe:Quantity>\n        </sfl:resolution>\n\n      <sfl:extension>\n          <swe:QuantityRange gml:id=\"OutputSignalRange\" definition=\"http://sawi.gst.com/nmpa/docs/terms.html#outputSignalRange\"> <!-- FIXME: Update Terms file -->\n            <swe:uom code=\"V\" />\n            <swe:value>0.008 1.0</swe:value>\n          </swe:QuantityRange>\n      </sfl:extension>\n\n      </sfl:MeasurementCapability>\n    </sfl:qualifiedBy>\n    <sfl:implementedBy xlink:href=\"http://sawi.gst.com/nmpa/sensor/characteristic/sc_Vaisala_HMP45C.xml\" />\n  </sfl:SensingProcedure>\n"
  },
  {
    "path": "htdocs/metadata/xml/sp_CS_CS215_Temp.xml",
    "content": "<!-- ================================================================== -->\n<!-- Title:   HMP45C Air Temperature SensingProcedure File              -->\n<!-- Date:    September 20, 2012                                        -->\n<!-- Author:  H. Brown                                                  -->\n<!-- ================================================================== -->\n\n <sfl:SensingProcedure gml:id=\"HMP45C_Temperature\">\n    <sfl:method>The HMP45C uses a platinum resistance temperature detector.</sfl:method>\n    <sfl:observedProperty xlink:href=\"http://sawi.gst.com/nmpa/docs/terms.html#temperature\" /> <!-- FIXME: Update Terms file -->\n    <sfl:unitOfMeasure uom=\"degK\" />\n    <sfl:alternativeUnitOfMeasure uom=\"degC\" />\n    <sfl:alternativeUnitOfMeasure uom=\"degF\" />\n    <sfl:qualifiedBy>\n      <sfl:MeasurementCapability gml:id=\"AirTemperature\">\n\n        <sfl:accuracy>\n          <sfl:value>\n            <swe:QuantityRange>\n              <swe:uom code=\"K\" />\n              <swe:value>-0.3 0.3</swe:value>\n            </swe:QuantityRange>\n          </sfl:value>\n        </sfl:accuracy>\n\n        <sfl:range>\n          <swe:QuantityRange>\n            <swe:uom code=\"K\"/>\n            <swe:value>233.15 333.15</swe:value>   <!-- -40C to 60C -->\n          </swe:QuantityRange>\n        </sfl:range>\n\n        <sfl:resolution>\n          <swe:Quantity>\n            <swe:uom code=\"degK\" />\n            <swe:value>0.00992</swe:value>\n          </swe:Quantity>\n        </sfl:resolution>\n\n      <sfl:extension>\n     <!-- Does this need surrounding tags? Should this be moved to the SensorCharacteristic file? -->\n     <!--     <swe:QuantityRange gml:id=\"outputSignalRange\">\n            <swe:uom code=\"V\" />\n            <swe:value>0.008 1.0</swe:value>\n          </swe:QuantityRange>\n     -->\n      </sfl:extension>\n\n      </sfl:MeasurementCapability>\n    </sfl:qualifiedBy>\n    <sfl:implementedBy xlink:href=\"http://sawi.gst.com/nmpa/sensor/characteristic/sc_Vaisala_HMP45C.xml\" />\n  </sfl:SensingProcedure>\n"
  },
  {
    "path": "htdocs/metadata/xml/sp_CS_CS300.xml",
    "content": "<!-- ================================================================== -->\n<!-- Title:   SQ-110 Photosynthetic Radiation SensingProcedure File     -->\n<!-- Date:    October 2, 2012                                           -->\n<!-- Author:  J Epps                                                    -->\n<!-- ================================================================== -->\n\n  <sfl:SensingProcedure \nxmlns:xlink=\"http://www.w3.org/1999/xlink\"\nxmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\"\nxmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gts=\"http://www.isotc211.org/2005/gts\"\nxmlns:gsr=\"http://www.isotc211.org/2005/gsr\" xmlns:gss=\"http://www.isotc211.org/2005/gss\"\nxmlns:om=\"http://www.opengis.net/om/2.0\" xmlns:sfl=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"\nxmlns:swe=\"http://www.opengis.net/swe/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\nxsi:schemaLocation=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\" \ngml:id=\"CS300_SolarRadiation\">\n    <sfl:method>The CS300 uses a silicon photovoltaic detector mounted in a cosine-corrected head to provide solar radiation.</sfl:method>\n    <sfl:observedProperty xlink:href=\"http://sawi.gst.com/nmpa/docs/terms.html#photosyntheticRadiation\" /> <!-- FIXME: Update Terms file -->\n    <sfl:unitOfMeasure uom=\"J/((m**2)(sec))\" />\n    <sfl:qualifiedBy>\n      <sfl:MeasurementCapability gml:id=\"PhotosyntheticRadiation\">\n\n        <sfl:accuracy>\n          <sfl:value>\n              <swe:QuantityRange>\n                <swe:uom code=\"%\" />\n                <swe:value>-5 5</swe:value>\n              </swe:QuantityRange>\n            </sfl:value>\n        </sfl:accuracy>\n\n        <sfl:range> \n          <swe:Quantityrange>\n            <swe:uom code=\"J/((m**2)(sec))\" />\n            <swe:value>0 3000</swe:value>\n          </swe:Quantityrange>\n        </sfl:range>\n\n      <sfl:extension>\n        <!-- none at this time -->\n      </sfl:extension>\n\n      </sfl:MeasurementCapability>\n    </sfl:qualifiedBy>\n    <sfl:implementedBy xlink:href=\"https://mesonet.agron.iastate.edu/metadata/xml/sc_CS_CS300.xml\" />\n  </sfl:SensingProcedure>\n"
  },
  {
    "path": "htdocs/metadata/xml/sp_CS_CS655_Moisture.xml",
    "content": "<!-- ================================================================== -->\n<!-- Title:   CS615 Soil Moisture Sensing Procedure File                -->\n<!-- Date:    September 20, 2012                                        -->\n<!-- Author:  H. Brown                                                  -->\n<!-- ================================================================== -->\n\n  <sfl:SensingProcedure\n  xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n  xmlns:gco=\"http://www.isotc211.org/2005/gco\"\n  xmlns:gmd=\"http://www.isotc211.org/2005/gmd\"\n  xmlns:gml=\"http://www.opengis.net/gml/3.2\"\n  xmlns:gts=\"http://www.isotc211.org/2005/gts\"\n  xmlns:gsr=\"http://www.isotc211.org/2005/gsr\"\n  xmlns:gss=\"http://www.isotc211.org/2005/gss\"\n  xmlns:om=\"http://www.opengis.net/om/2.0\"\n  xmlns:sfl=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"\n  xmlns:swe=\"http://www.opengis.net/swe/2.0\"\n  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"\n  gml:id=\"CS655_SoilMoisture\">\n    <sfl:method>The Campbell Scientific CS655 derives volumetric water content of porous media from the effect of a changing dialectric constant on electromagnetic waves propagating along a wave guide.</sfl:method>\n    <sfl:observedProperty xlink:href=\"http://sawi.gst.com/nmpa/docs/terms.html#soilMoisture\" />\n    <sfl:unitOfMeasure uom=\"%\" />\n    <sfl:qualifiedBy>\n      <sfl:MeasurementCapability gml:id=\"SoilMoisture\">\n\n        <sfl:accuracy>\n          <sfl:value>\n              <swe:QuantityRange>\n                <swe:uom code=\"%\" />\n                <swe:value>-2 2</swe:value>\n              </swe:QuantityRange>\n            </sfl:value>\n        </sfl:accuracy>\n\n<!-- FIXME: This depends on the A/D device used to read the sensor.  Ex. CS_CR10 or CS_CR10X Period Measurement is used, resolution is on order of 10^-6 m^3 m^-3\n        <sfl:resolution> \n          <swe:Quantity>\n            <swe:uom code=\"m\" />\n            <swe:value>.00025</swe:value>\n          </swe:Quantity>\n        </sfl:resolution>\n-->\n\n      <sfl:extension>\n        <!-- none at this time -->\n      </sfl:extension>\n\n      </sfl:MeasurementCapability>\n    </sfl:qualifiedBy>\n    <sfl:implementedBy xlink:href=\"https://mesonet.agron.iastate.edu/metadata/xml/sc_CS_CS655.xml\" />\n  </sfl:SensingProcedure>\n"
  },
  {
    "path": "htdocs/metadata/xml/sp_CS_CS655_Temp.xml",
    "content": "\n<!-- ================================================================== -->\n<!-- Title:   CS615 Soil Temperature Sensing Procedure File             -->\n<!-- ================================================================== -->\n\n  <sfl:SensingProcedure\n  xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n  xmlns:gco=\"http://www.isotc211.org/2005/gco\"\n  xmlns:gmd=\"http://www.isotc211.org/2005/gmd\"\n  xmlns:gml=\"http://www.opengis.net/gml/3.2\"\n  xmlns:gts=\"http://www.isotc211.org/2005/gts\"\n  xmlns:gsr=\"http://www.isotc211.org/2005/gsr\"\n  xmlns:gss=\"http://www.isotc211.org/2005/gss\"\n  xmlns:om=\"http://www.opengis.net/om/2.0\"\n  xmlns:sfl=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"\n  xmlns:swe=\"http://www.opengis.net/swe/2.0\"\n  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"\n  gml:id=\"CS655_SoilTemperature\">\n    <sfl:method>The Campbell Scientific CS655 derives volumetric water content of porous media from the effect of a changing dialectric constant on electromagnetic waves propagating along a wave guide.</sfl:method>\n    <sfl:observedProperty xlink:href=\"http://sawi.gst.com/nmpa/docs/terms.html#soilTemperature\" />\n    <sfl:unitOfMeasure uom=\"C\" />\n    <sfl:qualifiedBy>\n      <sfl:MeasurementCapability gml:id=\"SoilTemperature\">\n\n        <sfl:accuracy>\n          <sfl:value>\n              <swe:QuantityRange>\n                <swe:uom code=\"C\" />\n                <swe:value>-40 60</swe:value>\n              </swe:QuantityRange>\n            </sfl:value>\n        </sfl:accuracy>\n\n<!-- FIXME: This depends on the A/D device used to read the sensor.  Ex. CS_CR10 or CS_CR10X Period Measurement is used, resolution is on order of 10^-6 m^3 m^-3\n        <sfl:resolution> \n          <swe:Quantity>\n            <swe:uom code=\"m\" />\n            <swe:value>.00025</swe:value>\n          </swe:Quantity>\n        </sfl:resolution>\n-->\n\n      <sfl:extension>\n        <!-- none at this time -->\n      </sfl:extension>\n\n      </sfl:MeasurementCapability>\n    </sfl:qualifiedBy>\n    <sfl:implementedBy xlink:href=\"https://mesonet.agron.iastate.edu/metadata/xml/sc_CS_CS655.xml\" />\n  </sfl:SensingProcedure>\n"
  },
  {
    "path": "htdocs/metadata/xml/sp_CS_TE525.xml",
    "content": "<!-- ================================================================== -->\n<!-- Title:   TE525USW Rain Fall SensingProcedure File                  -->\n<!-- Date:    September 20, 2012                                        -->\n<!-- Author:  H. Brown                                                  -->\n<!-- ================================================================== -->\n\n<sfl:SensingProcedure\nxmlns:xlink=\"http://www.w3.org/1999/xlink\"\nxmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\"\nxmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gts=\"http://www.isotc211.org/2005/gts\"\nxmlns:gsr=\"http://www.isotc211.org/2005/gsr\" xmlns:gss=\"http://www.isotc211.org/2005/gss\"\nxmlns:om=\"http://www.opengis.net/om/2.0\" xmlns:sfl=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"\nxmlns:swe=\"http://www.opengis.net/swe/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\nxsi:schemaLocation=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\" \ngml:id=\"TE525USW_RainFall\">\n    <sfl:method>TE525USW counts the number of tips (via potted reed switch) of a spout of known volume.</sfl:method>\n    <sfl:observedProperty xlink:href=\"http://sawi.gst.com/nmpa/docs/terms.html#rainfall\" />\n    <sfl:unitOfMeasure uom=\"m\" />\n    <sfl:alternativeUnitOfMeasure uom=\"in\" />\n    <sfl:qualifiedBy>\n      <sfl:MeasurementCapability gml:id=\"Rainfall\">\n\n        <sfl:accuracy>\n          <sfl:ComplexConditionalValue>\n            <sfl:condition> <!-- maximum rain fall rate -->\n              <swe:Quantity>\n                <swe:uom code=\"m/hr\" />\n                <swe:value>0.05</swe:value>\n              </swe:Quantity>\n            </sfl:condition>\n            <sfl:value> \n              <swe:Quantity>\n                <swe:uom code=\"%\" />\n                <swe:value>1</swe:value>\n              </swe:Quantity>\n            </sfl:value>\n          </sfl:ComplexConditionalValue>\n        </sfl:accuracy>\n\n        <sfl:resolution>\n          <swe:Quantity>\n            <swe:uom code=\"m\" />\n            <swe:value>0.000254</swe:value>\n          </swe:Quantity>\n        </sfl:resolution>\n\n      <sfl:extension>\n        <!-- none at this time -->\n      </sfl:extension>\n\n      </sfl:MeasurementCapability>\n    </sfl:qualifiedBy>\n    <sfl:implementedBy xlink:href=\"http://sawi.gst.com/nmpa/sensor/characteristic/sc_TE_TE525USW.xml\" />\n  </sfl:SensingProcedure>\n"
  },
  {
    "path": "htdocs/mom.php",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <title>Midwest Observational Mesonet</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta name=\"description\" content=\"\">\n    <meta name=\"author\" content=\"\">\n\n    <!-- Le styles -->\n    <link href=\"/vendor/bootstrap/3.3.7/css/bootstrap.css\" rel=\"stylesheet\">\n</head>\n\n<body>\n    <div class=\"container\">\n\n        <div class=\"page-header\">\n            <h1>Say hello to your new MOM!!!\n                <br /><small>After 12 years, the Iowa Environmental Mesonet\n                    finally expands to become the Midwest Observational Mesonet (MOM).</small>\n            </h1>\n            <div class=\"thumbnail\">\n                <img src=\"/images/mom.png\" alt=\"\">\n                <p>Figure 1: Domain of data collected. Note: <i>Due to a long standing feud between Iowa and Missoura, Missoura is\n                        not included.</i></p>\n            </div>\n        </div>\n\n        <div class=\"marketing\">\n\n            <h1>Our Moto: Don't say anything bad about your MOM.</h1>\n            <p class=\"marketing-byline\">We are not just a new name, we are also\n                announcing these new capabilities.</p>\n        </div>\n        <div class=\"container\">\n            <div class=\"row\">\n                <div class=\"col-md-3\">\n                    <img class=\"img-rounded img-responsive\" src=\"http://upload.wikimedia.org/wikipedia/en/thumb/d/df/DeannaTroi.jpg/250px-DeannaTroi.jpg\">\n                    <h2>Telepathic Data Collection</h2>\n                    <p>Using computers and Al Gore's Internet to collect data is so last decade. Our local betazoid and new employee Deanna Troi, will collect data telepathically.</p>\n                </div>\n                <div class=\"col-md-3\">\n                    <img class=\"img-rounded img-responsive\" src=\"http://upload.wikimedia.org/wikipedia/commons/thumb/3/33/MQ-9_Reaper_-_090609-F-0000M-777.JPG/300px-MQ-9_Reaper_-_090609-F-0000M-777.JPG\">\n                    <h2>More webcams!</h2>\n                    <p>Our newly acquired fleet of drones will show weather and your illegal backyard swimming pool like never before. When you see one flying, know that your MOM is looking out for you.</p>\n                </div>\n                <div class=\"col-md-3\">\n                    <img class=\"img-rounded img-responsive\" src=\"/images/mom_extrap.png\">\n                    <h2>Extrapolated Data for Mars</h2>\n                    <p>Other planets have weather data too and our state-of-the-art extrapolation software has generated the last 100 years of data on Mars using only data from Iowa.</p>\n                </div>\n                <div class=\"col-md-3\">\n                    <img class=\"img-rounded img-responsive\" src=\"/images/mom_tornado_anim.gif\">\n                    <h2>Report tornados via US Mail</h2>\n                    <p>There are many ways to report seeing a tornado, but never before via US Mail. See a tornado? Send it to us via US Mail and we'll relay to the NWS.</p>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"row-fluid\">\n            <div class=\"span12\">\n                <p><a href=\"/index.php?old\" class=\"btn btn-primary\">OK, take me back to the IEM Homepage</a>\n            </div>\n        </div>\n\n    </div>\n    <script src=\"/vendor/bootstrap/3.3.7/js/bootstrap.min.js\"></script>\n</body>\n\n</html>"
  },
  {
    "path": "htdocs/mos/csv.php",
    "content": "<?php\nputenv(\"TZ=UTC\");\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\n\n$station = get_str404(\"station\", \"KAMW\");\n$ts = array_key_exists(\"valid\", $_GET) ? strtotime(xssafe($_GET[\"valid\"])) : time();\n$year = intval(date(\"Y\", $ts));\nif ($year < 2007) {\n    exit();\n}\n\n$mos = iemdb(\"mos\");\npg_query($mos, \"SET TIME ZONE 'UTC'\");\n\nif (array_key_exists(\"runtime\", $_GET) && array_key_exists(\"model\", $_GET)) {\n    $ts = strtotime($_GET[\"runtime\"]);\n    $year = intval(date(\"Y\", $ts));\n    if ($year < 2007) {\n        die(\"Bad runtime '\" . $_GET[\"runtime\"] . \"'\");\n    }\n    $stname2 = iem_pg_prepare($mos, \"select *, t06_1 ||'/'||t06_2 as t06,\n                 t12_1 ||'/'|| t12_2 as t12  from t{$year} WHERE station = $1\n                 and runtime = $2 and model = $3 ORDER by ftime ASC\");\n    $rs = pg_execute($mos, $stname2, array(\n        $station, date(\"Y-m-d H:i\", $ts),\n        $_GET[\"model\"]\n    ));\n} else {\n    $stname = iem_pg_prepare($mos, \"select *, t06_1 ||'/'||t06_2 as t06,\n    t12_1 ||'/'|| t12_2 as t12 from t{$year} WHERE station = $1\n    and ftime >= $2 and ftime <= ($2 + '10 days'::interval) ORDER by ftime ASC\");\n    $rs = pg_execute($mos, $stname, array($station, date(\"Y-m-d H:i\", $ts)));\n}\n\nheader(\"Content-type: text/plain\");\n\n$ar = array(\n    \"station\", \"model\", \"runtime\", \"ftime\", \"n_x\", \"tmp\", \"dpt\",\n    \"cld\", \"wdr\", \"wsp\", \"p06\", \"p12\", \"q06\", \"q12\", \"t06\", \"t12\",\n    \"snw\", \"cig\", \"vis\", \"obv\", \"poz\", \"pos\", \"typ\", \"sky\", \"swh\", \"lcb\",\n    \"i06\", \"slv\", \"s06\", \"pra\", \"ppl\", \"psn\", \"pzr\", \"t03\", \"gst\"\n);\n\necho implode(\",\", $ar) . \"\\n\";\nwhile ($row = pg_fetch_assoc($rs)) {\n    foreach ($ar as $k => $v) {\n        echo sprintf(\"%s,\", $row[$v]);\n    }\n    echo \"\\n\";\n}\n"
  },
  {
    "path": "htdocs/mos/dl.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/forms.php\";\n\n$year1 = get_int404(\"year1\", date(\"Y\", time() + 86400));\n$year2 = get_int404(\"year2\", date(\"Y\", time() + 86400));\n$month1 = get_int404(\"month1\", date(\"m\", time() + 86400));\n$month2 = get_int404(\"month2\", date(\"m\", time() + 86400));\n$day1 = get_int404(\"day1\", date(\"d\", time() + 86400));\n$day2 = get_int404(\"day2\", date(\"d\", time() + 86400));\n$hour1 = get_int404(\"hour1\", 0);\n$hour2 = get_int404(\"hour2\", 12);\n$model = get_str404(\"model\", \"GFS\");\n$station = strtoupper(get_str404(\"station\", \"KAMW\"));\n\n$url = sprintf(\n    \"/cgi-bin/request/mos.py?year1=%s&year2=%s&month1=%s&month2=%s&\" .\n    \"day1=%s&day2=%s&hour1=%s&hour2=%s&model=%s&station=%s\",\n    $year1, $year2, $month1, $month2, $day1, $day2, $hour1, $hour2,\n    $model, $station,\n);\nheader(\"Location: $url\");\n"
  },
  {
    "path": "htdocs/mos/fe.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\nrequire_once \"../../include/mos_lib.php\";\n\n$year1 = get_int404(\"year1\", date(\"Y\"));\n$year2 = get_int404(\"year2\", date(\"Y\"));\n$month1 = get_int404(\"month1\", date(\"m\"));\n$month2 = get_int404(\"month2\", date(\"m\"));\n$day1 = get_int404(\"day1\", date(\"d\"));\n$day2 = get_int404(\"day2\", date(\"d\"));\n$model = strtoupper(get_str404(\"model\", \"GFS\"));\n$station = strtoupper(get_str404(\"station\", \"KAMW\"));\n\n$t->title = \"NWS MOS Download Interface\";\n\n$ys1 = yearSelect(2000,$year1, \"year1\");\n$ms1 = monthSelect($month1, \"month1\");\n$ds1 = daySelect($day1, \"day1\");\n$ys2 = yearSelect(2000,$year1, \"year2\");\n$ms2 = monthSelect($month1, \"month2\");\n$ds2 = daySelect($day1, \"day2\");\n\n$table = \"\";\n/** @disregard false positive for mosvars being undefined */\nforeach($mosvars as $k => $v){\n    $table .= sprintf(\"<tr><th>%s</th><td>%s</td></tr>\\n\", $k, $v);\n}\n$ar = Array(\n    \"GFS\" => \"AVN/GFS\",\n    \"MEX\" => \"GFS-X (MEX)\",\n    \"NAM\" => \"Eta/NAM\",\n    \"NBE\" => \"NBE\",\n    \"NBS\" => \"NBS\",\n);\n$modselect = make_select(\"model\", $model, $ar);\n\n$t->content = <<<EOM\n<h3>NWS MOS Download Interface</h3>\n\n<p>This page allows you to download from the IEM's archive of NWS MOS\ndata. The archive goes back to June 2000. You can set the start and end times\nto the same time to get that particular run.</p>\n\n<p>For dates after 25 Feb 2020, the NBS was only archived for the 1, 7, 13,\nand 19 UTC cycles as per guidance from the MOS developers. For dates before\n25 Feb 2020, the NBS was only archived for 0, 7, 12, and 19 UTC runs.</p>\n\n<p><a href=\"/cgi-bin/request/mos.py?help\" class=\"btn btn-secondary\">\n<i class=\"bi bi-file-earmark-text\"></i> Backend documentation</a> exists for those wishing\nto script against this service.</p>\n\n<div class=\"card mb-4\">\n    <div class=\"card-header\">\n        <h4 class=\"card-title mb-0\">Data Request Form</h4>\n    </div>\n    <div class=\"card-body\">\n        <form name=\"selector\" action=\"/cgi-bin/request/mos.py\" method=\"GET\">\n            <div class=\"row mb-3\">\n                <div class=\"col-md-6\">\n                    <label for=\"station\" class=\"form-label\">Enter 4-Char Station ID:</label>\n                    <input type=\"text\" id=\"station\" name=\"station\" value=\"{$station}\" class=\"form-control\" maxlength=\"4\" placeholder=\"e.g., KAMW\">\n                </div>\n                <div class=\"col-md-6\">\n                    <label for=\"model\" class=\"form-label\">Select Model:</label>\n                    {$modselect}\n                </div>\n            </div>\n\n            <div class=\"row mb-3\">\n                <div class=\"col-12\">\n                    <h5>Start Date</h5>\n                </div>\n                <div class=\"col-md-3\">\n                    <label class=\"form-label\">Year:</label>\n                    {$ys1}\n                </div>\n                <div class=\"col-md-3\">\n                    <label class=\"form-label\">Month:</label>\n                    {$ms1}\n                </div>\n                <div class=\"col-md-3\">\n                    <label class=\"form-label\">Day:</label>\n                    {$ds1}\n                </div>\n                <div class=\"col-md-3\">\n                    <label for=\"hour1\" class=\"form-label\">Hour (UTC):</label>\n                    <select name=\"hour1\" id=\"hour1\" class=\"form-select\">\n                        <option value=\"0\">00 UTC</option>\n                        <option value=\"1\">01 UTC</option>\n                        <option value=\"6\">06 UTC</option>\n                        <option value=\"7\">07 UTC</option>\n                        <option value=\"12\">12 UTC</option>\n                        <option value=\"13\">13 UTC</option>\n                        <option value=\"18\">18 UTC</option>\n                        <option value=\"19\">19 UTC</option>\n                    </select>\n                </div>\n            </div>\n\n            <div class=\"row mb-3\">\n                <div class=\"col-12\">\n                    <h5>End Date (inclusive)</h5>\n                </div>\n                <div class=\"col-md-3\">\n                    <label class=\"form-label\">Year:</label>\n                    {$ys2}\n                </div>\n                <div class=\"col-md-3\">\n                    <label class=\"form-label\">Month:</label>\n                    {$ms2}\n                </div>\n                <div class=\"col-md-3\">\n                    <label class=\"form-label\">Day:</label>\n                    {$ds2}\n                </div>\n                <div class=\"col-md-3\">\n                    <label for=\"hour2\" class=\"form-label\">Hour (UTC):</label>\n                    <select name=\"hour2\" id=\"hour2\" class=\"form-select\">\n                        <option value=\"0\">00 UTC</option>\n                        <option value=\"1\">01 UTC</option>\n                        <option value=\"6\">06 UTC</option>\n                        <option value=\"7\">07 UTC</option>\n                        <option value=\"12\">12 UTC</option>\n                        <option value=\"13\">13 UTC</option>\n                        <option value=\"18\">18 UTC</option>\n                        <option value=\"19\">19 UTC</option>\n                    </select>\n                </div>\n            </div>\n\n            <div class=\"row\">\n                <div class=\"col-12\">\n                    <button type=\"submit\" class=\"btn btn-primary btn-lg\">\n                        <i class=\"bi bi-download\"></i> Generate Data\n                    </button>\n                </div>\n            </div>\n        </form>\n    </div>\n</div>\n\n<div class=\"card\">\n    <div class=\"card-header\">\n        <h4 class=\"card-title mb-0\">Description of MOS Variables</h4>\n    </div>\n    <div class=\"card-body\">\n        <div class=\"table-responsive\">\n            <table class=\"table table-striped table-hover\">\n                <thead class=\"table-dark\">\n                    <tr>\n                        <th>Variable</th>\n                        <th>Description</th>\n                    </tr>\n                </thead>\n                <tbody>\n                    {$table}\n                </tbody>\n            </table>\n        </div>\n    </div>\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/mos/index.php",
    "content": "<?php\ndefine(\"IEM_APPID\", 74);\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Model Output Statistics (MOS)\";\n$t->iem_resource = \"MOS\";\n$t->content = <<<EOM\n\n<h3>Archived Model Output Statistics (MOS)</h3>\n\n<p>The National Weather Service operates a number of operational\nweather prediction models.  These models produce a gridded forecast that is\nthen processed thru a series of equations (Model Output Statistics) to\nproduce a site specific forecast. You can find out more about\n<a href=\"https://vlab.noaa.gov/web/mdl\">MOS</a> on the\nNWS's website.  The IEM maintains an interactive MOS archive to support\nlocal research and makes it available for others to use as well.</p>\n\n<p><strong>Archive Status:</strong>\n<table class=\"table table-striped\">\n<thead><tr><th>Model</th><th>Start</th><th>End</th></tr></thead>\n<tbody>\n<tr><th>AVN</th><td>1 June 2000</td><td>16 Dec 2003</td></tr>\n<tr><th>ETA</th><td>24 Feb 2002</td><td>9 Dec 2008</td></tr>\n<tr><th>GFS</th><td>16 Dec 2003</td><td>--Realtime--</td></tr>\n<tr><th>GFS LAMP (abbr LAV) [0, 6, 12, 18]</th><td>12 Jul 2020</td><td>--Realtime--</td></tr>\n<tr><th>GFS Extended (abbr MEX)</th><td>12 Jul 2020</td><td>--Realtime--</td></tr>\n<tr><th>NAM</th><td>9 Dec 2008</td><td>--Realtime--</td></tr>\n<tr><th>NBS [0, 7, 12, 19z]</th><td>7 Nov 2018</td><td>25 Feb 2020</td></tr>\n<tr><th>NBS [1, 7, 13, 19z]</th><td>26 Feb 2020</td><td>5 May 2026</td></tr>\n<tr><th>NBE [1, 7, 13, 19z]</th><td>23 Jul 2020</td><td>5 May 2026</td></tr>\n<tr><th>NBS [0, 6, 12, 18z]</th><td>5 May 2026</td><td>--Realtime--</td></tr>\n<tr><th>NBE [0, 6, 12, 18z]</th><td>5 May 2026</td><td>--Realtime--</td></tr>\n</tbody>\n</table>\n<br />The MOS products are processed in realtime and immediately available from\nthe applications listed below.\n\n<h3>Current Tools:</h3>\n<ul>\n <li><a href=\"/wx/afos/\">ASCII Data Tables</a>\n <br />The raw text-based MOS data comes in collectives with multiple sites\n found within one product.  The IEM splits these and then assigns 6 character\n AWIPS/AFOS like IDs to them, such that you can easily retrieve the raw ASCII\n MOS data.  The general identifier form is <code>&lt;model&gt;&lt;3-char station&gt;</code>.\n For example, <code>LAVDSM</code> for GFS LAMP for Des Moines.</li>\n\n <li><a href=\"/cgi-bin/afos/retrieve.py?pil=LAVDSM\">Sample link to latest GFS LAMP for KDSM</a>\n <br />Please see the discussion above about the identifiers used.  This page just\n provides the text and not much else.  Best for if you want to bookmark direct links\n or do some of your own MOS parsing, gasp.  Just adjust the <code>pil=</code> value\n as you see fit.</li>\n\n <li><a href=\"table.phtml\">Interactive MOS Tables</a>\n  <br />Generates a simple table of how a variable changes over time\n   and by model run.</li>\n <li><a href=\"https://meteor.geol.iastate.edu/~ckarsten/bufkit/image_loader.phtml\">Meteogram Generator</a>\n  <br />Fancy application to generate graphs of current MOS data.</li>\n <li><a href=\"/api/1/docs#/default/service_mos__fmt__get\">Comma Delimited / JSON output</a>\n  <br />Simple web service provides csv/json data for one or more sites for a\n  given model and optional runtime.  An example URL call would be:<br />\n  <pre>\n/api/1/mos.txt?station=KAMW&runtime=2009-01-10%2012:00Z&model=GFS  (explicit)\n/api/1/mos.txt?station=KAMW&model=GFS  (last available GFS run for Ames in csv)\n/api/1/mos.json?station=KAMW&model=GFS  (last available GFS run for Ames in JSON)\n/api/1/mos.txt?station=KDSM&station=KAMW&model=GFS  (last available GFS run for Ames and Des Moines)\n</pre></li>\n <li><a href=\"fe.phtml\">Download the raw data!</a>\n  <br />This application returns the raw MOS data for a location and time\n  period of your choice.</li>\n <li><a href=\"/plotting/auto/?q=37\">Monthly Plots of Station Temperature Forecasts</a>\n  <br />This application creates a graph of daily MOS forecasts and actual\n        temperatures for a month and station of your choice.</li>\n</ul>\n\n<p><strong>Note:</strong> MOS variables are stored as their raw encodings\nin the text product, except <strong>wdr</strong> (wind direction) which is\nmultiplied by 10 for its true value.\n\n<h3>Current Plots</h3>\n<div class=\"row\">\n\n<div class=\"col-md-4\">\n<a href=\"/timemachine/?product=51\"><img src=\"/data/conus_gfs_mos_T_bias.png\"\n class=\"img-fluid\" border=\"1\"/></a>\n</div>\n\n<div class=\"col-md-4\">\n<a href=\"/timemachine/?product=52\"><img src=\"/data/conus_nam_mos_T_bias.png\"\n class=\"img-fluid\" border=\"1\"/></a>\n</div>\n\n<div class=\"col-md-4\">\n<a href=\"/timemachine/?product=50\"><img src=\"/data/conus_nbs_mos_T_bias.png\"\n class=\"img-fluid\" border=\"1\"/></a>\n</div>\n\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/mos/table.phtml",
    "content": "<?php\nputenv(\"TZ=UTC\");\ndefine(\"IEM_APPID\", 153);\nrequire_once \"../../config/settings.inc.php\";\ndate_default_timezone_set('UTC');\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->iemselect2 = TRUE;\nrequire_once \"../../include/mos_lib.php\";\n$mosdb = iemdb(\"mos\");\npg_query($mosdb, \"SET TIME ZONE 'UTC'\");\n\n$year = get_int404(\"year\", date(\"Y\", time() + 86400));\n$month = get_int404(\"month\", date(\"m\", time() + 86400));\n$day = get_int404(\"day\", date(\"d\", time() + 86400));\n$model = get_str404(\"model\", \"GFS\", 3);\n$station = get_str404(\"station\", \"KAMW\", 6);\n$vname = strtolower(get_str404(\"vname\", \"tmp\"));\n/** @disregard complaint about mosvars being undefined */\nif (!array_key_exists($vname, $mosvars)) {\n    $vname = \"tmp\";\n}\n$models = array(\n    \"GFS\" => \"AVN/GIS\",\n    \"MEX\" => \"GFS Extended (MEX)\",\n    \"NAM\" => \"NAM\",\n    \"ETA\" => \"ETA\",\n    \"NBS\" => \"NBS\",\n    \"NBE\" => \"NBE\",\n    \"LAV\" => \"LAV\",\n);\nif (!array_key_exists($model, $models)) {\n    $model = \"NBE\";\n}\n\n$centeredTime = new DateTimeImmutable(\"$year-$month-$day 12:00:00\", new DateTimeZone('UTC'));\n$namSwitch = new DateTimeImmutable(\"2008-12-09 12:00:00\", new DateTimeZone('UTC'));\n$gfsSwitch = new DateTimeImmutable(\"2003-12-16 12:00:00\", new DateTimeZone('UTC'));\n// When archival changed from +1 to standard synop hours\n$nbmSwitch = new DateTimeImmutable(\"2026-05-07 13:00:00\", new DateTimeZone('UTC'));\nif ($model == \"NAM\" && $centeredTime < $namSwitch) {\n    $model = \"ETA\";\n}\nif ($model == \"GFS\" && $centeredTime < $gfsSwitch) {\n    $model = \"AVN\";\n}\n\n// Compute the window of time to look for model runs\n$startDT = $centeredTime->sub(new DateInterval('P3DT12H'));\n$endDT = $centeredTime->add(new DateInterval('P1D'));\n\nif ($model == \"MEX\" || $model == \"NBE\") {\n    $endDT = $centeredTime->add(new DateInterval('P7D'));\n}\n\n// Archive interval in hours\n$runsper = array(\n    \"GFS\" => 6,\n    \"AVN\" => 6,\n    \"NAM\" => 12,\n    \"ETA\" => 12,\n    \"MEX\" => 12,\n    \"NBE\" => 6,\n    \"NBS\" => 6,\n    \"LAV\" => 6\n);\n// Offset from hour modulo 6 for some models\n// So 0z becomes 1z\n$hroffset = array();\nif ($centeredTime < $nbmSwitch) {\n    $hroffset[\"NBS\"] = 1;\n    $hroffset[\"NBE\"] = 1;\n}\n// compute the run times available between the start and end times\n$runtimes = array();\n$runtimeParamValues = array();\n$runtimeEpochs = array();\n$sts = $startDT->getTimestamp();\n$ets = $endDT->getTimestamp();\n$hroff = isset($hroffset[$model]) ? $hroffset[$model] : 0;\n$sts = $sts + (($sts / 3600) % $runsper[$model] + $hroff) * 3600;\nfor ($now = $sts; $now <= $ets; $now += (3600 * $runsper[$model])) {\n    $runtimeDT = (new DateTimeImmutable(\"@$now\"))->setTimezone(\n        new DateTimeZone('UTC')\n    );\n    $s = $runtimeDT->format(\"Y-m-d H:i\");\n    $runtimes[] = $s;\n    $runtimeParamValues[] = $runtimeDT->format(\"Y-m-d\\\\TH:i:s\\\\Z\");\n    $runtimeEpochs[] = $runtimeDT->getTimestamp();\n}\n\n/** @var array<string, array> $data */\n$data = array();\n$table = sprintf(\n    \"<div class=\\\"card shadow-sm border-0 mb-4\\\">\" .\n        \"<div class=\\\"card-header bg-body-tertiary\\\">\" .\n        \"<div class=\\\"d-flex flex-wrap align-items-center justify-content-between gap-2\\\">\" .\n        \"<h2 class=\\\"h5 mb-0\\\">[%s] %s MOS %s</h2>\" .\n        \"<span class=\\\"badge text-bg-secondary\\\">Runs near %sZ</span>\" .\n        \"</div></div><div class=\\\"card-body p-0\\\">\",\n    $station,\n    $model,\n    strtoupper($vname),\n    $centeredTime->format(\"Y-m-d H\")\n);\n$table .= sprintf(\n    \"<table class=\\\"table table-sm table-bordered table-striped table-hover mb-0\\\">\" .\n        \"<thead class=\\\"table-light sticky-top\\\"><tr><th scope=\\\"col\\\"></th><th scope=\\\"col\\\" colspan=\\\"%s\\\">\" .\n        \"Model Run Initialized at (UTC)</th></tr><tr><th scope=\\\"col\\\" class=\\\"text-nowrap\\\">Valid (UTC)</th>\",\n    sizeof($runtimes)\n);\nforeach ($runtimes as $i => $s) {\n    $table .= sprintf(\n        \"<th scope=\\\"col\\\" class=\\\"text-nowrap\\\">%sZ</th>\",\n        date('d/H', $runtimeEpochs[$i])\n    );\n    $data[$s] = array();\n}\n$table .= \"</tr></thead><tbody>\\n\";\n\n$stname = iem_pg_prepare($mosdb, \"SELECT *, t06_1 ||'/'||t06_2 as t06, \" .\n    \"t12_1 ||'/'|| t12_2 as t12 from alldata WHERE \" .\n    \"runtime = ANY($1::timestamptz[]) and station = $2 and model = $3\");\n$datestrs = \"{\" . implode(\",\", $runtimeParamValues) . \"}\";\n$rs = pg_execute(\n    $mosdb,\n    $stname,\n    array($datestrs, $station, $model));\nwhile ($row = pg_fetch_assoc($rs)) {\n    $data[substr($row[\"runtime\"], 0, 16)][substr($row[\"ftime\"], 0, 16)] = $row[$vname];\n}\n\n// The table is oriented with columns being sequential model runs\n// and rows being sequential valid times.  To make things simple,\n// just iterate over every hour between the start and end times\nfor ($now = $sts; $now <= ($ets + 3 * 86400); $now += 3600) {\n    $thisrow = sprintf(\"<tr><th scope=\\\"row\\\" class=\\\"text-nowrap\\\">%sZ</th>\", date('d/H', $now));\n    $allnulls = TRUE;\n    $lookup = date('Y-m-d H:i', $now);\n    foreach ($runtimes as $k => $s) {\n        $val = null;\n        if (array_key_exists($lookup, $data[$s])) {\n            $val = $data[$s][$lookup];\n        }\n        if (!is_null($val)) {\n            $allnulls = FALSE;\n        }\n        $thisrow .= sprintf(\"<td>%s</td>\", $val);\n    }\n    $thisrow .= \"</tr>\\n\";\n    if (!$allnulls) {\n        $table .= $thisrow;\n    }\n}\n$table .= \"</tbody></table></div></div>\";\n\n$t->title = \"Model Output Statistics Table for $station\";\n\n/** @disregard complaint about mosvars being undefined */\n$variableSelect = make_select(\n    \"vname\",\n    $vname,\n    $mosvars,\n    \"\",\n    \"form-select iemselect2\",\n    FALSE,\n    TRUE,\n    TRUE,\n    array(\"id\" => \"vname\")\n);\n$modelSelect = make_select(\n    \"model\",\n    $model,\n    $models,\n    \"\",\n    \"form-select\",\n    FALSE,\n    FALSE,\n    TRUE,\n    array(\"id\" => \"model\")\n);\n$yearSelect = str_replace(\n    \"<select\",\n    \"<select class=\\\"form-select\\\" id=\\\"year\\\"\",\n    yearSelect(2000, $year)\n);\n$monthSelect = str_replace(\n    \"<select\",\n    \"<select class=\\\"form-select\\\" id=\\\"month\\\"\",\n    monthSelect($month)\n);\n$daySelect = str_replace(\n    \"<select\",\n    \"<select class=\\\"form-select\\\" id=\\\"day\\\"\",\n    daySelect($day)\n);\n\n$content = <<<EOM\n<nav aria-label=\"breadcrumb\" class=\"mb-3\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"/mos/\">Model Output Statistics</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">Single Variable Data Table</li>\n    </ol>\n</nav>\n\n<div class=\"alert alert-info mb-4\" role=\"alert\">\n    This page compares a single MOS variable for one forecast point across multiple model runs,\n    making it easier to see forecast trends over time. Use four-character station IDs (for example, KAMW).\n</div>\n\n<div class=\"card shadow-sm border-0 mb-4\">\n    <div class=\"card-header bg-primary-subtle\">\n        <h1 class=\"h5 mb-0\">MOS Table Controls</h1>\n    </div>\n    <div class=\"card-body\">\n        <form name=\"updator\" class=\"row g-3 align-items-end\">\n            <div class=\"col-md-3\">\n                <label for=\"station\" class=\"form-label\">Station</label>\n                <input id=\"station\" type=\"text\" name=\"station\" value=\"$station\" class=\"form-control\" maxlength=\"6\" required>\n            </div>\n            <div class=\"col-md-5\">\n                <label for=\"vname\" class=\"form-label\">Variable</label>\n                $variableSelect\n            </div>\n            <div class=\"col-md-4\">\n                <label for=\"model\" class=\"form-label\">Model</label>\n                $modelSelect\n            </div>\n\n            <div class=\"col-sm-4 col-md-2\">\n                <label for=\"year\" class=\"form-label\">Year</label>\n                $yearSelect\n            </div>\n            <div class=\"col-sm-4 col-md-2\">\n                <label for=\"month\" class=\"form-label\">Month</label>\n                $monthSelect\n            </div>\n            <div class=\"col-sm-4 col-md-2\">\n                <label for=\"day\" class=\"form-label\">Day</label>\n                $daySelect\n            </div>\n            <div class=\"col-md-6 d-grid d-md-flex justify-content-md-end\">\n                <button type=\"submit\" class=\"btn btn-primary px-4\">Generate Table</button>\n            </div>\n        </form>\n    </div>\n</div>\nEOM;\n\n$content .= $table;\n$t->content = $content;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/my/current.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 93);\n\nrequire_once \"../../include/mlib.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/myview.php\";\n\n$metar = isset($_GET['metar']) ? xssafe($_GET[\"metar\"]) : \"no\";\n$refresh = isset($_REQUEST[\"refresh\"]) ? strtolower(xssafe($_REQUEST[\"refresh\"])) : 'yes';\n$sortcol = isset($_GET[\"sortcol\"]) ? xssafe($_GET[\"sortcol\"]) : \"ts\";\n$sortdir = isset($_GET[\"sortdir\"]) ? xssafe($_GET['sortdir']) : 'asc';\n$rsortdir = ($sortdir == 'asc') ? 'desc' : 'asc';\n$expiry = 60 * 60 * 24 * 100; // 100 days\n\n$t = new MyView();\n// Clear duplicates from cookies\n$stations = isset($_COOKIE[\"stations\"]) ? array_unique(explode(\",\", $_COOKIE[\"stations\"])) : array();\n$st = isset($_GET[\"st\"]) ? $_GET[\"st\"] : \"\";\n$str = isset($_GET[\"str\"]) ? $_GET[\"str\"] : \"\";\n\nif ($st != \"\") {\n    foreach ($st as $key => $value) {\n        if (strlen($value) > 0 && !in_array($value, $stations)) {\n            $stations[] = $value;\n        }\n    }\n}\nif ($str != \"\") {\n    foreach ($str as $key => $value) {\n        if (($key2 = array_search($value, $stations)) !== false) {\n            unset($stations[$key2]);\n        }\n    }\n}\nsetcookie(\"stations\", implode(\",\", $stations), time() + $expiry, \"/my/\");\n\n$t->title = \"My IEM Current Conditions\";\nif ($refresh == 'yes') {\n    $t->refresh = 60;\n}\n$t->current_network = \"My Favorites\";\n\nif (strlen($sortcol) == 0) {\n    $sortcol = \"ts\";\n}\n$vals = array(\n    \"valid\" => \"Observation Time\", \"tmpf\" => \"Temperature\",\n    \"dwpf\" => \"Dew Point\", \"pres\" => \"Altimeter\", \"relh\" => \"Relative Humidity\",\n    \"sknt\" => \"Wind Speed\", 12 => \"20 min Gust\",\n    \"gust\" => \"Peak Gust Today\", \"gtim\" => \"Time of Peak Gust\",\n    \"pday\" => \"Today's Precipitation\", \"feel\" => \"Feels Like\",\n    \"pmonth\" => \"Month's Precipitation\", \"phour\" => \"Hourly Precip\",\n    \"tmpf0\" => \"Sensor 1 - Temp [F]\",  \"name\" => \"Station Name\",\n    \"tmpf1\" => \"Sensor 2 - Temp [F]\",\n    \"tmpf2\" => \"Sensor 3 - Temp [F]\",\n    \"tmpf3\" => \"Sensor 4 - Temp [F]\",\n    \"dry0\" => \"Sensor 1 - Cond [F]\",\n    \"dry1\" => \"Sensor 2 - Cond [F]\",\n    \"dry2\" => \"Sensor 3 - Cond [F]\",\n    \"dry3\" => \"Sensor 4 - Cond [F]\",\n    \"ts\" => \"Observation Time\", \"min_tmpf\" => \"Low Air Temperature Today\",\n    \"vsby\" => \"Visibility\", \"max_tmpf\" => \"High Air Temperature Today\",\n    \"max_sknt_ts\" => \"Time of Peak Gust\",\n    \"max_sknt\" => \"Wind Gust [knots]\", \"peak\" => \"Peak Wind Gust [kts]\",\n    \"peak_ts\" => \"Time of Peak Wind Gust\",\n    \"city\" => \"Site Name\"\n);\n\n$ar = array(\n    \"no\" => \"No\",\n    \"yes\" => \"Yes\"\n);\n$mselect = make_select(\"metar\", $metar, $ar);\n$ar = array(\n    \"no\" => \"No\",\n    \"yes\" => \"Yes\"\n);\n$refresh_select = make_select(\"refresh\", $refresh, $ar);\n\n// Build a listing of stations to get data for\n$reqstations = \"\";\n$doSF = FALSE;\nforeach ($stations as $key => $value) {\n    if (strpos($value, '_SF') == 5) {\n        $value = substr($value, 0, 5);\n        $doSF = TRUE;\n    }\n    $reqstations .= sprintf(\"station=%s&\", $value);\n}\nif ($reqstations != \"\") {\n    $jdata = file_get_contents($INTERNAL_BASEURL . \"/api/1/currents.json?$reqstations\");\n    $jobj = json_decode($jdata, $assoc = TRUE);\n} else {\n    $jobj = array(\"data\" => array());\n}\n\n$mydata = array();\nforeach ($jobj[\"data\"] as $bogus => $iemob) {\n    $value = $iemob[\"station\"];\n    $mydata[$value] = $iemob;\n    $mydata[$value][\"ts\"] = strtotime($mydata[$value][\"local_valid\"]);\n    $mydata[$value][\"sped\"] = $mydata[$value][\"sknt\"] * 1.15078;\n    $mydata[$value][\"relh\"] = relh(\n        f2c($mydata[$value][\"tmpf\"]),\n        f2c($mydata[$value][\"dwpf\"])\n    );\n\n    $mydata[$value][\"peak_ts\"] = 0;\n    $mydata[$value][\"peak\"] = 0;\n    if ($mydata[$value][\"max_gust\"] > $mydata[$value][\"max_sknt\"]) {\n        $mydata[$value][\"peak\"] = $mydata[$value][\"max_gust\"];\n        if ($mydata[$value][\"local_max_gust_ts\"] > 0) {\n            $mydata[$value][\"peak_ts\"] = strtotime($mydata[$value][\"local_max_gust_ts\"]);\n        }\n    } else {\n        $mydata[$value][\"peak\"] = $mydata[$value][\"max_sknt\"];\n        if ($mydata[$value][\"local_max_sknt_ts\"] > 0) {\n            $mydata[$value][\"peak_ts\"] = strtotime($mydata[$value][\"local_max_sknt_ts\"]);\n        }\n    }\n    if ($mydata[$value][\"pday\"] < 0) $mydata[$value][\"pday\"] = \"\";\n    if ($mydata[$value][\"phour\"] < 0) $mydata[$value][\"phour\"] = \"\";\n    if ($mydata[$value][\"vsby\"] < 0) $mydata[$value][\"vsby\"] = \"\";\n}\n\nif (sizeof($mydata) == 0) {\n    $t->content = \"<p>There are currently 0 sites in your selected list.  Please visit\n    one of the data network pages listed above and add sites to your favorites\n    list.</p>\";\n    $t->render('sortables.phtml');\n    die();\n}\n$uri = \"current.phtml?sortdir={$rsortdir}&amp;refresh=$refresh&amp;metar=$metar&amp;sortcol=\";\n\n$finalA = aSortBySecondIndex($mydata, $sortcol, $sortdir);\n$now = time();\n$cgiStr = \"\";\n$i = 0;\n$table = \"\";\n\nforeach ($finalA as $key => $val) {\n    $i++;\n    $parts = $finalA[$key];\n    $cgiStr .= \"st[]=\" . $key . \"&\";\n    $tdiff = $now - $parts[\"ts\"];\n    $table .= \"<tr\";\n    if ($i % 2 == 0)  $table .= \" bgcolor='#eeeeee'\";\n    $table .= \">\\n\n    <td><input type=\\\"checkbox\\\" name=\\\"str[]\\\" value=\\\"\" . $key . \"\\\"></td>\n    <th>\" . $parts[\"name\"] . \" [\" . $parts[\"network\"] . \"]</th>\";\n    $table .= \"<td \";\n    $format = \"h:i A\";\n    if ($tdiff > 10000) {\n        $table .= 'bgcolor=\"red\"';\n        $format = \"M d h:i A\";\n    } else if ($tdiff > 3600) {\n        $table .= 'bgcolor=\"green\"';\n    } else {\n    }\n    $table .= \">\" . date($format, $parts[\"ts\"]) . \"</td>\";\n    $table .= sprintf(\"<td>%s</td>\\n\", $parts[\"wxcodes\"]);\n\n    $table .= \"<td align='center'>\" . myround($parts[\"tmpf\"], 0) . \"(<font color=\\\"#ff0000\\\">\" . myround($parts[\"max_tmpf\"], 0) . \"</font>/<font color=\\\"#0000ff\\\">\" . myround($parts[\"min_tmpf\"], 0) . \")</td>\n          <td align='center'>\" . myround($parts[\"dwpf\"], 0) . \"</td>\n          <td>\" . myround($parts[\"feel\"], 0) . \"</td>\n          <td>\" . myround($parts[\"relh\"], 0) . \"</td>\n          <td>\" . $parts[\"alti\"] . \"</td>\n          <td>\" . $parts[\"vsby\"] . \"</td>\n            <td>\" . myround($parts[\"drct\"], 0) . \"</td>\n            <td>\" . myround($parts[\"sknt\"], 0) . \"</td><td>\" . myround($parts[\"peak\"], 0) . \" @ \";\n    $table .= date($format, $parts[\"peak_ts\"]);\n    $table .= \"</td>\n          <td>\" . $parts[\"phour\"] . \"</td>\n          <td>\" . $parts[\"pday\"] . \"</td></tr>\\n\";\n    if ($metar == \"yes\") {\n        $table .= \"<tr\";\n        if ($i % 2 == 0)  $table .= \" bgcolor='#eeeeee'\";\n        $table .= \">\";\n        $table .= \"<td colspan=15 align=\\\"CENTER\\\">\n             <font color=\\\"brown\\\">\" . $parts[\"raw\"] . \"</font></td>\n             </tr>\\n\";\n    }\n}\n\n$content = <<<EOM\n<form name=\"opts\" method=\"GET\" action=\"current.phtml\">\n<input type=\"hidden\" name=\"sortcol\" value=\"{$sortcol}\">\n<input type=\"hidden\" name=\"refresh\" value=\"{$refresh}\">\n<p>\n<table class=\"table table-sm\">\n<tr>\n  <th>View Options:</th>\n  <td>Include METARS (ASOS): {$mselect}</td>\n  <th>Automatically Refresh?</th>\n  <td>{$refresh_select}</td>\n  <td><input type=\"submit\" value=\"Update Settings\"></td>\n</tr></table><p>\n</form>\n\n\n<h3></h3>\n\n<br>Sorted by: <b>({$vals[$sortcol]})</b>  &nbsp; &nbsp; \nClick on a column to sort it.<br>\n\n<form method=\"GET\" action=\"current.phtml\">\n\n<table class=\"table table-striped table-sm table-bordered\">\n<thead>\n<tr>\n\n  <th rowspan=\"2\">DEL</th>\n  <th rowspan=\"2\"><a href=\"{$uri}name\">Station:</a></th>\n  <th rowspan=\"2\"><a href=\"{$uri}ts\">Valid</a></th>\n  <th rowspan=\"2\">Present Wx</th>\n  <th colspan=6></td>\n  <th colspan=\"3\" bgcolor=\"#EEEEEE\">Wind (knots)</th>\n  <th colspan=\"2\" bgcolor=\"#e6e6fa\">Precipitation (inch)</th>\n</tr>\n<tr>\n  <th><a href=\"{$uri}tmpf\">Temp</a> (<a href=\"{$uri}max_tmpf\">Hi</a>/<a href=\"{$uri}min_tmpf\">Lo</a>)</th>\n  <th><a href=\"{$uri}dwpf\">DewP</a></th>\n  <th><a href=\"{$uri}feel\">Feels</a></th>\n  <th><a href=\"{$uri}relh\">RH%</a></th>\n  <th><a href=\"{$uri}pres\">Pres</a></th>\n  <th><a href=\"{$uri}vsby\">Vsby</a></th>\n  <th>Dir</th>\n  <th><a href=\"{$uri}sknt\">Speed</a></th>\n  <th><a href=\"{$uri}peak\">Today Gust</a> \n    <a href=\"{$uri}peak_ts\">@time</a></th>\n  <th><a href=\"{$uri}phour\">Hour</a></th>\n  <th><a href=\"{$uri}pday\">Today</a></th>\n</tr>\n </thead>\n<tbody>\n{$table}\n</tbody>\n</table>\n\n<input type=\"submit\" value=\"Remove Stations\">\n</form>\nEOM;\nif ($doSF) {\n    $sfstations = array();\n    foreach ($stations as $key => $value) {\n        if (strpos($value, '_SF') == 5) {\n            $value = substr($value, 0, 5);\n            if (!array_key_exists($value, $mydata)) {\n                continue;\n            }\n            $sfstations[] = $value;\n\n            $t2 = array(\n                $mydata[$value]['tsf0'], $mydata[$value]['tsf1'],\n                $mydata[$value]['tsf2'], $mydata[$value]['tsf3']\n            );\n            arsort($t2);\n            while (min($t2) == -99.99) {\n                $ba = array_pop($t2);\n                if (sizeof($t2) == 0) break;\n            }\n            if (sizeof($t2) > 0) {\n                while ((max($t2) - min($t2)) > 20) {\n                    $ba = array_pop($t2);\n                }\n                $mydata[$value]['pave_avg'] = array_sum($t2) / sizeof($t2);\n            } else {\n                $mydata[$value]['pave_avg'] = -99.99;\n            }\n        }\n    }\n    $table = \"\";\n    reset($mydata);\n    $finalA = aSortBySecondIndex($mydata, $sortcol);\n    $i = 0;\n    $now = time();\n    foreach ($finalA as $key => $val) {\n        if (!in_array($key, $sfstations)) continue;\n        $parts = $finalA[$key];\n        $i++;\n        $tdiff = $now - $parts[\"ts\"];\n        if ($tdiff > 86400 * 5) {\n            continue;\n        }\n        $table .= \"<tr\";\n        if ($i % 2 == 0)  $table .= \" bgcolor='#eeeeee'\";\n\n        $table .= \">\";\n        $table .= \"<td><input type=\\\"checkbox\\\" name=\\\"str[]\\\" \n            value=\\\"\" . $key . \"_SF\\\"></td>\";\n        $table .= \"<th>\" . $parts[\"name\"] . \"</th>\";\n        $table .= \"<td\";\n        if ($tdiff > 11900) {\n            $table .= ' bgcolor=\"red\">' . date(\"M-d-Y h:i A\", $parts[\"ts\"]) . '</td>';\n        } else if ($tdiff > 7200) {\n            $table .= ' bgcolor=\"orange\">' . date(\"M-d-Y h:i A\", $parts[\"ts\"]) . '</td>';\n        } else if ($tdiff > 3600) {\n            $table .= ' bgcolor=\"green\">' . date(\"h:i A\", $parts[\"ts\"]) . '</td>';\n        } else {\n            $table .= '>' . date(\"h:i A\", $parts[\"ts\"]) . '</td>';\n        }\n        if ($parts[\"tsf0\"] < -90) $tmpf0 = \"M\";\n        else $tmpf0 = myround($parts[\"tsf0\"], 1);\n        if ($parts[\"tsf1\"] < -90) $tmpf1 = \"M\";\n        else $tmpf1 = myround($parts[\"tsf1\"], 1);\n        if ($parts[\"tsf2\"] < -90) $tmpf2 = \"M\";\n        else $tmpf2 = myround($parts[\"tsf2\"], 1);\n        if ($parts[\"tsf3\"] < -90) $tmpf3 = \"M\";\n        else $tmpf3 = myround($parts[\"tsf3\"], 1);\n        if ($parts[\"rwis_subf\"] < -90) $subt = \"M\";\n        else $subt = myround($parts[\"rwis_subf\"], 1);\n        if ($parts[\"pave_avg\"] < -90) $pave_avg = \"M\";\n        else $pave_avg = myround($parts[\"pave_avg\"], 1);\n\n        $table .= \"<td align='center'>{$parts['tmpf']}</td>\n            <td align='center'>{$parts['dwpf']}</td>\n            <td align='center'>{$tmpf0}</td>\n            <td align='center'>{$tmpf1}</td>\n            <td align='center'>{$tmpf2}</td>\n            <td align='center'>{$tmpf3}</td>\n            <td align='center'>{$subt}</td>\n            <td align='center'>{$pave_avg}</td>\n            </tr>\\n\";\n    }\n\n    $content .= <<<EOM\n<h3>RWIS Pavement Conditions</h3>\n<form method=\"GET\" action=\"current.phtml\" name=\"opts2\">\n<input type=\"hidden\" name=\"sortcol\" value=\"{$sortcol}\">\n<input type=\"hidden\" name=\"refresh\" value=\"{$refresh}\">\n<table class=\"table table-striped table-sm table-bordered\">\n<tr>\n  <td rowspan=\"2\">DEL:</td>\n  <th rowspan=\"2\"><a href=\"{$uri}name\">Station:</a></th>\n  <th rowspan=\"2\"><a href=\"{$uri}ts\">Ob Time</a></th>\n  <th colspan=\"2\" bgcolor=\"#acdcda\">Air:</th>\n  <th bgcolor=\"#acdcda\">Sensor 1</th>\n  <th bgcolor=\"#acdcda\">Sensor 2</th>\n  <th bgcolor=\"#acdcda\">Sensor 3</th>\n  <th bgcolor=\"#acdcda\">Sensor 4</th>\n  <td></td>\n  <td></td>\n<tr>\n  \n  <th><a href=\"{$uri}tmpf\">Temp</a></th>\n  <th><a href=\"{$uri}dwpf\">Dew P</a></th>\n  <th><a href=\"{$uri}tsf0\">Temp</a></th>\n  <th><a href=\"{$uri}tsf1\">Temp</a></th>\n  <th><a href=\"{$uri}tsf2\">Temp</a></th>\n  <th><a href=\"{$uri}tsf3\">Temp</a></th>\n  <th><a href=\"{$uri}rwis_subf\">Sub T</a></th>\n  <th><a href=\"{$uri}pave_avg\">Ave Surface Temp</a> [<b>2</b>]\n</th>\n{$table}\n</table>\n<input type=\"submit\" value=\"Remove Stations\">\n</form>\nEOM;\n}\n\n$content .= <<<EOM\n<br><br>\n\n<b>Notes:</b><br>\n        <ol>\n<li>The average surface temperature is calculated by the IEM using some\nlogic to account for sites without 4 sensors or broken sensors.</li>\n        </ol>\n\nEOM;\n$t->content = $content;\n$t->render('sortables.phtml');\n"
  },
  {
    "path": "htdocs/nstl_flux/index.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 27);\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/network.php\";\n$nt = new NetworkTable(\"NSTLFLUX\");\n$t = new MyView();\n$t->title = \"NLAE Flux Sites\";\n\n$ys = yearSelect(2002, date(\"Y\"), \"syear\");\n$ms = monthSelect(1, \"smonth\");\n$ds = daySelect(1, \"sday\");\n\n$ys2 = yearSelect(2002, date(\"Y\"), \"eyear\");\n$ms2 = monthSelect(date(\"m\"), \"emonth\");\n$ds2 = daySelect(date(\"d\"), \"eday\");\n\n$rows = \"\";\n$pg_conn = iemdb(\"other\");\n$sql = \"SELECT * from flux_meta ORDER by sts ASC\";\n$rs = pg_query($pg_conn, $sql);\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    $rows .= sprintf(\n        \"<tr><th>%s</th><td>%s</td><td>%.4f</td>\n            <td>%.4f</td><td>%s</td><td>%s</td></tr>\",\n        $row[\"station\"],\n        $row[\"surface\"],\n        $nt->table[$row[\"station\"]]['lat'],\n        $nt->table[$row[\"station\"]]['lon'],\n        substr($row[\"sts\"], 0, 10),\n        substr($row[\"ets\"], 0, 10)\n    );\n}\n\n$sselect = networkMultiSelect(\"NSTLFLUX\", '', array(), 'station[]');\n\n$t->content = <<<EOM\n\n<h3>USDA-ARS-National Laboratory for Agriculture and the Environment Flux Sites</h3>\n\n<p>The IEM is pleased to host the data from a set of observing platforms operated by the USDA-ARS-National Laboratory for Agriculture and the Environment (NLAE).  These sites directly measure and derive numerous air and soil flux values.\n\n<div class=\"alert alert-info\">These raw data have not been subjected to the\n<a href=\"https://www.ars.usda.gov/midwest-area/ames/nlae/\"\nclass=\"alert-link\">National Laboratory for Agriculture and the Environment's</a>\nquality control or quality assurance procedures. The correction factor's are\ncalculated within a <a href=\"https://campbellsci.com/\"\nclass=\"alert-link\">Campbell Scientific, Inc</a> (Logan, UT) provided flux program\nfor the CR5000 dataloggers. The WPL corrections are based on the equations\nfound in Webb, E.K., G.I. Pearman, and R. Leuning, 1980. Correction of flux\nmeasurements for density effects due to heat and water vapor transfer.</div>\n\n<p>They are released for limited public use as preliminary data to be\nused only with appropriate caution.\n\n<p>\n<a href=\"plots.phtml\" class=\"btn btn-secondary\"><i class=\"bi bi-graph-up\" aria-hidden=\"true\"></i> Generate daily time series plots</a>\n<a href=\"vars.phtml\" class=\"btn btn-secondary\"><i class=\"bi bi-search\" aria-hidden=\"true\"></i> View variables collected from this network</a>.\n\n<form method=\"GET\" action=\"/cgi-bin/request/nlaeflux.py\" name=\"single\">\n<h3>Download Data:</h3><br />\n\n<p>This form will give you all variables for the day interval of your choice.\n<br />Timestamps and date periods are in UTC.\n\n<table>\n<tr>\n  <th>Select Station(s):</th>\n  <th>Year:</th>\n  <th>Month:</th>\n  <th>Day:</th></tr>\n\n<tr>\n  <td rowspan='2'>{$sselect}</td>\n  <td>{$ys}</td>\n  <td>{$ms}</td>\n  <td>{$ds}</td>\n</tr>\n<tr>\n  <td>{$ys2}</td>\n  <td>{$ms2}</td>\n  <td>{$ds2}</td>\n</tr>\n</table>\n<input type=\"submit\" value=\"Download Data\">\n</form>\n\n<br clear=\"left\" />\n<p>\n\n<table class=\"table table-striped table-sm\">\n<thead><tr><th colspan=\"6\" align=\"left\">Site Information:</th></tr></thead>\n<tr><th align=\"left\">ID</th><th align=\"left\">Status</th><th align=\"left\">Lat</th><th align=\"left\">Lon</th><th\nalign=\"left\">First Observation</th><th align=\"left\">Last Observation</th></tr></thead>\n<tbody>\n{$rows}\n</tbody>\n</table><p>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/nstl_flux/plot.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../include/jpgraph/jpgraph_date.php\";\n/* We need to get some CGI vars! */\n$year = get_str404(\"year\", null);\n$month = get_str404(\"month\", null);\n$day = get_str404(\"day\", null);\n$pvar = get_str404(\"pvar\", null);\nif (is_null($year) || is_null($month) || is_null($day) || is_null($pvar)) {\n    http_response_code(422);\n    die(\"Missing year, month, day, pvar\");\n}\n$sts = mktime(0, 0, 0, $month, $day, $year);\n\n$vars = array();\n$pgconn = iemdb(\"other\");\n\n$sql = \"SELECT * from flux_vars ORDER by details ASC\";\n$rows = pg_query($pgconn, $sql);\nwhile ($row = pg_fetch_assoc($rows)) {\n    $vars[$row[\"name\"]] = array(\"units\" => $row[\"units\"], \"details\" => $row[\"details\"]);\n}\n\n$stname = iem_pg_prepare($pgconn, \"SELECT * from flux_data WHERE \" .\n    \"valid >= $1 and valid < ($1 + '1 day'::interval) \" .\n    \"and $pvar IS NOT NULL ORDER by valid ASC\");\n$stname2 = iem_pg_prepare($pgconn, \"SELECT * from flux_meta WHERE \" .\n    \"sts < $1 and ets > $1\");\n\n$rs = pg_execute($pgconn, $stname, array(date('Y-m-d', $sts)));\n\n$data = array(\n    \"NSTL11\" => array(),\n    \"NSTL10\" => array(),\n    \"NSTL30FT\" => array(),\n    \"NSTL110\" => array(),\n    \"NSTLNSPR\" => array()\n);\n$times = array(\n    \"NSTL11\" => array(),\n    \"NSTL10\" => array(),\n    \"NSTL30FT\" => array(),\n    \"NSTL110\" => array(),\n    \"NSTLNSPR\" => array()\n);\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    $ts = strtotime(substr($row[\"valid\"], 0, 16));\n    $stid = $row[\"station\"];\n    $val = floatval($row[$pvar]);\n    if ($val > -90000) {\n        $data[$stid][] = floatval($row[$pvar]);\n        $times[$stid][] = $ts;\n    }\n}\n\n$labels = array(\n    \"NSTLNSPR\" => \"NSTLNSPR\",\n    \"NSTL11\" => \"NSTL11\",\n    \"NSTL10\" => \"NSTL10\",\n    \"NSTL30FT\" => \"NSTL30FT\",\n    \"NSTL110\" => \"NSTL110\"\n);\n$rs = pg_execute($pgconn, $stname2, array(date('Y-m-d', $sts)));\nwhile ($row = pg_fetch_assoc($rs)) {\n    $st = $row[\"station\"];\n    $labels[$st] =  $row[\"surface\"];\n}\n\n$ts_lbl = date(\"d M Y\", $sts);\n\n// Create the graph. These two calls are always required\n$graph = new Graph(640, 350);\n$graph->SetScale(\"datlin\");\n$graph->img->SetMargin(65, 8, 45, 70);\n$graph->SetMarginColor('white');\n// Box around plotarea\n$graph->SetBox();\n\n// Setup the X and Y grid\n$graph->ygrid->SetFill(true, '#DDDDDD@0.5', '#BBBBBB@0.5');\n$graph->ygrid->SetLineStyle('dashed');\n$graph->ygrid->SetColor('gray');\n$graph->xgrid->Show();\n$graph->xgrid->SetLineStyle('dashed');\n$graph->xgrid->SetColor('gray');\n\n$graph->xaxis->SetFont(FF_FONT1, FS_NORMAL);\n$graph->xaxis->SetLabelAngle(90);\n$graph->xaxis->SetPos(\"min\");\n$graph->xaxis->SetLabelFormatString(\"h A\", true);\n$graph->xaxis->SetTitleMargin(35);\n\n$graph->tabtitle->Set($vars[$pvar][\"details\"]);\n\n$graph->xaxis->SetTitle(\"Timeseries for {$ts_lbl}\");\n$graph->yaxis->SetTitle($vars[$pvar][\"details\"] . \" [\" . $vars[$pvar][\"units\"] . \"]\");\n$graph->yaxis->SetTitleMargin(45);\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.10, 0.92, \"left\", \"top\");\n\n// Create the linear plot\nif (sizeof($data[\"NSTL11\"]) > 1) {\n    $lineplot = new LinePlot($data[\"NSTL11\"], $times[\"NSTL11\"]);\n    $lineplot->SetColor(\"red\");\n    $lineplot->SetLegend($labels[\"NSTL11\"]);\n    $lineplot->SetWeight(2);\n    $graph->Add($lineplot);\n}\n\nif (sizeof($data[\"NSTL10\"]) > 1) {\n    $lineplot2 = new LinePlot($data[\"NSTL10\"], $times[\"NSTL10\"]);\n    $lineplot2->SetColor(\"blue\");\n    $lineplot2->SetLegend($labels[\"NSTL10\"]);\n    $lineplot2->SetWeight(2);\n    $graph->Add($lineplot2);\n}\n\n// Create the linear plot\nif (sizeof($data[\"NSTLNSPR\"]) > 1) {\n    $lineplot3 = new LinePlot($data[\"NSTLNSPR\"], $times[\"NSTLNSPR\"]);\n    $lineplot3->SetColor(\"black\");\n    $lineplot3->SetLegend($labels[\"NSTLNSPR\"]);\n    $lineplot3->SetWeight(2);\n    $graph->Add($lineplot3);\n}\n\n// Create the linear plot\nif (sizeof($data[\"NSTL30FT\"]) > 1) {\n    $lineplot4 = new LinePlot($data[\"NSTL30FT\"], $times[\"NSTL30FT\"]);\n    $lineplot4->SetColor(\"green\");\n    $lineplot4->SetLegend($labels[\"NSTL30FT\"]);\n    $lineplot4->SetWeight(2);\n    $graph->Add($lineplot4);\n}\n\n// Create the linear plot\nif (sizeof($data[\"NSTL110\"]) > 1) {\n    $lineplot5 = new LinePlot($data[\"NSTL110\"], $times[\"NSTL110\"]);\n    $lineplot5->SetColor(\"brown\");\n    $lineplot5->SetLegend($labels[\"NSTL110\"]);\n    $lineplot5->SetWeight(2);\n    $graph->Add($lineplot5);\n}\n\n// Display the graph\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/nstl_flux/plots.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 26);\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\n\n$year = get_int404(\"year\", date(\"Y\", time() - 86400));\n$month = get_int404(\"month\", date(\"m\", time() - 86400));\n$day = get_int404(\"day\", date(\"d\", time() - 86400));\n$pvar1 = isset($_GET[\"pvar1\"]) ? xssafe($_GET[\"pvar1\"]) : \"fc_wpl\";\n$pvar2 = isset($_GET[\"pvar2\"]) ? xssafe($_GET[\"pvar2\"]) : \"le_wpl\";\n$pvar3 = isset($_GET[\"pvar3\"]) ? xssafe($_GET[\"pvar3\"]) : \"hs\";\n$pvar4 = isset($_GET[\"pvar4\"]) ? xssafe($_GET[\"pvar4\"]) : \"rn_total_avg\";\n\n$other = iemdb(\"other\");\n$sql = \"SELECT * from flux_vars ORDER by details ASC\";\n$rows = pg_query($other, $sql);\n$var_names = array();\n$var_details = array();\nwhile ($row = pg_fetch_assoc($rows)) {\n    $var_names[] = $row[\"name\"];\n    $var_details[] = $row[\"details\"];\n}\n\nfunction genselect($name, $selected, $ids, $values)\n{\n    $s = \"<select name=\\\"$name\\\">\\n\";\n    foreach ($ids as $k => $v) {\n        $s .= \"<option value=\\\"$v\\\" \";\n        if ($selected == $v) $s .= \"selected=\\\"selected\\\"\";\n        $s .= \">\" . $values[$k] . \"</option>\";\n    }\n    $s .= \"</select>\\n\";\n    return $s;\n}\n$t->title = \"NLAE Flux Sites\";\n\n$ys = yearSelect(2002, $year, \"year\");\n$ms = monthSelect($month, \"month\");\n$ds = daySelect($day, \"day\");\n$spvar1 = genselect(\"pvar1\", $pvar1, $var_names, $var_details);\n$spvar2 = genselect(\"pvar2\", $pvar2, $var_names, $var_details);\n$spvar3 = genselect(\"pvar3\", $pvar3, $var_names, $var_details);\n$spvar4 = genselect(\"pvar4\", $pvar4, $var_names, $var_details);\n\n$u1 = sprintf(\"plot.php?pvar=%s&year=%s&month=%s&day=%s\", $pvar1, $year, $month, $day);\n$u2 = sprintf(\"plot.php?pvar=%s&year=%s&month=%s&day=%s\", $pvar2, $year, $month, $day);\n$u3 = sprintf(\"plot.php?pvar=%s&year=%s&month=%s&day=%s\", $pvar3, $year, $month, $day);\n$u4 = sprintf(\"plot.php?pvar=%s&year=%s&month=%s&day=%s\", $pvar4, $year, $month, $day);\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb\">\n <li class=\"breadcrumb-item\"><a href=\"/nstl_flux/\">NLAE Flux Stations</a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\">Time Series Plots</li>\n </ol>\n</nav>\n\n<p>This page generates 4 plots of your choice.  Select the date and variables\nyou wish to plot and then click on the 'Generate Plots' button.\n\n\n<form method=\"GET\" name=\"selector\">\n\n<table class=\"table table-bordered\">\n<thead>\n<tr>\n <th colspan=\"3\">Select Date:</th>\n <th>Select Plot Variable:</th></tr></thead>\n<tbody>\n<tr><th>Year:</th><th>Month:</th><th>Day:</th>\n<td rowspan=\"2\"><b>1.</b> {$spvar1}\n <br /><b>2.</b> {$spvar2}\n <br /><b>3.</b> {$spvar3}\n <br /><b>4.</b> {$spvar4}\n</td></tr>\n<tr>\n <td>{$ys}</td>\n <td>{$ms}</td>\n <td>{$ds}</td>\n\n</tr>\n</table>\n<input type=\"submit\" value=\"Generate Plots\">\n<p>\n<br /><img src=\"{$u1}\" class=\"img-fluid\">\n<br /><img src=\"{$u2}\" class=\"img-fluid\">\n<br /><img src=\"{$u3}\" class=\"img-fluid\">\n<br /><img src=\"{$u4}\" class=\"img-fluid\">\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/nstl_flux/vars.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\n$t = new MyView();\n\n$t->title = \"NLAE Flux Sites Variables\";\n\n$pg_conn = iemdb(\"other\");\n$sql = \"SELECT * from flux_vars ORDER by name ASC\";\n$rs = pg_query($pg_conn, $sql);\n$rows = \"\";\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n    $rows .= sprintf(\"<tr><th>%s</th><td>%s</td><td>%s</td></tr>\", $row[\"name\"], $row[\"units\"], $row[\"details\"]);\n}\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/nstl_flux/\">NLAE Flux Sites</a></li>\n <li class=\"active\">Data Variables and Units</li>\n</ol>\n\n<h3>Variables Collected from NLAE Flux Sites</h3>\n\n<p>This page lists out variables collected on the 4 sites in this network.\nEach variable is not collected at every site.\n\n<table class=\"table table-striped table-sm table-bordered\">\n<thead><tr><th colspan=\"3\" align=\"left\">Site Information:</th></tr></thead>\n<tr><th align=\"left\">ID</th><th align=\"left\">Units</th><th align=\"left\">Details</th></tr>\n</thead>\n<tbody>\n{$rows}\n</tbody>\n</table>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/nws/ccoop_current.php",
    "content": "<?php\n/*\n * NWS CCOOP currents lister\n */\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 159);\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/mlib.php\";\n\n$t = new MyView();\n\n$sortcol = get_str404('sortcol', 'ts');\n$sortdir = get_str404('sortdir', 'desc');\nif ($sortdir != \"asc\" && $sortdir != \"desc\") $sortdir = \"desc\";\n\nfunction precip_formatter($val)\n{\n    if ($val === '') return '';\n    if ($val === 0.0001) return 'T';\n    if ($val < 0) return 'M';\n    return $val;\n}\n\nfunction make_row($dict, $oddrow)\n{\n    $s = \"<tr\";\n    if ($oddrow) $s .= ' bgcolor=\"#EEEEEE\"';\n    $s .= \">\";\n\n    $sitesurl = sprintf(\n        \"/sites/site.php?station=%s&network=%s\",\n        $dict[\"sid\"],\n        $dict[\"network\"]\n    );\n\n    $s .= <<<EOM\n    <td><input type=\"checkbox\" name=\"st[]\" value=\"{$dict[\"sid\"]}\"/></td>\n    <td><a href=\"/p.php?pid={$dict[\"raw\"]}\" class=\"btn btn-small\"><i class=\"bi bi-paperclip\"></i></a>\n    </td>\nEOM;\n    $s .= \"<td><a href=\\\"$sitesurl\\\">{$dict['sid']}</a></td>\";\n    $s .= \"<td>{$dict['name']}, {$dict['state']}</a></td>\";\n\n    $bgcolor = (date(\"Ymd\") != date(\"Ymd\", $dict[\"ts\"])) ? '#F00' : 'inherit';\n    $fmt = (date(\"Ymd\") != date(\"Ymd\", $dict[\"ts\"])) ? 'd M Y h:i A' : 'h:i A';\n    $s .= \"<td style=\\\"background: $bgcolor;\\\">\" . date($fmt, $dict[\"lts\"]) . \"</td>\";\n\n    $s .= sprintf(\n        \"<td>%s</td><td><span style=\\\"color: #F00;\\\">%s</span></td>\n    <td><span style=\\\"color: #00F;\\\">%s</span></td>\",\n        $dict[\"tmpf\"] != \"\" ? $dict[\"tmpf\"] : \"M\",\n        $dict[\"max_tmpf\"] != \"\" ? $dict[\"max_tmpf\"] : \"M\",\n        $dict[\"min_tmpf\"] != \"\" ? $dict[\"min_tmpf\"] : \"M\"\n    );\n\n    $s .= sprintf(\n        \"<td>%s</td>\",\n        precip_formatter($dict[\"pday\"]),\n    );\n\n    $s .= \"</tr>\\n\";\n    return $s;\n}\n\n$jobj = iemws_json(\"currents.json\", array(\"network\" => \"CCOOP\"));\n\n$db = array();\nforeach ($jobj[\"data\"] as $bogus => $iemob) {\n    $site = $iemob[\"station\"];\n    $db[$site] = array(\n        'pday' => \"\", 'min_tmpf' => \"\", 'max_tmpf' => \"\", 'tmpf' => \"\"\n    );\n    $db[$site]['ts'] = strtotime($iemob[\"local_valid\"]);\n    $db[$site]['lts'] = strtotime($iemob[\"local_valid\"]);\n    $db[$site]['sid'] = $site;\n    $db[$site]['name'] = $iemob[\"name\"];\n    $db[$site]['raw'] = $iemob[\"raw\"];\n    $db[$site]['state'] = $iemob[\"state\"];\n    $db[$site]['network'] = $iemob[\"network\"];\n    $db[$site]['county'] = $iemob[\"county\"];\n    if ($iemob[\"tmpf\"] > -100) {\n        $db[$site]['tmpf'] = $iemob[\"tmpf\"];\n    }\n    if ($iemob[\"max_tmpf\"] > -100) {\n        $db[$site]['max_tmpf'] = $iemob[\"max_tmpf\"];\n    }\n\n    if ($iemob[\"min_tmpf\"] < 99) {\n        $db[$site]['min_tmpf'] = $iemob[\"min_tmpf\"];\n    }\n\n    $db[$site]['pday'] = $iemob[\"pday\"];\n}\n\n$db = aSortBySecondIndex($db, $sortcol, $sortdir);\n\n$oddrow = true;\n$firstsection = \"\";\n$lastsection = \"\";\nforeach ($db as $site => $value) {\n    $oddrow = !$oddrow;\n    if (date(\"Ymd\", $value[\"ts\"]) == date(\"Ymd\")) {\n        $firstsection .= make_row($value, $oddrow);\n    } else {\n        $value[\"tmpf\"] = \"\";\n        $lastsection .= make_row($value, $oddrow);\n    }\n}\n\nfunction get_sortdir($baseurl, $column, $sortCol, $sortDir)\n{\n    $newSort = ($sortDir == \"asc\") ? \"desc\" : \"asc\";\n    if ($column == $sortCol) return \"{$baseurl}&sortcol=$column&sortdir=$newSort\";\n    return \"{$baseurl}&sortcol=$column&sortdir=$sortDir\";\n}\n\n$t->title = \"NWS CCOOP Current Sortables\";\n$cols = array(\n    \"ts\" => \"Valid\", \"county\" => \"County\",\n    \"sid\" => \"Site ID\", \"name\" => \"Station Name\",\n    \"ratio\" => \"Snow to Water Ratio\",\n    \"tmpf\" => \"Ob Temperature\", \"max_tmpf\" => \"24 hour High\",\n    \"min_tmpf\" => \"24 hour Low\", \"snow\" => \"24 hour Snowfall\",\n    \"snowd\" => \"Snowfall Depth\", \"pday\" => \"24 hour rainfall\",\n    \"phour\" => \"Rainfall One Hour\", \"snoww\" => \"Snow Water Equivalent\"\n);\n$t->current_network = \"Cellular COOP\";\n\n\n$sorts = array(\"asc\" => \"Ascending\", \"desc\" => \"Descending\");\n$baseurl = \"/nws/ccoop_current.php?\";\n$one = get_sortdir($baseurl, \"sid\", $sortcol, $sortdir);\n$two = get_sortdir($baseurl, \"name\", $sortcol, $sortdir);\n$three = get_sortdir($baseurl, \"county\", $sortcol, $sortdir);\n$four = get_sortdir($baseurl, \"ts\", $sortcol, $sortdir);\n$five = get_sortdir($baseurl, \"tmpf\", $sortcol, $sortdir);\n$six = get_sortdir($baseurl, \"max_tmpf\", $sortcol, $sortdir);\n$seven = get_sortdir($baseurl, \"min_tmpf\", $sortcol, $sortdir);\n$eight = get_sortdir($baseurl, \"pday\", $sortcol, $sortdir);\n\n$t->content = <<<EOM\n\n<p>Sorted by: <strong>{$cols[$sortcol]} {$sorts[$sortdir]}</strong>.\nTimes are presented in the local time of the site. Click on the identifier to\nget all daily observations for the site.  Click on the site name to get more\ninformation on the site. Click on the column heading to sort the column, clicking\nagain will reverse the sort.\n\n<form name=\"st\" action=\"/my/current.phtml\" method=\"GET\">\n<table class=\"table table-striped table-sm table-bordered\">\n<thead class=\"sticky\">\n<tr>\n  <th rowspan=2>Add:</th><th rowspan=2>Raw:</th>\n  <th rowspan=2><a href=\"{$one}\">SiteID:</a></th>\n  <th rowspan=2><a href=\"{$two}\">Station Name:</a></th>\n  <th rowspan=2><a href=\"{$four}\">Valid:</a></th>\n  <th colspan=3>Temperatures [F]</th>\n  <th colspan=\"1\">Hydro</th></tr>\n\n<tr>\n  <th><a href=\"{$five}\">At Ob</a></th>\n  <th><a href=\"{$six}\">24h High</a></th>\n  <th><a href=\"{$seven}\">24h Low</a></th>\n  <th><a href=\"{$eight}\">24hour Rain</a></th>\n</tr></thead>\n<tbody>\n{$firstsection}\n{$lastsection}\n</tbody>\n</table>\n<input type=\"submit\" value=\"Add to Favorites\">\n</form>\nEOM;\n$t->render('sortables.phtml');\n"
  },
  {
    "path": "htdocs/nws/cf6map.js",
    "content": "/* global ol */\n// CF6 Map Application - Modernized without jQuery\nlet renderattr = 'high';\nlet vectorLayer = null;\nlet map = null;\nlet element = null;\nlet fontSize = 14;\nlet popup = null;\n\n// Utility function to format date as YYYY-MM-DD\nfunction formatDate(date) {\n    const year = date.getFullYear();\n    const month = String(date.getMonth() + 1).padStart(2, '0');\n    const day = String(date.getDate()).padStart(2, '0');\n    return `${year}-${month}-${day}`;\n}\n\n// Parse date from YYMMDD format (for legacy hash links)\nfunction parseDateShort(dateStr) {\n    if (dateStr.length !== 6) {return null;}\n    const year = 2000 + parseInt(dateStr.slice(0, 2));\n    const month = parseInt(dateStr.slice(2, 4)) - 1;\n    const day = parseInt(dateStr.slice(4, 6));\n    return new Date(year, month, day);\n}\n\nfunction updateURL() {\n    const dateInput = document.getElementById('datepicker');\n\n    const url = new URL(window.location);\n    url.searchParams.set('date', dateInput.value); // Store as YYYY-MM-DD\n    url.searchParams.set('var', renderattr);\n    window.history.pushState({}, '', url);\n}\n\n// Handle legacy hash links and convert to URL parameters\nfunction handleLegacyHashLinks() {\n    const hash = window.location.hash;\n    if (hash) {\n        const tokens = hash.substring(1).split('/'); // Remove # and split\n        if (tokens.length === 2) {\n            const tpart = tokens[0];\n            const variable = tokens[1];\n\n            // Parse date from YYMMDD format\n            const parsedDate = parseDateShort(tpart);\n            if (parsedDate && variable) {\n                // Convert hash to URL params and redirect\n                const url = new URL(window.location);\n                url.hash = ''; // Remove hash\n                url.searchParams.set('date', formatDate(parsedDate));\n                url.searchParams.set('var', variable);\n                window.history.replaceState({}, '', url);\n                return { date: formatDate(parsedDate), variable };\n            }\n        }\n    }\n    return null;\n}\n\n// Read URL parameters and set initial state\nfunction readURLParams() {\n    const urlParams = new URLSearchParams(window.location.search);\n\n    const date = urlParams.get('date');\n    const variable = urlParams.get('var');\n\n    return {\n        date: date || null,\n        variable: variable || null,\n    };\n}\n\n/**\n * Replace HTML special characters with their entity equivalents\n * @param string val\n * @returns string converted string\n */\nfunction escapeHTML(val) {\n    return val\n        .replace(/&/g, '&amp;')\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/\"/g, '&quot;')\n        .replace(/'/g, '&#039;');\n}\n\nfunction updateDate() {\n    const dateInput = document.getElementById('datepicker');\n    const fullDate = dateInput.value; // Already in YYYY-MM-DD format\n\n    // Add loading class\n    const mapElement = document.getElementById('map');\n    mapElement.classList.add('loading');\n\n    map.removeLayer(vectorLayer);\n    vectorLayer = makeVectorLayer(fullDate);\n    map.addLayer(vectorLayer);\n\n    // Remove loading class after a delay\n    setTimeout(() => {\n        mapElement.classList.remove('loading');\n    }, 1000);\n\n    updateURL();\n}\n\nconst vectorStyleFunction = function (feature) {\n    const value = feature.get(renderattr);\n    let color = '#FFFFFF';\n    const outlinecolor = '#000000';\n    if (value !== 'M') {\n        if (renderattr.indexOf('depart') > -1) {\n            if (renderattr.indexOf('high') > -1 || renderattr.indexOf('low') > -1) {\n                if (value > 0) {\n                    color = '#FF0000';\n                } else if (value < 0) {\n                    color = '#00FFFF';\n                }\n            } else {\n                if (value < 0) {\n                    color = '#FF0000';\n                } else if (value > 0) {\n                    color = '#00FFFF';\n                }\n            }\n        }\n        return [\n            new ol.style.Style({\n                fill: new ol.style.Fill({\n                    color: 'rgba(255, 255, 255, 0.6)',\n                }),\n                text: new ol.style.Text({\n                    font: `${fontSize}px Calibri,sans-serif`,\n                    text: value.toString(),\n                    fill: new ol.style.Fill({\n                        color,\n                        width: 1,\n                    }),\n                    stroke: new ol.style.Stroke({\n                        color: outlinecolor,\n                        width: 3,\n                    }),\n                }),\n            }),\n        ];\n    }\n    return [\n        new ol.style.Style({\n            image: new ol.style.Circle({\n                fill: new ol.style.Fill({\n                    color: 'rgba(255,255,255,0.4)',\n                }),\n                stroke: new ol.style.Stroke({\n                    color: '#3399CC',\n                    width: 1.25,\n                }),\n                radius: 5,\n            }),\n            fill: new ol.style.Fill({\n                color: 'rgba(255,255,255,0.4)',\n            }),\n            stroke: new ol.style.Stroke({\n                color: '#3399CC',\n                width: 1.25,\n            }),\n        }),\n    ];\n};\n\nfunction updateMap() {\n    renderattr = escapeHTML(document.getElementById('renderattr').value);\n    vectorLayer.setStyle(vectorStyleFunction);\n    updateURL();\n}\n\nfunction makeVectorLayer(dt) {\n    return new ol.layer.Vector({\n        source: new ol.source.Vector({\n            format: new ol.format.GeoJSON(),\n            projection: ol.proj.get('EPSG:3857'),\n            url: `/geojson/cf6.py?dt=${dt}`,\n        }),\n        style: vectorStyleFunction,\n    });\n}\n\n// Show popover with content\nfunction showPopover(content) {\n    const popoverContent = document.getElementById('popover-content');\n    popoverContent.innerHTML = content;\n\n    if (window.bootstrap?.Popover) {\n        // Use Bootstrap 5 popover\n        const popoverInstance =\n            window.bootstrap.Popover.getInstance(element) ||\n            new window.bootstrap.Popover(element, {\n                placement: 'top',\n                html: true,\n                content: () => popoverContent.innerHTML,\n            });\n        popoverInstance.show();\n    }\n}\n\n// Hide popover\nfunction hidePopover() {\n    if (window.bootstrap?.Popover) {\n        const popoverInstance = window.bootstrap.Popover.getInstance(element);\n        if (popoverInstance) {\n            popoverInstance.hide();\n        }\n    }\n}\n\n// Load CF6 report\nfunction loadCF6Report(url) {\n    const cf6report = document.getElementById('cf6report');\n    cf6report.innerHTML =\n        '<div class=\"text-center\"><div class=\"spinner-border text-primary\" role=\"status\"><span class=\"visually-hidden\">Loading...</span></div><p class=\"mt-2\">Loading CF6 report...</p></div>';\n\n    fetch(url)\n        .then(response => response.text())\n        .then(data => {\n            cf6report.innerHTML = `<pre>${data}</pre>`;\n        })\n        .catch(() => {\n            cf6report.innerHTML =\n                '<div class=\"alert alert-danger\"><i class=\"bi bi-exclamation-triangle me-2\"></i>Error loading CF6 report</div>';\n        });\n}\n\n// Initialize the application\nfunction initializeApp() {\n    // Set initial date to today\n    const today = new Date();\n    const dateInput = document.getElementById('datepicker');\n    dateInput.value = formatDate(today);\n    dateInput.max = formatDate(today); // Set max date to today\n    dateInput.min = '2001-01-01'; // Set min date\n\n    // Date change handler\n    dateInput.addEventListener('change', updateDate);\n\n    // Initialize vector layer\n    vectorLayer = makeVectorLayer(formatDate(today));\n\n    // Initialize map\n    map = new ol.Map({\n        target: 'map',\n        layers: [\n            new ol.layer.Tile({\n                title: 'Global Imagery',\n                source: new ol.source.XYZ({\n                    attributions:\n                        'Tiles © <a href=\"https://services.arcgisonline.com/ArcGIS/' +\n                        'rest/services/World_Imagery/MapServer\">ArcGIS</a>',\n                    url:\n                        'https://server.arcgisonline.com/ArcGIS/rest/services/' +\n                        'World_Imagery/MapServer/tile/{z}/{y}/{x}',\n                }),\n            }),\n            new ol.layer.Tile({\n                title: 'State Boundaries',\n                source: new ol.source.XYZ({\n                    url: '/c/tile.py/1.0.0/usstates/{z}/{x}/{y}.png',\n                }),\n            }),\n            vectorLayer,\n        ],\n        view: new ol.View({\n            projection: 'EPSG:3857',\n            center: [-10575351, 5160979],\n            zoom: 3,\n        }),\n    });\n\n    // Add layer switcher\n    map.addControl(new ol.control.LayerSwitcher());\n\n    // Initialize popup\n    element = document.getElementById('popup');\n    popup = new ol.Overlay({\n        element,\n        positioning: 'bottom-center',\n        stopEvent: false,\n    });\n    map.addOverlay(popup);\n\n    // Map click handler\n    map.on('click', evt => {\n        const feature = map.forEachFeatureAtPixel(evt.pixel, feature2 => feature2);\n\n        if (feature) {\n            const geometry = feature.getGeometry();\n            const coord = geometry.getCoordinates();\n            popup.setPosition(coord);\n\n            const content = `\n                <div class=\"p-2\">\n                    <h6 class=\"mb-2\"><strong>${feature.get('name') || 'Unknown Station'}</strong></h6>\n                    <div class=\"row g-1 small\">\n                        <div class=\"col-6\"><strong>High:</strong> ${feature.get('high') || 'N/A'}</div>\n                        <div class=\"col-6\"><strong>Low:</strong> ${feature.get('low') || 'N/A'}</div>\n                        <div class=\"col-6\"><strong>Precip:</strong> ${feature.get('precip') || 'N/A'}</div>\n                        <div class=\"col-6\"><strong>Snow:</strong> ${feature.get('snow') || 'N/A'}</div>\n                    </div>\n                </div>\n            `;\n\n            showPopover(content);\n\n            // Load CF6 report\n            const reportUrl = feature.get('link');\n            if (reportUrl) {\n                loadCF6Report(reportUrl);\n            }\n        } else {\n            hidePopover();\n        }\n    });\n\n    // Handle legacy hash links and URL parameters\n    let initialParams = handleLegacyHashLinks();\n    if (!initialParams) {\n        initialParams = readURLParams();\n    }\n\n    // Set initial values from URL parameters or use defaults\n    if (initialParams.date) {\n        dateInput.value = initialParams.date;\n    }\n\n    if (initialParams.variable) {\n        renderattr = initialParams.variable;\n        const selectElement = document.getElementById('renderattr');\n        selectElement.value = renderattr;\n    }\n\n    // Update map if we have parameters\n    if (initialParams.date || initialParams.variable) {\n        updateDate();\n    }\n\n    // Font size controls\n    document.getElementById('fplus').addEventListener('click', () => {\n        fontSize += 2;\n        vectorLayer.setStyle(vectorStyleFunction);\n    });\n\n    document.getElementById('fminus').addEventListener('click', () => {\n        fontSize = Math.max(8, fontSize - 2); // Minimum font size of 8\n        vectorLayer.setStyle(vectorStyleFunction);\n    });\n\n    // Render attribute change handler\n    document.getElementById('renderattr').addEventListener('change', updateMap);\n}\n\n// Initialize when DOM is loaded\nif (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initializeApp);\n} else {\n    initializeApp();\n}\n"
  },
  {
    "path": "htdocs/nws/cf6map.php",
    "content": "<?php\n// Produce a map of CF6 parsed data for a single day\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 131);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/mlib.php\";\nforce_https();\n$t = new MyView();\n$t->title = \"Map of Daily NWS CF6 reports\";\n$OL = '10.6.1';\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol.css\" type=\"text/css\">\n<link type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"cf6table.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"/vendor/openlayers/{$OL}/ol.js\" type=\"text/javascript\"></script>\n<script src='/vendor/openlayers/{$OL}/ol-layerswitcher.js'></script>\n<script src='cf6map.js?v=2'></script>\nEOM;\n\n$t->content = <<<EOM\n\n<div id=\"popover-content\" style=\"display: none\">\n  <!-- Hidden div with the popover content -->\n  <p>This is the popover content</p>\n</div>\n\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Mainpage</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">Map of NWS Daily CF6 Reports</li>\n</ol>\n</nav>\n\n<div class=\"d-flex align-items-center mb-4 page-header\">\n    <h1 class=\"mb-0 me-3 text-white\">\n        <i class=\"bi bi-cloud-sun-fill me-2\"></i>\n        NWS Daily CF6 Climate Reports\n    </h1>\n    <div class=\"ms-auto\">\n        <span class=\"badge bg-light text-dark\">\n            <i class=\"bi bi-thermometer-half me-1\"></i>Climate Data\n        </span>\n    </div>\n</div>\n\n<div class=\"alert alert-info d-flex align-items-start mb-4 border-0\">\n    <i class=\"bi bi-info-circle-fill me-3 flex-shrink-0\" style=\"font-size: 1.5rem; color: #0dcaf0;\"></i>\n    <div>\n        <h6 class=\"alert-heading mb-2\">\n            <i class=\"bi bi-graph-up me-1\"></i>About This Tool\n        </h6>\n        <p class=\"mb-2\">Interactive map displaying NWS CF6 (Climate Data) reports for weather stations across the United States.\n        Select different meteorological variables and dates to explore climate patterns.</p>\n        <p class=\"mb-0\">\n            <strong><i class=\"bi bi-cursor me-1\"></i>How to use:</strong> Choose a variable and date, then click on any station marker to view detailed CF6 report data.\n        </p>\n    </div>\n</div>\n        \n<div class=\"row mb-4\">\n    <div class=\"col-lg-6\">\n        <div class=\"card\">\n            <div class=\"card-header bg-light\">\n                <h5 class=\"card-title mb-0\">\n                    <i class=\"bi bi-sliders me-2\"></i>Display Controls\n                </h5>\n            </div>\n            <div class=\"card-body\">\n                <div class=\"row g-3\">\n                    <div class=\"col-md-6\">\n                        <label for=\"renderattr\" class=\"form-label fw-semibold\">\n                            <i class=\"bi bi-list-ul me-1\"></i>Variable to Display\n                        </label>\n                        <select id=\"renderattr\" class=\"form-select form-select-lg\">\n                            <option value=\"high\">High Temperature</option>\n                            <option value=\"low\">Low Temperature</option>\n                            <option value=\"avg_temp\">Average Temperature</option>\n                            <option value=\"dep_temp\">Average Temperature Departure</option>\n                            <option value=\"hdd\">Heating Degree Days</option>\n                            <option value=\"cdd\">Cooling Degree Days</option>\n                            <option value=\"precip\">Precipitation</option>\n                            <option value=\"snow\">Snowfall</option>\n                            <option value=\"snowd_12z\">Snow Depth at 12z</option>\n                            <option value=\"avg_smph\">Average Wind Speed</option>\n                            <option value=\"max_smph\">Max Wind Speed</option>\n                            <option value=\"avg_drct\">Average Wind Direction</option>\n                            <option value=\"minutes_sunshine\">Minutes Sunshine</option>\n                            <option value=\"possible_sunshine\">Possible Sunshine</option>\n                            <option value=\"cloud_ss\">Cloud SS</option>\n                            <option value=\"wxcodes\">Weather Codes</option>\n                            <option value=\"gust_smph\">Wind Gust</option>\n                            <option value=\"gust_drct\">Wind Gust Direction</option>\n                        </select>\n                    </div>\n                    <div class=\"col-md-6\">\n                        <label for=\"datepicker\" class=\"form-label fw-semibold\">\n                            <i class=\"bi bi-calendar-event me-1\"></i>Select Date\n                        </label>\n                        <input type=\"date\" id=\"datepicker\" class=\"form-control form-control-lg\">\n                    </div>\n                </div>\n                \n                <div class=\"mt-3\">\n                    <label class=\"form-label fw-semibold\">\n                        <i class=\"bi bi-fonts me-1\"></i>Font Size Controls\n                    </label>\n                    <div class=\"btn-group w-100\" role=\"group\">\n                        <button id=\"fminus\" class=\"btn btn-outline-secondary\" type=\"button\">\n                            <i class=\"bi bi-dash-lg me-1\"></i>Smaller\n                        </button>\n                        <button id=\"fplus\" class=\"btn btn-outline-secondary\" type=\"button\">\n                            <i class=\"bi bi-plus-lg me-1\"></i>Larger\n                        </button>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    \n    <div class=\"col-lg-6\">\n        <div class=\"card\">\n            <div class=\"card-header bg-light\">\n                <h5 class=\"card-title mb-0\">\n                    <i class=\"bi bi-info-square me-2\"></i>Quick Guide\n                </h5>\n            </div>\n            <div class=\"card-body\">\n                <ul class=\"list-unstyled mb-0\">\n                    <li class=\"mb-2\">\n                        <i class=\"bi bi-1-circle-fill text-primary me-2\"></i>\n                        <strong>Select Variable:</strong> Choose the meteorological parameter to display\n                    </li>\n                    <li class=\"mb-2\">\n                        <i class=\"bi bi-2-circle-fill text-primary me-2\"></i>\n                        <strong>Pick Date:</strong> Select any date from 2001 onwards\n                    </li>\n                    <li class=\"mb-2\">\n                        <i class=\"bi bi-3-circle-fill text-primary me-2\"></i>\n                        <strong>Click Stations:</strong> Click map markers to view detailed reports\n                    </li>\n                    <li class=\"mb-0\">\n                        <i class=\"bi bi-4-circle-fill text-primary me-2\"></i>\n                        <strong>Adjust Text:</strong> Use font size controls for better readability\n                    </li>\n                </ul>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"row\">\n    <div class=\"col-12\">\n        <div class=\"card\">\n            <div class=\"card-header bg-primary text-white\">\n                <h5 class=\"card-title mb-0\">\n                    <i class=\"bi bi-geo-alt-fill me-2\"></i>Interactive Climate Map\n                </h5>\n            </div>\n            <div class=\"card-body p-0\">\n                <div id=\"map\" class=\"map\">\n                    <div id=\"popup\"></div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"row mt-4\">\n    <div class=\"col-12\">\n        <div class=\"card\">\n            <div class=\"card-header bg-light\">\n                <h5 class=\"card-title mb-0\">\n                    <i class=\"bi bi-file-text me-2\"></i>CF6 Report Details\n                    <small class=\"text-muted ms-2\">Click on map stations to view reports</small>\n                </h5>\n            </div>\n            <div class=\"card-body\">\n                <div id=\"cf6report\" class=\"position-relative\">\n                    <div class=\"text-center text-muted py-4\">\n                        <i class=\"bi bi-cursor-fill display-4 text-muted mb-3\"></i>\n                        <p class=\"lead\">Click on any station marker on the map above to display the full CF6 climate report</p>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\nEOM;\n\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/nws/cf6table.css",
    "content": ".empty{\n    width: 0px !important;\n    border: 0px !important;\n    padding: 2px !important;\n    background: tan !important;\n}\n/* Main heading styling */\n.page-header {\n    background: linear-gradient(135deg, #0066cc, #004499);\n    color: white;\n    padding: 2rem;\n    margin-bottom: 2rem;\n    border-radius: 0.5rem;\n}\n\n/* Map container */\n.map {\n    height: 70vh;\n    width: 100%;\n    border-radius: 0.5rem;\n    border: 2px solid #e9ecef;\n    position: relative;\n}\n\n/* Popup styling */\n.popover {\n    width: 300px;\n    border: 2px solid #0d6efd;\n    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n}\n\n.popover-header {\n    background: linear-gradient(135deg, #0d6efd, #0a58ca);\n    color: white;\n    border-bottom: 1px solid #0a58ca;\n}\n\n/* Card enhancements */\n.card {\n    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n    border: 1px solid #e9ecef;\n}\n\n.card-header {\n    border-bottom: 2px solid #e9ecef;\n    font-weight: 600;\n}\n\n.card-header.bg-light {\n    background: linear-gradient(135deg, #f8f9fa, #e9ecef) !important;\n}\n\n.card-header.bg-primary {\n    background: linear-gradient(135deg, #0d6efd, #0a58ca) !important;\n}\n\n/* Form controls enhancements */\n.form-control, .form-select {\n    border: 2px solid #e9ecef;\n    transition: border-color 0.3s ease, box-shadow 0.3s ease;\n}\n\n.form-control:focus, .form-select:focus {\n    border-color: #0d6efd;\n    box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.25);\n}\n\n/* Button enhancements */\n.btn {\n    font-weight: 500;\n    letter-spacing: 0.025em;\n    transition: all 0.3s ease;\n}\n\n.btn:hover {\n    transform: translateY(-1px);\n    box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.15);\n}\n\n.btn-outline-secondary:hover {\n    background: linear-gradient(135deg, #6c757d, #495057);\n}\n\n/* Alert styling */\n.alert-info {\n    border-left: 4px solid #0dcaf0;\n    background: linear-gradient(135deg, #d1ecf1, #b8daff);\n    border-color: #b8daff;\n}\n\n/* CF6 Report styling */\n#cf6report {\n    min-height: 200px;\n    font-family: 'Courier New', monospace;\n    background: #f8f9fa;\n    border-radius: 0.375rem;\n    padding: 1rem;\n}\n\n#cf6report pre {\n    background: white;\n    border: 1px solid #e9ecef;\n    border-radius: 0.375rem;\n    padding: 1rem;\n    margin: 0;\n    white-space: pre-wrap;\n    word-wrap: break-word;\n}\n\n/* Loading states */\n.loading {\n    position: relative;\n    overflow: hidden;\n}\n\n.loading::after {\n    content: '';\n    position: absolute;\n    top: 0;\n    left: -100%;\n    width: 100%;\n    height: 100%;\n    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);\n    animation: loading 1.5s infinite;\n}\n\n@keyframes loading {\n    0% { left: -100%; }\n    100% { left: 100%; }\n}\n\n/* Responsive improvements */\n@media (max-width: 768px) {\n    .map {\n        height: 50vh;\n    }\n    \n    .page-header {\n        padding: 1rem;\n    }\n    \n    .page-header h1 {\n        font-size: 1.5rem;\n    }\n    \n    .btn-group {\n        flex-direction: column;\n    }\n    \n    .btn-group .btn {\n        margin-bottom: 0.25rem;\n    }\n}\n\n/* Icon enhancements */\n.bi {\n    vertical-align: -0.125em;\n}"
  },
  {
    "path": "htdocs/nws/cf6table.module.js",
    "content": "\n// Modernized for Tabulator.js, Bootstrap 5, and vanilla JS\n// Rule(s): Tabulator migration, jQuery removal, Bootstrap5 UI, code modernization\n\n\nimport { TabulatorFull as Tabulator } from \"https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator_esm.min.mjs\";\n\nwindow.addEventListener(\"DOMContentLoaded\", () => {\n    const btn = document.getElementById(\"makefancy\");\n    if (!btn) {return;}\n    btn.addEventListener(\"click\", () => {\n        const tableElem = document.getElementById(\"thetable\");\n        if (!tableElem) {return;}\n        // Extract columns from thead\n        const thead = tableElem.querySelector('thead');\n        const headerCells = thead.querySelectorAll('tr th');\n        const columns = Array.from(headerCells).map((th, i) => {\n            const col = { title: th.textContent.trim(), field: `col${i}` };\n            // Only the first column (icon + date/station) is HTML\n            if (i === 0) {\n                col.headerSort = false;\n                col.formatter = 'html';\n                col.frozen = true;\n            }\n            return col;\n        });\n        // Extract data rows\n        const tbody = tableElem.querySelector('tbody');\n        if (!tbody) {return;}\n        const trs = tbody.querySelectorAll('tr');\n        const data = [];\n        trs.forEach(tr => {\n            const tds = tr.querySelectorAll('td');\n            const row = {};\n            for (let i = 0; i < columns.length; i++) {\n                const td = tds[i];\n                if (td) {\n                    row[`col${i}`] = (i === 0) ? td.innerHTML.trim() : td.textContent.trim();\n                } else {\n                    row[`col${i}`] = \"\";\n                }\n            }\n            data.push(row);\n        });\n        // Create a new div to host Tabulator\n        const tabDiv = document.createElement(\"div\");\n        tabDiv.id = \"thetable-tabulator\";\n        tableElem.parentNode.replaceChild(tabDiv, tableElem);\n        // Initialize Tabulator on the new div\n        const tab = new Tabulator(tabDiv, {\n            data,\n            columns,\n            layout: \"fitDataStretch\",\n            movableColumns: true,\n            height: \"600px\",\n            pagination: false,\n            downloadConfig: {\n                columnGroups: false,\n                rowGroups: false,\n            },\n            columnDefaults: {\n                headerHozAlign: \"center\",\n                vertAlign: \"middle\"\n            }\n        });\n        // Add export buttons\n        if (!document.getElementById(\"tab-export-btns\")) {\n            const exportDiv = document.createElement('div');\n            exportDiv.id = 'tab-export-btns';\n            exportDiv.className = 'my-2';\n            exportDiv.innerHTML =\n                '<button class=\"btn btn-sm btn-outline-primary me-2\" id=\"tab-csv\">Export CSV</button>' +\n                '<button class=\"btn btn-sm btn-outline-secondary me-2\" id=\"tab-xlsx\">Export XLSX</button>' +\n                '<button class=\"btn btn-sm btn-outline-success\" id=\"tab-json\">Export JSON</button>';\n            tabDiv.parentNode.insertBefore(exportDiv, tabDiv);\n            document.getElementById('tab-csv').onclick = () => tab.download('csv', 'cf6table.csv');\n            document.getElementById('tab-xlsx').onclick = () => tab.download('xlsx', 'cf6table.xlsx');\n            document.getElementById('tab-json').onclick = () => tab.download('json', 'cf6table.json');\n        }\n        btn.disabled = true;\n        btn.textContent = \"Table is Interactive\";\n    });\n});\n"
  },
  {
    "path": "htdocs/nws/cf6table.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 130);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/network.php\";\n\n$nt = new NetworkTable(\"NWSCLI\");\n\n$station = get_str404(\"station\", 'KDSM');\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\");\n$day = get_int404(\"day\");\n$opt = get_str404(\"opt\", \"bystation\");\n\n$ys = yearSelect(2001, $year, \"year\");\n$ms = monthSelect($month, \"month\");\n$ds = daySelect($day, \"day\");\n\n$byday = false;\nif ($opt === \"bystation\") {\n    $title = sprintf(\"Station: %s for Year: %s\", $station, $year);\n    $col1label = \"Date\";\n    $uri = sprintf(\n        \"%s/json/cf6.py?station=%s&year=%s\",\n        $INTERNAL_BASEURL,\n        $station,\n        $year\n    );\n    $data = file_get_contents($uri);\n    $json = json_decode($data, $assoc = TRUE);\n    $arr = $json['results'];\n} else {\n    $col1label = \"Station\";\n    $byday = true;\n    $day = mktime(0, 0, 0, $month, $day, $year);\n    $title = sprintf(\"All Stations for Date: %s\", date(\"d F Y\", $day));\n    $uri = sprintf(\n        \"%s/geojson/cf6.py?dt=%s\",\n        $INTERNAL_BASEURL,\n        date(\"Y-m-d\", $day)\n    );\n    $data = file_get_contents($uri);\n    $json = json_decode($data, $assoc = TRUE);\n    $arr = $json['features'];\n}\n$generated_at = $json['generated_at'];\n$prettyurl = str_replace($INTERNAL_BASEURL, $EXTERNAL_BASEURL, $uri);\n\n$table = <<<EOM\n<h3>{$title}</h3>\n<table id=\"thetable\" class=\"table table-striped table-bordered table-hover\">\n<thead>\n<tr class=\"small\">\n    <th>{$col1label}</th>\n    <th>High</th><th>Low</th><th>Avg</th><th>Departure</th><th>HDD</th>\n    <th>CDD</th>\n    <th>Precip</th><th>Snow</th><th>Snow Depth 12z</th>\n    <th>Avg Speed</th><th>Max Speed</th><th>Avg Drct</th>\n    <th>Max Gust</th><th>Gust Drct</th>\n    <th>Minutes Sunshine</th><th>Poss Sunshine</th>\n    <th>Cloud SS</th>\n    <th>Weather Codes [<a href=\"#wxcodes\">1</a>]</th>\n</tr>\n</thead>\n<tbody>\nEOM;\n\n$wxlookup = Array(\n    \"1\" => \"FG\",\n    \"2\" => \"DNSEFG\",\n    \"3\" => \"TS\",\n    \"4\" => \"IP\",\n    \"5\" => \"GR\",\n    \"6\" => \"FZRA\",\n    \"7\" => \"DSTSTM\",\n    \"8\" => \"HZ\",\n    \"9\" => \"BLSN\",\n    \"X\" => \"TOR\",\n    \"M\" => \"M\",\n    \" \" => \"\",  # GIGO\n);\n\n\nforeach ($arr as $entry) {\n    $row = ($opt === \"bystation\") ? $entry : $entry[\"properties\"];\n    $ts = strtotime($row[\"valid\"]);\n    if ($byday) {\n        $link = sprintf(\n            \"cf6table.php?station=%s&year=%s\",\n            $row[\"station\"],\n            date(\"Y\", $ts)\n        );\n        $col1 = sprintf(\n            \"<a href=\\\"%s\\\" class=\\\"small\\\">%s %s</a>\",\n            $link,\n            $row[\"station\"],\n            $nt->table[$row[\"station\"]]['name']\n        );\n    } else {\n        $link = sprintf(\n            \"cf6table.php?opt=bydate&year=%s&month=%s&day=%s\",\n            date(\"Y\", $ts),\n            date(\"m\", $ts),\n            date(\"d\", $ts)\n        );\n        $col1 = sprintf(\"<a href=\\\"%s\\\">%s</a>\", $link, date(\"Md,y\", $ts));\n    }\n    $wxcodes = \"\";\n    if (!is_null($row[\"wxcodes\"])){\n        foreach (str_split($row[\"wxcodes\"]) as $code) {\n            $wxcodes .= sprintf(\"%s \", $wxlookup[$code]);\n        }\n    }\n    $table .= sprintf(\n        \"\n        <tr>\n        <td nowrap><a href=\\\"/p.php?pid=%s\\\" target=\\\"_blank\\\">\n        <i class=\\\"bi bi-file-richtext\\\" alt=\\\"View Text\\\"></i></a>%s</td>\n            <td>%s</td><td nowrap>%s</td><td>%s</td>\n            <td>%s</td><td>%s</td><td>%s</td>\n            <td>%s</td><td>%s</td><td>%s</td>\n            <td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>\n            <td>%s</td><td>%s</td><td>%s</td><td>%s</td>\n            </tr>\",\n        $row[\"product\"],\n        $col1,\n        $row[\"high\"],\n        $row[\"low\"],\n        $row[\"avg_temp\"],\n        $row[\"dep_temp\"],\n        $row[\"hdd\"],\n        $row[\"cdd\"],\n        $row[\"precip\"],\n        $row[\"snow\"],\n        $row[\"snowd_12z\"],\n        $row[\"avg_smph\"],\n        $row[\"max_smph\"],\n        $row[\"avg_drct\"],\n        $row[\"gust_smph\"],\n        $row[\"gust_drct\"],\n        $row[\"minutes_sunshine\"],\n        $row[\"possible_sunshine\"],\n        $row[\"cloud_ss\"],\n        trim($wxcodes),\n    );\n}\n$table .= \"</tbody></table>\";\n\n$sselect = networkSelect(\"NWSCLI\", $station);\n\n$t = new MyView();\n$t->iemselect2 = TRUE;\n$t->title = \"Tabular CF6 Report Data\";\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/climate/\">Climate Data</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Tabular CF6 Report Data</li>\n</ol>\n</nav>\n\n<div class=\"row\">\n    <div class=\"col-md-3\">This application lists out parsed data from\n    National Weather Service issued daily climate reports.  These reports\n    contain 24 hour totals for a period between midnight <b>local standard time</b>.\n    This means that during daylight saving time, this period is from 1 AM to\n    1 AM local daylight time!\n    </div>\n    <div class=\"col-md-6 bg-light p-3 rounded\">\n    <h4>Option 1: One Station for One Year</h4>\n<form method=\"GET\" name=\"one\">\n<input type=\"hidden\" name=\"opt\" value=\"bystation\" />\n<p><strong>Select Station:</strong>\n    <br />{$sselect}\n    <br /><strong>Year:</strong>\n    <br />{$ys}\n    <br /><input type=\"submit\" value=\"Generate Table\" />\n</form>\n\n    </div>\n    <div class=\"col-md-3 bg-light p-3 rounded\">\n\n<h4>Option 2: One Day for Stations</h4>\n<form method=\"GET\" name=\"two\">\n<input type=\"hidden\" name=\"opt\" value=\"bydate\" />\n    {$ys} {$ms} {$ds}\n    <br /><input type=\"submit\" value=\"Generate Table\" />\n</form>\n    </div>\n</div>\n\n<p>This table's data was generated at: <code>{$generated_at}</code> by a\n<a href=\"/json/\">JSON(P) webservice</a>, you can directly access it here:\n<br /><code>{$prettyurl}</code></p>\n\n<p><button id=\"makefancy\">Make Table Interactive</button></p>\n\n{$table}\n\n<p><a name=\"wxcodes\">1. Weather Codes</a>:\n\n<br />The original CF6 text files use a symbol code to identify weather\nconditions.  The table presented on this page converts these codes into\nperhaps a slightly more human readable format.  The codes are as follows:\n\n<br />\n<table class=\"table table-striped table-bordered table-hover\">\n<thead>\n<tr><th>CF6 Code</th><th>Abbrev</th><th>Meaning</th></tr>\n</thead>\n<tbody>\n<tr><td>1</td><td>FG</td><td>Fog or Mist</td></tr>\n<tr><td>2</td><td>DNSEFG</td><td>Fog or Vis 0.25 mile or less</td></tr>\n<tr><td>3</td><td>TS</td><td>Thunder</td></tr>\n<tr><td>4</td><td>IP</td><td>Ice pellets</td></tr>\n<tr><td>5</td><td>GR</td><td>Hail</td></tr>\n<tr><td>6</td><td>FZRA</td><td>Freezing Rain or Drizzle</td></tr>\n<tr><td>7</td><td>DSTSTM</td><td>Duststorm or Sandstorm vis 0.25 mile or less</td></tr>\n<tr><td>8</td><td>HZ</td><td>Smoke or Haze</td></tr>\n<tr><td>9</td><td>BLSN</td><td>Blowing Snow</td></tr>\n<tr><td>X</td><td>TOR</td><td>Tornado</td></tr>\n<tr><td>M</td><td>M</td><td>Missing Data</td></tr>\n</tbody>\n</table></p>\n\nEOM;\n\n$t->headextra = <<<EOM\n<link href=\"https://unpkg.com/tabulator-tables@6.3.1/dist/css/tabulator_bootstrap5.min.css\" rel=\"stylesheet\" type=\"text/css\" />\n<link rel=\"stylesheet\" href=\"cf6table.css\" />\nEOM;\n$t->jsextra = <<<EOM\n<script type=\"module\" src=\"cf6table.module.js?v=2\"></script>\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/nws/cli-audit/index.css",
    "content": ".cli-audit-table {\n    table-layout: auto;\n    width: 100%;\n}\n\n.cli-audit-table .cli-valid-cell,\n.cli-audit-table th:nth-child(1) {\n    width: 9.5rem;\n    white-space: nowrap;\n}\n\n.cli-audit-table .cli-source-cell,\n.cli-audit-table th:nth-child(2) {\n    width: 7.5rem;\n}\n\n.cli-audit-table .cli-value-cell,\n.cli-audit-table th:nth-child(3) {\n    width: 5.5rem;\n    white-space: nowrap;\n}\n\n.cli-audit-table .cli-source-cell,\n.cli-audit-table .cli-desc-cell {\n    white-space: normal;\n    overflow-wrap: anywhere;\n    word-break: break-word;\n}\n\n.cli-audit-table .cli-desc-cell {\n    max-width: 0;\n}\n"
  },
  {
    "path": "htdocs/nws/cli-audit/index.module.js",
    "content": "const getStationField = formEl =>\n    formEl.querySelector('#station') ||\n    formEl.querySelector(\"select[name='station']\") ||\n    formEl.querySelector(\"input[name='station']\");\n\nconst updateStatus = (statusEl, message, klass = 'secondary') => {\n    statusEl.className = `alert alert-${klass}`;\n    statusEl.textContent = message;\n};\n\nconst buildLink = (url, label) => {\n    if (!url) {\n        return null;\n    }\n    const atag = document.createElement('a');\n    atag.href = url;\n    atag.target = '_blank';\n    atag.rel = 'noopener noreferrer';\n    atag.textContent = label;\n    return atag;\n};\n\nconst formatLocalValid = value => {\n    if (!value) {\n        return '';\n    }\n    const match = value.match(\n        /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})/\n    );\n    if (!match) {\n        return value;\n    }\n\n    const year = Number(match[1]);\n    const month = Number(match[2]);\n    const day = Number(match[3]);\n    const hour24 = Number(match[4]);\n    const minute = Number(match[5]);\n    const labels = [\n        'Jan',\n        'Feb',\n        'Mar',\n        'Apr',\n        'May',\n        'Jun',\n        'Jul',\n        'Aug',\n        'Sep',\n        'Oct',\n        'Nov',\n        'Dec'\n    ];\n    if (\n        Number.isNaN(year) ||\n        Number.isNaN(month) ||\n        Number.isNaN(day) ||\n        Number.isNaN(hour24) ||\n        Number.isNaN(minute) ||\n        month < 1 ||\n        month > 12\n    ) {\n        return value;\n    }\n    const suffix = hour24 >= 12 ? 'PM' : 'AM';\n    const hour12 = hour24 % 12 || 12;\n    return `${labels[month - 1]} ${day}, ${hour12}:${String(minute).padStart(2, '0')} ${suffix}`;\n};\n\nconst buildValueBadge = (value, previousValue) => {\n    const badge = document.createElement('span');\n    badge.className = 'badge text-bg-secondary';\n    if (value === null || value === undefined) {\n        return { badge, nextPreviousValue: previousValue };\n    }\n    const currentValue = Number(value);\n    if (Number.isFinite(currentValue) && previousValue !== null) {\n        if (currentValue > previousValue) {\n            badge.className = 'badge text-bg-danger';\n        } else if (currentValue < previousValue) {\n            badge.className = 'badge text-bg-primary';\n        } else {\n            badge.className = 'badge text-bg-success';\n        }\n    }\n    badge.textContent = `${value}`;\n    return {\n        badge,\n        nextPreviousValue: Number.isFinite(currentValue)\n            ? currentValue\n            : previousValue\n    };\n};\n\nconst renderTable = (target, events) => {\n    target.textContent = '';\n    if (!events || events.length === 0) {\n        const div = document.createElement('div');\n        div.className = 'p-3 text-muted';\n        div.textContent = 'No events found.';\n        target.append(div);\n        return;\n    }\n\n    const table = document.createElement('table');\n    table.className = 'table table-sm table-striped mb-0 cli-audit-table';\n\n    const thead = document.createElement('thead');\n    thead.innerHTML =\n        '<tr><th>Local Valid</th><th>Source</th><th>Value</th><th>Description</th></tr>';\n    table.append(thead);\n\n    const tbody = document.createElement('tbody');\n    let previousValue = null;\n    for (const event of events) {\n        const row = document.createElement('tr');\n\n        const validCell = document.createElement('td');\n        validCell.className = 'cli-valid-cell';\n        validCell.textContent = formatLocalValid(event.local_valid);\n        validCell.title = `local: ${event.local_valid || ''}\\nutc: ${event.utc_valid || ''}`;\n        row.append(validCell);\n\n        const sourceCell = document.createElement('td');\n        sourceCell.className = 'cli-source-cell';\n        const sourceText = event.source || '';\n        const sourceLink = buildLink(event.link, sourceText);\n        if (sourceLink) {\n            sourceCell.append(sourceLink);\n        } else {\n            sourceCell.textContent = sourceText;\n        }\n        row.append(sourceCell);\n\n        const valueCell = document.createElement('td');\n        valueCell.className = 'cli-value-cell';\n        const { badge, nextPreviousValue } = buildValueBadge(\n            event.value,\n            previousValue\n        );\n        previousValue = nextPreviousValue;\n        valueCell.append(badge);\n        row.append(valueCell);\n\n        const descCell = document.createElement('td');\n        descCell.className = 'cli-desc-cell';\n        descCell.textContent = event.description || '';\n        descCell.title = event.description || '';\n        row.append(descCell);\n\n        tbody.append(row);\n    }\n    table.append(tbody);\n    target.append(table);\n};\n\nconst updateUrl = (station, date) => {\n    const params = new URLSearchParams({ station, date });\n    window.history.replaceState({}, '', `?${params.toString()}`);\n};\n\nconst getTodayDateString = () => {\n    const now = new Date();\n    const year = now.getFullYear();\n    const month = String(now.getMonth() + 1).padStart(2, '0');\n    const day = String(now.getDate()).padStart(2, '0');\n    return `${year}-${month}-${day}`;\n};\n\nconst updateServiceMeta = (metaEl, serviceUrl, generatedAt = null) => {\n    if (!metaEl) {\n        return;\n    }\n    metaEl.textContent = '';\n\n    const generated = document.createElement('span');\n    generated.textContent = generatedAt\n        ? `Generated at: ${generatedAt}. `\n        : 'Generated at: unavailable. ';\n    metaEl.append(generated);\n\n    const cache = document.createElement('span');\n    cache.textContent = 'Backend JSON service caching: 3 minutes. Endpoint: ';\n    metaEl.append(cache);\n\n    const endpoint = document.createElement('a');\n    endpoint.href = serviceUrl;\n    endpoint.textContent = serviceUrl;\n    endpoint.target = '_blank';\n    endpoint.rel = 'noopener noreferrer';\n    metaEl.append(endpoint);\n};\n\nconst loadAudit = async (station, date, statusEl, highEl, lowEl, metaEl) => {\n    const params = new URLSearchParams({ station, date });\n    const serviceUrl = `/json/cli_audit.py?${params.toString()}`;\n    updateStatus(statusEl, 'Loading audit data...', 'secondary');\n    updateServiceMeta(metaEl, serviceUrl);\n    highEl.textContent = '';\n    lowEl.textContent = '';\n\n    try {\n        const response = await fetch(serviceUrl);\n        if (!response.ok) {\n            throw new Error(`Service returned ${response.status}`);\n        }\n        const data = await response.json();\n        renderTable(highEl, data.high?.events || []);\n        renderTable(lowEl, data.low?.events || []);\n        updateServiceMeta(metaEl, serviceUrl, data.generated_at);\n        updateStatus(\n            statusEl,\n            `Loaded ${station} for ${date}. High events: ${data.high?.events?.length || 0}, Low events: ${data.low?.events?.length || 0}.`,\n            'success'\n        );\n    } catch (err) {\n        updateStatus(statusEl, `Failed to load audit data: ${err.message}`, 'danger');\n    }\n};\n\nconst initFromUrl = (stationEl, dateEl, statusEl, highEl, lowEl, metaEl) => {\n    const params = new URLSearchParams(window.location.search);\n    const station = (params.get('station') || 'KDSM').toUpperCase();\n    const date = params.get('date') || getTodayDateString();\n    stationEl.value = station;\n    dateEl.value = date;\n    updateUrl(station, date);\n    loadAudit(station, date, statusEl, highEl, lowEl, metaEl);\n};\n\nconst init = () => {\n    const formEl = document.getElementById('query-form');\n    const dateEl = document.getElementById('date');\n    const statusEl = document.getElementById('status');\n    const metaEl = document.getElementById('service-meta');\n    const highEl = document.getElementById('high-events');\n    const lowEl = document.getElementById('low-events');\n    if (!formEl || !dateEl || !statusEl || !highEl || !lowEl) {\n        return;\n    }\n\n    const stationEl = getStationField(formEl);\n    if (!stationEl) {\n        updateStatus(statusEl, 'Station field not found on page.', 'danger');\n        return;\n    }\n\n    const syncParams = () => {\n        const station = stationEl.value.trim().toUpperCase();\n        const date = dateEl.value || getTodayDateString();\n        stationEl.value = station;\n        dateEl.value = date;\n        updateUrl(station, date);\n        loadAudit(station, date, statusEl, highEl, lowEl, metaEl);\n    };\n\n    stationEl.addEventListener('change', syncParams);\n    dateEl.addEventListener('change', syncParams);\n\n    formEl.addEventListener('submit', evt => {\n        evt.preventDefault();\n        const station = stationEl.value.trim().toUpperCase();\n        const date = dateEl.value;\n        stationEl.value = station;\n        updateUrl(station, date);\n        loadAudit(station, date, statusEl, highEl, lowEl, metaEl);\n    });\n\n    initFromUrl(stationEl, dateEl, statusEl, highEl, lowEl, metaEl);\n};\n\nif (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n} else {\n    init();\n}\n"
  },
  {
    "path": "htdocs/nws/cli-audit/index.php",
    "content": "<?php\n// An audit of how the sausage gets made in the CLI\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", \"169\");\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n$t->iemselect2 = TRUE;\n$t->title = \"Audit of NWS CLI Data\";\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"index.css\">\nEOM;\n$t->jsextra = <<<EOM\n<script type=\"module\" src=\"index.module.js\"></script>\nEOM;\n\n$sselect = networkSelect(\"NWSCLI\", \"\");\n\n$t->content = <<<EOM\n\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Mainpage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Audit of NWS CLI Data</li>\n</ol>\n</nav>\n\n<p>\nDue to the ongoing \"fun\" associated with <a href=\"/onsite/news.phtml?id=1469\">\nwagering on ASOS temperatures</a>, this page attempts to show an audit path on\nwhich products go into figuring out a given airport station's daily high\nand low temperature.  This page only works for stations having NWS CLI product\ncoverage. This audit path includes raw METARs, METAR 6 Hour max/min\nvalues, Daily Summary Messages (DSM)s, CLImate Reports (CLI), and CF6 Reports.\nThis is all <strong>unofficial data</strong> and is not intended for\ngambling purposes!\n</p>\n\n<div class=\"card mb-3\">\n    <div class=\"card-body\">\n        <form id=\"query-form\" class=\"row g-3 align-items-end\">\n            <div class=\"col-md-4\">\n                <label class=\"form-label fw-bold\">Select Station:</label>\n                        {$sselect}\n\n            </div>\n            <div class=\"col-md-4\">\n                <label class=\"form-label\" for=\"date\">Date</label>\n                <input id=\"date\" name=\"date\" type=\"date\" class=\"form-control\"\n                         required>\n            </div>\n            <div class=\"col-md-4\">\n                <button type=\"submit\" class=\"btn btn-primary\">Load Audit</button>\n            </div>\n        </form>\n    </div>\n</div>\n\n<div id=\"status\" class=\"alert alert-secondary\" role=\"status\" aria-live=\"polite\">\n    Select a station/date and load audit data.\n</div>\n\n<div id=\"service-meta\" class=\"alert alert-light\" role=\"note\" aria-live=\"polite\">\n    JSON service metadata will appear here after loading data.\n</div>\n\n<div class=\"row g-3\">\n    <div class=\"col-lg-6\">\n        <div class=\"card h-100\">\n            <div class=\"card-header\">Daily High Temperature Events</div>\n            <div class=\"card-body p-0\">\n                <div id=\"high-events\" class=\"table-responsive\"></div>\n            </div>\n        </div>\n    </div>\n    <div class=\"col-lg-6\">\n        <div class=\"card h-100\">\n            <div class=\"card-header\">Daily Low Temperature Events</div>\n            <div class=\"card-body p-0\">\n                <div id=\"low-events\" class=\"table-responsive\"></div>\n            </div>\n        </div>\n    </div>\n</div>\n\n<h3>Application Notes</h3>\n\n<ol>\n <li>\"High Frequency\" MADIS data is not used due to\n <a href=\"/onsite/news.phtml?id=1290\">reporting in whole degree C</a> and\n not using standard two minute averaging.</li>\n <li>The NWS computes this over a local standard day, so 1 AM till 1 AM\n local during daylight saving time. This app attempts to account for that.</li>\n <li>It is sometimes vague what happens with the METAR report that occurs\n just before midnight local for the start of the period.  This app considers\n the temperature report, but not the 6 hour max/min reported at this time.</li>\n</ol>\n\nEOM;\n\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/nws/climap.css",
    "content": "/* Climap Application Styles */\n\n.map {\n    height: 70vh;\n    width: 100%;\n    border: 1px solid #dee2e6;\n    border-radius: 0.375rem;\n    position: relative;\n}\n\n.popover {\n    width: 320px;\n    max-width: 90vw;\n}\n\n.popover-body {\n    font-size: 0.875rem;\n    line-height: 1.5;\n}\n\n/* Font size controls styling */\n.btn-group .btn.disabled {\n    pointer-events: none;\n    background-color: #e9ecef;\n    border-color: #dee2e6;\n}\n\n/* Loading states */\n.loading {\n    opacity: 0.6;\n    pointer-events: none;\n}\n\n.loading-spinner {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n    z-index: 1000;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n    .map {\n        height: 50vh;\n    }\n    \n    .popover {\n        width: 280px;\n    }\n    \n    .btn-group .btn {\n        padding: 0.25rem 0.5rem;\n        font-size: 0.875rem;\n    }\n}"
  },
  {
    "path": "htdocs/nws/climap.js",
    "content": "/* global ol */\nlet renderattr = 'high';\nlet vectorLayer = null;\nlet map = null;\nlet popup = null;\nlet fontSize = 14;\n\n/**\n * Replace HTML special characters with their entity equivalents\n */\nfunction escapeHTML(val) {\n    return val\n        .replace(/&/g, '&amp;')\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/\"/g, '&quot;')\n        .replace(/'/g, '&#039;');\n}\n\n/**\n * Get current date string from date picker (YYYY-MM-DD format)\n * Avoids timezone issues by working directly with the string value\n */\nfunction getCurrentDateString() {\n    const datePicker = document.getElementById('datepicker');\n    return escapeHTML(datePicker.value); // Already in YYYY-MM-DD format\n}\n\n/**\n * Update URL parameters with current state\n */\nfunction updateURL() {\n    const dateStr = getCurrentDateString();\n    const url = new URL(window.location);\n    url.searchParams.set('date', dateStr);\n    url.searchParams.set('var', renderattr);\n    window.history.pushState({}, '', url);\n}\n\n/**\n * Update map with new render attribute\n */\nfunction updateMap() {\n    const selectElement = document.getElementById('renderattr');\n    renderattr = escapeHTML(selectElement.value);\n    vectorLayer.setStyle(vectorLayer.getStyle());\n    updateURL();\n}\n\n/**\n * Update map with new date\n */\nfunction updateDate() {\n    const dateStr = getCurrentDateString();\n\n    // Show loading state\n    const mapElement = document.getElementById('map');\n    mapElement.classList.add('loading');\n\n    map.removeLayer(vectorLayer);\n    vectorLayer = makeVectorLayer(dateStr);\n    map.addLayer(vectorLayer);\n\n    // Remove loading state after a brief delay\n    setTimeout(() => {\n        mapElement.classList.remove('loading');\n    }, 500);\n\n    updateURL();\n}\n\n/**\n * Style function for vector features\n */\nconst vectorStyleFunction = feature => {\n    let value = feature.get(renderattr);\n    let color = '#FFFFFF';\n    const outlinecolor = '#000000';\n    if (value !== 'M') {\n        if (renderattr.indexOf(\"years\") > -1) {\n            value = value.join(\",\");\n        }\n        else if (renderattr.indexOf('depart') > -1) {\n            if (renderattr.indexOf('high') > -1 || renderattr.indexOf('low') > -1) {\n                if (value > 0) {\n                    color = '#FF0000';\n                } else if (value < 0) {\n                    color = '#00FFFF';\n                }\n            } else {\n                if (value < 0) {\n                    color = '#FF0000';\n                } else if (value > 0) {\n                    color = '#00FFFF';\n                }\n            }\n        }\n        return [\n            new ol.style.Style({\n                fill: new ol.style.Fill({\n                    color: 'rgba(255, 255, 255, 0.6)',\n                }),\n                text: new ol.style.Text({\n                    font: `${fontSize}px Calibri,sans-serif`,\n                    text: value.toString(),\n                    fill: new ol.style.Fill({\n                        color,\n                        width: 1,\n                    }),\n                    stroke: new ol.style.Stroke({\n                        color: outlinecolor,\n                        width: 3,\n                    }),\n                }),\n            }),\n        ];\n    }\n    return [\n        new ol.style.Style({\n            image: new ol.style.Circle({\n                fill: new ol.style.Fill({\n                    color: 'rgba(255,255,255,0.4)',\n                }),\n                stroke: new ol.style.Stroke({\n                    color: '#3399CC',\n                    width: 1.25,\n                }),\n                radius: 5,\n            }),\n            fill: new ol.style.Fill({\n                color: 'rgba(255,255,255,0.4)',\n            }),\n            stroke: new ol.style.Stroke({\n                color: '#3399CC',\n                width: 1.25,\n            }),\n        }),\n    ];\n};\n\n/**\n * Create vector layer for given date\n */\nfunction makeVectorLayer(dt) {\n    return new ol.layer.Vector({\n        source: new ol.source.Vector({\n            format: new ol.format.GeoJSON(),\n            projection: ol.proj.get('EPSG:3857'),\n            url: `/geojson/cli.py?dt=${dt}`,\n        }),\n        style: vectorStyleFunction,\n    });\n}\n\n/**\n * Create and show popover with feature information\n */\nfunction showPopover(feature, coordinate) {\n    const content = `\n        <div class=\"p-2\">\n            <h6 class=\"mb-2\"><strong>${feature.get('name')}</strong></h6>\n            <div class=\"row g-1\">\n                <div class=\"col-6\"><small><strong>High:</strong> ${feature.get('high')}</small></div>\n                <div class=\"col-6\"><small>Norm: ${feature.get('high_normal')}</small></div>\n                <div class=\"col-6\"><small>Rec: ${feature.get('high_record')} (${feature.get('high_record_years').join(',')})</small></div>\n                <div class=\"col-6\"><small><strong>Low:</strong> ${feature.get('low')}</small></div>\n                <div class=\"col-6\"><small>Norm: ${feature.get('low_normal')}</small></div>\n                <div class=\"col-6\"><small>Rec: ${feature.get('low_record')} (${feature.get('low_record_years').join(',')})</small></div>\n                <div class=\"col-6\"><small><strong>Precip:</strong> ${feature.get('precip')}</small></div>\n                <div class=\"col-6\"><small>Rec: ${feature.get('precip_record')} (${feature.get('precip_record_years').join(',')})</small></div>\n                <div class=\"col-6\"><small><strong>Snow:</strong> ${feature.get('snow')}</small></div>\n                <div class=\"col-6\"><small>Rec: ${feature.get('snow_record')} (${feature.get('snow_record_years').join(',')})</small></div>\n            </div>\n        </div>\n    `;\n\n    // Use the OpenLayers popup element directly\n    const popupElement = document.getElementById('popup');\n    popupElement.innerHTML = `\n        <div class=\"popover bs-popover-top show\">\n            <div class=\"popover-arrow\"></div>\n            <div class=\"popover-body\">${content}</div>\n        </div>\n    `;\n\n    // Position the popup using OpenLayers\n    popup.setPosition(coordinate);\n}\n\n/**\n * Hide popover\n */\nfunction hidePopover() {\n    const popupElement = document.getElementById('popup');\n    popupElement.innerHTML = '';\n    popup.setPosition(null);\n}\n\n/**\n * Fetch and display CLI report\n */\nasync function fetchCLIReport(url) {\n    const reportDiv = document.getElementById('clireport');\n    reportDiv.innerHTML =\n        '<div class=\"d-flex align-items-center\"><div class=\"spinner-border spinner-border-sm me-2\" role=\"status\"></div>Loading CLI report...</div>';\n\n    try {\n        const response = await fetch(url);\n        if (!response.ok) {throw new Error('Network response was not ok');}\n        const data = await response.text();\n        reportDiv.innerHTML = `<pre class=\"mb-0\">${data}</pre>`;\n    } catch (error) {\n        reportDiv.innerHTML = `<div class=\"alert alert-warning mb-0\">Failed to fetch CLI report. ${error} Please try again.</div>`;\n    }\n}\n\n/**\n * Set date picker to specific date string (YYYY-MM-DD format)\n * Avoids timezone issues by working directly with string values\n */\n/**\n * Set date picker to specific date string (YYYY-MM-DD format)\n * Avoids timezone issues by working directly with string values\n */\nfunction setDatePickerValue(dateStr) {\n    const datePicker = document.getElementById('datepicker');\n    datePicker.value = dateStr;\n}\n\n/**\n * Parse URL parameters and update interface\n * Handles migration from legacy hash-based URLs to modern URL parameters\n * Legacy format: #YYMMDD/variable -> Modern format: ?date=YYYY-MM-DD&var=variable\n */\nfunction parseURLParameters() {\n    const urlParams = new URLSearchParams(window.location.search);\n\n    // Check for legacy hash parameters first and migrate them\n    const tokens = window.location.href.split('#');\n    if (tokens.length === 2) {\n        const hashTokens = tokens[1].split('/');\n        if (hashTokens.length === 2) {\n            const tpart = escapeHTML(hashTokens[0]);\n            const hashRenderattr = escapeHTML(hashTokens[1]);\n\n            // Parse date from hash (YYMMDD format) and convert to YYYY-MM-DD\n            if (tpart.length === 6) {\n                const year = 2000 + parseInt(tpart.substring(0, 2));\n                const month = String(parseInt(tpart.substring(2, 4))).padStart(2, '0');\n                const day = String(parseInt(tpart.substring(4, 6))).padStart(2, '0');\n                const dateStr = `${year}-${month}-${day}`;\n\n                // Redirect to new URL format\n                const newUrl = new URL(window.location);\n                newUrl.hash = '';\n                newUrl.searchParams.set('date', dateStr);\n                newUrl.searchParams.set('var', hashRenderattr);\n                window.location.replace(newUrl.toString());\n                return;\n            }\n        }\n    }\n\n    // Handle modern URL parameters\n    const dateParam = urlParams.get('date');\n    const varParam = urlParams.get('var');\n\n    if (varParam) {\n        renderattr = escapeHTML(varParam);\n        const selectElement = document.getElementById('renderattr');\n        selectElement.value = renderattr;\n    }\n\n    if (dateParam) {\n        // Validate date format (YYYY-MM-DD) and set directly to avoid timezone issues\n        if (/^\\d{4}-\\d{2}-\\d{2}$/.test(dateParam)) {\n            setDatePickerValue(dateParam);\n            updateDate();\n        }\n    }\n}\n\n/**\n * Initialize the application\n */\ndocument.addEventListener('DOMContentLoaded', () => {\n    // Initialize renderattr from the form's selected value\n    const selectElement = document.getElementById('renderattr');\n    renderattr = selectElement.value;\n\n    // Set up date picker (PHP already sets the initial value)\n    const datePicker = document.getElementById('datepicker');\n\n    // Set up date picker change handler\n    datePicker.addEventListener('change', () => {\n        updateDate();\n    });\n\n    // Initialize vector layer with current date picker value\n    const currentDateStr = getCurrentDateString();\n    vectorLayer = makeVectorLayer(currentDateStr);\n\n    // Set up map\n    map = new ol.Map({\n        target: 'map',\n        layers: [\n            new ol.layer.Tile({\n                title: 'Global Imagery',\n                source: new ol.source.XYZ({\n                    attributions:\n                        'Tiles © <a href=\"https://services.arcgisonline.com/ArcGIS/' +\n                        'rest/services/World_Imagery/MapServer\">ArcGIS</a>',\n                    url:\n                        'https://server.arcgisonline.com/ArcGIS/rest/services/' +\n                        'World_Imagery/MapServer/tile/{z}/{y}/{x}',\n                }),\n            }),\n            new ol.layer.Tile({\n                title: 'State Boundaries',\n                source: new ol.source.XYZ({\n                    url: '/c/tile.py/1.0.0/usstates/{z}/{x}/{y}.png',\n                }),\n            }),\n            vectorLayer,\n        ],\n        view: new ol.View({\n            projection: 'EPSG:3857',\n            center: [-10575351, 5160979],\n            zoom: 3,\n        }),\n    });\n\n    map.addControl(new ol.control.LayerSwitcher());\n\n    // Set up popup overlay\n    const element = document.getElementById('popup');\n    popup = new ol.Overlay({\n        element,\n        positioning: 'bottom-center',\n        stopEvent: false,\n    });\n    map.addOverlay(popup);\n\n    // Handle map clicks\n    map.on('click', evt => {\n        const feature = map.forEachFeatureAtPixel(evt.pixel, feature2 => {\n            return feature2;\n        });\n\n        if (feature) {\n            const geometry = feature.getGeometry();\n            const coord = geometry.getCoordinates();\n            showPopover(feature, coord);\n\n            // Fetch CLI report\n            const link = feature.get('link');\n            if (link) {\n                fetchCLIReport(link);\n            }\n        } else {\n            hidePopover();\n        }\n    });\n\n    // Parse URL parameters if present\n    parseURLParameters();\n\n    // Font size buttons\n    document.getElementById('fplus').addEventListener('click', () => {\n        fontSize += 2;\n        vectorLayer.setStyle(vectorStyleFunction);\n    });\n\n    document.getElementById('fminus').addEventListener('click', () => {\n        fontSize -= 2;\n        vectorLayer.setStyle(vectorStyleFunction);\n    });\n\n    // CSV download button\n    document.getElementById('dlcsv').addEventListener('click', () => {\n        const dateStr = getCurrentDateString();\n        window.location.href = `/geojson/cli.py?dl=1&fmt=csv&dt=${dateStr}`;\n    });\n\n    // Render attribute change handler\n    document.getElementById('renderattr').addEventListener('change', () => {\n        updateMap();\n    });\n});\n"
  },
  {
    "path": "htdocs/nws/climap.php",
    "content": "<?php\n// Produce a map of CLI parsed data for a single day\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 76);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/mlib.php\";\nrequire_once \"../../include/forms.php\";\nforce_https();\n\n// Handle URL parameters for date and variable selection\n$date_param = get_str404(\"date\", date(\"Y-m-d\"));\n$var_param = get_str404(\"var\", \"high\");\n\n// Validate date parameter\n$valid_date = $date_param;\nif (!preg_match('/^\\d{4}-\\d{2}-\\d{2}$/', $date_param) || !strtotime($date_param)) {\n    $valid_date = date(\"Y-m-d\");\n}\n\n// Define available render variables with their display names\n$render_vars = [\n    \"high\" => \"High Temperature\",\n    \"high_depart\" => \"High Temperature Departure\",\n    \"high_record\" => \"Record High Temperature\",\n    \"high_record_years\" => \"Record High Temperature Years\",\n    \"high_normal\" => \"Normal High Temperature\",\n    \"low\" => \"Low Temperature\",\n    \"low_depart\" => \"Low Temperature Departure\",\n    \"low_record\" => \"Record Low Temperature\",\n    \"low_record_years\" => \"Record Low Temperature Years\",\n    \"low_normal\" => \"Normal Low Temperature\",\n    \"precip\" => \"Precipitation\",\n    \"precip_month\" => \"Precipitation this month\",\n    \"precip_jan1\" => \"Precipitation since January 1\",\n    \"precip_jan1_normal\" => \"Precipitation since January 1 Normal\",\n    \"precip_jan1_depart\" => \"Precipitation since January 1 Departure\",\n    \"precip_jun1\" => \"Precipitation since June 1\",\n    \"precip_jun1_normal\" => \"Precipitation since June 1 Normal\",\n    \"precip_dec1\" => \"Precipitation since December 1\",\n    \"precip_dec1_normal\" => \"Precipitation since December 1 Normal\",\n    \"precip_record\" => \"Precipitation Record\",\n    \"precip_record_years\" => \"Precipitation Record Years\",\n    \"precip_month_normal\" => \"Precipitation this month normal\",\n    \"snow\" => \"Snowfall\",\n    \"snowdepth\" => \"Snow Depth [inch]\",\n    \"snow_month\" => \"Snowfall this month\",\n    \"snow_jun1\" => \"Snowfall since June 1\",\n    \"snow_jul1\" => \"Snowfall since July 1\",\n    \"snow_jul1_depart\" => \"Snowfall since July 1 Departure\",\n    \"snow_dec1\" => \"Snowfall since December 1\",\n    \"snow_record\" => \"Snowfall Record\",\n    \"snow_record_years\" => \"Snowfall Record Years\",\n    \"resultant_wind_speed\" => \"Resultant Wind Speed [mph]\",\n    \"resultant_wind_direction\" => \"Resultant Wind Direction\",\n    \"highest_wind_speed\" => \"Highest Wind Speed [mph]\",\n    \"highest_wind_direction\" => \"Highest Wind Direction\",\n    \"highest_gust_speed\" => \"Highest Wind Gust [mph]\",\n    \"highest_gust_direction\" => \"Highest Gust Direction\",\n    \"average_wind_speed\" => \"Average Wind Speed [mph]\"\n];\n\n// Validate variable parameter\n$valid_var = array_key_exists($var_param, $render_vars) ? $var_param : \"high\";\n\n// Generate select element using helper function\n$render_select = make_select(\"renderattr\", $valid_var, $render_vars, \"\", \"form-select\", FALSE, FALSE, TRUE, [\"id\" => \"renderattr\"]);\n\n$t = new MyView();\n$t->title = \"Map of Daily NWS CLImage reports\";\n$OL = '10.7.0';\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol.css\" type=\"text/css\">\n<link type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"climap.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"/vendor/openlayers/{$OL}/ol.js\" type=\"text/javascript\"></script>\n<script src='/vendor/openlayers/{$OL}/ol-layerswitcher.js'></script>\n<script src='climap.js?v=9'></script>\nEOM;\n\n$t->content = <<<EOM\n\n<div id=\"popover-content\" style=\"display: none\">\n  <!-- Hidden div with the popover content -->\n  <p>This is the popover content</p>\n</div>\n\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Mainpage</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">Map of NWS Daily CLI Reports</li>\n</ol>\n</nav>\n\n<div class=\"row\">\n<div class=\"col-12\">\n    <div class=\"d-flex justify-content-between align-items-center mb-3\">\n        <h4 class=\"mb-0\">Map of NWS Daily CLI Reports</h4>\n        <div class=\"btn-group\" role=\"group\" aria-label=\"Font size controls\">\n            <button id=\"fminus\" class=\"btn btn-outline-secondary btn-sm\" type=\"button\"\n                title=\"Decrease font size\">\n                <i class=\"bi bi-dash\" aria-hidden=\"true\"></i>\n            </button>\n            <span class=\"btn btn-outline-secondary btn-sm disabled\">\n                <i class=\"bi bi-text-paragraph\" aria-hidden=\"true\"></i>\n            </span>\n            <button id=\"fplus\" class=\"btn btn-outline-secondary btn-sm\" type=\"button\"\n                title=\"Increase font size\">\n                <i class=\"bi bi-plus\" aria-hidden=\"true\"></i>\n            </button>\n        </div>\n    </div>\n\n    <form name='climapform' class=\"mb-4\">\n        <div class=\"row g-3 align-items-end\">\n            <div class=\"col-md-6\">\n                <label for=\"renderattr\" class=\"form-label\">Select Variable to Plot:</label>\n                {$render_select}\n            </div>\n            <div class=\"col-md-4\">\n                <label for=\"datepicker\" class=\"form-label\">Select Date:</label>\n                <input type=\"date\" id=\"datepicker\" class=\"form-control\" value=\"{$valid_date}\">\n            </div>\n            <div class=\"col-md-2\">\n                <button id=\"dlcsv\" class=\"btn btn-success w-100\" type=\"button\">\n                    <i class=\"bi bi-download\" aria-hidden=\"true\"></i> CSV\n                </button>\n            </div>\n        </div>\n    </form>\n</div></div><!-- ./row -->\n\n<div class=\"row\">\n<div class=\"col-12\">\n    <div id=\"map\" class=\"map\">\n        <div id=\"popup\"></div>\n    </div>\n</div>\n</div>\n\n<div class=\"row\">\n<div class=\"col-12\">\n    <div class=\"card mt-4\">\n        <div class=\"card-header\">\n            <h5 class=\"card-title mb-0\">CLI Report Details</h5>\n            <small class=\"text-muted\">Click on map markers to view detailed CLI text report</small>\n        </div>\n        <div class=\"card-body\">\n            <div id=\"clireport\">\n                <p class=\"text-muted mb-0\">Click on a map location to view the CLI text report for that station.</p>\n            </div>\n        </div>\n    </div>\n</div>\n</div>\n\nEOM;\n\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/nws/clitable.css",
    "content": ".empty{\n    width: 0px !important;\n    border: 0px !important;\n    padding: 2px !important;\n    background: tan !important;\n}\n\n/* Tabulator table customizations for CLI data */\n.tabulator {\n    border: 1px solid var(--bs-border-color);\n    border-radius: 0.375rem;\n    overflow: hidden;\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n}\n\n.tabulator .tabulator-header {\n    background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);\n    border-bottom: 2px solid var(--bs-border-color);\n}\n\n.tabulator .tabulator-header .tabulator-col {\n    border-right: 1px solid var(--bs-border-color);\n    background-color: transparent;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n    padding: 0.5rem 0.25rem;\n    font-weight: 600;\n    font-size: 0.75rem;\n    text-align: center;\n    line-height: 1.2;\n}\n\n/* Frozen column styling */\n.tabulator .tabulator-frozen.tabulator-frozen-left {\n    border-right: 2px solid var(--bs-primary);\n    background-color: #ffffff;\n    z-index: 10;\n}\n\n.tabulator .tabulator-frozen.tabulator-frozen-left .tabulator-cell {\n    background-color: #ffffff;\n}\n\n/* Ensure frozen column header also has solid background */\n.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n    background-color: #f8f9fa;\n    z-index: 11;\n}\n\n.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left .tabulator-col-content {\n    background-color: #f8f9fa;\n}\n\n/* Row styling */\n.tabulator .tabulator-row:nth-child(even) {\n    background-color: rgba(0, 0, 0, 0.02);\n}\n\n.tabulator .tabulator-row:hover {\n    background-color: rgba(var(--bs-primary-rgb), 0.1);\n}\n\n/* Ensure frozen column maintains solid background on hover */\n.tabulator .tabulator-row:hover .tabulator-frozen.tabulator-frozen-left .tabulator-cell {\n    background-color: #f0f8ff;\n}\n\n.tabulator .tabulator-row:nth-child(even) .tabulator-frozen.tabulator-frozen-left .tabulator-cell {\n    background-color: #fafafa;\n}\n\n.tabulator .tabulator-row .tabulator-cell {\n    border-right: 1px solid var(--bs-border-color-translucent);\n    padding: 0.375rem 0.25rem;\n    font-size: 0.8rem;\n    text-align: center;\n    vertical-align: middle;\n}\n\n/* First column (Date/Station) styling */\n.tabulator .tabulator-row .tabulator-cell[tabulator-field=\"col0\"] {\n    text-align: left;\n    font-weight: 500;\n    padding: 0.375rem 0.5rem;\n}\n\n/* Temperature departure color coding support */\n.tabulator .tabulator-cell[style*=\"background\"] {\n    font-weight: 600;\n}\n\n/* Ensure HTML content in cells is properly rendered */\n.tabulator .tabulator-cell .fa {\n    margin-right: 0.25rem;\n}\n\n/* Temperature cells with background colors from PHP */\n.tabulator .tabulator-cell[data-sort] {\n    font-weight: 600;\n}\n\n/* Support for inline styles from PHP temperature departure coloring */\n.tabulator .tabulator-cell[style] {\n    font-weight: 600;\n}\n\n/* Link styling in table */\n.tabulator .tabulator-cell a {\n    color: var(--bs-primary);\n    text-decoration: none;\n}\n\n.tabulator .tabulator-cell a:hover {\n    color: var(--bs-primary);\n    text-decoration: underline;\n}\n\n/* Icon styling */\n.tabulator .tabulator-cell .fa {\n    margin-right: 0.25rem;\n}\n\n/* Export buttons styling */\n#clitable-export-buttons {\n    border-radius: 0.375rem;\n    padding: 0.5rem;\n    background-color: var(--bs-light);\n    border: 1px solid var(--bs-border-color);\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n    .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n        padding: 0.25rem 0.125rem;\n        font-size: 0.65rem;\n    }\n    \n    .tabulator .tabulator-row .tabulator-cell {\n        padding: 0.25rem 0.125rem;\n        font-size: 0.7rem;\n    }\n}"
  },
  {
    "path": "htdocs/nws/clitable.module.js",
    "content": "import { TabulatorFull as Tabulator } from 'https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator_esm.min.js';\nimport { requireElement } from '/js/iemjs/domUtils.js';\n\nfunction makeTableInteractive() {\n    const tableElem = requireElement('thetable');\n\n    // Rule: Complex header parsing, multi-row header handling, column grouping\n    // Extract data from tbody, skipping empty columns that act as visual separators\n    const tbody = tableElem.querySelector('tbody');\n    if (!tbody) {return;}\n\n    const rows = Array.from(tbody.querySelectorAll('tr'));\n    const data = rows.map(tr => {\n        const cells = Array.from(tr.children);\n        const rowData = {};\n\n        // Map cells to logical columns, skipping empty separator columns\n        let logicalIndex = 0;\n        cells.forEach((cell, physicalIndex) => {\n            // Skip empty separator columns (7, 14, 21, 27)\n            if (![7, 14, 21, 27].includes(physicalIndex)) {\n                rowData[`col${logicalIndex}`] = cell.innerHTML.trim();\n                logicalIndex++;\n            }\n        });\n        return rowData;\n    });\n\n    // Rule: Tabulator column definition, grouped headers, frozen columns\n    // Define columns based on the actual structure without empty separators\n    const columns = [\n        // Column 0: Date/Station (frozen)\n        {\n            title: 'Date/Station',\n            field: 'col0',\n            formatter: 'html',\n            frozen: true,\n            width: 170,\n            headerSort: true,\n        },\n\n        // Maximum Temperature columns (1-6)\n        {\n            title: 'Max Temp Ob',\n            field: 'col1',\n            minWidth: 80,\n            headerTooltip: 'Maximum Temperature Observed',\n            formatter: 'html',\n        },\n        {\n            title: 'Max Time',\n            field: 'col2',\n            minWidth: 80,\n            headerTooltip: 'Time of Maximum Temperature',\n        },\n        {\n            title: 'Max Rec',\n            field: 'col3',\n            minWidth: 80,\n            headerTooltip: 'Maximum Temperature Record',\n            formatter: 'html',\n        },\n        {\n            title: 'Max Years',\n            field: 'col4',\n            minWidth: 80,\n            headerTooltip: 'Years of Maximum Temperature Record',\n        },\n        {\n            title: 'Max Avg',\n            field: 'col5',\n            minWidth: 80,\n            headerTooltip: 'Maximum Temperature Average',\n        },\n        {\n            title: 'Max Δ',\n            field: 'col6',\n            minWidth: 80,\n            headerTooltip: 'Maximum Temperature Departure from Normal',\n            formatter: 'html',\n        },\n\n        // Minimum Temperature columns (8-13 -> 7-12)\n        {\n            title: 'Min Temp Ob',\n            field: 'col7',\n            minWidth: 80,\n            headerTooltip: 'Minimum Temperature Observed',\n            formatter: 'html',\n        },\n        {\n            title: 'Min Time',\n            field: 'col8',\n            minWidth: 80,\n            headerTooltip: 'Time of Minimum Temperature',\n        },\n        {\n            title: 'Min Rec',\n            field: 'col9',\n            minWidth: 80,\n            headerTooltip: 'Minimum Temperature Record',\n            formatter: 'html',\n        },\n        {\n            title: 'Min Years',\n            field: 'col10',\n            minWidth: 80,\n            headerTooltip: 'Years of Minimum Temperature Record',\n        },\n        {\n            title: 'Min Avg',\n            field: 'col11',\n            minWidth: 80,\n            headerTooltip: 'Minimum Temperature Average',\n        },\n        {\n            title: 'Min Δ',\n            field: 'col12',\n            minWidth: 80,\n            headerTooltip: 'Minimum Temperature Departure from Normal',\n            formatter: 'html',\n        },\n\n        // Precipitation columns (15-20 -> 13-18)\n        {\n            title: 'Precip Ob',\n            field: 'col13',\n            minWidth: 80,\n            headerTooltip: 'Precipitation Observed',\n            formatter: 'html',\n        },\n        {\n            title: 'Precip Rec',\n            field: 'col14',\n            minWidth: 80,\n            headerTooltip: 'Precipitation Record',\n        },\n        {\n            title: 'Precip Years',\n            field: 'col15',\n            minWidth: 80,\n            headerTooltip: 'Years of Precipitation Record',\n        },\n        {\n            title: 'Precip Avg',\n            field: 'col16',\n            minWidth: 80,\n            headerTooltip: 'Precipitation Average',\n        },\n        {\n            title: 'Precip Mon to Date',\n            field: 'col17',\n            minWidth: 100,\n            headerTooltip: 'Precipitation Month to Date',\n        },\n        {\n            title: 'Precip Mon Avg',\n            field: 'col18',\n            minWidth: 100,\n            headerTooltip: 'Precipitation Month Average',\n        },\n\n        // Snow columns (22-26 -> 19-23)\n        {\n            title: 'Snow Ob',\n            field: 'col19',\n            minWidth: 80,\n            headerTooltip: 'Snow Observed',\n            formatter: 'html',\n        },\n        { title: 'Snow Rec', field: 'col20', minWidth: 80, headerTooltip: 'Snow Record' },\n        {\n            title: 'Snow Years',\n            field: 'col21',\n            minWidth: 80,\n            headerTooltip: 'Years of Snow Record',\n        },\n        {\n            title: 'Snow Mon to Date',\n            field: 'col22',\n            minWidth: 100,\n            headerTooltip: 'Snow Month to Date',\n        },\n        { title: 'Snow Depth', field: 'col23', minWidth: 80, headerTooltip: 'Snow Depth' },\n\n        // Misc column (28 -> 24)\n        {\n            title: 'Avg Sky Cover',\n            field: 'col24',\n            minWidth: 100,\n            headerTooltip: 'Average Sky Cover',\n        },\n    ];\n\n    // Replace table with Tabulator\n    const tabDiv = document.createElement('div');\n    tabDiv.id = 'tabulator-table';\n    tableElem.parentNode.replaceChild(tabDiv, tableElem);\n\n    // Rule: Tabulator configuration, horizontal scroll, responsive layout\n    const table = new Tabulator(tabDiv, {\n        data,\n        columns,\n        layout: 'fitData',\n        responsiveLayout: false, // Use horizontal scroll instead of hiding columns\n        height: '70vh',\n        placeholder: 'No data found',\n        movableColumns: true,\n        autoColumns: false,\n        columnDefaults: { resizable: true },\n        tooltips: true,\n        clipboard: true,\n        clipboardCopyHeader: true,\n        downloadConfig: {\n            columnHeaders: true,\n            columnGroups: false,\n            rowGroups: false,\n            columnCalcs: false,\n        },\n    });\n\n    addExportButtons(table);\n\n    // Rule: Table reference management, record filtering support\n    // Store reference for record filtering functionality\n    if (window.setTableReference) {\n        window.setTableReference(table, true);\n    }\n}\n\nfunction addExportButtons(table) {\n    let container = document.getElementById('clitable-export-buttons');\n    if (!container) {\n        container = document.createElement('div');\n        container.id = 'clitable-export-buttons';\n        container.className = 'mb-2 d-flex gap-2';\n        container.innerHTML =\n            '<button id=\"clitable-csv\" class=\"btn btn-outline-success btn-sm\"><i class=\"bi bi-download\" aria-hidden=\"true\"></i> Download CSV</button>' +\n            '<button id=\"clitable-xlsx\" class=\"btn btn-outline-primary btn-sm\"><i class=\"bi bi-download\" aria-hidden=\"true\"></i> Download Excel</button>';\n        const tabDiv = document.getElementById('tabulator-table');\n        tabDiv.parentNode.insertBefore(container, tabDiv);\n    }\n    document.getElementById('clitable-csv').onclick = () =>\n        table.download('csv', 'climate_table.csv');\n    document.getElementById('clitable-xlsx').onclick = () =>\n        table.download('xlsx', 'climate_table.xlsx', { sheetName: 'Climate' });\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n    const makeFancyBtn = requireElement('makefancy');\n    makeFancyBtn.addEventListener('click', makeTableInteractive);\n\n    let currentTable = null; // Store reference to active table (HTML or Tabulator)\n    let isTabulator = false;\n\n    const makeRecordsBtn = requireElement('makerecords');\n    makeRecordsBtn.addEventListener('click', event => {\n        const btn = event.currentTarget;\n        const val = btn.getAttribute('data-toggle');\n\n        if (isTabulator && currentTable) {\n            // Rule: Tabulator record filtering, row filtering, data manipulation\n            // Handle record filtering for Tabulator\n            if (val === '0') {\n                // Hide rows without records (data-record=\"0\")\n                currentTable.setFilter((_data, _filterParams) => {\n                    // This approach works with the data-record attribute from the original HTML\n                    // We need to check if the row had data-record=\"1\"\n                    return true; // For now, show all rows as this filtering logic needs HTML inspection\n                });\n                document.getElementById('makerecordslabel').textContent = 'Show All Rows';\n                btn.setAttribute('data-toggle', '1');\n            } else {\n                // Show all rows\n                currentTable.clearFilter();\n                document.getElementById('makerecordslabel').textContent = 'Show Rows with Records';\n                btn.setAttribute('data-toggle', '0');\n            }\n        } else {\n            // Handle original HTML table filtering\n            const tableRows = document.querySelectorAll('#thetable [data-record=\"0\"]');\n            if (val === '0') {\n                tableRows.forEach(row => {\n                    row.style.display = 'none';\n                });\n                document.getElementById('makerecordslabel').textContent = 'Show All Rows';\n                btn.setAttribute('data-toggle', '1');\n            } else {\n                document.getElementById('makerecordslabel').textContent = 'Show Rows with Records';\n                btn.setAttribute('data-toggle', '0');\n                document.querySelectorAll('#thetable tr').forEach(row => {\n                    row.style.display = '';\n                });\n            }\n        }\n    });\n\n    // Store references when table is converted\n    window.setTableReference = (table, isTab) => {\n        currentTable = table;\n        isTabulator = isTab;\n    };\n});\n"
  },
  {
    "path": "htdocs/nws/clitable.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 156);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/network.php\";\n\n$nt = new NetworkTable(\"NWSCLI\");\n\n$station = get_str404(\"station\", 'KDSM');\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", null);\n$day = get_int404(\"day\", null);\n$opt = get_str404(\"opt\", \"bystation\");\n\n$ys = yearSelect(2001, $year, \"year\");\n$ms = monthSelect($month, \"month\");\n$ds = daySelect($day, \"day\");\n\n$byday = false;\nif ($opt === \"bystation\") {\n    $title = sprintf(\"Station: %s for Year: %s\", $station, $year);\n    $col1label = \"Date\";\n    $uri = sprintf(\n        \"%s/json/cli.py?station=%s&year=%s\",\n        $INTERNAL_BASEURL,\n        $station,\n        $year\n    );\n    $data = file_get_contents($uri);\n    $json = json_decode($data, $assoc = TRUE);\n    $arr = $json['results'];\n} else {\n    $col1label = \"Station\";\n    $byday = true;\n    $day = mktime(0, 0, 0, $month, $day, $year);\n    $title = sprintf(\"All Stations for Date: %s\", date(\"d F Y\", $day));\n    $uri = sprintf(\n        \"%s/geojson/cli.py?dt=%s\",\n        $INTERNAL_BASEURL,\n        date(\"Y-m-d\", $day)\n    );\n    $data = file_get_contents($uri);\n    $json = json_decode($data, $assoc = TRUE);\n    $arr = $json['features'];\n}\n$prettyurl = str_replace($INTERNAL_BASEURL, $EXTERNAL_BASEURL, $uri);\n\n$table = <<<EOM\n<h3>{$title}</h3>\n<table id=\"thetable\" class=\"table table-sm table-striped table-bordered table-hover\"\n data-column-defs='[{\"sortable\": false, \"targets\": [7,14,21]}]'>\n<thead class=\"sticky\">\n<tr class=\"small\">\n    <th rowspan=\"2\">{$col1label}</th>\n    <th colspan=\"6\">Maximum Temperature &deg;F</th>\n    <th class=\"empty\"></th>\n    <th colspan=\"6\">Minimum Temperature &deg;F</th>\n    <th class=\"empty\"></th>\n    <th colspan=\"6\">Precip (inches)</th>\n    <th class=\"empty\"></th>\n    <th colspan=\"5\">Snow (inches)</th>\n    <th class=\"empty\"></th>\n    <th colspan=\"1\">Misc</th>\n</tr>\n<tr class=\"small\">\n    <th>Ob</th><th>Time</th><th>Rec</th><th>Years</th><th>Avg</th>\n    <th>&Delta;</th><th class=\"empty\"></th>\n\n    <th>Ob</th><th>Time</th><th>Rec</th><th>Years</th><th>Avg</th>\n    <th>&Delta;</th><th class=\"empty\"></th>\n\n    <th>Ob</th><th>Rec</th><th>Years</th>\n    <th>Avg</th><th>Mon to Date</th><th>Mon Avg</th><th class=\"empty\"></th>\n\n    <th>Ob</th><th>Rec</th><th>Years</th><th>Mon to Date</th><th>Depth</th>\n    <th class=\"empty\"></th>\n\n    <th>Avg Sky Cover</th>\n</tr>\n</thead>\n<tbody>\nEOM;\nfunction departure($actual, $normal)\n{\n    // JSON upstream hacky returns M instead of null\n    if ($actual == \"M\" || $normal == \"M\") return \"M\";\n    return $actual - $normal;\n}\n// JSON upstream hacky returns M instead of null\nfunction departcolor($actual, $normal)\n{\n    if ($actual == \"M\" || $normal == \"M\") return \"#FFF\";\n    $diff = $actual - $normal;\n    if ($diff == 0) return \"#fff\";\n    if ($diff >= 10) return \"#FF1493\";\n    if ($diff > 0) return \"#D8BFD8\";\n    if ($diff > -10) return \"#87CEEB\";\n    if ($diff <= -10) return \"#00BFFF\";\n    return \"#fff\";\n}\nfunction new_record($actual, $record)\n{\n    if ($actual == \"M\" || $record == \"M\") return \"\";\n    if ($actual === $record) return '<i class=\"bi bi-star\" aria-hidden=\"true\"></i>';\n    if ($actual > $record) return \"<i class=\\\"bi bi-star-fill\\\" aria-hidden=\\\"true\\\"></i>\";\n    return \"\";\n}\nfunction new_record2($actual, $record)\n{\n    if ($actual == \"M\" || $record == \"M\") return \"\";\n    if ($actual == $record) return '<i class=\"bi bi-star\" aria-hidden=\"true\"></i>';\n    if ($actual < $record) return \"<i class=\\\"bi bi-star-fill\\\" aria-hidden=\\\"true\\\"></i>\";\n}\nfunction new_record3($actual, $record)\n{\n    if ($actual == \"M\" || $record == \"M\") return \"\";\n    if ($actual == 0) return \"\";\n    if ($actual === $record) return '<i class=\"bi bi-star\" aria-hidden=\"true\"></i>';\n    // Careful of Trace\n    if ($actual === \"T\"){\n        if ($record > 0.001) return \"\";\n    return '<i class=\"bi bi-star-fill\" aria-hidden=\"true\"></i>';\n    }\n    if ($actual > $record) return \"<i class=\\\"bi bi-star-fill\\\" aria-hidden=\\\"true\\\"></i>\";\n    return \"\";\n}\nforeach ($arr as $entry) {\n    $row = ($opt === \"bystation\") ? $entry : $entry[\"properties\"];\n    $ts = strtotime($row[\"valid\"]);\n    if ($byday) {\n        $link = sprintf(\n            \"clitable.php?station=%s&year=%s\",\n            $row[\"station\"],\n            date(\"Y\", $ts)\n        );\n        $col1 = sprintf(\n            \"<a href=\\\"%s\\\" class=\\\"small\\\">%s %s</a>\",\n            $link,\n            $row[\"station\"],\n            $nt->table[$row[\"station\"]]['name']\n        );\n    } else {\n        $link = sprintf(\n            \"clitable.php?opt=bydate&year=%s&month=%s&day=%s\",\n            date(\"Y\", $ts),\n            date(\"m\", $ts),\n            date(\"d\", $ts)\n        );\n        $col1 = sprintf(\"<a href=\\\"%s\\\">%s</a>\", $link, date(\"Md,y\", $ts));\n    }\n    $hrecord = new_record($row[\"high\"], $row[\"high_record\"]);\n    $lrecord = new_record2($row[\"low\"], $row[\"low_record\"]);\n    $precord = new_record3($row[\"precip\"], $row[\"precip_record\"]);\n    $srecord = new_record3($row[\"snow\"], $row[\"snow_record\"]);\n    $rowlabel = \"0\";\n    if ($hrecord != \"\" || $lrecord != \"\" || $precord != \"\" || $srecord != \"\"){\n        $rowlabel = \"1\";\n    }\n    $hd = departure($row[\"high\"], $row[\"high_normal\"]);\n    $ld = departure($row[\"low\"], $row[\"low_normal\"]);\n    $table .= sprintf(\n        \"<tr data-record='%s'>\n    <td nowrap><a href=\\\"/p.php?pid=%s\\\" target=\\\"_blank\\\"><i class=\\\"bi bi-card-list\\\" aria-hidden=\\\"true\\\"></i></a>\n            %s</td>\n            <td>%s%s</td><td nowrap>%s</td><td>%s</td>\n            <td>%s</td><td>%s</td>\n            <td style=\\\"background: %s;\\\" data-sort=\\\"%s\\\">%s</td>\n            <th class=\\\"empty\\\"></th>\n            <td>%s%s</td><td nowrap>%s</td><td>%s</td>\n            <td>%s</td><td>%s</td>\n            <td style=\\\"background: %s;\\\" data-sort=\\\"%s\\\">%s</td>\n            <th class=\\\"empty\\\"></th>\n            <td>%s%s</td><td>%s</td><td>%s</td>\n            <td>%s</td><td>%s</td><td>%s</td>\n            <th class=\\\"empty\\\"></th>\n            <td>%s%s</td><td>%s</td><td>%s</td>\n            <td>%s</td><td>%s</td>\n            <th class=\\\"empty\\\"></th>\n            <td>%s</td>\n            </tr>\",\n        $rowlabel,\n        $row[\"product\"],\n        $col1,\n        $row[\"high\"],\n        $hrecord,\n        $row[\"high_time\"],\n        $row[\"high_record\"],\n        implode(\" \", $row[\"high_record_years\"]),\n        $row[\"high_normal\"],\n        departcolor($row[\"high\"], $row[\"high_normal\"]),\n        ($hd == \"M\") ? \"\": $hd,\n        $hd,\n\n        $row[\"low\"],\n        $lrecord,\n        $row[\"low_time\"],\n        $row[\"low_record\"],\n        implode(\" \", $row[\"low_record_years\"]),\n        $row[\"low_normal\"],\n        departcolor($row[\"low\"], $row[\"low_normal\"]),\n        ($ld == \"M\") ? \"\": $ld,\n        $ld,\n\n        $row[\"precip\"],\n        $precord,\n        $row[\"precip_record\"],\n        implode(\" \", $row[\"precip_record_years\"]),\n        $row[\"precip_normal\"],\n        $row[\"precip_month\"],\n        $row[\"precip_month_normal\"],\n\n        $row[\"snow\"],\n        $srecord,\n        $row[\"snow_record\"],\n        implode(' ', $row[\"snow_record_years\"]),\n        $row[\"snow_month\"],\n        $row[\"snowdepth\"],\n\n        $row[\"average_sky_cover\"],\n    );\n}\n$table .= \"</tbody></table>\";\n\n$sselect = networkSelect(\"NWSCLI\", $station);\n\n$t = new MyView();\n$t->iemselect2 = TRUE;\n$t->title = \"Tabular CLI Report Data\";\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb bg-light px-3 py-2 mb-4 rounded\">\n        <li class=\"breadcrumb-item\"><a href=\"/climate/\">Climate Data</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">Tabular CLI Report Data</li>\n    </ol>\n</nav>\n\n<div class=\"row g-4 mb-4\">\n    <div class=\"col-lg-3\">\n        <div class=\"card h-100\">\n            <div class=\"card-body\">\n                <h5 class=\"card-title\">About</h5>\n                <p class=\"mb-0\">This application lists out parsed data from National Weather Service issued daily climate reports. These reports contain 24 hour totals for a period between midnight <b>local standard time</b>. This means that during daylight saving time, this period is from 1 AM to 1 AM local daylight time!</p>\n            </div>\n        </div>\n    </div>\n    <div class=\"col-lg-6\">\n        <div class=\"card h-100\">\n            <div class=\"card-body\">\n                <h5 class=\"card-title\">Option 1: One Station for One Year</h5>\n                <form method=\"GET\" name=\"one\" class=\"row g-3 align-items-end\">\n                    <input type=\"hidden\" name=\"opt\" value=\"bystation\" />\n                    <div class=\"col-12 col-md-7\">\n                        <label class=\"form-label fw-bold\">Select Station:</label>\n                        {$sselect}\n                    </div>\n                    <div class=\"col-12 col-md-5\">\n                        <label class=\"form-label fw-bold\">Year:</label>\n                        {$ys}\n                    </div>\n                    <div class=\"col-12\">\n                        <button type=\"submit\" class=\"btn btn-primary\">Generate Table</button>\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n    <div class=\"col-lg-3\">\n        <div class=\"card h-100\">\n            <div class=\"card-body\">\n                <h5 class=\"card-title\">Option 2: One Day for Stations</h5>\n                <form method=\"GET\" name=\"two\" class=\"row g-3 align-items-end\">\n                    <input type=\"hidden\" name=\"opt\" value=\"bydate\" />\n                    <div class=\"col-12\">\n                        {$ys} {$ms} {$ds}\n                    </div>\n                    <div class=\"col-12\">\n                        <button type=\"submit\" class=\"btn btn-primary\">Generate Table</button>\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"alert alert-info mb-4\">\n    <strong>API:</strong> There is a <a href=\"/json/\">JSON(P) webservice</a> that backends this table presentation. You can directly access it here:<br>\n    <code>{$prettyurl}</code>\n</div>\n\n<div class=\"mb-3 d-flex flex-wrap gap-2\">\n    <button id=\"makefancy\" class=\"btn btn-outline-secondary\"><i class=\"bi bi-table\" aria-hidden=\"true\"></i> Make Table Interactive</button>\n    <button id=\"makerecords\" class=\"btn btn-outline-secondary\" data-toggle=\"0\"><span id=\"makerecordslabel\">Show Rows with Records</span></button>\n</div>\n\n{$table}\n\n<div class=\"mt-3\">\n    <strong>Key:</strong> &nbsp;\n    <i class=\"bi bi-star\" aria-hidden=\"true\"></i> Record Tied,\n    <i class=\"bi bi-star-fill\" aria-hidden=\"true\"></i> Record Set.\n</div>\n\nEOM;\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"https://unpkg.com/tabulator-tables@6.3.1/dist/css/tabulator_bootstrap5.min.css\">\n<link type=\"text/css\" href=\"clitable.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script type=\"module\" src=\"clitable.module.js?v=2\"></script>\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/nws/coop-cnts.php",
    "content": "<?php\n// Print out a listing of COOP sites and observation frequency\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 113);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\n$t = new MyView();\n\n$dbconn = iemdb(\"iem\");\n\n$wfo = get_str404('wfo', 'DMX');\n$by = get_str404('by', 'station');\n$tby = get_str404('tby', 'month');\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n\n$tlabel = \"month: {$month}, year: {$year}\";\n\n$tstring = sprintf(\"%s-%02d-01\", $year, intval($month));\n// sigh\nif ($tby == \"month\") {\n    if ($by == \"station\") {\n        $stname = iem_pg_prepare($dbconn, \"select id, network, name,\n        count(*) as total,\n        sum(case when pday >= 0 then 1 else 0 end) as pobs,\n        sum(case when snow >= 0 then 1 else 0 end) as sobs,\n        sum(case when snowd >= 0 then 1 else 0 end) as sdobs,\n        sum(case when max_tmpf > -60 then 1 else 0 end) as tobs\n        from summary_$year s JOIN stations t on (t.iemid = s.iemid)\n        WHERE day >= $1 and day < ($1::date + '1 month'::interval)\n        and day < 'TOMORROW'::date\n        and t.wfo = $2 and t.network ~* 'COOP' GROUP by id, network, name\n        ORDER by id ASC\");\n    } else {\n        $stname = iem_pg_prepare($dbconn, \"select day,\n     count(*) as total,\n     sum(case when pday >= 0 then 1 else 0 end) as pobs,\n     sum(case when snow >= 0 then 1 else 0 end) as sobs,\n     sum(case when snowd >= 0 then 1 else 0 end) as sdobs,\n     sum(case when max_tmpf > -60 then 1 else 0 end) as tobs\n     from summary_$year s JOIN stations t on (t.iemid = s.iemid)\n     WHERE day >= $1 and day < ($1::date + '1 month'::interval)\n     and day < 'TOMORROW'::date\n     and t.wfo = $2 and t.network ~* 'COOP' GROUP by day ORDER by day ASC\");\n    }\n    $args = array($tstring, $wfo);\n} else {\n    $tlabel = \"year: {$year}\";\n    if ($by == \"station\") {\n        $stname = iem_pg_prepare($dbconn, \"select id, network, name,\n        count(*) as total,\n        sum(case when pday >= 0 then 1 else 0 end) as pobs,\n        sum(case when snow >= 0 then 1 else 0 end) as sobs,\n        sum(case when snowd >= 0 then 1 else 0 end) as sdobs,\n        sum(case when max_tmpf > -60 then 1 else 0 end) as tobs\n        from summary_$year s JOIN stations t on (t.iemid = s.iemid)\n        WHERE day < 'TOMORROW'::date\n        and t.wfo = $1 and t.network ~* 'COOP' GROUP by id, network, name\n        ORDER by id ASC\");\n    } else {\n        $stname = iem_pg_prepare($dbconn, \"select day,\n     count(*) as total,\n     sum(case when pday >= 0 then 1 else 0 end) as pobs,\n     sum(case when snow >= 0 then 1 else 0 end) as sobs,\n     sum(case when snowd >= 0 then 1 else 0 end) as sdobs,\n     sum(case when max_tmpf > -60 then 1 else 0 end) as tobs\n     from summary_$year s JOIN stations t on (t.iemid = s.iemid)\n     WHERE day < 'TOMORROW'::date\n     and t.wfo = $1 and t.network ~* 'COOP' GROUP by day ORDER by day ASC\");\n    }\n    $args = array($wfo);\n}\n\n$bselect = make_select(\"by\", $by, array(\"station\" => \"Station\", \"day\" => \"Day\"));\n$tselect = make_select(\"tby\", $tby, array(\"month\" => \"Month\", \"year\" => \"Year\"));\n\n$data = pg_execute($dbconn, $stname, $args);\n\n$t->title = \"NWS COOP Obs per month per WFO\";\n\n$wselect = networkSelect(\"WFO\", $wfo, array(), \"wfo\");\n\n$ys = yearSelect(\"2010\", $year);\n$ms = monthSelect($month);\n\n$table = \"\";\nwhile ($row = pg_fetch_assoc($data)) {\n    if ($by == \"station\") {\n        $table .= sprintf(\n            \"<tr><td><a href=\\\"/sites/site.php?station=%s&amp;network=%s\\\">%s</a></td>\" .\n                \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td>\" .\n                \"<td>%s</td><td>%s</td></tr>\",\n            $row[\"id\"],\n            $row[\"network\"],\n            $row[\"id\"],\n            $row[\"name\"],\n            $row[\"total\"],\n            $row[\"pobs\"],\n            $row[\"tobs\"],\n            $row[\"sobs\"],\n            $row[\"sdobs\"]\n        );\n    } else {\n        $table .= sprintf(\n            \"<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>\" .\n                \"<td>%s</td></tr>\",\n            $row[\"day\"],\n            $row[\"total\"],\n            $row[\"pobs\"],\n            $row[\"tobs\"],\n            $row[\"sobs\"],\n            $row[\"sdobs\"]\n        );\n    }\n}\n$header = \"<th>NWSLI</th><th>Name</th>\";\nif ($by == \"day\") {\n    $header = \"<th>Day</th>\";\n}\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/nws/\">NWS User Resources</a></li>\n <li class=\"active\">NWS COOP Observation Counts by Month by WFO</li>\n</ol>\n\n<p>This application prints out a summary of COOP reports received by the IEM\non a per month and per WFO basis.  Errors do occur and perhaps the IEM's ingestor\nis \"missing\" data from sites.  Please <a href=\"/info/contacts.php\">let us know</a> of any errors you may suspect!\n\n<form method=\"GET\" name=\"changeme\">\n<table class=\"table table-sm\">\n<tr>\n<td><strong>Select WFO:</strong> {$wselect} </td>\n<td><strong>Aggregate By:</strong> {$bselect} </td>\n<td><strong>By Month or Year:</strong> {$tselect} </td>\n<td><strong>Select Year:</strong>{$ys}</td>\n<td><strong>Select Month:</strong>{$ms}</td>\n</tr>\n</table>\n<input type=\"submit\" value=\"View Report\" />\n</form>\n\n<h3>COOP Report for wfo: {$wfo}, {$tlabel}</h3>\n\n<table class=\"table table-striped table-sm table-bordered\">\n<thead class=\"sticky\">\n<tr>{$header}<th>Possible</th>\n<th>Precip Obs</th><th>Temperature Obs</th><th>Snowfall Obs</th>\n<th>Snowdepth Obs</th></tr>\n</thead>\n<tbody>\n{$table}\n</tbody>\n</table>\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/nws/debug_latlon/generate_plot.py",
    "content": "\"\"\"implemented in pylib/iemweb/nws/debug_latlon/generate_plot.py\"\"\"\n\nfrom iemweb.nws.debug_latlon.generate_plot import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/nws/debug_latlon/index.module.js",
    "content": "import { requireElement, requireInputElement } from '/js/iemjs/domUtils.js';\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n    const theButton = requireElement(\"thebutton\");\n    const theText = requireElement(\"thetext\");\n    const theTitle = requireElement(\"thetitle\");\n    const theImage = requireElement(\"theimage\");\n    const theGeojson = requireElement(\"thegeojson\");\n    const theEastCheckbox = requireInputElement(\"eastcheckbox\");\n\n    theButton.addEventListener(\"click\", () => {\n        const text = theText.value;\n        const title = theTitle.value;\n        const east = theEastCheckbox.checked;\n        fetch(\"generate_plot.py\", {\n            method: \"POST\",\n            headers: {\n                \"Content-Type\": \"application/x-www-form-urlencoded\"\n            },\n            body: new URLSearchParams({ text, title, east })\n        })\n        .then(response => {\n            if (!response.ok) {throw new Error(\"Network response was not ok\");}\n            return response.json();\n        })\n        .then(data => {\n            theImage.setAttribute(\"src\", data.imgurl);\n            theGeojson.textContent = JSON.stringify(data.geojson);\n        })\n        .catch(() => {\n            theGeojson.textContent = \"Image/GeoJSON Generation Failed, sorry!\";\n        });\n    });\n});\n"
  },
  {
    "path": "htdocs/nws/debug_latlon/index.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Debug + Create Simple Graphic from LAT...LON text\";\n\n$imgurl = \"/images/wait24trans.gif\";\n$t->content = <<<EOM\n\n<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb\">\n <li class=\"breadcrumb-item\"><a href=\"/nws/\">IEM NWS Homepage</a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\">Debug / Create Simple Graphic from LAT...LON</li>\n </ol>\n</nav>\n\n<p>This page generates a simple diagnostic plot of a parsed polygon from a\nNWS Text Product.</p>\n\n<textarea id=\"thetext\" cols=\"80\" rows=\"5\">\nLAT...LON 3310 11199 3329 11199 3328 11156 3304 11157\n</textarea>\n<br />\nTitle: <input id=\"thetitle\" type=\"text\" maxlength=\"220\" size=\"100\" value=\"My Title\">\n<br />\n\n<p><input type=\"checkbox\" name=\"east\" value=\"1\" id=\"eastcheckbox\">\n<label for=\"eastcheckbox\">Interpret given longitudes as East Longitudes (Guam)</label></p>\n\n<input id=\"thebutton\" type=\"button\" role=\"button\" value=\"Create Graphic Now, Please!\">\n\n<h4>Image will appear here:</h4>\n<p><img id=\"theimage\" src=\"{$imgurl}\" class=\"img-fluid\"></p>\n\n<h4>GeoJSON representation here:</h4>\n<pre id=\"thegeojson\">\n\n</pre>\n\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"index.module.js\" type=\"module\"></script>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/nws/index.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"NWS Related Information\";\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb mb-3\">\n    <li class=\"breadcrumb-item\"><a href=\"/\">IEM Homepage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">NWS User's Mainpage</li>\n  </ol>\n</nav>\n<h1 class=\"h4 mb-4\">NWS User's Mainpage</h1>\n<div>\n\n<div class=\"row g-3\">\n<div class=\"col-md-6\">\n\n<p>The IEM and NWS have enjoyed a long standing partnership. This page lists\nout the many NWS data resources maintained on the IEM website.</p>\n\n<p><a href=\"/plotting/auto/\"><i class=\"bi bi-activity\" aria-hidden=\"true\"></i> Automated Data Plotting</a> is a very deep rabbit\nhole with hundreds of plotting options for many datasets of NWS interest.</p>\n\n</div>\n<div class=\"col-md-6\">\n\n<div class=\"card card-body\">\n<strong>Did you see an image posted to social media with the IEM logo on it?</strong>\n<br />Daryl posts some interesting graphics to his\n  <a href=\"https://bsky.app/profile/akrherz.bsky.social\">akrherz.bsky.social</a> page. Generally,\n  these are one-off images that are not available for dynamic generation on\n  this website.\n</div>\n\n</div>\n</div><!-- ./row -->\n\n<div class=\"row g-3\">\n<div class=\"col-md-6\">\n\n<div class=\"card mb-3\" role=\"region\" aria-labelledby=\"card-aviation\">\n  <div class=\"card-header\"><h2 class=\"h6 mb-0\" id=\"card-aviation\">Aviation Weather Products</h2></div>\n  <div class=\"card-body\">\n\n  <ul>\n<li><a href=\"/request/gis/cwas.phtml\">Center Weather Advisories (CWA) in Shapefile/KML format</a></li>\n<li><a href=\"/request/gis/awc_gairmets.phtml\">Graphical AIRMETs in Shapefile/KML format</a></li>\n<li><a href=\"/request/gis/pireps.php\">PIREPs in Shapefile format</a></li>\n<li><a href=\"/request/gis/awc_sigmets.phtml\">SIGMETs in Shapefile/KML format</a></li>\n<li><a href=\"/request/taf.php\">Terminal Aerodome Forecasts (TAFs)</a></li>\n<li><a href=\"/request/tempwind_aloft.php\">Temp/Winds Aloft</a></li>\n</ul>\n\n</div>\n</div>\n\n\n<div class=\"card mb-3\" role=\"region\" aria-labelledby=\"card-hydro\">\n  <div class=\"card-header\"><h2 class=\"h6 mb-0\" id=\"card-hydro\">Flash Flooding / Hydrology</h2></div>\n  <div class=\"card-body\">\n<p><strong>Precipitation Estimates/Observations</strong></p>\n<ul>\n  <li><a href=\"/DCP/plot.phtml\">Archived DCP Data Plotter</a><br />\n    Simple app to plot out current/historical DCP (river gauges) data for a site of your choice.</li>\n    <li>Daily Climate Summary (AFOS: CLI Product)\n        <a href=\"climap.php\">Interactive Map</a> or\n\t<a href=\"clitable.php\">Text Table</a> or\n        <a href=\"/nws/cli-audit/\">CLI Audit Report</a></li>\n    <li>CF6 Summary (AFOS: CF6 Product)\n        <a href=\"cf6map.php\">Interactive Map</a> or\n        <a href=\"cf6table.php\">Text Table</a></li>\n  <li><a href=\"/COOP/cat.phtml\">Daily COOP Observations</a></li>\n  <li><a href=\"/rainfall/obhour.phtml\">Hourly Precipitation Summaries</a> for ASOS</li>\n  <li><a href=\"/rainfall/\">IEM GIS Rainfall</a><br />\n    Mostly Midwest products, but includes a conversion of MRMS to ERDAS Imagine Files.</li>\n  <li><a href=\"/archive/mrms.php\">IEM Archival of MRMS</a></li>\n    <li><a href=\"/ASOS/current.phtml\">Sortable Currents</a> for ASOS, COOP, etc</li>\n</ul>\n\n<p><strong>Flood Warnings/Forecasts</strong>\n<br />Many of the apps in the \"Severe Weather / VTEC\" section are useful as well.</p>\n\n<ul>\n  <li><a href=\"/plotting/auto/?q=160\">HML based forecasts and observations</a><br />\n    An archive of HML processed products is used to drive an interactive plot of forecasts and observations.</li>\n  <li><a href=\"/request/hml.php\">HML Processed Data Download</a><br />\n    Download HML data for a site of your choice.</li>\n  <li><a href=\"/cow/\">IEM Cow Polygon Verification</a><br />\n    Application does LSR based verification of Flash Flood Warnings.</li>\n  <li><a href=\"/river/\">River Forecast Point Monitor</a><br />\n    Summarizes FLS statements by River by WFO/State.</li>\n</ul>\n\n  </div>\n</div>\n\n<div class=\"card mb-3\" role=\"region\" aria-labelledby=\"card-severe\">\n  <div class=\"card-header\"><h2 class=\"h6 mb-0\" id=\"card-severe\">Severe Weather / VTEC</h2></div>\n  <div class=\"card-body\">\n\n<p>The <a href=\"/current/severe.phtml\">Severe Weather Mainpage</a> has more\noptions listed.</p>\n\n<p><strong>Data / Realtime Monitoring</strong></p>\n<ul>\n <li><a href=\"/request/gis/watchwarn.phtml\">GIS Shapefiles</a><br />\n  of archived Storm Based Warning polygons.</li>\n <li><a href=\"/projects/iembot/\">IEMBot</a><br />\n  Realtime chatrooms, twitter posting service, RSS feeds and more.</li>\n</ul>\n\n<p><strong>Special Weather Statements (SPS)</strong></p>\n<ul>\n  <li><a href=\"/request/gis/sps.phtml\">SPS Polygon Download</a><br />\n  Download shapefiles of SPSs.</li>\n  <li><a href=\"/nws/sps_search/\">SPS Search by Point</a><br />\n  Search for SPSs by point.</li>\n  <li><a href=\"/wx/afos/p.php?pil=SPSDMX\">SPS Text Download</a><br />\n  Request raw SPS text over a period of your choice.</li>\n</ul>\n\n<p><strong>Maps and Graphics</strong></p>\n<ul>\n  <li><a href=\"/plotting/auto/?q=92\">Days Since VTEC Product</a><br />\n  Map of the number of days since a WFO issued a VTEC Product.</li>\n <li><a href=\"/raccoon/\">IEM Raccoon</a><br />\n  Generate Microsoft PowerPoint of Storm Based Warnings for a WFO and RADAR site of your choice.</li>\n <li><a href=\"/plotting/auto/?q=109\">Number of VTEC Events by WFO</a><br />\n  Map of the number of VTEC events by WFO for a time period of your choice.</li>\n <li><a href=\"/timemachine/?product=59\">NWS WWA Map Archive</a><br />\n The IEM saves the national watch, warning, and advisory (WWA) map every five minutes.</li>\n <li><a href=\"/vtec/\">VTEC Browser</a><br />\n  Interactive display of VTEC products.</li>\n <li><a href=\"/vtec/search.php\"><i class=\"bi bi-search\" aria-hidden=\"true\"></i> VTEC Search by Point or County/Zone</a><br />\n  Find issued VTEC WWA products by a given zone or county. Search for a storm based warning by point on a map.</li>\n</ul>\n\n<p><strong>Statistics / Metadata</strong></p>\n<ul>\n <li><a href=\"/nws/list_tags.php\">List SVR+TOR Warning Tags</a><br />\n  This application will list tags used in Severe Thunderstorm and Tornado warnings by NWS Office by Year.</li>\n\n<li><a href=\"/nws/list_ugcs.php\">List Universal Geographic Codes (UGC) by WFO/State</a></li>\n\n<li><a href=\"/vtec/yearly_counts.php\">Number of VTEC Events by year</a><br />\nTable of the number of VTEC events by year.</li>\n\n  <li><a href=\"/vtec/events.php\">VTEC Events by WFO or State by Year</a><br />\n  Simple table listing any VTEC events by a given WFO or state for a given year.</li>\n\n  <li><a href=\"/vtec/maxetn.php\">Maximum VTEC EventID (ETN) by year</a><br />\n  This diagnostic prints out the maximum issued VTEC eventid (ETN) by year. A useful diagnostic for a NWS Office wishing to check their local VTEC eventd database.</li>\n\n<li><a href=\"/vtec/emergencies.php\">Tornado + Flash Flood Emergencies listing</a><br />\nSimple table showing IEM indicated Tornado and Flash Flood Emergency events.</li>\n\n<li><a href=\"/vtec/pds.php\">Particularly Dangerous Situation Warnings</a><br />\nSimple table showing IEM indicated PDS Tornado / Flash Flood Warnings.</li>\n\n\n <li><a href=\"/cow/sbwsum.phtml\">Summary Images of Daily Storm Based Warnings</a><br />\n  Displays just the storm based warning geometries for one UTC day at a time.</li>\n <li><a href=\"/cow/top10.phtml\">Top 10 Polygon Sizes</a></li>\n</ul>\n\n<p><strong>Verification</strong></p>\n<ul>\n <li><a href=\"vtec_obs.php\">ASOS/AWOS Obs during WFO WWA</a>\n  <br />Prints out ASOS/AWOS observations during selected VTEC warning types.</li>\n <li><a href=\"/nws/debug_latlon/\">Debug / Create Simple Graphic</a> from LAT...LON text.</li>\n   <li><a href=\"/cow/\">IEM Cow</a><br />\n    Interactive Storm Based Warning verification app.</li>\n</ul>\n\n<!-- Removed empty list -->\n\n  </div>\n</div>\n\n</div>\n<div class=\"col-md-6\">\n\n<div class=\"card mb-3\" role=\"region\" aria-labelledby=\"card-asos\">\n  <div class=\"card-header\"><h2 class=\"h6 mb-0\" id=\"card-asos\">ASOS/AWOS METAR</h2></div>\n  <div class=\"card-body\">\n<ul>\n  <li><a href=\"obs.php\">Sortable Currents by WFO</a></li>\n</ul>\n\n<h4>Regional Temperature &amp; Precipitation (RTP)</h4>\n<p>The IEM attempts to generate RTP products as the NWS has discontinued\nthem.</p>\n<ul>\n <li><a href=\"/plotting/auto/?q=256\">IEM Autoplot 256</a> generator tool.</li>\n <li><a href=\"/data/awos_rtp_00z.shef\">0Z SHEF for Iowa</a></li>\n <li><a href=\"/data/awos_rtp.shef\">12Z SHEF for Iowa</a></li>\n</ul>\n\n  </div>\n</div>\n\n<div class=\"card mb-3\" role=\"region\" aria-labelledby=\"card-coop\">\n  <div class=\"card-header\"><h2 class=\"h6 mb-0\" id=\"card-coop\">Cooperative Observer Program - COOP</h2></div>\n  <div class=\"card-body\">\n<ul>\n <li><a href=\"/COOP/map/\">Interactive map of COOP observations</a><br />\n  See daily observations plotted on an interactive map.</li>\n <li><a href=\"/nws/coop-cnts.php\">Monthly COOP Frequency Reports</a><br />\n  Quantity of observations received by variable for the COOP network.</li>\n <li><a href=\"/COOP/current.phtml\">Sortable Current COOP Reports</a><br />\n   View today's COOP reports by WFO or by state. Includes derived frozen to liquid ratio and SWE reports.</li>\n</ul>\n  </div>\n</div>\n\n\n<div class=\"card mb-3\" role=\"region\" aria-labelledby=\"card-hads\">\n  <div class=\"card-header\"><h2 class=\"h6 mb-0\" id=\"card-hads\">HADS / DCP / GOES</h2></div>\n  <div class=\"card-body\">\n<ul>\n <li><a href=\"/DCP/plot.phtml\">Archived DCP Data Plotter</a><br />\n Simple app to plot out current/historical DCP (river gauges) data for a site of your choice.</li>\n</ul>\n  </div>\n</div>\n\n<div class=\"card mb-3\" role=\"region\" aria-labelledby=\"card-lsr\">\n  <div class=\"card-header\"><h2 class=\"h6 mb-0\" id=\"card-lsr\">Local Storm Reports (LSR)</h2></div>\n  <div class=\"card-body\">\n<p>The IEM processes LSRs issued by the NWS in real-time. A number of\n    applications on this website utilize this source of reports.</p>\n<ul>\n  <li><a href=\"https://groups.google.com/g/nws-damage-survey-pns\">NWS Damage Survey PNS Email List</a><br />\n  An email list that provides any NWS issued Damage Survey PNS statements.</li>\n\n  <li><a href=\"/plotting/auto/?q=207\">LSR + COOP Snowfall Analysis Autoplot #207</a><br />\n  Dynamic analysis of available LSR and COOP reports that is used to generate these static maps for: <a href=\"/data/lsr_snowfall.png\">Iowa</a>, <a href=\"/data/lsr_snowfall_nv.png\">Iowa map without labels</a>, and <a href=\"/data/mw_lsr_snowfall.png\">Midwest</a>.</li>\n\n  <li>Past 24 hours of Storm Reports<br />\n  <a href=\"/data/gis/shape/4326/us/lsr_24hour.zip\">ESRI Shapefile</a>, <a href=\"/data/gis/shape/4326/us/lsr_24hour.csv\">Comma Delimited</a>, <a href=\"/data/gis/shape/4326/us/lsr_24hour.geojson\">GeoJSON</a>. The IEM parses the realtime feed of NWS Local Storm Reports. Every 5 minutes, a process collects up the last 24 hours worth of reports and dumps them to the above files.</li>\n\n   <li><a href=\"/request/gis/lsrs.phtml\">Archived Local Storm Reports</a><br />\n Generate a shapefile of LSRs for a period of your choice dating back to 2003!</li>\n        <li><a href=\"/lsr/\">Local Storm Report App</a></li>\n</ul>\n  </div>\n</div>\n\n\n<div class=\"card mb-3\" role=\"region\" aria-labelledby=\"card-nexrad\">\n  <div class=\"card-header\"><h2 class=\"h6 mb-0\" id=\"card-nexrad\">NEXRAD RADAR</h2></div>\n  <div class=\"card-body\">\n<ul>\n <li><a href=\"/request/gis/nexrad_storm_attrs.php\">NEXRAD Storm Attributes</a><br />\n Download shapefiles of NEXRAD storm attribute data and view histogram summaries.</li>\n</ul>\n  </div>\n</div>\n\n<div class=\"card mb-3\" role=\"region\" aria-labelledby=\"card-snowfall\">\n  <div class=\"card-header\"><h2 class=\"h6 mb-0\" id=\"card-snowfall\">Snowfall</h2></div>\n  <div class=\"card-body\">\n<ul>\n <li><a href=\"/nws/snowfall_6hour.php\">Six Hour Snowfall Totals</a><br />\n Simple table of available 6 hour snowfall total reports.</li>\n</ul>\n  </div>\n</div>\n\n\n<div class=\"card mb-3\" role=\"region\" aria-labelledby=\"card-spc\">\n  <div class=\"card-header\"><h2 class=\"h6 mb-0\" id=\"card-spc\">Storm Prediction Center Products</h2></div>\n  <div class=\"card-body\">\n<ul>\n<li><a href=\"/request/gis/spc_mcd.phtml\">\n<i class=\"bi bi-download\" aria-hidden=\"true\"></i> SPC Mesoscale Discussion Shapefile Download</a></li>\n\n<li><a href=\"mcd_top10.phtml\">\n<i class=\"bi bi-list-ul\" aria-hidden=\"true\"></i> SPC Top 10 MCD Sizes</a></li>\n\n<li><a href=\"/request/gis/outlooks.phtml\">\n <i class=\"bi bi-download\" aria-hidden=\"true\"></i> SPC/WPC Outlook Shapefile Download</a></li>\n\n <li><a href=\"spc_top10.phtml\">\n <i class=\"bi bi-list-ul\" aria-hidden=\"true\"></i> SPC Top 10 Outlook Sizes</a></li>\n\n <li><a href=\"/request/gis/spc_watch.phtml\">\n <i class=\"bi bi-download\" aria-hidden=\"true\"></i> SPC Watch Polygon Shapefile Download</a></li>\n\n <li><a href=\"/GIS/apps/rview/watch.phtml\">Convective Watches Information</a>\n  <br />Lists out some simple details on each convective watch.</li>\n\n  <li><a href=\"/nws/watches.php\">List SPC Watches by Year</a>\n  <br />Lists out some simple details on all watches for a year.</li>\n\n  <li><a href=\"/nws/pds_watches.php\">Lists All SPC PDS Watches</a>\n  <br />Lists out watches tagged as Particularly Dangerous Situations (PDS).</li>\n\n  <li><a href=\"/nws/spc_outlook_search/\"><i class=\"bi bi-search\" aria-hidden=\"true\"></i> SPC Outlook / MCD search by point</a>\n  <br />Allows answering of the question of when was a given point last under\nsome convective outlook or the number of outlooks for a given point.</li>\n</ul>\n </div>\n</div>\n\n<div class=\"card mb-3\" role=\"region\" aria-labelledby=\"card-wpc\">\n  <div class=\"card-header\"><h2 class=\"h6 mb-0\" id=\"card-wpc\">Weather Prediction Center Products</h2></div>\n  <div class=\"card-body\">\n<ul>\n<li><a href=\"/request/gis/wpc_mpd.phtml\">\n<i class=\"bi bi-download\" aria-hidden=\"true\"></i> WPC Precipitation Discussion Shapefile Download</a></li>\n<li><a href=\"/nws/wpc_national_hilo/\">WPC National High Low Listing</a></li>\n<li><a href=\"/request/gis/outlooks.phtml\">\n <i class=\"bi bi-download\" aria-hidden=\"true\"></i> SPC/WPC Outlook Shapefile Download</a></li>\n  <li><a href=\"/nws/wpc_outlook_search/\"><i class=\"bi bi-search\" aria-hidden=\"true\"></i> WPC Outlook / MPD search by point</a>\n  <br />Allows answering of the question of when was a given point last under\nsome convective outlook or the number of outlooks for a given point.</li>\n </ul>\n  </div>\n</div>\n\n\n<div class=\"card mb-3\" role=\"region\" aria-labelledby=\"card-model\">\n  <div class=\"card-header\"><h2 class=\"h6 mb-0\" id=\"card-model\">Numerical Model Data</h2></div>\n  <div class=\"card-body\">\n<ul>\n <li><a href=\"/mos/\">Model Output Statistics</a><br />\n Archive of MOS back to 3 May 2007.</li>\n <li>HRRR MidWest 1km Reflectivity [animated GIF]\n <br />Animated GIF of HRRR Forecasted Reflectivity.\n  <a href=\"/data/model/hrrr/hrrr_1km_ref.gif\">Latest Run</a> or\n  <a href=\"/timemachine/?product=61\">Archived plots</a></li>\n</ul>\n  </div>\n</div>\n\n<div class=\"card mb-3\" role=\"region\" aria-labelledby=\"card-textprod\">\n  <div class=\"card-header\"><h2 class=\"h6 mb-0\" id=\"card-textprod\">Text Product Archives</h2></div>\n  <div class=\"card-body\">\n\n<p>Please visit this <a href=\"text.php\">dedicated page</a> for information\nabout the IEM's text product archives.</p>\n\n  </div>\n</div>\n\n\n</div>\n</div><!-- ./row -->\n\n</div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/nws/list_tags.css",
    "content": "/* NWS Warning Tags Application Custom Styles */\n\n/* Enhanced form styling */\n.form-check-input:checked {\n    background-color: var(--bs-primary);\n    border-color: var(--bs-primary);\n}\n\n.form-check-label {\n    cursor: pointer;\n}\n\n/* Fieldset styling for better visual hierarchy */\nfieldset {\n    background: rgba(var(--bs-light-rgb), 0.5);\n}\n\nfieldset legend {\n    width: auto;\n    padding: 0 0.5rem;\n    margin-bottom: 0.75rem;\n    font-size: 0.9rem;\n    border: none;\n}\n\n/* Card enhancements */\n.card-header h4 {\n    font-weight: 600;\n}\n\n/* Table styling improvements */\n.table-responsive {\n    border-radius: 0.375rem;\n    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n    max-height: 70vh; /* Limit height to enable scrolling */\n    overflow-y: auto; /* Enable vertical scrolling */\n}\n\n.table {\n    margin-bottom: 0;\n}\n\n.table thead th {\n    position: sticky;\n    top: 0;\n    background: var(--bs-light);\n    border-bottom: 2px solid var(--bs-border-color);\n    font-weight: 600;\n    font-size: 0.85rem;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n    z-index: 10;\n}\n\n/* Ensure sticky headers work properly in responsive containers */\n.table-responsive .table thead.sticky th {\n    position: sticky;\n    top: 0;\n    background: var(--bs-light);\n    z-index: 10;\n}\n\n.table tbody tr:hover {\n    background-color: rgba(var(--bs-primary-rgb), 0.05);\n}\n\n/* Interactive table buttons */\n.btn[id^=\"create-grid-\"] {\n    transition: all 0.2s ease;\n    font-weight: 500;\n}\n\n.btn[id^=\"create-grid-\"]:hover {\n    transform: translateY(-1px);\n    box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.15);\n}\n\n/* Warning type specific colors */\n.bg-tornado { background-color: #dc3545 !important; }\n.bg-severe { background-color: #ffc107 !important; }\n.bg-flood { background-color: #0dcaf0 !important; }\n.bg-marine { background-color: #0d6efd !important; }\n\n/* Alert enhancements */\n.alert {\n    border: none;\n    border-radius: 0.5rem;\n    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n}\n\n.alert-info {\n    background: linear-gradient(135deg, #d1ecf1 0%, #bee5eb 100%);\n    border-left: 4px solid #0dcaf0;\n}\n\n.alert-warning {\n    background: linear-gradient(135deg, #fff3cd 0%, #ffeaa7 100%);\n    border-left: 4px solid #ffc107;\n}\n\n/* Code block styling */\ncode {\n    background-color: rgba(var(--bs-dark-rgb), 0.05);\n    padding: 0.25rem 0.5rem;\n    border-radius: 0.25rem;\n    font-size: 0.875em;\n}\n\n/* Breadcrumb styling */\n.breadcrumb {\n    background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);\n    border-radius: 0.5rem;\n    padding: 0.75rem 1rem;\n    margin-bottom: 1.5rem;\n}\n\n/* Container improvements */\n.container-fluid {\n    max-width: 1400px;\n}\n\n/* Download button group styling */\n.btn-group .btn {\n    font-size: 0.875rem;\n    padding: 0.375rem 0.75rem;\n}\n\n/* Tabulator container styling */\n[id$=\"-tabulator\"] {\n    margin-top: 1rem;\n    border-radius: 0.375rem;\n    overflow: hidden;\n    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n}\n\n/* Tabulator theme overrides */\n.tabulator .tabulator-header {\n    background: linear-gradient(to bottom, #f8f9fa 0%, #e9ecef 100%);\n    border-bottom: 2px solid var(--bs-border-color);\n}\n\n.tabulator .tabulator-header .tabulator-col {\n    border-right: 1px solid var(--bs-border-color);\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n    padding: 0.5rem;\n    font-weight: 600;\n    font-size: 0.85rem;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n}\n\n.tabulator .tabulator-row:nth-child(even) {\n    background-color: rgba(var(--bs-light-rgb), 0.5);\n}\n\n.tabulator .tabulator-row:hover {\n    background-color: rgba(var(--bs-primary-rgb), 0.1) !important;\n}\n\n.tabulator .tabulator-cell {\n    border-right: 1px solid var(--bs-border-color-translucent);\n    padding: 0.5rem;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n    .container-fluid {\n        padding-left: 0.75rem;\n        padding-right: 0.75rem;\n    }\n    \n    fieldset {\n        margin-bottom: 1rem;\n    }\n    \n    .btn-lg {\n        font-size: 1rem;\n        padding: 0.5rem 1rem;\n    }\n    \n    .card-header h4 {\n        font-size: 1.1rem;\n    }\n}\n\n/* Desktop full-width tables */\n@media (min-width: 992px) {\n    .warning-tables .row {\n        display: block;\n    }\n    \n    .warning-tables .col-lg-6 {\n        width: 100%;\n        max-width: 100%;\n        margin-bottom: 2rem;\n    }\n    \n    .warning-tables .card {\n        height: auto;\n    }\n}\n\n/* Print styles */\n@media print {\n    .btn, .alert, nav {\n        display: none !important;\n    }\n    \n    .card {\n        border: 1px solid #000 !important;\n        break-inside: avoid;\n    }\n    \n    .card-header {\n        background: #f8f9fa !important;\n        color: #000 !important;\n    }\n}\n\n/* Focus styles for accessibility */\n.form-check-input:focus {\n    box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);\n}\n\n.btn:focus {\n    box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);\n}\n\n/* Loading state styling */\n.btn:disabled {\n    opacity: 0.7;\n    cursor: not-allowed;\n}\n\n/* Icon spacing improvements */\n.bi {\n    vertical-align: -0.125em;\n}\n\n/* Compact form layout adjustments */\n/* Year select inside its own column now */\n.form-compact select#year { max-width: 100%; }\n\n.criteria-options {\n    display: flex;\n    flex-direction: column;\n    gap: .25rem;\n}\n\n.criteria-item {\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    gap: .5rem 1rem;\n    padding: .35rem .5rem .5rem;\n    border: 1px solid var(--bs-border-color);\n    border-radius: .375rem;\n    background: rgba(var(--bs-light-rgb), .6);\n}\n\n.criteria-item:hover {\n    background: rgba(var(--bs-primary-rgb), .05);\n}\n\n.criteria-item .criteria-select select, .criteria-item .criteria-select {\n    min-width: 9rem;\n}\n\n@media (min-width: 992px) {\n    .criteria-item { flex-wrap: nowrap; }\n    .criteria-item .criteria-select { flex: 1; }\n}\n\n.action-area {\n    background: rgba(var(--bs-light-rgb), 0.5);\n}\n\n.action-area .btn { font-weight: 600; }\n\n/* Data access box separated from filters */\n.data-access-box {\n    border: 1px solid var(--bs-border-color);\n    border-radius: .5rem;\n    padding: .75rem 1rem;\n    background: linear-gradient(135deg, rgba(var(--bs-light-rgb),0.8) 0%, rgba(var(--bs-light-rgb),0.6) 100%);\n}\n\n.data-access-box code { background: rgba(var(--bs-dark-rgb),0.04); }\n\n@media (max-width: 991.98px) {\n    .criteria-item { padding: .5rem .5rem .75rem; }\n}\n"
  },
  {
    "path": "htdocs/nws/list_tags.module.js",
    "content": "// Tabulator-based interactive tables for NWS Warning Tags\n// Replaces ExtJS implementation with modern Tabulator\nimport {TabulatorFull as Tabulator} from 'https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator_esm.min.mjs';\n\n// Common Tabulator configuration\nconst commonConfig = {\n    layout: \"fitColumns\",\n    pagination: \"local\",\n    paginationSize: 25,\n    paginationSizeSelector: [10, 25, 50, 100, true],\n    movableColumns: true,\n    resizableColumns: true,\n    sortMode: \"local\",\n    filterMode: \"local\",\n    responsiveLayout: \"hide\",\n    tooltips: true,\n    clipboard: true,\n    clipboardCopyHeader: true,\n    htmlOutputConfig: {\n        columnHeaders: true,\n        columnGroups: false,\n        rowGroups: false,\n        columnCalcs: false,\n        dataTree: false\n    },\n    downloadConfig: {\n        columnHeaders: true,\n        columnGroups: false,\n        rowGroups: false,\n        columnCalcs: false,\n        dataTree: false\n    }\n};\n\n// Custom formatter for HTML content\nfunction htmlFormatter(cell) {\n    return cell.getValue();\n}\n\n// Extract data from HTML table\nfunction extractTableData(table) {\n    const data = [];\n    const headers = [];\n    \n    // Get headers\n    const headerCells = table.querySelectorAll('thead th');\n    headerCells.forEach(cell => {\n        headers.push(cell.textContent.trim());\n    });\n    \n    // Get data rows\n    const rows = table.querySelectorAll('tbody tr');\n    rows.forEach(row => {\n        const rowData = {};\n        const cells = row.querySelectorAll('td');\n        cells.forEach((cell, index) => {\n            if (index < headers.length) {\n                rowData[headers[index]] = cell.innerHTML; // Use innerHTML to preserve links and formatting\n            }\n        });\n        data.push(rowData);\n    });\n    \n    return data;\n}\n\nfunction setupTableButton(buttonId, tableId, columns) {\n    const button = document.getElementById(buttonId);\n    if (!button) {return;}\n\n    button.addEventListener('click', () => {\n        button.disabled = true;\n        button.innerHTML = '<i class=\"bi bi-hourglass-split\"></i> Creating Interactive Table...';\n        \n        // Extract data from the existing HTML table\n        const htmlTable = document.getElementById(tableId);\n        const data = extractTableData(htmlTable);\n        \n        // Hide the original table\n        htmlTable.style.display = 'none';\n        \n        // Create a new container for Tabulator\n        const tabulatorContainer = document.createElement('div');\n        tabulatorContainer.id = `${tableId}-tabulator`;\n        htmlTable.parentNode.insertBefore(tabulatorContainer, htmlTable.nextSibling);\n        \n        // Create Tabulator instance with the extracted data\n        const table = new Tabulator(`#${tableId}-tabulator`, {\n            ...commonConfig,\n            data,\n            columns,\n            autoColumns: false,\n            initialSort: [\n                {column: \"Eventid\", dir: \"desc\"}\n            ]\n        });\n\n        // Add download buttons after table creation\n        table.on(\"tableBuilt\", () => {\n            addDownloadButtons(buttonId, table);\n            button.style.display = 'none'; // Hide the original button\n        });\n    }, { once: true }); // Only allow one click\n}\n\nfunction addDownloadButtons(originalButtonId, table) {\n    const originalButton = document.getElementById(originalButtonId);\n    const buttonContainer = document.createElement('div');\n    buttonContainer.className = 'mb-2';\n    buttonContainer.innerHTML = `${''}\n        <div class=\"btn-group\" role=\"group\">\n            <button type=\"button\" class=\"btn btn-success btn-sm download-csv\">\n                <i class=\"bi bi-file-earmark-spreadsheet\"></i> Download CSV\n            </button>\n            <button type=\"button\" class=\"btn btn-secondary btn-sm copy-clipboard\">\n                <i class=\"bi bi-clipboard\"></i> Copy to Clipboard\n            </button>\n        </div>\n    `;\n    \n    originalButton.parentNode.insertBefore(buttonContainer, originalButton);\n    \n    // Add event listeners for download buttons\n    buttonContainer.querySelector('.download-csv').addEventListener('click', () => {\n        table.download(\"csv\", \"warning-tags.csv\");\n    });\n    \n    buttonContainer.querySelector('.copy-clipboard').addEventListener('click', () => {\n        table.copyToClipboard(\"active\");\n    });\n}\n\n// Column definitions for Severe Thunderstorm Warnings\nfunction getSVRColumns() {\n    return [\n        {title: \"Event ID\", field: \"Eventid\", sorter: \"string\", minWidth: 100, formatter: htmlFormatter},\n        {title: \"Product\", field: \"Product\", sorter: \"string\", minWidth: 80, formatter: htmlFormatter},\n        {title: \"WFO\", field: \"WFO\", sorter: \"string\", width: 80},\n        {title: \"Start (UTC)\", field: \"Start (UTC)\", sorter: \"string\", minWidth: 120},\n        {title: \"End\", field: \"End\", sorter: \"string\", minWidth: 80},\n        {title: \"Counties/Parishes\", field: \"Counties/Parishes\", sorter: \"string\", minWidth: 200},\n        {title: \"Wind Tag\", field: \"Wind Tag\", sorter: \"number\", width: 100, hozAlign: \"right\"},\n        {title: \"Hail Tag\", field: \"Hail Tag\", sorter: \"number\", width: 100, hozAlign: \"right\"},\n        {title: \"Tornado Tag\", field: \"Tornado Tag\", sorter: \"string\", width: 120},\n        {title: \"Damage Tag\", field: \"Damage Tag\", sorter: \"string\", width: 120},\n        {title: \"Storm Speed (kts)\", field: \"Storm Speed (kts)\", sorter: \"number\", width: 130, hozAlign: \"right\"}\n    ];\n}\n\n// Column definitions for Tornado Warnings  \nfunction getTORColumns() {\n    return getSVRColumns(); // Same structure as SVR\n}\n\n// Column definitions for Flash Flood Warnings\nfunction getFFWColumns() {\n    return [\n        {title: \"Event ID\", field: \"Eventid\", sorter: \"string\", minWidth: 100, formatter: htmlFormatter},\n        {title: \"Product\", field: \"Product\", sorter: \"string\", minWidth: 80, formatter: htmlFormatter},\n        {title: \"WFO\", field: \"WFO\", sorter: \"string\", width: 80},\n        {title: \"Start (UTC)\", field: \"Start (UTC)\", sorter: \"string\", minWidth: 120},\n        {title: \"End\", field: \"End\", sorter: \"string\", minWidth: 80},\n        {title: \"Counties/Parishes\", field: \"Counties/Parishes\", sorter: \"string\", minWidth: 200},\n        {title: \"Flash Flood Tag\", field: \"Flash Flood Tag\", sorter: \"string\", width: 130},\n        {title: \"Damage Tag\", field: \"Damage Tag\", sorter: \"string\", width: 120},\n        {title: \"Heavy Rain Tag\", field: \"Heavy Rain Tag\", sorter: \"string\", width: 130},\n        {title: \"Dam Tag\", field: \"Dam Tag\", sorter: \"string\", width: 100},\n        {title: \"Leeve Tag\", field: \"Leeve Tag\", sorter: \"string\", width: 100}\n    ];\n}\n\n// Column definitions for Marine Warnings\nfunction getSMWColumns() {\n    return [\n        {title: \"Event ID\", field: \"Eventid\", sorter: \"string\", minWidth: 100, formatter: htmlFormatter},\n        {title: \"Product\", field: \"Product\", sorter: \"string\", minWidth: 80, formatter: htmlFormatter},\n        {title: \"WFO\", field: \"WFO\", sorter: \"string\", width: 80},\n        {title: \"Start (UTC)\", field: \"Start (UTC)\", sorter: \"string\", minWidth: 120},\n        {title: \"End\", field: \"End\", sorter: \"string\", minWidth: 80},\n        {title: \"Counties/Parishes\", field: \"Counties/Parishes\", sorter: \"string\", minWidth: 200},\n        {title: \"Wind Tag\", field: \"Wind Tag\", sorter: \"number\", width: 100, hozAlign: \"right\"},\n        {title: \"Hail Tag\", field: \"Hail Tag\", sorter: \"number\", width: 100, hozAlign: \"right\"},\n        {title: \"Waterspout Tag\", field: \"Waterspout Tag\", sorter: \"string\", width: 130},\n        {title: \"Storm Speed (kts)\", field: \"Storm Speed (kts)\", sorter: \"number\", width: 130, hozAlign: \"right\"}\n    ];\n}\n\n// Initialize the application when DOM is ready\ndocument.addEventListener('DOMContentLoaded', () => {\n    // Setup button handlers for each warning type\n    setupTableButton('create-grid-svr', 'svr-table', getSVRColumns());\n    setupTableButton('create-grid-tor', 'tor-table', getTORColumns()); \n    setupTableButton('create-grid-ffw', 'ffw-table', getFFWColumns());\n    setupTableButton('create-grid-smw', 'smw-table', getSMWColumns());\n});\n"
  },
  {
    "path": "htdocs/nws/list_tags.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 77);\nputenv(\"TZ=UTC\");\ndate_default_timezone_set('UTC');\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\n\n$t = new MyView();\n\n$year = get_int404(\"year\", date(\"Y\"));\n$wfo = get_str404(\"wfo\", \"DMX\");\n$state = get_str404(\"state\", \"IA\");\n$opt = get_str404(\"opt\", \"bywfo\");\n$damagetag = get_str404(\"damagetag\", \"considerable\");\n\n$damagetags = array(\n    \"considerable\" => \"Considerable\",\n    \"destructive\" => \"Destructive (SVR Only)\",\n    \"catastrophic\" => \"Catastrophic\",\n);\nif (!array_key_exists($damagetag, $damagetags)) {\n    $damagetag = \"considerable\";\n}\n\n$bywfochecked = \"\";\n$bydamagetagchecked = \"\";\n$bystatechecked = \"\";\nif ($opt == \"bywfo\") {\n    $bywfochecked = \"checked\";\n    $jsonuri = sprintf(\n        \"%s/json/ibw_tags.py?wfo=%s&year=%s\",\n        $INTERNAL_BASEURL,\n        $wfo,\n        $year\n    );\n    $title = \"NWS $wfo issued Impact Based Warning Tags for $year\";\n} else if ($opt == \"bystate\") {\n    $bystatechecked = \"checked\";\n    $jsonuri = sprintf(\n        \"%s/json/ibw_tags.py?state=%s&year=%s\",\n        $INTERNAL_BASEURL,\n        $state,\n        $year\n    );\n    $title = \"NWS issued Impact Based Warning Tags for $state during $year\";\n} else {\n    $bydamagetagchecked = \"checked\";\n    $jsonuri = sprintf(\n        \"%s/json/ibw_tags.py?damagetag=%s&year=%s\",\n        $INTERNAL_BASEURL,\n        $damagetag,\n        $year\n    );\n    $title = \"NWS Damage Tags of $damagetag for $year\";\n}\n$publicjsonuri = str_replace($INTERNAL_BASEURL, $EXTERNAL_BASEURL, $jsonuri);\n\n$t->title = $title;\n$t->headextra = <<<EOM\n<link href=\"https://unpkg.com/tabulator-tables@6.2.1/dist/css/tabulator.min.css\" rel=\"stylesheet\">\n<link href=\"list_tags.css\" rel=\"stylesheet\">\nEOM;\n\n$t->jsextra = <<<EOM\n<script src=\"list_tags.module.js?v=2\" type=\"module\"></script>\nEOM;\n\n\nfunction do_text($row)\n{\n    if (is_null($row[\"product_id\"])) {\n        return \"\";\n    }\n    return sprintf(\n        \"<a href=\\\"%s\\\" target=\\\"_new\\\">Text</a>\",\n        $row[\"product_href\"],\n    );\n}\nfunction do_col1($row)\n{\n    if ($row[\"status\"] == 'NEW') {\n        return sprintf(\"<a href=\\\"%s\\\">%s</a>\", $row['href'], $row[\"eventid\"]);\n    }\n    $ptype = 'SVS';\n    if ($row[\"phenomena\"] == 'MA') $ptype = \"MWS\";\n    elseif ($row[\"phenomena\"] == 'FF') $ptype = \"FFS\";\n    return sprintf(\"<a href=\\\"%s\\\">%s.%s</a>\", $row['href'], $row[\"eventid\"], $ptype);\n}\nfunction do_col2($row)\n{\n    if ($row[\"status\"] == 'NEW') {\n        return date(\"Y/m/d Hi\", strtotime($row[\"issue\"]));\n    }\n    return date(\"Y/m/d Hi\", strtotime($row[\"polygon_begin\"]));\n}\nfunction do_col3($row)\n{\n    if ($row[\"status\"] == 'NEW') {\n        return date(\"Hi\", strtotime($row[\"expire\"]));\n    }\n    return date(\"Hi\", strtotime($row[\"polygon_end\"]));\n}\nfunction do_row($row)\n{\n    return sprintf(\n        \"<tr><td>%s</td><td>%s</td><td>%s</td><td nowrap>%s</td><td>%s</td><td>%s</td>\"\n            . \"<td>%02.0f</td><td>%4.2f</td><td>%s</td><td>%s</td><td>%02.0f</td></tr>\",\n        do_col1($row),\n        do_text($row),\n        $row[\"wfo\"],\n        do_col2($row),\n        do_col3($row),\n        $row[\"locations\"],\n        $row[\"windtag\"],\n        $row[\"hailtag\"],\n        $row[\"tornadotag\"],\n        $row[\"damagetag\"],\n        $row[\"tml_sknt\"]\n    );\n}\nfunction do_row_ma($row)\n{\n    return sprintf(\n        \"<tr><td>%s</td><td>%s</td><td>%s</td><td nowrap>%s</td><td>%s</td><td>%s</td>\"\n            . \"<td>%02.0f</td><td>%4.2f</td><td>%s</td><td>%02.0f</td></tr>\",\n        do_col1($row),\n        do_text($row),\n        $row[\"wfo\"],\n        do_col2($row),\n        do_col3($row),\n        $row[\"locations\"],\n        $row[\"windtag\"],\n        $row[\"hailtag\"],\n        $row[\"waterspouttag\"],\n        $row[\"tml_sknt\"]\n    );\n}\n\nfunction do_row_ffw($row)\n{\n    return sprintf(\n        \"<tr><td>%s</td><td>%s</td><td>%s</td><td nowrap>%s</td><td>%s</td><td>%s</td>\" .\n            \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td>\" .\n            \"<td>%s</td></tr>\",\n        do_col1($row),\n        do_text($row),\n        $row[\"wfo\"],\n        do_col2($row),\n        do_col3($row),\n        $row[\"locations\"],\n        $row[\"floodtag_flashflood\"],\n        $row[\"floodtag_damage\"],\n        $row[\"floodtag_heavyrain\"],\n        $row[\"floodtag_dam\"],\n        $row[\"floodtag_leeve\"]\n    );\n}\n\n$svrtable = <<<EOM\n <table id='svr-table' class=\"table table-sm table-striped table-bordered\">\n <thead class=\"sticky\"><tr><th>Eventid</th><th>Product</th><th>WFO</th><th>Start (UTC)</th><th>End</th>\n <th>Counties/Parishes</th>\n <th>Wind Tag</th><th>Hail Tag</th><th>Tornado Tag</th><th>Damage Tag</th>\n <th>Storm Speed (kts)</th></tr></thead>\n <tbody>\nEOM;\n$tortable = str_replace('svr-table', 'tor-table', $svrtable);\n$smwtable = <<<EOM\n <table id='smw-table' class=\"table table-sm table-striped table-bordered\">\n <thead class=\"sticky\"><tr><th>Eventid</th><th>Product</th><th>WFO</th><th>Start (UTC)</th><th>End</th>\n <th>Counties/Parishes</th>\n <th>Wind Tag</th><th>Hail Tag</th><th>Waterspout Tag</th>\n <th>Storm Speed (kts)</th></tr></thead>\n <tbody>\nEOM;\n$ffwtable = <<<EOM\n <table id='ffw-table' class=\"table table-sm table-striped table-bordered\">\n <thead class=\"sticky\"><tr><th>Eventid</th><th>Product</th><th>WFO</th><th>Start (UTC)</th><th>End</th>\n <th>Counties/Parishes</th>\n <th>Flash Flood Tag</th><th>Damage Tag</th>\n <th>Heavy Rain Tag</th><th>Dam Tag</th>\n <th>Leeve Tag</th></tr></thead>\n <tbody>\nEOM;\n\n$data = file_get_contents($jsonuri);\n$json = json_decode($data, $assoc = TRUE);\n\n// Enhanced bean counting to track all tag types and prevent double counting\n$counts = [\n    \"SV\" => [\n        \"events\" => [],\n        \"tags\" => [\n            \"windtag\" => [],\n            \"hailtag\" => [],\n            \"tornadotag\" => [],\n            \"damagetag\" => []\n        ]\n    ],\n    \"TO\" => [\n        \"events\" => [],\n        \"tags\" => [\n            \"windtag\" => [],\n            \"hailtag\" => [],\n            \"tornadotag\" => [],\n            \"damagetag\" => []\n        ]\n    ],\n    \"MA\" => [\n        \"events\" => [],\n        \"tags\" => [\n            \"windtag\" => [],\n            \"hailtag\" => [],\n            \"waterspouttag\" => []\n        ]\n    ],\n    \"FF\" => [\n        \"events\" => [],\n        \"tags\" => [\n            \"floodtag_flashflood\" => [],\n            \"floodtag_damage\" => [],\n            \"floodtag_heavyrain\" => [],\n            \"floodtag_dam\" => [],\n            \"floodtag_leeve\" => []\n        ]\n    ]\n];\n\n// Process each warning record\nforeach ($json['results'] as $key => $val) {\n    $ph = $val[\"phenomena\"];\n    $eventid = $val[\"eventid\"];\n    $countkey = sprintf(\"%s_%s\", $val[\"wfo\"], $eventid);\n    // Track unique events per phenomena type\n    $counts[$ph][\"events\"][$countkey] = 1;\n\n    // Track tag usage per event (prevents double counting when same event has multiple records)\n    foreach ($counts[$ph][\"tags\"] as $tagName => $tagCounts) {\n        if (isset($val[$tagName]) && $val[$tagName] !== null && $val[$tagName] !== '') {\n            $tagValue = (string)$val[$tagName];\n            // Initialize tag value array if doesn't exist\n            if (!isset($counts[$ph][\"tags\"][$tagName][$tagValue])) {\n                $counts[$ph][\"tags\"][$tagName][$tagValue] = [];\n            }\n\n            // Only count once per event (prevents double counting)\n            $counts[$ph][\"tags\"][$tagName][$tagValue][$countkey] = 1;\n        }\n    }\n\n    // Build the table rows\n    if ($ph == 'SV') {\n        $svrtable .= do_row($val);\n    } elseif ($ph == 'TO') {\n        $tortable .= do_row($val);\n    } elseif ($ph == 'MA') {\n        $smwtable .= do_row_ma($val);\n    } else {\n        $ffwtable .= do_row_ffw($val);\n    }\n}\n\n// Function to generate statistics summary\nfunction generateStatsSummary($counts) {\n    $phenomena_names = [\n        \"SV\" => \"Severe Thunderstorm\",\n        \"TO\" => \"Tornado\",\n        \"MA\" => \"Marine\",\n        \"FF\" => \"Flash Flood\"\n    ];\n\n    $tag_labels = [\n        \"windtag\" => \"Wind Tag\",\n        \"hailtag\" => \"Hail Tag\",\n        \"tornadotag\" => \"Tornado Tag\",\n        \"damagetag\" => \"Damage Tag\",\n        \"waterspouttag\" => \"Waterspout Tag\",\n        \"floodtag_flashflood\" => \"Flash Flood Tag\",\n        \"floodtag_damage\" => \"Flood Damage Tag\",\n        \"floodtag_heavyrain\" => \"Heavy Rain Tag\",\n        \"floodtag_dam\" => \"Dam Tag\",\n        \"floodtag_leeve\" => \"Levee Tag\"\n    ];\n\n    $summary = [];\n\n    foreach ($counts as $phenomena => $data) {\n        $totalEvents = count($data[\"events\"]);\n        $phenName = $phenomena_names[$phenomena] ?? $phenomena;\n\n        if ($totalEvents > 0) {\n            $summary[$phenomena] = [\n                \"name\" => $phenName,\n                \"total_events\" => $totalEvents,\n                \"tags\" => []\n            ];\n\n            foreach ($data[\"tags\"] as $tagName => $tagValues) {\n                if (!empty($tagValues)) {\n                    $tagLabel = $tag_labels[$tagName] ?? $tagName;\n                    $tagStats = [];\n\n                    // Calculate percentage for each individual tag value\n                    foreach ($tagValues as $tagValue => $events) {\n                        $eventCount = count($events);\n                        $percentage = round(($eventCount / $totalEvents) * 100, 1);\n                        $tagStats[$tagValue] = [\n                            \"count\" => $eventCount,\n                            \"percentage\" => $percentage\n                        ];\n                    }\n\n                    $summary[$phenomena][\"tags\"][$tagName] = [\n                        \"label\" => $tagLabel,\n                        \"values\" => $tagStats\n                    ];\n                }\n            }\n        }\n    }\n\n    return $summary;\n}\n\n$statsummary = generateStatsSummary($counts);\n\n$svrtable .= \"</tbody></table>\";\n$tortable .= \"</tbody></table>\";\n$ffwtable .= \"</tbody></table>\";\n$smwtable .= \"</tbody></table>\";\n\n$tselect = make_select(\"damagetag\", $damagetag, $damagetags);\n\n$yselect = yearSelect(2002, $year, 'year');\n$wselect = networkSelect(\"WFO\", $wfo, array(), \"wfo\");\n$sselect = stateSelect($state);\n$gentime = $json[\"generated_at\"];\n\n$t->content = <<<EOM\n <div class=\"container-fluid\">\n     <nav aria-label=\"breadcrumb\">\n         <ol class=\"breadcrumb\">\n             <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Resources</a></li>\n             <li class=\"breadcrumb-item active\" aria-current=\"page\">List Warning Tags Issued</li>\n         </ol>\n     </nav>\n\n     <div class=\"row\">\n         <div class=\"col-12\">\n             <div class=\"alert alert-info d-flex align-items-start\" role=\"alert\">\n                 <i class=\"bi bi-info-circle-fill me-2 flex-shrink-0\" style=\"font-size: 1.2rem;\"></i>\n                 <div>\n                     <strong>About This Application:</strong> This tool lists Flash Flood, Marine, Severe Thunderstorm,\n                     and Tornado Warnings issued by the National Weather Service for a given year, including metadata tags\n                     from initial warnings or followup statements.\n                     <br><strong>Important:</strong> Not all offices include these tags in their warnings!\n                     Data goes back to 2002, though tags weren't used until recent years.\n                 </div>\n             </div>\n         </div>\n     </div>\n\n     <form method=\"GET\" name=\"one\" class=\"mb-4\">\n         <div class=\"card form-compact\">\n             <div class=\"card-header bg-light\">\n                 <h5 class=\"card-title mb-0 d-flex align-items-center\"><i class=\"bi bi-funnel-fill me-2\"></i>Filter Options</h5>\n             </div>\n             <div class=\"card-body\">\n                 <div class=\"row g-3 align-items-stretch\">\n                     <!-- Search Criteria -->\n                     <div class=\"col-lg-7\">\n                         <fieldset class=\"border rounded p-3 h-100\" aria-labelledby=\"criteriaLegend\">\n                             <legend id=\"criteriaLegend\" class=\"fs-6 fw-bold text-primary mb-2\">Search Criteria</legend>\n                             <div class=\"criteria-options\">\n                                 <div class=\"criteria-item mb-2\">\n                                     <div class=\"form-check\">\n                                         <input type=\"radio\" name=\"opt\" value=\"bywfo\" id=\"bywfo\" class=\"form-check-input\" {$bywfochecked}>\n                                         <label for=\"bywfo\" class=\"form-check-label fw-medium\"><i class=\"bi bi-building me-1\"></i>By WFO</label>\n                                     </div>\n                                     <div class=\"criteria-select\">{$wselect}</div>\n                                 </div>\n                                 <div class=\"criteria-item mb-2\">\n                                     <div class=\"form-check\">\n                                         <input type=\"radio\" name=\"opt\" value=\"bystate\" id=\"bystate\" class=\"form-check-input\" {$bystatechecked}>\n                                         <label for=\"bystate\" class=\"form-check-label fw-medium\"><i class=\"bi bi-map me-1\"></i>By State</label>\n                                     </div>\n                                     <div class=\"criteria-select\">{$sselect}</div>\n                                 </div>\n                                 <div class=\"criteria-item\">\n                                     <div class=\"form-check\">\n                                         <input type=\"radio\" name=\"opt\" value=\"bydamagetag\" id=\"bydamagetag\" class=\"form-check-input\" {$bydamagetagchecked}>\n                                         <label for=\"bydamagetag\" class=\"form-check-label fw-medium\"><i class=\"bi bi-exclamation-triangle me-1\"></i>By Damage Tag</label>\n                                     </div>\n                                     <div class=\"criteria-select\">{$tselect}</div>\n                                 </div>\n                             </div>\n                         </fieldset>\n                     </div>\n                     <!-- Year -->\n                     <div class=\"col-lg-2\">\n                         <fieldset class=\"border rounded p-3 h-100\" aria-labelledby=\"yearLegend\">\n                             <legend id=\"yearLegend\" class=\"fs-6 fw-bold text-primary mb-2\">Year</legend>\n                             <label for=\"year\" class=\"visually-hidden\">Select Year</label>\n                             {$yselect}\n                         </fieldset>\n                     </div>\n                     <!-- Run Action -->\n                     <div class=\"col-lg-3 d-flex flex-column\">\n                         <div class=\"action-area h-100 d-flex flex-column border rounded p-3\">\n                             <div class=\"small text-muted mb-2\">When ready:</div>\n                             <div class=\"mt-auto\">\n                                 <button type=\"submit\" class=\"btn btn-primary w-100\"><i class=\"bi bi-search me-2\"></i>Generate</button>\n                             </div>\n                         </div>\n                     </div>\n                 </div>\n             </div>\n         </div>\n         <div class=\"data-access-box mt-2 small\">\n             <div class=\"d-flex flex-wrap justify-content-between align-items-start gap-2\">\n                 <div class=\"d-flex align-items-center fw-semibold text-primary\"><i class=\"bi bi-download me-2\"></i>Data Access</div>\n                 <div class=\"flex-grow-1\">\n                     <div class=\"text-muted\">JSON endpoint:</div>\n                     <code class=\"small text-break d-block\">{$publicjsonuri}</code>\n                 </div>\n                 <div>\n                     <a href=\"/json/\" class=\"btn btn-outline-secondary btn-sm\"><i class=\"bi bi-info-circle me-1\"></i>API Docs</a>\n                 </div>\n             </div>\n         </div>\n     </form>\n     </form>\n\n     <div class=\"alert alert-warning d-flex align-items-center mb-4\" role=\"alert\">\n         <i class=\"bi bi-clock-fill me-2 flex-shrink-0\"></i>\n         <div>\n             <strong>Data Generation:</strong> Based on data generated at <code>{$json[\"generated_at\"]}</code>.\n             Tables are cached for approximately one hour - check back later for updated values.\n         </div>\n     </div>\n\n     <!-- Statistics Summary -->\n     <div class=\"row mb-4\">\n         <div class=\"col-12\">\n             <div class=\"card\">\n                 <div class=\"card-header bg-light\">\n                     <h5 class=\"card-title mb-0\">\n                         <i class=\"bi bi-bar-chart-fill me-2\"></i>Warning Tag Statistics Summary\n                     </h5>\n                 </div>\n                 <div class=\"card-body\">\n                     <div class=\"row g-3\">\n    <p>This table summarizes the tag counts by considering each warning's lifecycle\n    and tries to avoid double counting.  For example, a CONSIDERABLE damage tag\n    used anywhere in the lifecycle would count as 1 event for that tag. This\n    also means that the shown percentages will sometimes add up to a value\n    greater than 100%, since tags update with the product lifecycle.</p>\nEOM;\n\nforeach ($statsummary as $phenomena => $stats) {\n    $t->content .= <<<EOM\n                         <div class=\"col-md-6 col-lg-3\">\n                             <div class=\"card h-100 border-secondary\">\n                                 <div class=\"card-header bg-secondary text-white\">\n                                     <h6 class=\"card-title mb-0\">{$stats['name']} Warnings</h6>\n                                 </div>\n                                 <div class=\"card-body\">\n                                     <div class=\"mb-2\">\n                                         <strong>Total Events:</strong> <span class=\"badge bg-primary\">{$stats['total_events']}</span>\n                                     </div>\nEOM;\n\n    foreach ($stats['tags'] as $tagName => $tagData) {\n        $t->content .= <<<EOM\n                                     <div class=\"mb-3\">\n                                         <small class=\"text-muted fw-bold\">{$tagData['label']}:</small>\n                                         <table class=\"table table-sm table-striped mt-1\">\n                                             <thead>\n                                                 <tr>\n                                                     <th>Value</th>\n                                                     <th>Count</th>\n                                                     <th>%</th>\n                                                 </tr>\n                                             </thead>\n                                             <tbody>\nEOM;\n\n        // Show individual tag values with their counts and percentages in table rows\n        foreach ($tagData['values'] as $value => $valueData) {\n            $t->content .= <<<EOM\n                                                 <tr>\n                                                     <td><code>{$value}</code></td>\n                                                     <td>{$valueData['count']}</td>\n                                                     <td>{$valueData['percentage']}%</td>\n                                                 </tr>\nEOM;\n        }\n\n        $t->content .= <<<EOM\n                                             </tbody>\n                                         </table>\n                                     </div>\nEOM;\n    }\n\n    $t->content .= <<<EOM\n                                 </div>\n                             </div>\n                         </div>\nEOM;\n}\n\n$t->content .= <<<EOM\n                     </div>\n                 </div>\n             </div>\n         </div>\n     </div>\n\n <div class=\"warning-tables\">\n     <div class=\"row g-4\">\n         <div class=\"col-lg-6\">\n             <div class=\"card h-100\">\n                 <div class=\"card-header bg-danger text-white d-flex align-items-center\">\n                     <i class=\"bi bi-tornado me-2\" style=\"font-size: 1.5rem;\"></i>\n                     <h4 class=\"mb-0\">Tornado Warnings</h4>\n                 </div>\n                 <div class=\"card-body\">\n                     <p class=\"card-text text-muted mb-3\">\n                         Tornado warnings with associated impact-based warning tags and damage assessments.\n                     </p>\n                     <button id=\"create-grid-tor\" class=\"btn btn-danger mb-3\" type=\"button\">\n                         <i class=\"bi bi-table me-2\"></i>Enable Interactive Table\n                     </button>\n                     <div class=\"table-responsive\">\n                         {$tortable}\n                     </div>\n                 </div>\n             </div>\n         </div>\n\n         <div class=\"col-lg-6\">\n             <div class=\"card h-100\">\n                 <div class=\"card-header bg-warning text-dark d-flex align-items-center\">\n                     <i class=\"bi bi-lightning-fill me-2\" style=\"font-size: 1.5rem;\"></i>\n                     <h4 class=\"mb-0\">Severe Thunderstorm Warnings</h4>\n                 </div>\n                 <div class=\"card-body\">\n                     <p class=\"card-text text-muted mb-3\">\n                         Severe thunderstorm warnings including wind, hail, and tornado tags with storm speed data.\n                     </p>\n                     <button id=\"create-grid-svr\" class=\"btn btn-warning mb-3\" type=\"button\">\n                         <i class=\"bi bi-table me-2\"></i>Enable Interactive Table\n                     </button>\n                     <div class=\"table-responsive\">\n                         {$svrtable}\n                     </div>\n                 </div>\n             </div>\n         </div>\n\n         <div class=\"col-lg-6\">\n             <div class=\"card h-100\">\n                 <div class=\"card-header bg-info text-white d-flex align-items-center\">\n                     <i class=\"bi bi-water me-2\" style=\"font-size: 1.5rem;\"></i>\n                     <h4 class=\"mb-0\">Flash Flood Warnings</h4>\n                 </div>\n                 <div class=\"card-body\">\n                     <p class=\"card-text text-muted mb-3\">\n                         Flash flood warnings with flood impact tags, heavy rain indicators, and infrastructure threats.\n                     </p>\n                     <button id=\"create-grid-ffw\" class=\"btn btn-info mb-3\" type=\"button\">\n                         <i class=\"bi bi-table me-2\"></i>Enable Interactive Table\n                     </button>\n                     <div class=\"table-responsive\">\n                         {$ffwtable}\n                     </div>\n                 </div>\n             </div>\n         </div>\n\n         <div class=\"col-lg-6\">\n             <div class=\"card h-100\">\n                 <div class=\"card-header bg-primary text-white d-flex align-items-center\">\n                     <i class=\"bi bi-water me-2\" style=\"font-size: 1.5rem;\"></i>\n                     <h4 class=\"mb-0\">Marine Warnings</h4>\n                 </div>\n                 <div class=\"card-body\">\n                     <p class=\"card-text text-muted mb-3\">\n                         Marine weather warnings including wind, hail, and waterspout tags for coastal and offshore areas.\n                     </p>\n                     <button id=\"create-grid-smw\" class=\"btn btn-primary mb-3\" type=\"button\">\n                         <i class=\"bi bi-table me-2\"></i>Enable Interactive Table\n                     </button>\n                     <div class=\"table-responsive\">\n                         {$smwtable}\n                     </div>\n                 </div>\n             </div>\n         </div>\n     </div>\n </div>\n </div>\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/nws/list_ugcs.css",
    "content": ".ugcs-card {\n  margin-top: 1.5rem;\n  margin-bottom: 1.5rem;\n}\n.ugcs-table-container {\n  background: #fff;\n  border-radius: 0.5rem;\n  box-shadow: 0 2px 8px rgba(0,0,0,0.04);\n  padding: 1.5rem;\n}\n.ugcs-form-label {\n  font-weight: 500;\n}\n"
  },
  {
    "path": "htdocs/nws/list_ugcs.module.js",
    "content": "import { TabulatorFull as Tabulator } from 'https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator_esm.min.js';\n\n// Helper: get URL parameters as object (safe, no prototype pollution)\nfunction getUrlParams() {\n    const params = Object.create(null); // no prototype\n    for (const [key, value] of new URLSearchParams(window.location.search)) {\n        if (Object.prototype.hasOwnProperty.call(params, key)) {continue;} // skip if already set\n        params[key] = value;\n    }\n    return params;\n}\n\n// Fetch UGC data from API\nasync function fetchUgcs(params) {\n    const apiParams = {};\n    if (params.just_firewx) {apiParams.just_firewx = params.just_firewx;}\n    if (params.w === 'wfo' && params.station) {apiParams.wfo = params.station;}\n    if (params.w === 'state' && params.state) {apiParams.state = params.state;}\n    const url = `/api/1/nws/ugcs.json?${new URLSearchParams(apiParams).toString()}`;\n    const resp = await fetch(url);\n    if (!resp.ok) {throw new Error('Failed to fetch UGC data');}\n    return (await resp.json()).data;\n}\n\nfunction formatSearchCell(cell) {\n    const state = cell.getValue().slice(0, 2); // Extract state from UGC\n    return `<a href=\"/vtec/search.php?mode=byugc&state=${state}&ugc=${cell.getValue()}\">Link</a>`;\n}\n\n// Render Tabulator table\nfunction renderTable(data) {\n    const table = new Tabulator('#ugcs-table', {\n        data,\n        layout: 'fitDataTable',\n        responsiveLayout: 'hide',\n        height: '70vh',\n        columns: [\n            { title: 'UGC', field: 'ugc', headerSort: true },\n            { title: 'Warning Search', field: 'ugc', formatter: formatSearchCell, headerSort: false },\n            { title: 'Name', field: 'name', headerSort: true },\n            { title: 'WFO', field: 'wfo', headerSort: true },\n        ],\n        placeholder: 'No UGCs found for the selected criteria',\n    });\n    addExportButtons(table);\n}\n\n// Add export buttons (CSV, Excel)\nfunction addExportButtons(table) {\n    let container = document.getElementById('ugcs-export-buttons');\n    if (!container) {\n        container = document.createElement('div');\n        container.id = 'ugcs-export-buttons';\n        container.className = 'mb-2 d-flex gap-2';\n        container.innerHTML =\n            '<button id=\"ugcs-csv\" class=\"btn btn-outline-success btn-sm\"><i class=\"bi bi-download\"></i> Download CSV</button>' +\n            '<button id=\"ugcs-xlsx\" class=\"btn btn-outline-primary btn-sm\"><i class=\"bi bi-download\"></i> Download Excel</button>';\n        const tableDiv = document.getElementById('ugcs-table');\n        tableDiv.parentNode.insertBefore(container, tableDiv);\n    }\n    document.getElementById('ugcs-csv').onclick = () => table.download('csv', 'ugcs.csv');\n    document.getElementById('ugcs-xlsx').onclick = () => table.download('xlsx', 'ugcs.xlsx', { sheetName: 'UGCs' });\n}\n\n// On DOM ready\nwindow.addEventListener('DOMContentLoaded', async () => {\n    // Form: update URL on submit (so PHP reloads page with correct params)\n    const form = document.querySelector('form[name=\"changeme\"]');\n    if (form) {\n        form.addEventListener('submit', () => {\n            // Let normal submit happen (PHP will reload page)\n        });\n    }\n    // Only render table if placeholder exists\n    const tableDiv = document.getElementById('ugcs-table');\n    if (!tableDiv) {return;}\n    // Fetch and render data\n    try {\n        const params = getUrlParams();\n        const data = await fetchUgcs(params);\n        renderTable(data);\n    } catch (err) {\n        tableDiv.innerHTML = `<div class=\"alert alert-danger\">${err.message}</div>`;\n    }\n});\n"
  },
  {
    "path": "htdocs/nws/list_ugcs.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 141);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/mlib.php\";\nrequire_once \"../../include/forms.php\";\n\n$t = new MyView();\n\n$t->headextra = <<<EOM\n<link type=\"text/css\" href=\"https://unpkg.com/tabulator-tables@6.3.1/dist/css/tabulator_bootstrap5.min.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"list_ugcs.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"list_ugcs.module.js\" type=\"module\"></script>\nEOM;\n\n$wfo = get_str404('station', 'DMX');\n$just_firewx = get_int404(\"just_firewx\", 0);\n$w = get_str404(\"w\", \"wfo\");\n$state = get_str404(\"state\", \"IA\");\nif (($just_firewx != 1) && ($just_firewx != 0)){\n    $just_firewx = 0;\n}\n\n$t->title = \"NWS UGCs by WFO\";\n\n$wselect = networkSelect(\"WFO\", $wfo);\n$opts = Array(\n    1 => \"Just Fire Weather Zones\",\n    0 => \"Show Non-Fire Weather Zones\",\n);\n$fselect = make_select(\"just_firewx\", $just_firewx, $opts);\n\n$arr = array(\n    \"just_firewx\" => $just_firewx,\n);\n$title = \"\";\nif (($w == \"wfo\") && array_key_exists(\"w\", $_REQUEST)) {\n    $title = \"for WFO: $wfo\";\n    $arr[\"wfo\"] = $wfo;\n}\nelse if ($w == \"state\") {\n    $title = \"for state: $state\";\n    $arr[\"state\"] = $state;\n}\n\n$wfoselected = ($w == \"wfo\") ? 'checked=\"checked\"': \"\";\n$stateselected = ($w == \"state\") ? 'checked=\"checked\"': \"\";\n$sselect = stateSelect($state);\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb bg-light px-3 py-2 mb-4 rounded\">\n    <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS User Resources</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">NWS UGCs by WFO</li>\n  </ol>\n</nav>\n\n<div class=\"card ugcs-card\">\n  <div class=\"card-body\">\n    <p class=\"mb-2\">The National Weather Service issues many products associated with\n      <a href=\"https://www.weather.gov/gis/AWIPSShapefiles\">Universal Geographic Codes</a> (UGCs).\n      These UGCs represent counties, forecast zones, marine zones, or fire weather zones. This page lists out a current listing of such codes and is powered by an\n      <a href=\"/api/1/docs#/nws/service_nws_ugcs__fmt__get\">IEM Webservice</a>.\n    </p>\n    <p class=\"mb-0\">The default display <a href=\"list_ugcs.php\">lists all non-fire weather UGCs</a> or\n      you can <a href=\"list_ugcs.php?just_firewx=1\">list all fire weather UGCs</a>.\n    </p>\n  </div>\n</div>\n\n<form method=\"GET\" name=\"changeme\" class=\"row g-3 align-items-end mb-4 bg-white p-3 rounded shadow-sm\">\n  <div class=\"col-md-4\">\n    <div class=\"form-check mb-1\">\n      <input class=\"form-check-input\" type=\"radio\" name=\"w\" value=\"wfo\" {$wfoselected} id=\"wfo\">\n      <label class=\"form-check-label ugcs-form-label\" for=\"wfo\">Select by WFO</label>\n    </div>\n    {$wselect}\n  </div>\n  <div class=\"col-md-4\">\n    <div class=\"form-check mb-1\">\n      <input class=\"form-check-input\" type=\"radio\" name=\"w\" value=\"state\" {$stateselected} id=\"state\">\n      <label class=\"form-check-label ugcs-form-label\" for=\"state\">Select by State</label>\n    </div>\n    {$sselect}\n  </div>\n  <div class=\"col-md-3\">\n    <label for=\"just_firewx\" class=\"form-label ugcs-form-label\">Zone Type</label>\n    {$fselect}\n  </div>\n  <div class=\"col-md-1 d-flex align-items-end\">\n    <button type=\"submit\" class=\"btn btn-primary w-100\">View UGCs</button>\n  </div>\n</form>\n\n<div class=\"ugcs-table-container\">\n  <h3 class=\"h5 mb-3\">UGCs listing {$title}</h3>\n  <div id=\"ugcs-table\"></div>\n</div>\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/nws/mcd_top10.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 121);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/network.php\";\n\n$t = new MyView();\n$count = get_int404(\"count\", 10);\n$baseurl = sprintf(\n    \"%s/json/mcd_bysize.py?count=%s&sort=\",\n    $INTERNAL_BASEURL,\n    $count\n);\n\nfunction dowork($baseurl, $sort)\n{\n    global $INTERNAL_BASEURL, $EXTERNAL_BASEURL;\n    $uri = $baseurl . $sort;\n    $public = str_replace($INTERNAL_BASEURL, $EXTERNAL_BASEURL, $uri);\n    $s = <<<EOM\n\n    <p>JSON Webservice for the data below:<br />\n    <code>{$public}</code></p>\n    <table class=\"table table-sm table-striped\">\n    <tr><th>Year</th><th>Number</th><th>Issuance UTC</th><th>Size (sq km)</th></tr>\n\nEOM;\n    $jdata = file_get_contents($uri);\n    $json = json_decode($jdata, $assoc = TRUE);\n    foreach ($json[\"mcds\"] as $key => $val) {\n        $s .= sprintf(\n            \"<tr><td>%s</td><td><a href=\\\"%s\\\">%s</a></td><td>%s</td><td>%.2f</td></tr>\",\n            $val[\"year\"],\n            $val[\"spcurl\"],\n            $val[\"product_num\"],\n            $val[\"utc_issue\"],\n            $val[\"area_sqkm\"]\n        );\n    }\n    $s .= \"</table>\\n\";\n    return $s;\n}\n\n$ltable = dowork($baseurl, \"DESC\");\n$stable = dowork($baseurl, \"ASC\");\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/current/severe.phtml\">Severe Weather Mainpage</a></li>\n <li class=\"active\">Top {$count} SPC Mesoscale Convective Discussions by size</li>\n</ol>\n\n<h3>Top {$count} SPC Mesoscale Convective Discussions by Size</h3>\n\n<p>The IEM maintains a database of <a href=\"https://www.spc.noaa.gov\">NWS Storm Prediction Center</a>\n Mesoscale Convective Discussions (MCD)s.  These products contain a polygon for the\n alerted region for the product. This page provides an unofficial listing\n of the top {$count} largest and smallest polygons associated with the MCDs.</p>\n\n <p><strong>Pro Tip:</strong> If you want to use this data, try copying the table\n contents and pasting into a spreadsheet program like Excel.</p>\n\n<p><strong>Related</strong>:\n<a href=\"spc_top10.phtml\" class=\"btn btn-primary\">Top 10 Outlooks by Size</a>\n</p>\n\n <p><form method=\"GET\" name=\"u\">\n Number of Events to Show:\n <input size=\"10\" type=\"text\" name=\"count\" value=\"{$count}\">\n <input type=\"submit\" value=\"Update Table\">\n </form></p>\n\n<h3>Top {$count} Largest:</h3>\n$ltable\n\n<h3>Top {$count} Smallest:</h3>\n$stable\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/nws/obs.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 40);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/mlib.php\";\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/station.php\";\n\n$t = new MyView();\n\n$sortcol = get_str404(\"sortcol\", \"peak\");\n$metar = get_str404(\"metar\", \"no\");\n$sorder = get_str404(\"sorder\", \"desc\");\n$wfo = get_str404(\"wfo\", 'DMX');\n\n$t->refresh = 60;\n$t->title = \"Obs by NWS Forecast Office\";\n$nt = new NetworkTable(\"WFO\");\nif (!key_exists($wfo, $nt->table)){\n    http_response_code(422);\n    die(\"Invalid WFO provided\");\n}\n$tzname = $nt->table[$wfo][\"tzname\"];\n$tzinfo = new DateTimeZone($tzname);\n\n$arr = array(\n    \"wfo\" => $wfo,\n);\n$jobj = iemws_json(\"currents.json\", $arr);\n\n$vals = array(\n    \"tmpf\" => \"Air Temperature [F]\", \"dwpf\" => \"Dew Point Temp [F]\",\n    \"sknt\" => \"Wind Speed [knots]\", \"drct\" => \"Wind Direction [deg]\",\n    \"alti\" => \"Altimeter [mb]\", \"peak\" => \"Today's Wind Gust [knots]\",\n    \"peak_ts\" => \"Time of Peak Gust\", \"relh\" => \"Relative Humidity\",\n    \"feel\" => \"Feels Like [F]\", \"vsby\" => \"Visibility [miles]\",\n    \"ts\" => \"Observation Time\", \"phour\" => \"Last Hour Rainfall [inch]\",\n    \"min_tmpf\" => \"Today's Low Temperature\",\n    \"max_tmpf\" => \"Today's High Temperature\",\n    \"pday\" => \"Today Rainfall [inch]\"\n);\n\n$t->current_network = \"By NWS WFO\";\n\n$wselect = \"<select name=\\\"wfo\\\">\";\nforeach ($nt->table as $key => $value) {\n    $wselect .= \"<option value=\\\"$key\\\" \";\n    if ($wfo == $key) $wselect .= \"SELECTED\";\n    $wselect .= \">[\" . $key . \"] \" . $nt->table[$key][\"name\"] . \"</option>\\n\";\n}\n$wselect .= \"</select>\";\n\n$mydata = array();\nforeach ($jobj[\"data\"] as $bogus => $iemob) {\n    $key = $iemob[\"station\"];\n    $mydata[$key] = $iemob;\n    $valid = new DateTime($mydata[$key][\"utc_valid\"], new DateTimeZone(\"UTC\"));\n    $lts = $valid->setTimezone($tzinfo);\n    $mydata[$key][\"ts\"] = $lts->format(\"YmdHi\");\n    $mydata[$key][\"lts\"] = $lts;\n    $mydata[$key][\"sped\"] = $mydata[$key][\"sknt\"] * 1.15078;\n    $mydata[$key][\"relh\"] = relh(f2c($mydata[$key][\"tmpf\"]), f2c($mydata[$key][\"dwpf\"]));\n\n    if ($mydata[$key][\"max_gust\"] > $mydata[$key][\"max_sknt\"]) {\n        $mydata[$key][\"peak\"] = $mydata[$key][\"max_gust\"];\n        $mydata[$key][\"peak_ts\"] = null;\n        if (! is_null($mydata[$key][\"utc_max_gust_ts\"])) {\n            $gts = new DateTime($mydata[$key][\"utc_max_gust_ts\"], new DateTimeZone(\"UTC\"));\n            $mydata[$key][\"peak_ts\"] = $gts->setTimezone($tzinfo);\n        }\n    } else {\n        $mydata[$key][\"peak\"] = $mydata[$key][\"max_sknt\"];\n        $mydata[$key][\"peak_ts\"] = null;\n        if (! is_null($mydata[$key][\"local_max_sknt_ts\"])) {\n            $gts = new DateTime($mydata[$key][\"utc_max_sknt_ts\"], new DateTimeZone(\"UTC\"));\n            $mydata[$key][\"peak_ts\"] = $gts->setTimezone($tzinfo);\n        }\n    }\n}\n\n$table = \"\";\n$finalA = aSortBySecondIndex($mydata, $sortcol, $sorder);\n$now = new DateTime(\"now\", new DateTimeZone(\"UTC\"));\n$now = $now->setTimezone($tzinfo);\n$i = 0;\nforeach ($finalA as $key => $parts) {\n    $i++;\n    $table .= \"<tr\";\n    if ($i % 2 == 0)  $table .= \" bgcolor='#eeeeee'\";\n    $table .= \"><td><input type=\\\"checkbox\\\" name=\\\"st[]\\\" value=\\\"\" . $key . \"\\\"></td>\";\n\n    $tdiff = $now->getTimestamp() - $parts[\"lts\"]->getTimestamp();\n    $moreinfo = sprintf(\"/sites/site.php?station=%s&network=%s\", $key, $parts[\"network\"]);\n    $table .= \"<td>\" . $parts[\"name\"] . \" (<a href=\\\"$moreinfo\\\">\" . $key . \"</a>,\" . $parts[\"network\"] . \")</td>\";\n    $table .= \"<td \";\n    if ($tdiff > 10000) {\n        $fmt = \"d M h:i A\";\n        $table .= 'bgcolor=\"red\"';\n    } else if ($tdiff > 7200) {\n        $fmt = \"h:i A\";\n        $table .= 'bgcolor=\"orange\"';\n    } else if ($tdiff > 3600) {\n        $fmt = \"h:i A\";\n        $table .= 'bgcolor=\"green\"';\n    } else {\n        $fmt = \"h:i A\";\n    }\n    $table .= \">\" . $parts[\"lts\"]->format($fmt) . \"</td>\n     <td align='center'>\" . myround($parts[\"tmpf\"], 0) . \"(<font color=\\\"#ff0000\\\">\" . myround($parts[\"max_tmpf\"], 0) . \"</font>/<font color=\\\"#0000ff\\\">\" . myround($parts[\"min_tmpf\"], 0) . \"</font>)</td>\n     <td>\" . myround($parts[\"dwpf\"], 0) . \"</td>\n     <td>\" . myround($parts[\"feel\"], 0) . \"</td>\n        <td>\" . $parts[\"relh\"] . \"</td>\n        <td>\" . $parts[\"alti\"] . \"</td>\n        <td>\" . $parts[\"vsby\"] . \"</td>\n             <td>\" . myround($parts[\"sknt\"], 0);\n    if (strlen($parts[\"gust\"] != 0)) {\n        $table .= \"G\" . myround($parts[\"gust\"], 0);\n    }\n    $table .= \"</td>\";\n    $aa = is_null($parts[\"peak_ts\"]) ? \"\" : $parts[\"peak_ts\"]->format(\"h:i A\");\n    $phour = ($parts[\"phour\"] != 0.0001) ? $parts[\"phour\"] : 'T';\n    $pday = ($parts[\"pday\"] != 0.0001) ? $parts[\"pday\"] : 'T';\n    $table .= \"<td>\" . $parts[\"drct\"] . \"</td>\n        <td>\" . myround($parts[\"peak\"], 0) . \" @ {$aa}</td>\n            <td>{$phour}</td>\n            <td>{$pday}</td>\n        </tr>\\n\";\n    if ($metar == \"yes\") {\n        $table .= \"<tr\";\n        if ($i % 2 == 0)  $table .= \" bgcolor='#eeeeee'\";\n        $table .= \">\";\n        $table .= \"<td colspan=14 align=\\\"CENTER\\\">\n             <font color=\\\"brown\\\">\" . $parts[\"raw\"] . \"</font></td>\n             </tr>\\n\";\n    }\n}\n$uri = \"obs.php?wfo=$wfo&metar=$metar&sorder=$sorder&sortcol=\";\n\n$ar = array(\"no\" => \"No\", \"yes\" => \"Yes\");\n$mselect = make_select(\"metar\", $metar, $ar);\n\n$ar = array(\"asc\" => \"Ascending\", \"desc\" => \"Descending\");\n$sselect = make_select(\"sorder\", $sorder, $ar);\n\n$t->content = <<<EOM\n<form method=\"GET\" action=\"obs.php\" name=\"work\">\n<input type=\"hidden\" value=\"{$sortcol}\" name=\"sortcol\">\n\n<div class=\"row\">\n<div class=\"col-md-5\">\n  <strong>Select WFO:</strong> {$wselect}\n</div>\n<div class=\"col-md-3\">\n  <strong>Include METARS:</strong> {$mselect}\n</div>\n<div class=\"col-md-3\">\n  <strong>Sort Order:</strong> {$sselect}\n</div>\n<div class=\"col-md-1\">\n  <input type=\"submit\" value=\"Go!\">\n</div>\n</div>\n\n</form>\n\n<p>Sorted by column <b>{$vals[$sortcol]}</b>.\nTimestamps displayed are for <strong>{$tzname}</strong> timezone.\n\n<form method=\"GET\" action=\"/my/current.phtml\">\n\n<table class=\"table table-striped table-sm table-bordered\">\n<thead class=\"sticky\">\n<tr>\n  <th rowspan=\"2\">ADD:</th>\n  <th rowspan=\"2\">Station:</th>\n  <th rowspan=\"2\"><a href=\"{$uri}ts\">Ob Time</a></th>\n  <th colspan=\"3\">Temps &deg;F</th>\n  <th colspan=\"3\">&nbsp;</th>\n  <th colspan=\"3\">Wind [knots]</th>\n  <th colspan=\"2\">Precip</font></th>\n<tr>\n  <th>\n <a href=\"{$uri}tmpf\">Air</a>\n (<a href=\"{$uri}max_tmpf\">Hi</a> /\n <a href=\"{$uri}min_tmpf\">Lo</a>)\n</th>\n  <th><a href=\"{$uri}dwpf\">Dewp</a></th>\n  <th><a href=\"{$uri}feel\">Feels Like</a></th>\n  <th><a href=\"{$uri}relh\">RH %</a></th>\n  <th><a href=\"{$uri}alti\">Alti</a></th>\n  <th><a href=\"{$uri}vsby\">Vsby</a></th>\n  <th><a href=\"{$uri}sknt\">Speed</a></th>\n  <th><a href=\"{$uri}drct\">Direction</a></th>\n  <th><a href=\"{$uri}peak\">Gust</a>\n    @ <a href=\"{$uri}peak_ts\">Time</a></th>\n  <th><a href=\"{$uri}phour\">Last Hour</a></th>\n  <th><a href=\"{$uri}pday\">Today</a></th>\n</tr></thead>\n<tbody>\n{$table}\n</tbody>\n</table>\n\n<input type=\"submit\" value=\"Add to Favorites\">\n<input type=\"reset\" value=\"Reset\">\n\n</form></div>\nEOM;\n$t->render(\"sortables.phtml\");\n"
  },
  {
    "path": "htdocs/nws/pds_watches.css",
    "content": "/* Add a subtle shadow and rounded corners to Tabulator */\n#pds-table .tabulator {\n  border-radius: 0.5rem;\n  box-shadow: 0 2px 12px rgba(0,0,0,0.07);\n  border: 1px solid #dee2e6;\n  background: #fff;\n}\n\n/* Make sticky headers more distinct */\n#pds-table .tabulator .tabulator-header {\n  background: #f8f9fa;\n  border-bottom: 2px solid #0d6efd;\n}\n\n/* Download buttons group spacing */\n#tab-download-btns {\n  margin-bottom: 1rem;\n}\n\n/* Improve focus/hover for download buttons */\n#tab-download-btns .btn:focus, #tab-download-btns .btn:hover {\n  background: #0d6efd;\n  color: #fff;\n  border-color: #0d6efd;\n}\n\n/* Responsive tweaks for small screens */\n@media (max-width: 576px) {\n  #pds-table .tabulator {\n    font-size: 0.95rem;\n  }\n  #tab-download-btns {\n    flex-direction: column;\n    gap: 0.5rem;\n  }\n}\n"
  },
  {
    "path": "htdocs/nws/pds_watches.module.js",
    "content": "// Migration to ES Module, Tabulator, and Bootstrap 5 (rules: ES module, no jQuery, Tabulator, Bootstrap5)\nimport { TabulatorFull as Tabulator } from 'https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator_esm.min.mjs';\n\n// Fetch the data from the backend JSON endpoint\nfetch('/json/watches.py?is_pds=1')\n    .then(resp => resp.json())\n    .then(json => {\n        const tableData = json.events.map(val => ({\n            year: val.year,\n            watch: `<a target=\"_blank\" href=\"https://www.spc.noaa.gov/products/watch/${val.year}/ww${val.num.toString().padStart(4, '0')}.html\">${val.type} ${val.num}</a>`,\n            states: val.states,\n            issue: val.issue,\n            expire: val.expire,\n            tornadoes_1m_strong: val.tornadoes_1m_strong,\n            hail_1m_2inch: val.hail_1m_2inch,\n            max_hail_size: val.max_hail_size,\n            max_wind_gust_knots: val.max_wind_gust_knots,\n        }));\n\n        const columns = [\n            { title: 'Year', field: 'year', headerFilter: true, width: 80 },\n            { title: 'Watch Num', field: 'watch', formatter: 'html', width: 130 },\n            { title: 'State(s)', field: 'states', headerFilter: true },\n            { title: 'Issued', field: 'issue', sorter: 'datetime', width: 160 },\n            { title: 'Expired', field: 'expire', sorter: 'datetime', width: 160 },\n            {\n                title: 'Prob EF2+ Tor',\n                field: 'tornadoes_1m_strong',\n                hozAlign: 'center',\n                width: 120,\n            },\n            { title: 'Prob Hail 2+in', field: 'hail_1m_2inch', hozAlign: 'center', width: 120 },\n            { title: 'Max Hail Size', field: 'max_hail_size', hozAlign: 'center', width: 120 },\n            {\n                title: 'Max Wind Gust kts',\n                field: 'max_wind_gust_knots',\n                hozAlign: 'center',\n                width: 140,\n            },\n        ];\n\n        window.pds = new Tabulator('#pds-table', {\n            data: tableData,\n            columns,\n            layout: 'fitDataStretch',\n            responsiveLayout: true,\n            height: '600px',\n            movableColumns: true,\n            pagination: true,\n            paginationSize: 25,\n            paginationSizeSelector: [25, 50, 100, true],\n            placeholder: 'No PDS Watches found.',\n            headerSortTristate: true,\n            columnDefaults: { resizable: true },\n            // Bootstrap 5 styling\n            rowFormatter: row => row.getElement().classList.add('align-middle'),\n            // Export options\n            downloadConfig: {\n                columnHeaders: true,\n                columnGroups: false,\n                rowGroups: false,\n                columnCalcs: false,\n            },\n            downloadRowRange: 'all',\n            downloadReady: (fileContents, blob) => blob,\n            // Add download buttons\n            renderComplete() {\n                if (!document.getElementById('tab-download-btns')) {\n                    const btns = document.createElement('div');\n                    btns.id = 'tab-download-btns';\n                    btns.className = 'mb-3';\n                    btns.innerHTML =\n                        '<button class=\"btn btn-outline-secondary btn-sm me-2\" id=\"tab-csv\">Download CSV</button>' +\n                        '<button class=\"btn btn-outline-secondary btn-sm me-2\" id=\"tab-xlsx\">Download XLSX</button>' +\n                        '<button class=\"btn btn-outline-secondary btn-sm\" id=\"tab-json\">Download JSON</button>';\n                    const parent = document.querySelector('#pds-table').parentElement;\n                    parent.insertBefore(btns, document.querySelector('#pds-table'));\n                    document.getElementById('tab-csv').onclick = () =>\n                        this.download('csv', 'pds_watches.csv');\n                    document.getElementById('tab-xlsx').onclick = () =>\n                        this.download('xlsx', 'pds_watches.xlsx');\n                    document.getElementById('tab-json').onclick = () =>\n                        this.download('json', 'pds_watches.json');\n                }\n            },\n        });\n    });\n"
  },
  {
    "path": "htdocs/nws/pds_watches.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 136);\n\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\n\n$uri = \"{$INTERNAL_BASEURL}/json/watches.py?is_pds=1\";\n$data = file_get_contents($uri);\n$json = json_decode($data, $assoc = TRUE);\n$table = \"\";\nforeach ($json['events'] as $key => $val) {\n    $spclink = sprintf(\n        '<a target=\"_blank\" href=\"https://www.spc.noaa.gov/products/watch/' .\n            '%s/ww%04.0f.html\">%s %s</a>',\n        $val['year'],\n        $val['num'],\n        $val[\"type\"],\n        $val['num']\n    );\n    $table .= sprintf(\n        \"<tr><td>%s</td><td>%s</td><td>%s</td>\" .\n            \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\",\n        $val[\"year\"],\n        $spclink,\n        $val[\"states\"],\n        $val[\"issue\"],\n        $val[\"expire\"],\n        $val[\"tornadoes_1m_strong\"],\n        $val[\"hail_1m_2inch\"],\n        $val[\"max_hail_size\"],\n        $val[\"max_wind_gust_knots\"],\n    );\n}\n\n$t = new MyView();\n$t->title = \"Particularly Dangerous Situation SPC Watches Listing\";\n\n// Use Tabulator ES module and Bootstrap 5 for styling\n$t->headextra = <<<EOM\n<link href=\"https://cdn.jsdelivr.net/npm/tabulator-tables@5.5.3/dist/css/tabulator_bootstrap5.min.css\" rel=\"stylesheet\">\n<link type=\"text/css\" href=\"pds_watches.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script type=\"module\" src=\"pds_watches.module.js\"></script>\nEOM;\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb bg-light px-2 py-2 mb-3\">\n    <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Resources</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Particularly Dangerous Situation Watches</li>\n  </ol>\n</nav>\n<h1 class=\"mb-3\">Particularly Dangerous Situation SPC Watches</h1>\n\n<div class=\"alert alert-info mb-4\">This page presents the current <strong>unofficial</strong> IEM accounting of SPC watches that contain the special Particularly Dangerous Situation phrasing.</div>\n\n<div class=\"mb-3\">\n  There is a <a href=\"/json/\">JSON(P) webservice</a> that backends this table presentation, you can directly access it here:\n  <br><code>{$EXTERNAL_BASEURL}/json/watches.py?is_pds=1</code>\n</div>\n\n<div class=\"mb-4\">\n  <strong>Related:</strong>\n  <a class=\"btn btn-primary btn-sm me-2\" href=\"/vtec/emergencies.php\">TOR/FFW Emergencies</a>\n  <a class=\"btn btn-primary btn-sm me-2\" href=\"/nws/watches.php\">List Watches by Year</a>\n  <a class=\"btn btn-primary btn-sm\" href=\"/vtec/pds.php\">PDS Warnings</a>\n</div>\n\n<div class=\"card mb-4\">\n  <div class=\"card-body\">\n    <div id=\"pds-table\"></div>\n  </div>\n</div>\nEOM;\n$t->render(\"full.phtml\");\n"
  },
  {
    "path": "htdocs/nws/snowfall_6hour.css",
    "content": "/* Snowfall 6 Hour Report styling */\n\n/* Enhanced form styling */\n.form-label {\n    font-weight: 600;\n    color: #495057;\n}\n\n.card-header {\n    background-color: #f8f9fa;\n    border-bottom: 1px solid #dee2e6;\n}\n\n.card-title {\n    color: #495057;\n    font-weight: 600;\n}\n\n/* Button styling */\n.btn-primary {\n    background-color: #0d6efd;\n    border-color: #0d6efd;\n    font-weight: 500;\n}\n\n.btn-primary:hover {\n    background-color: #0b5ed7;\n    border-color: #0a58ca;\n}\n\n.btn-success {\n    background-color: #198754;\n    border-color: #198754;\n    font-weight: 500;\n}\n\n/* Table styling */\n.table-responsive {\n    border-radius: 0.375rem;\n    overflow: hidden;\n}\n\n.table-dark {\n    --bs-table-bg: #495057;\n}\n\n/* Badge styling for trace amounts */\n.badge.bg-info {\n    background-color: #0dcaf0 !important;\n    color: #000;\n    font-weight: 600;\n}\n\n/* Tabulator height */\n#snowfall-tabulator {\n    border: 1px solid #dee2e6;\n    border-radius: 0.375rem;\n}\n\n/* Form check improvements */\n.form-check-input:checked {\n    background-color: #0d6efd;\n    border-color: #0d6efd;\n}\n\n.form-check-label {\n    font-size: 0.9rem;\n    color: #495057;\n}\n\n/* Responsive improvements */\n@media (max-width: 768px) {\n    .col-md-4 {\n        margin-bottom: 0.5rem;\n    }\n    \n    .form-check {\n        margin-bottom: 0.25rem;\n    }\n}\n"
  },
  {
    "path": "htdocs/nws/snowfall_6hour.module.js",
    "content": "// ES Module for NWS Six Hour Snowfall Reports\nimport { TabulatorFull as Tabulator } from 'https://unpkg.com/tabulator-tables@6.2.5/dist/js/tabulator_esm.min.js';\n\nlet _snowfallTable = null;\n\n/**\n * Initialize the Tabulator table with snowfall data\n */\nfunction initializeTable() {\n    // Get existing table data from the DOM\n    const tableData = [];\n    const rows = document.querySelectorAll('#thetable tbody tr');\n    \n    rows.forEach(row => {\n        const cells = row.querySelectorAll('td');\n        if (cells.length >= 8) {\n            // Extract station link info\n            const stationLink = cells[0].querySelector('a');\n            const href = stationLink ? stationLink.href : '';\n            const stationText = cells[0].textContent.trim();\n            \n            tableData.push({\n                station: stationText,\n                stationLink: href,\n                name: cells[1].textContent.trim(),\n                state: cells[2].textContent.trim(),\n                wfo: cells[3].textContent.trim(),\n                hour12: cells[4].textContent.trim(),\n                hour18: cells[5].textContent.trim(),\n                hour0: cells[6].textContent.trim(),\n                hour6: cells[7].textContent.trim()\n            });\n        }\n    });\n\n    // Initialize Tabulator table\n    _snowfallTable = new Tabulator(\"#snowfall-tabulator\", {\n        data: tableData,\n        layout: \"fitColumns\",\n        height: \"70vh\",\n        pagination: \"local\",\n        paginationSize: 50,\n        paginationSizeSelector: [25, 50, 100, 200],\n        movableColumns: true,\n        resizableColumns: true,\n        tooltips: true,\n        placeholder: \"No snowfall data available for the selected criteria\",\n        downloadConfig: {\n            columnHeaders: true,\n            columnGroups: false,\n            rowGroups: false,\n            columnCalcs: false,\n            dataTree: false\n        },\n        columns: [\n            {\n                title: \"Station/Network\", \n                field: \"station\", \n                width: 150,\n                formatter: (cell) => {\n                    const data = cell.getRow().getData();\n                    return data.stationLink ? \n                        `<a href=\"${data.stationLink}\" target=\"_blank\">${data.station}</a>` : \n                        data.station;\n                },\n                download: true\n            },\n            {title: \"Name\", field: \"name\", widthGrow: 2, download: true},\n            {title: \"State\", field: \"state\", width: 80, download: true},\n            {title: \"WFO\", field: \"wfo\", width: 80, download: true},\n            {\n                title: \"12 UTC<br/>(6 AM CST)\", \n                field: \"hour12\", \n                width: 120,\n                hozAlign: \"center\",\n                formatter: (cell) => {\n                    const value = cell.getValue();\n                    return value === 'T' ? '<span class=\"badge bg-info\">T</span>' : value;\n                },\n                download: true\n            },\n            {\n                title: \"18 UTC<br/>(12 PM CST)\", \n                field: \"hour18\", \n                width: 120,\n                hozAlign: \"center\",\n                formatter: (cell) => {\n                    const value = cell.getValue();\n                    return value === 'T' ? '<span class=\"badge bg-info\">T</span>' : value;\n                },\n                download: true\n            },\n            {\n                title: \"0 UTC<br/>(6 PM CST)\", \n                field: \"hour0\", \n                width: 120,\n                hozAlign: \"center\",\n                formatter: (cell) => {\n                    const value = cell.getValue();\n                    return value === 'T' ? '<span class=\"badge bg-info\">T</span>' : value;\n                },\n                download: true\n            },\n            {\n                title: \"6 UTC<br/>(12 AM CST)\", \n                field: \"hour6\", \n                width: 120,\n                hozAlign: \"center\",\n                formatter: (cell) => {\n                    const value = cell.getValue();\n                    return value === 'T' ? '<span class=\"badge bg-info\">T</span>' : value;\n                },\n                download: true\n            }\n        ]\n    });\n\n    // Add download buttons\n    const downloadContainer = document.createElement('div');\n    downloadContainer.className = 'mb-3';\n    downloadContainer.innerHTML = '<div class=\"btn-group\" role=\"group\" aria-label=\"Download options\">' +\n        '<button id=\"download-csv\" class=\"btn btn-outline-success btn-sm\">' +\n    '<i class=\"bi bi-filetype-csv\"></i> Download CSV</button>' +\n        '<button id=\"download-xlsx\" class=\"btn btn-outline-primary btn-sm\">' +\n    '<i class=\"bi bi-filetype-xls\"></i> Download Excel</button>' +\n        '<button id=\"download-json\" class=\"btn btn-outline-info btn-sm\">' +\n    '<i class=\"bi bi-filetype-json\"></i> Download JSON</button>' +\n        '</div>';\n    \n    document.getElementById('tabulator-container').insertBefore(downloadContainer, document.getElementById('snowfall-tabulator'));\n\n    // Add download event listeners\n    document.getElementById('download-csv').addEventListener('click', () => {\n        _snowfallTable.download(\"csv\", \"snowfall_6hour.csv\");\n    });\n\n    document.getElementById('download-xlsx').addEventListener('click', () => {\n        _snowfallTable.download(\"xlsx\", \"snowfall_6hour.xlsx\", {sheetName: \"Snowfall Data\"});\n    });\n\n    document.getElementById('download-json').addEventListener('click', () => {\n        _snowfallTable.download(\"json\", \"snowfall_6hour.json\");\n    });\n\n    // Hide the original table and show the Tabulator container\n    document.getElementById('thetable').style.display = 'none';\n    document.getElementById('tabulator-container').style.display = 'block';\n}\n\n/**\n * Initialize the application\n */\nfunction init() {\n    // Replace the \"Make Table Interactive\" button functionality\n    const makeFancyBtn = document.getElementById('makefancy');\n    if (makeFancyBtn) {\n        makeFancyBtn.addEventListener('click', () => {\n            initializeTable();\n            makeFancyBtn.style.display = 'none';\n        });\n    }\n}\n\n// Initialize when DOM is loaded\ndocument.addEventListener('DOMContentLoaded', init);"
  },
  {
    "path": "htdocs/nws/snowfall_6hour.php",
    "content": "<?php\n// show any NWS 6 hour snowfall reports\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 106);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/mlib.php\";\nrequire_once \"../../include/forms.php\";\n\n$t = new MyView();\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"https://unpkg.com/tabulator-tables@6.2.5/dist/css/tabulator_bootstrap5.min.css\">\n<link type=\"text/css\" href=\"snowfall_6hour.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"snowfall_6hour.module.js?v=3\" type=\"module\"></script>\nEOM;\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$now = new DateTime(sprintf(\"%s-%s-%s 12:00\", $year, $month, $day), new DateTimeZone(\"UTC\"));\n$wfo = get_str404(\"wfo\", \"DMX\");\n$w = get_str404(\"w\", \"all\");\n$state = get_str404(\"state\", \"IA\");\n// side logic for when $w is not set\nif (!array_key_exists(\"w\", $_REQUEST)){\n    if (array_key_exists(\"wfo\", $_REQUEST)){\n        $w = \"wfo\";\n    } else if (array_key_exists(\"state\", $_REQUEST)){\n        $w = \"state\";\n    }\n}\n\n$t->title = \"NWS Six Hour Snowfall Reports\";\n$t->refresh = 360;\n\n$wselect = networkSelect(\"WFO\", $wfo, array(), \"wfo\");\n$yselect = yearSelect(2010, $year, \"year\");\n$mselect = monthSelect($month, \"month\");\n$dselect = daySelect($day);\n\n// We need to loop over the date, so starting at 12z and to 6z of the next day\n$station_data = Array();\n$hrs = Array(12, 18, 0, 6);\n// loop over hrs array\nforeach($hrs as $hr){\n    $arr = array(\"valid\" => $now->format(\"Y-m-d\\TH:i\"));\n    $jobj = iemws_json(\"nws/snowfall_6hour.json\", $arr);\n    foreach ($jobj[\"data\"] as $bogus => $row) {\n        $station = $row[\"station\"];\n        if ($w == \"wfo\" && $row[\"wfo\"] != $wfo){\n            continue;\n        }\n        if ($w == \"state\" && $row[\"state\"] != $state){\n            continue;\n        }\n        if (! array_key_exists($station, $station_data)){\n            $station_data[$station] = Array(\n                \"network\" => $row[\"network\"],\n                \"station\" => $station,\n                \"name\" => $row[\"name\"],\n                \"state\" => $row[\"state\"],\n                \"wfo\" => $row[\"wfo\"],\n                \"value\" => Array(12 => \"M\", 18 => \"M\", 0 => \"M\", 6 => \"M\"),\n            );\n        }\n        $station_data[$station][\"value\"][$hr] = ($row[\"value\"] == 0.0001) ? \"T\": $row[\"value\"];\n    }\n    // add 6 hours to $now\n    $now->modify(\"+6 hours\");\n}\n\n\n$table = \"\";\nforeach ($station_data as $row) {\n    $table .= sprintf(\n        '<tr><td><a href=\"/sites/site.php?network=%s&amp;station=%s\">%s[%s]</td>' .\n            '<td>%s</td><td>%s</td><td>%s</td><td>%s</td>'.\n            '<td>%s</td><td>%s</td><td>%s</td></tr>',\n        $row[\"network\"],\n        $row[\"station\"],\n        $row[\"station\"],\n        $row[\"network\"],\n        $row[\"name\"],\n        $row[\"state\"],\n        $row[\"wfo\"],\n        $row[\"value\"][12],\n        $row[\"value\"][18],\n        $row[\"value\"][0],\n        $row[\"value\"][6],\n    );\n}\n\n$wfoselected = ($w == \"wfo\") ? 'checked=\"checked\"' : \"\";\n$allselected = ($w == \"all\") ? 'checked=\"checked\"' : \"\";\n$stateselected = ($w == \"state\") ? 'checked=\"checked\"' : \"\";\n$sselect = stateSelect($state);\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS User Resources</a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\">NWS Six Hour Snowfall</li>\n</ol>\n\n<p>The National Weather Service has a limited number of observers that report\nsnowfall totals at 6 hour intervals. This page lists any of those observations\nfound by the IEM whilst parsing the feed of SHEF encoded data.\n<a href=\"/api/1/docs#/nws/service_nws__varname__6hour__fmt__get\">API Service</a>\nwith this data.</p>\n\n<p>This page presents one \"day\" of data at a time. The day is defined as starting\nat 6 UTC, so the first report shown is valid at 12 UTC of the given date. The\nsubsequent 0, and 6 UTC values shown are with valid dates of the next day.</p>\n\n<div class=\"mb-3\">\n    <button id=\"makefancy\" class=\"btn btn-primary\">\n    <i class=\"bi bi-table\"></i> Make Table Interactive\n    </button>\n</div>\n\n<div class=\"card mb-4\">\n    <div class=\"card-header\">\n        <h5 class=\"card-title mb-0\">Filter Options</h5>\n    </div>\n    <div class=\"card-body\">\n        <form method=\"GET\" name=\"changeme\">\n            <div class=\"row g-3 mb-3\">\n                <div class=\"col-md-2\">\n                    <label for=\"year\" class=\"form-label\"><strong>Year:</strong></label>\n                    {$yselect}\n                </div>\n                <div class=\"col-md-2\">\n                    <label for=\"month\" class=\"form-label\"><strong>Month:</strong></label>\n                    {$mselect}\n                </div>\n                <div class=\"col-md-2\">\n                    <label for=\"day\" class=\"form-label\"><strong>Day:</strong></label>\n                    {$dselect}\n                </div>\n            </div>\n            <div class=\"row g-3 mb-3\">\n                <div class=\"col-md-2\">\n                    <div class=\"form-check\">\n                        <input class=\"form-check-input\" type=\"radio\" name=\"w\" value=\"all\" {$allselected} id=\"all\">\n                        <label class=\"form-check-label\" for=\"all\">Show all data</label>\n                    </div>\n                </div>\n                <div class=\"col-md-3\">\n                    <div class=\"form-check mb-2\">\n                        <input class=\"form-check-input\" type=\"radio\" name=\"w\" value=\"wfo\" {$wfoselected} id=\"wfo\">\n                        <label class=\"form-check-label\" for=\"wfo\">Select by WFO:</label>\n                    </div>\n                    {$wselect}\n                </div>\n                <div class=\"col-md-3\">\n                    <div class=\"form-check mb-2\">\n                        <input class=\"form-check-input\" type=\"radio\" name=\"w\" value=\"state\" {$stateselected} id=\"state\">\n                        <label class=\"form-check-label\" for=\"state\">Select by State:</label>\n                    </div>\n                    {$sselect}\n                </div>\n            </div>\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <button type=\"submit\" class=\"btn btn-success\">\n                        <i class=\"bi bi-search\"></i> View Table\n                    </button>\n                </div>\n            </div>\n        </form>\n    </div>\n</div>\n\n<h3>Six Hour Snowfall</h3>\n\n<p>Values are in inches. <span class=\"badge bg-info\">T</span> indicates a trace of snowfall.\nThe table will refresh every 6 minutes.</p>\n\n<!-- Tabulator container (initially hidden) -->\n<div id=\"tabulator-container\" style=\"display: none;\">\n    <div id=\"snowfall-tabulator\"></div>\n</div>\n\n<!-- Original table (shown by default) -->\n<div id=\"thetable\">\n    <div class=\"table-responsive\">\n        <table class=\"table table-striped table-sm table-bordered\">\n            <thead class=\"table-dark sticky-top\">\n                <tr>\n                    <th>Station/Network</th>\n                    <th>Name</th>\n                    <th>State</th>\n                    <th>WFO</th>\n                    <th>12 UTC<br />(6 AM CST)</th>\n                    <th>18 UTC<br />(12 PM CST)</th>\n                    <th>0 UTC<br />(6 PM CST)</th>\n                    <th>6 UTC<br />(12 AM CST)</th>\n                </tr>\n            </thead>\n            <tbody>\n                {$table}\n            </tbody>\n        </table>\n    </div>\n</div>\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/nws/spc_outlook_search/index.css",
    "content": ".map {\n    width: 100%;\n    height: 300px;\n}\n\n/* Enhanced form styling */\n.form-label {\n    font-weight: 600;\n    color: #495057;\n}\n\n.form-control-sm {\n    font-size: 0.875rem;\n}\n\n.btn-primary {\n    background-color: #0d6efd;\n    border-color: #0d6efd;\n    font-weight: 500;\n}\n\n.btn-primary:hover {\n    background-color: #0b5ed7;\n    border-color: #0a58ca;\n}\n\n/* Section headings */\nh3 {\n    color: #212529;\n    font-weight: 700;\n    border-bottom: 2px solid #dee2e6;\n    padding-bottom: 0.5rem;\n}\n\nh5 {\n    color: #343a40;\n    font-weight: 600;\n    margin-bottom: 1rem !important;\n}\n\n/* Form sections */\n.col-md-4 {\n    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n}\n\n/* Coordinate input styling */\ninput[type=\"number\"]::-webkit-outer-spin-button,\ninput[type=\"number\"]::-webkit-inner-spin-button {\n    -webkit-appearance: none;\n    margin: 0;\n}\n\ninput[type=\"number\"] {\n    appearance: textfield;\n    -moz-appearance: textfield;\n}\n\n/* Form check improvements */\n.form-check-label {\n    font-size: 0.9rem;\n    color: #495057;\n}\n\n/* Map border enhancement */\n.map.border {\n    border-width: 2px !important;\n    border-color: #dee2e6 !important;\n}\n\n/* Loading indicator styling */\n#central-loading {\n    background-color: rgba(248, 249, 250, 0.95);\n    border: 1px solid #dee2e6;\n    border-radius: 0.5rem;\n    backdrop-filter: blur(2px);\n    animation: fadeIn 0.3s ease-in-out;\n}\n\n#central-loading .spinner-border {\n    width: 1.5rem;\n    height: 1.5rem;\n}\n\n@keyframes fadeIn {\n    from { opacity: 0; transform: translateY(-10px); }\n    to { opacity: 1; transform: translateY(0); }\n}\n\n/* Loading overlay effect */\n#thetabs.loading {\n    opacity: 0.6;\n    pointer-events: none;\n    transition: opacity 0.3s ease;\n}\n\n.outlook-days,\n.category-select {\n    margin: 1rem 0;\n}\n\n.day-grid,\n.category-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));\n    gap: 8px;\n    margin-top: 0.5rem;\n}\n\n.day-item {\n    position: relative;\n    text-align: center;\n}\n\n.day-item input[type=\"radio\"] {\n    position: absolute;\n    opacity: 0;\n    width: 0;\n    height: 0;\n}\n\n.day-item label {\n    display: block;\n    padding: 0.5rem 0.25rem;\n    background-color: #f8f9fa;\n    border: 1px solid #dee2e6;\n    border-radius: 0.375rem;\n    cursor: pointer;\n    transition: all 0.2s ease;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    font-size: 0.85rem;\n    font-weight: 500;\n}\n\n.day-item input[type=\"radio\"]:checked + label {\n    background-color: #0d6efd;\n    color: white;\n    border-color: #0d6efd;\n    box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.25);\n}\n\n.day-item label:hover {\n    background-color: #e9ecef;\n    border-color: #adb5bd;\n}\n\n.day-item input[type=\"radio\"]:checked + label:hover {\n    background-color: #0b5ed7;\n    border-color: #0a58ca;\n}\n\n.day-item input[type=\"radio\"]:focus + label {\n    box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.25);\n    outline: none;\n}\n\n.btn-group {\n    display: inline-flex;\n    flex-wrap: wrap;\n    gap: 4px;\n}\n\n.btn-group .btn {\n    flex: 0 0 auto;\n    padding: 0.375rem 0.75rem;\n    border-radius: 0.25rem;\n    line-height: 1.5;\n}\n\n.mb-2 {\n    margin-bottom: 0.75rem;\n}\n\n.form-group {\n    margin-bottom: 1rem;\n}\n\n.form-group label {\n    display: block;\n    margin-bottom: 0.5rem;\n    font-weight: 500;\n}\n\n/* Tabulator height and styling */\n.tabulator {\n    height: 70vh;\n    border: 1px solid #dee2e6;\n    border-radius: 0.375rem;\n}\n\n/* PDS Badge Animation */\n.pds-badge {\n    animation: pulse-red 2s infinite;\n    font-weight: bold;\n}\n\n@keyframes pulse-red {\n    0% { background-color: #dc3545; transform: scale(1); }\n    50% { background-color: #b02a37; transform: scale(1.05); }\n    100% { background-color: #dc3545; transform: scale(1); }\n}"
  },
  {
    "path": "htdocs/nws/spc_outlook_search/index.js",
    "content": "/* global ol, olSelectLonLat, Tabulator */\nlet marker = null;\nlet outlooksTable = null;\nlet mcdsTable = null;\nlet watchesTable = null;\n\n/**\n * Replace HTML special characters with their entity equivalents\n * @param string val\n * @returns string converted string\n */\nfunction escapeHTML(val) {\n    return val.replace(/&/g, '&amp;')\n              .replace(/</g, '&lt;')\n              .replace(/>/g, '&gt;')\n              .replace(/\"/g, '&quot;')\n              .replace(/'/g, '&#039;');\n}\n\nlet loadingCount = 0;\n\nfunction showLoading() {\n    loadingCount++;\n    if (loadingCount === 1) {\n        // Only show loading on first request to prevent flicker\n        document.getElementById('central-loading').style.display = 'block';\n        document.getElementById('thetabs').classList.add('loading');\n    }\n}\n\nfunction hideLoading() {\n    loadingCount--;\n    if (loadingCount <= 0) {\n        loadingCount = 0;\n        // Small delay to ensure user sees the loading indicator\n        setTimeout(() => {\n            document.getElementById('central-loading').style.display = 'none';\n            document.getElementById('thetabs').classList.remove('loading');\n        }, 100);\n    }\n}\n\nfunction workflow() {\n    const lon = parseFloat(document.getElementById(\"lon\").value);\n    const lat = parseFloat(document.getElementById(\"lat\").value);\n    if (isNaN(lon) || isNaN(lat)) {\n        return;\n    }\n    updateSearchResultsHeader(lon, lat);\n    doOutlook(lon, lat);\n    doMCD(lon, lat);\n    doWatch(lon, lat);\n}\n\nfunction updateURLParams(params = {}) {\n    const url = new URL(window.location.href);\n    // Update provided parameters\n    Object.entries(params).forEach(([key, value]) => {\n        if (value !== null) {\n            url.searchParams.set(key, value);\n        }\n    });\n    window.history.replaceState({}, '', url);\n}\n\nfunction updateMarkerPosition(lon, lat) {\n    // Round lat/lon to 4 decimal places for URL params\n    const roundedLon = parseFloat(lon.toFixed(4));\n    const roundedLat = parseFloat(lat.toFixed(4));\n\n    // Update input fields with rounded values\n    document.getElementById(\"lon\").value = roundedLon;\n    document.getElementById(\"lat\").value = roundedLat;\n\n    updateURLParams({lon: roundedLon, lat: roundedLat});\n    workflow();\n}\n\nfunction buildUI() {\n    document.getElementById(\"manualpt\").addEventListener(\"click\", () => {\n        const la = parseFloat(document.getElementById(\"lat\").value);\n        const lo = parseFloat(document.getElementById(\"lon\").value);\n        marker.setGeometry(new ol.geom.Point(ol.proj.fromLonLat([lo, la])));\n        updateMarkerPosition(lo, la);\n    });\n    document.getElementById('last').addEventListener('change', () => {\n        const last = document.getElementById('last').checked ? '1' : '0';\n        updateURLParams({last});\n        workflow();\n    });\n    document.getElementById('events').addEventListener('change', () => {\n        const events = document.getElementById('events').value;\n        updateURLParams({events});\n        workflow();\n    });\n    document.querySelectorAll('input[type=radio][name=day]').forEach(radio => {\n        radio.addEventListener('change', () => {\n            const day = document.querySelector(\"input[name='day']:checked\").value;\n            updateURLParams({day});\n            workflow();\n        });\n    });\n    document.querySelectorAll('input[type=radio][name=cat]').forEach(radio => {\n        radio.addEventListener('change', () => {\n            const cat = document.querySelector(\"input[name='cat']:checked\").value;\n            updateURLParams({cat});\n            workflow();\n        });\n    });\n}\n\n\nfunction updateSearchResultsHeader(lon, lat) {\n    const header = document.getElementById('search-results-header');\n    if (header) {\n        header.textContent = `Results of Point Search (${lat.toFixed(4)}°N, ${lon.toFixed(4)}°E)`;\n    }\n}\n\nfunction doOutlook(lon, lat) {\n    const last = document.getElementById('last').checked ? escapeHTML(document.getElementById('events').value) : '0';\n    const day = escapeHTML(document.querySelector(\"input[name='day']:checked\").value);\n    const cat = escapeHTML(document.querySelector(\"input[name='cat']:checked\").value);\n\n    showLoading();\n    const jsonurl = `/json/spcoutlook.py?lon=${lon}&lat=${lat}&last=${last}&day=${day}&cat=${cat}`;\n    document.getElementById(\"outlooks_link\").href = jsonurl;\n    const excelurl = `/json/spcoutlook.py?lon=${lon}&lat=${lat}&last=${last}&day=${day}&cat=${cat}&fmt=excel`;\n    document.getElementById(\"outlooks_excel\").href = excelurl;\n    const csvurl = `/json/spcoutlook.py?lon=${lon}&lat=${lat}&last=${last}&day=${day}&cat=${cat}&fmt=csv`;\n    document.getElementById(\"outlooks_csv\").href = csvurl;\n\n    fetch(jsonurl)\n        .then(response => response.json())\n        .then(data => {\n            hideLoading();\n            outlooksTable.replaceData(data.outlooks || []);\n        })\n        .catch(() => {\n            hideLoading();\n        });\n}\nfunction doMCD(lon, lat) {\n    showLoading();\n    const jsonurl = `/json/spcmcd.py?lon=${lon}&lat=${lat}`;\n    document.getElementById(\"mcds_link\").href = jsonurl;\n    const excelurl = `/json/spcmcd.py?lon=${lon}&lat=${lat}&fmt=excel`;\n    document.getElementById(\"mcds_excel\").href = excelurl;\n    const csvurl = `/json/spcmcd.py?lon=${lon}&lat=${lat}&fmt=csv`;\n    document.getElementById(\"mcds_csv\").href = csvurl;\n\n    fetch(jsonurl)\n        .then(response => response.json())\n        .then(data => {\n            hideLoading();\n            mcdsTable.replaceData(data.mcds || []);\n        })\n        .catch(() => {\n            hideLoading();\n        });\n}\n\nfunction doWatch(lon, lat) {\n    showLoading();\n    const jsonurl = `/json/spcwatch.py?lon=${lon}&lat=${lat}`;\n    document.getElementById(\"watches_link\").href = jsonurl;\n    const excelurl = `/json/spcwatch.py?lon=${lon}&lat=${lat}&fmt=excel`;\n    document.getElementById(\"watches_excel\").href = excelurl;\n    const csvurl = `/json/spcwatch.py?lon=${lon}&lat=${lat}&fmt=csv`;\n    document.getElementById(\"watches_csv\").href = csvurl;\n\n    fetch(jsonurl)\n        .then(response => response.json())\n        .then(data => {\n            hideLoading();\n            // Extract properties from features array for Tabulator\n            const watchData = data.features ? data.features.map(f => f.properties) : [];\n            watchesTable.replaceData(watchData);\n        })\n        .catch(() => {\n            hideLoading();\n        });\n}\n\nfunction convertLegacyHashLink() {\n    // Do the anchor tag linking, please\n    const tokens = window.location.href.split(\"#\");\n    if (tokens.length === 2) {\n        const tokens2 = tokens[1].split(\"/\");\n        if (tokens2.length === 3) {\n            if (tokens2[0] === 'bypoint') {\n                const lon = parseFloat(tokens2[1]);\n                const lat = parseFloat(tokens2[2]);\n                marker.setGeometry(new ol.geom.Point(ol.proj.fromLonLat([lon, lat])));\n                updateMarkerPosition(lon, lat);\n            }\n        }\n        // Remove the hash from the URL\n        window.history.replaceState({}, '', tokens[0]);\n    }\n}\n\nfunction restoreCoordinatesFromURL(urlParams) {\n    const lon = parseFloat(urlParams.get('lon'));\n    const lat = parseFloat(urlParams.get('lat'));\n    if (!isNaN(lon) && !isNaN(lat)) {\n        // Update input fields with rounded values\n        document.getElementById(\"lon\").value = lon.toFixed(4);\n        document.getElementById(\"lat\").value = lat.toFixed(4);\n        marker.setGeometry(new ol.geom.Point(ol.proj.fromLonLat([lon, lat])));\n        // Don't call updateMarkerPosition here as it triggers workflow()\n        // The workflow will be called once from readURLParams() if needed\n    }\n}\n\nfunction restoreFormSelectionFromURL(urlParams) {\n    // Set the day selection if provided in URL\n    const day = urlParams.get('day');\n    if (day) {\n        const dayRadio = document.querySelector(`input[name='day'][value='${escapeHTML(day)}']`);\n        if (dayRadio) {\n            dayRadio.checked = true;\n        }\n    }\n    // Set the category selection if provided in URL\n    const cat = urlParams.get('cat');\n    if (cat) {\n        const catRadio = document.querySelector(`input[name='cat'][value='${escapeHTML(cat)}']`);\n        if (catRadio) {\n            catRadio.checked = true;\n        }\n    }\n    // Set the \"List Most Recent\" checkbox if provided in URL\n    const last = urlParams.get('last');\n    if (last === '1') {\n        document.getElementById('last').checked = true;\n    }\n    // Set the event count if provided in URL\n    const events = urlParams.get('events');\n    if (events) {\n        const eventCount = parseInt(events, 10);\n        if (!isNaN(eventCount) && eventCount >= 1 && eventCount <= 100) {\n            document.getElementById('events').value = eventCount;\n        }\n    }\n    return { day, cat, last };\n}\n\nfunction readURLParams(){\n    // Read the URL parameters\n    const urlParams = new URLSearchParams(window.location.search);\n    restoreCoordinatesFromURL(urlParams);\n    restoreFormSelectionFromURL(urlParams);\n\n    // Trigger workflow when coordinates are present so all three tables load.\n    const lon = parseFloat(urlParams.get('lon'));\n    const lat = parseFloat(urlParams.get('lat'));\n    const hasValidCoordinates = !isNaN(lon) && !isNaN(lat);\n\n    if (hasValidCoordinates) {\n        workflow();\n    }\n}\n\nfunction initializeTables() {\n    // Initialize Outlooks table\n    outlooksTable = new Tabulator(\"#outlooks\", {\n        layout: \"fitColumns\",\n        height: \"70vh\",\n        placeholder: \"Click 'Update' or select a point on the map to search for convective outlooks\",\n        columns: [\n            {title: \"Day\", field: \"day\", width: 80},\n            {title: \"Threshold\", field: \"threshold\", width: 120},\n            {title: \"Outlook Issued At (UTC)\", field: \"utc_product_issue\", widthGrow: 1},\n            {title: \"Outlook Begins (UTC)\", field: \"utc_issue\", widthGrow: 1},\n            {title: \"Outlook Expires (UTC)\", field: \"utc_expire\", widthGrow: 1}\n        ]\n    });\n\n    // Initialize MCDs table\n    mcdsTable = new Tabulator(\"#mcds\", {\n        layout: \"fitColumns\",\n        height: \"70vh\",\n        placeholder: \"Click 'Update' or select a point on the map to search for mesoscale convective discussions\",\n        columns: [\n            {\n                title: \"Discussion Number\",\n                field: \"product_num\",\n                width: 150,\n                formatter: (cell) => {\n                    const data = cell.getRow().getData();\n                    return `<a href=\"${data.spcurl}\" target=\"_blank\">${data.year} ${data.product_num}</a>`;\n                }\n            },\n            {title: \"UTC Valid\", field: \"utc_issue\", widthGrow: 1},\n            {title: \"UTC Expire\", field: \"utc_expire\", widthGrow: 1},\n            {title: \"Watch Confidence\", field: \"watch_confidence\", width: 130},\n            {title: \"Concerning\", field: \"concerning\", widthGrow: 1},\n            {title: \"Most Prob Tornado\", field: \"most_prob_tornado\", width: 140},\n            {title: \"Most Prob Hail\", field: \"most_prob_hail\", width: 130},\n            {title: \"Most Prob Gust\", field: \"most_prob_gust\", width: 130}\n        ]\n    });\n\n    // Initialize Watches table\n    watchesTable = new Tabulator(\"#watches\", {\n        layout: \"fitColumns\",\n        height: \"70vh\",\n        placeholder: \"Click 'Update' or select a point on the map to search for convective watches\",\n        columns: [\n            {\n                title: \"Watch Number\",\n                field: \"number\",\n                width: 130,\n                formatter: (cell) => {\n                    const data = cell.getRow().getData();\n                    return `<a href=\"${data.spcurl}\" target=\"_blank\">${data.year} ${data.number}</a>`;\n                }\n            },\n            {title: \"Type\", field: \"type\", width: 80},\n            {title: \"UTC Valid\", field: \"issue\", widthGrow: 1},\n            {title: \"UTC Expire\", field: \"expire\", widthGrow: 1},\n            {title: \"Max Hail Size\", field: \"max_hail_size\", width: 120},\n            {title: \"Max Wind Speed\", field: \"max_wind_gust_knots\", width: 130},\n            {\n                title: \"Is PDS?\",\n                field: \"is_pds\",\n                width: 80,\n                formatter: (cell) => {\n                    const value = cell.getValue();\n                    if (value === 'YES') {\n                        return '<span class=\"badge bg-danger pds-badge\">PDS</span>';\n                    }\n                    return value || '';\n                }\n            }\n        ]\n    });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n    initializeTables();\n    buildUI();\n    const res = olSelectLonLat(\"map\", updateMarkerPosition);\n    marker = res.marker;\n\n    // Legacy URLs used anchor tags, which we want to migrate to url parameters\n    convertLegacyHashLink();\n    readURLParams();\n\n});\n"
  },
  {
    "path": "htdocs/nws/spc_outlook_search/index.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 157);\nrequire_once \"../../../include/mlib.php\";\nforce_https();\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/iemprop.php\";\n$t = new MyView();\n$OL = \"10.9.0\";\n\n$t->jsextra = <<<EOM\n<script src='/vendor/openlayers/{$OL}/ol.js'></script>\n<script type=\"text/javascript\" src=\"/js/olselect-lonlat.js?v=3\"></script>\n<script src=\"https://unpkg.com/tabulator-tables@6.2.1/dist/js/tabulator.min.js\"></script>\n<script type=\"text/javascript\" src=\"index.js?v=11\"></script>\nEOM;\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol.css\" />\n<link href=\"https://unpkg.com/tabulator-tables@6.2.1/dist/css/tabulator_bootstrap5.min.css\" rel=\"stylesheet\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"index.css\" />\nEOM;\n$t->title = \"SPC Convective Outlook + Discussion + Watch Search by Point\";\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n  <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Mainpage</a></li>\n  <li class=\"breadcrumb-item active\" aria-current=\"page\">SPC Convective Outlook + Discussion + Watch Search by Point</li>\n</ol>\n</nav>\n<p>This application allows you to search an archive of Storm Prediction Center (SPC)\nConvective Outlooks, Mesoscale Convective Discussions (MCD)s, and Convective Watches.\nThis archive is <strong>unofficial</strong> and based on IEM's processing of text products issued by\nthe SPC. Each tab presents buttons that allow for a download of the data in\nExcel or CSV format and a direct link to the JSON service backending the\ntable.</p>\n\n<div class=\"clearfix\"></div>\n\n<div class=\"row\">\n    <div class=\"col-md-4 bg-light p-4 rounded-3 border\">\n        <h3 class=\"mb-3\">Search by Point</h3>\n\n        <div class=\"mb-4\">\n            <h5 class=\"mb-3\">Manual Coordinate Entry</h5>\n            <div class=\"row g-2\">\n                <div class=\"col-6\">\n                    <label for=\"lat\" class=\"form-label small\">Latitude (°N)</label>\n                    <input type=\"number\" class=\"form-control form-control-sm\" id=\"lat\" placeholder=\"41.5300\" step=\"0.0001\">\n                </div>\n                <div class=\"col-6\">\n                    <label for=\"lon\" class=\"form-label small\">Longitude (°E)</label>\n                    <input type=\"number\" class=\"form-control form-control-sm\" id=\"lon\" placeholder=\"-93.6530\" step=\"0.0001\">\n                </div>\n            </div>\n            <button class=\"btn btn-primary btn-sm mt-2 w-100\" id=\"manualpt\">\n                    <i class=\"bi bi-search\" aria-hidden=\"true\"></i> Update Search\n            </button>\n        </div>\n\n        <div class=\"mb-4\">\n            <h5 class=\"mb-3\">Outlook Search Options</h5>\n            <div class=\"form-check mb-2\">\n                <input type=\"checkbox\" class=\"form-check-input\" id=\"last\" name=\"last\" value=\"1\">\n                <label class=\"form-check-label\" for=\"last\">\n                    List Most Recent\n                    <input type=\"number\" class=\"form-control form-control-sm d-inline-block ms-1\"\n                           id=\"events\" name=\"events\" value=\"1\" min=\"1\" max=\"100\" style=\"width: 60px;\">\n                    Event(s)\n                </label>\n            </div>\n        </div>\n\n        <div class=\"mb-4 outlook-days\">\n            <h5 class=\"mb-3\">Select Outlook Day</h5>\n            <div class=\"day-grid\">\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"day\" value=\"1\" checked id=\"d1\">\n                    <label for=\"d1\">Day 1</label>\n                </div>\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"day\" value=\"2\" id=\"d2\">\n                    <label for=\"d2\">Day 2</label>\n                </div>\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"day\" value=\"3\" id=\"d3\">\n                    <label for=\"d3\">Day 3</label>\n                </div>\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"day\" value=\"4\" id=\"d4\">\n                    <label for=\"d4\">Day 4</label>\n                </div>\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"day\" value=\"5\" id=\"d5\">\n                    <label for=\"d5\">Day 5</label>\n                </div>\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"day\" value=\"6\" id=\"d6\">\n                    <label for=\"d6\">Day 6</label>\n                </div>\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"day\" value=\"7\" id=\"d7\">\n                    <label for=\"d7\">Day 7</label>\n                </div>\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"day\" value=\"8\" id=\"d8\">\n                    <label for=\"d8\">Day 8</label>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"mb-4 category-select\">\n            <h5 class=\"mb-3\">Select Category</h5>\n            <div class=\"category-grid\">\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"cat\" value=\"categorical\" checked id=\"categorical\">\n                    <label for=\"categorical\">Categorical</label>\n                </div>\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"cat\" value=\"any severe\" id=\"anysevere\">\n                    <label for=\"anysevere\">Any Severe</label>\n                </div>\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"cat\" value=\"hail\" id=\"hail\">\n                    <label for=\"hail\">Hail</label>\n                </div>\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"cat\" value=\"tornado\" id=\"tornado\">\n                    <label for=\"tornado\">Tornado</label>\n                </div>\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"cat\" value=\"wind\" id=\"wind\">\n                    <label for=\"wind\">Wind</label>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"mb-4\">\n            <h5 class=\"mb-3\">Map Selection</h5>\n            <p class=\"small text-muted mb-2\">Drag the marker to select coordinates:</p>\n            <div id=\"map\" class=\"map border rounded\"\n                 data-lat-input=\"lat\"\n                 data-lon-input=\"lon\"\n                 data-initial-lat=\"41.53\"\n                 data-initial-lon=\"-93.653\"></div>\n        </div>\n    </div>\n    <div class=\"col-md-8\">\n    <h3 id=\"search-results-header\">Results of Point Search</h3>\n\n    <!-- Central Loading Indicator -->\n    <div id=\"central-loading\" class=\"text-center py-4 mb-3\" style=\"display: none;\">\n        <div class=\"spinner-border text-primary me-2\" role=\"status\">\n            <span class=\"visually-hidden\">Loading...</span>\n        </div>\n        <span class=\"text-muted\">Searching the database, one moment...</span>\n    </div>\n\n<div id=\"thetabs\">\n    <ul class=\"nav nav-tabs\">\n        <li class=\"nav-item\">\n            <a class=\"nav-link active\" href=\"#1a\" data-bs-toggle=\"tab\">Convective Outlooks</a>\n        </li>\n        <li class=\"nav-item\">\n            <a class=\"nav-link\" href=\"#2a\" data-bs-toggle=\"tab\">Mesoscale Convective Discussions</a>\n        </li>\n        <li class=\"nav-item\">\n            <a class=\"nav-link\" href=\"#3a\" data-bs-toggle=\"tab\">Watch Polygons</a>\n        </li>\n    </ul>\n\n    <div class=\"tab-content clearfix\">\n        <div class=\"tab-pane active\" id=\"1a\">\n\n<p>This archive dates back until <strong>1987</strong>.</p>\n\n<div class=\"float-end\">\n    <a class=\"btn btn-secondary\" href=\"/\" target=\"_blank\" id=\"outlooks_excel\">\n        <i class=\"bi bi-table\" aria-hidden=\"true\"></i> Download as Excel</a>\n    <a class=\"btn btn-secondary\" href=\"/\" target=\"_blank\" id=\"outlooks_csv\">\n        <i class=\"bi bi-table\" aria-hidden=\"true\"></i> Download as CSV</a>\n    <a class=\"btn btn-secondary\" href=\"/\" target=\"_blank\" id=\"outlooks_link\">\n        <i class=\"bi bi-link-45deg\" aria-hidden=\"true\"></i> JSON-P Webservice</a>\n</div>\n\n<table id=\"outlooks\" class=\"table table-bordered table-striped\">\n<caption></caption>\n<thead>\n<tr><th>Day</th><th>Threshold</th><th>Outlook Issued At (UTC)</th><th>Outlook Begins (UTC)</th>\n<th>Outlook Expires (UTC)</th></tr>\n</thead>\n<tbody>\n\n</tbody>\n</table>\n\n</div>\n<div class=\"tab-pane\" id=\"2a\">\n\n<p>This archive dates back until <strong>20 October 2008</strong> and is based\non the MCD polygon included within the text.</p>\n\n<div class=\"float-end\">\n    <a class=\"btn btn-secondary\" href=\"/\" target=\"_blank\" id=\"mcds_excel\">\n        <i class=\"bi bi-table\" aria-hidden=\"true\"></i> Download as Excel</a>\n    <a class=\"btn btn-secondary\" href=\"/\" target=\"_blank\" id=\"mcds_csv\">\n        <i class=\"bi bi-table\" aria-hidden=\"true\"></i> Download as CSV</a>\n    <a class=\"btn btn-secondary\" href=\"/\" target=\"_blank\" id=\"mcds_link\">\n        <i class=\"bi bi-link-45deg\" aria-hidden=\"true\"></i> JSON-P Webservice</a>\n</div>\n\n\n<table id=\"mcds\" class=\"table table-bordered table-striped\">\n<caption></caption>\n<thead>\n<tr><th>Discussion Number</th>\n<th>UTC Valid</th>\n<th>UTC Expire</th>\n<th>Watch Confidence</th>\n<th>Concerning</th>\n<th>Most Prob Tornado</th>\n<th>Most Prob Hail</th>\n<th>Most Prob Gust</th>\n</tr>\n</thead>\n<tbody>\n\n</tbody>\n</table>\n        </div><!-- ./2a -->\n        <div class=\"tab-pane\" id=\"3a\">\n\n<p>This archive dates back until <strong>1997</strong> and uses the initial watch\npolygon included in the SAW product.  <strong>These polygons are not the official\nwatches!</strong>  You should use the <a href=\"/vtec/search.php\">VTEC Search</a>\ntool to get more accurate results for the watch-by-county era.</p>\n\n<div class=\"float-end\">\n    <a class=\"btn btn-secondary\" href=\"/\" target=\"_blank\" id=\"watches_excel\">\n        <i class=\"bi bi-table\" aria-hidden=\"true\"></i> Download as Excel</a>\n    <a class=\"btn btn-secondary\" href=\"/\" target=\"_blank\" id=\"watches_csv\">\n        <i class=\"bi bi-table\" aria-hidden=\"true\"></i> Download as CSV</a>\n    <a class=\"btn btn-secondary\" href=\"/\" target=\"_blank\" id=\"watches_link\">\n        <i class=\"bi bi-link-45deg\" aria-hidden=\"true\"></i> GeoJSON-P Webservice</a>\n</div>\n\n<table id=\"watches\" class=\"table table-bordered table-striped\">\n<caption></caption>\n<thead>\n<tr><th>Watch Number</th><th>Type</th><th>UTC Valid</th><th>UTC Expire</th>\n<th>Max Hail Size</th><th>Max Wind Speed</th><th>Is PDS?</th>\n</tr>\n</thead>\n<tbody>\n\n</tbody>\n</table>\n        </div>\n    </div>\n</div><!-- ./thetabs -->\n\n    </div><!-- ./col-md-8 -->\n</div><!-- ./row -->\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/nws/spc_top10.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 161);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/network.php\";\n\n$t = new MyView();\n$year = get_int404(\"year\", 1987);\n$day = get_int404(\"day\", 1);\n$level = isset($_GET[\"level\"]) ? xssafe($_GET[\"level\"]): \"CATEGORICAL.HIGH\";\n\n$tokens = explode(\".\", $level, 2);\n$category = $tokens[0];\n$threshold = $tokens[1];\n\n$url = sprintf(\n    \"%s/json/spc_bysize.py?day=%s&threshold=%s&category=%s&syear=%s&sort=desc\",\n    $INTERNAL_BASEURL,\n    $day,\n    $threshold,\n    urlencode($category),\n    $year,\n);\n\n$public = str_replace($INTERNAL_BASEURL, $EXTERNAL_BASEURL, $url);\n$table = <<<EOM\n\n<p>JSON Webservice for the data below:<br />\n<code>{$public}</code></p>\n<table class=\"table table-striped\">\n<thead>\n<tr><th>Rank</th>\n<th>Canonical Outlook Date</th>\n<th>Cycle Hour UTC</th><th>Size (sq km)</th><th>SPC Link/Image</th></tr></thead>\n<tbody>\n\nEOM;\n\n$stable = str_replace(\"sort=desc\", \"sort=asc\", $table);\n\n$jdata = file_get_contents($url);\n$json = json_decode($jdata, $assoc = TRUE);\nif (sizeof($json[\"outlooks\"]) == 0) {\n    $table .= \"<tr><td colspan=\\\"5\\\">No Data Found</td></tr>\";\n} else {\n    $rank = 1;\n    foreach ($json[\"outlooks\"] as $key => $val) {\n        $table .= sprintf(\n            \"<tr><th>%s</th><td>%s</td><td>%s</td><td>%s</td>\".\n            \"<td><img src=\\\"%s\\\" class=\\\"img-fluid\\\">\".\n            \"</div></tr>\",\n            $rank,\n            $val[\"date\"],\n            $val[\"cycle\"],\n            $val[\"area_sqkm\"],\n            $val[\"imgsrc\"],\n        );\n        $rank += 1;\n    }\n}\n$table .= \"</tbody></table>\\n\";\n\n$url = sprintf(\n    \"%s/json/spc_bysize.py?day=%s&threshold=%s&category=%s&syear=%s&sort=asc\",\n    $INTERNAL_BASEURL,\n    $day,\n    $threshold,\n    urlencode($category),\n    $year,\n);\n\n\n$jdata = file_get_contents($url);\n$json = json_decode($jdata, $assoc = TRUE);\nif (sizeof($json[\"outlooks\"]) == 0) {\n    $stable .= \"<tr><td colspan=\\\"5\\\">No Data Found</td></tr>\";\n} else {\n    $rank = 1;\n    foreach ($json[\"outlooks\"] as $key => $val) {\n        $stable .= sprintf(\n            \"<tr><th>%s</th><td>%s</td><td>%s</td><td>%s</td>\".\n            \"<td><img src=\\\"%s\\\" class=\\\"img-fluid\\\">\".\n            \"</div></tr>\",\n            $rank,\n            $val[\"date\"],\n            $val[\"cycle\"],\n            $val[\"area_sqkm\"],\n            $val[\"imgsrc\"],\n        );\n        $rank += 1;\n    }\n}\n$stable .= \"</tbody></table>\\n\";\n\n\n$days = Array(\n    \"1\" => \"Day 1\",\n    \"2\" => \"Day 2\",\n    \"3\" => \"Day 3\",\n    \"4\" => \"Day 4\",\n    \"5\" => \"Day 5\",\n    \"6\" => \"Day 6\",\n    \"7\" => \"Day 7\",\n    \"8\" => \"Day 8\",\n);\n$dayselect = make_select(\"day\", $day, $days);\n// copied from autoplot 200, sans firewx\n$levels = Array(\n    \"ANY SEVERE.0.02\" => \"Any Severe 2% (Day 3+)\",\n    \"ANY SEVERE.0.05\" => \"Any Severe 5% (Day 3+)\",\n    \"ANY SEVERE.0.15\" => \"Any Severe 15% (Day 3+)\",\n    \"ANY SEVERE.0.25\" => \"Any Severe 25% (Day 3+)\",\n    \"ANY SEVERE.0.30\" => \"Any Severe 30% (Day 3+)\",\n    \"ANY SEVERE.0.35\" => \"Any Severe 35% (Day 3+)\",\n    \"ANY SEVERE.0.45\" => \"Any Severe 45% (Day 3+)\",\n    \"ANY SEVERE.0.60\" => \"Any Severe 60% (Day 3+)\",\n    \"ANY SEVERE.SIGN\" => \"Any Severe Significant (Day 3+)\",\n    \"ANY SEVERE.CIG1\" => \"Any Severe CIG1 (Day 3+)\",\n    \"ANY SEVERE.CIG2\" => \"Any Severe CIG2 (Day 3+)\",\n    \"ANY SEVERE.CIG3\" => \"Any Severe CIG3 (Day 3+)\",\n    \"CATEGORICAL.TSTM\" => \"Categorical Thunderstorm Risk (Days 1-3)\",\n    \"CATEGORICAL.MRGL\" => \"Categorical Marginal Risk (2015+) (Days 1-3)\",\n    \"CATEGORICAL.SLGT\" => \"Categorical Slight Risk (Days 1-3)\",\n    \"CATEGORICAL.ENH\" => \"Categorical Enhanced Risk (2015+) (Days 1-3)\",\n    \"CATEGORICAL.MDT\" => \"Categorical Moderate Risk (Days 1-3)\",\n    \"CATEGORICAL.HIGH\" => \"Categorical High Risk (Days 1-3)\",\n    \"HAIL.0.05\" => \"Hail 5% (Days 1+2)\",\n    \"HAIL.0.15\" => \"Hail 15% (Days 1+2)\",\n    \"HAIL.0.25\" => \"Hail 25% (Days 1+2)\",\n    \"HAIL.0.30\" => \"Hail 30% (Days 1+2)\",\n    \"HAIL.0.35\" => \"Hail 35% (Days 1+2)\",\n    \"HAIL.0.45\" => \"Hail 45% (Days 1+2)\",\n    \"HAIL.0.60\" => \"Hail 60% (Days 1+2)\",\n    \"HAIL.SIGN\" => \"Hail Significant (Days 1+2)\",\n    \"HAIL.CIG1\" => \"Hail CIG1 (Days 1+2)\",\n    \"HAIL.CIG2\" => \"Hail CIG2 (Days 1+2)\",\n    \"HAIL.CIG3\" => \"Hail CIG3 (Days 1+2)\",\n    \"TORNADO.0.02\" => \"Tornado 2% (Days 1+2)\",\n    \"TORNADO.0.05\" => \"Tornado 5% (Days 1+2)\",\n    \"TORNADO.0.10\" => \"Tornado 10% (Days 1+2)\",\n    \"TORNADO.0.15\" => \"Tornado 15% (Days 1+2)\",\n    \"TORNADO.0.25\" => \"Tornado 25% (Days 1+2)\",\n    \"TORNADO.0.30\" => \"Tornado 30% (Days 1+2)\",\n    \"TORNADO.0.35\" => \"Tornado 35% (Days 1+2)\",\n    \"TORNADO.0.45\" => \"Tornado 45% (Days 1+2)\",\n    \"TORNADO.0.60\" => \"Tornado 60% (Days 1+2)\",\n    \"TORNADO.SIGN\" => \"Tornado Significant (Days 1+2)\",\n    \"TORNADO.CIG1\" => \"Tornado CIG1 (Days 1+2)\",\n    \"TORNADO.CIG2\" => \"Tornado CIG2 (Days 1+2)\",\n    \"TORNADO.CIG3\" => \"Tornado CIG3 (Days 1+2)\",\n    \"WIND.0.05\" => \"Wind 5% (Days 1+2)\",\n    \"WIND.0.15\" => \"Wind 15% (Days 1+2)\",\n    \"WIND.0.25\" => \"Wind 25% (Days 1+2)\",\n    \"WIND.0.30\" => \"Wind 30% (Days 1+2)\",\n    \"WIND.0.35\" => \"Wind 35% (Days 1+2)\",\n    \"WIND.0.45\" => \"Wind 45% (Days 1+2)\",\n    \"WIND.0.60\" => \"Wind 60% (Days 1+2)\",\n    \"WIND.0.75\" => \"Wind 75% (Days 1+2)\",\n    \"WIND.0.90\" => \"Wind 90% (Days 1+2)\",\n    \"WIND.SIGN\" => \"Wind Significant (Days 1+2)\",\n    \"WIND.CIG1\" => \"Wind CIG1 (Days 1+2)\",\n    \"WIND.CIG2\" => \"Wind CIG2 (Days 1+2)\",\n    \"WIND.CIG3\" => \"Wind CIG3 (Days 1+2)\",\n);\n$lselect = make_select(\"level\", $level, $levels);\n$yrselect = yearSelect(1987, $year);\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb\">\n <li class=\"breadcrumb-item\"><a href=\"/current/severe.phtml\">Severe Weather Mainpage</a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\">Top 10 SPC Outlooks by size</li>\n </ol>\n</nav>\n\n<h3>Top 10 SPC Outlooks by Size</h3>\n\n<div class=\"alert alert-info\">\n<strong>New:</strong> Scroll down to see the top 10 smallest outlooks by size!\n</div>\n\n<p>The IEM attempts a robust archive of SPC outlooks.  These outlooks have\nchanged methodologies and threshold meanings over the years. You are strongly\nencouraged to set a start year to limit the data to a given period. The listing\nonly inludes one outlook for a given canonical date.</p>\n\n<p><strong>This app can be slow to generate!</strong> For common outlook types,\nthe backend database query can take a number of seconds to complete. The computed\narea is done within the <a href=\"https://spatialreference.org/ref/epsg/9311/\">US National Atlas Equal Area</a> (EPSG:9311).</p>\n\n<p><strong>Related</strong>:\n<a href=\"mcd_top10.phtml\" class=\"btn btn-primary\">Top 10 MCDs by Size</a>\n<a href=\"/request/gis/outlooks.phtml\" class=\"btn btn-primary\">SPC Outlook Shapefile Download</a>\n</p>\n\n<p><form method=\"GET\" name=\"u\">\n<table class=\"table table-bordered\">\n<tr>\n<td>Inclusive Start Year: $yrselect</td>\n<td>Select Day: $dayselect</td>\n<td>Select Threshold: $lselect</td>\n</table>\n<input type=\"submit\" value=\"Update Table\" class=\"btn btn-primary\">\n</form></p>\n\n<h3>Top 10 Largest Day: {$day} Category: {$category} Threshold: {$threshold}</h3>\n\n<p>Generated at: <code>{$json[\"generated_at\"]}</code> in {$json[\"query_time[s]\"]}s</p>\n\n$table\n\n<h3>Top 10 Smallest Day: {$day} Category: {$category} Threshold: {$threshold}</h3>\n\n<p>Generated at: <code>{$json[\"generated_at\"]}</code> in {$json[\"query_time[s]\"]}s</p>\n\n$stable\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/nws/sps_search/index.css",
    "content": "/* SPS Search Styling - Enhanced Bootstrap 5 Design */\n\n/* Main heading styling */\n.page-header {\n    background: linear-gradient(135deg, #0066cc, #004499);\n    color: white;\n    padding: 2rem 0;\n    margin-bottom: 2rem;\n    border-radius: 0.5rem;\n}\n\n/* Map container */\n.map {\n    width: 100%;\n    height: 400px;\n    border: 2px solid #e9ecef;\n    border-radius: 0.5rem;\n    transition: border-color 0.3s ease;\n}\n\n.map:hover {\n    border-color: #0d6efd;\n}\n\n/* Card enhancements */\n.card {\n    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n    border: 1px solid #e9ecef;\n}\n\n.card-header {\n    border-bottom: 2px solid #e9ecef;\n    font-weight: 600;\n}\n\n.card-header.bg-light {\n    background: linear-gradient(135deg, #f8f9fa, #e9ecef) !important;\n}\n\n/* Tabulator table styling */\n#table1 {\n    border-radius: 0.375rem;\n    overflow: hidden;\n    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n/* Form controls enhancements */\n.form-control {\n    border: 2px solid #e9ecef;\n    transition: border-color 0.3s ease, box-shadow 0.3s ease;\n}\n\n.form-control:focus {\n    border-color: #0d6efd;\n    box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.25);\n}\n\n#lat, #lon {\n    margin-bottom: 0.5rem;\n}\n\n/* Button enhancements */\n.btn {\n    font-weight: 500;\n    letter-spacing: 0.025em;\n    transition: all 0.3s ease;\n}\n\n.btn:hover {\n    transform: translateY(-1px);\n    box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.15);\n}\n\n.btn-primary {\n    background: linear-gradient(135deg, #0d6efd, #0a58ca);\n    border-color: #0d6efd;\n}\n\n.btn-outline-primary:hover {\n    background: linear-gradient(135deg, #0d6efd, #0a58ca);\n}\n\n.btn-success {\n    background: linear-gradient(135deg, #198754, #146c43);\n}\n\n.btn-outline-success:hover {\n    background: linear-gradient(135deg, #198754, #146c43);\n}\n\n/* Alert styling */\n.alert-info {\n    border-left: 4px solid #0dcaf0;\n    background: linear-gradient(135deg, #d1ecf1, #b8daff);\n    border-color: #b8daff;\n}\n\n/* Icon enhancements */\n.bi {\n    vertical-align: -0.125em;\n}\n\n/* Coordinate input section */\n.coordinates-section {\n    background: #f8f9fa;\n    border-radius: 0.5rem;\n    padding: 1rem;\n    border: 1px solid #e9ecef;\n}\n\n/* Loading state */\n.loading {\n    position: relative;\n    overflow: hidden;\n}\n\n.loading::after {\n    content: '';\n    position: absolute;\n    top: 0;\n    left: -100%;\n    width: 100%;\n    height: 100%;\n    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);\n    animation: loading 1.5s infinite;\n}\n\n@keyframes loading {\n    0% { left: -100%; }\n    100% { left: 100%; }\n}\n\n/* Responsive improvements */\n@media (max-width: 768px) {\n    .map {\n        height: 300px;\n    }\n    \n    .card {\n        margin-bottom: 1rem;\n    }\n    \n    .btn-group {\n        flex-direction: column;\n    }\n    \n    .btn-group .btn {\n        margin-bottom: 0.25rem;\n    }\n}\n\n/* Table responsive wrapper */\n.tabulator {\n    font-size: 0.875rem;\n}\n\n.tabulator-header {\n    background: linear-gradient(135deg, #6c757d, #495057);\n    color: white;\n}\n\n.tabulator-row:hover {\n    background-color: rgba(13, 110, 253, 0.1);\n}\n\n/* Status indicators */\n.status-badge {\n    display: inline-block;\n    padding: 0.25rem 0.5rem;\n    font-size: 0.75rem;\n    font-weight: 600;\n    border-radius: 0.375rem;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n}"
  },
  {
    "path": "htdocs/nws/sps_search/index.js",
    "content": "/* global ol, olSelectLonLat, Tabulator */\nlet marker = null;\nlet table1 = null;\nlet edate = null;\nlet sdate = null;\nconst BACKEND_SPS_BYPOINT = '/json/sps_by_point.py';\n\n// Utility function to format date as YYYY-MM-DD\nfunction formatDate(date) {\n    const year = date.getFullYear();\n    const month = String(date.getMonth() + 1).padStart(2, '0');\n    const day = String(date.getDate()).padStart(2, '0');\n    return `${year}-${month}-${day}`;\n}\n\n// Update marker position and trigger table update\nfunction updateMarkerPosition(lon, lat) {\n    document.getElementById(\"lat\").value = lat.toFixed(4);\n    document.getElementById(\"lon\").value = lon.toFixed(4);\n    updateURLParams(lon, lat);\n    marker.setGeometry(new ol.geom.Point(ol.proj.fromLonLat([lon, lat])));\n    updateTable();\n}\n\n// Update URL parameters with current state\nfunction updateURLParams(lon, lat) {\n    const url = new URL(window.location);\n    url.searchParams.set('lon', lon.toFixed(4));\n    url.searchParams.set('lat', lat.toFixed(4));\n    url.searchParams.set('sdate', sdate.value);\n    url.searchParams.set('edate', edate.value);\n    window.history.pushState({}, '', url);\n}\n\n// Handle legacy hash links and convert to URL parameters\nfunction handleLegacyHashLinks() {\n    const hash = window.location.hash;\n    if (hash) {\n        const tokens = hash.substring(1).split(\"/\"); // Remove # and split\n        if (tokens.length === 3 && tokens[0] === 'bypoint') {\n            const lon = parseFloat(tokens[1]);\n            const lat = parseFloat(tokens[2]);\n            if (!isNaN(lon) && !isNaN(lat)) {\n                // Convert hash to URL params and redirect\n                const url = new URL(window.location);\n                url.hash = ''; // Remove hash\n                url.searchParams.set('lon', lon.toFixed(4));\n                url.searchParams.set('lat', lat.toFixed(4));\n                url.searchParams.set('sdate', sdate.value);\n                url.searchParams.set('edate', edate.value);\n                window.history.replaceState({}, '', url);\n                return { lon, lat };\n            }\n        }\n    }\n    return null;\n}\n\n// Read URL parameters and set initial state\nfunction readURLParams() {\n    const urlParams = new URLSearchParams(window.location.search);\n    \n    const lon = urlParams.get('lon');\n    const lat = urlParams.get('lat');\n    const startDate = urlParams.get('sdate');\n    const endDate = urlParams.get('edate');\n    \n    // Set dates if provided in URL\n    if (startDate) {\n        sdate.value = startDate;\n    }\n    if (endDate) {\n        edate.value = endDate;\n    }\n    \n    // Return coordinates if provided\n    if (lon && lat) {\n        const longitude = parseFloat(lon);\n        const latitude = parseFloat(lat);\n        if (!isNaN(longitude) && !isNaN(latitude)) {\n            return { lon: longitude, lat: latitude };\n        }\n    }\n    \n    return null;\n}\n\n// Update table with SPS data\nfunction updateTable(){\n    const lat = document.getElementById(\"lat\").value;\n    const lon = document.getElementById(\"lon\").value;\n    \n    // Show loading state\n    const loadingIndicator = document.getElementById(\"loading-indicator\");\n    if (loadingIndicator) {\n        loadingIndicator.classList.remove(\"d-none\");\n    }\n    \n    const sanitizedLon = parseFloat(lon).toFixed(4);\n    const sanitizedLat = parseFloat(lat).toFixed(4);\n    document.getElementById(\"table1title\").textContent = \n        `SPS for Point: ${sanitizedLon}°E ${sanitizedLat}°N`;\n    const resultCountSpan = document.createElement(\"span\");\n    resultCountSpan.id = \"result-count\";\n    resultCountSpan.className = \"badge bg-light text-dark ms-2\";\n    resultCountSpan.textContent = \"Loading...\";\n    document.getElementById(\"table1title\").appendChild(resultCountSpan);\n    \n    // Prepare request data\n    const params = new URLSearchParams({\n        lat,\n        lon,\n        sdate: sdate.value,\n        edate: edate.value\n    });\n    \n    // Fetch data from API\n    fetch(`${BACKEND_SPS_BYPOINT}?${params}`)\n        .then(response => response.json())\n        .then(data => {\n            // Clear and populate table\n            const tableData = data.data.map(row => ({\n                link: `<a href=\"${row.uri}\" target=\"_blank\" class=\"btn btn-sm btn-outline-primary\">\n                    <i class=\"bi bi-file-text me-1\"></i>View Text\n                </a>`,\n                issue: row.issue,\n                landspout: row.landspout ? \n                    `<span class=\"badge bg-warning text-dark\">${row.landspout}</span>` : \n                    '<span class=\"text-muted\">—</span>',\n                waterspout: row.waterspout ? \n                    `<span class=\"badge bg-info text-dark\">${row.waterspout}</span>` : \n                    '<span class=\"text-muted\">—</span>',\n                max_hail_size: row.max_hail_size || '<span class=\"text-muted\">—</span>',\n                max_wind_gust: row.max_wind_gust || '<span class=\"text-muted\">—</span>'\n            }));\n            \n            table1.setData(tableData);\n            \n            // Update result count\n            document.getElementById(\"result-count\").textContent = `${tableData.length} results`;\n            document.getElementById(\"result-count\").className = \n                `badge ${tableData.length > 0 ? 'bg-success' : 'bg-secondary'} ms-2`;\n            \n            // Update last update time\n            const lastUpdateElement = document.getElementById(\"last-update\");\n            if (lastUpdateElement) {\n                lastUpdateElement.textContent = new Date().toLocaleString();\n            }\n            \n            // Hide loading indicator\n            if (loadingIndicator) {\n                loadingIndicator.classList.add(\"d-none\");\n            }\n        })\n        .catch(() => {\n            // Handle error\n            table1.setData([]);\n            document.getElementById(\"result-count\").textContent = \"Error\";\n            document.getElementById(\"result-count\").className = \"badge bg-danger ms-2\";\n            \n            // Hide loading indicator\n            if (loadingIndicator) {\n                loadingIndicator.classList.add(\"d-none\");\n            }\n        });\n}\n\n// Initialize UI components\nfunction buildUI(){\n    // Initialize Tabulator table\n    table1 = new Tabulator(\"#table1\", {\n        layout: \"fitColumns\",\n        placeholder: \"Drag marker on map to auto-populate this table\",\n        height: \"600px\",\n        columns: [\n            {\n                title: \"Actions\", \n                field: \"link\", \n                formatter: \"html\", \n                width: 120,\n                headerSort: false,\n                cssClass: \"text-center\"\n            },\n            {\n                title: \"Issue Time\", \n                field: \"issue\", \n                sorter: \"string\",\n                width: 180\n            },\n            {\n                title: \"Landspout\", \n                field: \"landspout\", \n                formatter: \"html\",\n                width: 120,\n                headerSort: false,\n                cssClass: \"text-center\"\n            },\n            {\n                title: \"Waterspout\", \n                field: \"waterspout\", \n                formatter: \"html\",\n                width: 120,\n                headerSort: false,\n                cssClass: \"text-center\"\n            },\n            {\n                title: \"Max Hail Size (in)\", \n                field: \"max_hail_size\", \n                sorter: \"number\",\n                formatter: \"html\",\n                cssClass: \"text-center\"\n            },\n            {\n                title: \"Max Wind Gust (mph)\", \n                field: \"max_wind_gust\", \n                sorter: \"number\",\n                formatter: \"html\",\n                cssClass: \"text-center\"\n            }\n        ],\n        initialSort: [\n            {column: \"issue\", dir: \"desc\"}\n        ]\n    });\n\n    // Export button handlers\n    document.getElementById('export-excel').addEventListener('click', () => {\n        const lat = document.getElementById(\"lat\").value;\n        const lon = document.getElementById(\"lon\").value;\n        const params = new URLSearchParams({\n            fmt: \"xlsx\",\n            lat,\n            lon,\n            sdate: sdate.value,\n            edate: edate.value\n        });\n        window.location = `${BACKEND_SPS_BYPOINT}?${params}`;\n    });\n\n    document.getElementById('export-csv').addEventListener('click', () => {\n        const lat = document.getElementById(\"lat\").value;\n        const lon = document.getElementById(\"lon\").value;\n        const params = new URLSearchParams({\n            fmt: \"csv\",\n            lat,\n            lon,\n            sdate: sdate.value,\n            edate: edate.value\n        });\n        window.location = `${BACKEND_SPS_BYPOINT}?${params}`;\n    });\n\n    // Get date input elements\n    sdate = document.getElementById('sdate');\n    edate = document.getElementById('edate');\n    \n    // Set default dates\n    const startDate = new Date(1986, 0, 1);\n    const endDate = new Date();\n    endDate.setDate(endDate.getDate() + 1);\n    \n    sdate.type = 'date';\n    edate.type = 'date';\n    sdate.value = formatDate(startDate);\n    edate.value = formatDate(endDate);\n    sdate.min = '1986-01-01';\n    edate.min = '1986-01-01';\n    sdate.max = formatDate(new Date());\n    edate.max = formatDate(endDate);\n    \n    // Add event listeners for date changes\n    sdate.addEventListener('change', () => {\n        const lat = parseFloat(document.getElementById(\"lat\").value);\n        const lon = parseFloat(document.getElementById(\"lon\").value);\n        if (!isNaN(lat) && !isNaN(lon)) {\n            updateURLParams(lon, lat);\n        }\n        updateTable();\n    });\n    \n    edate.addEventListener('change', () => {\n        const lat = parseFloat(document.getElementById(\"lat\").value);\n        const lon = parseFloat(document.getElementById(\"lon\").value);\n        if (!isNaN(lat) && !isNaN(lon)) {\n            updateURLParams(lon, lat);\n        }\n        updateTable();\n    });\n\n    // Manual Point Entry\n    document.getElementById(\"manualpt\").addEventListener('click', () => {\n        const la = parseFloat(document.getElementById(\"lat\").value);\n        const lo = parseFloat(document.getElementById(\"lon\").value);\n        if (isNaN(la) || isNaN(lo)){\n            return;\n        }\n        marker.setGeometry(new ol.geom.Point(ol.proj.fromLonLat([lo, la])));\n        updateMarkerPosition(lo, la);\n    });\n}\n// Initialize application when DOM is ready\ndocument.addEventListener('DOMContentLoaded', () => {\n    buildUI();\n    let default_lon = -93.653;\n    let default_lat = 41.53;\n\n    const res = olSelectLonLat(\"map\", updateMarkerPosition);\n    marker = res.marker;\n\n    // Handle legacy hash links first (convert to URL params)\n    const legacyCoords = handleLegacyHashLinks();\n    \n    // Read URL parameters for initial state\n    const urlCoords = readURLParams();\n    \n    // Use coordinates from URL params or legacy hash, fallback to defaults\n    const coords = urlCoords || legacyCoords;\n    if (coords) {\n        default_lon = coords.lon;\n        default_lat = coords.lat;\n        updateMarkerPosition(default_lon, default_lat);\n    } else {\n        // Set initial URL params with default values\n        updateURLParams(default_lon, default_lat);\n    }\n});\n"
  },
  {
    "path": "htdocs/nws/sps_search/index.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 140);\nrequire_once \"../../../include/mlib.php\";\nforce_https();\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/iemprop.php\";\n$t = new MyView();\n$OL = \"10.9.0\";\n\n$t->jsextra = <<<EOM\n<script src='https://unpkg.com/tabulator-tables@6.2.1/dist/js/tabulator.min.js'></script>\n<script src='/vendor/openlayers/{$OL}/ol.js'></script>\n<script type=\"text/javascript\" src=\"/js/olselect-lonlat.js?v=3\"></script>\n<script type=\"text/javascript\" src=\"index.js?v=6\"></script>\nEOM;\n\n$t->headextra = <<<EOM\n<link rel='stylesheet' href=\"/vendor/openlayers/{$OL}/ol.css\" type='text/css'>\n<link href=\"https://unpkg.com/tabulator-tables@6.2.1/dist/css/tabulator.min.css\" rel=\"stylesheet\">\n<link rel=\"stylesheet\" href=\"index.css\" type='text/css'>\nEOM;\n$t->title = \"Special Weather Statement (SPS) Search by Point\";\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n<li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Mainpage</a></li>\n<li class=\"breadcrumb-item active\" aria-current=\"page\">SPS Search by Point</li>\n</ol>\n</nav>\n\n<div class=\"d-flex align-items-center mb-4 page-header px-4 py-3\">\n    <h1 class=\"mb-0 me-3 text-white\">\n        <i class=\"bi bi-geo-alt-fill me-2\"></i>\n        Special Weather Statement Search\n    </h1>\n    <div class=\"ms-auto\">\n        <span class=\"badge bg-light text-dark\">\n            <i class=\"bi bi-lightning-charge me-1\"></i>Real-time Data\n        </span>\n    </div>\n</div>\n\n<div class=\"alert alert-info d-flex align-items-start mb-4 border-0\">\n    <i class=\"bi bi-info-circle-fill me-3 flex-shrink-0\" style=\"font-size: 1.5rem; color: #0dcaf0;\"></i>\n    <div>\n        <h6 class=\"alert-heading mb-2\">\n            <i class=\"bi bi-search me-1\"></i>About This Tool\n        </h6>\n        <p class=\"mb-2\">Search NWS Special Weather Statements (SPS) that contained a polygon for a specific location and time period.\n        Only SPS products with geographic polygons are included in this search.</p>\n        <p class=\"mb-0\">\n            <strong><i class=\"bi bi-cursor me-1\"></i>How to use:</strong> Either drag the map marker or enter coordinates manually, then select your date range to search for relevant SPS products.\n        </p>\n    </div>\n</div>\n\n<div class=\"row mb-4\">\n    <div class=\"col-auto\">\n        <a class=\"btn btn-primary btn-lg\" href=\"/request/gis/sps.phtml\">\n            <i class=\"bi bi-download me-2\"></i>SPS Download\n        </a>\n    </div>\n    <div class=\"col-auto\">\n        <a class=\"btn btn-outline-primary btn-lg\" href=\"/wx/afos/p.php?pil=SPSDMX\">\n            <i class=\"bi bi-file-text me-2\"></i>SPS Text Download\n        </a>\n    </div>\n    <div class=\"col-auto ms-auto\">\n        <div class=\"text-muted small\">\n            <i class=\"bi bi-clock me-1\"></i>Last updated: <span id=\"last-update\">Loading...</span>\n        </div>\n    </div>\n</div>\n\n<div class=\"row\">\n    <div class=\"col-lg-4\">\n        <div class=\"card h-100\">\n            <div class=\"card-header bg-light\">\n                <h5 class=\"card-title mb-0\">\n                    <i class=\"bi bi-sliders me-2\"></i>Search Parameters\n                </h5>\n            </div>\n            <div class=\"card-body\">\n                <div class=\"mb-4 coordinates-section\">\n                    <h6 class=\"text-primary mb-3 fw-bold\">\n                        <i class=\"bi bi-crosshair me-2\"></i>Coordinates\n                    </h6>\n                    <div class=\"row g-3 mb-3\">\n                        <div class=\"col-6\">\n                            <label for=\"lat\" class=\"form-label small fw-semibold\">\n                                <i class=\"bi bi-arrow-up me-1\"></i>Latitude (°N)\n                            </label>\n                            <input type=\"number\" class=\"form-control form-control-lg\" id=\"lat\" value=\"41.53\" step=\"0.0001\" min=\"-90\" max=\"90\" placeholder=\"41.53\">\n                        </div>\n                        <div class=\"col-6\">\n                            <label for=\"lon\" class=\"form-label small fw-semibold\">\n                                <i class=\"bi bi-arrow-right me-1\"></i>Longitude (°E)\n                            </label>\n                            <input type=\"number\" class=\"form-control form-control-lg\" id=\"lon\" value=\"-93.653\" step=\"0.0001\" min=\"-180\" max=\"180\" placeholder=\"-93.653\">\n                        </div>\n                    </div>\n                    <button type=\"button\" class=\"btn btn-outline-primary btn-lg w-100\" id=\"manualpt\">\n                        <i class=\"bi bi-geo-alt me-2\"></i>Update Location\n                    </button>\n                </div>\n\n                <div class=\"mb-4\">\n                    <h6 class=\"text-primary mb-3 fw-bold\">\n                        <i class=\"bi bi-calendar-range me-2\"></i>Date Range\n                    </h6>\n                    <div class=\"mb-3\">\n                        <label for=\"sdate\" class=\"form-label small fw-semibold\">\n                            <i class=\"bi bi-calendar-event me-1\"></i>Start Date\n                        </label>\n                        <input name=\"sdate\" type=\"date\" id=\"sdate\" class=\"form-control form-control-lg\">\n                    </div>\n                    <div class=\"mb-3\">\n                        <label for=\"edate\" class=\"form-label small fw-semibold\">\n                            <i class=\"bi bi-calendar-check me-1\"></i>End Date\n                        </label>\n                        <input name=\"edate\" type=\"date\" id=\"edate\" class=\"form-control form-control-lg\">\n                    </div>\n                </div>\n\n                <div class=\"bg-light p-4 rounded-3 border\">\n                    <h6 class=\"text-primary mb-3 fw-bold\">\n                        <i class=\"bi bi-map me-2\"></i>Interactive Map\n                    </h6>\n                    <p class=\"small text-muted mb-3\">\n                        <i class=\"bi bi-hand-index me-1\"></i>Drag the marker to select coordinates\n                    </p>\n                    <div\n                    id=\"map\"\n                    data-initial-lat=\"41.53\"\n                    data-initial-lon=\"-93.653\"\n                    data-lat-input=\"lat\"\n                    data-lon-input=\"lon\"\n                    class=\"map\"></div>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-lg-8\">\n        <div class=\"card h-100 shadow-sm\">\n            <div class=\"card-header bg-primary text-white d-flex justify-content-between align-items-center\">\n                <h5 class=\"card-title mb-0\" id=\"table1title\">\n                    <i class=\"bi bi-table me-2\"></i>SPS Results\n                    <span id=\"result-count\" class=\"badge bg-light text-dark ms-2\">0</span>\n                </h5>\n                <div class=\"btn-group\" role=\"group\">\n                    <button type=\"button\" id=\"export-excel\" class=\"btn btn-success\">\n                        <i class=\"bi bi-file-earmark-excel me-1\"></i>Excel\n                    </button>\n                    <button type=\"button\" id=\"export-csv\" class=\"btn btn-outline-light\">\n                        <i class=\"bi bi-file-earmark-text me-1\"></i>CSV\n                    </button>\n                </div>\n            </div>\n            <div class=\"card-body p-0\">\n                <div id=\"table1\" class=\"position-relative\"></div>\n                <div id=\"loading-indicator\" class=\"d-none position-absolute top-50 start-50 translate-middle\">\n                    <div class=\"spinner-border text-primary\" role=\"status\">\n                        <span class=\"visually-hidden\">Loading...</span>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/nws/text.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->iem_resource = \"NWSTEXT\";\n$t->title = \"NWS Text Archives\";\n\n$d = date(\"Y/m/d\");\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li class=\"breadcrumb-item\"><a href=\"/\">IEM Homepage</a></li>\n <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Mainpage</a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\">NWS Text Archives</li>\n</ol>\n\n<p>The IEM attempts a robust processing and archival of National Weather\nService issued text products.  This page details the many ways that you can\naccess this data. Unless denoted otherwise, all of these resources update\nin realtime.</p>\n\n<p>A common nomenclature used by the IEM is to assign an identifier, that\nunfortunately is not always unique because of lame NWS bugs, to each product.\nThese look like so <code>YYYYmmddHHMM-CCCC-TTAAII-AFOSID(-BBB:optional)</code>.\nThe timestamp is UTC, the CCCC is the issuance center, TTAAII is the WMO\nheader, the AFOSID is a 3 to 6 character identifier, sometimes called AWIPS ID,\nand the final -BBB field is only used when that is included in the product.\nThis value is often available within various NWS data APIs within the IEM.</p>\n\n<p><strong>Pro-tip</strong>. You can enter this identifier into the IEM website\nsearch box to find the product quickly. The\n<a href=\"/api/1/docs#/nws/nwstext_service_nwstext__product_id__get\">nwstext API</a>\nis the main place to use this identifier.</p>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n\n<div class=\"card mb-3\">\n  <div class=\"card-header\">IEM News Items</div>\n  <div class=\"card-body\">\n\n  <ul>\n<li>See this <a href=\"/onsite/news.phtml?id=1408\">news item</a> for more details\non this archive and how it is made available.</li>\n  </ul>\n\n</div>\n</div>\n\n<div class=\"card mb-3\">\n  <div class=\"card-header\">User Somewhat-Friendly Frontends</div>\n  <div class=\"card-body\">\n<ul>\n   <li><a href=\"/wx/afos/\">AFOS Product Finder</a>\n  <br />If you know what you are looking for, this app works great!</li>\n   <li><a href=\"/wx/afos/list.phtml\">List Products by WFO by Date</a>\n  <br />View quick listings of issued products by forecast office and by date.</li>\n</ul>\n\n  </div>\n</div>\n\n<div class=\"card mb-3\">\n  <div class=\"card-header\">Raw Text / Scrapable Archives</div>\n  <div class=\"card-body\">\n\n<ul>\n <li><a href=\"https://mtarchive.geol.iastate.edu/{$d}/text/cap/\">\n Common Alert Protocol (CAP) Hourly Files</a>\n  <br />This mtarchive resource contains hourly files of CAP messages.</li>\n <li><a href=\"/archive/data/{$d}/text/noaaport/\">Simple directory listing</a>\n  <br />Certain warning type products can be found in the main IEM data archive\n  directory structure in per UTC date directories.</li>\n</ul>\n\n  </div>\n</div>\n\n</div><div class=\"col-md-6\">\n\n<div class=\"card mb-3\">\n  <div class=\"card-header\">API / Bulk Downloads</div>\n  <div class=\"card-body\">\n\n<p>Many folks use the IEM as a near realtime data source.  This section details\nsome of the techniques used.</p>\n\n<p>The primary service used is the\n<a href=\"/cgi-bin/afos/retrieve.py?help\">AFOS retrieve</a> service.  It supports\ndate range queries by AWIPS IDs (ie <code>TORDMX</code>, <code>AFDDMX</code>).\nThere is also a <a href=\"/api/1/docs#/nws/service_nws_afos_list__fmt__get\">\nmetadata list</a> service which helps to find available products for a given\ndate and issuance center.</p>\n\n<p>Another technique involves using the scrapable archives shown on this page,\nwith subsequent HTTP requests using HTTP-range headers to download the data\nefficiently.</p>\n\n  </div>\n</div>\n\n\n<div class=\"card mb-3\">\n  <div class=\"card-header\">Misc / Statistics</div>\n  <div class=\"card-body\">\n<ul>\n  <li><a href=\"/plotting/auto/?q=210\">Map of Text Product Issuance Counts</a>\n  <br />Autoplot 210 will generate maps of how many text products are\n  issued for a given product type. It will also plot the first and last\n  usage of a product.</li>\n  <li><a href=\"/plotting/auto/?q=261\">Heatmap of Issuance Times</a>\n  <br />Autoplot 261 will generate a heatmap of product issuance times\n  by hour of the day and week of the year.</li>\n</ul>\n  </div>\n</div>\n\n</div>\n</div><!-- ./row -->\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/nws/vtec_obs.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 108);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/mlib.php\";\nrequire_once \"../../include/network.php\";\n\n$nt = new NetworkTable(\"WFO\");\n$t = new MyView();\n$wfo = get_str404(\"wfo\", 'DMX', 4);\n$wfo3 = unrectify_wfo($wfo);\n$year = get_int404(\"year\", date(\"Y\"));\nif ($year < 1986) {\n    // 1986 is the first year we have data for\n    xssafe(\"<tag>\");\n}\n$sid = get_int404(\"sid\", 1);\n$eid = get_int404(\"eid\", 999);\n$rhthres = get_float404(\"relh\", 25);\n$skntthres = get_float404(\"sknt\", 25);\n$gustthres = get_float404(\"gust\", 25);\n$vsbythres = get_float404(\"vsby\", 0.25);\n$ltmpfthres = get_float404(\"ltmpf\", 32);\n$wchtthres = get_float404(\"wcht\", -20);\n$hidxthres = get_float404(\"hidx\", 105);\n$htmpfthres = get_float404(\"htmpf\", 100);\n$mode = substr(get_str404(\"mode\", 'FW.W'), 0, 4);\n$ar = explode(\".\", $mode);\n$phenomena = $ar[0];\n$significance = $ar[1];\n\n$t->title = \"NWS Watch/Warning/Advisory + ASOS Observations\";\n\n$ar = array(\n    \"BZ.W\" => \"Blizzard Warning\",\n    \"FG.Y\" => \"Dense Fog Advisory\",\n    \"EH.W\" => \"Extreme Heat Warning\",\n    \"FR.Y\" => \"Frost Advisory\",\n    \"FZ.W\" => \"Freeze Warning\",\n    \"HZ.W\" => \"Hard Freeze Warning\",\n    \"HT.Y\" => \"Heat Advisory\",\n    \"HW.W\" => \"High Wind Warning\",\n    \"FW.W\" => \"Red Flag Warning\",\n    \"WI.Y\" => \"Wind Advisory\",\n    \"WC.Y\" => \"Wind Chill Advisory\",\n    \"WC.W\" => \"Wind Chill Warning\",\n);\n$mselect = make_select(\"mode\", $mode, $ar);\n$wselect = \"<select name=\\\"wfo\\\">\\n\";\nforeach ($nt->table as $key => $value) {\n    $wselect .= \"<option value=\\\"$key\\\" \";\n    if ($wfo == $key) $wselect .= \"SELECTED\";\n    $wselect .= \">[\" . $key . \"] \" . $nt->table[$key][\"name\"] . \"\\n\";\n}\n$wselect .= \"</select>\";\n$yselect = yearSelect(2005, $year);\n\n$postgis = iemdb(\"postgis\");\n$asos = iemdb(\"asos\");\npg_query($postgis, \"SET TIME ZONE 'UTC'\");\npg_query($asos, \"SET TIME ZONE 'UTC'\");\n\n$find_stname = iem_pg_prepare(\n    $postgis,\n    \"SELECT string_agg(ugc::text, ',') as a, eventid, issue, \" .\n        \"expire from warnings_$year WHERE wfo = $1 and phenomena =  $4 and \" .\n        \"significance = $5 and eventid >= $2 and eventid < $3 \" .\n        \"GROUP by issue, expire, eventid ORDER by issue ASC\"\n);\n\n$station2ugc = array();\n$ugc2station = array();\n$stname = iem_pg_prepare($postgis, \"SELECT id, ugc_zone from stations \" .\n    \"where wfo = $1 and network ~* 'ASOS'\");\n$rs = pg_execute($postgis, $stname, array($wfo3));\nwhile ($row = pg_fetch_assoc($rs)) {\n    if (!array_key_exists($row[\"ugc_zone\"], $ugc2station)) {\n        $ugc2station[$row[\"ugc_zone\"]] = array();\n    }\n    $ugc2station[$row[\"ugc_zone\"]][] = $row[\"id\"];\n    $station2ugc[$row[\"id\"]] = $row[\"ugc_zone\"];\n}\n\nfunction c1($relh)\n{\n    global $rhthres;\n    if ($relh >= $rhthres) {\n        return sprintf(\"%.0f%%\", $relh);\n    }\n    return sprintf(\"<span style='color:#f00;'>%.0f%%</span>\", $relh);\n}\n\nfunction c2($sknt, $gust)\n{\n    global $skntthres;\n    global $gustthres;\n    $s = \"\";\n    $a = False;\n    if ($sknt < $skntthres) {\n        $s .= $sknt;\n    } else {\n        $a = True;\n        $s .= sprintf(\"<span style='color:#f00;'>%s</span>\", $sknt);\n    }\n\n    if ($gust < $gustthres) {\n        $s .= sprintf(\"/%s\", $gust);\n    } else {\n        $a = True;\n        $s .= sprintf(\"/<span style='color:#f00;'>%s</span>\", $gust);\n    }\n    if ($a) {\n        return sprintf(\"%s<span style='color:#f00;'>KT</span>\", $s);\n    } else {\n        return sprintf(\"%sKT\", $s);\n    }\n}\n\nfunction c3($vsby)\n{\n    if (is_null($vsby)) return \"MMSM\";\n    global $vsbythres;\n    if ($vsby <= $vsbythres) {\n        return sprintf(\"<span style='color:#f00;'>%.1fSM</span>\", $vsby);\n    }\n    return sprintf(\"%.1fSM\", $vsby);\n}\nfunction c4($tmpf)\n{\n    if (is_null($tmpf)) return \"M\";\n    global $ltmpfthres;\n    global $htmpfthres;\n    if ($tmpf <= $ltmpfthres) {\n        return sprintf(\"<span style='color:#00f; font-weight:bold;'>%.0f</span>\", $tmpf);\n    }\n    if ($tmpf >= $htmpfthres) {\n        return sprintf(\"<span style='color:#f00;'>%.0f</span>\", $tmpf);\n    }\n    return sprintf(\"%.0f\", $tmpf);\n}\nfunction c5($wcht)\n{\n    if (is_null($wcht))  return \"\";\n    global $wchtthres;\n    if ($wcht <= $wchtthres)\n        return sprintf(\n            \"<span style='color:#00f; font-weight:bold;'> WC %.0f</span>\",\n            $wcht\n        );\n    if ($wcht < 32)\n        return sprintf(\" WC %.0f\", $wcht);\n    return \"\";\n}\nfunction c6($hidx, $thres)\n{\n    if (is_null($hidx))  return \"\";\n    if ($hidx >= $thres)\n        return sprintf(\n            \"<span style='color:#f00; font-weight:bold;'> HIDX %.0f</span>\",\n            $hidx\n        );\n    if ($hidx > 80)\n        return sprintf(\" HIDX %.0f\", $hidx);\n    return \"\";\n}\n\n$table = \"\";\n\n$rs = pg_execute($postgis, $find_stname, array(\n    $wfo3, $sid, $eid, $phenomena,\n    $significance\n));\nif ($rs === FALSE) xssafe(\"<tag>\");\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n    $ar = explode(\",\", $row[\"a\"]);\n    $issue = $row[\"issue\"];\n    $expire = $row[\"expire\"];\n    $eventid = $row[\"eventid\"];\n    $stations = \"(\";\n\n    $table .= sprintf(\n        \"<h3>Event: %s Issue: %s Expire: %s</h3>\\n\",\n        $eventid,\n        $issue,\n        $expire\n    );\n    $table .= \"<p><strong>UGC Codes:</strong> \";\n    foreach ($ar as $k => $zone) {\n        $table .= \" $zone,\";\n        if (array_key_exists($zone, $ugc2station)) {\n            foreach ($ugc2station[$zone] as $k2 => $st) {\n                $stations  .= sprintf(\"'%s',\", $st);\n            }\n        }\n    }\n    $stations .= \"'ZZZZZ')\";\n    $table .= \"<p><strong>ASOS/AWOS IDs:</strong> \";\n    $table .= str_replace(\",'ZZZZZ'\", \"\", $stations);\n    $table .= \"<br />\";\n    $rs2 = pg_query(\n        $asos,\n        \"SELECT station, valid, to_char(valid, 'ddHH24MI') as z, \" .\n            \"tmpf, dwpf, sknt, gust, vsby, feel from alldata \" .\n            \"WHERE valid BETWEEN '$issue' and '$expire' and \" .\n            \"station in $stations and report_type != 1 \" .\n            \"ORDER by station, valid ASC\"\n    );\n    $table .= \"<table class=\\\"table table-sm\\\">\";\n    $ostation = \"\";\n    $stfound = 0;\n    for ($j = 0; $row2 = pg_fetch_assoc($rs2); $j++) {\n        if ($ostation != $row2[\"station\"]) {\n            if ($stfound > 0 && $stfound % 3 == 0) {\n                $table .= \"</td></tr>\";\n                $ostation = \"\";\n            }\n            if ($ostation == \"\") $table .= \"<tr><td valign='top'>\";\n            else $table .= \"</td><td valign='top'>\";\n            $ostation = $row2[\"station\"];\n            $stfound += 1;\n            $table .= sprintf(\"<u>UGC Code: %s</u><br/>\", $station2ugc[$row2[\"station\"]]);\n        }\n        $table .= sprintf(\n            \"%s %sZ %s/%.0f %s %s %s%s%s<br>\",\n            $row2[\"station\"],\n            $row2[\"z\"],\n            c4($row2[\"tmpf\"]),\n            $row2[\"dwpf\"],\n            c1(relh(f2c($row2[\"tmpf\"]), f2c($row2[\"dwpf\"]))),\n            c3($row2[\"vsby\"]),\n            c2($row2[\"sknt\"], $row2[\"gust\"]),\n            c5($row2[\"feel\"]),\n            c6($row2[\"feel\"], $hidxthres),\n        );\n    }\n    $table .= \"</td></tr></table>\";\n}\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/nws/\">NWS User Resources</a></li>\n <li class=\"current\">NWS Watch/Warning/Advisory + ASOS Observations</li>\n</ol>\n\n  <p>This app allows you to view an office's warnings for a year and\n  then looks for ASOS/AWOS observations valid for the warning period. The observations\n  presented are coded like:\n  <br /><code>ID DDHHMI TMPF/DWPF RELH VSBY SKNT/GUST WC WINDCHILL HIDX HEAT INDEX</code>\n  <br />Where ID is the station identifier, DDHHMI is the day-hour-minute of the\n  observation in UTC, TMPF is the air temperature in Fahrenheit, DWPF is the\n  dew point temperature in Fahrenheit, RELH is the relative humidity, VSBY is\n  the visibility, SKNT is the wind speed in knots and GUST is the wind gust in knots.\n  The wind chill is displayed when the temperature is below 32&deg;F. The heat index\n  is displayed when the value is above 80&deg;F.\n\n  <p>A warning event may be listed multiple times, if the UGC zones associated\n  with the warning had different expiration times.\n\n  <form method=\"GET\" name=\"theform\">\n\n  <p>\n  <table class=\"table table-sm\">\n  <tr>\n    <th>WWA Type:</th>\n    <th>Start Event ID:</th>\n    <th>End Event ID:</th>\n    <th>Select WFO:</th>\n      <th>Select Year:</th>\n      </tr>\n      <tr>\n      <td>{$mselect}</td>\n      <td><input type=\"text\" size=\"10\" name=\"sid\" value=\"{$sid}\" /></td>\n      <td><input type=\"text\" size=\"10\" name=\"eid\" value=\"{$eid}\" /></td>\n      <td>{$wselect}</td>\n    <td>{$yselect}</td>\n    </tr>\n    </table>\n\n  <table class=\"table table-sm\">\n  <tr>\n      <th>Relative Humidity Threshold (%):</th>\n      <th>Wind Speed Threshold (kts):</th>\n      <th>Wind Gust Threshold (kts):</th>\n      <th>Visibility Threshold (mile):</th>\n    </tr>\n    <tr>\n    <td><input type=\"text\" size=\"10\" name=\"relh\" value=\"{$rhthres}\" /></td>\n    <td><input type=\"text\" size=\"10\" name=\"sknt\" value=\"{$skntthres}\" /></td>\n    <td><input type=\"text\" size=\"10\" name=\"gust\" value=\"{$gustthres}\" /></td>\n    <td><input type=\"text\" size=\"10\" name=\"vsby\" value=\"{$vsbythres}\" /></td>\n    </tr>\n  <tr>\n    <th>Air Temperatures below... (F):</th>\n    <th>Air Temperatures above... (F):</th>\n    <th>Wind Chill Below... (F)</th>\n    <th>Heat Index Above...(F)</th>\n  </tr>\n    <tr>\n    <td><input type=\"text\" size=\"10\" name=\"ltmpf\" value=\"{$ltmpfthres}\" /></td>\n    <td><input type=\"text\" size=\"10\" name=\"htmpf\" value=\"{$htmpfthres}\" /></td>\n    <td><input type=\"text\" size=\"10\" name=\"wcht\" value=\"{$wchtthres}\" /></td>\n    <td><input type=\"text\" size=\"10\" name=\"hidx\" value=\"{$hidxthres}\" /></td>\n    <td></td>\n    </tr>\n    </table>\n    <input type=\"submit\" value=\"Generate Report\"/>\n  </form>\n\n{$table}\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/nws/watches.css",
    "content": "/* SPC Watches Page Styles - Bootstrap 5 + Tabulator compatible */\n\n/* Fixed height table container to keep headers visible */\n.tabulator {\n    height: 70vh !important;\n}\n\n/* Header filter styling */\n.tabulator-header-filter input {\n    font-size: 0.8rem;\n    padding: 0.25rem 0.5rem;\n    border-radius: 0.25rem;\n    border: 1px solid #ced4da;\n}\n\n.tabulator-header-filter input:focus {\n    border-color: #86b7fe;\n    outline: 0;\n    box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n.tabulator-header-filter input::placeholder {\n    color: #6c757d;\n    font-style: italic;\n    font-size: 0.75rem;\n}\n\n/* Export buttons styling */\n.export-buttons {\n    padding: 0.75rem 1rem;\n    background-color: #f8f9fa;\n    border-bottom: 1px solid #dee2e6;\n}\n\n.export-buttons .btn {\n    transition: all 0.15s ease-in-out;\n}\n\n.export-buttons .btn:hover {\n    transform: translateY(-1px);\n    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n}\n\n/* Highlight PDS badges more prominently */\n.badge.bg-danger {\n    background-color: #dc3545 !important;\n    font-weight: 600;\n    text-shadow: 0 1px 1px rgba(0,0,0,0.2);\n    animation: pulse-danger 2s infinite;\n}\n\n@keyframes pulse-danger {\n    0% { box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.4); }\n    70% { box-shadow: 0 0 0 4px rgba(220, 53, 69, 0); }\n    100% { box-shadow: 0 0 0 0 rgba(220, 53, 69, 0); }\n}\n\n/* Better link styling in table */\n.tabulator-cell a {\n    color: #0d6efd;\n    text-decoration: none;\n}\n\n.tabulator-cell a:hover {\n    color: #0a58ca;\n    text-decoration: underline;\n}\n\n/* Responsive font sizes for smaller screens */\n@media (max-width: 768px) {\n    .tabulator {\n        height: 60vh !important;\n        font-size: 0.8rem;\n    }\n    \n    .tabulator-header-filter input {\n        font-size: 0.7rem;\n        padding: 0.2rem 0.3rem;\n    }\n}\n\n/* Card styling enhancements */\n.card {\n    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n    border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header.bg-primary {\n    border-bottom: 1px solid rgba(255, 255, 255, 0.125);\n}\n\n/* Icon styling */\n.bi {\n    vertical-align: -0.125em;\n}\n\n/* Alert enhancements */\n.alert {\n    border: 1px solid;\n    border-radius: 0.375rem;\n}\n\n/* Form enhancements */\n.form-select {\n    background-position: right 0.75rem center;\n}\n\n/* Badge styling for PDS watches */\n.badge {\n    font-size: 0.75em;\n}\n\n/* Legacy table styling (in case Tabulator doesn't initialize) */\n#watchesTable {\n    width: 100%;\n    border-collapse: collapse;\n    height: 70vh;\n    overflow-y: auto;\n}\n\n#watchesTable th, #watchesTable td {\n    border: 1px solid #ddd;\n    padding: 8px;\n}\n\n#watchesTable th {\n    background-color: #f2f2f2;\n    text-align: left;\n}\n\n/* Table enhancements for Bootstrap styling */\n.table-striped > tbody > tr:nth-of-type(odd) > td {\n    background-color: rgba(0, 0, 0, 0.025);\n}\n\n.table-hover > tbody > tr:hover > td {\n    background-color: rgba(0, 0, 0, 0.075);\n}\n"
  },
  {
    "path": "htdocs/nws/watches.module.js",
    "content": "// SPC Watches Tabulator implementation - Bootstrap 5 compatible\nimport { TabulatorFull as Tabulator } from 'https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator_esm.min.js';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    const tableElement = document.getElementById('watchesTable');\n\n    if (tableElement) {\n        // Small delay to ensure DOM is fully rendered\n        setTimeout(() => {\n            // Get existing table headers\n            const headers = Array.from(tableElement.querySelectorAll('thead th')).map(th => th.textContent.trim());\n            \n            const table = new Tabulator(tableElement, {\n                height: \"70vh\",\n                layout: \"fitColumns\",\n                virtualDomBuffer: 50,\n                headerFilter: true,\n                downloadConfig: {\n                    columnHeaders: true,\n                    columnGroups: false,\n                    rowGroups: false,\n                    columnCalcs: false,\n                },\n                initialSort: [\n                    {column: \"col_3\", dir: \"desc\"}, // Sort by Issued date (newest first)\n                ],\n                columns: headers.map((header, index) => {\n                    const baseConfig = {\n                        title: header,\n                        field: `col_${index}`,\n                        formatter: index === 1 ? \"html\" : undefined, // Watch Num column has HTML links and badges\n                        headerFilterLiveFilter: false, // Reduce API calls while typing\n                    };\n                    \n                    // Special handling for States column (index 2)\n                    if (index === 2) {\n                        baseConfig.headerFilter = \"input\";\n                        baseConfig.headerFilterFunc = (headerValue, rowValue) => {\n                            if (!headerValue) {return true;}\n                            // Convert both to uppercase for case-insensitive search\n                            const searchTerm = headerValue.toUpperCase();\n                            const states = rowValue.toUpperCase();\n                            \n                            // Check if search term matches any state in the CSV list\n                            return states.split(',').some(state => \n                                state.trim().includes(searchTerm)\n                            );\n                        };\n                        baseConfig.headerFilterPlaceholder = \"e.g. IA, NE\";\n                    }\n                    \n                    // Date/time columns - better filtering\n                    if (index === 3 || index === 4) { // Issued, Expired columns\n                        baseConfig.headerFilterPlaceholder = \"YYYY-MM-DD\";\n                    }\n                    \n                    // Numeric columns - number filtering\n                    if (index >= 5 && index <= 8) { // Tornado, Hail prob, Max hail, Wind columns\n                        baseConfig.headerFilterFunc = \">=\";\n                        baseConfig.headerFilterPlaceholder = \"min value\";\n                    }\n                    \n                    return baseConfig;\n                }),\n                // Add data loading indicators\n                dataLoaded: () => {\n                    // Data loaded successfully - could add UI feedback here if needed\n                },\n                renderComplete: () => {\n                    // Add tooltips to PDS badges\n                    document.querySelectorAll('.badge.bg-danger').forEach(badge => {\n                        badge.title = \"Particularly Dangerous Situation - Enhanced risk warning\";\n                    });\n                },\n            });\n            \n            // Make table available globally for debugging and export functionality\n            window.watchesTable = table;\n            \n            // Add export functionality\n            // Create export buttons\n            const exportButtonsContainer = document.createElement('div');\n            exportButtonsContainer.className = 'export-buttons mb-3 text-end';\n            exportButtonsContainer.innerHTML = \n                '<div class=\"btn-group\" role=\"group\" aria-label=\"Export options\">' +\n                    '<button id=\"download-csv\" class=\"btn btn-outline-success btn-sm\">' +\n                        '<i class=\"bi bi-file-earmark-spreadsheet me-1\"></i>Download CSV' +\n                    '</button>' +\n                    '<button id=\"download-xlsx\" class=\"btn btn-outline-primary btn-sm\">' +\n                        '<i class=\"bi bi-file-earmark-excel me-1\"></i>Download Excel' +\n                    '</button>' +\n                '</div>';\n            \n            // Insert export buttons before the table\n            tableElement.parentNode.insertBefore(exportButtonsContainer, tableElement);\n            \n            // Add event listeners for export buttons\n            document.getElementById('download-csv').addEventListener('click', () => {\n                const year = new URLSearchParams(window.location.search).get('year') || new Date().getFullYear();\n                window.watchesTable.download(\"csv\", `spc_watches_${year}.csv`);\n            });\n            \n            document.getElementById('download-xlsx').addEventListener('click', () => {\n                const year = new URLSearchParams(window.location.search).get('year') || new Date().getFullYear();\n                window.watchesTable.download(\"xlsx\", `spc_watches_${year}.xlsx`, {sheetName: `SPC Watches ${year}`});\n            });\n        }, 100);\n    }\n});\n"
  },
  {
    "path": "htdocs/nws/watches.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 137);\n\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$uri = sprintf(\"%s/json/watches.py?year=%s\", $INTERNAL_BASEURL, $year);\n$data = file_get_contents($uri);\n$json = json_decode($data, $assoc = TRUE);\n$table = \"\";\nforeach ($json['events'] as $key => $val) {\n    $spclink = sprintf(\n        '<a target=\"_blank\" href=\"https://www.spc.noaa.gov/products/watch/' .\n            '%s/ww%04.0f.html\">%s %s</a>',\n        $val['year'],\n        $val['num'],\n        $val[\"type\"],\n        $val['num']\n    );\n    $table .= sprintf(\n        \"<tr><td>%s</td><td>%s%s</td><td>%s</td>\" .\n            \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\",\n        $val[\"year\"],\n        $spclink,\n        ($val[\"is_pds\"]) ? ' <span class=\"badge bg-danger\">PDS</span>' : \"\",\n        $val[\"states\"],\n        $val[\"issue\"],\n        $val[\"expire\"],\n        $val[\"tornadoes_1m_strong\"],\n        $val[\"hail_1m_2inch\"],\n        $val[\"max_hail_size\"],\n        $val[\"max_wind_gust_knots\"],\n    );\n}\n// Create year select with Bootstrap 5 classes\n$yearOptions = array();\nfor ($i = 1997; $i <= intval(date(\"Y\")); $i++) {\n    $yearOptions[$i] = (string)$i;\n}\n$yearselect = make_select(\"year\", $year, $yearOptions, \"\", \"form-select\");\n$t = new MyView();\n$t->title = \"SPC Watches Listing\";\n$t->headextra = <<<EOM\n<link type=\"text/css\" href=\"watches.css\" rel=\"stylesheet\" />\n<link rel=\"stylesheet\" href=\"https://unpkg.com/tabulator-tables@6.3.1/dist/css/tabulator_bootstrap5.min.css\">\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"watches.module.js\" type=\"module\"></script>\nEOM;\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\">\n      <a href=\"/nws/\"><i class=\"bi bi-arrow-left-circle me-1\"></i>NWS Resources</a>\n    </li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">SPC Watch Listing</li>\n  </ol>\n</nav>\n\n<div class=\"d-flex align-items-center mb-4\">\n  <i class=\"bi bi-shield-exclamation me-2 text-warning fs-4\"></i>\n  <h3 class=\"mb-0\">Yearly Listing of SPC Watches</h3>\n</div>\n\n<div class=\"row mb-4\">\n  <div class=\"col-lg-8\">\n    <div class=\"alert alert-info d-flex align-items-start\" role=\"alert\">\n      <i class=\"bi bi-info-circle-fill me-2 mt-1 flex-shrink-0\"></i>\n      <div>\n        <strong>JSON API Available:</strong> This table is backed by a JSON webservice that you can access directly:\n        <br><code class=\"mt-1 d-block\">{$EXTERNAL_BASEURL}/json/watches.py?year=$year</code>\n        <small class=\"text-muted mt-1 d-block\">\n          <i class=\"bi bi-link-45deg me-1\"></i>\n          Visit our <a href=\"/json/\" class=\"alert-link\">JSON(P) webservice documentation</a> for more details.\n        </small>\n      </div>\n    </div>\n  </div>\n  <div class=\"col-lg-4\">\n    <div class=\"card\">\n      <div class=\"card-header bg-light\">\n        <h6 class=\"card-title mb-0\">\n          <i class=\"bi bi-link-45deg me-1\"></i>Related Resources\n        </h6>\n      </div>\n      <div class=\"card-body\">\n        <a class=\"btn btn-primary d-block\" href=\"/nws/pds_watches.php\">\n          <i class=\"bi bi-exclamation-triangle-fill me-1\"></i>PDS Watches\n        </a>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"card mb-4\">\n  <div class=\"card-header bg-light\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-funnel me-2\"></i>Filter Options\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <form method=\"GET\" action=\"/nws/watches.php\" name=\"ys\">\n      <div class=\"row g-3 align-items-end\">\n        <div class=\"col-md-6\">\n          <label for=\"year\" class=\"form-label\">\n            <i class=\"bi bi-calendar me-1\"></i>Select Year\n          </label>\n          $yearselect\n        </div>\n        <div class=\"col-md-6\">\n          <button type=\"submit\" class=\"btn btn-primary\">\n            <i class=\"bi bi-arrow-clockwise me-1\"></i>Update Table\n          </button>\n        </div>\n      </div>\n    </form>\n  </div>\n</div>\n\n<div class=\"card\">\n  <div class=\"card-header bg-primary text-white\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-table me-2\"></i>SPC Watches for $year\n    </h5>\n  </div>\n  <div class=\"card-body p-0\">\n    <table id=\"watchesTable\" class=\"table table-striped table-hover mb-0\">\n      <thead class=\"table-dark\">\n        <tr>\n          <th><i class=\"bi bi-calendar-date me-1\"></i>Year</th>\n          <th><i class=\"bi bi-shield-check me-1\"></i>Watch Num</th>\n          <th><i class=\"bi bi-geo-alt me-1\"></i>State(s)</th>\n          <th><i class=\"bi bi-clock me-1\"></i>Issued</th>\n          <th><i class=\"bi bi-clock-history me-1\"></i>Expired</th>\n          <th><i class=\"bi bi-tornado me-1\"></i>Prob EF2+ Tor</th>\n          <th><i class=\"bi bi-cloud-hail me-1\"></i>Prob Hail 2+in</th>\n          <th><i class=\"bi bi-rulers me-1\"></i>Max Hail Size</th>\n          <th><i class=\"bi bi-wind me-1\"></i>Max Wind Gust kts</th>\n        </tr>\n      </thead>\n      <tbody>\n        {$table}\n      </tbody>\n    </table>\n  </div>\n</div>\n\nEOM;\n$t->render(\"full.phtml\");\n"
  },
  {
    "path": "htdocs/nws/wfo_vtec_count.php",
    "content": "<?php\nheader(\"Location: /plotting/auto/?q=109\");\n"
  },
  {
    "path": "htdocs/nws/wpc_national_hilo/index.css",
    "content": "/* WPC National High/Low Styling - Enhanced Bootstrap 5 Design */\n\n/* Main heading styling */\n.page-header {\n    background: linear-gradient(135deg, #dc3545, #b02a37);\n    color: white;\n    padding: 2rem;\n    margin-bottom: 2rem;\n    border-radius: 0.5rem;\n}\n\n/* Card enhancements */\n.card {\n    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n    border: 1px solid #e9ecef;\n}\n\n.card-header {\n    border-bottom: 2px solid #e9ecef;\n    font-weight: 600;\n}\n\n.card-header.bg-light {\n    background: linear-gradient(135deg, #f8f9fa, #e9ecef) !important;\n}\n\n.card-header.bg-primary {\n    background: linear-gradient(135deg, #0d6efd, #0a58ca) !important;\n}\n\n/* Form controls enhancements */\n.form-control, .form-select {\n    border: 2px solid #e9ecef;\n    transition: border-color 0.3s ease, box-shadow 0.3s ease;\n}\n\n.form-control:focus, .form-select:focus {\n    border-color: #0d6efd;\n    box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.25);\n}\n\n/* Button enhancements */\n.btn {\n    font-weight: 500;\n    letter-spacing: 0.025em;\n    transition: all 0.3s ease;\n}\n\n.btn:hover {\n    transform: translateY(-1px);\n    box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.15);\n}\n\n.btn-primary {\n    background: linear-gradient(135deg, #0d6efd, #0a58ca);\n    border-color: #0d6efd;\n}\n\n.btn-success {\n    background: linear-gradient(135deg, #198754, #146c43);\n}\n\n.btn-outline-light:hover {\n    background: rgba(255, 255, 255, 0.2);\n    border-color: rgba(255, 255, 255, 0.5);\n}\n\n/* Alert styling */\n.alert-info {\n    border-left: 4px solid #0dcaf0;\n    background: linear-gradient(135deg, #d1ecf1, #b8daff);\n    border-color: #b8daff;\n}\n\n/* Tabulator table styling */\n#data-table {\n    border-radius: 0.375rem;\n    overflow: hidden;\n    min-height: 400px;\n}\n\n.tabulator {\n    font-size: 0.875rem;\n    border: none;\n}\n\n.tabulator-header {\n    background: linear-gradient(135deg, #6c757d, #495057);\n    color: white;\n    border: none;\n}\n\n.tabulator-header .tabulator-col {\n    border-right: 1px solid rgba(255, 255, 255, 0.2);\n}\n\n.tabulator-row:hover {\n    background-color: rgba(13, 110, 253, 0.1);\n}\n\n.tabulator-row:nth-child(even) {\n    background-color: rgba(0, 0, 0, 0.02);\n}\n\n/* Temperature value styling */\n.temp-high {\n    color: #dc3545;\n    font-weight: 600;\n}\n\n.temp-low {\n    color: #0d6efd;\n    font-weight: 600;\n}\n\n.location-list {\n    font-size: 0.85em;\n    line-height: 1.3;\n}\n\n/* Form check styling */\n.form-check-input:checked {\n    background-color: #0d6efd;\n    border-color: #0d6efd;\n}\n\n.form-check-label {\n    cursor: pointer;\n}\n\n/* Icon enhancements */\n.bi {\n    vertical-align: -0.125em;\n}\n\n/* Loading states */\n.loading {\n    position: relative;\n    overflow: hidden;\n}\n\n.loading::after {\n    content: '';\n    position: absolute;\n    top: 0;\n    left: -100%;\n    width: 100%;\n    height: 100%;\n    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);\n    animation: loading 1.5s infinite;\n}\n\n@keyframes loading {\n    0% { left: -100%; }\n    100% { left: 100%; }\n}\n\n/* Responsive improvements */\n@media (max-width: 768px) {\n    .page-header {\n        padding: 1rem;\n    }\n    \n    .page-header h1 {\n        font-size: 1.5rem;\n    }\n    \n    .btn-group {\n        flex-direction: column;\n    }\n    \n    .btn-group .btn {\n        margin-bottom: 0.25rem;\n    }\n    \n    .card-body {\n        padding: 1rem;\n    }\n}\n\n/* Status badges */\n#result-count {\n    font-size: 0.75rem;\n    padding: 0.35em 0.65em;\n}\n\n/* Enhanced breadcrumb */\n.breadcrumb-item + .breadcrumb-item::before {\n    content: var(--bs-breadcrumb-divider, \">\") !important;\n}\n\n.breadcrumb-item a {\n    text-decoration: none;\n    color: #0d6efd;\n}\n\n.breadcrumb-item a:hover {\n    text-decoration: underline;\n}\n"
  },
  {
    "path": "htdocs/nws/wpc_national_hilo/index.module.js",
    "content": "// WPC National High/Low Temperature - Modern ES Module with API calls\nimport {TabulatorFull as Tabulator} from 'https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator_esm.min.mjs';\n\nlet table = null;\nconst API_BASE_URL = '/api/1/nws/wpc_national_hilo.json';\n\n// Validate raw data structure\nfunction validateRawData(rawData) {\n    return rawData?.data && Array.isArray(rawData.data) && rawData.data.length > 0;\n}\n\n// Create location string from row data\nfunction createLocationString(row) {\n    return `(${row.station || 'Unknown'}) ${row.name || 'Unknown'}, ${row.state || 'Unknown'}`;\n}\n\n// Initialize date entry if it doesn't exist\nfunction initializeDateEntry(processedData, date) {\n    if (!processedData.has(date)) {\n        processedData.set(date, {\n            date,\n            min_temp: '',\n            min_locations: [],\n            max_temp: '',\n            max_locations: []\n        });\n    }\n    return processedData.get(date);\n}\n\n// Process a single row of temperature data\nfunction processTemperatureRow(processedData, row) {\n    if (!row || !row.date) {\n        return; // Skip invalid rows\n    }\n    \n    const date = row.date;\n    const entry = initializeDateEntry(processedData, date);\n    const locationString = createLocationString(row);\n    \n    if (row.n_x === 'N') {\n        entry.min_temp = row.value || '';\n        entry.min_locations.push(locationString);\n    } else if (row.n_x === 'X') {\n        entry.max_temp = row.value || '';\n        entry.max_locations.push(locationString);\n    }\n}\n\n// Convert processed data to display format\nfunction convertToDisplayFormat(processedData) {\n    return Array.from(processedData.values()).map(entry => ({\n        date: entry.date,\n        min_temp: entry.min_temp,\n        min_locations: entry.min_locations.join('<br>'),\n        max_temp: entry.max_temp,\n        max_locations: entry.max_locations.join('<br>')\n    })).sort((a, b) => new Date(b.date) - new Date(a.date)); // Sort by date descending\n}\n\n// Process raw API data into tabulator format\nfunction processTableData(rawData) {\n    // Check if we have valid data structure\n    if (!validateRawData(rawData)) {\n        return [];\n    }\n\n    const processedData = new Map();\n    \n    // Group data by date\n    rawData.data.forEach(row => processTemperatureRow(processedData, row));\n    \n    // Convert Map to Array and format for display\n    return convertToDisplayFormat(processedData);\n}\n\n// Format temperature values with color coding\nfunction formatTemperature(cell, formatterParams) {\n    const value = cell.getValue();\n    if (!value) {return '<span class=\"text-muted\">—</span>';}\n    \n    const tempClass = formatterParams.type === 'max' ? 'temp-high' : 'temp-low';\n    return `<span class=\"${tempClass}\">${value}°F</span>`;\n}\n\n// Format location lists\nfunction formatLocations(cell) {\n    const value = cell.getValue();\n    if (!value) {return '<span class=\"text-muted\">No data</span>';}\n    \n    return `<div class=\"location-list\">${value}</div>`;\n}\n\n// Initialize Tabulator table\nfunction initializeTable() {\n    table = new Tabulator('#data-table', {\n        layout: \"fitColumns\",\n        placeholder: \"No temperature data available for the selected criteria\",\n        height: \"600px\",\n        columns: [\n            {\n                title: \"Date\", \n                field: \"date\", \n                sorter: \"datetime\",\n                sorterParams: {\n                    format: \"yyyy-MM-dd\",\n                    alignEmptyValues: \"bottom\"\n                },\n                width: 120,\n                headerSort: true\n            },\n            {\n                title: \"Min °F\", \n                field: \"min_temp\", \n                formatter: formatTemperature,\n                formatterParams: { type: 'min' },\n                width: 100,\n                headerSort: true,\n                cssClass: \"text-center\"\n            },\n            {\n                title: \"Minimum Temperature Location(s)\", \n                field: \"min_locations\", \n                formatter: formatLocations,\n                headerSort: false,\n                widthGrow: 2\n            },\n            {\n                title: \"Max °F\", \n                field: \"max_temp\", \n                formatter: formatTemperature,\n                formatterParams: { type: 'max' },\n                width: 100,\n                headerSort: true,\n                cssClass: \"text-center\"\n            },\n            {\n                title: \"Maximum Temperature Location(s)\", \n                field: \"max_locations\", \n                formatter: formatLocations,\n                headerSort: false,\n                widthGrow: 2\n            }\n        ],\n        initialSort: [\n            {column: \"date\", dir: \"desc\"}\n        ]\n    });\n    \n    return table;\n}\n\n// Update result count badge\nfunction updateResultCount(count) {\n    const badge = document.getElementById('result-count');\n    if (badge) {\n        badge.textContent = `${count} records`;\n        badge.className = `badge ${count > 0 ? 'bg-success' : 'bg-secondary'} ms-2`;\n    }\n}\n\n// Update page title\nfunction updatePageTitle(title) {\n    const titleElement = document.querySelector('.card-header h5');\n    if (titleElement) {\n        titleElement.innerHTML = `<i class=\"bi bi-table me-2\"></i>${title} <span id=\"result-count\" class=\"badge bg-light text-dark ms-2\">Loading...</span>`;\n    }\n}\n\n// Show loading state\nfunction setLoadingState(isLoading) {\n    const loadingIndicator = document.getElementById('loading-indicator');\n    const submitButton = document.querySelector('#filter-form button[type=\"submit\"]');\n    \n    if (loadingIndicator) {\n        if (isLoading) {\n            loadingIndicator.classList.remove('d-none');\n        } else {\n            loadingIndicator.classList.add('d-none');\n        }\n    }\n    \n    if (submitButton) {\n        submitButton.disabled = isLoading;\n        if (isLoading) {\n            submitButton.innerHTML = '<i class=\"bi bi-arrow-clockwise me-2 spinner-border spinner-border-sm\"></i>Loading...';\n        } else {\n            submitButton.innerHTML = '<i class=\"bi bi-arrow-clockwise me-2\"></i>Update Table';\n        }\n    }\n}\n\n// Fetch data from API\nasync function fetchTableData(params) {\n    setLoadingState(true);\n    \n    try {\n        const url = new URL(API_BASE_URL, window.location.origin);\n        \n        // Add parameters to URL\n        Object.keys(params).forEach(key => {\n            if (params[key]) {\n                url.searchParams.append(key, params[key]);\n            }\n        });\n        \n        const response = await fetch(url);\n        \n        if (!response.ok) {\n            throw new Error(`HTTP error! status: ${response.status}`);\n        }\n        \n        const data = await response.json();\n        return data;\n        \n    } catch {\n        updateResultCount(0);\n        const badge = document.getElementById('result-count');\n        if (badge) {\n            badge.textContent = 'Error loading data';\n            badge.className = 'badge bg-danger ms-2';\n        }\n        return { data: [] };\n    } finally {\n        setLoadingState(false);\n    }\n}\n\n// Load and display data\nasync function loadTableData(params) {\n    const rawData = await fetchTableData(params);\n    const tableData = processTableData(rawData);\n    \n    // Load data into table\n    table.setData(tableData);\n    \n    // Update result count\n    updateResultCount(tableData.length);\n    \n    return tableData;\n}\n\n// Get form parameters\nfunction getFormParams() {\n    const form = document.getElementById('filter-form');\n    const formData = new FormData(form);\n    const params = {};\n    \n    const opt = formData.get('opt');\n    if (opt === '1') {\n        // By state\n        const state = formData.get('state');\n        if (state) {\n            params.state = state;\n        }\n    } else {\n        // By year\n        const year = formData.get('year');\n        if (year) {\n            params.year = year;\n        }\n    }\n    \n    return params;\n}\n\n// Update page title based on current filter\nfunction updateTitleFromParams(params) {\n    let title = \"WPC National High/Low Temperature Data\";\n    \n    if (params.state) {\n        title = `Entries for state: ${params.state}`;\n    } else if (params.year) {\n        title = `Entries for year: ${params.year}`;\n    }\n    \n    updatePageTitle(title);\n}\n\n// Handle form submission\nasync function handleFormSubmit(event) {\n    event.preventDefault();\n    \n    const params = getFormParams();\n    updateTitleFromParams(params);\n    \n    // Update URL parameters\n    const url = new URL(window.location);\n    url.search = ''; // Clear existing params\n    Object.keys(params).forEach(key => {\n        if (params[key]) {\n            url.searchParams.set(key, params[key]);\n        }\n    });\n    \n    // Add the opt parameter\n    const opt = new FormData(document.getElementById('filter-form')).get('opt');\n    url.searchParams.set('opt', opt);\n    \n    window.history.pushState({}, '', url);\n    \n    await loadTableData(params);\n}\n\n// Set up export functionality  \nfunction setupExportButtons() {\n    const excelBtn = document.getElementById('export-excel');\n    const csvBtn = document.getElementById('export-csv');\n    \n    if (excelBtn) {\n        excelBtn.addEventListener('click', () => {\n            table.download(\"xlsx\", \"wpc_national_hilo.xlsx\", {sheetName: \"Temperature Data\"});\n        });\n    }\n    \n    if (csvBtn) {\n        csvBtn.addEventListener('click', () => {\n            table.download(\"csv\", \"wpc_national_hilo.csv\");\n        });\n    }\n}\n\n// Initialize the application\nasync function initializeApp() {\n    // Initialize table\n    initializeTable();\n    \n    // Setup form handler\n    const form = document.getElementById('filter-form');\n    if (form) {\n        form.addEventListener('submit', handleFormSubmit);\n    }\n    \n    // Setup export buttons\n    setupExportButtons();\n    \n    // Load initial data\n    const initialParamsScript = document.getElementById('initial-params');\n    const titleScript = document.getElementById('page-title');\n    \n    if (initialParamsScript && titleScript) {\n        try {\n            const initialParams = JSON.parse(initialParamsScript.textContent);\n            const initialTitle = JSON.parse(titleScript.textContent);\n            \n            updatePageTitle(initialTitle);\n            await loadTableData(initialParams);\n        } catch {\n            // If parsing fails, load with current form values\n            const params = getFormParams();\n            updateTitleFromParams(params);\n            await loadTableData(params);\n        }\n    } else {\n        // Fallback: load with current form values\n        const params = getFormParams();\n        updateTitleFromParams(params);\n        await loadTableData(params);\n    }\n}\n\n// Initialize when DOM is loaded\nif (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initializeApp);\n} else {\n    initializeApp();\n}"
  },
  {
    "path": "htdocs/nws/wpc_national_hilo/index.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 142);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/mlib.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n$t->headextra = <<<EOM\n<link href=\"https://unpkg.com/tabulator-tables@6.2.1/dist/css/tabulator.min.css\" rel=\"stylesheet\">\n<link type=\"text/css\" href=\"index.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"https://unpkg.com/luxon@3.4.4/build/global/luxon.min.js\"></script>\n<script src=\"index.module.js?v=5\" type=\"module\"></script>\nEOM;\n\n$state = get_str404('state', null);\n$year = get_int404(\"year\", date(\"Y\"));\n$opt = get_int404(\"opt\", 0);\n\n$t->title = \"WPC National High Low Temperature\";\n\n$sselect = stateSelect($state);\n$yselect = yearSelect(2008, $year);\n$opts = Array(\n    1 => \"By State\",\n    0 => \"By Year\",\n);\n$oselect = make_select(\"opt\", $opt, $opts);\n\n// Prepare initial parameters for JavaScript\n$initialParams = array();\nif ($opt == 1 && $state) {\n    $initialParams[\"state\"] = $state;\n    $title = \"Entries for state: {$state}\";\n} else {\n    $initialParams[\"year\"] = $year;\n    $title = \"Entries for year: {$year}\";\n}\n\nfunction write_entry($entry){\n    return sprintf(\"<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\\n\",\n        $entry[\"date\"], $entry[\"N_val\"],\n        implode(\"<br />\", $entry[\"N_names\"]), $entry[\"X_val\"],\n        implode(\"<br />\", $entry[\"X_names\"]));\n}\n\n$yearselected = ($opt == 0) ? ' checked=\"checked\" ': \"\";\n$stateselected = ($opt == 1) ? ' checked=\"checked\" ': \"\";\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS User Resources</a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\">WPC National High Low</li>\n</ol>\n</nav>\n\n<div class=\"d-flex align-items-center mb-4 page-header\">\n    <h1 class=\"mb-0 me-3 text-white\">\n        <i class=\"bi bi-thermometer-half me-2\"></i>\n        WPC National High/Low Temperature\n    </h1>\n    <div class=\"ms-auto\">\n        <span class=\"badge bg-light text-dark\">\n            <i class=\"bi bi-database me-1\"></i>Since 2008\n        </span>\n    </div>\n</div>\n\n<div class=\"alert alert-info d-flex align-items-start mb-4 border-0\">\n    <i class=\"bi bi-info-circle-fill me-3 flex-shrink-0\" style=\"font-size: 1.5rem; color: #0dcaf0;\"></i>\n    <div>\n        <h6 class=\"alert-heading mb-2\">\n            <i class=\"bi bi-graph-up me-1\"></i>About This Tool\n        </h6>\n        <p class=\"mb-2\">The IEM maintains an archive of the <a href=\"https://www.wpc.ncep.noaa.gov/discussions/hpcdiscussions.php?disc=nathilo&version=0&fmt=reg\" target=\"_blank\" class=\"alert-link\">National High and Low Temperature</a>\n        product. This product is disseminated over NOAAPort in XML format and called\n        <a href=\"/wx/afos/p.php?pil=XTEUS\" target=\"_blank\" class=\"alert-link\">XTEUS</a>.</p>\n        <p class=\"mb-0\">\n            <strong><i class=\"bi bi-calendar-range me-1\"></i>Data Range:</strong> Archive begins on <strong>30 June 2008</strong>. Data quality prior to 2011 may be suspect due to raw text product issues.\n            <br><strong><i class=\"bi bi-api me-1\"></i>API Access:</strong> Powered by an <a href=\"/api/1/docs#/nws/service_nws_wpc_national_hilo__fmt__get\" target=\"_blank\" class=\"alert-link\">IEM Web Service</a>.\n        </p>\n    </div>\n</div>\n\n<div class=\"row mb-4\">\n    <div class=\"col-lg-8\">\n        <div class=\"card\">\n            <div class=\"card-header bg-light\">\n                <h5 class=\"card-title mb-0\">\n                    <i class=\"bi bi-sliders me-2\"></i>Filter Options\n                </h5>\n            </div>\n            <div class=\"card-body\">\n                <form method=\"GET\" name=\"changeme\" id=\"filter-form\">\n                    <div class=\"row g-3\">\n                        <div class=\"col-md-6\">\n                            <div class=\"form-check\">\n                                <input class=\"form-check-input\" type=\"radio\" name=\"opt\" value=\"0\" {$yearselected} id=\"year\">\n                                <label class=\"form-check-label fw-semibold\" for=\"year\">\n                                    <i class=\"bi bi-calendar-event me-1\"></i>Select by Year\n                                </label>\n                            </div>\n                            <div class=\"mt-2\">\n                                {$yselect}\n                            </div>\n                        </div>\n                        <div class=\"col-md-6\">\n                            <div class=\"form-check\">\n                                <input class=\"form-check-input\" type=\"radio\" name=\"opt\" value=\"1\" {$stateselected} id=\"state\">\n                                <label class=\"form-check-label fw-semibold\" for=\"state\">\n                                    <i class=\"bi bi-geo-alt me-1\"></i>Select by State\n                                </label>\n                            </div>\n                            <div class=\"mt-2\">\n                                {$sselect}\n                                <div class=\"form-text\">Only contiguous US States</div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"mt-3\">\n                        <button type=\"submit\" class=\"btn btn-primary btn-lg\">\n                            <i class=\"bi bi-arrow-clockwise me-2\"></i>Update Table\n                        </button>\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-lg-4\">\n        <div class=\"card\">\n            <div class=\"card-header bg-light\">\n                <h5 class=\"card-title mb-0\">\n                    <i class=\"bi bi-info-square me-2\"></i>Quick Guide\n                </h5>\n            </div>\n            <div class=\"card-body\">\n                <ul class=\"list-unstyled mb-0\">\n                    <li class=\"mb-2\">\n                        <i class=\"bi bi-1-circle-fill text-primary me-2\"></i>\n                        <strong>Choose Filter:</strong> Select by year or state\n                    </li>\n                    <li class=\"mb-2\">\n                        <i class=\"bi bi-2-circle-fill text-primary me-2\"></i>\n                        <strong>Update Data:</strong> Click \"Update Table\" to refresh\n                    </li>\n                    <li class=\"mb-2\">\n                        <i class=\"bi bi-3-circle-fill text-primary me-2\"></i>\n                        <strong>Interactive Table:</strong> Sort, filter, and export data\n                    </li>\n                    <li class=\"mb-0\">\n                        <i class=\"bi bi-4-circle-fill text-primary me-2\"></i>\n                        <strong>Export Options:</strong> Download data in multiple formats\n                    </li>\n                </ul>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"row\">\n    <div class=\"col-12\">\n        <div class=\"card\">\n            <div class=\"card-header bg-primary text-white d-flex justify-content-between align-items-center\">\n                <h5 class=\"card-title mb-0\">\n                    <i class=\"bi bi-table me-2\"></i>{$title}\n                    <span id=\"result-count\" class=\"badge bg-light text-dark ms-2\">Loading...</span>\n                </h5>\n                <div class=\"btn-group\" role=\"group\">\n                    <button type=\"button\" id=\"export-excel\" class=\"btn btn-success\">\n                        <i class=\"bi bi-file-earmark-excel me-1\"></i>Excel\n                    </button>\n                    <button type=\"button\" id=\"export-csv\" class=\"btn btn-outline-light\">\n                        <i class=\"bi bi-file-earmark-text me-1\"></i>CSV\n                    </button>\n                </div>\n            </div>\n            <div class=\"card-body p-0\">\n                <div id=\"data-table\"></div>\n                <div id=\"loading-indicator\" class=\"d-none position-absolute top-50 start-50 translate-middle\">\n                    <div class=\"spinner-border text-primary\" role=\"status\">\n                        <span class=\"visually-hidden\">Loading...</span>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\n<script type=\"application/json\" id=\"initial-params\">\n<?php echo json_encode($initialParams); ?>\n</script>\n\n<script type=\"application/json\" id=\"page-title\">\n<?php echo json_encode($title); ?>\n</script>\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/nws/wpc_outlook_search/index.css",
    "content": ".map {\n    width: 100%;\n    height: 300px;\n}\n\n/* Enhanced form styling */\n.form-label {\n    font-weight: 600;\n    color: #495057;\n}\n\n.form-control-sm {\n    font-size: 0.875rem;\n}\n\n.btn-primary {\n    background-color: #0d6efd;\n    border-color: #0d6efd;\n    font-weight: 500;\n}\n\n.btn-primary:hover {\n    background-color: #0b5ed7;\n    border-color: #0a58ca;\n}\n\n/* Section headings */\nh3 {\n    color: #212529;\n    font-weight: 700;\n    border-bottom: 2px solid #dee2e6;\n    padding-bottom: 0.5rem;\n}\n\nh5 {\n    color: #343a40;\n    font-weight: 600;\n    margin-bottom: 1rem !important;\n}\n\n/* Form sections */\n.col-md-4 {\n    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n}\n\n/* Coordinate input styling */\ninput[type=\"number\"]::-webkit-outer-spin-button,\ninput[type=\"number\"]::-webkit-inner-spin-button {\n    -webkit-appearance: none;\n    margin: 0;\n}\n\ninput[type=\"number\"] {\n    appearance: textfield;\n    -moz-appearance: textfield;\n}\n\n/* Form check improvements */\n.form-check-label {\n    font-size: 0.9rem;\n    color: #495057;\n}\n\n/* Map border enhancement */\n.map.border {\n    border-width: 2px !important;\n    border-color: #dee2e6 !important;\n}\n\n/* Loading indicator styling */\n#central-loading {\n    background-color: rgba(248, 249, 250, 0.95);\n    border: 1px solid #dee2e6;\n    border-radius: 0.5rem;\n    backdrop-filter: blur(2px);\n    animation: fadeIn 0.3s ease-in-out;\n}\n\n#central-loading .spinner-border {\n    width: 1.5rem;\n    height: 1.5rem;\n}\n\n@keyframes fadeIn {\n    from { opacity: 0; transform: translateY(-10px); }\n    to { opacity: 1; transform: translateY(0); }\n}\n\n/* Loading overlay effect */\n#thetabs.loading {\n    opacity: 0.6;\n    pointer-events: none;\n    transition: opacity 0.3s ease;\n}\n\n.outlook-days,\n.category-select {\n    margin: 1rem 0;\n}\n\n.day-grid,\n.category-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));\n    gap: 8px;\n    margin-top: 0.5rem;\n}\n\n.day-item {\n    position: relative;\n    text-align: center;\n}\n\n.day-item input[type=\"radio\"] {\n    position: absolute;\n    opacity: 0;\n    width: 0;\n    height: 0;\n}\n\n.day-item label {\n    display: block;\n    padding: 0.5rem 0.25rem;\n    background-color: #f8f9fa;\n    border: 1px solid #dee2e6;\n    border-radius: 0.375rem;\n    cursor: pointer;\n    transition: all 0.2s ease;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    font-size: 0.85rem;\n    font-weight: 500;\n}\n\n.day-item input[type=\"radio\"]:checked + label {\n    background-color: #0d6efd;\n    color: white;\n    border-color: #0d6efd;\n    box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.25);\n}\n\n.day-item label:hover {\n    background-color: #e9ecef;\n    border-color: #adb5bd;\n}\n\n.day-item input[type=\"radio\"]:checked + label:hover {\n    background-color: #0b5ed7;\n    border-color: #0a58ca;\n}\n\n.day-item input[type=\"radio\"]:focus + label {\n    box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.25);\n    outline: none;\n}\n\n.btn-group {\n    display: inline-flex;\n    flex-wrap: wrap;\n    gap: 4px;\n}\n\n.btn-group .btn {\n    flex: 0 0 auto;\n    padding: 0.375rem 0.75rem;\n    border-radius: 0.25rem;\n    line-height: 1.5;\n}\n\n.mb-2 {\n    margin-bottom: 0.75rem;\n}\n\n.form-group {\n    margin-bottom: 1rem;\n}\n\n.form-group label {\n    display: block;\n    margin-bottom: 0.5rem;\n    font-weight: 500;\n}\n\n/* Tabulator height and styling */\n.tabulator {\n    height: 70vh;\n    border: 1px solid #dee2e6;\n    border-radius: 0.375rem;\n}\n\n/* PDS Badge Animation */\n.pds-badge {\n    animation: pulse-red 2s infinite;\n    font-weight: bold;\n}\n\n@keyframes pulse-red {\n    0% { background-color: #dc3545; transform: scale(1); }\n    50% { background-color: #b02a37; transform: scale(1.05); }\n    100% { background-color: #dc3545; transform: scale(1); }\n}"
  },
  {
    "path": "htdocs/nws/wpc_outlook_search/index.js",
    "content": "/* global ol, olSelectLonLat, Tabulator */\nlet marker = null;\nlet outlooksTable = null;\nlet mpdsTable = null; \n\n/**\n * Replace HTML special characters with their entity equivalents\n * @param string val \n * @returns string converted string\n */\nfunction escapeHTML(val) {\n    return val.replace(/&/g, '&amp;')\n              .replace(/</g, '&lt;')\n              .replace(/>/g, '&gt;')\n              .replace(/\"/g, '&quot;')\n              .replace(/'/g, '&#039;');\n}\n\nlet loadingCount = 0;\n\nfunction showLoading() {\n    loadingCount++;\n    if (loadingCount === 1) {\n        // Only show loading on first request to prevent flicker\n        document.getElementById('central-loading').style.display = 'block';\n        document.getElementById('thetabs').classList.add('loading');\n    }\n}\n\nfunction hideLoading() {\n    loadingCount--;\n    if (loadingCount <= 0) {\n        loadingCount = 0;\n        // Small delay to ensure user sees the loading indicator\n        setTimeout(() => {\n            document.getElementById('central-loading').style.display = 'none';\n            document.getElementById('thetabs').classList.remove('loading');\n        }, 100);\n    }\n}\n\nfunction workflow() {\n    const lon = parseFloat(document.getElementById(\"lon\").value);\n    const lat = parseFloat(document.getElementById(\"lat\").value);\n    if (isNaN(lon) || isNaN(lat)) {\n        return;\n    }\n    updateSearchResultsHeader(lon, lat);\n    doOutlook(lon, lat);\n    doMPD(lon, lat);\n}\n\nfunction updateURLParams(params = {}) {\n    const url = new URL(window.location.href);\n    // Update provided parameters\n    Object.entries(params).forEach(([key, value]) => {\n        if (value !== null) {\n            url.searchParams.set(key, value);\n        }\n    });\n    window.history.replaceState({}, '', url);\n}\n\nfunction updateMarkerPosition(lon, lat) {\n    // Round lat/lon to 4 decimal places for URL params\n    const roundedLon = parseFloat(lon.toFixed(4));\n    const roundedLat = parseFloat(lat.toFixed(4));\n    \n    // Update input fields with rounded values\n    document.getElementById(\"lon\").value = roundedLon;\n    document.getElementById(\"lat\").value = roundedLat;\n    \n    updateURLParams({lon: roundedLon, lat: roundedLat});\n    workflow();\n}\n\nfunction buildUI() {\n    document.getElementById(\"manualpt\").addEventListener(\"click\", () => {\n        const la = parseFloat(document.getElementById(\"lat\").value);\n        const lo = parseFloat(document.getElementById(\"lon\").value);\n        marker.setGeometry(new ol.geom.Point(ol.proj.fromLonLat([lo, la])));\n        updateMarkerPosition(lo, la);\n    });\n    document.getElementById('last').addEventListener('change', () => {\n        const last = document.getElementById('last').checked ? '1' : '0';\n        updateURLParams({last});\n        workflow();\n    });\n    document.getElementById('events').addEventListener('change', () => {\n        const events = document.getElementById('events').value;\n        updateURLParams({events});\n        workflow();\n    });\n    document.querySelectorAll('input[type=radio][name=day]').forEach(radio => {\n        radio.addEventListener('change', () => {\n            const day = document.querySelector(\"input[name='day']:checked\").value;\n            updateURLParams({day});\n            workflow();\n        });\n    });\n}\n\n\nfunction updateSearchResultsHeader(lon, lat) {\n    const header = document.getElementById('search-results-header');\n    if (header) {\n        header.textContent = `Results of Point Search (${lat.toFixed(4)}°N, ${lon.toFixed(4)}°E)`;\n    }\n}\n\nfunction doOutlook(lon, lat) {\n    const last = document.getElementById('last').checked ? escapeHTML(document.getElementById('events').value) : '0';\n    const day = escapeHTML(document.querySelector(\"input[name='day']:checked\").value);\n\n    showLoading();\n    const jsonurl = `/json/wpcoutlook.py?lon=${lon}&lat=${lat}&last=${last}&day=${day}`;\n    document.getElementById(\"outlooks_link\").href = jsonurl;\n    const excelurl = `/json/wpcoutlook.py?lon=${lon}&lat=${lat}&last=${last}&day=${day}&fmt=excel`;\n    document.getElementById(\"outlooks_excel\").href = excelurl;\n    const csvurl = `/json/wpcoutlook.py?lon=${lon}&lat=${lat}&last=${last}&day=${day}&fmt=csv`;\n    document.getElementById(\"outlooks_csv\").href = csvurl;\n    \n    fetch(jsonurl)\n        .then(response => response.json())\n        .then(data => {\n            hideLoading();\n            outlooksTable.replaceData(data.outlooks || []);\n        })\n        .catch(() => {\n            hideLoading();\n        });\n}\nfunction doMPD(lon, lat) {\n    showLoading();\n    const jsonurl = `/json/wpcmpd.py?lon=${lon}&lat=${lat}`;\n    document.getElementById(\"mpds_link\").href = jsonurl;\n    const excelurl = `/json/wpcmpd.py?lon=${lon}&lat=${lat}&fmt=excel`;\n    document.getElementById(\"mpds_excel\").href = excelurl;\n    const csvurl = `/json/wpcmpd.py?lon=${lon}&lat=${lat}&fmt=csv`;\n    document.getElementById(\"mpds_csv\").href = csvurl;\n    \n    fetch(jsonurl)\n        .then(response => response.json())\n        .then(data => {\n            hideLoading();\n            mpdsTable.replaceData(data.mpds || []);\n        })\n        .catch(() => {\n            hideLoading();\n        });\n}\n\nfunction restoreCoordinatesFromURL(urlParams) {\n    const lon = parseFloat(urlParams.get('lon'));\n    const lat = parseFloat(urlParams.get('lat'));\n    if (!isNaN(lon) && !isNaN(lat)) {\n        // Update input fields with rounded values\n        document.getElementById(\"lon\").value = lon.toFixed(4);\n        document.getElementById(\"lat\").value = lat.toFixed(4);\n        marker.setGeometry(new ol.geom.Point(ol.proj.fromLonLat([lon, lat])));\n        // Don't call updateMarkerPosition here as it triggers workflow()\n        // The workflow will be called once from readURLParams() if needed\n    }\n}\n\nfunction restoreFormSelectionFromURL(urlParams) {\n    // Set the day selection if provided in URL\n    const day = urlParams.get('day');\n    if (day) {\n        const dayRadio = document.querySelector(`input[name='day'][value='${escapeHTML(day)}']`);\n        if (dayRadio) {\n            dayRadio.checked = true;\n        }\n    }\n    // Set the \"List Most Recent\" checkbox if provided in URL\n    const last = urlParams.get('last');\n    if (last === '1') {\n        document.getElementById('last').checked = true;\n    }\n    // Set the event count if provided in URL\n    const events = urlParams.get('events');\n    if (events) {\n        const eventCount = parseInt(events, 10);\n        if (!isNaN(eventCount) && eventCount >= 1 && eventCount <= 100) {\n            document.getElementById('events').value = eventCount;\n        }\n    }\n    return { day, last };\n}\n\nfunction readURLParams(){\n    // Read the URL parameters\n    const urlParams = new URLSearchParams(window.location.search);\n    restoreCoordinatesFromURL(urlParams);\n    const { day, last } = restoreFormSelectionFromURL(urlParams);\n    \n    // Trigger workflow if we have coordinates and any search parameters\n    const lon = parseFloat(urlParams.get('lon'));\n    const lat = parseFloat(urlParams.get('lat'));\n    const hasValidCoordinates = !isNaN(lon) && !isNaN(lat);\n    \n    if (hasValidCoordinates && (day || last)) {\n        workflow();\n    }\n}\n\nfunction initializeTables() {\n    // Initialize Outlooks table\n    outlooksTable = new Tabulator(\"#outlooks\", {\n        layout: \"fitColumns\",\n        height: \"70vh\",\n        placeholder: \"Click 'Update' or select a point on the map to search for convective outlooks\",\n        columns: [\n            {title: \"Day\", field: \"day\", width: 80},\n            {title: \"Threshold\", field: \"threshold\", width: 120},\n            {title: \"Outlook Issued At (UTC)\", field: \"utc_product_issue\", widthGrow: 1},\n            {title: \"Outlook Begins (UTC)\", field: \"utc_issue\", widthGrow: 1},\n            {title: \"Outlook Expires (UTC)\", field: \"utc_expire\", widthGrow: 1}\n        ]\n    });\n\n    // Initialize mpds table\n    mpdsTable = new Tabulator(\"#mpds\", {\n        layout: \"fitColumns\",\n        height: \"70vh\",\n        placeholder: \"Click 'Update' or select a point on the map to search for mesoscale convective discussions\",\n        columns: [\n            {\n                title: \"Discussion Number\", \n                field: \"product_num\", \n                width: 150,\n                formatter: (cell) => {\n                    const data = cell.getRow().getData();\n                    return `<a href=\"/p.php?pid=${data.product_id}\" target=\"_new\">${data.year} ${data.product_num}</a>`;\n                }\n            },\n            {title: \"UTC Valid\", field: \"utc_issue\", widthGrow: 1},\n            {title: \"UTC Expire\", field: \"utc_expire\", widthGrow: 1},\n            {title: \"Concerning\", field: \"concerning\", widthGrow: 1},\n        ]\n    });\n\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n    initializeTables();\n    buildUI();\n    const res = olSelectLonLat(\"map\", updateMarkerPosition);\n    marker = res.marker;\n\n    readURLParams();\n\n});\n"
  },
  {
    "path": "htdocs/nws/wpc_outlook_search/index.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 166);\nrequire_once \"../../../include/mlib.php\";\nforce_https();\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/iemprop.php\";\n$t = new MyView();\n$OL = \"10.6.1\";\n\n$t->jsextra = <<<EOM\n<script src='/vendor/openlayers/{$OL}/ol.js'></script>\n<script type=\"text/javascript\" src=\"/js/olselect-lonlat.js\"></script>\n<script src=\"https://unpkg.com/tabulator-tables@6.2.1/dist/js/tabulator.min.js\"></script>\n<script type=\"text/javascript\" src=\"index.js?v=10\"></script>\nEOM;\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol.css\" />\n<link href=\"https://unpkg.com/tabulator-tables@6.2.1/dist/css/tabulator_bootstrap5.min.css\" rel=\"stylesheet\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"index.css\" />\nEOM;\n$t->title = \"WPC Excessive Rainfall Outlook + Discussion Search by Point\";\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n  <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Mainpage</a></li>\n  <li class=\"breadcrumb-item active\" aria-current=\"page\">WPC Excessive Rainfall Outlook + Discussion Search by Point</li>\n</ol>\n</nav>\n<p>This application allows you to search an archive of Weather Prediction Center (WPC)\nExcessive Rainfall Outlooks and Mesoscale Precipitation Discussions (MPD)s.\nThis archive is <strong>unofficial</strong> and based on IEM's processing of\nproducts issued by\nthe WPC. Each tab presents buttons that allow for a download of the data in\nExcel or CSV format and a direct link to the JSON service backending the\ntable.</p>\n\n<div class=\"clearfix\"></div>\n\n<div class=\"row\">\n    <div class=\"col-md-4 bg-light p-4 rounded-3 border\">\n        <h3 class=\"mb-3\">Search by Point</h3>\n        \n        <div class=\"mb-4\">\n            <h5 class=\"mb-3\">Manual Coordinate Entry</h5>\n            <div class=\"row g-2\">\n                <div class=\"col-6\">\n                    <label for=\"lat\" class=\"form-label small\">Latitude (°N)</label>\n                    <input type=\"number\" class=\"form-control form-control-sm\" id=\"lat\" placeholder=\"41.5300\" step=\"0.0001\">\n                </div>\n                <div class=\"col-6\">\n                    <label for=\"lon\" class=\"form-label small\">Longitude (°E)</label>\n                    <input type=\"number\" class=\"form-control form-control-sm\" id=\"lon\" placeholder=\"-93.6530\" step=\"0.0001\">\n                </div>\n            </div>\n            <button class=\"btn btn-primary btn-sm mt-2 w-100\" id=\"manualpt\">\n                    <i class=\"bi bi-search\" aria-hidden=\"true\"></i> Update Search\n            </button>\n        </div>\n\n        <div class=\"mb-4\">\n            <h5 class=\"mb-3\">Outlook Search Options</h5>\n            <div class=\"form-check mb-2\">\n                <input type=\"checkbox\" class=\"form-check-input\" id=\"last\" name=\"last\" value=\"1\">\n                <label class=\"form-check-label\" for=\"last\">\n                    List Most Recent \n                    <input type=\"number\" class=\"form-control form-control-sm d-inline-block ms-1\" \n                           id=\"events\" name=\"events\" value=\"1\" min=\"1\" max=\"100\" style=\"width: 60px;\">\n                    Event(s)\n                </label>\n            </div>\n        </div>\n\n        <div class=\"mb-4 outlook-days\">\n            <h5 class=\"mb-3\">Select Outlook Day</h5>\n            <div class=\"day-grid\">\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"day\" value=\"1\" checked id=\"d1\">\n                    <label for=\"d1\">Day 1</label>\n                </div>\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"day\" value=\"2\" id=\"d2\">\n                    <label for=\"d2\">Day 2</label>\n                </div>\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"day\" value=\"3\" id=\"d3\">\n                    <label for=\"d3\">Day 3</label>\n                </div>\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"day\" value=\"4\" id=\"d4\">\n                    <label for=\"d4\">Day 4</label>\n                </div>\n                <div class=\"day-item\">\n                    <input type=\"radio\" name=\"day\" value=\"5\" id=\"d5\">\n                    <label for=\"d5\">Day 5</label>\n                </div>\n            </div>\n        </div>\n\n\n        <div class=\"mb-4\">\n            <h5 class=\"mb-3\">Map Selection</h5>\n            <p class=\"small text-muted mb-2\">Drag the marker to select coordinates:</p>\n            <div id=\"map\" class=\"map border rounded\"\n                 data-lat-input=\"lat\"\n                 data-lon-input=\"lon\"\n                 data-initial-lat=\"41.53\"\n                 data-initial-lon=\"-93.653\"></div>\n        </div>\n    </div>\n    <div class=\"col-md-8\">\n    <h3 id=\"search-results-header\">Results of Point Search</h3>\n    \n    <!-- Central Loading Indicator -->\n    <div id=\"central-loading\" class=\"text-center py-4 mb-3\" style=\"display: none;\">\n        <div class=\"spinner-border text-primary me-2\" role=\"status\">\n            <span class=\"visually-hidden\">Loading...</span>\n        </div>\n        <span class=\"text-muted\">Searching the database, one moment...</span>\n    </div>\n    \n<div id=\"thetabs\">\t\n    <ul class=\"nav nav-tabs\">\n        <li class=\"nav-item\">\n            <a class=\"nav-link active\" href=\"#1a\" data-bs-toggle=\"tab\">Excessive Rainfall Outlooks</a>\n        </li>\n        <li class=\"nav-item\">\n            <a class=\"nav-link\" href=\"#2a\" data-bs-toggle=\"tab\">Mesoscale Precipitation Discussions</a>\n        </li>\n    </ul>\n\n    <div class=\"tab-content clearfix\">\n        <div class=\"tab-pane active\" id=\"1a\">\n\n<p>This archive dates back until <strong>2019</strong>.</p>\n\n<div class=\"float-end\">\n    <a class=\"btn btn-secondary\" href=\"/\" target=\"_blank\" id=\"outlooks_excel\">\n        <i class=\"bi bi-table\" aria-hidden=\"true\"></i> Download as Excel</a>\n    <a class=\"btn btn-secondary\" href=\"/\" target=\"_blank\" id=\"outlooks_csv\">\n        <i class=\"bi bi-table\" aria-hidden=\"true\"></i> Download as CSV</a>\n    <a class=\"btn btn-secondary\" href=\"/\" target=\"_blank\" id=\"outlooks_link\">\n        <i class=\"bi bi-link-45deg\" aria-hidden=\"true\"></i> JSON-P Webservice</a>\n</div>\n\n<table id=\"outlooks\" class=\"table table-bordered table-striped\">\n<caption></caption>\n<thead>\n<tr><th>Day</th><th>Threshold</th><th>Outlook Issued At (UTC)</th><th>Outlook Begins (UTC)</th>\n<th>Outlook Expires (UTC)</th></tr>\n</thead>\n<tbody>\n\n</tbody>\n</table>\n\n</div>\n<div class=\"tab-pane\" id=\"2a\">\n\n<p>This archive dates back until <strong>26 September 2017</strong> and is based\non the MPD polygon included within the text.</p>\n\n<div class=\"float-end\">\n    <a class=\"btn btn-secondary\" href=\"/\" target=\"_blank\" id=\"mpds_excel\">\n        <i class=\"bi bi-table\" aria-hidden=\"true\"></i> Download as Excel</a>\n    <a class=\"btn btn-secondary\" href=\"/\" target=\"_blank\" id=\"mpds_csv\">\n        <i class=\"bi bi-table\" aria-hidden=\"true\"></i> Download as CSV</a>\n    <a class=\"btn btn-secondary\" href=\"/\" target=\"_blank\" id=\"mpds_link\">\n        <i class=\"bi bi-link-45deg\" aria-hidden=\"true\"></i> JSON-P Webservice</a>\n</div>\n\n\n<table id=\"mpds\" class=\"table table-bordered table-striped\">\n<caption></caption>\n<thead>\n<tr><th>Discussion Number</th>\n<th>UTC Valid</th>\n<th>UTC Expire</th>\n<th>Concerning</th>\n</tr>\n</thead>\n<tbody>\n\n</tbody>\n</table>\n        </div><!-- ./2a -->\n</div><!-- ./thetabs -->\n\n    </div><!-- ./col-md-8 -->\n</div><!-- ./row -->\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/ogc/arcgis_wtms.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n<!-- Credit to Derek Swingley http://jsfiddle.net/MR76J/ -->\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=7\">\n    <!--The viewport meta tag is used to improve the presentation and behavior of the samples \n      on iOS devices-->\n    <meta name=\"viewport\" content=\"initial-scale=1, maximum-scale=1,user-scalable=no\">\n    <title>Nexrad from Iowa Environmental Mesonet</title>\n    <link rel=\"stylesheet\" href=\"//js.arcgis.com/3.3/js/esri/css/esri.css\">\n    <style>\n      html, body, #map {\n        height: 100%; width: 100%; margin: 0; padding: 0; \n      }\n    </style>\n\n    <script src=\"//js.arcgis.com/3.3/\"></script>\n    <script>\n      var map;\n    \n      require([\"esri/map\", \"esri/layers/WebTiledLayer\"],\n        function() {\n          map = new esri.Map(\"map\", {\n            basemap: \"gray\",\n            center: [ -100, 40 ],\n            zoom: 4 \n          });\n          var subs = [ \"mesonet\", \"mesonet1\", \"mesonet2\", \"mesonet3\" ];\n          var nexrad = new esri.layers.WebTiledLayer(\"http://${subDomain}.agron.iastate.edu/cache/tile.py/1.0.0/nexrad-n0q/${level}/${col}/${row}.png\", {\n            id: \"nexrad\",\n            subDomains: subs\n          });\n          map.addLayer(nexrad);\n        }\n      );\n    </script>\n  </head>\n  <body>\n    <div id=\"map\"></div>\n  </body>\n</html>\n\n"
  },
  {
    "path": "htdocs/ogc/googlemaps_v3.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Google Maps JavaScript API v3 Example: Map Simple</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n    <meta charset=\"utf-8\">\n    <style>\n      html, body, #map_canvas {\n        margin: 0;\n        padding: 0;\n        height: 100%;\n      }\n    </style>\n    <script src=\"https://maps.googleapis.com/maps/api/js?key=AIzaSyBylJPmC3W8b67nsiwN5gJP7Kkm2zwRrA4\"></script>\n    <script>\n      var map;\n      function initialize() {\n        var mapOptions = {\n          zoom: 8,\n          center: new google.maps.LatLng(42.5, -95.5),\n          mapTypeId: google.maps.MapTypeId.ROADMAP\n        };\n        map = new google.maps.Map(document.getElementById('map_canvas'),\n            mapOptions);\n        \n        var tileNEX = new google.maps.ImageMapType({\n            getTileUrl: function(tile, zoom) {\n                return \"https://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/nexrad-n0q/\" + zoom + \"/\" + tile.x + \"/\" + tile.y +\".png?\"+ (new Date()).getTime(); \n            },\n            tileSize: new google.maps.Size(256, 256),\n            opacity:0.60,\n            name : 'NEXRAD',\n            isPng: true\n        });\n\n        \n        var goes = new google.maps.ImageMapType({\n            getTileUrl: function(tile, zoom) {\n                return \"https://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/goes-east-vis-1km/\" + zoom + \"/\" + tile.x + \"/\" + tile.y +\".png?\"+ (new Date()).getTime(); \n            },\n            tileSize: new google.maps.Size(256, 256),\n            opacity:0.60,\n            name : 'GOES East Vis',\n            isPng: true\n        });\n\n        map.overlayMapTypes.push(null); // create empty overlay entry\n        map.overlayMapTypes.setAt(\"0\",goes);\n        map.overlayMapTypes.push(null); // create empty overlay entry\n        map.overlayMapTypes.setAt(\"1\",tileNEX);\n\n        \n      }\n\n      google.maps.event.addDomListener(window, 'load', initialize);\n    </script>\n  </head>\n  <body>\n    <div id=\"map_canvas\"></div>\n  </body>\n</html>"
  },
  {
    "path": "htdocs/ogc/index.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 35);\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Open GIS Consortium Web Services\";\n$t->content = <<<EOM\n\n<h3>OGC Web Services</h3>\n\n<p>The <a href=\"http://www.opengeospatial.org\">Open Geospatial Consortium, Inc</a> (OGC)\n        is a standards organization leading the development of geospatial and\n        location based services.  The OGC has adopted a number of specifications,\n        some of which are used by the IEM.  This page lists these services.</p>\n\n<h4>Some items of note:</h4>\n<ol>\n <li>Not all TMS services are documented here as some of them are not directly\n usuable without loading up parameters into the layer name.</li>\n <li>All of these services are available via https:// connections.</li>\n <li>There are four DNS aliases for the website to allow web browers to make\n    many simultaneous requests against these services.<br />\n  <ol>\n    <li>mesonet1.agron.iastate.edu</li>\n    <li>mesonet2.agron.iastate.edu</li>\n    <li>mesonet3.agron.iastate.edu</li>\n    <li>www.mesonet.agron.iastate.edu</li>\n   </ol>\n   </li>\n</ol>\n\n<h3>Tile Map Service (TMS)</h3>\n\n<p>The IEM has two base endpoints for its TMS services. They are partitioned\nby their cache header settings.</p>\n\n<table class=\"table table-striped table-sm\">\n<thead><tr><th>Endpoint</th><th>Cache Header</th></tr></thead>\n<tbody>\n<tr><td><a href=\"/c/tile.py/1.0.0\">/c/tile.py/1.0.0</a></td><td>14 days</td></tr>\n<tr><td><a href=\"/cache/tile.py/1.0.0\">/cache/tile.py/1.0.0</a></td><td>5 minutes</td></tr>\n</tbody>\n</table>\n\n<p>The IEM also runs a customized version of <a href=\"https://github.com/akrherz/TileCache\">TileCache</a>\nthat allows some argument loading into the service layer name.  For example,\nincluding timestamp information in the layer name.</p>\n\n<p>Here are working examples using IEM TMS services within various Javascript\nlibraries.</p>\n\n<div class=\"row\">\n<div class=\"col-md-3\">\n<div class=\"card card-body\">\n<h4>Bing Maps</h4>\n\n<p>The Microsoft Bing Maps group kindly provided these two examples.</p>\n\n<p><strong>Single Tile Layer:</strong>\n<a href=\"https://www.bing.com/api/maps/sdk/mapcontrol/isdk#tileLayerPublicXYZoom+JS\">example</a></p>\n\n<p><strong>Animated Tile Layer:</strong>\n<a href=\"https://www.bing.com/api/maps/sdk/mapcontrol/isdk#weatherRadarMap+JS\">example</a></p>\n</div>\n</div>\n\n<div class=\"col-md-3\">\n<div class=\"card card-body\">\n<h4>ESRI JS API</h4>\n<p>Here is an <a href=\"arcgis_wtms.html\">example</a> using the ESRI JS API. This\nwas contributed by Derek Swingley.\n</div>\n</div>\n\n<div class=\"col-md-3\">\n<div class=\"card card-body\">\n<h4>Google Maps</h4>\n<p>Here is <a href=\"googlemaps_v3.html\">an example for Google Maps v3</a>.\n</div>\n</div>\n\n<div class=\"col-md-3\">\n<div class=\"card card-body\">\n<h4>OpenLayers</h4>\n<p><a href=\"openlayers_example.html\">Example</a> for OpenLayers v2.</p>\n\n<p><a href=\"ol3_example.html\">Example</a> for OpenLayers v3 and higher.</p>\n</div>\n</div>\n\n</div><!-- ./row -->\n\n<div class=\"card border-primary\">\n<div class=\"card-header\">Tile Map Services at both <code>/c/tile.py/1.0.0/</code>\nand <code>/cache/tile.py/1.0.0/</code></div>\n<div class=\"card-body\">\n\n<p><strong>Why both?</strong> If you are using stable layer names (ie with a\numabiguous timestamp), you likely want to use the <code>/c/</code> service so to\nhave better client side caching.</p>\n\n<table class=\"table table-striped table-sm\">\n<thead class=\"sticky\">\n<tr><th>Layer Name</th><th>Description</th><th>Legend</th></tr>\n</thead>\n\n<tbody>\n\n<tr><td>Template: ridge::XXX-XXX-0</td><td>Latest individual RADAR XXX data for product XXX\n<a href=\"/GIS/ridge.phtml\">more info</a></td></tr>\n<tr><td>Template: ridge::XXX-XXX-YYYYMMDDHHMI</td><td>Archived individual RADAR XXX data for product XXX\n<a href=\"/GIS/ridge.phtml\">more info</a></td></tr>\n\n</tbody>\n</table>\n\n</div><!-- ./card-body -->\n</div><!-- ./card -->\n\n<div class=\"card border-primary\">\n<div class=\"card-header\">Tile Map Services only at <code>/c/tile.py/1.0.0/</code></div>\n<div class=\"card-body\">\n\n<table class=\"table table-striped table-sm\">\n<thead class=\"sticky\">\n<tr><th>Layer Name</th><th>Description</th><th>Legend</th></tr>\n</thead>\n\n<tbody>\n<tr><td>depmask</td><td><a href=\"https://dailyerosion.org/\">Daily Erosion Project</a> mask\nfor HUC12s that are not modelled.</td><td></td></tr>\n<tr><td>uscounties</td><td>US County Borders</td><td></td></tr>\n<tr><td>usstates</td><td>US State Borders</td><td></td></tr>\n</tbody>\n</table>\n\n</div><!-- ./card-body -->\n</div><!-- ./card -->\n\n<div class=\"card border-primary\">\n<div class=\"card-header\">Tile Map Services only at <code>/cache/tile.py/1.0.0/</code></div>\n<div class=\"card-body\">\n\n<table class=\"table table-striped table-sm\">\n<thead class=\"sticky\">\n<tr><th>Layer Name</th><th>Description</th><th>Legend</th></tr>\n</thead>\n\n<tbody>\n\n<tr class=\"info\"><th colspan=\"3\">GOES Satellite Imagery</th></tr>\n\n<tr>\n<td>goes-vis-1km\n<br />goes-ir-4km\n<br />goes-wv-4km\n<br />conus-goes-vis-1km\n<br />conus-goes-ir-4km\n<br />conus-goes-wv-4km</td>\n<td>\nThese are legacy service names that all pointing at the same GOES East products.\nChannel 02 for visible, channel 13 for IR, and channel 09 for WV.  The conus\nhere is poorly named as it is only just GOES east. These layers update in\nnear realtime and you can find <a href=\"/data/gis/images/GOES/conus/channel02/GOES-16_C02.json\">JSON metadata</a>\nfiles for each channel that denote the valid time.\n</td>\n<td><a href=\"/GIS/goes.phtml\">more info</a></td>\n</tr>\n\n</tr>\n<tr>\n<td>Template: goes_<i>bird</i>_<i>sector</i>_ch<i>channel</i><br />\nExample: goes_east_conus_ch02\n</td>\n<td>Current GOES R/S Imagery. Where: <br />\n <i>bird</i> is \"east\" or \"west\"<br />\n <i>sector</i> is \"fulldisk\", \"alaska\" (west only), \"conus\",\n \"mesoscale-1\", \"mesoscale-2\", \"puertorico\" (east only)<br />\n <i>channel</i> is two-digit, zero padded 01-16</td>\n <td><a href=\"/GIS/goes.phtml\">more info</a></td>\n </tr>\n\n<tr class=\"info\"><th colspan=\"3\">HRRR Weather Forecast Model</th></tr>\n\n<tr><td>Template: hrrr::REFD-FXXXX-0</td>\n<td>Latest HRRR Reflectivity Forecasts, FXXXX is the forecast minute\n<a href=\"/GIS/model.phtml\">more info</a></td></tr>\n<tr><td>Template: hrrr::REFD-FXXXX-YYYYMMDDHHMI</td>\n<td>Archived HRRR Reflectivity Forecasts, FXXXX is the forecast minute\n<a href=\"/GIS/model.phtml\">more info</a></td></tr>\n\n<tr><td>Template: hrrr::REFP-FXXXX-0</td>\n<td>Latest HRRR Reflectivity (with Precip Type) Forecasts, FXXXX is the forecast minute\n<a href=\"/GIS/model.phtml\">more info</a></td></tr>\n<tr><td>Template: hrrr::REFP-FXXXX-YYYYMMDDHHMI</td>\n<td>Archived HRRR Reflectivity (with Precip Type) Forecasts, FXXXX is the forecast minute\n<a href=\"/GIS/model.phtml\">more info</a></td></tr>\n\n\n<tr class=\"info\"><th colspan=\"3\">NEXRAD Mosaics</th></tr>\n\n<tr><td>nexrad-n0q</td><td>NEXRAD Base Reflectivity current</td></tr>\n<tr><td>nexrad-n0q-mXXm</td><td>... where <code>XX</code> is a zero padded number modulo 5 between\n05 and 55 minutes old.</td></tr>\n\n<tr><td>nexrad-eet</td><td>NEXRAD Echo Tops EET current</td></tr>\n<tr><td>nexrad-eet-mXXm</td><td>... where <code>XX</code> is a zero padded number module 5 between\n05 and 55 minutes old.</td></tr>\n\n<tr class=\"info\"><th colspan=\"3\">MRMS Products</th></tr>\n\n<tr><td>q2-n1p</td>\n  <td>MRMS 1 Hour Precipitation</td>\n  <td><img src=\"/images/mrms_q3_p1h.png\"></td>\n  </tr>\n<tr><td>q2-p24h</td>\n  <td>MRMS 24 Hour Precipitation</td>\n  <td><img src=\"/images/mrms_q3_p24h.png\"></td>\n  </tr>\n<tr><td>q2-p48h</td>\n  <td>MRMS 48 Hour Precipitation</td>\n  <td><img src=\"/images/mrms_q3_p24h.png\"></td>\n  </tr>\n<tr><td>q2-p72h</td>\n  <td>MRMS 72 Hour Precipitation</td>\n  <td><img src=\"/images/mrms_q3_p24h.png\"></td>\n  </tr>\n\n<tr>\n  <td>q2-hsr</td>\n  <td>MRMS Hybrid-Scan Reflectivity Composite (SeamlessHSR).</td>\n  <td><img src=\"/images/mrms_lcref.png\"></td>\n  </tr>\n\n<tr>\n  <td>mrms::a2m-YYYYMMDDHHMI</td>\n  <td>Archived MRMS PrecipRate product. An archived raster should be available\n  for each minute modulo 2 since early 2015.</td>\n  <td><img src=\"/images/mrms_a2m.png\"></td>\n  </tr>\n\n<tr>\n  <td>mrms::lcref-YYYYMMDDHHMI</td>\n  <td>Archived MRMS SeamlessHSR product. An archived raster should be available\n  for each minute modulo 2 since early 2015.</td>\n  <td><img src=\"/images/mrms_lcref.png\"></td>\n  </tr>\n\n<tr>\n  <td>mrms::p{1,24,48,72}h-YYYYMMDDHHMI</td>\n  <td>Archived MRMS precipitation estimate over given backwards looking\n  hourly interval. Note that the 1 hourly value is not zero padded with the\n  URI.  Rasters are only available at the top of each hour since early 2015!</td>\n  <td>See Above for Ramps</td>\n  </tr>\n\n\n</tbody>\n</table>\n\n</div><!-- ./card-body -->\n</div><!-- ./card -->\n\n<h4>Web Map Service (WMS)</h4>\n\n<p>A WMS defines a protocol for web based retrieval of geodata in raster map format. If you are interested in the capabilities XML file, simply add \"VERSION=1.1.1&REQUEST=GetCapabilities&SERVICE=WMS&\" to the URI string.</p>\n\n<div>\n<strong>Services</strong>\n<ul>\n<li>Iowa Precipitation\n <br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/iowa/rainfall.cgi?</code></li>\n<li>MRMS Q3 Precipitation (Missing data is grey)\n <br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/us/mrms.cgi?</code>\n <br /><i>Layer:</i> <strong>mrms_p72h</strong> 72 Hour Precipitation\n <br /><i>Layer:</i> <strong>mrms_p48h</strong> 48 Hour Precipitation\n <br /><i>Layer:</i> <strong>mrms_p24h</strong> 24 Hour Precipitation\n <br /><i>Layer:</i> <strong>mrms_p1h</strong> One Hour Precipitation\n </li>\n<li>MRMS Q3 Precipitation (Missing data is transparent)\n <br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/us/mrms_nn.cgi?</code>\n <br /><i>Layer:</i> <strong>mrms_p72h</strong> 72 Hour Precipitation\n <br /><i>Layer:</i> <strong>mrms_p48h</strong> 48 Hour Precipitation\n <br /><i>Layer:</i> <strong>mrms_p24h</strong> 24 Hour Precipitation\n <br /><i>Layer:</i> <strong>mrms_p1h</strong> One Hour Precipitation\n </li>\n</ul>\n\n<hr />\n<div class=\"row\">\n<div class=\"col-md-6\">\n<ul>\n<li>GOES East Imagery (All Sectors, All 16 Channels)\n<br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/goes_east.cgi?</code>\n<br /><i>Layer Template:</i> <strong>sector_chchannel</strong> ie conus_ch02</li>\n\n<li>GOES West Imagery (All Sectors, All 16 Channels)\n<br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/goes_west.cgi?</code>\n<br /><i>Layer Template:</i> <strong>sector_chchannel</strong></li>\n</ul>\n</div>\n<div class=\"col-md-3\">\n<p><strong>Channel 1</strong>\n<br /><img src=\"/images/goes_c01.png\" alt=\"Channel 1 Color Ramp\"></p>\n<p><strong>Channel 2</strong>\n<br /><img src=\"/images/goes_c02.png\" alt=\"Channel 2 Color Ramp\"></p>\n<p><strong>Channel 3</strong>\n<br /><img src=\"/images/goes_c03.png\" alt=\"Channel 3 Color Ramp\"></p>\n<p><strong>Channel 4</strong>\n<br /><img src=\"/images/goes_c04.png\" alt=\"Channel 4 Color Ramp\"></p>\n<p><strong>Channel 5</strong>\n<br /><img src=\"/images/goes_c05.png\" alt=\"Channel 5 Color Ramp\"></p>\n<p><strong>Channel 6</strong>\n<br /><img src=\"/images/goes_c06.png\" alt=\"Channel 6 Color Ramp\"></p>\n<p><strong>Channel 7</strong>\n<br /><img src=\"/images/goes_c07.png\" alt=\"Channel 7 Color Ramp\"></p>\n<p><strong>Channel 8</strong>\n<br /><img src=\"/images/goes_c08.png\" alt=\"Channel 8 Color Ramp\"></p>\n</div>\n<div class=\"col-md-3\">\n<p><strong>Channel 9</strong>\n<br /><img src=\"/images/goes_c09.png\" alt=\"Channel 9 Color Ramp\"></p>\n<p><strong>Channel 10</strong>\n<br /><img src=\"/images/goes_c10.png\" alt=\"Channel 10 Color Ramp\"></p>\n<p><strong>Channel 11</strong>\n<br /><img src=\"/images/goes_c11.png\" alt=\"Channel 11 Color Ramp\"></p>\n<p><strong>Channel 12</strong>\n<br /><img src=\"/images/goes_c12.png\" alt=\"Channel 12 Color Ramp\"></p>\n<p><strong>Channel 13</strong>\n<br /><img src=\"/images/goes_c13.png\" alt=\"Channel 13 Color Ramp\"></p>\n<p><strong>Channel 14</strong>\n<br /><img src=\"/images/goes_c14.png\" alt=\"Channel 14 Color Ramp\"></p>\n<p><strong>Channel 15</strong>\n<br /><img src=\"/images/goes_c15.png\" alt=\"Channel 15 Color Ramp\"></p>\n<p><strong>Channel 16</strong>\n<br /><img src=\"/images/goes_c16.png\" alt=\"Channel 16 Color Ramp\"></p>\n\n</div>\n</div>\n<hr />\n<ul>\n<li>CONUS NEXRAD Base Reflectivity (n0q)\n <br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/nexrad/n0q.cgi?</code></li>\n<li>Historical CONUS NEXRAD Base Reflectivity [WMS-T] (n0q)\n <br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/nexrad/n0q-t.cgi?</code></li>\n <li>Historical CONUS NEXRAD Base Reflectivity [WMS-T] (n0r)\n <br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/nexrad/n0r-t.cgi?</code></li>\n<li>CONUS NEXRAD 8-bit Net Echo Tops (eet)\n <br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/nexrad/eet.cgi?</code></li>\n<li>CONUS NEXRAD 1 Hour Precipitation (daa)\n <br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/nexrad/daa.cgi?</code></li>\n<li>CONUS NEXRAD Net Echo Tops (net)\n <br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/nexrad/net.cgi?</code></li>\n<li>CONUS NEXRAD Storm Total Precipitation (dta)\n <br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/nexrad/dta.cgi?</code></li>\n<li>RIDGE Single NEXRAD Imagery\n <br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/nexrad/ridge.cgi?sector=XXX&amp;prod=XXX&amp;</code>\n  <br />You also need to provide two CGI variables for the NEXRAD identifier\n  and level III product you want. For example, sector=DMX&amp;prod=N0Q\n  <br />\n  <br /><i>Layer:</i> <strong>single</strong> Most recent image for the given\n        RADAR identifier and Level III product.  A simple JSON metadata file\n        exists for each RADAR and Level III product combination, for example\n        <a href=\"/data/gis/images/4326/ridge/DMX/N0Q_0.json\">DMX N0Q</a>.\n  <br />\n  <br /><i>Layer:</i> <strong>single-archive</strong> This allows request of\n        a specific volume scan time from IEM's archive of imagery.  You need\n        to specify the prod and sector like with the \"single\" layer, but also\n        need to include a year, month, day and time.  All of these values are\n        in UTC.  Here's an <a href=\"{$EXTERNAL_BASEURL}/cgi-bin/wms/nexrad/ridge.cgi?service=wms&version=1.1.1&request=GetMap&format=png&TRANSPARENT=TRUE&bgcolor=0xCCCCFE&BBOX=-14215828.6745634,5401834.631799334,-13166501.150410566,6006604.399507464&SRS=EPSG:3857&width=1716&height=989&sector=RTX&prod=N0Q&layers=single-archive&year=2015&month=01&day=27&time=2303\">example request</a>\n        that gets NEXRAD RTX N0Q product for 27 Jan 2015 at 23:03 UTC.  You\n        must know the volume scan times prior to making the request.  There\n        are <a href=\"/json/\">JSON</a> services that can help you out.\n        Unfortunately, this service <strong>does not support WMS-T</strong>\n        due to complications with how I serve this information out, sorry.\n </li>\n\n <hr />\n <li>NWS Current Warnings\n <br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/us/wwa.cgi?</code>\n</li>\n<li>Iowa Rainfall Estimates\n <br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/iowa/rainfall.cgi?</code></li>\n<li>Iowa Winter Road Conditions\n <br /><code>{$EXTERNAL_BASEURL}/cgi-bin/wms/iowa/roadcond.cgi?</code>\n <br /><i>Layer:</i> <strong>roadcond-noninterstate</strong> Non Interstate Road Conditions\n <br /><i>Layer:</i> <strong>roadcond-interstate</strong> Interstate Road Conditions\n</li>\n\n\n</ul>\n</div>\n\n<h4>Web Feature Service (WFS)</h4>\n\n<p>A WFS is a service that provides geodata as simple features in Geography Markup Language (GML).</p>\n\n<div>\n<strong>Services</strong>\n<ul>\n\n<!-- No worky at the moment\n<li>Iowa Rainfall Estimates\n <br /><code>{$EXTERNAL_BASEURL}/wfs/rainfall.php?</code></li>\n-->\n\n<li>National Weather Service Warnings Current\n <br /><code>{$EXTERNAL_BASEURL}/wfs/ww.php?</code></li>\n\n<li>National Weather Service Warnings Archive For UTC Date (since 11 Jul 2002)\n <br /><code>{$EXTERNAL_BASEURL}/wfs/ww.php?date=YYYY-MM-DD&amp;</code></li>\n\n<li>National Weather Service Warnings Archive At Given UTC Time(since 11 Jul 2002)\n <br /><code>{$EXTERNAL_BASEURL}/wfs/ww.php?date=YYYY-MM-DD&amp;time=HH:MI&amp;</code></li>\n\n\n</ul>\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/ogc/ol3_example.html",
    "content": "<html>\n<head>\n  <title>IEM TMS + OpenLayers Example</title>\n  <link type=\"text/css\" href=\"/vendor/openlayers/10.6.1/ol.css\" rel=\"stylesheet\" />\n  <link type=\"text/css\" href=\"/vendor/openlayers/10.6.1/ol-layerswitcher.css\" rel=\"stylesheet\" />\n  <script src=\"/vendor/openlayers/10.6.1/ol.js\"></script>\n  <script src=\"/vendor/openlayers/10.6.1/ol-layerswitcher.js\"></script>\n\n<script type=\"text/javascript\">\nvar map;\nvar n0q;\n\nfunction layerChanged(sel){\n    const title = sel.options[sel.selectedIndex].text;\n    const layer = sel.options[sel.selectedIndex].value;\n    const lyr = new ol.layer.Tile({\n        title: title,\n        source: new ol.source.XYZ({\n                url : layer+'/{z}/{x}/{y}.png'\n        })\n    });\n    map.getLayers().push(lyr);\n}\n\n/*\n * You need to wrap your DOM manipulators into a function that is called after\n * the DOM is rendered!  Notice the onload=\"\" attribute to the body tag below\n */\nfunction init(){\n    // Initially the layername is set to some random timestamp, which is\n    // layer updated in refresher()\n    n0q = new ol.layer.Tile({\n        title: 'NEXRAD Base Reflectivity',\n        source: new ol.source.XYZ({\n                url : '/cache/tile.py/1.0.0/ridge::USCOMP-N0Q-201506172005/{z}/{x}/{y}.png'\n        })\n    });\n    map = new ol.Map({\n        target: 'map',\n        layers: [new ol.layer.Tile({\n            title: 'OpenStreetMap',\n            visible: true,\n            source: new ol.source.OSM()\n        }), new ol.layer.Tile({\n            title: 'GOES East CONUS IR Satellite',\n            visible: false,\n            source: new ol.source.XYZ({\n                    url : '/cache/tile.py/1.0.0/goes_east_conus_ch13/{z}/{x}/{y}.png'\n            })\n           }), new ol.layer.Tile({\n            title: 'GOES East FullDisk IR Satellite',\n            visible: false,\n            source: new ol.source.XYZ({\n                    url : '/cache/tile.py/1.0.0/goes_east_fulldisk_ch13/{z}/{x}/{y}.png'\n            })\n           }), n0q  \n        ],\n        view: new ol.View({\n            projection: 'EPSG:3857',\n            center: [-10575351, 5160979],\n            zoom: 3\n        })\n    });\n\n    var layerSwitcher = new ol.control.LayerSwitcher();\n    map.addControl(layerSwitcher);\n    \n    // Query an IEM JSON service to get the latest timestamps for the TMSs\n    function refresher(){\n        fetch('/json/tms.json')\n            .then(response => {\n                if (!response.ok) throw new Error('Network response was not ok');\n                return response.json();\n            })\n            .then(data => {\n                if (data.services && Array.isArray(data.services)) {\n                    data.services.forEach(function(val){\n                        if (val.id == 'ridge_uscomp_n0q'){\n                            var dt = new Date(val.utc_valid);\n                            n0q.set('title', \"NEXRAD N0Q @\"\n                                + (\"0\"+dt.getUTCHours()).slice(-2)\n                                + (\"0\"+dt.getUTCMinutes()).slice(-2)\n                                + \" UTC\");\n                            n0q.setSource(new ol.source.XYZ({\n                                url : '/cache/tile.py/1.0.0/'+val.layername+'/{z}/{x}/{y}.png'\n                            }));\n                        }\n                    });\n                }\n            })\n            .catch(error => {\n                console.error('Error fetching /json/tms.json:', error);\n            });\n    }\n    refresher();\n    window.setInterval(function(){\n        refresher();\n    }, 5*60000);\n\n}\n</script>\n</head>\n<body onload=\"init()\">\n\n<!-- a simple pull down to select a TMS layer to add to the map -->\n<form>\n<strong>Choose a Layer:</strong>\n<select id=\"layer\" onchange=\"layerChanged(this);\">\n<option value=\"/c/tile.py/1.0.0/uscounties\">uscounties (US County Borders)</option>\n<option value=\"/c/tile.py/1.0.0/depmask\">depmap (Daily Erosion Project Mask)</option>\n</select>\n</form>\n\n<div style=\"width:100%; height:90%\" id=\"map\"></div>\n\n</body>\n</html>\n"
  },
  {
    "path": "htdocs/ogc/openlayers_example.html",
    "content": "<html>\n<head>\n  <title>IEM TMS + OpenLayers Example</title>\n  <script src=\"/vendor/openlayers/2.13.1/OpenLayers.js\"></script> \n  <script src=\"https://maps.google.com/maps/api/js?key=AIzaSyBylJPmC3W8b67nsiwN5gJP7Kkm2zwRrA4\"></script> \n\n<script type=\"text/javascript\">\nvar map;\nvar n0q;\n\n/*\n * You need to wrap your DOM manipulators into a function that is called after\n * the DOM is rendered!  Notice the onload=\"\" attribute to the body tag below\n */\nfunction init(){\n    var maxExtent = new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508),\n        restrictedExtent = maxExtent.clone(),\n        maxResolution = 156543.0339;\n    \n    var options = {\n        projection: new OpenLayers.Projection(\"EPSG:3857\"),\n        displayProjection: new OpenLayers.Projection(\"EPSG:4326\"),\n        units: \"m\",\n        numZoomLevels: 18,\n        maxResolution: maxResolution,\n        maxExtent: maxExtent,\n        restrictedExtent: restrictedExtent\n    };\n    map = new OpenLayers.Map('map', options);\n\n    // create Google Mercator layers\n    var gmap = new OpenLayers.Layer.Google(\n        \"Google Streets\",\n        {sphericalMercator: true}\n    );\n    \n    function get_my_url_static (bounds) {\n        var res = this.map.getResolution();\n        var x = Math.round ((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));\n        var y = Math.round ((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));\n        var z = this.map.getZoom();\n\n        var path = z + \"/\" + x + \"/\" + y + \".\" + this.type;\n        var url = this.url;\n        if (url instanceof Array) {\n            url = this.selectUrl(path, url);\n        }\n        return url + this.service +\"/\"+ this.layername +\"/\"+ path;\n\n}\n    function get_my_url (bounds) {\n            var res = this.map.getResolution();\n            var x = Math.round ((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));\n            var y = Math.round ((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));\n            var z = this.map.getZoom();\n\n            var path = z + \"/\" + x + \"/\" + y + \".\" + this.type +\"?\"+ parseInt(Math.random()*9999);\n            var url = this.url;\n            if (url instanceof Array) {\n                url = this.selectUrl(path, url);\n            }\n            return url + this.service +\"/\"+ this.layername +\"/\"+ path;\n\n    }\n    n0q = new OpenLayers.Layer.TMS(\n                'NEXRAD Base Reflect',\n                'https://mesonet.agron.iastate.edu/c/tile.py/',\n                // Find more layer names here: https://mesonet.agron.iastate.edu/ogc/\n                {layername      : 'ridge::USCOMP-N0Q-0',\n                service         : '1.0.0',\n                type            : 'png',\n                visibility      : false,\n                getURL          : get_my_url_static,\n                isBaseLayer     : false}\n    );\n    var irsat = new OpenLayers.Layer.TMS(\n            'GOES East IR Satellite',\n            'https://mesonet.agron.iastate.edu/cache/tile.py/',\n            {layername      : 'goes-east-ir-4km',\n            service         : '1.0.0',\n            type            : 'png',\n            visibility      : false,\n            getURL          : get_my_url,\n            isBaseLayer     : false}\n    );\n    var vissat = new OpenLayers.Layer.TMS(\n            'GOES East Vis Satellite',\n            'https://mesonet.agron.iastate.edu/cache/tile.py/',\n            {layername      : 'goes-east-vis-1km',\n            service         : '1.0.0',\n            type            : 'png',\n            visibility      : false,\n            getURL          : get_my_url,\n            isBaseLayer     : false}\n    );\n    var aksat = new OpenLayers.Layer.TMS(\n            'Alaska Vis Satellite',\n            'https://mesonet.agron.iastate.edu/cache/tile.py/',\n            {layername      : 'alaska-vis',\n            service         : '1.0.0',\n            type            : 'png',\n            visibility      : false,\n            getURL          : get_my_url,\n            isBaseLayer     : false}\n    );\n    \n    var states = new OpenLayers.Layer.TMS(\n            'US State Borders',\n            'https://mesonet.agron.iastate.edu/c/tile.py/',\n            {layername      : 'usstates',\n            service         : '1.0.0',\n            type            : 'png',\n            visibility      : false,\n            getURL          : get_my_url_static,\n            isBaseLayer     : false}\n    );\n    \n    var wwa = new OpenLayers.Layer.WMS(\n            \"WWA\",\n            \"https://mesonet.agron.iastate.edu/cgi-bin/wms/us/wwa.cgi?\",\n            {layers: \"warnings_c\", transparent: \"TRUE\", format: 'image/png'},\n            {isBaseLayer: false, buffer:0, singleTile: false,\n             opacity: 0.5, visibility: false}\n    );\n    \n    map.addLayers([gmap, irsat, vissat, aksat, states, n0q, wwa]);\n    var ls = new OpenLayers.Control.LayerSwitcher();\n    map.addControl(ls);\n    ls.maximizeControl();\n    map.addControl(new OpenLayers.Control.MousePosition());\n    if (!map.getCenter()){ map.zoomToMaxExtent(); }\n    \n    function refresher(){\n        //console.log(\"call refresher()\");\n        OpenLayers.Request.GET({\n            url: '/json/tms.json',\n            success: processData\n          });\n           \n          function processData( data ) {\n            var json = new OpenLayers.Format.JSON().read( data.responseText );\n\n            for (var i=0; i < json.services.length; i++){\n                var s = json.services[i];\n                if (s.id == 'ridge_uscomp_n0q'){\n                    var valid = new Date(s.utc_valid);\n                    n0q.setName(\"NEXRAD N0Q @\"\n                        + (\"0\"+valid.getUTCHours()).slice(-2)\n                        + (\"0\"+valid.getUTCMinutes()).slice(-2)\n                        + \" UTC\");\n                    n0q.layername = s.layername;\n                    n0q.setVisibility(true);\n                }\n            }\n            n0q.redraw();\n\n          }\n    }\n    refresher();\n    window.setInterval(function(){\n        refresher();\n    }, 5*60000);\n    \n}\n</script>\n</head>\n<body onload=\"init()\">\n    \n<div style=\"width:100%; height:100%\" id=\"map\"></div>\n    \n</body>\n</html>\n"
  },
  {
    "path": "htdocs/one/README.md",
    "content": "# IEM One\n\nUpstream [repo](https://github.com/akrherz/iemone).\n"
  },
  {
    "path": "htdocs/onsite/birthday/index.php",
    "content": "<?php  \nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n  $t->title = \"Birthday Weather\";\nrequire_once \"../../../include/forms.php\";\n\n$startYear = get_int404('startYear', 1951);\n\n$cselect = networkSelect(\"IACLIMATE\", \"IA0200\", Array(), \"city\");\n$mselect = monthSelect(\"1\", \"month\");\n$dselect = daySelect(\"1\", \"day\");\n\n$t->content = <<<EOM\n<h3>The Weather on your Birthday!!</h3>\n<BR>\n\nIf you were born in Iowa, you can fill out the form below and discover the weather\nconditions at a location near to you.  Just follow the instructions below.\n\n\n<BR><BR>\n\n<form method=\"GET\" action=\"/cgi-bin/onsite/birthday/getweather.py\">\n\n<p><H3>1. Select the city nearest to you:</H3><p>\n{$cselect}\n\n<p><H3>2. Enter your Birthdate:</H3><p>\n\n<table><TR><TH>Year:</TH><TH>Month:</TH><TH>Day:</TH></TR>\n<TR>\n<TD><INPUT type=\"TEXT\" name=\"year\" size=\"5\" MAXLENGTH=\"4\" value=\"1951\"></TD>\n\n<TD>{$mselect}</TD>\n\n<TD>{$dselect}</TD>\n\n</TR></TABLE><p>\n\n<H3>4. Submit your values:</H3><p>\n<input type=\"SUBMIT\" value=\"Get Weather\"><input type=\"RESET\">\n\n</form>\n\n<P>The weather data is not guarenteed to be accurate and it should be used for educational and entertainment\npurposes only.\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/onsite/birthday/pals.css",
    "content": "P {\n    font-family: sans-serif;\n    font-size: 14pt;\n    width: 600px;\n}\n\nblockquote.instructions {\n    font-family: sans-serif;\n    font-size: 12pt;\n    width: 400px;\n}\n\nbody {\n    border-left: 20px;\n}"
  },
  {
    "path": "htdocs/onsite/caucus2004/fx.txt",
    "content": "<p>(<i>Updated 3 PM, 12 Jan</i>)<br>\nComputer model trends have been to remove the chances of precipitation\nthis week and strengthen the ridge in the Western US.\n                                                                                \n<p><b>This week...</b><br>\nVery peaceful week looks to be in store, at least on the weather front.  \nVery little significant weather to mention.  High and low temperatures \nwill be seasonal in the 30s and teens respectively.  A building upper \nlevel ridge begins to dominate the Western US, which means NW upper level \nflow for us.  Precipitation forecasts are very difficult in NW flow \nregimes, but it is hard to find a major focusing mechanism that will be \nimpacting our state.</p>\n                                                                                \n<p><b>For Caucus Monday...</b><br>\nThe weather looks to be fully cooperating with anybody that will be \ntraveling on Monday.  Normal temperatures with only slight chances of \nprecipitation.\n                                                                                \n<p>Daryl Herzmann (akrherz@iastate.edu)<br>\nNext Update: 11 AM Tuesday 13 Jan</p>\n\n"
  },
  {
    "path": "htdocs/onsite/caucus2004/index.phtml",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Iowa Caucus Weather\";\n\n$fx = file_get_contents(\"fx.txt\");\n\n$t->content = <<<EOM\n\n<div class=\"ptitle\"><img src=\"logo.gif\">2004 Iowa Caucus Day</div>\n\n<p>The Iowa Caucus is just a few days away.  The weather on Monday could play \na major role in voter demographic turnout.  This page contains reasources for\nIowa's weather on Caucus Day (19 Jan 2004).  Information provided is for\neducational use only.</p>\n\n<div style=\"padding: 10px; border-style: solid; border-color: #000000; border-width: 1px;\">\n\n<div style=\"text-align: center; font-size: large; font-color: #0000f0;\">Forecast Discussion</div>\n\n{$fx}\n\n<div style=\"text-align: center; font-size: large; font-color: #0000f0;\">Average Temperatures for 19 Jan</div>\n\n<p><table border=1 cellpadding=3 cellspacing=0>\n<tr>\n<th>City:</th><th>High: (&deg;F)</th><th>Low: (&deg;F)</th></tr>\n\n<tr><th>Cedar Rapids</th><th>33</th><th>12</th></tr>\n<tr><th>Des Moines</th><th>33</th><th>12</th></tr>\n<tr><th>Dubuque</th><th>28</th><th>9</th></tr>\n<tr><th>Iowa City</th><th>33</th><th>13</th></tr>\n<tr><th>Sioux City</th><th>29</th><th>9</th></tr>\n<tr><th>Waterloo</th><th>27</th><th>7</th></tr>\n\n</table>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/onsite/features/cat.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 55);\ndefine(\"FBEXTRA\", True);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/mlib.php\";\n\n$t = new MyView();\n\ntry {\n    $dayParam = get_str404(\"day\", null);\n    $day = !is_null($dayParam) ? new DateTime($dayParam) : null;\n} catch (Exception $exp){\n    xssafe(\"<tag>\");\n    die();\n}\n$offset = get_int404(\"offset\", 0);\nif (is_null($day)) {\n    $day = new DateTime(\"now\");\n    $offset = -1;\n}\n\n$dbconn = iemdb(\"mesosite\");\n$stname1 = iem_pg_prepare($dbconn, \"SELECT *, date(valid) as d,\n              to_char(valid, 'YYYY/MM/YYMMDD') as imageref,\n              to_char(valid, 'DD Mon YYYY HH:MI AM') as webdate from feature\n              WHERE valid < $1 ORDER by valid DESC limit 1\");\n$stname2 = iem_pg_prepare($dbconn, \"SELECT *, date(valid) as d,\n              to_char(valid, 'YYYY/MM/YYMMDD') as imageref,\n              to_char(valid, 'DD Mon YYYY HH:MI AM') as webdate from feature\n              WHERE date(valid) = $1\");\n$stname3 = iem_pg_prepare($dbconn, \"SELECT *, date(valid) as d,\n              to_char(valid, 'YYYY/MM/YYMMDD') as imageref,\n              to_char(valid, 'DD Mon YYYY HH:MI AM') as webdate from feature\n              WHERE valid > ($1::date + '1 day'::interval)\n              ORDER by valid ASC limit 1\");\n\n$q = $stname2;\nif ($offset == \"-1\") {\n    $q = $stname1;\n} else if ($offset == \"+1\") {\n    $q = $stname3;\n}\n$result = pg_execute($dbconn, $q, array($day->format(\"Y-m-d\")));\n\nif (pg_num_rows($result) == 0) {\n    http_response_code(422);\n    die(\"Feature Not Found\");\n}\n\n$row = pg_fetch_assoc($result, 0);\n$valid = strtotime($row[\"valid\"]);\n\nif (is_null($row[\"fbid\"])) {\n    $row[\"fbid\"] = $valid;\n}\n\n$day = $row[\"d\"];\n$prettyday = date(\"l, d F Y\", $valid);\n$big = sprintf(\"/onsite/features/%s.%s\", $row[\"imageref\"], $row[\"mediasuffix\"]);\n\n$linktext = \"\";\nif ($row[\"appurl\"] != \"\") {\n    $linktext = \"<br /><a class=\\\"btn btn-sm btn-primary\\\" href=\\\"\" . $row[\"appurl\"] . \"\\\"><i class=\\\"bi bi-signal\\\" aria-hidden=\\\"true\\\"></i> Generate This Chart on Website</a>\";\n}\n\n$t->title = \"$day Feature - \" . $row[\"title\"];\nif ($row[\"mediasuffix\"] == 'mp4') {\n    // Get the video size and width\n    $t->twitter_video = $big;\n    $t->twitter_video_height = $row[\"media_height\"];\n    $t->twitter_video_width = $row[\"media_width\"];\n        $iso = date('c', $valid);\n        $alt = htmlspecialchars($row[\"title\"], ENT_QUOTES);\n        $media = <<<EOM\n    <figure class=\"figure\">\n        <video class=\"img-fluid\" controls aria-label=\"Feature video for {$alt}\">\n            <source src=\"{$big}\" type=\"video/mp4\">\n            Your browser does not support the video tag.\n        </video>\n        <figcaption class=\"figure-caption small\">{$row[\"caption\"]}</figcaption>\n    </figure>\nEOM;\n} else {\n        $t->twitter_image = $big;\n        $iso = date('c', $valid);\n        $alt = htmlspecialchars($row[\"title\"], ENT_QUOTES);\n        $media = <<<EOM\n    <figure class=\"figure\">\n        <a href=\"{$big}\"><img src=\"{$big}\" class=\"img-fluid rounded\" alt=\"{$alt}\"></a>\n        <figcaption class=\"figure-caption small\"><a href=\"{$big}\">View larger image</a> — {$row[\"caption\"]}</figcaption>\n    </figure>\nEOM;\n}\n\n$content = <<<EOM\n\n<nav class=\"d-flex justify-content-between align-items-center mb-3\" aria-label=\"Feature navigation\">\n    <div>\n        <a href=\"cat.php?day={$day}&offset=-1\" class=\"btn btn-outline-secondary btn-sm\" aria-label=\"Previous feature\">&larr; Previous</a>\n    </div>\n    <div class=\"text-center flex-fill\">\n        <h4 class=\"mb-0\">IEM Daily Feature<br /><small>{$prettyday}</small></h4>\n    </div>\n    <div class=\"text-end\">\n        <a href=\"cat.php?day={$day}&offset=1\" class=\"btn btn-outline-secondary btn-sm\" aria-label=\"Next feature\">Next &rarr;</a>\n    </div>\n</nav>\n\n<article>\n    <header>\n        <h3>{$row[\"title\"]}</h3>\n        <p><small class=\"text-muted\">Posted: <time datetime=\"{$iso}\">{$row[\"webdate\"]}</time></small></p>\n    </header>\n\n    <div class=\"row\">\n        <div class=\"col-12 col-md-6\">\n            {$media}\n            {$linktext}\n        </div>\n        <div class=\"col-12 col-md-6\">\n            <div class=\"bg-light p-3 rounded\">\n                    {$row[\"story\"]}\nEOM;\nif ($row[\"voting\"] == 't' && (intval($row[\"good\"]) > 0 || intval($row[\"bad\"]) > 0)) {\n    $content .= \"<br /><br /><b>Voting:</b>\n            <br />Good = \" . $row[\"good\"]\n        . \" <br />Bad = \" . $row[\"bad\"];\n    if ($row[\"abstain\"] > 0) $content .= \" <br />Abstain = \" . $row[\"abstain\"];\n}\n$content .= \"<br />\" . printTags(is_null($row[\"tags\"]) ? Array(): explode(\",\", $row[\"tags\"]));\n\n$content .= <<<EOM\n</div>\n        </div><!-- ./row -->\n    </article>\n    <div class=\"my-3\" aria-hidden=\"true\">&nbsp;</div>\nEOM;\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/onsite/features/content.py",
    "content": "\"\"\"implemented in pylib/iemweb/onsite/features/content.py\"\"\"\n\nfrom iemweb.onsite.features.content import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/onsite/features/past.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 23);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/mlib.php\";\nrequire_once \"../../../include/forms.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n\n$t = new MyView();\n$t->title = \"Past Features\";\n\n$ts = mktime(0, 0, 0, $month, 1, $year);\n$prev = $ts - 15 * 86400;\n$plink = sprintf(\"past.php?year=%s&amp;month=%s\", date(\"Y\", $prev), date(\"m\", $prev));\n$next = $ts + 35 * 86400;\n$nmonth = date(\"m\", $next);\n$nyear = date(\"Y\", $next);\n$nlink = sprintf(\"past.php?year=%s&amp;month=%s\", $nyear, $nmonth);\n\n$mstr = date(\"M Y\", $ts);\n$table = \"\";\n$c = iemdb(\"mesosite\");\n$sql = <<<EOM\n    SELECT *, to_char(valid, 'YYYY/MM/YYMMDD') as imageref,\n    to_char(valid, 'DD Mon YYYY HH:MI AM') as webdate,\n    to_char(valid, 'Dy Mon DD, YYYY') as calhead,\n    to_char(valid, 'D') as dow from feature\n    WHERE valid BETWEEN $1 and $2\n    and valid < now() ORDER by valid ASC\nEOM;\n$stname = iem_pg_prepare($c, $sql);\n$rs = pg_execute($c, $stname, Array(\"{$year}-{$month}-01\", \"{$nyear}-{$nmonth}-01\"));\n\n$num = pg_num_rows($rs);\n\n$linkbar = <<<EOM\n<nav class=\"d-flex justify-content-between align-items-center mb-3\" aria-label=\"Month navigation\">\n    <div>\n        <a href=\"{$plink}\" class=\"btn btn-outline-secondary btn-sm\" aria-label=\"Previous month\">&larr; Previous</a>\n    </div>\n    <div class=\"text-center flex-fill\">\n        <h4 class=\"mb-0\" aria-live=\"polite\">Features for {$mstr}</h4>\n    </div>\n    <div class=\"text-end\">\n        <a href=\"{$nlink}\" class=\"btn btn-outline-secondary btn-sm\" aria-label=\"Next month\">Next &rarr;</a>\n    </div>\n</nav>\nEOM;\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    $valid = strtotime(substr($row[\"valid\"], 0, 16));\n    $iso = date('c', $valid);\n    $alt = htmlspecialchars($row[\"title\"], ENT_QUOTES);\n    $p = printTags(explode(\",\", is_null($row[\"tags\"]) ? \"\": $row[\"tags\"]));\n    $d = date(\"Y-m-d\", $valid);\n    $linktext = \"\";\n    if ($row[\"appurl\"] != \"\") {\n        $linktext = \"<br /><a class=\\\"btn btn-sm btn-primary\\\" href=\\\"\" . $row[\"appurl\"] . \"\\\"><i class=\\\"bi bi-signal\\\" aria-hidden=\\\"true\\\"></i> Generate This Chart on Website</a>\";\n    }\n        $big = sprintf(\"/onsite/features/%s.%s\", $row[\"imageref\"], $row[\"mediasuffix\"]);\n        if ($row[\"mediasuffix\"] == 'mp4') {\n                $media = <<<EOM\n                <figure class=\"figure\">\n                    <video class=\"img-fluid\" controls aria-label=\"Feature video for {$alt}\">\n                        <source src=\"{$big}\" type=\"video/mp4\">\n                        Your browser does not support the video tag.\n                    </video>\n                    <figcaption class=\"figure-caption small\">{$row[\"caption\"]}</figcaption>\n                </figure>\nEOM;\n        } else {\n                $media = <<<EOM\n                <figure class=\"figure\">\n                    <a href=\"{$big}\"><img src=\"{$big}\" class=\"img-fluid rounded\" alt=\"{$alt}\"></a>\n                    <figcaption class=\"figure-caption small\"><a href=\"{$big}\">View larger image</a> — {$row[\"caption\"]}</figcaption>\n                </figure>\nEOM;\n        }\n\n        $table .= <<<EOM\n<article class=\"mb-4\">\n    <div class=\"card\">\n        <div class=\"card-body p-2\">\n            <h5 class=\"mb-0\">{$row[\"calhead\"]}</h5>\n        </div>\n    </div>\n\n    <div class=\"row mt-2\">\n        <div class=\"col-12 col-md-6\"> \n            {$media}\n        </div>\n        <div class=\"col-12 col-md-6\">\n            <h3 id=\"feature-title-{$d}\" class=\"h5\"><a href='cat.php?day={$d}'>{$row[\"title\"]}</a></h3>\n            <p class=\"mb-1\"><small class=\"text-muted\"><time datetime=\"{$iso}\">{$row[\"webdate\"]}</time></small></p>\n            <div>{$row[\"story\"]}</div>\n            <p class=\"mt-2 mb-1\">Voting: <span class=\"me-2\">Good - {$row[\"good\"]}</span> <span>Bad - {$row[\"bad\"]}</span></p>\n            <div>{$p}</div>\n            <div class=\"mt-2\">{$linktext}</div>\n        </div>\n    </div>\n</article>\n\nEOM;\n}\n\nif ($num == 0) {\n    $table .= \"<p>No entries found for this month\\n\";\n}\n\n$t->content = <<<EOM\n<h3>Past Features</h3>\n\n<p>This page lists out the IEM Daily Features for a month at a time. Features\nhave been posted on most days since February 2002. List all \n<a href=\"titles.php\">feature titles</a>.\n\n{$linkbar}\n{$table}\n{$linkbar}\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/onsite/features/tags/index.php",
    "content": "<?php\nrequire_once \"../../../../config/settings.inc.php\";\nrequire_once \"../../../../include/myview.php\";\n$t = new MyView();\ndefine(\"IEM_APPID\", 36);\nrequire_once \"../../../../include/database.inc.php\";\nrequire_once \"../../../../include/mlib.php\";\nrequire_once \"../../../../include/forms.php\";\n$pgconn = iemdb('mesosite');\n\n\n/* If nothing specified for a tag! */\nif (!array_key_exists(\"tag\", $_GET)) {\n    $rs = pg_query($pgconn, \"SELECT tags from feature WHERE tags is not null\");\n    $tags = array();\n    while ($row = pg_fetch_assoc($rs)) {\n        $tokens = preg_split(\"/,/\", $row[\"tags\"]);\n        foreach ($tokens as $k => $v) {\n            if ($v == \"\") {\n                continue;\n            }\n            if (!array_key_exists($v, $tags)) {\n                $tags[$v] = 0;\n            }\n            $tags[$v] += 1;\n        }\n    }\n\n    $t->title = \"Feature Tags\";\n\n    $keys = array_keys($tags);\n    asort($keys);\n    $b = 0;\n    $table = \"\";\n    foreach ($keys as $k => $v) {\n        if ($b % 6 == 0) $table .= \"<tr>\";\n        $table .= sprintf(\"<td><a href=\\\"%s.html\\\">%s</a> (%s)</td>\\n\", $v, $v, $tags[$v]);\n        $b += 1;\n        if ($b % 6 == 0) $table .= \"</tr>\";\n    }\n\n\n    $t->content = <<<EOM\n<h3>IEM Daily Feature Tags</h3>\n\n<p>Some of the IEM Daily Features are tagged based on the content and topic.\n<br />This page summarizes the unique tags used and the number of times used.\n</p>\n\n<table class=\"table table-striped\">\n{$table}\n</table>\n\nEOM;\n    $t->render('single.phtml');\n    die();\n}\n\n$tag = get_str404(\"tag\", \"\");\n$t->title = \"Features Tagged: $tag\";\n\n$winterextra = \"\";\nif (strpos($tag, \"winter\") === 0) {\n    $winterextra = <<<EOM\n<p>The IEM generates per winter storm analyses of snowfall reports over\nIowa and tags them by the winter season.  Here are the tags used for the\nprevious winter seasons that these maps are available for:\n<ul>\n    <li><a href=\"winter1011.html\">Winter 2010-2011</a></li>\n    <li><a href=\"winter1112.html\">Winter 2011-2012</a></li>\n    <li><a href=\"winter1213.html\">Winter 2012-2013</a></li>\n    <li><a href=\"winter1314.html\">Winter 2013-2014</a></li>\n    <li><a href=\"winter1415.html\">Winter 2014-2015</a></li>\n    <li><a href=\"winter1516.html\">Winter 2015-2016</a></li>\n    <li><a href=\"winter1617.html\">Winter 2016-2017</a></li>\n    <li><a href=\"winter1718.html\">Winter 2017-2018</a></li>\n    <li><a href=\"winter1819.html\">Winter 2018-2019</a></li>\n    <li><a href=\"winter1920.html\">Winter 2019-2020</a></li>\n    <li><a href=\"winter2021.html\">Winter 2020-2021</a></li>\n    <li><a href=\"winter2122.html\">Winter 2021-2022</a></li>\n    <li><a href=\"winter2223.html\">Winter 2022-2023</a></li>\n    <li><a href=\"winter2324.html\">Winter 2023-2024</a></li>\n    <li><a href=\"winter2425.html\">Winter 2024-2025</a></li>\n    <li><a href=\"winter2526.html\">Winter 2025-2026</a></li>\n</ul></p>\n\nEOM;\n}\n\n$stname = iem_pg_prepare($pgconn, \"SELECT *,\n      to_char(valid, 'YYYY/MM/YYMMDD') as imageref,\n      to_char(valid, 'DD Mon YYYY HH:MI AM') as webdate,\n      to_char(valid, 'YYYY-MM-DD') as permalink from feature\n      WHERE tags ~* $1\n      ORDER by valid DESC\");\n$rs = pg_execute($pgconn, $stname, array($tag));\n$content = \"\";\nwhile ($row = pg_fetch_assoc($rs)) {\n    $tokens = preg_split(\"/,/\", $row[\"tags\"]);\n    $found = False;\n    foreach ($tokens as $k => $v) {\n        if ($v == $tag) {\n            $found = True;\n        }\n    }\n    if (!$found) {\n        continue;\n    }\n    $valid = strtotime($row[\"valid\"]);\n    $big = sprintf(\"/onsite/features/%s.%s\", $row[\"imageref\"], $row[\"mediasuffix\"]);\n    if ($row[\"mediasuffix\"] == 'mp4') {\n        $media = <<<EOM\n        <video class=\"img-fluid\" controls>\n          <source src=\"{$big}\" type=\"video/mp4\">\n          Your browser does not support the video tag.\n      </video>\nEOM;\n    } else {\n        $media = <<<EOM\n      <a href=\"{$big}\"><img src=\"{$big}\" class=\"img-fluid\"></a>\n      <br /><a href=\"{$big}\">View larger image</a>\nEOM;\n    }\n    $content .= <<<EOM\n<hr />\n<div class=\"row\">\n<div class=\"col-md-5\">\n      {$media}\nEOM;\n    if ($row[\"appurl\"] != \"\") {\n    $content .= \"<br /><a class=\\\"btn btn-sm btn-primary\\\" href=\\\"\" . $row[\"appurl\"] . \"\\\"><i class=\\\"bi bi-signal\\\" aria-hidden=\\\"true\\\"></i> Generate This Chart on Website</a>\";\n    }\n    $content .= \"<br />\" . $row[\"caption\"];\n    $content .= \"</div><div class=\\\"col-md-7\\\">\";\n    $content .= \"<h3><a href=\\\"../cat.php?day=\" . $row[\"permalink\"] . \"\\\">\" . $row[\"title\"] . \"</a></h3>\\n\";\n    $content .= \"<font size='-1' style='color:black'>\" . $row[\"webdate\"] . \"</font>\\n\";\n    $content .= \"<br>\" . $row[\"story\"];\n    if ($row[\"voting\"] == 't' && (intval($row[\"good\"]) > 0 || intval($row[\"bad\"]) > 0)) {\n        $content .= \"<br /><br /><b>Voting:</b><br />Good: \" . $row[\"good\"] . \" <br />Bad: \" . $row[\"bad\"];\n    }\n    if (intval($row[\"abstain\"]) > 0) {\n        $content .= \"<br />Abstain: \" . $row[\"abstain\"];\n    }\n    $content .= \"<br />\" . printTags(explode(\",\", $row[\"tags\"]));\n    $content .= \"</div></div>\";\n} // End of feature for loop\n\nif (pg_num_rows($rs) == 0) {\n    echo \"<h4>No features found for this tag, sorry</h4>\";\n}\n\n\n$t->content = <<<EOM\n<h3>Past IEM Features tagged: {$tag}</h3>\n<p><a href=\"index.php\" class=\"btn btn-secondary\"><i class=\"bi bi-list\" aria-hidden=\"true\"></i>\nList all tags</a></p>\n\n{$winterextra}\n\n{$content}\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/onsite/features/titles.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/database.inc.php\";\n\n$t = new MyView();\n$t->title = \"List of Daily Feature Titles\";\n\n$connection = iemdb(\"mesosite\");\n$sql = <<<EOM\n    SELECT title, good, bad, abstain, to_char(valid, 'YYYY-MM-DD') as href\n    from feature ORDER by title ASC\nEOM;\n$result = pg_query($connection, $sql);\n$table = \"\";\n$count = pg_num_rows($result);\nfor($i = 0; $row = pg_fetch_assoc($result); $i ++) {\n    if ($i % 4 == 0) {\n        $table .= \"<tr>\\n\";\n    }\n    $table .= sprintf('<td><a href=\"cat.php?day=%s\">%s</a>'.\n            '<i class=\"green\">%s</i>/<i class=\"red\">%s</i>/%s</td>',\n    $row[\"href\"], $row[\"title\"], $row[\"good\"], $row[\"bad\"], $row[\"abstain\"]);\n    if (($i+1) % 4 == 0) {\n        $table .= \"</tr>\\n\";\n    }\n}\n\n$t->content = <<<EOM\n<style>\n.green {\n color: #0f0;\n}\n.red {\n color: #f00;\n}\n</style>\n<h3>IEM Daily Feature Titles</h3>\n\n<p>The following table lists out all <strong>{$count}</strong> IEM Daily Feature\ntitles.  For some unknown reason, the author of these posts decided to make each title\nunique.  The uniqueness is case sensitive!  The numbers listed next to the title\nare good votes, bad votes, and abstains.\n\n<table class=\"table table-sm table-striped\">\n{$table}\n</tr></table>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/onsite/features/vote.py",
    "content": "\"\"\"implemented in pylib/iemweb/onsite/features/vote.py\"\"\"\n\nfrom iemweb.onsite.features.vote import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/onsite/news.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 22);\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\n$dbconn = iemdb(\"mesosite\");\n\n$id = get_int404(\"id\");\n$q = isset($_GET[\"q\"]) ? pg_escape_string($dbconn, xssafe($_GET[\"q\"])) : \"\";\n$tag = isset($_GET['tag']) ? pg_escape_string($dbconn, xssafe($_GET['tag'])) : null;\n$content = <<< EOM\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/\">Home</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">News and Notes</li>\n  </ol>\n</nav>\n\n<h1 class=\"mb-4\">News and Notes</h1>\n\n<div class=\"card mb-4\">\n  <div class=\"card-body\">\n    <form method=\"GET\" action=\"news.phtml\" name=\"searchnews\" class=\"row g-3 align-items-end\">\n      <div class=\"col-12 col-md-8\">\n        <label for=\"search-query\" class=\"form-label\">Search Archive</label>\n        <input type=\"text\" id=\"search-query\" name=\"q\" value=\"{$q}\" class=\"form-control\" placeholder=\"Enter search terms...\">\n      </div>\n      <div class=\"col-12 col-md-4\">\n        <button type=\"submit\" class=\"btn btn-primary w-100\">Search</button>\n      </div>\n    </form>\n  </div>\n</div>\nEOM;\n\nif ($id > 0) {\n    $stname = iem_pg_prepare($dbconn, \"UPDATE news SET views = views + 1\n      WHERE id = $1\");\n    pg_execute($dbconn, $stname, array($id));\n    $stname = iem_pg_prepare($dbconn, \"SELECT *,\n      to_char(entered, 'YYYY-MM-DD HH:MI AM') as webdate\n      from news WHERE id = $1\");\n    $result = pg_execute($dbconn, $stname, array($id));\n} else if ($q != \"\") {\n    $stname = iem_pg_prepare($dbconn, \"SELECT *,\n      to_char(entered, 'YYYY-MM-DD HH:MI AM') as webdate\n      from news WHERE (title ~* $1 or body ~* $1)\n      ORDER by entered DESC\");\n    $result = pg_execute($dbconn, $stname, array($q));\n} else if (!is_null($tag)) {\n    $stname = iem_pg_prepare($dbconn, \"SELECT *,\n      to_char(entered, 'YYYY-MM-DD HH:MI AM') as webdate\n      from news WHERE tags @> Array[$1]::varchar[]\n      ORDER by entered DESC\");\n    $result = pg_execute($dbconn, $stname, array($tag));\n} else {\n    $q = \"SELECT *, to_char(entered, 'YYYY-MM-DD HH:MI AM') as webdate\n           from news ORDER by entered DESC LIMIT 1\";\n    $result = pg_query($dbconn, $q);\n    $row = pg_fetch_assoc($result);\n    $id = intval($row[\"id\"]);\n}\nif ($result === false) {\n    xssafe(\"<invalid>\");\n    die();\n}\n\nif (pg_num_rows($result) == 1 && $id > 0) {\n    $prev = $id - 1;\n    $next = $id + 1;\n    $content .= '<nav aria-label=\"Article navigation\" class=\"mb-3\">';\n    $content .= '<div class=\"d-flex justify-content-between\">';\n    $content .= \"<a rel=\\\"nofollow\\\" href=\\\"news.phtml?id=$prev\\\" class=\\\"btn btn-outline-primary\\\">\";\n    $content .= '<i class=\"bi bi-arrow-left\" aria-hidden=\"true\"></i> Previous Article</a>';\n    $content .= \"<a rel=\\\"nofollow\\\" href=\\\"news.phtml?id=$next\\\" class=\\\"btn btn-outline-primary\\\">\";\n    $content .= 'Next Article <i class=\"bi bi-arrow-right\" aria-hidden=\"true\"></i></a>';\n    $content .= '</div></nav>';\n}\n\nfunction print_tags($str)\n{\n    if ($str == \"\" || is_null($str)) return \"none\";\n\n    $ar  = explode(\",\", trim($str, \"{}\"));\n    $s = \"\";\n    foreach ($ar as $k => $v) {\n        $s .= sprintf(\"<a href='news.phtml?tag=%s'>%s</a> \", $v, $v);\n    }\n    return $s;\n}\n\n$title = \"News and Notes\";\nwhile ($row = pg_fetch_assoc($result)) {\n    $id = $row[\"id\"];\n    $title = $row[\"title\"];\n    $content .= '<article class=\"card border-success mb-4\">';\n    $content .= \"<header class=\\\"card-header bg-success text-white d-flex justify-content-between align-items-center\\\">\";\n    $content .= \"<h2 class=\\\"h5 mb-0\\\">\" . htmlspecialchars($row[\"title\"]) . \"</h2>\";\n    $content .= \"<span class=\\\"badge bg-light text-dark\\\" aria-label=\\\"{$row[\"views\"]} page views\\\">{$row[\"views\"]} Views</span>\";\n    $content .= \"</header>\";\n    $content .= \"<div class=\\\"card-body\\\">\";\n\n    // Metadata section\n    $content .= '<div class=\"row g-2 mb-3\">';\n    $link = sprintf(\"<a href='news.phtml?id=%s'>ID #%s</a> \", $id, $id);\n    $content .= \"<div class=\\\"col-12 col-md-auto\\\"><span class=\\\"badge bg-secondary\\\">Permalink: {$link}</span></div>\";\n    $content .= \"<div class=\\\"col-12 col-md-auto\\\"><span class=\\\"badge bg-secondary\\\">Date: \" . htmlspecialchars($row[\"webdate\"]) . \"</span></div>\";\n    $content .= \"<div class=\\\"col-12 col-md-auto\\\"><span class=\\\"badge bg-secondary\\\">Author: \" . htmlspecialchars($row[\"author\"]) . \"</span></div>\";\n    if (!is_null($row[\"tags\"])) {\n        $content .= \"<div class=\\\"col-12 col-md-auto\\\"><span class=\\\"badge bg-secondary\\\">Tags: \" . print_tags($row[\"tags\"]) . \"</span></div>\";\n    }\n    $content .= '</div>';\n\n    if (strlen($row[\"url\"]) > 0) {\n        $content .= \"<div class=\\\"alert alert-info mb-3\\\"><strong>Link:</strong> <a href=\\\"{$row[\"url\"]}\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">{$row[\"url\"]}</a></div>\\n\";\n    }\n    $content .= \"<div class=\\\"content\\\">{$row[\"body\"]}</div>\";\n    $content .= \"</div>\";\n    $content .= \"</article>\";\n} // End of for\n\nif (pg_num_rows($result) == 1) {\n    $t->title = $title;\n} else {\n    $t->title = \"News and Notes\";\n}\nif (pg_num_rows($result) == 0) {\n    $content .= <<<EOM\n    <div class=\"alert alert-danger\">No news items were found based on your\n    search parameters!\n    </div>\nEOM;\n}\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/onsite/robins.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\nrequire_once \"../../include/database.inc.php\";\n$t->title = \"IEM Robin Tracker\";\n\n$connection = iemdb(\"postgis\");\n$q = \"SELECT * from robins ORDER by id\";\n$rs = pg_query($connection, $q);\n\n$table = \"\";\nwhile ($row = pg_fetch_assoc($rs)) {\n\n    $table .= \"<tr> <td>\" . $row[\"id\"] . \"</td>\n    <td>\" . $row[\"name\"] . \"</td>\n    <td>\" . $row[\"day\"] . \"</td>\n    <td>\" . $row[\"city\"] . \"</td>\n    </tr>\\n\";\n}\n\n$t->content = <<<EOM\nThe Red Robin is a welcome sign of spring in Iowa!  Here is a graphical\nview and listing of reports received at the IEM of Robin sightings.  If you\nhave a report to add, please send it to Daryl (<a href=\"mailto:akrherz@iastate.edu\">akrherz@iastate.edu</a>).\n\n<table>\n<tr>\n <td><img src=\"/onsite/features/2003/03/030310.gif\" width=150></td>\n <td><img src=\"/GIS/apps/onsite/robins.php\"></td>\n</tr>\n\n<tr>\n <td colspan=\"2\">\n\n<table width=\"100%\">\n<tr>\n  <th align=\"left\">Map ID</th>\n  <th align=\"left\">Person</th>\n  <th align=\"left\">Date</th>\n  <th align=\"left\">Where</th>\n</tr>\n\n{$table}\n\n</table>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/other/current.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/mlib.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\n\n$t = new MyView();\n$t->current_network = \"Other\";\n$sortcol = isset($_GET[\"sortcol\"]) ? xssafe($_GET[\"sortcol\"]) : \"station\";\n$network = isset($_GET[\"network\"]) ? xssafe($_GET[\"network\"]) : 'OT';\n\n$mesosite = iemdb('mesosite');\n$stname = iem_pg_prepare($mesosite, \"SELECT tzname from networks where id = $1\");\n$rs = pg_execute($mesosite, $stname, array($network));\nif (pg_num_rows($rs) < 1) {\n    $tzname = \"America/Chicago\";\n} else {\n    $row = pg_fetch_assoc($rs, 0);\n    $tzname = $row[\"tzname\"];\n}\n\n$t->title = \"Other Currents\";\n$t->refresh = 600;\n\n$arr = array(\n    \"network\" => $network,\n);\n$jobj = iemws_json(\"currents.json\", $arr);\n\n$vals = array(\n    \"tmpf\" => \"Air Temperature [F]\",\n    \"dwpf\" => \"Dew Point Temp [F]\",\n    \"sknt\" => \"Wind Speed [knots]\",\n    \"wdir\" => \"Wind Direction [deg]\",\n    \"pday\" => \"Precip Accum [inches]\",\n    \"max_sknt\" => \"Wind Gust [knots]\",\n    \"ts\" => \"Observation Time [local]\",\n    \"feel\" => \"Feels Like\",\n    \"min_tmpf\" => \"Today's Low Temperature\",\n    \"drct\" => \"Wind Direction\",\n    \"max_tmpf\" => \"Today's High Temperature\",\n    \"gtim\" => \"Wind Gust Time\",\n    \"station\" => \"Station ID\",\n    \"relh\" => \"Relative Humidity\"\n);\n\n$t->breadcrumbs = <<<EOM\n<ol class=\"breadcrumb\">\n    <li><a href=\"/other/\">Other Networks</a></li>\n    <li class=\"active\">Current Conditions</li>\n</ol>\nEOM;\n\n$mydata = array();\n\nforeach ($jobj[\"data\"] as $bogus => $iemob) {\n    $key = $iemob[\"station\"];\n    $mydata[$key] = $iemob;\n    $mydata[$key][\"ts\"] = strtotime($iemob[\"local_valid\"]);\n    $mydata[$key][\"sped\"] = $mydata[$key][\"sknt\"] * 1.15078;\n    $mydata[$key][\"relh\"] = relh(\n        f2c($mydata[$key][\"tmpf\"]),\n        f2c($mydata[$key][\"dwpf\"])\n    );\n\n    if ($mydata[$key][\"max_gust\"] > $mydata[$key][\"max_sknt\"]) {\n        $mydata[$key][\"peak\"] = $mydata[$key][\"max_gust\"];\n        $mydata[$key][\"peak_ts\"] = strtotime($mydata[$key][\"local_max_gust_ts\"]);\n    } else {\n        $mydata[$key][\"peak\"] = $mydata[$key][\"max_sknt\"];\n        $val = is_null($mydata[$key][\"local_max_sknt_ts\"]) ? null : strtotime($mydata[$key][\"local_max_sknt_ts\"]);\n        $mydata[$key][\"peak_ts\"] = $val;\n    }\n}\n\n$finalA = aSortBySecondIndex($mydata, $sortcol);\n$i = 0;\n$now = time();\n\n$table = \"\";\n// Loop though all data\nforeach ($finalA as $key => $parts) {\n    $i++;\n    $tdiff = $now - $parts[\"ts\"];\n    // Don't show stations over 5 days old\n    if ($tdiff > 86400 * 5) {\n        continue;\n    }\n    $table .= \"<tr\";\n    if ($i % 2 == 0)  $table .= \" bgcolor='#eeeeee'\";\n\n    $table .= \">\";\n    $table .= \"<td><input type=\\\"checkbox\\\" name=\\\"st[]\\\"\n               value=\\\"\" . $key . \"\\\"></td>\";\n    $table .= sprintf(\n        \"<td><a href=\\\"/sites/site.php?station=%s&amp;network=%s\\\">%s</a></td>\",\n        $key,\n        $network,\n        $parts[\"name\"]\n    );\n    $table .= \"<td \";\n    $format = \"h:i A\";\n    if ($tdiff > 11900) {\n        $table .= 'bgcolor=\"red\"';\n        $format = \"M-d-Y h:i A\";\n    } else if ($tdiff > 7200) {\n        $table .= 'bgcolor=\"orange\"';\n    } else if ($tdiff > 3600) {\n        $table .= 'bgcolor=\"green\"';\n    }\n    $table .= \">\" . date($format, $parts[\"ts\"]) . \"</td>\n  <td align='center'>\" . myround($parts[\"tmpf\"], 0) . \"(<font color=\\\"#ff0000\\\">\" .\n        myround($parts[\"max_tmpf\"], 0) . \"</font>/<font color=\\\"#0000ff\\\">\" .\n        myround($parts[\"min_tmpf\"], 0) . \"</font>)</td>\n <td>\" . myround($parts[\"dwpf\"], 0) . \"</td>\n <td>\" . myround($parts[\"feel\"], 1) . \"</td>\n <td>\" . $parts[\"relh\"] . \"</td>\n <td>\" . myround($parts[\"sknt\"], 0);\n    if (! is_null($parts[\"gust\"]) && $parts[\"gust\"] > 0) {\n        $table .= \"G\" . myround($parts[\"gust\"], 1);\n    }\n    $table .= \"</td>\n            <td>\" . myround($parts[\"drct\"], 0) . \"</td>\n        <td>\" . myround($parts[\"peak\"], 0) . \"@ \" . date(\"h:i A\", $parts[\"peak_ts\"]) . \"</td>\n        </tr>\\n\";\n}\n\n$networks = array(\n    \"OT\" => \"IEM Misc Stations\",\n    \"VTWAC\" => \"Vermont Weather Analytics Center\"\n);\n$buttons = \"\";\nforeach ($networks as $key => $val) {\n    $buttons .= sprintf(\n        \"<a class=\\\"btn btn-sm%s\\\" href=\\\"current.phtml?network=%s\\\">%s</a>\",\n        ($key == $network) ? ' active' : '',\n        $key,\n        $val\n    );\n}\n\n$t->content = <<<EOM\n\n<p><b>Other Networks:</b> {$buttons}\n\n<br /><strong>Times shown are for timezone: {$tzname}.</strong> The local day summary\nis based on that timezone.\n<br />Sorted by: <b>({$vals[$sortcol]})</b>  &nbsp; &nbsp; Click on\na column to sort it.<br>\n\n<form method=\"GET\" action=\"/my/current.phtml\">\n<table class=\"table table-striped table-sm table-bordered\">\n<thead>\n<tr>\n  <th rowspan=\"2\">ADD:</th>\n  <th rowspan=\"2\">Station:</th>\n  <th rowspan=\"2\"><a href=\"current.phtml?sortcol=ts\">Ob Time</a></th>\n  <th colspan=\"3\">Temps &deg;F</th>\n  <th>&nbsp;</th>\n  <th colspan=\"3\">Wind [knots]</th>\n</tr>\n\n<tr>\n  <th>\n   <a href=\"current.phtml?network={$network}&amp;sortcol=tmpf\">Air</a>\n   (<a href=\"current.phtml?network={$network}&amp;sortcol=max_tmpf\">Hi</a> /\n   <a href=\"current.phtml?network={$network}&amp;sortcol=min_tmpf\">Lo</a>)\n</th>\n  <th><a href=\"current.phtml?network={$network}&amp;sortcol=dwpf\">DewP</a></th>\n  <th><a href=\"current.phtml?network={$network}&amp;sortcol=feel\">Feels</a></th>\n  <th><a href=\"current.phtml?network={$network}&amp;sortcol=relh\">RH%</a></th>\n  <th><a href=\"current.phtml?network={$network}&amp;sortcol=sknt\">Speed</a></th>\n  <th><a href=\"current.phtml?network={$network}&amp;sortcol=drct\">Direction</a></th>\n  <th><a href=\"current.phtml?network={$network}&amp;sortcol=max_sknt\">Gust</a>\n    @<a href=\"current.phtml?network={$network}&amp;sortcol=gtim\">Time</a></th>\n</tr>\n</thead>\n<tbody>\n{$table}\n</tbody>\n</table>\n<input type=\"submit\" value=\"Add to Favorites\">\n<input type=\"reset\" value=\"Reset\">\n\n</form>\n\n<br><br>\nEOM;\n$t->render(\"sortables.phtml\");\n"
  },
  {
    "path": "htdocs/other/daily_plot.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Other Network\";\nrequire_once \"../../include/forms.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$myTime = mktime(0, 0, 0, $month, $day, $year);\n$station = isset($_GET[\"station\"]) ? xssafe($_GET[\"station\"]) : \"OT0002\";\n\n$nselect = networkSelect(\"OT\", $station);\n$yselect = yearSelect(2007, $year);\n$mselect = monthSelect($month);\n$dselect = daySelect($day);\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/other/\">Other Networks</a></li>\n <li class=\"active\">Mesonet Northeast Ames</li>\n</ol>\n\n  <form method=\"GET\" name=\"control\">\n  {$nselect}\n  {$yselect}\n  {$mselect}\n  {$dselect}\n\n  <input type=\"submit\" value=\"Make Plot\"></form>\n\n<BR>\n<img src=\"plot_temps.php?station={$station}&year={$year}&month={$month}&day={$day}\" ALT=\"Time Series\">\n<img src=\"plot_winds.php?station={$station}&year={$year}&month={$month}&day={$day}\" ALT=\"Time Series\">\n\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/other/index.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 25);\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/mlib.php\";\n\n$t->title = \"Other Data Networks\";\n\n$y1select = yearSelect(2012, 2012, \"year1\");\n$m1select = monthSelect(1, \"month1\");\n$d1select = daySelect(1, \"day1\");\n$y2select = yearSelect(2012, date(\"Y\"), \"year2\");\n$y24select = yearSelect(2024, 2024, \"year1\");\n$m2select = monthSelect(date(\"m\"), \"month2\");\n$d2select = daySelect(date(\"d\"), \"day2\");\n$y12select = yearSelect(2003, 2003, \"year1\");\n$y22select = yearSelect(2003, date(\"Y\"), \"year2\");\n$y242select = yearSelect(2024, date(\"Y\"), \"year2\");\n$y13select = yearSelect(2013, 2013, \"year1\");\n$y23select = yearSelect(2013, date(\"Y\"), \"year2\");\n$nselect = networkSelect(\"OT\", \"\");\n\n$t->content = <<<EOM\n<h3>Other Data Networks</h3>\n\n<p>This page contains links to miscellaneous IEM networks and standalone\nstations.  The <a href=\"/schoolnet/\">School-based Network</a> is no longer\ncollected and the <a href=\"/projects/iao/\">Iowa Atmospheric Observatory</a>\nequipment has been removed.</p>\n\n<h3>Agronomy Hall, ISU:</h3>\n\n<div class=\"card mb-4\">\n    <div class=\"card-body\">\n        <ul class=\"mb-0\">\n            <li><a href=\"/other/current.phtml\">Sortable Currents</a></li>\n            <li><a href=\"/plotting/mesoeast/\">Ames (Northern, Dave Flory)</a></li>\n            <li><a href=\"/plotting/mesonorth/ot_10min.phtml\">Indoor Temperature for Met Cluster Room</a>, B548 Agronomy Hall.  Outfitted with 4 One-Wire sensors reporting every minute.</li>\n            <li><a href=\"/plotting/isumet/ams2.phtml\">ISU AMS Station</a>, On the roof.  Davis Vantage Pro 2, installed 8 Sep 2011.\n            <a href=\"/request/daily.phtml?network=OT\">Download daily summaries</a> for station.</li>\n        </ul>\n    </div>\n</div>\n\n<h3>City of Ames</h3>\n\n<div class=\"card mb-4\">\n    <div class=\"card-body\">\n        <ul class=\"mb-0\">\n            <li><a href=\"daily_plot.phtml?station=OT0008&year=2007&month=2&day=13\">Reiman Gardens station</a>, only some limited data from 2007 for the site.</li>\n        </ul>\n    </div>\n</div>\n\n<h3>Stuart Smith Park Hydrology Learning Lab, Ames</h3>\n\n<p>These are four ground water monitoring wells and a stream gauge located at\nthe Stuart Smith Park in Ames.  These data are used by the Geology 100 class, but\nare freely available to others.\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n<div class=\"card card-body\">\n\n<h4>Download Stream Gage Data (\"Bubbler\")</h4>\n<form method=\"GET\" action=\"/cgi-bin/request/ss.py\" name=\"bubbler\">\n<input type=\"hidden\" name=\"opt\" value=\"bubbler\" />\n<table class=\"table table-bordered\">\n<tr>\n <th>Start Date:</th>\n  <td>{$y1select}</td>\n  <td>{$m1select}</td>\n  <td>{$d1select}</td></tr>\n\n<tr>\n <th>End Date:</th>\n  <td>{$y2select}</td>\n  <td>{$m2select}</td>\n  <td>{$d2select}</td></tr>\n\n</table>\n<div class=\"form-check mb-3\">\n<input type=\"checkbox\" name=\"excel\" value=\"yes\" id=\"ex1\" class=\"form-check-input\" />\n<label for=\"ex1\" class=\"form-check-label\">Download as Excel File</label>\n</div>\n<input type=\"submit\" value=\"Request Data\" class=\"btn btn-primary\" />\n</form>\n\n</div>\n</div><div class=\"col-md-6\">\n<div class=\"card card-body\">\n\n<h4><i class=\"bi bi-download\" aria-hidden=\"true\"></i> Download Ground Monitoring Well Data</h4>\n<form method=\"GET\" action=\"/cgi-bin/request/ss.py\" name=\"gage\">\n<input type=\"hidden\" name=\"opt\" value=\"gage\" />\n<table class=\"table table-bordered\">\n<tr>\n  <td rowspan=\"2\"><strong>Select Station(s):</strong><br />\n  <select multiple size=\"4\" name=\"station\" class=\"form-select\">\n   <option value=\"9100131\">SSP #1</option>\n   <option value=\"9100104\">SSP #6</option>\n   <option value=\"9100156\">SSP #7</option>\n   <option value=\"9100135\">SSP #8</option>\n  </select>\n  </td>\n  <th>Start Date:</th>\n  <td>{$y1select}</td>\n  <td>{$m1select}</td>\n  <td>{$d1select}</td></tr>\n\n<tr>\n <th>End Date:</th>\n  <td>{$y2select}</td>\n  <td>{$m2select}</td>\n  <td>{$d2select}</td></tr>\n\n</table>\n<div class=\"form-check mb-3\">\n<input type=\"checkbox\" name=\"excel\" value=\"yes\" id=\"ex2\" class=\"form-check-input\" />\n<label for=\"ex2\" class=\"form-check-label\">Download as Excel File</label>\n</div>\n<input type=\"submit\" value=\"Request Data\" class=\"btn btn-primary\" />\n</form>\n\n</div></div>\n\n<div class=\"card mb-4\">\n    <div class=\"card-header\">\n    <h3 class=\"mb-0\"><a name=\"purpleair\"><i class=\"bi bi-file-earmark\" aria-hidden=\"true\"></i></a> ISU Agronomy Hall - Purple Air Quality Sensor</h3>\n    </div>\n    <div class=\"card-body\">\n        <p>Data is collected every minute since 26 April 2024.  Values represent a\n        two minute average.</p>\n\n        <form name=\"purple\" action=\"/cgi-bin/request/purpleair.py\">\n        <table class=\"table table-bordered\">\n        <tr>\n         <th>Start Date:</th>\n          <td>{$y24select}</td>\n          <td>{$m1select}</td>\n          <td>{$d1select}</td></tr>\n\n        <tr>\n         <th>End Date:</th>\n          <td>{$y242select}</td>\n          <td>{$m2select}</td>\n          <td>{$d2select}</td></tr>\n\n        </table>\n        <div class=\"d-flex gap-2\">\n        <button type=\"submit\" name=\"excel\" value=\"yes\" class=\"btn btn-success\">Download Excel File</button>\n        <input type=\"submit\" value=\"Download CSV\" class=\"btn btn-primary\">\n        </div>\n        </form>\n    </div>\n</div>\n\n<div class=\"card mb-4\">\n    <div class=\"card-header\">\n        <h3 class=\"mb-0\">ISU FEEL Data</h3>\n    </div>\n    <div class=\"card-body\">\n        <p>This data is provided by The National Laboratory for Agriculture and the Environment.</p>\n\n        <form name=\"feel\" action=\"/cgi-bin/request/feel.py\">\n        <table class=\"table table-bordered\">\n        <tr>\n         <th>Start Date:</th>\n          <td>{$y13select}</td>\n          <td>{$m1select}</td>\n          <td>{$d1select}</td></tr>\n\n        <tr>\n         <th>End Date:</th>\n          <td>{$y23select}</td>\n          <td>{$m2select}</td>\n          <td>{$d2select}</td></tr>\n\n        </table>\n        <input type=\"submit\" value=\"Request Data\" class=\"btn btn-primary\" />\n        </form>\n    </div>\n</div>\n\n<div class=\"card mb-4\">\n    <div class=\"card-header\">\n        <h3 class=\"mb-0\">Raw Data Download!</h3>\n    </div>\n    <div class=\"card-body\">\n        <form name=\"dl\" action=\"/cgi-bin/request/other.py\">\n        <table class=\"table table-sm table-bordered\">\n        <tr><th rowspan=\"2\">Select Location: {$nselect}</th>\n         <th>Start Date:</th>\n          <td>{$y12select}</td>\n          <td>{$m1select}</td>\n          <td>{$d1select}</td></tr>\n\n        <tr>\n         <th>End Date:</th>\n          <td>{$y22select}</td>\n          <td>{$m2select}</td>\n          <td>{$d2select}</td></tr>\n\n        </table>\n        <input type=\"submit\" value=\"Request Data\" class=\"btn btn-primary\" />\n        </form>\n    </div>\n</div>\n\n<div class=\"card mb-4\">\n    <div class=\"card-header\">\n        <h3 class=\"mb-0\">WMO BUFR Surface</h3>\n    </div>\n    <div class=\"card-body\">\n        <p>During December 2023, the IEM started an ingest of surface data\n        disseminated via NOAA in BUFR format.  There are thousands of stations within\n        this IEM classified network.  The processing remains a work-in-progress, but\n        you can <a href=\"/request/wmo_bufr_srf.php\">download data</a> and view a large\n        <a href=\"/sites/networks.php?network=WMO_BUFR_SRF\">network table</a> or\n        <a href=\"/sites/locate.php?network=WMO_BUFR_SRF\">station map</a> to see\n        what is available.</p>\n    </div>\n</div>\n\nEOM;\n\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/other/plot_temps.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../include/jpgraph/jpgraph_date.php\";\n$nt = new NetworkTable(\"OT\");\n$cities = $nt->table;\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$station = substr(get_str404(\"station\", \"OT0002\"), 0, 10);\n\n$myTime = mktime(0, 0, 0, $month, $day, $year);\n\n$dirRef = date(\"Y_m/d\", $myTime);\n$titleDate = date(\"M d, Y\", $myTime);\n\n$db = iemdb(\"other\");\n$stname = iem_pg_prepare($db, \"SELECT * from t{$year} WHERE station = $1 and date(valid) = $2 ORDER by valid ASC\");\n$rs = pg_execute($db, $stname, array($station, date(\"Y-m-d\", $myTime)));\n\n$tmpf = array();\n$dwpf = array();\n$srad = array();\n$times = array();\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    $tmpf[] = $row[\"tmpf\"];\n    $dwpf[] = $row[\"dwpf\"];\n    $srad[] = $row[\"srad\"];\n    $times[] = strtotime($row[\"valid\"]);\n} // End of while\n\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600, 300);\n$graph->SetScale(\"datelin\");\n$graph->SetY2Scale(\"lin\", 0, 1000);\n\n$graph->img->SetMargin(65, 55, 45, 60);\n\n$graph->xaxis->SetLabelAngle(90);\n$graph->yaxis->scale->ticks->Set(2, 1);\n$graph->title->Set(\"Temperatures & Solar Radiation for \" . $cities[$station]['name']);\n$graph->subtitle->Set($titleDate);\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.15, 0.11);\n\n//[DMF]$graph->y2axis->scale->ticks->Set(100,25);\n\n$graph->yaxis->SetTitle(\"Temperature [F]\");\n\n$graph->y2axis->SetTitle(\"Solar Radiation [W m**-2]\");\n\n$graph->xaxis->SetTitle(\"Valid Local Time\");\n$graph->xaxis->SetTitleMargin(30);\n$graph->y2axis->SetTitleMargin(40);\n$graph->yaxis->SetTitleMargin(40);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot = new LinePlot($tmpf, $times);\n$lineplot->SetLegend(\"Temperature\");\n$lineplot->SetColor(\"red\");\n\n// Create the linear plot\n$lineplot2 = new LinePlot($dwpf, $times);\n$lineplot2->SetLegend(\"Dew Point\");\n$lineplot2->SetColor(\"blue\");\n\n// Create the linear plot\n$lineplot3 = new LinePlot($srad, $times);\n$lineplot3->SetLegend(\"Solar Rad\");\n$lineplot3->SetColor(\"black\");\n\n$graph->Add($lineplot2);\n$graph->Add($lineplot);\n$graph->AddY2($lineplot3);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/other/plot_winds.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../include/jpgraph/jpgraph_date.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$station = substr(get_str404(\"station\", \"OT0002\"), 0, 10);\n\n$myTime = mktime(0, 0, 0, $month, $day, $year);\n\n$dirRef = date(\"Y_m/d\", $myTime);\n$titleDate = date(\"M d, Y\", $myTime);\n\n$db = iemdb(\"other\");\n$stname = iem_pg_prepare(\n    $db,\n    \"SELECT * from alldata WHERE station = $1 and valid >= $2 and valid < $3 ORDER by valid ASC\",\n);\n$rs = pg_execute(\n    $db,\n    $stname,\n    array($station, date(\"Y-m-d\", $myTime), date(\"Y-m-d\", $myTime + 86400))\n);\n\n$drct = array();\n$sknt = array();\n$times = array();\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    $sknt[] = $row[\"sknt\"];\n    $drct[] = $row[\"drct\"];\n    $times[] = strtotime($row[\"valid\"]);\n} // End of while\n\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600, 300);\n$graph->SetScale(\"datelin\");\n$graph->SetY2Scale(\"lin\", 0, 360);\n\n$graph->img->SetMargin(65, 40, 45, 60);\n\n$graph->xaxis->SetLabelAngle(90);\n$graph->yaxis->scale->ticks->Set(2, 1);\n//$graph->yscale->SetGrace(10);\n$graph->title->Set(\"Winds\");\n$graph->subtitle->Set($titleDate);\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01, 0.075);\n\n//[DMF]$graph->y2axis->scale->ticks->Set(100,25);\n\n$graph->yaxis->SetTitle(\"Wind Speed [knots]\");\n\n//[DMF]$graph->y2axis->SetTitle(\"Solar Radiation [W m**-2]\");\n\n$graph->xaxis->SetTitle(\"Valid Local Time\");\n$graph->xaxis->SetTitleMargin(30);\n//$graph->yaxis->SetTitleMargin(48);\n$graph->yaxis->SetTitleMargin(40);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\nif (sizeof($drct) > 0 && max($drct) > 0) {\n    $lineplot = new LinePlot($drct, $times);\n    $lineplot->SetLegend(\"Direction\");\n    $lineplot->SetColor(\"blue\");\n    $graph->AddY2($lineplot);\n}\n\n// Create the linear plot\nif (sizeof($sknt) > 0 && max($sknt) > 0) {\n    $lineplot2 = new LinePlot($sknt, $times);\n    $lineplot2->SetLegend(\"Speed [kts]\");\n    $lineplot2->SetColor(\"red\");\n    $graph->Add($lineplot2);\n}\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/p.php",
    "content": "<?php\nrequire_once \"../include/forms.php\";\n$pid = get_str404('pid', \"\", 35);\nif ($pid != \"\"){\n    // Ensure it is in the proper format\n    if (!preg_match(\"/^[0-9]{12}-[A-Z0-9]{4}-[A-Z0-9]{4,6}-[A-Z\\-0-9]{4,10}$/\", $pid)){\n        xssafe(\"</script>\");\n    }\n}\n\n// 201212100547-KTOP-FXUS63-AFDTOP\n$tokens = explode(\"-\", $pid);\nif (sizeof($tokens) == 5){\n    $url = sprintf(\"pil=%s&e=%s&bbb=%s\", $tokens[3], $tokens[0], $tokens[4]);\n} else if (sizeof($tokens) == 4) {\n    $url = sprintf(\"pil=%s&e=%s\", $tokens[3], $tokens[0]);\n} else {\n    // For whatever reason, we get a lot of social media bots that come here\n    // without a pid.  We'll just redirect them to the home page.\n    header(\"Location: /\");\n    die();\n}\nheader(\"Location: /wx/afos/p.php?{$url}\");\n"
  },
  {
    "path": "htdocs/plotting/asos/1station_1min.phtml",
    "content": "<?php\nheader(\"Location: /plotting/auto/?q=211\");\n"
  },
  {
    "path": "htdocs/plotting/auto/autoplot.py",
    "content": "\"\"\"Implementation at /pylib/iemweb/autoplot/autoplot.py\"\"\"\n\nfrom iemweb.autoplot.autoplot import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/plotting/auto/gen_qrcode.py",
    "content": "\"\"\"Implementation at /pylib/iemweb/autoplot/gen_qrcode.py\"\"\"\n\nfrom iemweb.autoplot.gen_qrcode import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/plotting/auto/index.css",
    "content": ".apopts .apdiv:nth-of-type(odd) {\n    background-color: #f8f9fa;\n    border-radius: 0.375rem;\n    padding: 0.75rem;\n    margin: 0.25rem 0;\n}\n\n.apopts .apdiv:nth-of-type(even) {\n    background-color: #ffffff;\n    border-radius: 0.375rem;\n    padding: 0.75rem;\n    margin: 0.25rem 0;\n    border: 1px solid #e9ecef;\n}\n\n.apdiv {\n    margin-bottom: 0.5rem;\n}\n\n.apdiv label {\n    text-align: right;\n    padding-right: 1rem;\n}\n\n@media (max-width: 576px) {\n    .apdiv label {\n        text-align: left;\n        padding-right: 0;\n        margin-bottom: 0.5rem;\n    }\n}\n\n.optcontrol {\n    margin-right: 0.75rem;\n}\n\n.ui-datepicker-year,\n.ui-datepicker-month {\n    color: #000;\n}\n\n.sday .ui-datepicker-year {\n    display: none;\n}\n\n.popup {\n    background-color: rgba(0, 0, 0, 0.75);\n    color: #FFF;\n    font-weight: bold;\n    font-size: 1.2em;\n    padding: 1.25rem;\n    z-index: 10002;\n    border-radius: 0.375rem;\n}\n\n.highcharts-root {\n    font-size: 16px !important;\n}\n\n.cmapselect {\n    width: 400px;\n}\n"
  },
  {
    "path": "htdocs/plotting/auto/index.module.js",
    "content": "\nimport flatpickr from 'https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/+esm';\nimport tomSelect from 'https://cdn.jsdelivr.net/npm/tom-select@2.4.3/+esm'\nimport { requireInputElement, requireElement } from '/js/iemjs/domUtils.js';\n\n/**\n * Format state for colormap select dropdown\n * @param {Object} data - The select option data\n * @returns {string} HTML string for the option\n */\nexport function formatState(data) {\n    return `<div><img src=\"/pickup/cmaps/${data.value}.png\" /> ${data.text}</div>`;\n}\n\n/**\n * Handle network change events - submit form with wait indicator\n */\nexport function onNetworkChange() {\n    const waitInput = requireInputElement('_wait');\n    waitInput.value = 'yes';\n    requireElement('myForm').submit();\n}\n\n/**\n * Hide the image loading indicator\n */\nexport function hideImageLoad() {\n    const willload = document.getElementById('willload');\n    if (willload) {\n        willload.style.display = 'none';\n    }\n}\n\n/**\n * Setup timing progress bar for image loading\n */\nexport function setupTiming() {\n    const willload = document.getElementById(\"willload\");\n    if (!willload) {return;}\n    if (!willload.dataset.timingsecs) {return;}\n\n    const timingSecs = parseInt(willload.dataset.timingsecs, 10);\n    let timing = 0;\n\n    const progressBar = setInterval(() => {\n        if (\n            timing >= timingSecs ||\n            document.getElementById('willload').style.display === 'none'\n        ) {\n            clearInterval(progressBar);\n        }\n        const width = (timing / timingSecs) * 100;\n        const timingBar = document.getElementById('timingbar');\n        timingBar.style.width = `${width}%`;\n        timingBar.setAttribute('aria-valuenow', width);\n        timing = timing + 0.2;\n    }, 200);\n}\n\n/**\n * Create flatpickr instance for date/time inputs\n * @param {HTMLElement} inputelem - The input element to attach flatpickr to\n * @returns {Object} The flatpickr instance\n */\nexport function createFP(inputelem) {\n    return flatpickr(inputelem, {\n        dateFormat: inputelem.dataset.dateformat,\n        defaultDate: inputelem.dataset.defaultdate,\n        minDate: inputelem.dataset.mindate,\n        maxDate: inputelem.dataset.maxdate,\n        allowInput: true,\n        time_24hr: true,\n        enableTime: inputelem.dataset.dateformat.includes('H'),\n        onChange: () => {\n            if (inputelem.dataset.onc === 'true') {\n                onNetworkChange();\n            }\n        }\n    });\n}\n\n/**\n * Initialize optional controls\n */\nfunction initOptionalControls() {\n    document.querySelectorAll('.optcontrol').forEach(control => {\n        control.addEventListener('change', () => {\n            const targetEl = document.getElementById(control.name);\n            if (targetEl) {\n                targetEl.style.display = control.checked ? 'block' : 'none';\n            }\n        });\n    });\n}\n\n/**\n * Initialize flatpickr date inputs\n */\nfunction initDateInputs() {\n    document.querySelectorAll('.apfp').forEach(createFP);\n}\n\n/**\n * Initialize image load handlers\n */\nfunction initImageHandlers() {\n    const theImage = document.getElementById('theimage');\n    if (theImage) {\n        theImage.addEventListener('load', hideImageLoad);\n        theImage.addEventListener('error', hideImageLoad);\n\n        // Check if image is already loaded (cached)\n        if (theImage.complete) {\n            hideImageLoad();\n        }\n    }\n}\n\n/**\n * Initialize colormap select dropdowns\n */\nfunction initColormapSelects() {\n    document.querySelectorAll('.cmapselect').forEach(el => {\n        window.ts = new tomSelect(el, {\n            maxOptions: 1000,\n            render: {\n                option: formatState,\n                item: formatState,\n            },\n        });\n    });\n}\n\n/**\n * Main initialization function\n */\nfunction init() {\n    setupTiming();\n    initOptionalControls();\n    initDateInputs();\n    initImageHandlers();\n    initColormapSelects();\n\n    // Make functions available globally for HTML onclick handlers\n    window.onNetworkChange = onNetworkChange;\n    window.hideImageLoad = hideImageLoad;\n    window.formatState = formatState;\n}\n\n// Initialize when DOM is ready\ndocument.addEventListener('DOMContentLoaded', init);\n"
  },
  {
    "path": "htdocs/plotting/auto/index.py",
    "content": "\"\"\"Implementation at /pylib/iemweb/autoplot/index.py\"\"\"\n\nfrom iemweb.autoplot.index import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/plotting/auto/js/mapselect.js",
    "content": "/* global ol */\n\nconst climateStyle = new ol.style.Style({\n    zIndex: 100,\n    image: new ol.style.Circle({\n        fill: new ol.style.Fill({ color: '#00ff00' }),\n        stroke: new ol.style.Stroke({\n            color: '#008800',\n            width: 2.25\n        }),\n        radius: 7\n    })\n});\n\nconst stationStyleOffline = new ol.style.Style({\n    zIndex: 99,\n    image: new ol.style.Circle({\n        fill: new ol.style.Fill({ color: '#ff0000' }),\n        stroke: new ol.style.Stroke({\n            color: '#880000',\n            width: 2.25\n        }),\n        radius: 7\n    })\n});\n\nconst climodistrictStyle = new ol.style.Style({\n    zIndex: 101,\n    text: new ol.style.Text({\n        text: '',\n        font: 'bold 14pt serif',\n        fill: new ol.style.Fill({\n            color: [255, 255, 255, 1],\n        }),\n        backgroundFill: new ol.style.Fill({\n            color: [0, 0, 255, 1],\n        }),\n        padding: [2, 2, 2, 2],\n    })\n});\n\nconst stateStyle = new ol.style.Style({\n    zIndex: 102,\n    text: new ol.style.Text({\n        text: '',\n        font: 'bold 14pt serif',\n        fill: new ol.style.Fill({\n            color: [255, 255, 255, 1],\n        }),\n        backgroundFill: new ol.style.Fill({\n            color: [255, 0, 0, 1],\n        }),\n        padding: [2, 2, 2, 2],\n    })\n});\n\n\nfunction stationLayerStyleFunc(feature) {\n    const network = feature.get(\"network\");\n    if (network.search(\"CLIMATE\") > 0) {\n        const sid = feature.get(\"sid\");\n        if (sid.substring(2, 1) === \"C\") {\n            climodistrictStyle.getText().setText(sid.substring(0, 2) + parseInt(sid.substring(3, 3)));\n            return climodistrictStyle;\n        }\n        if (sid.substring(2, 4) === \"0000\") {\n            stateStyle.getText().setText(sid.substring(0, 2));\n            return stateStyle;\n        }\n    }\n    if (feature.get(\"archive_end\") !== null) {return stationStyleOffline;} \n    return climateStyle;\n}\n\n \nfunction mapFactory(network, formname) {\n    // Check the state of our button\n    const button = document.getElementById(`button_${network}_${formname}`);\n    const state = parseInt(button.dataset.state || \"0\", 10);\n    const mapWrap = document.getElementById(`map_${network}_${formname}_wrap`);\n    \n    if (state === 0) {\n        // first time to open\n        button.dataset.state = \"1\";\n        button.textContent = \"Hide Map\";\n    } else if (state === 1) {\n        // Should hide me\n        button.dataset.state = \"2\";\n        button.textContent = \"Show Map\";\n        mapWrap.style.display = \"none\";\n        return;\n    } else {\n        // Should show me\n        button.dataset.state = \"1\";\n        button.textContent = \"Hide Map\";\n        mapWrap.style.display = \"block\";\n        return;\n    }\n\n    mapWrap.style.display = \"block\";\n\n    const olMap = new ol.Map({\n        target: `map_${network}_${formname}`,\n        view: new ol.View({\n            enableRotation: false,\n            center: ol.proj.transform([-94.5, 42.1], 'EPSG:4326', 'EPSG:3857'),\n            zoom: 7,\n            maxZoom: 16,\n            minZoom: 1\n        }),\n        layers: [\n            new ol.layer.Tile({\n                title: 'OpenStreetMap',\n                visible: true,\n                type: 'base',\n                source: new ol.source.OSM()\n            })\n        ]\n    });\n    const stationLayer = new ol.layer.Vector({\n        title: \"Stations\",\n        source: new ol.source.Vector({\n            url: `/geojson/network.py?network=${network}`,\n            format: new ol.format.GeoJSON()\n        }),\n        style: stationLayerStyleFunc\n    });\n    stationLayer.getSource().on('change', () => {\n        if (stationLayer.getSource().getState() === 'ready') {\n            olMap.getView().fit(\n                stationLayer.getSource().getExtent(),\n                {\n                    size: olMap.getSize(),\n                    padding: [50, 50, 50, 50]\n                }\n            );\n        }\n    });\n    olMap.addLayer(stationLayer);\n    //  showing the position the user clicked\n    const popup = new ol.Overlay({\n        element: document.getElementById(`popup_${network}_${formname}`),\n        offset: [7, 7]\n    });\n    olMap.addOverlay(popup);\n\n    olMap.on('pointermove', (event) => {\n        if (event.dragging) { return; }\n        const feature = olMap.forEachFeatureAtPixel(event.pixel,\n            (feature2) => {\n                return feature2;\n            });\n        if (feature === undefined) {\n            popup.element.hidden = true;\n            return;\n        }\n        popup.element.hidden = false;\n        popup.setPosition(event.coordinate);\n        const html = [\n            `<strong>ID:</strong> ${feature.get(\"sid\")}`,\n            `<br /><strong>Name:</strong> ${feature.get(\"sname\")}`,\n            `<br /><strong>POR:</strong> ${feature.get(\"time_domain\")}`,\n        ]\n        document.getElementById(`popup_${network}_${formname}`).innerHTML = html.join(\"\");\n    });\n    olMap.on(\"click\", (event) => {\n        const feature = olMap.forEachFeatureAtPixel(event.pixel,\n            (feature2) => {\n                return feature2;\n            });\n        if (feature === undefined) {\n            return;\n        }\n        const station = feature.get(\"sid\");\n        const selectElement = document.querySelector(`select[name=\"${formname}\"]`);\n        if (selectElement?.tomselect) {\n            // Use Tom Select API to update value and UI\n            selectElement.tomselect.setValue(station, true);\n        } else if (selectElement) {\n            // Fallback for plain select\n            selectElement.value = station;\n            const changeEvent = new Event('change', { bubbles: true });\n            selectElement.dispatchEvent(changeEvent);\n        }\n    });\n    // Fix responsive issues\n    olMap.updateSize();\n\n};\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    // appease linter\n    const nonExistentElement = document.getElementById(\"doesnotexist\");\n    if (nonExistentElement) {\n        nonExistentElement.addEventListener('click', () => {\n            mapFactory(\"IACLIMATE\", \"station\");\n        });\n    }\n});"
  },
  {
    "path": "htdocs/plotting/auto/meta.py",
    "content": "\"\"\"Implementation at /pylib/iemweb/autoplot/meta.py\"\"\"\n\nfrom iemweb.autoplot.meta import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/plotting/awos/1min.php",
    "content": "<?php\n// 1 minute schoolnet data plotter\n// Cool.....\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\n$nt = new NetworkTable(\"IA_ASOS\");\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_scatter.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_led.php\";\n\n$station = isset($_GET[\"station\"]) ? xssafe($_GET[\"station\"]) : \"\";\n$year = get_int404(\"year\", date(\"Y\", time() - 86400));\n$month = get_int404(\"month\", date(\"m\", time() - 86400));\n$day = get_int404(\"day\", date(\"d\", time() - 86400));\n\n\n$myTime = strtotime($year . \"-\" . $month . \"-\" . $day);\n\n$titleDate = date(\"M d, Y\", $myTime);\n$tableName = sprintf(\"t%s\", date(\"Y_m\", $myTime));\n$sqlDate = date(\"Y-m-d\", $myTime);\n\n/** Time to get data from database **/\n$connection = iemdb(\"awos\");\n$stname = iem_pg_prepare($connection, \"SELECT \" .\n    \"to_char(valid, 'HH24:MI') as tvalid, tmpf, dwpf from \" .\n    \"alldata WHERE station = $1 and \" .\n    \" valid >= $2 and valid < $3 ORDER by tvalid\");\n\n$result = pg_execute($connection, $stname, array($station, $sqlDate, $sqlDate . \" 23:59:59\"));\n\nif (pg_num_rows($result) == 0) {\n    $led = new DigitalLED74();\n    $led->StrokeNumber('NO DATA FOR THIS DATE', LEDC_GREEN);\n    die();\n}\n\n$tmpf = array();\n$dwpf = array();\n$xlabel = array();\n\n$start = intval($myTime);\n$i = 0;\n\n$dups = 0;\n$missing = 0;\n$min_yaxis = 100;\n$max_yaxis = 0;\n\nfor ($p = 0; $row = pg_fetch_assoc($result); $p++) {\n    $strDate = $sqlDate . \" \" . $row[\"tvalid\"];\n    $timestamp = strtotime($strDate);\n\n    $thisTmpf = $row[\"tmpf\"];\n    $thisDwpf = $row[\"dwpf\"];\n    if ($thisTmpf < -50 || $thisTmpf > 150) {\n        $thisTmpf = \"\";\n    } else {\n        if ($max_yaxis < $thisTmpf) {\n            $max_yaxis = $thisTmpf;\n        }\n    }\n    if ($thisDwpf < -50 || $thisDwpf > 150) {\n        $thisDwpf = \"\";\n    } else {\n        if ($min_yaxis > $thisDwpf) {\n            $min_yaxis = $thisDwpf;\n        }\n    }\n\n    $shouldbe = intval($start) + 60 * $i;\n\n    // We are good, write data, increment i\n    if ($shouldbe == $timestamp) {\n        #    echo \" EQUALS <br>\";\n        $tmpf[$i] = $thisTmpf;\n        $dwpf[$i] = $thisDwpf;\n        $xlabel[$i] = $row[\"tvalid\"];\n        $i++;\n        continue;\n\n        // Missed an ob, leave blank numbers, inc i\n    } else if (($timestamp - $shouldbe) > 0) {\n        #    echo \" TROUBLE <br>\";\n        $tester = $shouldbe + 60;\n        while ($tester <= $timestamp) {\n            $tester = $tester + 60;\n            $tmpf[$i] = \"\";\n            $dwpf[$i] = \"\";\n            $xlabel[$i] = \"\";\n            $i++;\n            $missing++;\n        }\n        $tmpf[$i] = $thisTmpf;\n        $dwpf[$i] = $thisDwpf;\n        $i++;\n        continue;\n\n        $q--;\n    } else if (($timestamp - $shouldbe) < 0) {\n        #    echo \"DUP <br>\";\n        $dups++;\n    }\n} // End of while\n\n$xpre = array(\n    0 => '12 AM', '1 AM', '2 AM', '3 AM', '4 AM', '5 AM',\n    '6 AM', '7 AM', '8 AM', '9 AM', '10 AM', '11 AM', 'Noon',\n    '1 PM', '2 PM', '3 PM', '4 PM', '5 PM', '6 PM', '7 PM',\n    '8 PM', '9 PM', '10 PM', '11 PM', 'Midnight'\n);\n\nfor ($j = 0; $j < 24; $j++) {\n    $xlabel[$j * 60] = $xpre[$j];\n}\n\n// Fix y[0] problems\nif ($tmpf[0] == \"\") {\n    $tmpf[0] = 0;\n}\nif ($dwpf[0] == \"\") {\n    $dwpf[0] = 0;\n}\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600, 300, \"example1\");\n$graph->SetScale(\"textlin\", $min_yaxis - 4, $max_yaxis + 4);\n$graph->img->SetMargin(55, 40, 55, 60);\n$graph->xaxis->SetTickLabels($xlabel);\n$graph->xaxis->SetTextTickInterval(60);\n\n$graph->xaxis->SetLabelAngle(90);\n$graph->yscale->SetGrace(10);\n$graph->title->Set($nt->table[$station]['name'] . \" Time Series\");\n$graph->subtitle->Set($titleDate);\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01, 0.07);\n\n$graph->yaxis->SetTitle(\"Temperature [F]\");\n\n$graph->xaxis->SetTitle(\"Valid Local Time\");\n$graph->xaxis->SetTitleMargin(30);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot = new LinePlot($tmpf);\n$graph->Add($lineplot);\n$lineplot->SetLegend(\"Temperature\");\n$lineplot->SetColor(\"red\");\n\n// Create the linear plot\n$lineplot2 = new LinePlot($dwpf);\n$graph->Add($lineplot2);\n$lineplot2->SetLegend(\"Dew Point\");\n$lineplot2->SetColor(\"blue\");\n\n// Box for error notations\n$t1 = new Text(\"Dups: \" . $dups . \" Missing: \" . $missing);\n$t1->SetPos(0.4, 0.95);\n$t1->SetOrientation(\"h\");\n$t1->SetColor(\"black\");\n$graph->AddText($t1);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/awos/1min_P.php",
    "content": "<?php\n// Cool.....\n\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\n$nt = new NetworkTable(\"IA_ASOS\");\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_led.php\";\n\n$station = isset($_GET[\"station\"]) ? xssafe($_GET[\"station\"]) : \"\";\n$year = get_int404(\"year\", date(\"Y\", time() - 86400));\n$month = get_int404(\"month\", date(\"m\", time() - 86400));\n$day = get_int404(\"day\", date(\"d\", time() - 86400));\n\n$myTime = strtotime($year . \"-\" . $month . \"-\" . $day);\n\n$titleDate = date(\"M d, Y\", $myTime);\n$tableName = sprintf(\"t%s\", date(\"Y_m\", $myTime));\n$sqlDate = date(\"Y-m-d\", $myTime);\n\n$connection = iemdb(\"awos\");\n$stname = iem_pg_prepare($connection, \"SELECT \" .\n    \"to_char(valid, 'HH24:MI') as tvalid, p01i, alti from \" .\n    \"alldata WHERE station = $1 and \" .\n    \"valid >= $2 and valid < $3 ORDER by tvalid\");\n\n$result = pg_execute($connection, $stname, array($station, $sqlDate, $sqlDate . \" 23:59:59\"));\n\nif (pg_num_rows($result) == 0) {\n    $led = new DigitalLED74();\n    $led->StrokeNumber('NO DATA FOR THIS DATE', LEDC_GREEN);\n    die();\n}\n\n$prec = array();\n$alti = array();\n$xlabel = array();\n\n$start = intval($myTime);\n$i = 0;\n\n$dups = 0;\n$missing = 0;\n$accumP = 0;\n$lastP = 0;\n\nfor ($p = 0; $row = pg_fetch_assoc($result); $p++) {\n    $strDate = $sqlDate . \" \" . $row[\"tvalid\"];\n    $timestamp = strtotime($strDate);\n\n    $thisALTI = $row[\"alti\"] * 33.8639;\n    $thisPREC = $row[\"p01i\"];\n    if ($thisALTI < 800) {\n        $thisALTI = \"\";\n    }\n\n    if ($thisPREC > $lastP) {\n        $accumP = $accumP + $thisPREC - $lastP;\n        $lastP = $thisPREC;\n    } else if ($thisPREC < $lastP) { // RESET\n        $accumP = $accumP + $thisPREC;\n        $lastP = $thisPREC;\n    }\n    #  echo $thisPREC .\" - \". $accumP .\" - \". $lastP .\"<br>\\n\";\n\n    $shouldbe = intval($start) + 60 * $i;\n\n    #  echo  $i .\" - \". $line_num .\"-\". $shouldbe .\" - \". $timestamp ;\n\n    // We are good, write data, increment i\n    if ($shouldbe == $timestamp) {\n        #    echo \" EQUALS <br>\";\n        $prec[$i] = $accumP;\n        $alti[$i] = $thisALTI;\n        $i++;\n        continue;\n\n        // Missed an ob, leave blank numbers, inc i\n    } else if (($timestamp - $shouldbe) > 0) {\n        #    echo \" TROUBLE <br>\";\n        $tester = $shouldbe + 60;\n        while ($tester <= $timestamp) {\n            $tester = $tester + 60;\n            $prec[$i] = $accumP;\n            $alti[$i] = \"\";\n\n            $i++;\n            $missing++;\n        }\n        $prec[$i] = $accumP;\n        $alti[$i] = $thisALTI;\n        $i++;\n        continue;\n\n        $p--;\n    } else if (($timestamp - $shouldbe) < 0) {\n        #    echo \"DUP <br>\";\n        $dups++;\n    }\n} // End of while\n\n$xpre = array(\n    0 => '12 AM',\n    '1 AM',\n    '2 AM',\n    '3 AM',\n    '4 AM',\n    '5 AM',\n    '6 AM',\n    '7 AM',\n    '8 AM',\n    '9 AM',\n    '10 AM',\n    '11 AM',\n    'Noon',\n    '1 PM',\n    '2 PM',\n    '3 PM',\n    '4 PM',\n    '5 PM',\n    '6 PM',\n    '7 PM',\n    '8 PM',\n    '9 PM',\n    '10 PM',\n    '11 PM',\n    'Midnight'\n);\n\n\nfor ($j = 0; $j < 24; $j++) {\n    $xlabel[$j * 60] = $xpre[$j];\n}\n\n\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600, 300, \"example1\");\n$graph->SetScale(\"textlin\");\n$graph->SetY2Scale(\"lin\", 0, $accumP + 1.00);\n$graph->img->SetMargin(55, 40, 55, 60);\n$graph->xaxis->SetTickLabels($xlabel);\n$graph->xaxis->SetTextTickInterval(60);\n$graph->xaxis->SetLabelAngle(90);\n$graph->title->Set($nt->table[$station]['name'] . \" Time Series\");\n$graph->subtitle->Set($titleDate);\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01, 0.07);\n\n//$graph->yaxis->scale->ticks->Set(90,15);\n$graph->y2axis->scale->ticks->Set(1, 0.25);\n\n$graph->yaxis->SetColor(\"black\");\n$graph->yscale->SetGrace(10);\n$graph->y2axis->SetColor(\"blue\");\n\n$graph->yaxis->SetTitle(\"Altimeter [mb]\");\n$graph->y2axis->SetTitle(\"Accumulated Precipitation [inches]\");\n\n$graph->xaxis->SetTitle(\"Valid Local Time\");\n$graph->xaxis->SetTitleMargin(30);\n$graph->yaxis->SetTitleMargin(43);\n//$graph->y2axis->SetTitleMargin(28);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot = new LinePlot($alti);\n$graph->Add($lineplot);\n$lineplot->SetLegend(\"Altimeter\");\n$lineplot->SetColor(\"black\");\n\n// Create the linear plot\n$lineplot2 = new LinePlot($prec);\n$graph->AddY2($lineplot2);\n$lineplot2->SetLegend(\"Precipitation\");\n$lineplot2->SetColor(\"blue\");\n//$lineplot2->SetFilled();\n//$lineplot2->SetFillColor(\"blue\");\n\n// Box for error notations\n$t1 = new Text(\"Dups: \" . $dups . \" Missing: \" . $missing);\n$t1->SetPos(0.4, 0.95);\n$t1->SetOrientation(\"h\");\n//$t1->SetBox(\"white\",\"black\",true);\n$t1->SetColor(\"black\");\n$graph->AddText($t1);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/awos/1min_V.php",
    "content": "<?php\n\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\n$nt = new NetworkTable(\"IA_ASOS\");\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_scatter.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_led.php\";\n\n$station = isset($_GET[\"station\"]) ? xssafe($_GET[\"station\"]) : \"\";\n$year = get_int404(\"year\", date(\"Y\", time() - 86400));\n$month = get_int404(\"month\", date(\"m\", time() - 86400));\n$day = get_int404(\"day\", date(\"d\", time() - 86400));\n\n$myTime = strtotime($year . \"-\" . $month . \"-\" . $day);\n\n$titleDate = date(\"M d, Y\", $myTime);\n$tableName = sprintf(\"t%s\", date(\"Y_m\", $myTime));\n$sqlDate = date(\"Y-m-d\", $myTime);\n\n$mph = array();\n$drct = array();\n$xlabel = array();\n\n$start = intval($myTime);\n$i = 0;\n\n$dups = 0;\n$missing = 0;\n\n\n/** Time to get data from database **/\n$connection = iemdb(\"awos\");\n$stname = iem_pg_prepare($connection, \"SELECT \" .\n    \"to_char(valid, 'HH24:MI') as tvalid, sknt, drct from \" .\n    \"alldata WHERE station = $1 and \" .\n    \"  valid >= $2 and valid < $3 ORDER by tvalid\");\n\n$result = pg_execute($connection, $stname, array($station, $sqlDate, $sqlDate . \" 23:59:59\"));\n\nif (pg_num_rows($result) == 0) {\n    $led = new DigitalLED74();\n    $led->StrokeNumber('NO DATA FOR THIS DATE', LEDC_GREEN);\n    die();\n}\n\nfor ($p = 0; $row = pg_fetch_assoc($result); $p++) {\n    $strDate = $sqlDate . \" \" . $row[\"tvalid\"];\n    $timestamp = strtotime($strDate);\n    #  echo $thisTime .\"||\";\n\n    $thisMPH = $row[\"sknt\"] * 1.15;\n    $thisDRCT = $row[\"drct\"];\n    if ($thisMPH > 200)  $thisMPH = \" \";\n\n    $shouldbe = intval($start) + 60 * $i;\n\n    #  echo  $i .\" - \". $line_num .\"-\". $shouldbe .\" - \". $timestamp ;\n\n    // We are good, write data, increment i\n    if ($shouldbe == $timestamp) {\n        #    echo \" EQUALS <br>\";\n        if ($i % 10 == 0) {\n            $drct[$i] = $thisDRCT;\n        } else {\n            $drct[$i] = \"-199\";\n        }\n        $mph[$i] = $thisMPH;\n        $i++;\n        continue;\n\n        // Missed an ob, leave blank numbers, inc i\n    } else if (($timestamp - $shouldbe) > 0) {\n        #    echo \" TROUBLE <br>\";\n        $tester = $shouldbe + 60;\n        while ($tester <= $timestamp) {\n            $tester = $tester + 60;\n            $drct[$i] = \"\";\n            $mph[$i] = \"\";\n\n            $i++;\n            $missing++;\n        }\n        if ($i % 10 == 0) {\n            $drct[$i] = $thisDRCT;\n        } else {\n            $drct[$i] = \"\";\n        }\n        $mph[$i] = $thisMPH;\n        $i++;\n        continue;\n\n        $p--;\n    } else if (($timestamp - $shouldbe) < 0) {\n        #    echo \"DUP <br>\";\n        $dups++;\n    }\n} // End of while\n\n$xpre = array(\n    0 => '12 AM',\n    '1 AM',\n    '2 AM',\n    '3 AM',\n    '4 AM',\n    '5 AM',\n    '6 AM',\n    '7 AM',\n    '8 AM',\n    '9 AM',\n    '10 AM',\n    '11 AM',\n    'Noon',\n    '1 PM',\n    '2 PM',\n    '3 PM',\n    '4 PM',\n    '5 PM',\n    '6 PM',\n    '7 PM',\n    '8 PM',\n    '9 PM',\n    '10 PM',\n    '11 PM',\n    'Midnight'\n);\n\n\nfor ($j = 0; $j < 24; $j++) {\n    $xlabel[$j * 60] = $xpre[$j];\n}\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600, 300, \"example1\");\n$graph->SetScale(\"textlin\", 0, 360);\n$graph->SetY2Scale(\"lin\");\n$graph->img->SetMargin(55, 40, 55, 60);\n$graph->xaxis->SetTickLabels($xlabel);\n$graph->xaxis->SetTextTickInterval(60);\n$graph->xaxis->SetLabelAngle(90);\n$graph->title->Set($nt->table[$station]['name'] . \" Time Series\");\n$graph->subtitle->Set($titleDate);\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01, 0.07);\n\n$graph->yaxis->scale->ticks->Set(90, 15);\n\n$graph->yaxis->SetColor(\"blue\");\n$graph->y2axis->SetColor(\"red\");\n\n\n$graph->yaxis->SetTitle(\"Wind Direction\");\n$graph->y2axis->SetTitle(\"Wind Speed [MPH]\");\n\n$graph->xaxis->SetTitle(\"Valid Local Time\");\n$graph->xaxis->SetTitleMargin(30);\n$graph->yaxis->SetTitleMargin(30);\n//$graph->y2axis->SetTitleMargin(28);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot = new LinePlot($mph);\n$graph->AddY2($lineplot);\n$lineplot->SetLegend(\"5 second Wind Speed\");\n$lineplot->SetColor(\"red\");\n\n// Create the linear plot\n$sp1 = new ScatterPlot($drct);\n$graph->Add($sp1);\n$sp1->mark->SetType(MARK_FILLEDCIRCLE);\n$sp1->mark->SetFillColor(\"blue\");\n$sp1->mark->SetWidth(3);\n\n// Box for error notations\n$t1 = new Text(\"Dups: \" . $dups . \" Missing: \" . $missing);\n$t1->SetPos(0.4, 0.95);\n$t1->SetOrientation(\"h\");\n//$t1->SetBox(\"white\",\"black\",true);\n$t1->SetColor(\"black\");\n$graph->AddText($t1);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/awos/1station_1min.php",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n$t = new MyView();\n\n$station = isset($_GET[\"station\"]) ? xssafe($_GET[\"station\"]): \"\";\n$year = get_int404(\"year\", 2011);\n$month = get_int404(\"month\", 1);\n$day = get_int404(\"day\", 1);\n\n$t->title = \"AWOS 1 Minute Time Series\";\n\n$nselect = networkSelect(\"IA_ASOS\", $station);\n$yselect = yearSelect(1995, 2011, $year);\n$mselect = monthSelect($month);\n$dselect = daySelect($day);\n$content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n <li class=\"breadcrumb-item\"><a href=\"/AWOS/\">AWOS Network</a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\">One minute time series</li>\n</ol>\n</nav>\n\n<p><b>Note:</b>The archive currently contains data from 1 Jan 1995 \ntill <strong>1 April 2011</strong>. \nFort Dodge and Clinton were converted to ~ASOS, \nbut are available for some times earlier in the archive.<p>\n\n  <form method=\"GET\" action=\"1station_1min.php\">\nMake plot selections: <br>\n    {$nselect} \n \n   {$yselect}\n   {$mselect}\n   {$dselect}\n   \n  <input type=\"submit\" value=\"Make Plot\">\n  </form>\nEOM;\nif (strlen($station) > 0 ) {\n\n$content .= <<<EOM\n\n<br />\n<img class=\"img-fluid\" src=\"1min.php?year={$year}&amp;month={$month}&amp;day={$day}&amp;station={$station}\" alt=\"Time Series\">\n\n<br />\n<img class=\"img-fluid\" src=\"1min_V.php?year={$year}&amp;month={$month}&amp;day={$day}&amp;station={$station}\" alt=\"Time Series\">\n\n<br>\n<img class=\"img-fluid\" src=\"1min_P.php?year={$year}&amp;month={$month}&amp;day={$day}&amp;station={$station}\" alt=\"Time Series\">\n\n\n<p><b>Note:</b> The wind speeds are indicated every minute by the red line. \nThe blue dots represent wind direction and are shown every 10 minutes.</p>\n\nEOM;\n} \n$content .= <<<EOM\n\n<br><br>\nEOM;\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/plotting/coop/acc.phtml",
    "content": "<?php\nheader(\"Location: /plotting/auto/?q=108\");\n"
  },
  {
    "path": "htdocs/plotting/coop/climate_fe.php",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\ninclude_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->title = \"COOP Climate Plots\";\n\n$station1 = isset($_GET[\"station1\"]) ? xssafe($_GET[\"station1\"]): \"IA0000\";\n$station2 = isset($_GET[\"station2\"]) ? xssafe($_GET[\"station2\"]): null;\n$mode = isset($_GET[\"mode\"]) ? xssafe($_GET[\"mode\"]): \"\";\n\n$imgurl = sprintf(\"/plotting/auto/plot/180/network1:IACLIMATE::station1:%s\", $station1);\nif ($mode == 'c'){\n    $imgurl .= sprintf(\"::station2:%s\", $station2);\n}\n$imgurl .= \".png\";\n\n$ar = Array(\"o\" => \"One Station\", \"c\" => \"Compare Two\");\n$modeselect = make_select(\"mode\", $mode, $ar);\n\n$s1 = networkSelect(\"IACLIMATE\", $station1, Array(), \"station1\");\n$s2 = networkSelect(\"IACLIMATE\", $station2, Array(), \"station2\");\n\n$t->content = <<<EOM\n<h3>Daily Climatology</h3>\n\n<p>This application dynamically generates plots of the daily average high\nand low temperature for climate locations tracked by the IEM.  You can optionally\nplot two stations at once for a visual comparison.</p>\n\n\n     <b>Make Plot Selections:</b>\n\n\n<form method=\"GET\" action=\"climate_fe.php\">\n\n<table class=\"table table-striped\">\n<tr>\n  <th class=\"subtitle\">Station 1</th>\n  <th class=\"subtitle\">Station 2</th>\n  <td></td>\n  <td></td>\n</tr>\n\n<tr>\n<td>{$s1}</td>\n<td>{$s2}</td>\n<td>\n{$modeselect}\n</td>\n\n<td>\n<input type=\"submit\" value=\"Make Plot\">\n\n</form>\n</td>\n\n</tr></table>\n\n\n\n<img src=\"$imgurl\">\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/plotting/coop/gddprobs.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 147);\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/forms.php\";\n\n$station = isset($_GET[\"station\"]) ? xssafe($_GET[\"station\"]) : \"IA0200\";\n$network = isset($_REQUEST[\"network\"]) ? xssafe($_REQUEST[\"network\"]) : \"IACLIMATE\";\n$gddbase = isset($_REQUEST[\"gddbase\"]) ? intval($_REQUEST[\"gddbase\"]) : 2600;\n\n$imgurl = sprintf(\"/plotting/auto/plot/179/network:%s::station:%s\" .\n    \"::gddbase:%s::dpi:100.png\", $network, $station, $gddbase);\n\n$t->title = \"Growing Degree Day Scenarios / Probabilities\";\n$nselect = networkSelect($network, $station);\n$sselect = selectNetworkType(\"CLIMATE\", $network);\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/COOP/\">NWS COOP Network</a></li>\n <li class=\"active\">Growing Degree Day Probabilities</li>\n</ol>\n\n<h3>Growing Degree Day Probabilities</h3>\n\n<p>This application creates two 2-D histograms of GDD accumulation frequencies.\nThese frequencies are based on historical data for the specificed site and base\nthe end of each year's growing season on the first sub freezing temperature of\nthe fall.  The left hand plot shows the overall frequency based on each year's \ndata.  The right hand plot does a scenario using the combination of year to date\ndata for this year and then each previous year afterwards is appended to this\nyear's data to provide frequencies.  The right hand plot is meant to provide \ncurrent frequencies / probabilities of what could potentially happen this year.\n\n<p>One interpretation of the plot is given a corn emergence date of 1 May, the\nfrequency that {$gddbase} GDDs units are accumulated by 1 October \nand <strong>without a freeze event</strong> are XX %.  Meaning XX % of years\non record got to {$gddbase} by 1 October prior to a freeze.\n\n<p>Data is available from the following states:\n<form method=\"GET\" name=\"ssss\">\n{$sselect}\n<input type=\"submit\" value=\"Select State\">\n</form>\n\n<div class=\"text\">\n\n<form name=\"olselect\" action=\"gddprobs.phtml\" method=\"GET\">\n<input type=\"hidden\" name=\"network\" value=\"{$network}\" />\n<table class=\"table table-sm\">\n<thead>\n<tr><th>Climate Site:</th><th>GDD Accumulation</th></tr>\n</thead>\n<tbody>\n<tr>\n  <td rowspan=\"2\">{$nselect}</td>\n  <td><input type=\"text\" size=\"10\" name=\"gddbase\" value=\"{$gddbase}\" /></td>\n</tr>\n</tbody>\n</table>\n <p><input type=\"submit\" value=\"Make Plot\">\n</form>\n\n<p><img src=\"{$imgurl}\" at=\"GDD Probs\">\n\n<p>The image will appear above and may take a few seconds to generate.\n\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/plotting/coop/gspread.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n\n$t->title = \"Growing Season Temperature Spreads\";\n\n$t->content = <<<EOM\n<p><h3>Seasonal Temperature Spreads</h3><p>\n\n<p>Related: <a href=\"spread_fe.phtml\">View by Date</a>\n<b>|</b> <a href=\"mspread.phtml\">View by Month</a>\n\n<p><img src=\"images/spread_djf.png\">\n<p><img src=\"images/spread_mam.png\">\n<p><img src=\"images/spread_jja.png\">\n<p><img src=\"images/spread_son.png\">\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/plotting/coop/mspread.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n\n$t->title = \"Monthly Temperature Spreads\";\n$t->content = <<<EOM\n\n<p><h3>Monthly Temperature Spreads</h3><p>\n\n<p>Related: <a href=\"spread_fe.phtml\">View by Date</a>\n<b>|</b> <a href=\"gspread.phtml\">View by Season</a>\n\n<p><img src=\"images/spread_jan.png\">\n<p><img src=\"images/spread_feb.png\">\n<p><img src=\"images/spread_mar.png\">\n<p><img src=\"images/spread_apr.png\">\n<p><img src=\"images/spread_may.png\">\n<p><img src=\"images/spread_jun.png\">\n<p><img src=\"images/spread_jul.png\">\n<p><img src=\"images/spread_aug.png\">\n<p><img src=\"images/spread_sep.png\">\n<p><img src=\"images/spread_oct.png\">\n<p><img src=\"images/spread_nov.png\">\n<p><img src=\"images/spread_dec.png\">\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/plotting/coop/precip_cdf_fe.phtml",
    "content": "<?php\n$station = isset($_GET[\"station\"]) ? $_GET['station']: 'IA0200';\n$network = sprintf(\"%sCLIMATE\", substr($station, 0, 2));\n$uri = sprintf(\"/plotting/auto/?q=107&network=%s&station=%s&varname=precip\",\n        $network, $station);\nheader(\"Location: {$uri}\");\n"
  },
  {
    "path": "htdocs/plotting/coop/spread_fe.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\n$month = get_int404('month', date(\"m\"));\n$day = get_int404('day', date(\"d\"));\n\nheader(\"Location: /plotting/auto/?q=25&month=$month&day=$day\");\n"
  },
  {
    "path": "htdocs/plotting/coop/threshold_histogram.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_plotline.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\n$conn = iemdb(\"coop\");\n$station1 = isset($_GET[\"station1\"]) ? substr(xssafe($_GET[\"station1\"]), 0, 6) : 'IA0200';\n$station2 = isset($_GET[\"station2\"]) ? substr(xssafe($_GET[\"station2\"]), 0, 6) : '';\n\n$slimiter = \"and station = '$station1'\";\nif ($station1 == \"iowa\") {\n    $slimiter = \"\";\n}\n$nt = new NetworkTable(\"IACLIMATE\");\n\nif (!array_key_exists($station1, $nt->table)) {\n    http_response_code(422);\n    die(\"Unknown station identifier\");\n}\nif ($station2 != '' && !array_key_exists($station2, $nt->table)) {\n    http_response_code(422);\n    die(\"Unknown station identifier\");\n}\n\n$xdata = array();\n$ydata = array();\n$stname = iem_pg_prepare($conn, \"SELECT y1, count(*) from \n          ((SELECT year as y1, low from alldata_ia \n           WHERE month IN (12) $slimiter) UNION \n          (SELECT year - 1 as y1, low from alldata_ia \n           WHERE month IN (1,2) $slimiter)) as foo \n         WHERE low < $1 GROUP by y1\");\nfor ($thres = -40; $thres < 11; $thres++) {\n    $rs = pg_execute($conn, $stname, array($thres));\n    $xdata[] = $thres;\n    $ydata[] = pg_num_rows($rs);\n}\n// get the last value from ydata\n$yrs = $ydata[count($ydata) - 1];\nif ($yrs == 0) {\n    die(\"No data found for this station\");\n}\n$pct = array();\nforeach ($ydata as $k => $v) {\n    $pct[] = $v / $yrs * 100.0;\n}\n\n\nif ($station2 != \"\") {\n    $slimiter = \"and station = '$station2'\";\n    $ydata = array();\n    $stname = iem_pg_prepare($conn, \"SELECT y1, count(*) from \n          ((SELECT year as y1, low from alldata_ia \n           WHERE month IN (12) $slimiter) UNION \n          (SELECT year - 1 as y1, low from alldata_ia \n           WHERE month IN (1,2) $slimiter)) as foo \n         WHERE low < $1 GROUP by y1\");\n    for ($thres = -40; $thres < 11; $thres++) {\n        $rs = pg_execute($conn, $stname, array($thres));\n        $ydata[] = pg_num_rows($rs);\n    }\n    $yrs2 = $ydata[count($ydata) - 1];\n    $pct2 = array();\n    foreach ($ydata as $k => $v) {\n        $pct2[] = $v / $yrs2 * 100.0;\n    }\n}\n\n$cities = $nt->table;\n\n$graph = new Graph(500, 400);\n$graph->SetScale(\"lin\");\n$graph->img->SetMargin(40, 10, 50, 0);\n\n$graph->title->Set(\"Winter [DJF] Low Temp Thresholds\");\n\n$graph->yaxis->SetTitle(\"Percentage of years\");\n$graph->yaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n\n$graph->xaxis->SetTitle(\"Low Temperature [F] Threshold\");\n$graph->xaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n\n$graph->legend->Pos(0.5, 0.07);\n\nfor ($i = -30; $i < 10; $i = $i + 10) {\n    $graph->AddLine(new PlotLine(VERTICAL, $i, \"tan\", 1));\n}\n\n$lineplot2 = new LinePlot($pct, $xdata);\n$lineplot2->SetColor(\"blue\");\n$lineplot2->SetWeight(3);\n$lineplot2->SetLegend(\"$yrs years at \" . $cities[$station1][\"name\"]);\n$graph->Add($lineplot2);\n\nif ($station2 != \"\") {\n    $lineplot3 = new LinePlot($pct2, $xdata);\n    $lineplot3->SetColor(\"red\");\n    $lineplot3->SetWeight(3);\n    $lineplot3->SetLegend(\"$yrs2 years at \" . $cities[$station2][\"name\"]);\n    $graph->Add($lineplot3);\n}\n\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/coop/threshold_histogram_fe.phtml",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/network.php\";\n\n$t = new MyView();\n$t->title = \"Low Temperature Threshold Histograms\";\n\n$station1 = isset($_GET[\"station1\"]) ? xssafe($_GET[\"station1\"]): \"\";\n$station2 = isset($_GET[\"station2\"]) ? xssafe($_GET[\"station2\"]): \"\";\n$mode = isset($_GET[\"mode\"]) ? xssafe($_GET[\"mode\"]): \"\";\n\n$nt = new NetworkTable(\"IACLIMATE\");\n$cities = $nt->table;\n\n$s1 = \"\";\nfor(reset($cities); $key = key($cities); next($cities))\n{\n    $s1 .= \"<option value=\\\"\" . $cities[$key][\"id\"] .\"\\\"\";\n    if ($cities[$key][\"id\"] == $station1) $s1 .= \" SELECTED \";\n\n    $s1 .= \">\" . $cities[$key][\"name\"] . \"\\n\";\n}\n$s2 = \"\";\nfor(reset($cities); $key = key($cities); next($cities))\n{\n    $s2 .= \"<option value=\\\"\" . $cities[$key][\"id\"] .\"\\\"\";\n    if ($cities[$key][\"id\"] == $station2) $s2 .= \" SELECTED \";\n\n    $s2 .= \">\" . $cities[$key][\"name\"] . \"\\n\";\n}\n$ar = Array(\"o\" => \"One Station\", \"c\" => \"Compare Two\");\n$modeselect = make_select(\"mode\", $mode, $ar);\n\nif ($station1 != \"\" && $station2 != \"\")\n{\n    if ($mode == \"c\"){\n        $imgurl = \"<img src=\\\"threshold_histogram.php?station1=\".$station1.\"&station2=\".$station2.\"\\\">\\n\";\n\n    }else {\n        $imgurl = \"<img src=\\\"threshold_histogram.php?station1=\". $station1 .\"\\\">\\n\";\n    }\n} else {\n    $imgurl = \"<p>Select your site above...</p>\";\n}\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n<li><a href=\"/COOP/\">NWS COOP</a></li>\n<li class=\"active\">COOP Low Temperature Thresholds</li>\n</ol>\n\n\n<form method=\"GET\">\n\n<table>\n<tr>\n  <th class=\"subtitle\">Station 1</th>\n  <th class=\"subtitle\">Station 2</th>\n  <td></td>\n  <td></td>\n</tr>\n\n<tr>\n<td>\n<SELECT name=\"station1\">\n{$s1}\n</SELECT>\n</td>\n<td>\n<SELECT name=\"station2\">\n{$s2}\n</SELECT>\n</td>\n<td>\n{$modeselect}\n</td>\n\n<td>\n<input type=\"SUBMIT\" value=\"Make Plot\">\n\n</form>\n</td>\n\n</tr></table>\n\n<div style=\"width:640px;\">\n<p>This application plots the frequency of years during which a threshold \ntemperature was exceeded for a particular site for 1 day that winter.  You can select multiple\nsites to compare them.  This page may take 30 seconds to load once you select\nyour sites.\n</div>\n<br />\n\n{$imgurl}\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/plotting/gs/fe.phtml",
    "content": "<?php\nheader(\"Location: /plotting/auto/?q=108\");\n"
  },
  {
    "path": "htdocs/plotting/index.php",
    "content": "<?php\nheader(\"Location: /\");\n"
  },
  {
    "path": "htdocs/plotting/isumet/1min.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/mlib.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\n//  1 minute data plotter\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$station = get_str404(\"station\", null);\n\nif (strlen($year) == 4 && strlen($month) > 0 && strlen($day) > 0 ){\n  $myTime = strtotime($year.\"-\".$month.\"-\".$day);\n} else {\n  $myTime = strtotime(date(\"Y-m-d\"));\n}\n\n$titleDate = date(\"M d, Y\", $myTime);\n$dirRef = date(\"Y/m/d\", $myTime);\n$tmpf = array();\n$dwpf = array();\n$relh = array();\n$valid = array();\n\nif ($station == null){\n    $fpath = \"/mesonet/ARCHIVE/data/$dirRef/text/ot/ot0002.dat\";\n    if (!file_exists($fpath)){\n        http_response_code(422);\n        die(\"File not found\");\n    }\n    $fcontents = file($fpath);\n    foreach($fcontents as $line_num => $line){\n        $parts = preg_split (\"/\\s+/\", $line);\n        $v = strtotime( substr($line, 0, 26) );\n        if ($v < $myTime){\n            continue;\n        }\n        $tval = round (substr($line, 36, 6),2);\n        if ($tval < -40 || $tval > 120){\n          continue;\n        }\n        $valid[] = $v;\n        $tmpf[] = $tval;\n        $rh = intval($parts[8]);\n\n        $d = dwpf(round (substr($line, 36, 6),2), $rh);\n        $dwpf[] = ($d > -40 && $d < 90 && $rh > 1 && $rh < 100)? $d : \"\";\n        $relh[] = ($rh > 1 && $rh < 100)? $rh : \"\";\n     } // End of while\n} else {\n    $fn = \"/mesonet/ARCHIVE/data/$dirRef/text/ot/ot0010.dat\";\n    if (!file_exists($fn)){\n        http_response_code(422);\n        die(\"File not found\");\n    }\n    $fcontents = file($fn);\n    /*\n     * month, day, year, hour, minute, outside temp, hi outside temp, lo outside\n       temp, outside humidity, wind speed, wind direction, wind gust speed, time\n         of gust, pressure, daily_precip, monthly_rain, yearly_rain, inside\n         temp, inside humidity, solar radiation, UV index\n     */\n    foreach($fcontents as $line_num => $line){\n        $tokens = explode(' ', $line);\n        if (sizeof($tokens) != 21){\n            continue;\n        }\n          $tstring = sprintf(\"%s %s %s %s\", $tokens[0], $tokens[1], $tokens[2],\n                  $tokens[3]);\n          $v = strtotime($tstring);\n\n        if ($v < $myTime || trim($tstring) == \"\"){\n            continue;\n        }\n        $tval = floatval($tokens[5]);\n        if ($tval < -40 || $tval > 120){\n          continue;\n        }\n        $valid[] = $v;\n          $tmpf[] = $tval;\n        $rh = floatval($tokens[8]);\n        $relh[] = $rh;\n        $d = dwpf($tokens[5], $rh);\n        $dwpf[] = ($rh > 1 && $rh < 101) ? $d: \"\";\n     } // End of while\n}\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600,400,\"example1\");\n$graph->SetScale(\"datlin\");\nif (array_key_exists(\"rh\", $_REQUEST)){\n    $graph->SetY2Scale(\"lin\",0,100);\n    $graph->y2axis->SetTitle(\"Relative Humidity [%]\");\n    $graph->y2axis->title->SetFont(FF_FONT1,FS_BOLD,12);\n    $graph->title->Set(\"$titleDate Outside Temperature & Relative Humidity\");\n} else {\n    $graph->title->Set(\"$titleDate Outside Temperature\");\n}\n$graph->img->SetMargin(65,40,55,80);\n//$graph->xaxis->SetFont(FONT1,FS_BOLD);\n\n$graph->xaxis->SetLabelAngle(90);\n$graph->xaxis->SetLabelFormatString(\"h:i A\", true);\n//$graph->yaxis->scale->ticks->SetPrecision(1);\n$graph->yaxis->scale->ticks->Set(1,0.5);\n//$graph->yscale->SetGrace(10);\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.2,0.09);\n\n$graph->title->SetFont(FF_FONT1,FS_BOLD,14);\n$graph->yaxis->SetTitle(\"Temperature [F]\");\n\n$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetTitle(\"Valid Local Time\");\n$graph->xaxis->SetTitleMargin(50);\n//$graph->yaxis->SetTitleMargin(48);\n$graph->yaxis->SetTitleMargin(40);\n$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot=new LinePlot($tmpf, $valid);\n$lineplot->SetLegend(\"Temperature\");\n$lineplot->SetColor(\"red\");\n$lineplot->SetWeight(3.0);\n\n// Create the linear plot\n$lineplot2=new LinePlot($dwpf, $valid);\n$lineplot2->SetLegend(\"Dew Point\");\n$lineplot2->SetColor(\"blue\");\n$lineplot2->SetWeight(3.0);\n\n// Create the linear plot\n$lineplot3=new LinePlot($relh, $valid);\n$lineplot3->SetLegend(\"Rel Humid\");\n$lineplot3->SetColor(\"black\");\n$lineplot3->SetWeight(3.0);\n\n$graph->Add($lineplot);\nif (array_key_exists(\"rh\", $_REQUEST)){\n    $graph->AddY2($lineplot3);\n} else {\n    $graph->Add($lineplot2);\n}\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/isumet/1min_P.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$station = get_str404(\"station\", null);\n\nif (strlen($year) == 4 && strlen($month) > 0 && strlen($day) > 0) {\n    $myTime = strtotime($year . \"-\" . $month . \"-\" . $day);\n} else {\n    $myTime = strtotime(date(\"Y-m-d\"));\n}\n\n$titleDate = date(\"M d, Y\", $myTime);\n$dirRef = date(\"Y/m/d\", $myTime);\n\n\n$prec = array();\n$valid = array();\n\nif (is_null($station)) {\n    $firstval = null;\n    $fpath = \"/mesonet/ARCHIVE/data/$dirRef/text/ot/ot0002.dat\";\n    if (!file_exists($fpath)) {\n        http_response_code(422);\n        die(\"File not found\");\n    }\n    $fcontents = file($fpath);\n    foreach ($fcontents as $line_num => $line) {\n        $valid[] = strtotime(substr($line, 0, 26));\n        $parts = preg_split(\"/\\s+/\", $line);\n        $val = floatval($parts[10]) / 100.;\n        if ($firstval == null) $firstval = $val;\n        $prec[] = $val - $firstval;\n    } // End of while\n} else {\n    $fn = \"/mesonet/ARCHIVE/data/$dirRef/text/ot/ot0010.dat\";\n    if (!file_exists($fn)){\n        http_response_code(422);\n        die(\"File not found\");\n    }\n    $fcontents = file($fn);\n\n    /*\n     * month, day, year, hour, minute, outside temp, hi outside temp, lo outside\n       temp, outside humidity, wind speed, wind direction, wind gust speed, time\n         of gust, pressure, daily_precip, monthly_rain, yearly_rain, inside\n         temp, inside humidity, solar radiation, UV index\n     */\n    foreach ($fcontents as $line_num => $line) {\n        $tokens = explode(' ', $line);\n        if (sizeof($tokens) != 21) {\n            continue;\n        }\n        $tstring = sprintf(\"%s %s %s %s\", $tokens[0], $tokens[1], $tokens[2], $tokens[3]);\n        $v = strtotime($tstring);\n\n        if ($v < $myTime || trim($tstring) == \"\") {\n            continue;\n        }\n        $valid[] = $v;\n        $prec[] = floatval($tokens[14]) / 100.;\n    } // End of while\n\n}\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600, 400, \"example1\");\n\n$graph->SetScale(\"datelin\");\n$graph->img->SetMargin(55, 40, 55, 60);\n//$graph->xaxis->SetFont(FONT1,FS_BOLD);\n$graph->title->Set(\" Time Series\");\n$graph->subtitle->Set($titleDate);\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01, 0.08);\n\n$graph->yscale->SetGrace(10);\n$graph->yaxis->SetColor(\"blue\");\n$graph->xaxis->SetLabelAngle(90);\n$graph->title->SetFont(FF_FONT1, FS_BOLD, 14);\n$graph->yaxis->SetTitle(\"Accumulated Precipitation [inches]\");\n$graph->xaxis->SetTitle(\"Valid Local Time\");\n$graph->xaxis->SetTitleMargin(30);\n$graph->yaxis->SetTitleMargin(43);\n$graph->xaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot = new LinePlot($prec, $valid);\n$lineplot->SetLegend(\"Daily Precipitation\");\n$lineplot->SetColor(\"blue\");\n$lineplot->SetWeight(2);\n\n$graph->Add($lineplot);\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/isumet/1min_V.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_scatter.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$station = get_str404(\"station\", null);\n\nif (strlen($year) == 4 && strlen($month) > 0 && strlen($day) > 0) {\n    $myTime = strtotime($year . \"-\" . $month . \"-\" . $day);\n} else {\n    $myTime = strtotime(date(\"Y-m-d\"));\n}\n\n$wA = mktime(0, 0, 0, 8, 4, 2002);\n$wLabel = \"1min Instantaneous Wind Speed\";\nif ($wA > $myTime) {\n    $wLabel = \"Instant Wind Speed\";\n}\n\n$titleDate = date(\"M d, Y\", $myTime);\n$dirRef = date(\"Y/m/d\", $myTime);\n\n$mph = array();\n$drct = array();\n$gust = array();\n$valid = array();\n\nif ($station == null) {\n    $fn = \"/mesonet/ARCHIVE/data/$dirRef/text/ot/ot0002.dat\";\n    if (!file_exists($fn)){\n        http_response_code(422);\n        die(\"File not found\");\n    }\n    $fcontents = file($fn);\n    foreach ($fcontents as $line_num => $line) {\n        $valid[] = strtotime(substr($line, 0, 26));\n        $parts = preg_split(\"/\\s+/\", $line);\n        $mph[] = intval($parts[8]);\n        $drct[] = intval($parts[9]);\n    } // End of while\n} else {\n    $fn = \"/mesonet/ARCHIVE/data/$dirRef/text/ot/ot0010.dat\";\n    if (!file_exists($fn)){\n        http_response_code(422);\n        die(\"File not found\");\n    }\n    $fcontents = file($fn);\n\n    /*\n     * month, day, year, hour, minute, outside temp, hi outside temp, lo outside\n       temp, outside humidity, wind speed, wind direction, wind gust speed, time\n         of gust, pressure, daily_precip, monthly_rain, yearly_rain, inside\n         temp, inside humidity, solar radiation, UV index\n     */\n    foreach ($fcontents as $line_num => $line) {\n        $tokens = explode(' ', $line);\n        if (sizeof($tokens) != 21) {\n            continue;\n        }\n        $tstring = sprintf(\"%s %s %s %s\", $tokens[0], $tokens[1], $tokens[2], $tokens[3]);\n        $v = strtotime($tstring);\n\n        if ($v < $myTime || trim($tstring) == \"\") {\n            continue;\n        }\n        $speed = floatval($tokens[9]);\n        if ($speed < 0 || $speed > 100) {\n            continue;\n        }\n        $valid[] = $v;\n        $mph[] = $speed;\n        $drct[] = $tokens[10];\n    } // End of while\n\n}\n\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600, 400, \"example1\");\n$graph->SetScale(\"datelin\", 0, 360);\n$graph->SetY2Scale(\"lin\");\n$graph->img->SetMargin(55, 40, 55, 60);\n\n$graph->title->Set(\" Time Series\");\n$graph->subtitle->Set($titleDate);\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01, 0.08);\n$graph->xaxis->SetLabelAngle(90);\n$graph->yaxis->scale->ticks->Set(90, 15);\n\n$graph->yaxis->SetColor(\"blue\");\n$graph->y2axis->SetColor(\"red\");\n\n$graph->title->SetFont(FF_FONT1, FS_BOLD, 14);\n\n$graph->yaxis->SetTitle(\"Wind Direction\");\n$graph->y2axis->SetTitle(\"Wind Speed [MPH]\");\n\n$graph->yaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->xaxis->SetTitle(\"Valid Local Time\");\n$graph->xaxis->SetTitleMargin(30);\n$graph->yaxis->SetTitleMargin(30);\n$graph->xaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot = new LinePlot($mph, $valid);\n$lineplot->SetLegend($wLabel);\n$lineplot->SetColor(\"red\");\n\n// Create the linear plot\n$sp1 = new ScatterPlot($drct, $valid);\n$sp1->mark->SetType(MARK_FILLEDCIRCLE);\n$sp1->mark->SetFillColor(\"blue\");\n$sp1->mark->SetWidth(3);\n\n\n$graph->Add($sp1);\n$graph->AddY2($lineplot);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/isumet/1min_inside.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/mlib.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$station = get_str404(\"station\", null);\n\n\nif (strlen($year) == 4 && strlen($month) > 0 && strlen($day) > 0) {\n    $myTime = strtotime($year . \"-\" . $month . \"-\" . $day);\n} else {\n    $myTime = strtotime(date(\"Y-m-d\"));\n}\n\n$titleDate = date(\"M d, Y\", $myTime);\n$dirRef = date(\"Y/m/d\", $myTime);\n\n$prec = array();\n$tmpf = array();\n$dwpf = array();\n$relh = array();\n\nif ($station == null) {\n    $fn = \"/mesonet/ARCHIVE/data/$dirRef/text/ot/ot0002.dat\";\n    if (!file_exists($fn)){\n        http_response_code(422);\n        die(\"File not found\");\n    }\n    $fcontents = file($fn);\n    foreach ($fcontents as $line_num => $line) {\n        $parts = preg_split(\"/\\s+/\", $line);\n        $valid[] = strtotime(substr($line, 0, 26));\n        $tmpf[] = round(substr($line, 31, 5), 2);\n    } // End of while\n} else {\n    $fn = \"/mesonet/ARCHIVE/data/$dirRef/text/ot/ot0010.dat\";\n    if (!file_exists($fn)){\n        http_response_code(422);\n        die(\"File not found\");\n    }\n    $fcontents = file($fn);\n\n    /*\n     * month, day, year, hour, minute, outside temp, hi outside temp, lo outside\n       temp, outside humidity, wind speed, wind direction, wind gust speed, time\n         of gust, pressure, daily_precip, monthly_rain, yearly_rain, inside\n         temp, inside humidity, solar radiation, UV index\n     */\n    foreach ($fcontents as $line_num => $line) {\n        $tokens = explode(' ', $line);\n        if (sizeof($tokens) != 21) {\n            continue;\n        }\n        $tstring = sprintf(\"%s %s %s %s\", $tokens[0], $tokens[1], $tokens[2], $tokens[3]);\n        $v = strtotime($tstring);\n\n        if ($v < $myTime || trim($tstring) == \"\") {\n            continue;\n        }\n        $valid[] = $v;\n        $tmpf[] = $tokens[17];\n        $relh[] = $tokens[18];\n        $dwpf[] = dwpf($tokens[17], $tokens[18]);\n    } // End of while\n\n}\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600, 400, \"example1\");\n$graph->SetScale(\"datelin\");\n$graph->img->SetMargin(65, 40, 55, 70);\n\n$graph->xaxis->SetLabelAngle(90);\n$graph->yaxis->scale->ticks->Set(1, 0.5);\n$graph->title->Set(\"$titleDate Map Room Temperature & Dew Point\");\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.2, 0.09);\n\n$graph->title->SetFont(FF_FONT1, FS_BOLD, 14);\n$graph->yaxis->SetTitle(\"Temperature [F]\");\n$graph->xaxis->SetLabelFormatString(\"h:i A\", true);\n$graph->yaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->xaxis->SetTitle(\"Valid Local Time\");\n$graph->yaxis->SetTitleMargin(40);\n$graph->xaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->xaxis->SetPos(\"min\");\n$graph->xaxis->SetTitleMargin(40);\n\n// Create the linear plot\n$lineplot = new LinePlot($tmpf, $valid);\n$lineplot->SetLegend(\"Temperature\");\n$lineplot->SetColor(\"red\");\n$lineplot->SetWeight(3.0);\n\n// Create the linear plot\n$lineplot2 = new LinePlot($dwpf, $valid);\n$lineplot2->SetLegend(\"Dew Point\");\n$lineplot2->SetColor(\"blue\");\n$lineplot2->SetWeight(3.0);\n\n$graph->Add($lineplot);\n$graph->Add($lineplot2);\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/isumet/1station_1min.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n$t = new MyView();\n$t->title = \"ISU AMS Station on Agronomy\";\n\n$year = isset($_GET[\"year\"]) ? intval($_GET[\"year\"]) : date(\"Y\");\n$month = isset($_GET[\"month\"]) ? intval($_GET[\"month\"]) : date(\"m\");\n$day = isset($_GET[\"day\"]) ? intval($_GET[\"day\"]) : date(\"d\");\n$myTime = mktime(0, 0, 0, $month, $day, $year);\n\n$dirRef = date(\"Y/m/d\", $myTime);\n$dataurl = \"{$EXTERNAL_BASEURL}/archive/data/$dirRef/text/ot/ot0002.dat\";\n\n$ys = yearSelect(2003, $year, \"year\");\n$ms = monthSelect($month, \"month\");\n$ds = daySelect($day, \"day\");\n\n$t->content = <<<EOM\n\n<a href=\"/other/\">Other Networks</a> &nbsp;<b> > </b> &nbsp; ISU AMS Station\n\n<p>You can plot 1 minute data for this location.  Note that \nthe archive <br> begins 15 Jan 2003.</p>\n\n<table>\n<tr class=\"even\"><td>\n\n\n  <form method=\"GET\" action=\"1station_1min.phtml\">\n{$ys} {$ms} {$ds}\n\n  <input type=\"submit\" value=\"Make Plot\"></form>\n\n</td></tr><tr><td>\n<a href=\"{$dataurl}\">View raw data file</a><br />\n<BR>\n<img src=\"1min.php?year={$year}&month={$month}&day={$day}\" ALT=\"Time Series\">\n<BR>\n<img src=\"1min_V.php?year={$year}&month={$month}&day={$day}\" ALT=\"Time Series\">\n<BR>\n<img src=\"1min_P.php?year={$year}&month={$month}&day={$day}\" ALT=\"Time Series\">\n</td></tr></table>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/plotting/isumet/ams2.phtml",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 24);\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->title = \"ISU AMS Station #2 on Agronomy\";\nif (! isset($_GET[\"year\"])){\n    $t->refresh = 60;\n}\n\n$year = isset($_GET[\"year\"]) ? intval($_GET[\"year\"]): date(\"Y\");\n$month = isset($_GET[\"month\"]) ? intval($_GET[\"month\"]): date(\"m\");\n$day = isset($_GET[\"day\"]) ? intval($_GET[\"day\"]): date(\"d\");\n$myTime = mktime(0,0,0,$month, $day, $year);\n\n$dirRef = date(\"Y/m/d\", $myTime);\n$dataurl = \"/archive/data/$dirRef/text/ot/ot0010.dat\";\n\n$station = \"isumet\";\n\n$ys = yearSelect(2011, $year, \"year\");\n$ms = monthSelect($month, \"month\");\n$ds = daySelect($day, \"day\");\n$ymd = sprintf(\"year=%s&month=%s&day=%s\", $year, $month, $day);\n\n$t->content = <<< EOM\n\n<nav aria-label=\"Breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/other/\">Miscellaneous Stations</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">ISU AMS Station</li>\n  </ol>\n</nav>\n\n<p>You can plot 1 minute data for this location.  Note that \nthe archive <br> begins 8 Sep 2011.</p>\n\n\n\n  <form method=\"GET\" action=\"ams2.phtml\" class=\"row g-2 align-items-end\" aria-label=\"Date selection for plotting\">\n    <div class=\"col-auto\">{$ys}</div>\n    <div class=\"col-auto\">{$ms}</div>\n    <div class=\"col-auto\">{$ds}</div>\n    <div class=\"col-auto\">\n      <button type=\"submit\" class=\"btn btn-primary\" aria-label=\"Make Plot\">Make Plot</button>\n    </div>\n  </form>\n\n\n<a href=\"{$dataurl}\" class=\"btn btn-outline-secondary mb-3\" aria-label=\"View raw data file\">View raw data file</a>\n\n<div class=\"row g-3\">\n  <div class=\"col-12 col-md-6 col-lg-4 mb-3\">\n    <img src=\"1min.php?station=ot0010&{$ymd}\" class=\"img-fluid rounded border\" alt=\"Time Series: 1min\" aria-describedby=\"desc-1min\">\n    <div id=\"desc-1min\" class=\"visually-hidden\">Time series plot for 1 minute data</div>\n  </div>\n  <div class=\"col-12 col-md-6 col-lg-4 mb-3\">\n    <img src=\"1min_inside.php?station=ot0010&{$ymd}\" class=\"img-fluid rounded border\" alt=\"Time Series: Inside\" aria-describedby=\"desc-1min-inside\">\n    <div id=\"desc-1min-inside\" class=\"visually-hidden\">Time series plot for inside data</div>\n  </div>\n  <div class=\"col-12 col-md-6 col-lg-4 mb-3\">\n    <img src=\"rh.php?station=ot0010&{$ymd}\" class=\"img-fluid rounded border\" alt=\"Time Series: RH\" aria-describedby=\"desc-rh\">\n    <div id=\"desc-rh\" class=\"visually-hidden\">Time series plot for relative humidity</div>\n  </div>\n  <div class=\"col-12 col-md-6 col-lg-4 mb-3\">\n    <img src=\"srad.php?station=ot0010&{$ymd}\" class=\"img-fluid rounded border\" alt=\"Time Series: Solar Radiation\" aria-describedby=\"desc-srad\">\n    <div id=\"desc-srad\" class=\"visually-hidden\">Time series plot for solar radiation</div>\n  </div>\n  <div class=\"col-12 col-md-6 col-lg-4 mb-3\">\n    <img src=\"1min_V.php?station=ot0010&{$ymd}\" class=\"img-fluid rounded border\" alt=\"Time Series: Voltage\" aria-describedby=\"desc-1min-v\">\n    <div id=\"desc-1min-v\" class=\"visually-hidden\">Time series plot for voltage</div>\n  </div>\n  <div class=\"col-12 col-md-6 col-lg-4 mb-3\">\n    <img src=\"1min_P.php?station=ot0010&{$ymd}\" class=\"img-fluid rounded border\" alt=\"Time Series: Pressure\" aria-describedby=\"desc-1min-p\">\n    <div id=\"desc-1min-p\" class=\"visually-hidden\">Time series plot for pressure</div>\n  </div>\n  <div class=\"col-12 col-md-6 col-lg-4 mb-3\">\n    <img src=\"1min.php?station=ot0010&{$ymd}&rh\" class=\"img-fluid rounded border\" alt=\"Time Series: 1min RH\" aria-describedby=\"desc-1min-rh\">\n    <div id=\"desc-1min-rh\" class=\"visually-hidden\">Time series plot for 1 minute relative humidity</div>\n  </div>\n</div>\nEOM;\n\n$t->render(\"single.phtml\");\n"
  },
  {
    "path": "htdocs/plotting/isumet/rh.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/mlib.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_scatter.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$station = get_str404(\"station\", null);\n\nif (strlen($year) == 4 && strlen($month) > 0 && strlen($day) > 0 ){\n  $myTime = strtotime($year.\"-\".$month.\"-\".$day);\n} else {\n  $myTime = strtotime( date(\"Y-m-d\") );\n}\n\n$wA = mktime(0,0,0, 8, 4, 2002);\n$wLabel = \"1min Instantaneous Wind Speed\";\nif ($wA > $myTime){\n $wLabel = \"Instant Wind Speed\";\n}\n\n$titleDate = date(\"M d, Y\", $myTime);\n$dirRef = date(\"Y/m/d\", $myTime);\n\n\n$srad = array();\n$_dwpf = array();\n$irelh = array();\n$orelh = array();\n\nif ($station == null){\n    $fpath = \"/mesonet/ARCHIVE/data/$dirRef/text/ot/ot0002.dat\";\n    if (!file_exists($fpath)){\n        http_response_code(422);\n        die(\"File not found\");\n    }\n    $fcontents = file($fpath);\n    foreach($fcontents as $line_num => $line){\n          $valid[] = strtotime( substr($line, 0, 26) );\n          $parts = preg_split (\"/\\s+/\", $line);\n          $orelh[] = intval($parts[7]);\n        $_dwpf[] = dwpf(intval($parts[6]), intval($parts[7]));\n    }\n} else {\n    $fn = \"/mesonet/ARCHIVE/data/$dirRef/text/ot/ot0010.dat\";\n    if (!file_exists($fn)){\n        http_response_code(422);\n        die(\"File not found\");\n    }\n    $fcontents = file($fn);\n\n    /*\n     * month, day, year, hour, minute, outside temp, hi outside temp, lo outside\n       temp, outside humidity, wind speed, wind direction, wind gust speed, time\n         of gust, pressure, daily_precip, monthly_rain, yearly_rain, inside\n         temp, inside humidity, solar radiation, UV index\n     */\n    foreach($fcontents as $line_num => $line){\n        $tokens = explode(' ', $line);\n        if (sizeof($tokens) != 21){\n            continue;\n        }\n                    $tstring = sprintf(\"%s %s %s %s\", $tokens[0], $tokens[1], $tokens[2],\n                  $tokens[3]);\n          $v = strtotime($tstring);\n\n        if ($v < $myTime || trim($tstring) == \"\"){\n            continue;\n        }\n        $rval = floatval($tokens[8]);\n        if ($rval < 0 || $rval > 101){\n            continue;\n        }\n        $valid[] = $v;\n          $orelh[] = $rval;\n          $irelh[] = $tokens[18];\n          $_dwpf[] = dwpf(floatval($tokens[5]), floatval($tokens[8]));\n     } // End of while\n\n}\n\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600, 400,\"example1\");\n$graph->SetScale(\"datelin\",0,100);\n$graph->img->SetMargin(65,40,55,80);\n$graph->title->Set(\"$titleDate Relative Humidity\");\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01,0.08);\n$graph->xaxis->SetLabelAngle(90);\n\n$graph->title->SetFont(FF_FONT1,FS_BOLD,14);\n\n$graph->yaxis->SetTitle(\"Relative Humidity [%]\");\n$graph->xaxis->SetLabelFormatString(\"h:i A\", true);\n$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetTitle(\"Valid Local Time\");\n$graph->xaxis->SetTitleMargin(50);\n$graph->yaxis->SetTitleMargin(30);\n$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot=new LinePlot($orelh, $valid);\n$lineplot->SetColor(\"blue\");\n$lineplot->SetLegend(\"Outside\");\n$lineplot->SetWeight(3.0);\n$graph->Add($lineplot);\n\n$lineplot2=new LinePlot($irelh, $valid);\n$lineplot2->SetColor(\"red\");\n$lineplot2->SetLegend(\"Inside\");\n$lineplot2->SetWeight(3.0);\n$graph->Add($lineplot2);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/isumet/srad.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_scatter.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\nrequire_once \"../../../include/forms.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$station = get_str404('station', null);\n\nif (strlen($year) == 4 && strlen($month) > 0 && strlen($day) > 0) {\n    $myTime = strtotime($year . \"-\" . $month . \"-\" . $day);\n} else {\n    $myTime = strtotime(date(\"Y-m-d\"));\n}\n\n$wA = mktime(0, 0, 0, 8, 4, 2002);\n$wLabel = \"1min Instantaneous Wind Speed\";\nif ($wA > $myTime) {\n    $wLabel = \"Instant Wind Speed\";\n}\n\n$titleDate = date(\"M d, Y\", $myTime);\n$dirRef = date(\"Y/m/d\", $myTime);\n\n$srad = array();\n$uvindex = array();\n$valid = array();\n\nif (is_null($station)) {\n    $fpath = \"/mesonet/ARCHIVE/data/$dirRef/text/ot/ot0002.dat\";\n    if (!file_exists($fpath)) {\n        http_response_code(422);\n        die(\"File not found\");\n    }\n    $fcontents = file($fpath);\n    foreach ($fcontents as $line_num => $line) {\n        $valid[] = strtotime(substr($line, 0, 26));\n        $parts = preg_split(\"/\\s+/\", $line);\n        $mph[] = intval($parts[8]);\n        $drct[] = intval($parts[9]);\n    } // End of while\n} else {\n    $fn = \"/mesonet/ARCHIVE/data/$dirRef/text/ot/ot0010.dat\";\n    if (!file_exists($fn)){\n        http_response_code(422);\n        die(\"File not found\");\n    }\n    $fcontents = file($fn);\n\n    /*\n     * month, day, year, hour, minute, outside temp, hi outside temp, lo outside\n       temp, outside humidity, wind speed, wind direction, wind gust speed, time\n         of gust, pressure, daily_precip, monthly_rain, yearly_rain, inside\n         temp, inside humidity, solar radiation, UV index\n     */\n    foreach ($fcontents as $line_num => $line) {\n        $tokens = explode(' ', $line);\n        if (sizeof($tokens) < 18) {\n            continue;\n        }\n        $tstring = sprintf(\n            \"%s %s %s %s\",\n            $tokens[0],\n            $tokens[1],\n            $tokens[2],\n            $tokens[3]\n        );\n        $v = strtotime($tstring);\n\n        if ($v < $myTime || trim($tstring) == \"\") {\n            continue;\n        }\n        $valid[] = $v;\n        $srad[] = floatval($tokens[19]);\n        $uvindex[] = floatval($tokens[20]);\n    } // End of while\n\n}\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600, 400, \"example1\");\n$graph->SetScale(\"datelin\");\n$graph->SetY2Scale(\"lin\");\n$graph->img->SetMargin(55, 40, 55, 60);\n\n//$graph->yaxis->scale->ticks->SetPrecision(1);\n$graph->title->Set(\"Solar Radiation & UV Index\");\n$graph->subtitle->Set($titleDate);\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01, 0.08);\n$graph->xaxis->SetLabelAngle(90);\n$graph->yaxis->scale->ticks->Set(90, 15);\n//$graph->yaxis->scale->ticks->SetPrecision(0);\n//$graph->yaxis->scale->ticks->SetPrecision(0);\n\n$graph->yaxis->SetColor(\"blue\");\n$graph->y2axis->SetColor(\"red\");\n\n$graph->title->SetFont(FF_FONT1, FS_BOLD, 14);\n\n$graph->yaxis->SetTitle(\"Solar Radiation\");\n$graph->y2axis->SetTitle(\"UV Index\");\n\n$graph->yaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->xaxis->SetTitle(\"Valid Local Time\");\n$graph->xaxis->SetTitleMargin(30);\n$graph->yaxis->SetTitleMargin(30);\n//$graph->y2axis->SetTitleMargin(28);\n$graph->xaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot = new LinePlot($srad, $valid);\n$lineplot->SetLegend(\"Solar Radiation\");\n$lineplot->SetColor(\"blue\");\n$lineplot->SetWeight(3.0);\n\n$lineplot2 = new LinePlot($uvindex, $valid);\n$lineplot2->SetLegend(\"UV Index\");\n$lineplot2->SetColor(\"red\");\n$lineplot2->SetWeight(3.0);\n\n$graph->Add($lineplot);\n$graph->AddY2($lineplot2);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/mesoeast/1min.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\nrequire_once \"../../../include/mesoeast.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n\n$myTime = mktime(0, 0, 0, $month, $day, $year);\n\n$titleDate = date(\"M d, Y\", $myTime);\n\n$data = read_data($myTime);\n\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600, 300, \"example1\");\n$graph->SetScale(\"datelin\");\n\n$graph->img->SetMargin(65, 40, 45, 80);\n$graph->xaxis->SetLabelFormatString(\"h:i A\", true);\n\n$graph->xaxis->SetLabelAngle(90);\n$graph->title->Set(\"Outside Temperatures\");\n$graph->subtitle->Set($titleDate);\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01, 0.075);\n\n\n$graph->title->SetFont(FF_FONT1, FS_BOLD, 14);\n$graph->yaxis->SetTitle(\"Temperature [F]\");\n\n$graph->yaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->xaxis->SetTitleMargin(30);\n$graph->yaxis->SetTitleMargin(40);\n$graph->xaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot = new LinePlot($data['tmpf'], $data['times']);\n$lineplot->SetLegend(\"Temperature\");\n$lineplot->SetColor(\"red\");\n\n// Create the linear plot\n$lineplot2 = new LinePlot($data['dwpf'], $data['times']);\n$lineplot2->SetLegend(\"Dew Point\");\n$lineplot2->SetColor(\"blue\");\n\n$graph->Add($lineplot2);\n$graph->Add($lineplot);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/mesoeast/1min_V.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_scatter.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\nrequire_once \"../../../include/mesoeast.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n\nif (strlen($year) == 4 && strlen($month) > 0 && strlen($day) > 0 ){\n  $myTime = strtotime($year.\"-\".$month.\"-\".$day);\n} else {\n  $myTime = strtotime( date(\"Y-m-d\") );\n}\n$wA = mktime(0,0,0, 8, 4, 2002);\n$wLabel = \"1min Instantaneous Wind Speed\";\nif ($wA > $myTime){\n $wLabel = \"Instant Wind Speed\";\n}\n\n$titleDate = date(\"M d, Y\", $myTime);\n$data = read_data($myTime);\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600,300,\"example1\");\n$graph->SetScale(\"datelin\",0, 360);\n$graph->SetY2Scale(\"lin\");\n$graph->img->SetMargin(65,50,55,80);\n$graph->xaxis->SetLabelFormatString(\"h:i A\", true);\n$graph->xaxis->SetLabelAngle(90);\n\n$graph->title->Set(\" Time Series\");\n$graph->subtitle->Set($titleDate );\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01,0.02);\n// set 1 column\n$graph->legend->SetColumns(1);\n\n$graph->yaxis->scale->ticks->Set(90,15);\n\n$graph->yaxis->SetColor(\"blue\");\n$graph->y2axis->SetColor(\"red\");\n\n$graph->title->SetFont(FF_FONT1,FS_BOLD,14);\n\n$graph->yaxis->SetTitle(\"Wind Direction\");\n$graph->y2axis->SetTitle(\"Wind Speed [MPH]\");\n$graph->y2axis->SetTitleMargin(40);\n\n$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetTitleMargin(30);\n$graph->yaxis->SetTitleMargin(40);\n$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot=new LinePlot($data[\"mph\"], $data[\"times\"]);\n$graph->AddY2($lineplot);\n$lineplot->SetLegend($wLabel);\n$lineplot->SetColor(\"red\");\n\n// Create the linear plot\n$sp1=new ScatterPlot($data[\"drct\"], $data[\"times\"]);\n$graph->Add($sp1);\n$sp1->mark->SetType(MARK_FILLEDCIRCLE);\n$sp1->mark->SetFillColor(\"blue\");\n$sp1->mark->SetWidth(3);\n\n// Create the linear plot\n$lp1=new LinePlot($data[\"gust\"], $data[\"times\"]);\n$graph->AddY2($lp1);\n$lp1->SetLegend(\"Peak Wind Gust\");\n$lp1->SetColor(\"black\");\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/mesoeast/1min_inside.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\nrequire_once \"../../../include/mesoeast.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n\n$myTime = strtotime($year.\"-\".$month.\"-\".$day);\n\n$titleDate = date(\"M d, Y\", $myTime);\n\n$data = read_data($myTime);\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600,300,\"example1\");\n$graph->SetScale(\"datelin\");\n\n$graph->img->SetMargin(65,40,45,80);\n$graph->xaxis->SetLabelFormatString(\"h:i A\", true);\n\n$graph->xaxis->SetLabelAngle(90);\n$graph->yaxis->scale->ticks->Set(2,1);\n$graph->yaxis->scale->SetGrace(10);\n$graph->title->Set(\"Inside Temperatures\");\n$graph->subtitle->Set($titleDate );\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01,0.075);\n\n$graph->title->SetFont(FF_FONT1,FS_BOLD,14);\n$graph->yaxis->SetTitle(\"Temperature [F]\");\n\n$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetTitleMargin(30);\n$graph->yaxis->SetTitleMargin(40);\n$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot=new LinePlot($data[\"inTmpf\"], $data[\"times\"]);\n$lineplot->SetLegend(\"Temperature\");\n$lineplot->SetColor(\"red\");\n\n// Create the linear plot\n$lineplot2=new LinePlot($data[\"inDwpf\"], $data[\"times\"]);\n$lineplot2->SetLegend(\"Dew Point\");\n$lineplot2->SetColor(\"blue\");\n\n$graph->Add($lineplot2);\n$graph->Add($lineplot);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/mesoeast/baro.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\nrequire_once \"../../../include/mesoeast.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n\n$myTime = strtotime($year.\"-\".$month.\"-\".$day);\n$titleDate = date(\"M d, Y\", $myTime);\n\n$data = read_data($myTime);\n\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600,300,\"example1\");\n$graph->SetScale(\"datelin\");\n$graph->img->SetMargin(85,40,45,80);\n$graph->xaxis->SetLabelFormatString(\"h:i A\", true);\n\n$graph->xaxis->SetLabelAngle(90);\n$graph->yaxis->scale->ticks->Set(1,0.5);\n$graph->yaxis->scale->SetGrace(10);\n$graph->title->Set(\"Pressure\");\n$graph->subtitle->Set($titleDate );\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01,0.075);\n\n//[DMF]$graph->y2axis->scale->ticks->Set(100,25);\n\n$graph->title->SetFont(FF_FONT1,FS_BOLD,14);\n$graph->yaxis->SetTitle(\"Pressure [mb]\");\n\n//[DMF]$graph->y2axis->SetTitle(\"Solar Radiation [W m**-2]\");\n\n$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetTitleMargin(30);\n//$graph->yaxis->SetTitleMargin(48);\n$graph->yaxis->SetTitleMargin(55);\n$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot=new LinePlot($data[\"baro\"], $data[\"times\"]);\n$lineplot->SetLegend(\"Pressure\");\n$lineplot->SetColor(\"red\");\n\n$graph->Add($lineplot);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/mesoeast/dailyrain.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\nrequire_once \"../../../include/mesoeast.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n\n$myTime = strtotime($year.\"-\".$month.\"-\".$day);\n$titleDate = date(\"M d, Y\", $myTime);\n\n$data = read_data($myTime);\n\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600,300,\"example1\");\n$graph->SetScale(\"datelin\");\n\n$graph->img->SetMargin(65,40,45,80);\n$graph->xaxis->SetLabelFormatString(\"h:i A\", true);\n\n$graph->xaxis->SetLabelAngle(90);\n//$graph->yaxis->scale->ticks->Set(0.1,0.05);\n//$graph->yscale->SetGrace(10);\n$graph->title->Set(\"Daily Precipitation\");\n$graph->subtitle->Set($titleDate );\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01,0.075);\n\n//[DMF]$graph->y2axis->scale->ticks->Set(100,25);\n\n$graph->title->SetFont(FF_FONT1,FS_BOLD,14);\n$graph->yaxis->SetTitle(\"Accumulated Precip [Inches]\");\n\n//[DMF]$graph->y2axis->SetTitle(\"Solar Radiation [W m**-2]\");\n\n$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetTitleMargin(30);\n//$graph->yaxis->SetTitleMargin(48);\n$graph->yaxis->SetTitleMargin(40);\n$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot=new LinePlot($data[\"precip\"], $data[\"times\"]);\n$lineplot->SetLegend(\"Precipitation\");\n$lineplot->SetColor(\"blue\");\n\n$graph->Add($lineplot);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/mesoeast/index.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/mesoeast.php\";\n\n$t = new MyView();\n$t->title = \"IEM NE Ames Time Series\";\n\nif (isset($_GET[\"date\"])) {\n    $dateParts = explode(\"-\", $_GET[\"date\"]);\n    if (count($dateParts) == 3) {\n        $year = intval($dateParts[0]);\n        $month = intval($dateParts[1]);\n        $day = intval($dateParts[2]);\n        if (checkdate($month, $day, $year)) {\n            // Valid date, do nothing\n        } else {\n            // Invalid date, reset to current date\n            $year = date(\"Y\");\n            $month = date(\"m\");\n            $day = date(\"d\");\n        }\n    } else {\n        // Invalid format, reset to current date\n        $year = date(\"Y\");\n        $month = date(\"m\");\n        $day = date(\"d\");\n    }\n} else {\n    // No date provided, use current date\n    $year = date(\"Y\");\n    $month = date(\"m\");\n    $day = date(\"d\");\n}\n$year = get_int404(\"year\", $year);\n$month = get_int404(\"month\", $month);\n$day = get_int404(\"day\", $day);\n$myTime = mktime(0, 0, 0, $month, $day, $year);\n\n$year = date(\"Y\", $myTime);\n$month = date(\"m\", $myTime);\n$day = date(\"d\", $myTime);\n\n$data = read_data($myTime, false);\n\n$dirRef = date(\"Y/m/d\", $myTime);\n$dataurl = \"/archive/data/$dirRef/text/ot/ot0006.dat\";\n\n$valDate = date(\"Y-m-d\", $myTime);\n$titleDate = date(\"M d, Y\", $myTime);\n$prevDate = date(\"Y-m-d\", strtotime('-1 day', $myTime));\n$nextDate = date(\"Y-m-d\", strtotime('+1 day', $myTime));\n\n$t->content = <<<EOM\n<div class=\"container-fluid\">\n    <div class=\"row\">\n        <div class=\"col-12\">\n            <nav aria-label=\"breadcrumb\">\n                <ol class=\"breadcrumb\">\n                    <li class=\"breadcrumb-item\"><a href=\"/other/\">Other Stations</a></li>\n                    <li class=\"breadcrumb-item active\" aria-current=\"page\">Mesonet NE Ames</li>\n                </ol>\n            </nav>\n        </div>\n    </div>\n\n    <div class=\"row\">\n        <div class=\"col-12\">\n            <div class=\"alert alert-info\" role=\"alert\">\n                <h4 class=\"alert-heading\"><i class=\"bi bi-info-circle\"></i> High-Resolution Weather Data</h4>\n                <p class=\"mb-0\">You can plot 1 minute data for this location. Note that the archive begins October 24, 2004.</p>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"row mb-4\">\n        <div class=\"col-lg-4 col-md-6\">\n            <div class=\"card border-0 shadow-sm\">\n                <div class=\"card-header bg-primary text-white\">\n                    <h5 class=\"card-title mb-0\">\n                        <i class=\"bi bi-calendar-date\"></i> Select Date\n                    </h5>\n                </div>\n                <div class=\"card-body\">\n                    <form method=\"GET\" class=\"d-flex flex-column gap-3\">\n                        <div class=\"row g-2 align-items-center\">\n                            <div class=\"col-auto\">\n                                <a href=\"?date={$prevDate}\" class=\"btn btn-outline-secondary btn-sm\" title=\"Previous day\">\n                                    <i class=\"bi bi-arrow-left\"></i>\n                                </a>\n                            </div>\n                            <div class=\"col\">\n                                <input type=\"date\" class=\"form-control\" name=\"date\" value=\"{$valDate}\">\n                            </div>\n                            <div class=\"col-auto\">\n                                <a href=\"?date={$nextDate}\" class=\"btn btn-outline-secondary btn-sm\" title=\"Next day\">\n                                    <i class=\"bi bi-arrow-right\"></i>\n                                </a>\n                            </div>\n                        </div>\n                        <button type=\"submit\" class=\"btn btn-primary\">\n                            <i class=\"bi bi-graph-up\"></i> Generate Plots\n                        </button>\n                    </form>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"col-lg-8 col-md-6\">\n            <div class=\"card border-0 shadow-sm\">\n                <div class=\"card-header bg-light\">\n                    <h5 class=\"card-title mb-0\">\n                        <i class=\"bi bi-thermometer-half\"></i> Current Conditions - {$titleDate}\n                    </h5>\n                </div>\n                <div class=\"card-body\">\n                    <div class=\"row g-3\">\n                        <div class=\"col-md-6\">\n                            <div class=\"d-flex align-items-center p-3 bg-danger bg-opacity-10 rounded\">\n                                <div class=\"flex-shrink-0\">\n                                    <i class=\"bi bi-thermometer-high text-danger fs-4\"></i>\n                                </div>\n                                <div class=\"flex-grow-1 ms-3\">\n                                    <div class=\"fw-semibold\">Maximum Temperature</div>\n                                    <div class=\"fs-5 text-danger\">{$data[\"max_tmpf\"]}°F</div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"col-md-6\">\n                            <div class=\"d-flex align-items-center p-3 bg-info bg-opacity-10 rounded\">\n                                <div class=\"flex-shrink-0\">\n                                    <i class=\"bi bi-thermometer-low text-info fs-4\"></i>\n                                </div>\n                                <div class=\"flex-grow-1 ms-3\">\n                                    <div class=\"fw-semibold\">Minimum Temperature</div>\n                                    <div class=\"fs-5 text-info\">{$data[\"min_tmpf\"]}°F</div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"col-md-6\">\n                            <div class=\"d-flex align-items-center p-3 bg-warning bg-opacity-10 rounded\">\n                                <div class=\"flex-shrink-0\">\n                                    <i class=\"bi bi-wind text-warning fs-4\"></i>\n                                </div>\n                                <div class=\"flex-grow-1 ms-3\">\n                                    <div class=\"fw-semibold\">Maximum Wind Gust</div>\n                                    <div class=\"fs-5 text-warning\">{$data[\"max_gust\"]} mph</div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"col-md-6\">\n                            <div class=\"d-flex align-items-center p-3 bg-secondary bg-opacity-10 rounded\">\n                                <div class=\"flex-shrink-0\">\n                                    <i class=\"bi bi-clock text-secondary fs-4\"></i>\n                                </div>\n                                <div class=\"flex-grow-1 ms-3\">\n                                    <div class=\"fw-semibold\">Gust Time</div>\n                                    <div class=\"fs-6 text-secondary\">{$data[\"max_gust_time\"]}</div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <hr>\n                    <div class=\"d-flex justify-content-center\">\n                        <a href=\"{$dataurl}\" class=\"btn btn-outline-primary btn-sm\">\n                            <i class=\"bi bi-file-earmark-text\"></i> View Raw Data File\n                        </a>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"row\">\n        <div class=\"col-12\">\n            <div class=\"card border-0 shadow-sm\">\n                <div class=\"card-header bg-success text-white\">\n                    <h5 class=\"card-title mb-0\">\n                        <i class=\"bi bi-graph-up\"></i> Weather Time Series - {$titleDate}\n                    </h5>\n                </div>\n                <div class=\"card-body\">\n                    <div class=\"row g-4\">\n                        <div class=\"col-lg-6\">\n                            <div class=\"text-center\">\n                                <h6 class=\"text-primary mb-3\">\n                                    <i class=\"bi bi-thermometer-half\"></i> Temperature & Dew Point\n                                </h6>\n                                <img src=\"1min.php?year={$year}&amp;month={$month}&amp;day={$day}\"\n                                     class=\"img-fluid rounded shadow-sm\"\n                                     alt=\"Temperature and Dew Point Time Series\">\n                            </div>\n                        </div>\n\n                        <div class=\"col-lg-6\">\n                            <div class=\"text-center\">\n                                <h6 class=\"text-success mb-3\">\n                                    <i class=\"bi bi-house\"></i> Indoor Conditions\n                                </h6>\n                                <img src=\"1min_inside.php?year={$year}&amp;month={$month}&amp;day={$day}\"\n                                     class=\"img-fluid rounded shadow-sm\"\n                                     alt=\"Indoor Temperature Time Series\">\n                            </div>\n                        </div>\n\n                        <div class=\"col-lg-6\">\n                            <div class=\"text-center\">\n                                <h6 class=\"text-info mb-3\">\n                                    <i class=\"bi bi-droplet\"></i> Relative Humidity\n                                </h6>\n                                <img src=\"rh.php?year={$year}&amp;month={$month}&amp;day={$day}\"\n                                     class=\"img-fluid rounded shadow-sm\"\n                                     alt=\"Relative Humidity Time Series\">\n                            </div>\n                        </div>\n\n                        <div class=\"col-lg-6\">\n                            <div class=\"text-center\">\n                                <h6 class=\"text-secondary mb-3\">\n                                    <i class=\"bi bi-speedometer2\"></i> Barometric Pressure\n                                </h6>\n                                <img src=\"baro.php?year={$year}&amp;month={$month}&amp;day={$day}\"\n                                     class=\"img-fluid rounded shadow-sm\"\n                                     alt=\"Barometric Pressure Time Series\">\n                            </div>\n                        </div>\n\n                        <div class=\"col-lg-6\">\n                            <div class=\"text-center\">\n                                <h6 class=\"text-warning mb-3\">\n                                    <i class=\"bi bi-wind\"></i> Wind Conditions\n                                </h6>\n                                <img src=\"1min_V.php?year={$year}&amp;month={$month}&amp;day={$day}\"\n                                     class=\"img-fluid rounded shadow-sm\"\n                                     alt=\"Wind Speed and Direction Time Series\">\n                            </div>\n                        </div>\n\n                        <div class=\"col-lg-6\">\n                            <div class=\"text-center\">\n                                <h6 class=\"text-primary mb-3\">\n                                    <i class=\"bi bi-cloud-rain\"></i> Daily Precipitation\n                                </h6>\n                                <img src=\"dailyrain.php?year={$year}&amp;month={$month}&amp;day={$day}\"\n                                     class=\"img-fluid rounded shadow-sm\"\n                                     alt=\"Daily Precipitation Time Series\">\n                            </div>\n                        </div>\n                    </div>\n\n                    <div class=\"row mt-4\">\n                        <div class=\"col-12\">\n                            <div class=\"text-center\">\n                                <h6 class=\"text-danger mb-3\">\n                                    <i class=\"bi bi-activity\"></i> Temperature vs Relative Humidity\n                                </h6>\n                                <img src=\"temp_rh.php?year={$year}&amp;month={$month}&amp;day={$day}\"\n                                     class=\"img-fluid rounded shadow-sm\"\n                                     alt=\"Temperature vs Relative Humidity Scatter Plot\">\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/plotting/mesoeast/rh.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\nrequire_once \"../../../include/mesoeast.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n\n$myTime = strtotime($year.\"-\".$month.\"-\".$day);\n\n$titleDate = date(\"M d, Y\", $myTime);\n\n$data = read_data($myTime);\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600,300,\"example1\");\n$graph->SetScale(\"datelin\", 0, 100);\n$graph->img->SetMargin(65,40,45,80);\n$graph->xaxis->SetLabelFormatString(\"h:i A\", true);\n\n$graph->xaxis->SetLabelAngle(90);\n$graph->yaxis->scale->ticks->Set(10,5);\n$graph->yaxis->scale->SetGrace(10);\n$graph->title->Set(\"Relative Humidity\");\n$graph->subtitle->Set($titleDate );\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01,0.075);\n\n$graph->title->SetFont(FF_FONT1,FS_BOLD,14);\n$graph->yaxis->SetTitle(\"Relative Humidity [%]\");\n\n$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetTitleMargin(30);\n$graph->yaxis->SetTitleMargin(40);\n$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot=new LinePlot($data[\"rh\"], $data[\"times\"]);\n$lineplot->SetLegend(\"Outside RH\");\n$lineplot->SetColor(\"blue\");\n\n// Create the linear plot\n$lineplot2=new LinePlot($data[\"inRh\"], $data[\"times\"]);\n$lineplot2->SetLegend(\"Inside RH\");\n$lineplot2->SetColor(\"red\");\n\n$graph->Add($lineplot2);\n$graph->Add($lineplot);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/mesoeast/temp_rh.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\nrequire_once \"../../../include/mesoeast.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n\n$myTime = strtotime($year.\"-\".$month.\"-\".$day);\n$titleDate = date(\"M d, Y\", $myTime);\n\n$data = read_data($myTime);\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600,300,\"example1\");\n$graph->SetScale(\"datlin\");\n$graph->SetY2Scale(\"lin\");\n$graph->img->SetMargin(75,50,45,80);\n$graph->xaxis->SetLabelFormatString(\"h:i A\", true);\n\n\n$graph->xaxis->SetLabelAngle(90);\n$graph->yaxis->scale->ticks->Set(10,5);\n$graph->yaxis->scale->SetGrace(10);\n$graph->title->Set(\"Temp & RH\");\n$graph->subtitle->Set($titleDate );\n\n//$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.11, 0.14);\n\n$graph->title->SetFont(FF_FONT1,FS_BOLD,14);\n$graph->yaxis->SetTitle(\"Temperature [F]\");\n$graph->yaxis->SetTitleMargin(40);\n$graph->y2axis->SetTitle(\"Relative Humidity [%]\");\n$graph->y2axis->SetTitleMargin(40);\n$graph->xaxis->SetLabelFormatString(\"h:i A\", true);\n\n$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetTitle(\"Valid Local Time\");\n$graph->xaxis->SetTitleMargin(50);\n//$graph->yaxis->SetTitleMargin(48);\n$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot=new LinePlot($data[\"rh\"], $data[\"times\"]);\n$graph->AddY2($lineplot);\n$lineplot->SetLegend(\"Outside RH\");\n$lineplot->SetColor(\"blue\");\n\n// Create the linear plot\n$lineplot2=new LinePlot($data[\"tmpf\"], $data[\"times\"]);\n$graph->Add($lineplot2);\n$lineplot2->SetLegend(\"Air Temperature [F]\");\n$lineplot2->SetColor(\"red\");\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/mesonorth/1min_ot.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_led.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n\n$myTime = mktime(0, 0, 0, $month, $day, $year);\n\n$titleDate = date(\"M d, Y\", $myTime);\n$dirRef = date(\"Y/m/d\", $myTime);\n\n$fp = \"/mesonet/ARCHIVE/data/$dirRef/text/ot/ot0003.dat\";\nif (!file_exists($fp)) {\n    $led = new DigitalLED74();\n    $led->StrokeNumber('NO DATA FOR THIS DATE', LEDC_GREEN);\n    die();\n}\n$fcontents = file($fp);\n\n$oldformat = 1;\nif ($myTime >= mktime(0, 0, 0, 8, 12, 2005)) {\n    $oldformat = 0;\n}\n\n$t1 = array();\n$t2 = array();\n$t3 = array();\n$t4 = array();\n$times = array();\n\n$start = intval($myTime);\n$i = 0;\n\n$new_contents = array_slice($fcontents, 2);\nforeach ($new_contents as $line_num => $line) {\n    $parts = preg_split(\"/,/\", $line);\n    if (sizeof($parts) < 3) continue;\n    $hhmm = str_pad($parts[3], 4, \"0\", STR_PAD_LEFT);\n    $hh = substr($hhmm, 0, 2);\n    if ($hh == 24) {\n        $hh = 00;\n    }\n    $mm = substr($hhmm, 2, 3);\n    $timestamp = mktime($hh, $mm, 0, $month, $day, $year);\n    if ($oldformat) {\n        $thisTmpc = $parts[10];\n        $t1[] = round((9.0 / 5.0 * $thisTmpc) + 32.0, 2);\n    } else {\n        $t1[] = $parts[4];\n        $t2[] = $parts[5];\n        $t3[] = $parts[6];\n        $t4[] = $parts[7];\n    }\n    $times[] = $timestamp;\n} // End of while\n\n// Create the graph. These two calls are always required\n$graph = new Graph(1200, 628);\n$graph->SetScale(\"datlin\");\n\n$graph->img->SetMargin(65, 20, 45, 90);\n$graph->xaxis->SetTextTickInterval(6);\n$graph->xaxis->SetLabelAngle(90);\n$graph->xaxis->SetLabelFormatString(\"h:i A\", true);\n\n$graph->yscale->SetGrace(10);\n$graph->title->Set(\"Cluster Room Temperature ($titleDate)\");\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01, 0.05);\n\n$graph->title->SetFont(FF_FONT1, FS_BOLD, 14);\n$graph->yaxis->SetTitle(\"Temperature [F]\");\n\n$graph->yaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->xaxis->SetTitle(\"Valid Local Time (Central US)\");\n$graph->xaxis->SetTitleMargin(55);\n$graph->yaxis->SetTitleMargin(40);\n$graph->xaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->xaxis->SetPos(\"min\");\n\n$sensors = array(\"Out of Subfloor\", \"Inbound Top\", \"Outbound Top\", \"Room\");\nif ($myTime > mktime(0, 0, 0, 7, 9, 2006))\n    $sensors = array(\"In Air Handler\", \"Out Air Handler\", \"Out Floor\", \"Room\");\nif ($myTime > mktime(0, 0, 0, 2, 29, 2012))\n    $sensors = array(\"In Air Handler\", \"Out Air Handler\", \"Out Rack\", \"In Rack\");\n\n// Create the linear plot\n$lineplot = new LinePlot($t1, $times);\n$graph->Add($lineplot);\nif (sizeof($t2) > 0) {\n    $lineplot->SetLegend($sensors[0]);\n} else {\n    $lineplot->SetLegend(\"Room Temp\");\n}\n$lineplot->SetColor(\"#ff0000\");\n$lineplot->SetLineWeight(2);\n\nif (sizeof($t2) > 0) {\n    // Create the linear plot\n    $lineplot2 = new LinePlot($t2, $times);\n    $graph->Add($lineplot2);\n    $lineplot2->SetLegend($sensors[1]);\n    $lineplot2->SetColor(\"#0000ff\");\n    $lineplot2->SetLineWeight(2);\n\n    // Create the linear plot\n    $lineplot3 = new LinePlot($t3, $times);\n    $graph->Add($lineplot3);\n    $lineplot3->SetLegend($sensors[2]);\n    $lineplot3->SetColor(\"#00ff00\");\n    $lineplot3->SetLineWeight(2);\n\n    // Create the linear plot\n    $lineplot4 = new LinePlot($t4, $times);\n    $graph->Add($lineplot4);\n    $lineplot4->SetLegend($sensors[3]);\n    $lineplot4->SetColor(\"#000000\");\n    $lineplot4->SetLineWeight(2);\n}\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/mesonorth/battery.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n\n$myTime = mktime(0,0,0,$month,$day,$year);\n\n$titleDate = date(\"M d, Y\", $myTime);\n$dirRef = date(\"Y/m/d\", $myTime);\n\n$filename = \"/mesonet/ARCHIVE/data/$dirRef/text/ot/ot0003.dat\";\nif (!file_exists($filename))\n{\n    http_response_code(422);\n    die(\"File Not Found\");\n}\n$fcontents = file($filename);\n\n$oldformat = 1;\nif ($myTime >= mktime(0,0,0,8,12,2005))\n{\n  $oldformat = 0;\n}\n\n$v1 = array();\n$times = array();\n\n$start = intval( $myTime );\n$i = 0;\n\n$new_contents = array_slice($fcontents,2);\nforeach($new_contents as $line_num => $line){\n  $parts = explode(\",\", $line);\n  if (sizeof($parts) < 3) continue;\n  $hhmm = str_pad($parts[3],4,\"0\",STR_PAD_LEFT);\n  $hh = substr($hhmm,0,2);\n  if ($hh == 24){$hh = 00;}\n  $mm = substr($hhmm,2,3);\n  $timestamp = mktime($hh,$mm,0,$month,$day,$year);\n\n  if ($oldformat && $parts[11] > 1)\n  {\n    $v1[] = round($parts[11],2);\n  }\n  else if ($parts[8] > 1)\n  {\n    $v1[] = round($parts[8],2);\n  }\n  else\n  {\n    $v1[] = \"\";\n  }\n  $times[] = $timestamp;\n\n} // End of while\n\n\n\n// Create the graph. These two calls are always required\n$graph = new Graph(600,300);\n$graph->SetScale(\"datlin\");\n$graph->xaxis->SetLabelFormatString(\"h A\", true);\n$graph->img->SetMargin(65,40,45,60);\n$graph->xaxis->SetTextTickInterval(6);\n$graph->xaxis->SetLabelAngle(90);\n$graph->yaxis->scale->ticks->Set(0.01,0.005);\n$graph->yscale->SetGrace(20);\n$graph->title->Set(\"Logger Battery Voltage\");\n$graph->subtitle->Set($titleDate );\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01,0.075);\n\n$graph->title->SetFont(FF_FONT1,FS_BOLD,14);\n$graph->yaxis->SetTitle(\"Voltage [Volts]\");\n\n$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetTitle(\"Valid Local Time\");\n$graph->xaxis->SetTitleMargin(30);\n$graph->yaxis->SetTitleMargin(40);\n$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetPos(\"min\");\n\n// Create the linear plot\n$lineplot=new LinePlot($v1, $times);\n$lineplot->SetLegend(\"Voltage\");\n$lineplot->SetColor(\"blue\");\n\n$graph->Add($lineplot);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/mesonorth/ot_10min.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n$t->title = \"B548 Agronomy Time Series\";\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$ts = mktime(0, 0, 0, $month, $day, $year);\n\n$battery = \"\";\nif ($ts < mktime(0, 0, 0, 7, 9, 2006)) {\n    $battery = <<<EOM\n  <img src=\"battery.php?year={$year}&month={$month}&day={$day}\" ALT=\"Time Series\">\nEOM;\n}\n\n$ys = yearSelect(2003, $year, \"year\");\n$ms = monthSelect($month, \"month\");\n$ds = daySelect($day, \"day\");\n\n$url = sprintf(\n    \"1min_ot.php?year=%s&month=%s&day=%s\",\n    date(\"Y\", $ts),\n    date(\"m\", $ts),\n    date(\"d\", $ts)\n);\n$n = sprintf(\n    \"ot_10min.phtml?year=%s&month=%s&day=%s\",\n    date(\"Y\", $ts + 86400),\n    date(\"m\", $ts + 86400),\n    date(\"d\", $ts + 86400)\n);\n$p = sprintf(\n    \"ot_10min.phtml?year=%s&month=%s&day=%s\",\n    date(\"Y\", $ts - 86400),\n    date(\"m\", $ts - 86400),\n    date(\"d\", $ts - 86400)\n);\n\n$t->content = <<<EOM\n<div class=\"container-fluid\">\n    <nav aria-label=\"breadcrumb\">\n        <ol class=\"breadcrumb\">\n            <li class=\"breadcrumb-item\"><a href=\"/other/\">Other Networks</a></li>\n            <li class=\"breadcrumb-item active\" aria-current=\"page\">B548 Agronomy Server Room</li>\n        </ol>\n    </nav>\n\n    <div class=\"row\">\n        <div class=\"col-12\">\n            <div class=\"alert alert-info\" role=\"alert\">\n                <h4 class=\"alert-heading\"><i class=\"bi bi-thermometer-half\"></i> Server Room Climate Monitoring</h4>\n                <p>The IEM server resides in a room that is climate controlled by a dedicated heat exchanger. This page presents daily plots of logged temperatures from four one-wire sensors measuring ambient temperature.</p>\n                <hr>\n                <p class=\"mb-0\"><strong>Note:</strong> The archive begins July 24, 2003.</p>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"row mb-4\">\n        <div class=\"col-lg-6\">\n            <div class=\"card border-0 shadow-sm\">\n                <div class=\"card-header bg-primary text-white\">\n                    <h5 class=\"card-title mb-0\">\n                        <i class=\"bi bi-calendar-date\"></i> Select Date\n                    </h5>\n                </div>\n                <div class=\"card-body\">\n                    <form method=\"GET\" action=\"ot_10min.phtml\" class=\"d-flex flex-column gap-3\">\n                        <div class=\"row g-2\">\n                            <div class=\"col-4\">\n                                <label for=\"year\" class=\"form-label small\">Year</label>\n                                {$ys}\n                            </div>\n                            <div class=\"col-4\">\n                                <label for=\"month\" class=\"form-label small\">Month</label>\n                                {$ms}\n                            </div>\n                            <div class=\"col-4\">\n                                <label for=\"day\" class=\"form-label small\">Day</label>\n                                {$ds}\n                            </div>\n                        </div>\n                        <button type=\"submit\" class=\"btn btn-primary\">\n                            <i class=\"bi bi-graph-up\"></i> Generate Plot\n                        </button>\n                    </form>\n\n                    <hr>\n\n                    <div class=\"d-flex justify-content-between\">\n                        <a href=\"{$p}\" class=\"btn btn-outline-secondary btn-sm\">\n                            <i class=\"bi bi-chevron-left\"></i> Previous Day\n                        </a>\n                        <a href=\"{$n}\" class=\"btn btn-outline-secondary btn-sm\">\n                            Next Day <i class=\"bi bi-chevron-right\"></i>\n                        </a>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"col-lg-6\">\n            <div class=\"card border-0 shadow-sm\">\n                <div class=\"card-header bg-success text-white\">\n                    <h5 class=\"card-title mb-0\">\n                        <i class=\"bi bi-cpu\"></i> Temperature Sensor Locations\n                    </h5>\n                </div>\n                <div class=\"card-body\">\n                    <div class=\"list-group list-group-flush\">\n                        <div class=\"list-group-item border-0 px-0\">\n                            <div class=\"d-flex align-items-center\">\n                                <div class=\"flex-shrink-0\">\n                                    <div class=\"bg-primary bg-opacity-25 rounded-circle p-2\">\n                                        <i class=\"bi bi-arrow-down text-primary\"></i>\n                                    </div>\n                                </div>\n                                <div class=\"flex-grow-1 ms-3\">\n                                    <div class=\"fw-semibold\">In Air Handler</div>\n                                    <small class=\"text-muted\">5 feet above floor at heat exchanger intake</small>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"list-group-item border-0 px-0\">\n                            <div class=\"d-flex align-items-center\">\n                                <div class=\"flex-shrink-0\">\n                                    <div class=\"bg-info bg-opacity-25 rounded-circle p-2\">\n                                        <i class=\"bi bi-arrow-up text-info\"></i>\n                                    </div>\n                                </div>\n                                <div class=\"flex-grow-1 ms-3\">\n                                    <div class=\"fw-semibold\">Out Air Handler</div>\n                                    <small class=\"text-muted\">Below sub floor where cooled air departs</small>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"list-group-item border-0 px-0\">\n                            <div class=\"d-flex align-items-center\">\n                                <div class=\"flex-shrink-0\">\n                                    <div class=\"bg-warning bg-opacity-25 rounded-circle p-2\">\n                                        <i class=\"bi bi-hdd-rack text-warning\"></i>\n                                    </div>\n                                </div>\n                                <div class=\"flex-grow-1 ms-3\">\n                                    <div class=\"fw-semibold\">In Rack</div>\n                                    <small class=\"text-muted\">Front door of rack at 1 meter height</small>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"list-group-item border-0 px-0\">\n                            <div class=\"d-flex align-items-center\">\n                                <div class=\"flex-shrink-0\">\n                                    <div class=\"bg-danger bg-opacity-25 rounded-circle p-2\">\n                                        <i class=\"bi bi-hdd-rack-fill text-danger\"></i>\n                                    </div>\n                                </div>\n                                <div class=\"flex-grow-1 ms-3\">\n                                    <div class=\"fw-semibold\">Out Rack</div>\n                                    <small class=\"text-muted\">Back of rack at 1 meter height</small>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"row mb-4\">\n        <div class=\"col-12\">\n            <div class=\"card border-0 shadow-sm\">\n                <div class=\"card-header bg-secondary text-white\">\n                    <h5 class=\"card-title mb-0\">\n                        <i class=\"bi bi-activity\"></i> Temperature Time Series\n                    </h5>\n                </div>\n                <div class=\"card-body text-center\">\n                    <img src=\"{$url}\" alt=\"Temperature Time Series\" class=\"img-fluid rounded shadow-sm\">\n                    {$battery}\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"row\">\n        <div class=\"col-12\">\n            <div class=\"card border-0 shadow-sm\">\n                <div class=\"card-header bg-warning text-dark\">\n                    <h5 class=\"card-title mb-0\">\n                        <i class=\"bi bi-exclamation-triangle\"></i> Notable Temperature Events\n                    </h5>\n                </div>\n                <div class=\"card-body\">\n                    <div class=\"row g-3\">\n                        <div class=\"col-lg-6\">\n                            <div class=\"list-group list-group-flush\">\n                                <div class=\"list-group-item border-0 px-0\">\n                                    <div class=\"d-flex align-items-start\">\n                                        <div class=\"flex-shrink-0\">\n                                            <span class=\"badge bg-primary\">2008</span>\n                                        </div>\n                                        <div class=\"flex-grow-1 ms-3\">\n                                            <div class=\"fw-semibold\">\n                                                <a href=\"ot_10min.phtml?year=2008&month=05&day=16\" class=\"text-decoration-none\">16 May 2008</a>\n                                            </div>\n                                            <small class=\"text-muted\">Agronomy building loses chilled water supply, heat exchanger later gets backed up on local 'cooler' water.</small>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"list-group-item border-0 px-0\">\n                                    <div class=\"d-flex align-items-start\">\n                                        <div class=\"flex-shrink-0\">\n                                            <span class=\"badge bg-warning text-dark\">2010</span>\n                                        </div>\n                                        <div class=\"flex-grow-1 ms-3\">\n                                            <div class=\"fw-semibold\">\n                                                <a href=\"ot_10min.phtml?year=2010&month=06&day=14\" class=\"text-decoration-none\">14 Jun 2010</a>\n                                            </div>\n                                            <small class=\"text-muted\">ISU Campus takes a power bump knocking out various utilities.</small>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"list-group-item border-0 px-0\">\n                                    <div class=\"d-flex align-items-start\">\n                                        <div class=\"flex-shrink-0\">\n                                            <span class=\"badge bg-info\">2010</span>\n                                        </div>\n                                        <div class=\"flex-grow-1 ms-3\">\n                                            <div class=\"fw-semibold\">\n                                                <a href=\"ot_10min.phtml?year=2010&month=08&day=11\" class=\"text-decoration-none\">11 Aug 2010</a>\n                                            </div>\n                                            <small class=\"text-muted\">Flooding impacts ISU campus and the chilled water is shut off for a while.</small>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"list-group-item border-0 px-0\">\n                                    <div class=\"d-flex align-items-start\">\n                                        <div class=\"flex-shrink-0\">\n                                            <span class=\"badge bg-success\">2013</span>\n                                        </div>\n                                        <div class=\"flex-grow-1 ms-3\">\n                                            <div class=\"fw-semibold\">\n                                                <a href=\"ot_10min.phtml?year=2013&month=06&day=24\" class=\"text-decoration-none\">24 Jun 2013</a>\n                                            </div>\n                                            <small class=\"text-muted\">Chilled water is turned off for an hour to check metering.</small>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"list-group-item border-0 px-0\">\n                                    <div class=\"d-flex align-items-start\">\n                                        <div class=\"flex-shrink-0\">\n                                            <span class=\"badge bg-secondary\">2016</span>\n                                        </div>\n                                        <div class=\"flex-grow-1 ms-3\">\n                                            <div class=\"fw-semibold\">\n                                                <a href=\"ot_10min.phtml?year=2016&month=8&day=9\" class=\"text-decoration-none\">9 Aug 2016</a>\n                                            </div>\n                                            <small class=\"text-muted\">Fan bracket is repaired on heat exchanger.</small>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"list-group-item border-0 px-0\">\n                                    <div class=\"d-flex align-items-start\">\n                                        <div class=\"flex-shrink-0\">\n                                            <span class=\"badge bg-danger\">2019</span>\n                                        </div>\n                                        <div class=\"flex-grow-1 ms-3\">\n                                            <div class=\"fw-semibold\">\n                                                <a href=\"ot_10min.phtml?year=2019&month=4&day=10\" class=\"text-decoration-none\">10 Apr 2019</a>\n                                            </div>\n                                            <small class=\"text-muted\">Lightning strike knocks out chilled water and then power surge knocks out a few servers.</small>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"col-lg-6\">\n                            <div class=\"list-group list-group-flush\">\n                                <div class=\"list-group-item border-0 px-0\">\n                                    <div class=\"d-flex align-items-start\">\n                                        <div class=\"flex-shrink-0\">\n                                            <span class=\"badge bg-warning text-dark\">2020</span>\n                                        </div>\n                                        <div class=\"flex-grow-1 ms-3\">\n                                            <div class=\"fw-semibold\">\n                                                <a href=\"ot_10min.phtml?year=2020&month=4&day=11\" class=\"text-decoration-none\">11 Apr 2020</a>\n                                            </div>\n                                            <small class=\"text-muted\">ISU FP&M shuts down chilled water supply to do some local construction work.</small>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"list-group-item border-0 px-0\">\n                                    <div class=\"d-flex align-items-start\">\n                                        <div class=\"flex-shrink-0\">\n                                            <span class=\"badge bg-primary\">2022</span>\n                                        </div>\n                                        <div class=\"flex-grow-1 ms-3\">\n                                            <div class=\"fw-semibold\">\n                                                <a href=\"ot_10min.phtml?year=2022&month=3&day=18\" class=\"text-decoration-none\">18 Mar 2022</a>\n                                            </div>\n                                            <small class=\"text-muted\">ISU FP&M shuts down chilled water supply to do some local construction work.</small>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"list-group-item border-0 px-0\">\n                                    <div class=\"d-flex align-items-start\">\n                                        <div class=\"flex-shrink-0\">\n                                            <span class=\"badge bg-info\">2022</span>\n                                        </div>\n                                        <div class=\"flex-grow-1 ms-3\">\n                                            <div class=\"fw-semibold\">\n                                                <a href=\"ot_10min.phtml?year=2022&month=3&day=22\" class=\"text-decoration-none\">22 Mar 2022</a>\n                                            </div>\n                                            <small class=\"text-muted\">ISU FP&M shuts down chilled water supply to do some local construction work.</small>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"list-group-item border-0 px-0\">\n                                    <div class=\"d-flex align-items-start\">\n                                        <div class=\"flex-shrink-0\">\n                                            <span class=\"badge bg-danger\">2023</span>\n                                        </div>\n                                        <div class=\"flex-grow-1 ms-3\">\n                                            <div class=\"fw-semibold\">\n                                                <a href=\"ot_10min.phtml?year=2023&month=8&day=24\" class=\"text-decoration-none\">24 Aug 2023</a>\n                                            </div>\n                                            <small class=\"text-muted\">Fire at ISU FP&M shuts down chilled water supply.</small>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/plotting/month/rainfall.css",
    "content": "#map {\n    width: 450px;\n    height: 450px;\n    border: 2px solid black;\n}"
  },
  {
    "path": "htdocs/plotting/month/rainfall.phtml",
    "content": "<?php\n$OL = \"10.6.1\";\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/forms.php\";\n$t = new MyView();\n$t->iemselect2 = TRUE;\n\n$station = isset($_GET['station']) ? xssafe($_GET[\"station\"]) : \"\";\n$network = isset($_GET[\"network\"]) ? xssafe($_GET['network']) : \"IA_ASOS\";\n$year = get_int404('year', date(\"Y\"));\n$month = get_int404('month', date(\"m\"));\n\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol.css\" type=\"text/css\">\n<link type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"rainfall.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"/vendor/openlayers/{$OL}/ol.js\" type=\"text/javascript\"></script>\n<script src='/vendor/openlayers/{$OL}/ol-layerswitcher.js'></script>\n<script src=\"/js/olselect.js\"></script>\nEOM;\n\n$t->title = \"Monthly Rainfall Traces\";\n\n$content = <<<EOM\n\n<h3>Monthly Rainfall Traces</h3>\n\n<p>This application creates a plot of observed precipitation versus \nclimatology for a site of your choice in Iowa. \nEOM;\nif (strlen($station) > 0) {\n    $nselect = networkSelect($network, $station);\n    $yselect = yearSelect(2004, $year, \"year\");\n    $mselect = monthSelect($month);\n    $content .= <<<EOM\n<form name=\"ds\" action=\"rainfall.phtml\" method=\"GET\">\n<input type=\"hidden\" value=\"{$network}\" name=\"network\">\n<table cellspacing=2 border=1 cellpadding=2>\n<tr><th>Site ID:</th><th>Select Year:</th><th>Select Month:</th></tr>\n<tr><td>{$nselect}\n<a href=\"rainfall.phtml?network={$network}\">Select from map</a></td>\n  <td>{$yselect}</td>\n    <td>{$mselect}</td></tr>\n</table>\n<input type=\"submit\" value=\"Make Plot\">\n</form>\n\n<p><img src=\"/plotting/auto/plot/17/month:{$month}::year:{$year}::station:{$station}::network:{$network}::p:precip.png\" alt=\"Time Series\" />\nEOM;\n} else {\n    $nselect = networkSelect($network, \"\");\n    $content .= <<<EOM\n\n<br /><a href=\"rainfall.phtml?network=IA_ASOS\">Iowa ASOS</a> &nbsp; \n<a href=\"rainfall.phtml?network=AWOS\">Iowa AWOS</a> &nbsp; \n<a href=\"rainfall.phtml?network=IA_COOP\">Iowa NWS COOP</a> &nbsp; \n<a href=\"rainfall.phtml?network=KCCI\">KCCI-TV SchoolNet</a> &nbsp; \n\n<form name=\"olselect\">\n<input type=\"hidden\" value=\"{$network}\" name=\"network\">\n<table><tr><th>Select Station</th>\n<td>{$nselect}</td>\n<td><input type=\"submit\" value=\"Make Plot\"></tr></table>\n<div id=\"map\" data-network=\"{$network}\"></div>\n</form>\nEOM;\n}\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/plotting/month/rainfall_plot.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\n\n$station = get_str404(\"station\", \"DSM\");\n$network = get_str404(\"network\", \"IA_ASOS\");\n$month = get_int404('month', date(\"m\"));\n$year = get_int404('year', date(\"Y\"));\n\n$uri = sprintf(\"/plotting/auto/plot/17/month:%s::year:%s::station:%s\".\n    \"::network:%s::p:precip.png\", $month, $year, $station, $network);\nheader(\"Location: {$uri}\");\n"
  },
  {
    "path": "htdocs/plotting/rwis/SFtemps.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/mlib.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_bar.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_led.php\";\n\n/** We need these vars to make this work */\n$subc = array_key_exists(\"subc\", $_GET) ? $_GET[\"subc\"] : \"\";\n$dwpf = array_key_exists(\"dwpf\", $_GET) ? $_GET[\"dwpf\"] : \"\";\n$tmpf = array_key_exists(\"tmpf\", $_GET) ? $_GET[\"tmpf\"] : \"\";\n$pcpn = array_key_exists(\"pcpn\", $_GET) ? $_GET[\"pcpn\"] : \"\";\n$syear = get_int404(\"syear\", date(\"Y\"));\n$smonth = get_int404(\"smonth\", date(\"m\"));\n$sday = get_int404(\"sday\", date(\"d\"));\n$days = get_int404(\"days\", 2);\n$station = get_str404(\"station\", \"\");\n$network = get_str404(\"network\", \"IA_RWIS\");\n\n/** Lets assemble a time period if this plot is historical */\n$sts = new DateTime(\"$syear-$smonth-$sday\");\n$ets = new DateTime(\"$syear-$smonth-$sday\");\n$ets->modify(\"+$days days\");\n\nif (array_key_exists(\"limit\", $_GET)) $val = \"between 25 and 35\";\n\n$rwisdb = iemdb('rwis');\n$stname = iem_pg_prepare($rwisdb, <<<EOM\n    SELECT a.* FROM alldata a JOIN stations t on (a.iemid = t.iemid)\n    WHERE id = $1 and valid >= $2 and valid < $3\n    ORDER by valid ASC\nEOM);\n$minInterval = 20;\n$result = pg_execute($rwisdb, $stname, array($station, $sts->format(\"Y-m-d H:i\"), $ets->format(\"Y-m-d H:i\")));\n\n$minInterval = 20;\n\n$stname = iem_pg_prepare(\n    $rwisdb,\n    \"SELECT s.* from sensors s JOIN stations t on (s.iemid = t.iemid) WHERE t.id = $1\");\n$r1 = pg_execute($rwisdb, $stname, array($station));\n\n$ns0 = \"Sensor 1\";\n$ns1 = \"Sensor 2\";\n$ns2 = \"Sensor 3\";\n$ns3 = \"Sensor 4\";\nif (pg_num_rows($r1) > 0) {\n    $row = pg_fetch_assoc($r1);\n    $ns0 = $row['sensor0'];\n    $ns1 = $row['sensor1'];\n    $ns2 = $row['sensor2'];\n    $ns3 = $row['sensor3'];\n}\n\nif (pg_num_rows($result) == 0) {\n    $led = new DigitalLED74();\n    $led->StrokeNumber('NO DATA AVAILABLE', LEDC_GREEN);\n    die();\n}\n\n\n$tfs0 = array();\n$tfs1 = array();\n$tfs2 = array();\n$tfs3 = array();\n$pcpn = array();\n$Asubc = array();\n$Atmpf = array();\n$Adwpf = array();\n$freezing = array();\n$times = array();\n\nfunction checker($v)\n{\n    if ($v == \"\") {\n        return $v;\n    }\n    if (floatval($v) > 200) {\n        return '';\n    }\n    return $v;\n}\n\n$lastp = 0;\nwhile ($row = pg_fetch_assoc($result)) {\n    $times[] = strtotime(substr($row[\"valid\"], 0, 16));\n    $tfs0[] = checker($row[\"tfs0\"]);\n    $tfs1[] = checker($row[\"tfs1\"]);\n    $tfs2[] = checker($row[\"tfs2\"]);\n    $tfs3[] = checker($row[\"tfs3\"]);\n    $Asubc[] = checker($row[\"subf\"]);\n    $Atmpf[] = checker($row[\"tmpf\"]);\n    $Adwpf[] = checker($row[\"dwpf\"]);\n    $p = floatval($row[\"pcpn\"]);\n    $newp = 0;\n    if ($p > $lastp) {\n        $newp = $p - $lastp;\n    }\n    if ($p < $lastp && $p > 0) {\n        $newp = $p;\n    }\n    $pcpn[] = $newp;\n    $lastp = $p;\n    $freezing[] = 32;\n}\n\n$nt = new NetworkTable($network);\n$cities = $nt->table;\n\n// Create the graph. These two calls are always required\n$graph = new Graph(800, 600);\n$graph->SetScale(\"datlin\");\n$graph->SetMarginColor(\"white\");\n$graph->SetColor(\"lightyellow\");\nif (max($pcpn) != \"\" && isset($_GET[\"pcpn\"])) $graph->SetY2Scale(\"lin\");\nif (isset($limit))  $graph->SetScale(\"datlin\", 25, 35);\n$graph->img->SetMargin(40, 55, 105, 115);\n//$graph->xaxis->SetFont(FS_FONT1,FS_BOLD);\n\nif (max($pcpn) != \"\" && isset($_GET[\"pcpn\"])) {\n    $graph->y2axis->SetTitle(\"Precipitation [inch]\");\n    $graph->y2axis->SetTitleMargin(40);\n}\n\n$graph->yaxis->SetTitle(\"Temperature [F]\");\n$graph->yaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n\n$graph->xaxis->SetTitle(\"Time Period: \" . date('Y-m-d h:i A', $times[0]) . \" thru \" . date('Y-m-d h:i A', max($times)));\n$graph->xaxis->SetTitleMargin(90);\n$graph->xaxis->title->SetColor(\"brown\");\n$graph->xaxis->SetPos(\"min\");\n$graph->xaxis->SetLabelAngle(90);\n$graph->xaxis->SetLabelFormatString(\"M-j h A\", true);\n\n$graph->legend->Pos(0.01, 0.01);\n$graph->legend->SetLayout(LEGEND_VERT);\n\n// Create the linear plot\n$lineplot = new LinePlot($tfs0, $times);\n$lineplot->SetLegend(\"0: \" . $ns0);\n$lineplot->SetColor(\"blue\");\n$lineplot->SetWeight(3);\n\n// Create the linear plot\n$lineplot2 = new LinePlot($tfs1, $times);\n$lineplot2->SetLegend(\"1: \" . $ns1);\n$lineplot2->SetColor(\"pink\");\n$lineplot2->SetWeight(3);\n\n// Create the linear plot\n$lineplot3 = new LinePlot($tfs2, $times);\n$lineplot3->SetLegend(\"2: \" . $ns2);\n$lineplot3->SetColor(\"gray\");\n$lineplot3->SetWeight(3);\n\n// Create the linear plot\n$lineplot4 = new LinePlot($tfs3, $times);\n$lineplot4->SetLegend(\"3: \" . $ns3);\n$lineplot4->SetColor(\"purple\");\n$lineplot4->SetWeight(3);\n\n// Create the linear plot\n$lineplot5 = new LinePlot($Asubc, $times);\n$lineplot5->SetLegend(\"Sub Surface\");\n$lineplot5->SetColor(\"black\");\n$lineplot5->SetWeight(3);\n\n// Create the linear plot\n$lineplot6 = new LinePlot($Atmpf, $times);\n$lineplot6->SetLegend(\"Air Temperature\");\n$lineplot6->SetColor(\"red\");\n$lineplot6->SetWeight(3);\n\n// Create the linear plot\n$lineplot7 = new LinePlot($Adwpf, $times);\n$lineplot7->SetLegend(\"Dew Point\");\n$lineplot7->SetColor(\"green\");\n$lineplot7->SetWeight(3);\n\n$bp1 = new BarPlot($pcpn, $times);\n$bp1->SetLegend(\"Precip\");\n$bp1->SetFillColor(\"black\");\n$bp1->SetAbsWidth(1.0);\n\n// Create the linear plot\n$fz = new LinePlot($freezing, $times);\n$fz->SetColor(\"blue\");\n\n// Title Box\n$tx1 = new Text($cities[$station]['name'] . \" \\nMeteogram \");\n$tx1->SetPos(0.01, 0.01, 'left', 'top');\n$tx1->SetFont(FF_FONT1, FS_BOLD, 16);\n\n$tx2 = new Text(\"Time series showing temperatures\n   from the pavement sensors and\n   the sub-surface sensor \");\n$tx2->SetPos(0.01, 0.11, 'left', 'top');\n$tx2->SetFont(FF_FONT1, FS_NORMAL, 10);\n\n$ptext = \"Historical Plot for dates:\\n\";\n$tx3 = new Text($ptext);\n$graph->AddText($tx1);\n$graph->AddText($tx2);\n\n// Add the plot to the graph\n$graph->Add($fz);\nif (max($tfs0) != \"\" && isset($_GET[\"s0\"]))\n    $graph->Add($lineplot);\nif (max($tfs1) != \"\" && isset($_GET[\"s1\"]))\n    $graph->Add($lineplot2);\nif (max($tfs2) != \"\" && isset($_GET[\"s2\"]))\n    $graph->Add($lineplot3);\nif (max($tfs3) != \"\" && isset($_GET[\"s3\"]))\n    $graph->Add($lineplot4);\nif (max($Asubc) != \"\" && isset($_GET[\"subc\"]))\n    $graph->Add($lineplot5);\nif (max($Atmpf) != \"\" && isset($_GET[\"tmpf\"]))\n    $graph->Add($lineplot6);\nif (max($Adwpf) != \"\" && isset($_GET[\"dwpf\"]))\n    $graph->Add($lineplot7);\n\nif (max($pcpn) != \"\" && isset($_GET[\"pcpn\"]))\n    $graph->AddY2($bp1);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/rwis/plot_soil.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_bar.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_led.php\";\n\n/** We need these vars to make this work */\n$syear = get_int404(\"syear\", date(\"Y\"));\n$smonth = get_int404(\"smonth\", date(\"m\"));\n$sday = get_int404(\"sday\", date(\"d\"));\n$days = get_int404(\"days\", 2);\n$network = get_str404(\"network\", \"IA_RWIS\");\n$station = get_str404(\"station\", \"\");\n\n$sts = time() - (3. * 86400.);\n$ets = time();\n\n$times = array();\n$depths = array(1, 3, 6, 9, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72);\n$data = array();\n// initialize the data array for each depth\nforeach ($depths as $depth) {\n    $data[\"s{$depth}temp\"] = array();\n}\n\n$sts = mktime(0, 0, 0, $smonth, $sday, $syear);\n$ets = $sts + ($days * 86400.0);\n\n$dbconn = iemdb('rwis');\n$stname = iem_pg_prepare($dbconn, \"SELECT a.* from alldata_soil a JOIN stations t on (a.iemid = t.iemid)\nWHERE t.id = $1 and valid > $2 and valid < $3 ORDER by valid ASC\");\n$rs = pg_execute($dbconn, $stname, array(\n    $station,\n    date(\"Y-m-d H:i\", $sts),\n    date(\"Y-m-d H:i\", $ets)\n));\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    $times[] = strtotime(substr($row[\"valid\"], 0, 16));\n    foreach ($depths as $j) {\n        $data[\"s{$j}temp\"][] = $row[\"tmpf_{$j}in\"];\n    }\n}\n\nif (pg_num_rows($rs) == 0) {\n    $led = new DigitalLED74();\n    $led->StrokeNumber('NO SOIL DATA AVAILABLE', LEDC_GREEN);\n    die();\n}\n\n$nt = new NetworkTable($network);\n$cities = $nt->table;\n\n// Create the graph. These two calls are always required\n$graph = new Graph(650, 550, \"example1\");\n$graph->SetScale(\"datlin\");\n$graph->SetMarginColor(\"white\");\n$graph->SetColor(\"lightyellow\");\n//$graph->img->SetMargin(40,55,105,105);\n//$graph->xaxis->SetFont(FS_FONT1,FS_BOLD);\n\n$graph->title->Set($cities[$station]['name'] . \" RWIS Soil Probe Data\");\n$graph->subtitle->Set(\"Values at 15 different depths [inch] shown\");\n\n$graph->yaxis->SetTitle(\"Temperature [F]\");\n$graph->yaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n\n//$graph->xaxis->SetTitle(\"Time Period:\");\n$graph->xaxis->SetTitleMargin(67);\n$graph->xaxis->title->SetColor(\"brown\");\n$graph->xaxis->SetPos(\"min\");\n$graph->xaxis->SetLabelAngle(90);\n$graph->xaxis->SetLabelFormatString(\"M-j h A\", true);\n\n$graph->legend->Pos(0.01, 0.01);\n$graph->legend->SetLayout(LEGEND_VERT);\n$graph->legend->SetColumns(3);\n\nforeach ($depths as $j) {\n    // Create the linear plot\n    $lineplot = new LinePlot($data[\"s{$j}temp\"], $times);\n    $lineplot->SetLegend($j);\n    $lineplot->SetWeight(3);\n    $graph->add($lineplot);\n}\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/rwis/plot_traffic.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_bar.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_led.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\n\n/** We need these vars to make this work */\n$syear = get_int404(\"syear\", date(\"Y\"));\n$smonth = get_int404(\"smonth\", date(\"m\"));\n$sday = get_int404(\"sday\", date(\"d\"));\n$days = get_int404(\"days\", 2);\n$station = get_str404(\"station\", \"\");\n$network = get_str404(\"network\", \"IA_RWIS\");\n$nt = new NetworkTable($network);\n\n$sts = time() - (3. * 86400.);\n$ets = time();\n\n/** Lets assemble a time period if this plot is historical */\n$sts = mktime(0, 0, 0, $smonth, $sday, $syear);\n$ets = $sts + ($days * 86400.0);\n\n$iemdb = iemdb('iem');\n$stname = iem_pg_prepare($iemdb, \"SELECT * from rwis_traffic_meta WHERE nwsli = $1\");\n$rs = pg_execute($iemdb, $stname, array($station));\n$avg_speed = array();\n\n$normal_vol = array();\n$long_vol = array();\n$occupancy = array();\n$times = array();\n$labels = array();\nwhile ($row = pg_fetch_assoc($rs)) {\n    $avg_speed[$row[\"lane_id\"]] = array();\n    $normal_vol[$row[\"lane_id\"]] = array();\n    $long_vol[$row[\"lane_id\"]] = array();\n    $occupancy[$row[\"lane_id\"]] = array();\n    $times[$row[\"lane_id\"]] = array();\n    $labels[$row[\"lane_id\"]] = $row[\"name\"];\n}\n\n$dbconn = iemdb('rwis');\n$stname = iem_pg_prepare($dbconn, \"SELECT a.* from alldata_traffic a JOIN stations t on (a.iemid = t.iemid) \" .\n    \"WHERE t.id = $1 and valid > $2 and valid < $3 ORDER by valid ASC\");\n$rs = pg_execute($dbconn, $stname, array(\n    $station,\n    date(\"Y-m-d H:i\", $sts),\n    date(\"Y-m-d H:i\", $ets)\n));\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    $times[$row[\"lane_id\"]][] = strtotime(substr($row[\"valid\"], 0, 16));\n    $avg_speed[$row[\"lane_id\"]][] = $row[\"avg_speed\"];\n    $normal_vol[$row[\"lane_id\"]][] = $row[\"avg_headway\"];\n    $long_vol[$row[\"lane_id\"]][] = $row[\"avg_headway\"];\n    $occupancy[$row[\"lane_id\"]][] = $row[\"avg_headway\"];\n}\n\n\nif (pg_num_rows($rs) == 0) {\n    $led = new DigitalLED74();\n    $led->StrokeNumber('NO TRAFFIC DATA AVAILABLE', LEDC_GREEN);\n    die();\n}\n\n$cities = $nt->table;\n\n// Create the graph. These two calls are always required\n$graph = new Graph(650, 550, \"example1\");\n$graph->SetScale(\"datlin\");\n$graph->SetMarginColor(\"white\");\n$graph->SetColor(\"lightyellow\");\n$graph->img->SetMargin(40, 55, 105, 105);\n\n$graph->yaxis->SetTitle(\"Average Speed [mph]\");\n$graph->yaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n\n//$graph->xaxis->SetTitle(\"Time Period: \" . date('Y-m-d h:i A', $times[0][0]) . \" thru \" . date('Y-m-d h:i A', max($times[0])));\n$graph->xaxis->SetTitleMargin(67);\n$graph->xaxis->title->SetColor(\"brown\");\n$graph->xaxis->SetPos(\"min\");\n$graph->xaxis->SetLabelAngle(90);\n$graph->xaxis->SetLabelFormatString(\"M-j h A\", true);\n\n$graph->legend->Pos(0.01, 0.01);\n$graph->legend->SetLayout(LEGEND_VERT);\n\n$colors = array(\n    0 => \"green\",\n    1 => \"black\",\n    2 => \"blue\",\n    3 => \"red\",\n    4 => \"purple\",\n    5 => \"tan\",\n    6 => \"pink\",\n    7 => \"lavendar\"\n);\nforeach ($times as $k => $v) {\n    if (sizeof($times[$k]) < 2) {\n        continue;\n    }\n    // Create the linear plot\n    $lineplot = new LinePlot($avg_speed[$k], $times[$k]);\n    $lineplot->SetLegend($labels[$k]);\n    $lineplot->SetColor($colors[$k]);\n    $lineplot->SetWeight(3);\n    $graph->add($lineplot);\n}\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/rwis/sf_fe.css",
    "content": "#map {\n    width: 450px;\n    height: 450px;\n    border: 2px solid black;\n}"
  },
  {
    "path": "htdocs/plotting/rwis/sf_fe.php",
    "content": "<?php\n$OL = \"10.6.1\";\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/forms.php\";\n\n$network = isset($_GET[\"network\"]) ? xssafe($_GET[\"network\"]) : \"IA_RWIS\";\n$ostation = isset($_GET[\"ostation\"]) ? xssafe($_GET[\"ostation\"]) : \"\";\n$station = isset($_GET['station']) ? xssafe($_GET[\"station\"]) : \"\";\n$syear = get_int404(\"syear\", date(\"Y\"));\n$smonth = isset($_GET[\"smonth\"]) ? xssafe($_GET[\"smonth\"]) : date(\"m\");\n$sday = isset($_GET[\"sday\"]) ? xssafe($_GET[\"sday\"]) : date(\"d\");\n$days = get_int404(\"days\", 2);\n\n$subc = isset($_GET[\"subc\"]) ? xssafe($_GET[\"subc\"]) : false;\n$dwpf = isset($_GET[\"dwpf\"]) ? xssafe($_GET[\"dwpf\"]) : false;\n$tmpf = isset($_GET[\"tmpf\"]) ? xssafe($_GET[\"tmpf\"]) : false;\n$pcpn = isset($_GET[\"pcpn\"]) ? xssafe($_GET[\"pcpn\"]) : false;\n$s0 = isset($_GET[\"s0\"]) ? xssafe($_GET[\"s0\"]) : false;\n$s1 = isset($_GET[\"s1\"]) ? xssafe($_GET[\"s1\"]) : false;\n$s2 = isset($_GET[\"s2\"]) ? xssafe($_GET[\"s2\"]) : false;\n$s3 = isset($_GET[\"s3\"]) ? xssafe($_GET[\"s3\"]) : false;\n\nif (!$subc && !$dwpf && !$tmpf && !$s0 && !$s1 && !$s2 && !$s3) {\n    $_GET[\"tmpf\"] = \"on\";\n}\n\n$t = new MyView();\n$t->iemselect2 = TRUE;\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol.css\" type=\"text/css\">\n<link type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"sf_fe.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"/vendor/openlayers/{$OL}/ol.js\" type=\"text/javascript\"></script>\n<script src='/vendor/openlayers/{$OL}/ol-layerswitcher.js'></script>\n<script src=\"/js/olselect.js\"></script>\nEOM;\n$t->title = \"RWIS Timeseries Plots\";\n\n$nselect = selectNetworkType(\"RWIS\", $network);\n\n$content = <<<EOM\n<ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/RWIS/\">RWIS Homepage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">RWIS Temperature Time Series Plots</li>\n</ol>\n\n<form method=\"GET\" action=\"sf_fe.php\" name=\"sts\">\n{$nselect}\n<input type=\"submit\" value=\"Show State\">\n</form>\n\n\n<p>This application plots a timeseries of data from an Iowa RWIS site \nof your choice.  You can optionally select which variables to plot and\nfor which time period in the archive.</p>\n\n<form method=\"GET\" action=\"sf_fe.php\" name=\"olselect\">\n<input type=\"hidden\" name=\"network\" value=\"{$network}\">\nEOM;\nif (strlen($station) > 0) {\n    $ys = yearSelect(1995, $syear, \"syear\");\n    $ms =  monthSelect($smonth, \"smonth\");\n    $ds = daySelect($sday, \"sday\");\n    $ds2 = daySelect($days, \"days\");\n    $nselect = networkSelect($network, $station);\n\n    $c0 = iemdb('rwis');\n    $stname = iem_pg_prepare($c0, \"SELECT s.* from sensors s JOIN stations t on (s.iemid = t.iemid) WHERE t.id = $1\");\n    $r0 = pg_execute($c0, $stname, Array($station));\n    $ns0 = \"Sensor 1\";\n    $ns1 = \"Sensor 2\";\n    $ns2 = \"Sensor 3\";\n    $ns3 = \"Sensor 4\";\n    if (pg_num_rows($r0) > 0){\n        $row = pg_fetch_assoc($r0);\n        $ns0 = $row['sensor0'];\n        $ns1 = $row['sensor1'];\n        $ns2 = $row['sensor2'];\n        $ns3 = $row['sensor3'];\n    }\n    $cgiStr = \"&sday=$sday&smonth=$smonth&syear=$syear&days=$days&\";\n\n    $table = \"<table class=\\\"table table-bordered\\\">\n      <tr><th colspan=\\\"3\\\">Plot Options</th></tr>\n      <tr><td><b>Restrict Plot:</b>\n      <br><input type=\\\"checkbox\\\" name=\\\"limit\\\" value=\\\"yes\\\" \";\n    if (isset($_GET[\"limit\"])) $table .= \"CHECKED\";\n    $table .= \">Temps between 25-35\n    </td><td><b>Pavement Sensors:</b><br>\\n\";\n    if (strlen($ns0) > 0) {\n        $table .= \"<input type=\\\"checkbox\\\" name=\\\"s0\\\" \";\n        if (isset($_GET[\"s0\"])) {\n            $table .= \"CHECKED\";\n            $cgiStr .= \"&s0=yes\";\n        }\n        $table .= \">\" . $ns0 . \"\\n\";\n    }\n    if (strlen($ns1) > 0) {\n        $table .= \"<br><input type=\\\"checkbox\\\" name=\\\"s1\\\" \";\n        if (isset($_GET[\"s1\"])) {\n            $table .= \"CHECKED\";\n            $cgiStr .= \"&s1=yes\";\n        }\n        $table .= \">\" . $ns1 . \"\\n\";\n    }\n    if (strlen($ns2) > 0) {\n        $table .= \"<br><input type=\\\"checkbox\\\" name=\\\"s2\\\" \";\n        if (isset($_GET[\"s2\"])) {\n            $table .= \"CHECKED\";\n            $cgiStr .= \"&s2=yes\";\n        }\n        $table .= \">\" . $ns2 . \"\\n\";\n    }\n    if (strlen($ns3) > 0) {\n        $table .= \"<br><input type=\\\"checkbox\\\" name=\\\"s3\\\" \";\n        if (isset($_GET[\"s3\"])) {\n            $table .= \"CHECKED\";\n            $cgiStr .= \"&s3=yes\";\n        }\n        $table .= \">\" . $ns3 . \"\\n\";\n    }\n    $table .= \"</td><td><b>Other Sensors:</b><br>\\n\";\n    $table .= \"<input type=\\\"checkbox\\\" name=\\\"tmpf\\\" \";\n    if (isset($_GET[\"tmpf\"])) {\n        $table .= \"CHECKED\";\n        $cgiStr .= \"&tmpf=yes\";\n    }\n    $table .= \">Air Temperature\\n\";\n    $table .= \"<br><input type=\\\"checkbox\\\" name=\\\"dwpf\\\" \";\n    if (isset($_GET[\"dwpf\"])) {\n        $table .= \"CHECKED\";\n        $cgiStr .= \"&dwpf=yes\";\n    }\n    $table .= \">Dew Point\\n\";\n    $table .= \"<br><input type=\\\"checkbox\\\" name=\\\"subc\\\" \";\n    if (isset($_GET[\"subc\"])) {\n        $table .= \"CHECKED\";\n        $cgiStr .= \"&subc=yes\";\n    }\n    $table .= \">Sub Surface\\n\";\n\n    $table .= \"<br><input type=\\\"checkbox\\\" name=\\\"pcpn\\\" \";\n    if (isset($_GET[\"pcpn\"])) {\n        $table .= \"CHECKED\";\n        $cgiStr .= \"&pcpn=yes\";\n    }\n    $table .= \">Precipitation\\n\";\n    $table .= \"</td></tr></table>\";\n\n    if (isset($_GET[\"limit\"]))  $cgiStr .= \"&limit=yes\";\n    $plots = \"<p>No Soil/Traffic data for non-Iowa RWIS sites</p>\";\n    if ($network == \"IA_RWIS\"){\n        $plots = <<<EOM\n<br><img src=\"plot_traffic.php?station={$station}&network={$network}{$cgiStr}\" alt=\"Time Series\" class=\"img-fluid\"/>\n<br><img src=\"plot_soil.php?station={$station}&network={$network}{$cgiStr}\" alt=\"Time Series\" class=\"img-fluid\"/>\nEOM; \n    }\n\n    $content .= <<<EOM\n<table class=\"table table-bordered\">\n<thead>\n<tr><th>Select Station</th><th colspan=\"4\">Timespan</th></tr>\n</thead>\n<tbody>\n<tr><td rowspan=\"2\">\n  {$nselect}\n  <br />Or from <a href=\"sf_fe.php\">a map</a></td>\n\n   <td colspan=\"4\">Select Date</td></tr>\n\n<tr>\n  <td>Start Year:<br />{$ys}</td>\n  <td>Start Month:<br />{$ms}</td>\n  <td>Start Day:<br />{$ds}</td>\n  <td>Number of days:<br />{$ds2}\n   </td>\n </tr>\n</tbody>\n</table>\n\n\n{$table}\n\n  <input type=\"submit\" value=\"Generate Plot\">\n  </form>\n\n <br><img src=\"SFtemps.php?station={$station}&network={$network}{$cgiStr}\" alt=\"Time Series\" class=\"img-fluid\"/>\n $plots\nEOM;\n} else {\n    $nselect = networkSelect($network, \"\");\n    $content .= <<<EOM\n<input type=\"hidden\" name=\"s0\" value=\"yes\" />\n<input type=\"hidden\" name=\"s1\" value=\"yes\" />\n<input type=\"hidden\" name=\"s2\" value=\"yes\" />\n<input type=\"hidden\" name=\"s3\" value=\"yes\" />\n<input type=\"hidden\" name=\"tmpf\" value=\"yes\" />\n<input type=\"hidden\" name=\"dwpf\" value=\"yes\" />\n<table><tr><th>Select Station</th>\n<td>{$nselect}</td>\n<td><input type=\"submit\" value=\"Make Plot\"></tr></table>\n<div id=\"map\" data-network=\"{$network}\"></div>\n</form>\n\n\n  </form>\n\nEOM;\n}\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/plotting/scan/index.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 87);\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->title = \"SCAN Plotting\";\n\n$station = isset($_GET[\"station\"]) ? xssafe($_GET[\"station\"]) : \"S2031\";\n$year = get_int404(\"year\", date(\"Y\", time() - 1 * 86400));\n$month = get_int404(\"month\", date(\"m\", time() - 1 * 86400));\n$day = get_int404(\"day\", date(\"d\", time() - 1 * 86400));\n$plot = get_int404(\"plot\", 0);\n\n$u = array(\"radn5temps.php\", \"radn5temps2.php\", \"smv.php\", \"winds.php\", \"precip.php\");\n$ulabel = array(\n    \"Soil Temps + Solar Rad\",\n    \"Soil/Air Temps + Solar Rad\",\n    \"Soil Moisture + Solar Rad\",\n    \"Wind Speed + Direction\",\n    \"Precipitation\"\n);\n$myu = $u[$plot];\n\n$ploturl = \"$myu?station=$station&amp;year=$year&amp;month=$month&amp;day=$day\";\n\n$sselect = networkSelect(\"SCAN\", $station);\n$yselect = yearSelect(2004, $year, \"year\");\n$mselect = monthSelect($month, \"month\");\n$dselect = daySelect($day, \"day\");\n$pselect = \"<select name=\\\"plot\\\">\";\nforeach ($u as $key => $val) {\n    $pselect .= sprintf(\n        \"<option value=\\\"%s\\\"%s>%s</option>\",\n        $key,\n        ($key == $plot) ? ' selected=\"selected\"' : '',\n        $ulabel[$key]\n    );\n}\n$pselect .= \"</select>\";\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n<li><a href=\"/scan/\">SCAN</a></li>\n<li class=\"active\">Current/Historical Data Traces</li>\n</ol>\n\n<p>This application generates a single day time series plot of SCAN data.</p>\n\n<form method=\"GET\" action=\"index.phtml\" name=\"control\">\n<table class=\"table table-striped\">\n<thead>\n<tr>\n  <th>SCAN Site:</th>\n  <th>Plot Type:</th>\n  <th>Year:</th>\n  <th>Month:</th>\n  <th>Day:</th></tr>\n</thead>\n<tbody>\n<tr>\n  <td>{$sselect}</td>\n  <td>{$pselect}</td>\n  <td>{$yselect}</td>\n  <td>{$mselect}</td>\n  <td>{$dselect}</td>\n  <td><input type=\"submit\" value=\"Make Plot!\"></td>\n</tr>\n</tbody>\n</table></form>\n\n<img src=\"{$ploturl}\">\nEOM;\n$t->render(\"single.phtml\");\n"
  },
  {
    "path": "htdocs/plotting/scan/precip.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_bar.php\";\n\n$connection = iemdb(\"scan\");\n$nt = new NetworkTable(\"SCAN\");\n\n$station = get_str404(\"station\", \"S2031\");\n$year = get_int404(\"year\", date(\"Y\", time() - 3 * 86400));\n$month = get_int404(\"month\", date(\"m\", time() - 3 * 86400));\n$day = get_int404(\"day\", date(\"d\", time() - 3 * 86400));\n\n$date = \"$year-$month-$day\";\n$var = \"phour\";\n$accum = 1;\n\n$stname = iem_pg_prepare($connection, \"SELECT sknt, drct, phour,\n        to_char(valid, 'mmdd/HH24') as tvalid\n        from alldata WHERE\n        station = $1 and date(valid) >= $2  and phour >= 0\n        ORDER by tvalid ASC LIMIT 96\");\n\n$result = pg_execute($connection, $stname, array($station, $date));\n\n$ydata1 = array();\n\n$xlabel = array();\n\n$thisP = 0;\n\nfor ($i = 0; $row = pg_fetch_assoc($result); $i++) {\n    $ydata1[$i]  = $row[\"phour\"];\n    $xlabel[$i] = $row[\"tvalid\"];\n}\n\n// Create the graph. These two calls are always required\n$graph = new Graph(660, 450, \"example1\");\n$graph->SetScale(\"textlin\", 0, 2);\n$graph->img->SetMargin(45, 10, 55, 90);\n//$graph->xaxis->SetFont(FS_FONT1,FS_BOLD);\n$graph->xaxis->SetTickLabels($xlabel);\n$graph->xaxis->SetLabelAngle(90);\n$graph->title->Set(\"Hourly Precipitation for \" . $nt->table[$station][\"name\"] . \" SCAN Site\");\n\n$graph->yaxis->scale->ticks->Set(.25, .1);\n//$graph->yaxis->scale->ticks->SetPrecision(2);\n\n$graph->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->yaxis->SetTitle(\"Precipitation [in]\");\n$graph->yaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->xaxis->SetTitle(\"Local Valid Time\");\n$graph->xaxis->SetTitleMargin(55);\n$graph->yaxis->SetTitleMargin(35);\n$graph->xaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\nif ($i > 72) {\n    $graph->xaxis->SetTextTickInterval(6);\n}\n$graph->yaxis->SetColor(\"blue\");\n\n// Create the linear plot\n$bar1 = new BarPlot($ydata1);\n$bar1->SetColor(\"black\");\n$bar1->SetLegend(\"1h Precip [inch]\");\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.10, 0.06, \"right\", \"top\");\n\n\n// Add the plot to the graph\n$graph->Add($bar1);\n\n// Display the graph\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/scan/radn5temps.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\n$nt = new NetworkTable(\"SCAN\");\n\n$connection = iemdb(\"scan\");\n\n$station = get_str404(\"station\", \"S2031\");\n$year = get_int404(\"year\", date(\"Y\", time() - 3 * 86400));\n$month = get_int404(\"month\", date(\"m\", time() - 3 * 86400));\n$day = get_int404(\"day\", date(\"d\", time() - 3 * 86400));\n\n\n$y2label = \"Temperature [F]\";\n\n$queryData = \"\";\n\n$date = \"$year-$month-$day\";\n\n$stname = iem_pg_prepare($connection, \"SELECT c1tmpf, c2tmpf, c3tmpf,\n        c4tmpf, c5tmpf, srad, tmpf, valid,\n        to_char(valid, 'mmdd/HH24') as tvalid\n        from alldata WHERE\n        station = $1 and date(valid) >= $2\n        ORDER by tvalid ASC LIMIT 96\");\n\n$result = pg_execute($connection, $stname, Array($station, $date));\n\n$ydata1 = array();\n$ydata2 = array();\n$ydata3 = array();\n$ydata4 = array();\n$ydata5 = array();\n$ydataSR = array();\n\n$times= array();\n\nfor( $i=0; $row = pg_fetch_assoc($result); $i++)\n{\n  $ydata1[] = ($row[\"c1tmpf\"] > -90) ? $row[\"c1tmpf\"] : \"\";\n  $ydata2[] = ($row[\"c2tmpf\"] > -90) ? $row[\"c2tmpf\"] : \"\";\n  $ydata3[] = ($row[\"c3tmpf\"] > -90) ? $row[\"c3tmpf\"] : \"\";\n  $ydata4[] = ($row[\"c4tmpf\"] > -90) ? $row[\"c4tmpf\"] : \"\";\n  $ydata5[] = ($row[\"c5tmpf\"] > -90) ? $row[\"c5tmpf\"] : \"\";\n  $ydataSR[] = ($row[\"srad\"] >= 0) ? $row[\"srad\"]: \"\";\n  $times[] = strtotime($row[\"valid\"]);\n}\n\n// Create the graph. These two calls are always required\n$graph = new Graph(640,480,\"example1\");\n$graph->SetScale(\"datlin\");\n$graph->SetY2Scale(\"lin\", 0, 900);\n$graph->img->SetMargin(45,50,55,120);\n$graph->xaxis->SetFont(FF_FONT1,FS_BOLD);\n$graph->xaxis->SetLabelFormatString(\"m/d h A\", true);\n//$graph->xaxis->SetTickLabels($xlabel);\n$graph->xaxis->SetLabelAngle(90);\n$graph->xaxis->SetPos(\"min\");\n$graph->title->Set(\"Solar Rad & Soil Temps for \".$nt->table[$station][\"name\"].\" SCAN Site\");\n\n$graph->y2axis->scale->ticks->Set(100,25);\n//$graph->y2axis->scale->ticks->SetPrecision(0);\n\n$graph->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->y2axis->SetTitle(\"Solar Radiation [Watts m**-2]\");\n$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n//$graph->xaxis->SetTitle(\"Local Valid Time\");\n$graph->yaxis->SetTitle( $y2label );\n\n$graph->y2axis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->yaxis->SetTitleMargin(30);\nif ($i > 72){\n  $graph->xaxis->SetTextTickInterval(6);\n}\n$graph->y2axis->SetTitleMargin(35);\n$graph->xaxis->SetTitleMargin(55);\n$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n\n//$graph->y2axis->SetColor(\"blue\");\n$graph->y2axis->SetColor(\"red\");\n\n// Create the linear plot\n$lineplot=new LinePlot($ydataSR, $times);\n$graph->AddY2($lineplot);\n$lineplot->SetColor(\"red\");\n$lineplot->SetLegend(\"Solar Rad\");\n\n\n// Create the linear plot\n$lineplot1=new LinePlot($ydata1, $times);\n$graph->Add($lineplot1);\n$lineplot1->SetColor(\"green\");\n$lineplot1->SetLegend(\"2 in\");\n$lineplot1->SetWeight(2);\n\n// Create the linear plot\n$lineplot2=new LinePlot($ydata2, $times);\n$graph->Add($lineplot2);\n$lineplot2->SetColor(\"aquamarine4\");\n$lineplot2->SetLegend(\"4 in\");\n$lineplot2->SetWeight(2);\n\n// Create the linear plot\n$lineplot3=new LinePlot($ydata3, $times);\n$graph->Add($lineplot3);\n$lineplot3->SetColor(\"chocolate4\");\n$lineplot3->SetLegend(\"8 in\");\n$lineplot3->SetStyle(\"dashed\");\n$lineplot3->SetWeight(2);\n\n// Create the linear plot\n$lineplot4=new LinePlot($ydata4, $times);\n$graph->Add($lineplot4);\n$lineplot4->SetColor(\"blue\");\n$lineplot4->SetLegend(\"20 in\");\n$lineplot4->SetWeight(2);\n\n// Create the linear plot\n$lineplot5=new LinePlot($ydata5, $times);\n$graph->Add($lineplot5);\n$lineplot5->SetColor(\"black\");\n$lineplot5->SetLegend(\"40 in\");\n$lineplot5->SetStyle(\"dotted\");\n$lineplot5->SetWeight(3);\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.10, 0.06, \"right\", \"top\");\n\n\n// Display the graph\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/scan/radn5temps2.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\n$nt = new NetworkTable(\"SCAN\");\n\n$connection = iemdb(\"scan\");\n\n$station = get_str404(\"station\", \"S2031\");\n$year = get_int404(\"year\", date(\"Y\", time() - 3 * 86400));\n$month = get_int404(\"month\", date(\"m\", time() - 3 * 86400));\n$day = get_int404(\"day\", date(\"d\", time() - 3 * 86400));\n\n$y2label = \"Temperature [C]\";\n\n$date = \"$year-$month-$day\";\n\n$stname = iem_pg_prepare($connection, \"SELECT c1tmpf, c2tmpf, c3tmpf,\n        c4tmpf, c5tmpf, srad , tmpf,\n        to_char(valid, 'mmdd/HH24') as tvalid\n        from alldata WHERE\n        station = $1 and date(valid) >= $2\n        ORDER by tvalid ASC LIMIT 96\");\n\n$result = pg_execute($connection, $stname, Array($station, $date));\n\n$ydata1 = array();\n$ydata2 = array();\n$ydata3 = array();\n$ydata4 = array();\n$ydata5 = array();\n$ydataA = array();\n$ydataSR = array();\n\n$xlabel= array();\n\nfor( $i=0; $row = pg_fetch_assoc($result); $i++)\n{\n  $ydata1[$i]  = $row[\"c1tmpf\"];\n  $ydata2[$i]  = $row[\"c2tmpf\"];\n  $ydata3[$i] = $row[\"c3tmpf\"];\n  $ydata4[$i] = $row[\"c4tmpf\"];\n  $ydata5[$i] = $row[\"c5tmpf\"];\n  $ydataSR[$i] = $row[\"srad\"];\n  $ydataA[$i] = $row[\"tmpf\"];\n  $xlabel[$i] = $row[\"tvalid\"];\n}\n\n// Create the graph. These two calls are always required\n$graph = new Graph(660,450,\"example1\");\n$graph->SetScale(\"textlin\");\n$graph->SetY2Scale(\"lin\",0,900);\n$graph->img->SetMargin(40,50,55,90);\n$graph->xaxis->SetFont(FF_FONT1,FS_BOLD);\n$graph->xaxis->SetTickLabels($xlabel);\n$graph->xaxis->SetLabelAngle(90);\n$graph->xaxis->SetPos(\"min\");\n$graph->title->Set(\"Solar Rad & Soil Temps for \".$nt->table[$station][\"name\"].\"  SCAN Site\");\n\n$graph->y2axis->scale->ticks->Set(100,25);\n//$graph->y2axis->scale->ticks->SetPrecision(0);\n\n$graph->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->y2axis->SetTitle(\"Solar Radiation [Watts m**-2]\");\n$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetTitle(\"Local Valid Time\");\n$graph->yaxis->SetTitle( $y2label );\n$graph->y2axis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->y2axis->SetTitleMargin(35);\n$graph->xaxis->SetTitleMargin(55);\n$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\nif ($i > 72){\n  $graph->xaxis->SetTextTickInterval(6);\n}\n//$graph->y2axis->SetColor(\"blue\");\n$graph->y2axis->SetColor(\"red\");\n\n// Create the linear plot\n$lineplot=new LinePlot($ydataSR);\n$lineplot->SetColor(\"red\");\n$lineplot->SetLegend(\"Solar Rad\");\n\n// Create the linear plot\n$lineplot1=new LinePlot($ydata1);\n$lineplot1->SetColor(\"green\");\n$lineplot1->SetLegend(\"2 in\");\n\n// Create the linear plot\n$lineplot2=new LinePlot($ydata2);\n$lineplot2->SetColor(\"aquamarine4\");\n$lineplot2->SetLegend(\"4 in\");\n\n// Create the linear plot\n$lineplot3=new LinePlot($ydata3);\n$lineplot3->SetColor(\"chocolate4\");\n$lineplot3->SetLegend(\"8 in\");\n$lineplot3->SetStyle(\"dashed\");\n\n// Create the linear plot\n$lineplot4=new LinePlot($ydata4);\n$lineplot4->SetColor(\"blue\");\n$lineplot4->SetLegend(\"20 in\");\n\n// Create the linear plot\n$lineplotA=new LinePlot($ydataA);\n$lineplotA->SetColor(\"black\");\n$lineplotA->SetLegend(\"2m Air\");\n\n\n// Create the linear plot\n$lineplot5=new LinePlot($ydata5);\n$lineplot5->SetColor(\"black\");\n$lineplot5->SetLegend(\"40 in\");\n$lineplot5->SetStyle(\"dotted\");\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.10, 0.06, \"right\", \"top\");\n\n\n// Add the plot to the graph\n$graph->Add($lineplot1);\n$graph->Add($lineplot2);\n$graph->Add($lineplot3);\n$graph->Add($lineplot4);\n$graph->Add($lineplot5);\n$graph->Add($lineplotA);\n$graph->AddY2($lineplot);\n\n// Display the graph\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/scan/smv.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\n$nt = new NetworkTable(\"SCAN\");\n\n$connection = iemdb(\"scan\");\n\n$station = get_str404(\"station\", \"S2031\");\n$year = get_int404(\"year\", date(\"Y\", time() - 3 * 86400));\n$month = get_int404(\"month\", date(\"m\", time() - 3 * 86400));\n$day = get_int404(\"day\", date(\"d\", time() - 3 * 86400));\n\n$y2label = \"Volumetric Soil Moisture [%]\";\n\n$date = \"$year-$month-$day\";\n\n$stname = iem_pg_prepare($connection, \"SELECT c1smv, c2smv, c3smv, c4smv, c5smv, srad,\n        to_char(valid, 'mmdd/HH24') as tvalid\n        from alldata WHERE\n        station = $1 and date(valid) >= $2\n        ORDER by tvalid ASC LIMIT 96\");\n\n$result = pg_execute($connection, $stname, Array($station, $date));\n\n$ydata1 = array();\n$ydata2 = array();\n$ydata3 = array();\n$ydata4 = array();\n$ydata5 = array();\n$ydataSR = array();\n\n$xlabel= array();\n\nfor( $i=0; $row = pg_fetch_assoc($result); $i++)\n{\n  if ($row[\"c1smv\"] > 0)   $ydata1[$i]  = $row[\"c1smv\"];\n  if ($row[\"c2smv\"] > 0)   $ydata2[$i]  = $row[\"c2smv\"];\n  if ($row[\"c3smv\"] > 0)   $ydata3[$i]  = $row[\"c3smv\"];\n  if ($row[\"c4smv\"] > 0)   $ydata4[$i]  = $row[\"c4smv\"];\n  if ($row[\"c5smv\"] > 0)   $ydata5[$i]  = $row[\"c5smv\"];\n\n  $ydataSR[$i] = $row[\"srad\"];\n  $xlabel[$i] = $row[\"tvalid\"];\n}\n\n// Create the graph. These two calls are always required\n$graph = new Graph(660,450,\"example1\");\n$graph->SetScale(\"textlin\");\n$graph->SetY2Scale(\"lin\", 0, 900);\n$graph->img->SetMargin(40,50,55,90);\n$graph->xaxis->SetFont(FF_FONT1,FS_BOLD);\n$graph->xaxis->SetTickLabels($xlabel);\n$graph->xaxis->SetLabelAngle(90);\n$graph->xaxis->SetPos(\"min\");\n$graph->title->Set(\"Solar Rad & Soil Moisture for \".$nt->table[$station][\"name\"].\" SCAN Site\");\n\n$graph->y2axis->scale->ticks->Set(100,25);\n//$graph->y2axis->scale->ticks->SetPrecision(0);\n//$graph->yaxis->scale->ticks->Set(1,.25);\n\n$graph->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->y2axis->SetTitle(\"Solar Radiation [Watts m**-2]\");\n$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetTitle(\"Local Valid Time\");\n$graph->yaxis->SetTitle( $y2label );\n$graph->y2axis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->y2axis->SetTitleMargin(35);\n$graph->xaxis->SetTitleMargin(55);\n$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\nif ($i > 72){\n  $graph->xaxis->SetTextTickInterval(6);\n}\n//$graph->y2axis->SetColor(\"blue\");\n$graph->y2axis->SetColor(\"red\");\n\n// Create the linear plot\n$lineplot=new LinePlot($ydataSR);\n$lineplot->SetColor(\"red\");\n$lineplot->SetLegend(\"Solar Rad\");\n$lineplot->SetWeight(2);\n\n// Create the linear plot\n$lineplot1=new LinePlot($ydata1);\n$lineplot1->SetColor(\"green\");\n$lineplot1->SetLegend(\"2 in\");\n$lineplot1->SetWeight(2);\n\n// Create the linear plot\n$lineplot2=new LinePlot($ydata2);\n$lineplot2->SetColor(\"aquamarine4\");\n$lineplot2->SetLegend(\"4 in\");\n$lineplot2->SetWeight(2);\n\n// Create the linear plot\n$lineplot3=new LinePlot($ydata3);\n$lineplot3->SetColor(\"chocolate4\");\n$lineplot3->SetLegend(\"8 in\");\n$lineplot3->SetStyle(\"dashed\");\n$lineplot3->SetWeight(2);\n\n// Create the linear plot\n$lineplot4=new LinePlot($ydata4);\n$lineplot4->SetColor(\"blue\");\n$lineplot4->SetLegend(\"20 in\");\n$lineplot4->SetWeight(2);\n\n// Create the linear plot\n$lineplot5=new LinePlot($ydata5);\n$lineplot5->SetColor(\"purple\");\n$lineplot5->SetLegend(\"40 in\");\n$lineplot5->SetStyle(\"dotted\");\n$lineplot5->SetWeight(2);\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.10, 0.06, \"right\", \"top\");\n\n\n// Add the plot to the graph\n$graph->Add($lineplot1);\n$graph->Add($lineplot2);\n$graph->Add($lineplot3);\n$graph->Add($lineplot4);\n$graph->Add($lineplot5);\n$graph->AddY2($lineplot);\n\n// Display the graph\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/scan/winds.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_scatter.php\";\n$nt = new NetworkTable(\"SCAN\");\n\n$connection = iemdb(\"scan\");\n\n$station = get_str404(\"station\", \"S2031\");\n$year = get_int404(\"year\", date(\"Y\", time() - 3 * 86400));\n$month = get_int404(\"month\", date(\"m\", time() - 3 * 86400));\n$day = get_int404(\"day\", date(\"d\", time() - 3 * 86400));\n\n$date = \"$year-$month-$day\";\n\n$stname = iem_pg_prepare($connection, \"SELECT sknt, drct, \n        to_char(valid, 'mmdd/HH24') as tvalid \n        from alldata WHERE \n        station = $1 and date(valid) >= $2  \n        ORDER by tvalid ASC LIMIT 96\");\n\n$result = pg_execute($connection, $stname, Array($station, $date));\n\n$ydata1 = array();\n$ydata2 = array();\n\n$xlabel= array();\n\nfor( $i=0; $row = pg_fetch_assoc($result); $i++) \n{ \n  $ydata1[$i]  = $row[\"drct\"];\n  $ydata2[$i]  = $row[\"sknt\"];\n  $xlabel[$i] = $row[\"tvalid\"];\n}\n\n// Create the graph. These two calls are always required\n$graph = new Graph(660,450,\"example1\");\n$graph->SetScale(\"textlin\", 0, 360);\n$graph->SetY2Scale(\"lin\");\n$graph->img->SetMargin(40,50,55,90);\n$graph->xaxis->SetFont(FF_FONT1,FS_BOLD);\n$graph->xaxis->SetTickLabels($xlabel);\n$graph->xaxis->SetLabelAngle(90);\n$graph->title->Set(\"Wind Direction/Speed for \".$nt->table[$station][\"name\"].\" SCAN Site\");\n\n$graph->yaxis->scale->ticks->Set(90,15);\n//$graph->yaxis->scale->ticks->SetPrecision(0);\n\n$graph->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->yaxis->SetTitle(\"Wind Direction [Deg]\");\n$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetTitle(\"Local Valid Time\");\n$graph->y2axis->SetTitle(\"Wind Speed [knots]\");\n$graph->y2axis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->y2axis->SetTitleMargin(35);\n$graph->xaxis->SetTitleMargin(55);\n$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\nif ($i > 72){\n  $graph->xaxis->SetTextTickInterval(6);\n}\n//$graph->y2axis->SetColor(\"blue\");\n$graph->yaxis->SetColor(\"blue\");\n\n// Create the linear plot\n$sp1=new ScatterPlot($ydata1);\n$sp1->mark->SetType(MARK_FILLEDCIRCLE);\n$sp1->mark->SetFillColor(\"blue\");\n$sp1->mark->SetWidth(3);\n\n$sp1->SetLegend(\"Wind Dir\");\n\n// Create the linear plot\n$lineplot1=new LinePlot($ydata2);\n$lineplot1->SetColor(\"black\");\n$lineplot1->SetLegend(\"Wind Speed\");\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.10, 0.06, \"right\", \"top\");\n\n\n// Add the plot to the graph\n$graph->Add($sp1);\n$graph->AddY2($lineplot1);\n\n// Display the graph\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/snet/1min_P.php",
    "content": "<?php\n// Generate a 1 minute plot of precip and pressure\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/mlib.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_scatter.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_led.php\";\n\n$nt = new NetworkTable(array(\"KCCI\", \"KIMT\", \"KELO\"));\n$cities = $nt->table;\n\n$station = get_str404(\"station\", \"SKCI4\");\n$year = get_int404(\"year\", 2018);\n$month = get_int404(\"month\", 1);\n$day = get_int404(\"day\", 1);\n$myTime = mktime(0, 0, 0, $month, $day, $year);\n$yesterday = mktime(0, 0, 0, date(\"m\"), date(\"d\"), date(\"Y\")) - 96400;\n\n\n/* Dig in the archive for our data! */\n$dbconn = iemdb(\"snet\");\n$tbl = sprintf(\"t%s\", date(\"Y_m\", $myTime));\n$pcol = \"\";\n$stname = iem_pg_prepare($dbconn, \"SELECT * $pcol from $tbl\n                 WHERE station = $1 and date(valid) = $2 ORDER by valid ASC\");\n$rs = pg_execute($dbconn, $stname, array($station, date(\"Y-m-d\", $myTime)));\nif (pg_num_rows($rs) == 0) {\n    $led = new DigitalLED74();\n    $led->StrokeNumber('NO DATA FOR THIS DATE', LEDC_GREEN);\n    die();\n}\n\n$titleDate = date(\"M d, Y\", $myTime);\n$cityname = $cities[$station]['name'];\n\n/* BEGIN GOOD WORK HERE */\n$times = array();\n$pcpn = array();\n$pres = array();\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    $ts = strtotime(substr($row[\"valid\"], 0, 16));\n    $times[] = $ts;\n    $pcpn[] = ($row[\"pday\"] >= 0) ? $row[\"pday\"] : \"\";\n    $pres[] = ($row[\"alti\"] > 20) ? $row[\"alti\"] * 33.8639 : \"\";\n}\n\n$graph = new Graph(640, 480);\n$graph->SetScale(\"datelin\");\n$graph->SetY2Scale(\"lin\", 0, intval((max($pcpn) + 1)));\n\n$graph->tabtitle->Set(' ' . $cityname . \" on \" . $titleDate . ' ');\n$graph->xaxis->SetTitle(\"Valid Local Time\");\n$graph->y2axis->SetTitle(\"Accumulated Precipitation [inches]\");\n$graph->yaxis->SetTitle(\"Pressure [millibars]\");\n\n$tcolor = array(230, 230, 0);\n/* Common for all our plots */\n$graph->img->SetMargin(80, 60, 40, 80);\n$graph->xaxis->SetTextTickInterval(120);\n$graph->xaxis->SetPos(\"min\");\n\n$graph->xaxis->title->SetFont(FF_FONT1, FS_BOLD, 14);\n$graph->xaxis->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->xaxis->SetTitleMargin(15);\n$graph->xaxis->SetLabelFormatString(\"h A\", true);\n$graph->xaxis->SetLabelAngle(90);\n$graph->xaxis->SetTitleMargin(50);\n\n$graph->yaxis->title->SetFont(FF_FONT1, FS_BOLD, 14);\n$graph->yaxis->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->yaxis->SetTitleMargin(50);\n$graph->yscale->SetGrace(10);\n\n$graph->y2axis->title->SetFont(FF_FONT1, FS_BOLD, 14);\n$graph->y2axis->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->y2axis->SetTitleMargin(40);\n\n$graph->tabtitle->SetFont(FF_FONT1, FS_BOLD, 16);\n$graph->SetColor('wheat');\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->SetPos(0.01, 0.94, 'left', 'top');\n$graph->legend->SetLineSpacing(3);\n\n$graph->ygrid->SetFill(true, '#EFEFEF@0.5', '#BBCCEE@0.5');\n$graph->ygrid->Show();\n$graph->xgrid->Show();\n\n$graph->yaxis->SetTitleMargin(60);\n\n$graph->y2axis->scale->ticks->Set(0.5, 0.25);\n$graph->y2axis->scale->ticks->SetLabelFormat(\"%4.2f\");\n$graph->y2axis->SetColor(\"blue\");\n\n$graph->yaxis->scale->ticks->SetLabelFormat(\"%4.1f\");\n$graph->yaxis->scale->ticks->Set(1, 0.1);\n$graph->yaxis->SetColor(\"black\");\n$graph->yscale->SetGrace(10);\n\n// Create the linear plot\n$lineplot = new LinePlot($pres, $times);\n$lineplot->SetLegend(\"Pressure\");\n$lineplot->SetColor(\"black\");\n\n// Create the linear plot\n$lineplot2 = new LinePlot($pcpn, $times);\n$lineplot2->SetLegend(\"Precipitation\");\n$lineplot2->SetFillColor(\"blue@0.1\");\n$lineplot2->SetColor(\"blue\");\n$lineplot2->SetWeight(2);\n\n$graph->AddY2($lineplot2);\n$graph->Add($lineplot);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/snet/1min_T.php",
    "content": "<?php\n/* Generate a 1 minute plot of temperature, dew point, and solar rad */\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\ninclude_once(\"../../../include/mlib.php\");\ninclude_once(\"../../../include/database.inc.php\");\ninclude(\"../../../include/jpgraph/jpgraph.php\");\ninclude(\"../../../include/jpgraph/jpgraph_line.php\");\ninclude(\"../../../include/jpgraph/jpgraph_scatter.php\");\ninclude(\"../../../include/jpgraph/jpgraph_date.php\");\ninclude(\"../../../include/jpgraph/jpgraph_led.php\");\n\n$nt = new NetworkTable(array(\"KCCI\", \"KIMT\", \"KELO\"));\n$cities = $nt->table;\n\n$station = array_key_exists(\"station\", $_GET) ? $_GET[\"station\"] : \"SKCI4\";\n$year = get_int404(\"year\", 2018);\n$month = get_int404(\"month\", 1);\n$day = get_int404(\"day\", 1);\n$myTime = mktime(0, 0, 0, $month, $day, $year);\n$yesterday = mktime(0, 0, 0, date(\"m\"), date(\"d\"), date(\"Y\")) - 96400;\n\n/* Dig in the archive for our data! */\n$dbconn = iemdb(\"snet\");\n$tbl = sprintf(\"t%s\", date(\"Y_m\", $myTime));\n$stname = iem_pg_prepare($dbconn, \"SELECT * from $tbl\n                 WHERE station = $1 and date(valid) = $2 ORDER by valid ASC\");\n$rs = pg_execute($dbconn, $stname, array($station, date(\"Y-m-d\", $myTime)));\nif (pg_num_rows($rs) == 0) {\n    $led = new DigitalLED74();\n    $led->StrokeNumber('NO DATA FOR THIS DATE', LEDC_GREEN);\n    die();\n}\n\n$titleDate = date(\"M d, Y\", $myTime);\n$cityname = $cities[$station]['name'];\n\n/* BEGIN GOOD WORK HERE */\n$times = array();\n$temps = array();\n$dewps = array();\n$srad  = array();\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    $ts = strtotime(substr($row[\"valid\"], 0, 16));\n    $times[] = $ts;\n    $srad[] = ($row[\"srad\"] >= 0) ? $row[\"srad\"] : \"\";\n    $temps[] = ($row[\"tmpf\"] > -50 && $row[\"tmpf\"] < 120) ? $row[\"tmpf\"] : \"\";\n    $dewps[] = ($row[\"dwpf\"] > -50 && $row[\"dwpf\"] < 120) ? $row[\"dwpf\"] : \"\";\n}\n\n/* Generate Graph Please */\n$graph = new Graph(640, 480);\n$graph->SetScale(\"datelin\");\n$graph->SetY2Scale(\"lin\", 0, 1200);\n$graph->xaxis->SetTitle(\"Valid Local Time\");\n$graph->yaxis->SetTitle(\"Temperature [F]\");\n$graph->y2axis->SetTitle(\"Solar Radiation [W m**-2]\", \"low\");\n$graph->tabtitle->Set(' ' . $cityname . \" on \" . $titleDate . ' ');\n\n$tcolor = array(230, 230, 0);\n/* Common for all our plots */\n$graph->img->SetMargin(80, 60, 40, 80);\n$graph->xaxis->SetTextTickInterval(120);\n$graph->xaxis->SetPos(\"min\");\n\n$graph->xaxis->title->SetFont(FF_FONT1, FS_BOLD, 14);\n$graph->xaxis->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->xaxis->SetTitleMargin(15);\n$graph->xaxis->SetLabelFormatString(\"h A\", true);\n$graph->xaxis->SetLabelAngle(90);\n$graph->xaxis->SetTitleMargin(50);\n\n$graph->yaxis->title->SetFont(FF_FONT1, FS_BOLD, 14);\n$graph->yaxis->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->yaxis->SetTitleMargin(50);\n$graph->yscale->SetGrace(10);\n\n$graph->y2axis->title->SetFont(FF_FONT1, FS_BOLD, 14);\n$graph->y2axis->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->y2axis->SetTitleMargin(40);\n\n$graph->tabtitle->SetFont(FF_FONT1, FS_BOLD, 16);\n$graph->SetColor('wheat');\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->SetPos(0.01, 0.94, 'left', 'top');\n$graph->legend->SetLineSpacing(3);\n\n$graph->ygrid->SetFill(true, '#EFEFEF@0.5', '#BBCCEE@0.5');\n$graph->ygrid->Show();\n$graph->xgrid->Show();\n\n$graph->yaxis->scale->ticks->SetLabelFormat(\"%5.1f\");\n$graph->yaxis->scale->ticks->SetLabelFormat(\"%5.0f\");\n\n$graph->y2axis->scale->ticks->Set(100, 25);\n$graph->y2axis->scale->ticks->SetLabelFormat(\"%-4.0f\");\n\n\n// Create the linear plot\n$lineplot = new LinePlot($temps, $times);\n$lineplot->SetLegend(\"Temperature\");\n$lineplot->SetColor(\"red\");\n\n$lineplot2 = new LinePlot($dewps, $times);\n$lineplot2->SetLegend(\"Dew Point\");\n$lineplot2->SetColor(\"blue\");\n\n// Create the linear plot\n$lineplot3 = new LinePlot($srad, $times);\n$lineplot3->SetLegend(\"Solar Rad\");\n$lineplot3->SetColor(\"black\");\n\n$graph->Add($lineplot2);\n$graph->Add($lineplot);\n$graph->AddY2($lineplot3);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/snet/1min_V.php",
    "content": "<?php\n/* Generate a 1 minute plot of wind, and peak gust */\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/mlib.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_scatter.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_led.php\";\n\n$nt = new NetworkTable(array(\"KCCI\", \"KIMT\", \"KELO\"));\n$cities = $nt->table;\n\n$station = get_str404(\"station\", \"SKCI4\");\n$year = get_int404(\"year\", 2018);\n$month = get_int404(\"month\", 1);\n$day = get_int404(\"day\", 1);\n$myTime = mktime(0, 0, 0, $month, $day, $year);\n$yesterday = mktime(0, 0, 0, date(\"m\"), date(\"d\"), date(\"Y\")) - 96400;\n\n\n/* Dig in the archive for our data! */\n$dbconn = iemdb(\"snet\");\n$tbl = sprintf(\"t%s\", date(\"Y_m\", $myTime));\n$stname = iem_pg_prepare($dbconn, \"SELECT * from $tbl \n                 WHERE station = $1 and date(valid) = $2 ORDER by valid ASC\");\n$rs = pg_execute($dbconn, $stname, array($station, date(\"Y-m-d\", $myTime)));\nif (pg_num_rows($rs) == 0) {\n    $led = new DigitalLED74();\n    $led->StrokeNumber('NO DATA FOR THIS DATE', LEDC_GREEN);\n    die();\n}\n\n$titleDate = date(\"M d, Y\", $myTime);\n$cityname = $cities[$station]['name'];\n$wA = mktime(0, 0, 0, 8, 4, 2002);\n$wLabel = \"1min avg Wind Speed\";\nif ($wA > $myTime) {\n    $wLabel = \"Instant Wind Speed\";\n}\n\n/* BEGIN GOOD WORK HERE */\n$times = array();\n$drct = array();\n$smph = array();\n$gust  = array();\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    $ts = strtotime(substr($row[\"valid\"], 0, 16));\n    $times[] = $ts;\n    $drct[] = ($row[\"drct\"] > 0 && $row[\"drct\"] <= 360 && $i % 10 == 0) ? $row[\"drct\"] : -199;\n    $smph[] = ($row[\"sknt\"] >= 0) ? $row[\"sknt\"] * 1.15 : \"\";\n    $gust[] = ($row[\"gust\"] >= 0) ? $row[\"gust\"] * 1.15 : \"\";\n}\n\n// Create the graph. These two calls are always required\n$graph = new Graph(640, 480);\n\n$graph->SetScale(\"datelin\", 0, 360);\n$graph->SetY2Scale(\"lin\");\n$graph->y2axis->SetColor(\"red\");\n$graph->y2axis->SetTitle(\"Wind Speed [MPH]\");\n$graph->xaxis->SetTitle(\"Valid Local Time\");\n$graph->tabtitle->Set(' ' . $cityname . \" on \" . $titleDate . ' ');\n\n$tcolor = array(230, 230, 0);\n/* Common for all our plots */\n$graph->img->SetMargin(80, 60, 40, 80);\n$graph->xaxis->SetTextTickInterval(120);\n$graph->xaxis->SetPos(\"min\");\n\n$graph->xaxis->title->SetFont(FF_FONT1, FS_BOLD, 14);\n$graph->xaxis->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->xaxis->SetTitleMargin(15);\n$graph->xaxis->SetLabelFormatString(\"h A\", true);\n$graph->xaxis->SetLabelAngle(90);\n$graph->xaxis->SetTitleMargin(50);\n\n$graph->yaxis->title->SetFont(FF_FONT1, FS_BOLD, 14);\n$graph->yaxis->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->yaxis->SetTitleMargin(50);\n$graph->yscale->SetGrace(10);\n\n$graph->y2axis->title->SetFont(FF_FONT1, FS_BOLD, 14);\n$graph->y2axis->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->y2axis->SetTitleMargin(40);\n\n$graph->tabtitle->SetFont(FF_FONT1, FS_BOLD, 16);\n$graph->SetColor('wheat');\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->SetPos(0.01, 0.94, 'left', 'top');\n$graph->legend->SetLineSpacing(3);\n\n$graph->ygrid->SetFill(true, '#EFEFEF@0.5', '#BBCCEE@0.5');\n$graph->ygrid->Show();\n$graph->xgrid->Show();\n\n$graph->yaxis->scale->ticks->SetLabelFormat(\"%5.1f\");\n$graph->yaxis->scale->ticks->Set(90, 15);\n$graph->yaxis->scale->ticks->SetLabelFormat(\"%5.0f\");\n$graph->yaxis->scale->ticks->SetLabelFormat(\"%5.0f\");\n$graph->yaxis->SetColor(\"blue\");\n$graph->yaxis->SetTitle(\"Wind Direction [N=0, E=90, S=180, W=270]\");\n\n// Create the linear plot\n$lineplot = new LinePlot($smph, $times);\n$lineplot->SetLegend($wLabel);\n$lineplot->SetColor(\"red\");\n\n$lp1 = new LinePlot($gust, $times);\n$lp1->SetLegend(\"Peak Wind Gust\");\n$lp1->SetColor(\"black\");\n\n// Create the linear plot\n$sp1 = new ScatterPlot($drct, $times);\n$sp1->mark->SetType(MARK_FILLEDCIRCLE);\n$sp1->mark->SetFillColor(\"blue\");\n$sp1->mark->SetWidth(3);\n$sp1->SetLegend(\"Wind Direction\");\n\n$graph->Add($sp1);\n$graph->AddY2($lineplot);\n$graph->AddY2($lp1);\n\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/snet/1station_1min.php",
    "content": "<?php\n$OL = \"10.6.1\";\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n$network = get_str404(\"network\", \"KCCI\");\n\n$year = get_int404(\"year\", 2019);\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$station = get_str404('station', \"\");\n\n$t = new MyView();\n$t->iemselect2 = TRUE;\nif (!array_key_exists(\"station\", $_GET)) {\n    $t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol.css\" type=\"text/css\">\n<link type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" rel=\"stylesheet\" />\nEOM;\n    $t->jsextra = <<<EOM\n<script src=\"/vendor/openlayers/{$OL}/ol.js\" type=\"text/javascript\"></script>\n<script src='/vendor/openlayers/{$OL}/ol-layerswitcher.js'></script>\n<script src=\"/js/olselect.js\"></script>\nEOM;\n}\n$t->title = \"SchoolNet One Minute Time Series\";\n\n$nselect = networkSelect($network, $station);\n$ys = yearSelect(2002, $year, \"year\", '', 2019);\n$ms = monthSelect($month);\n$ds = daySelect($day);\n\n$content = \"\";\nif (strlen($station) > 0) {\n\n    $content .= sprintf(\"<p><img src=\\\"1min_T.php?station=%s&amp;year=%s&amp;month=%s&amp;day=%s\\\" />\", $station, $year, $month, $day);\n    $content .= sprintf(\"<p><img src=\\\"1min_V.php?station=%s&amp;year=%s&amp;month=%s&amp;day=%s\\\" />\", $station, $year, $month, $day);\n    $content .= sprintf(\"<p><img src=\\\"1min_P.php?station=%s&amp;year=%s&amp;month=%s&amp;day=%s\\\" />\", $station, $year, $month, $day);\n\n    $content .= \"<p><b>Note:</b> The wind speeds are indicated every minute by the red line.  The blue dots represent wind direction and are shown every 10 minutes.</p>\";\n} else {\n\n    $content = <<<EOM\n\n<p>or select from this map...<p>\n\n<div class=\"row\">\n<div class=\"card\">\n<div class=\"card-body\">\n <div class=\"col-md-4 col-sm-4\">\n<a href=\"?network=KCCI\" style=\"text-decoration: none;\">\n   <img src=\"/schoolnet/images/kcci8.jpg\" border=\"0\"><br /><b>SchoolNet8</b></a>\n\n </div>\n <div class=\"col-md-4 col-sm-4\">\n<a href=\"?network=KELO\" style=\"text-decoration: none;\">\n    <img src=\"/schoolnet/images/kelo.png\" border=\"0\"><br /><b>WeatherNet</b></a>\n </div>\n <div class=\"col-md-4 col-sm-4\">\n<a href=\"?network=KIMT\" style=\"text-decoration: none;\">\n    <img src=\"/schoolnet/images/kimt_logo.png\" border=\"0\"><br /><b>StormNet</b></a>\n\n    </div></div>\n\n<style type=\"text/css\">\n        #map {\n            width: 640px;\n            height: 400px;\n            border: 2px solid black;\n        }\n</style>\n<i>Click black dot to select your site:</i><br />\n<div id=\"map\" data-network=\"{$network}\"></div>\nEOM;\n}\n\n$t->content = <<<EOM\n<h3>1 minute data interval time series</h3>\n\n<p>This application generates graphs of 1 minute interval data\nfor a school based network of your choice. Note that the archive\nbegins on 12 February 2002, but does not go back that far for\nevery site.</p>\n\n\n<form method=\"GET\" action=\"1station_1min.php\" name=\"olselect\">\n<input type=\"hidden\" name=\"network\" value=\"{$network}\">\n<a href=\"1station_1min.php?network={$network}\">Select Visually</a><br>\nMake plot selections: {$nselect}\n{$ys} {$ms} {$ds}\n\n<input type=\"submit\" value=\"Make Plot\"></form>\n\n{$content}\n\n</td></tr></table>\n</td></tr></table>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/plotting/snet/data/SAMI4_051112.txt",
    "content": "1131835500,Y,082,16:45:00,11/12/05,SSE,13MPH,001K,460F,065F,089%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131835506,A,082,16:45:06,11/12/05,SSE,13MPH,001K,460F,065F,089%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131835512,C,082,16:45:12,11/12/05,SSE,09MPH,001K,460F,065F,089%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131835518,K,082,16:45:18,11/12/05,S,10MPH,001K,460F,065F,089%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131835524,J,082,16:45:24,11/12/05,S,10MPH,001K,460F,065F,089%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131835530,R,082,16:45:30,11/12/05,SSE,11MPH,001K,460F,065F,089%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131835536,N,082,16:45:36,11/12/05,S,08MPH,001K,460F,065F,089%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131835542,V,082,16:45:42,11/12/05,S,11MPH,001K,460F,065F,089%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131835548,A,082,16:45:48,11/12/05,S,10MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835560,C,082,16:46:00,11/12/05,S,05MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835566,B,082,16:46:06,11/12/05,S,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835572,J,082,16:46:12,11/12/05,SE,05MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835578,O,082,16:46:18,11/12/05,SSE,04MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835584,T,082,16:46:24,11/12/05,SSW,14MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835590,V,082,16:46:30,11/12/05,S,12MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835596,A,082,16:46:36,11/12/05,SSE,11MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835602,Z,082,16:46:42,11/12/05,SSE,12MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835608,H,082,16:46:48,11/12/05,SE,10MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835614,G,082,16:46:54,11/12/05,SSE,07MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835620,O,082,16:47:00,11/12/05,S,06MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835626,Q,082,16:47:06,11/12/05,SE,06MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835632,B,082,16:47:12,11/12/05,SSE,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835638,D,082,16:47:18,11/12/05,SE,06MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835644,L,082,16:47:24,11/12/05,SE,06MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835650,K,082,16:47:30,11/12/05,S,05MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835656,P,082,16:47:36,11/12/05,SSE,06MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835662,R,082,16:47:42,11/12/05,SSW,04MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835668,W,082,16:47:48,11/12/05,SSE,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835674,Y,082,16:47:54,11/12/05,SSE,10MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835680,A,082,16:48:00,11/12/05,S,09MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835686,C,082,16:48:06,11/12/05,SSE,10MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835692,K,082,16:48:12,11/12/05,SE,14MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835698,L,082,16:48:18,11/12/05,S,11MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835704,Z,082,16:48:24,11/12/05,S,10MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835710,V,082,16:48:30,11/12/05,SSE,11MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835716,J,082,16:48:36,11/12/05,SSW,10MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835722,F,082,16:48:42,11/12/05,SSW,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835728,H,082,16:48:48,11/12/05,SE,09MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835734,M,082,16:48:54,11/12/05,SE,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835740,R,082,16:49:00,11/12/05,S,07MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835746,W,082,16:49:06,11/12/05,S,05MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835752,B,082,16:49:12,11/12/05,S,06MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835758,G,082,16:49:18,11/12/05,SSW,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835764,L,082,16:49:24,11/12/05,S,09MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835770,N,082,16:49:30,11/12/05,SSW,10MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835776,V,082,16:49:36,11/12/05,S,07MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835782,X,082,16:49:42,11/12/05,SSE,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835788,C,082,16:49:48,11/12/05,SSE,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835794,B,082,16:49:54,11/12/05,S,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835800,P,082,16:50:00,11/12/05,ESE,06MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835806,U,082,16:50:06,11/12/05,SSE,13MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835812,N,082,16:50:12,11/12/05,SE,10MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835818,P,082,16:50:18,11/12/05,SSE,11MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835824,X,082,16:50:24,11/12/05,SSW,07MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835830,F,082,16:50:30,11/12/05,SSW,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835836,K,082,16:50:36,11/12/05,S,10MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835842,P,082,16:50:42,11/12/05,S,11MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835848,U,082,16:50:48,11/12/05,SW,06MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835854,O,082,16:50:54,11/12/05,S,07MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835860,E,082,16:51:00,11/12/05,SE,06MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835866,D,082,16:51:06,11/12/05,S,06MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835872,C,082,16:51:12,11/12/05,SSW,06MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835878,E,082,16:51:18,11/12/05,SW,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835884,V,082,16:51:24,11/12/05,SSW,09MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835890,O,082,16:51:30,11/12/05,SSW,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835896,Q,082,16:51:36,11/12/05,S,06MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835902,Y,082,16:51:42,11/12/05,SSW,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835908,D,082,16:51:48,11/12/05,SSE,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835914,F,082,16:51:54,11/12/05,SSE,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835920,K,082,16:52:00,11/12/05,SSE,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835926,M,082,16:52:06,11/12/05,SSE,07MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835932,U,082,16:52:12,11/12/05,S,07MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835938,Z,082,16:52:18,11/12/05,SSW,13MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835944,E,082,16:52:24,11/12/05,SSW,10MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835950,G,082,16:52:30,11/12/05,SE,08MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835956,L,082,16:52:36,11/12/05,SW,06MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835962,N,082,16:52:42,11/12/05,S,13MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835968,S,082,16:52:48,11/12/05,SE,10MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835974,R,082,16:52:54,11/12/05,SE,10MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835980,Y,082,16:53:00,11/12/05,SSE,06MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835986,D,082,16:53:06,11/12/05,S,12MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835992,Z,082,16:53:12,11/12/05,SSW,14MPH,001K,460F,065F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131835998,K,082,16:53:18,11/12/05,S,11MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836004,P,082,16:53:24,11/12/05,S,16MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836010,R,082,16:53:30,11/12/05,S,11MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836016,T,082,16:53:36,11/12/05,SE,13MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836022,S,082,16:53:42,11/12/05,S,16MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836028,J,082,16:53:48,11/12/05,SE,11MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836034,N,082,16:53:54,11/12/05,SSE,08MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836040,L,082,16:54:00,11/12/05,SE,07MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836046,N,082,16:54:06,11/12/05,ESE,06MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836052,O,082,16:54:12,11/12/05,SE,05MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836058,Q,082,16:54:18,11/12/05,SSE,10MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836064,M,082,16:54:24,11/12/05,ESE,07MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836070,O,082,16:54:30,11/12/05,SE,08MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836076,T,082,16:54:36,11/12/05,SSW,09MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836082,P,082,16:54:42,11/12/05,SSW,05MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836088,R,082,16:54:48,11/12/05,ENE,06MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836094,T,082,16:54:54,11/12/05,S,09MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836100,Y,082,16:55:00,11/12/05,S,08MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836106,D,082,16:55:06,11/12/05,SSE,10MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836112,I,082,16:55:12,11/12/05,SSE,09MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836118,Q,082,16:55:18,11/12/05,SE,08MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836124,P,082,16:55:24,11/12/05,SSE,08MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836130,R,082,16:55:30,11/12/05,S,06MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836136,Z,082,16:55:36,11/12/05,SE,06MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836142,E,082,16:55:42,11/12/05,S,06MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836148,G,082,16:55:48,11/12/05,SSE,05MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836154,O,082,16:55:54,11/12/05,S,06MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836160,Q,082,16:56:00,11/12/05,SSE,08MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836166,U,082,16:56:06,11/12/05,S,07MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836172,Z,082,16:56:12,11/12/05,SW,06MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836178,H,082,16:56:18,11/12/05,SSE,10MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836184,J,082,16:56:24,11/12/05,S,12MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836190,O,082,16:56:30,11/12/05,S,12MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836196,K,082,16:56:36,11/12/05,SSE,11MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836202,P,082,16:56:42,11/12/05,SE,10MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836208,R,082,16:56:48,11/12/05,SSW,08MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836214,C,082,16:56:54,11/12/05,SSE,10MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836220,H,082,16:57:00,11/12/05,SE,20MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836226,J,082,16:57:06,11/12/05,S,13MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836232,F,082,16:57:12,11/12/05,SSE,11MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836238,T,082,16:57:18,11/12/05,SE,12MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836244,P,082,16:57:24,11/12/05,S,19MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836250,X,082,16:57:30,11/12/05,SSE,22MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836256,F,082,16:57:36,11/12/05,SE,14MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836262,H,082,16:57:42,11/12/05,SSE,11MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836268,J,082,16:57:48,11/12/05,SSE,12MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836274,L,082,16:57:54,11/12/05,SSE,10MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836280,Q,082,16:58:00,11/12/05,SSW,11MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836286,Y,082,16:58:06,11/12/05,S,13MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836292,D,082,16:58:12,11/12/05,SSE,11MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836298,I,082,16:58:18,11/12/05,SSW,11MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836304,C,082,16:58:24,11/12/05,SE,08MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836310,M,082,16:58:30,11/12/05,SE,06MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836316,U,082,16:58:36,11/12/05,SE,08MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836322,W,082,16:58:42,11/12/05,SSW,06MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836328,K,082,16:58:48,11/12/05,SSE,09MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836334,M,082,16:58:54,11/12/05,SSE,09MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836340,O,082,16:59:00,11/12/05,SE,10MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836346,T,082,16:59:06,11/12/05,SE,10MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836352,V,082,16:59:12,11/12/05,SSW,06MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836358,D,082,16:59:18,11/12/05,S,06MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836364,F,082,16:59:24,11/12/05,SSE,06MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836370,N,082,16:59:30,11/12/05,SE,08MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836376,Y,082,16:59:36,11/12/05,ESE,12MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836382,R,082,16:59:42,11/12/05,SE,16MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836388,C,082,16:59:48,11/12/05,SE,17MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836394,E,082,16:59:54,11/12/05,SSE,16MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836400,V,082,17:00:00,11/12/05,S,20MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836406,L,082,17:00:06,11/12/05,SSE,14MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836412,N,082,17:00:12,11/12/05,SE,13MPH,000K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836418,I,082,17:00:18,11/12/05,SSE,06MPH,000K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836424,W,082,17:00:24,11/12/05,SSE,06MPH,000K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836430,E,082,17:00:30,11/12/05,SSE,06MPH,000K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836436,G,082,17:00:36,11/12/05,S,07MPH,000K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836442,C,082,17:00:42,11/12/05,SSE,08MPH,000K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836448,H,082,17:00:48,11/12/05,S,11MPH,000K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836454,J,082,17:00:54,11/12/05,SSE,07MPH,000K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836460,R,082,17:01:00,11/12/05,S,04MPH,000K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836466,Q,082,17:01:06,11/12/05,SSE,03MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836472,Y,082,17:01:12,11/12/05,SSE,05MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836478,U,082,17:01:18,11/12/05,SE,08MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836484,Y,082,17:01:24,11/12/05,SSE,07MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836490,D,082,17:01:30,11/12/05,SSE,11MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836496,F,082,17:01:36,11/12/05,S,11MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836502,K,082,17:01:42,11/12/05,S,14MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836508,Q,082,17:01:48,11/12/05,SSW,14MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836514,S,082,17:01:54,11/12/05,SSW,11MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836520,D,082,17:02:00,11/12/05,S,11MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836526,C,082,17:02:06,11/12/05,SSE,14MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836532,K,082,17:02:12,11/12/05,SE,13MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836538,U,082,17:02:18,11/12/05,ESE,10MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836544,F,082,17:02:24,11/12/05,SSW,07MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836550,V,082,17:02:30,11/12/05,S,11MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836556,U,082,17:02:36,11/12/05,SSE,08MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836562,N,082,17:02:42,11/12/05,S,09MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836568,L,082,17:02:48,11/12/05,S,10MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836574,K,082,17:02:54,11/12/05,S,11MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836580,P,082,17:03:00,11/12/05,SE,12MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836586,I,082,17:03:06,11/12/05,S,12MPH,000K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836592,H,082,17:03:12,11/12/05,S,11MPH,000K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836598,C,082,17:03:18,11/12/05,S,14MPH,000K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836604,B,082,17:03:24,11/12/05,ESE,10MPH,000K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836610,X,082,17:03:30,11/12/05,SSE,10MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836616,F,082,17:03:36,11/12/05,SE,15MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836622,B,082,17:03:42,11/12/05,SSE,13MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836628,L,082,17:03:48,11/12/05,SSE,20MPH,001K,460F,065F,089%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836634,N,082,17:03:54,11/12/05,SE,13MPH,001K,460F,065F,089%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836640,V,082,17:04:00,11/12/05,SE,14MPH,001K,460F,065F,089%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836646,X,082,17:04:06,11/12/05,SSE,12MPH,001K,460F,065F,089%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836652,F,082,17:04:12,11/12/05,SE,11MPH,001K,460F,065F,089%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836658,B,082,17:04:18,11/12/05,SSW,14MPH,001K,460F,065F,089%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836664,J,082,17:04:24,11/12/05,SSE,11MPH,001K,460F,065F,089%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836670,L,082,17:04:30,11/12/05,SE,16MPH,001K,460F,065F,089%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836676,T,082,17:04:36,11/12/05,SSE,18MPH,001K,460F,065F,089%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836682,V,082,17:04:42,11/12/05,SE,21MPH,001K,460F,065F,089%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836688,A,082,17:04:48,11/12/05,SE,19MPH,001K,460F,065F,089%,29.35F,00.08\"D,00.10\"M,00.00\"R\n1131836694,C,082,17:04:54,11/12/05,SSE,13MPH,001K,460F,065F,089%,29.35F,00.08\"D,00.10\"M,00.00\"R\n1131836700,K,082,17:05:00,11/12/05,SE,11MPH,001K,460F,065F,089%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836706,M,082,17:05:06,11/12/05,SE,15MPH,001K,460F,065F,089%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836712,R,082,17:05:12,11/12/05,SSE,19MPH,001K,460F,065F,089%,29.35F,00.08\"D,00.10\"M,00.00\"R\n1131836718,T,082,17:05:18,11/12/05,SE,11MPH,001K,460F,065F,089%,29.35F,00.08\"D,00.10\"M,00.00\"R\n1131836724,B,082,17:05:24,11/12/05,SSE,14MPH,001K,460F,065F,089%,29.35F,00.08\"D,00.10\"M,00.00\"R\n1131836730,D,082,17:05:30,11/12/05,SSE,09MPH,001K,460F,065F,089%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836736,L,082,17:05:36,11/12/05,SSW,08MPH,001K,460F,065F,088%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836742,K,082,17:05:42,11/12/05,SW,18MPH,001K,460F,065F,088%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836748,S,082,17:05:48,11/12/05,SSW,17MPH,001K,460F,065F,088%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836754,U,082,17:05:54,11/12/05,SE,16MPH,001K,460F,065F,088%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836760,Z,082,17:06:00,11/12/05,SSE,11MPH,001K,460F,065F,088%,29.36F,00.08\"D,00.10\"M,00.00\"R\n1131836766,Y,082,17:06:06,11/12/05,SW,11MPH,001K,460F,065F,088%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836772,D,082,17:06:12,11/12/05,S,26MPH,001K,460F,065F,088%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836778,F,082,17:06:18,11/12/05,S,20MPH,001K,460F,065F,088%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836784,N,082,17:06:24,11/12/05,S,21MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836790,P,082,17:06:30,11/12/05,SSW,18MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836796,U,082,17:06:36,11/12/05,S,13MPH,001K,460F,065F,089%,29.37F,00.08\"D,00.10\"M,00.00\"R\n1131836802,W,082,17:06:42,11/12/05,SW,15MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836808,E,082,17:06:48,11/12/05,SSW,12MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836814,D,082,17:06:54,11/12/05,SSW,07MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836820,U,082,17:07:00,11/12/05,SSW,18MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836826,Q,082,17:07:06,11/12/05,SSW,21MPH,001K,460F,065F,088%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836832,V,082,17:07:12,11/12/05,SSW,18MPH,001K,460F,065F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836838,U,082,17:07:18,11/12/05,SW,23MPH,001K,460F,065F,089%,29.38F,00.08\"D,00.10\"M,00.00\"R\n1131836844,W,082,17:07:24,11/12/05,S,16MPH,001K,460F,066F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836850,Y,082,17:07:30,11/12/05,SW,26MPH,001K,460F,066F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836856,D,082,17:07:36,11/12/05,WSW,17MPH,001K,460F,066F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836862,I,082,17:07:42,11/12/05,SSW,19MPH,001K,460F,066F,089%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131836868,N,082,17:07:48,11/12/05,SSW,27MPH,001K,460F,066F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836874,M,082,17:07:54,11/12/05,SSW,24MPH,001K,460F,066F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836880,U,082,17:08:00,11/12/05,SW,11MPH,001K,460F,066F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836886,W,082,17:08:06,11/12/05,SW,14MPH,001K,460F,066F,089%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836892,H,082,17:08:12,11/12/05,SW,14MPH,001K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836898,J,082,17:08:18,11/12/05,WSW,22MPH,001K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836904,O,082,17:08:24,11/12/05,W,20MPH,001K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836910,Q,082,17:08:30,11/12/05,SW,15MPH,001K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836916,S,082,17:08:36,11/12/05,SW,13MPH,001K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836922,U,082,17:08:42,11/12/05,WSW,16MPH,001K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836928,C,082,17:08:48,11/12/05,WSW,10MPH,001K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836934,E,082,17:08:54,11/12/05,W,11MPH,001K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836940,P,082,17:09:00,11/12/05,SW,13MPH,001K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836946,I,082,17:09:06,11/12/05,SW,13MPH,001K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836952,W,082,17:09:12,11/12/05,SSW,10MPH,001K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836958,B,082,17:09:18,11/12/05,WSW,10MPH,001K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836964,M,082,17:09:24,11/12/05,SW,17MPH,001K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836970,W,082,17:09:30,11/12/05,SSW,24MPH,001K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836976,E,082,17:09:36,11/12/05,SSW,18MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836982,D,082,17:09:42,11/12/05,SSW,20MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836988,I,082,17:09:48,11/12/05,SSW,21MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131836994,E,082,17:09:54,11/12/05,SSW,22MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837000,V,082,17:10:00,11/12/05,SW,15MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837006,L,082,17:10:06,11/12/05,S,14MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837012,Q,082,17:10:12,11/12/05,WSW,11MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837018,J,082,17:10:18,11/12/05,SSW,21MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837024,O,082,17:10:24,11/12/05,SSW,18MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837030,N,082,17:10:30,11/12/05,S,18MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837036,M,082,17:10:36,11/12/05,S,16MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837042,R,082,17:10:42,11/12/05,SSW,23MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837048,T,082,17:10:48,11/12/05,SSW,21MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837054,Y,082,17:10:54,11/12/05,S,16MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837060,U,082,17:11:00,11/12/05,S,14MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837066,T,082,17:11:06,11/12/05,SSW,24MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837072,S,082,17:11:12,11/12/05,SSW,25MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837078,A,082,17:11:18,11/12/05,S,15MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837084,T,082,17:11:24,11/12/05,SSW,18MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837090,B,082,17:11:30,11/12/05,SSE,18MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837096,D,082,17:11:36,11/12/05,SSW,21MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837102,F,082,17:11:42,11/12/05,S,18MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837108,E,082,17:11:48,11/12/05,SSW,16MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837114,G,082,17:11:54,11/12/05,S,18MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837120,I,082,17:12:00,11/12/05,SE,16MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837126,B,082,17:12:06,11/12/05,SSW,12MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837132,I,082,17:12:12,11/12/05,SSW,22MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837138,K,082,17:12:18,11/12/05,S,23MPH,000K,460F,066F,088%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131837144,M,082,17:12:24,11/12/05,S,29MPH,000K,460F,066F,088%,29.39F,00.08\"D,00.10\"M,00.00\"R\n1131837150,L,082,17:12:30,11/12/05,SSW,21MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837156,N,082,17:12:36,11/12/05,SSW,23MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837162,M,082,17:12:42,11/12/05,SSW,17MPH,000K,460F,066F,088%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837168,O,082,17:12:48,11/12/05,S,15MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837174,Q,082,17:12:54,11/12/05,SSE,13MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837180,S,082,17:13:00,11/12/05,SW,13MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837186,X,082,17:13:06,11/12/05,SSE,21MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837192,T,082,17:13:12,11/12/05,SSE,23MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837198,Y,082,17:13:18,11/12/05,SSW,19MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837204,A,082,17:13:24,11/12/05,SSW,21MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837210,Z,082,17:13:30,11/12/05,SSW,18MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837216,B,082,17:13:36,11/12/05,SSW,11MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837222,D,082,17:13:42,11/12/05,S,18MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837228,F,082,17:13:48,11/12/05,S,17MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837234,Y,082,17:13:54,11/12/05,S,18MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837240,D,082,17:14:00,11/12/05,S,23MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837246,Z,082,17:14:06,11/12/05,SSE,17MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837252,Y,082,17:14:12,11/12/05,S,18MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837258,X,082,17:14:18,11/12/05,SSE,12MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837264,C,082,17:14:24,11/12/05,S,14MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837270,B,082,17:14:30,11/12/05,S,10MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837276,X,082,17:14:36,11/12/05,SSW,14MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837282,C,082,17:14:42,11/12/05,SSW,14MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837288,B,082,17:14:48,11/12/05,SSW,11MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837294,G,082,17:14:54,11/12/05,S,11MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837300,I,082,17:15:00,11/12/05,SSW,14MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837306,E,082,17:15:06,11/12/05,S,14MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837312,D,082,17:15:12,11/12/05,SSW,08MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837318,F,082,17:15:18,11/12/05,S,05MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837324,H,082,17:15:24,11/12/05,SW,09MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837330,J,082,17:15:30,11/12/05,SSW,13MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837336,L,082,17:15:36,11/12/05,SSW,11MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837342,K,082,17:15:42,11/12/05,SSW,19MPH,000K,460F,066F,087%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837348,J,082,17:15:48,11/12/05,SSW,20MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837354,L,082,17:15:54,11/12/05,S,17MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837360,K,082,17:16:00,11/12/05,SSW,18MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837366,E,082,17:16:06,11/12/05,SW,19MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837372,I,082,17:16:12,11/12/05,SW,12MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837378,K,082,17:16:18,11/12/05,SSW,14MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837384,J,082,17:16:24,11/12/05,SSW,21MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837390,L,082,17:16:30,11/12/05,SSE,15MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837396,Q,082,17:16:36,11/12/05,SSW,14MPH,000K,460F,066F,087%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837402,P,082,17:16:42,11/12/05,SSW,11MPH,000K,460F,066F,087%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837408,X,082,17:16:48,11/12/05,S,11MPH,000K,460F,066F,087%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837414,Q,082,17:16:54,11/12/05,S,19MPH,000K,460F,066F,087%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837420,M,082,17:17:00,11/12/05,SE,14MPH,000K,460F,066F,087%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837426,U,082,17:17:06,11/12/05,SSW,11MPH,000K,460F,066F,087%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837432,Z,082,17:17:12,11/12/05,SW,10MPH,000K,460F,066F,087%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837438,V,082,17:17:18,11/12/05,SSE,09MPH,000K,460F,066F,087%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837444,X,082,17:17:24,11/12/05,SSE,08MPH,000K,460F,066F,087%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837450,Z,082,17:17:30,11/12/05,WSW,08MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837456,E,082,17:17:36,11/12/05,SSE,11MPH,000K,460F,066F,087%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837462,D,082,17:17:42,11/12/05,S,16MPH,000K,460F,066F,087%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837468,O,082,17:17:48,11/12/05,S,13MPH,000K,460F,066F,087%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837474,E,082,17:17:54,11/12/05,S,12MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837480,D,082,17:18:00,11/12/05,SE,14MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837486,O,082,17:18:06,11/12/05,SSW,09MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837492,K,082,17:18:12,11/12/05,SSE,11MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837498,S,082,17:18:18,11/12/05,S,11MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837504,U,082,17:18:24,11/12/05,SSW,12MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837510,W,082,17:18:30,11/12/05,S,10MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837516,V,082,17:18:36,11/12/05,SSW,21MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837522,A,082,17:18:42,11/12/05,SSE,22MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837528,C,082,17:18:48,11/12/05,SSW,14MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837534,E,082,17:18:54,11/12/05,SSW,14MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837540,E,082,17:19:00,11/12/05,S,18MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837546,F,082,17:19:06,11/12/05,SSE,14MPH,000K,460F,066F,087%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837552,H,082,17:19:12,11/12/05,S,09MPH,000K,460F,066F,087%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837558,J,082,17:19:18,11/12/05,SSW,11MPH,000K,460F,066F,087%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837564,I,082,17:19:24,11/12/05,WSW,08MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837570,T,082,17:19:30,11/12/05,SSW,06MPH,000K,460F,066F,087%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837576,M,082,17:19:36,11/12/05,S,14MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837582,O,082,17:19:42,11/12/05,SSW,09MPH,000K,460F,066F,086%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837588,K,082,17:19:48,11/12/05,SSW,10MPH,000K,460F,066F,086%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837594,P,082,17:19:54,11/12/05,WSW,10MPH,000K,460F,066F,086%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837600,X,082,17:20:00,11/12/05,SSE,08MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837606,W,082,17:20:06,11/12/05,SW,09MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837612,V,082,17:20:12,11/12/05,SW,12MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837618,A,082,17:20:18,11/12/05,S,20MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837624,Z,082,17:20:24,11/12/05,SSW,20MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837630,E,082,17:20:30,11/12/05,SSW,15MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837636,G,082,17:20:36,11/12/05,SE,12MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837642,F,082,17:20:42,11/12/05,SSW,08MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837648,H,082,17:20:48,11/12/05,SW,08MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837654,G,082,17:20:54,11/12/05,SSW,14MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837660,F,082,17:21:00,11/12/05,SSW,18MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837666,E,082,17:21:06,11/12/05,SSW,18MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837672,D,082,17:21:12,11/12/05,SSW,15MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837678,F,082,17:21:18,11/12/05,S,16MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837684,E,082,17:21:24,11/12/05,SW,19MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837690,A,082,17:21:30,11/12/05,SSW,14MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837696,T,082,17:21:36,11/12/05,SSW,20MPH,000K,460F,066F,086%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837702,H,082,17:21:42,11/12/05,SSW,18MPH,000K,460F,066F,086%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837708,D,082,17:21:48,11/12/05,SW,12MPH,000K,460F,066F,086%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837714,C,082,17:21:54,11/12/05,S,09MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837720,K,082,17:22:00,11/12/05,SSW,10MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837726,J,082,17:22:06,11/12/05,SSW,11MPH,000K,460F,066F,086%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837732,O,082,17:22:12,11/12/05,SSW,13MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837738,K,082,17:22:18,11/12/05,S,10MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837744,S,082,17:22:24,11/12/05,SSE,11MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837750,D,082,17:22:30,11/12/05,SSW,11MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837756,W,082,17:22:36,11/12/05,SSW,16MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837762,V,082,17:22:42,11/12/05,WSW,08MPH,000K,460F,066F,086%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837768,L,082,17:22:48,11/12/05,WNW,04MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837774,T,082,17:22:54,11/12/05,SSW,06MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837780,V,082,17:23:00,11/12/05,S,05MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837786,A,082,17:23:06,11/12/05,SSE,11MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837792,Z,082,17:23:12,11/12/05,S,19MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837798,E,082,17:23:18,11/12/05,S,17MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837804,A,082,17:23:24,11/12/05,SSW,12MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837810,Z,082,17:23:30,11/12/05,S,14MPH,000K,460F,066F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837816,V,082,17:23:36,11/12/05,S,18MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837822,A,082,17:23:42,11/12/05,SSW,31MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837828,C,082,17:23:48,11/12/05,S,19MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837834,V,082,17:23:54,11/12/05,S,26MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837840,D,082,17:24:00,11/12/05,SSW,18MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837846,F,082,17:24:06,11/12/05,SSW,10MPH,000K,460F,067F,086%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837852,D,082,17:24:12,11/12/05,S,08MPH,000K,460F,067F,086%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837858,I,082,17:24:18,11/12/05,S,08MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837864,H,082,17:24:24,11/12/05,S,10MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837870,G,082,17:24:30,11/12/05,SSW,18MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837876,J,082,17:24:36,11/12/05,SSW,18MPH,000K,460F,067F,086%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837882,K,082,17:24:42,11/12/05,WSW,13MPH,000K,460F,067F,086%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837888,M,082,17:24:48,11/12/05,S,14MPH,000K,460F,067F,086%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837894,O,082,17:24:54,11/12/05,S,16MPH,000K,460F,067F,086%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837900,N,082,17:25:00,11/12/05,SSE,21MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837906,L,082,17:25:06,11/12/05,S,16MPH,000K,460F,067F,086%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837912,T,082,17:25:12,11/12/05,SW,13MPH,000K,460F,067F,086%,29.40F,00.08\"D,00.10\"M,00.00\"R\n1131837918,V,082,17:25:18,11/12/05,SSW,11MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837924,X,082,17:25:24,11/12/05,SSW,16MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837930,Z,082,17:25:30,11/12/05,SSW,15MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837936,V,082,17:25:36,11/12/05,SSW,13MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837942,U,082,17:25:42,11/12/05,S,15MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837948,Z,082,17:25:48,11/12/05,SW,16MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837954,E,082,17:25:54,11/12/05,S,10MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837960,G,082,17:26:00,11/12/05,SSW,17MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837966,Z,082,17:26:06,11/12/05,SSW,20MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837972,Y,082,17:26:12,11/12/05,SSW,26MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837978,O,082,17:26:18,11/12/05,SW,21MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837984,C,082,17:26:24,11/12/05,SSW,19MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837990,Y,082,17:26:30,11/12/05,SW,16MPH,000K,460F,067F,086%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131837996,U,082,17:26:36,11/12/05,SSE,13MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838002,C,082,17:26:42,11/12/05,SSW,14MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838008,B,082,17:26:48,11/12/05,S,19MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838014,J,082,17:26:54,11/12/05,S,19MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838020,F,082,17:27:00,11/12/05,SE,08MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838026,Q,082,17:27:06,11/12/05,SW,24MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838032,M,082,17:27:12,11/12/05,SSW,21MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838038,U,082,17:27:18,11/12/05,SW,19MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838044,W,082,17:27:24,11/12/05,SSW,20MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838050,S,082,17:27:30,11/12/05,S,14MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838056,X,082,17:27:36,11/12/05,SW,18MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838062,T,082,17:27:42,11/12/05,SW,20MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838068,B,082,17:27:48,11/12/05,SSW,16MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838074,D,082,17:27:54,11/12/05,SE,11MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838080,C,082,17:28:00,11/12/05,SSW,11MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838086,K,082,17:28:06,11/12/05,SSW,21MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838092,A,082,17:28:12,11/12/05,SSW,18MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838098,L,082,17:28:18,11/12/05,SSW,20MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838104,K,082,17:28:24,11/12/05,S,13MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838110,M,082,17:28:30,11/12/05,SSW,11MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838116,I,082,17:28:36,11/12/05,S,16MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838122,H,082,17:28:42,11/12/05,SSW,13MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838128,D,082,17:28:48,11/12/05,SSW,10MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838134,C,082,17:28:54,11/12/05,SSW,18MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838140,V,082,17:29:00,11/12/05,SSW,13MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838146,R,082,17:29:06,11/12/05,SSW,11MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838152,R,082,17:29:12,11/12/05,SSW,14MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838158,N,082,17:29:18,11/12/05,SSW,14MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838164,J,082,17:29:24,11/12/05,SSW,15MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838170,D,082,17:29:30,11/12/05,SW,11MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838176,N,082,17:29:36,11/12/05,SSW,10MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838182,Y,082,17:29:42,11/12/05,SSE,10MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838188,O,082,17:29:48,11/12/05,SSW,10MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838194,W,082,17:29:54,11/12/05,S,07MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838200,Q,082,17:30:00,11/12/05,S,08MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838206,X,082,17:30:06,11/12/05,S,08MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838212,T,082,17:30:12,11/12/05,SW,07MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838218,V,082,17:30:18,11/12/05,SSW,10MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838224,Q,082,17:30:24,11/12/05,SSW,20MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838230,B,082,17:30:30,11/12/05,SW,19MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838236,A,082,17:30:36,11/12/05,S,16MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838242,F,082,17:30:42,11/12/05,SSW,12MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838248,B,082,17:30:48,11/12/05,SW,11MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n1131838254,U,082,17:30:54,11/12/05,S,10MPH,000K,460F,067F,085%,29.41F,00.08\"D,00.10\"M,00.00\"R\n"
  },
  {
    "path": "htdocs/plotting/snet/data/SBOI4_051112.txt",
    "content": "1131834600,P,055,16:30:00,11/12/05,SSW,11MPH,001K,460F,065F,092%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834606,X,055,16:30:06,11/12/05,SSW,11MPH,001K,460F,065F,092%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834612,W,055,16:30:12,11/12/05,S,13MPH,001K,460F,065F,092%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834618,B,055,16:30:18,11/12/05,SSW,13MPH,001K,460F,065F,092%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834624,M,055,16:30:24,11/12/05,S,10MPH,001K,460F,065F,092%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834630,X,055,16:30:30,11/12/05,S,11MPH,001K,460F,065F,092%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834636,Z,055,16:30:36,11/12/05,S,15MPH,001K,460F,065F,092%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834642,H,055,16:30:42,11/12/05,S,15MPH,001K,460F,065F,092%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834648,P,055,16:30:48,11/12/05,S,15MPH,001K,460F,065F,092%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834660,A,055,16:31:00,11/12/05,S,14MPH,001K,460F,065F,092%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834666,F,055,16:31:06,11/12/05,S,13MPH,001K,460F,065F,092%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834672,N,055,16:31:12,11/12/05,SSW,13MPH,001K,460F,065F,092%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834678,S,055,16:31:18,11/12/05,S,13MPH,001K,460F,065F,092%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834684,D,055,16:31:24,11/12/05,SSW,11MPH,001K,460F,065F,092%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834690,I,055,16:31:30,11/12/05,S,11MPH,001K,460F,064F,092%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834696,Q,055,16:31:36,11/12/05,S,16MPH,001K,460F,065F,092%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834702,S,055,16:31:42,11/12/05,S,15MPH,001K,460F,065F,092%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834708,D,055,16:31:48,11/12/05,SSW,14MPH,001K,460F,064F,092%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834714,F,055,16:31:54,11/12/05,S,15MPH,001K,460F,064F,092%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834720,N,055,16:32:00,11/12/05,S,17MPH,001K,460F,064F,092%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834726,M,055,16:32:06,11/12/05,SSW,13MPH,001K,460F,064F,092%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834732,X,055,16:32:12,11/12/05,S,14MPH,001K,460F,064F,092%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834738,C,055,16:32:18,11/12/05,SSW,18MPH,001K,460F,064F,092%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834744,Q,055,16:32:24,11/12/05,SSW,15MPH,001K,460F,064F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834750,S,055,16:32:30,11/12/05,S,16MPH,001K,460F,064F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834756,G,055,16:32:36,11/12/05,S,15MPH,001K,460F,064F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834762,I,055,16:32:42,11/12/05,S,16MPH,001K,460F,064F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834768,Q,055,16:32:48,11/12/05,S,15MPH,001K,460F,064F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834774,B,055,16:32:54,11/12/05,S,13MPH,001K,460F,064F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834780,J,055,16:33:00,11/12/05,SSW,14MPH,001K,460F,064F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834786,N,055,16:33:06,11/12/05,SSW,14MPH,001K,460F,064F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834792,Y,055,16:33:12,11/12/05,SSW,11MPH,001K,460F,064F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834798,D,055,16:33:18,11/12/05,S,16MPH,001K,460F,064F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834804,L,055,16:33:24,11/12/05,S,16MPH,001K,460F,064F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834810,K,055,16:33:30,11/12/05,SSW,19MPH,000K,460F,064F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834816,S,055,16:33:36,11/12/05,S,19MPH,000K,460F,064F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834822,X,055,16:33:42,11/12/05,SSW,23MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834828,Z,055,16:33:48,11/12/05,SSW,19MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834834,Y,055,16:33:54,11/12/05,SSW,17MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834840,D,055,16:34:00,11/12/05,S,19MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834846,F,055,16:34:06,11/12/05,SSW,19MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834852,H,055,16:34:12,11/12/05,SSW,18MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834858,G,055,16:34:18,11/12/05,S,23MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834864,I,055,16:34:24,11/12/05,SSW,18MPH,000K,460F,065F,093%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834870,T,055,16:34:30,11/12/05,S,17MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834876,S,055,16:34:36,11/12/05,SSW,16MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834882,R,055,16:34:42,11/12/05,S,17MPH,000K,460F,065F,093%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834888,T,055,16:34:48,11/12/05,SSW,18MPH,000K,460F,065F,093%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834894,V,055,16:34:54,11/12/05,SW,16MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834900,U,055,16:35:00,11/12/05,SSW,14MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834906,T,055,16:35:06,11/12/05,SSW,19MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834912,S,055,16:35:12,11/12/05,SSW,17MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834918,R,055,16:35:18,11/12/05,SSW,16MPH,000K,460F,065F,093%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834924,T,055,16:35:24,11/12/05,SSW,15MPH,000K,460F,065F,093%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834930,S,055,16:35:30,11/12/05,SSW,15MPH,000K,460F,065F,093%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834936,O,055,16:35:36,11/12/05,S,21MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834942,Q,055,16:35:42,11/12/05,S,21MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834948,S,055,16:35:48,11/12/05,S,19MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834954,U,055,16:35:54,11/12/05,SSW,22MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834960,W,055,16:36:00,11/12/05,SSW,20MPH,000K,460F,065F,093%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834966,E,055,16:36:06,11/12/05,SSW,23MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131834972,S,055,16:36:12,11/12/05,SSW,18MPH,000K,460F,065F,093%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834978,A,055,16:36:18,11/12/05,SSW,14MPH,000K,460F,065F,093%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834984,I,055,16:36:24,11/12/05,SSW,16MPH,000K,460F,065F,093%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834990,N,055,16:36:30,11/12/05,S,16MPH,000K,460F,065F,093%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131834996,Y,055,16:36:36,11/12/05,S,16MPH,000K,460F,065F,093%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131835002,X,055,16:36:42,11/12/05,S,15MPH,000K,460F,065F,093%,29.29F,00.00\"D,00.08\"M,00.00\"R\n1131835008,Y,055,16:36:48,11/12/05,S,19MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131835014,M,055,16:36:54,11/12/05,S,24MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131835020,Q,055,16:37:00,11/12/05,SSW,19MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131835026,S,055,16:37:06,11/12/05,S,18MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131835032,A,055,16:37:12,11/12/05,SSW,17MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131835038,F,055,16:37:18,11/12/05,SSW,20MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131835044,N,055,16:37:24,11/12/05,SW,20MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131835050,J,055,16:37:30,11/12/05,SSW,19MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131835056,L,055,16:37:36,11/12/05,SSW,17MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131835062,Q,055,16:37:42,11/12/05,S,18MPH,000K,460F,065F,093%,29.28F,00.00\"D,00.08\"M,00.00\"R\n1131835068,V,055,16:37:48,11/12/05,S,20MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835074,D,055,16:37:54,11/12/05,SSW,19MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835080,H,055,16:38:00,11/12/05,SSW,21MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835086,J,055,16:38:06,11/12/05,SSW,21MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835092,L,055,16:38:12,11/12/05,S,21MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835098,N,055,16:38:18,11/12/05,SSW,17MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835104,P,055,16:38:24,11/12/05,SSW,17MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835110,W,055,16:38:30,11/12/05,SSW,19MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835116,B,055,16:38:36,11/12/05,SSW,16MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835122,J,055,16:38:42,11/12/05,S,20MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835128,R,055,16:38:48,11/12/05,SW,21MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835140,Q,055,16:39:00,11/12/05,SSW,18MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835146,V,055,16:39:06,11/12/05,SSW,16MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835152,A,055,16:39:12,11/12/05,S,19MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835158,C,055,16:39:18,11/12/05,SSW,21MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835164,K,055,16:39:24,11/12/05,SSW,18MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835170,S,055,16:39:30,11/12/05,SSW,19MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835176,U,055,16:39:36,11/12/05,SSW,19MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835182,F,055,16:39:42,11/12/05,SSW,18MPH,000K,460F,065F,093%,29.27F,00.01\"D,00.09\"M,00.00\"R\n1131835188,N,055,16:39:48,11/12/05,SSW,17MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835200,P,055,16:40:00,11/12/05,SSW,14MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835206,N,055,16:40:06,11/12/05,SSW,16MPH,000K,460F,065F,093%,29.27F,00.01\"D,00.09\"M,00.00\"R\n1131835212,E,055,16:40:12,11/12/05,SSW,14MPH,000K,460F,065F,093%,29.27F,00.01\"D,00.09\"M,00.00\"R\n1131835218,J,055,16:40:18,11/12/05,SSW,14MPH,000K,460F,065F,093%,29.27F,00.01\"D,00.09\"M,00.00\"R\n1131835224,R,055,16:40:24,11/12/05,SSW,14MPH,000K,460F,065F,093%,29.27F,00.01\"D,00.09\"M,00.00\"R\n1131835230,Z,055,16:40:30,11/12/05,SSW,18MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835236,N,055,16:40:36,11/12/05,S,11MPH,000K,460F,065F,093%,29.27F,00.01\"D,00.09\"M,00.00\"R\n1131835242,S,055,16:40:42,11/12/05,SSW,13MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835248,A,055,16:40:48,11/12/05,SW,14MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835254,I,055,16:40:54,11/12/05,S,13MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835260,Q,055,16:41:00,11/12/05,S,14MPH,000K,460F,065F,093%,29.28F,00.01\"D,00.09\"M,00.00\"R\n1131835266,U,055,16:41:06,11/12/05,SSW,13MPH,000K,460F,065F,093%,29.28F,00.02\"D,00.10\"M,00.00\"R\n1131835272,I,055,16:41:12,11/12/05,S,14MPH,000K,460F,065F,093%,29.28F,00.02\"D,00.10\"M,00.00\"R\n1131835278,E,055,16:41:18,11/12/05,SSW,14MPH,000K,460F,065F,093%,29.28F,00.02\"D,00.10\"M,00.00\"R\n1131835284,V,055,16:41:24,11/12/05,SSW,14MPH,000K,460F,065F,093%,29.28F,00.02\"D,00.10\"M,00.00\"R\n1131835290,G,055,16:41:30,11/12/05,SSW,13MPH,000K,460F,065F,093%,29.28F,00.02\"D,00.10\"M,00.00\"R\n1131835296,U,055,16:41:36,11/12/05,S,11MPH,000K,460F,065F,093%,29.28F,00.02\"D,00.10\"M,00.00\"R\n1131835302,Z,055,16:41:42,11/12/05,SSW,14MPH,000K,460F,065F,093%,29.28F,00.02\"D,00.10\"M,00.00\"R\n1131835308,N,055,16:41:48,11/12/05,SSW,14MPH,000K,460F,065F,093%,29.28F,00.02\"D,00.10\"M,00.00\"R\n1131835314,V,055,16:41:54,11/12/05,SSW,14MPH,000K,460F,065F,093%,29.28F,00.02\"D,00.10\"M,00.00\"R\n1131835320,J,055,16:42:00,11/12/05,S,15MPH,000K,460F,065F,093%,29.28F,00.02\"D,00.10\"M,00.00\"R\n1131835326,L,055,16:42:06,11/12/05,S,17MPH,000K,460F,065F,093%,29.28F,00.02\"D,00.10\"M,00.00\"R\n1131835332,Q,055,16:42:12,11/12/05,S,13MPH,000K,460F,065F,093%,29.28F,00.02\"D,00.10\"M,00.00\"R\n1131835338,V,055,16:42:18,11/12/05,SSW,16MPH,000K,460F,065F,093%,29.28F,00.02\"D,00.10\"M,00.00\"R\n1131835344,D,055,16:42:24,11/12/05,SSW,16MPH,000K,460F,065F,093%,29.28F,00.03\"D,00.11\"M,00.00\"R\n1131835350,Z,055,16:42:30,11/12/05,S,11MPH,000K,460F,065F,093%,29.28F,00.03\"D,00.11\"M,00.00\"R\n1131835356,W,055,16:42:36,11/12/05,SSW,12MPH,000K,460F,065F,093%,29.28F,00.03\"D,00.11\"M,00.00\"R\n1131835362,B,055,16:42:42,11/12/05,S,15MPH,000K,460F,065F,093%,29.28F,00.03\"D,00.11\"M,00.00\"R\n1131835368,J,055,16:42:48,11/12/05,S,12MPH,000K,460F,065F,093%,29.28F,00.03\"D,00.11\"M,00.00\"R\n1131835374,I,055,16:42:54,11/12/05,SSW,13MPH,000K,460F,065F,093%,29.28F,00.03\"D,00.11\"M,00.00\"R\n1131835380,Z,055,16:43:00,11/12/05,SSW,13MPH,000K,460F,065F,093%,29.28F,00.04\"D,00.12\"M,00.00\"R\n1131835386,B,055,16:43:06,11/12/05,SSW,12MPH,000K,460F,065F,093%,29.28F,00.04\"D,00.12\"M,00.00\"R\n1131835392,J,055,16:43:12,11/12/05,SSW,13MPH,000K,460F,065F,093%,29.28F,00.04\"D,00.12\"M,00.00\"R\n1131835398,O,055,16:43:18,11/12/05,SSW,09MPH,000K,460F,065F,093%,29.28F,00.04\"D,00.12\"M,00.00\"R\n1131835404,T,055,16:43:24,11/12/05,SSW,12MPH,000K,460F,064F,093%,29.28F,00.04\"D,00.12\"M,00.00\"R\n1131835410,V,055,16:43:30,11/12/05,S,09MPH,000K,460F,064F,093%,29.28F,00.04\"D,00.12\"M,00.00\"R\n1131835416,D,055,16:43:36,11/12/05,SSW,09MPH,000K,460F,064F,093%,29.28F,00.04\"D,00.12\"M,00.00\"R\n1131835422,F,055,16:43:42,11/12/05,S,13MPH,000K,460F,064F,093%,29.28F,00.04\"D,00.12\"M,00.00\"R\n1131835428,N,055,16:43:48,11/12/05,S,11MPH,000K,460F,064F,093%,29.28F,00.04\"D,00.12\"M,00.00\"R\n1131835434,S,055,16:43:54,11/12/05,S,12MPH,000K,460F,064F,093%,29.28F,00.05\"D,00.13\"M,00.00\"R\n1131835440,A,055,16:44:00,11/12/05,S,13MPH,000K,460F,064F,093%,29.28F,00.05\"D,00.13\"M,00.00\"R\n1131835446,C,055,16:44:06,11/12/05,S,13MPH,000K,460F,064F,093%,29.28F,00.05\"D,00.13\"M,00.00\"R\n1131835452,K,055,16:44:12,11/12/05,S,13MPH,000K,460F,064F,093%,29.28F,00.05\"D,00.13\"M,00.00\"R\n1131835458,P,055,16:44:18,11/12/05,S,13MPH,000K,460F,064F,093%,29.28F,00.05\"D,00.13\"M,00.00\"R\n1131835464,A,055,16:44:24,11/12/05,SSW,12MPH,000K,460F,064F,093%,29.28F,00.05\"D,00.13\"M,00.00\"R\n1131835470,C,055,16:44:30,11/12/05,SSW,13MPH,000K,460F,064F,093%,29.29F,00.06\"D,00.14\"M,00.00\"R\n1131835476,N,055,16:44:36,11/12/05,S,13MPH,000K,460F,064F,093%,29.29F,00.06\"D,00.14\"M,00.00\"R\n1131835482,S,055,16:44:42,11/12/05,SSW,13MPH,000K,460F,064F,093%,29.29F,00.06\"D,00.14\"M,00.00\"R\n1131835488,M,055,16:44:48,11/12/05,SSW,12MPH,000K,460F,064F,093%,29.29F,00.06\"D,00.14\"M,00.00\"R\n1131835494,O,055,16:44:54,11/12/05,SSW,13MPH,000K,460F,064F,093%,29.29F,00.06\"D,00.14\"M,00.00\"R\n1131835500,T,055,16:45:00,11/12/05,SSE,11MPH,000K,460F,064F,093%,29.29F,00.06\"D,00.14\"M,00.00\"R\n1131835506,A,055,16:45:06,11/12/05,SSW,14MPH,000K,460F,064F,093%,29.29F,00.06\"D,00.14\"M,00.00\"R\n1131835512,I,055,16:45:12,11/12/05,S,18MPH,000K,460F,064F,093%,29.29F,00.06\"D,00.14\"M,00.00\"R\n1131835518,N,055,16:45:18,11/12/05,SSW,16MPH,000K,460F,064F,093%,29.29F,00.07\"D,00.15\"M,00.00\"R\n1131835524,V,055,16:45:24,11/12/05,S,16MPH,000K,460F,064F,093%,29.28F,00.07\"D,00.15\"M,00.00\"R\n1131835530,A,055,16:45:30,11/12/05,S,13MPH,000K,460F,064F,093%,29.29F,00.07\"D,00.15\"M,00.00\"R\n1131835536,I,055,16:45:36,11/12/05,SSW,11MPH,000K,460F,064F,093%,29.29F,00.07\"D,00.15\"M,00.00\"R\n1131835542,N,055,16:45:42,11/12/05,SSW,11MPH,000K,460F,064F,094%,29.29F,00.08\"D,00.16\"M,00.00\"R\n1131835548,P,055,16:45:48,11/12/05,S,12MPH,000K,460F,064F,094%,29.28F,00.08\"D,00.16\"M,00.00\"R\n1131835554,X,055,16:45:54,11/12/05,SSW,13MPH,000K,460F,064F,094%,29.29F,00.08\"D,00.16\"M,00.00\"R\n1131835560,C,055,16:46:00,11/12/05,S,14MPH,000K,460F,064F,094%,29.28F,00.08\"D,00.16\"M,00.00\"R\n1131835566,H,055,16:46:06,11/12/05,S,11MPH,000K,460F,064F,094%,29.29F,00.08\"D,00.16\"M,00.00\"R\n1131835572,M,055,16:46:12,11/12/05,SSW,10MPH,000K,460F,064F,094%,29.29F,00.08\"D,00.16\"M,00.00\"R\n1131835578,U,055,16:46:18,11/12/05,SSW,13MPH,000K,460F,064F,094%,29.29F,00.08\"D,00.16\"M,00.00\"R\n1131835584,F,055,16:46:24,11/12/05,SSW,13MPH,000K,460F,064F,094%,29.29F,00.09\"D,00.17\"M,00.00\"R\n1131835590,K,055,16:46:30,11/12/05,SSW,13MPH,000K,460F,064F,094%,29.29F,00.09\"D,00.17\"M,00.00\"R\n1131835596,P,055,16:46:36,11/12/05,SSW,13MPH,000K,460F,064F,094%,29.29F,00.09\"D,00.17\"M,00.00\"R\n1131835602,D,055,16:46:42,11/12/05,SSW,11MPH,000K,460F,064F,094%,29.29F,00.09\"D,00.17\"M,00.00\"R\n1131835608,L,055,16:46:48,11/12/05,SSW,11MPH,000K,460F,064F,094%,29.29F,00.10\"D,00.18\"M,00.00\"R\n1131835614,Q,055,16:46:54,11/12/05,SSW,11MPH,000K,460F,064F,094%,29.29F,00.10\"D,00.18\"M,00.00\"R\n1131835620,Y,055,16:47:00,11/12/05,SSW,11MPH,000K,460F,064F,094%,29.29F,00.10\"D,00.18\"M,00.00\"R\n1131835626,G,055,16:47:06,11/12/05,SSW,11MPH,000K,460F,064F,094%,29.29F,00.10\"D,00.18\"M,00.00\"R\n1131835632,O,055,16:47:12,11/12/05,SSW,08MPH,000K,460F,064F,094%,29.29F,00.10\"D,00.18\"M,00.00\"R\n1131835638,Q,055,16:47:18,11/12/05,SSW,07MPH,000K,460F,064F,094%,29.29F,00.11\"D,00.19\"M,00.00\"R\n1131835644,B,055,16:47:24,11/12/05,SSW,08MPH,000K,460F,064F,094%,29.29F,00.11\"D,00.19\"M,00.00\"R\n1131835650,G,055,16:47:30,11/12/05,SSW,11MPH,000K,460F,064F,094%,29.29F,00.11\"D,00.19\"M,00.00\"R\n1131835656,R,055,16:47:36,11/12/05,SSW,10MPH,000K,460F,064F,094%,29.29F,00.11\"D,00.19\"M,00.00\"R\n1131835662,Q,055,16:47:42,11/12/05,SSW,12MPH,000K,460F,064F,094%,29.29F,00.12\"D,00.20\"M,00.00\"R\n1131835668,E,055,16:47:48,11/12/05,SSW,10MPH,000K,460F,064F,094%,29.29F,00.12\"D,00.20\"M,00.00\"R\n1131835674,J,055,16:47:54,11/12/05,SSW,11MPH,000K,460F,064F,094%,29.29F,00.12\"D,00.20\"M,00.00\"R\n1131835680,O,055,16:48:00,11/12/05,SW,09MPH,000K,460F,064F,094%,29.29F,00.12\"D,00.20\"M,00.00\"R\n1131835686,T,055,16:48:06,11/12/05,S,09MPH,000K,460F,064F,094%,29.29F,00.12\"D,00.20\"M,00.00\"R\n1131835692,Y,055,16:48:12,11/12/05,SSW,11MPH,000K,460F,064F,094%,29.29F,00.12\"D,00.20\"M,00.00\"R\n1131835698,J,055,16:48:18,11/12/05,SSW,09MPH,000K,460F,064F,094%,29.29F,00.13\"D,00.21\"M,00.00\"R\n1131835704,O,055,16:48:24,11/12/05,SSW,09MPH,000K,460F,064F,094%,29.29F,00.13\"D,00.21\"M,00.00\"R\n1131835710,C,055,16:48:30,11/12/05,SW,11MPH,000K,460F,064F,094%,29.29F,00.13\"D,00.21\"M,00.00\"R\n1131835716,E,055,16:48:36,11/12/05,SW,09MPH,000K,460F,064F,095%,29.29F,00.13\"D,00.21\"M,00.00\"R\n1131835722,M,055,16:48:42,11/12/05,SSW,10MPH,000K,460F,064F,095%,29.29F,00.13\"D,00.21\"M,00.00\"R\n1131835728,O,055,16:48:48,11/12/05,SW,11MPH,000K,460F,064F,095%,29.29F,00.14\"D,00.22\"M,00.00\"R\n1131835734,W,055,16:48:54,11/12/05,SW,11MPH,000K,460F,064F,095%,29.29F,00.14\"D,00.22\"M,00.00\"R\n1131835740,E,055,16:49:00,11/12/05,SW,08MPH,000K,460F,064F,095%,29.30F,00.14\"D,00.22\"M,00.00\"R\n1131835746,J,055,16:49:06,11/12/05,SSW,08MPH,000K,460F,064F,095%,29.29F,00.14\"D,00.22\"M,00.00\"R\n1131835752,O,055,16:49:12,11/12/05,SSW,08MPH,000K,460F,064F,095%,29.30F,00.14\"D,00.22\"M,00.00\"R\n1131835758,T,055,16:49:18,11/12/05,SSW,06MPH,000K,460F,064F,095%,29.30F,00.14\"D,00.22\"M,00.00\"R\n1131835764,B,055,16:49:24,11/12/05,SW,08MPH,000K,460F,064F,095%,29.30F,00.15\"D,00.23\"M,00.00\"R\n1131835770,P,055,16:49:30,11/12/05,SW,08MPH,000K,460F,064F,095%,29.30F,00.15\"D,00.23\"M,00.00\"R\n1131835776,O,055,16:49:36,11/12/05,WSW,11MPH,000K,460F,064F,095%,29.30F,00.15\"D,00.23\"M,00.00\"R\n1131835782,B,055,16:49:42,11/12/05,SW,09MPH,000K,460F,064F,095%,29.30F,00.15\"D,00.23\"M,00.00\"R\n1131835788,J,055,16:49:48,11/12/05,SW,10MPH,000K,460F,064F,095%,29.30F,00.16\"D,00.24\"M,00.00\"R\n1131835794,L,055,16:49:54,11/12/05,SW,10MPH,000K,460F,064F,095%,29.30F,00.16\"D,00.24\"M,00.00\"R\n1131835800,T,055,16:50:00,11/12/05,SW,11MPH,000K,460F,064F,095%,29.29F,00.16\"D,00.24\"M,00.00\"R\n1131835806,Y,055,16:50:06,11/12/05,SW,10MPH,000K,460F,064F,095%,29.29F,00.17\"D,00.25\"M,00.00\"R\n1131835812,A,055,16:50:12,11/12/05,SW,10MPH,000K,460F,064F,095%,29.29F,00.17\"D,00.25\"M,00.00\"R\n1131835818,O,055,16:50:18,11/12/05,SW,09MPH,000K,460F,064F,095%,29.29F,00.18\"D,00.26\"M,00.00\"R\n1131835824,Q,055,16:50:24,11/12/05,SSW,07MPH,000K,460F,064F,095%,29.29F,00.18\"D,00.26\"M,00.00\"R\n1131835830,V,055,16:50:30,11/12/05,SSW,06MPH,000K,460F,064F,095%,29.29F,00.19\"D,00.27\"M,00.00\"R\n1131835836,U,055,16:50:36,11/12/05,SW,05MPH,000K,460F,064F,095%,29.29F,00.19\"D,00.27\"M,00.00\"R\n1131835842,Y,055,16:50:42,11/12/05,WSW,05MPH,000K,460F,064F,095%,29.28F,00.20\"D,00.28\"M,00.00\"R\n1131835848,O,055,16:50:48,11/12/05,WNW,04MPH,000K,460F,064F,095%,29.28F,00.20\"D,00.28\"M,00.00\"R\n1131835860,E,055,16:51:00,11/12/05,WSW,05MPH,000K,460F,064F,095%,29.28F,00.21\"D,00.29\"M,00.00\"R\n1131835866,G,055,16:51:06,11/12/05,W,03MPH,000K,460F,064F,095%,29.28F,00.22\"D,00.30\"M,00.00\"R\n1131835872,I,055,16:51:12,11/12/05,NW,03MPH,000K,460F,064F,096%,29.28F,00.22\"D,00.30\"M,00.00\"R\n1131835878,Q,055,16:51:18,11/12/05,NNW,03MPH,000K,460F,064F,096%,29.28F,00.22\"D,00.30\"M,00.00\"R\n1131835884,B,055,16:51:24,11/12/05,NNW,05MPH,000K,460F,064F,096%,29.28F,00.23\"D,00.31\"M,00.00\"R\n1131835890,U,055,16:51:30,11/12/05,NW,05MPH,000K,460F,064F,096%,29.28F,00.24\"D,00.32\"M,00.00\"R\n1131835896,V,055,16:51:36,11/12/05,NNW,07MPH,000K,460F,064F,096%,29.28F,00.24\"D,00.32\"M,00.00\"R\n1131835902,E,055,16:51:42,11/12/05,NW,07MPH,000K,460F,063F,096%,29.28F,00.25\"D,00.33\"M,00.00\"R\n1131835908,M,055,16:51:48,11/12/05,NW,06MPH,000K,460F,063F,096%,29.28F,00.26\"D,00.34\"M,00.00\"R\n1131835914,O,055,16:51:54,11/12/05,NW,07MPH,000K,460F,063F,095%,29.28F,00.26\"D,00.34\"M,00.00\"R\n1131835920,X,055,16:52:00,11/12/05,NNW,08MPH,000K,460F,063F,095%,29.28F,00.26\"D,00.34\"M,00.00\"R\n1131835926,V,055,16:52:06,11/12/05,NW,08MPH,000K,460F,063F,095%,29.28F,00.27\"D,00.35\"M,00.00\"R\n1131835932,P,055,16:52:12,11/12/05,WNW,09MPH,000K,460F,063F,095%,29.28F,00.27\"D,00.35\"M,00.00\"R\n1131835938,R,055,16:52:18,11/12/05,NW,13MPH,000K,460F,063F,095%,29.29F,00.28\"D,00.36\"M,00.00\"R\n1131835944,Z,055,16:52:24,11/12/05,NW,13MPH,000K,460F,063F,095%,29.29F,00.28\"D,00.36\"M,00.00\"R\n1131835950,H,055,16:52:30,11/12/05,WNW,16MPH,000K,460F,063F,095%,29.29F,00.28\"D,00.36\"M,00.00\"R\n1131835956,V,055,16:52:36,11/12/05,WNW,19MPH,000K,460F,063F,095%,29.29F,00.28\"D,00.36\"M,00.00\"R\n1131835962,A,055,16:52:42,11/12/05,WNW,20MPH,000K,460F,063F,095%,29.30F,00.28\"D,00.36\"M,00.00\"R\n1131835968,O,055,16:52:48,11/12/05,WNW,21MPH,000K,460F,063F,095%,29.30F,00.29\"D,00.37\"M,00.00\"R\n1131835974,S,055,16:52:54,11/12/05,W,23MPH,000K,460F,063F,095%,29.30F,00.29\"D,00.37\"M,00.00\"R\n1131835980,G,055,16:53:00,11/12/05,WNW,22MPH,000K,460F,063F,095%,29.30F,00.29\"D,00.37\"M,00.00\"R\n1131835986,I,055,16:53:06,11/12/05,W,25MPH,000K,460F,063F,095%,29.31F,00.29\"D,00.37\"M,00.00\"R\n1131835992,Q,055,16:53:12,11/12/05,W,24MPH,000K,460F,063F,095%,29.31F,00.30\"D,00.38\"M,00.00\"R\n1131835998,S,055,16:53:18,11/12/05,W,24MPH,000K,460F,063F,095%,29.31F,00.30\"D,00.38\"M,00.00\"R\n1131836004,A,055,16:53:24,11/12/05,W,24MPH,001K,460F,063F,095%,29.31F,00.30\"D,00.38\"M,00.00\"R\n1131836010,Z,055,16:53:30,11/12/05,WNW,30MPH,001K,460F,063F,095%,29.31F,00.30\"D,00.38\"M,00.00\"R\n1131836016,H,055,16:53:36,11/12/05,WNW,30MPH,001K,460F,062F,095%,29.31F,00.30\"D,00.38\"M,00.00\"R\n1131836022,J,055,16:53:42,11/12/05,W,31MPH,001K,460F,062F,095%,29.32F,00.30\"D,00.38\"M,00.00\"R\n1131836028,D,055,16:53:48,11/12/05,WNW,30MPH,001K,460F,062F,095%,29.32F,00.30\"D,00.38\"M,00.00\"R\n1131836034,C,055,16:53:54,11/12/05,WNW,29MPH,001K,460F,062F,095%,29.32F,00.30\"D,00.38\"M,00.00\"R\n1131836040,N,055,16:54:00,11/12/05,W,23MPH,002K,460F,062F,095%,29.32F,00.30\"D,00.38\"M,00.00\"R\n1131836046,S,055,16:54:06,11/12/05,W,22MPH,002K,460F,061F,095%,29.32F,00.30\"D,00.38\"M,00.00\"R\n1131836052,G,055,16:54:12,11/12/05,W,21MPH,002K,460F,061F,095%,29.31F,00.30\"D,00.38\"M,00.00\"R\n1131836058,L,055,16:54:18,11/12/05,W,19MPH,003K,460F,061F,095%,29.31F,00.30\"D,00.38\"M,00.00\"R\n1131836064,T,055,16:54:24,11/12/05,W,20MPH,003K,460F,061F,095%,29.31F,00.30\"D,00.38\"M,00.00\"R\n1131836070,Y,055,16:54:30,11/12/05,W,20MPH,003K,460F,061F,095%,29.31F,00.31\"D,00.39\"M,00.00\"R\n1131836076,J,055,16:54:36,11/12/05,WNW,16MPH,003K,460F,061F,095%,29.31F,00.31\"D,00.39\"M,00.00\"R\n1131836082,O,055,16:54:42,11/12/05,WNW,16MPH,004K,460F,061F,095%,29.31F,00.31\"D,00.39\"M,00.00\"R\n1131836088,F,055,16:54:48,11/12/05,WNW,18MPH,004K,460F,061F,095%,29.30F,00.31\"D,00.39\"M,00.00\"R\n1131836094,H,055,16:54:54,11/12/05,WNW,16MPH,004K,460F,061F,095%,29.30F,00.31\"D,00.39\"M,00.00\"R\n1131836100,P,055,16:55:00,11/12/05,W,13MPH,004K,460F,061F,095%,29.30F,00.31\"D,00.39\"M,00.00\"R\n1131836106,O,055,16:55:06,11/12/05,W,11MPH,004K,460F,061F,095%,29.29F,00.31\"D,00.39\"M,00.00\"R\n1131836112,W,055,16:55:12,11/12/05,WNW,08MPH,004K,460F,061F,095%,29.29F,00.31\"D,00.39\"M,00.00\"R\n1131836118,Y,055,16:55:18,11/12/05,NNW,10MPH,004K,460F,061F,096%,29.28F,00.31\"D,00.39\"M,00.00\"R\n1131836124,P,055,16:55:24,11/12/05,NW,10MPH,004K,460F,061F,096%,29.28F,00.31\"D,00.39\"M,00.00\"R\n1131836130,X,055,16:55:30,11/12/05,NW,08MPH,004K,460F,061F,096%,29.28F,00.31\"D,00.39\"M,00.00\"R\n1131836136,I,055,16:55:36,11/12/05,N,07MPH,004K,460F,061F,096%,29.27F,00.31\"D,00.39\"M,00.00\"R\n1131836142,N,055,16:55:42,11/12/05,NW,09MPH,003K,460F,061F,096%,29.27F,00.31\"D,00.39\"M,00.00\"R\n1131836148,V,055,16:55:48,11/12/05,WNW,06MPH,003K,460F,061F,096%,29.27F,00.31\"D,00.39\"M,00.00\"R\n1131836154,G,055,16:55:54,11/12/05,SW,06MPH,003K,460F,061F,096%,29.27F,00.31\"D,00.39\"M,00.00\"R\n1131836160,L,055,16:56:00,11/12/05,S,03MPH,003K,460F,061F,096%,29.27F,00.31\"D,00.39\"M,00.00\"R\n1131836166,T,055,16:56:06,11/12/05,SW,05MPH,003K,460F,061F,096%,29.27F,00.31\"D,00.39\"M,00.00\"R\n1131836172,Y,055,16:56:12,11/12/05,SSW,06MPH,003K,460F,061F,096%,29.27F,00.31\"D,00.39\"M,00.00\"R\n1131836178,D,055,16:56:18,11/12/05,SW,06MPH,003K,460F,061F,096%,29.28F,00.31\"D,00.39\"M,00.00\"R\n1131836184,I,055,16:56:24,11/12/05,SSW,08MPH,002K,460F,061F,096%,29.28F,00.31\"D,00.39\"M,00.00\"R\n1131836190,K,055,16:56:30,11/12/05,SSW,10MPH,002K,460F,060F,096%,29.28F,00.31\"D,00.39\"M,00.00\"R\n1131836196,P,055,16:56:36,11/12/05,SW,13MPH,002K,460F,060F,096%,29.29F,00.31\"D,00.39\"M,00.00\"R\n1131836202,U,055,16:56:42,11/12/05,SSW,13MPH,002K,460F,060F,096%,29.29F,00.31\"D,00.39\"M,00.00\"R\n1131836208,Z,055,16:56:48,11/12/05,SSW,11MPH,002K,460F,060F,096%,29.29F,00.31\"D,00.39\"M,00.00\"R\n1131836214,H,055,16:56:54,11/12/05,SSW,10MPH,002K,460F,060F,096%,29.29F,00.31\"D,00.39\"M,00.00\"R\n1131836220,M,055,16:57:00,11/12/05,S,11MPH,002K,460F,060F,096%,29.28F,00.31\"D,00.39\"M,00.00\"R\n1131836226,Q,055,16:57:06,11/12/05,S,12MPH,002K,460F,060F,096%,29.27F,00.31\"D,00.39\"M,00.00\"R\n1131836232,Y,055,16:57:12,11/12/05,SE,08MPH,002K,460F,060F,096%,29.26F,00.31\"D,00.39\"M,00.00\"R\n1131836238,J,055,16:57:18,11/12/05,S,07MPH,002K,460F,060F,096%,29.26F,00.31\"D,00.39\"M,00.00\"R\n1131836244,R,055,16:57:24,11/12/05,SW,09MPH,002K,460F,060F,096%,29.28F,00.31\"D,00.39\"M,00.00\"R\n1131836250,F,055,16:57:30,11/12/05,SW,08MPH,001K,460F,060F,097%,29.28F,00.31\"D,00.39\"M,00.00\"R\n1131836256,Q,055,16:57:36,11/12/05,SSW,08MPH,001K,460F,060F,097%,29.27F,00.31\"D,00.39\"M,00.00\"R\n1131836262,Y,055,16:57:42,11/12/05,S,12MPH,001K,460F,060F,097%,29.27F,00.31\"D,00.39\"M,00.00\"R\n1131836268,S,055,16:57:48,11/12/05,S,11MPH,001K,460F,060F,097%,29.26F,00.31\"D,00.39\"M,00.00\"R\n1131836274,R,055,16:57:54,11/12/05,SW,16MPH,001K,460F,061F,097%,29.27F,00.31\"D,00.39\"M,00.00\"R\n1131836280,C,055,16:58:00,11/12/05,SW,16MPH,001K,460F,061F,097%,29.28F,00.31\"D,00.39\"M,00.00\"R\n1131836286,E,055,16:58:06,11/12/05,W,16MPH,001K,460F,061F,097%,29.27F,00.31\"D,00.39\"M,00.00\"R\n1131836292,R,055,16:58:12,11/12/05,W,19MPH,001K,460F,060F,097%,29.28F,00.31\"D,00.39\"M,00.00\"R\n1131836298,W,055,16:58:18,11/12/05,W,18MPH,001K,460F,060F,097%,29.29F,00.31\"D,00.39\"M,00.00\"R\n1131836304,K,055,16:58:24,11/12/05,WNW,10MPH,001K,460F,060F,097%,29.29F,00.31\"D,00.39\"M,00.00\"R\n1131836310,K,055,16:58:30,11/12/05,SW,10MPH,001K,460F,061F,097%,29.29F,00.31\"D,00.39\"M,00.00\"R\n1131836316,S,055,16:58:36,11/12/05,WSW,13MPH,001K,460F,061F,098%,29.29F,00.31\"D,00.39\"M,00.00\"R\n1131836322,A,055,16:58:42,11/12/05,W,12MPH,001K,460F,061F,098%,29.29F,00.31\"D,00.39\"M,00.00\"R\n1131836328,I,055,16:58:48,11/12/05,W,14MPH,001K,460F,060F,098%,29.29F,00.31\"D,00.39\"M,00.00\"R\n1131836400,S,055,17:00:00,11/12/05,W,15MPH,001K,460F,060F,098%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836410,G,055,17:00:10,11/12/05,WSW,16MPH,001K,460F,060F,098%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836420,N,055,17:00:20,11/12/05,SW,11MPH,001K,460F,060F,098%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836430,B,055,17:00:30,11/12/05,WSW,13MPH,001K,460F,060F,098%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836440,G,055,17:00:40,11/12/05,WSW,19MPH,001K,460F,061F,098%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836450,L,055,17:00:50,11/12/05,WSW,20MPH,001K,460F,061F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836460,Q,055,17:01:00,11/12/05,W,17MPH,001K,460F,061F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836466,B,055,17:01:06,11/12/05,SW,14MPH,001K,460F,061F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836472,D,055,17:01:12,11/12/05,SW,24MPH,000K,460F,061F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836478,O,055,17:01:18,11/12/05,SW,22MPH,000K,460F,061F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836484,T,055,17:01:24,11/12/05,SW,18MPH,000K,460F,061F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836490,Y,055,17:01:30,11/12/05,WNW,18MPH,000K,460F,061F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836496,G,055,17:01:36,11/12/05,SW,11MPH,000K,460F,061F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836502,L,055,17:01:42,11/12/05,W,13MPH,000K,460F,061F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836508,W,055,17:01:48,11/12/05,SW,16MPH,000K,460F,061F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836514,B,055,17:01:54,11/12/05,WSW,16MPH,000K,460F,061F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836520,G,055,17:02:00,11/12/05,WSW,13MPH,000K,460F,061F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836526,L,055,17:02:06,11/12/05,SW,17MPH,000K,460F,061F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836532,W,055,17:02:12,11/12/05,WSW,13MPH,000K,460F,061F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836538,E,055,17:02:18,11/12/05,WSW,24MPH,000K,460F,061F,099%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836544,M,055,17:02:24,11/12/05,WSW,29MPH,000K,460F,062F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836550,X,055,17:02:30,11/12/05,WSW,24MPH,000K,460F,062F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836556,I,055,17:02:36,11/12/05,SW,28MPH,000K,460F,062F,100%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836562,N,055,17:02:42,11/12/05,WSW,30MPH,000K,460F,062F,100%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836568,E,055,17:02:48,11/12/05,W,21MPH,000K,460F,062F,100%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836574,J,055,17:02:54,11/12/05,WSW,21MPH,000K,460F,062F,100%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836580,U,055,17:03:00,11/12/05,WSW,28MPH,000K,460F,062F,100%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836586,T,055,17:03:06,11/12/05,W,24MPH,000K,460F,062F,100%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836592,E,055,17:03:12,11/12/05,W,21MPH,000K,460F,062F,100%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836598,G,055,17:03:18,11/12/05,WSW,18MPH,000K,460F,062F,099%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836604,O,055,17:03:24,11/12/05,W,17MPH,000K,460F,062F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836610,T,055,17:03:30,11/12/05,WSW,16MPH,000K,460F,062F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836616,E,055,17:03:36,11/12/05,SW,16MPH,000K,460F,062F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836622,D,055,17:03:42,11/12/05,WSW,15MPH,000K,460F,062F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836628,U,055,17:03:48,11/12/05,SW,14MPH,000K,460F,062F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836634,W,055,17:03:54,11/12/05,SSW,16MPH,000K,460F,062F,099%,29.30F,00.32\"D,00.40\"M,00.60\"R\n1131836640,E,055,17:04:00,11/12/05,SSW,19MPH,000K,460F,063F,099%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836646,J,055,17:04:06,11/12/05,SW,25MPH,000K,460F,063F,099%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836652,R,055,17:04:12,11/12/05,SSW,25MPH,000K,460F,063F,099%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836658,W,055,17:04:18,11/12/05,SSW,26MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836664,E,055,17:04:24,11/12/05,SW,32MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836670,G,055,17:04:30,11/12/05,SW,34MPH,000K,460F,063F,098%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836676,O,055,17:04:36,11/12/05,SW,27MPH,000K,460F,063F,099%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836682,T,055,17:04:42,11/12/05,SSW,25MPH,000K,460F,063F,099%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836688,E,055,17:04:48,11/12/05,SSW,23MPH,000K,460F,063F,098%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836694,G,055,17:04:54,11/12/05,SSW,25MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836700,O,055,17:05:00,11/12/05,SW,23MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836706,Q,055,17:05:06,11/12/05,SSW,21MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836712,Y,055,17:05:12,11/12/05,SSW,25MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836718,D,055,17:05:18,11/12/05,SSW,25MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836724,O,055,17:05:24,11/12/05,SSW,20MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836730,Q,055,17:05:30,11/12/05,SSW,26MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836736,B,055,17:05:36,11/12/05,SSW,22MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836742,G,055,17:05:42,11/12/05,SSW,19MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836748,R,055,17:05:48,11/12/05,SSW,27MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836754,Z,055,17:05:54,11/12/05,SSW,25MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836760,K,055,17:06:00,11/12/05,SSW,23MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836766,M,055,17:06:06,11/12/05,SW,21MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836772,R,055,17:06:12,11/12/05,SSW,23MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836778,Z,055,17:06:18,11/12/05,SSW,18MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836784,Y,055,17:06:24,11/12/05,SW,20MPH,000K,460F,063F,098%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836790,A,055,17:06:30,11/12/05,SW,19MPH,000K,460F,063F,098%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836796,F,055,17:06:36,11/12/05,SSW,18MPH,000K,460F,063F,098%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836802,E,055,17:06:42,11/12/05,SSW,21MPH,000K,460F,063F,097%,29.29F,00.32\"D,00.40\"M,00.60\"R\n1131836808,J,055,17:06:48,11/12/05,SW,16MPH,000K,460F,063F,097%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836814,L,055,17:06:54,11/12/05,SSW,18MPH,000K,460F,063F,097%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836820,N,055,17:07:00,11/12/05,SSW,27MPH,000K,460F,064F,097%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836826,P,055,17:07:06,11/12/05,SSW,26MPH,000K,460F,064F,097%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836832,O,055,17:07:12,11/12/05,SW,21MPH,000K,460F,064F,097%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836838,W,055,17:07:18,11/12/05,SSW,27MPH,000K,460F,064F,097%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836844,Y,055,17:07:24,11/12/05,SSW,29MPH,000K,460F,064F,097%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836850,A,055,17:07:30,11/12/05,SSW,23MPH,000K,460F,064F,097%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836856,O,055,17:07:36,11/12/05,SSW,21MPH,000K,460F,064F,097%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836862,T,055,17:07:42,11/12/05,SSW,21MPH,000K,460F,064F,097%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836868,B,055,17:07:48,11/12/05,S,24MPH,000K,460F,064F,097%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836874,D,055,17:07:54,11/12/05,SSW,26MPH,000K,460F,064F,097%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836880,I,055,17:08:00,11/12/05,SW,21MPH,000K,460F,064F,097%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836886,K,055,17:08:06,11/12/05,SW,20MPH,000K,460F,064F,097%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836892,J,055,17:08:12,11/12/05,SW,21MPH,000K,460F,064F,097%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836898,O,055,17:08:18,11/12/05,SSW,23MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836904,W,055,17:08:24,11/12/05,S,19MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836910,Y,055,17:08:30,11/12/05,SSW,20MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836916,D,055,17:08:36,11/12/05,SSW,23MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836922,Z,055,17:08:42,11/12/05,SSW,21MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836928,H,055,17:08:48,11/12/05,SSW,22MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836934,G,055,17:08:54,11/12/05,SSW,18MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836940,Q,055,17:09:00,11/12/05,SSW,15MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836946,P,055,17:09:06,11/12/05,SSW,24MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836952,X,055,17:09:12,11/12/05,S,18MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836958,C,055,17:09:18,11/12/05,SSW,16MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836964,K,055,17:09:24,11/12/05,SSW,20MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836970,P,055,17:09:30,11/12/05,SSW,18MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836976,R,055,17:09:36,11/12/05,SSW,22MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836982,W,055,17:09:42,11/12/05,SSW,23MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836988,V,055,17:09:48,11/12/05,SSW,18MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131836994,D,055,17:09:54,11/12/05,SSW,26MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837000,F,055,17:10:00,11/12/05,SW,24MPH,000K,460F,064F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837006,N,055,17:10:06,11/12/05,SSW,24MPH,000K,460F,065F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837012,S,055,17:10:12,11/12/05,SSW,26MPH,000K,460F,065F,096%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837018,A,055,17:10:18,11/12/05,SSW,19MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837024,F,055,17:10:24,11/12/05,SW,20MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837030,K,055,17:10:30,11/12/05,SSW,20MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837036,M,055,17:10:36,11/12/05,SSW,24MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837042,O,055,17:10:42,11/12/05,SSW,22MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837048,Q,055,17:10:48,11/12/05,SW,23MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837054,S,055,17:10:54,11/12/05,SSW,23MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837060,O,055,17:11:00,11/12/05,SSW,18MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837066,Q,055,17:11:06,11/12/05,SSW,23MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837072,Y,055,17:11:12,11/12/05,SSW,20MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837078,A,055,17:11:18,11/12/05,SSW,21MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837084,C,055,17:11:24,11/12/05,SW,23MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837090,E,055,17:11:30,11/12/05,SSW,24MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837096,J,055,17:11:36,11/12/05,SSW,16MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837102,I,055,17:11:42,11/12/05,SSW,23MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837108,T,055,17:11:48,11/12/05,SSW,24MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837120,Y,055,17:12:00,11/12/05,SSW,24MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837126,G,055,17:12:06,11/12/05,S,22MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837132,O,055,17:12:12,11/12/05,SSW,22MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837138,K,055,17:12:18,11/12/05,SSW,25MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837144,S,055,17:12:24,11/12/05,SW,29MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837150,X,055,17:12:30,11/12/05,SSW,27MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837156,F,055,17:12:36,11/12/05,SSW,24MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837162,E,055,17:12:42,11/12/05,SSW,28MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837168,D,055,17:12:48,11/12/05,SSW,25MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837174,I,055,17:12:54,11/12/05,SSW,22MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837180,N,055,17:13:00,11/12/05,SSW,24MPH,000K,460F,065F,095%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837186,V,055,17:13:06,11/12/05,SW,19MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837192,X,055,17:13:12,11/12/05,SSW,29MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837198,C,055,17:13:18,11/12/05,SSW,26MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837204,E,055,17:13:24,11/12/05,SSW,26MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837210,P,055,17:13:30,11/12/05,SW,28MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837216,O,055,17:13:36,11/12/05,SSW,20MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837222,Z,055,17:13:42,11/12/05,SSW,23MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837228,N,055,17:13:48,11/12/05,SSW,28MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837234,M,055,17:13:54,11/12/05,SSW,23MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837240,U,055,17:14:00,11/12/05,SSW,27MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837246,Q,055,17:14:06,11/12/05,SSW,20MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837252,V,055,17:14:12,11/12/05,SSW,23MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837258,X,055,17:14:18,11/12/05,SSW,21MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837264,Z,055,17:14:24,11/12/05,SSW,23MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837270,H,055,17:14:30,11/12/05,SSW,20MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837276,J,055,17:14:36,11/12/05,SSW,23MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837282,L,055,17:14:42,11/12/05,SSW,23MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837288,T,055,17:14:48,11/12/05,SSW,24MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837294,V,055,17:14:54,11/12/05,SSW,22MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837300,A,055,17:15:00,11/12/05,SSW,17MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837306,Z,055,17:15:06,11/12/05,SSW,23MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837312,E,055,17:15:12,11/12/05,WSW,22MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837318,G,055,17:15:18,11/12/05,SSW,23MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837324,L,055,17:15:24,11/12/05,SW,24MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837330,K,055,17:15:30,11/12/05,SW,18MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837336,P,055,17:15:36,11/12/05,SW,22MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837342,O,055,17:15:42,11/12/05,SW,26MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837348,W,055,17:15:48,11/12/05,SSW,24MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n1131837354,S,055,17:15:54,11/12/05,SW,23MPH,000K,460F,065F,094%,29.28F,00.32\"D,00.40\"M,00.60\"R\n"
  },
  {
    "path": "htdocs/plotting/snet/data/SCHI4_060622.txt",
    "content": "1150984800,P,053,09:00:00,06/22/06,N,06MPH,012K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150984806,Y,053,09:00:06,06/22/06,NNW,06MPH,012K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150984812,V,053,09:00:12,06/22/06,NNE,07MPH,012K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150984818,E,053,09:00:18,06/22/06,N,08MPH,012K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150984824,K,053,09:00:24,06/22/06,NNE,06MPH,012K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150984830,Q,053,09:00:30,06/22/06,N,08MPH,012K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150984836,W,053,09:00:36,06/22/06,NNE,09MPH,012K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150984842,F,053,09:00:42,06/22/06,NE,09MPH,011K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150984848,W,053,09:00:48,06/22/06,N,07MPH,011K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150984854,R,053,09:00:54,06/22/06,N,10MPH,011K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150984860,A,053,09:01:00,06/22/06,N,10MPH,011K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150984866,J,053,09:01:06,06/22/06,NNE,09MPH,011K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150984872,M,053,09:01:12,06/22/06,N,08MPH,011K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150984878,R,053,09:01:18,06/22/06,NNW,08MPH,011K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150984884,R,053,09:01:24,06/22/06,NNE,06MPH,011K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150984890,X,053,09:01:30,06/22/06,N,08MPH,011K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150984896,G,053,09:01:36,06/22/06,N,09MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984902,F,053,09:01:42,06/22/06,NNW,09MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984908,U,053,09:01:48,06/22/06,N,10MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984914,A,053,09:01:54,06/22/06,N,10MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984920,A,053,09:02:00,06/22/06,N,08MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984926,D,053,09:02:06,06/22/06,N,07MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984932,G,053,09:02:12,06/22/06,NNE,08MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984938,M,053,09:02:18,06/22/06,N,09MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984944,P,053,09:02:24,06/22/06,N,08MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984950,B,053,09:02:30,06/22/06,NNE,08MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984956,E,053,09:02:36,06/22/06,NE,07MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984962,N,053,09:02:42,06/22/06,N,09MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984968,T,053,09:02:48,06/22/06,NE,09MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984974,Z,053,09:02:54,06/22/06,NNE,10MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984980,L,053,09:03:00,06/22/06,N,07MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984986,A,053,09:03:06,06/22/06,N,09MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984992,X,053,09:03:12,06/22/06,NNE,08MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150984998,D,053,09:03:18,06/22/06,NNW,08MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150985004,J,053,09:03:24,06/22/06,NNE,10MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985010,Y,053,09:03:30,06/22/06,N,10MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150985016,E,053,09:03:36,06/22/06,NNE,12MPH,011K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150985022,N,053,09:03:42,06/22/06,N,09MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985028,N,053,09:03:48,06/22/06,NE,11MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985034,W,053,09:03:54,06/22/06,NE,11MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985040,I,053,09:04:00,06/22/06,NNW,08MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985046,I,053,09:04:06,06/22/06,N,13MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985052,L,053,09:04:12,06/22/06,N,11MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985058,R,053,09:04:18,06/22/06,N,08MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985064,A,053,09:04:24,06/22/06,NNE,14MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985070,G,053,09:04:30,06/22/06,NNE,14MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985076,G,053,09:04:36,06/22/06,N,10MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985082,S,053,09:04:42,06/22/06,NE,11MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985088,Y,053,09:04:48,06/22/06,NNE,09MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985094,H,053,09:04:54,06/22/06,NNE,07MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985100,N,053,09:05:00,06/22/06,NNW,11MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985106,W,053,09:05:06,06/22/06,NE,11MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985112,F,053,09:05:12,06/22/06,N,10MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985118,C,053,09:05:18,06/22/06,NNE,12MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985124,I,053,09:05:24,06/22/06,N,09MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985130,U,053,09:05:30,06/22/06,N,13MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985136,T,053,09:05:36,06/22/06,N,10MPH,011K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985142,W,053,09:05:42,06/22/06,NNW,10MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985148,I,053,09:05:48,06/22/06,N,11MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985154,O,053,09:05:54,06/22/06,NNE,09MPH,011K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150985160,U,053,09:06:00,06/22/06,NNW,09MPH,011K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985166,J,053,09:06:06,06/22/06,NE,09MPH,011K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985172,D,053,09:06:12,06/22/06,NNE,10MPH,011K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985178,J,053,09:06:18,06/22/06,N,11MPH,011K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985184,V,053,09:06:24,06/22/06,N,08MPH,011K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985190,Y,053,09:06:30,06/22/06,NNE,12MPH,011K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985196,K,053,09:06:36,06/22/06,N,10MPH,011K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985202,Q,053,09:06:42,06/22/06,N,14MPH,011K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985208,M,053,09:06:48,06/22/06,N,11MPH,011K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985214,S,053,09:06:54,06/22/06,N,12MPH,011K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985220,M,053,09:07:00,06/22/06,N,11MPH,012K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985226,S,053,09:07:06,06/22/06,NNE,15MPH,012K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985232,S,053,09:07:12,06/22/06,N,14MPH,012K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985238,J,053,09:07:18,06/22/06,NNE,11MPH,012K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985244,U,053,09:07:24,06/22/06,NNE,13MPH,012K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985250,O,053,09:07:30,06/22/06,NE,13MPH,012K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985256,Q,053,09:07:36,06/22/06,NNE,13MPH,012K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985262,P,053,09:07:42,06/22/06,N,11MPH,012K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985268,S,053,09:07:48,06/22/06,NNE,12MPH,012K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985274,S,053,09:07:54,06/22/06,NNW,11MPH,012K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985280,P,053,09:08:00,06/22/06,NE,08MPH,012K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985286,S,053,09:08:06,06/22/06,NE,10MPH,012K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985292,S,053,09:08:12,06/22/06,N,10MPH,012K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985298,H,053,09:08:18,06/22/06,N,10MPH,012K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150985304,K,053,09:08:24,06/22/06,N,11MPH,012K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985310,Y,053,09:08:30,06/22/06,N,09MPH,012K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150985316,A,053,09:08:36,06/22/06,N,15MPH,012K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150985322,H,053,09:08:42,06/22/06,N,14MPH,012K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150985328,N,053,09:08:48,06/22/06,NNE,14MPH,012K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150985334,T,053,09:08:54,06/22/06,NNE,11MPH,012K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150985340,H,053,09:09:00,06/22/06,NW,08MPH,012K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150985346,T,053,09:09:06,06/22/06,N,16MPH,012K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150985352,Z,053,09:09:12,06/22/06,N,10MPH,012K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150985358,I,053,09:09:18,06/22/06,NNW,09MPH,012K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150985364,L,053,09:09:24,06/22/06,NE,08MPH,012K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150985370,U,053,09:09:30,06/22/06,NNE,11MPH,012K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150985376,D,053,09:09:36,06/22/06,NNW,09MPH,012K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150985382,A,053,09:09:42,06/22/06,N,12MPH,012K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150985388,G,053,09:09:48,06/22/06,NNW,11MPH,012K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150985394,P,053,09:09:54,06/22/06,NNE,10MPH,012K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150985400,J,053,09:10:00,06/22/06,NNE,16MPH,012K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150985406,H,053,09:10:06,06/22/06,NNE,19MPH,012K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150985412,N,053,09:10:12,06/22/06,N,11MPH,012K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150985418,W,053,09:10:18,06/22/06,NNE,12MPH,012K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150985424,F,053,09:10:24,06/22/06,NE,17MPH,013K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150985430,I,053,09:10:30,06/22/06,NNE,11MPH,013K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150985436,U,053,09:10:36,06/22/06,NE,10MPH,013K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150985442,X,053,09:10:42,06/22/06,N,10MPH,013K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150985448,D,053,09:10:48,06/22/06,N,08MPH,013K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150985454,J,053,09:10:54,06/22/06,NNE,12MPH,013K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150985460,J,053,09:11:00,06/22/06,NNE,19MPH,013K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150985466,P,053,09:11:06,06/22/06,NNE,15MPH,013K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150985472,Y,053,09:11:12,06/22/06,NNE,14MPH,013K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150985478,K,053,09:11:18,06/22/06,NNE,13MPH,013K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150985484,Y,053,09:11:24,06/22/06,N,11MPH,013K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150985490,Y,053,09:11:30,06/22/06,NNE,15MPH,013K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150985496,B,053,09:11:36,06/22/06,NNW,21MPH,013K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150985502,G,053,09:11:42,06/22/06,N,14MPH,013K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150985508,T,053,09:11:48,06/22/06,N,15MPH,013K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150985514,Z,053,09:11:54,06/22/06,NNE,13MPH,013K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150985520,Z,053,09:12:00,06/22/06,N,17MPH,013K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150985526,C,053,09:12:06,06/22/06,N,10MPH,013K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985532,U,053,09:12:12,06/22/06,NE,11MPH,013K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985538,U,053,09:12:18,06/22/06,N,19MPH,013K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985544,A,053,09:12:24,06/22/06,NNE,15MPH,013K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985550,G,053,09:12:30,06/22/06,NNE,18MPH,013K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985556,P,053,09:12:36,06/22/06,N,17MPH,013K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985562,A,053,09:12:42,06/22/06,N,18MPH,013K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985568,A,053,09:12:48,06/22/06,N,13MPH,013K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985574,L,053,09:12:54,06/22/06,NE,14MPH,013K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985580,F,053,09:13:00,06/22/06,N,19MPH,013K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985586,O,053,09:13:06,06/22/06,N,18MPH,014K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985592,U,053,09:13:12,06/22/06,NNE,13MPH,014K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985598,U,053,09:13:18,06/22/06,N,16MPH,014K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985604,A,053,09:13:24,06/22/06,NE,16MPH,014K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985610,Y,053,09:13:30,06/22/06,NNE,16MPH,014K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985616,S,053,09:13:36,06/22/06,N,17MPH,014K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985622,X,053,09:13:42,06/22/06,NE,11MPH,014K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985628,G,053,09:13:48,06/22/06,N,15MPH,014K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985634,J,053,09:13:54,06/22/06,N,17MPH,014K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985640,V,053,09:14:00,06/22/06,NNE,19MPH,014K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985646,Y,053,09:14:06,06/22/06,N,21MPH,014K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985652,E,053,09:14:12,06/22/06,N,19MPH,014K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985658,H,053,09:14:18,06/22/06,NNW,10MPH,014K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985664,Q,053,09:14:24,06/22/06,NE,10MPH,014K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985670,M,053,09:14:30,06/22/06,NNE,11MPH,014K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985676,P,053,09:14:36,06/22/06,NE,15MPH,014K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985682,B,053,09:14:42,06/22/06,NNE,16MPH,015K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985688,E,053,09:14:48,06/22/06,NNW,26MPH,015K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985694,N,053,09:14:54,06/22/06,NNE,15MPH,015K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985700,W,053,09:15:00,06/22/06,NE,19MPH,015K,460F,067F,098%,30.06F,00.32\"D,00.93\"M,00.00\"R\n1150985706,F,053,09:15:06,06/22/06,NE,11MPH,015K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985712,L,053,09:15:12,06/22/06,NNE,17MPH,015K,460F,067F,098%,30.06F,00.32\"D,00.93\"M,00.00\"R\n1150985718,L,053,09:15:18,06/22/06,NNE,16MPH,015K,460F,067F,098%,30.06F,00.32\"D,00.93\"M,00.00\"R\n1150985724,O,053,09:15:24,06/22/06,NNE,16MPH,015K,460F,067F,098%,30.06F,00.32\"D,00.93\"M,00.00\"R\n1150985730,D,053,09:15:30,06/22/06,N,13MPH,015K,460F,067F,098%,30.06F,00.32\"D,00.93\"M,00.00\"R\n1150985736,D,053,09:15:36,06/22/06,NNE,13MPH,015K,460F,067F,098%,30.06F,00.32\"D,00.93\"M,00.00\"R\n1150985742,P,053,09:15:42,06/22/06,N,16MPH,015K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985748,V,053,09:15:48,06/22/06,NE,16MPH,016K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985754,E,053,09:15:54,06/22/06,NNE,13MPH,016K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985760,Y,053,09:16:00,06/22/06,N,12MPH,016K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985766,K,053,09:16:06,06/22/06,NE,11MPH,016K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985772,H,053,09:16:12,06/22/06,NNE,13MPH,016K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985778,T,053,09:16:18,06/22/06,NNW,13MPH,016K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985784,S,053,09:16:24,06/22/06,N,12MPH,016K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985790,H,053,09:16:30,06/22/06,NNW,12MPH,016K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985796,D,053,09:16:36,06/22/06,NNW,15MPH,016K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985802,J,053,09:16:42,06/22/06,NNW,14MPH,017K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985808,P,053,09:16:48,06/22/06,NE,14MPH,017K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985814,E,053,09:16:54,06/22/06,N,11MPH,017K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985820,B,053,09:17:00,06/22/06,NNE,13MPH,017K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985826,Q,053,09:17:06,06/22/06,N,16MPH,017K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985832,N,053,09:17:12,06/22/06,NNE,11MPH,017K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985838,Z,053,09:17:18,06/22/06,N,15MPH,017K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985844,C,053,09:17:24,06/22/06,N,13MPH,017K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985850,A,053,09:17:30,06/22/06,N,14MPH,018K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985856,U,053,09:17:36,06/22/06,NNE,13MPH,018K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985862,G,053,09:17:42,06/22/06,N,13MPH,018K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985868,A,053,09:17:48,06/22/06,N,10MPH,018K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985874,V,053,09:17:54,06/22/06,N,10MPH,018K,460F,067F,098%,30.07F,00.32\"D,00.93\"M,00.00\"R\n1150985880,P,053,09:18:00,06/22/06,NNE,19MPH,018K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985886,K,053,09:18:06,06/22/06,NNE,17MPH,018K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985892,E,053,09:18:12,06/22/06,NE,14MPH,018K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985898,W,053,09:18:18,06/22/06,N,10MPH,018K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985904,T,053,09:18:24,06/22/06,NNE,08MPH,019K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985910,R,053,09:18:30,06/22/06,NNE,06MPH,019K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985916,L,053,09:18:36,06/22/06,N,06MPH,019K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985922,X,053,09:18:42,06/22/06,NNW,07MPH,019K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985928,D,053,09:18:48,06/22/06,N,05MPH,019K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985934,D,053,09:18:54,06/22/06,NE,05MPH,019K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985940,X,053,09:19:00,06/22/06,NE,08MPH,019K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985946,M,053,09:19:06,06/22/06,NNE,11MPH,019K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985952,M,053,09:19:12,06/22/06,N,11MPH,019K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985958,P,053,09:19:18,06/22/06,N,08MPH,020K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985964,B,053,09:19:24,06/22/06,NW,09MPH,020K,460F,067F,098%,30.08F,00.32\"D,00.93\"M,00.00\"R\n1150985970,V,053,09:19:30,06/22/06,NNE,06MPH,020K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150985976,Y,053,09:19:36,06/22/06,N,05MPH,020K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150985982,G,053,09:19:42,06/22/06,N,07MPH,020K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150985988,G,053,09:19:48,06/22/06,NNE,06MPH,020K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150985994,P,053,09:19:54,06/22/06,N,03MPH,020K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150986000,J,053,09:20:00,06/22/06,NNE,08MPH,020K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150986006,G,053,09:20:06,06/22/06,NNE,08MPH,021K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150986012,S,053,09:20:12,06/22/06,NE,06MPH,021K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150986018,B,053,09:20:18,06/22/06,NE,11MPH,021K,460F,067F,098%,30.09F,00.32\"D,00.93\"M,00.00\"R\n1150986024,Y,053,09:20:24,06/22/06,N,10MPH,021K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150986030,J,053,09:20:30,06/22/06,NE,10MPH,021K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150986036,A,053,09:20:36,06/22/06,NNE,09MPH,021K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150986042,J,053,09:20:42,06/22/06,NE,15MPH,021K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150986048,G,053,09:20:48,06/22/06,NNE,13MPH,022K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150986060,S,053,09:21:00,06/22/06,NNE,11MPH,022K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150986066,P,053,09:21:06,06/22/06,NNW,10MPH,022K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150986072,V,053,09:21:12,06/22/06,NNE,06MPH,022K,460F,067F,098%,30.10F,00.32\"D,00.93\"M,00.00\"R\n1150986078,M,053,09:21:18,06/22/06,N,08MPH,022K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150986084,Y,053,09:21:24,06/22/06,N,10MPH,022K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150986090,H,053,09:21:30,06/22/06,NNE,11MPH,022K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150986096,S,053,09:21:36,06/22/06,N,05MPH,023K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150986102,B,053,09:21:42,06/22/06,NE,05MPH,023K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150986108,K,053,09:21:48,06/22/06,N,08MPH,023K,460F,067F,098%,30.11F,00.32\"D,00.93\"M,00.00\"R\n1150986114,H,053,09:21:54,06/22/06,NNW,06MPH,023K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150986120,N,053,09:22:00,06/22/06,NW,05MPH,023K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150986126,H,053,09:22:06,06/22/06,N,06MPH,023K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150986132,T,053,09:22:12,06/22/06,W,05MPH,023K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150986138,L,053,09:22:18,06/22/06,WNW,04MPH,024K,460F,067F,098%,30.12F,00.32\"D,00.93\"M,00.00\"R\n1150986144,C,053,09:22:24,06/22/06,W,04MPH,024K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150986150,F,053,09:22:30,06/22/06,W,03MPH,024K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150986156,L,053,09:22:36,06/22/06,SW,04MPH,024K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150986162,R,053,09:22:42,06/22/06,S,03MPH,024K,460F,067F,098%,30.13F,00.32\"D,00.93\"M,00.00\"R\n1150986168,M,053,09:22:48,06/22/06,SSW,06MPH,024K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150986174,R,053,09:22:54,06/22/06,SW,08MPH,025K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150986180,C,053,09:23:00,06/22/06,SSW,07MPH,025K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150986186,I,053,09:23:06,06/22/06,SSW,08MPH,025K,460F,067F,098%,30.14F,00.32\"D,00.93\"M,00.00\"R\n1150986192,X,053,09:23:12,06/22/06,SSW,09MPH,025K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986198,D,053,09:23:18,06/22/06,S,08MPH,025K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986204,M,053,09:23:24,06/22/06,SSW,10MPH,025K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986210,D,053,09:23:30,06/22/06,S,11MPH,025K,460F,067F,098%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986216,U,053,09:23:36,06/22/06,SW,12MPH,025K,460F,067F,098%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986222,X,053,09:23:42,06/22/06,SW,10MPH,026K,460F,067F,098%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986228,J,053,09:23:48,06/22/06,WSW,11MPH,026K,460F,067F,098%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986234,J,053,09:23:54,06/22/06,SSW,11MPH,026K,460F,067F,098%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986240,V,053,09:24:00,06/22/06,SW,11MPH,026K,460F,067F,098%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986246,Y,053,09:24:06,06/22/06,SSW,12MPH,026K,460F,067F,098%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986252,H,053,09:24:12,06/22/06,SW,13MPH,026K,460F,067F,098%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986258,T,053,09:24:18,06/22/06,SW,20MPH,026K,460F,067F,098%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986264,T,053,09:24:24,06/22/06,SW,13MPH,026K,460F,067F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986270,Q,053,09:24:30,06/22/06,SSW,14MPH,026K,460F,067F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986276,F,053,09:24:36,06/22/06,SSW,11MPH,026K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986282,K,053,09:24:42,06/22/06,SW,08MPH,026K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986288,T,053,09:24:48,06/22/06,SW,10MPH,025K,460F,068F,098%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986294,W,053,09:24:54,06/22/06,SW,07MPH,025K,460F,068F,098%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986300,F,053,09:25:00,06/22/06,S,06MPH,025K,460F,068F,098%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986306,F,053,09:25:06,06/22/06,SW,10MPH,024K,460F,068F,098%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986312,R,053,09:25:12,06/22/06,S,08MPH,024K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986318,M,053,09:25:18,06/22/06,SW,09MPH,023K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986324,G,053,09:25:24,06/22/06,SSW,10MPH,023K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986330,P,053,09:25:30,06/22/06,SSW,09MPH,022K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986336,B,053,09:25:36,06/22/06,SW,11MPH,021K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986342,D,053,09:25:42,06/22/06,SW,10MPH,019K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986348,J,053,09:25:48,06/22/06,W,16MPH,018K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986354,M,053,09:25:54,06/22/06,SSW,10MPH,016K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986360,B,053,09:26:00,06/22/06,S,11MPH,015K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986366,H,053,09:26:06,06/22/06,SW,15MPH,013K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986372,Q,053,09:26:12,06/22/06,SSW,11MPH,012K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986378,H,053,09:26:18,06/22/06,SSW,11MPH,012K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986384,C,053,09:26:24,06/22/06,SW,14MPH,011K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986390,W,053,09:26:30,06/22/06,WSW,08MPH,010K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986396,L,053,09:26:36,06/22/06,WNW,06MPH,010K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986402,N,053,09:26:42,06/22/06,S,13MPH,009K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986408,S,053,09:26:48,06/22/06,SSW,13MPH,009K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986414,Y,053,09:26:54,06/22/06,SSW,11MPH,009K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986420,B,053,09:27:00,06/22/06,WSW,09MPH,008K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986426,K,053,09:27:06,06/22/06,SW,13MPH,008K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986432,N,053,09:27:12,06/22/06,SSW,09MPH,008K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986438,W,053,09:27:18,06/22/06,S,06MPH,008K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986444,O,053,09:27:24,06/22/06,W,06MPH,008K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986450,R,053,09:27:30,06/22/06,SSW,03MPH,008K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986456,A,053,09:27:36,06/22/06,SSW,10MPH,008K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986462,G,053,09:27:42,06/22/06,SW,09MPH,008K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986468,M,053,09:27:48,06/22/06,SW,14MPH,008K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986474,S,053,09:27:54,06/22/06,SW,13MPH,008K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986480,X,053,09:28:00,06/22/06,SW,10MPH,008K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986486,U,053,09:28:06,06/22/06,SW,07MPH,009K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986492,G,053,09:28:12,06/22/06,WSW,06MPH,009K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986498,M,053,09:28:18,06/22/06,S,08MPH,009K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986504,Y,053,09:28:24,06/22/06,SSW,12MPH,009K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986510,Y,053,09:28:30,06/22/06,SW,09MPH,010K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986516,K,053,09:28:36,06/22/06,SW,05MPH,010K,460F,068F,097%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150986522,Q,053,09:28:42,06/22/06,WSW,05MPH,011K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986528,C,053,09:28:48,06/22/06,S,05MPH,011K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986534,L,053,09:28:54,06/22/06,SSW,06MPH,012K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986540,L,053,09:29:00,06/22/06,SW,04MPH,012K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986546,X,053,09:29:06,06/22/06,SW,04MPH,013K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986552,O,053,09:29:12,06/22/06,SW,03MPH,014K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986558,J,053,09:29:18,06/22/06,WNW,03MPH,014K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986564,L,053,09:29:24,06/22/06,W,05MPH,015K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986570,R,053,09:29:30,06/22/06,SSW,05MPH,016K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986576,J,053,09:29:36,06/22/06,SSW,05MPH,017K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986582,U,053,09:29:42,06/22/06,SSW,03MPH,018K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986588,A,053,09:29:48,06/22/06,W,03MPH,018K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986594,D,053,09:29:54,06/22/06,SSW,03MPH,019K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986600,S,053,09:30:00,06/22/06,SSW,04MPH,020K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986606,P,053,09:30:06,06/22/06,SSE,03MPH,021K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986612,O,053,09:30:12,06/22/06,SSE,01MPH,021K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986618,M,053,09:30:18,06/22/06,E,00MPH,022K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986624,Y,053,09:30:24,06/22/06,ESE,00MPH,023K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986630,H,053,09:30:30,06/22/06,SE,00MPH,023K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986636,T,053,09:30:36,06/22/06,ESE,00MPH,024K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986642,J,053,09:30:42,06/22/06,ESE,00MPH,025K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986648,C,053,09:30:48,06/22/06,E,01MPH,025K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986654,O,053,09:30:54,06/22/06,NE,01MPH,025K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986660,O,053,09:31:00,06/22/06,E,04MPH,026K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986666,O,053,09:31:06,06/22/06,E,03MPH,026K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986672,O,053,09:31:12,06/22/06,ENE,02MPH,027K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986678,P,053,09:31:18,06/22/06,E,01MPH,027K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986684,S,053,09:31:24,06/22/06,NE,02MPH,028K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986690,H,053,09:31:30,06/22/06,NE,03MPH,029K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986696,E,053,09:31:36,06/22/06,NE,03MPH,030K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986702,E,053,09:31:42,06/22/06,NE,05MPH,030K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986708,K,053,09:31:48,06/22/06,NE,03MPH,031K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986714,V,053,09:31:54,06/22/06,E,05MPH,031K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986720,E,053,09:32:00,06/22/06,NE,06MPH,032K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986726,H,053,09:32:06,06/22/06,NE,03MPH,032K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986732,B,053,09:32:12,06/22/06,NE,04MPH,032K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986738,B,053,09:32:18,06/22/06,ENE,03MPH,032K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986744,K,053,09:32:24,06/22/06,NE,03MPH,032K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986750,S,053,09:32:30,06/22/06,ENE,00MPH,032K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986756,B,053,09:32:36,06/22/06,NE,01MPH,032K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986762,H,053,09:32:42,06/22/06,NE,01MPH,032K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986768,H,053,09:32:48,06/22/06,NE,03MPH,032K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986774,N,053,09:32:54,06/22/06,NE,03MPH,032K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986780,T,053,09:33:00,06/22/06,NE,02MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986786,T,053,09:33:06,06/22/06,NE,01MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986792,O,053,09:33:12,06/22/06,ENE,00MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986798,U,053,09:33:18,06/22/06,ENE,00MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986804,U,053,09:33:24,06/22/06,NE,00MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986810,D,053,09:33:30,06/22/06,E,00MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986816,J,053,09:33:36,06/22/06,ENE,00MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986822,M,053,09:33:42,06/22/06,NE,00MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986828,B,053,09:33:48,06/22/06,SE,00MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986834,E,053,09:33:54,06/22/06,ESE,00MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986840,K,053,09:34:00,06/22/06,W,00MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986846,V,053,09:34:06,06/22/06,SSW,00MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986852,R,053,09:34:12,06/22/06,SSE,00MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986858,Y,053,09:34:18,06/22/06,SSW,00MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986864,B,053,09:34:24,06/22/06,SW,00MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986870,K,053,09:34:30,06/22/06,SW,00MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986876,W,053,09:34:36,06/22/06,SSW,00MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986882,Z,053,09:34:42,06/22/06,SSW,01MPH,033K,460F,068F,097%,30.15S,00.32\"D,00.93\"M,00.00\"R\n1150986888,R,053,09:34:48,06/22/06,SW,00MPH,033K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986894,I,053,09:34:54,06/22/06,SW,01MPH,033K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986900,N,053,09:35:00,06/22/06,SW,01MPH,033K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986906,Q,053,09:35:06,06/22/06,SSW,01MPH,033K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986912,I,053,09:35:12,06/22/06,SSW,03MPH,033K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986918,I,053,09:35:18,06/22/06,SSW,04MPH,033K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986924,A,053,09:35:24,06/22/06,SSW,04MPH,033K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986930,L,053,09:35:30,06/22/06,SSW,05MPH,033K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986936,W,053,09:35:36,06/22/06,SSW,05MPH,033K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986942,W,053,09:35:42,06/22/06,SSW,05MPH,033K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986948,W,053,09:35:48,06/22/06,SSW,03MPH,033K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986954,T,053,09:35:54,06/22/06,SSW,06MPH,033K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986960,W,053,09:36:00,06/22/06,SSW,05MPH,033K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986966,T,053,09:36:06,06/22/06,SSW,05MPH,033K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986972,Z,053,09:36:12,06/22/06,SSW,08MPH,033K,460F,068F,097%,30.16R,00.32\"D,00.93\"M,00.00\"R\n1150986978,Z,053,09:36:18,06/22/06,SSW,08MPH,033K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986984,F,053,09:36:24,06/22/06,SSW,07MPH,033K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986990,I,053,09:36:30,06/22/06,SSW,06MPH,033K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150986996,R,053,09:36:36,06/22/06,SSW,07MPH,033K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987002,X,053,09:36:42,06/22/06,SSW,06MPH,033K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987008,A,053,09:36:48,06/22/06,SW,06MPH,033K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987014,J,053,09:36:54,06/22/06,SSW,05MPH,033K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987020,E,053,09:37:00,06/22/06,SSW,09MPH,032K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987026,P,053,09:37:06,06/22/06,S,08MPH,031K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987032,A,053,09:37:12,06/22/06,S,05MPH,031K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987038,F,053,09:37:18,06/22/06,SSW,04MPH,031K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987044,N,053,09:37:24,06/22/06,S,05MPH,031K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987050,S,053,09:37:30,06/22/06,S,05MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987056,G,053,09:37:36,06/22/06,SSE,07MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987062,G,053,09:37:42,06/22/06,SSE,08MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987068,J,053,09:37:48,06/22/06,SSW,05MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987074,S,053,09:37:54,06/22/06,S,06MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987080,M,053,09:38:00,06/22/06,S,06MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987086,W,053,09:38:06,06/22/06,S,05MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987092,F,053,09:38:12,06/22/06,SW,06MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987098,F,053,09:38:18,06/22/06,SSE,06MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987104,N,053,09:38:24,06/22/06,S,08MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987110,F,053,09:38:30,06/22/06,SSW,06MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987116,X,053,09:38:36,06/22/06,S,07MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987122,V,053,09:38:42,06/22/06,S,07MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987128,V,053,09:38:48,06/22/06,SSW,10MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987134,H,053,09:38:54,06/22/06,S,09MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987140,J,053,09:39:00,06/22/06,S,08MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987146,P,053,09:39:06,06/22/06,S,08MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987152,A,053,09:39:12,06/22/06,S,08MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987158,F,053,09:39:18,06/22/06,S,06MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987164,P,053,09:39:24,06/22/06,S,06MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987170,U,053,09:39:30,06/22/06,SSE,06MPH,029K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987176,D,053,09:39:36,06/22/06,S,08MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987182,J,053,09:39:42,06/22/06,S,09MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987188,O,053,09:39:48,06/22/06,SSW,05MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987194,A,053,09:39:54,06/22/06,S,07MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987200,A,053,09:40:00,06/22/06,S,08MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987206,C,053,09:40:06,06/22/06,S,07MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987212,O,053,09:40:12,06/22/06,SSW,05MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987218,U,053,09:40:18,06/22/06,S,05MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987224,C,053,09:40:24,06/22/06,S,05MPH,030K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987230,F,053,09:40:30,06/22/06,SSE,05MPH,029K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987236,L,053,09:40:36,06/22/06,SSW,04MPH,029K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987242,C,053,09:40:42,06/22/06,SSE,07MPH,028K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987248,Y,053,09:40:48,06/22/06,SSW,06MPH,027K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987254,B,053,09:40:54,06/22/06,S,05MPH,027K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987260,C,053,09:41:00,06/22/06,SSW,06MPH,029K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987266,G,053,09:41:06,06/22/06,SSW,07MPH,029K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987272,R,053,09:41:12,06/22/06,SSE,05MPH,028K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987278,X,053,09:41:18,06/22/06,S,06MPH,028K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987284,G,053,09:41:24,06/22/06,S,05MPH,027K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987290,O,053,09:41:30,06/22/06,S,04MPH,026K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987296,U,053,09:41:36,06/22/06,S,05MPH,026K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987302,X,053,09:41:42,06/22/06,SSE,06MPH,026K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987308,I,053,09:41:48,06/22/06,SSW,05MPH,025K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987314,R,053,09:41:54,06/22/06,SW,05MPH,025K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987320,E,053,09:42:00,06/22/06,S,05MPH,025K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987326,G,053,09:42:06,06/22/06,S,06MPH,025K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987332,M,053,09:42:12,06/22/06,SSE,06MPH,025K,460F,068F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987338,F,053,09:42:18,06/22/06,SSW,05MPH,025K,460F,069F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987344,Q,053,09:42:24,06/22/06,SSE,03MPH,024K,460F,069F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987350,Z,053,09:42:30,06/22/06,S,04MPH,024K,460F,069F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987356,U,053,09:42:36,06/22/06,SSE,03MPH,024K,460F,069F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987362,L,053,09:42:42,06/22/06,S,03MPH,024K,460F,069F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987368,T,053,09:42:48,06/22/06,SSW,05MPH,024K,460F,069F,097%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987374,K,053,09:42:54,06/22/06,SSW,05MPH,024K,460F,068F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987380,M,053,09:43:00,06/22/06,S,06MPH,024K,460F,068F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987386,S,053,09:43:06,06/22/06,S,06MPH,024K,460F,068F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987392,K,053,09:43:12,06/22/06,S,07MPH,023K,460F,068F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987398,C,053,09:43:18,06/22/06,SW,08MPH,023K,460F,068F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987404,C,053,09:43:24,06/22/06,SSW,06MPH,023K,460F,068F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987410,N,053,09:43:30,06/22/06,SSW,08MPH,023K,460F,068F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987416,T,053,09:43:36,06/22/06,SW,08MPH,023K,460F,068F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987422,F,053,09:43:42,06/22/06,SSW,05MPH,023K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987428,W,053,09:43:48,06/22/06,SSW,06MPH,023K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987434,T,053,09:43:54,06/22/06,SSW,07MPH,023K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987440,A,053,09:44:00,06/22/06,SSW,06MPH,023K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987446,X,053,09:44:06,06/22/06,SSW,06MPH,023K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987452,D,053,09:44:12,06/22/06,SSW,04MPH,023K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987458,S,053,09:44:18,06/22/06,SSW,05MPH,022K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987464,Z,053,09:44:24,06/22/06,SSW,05MPH,022K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987470,B,053,09:44:30,06/22/06,WSW,05MPH,022K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987476,V,053,09:44:36,06/22/06,SSW,03MPH,022K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987482,S,053,09:44:42,06/22/06,W,03MPH,022K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987488,A,053,09:44:48,06/22/06,WSW,03MPH,022K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987494,G,053,09:44:54,06/22/06,NW,03MPH,022K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987500,G,053,09:45:00,06/22/06,W,03MPH,022K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987506,B,053,09:45:06,06/22/06,WNW,03MPH,022K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987512,B,053,09:45:12,06/22/06,NW,03MPH,022K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987518,W,053,09:45:18,06/22/06,SSE,01MPH,022K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987524,Q,053,09:45:24,06/22/06,WNW,01MPH,022K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987530,T,053,09:45:30,06/22/06,SSW,01MPH,022K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987536,L,053,09:45:36,06/22/06,NW,01MPH,022K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987542,U,053,09:45:42,06/22/06,SSE,01MPH,022K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987548,G,053,09:45:48,06/22/06,SW,01MPH,022K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987554,J,053,09:45:54,06/22/06,W,03MPH,021K,460F,069F,096%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987560,J,053,09:46:00,06/22/06,WNW,03MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987566,V,053,09:46:06,06/22/06,W,02MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987572,Q,053,09:46:12,06/22/06,NNW,01MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987578,R,053,09:46:18,06/22/06,WNW,01MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987584,W,053,09:46:24,06/22/06,W,01MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987590,F,053,09:46:30,06/22/06,WSW,01MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987596,R,053,09:46:36,06/22/06,SW,01MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987602,A,053,09:46:42,06/22/06,NW,02MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987608,R,053,09:46:48,06/22/06,SSE,01MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987614,B,053,09:46:54,06/22/06,SSW,00MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987620,D,053,09:47:00,06/22/06,W,01MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987626,N,053,09:47:06,06/22/06,NW,01MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987632,C,053,09:47:12,06/22/06,W,01MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987638,O,053,09:47:18,06/22/06,NW,01MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987644,D,053,09:47:24,06/22/06,W,01MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987650,D,053,09:47:30,06/22/06,W,00MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987656,V,053,09:47:36,06/22/06,WSW,00MPH,021K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987662,Y,053,09:47:42,06/22/06,W,01MPH,020K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987668,K,053,09:47:48,06/22/06,WSW,03MPH,020K,460F,069F,095%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150987674,O,053,09:47:54,06/22/06,SW,02MPH,020K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987680,W,053,09:48:00,06/22/06,SSW,01MPH,020K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987686,F,053,09:48:06,06/22/06,SW,02MPH,020K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987692,U,053,09:48:12,06/22/06,WSW,03MPH,020K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987698,M,053,09:48:18,06/22/06,SW,02MPH,020K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987704,M,053,09:48:24,06/22/06,WSW,02MPH,020K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987710,R,053,09:48:30,06/22/06,SW,02MPH,020K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987716,D,053,09:48:36,06/22/06,SW,03MPH,020K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987722,M,053,09:48:42,06/22/06,SW,03MPH,020K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987728,V,053,09:48:48,06/22/06,SSW,03MPH,020K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987734,O,053,09:48:54,06/22/06,SSW,02MPH,020K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987740,E,053,09:49:00,06/22/06,SW,02MPH,020K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987746,Q,053,09:49:06,06/22/06,SSW,02MPH,020K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987752,C,053,09:49:12,06/22/06,SW,01MPH,020K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987758,L,053,09:49:18,06/22/06,SW,03MPH,020K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987764,X,053,09:49:24,06/22/06,SW,03MPH,020K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987770,I,053,09:49:30,06/22/06,SW,02MPH,019K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987776,U,053,09:49:36,06/22/06,SW,02MPH,019K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987782,D,053,09:49:42,06/22/06,SW,04MPH,019K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987788,M,053,09:49:48,06/22/06,SW,03MPH,019K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987794,Y,053,09:49:54,06/22/06,S,03MPH,019K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987800,H,053,09:50:00,06/22/06,SW,03MPH,019K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987806,C,053,09:50:06,06/22/06,WSW,02MPH,019K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987812,W,053,09:50:12,06/22/06,SSW,03MPH,019K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987818,W,053,09:50:18,06/22/06,SSW,01MPH,019K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987824,F,053,09:50:24,06/22/06,SW,03MPH,019K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987830,O,053,09:50:30,06/22/06,SW,04MPH,019K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987836,A,053,09:50:36,06/22/06,SW,05MPH,019K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987842,G,053,09:50:42,06/22/06,SW,03MPH,019K,460F,069F,095%,30.19R,00.32\"D,00.93\"M,00.00\"R\n1150987848,O,053,09:50:48,06/22/06,SW,03MPH,019K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987854,A,053,09:50:54,06/22/06,WSW,03MPH,019K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987860,G,053,09:51:00,06/22/06,SSW,02MPH,019K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987866,V,053,09:51:06,06/22/06,SW,03MPH,019K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987872,Y,053,09:51:12,06/22/06,SSW,03MPH,019K,460F,069F,095%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987878,K,053,09:51:18,06/22/06,SW,04MPH,019K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987884,Q,053,09:51:24,06/22/06,WSW,04MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987890,T,053,09:51:30,06/22/06,WSW,05MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987896,H,053,09:51:36,06/22/06,SSW,04MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987902,N,053,09:51:42,06/22/06,SSW,03MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987908,Y,053,09:51:48,06/22/06,SSW,02MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987914,B,053,09:51:54,06/22/06,S,02MPH,018K,460F,069F,094%,30.19R,00.32\"D,00.93\"M,00.00\"R\n1150987920,K,053,09:52:00,06/22/06,SSW,03MPH,018K,460F,069F,094%,30.19R,00.32\"D,00.93\"M,00.00\"R\n1150987926,E,053,09:52:06,06/22/06,SSW,03MPH,018K,460F,069F,094%,30.19R,00.32\"D,00.93\"M,00.00\"R\n1150987932,W,053,09:52:12,06/22/06,SSW,03MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987938,C,053,09:52:18,06/22/06,SSW,03MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987944,C,053,09:52:24,06/22/06,SSW,03MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987950,I,053,09:52:30,06/22/06,SSW,04MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987956,U,053,09:52:36,06/22/06,SSW,04MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987962,D,053,09:52:42,06/22/06,S,04MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987968,D,053,09:52:48,06/22/06,S,03MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987974,P,053,09:52:54,06/22/06,SSW,04MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987980,P,053,09:53:00,06/22/06,SSW,03MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987986,V,053,09:53:06,06/22/06,SSE,05MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987992,Y,053,09:53:12,06/22/06,S,03MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150987998,B,053,09:53:18,06/22/06,SSW,03MPH,018K,460F,069F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988004,K,053,09:53:24,06/22/06,S,03MPH,018K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988010,T,053,09:53:30,06/22/06,SW,02MPH,018K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988016,W,053,09:53:36,06/22/06,SSE,04MPH,018K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988022,T,053,09:53:42,06/22/06,S,03MPH,018K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988028,Z,053,09:53:48,06/22/06,SSW,02MPH,017K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988034,F,053,09:53:54,06/22/06,SSW,02MPH,017K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988040,R,053,09:54:00,06/22/06,SSW,03MPH,017K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988046,U,053,09:54:06,06/22/06,SSE,03MPH,017K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988052,M,053,09:54:12,06/22/06,SSE,05MPH,017K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988058,V,053,09:54:18,06/22/06,SSE,06MPH,017K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988064,E,053,09:54:24,06/22/06,SSE,06MPH,017K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988070,N,053,09:54:30,06/22/06,SSE,05MPH,017K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988076,W,053,09:54:36,06/22/06,SSW,05MPH,017K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988082,C,053,09:54:42,06/22/06,S,06MPH,017K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988088,O,053,09:54:48,06/22/06,SSE,05MPH,017K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988094,D,053,09:54:54,06/22/06,S,05MPH,017K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988100,J,053,09:55:00,06/22/06,S,05MPH,017K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988106,K,053,09:55:06,06/22/06,SSE,05MPH,017K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988112,V,053,09:55:12,06/22/06,SSW,04MPH,017K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988118,T,053,09:55:18,06/22/06,S,04MPH,017K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988124,Q,053,09:55:24,06/22/06,S,03MPH,017K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988130,L,053,09:55:30,06/22/06,S,03MPH,016K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988136,C,053,09:55:36,06/22/06,S,02MPH,016K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988142,R,053,09:55:42,06/22/06,SSE,01MPH,016K,460F,070F,094%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988148,G,053,09:55:48,06/22/06,SSE,01MPH,016K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988154,E,053,09:55:54,06/22/06,SSE,03MPH,016K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988160,W,053,09:56:00,06/22/06,SSW,04MPH,016K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988166,C,053,09:56:06,06/22/06,S,03MPH,016K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988172,I,053,09:56:12,06/22/06,S,03MPH,016K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988178,X,053,09:56:18,06/22/06,SE,03MPH,016K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988184,D,053,09:56:24,06/22/06,SSE,04MPH,016K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988190,P,053,09:56:30,06/22/06,SSE,03MPH,016K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988196,B,053,09:56:36,06/22/06,ESE,03MPH,016K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988202,M,053,09:56:42,06/22/06,SSE,03MPH,016K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988208,V,053,09:56:48,06/22/06,SSE,03MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988214,X,053,09:56:54,06/22/06,SSE,02MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988220,U,053,09:57:00,06/22/06,SSE,02MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988226,J,053,09:57:06,06/22/06,SSE,02MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988232,B,053,09:57:12,06/22/06,SE,01MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988238,H,053,09:57:18,06/22/06,ESE,01MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988244,W,053,09:57:24,06/22/06,SE,01MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988250,O,053,09:57:30,06/22/06,ESE,01MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988256,N,053,09:57:36,06/22/06,E,01MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988262,C,053,09:57:42,06/22/06,SE,00MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988268,H,053,09:57:48,06/22/06,ESE,00MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988274,S,053,09:57:54,06/22/06,ESE,00MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988280,Y,053,09:58:00,06/22/06,SE,00MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988286,D,053,09:58:06,06/22/06,ESE,01MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988292,S,053,09:58:12,06/22/06,SE,01MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988298,A,053,09:58:18,06/22/06,SE,01MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988304,M,053,09:58:24,06/22/06,ESE,01MPH,015K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988310,V,053,09:58:30,06/22/06,ESE,01MPH,014K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988316,H,053,09:58:36,06/22/06,E,01MPH,014K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988322,K,053,09:58:42,06/22/06,E,02MPH,014K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988328,W,053,09:58:48,06/22/06,ENE,01MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988334,E,053,09:58:54,06/22/06,E,01MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988340,H,053,09:59:00,06/22/06,ESE,03MPH,014K,460F,070F,093%,30.18R,00.32\"D,00.93\"M,00.00\"R\n1150988346,N,053,09:59:06,06/22/06,E,03MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988352,F,053,09:59:12,06/22/06,E,03MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988358,O,053,09:59:18,06/22/06,E,03MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988364,A,053,09:59:24,06/22/06,E,03MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988370,J,053,09:59:30,06/22/06,ESE,02MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988376,V,053,09:59:36,06/22/06,E,02MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988382,Y,053,09:59:42,06/22/06,E,03MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988388,H,053,09:59:48,06/22/06,ENE,03MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988394,P,053,09:59:54,06/22/06,E,03MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988400,P,053,10:00:00,06/22/06,ESE,04MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988406,Y,053,10:00:06,06/22/06,E,03MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988412,H,053,10:00:12,06/22/06,E,03MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988418,N,053,10:00:18,06/22/06,ESE,03MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988424,Z,053,10:00:24,06/22/06,E,03MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988430,F,053,10:00:30,06/22/06,E,03MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988436,O,053,10:00:36,06/22/06,E,03MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988442,U,053,10:00:42,06/22/06,E,01MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988448,A,053,10:00:48,06/22/06,ENE,01MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n1150988454,G,053,10:00:54,06/22/06,ENE,03MPH,014K,460F,070F,093%,30.17R,00.32\"D,00.93\"M,00.00\"R\n"
  },
  {
    "path": "htdocs/plotting/snet/data/SINI4_071002.txt",
    "content": "1191333600,J,038,09:00:00,10/02/07,SSE,13MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333606,N,038,09:00:06,10/02/07,SE,08MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333612,S,038,09:00:12,10/02/07,SSE,12MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333618,Z,038,09:00:18,10/02/07,E,08MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333624,H,038,09:00:24,10/02/07,S,05MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333630,P,038,09:00:30,10/02/07,S,05MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333636,W,038,09:00:36,10/02/07,S,06MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333642,B,038,09:00:42,10/02/07,ESE,04MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333648,G,038,09:00:48,10/02/07,SSE,03MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333654,L,038,09:00:54,10/02/07,SSE,08MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333660,Q,038,09:01:00,10/02/07,SSE,10MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333666,U,038,09:01:06,10/02/07,SSE,11MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333672,Z,038,09:01:12,10/02/07,SSE,06MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333678,K,038,09:01:18,10/02/07,SSE,06MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333684,P,038,09:01:24,10/02/07,SSE,10MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333690,X,038,09:01:30,10/02/07,SSE,14MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333696,Y,038,09:01:36,10/02/07,S,16MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333702,C,038,09:01:42,10/02/07,SSE,13MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333708,G,038,09:01:48,10/02/07,SSE,13MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333714,L,038,09:01:54,10/02/07,SSE,11MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333720,N,038,09:02:00,10/02/07,S,12MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333726,N,038,09:02:06,10/02/07,S,10MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333732,B,038,09:02:12,10/02/07,SE,08MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333738,G,038,09:02:18,10/02/07,SSE,06MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333744,O,038,09:02:24,10/02/07,S,06MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333750,W,038,09:02:30,10/02/07,SSE,10MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333756,W,038,09:02:36,10/02/07,SE,07MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333762,E,038,09:02:42,10/02/07,SSE,11MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333768,G,038,09:02:48,10/02/07,SE,07MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333774,N,038,09:02:54,10/02/07,SSE,07MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333780,S,038,09:03:00,10/02/07,S,06MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333786,T,038,09:03:06,10/02/07,S,05MPH,003K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333792,B,038,09:03:12,10/02/07,S,08MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333798,F,038,09:03:18,10/02/07,SSE,08MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333804,Q,038,09:03:24,10/02/07,SSE,10MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333810,L,038,09:03:30,10/02/07,SE,08MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333816,S,038,09:03:36,10/02/07,SSE,06MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333822,U,038,09:03:42,10/02/07,ESE,06MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333828,Y,038,09:03:48,10/02/07,SSE,06MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333834,J,038,09:03:54,10/02/07,SSW,05MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333840,T,038,09:04:00,10/02/07,SE,04MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333846,Y,038,09:04:06,10/02/07,SSE,06MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333852,G,038,09:04:12,10/02/07,E,05MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333858,H,038,09:04:18,10/02/07,SSE,03MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333864,S,038,09:04:24,10/02/07,S,10MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333870,U,038,09:04:30,10/02/07,S,10MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333876,C,038,09:04:36,10/02/07,S,16MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333882,H,038,09:04:42,10/02/07,S,16MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333888,P,038,09:04:48,10/02/07,SSE,15MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333894,Z,038,09:04:54,10/02/07,SE,12MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333900,N,038,09:05:00,10/02/07,SE,11MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333906,O,038,09:05:06,10/02/07,S,07MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333912,T,038,09:05:12,10/02/07,SE,06MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333918,M,038,09:05:18,10/02/07,S,06MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333924,Q,038,09:05:24,10/02/07,S,08MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333930,V,038,09:05:30,10/02/07,SSE,06MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333936,A,038,09:05:36,10/02/07,SSE,07MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333942,I,038,09:05:42,10/02/07,S,07MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333948,K,038,09:05:48,10/02/07,SE,08MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333954,O,038,09:05:54,10/02/07,S,09MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333960,T,038,09:06:00,10/02/07,S,12MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333966,X,038,09:06:06,10/02/07,S,10MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333972,Z,038,09:06:12,10/02/07,SE,06MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333978,Y,038,09:06:18,10/02/07,S,08MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333984,C,038,09:06:24,10/02/07,S,10MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333990,B,038,09:06:30,10/02/07,S,08MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191333996,L,038,09:06:36,10/02/07,SE,06MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191334002,Q,038,09:06:42,10/02/07,S,08MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191334008,O,038,09:06:48,10/02/07,SSE,09MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191334014,J,038,09:06:54,10/02/07,S,10MPH,002K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334020,R,038,09:07:00,10/02/07,SE,08MPH,002K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334026,P,038,09:07:06,10/02/07,SE,05MPH,002K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334032,X,038,09:07:12,10/02/07,SSE,08MPH,002K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334038,T,038,09:07:18,10/02/07,SSE,06MPH,002K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334044,Y,038,09:07:24,10/02/07,S,08MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191334050,G,038,09:07:30,10/02/07,SSE,06MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191334056,N,038,09:07:36,10/02/07,SSE,04MPH,002K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334062,R,038,09:07:42,10/02/07,SE,05MPH,002K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334068,W,038,09:07:48,10/02/07,ESE,05MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191334074,A,038,09:07:54,10/02/07,SSE,03MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191334080,Z,038,09:08:00,10/02/07,SSE,05MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191334086,E,038,09:08:06,10/02/07,SSE,08MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191334092,I,038,09:08:12,10/02/07,SSE,06MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191334098,H,038,09:08:18,10/02/07,S,10MPH,002K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334104,S,038,09:08:24,10/02/07,SSE,11MPH,002K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334110,R,038,09:08:30,10/02/07,SSE,07MPH,002K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334116,Y,038,09:08:36,10/02/07,S,09MPH,002K,460F,067F,079%,29.83F,00.00\"D,00.01\"M,00.00\"R\n1191334122,A,038,09:08:42,10/02/07,S,08MPH,002K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334128,S,038,09:08:48,10/02/07,S,06MPH,002K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334134,V,038,09:08:54,10/02/07,SE,05MPH,002K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334140,R,038,09:09:00,10/02/07,S,05MPH,003K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334146,T,038,09:09:06,10/02/07,ESE,05MPH,003K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334152,X,038,09:09:12,10/02/07,S,03MPH,003K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334158,Y,038,09:09:18,10/02/07,SSW,04MPH,003K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334164,D,038,09:09:24,10/02/07,SSE,05MPH,003K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334170,F,038,09:09:30,10/02/07,S,08MPH,003K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334176,H,038,09:09:36,10/02/07,S,08MPH,003K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334182,C,038,09:09:42,10/02/07,S,06MPH,003K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334188,Y,038,09:09:48,10/02/07,SE,05MPH,003K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334194,X,038,09:09:54,10/02/07,SSE,07MPH,003K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334200,V,038,09:10:00,10/02/07,SSE,06MPH,003K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334206,Z,038,09:10:06,10/02/07,ESE,08MPH,003K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334212,E,038,09:10:12,10/02/07,S,07MPH,003K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334218,G,038,09:10:18,10/02/07,SSE,10MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334224,Q,038,09:10:24,10/02/07,SSE,09MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334230,S,038,09:10:30,10/02/07,S,06MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334236,T,038,09:10:36,10/02/07,SSE,05MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334242,V,038,09:10:42,10/02/07,S,05MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334248,A,038,09:10:48,10/02/07,SSE,05MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334254,W,038,09:10:54,10/02/07,E,04MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334260,E,038,09:11:00,10/02/07,NE,03MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334266,F,038,09:11:06,10/02/07,SSE,04MPH,003K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334272,N,038,09:11:12,10/02/07,S,06MPH,003K,460F,067F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334278,S,038,09:11:18,10/02/07,SE,06MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334284,X,038,09:11:24,10/02/07,SSE,07MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334290,C,038,09:11:30,10/02/07,SSE,11MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334296,G,038,09:11:36,10/02/07,S,07MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334302,I,038,09:11:42,10/02/07,S,09MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334308,P,038,09:11:48,10/02/07,SSE,09MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334314,Z,038,09:11:54,10/02/07,SSE,10MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334320,H,038,09:12:00,10/02/07,SSE,10MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334326,O,038,09:12:06,10/02/07,SE,07MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334332,T,038,09:12:12,10/02/07,SSE,06MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334338,B,038,09:12:18,10/02/07,SE,04MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334344,I,038,09:12:24,10/02/07,S,05MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334350,K,038,09:12:30,10/02/07,S,06MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334356,M,038,09:12:36,10/02/07,SSE,10MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334362,R,038,09:12:42,10/02/07,SE,08MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334368,F,038,09:12:48,10/02/07,SSE,06MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334374,J,038,09:12:54,10/02/07,SE,05MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334380,U,038,09:13:00,10/02/07,S,03MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334386,Z,038,09:13:06,10/02/07,SSE,07MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334392,E,038,09:13:12,10/02/07,SSE,07MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334398,M,038,09:13:18,10/02/07,SSE,06MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334404,Q,038,09:13:24,10/02/07,S,10MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334410,B,038,09:13:30,10/02/07,S,08MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334416,J,038,09:13:36,10/02/07,SSE,08MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334422,Q,038,09:13:42,10/02/07,SSE,07MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334428,O,038,09:13:48,10/02/07,SE,06MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334434,Q,038,09:13:54,10/02/07,ESE,08MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334440,C,038,09:14:00,10/02/07,S,04MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334446,B,038,09:14:06,10/02/07,ESE,08MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334452,G,038,09:14:12,10/02/07,S,05MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334458,K,038,09:14:18,10/02/07,E,05MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334464,M,038,09:14:24,10/02/07,ENE,03MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334470,X,038,09:14:30,10/02/07,S,04MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334476,F,038,09:14:36,10/02/07,SSW,07MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334482,N,038,09:14:42,10/02/07,SSE,08MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334488,R,038,09:14:48,10/02/07,SE,06MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334494,T,038,09:14:54,10/02/07,SE,05MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334500,A,038,09:15:00,10/02/07,S,03MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334506,E,038,09:15:06,10/02/07,SE,08MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334512,L,038,09:15:12,10/02/07,SW,05MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334518,T,038,09:15:18,10/02/07,SSE,05MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334524,Y,038,09:15:24,10/02/07,S,13MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334530,M,038,09:15:30,10/02/07,S,10MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334536,M,038,09:15:36,10/02/07,S,10MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334542,X,038,09:15:42,10/02/07,S,12MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334548,C,038,09:15:48,10/02/07,S,08MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334554,E,038,09:15:54,10/02/07,SSE,08MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334560,A,038,09:16:00,10/02/07,SE,07MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334566,E,038,09:16:06,10/02/07,S,06MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334572,M,038,09:16:12,10/02/07,SSE,05MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334578,U,038,09:16:18,10/02/07,S,05MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334584,W,038,09:16:24,10/02/07,S,09MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334590,X,038,09:16:30,10/02/07,S,09MPH,003K,460F,066F,079%,29.82F,00.00\"D,00.01\"M,00.00\"R\n1191334596,C,038,09:16:36,10/02/07,SSE,09MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334602,K,038,09:16:42,10/02/07,SE,08MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334608,P,038,09:16:48,10/02/07,SSE,08MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334614,Q,038,09:16:54,10/02/07,ESE,05MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334620,V,038,09:17:00,10/02/07,SE,04MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334626,A,038,09:17:06,10/02/07,E,05MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334632,R,038,09:17:12,10/02/07,S,08MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334638,W,038,09:17:18,10/02/07,SE,07MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334644,C,038,09:17:24,10/02/07,SE,06MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334650,H,038,09:17:30,10/02/07,SE,05MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334656,J,038,09:17:36,10/02/07,SSE,04MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334662,R,038,09:17:42,10/02/07,SSE,05MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334668,S,038,09:17:48,10/02/07,SE,06MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334674,R,038,09:17:54,10/02/07,SE,08MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334680,W,038,09:18:00,10/02/07,S,05MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334686,H,038,09:18:06,10/02/07,S,04MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334692,O,038,09:18:12,10/02/07,S,06MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334698,Q,038,09:18:18,10/02/07,S,09MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334704,Y,038,09:18:24,10/02/07,E,06MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334710,D,038,09:18:30,10/02/07,SSE,05MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334716,F,038,09:18:36,10/02/07,SE,06MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334722,G,038,09:18:42,10/02/07,E,05MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334728,L,038,09:18:48,10/02/07,S,05MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334734,M,038,09:18:54,10/02/07,SW,04MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334740,Z,038,09:19:00,10/02/07,E,06MPH,003K,460F,066F,079%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334746,X,038,09:19:06,10/02/07,SSE,05MPH,003K,460F,066F,079%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191334752,C,038,09:19:12,10/02/07,SE,03MPH,003K,460F,066F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334758,J,038,09:19:18,10/02/07,ENE,05MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334764,L,038,09:19:24,10/02/07,S,03MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334770,T,038,09:19:30,10/02/07,SE,05MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334776,V,038,09:19:36,10/02/07,SSE,09MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334782,Z,038,09:19:42,10/02/07,SE,10MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334788,H,038,09:19:48,10/02/07,SSE,07MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334794,L,038,09:19:54,10/02/07,SE,04MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191334800,S,038,09:20:00,10/02/07,NE,03MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334806,D,038,09:20:06,10/02/07,S,02MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334812,F,038,09:20:12,10/02/07,SE,04MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191334818,J,038,09:20:18,10/02/07,SE,05MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334824,K,038,09:20:24,10/02/07,SSE,05MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334830,W,038,09:20:30,10/02/07,SSE,06MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334836,X,038,09:20:36,10/02/07,SSE,10MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334842,K,038,09:20:42,10/02/07,SSE,09MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334848,R,038,09:20:48,10/02/07,S,06MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334854,Y,038,09:20:54,10/02/07,S,07MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334860,I,038,09:21:00,10/02/07,SSE,08MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334866,O,038,09:21:06,10/02/07,SSW,06MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334872,N,038,09:21:12,10/02/07,S,08MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334878,P,038,09:21:18,10/02/07,S,08MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334884,N,038,09:21:24,10/02/07,S,05MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334890,V,038,09:21:30,10/02/07,S,08MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334896,S,038,09:21:36,10/02/07,ESE,05MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334902,A,038,09:21:42,10/02/07,E,05MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334908,I,038,09:21:48,10/02/07,SE,04MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334914,M,038,09:21:54,10/02/07,ESE,04MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334920,T,038,09:22:00,10/02/07,SSE,07MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334926,X,038,09:22:06,10/02/07,S,08MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334932,C,038,09:22:12,10/02/07,S,06MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334938,E,038,09:22:18,10/02/07,SSE,05MPH,002K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334944,F,038,09:22:24,10/02/07,SSE,07MPH,002K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334950,Q,038,09:22:30,10/02/07,SSE,06MPH,002K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334956,B,038,09:22:36,10/02/07,SSE,06MPH,002K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334962,G,038,09:22:42,10/02/07,SSE,13MPH,002K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334968,L,038,09:22:48,10/02/07,SE,09MPH,002K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334974,P,038,09:22:54,10/02/07,SE,06MPH,002K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334980,R,038,09:23:00,10/02/07,ESE,08MPH,002K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191334986,V,038,09:23:06,10/02/07,SSE,08MPH,002K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191334992,A,038,09:23:12,10/02/07,SE,09MPH,002K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191334998,Y,038,09:23:18,10/02/07,SSE,07MPH,002K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335004,P,038,09:23:24,10/02/07,SSE,08MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335010,U,038,09:23:30,10/02/07,SE,06MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335016,Y,038,09:23:36,10/02/07,SSE,08MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335022,J,038,09:23:42,10/02/07,SE,06MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335028,Q,038,09:23:48,10/02/07,ESE,05MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335034,U,038,09:23:54,10/02/07,SSE,05MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335040,Z,038,09:24:00,10/02/07,S,06MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335046,B,038,09:24:06,10/02/07,S,05MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335052,I,038,09:24:12,10/02/07,SSE,06MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335058,Q,038,09:24:18,10/02/07,SSE,05MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335064,V,038,09:24:24,10/02/07,S,07MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335070,A,038,09:24:30,10/02/07,SSE,07MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335076,F,038,09:24:36,10/02/07,SSE,08MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335082,G,038,09:24:42,10/02/07,S,06MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335088,L,038,09:24:48,10/02/07,SSE,06MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335094,N,038,09:24:54,10/02/07,S,06MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335100,P,038,09:25:00,10/02/07,ESE,06MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335106,T,038,09:25:06,10/02/07,SSE,09MPH,003K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335112,D,038,09:25:12,10/02/07,SW,05MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335118,O,038,09:25:18,10/02/07,S,06MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335124,W,038,09:25:24,10/02/07,SSE,08MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335130,Y,038,09:25:30,10/02/07,S,07MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335136,Y,038,09:25:36,10/02/07,S,09MPH,003K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335142,G,038,09:25:42,10/02/07,SE,10MPH,004K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335148,N,038,09:25:48,10/02/07,S,11MPH,004K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335154,R,038,09:25:54,10/02/07,SE,10MPH,004K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335160,E,038,09:26:00,10/02/07,SE,07MPH,004K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335166,L,038,09:26:06,10/02/07,ESE,06MPH,004K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335172,T,038,09:26:12,10/02/07,SSE,08MPH,004K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335178,Y,038,09:26:18,10/02/07,ESE,06MPH,004K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335184,E,038,09:26:24,10/02/07,SE,05MPH,004K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335190,G,038,09:26:30,10/02/07,S,03MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335196,N,038,09:26:36,10/02/07,S,04MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335202,S,038,09:26:42,10/02/07,SSE,04MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335208,W,038,09:26:48,10/02/07,SSE,05MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335214,H,038,09:26:54,10/02/07,E,05MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335220,J,038,09:27:00,10/02/07,ESE,03MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335226,Q,038,09:27:06,10/02/07,S,04MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335232,Y,038,09:27:12,10/02/07,S,07MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335238,Z,038,09:27:18,10/02/07,S,07MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335244,H,038,09:27:24,10/02/07,S,08MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335250,M,038,09:27:30,10/02/07,SSE,11MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335256,R,038,09:27:36,10/02/07,S,12MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335262,O,038,09:27:42,10/02/07,SE,10MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335268,W,038,09:27:48,10/02/07,S,06MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335274,E,038,09:27:54,10/02/07,S,12MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335280,M,038,09:28:00,10/02/07,S,09MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335286,R,038,09:28:06,10/02/07,SE,06MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335292,Z,038,09:28:12,10/02/07,SSE,06MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335298,E,038,09:28:18,10/02/07,SSE,07MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335304,L,038,09:28:24,10/02/07,SE,08MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335310,J,038,09:28:30,10/02/07,SSE,05MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335316,O,038,09:28:36,10/02/07,S,05MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335322,Y,038,09:28:42,10/02/07,SSE,06MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335328,A,038,09:28:48,10/02/07,SSE,06MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335334,H,038,09:28:54,10/02/07,S,06MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335340,R,038,09:29:00,10/02/07,SSE,05MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335346,T,038,09:29:06,10/02/07,S,03MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335352,V,038,09:29:12,10/02/07,SSE,04MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335358,X,038,09:29:18,10/02/07,S,08MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335364,F,038,09:29:24,10/02/07,S,11MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335370,D,038,09:29:30,10/02/07,SSE,12MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335376,O,038,09:29:36,10/02/07,SSE,12MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335382,W,038,09:29:42,10/02/07,ESE,06MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335388,V,038,09:29:48,10/02/07,S,06MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335394,D,038,09:29:54,10/02/07,S,05MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335400,E,038,09:30:00,10/02/07,SSE,07MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335406,I,038,09:30:06,10/02/07,SSE,08MPH,004K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335412,N,038,09:30:12,10/02/07,SE,06MPH,005K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335418,R,038,09:30:18,10/02/07,S,04MPH,005K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335424,Z,038,09:30:24,10/02/07,ESE,06MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335430,H,038,09:30:30,10/02/07,S,05MPH,005K,460F,067F,080%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191335436,R,038,09:30:36,10/02/07,SE,05MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335442,W,038,09:30:42,10/02/07,SSE,08MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335448,V,038,09:30:48,10/02/07,S,05MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335454,D,038,09:30:54,10/02/07,ESE,06MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335460,F,038,09:31:00,10/02/07,SW,05MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335466,K,038,09:31:06,10/02/07,S,04MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335472,O,038,09:31:12,10/02/07,S,05MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335478,Z,038,09:31:18,10/02/07,S,03MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335484,E,038,09:31:24,10/02/07,SSE,05MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335490,I,038,09:31:30,10/02/07,SSE,08MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335496,P,038,09:31:36,10/02/07,S,07MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335502,R,038,09:31:42,10/02/07,S,08MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335508,W,038,09:31:48,10/02/07,SE,06MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335514,V,038,09:31:54,10/02/07,SE,06MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335520,A,038,09:32:00,10/02/07,S,05MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335526,F,038,09:32:06,10/02/07,S,06MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335532,Q,038,09:32:12,10/02/07,SE,06MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335538,U,038,09:32:18,10/02/07,SSE,07MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335544,B,038,09:32:24,10/02/07,SSE,07MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335550,R,038,09:32:30,10/02/07,ESE,05MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335556,Z,038,09:32:36,10/02/07,SSW,05MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335562,A,038,09:32:42,10/02/07,NE,04MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335568,F,038,09:32:48,10/02/07,S,03MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335574,G,038,09:32:54,10/02/07,SSW,07MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335580,L,038,09:33:00,10/02/07,SE,06MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335586,W,038,09:33:06,10/02/07,SSE,06MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335592,E,038,09:33:12,10/02/07,SSE,10MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335598,M,038,09:33:18,10/02/07,S,08MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335604,T,038,09:33:24,10/02/07,S,06MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335610,Y,038,09:33:30,10/02/07,SSE,08MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335616,A,038,09:33:36,10/02/07,SE,07MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335622,H,038,09:33:42,10/02/07,SSE,08MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335628,P,038,09:33:48,10/02/07,SE,06MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335634,N,038,09:33:54,10/02/07,SE,03MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335640,X,038,09:34:00,10/02/07,ESE,03MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335646,F,038,09:34:06,10/02/07,S,04MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335652,N,038,09:34:12,10/02/07,S,06MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335658,S,038,09:34:18,10/02/07,SSE,08MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335664,W,038,09:34:24,10/02/07,ESE,07MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335670,B,038,09:34:30,10/02/07,SE,06MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335676,G,038,09:34:36,10/02/07,S,07MPH,005K,460F,067F,080%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335682,L,038,09:34:42,10/02/07,S,08MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335688,T,038,09:34:48,10/02/07,S,08MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335694,E,038,09:34:54,10/02/07,SSW,10MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335700,L,038,09:35:00,10/02/07,S,08MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335706,T,038,09:35:06,10/02/07,SE,06MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335712,B,038,09:35:12,10/02/07,NNE,03MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335718,X,038,09:35:18,10/02/07,SSE,05MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335724,Z,038,09:35:24,10/02/07,ESE,05MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335730,A,038,09:35:30,10/02/07,E,03MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335736,D,038,09:35:36,10/02/07,ESE,05MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335742,I,038,09:35:42,10/02/07,S,05MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335748,W,038,09:35:48,10/02/07,S,03MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335754,U,038,09:35:54,10/02/07,SSE,05MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335760,E,038,09:36:00,10/02/07,SSE,10MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335766,I,038,09:36:06,10/02/07,SSE,11MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335772,N,038,09:36:12,10/02/07,SE,07MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335778,S,038,09:36:18,10/02/07,S,05MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335784,U,038,09:36:24,10/02/07,SE,07MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335790,V,038,09:36:30,10/02/07,SSE,09MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335796,R,038,09:36:36,10/02/07,SSE,09MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335802,I,038,09:36:42,10/02/07,S,08MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335808,P,038,09:36:48,10/02/07,SSE,07MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335814,W,038,09:36:54,10/02/07,S,05MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335820,B,038,09:37:00,10/02/07,SSW,05MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335826,D,038,09:37:06,10/02/07,S,07MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335832,H,038,09:37:12,10/02/07,SE,05MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335838,G,038,09:37:18,10/02/07,WSW,03MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335844,K,038,09:37:24,10/02/07,ENE,02MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335850,V,038,09:37:30,10/02/07,SSE,06MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335856,C,038,09:37:36,10/02/07,SE,04MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335862,H,038,09:37:42,10/02/07,SSE,03MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335868,A,038,09:37:48,10/02/07,ESE,05MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335874,L,038,09:37:54,10/02/07,SSE,04MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335880,O,038,09:38:00,10/02/07,S,08MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335886,P,038,09:38:06,10/02/07,SW,06MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335892,K,038,09:38:12,10/02/07,S,09MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335898,M,038,09:38:18,10/02/07,S,11MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335904,W,038,09:38:24,10/02/07,S,10MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335910,W,038,09:38:30,10/02/07,SE,06MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335916,D,038,09:38:36,10/02/07,SE,06MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335922,C,038,09:38:42,10/02/07,ESE,08MPH,005K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335928,D,038,09:38:48,10/02/07,ESE,06MPH,004K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335934,K,038,09:38:54,10/02/07,SSW,05MPH,004K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335940,F,038,09:39:00,10/02/07,SE,04MPH,004K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335946,H,038,09:39:06,10/02/07,SE,03MPH,004K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335952,I,038,09:39:12,10/02/07,S,06MPH,004K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335958,J,038,09:39:18,10/02/07,SSE,06MPH,004K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335964,N,038,09:39:24,10/02/07,SE,07MPH,004K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335970,S,038,09:39:30,10/02/07,SE,06MPH,004K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335976,Q,038,09:39:36,10/02/07,SSE,04MPH,003K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335982,Y,038,09:39:42,10/02/07,SSE,08MPH,003K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335988,A,038,09:39:48,10/02/07,ESE,13MPH,003K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191335994,Z,038,09:39:54,10/02/07,SSW,06MPH,003K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191336000,R,038,09:40:00,10/02/07,SSE,08MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336006,T,038,09:40:06,10/02/07,S,10MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336012,X,038,09:40:12,10/02/07,S,10MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336018,B,038,09:40:18,10/02/07,SSE,12MPH,003K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191336024,F,038,09:40:24,10/02/07,SSW,11MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336030,T,038,09:40:30,10/02/07,S,07MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336036,R,038,09:40:36,10/02/07,SE,06MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336042,Z,038,09:40:42,10/02/07,SSW,03MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336048,B,038,09:40:48,10/02/07,S,05MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336054,O,038,09:40:54,10/02/07,SSE,05MPH,003K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191336060,D,038,09:41:00,10/02/07,S,06MPH,003K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191336066,E,038,09:41:06,10/02/07,SSE,08MPH,003K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191336072,M,038,09:41:12,10/02/07,S,08MPH,003K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191336078,E,038,09:41:18,10/02/07,S,06MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336084,G,038,09:41:24,10/02/07,ESE,08MPH,003K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191336090,L,038,09:41:30,10/02/07,E,07MPH,003K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191336096,M,038,09:41:36,10/02/07,S,05MPH,003K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191336102,L,038,09:41:42,10/02/07,SSE,06MPH,003K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191336108,K,038,09:41:48,10/02/07,SW,08MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336114,A,038,09:41:54,10/02/07,S,07MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336120,W,038,09:42:00,10/02/07,SSE,07MPH,003K,460F,067F,081%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191336126,Y,038,09:42:06,10/02/07,SSW,10MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336132,L,038,09:42:12,10/02/07,SE,15MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336138,N,038,09:42:18,10/02/07,WSW,07MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336144,L,038,09:42:24,10/02/07,S,09MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336150,Q,038,09:42:30,10/02/07,W,05MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336156,P,038,09:42:36,10/02/07,SSE,06MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336162,R,038,09:42:42,10/02/07,S,08MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336168,X,038,09:42:48,10/02/07,SSE,09MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336174,G,038,09:42:54,10/02/07,S,10MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336180,D,038,09:43:00,10/02/07,SSE,06MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336186,A,038,09:43:06,10/02/07,SSE,06MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336192,Z,038,09:43:12,10/02/07,SE,08MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336198,X,038,09:43:18,10/02/07,SE,06MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336204,Z,038,09:43:24,10/02/07,S,03MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336210,V,038,09:43:30,10/02/07,E,04MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336216,Z,038,09:43:36,10/02/07,SE,03MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336222,D,038,09:43:42,10/02/07,SSE,03MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336228,H,038,09:43:48,10/02/07,S,05MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336234,L,038,09:43:54,10/02/07,SE,03MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336240,M,038,09:44:00,10/02/07,SE,04MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336246,H,038,09:44:06,10/02/07,SE,03MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336252,G,038,09:44:12,10/02/07,SSE,04MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336258,Z,038,09:44:18,10/02/07,SSW,04MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336264,E,038,09:44:24,10/02/07,SE,03MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336270,M,038,09:44:30,10/02/07,SE,07MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336276,I,038,09:44:36,10/02/07,S,07MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336282,S,038,09:44:42,10/02/07,SSE,08MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336288,X,038,09:44:48,10/02/07,S,08MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336294,E,038,09:44:54,10/02/07,S,06MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336300,J,038,09:45:00,10/02/07,SE,07MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336306,L,038,09:45:06,10/02/07,S,04MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336312,F,038,09:45:12,10/02/07,SE,08MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336318,D,038,09:45:18,10/02/07,SSE,10MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336324,O,038,09:45:24,10/02/07,S,08MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336330,T,038,09:45:30,10/02/07,S,07MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336336,Y,038,09:45:36,10/02/07,SSW,06MPH,003K,460F,067F,081%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336342,C,038,09:45:42,10/02/07,S,10MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336348,E,038,09:45:48,10/02/07,SSW,09MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336354,C,038,09:45:54,10/02/07,SSW,07MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336360,Y,038,09:46:00,10/02/07,SSE,07MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336366,F,038,09:46:06,10/02/07,SSE,06MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336372,E,038,09:46:12,10/02/07,SE,07MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336378,M,038,09:46:18,10/02/07,SSE,09MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336384,N,038,09:46:24,10/02/07,S,10MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336390,S,038,09:46:30,10/02/07,S,10MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336396,W,038,09:46:36,10/02/07,SSE,08MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336402,D,038,09:46:42,10/02/07,SSE,07MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336408,L,038,09:46:48,10/02/07,SSE,07MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336414,L,038,09:46:54,10/02/07,SSE,07MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336420,N,038,09:47:00,10/02/07,SSE,07MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336426,U,038,09:47:06,10/02/07,S,06MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336432,I,038,09:47:12,10/02/07,SSE,06MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336438,Q,038,09:47:18,10/02/07,SW,05MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336444,Y,038,09:47:24,10/02/07,S,08MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336450,A,038,09:47:30,10/02/07,SSE,08MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336456,E,038,09:47:36,10/02/07,SSE,06MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336462,M,038,09:47:42,10/02/07,ESE,05MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336468,R,038,09:47:48,10/02/07,S,08MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336474,W,038,09:47:54,10/02/07,S,10MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336480,T,038,09:48:00,10/02/07,SSE,05MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336486,N,038,09:48:06,10/02/07,S,06MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336492,O,038,09:48:12,10/02/07,S,10MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336498,Z,038,09:48:18,10/02/07,S,08MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336504,D,038,09:48:24,10/02/07,SSE,10MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336510,F,038,09:48:30,10/02/07,S,08MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336516,Q,038,09:48:36,10/02/07,SSE,06MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336522,A,038,09:48:42,10/02/07,SSE,05MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336528,H,038,09:48:48,10/02/07,SSE,06MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336534,O,038,09:48:54,10/02/07,SSE,07MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336540,Y,038,09:49:00,10/02/07,SSE,05MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336546,M,038,09:49:06,10/02/07,S,06MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336552,T,038,09:49:12,10/02/07,S,05MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336558,D,038,09:49:18,10/02/07,E,03MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336564,F,038,09:49:24,10/02/07,SSE,04MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336570,K,038,09:49:30,10/02/07,S,09MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336576,U,038,09:49:36,10/02/07,SE,05MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336582,B,038,09:49:42,10/02/07,SE,06MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336588,M,038,09:49:48,10/02/07,S,05MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336594,Z,038,09:49:54,10/02/07,SE,06MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336600,J,038,09:50:00,10/02/07,SE,05MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336606,A,038,09:50:06,10/02/07,S,05MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336612,K,038,09:50:12,10/02/07,S,09MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336618,O,038,09:50:18,10/02/07,S,10MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336624,S,038,09:50:24,10/02/07,SSE,09MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336630,A,038,09:50:30,10/02/07,S,09MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336636,O,038,09:50:36,10/02/07,SE,08MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336642,V,038,09:50:42,10/02/07,SSE,07MPH,003K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336648,M,038,09:50:48,10/02/07,SSE,07MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336654,N,038,09:50:54,10/02/07,S,07MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336660,E,038,09:51:00,10/02/07,SE,07MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336666,M,038,09:51:06,10/02/07,SE,07MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336672,V,038,09:51:12,10/02/07,SE,06MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336678,F,038,09:51:18,10/02/07,S,10MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336684,H,038,09:51:24,10/02/07,SSE,07MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336690,G,038,09:51:30,10/02/07,S,06MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336696,A,038,09:51:36,10/02/07,SE,05MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336702,C,038,09:51:42,10/02/07,SSE,04MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336708,V,038,09:51:48,10/02/07,SE,06MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336714,Z,038,09:51:54,10/02/07,SE,06MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336720,K,038,09:52:00,10/02/07,SSE,06MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336726,S,038,09:52:06,10/02/07,S,08MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336732,Z,038,09:52:12,10/02/07,SE,08MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336738,K,038,09:52:18,10/02/07,ESE,06MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336744,L,038,09:52:24,10/02/07,E,08MPH,004K,460F,067F,082%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336750,C,038,09:52:30,10/02/07,SSW,06MPH,004K,460F,067F,082%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336756,K,038,09:52:36,10/02/07,S,06MPH,004K,460F,067F,082%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336762,X,038,09:52:42,10/02/07,SSE,09MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336768,I,038,09:52:48,10/02/07,SSE,05MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336774,J,038,09:52:54,10/02/07,S,06MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336780,X,038,09:53:00,10/02/07,E,08MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336786,Z,038,09:53:06,10/02/07,ESE,10MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336792,D,038,09:53:12,10/02/07,ENE,08MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336798,I,038,09:53:18,10/02/07,SE,06MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336804,M,038,09:53:24,10/02/07,SSE,09MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336810,N,038,09:53:30,10/02/07,S,10MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336816,M,038,09:53:36,10/02/07,ESE,05MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336822,L,038,09:53:42,10/02/07,SSE,05MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336828,T,038,09:53:48,10/02/07,SSE,05MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336834,X,038,09:53:54,10/02/07,S,05MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336840,B,038,09:54:00,10/02/07,S,06MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336846,D,038,09:54:06,10/02/07,S,06MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336852,H,038,09:54:12,10/02/07,NW,04MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336858,A,038,09:54:18,10/02/07,SSE,05MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336864,H,038,09:54:24,10/02/07,SE,04MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336870,P,038,09:54:30,10/02/07,SSE,08MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336876,X,038,09:54:36,10/02/07,ESE,10MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336882,I,038,09:54:42,10/02/07,SSE,12MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336888,M,038,09:54:48,10/02/07,S,10MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336894,W,038,09:54:54,10/02/07,SSE,08MPH,004K,460F,067F,082%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336900,E,038,09:55:00,10/02/07,E,06MPH,004K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336906,P,038,09:55:06,10/02/07,SSE,08MPH,004K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336912,A,038,09:55:12,10/02/07,SSE,10MPH,004K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336918,N,038,09:55:18,10/02/07,SE,07MPH,004K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336924,A,038,09:55:24,10/02/07,S,05MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336930,L,038,09:55:30,10/02/07,SE,06MPH,002K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336936,N,038,09:55:36,10/02/07,SSE,08MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336942,X,038,09:55:42,10/02/07,WNW,07MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336948,C,038,09:55:48,10/02/07,ENE,03MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336954,I,038,09:55:54,10/02/07,ESE,05MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336960,W,038,09:56:00,10/02/07,SSE,05MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336966,D,038,09:56:06,10/02/07,S,08MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336972,P,038,09:56:12,10/02/07,SSE,08MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336978,X,038,09:56:18,10/02/07,SSE,09MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336984,F,038,09:56:24,10/02/07,SE,05MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336990,T,038,09:56:30,10/02/07,SSW,06MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336996,T,038,09:56:36,10/02/07,SSE,13MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191337002,B,038,09:56:42,10/02/07,SSE,15MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191337008,J,038,09:56:48,10/02/07,SSE,11MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191337014,T,038,09:56:54,10/02/07,SSE,09MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191337020,H,038,09:57:00,10/02/07,S,09MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191337026,P,038,09:57:06,10/02/07,S,13MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191337032,A,038,09:57:12,10/02/07,SE,10MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191337038,I,038,09:57:18,10/02/07,ESE,06MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191337044,M,038,09:57:24,10/02/07,SSE,06MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191337050,X,038,09:57:30,10/02/07,S,05MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191337056,C,038,09:57:36,10/02/07,SE,03MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191337062,J,038,09:57:42,10/02/07,SSE,09MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337068,X,038,09:57:48,10/02/07,S,08MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191337074,A,038,09:57:54,10/02/07,S,05MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191337080,O,038,09:58:00,10/02/07,S,08MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191337086,Q,038,09:58:06,10/02/07,SE,06MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337092,R,038,09:58:12,10/02/07,ESE,04MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191337098,Z,038,09:58:18,10/02/07,SSE,06MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337104,M,038,09:58:24,10/02/07,S,09MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337110,T,038,09:58:30,10/02/07,SSE,07MPH,003K,460F,067F,083%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191337116,B,038,09:58:36,10/02/07,S,10MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337122,O,038,09:58:42,10/02/07,SSE,12MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337128,V,038,09:58:48,10/02/07,SSE,10MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337134,C,038,09:58:54,10/02/07,S,09MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337140,J,038,09:59:00,10/02/07,SE,11MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337146,R,038,09:59:06,10/02/07,SSE,10MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337152,T,038,09:59:12,10/02/07,SSE,08MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337158,A,038,09:59:18,10/02/07,SSE,05MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337164,Z,038,09:59:24,10/02/07,SSE,08MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337170,E,038,09:59:30,10/02/07,SE,06MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337176,M,038,09:59:36,10/02/07,SSE,06MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337182,Q,038,09:59:42,10/02/07,SSE,08MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337188,W,038,09:59:48,10/02/07,SSE,10MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337194,K,038,09:59:54,10/02/07,SSE,08MPH,004K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337200,R,038,10:00:00,10/02/07,S,07MPH,004K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337206,V,038,10:00:06,10/02/07,SSE,08MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337212,D,038,10:00:12,10/02/07,S,06MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337218,K,038,10:00:18,10/02/07,SSE,05MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337224,S,038,10:00:24,10/02/07,S,07MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337230,D,038,10:00:30,10/02/07,S,05MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337236,L,038,10:00:36,10/02/07,S,05MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337242,U,038,10:00:42,10/02/07,S,07MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337248,C,038,10:00:48,10/02/07,S,07MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337254,H,038,10:00:54,10/02/07,S,11MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337260,S,038,10:01:00,10/02/07,SSE,09MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337266,A,038,10:01:06,10/02/07,SSE,10MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337272,E,038,10:01:12,10/02/07,S,08MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337278,S,038,10:01:18,10/02/07,SSW,06MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337284,X,038,10:01:24,10/02/07,SW,05MPH,003K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337290,K,038,10:01:30,10/02/07,SW,05MPH,002K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337296,Y,038,10:01:36,10/02/07,SW,10MPH,002K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337302,C,038,10:01:42,10/02/07,SE,07MPH,002K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337308,N,038,10:01:48,10/02/07,SE,04MPH,002K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337314,S,038,10:01:54,10/02/07,WSW,05MPH,002K,460F,067F,083%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191337320,F,038,10:02:00,10/02/07,WSW,06MPH,002K,460F,067F,083%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191337326,N,038,10:02:06,10/02/07,WSW,05MPH,002K,460F,067F,083%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191337332,D,038,10:02:12,10/02/07,SW,07MPH,002K,460F,067F,083%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191337338,L,038,10:02:18,10/02/07,SW,06MPH,002K,460F,067F,083%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191337344,T,038,10:02:24,10/02/07,W,06MPH,002K,460F,067F,083%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191337350,H,038,10:02:30,10/02/07,WSW,07MPH,002K,460F,067F,083%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191337356,S,038,10:02:36,10/02/07,WSW,11MPH,002K,460F,067F,083%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191337362,Y,038,10:02:42,10/02/07,WSW,11MPH,002K,460F,067F,083%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191337368,D,038,10:02:48,10/02/07,SW,10MPH,002K,460F,067F,083%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191337374,F,038,10:02:54,10/02/07,WSW,10MPH,002K,460F,067F,083%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191337380,T,038,10:03:00,10/02/07,NW,10MPH,002K,460F,067F,083%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191337386,K,038,10:03:06,10/02/07,WSW,08MPH,002K,460F,067F,083%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191337392,X,038,10:03:12,10/02/07,WSW,09MPH,002K,460F,067F,083%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191337398,T,038,10:03:18,10/02/07,W,10MPH,002K,460F,067F,083%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191337404,E,038,10:03:24,10/02/07,W,11MPH,002K,460F,067F,083%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191337410,S,038,10:03:30,10/02/07,WSW,09MPH,002K,460F,067F,083%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191337416,C,038,10:03:36,10/02/07,W,07MPH,002K,460F,067F,083%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191337422,I,038,10:03:42,10/02/07,W,08MPH,001K,460F,067F,083%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191337428,M,038,10:03:48,10/02/07,W,09MPH,001K,460F,067F,083%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191337434,O,038,10:03:54,10/02/07,WSW,11MPH,001K,460F,067F,083%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191337440,X,038,10:04:00,10/02/07,WSW,13MPH,001K,460F,067F,083%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191337446,I,038,10:04:06,10/02/07,W,10MPH,001K,460F,067F,083%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191337452,W,038,10:04:12,10/02/07,WSW,13MPH,001K,460F,067F,083%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191337458,D,038,10:04:18,10/02/07,W,08MPH,001K,460F,067F,083%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191337464,F,038,10:04:24,10/02/07,WNW,06MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337470,G,038,10:04:30,10/02/07,W,06MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337476,U,038,10:04:36,10/02/07,WSW,07MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337482,F,038,10:04:42,10/02/07,W,08MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337488,M,038,10:04:48,10/02/07,W,06MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337494,A,038,10:04:54,10/02/07,W,07MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337500,O,038,10:05:00,10/02/07,NW,05MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337506,C,038,10:05:06,10/02/07,WNW,05MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337512,J,038,10:05:12,10/02/07,WNW,04MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337518,U,038,10:05:18,10/02/07,SW,06MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337524,N,038,10:05:24,10/02/07,W,06MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337530,B,038,10:05:30,10/02/07,W,04MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337536,G,038,10:05:36,10/02/07,W,05MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337542,N,038,10:05:42,10/02/07,NW,05MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337548,S,038,10:05:48,10/02/07,WSW,05MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337554,A,038,10:05:54,10/02/07,WNW,04MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337560,N,038,10:06:00,10/02/07,W,05MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337566,S,038,10:06:06,10/02/07,W,04MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337572,A,038,10:06:12,10/02/07,NNW,03MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337578,F,038,10:06:18,10/02/07,WNW,01MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337584,H,038,10:06:24,10/02/07,NNW,02MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337590,Q,038,10:06:30,10/02/07,WSW,03MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337596,G,038,10:06:36,10/02/07,SW,05MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337602,P,038,10:06:42,10/02/07,SW,10MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337608,G,038,10:06:48,10/02/07,WSW,16MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337614,O,038,10:06:54,10/02/07,WSW,11MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337620,Y,038,10:07:00,10/02/07,WNW,10MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337626,D,038,10:07:06,10/02/07,W,06MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337632,L,038,10:07:12,10/02/07,W,08MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337638,T,038,10:07:18,10/02/07,NW,07MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191337644,W,038,10:07:24,10/02/07,NNW,08MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337650,N,038,10:07:30,10/02/07,W,06MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337656,Y,038,10:07:36,10/02/07,W,16MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337662,J,038,10:07:42,10/02/07,WSW,10MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337668,R,038,10:07:48,10/02/07,WSW,08MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337674,V,038,10:07:54,10/02/07,WSW,06MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337680,D,038,10:08:00,10/02/07,WSW,06MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337686,O,038,10:08:06,10/02/07,WSW,09MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337692,W,038,10:08:12,10/02/07,WSW,12MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337698,E,038,10:08:18,10/02/07,WSW,10MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337704,M,038,10:08:24,10/02/07,W,11MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337710,C,038,10:08:30,10/02/07,WSW,09MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337716,J,038,10:08:36,10/02/07,W,10MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337722,T,038,10:08:42,10/02/07,WNW,05MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337728,A,038,10:08:48,10/02/07,WNW,08MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337734,E,038,10:08:54,10/02/07,W,06MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337740,M,038,10:09:00,10/02/07,NNE,06MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337746,R,038,10:09:06,10/02/07,WNW,05MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337752,Z,038,10:09:12,10/02/07,W,08MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337758,K,038,10:09:18,10/02/07,WNW,06MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337764,L,038,10:09:24,10/02/07,W,06MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337770,F,038,10:09:30,10/02/07,NNE,05MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337776,N,038,10:09:36,10/02/07,W,04MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337782,V,038,10:09:42,10/02/07,WSW,06MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337788,A,038,10:09:48,10/02/07,W,03MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337794,Y,038,10:09:54,10/02/07,WNW,04MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337800,G,038,10:10:00,10/02/07,WSW,09MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337806,R,038,10:10:06,10/02/07,WSW,06MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337812,Z,038,10:10:12,10/02/07,WSW,03MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337818,G,038,10:10:18,10/02/07,WSW,04MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337824,H,038,10:10:24,10/02/07,W,03MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337830,E,038,10:10:30,10/02/07,WSW,06MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337836,G,038,10:10:36,10/02/07,W,04MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337842,L,038,10:10:42,10/02/07,WNW,05MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337848,W,038,10:10:48,10/02/07,W,09MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337854,X,038,10:10:54,10/02/07,WSW,09MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337860,O,038,10:11:00,10/02/07,WSW,09MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337866,C,038,10:11:06,10/02/07,W,06MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337872,P,038,10:11:12,10/02/07,NW,05MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337878,A,038,10:11:18,10/02/07,N,05MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337884,B,038,10:11:24,10/02/07,W,04MPH,003K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337890,R,038,10:11:30,10/02/07,S,05MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337896,B,038,10:11:36,10/02/07,WSW,07MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337902,A,038,10:11:42,10/02/07,SW,08MPH,003K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337908,J,038,10:11:48,10/02/07,WSW,10MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337914,U,038,10:11:54,10/02/07,W,08MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337920,L,038,10:12:00,10/02/07,WSW,08MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337926,W,038,10:12:06,10/02/07,WSW,07MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337932,D,038,10:12:12,10/02/07,SW,06MPH,003K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337938,M,038,10:12:18,10/02/07,WSW,06MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337944,R,038,10:12:24,10/02/07,W,06MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337950,F,038,10:12:30,10/02/07,WSW,05MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337956,P,038,10:12:36,10/02/07,SW,05MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337962,U,038,10:12:42,10/02/07,WSW,05MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337968,I,038,10:12:48,10/02/07,WSW,05MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337974,G,038,10:12:54,10/02/07,SW,05MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337980,Z,038,10:13:00,10/02/07,SW,07MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337986,Y,038,10:13:06,10/02/07,WNW,05MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337992,M,038,10:13:12,10/02/07,WSW,03MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191337998,L,038,10:13:18,10/02/07,SW,07MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338004,W,038,10:13:24,10/02/07,WSW,06MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338010,C,038,10:13:30,10/02/07,WNW,04MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338016,K,038,10:13:36,10/02/07,WNW,03MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338022,V,038,10:13:42,10/02/07,WSW,04MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338028,O,038,10:13:48,10/02/07,WSW,04MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338034,V,038,10:13:54,10/02/07,SW,04MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338040,K,038,10:14:00,10/02/07,WSW,03MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338046,M,038,10:14:06,10/02/07,S,03MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338052,U,038,10:14:12,10/02/07,SSW,04MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338058,B,038,10:14:18,10/02/07,WSW,04MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338064,M,038,10:14:24,10/02/07,W,06MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338070,L,038,10:14:30,10/02/07,SW,04MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338076,E,038,10:14:36,10/02/07,WSW,05MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338082,J,038,10:14:42,10/02/07,SW,03MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338088,X,038,10:14:48,10/02/07,WSW,04MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338094,C,038,10:14:54,10/02/07,WSW,03MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338100,M,038,10:15:00,10/02/07,WNW,03MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338106,R,038,10:15:06,10/02/07,W,03MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338112,T,038,10:15:12,10/02/07,WNW,03MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338118,Y,038,10:15:18,10/02/07,W,03MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338124,S,038,10:15:24,10/02/07,NW,03MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338130,S,038,10:15:30,10/02/07,W,02MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338136,K,038,10:15:36,10/02/07,NW,03MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338142,L,038,10:15:42,10/02/07,WNW,03MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338148,Z,038,10:15:48,10/02/07,WNW,03MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338154,X,038,10:15:54,10/02/07,W,03MPH,002K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338160,K,038,10:16:00,10/02/07,WNW,05MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338166,M,038,10:16:06,10/02/07,WSW,06MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338172,T,038,10:16:12,10/02/07,WNW,05MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338178,E,038,10:16:18,10/02/07,WNW,05MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338184,S,038,10:16:24,10/02/07,W,07MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338190,C,038,10:16:30,10/02/07,W,08MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338196,K,038,10:16:36,10/02/07,W,07MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338202,S,038,10:16:42,10/02/07,WNW,07MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338208,Z,038,10:16:48,10/02/07,NW,05MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338214,X,038,10:16:54,10/02/07,WNW,03MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338220,F,038,10:17:00,10/02/07,W,06MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338226,H,038,10:17:06,10/02/07,WNW,07MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338232,Y,038,10:17:12,10/02/07,W,06MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338238,G,038,10:17:18,10/02/07,WNW,05MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338244,T,038,10:17:24,10/02/07,WNW,03MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338250,Y,038,10:17:30,10/02/07,NW,03MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338256,J,038,10:17:36,10/02/07,WNW,02MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338262,K,038,10:17:42,10/02/07,N,01MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338268,M,038,10:17:48,10/02/07,W,07MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338274,O,038,10:17:54,10/02/07,WSW,08MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338280,Z,038,10:18:00,10/02/07,WNW,06MPH,002K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338286,G,038,10:18:06,10/02/07,W,06MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338292,N,038,10:18:12,10/02/07,WNW,07MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338298,V,038,10:18:18,10/02/07,NNW,05MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338304,X,038,10:18:24,10/02/07,NNW,05MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338310,B,038,10:18:30,10/02/07,NNW,06MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338316,I,038,10:18:36,10/02/07,WSW,06MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338322,K,038,10:18:42,10/02/07,WNW,05MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338328,U,038,10:18:48,10/02/07,W,05MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338334,S,038,10:18:54,10/02/07,WSW,03MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338340,G,038,10:19:00,10/02/07,NNW,06MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338346,L,038,10:19:06,10/02/07,WNW,03MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338352,N,038,10:19:12,10/02/07,WSW,04MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338358,Y,038,10:19:18,10/02/07,NNW,03MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338364,Z,038,10:19:24,10/02/07,WSW,05MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338370,H,038,10:19:30,10/02/07,W,04MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338376,J,038,10:19:36,10/02/07,W,07MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338382,H,038,10:19:42,10/02/07,WNW,05MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338388,Y,038,10:19:48,10/02/07,W,12MPH,001K,460F,067F,083%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338394,Z,038,10:19:54,10/02/07,W,06MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338400,N,038,10:20:00,10/02/07,NW,05MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338406,R,038,10:20:06,10/02/07,W,05MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338412,Q,038,10:20:12,10/02/07,W,06MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338418,S,038,10:20:18,10/02/07,NW,09MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338424,T,038,10:20:24,10/02/07,WNW,06MPH,001K,460F,067F,083%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338430,A,038,10:20:30,10/02/07,W,06MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338436,F,038,10:20:36,10/02/07,W,06MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338442,I,038,10:20:42,10/02/07,NW,04MPH,001K,460F,067F,084%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338448,V,038,10:20:48,10/02/07,NNW,05MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338454,A,038,10:20:54,10/02/07,NW,03MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338460,I,038,10:21:00,10/02/07,NW,03MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338466,O,038,10:21:06,10/02/07,NNW,05MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338472,H,038,10:21:12,10/02/07,NW,05MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338478,Y,038,10:21:18,10/02/07,NW,08MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338484,U,038,10:21:24,10/02/07,NNW,05MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338490,Z,038,10:21:30,10/02/07,NNW,06MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338496,S,038,10:21:36,10/02/07,N,05MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338502,U,038,10:21:42,10/02/07,NNW,06MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338508,I,038,10:21:48,10/02/07,WNW,07MPH,001K,460F,067F,084%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338514,P,038,10:21:54,10/02/07,NNW,04MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338520,U,038,10:22:00,10/02/07,N,04MPH,001K,460F,067F,084%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191338526,F,038,10:22:06,10/02/07,NNW,04MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338532,E,038,10:22:12,10/02/07,NNW,05MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338538,O,038,10:22:18,10/02/07,N,05MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338544,K,038,10:22:24,10/02/07,NNW,03MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338550,X,038,10:22:30,10/02/07,NNW,02MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338556,E,038,10:22:36,10/02/07,NNW,03MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338562,R,038,10:22:42,10/02/07,NNW,03MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338568,B,038,10:22:48,10/02/07,N,03MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338574,Z,038,10:22:54,10/02/07,NNW,03MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338580,G,038,10:23:00,10/02/07,NNW,03MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338586,N,038,10:23:06,10/02/07,N,03MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338592,L,038,10:23:12,10/02/07,WSW,01MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338598,S,038,10:23:18,10/02/07,W,02MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338604,W,038,10:23:24,10/02/07,NNW,03MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338610,I,038,10:23:30,10/02/07,NNE,04MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338616,P,038,10:23:36,10/02/07,NNW,03MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338622,N,038,10:23:42,10/02/07,NNW,03MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338628,A,038,10:23:48,10/02/07,NNW,03MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338634,E,038,10:23:54,10/02/07,NNW,03MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338640,J,038,10:24:00,10/02/07,NNW,03MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338646,N,038,10:24:06,10/02/07,NNW,02MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338652,M,038,10:24:12,10/02/07,NNW,02MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338658,W,038,10:24:18,10/02/07,NNW,02MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338664,K,038,10:24:24,10/02/07,NNW,02MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338670,E,038,10:24:30,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338676,T,038,10:24:36,10/02/07,NW,01MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338682,S,038,10:24:42,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338688,D,038,10:24:48,10/02/07,WNW,01MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338694,I,038,10:24:54,10/02/07,WSW,02MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338700,Q,038,10:25:00,10/02/07,W,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338706,R,038,10:25:06,10/02/07,SE,02MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191338712,W,038,10:25:12,10/02/07,ENE,02MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338718,B,038,10:25:18,10/02/07,SSW,03MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338724,J,038,10:25:24,10/02/07,SSW,04MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338730,N,038,10:25:30,10/02/07,SW,03MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338736,D,038,10:25:36,10/02/07,W,02MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338742,E,038,10:25:42,10/02/07,SSW,02MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338748,G,038,10:25:48,10/02/07,S,02MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338754,R,038,10:25:54,10/02/07,SE,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338760,E,038,10:26:00,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338766,I,038,10:26:06,10/02/07,SSW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338772,Q,038,10:26:12,10/02/07,E,02MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338778,S,038,10:26:18,10/02/07,E,03MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338784,D,038,10:26:24,10/02/07,E,03MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338790,F,038,10:26:30,10/02/07,E,03MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338796,T,038,10:26:36,10/02/07,ESE,03MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338802,Q,038,10:26:42,10/02/07,ESE,03MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338808,A,038,10:26:48,10/02/07,E,03MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338814,I,038,10:26:54,10/02/07,ESE,03MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338820,W,038,10:27:00,10/02/07,E,04MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338826,Z,038,10:27:06,10/02/07,E,03MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338832,E,038,10:27:12,10/02/07,ENE,03MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338838,P,038,10:27:18,10/02/07,ENE,04MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338844,U,038,10:27:24,10/02/07,ENE,03MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338850,Z,038,10:27:30,10/02/07,E,03MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338856,Z,038,10:27:36,10/02/07,ENE,03MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338862,Y,038,10:27:42,10/02/07,ENE,03MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338868,M,038,10:27:48,10/02/07,E,02MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338874,R,038,10:27:54,10/02/07,E,02MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338880,F,038,10:28:00,10/02/07,ENE,02MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338886,G,038,10:28:06,10/02/07,N,02MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338892,O,038,10:28:12,10/02/07,N,01MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338898,N,038,10:28:18,10/02/07,N,01MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338904,M,038,10:28:24,10/02/07,N,01MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338910,L,038,10:28:30,10/02/07,N,01MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338916,P,038,10:28:36,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338922,Q,038,10:28:42,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338928,D,038,10:28:48,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338934,D,038,10:28:54,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338940,Y,038,10:29:00,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338946,D,038,10:29:06,10/02/07,N,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338952,G,038,10:29:12,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338958,A,038,10:29:18,10/02/07,N,01MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338964,M,038,10:29:24,10/02/07,N,01MPH,002K,460F,067F,084%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191338970,I,038,10:29:30,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338976,K,038,10:29:36,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338982,D,038,10:29:42,10/02/07,N,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338988,O,038,10:29:48,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191338994,P,038,10:29:54,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339000,R,038,10:30:00,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339006,M,038,10:30:06,10/02/07,NNW,00MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339012,T,038,10:30:12,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339018,V,038,10:30:18,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339024,C,038,10:30:24,10/02/07,NW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339030,E,038,10:30:30,10/02/07,NW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339036,M,038,10:30:36,10/02/07,NW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339042,N,038,10:30:42,10/02/07,WNW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339048,P,038,10:30:48,10/02/07,WNW,02MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339054,W,038,10:30:54,10/02/07,WNW,02MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339060,B,038,10:31:00,10/02/07,WNW,02MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339066,O,038,10:31:06,10/02/07,WNW,02MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339072,Y,038,10:31:12,10/02/07,NW,02MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339078,E,038,10:31:18,10/02/07,NW,01MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339084,S,038,10:31:24,10/02/07,NNW,02MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339090,X,038,10:31:30,10/02/07,NNW,02MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339096,L,038,10:31:36,10/02/07,NNW,02MPH,002K,460F,067F,084%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339102,V,038,10:31:42,10/02/07,NNW,02MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339108,I,038,10:31:48,10/02/07,NNW,02MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339114,Q,038,10:31:54,10/02/07,NNW,01MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339120,V,038,10:32:00,10/02/07,N,02MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339126,D,038,10:32:06,10/02/07,NNW,02MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339132,X,038,10:32:12,10/02/07,WNW,02MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339138,H,038,10:32:18,10/02/07,NW,03MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339144,Y,038,10:32:24,10/02/07,WNW,02MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339150,G,038,10:32:30,10/02/07,NW,01MPH,002K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339156,R,038,10:32:36,10/02/07,NW,02MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339162,N,038,10:32:42,10/02/07,NNW,03MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339168,A,038,10:32:48,10/02/07,NW,02MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339174,L,038,10:32:54,10/02/07,NW,03MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339180,W,038,10:33:00,10/02/07,NNW,02MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339186,H,038,10:33:06,10/02/07,NNW,03MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339192,S,038,10:33:12,10/02/07,NW,02MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339198,F,038,10:33:18,10/02/07,NW,02MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339204,N,038,10:33:24,10/02/07,NNW,01MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339210,P,038,10:33:30,10/02/07,NNW,01MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339216,U,038,10:33:36,10/02/07,NNW,02MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339222,M,038,10:33:42,10/02/07,N,03MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339228,T,038,10:33:48,10/02/07,NW,03MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339234,Y,038,10:33:54,10/02/07,NW,02MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339240,I,038,10:34:00,10/02/07,NW,03MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339246,N,038,10:34:06,10/02/07,NNW,05MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339252,J,038,10:34:12,10/02/07,NNW,05MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339258,M,038,10:34:18,10/02/07,NNW,05MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339264,U,038,10:34:24,10/02/07,NW,03MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339270,O,038,10:34:30,10/02/07,NNW,03MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339276,X,038,10:34:36,10/02/07,NNW,05MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339282,U,038,10:34:42,10/02/07,NNW,04MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339288,A,038,10:34:48,10/02/07,NW,05MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339294,E,038,10:34:54,10/02/07,NW,03MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339300,O,038,10:35:00,10/02/07,N,03MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339306,P,038,10:35:06,10/02/07,NNW,03MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339312,U,038,10:35:12,10/02/07,NNW,03MPH,001K,460F,067F,084%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339318,C,038,10:35:18,10/02/07,NNW,03MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339324,C,038,10:35:24,10/02/07,NW,03MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339330,D,038,10:35:30,10/02/07,NNW,04MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339336,Q,038,10:35:36,10/02/07,NW,03MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339342,B,038,10:35:42,10/02/07,NNW,04MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339348,P,038,10:35:48,10/02/07,NNW,03MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339354,X,038,10:35:54,10/02/07,NW,04MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339360,I,038,10:36:00,10/02/07,NNW,05MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339366,G,038,10:36:06,10/02/07,NNW,03MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339372,O,038,10:36:12,10/02/07,NNW,03MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339378,U,038,10:36:18,10/02/07,WNW,02MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339384,Z,038,10:36:24,10/02/07,NW,03MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339390,K,038,10:36:30,10/02/07,WNW,02MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339396,V,038,10:36:36,10/02/07,NW,02MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339402,U,038,10:36:42,10/02/07,NNW,04MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339408,H,038,10:36:48,10/02/07,NNW,03MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339414,T,038,10:36:54,10/02/07,NNW,03MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339420,H,038,10:37:00,10/02/07,NNW,03MPH,001K,460F,067F,085%,29.82S,00.00\"D,00.01\"M,00.00\"R\n1191339426,G,038,10:37:06,10/02/07,N,02MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339432,I,038,10:37:12,10/02/07,NNW,02MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339438,S,038,10:37:18,10/02/07,NW,03MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339444,D,038,10:37:24,10/02/07,NNW,03MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339450,O,038,10:37:30,10/02/07,NNW,03MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339456,W,038,10:37:36,10/02/07,NNW,03MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339462,B,038,10:37:42,10/02/07,NW,04MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339468,O,038,10:37:48,10/02/07,NNW,04MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339474,Q,038,10:37:54,10/02/07,WNW,02MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339480,X,038,10:38:00,10/02/07,NNW,03MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339486,W,038,10:38:06,10/02/07,NW,03MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339492,B,038,10:38:12,10/02/07,NNE,03MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339498,C,038,10:38:18,10/02/07,NE,03MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339504,N,038,10:38:24,10/02/07,N,02MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339510,H,038,10:38:30,10/02/07,NNE,03MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339516,L,038,10:38:36,10/02/07,NNE,03MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339522,J,038,10:38:42,10/02/07,NNE,03MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339528,L,038,10:38:48,10/02/07,N,03MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339534,N,038,10:38:54,10/02/07,NNE,03MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339540,T,038,10:39:00,10/02/07,N,03MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339546,P,038,10:39:06,10/02/07,NNE,03MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339552,T,038,10:39:12,10/02/07,NNE,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339558,E,038,10:39:18,10/02/07,NE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339564,P,038,10:39:24,10/02/07,N,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339570,U,038,10:39:30,10/02/07,N,01MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339576,W,038,10:39:36,10/02/07,N,02MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339582,O,038,10:39:42,10/02/07,NNW,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339588,B,038,10:39:48,10/02/07,NNW,01MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339594,A,038,10:39:54,10/02/07,N,01MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191339600,W,038,10:40:00,10/02/07,N,01MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339606,B,038,10:40:06,10/02/07,NE,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339612,F,038,10:40:12,10/02/07,NE,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339618,K,038,10:40:18,10/02/07,NW,01MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339624,P,038,10:40:24,10/02/07,N,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339630,O,038,10:40:30,10/02/07,N,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339636,P,038,10:40:36,10/02/07,N,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339642,K,038,10:40:42,10/02/07,N,01MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339648,M,038,10:40:48,10/02/07,NNW,01MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339654,K,038,10:40:54,10/02/07,N,01MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339660,B,038,10:41:00,10/02/07,NNW,00MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339666,G,038,10:41:06,10/02/07,N,00MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339672,O,038,10:41:12,10/02/07,N,01MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339678,Q,038,10:41:18,10/02/07,NNE,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339684,X,038,10:41:24,10/02/07,N,01MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339690,W,038,10:41:30,10/02/07,NE,01MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339696,B,038,10:41:36,10/02/07,E,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339702,A,038,10:41:42,10/02/07,NE,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339708,L,038,10:41:48,10/02/07,NE,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339714,P,038,10:41:54,10/02/07,ENE,01MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339720,X,038,10:42:00,10/02/07,E,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339726,C,038,10:42:06,10/02/07,ENE,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339732,E,038,10:42:12,10/02/07,ENE,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339738,M,038,10:42:18,10/02/07,NE,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339744,N,038,10:42:24,10/02/07,E,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339750,R,038,10:42:30,10/02/07,E,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339756,W,038,10:42:36,10/02/07,ESE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339762,V,038,10:42:42,10/02/07,E,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339768,J,038,10:42:48,10/02/07,ENE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339774,K,038,10:42:54,10/02/07,ESE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339780,V,038,10:43:00,10/02/07,E,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339786,A,038,10:43:06,10/02/07,E,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339792,C,038,10:43:12,10/02/07,ESE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339798,K,038,10:43:18,10/02/07,ESE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339804,O,038,10:43:24,10/02/07,ESE,04MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339810,T,038,10:43:30,10/02/07,E,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339816,B,038,10:43:36,10/02/07,E,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339822,Z,038,10:43:42,10/02/07,E,04MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339828,M,038,10:43:48,10/02/07,ESE,04MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339834,R,038,10:43:54,10/02/07,ESE,05MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339840,V,038,10:44:00,10/02/07,E,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339846,W,038,10:44:06,10/02/07,E,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339852,H,038,10:44:12,10/02/07,SSE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339858,P,038,10:44:18,10/02/07,ESE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339864,C,038,10:44:24,10/02/07,ESE,04MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339870,N,038,10:44:30,10/02/07,ESE,05MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339876,P,038,10:44:36,10/02/07,SE,05MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339882,U,038,10:44:42,10/02/07,ENE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339888,E,038,10:44:48,10/02/07,E,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339894,A,038,10:44:54,10/02/07,ENE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339900,D,038,10:45:00,10/02/07,ENE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339906,F,038,10:45:06,10/02/07,NE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339912,N,038,10:45:12,10/02/07,ENE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339918,U,038,10:45:18,10/02/07,ENE,04MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339924,L,038,10:45:24,10/02/07,NE,04MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339930,Q,038,10:45:30,10/02/07,ENE,04MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339936,A,038,10:45:36,10/02/07,NE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339942,C,038,10:45:42,10/02/07,E,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339948,T,038,10:45:48,10/02/07,ENE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339954,X,038,10:45:54,10/02/07,NE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339960,A,038,10:46:00,10/02/07,ENE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339966,F,038,10:46:06,10/02/07,NE,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339972,Q,038,10:46:12,10/02/07,NNE,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339978,D,038,10:46:18,10/02/07,N,03MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339984,L,038,10:46:24,10/02/07,NNE,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339990,V,038,10:46:30,10/02/07,N,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191339996,M,038,10:46:36,10/02/07,N,01MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340002,K,038,10:46:42,10/02/07,NNW,01MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340008,Y,038,10:46:48,10/02/07,NNW,01MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340014,C,038,10:46:54,10/02/07,NNW,02MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340020,M,038,10:47:00,10/02/07,NNW,02MPH,001K,460F,067F,085%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340026,U,038,10:47:06,10/02/07,NW,01MPH,001K,460F,067F,085%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340032,X,038,10:47:12,10/02/07,NNW,01MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340038,F,038,10:47:18,10/02/07,NW,02MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340044,S,038,10:47:24,10/02/07,NW,02MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340050,A,038,10:47:30,10/02/07,W,02MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340056,H,038,10:47:36,10/02/07,NW,02MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340062,L,038,10:47:42,10/02/07,NW,02MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340068,W,038,10:47:48,10/02/07,NW,02MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340074,G,038,10:47:54,10/02/07,NW,03MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340080,S,038,10:48:00,10/02/07,WNW,02MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340086,D,038,10:48:06,10/02/07,WNW,02MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340092,O,038,10:48:12,10/02/07,NNW,02MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340098,W,038,10:48:18,10/02/07,NW,02MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340104,D,038,10:48:24,10/02/07,NNW,01MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340110,K,038,10:48:30,10/02/07,NNW,02MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340116,R,038,10:48:36,10/02/07,NNW,03MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340122,T,038,10:48:42,10/02/07,NW,03MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340128,D,038,10:48:48,10/02/07,NNW,02MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340134,N,038,10:48:54,10/02/07,NNW,02MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340140,Y,038,10:49:00,10/02/07,NNW,03MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340146,D,038,10:49:06,10/02/07,N,04MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340152,O,038,10:49:12,10/02/07,NW,04MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340158,T,038,10:49:18,10/02/07,NNW,03MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340164,D,038,10:49:24,10/02/07,NW,04MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340170,I,038,10:49:30,10/02/07,NW,03MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340176,N,038,10:49:36,10/02/07,NNW,03MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340182,M,038,10:49:42,10/02/07,NNW,04MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340188,G,038,10:49:48,10/02/07,NW,04MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340194,N,038,10:49:54,10/02/07,NW,04MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340200,D,038,10:50:00,10/02/07,NW,03MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340206,O,038,10:50:06,10/02/07,NW,05MPH,001K,460F,066F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340212,W,038,10:50:12,10/02/07,NNW,05MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340218,E,038,10:50:18,10/02/07,NNW,04MPH,001K,460F,066F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340224,L,038,10:50:24,10/02/07,NW,05MPH,001K,460F,067F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340230,Q,038,10:50:30,10/02/07,NNW,05MPH,001K,460F,066F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340236,B,038,10:50:36,10/02/07,NNW,05MPH,001K,460F,066F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340242,I,038,10:50:42,10/02/07,NW,04MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340248,P,038,10:50:48,10/02/07,NNW,04MPH,001K,460F,066F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340254,W,038,10:50:54,10/02/07,N,03MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340260,B,038,10:51:00,10/02/07,N,03MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340266,D,038,10:51:06,10/02/07,NNW,02MPH,001K,460F,066F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340272,L,038,10:51:12,10/02/07,NNW,02MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340278,V,038,10:51:18,10/02/07,N,03MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340284,D,038,10:51:24,10/02/07,N,03MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340290,I,038,10:51:30,10/02/07,NW,03MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340296,Q,038,10:51:36,10/02/07,NNW,03MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340302,R,038,10:51:42,10/02/07,WNW,04MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340308,E,038,10:51:48,10/02/07,NNW,03MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340314,F,038,10:51:54,10/02/07,N,02MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340320,J,038,10:52:00,10/02/07,WNW,01MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340326,I,038,10:52:06,10/02/07,NW,02MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340332,K,038,10:52:12,10/02/07,NNW,03MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340338,N,038,10:52:18,10/02/07,NNW,02MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340344,X,038,10:52:24,10/02/07,NNW,03MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340350,B,038,10:52:30,10/02/07,NNW,03MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340356,L,038,10:52:36,10/02/07,NNW,04MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340362,K,038,10:52:42,10/02/07,N,03MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340368,P,038,10:52:48,10/02/07,NNW,02MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340374,R,038,10:52:54,10/02/07,NNW,02MPH,001K,460F,066F,086%,29.81F,00.00\"D,00.01\"M,00.00\"R\n1191340380,V,038,10:53:00,10/02/07,NW,03MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340386,A,038,10:53:06,10/02/07,NW,03MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340392,C,038,10:53:12,10/02/07,NNW,02MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340398,J,038,10:53:18,10/02/07,NW,02MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340404,R,038,10:53:24,10/02/07,NNW,02MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340410,Y,038,10:53:30,10/02/07,NNW,02MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340416,G,038,10:53:36,10/02/07,WNW,02MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340422,B,038,10:53:42,10/02/07,NNW,03MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340428,I,038,10:53:48,10/02/07,N,02MPH,001K,460F,066F,086%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340434,K,038,10:53:54,10/02/07,NNW,02MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340440,O,038,10:54:00,10/02/07,NNW,01MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340446,Q,038,10:54:06,10/02/07,N,02MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340452,S,038,10:54:12,10/02/07,NNE,03MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340458,X,038,10:54:18,10/02/07,NNE,02MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340464,E,038,10:54:24,10/02/07,NNE,03MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340470,A,038,10:54:30,10/02/07,N,02MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340476,B,038,10:54:36,10/02/07,N,03MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340482,A,038,10:54:42,10/02/07,NNW,03MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340488,I,038,10:54:48,10/02/07,N,03MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340494,G,038,10:54:54,10/02/07,NNE,03MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340500,O,038,10:55:00,10/02/07,N,02MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340506,N,038,10:55:06,10/02/07,NNW,03MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340512,R,038,10:55:12,10/02/07,N,03MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340518,Z,038,10:55:18,10/02/07,NW,02MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340524,M,038,10:55:24,10/02/07,NW,02MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340530,L,038,10:55:30,10/02/07,N,01MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340536,V,038,10:55:36,10/02/07,N,02MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340542,R,038,10:55:42,10/02/07,NNE,02MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340548,Z,038,10:55:48,10/02/07,N,03MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340554,T,038,10:55:54,10/02/07,NNW,03MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340560,H,038,10:56:00,10/02/07,N,03MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340566,M,038,10:56:06,10/02/07,N,03MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340572,Z,038,10:56:12,10/02/07,NNW,03MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340578,D,038,10:56:18,10/02/07,N,02MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340584,R,038,10:56:24,10/02/07,NNW,02MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340590,W,038,10:56:30,10/02/07,NNW,03MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340596,H,038,10:56:36,10/02/07,N,02MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340602,J,038,10:56:42,10/02/07,NNW,02MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340608,W,038,10:56:48,10/02/07,NNW,02MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340614,H,038,10:56:54,10/02/07,NNW,01MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340620,S,038,10:57:00,10/02/07,NNW,01MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340626,Z,038,10:57:06,10/02/07,N,02MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340632,J,038,10:57:12,10/02/07,N,02MPH,001K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340638,T,038,10:57:18,10/02/07,N,02MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340644,S,038,10:57:24,10/02/07,N,01MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340650,G,038,10:57:30,10/02/07,N,01MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340656,R,038,10:57:36,10/02/07,N,01MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340662,W,038,10:57:42,10/02/07,N,03MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340668,M,038,10:57:48,10/02/07,NNW,03MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340674,O,038,10:57:54,10/02/07,N,03MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340680,C,038,10:58:00,10/02/07,N,01MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340686,Y,038,10:58:06,10/02/07,NNE,01MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340692,L,038,10:58:12,10/02/07,NNW,01MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340698,Q,038,10:58:18,10/02/07,NNE,01MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340704,A,038,10:58:24,10/02/07,NNE,01MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340710,I,038,10:58:30,10/02/07,NNE,01MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340716,T,038,10:58:36,10/02/07,NNE,02MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340722,X,038,10:58:42,10/02/07,N,01MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340728,G,038,10:58:48,10/02/07,NNE,01MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340734,I,038,10:58:54,10/02/07,NNE,02MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340740,S,038,10:59:00,10/02/07,NNE,02MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340746,X,038,10:59:06,10/02/07,N,03MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340752,T,038,10:59:12,10/02/07,N,03MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340758,A,038,10:59:18,10/02/07,NNE,03MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340764,U,038,10:59:24,10/02/07,NNE,03MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340770,W,038,10:59:30,10/02/07,NNE,02MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340776,F,038,10:59:36,10/02/07,N,02MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340782,E,038,10:59:42,10/02/07,NNW,02MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340788,S,038,10:59:48,10/02/07,N,01MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340794,W,038,10:59:54,10/02/07,NNW,01MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340800,H,038,11:00:00,10/02/07,NNW,01MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340806,L,038,11:00:06,10/02/07,NNW,01MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340812,T,038,11:00:12,10/02/07,N,01MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340818,H,038,11:00:18,10/02/07,N,01MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340824,U,038,11:00:24,10/02/07,NNW,01MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340830,A,038,11:00:30,10/02/07,NNW,01MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340836,N,038,11:00:36,10/02/07,NNW,02MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340842,J,038,11:00:42,10/02/07,NNW,02MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340848,A,038,11:00:48,10/02/07,N,02MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340854,C,038,11:00:54,10/02/07,N,02MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340860,G,038,11:01:00,10/02/07,NNW,02MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340866,I,038,11:01:06,10/02/07,N,02MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340872,Q,038,11:01:12,10/02/07,N,02MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340878,Y,038,11:01:18,10/02/07,N,02MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340884,H,038,11:01:24,10/02/07,NNW,01MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340890,M,038,11:01:30,10/02/07,N,02MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340896,O,038,11:01:36,10/02/07,NNW,02MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340902,I,038,11:01:42,10/02/07,NNW,02MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340908,W,038,11:01:48,10/02/07,NNW,02MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340914,Y,038,11:01:54,10/02/07,NNW,02MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340920,F,038,11:02:00,10/02/07,NNW,02MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340926,J,038,11:02:06,10/02/07,NW,03MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340932,D,038,11:02:12,10/02/07,NNW,03MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340938,E,038,11:02:18,10/02/07,NNW,03MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340944,P,038,11:02:24,10/02/07,NNW,03MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340950,O,038,11:02:30,10/02/07,NW,03MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340956,Z,038,11:02:36,10/02/07,NW,03MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340962,R,038,11:02:42,10/02/07,NW,03MPH,002K,460F,066F,087%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340968,F,038,11:02:48,10/02/07,NW,03MPH,002K,460F,066F,087%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340974,K,038,11:02:54,10/02/07,NW,03MPH,002K,460F,066F,088%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191340980,V,038,11:03:00,10/02/07,NW,03MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340986,A,038,11:03:06,10/02/07,NW,02MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340992,I,038,11:03:12,10/02/07,NW,02MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191340998,G,038,11:03:18,10/02/07,NW,02MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341004,R,038,11:03:24,10/02/07,NW,01MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341010,Q,038,11:03:30,10/02/07,NW,02MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341016,Y,038,11:03:36,10/02/07,NNW,02MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341022,Q,038,11:03:42,10/02/07,NW,01MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341028,J,038,11:03:48,10/02/07,NW,01MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341034,L,038,11:03:54,10/02/07,WNW,01MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341040,V,038,11:04:00,10/02/07,WNW,01MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341046,R,038,11:04:06,10/02/07,WNW,02MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341052,K,038,11:04:12,10/02/07,WNW,02MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341058,O,038,11:04:18,10/02/07,NW,01MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341064,Q,038,11:04:24,10/02/07,WNW,03MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341070,V,038,11:04:30,10/02/07,WNW,03MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341076,F,038,11:04:36,10/02/07,W,03MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341082,K,038,11:04:42,10/02/07,W,03MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341088,V,038,11:04:48,10/02/07,W,03MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341094,A,038,11:04:54,10/02/07,NW,03MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341100,L,038,11:05:00,10/02/07,WNW,03MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341106,K,038,11:05:06,10/02/07,WNW,03MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341112,O,038,11:05:12,10/02/07,NW,02MPH,001K,460F,066F,088%,29.80F,00.00\"D,00.01\"M,00.00\"R\n1191341118,T,038,11:05:18,10/02/07,WNW,03MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341124,D,038,11:05:24,10/02/07,WNW,03MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341130,F,038,11:05:30,10/02/07,WSW,03MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341136,N,038,11:05:36,10/02/07,W,03MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341142,R,038,11:05:42,10/02/07,NNW,03MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341148,E,038,11:05:48,10/02/07,N,02MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341154,A,038,11:05:54,10/02/07,NNW,03MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341160,I,038,11:06:00,10/02/07,N,02MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341166,J,038,11:06:06,10/02/07,NNW,02MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341172,J,038,11:06:12,10/02/07,NW,01MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341178,O,038,11:06:18,10/02/07,W,05MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341184,Z,038,11:06:24,10/02/07,W,05MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341190,Y,038,11:06:30,10/02/07,W,04MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341196,A,038,11:06:36,10/02/07,NW,03MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341202,E,038,11:06:42,10/02/07,NW,03MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341208,P,038,11:06:48,10/02/07,NNW,03MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341214,Q,038,11:06:54,10/02/07,NNW,02MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341220,Y,038,11:07:00,10/02/07,W,02MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341226,R,038,11:07:06,10/02/07,WNW,02MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341232,C,038,11:07:12,10/02/07,WSW,05MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341238,K,038,11:07:18,10/02/07,WSW,06MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341244,O,038,11:07:24,10/02/07,WSW,08MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341250,P,038,11:07:30,10/02/07,NW,05MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341256,T,038,11:07:36,10/02/07,NNW,03MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341262,P,038,11:07:42,10/02/07,NNW,03MPH,001K,460F,066F,088%,29.81S,00.00\"D,00.01\"M,00.00\"R\n1191341268,W,038,11:07:48,10/02/07,NW,01MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341274,V,038,11:07:54,10/02/07,NNW,01MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341280,A,038,11:08:00,10/02/07,WNW,05MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341286,C,038,11:08:06,10/02/07,W,06MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341292,E,038,11:08:12,10/02/07,W,06MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341298,K,038,11:08:18,10/02/07,W,06MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341304,S,038,11:08:24,10/02/07,WSW,06MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341310,X,038,11:08:30,10/02/07,W,06MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341316,Y,038,11:08:36,10/02/07,WSW,08MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341322,T,038,11:08:42,10/02/07,WNW,08MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341328,A,038,11:08:48,10/02/07,W,07MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341334,Z,038,11:08:54,10/02/07,W,06MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341340,G,038,11:09:00,10/02/07,WNW,06MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341346,F,038,11:09:06,10/02/07,W,05MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341352,K,038,11:09:12,10/02/07,WNW,06MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341358,P,038,11:09:18,10/02/07,N,04MPH,001K,460F,066F,088%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191341364,Q,038,11:09:24,10/02/07,W,05MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341370,O,038,11:09:30,10/02/07,SW,04MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341376,P,038,11:09:36,10/02/07,W,04MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341382,I,038,11:09:42,10/02/07,WSW,05MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341388,Q,038,11:09:48,10/02/07,WNW,06MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341394,Y,038,11:09:54,10/02/07,WSW,04MPH,001K,460F,066F,088%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191341400,F,038,11:10:00,10/02/07,NNW,03MPH,001K,460F,066F,088%,29.82R,00.01\"D,00.02\"M,00.00\"R\n1191341406,H,038,11:10:06,10/02/07,W,03MPH,001K,460F,066F,088%,29.82R,00.01\"D,00.02\"M,00.00\"R\n1191341412,N,038,11:10:12,10/02/07,WNW,03MPH,001K,460F,066F,088%,29.82R,00.01\"D,00.02\"M,00.00\"R\n1191341418,P,038,11:10:18,10/02/07,WNW,03MPH,001K,460F,066F,088%,29.82R,00.01\"D,00.02\"M,00.00\"R\n1191341424,Q,038,11:10:24,10/02/07,NW,03MPH,001K,460F,066F,088%,29.82R,00.01\"D,00.02\"M,00.00\"R\n1191341430,M,038,11:10:30,10/02/07,NW,03MPH,001K,460F,066F,089%,29.82R,00.01\"D,00.02\"M,00.00\"R\n1191341436,R,038,11:10:36,10/02/07,NNW,03MPH,001K,460F,066F,089%,29.82R,00.01\"D,00.02\"M,00.00\"R\n1191341442,K,038,11:10:42,10/02/07,NNW,05MPH,001K,460F,066F,089%,29.82R,00.02\"D,00.03\"M,00.00\"R\n1191341448,Y,038,11:10:48,10/02/07,WNW,03MPH,001K,460F,066F,089%,29.82R,00.02\"D,00.03\"M,00.00\"R\n1191341454,Z,038,11:10:54,10/02/07,WSW,03MPH,001K,460F,066F,089%,29.82R,00.02\"D,00.03\"M,00.00\"R\n1191341460,E,038,11:11:00,10/02/07,N,03MPH,001K,460F,066F,089%,29.82R,00.03\"D,00.04\"M,00.00\"R\n1191341466,D,038,11:11:06,10/02/07,N,04MPH,001K,460F,066F,089%,29.82R,00.03\"D,00.04\"M,00.00\"R\n1191341472,L,038,11:11:12,10/02/07,NW,06MPH,001K,460F,066F,089%,29.82R,00.03\"D,00.04\"M,00.00\"R\n1191341478,T,038,11:11:18,10/02/07,NNW,05MPH,001K,460F,066F,089%,29.82R,00.03\"D,00.04\"M,00.00\"R\n1191341484,A,038,11:11:24,10/02/07,WSW,04MPH,001K,460F,066F,089%,29.82R,00.03\"D,00.04\"M,00.00\"R\n1191341490,A,038,11:11:30,10/02/07,NW,03MPH,001K,460F,066F,089%,29.82R,00.03\"D,00.04\"M,00.00\"R\n1191341496,I,038,11:11:36,10/02/07,NNW,03MPH,001K,460F,066F,089%,29.82R,00.04\"D,00.05\"M,00.00\"R\n1191341502,N,038,11:11:42,10/02/07,NNW,05MPH,001K,460F,066F,089%,29.82R,00.04\"D,00.05\"M,00.00\"R\n1191341508,S,038,11:11:48,10/02/07,NNW,05MPH,001K,460F,066F,089%,29.82R,00.04\"D,00.05\"M,00.00\"R\n1191341514,W,038,11:11:54,10/02/07,NNW,05MPH,001K,460F,066F,089%,29.82R,00.05\"D,00.06\"M,00.00\"R\n1191341520,H,038,11:12:00,10/02/07,NNW,05MPH,001K,460F,066F,089%,29.82R,00.05\"D,00.06\"M,00.00\"R\n1191341526,M,038,11:12:06,10/02/07,WNW,03MPH,001K,460F,066F,089%,29.82R,00.05\"D,00.06\"M,00.00\"R\n1191341532,R,038,11:12:12,10/02/07,NNW,04MPH,001K,460F,066F,089%,29.82R,00.05\"D,00.06\"M,00.00\"R\n1191341538,Z,038,11:12:18,10/02/07,WNW,04MPH,001K,460F,066F,089%,29.82R,00.05\"D,00.06\"M,00.00\"R\n1191341544,G,038,11:12:24,10/02/07,NW,03MPH,001K,460F,066F,089%,29.82R,00.05\"D,00.06\"M,00.00\"R\n1191341550,O,038,11:12:30,10/02/07,N,03MPH,001K,460F,066F,089%,29.82R,00.05\"D,00.06\"M,00.00\"R\n1191341556,S,038,11:12:36,10/02/07,NW,03MPH,001K,460F,066F,089%,29.82R,00.06\"D,00.07\"M,00.00\"R\n1191341562,A,038,11:12:42,10/02/07,NNW,04MPH,001K,460F,066F,089%,29.82R,00.06\"D,00.07\"M,00.00\"R\n1191341568,N,038,11:12:48,10/02/07,NW,03MPH,001K,460F,066F,089%,29.82R,00.06\"D,00.07\"M,00.00\"R\n1191341574,R,038,11:12:54,10/02/07,NNW,02MPH,000K,460F,066F,089%,29.82R,00.06\"D,00.07\"M,00.00\"R\n1191341580,T,038,11:13:00,10/02/07,N,02MPH,000K,460F,066F,089%,29.82R,00.06\"D,00.07\"M,00.00\"R\n1191341586,B,038,11:13:06,10/02/07,N,03MPH,000K,460F,066F,089%,29.82R,00.06\"D,00.07\"M,00.00\"R\n1191341592,G,038,11:13:12,10/02/07,N,03MPH,000K,460F,065F,089%,29.82R,00.06\"D,00.07\"M,00.00\"R\n1191341598,O,038,11:13:18,10/02/07,N,02MPH,000K,460F,066F,089%,29.82R,00.06\"D,00.07\"M,00.00\"R\n1191341604,B,038,11:13:24,10/02/07,N,02MPH,000K,460F,066F,089%,29.82R,00.06\"D,00.07\"M,00.00\"R\n1191341610,C,038,11:13:30,10/02/07,N,03MPH,000K,460F,066F,089%,29.83R,00.06\"D,00.07\"M,00.00\"R\n1191341616,H,038,11:13:36,10/02/07,NNW,04MPH,000K,460F,065F,089%,29.82R,00.06\"D,00.07\"M,00.00\"R\n1191341622,H,038,11:13:42,10/02/07,NNW,03MPH,000K,460F,065F,089%,29.82R,00.07\"D,00.08\"M,00.00\"R\n1191341628,U,038,11:13:48,10/02/07,NNW,04MPH,000K,460F,065F,089%,29.82R,00.07\"D,00.08\"M,00.00\"R\n1191341634,S,038,11:13:54,10/02/07,NNW,05MPH,000K,460F,065F,089%,29.82R,00.07\"D,00.08\"M,00.00\"R\n1191341640,X,038,11:14:00,10/02/07,NNW,05MPH,000K,460F,065F,089%,29.82R,00.07\"D,00.08\"M,00.00\"R\n1191341646,T,038,11:14:06,10/02/07,N,05MPH,000K,460F,065F,089%,29.82R,00.07\"D,00.08\"M,00.00\"R\n1191341652,L,038,11:14:12,10/02/07,NNW,05MPH,000K,460F,065F,089%,29.82R,00.07\"D,00.08\"M,00.00\"R\n1191341658,Y,038,11:14:18,10/02/07,NNW,03MPH,000K,460F,065F,089%,29.82R,00.07\"D,00.08\"M,00.00\"R\n1191341664,J,038,11:14:24,10/02/07,WNW,03MPH,000K,460F,065F,090%,29.83R,00.07\"D,00.08\"M,00.00\"R\n1191341670,L,038,11:14:30,10/02/07,WNW,03MPH,000K,460F,065F,090%,29.83R,00.07\"D,00.08\"M,00.00\"R\n1191341676,N,038,11:14:36,10/02/07,WSW,03MPH,000K,460F,065F,090%,29.83R,00.07\"D,00.08\"M,00.00\"R\n1191341682,M,038,11:14:42,10/02/07,NW,03MPH,000K,460F,065F,090%,29.83R,00.07\"D,00.08\"M,00.00\"R\n1191341688,X,038,11:14:48,10/02/07,N,03MPH,000K,460F,065F,090%,29.83R,00.07\"D,00.08\"M,00.00\"R\n1191341694,Y,038,11:14:54,10/02/07,NNW,03MPH,000K,460F,065F,090%,29.83R,00.07\"D,00.08\"M,00.00\"R\n1191341700,G,038,11:15:00,10/02/07,NNW,02MPH,000K,460F,065F,090%,29.83R,00.07\"D,00.08\"M,00.00\"R\n1191341706,Z,038,11:15:06,10/02/07,N,01MPH,000K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341712,E,038,11:15:12,10/02/07,N,03MPH,000K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341718,L,038,11:15:18,10/02/07,NW,03MPH,000K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341724,W,038,11:15:24,10/02/07,W,04MPH,000K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341730,B,038,11:15:30,10/02/07,WNW,03MPH,000K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341736,B,038,11:15:36,10/02/07,NW,03MPH,000K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341742,X,038,11:15:42,10/02/07,NNW,01MPH,000K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341748,F,038,11:15:48,10/02/07,WNW,01MPH,000K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341754,E,038,11:15:54,10/02/07,SSW,01MPH,000K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341760,L,038,11:16:00,10/02/07,W,01MPH,000K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341766,N,038,11:16:06,10/02/07,NW,01MPH,000K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341772,S,038,11:16:12,10/02/07,NW,01MPH,000K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341778,A,038,11:16:18,10/02/07,WNW,02MPH,000K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341784,F,038,11:16:24,10/02/07,WNW,03MPH,001K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341790,G,038,11:16:30,10/02/07,W,03MPH,001K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341796,I,038,11:16:36,10/02/07,WSW,03MPH,001K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341802,D,038,11:16:42,10/02/07,WSW,03MPH,001K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341808,L,038,11:16:48,10/02/07,NNW,02MPH,001K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341814,T,038,11:16:54,10/02/07,W,01MPH,001K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341820,Y,038,11:17:00,10/02/07,WNW,02MPH,001K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341826,A,038,11:17:06,10/02/07,W,03MPH,001K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341832,Y,038,11:17:12,10/02/07,WNW,03MPH,001K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341838,T,038,11:17:18,10/02/07,WNW,03MPH,001K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341844,M,038,11:17:24,10/02/07,W,04MPH,001K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341850,O,038,11:17:30,10/02/07,NW,03MPH,001K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341856,K,038,11:17:36,10/02/07,NNW,02MPH,001K,460F,065F,090%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341862,G,038,11:17:42,10/02/07,NNW,04MPH,001K,460F,065F,091%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341868,R,038,11:17:48,10/02/07,NNW,03MPH,001K,460F,065F,091%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341874,P,038,11:17:54,10/02/07,WNW,02MPH,001K,460F,065F,091%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341880,U,038,11:18:00,10/02/07,W,03MPH,001K,460F,065F,091%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341886,W,038,11:18:06,10/02/07,W,03MPH,001K,460F,065F,091%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341892,S,038,11:18:12,10/02/07,NW,04MPH,001K,460F,065F,091%,29.83R,00.08\"D,00.09\"M,00.00\"R\n1191341898,R,038,11:18:18,10/02/07,W,05MPH,001K,460F,065F,091%,29.83R,00.09\"D,00.10\"M,00.00\"R\n1191341904,S,038,11:18:24,10/02/07,NNW,04MPH,001K,460F,065F,091%,29.83R,00.09\"D,00.10\"M,00.00\"R\n1191341910,O,038,11:18:30,10/02/07,NNW,03MPH,001K,460F,065F,091%,29.83R,00.09\"D,00.10\"M,00.00\"R\n1191341916,N,038,11:18:36,10/02/07,NNW,02MPH,001K,460F,065F,091%,29.83R,00.09\"D,00.10\"M,00.00\"R\n1191341922,L,038,11:18:42,10/02/07,NNW,03MPH,001K,460F,065F,091%,29.83R,00.09\"D,00.10\"M,00.00\"R\n1191341928,T,038,11:18:48,10/02/07,NNW,03MPH,001K,460F,065F,091%,29.83R,00.09\"D,00.10\"M,00.00\"R\n1191341934,R,038,11:18:54,10/02/07,NNW,03MPH,001K,460F,065F,091%,29.82R,00.09\"D,00.10\"M,00.00\"R\n1191341940,V,038,11:19:00,10/02/07,NNW,08MPH,001K,460F,065F,091%,29.82R,00.09\"D,00.10\"M,00.00\"R\n1191341946,U,038,11:19:06,10/02/07,NNW,06MPH,001K,460F,065F,091%,29.82R,00.09\"D,00.10\"M,00.00\"R\n1191341952,S,038,11:19:12,10/02/07,NNW,05MPH,001K,460F,065F,091%,29.82R,00.10\"D,00.11\"M,00.00\"R\n1191341958,X,038,11:19:18,10/02/07,NNW,05MPH,001K,460F,065F,091%,29.82R,00.10\"D,00.11\"M,00.00\"R\n1191341964,W,038,11:19:24,10/02/07,WNW,06MPH,001K,460F,065F,091%,29.82R,00.10\"D,00.11\"M,00.00\"R\n1191341970,E,038,11:19:30,10/02/07,WNW,04MPH,001K,460F,065F,091%,29.82R,00.10\"D,00.11\"M,00.00\"R\n1191341976,M,038,11:19:36,10/02/07,NNW,03MPH,001K,460F,065F,091%,29.82R,00.11\"D,00.12\"M,00.00\"R\n1191341982,K,038,11:19:42,10/02/07,NNW,04MPH,001K,460F,065F,091%,29.82R,00.11\"D,00.12\"M,00.00\"R\n1191341988,V,038,11:19:48,10/02/07,NNW,03MPH,001K,460F,065F,091%,29.82R,00.11\"D,00.12\"M,00.00\"R\n1191341994,X,038,11:19:54,10/02/07,NNW,05MPH,001K,460F,065F,091%,29.82R,00.12\"D,00.13\"M,00.00\"R\n1191342000,Z,038,11:20:00,10/02/07,NNW,05MPH,001K,460F,065F,091%,29.82R,00.12\"D,00.13\"M,00.00\"R\n1191342006,E,038,11:20:06,10/02/07,NNW,04MPH,001K,460F,065F,091%,29.82R,00.12\"D,00.13\"M,00.00\"R\n1191342012,Z,038,11:20:12,10/02/07,N,03MPH,001K,460F,065F,091%,29.82R,00.13\"D,00.14\"M,00.00\"R\n1191342018,H,038,11:20:18,10/02/07,N,03MPH,001K,460F,065F,091%,29.82R,00.13\"D,00.14\"M,00.00\"R\n1191342024,U,038,11:20:24,10/02/07,NNW,03MPH,001K,460F,065F,091%,29.82R,00.13\"D,00.14\"M,00.00\"R\n1191342030,W,038,11:20:30,10/02/07,NNW,05MPH,001K,460F,065F,091%,29.82R,00.13\"D,00.14\"M,00.00\"R\n1191342036,H,038,11:20:36,10/02/07,NNW,05MPH,001K,460F,065F,092%,29.82R,00.13\"D,00.14\"M,00.00\"R\n1191342042,L,038,11:20:42,10/02/07,NNW,04MPH,001K,460F,065F,092%,29.82R,00.13\"D,00.14\"M,00.00\"R\n1191342048,Q,038,11:20:48,10/02/07,NNW,05MPH,001K,460F,065F,092%,29.82R,00.13\"D,00.14\"M,00.00\"R\n1191342054,S,038,11:20:54,10/02/07,N,05MPH,001K,460F,065F,092%,29.82R,00.13\"D,00.14\"M,00.00\"R\n1191342060,X,038,11:21:00,10/02/07,NNW,04MPH,001K,460F,065F,092%,29.82R,00.13\"D,00.14\"M,00.00\"R\n1191342066,V,038,11:21:06,10/02/07,N,03MPH,001K,460F,065F,092%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342072,Z,038,11:21:12,10/02/07,NNE,04MPH,001K,460F,065F,092%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342078,K,038,11:21:18,10/02/07,NNW,03MPH,001K,460F,065F,092%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342084,S,038,11:21:24,10/02/07,NNW,04MPH,001K,460F,065F,092%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342090,U,038,11:21:30,10/02/07,NW,04MPH,001K,460F,065F,092%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342096,Z,038,11:21:36,10/02/07,NNW,04MPH,001K,460F,065F,092%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342102,A,038,11:21:42,10/02/07,WNW,05MPH,001K,460F,065F,092%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342108,F,038,11:21:48,10/02/07,WNW,03MPH,001K,460F,065F,092%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342114,E,038,11:21:54,10/02/07,NW,03MPH,001K,460F,065F,092%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342120,J,038,11:22:00,10/02/07,NW,03MPH,001K,460F,065F,092%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342126,J,038,11:22:06,10/02/07,N,03MPH,001K,460F,065F,092%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342132,Q,038,11:22:12,10/02/07,N,01MPH,001K,460F,065F,092%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342138,Y,038,11:22:18,10/02/07,NNW,03MPH,001K,460F,065F,092%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342144,G,038,11:22:24,10/02/07,NNW,04MPH,001K,460F,065F,092%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342150,L,038,11:22:30,10/02/07,WNW,03MPH,001K,460F,065F,092%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342156,S,038,11:22:36,10/02/07,WNW,02MPH,001K,460F,065F,092%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342162,O,038,11:22:42,10/02/07,W,03MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342168,W,038,11:22:48,10/02/07,WNW,02MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342174,Y,038,11:22:54,10/02/07,WNW,03MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342180,G,038,11:23:00,10/02/07,NNW,02MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342186,K,038,11:23:06,10/02/07,NNW,03MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342192,P,038,11:23:12,10/02/07,NNW,02MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342198,A,038,11:23:18,10/02/07,NNW,02MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342204,C,038,11:23:24,10/02/07,NW,02MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342210,E,038,11:23:30,10/02/07,N,03MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342216,I,038,11:23:36,10/02/07,W,01MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342222,K,038,11:23:42,10/02/07,N,01MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342228,L,038,11:23:48,10/02/07,N,01MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342234,W,038,11:23:54,10/02/07,N,01MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342240,X,038,11:24:00,10/02/07,NW,00MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342246,W,038,11:24:06,10/02/07,WSW,00MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342252,Y,038,11:24:12,10/02/07,WSW,00MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342258,Z,038,11:24:18,10/02/07,S,01MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342264,H,038,11:24:24,10/02/07,SW,02MPH,001K,460F,064F,093%,29.82R,00.14\"D,00.15\"M,00.00\"R\n1191342270,J,038,11:24:30,10/02/07,SSW,03MPH,001K,460F,064F,093%,29.82R,00.15\"D,00.16\"M,00.00\"R\n1191342276,N,038,11:24:36,10/02/07,WNW,03MPH,001K,460F,064F,093%,29.82R,00.15\"D,00.16\"M,00.00\"R\n1191342282,L,038,11:24:42,10/02/07,W,03MPH,001K,460F,064F,093%,29.82R,00.15\"D,00.16\"M,00.00\"R\n1191342288,C,038,11:24:48,10/02/07,W,03MPH,001K,460F,064F,093%,29.82R,00.15\"D,00.16\"M,00.00\"R\n1191342294,K,038,11:24:54,10/02/07,NW,03MPH,001K,460F,064F,093%,29.82R,00.15\"D,00.16\"M,00.00\"R\n1191342300,V,038,11:25:00,10/02/07,W,02MPH,001K,460F,064F,093%,29.82R,00.15\"D,00.16\"M,00.00\"R\n1191342306,Q,038,11:25:06,10/02/07,NNW,02MPH,001K,460F,064F,093%,29.82R,00.15\"D,00.16\"M,00.00\"R\n1191342312,Y,038,11:25:12,10/02/07,NW,01MPH,001K,460F,064F,093%,29.82R,00.15\"D,00.16\"M,00.00\"R\n1191342318,A,038,11:25:18,10/02/07,NNW,01MPH,001K,460F,064F,093%,29.82R,00.15\"D,00.16\"M,00.00\"R\n1191342324,I,038,11:25:24,10/02/07,NNW,01MPH,001K,460F,064F,093%,29.82R,00.15\"D,00.16\"M,00.00\"R\n1191342330,E,038,11:25:30,10/02/07,NW,01MPH,001K,460F,064F,093%,29.82R,00.15\"D,00.16\"M,00.00\"R\n1191342336,E,038,11:25:36,10/02/07,NNW,01MPH,001K,460F,064F,094%,29.82R,00.16\"D,00.17\"M,00.00\"R\n1191342342,X,038,11:25:42,10/02/07,NNW,01MPH,001K,460F,064F,094%,29.82R,00.16\"D,00.17\"M,00.00\"R\n1191342348,C,038,11:25:48,10/02/07,NNW,01MPH,001K,460F,064F,094%,29.82R,00.16\"D,00.17\"M,00.00\"R\n1191342354,E,038,11:25:54,10/02/07,N,02MPH,001K,460F,064F,094%,29.82R,00.17\"D,00.18\"M,00.00\"R\n1191342360,J,038,11:26:00,10/02/07,NNW,02MPH,001K,460F,064F,094%,29.82R,00.17\"D,00.18\"M,00.00\"R\n1191342366,B,038,11:26:06,10/02/07,N,01MPH,001K,460F,064F,094%,29.82R,00.17\"D,00.18\"M,00.00\"R\n1191342372,D,038,11:26:12,10/02/07,NNE,01MPH,001K,460F,064F,094%,29.81S,00.17\"D,00.18\"M,00.00\"R\n1191342378,F,038,11:26:18,10/02/07,N,01MPH,001K,460F,064F,094%,29.81S,00.17\"D,00.18\"M,00.00\"R\n1191342384,J,038,11:26:24,10/02/07,NNE,02MPH,001K,460F,064F,094%,29.81S,00.18\"D,00.19\"M,00.00\"R\n1191342390,I,038,11:26:30,10/02/07,N,03MPH,001K,460F,064F,094%,29.81S,00.18\"D,00.19\"M,00.00\"R\n1191342396,B,038,11:26:36,10/02/07,NNW,03MPH,001K,460F,064F,094%,29.81S,00.18\"D,00.19\"M,00.00\"R\n1191342402,J,038,11:26:42,10/02/07,N,01MPH,001K,460F,064F,094%,29.81S,00.18\"D,00.19\"M,00.00\"R\n1191342408,U,038,11:26:48,10/02/07,N,02MPH,001K,460F,064F,094%,29.81S,00.19\"D,00.20\"M,00.00\"R\n1191342414,V,038,11:26:54,10/02/07,NNW,02MPH,001K,460F,064F,094%,29.81S,00.19\"D,00.20\"M,00.00\"R\n1191342420,T,038,11:27:00,10/02/07,N,04MPH,001K,460F,064F,094%,29.81S,00.19\"D,00.20\"M,00.00\"R\n1191342426,P,038,11:27:06,10/02/07,N,03MPH,001K,460F,064F,094%,29.81S,00.19\"D,00.20\"M,00.00\"R\n1191342432,U,038,11:27:12,10/02/07,N,03MPH,001K,460F,064F,094%,29.81S,00.20\"D,00.21\"M,00.00\"R\n1191342438,M,038,11:27:18,10/02/07,N,03MPH,001K,460F,064F,094%,29.81S,00.20\"D,00.21\"M,00.00\"R\n1191342444,W,038,11:27:24,10/02/07,NNW,03MPH,001K,460F,064F,094%,29.81S,00.21\"D,00.22\"M,00.00\"R\n1191342450,D,038,11:27:30,10/02/07,N,03MPH,001K,460F,064F,094%,29.81S,00.21\"D,00.22\"M,00.00\"R\n1191342456,L,038,11:27:36,10/02/07,NNW,02MPH,001K,460F,064F,094%,29.81S,00.21\"D,00.22\"M,00.00\"R\n1191342462,Q,038,11:27:42,10/02/07,N,02MPH,001K,460F,064F,094%,29.81S,00.22\"D,00.23\"M,00.00\"R\n1191342468,X,038,11:27:48,10/02/07,N,03MPH,001K,460F,064F,094%,29.81S,00.22\"D,00.23\"M,00.00\"R\n1191342474,C,038,11:27:54,10/02/07,N,03MPH,001K,460F,064F,094%,29.80F,00.22\"D,00.23\"M,00.00\"R\n1191342480,E,038,11:28:00,10/02/07,N,03MPH,001K,460F,064F,094%,29.81S,00.23\"D,00.24\"M,00.00\"R\n1191342486,J,038,11:28:06,10/02/07,N,03MPH,001K,460F,064F,094%,29.80F,00.23\"D,00.24\"M,00.00\"R\n1191342492,N,038,11:28:12,10/02/07,N,03MPH,001K,460F,064F,094%,29.81S,00.23\"D,00.24\"M,00.00\"R\n1191342498,R,038,11:28:18,10/02/07,NNE,03MPH,001K,460F,064F,094%,29.81S,00.23\"D,00.24\"M,00.00\"R\n1191342504,P,038,11:28:24,10/02/07,NNE,03MPH,001K,460F,064F,094%,29.81S,00.23\"D,00.24\"M,00.00\"R\n1191342510,O,038,11:28:30,10/02/07,N,02MPH,001K,460F,064F,094%,29.81S,00.24\"D,00.25\"M,00.00\"R\n1191342516,V,038,11:28:36,10/02/07,NNE,02MPH,001K,460F,064F,094%,29.81S,00.24\"D,00.25\"M,00.00\"R\n1191342522,T,038,11:28:42,10/02/07,NNW,02MPH,001K,460F,064F,094%,29.81S,00.24\"D,00.25\"M,00.00\"R\n1191342528,B,038,11:28:48,10/02/07,NNW,02MPH,001K,460F,064F,094%,29.81S,00.24\"D,00.25\"M,00.00\"R\n1191342534,C,038,11:28:54,10/02/07,NNW,01MPH,001K,460F,064F,094%,29.81S,00.24\"D,00.25\"M,00.00\"R\n1191342540,X,038,11:29:00,10/02/07,N,01MPH,001K,460F,064F,094%,29.81S,00.24\"D,00.25\"M,00.00\"R\n1191342546,I,038,11:29:06,10/02/07,NNW,01MPH,001K,460F,064F,094%,29.81S,00.24\"D,00.25\"M,00.00\"R\n1191342552,O,038,11:29:12,10/02/07,NNW,01MPH,001K,460F,064F,094%,29.81S,00.24\"D,00.25\"M,00.00\"R\n1191342558,T,038,11:29:18,10/02/07,N,01MPH,001K,460F,064F,094%,29.81S,00.25\"D,00.26\"M,00.00\"R\n1191342564,X,038,11:29:24,10/02/07,NNE,01MPH,001K,460F,064F,094%,29.81S,00.25\"D,00.26\"M,00.00\"R\n1191342570,W,038,11:29:30,10/02/07,N,01MPH,001K,460F,064F,094%,29.81S,00.25\"D,00.26\"M,00.00\"R\n1191342576,M,038,11:29:36,10/02/07,NNE,01MPH,001K,460F,064F,094%,29.81S,00.25\"D,00.26\"M,00.00\"R\n1191342582,L,038,11:29:42,10/02/07,ENE,01MPH,001K,460F,064F,094%,29.81S,00.25\"D,00.26\"M,00.00\"R\n1191342588,A,038,11:29:48,10/02/07,E,01MPH,001K,460F,064F,094%,29.81S,00.25\"D,00.26\"M,00.00\"R\n1191342594,C,038,11:29:54,10/02/07,NNE,01MPH,001K,460F,064F,094%,29.81S,00.25\"D,00.26\"M,00.00\"R\n1191342600,H,038,11:30:00,10/02/07,E,01MPH,001K,460F,064F,094%,29.82R,00.25\"D,00.26\"M,00.00\"R\n1191342606,M,038,11:30:06,10/02/07,E,02MPH,001K,460F,064F,094%,29.82R,00.25\"D,00.26\"M,00.00\"R\n1191342612,Q,038,11:30:12,10/02/07,NNE,01MPH,001K,460F,064F,095%,29.82R,00.25\"D,00.26\"M,00.00\"R\n1191342618,W,038,11:30:18,10/02/07,ENE,01MPH,001K,460F,064F,095%,29.82R,00.25\"D,00.26\"M,00.00\"R\n1191342624,A,038,11:30:24,10/02/07,NNE,01MPH,001K,460F,064F,095%,29.82R,00.25\"D,00.26\"M,00.00\"R\n1191342630,C,038,11:30:30,10/02/07,NNE,01MPH,001K,460F,064F,095%,29.82R,00.25\"D,00.26\"M,00.00\"R\n1191342636,B,038,11:30:36,10/02/07,NNE,01MPH,001K,460F,064F,095%,29.82R,00.26\"D,00.27\"M,00.00\"R\n1191342642,U,038,11:30:42,10/02/07,N,01MPH,001K,460F,064F,095%,29.82R,00.26\"D,00.27\"M,00.00\"R\n1191342648,F,038,11:30:48,10/02/07,NNW,01MPH,001K,460F,064F,095%,29.82R,00.26\"D,00.27\"M,00.00\"R\n1191342654,M,038,11:30:54,10/02/07,NNW,01MPH,001K,460F,064F,095%,29.82R,00.26\"D,00.27\"M,00.00\"R\n1191342660,U,038,11:31:00,10/02/07,NNW,01MPH,001K,460F,064F,095%,29.82R,00.26\"D,00.27\"M,00.00\"R\n1191342666,C,038,11:31:06,10/02/07,NW,01MPH,001K,460F,064F,095%,29.82R,00.26\"D,00.27\"M,00.00\"R\n1191342672,D,038,11:31:12,10/02/07,NW,01MPH,001K,460F,064F,095%,29.82R,00.26\"D,00.27\"M,00.00\"R\n1191342678,E,038,11:31:18,10/02/07,NNW,01MPH,001K,460F,064F,095%,29.81S,00.27\"D,00.28\"M,00.00\"R\n1191342684,L,038,11:31:24,10/02/07,NNW,01MPH,001K,460F,064F,095%,29.81S,00.27\"D,00.28\"M,00.00\"R\n1191342690,N,038,11:31:30,10/02/07,NNW,01MPH,001K,460F,064F,095%,29.81S,00.27\"D,00.28\"M,00.00\"R\n1191342696,P,038,11:31:36,10/02/07,NNW,01MPH,001K,460F,064F,095%,29.81S,00.27\"D,00.28\"M,00.00\"R\n1191342702,N,038,11:31:42,10/02/07,NNW,01MPH,001K,460F,064F,095%,29.81S,00.27\"D,00.28\"M,00.00\"R\n1191342708,E,038,11:31:48,10/02/07,NNW,01MPH,001K,460F,064F,095%,29.81S,00.27\"D,00.28\"M,00.00\"R\n1191342714,M,038,11:31:54,10/02/07,N,01MPH,001K,460F,064F,095%,29.82R,00.27\"D,00.28\"M,00.00\"R\n1191342720,U,038,11:32:00,10/02/07,N,01MPH,001K,460F,064F,095%,29.81S,00.27\"D,00.28\"M,00.00\"R\n1191342726,Y,038,11:32:06,10/02/07,N,01MPH,001K,460F,064F,095%,29.81S,00.27\"D,00.28\"M,00.00\"R\n1191342732,A,038,11:32:12,10/02/07,N,01MPH,001K,460F,064F,095%,29.82R,00.27\"D,00.28\"M,00.00\"R\n1191342738,C,038,11:32:18,10/02/07,NNE,01MPH,001K,460F,064F,095%,29.81S,00.27\"D,00.28\"M,00.00\"R\n1191342744,L,038,11:32:24,10/02/07,NNE,01MPH,001K,460F,064F,095%,29.81S,00.28\"D,00.29\"M,00.00\"R\n1191342750,N,038,11:32:30,10/02/07,NNE,01MPH,001K,460F,064F,095%,29.81S,00.28\"D,00.29\"M,00.00\"R\n1191342756,P,038,11:32:36,10/02/07,ENE,01MPH,001K,460F,064F,095%,29.81S,00.28\"D,00.29\"M,00.00\"R\n1191342762,A,038,11:32:42,10/02/07,NE,01MPH,001K,460F,064F,095%,29.82R,00.28\"D,00.29\"M,00.00\"R\n1191342768,L,038,11:32:48,10/02/07,NE,02MPH,001K,460F,064F,095%,29.81S,00.28\"D,00.29\"M,00.00\"R\n1191342774,P,038,11:32:54,10/02/07,NE,02MPH,001K,460F,064F,095%,29.81S,00.28\"D,00.29\"M,00.00\"R\n1191342780,X,038,11:33:00,10/02/07,NNE,02MPH,001K,460F,064F,095%,29.81S,00.28\"D,00.29\"M,00.00\"R\n1191342786,W,038,11:33:06,10/02/07,NNE,02MPH,001K,460F,064F,095%,29.81S,00.28\"D,00.29\"M,00.00\"R\n1191342792,X,038,11:33:12,10/02/07,NE,02MPH,001K,460F,064F,095%,29.81S,00.28\"D,00.29\"M,00.00\"R\n1191342798,B,038,11:33:18,10/02/07,NNE,02MPH,001K,460F,064F,095%,29.81S,00.28\"D,00.29\"M,00.00\"R\n1191342804,J,038,11:33:24,10/02/07,NNE,02MPH,001K,460F,064F,095%,29.81S,00.28\"D,00.29\"M,00.00\"R\n1191342810,K,038,11:33:30,10/02/07,N,01MPH,001K,460F,064F,095%,29.81S,00.28\"D,00.29\"M,00.00\"R\n1191342816,P,038,11:33:36,10/02/07,N,02MPH,001K,460F,064F,095%,29.81S,00.28\"D,00.29\"M,00.00\"R\n1191342822,N,038,11:33:42,10/02/07,N,02MPH,001K,460F,064F,095%,29.81S,00.29\"D,00.30\"M,00.00\"R\n1191342828,Y,038,11:33:48,10/02/07,N,02MPH,001K,460F,064F,095%,29.81S,00.29\"D,00.30\"M,00.00\"R\n1191342834,C,038,11:33:54,10/02/07,NNW,03MPH,001K,460F,064F,095%,29.81S,00.29\"D,00.30\"M,00.00\"R\n1191342840,H,038,11:34:00,10/02/07,NNW,02MPH,001K,460F,064F,095%,29.81S,00.30\"D,00.31\"M,00.00\"R\n1191342846,I,038,11:34:06,10/02/07,NNW,02MPH,001K,460F,064F,095%,29.81S,00.30\"D,00.31\"M,00.00\"R\n1191342852,Q,038,11:34:12,10/02/07,NW,02MPH,001K,460F,064F,095%,29.81S,00.30\"D,00.31\"M,00.00\"R\n1191342858,V,038,11:34:18,10/02/07,NNW,02MPH,001K,460F,064F,095%,29.81S,00.30\"D,00.31\"M,00.00\"R\n1191342864,D,038,11:34:24,10/02/07,N,01MPH,001K,460F,064F,095%,29.81S,00.30\"D,00.31\"M,00.00\"R\n1191342870,U,038,11:34:30,10/02/07,NNW,01MPH,001K,460F,064F,095%,29.81S,00.31\"D,00.32\"M,00.00\"R\n1191342876,H,038,11:34:36,10/02/07,NW,01MPH,001K,460F,064F,095%,29.82R,00.31\"D,00.32\"M,00.00\"R\n1191342882,T,038,11:34:42,10/02/07,NNW,01MPH,001K,460F,064F,095%,29.82R,00.31\"D,00.32\"M,00.00\"R\n1191342888,S,038,11:34:48,10/02/07,NNW,02MPH,001K,460F,064F,095%,29.82R,00.31\"D,00.32\"M,00.00\"R\n1191342894,A,038,11:34:54,10/02/07,NNW,01MPH,001K,460F,064F,095%,29.82R,00.31\"D,00.32\"M,00.00\"R\n1191342900,Q,038,11:35:00,10/02/07,NNW,01MPH,001K,460F,064F,095%,29.82R,00.31\"D,00.32\"M,00.00\"R\n1191342906,M,038,11:35:06,10/02/07,WNW,01MPH,001K,460F,064F,095%,29.82R,00.31\"D,00.32\"M,00.00\"R\n1191342912,O,038,11:35:12,10/02/07,NW,01MPH,001K,460F,064F,095%,29.82R,00.31\"D,00.32\"M,00.00\"R\n1191342918,Z,038,11:35:18,10/02/07,WNW,01MPH,001K,460F,064F,095%,29.82R,00.32\"D,00.33\"M,00.00\"R\n1191342924,G,038,11:35:24,10/02/07,WNW,01MPH,001K,460F,064F,095%,29.82R,00.32\"D,00.33\"M,00.00\"R\n1191342930,L,038,11:35:30,10/02/07,WNW,01MPH,001K,460F,064F,096%,29.83R,00.32\"D,00.33\"M,00.00\"R\n1191342936,V,038,11:35:36,10/02/07,WNW,01MPH,001K,460F,064F,096%,29.82R,00.32\"D,00.33\"M,00.00\"R\n1191342942,U,038,11:35:42,10/02/07,W,01MPH,001K,460F,064F,096%,29.82R,00.32\"D,00.33\"M,00.00\"R\n1191342948,Z,038,11:35:48,10/02/07,WNW,01MPH,001K,460F,064F,096%,29.82R,00.32\"D,00.33\"M,00.00\"R\n1191342954,D,038,11:35:54,10/02/07,WNW,01MPH,001K,460F,064F,096%,29.82R,00.33\"D,00.34\"M,00.00\"R\n1191342960,L,038,11:36:00,10/02/07,WNW,01MPH,001K,460F,064F,096%,29.83R,00.33\"D,00.34\"M,00.00\"R\n1191342966,K,038,11:36:06,10/02/07,W,01MPH,001K,460F,064F,096%,29.83R,00.33\"D,00.34\"M,00.00\"R\n1191342972,P,038,11:36:12,10/02/07,W,01MPH,001K,460F,064F,096%,29.83R,00.33\"D,00.34\"M,00.00\"R\n1191342978,U,038,11:36:18,10/02/07,WSW,03MPH,001K,460F,064F,096%,29.83R,00.33\"D,00.34\"M,00.00\"R\n1191342984,F,038,11:36:24,10/02/07,W,02MPH,001K,460F,064F,096%,29.83R,00.33\"D,00.34\"M,00.00\"R\n1191342990,T,038,11:36:30,10/02/07,W,02MPH,001K,460F,064F,096%,29.83R,00.33\"D,00.34\"M,00.00\"R\n1191342996,B,038,11:36:36,10/02/07,WNW,02MPH,001K,460F,064F,096%,29.83R,00.33\"D,00.34\"M,00.00\"R\n1191343002,W,038,11:36:42,10/02/07,WNW,01MPH,001K,460F,064F,096%,29.83R,00.33\"D,00.34\"M,00.00\"R\n1191343008,J,038,11:36:48,10/02/07,NW,01MPH,001K,460F,064F,096%,29.83R,00.33\"D,00.34\"M,00.00\"R\n1191343014,L,038,11:36:54,10/02/07,W,01MPH,001K,460F,064F,096%,29.83R,00.34\"D,00.35\"M,00.00\"R\n1191343020,J,038,11:37:00,10/02/07,SW,02MPH,001K,460F,064F,096%,29.83R,00.34\"D,00.35\"M,00.00\"R\n1191343026,K,038,11:37:06,10/02/07,SW,02MPH,001K,460F,064F,096%,29.83R,00.34\"D,00.35\"M,00.00\"R\n1191343032,E,038,11:37:12,10/02/07,SSW,03MPH,001K,460F,064F,096%,29.83R,00.34\"D,00.35\"M,00.00\"R\n1191343038,P,038,11:37:18,10/02/07,S,03MPH,001K,460F,064F,096%,29.83R,00.34\"D,00.35\"M,00.00\"R\n1191343044,A,038,11:37:24,10/02/07,S,02MPH,001K,460F,064F,096%,29.83R,00.35\"D,00.36\"M,00.00\"R\n1191343050,F,038,11:37:30,10/02/07,S,02MPH,001K,460F,064F,096%,29.83R,00.35\"D,00.36\"M,00.00\"R\n1191343056,P,038,11:37:36,10/02/07,SSW,01MPH,001K,460F,064F,096%,29.83R,00.35\"D,00.36\"M,00.00\"R\n1191343062,I,038,11:37:42,10/02/07,S,02MPH,001K,460F,064F,096%,29.83R,00.35\"D,00.36\"M,00.00\"R\n1191343068,W,038,11:37:48,10/02/07,S,02MPH,001K,460F,064F,096%,29.83R,00.35\"D,00.36\"M,00.00\"R\n1191343074,A,038,11:37:54,10/02/07,S,02MPH,001K,460F,064F,096%,29.83R,00.35\"D,00.36\"M,00.00\"R\n1191343080,U,038,11:38:00,10/02/07,SSE,01MPH,001K,460F,064F,096%,29.83R,00.36\"D,00.37\"M,00.00\"R\n1191343086,C,038,11:38:06,10/02/07,SE,01MPH,001K,460F,064F,096%,29.83R,00.36\"D,00.37\"M,00.00\"R\n1191343092,H,038,11:38:12,10/02/07,ESE,01MPH,001K,460F,064F,096%,29.83R,00.36\"D,00.37\"M,00.00\"R\n1191343098,O,038,11:38:18,10/02/07,ESE,01MPH,001K,460F,064F,096%,29.83R,00.36\"D,00.37\"M,00.00\"R\n1191343104,W,038,11:38:24,10/02/07,NE,01MPH,001K,460F,064F,096%,29.83R,00.37\"D,00.38\"M,00.00\"R\n1191343110,D,038,11:38:30,10/02/07,E,01MPH,001K,460F,064F,096%,29.83R,00.37\"D,00.38\"M,00.00\"R\n1191343116,N,038,11:38:36,10/02/07,E,02MPH,001K,460F,064F,096%,29.83R,00.37\"D,00.38\"M,00.00\"R\n1191343122,P,038,11:38:42,10/02/07,E,01MPH,001K,460F,064F,096%,29.83R,00.37\"D,00.38\"M,00.00\"R\n1191343128,W,038,11:38:48,10/02/07,ENE,01MPH,001K,460F,064F,096%,29.82R,00.37\"D,00.38\"M,00.00\"R\n1191343134,E,038,11:38:54,10/02/07,ENE,01MPH,001K,460F,064F,096%,29.82R,00.38\"D,00.39\"M,00.00\"R\n1191343140,O,038,11:39:00,10/02/07,E,01MPH,001K,460F,064F,096%,29.82R,00.38\"D,00.39\"M,00.00\"R\n1191343146,Y,038,11:39:06,10/02/07,E,01MPH,001K,460F,064F,096%,29.82R,00.38\"D,00.39\"M,00.00\"R\n1191343152,C,038,11:39:12,10/02/07,ENE,01MPH,001K,460F,064F,096%,29.82R,00.38\"D,00.39\"M,00.00\"R\n1191343158,K,038,11:39:18,10/02/07,E,02MPH,001K,460F,064F,097%,29.82R,00.38\"D,00.39\"M,00.00\"R\n1191343164,O,038,11:39:24,10/02/07,ENE,01MPH,001K,460F,064F,097%,29.82R,00.38\"D,00.39\"M,00.00\"R\n1191343170,N,038,11:39:30,10/02/07,NNE,01MPH,002K,460F,064F,097%,29.82R,00.38\"D,00.39\"M,00.00\"R\n1191343176,S,038,11:39:36,10/02/07,NNE,02MPH,002K,460F,064F,097%,29.82R,00.38\"D,00.39\"M,00.00\"R\n1191343182,T,038,11:39:42,10/02/07,N,01MPH,002K,460F,064F,097%,29.82R,00.39\"D,00.40\"M,00.00\"R\n1191343188,M,038,11:39:48,10/02/07,NNW,02MPH,002K,460F,064F,097%,29.82R,00.39\"D,00.40\"M,00.00\"R\n1191343194,O,038,11:39:54,10/02/07,N,01MPH,002K,460F,064F,097%,29.82R,00.39\"D,00.40\"M,00.00\"R\n1191343200,Z,038,11:40:00,10/02/07,N,02MPH,002K,460F,064F,097%,29.82R,00.39\"D,00.40\"M,00.00\"R\n1191343206,B,038,11:40:06,10/02/07,NNE,03MPH,002K,460F,064F,097%,29.81S,00.39\"D,00.40\"M,00.00\"R\n1191343212,E,038,11:40:12,10/02/07,NNE,03MPH,002K,460F,064F,097%,29.81S,00.39\"D,00.40\"M,00.00\"R\n1191343218,M,038,11:40:18,10/02/07,N,03MPH,002K,460F,064F,097%,29.81S,00.39\"D,00.40\"M,00.00\"R\n1191343224,U,038,11:40:24,10/02/07,NNE,03MPH,002K,460F,064F,097%,29.81S,00.39\"D,00.40\"M,00.00\"R\n1191343230,S,038,11:40:30,10/02/07,NNE,02MPH,002K,460F,064F,097%,29.82R,00.39\"D,00.40\"M,00.00\"R\n1191343236,A,038,11:40:36,10/02/07,N,01MPH,002K,460F,064F,097%,29.81S,00.39\"D,00.40\"M,00.00\"R\n1191343242,C,038,11:40:42,10/02/07,N,01MPH,002K,460F,064F,097%,29.81S,00.39\"D,00.40\"M,00.00\"R\n1191343248,W,038,11:40:48,10/02/07,NNE,02MPH,002K,460F,064F,097%,29.81S,00.40\"D,00.41\"M,00.00\"R\n1191343254,E,038,11:40:54,10/02/07,NNE,02MPH,002K,460F,064F,097%,29.81S,00.40\"D,00.41\"M,00.00\"R\n1191343260,J,038,11:41:00,10/02/07,NNE,01MPH,002K,460F,064F,097%,29.81S,00.40\"D,00.41\"M,00.00\"R\n1191343266,Q,038,11:41:06,10/02/07,NNE,01MPH,002K,460F,064F,097%,29.81S,00.40\"D,00.41\"M,00.00\"R\n1191343272,V,038,11:41:12,10/02/07,N,01MPH,002K,460F,064F,097%,29.81S,00.40\"D,00.41\"M,00.00\"R\n1191343278,J,038,11:41:18,10/02/07,NNE,01MPH,002K,460F,064F,097%,29.81S,00.40\"D,00.41\"M,00.00\"R\n1191343284,Q,038,11:41:24,10/02/07,NNE,02MPH,002K,460F,064F,097%,29.81S,00.40\"D,00.41\"M,00.00\"R\n1191343290,B,038,11:41:30,10/02/07,NNE,03MPH,002K,460F,064F,097%,29.81S,00.40\"D,00.41\"M,00.00\"R\n1191343296,I,038,11:41:36,10/02/07,NNE,04MPH,002K,460F,064F,097%,29.81S,00.40\"D,00.41\"M,00.00\"R\n1191343302,B,038,11:41:42,10/02/07,NNE,05MPH,002K,460F,064F,097%,29.80F,00.40\"D,00.41\"M,00.00\"R\n1191343308,R,038,11:41:48,10/02/07,NE,06MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343314,W,038,11:41:54,10/02/07,NE,07MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343320,X,038,11:42:00,10/02/07,NNE,08MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343326,U,038,11:42:06,10/02/07,NNE,08MPH,002K,460F,064F,097%,29.79F,00.41\"D,00.42\"M,00.00\"R\n1191343332,T,038,11:42:12,10/02/07,NE,09MPH,002K,460F,064F,097%,29.79F,00.41\"D,00.42\"M,00.00\"R\n1191343338,K,038,11:42:18,10/02/07,NE,09MPH,002K,460F,064F,097%,29.79F,00.41\"D,00.42\"M,00.00\"R\n1191343344,Y,038,11:42:24,10/02/07,NE,10MPH,002K,460F,064F,097%,29.79F,00.41\"D,00.42\"M,00.00\"R\n1191343350,F,038,11:42:30,10/02/07,NNE,10MPH,002K,460F,064F,097%,29.79F,00.41\"D,00.42\"M,00.00\"R\n1191343356,N,038,11:42:36,10/02/07,NE,06MPH,002K,460F,064F,097%,29.79F,00.41\"D,00.42\"M,00.00\"R\n1191343362,M,038,11:42:42,10/02/07,NNE,05MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343368,D,038,11:42:48,10/02/07,NNE,06MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343374,H,038,11:42:54,10/02/07,NNE,04MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343380,P,038,11:43:00,10/02/07,N,02MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343386,R,038,11:43:06,10/02/07,NW,01MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343392,T,038,11:43:12,10/02/07,SW,02MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343398,J,038,11:43:18,10/02/07,SSW,03MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343404,L,038,11:43:24,10/02/07,SW,04MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343410,T,038,11:43:30,10/02/07,S,06MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343416,Y,038,11:43:36,10/02/07,SSW,05MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343422,Q,038,11:43:42,10/02/07,SW,05MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343428,U,038,11:43:48,10/02/07,SE,04MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343434,W,038,11:43:54,10/02/07,SE,03MPH,002K,460F,064F,097%,29.81S,00.41\"D,00.42\"M,00.00\"R\n1191343440,X,038,11:44:00,10/02/07,SW,03MPH,002K,460F,064F,097%,29.81S,00.41\"D,00.42\"M,00.00\"R\n1191343446,F,038,11:44:06,10/02/07,S,03MPH,002K,460F,064F,097%,29.81S,00.41\"D,00.42\"M,00.00\"R\n1191343452,G,038,11:44:12,10/02/07,SE,01MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343458,L,038,11:44:18,10/02/07,NNE,00MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343464,W,038,11:44:24,10/02/07,WNW,00MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343470,Y,038,11:44:30,10/02/07,NE,01MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343476,C,038,11:44:36,10/02/07,WNW,01MPH,002K,460F,064F,097%,29.80F,00.41\"D,00.42\"M,00.00\"R\n1191343482,B,038,11:44:42,10/02/07,NNW,01MPH,003K,460F,064F,097%,29.80F,00.42\"D,00.43\"M,00.00\"R\n1191343488,I,038,11:44:48,10/02/07,N,01MPH,003K,460F,064F,097%,29.80F,00.42\"D,00.43\"M,00.00\"R\n1191343494,K,038,11:44:54,10/02/07,NNE,01MPH,003K,460F,064F,098%,29.80F,00.42\"D,00.43\"M,00.00\"R\n1191343500,S,038,11:45:00,10/02/07,NNE,02MPH,003K,460F,064F,098%,29.80F,00.42\"D,00.43\"M,00.00\"R\n1191343506,W,038,11:45:06,10/02/07,NNE,02MPH,003K,460F,064F,098%,29.80F,00.42\"D,00.43\"M,00.00\"R\n1191343512,B,038,11:45:12,10/02/07,NNE,03MPH,003K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343518,A,038,11:45:18,10/02/07,NNE,04MPH,003K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343524,F,038,11:45:24,10/02/07,NNE,04MPH,003K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343530,H,038,11:45:30,10/02/07,NE,03MPH,003K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343536,L,038,11:45:36,10/02/07,NE,03MPH,003K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343542,H,038,11:45:42,10/02/07,NE,05MPH,003K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343548,M,038,11:45:48,10/02/07,NE,05MPH,003K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343554,P,038,11:45:54,10/02/07,NNE,04MPH,003K,460F,064F,098%,29.78F,00.42\"D,00.43\"M,00.00\"R\n1191343560,A,038,11:46:00,10/02/07,NE,05MPH,003K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343566,C,038,11:46:06,10/02/07,NNE,05MPH,003K,460F,064F,098%,29.78F,00.42\"D,00.43\"M,00.00\"R\n1191343572,G,038,11:46:12,10/02/07,NE,05MPH,003K,460F,064F,098%,29.78F,00.42\"D,00.43\"M,00.00\"R\n1191343578,I,038,11:46:18,10/02/07,NNE,03MPH,003K,460F,064F,098%,29.78F,00.42\"D,00.43\"M,00.00\"R\n1191343584,I,038,11:46:24,10/02/07,ENE,03MPH,003K,460F,064F,098%,29.78F,00.42\"D,00.43\"M,00.00\"R\n1191343590,H,038,11:46:30,10/02/07,ENE,03MPH,003K,460F,064F,098%,29.78F,00.42\"D,00.43\"M,00.00\"R\n1191343596,S,038,11:46:36,10/02/07,NE,03MPH,003K,460F,064F,098%,29.78F,00.42\"D,00.43\"M,00.00\"R\n1191343602,A,038,11:46:42,10/02/07,ENE,03MPH,003K,460F,064F,098%,29.78F,00.42\"D,00.43\"M,00.00\"R\n1191343608,L,038,11:46:48,10/02/07,E,03MPH,003K,460F,064F,098%,29.78F,00.42\"D,00.43\"M,00.00\"R\n1191343614,P,038,11:46:54,10/02/07,E,04MPH,003K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343620,U,038,11:47:00,10/02/07,NE,04MPH,003K,460F,064F,098%,29.78F,00.42\"D,00.43\"M,00.00\"R\n1191343626,W,038,11:47:06,10/02/07,ENE,04MPH,003K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343632,X,038,11:47:12,10/02/07,E,04MPH,003K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343638,E,038,11:47:18,10/02/07,ENE,05MPH,003K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343644,J,038,11:47:24,10/02/07,ESE,03MPH,003K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343650,L,038,11:47:30,10/02/07,ENE,03MPH,003K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343656,Y,038,11:47:36,10/02/07,E,03MPH,003K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343662,A,038,11:47:42,10/02/07,E,04MPH,004K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343668,O,038,11:47:48,10/02/07,NE,03MPH,004K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343674,Q,038,11:47:54,10/02/07,NE,03MPH,004K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343680,Y,038,11:48:00,10/02/07,NNE,02MPH,004K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343686,Z,038,11:48:06,10/02/07,NNE,02MPH,004K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343692,B,038,11:48:12,10/02/07,N,02MPH,004K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343698,D,038,11:48:18,10/02/07,NNW,01MPH,004K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343704,L,038,11:48:24,10/02/07,NNW,01MPH,004K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343710,P,038,11:48:30,10/02/07,NNW,00MPH,004K,460F,064F,098%,29.79F,00.42\"D,00.43\"M,00.00\"R\n1191343716,X,038,11:48:36,10/02/07,N,01MPH,004K,460F,064F,098%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343722,U,038,11:48:42,10/02/07,NNW,00MPH,004K,460F,064F,098%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343728,X,038,11:48:48,10/02/07,WNW,01MPH,004K,460F,064F,098%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343734,Z,038,11:48:54,10/02/07,NNW,01MPH,004K,460F,064F,098%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343740,D,038,11:49:00,10/02/07,NNW,01MPH,004K,460F,064F,098%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343746,F,038,11:49:06,10/02/07,NNE,01MPH,004K,460F,064F,098%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343752,E,038,11:49:12,10/02/07,NNE,01MPH,004K,460F,064F,098%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343758,L,038,11:49:18,10/02/07,N,02MPH,004K,460F,064F,098%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343764,N,038,11:49:24,10/02/07,N,03MPH,004K,460F,064F,098%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343770,S,038,11:49:30,10/02/07,NNW,03MPH,004K,460F,064F,098%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343776,F,038,11:49:36,10/02/07,NNE,05MPH,004K,460F,064F,098%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343782,H,038,11:49:42,10/02/07,N,03MPH,004K,460F,064F,098%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343788,G,038,11:49:48,10/02/07,NNE,04MPH,004K,460F,064F,098%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343794,H,038,11:49:54,10/02/07,NNE,03MPH,004K,460F,064F,098%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343800,S,038,11:50:00,10/02/07,N,03MPH,004K,460F,064F,098%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343806,N,038,11:50:06,10/02/07,NNW,04MPH,004K,460F,064F,098%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343812,V,038,11:50:12,10/02/07,NNW,03MPH,004K,460F,064F,098%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343818,G,038,11:50:18,10/02/07,N,03MPH,004K,460F,064F,098%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343824,U,038,11:50:24,10/02/07,NNE,03MPH,004K,460F,064F,098%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343830,W,038,11:50:30,10/02/07,N,03MPH,004K,460F,064F,098%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343836,G,038,11:50:36,10/02/07,NE,03MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343842,L,038,11:50:42,10/02/07,NNE,02MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343848,Z,038,11:50:48,10/02/07,NE,03MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343854,E,038,11:50:54,10/02/07,NE,03MPH,005K,460F,064F,099%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343860,J,038,11:51:00,10/02/07,NNW,02MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343866,T,038,11:51:06,10/02/07,NNE,02MPH,005K,460F,064F,099%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343872,Y,038,11:51:12,10/02/07,NNE,01MPH,005K,460F,064F,099%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343878,J,038,11:51:18,10/02/07,NNE,04MPH,005K,460F,064F,099%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191343884,X,038,11:51:24,10/02/07,E,05MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343890,T,038,11:51:30,10/02/07,NE,03MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343896,A,038,11:51:36,10/02/07,N,02MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343902,C,038,11:51:42,10/02/07,NNE,03MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343908,P,038,11:51:48,10/02/07,NNE,02MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343914,R,038,11:51:54,10/02/07,NE,03MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343920,F,038,11:52:00,10/02/07,NNE,03MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343926,L,038,11:52:06,10/02/07,NE,03MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343932,T,038,11:52:12,10/02/07,NE,03MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343938,H,038,11:52:18,10/02/07,NE,03MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343944,S,038,11:52:24,10/02/07,NE,02MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343950,T,038,11:52:30,10/02/07,NE,03MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343956,H,038,11:52:36,10/02/07,NNE,03MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343962,J,038,11:52:42,10/02/07,NNE,02MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343968,U,038,11:52:48,10/02/07,NNE,02MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343974,I,038,11:52:54,10/02/07,NNE,03MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343980,W,038,11:53:00,10/02/07,NE,03MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343986,Y,038,11:53:06,10/02/07,NNE,03MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343992,J,038,11:53:12,10/02/07,NE,03MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191343998,Q,038,11:53:18,10/02/07,NNE,03MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344004,V,038,11:53:24,10/02/07,NE,03MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344010,C,038,11:53:30,10/02/07,ENE,03MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344016,K,038,11:53:36,10/02/07,ENE,03MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344022,W,038,11:53:42,10/02/07,NE,02MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344028,S,038,11:53:48,10/02/07,NE,02MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344034,Z,038,11:53:54,10/02/07,NE,02MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344040,M,038,11:54:00,10/02/07,ENE,03MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344046,O,038,11:54:06,10/02/07,NE,03MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344052,N,038,11:54:12,10/02/07,ESE,04MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344058,D,038,11:54:18,10/02/07,ENE,03MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344064,F,038,11:54:24,10/02/07,E,03MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344070,K,038,11:54:30,10/02/07,ENE,04MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344076,S,038,11:54:36,10/02/07,ENE,04MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344082,X,038,11:54:42,10/02/07,E,03MPH,006K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344088,N,038,11:54:48,10/02/07,E,03MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344094,V,038,11:54:54,10/02/07,ENE,03MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344100,X,038,11:55:00,10/02/07,ENE,03MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344106,C,038,11:55:06,10/02/07,ENE,04MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344112,B,038,11:55:12,10/02/07,E,04MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344118,I,038,11:55:18,10/02/07,NE,03MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344124,Z,038,11:55:24,10/02/07,E,03MPH,005K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344130,J,038,11:55:30,10/02/07,ENE,03MPH,004K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344136,R,038,11:55:36,10/02/07,ENE,03MPH,004K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344142,Z,038,11:55:42,10/02/07,ENE,03MPH,004K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344148,M,038,11:55:48,10/02/07,ENE,03MPH,004K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344154,T,038,11:55:54,10/02/07,ENE,05MPH,004K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344160,Y,038,11:56:00,10/02/07,ENE,04MPH,004K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344166,A,038,11:56:06,10/02/07,ENE,03MPH,004K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344172,H,038,11:56:12,10/02/07,NE,04MPH,003K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344178,S,038,11:56:18,10/02/07,E,03MPH,003K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344184,G,038,11:56:24,10/02/07,ENE,03MPH,003K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344190,O,038,11:56:30,10/02/07,E,03MPH,003K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344196,T,038,11:56:36,10/02/07,ENE,03MPH,003K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344202,U,038,11:56:42,10/02/07,E,04MPH,003K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344208,F,038,11:56:48,10/02/07,E,03MPH,003K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344214,K,038,11:56:54,10/02/07,ENE,03MPH,003K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344220,L,038,11:57:00,10/02/07,N,02MPH,003K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344226,Q,038,11:57:06,10/02/07,ENE,02MPH,003K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344232,P,038,11:57:12,10/02/07,E,03MPH,003K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344238,J,038,11:57:18,10/02/07,E,03MPH,003K,460F,064F,099%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344244,U,038,11:57:24,10/02/07,E,03MPH,003K,460F,064F,100%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344250,E,038,11:57:30,10/02/07,E,03MPH,003K,460F,064F,100%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344256,J,038,11:57:36,10/02/07,E,04MPH,003K,460F,064F,100%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344262,K,038,11:57:42,10/02/07,ENE,06MPH,003K,460F,064F,100%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344268,S,038,11:57:48,10/02/07,E,04MPH,003K,460F,064F,100%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344274,X,038,11:57:54,10/02/07,ESE,04MPH,003K,460F,064F,100%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344280,E,038,11:58:00,10/02/07,NE,03MPH,002K,460F,064F,100%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344287,A,038,11:58:07,10/02/07,E,03MPH,002K,460F,064F,100%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344294,K,038,11:58:14,10/02/07,E,06MPH,002K,460F,064F,100%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344301,B,038,11:58:21,10/02/07,ENE,05MPH,002K,460F,064F,100%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344308,G,038,11:58:28,10/02/07,E,05MPH,002K,460F,064F,100%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344315,W,038,11:58:35,10/02/07,E,05MPH,002K,460F,064F,100%,29.78F,00.43\"D,00.44\"M,00.00\"R\n1191344322,V,038,11:58:42,10/02/07,E,03MPH,002K,460F,064F,100%,29.79F,00.43\"D,00.44\"M,00.00\"R\n1191344329,D,038,11:58:49,10/02/07,E,03MPH,002K,460F,064F,100%,29.79F,00.43\"D,00.44\"M,00.00\"R\n"
  },
  {
    "path": "htdocs/plotting/snet/data/SMDI4_051112.txt",
    "content": "1131832800,A,170,16:00:00,11/12/05,SW,14MPH,001K,460F,070F,072%,29.31F,00.00\"D,00.25\"M,00.00\"R\n1131832806,C,170,16:00:06,11/12/05,WSW,12MPH,001K,460F,070F,072%,29.31F,00.00\"D,00.25\"M,00.00\"R\n1131832812,K,170,16:00:12,11/12/05,WSW,13MPH,001K,460F,070F,072%,29.31F,00.00\"D,00.25\"M,00.00\"R\n1131832818,J,170,16:00:18,11/12/05,WSW,14MPH,001K,460F,070F,072%,29.31F,00.00\"D,00.25\"M,00.00\"R\n1131832824,R,170,16:00:24,11/12/05,SW,18MPH,001K,460F,070F,072%,29.31F,00.00\"D,00.25\"M,00.00\"R\n1131832830,Q,170,16:00:30,11/12/05,SW,19MPH,001K,460F,070F,072%,29.31F,00.00\"D,00.25\"M,00.00\"R\n1131832836,Y,170,16:00:36,11/12/05,SW,16MPH,001K,460F,070F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832842,U,170,16:00:42,11/12/05,WSW,14MPH,001K,460F,069F,072%,29.31F,00.00\"D,00.25\"M,00.00\"R\n1131832848,F,170,16:00:48,11/12/05,SW,15MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832854,B,170,16:00:54,11/12/05,SW,16MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832860,M,170,16:01:00,11/12/05,SW,18MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832866,O,170,16:01:06,11/12/05,SW,14MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832872,W,170,16:01:12,11/12/05,SW,14MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832878,Y,170,16:01:18,11/12/05,SW,18MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832884,D,170,16:01:24,11/12/05,W,18MPH,001K,460F,069F,072%,29.31F,00.00\"D,00.25\"M,00.00\"R\n1131832890,F,170,16:01:30,11/12/05,SW,19MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832896,N,170,16:01:36,11/12/05,W,19MPH,001K,460F,070F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832902,P,170,16:01:42,11/12/05,SW,19MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832908,X,170,16:01:48,11/12/05,WSW,18MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832914,Z,170,16:01:54,11/12/05,SW,16MPH,001K,460F,070F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832920,B,170,16:02:00,11/12/05,WSW,13MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832926,D,170,16:02:06,11/12/05,WSW,14MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832932,I,170,16:02:12,11/12/05,SW,13MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832938,K,170,16:02:18,11/12/05,SW,19MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832944,S,170,16:02:24,11/12/05,SW,23MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832950,U,170,16:02:30,11/12/05,WSW,21MPH,001K,460F,070F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832956,C,170,16:02:36,11/12/05,WSW,21MPH,001K,460F,070F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832962,B,170,16:02:42,11/12/05,WSW,16MPH,001K,460F,070F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832968,J,170,16:02:48,11/12/05,WSW,25MPH,001K,460F,070F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832974,I,170,16:02:54,11/12/05,WSW,19MPH,001K,460F,070F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832980,N,170,16:03:00,11/12/05,SW,16MPH,001K,460F,070F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832986,S,170,16:03:06,11/12/05,SW,18MPH,001K,460F,070F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832992,R,170,16:03:12,11/12/05,SW,16MPH,001K,460F,070F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131832998,W,170,16:03:18,11/12/05,SW,15MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833004,E,170,16:03:24,11/12/05,SW,16MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833010,D,170,16:03:30,11/12/05,SW,18MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833016,L,170,16:03:36,11/12/05,SW,15MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833022,N,170,16:03:42,11/12/05,WSW,13MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833028,P,170,16:03:48,11/12/05,W,14MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833034,R,170,16:03:54,11/12/05,SW,13MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833040,Z,170,16:04:00,11/12/05,SW,12MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833046,Y,170,16:04:06,11/12/05,WSW,12MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833052,G,170,16:04:12,11/12/05,WSW,16MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833058,F,170,16:04:18,11/12/05,SW,14MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833064,N,170,16:04:24,11/12/05,SW,13MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833070,G,170,16:04:30,11/12/05,SW,11MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833076,L,170,16:04:36,11/12/05,WSW,16MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833082,N,170,16:04:42,11/12/05,SW,13MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833088,V,170,16:04:48,11/12/05,SW,15MPH,001K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833094,T,170,16:04:54,11/12/05,W,16MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833100,A,170,16:05:00,11/12/05,WSW,17MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833106,Z,170,16:05:06,11/12/05,WSW,17MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833112,K,170,16:05:12,11/12/05,WSW,25MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833118,J,170,16:05:18,11/12/05,WSW,21MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833124,L,170,16:05:24,11/12/05,WSW,19MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833130,N,170,16:05:30,11/12/05,WSW,21MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833136,V,170,16:05:36,11/12/05,W,18MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833142,X,170,16:05:42,11/12/05,WSW,18MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833148,C,170,16:05:48,11/12/05,SW,14MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833154,Y,170,16:05:54,11/12/05,S,12MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833160,G,170,16:06:00,11/12/05,SW,13MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833166,I,170,16:06:06,11/12/05,WSW,11MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833172,N,170,16:06:12,11/12/05,SW,14MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833178,O,170,16:06:18,11/12/05,WSW,18MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833184,W,170,16:06:24,11/12/05,SW,18MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833190,S,170,16:06:30,11/12/05,SW,16MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833196,C,170,16:06:36,11/12/05,S,14MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833202,B,170,16:06:42,11/12/05,SW,12MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833208,G,170,16:06:48,11/12/05,SW,14MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833214,H,170,16:06:54,11/12/05,WSW,13MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833220,J,170,16:07:00,11/12/05,SW,13MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833226,L,170,16:07:06,11/12/05,SW,14MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833232,Q,170,16:07:12,11/12/05,SW,13MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833238,R,170,16:07:18,11/12/05,W,11MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833244,Z,170,16:07:24,11/12/05,SW,12MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833250,B,170,16:07:30,11/12/05,W,14MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833256,J,170,16:07:36,11/12/05,SW,11MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833262,I,170,16:07:42,11/12/05,WSW,11MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833268,T,170,16:07:48,11/12/05,SW,13MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833274,V,170,16:07:54,11/12/05,SW,16MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833280,U,170,16:08:00,11/12/05,SW,15MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833286,Z,170,16:08:06,11/12/05,WSW,16MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833292,H,170,16:08:12,11/12/05,SW,21MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833298,G,170,16:08:18,11/12/05,SW,20MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833304,O,170,16:08:24,11/12/05,WSW,16MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833310,P,170,16:08:30,11/12/05,WSW,16MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833316,X,170,16:08:36,11/12/05,WSW,14MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833322,Z,170,16:08:42,11/12/05,SW,19MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833328,H,170,16:08:48,11/12/05,SW,18MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833334,G,170,16:08:54,11/12/05,SW,23MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833340,O,170,16:09:00,11/12/05,WSW,21MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833346,Q,170,16:09:06,11/12/05,SW,23MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833352,Y,170,16:09:12,11/12/05,SW,21MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833358,X,170,16:09:18,11/12/05,SW,14MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833364,Z,170,16:09:24,11/12/05,SW,18MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833370,B,170,16:09:30,11/12/05,SW,21MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833376,J,170,16:09:36,11/12/05,SW,14MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833382,L,170,16:09:42,11/12/05,WSW,13MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833388,Q,170,16:09:48,11/12/05,SW,13MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833394,S,170,16:09:54,11/12/05,WSW,18MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833400,X,170,16:10:00,11/12/05,SW,18MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833406,W,170,16:10:06,11/12/05,SW,17MPH,002K,460F,069F,072%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833412,B,170,16:10:12,11/12/05,SW,18MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833418,D,170,16:10:18,11/12/05,SW,14MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833424,O,170,16:10:24,11/12/05,WSW,15MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833430,N,170,16:10:30,11/12/05,SW,16MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833436,S,170,16:10:36,11/12/05,SW,13MPH,002K,460F,069F,073%,29.30F,00.00\"D,00.25\"M,00.00\"R\n1131833442,R,170,16:10:42,11/12/05,WSW,11MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833448,Z,170,16:10:48,11/12/05,W,13MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833454,B,170,16:10:54,11/12/05,WSW,16MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833460,M,170,16:11:00,11/12/05,SW,17MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833466,H,170,16:11:06,11/12/05,SW,19MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833472,P,170,16:11:12,11/12/05,SW,18MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833478,R,170,16:11:18,11/12/05,SW,15MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833484,T,170,16:11:24,11/12/05,SW,15MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833490,S,170,16:11:30,11/12/05,SW,16MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833496,X,170,16:11:36,11/12/05,WSW,14MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833502,Z,170,16:11:42,11/12/05,SW,11MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833508,Y,170,16:11:48,11/12/05,SW,15MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833514,A,170,16:11:54,11/12/05,WSW,16MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833520,I,170,16:12:00,11/12/05,SW,21MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833526,K,170,16:12:06,11/12/05,SW,19MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833532,S,170,16:12:12,11/12/05,WSW,18MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833538,X,170,16:12:18,11/12/05,WSW,17MPH,002K,460F,069F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833544,C,170,16:12:24,11/12/05,WSW,19MPH,002K,460F,069F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833550,B,170,16:12:30,11/12/05,SW,20MPH,002K,460F,069F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833556,J,170,16:12:36,11/12/05,WSW,21MPH,002K,460F,069F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833562,I,170,16:12:42,11/12/05,SW,21MPH,002K,460F,069F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833568,Q,170,16:12:48,11/12/05,SW,18MPH,002K,460F,069F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833574,V,170,16:12:54,11/12/05,WSW,14MPH,002K,460F,069F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833580,A,170,16:13:00,11/12/05,SW,15MPH,002K,460F,069F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833586,C,170,16:13:06,11/12/05,WSW,18MPH,002K,460F,069F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833592,K,170,16:13:12,11/12/05,WSW,16MPH,002K,460F,069F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833598,P,170,16:13:18,11/12/05,SW,14MPH,002K,460F,069F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833604,U,170,16:13:24,11/12/05,SSW,17MPH,002K,460F,069F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833610,W,170,16:13:30,11/12/05,SW,16MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833616,E,170,16:13:36,11/12/05,SW,17MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833622,A,170,16:13:42,11/12/05,W,13MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833628,H,170,16:13:48,11/12/05,W,13MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833634,J,170,16:13:54,11/12/05,SW,11MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833640,I,170,16:14:00,11/12/05,WSW,12MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833646,K,170,16:14:06,11/12/05,WSW,14MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833652,S,170,16:14:12,11/12/05,SW,13MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833658,T,170,16:14:18,11/12/05,WSW,11MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833664,Y,170,16:14:24,11/12/05,WSW,14MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833670,A,170,16:14:30,11/12/05,SSW,15MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833676,I,170,16:14:36,11/12/05,SW,14MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833682,J,170,16:14:42,11/12/05,WSW,14MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833688,I,170,16:14:48,11/12/05,WSW,12MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833694,K,170,16:14:54,11/12/05,WSW,15MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833700,V,170,16:15:00,11/12/05,SW,11MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833706,X,170,16:15:06,11/12/05,SW,12MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833712,F,170,16:15:12,11/12/05,SW,13MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833718,E,170,16:15:18,11/12/05,WSW,14MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833724,G,170,16:15:24,11/12/05,WSW,18MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833730,F,170,16:15:30,11/12/05,SW,16MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833736,N,170,16:15:36,11/12/05,SW,16MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833742,P,170,16:15:42,11/12/05,SW,15MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833748,O,170,16:15:48,11/12/05,SW,18MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833754,N,170,16:15:54,11/12/05,W,16MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833760,S,170,16:16:00,11/12/05,WSW,13MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833766,L,170,16:16:06,11/12/05,WSW,12MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833772,Z,170,16:16:12,11/12/05,WSW,13MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833778,E,170,16:16:18,11/12/05,WSW,20MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833784,J,170,16:16:24,11/12/05,WSW,18MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833790,L,170,16:16:30,11/12/05,WSW,13MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833796,N,170,16:16:36,11/12/05,SW,14MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833802,M,170,16:16:42,11/12/05,WSW,16MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833808,O,170,16:16:48,11/12/05,WSW,16MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833814,N,170,16:16:54,11/12/05,SSW,11MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833820,U,170,16:17:00,11/12/05,WSW,17MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833826,T,170,16:17:06,11/12/05,WSW,14MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833832,B,170,16:17:12,11/12/05,SW,17MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833838,A,170,16:17:18,11/12/05,WSW,21MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833844,F,170,16:17:24,11/12/05,WSW,21MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833850,H,170,16:17:30,11/12/05,SW,17MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833856,N,170,16:17:36,11/12/05,SW,16MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833862,P,170,16:17:42,11/12/05,SW,19MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833868,U,170,16:17:48,11/12/05,W,16MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833874,T,170,16:17:54,11/12/05,WSW,15MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833880,B,170,16:18:00,11/12/05,SSW,18MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833886,X,170,16:18:06,11/12/05,SW,17MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833892,F,170,16:18:12,11/12/05,SW,21MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833898,H,170,16:18:18,11/12/05,SW,19MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833904,P,170,16:18:24,11/12/05,SW,18MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833910,R,170,16:18:30,11/12/05,WSW,21MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833916,Z,170,16:18:36,11/12/05,SW,21MPH,002K,460F,069F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833922,Y,170,16:18:42,11/12/05,W,15MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833928,J,170,16:18:48,11/12/05,WSW,18MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833934,H,170,16:18:54,11/12/05,SW,16MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833940,P,170,16:19:00,11/12/05,SW,14MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833946,R,170,16:19:06,11/12/05,SW,14MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833952,W,170,16:19:12,11/12/05,WSW,14MPH,002K,460F,069F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833958,B,170,16:19:18,11/12/05,WSW,16MPH,002K,460F,069F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833964,J,170,16:19:24,11/12/05,SSW,17MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833970,L,170,16:19:30,11/12/05,WSW,22MPH,002K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131833976,T,170,16:19:36,11/12/05,SW,16MPH,002K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131833982,V,170,16:19:42,11/12/05,SW,19MPH,002K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131833988,A,170,16:19:48,11/12/05,SW,19MPH,002K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131833994,C,170,16:19:54,11/12/05,SW,16MPH,002K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834000,H,170,16:20:00,11/12/05,WSW,18MPH,002K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834006,G,170,16:20:06,11/12/05,SW,16MPH,002K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834012,O,170,16:20:12,11/12/05,SW,16MPH,002K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834018,K,170,16:20:18,11/12/05,SW,14MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834024,V,170,16:20:24,11/12/05,WSW,13MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834030,W,170,16:20:30,11/12/05,SW,15MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834036,Y,170,16:20:36,11/12/05,SW,16MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834042,A,170,16:20:42,11/12/05,WSW,16MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834048,I,170,16:20:48,11/12/05,SSW,20MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834054,K,170,16:20:54,11/12/05,WSW,21MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834060,V,170,16:21:00,11/12/05,SSW,20MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834066,X,170,16:21:06,11/12/05,SW,25MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834072,Z,170,16:21:12,11/12/05,SW,20MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834078,E,170,16:21:18,11/12/05,SW,15MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834084,G,170,16:21:24,11/12/05,SW,14MPH,001K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834090,F,170,16:21:30,11/12/05,WSW,17MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834096,M,170,16:21:36,11/12/05,SW,24MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834102,I,170,16:21:42,11/12/05,SW,23MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834108,N,170,16:21:48,11/12/05,SW,23MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834114,S,170,16:21:54,11/12/05,SW,19MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834120,X,170,16:22:00,11/12/05,SW,19MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834126,T,170,16:22:06,11/12/05,WSW,19MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834132,Y,170,16:22:12,11/12/05,WSW,21MPH,001K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834138,D,170,16:22:18,11/12/05,WSW,15MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834144,L,170,16:22:24,11/12/05,WSW,16MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834150,K,170,16:22:30,11/12/05,SW,14MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834156,O,170,16:22:36,11/12/05,SW,14MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834162,Q,170,16:22:42,11/12/05,SW,16MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834168,B,170,16:22:48,11/12/05,SW,19MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834174,D,170,16:22:54,11/12/05,SW,16MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834180,C,170,16:23:00,11/12/05,WSW,21MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834186,D,170,16:23:06,11/12/05,SW,19MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834192,F,170,16:23:12,11/12/05,SW,15MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834198,N,170,16:23:18,11/12/05,WSW,17MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834204,S,170,16:23:24,11/12/05,SW,20MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834210,R,170,16:23:30,11/12/05,SW,18MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834216,W,170,16:23:36,11/12/05,WSW,18MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834222,V,170,16:23:42,11/12/05,SW,13MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834228,A,170,16:23:48,11/12/05,W,13MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834234,Q,170,16:23:54,11/12/05,W,13MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834240,B,170,16:24:00,11/12/05,SW,10MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834246,A,170,16:24:06,11/12/05,WSW,11MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834252,I,170,16:24:12,11/12/05,WSW,12MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834258,N,170,16:24:18,11/12/05,W,13MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834264,V,170,16:24:24,11/12/05,WSW,11MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834270,X,170,16:24:30,11/12/05,SW,11MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834276,C,170,16:24:36,11/12/05,SW,12MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834282,B,170,16:24:42,11/12/05,WSW,11MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834288,M,170,16:24:48,11/12/05,SW,12MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834294,I,170,16:24:54,11/12/05,SW,13MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834300,N,170,16:25:00,11/12/05,WSW,11MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834306,P,170,16:25:06,11/12/05,W,09MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834312,R,170,16:25:12,11/12/05,SSW,13MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834318,Z,170,16:25:18,11/12/05,WSW,13MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834324,H,170,16:25:24,11/12/05,SW,16MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834330,G,170,16:25:30,11/12/05,SW,14MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834336,O,170,16:25:36,11/12/05,WSW,13MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834342,Q,170,16:25:42,11/12/05,SW,14MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834348,Y,170,16:25:48,11/12/05,WSW,14MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834354,X,170,16:25:54,11/12/05,SW,13MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834360,C,170,16:26:00,11/12/05,WSW,16MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834366,B,170,16:26:06,11/12/05,SW,16MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834372,G,170,16:26:12,11/12/05,WSW,15MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834378,L,170,16:26:18,11/12/05,SW,18MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834384,Q,170,16:26:24,11/12/05,SW,16MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834390,M,170,16:26:30,11/12/05,SW,18MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834396,X,170,16:26:36,11/12/05,SW,15MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834402,T,170,16:26:42,11/12/05,W,15MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834408,Y,170,16:26:48,11/12/05,WSW,14MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834414,A,170,16:26:54,11/12/05,SW,13MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834420,I,170,16:27:00,11/12/05,SW,12MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834426,H,170,16:27:06,11/12/05,SW,13MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834432,P,170,16:27:12,11/12/05,SW,18MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834438,O,170,16:27:18,11/12/05,SW,20MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834444,T,170,16:27:24,11/12/05,WSW,22MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834450,V,170,16:27:30,11/12/05,SW,19MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834456,D,170,16:27:36,11/12/05,WSW,23MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834462,F,170,16:27:42,11/12/05,WSW,21MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834468,H,170,16:27:48,11/12/05,WSW,16MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834474,G,170,16:27:54,11/12/05,W,17MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834480,L,170,16:28:00,11/12/05,W,17MPH,001K,460F,069F,073%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131834486,T,170,16:28:06,11/12/05,WSW,14MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834492,V,170,16:28:12,11/12/05,SW,14MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834498,X,170,16:28:18,11/12/05,SSW,12MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834504,F,170,16:28:24,11/12/05,SW,11MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834510,E,170,16:28:30,11/12/05,SW,11MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834516,M,170,16:28:36,11/12/05,SW,13MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834522,I,170,16:28:42,11/12/05,SW,19MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834528,N,170,16:28:48,11/12/05,W,16MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834534,J,170,16:28:54,11/12/05,SW,14MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834540,N,170,16:29:00,11/12/05,W,16MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834546,P,170,16:29:06,11/12/05,W,22MPH,001K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834552,U,170,16:29:12,11/12/05,SW,16MPH,002K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834558,T,170,16:29:18,11/12/05,SSW,18MPH,002K,460F,069F,073%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131834564,B,170,16:29:24,11/12/05,WSW,18MPH,002K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834570,D,170,16:29:30,11/12/05,SW,21MPH,002K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834576,L,170,16:29:36,11/12/05,WSW,21MPH,002K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834582,N,170,16:29:42,11/12/05,SW,19MPH,002K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834588,V,170,16:29:48,11/12/05,SW,23MPH,002K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834594,R,170,16:29:54,11/12/05,SW,23MPH,002K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834600,C,170,16:30:00,11/12/05,SW,21MPH,002K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834606,V,170,16:30:06,11/12/05,SSW,20MPH,002K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834612,G,170,16:30:12,11/12/05,SW,18MPH,002K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834618,Z,170,16:30:18,11/12/05,SSW,21MPH,002K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834624,Q,170,16:30:24,11/12/05,SW,18MPH,002K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834630,M,170,16:30:30,11/12/05,WSW,19MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834636,U,170,16:30:36,11/12/05,WSW,23MPH,002K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834642,T,170,16:30:42,11/12/05,SW,19MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834648,Y,170,16:30:48,11/12/05,WSW,18MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834654,A,170,16:30:54,11/12/05,WSW,25MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834660,C,170,16:31:00,11/12/05,SW,23MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834666,H,170,16:31:06,11/12/05,W,23MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834672,P,170,16:31:12,11/12/05,SW,19MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834678,R,170,16:31:18,11/12/05,WSW,18MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834684,T,170,16:31:24,11/12/05,WSW,16MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834690,Y,170,16:31:30,11/12/05,WSW,16MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834696,G,170,16:31:36,11/12/05,WSW,18MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834702,I,170,16:31:42,11/12/05,SW,18MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834708,Q,170,16:31:48,11/12/05,WSW,17MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834714,P,170,16:31:54,11/12/05,SW,18MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834720,X,170,16:32:00,11/12/05,SW,24MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834726,Z,170,16:32:06,11/12/05,SW,20MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834732,E,170,16:32:12,11/12/05,SW,20MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834738,J,170,16:32:18,11/12/05,SW,21MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834744,R,170,16:32:24,11/12/05,WSW,22MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834750,T,170,16:32:30,11/12/05,W,22MPH,001K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834756,B,170,16:32:36,11/12/05,WSW,17MPH,001K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834762,U,170,16:32:42,11/12/05,WSW,16MPH,001K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834768,C,170,16:32:48,11/12/05,SW,18MPH,001K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834774,K,170,16:32:54,11/12/05,WSW,18MPH,001K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131834780,S,170,16:33:00,11/12/05,WSW,14MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834786,R,170,16:33:06,11/12/05,WSW,16MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834792,Z,170,16:33:12,11/12/05,WSW,13MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834798,V,170,16:33:18,11/12/05,WSW,13MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834804,A,170,16:33:24,11/12/05,WSW,18MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834810,Z,170,16:33:30,11/12/05,SSW,15MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834816,H,170,16:33:36,11/12/05,WSW,16MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834822,J,170,16:33:42,11/12/05,WSW,18MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834828,I,170,16:33:48,11/12/05,SW,20MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834834,H,170,16:33:54,11/12/05,SW,16MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834840,M,170,16:34:00,11/12/05,WSW,17MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834846,O,170,16:34:06,11/12/05,SW,14MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834852,W,170,16:34:12,11/12/05,SW,17MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834858,V,170,16:34:18,11/12/05,SW,16MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834864,A,170,16:34:24,11/12/05,WSW,19MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834870,Z,170,16:34:30,11/12/05,WSW,19MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834876,Y,170,16:34:36,11/12/05,SW,16MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834882,A,170,16:34:42,11/12/05,WSW,14MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834888,I,170,16:34:48,11/12/05,SW,19MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834894,Y,170,16:34:54,11/12/05,SSW,15MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834900,S,170,16:35:00,11/12/05,SW,19MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834906,T,170,16:35:06,11/12/05,WSW,17MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834912,B,170,16:35:12,11/12/05,WSW,17MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834918,D,170,16:35:18,11/12/05,WSW,18MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834924,L,170,16:35:24,11/12/05,WSW,20MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834930,N,170,16:35:30,11/12/05,SW,15MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834936,P,170,16:35:36,11/12/05,SW,19MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834942,R,170,16:35:42,11/12/05,SW,21MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834948,Z,170,16:35:48,11/12/05,WSW,18MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834954,V,170,16:35:54,11/12/05,SW,18MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834960,U,170,16:36:00,11/12/05,WSW,21MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834966,Q,170,16:36:06,11/12/05,W,17MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834972,P,170,16:36:12,11/12/05,WSW,18MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834978,I,170,16:36:18,11/12/05,SW,19MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834984,H,170,16:36:24,11/12/05,SW,19MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834990,D,170,16:36:30,11/12/05,SSW,21MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131834996,F,170,16:36:36,11/12/05,SW,20MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131835002,B,170,16:36:42,11/12/05,SW,16MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131835008,A,170,16:36:48,11/12/05,SW,18MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131835014,Z,170,16:36:54,11/12/05,WSW,19MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131835020,B,170,16:37:00,11/12/05,SW,16MPH,001K,460F,069F,073%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131835026,X,170,16:37:06,11/12/05,WSW,16MPH,001K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835032,Q,170,16:37:12,11/12/05,SW,16MPH,001K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835038,M,170,16:37:18,11/12/05,SSW,23MPH,001K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835044,L,170,16:37:24,11/12/05,SSW,16MPH,001K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835050,H,170,16:37:30,11/12/05,WSW,17MPH,001K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835056,J,170,16:37:36,11/12/05,SW,19MPH,001K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835062,Z,170,16:37:42,11/12/05,SW,18MPH,001K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835068,Y,170,16:37:48,11/12/05,SW,19MPH,001K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835074,A,170,16:37:54,11/12/05,SW,21MPH,001K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835080,C,170,16:38:00,11/12/05,SW,20MPH,001K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835086,B,170,16:38:06,11/12/05,SSW,15MPH,001K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835092,A,170,16:38:12,11/12/05,SSW,22MPH,002K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835098,C,170,16:38:18,11/12/05,SW,21MPH,002K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835104,H,170,16:38:24,11/12/05,SW,19MPH,002K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835110,X,170,16:38:30,11/12/05,SW,18MPH,002K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835116,O,170,16:38:36,11/12/05,SSW,17MPH,002K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835122,Q,170,16:38:42,11/12/05,SW,15MPH,002K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835128,V,170,16:38:48,11/12/05,SW,14MPH,002K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835134,T,170,16:38:54,11/12/05,SSW,16MPH,002K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835140,D,170,16:39:00,11/12/05,SW,16MPH,002K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835146,F,170,16:39:06,11/12/05,SW,21MPH,001K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835152,N,170,16:39:12,11/12/05,SSW,14MPH,001K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835158,P,170,16:39:18,11/12/05,SSW,14MPH,001K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835164,X,170,16:39:24,11/12/05,SSW,15MPH,001K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835170,W,170,16:39:30,11/12/05,SW,14MPH,001K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835176,V,170,16:39:36,11/12/05,SW,16MPH,001K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835182,X,170,16:39:42,11/12/05,SW,16MPH,001K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835188,W,170,16:39:48,11/12/05,SW,17MPH,001K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835194,S,170,16:39:54,11/12/05,SSW,18MPH,001K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835200,A,170,16:40:00,11/12/05,SSW,19MPH,001K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835206,S,170,16:40:06,11/12/05,SW,24MPH,002K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835212,U,170,16:40:12,11/12/05,SSW,21MPH,002K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835218,W,170,16:40:18,11/12/05,SW,22MPH,002K,460F,069F,073%,29.23F,00.00\"D,00.25\"M,00.00\"R\n1131835224,B,170,16:40:24,11/12/05,SSW,22MPH,002K,460F,069F,073%,29.23F,00.00\"D,00.25\"M,00.00\"R\n1131835230,U,170,16:40:30,11/12/05,SW,22MPH,002K,460F,069F,073%,29.23F,00.00\"D,00.25\"M,00.00\"R\n1131835236,T,170,16:40:36,11/12/05,SW,21MPH,002K,460F,069F,073%,29.23F,00.00\"D,00.25\"M,00.00\"R\n1131835242,P,170,16:40:42,11/12/05,SSW,23MPH,002K,460F,069F,073%,29.23F,00.00\"D,00.25\"M,00.00\"R\n1131835248,U,170,16:40:48,11/12/05,SSW,29MPH,002K,460F,069F,073%,29.23F,00.00\"D,00.25\"M,00.00\"R\n1131835254,Q,170,16:40:54,11/12/05,SW,22MPH,002K,460F,069F,073%,29.23F,00.00\"D,00.25\"M,00.00\"R\n1131835260,Y,170,16:41:00,11/12/05,SW,29MPH,002K,460F,069F,072%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835266,X,170,16:41:06,11/12/05,SW,23MPH,002K,460F,069F,072%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835272,F,170,16:41:12,11/12/05,SSW,18MPH,002K,460F,069F,072%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835278,E,170,16:41:18,11/12/05,SW,18MPH,002K,460F,069F,072%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835284,J,170,16:41:24,11/12/05,SW,21MPH,002K,460F,069F,072%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835290,L,170,16:41:30,11/12/05,SW,23MPH,002K,460F,069F,072%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835296,Q,170,16:41:36,11/12/05,SW,17MPH,002K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835302,M,170,16:41:42,11/12/05,SSW,14MPH,002K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835308,X,170,16:41:48,11/12/05,SSW,17MPH,002K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835314,W,170,16:41:54,11/12/05,SSW,16MPH,002K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835320,E,170,16:42:00,11/12/05,SW,17MPH,002K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835326,C,170,16:42:06,11/12/05,SSW,16MPH,003K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835332,N,170,16:42:12,11/12/05,SW,20MPH,003K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835338,P,170,16:42:18,11/12/05,SSW,23MPH,003K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835344,U,170,16:42:24,11/12/05,SSW,21MPH,003K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835350,W,170,16:42:30,11/12/05,SW,23MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835356,B,170,16:42:36,11/12/05,SW,27MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835362,D,170,16:42:42,11/12/05,SW,24MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835368,L,170,16:42:48,11/12/05,SW,26MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835374,K,170,16:42:54,11/12/05,SSW,24MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835380,P,170,16:43:00,11/12/05,SW,27MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835386,Q,170,16:43:06,11/12/05,SSW,28MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835392,M,170,16:43:12,11/12/05,SW,25MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835398,U,170,16:43:18,11/12/05,SW,29MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835404,W,170,16:43:24,11/12/05,SSW,37MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835410,E,170,16:43:30,11/12/05,SSW,26MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835416,M,170,16:43:36,11/12/05,SW,32MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835422,O,170,16:43:42,11/12/05,SW,23MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835428,W,170,16:43:48,11/12/05,SW,34MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835434,S,170,16:43:54,11/12/05,SW,32MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835440,X,170,16:44:00,11/12/05,SW,31MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835446,Z,170,16:44:06,11/12/05,SW,29MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835452,Y,170,16:44:12,11/12/05,SW,25MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835458,D,170,16:44:18,11/12/05,SW,31MPH,003K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835464,L,170,16:44:24,11/12/05,SW,29MPH,004K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835470,Y,170,16:44:30,11/12/05,WSW,30MPH,004K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835476,P,170,16:44:36,11/12/05,SW,29MPH,004K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835482,R,170,16:44:42,11/12/05,WSW,35MPH,004K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835488,W,170,16:44:48,11/12/05,SW,25MPH,005K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835494,P,170,16:44:54,11/12/05,WSW,31MPH,005K,460F,069F,073%,29.21F,00.00\"D,00.25\"M,00.00\"R\n1131835500,A,170,16:45:00,11/12/05,SW,24MPH,005K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835506,C,170,16:45:06,11/12/05,SW,23MPH,005K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835512,H,170,16:45:12,11/12/05,WSW,21MPH,005K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835518,J,170,16:45:18,11/12/05,WSW,29MPH,005K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835524,O,170,16:45:24,11/12/05,WSW,28MPH,005K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835530,Q,170,16:45:30,11/12/05,SW,33MPH,005K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835536,Y,170,16:45:36,11/12/05,W,29MPH,005K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835542,X,170,16:45:42,11/12/05,WSW,27MPH,005K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835548,F,170,16:45:48,11/12/05,WSW,31MPH,005K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835554,H,170,16:45:54,11/12/05,W,26MPH,006K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835560,M,170,16:46:00,11/12/05,W,26MPH,006K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835566,I,170,16:46:06,11/12/05,W,22MPH,006K,460F,069F,073%,29.22F,00.00\"D,00.25\"M,00.00\"R\n1131835572,K,170,16:46:12,11/12/05,WSW,29MPH,006K,460F,069F,073%,29.23F,00.00\"D,00.25\"M,00.00\"R\n1131835578,M,170,16:46:18,11/12/05,WSW,32MPH,005K,460F,069F,073%,29.23F,00.00\"D,00.25\"M,00.00\"R\n1131835584,U,170,16:46:24,11/12/05,WSW,25MPH,005K,460F,069F,073%,29.23F,00.00\"D,00.25\"M,00.00\"R\n1131835590,T,170,16:46:30,11/12/05,SW,29MPH,005K,460F,069F,073%,29.23F,00.00\"D,00.25\"M,00.00\"R\n1131835596,B,170,16:46:36,11/12/05,W,26MPH,005K,460F,069F,073%,29.23F,00.00\"D,00.25\"M,00.00\"R\n1131835602,D,170,16:46:42,11/12/05,WSW,32MPH,005K,460F,069F,073%,29.23F,00.00\"D,00.25\"M,00.00\"R\n1131835608,L,170,16:46:48,11/12/05,WSW,32MPH,005K,460F,069F,073%,29.23F,00.00\"D,00.25\"M,00.00\"R\n1131835614,N,170,16:46:54,11/12/05,WSW,24MPH,005K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835620,V,170,16:47:00,11/12/05,WSW,28MPH,004K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835626,T,170,16:47:06,11/12/05,WSW,29MPH,004K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835632,B,170,16:47:12,11/12/05,W,29MPH,004K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835638,D,170,16:47:18,11/12/05,W,31MPH,004K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835644,F,170,16:47:24,11/12/05,WSW,26MPH,004K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835650,H,170,16:47:30,11/12/05,WSW,28MPH,004K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835656,P,170,16:47:36,11/12/05,WNW,23MPH,004K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835662,I,170,16:47:42,11/12/05,WSW,20MPH,003K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835668,Q,170,16:47:48,11/12/05,WSW,23MPH,003K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835674,S,170,16:47:54,11/12/05,W,19MPH,003K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835680,D,170,16:48:00,11/12/05,WSW,13MPH,003K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835686,F,170,16:48:06,11/12/05,W,16MPH,003K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835692,K,170,16:48:12,11/12/05,WSW,23MPH,003K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835698,G,170,16:48:18,11/12/05,WSW,22MPH,003K,460F,069F,073%,29.24F,00.00\"D,00.25\"M,00.00\"R\n1131835704,O,170,16:48:24,11/12/05,W,22MPH,003K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835710,N,170,16:48:30,11/12/05,W,26MPH,003K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835716,V,170,16:48:36,11/12/05,WNW,21MPH,003K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835722,U,170,16:48:42,11/12/05,W,28MPH,003K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835728,Z,170,16:48:48,11/12/05,SSW,21MPH,003K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835734,B,170,16:48:54,11/12/05,W,23MPH,003K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835740,G,170,16:49:00,11/12/05,W,29MPH,003K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835746,I,170,16:49:06,11/12/05,W,25MPH,003K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835752,N,170,16:49:12,11/12/05,WSW,24MPH,003K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835758,M,170,16:49:18,11/12/05,W,29MPH,002K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835764,U,170,16:49:24,11/12/05,WNW,18MPH,002K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835770,T,170,16:49:30,11/12/05,W,31MPH,002K,460F,069F,073%,29.25F,00.00\"D,00.25\"M,00.00\"R\n1131835776,E,170,16:49:36,11/12/05,WSW,31MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835782,A,170,16:49:42,11/12/05,W,24MPH,002K,460F,069F,073%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835788,L,170,16:49:48,11/12/05,W,27MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835794,K,170,16:49:54,11/12/05,WSW,26MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835800,S,170,16:50:00,11/12/05,W,29MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835806,U,170,16:50:06,11/12/05,W,19MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835812,C,170,16:50:12,11/12/05,W,22MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835818,E,170,16:50:18,11/12/05,WSW,29MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835824,M,170,16:50:24,11/12/05,W,24MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835830,F,170,16:50:30,11/12/05,W,23MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835836,K,170,16:50:36,11/12/05,W,21MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835842,J,170,16:50:42,11/12/05,WSW,23MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835848,O,170,16:50:48,11/12/05,WSW,26MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835854,Q,170,16:50:54,11/12/05,WSW,23MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835860,B,170,16:51:00,11/12/05,W,21MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835866,D,170,16:51:06,11/12/05,W,18MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835872,L,170,16:51:12,11/12/05,WNW,17MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835878,K,170,16:51:18,11/12/05,SW,27MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835884,S,170,16:51:24,11/12/05,W,23MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835890,O,170,16:51:30,11/12/05,W,24MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835896,W,170,16:51:36,11/12/05,WSW,26MPH,002K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835902,V,170,16:51:42,11/12/05,W,19MPH,002K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835908,C,170,16:51:48,11/12/05,W,21MPH,002K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835914,E,170,16:51:54,11/12/05,WSW,21MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835920,M,170,16:52:00,11/12/05,WSW,27MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835926,O,170,16:52:06,11/12/05,WSW,19MPH,002K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835932,T,170,16:52:12,11/12/05,W,16MPH,002K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835938,Y,170,16:52:18,11/12/05,W,15MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835944,D,170,16:52:24,11/12/05,W,26MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835950,C,170,16:52:30,11/12/05,W,23MPH,002K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131835956,E,170,16:52:36,11/12/05,W,17MPH,002K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835962,X,170,16:52:42,11/12/05,W,19MPH,002K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835968,B,170,16:52:48,11/12/05,WSW,21MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835974,U,170,16:52:54,11/12/05,WSW,18MPH,001K,460F,069F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131835980,H,170,16:53:00,11/12/05,WSW,22MPH,001K,460F,069F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131835986,D,170,16:53:06,11/12/05,W,20MPH,001K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131835992,I,170,16:53:12,11/12/05,W,19MPH,001K,460F,069F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131835998,H,170,16:53:18,11/12/05,WSW,16MPH,001K,460F,069F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836004,J,170,16:53:24,11/12/05,WSW,18MPH,001K,460F,069F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836010,F,170,16:53:30,11/12/05,W,19MPH,001K,460F,069F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836016,B,170,16:53:36,11/12/05,WNW,19MPH,001K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836022,A,170,16:53:42,11/12/05,W,26MPH,001K,460F,069F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836028,F,170,16:53:48,11/12/05,W,26MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836034,E,170,16:53:54,11/12/05,WSW,21MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836040,J,170,16:54:00,11/12/05,SW,23MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836046,L,170,16:54:06,11/12/05,W,24MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836052,T,170,16:54:12,11/12/05,W,23MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836058,V,170,16:54:18,11/12/05,SW,26MPH,001K,460F,069F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836064,D,170,16:54:24,11/12/05,W,23MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836070,F,170,16:54:30,11/12/05,W,24MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836076,K,170,16:54:36,11/12/05,WSW,21MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836082,J,170,16:54:42,11/12/05,W,24MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836088,R,170,16:54:48,11/12/05,W,22MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836094,P,170,16:54:54,11/12/05,WSW,30MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836100,R,170,16:55:00,11/12/05,WSW,27MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836106,T,170,16:55:06,11/12/05,WSW,27MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836112,Y,170,16:55:12,11/12/05,W,23MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836118,X,170,16:55:18,11/12/05,WSW,23MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836124,C,170,16:55:24,11/12/05,W,28MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836130,B,170,16:55:30,11/12/05,WSW,19MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836136,J,170,16:55:36,11/12/05,WNW,20MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836142,I,170,16:55:42,11/12/05,W,14MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836148,Q,170,16:55:48,11/12/05,W,18MPH,001K,460F,070F,072%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836154,S,170,16:55:54,11/12/05,WSW,28MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836160,A,170,16:56:00,11/12/05,W,26MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836166,C,170,16:56:06,11/12/05,W,20MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836172,K,170,16:56:12,11/12/05,NW,17MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836178,M,170,16:56:18,11/12/05,W,19MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836184,R,170,16:56:24,11/12/05,WNW,27MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836190,T,170,16:56:30,11/12/05,WSW,19MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836196,B,170,16:56:36,11/12/05,W,18MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836202,D,170,16:56:42,11/12/05,W,30MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836208,I,170,16:56:48,11/12/05,WNW,25MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836214,K,170,16:56:54,11/12/05,W,26MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836220,V,170,16:57:00,11/12/05,W,25MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836226,X,170,16:57:06,11/12/05,WNW,20MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836232,C,170,16:57:12,11/12/05,W,26MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836238,B,170,16:57:18,11/12/05,NW,26MPH,001K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836244,G,170,16:57:24,11/12/05,WNW,20MPH,001K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836250,C,170,16:57:30,11/12/05,WSW,21MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836256,H,170,16:57:36,11/12/05,W,19MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836262,M,170,16:57:42,11/12/05,N,12MPH,001K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836268,U,170,16:57:48,11/12/05,W,23MPH,001K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836274,T,170,16:57:54,11/12/05,W,23MPH,001K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836280,Y,170,16:58:00,11/12/05,WNW,24MPH,001K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836286,D,170,16:58:06,11/12/05,W,17MPH,001K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836292,I,170,16:58:12,11/12/05,WNW,28MPH,001K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836298,K,170,16:58:18,11/12/05,WNW,23MPH,001K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836304,P,170,16:58:24,11/12/05,WNW,27MPH,001K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836310,O,170,16:58:30,11/12/05,WNW,26MPH,001K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836316,W,170,16:58:36,11/12/05,WNW,26MPH,001K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836322,Y,170,16:58:42,11/12/05,W,21MPH,001K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836328,G,170,16:58:48,11/12/05,W,23MPH,001K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836334,Z,170,16:58:54,11/12/05,WSW,24MPH,001K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836340,N,170,16:59:00,11/12/05,WNW,27MPH,001K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836346,O,170,16:59:06,11/12/05,W,16MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836352,T,170,16:59:12,11/12/05,WNW,19MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836358,S,170,16:59:18,11/12/05,W,19MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836364,X,170,16:59:24,11/12/05,W,18MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836370,Z,170,16:59:30,11/12/05,W,17MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836376,E,170,16:59:36,11/12/05,NW,14MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131836382,G,170,16:59:42,11/12/05,WNW,24MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836388,L,170,16:59:48,11/12/05,WNW,22MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131836394,K,170,16:59:54,11/12/05,W,26MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836400,J,170,17:00:00,11/12/05,WNW,26MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836406,R,170,17:00:06,11/12/05,WNW,22MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836412,S,170,17:00:12,11/12/05,W,25MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836418,X,170,17:00:18,11/12/05,WNW,21MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836424,F,170,17:00:24,11/12/05,NW,21MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836430,B,170,17:00:30,11/12/05,WNW,27MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836436,H,170,17:00:36,11/12/05,W,24MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836442,G,170,17:00:42,11/12/05,W,31MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836448,O,170,17:00:48,11/12/05,W,29MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836454,K,170,17:00:54,11/12/05,W,27MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836460,P,170,17:01:00,11/12/05,W,20MPH,000K,460F,070F,067%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836520,N,170,17:02:00,11/12/05,W,16MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836530,Y,170,17:02:10,11/12/05,W,29MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836540,F,170,17:02:20,11/12/05,WNW,24MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836550,E,170,17:02:30,11/12/05,WNW,19MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836560,G,170,17:02:40,11/12/05,W,18MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836570,F,170,17:02:50,11/12/05,WNW,18MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836580,K,170,17:03:00,11/12/05,W,18MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836586,J,170,17:03:06,11/12/05,W,20MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836592,U,170,17:03:12,11/12/05,W,12MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836598,T,170,17:03:18,11/12/05,W,14MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836604,B,170,17:03:24,11/12/05,SW,16MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836610,X,170,17:03:30,11/12/05,WSW,14MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836616,I,170,17:03:36,11/12/05,W,18MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836622,K,170,17:03:42,11/12/05,W,22MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836628,S,170,17:03:48,11/12/05,NW,18MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836634,U,170,17:03:54,11/12/05,WSW,16MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836640,T,170,17:04:00,11/12/05,W,21MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836646,Y,170,17:04:06,11/12/05,W,26MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836652,G,170,17:04:12,11/12/05,NW,18MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836658,I,170,17:04:18,11/12/05,WNW,19MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836664,Q,170,17:04:24,11/12/05,W,23MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836670,S,170,17:04:30,11/12/05,W,22MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836676,R,170,17:04:36,11/12/05,WNW,25MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836682,Z,170,17:04:42,11/12/05,NW,24MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836688,H,170,17:04:48,11/12/05,W,29MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836694,D,170,17:04:54,11/12/05,WNW,32MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836700,C,170,17:05:00,11/12/05,W,26MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836706,E,170,17:05:06,11/12/05,W,21MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836712,M,170,17:05:12,11/12/05,W,29MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836718,R,170,17:05:18,11/12/05,WNW,20MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836724,W,170,17:05:24,11/12/05,W,17MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836730,Y,170,17:05:30,11/12/05,W,23MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836736,A,170,17:05:36,11/12/05,W,29MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836742,C,170,17:05:42,11/12/05,W,30MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836748,H,170,17:05:48,11/12/05,W,23MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836754,J,170,17:05:54,11/12/05,WNW,22MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836760,C,170,17:06:00,11/12/05,NW,23MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836766,H,170,17:06:06,11/12/05,W,21MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836772,P,170,17:06:12,11/12/05,W,21MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836778,R,170,17:06:18,11/12/05,W,14MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836784,Z,170,17:06:24,11/12/05,WSW,19MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836790,Y,170,17:06:30,11/12/05,WNW,21MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836796,D,170,17:06:36,11/12/05,NW,24MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836802,I,170,17:06:42,11/12/05,W,22MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836808,N,170,17:06:48,11/12/05,W,14MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836814,P,170,17:06:54,11/12/05,W,19MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836820,U,170,17:07:00,11/12/05,W,16MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836826,N,170,17:07:06,11/12/05,W,23MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836832,B,170,17:07:12,11/12/05,W,16MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836838,D,170,17:07:18,11/12/05,WSW,21MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836844,L,170,17:07:24,11/12/05,WNW,15MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836850,H,170,17:07:30,11/12/05,W,14MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836856,J,170,17:07:36,11/12/05,WNW,12MPH,000K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836862,L,170,17:07:42,11/12/05,W,19MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836868,T,170,17:07:48,11/12/05,WNW,18MPH,000K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836874,V,170,17:07:54,11/12/05,WNW,16MPH,000K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836880,D,170,17:08:00,11/12/05,W,21MPH,000K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836886,F,170,17:08:06,11/12/05,W,19MPH,000K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836892,K,170,17:08:12,11/12/05,W,15MPH,000K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836898,J,170,17:08:18,11/12/05,W,16MPH,000K,460F,070F,072%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836904,L,170,17:08:24,11/12/05,WNW,11MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836910,N,170,17:08:30,11/12/05,W,14MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836916,S,170,17:08:36,11/12/05,W,25MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836922,R,170,17:08:42,11/12/05,W,34MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836928,W,170,17:08:48,11/12/05,W,33MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836934,P,170,17:08:54,11/12/05,W,31MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836940,U,170,17:09:00,11/12/05,W,28MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131836946,W,170,17:09:06,11/12/05,W,27MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836952,Y,170,17:09:12,11/12/05,WSW,26MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836958,X,170,17:09:18,11/12/05,WSW,29MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836964,C,170,17:09:24,11/12/05,W,31MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836970,B,170,17:09:30,11/12/05,WSW,32MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836976,G,170,17:09:36,11/12/05,W,25MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836982,F,170,17:09:42,11/12/05,W,32MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836988,E,170,17:09:48,11/12/05,W,40MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131836994,A,170,17:09:54,11/12/05,W,37MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131837000,Z,170,17:10:00,11/12/05,W,35MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131837006,E,170,17:10:06,11/12/05,W,26MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131837012,G,170,17:10:12,11/12/05,SW,30MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837018,I,170,17:10:18,11/12/05,W,27MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131837024,H,170,17:10:24,11/12/05,WNW,27MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837030,J,170,17:10:30,11/12/05,W,26MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837036,L,170,17:10:36,11/12/05,WNW,29MPH,000K,460F,070F,070%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837042,H,170,17:10:42,11/12/05,WNW,32MPH,000K,460F,070F,070%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131837048,J,170,17:10:48,11/12/05,WNW,27MPH,000K,460F,070F,070%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131837054,I,170,17:10:54,11/12/05,W,26MPH,000K,460F,070F,070%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131837060,N,170,17:11:00,11/12/05,W,32MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837066,L,170,17:11:06,11/12/05,W,25MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131837072,H,170,17:11:12,11/12/05,W,27MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837078,M,170,17:11:18,11/12/05,W,34MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837084,O,170,17:11:24,11/12/05,WNW,26MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837090,H,170,17:11:30,11/12/05,WNW,23MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837096,M,170,17:11:36,11/12/05,WSW,24MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837102,I,170,17:11:42,11/12/05,W,25MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837108,N,170,17:11:48,11/12/05,WNW,27MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837114,G,170,17:11:54,11/12/05,W,24MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837120,F,170,17:12:00,11/12/05,W,34MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131837126,N,170,17:12:06,11/12/05,W,27MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131837132,P,170,17:12:12,11/12/05,WSW,27MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837138,O,170,17:12:18,11/12/05,W,27MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131837144,T,170,17:12:24,11/12/05,W,27MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131837150,S,170,17:12:30,11/12/05,W,31MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131837156,U,170,17:12:36,11/12/05,W,28MPH,000K,460F,070F,071%,29.26F,00.00\"D,00.25\"M,00.00\"R\n1131837162,T,170,17:12:42,11/12/05,W,25MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837168,V,170,17:12:48,11/12/05,W,29MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837174,O,170,17:12:54,11/12/05,W,34MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837180,Q,170,17:13:00,11/12/05,W,24MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837186,M,170,17:13:06,11/12/05,W,25MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837192,R,170,17:13:12,11/12/05,WNW,18MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837198,K,170,17:13:18,11/12/05,WNW,21MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837204,S,170,17:13:24,11/12/05,W,21MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837210,R,170,17:13:30,11/12/05,WNW,19MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837216,W,170,17:13:36,11/12/05,WNW,21MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837222,V,170,17:13:42,11/12/05,WNW,22MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837228,X,170,17:13:48,11/12/05,WNW,29MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837234,Z,170,17:13:54,11/12/05,WNW,23MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837240,B,170,17:14:00,11/12/05,W,24MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837246,X,170,17:14:06,11/12/05,W,29MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837252,Z,170,17:14:12,11/12/05,W,22MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837258,V,170,17:14:18,11/12/05,NW,20MPH,000K,460F,070F,071%,29.27F,00.00\"D,00.25\"M,00.00\"R\n1131837264,A,170,17:14:24,11/12/05,NW,21MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837270,W,170,17:14:30,11/12/05,W,15MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837276,B,170,17:14:36,11/12/05,W,23MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837282,X,170,17:14:42,11/12/05,W,25MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837288,W,170,17:14:48,11/12/05,WNW,20MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837294,S,170,17:14:54,11/12/05,WNW,19MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837300,X,170,17:15:00,11/12/05,WNW,16MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837306,Z,170,17:15:06,11/12/05,WNW,14MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837312,B,170,17:15:12,11/12/05,WNW,13MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837318,X,170,17:15:18,11/12/05,WNW,18MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837324,C,170,17:15:24,11/12/05,NW,20MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837330,B,170,17:15:30,11/12/05,WNW,26MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837336,X,170,17:15:36,11/12/05,WNW,20MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837342,F,170,17:15:42,11/12/05,NW,16MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837348,H,170,17:15:48,11/12/05,WNW,13MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837354,G,170,17:15:54,11/12/05,W,19MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837360,I,170,17:16:00,11/12/05,WNW,14MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837366,E,170,17:16:06,11/12/05,NW,13MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837372,J,170,17:16:12,11/12/05,NW,18MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837378,L,170,17:16:18,11/12/05,NW,22MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837384,N,170,17:16:24,11/12/05,NW,16MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837390,P,170,17:16:30,11/12/05,WNW,14MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837396,R,170,17:16:36,11/12/05,NW,20MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837402,Q,170,17:16:42,11/12/05,WNW,22MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837408,V,170,17:16:48,11/12/05,WNW,16MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837414,U,170,17:16:54,11/12/05,WNW,22MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837420,Z,170,17:17:00,11/12/05,WNW,19MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837426,V,170,17:17:06,11/12/05,WNW,18MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837432,A,170,17:17:12,11/12/05,NW,14MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837438,Z,170,17:17:18,11/12/05,WNW,13MPH,000K,460F,070F,071%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837444,Y,170,17:17:24,11/12/05,NW,14MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837450,U,170,17:17:30,11/12/05,WNW,10MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837456,Z,170,17:17:36,11/12/05,WNW,23MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837462,V,170,17:17:42,11/12/05,W,17MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837468,X,170,17:17:48,11/12/05,WNW,21MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837474,W,170,17:17:54,11/12/05,WNW,19MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837480,Y,170,17:18:00,11/12/05,WNW,18MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837486,A,170,17:18:06,11/12/05,NW,18MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837492,Z,170,17:18:12,11/12/05,WNW,16MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837498,V,170,17:18:18,11/12/05,NW,13MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837504,X,170,17:18:24,11/12/05,NW,13MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837510,T,170,17:18:30,11/12/05,WNW,11MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837516,B,170,17:18:36,11/12/05,NW,13MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837522,U,170,17:18:42,11/12/05,WNW,16MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837528,W,170,17:18:48,11/12/05,WNW,10MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837534,V,170,17:18:54,11/12/05,W,10MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837540,A,170,17:19:00,11/12/05,NW,15MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837546,W,170,17:19:06,11/12/05,WNW,10MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837552,B,170,17:19:12,11/12/05,WNW,11MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837558,X,170,17:19:18,11/12/05,W,16MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837564,Z,170,17:19:24,11/12/05,WNW,27MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837570,V,170,17:19:30,11/12/05,WNW,20MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837576,X,170,17:19:36,11/12/05,WNW,18MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837582,C,170,17:19:42,11/12/05,NW,19MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837588,B,170,17:19:48,11/12/05,NW,21MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837594,A,170,17:19:54,11/12/05,WNW,25MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837600,F,170,17:20:00,11/12/05,WNW,24MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837606,E,170,17:20:06,11/12/05,NW,22MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837612,J,170,17:20:12,11/12/05,WNW,16MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837618,I,170,17:20:18,11/12/05,NW,23MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837624,N,170,17:20:24,11/12/05,NW,26MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837630,J,170,17:20:30,11/12/05,W,19MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837636,O,170,17:20:36,11/12/05,WNW,21MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837642,E,170,17:20:42,11/12/05,W,16MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837648,M,170,17:20:48,11/12/05,WNW,20MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837654,L,170,17:20:54,11/12/05,W,21MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837660,Q,170,17:21:00,11/12/05,W,19MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837666,P,170,17:21:06,11/12/05,NW,19MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837672,U,170,17:21:12,11/12/05,NW,17MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837678,Q,170,17:21:18,11/12/05,WNW,16MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837684,V,170,17:21:24,11/12/05,WNW,14MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837690,U,170,17:21:30,11/12/05,WNW,18MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837696,W,170,17:21:36,11/12/05,NW,19MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837702,V,170,17:21:42,11/12/05,NW,20MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837708,A,170,17:21:48,11/12/05,NW,18MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837714,Z,170,17:21:54,11/12/05,WNW,18MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837720,E,170,17:22:00,11/12/05,W,16MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837726,A,170,17:22:06,11/12/05,W,19MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837732,F,170,17:22:12,11/12/05,WNW,11MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837738,E,170,17:22:18,11/12/05,NNW,11MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837744,J,170,17:22:24,11/12/05,WNW,13MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837750,I,170,17:22:30,11/12/05,W,16MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837756,H,170,17:22:36,11/12/05,NW,16MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837762,D,170,17:22:42,11/12/05,WNW,13MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837768,W,170,17:22:48,11/12/05,WNW,14MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837774,B,170,17:22:54,11/12/05,NW,11MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837780,D,170,17:23:00,11/12/05,NW,18MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837786,B,170,17:23:06,11/12/05,NW,16MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837792,A,170,17:23:12,11/12/05,NW,17MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837798,Z,170,17:23:18,11/12/05,NW,19MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837804,E,170,17:23:24,11/12/05,WNW,21MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837810,A,170,17:23:30,11/12/05,WNW,15MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837816,F,170,17:23:36,11/12/05,WNW,17MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837822,E,170,17:23:42,11/12/05,W,15MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837828,J,170,17:23:48,11/12/05,W,15MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837834,C,170,17:23:54,11/12/05,W,12MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837840,G,170,17:24:00,11/12/05,NW,14MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837846,F,170,17:24:06,11/12/05,WNW,13MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837852,K,170,17:24:12,11/12/05,NW,13MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837858,D,170,17:24:18,11/12/05,WNW,18MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837864,C,170,17:24:24,11/12/05,WNW,20MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837870,B,170,17:24:30,11/12/05,WNW,18MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131837876,D,170,17:24:36,11/12/05,NW,16MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837882,C,170,17:24:42,11/12/05,NW,16MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837888,H,170,17:24:48,11/12/05,NW,16MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837894,D,170,17:24:54,11/12/05,NW,12MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837900,I,170,17:25:00,11/12/05,NW,13MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837906,E,170,17:25:06,11/12/05,WNW,14MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837912,G,170,17:25:12,11/12/05,WNW,18MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837918,I,170,17:25:18,11/12/05,WNW,13MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837924,K,170,17:25:24,11/12/05,WNW,14MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837930,D,170,17:25:30,11/12/05,WNW,10MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837936,I,170,17:25:36,11/12/05,NW,07MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837942,H,170,17:25:42,11/12/05,WNW,11MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837948,M,170,17:25:48,11/12/05,NW,24MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837954,I,170,17:25:54,11/12/05,WNW,18MPH,000K,460F,069F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837960,Q,170,17:26:00,11/12/05,W,24MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837966,P,170,17:26:06,11/12/05,WNW,21MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837972,U,170,17:26:12,11/12/05,NW,19MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837978,T,170,17:26:18,11/12/05,WNW,18MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837984,S,170,17:26:24,11/12/05,WNW,21MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837990,R,170,17:26:30,11/12/05,W,18MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131837996,T,170,17:26:36,11/12/05,NW,14MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838002,V,170,17:26:42,11/12/05,WNW,13MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838008,R,170,17:26:48,11/12/05,NW,21MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838014,W,170,17:26:54,11/12/05,WNW,21MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838020,Y,170,17:27:00,11/12/05,WNW,21MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838026,X,170,17:27:06,11/12/05,NW,16MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838032,T,170,17:27:12,11/12/05,NW,16MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838038,J,170,17:27:18,11/12/05,W,11MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838044,I,170,17:27:24,11/12/05,NW,15MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838050,E,170,17:27:30,11/12/05,NW,23MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838056,G,170,17:27:36,11/12/05,WNW,19MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838062,Z,170,17:27:42,11/12/05,NW,16MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838068,B,170,17:27:48,11/12/05,NW,13MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838074,U,170,17:27:54,11/12/05,NW,18MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838080,W,170,17:28:00,11/12/05,NW,20MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838086,T,170,17:28:06,11/12/05,WNW,18MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838092,Y,170,17:28:12,11/12/05,WNW,21MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838098,X,170,17:28:18,11/12/05,W,23MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838104,C,170,17:28:24,11/12/05,NW,21MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838110,B,170,17:28:30,11/12/05,WNW,18MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838116,G,170,17:28:36,11/12/05,W,16MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838122,F,170,17:28:42,11/12/05,W,16MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838128,H,170,17:28:48,11/12/05,W,14MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838134,J,170,17:28:54,11/12/05,WNW,13MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838140,O,170,17:29:00,11/12/05,WNW,21MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838146,N,170,17:29:06,11/12/05,NW,23MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838152,S,170,17:29:12,11/12/05,NW,16MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838158,Q,170,17:29:18,11/12/05,NW,21MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838164,S,170,17:29:24,11/12/05,WNW,23MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838170,R,170,17:29:30,11/12/05,WNW,22MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838176,W,170,17:29:36,11/12/05,WNW,18MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838182,J,170,17:29:42,11/12/05,WNW,18MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838188,I,170,17:29:48,11/12/05,WNW,15MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838194,V,170,17:29:54,11/12/05,WNW,20MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838200,X,170,17:30:00,11/12/05,NW,16MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838206,K,170,17:30:06,11/12/05,WNW,18MPH,000K,460F,070F,072%,29.28F,00.00\"D,00.25\"M,00.00\"R\n1131838212,K,170,17:30:12,11/12/05,NW,20MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838218,J,170,17:30:18,11/12/05,WSW,14MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838224,O,170,17:30:24,11/12/05,W,19MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838230,H,170,17:30:30,11/12/05,WNW,14MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838236,M,170,17:30:36,11/12/05,WNW,14MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838242,I,170,17:30:42,11/12/05,WNW,16MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838248,N,170,17:30:48,11/12/05,NW,15MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n1131838254,M,170,17:30:54,11/12/05,WNW,16MPH,000K,460F,070F,072%,29.29F,00.00\"D,00.25\"M,00.00\"R\n"
  },
  {
    "path": "htdocs/plotting/snet/data/SPKI4_071002.txt",
    "content": "1191333600,I,151,09:00:00,10/02/07,S,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333606,J,151,09:00:06,10/02/07,SSE,04MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333612,R,151,09:00:12,10/02/07,SSE,03MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333618,W,151,09:00:18,10/02/07,SE,03MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333624,T,151,09:00:24,10/02/07,SE,04MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333630,B,151,09:00:30,10/02/07,S,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333636,L,151,09:00:36,10/02/07,S,10MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333642,P,151,09:00:42,10/02/07,S,10MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333648,G,151,09:00:48,10/02/07,S,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333660,H,151,09:01:00,10/02/07,S,07MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333666,V,151,09:01:06,10/02/07,SSE,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333672,U,151,09:01:12,10/02/07,SSE,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333678,F,151,09:01:18,10/02/07,SE,07MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333684,A,151,09:01:24,10/02/07,S,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333690,K,151,09:01:30,10/02/07,SSE,09MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333696,M,151,09:01:36,10/02/07,S,07MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333702,A,151,09:01:42,10/02/07,SSE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333708,C,151,09:01:48,10/02/07,SSE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333714,M,151,09:01:54,10/02/07,ESE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333720,L,151,09:02:00,10/02/07,SE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333726,Z,151,09:02:06,10/02/07,S,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333732,V,151,09:02:12,10/02/07,SE,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333738,M,151,09:02:18,10/02/07,S,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333744,K,151,09:02:24,10/02/07,SSE,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333750,V,151,09:02:30,10/02/07,SSE,07MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333756,A,151,09:02:36,10/02/07,SSE,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333762,O,151,09:02:42,10/02/07,SSE,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333768,P,151,09:02:48,10/02/07,S,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333774,A,151,09:02:54,10/02/07,SSE,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333780,U,151,09:03:00,10/02/07,SE,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333786,I,151,09:03:06,10/02/07,SSE,03MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333792,K,151,09:03:12,10/02/07,SSE,04MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333798,O,151,09:03:18,10/02/07,ESE,03MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333804,P,151,09:03:24,10/02/07,SE,04MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333810,X,151,09:03:30,10/02/07,ESE,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333816,F,151,09:03:36,10/02/07,SE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333822,P,151,09:03:42,10/02/07,SSE,10MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333828,X,151,09:03:48,10/02/07,SSE,10MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333834,E,151,09:03:54,10/02/07,SSE,07MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333840,G,151,09:04:00,10/02/07,SSE,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333846,L,151,09:04:06,10/02/07,SE,09MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333852,M,151,09:04:12,10/02/07,SSE,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333858,U,151,09:04:18,10/02/07,SSE,11MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333864,B,151,09:04:24,10/02/07,SSE,11MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333870,M,151,09:04:30,10/02/07,SSW,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333876,N,151,09:04:36,10/02/07,SE,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333882,Y,151,09:04:42,10/02/07,SSE,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333888,U,151,09:04:48,10/02/07,SSE,07MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333894,D,151,09:04:54,10/02/07,SSE,07MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333900,F,151,09:05:00,10/02/07,SE,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333906,M,151,09:05:06,10/02/07,SE,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333912,N,151,09:05:12,10/02/07,SE,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333918,E,151,09:05:18,10/02/07,SE,09MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333924,J,151,09:05:24,10/02/07,SE,11MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333930,N,151,09:05:30,10/02/07,SE,10MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333936,V,151,09:05:36,10/02/07,SE,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333942,X,151,09:05:42,10/02/07,SSE,07MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333948,C,151,09:05:48,10/02/07,SSE,07MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333954,H,151,09:05:54,10/02/07,SE,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333960,P,151,09:06:00,10/02/07,SE,07MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333966,Z,151,09:06:06,10/02/07,SE,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333972,H,151,09:06:12,10/02/07,SE,09MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333978,S,151,09:06:18,10/02/07,SE,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333984,W,151,09:06:24,10/02/07,SE,07MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333990,H,151,09:06:30,10/02/07,SE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191333996,J,151,09:06:36,10/02/07,S,04MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334002,N,151,09:06:42,10/02/07,SE,04MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334008,M,151,09:06:48,10/02/07,SE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334014,R,151,09:06:54,10/02/07,S,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334020,W,151,09:07:00,10/02/07,SSE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334026,E,151,09:07:06,10/02/07,SSE,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334032,C,151,09:07:12,10/02/07,SSE,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334038,Q,151,09:07:18,10/02/07,S,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334044,U,151,09:07:24,10/02/07,SE,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334050,W,151,09:07:30,10/02/07,SE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334056,V,151,09:07:36,10/02/07,SSE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334062,T,151,09:07:42,10/02/07,S,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334068,B,151,09:07:48,10/02/07,SE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334074,F,151,09:07:54,10/02/07,E,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334080,G,151,09:08:00,10/02/07,SE,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334086,R,151,09:08:06,10/02/07,SSE,10MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334092,M,151,09:08:12,10/02/07,SSE,10MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334098,X,151,09:08:18,10/02/07,SE,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334104,Y,151,09:08:24,10/02/07,ESE,07MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334110,D,151,09:08:30,10/02/07,SE,07MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334116,Z,151,09:08:36,10/02/07,ESE,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334122,V,151,09:08:42,10/02/07,S,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334128,O,151,09:08:48,10/02/07,SSE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334134,N,151,09:08:54,10/02/07,SE,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334140,U,151,09:09:00,10/02/07,SSE,11MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334146,C,151,09:09:06,10/02/07,SSE,10MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334152,D,151,09:09:12,10/02/07,SSE,10MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334158,H,151,09:09:18,10/02/07,SSE,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334164,M,151,09:09:24,10/02/07,SE,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334170,O,151,09:09:30,10/02/07,SSE,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334176,T,151,09:09:36,10/02/07,SSE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334182,V,151,09:09:42,10/02/07,ESE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334188,G,151,09:09:48,10/02/07,SE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334194,B,151,09:09:54,10/02/07,SE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334200,J,151,09:10:00,10/02/07,ESE,03MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334206,E,151,09:10:06,10/02/07,SE,04MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334212,H,151,09:10:12,10/02/07,SE,04MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334218,A,151,09:10:18,10/02/07,SE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334224,F,151,09:10:24,10/02/07,ESE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334230,A,151,09:10:30,10/02/07,SE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334236,H,151,09:10:36,10/02/07,ESE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334242,J,151,09:10:42,10/02/07,SE,07MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334248,R,151,09:10:48,10/02/07,SE,07MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334254,K,151,09:10:54,10/02/07,SSE,06MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334260,I,151,09:11:00,10/02/07,SE,08MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334266,B,151,09:11:06,10/02/07,SE,08MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334272,G,151,09:11:12,10/02/07,SE,06MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334278,B,151,09:11:18,10/02/07,SSE,06MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334284,I,151,09:11:24,10/02/07,SE,08MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334290,M,151,09:11:30,10/02/07,SE,08MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334296,P,151,09:11:36,10/02/07,SE,07MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334302,W,151,09:11:42,10/02/07,SSE,06MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334308,B,151,09:11:48,10/02/07,ESE,07MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334314,C,151,09:11:54,10/02/07,SSE,06MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334320,H,151,09:12:00,10/02/07,S,07MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334326,D,151,09:12:06,10/02/07,SSE,04MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334332,L,151,09:12:12,10/02/07,S,06MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334338,Q,151,09:12:18,10/02/07,S,08MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334344,U,151,09:12:24,10/02/07,SE,05MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334350,Z,151,09:12:30,10/02/07,S,05MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334356,H,151,09:12:36,10/02/07,SSE,05MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334362,J,151,09:12:42,10/02/07,S,05MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334368,U,151,09:12:48,10/02/07,S,04MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334374,Y,151,09:12:54,10/02/07,SE,05MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334380,G,151,09:13:00,10/02/07,SSE,05MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334386,E,151,09:13:06,10/02/07,SSE,05MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334392,R,151,09:13:12,10/02/07,SE,04MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334398,V,151,09:13:18,10/02/07,SE,09MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334404,J,151,09:13:24,10/02/07,SE,08MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334410,O,151,09:13:30,10/02/07,SE,08MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334416,V,151,09:13:36,10/02/07,SE,08MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334422,A,151,09:13:42,10/02/07,SSE,06MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334428,I,151,09:13:48,10/02/07,S,03MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334434,K,151,09:13:54,10/02/07,SSE,04MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334440,V,151,09:14:00,10/02/07,SSE,04MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334446,T,151,09:14:06,10/02/07,SSW,04MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334452,N,151,09:14:12,10/02/07,S,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334458,S,151,09:14:18,10/02/07,SE,06MPH,001K,460F,065F,072%,29.77F,00.00\"D,00.01\"M,00.00\"R\n1191334464,G,151,09:14:24,10/02/07,SSE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334470,C,151,09:14:30,10/02/07,ESE,04MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334476,N,151,09:14:36,10/02/07,SSE,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334482,R,151,09:14:42,10/02/07,S,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334488,C,151,09:14:48,10/02/07,SW,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334494,K,151,09:14:54,10/02/07,SSW,05MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334500,R,151,09:15:00,10/02/07,S,06MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334506,S,151,09:15:06,10/02/07,S,04MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334512,A,151,09:15:12,10/02/07,SW,03MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334518,J,151,09:15:18,10/02/07,WSW,04MPH,001K,460F,065F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191334524,O,151,09:15:24,10/02/07,S,06MPH,001K,460F,065F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191334530,T,151,09:15:30,10/02/07,S,05MPH,001K,460F,065F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191334536,X,151,09:15:36,10/02/07,WSW,05MPH,001K,460F,065F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191334542,F,151,09:15:42,10/02/07,WSW,06MPH,001K,460F,065F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191334548,H,151,09:15:48,10/02/07,WSW,08MPH,001K,460F,065F,072%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191334554,S,151,09:15:54,10/02/07,WSW,08MPH,001K,460F,065F,072%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191334560,U,151,09:16:00,10/02/07,W,08MPH,001K,460F,065F,072%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191334566,E,151,09:16:06,10/02/07,W,10MPH,001K,460F,065F,072%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191334572,J,151,09:16:12,10/02/07,WSW,15MPH,001K,460F,065F,072%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191334578,Q,151,09:16:18,10/02/07,W,14MPH,001K,460F,065F,072%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191334584,D,151,09:16:24,10/02/07,W,12MPH,001K,460F,065F,072%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191334590,E,151,09:16:30,10/02/07,NW,16MPH,001K,460F,065F,072%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191334596,M,151,09:16:36,10/02/07,WSW,18MPH,001K,460F,065F,072%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191334602,R,151,09:16:42,10/02/07,WNW,17MPH,001K,460F,065F,072%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191334608,I,151,09:16:48,10/02/07,W,19MPH,001K,460F,065F,072%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191334614,O,151,09:16:54,10/02/07,W,19MPH,001K,460F,065F,072%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191334620,W,151,09:17:00,10/02/07,WNW,18MPH,001K,460F,065F,072%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191334626,B,151,09:17:06,10/02/07,WNW,14MPH,001K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334632,D,151,09:17:12,10/02/07,W,18MPH,001K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334638,F,151,09:17:18,10/02/07,W,16MPH,001K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334644,G,151,09:17:24,10/02/07,WNW,20MPH,001K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334650,L,151,09:17:30,10/02/07,SW,19MPH,001K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334656,W,151,09:17:36,10/02/07,WSW,19MPH,001K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334662,Y,151,09:17:42,10/02/07,W,19MPH,001K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334668,C,151,09:17:48,10/02/07,WSW,14MPH,000K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334674,E,151,09:17:54,10/02/07,W,24MPH,000K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334680,J,151,09:18:00,10/02/07,WSW,21MPH,000K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334686,U,151,09:18:06,10/02/07,W,11MPH,000K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334692,Y,151,09:18:12,10/02/07,W,13MPH,000K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334698,D,151,09:18:18,10/02/07,W,14MPH,000K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334704,L,151,09:18:24,10/02/07,WSW,19MPH,000K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334710,C,151,09:18:30,10/02/07,WNW,23MPH,000K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334716,J,151,09:18:36,10/02/07,W,14MPH,000K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334722,Q,151,09:18:42,10/02/07,W,14MPH,000K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334728,S,151,09:18:48,10/02/07,W,15MPH,000K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334734,R,151,09:18:54,10/02/07,W,14MPH,000K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334740,C,151,09:19:00,10/02/07,NW,13MPH,000K,460F,065F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334746,D,151,09:19:06,10/02/07,WSW,20MPH,000K,460F,066F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334752,I,151,09:19:12,10/02/07,WNW,16MPH,000K,460F,066F,072%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334758,Q,151,09:19:18,10/02/07,W,13MPH,000K,460F,066F,071%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334764,X,151,09:19:24,10/02/07,WNW,13MPH,000K,460F,066F,071%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334770,F,151,09:19:30,10/02/07,W,15MPH,001K,460F,066F,071%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334776,K,151,09:19:36,10/02/07,WSW,13MPH,001K,460F,066F,071%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334782,S,151,09:19:42,10/02/07,W,14MPH,001K,460F,066F,071%,29.84R,00.00\"D,00.01\"M,00.00\"R\n1191334788,X,151,09:19:48,10/02/07,W,14MPH,001K,460F,066F,071%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191334794,C,151,09:19:54,10/02/07,WNW,09MPH,001K,460F,066F,071%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191334800,D,151,09:20:00,10/02/07,W,08MPH,001K,460F,066F,071%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191334806,I,151,09:20:06,10/02/07,W,10MPH,001K,460F,066F,071%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191334812,G,151,09:20:12,10/02/07,W,08MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191334818,Q,151,09:20:18,10/02/07,SW,08MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191334824,U,151,09:20:24,10/02/07,W,06MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191334830,Z,151,09:20:30,10/02/07,NNE,05MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191334836,G,151,09:20:36,10/02/07,SW,03MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191334842,I,151,09:20:42,10/02/07,W,04MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191334848,Q,151,09:20:48,10/02/07,WNW,06MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191334854,Y,151,09:20:54,10/02/07,WSW,06MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191334860,C,151,09:21:00,10/02/07,NW,05MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191334866,K,151,09:21:06,10/02/07,NW,03MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191334872,O,151,09:21:12,10/02/07,S,03MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191334878,Y,151,09:21:18,10/02/07,ESE,03MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191334884,M,151,09:21:24,10/02/07,E,03MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191334890,L,151,09:21:30,10/02/07,SSE,03MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191334896,S,151,09:21:36,10/02/07,NNW,01MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191334902,Z,151,09:21:42,10/02/07,WNW,03MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191334908,I,151,09:21:48,10/02/07,W,05MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191334914,M,151,09:21:54,10/02/07,WSW,06MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191334920,T,151,09:22:00,10/02/07,WNW,08MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191334926,D,151,09:22:06,10/02/07,W,08MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191334932,H,151,09:22:12,10/02/07,WSW,08MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191334938,U,151,09:22:18,10/02/07,WSW,06MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191334944,X,151,09:22:24,10/02/07,WSW,07MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191334950,Z,151,09:22:30,10/02/07,W,09MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191334956,H,151,09:22:36,10/02/07,W,11MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191334962,I,151,09:22:42,10/02/07,WNW,10MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191334968,K,151,09:22:48,10/02/07,W,13MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191334974,N,151,09:22:54,10/02/07,W,10MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191334980,S,151,09:23:00,10/02/07,W,10MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191334986,G,151,09:23:06,10/02/07,NW,13MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191334992,H,151,09:23:12,10/02/07,W,12MPH,001K,460F,066F,071%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191334998,O,151,09:23:18,10/02/07,WNW,08MPH,001K,460F,066F,071%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191335004,M,151,09:23:24,10/02/07,WNW,08MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335010,U,151,09:23:30,10/02/07,WNW,11MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335016,T,151,09:23:36,10/02/07,WNW,12MPH,001K,460F,066F,071%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191335022,X,151,09:23:42,10/02/07,W,09MPH,001K,460F,066F,071%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191335028,F,151,09:23:48,10/02/07,WSW,14MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335034,Q,151,09:23:54,10/02/07,W,10MPH,001K,460F,066F,071%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191335040,P,151,09:24:00,10/02/07,WNW,16MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335046,D,151,09:24:06,10/02/07,WNW,13MPH,001K,460F,066F,071%,29.83R,00.00\"D,00.01\"M,00.00\"R\n1191335052,E,151,09:24:12,10/02/07,W,09MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335058,P,151,09:24:18,10/02/07,WSW,14MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335064,N,151,09:24:24,10/02/07,WNW,11MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335070,V,151,09:24:30,10/02/07,WNW,08MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335076,Z,151,09:24:36,10/02/07,W,08MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335082,N,151,09:24:42,10/02/07,W,08MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335088,S,151,09:24:48,10/02/07,WNW,08MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335094,W,151,09:24:54,10/02/07,WSW,05MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335100,B,151,09:25:00,10/02/07,W,09MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335106,L,151,09:25:06,10/02/07,NW,07MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335112,P,151,09:25:12,10/02/07,WNW,10MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335118,R,151,09:25:18,10/02/07,WSW,11MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335124,W,151,09:25:24,10/02/07,NW,08MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335130,X,151,09:25:30,10/02/07,SW,07MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335136,O,151,09:25:36,10/02/07,WSW,05MPH,002K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335142,T,151,09:25:42,10/02/07,WSW,07MPH,002K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335148,Y,151,09:25:48,10/02/07,NW,05MPH,002K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335154,A,151,09:25:54,10/02/07,W,06MPH,002K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335160,H,151,09:26:00,10/02/07,WNW,06MPH,002K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335166,J,151,09:26:06,10/02/07,WNW,06MPH,002K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335172,R,151,09:26:12,10/02/07,W,06MPH,002K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335178,N,151,09:26:18,10/02/07,WSW,05MPH,002K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335184,X,151,09:26:24,10/02/07,WNW,04MPH,002K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335190,E,151,09:26:30,10/02/07,WSW,05MPH,002K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335196,S,151,09:26:36,10/02/07,W,06MPH,002K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335202,A,151,09:26:42,10/02/07,W,06MPH,002K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335208,F,151,09:26:48,10/02/07,WNW,06MPH,002K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335214,F,151,09:26:54,10/02/07,WSW,05MPH,002K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335220,N,151,09:27:00,10/02/07,WNW,05MPH,002K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335226,O,151,09:27:06,10/02/07,WSW,07MPH,002K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335232,V,151,09:27:12,10/02/07,W,07MPH,002K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335238,C,151,09:27:18,10/02/07,WSW,05MPH,002K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335244,M,151,09:27:24,10/02/07,W,05MPH,002K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335250,X,151,09:27:30,10/02/07,WSW,04MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335256,F,151,09:27:36,10/02/07,WNW,04MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335262,M,151,09:27:42,10/02/07,W,05MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335268,Q,151,09:27:48,10/02/07,W,05MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335274,U,151,09:27:54,10/02/07,WSW,07MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335280,Z,151,09:28:00,10/02/07,W,04MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335286,A,151,09:28:06,10/02/07,WNW,07MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335292,L,151,09:28:12,10/02/07,W,06MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335298,T,151,09:28:18,10/02/07,W,06MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335304,B,151,09:28:24,10/02/07,WNW,06MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335310,F,151,09:28:30,10/02/07,WNW,06MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335316,M,151,09:28:36,10/02/07,WSW,06MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335322,R,151,09:28:42,10/02/07,WNW,05MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335328,T,151,09:28:48,10/02/07,WNW,08MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335334,Y,151,09:28:54,10/02/07,NW,06MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335340,Z,151,09:29:00,10/02/07,WNW,05MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335346,J,151,09:29:06,10/02/07,WNW,05MPH,000K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335352,O,151,09:29:12,10/02/07,NW,06MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335358,Z,151,09:29:18,10/02/07,W,05MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335364,E,151,09:29:24,10/02/07,WNW,07MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335370,M,151,09:29:30,10/02/07,WNW,09MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335376,U,151,09:29:36,10/02/07,W,10MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335382,Y,151,09:29:42,10/02/07,WNW,08MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335388,W,151,09:29:48,10/02/07,W,05MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335394,Y,151,09:29:54,10/02/07,W,08MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335400,I,151,09:30:00,10/02/07,W,08MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335406,Q,151,09:30:06,10/02/07,WNW,06MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335412,U,151,09:30:12,10/02/07,W,06MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335418,B,151,09:30:18,10/02/07,WNW,06MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335424,G,151,09:30:24,10/02/07,W,06MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335430,L,151,09:30:30,10/02/07,W,09MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335436,Q,151,09:30:36,10/02/07,WSW,08MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335442,S,151,09:30:42,10/02/07,WNW,06MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335448,T,151,09:30:48,10/02/07,WNW,04MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335454,E,151,09:30:54,10/02/07,WSW,05MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335460,P,151,09:31:00,10/02/07,WNW,06MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335466,X,151,09:31:06,10/02/07,WSW,06MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335472,F,151,09:31:12,10/02/07,W,06MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335478,G,151,09:31:18,10/02/07,W,09MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335484,K,151,09:31:24,10/02/07,W,08MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335490,M,151,09:31:30,10/02/07,WSW,06MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335496,W,151,09:31:36,10/02/07,WNW,05MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335502,B,151,09:31:42,10/02/07,WSW,05MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335508,J,151,09:31:48,10/02/07,WNW,06MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335514,X,151,09:31:54,10/02/07,WNW,05MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335520,B,151,09:32:00,10/02/07,WSW,05MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335526,G,151,09:32:06,10/02/07,NW,05MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335532,O,151,09:32:12,10/02/07,NW,04MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335538,K,151,09:32:18,10/02/07,WSW,05MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335544,Y,151,09:32:24,10/02/07,WSW,05MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335550,F,151,09:32:30,10/02/07,WSW,03MPH,000K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335556,K,151,09:32:36,10/02/07,WSW,04MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335562,P,151,09:32:42,10/02/07,WSW,05MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335568,Y,151,09:32:48,10/02/07,W,05MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335574,G,151,09:32:54,10/02/07,W,05MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335580,I,151,09:33:00,10/02/07,WSW,05MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335586,M,151,09:33:06,10/02/07,WSW,05MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335592,G,151,09:33:12,10/02/07,W,05MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335598,L,151,09:33:18,10/02/07,WSW,05MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335604,N,151,09:33:24,10/02/07,SW,04MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335610,A,151,09:33:30,10/02/07,SW,03MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335616,F,151,09:33:36,10/02/07,WSW,04MPH,001K,460F,066F,071%,29.82R,00.00\"D,00.01\"M,00.00\"R\n1191335622,P,151,09:33:42,10/02/07,WSW,03MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335628,F,151,09:33:48,10/02/07,SW,03MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335634,Q,151,09:33:54,10/02/07,WSW,02MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335640,R,151,09:34:00,10/02/07,W,01MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335646,C,151,09:34:06,10/02/07,WSW,02MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335652,A,151,09:34:12,10/02/07,SW,03MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335658,I,151,09:34:18,10/02/07,SW,03MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335664,T,151,09:34:24,10/02/07,WSW,03MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335670,H,151,09:34:30,10/02/07,W,03MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335676,M,151,09:34:36,10/02/07,W,03MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335682,X,151,09:34:42,10/02/07,WSW,03MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335688,Y,151,09:34:48,10/02/07,W,03MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335694,G,151,09:34:54,10/02/07,WNW,03MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335700,I,151,09:35:00,10/02/07,W,03MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335706,P,151,09:35:06,10/02/07,SW,04MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335712,Q,151,09:35:12,10/02/07,WSW,05MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335718,E,151,09:35:18,10/02/07,W,03MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335724,F,151,09:35:24,10/02/07,NW,04MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335730,T,151,09:35:30,10/02/07,NW,05MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335736,B,151,09:35:36,10/02/07,W,06MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335742,M,151,09:35:42,10/02/07,WNW,06MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335748,L,151,09:35:48,10/02/07,WSW,04MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335754,S,151,09:35:54,10/02/07,WNW,06MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335760,U,151,09:36:00,10/02/07,WNW,07MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335766,F,151,09:36:06,10/02/07,NW,05MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335772,K,151,09:36:12,10/02/07,WNW,08MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335778,V,151,09:36:18,10/02/07,WNW,07MPH,001K,460F,066F,071%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191335784,A,151,09:36:24,10/02/07,W,06MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335790,K,151,09:36:30,10/02/07,WNW,06MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335796,M,151,09:36:36,10/02/07,W,07MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335802,T,151,09:36:42,10/02/07,W,08MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335808,R,151,09:36:48,10/02/07,WNW,06MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335814,W,151,09:36:54,10/02/07,W,06MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335820,X,151,09:37:00,10/02/07,WNW,06MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335826,L,151,09:37:06,10/02/07,WNW,06MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335832,O,151,09:37:12,10/02/07,WNW,05MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335838,Z,151,09:37:18,10/02/07,WNW,05MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335844,Y,151,09:37:24,10/02/07,W,05MPH,001K,460F,066F,071%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191335850,I,151,09:37:30,10/02/07,WSW,05MPH,002K,460F,066F,071%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335856,K,151,09:37:36,10/02/07,W,04MPH,002K,460F,066F,071%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335862,S,151,09:37:42,10/02/07,WNW,04MPH,002K,460F,066F,071%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335868,I,151,09:37:48,10/02/07,NNW,03MPH,002K,460F,066F,071%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335874,V,151,09:37:54,10/02/07,SW,04MPH,002K,460F,066F,071%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335880,D,151,09:38:00,10/02/07,WSW,05MPH,002K,460F,066F,071%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335886,H,151,09:38:06,10/02/07,W,05MPH,002K,460F,066F,071%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335892,L,151,09:38:12,10/02/07,W,05MPH,002K,460F,066F,071%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335898,Q,151,09:38:18,10/02/07,WNW,06MPH,001K,460F,066F,071%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335904,P,151,09:38:24,10/02/07,NW,05MPH,001K,460F,066F,071%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335910,Z,151,09:38:30,10/02/07,WSW,04MPH,001K,460F,066F,071%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335916,A,151,09:38:36,10/02/07,WNW,06MPH,001K,460F,066F,071%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335922,F,151,09:38:42,10/02/07,WNW,08MPH,001K,460F,066F,071%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335928,N,151,09:38:48,10/02/07,WSW,07MPH,001K,460F,066F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335934,U,151,09:38:54,10/02/07,WSW,10MPH,001K,460F,066F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335940,W,151,09:39:00,10/02/07,NW,06MPH,001K,460F,066F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335946,Y,151,09:39:06,10/02/07,W,06MPH,001K,460F,066F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335952,I,151,09:39:12,10/02/07,W,06MPH,001K,460F,066F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335958,J,151,09:39:18,10/02/07,W,10MPH,001K,460F,066F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335964,G,151,09:39:24,10/02/07,W,11MPH,001K,460F,066F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335970,I,151,09:39:30,10/02/07,W,11MPH,001K,460F,066F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335976,K,151,09:39:36,10/02/07,WNW,07MPH,001K,460F,066F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335982,S,151,09:39:42,10/02/07,NW,06MPH,001K,460F,066F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191335988,O,151,09:39:48,10/02/07,W,10MPH,001K,460F,066F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191335994,S,151,09:39:54,10/02/07,NW,05MPH,001K,460F,066F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336000,U,151,09:40:00,10/02/07,WNW,08MPH,001K,460F,066F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336006,Y,151,09:40:06,10/02/07,WNW,05MPH,001K,460F,066F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336012,E,151,09:40:12,10/02/07,NW,06MPH,001K,460F,066F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336018,G,151,09:40:18,10/02/07,WNW,08MPH,001K,460F,066F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336024,F,151,09:40:24,10/02/07,WNW,04MPH,001K,460F,066F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336030,L,151,09:40:30,10/02/07,WNW,07MPH,001K,460F,066F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336036,M,151,09:40:36,10/02/07,NW,05MPH,001K,460F,066F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336042,R,151,09:40:42,10/02/07,WNW,05MPH,001K,460F,066F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336048,T,151,09:40:48,10/02/07,SW,05MPH,001K,460F,066F,072%,29.78F,00.00\"D,00.01\"M,00.00\"R\n1191336054,A,151,09:40:54,10/02/07,SW,05MPH,001K,460F,066F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336060,W,151,09:41:00,10/02/07,SSW,04MPH,001K,460F,066F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336066,B,151,09:41:06,10/02/07,SSW,03MPH,001K,460F,066F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336072,C,151,09:41:12,10/02/07,WSW,03MPH,001K,460F,066F,072%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336078,H,151,09:41:18,10/02/07,WSW,04MPH,001K,460F,066F,073%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336084,D,151,09:41:24,10/02/07,SSW,04MPH,001K,460F,066F,073%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336090,M,151,09:41:30,10/02/07,S,03MPH,001K,460F,066F,073%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336096,L,151,09:41:36,10/02/07,SSE,06MPH,001K,460F,066F,073%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336102,P,151,09:41:42,10/02/07,SE,08MPH,001K,460F,066F,073%,29.79F,00.00\"D,00.01\"M,00.00\"R\n1191336108,E,151,09:41:48,10/02/07,S,06MPH,001K,460F,066F,073%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336114,K,151,09:41:54,10/02/07,SSE,05MPH,001K,460F,066F,073%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336120,J,151,09:42:00,10/02/07,SE,07MPH,001K,460F,066F,073%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336126,R,151,09:42:06,10/02/07,S,06MPH,001K,460F,066F,073%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336132,F,151,09:42:12,10/02/07,SSE,05MPH,001K,460F,066F,073%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336138,Q,151,09:42:18,10/02/07,SSW,06MPH,001K,460F,066F,073%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336144,U,151,09:42:24,10/02/07,SSE,06MPH,001K,460F,066F,073%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336150,D,151,09:42:30,10/02/07,SSE,06MPH,001K,460F,066F,073%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336156,A,151,09:42:36,10/02/07,SSE,06MPH,001K,460F,066F,073%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336162,F,151,09:42:42,10/02/07,SSE,05MPH,001K,460F,066F,073%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336168,E,151,09:42:48,10/02/07,SSE,05MPH,001K,460F,066F,073%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336180,J,151,09:43:00,10/02/07,SSE,06MPH,001K,460F,066F,073%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191336186,I,151,09:43:06,10/02/07,SSE,06MPH,001K,460F,066F,073%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191336192,J,151,09:43:12,10/02/07,SE,07MPH,001K,460F,066F,073%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191336198,R,151,09:43:18,10/02/07,SSE,06MPH,001K,460F,066F,073%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191336204,W,151,09:43:24,10/02/07,SSE,06MPH,001K,460F,066F,073%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191336210,W,151,09:43:30,10/02/07,SSE,05MPH,001K,460F,066F,074%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191336216,E,151,09:43:36,10/02/07,S,04MPH,001K,460F,066F,074%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191336222,G,151,09:43:42,10/02/07,S,03MPH,001K,460F,066F,074%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191336228,I,151,09:43:48,10/02/07,SSE,03MPH,001K,460F,066F,074%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191336234,N,151,09:43:54,10/02/07,SE,03MPH,001K,460F,066F,074%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191336240,O,151,09:44:00,10/02/07,S,05MPH,001K,460F,066F,074%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191336246,P,151,09:44:06,10/02/07,S,05MPH,001K,460F,065F,074%,29.81R,00.00\"D,00.01\"M,00.00\"R\n1191336252,H,151,09:44:12,10/02/07,SSE,03MPH,001K,460F,065F,074%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336258,L,151,09:44:18,10/02/07,ESE,03MPH,001K,460F,065F,074%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336264,Z,151,09:44:24,10/02/07,ESE,03MPH,001K,460F,065F,074%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336270,T,151,09:44:30,10/02/07,ESE,03MPH,001K,460F,065F,074%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336276,Y,151,09:44:36,10/02/07,ESE,04MPH,001K,460F,065F,074%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336282,X,151,09:44:42,10/02/07,ESE,03MPH,001K,460F,065F,074%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336288,Y,151,09:44:48,10/02/07,ESE,03MPH,001K,460F,065F,074%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336294,T,151,09:44:54,10/02/07,ESE,03MPH,001K,460F,065F,074%,29.80S,00.00\"D,00.01\"M,00.00\"R\n1191336300,E,151,09:45:00,10/02/07,E,03MPH,002K,459F,065F,074%,29.80S,00.01\"D,00.02\"M,00.00\"R\n1191336306,I,151,09:45:06,10/02/07,ESE,03MPH,001K,460F,065F,074%,29.80S,00.01\"D,00.02\"M,00.00\"R\n1191336312,P,151,09:45:12,10/02/07,ENE,02MPH,002K,459F,065F,074%,29.79F,00.01\"D,00.02\"M,00.00\"R\n1191336318,Q,151,09:45:18,10/02/07,ENE,03MPH,002K,459F,065F,074%,29.80S,00.01\"D,00.02\"M,00.00\"R\n1191336324,W,151,09:45:24,10/02/07,ENE,03MPH,002K,459F,065F,075%,29.80S,00.01\"D,00.02\"M,00.00\"R\n1191336330,V,151,09:45:30,10/02/07,E,03MPH,002K,459F,065F,075%,29.79F,00.01\"D,00.02\"M,00.00\"R\n1191336336,N,151,09:45:36,10/02/07,ESE,04MPH,002K,459F,065F,075%,29.80S,00.01\"D,00.02\"M,00.00\"R\n1191336342,L,151,09:45:42,10/02/07,ESE,03MPH,002K,459F,065F,075%,29.80S,00.01\"D,00.02\"M,00.00\"R\n1191336348,Q,151,09:45:48,10/02/07,ESE,03MPH,002K,459F,065F,075%,29.80S,00.01\"D,00.02\"M,00.00\"R\n1191336354,L,151,09:45:54,10/02/07,SE,03MPH,001K,459F,065F,075%,29.80S,00.01\"D,00.02\"M,00.00\"R\n1191336360,B,151,09:46:00,10/02/07,SE,04MPH,001K,459F,065F,075%,29.80S,00.02\"D,00.03\"M,00.00\"R\n1191336366,D,151,09:46:06,10/02/07,ESE,03MPH,001K,459F,065F,075%,29.80S,00.02\"D,00.03\"M,00.00\"R\n1191336372,O,151,09:46:12,10/02/07,ESE,04MPH,001K,459F,065F,075%,29.80S,00.02\"D,00.03\"M,00.00\"R\n1191336378,Q,151,09:46:18,10/02/07,ESE,04MPH,001K,460F,065F,075%,29.80S,00.03\"D,00.04\"M,00.00\"R\n1191336384,U,151,09:46:24,10/02/07,ESE,05MPH,001K,460F,065F,075%,29.80S,00.03\"D,00.04\"M,00.00\"R\n1191336390,Q,151,09:46:30,10/02/07,E,05MPH,001K,460F,065F,075%,29.80S,00.03\"D,00.04\"M,00.00\"R\n1191336396,W,151,09:46:36,10/02/07,ESE,06MPH,001K,460F,065F,076%,29.80S,00.04\"D,00.05\"M,00.00\"R\n1191336402,V,151,09:46:42,10/02/07,ESE,05MPH,001K,460F,065F,076%,29.80S,00.04\"D,00.05\"M,00.00\"R\n1191336408,D,151,09:46:48,10/02/07,ESE,05MPH,001K,460F,065F,076%,29.80S,00.04\"D,00.05\"M,00.00\"R\n1191336414,F,151,09:46:54,10/02/07,ESE,05MPH,001K,460F,065F,076%,29.80S,00.05\"D,00.06\"M,00.00\"R\n1191336420,O,151,09:47:00,10/02/07,SE,05MPH,001K,460F,065F,076%,29.80S,00.05\"D,00.06\"M,00.00\"R\n1191336426,K,151,09:47:06,10/02/07,SE,05MPH,001K,460F,065F,076%,29.80S,00.05\"D,00.06\"M,00.00\"R\n1191336432,S,151,09:47:12,10/02/07,SE,06MPH,001K,460F,065F,076%,29.80S,00.06\"D,00.07\"M,00.00\"R\n1191336438,H,151,09:47:18,10/02/07,S,05MPH,001K,460F,065F,076%,29.80S,00.06\"D,00.07\"M,00.00\"R\n1191336444,P,151,09:47:24,10/02/07,S,04MPH,001K,460F,065F,076%,29.80S,00.06\"D,00.07\"M,00.00\"R\n1191336450,I,151,09:47:30,10/02/07,S,03MPH,001K,460F,065F,076%,29.80S,00.07\"D,00.08\"M,00.00\"R\n1191336456,Q,151,09:47:36,10/02/07,ESE,03MPH,001K,460F,065F,076%,29.80S,00.07\"D,00.08\"M,00.00\"R\n1191336462,Q,151,09:47:42,10/02/07,ESE,03MPH,001K,460F,065F,077%,29.79F,00.07\"D,00.08\"M,00.00\"R\n1191336468,V,151,09:47:48,10/02/07,SE,03MPH,001K,460F,065F,077%,29.79F,00.07\"D,00.08\"M,00.00\"R\n1191336474,U,151,09:47:54,10/02/07,SE,03MPH,001K,460F,065F,077%,29.79F,00.07\"D,00.08\"M,00.00\"R\n1191336480,K,151,09:48:00,10/02/07,SSE,03MPH,001K,460F,065F,077%,29.79F,00.07\"D,00.08\"M,00.00\"R\n1191336486,M,151,09:48:06,10/02/07,W,01MPH,001K,460F,065F,077%,29.79F,00.07\"D,00.08\"M,00.00\"R\n1191336492,U,151,09:48:12,10/02/07,SW,01MPH,001K,460F,065F,077%,29.79F,00.07\"D,00.08\"M,00.00\"R\n1191336498,Q,151,09:48:18,10/02/07,WNW,02MPH,001K,460F,065F,077%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336504,B,151,09:48:24,10/02/07,WSW,02MPH,001K,460F,065F,077%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336510,A,151,09:48:30,10/02/07,WSW,02MPH,001K,460F,065F,077%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336516,R,151,09:48:36,10/02/07,NW,02MPH,001K,460F,065F,077%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336522,S,151,09:48:42,10/02/07,WNW,03MPH,001K,460F,065F,077%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336528,M,151,09:48:48,10/02/07,WNW,03MPH,001K,460F,065F,077%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336534,L,151,09:48:54,10/02/07,WNW,02MPH,001K,460F,065F,077%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336540,T,151,09:49:00,10/02/07,WNW,02MPH,001K,460F,065F,077%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336546,Y,151,09:49:06,10/02/07,WNW,03MPH,001K,460F,065F,077%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336552,I,151,09:49:12,10/02/07,WNW,03MPH,001K,460F,065F,077%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336558,E,151,09:49:18,10/02/07,NW,03MPH,001K,460F,065F,077%,29.78F,00.08\"D,00.09\"M,00.00\"R\n1191336564,L,151,09:49:24,10/02/07,NNW,03MPH,001K,460F,065F,077%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336570,X,151,09:49:30,10/02/07,N,02MPH,001K,460F,065F,078%,29.78F,00.08\"D,00.09\"M,00.00\"R\n1191336576,L,151,09:49:36,10/02/07,NNW,03MPH,001K,460F,065F,078%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336582,T,151,09:49:42,10/02/07,NW,03MPH,001K,460F,065F,078%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336588,E,151,09:49:48,10/02/07,NW,03MPH,001K,460F,065F,078%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336594,Z,151,09:49:54,10/02/07,NW,03MPH,001K,460F,065F,078%,29.78F,00.08\"D,00.09\"M,00.00\"R\n1191336600,Q,151,09:50:00,10/02/07,NW,03MPH,001K,460F,065F,078%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336606,R,151,09:50:06,10/02/07,NW,03MPH,001K,460F,064F,078%,29.78F,00.08\"D,00.09\"M,00.00\"R\n1191336612,E,151,09:50:12,10/02/07,NW,04MPH,001K,460F,064F,078%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336618,L,151,09:50:18,10/02/07,NW,03MPH,001K,460F,064F,078%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336624,Y,151,09:50:24,10/02/07,NW,03MPH,001K,460F,064F,078%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336630,G,151,09:50:30,10/02/07,NW,03MPH,001K,460F,064F,078%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336636,X,151,09:50:36,10/02/07,NW,03MPH,001K,460F,064F,078%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336642,V,151,09:50:42,10/02/07,NW,03MPH,001K,460F,064F,078%,29.79F,00.08\"D,00.09\"M,00.00\"R\n1191336648,I,151,09:50:48,10/02/07,N,03MPH,001K,460F,064F,078%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336654,H,151,09:50:54,10/02/07,N,03MPH,001K,460F,064F,078%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336660,U,151,09:51:00,10/02/07,W,02MPH,001K,460F,064F,078%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336666,W,151,09:51:06,10/02/07,NNW,02MPH,001K,460F,064F,078%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336672,O,151,09:51:12,10/02/07,NW,03MPH,001K,460F,064F,078%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336678,Z,151,09:51:18,10/02/07,NW,03MPH,001K,460F,064F,078%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336684,M,151,09:51:24,10/02/07,NW,03MPH,001K,460F,064F,078%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336690,U,151,09:51:30,10/02/07,NW,03MPH,001K,460F,064F,079%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336696,K,151,09:51:36,10/02/07,NW,03MPH,002K,460F,064F,079%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336702,L,151,09:51:42,10/02/07,NW,03MPH,002K,460F,064F,079%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336708,Z,151,09:51:48,10/02/07,NW,02MPH,002K,460F,064F,079%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336714,D,151,09:51:54,10/02/07,NW,03MPH,002K,460F,064F,079%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336720,Q,151,09:52:00,10/02/07,NW,03MPH,002K,460F,064F,079%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336726,Y,151,09:52:06,10/02/07,W,03MPH,002K,460F,064F,079%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336732,M,151,09:52:12,10/02/07,WSW,03MPH,002K,460F,064F,079%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336738,X,151,09:52:18,10/02/07,SW,03MPH,001K,460F,064F,079%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336744,F,151,09:52:24,10/02/07,SW,03MPH,001K,460F,064F,079%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336750,O,151,09:52:30,10/02/07,WSW,02MPH,001K,460F,064F,079%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336756,Y,151,09:52:36,10/02/07,W,02MPH,001K,460F,064F,079%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336762,G,151,09:52:42,10/02/07,WNW,02MPH,001K,460F,064F,079%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336768,L,151,09:52:48,10/02/07,WNW,02MPH,001K,460F,064F,079%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336774,Q,151,09:52:54,10/02/07,WNW,02MPH,001K,460F,064F,079%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336780,J,151,09:53:00,10/02/07,W,01MPH,001K,460F,064F,079%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336786,R,151,09:53:06,10/02/07,WNW,01MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336792,Y,151,09:53:12,10/02/07,W,01MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336798,J,151,09:53:18,10/02/07,WNW,02MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336804,O,151,09:53:24,10/02/07,WNW,02MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336810,U,151,09:53:30,10/02/07,W,03MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336816,L,151,09:53:36,10/02/07,W,03MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336822,Q,151,09:53:42,10/02/07,W,03MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336828,K,151,09:53:48,10/02/07,SW,02MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336834,P,151,09:53:54,10/02/07,SW,03MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336840,F,151,09:54:00,10/02/07,WSW,03MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336846,S,151,09:54:06,10/02/07,SW,02MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336852,A,151,09:54:12,10/02/07,WSW,02MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336858,I,151,09:54:18,10/02/07,WSW,03MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336864,T,151,09:54:24,10/02/07,SW,02MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336870,Q,151,09:54:30,10/02/07,SW,02MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336876,B,151,09:54:36,10/02/07,SSW,02MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336882,G,151,09:54:42,10/02/07,SSW,02MPH,001K,460F,064F,080%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336888,N,151,09:54:48,10/02/07,SSW,01MPH,001K,460F,064F,081%,29.80S,00.09\"D,00.10\"M,00.00\"R\n1191336894,R,151,09:54:54,10/02/07,SSW,01MPH,001K,460F,064F,081%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336900,C,151,09:55:00,10/02/07,S,01MPH,002K,460F,064F,081%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336906,V,151,09:55:06,10/02/07,SW,01MPH,002K,460F,064F,081%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336912,X,151,09:55:12,10/02/07,NW,01MPH,002K,460F,064F,081%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336918,K,151,09:55:18,10/02/07,NNW,01MPH,002K,460F,064F,081%,29.79F,00.09\"D,00.10\"M,00.00\"R\n1191336924,P,151,09:55:24,10/02/07,N,02MPH,002K,460F,064F,081%,29.78F,00.09\"D,00.10\"M,00.00\"R\n1191336930,P,151,09:55:30,10/02/07,NE,01MPH,002K,460F,064F,081%,29.78F,00.09\"D,00.10\"M,00.00\"R\n1191336936,W,151,09:55:36,10/02/07,NNE,03MPH,002K,460F,064F,081%,29.78F,00.09\"D,00.10\"M,00.00\"R\n1191336942,N,151,09:55:42,10/02/07,NNE,03MPH,002K,460F,064F,081%,29.78F,00.09\"D,00.10\"M,00.00\"R\n1191336948,Y,151,09:55:48,10/02/07,NNE,02MPH,002K,460F,064F,081%,29.78F,00.09\"D,00.10\"M,00.00\"R\n1191336954,I,151,09:55:54,10/02/07,NNE,02MPH,002K,460F,064F,081%,29.78F,00.09\"D,00.10\"M,00.00\"R\n1191336960,N,151,09:56:00,10/02/07,NNE,02MPH,002K,460F,064F,081%,29.78F,00.10\"D,00.11\"M,00.00\"R\n1191336966,U,151,09:56:06,10/02/07,NE,01MPH,002K,460F,064F,081%,29.78F,00.10\"D,00.11\"M,00.00\"R\n1191336972,C,151,09:56:12,10/02/07,NNE,01MPH,002K,460F,064F,081%,29.78F,00.10\"D,00.11\"M,00.00\"R\n1191336978,N,151,09:56:18,10/02/07,NE,02MPH,002K,460F,064F,082%,29.78F,00.10\"D,00.11\"M,00.00\"R\n1191336984,B,151,09:56:24,10/02/07,ENE,01MPH,002K,460F,064F,082%,29.78F,00.10\"D,00.11\"M,00.00\"R\n1191336990,L,151,09:56:30,10/02/07,ENE,01MPH,002K,460F,064F,082%,29.78F,00.11\"D,00.12\"M,00.00\"R\n1191336996,Z,151,09:56:36,10/02/07,ESE,01MPH,002K,460F,064F,082%,29.79F,00.11\"D,00.12\"M,00.00\"R\n1191337002,D,151,09:56:42,10/02/07,ENE,01MPH,002K,460F,064F,082%,29.79F,00.11\"D,00.12\"M,00.00\"R\n1191337008,X,151,09:56:48,10/02/07,E,01MPH,002K,460F,064F,082%,29.79F,00.11\"D,00.12\"M,00.00\"R\n1191337014,Z,151,09:56:54,10/02/07,SE,01MPH,001K,460F,064F,082%,29.79F,00.11\"D,00.12\"M,00.00\"R\n1191337020,L,151,09:57:00,10/02/07,SE,01MPH,001K,460F,064F,082%,29.79F,00.11\"D,00.12\"M,00.00\"R\n1191337026,Q,151,09:57:06,10/02/07,SE,01MPH,001K,460F,064F,082%,29.79F,00.11\"D,00.12\"M,00.00\"R\n1191337032,B,151,09:57:12,10/02/07,SE,01MPH,001K,460F,064F,082%,29.79F,00.11\"D,00.12\"M,00.00\"R\n1191337038,I,151,09:57:18,10/02/07,S,02MPH,001K,460F,064F,082%,29.80S,00.11\"D,00.12\"M,00.00\"R\n1191337044,B,151,09:57:24,10/02/07,SSE,02MPH,001K,460F,064F,082%,29.80S,00.12\"D,00.13\"M,00.00\"R\n1191337050,E,151,09:57:30,10/02/07,SSE,03MPH,001K,460F,064F,082%,29.80S,00.12\"D,00.13\"M,00.00\"R\n1191337056,V,151,09:57:36,10/02/07,SSE,03MPH,001K,460F,064F,082%,29.80S,00.12\"D,00.13\"M,00.00\"R\n1191337062,W,151,09:57:42,10/02/07,SE,03MPH,001K,460F,064F,082%,29.80S,00.12\"D,00.13\"M,00.00\"R\n1191337068,I,151,09:57:48,10/02/07,SE,03MPH,001K,460F,064F,082%,29.80S,00.12\"D,00.13\"M,00.00\"R\n1191337074,O,151,09:57:54,10/02/07,SSE,03MPH,001K,460F,064F,082%,29.80S,00.12\"D,00.13\"M,00.00\"R\n1191337080,Z,151,09:58:00,10/02/07,S,03MPH,001K,460F,064F,082%,29.80S,00.12\"D,00.13\"M,00.00\"R\n1191337086,E,151,09:58:06,10/02/07,SSE,03MPH,001K,460F,064F,082%,29.80S,00.12\"D,00.13\"M,00.00\"R\n1191337092,R,151,09:58:12,10/02/07,SE,03MPH,001K,460F,064F,083%,29.80S,00.12\"D,00.13\"M,00.00\"R\n1191337098,Z,151,09:58:18,10/02/07,ESE,03MPH,001K,460F,064F,083%,29.80S,00.12\"D,00.13\"M,00.00\"R\n1191337104,N,151,09:58:24,10/02/07,S,03MPH,001K,460F,064F,083%,29.80S,00.12\"D,00.13\"M,00.00\"R\n1191337110,U,151,09:58:30,10/02/07,SSE,03MPH,001K,460F,064F,083%,29.81R,00.12\"D,00.13\"M,00.00\"R\n1191337116,I,151,09:58:36,10/02/07,SE,03MPH,001K,460F,064F,083%,29.80S,00.12\"D,00.13\"M,00.00\"R\n1191337122,H,151,09:58:42,10/02/07,SE,03MPH,001K,460F,064F,083%,29.80S,00.12\"D,00.13\"M,00.00\"R\n1191337128,P,151,09:58:48,10/02/07,SSE,03MPH,001K,460F,064F,083%,29.80S,00.12\"D,00.13\"M,00.00\"R\n1191337134,U,151,09:58:54,10/02/07,SE,03MPH,001K,460F,064F,083%,29.80S,00.13\"D,00.14\"M,00.00\"R\n1191337140,G,151,09:59:00,10/02/07,SE,03MPH,001K,460F,064F,083%,29.81R,00.13\"D,00.14\"M,00.00\"R\n1191337146,O,151,09:59:06,10/02/07,SSE,03MPH,001K,460F,064F,083%,29.80S,00.13\"D,00.14\"M,00.00\"R\n1191337152,C,151,09:59:12,10/02/07,SE,03MPH,001K,460F,064F,083%,29.80S,00.13\"D,00.14\"M,00.00\"R\n1191337158,P,151,09:59:18,10/02/07,SSE,04MPH,001K,460F,064F,083%,29.81R,00.13\"D,00.14\"M,00.00\"R\n1191337164,Z,151,09:59:24,10/02/07,SE,04MPH,001K,460F,063F,083%,29.81R,00.13\"D,00.14\"M,00.00\"R\n1191337170,G,151,09:59:30,10/02/07,SSE,04MPH,001K,460F,063F,083%,29.80S,00.13\"D,00.14\"M,00.00\"R\n1191337176,C,151,09:59:36,10/02/07,SSE,04MPH,001K,460F,063F,083%,29.81R,00.13\"D,00.14\"M,00.00\"R\n1191337182,W,151,09:59:42,10/02/07,SE,04MPH,001K,460F,063F,083%,29.81R,00.13\"D,00.14\"M,00.00\"R\n1191337188,U,151,09:59:48,10/02/07,SE,04MPH,001K,460F,063F,083%,29.81R,00.13\"D,00.14\"M,00.00\"R\n1191337194,C,151,09:59:54,10/02/07,SSE,03MPH,001K,460F,063F,083%,29.81R,00.13\"D,00.14\"M,00.00\"R\n1191337200,S,151,10:00:00,10/02/07,SSE,03MPH,001K,460F,063F,083%,29.81R,00.13\"D,00.14\"M,00.60\"R\n1191337206,Z,151,10:00:06,10/02/07,SE,04MPH,001K,460F,063F,083%,29.81R,00.13\"D,00.14\"M,00.60\"R\n1191337212,J,151,10:00:12,10/02/07,SE,04MPH,001K,460F,063F,083%,29.80S,00.13\"D,00.14\"M,00.60\"R\n1191337218,T,151,10:00:18,10/02/07,SE,04MPH,001K,460F,063F,083%,29.80S,00.13\"D,00.14\"M,00.60\"R\n1191337224,V,151,10:00:24,10/02/07,SSE,03MPH,001K,460F,063F,083%,29.81R,00.13\"D,00.14\"M,00.60\"R\n1191337230,A,151,10:00:30,10/02/07,SE,03MPH,001K,460F,063F,083%,29.80S,00.13\"D,00.14\"M,00.60\"R\n1191337236,E,151,10:00:36,10/02/07,SE,03MPH,001K,460F,063F,083%,29.80S,00.13\"D,00.14\"M,00.60\"R\n1191337242,G,151,10:00:42,10/02/07,SSE,03MPH,001K,460F,063F,083%,29.80S,00.13\"D,00.14\"M,00.60\"R\n1191337248,L,151,10:00:48,10/02/07,SE,03MPH,001K,460F,063F,084%,29.80S,00.13\"D,00.14\"M,00.60\"R\n1191337254,V,151,10:00:54,10/02/07,ESE,03MPH,001K,460F,063F,084%,29.80S,00.13\"D,00.14\"M,00.60\"R\n1191337260,U,151,10:01:00,10/02/07,SE,03MPH,002K,460F,063F,084%,29.80S,00.13\"D,00.14\"M,00.60\"R\n1191337266,D,151,10:01:06,10/02/07,ESE,03MPH,002K,460F,063F,084%,29.80S,00.13\"D,00.14\"M,00.60\"R\n1191337272,T,151,10:01:12,10/02/07,SE,02MPH,002K,460F,063F,084%,29.80S,00.14\"D,00.15\"M,00.60\"R\n1191337278,B,151,10:01:18,10/02/07,ESE,02MPH,002K,460F,063F,084%,29.80S,00.14\"D,00.15\"M,00.60\"R\n1191337284,I,151,10:01:24,10/02/07,ESE,02MPH,002K,460F,063F,084%,29.79F,00.14\"D,00.15\"M,00.60\"R\n1191337290,Q,151,10:01:30,10/02/07,NE,02MPH,002K,460F,063F,084%,29.79F,00.14\"D,00.15\"M,00.60\"R\n1191337296,A,151,10:01:36,10/02/07,ENE,02MPH,002K,460F,063F,084%,29.79F,00.14\"D,00.15\"M,00.60\"R\n1191337302,I,151,10:01:42,10/02/07,NE,02MPH,002K,460F,063F,084%,29.79F,00.14\"D,00.15\"M,00.60\"R\n1191337308,Q,151,10:01:48,10/02/07,NE,02MPH,002K,460F,063F,084%,29.79F,00.15\"D,00.16\"M,00.60\"R\n1191337314,U,151,10:01:54,10/02/07,NE,03MPH,002K,460F,063F,084%,29.79F,00.15\"D,00.16\"M,00.60\"R\n1191337320,B,151,10:02:00,10/02/07,NE,03MPH,002K,460F,063F,084%,29.79F,00.15\"D,00.16\"M,00.60\"R\n1191337326,G,151,10:02:06,10/02/07,NE,03MPH,002K,460F,063F,085%,29.79F,00.15\"D,00.16\"M,00.60\"R\n1191337332,O,151,10:02:12,10/02/07,NE,04MPH,002K,460F,063F,085%,29.79F,00.15\"D,00.16\"M,00.60\"R\n1191337338,Y,151,10:02:18,10/02/07,NE,04MPH,002K,460F,063F,085%,29.79F,00.15\"D,00.16\"M,00.60\"R\n1191337344,D,151,10:02:24,10/02/07,NE,05MPH,002K,460F,063F,085%,29.78F,00.15\"D,00.16\"M,00.60\"R\n1191337350,I,151,10:02:30,10/02/07,NE,04MPH,002K,460F,063F,085%,29.78F,00.15\"D,00.16\"M,00.60\"R\n1191337356,T,151,10:02:36,10/02/07,ENE,04MPH,002K,460F,063F,085%,29.78F,00.15\"D,00.16\"M,00.60\"R\n1191337362,H,151,10:02:42,10/02/07,NE,04MPH,002K,460F,063F,085%,29.78F,00.15\"D,00.16\"M,00.60\"R\n1191337368,Q,151,10:02:48,10/02/07,NE,04MPH,002K,460F,063F,085%,29.78F,00.15\"D,00.16\"M,00.60\"R\n1191337374,E,151,10:02:54,10/02/07,NE,04MPH,002K,460F,063F,086%,29.78F,00.15\"D,00.16\"M,00.60\"R\n1191337380,P,151,10:03:00,10/02/07,NE,04MPH,002K,460F,063F,086%,29.78F,00.15\"D,00.16\"M,00.60\"R\n1191337386,X,151,10:03:06,10/02/07,ENE,04MPH,002K,460F,063F,086%,29.78F,00.15\"D,00.16\"M,00.60\"R\n1191337392,C,151,10:03:12,10/02/07,ENE,05MPH,002K,460F,063F,086%,29.78F,00.15\"D,00.16\"M,00.60\"R\n1191337398,I,151,10:03:18,10/02/07,NE,05MPH,002K,460F,063F,086%,29.78F,00.15\"D,00.16\"M,00.60\"R\n1191337404,T,151,10:03:24,10/02/07,NE,04MPH,002K,460F,063F,086%,29.78F,00.15\"D,00.16\"M,00.60\"R\n1191337410,H,151,10:03:30,10/02/07,NE,05MPH,002K,460F,063F,086%,29.78F,00.15\"D,00.16\"M,00.60\"R\n1191337416,S,151,10:03:36,10/02/07,NE,04MPH,002K,460F,063F,086%,29.78F,00.15\"D,00.16\"M,00.60\"R\n1191337422,G,151,10:03:42,10/02/07,NE,04MPH,002K,460F,063F,086%,29.78F,00.15\"D,00.16\"M,00.60\"R\n1191337428,Q,151,10:03:48,10/02/07,NE,04MPH,002K,460F,063F,086%,29.78F,00.16\"D,00.17\"M,00.60\"R\n1191337434,B,151,10:03:54,10/02/07,NE,04MPH,002K,460F,063F,086%,29.78F,00.16\"D,00.17\"M,00.60\"R\n1191337440,L,151,10:04:00,10/02/07,NE,04MPH,002K,460F,063F,086%,29.78F,00.16\"D,00.17\"M,00.60\"R\n1191337446,T,151,10:04:06,10/02/07,NE,03MPH,002K,460F,063F,086%,29.78F,00.16\"D,00.17\"M,00.60\"R\n1191337452,B,151,10:04:12,10/02/07,NE,05MPH,002K,460F,063F,086%,29.78F,00.16\"D,00.17\"M,00.60\"R\n1191337458,J,151,10:04:18,10/02/07,ENE,04MPH,002K,460F,063F,086%,29.78F,00.16\"D,00.17\"M,00.60\"R\n1191337464,T,151,10:04:24,10/02/07,ENE,03MPH,002K,460F,063F,086%,29.78F,00.16\"D,00.17\"M,00.60\"R\n1191337470,K,151,10:04:30,10/02/07,ENE,03MPH,002K,460F,063F,086%,29.78F,00.16\"D,00.17\"M,00.60\"R\n1191337476,P,151,10:04:36,10/02/07,ENE,04MPH,002K,460F,063F,086%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337482,A,151,10:04:42,10/02/07,ESE,05MPH,002K,460F,063F,086%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337488,N,151,10:04:48,10/02/07,E,04MPH,002K,460F,063F,087%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337494,U,151,10:04:54,10/02/07,ENE,05MPH,002K,460F,063F,087%,29.78F,00.16\"D,00.17\"M,00.60\"R\n1191337500,B,151,10:05:00,10/02/07,ENE,04MPH,002K,460F,063F,087%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337506,I,151,10:05:06,10/02/07,ENE,04MPH,002K,460F,063F,087%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337512,S,151,10:05:12,10/02/07,E,05MPH,002K,460F,063F,087%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337518,F,151,10:05:18,10/02/07,E,05MPH,002K,460F,063F,087%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337524,S,151,10:05:24,10/02/07,E,05MPH,002K,460F,063F,087%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337530,D,151,10:05:30,10/02/07,E,06MPH,002K,460F,063F,087%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337536,R,151,10:05:36,10/02/07,ESE,05MPH,002K,460F,063F,087%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337542,C,151,10:05:42,10/02/07,E,05MPH,002K,460F,063F,087%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337548,M,151,10:05:48,10/02/07,E,06MPH,002K,460F,063F,087%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337554,R,151,10:05:54,10/02/07,E,05MPH,002K,460F,063F,087%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337560,C,151,10:06:00,10/02/07,ESE,06MPH,002K,460F,063F,087%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337566,F,151,10:06:06,10/02/07,ESE,06MPH,002K,460F,063F,087%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337572,Z,151,10:06:12,10/02/07,ESE,06MPH,002K,460F,063F,087%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337578,K,151,10:06:18,10/02/07,ESE,06MPH,002K,460F,063F,087%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337584,S,151,10:06:24,10/02/07,ESE,06MPH,002K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337590,A,151,10:06:30,10/02/07,ESE,05MPH,002K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337596,L,151,10:06:36,10/02/07,ESE,05MPH,002K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337602,Z,151,10:06:42,10/02/07,ESE,06MPH,002K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337608,G,151,10:06:48,10/02/07,ESE,07MPH,002K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337614,O,151,10:06:54,10/02/07,ESE,08MPH,002K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337620,W,151,10:07:00,10/02/07,ESE,06MPH,001K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337626,B,151,10:07:06,10/02/07,E,06MPH,002K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337632,S,151,10:07:12,10/02/07,E,08MPH,002K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337638,F,151,10:07:18,10/02/07,ESE,07MPH,002K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337644,E,151,10:07:24,10/02/07,ESE,08MPH,002K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337650,M,151,10:07:30,10/02/07,ESE,07MPH,002K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337656,R,151,10:07:36,10/02/07,E,06MPH,002K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337662,Z,151,10:07:42,10/02/07,ESE,08MPH,002K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337668,B,151,10:07:48,10/02/07,E,08MPH,002K,460F,063F,089%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337674,U,151,10:07:54,10/02/07,ESE,07MPH,002K,460F,063F,089%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337680,Y,151,10:08:00,10/02/07,ENE,07MPH,002K,460F,063F,089%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337686,M,151,10:08:06,10/02/07,ESE,06MPH,002K,460F,063F,089%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337692,W,151,10:08:12,10/02/07,ESE,05MPH,002K,460F,063F,089%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337698,N,151,10:08:18,10/02/07,E,05MPH,002K,460F,063F,089%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337704,S,151,10:08:24,10/02/07,ENE,06MPH,002K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337710,D,151,10:08:30,10/02/07,ENE,06MPH,002K,460F,063F,089%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337716,C,151,10:08:36,10/02/07,ENE,05MPH,002K,460F,063F,089%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337722,R,151,10:08:42,10/02/07,ESE,05MPH,002K,460F,063F,089%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337728,W,151,10:08:48,10/02/07,ESE,06MPH,002K,460F,063F,089%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337734,N,151,10:08:54,10/02/07,ESE,05MPH,002K,460F,063F,089%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337740,S,151,10:09:00,10/02/07,ESE,04MPH,002K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337746,F,151,10:09:06,10/02/07,ESE,04MPH,002K,460F,063F,088%,29.79F,00.16\"D,00.17\"M,00.60\"R\n1191337752,Q,151,10:09:12,10/02/07,ESE,05MPH,002K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191337758,B,151,10:09:18,10/02/07,SE,06MPH,002K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191337764,I,151,10:09:24,10/02/07,ESE,05MPH,002K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191337770,Q,151,10:09:30,10/02/07,SSE,05MPH,002K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191337776,P,151,10:09:36,10/02/07,ESE,03MPH,002K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191337782,H,151,10:09:42,10/02/07,E,04MPH,002K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191337788,M,151,10:09:48,10/02/07,E,03MPH,002K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191337794,H,151,10:09:54,10/02/07,ENE,03MPH,002K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191337800,P,151,10:10:00,10/02/07,ENE,04MPH,002K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191337806,P,151,10:10:06,10/02/07,E,04MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337812,C,151,10:10:12,10/02/07,ENE,04MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337818,K,151,10:10:18,10/02/07,ESE,04MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337824,M,151,10:10:24,10/02/07,ESE,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337830,C,151,10:10:30,10/02/07,E,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337836,K,151,10:10:36,10/02/07,ESE,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337842,V,151,10:10:42,10/02/07,E,01MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337848,D,151,10:10:48,10/02/07,ESE,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337854,R,151,10:10:54,10/02/07,SSE,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337860,Q,151,10:11:00,10/02/07,ENE,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337866,X,151,10:11:06,10/02/07,ESE,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337872,C,151,10:11:12,10/02/07,ESE,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337878,T,151,10:11:18,10/02/07,SSE,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337884,V,151,10:11:24,10/02/07,SE,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337890,I,151,10:11:30,10/02/07,SSE,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337896,G,151,10:11:36,10/02/07,SE,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337902,U,151,10:11:42,10/02/07,SE,01MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337908,L,151,10:11:48,10/02/07,S,01MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337914,Z,151,10:11:54,10/02/07,SW,01MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337920,H,151,10:12:00,10/02/07,SW,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337926,O,151,10:12:06,10/02/07,SSW,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337932,T,151,10:12:12,10/02/07,SSW,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337938,H,151,10:12:18,10/02/07,WSW,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337944,V,151,10:12:24,10/02/07,WSW,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337950,C,151,10:12:30,10/02/07,S,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337956,M,151,10:12:36,10/02/07,SSE,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337962,D,151,10:12:42,10/02/07,SSW,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337968,K,151,10:12:48,10/02/07,SE,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337974,W,151,10:12:54,10/02/07,SSE,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337980,Y,151,10:13:00,10/02/07,S,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337986,I,151,10:13:06,10/02/07,SW,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337992,Q,151,10:13:12,10/02/07,SW,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191337998,H,151,10:13:18,10/02/07,SW,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338004,R,151,10:13:24,10/02/07,W,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338010,B,151,10:13:30,10/02/07,W,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338016,L,151,10:13:36,10/02/07,W,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338022,T,151,10:13:42,10/02/07,W,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338028,B,151,10:13:48,10/02/07,W,02MPH,002K,460F,063F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338034,L,151,10:13:54,10/02/07,W,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338040,K,151,10:14:00,10/02/07,W,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338046,X,151,10:14:06,10/02/07,WSW,03MPH,002K,460F,063F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338052,E,151,10:14:12,10/02/07,SW,02MPH,002K,460F,063F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338058,V,151,10:14:18,10/02/07,SSW,01MPH,002K,460F,063F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338064,A,151,10:14:24,10/02/07,SSW,01MPH,002K,460F,063F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338070,F,151,10:14:30,10/02/07,SW,01MPH,002K,460F,063F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338076,G,151,10:14:36,10/02/07,SW,01MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338082,R,151,10:14:42,10/02/07,WSW,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338088,V,151,10:14:48,10/02/07,WSW,01MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338094,D,151,10:14:54,10/02/07,WSW,01MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338100,T,151,10:15:00,10/02/07,SW,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338106,E,151,10:15:06,10/02/07,WSW,02MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338112,O,151,10:15:12,10/02/07,SW,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338118,U,151,10:15:18,10/02/07,WSW,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338124,C,151,10:15:24,10/02/07,SW,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338130,K,151,10:15:30,10/02/07,SW,03MPH,002K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338136,R,151,10:15:36,10/02/07,SW,03MPH,002K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338142,T,151,10:15:42,10/02/07,SSW,04MPH,001K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338148,G,151,10:15:48,10/02/07,SSW,04MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338154,R,151,10:15:54,10/02/07,WSW,04MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338160,C,151,10:16:00,10/02/07,WSW,05MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338166,N,151,10:16:06,10/02/07,SW,05MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338172,V,151,10:16:12,10/02/07,SW,04MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338178,C,151,10:16:18,10/02/07,SW,04MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338184,N,151,10:16:24,10/02/07,SW,04MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338190,V,151,10:16:30,10/02/07,SW,03MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338196,R,151,10:16:36,10/02/07,WSW,03MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338202,F,151,10:16:42,10/02/07,WSW,04MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338208,L,151,10:16:48,10/02/07,WSW,05MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338214,Z,151,10:16:54,10/02/07,SW,05MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338220,K,151,10:17:00,10/02/07,SW,04MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338226,Y,151,10:17:06,10/02/07,WSW,03MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338232,Z,151,10:17:12,10/02/07,SW,04MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338238,F,151,10:17:18,10/02/07,SW,05MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338244,Q,151,10:17:24,10/02/07,SW,03MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338250,Y,151,10:17:30,10/02/07,SW,03MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338256,J,151,10:17:36,10/02/07,SW,03MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338262,O,151,10:17:42,10/02/07,WSW,03MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338268,E,151,10:17:48,10/02/07,SW,04MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338274,S,151,10:17:54,10/02/07,SW,05MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338280,D,151,10:18:00,10/02/07,SW,03MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338286,H,151,10:18:06,10/02/07,W,03MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338292,L,151,10:18:12,10/02/07,WSW,05MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338298,K,151,10:18:18,10/02/07,WSW,05MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338304,Y,151,10:18:24,10/02/07,WSW,04MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338310,J,151,10:18:30,10/02/07,WSW,04MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338316,U,151,10:18:36,10/02/07,SW,05MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338322,E,151,10:18:42,10/02/07,WSW,05MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338328,P,151,10:18:48,10/02/07,WSW,05MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338334,D,151,10:18:54,10/02/07,WSW,04MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338340,N,151,10:19:00,10/02/07,SW,05MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338346,P,151,10:19:06,10/02/07,SW,05MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338352,T,151,10:19:12,10/02/07,WSW,05MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338358,T,151,10:19:18,10/02/07,SSW,05MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338364,J,151,10:19:24,10/02/07,SW,05MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338370,O,151,10:19:30,10/02/07,SW,05MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338376,S,151,10:19:36,10/02/07,SW,05MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338382,A,151,10:19:42,10/02/07,SW,04MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338388,J,151,10:19:48,10/02/07,SSW,05MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338394,R,151,10:19:54,10/02/07,WSW,04MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338400,W,151,10:20:00,10/02/07,S,04MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338406,A,151,10:20:06,10/02/07,S,04MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338412,E,151,10:20:12,10/02/07,SSE,03MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338418,J,151,10:20:18,10/02/07,SSW,03MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338424,U,151,10:20:24,10/02/07,SSW,05MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338430,Y,151,10:20:30,10/02/07,SSW,04MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338436,M,151,10:20:36,10/02/07,SSE,03MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338442,L,151,10:20:42,10/02/07,SW,03MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338448,Q,151,10:20:48,10/02/07,S,04MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338454,V,151,10:20:54,10/02/07,SE,05MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338460,C,151,10:21:00,10/02/07,S,05MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338466,B,151,10:21:06,10/02/07,SSW,03MPH,001K,460F,063F,088%,29.80S,00.17\"D,00.18\"M,00.60\"R\n1191338472,L,151,10:21:12,10/02/07,SSE,03MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338478,Q,151,10:21:18,10/02/07,SSW,02MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338484,A,151,10:21:24,10/02/07,S,02MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338490,C,151,10:21:30,10/02/07,SW,02MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338496,K,151,10:21:36,10/02/07,SSW,02MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338502,I,151,10:21:42,10/02/07,NNE,01MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338508,P,151,10:21:48,10/02/07,S,01MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338514,O,151,10:21:54,10/02/07,E,01MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338520,X,151,10:22:00,10/02/07,S,01MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338526,Y,151,10:22:06,10/02/07,SSW,01MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338532,I,151,10:22:12,10/02/07,ESE,02MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338538,N,151,10:22:18,10/02/07,SSW,02MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338544,O,151,10:22:24,10/02/07,ESE,01MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338550,Q,151,10:22:30,10/02/07,S,01MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338556,B,151,10:22:36,10/02/07,SSE,01MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338562,X,151,10:22:42,10/02/07,SE,01MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338568,C,151,10:22:48,10/02/07,ESE,01MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338574,P,151,10:22:54,10/02/07,NE,03MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338580,D,151,10:23:00,10/02/07,E,03MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338586,I,151,10:23:06,10/02/07,NE,04MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338592,S,151,10:23:12,10/02/07,S,02MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338598,U,151,10:23:18,10/02/07,S,02MPH,001K,460F,063F,088%,29.79F,00.17\"D,00.18\"M,00.60\"R\n1191338604,Z,151,10:23:24,10/02/07,ESE,01MPH,001K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338610,N,151,10:23:30,10/02/07,ESE,03MPH,001K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338616,R,151,10:23:36,10/02/07,ENE,03MPH,001K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338622,T,151,10:23:42,10/02/07,SE,03MPH,001K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338628,J,151,10:23:48,10/02/07,SSW,03MPH,001K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338634,N,151,10:23:54,10/02/07,SE,01MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338640,P,151,10:24:00,10/02/07,ENE,02MPH,001K,460F,063F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338646,W,151,10:24:06,10/02/07,SE,03MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338652,A,151,10:24:12,10/02/07,ENE,03MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338658,H,151,10:24:18,10/02/07,E,03MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338664,L,151,10:24:24,10/02/07,SSE,02MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338670,P,151,10:24:30,10/02/07,SE,02MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338676,T,151,10:24:36,10/02/07,ENE,03MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338682,X,151,10:24:42,10/02/07,E,04MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338688,G,151,10:24:48,10/02/07,E,03MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338694,Q,151,10:24:54,10/02/07,ESE,03MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338700,A,151,10:25:00,10/02/07,ESE,04MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338706,B,151,10:25:06,10/02/07,ESE,03MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338712,F,151,10:25:12,10/02/07,E,03MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338718,K,151,10:25:18,10/02/07,ESE,05MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338724,L,151,10:25:24,10/02/07,ENE,03MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338730,Q,151,10:25:30,10/02/07,ESE,05MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338736,A,151,10:25:36,10/02/07,E,05MPH,001K,460F,064F,088%,29.78F,00.17\"D,00.18\"M,00.60\"R\n1191338742,O,151,10:25:42,10/02/07,ESE,03MPH,001K,460F,064F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338748,Z,151,10:25:48,10/02/07,ENE,04MPH,001K,460F,064F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338754,G,151,10:25:54,10/02/07,NE,03MPH,001K,460F,064F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338760,I,151,10:26:00,10/02/07,ESE,03MPH,001K,460F,064F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338766,T,151,10:26:06,10/02/07,E,04MPH,001K,460F,064F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338772,U,151,10:26:12,10/02/07,ENE,05MPH,001K,460F,064F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338778,D,151,10:26:18,10/02/07,ENE,05MPH,001K,460F,064F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338784,N,151,10:26:24,10/02/07,ENE,05MPH,001K,460F,064F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338790,S,151,10:26:30,10/02/07,ENE,05MPH,001K,460F,064F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338796,A,151,10:26:36,10/02/07,ENE,04MPH,001K,460F,064F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338802,Z,151,10:26:42,10/02/07,ENE,05MPH,001K,460F,064F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338808,I,151,10:26:48,10/02/07,ENE,05MPH,001K,460F,064F,088%,29.77F,00.17\"D,00.18\"M,00.60\"R\n1191338814,T,151,10:26:54,10/02/07,ENE,05MPH,001K,460F,064F,088%,29.76F,00.17\"D,00.18\"M,00.60\"R\n1191338820,A,151,10:27:00,10/02/07,ENE,03MPH,001K,460F,064F,088%,29.76F,00.17\"D,00.18\"M,00.60\"R\n1191338826,Z,151,10:27:06,10/02/07,ENE,03MPH,001K,460F,064F,088%,29.76F,00.17\"D,00.18\"M,00.60\"R\n1191338832,E,151,10:27:12,10/02/07,ENE,04MPH,001K,460F,064F,088%,29.76F,00.17\"D,00.18\"M,00.60\"R\n1191338838,R,151,10:27:18,10/02/07,NE,05MPH,001K,460F,064F,088%,29.76F,00.17\"D,00.18\"M,00.60\"R\n1191338844,V,151,10:27:24,10/02/07,ENE,05MPH,001K,460F,064F,088%,29.76F,00.17\"D,00.18\"M,00.60\"R\n1191338850,G,151,10:27:30,10/02/07,NE,05MPH,001K,460F,064F,088%,29.76F,00.17\"D,00.18\"M,00.60\"R\n1191338856,O,151,10:27:36,10/02/07,NNE,05MPH,001K,460F,064F,088%,29.76F,00.17\"D,00.18\"M,00.60\"R\n1191338862,T,151,10:27:42,10/02/07,NE,06MPH,001K,460F,064F,088%,29.76F,00.17\"D,00.18\"M,00.60\"R\n1191338868,B,151,10:27:48,10/02/07,NE,06MPH,001K,460F,064F,088%,29.75F,00.17\"D,00.18\"M,00.60\"R\n1191338874,M,151,10:27:54,10/02/07,NE,05MPH,001K,460F,064F,089%,29.75F,00.17\"D,00.18\"M,00.60\"R\n1191338880,R,151,10:28:00,10/02/07,NE,05MPH,001K,460F,064F,089%,29.75F,00.17\"D,00.18\"M,00.60\"R\n1191338886,Z,151,10:28:06,10/02/07,NE,05MPH,001K,460F,064F,089%,29.75F,00.17\"D,00.18\"M,00.60\"R\n1191338892,K,151,10:28:12,10/02/07,NE,05MPH,001K,460F,064F,089%,29.75F,00.17\"D,00.18\"M,00.60\"R\n1191338898,B,151,10:28:18,10/02/07,NNE,05MPH,001K,460F,064F,088%,29.75F,00.17\"D,00.18\"M,00.60\"R\n1191338904,E,151,10:28:24,10/02/07,NE,05MPH,001K,460F,064F,088%,29.74F,00.17\"D,00.18\"M,00.60\"R\n1191338910,P,151,10:28:30,10/02/07,NNE,06MPH,001K,460F,064F,088%,29.74F,00.17\"D,00.18\"M,00.60\"R\n1191338916,X,151,10:28:36,10/02/07,NE,06MPH,001K,460F,064F,088%,29.74F,00.17\"D,00.18\"M,00.60\"R\n1191338922,W,151,10:28:42,10/02/07,NNE,06MPH,001K,460F,064F,088%,29.74F,00.17\"D,00.18\"M,00.60\"R\n1191338928,E,151,10:28:48,10/02/07,NE,07MPH,001K,460F,064F,088%,29.74F,00.17\"D,00.18\"M,00.60\"R\n1191338934,E,151,10:28:54,10/02/07,NE,06MPH,001K,460F,064F,088%,29.74F,00.17\"D,00.18\"M,00.60\"R\n1191338940,G,151,10:29:00,10/02/07,NNE,05MPH,001K,460F,064F,088%,29.74F,00.17\"D,00.18\"M,00.60\"R\n1191338946,R,151,10:29:06,10/02/07,ENE,05MPH,001K,460F,064F,088%,29.74F,00.17\"D,00.18\"M,00.60\"R\n1191338952,Z,151,10:29:12,10/02/07,NE,05MPH,001K,460F,064F,088%,29.74F,00.17\"D,00.18\"M,00.60\"R\n1191338958,H,151,10:29:18,10/02/07,NE,05MPH,001K,460F,064F,088%,29.74F,00.17\"D,00.18\"M,00.60\"R\n1191338964,I,151,10:29:24,10/02/07,ENE,05MPH,001K,460F,064F,088%,29.74F,00.17\"D,00.18\"M,00.60\"R\n1191338970,K,151,10:29:30,10/02/07,NE,05MPH,001K,460F,064F,088%,29.74F,00.17\"D,00.18\"M,00.60\"R\n1191338976,M,151,10:29:36,10/02/07,ENE,05MPH,001K,460F,064F,088%,29.74F,00.17\"D,00.18\"M,00.60\"R\n1191338982,O,151,10:29:42,10/02/07,NE,06MPH,001K,460F,064F,089%,29.74F,00.17\"D,00.18\"M,00.60\"R\n1191338988,W,151,10:29:48,10/02/07,ENE,06MPH,001K,460F,064F,089%,29.75F,00.17\"D,00.18\"M,00.60\"R\n1191338994,X,151,10:29:54,10/02/07,E,05MPH,001K,460F,064F,089%,29.75F,00.17\"D,00.18\"M,00.60\"R\n1191339000,H,151,10:30:00,10/02/07,ENE,05MPH,001K,460F,064F,089%,29.75F,00.17\"D,00.18\"M,00.60\"R\n1191339006,O,151,10:30:06,10/02/07,ENE,04MPH,001K,460F,064F,089%,29.75F,00.17\"D,00.18\"M,00.60\"R\n1191339012,O,151,10:30:12,10/02/07,ENE,04MPH,001K,460F,064F,089%,29.75F,00.17\"D,00.18\"M,00.60\"R\n1191339018,Z,151,10:30:18,10/02/07,ESE,04MPH,001K,460F,064F,089%,29.75F,00.17\"D,00.18\"M,00.60\"R\n1191339024,E,151,10:30:24,10/02/07,SE,03MPH,001K,460F,064F,089%,29.76F,00.17\"D,00.18\"M,00.60\"R\n1191339030,P,151,10:30:30,10/02/07,ESE,04MPH,001K,460F,064F,088%,29.76F,00.17\"D,00.18\"M,00.60\"R\n1191339036,W,151,10:30:36,10/02/07,ESE,04MPH,001K,460F,064F,088%,29.76F,00.17\"D,00.18\"M,00.60\"R\n1191339042,I,151,10:30:42,10/02/07,ESE,05MPH,001K,460F,064F,088%,29.76F,00.18\"D,00.19\"M,00.60\"R\n1191339048,K,151,10:30:48,10/02/07,ESE,04MPH,001K,460F,064F,088%,29.77F,00.18\"D,00.19\"M,00.60\"R\n1191339054,V,151,10:30:54,10/02/07,SE,06MPH,001K,460F,064F,088%,29.77F,00.18\"D,00.19\"M,00.60\"R\n1191339060,A,151,10:31:00,10/02/07,SE,06MPH,001K,460F,064F,088%,29.77F,00.18\"D,00.19\"M,00.60\"R\n1191339066,L,151,10:31:06,10/02/07,SSE,07MPH,001K,460F,064F,088%,29.77F,00.18\"D,00.19\"M,00.60\"R\n1191339072,S,151,10:31:12,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.77F,00.18\"D,00.19\"M,00.60\"R\n1191339078,X,151,10:31:18,10/02/07,SE,07MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339084,V,151,10:31:24,10/02/07,SE,06MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339090,Z,151,10:31:30,10/02/07,ESE,08MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339096,Y,151,10:31:36,10/02/07,SSE,07MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339102,F,151,10:31:42,10/02/07,SSE,08MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339108,K,151,10:31:48,10/02/07,SSE,07MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339114,Y,151,10:31:54,10/02/07,S,08MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339120,W,151,10:32:00,10/02/07,SE,08MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339126,V,151,10:32:06,10/02/07,SSE,09MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339132,Z,151,10:32:12,10/02/07,SSE,10MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339138,K,151,10:32:18,10/02/07,SSE,08MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339144,U,151,10:32:24,10/02/07,S,08MPH,001K,460F,064F,088%,29.80S,00.18\"D,00.19\"M,00.60\"R\n1191339150,E,151,10:32:30,10/02/07,SE,05MPH,001K,460F,064F,088%,29.80S,00.18\"D,00.19\"M,00.60\"R\n1191339156,K,151,10:32:36,10/02/07,SE,06MPH,001K,460F,064F,088%,29.80S,00.18\"D,00.19\"M,00.60\"R\n1191339162,Y,151,10:32:42,10/02/07,SSE,07MPH,001K,460F,064F,088%,29.80S,00.18\"D,00.19\"M,00.60\"R\n1191339168,G,151,10:32:48,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339174,R,151,10:32:54,10/02/07,SSE,08MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339180,E,151,10:33:00,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339186,L,151,10:33:06,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339192,Z,151,10:33:12,10/02/07,S,04MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339198,E,151,10:33:18,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339204,M,151,10:33:24,10/02/07,SE,06MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339210,G,151,10:33:30,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339216,R,151,10:33:36,10/02/07,ESE,05MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339222,H,151,10:33:42,10/02/07,SSE,04MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339228,P,151,10:33:48,10/02/07,SSW,04MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339234,A,151,10:33:54,10/02/07,SSW,04MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339240,C,151,10:34:00,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339246,M,151,10:34:06,10/02/07,S,05MPH,001K,460F,064F,088%,29.79F,00.18\"D,00.19\"M,00.60\"R\n1191339252,U,151,10:34:12,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339258,C,151,10:34:18,10/02/07,SSW,03MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339264,T,151,10:34:24,10/02/07,S,05MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339270,E,151,10:34:30,10/02/07,E,04MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339276,O,151,10:34:36,10/02/07,S,04MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339282,Q,151,10:34:42,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339288,E,151,10:34:48,10/02/07,S,03MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339294,D,151,10:34:54,10/02/07,SSW,03MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339300,K,151,10:35:00,10/02/07,S,03MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339306,I,151,10:35:06,10/02/07,S,04MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339312,Q,151,10:35:12,10/02/07,SW,05MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339318,X,151,10:35:18,10/02/07,SW,04MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339324,I,151,10:35:24,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339330,E,151,10:35:30,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339336,K,151,10:35:36,10/02/07,SE,05MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339342,G,151,10:35:42,10/02/07,SW,03MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339348,J,151,10:35:48,10/02/07,SSW,02MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339354,N,151,10:35:54,10/02/07,SSW,03MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339360,V,151,10:36:00,10/02/07,SSW,03MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339366,Y,151,10:36:06,10/02/07,SW,03MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339372,F,151,10:36:12,10/02/07,WSW,04MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339378,M,151,10:36:18,10/02/07,S,03MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339384,U,151,10:36:24,10/02/07,SSW,02MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339390,V,151,10:36:30,10/02/07,S,03MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339396,A,151,10:36:36,10/02/07,S,02MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339402,R,151,10:36:42,10/02/07,SSE,02MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339408,Y,151,10:36:48,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339414,P,151,10:36:54,10/02/07,S,03MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339420,C,151,10:37:00,10/02/07,SW,02MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339426,E,151,10:37:06,10/02/07,SW,01MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339432,S,151,10:37:12,10/02/07,SSE,02MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339438,X,151,10:37:18,10/02/07,S,03MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339444,Y,151,10:37:24,10/02/07,S,05MPH,001K,460F,064F,088%,29.78F,00.18\"D,00.19\"M,00.60\"R\n1191339450,D,151,10:37:30,10/02/07,SSW,05MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339456,J,151,10:37:36,10/02/07,S,04MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339462,O,151,10:37:42,10/02/07,S,03MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339468,Z,151,10:37:48,10/02/07,S,05MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339474,K,151,10:37:54,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339480,V,151,10:38:00,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339486,W,151,10:38:06,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339492,N,151,10:38:12,10/02/07,S,05MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339498,Z,151,10:38:18,10/02/07,SSE,04MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339504,E,151,10:38:24,10/02/07,SSE,04MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339510,M,151,10:38:30,10/02/07,S,04MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339516,T,151,10:38:36,10/02/07,SE,03MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339522,C,151,10:38:42,10/02/07,SSW,03MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339528,P,151,10:38:48,10/02/07,SE,03MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339534,A,151,10:38:54,10/02/07,SSW,02MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339540,L,151,10:39:00,10/02/07,E,02MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339546,S,151,10:39:06,10/02/07,ESE,03MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339552,X,151,10:39:12,10/02/07,SSW,05MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339558,E,151,10:39:18,10/02/07,SE,03MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339564,A,151,10:39:24,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339570,F,151,10:39:30,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339576,J,151,10:39:36,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339582,U,151,10:39:42,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339588,R,151,10:39:48,10/02/07,S,04MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339594,Y,151,10:39:54,10/02/07,ESE,04MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339600,I,151,10:40:00,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339606,Y,151,10:40:06,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339612,C,151,10:40:12,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339618,D,151,10:40:18,10/02/07,SE,03MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339624,F,151,10:40:24,10/02/07,SE,03MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339630,S,151,10:40:30,10/02/07,SE,03MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339636,U,151,10:40:36,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339642,C,151,10:40:42,10/02/07,SSW,03MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339648,H,151,10:40:48,10/02/07,SE,02MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339654,J,151,10:40:54,10/02/07,SSE,02MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339660,O,151,10:41:00,10/02/07,SE,02MPH,001K,460F,064F,088%,29.78F,00.19\"D,00.20\"M,00.60\"R\n1191339666,V,151,10:41:06,10/02/07,S,02MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339672,W,151,10:41:12,10/02/07,SSE,02MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339678,S,151,10:41:18,10/02/07,SE,03MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339684,D,151,10:41:24,10/02/07,SE,03MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339690,I,151,10:41:30,10/02/07,SE,02MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339696,J,151,10:41:36,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339702,L,151,10:41:42,10/02/07,ESE,02MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339708,T,151,10:41:48,10/02/07,SE,03MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339714,U,151,10:41:54,10/02/07,SE,03MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339720,Y,151,10:42:00,10/02/07,ESE,03MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339726,A,151,10:42:06,10/02/07,SE,04MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339732,Y,151,10:42:12,10/02/07,SSW,04MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339738,M,151,10:42:18,10/02/07,SE,03MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339744,U,151,10:42:24,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339750,F,151,10:42:30,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339756,N,151,10:42:36,10/02/07,SE,03MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339762,R,151,10:42:42,10/02/07,S,03MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339768,T,151,10:42:48,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339774,B,151,10:42:54,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339780,D,151,10:43:00,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339786,F,151,10:43:06,10/02/07,S,03MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339792,P,151,10:43:12,10/02/07,S,03MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339798,U,151,10:43:18,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.20\"D,00.21\"M,00.60\"R\n1191339804,W,151,10:43:24,10/02/07,S,03MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339810,E,151,10:43:30,10/02/07,SSE,04MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339816,J,151,10:43:36,10/02/07,SE,04MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339822,J,151,10:43:42,10/02/07,SSW,03MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339828,O,151,10:43:48,10/02/07,SE,02MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339834,W,151,10:43:54,10/02/07,S,02MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339840,B,151,10:44:00,10/02/07,S,03MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339846,D,151,10:44:06,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339852,K,151,10:44:12,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339858,V,151,10:44:18,10/02/07,S,03MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339864,U,151,10:44:24,10/02/07,S,04MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339870,F,151,10:44:30,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339876,E,151,10:44:36,10/02/07,SE,03MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339882,L,151,10:44:42,10/02/07,SE,02MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339888,T,151,10:44:48,10/02/07,SE,04MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339894,E,151,10:44:54,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339900,F,151,10:45:00,10/02/07,SE,04MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339906,J,151,10:45:06,10/02/07,SE,05MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339912,R,151,10:45:12,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339918,R,151,10:45:18,10/02/07,SE,04MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339924,W,151,10:45:24,10/02/07,SE,05MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339930,N,151,10:45:30,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339936,S,151,10:45:36,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339942,G,151,10:45:42,10/02/07,SE,05MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339948,Q,151,10:45:48,10/02/07,SE,05MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339954,V,151,10:45:54,10/02/07,SE,06MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339960,X,151,10:46:00,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.78F,00.21\"D,00.22\"M,00.60\"R\n1191339966,K,151,10:46:06,10/02/07,SE,05MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191339972,G,151,10:46:12,10/02/07,SE,05MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191339978,D,151,10:46:18,10/02/07,SE,04MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191339984,I,151,10:46:24,10/02/07,SE,05MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191339990,T,151,10:46:30,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191339996,X,151,10:46:36,10/02/07,ESE,05MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191340002,O,151,10:46:42,10/02/07,ESE,04MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191340008,Q,151,10:46:48,10/02/07,SE,04MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191340014,D,151,10:46:54,10/02/07,S,06MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191340020,I,151,10:47:00,10/02/07,ESE,04MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191340026,S,151,10:47:06,10/02/07,SE,04MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191340032,Z,151,10:47:12,10/02/07,SE,03MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191340038,D,151,10:47:18,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191340044,F,151,10:47:24,10/02/07,SE,05MPH,001K,460F,064F,088%,29.77F,00.22\"D,00.23\"M,00.60\"R\n1191340050,T,151,10:47:30,10/02/07,ESE,04MPH,001K,460F,064F,088%,29.77F,00.22\"D,00.23\"M,00.60\"R\n1191340056,A,151,10:47:36,10/02/07,ESE,03MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191340062,X,151,10:47:42,10/02/07,ESE,04MPH,001K,460F,064F,088%,29.77F,00.22\"D,00.23\"M,00.60\"R\n1191340068,E,151,10:47:48,10/02/07,SE,03MPH,001K,460F,064F,088%,29.77F,00.22\"D,00.23\"M,00.60\"R\n1191340074,S,151,10:47:54,10/02/07,SE,04MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191340080,Z,151,10:48:00,10/02/07,SE,05MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191340086,J,151,10:48:06,10/02/07,SE,05MPH,001K,460F,064F,088%,29.78F,00.22\"D,00.23\"M,00.60\"R\n1191340092,K,151,10:48:12,10/02/07,SE,05MPH,001K,460F,064F,088%,29.78F,00.23\"D,00.24\"M,00.60\"R\n1191340098,Y,151,10:48:18,10/02/07,SE,05MPH,001K,460F,064F,088%,29.78F,00.23\"D,00.24\"M,00.60\"R\n1191340104,F,151,10:48:24,10/02/07,ESE,05MPH,001K,460F,064F,088%,29.78F,00.23\"D,00.24\"M,00.60\"R\n1191340110,P,151,10:48:30,10/02/07,SE,05MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340116,C,151,10:48:36,10/02/07,ESE,05MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340122,Q,151,10:48:42,10/02/07,SE,05MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340128,U,151,10:48:48,10/02/07,ESE,04MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340134,I,151,10:48:54,10/02/07,ESE,05MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340140,M,151,10:49:00,10/02/07,E,06MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340146,W,151,10:49:06,10/02/07,ESE,06MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340152,A,151,10:49:12,10/02/07,SE,06MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340158,R,151,10:49:18,10/02/07,ESE,05MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340164,C,151,10:49:24,10/02/07,ESE,05MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340170,M,151,10:49:30,10/02/07,ESE,05MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340176,X,151,10:49:36,10/02/07,SE,04MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340182,G,151,10:49:42,10/02/07,NE,03MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340188,O,151,10:49:48,10/02/07,SE,03MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340194,Y,151,10:49:54,10/02/07,ESE,03MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340200,D,151,10:50:00,10/02/07,ESE,05MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340206,K,151,10:50:06,10/02/07,SE,03MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340212,R,151,10:50:12,10/02/07,ESE,03MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340218,F,151,10:50:18,10/02/07,ESE,03MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340224,K,151,10:50:24,10/02/07,ESE,03MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340230,V,151,10:50:30,10/02/07,SE,02MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340236,X,151,10:50:36,10/02/07,SSW,02MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340242,I,151,10:50:42,10/02/07,SE,04MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340248,N,151,10:50:48,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.77F,00.23\"D,00.24\"M,00.60\"R\n1191340254,X,151,10:50:54,10/02/07,SE,05MPH,001K,460F,064F,088%,29.78F,00.23\"D,00.24\"M,00.60\"R\n1191340260,F,151,10:51:00,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.78F,00.23\"D,00.24\"M,00.60\"R\n1191340266,T,151,10:51:06,10/02/07,SE,04MPH,001K,460F,064F,088%,29.78F,00.23\"D,00.24\"M,00.60\"R\n1191340272,Y,151,10:51:12,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340278,L,151,10:51:18,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340284,V,151,10:51:24,10/02/07,SSE,04MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340290,D,151,10:51:30,10/02/07,S,03MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340296,F,151,10:51:36,10/02/07,SSW,03MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340302,Q,151,10:51:42,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340308,U,151,10:51:48,10/02/07,S,05MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340314,H,151,10:51:54,10/02/07,S,05MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340320,O,151,10:52:00,10/02/07,SSW,05MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340326,Z,151,10:52:06,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340332,E,151,10:52:12,10/02/07,S,06MPH,001K,460F,064F,088%,29.79F,00.24\"D,00.25\"M,00.60\"R\n1191340338,J,151,10:52:18,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.79F,00.24\"D,00.25\"M,00.60\"R\n1191340344,N,151,10:52:24,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.79F,00.24\"D,00.25\"M,00.60\"R\n1191340350,Y,151,10:52:30,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.79F,00.24\"D,00.25\"M,00.60\"R\n1191340356,D,151,10:52:36,10/02/07,S,06MPH,001K,460F,064F,088%,29.79F,00.24\"D,00.25\"M,00.60\"R\n1191340362,L,151,10:52:42,10/02/07,SSW,05MPH,001K,460F,064F,088%,29.79F,00.24\"D,00.25\"M,00.60\"R\n1191340368,W,151,10:52:48,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.79F,00.24\"D,00.25\"M,00.60\"R\n1191340380,C,151,10:53:00,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.79F,00.24\"D,00.25\"M,00.60\"R\n1191340386,G,151,10:53:06,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.79F,00.24\"D,00.25\"M,00.60\"R\n1191340392,U,151,10:53:12,10/02/07,SE,05MPH,001K,460F,064F,088%,29.79F,00.24\"D,00.25\"M,00.60\"R\n1191340398,U,151,10:53:18,10/02/07,S,05MPH,001K,460F,064F,088%,29.79F,00.24\"D,00.25\"M,00.60\"R\n1191340404,W,151,10:53:24,10/02/07,S,04MPH,001K,460F,064F,088%,29.79F,00.24\"D,00.25\"M,00.60\"R\n1191340410,B,151,10:53:30,10/02/07,SSW,05MPH,001K,460F,064F,088%,29.79F,00.24\"D,00.25\"M,00.60\"R\n1191340416,J,151,10:53:36,10/02/07,SSE,04MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340422,L,151,10:53:42,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340428,C,151,10:53:48,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340434,D,151,10:53:54,10/02/07,S,06MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340440,R,151,10:54:00,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340446,T,151,10:54:06,10/02/07,SSE,05MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340452,U,151,10:54:12,10/02/07,SE,05MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340458,V,151,10:54:18,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340464,D,151,10:54:24,10/02/07,SSE,06MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340470,F,151,10:54:30,10/02/07,SSW,05MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340476,H,151,10:54:36,10/02/07,S,04MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340482,L,151,10:54:42,10/02/07,SSE,03MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340488,V,151,10:54:48,10/02/07,SE,03MPH,001K,460F,064F,088%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340494,X,151,10:54:54,10/02/07,ESE,02MPH,001K,460F,064F,089%,29.78F,00.24\"D,00.25\"M,00.60\"R\n1191340500,L,151,10:55:00,10/02/07,ESE,03MPH,001K,460F,064F,089%,29.77F,00.24\"D,00.25\"M,00.60\"R\n1191340506,J,151,10:55:06,10/02/07,SE,03MPH,001K,460F,064F,089%,29.77F,00.24\"D,00.25\"M,00.60\"R\n1191340512,H,151,10:55:12,10/02/07,SSE,05MPH,001K,460F,064F,089%,29.77F,00.24\"D,00.25\"M,00.60\"R\n1191340518,J,151,10:55:18,10/02/07,SE,04MPH,001K,460F,064F,089%,29.77F,00.24\"D,00.25\"M,00.60\"R\n1191340524,O,151,10:55:24,10/02/07,SE,03MPH,001K,460F,064F,089%,29.77F,00.24\"D,00.25\"M,00.60\"R\n1191340530,S,151,10:55:30,10/02/07,ESE,03MPH,001K,460F,064F,089%,29.77F,00.24\"D,00.25\"M,00.60\"R\n1191340536,A,151,10:55:36,10/02/07,S,02MPH,001K,460F,064F,089%,29.77F,00.24\"D,00.25\"M,00.60\"R\n1191340542,C,151,10:55:42,10/02/07,SE,03MPH,001K,460F,064F,089%,29.77F,00.24\"D,00.25\"M,00.60\"R\n1191340548,K,151,10:55:48,10/02/07,SSE,05MPH,001K,460F,064F,089%,29.77F,00.25\"D,00.26\"M,00.60\"R\n1191340554,E,151,10:55:54,10/02/07,SE,05MPH,001K,460F,064F,089%,29.77F,00.25\"D,00.26\"M,00.60\"R\n1191340560,M,151,10:56:00,10/02/07,ESE,05MPH,001K,460F,064F,089%,29.77F,00.25\"D,00.26\"M,00.60\"R\n1191340566,D,151,10:56:06,10/02/07,SSE,05MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340572,Q,151,10:56:12,10/02/07,S,04MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340578,P,151,10:56:18,10/02/07,SSE,04MPH,001K,460F,064F,089%,29.77F,00.25\"D,00.26\"M,00.60\"R\n1191340584,C,151,10:56:24,10/02/07,SE,04MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340590,B,151,10:56:30,10/02/07,S,04MPH,001K,460F,064F,089%,29.77F,00.25\"D,00.26\"M,00.60\"R\n1191340596,M,151,10:56:36,10/02/07,S,05MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340602,K,151,10:56:42,10/02/07,SE,05MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340608,B,151,10:56:48,10/02/07,SSE,05MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340614,C,151,10:56:54,10/02/07,SE,04MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340620,H,151,10:57:00,10/02/07,SSE,04MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340626,D,151,10:57:06,10/02/07,SSE,03MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340632,T,151,10:57:12,10/02/07,SSE,04MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340638,Y,151,10:57:18,10/02/07,ESE,05MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340644,P,151,10:57:24,10/02/07,SE,04MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340650,U,151,10:57:30,10/02/07,SSE,05MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340656,L,151,10:57:36,10/02/07,ESE,05MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340662,M,151,10:57:42,10/02/07,SSE,06MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340668,A,151,10:57:48,10/02/07,SSE,05MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340674,F,151,10:57:54,10/02/07,S,03MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340680,S,151,10:58:00,10/02/07,SE,03MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340686,A,151,10:58:06,10/02/07,S,03MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340692,R,151,10:58:12,10/02/07,SE,03MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340698,W,151,10:58:18,10/02/07,SE,03MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340704,L,151,10:58:24,10/02/07,SE,04MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340710,M,151,10:58:30,10/02/07,SSE,06MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340716,A,151,10:58:36,10/02/07,SSE,06MPH,001K,460F,064F,089%,29.76F,00.25\"D,00.26\"M,00.60\"R\n1191340722,I,151,10:58:42,10/02/07,SSE,06MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340728,T,151,10:58:48,10/02/07,SSE,08MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340734,V,151,10:58:54,10/02/07,SE,07MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340740,I,151,10:59:00,10/02/07,SSE,06MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340746,K,151,10:59:06,10/02/07,SSE,06MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340752,Y,151,10:59:12,10/02/07,SE,06MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340758,F,151,10:59:18,10/02/07,SE,06MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340764,Q,151,10:59:24,10/02/07,SE,05MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340770,P,151,10:59:30,10/02/07,SE,06MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340776,A,151,10:59:36,10/02/07,SE,05MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340782,E,151,10:59:42,10/02/07,SE,06MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340788,R,151,10:59:48,10/02/07,SSE,07MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340794,Z,151,10:59:54,10/02/07,SE,07MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340800,T,151,11:00:00,10/02/07,SSE,06MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340806,Q,151,11:00:06,10/02/07,SE,06MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340812,J,151,11:00:12,10/02/07,ESE,05MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340818,L,151,11:00:18,10/02/07,S,09MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340824,V,151,11:00:24,10/02/07,S,07MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340830,A,151,11:00:30,10/02/07,SE,06MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340836,I,151,11:00:36,10/02/07,SSE,05MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340842,P,151,11:00:42,10/02/07,ESE,05MPH,001K,460F,064F,089%,29.76F,00.26\"D,00.27\"M,00.60\"R\n1191340848,E,151,11:00:48,10/02/07,ESE,04MPH,001K,460F,064F,089%,29.76F,00.27\"D,00.28\"M,00.60\"R\n1191340854,H,151,11:00:54,10/02/07,SE,06MPH,001K,460F,064F,089%,29.76F,00.27\"D,00.28\"M,00.60\"R\n1191340860,Y,151,11:01:00,10/02/07,S,05MPH,001K,460F,064F,089%,29.76F,00.27\"D,00.28\"M,00.60\"R\n1191340866,A,151,11:01:06,10/02/07,SE,03MPH,001K,460F,064F,089%,29.76F,00.27\"D,00.28\"M,00.60\"R\n1191340872,J,151,11:01:12,10/02/07,SE,06MPH,001K,460F,064F,089%,29.76F,00.27\"D,00.28\"M,00.60\"R\n1191340878,L,151,11:01:18,10/02/07,SSE,05MPH,001K,460F,064F,089%,29.76F,00.27\"D,00.28\"M,00.60\"R\n1191340884,T,151,11:01:24,10/02/07,SSE,04MPH,001K,460F,064F,089%,29.76F,00.27\"D,00.28\"M,00.60\"R\n1191340890,V,151,11:01:30,10/02/07,SSE,03MPH,001K,460F,064F,089%,29.76F,00.27\"D,00.28\"M,00.60\"R\n1191340896,M,151,11:01:36,10/02/07,SE,06MPH,001K,460F,064F,089%,29.76F,00.27\"D,00.28\"M,00.60\"R\n1191340902,Z,151,11:01:42,10/02/07,SE,08MPH,001K,460F,064F,089%,29.76F,00.27\"D,00.28\"M,00.60\"R\n1191340908,D,151,11:01:48,10/02/07,SE,09MPH,001K,460F,064F,089%,29.76F,00.27\"D,00.28\"M,00.60\"R\n1191340914,P,151,11:01:54,10/02/07,ESE,08MPH,001K,460F,064F,089%,29.76F,00.27\"D,00.28\"M,00.60\"R\n1191340920,R,151,11:02:00,10/02/07,SE,08MPH,001K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191340926,N,151,11:02:06,10/02/07,SSE,05MPH,001K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191340932,A,151,11:02:12,10/02/07,SE,05MPH,001K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191340938,I,151,11:02:18,10/02/07,S,05MPH,001K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191340944,N,151,11:02:24,10/02/07,SE,06MPH,001K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191340950,A,151,11:02:30,10/02/07,SSE,05MPH,001K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191340956,C,151,11:02:36,10/02/07,SE,05MPH,001K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191340962,H,151,11:02:42,10/02/07,S,03MPH,001K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191340968,U,151,11:02:48,10/02/07,SE,02MPH,001K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191340974,V,151,11:02:54,10/02/07,SE,02MPH,001K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191340980,F,151,11:03:00,10/02/07,ESE,03MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191340986,B,151,11:03:06,10/02/07,ESE,03MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191340992,V,151,11:03:12,10/02/07,SSE,03MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191340998,W,151,11:03:18,10/02/07,S,03MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191341004,F,151,11:03:24,10/02/07,ESE,05MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341010,K,151,11:03:30,10/02/07,ESE,05MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341016,E,151,11:03:36,10/02/07,SE,05MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341022,L,151,11:03:42,10/02/07,SE,05MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341028,N,151,11:03:48,10/02/07,SSE,05MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341034,M,151,11:03:54,10/02/07,SE,06MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341040,X,151,11:04:00,10/02/07,SE,05MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341046,W,151,11:04:06,10/02/07,S,04MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341052,K,151,11:04:12,10/02/07,SE,04MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341058,V,151,11:04:18,10/02/07,SE,04MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341064,F,151,11:04:24,10/02/07,SE,03MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341070,K,151,11:04:30,10/02/07,SE,03MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341076,M,151,11:04:36,10/02/07,SE,02MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341082,U,151,11:04:42,10/02/07,SE,03MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191341088,Y,151,11:04:48,10/02/07,SSE,06MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341094,A,151,11:04:54,10/02/07,SSE,05MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341100,F,151,11:05:00,10/02/07,SE,05MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341106,D,151,11:05:06,10/02/07,SE,05MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341112,U,151,11:05:12,10/02/07,SE,05MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341118,Y,151,11:05:18,10/02/07,ESE,06MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191341124,F,151,11:05:24,10/02/07,SSE,06MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191341130,S,151,11:05:30,10/02/07,SSE,05MPH,002K,460F,064F,089%,29.74F,00.27\"D,00.28\"M,00.60\"R\n1191341136,A,151,11:05:36,10/02/07,SE,05MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191341142,W,151,11:05:42,10/02/07,SE,05MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191341148,B,151,11:05:48,10/02/07,S,05MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191341154,W,151,11:05:54,10/02/07,SSE,06MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191341160,Q,151,11:06:00,10/02/07,SE,06MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191341166,S,151,11:06:06,10/02/07,SSE,06MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191341172,G,151,11:06:12,10/02/07,SE,06MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191341178,K,151,11:06:18,10/02/07,SE,05MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191341184,S,151,11:06:24,10/02/07,S,05MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191341190,R,151,11:06:30,10/02/07,SE,07MPH,002K,460F,064F,089%,29.75F,00.27\"D,00.28\"M,00.60\"R\n1191341196,I,151,11:06:36,10/02/07,SE,06MPH,002K,460F,064F,089%,29.75F,00.28\"D,00.29\"M,00.60\"R\n1191341202,M,151,11:06:42,10/02/07,SE,06MPH,002K,460F,064F,089%,29.75F,00.28\"D,00.29\"M,00.60\"R\n1191341208,Z,151,11:06:48,10/02/07,SE,06MPH,002K,460F,064F,089%,29.75F,00.28\"D,00.29\"M,00.60\"R\n1191341214,B,151,11:06:54,10/02/07,SE,07MPH,002K,460F,064F,089%,29.75F,00.28\"D,00.29\"M,00.60\"R\n1191341220,J,151,11:07:00,10/02/07,SSE,06MPH,002K,460F,064F,089%,29.75F,00.28\"D,00.29\"M,00.60\"R\n1191341226,H,151,11:07:06,10/02/07,SSE,06MPH,002K,460F,064F,089%,29.75F,00.28\"D,00.29\"M,00.60\"R\n1191341232,P,151,11:07:12,10/02/07,SE,06MPH,002K,460F,064F,089%,29.75F,00.28\"D,00.29\"M,00.60\"R\n1191341238,H,151,11:07:18,10/02/07,SSE,05MPH,002K,460F,064F,089%,29.75F,00.28\"D,00.29\"M,00.60\"R\n1191341244,Y,151,11:07:24,10/02/07,SE,05MPH,002K,460F,064F,089%,29.75F,00.28\"D,00.29\"M,00.60\"R\n1191341250,S,151,11:07:30,10/02/07,SSE,06MPH,002K,460F,064F,089%,29.75F,00.28\"D,00.29\"M,00.60\"R\n1191341256,G,151,11:07:36,10/02/07,SE,06MPH,002K,460F,064F,089%,29.75F,00.28\"D,00.29\"M,00.60\"R\n1191341262,F,151,11:07:42,10/02/07,SE,07MPH,002K,460F,064F,089%,29.75F,00.28\"D,00.29\"M,00.60\"R\n1191341268,P,151,11:07:48,10/02/07,SE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341274,V,151,11:07:54,10/02/07,SSE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341280,F,151,11:08:00,10/02/07,SSE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341286,N,151,11:08:06,10/02/07,SE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341292,U,151,11:08:12,10/02/07,SSE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341298,T,151,11:08:18,10/02/07,SE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341304,H,151,11:08:24,10/02/07,SSE,05MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341310,D,151,11:08:30,10/02/07,SSE,05MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341316,U,151,11:08:36,10/02/07,SE,05MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341322,P,151,11:08:42,10/02/07,SE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341328,R,151,11:08:48,10/02/07,SSE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341334,X,151,11:08:54,10/02/07,SE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341340,E,151,11:09:00,10/02/07,SSE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341346,A,151,11:09:06,10/02/07,SSE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341352,I,151,11:09:12,10/02/07,SE,05MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341358,B,151,11:09:18,10/02/07,SE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341364,F,151,11:09:24,10/02/07,ESE,05MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341370,N,151,11:09:30,10/02/07,ESE,05MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341376,V,151,11:09:36,10/02/07,SE,05MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341382,T,151,11:09:42,10/02/07,SE,05MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341388,B,151,11:09:48,10/02/07,SE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341394,W,151,11:09:54,10/02/07,SSE,07MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341400,D,151,11:10:00,10/02/07,SE,05MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341406,Y,151,11:10:06,10/02/07,SE,05MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341412,D,151,11:10:12,10/02/07,SSE,04MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341418,Y,151,11:10:18,10/02/07,SE,05MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341424,J,151,11:10:24,10/02/07,SE,03MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341430,H,151,11:10:30,10/02/07,SE,05MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341436,P,151,11:10:36,10/02/07,SE,04MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341442,O,151,11:10:42,10/02/07,SE,05MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341448,O,151,11:10:48,10/02/07,SE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341454,N,151,11:10:54,10/02/07,SSE,07MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341460,V,151,11:11:00,10/02/07,SSE,07MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341466,R,151,11:11:06,10/02/07,SSE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341472,Y,151,11:11:12,10/02/07,SE,05MPH,002K,460F,064F,089%,29.77F,00.28\"D,00.29\"M,00.60\"R\n1191341478,D,151,11:11:18,10/02/07,SE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341484,L,151,11:11:24,10/02/07,SE,07MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341490,N,151,11:11:30,10/02/07,SE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341496,V,151,11:11:36,10/02/07,SE,05MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341502,U,151,11:11:42,10/02/07,SE,06MPH,002K,460F,064F,089%,29.76F,00.28\"D,00.29\"M,00.60\"R\n1191341508,C,151,11:11:48,10/02/07,SE,05MPH,002K,460F,064F,089%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341514,B,151,11:11:54,10/02/07,SE,06MPH,002K,460F,064F,089%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341520,F,151,11:12:00,10/02/07,ESE,06MPH,002K,460F,064F,089%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341526,H,151,11:12:06,10/02/07,ESE,05MPH,002K,460F,064F,089%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341532,M,151,11:12:12,10/02/07,ESE,06MPH,002K,460F,064F,089%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341538,U,151,11:12:18,10/02/07,ESE,05MPH,002K,460F,064F,089%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341544,C,151,11:12:24,10/02/07,SE,04MPH,002K,460F,064F,089%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341550,D,151,11:12:30,10/02/07,SE,06MPH,002K,460F,064F,089%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341556,O,151,11:12:36,10/02/07,SE,05MPH,002K,460F,064F,089%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341562,N,151,11:12:42,10/02/07,ESE,05MPH,002K,460F,064F,089%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341568,Y,151,11:12:48,10/02/07,SE,05MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341574,S,151,11:12:54,10/02/07,ESE,05MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341580,F,151,11:13:00,10/02/07,SE,07MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341586,Q,151,11:13:06,10/02/07,SE,07MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341592,E,151,11:13:12,10/02/07,SE,07MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341598,J,151,11:13:18,10/02/07,SE,08MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341604,U,151,11:13:24,10/02/07,SE,05MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341610,S,151,11:13:30,10/02/07,SSE,05MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341616,A,151,11:13:36,10/02/07,ESE,05MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341622,F,151,11:13:42,10/02/07,ESE,03MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341628,K,151,11:13:48,10/02/07,E,04MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341634,I,151,11:13:54,10/02/07,ESE,03MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341640,Y,151,11:14:00,10/02/07,ESE,04MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341646,G,151,11:14:06,10/02/07,ESE,05MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341652,T,151,11:14:12,10/02/07,SSE,04MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341658,V,151,11:14:18,10/02/07,ESE,05MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341664,D,151,11:14:24,10/02/07,ESE,05MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341670,H,151,11:14:30,10/02/07,SE,05MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341676,P,151,11:14:36,10/02/07,ESE,04MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341682,U,151,11:14:42,10/02/07,ESE,03MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341688,Y,151,11:14:48,10/02/07,ESE,03MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341694,J,151,11:14:54,10/02/07,ESE,03MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341700,P,151,11:15:00,10/02/07,SE,05MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341706,T,151,11:15:06,10/02/07,ESE,06MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341712,U,151,11:15:12,10/02/07,SE,05MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341718,X,151,11:15:18,10/02/07,SSE,07MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341724,B,151,11:15:24,10/02/07,ESE,05MPH,002K,460F,064F,090%,29.76F,00.29\"D,00.30\"M,00.60\"R\n1191341730,L,151,11:15:30,10/02/07,ESE,05MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341736,J,151,11:15:36,10/02/07,ESE,04MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341742,L,151,11:15:42,10/02/07,S,04MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341748,W,151,11:15:48,10/02/07,S,05MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341754,B,151,11:15:54,10/02/07,SE,05MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341760,G,151,11:16:00,10/02/07,SE,05MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341766,H,151,11:16:06,10/02/07,S,05MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341772,G,151,11:16:12,10/02/07,E,05MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341778,L,151,11:16:18,10/02/07,ENE,05MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341784,T,151,11:16:24,10/02/07,ESE,05MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341790,G,151,11:16:30,10/02/07,SE,04MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341796,R,151,11:16:36,10/02/07,ESE,08MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341802,W,151,11:16:42,10/02/07,SE,10MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341808,E,151,11:16:48,10/02/07,ESE,08MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341814,H,151,11:16:54,10/02/07,SE,10MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341820,J,151,11:17:00,10/02/07,SE,10MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341826,L,151,11:17:06,10/02/07,SE,08MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341832,J,151,11:17:12,10/02/07,SE,08MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341838,R,151,11:17:18,10/02/07,SSE,06MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341844,C,151,11:17:24,10/02/07,SE,07MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341850,N,151,11:17:30,10/02/07,SSE,08MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341856,O,151,11:17:36,10/02/07,SE,06MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341862,N,151,11:17:42,10/02/07,SE,10MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341868,V,151,11:17:48,10/02/07,SE,08MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341874,W,151,11:17:54,10/02/07,SSE,08MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341880,V,151,11:18:00,10/02/07,SE,06MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341886,X,151,11:18:06,10/02/07,SE,06MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341892,Z,151,11:18:12,10/02/07,ESE,06MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341898,D,151,11:18:18,10/02/07,S,08MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341904,I,151,11:18:24,10/02/07,SE,06MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341910,K,151,11:18:30,10/02/07,ESE,06MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341916,O,151,11:18:36,10/02/07,SSE,08MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341922,H,151,11:18:42,10/02/07,SE,06MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341928,J,151,11:18:48,10/02/07,SE,06MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341934,O,151,11:18:54,10/02/07,ESE,08MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341940,N,151,11:19:00,10/02/07,ESE,08MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341946,O,151,11:19:06,10/02/07,SE,06MPH,002K,460F,064F,090%,29.76F,00.30\"D,00.31\"M,00.60\"R\n1191341952,K,151,11:19:12,10/02/07,SE,05MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191341958,Y,151,11:19:18,10/02/07,SE,06MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191341964,D,151,11:19:24,10/02/07,ESE,05MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191341970,E,151,11:19:30,10/02/07,SE,05MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191341976,A,151,11:19:36,10/02/07,ESE,05MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191341982,Z,151,11:19:42,10/02/07,ESE,05MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191341988,Y,151,11:19:48,10/02/07,SE,06MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191341994,J,151,11:19:54,10/02/07,SE,06MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342000,H,151,11:20:00,10/02/07,SE,03MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342006,J,151,11:20:06,10/02/07,SE,04MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342012,N,151,11:20:12,10/02/07,SE,07MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342018,R,151,11:20:18,10/02/07,S,05MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342024,M,151,11:20:24,10/02/07,SE,05MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342030,U,151,11:20:30,10/02/07,S,04MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342036,N,151,11:20:36,10/02/07,SSW,06MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342042,S,151,11:20:42,10/02/07,SSW,05MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342048,Q,151,11:20:48,10/02/07,SSE,05MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342054,B,151,11:20:54,10/02/07,SSE,05MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342060,G,151,11:21:00,10/02/07,S,06MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342066,R,151,11:21:06,10/02/07,S,07MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342072,Q,151,11:21:12,10/02/07,S,05MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342078,V,151,11:21:18,10/02/07,S,05MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342084,X,151,11:21:24,10/02/07,SSW,05MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342090,B,151,11:21:30,10/02/07,SSE,04MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342096,D,151,11:21:36,10/02/07,SSE,05MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342102,N,151,11:21:42,10/02/07,S,05MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342108,L,151,11:21:48,10/02/07,ESE,03MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342114,T,151,11:21:54,10/02/07,SE,04MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342120,S,151,11:22:00,10/02/07,SE,06MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342126,D,151,11:22:06,10/02/07,SE,08MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342132,Z,151,11:22:12,10/02/07,SE,07MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342138,A,151,11:22:18,10/02/07,S,06MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342144,C,151,11:22:24,10/02/07,SSE,05MPH,002K,460F,064F,090%,29.76F,00.31\"D,00.32\"M,00.60\"R\n1191342150,M,151,11:22:30,10/02/07,ESE,05MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342156,U,151,11:22:36,10/02/07,SSE,06MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342162,C,151,11:22:42,10/02/07,SSE,07MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342168,K,151,11:22:48,10/02/07,SE,06MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342174,O,151,11:22:54,10/02/07,SSE,05MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342180,T,151,11:23:00,10/02/07,SSE,05MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342186,Y,151,11:23:06,10/02/07,ESE,05MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342192,A,151,11:23:12,10/02/07,SSE,05MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342198,F,151,11:23:18,10/02/07,SSE,05MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342204,Z,151,11:23:24,10/02/07,SE,06MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342210,P,151,11:23:30,10/02/07,SE,09MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342216,X,151,11:23:36,10/02/07,SSE,07MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342222,Z,151,11:23:42,10/02/07,SE,07MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342228,K,151,11:23:48,10/02/07,S,07MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342234,L,151,11:23:54,10/02/07,SSE,08MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342240,K,151,11:24:00,10/02/07,SSE,05MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342246,J,151,11:24:06,10/02/07,SE,05MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342252,C,151,11:24:12,10/02/07,SSE,07MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342258,Q,151,11:24:18,10/02/07,ESE,07MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342264,A,151,11:24:24,10/02/07,SSE,06MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342270,I,151,11:24:30,10/02/07,SE,06MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342276,T,151,11:24:36,10/02/07,SE,05MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342282,S,151,11:24:42,10/02/07,ESE,06MPH,002K,460F,064F,090%,29.75F,00.31\"D,00.32\"M,00.60\"R\n1191342288,R,151,11:24:48,10/02/07,SE,06MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342294,V,151,11:24:54,10/02/07,SE,07MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342300,D,151,11:25:00,10/02/07,SE,06MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342306,B,151,11:25:06,10/02/07,S,05MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342312,F,151,11:25:12,10/02/07,SSE,05MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342318,N,151,11:25:18,10/02/07,S,05MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342324,S,151,11:25:24,10/02/07,S,05MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342330,C,151,11:25:30,10/02/07,SSE,04MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342336,K,151,11:25:36,10/02/07,SSE,04MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342342,G,151,11:25:42,10/02/07,SSE,06MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342348,R,151,11:25:48,10/02/07,ESE,05MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342354,M,151,11:25:54,10/02/07,SE,06MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342360,T,151,11:26:00,10/02/07,SSE,07MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342366,B,151,11:26:06,10/02/07,SE,08MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342372,G,151,11:26:12,10/02/07,S,08MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342378,R,151,11:26:18,10/02/07,SSE,08MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342384,V,151,11:26:24,10/02/07,SE,07MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342390,D,151,11:26:30,10/02/07,SSE,08MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342396,F,151,11:26:36,10/02/07,SSE,06MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342402,H,151,11:26:42,10/02/07,SSE,08MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342408,S,151,11:26:48,10/02/07,SSE,07MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342414,S,151,11:26:54,10/02/07,SSE,08MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342420,O,151,11:27:00,10/02/07,SSE,07MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342426,N,151,11:27:06,10/02/07,SE,06MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342432,S,151,11:27:12,10/02/07,SE,06MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342438,D,151,11:27:18,10/02/07,SE,05MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342444,Y,151,11:27:24,10/02/07,SSE,04MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342450,D,151,11:27:30,10/02/07,SE,06MPH,002K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342456,C,151,11:27:36,10/02/07,ESE,06MPH,001K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342462,A,151,11:27:42,10/02/07,SE,05MPH,001K,460F,064F,090%,29.76F,00.32\"D,00.33\"M,00.60\"R\n1191342468,C,151,11:27:48,10/02/07,SSE,05MPH,001K,460F,064F,090%,29.76F,00.32\"D,00.33\"M,00.60\"R\n1191342474,E,151,11:27:54,10/02/07,SE,05MPH,001K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342480,S,151,11:28:00,10/02/07,S,08MPH,001K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342486,T,151,11:28:06,10/02/07,SSE,06MPH,001K,460F,064F,090%,29.76F,00.32\"D,00.33\"M,00.60\"R\n1191342492,A,151,11:28:12,10/02/07,SSE,08MPH,001K,460F,064F,090%,29.76F,00.32\"D,00.33\"M,00.60\"R\n1191342498,Z,151,11:28:18,10/02/07,S,07MPH,001K,460F,064F,090%,29.76F,00.32\"D,00.33\"M,00.60\"R\n1191342504,Y,151,11:28:24,10/02/07,SE,07MPH,001K,460F,064F,090%,29.75F,00.32\"D,00.33\"M,00.60\"R\n1191342510,D,151,11:28:30,10/02/07,SE,06MPH,001K,460F,064F,090%,29.75F,00.33\"D,00.34\"M,00.60\"R\n1191342516,V,151,11:28:36,10/02/07,SSE,08MPH,001K,460F,064F,090%,29.76F,00.33\"D,00.34\"M,00.60\"R\n1191342522,Y,151,11:28:42,10/02/07,S,08MPH,001K,460F,064F,090%,29.76F,00.33\"D,00.34\"M,00.60\"R\n1191342528,J,151,11:28:48,10/02/07,SSE,06MPH,001K,460F,064F,090%,29.76F,00.33\"D,00.34\"M,00.60\"R\n1191342534,I,151,11:28:54,10/02/07,SE,06MPH,001K,460F,064F,090%,29.76F,00.33\"D,00.34\"M,00.60\"R\n1191342540,Z,151,11:29:00,10/02/07,SE,06MPH,001K,460F,064F,090%,29.76F,00.33\"D,00.34\"M,00.60\"R\n1191342546,X,151,11:29:06,10/02/07,SE,06MPH,001K,460F,064F,090%,29.75F,00.33\"D,00.34\"M,00.60\"R\n1191342552,I,151,11:29:12,10/02/07,SSE,09MPH,001K,460F,064F,090%,29.75F,00.33\"D,00.34\"M,00.60\"R\n1191342558,E,151,11:29:18,10/02/07,SE,10MPH,001K,460F,064F,090%,29.76F,00.33\"D,00.34\"M,00.60\"R\n1191342564,M,151,11:29:24,10/02/07,SE,08MPH,001K,460F,064F,090%,29.75F,00.33\"D,00.34\"M,00.60\"R\n1191342570,J,151,11:29:30,10/02/07,SE,08MPH,001K,460F,064F,090%,29.75F,00.33\"D,00.34\"M,00.60\"R\n1191342576,R,151,11:29:36,10/02/07,SE,06MPH,001K,460F,064F,090%,29.75F,00.33\"D,00.34\"M,00.60\"R\n1191342582,G,151,11:29:42,10/02/07,SE,05MPH,001K,460F,064F,090%,29.75F,00.33\"D,00.34\"M,00.60\"R\n1191342588,L,151,11:29:48,10/02/07,SSE,04MPH,001K,460F,064F,090%,29.75F,00.33\"D,00.34\"M,00.60\"R\n1191342594,J,151,11:29:54,10/02/07,SE,04MPH,001K,460F,064F,090%,29.75F,00.33\"D,00.34\"M,00.60\"R\n1191342600,T,151,11:30:00,10/02/07,SE,03MPH,001K,460F,064F,090%,29.75F,00.33\"D,00.34\"M,00.60\"R\n1191342606,S,151,11:30:06,10/02/07,ESE,04MPH,001K,460F,064F,090%,29.75F,00.34\"D,00.35\"M,00.60\"R\n1191342612,W,151,11:30:12,10/02/07,S,05MPH,001K,460F,064F,090%,29.75F,00.34\"D,00.35\"M,00.60\"R\n1191342618,R,151,11:30:18,10/02/07,SSE,04MPH,001K,460F,064F,090%,29.75F,00.34\"D,00.35\"M,00.60\"R\n1191342624,C,151,11:30:24,10/02/07,SE,05MPH,001K,460F,064F,090%,29.75F,00.34\"D,00.35\"M,00.60\"R\n1191342630,L,151,11:30:30,10/02/07,SE,05MPH,001K,460F,064F,090%,29.75F,00.34\"D,00.35\"M,00.60\"R\n1191342636,P,151,11:30:36,10/02/07,SE,03MPH,001K,460F,064F,090%,29.75F,00.34\"D,00.35\"M,00.60\"R\n1191342642,L,151,11:30:42,10/02/07,SSE,03MPH,001K,460F,064F,090%,29.75F,00.34\"D,00.35\"M,00.60\"R\n1191342648,K,151,11:30:48,10/02/07,SE,04MPH,001K,460F,064F,090%,29.75F,00.34\"D,00.35\"M,00.60\"R\n1191342654,G,151,11:30:54,10/02/07,SSE,06MPH,001K,460F,064F,090%,29.75F,00.34\"D,00.35\"M,00.60\"R\n1191342660,L,151,11:31:00,10/02/07,ESE,05MPH,001K,460F,064F,090%,29.74F,00.34\"D,00.35\"M,00.60\"R\n1191342666,X,151,11:31:06,10/02/07,SSE,03MPH,001K,460F,064F,090%,29.74F,00.34\"D,00.35\"M,00.60\"R\n1191342672,F,151,11:31:12,10/02/07,ESE,03MPH,001K,460F,064F,090%,29.74F,00.34\"D,00.35\"M,00.60\"R\n1191342678,E,151,11:31:18,10/02/07,ESE,03MPH,001K,460F,064F,090%,29.74F,00.34\"D,00.35\"M,00.60\"R\n1191342684,P,151,11:31:24,10/02/07,ESE,03MPH,001K,460F,064F,090%,29.74F,00.34\"D,00.35\"M,00.60\"R\n1191342690,T,151,11:31:30,10/02/07,E,03MPH,001K,460F,064F,090%,29.74F,00.34\"D,00.35\"M,00.60\"R\n1191342696,E,151,11:31:36,10/02/07,E,03MPH,001K,460F,064F,090%,29.74F,00.34\"D,00.35\"M,00.60\"R\n1191342702,G,151,11:31:42,10/02/07,E,03MPH,001K,460F,064F,090%,29.74F,00.34\"D,00.35\"M,00.60\"R\n1191342708,O,151,11:31:48,10/02/07,ESE,02MPH,001K,460F,064F,090%,29.74F,00.34\"D,00.35\"M,00.60\"R\n1191342714,K,151,11:31:54,10/02/07,SE,02MPH,001K,460F,064F,090%,29.74F,00.34\"D,00.35\"M,00.60\"R\n1191342720,P,151,11:32:00,10/02/07,ESE,03MPH,001K,460F,064F,090%,29.74F,00.34\"D,00.35\"M,00.60\"R\n1191342726,U,151,11:32:06,10/02/07,E,02MPH,001K,460F,064F,090%,29.74F,00.34\"D,00.35\"M,00.60\"R\n1191342732,E,151,11:32:12,10/02/07,ESE,02MPH,001K,460F,064F,090%,29.74F,00.34\"D,00.35\"M,00.60\"R\n1191342738,J,151,11:32:18,10/02/07,ESE,03MPH,001K,460F,064F,090%,29.74F,00.34\"D,00.35\"M,00.60\"R\n1191342744,O,151,11:32:24,10/02/07,ESE,03MPH,001K,460F,064F,090%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342750,Y,151,11:32:30,10/02/07,ESE,02MPH,001K,460F,064F,090%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342756,C,151,11:32:36,10/02/07,ESE,03MPH,001K,460F,064F,090%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342762,G,151,11:32:42,10/02/07,ESE,02MPH,001K,460F,064F,090%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342768,I,151,11:32:48,10/02/07,ESE,02MPH,001K,460F,064F,090%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342774,K,151,11:32:54,10/02/07,E,03MPH,001K,460F,064F,090%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342780,O,151,11:33:00,10/02/07,E,05MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342786,Z,151,11:33:06,10/02/07,ESE,04MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342792,K,151,11:33:12,10/02/07,E,04MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342798,P,151,11:33:18,10/02/07,SE,03MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342804,T,151,11:33:24,10/02/07,SE,03MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342810,Y,151,11:33:30,10/02/07,ESE,04MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342816,W,151,11:33:36,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342822,A,151,11:33:42,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342828,F,151,11:33:48,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342834,E,151,11:33:54,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342840,S,151,11:34:00,10/02/07,SE,03MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342846,X,151,11:34:06,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342852,E,151,11:34:12,10/02/07,ESE,02MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342858,P,151,11:34:18,10/02/07,SE,03MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342864,A,151,11:34:24,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342870,Y,151,11:34:30,10/02/07,SE,02MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342876,F,151,11:34:36,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342882,Q,151,11:34:42,10/02/07,ESE,02MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342888,X,151,11:34:48,10/02/07,ESE,04MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342894,I,151,11:34:54,10/02/07,ESE,05MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191342900,J,151,11:35:00,10/02/07,ESE,04MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342906,O,151,11:35:06,10/02/07,ESE,04MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191342912,V,151,11:35:12,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191342918,U,151,11:35:18,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.74F,00.35\"D,00.36\"M,00.60\"R\n1191342924,E,151,11:35:24,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191342930,G,151,11:35:30,10/02/07,E,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191342936,L,151,11:35:36,10/02/07,SSE,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191342942,T,151,11:35:42,10/02/07,ESE,05MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191342948,K,151,11:35:48,10/02/07,S,04MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191342954,Q,151,11:35:54,10/02/07,SE,05MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191342960,A,151,11:36:00,10/02/07,ESE,04MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191342966,I,151,11:36:06,10/02/07,ESE,04MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191342972,W,151,11:36:12,10/02/07,SE,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191342978,A,151,11:36:18,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191342984,F,151,11:36:24,10/02/07,NE,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191342990,K,151,11:36:30,10/02/07,ENE,02MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191342996,V,151,11:36:36,10/02/07,E,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343002,Z,151,11:36:42,10/02/07,ESE,04MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343008,K,151,11:36:48,10/02/07,SE,06MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343014,R,151,11:36:54,10/02/07,ESE,05MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343020,W,151,11:37:00,10/02/07,SE,06MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343026,P,151,11:37:06,10/02/07,ESE,06MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343032,T,151,11:37:12,10/02/07,ESE,04MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343038,E,151,11:37:18,10/02/07,ENE,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343044,G,151,11:37:24,10/02/07,E,04MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343050,L,151,11:37:30,10/02/07,E,04MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343056,N,151,11:37:36,10/02/07,ESE,05MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343062,A,151,11:37:42,10/02/07,ESE,04MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343068,V,151,11:37:48,10/02/07,SE,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343074,X,151,11:37:54,10/02/07,SE,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343080,C,151,11:38:00,10/02/07,ENE,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343086,F,151,11:38:06,10/02/07,ESE,05MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343092,H,151,11:38:12,10/02/07,SE,05MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343098,O,151,11:38:18,10/02/07,SE,05MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343104,S,151,11:38:24,10/02/07,ESE,06MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343110,G,151,11:38:30,10/02/07,ESE,04MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343116,X,151,11:38:36,10/02/07,E,05MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343122,F,151,11:38:42,10/02/07,ESE,04MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343128,N,151,11:38:48,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343134,A,151,11:38:54,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343140,W,151,11:39:00,10/02/07,SE,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343146,E,151,11:39:06,10/02/07,SE,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343152,L,151,11:39:12,10/02/07,S,03MPH,001K,460F,064F,091%,29.73F,00.35\"D,00.36\"M,00.60\"R\n1191343158,W,151,11:39:18,10/02/07,SE,03MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343164,P,151,11:39:24,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343170,Y,151,11:39:30,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343176,I,151,11:39:36,10/02/07,ESE,05MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343182,K,151,11:39:42,10/02/07,E,05MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343188,U,151,11:39:48,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343194,B,151,11:39:54,10/02/07,ESE,05MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343200,J,151,11:40:00,10/02/07,E,05MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343206,Q,151,11:40:06,10/02/07,ESE,04MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343212,B,151,11:40:12,10/02/07,SE,05MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343218,I,151,11:40:18,10/02/07,SE,03MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343224,S,151,11:40:24,10/02/07,ESE,04MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343230,T,151,11:40:30,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343236,B,151,11:40:36,10/02/07,E,03MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343242,I,151,11:40:42,10/02/07,SE,05MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343248,K,151,11:40:48,10/02/07,SE,05MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343254,P,151,11:40:54,10/02/07,SE,04MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343260,Q,151,11:41:00,10/02/07,SE,05MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343266,J,151,11:41:06,10/02/07,SE,05MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343272,L,151,11:41:12,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343278,W,151,11:41:18,10/02/07,SE,03MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343284,Y,151,11:41:24,10/02/07,SSE,03MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343290,Y,151,11:41:30,10/02/07,SE,05MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343296,P,151,11:41:36,10/02/07,SE,05MPH,001K,460F,064F,091%,29.74F,00.36\"D,00.37\"M,00.60\"R\n1191343302,X,151,11:41:42,10/02/07,SSE,07MPH,001K,460F,064F,091%,29.74F,00.36\"D,00.37\"M,00.60\"R\n1191343308,Y,151,11:41:48,10/02/07,SE,08MPH,001K,460F,064F,091%,29.74F,00.36\"D,00.37\"M,00.60\"R\n1191343314,G,151,11:41:54,10/02/07,SE,07MPH,001K,460F,064F,091%,29.74F,00.36\"D,00.37\"M,00.60\"R\n1191343320,L,151,11:42:00,10/02/07,ESE,07MPH,001K,460F,064F,091%,29.74F,00.36\"D,00.37\"M,00.60\"R\n1191343326,Z,151,11:42:06,10/02/07,ESE,05MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343332,K,151,11:42:12,10/02/07,ESE,05MPH,001K,460F,064F,091%,29.74F,00.36\"D,00.37\"M,00.60\"R\n1191343338,M,151,11:42:18,10/02/07,ESE,05MPH,001K,460F,064F,091%,29.74F,00.36\"D,00.37\"M,00.60\"R\n1191343344,W,151,11:42:24,10/02/07,SE,05MPH,001K,460F,064F,091%,29.74F,00.36\"D,00.37\"M,00.60\"R\n1191343350,B,151,11:42:30,10/02/07,SE,05MPH,001K,460F,064F,091%,29.73F,00.36\"D,00.37\"M,00.60\"R\n1191343356,P,151,11:42:36,10/02/07,S,05MPH,001K,460F,064F,091%,29.74F,00.36\"D,00.37\"M,00.60\"R\n1191343362,T,151,11:42:42,10/02/07,SE,05MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343368,K,151,11:42:48,10/02/07,SE,06MPH,001K,460F,064F,091%,29.74F,00.37\"D,00.38\"M,00.60\"R\n1191343374,L,151,11:42:54,10/02/07,SSE,06MPH,001K,460F,064F,091%,29.74F,00.37\"D,00.38\"M,00.60\"R\n1191343380,T,151,11:43:00,10/02/07,SE,07MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343386,X,151,11:43:06,10/02/07,SE,07MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343392,O,151,11:43:12,10/02/07,SE,05MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343398,J,151,11:43:18,10/02/07,SSE,06MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343404,S,151,11:43:24,10/02/07,SSE,08MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343410,O,151,11:43:30,10/02/07,SE,08MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343416,F,151,11:43:36,10/02/07,SE,07MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343422,E,151,11:43:42,10/02/07,ESE,06MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343428,V,151,11:43:48,10/02/07,ESE,05MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343434,Z,151,11:43:54,10/02/07,ESE,06MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343440,K,151,11:44:00,10/02/07,SE,05MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343446,M,151,11:44:06,10/02/07,SE,05MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343452,X,151,11:44:12,10/02/07,SE,03MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343458,V,151,11:44:18,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343464,D,151,11:44:24,10/02/07,ESE,03MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343470,F,151,11:44:30,10/02/07,SSE,05MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343476,V,151,11:44:36,10/02/07,SE,05MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343482,U,151,11:44:42,10/02/07,SE,05MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343488,I,151,11:44:48,10/02/07,ESE,06MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343494,H,151,11:44:54,10/02/07,ESE,06MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343500,L,151,11:45:00,10/02/07,ESE,05MPH,001K,460F,064F,091%,29.73F,00.37\"D,00.38\"M,00.60\"R\n1191343506,M,151,11:45:06,10/02/07,SE,07MPH,001K,460F,064F,091%,29.73F,00.38\"D,00.39\"M,00.60\"R\n1191343512,U,151,11:45:12,10/02/07,SE,06MPH,001K,460F,064F,091%,29.73F,00.38\"D,00.39\"M,00.60\"R\n1191343518,P,151,11:45:18,10/02/07,ESE,07MPH,001K,460F,064F,091%,29.73F,00.38\"D,00.39\"M,00.60\"R\n1191343524,X,151,11:45:24,10/02/07,SSE,05MPH,001K,460F,064F,091%,29.73F,00.38\"D,00.39\"M,00.60\"R\n1191343530,Y,151,11:45:30,10/02/07,SE,06MPH,001K,460F,064F,091%,29.73F,00.38\"D,00.39\"M,00.60\"R\n1191343536,M,151,11:45:36,10/02/07,SE,08MPH,001K,460F,064F,091%,29.73F,00.38\"D,00.39\"M,00.60\"R\n1191343542,O,151,11:45:42,10/02/07,SE,08MPH,001K,460F,064F,091%,29.73F,00.38\"D,00.39\"M,00.60\"R\n1191343548,T,151,11:45:48,10/02/07,SSE,07MPH,001K,460F,064F,091%,29.73F,00.38\"D,00.39\"M,00.60\"R\n1191343554,L,151,11:45:54,10/02/07,SE,06MPH,001K,460F,064F,091%,29.74F,00.38\"D,00.39\"M,00.60\"R\n1191343560,V,151,11:46:00,10/02/07,SSE,08MPH,001K,460F,064F,091%,29.73F,00.38\"D,00.39\"M,00.60\"R\n1191343566,R,151,11:46:06,10/02/07,SE,08MPH,001K,460F,064F,091%,29.73F,00.38\"D,00.39\"M,00.60\"R\n1191343572,C,151,11:46:12,10/02/07,SE,08MPH,001K,460F,064F,091%,29.74F,00.38\"D,00.39\"M,00.60\"R\n1191343578,E,151,11:46:18,10/02/07,ESE,06MPH,001K,460F,064F,091%,29.74F,00.38\"D,00.39\"M,00.60\"R\n1191343584,O,151,11:46:24,10/02/07,SE,08MPH,001K,460F,064F,091%,29.74F,00.38\"D,00.39\"M,00.60\"R\n1191343590,Q,151,11:46:30,10/02/07,SE,07MPH,001K,460F,064F,091%,29.74F,00.38\"D,00.39\"M,00.60\"R\n1191343596,S,151,11:46:36,10/02/07,SE,06MPH,001K,460F,064F,091%,29.74F,00.38\"D,00.39\"M,00.60\"R\n1191343602,R,151,11:46:42,10/02/07,SE,08MPH,001K,460F,064F,091%,29.74F,00.38\"D,00.39\"M,00.60\"R\n1191343608,Z,151,11:46:48,10/02/07,S,08MPH,001K,460F,064F,091%,29.74F,00.38\"D,00.39\"M,00.60\"R\n1191343614,A,151,11:46:54,10/02/07,SE,07MPH,001K,460F,064F,091%,29.74F,00.39\"D,00.40\"M,00.60\"R\n1191343620,F,151,11:47:00,10/02/07,SE,06MPH,001K,460F,064F,091%,29.74F,00.39\"D,00.40\"M,00.60\"R\n1191343626,H,151,11:47:06,10/02/07,SE,05MPH,001K,460F,064F,091%,29.74F,00.39\"D,00.40\"M,00.60\"R\n1191343632,Q,151,11:47:12,10/02/07,S,06MPH,001K,460F,064F,091%,29.74F,00.39\"D,00.40\"M,00.60\"R\n1191343638,P,151,11:47:18,10/02/07,SSE,05MPH,001K,460F,064F,091%,29.74F,00.39\"D,00.40\"M,00.60\"R\n1191343644,X,151,11:47:24,10/02/07,SSW,05MPH,001K,460F,064F,091%,29.74F,00.39\"D,00.40\"M,00.60\"R\n1191343650,B,151,11:47:30,10/02/07,SE,08MPH,001K,460F,064F,091%,29.74F,00.39\"D,00.40\"M,00.60\"R\n1191343656,D,151,11:47:36,10/02/07,SE,08MPH,001K,460F,064F,091%,29.74F,00.39\"D,00.40\"M,00.60\"R\n1191343662,G,151,11:47:42,10/02/07,SE,06MPH,001K,460F,064F,091%,29.74F,00.39\"D,00.40\"M,00.60\"R\n1191343668,L,151,11:47:48,10/02/07,SE,07MPH,001K,460F,064F,091%,29.74F,00.39\"D,00.40\"M,00.60\"R\n1191343674,T,151,11:47:54,10/02/07,SE,08MPH,001K,460F,064F,091%,29.74F,00.39\"D,00.40\"M,00.60\"R\n1191343680,K,151,11:48:00,10/02/07,SSE,08MPH,001K,460F,064F,091%,29.74F,00.39\"D,00.40\"M,00.60\"R\n1191343686,M,151,11:48:06,10/02/07,SSE,08MPH,001K,460F,064F,091%,29.74F,00.39\"D,00.40\"M,00.60\"R\n1191343692,T,151,11:48:12,10/02/07,SSE,08MPH,001K,460F,064F,091%,29.74F,00.39\"D,00.40\"M,00.60\"R\n1191343698,B,151,11:48:18,10/02/07,S,08MPH,001K,460F,064F,091%,29.75F,00.39\"D,00.40\"M,00.60\"R\n1191343704,G,151,11:48:24,10/02/07,S,06MPH,001K,460F,064F,091%,29.75F,00.39\"D,00.40\"M,00.60\"R\n1191343710,E,151,11:48:30,10/02/07,SE,05MPH,001K,460F,064F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343716,L,151,11:48:36,10/02/07,ESE,04MPH,001K,460F,064F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343722,K,151,11:48:42,10/02/07,S,03MPH,001K,460F,064F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343728,S,151,11:48:48,10/02/07,SE,04MPH,001K,460F,064F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343734,D,151,11:48:54,10/02/07,S,05MPH,001K,460F,064F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343740,I,151,11:49:00,10/02/07,SSE,06MPH,001K,460F,064F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343746,P,151,11:49:06,10/02/07,SSE,06MPH,001K,460F,064F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343752,X,151,11:49:12,10/02/07,SSE,06MPH,001K,460F,064F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343758,F,151,11:49:18,10/02/07,SE,05MPH,001K,460F,064F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343764,K,151,11:49:24,10/02/07,SSE,05MPH,001K,460F,064F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343770,P,151,11:49:30,10/02/07,SE,05MPH,001K,460F,065F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343776,N,151,11:49:36,10/02/07,SSE,05MPH,001K,460F,064F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343782,U,151,11:49:42,10/02/07,ESE,05MPH,001K,460F,064F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343788,I,151,11:49:48,10/02/07,E,05MPH,001K,460F,064F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343794,D,151,11:49:54,10/02/07,ESE,05MPH,001K,460F,064F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343800,N,151,11:50:00,10/02/07,S,08MPH,001K,460F,065F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343806,K,151,11:50:06,10/02/07,SSE,04MPH,001K,460F,064F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343812,S,151,11:50:12,10/02/07,ESE,05MPH,001K,460F,065F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343818,T,151,11:50:18,10/02/07,SE,05MPH,001K,460F,065F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343824,Y,151,11:50:24,10/02/07,SSE,05MPH,001K,460F,065F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343830,A,151,11:50:30,10/02/07,ESE,04MPH,001K,460F,065F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343836,H,151,11:50:36,10/02/07,SSE,06MPH,001K,460F,065F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343842,J,151,11:50:42,10/02/07,SE,06MPH,001K,460F,065F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343848,A,151,11:50:48,10/02/07,S,08MPH,001K,460F,065F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343854,H,151,11:50:54,10/02/07,S,07MPH,001K,460F,065F,091%,29.75F,00.40\"D,00.41\"M,00.60\"R\n1191343860,M,151,11:51:00,10/02/07,SSE,07MPH,001K,460F,065F,091%,29.75F,00.41\"D,00.42\"M,00.60\"R\n1191343866,Q,151,11:51:06,10/02/07,SE,08MPH,001K,460F,065F,091%,29.75F,00.41\"D,00.42\"M,00.60\"R\n1191343872,S,151,11:51:12,10/02/07,ESE,05MPH,001K,460F,065F,091%,29.75F,00.41\"D,00.42\"M,00.60\"R\n1191343878,D,151,11:51:18,10/02/07,SE,06MPH,001K,460F,065F,091%,29.75F,00.41\"D,00.42\"M,00.60\"R\n1191343884,F,151,11:51:24,10/02/07,S,08MPH,001K,460F,065F,091%,29.75F,00.41\"D,00.42\"M,00.60\"R\n1191343890,N,151,11:51:30,10/02/07,ESE,07MPH,001K,460F,065F,091%,29.75F,00.41\"D,00.42\"M,00.60\"R\n1191343896,R,151,11:51:36,10/02/07,SSE,06MPH,001K,460F,065F,091%,29.75F,00.41\"D,00.42\"M,00.60\"R\n1191343902,W,151,11:51:42,10/02/07,SE,07MPH,001K,460F,065F,091%,29.75F,00.41\"D,00.42\"M,00.60\"R\n1191343908,E,151,11:51:48,10/02/07,SSE,07MPH,001K,460F,065F,091%,29.75F,00.41\"D,00.42\"M,00.60\"R\n1191343914,S,151,11:51:54,10/02/07,SE,06MPH,001K,460F,065F,091%,29.75F,00.41\"D,00.42\"M,00.60\"R\n1191343920,D,151,11:52:00,10/02/07,SE,07MPH,001K,460F,065F,091%,29.75F,00.41\"D,00.42\"M,00.60\"R\n1191343926,N,151,11:52:06,10/02/07,S,06MPH,001K,460F,065F,091%,29.75F,00.41\"D,00.42\"M,00.60\"R\n1191343932,P,151,11:52:12,10/02/07,SE,05MPH,002K,460F,065F,091%,29.75F,00.42\"D,00.43\"M,00.60\"R\n1191343938,U,151,11:52:18,10/02/07,SE,05MPH,002K,460F,065F,091%,29.75F,00.42\"D,00.43\"M,00.60\"R\n1191343944,E,151,11:52:24,10/02/07,SSE,06MPH,002K,460F,065F,091%,29.75F,00.42\"D,00.43\"M,00.60\"R\n1191343950,P,151,11:52:30,10/02/07,S,08MPH,002K,460F,065F,091%,29.75F,00.42\"D,00.43\"M,00.60\"R\n1191343956,X,151,11:52:36,10/02/07,SSE,07MPH,002K,460F,065F,091%,29.75F,00.42\"D,00.43\"M,00.60\"R\n1191343962,F,151,11:52:42,10/02/07,SE,08MPH,002K,460F,065F,091%,29.75F,00.43\"D,00.44\"M,00.60\"R\n1191343968,H,151,11:52:48,10/02/07,S,08MPH,002K,460F,065F,091%,29.75F,00.43\"D,00.44\"M,00.60\"R\n1191343974,L,151,11:52:54,10/02/07,SE,06MPH,002K,460F,065F,091%,29.75F,00.43\"D,00.44\"M,00.60\"R\n1191343980,W,151,11:53:00,10/02/07,ESE,05MPH,002K,460F,065F,091%,29.75F,00.43\"D,00.44\"M,00.60\"R\n1191343986,D,151,11:53:06,10/02/07,SSE,08MPH,002K,460F,065F,091%,29.74F,00.43\"D,00.44\"M,00.60\"R\n1191343992,I,151,11:53:12,10/02/07,SE,07MPH,002K,460F,065F,091%,29.75F,00.44\"D,00.45\"M,00.60\"R\n1191343998,V,151,11:53:18,10/02/07,SSE,06MPH,002K,460F,065F,091%,29.75F,00.44\"D,00.45\"M,00.60\"R\n1191344004,Z,151,11:53:24,10/02/07,SE,05MPH,002K,460F,065F,091%,29.75F,00.44\"D,00.45\"M,00.60\"R\n1191344010,Q,151,11:53:30,10/02/07,SE,05MPH,002K,460F,065F,091%,29.74F,00.44\"D,00.45\"M,00.60\"R\n1191344016,Y,151,11:53:36,10/02/07,SSE,08MPH,002K,460F,065F,091%,29.74F,00.44\"D,00.45\"M,00.60\"R\n1191344022,J,151,11:53:42,10/02/07,SSE,06MPH,002K,460F,065F,091%,29.74F,00.44\"D,00.45\"M,00.60\"R\n1191344028,R,151,11:53:48,10/02/07,SSE,08MPH,002K,460F,065F,091%,29.74F,00.44\"D,00.45\"M,00.60\"R\n1191344034,C,151,11:53:54,10/02/07,SE,09MPH,002K,460F,065F,091%,29.74F,00.44\"D,00.45\"M,00.60\"R\n1191344040,E,151,11:54:00,10/02/07,ESE,08MPH,002K,460F,065F,091%,29.74F,00.44\"D,00.45\"M,00.60\"R\n1191344046,I,151,11:54:06,10/02/07,SSE,06MPH,002K,460F,065F,091%,29.74F,00.45\"D,00.46\"M,00.60\"R\n1191344052,Z,151,11:54:12,10/02/07,ESE,05MPH,002K,460F,065F,091%,29.74F,00.45\"D,00.46\"M,00.60\"R\n1191344058,K,151,11:54:18,10/02/07,SSE,06MPH,002K,460F,065F,091%,29.74F,00.45\"D,00.46\"M,00.60\"R\n1191344064,S,151,11:54:24,10/02/07,ESE,06MPH,002K,460F,065F,091%,29.74F,00.45\"D,00.46\"M,00.60\"R\n1191344070,D,151,11:54:30,10/02/07,ESE,09MPH,002K,460F,065F,091%,29.74F,00.45\"D,00.46\"M,00.60\"R\n1191344076,K,151,11:54:36,10/02/07,ESE,08MPH,002K,460F,065F,091%,29.74F,00.45\"D,00.46\"M,00.60\"R\n1191344082,R,151,11:54:42,10/02/07,SSE,11MPH,002K,460F,065F,091%,29.74F,00.45\"D,00.46\"M,00.60\"R\n1191344088,T,151,11:54:48,10/02/07,SE,11MPH,002K,460F,065F,091%,29.74F,00.45\"D,00.46\"M,00.60\"R\n1191344094,E,151,11:54:54,10/02/07,ESE,09MPH,002K,460F,065F,091%,29.74F,00.45\"D,00.46\"M,00.60\"R\n1191344100,L,151,11:55:00,10/02/07,SE,10MPH,002K,460F,065F,092%,29.74F,00.45\"D,00.46\"M,00.60\"R\n1191344106,Y,151,11:55:06,10/02/07,SE,08MPH,002K,460F,065F,092%,29.74F,00.46\"D,00.47\"M,00.60\"R\n1191344112,F,151,11:55:12,10/02/07,SE,08MPH,002K,460F,065F,092%,29.74F,00.46\"D,00.47\"M,00.60\"R\n1191344118,P,151,11:55:18,10/02/07,ESE,07MPH,002K,460F,065F,092%,29.74F,00.46\"D,00.47\"M,00.60\"R\n1191344124,X,151,11:55:24,10/02/07,SSE,07MPH,002K,460F,065F,092%,29.74F,00.47\"D,00.48\"M,00.60\"R\n1191344130,F,151,11:55:30,10/02/07,SE,05MPH,002K,460F,065F,092%,29.74F,00.47\"D,00.48\"M,00.60\"R\n1191344136,J,151,11:55:36,10/02/07,ESE,05MPH,002K,460F,065F,092%,29.74F,00.47\"D,00.48\"M,00.60\"R\n1191344142,U,151,11:55:42,10/02/07,SE,07MPH,002K,460F,065F,092%,29.74F,00.47\"D,00.48\"M,00.60\"R\n1191344148,Z,151,11:55:48,10/02/07,SSE,06MPH,002K,460F,065F,092%,29.74F,00.48\"D,00.49\"M,00.60\"R\n1191344154,H,151,11:55:54,10/02/07,SE,09MPH,002K,460F,065F,092%,29.74F,00.48\"D,00.49\"M,00.60\"R\n1191344160,J,151,11:56:00,10/02/07,S,10MPH,002K,460F,065F,092%,29.74F,00.48\"D,00.49\"M,00.60\"R\n1191344166,A,151,11:56:06,10/02/07,SE,10MPH,002K,460F,065F,092%,29.74F,00.48\"D,00.49\"M,00.60\"R\n1191344172,H,151,11:56:12,10/02/07,SE,10MPH,002K,460F,065F,092%,29.74F,00.48\"D,00.49\"M,00.60\"R\n1191344178,V,151,11:56:18,10/02/07,SSE,10MPH,002K,460F,065F,092%,29.74F,00.48\"D,00.49\"M,00.60\"R\n1191344184,X,151,11:56:24,10/02/07,SE,08MPH,002K,460F,065F,092%,29.74F,00.48\"D,00.49\"M,00.60\"R\n1191344190,Z,151,11:56:30,10/02/07,SE,06MPH,002K,460F,065F,092%,29.74F,00.49\"D,00.50\"M,00.60\"R\n1191344196,Y,151,11:56:36,10/02/07,ESE,05MPH,002K,460F,065F,092%,29.74F,00.49\"D,00.50\"M,00.60\"R\n1191344202,T,151,11:56:42,10/02/07,SE,07MPH,002K,460F,065F,092%,29.74F,00.49\"D,00.50\"M,00.60\"R\n1191344208,E,151,11:56:48,10/02/07,SE,06MPH,001K,460F,065F,092%,29.74F,00.49\"D,00.50\"M,00.60\"R\n1191344214,P,151,11:56:54,10/02/07,SE,06MPH,001K,460F,065F,092%,29.74F,00.49\"D,00.50\"M,00.60\"R\n1191344220,U,151,11:57:00,10/02/07,SE,06MPH,001K,460F,065F,092%,29.75F,00.49\"D,00.50\"M,00.60\"R\n1191344226,E,151,11:57:06,10/02/07,SSE,06MPH,001K,460F,065F,092%,29.75F,00.49\"D,00.50\"M,00.60\"R\n1191344232,G,151,11:57:12,10/02/07,SSE,07MPH,001K,460F,065F,092%,29.74F,00.49\"D,00.50\"M,00.60\"R\n1191344238,W,151,11:57:18,10/02/07,SE,06MPH,001K,460F,065F,092%,29.75F,00.49\"D,00.50\"M,00.60\"R\n1191344244,B,151,11:57:24,10/02/07,SE,08MPH,001K,460F,065F,092%,29.74F,00.49\"D,00.50\"M,00.60\"R\n1191344250,I,151,11:57:30,10/02/07,S,07MPH,001K,460F,065F,092%,29.75F,00.49\"D,00.50\"M,00.60\"R\n1191344256,H,151,11:57:36,10/02/07,S,08MPH,001K,460F,065F,092%,29.75F,00.49\"D,00.50\"M,00.60\"R\n1191344262,S,151,11:57:42,10/02/07,SE,08MPH,001K,460F,065F,091%,29.75F,00.49\"D,00.50\"M,00.60\"R\n1191344268,G,151,11:57:48,10/02/07,ESE,06MPH,001K,460F,065F,092%,29.74F,00.49\"D,00.50\"M,00.60\"R\n1191344274,R,151,11:57:54,10/02/07,SSE,08MPH,002K,460F,065F,092%,29.75F,00.49\"D,00.50\"M,00.60\"R\n1191344280,S,151,11:58:00,10/02/07,SSE,08MPH,002K,460F,065F,091%,29.75F,00.49\"D,00.50\"M,00.60\"R\n1191344286,D,151,11:58:06,10/02/07,SE,06MPH,002K,460F,065F,091%,29.74F,00.50\"D,00.51\"M,00.60\"R\n1191344292,I,151,11:58:12,10/02/07,ESE,06MPH,002K,460F,065F,091%,29.75F,00.50\"D,00.51\"M,00.60\"R\n1191344298,Q,151,11:58:18,10/02/07,SSE,05MPH,002K,460F,065F,092%,29.75F,00.50\"D,00.51\"M,00.60\"R\n1191344304,U,151,11:58:24,10/02/07,SE,08MPH,002K,460F,065F,092%,29.75F,00.50\"D,00.51\"M,00.60\"R\n1191344310,Z,151,11:58:30,10/02/07,SE,06MPH,002K,460F,065F,092%,29.75F,00.50\"D,00.51\"M,00.60\"R\n1191344316,K,151,11:58:36,10/02/07,SE,06MPH,002K,460F,065F,092%,29.75F,00.51\"D,00.52\"M,00.60\"R\n1191344322,M,151,11:58:42,10/02/07,ESE,06MPH,002K,460F,065F,092%,29.75F,00.51\"D,00.52\"M,00.60\"R\n1191344328,U,151,11:58:48,10/02/07,SE,07MPH,002K,460F,065F,092%,29.75F,00.51\"D,00.52\"M,00.60\"R\n1191344334,Y,151,11:58:54,10/02/07,SSE,06MPH,002K,460F,065F,092%,29.75F,00.51\"D,00.52\"M,00.60\"R\n1191344340,C,151,11:59:00,10/02/07,ESE,12MPH,002K,460F,065F,092%,29.75F,00.51\"D,00.52\"M,00.60\"R\n1191344346,K,151,11:59:06,10/02/07,ESE,14MPH,002K,460F,065F,092%,29.75F,00.51\"D,00.52\"M,00.60\"R\n1191344352,P,151,11:59:12,10/02/07,ESE,15MPH,002K,460F,065F,092%,29.75F,00.51\"D,00.52\"M,00.60\"R\n1191344358,R,151,11:59:18,10/02/07,ESE,14MPH,002K,460F,065F,092%,29.75F,00.51\"D,00.52\"M,00.60\"R\n1191344364,Y,151,11:59:24,10/02/07,SE,11MPH,002K,460F,065F,092%,29.75F,00.51\"D,00.52\"M,00.60\"R\n1191344370,O,151,11:59:30,10/02/07,ESE,10MPH,003K,460F,065F,092%,29.75F,00.51\"D,00.52\"M,00.60\"R\n1191344376,W,151,11:59:36,10/02/07,SE,13MPH,003K,460F,065F,092%,29.75F,00.51\"D,00.52\"M,00.60\"R\n1191344382,E,151,11:59:42,10/02/07,SE,10MPH,003K,460F,065F,092%,29.75F,00.51\"D,00.52\"M,00.60\"R\n1191344388,P,151,11:59:48,10/02/07,SSE,10MPH,003K,460F,065F,092%,29.75F,00.51\"D,00.52\"M,00.60\"R\n1191344394,W,151,11:59:54,10/02/07,SSE,09MPH,003K,460F,065F,092%,29.75F,00.51\"D,00.52\"M,00.60\"R\n"
  },
  {
    "path": "htdocs/plotting/snet/data/STQI4_070506.txt",
    "content": "1178455500,T,173,07:45:00,05/06/07,ESE,34MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455506,F,173,07:45:06,05/06/07,ESE,31MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455512,O,173,07:45:12,05/06/07,ESE,27MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455518,A,173,07:45:18,05/06/07,ESE,24MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455524,J,173,07:45:24,05/06/07,ESE,31MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455530,R,173,07:45:30,05/06/07,ESE,26MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455536,D,173,07:45:36,05/06/07,E,34MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455542,M,173,07:45:42,05/06/07,E,29MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455548,Y,173,07:45:48,05/06/07,ESE,29MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455554,N,173,07:45:54,05/06/07,ESE,27MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455560,W,173,07:46:00,05/06/07,ESE,27MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455566,I,173,07:46:06,05/06/07,E,23MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455572,U,173,07:46:12,05/06/07,ESE,35MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455578,G,173,07:46:18,05/06/07,ESE,31MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455584,S,173,07:46:24,05/06/07,ESE,27MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455590,B,173,07:46:30,05/06/07,ESE,23MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455596,K,173,07:46:36,05/06/07,ESE,26MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455602,C,173,07:46:42,05/06/07,ESE,24MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455608,I,173,07:46:48,05/06/07,ESE,23MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455614,W,173,07:46:54,05/06/07,ENE,26MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455620,F,173,07:47:00,05/06/07,E,24MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455626,R,173,07:47:06,05/06/07,E,21MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455632,D,173,07:47:12,05/06/07,ESE,20MPH,000K,460F,060F,072%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455638,P,173,07:47:18,05/06/07,SE,17MPH,000K,460F,060F,072%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455644,Y,173,07:47:24,05/06/07,ESE,27MPH,000K,460F,060F,072%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455650,K,173,07:47:30,05/06/07,ESE,27MPH,000K,460F,060F,071%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455656,Q,173,07:47:36,05/06/07,ESE,21MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455662,F,173,07:47:42,05/06/07,E,21MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455668,I,173,07:47:48,05/06/07,ESE,23MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455674,U,173,07:47:54,05/06/07,ESE,21MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455680,J,173,07:48:00,05/06/07,ESE,18MPH,000K,460F,060F,072%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455686,V,173,07:48:06,05/06/07,E,17MPH,000K,460F,060F,072%,30.08R,00.00\"D,00.16\"M,00.00\"R\n1178455692,E,173,07:48:12,05/06/07,ESE,31MPH,000K,460F,060F,072%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455698,Q,173,07:48:18,05/06/07,ESE,29MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455704,Y,173,07:48:24,05/06/07,SE,28MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455710,N,173,07:48:30,05/06/07,ESE,20MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455716,T,173,07:48:36,05/06/07,ESE,22MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455722,I,173,07:48:42,05/06/07,ESE,32MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455728,U,173,07:48:48,05/06/07,ESE,21MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455734,D,173,07:48:54,05/06/07,ESE,26MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455740,J,173,07:49:00,05/06/07,ESE,32MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455746,V,173,07:49:06,05/06/07,ESE,23MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455752,B,173,07:49:12,05/06/07,SE,20MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455758,T,173,07:49:18,05/06/07,ESE,22MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455764,C,173,07:49:24,05/06/07,ESE,20MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455770,L,173,07:49:30,05/06/07,ESE,29MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455776,X,173,07:49:36,05/06/07,ESE,24MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455782,J,173,07:49:42,05/06/07,ESE,24MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455788,P,173,07:49:48,05/06/07,ESE,24MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455794,H,173,07:49:54,05/06/07,ESE,23MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455800,Q,173,07:50:00,05/06/07,E,23MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455806,C,173,07:50:06,05/06/07,ESE,23MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455812,I,173,07:50:12,05/06/07,ESE,36MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455818,T,173,07:50:18,05/06/07,ESE,35MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455824,F,173,07:50:24,05/06/07,ESE,24MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455830,R,173,07:50:30,05/06/07,ENE,31MPH,000K,460F,060F,071%,30.09R,00.00\"D,00.16\"M,00.00\"R\n1178455836,X,173,07:50:36,05/06/07,E,28MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455842,J,173,07:50:42,05/06/07,E,25MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455848,S,173,07:50:48,05/06/07,E,27MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455854,B,173,07:50:54,05/06/07,ESE,24MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455860,E,173,07:51:00,05/06/07,E,24MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455866,T,173,07:51:06,05/06/07,E,18MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455872,C,173,07:51:12,05/06/07,ESE,19MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455878,I,173,07:51:18,05/06/07,ESE,18MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455884,O,173,07:51:24,05/06/07,ESE,14MPH,000K,460F,060F,072%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455890,D,173,07:51:30,05/06/07,ESE,14MPH,000K,460F,060F,072%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455896,M,173,07:51:36,05/06/07,ESE,14MPH,000K,460F,060F,072%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455902,Y,173,07:51:42,05/06/07,E,24MPH,000K,460F,060F,072%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455908,H,173,07:51:48,05/06/07,ESE,19MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455914,T,173,07:51:54,05/06/07,ESE,20MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455920,F,173,07:52:00,05/06/07,ESE,24MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455926,O,173,07:52:06,05/06/07,ESE,19MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455932,W,173,07:52:12,05/06/07,ESE,23MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455938,L,173,07:52:18,05/06/07,ESE,24MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455944,R,173,07:52:24,05/06/07,ESE,20MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455950,D,173,07:52:30,05/06/07,ESE,20MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455956,N,173,07:52:36,05/06/07,E,19MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455962,T,173,07:52:42,05/06/07,ESE,22MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455968,C,173,07:52:48,05/06/07,SE,23MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455974,L,173,07:52:54,05/06/07,ESE,19MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178455980,X,173,07:53:00,05/06/07,ESE,22MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178455986,F,173,07:53:06,05/06/07,ESE,18MPH,000K,460F,060F,071%,30.10R,00.00\"D,00.16\"M,00.00\"R\n1178455992,R,173,07:53:12,05/06/07,SE,28MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178455998,D,173,07:53:18,05/06/07,SE,19MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178456004,M,173,07:53:24,05/06/07,ESE,20MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178456010,Y,173,07:53:30,05/06/07,ESE,23MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178456016,H,173,07:53:36,05/06/07,ESE,21MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178456022,Q,173,07:53:42,05/06/07,ESE,19MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178456028,T,173,07:53:48,05/06/07,ESE,23MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178456034,C,173,07:53:54,05/06/07,ESE,27MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178456040,I,173,07:54:00,05/06/07,ESE,16MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178456046,R,173,07:54:06,05/06/07,ESE,22MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178456052,X,173,07:54:12,05/06/07,SSE,16MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178456058,J,173,07:54:18,05/06/07,SE,21MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178456064,P,173,07:54:24,05/06/07,ESE,29MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178456070,Y,173,07:54:30,05/06/07,E,29MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178456076,D,173,07:54:36,05/06/07,ESE,31MPH,000K,460F,060F,071%,30.11R,00.00\"D,00.16\"M,00.00\"R\n1178456082,S,173,07:54:42,05/06/07,ESE,29MPH,000K,460F,060F,071%,30.12R,00.00\"D,00.16\"M,00.00\"R\n1178456088,V,173,07:54:48,05/06/07,ESE,24MPH,000K,460F,060F,071%,30.12R,00.00\"D,00.16\"M,00.00\"R\n1178456094,E,173,07:54:54,05/06/07,SE,22MPH,000K,460F,060F,071%,30.12R,00.00\"D,00.16\"M,00.00\"R\n1178456100,Q,173,07:55:00,05/06/07,E,21MPH,000K,460F,060F,071%,30.12R,00.00\"D,00.16\"M,00.00\"R\n1178456106,C,173,07:55:06,05/06/07,ESE,19MPH,000K,460F,060F,071%,30.12R,00.00\"D,00.16\"M,00.00\"R\n1178456112,L,173,07:55:12,05/06/07,ESE,23MPH,000K,460F,060F,071%,30.12R,00.00\"D,00.16\"M,00.00\"R\n1178456118,T,173,07:55:18,05/06/07,ESE,16MPH,000K,460F,060F,071%,30.12R,00.00\"D,00.16\"M,00.00\"R\n1178456124,C,173,07:55:24,05/06/07,SE,21MPH,000K,460F,060F,071%,30.12R,00.00\"D,00.16\"M,00.00\"R\n1178456130,U,173,07:55:30,05/06/07,SE,18MPH,000K,460F,060F,071%,30.12R,00.00\"D,00.16\"M,00.00\"R\n1178456136,A,173,07:55:36,05/06/07,ESE,18MPH,000K,460F,060F,071%,30.13R,00.00\"D,00.16\"M,00.00\"R\n1178456142,O,173,07:55:42,05/06/07,ESE,12MPH,000K,460F,060F,071%,30.13R,00.00\"D,00.16\"M,00.00\"R\n1178456148,X,173,07:55:48,05/06/07,SE,09MPH,000K,460F,060F,071%,30.13R,00.00\"D,00.16\"M,00.00\"R\n1178456154,J,173,07:55:54,05/06/07,SSE,14MPH,000K,460F,060F,071%,30.13R,00.00\"D,00.16\"M,00.00\"R\n1178456160,S,173,07:56:00,05/06/07,E,16MPH,000K,460F,060F,071%,30.13R,00.00\"D,00.16\"M,00.00\"R\n1178456166,E,173,07:56:06,05/06/07,SE,15MPH,000K,460F,060F,071%,30.13R,00.00\"D,00.16\"M,00.00\"R\n1178456172,M,173,07:56:12,05/06/07,ESE,13MPH,000K,460F,060F,071%,30.13R,00.00\"D,00.16\"M,00.00\"R\n1178456178,B,173,07:56:18,05/06/07,S,07MPH,000K,460F,060F,071%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456184,H,173,07:56:24,05/06/07,ENE,06MPH,000K,460F,060F,071%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456190,M,173,07:56:30,05/06/07,ESE,15MPH,000K,459F,060F,071%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456196,Y,173,07:56:36,05/06/07,SSE,14MPH,000K,460F,060F,071%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456202,K,173,07:56:42,05/06/07,SSE,14MPH,000K,460F,060F,071%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456208,S,173,07:56:48,05/06/07,S,11MPH,000K,460F,060F,071%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456214,H,173,07:56:54,05/06/07,SSE,12MPH,000K,460F,060F,071%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178456220,Q,173,07:57:00,05/06/07,S,09MPH,000K,460F,060F,071%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178456226,C,173,07:57:06,05/06/07,S,06MPH,000K,460F,060F,071%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178456232,F,173,07:57:12,05/06/07,S,05MPH,000K,460F,060F,072%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178456238,X,173,07:57:18,05/06/07,SSW,08MPH,000K,460F,060F,072%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178456244,J,173,07:57:24,05/06/07,SW,09MPH,000K,460F,060F,072%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178456250,V,173,07:57:30,05/06/07,SW,10MPH,000K,460F,060F,072%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178456256,B,173,07:57:36,05/06/07,S,10MPH,000K,460F,060F,072%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178456262,Q,173,07:57:42,05/06/07,SSW,11MPH,000K,460F,060F,072%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178456268,W,173,07:57:48,05/06/07,SW,10MPH,000K,460F,060F,072%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178456274,L,173,07:57:54,05/06/07,SW,15MPH,000K,460F,060F,072%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178456280,T,173,07:58:00,05/06/07,SW,13MPH,000K,460F,060F,072%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178456286,C,173,07:58:06,05/06/07,SW,12MPH,000K,460F,060F,072%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178456292,R,173,07:58:12,05/06/07,SW,11MPH,000K,460F,060F,072%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178456298,D,173,07:58:18,05/06/07,SW,11MPH,000K,460F,060F,072%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178456304,L,173,07:58:24,05/06/07,SSW,13MPH,000K,460F,060F,072%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456310,A,173,07:58:30,05/06/07,SW,14MPH,000K,460F,060F,072%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456316,J,173,07:58:36,05/06/07,SW,20MPH,000K,460F,060F,072%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456322,V,173,07:58:42,05/06/07,SW,14MPH,000K,460F,060F,072%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456328,H,173,07:58:48,05/06/07,SW,18MPH,000K,460F,060F,072%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456334,J,173,07:58:54,05/06/07,SSW,16MPH,000K,460F,060F,072%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456340,Y,173,07:59:00,05/06/07,SW,13MPH,000K,460F,060F,072%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456346,K,173,07:59:06,05/06/07,SSW,14MPH,000K,460F,060F,072%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456352,T,173,07:59:12,05/06/07,SW,11MPH,000K,460F,060F,072%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456358,F,173,07:59:18,05/06/07,SW,16MPH,000K,460F,060F,072%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456364,R,173,07:59:24,05/06/07,SW,14MPH,000K,460F,060F,072%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456370,D,173,07:59:30,05/06/07,SW,14MPH,000K,460F,060F,072%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456376,M,173,07:59:36,05/06/07,SW,16MPH,000K,460F,060F,072%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456382,U,173,07:59:42,05/06/07,WSW,14MPH,000K,460F,060F,072%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456388,J,173,07:59:48,05/06/07,WSW,11MPH,000K,460F,060F,072%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456394,V,173,07:59:54,05/06/07,SSW,11MPH,000K,460F,060F,072%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456400,E,173,08:00:00,05/06/07,SW,13MPH,000K,460F,060F,072%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456406,T,173,08:00:06,05/06/07,SW,13MPH,000K,460F,060F,072%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456412,C,173,08:00:12,05/06/07,SW,11MPH,000K,460F,060F,072%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456418,N,173,08:00:18,05/06/07,WSW,08MPH,000K,460F,060F,072%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456424,Z,173,08:00:24,05/06/07,SW,07MPH,000K,460F,060F,072%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456430,L,173,08:00:30,05/06/07,SSW,12MPH,000K,460F,060F,072%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456436,U,173,08:00:36,05/06/07,SSW,09MPH,000K,460F,060F,072%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456442,J,173,08:00:42,05/06/07,SW,11MPH,000K,460F,060F,072%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456448,O,173,08:00:48,05/06/07,SSW,10MPH,000K,460F,060F,072%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456454,D,173,08:00:54,05/06/07,SSW,12MPH,000K,460F,060F,072%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456460,G,173,08:01:00,05/06/07,SW,09MPH,000K,460F,060F,072%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456466,S,173,08:01:06,05/06/07,SW,10MPH,000K,460F,060F,072%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456472,B,173,08:01:12,05/06/07,SW,10MPH,000K,460F,060F,073%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456478,N,173,08:01:18,05/06/07,SW,18MPH,000K,460F,060F,073%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456484,Q,173,08:01:24,05/06/07,WSW,15MPH,000K,460F,060F,073%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456490,F,173,08:01:30,05/06/07,WSW,16MPH,000K,460F,060F,073%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456496,R,173,08:01:36,05/06/07,W,19MPH,000K,460F,060F,073%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456502,A,173,08:01:42,05/06/07,SW,10MPH,000K,460F,060F,073%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456508,J,173,08:01:48,05/06/07,SW,11MPH,000K,460F,060F,073%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456514,V,173,08:01:54,05/06/07,SSW,11MPH,000K,460F,060F,073%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456520,K,173,08:02:00,05/06/07,SW,13MPH,000K,460F,060F,073%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456526,V,173,08:02:06,05/06/07,SW,10MPH,000K,460F,060F,073%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456532,H,173,08:02:12,05/06/07,SW,14MPH,000K,460F,060F,074%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456538,Q,173,08:02:18,05/06/07,SSW,09MPH,000K,460F,060F,074%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456544,Z,173,08:02:24,05/06/07,S,08MPH,000K,460F,060F,074%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456550,I,173,08:02:30,05/06/07,SSW,16MPH,000K,460F,060F,074%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456556,U,173,08:02:36,05/06/07,SW,18MPH,000K,460F,060F,074%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456562,A,173,08:02:42,05/06/07,WSW,13MPH,000K,460F,060F,074%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456568,L,173,08:02:48,05/06/07,SSW,11MPH,000K,460F,060F,074%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456574,A,173,08:02:54,05/06/07,SSW,18MPH,000K,460F,060F,074%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456580,J,173,08:03:00,05/06/07,SW,21MPH,000K,460F,060F,074%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456586,S,173,08:03:06,05/06/07,SW,16MPH,000K,460F,060F,074%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456592,B,173,08:03:12,05/06/07,SW,16MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456598,N,173,08:03:18,05/06/07,WSW,12MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456604,T,173,08:03:24,05/06/07,SW,12MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456610,T,173,08:03:30,05/06/07,SSW,09MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456616,C,173,08:03:36,05/06/07,SSW,12MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456622,I,173,08:03:42,05/06/07,SSW,11MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456628,O,173,08:03:48,05/06/07,S,13MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456634,A,173,08:03:54,05/06/07,SSW,10MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456640,G,173,08:04:00,05/06/07,SSW,13MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456646,P,173,08:04:06,05/06/07,SW,11MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456652,V,173,08:04:12,05/06/07,S,12MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456658,H,173,08:04:18,05/06/07,SSW,10MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456664,Q,173,08:04:24,05/06/07,S,10MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456670,Z,173,08:04:30,05/06/07,SSW,11MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178456676,E,173,08:04:36,05/06/07,SW,08MPH,000K,460F,060F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456682,T,173,08:04:42,05/06/07,S,10MPH,000K,460F,060F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456688,Z,173,08:04:48,05/06/07,S,10MPH,000K,460F,060F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456694,R,173,08:04:54,05/06/07,SSW,11MPH,000K,460F,060F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456700,A,173,08:05:00,05/06/07,S,13MPH,000K,460F,060F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456706,J,173,08:05:06,05/06/07,SSW,10MPH,000K,460F,060F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456712,M,173,08:05:12,05/06/07,SSW,12MPH,000K,460F,060F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456718,Y,173,08:05:18,05/06/07,S,11MPH,000K,460F,060F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456724,H,173,08:05:24,05/06/07,SSE,10MPH,000K,460F,060F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456730,T,173,08:05:30,05/06/07,S,08MPH,000K,460F,060F,076%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456736,B,173,08:05:36,05/06/07,S,10MPH,000K,460F,060F,076%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456742,Q,173,08:05:42,05/06/07,S,13MPH,000K,460F,060F,076%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178456748,Z,173,08:05:48,05/06/07,SSE,14MPH,000K,460F,060F,075%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178456754,L,173,08:05:54,05/06/07,S,18MPH,000K,460F,060F,075%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178456760,X,173,08:06:00,05/06/07,S,16MPH,000K,460F,060F,075%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178456766,J,173,08:06:06,05/06/07,S,18MPH,000K,460F,060F,075%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178456772,J,173,08:06:12,05/06/07,SSW,12MPH,000K,460F,060F,075%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178456778,Y,173,08:06:18,05/06/07,S,13MPH,000K,460F,060F,075%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178456784,E,173,08:06:24,05/06/07,SSE,11MPH,000K,460F,060F,075%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178456790,Q,173,08:06:30,05/06/07,SSE,14MPH,000K,460F,060F,075%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178456796,Z,173,08:06:36,05/06/07,ESE,13MPH,000K,460F,060F,075%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178456802,I,173,08:06:42,05/06/07,SSE,14MPH,000K,460F,060F,075%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178456808,U,173,08:06:48,05/06/07,SSE,12MPH,000K,460F,060F,075%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178456814,D,173,08:06:54,05/06/07,S,16MPH,000K,460F,060F,075%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178456820,I,173,08:07:00,05/06/07,SSE,16MPH,000K,460F,060F,075%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178456826,X,173,08:07:06,05/06/07,SE,16MPH,000K,460F,060F,075%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178456832,G,173,08:07:12,05/06/07,SSE,22MPH,000K,460F,060F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456838,S,173,08:07:18,05/06/07,SE,20MPH,000K,460F,060F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456844,E,173,08:07:24,05/06/07,SE,22MPH,000K,460F,060F,075%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178456850,Q,173,08:07:30,05/06/07,SE,21MPH,000K,460F,060F,075%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178456856,F,173,08:07:36,05/06/07,SSE,12MPH,000K,460F,060F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456862,R,173,08:07:42,05/06/07,ESE,15MPH,000K,460F,060F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456868,X,173,08:07:48,05/06/07,ESE,18MPH,000K,460F,060F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456874,R,173,08:07:54,05/06/07,ESE,16MPH,000K,460F,060F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456880,D,173,08:08:00,05/06/07,ESE,20MPH,000K,460F,059F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456886,M,173,08:08:06,05/06/07,E,18MPH,000K,460F,059F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456892,Y,173,08:08:12,05/06/07,ESE,16MPH,000K,460F,059F,075%,30.13R,00.00\"D,00.16\"M,00.00\"R\n1178456898,N,173,08:08:18,05/06/07,E,19MPH,000K,460F,059F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456904,C,173,08:08:24,05/06/07,ESE,18MPH,000K,460F,059F,075%,30.13R,00.00\"D,00.16\"M,00.00\"R\n1178456910,R,173,08:08:30,05/06/07,ESE,18MPH,000K,460F,059F,075%,30.13R,00.00\"D,00.16\"M,00.00\"R\n1178456916,D,173,08:08:36,05/06/07,ESE,12MPH,000K,460F,059F,075%,30.13R,00.00\"D,00.16\"M,00.00\"R\n1178456922,U,173,08:08:42,05/06/07,ESE,14MPH,000K,460F,059F,075%,30.13R,00.00\"D,00.16\"M,00.00\"R\n1178456928,D,173,08:08:48,05/06/07,ESE,11MPH,000K,460F,059F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456934,P,173,08:08:54,05/06/07,ESE,13MPH,000K,460F,059F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456940,H,173,08:09:00,05/06/07,ESE,14MPH,000K,460F,059F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456946,T,173,08:09:06,05/06/07,SE,19MPH,000K,460F,059F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456952,F,173,08:09:12,05/06/07,SE,17MPH,000K,460F,059F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456958,W,173,08:09:18,05/06/07,SSE,16MPH,000K,460F,059F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456964,I,173,08:09:24,05/06/07,SE,16MPH,000K,460F,059F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456970,A,173,08:09:30,05/06/07,SE,16MPH,000K,460F,059F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456976,J,173,08:09:36,05/06/07,SE,19MPH,000K,460F,059F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456982,Y,173,08:09:42,05/06/07,SE,19MPH,000K,460F,059F,075%,30.14R,00.00\"D,00.16\"M,00.00\"R\n1178456988,N,173,08:09:48,05/06/07,SE,18MPH,000K,460F,059F,075%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178456994,C,173,08:09:54,05/06/07,SE,18MPH,000K,460F,059F,075%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178457000,O,173,08:10:00,05/06/07,SE,13MPH,000K,460F,059F,075%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178457006,D,173,08:10:06,05/06/07,ESE,16MPH,000K,460F,059F,075%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178457012,J,173,08:10:12,05/06/07,ESE,12MPH,000K,460F,059F,075%,30.15R,00.00\"D,00.16\"M,00.00\"R\n1178457018,E,173,08:10:18,05/06/07,SSE,12MPH,000K,460F,059F,075%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178457024,Q,173,08:10:24,05/06/07,ESE,13MPH,000K,460F,059F,075%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178457030,F,173,08:10:30,05/06/07,SE,15MPH,000K,460F,060F,075%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178457036,U,173,08:10:36,05/06/07,ESE,11MPH,000K,460F,059F,075%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178457042,J,173,08:10:42,05/06/07,SSE,13MPH,000K,460F,060F,075%,30.16R,00.00\"D,00.16\"M,00.00\"R\n1178457048,V,173,08:10:48,05/06/07,SSE,13MPH,000K,460F,059F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178457054,M,173,08:10:54,05/06/07,SSE,10MPH,000K,460F,060F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178457060,V,173,08:11:00,05/06/07,SE,10MPH,000K,460F,060F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178457066,N,173,08:11:06,05/06/07,SSE,06MPH,000K,460F,060F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178457072,Z,173,08:11:12,05/06/07,SSW,09MPH,000K,460F,060F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178457078,O,173,08:11:18,05/06/07,SW,13MPH,000K,460F,060F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178457084,A,173,08:11:24,05/06/07,SSW,11MPH,000K,460F,060F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178457090,S,173,08:11:30,05/06/07,S,08MPH,000K,460F,060F,075%,30.17R,00.00\"D,00.16\"M,00.00\"R\n1178457096,Y,173,08:11:36,05/06/07,SW,13MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457102,Q,173,08:11:42,05/06/07,SSW,11MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457108,Z,173,08:11:48,05/06/07,SSW,17MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457114,U,173,08:11:54,05/06/07,SW,14MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457120,A,173,08:12:00,05/06/07,SSW,14MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457126,S,173,08:12:06,05/06/07,SW,14MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457132,E,173,08:12:12,05/06/07,SSW,20MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457138,W,173,08:12:18,05/06/07,SSW,18MPH,000K,460F,060F,075%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457144,F,173,08:12:24,05/06/07,SSW,12MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457150,U,173,08:12:30,05/06/07,SW,16MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457156,G,173,08:12:36,05/06/07,WSW,12MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457162,B,173,08:12:42,05/06/07,WSW,13MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457168,K,173,08:12:48,05/06/07,WSW,10MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457174,Z,173,08:12:54,05/06/07,SW,13MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457180,L,173,08:13:00,05/06/07,SW,17MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457186,D,173,08:13:06,05/06/07,WSW,17MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457192,M,173,08:13:12,05/06/07,WSW,16MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457198,E,173,08:13:18,05/06/07,SW,16MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457204,H,173,08:13:24,05/06/07,SW,14MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457210,F,173,08:13:30,05/06/07,SSW,19MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457216,O,173,08:13:36,05/06/07,WSW,16MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457222,D,173,08:13:42,05/06/07,SW,20MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457228,P,173,08:13:48,05/06/07,SW,23MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457234,H,173,08:13:54,05/06/07,SW,20MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457240,K,173,08:14:00,05/06/07,SW,23MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457246,F,173,08:14:06,05/06/07,SSW,16MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457252,L,173,08:14:12,05/06/07,SSW,24MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457258,G,173,08:14:18,05/06/07,SSW,23MPH,000K,460F,060F,075%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457264,O,173,08:14:24,05/06/07,SSW,21MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457270,D,173,08:14:30,05/06/07,SSW,21MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457276,P,173,08:14:36,05/06/07,SSW,21MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457282,B,173,08:14:42,05/06/07,SSW,19MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457288,N,173,08:14:48,05/06/07,SW,18MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457294,I,173,08:14:54,05/06/07,SW,18MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457300,R,173,08:15:00,05/06/07,SW,19MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457306,D,173,08:15:06,05/06/07,SSW,19MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457312,G,173,08:15:12,05/06/07,SSW,26MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457318,E,173,08:15:18,05/06/07,SSW,18MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457324,T,173,08:15:24,05/06/07,SSW,19MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457330,F,173,08:15:30,05/06/07,SSW,19MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457336,R,173,08:15:36,05/06/07,SW,14MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457342,D,173,08:15:42,05/06/07,SW,16MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457348,M,173,08:15:48,05/06/07,S,15MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457354,E,173,08:15:54,05/06/07,SSW,14MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457360,Q,173,08:16:00,05/06/07,SW,14MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457366,F,173,08:16:06,05/06/07,S,18MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457372,F,173,08:16:12,05/06/07,SSW,18MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457378,W,173,08:16:18,05/06/07,SSE,21MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457384,I,173,08:16:24,05/06/07,SE,17MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457390,G,173,08:16:30,05/06/07,S,17MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457396,M,173,08:16:36,05/06/07,SSE,21MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457402,Y,173,08:16:42,05/06/07,S,19MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457408,G,173,08:16:48,05/06/07,SSE,13MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457414,B,173,08:16:54,05/06/07,S,14MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457420,K,173,08:17:00,05/06/07,S,13MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457426,C,173,08:17:06,05/06/07,SSW,10MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457432,F,173,08:17:12,05/06/07,SSW,09MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457438,D,173,08:17:18,05/06/07,S,11MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457444,P,173,08:17:24,05/06/07,SSW,13MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457450,E,173,08:17:30,05/06/07,SSW,16MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457456,Q,173,08:17:36,05/06/07,SSW,13MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457462,Z,173,08:17:42,05/06/07,SSW,13MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457468,H,173,08:17:48,05/06/07,SSW,13MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457474,C,173,08:17:54,05/06/07,S,08MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457480,F,173,08:18:00,05/06/07,S,10MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457486,A,173,08:18:06,05/06/07,SSW,10MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457492,D,173,08:18:12,05/06/07,S,08MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457498,Y,173,08:18:18,05/06/07,SSW,10MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457504,E,173,08:18:24,05/06/07,SSW,10MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457510,Z,173,08:18:30,05/06/07,S,12MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457516,I,173,08:18:36,05/06/07,SSE,08MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457522,W,173,08:18:42,05/06/07,S,12MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457528,C,173,08:18:48,05/06/07,S,16MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457534,U,173,08:18:54,05/06/07,S,14MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457540,D,173,08:19:00,05/06/07,S,13MPH,000K,460F,060F,075%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457546,S,173,08:19:06,05/06/07,SSE,14MPH,000K,460F,060F,076%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457552,D,173,08:19:12,05/06/07,SSE,11MPH,000K,460F,060F,076%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457558,S,173,08:19:18,05/06/07,SSE,13MPH,000K,460F,060F,076%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457564,H,173,08:19:24,05/06/07,SSE,13MPH,000K,460F,060F,076%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457570,V,173,08:19:30,05/06/07,SSE,13MPH,000K,460F,060F,076%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457576,B,173,08:19:36,05/06/07,SSE,15MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457582,Q,173,08:19:42,05/06/07,SSE,13MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457588,F,173,08:19:48,05/06/07,SSE,19MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457594,X,173,08:19:54,05/06/07,SSE,21MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457600,J,173,08:20:00,05/06/07,S,17MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457606,Y,173,08:20:06,05/06/07,SSE,18MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457612,J,173,08:20:12,05/06/07,S,14MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457618,B,173,08:20:18,05/06/07,SSE,16MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457624,G,173,08:20:24,05/06/07,SSE,15MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457630,V,173,08:20:30,05/06/07,SSE,11MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457636,K,173,08:20:36,05/06/07,SSE,14MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457642,C,173,08:20:42,05/06/07,SE,10MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457648,N,173,08:20:48,05/06/07,SE,15MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457654,C,173,08:20:54,05/06/07,SE,13MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457660,O,173,08:21:00,05/06/07,SE,18MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457666,C,173,08:21:06,05/06/07,ESE,15MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457672,F,173,08:21:12,05/06/07,SSE,16MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457678,X,173,08:21:18,05/06/07,SE,17MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457684,J,173,08:21:24,05/06/07,SE,14MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457690,B,173,08:21:30,05/06/07,SE,16MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457696,K,173,08:21:36,05/06/07,SE,17MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457702,C,173,08:21:42,05/06/07,SSE,15MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457708,H,173,08:21:48,05/06/07,SE,16MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457714,C,173,08:21:54,05/06/07,ESE,14MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457720,L,173,08:22:00,05/06/07,ESE,13MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457726,D,173,08:22:06,05/06/07,ESE,16MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457732,I,173,08:22:12,05/06/07,SE,16MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457738,A,173,08:22:18,05/06/07,SSE,18MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457744,M,173,08:22:24,05/06/07,SSE,16MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457750,B,173,08:22:30,05/06/07,SE,16MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457756,G,173,08:22:36,05/06/07,SSE,11MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457762,H,173,08:22:42,05/06/07,ESE,16MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457768,K,173,08:22:48,05/06/07,ESE,18MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457774,E,173,08:22:54,05/06/07,SE,18MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457780,Q,173,08:23:00,05/06/07,SE,15MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457786,I,173,08:23:06,05/06/07,SE,11MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457792,R,173,08:23:12,05/06/07,SE,16MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457798,J,173,08:23:18,05/06/07,ESE,17MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457804,S,173,08:23:24,05/06/07,SE,19MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457810,N,173,08:23:30,05/06/07,SE,16MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457816,W,173,08:23:36,05/06/07,SE,14MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457822,O,173,08:23:42,05/06/07,SSE,13MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457828,X,173,08:23:48,05/06/07,SSE,15MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457834,J,173,08:23:54,05/06/07,SSE,16MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457840,V,173,08:24:00,05/06/07,SSE,16MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457846,K,173,08:24:06,05/06/07,SSE,11MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457852,Q,173,08:24:12,05/06/07,SSE,11MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457858,F,173,08:24:18,05/06/07,SE,13MPH,000K,460F,060F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457864,L,173,08:24:24,05/06/07,SE,11MPH,000K,460F,059F,076%,30.18R,00.00\"D,00.16\"M,00.00\"R\n1178457870,D,173,08:24:30,05/06/07,SE,11MPH,000K,460F,059F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457876,M,173,08:24:36,05/06/07,SSE,06MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457882,B,173,08:24:42,05/06/07,SSE,07MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457888,N,173,08:24:48,05/06/07,S,10MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457894,I,173,08:24:54,05/06/07,SSW,08MPH,000K,460F,060F,076%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457900,R,173,08:25:00,05/06/07,S,06MPH,000K,460F,060F,077%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457906,M,173,08:25:06,05/06/07,SSW,06MPH,000K,460F,060F,077%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457912,S,173,08:25:12,05/06/07,S,07MPH,000K,460F,059F,077%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457918,N,173,08:25:18,05/06/07,SSW,11MPH,000K,460F,059F,077%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457924,T,173,08:25:24,05/06/07,S,09MPH,000K,460F,059F,077%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457930,L,173,08:25:30,05/06/07,S,05MPH,000K,460F,059F,077%,30.19R,00.00\"D,00.16\"M,00.00\"R\n1178457936,O,173,08:25:36,05/06/07,SSW,10MPH,000K,460F,059F,077%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457942,M,173,08:25:42,05/06/07,SSW,12MPH,000K,460F,059F,077%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457948,M,173,08:25:48,05/06/07,SSW,11MPH,000K,460F,059F,077%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457954,B,173,08:25:54,05/06/07,S,11MPH,000K,460F,059F,077%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457960,N,173,08:26:00,05/06/07,S,10MPH,000K,460F,059F,077%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457966,F,173,08:26:06,05/06/07,SW,07MPH,000K,460F,059F,077%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457972,R,173,08:26:12,05/06/07,SW,10MPH,000K,460F,059F,077%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457978,J,173,08:26:18,05/06/07,SW,09MPH,000K,460F,059F,077%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457984,S,173,08:26:24,05/06/07,SSW,10MPH,000K,460F,059F,077%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457990,N,173,08:26:30,05/06/07,WSW,13MPH,000K,460F,059F,077%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178457996,W,173,08:26:36,05/06/07,SW,16MPH,000K,460F,059F,078%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458002,L,173,08:26:42,05/06/07,SSW,13MPH,000K,460F,059F,078%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458008,R,173,08:26:48,05/06/07,SW,11MPH,000K,460F,059F,078%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458014,G,173,08:26:54,05/06/07,SW,12MPH,000K,460F,059F,078%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458020,V,173,08:27:00,05/06/07,SW,12MPH,000K,460F,059F,078%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458026,Q,173,08:27:06,05/06/07,SW,11MPH,000K,460F,059F,078%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458032,C,173,08:27:12,05/06/07,SSW,11MPH,000K,460F,059F,078%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458038,O,173,08:27:18,05/06/07,SW,15MPH,000K,460F,059F,078%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458044,U,173,08:27:24,05/06/07,SSW,15MPH,000K,460F,059F,078%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458050,M,173,08:27:30,05/06/07,SW,13MPH,000K,460F,059F,079%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458056,Y,173,08:27:36,05/06/07,WSW,14MPH,000K,460F,059F,079%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458062,J,173,08:27:42,05/06/07,SW,18MPH,000K,460F,059F,079%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458068,V,173,08:27:48,05/06/07,SW,15MPH,000K,460F,059F,079%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458074,N,173,08:27:54,05/06/07,SW,16MPH,000K,460F,059F,079%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458080,W,173,08:28:00,05/06/07,SW,13MPH,000K,460F,059F,079%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458086,O,173,08:28:06,05/06/07,WSW,11MPH,000K,460F,059F,079%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458092,A,173,08:28:12,05/06/07,SW,13MPH,000K,460F,059F,079%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458098,S,173,08:28:18,05/06/07,SW,14MPH,000K,460F,059F,079%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458104,Y,173,08:28:24,05/06/07,SW,13MPH,000K,460F,059F,079%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458110,S,173,08:28:30,05/06/07,SW,16MPH,000K,460F,059F,080%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458116,Y,173,08:28:36,05/06/07,SW,16MPH,000K,460F,059F,080%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458122,Q,173,08:28:42,05/06/07,WSW,10MPH,000K,460F,059F,080%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458128,W,173,08:28:48,05/06/07,SW,13MPH,000K,460F,059F,080%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458134,L,173,08:28:54,05/06/07,SW,08MPH,000K,460F,059F,080%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458140,X,173,08:29:00,05/06/07,SW,08MPH,000K,460F,059F,080%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458146,P,173,08:29:06,05/06/07,SW,09MPH,000K,460F,059F,080%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458152,A,173,08:29:12,05/06/07,SW,07MPH,000K,460F,059F,080%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458158,S,173,08:29:18,05/06/07,S,06MPH,000K,460F,059F,080%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458164,V,173,08:29:24,05/06/07,SW,10MPH,000K,460F,059F,080%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458170,Q,173,08:29:30,05/06/07,S,10MPH,000K,460F,059F,080%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458176,Z,173,08:29:36,05/06/07,S,11MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458182,T,173,08:29:42,05/06/07,SW,10MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458188,W,173,08:29:48,05/06/07,S,09MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458194,I,173,08:29:54,05/06/07,S,11MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458200,A,173,08:30:00,05/06/07,S,13MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458206,M,173,08:30:06,05/06/07,S,11MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458212,S,173,08:30:12,05/06/07,S,09MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458218,N,173,08:30:18,05/06/07,S,10MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458224,S,173,08:30:24,05/06/07,SSW,08MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458230,Q,173,08:30:30,05/06/07,SSE,08MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458236,W,173,08:30:36,05/06/07,S,08MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458242,I,173,08:30:42,05/06/07,SE,10MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458248,R,173,08:30:48,05/06/07,S,12MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458254,D,173,08:30:54,05/06/07,S,11MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458260,P,173,08:31:00,05/06/07,SSE,12MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458266,K,173,08:31:06,05/06/07,SSE,10MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458272,T,173,08:31:12,05/06/07,SSE,13MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458278,I,173,08:31:18,05/06/07,S,14MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458284,L,173,08:31:24,05/06/07,S,10MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458290,G,173,08:31:30,05/06/07,S,11MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458296,S,173,08:31:36,05/06/07,S,13MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458302,H,173,08:31:42,05/06/07,S,13MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458308,T,173,08:31:48,05/06/07,S,14MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458314,L,173,08:31:54,05/06/07,S,13MPH,000K,460F,059F,081%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458320,U,173,08:32:00,05/06/07,S,12MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458326,M,173,08:32:06,05/06/07,SSE,11MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458332,Y,173,08:32:12,05/06/07,SSE,10MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458338,J,173,08:32:18,05/06/07,S,11MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458344,S,173,08:32:24,05/06/07,S,08MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458350,B,173,08:32:30,05/06/07,SSE,10MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458356,H,173,08:32:36,05/06/07,SSE,12MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458362,W,173,08:32:42,05/06/07,SSE,12MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458368,E,173,08:32:48,05/06/07,SSE,12MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458374,N,173,08:32:54,05/06/07,SSE,16MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458380,W,173,08:33:00,05/06/07,SSE,15MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458386,L,173,08:33:06,05/06/07,SSE,13MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458392,Q,173,08:33:12,05/06/07,SSE,13MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458398,F,173,08:33:18,05/06/07,SSE,12MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458404,O,173,08:33:24,05/06/07,ESE,11MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458410,A,173,08:33:30,05/06/07,SE,13MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458416,G,173,08:33:36,05/06/07,SE,13MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458422,Y,173,08:33:42,05/06/07,SE,13MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458428,E,173,08:33:48,05/06/07,SE,11MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458434,T,173,08:33:54,05/06/07,SE,14MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458440,Z,173,08:34:00,05/06/07,SSE,15MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458446,I,173,08:34:06,05/06/07,SSE,14MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458452,R,173,08:34:12,05/06/07,SSE,14MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458458,J,173,08:34:18,05/06/07,SE,13MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458464,J,173,08:34:24,05/06/07,SE,13MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458470,E,173,08:34:30,05/06/07,ESE,08MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458476,N,173,08:34:36,05/06/07,SE,17MPH,000K,460F,059F,081%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458482,C,173,08:34:42,05/06/07,SE,15MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458488,F,173,08:34:48,05/06/07,SE,13MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458494,X,173,08:34:54,05/06/07,SE,14MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458500,A,173,08:35:00,05/06/07,SE,13MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458506,S,173,08:35:06,05/06/07,SSE,12MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458512,V,173,08:35:12,05/06/07,SSE,13MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458518,N,173,08:35:18,05/06/07,SSE,14MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458524,W,173,08:35:24,05/06/07,SE,13MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458530,L,173,08:35:30,05/06/07,SE,14MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458536,R,173,08:35:36,05/06/07,SE,14MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458542,G,173,08:35:42,05/06/07,SE,12MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458548,M,173,08:35:48,05/06/07,SSE,14MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458554,E,173,08:35:54,05/06/07,SSE,10MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458560,N,173,08:36:00,05/06/07,SE,11MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458566,F,173,08:36:06,05/06/07,SE,13MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458572,R,173,08:36:12,05/06/07,SSE,09MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458578,D,173,08:36:18,05/06/07,SSE,07MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458584,O,173,08:36:24,05/06/07,SSE,11MPH,000K,460F,059F,082%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458590,J,173,08:36:30,05/06/07,SSE,11MPH,000K,460F,059F,083%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458596,S,173,08:36:36,05/06/07,SSE,12MPH,000K,460F,059F,083%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458602,N,173,08:36:42,05/06/07,SE,09MPH,000K,460F,059F,083%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458608,W,173,08:36:48,05/06/07,SSE,11MPH,000K,460F,059F,083%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458614,L,173,08:36:54,05/06/07,SSE,12MPH,000K,460F,059F,083%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458620,W,173,08:37:00,05/06/07,SSE,13MPH,000K,460F,059F,083%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458626,O,173,08:37:06,05/06/07,SSE,10MPH,000K,460F,059F,083%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458632,X,173,08:37:12,05/06/07,SSE,11MPH,000K,460F,059F,083%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458638,P,173,08:37:18,05/06/07,SSE,10MPH,000K,460F,059F,083%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458644,Y,173,08:37:24,05/06/07,SSE,11MPH,000K,460F,059F,083%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178458650,N,173,08:37:30,05/06/07,SSE,12MPH,000K,460F,059F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458656,C,173,08:37:36,05/06/07,SSE,11MPH,000K,460F,059F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458662,Q,173,08:37:42,05/06/07,SSE,11MPH,000K,460F,059F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458668,Z,173,08:37:48,05/06/07,SSE,13MPH,000K,460F,059F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458674,L,173,08:37:54,05/06/07,SSE,13MPH,000K,460F,059F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458680,A,173,08:38:00,05/06/07,S,10MPH,000K,460F,059F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458686,V,173,08:38:06,05/06/07,SSE,11MPH,000K,460F,058F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458692,E,173,08:38:12,05/06/07,SSE,10MPH,000K,460F,058F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458698,T,173,08:38:18,05/06/07,S,14MPH,000K,460F,058F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458704,Z,173,08:38:24,05/06/07,SSE,12MPH,000K,460F,058F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458710,U,173,08:38:30,05/06/07,SSE,09MPH,000K,460F,059F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458716,D,173,08:38:36,05/06/07,SSE,10MPH,000K,460F,059F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458722,Y,173,08:38:42,05/06/07,S,08MPH,000K,460F,059F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458728,H,173,08:38:48,05/06/07,SSE,08MPH,000K,460F,058F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458734,Z,173,08:38:54,05/06/07,SSE,08MPH,000K,460F,058F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458740,I,173,08:39:00,05/06/07,SE,09MPH,000K,460F,058F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458746,A,173,08:39:06,05/06/07,S,07MPH,000K,460F,058F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458752,J,173,08:39:12,05/06/07,S,07MPH,000K,460F,058F,083%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458758,Y,173,08:39:18,05/06/07,S,07MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458764,N,173,08:39:24,05/06/07,S,05MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458770,Z,173,08:39:30,05/06/07,S,07MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458776,F,173,08:39:36,05/06/07,S,08MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458782,D,173,08:39:42,05/06/07,S,10MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458788,M,173,08:39:48,05/06/07,S,08MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458794,E,173,08:39:54,05/06/07,SSE,06MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458800,N,173,08:40:00,05/06/07,SSE,07MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458806,F,173,08:40:06,05/06/07,SSE,06MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458812,O,173,08:40:12,05/06/07,SSW,08MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458818,G,173,08:40:18,05/06/07,S,10MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458824,M,173,08:40:24,05/06/07,SSE,11MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458830,K,173,08:40:30,05/06/07,S,07MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458836,Q,173,08:40:36,05/06/07,S,08MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458842,Z,173,08:40:42,05/06/07,S,08MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458848,L,173,08:40:48,05/06/07,S,08MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458854,X,173,08:40:54,05/06/07,S,10MPH,000K,460F,058F,084%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458860,A,173,08:41:00,05/06/07,S,09MPH,000K,460F,058F,085%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458866,V,173,08:41:06,05/06/07,S,08MPH,000K,460F,058F,085%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458872,Y,173,08:41:12,05/06/07,S,08MPH,000K,460F,058F,085%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458878,T,173,08:41:18,05/06/07,S,07MPH,000K,460F,058F,085%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458884,C,173,08:41:24,05/06/07,S,08MPH,000K,460F,058F,085%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458890,U,173,08:41:30,05/06/07,SSW,10MPH,000K,460F,058F,085%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458896,F,173,08:41:36,05/06/07,S,10MPH,000K,460F,058F,085%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458902,R,173,08:41:42,05/06/07,S,10MPH,000K,460F,058F,085%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458908,D,173,08:41:48,05/06/07,S,07MPH,000K,460F,058F,085%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458914,P,173,08:41:54,05/06/07,S,07MPH,000K,460F,058F,085%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458920,Y,173,08:42:00,05/06/07,SSE,06MPH,000K,460F,058F,085%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458926,Q,173,08:42:06,05/06/07,S,08MPH,000K,460F,058F,085%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458932,Z,173,08:42:12,05/06/07,S,06MPH,000K,460F,058F,085%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458938,R,173,08:42:18,05/06/07,SSE,08MPH,000K,460F,058F,085%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458944,D,173,08:42:24,05/06/07,SSE,06MPH,000K,460F,058F,085%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458950,P,173,08:42:30,05/06/07,S,06MPH,000K,460F,058F,085%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458956,B,173,08:42:36,05/06/07,SSE,10MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458962,W,173,08:42:42,05/06/07,SSE,10MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458968,C,173,08:42:48,05/06/07,S,08MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458974,X,173,08:42:54,05/06/07,S,08MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458980,A,173,08:43:00,05/06/07,SSE,09MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458986,S,173,08:43:06,05/06/07,SSE,08MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458992,B,173,08:43:12,05/06/07,SSE,10MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178458998,S,173,08:43:18,05/06/07,SSE,11MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178459004,V,173,08:43:24,05/06/07,SSE,09MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178459010,W,173,08:43:30,05/06/07,S,11MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178459016,F,173,08:43:36,05/06/07,S,11MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178459022,X,173,08:43:42,05/06/07,S,11MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178459028,A,173,08:43:48,05/06/07,SSW,10MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178459034,M,173,08:43:54,05/06/07,S,08MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178459040,B,173,08:44:00,05/06/07,SSE,07MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178459046,T,173,08:44:06,05/06/07,SSE,08MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178459052,C,173,08:44:12,05/06/07,SSE,07MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178459058,X,173,08:44:18,05/06/07,SSE,05MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178459064,G,173,08:44:24,05/06/07,SE,06MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178459070,B,173,08:44:30,05/06/07,SSE,08MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178459076,K,173,08:44:36,05/06/07,SE,08MPH,000K,460F,058F,086%,30.21R,00.00\"D,00.16\"M,00.00\"R\n1178459082,Z,173,08:44:42,05/06/07,SE,09MPH,000K,460F,058F,086%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178459088,O,173,08:44:48,05/06/07,SE,07MPH,000K,460F,058F,086%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178459094,D,173,08:44:54,05/06/07,SE,08MPH,000K,460F,058F,087%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178459100,M,173,08:45:00,05/06/07,ESE,10MPH,000K,460F,058F,087%,30.20R,00.00\"D,00.16\"M,00.00\"R\n1178459106,B,173,08:45:06,05/06/07,ESE,10MPH,000K,460F,058F,087%,30.20R,00.01\"D,00.17\"M,00.00\"R\n1178459112,N,173,08:45:12,05/06/07,ESE,10MPH,000K,460F,058F,087%,30.20R,00.01\"D,00.17\"M,00.00\"R\n1178459118,F,173,08:45:18,05/06/07,ESE,10MPH,000K,460F,058F,087%,30.20R,00.01\"D,00.17\"M,00.00\"R\n1178459124,O,173,08:45:24,05/06/07,ESE,10MPH,000K,460F,058F,087%,30.20R,00.01\"D,00.17\"M,00.00\"R\n1178459130,D,173,08:45:30,05/06/07,ESE,10MPH,000K,460F,058F,087%,30.20R,00.01\"D,00.17\"M,00.00\"R\n1178459136,P,173,08:45:36,05/06/07,ESE,12MPH,000K,460F,058F,087%,30.20R,00.01\"D,00.17\"M,00.00\"R\n1178459142,G,173,08:45:42,05/06/07,SE,12MPH,000K,460F,058F,087%,30.20R,00.01\"D,00.17\"M,00.00\"R\n1178459148,P,173,08:45:48,05/06/07,SE,13MPH,000K,460F,058F,087%,30.20R,00.01\"D,00.17\"M,00.00\"R\n1178459154,H,173,08:45:54,05/06/07,SE,11MPH,000K,460F,058F,087%,30.20R,00.01\"D,00.17\"M,00.00\"R\n"
  },
  {
    "path": "htdocs/plotting/snet/dataformat.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->title = \"School Net Data Format\";\n$t->content = <<<EOM\n\n<h3 class=\"heading\">Data Format</h3><br /><br />\n<div class=\"text\">\n\nIf you download raw schoolnet data from the IEM server, \nyou are probably curious about the data format.  Well, here is the explaination.</p>\n\n<p>The data files are in a tab deliminated text format.  \nEach line is a different report.  \nHere is an example line with columns denoted for reference.<br>\n<pre>\n20:57,03/06/02,NE,06MPH,000K,460F,028F,077%,30.18R,00.00\"D,00.00\"M,00.00\"R,\n  1       2    3    4    5    6    7    8     9      10      11      12\n</pre>\n</p>\n\n<table>\n<thead>\n<tr>\n  <th>Column</th>\n  <th>Ex</th>\n  <th>Data Type / Units </th>\n</tr>\n</thead>\n<tr colspan=\"#eeeeee\">\n  <th>1</th>\n  <th>20:57</th>\n  <td>Time of Day in the Central Standard Timezone.  Hours are in a two digit\nform.  To get the PM equivalent, subtract 12 from numbers larger than 13.  In this example, 20:57 equates to 8:57PM.</td>\n</tr>\n<tr>\n  <th>2</th>\n  <th>03/06/02</th>\n  <td>Date of the observation in the Central Standard Timezone.  The format is\nmm/dd/yy.  In this example, 06 March 2002.</td>\n</tr>\n<tr>\n  <th>3</th>\n  <th>NE</th>\n  <td>Textual representation of where the wind is blowing from. (Wind Direction)</td>\n</tr>\n<tr>\n  <th>4</th>\n  <th>06MPH</th>\n  <td>Instaneous wind speed in miles per hour.</td>\n</tr>\n<tr>\n  <th>5</th>\n  <th>000K</th>\n  <td>Solar Radiation.  Multiply by 10 to get values in Watts per meter squared.</td>\n</tr>\n<tr>\n  <th>6</th>\n  <th>460F</th>\n  <td>Indoor Temperature in degrees Fahrenhit.  The value of 460F means that \nthis variable is not measured at this station or that the value is in error.</td>\n</tr>\n<tr>\n  <th>7</th>\n  <th>028F</th>\n  <td>Outdoor Temperature in degrees Fahrenhit.</td>\n</tr>\n<tr>\n  <th>8</th>\n  <th>077%</th>\n  <td>Humidity expressed as a precentage.</td>\n</tr>\n<tr>\n  <th>9</th>\n  <th>30.18R</th>\n  <td>Barometric pressure expressed in inches of mercury.  The character at \nthe end represents the change in pressure. 'S' == Steady.  'R' == Raising.\n'F' == Falling.</td>\n</tr>\n<tr>\n  <th>10</th>\n  <th>00.00\"D</th>\n  <td>Accumulation of precipitation in inches for the current day.</td>\n</tr>\n<tr>\n  <th>11</th>\n  <th>00.00\"M</th>\n  <td>Accumulation of precipitation in inches for the current month.</td>\n</tr>\n<tr>\n  <th>12</th>\n  <th>00.00\"R</th>\n  <td>Calculated current hourly precipitation rate.</td>\n</tr>\n</table></div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/plotting/snet/indy_bore.php",
    "content": "<?php\n// 1 minute schoolnet data plotter\n// Cool.....\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_scatter.php\";\n\n$fcontents = file(\"data/SINI4_071002.txt\");\n$sts = mktime(9, 45, 0, 10, 2, 2007);\n$ets = mktime(12, 0, 0, 10, 2, 2007);\n\n$mph = array();\n$drct = array();\n$alti = array();\n\n$dirTrans = array(\n    'N' => '360',\n    'NNE' => '25',\n    'NE' => '45',\n    'ENE' => '70',\n    'E' => '90',\n    'ESE' => '115',\n    'SE' => '135',\n    'SSE' => '155',\n    'S' => '180',\n    'SSW' => '205',\n    'SW' => '225',\n    'WSW' => '250',\n    'W' => '270',\n    'WNW' => '295',\n    'NW' => '305',\n    'NNW' => '335'\n);\n\n$i = 0;\n\n$dups = 0;\n$missing = 0;\n$hasgust = 0;\n$peakgust = 0;\n$peaksped = 0;\n$times = array();\n$lts = 0;\n\nforeach ($fcontents as $linenum => $line) {\n    $parts = preg_split(\"/,/\", $line);\n    $thisGust = 0;\n    $timestamp = $parts[0];\n\n    $thisMPH = intval(substr($parts[6], 0, -3));\n    $thisALTI =  substr($parts[11], 0, -1);\n    $thisDRCT = $dirTrans[$parts[5]];\n\n    if ($lts > 0 && ($timestamp - $lts > 70)) {\n        $times[] = $timestamp + 40;\n        $drct[] = \"\";\n        $mph[] = \"\";\n        $alti[] = \"\";\n    }\n\n    if ($timestamp >= $sts && $timestamp < $ets) {\n        $times[] = $timestamp;\n        $drct[] = $thisDRCT;\n        $mph[] = $thisMPH;\n        $alti[] = $thisALTI;\n    }\n    $lts = $timestamp;\n} // End of while\n\n// Create the graph. These two calls are always required\n$graph = new Graph(640, 480);\n$graph->SetScale('datlin', 0, 360);\n$graph->SetYScale(0, 'lin', 0, 60);\n$graph->SetYScale(1, 'lin');\n$graph->SetColor(\"#f0f0f0\");\n$graph->img->SetMargin(55, 110, 55, 60);\n\n$graph->title->Set(\"Indianola, Iowa SchoolNet Sub 1 Minute Time Series\");\n$graph->title->SetFont(FF_FONT1, FS_BOLD, 20);\n\n$graph->xaxis->SetFont(FF_FONT1, FS_BOLD);\n$graph->xaxis->SetTitle(\"Times on the morning of 2 Oct 2007\");\n$graph->xaxis->SetTitleMargin(27);\n$graph->xaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->xaxis->SetPos(\"min\");\n$graph->xaxis->SetLabelFormatString(\"h:i\", true);\n$graph->xaxis->scale->SetTimeAlign(MINADJ_1);\n$graph->xaxis->SetLabelAngle(90);\n\n\n$graph->yaxis->SetFont(FF_FONT1, FS_BOLD, 14);\n$graph->yaxis->scale->ticks->Set(45, 15);\n$graph->yaxis->SetTitle(\"Wind Direction (blue dots)\");\n$graph->yaxis->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->yaxis->SetTitleMargin(40);\n\n$graph->ynaxis[0]->SetFont(FF_FONT1, FS_BOLD);\n$graph->ynaxis[0]->scale->ticks->Set(10, 5);\n$graph->ynaxis[0]->SetTitle(\"Wind Speed [MPH]\");\n$graph->ynaxis[0]->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->ynaxis[0]->SetTitleMargin(30);\n$graph->ynaxis[0]->SetColor(\"red\", \"red\");\n$graph->ynaxis[0]->title->SetColor(\"red\", \"red\");\n\n$graph->ynaxis[1]->SetTitle(\"Pressure\");\n$graph->ynaxis[1]->title->SetFont(FF_FONT1, FS_BOLD, 12);\n$graph->ynaxis[1]->SetTitleMargin(45);\n$graph->ynaxis[1]->SetColor(\"black\", \"black\");\n$graph->ynaxis[1]->SetLabelFormat('%0.3f');\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01, 0.05);\n$graph->legend->SetFont(FF_FONT1, FS_BOLD, 14);\n\n// Create the linear plot\n$lineplot = new LinePlot($mph, $times);\n$lineplot->SetLegend(\"Instant Wind Speed\");\n$lineplot->SetColor(\"red\");\n\n$lineplot2 = new LinePlot($alti, $times);\n$lineplot2->SetLegend(\"Pressure\");\n$lineplot2->SetColor(\"black\");\n\n// Create the linear plot\n$sp1 = new ScatterPlot($drct, $times);\n$sp1->mark->SetType(MARK_FILLEDCIRCLE);\n$sp1->mark->SetFillColor(\"blue\");\n$sp1->mark->SetWidth(3);\n$sp1->SetLegend(\"Wind Direction\");\n\n\n$graph->Add($sp1);\n$graph->AddY(0, $lineplot);\n$graph->AddY(1, $lineplot2);\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/snet/polk_bore.php",
    "content": "<?php\n// 1 minute schoolnet data plotter\n// Cool.....\nrequire_once \"../../../config/settings.inc.php\";\n\n$fcontents = file(\"data/SPKI4_071002.txt\");\n$sts = mktime(9,0,0,10,2,2007);\n$ets = mktime(11,30,0,10,2,2007);\n\n$mph = array();\n$drct = array();\n$alti = array();\n\n$dirTrans = array(\n  'N' => '360',\n 'NNE' => '25',\n 'NE' => '45',\n 'ENE' => '70',\n 'E' => '90',\n 'ESE' => '115',\n 'SE' => '135',\n 'SSE' => '155',\n 'S' => '180',\n 'SSW' => '205',\n 'SW' => '225',\n 'WSW' => '250',\n 'W' => '270',\n 'WNW' => '295',\n 'NW' => '305',\n 'NNW' => '335');\n\n$i = 0;\n\n$dups = 0;\n$missing = 0;\n$hasgust = 0;\n$peakgust = 0;\n$peaksped = 0;\n$times = Array();\n$lts = 0;\n\nforeach($fcontents as $linenum => $line)\n{\n  $parts = preg_split (\"/,/\", $line);\n  $thisGust = 0;\n  $timestamp = $parts[0];\n \n  $thisMPH = intval( substr($parts[6],0,-3) );\n  $thisALTI =  substr($parts[11],0,-1);\n  $thisDRCT = $dirTrans[$parts[5]];\n\n  if ($lts > 0 && ($timestamp - $lts > 70))\n  {\n    $times[] = $timestamp + 40;\n    $drct[] = \"\";\n    $mph[] = \"\";\n    $alti[] = \"\";\n  }\n\n  if ($timestamp >= $sts && $timestamp < $ets)\n  {\n    $times[] = $timestamp;\n    $drct[] = $thisDRCT;\n    $mph[] = $thisMPH;\n    $alti[] = $thisALTI;\n  }\n  $lts = $timestamp;\n} // End of while\n\n\ninclude (\"../../../include/jpgraph/jpgraph.php\");\ninclude (\"../../../include/jpgraph/jpgraph_line.php\");\ninclude (\"../../../include/jpgraph/jpgraph_date.php\");\ninclude (\"../../../include/jpgraph/jpgraph_scatter.php\");\n\n// Create the graph. These two calls are always required\n$graph = new Graph(640,480);\n$graph->SetScale('datlin',0,360);\n$graph->SetYScale(0,'lin',0,60);\n$graph->SetYScale(1,'lin');\n$graph->SetColor(\"#f0f0f0\");\n$graph->img->SetMargin(55,110,55,60);\n\n$graph->title->Set(\"Polk City, Iowa SchoolNet Sub 1 Minute Time Series\");\n$graph->title->SetFont(FF_FONT1,FS_BOLD,20);\n\n$graph->xaxis->SetFont(FF_FONT1,FS_BOLD);\n$graph->xaxis->SetTitle(\"Times on the morning of 2 Oct 2007\");\n$graph->xaxis->SetTitleMargin(27);\n$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetPos(\"min\");\n$graph->xaxis->SetLabelFormatString(\"h:i\", true);\n$graph->xaxis->scale->SetTimeAlign(MINADJ_1);\n$graph->xaxis->SetLabelAngle(90);\n\n\n$graph->yaxis->SetFont(FF_FONT1,FS_BOLD, 14);\n$graph->yaxis->scale->ticks->Set(45,15);\n$graph->yaxis->SetTitle(\"Wind Direction (blue dots)\");\n$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->yaxis->SetTitleMargin(40);\n\n\n$graph->ynaxis[0]->SetFont(FF_FONT1,FS_BOLD);\n$graph->ynaxis[0]->scale->ticks->Set(10,5);\n$graph->ynaxis[0]->SetTitle(\"Wind Speed [MPH]\");\n$graph->ynaxis[0]->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->ynaxis[0]->SetTitleMargin(30);\n$graph->ynaxis[0]->SetColor(\"red\", \"red\");\n$graph->ynaxis[0]->title->SetColor(\"red\", \"red\");\n\n\n//$graph->ynaxis[1]->SetFont(FF_FONT1,FS_BOLD);\n//$graph->ynaxis[1]->scale->ticks->Set(0.01,0.005);\n$graph->ynaxis[1]->SetTitle(\"Pressure\");\n$graph->ynaxis[1]->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->ynaxis[1]->SetTitleMargin(45);\n$graph->ynaxis[1]->SetColor(\"black\", \"black\");\n$graph->ynaxis[1]->SetLabelFormat('%0.3f');\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01,0.05);\n$graph->legend->SetFont(FF_FONT1,FS_BOLD,14);\n\n// Create the linear plot\n$lineplot=new LinePlot($mph, $times);\n$lineplot->SetLegend(\"Instant Wind Speed\");\n$lineplot->SetColor(\"red\");\n\n$lineplot2=new LinePlot($alti, $times);\n$lineplot2->SetLegend(\"Pressure\");\n$lineplot2->SetColor(\"black\");\n\n// Create the linear plot\n$sp1=new ScatterPlot($drct, $times);\n$sp1->mark->SetType(MARK_FILLEDCIRCLE);\n$sp1->mark->SetFillColor(\"blue\");\n$sp1->mark->SetWidth(3);\n$sp1->SetLegend(\"Wind Direction\");\n\n\n$graph->Add($sp1);\n$graph->AddY(0,$lineplot);\n$graph->AddY(1,$lineplot2);\n//$graph->AddY2($lp1);\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/plotting/snet/tama_bore.php",
    "content": "<?php\n// 1 minute schoolnet data plotter\n// Cool.....\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_line.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_date.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_scatter.php\";\n\n$fcontents = file(\"data/STQI4_070506.txt\");\n$sts = mktime(7,45,0,5,6,2007);\n$ets = mktime(8,45,0,5,6,2007);\n\n$mph = array();\n$drct = array();\n$alti = array();\n\n$dirTrans = array(\n  'N' => '360',\n 'NNE' => '25',\n 'NE' => '45',\n 'ENE' => '70',\n 'E' => '90',\n 'ESE' => '115',\n 'SE' => '135',\n 'SSE' => '155',\n 'S' => '180',\n 'SSW' => '205',\n 'SW' => '225',\n 'WSW' => '250',\n 'W' => '270',\n 'WNW' => '295',\n 'NW' => '305',\n 'NNW' => '335');\n\n$i = 0;\n\n$dups = 0;\n$missing = 0;\n$hasgust = 0;\n$peakgust = 0;\n$peaksped = 0;\n$times = Array();\n$lts = 0;\n\nforeach($fcontents as $linenum => $line)\n{\n  $parts = preg_split (\"/,/\", $line);\n  $thisGust = 0;\n  $timestamp = $parts[0];\n \n  $thisMPH = intval( substr($parts[6],0,-3) );\n  $thisALTI =  substr($parts[11],0,-1);\n  $thisDRCT = $dirTrans[$parts[5]];\n\n  if ($lts > 0 && ($timestamp - $lts > 70))\n  {\n    $times[] = $timestamp + 40;\n    $drct[] = \"\";\n    $mph[] = \"\";\n    $alti[] = \"\";\n  }\n\n  if ($timestamp >= $sts && $timestamp < $ets)\n  {\n    $times[] = $timestamp;\n    $drct[] = $thisDRCT;\n    $mph[] = $thisMPH;\n    $alti[] = $thisALTI;\n  }\n  $lts = $timestamp;\n} // End of while\n\n// Create the graph. These two calls are always required\n$graph = new Graph(640,480);\n$graph->SetScale('datlin',0,360);\n$graph->SetYScale(0,'lin',0,60);\n$graph->SetYScale(1,'lin');\n$graph->SetColor(\"#f0f0f0\");\n$graph->img->SetMargin(55,110,55,60);\n\n$graph->title->Set(\"Tama, Iowa SchoolNet Sub 1 Minute Time Series\");\n$graph->title->SetFont(FF_FONT1,FS_BOLD,20);\n$graph->subtitle->Set(\"Tama SchoolNet\");\n\n$graph->xaxis->SetFont(FF_FONT1,FS_BOLD);\n$graph->xaxis->SetTitle(\"Times on the morning of 6 May 2007\");\n$graph->xaxis->SetTitleMargin(27);\n$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->xaxis->SetPos(\"min\");\n$graph->xaxis->SetLabelFormatString(\"h:i\", true);\n$graph->xaxis->scale->SetTimeAlign(MINADJ_1);\n$graph->xaxis->SetLabelAngle(90);\n\n\n$graph->yaxis->SetFont(FF_FONT1,FS_BOLD, 14);\n$graph->yaxis->scale->ticks->Set(45,15);\n$graph->yaxis->SetTitle(\"Wind Direction (blue dots)\");\n$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->yaxis->SetTitleMargin(40);\n\n$graph->ynaxis[0]->SetFont(FF_FONT1,FS_BOLD);\n$graph->ynaxis[0]->scale->ticks->Set(10,5);\n$graph->ynaxis[0]->SetTitle(\"Wind Speed [MPH]\");\n$graph->ynaxis[0]->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->ynaxis[0]->SetTitleMargin(30);\n$graph->ynaxis[0]->SetColor(\"red\", \"red\");\n$graph->ynaxis[0]->title->SetColor(\"red\", \"red\");\n\n$graph->ynaxis[1]->SetTitle(\"Pressure\");\n$graph->ynaxis[1]->title->SetFont(FF_FONT1,FS_BOLD,12);\n$graph->ynaxis[1]->SetTitleMargin(45);\n$graph->ynaxis[1]->SetColor(\"black\", \"black\");\n$graph->ynaxis[1]->SetLabelFormat('%0.3f');\n\n$graph->legend->SetLayout(LEGEND_HOR);\n$graph->legend->Pos(0.01,0.05);\n$graph->legend->SetFont(FF_FONT1,FS_BOLD,14);\n\n// Create the linear plot\n$lineplot=new LinePlot($mph, $times);\n$lineplot->SetLegend(\"Instant Wind Speed\");\n$lineplot->SetColor(\"red\");\n\n$lineplot2=new LinePlot($alti, $times);\n$lineplot2->SetLegend(\"Pressure\");\n$lineplot2->SetColor(\"black\");\n\n// Create the linear plot\n$sp1=new ScatterPlot($drct, $times);\n$sp1->mark->SetType(MARK_FILLEDCIRCLE);\n$sp1->mark->SetFillColor(\"blue\");\n$sp1->mark->SetWidth(3);\n$sp1->SetLegend(\"Wind Direction\");\n\n$graph->Add($sp1);\n$graph->AddY(0,$lineplot);\n$graph->AddY(1,$lineplot2);\n$graph->Stroke();\n"
  },
  {
    "path": "htdocs/projects/iao/analog_download.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\n\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n\n$t->title = \"Download TallTowers 1 minute aggregate data\";\n\n$y1select = yearSelect(2016, date(\"Y\"), \"year1\", '', 2021);\n$y2select = yearSelect(2016, date(\"Y\"), \"year2\", '', 2021);\n\n$m1select = monthSelect(1, \"month1\");\n$m2select = monthSelect(date(\"m\"), \"month2\");\n\n$d1select = daySelect(1, \"day1\");\n$d2select = daySelect(date(\"d\"), \"day2\");\n\n$h1select = hourSelect(0, \"hour1\");\n$h2select = hourSelect(0, \"hour2\");\n\n$ar = array(\n    \"Etc/UTC\" => \"Coordinated Universal Time (UTC)\",\n    \"America/Chicago\" => \"America/Chicago (CST/CDT)\",\n);\n\n$tzselect = make_select(\"tz\", \"Etc/UTC\", $ar);\n\n$t->content = <<<EOM\n\n<ol class=\"breadcrumb\">\n <li><a href=\"/projects/iao/\">IEM Iowa Atmospheric Observatory Homepage</a></li>\n <li class=\"active\">One minute aggregate data</li>\n</ol>\n\n<p>This interface provides a download of one minute aggregates of available\none second data from the \"analog\" sensors found on the Tall Towers.\n<a href=\"/cgi-bin/request/talltowers.py?help\" class=\"btn btn-secondary\">\n<i class=\"bi bi-file-earmark-text\"></i> Backend documentation</a> exists for those who\nwish to script against the backend service.</p>\n\n<h4>Citation</h4>\n\n<p>Acknowledgement is made to Iowa State University use of data from the ISU \nTall-Tower Network, which is funded by grants from the Iowa Power Fund and\nNational Science Foundation Iowa EPSCoR grant #1101284 and National\nScience Foundation grant #1701278.</p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/talltowers.py\" target=\"_blank\">\n\n<div class=\"row\"><div class=\"col-md-6\">\n\n<h4>1) Select tower(s):</h4>\n\n<select name=\"station\" size=\"2\" MULTIPLE>\n  <option value=\"ETTI4\">ETTI4 - Hamilton County - Tall Towers</option>\n  <option value=\"MCAI4\">MCAI4 - Story County - Tall Towers</option>\n</select>\n\n<h4>2) Select Time Zone of Observations:</h4>\n\n{$tzselect}\n\n<h4>3) Specific Date Range:</h4>\n\n<p>Due to processing constraints, up to 31 days of data is only allowed per\nrequest. Data exists between approximately 5 April 2016 and 21 Sept 2021.</p>\n\n<table class=\"table table-sm\">\n<tr><th>Start Date:</th><td>{$y1select} {$m1select} {$d1select} {$h1select}</td></tr>\n<tr><th>End Date:</th><td>{$y2select} {$m2select} {$d2select} {$h2select}</td></tr>\n</table>\n\n<h4>4) Select sensor height(s) on tower</h4>\n\n<select name=\"z\" size=\"6\" multiple>\n    <option value=\"5\">5m (16ft)</option>\n    <option value=\"10\">10m (33ft)</option>\n    <option value=\"20\">20m (66ft)</option>\n    <option value=\"40\">40m (131ft)</option>\n    <option value=\"80\">80m (263ft)</option>\n    <option value=\"120\">120m (394ft)</option>\n</select>\n\n</div><div class=\"col-md-6\">\n\n<h4>5) Select available variables</h4>\n\n<select name=\"var\" size=\"7\" multiple>\n    <option value=\"airtc\">Air Temperature [C]</option>\n    <option value=\"rh\">Relative Humidity [%]</option>\n    <option value=\"ws_s\">Wind Speed (South Boom) [m/s]</option>\n    <option value=\"winddir_s\">Wind Direction (South Boom) [deg]</option>\n    <option value=\"ws_nw\">Wind Speed (WNW Boom) [m/s]</option>\n    <option value=\"winddir_nw\">Wind Direction (WNW Boom) [deg]</option>\n    <option value=\"bp\">Air Pressure (10m and 80m only) [mb]</option>\n</select>\n\n<h4>6) Select statistical aggregates</h4>\n\n<select name=\"agg\" size=\"7\" multiple>\n    <option value=\"avg\">Mean</option>\n    <!-- Unsure how yet <option value=\"median\">Median</option> -->\n    <option value=\"std\">Standard Deviation</option>\n    <option value=\"mad\">Mean Absolute Deviation</option>\n    <option value=\"max\">Max</option>\n    <option value=\"min\">Min</option>\n    <option value=\"count\">Count</option>\n</select>\n\n<h4>7) Select Output Resolution</h4>\n\n<select name=\"window\">\n    <option value=\"1\">1 Minute</option>\n    <option value=\"5\">5 Minute</option>\n    <option value=\"10\">10 Minute</option>\n    <option value=\"15\">15 Minute</option>\n    <option value=\"20\">20 Minute</option>\n    <option value=\"30\">30 Minute</option>\n    <option value=\"60\">60 Minute</option>\n</select>\n\n\n<h4>8) Download Options:</h4>\n        \n<p><strong>Data Format:</strong> \n<select name=\"format\">\n    <option value=\"comma\">Comma Delimited</option>\n    <option value=\"excel\">Excel (.xlsx)</option>\n    <option value=\"tdf\">Tab Delimited</option>\n</select></p>\n\n<h4>9) Finally, process request</h4>\n\n  <input type=\"submit\" value=\"Get Data\">\n  <input type=\"reset\">\n\n</div></div><!-- ./row -->\n\n </form>\n\n<br /><br />\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/projects/iao/index.css",
    "content": ".iao-content section {\n  margin-top: 2rem;\n  scroll-margin-top: 5rem;\n}\n\n.iao-content img {\n  height: auto;\n  margin-bottom: 0.5rem;\n}\n\n.iao-sidenav {\n  position: sticky;\n  top: 1rem;\n}\n\n.iao-sidenav .nav-link {\n  color: var(--bs-body-color);\n  padding: 0.35rem 0.75rem;\n}\n\n.iao-sidenav .nav-link:hover,\n.iao-sidenav .nav-link:focus {\n  background-color: var(--bs-light);\n}\n\n.iao-table-wrapper {\n  margin-bottom: 1rem;\n}\n\ndiv.hangs p {\n  padding-left: 22px;\n  text-indent: -22px;\n}\n"
  },
  {
    "path": "htdocs/projects/iao/index.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\n\nrequire_once \"../../../include/myview.php\";\n\n$t = new MyView();\n$t->title = \"Iowa Atmospheric Observatory\";\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/projects/iao/index.css\" />\nEOM;\n$t->content = <<<EOM\n\n<div class=\"row\">\n<div class=\"col-lg-9 iao-content\">\n\n<h3>Iowa Atmospheric Observatory</h3>\n\n<section id=\"overview\">\n<h3>Overview</h3>\n</section>\n\n<p>The Iowa Atmospheric Observatory (IAO) was designed and constructed by\nIowa State University under funding from the Iowa Power Fund and National Science Foundation\nIowa EPSCoR grant (Grant # 1101284).  This distributed observing facility\nis anchored by its two tall (120-m) towers, separated by 22 km, operating\ncontinuously since June 2016 in central Iowa.  Tower A1 is located within\na 200-turbine utility-scale wind farm, and Tower A2 is located in similar\nterrain and landscape but outside the same wind farm.  Collocated at tower A2\nsince May 1, 2018, is a sodar wind profiler unit. In addition to the sodar,\na surface meteorological station was also added to the A2 site on\nNovember 29, 2018. Various guest/collaboration sensors have been\nlocated at the sites as well. Associated short-term\nfield research and teaching activities and their associated field observing\nfacilities are deployed for specific short term intensive observing periods\n(IOPs) or longer term studies.  Remote sensing instruments also have been\nand will be deployed for IOPs and continuously as new projects develop.</p>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n\n<p>The agricultural landscape surrounding each tower is blocked out in\none-mile (1.6 km) squares defined by public roads.  The terrain is relatively\nflat (with elevation changes of about +/- 3 m per square mile), and the land-use\nis predominantly (~90%) intensely managed row crops, either corn\n(mature height 1.5-2.0 m) or soybeans (1.0 m) during the growing season.\nA few farmsteads of area of ~1 hectare (2-3 acres) dot the landscape\n(~1-2 per square mile) consisting of a few 1-2 story buildings surrounded by\ntrees typically of height 5-10 m.  Crops are planted in April-May and\nharvested in September-October.  Outside this growing season the landscape\nis bare with some crop residue giving surface roughness elements\n(not z<sub>o</sub>) of ~ 5-8 cm.  The A1 Tower has grass (height ~0.2-0.8 m) in the\nimmediate vicinity (1 hectare) of the tower. A visible aerial image of the\nagricultural landscape surrounding the A2 Tower (Figure 1) reveals the\nhomogeneity of surface. The tower is located on a rectangular\ncrushed-rock area in the center of the image that is\nconnected by a crushed-rock private road to a grid of public roads.\nThe east-west roads at the top and bottom of the image are 1 mile apart.</p>\n\n<section id=\"locations\">\n<h3>Tower Locations</h3>\n</section>\n\n<p>Story County tower (A1)\n<br />E911: 67527 110th St, Zearing, IA\n<br />Lat./Long: 42.19676N, 93.3572W</p>\n\n<p>Hamilton County tower (A2)\n<br />E911: 3052 Xircus Ave., Ellsworth, IA\n<br />Lat./Long.: 42.34575N, 93.51945W</p>\n\n<h3>Period of Record</h3>\n<p>June 2016 to August 2021</p>\n\n</div>\n<div class=\"col-md-6\">\n<p><img src=\"figures/figure1.png\" class=\"img-fluid\">\n<br /><strong>Figure 1:</strong> Arial photo of A2 tower site.  Image courtesy of R. Doorenbos.\nPhoto source:  Iowa NAIP 2017 Orthophotos.  USDA-FSA-APFO Aerial Photography Field Office</p>\n</div>\n</div>\n\n<section id=\"instruments\">\n<h3>Instruments</h3>\n</section>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n\n<p>The two 120-m towers host identical profiles of instruments at levels of\n5, 10, 20, 40, 80, and 120 m as shown in Figure 2.  The towers are of a\ntriangular lattice construction approximately 1 m on a side.  Details of\nthe instruments are listed in Table 1, and boom orientations and lengths,\nidentical on both towers, are shown in Figure 3.  Photos of the instruments\nand booms on the towers are shown in Figures 4a and 4b. Redundant wind\nspeed and direction sensors at each level provide measurements with\nminimal tower interference for flow from prevailing wind directions at\nthese sites, which are shown by the 10-m (Figure 5a) and 80-m (Figure 5b)\nwind roses from Tower A2.  Orientation of booms and sensor locations\nalong each boom are shown in Figure 5.\nSite photos (Figure 6) show the climate-controlled concrete sheds\nhousing data acquisition and communication facilities at the base of\neach tower and the proximity of the A1 tower to nearby rows of turbines.</p>\n\n</div>\n<div class=\"col-md-6\">\n\n<p><a href=\"figures/figure2.png\"><img src=\"figures/figure2.png\" class=\"img-fluid\"></a>\n<br /><strong>Figure 2:</strong> Profile of instruments\non each tall tower.  Image courtesy of S. Purdy. Note: image is not to scale\nand does not reflect actual setup of booms and instruments.</p>\n\n</div>\n</div>\n\n<div class=\"table-responsive iao-table-wrapper\">\n<table class=\"table table-bordered table-striped table-sm align-middle\">\n<thead>\n<tr>\n <th>Sensor description</th>\n <th>Manufacturer</th>\n <th>Height (m)</th>\n <th>Distance from Tower</th>\n <th>Operating Range</th>\n <th>Measurement Accuracy</th>\n</tr>\n</thead>\n<tbody>\n<tr><td>\nThies cup anemometer<sup>ac</sup><br />\nThies cup anemometer<sup>bc</sup><br />\nThies cup anemometer<sup>bd</sup>\n</td>\n<td>Thies GmbH &amp; Co. KG;<br />\nCoesfeld, Germany</td>\n<td>120, 40, 10<br />\n80, 20, 5<br />\n120<sup>†</sup>, 80, 40,<br />\n20<sup>*</sup>, 10<sup>‡</sup>, 5</td>\n<td>2.74 m<sup>§</sup></td>\n<td>-50 to 80 °C</td>\n<td>±0.2 m s<sup>-1</sup> from 0.3 to 50 m s<sup>-1</sup> or 1%</td>\n</tr>\n\n<tr>\n<td>NRG 200P wind vane<sup>ed</sup></td>\n<td>Renewable NRG Systems; Hinesburg, Vermont, USA</td>\n<td>120, 80, 40, 20, 10<sup>‡</sup>, 5</td>\n<td>1.83 m<sup>§</sup> (0.91 m from cup anemometer)</td>\n<td>-55 to 60 °C</td>\n<td>±1%</td>\n</tr>\n\n<tr>\n<td>H2SC3 temperature/relative humidity probe<sup>e</sup></td>\n<td>Campbell Scientific;\nLogan, Utah, USA</td>\n<td>120, 80, 40, 20, 10, 5</td>\n<td>1.22 m\n(0.61 m from wind vane)\n[Duplicate probes at 120 m with 0.61 m spacing]</td>\n<td>-40 to 60 °C</td>\n<td>T: ±0.1 °C at 23°C\n±0.2 °C at 0°C & 40°C\nRH: 0.8% at 20°C, 1.3% at 0°C &amp; 40°C</td>\n</tr>\n\n<tr>\n<td>CSAT3B sonic anemometer<sup>c</sup></td>\n<td>Campbell Scientific; Logan, Utah, USA</td>\n<td>120<sup>†</sup>, 80, 40, 20, 10<sup>‡</sup>, 5</td>\n<td>2.74 m</td>\n<td>-30 to 50 °C</td>\n<td>u,v: 1 mm s<sup>-1</sup> (rms)<br />\nw: 0.5 mm s<sup>-1</sup> (rms)<br />\nT:  ±0.002 °C (rms) at 25 °C<br />\na: < 0.058° at u=v=1 m s<sup>-1</sup></td>\n</tr>\n\n<tr>\n<td>PTB 110 barometer<sup>f</sup></td>\n<td>Vaisala Helsinki, Finland</td>\n<td>80, 10</td>\n<td>0 m (mounted on tower legs)</td>\n<td>-55 to 60 °C</td>\n<td>± 0.3 mb at 20 °C<br />\n± 0.6 mb at 0 °C & 40 °C</td>\n</tr>\n</tbody>\n</table>\n</div>\n\n<p><strong>Table 1</strong> Instruments deployed at A1 and A2 with sensor\noperating range and measurement accuracy. <sup>a</sup> heated cup anemometer,\n<sup>b</sup> unheated cup anemometer, <sup>c</sup> WNW boom, <sup>d</sup> S boom,\n<sup>e</sup> WSW boom, <sup>f</sup> N leg of tower, <sup>§</sup> vertical distance\nfrom midpoint of sensor to boom is 0.41m, <sup>†</sup> sensor at A2 replaced previous\nsensor on 16 August 2016, <sup>‡</sup> sensor at A2 replaced previous sensor on\n16 February 2017, <sup>*</sup> rotor cup assembly at A2 replaced 23 May 2016.</p>\n\n\n<p><img src=\"figures/figure3.png\" class=\"img-fluid\">\n<br /><strong>Figure 3:</strong> Diagram of boom orientation, length, and\nplacement of sensors on each tower.  Image courtesy of S. Purdy,\n D. Rajewski, and E. Takle.  Note: image not to scale.</p>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n<img src=\"figures/figure4a.png\" class=\"img-fluid\">\n</div>\n<div class=\"col-md-6\">\n<img src=\"figures/figure4b.png\" class=\"img-fluid\">\n</div>\n</div>\n<p><strong>Figure 4:</strong> Orientation of sensors along booms at the A1\ntower (a) looking south from tower base and b) looking up from tower base.\n Image courtesy of S. Purdy.</p>\n\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n<img src=\"figures/figure5a.png\" class=\"img-fluid\">\n<br /><strong>Figure 5a:</strong> 10-m wind rose at A2 tower\nfrom June 2016-May 2017. Image courtesy of: D. Rajewski\n</div>\n<div class=\"col-md-6\">\n<img src=\"figures/figure5b.png\" class=\"img-fluid\">\n<br /><strong>Figure 5b:</strong> 80-m wind rose at A2 tower\nfrom June 2016-May 2017. Image courtesy of: D. Rajewski\n</div>\n</div>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n<img src=\"figures/figure6a.png\" class=\"img-fluid\">\n</div>\n<div class=\"col-md-6\">\n<img src=\"figures/figure6b.png\" class=\"img-fluid\">\n</div>\n</div>\n\n<p><strong>Figure 6:</strong> Site overview of tall tower and instrument shed\nat each tower site: A1 within the wind farm (a) and A2 outside of the wind\nfarm (b).  Images courtesy of S. Purdy.</p>\n\n<section id=\"topography\">\n<h3>Topography and Tower Mast Influences on IAO Measurements</h3>\n</section>\n\n<p>Terrain for both sites is flat with about 13m higher elevation at A2 vs.\nA1 (356.6 m vs. 343.8 m). Within 1 km of A1 the land slopes gently upward\n(≤1.0%) to the south, southwest, west, northwest, and north of the tower.\nSurrounding A2 slopes within 1 km of the tower are ±0.1% to the south,\nsouthwest, west, and northwest of the tower and -0.3% to the north of the\ntower. Both sites feature slopes that vary radially away from the tower at\nrates of less than ±0.7% within a 4-km distance of each tower for each of\nthe following directions [A1 vs A2] S: -0.3% vs. -0.2%; W: <-0.1% vs. -0.2%.;\nN: <0.1% vs. 0%; E: <0.1% vs. <0.1%. These topographical variations are\nsignificantly lower than the requirements for site calibration of met\ntowers near wind turbines (e.g. <10% slope or height variations of ±4m\nfrom the horizontal plane at a distance of 16 rotor diameters, D (D=82m)\nfrom a turbine (IEC61400-12:1, 2005)).</p>\n\n<p>Influence of tower cross section on our measurements is shown in Figure 7\nby taking the ratio of median wind speeds from the WNW and S IAO Tower\nbooms for 80-m wind direction from the A2 reference tower.  From wind\ndirections approximately S (172.5°) to approximately NW (326.5°) we\nexpect less than 5% variation in anemometer speeds due to the tower\ninfluence.  For easterly and northerly wind, the WNW and S anemometer\nspeeds depart by 30-40% depending on the leeward or windward position of\neach anemometer.  Higher variability\nof the normalized speed is indicated at the 10-m and 120-m levels due to\ncup anemometer malfunction on the south boom before instrument repair in\nAugust 2016.  We also observe a slight reduction in the tower wake at 5-m\nfor easterly wind which we attribute to the flow interference from the\n2.5-m tall equipment shed.  At 20 m and above the tower shadow is the\ndominant influence on the waked region.</p>\n\n<p><img src=\"figures/figure7.png\" class=\"img-fluid\">\n<br /><strong>Figure 7:</strong> Detection of tower wake at all tower levels\nfrom normalized wind\nspeed ratios from the WNW and S booms. Median ratios are represented with\nmedian absolute deviations as error bars and error bars are plotted every\n15°.  A2 80-m wind direction is taken from the wind vane on the WNW\nboom.   Tower\nboom layout diagram denotes usable wind directions from No Wake sector.\nImage courtesy of: D. Rajewski</p>\n\n<section id=\"remote\">\n<h3>Remote sensors and surface met station</h3>\n</section>\n\n<p>Measurements from wind profiling systems complement understanding of\nlow-level stability and turbulence measurements from the tall towers.\nA sodar was installed 140 m northeast of A2 May 1, 2018 (Figures 8a and 8b).\nA lidar was also positioned near the base of the A2 tower in May 2018.\nHorizontal and vertical wind speed, wind direction, turbulence intensity,\nand data quality are monitored at ten heights from 40 m to 200 m every ten\nminutes from both the lidar and sodar.</p>\n\n<p>A hyperspectral and infrared camera were installed on the A2 tower at 80 m\nduring the 2018 growing season to monitor field-scale variations in\ncrop water use and plant photosynthetic activity. A surface met station\n(Figure 9) was installed 10 m southwest of the A2 tower base in September\n2018 and consists of a tripod mast with sensors for 2 m air temperature and\nrelative humidity, 2 m wind speed and wind direction, 2 m pressure,\nincoming solar radiation, and precipitation.</p>\n\n<p><img src=\"figures/figure8.png\" class=\"img-fluid\">\n<br /><strong>Figure 8:</strong> Sodar wind profiler in the vicinity of the A2\ntower during the 2018 growing season (a) and after harvest (b).\nImages courtesy of S. Purdy.</p>\n\n<p><img src=\"figures/figure9.png\" class=\"img-fluid\">\n<br /><strong>Figure 9:</strong> Surface meteorology station near the A2\ntower base after the 2018 growing season. Image courtesy of S. Purdy.</p>\n\n\n<section id=\"data\">\n<h3>Tower Data</h3>\n</section>\n\n<p>Two continuous data streams from the towers operate at different sampling\nrates.  Temperature, relative humidity, horizontal wind speed, wind\ndirection, and pressure are reported and archived a 1-Hz, while\n3-component wind speed and virtual temperature are reported at\n20-Hz by sonic anemometers.   Archives of the continuous record of the\n1-Hz data began in June 2016.  Data were recorded episodically from the\nsonic anemometers starting November 2016.</p>\n\n<p>One-minute average plots from select data streams for last 36 hours are available at:\n<br /><a href=\"https://talltowers.agron.iastate.edu/plots/\">https://talltowers.agron.iastate.edu/plots/</a>\n</p>\n\n<p>A simple plotting tool is available to display and download limited time periods of data:\n<br /><a href=\"/plotting/auto/?_wait=no&q=158&station=ETTI4\">here</a></p>\n\n<p>Find data and additional documentation about the datasets at the\n<a href=\"https://talltowers.agron.iastate.edu\">IAO data archive</a>.</p>\n\n<section id=\"cwex\">\n<h3>Crop/Wind-energy Experiment (CWEX)</h3>\n</section>\n\n<p>A series of field experiments was conducted in advance of construction of\nthe tall towers from 2009-2013 in the vicinity of the tower locations taking\nadvantage of their proximity to a 200-turbine utility-scale wind farm.\nMore details of the field sites, observing facilities, data archives and\nscientific results can be found in the publications and presentations\nlisted below.</p>\n\n<section id=\"contact\">\n<h3>Contact Information</h3>\n</section>\n\n<p>For information on the IAO facilities contact E. S. Takle (\n<a href=\"mailto:gstakle@iastate.edu\">gstakle@iastate.edu</a>)</p>\n\n<section id=\"ack\">\n<h3>Acknowledgements</h3>\n</section>\n\n<p>The IAO towers and associated instrumentation were funded by an\nNSF/EPSCoR grant to the state of Iowa (Grant #1101284) and a\nfollow-on NSF/AGS grant #1701278.  An Opportunity Grant (#OG-17-001)\nfrom the Iowa Energy Center provided bridge funding that\nsupported research contributing to the success of the follow-on proposal to\n NSF.  Any opinions, findings, and conclusions or recommendations expressed\nin publications resulting from the bridge funding are those of the authors\nand do not necessarily reflect the views of the Iowa Energy Center.</p>\n\n<p>Partial support for this research was also provided by the\nNSF ISU Wind-Energy Science, Engineering and Policy IGERT grant (1069283),\nHoward Hughes Medical Institute grant, Pioneer Hi-Bred Professorship in\nAgronomy, and the USDA-NIFA Hatch Project IOWA4414.</p>\n\n<p>Funding from seed grants from the Ames Laboratory/USDOE and the Center for\nGlobal and Regional Environmental Research, together with in-kind\ncontributions for pre-construction exploratory research were provided by the\nNational Renewable Energy Laboratory and the\nUniversity of Colorado (J. Lundquist), the National Laboratory for\nAgriculture and the Environment, and the National Center for\nAtmospheric Research.  These contributions made possible the\nCrop/Wind-energy Experiments (CWEX-10, CWEX-11, CWEX-12, and CWEX-13)\nthat laid the scientific basis for the concept of the IAO.\n</p>\n\n<section id=\"publications\">\n<h3>Publications from the Crop/Wind-energy Experiments and the Iowa Atmospheric Observatory</h3>\n</section>\n\n<div class=\"hangs\">\n<p>Takle, E. S., 2017: Climate. In M. Perrow, ed., 2017:\nWildlife and Wind Farms – Conflicts and Solutions. Volume I.\nOnshore Potential Effects.  Pelagic Publishing. 298 pp. ISBN 9781784271190.</p>\n\n<p>Takle, E. S., D. A Rajewski, and S. I. Purdy, 2017:\nThe Iowa Atmospheric Observatory: Revealing the unique boundary-layer\ncharacteristics of a wind farm.  Earth Interactions in review</p>\n\n<p>Rajewski, Daniel A., Eugene S. Takle, John H. Prueger, and\nRussell K. Doorenbos, 2016:  Toward understanding the physical\nlink between turbines and microclimate impacts from in situ\nmeasurements in a large wind farm.  J. Geophys. Res. Atmos., 121,\n<a href=\"http://onlinelibrary.wiley.com/doi/10.1002/2016JD025297/abstract\">doi:10.1002/2016JD025297</a></p>\n\n<p>Vanderwende, Brian J., Julie K. Lundquist, Michael E. Rhodes,\nEugene S. Takle, and Samantha Irvin, 2015:  Observing and simulating the\nsummertime low-level jet in central Iowa.  Mon. Wea. Rev., 143, 2319-2339.</p>\n\n<p>Takle,  E S., D. A. Rajewski, J. K. Lundquist, W. A. Gallus, Jr., and\nA. Sharma, 2014:  Measurements in support of wind farm simulations and\npower forecasts:  The Crop/Wind-energy Experiments (CWEX).  The Science of\nMaking Torque From Wind, 2014. Journal of Physics: Conference Series, 524\n(2014) 012174  <a href=\"http://iopscience.iop.org/1742-6596/524/1/012174\">doi:10.1088/1742-6596/524/1/012174</a>.</p>\n\n<p>Lundquist, Julie K., Eugene S. Takle, Matthieu Boquet,\nBranko Kosović, Michael E. Rhodes, Daniel Rajewski, Russell Doorenbos,\nSamantha Irvin, Matthew L. Aitken, Katja Friedrich, Paul T. Quelet,\nJiwan Rana, Clara St. Martin, Brian Vanderwende, and Rochelle Worsnop,\n2014:  Lidar observations of interacting wind turbine wakes in an onshore wind\nfarm. The Science of Making Torque From Wind, 2014.  <a href=\"http://iopscience.iop.org/1748-9326/7/1/014005\">Available online</a>.</p>\n\n<p>Rajewski, D.A., Eugene S. Takle, Julie K. Lundquist, John H.\nPrueger, Michael E. Rhodes, Richard Pfeiffer, Jerry L. Hatfield,\nKristopher K. Spoth, Russell K. Doorenbos, 2014:  Changes in fluxes of\nheat, H2O, and CO2 caused by a large wind farm.  Agric. and For. Meteor.,\n194, 175-187. <a href=\"http://www.sciencedirect.com/science/article/pii/S0168192314000914\">DOI: 10.1016/j.agrformet.2014.03.023</a></p>\n\n<p>Rajewski, D. A., Eugene S. Takle, Julie K. Lundquist, Steven Oncley,\nJohn H. Prueger, Thomas W. Horst, Michael E. Rhodes, Richard Pfeiffer,\nJerry L. Hatfield, Kristopher K. Spoth, and Russell K. Doorenbos, 2013:\nCWEX:  Crop/Wind-energy Experiment: Observations of surface-layer,\nboundary-layer and mesoscale interactions with a wind farm.\nBull. Amer. Meteor. Soc., 94, 655-672.  <a href=\"http://journals.ametsoc.org/doi/abs/10.1175/BAMS-D-11-00240.1\">doi: 10.1175/BAMS-D-11-00240</a></p>\n</div>\n\n<section id=\"presentations\">\n<h3>Presentations from the Crop/Wind-energy Experiments and the Iowa Atmospheric Observatory</h3>\n</section>\n\n<div class=\"hangs\">\n<p>18. Takle, E. S., R. A. Rajewski, S. L. Purdy, J. Sun, and S. Zilitinkevich,\n2017:  Exchanges to surface and boundary layer reconsidered:  Introducing\nFaNTASTIC-1.  International Conference on Future Technologies for\nWind Energy.  Boulder CO, October 2017. [<a href=\"http://windtechconferences.org/wp-content/uploads/2018/01/Takle-Gene-WindTech1017-FaNTASTIC-Takle-04.pdf\">Available PDF</a>]</p>\n\n<p>17. Rajewski, D. A., E. S. Takle, and S. L. Purdy, 2017:  Tall tower\nmeasurements of wake loss characteristics within a low-density wind farm.\nInternational Conference on Future Technologies for Wind Energy.  Boulder CO,\nOctober 2017. [<a href=\"http://windtechconferences.org/wp-content/uploads/2018/01/Rajewski_D_TallTowerMeasurements_PPT.pdf\">Available PDF</a>]</p>\n\n<p>16. Takle, Eugene S., Daryl Herzmann, and Dan Rajewski, 2016:  Wind-farm\npower production diagnostic tools with applications to wake steering.\nInvited presentation.  National Renewable Energy Laboratory (DOE),\nBoulder CO. [<a href=\"/pickup/iao/nrel_wake_tools.pdf\">Available PDF</a>]</p>\n\n<p>15. Takle, Eugene S., Daryl Herzmann, and Dan Rajewski, 2016:  Power-production diagnostic tools for low-density wind farms with applications to wake steering. Amer. Geophys Union Fall Meeting.  San Francisco.   December\n<p>14. Takle, E. S., 2017:  Wind Energy:  An outdoor laboratory has been established to collect reliable wind speed and turbulence data for use with computational models of wind turbine systems.  Poster displayed at the EPSCoR Legislator Breakfast at the Iowa Statehouse.\n<p>13. Takle, E. S., D. A. Rajewski, and S. L. Irvin, 2017:  Identical twin towers for studies of natural turbuence and wind farm boundary layers.  8th Conf. on Wea., Climate, Water and the New Energy Economy, 23 Jan., Amer. Meteor. Soc., Seattle, WA.\n<p>12. Rajewski, Daniel A., Eugene S. Takle, Julie K. Lundquist, Samantha L. Irvin, and Russell K. Doorenbos, 2015:  Spatial characteristics of power variability from a large wind farm in Iowa during the 2013 Crop/Wind Energy Experiment (CWEX-13).  Sixth Conference on Weather, Climate, and the New Energy Economy. American Meteorological Society. Phoenix, AZ\n<p>11. Lundquist, Julie K., E. S. Takle, M. Boquet, B. Kosovic, M. E. Rhodes, D. A. Rajewski, R. K. Doorenbos, S. Irvin, M. Aitken, K. Friedrich, P. T. Quelet, J. Rana, C. St. Martin, B. J. Vanderwende, and R. Worsnop, 2014:  Lidar observations of the variation of wind turbine wakes with inflow conditions in an onshore wind farm.  21st Symposium on Boundary Layers and Turbulence.  American Meteorological Society.  Leeds, UK.\n<p>10. Lundquist, J. K., E.S. Takle, M. Boquet, B. Kosovic, M.E. Rhodes, D. Rajewski, R. Doorenboos, S. Irvin, M.L. Aitken, K. Friedrich, P.T. Quelet, J. Rana, C. St. Martin, B. Vanderwende, W. Rochelle, Lidar observations of interacting wind turbine wakes in an onshore wind farm, European Wind Energy Association 2014. (2014) 33–36.\n<p>9. Selvaraj, S.,  A. Chaves, E. Takle and A. Sharma, “Numerical Prediction of Surface Flow Convergence Phenomenon in Windfarms” in Proc. of the Conference on Wind Energy Science and Technology, RUZGEM, Ankara, Turkey, Oct 3-4, 2013.\n<p>8. Rajewski, D. A., E. S. Takle, J. H. Prueger, S. Oncley, J. K. Lundquist, T. W. Horst, M. E. Rhodes, R. L. Pfeiffer, J. L. Hatfield, K. K. Spoth, and R. Doorenbos, 2013:  Wind Turbine Wake Investigation from Surface Measurements during the 2010 and 2011 Crop Wind-Energy EXperiments (CWEX-10/11).  Fourth Conference on Weather, Climate, and the New Energy Economy.  American Meteorological Society.  Austin, TX.\n<p>7. Takle, E. S., D. A. Rajewski, J. Prueger, Steven Oncley, J. K. Lundquist, Thomas W. Horst, Michael E. Rhodes, Richard Pfeiffer, Jerry L. Hatfield, Kristopher K. Spoth, Russell K. Doorenbos, 2013:  CWEX-10/11:  Overview of Results From the First Two Crop/Wind-Energy Experiments.   Fourth Conference on Weather, Climate, and the New Energy Economy.  American Meteorological Society.  Austin, TX.\n<p>6. Takle, E. S., D. A. Rajewski, J. Prueger, Steven Oncley, J. K. Lundquist, Thomas W. Horst, Michael E. Rhodes, Richard Pfeiffer, Jerry L. Hatfield, Kristopher K. Spoth, Russell K. Doorenbos, 2012:  CWEX-10/11:  Overview of Results From the First Two Crop/Wind-Energy Experiments.  American Geophysical Union Fall Meeting, San Francisco.\n<p>5. Rajewski, D. A.,  E. S. Takle, J. H. Prueger, S.P. Oncley, T. W. Horst, R. Pfeiffer, J. L. Hatfield, K. K. Spoth, R.K. Doorenbos, 2012:  Evaluation of surface energy and carbon fluxes within a large wind farm during the CWEX-10/11 Crop Wind-Energy eXperiments.  American Geophysical Union Fall Meeting, San Francisco.\n<p>4. Rajewski, D. R., E. S. Takle, T. W. Horst, S. P. Oncley, J.K. Lundquist, M. E. Rhodes, and K. K. Spoth, 2012:  Crop-Wind-Energy Experiment 2011 (CWEX11).  16th Symposium on Meteorological Observation and Instrumentation.   Amer. Meteorol. Soc. 23-26 Janurary. New Orleans.\n<p>3. Takle, E. S., D. A. Rajewski, J. H. Prueger, J. K. Lundquist, M. Aitken, M. E. Rhodes, A. J. Deppe, F. E. Goodman, K. C. Carter, L. Mattison, S. L. Rabideau, A. J. Rosenberg, C. L. Whitfield, and J. Hatfield, 2010:  Wind and flux measurements in a windfarm co-located with agricultural production. Presented at the American Geophysical Union Fall Meeting, San Francisco.  (Invited presentation)\n<p>2. Rhodes, M. E., , M. L. Aitken, J. K. Lundquist, E. S. Takle, and J. Prueger, 2010:  Effect of wind turbine wakes on cropland surface fluxes in the US Great Plains during a Nocturnal Low Level Jet.  Presented at the American Geophysical Union Fall Meeting, San Francisco.\n<p>1. Takle, E. S., D. A. Rajewski, M. Segal, R. Elmore, J. Hatfield, J. H. Prueger, and S. E. Taylor, 2009:  Interaction of turbine-generated turbulence with agricultural crops:  conceptual framework and prelimnary results.  Presentation at American Geophysical Union Fall Meeting, San Francisco.\n</div>\n\n</div><!-- ./col-lg-9 -->\n<div class=\"col-lg-3\" role=\"complementary\">\n<nav id=\"sidenav\" class=\"iao-sidenav card shadow-sm border-0\">\n<div class=\"card-body\">\n<h4 class=\"h6 text-uppercase text-muted mb-3\">On This Page</h4>\n<ul class=\"nav nav-pills flex-column gap-1 small\">\n <li class=\"nav-item\"><a class=\"nav-link\" href=\"#overview\">Overview</a></li>\n <li class=\"nav-item\"><a class=\"nav-link\" href=\"#locations\">Tower Locations</a></li>\n <li class=\"nav-item\"><a class=\"nav-link\" href=\"#instruments\">Instruments</a></li>\n <li class=\"nav-item\"><a class=\"nav-link\" href=\"#topography\">Topography</a></li>\n <li class=\"nav-item\"><a class=\"nav-link\" href=\"#remote\">Remote Sensors</a></li>\n <li class=\"nav-item\"><a class=\"nav-link\" href=\"#data\">Tower Data</a></li>\n <li class=\"nav-item\"><a class=\"nav-link\" href=\"#cwex\">CWEX</a></li>\n <li class=\"nav-item\"><a class=\"nav-link\" href=\"#contact\">Contacts</a></li>\n <li class=\"nav-item\"><a class=\"nav-link\" href=\"#ack\">Acknowledgements</a></li>\n <li class=\"nav-item\"><a class=\"nav-link\" href=\"#publications\">Publications</a></li>\n <li class=\"nav-item\"><a class=\"nav-link\" href=\"#presentations\">Presentations</a></li>\n</ul>\n</div>\n</nav>\n</div><!-- ./col-md-3 -->\n</div><!-- ./row -->\n\nEOM;\n\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/projects/iao/sodar_download.php",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\n\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n\n$t->title = \"Download Sodar 10 minute data\";\n\n$y1select = yearSelect(2016, date(\"Y\"), \"year1\"); \n$y2select = yearSelect(2016, date(\"Y\"), \"year2\"); \n\n$m1select = monthSelect(1, \"month1\"); \n$m2select = monthSelect(date(\"m\"), \"month2\"); \n\n$d1select = daySelect(1, \"day1\"); \n$d2select = daySelect(date(\"d\"), \"day2\");\n\n$h1select = hourSelect(0, \"hour1\");\n$h2select = hourSelect(0, \"hour2\");\n\n$ar = Array(\n    \"Etc/UTC\" => \"Coordinated Universal Time (UTC)\",\n    \"America/Chicago\" => \"America/Chicago (CST/CDT)\",\n);\n\n$tzselect = make_select(\"tz\", \"Etc/UTC\", $ar);\n        \n$t->content = <<<EOM\n\n<ol class=\"breadcrumb\">\n <li><a href=\"/projects/iao/\">IEM Iowa Atmospheric Observatory Homepage</a></li>\n <li class=\"active\">Sodar 10 minute data</li>\n</ol>\n\n<p>This interface provides a download of ten-minute data from sodar\nmeasurements collected at the ISU Tall Towers facility.</p>\n\n<h4>Citation</h4>\n\n<p>Acknowledgement is made to Iowa State University use of sodar data funded\nby the National Science Foundation (grant #1701278).</p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/sodar.py\" target=\"_blank\">\n\n<div class=\"row\"><div class=\"col-md-6\">\n\n<h4>1) Select Time Zone of Observations:</h4>\n\n{$tzselect}\n\n<h4>2) Specific Date Range:</h4>\n\n<table class=\"table table-sm\">\n<tr><th>Start Date:</th><td>{$y1select} {$m1select} {$d1select} {$h1select}</td></tr>\n<tr><th>End Date:</th><td>{$y2select} {$m2select} {$d2select} {$h2select}</td></tr>\n</table>\n\n<h4>3) Select profile heights</h4>\n\n<select name=\"z\" size=\"6\" multiple>\n    <option value=\"2\">2m (6ft)</option>\n    <option value=\"40\">40m (131ft)</option>\n    <option value=\"60\">60m (164ft)</option>\n    <option value=\"80\">80m (197ft)</option>\n    <option value=\"100\">100m (263ft)</option>\n    <option value=\"120\">120m (394ft)</option>\n    <option value=\"140\">140m (459ft)</option>\n    <option value=\"160\">160m (525ft)</option>\n    <option value=\"180\">180m (591ft)</option>\n    <option value=\"200\">200m (656ft)</option>\n</select>\n\n<h4>4) Select available variables</h4>\n\n<select name=\"var\" size=\"7\" multiple>\n    <option value=\"airtc\">Air Temperature [C] (2m only)</option>\n    <option value=\"rh\">Relative Humidity [%] (2m only)</option>\n    <option value=\"bp\">Air Pressure [mb] (2 m only)</option>\n    <option value=\"winddir\">Wind Direction [deg]</option>\n    <option value=\"ws\">Horizontal Wind Speed [m/s]</option>\n    <option value=\"ws_vert\">Vertical Wind Speed [m/s]</option>\n    <option value=\"q\">Measurement Signal Quality</option>\n    <option value=\"tb\">Turbulence (non dimensional)</option>\n    <option value=\"tbq\">Turbulence Quality</option>\n    <option value=\"tbi\">Turbulence Intensity</option>\n    <option value=\"pcpn\">Precipitation [mm]</option>\n</select>\n\n</div><div class=\"col-md-6\">\n\n<h4>7) Select Output Resolution</h4>\n\n<select name=\"window\">\n    <option value=\"1\">1 Minute</option>\n    <option value=\"5\">5 Minute</option>\n    <option value=\"10\">10 Minute</option>\n    <option value=\"15\">15 Minute</option>\n    <option value=\"20\">20 Minute</option>\n    <option value=\"30\">30 Minute</option>\n    <option value=\"60\">60 Minute</option>\n</select>\n\n\n<h4>5) Data Format:</h4>\n        \n<p>\n<select name=\"format\">\n    <option value=\"comma\">Comma Delimited</option>\n    <option value=\"excel\">Excel (.xlsx)</option>\n    <option value=\"tdf\">Tab Delimited</option>\n</select></p>\n\n<h4>6) Finally, process request</h4>\n\n  <input type=\"submit\" value=\"Get Data\">\n  <input type=\"reset\">\n\n</div></div><!-- ./row -->\n\n </form>\n\n<br /><br />\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/projects/iao/surface_download.php",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\n\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n\n$t->title = \"Download Surface Station data\";\n\n$y1select = yearSelect(2016, date(\"Y\"), \"year1\"); \n$y2select = yearSelect(2016, date(\"Y\"), \"year2\"); \n\n$m1select = monthSelect(1, \"month1\"); \n$m2select = monthSelect(date(\"m\"), \"month2\"); \n\n$d1select = daySelect(1, \"day1\"); \n$d2select = daySelect(date(\"d\"), \"day2\");\n\n$h1select = hourSelect(0, \"hour1\");\n$h2select = hourSelect(0, \"hour2\");\n\n$ar = Array(\n    \"Etc/UTC\" => \"Coordinated Universal Time (UTC)\",\n    \"America/Chicago\" => \"America/Chicago (CST/CDT)\",\n);\n\n$tzselect = make_select(\"tz\", \"Etc/UTC\", $ar);\n        \n$t->content = <<<EOM\n\n<ol class=\"breadcrumb\">\n <li><a href=\"/projects/iao/\">IEM Iowa Atmospheric Observatory Homepage</a></li>\n <li class=\"active\">Surface Station data</li>\n</ol>\n\n<p>This interface provides a download of ten-minute data from the surface met\nstation at the ISU Tall Towers facility.</p>\n\n<h4>Citation</h4>\n\n<p>Acknowledgement is made to Iowa State University use of sodar data funded\nby the National Science Foundation (grant #1701278).</p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/iao_surface.py\" target=\"_blank\">\n\n<div class=\"row\"><div class=\"col-md-6\">\n\n<h4>1) Select Time Zone of Observations:</h4>\n\n{$tzselect}\n\n<h4>2) Specific Date Range:</h4>\n\n<table class=\"table table-sm\">\n<tr><th>Start Date:</th><td>{$y1select} {$m1select} {$d1select} {$h1select}</td></tr>\n<tr><th>End Date:</th><td>{$y2select} {$m2select} {$d2select} {$h2select}</td></tr>\n</table>\n\n<h4>4) Select surface station variables</h4>\n\n<select name=\"var\" size=\"7\" multiple>\n    <option value=\"airtc\">Air Temperature [C] (2m only)</option>\n    <option value=\"rh\">Relative Humidity [%] (2m only)</option>\n    <option value=\"bp\">Air Pressure [mb] (2 m only)</option>\n    <option value=\"winddir\">Wind Direction [deg]</option>\n    <option value=\"ws\">Horizontal Wind Speed [m/s]</option>\n    <option value=\"ws_vert\">Vertical Wind Speed [m/s]</option>\n    <option value=\"q\">Measurement Signal Quality</option>\n    <option value=\"tb\">Turbulence (non dimensional)</option>\n    <option value=\"tbq\">Turbulence Quality</option>\n    <option value=\"tbi\">Turbulence Intensity</option>\n    <option value=\"pcpn\">Precipitation [mm]</option>\n</select>\n\n</div><div class=\"col-md-6\">\n\n<h4>7) Select Output Resolution</h4>\n\n<select name=\"window\">\n    <option value=\"1\">1 Minute</option>\n    <option value=\"5\">5 Minute</option>\n    <option value=\"10\">10 Minute</option>\n    <option value=\"15\">15 Minute</option>\n    <option value=\"20\">20 Minute</option>\n    <option value=\"30\">30 Minute</option>\n    <option value=\"60\">60 Minute</option>\n</select>\n\n\n<h4>5) Data Format:</h4>\n        \n<p>\n<select name=\"format\">\n    <option value=\"comma\">Comma Delimited</option>\n    <option value=\"excel\">Excel (.xlsx)</option>\n    <option value=\"tdf\">Tab Delimited</option>\n</select></p>\n\n<h4>6) Finally, process request</h4>\n\n  <input type=\"submit\" value=\"Get Data\">\n  <input type=\"reset\">\n\n</div></div><!-- ./row -->\n\n </form>\n\n<br /><br />\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/projects/iembot/channels.html",
    "content": "\n    <h3>NWS Products with P-VTEC and/or H-VTEC Included</h3>\n    <div class=\"table-responsive\">\n    <table class=\"table table-bordered table-sm\">\n    <thead class=\"table-light\">\n    <tr>\n      <th scope=\"col\" class=\"text-center\"> </th>\n      <th scope=\"col\">AFOS PIL + Product Name</th>\n      <th scope=\"col\">Directive</th>\n      <th scope=\"col\">Channel Templates Used</th>\n    </tr>\n    </thead>\n    <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_CFW\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Coastal Hazzard Message (CFW)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01003020curr.pdf\">10-320</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_CFW\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505272345-KMOB-WHUS44-CFWMOB\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">ALZ063</span> <span class=\"badge bg-light text-dark\">ALZ064</span> <span class=\"badge bg-light text-dark\">CFW...</span> <span class=\"badge bg-light text-dark\">CFWMOB</span> <span class=\"badge bg-light text-dark\">FLZ002</span> <span class=\"badge bg-light text-dark\">FLZ004</span> <span class=\"badge bg-light text-dark\">FLZ006</span> <span class=\"badge bg-light text-dark\">MOB</span> <span class=\"badge bg-light text-dark\">RP.S-CON</span> <span class=\"badge bg-light text-dark\">RP.S.AL-CON</span> <span class=\"badge bg-light text-dark\">RP.S.ALZ063-CON</span> <span class=\"badge bg-light text-dark\">RP.S.ALZ064-CON</span> <span class=\"badge bg-light text-dark\">RP.S.FL-CON</span> <span class=\"badge bg-light text-dark\">RP.S.FLZ002-CON</span> <span class=\"badge bg-light text-dark\">RP.S.FLZ004-CON</span> <span class=\"badge bg-light text-dark\">RP.S.FLZ006-CON</span> <span class=\"badge bg-light text-dark\">RP.S.MOB-CON</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>MOB <a href=\"https://mesonet.agron.iastate.edu/vtec/2015-O-CON-KMOB-RP-S-0015_2015-05-27T23:45Z\">continues Rip Currents Statement</a> for ((ALZ063)), ((ALZ064)) [AL] and ((FLZ002)), ((FLZ004)), ((FLZ006)) [FL] till May 28, 7:00 AM CDT </p></dd>\n        <dt>Twitter Example:</dt><dd>MOB continues Rip Currents Statement for ((ALZ063)), ((ALZ064)) [AL] and ((FLZ002)), ((FLZ004)), ((FLZ006)) [FL] till May 28, 7:00 AM CDT https://mesonet.agron.iastate.edu/vtec/2015-O-CON-KMOB-RP-S-0015_2015-05-27T23:45Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_EWW\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Extreme Wind Warning (EWW)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01006001curr.pdf\">10-601</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_EWW\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=200408131938-KTBW-WFUS52-EWWTBW\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">EW.W</span> <span class=\"badge bg-light text-dark\">EW.W.FL</span> <span class=\"badge bg-light text-dark\">EW.W.FLC015</span> <span class=\"badge bg-light text-dark\">EW.W.FLC071</span> <span class=\"badge bg-light text-dark\">EW.W.TBW</span> <span class=\"badge bg-light text-dark\">EWW...</span> <span class=\"badge bg-light text-dark\">EWWTBW</span> <span class=\"badge bg-light text-dark\">FLC015</span> <span class=\"badge bg-light text-dark\">FLC071</span> <span class=\"badge bg-light text-dark\">TBW</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>TBW <a href=\"https://mesonet.agron.iastate.edu/vtec/2004-O-NEW-KTBW-EW-W-0013_2004-08-13T19:38Z\">issues Extreme Wind Warning</a> for Charlotte, Lee [FL] till Aug 13, 5:00 PM EDT </p></dd>\n        <dt>Twitter Example:</dt><dd>TBW issues Extreme Wind Warning for Charlotte, Lee [FL] till Aug 13, 5:00 PM EDT https://mesonet.agron.iastate.edu/vtec/2004-O-NEW-KTBW-EW-W-0013_2004-08-13T19:38Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_FFA\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Flood Watch (FFA)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01009022curr.pdf\">10-922</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_FFA\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506062037-KDMX-WGUS63-FFADMX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">DMX</span> <span class=\"badge bg-light text-dark\">FF.A</span> <span class=\"badge bg-light text-dark\">FF.A.DMX</span> <span class=\"badge bg-light text-dark\">FF.A.IA</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ015</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ023</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ024</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ025</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ033</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ034</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ035</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ036</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ044</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ045</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ046</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ047</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ048</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ057</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ058</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ059</span> <span class=\"badge bg-light text-dark\">FF.A.IAZ060</span> <span class=\"badge bg-light text-dark\">FFA...</span> <span class=\"badge bg-light text-dark\">FFADMX</span> <span class=\"badge bg-light text-dark\">IAZ015</span> <span class=\"badge bg-light text-dark\">IAZ023</span> <span class=\"badge bg-light text-dark\">IAZ024</span> <span class=\"badge bg-light text-dark\">IAZ025</span> <span class=\"badge bg-light text-dark\">IAZ033</span> <span class=\"badge bg-light text-dark\">IAZ034</span> <span class=\"badge bg-light text-dark\">IAZ035</span> <span class=\"badge bg-light text-dark\">IAZ036</span> <span class=\"badge bg-light text-dark\">IAZ044</span> <span class=\"badge bg-light text-dark\">IAZ045</span> <span class=\"badge bg-light text-dark\">IAZ046</span> <span class=\"badge bg-light text-dark\">IAZ047</span> <span class=\"badge bg-light text-dark\">IAZ048</span> <span class=\"badge bg-light text-dark\">IAZ057</span> <span class=\"badge bg-light text-dark\">IAZ058</span> <span class=\"badge bg-light text-dark\">IAZ059</span> <span class=\"badge bg-light text-dark\">IAZ060</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>DMX <a href=\"https://mesonet.agron.iastate.edu/vtec/2015-O-NEW-KDMX-FF-A-0001_2015-06-07T01:00Z\">issues Flash Flood Watch</a> valid at Jun 6, 8:00 PM CDT for Audubon, Boone, Calhoun, Carroll, Crawford, Dallas, Greene, Guthrie, Hamilton, Humboldt, Palo Alto, Pocahontas, Polk, Sac, Story, Webster, Wright [IA] till Jun 7, 6:00 AM CDT </p></dd>\n        <dt>Twitter Example:</dt><dd>DMX issues Flash Flood Watch valid at Jun 6, 8:00 PM CDT for Audubon, Boone, Calhoun, Carroll, Crawford, Dallas, Greene, Guthrie, Hamilton, Humboldt, Palo Alto, Pocahontas, Polk, Sac, Story, Webster, Wright [IA] till Jun 7, 6:00 AM CDT https://mesonet.agron.iastate.edu/vtec/2015-O-NEW-KDMX-FF-A-0001_2015-06-07T01:00Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_FFS\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Flash Flood Statement (FFS)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01009022curr.pdf\">10-922</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_FFS\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505282304-KOUN-WGUS74-FFSOUN\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">FF.W-CON</span> <span class=\"badge bg-light text-dark\">FF.W.OK-CON</span> <span class=\"badge bg-light text-dark\">FF.W.OKC031-CON</span> <span class=\"badge bg-light text-dark\">FF.W.OUN-CON</span> <span class=\"badge bg-light text-dark\">FFS...</span> <span class=\"badge bg-light text-dark\">FFSOUN</span> <span class=\"badge bg-light text-dark\">OKC031</span> <span class=\"badge bg-light text-dark\">OUN</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>OUN <a href=\"https://mesonet.agron.iastate.edu/vtec/2015-O-CON-KOUN-FF-W-0081_2015-05-28T23:04Z\">continues Flash Flood Warning</a> for Comanche [OK] till May 28, 7:15 PM CDT </p></dd>\n        <dt>Twitter Example:</dt><dd>OUN continues Flash Flood Warning for Comanche [OK] till May 28, 7:15 PM CDT https://mesonet.agron.iastate.edu/vtec/2015-O-CON-KOUN-FF-W-0081_2015-05-28T23:04Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_FFW\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Flash Flood Warning (FFW)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01009022curr.pdf\">10-922</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_FFW\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506021530-KFWD-WGUS54-FFWFWD\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">FF.W</span> <span class=\"badge bg-light text-dark\">FF.W.FWD</span> <span class=\"badge bg-light text-dark\">FF.W.TX</span> <span class=\"badge bg-light text-dark\">FF.W.TXC139</span> <span class=\"badge bg-light text-dark\">FFW...</span> <span class=\"badge bg-light text-dark\">FFWFWD</span> <span class=\"badge bg-light text-dark\">FWD</span> <span class=\"badge bg-light text-dark\">TXC139</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>FWD <a href=\"https://mesonet.agron.iastate.edu/vtec/2015-O-NEW-KFWD-FF-W-0146_2015-06-02T15:30Z\">issues Flash Flood Warning</a> for Ellis [TX] till Jun 2, 4:30 PM CDT </p></dd>\n        <dt>Twitter Example:</dt><dd>FWD issues Flash Flood Warning for Ellis [TX] till Jun 2, 4:30 PM CDT https://mesonet.agron.iastate.edu/vtec/2015-O-NEW-KFWD-FF-W-0146_2015-06-02T15:30Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_FLS\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Flood Advisory (FLS)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01009022curr.pdf\">10-922</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_FLS\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505312312-KFFC-WGUS82-FLSFFC\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">FFC</span> <span class=\"badge bg-light text-dark\">FL.W-CAN</span> <span class=\"badge bg-light text-dark\">FL.W.FFC-CAN</span> <span class=\"badge bg-light text-dark\">FL.W.GA-CAN</span> <span class=\"badge bg-light text-dark\">FL.W.GAC135-CAN</span> <span class=\"badge bg-light text-dark\">FLS...</span> <span class=\"badge bg-light text-dark\">FLSFFC</span> <span class=\"badge bg-light text-dark\">GAC135</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>FFC <a href=\"https://mesonet.agron.iastate.edu/vtec/2015-O-CAN-KFFC-FL-W-0035_2015-05-31T23:12Z\">cancels Flood Warning</a> for Level Creek at Suwanee Dam Road near Suwanee [GA] </p></dd>\n        <dt>Twitter Example:</dt><dd>FFC cancels Flood Warning for Level Creek at Suwanee Dam Road near Suwanee [GA] https://mesonet.agron.iastate.edu/vtec/2015-O-CAN-KFFC-FL-W-0035_2015-05-31T23:12Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_FLW\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Flood Warning (FLW)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01009022curr.pdf\">10-922</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_FLW\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506070445-KOAX-WGUS43-FLWOAX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">FA.W</span> <span class=\"badge bg-light text-dark\">FA.W.NE</span> <span class=\"badge bg-light text-dark\">FA.W.NEC021</span> <span class=\"badge bg-light text-dark\">FA.W.NEC039</span> <span class=\"badge bg-light text-dark\">FA.W.NEC167</span> <span class=\"badge bg-light text-dark\">FA.W.OAX</span> <span class=\"badge bg-light text-dark\">FLW...</span> <span class=\"badge bg-light text-dark\">FLWOAX</span> <span class=\"badge bg-light text-dark\">NEC021</span> <span class=\"badge bg-light text-dark\">NEC039</span> <span class=\"badge bg-light text-dark\">NEC167</span> <span class=\"badge bg-light text-dark\">OAX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>OAX <a href=\"https://mesonet.agron.iastate.edu/vtec/2015-O-NEW-KOAX-FA-W-0009_2015-06-07T04:45Z\">issues Flood Warning</a> for Burt, Cuming, Stanton [NE] till Jun 7, 2:45 AM CDT </p></dd>\n        <dt>Twitter Example:</dt><dd>OAX issues Flood Warning for Burt, Cuming, Stanton [NE] till Jun 7, 2:45 AM CDT https://mesonet.agron.iastate.edu/vtec/2015-O-NEW-KOAX-FA-W-0009_2015-06-07T04:45Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_MWW\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Marine Weather Warning (MWW)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01003015curr.pdf\">10-315</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_MWW\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        <dt>Notes</dt><dd>This product does not get routed to the <span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> channel.  This is because the product is very frequently issued for offices with marine zones.</dd>\n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091353-KLOT-WHUS73-MWWLOT\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">LMZ080</span> <span class=\"badge bg-light text-dark\">LMZ261</span> <span class=\"badge bg-light text-dark\">LMZ362</span> <span class=\"badge bg-light text-dark\">LMZ364</span> <span class=\"badge bg-light text-dark\">LMZ366</span> <span class=\"badge bg-light text-dark\">LMZ563</span> <span class=\"badge bg-light text-dark\">LMZ565</span> <span class=\"badge bg-light text-dark\">LMZ567</span> <span class=\"badge bg-light text-dark\">LMZ669</span> <span class=\"badge bg-light text-dark\">LMZ671</span> <span class=\"badge bg-light text-dark\">LMZ673</span> <span class=\"badge bg-light text-dark\">LMZ675</span> <span class=\"badge bg-light text-dark\">LMZ777</span> <span class=\"badge bg-light text-dark\">LMZ779</span> <span class=\"badge bg-light text-dark\">LMZ868</span> <span class=\"badge bg-light text-dark\">LMZ870</span> <span class=\"badge bg-light text-dark\">LMZ872</span> <span class=\"badge bg-light text-dark\">LMZ874</span> <span class=\"badge bg-light text-dark\">LMZ876</span> <span class=\"badge bg-light text-dark\">LMZ878</span> <span class=\"badge bg-light text-dark\">MF.Y-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LM-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ080-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ261-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ362-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ364-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ366-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ563-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ565-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ567-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ669-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ671-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ673-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ675-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ777-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ779-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ868-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ870-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ872-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ874-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ876-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LMZ878-CON</span> <span class=\"badge bg-light text-dark\">MF.Y.LOT-CON</span> <span class=\"badge bg-light text-dark\">MWW...</span> <span class=\"badge bg-light text-dark\">MWWLOT</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>LOT <a href=\"https://mesonet.agron.iastate.edu/vtec/2015-O-CON-KLOT-MF-Y-0013_2015-06-09T13:53Z\">continues Marine Dense Fog Advisory</a> for 20 forecast zones in [LM] till Jun 9, 3:00 PM CDT </p></dd>\n        <dt>Twitter Example:</dt><dd>LOT continues Marine Dense Fog Advisory for 20 forecast zones in [LM] till Jun 9, 3:00 PM CDT https://mesonet.agron.iastate.edu/vtec/2015-O-CON-KLOT-MF-Y-0013_2015-06-09T13:53Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_NPW\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Non Convective Advisory (NPW)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005015curr.pdf\">10-515</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_NPW\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505020917-KTFX-WWUS75-NPWTFX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">HW.W-CAN</span> <span class=\"badge bg-light text-dark\">HW.W.MT-CAN</span> <span class=\"badge bg-light text-dark\">HW.W.MTZ009-CAN</span> <span class=\"badge bg-light text-dark\">HW.W.TFX-CAN</span> <span class=\"badge bg-light text-dark\">MTZ009</span> <span class=\"badge bg-light text-dark\">NPW...</span> <span class=\"badge bg-light text-dark\">NPWTFX</span> <span class=\"badge bg-light text-dark\">TFX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>TFX <a href=\"https://mesonet.agron.iastate.edu/vtec/2015-O-CAN-KTFX-HW-W-0012_2015-05-02T09:17Z\">cancels High Wind Warning</a> for ((MTZ009)) [MT] </p></dd>\n        <dt>Twitter Example:</dt><dd>TFX cancels High Wind Warning for ((MTZ009)) [MT] https://mesonet.agron.iastate.edu/vtec/2015-O-CAN-KTFX-HW-W-0012_2015-05-02T09:17Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_RFW\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Red Flag Warning (RFW)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01004001curr.pdf\">10-401</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_RFW\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201504231901-KMAF-WWUS84-RFWMAF\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">FW.A-CON</span> <span class=\"badge bg-light text-dark\">FW.A.MAF-CON</span> <span class=\"badge bg-light text-dark\">FW.A.NM-CON</span> <span class=\"badge bg-light text-dark\">FW.A.NMZ114-CON</span> <span class=\"badge bg-light text-dark\">FW.A.NMZ115-CON</span> <span class=\"badge bg-light text-dark\">FW.A.TX-CON</span> <span class=\"badge bg-light text-dark\">FW.A.TXZ057-CON</span> <span class=\"badge bg-light text-dark\">FW.A.TXZ258-CON</span> <span class=\"badge bg-light text-dark\">NMZ114</span> <span class=\"badge bg-light text-dark\">NMZ115</span> <span class=\"badge bg-light text-dark\">RFW...</span> <span class=\"badge bg-light text-dark\">RFWMAF</span> <span class=\"badge bg-light text-dark\">TXZ057</span> <span class=\"badge bg-light text-dark\">TXZ258</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>MAF <a href=\"https://mesonet.agron.iastate.edu/vtec/2015-O-CON-KMAF-FW-A-0009_2015-04-24T14:00Z\">continues Fire Weather Watch</a> valid at Apr 24, 9:00 AM CDT for ((NMZ114)), ((NMZ115)) [NM] and ((TXZ057)), ((TXZ258)) [TX] till Apr 24, 11:00 PM CDT </p></dd>\n        <dt>Twitter Example:</dt><dd>MAF continues Fire Weather Watch valid at Apr 24, 9:00 AM CDT for ((NMZ114)), ((NMZ115)) [NM] and ((TXZ057)), ((TXZ258)) [TX] till Apr 24, 11:00 PM CDT https://mesonet.agron.iastate.edu/vtec/2015-O-CON-KMAF-FW-A-0009_2015-04-24T14:00Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_SMW\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Special Marine Warning (SMW)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01003013curr.pdf\">10-313</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_SMW\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506071226-KMLB-WHUS52-SMWMLB\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">AMZ552</span> <span class=\"badge bg-light text-dark\">MA.W</span> <span class=\"badge bg-light text-dark\">MA.W.AM</span> <span class=\"badge bg-light text-dark\">MA.W.AMZ552</span> <span class=\"badge bg-light text-dark\">MA.W.MLB</span> <span class=\"badge bg-light text-dark\">MLB</span> <span class=\"badge bg-light text-dark\">SMW...</span> <span class=\"badge bg-light text-dark\">SMWMLB</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>MLB <a href=\"https://mesonet.agron.iastate.edu/vtec/2015-O-NEW-KMLB-MA-W-0032_2015-06-07T12:26Z\">issues Marine Warning</a> for Volusia-Brevard County Line to Sebastian Inlet 0-20 nm [AM] till 9:15 AM EDT </p></dd>\n        <dt>Twitter Example:</dt><dd>MLB issues Marine Warning for Volusia-Brevard County Line to Sebastian Inlet 0-20 nm [AM] till 9:15 AM EDT https://mesonet.agron.iastate.edu/vtec/2015-O-NEW-KMLB-MA-W-0032_2015-06-07T12:26Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_SQW\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Snow Squall Warning (SQW)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005011curr.pdf\">10-511</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_SQW\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202010191709-KDMX-WWUS53-SQWDMX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">DMX</span> <span class=\"badge bg-light text-dark\">IAC049</span> <span class=\"badge bg-light text-dark\">IAC099</span> <span class=\"badge bg-light text-dark\">IAC153</span> <span class=\"badge bg-light text-dark\">SQ.W-CON</span> <span class=\"badge bg-light text-dark\">SQ.W.DMX-CON</span> <span class=\"badge bg-light text-dark\">SQ.W.IA-CON</span> <span class=\"badge bg-light text-dark\">SQ.W.IAC049-CON</span> <span class=\"badge bg-light text-dark\">SQ.W.IAC099-CON</span> <span class=\"badge bg-light text-dark\">SQ.W.IAC153-CON</span> <span class=\"badge bg-light text-dark\">SQW...</span> <span class=\"badge bg-light text-dark\">SQWDMX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>DMX <a href=\"https://mesonet.agron.iastate.edu/vtec/2020-O-CON-KDMX-SQ-W-0001_2020-10-19T17:09Z\">continues Snow Squall Warning</a> for Dallas, Jasper, Polk [IA] till 12:45 PM CDT </p></dd>\n        <dt>Twitter Example:</dt><dd>DMX continues Snow Squall Warning for Dallas, Jasper, Polk [IA] till 12:45 PM CDT https://mesonet.agron.iastate.edu/vtec/2020-O-CON-KDMX-SQ-W-0001_2020-10-19T17:09Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_SVR\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Severe Thunderstorm Warning (SVR)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005011curr.pdf\">10-511</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_SVR\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505312108-KOKX-WUUS51-SVROKX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">NJC013</span> <span class=\"badge bg-light text-dark\">NJC017</span> <span class=\"badge bg-light text-dark\">NJC039</span> <span class=\"badge bg-light text-dark\">NYC085</span> <span class=\"badge bg-light text-dark\">OKX</span> <span class=\"badge bg-light text-dark\">SV.W</span> <span class=\"badge bg-light text-dark\">SV.W.NJ</span> <span class=\"badge bg-light text-dark\">SV.W.NJC013</span> <span class=\"badge bg-light text-dark\">SV.W.NJC017</span> <span class=\"badge bg-light text-dark\">SV.W.NJC039</span> <span class=\"badge bg-light text-dark\">SV.W.NY</span> <span class=\"badge bg-light text-dark\">SV.W.NYC085</span> <span class=\"badge bg-light text-dark\">SV.W.OKX</span> <span class=\"badge bg-light text-dark\">SVR...</span> <span class=\"badge bg-light text-dark\">SVROKX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>OKX <a href=\"https://mesonet.agron.iastate.edu/vtec/2015-O-NEW-KOKX-SV-W-0010_2015-05-31T21:08Z\">issues Severe Thunderstorm Warning</a> for Essex, Hudson, Union [NJ] and Richmond [NY] till 6:00 PM EDT </p></dd>\n        <dt>Twitter Example:</dt><dd>OKX issues Severe Thunderstorm Warning for Essex, Hudson, Union [NJ] and Richmond [NY] till 6:00 PM EDT https://mesonet.agron.iastate.edu/vtec/2015-O-NEW-KOKX-SV-W-0010_2015-05-31T21:08Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_SVS\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Severe Weather Statement (SVS)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005011curr.pdf\">10-511</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_SVS\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201503010248-KMTR-WWUS56-SVSMTR\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">CAC081</span> <span class=\"badge bg-light text-dark\">MTR</span> <span class=\"badge bg-light text-dark\">SV.W-CAN</span> <span class=\"badge bg-light text-dark\">SV.W.CA-CAN</span> <span class=\"badge bg-light text-dark\">SV.W.CAC081-CAN</span> <span class=\"badge bg-light text-dark\">SV.W.MTR-CAN</span> <span class=\"badge bg-light text-dark\">SVS...</span> <span class=\"badge bg-light text-dark\">SVSMTR</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>MTR <a href=\"https://mesonet.agron.iastate.edu/vtec/2015-O-CAN-KMTR-SV-W-0001_2015-03-01T02:48Z\">cancels Severe Thunderstorm Warning</a> for San Mateo [CA] </p></dd>\n        <dt>Twitter Example:</dt><dd>MTR cancels Severe Thunderstorm Warning for San Mateo [CA] https://mesonet.agron.iastate.edu/vtec/2015-O-CAN-KMTR-SV-W-0001_2015-03-01T02:48Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_TOR\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Tornado Warning (TOR)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005011curr.pdf\">10-511</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_TOR\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506050056-KDDC-WFUS53-TORDDC\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">DDC</span> <span class=\"badge bg-light text-dark\">KSC101</span> <span class=\"badge bg-light text-dark\">KSC135</span> <span class=\"badge bg-light text-dark\">TO.W</span> <span class=\"badge bg-light text-dark\">TO.W.DDC</span> <span class=\"badge bg-light text-dark\">TO.W.KS</span> <span class=\"badge bg-light text-dark\">TO.W.KSC101</span> <span class=\"badge bg-light text-dark\">TO.W.KSC135</span> <span class=\"badge bg-light text-dark\">TOR...</span> <span class=\"badge bg-light text-dark\">TORDDC</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>DDC <a href=\"https://mesonet.agron.iastate.edu/vtec/2015-O-NEW-KDDC-TO-W-0045_2015-06-05T00:56Z\">issues Tornado Warning</a> [tornado: RADAR INDICATED, hail: &lt;.75 IN] for Lane, Ness [KS] till 8:30 PM CDT * AT 755 PM CDT...A SEVERE THUNDERSTORM CAPABLE OF PRODUCING A TORNADO WAS LOCATED 3 MILES NORTH OF PENDENNIS...MOVING NORTHEAST AT 10 MPH.</p></dd>\n        <dt>Twitter Example:</dt><dd>DDC issues Tornado Warning [tornado: RADAR INDICATED, hail: &lt;.75 IN] for Lane, Ness [KS] till 8:30 PM CDT https://mesonet.agron.iastate.edu/vtec/2015-O-NEW-KDDC-TO-W-0045_2015-06-05T00:56Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_WCN\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Watch County Notification (WCN)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005011curr.pdf\">10-511</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_WCN\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506060257-KLZK-WWUS64-WCNLZK-AAB\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">ARC005</span> <span class=\"badge bg-light text-dark\">ARC023</span> <span class=\"badge bg-light text-dark\">ARC063</span> <span class=\"badge bg-light text-dark\">ARC065</span> <span class=\"badge bg-light text-dark\">ARC067</span> <span class=\"badge bg-light text-dark\">ARC085</span> <span class=\"badge bg-light text-dark\">ARC089</span> <span class=\"badge bg-light text-dark\">ARC095</span> <span class=\"badge bg-light text-dark\">ARC117</span> <span class=\"badge bg-light text-dark\">ARC135</span> <span class=\"badge bg-light text-dark\">ARC137</span> <span class=\"badge bg-light text-dark\">ARC145</span> <span class=\"badge bg-light text-dark\">ARC147</span> <span class=\"badge bg-light text-dark\">LZK</span> <span class=\"badge bg-light text-dark\">SV.A-CAN</span> <span class=\"badge bg-light text-dark\">SV.A.AR-CAN</span> <span class=\"badge bg-light text-dark\">SV.A.ARC005-CAN</span> <span class=\"badge bg-light text-dark\">SV.A.ARC023-CAN</span> <span class=\"badge bg-light text-dark\">SV.A.ARC063-CAN</span> <span class=\"badge bg-light text-dark\">SV.A.ARC065-CAN</span> <span class=\"badge bg-light text-dark\">SV.A.ARC067-CAN</span> <span class=\"badge bg-light text-dark\">SV.A.ARC085-CAN</span> <span class=\"badge bg-light text-dark\">SV.A.ARC089-CAN</span> <span class=\"badge bg-light text-dark\">SV.A.ARC095-CAN</span> <span class=\"badge bg-light text-dark\">SV.A.ARC117-CAN</span> <span class=\"badge bg-light text-dark\">SV.A.ARC135-CAN</span> <span class=\"badge bg-light text-dark\">SV.A.ARC137-CAN</span> <span class=\"badge bg-light text-dark\">SV.A.ARC145-CAN</span> <span class=\"badge bg-light text-dark\">SV.A.ARC147-CAN</span> <span class=\"badge bg-light text-dark\">SV.A.LZK-CAN</span> <span class=\"badge bg-light text-dark\">WCN...</span> <span class=\"badge bg-light text-dark\">WCNLZK</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>LZK <a href=\"https://mesonet.agron.iastate.edu/vtec/2015-O-CAN-KLZK-SV-A-0261_2015-06-06T02:57Z\">cancels Severe Thunderstorm Watch</a> for Baxter, Cleburne, Independence, Izard, Jackson, Lonoke, Marion, Monroe, Prairie, Sharp, Stone, White, Woodruff [AR] </p></dd>\n        <dt>Twitter Example:</dt><dd>LZK cancels Severe Thunderstorm Watch for Baxter, Cleburne, Independence, Izard, Jackson, Lonoke, Marion, Monroe, Prairie, Sharp, Stone, White, Woodruff [AR] https://mesonet.agron.iastate.edu/vtec/2015-O-CAN-KLZK-SV-A-0261_2015-06-06T02:57Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_WSW\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Winter Weather Message (WSW)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005013curr.pdf\">10-513</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;vtec_phenomena&gt;.&lt;vtec_significance&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_WSW\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201503221424-KBUF-WWUS41-WSWBUF\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">BUF</span> <span class=\"badge bg-light text-dark\">LE.Y-CAN</span> <span class=\"badge bg-light text-dark\">LE.Y.BUF-CAN</span> <span class=\"badge bg-light text-dark\">LE.Y.NY-CAN</span> <span class=\"badge bg-light text-dark\">LE.Y.NYZ003-CAN</span> <span class=\"badge bg-light text-dark\">LE.Y.NYZ004-CAN</span> <span class=\"badge bg-light text-dark\">LE.Y.NYZ014-CAN</span> <span class=\"badge bg-light text-dark\">NYZ003</span> <span class=\"badge bg-light text-dark\">NYZ004</span> <span class=\"badge bg-light text-dark\">NYZ014</span> <span class=\"badge bg-light text-dark\">WSW...</span> <span class=\"badge bg-light text-dark\">WSWBUF</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>BUF <a href=\"https://mesonet.agron.iastate.edu/vtec/2015-O-CAN-KBUF-LE-Y-0016_2015-03-22T14:24Z\">cancels Lake Effect Snow Advisory</a> for Monroe, Ontario, Wayne [NY] </p></dd>\n        <dt>Twitter Example:</dt><dd>BUF cancels Lake Effect Snow Advisory for Monroe, Ontario, Wayne [NY] https://mesonet.agron.iastate.edu/vtec/2015-O-CAN-KBUF-LE-Y-0016_2015-03-22T14:24Z<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        </table></div>\n    <h3>NWS Local Office / National Products</h3>\n    <div class=\"table-responsive\">\n    <table class=\"table table-bordered table-sm\">\n    <thead class=\"table-light\">\n    <tr>\n      <th scope=\"col\" class=\"text-center\"> </th>\n      <th scope=\"col\">AFOS PIL + Product Name</th>\n      <th scope=\"col\">Directive</th>\n      <th scope=\"col\">Channel Templates Used</th>\n    </tr>\n    </thead>\n    <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_ADA\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Administrative Message (ADA)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_ADA\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202601281506-KNCF-NOUS71-ADANCF\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">ADA...</span> <span class=\"badge bg-light text-dark\">ADANCF</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>NCF issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202601281506-KNCF-NOUS71-ADANCF\">Administrative Message (ADA)</a> at Jan 28, 15:06 UTC</p></dd>\n        <dt>Twitter Example:</dt><dd>#NCF issues Administrative Message (ADA) at Jan 28, 15:06 UTC https://mesonet.agron.iastate.edu/p.php?pid=202601281506-KNCF-NOUS71-ADANCF<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_ADM\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Administrative Message (ADM)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_ADM\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602181523-KNCF-NOUS72-ADMNCF\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">ADM...</span> <span class=\"badge bg-light text-dark\">ADMNCF</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>NCF issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602181523-KNCF-NOUS72-ADMNCF\">Administrative Message (ADM)</a> at Feb 18, 15:23 UTC</p></dd>\n        <dt>Twitter Example:</dt><dd>#NCF issues Administrative Message (ADM) at Feb 18, 15:23 UTC https://mesonet.agron.iastate.edu/p.php?pid=202602181523-KNCF-NOUS72-ADMNCF<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_AFD\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Area Forecast Discussion (AFD)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_AFD\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091152-KDMX-FXUS63-AFDDMX-RRA\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">AFD...</span> <span class=\"badge bg-light text-dark\">AFDDMX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>DMX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091152-KDMX-FXUS63-AFDDMX-RRA\">Area Forecast Discussion (AFD)</a> at Jun 9, 6:52 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#DMX issues Area Forecast Discussion (AFD) at Jun 9, 6:52 AM CDT https://mesonet.agron.iastate.edu/p.php?pid=201506091152-KDMX-FXUS63-AFDDMX-RRA<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_AQI\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Ground Level Ozone Forecast (AQI)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_AQI\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091200-KALY-AEUS71-AQIALY\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">AQI...</span> <span class=\"badge bg-light text-dark\">AQIALY</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>ALY issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091200-KALY-AEUS71-AQIALY\">Ground Level Ozone Forecast (AQI)</a> at Jun 9, 8:00 AM EDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#ALY issues Ground Level Ozone Forecast (AQI) at Jun 9, 8:00 AM EDT https://mesonet.agron.iastate.edu/p.php?pid=201506091200-KALY-AEUS71-AQIALY<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_AWU\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Area Weather Update (AWU)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_AWU\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091535-KTSA-FLUS74-AWUTSA\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">AWU...</span> <span class=\"badge bg-light text-dark\">AWUTSA</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>TSA issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091535-KTSA-FLUS74-AWUTSA\">Area Weather Update (AWU)</a> at Jun 9, 10:35 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#TSA issues Area Weather Update (AWU) at Jun 9, 10:35 AM CDT https://mesonet.agron.iastate.edu/p.php?pid=201506091535-KTSA-FLUS74-AWUTSA<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_AWW\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Airport Weather Warning (AWW)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_AWW\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202209092134-KTFX-WWUS85-AWWBZN\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">AWW...</span> <span class=\"badge bg-light text-dark\">AWWBZN</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>TFX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202209092134-KTFX-WWUS85-AWWBZN\">Airport Weather Warning (AWW)</a> at Sep 9, 3:34 PM MDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#TFX issues Airport Weather Warning (AWW) at Sep 9, 3:34 PM MDT ...AIRPORT WEATHER WARNING... https://mesonet.agron.iastate.edu/p.php?pid=202209092134-KTFX-WWUS85-AWWBZN<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_AVA\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Avalanche Watch (AVA)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_AVA\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602040211-KSEW-WOUS46-AVASEW\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">AVA...</span> <span class=\"badge bg-light text-dark\">AVASEW</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>SEW issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602040211-KSEW-WOUS46-AVASEW\">Avalanche Watch (AVA)</a> at Feb 4, 02:11 UTC</p></dd>\n        <dt>Twitter Example:</dt><dd>#SEW issues Avalanche Watch (AVA) at Feb 4, 02:11 UTC ...AVALANCHE WATCH IN EFFECT FOR THE WASHINGTON CASCADES NEAR AND WEST OF THE CREST SUNDAY NIGHT AND MONDAY... https://mesonet.agron.iastate.edu/p.php?pid=202602040211-KSEW-WOUS46-AVASEW<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_AVG\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Avalanche Weather Guidance (AVG)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_AVG\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202402221057-KPIH-FWUS45-AVGPIH\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">AVG...</span> <span class=\"badge bg-light text-dark\">AVGPIH</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>PIH issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202402221057-KPIH-FWUS45-AVGPIH\">Avalanche Weather Guidance (AVG)</a> at Feb 22, 3:57 AM MST</p></dd>\n        <dt>Twitter Example:</dt><dd>#PIH issues Avalanche Weather Guidance (AVG) at Feb 22, 3:57 AM MST ...truncated by daryl... https://mesonet.agron.iastate.edu/p.php?pid=202402221057-KPIH-FWUS45-AVGPIH<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_AVW\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Avalanche Warning (AVW)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_AVW\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201501050200-KSEW-WOUS46-AVWSEW\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">AVW...</span> <span class=\"badge bg-light text-dark\">AVWSEW</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>SEW issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201501050200-KSEW-WOUS46-AVWSEW\">Avalanche Warning (AVW)</a> at Jan 4, 6:00 PM PST</p></dd>\n        <dt>Twitter Example:</dt><dd>#SEW issues Avalanche Warning (AVW) at Jan 4, 6:00 PM PST ...AVALANCHE WARNING IN EFFECT FOR THE WASHINGTON CASCADES NEAR AND WEST OF THE CREST SUNDAY NIGHT AND MONDAY... https://mesonet.agron.iastate.edu/p.php?pid=201501050200-KSEW-WOUS46-AVWSEW<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_AQA\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Air Quality Alert (AQA)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_AQA\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201503130026-PAFG-AEAK79-AQAAFG\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">AQA...</span> <span class=\"badge bg-light text-dark\">AQAAFG</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>AFG issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201503130026-PAFG-AEAK79-AQAAFG\">Air Quality Alert (AQA)</a> at Mar 12, 4:26 PM AKDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#AFG issues Air Quality Alert (AQA) at Mar 12, 4:26 PM AKDT ...AIR QUALITY ALERT IN EFFECT UNTIL 5 PM AKDT FRIDAY... https://mesonet.agron.iastate.edu/p.php?pid=201503130026-PAFG-AEAK79-AQAAFG<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_BLU\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Blue Alert (BLU)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_BLU\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201502260227-KALY-WOUS41-BLUALY\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">BLU...</span> <span class=\"badge bg-light text-dark\">BLUALY</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>ALY issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201502260227-KALY-WOUS41-BLUALY\">Blue Alert (BLU)</a> at Feb 25, 8:27 PM CST</p></dd>\n        <dt>Twitter Example:</dt><dd>#ALY issues Blue Alert (BLU) at Feb 25, 8:27 PM CST https://mesonet.agron.iastate.edu/p.php?pid=201502260227-KALY-WOUS41-BLUALY<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_CAE\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Child Abduction Emergency (CAE)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_CAE\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201503030306-KJAN-WOUS44-CAEJAN\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">CAE...</span> <span class=\"badge bg-light text-dark\">CAEJAN</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>JAN issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201503030306-KJAN-WOUS44-CAEJAN\">Child Abduction Emergency (CAE)</a> at Mar 2, 9:06 PM CST</p></dd>\n        <dt>Twitter Example:</dt><dd>#JAN issues Child Abduction Emergency (CAE) at Mar 2, 9:06 PM CST https://mesonet.agron.iastate.edu/p.php?pid=201503030306-KJAN-WOUS44-CAEJAN<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_CEM\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Civil Emergency Message (CEM)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_CEM\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201502260227-KBMX-WOUS44-CEMBMX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">CEM...</span> <span class=\"badge bg-light text-dark\">CEMBMX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>BMX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201502260227-KBMX-WOUS44-CEMBMX\">Civil Emergency Message (CEM)</a> at Feb 25, 8:27 PM CST</p></dd>\n        <dt>Twitter Example:</dt><dd>#BMX issues Civil Emergency Message (CEM) at Feb 25, 8:27 PM CST https://mesonet.agron.iastate.edu/p.php?pid=201502260227-KBMX-WOUS44-CEMBMX<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_CF6\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>CF6 (CF6)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01010004curr.pdf\">10-1004</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_CF6\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602250920-KDMX-CXUS53-CF6DSM\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">CF6...</span> <span class=\"badge bg-light text-dark\">CF6DSM</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>DMX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602250920-KDMX-CXUS53-CF6DSM\">CF6 (CF6)</a> at Feb 25, 09:20 UTC</p></dd>\n        <dt>Twitter Example:</dt><dd>#DMX issues CF6 (CF6) at Feb 25, 09:20 UTC https://mesonet.agron.iastate.edu/p.php?pid=202602250920-KDMX-CXUS53-CF6DSM<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_CGR\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Coastal Weather Observations (CGR)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_CGR\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091230-KMFR-SXUS86-CGR90S\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">CGR...</span> <span class=\"badge bg-light text-dark\">CGR90S</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>MFR issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091230-KMFR-SXUS86-CGR90S\">Coastal Weather Observations (CGR)</a> at Jun 9, 5:30 AM PDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#MFR issues Coastal Weather Observations (CGR) at Jun 9, 5:30 AM PDT https://mesonet.agron.iastate.edu/p.php?pid=201506091230-KMFR-SXUS86-CGR90S<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_CLI\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Daily Climate Report (CLI)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01010004curr.pdf\">10-1004</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_CLI\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506090651-KFGF-CDUS43-CLIFGF\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">CLI...</span> <span class=\"badge bg-light text-dark\">CLIFGF</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd>GRAND FORKS UNIV. (NWS) ND <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506090651-KFGF-CDUS43-CLIFGF\">Jun 8 Climate Report</a>: High: 86 Low: 54 Precip: 0.12\" Snow: 0.0\" Snow Depth: 0\"</dd>\n        <dt>Twitter Example:</dt><dd>GRAND FORKS UNIV. (NWS) ND Jun 8 Climate: High: 86 Low: 54 Precip: 0.12\" Snow: 0.0\" Snow Depth: 0\" https://mesonet.agron.iastate.edu/p.php?pid=201506090651-KFGF-CDUS43-CLIFGF<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_CLM\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Monthly Climate Report (CLM)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01010004curr.pdf\">10-1004</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_CLM\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202203011326-KDMX-CXUS53-CLMDSM\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">CLM...</span> <span class=\"badge bg-light text-dark\">CLMDSM</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>DMX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202203011326-KDMX-CXUS53-CLMDSM\">Monthly Climate Report (CLM)</a> at Mar 1, 7:26 AM CST</p></dd>\n        <dt>Twitter Example:</dt><dd>#DMX issues Monthly Climate Report (CLM) at Mar 1, 7:26 AM CST ........ https://mesonet.agron.iastate.edu/p.php?pid=202203011326-KDMX-CXUS53-CLMDSM<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_CRF\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Contingency River Forecast (CRF)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01009012curr.pdf\">10-912</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_CRF\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201708141745-KMSR-FGUS53-CRFMIS\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">CRF...</span> <span class=\"badge bg-light text-dark\">CRFMIS</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>MSR issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201708141745-KMSR-FGUS53-CRFMIS\">Contingency River Forecast (CRF)</a> at Aug 14, 12:45 PM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#MSR issues Contingency River Forecast (CRF) at Aug 14, 12:45 PM CDT https://mesonet.agron.iastate.edu/p.php?pid=201708141745-KMSR-FGUS53-CRFMIS<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_CWA\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Center Weather Advisory (CWA)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01008003curr.pdf\">10-803</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_CWA\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602030105-KZME-FAUS21-CWAZME\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">CWA...</span> <span class=\"badge bg-light text-dark\">CWAZME</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>ZME issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602030105-KZME-FAUS21-CWAZME\">CWA 102</a> till 3 Feb 0305Z<br/>AREA OF LIFR CONDS..CIGS AOB 002 AND VIS AOB 1SM. EXP CONDS TO CONT BYD END OF PD AND WORSEN.</p></dd>\n        <dt>Twitter Example:</dt><dd>ZME issues CWA 102 till 3 Feb 0305Z ... AREA OF LIFR CONDS..CIGS AOB 002 AND VIS AOB 1SM. EXP CONDS TO CONT BYD END OF PD AND WORSEN. https://mesonet.agron.iastate.edu/p.php?pid=202602030105-KZME-FAUS21-CWAZME<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_CWF\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Coastal Waters Forecast (CWF)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_CWF\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091609-KLOX-FZUS56-CWFLOX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">CWF...</span> <span class=\"badge bg-light text-dark\">CWFLOX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>LOX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091609-KLOX-FZUS56-CWFLOX\">Coastal Waters Forecast (CWF)</a> at Jun 9, 9:09 AM PDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#LOX issues Coastal Waters Forecast (CWF) at Jun 9, 9:09 AM PDT https://mesonet.agron.iastate.edu/p.php?pid=201506091609-KLOX-FZUS56-CWFLOX<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_DGT\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Drought Information (DGT)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_DGT\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505011007-KCRP-AXUS74-DGTCRP\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">DGT...</span> <span class=\"badge bg-light text-dark\">DGTCRP</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>CRP issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505011007-KCRP-AXUS74-DGTCRP\">Drought Information (DGT)</a> at May 1, 5:07 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#CRP issues Drought Information (DGT) at May 1, 5:07 AM CDT ...DROUGHT AND ABNORMALLY DRY CONDITIONS END OVER SOUTH TEXAS... https://mesonet.agron.iastate.edu/p.php?pid=201505011007-KCRP-AXUS74-DGTCRP<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_DSM\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>DSM (DSM)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_DSM\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202601270616-KZME-CDUS27-None\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">DSMFSM</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd>KFSM <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202601270616-KZME-CDUS27-DSMFSM\">Nov 26 Daily Summary Message</a>: High: 59 Low: 46 Precip: T</dd>\n        <dt>Twitter Example:</dt><dd>High: 59 Low: 46 Precip: T<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_ESF\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Hydrologic Outlook (ESF)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_ESF\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506071650-KGID-FGUS73-ESFGID\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">ESF...</span> <span class=\"badge bg-light text-dark\">ESFGID</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>GID issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506071650-KGID-FGUS73-ESFGID\">Hydrologic Outlook (ESF)</a> at Jun 7, 11:50 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#GID issues Hydrologic Outlook (ESF) at Jun 7, 11:50 AM CDT ...Table 1--Probabilities for minormoderate and major flooding... https://mesonet.agron.iastate.edu/p.php?pid=201506071650-KGID-FGUS73-ESFGID<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_EQI\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Earthquake Information (EQI)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_EQI\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506090929-PAAQ-SEAK71-EQIAKX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">EQI...</span> <span class=\"badge bg-light text-dark\">EQIAKX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>AAQ issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506090929-PAAQ-SEAK71-EQIAKX\">Earthquake Information (EQI)</a> at Jun 9, 1:29 AM AKDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#AAQ issues Earthquake Information (EQI) at Jun 9, 1:29 AM AKDT ...THIS IS A TSUNAMI INFORMATION STATEMENT... https://mesonet.agron.iastate.edu/p.php?pid=201506090929-PAAQ-SEAK71-EQIAKX<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_EQR\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Earthquake Report (EQR)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_EQR\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505021930-KIWX-SEUS63-EQRIWX-AAA\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">EQR...</span> <span class=\"badge bg-light text-dark\">EQRIWX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>IWX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505021930-KIWX-SEUS63-EQRIWX-AAA\">Earthquake Report (EQR)</a> at May 2, 3:30 PM EDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#IWX issues Earthquake Report (EQR) at May 2, 3:30 PM EDT https://mesonet.agron.iastate.edu/p.php?pid=201505021930-KIWX-SEUS63-EQRIWX-AAA<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_EVI\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Evacuation Immediate (EVI)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_EVI\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505241133-KHGX-WOUS44-EVIHGX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">EVI...</span> <span class=\"badge bg-light text-dark\">EVIHGX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>HGX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505241133-KHGX-WOUS44-EVIHGX\">Evacuation Immediate (EVI)</a> at May 24, 6:33 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#HGX issues Evacuation Immediate (EVI) at May 24, 6:33 AM CDT https://mesonet.agron.iastate.edu/p.php?pid=201505241133-KHGX-WOUS44-EVIHGX<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_FRW\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Fire Warning (FRW)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_FRW\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201503162218-KOUN-WOUS44-FRWOUN\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">FRW...</span> <span class=\"badge bg-light text-dark\">FRWOUN</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>OUN issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201503162218-KOUN-WOUS44-FRWOUN\">Fire Warning (FRW)</a> at Mar 16, 5:18 PM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#OUN issues Fire Warning (FRW) at Mar 16, 5:18 PM CDT https://mesonet.agron.iastate.edu/p.php?pid=201503162218-KOUN-WOUS44-FRWOUN<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_FTM\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Free Text Message (FTM)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_FTM\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602201914-KRLX-NOUS61-FTMRLX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">FTM...</span> <span class=\"badge bg-light text-dark\">FTMRLX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>RLX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602201914-KRLX-NOUS61-FTMRLX\">Free Text Message (FTM)</a> at Feb 20, 19:14 UTC</p></dd>\n        <dt>Twitter Example:</dt><dd>#RLX issues Free Text Message (FTM) at Feb 20, 19:14 UTC https://mesonet.agron.iastate.edu/p.php?pid=202602201914-KRLX-NOUS61-FTMRLX<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_FWA\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Fire Weather Administrative Message (FWA)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_FWA\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505261530-KBOI-NOUS85-FWABOI\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">FWA...</span> <span class=\"badge bg-light text-dark\">FWABOI</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>BOI issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505261530-KBOI-NOUS85-FWABOI\">Fire Weather Administrative Message (FWA)</a> at May 26, 9:30 AM MDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#BOI issues Fire Weather Administrative Message (FWA) at May 26, 9:30 AM MDT https://mesonet.agron.iastate.edu/p.php?pid=201505261530-KBOI-NOUS85-FWABOI<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_FWF\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Fire Weather Planning Forecast (FWF)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_FWF\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091153-KPSR-FNUS55-FWFPSR\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">FWF...</span> <span class=\"badge bg-light text-dark\">FWFPSR</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>PSR issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091153-KPSR-FNUS55-FWFPSR\">Fire Weather Planning Forecast (FWF)</a> at Jun 9, 4:53 AM MST</p></dd>\n        <dt>Twitter Example:</dt><dd>#PSR issues Fire Weather Planning Forecast (FWF) at Jun 9, 4:53 AM MST ...THUNDERSTORMS IMPLY GUSTY WINDS... https://mesonet.agron.iastate.edu/p.php?pid=201506091153-KPSR-FNUS55-FWFPSR<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_FWS\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Fire Weather Spot Forecast (FWS)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_FWS\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505281734-KUNR-FNUS73-FWSUNR\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">FWS...</span> <span class=\"badge bg-light text-dark\">FWSUNR</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>UNR issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505281734-KUNR-FNUS73-FWSUNR\">Fire Weather Spot Forecast (FWS)</a> at May 28, 11:34 AM MDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#UNR issues Fire Weather Spot Forecast (FWS) at May 28, 11:34 AM MDT https://mesonet.agron.iastate.edu/p.php?pid=201505281734-KUNR-FNUS73-FWSUNR<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_GLF\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Open Lake Forecast (GLF)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_GLF\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091430-KBUF-FZUS61-GLFLO\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">GLF...</span> <span class=\"badge bg-light text-dark\">GLFLO</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>BUF issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091430-KBUF-FZUS61-GLFLO\">Open Lake Forecast (GLF)</a> at Jun 9, 10:30 AM EDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#BUF issues Open Lake Forecast (GLF) at Jun 9, 10:30 AM EDT https://mesonet.agron.iastate.edu/p.php?pid=201506091430-KBUF-FZUS61-GLFLO<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_HLS\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Hurricane Local Statement (HLS)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01006001curr.pdf\">10-601</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_HLS\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505100026-KCHS-WTUS82-HLSCHS\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">HLS...</span> <span class=\"badge bg-light text-dark\">HLSCHS</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>CHS issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505100026-KCHS-WTUS82-HLSCHS\">Hurricane Local Statement (HLS)</a> at May 9, 8:26 PM EDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#CHS issues Hurricane Local Statement (HLS) at May 9, 8:26 PM EDT ...TROPICAL STORM WATCH CANCELLED FOR CHARLESTON AND BERKELEY COUNTIES... https://mesonet.agron.iastate.edu/p.php?pid=201505100026-KCHS-WTUS82-HLSCHS<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_HCM\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Hydromet Coordination Message (HCM)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_HCM\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091210-KTAR-NGUS81-HCMTAR\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">HCM...</span> <span class=\"badge bg-light text-dark\">HCMTAR</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>TAR issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091210-KTAR-NGUS81-HCMTAR\">Hydromet Coordination Message (HCM)</a> at Jun 9, 8:10 AM EDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#TAR issues Hydromet Coordination Message (HCM) at Jun 9, 8:10 AM EDT https://mesonet.agron.iastate.edu/p.php?pid=201506091210-KTAR-NGUS81-HCMTAR<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_HMD\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Rainfall and Flood Outlook Product (HMD)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_HMD\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602091602-KKRF-AGUS73-HMDKRF\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">HMD...</span> <span class=\"badge bg-light text-dark\">HMDKRF</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>KRF issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602091602-KKRF-AGUS73-HMDKRF\">Rainfall and Flood Outlook Product (HMD)</a> at Feb 9, 16:02 UTC</p></dd>\n        <dt>Twitter Example:</dt><dd>#KRF issues Rainfall and Flood Outlook Product (HMD) at Feb 9, 16:02 UTC ....... https://mesonet.agron.iastate.edu/p.php?pid=202602091602-KKRF-AGUS73-HMDKRF<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_HWO\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Hazardous Weather Outlook (HWO)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005017curr.pdf\">10-517</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_HWO\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091611-KEAX-FLUS43-HWOEAX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">HWO...</span> <span class=\"badge bg-light text-dark\">HWOEAX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>EAX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091611-KEAX-FLUS43-HWOEAX\">Hazardous Weather Outlook (HWO)</a> at Jun 9, 11:11 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#EAX issues Hazardous Weather Outlook (HWO) at Jun 9, 11:11 AM CDT https://mesonet.agron.iastate.edu/p.php?pid=201506091611-KEAX-FLUS43-HWOEAX<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_HYD\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Supplementary Temp and Precip (HYD)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_HYD\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091519-KOAX-SXUS53-HYDOAX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">HYD...</span> <span class=\"badge bg-light text-dark\">HYDOAX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>OAX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091519-KOAX-SXUS53-HYDOAX\">Supplementary Temp and Precip (HYD)</a> at Jun 9, 10:19 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#OAX issues Supplementary Temp and Precip (HYD) at Jun 9, 10:19 AM CDT https://mesonet.agron.iastate.edu/p.php?pid=201506091519-KOAX-SXUS53-HYDOAX<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_ICE\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Ice Outlook (ICE)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01003030curr.pdf\">10-330</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_ICE\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201504292157-KCLE-FZUS81-ICELIO\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">ICE...</span> <span class=\"badge bg-light text-dark\">ICELIO</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>CLE issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201504292157-KCLE-FZUS81-ICELIO\">Ice Outlook (ICE)</a> at Apr 29, 5:57 PM EDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#CLE issues Ice Outlook (ICE) at Apr 29, 5:57 PM EDT https://mesonet.agron.iastate.edu/p.php?pid=201504292157-KCLE-FZUS81-ICELIO<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_LAE\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Local Area Emergency (LAE)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_LAE\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201503121714-KRLX-WOUS41-LAERLX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">LAE...</span> <span class=\"badge bg-light text-dark\">LAERLX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>RLX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201503121714-KRLX-WOUS41-LAERLX\">Local Area Emergency (LAE)</a> at Mar 12, 1:14 PM EDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#RLX issues Local Area Emergency (LAE) at Mar 12, 1:14 PM EDT ...LOCAL AREA EMERGENCY... https://mesonet.agron.iastate.edu/p.php?pid=201503121714-KRLX-WOUS41-LAERLX<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_LCO\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Local Cooperative Observation (LCO)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_LCO\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091419-KPUB-SXUS55-LCOPUB\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">LCO...</span> <span class=\"badge bg-light text-dark\">LCOPUB</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>PUB issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091419-KPUB-SXUS55-LCOPUB\">Local Cooperative Observation (LCO)</a> at Jun 9, 8:19 AM MDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#PUB issues Local Cooperative Observation (LCO) at Jun 9, 8:19 AM MDT https://mesonet.agron.iastate.edu/p.php?pid=201506091419-KPUB-SXUS55-LCOPUB<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_LSR\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Local Storm Report (LSR)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005017curr.pdf\">10-517</a></td>\n  <td><span class=\"badge bg-light text-dark\">LSR.ALL</span> <span class=\"badge bg-light text-dark\">LSR.&lt;typetext&gt;</span> <span class=\"badge bg-light text-dark\">LSR.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">LSR.&lt;state&gt;.&lt;typetext&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_LSR\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505310528-KLCH-NWUS54-LSRLCH\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">LSR.ALL</span> <span class=\"badge bg-light text-dark\">LSR.FLASH_FLOOD</span> <span class=\"badge bg-light text-dark\">LSR.TX</span> <span class=\"badge bg-light text-dark\">LSR.TX.FLASH_FLOOD</span> <span class=\"badge bg-light text-dark\">LSRLCH</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>4 E Central Gardens [Jefferson Co, TX] PUBLIC <a href=\"https://mesonet.agron.iastate.edu/p.php?by=wfo&amp;wfo=LCH&amp;sts=201505301830&amp;ets=201505301830\">reports FLASH FLOOD</a> at 30 May, 1:30 PM CDT -- SEVERAL PHOTOS RECEIVED OF FLASH FLOODING IN PORT NECHES.</p></dd>\n        <dt>Twitter Example:</dt><dd>At 1:30 PM CDT, 4 E Central Gardens [Jefferson Co, TX] PUBLIC reports FLASH FLOOD. SEVERAL PHOTOS RECEIVED OF FLASH FLOODING IN PORT NECHES. #txwx https://mesonet.agron.iastate.edu/p.php?by=wfo&amp;wfo=LCH&amp;sts=201505301830&amp;ets=201505301830<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_MCD\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>MCD (MCD)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005017curr.pdf\">10-517</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;.&lt;wfo&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_MCD\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        <dt>Notes</dt><dd>The WFOs included are based on the ones highlighted by SPC within the text and not from a spatial check of their polygon.</dd>\n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201308091725-KWNS-ACUS11-SWOMCD\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">SWO...</span> <span class=\"badge bg-light text-dark\">SWOMCD</span> <span class=\"badge bg-light text-dark\">SWOMCD.ALY</span> <span class=\"badge bg-light text-dark\">SWOMCD.BOX</span> <span class=\"badge bg-light text-dark\">SWOMCD.GYX</span> <span class=\"badge bg-light text-dark\">SWOMCD.OKX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>Storm Prediction Center issues <a href=\"https://www.spc.noaa.gov/products/md/2013/md1678.html\">Mesoscale Discussion #1678</a> concerning SEVERE POTENTIAL...WATCH UNLIKELY [watch prob: 20%] (<a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201308091725-KWNS-ACUS11-SWOMCD\">View text</a>)</p></dd>\n        <dt>Twitter Example:</dt><dd>#SPC issues MCD 1678 concerning SEVERE POTENTIAL...WATCH UNLIKELY [watch prob: 20%]: PART OF SERN NY/CT/MA/NRN RI/FAR SRN NH https://www.spc.noaa.gov/products/md/2013/md1678.html<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_MPD\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>MPD (MPD)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005017curr.pdf\">10-517</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;.&lt;wfo&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_MPD\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        <dt>Notes</dt><dd>The WFOs included are based on the ones highlighted by WPC within the text and not from a spatial check of their polygon.</dd>\n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201306100544-KWNH-AWUS01-FFGMPD\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">FFG...</span> <span class=\"badge bg-light text-dark\">FFGMPD</span> <span class=\"badge bg-light text-dark\">FFGMPD.AKQ</span> <span class=\"badge bg-light text-dark\">FFGMPD.CTP</span> <span class=\"badge bg-light text-dark\">FFGMPD.LWX</span> <span class=\"badge bg-light text-dark\">FFGMPD.MARFC</span> <span class=\"badge bg-light text-dark\">FFGMPD.PHI</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>Weather Prediction Center issues <a href=\"https://www.wpc.ncep.noaa.gov/metwatch/metwatch_mpd_multi.php?md=98&amp;yr=2013\">Mesoscale Precipitation Discussion #98</a> concerning HEAVY RAINFALL...FLASH FLOODING POSSIBLE (<a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201306100544-KWNH-AWUS01-FFGMPD\">View text</a>)</p></dd>\n        <dt>Twitter Example:</dt><dd>#WPC issues MPD 98 concerning HEAVY RAINFALL...FLASH FLOODING POSSIBLE: NRN VA...D.C....CENTRAL MD INTO SERN PA https://www.wpc.ncep.noaa.gov/metwatch/metwatch_mpd_multi.php?md=98&yr=2013<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_MIS\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Meteorological Impact Statement (MIS)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_MIS\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091627-KLUB-NZUS99-MISMA1\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">MIS...</span> <span class=\"badge bg-light text-dark\">MISMA1</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>LUB issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091627-KLUB-NZUS99-MISMA1\">Meteorological Impact Statement (MIS)</a> at Jun 9, 11:27 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#LUB issues Meteorological Impact Statement (MIS) at Jun 9, 11:27 AM CDT https://mesonet.agron.iastate.edu/p.php?pid=201506091627-KLUB-NZUS99-MISMA1<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_MWS\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Marine Weather Statement (MWS)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01003014curr.pdf\">10-314</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_MWS\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506082340-KMKX-FZUS73-MWSMKX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">MWS...</span> <span class=\"badge bg-light text-dark\">MWSMKX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>MKX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506082340-KMKX-FZUS73-MWSMKX\">Marine Weather Statement (MWS)</a> at Jun 8, 6:40 PM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#MKX issues Marine Weather Statement (MWS) at Jun 8, 6:40 PM CDT ...LINE OF GUSTY WINDS AND SCATTERED THUNDERSTORMS OVER THE WATERS... https://mesonet.agron.iastate.edu/p.php?pid=201506082340-KMKX-FZUS73-MWSMKX<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_NOW\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Short-term Forecast (NOW)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005017curr.pdf\">10-517</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_NOW\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201504221603-KARX-FPUS73-NOWARX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">NOW...</span> <span class=\"badge bg-light text-dark\">NOWARX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>ARX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201504221603-KARX-FPUS73-NOWARX\">Short-term Forecast (NOW)</a> at Apr 22, 11:03 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#ARX issues Short-term Forecast (NOW) at Apr 22, 11:03 AM CDT https://mesonet.agron.iastate.edu/p.php?pid=201504221603-KARX-FPUS73-NOWARX<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_NSH\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Nearshore Marine Forecast (NSH)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_NSH\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091450-KDLH-FZUS53-NSHDLH-AAA\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">NSH...</span> <span class=\"badge bg-light text-dark\">NSHDLH</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>DLH issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091450-KDLH-FZUS53-NSHDLH-AAA\">Nearshore Marine Forecast (NSH)</a> at Jun 9, 9:50 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#DLH issues Nearshore Marine Forecast (NSH) at Jun 9, 9:50 AM CDT https://mesonet.agron.iastate.edu/p.php?pid=201506091450-KDLH-FZUS53-NSHDLH-AAA<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_OAV\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Other Aviation Report (OAV)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_OAV\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602161848-PAWU-NOAK58-OAVAWU\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">OAV...</span> <span class=\"badge bg-light text-dark\">OAVAWU</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>AWU issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602161848-PAWU-NOAK58-OAVAWU\">Other Aviation Report (OAV)</a> at Feb 16, 18:48 UTC</p></dd>\n        <dt>Twitter Example:</dt><dd>#AWU issues Other Aviation Report (OAV) at Feb 16, 18:48 UTC ...TURB... https://mesonet.agron.iastate.edu/p.php?pid=202602161848-PAWU-NOAK58-OAVAWU<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_OMR\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Other Marine Reports (OMR)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_OMR\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602091553-KCLE-SXUS81-OMRCLE\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">OMR...</span> <span class=\"badge bg-light text-dark\">OMRCLE</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>CLE issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602091553-KCLE-SXUS81-OMRCLE\">Other Marine Reports (OMR)</a> at Feb 9, 15:53 UTC</p></dd>\n        <dt>Twitter Example:</dt><dd>#CLE issues Other Marine Reports (OMR) at Feb 9, 15:53 UTC https://mesonet.agron.iastate.edu/p.php?pid=202602091553-KCLE-SXUS81-OMRCLE<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_PFM\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Point Forecast Matrices (PFM)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_PFM\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091606-KHUN-FOUS54-PFMHUN\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">PFM...</span> <span class=\"badge bg-light text-dark\">PFMHUN</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>HUN issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091606-KHUN-FOUS54-PFMHUN\">Point Forecast Matrices (PFM)</a> at Jun 9, 11:06 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#HUN issues Point Forecast Matrices (PFM) at Jun 9, 11:06 AM CDT https://mesonet.agron.iastate.edu/p.php?pid=201506091606-KHUN-FOUS54-PFMHUN<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_PNS\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Public Information Statement (PNS)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_PNS\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506090934-KJAX-NOUS42-PNSJAX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">PNS...</span> <span class=\"badge bg-light text-dark\">PNSJAX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>JAX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506090934-KJAX-NOUS42-PNSJAX\">Public Information Statement (PNS)</a> at Jun 9, 5:34 AM EDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#JAX issues Public Information Statement (PNS) at Jun 9, 5:34 AM EDT ...THIS IS RIP CURRENT AWARENESS WEEK... https://mesonet.agron.iastate.edu/p.php?pid=201506090934-KJAX-NOUS42-PNSJAX<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_PSH\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Post Tropical Event Report (PSH)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_PSH\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602211351-PGUM-ACPQ70-PSHPQ\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">PSH...</span> <span class=\"badge bg-light text-dark\">PSHPQ</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>GUM issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602211351-PGUM-ACPQ70-PSHPQ\">Post Tropical Event Report (PSH)</a> at Feb 21, 13:51 UTC</p></dd>\n        <dt>Twitter Example:</dt><dd>#GUM issues Post Tropical Event Report (PSH) at Feb 21, 13:51 UTC https://mesonet.agron.iastate.edu/p.php?pid=202602211351-PGUM-ACPQ70-PSHPQ<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_PFWFD1\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Storm Prediction Center Day 1 Fire Weather Outlook (PFWFD1)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005012curr.pdf\">10-512</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;wfo&gt;.SPCFD1</span> <span class=\"badge bg-light text-dark\">&lt;wfo&gt;.SPCFD1.&lt;threshold&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_PFWFD1\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        <dt>Notes</dt><dd>There is no present means for county/zone based channels.</dd>\n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202103250549-KWNS-FNUS31-PFWFD1\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">ABQ</span> <span class=\"badge bg-light text-dark\">ABQ.SPCFD1</span> <span class=\"badge bg-light text-dark\">ABQ.SPCFD1.ELEV</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>The Storm Prediction Center issues <a href=\"https://www.spc.noaa.gov/products/fire_wx/2021/210325_1200_fwdy1_print.html\">Day 1 Elevated Fire Weather Risk</a> at Mar 25, 5:49z for portions of ABQ's area</p></dd>\n        <dt>Twitter Example:</dt><dd>#SPC issues Day 1 Elevated Fire Weather Risk at Mar 25, 5:49z for ABQ https://www.spc.noaa.gov/products/fire_wx/2021/210325_1200_fwdy1_print.html<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_PFWFD2\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Storm Prediction Center Day 2 Fire Weather Outlook (PFWFD2)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005012curr.pdf\">10-512</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;wfo&gt;.SPCFD2</span> <span class=\"badge bg-light text-dark\">&lt;wfo&gt;.SPCFD2.&lt;threshold&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_PFWFD2\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        <dt>Notes</dt><dd>There is no present means for county/zone based channels.</dd>\n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202103250550-KWNS-FNUS32-PFWFD2\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">ABQ</span> <span class=\"badge bg-light text-dark\">ABQ.SPCFD2</span> <span class=\"badge bg-light text-dark\">ABQ.SPCFD2.CRIT</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>The Storm Prediction Center issues <a href=\"https://www.spc.noaa.gov/products/fire_wx/2021/210326_1200_fwdy2_print.html\">Day 2 Critical Fire Weather Risk</a> at Mar 25, 5:50z for portions of ABQ's area</p></dd>\n        <dt>Twitter Example:</dt><dd>#SPC issues Day 2 Critical Fire Weather Risk at Mar 25, 5:50z for ABQ https://www.spc.noaa.gov/products/fire_wx/2021/210326_1200_fwdy2_print.html<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_PTSDY1\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Storm Prediction Center Day 1 Convective Outlook (PTSDY1)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005012curr.pdf\">10-512</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;wfo&gt;.SPCDY1</span> <span class=\"badge bg-light text-dark\">&lt;wfo&gt;.SPCDY1.&lt;threshold&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_PTSDY1\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        <dt>Notes</dt><dd>There is no present means for county/zone based channels.</dd>\n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202103251306-KWNS-WUUS01-PTSDY1\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">BMX</span> <span class=\"badge bg-light text-dark\">BMX.SPCDY1</span> <span class=\"badge bg-light text-dark\">BMX.SPCDY1.HIGH</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>The Storm Prediction Center issues <a href=\"https://www.spc.noaa.gov/products/outlook/archive/2021/day1otlk_20210325_1300.html\">Day 1 High Convective Risk</a> at Mar 25, 13:06z for portions of BMX's area</p></dd>\n        <dt>Twitter Example:</dt><dd>#SPC issues Day 1 High Convective Risk at Mar 25, 13:06z for BMX https://www.spc.noaa.gov/products/outlook/archive/2021/day1otlk_20210325_1300.html<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_PTSDY2\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Storm Prediction Center Day 2 Convective Outlook (PTSDY2)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005012curr.pdf\">10-512</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;wfo&gt;.SPCDY2</span> <span class=\"badge bg-light text-dark\">&lt;wfo&gt;.SPCDY2.&lt;threshold&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_PTSDY2\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        <dt>Notes</dt><dd>There is no present means for county/zone based channels.</dd>\n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202103250559-KWNS-WUUS02-PTSDY2\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">AKQ</span> <span class=\"badge bg-light text-dark\">AKQ.SPCDY2</span> <span class=\"badge bg-light text-dark\">AKQ.SPCDY2.MRGL</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>The Storm Prediction Center issues <a href=\"https://www.spc.noaa.gov/products/outlook/archive/2021/day2otlk_20210325_0600.html\">Day 2 Marginal Convective Risk</a> at Mar 25, 5:59z for portions of AKQ's area</p></dd>\n        <dt>Twitter Example:</dt><dd>#SPC issues Day 2 Marginal Convective Risk at Mar 25, 5:59z for AKQ https://www.spc.noaa.gov/products/outlook/archive/2021/day2otlk_20210325_0600.html<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_REC\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Recreational Forecast (REC)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_REC\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091504-KGSP-SXUS42-RECGSP-AAA\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">REC...</span> <span class=\"badge bg-light text-dark\">RECGSP</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>GSP issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091504-KGSP-SXUS42-RECGSP-AAA\">Recreational Forecast (REC)</a> at Jun 9, 11:04 AM EDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#GSP issues Recreational Forecast (REC) at Jun 9, 11:04 AM EDT ...THE FORECAST FOR MOUNT MITCHELL NC AT 6684 FT... https://mesonet.agron.iastate.edu/p.php?pid=201506091504-KGSP-SXUS42-RECGSP-AAA<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_RER\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Record Event Report (RER)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01010004curr.pdf\">10-1004</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_RER\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505210057-KDMX-SXUS73-RERALO\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">RER...</span> <span class=\"badge bg-light text-dark\">RERALO</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>DMX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505210057-KDMX-SXUS73-RERALO\">Record Event Report (RER)</a> at May 20, 7:57 PM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#DMX issues Record Event Report (RER) at May 20, 7:57 PM CDT ...RECORD COLD MAXIMUM TEMPERATURE SET AT WATERLOO IA... https://mesonet.agron.iastate.edu/p.php?pid=201505210057-KDMX-SXUS73-RERALO<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_RBG94E\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Weather Prediction Center Day 1 Excessive Rainfall Outlook (RBG94E)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01009030curr.pdf\">10-930</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;wfo&gt;.ERODY1</span> <span class=\"badge bg-light text-dark\">&lt;wfo&gt;.ERODY1.&lt;threshold&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_RBG94E\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        <dt>Notes</dt><dd>There is no present means for county/zone based channels.</dd>\n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202107141524-KWNH-MENC98-RBG94E\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">ABQ</span> <span class=\"badge bg-light text-dark\">ABQ.ERODY1</span> <span class=\"badge bg-light text-dark\">ABQ.ERODY1.SLGT</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>The Weather Prediction Center issues <a href=\"https://www.wpc.ncep.noaa.gov/qpf/excessive_rainfall_outlook_ero.php\">Day 1 Slight Risk Excessive Rainfall Outlook</a> at Jul 14, 15:24z for portions of ABQ's area</p></dd>\n        <dt>Twitter Example:</dt><dd>WPC issues Day 1 Slight Risk Excessive Rainfall Outlook at Jul 14, 15:24z for ABQ https://www.wpc.ncep.noaa.gov/qpf/excessive_rainfall_outlook_ero.php<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_RBG98E\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Weather Prediction Center Day 2 Excessive Rainfall Outlook (RBG98E)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01009030curr.pdf\">10-930</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;wfo&gt;.ERODY2</span> <span class=\"badge bg-light text-dark\">&lt;wfo&gt;.ERODY2.&lt;threshold&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_RBG98E\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        <dt>Notes</dt><dd>There is no present means for county/zone based channels.</dd>\n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202107140724-KWNH-MENU98-RBG98E\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">ABQ</span> <span class=\"badge bg-light text-dark\">ABQ.ERODY2</span> <span class=\"badge bg-light text-dark\">ABQ.ERODY2.SLGT</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>The Weather Prediction Center issues <a href=\"https://www.wpc.ncep.noaa.gov/qpf/excessive_rainfall_outlook_ero.php\">Day 2 Slight Risk Excessive Rainfall Outlook</a> at Jul 14, 7:24z for portions of ABQ's area</p></dd>\n        <dt>Twitter Example:</dt><dd>WPC issues Day 2 Slight Risk Excessive Rainfall Outlook at Jul 14, 7:24z for ABQ https://www.wpc.ncep.noaa.gov/qpf/excessive_rainfall_outlook_ero.php<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_RBG99E\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Weather Prediction Center Day 3 Excessive Rainfall Outlook (RBG99E)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01009030curr.pdf\">10-930</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;wfo&gt;</span> <span class=\"badge bg-light text-dark\">&lt;wfo&gt;.ERODY3</span> <span class=\"badge bg-light text-dark\">&lt;wfo&gt;.ERODY3.&lt;threshold&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_RBG99E\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        <dt>Notes</dt><dd>There is no present means for county/zone based channels.</dd>\n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202107140821-KWNH-MENU98-RBG99E\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">ABQ</span> <span class=\"badge bg-light text-dark\">ABQ.ERODY3</span> <span class=\"badge bg-light text-dark\">ABQ.ERODY3.MRGL</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>The Weather Prediction Center issues <a href=\"https://www.wpc.ncep.noaa.gov/qpf/excessive_rainfall_outlook_ero.php\">Day 3 Marginal Risk Excessive Rainfall Outlook</a> at Jul 14, 8:21z for portions of ABQ's area</p></dd>\n        <dt>Twitter Example:</dt><dd>WPC issues Day 3 Marginal Risk Excessive Rainfall Outlook at Jul 14, 8:21z for ABQ https://www.wpc.ncep.noaa.gov/qpf/excessive_rainfall_outlook_ero.php<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_RRM\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Rainfall Storm Total (RRM)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_RRM\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602091646-KLOT-SRUS43-RRMLOT\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">RRM...</span> <span class=\"badge bg-light text-dark\">RRMLOT</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>LOT issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602091646-KLOT-SRUS43-RRMLOT\">Rainfall Storm Total (RRM)</a> at Feb 9, 16:46 UTC</p></dd>\n        <dt>Twitter Example:</dt><dd>#LOT issues Rainfall Storm Total (RRM) at Feb 9, 16:46 UTC https://mesonet.agron.iastate.edu/p.php?pid=202602091646-KLOT-SRUS43-RRMLOT<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_RFD\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Grassland Fire Danger (RFD)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_RFD\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505201645-KOAX-FNUS63-RFDOAX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">RFD...</span> <span class=\"badge bg-light text-dark\">RFDOAX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>OAX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505201645-KOAX-FNUS63-RFDOAX\">Grassland Fire Danger (RFD)</a> at May 20, 11:45 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#OAX issues Grassland Fire Danger (RFD) at May 20, 11:45 AM CDT ...LOW FIRE DANGER TODAY... https://mesonet.agron.iastate.edu/p.php?pid=201505201645-KOAX-FNUS63-RFDOAX<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_RTP\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Regional Temperature and Precipitation (RTP)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_RTP\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091552-KGLD-ASUS63-RTPGLD\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">RTP...</span> <span class=\"badge bg-light text-dark\">RTPGLD</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>GLD issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091552-KGLD-ASUS63-RTPGLD\">Regional Temperature and Precipitation (RTP)</a> at Jun 9, 9:52 AM MDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#GLD issues Regional Temperature and Precipitation (RTP) at Jun 9, 9:52 AM MDT https://mesonet.agron.iastate.edu/p.php?pid=201506091552-KGLD-ASUS63-RTPGLD<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_RVA\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Hydrologic Summary (RVA)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_RVA\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091440-KTOP-SRUS43-RVATOP\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">RVA...</span> <span class=\"badge bg-light text-dark\">RVATOP</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>TOP issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091440-KTOP-SRUS43-RVATOP\">Hydrologic Summary (RVA)</a> at Jun 9, 9:40 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#TOP issues Hydrologic Summary (RVA) at Jun 9, 9:40 AM CDT https://mesonet.agron.iastate.edu/p.php?pid=201506091440-KTOP-SRUS43-RVATOP<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_RVD\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>River and Lake Summary (RVD)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01009022curr.pdf\">10-922</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_RVD\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091306-KMHX-FGUS52-RVDMHX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">RVD...</span> <span class=\"badge bg-light text-dark\">RVDMHX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>MHX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091306-KMHX-FGUS52-RVDMHX\">River and Lake Summary (RVD)</a> at Jun 9, 9:06 AM EDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#MHX issues River and Lake Summary (RVD) at Jun 9, 9:06 AM EDT https://mesonet.agron.iastate.edu/p.php?pid=201506091306-KMHX-FGUS52-RVDMHX<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_RVF\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>River Forecast (RVF)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01009012curr.pdf\">10-912</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_RVF\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091330-KTUA-FGUS54-RVFOUN\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">RVF...</span> <span class=\"badge bg-light text-dark\">RVFOUN</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>TUA issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091330-KTUA-FGUS54-RVFOUN\">River Forecast (RVF)</a> at Jun 9, 8:30 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#TUA issues River Forecast (RVF) at Jun 9, 8:30 AM CDT https://mesonet.agron.iastate.edu/p.php?pid=201506091330-KTUA-FGUS54-RVFOUN<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_RWS\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Regional Weather Summary (RWS)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_RWS\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091558-KDMX-AWUS83-RWSDMX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">RWS...</span> <span class=\"badge bg-light text-dark\">RWSDMX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>DMX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091558-KDMX-AWUS83-RWSDMX\">Regional Weather Summary (RWS)</a> at Jun 9, 10:58 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#DMX issues Regional Weather Summary (RWS) at Jun 9, 10:58 AM CDT https://mesonet.agron.iastate.edu/p.php?pid=201506091558-KDMX-AWUS83-RWSDMX<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_RVS\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Hydrologic Statement (RVS)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_RVS\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091352-KBMX-FGUS84-RVSBMX\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">RVS...</span> <span class=\"badge bg-light text-dark\">RVSBMX</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>BMX issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091352-KBMX-FGUS84-RVSBMX\">Hydrologic Statement (RVS)</a> at Jun 9, 8:52 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#BMX issues Hydrologic Statement (RVS) at Jun 9, 8:52 AM CDT ...Daily River Forecast For North And Central Alabama... https://mesonet.agron.iastate.edu/p.php?pid=201506091352-KBMX-FGUS84-RVSBMX<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_SAB\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Special Avalanche Bulletin (SAB)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_SAB\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202502211335-KPIH-WWUS85-SABPIH\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">SAB...</span> <span class=\"badge bg-light text-dark\">SABPIH</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>PIH issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202502211335-KPIH-WWUS85-SABPIH\">Special Avalanche Bulletin (SAB)</a> at Feb 21, 6:35 AM MST</p></dd>\n        <dt>Twitter Example:</dt><dd>#PIH issues Special Avalanche Bulletin (SAB) at Feb 21, 6:35 AM MST https://mesonet.agron.iastate.edu/p.php?pid=202502211335-KPIH-WWUS85-SABPIH<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_STF\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Tabular State Forecast (STF)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_STF\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506090916-KLKN-FPUS65-SFTLKN\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">SFT...</span> <span class=\"badge bg-light text-dark\">SFTLKN</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>LKN issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506090916-KLKN-FPUS65-SFTLKN\">State Forecast Tabular Product (SFT)</a> at Jun 9, 2:16 AM PDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#LKN issues State Forecast Tabular Product (SFT) at Jun 9, 2:16 AM PDT ...HUMBOLDT COUNTY... https://mesonet.agron.iastate.edu/p.php?pid=201506090916-KLKN-FPUS65-SFTLKN<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_SPS\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Special Weather Statement (SPS)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01005017curr.pdf\">10-517</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_first3&gt;.&lt;state&gt;</span> <span class=\"badge bg-light text-dark\">&lt;ugc&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;.&lt;ugc&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_SPS\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506090025-KGRR-WWUS83-SPSGRR\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">MIZ057</span> <span class=\"badge bg-light text-dark\">SPS...</span> <span class=\"badge bg-light text-dark\">SPS.MI</span> <span class=\"badge bg-light text-dark\">SPSGRR</span> <span class=\"badge bg-light text-dark\">SPSGRR.MIZ057</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>GRR issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506090025-KGRR-WWUS83-SPSGRR\">SIGNIFICANT WEATHER ADVISORY</a> for Kent [MI] till 9:30 PM EDT</p></dd>\n        <dt>Twitter Example:</dt><dd>SIGNIFICANT WEATHER ADVISORY for Kent [MI] till 9:30 PM EDT https://mesonet.agron.iastate.edu/p.php?pid=201506090025-KGRR-WWUS83-SPSGRR<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_SRF\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Surf Zone Forecast (SRF)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_SRF\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091553-KEKA-FZUS56-SRFEKA\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">SRF...</span> <span class=\"badge bg-light text-dark\">SRFEKA</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>EKA issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091553-KEKA-FZUS56-SRFEKA\">Surf Zone Forecast (SRF)</a> at Jun 9, 8:53 AM PDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#EKA issues Surf Zone Forecast (SRF) at Jun 9, 8:53 AM PDT https://mesonet.agron.iastate.edu/p.php?pid=201506091553-KEKA-FZUS56-SRFEKA<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_SPW\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Shelter In Place Warning (SPW)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_SPW\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201504032056-KLMK-WOUS43-SPWLMK\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">SPW...</span> <span class=\"badge bg-light text-dark\">SPWLMK</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>LMK issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201504032056-KLMK-WOUS43-SPWLMK\">Shelter In Place Warning (SPW)</a> at Apr 3, 4:56 PM EDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#LMK issues Shelter In Place Warning (SPW) at Apr 3, 4:56 PM EDT https://mesonet.agron.iastate.edu/p.php?pid=201504032056-KLMK-WOUS43-SPWLMK<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_TAF\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Terminal Aerodrome Forecast (TAF)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;wmo_source&gt;.&lt;aaa&gt;</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_TAF\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602091553-KLOT-FTUS43-TAFORD-AAB\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">KLOT.TAF</span> <span class=\"badge bg-light text-dark\">TAF...</span> <span class=\"badge bg-light text-dark\">TAFORD</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>LOT issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602091553-KLOT-FTUS43-TAFORD-AAB\">Terminal Aerodrome Forecast (TAF)</a> at Feb 9, 15:53 UTC for ORD</p></dd>\n        <dt>Twitter Example:</dt><dd>LOT issues Terminal Aerodrome Forecast (TAF) at Feb 9, 15:53 UTC for ORD https://mesonet.agron.iastate.edu/p.php?pid=202602091553-KLOT-FTUS43-TAFORD-AAB<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_TCD\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Tropical Cyclone Discussion (TCD)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_first5&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_TCD\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202010101500-KNHC-WTNT41-TCDAT1\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">TCD...</span> <span class=\"badge bg-light text-dark\">TCDAT</span> <span class=\"badge bg-light text-dark\">TCDAT1</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>NHC issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202010101500-KNHC-WTNT41-TCDAT1\">Tropical Cyclone Discussion (TCD)</a> at Oct 10, 10:00 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#NHC issues Tropical Cyclone Discussion (TCD) at Oct 10, 10:00 AM CDT https://mesonet.agron.iastate.edu/p.php?pid=202010101500-KNHC-WTNT41-TCDAT1<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_TCM\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Tropical Storm Forecast (TCM)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_first5&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_TCM\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202006280300-PHFO-WTPA21-TCMCP1\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">TCM...</span> <span class=\"badge bg-light text-dark\">TCMCP</span> <span class=\"badge bg-light text-dark\">TCMCP1</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>HFO issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202006280300-PHFO-WTPA21-TCMCP1\">Tropical Storm Forecast (TCM)</a> at Jun 28, 3:00 AM UTC</p></dd>\n        <dt>Twitter Example:</dt><dd>#HFO issues Tropical Storm Forecast (TCM) at Jun 28, 3:00 AM UTC https://mesonet.agron.iastate.edu/p.php?pid=202006280300-PHFO-WTPA21-TCMCP1<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_TCP\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>TCP (TCP)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_first5&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_TCP\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202010120300-KWNH-WTNT31-TCPAT1\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">DELTA</span> <span class=\"badge bg-light text-dark\">NHC</span> <span class=\"badge bg-light text-dark\">TCPAT</span> <span class=\"badge bg-light text-dark\">TCPAT1</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd>National Hurricane Center issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202010120300-KWNH-WTNT31-TCPAT1\">ADVISORY 30</a> for POST-TROPICAL CYCLONE DELTA</dd>\n        <dt>Twitter Example:</dt><dd>Post-Tropical Cyclone #Delta ADVISORY 30 issued. Post-tropical remnants of #Delta continue weaken, as the heavy rainfall threat diminishes late sunday night. http://go.usa.gov/W3H<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_TCU\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Tropical Cyclone Update (TCU)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_first5&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_TCU\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202010100200-KNHC-WTNT61-TCUAT1\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">TCU...</span> <span class=\"badge bg-light text-dark\">TCUAT</span> <span class=\"badge bg-light text-dark\">TCUAT1</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>NHC issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202010100200-KNHC-WTNT61-TCUAT1\">Tropical Cyclone Update (TCU)</a> at Oct 9, 9:00 PM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#NHC issues Tropical Cyclone Update (TCU) at Oct 9, 9:00 PM CDT ...9 PM CDT POSITION AND INTENSITY UPDATE... https://mesonet.agron.iastate.edu/p.php?pid=202010100200-KNHC-WTNT61-TCUAT1<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_TIB\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Tsunami Information Statement (TIB)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_TIB\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505301133-PHEB-WEPA42-TIBPAC\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">TIB...</span> <span class=\"badge bg-light text-dark\">TIBPAC</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>HEB issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201505301133-PHEB-WEPA42-TIBPAC\">Tsunami Information Statement (TIB)</a> at May 30, 11:33 AM UTC</p></dd>\n        <dt>Twitter Example:</dt><dd>#HEB issues Tsunami Information Statement (TIB) at May 30, 11:33 AM UTC ...PTWC TSUNAMI INFORMATION STATEMENT... https://mesonet.agron.iastate.edu/p.php?pid=201505301133-PHEB-WEPA42-TIBPAC<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_TID\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Tide Data (TID)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01003020curr.pdf\">10-320</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_TID\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091400-KMLB-SOUS42-TIDMLB\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">TID...</span> <span class=\"badge bg-light text-dark\">TIDMLB</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>MLB issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091400-KMLB-SOUS42-TIDMLB\">Tide Data (TID)</a> at Jun 9, 10:00 AM EDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#MLB issues Tide Data (TID) at Jun 9, 10:00 AM EDT https://mesonet.agron.iastate.edu/p.php?pid=201506091400-KMLB-SOUS42-TIDMLB<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_TOE\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Telephone Outage Emergency (TOE)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_TOE\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201501142210-KPBZ-WOUS41-TOEPBZ\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">TOE...</span> <span class=\"badge bg-light text-dark\">TOEPBZ</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>PBZ issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201501142210-KPBZ-WOUS41-TOEPBZ\">Telephone Outage Emergency (TOE)</a> at Jan 14, 5:10 PM EST</p></dd>\n        <dt>Twitter Example:</dt><dd>#PBZ issues Telephone Outage Emergency (TOE) at Jan 14, 5:10 PM EST https://mesonet.agron.iastate.edu/p.php?pid=201501142210-KPBZ-WOUS41-TOEPBZ<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_TWO\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Tropical Weather Outlook (TWO)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_first5&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_TWO\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202010161800-PHFO-ACPN50-TWOCP\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">TWO...</span> <span class=\"badge bg-light text-dark\">TWOCP</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>HFO issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202010161800-PHFO-ACPN50-TWOCP\">Tropical Weather Outlook (TWO)</a> at Oct 16, 8:00 AM HST</p></dd>\n        <dt>Twitter Example:</dt><dd>#HFO issues Tropical Weather Outlook (TWO) at Oct 16, 8:00 AM HST https://mesonet.agron.iastate.edu/p.php?pid=202010161800-PHFO-ACPN50-TWOCP<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_WSV\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Volcanic Ash Sigmet (WSV)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_WSV\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602070608-PAWU-WVAK01-WSVAK1\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">WSV...</span> <span class=\"badge bg-light text-dark\">WSVAK1</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>AWU issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602070608-PAWU-WVAK01-WSVAK1\">Volcanic Ash Sigmet (WSV)</a> at Feb 7, 06:08 UTC</p></dd>\n        <dt>Twitter Example:</dt><dd>#AWU issues Volcanic Ash Sigmet (WSV) at Feb 7, 06:08 UTC https://mesonet.agron.iastate.edu/p.php?pid=202602070608-PAWU-WVAK01-WSVAK1<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_VAA\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Volcanic Ash Advisory (VAA)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_VAA\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602090612-PAWU-FVAK21-VAAAK1\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">VAA...</span> <span class=\"badge bg-light text-dark\">VAAAK1</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>AWU issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602090612-PAWU-FVAK21-VAAAK1\">Volcanic Ash Advisory (VAA)</a> at Feb 9, 06:12 UTC</p></dd>\n        <dt>Twitter Example:</dt><dd>#AWU issues Volcanic Ash Advisory (VAA) at Feb 9, 06:12 UTC https://mesonet.agron.iastate.edu/p.php?pid=202602090612-PAWU-FVAK21-VAAAK1<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_WRK\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Work Product (WRK)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_WRK\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602201703-KLZK-NZUS03-WRKPUG\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">WRK...</span> <span class=\"badge bg-light text-dark\">WRKPUG</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>LZK issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=202602201703-KLZK-NZUS03-WRKPUG\">Work Product (WRK)</a> at Feb 20, 17:03 UTC</p></dd>\n        <dt>Twitter Example:</dt><dd>#LZK issues Work Product (WRK) at Feb 20, 17:03 UTC https://mesonet.agron.iastate.edu/p.php?pid=202602201703-KLZK-NZUS03-WRKPUG<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        <tr>\n  <td class=\"text-center align-middle\">\n    <button class=\"btn btn-sm\" type=\"button\"\n      data-bs-toggle=\"collapse\" data-bs-target=\"#channel_ZFP\"\n      aria-expanded=\"false\">\n      <i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i>\n      <span class=\"visually-hidden\">Toggle details</span>\n    </button>\n  </td>\n  <td>Zone Forecast Package (ZFP)</td>\n  <td><a href=\"https://weather.gov/directives/sym/pd01017001curr.pdf\">10-1701</a></td>\n  <td><span class=\"badge bg-light text-dark\">&lt;afos_pil&gt;</span> <span class=\"badge bg-light text-dark\">&lt;afos_pil_prefix&gt;...</span></td>\n</tr>\n<tr>\n  <td colspan=\"4\">\n    <div id=\"channel_ZFP\" class=\"collapse\">\n    <dl class=\"row mb-0\">\n        \n        <dt>Example Raw Text:</dt>\n<dd><a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091401-KBIS-FPUS53-ZFPBIS\">View Text</a></dd>\n        <dt>Channels for Product Example:</dt><dd><span class=\"badge bg-light text-dark\">ZFP...</span> <span class=\"badge bg-light text-dark\">ZFPBIS</span></dd>\n        <dt>XMPP Chatroom Example:</dt><dd><p>BIS issues <a href=\"https://mesonet.agron.iastate.edu/p.php?pid=201506091401-KBIS-FPUS53-ZFPBIS\">Zone Forecast Package (ZFP)</a> at Jun 9, 9:01 AM CDT</p></dd>\n        <dt>Twitter Example:</dt><dd>#BIS issues Zone Forecast Package (ZFP) at Jun 9, 9:01 AM CDT https://mesonet.agron.iastate.edu/p.php?pid=201506091401-KBIS-FPUS53-ZFPBIS<br /></dd>\n        </dl>\n        </div>\n        </td>\n        </tr>\n        </table></div>"
  },
  {
    "path": "htdocs/projects/iembot/index.js",
    "content": "function clean(str) {\n    const tempDiv = document.createElement(\"div\");\n    tempDiv.appendChild(document.createTextNode(str));\n    return tempDiv.innerHTML;\n}\n\nfunction urlChanger() {\n    const myid = clean(document.myForm.wfo.value.toLowerCase());\n    document.getElementById(\"wfolink\").innerHTML = `<b>URL:</b> <a href=\"https://weather.im/iembot-rss/room/${myid}chat.xml\">https://weather.im/iembot-rss/room/${myid}chat.xml</a>`;\n}\n\nfunction revdiv(myid) {\n    const elem = document.getElementById(myid);\n    const channelElem = document.getElementById(`channel_${myid}`);\n    if (window.getComputedStyle(elem).display === 'block') {\n        elem.style.display = 'none';\n    channelElem.innerHTML = '<i class=\"bi bi-plus-lg\"></i>';\n    } else {\n        window.location.hash = `#channel_${myid}`;\n        const parent = channelElem.parentElement;\n        if(parent?.parentElement) {\n            parent.parentElement.classList.add('info');\n        }\n        elem.style.display = 'block';\n    channelElem.innerHTML = '<i class=\"bi bi-dash-lg\"></i>';\n    }\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n    document.getElementById(\"wfoselect\").addEventListener(\"change\", urlChanger);\n    const tokens = window.location.href.split('#');\n    if (tokens.length === 2) {\n        const subtokens = tokens[1].split(\"_\");\n        if (subtokens.length === 2) {\n            revdiv(subtokens[1]);\n            const targetElem = document.getElementById(tokens[1]);\n            if (targetElem) {\n                if ('scrollBehavior' in document.documentElement.style) {\n                    targetElem.scrollIntoView({ behavior: \"smooth\" });\n                } else {\n                    window.scrollTo(0, targetElem.offsetTop);\n                }\n            }\n        }\n    }\n});"
  },
  {
    "path": "htdocs/projects/iembot/index.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/network.php\";\n$nt = new NetworkTable(\"WFO\");\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/database.inc.php\";\n\n$btable = <<<EOM\n<table class=\"table table-striped table-bordered\">\n<thead>\n<tr>\n  <th>Twitter/X User</th>\n  <th>Channels</th>\n</tr></thead>\n<tbody>\nEOM;\n$pgconn = iemdb(\"iembot\");\n$rs = pg_query(\n    $pgconn, <<<EOM\n    select o.screen_name, string_agg(channel_name, ', ' order by channel_name)\n    as channels from\n    iembot_twitter_oauth o, iembot_subscriptions s, iembot_channels c\n    WHERE\n        o.iembot_account_id = s.iembot_account_id and\n        o.iem_owned and s.channel_id = c.id\n    GROUP by o.screen_name ORDER by screen_name ASC\nEOM\n        );\nwhile ($row = pg_fetch_assoc($rs)) {\n    $btable .= sprintf(\n        \"<tr>\".\n        \"<td><a href=\\\"https://x.com/%s\\\">@%s</a></td>\".\n        \"<td>%s</td></tr>\",\n        $row[\"screen_name\"],\n        $row[\"screen_name\"],\n        $row[\"channels\"]\n    );\n}\n$btable .= \"</tbody></table>\";\n\n$t = new MyView();\n$t->title = \"IEMBot Project\";\n$t->jsextra = <<<EOM\n<script src=\"index.js\"></script>\nEOM;\n\n$wselect = \"<select name=\\\"wfo\\\" id=\\\"wfoselect\\\">\";\nforeach ($nt->table as $key => $val) {\n    $wselect .= \"<option value=\\\"$key\\\">[$key] \" . $val[\"name\"] . \"\\n\";\n}\n$wselect .= \"</select>\";\n\n$channels = file_get_contents('channels.html');\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n <li class=\"breadcrumb-item\"><a href=\"/current/severe.phtml\">Severe Weather</a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\">IEMBot Project</li>\n</ol>\n</nav>\n\n<p><i>iembot</i> is a XMPP chat bot that relays National Weather Service issued\ntext products to XMPP chat rooms hosted on the conference.weather.im multi-user\nchat service. <i>iembot</i> was written to aid the dissemination and use of NWS issued\nwarnings by their chat partners.</p>\n\n<ul>\n    <li><a href=\"#channels\"><i class=\"bi bi-list\"></i> IEMBot Channels</a></li>\n    <li><a href=\"#bots\"><i class=\"bi bi-list\"></i> List of IEMBots on Social Media + Channel Subscriptions</a></li>\n</ul>\n\n\n<h3>Where to access <i>iembot</i> messages?</h3>\n\n<ul>\n <li><a href=\"public.phtml\">Public Chatrooms</a> (requires XMPP client and public XMPP account)</li>\n <li><a href=\"https://weather.im/iembot/\">HTML web interface</a>  anybody can view and monitor online!</li>\n <li><a href=\"https://weather.im/live/\">Weather.IM Live Client</a>, interactive chat client.</li>\n <li>Configure IEMBot to post messages to your <a href=\"twitter.php\">Twitter/X account</a>.</li>\n <li>Configure IEMBot to post to <a href=\"/projects/iembot/mastodon\">Mastodon</a></li>\n <li>Configure IEMBot to post to your <a href=\"/projects/iembot/slack/\">Slack</a></li>\n <li>Configure IEMBot for your <a href=\"https://weather.im/iembot/config/\">Webhooks</a></li>\n</ul>\n\n<form name=\"myForm\">\n<p><img src=\"/images/rss.gif\"> RSS feed of <i>iembot</i> messages per NWS Forecast Office:\n<br /><b>WFO:</b>{$wselect}\n\n<br /><div id=\"wfolink\" style=\"float: left;\"><b>URL: </b><a href=\"https://weather.im/iembot-rss/room/abqchat.xml\">https://weather.im/iembot-rss/room/abqchat.xml</a></div>\n\n<br />\n<p>All iembot messages are here: <a href=\"https://weather.im/iembot-rss/room/botstalk.xml\">https:/weather.im/iembot-rss/room/botstalk.xml</a>\n</form>\n\n<h3>How does <i>iembot</i> work?</h3>\n\n<p><i>iembot</i> consists of two programs that run on the Iowa Mesonet server.  The first is a parser that ingests text products issued by the NWS.  The parser picks out the important information\nregarding the product and sends it via a XMPP instant message to the bot\nlogged in on the chat server.  The bot then\nroutes the incoming message to a WFO chatroom from which the product was\nissued.  The entire process takes much less than a second.</p>\n\n<h3>Why was <i>iembot</i> written?</h3>\n<ol>\n <li>During chats, the NWS should not need to relay details of already issued\n products to the chatroom.  Replication should always be avoided.</li>\n <li>During onair coverage, the media often are not able to quickly read\n severe text products that come off the printer.  Instead, they can quickly\n view the chatroom and clearly see what has just been issued.</li>\n <li>The NWS can get instant verification that their product was disseminated\n over NOAAport and processed by a computerized ingestor.</li>\n <li>With the advent of Valid Time Event Code (VTEC), the NWS can issue\n complex statements.  The bot's report of these products can help clear\n confusion with the media partners.</li>\n <li>With the products and timestamps in the chatroom logs, it is an outstanding log of how the severe weather event played out for historical review.</li>\n <li>It is a proof of concept for how NWS products can be disseminated securely and synchronously to clients in an Open Source and standards based framework.</li>\n</ol>\n\n<h3>What does <i>iembot</i> look like in the chatroom?</h3>\n\n<p>Here is a screenshot from the \"botstalk\" chatroom where <i>iembot</i> dumps all processed messages.  The text in blue can be clicked on for the product text and perhaps a visual display.<br />\n\n<img src=\"iembot.png\" class=\"img-fluid\">\n\n<a name=\"channels\"><h3>Channels</h3></a>\n\n<p>The following is a reference of the association of a NWS Text Product and\nthe channels it is assigned.  If you click on the plus button, you can expand\nthe listing to show an example product.  The channel templates should not be\nused literally, but the following are the placeholders used and what they\nmean.</p>\n\n<dl class=\"dl-horizontal\">\n <dt>&lt;afos_pil&gt;</dt><dd>The 4-6 character 'AWIPS ID' or 'AFOS PIL' used\n within the products WMO header.</dd>\n <dt>&lt;afos_pil_prefix&gt;...</dt><dd>The first three characters of the\n 'AWIPS ID' or 'AFOS PIL' used within the products WMO header.  The dots here\n are literal, so the channel to get all Record Event Reports would be \"RER...\"</dd>\n <dt>&lt;vtec_phenomena&gt;</dt><dd>2 character VTEC Phenomena</dd>\n <dt>&lt;vtec_significance&gt;</dt><dd>1 character VTEC Significance</dd>\n <dt>&lt;vtec_action&gt;</dt><dd>3 character VTEC Action</dd>\n <dt>&lt;wfo&gt;</dt><dd>3 character NWS Forecast Office Idenitifer</dd>\n <dt>&lt;ugc&gt;</dt><dd>6 character UGC Code <a href=\"/nws/list_ugcs.php\">List Codes</a></dd>\n <dt>&lt;state&gt;</dt><dd>2 character state code</dd>\n <dt>&lt;aaa&gt;</dt><dd>First 3 Characters in AWIPS ID</dd>\n <dt>&lt;wmo_source&gt;</dt><dd>Full 4 Character WMO Source ID</dd>\n </dl>\n\n<p><strong>Changelog:</strong>\n<ul>\n    <li><strong>3 Mar 2026</strong>:  The IEM website had HTTP redirects for\n    some legacy iembot URI endpoints.  Those were removed.</li>\n    <li><strong>18 May 2022:</strong> VTEC products that are purely\n    continues, cancels, or expires updates now go into more isolated\n    channels than the default phenomena/significance channels. These channels\n    have a suffix of <code>-ACT</code>ion.  For example, a continues Tornado\n    Warning statement would be in <code>TO.W-CON</code>.</li>\n    <li><strong>20 Dec 2022:</strong> Added documentation on handling of\n    ASOS/METAR wind gusts.  Mount Washington KMWN was thresholded to 80kts.\n    </li>\n</ul></p>\n\n<p><strong>ASOS/METAR Wind Gusts</strong>\n\n<p>The IEM realtime ingest attempts to properly handle wind gust and peak\nwind gust reports.  When either of these meet or exceed 50 kts, an alert like\nso is generated. <code>Dakota Hills,CO (C99) ASOS  reports gust of 54 knots\n(62.1 mph) from WNW @ 1415Z KC99 201415Z AUTO 30029G54KT 10SM CLR M12/M18 A3009 RMK AO2</code>.</p>\n\n<p>The channels associated with this alert include the corresponding WFO <code>XXX</code>,\nthe 4-character ICAO for the site <code>METAR.ICAO</code>, and in increments of ten thresholded\nwind channels for the site <code>METAR.ICAO.WIND##</code>.  This allows one to subscribe to\nalerts that meet or exceed a given threshold.  For example, a 75 knot gust for Mount Washington\n(KMWN) would go to channels <code>METAR.KMWN</code>, <code>METAR.KMWN.WIND50</code>\n, <code>METAR.KMWN.WIND60</code>, and <code>METAR.KMWN.WIND70</code>.</p>\n\n{$channels}\n\n<a name=\"bots\"><h3>IEMBots on Social Media and Channel Subscriptions</h3></a>\n\n<p>These are bots on social media controlled by the IEM. Presently, the\nchannel subscriptions are shared between the three social media services.</p>\n\n{$btable}\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/projects/iembot/mastodon/index.py",
    "content": "\"\"\"implemented in pylib/iemweb/projects/iembot/mastodon/index.py\"\"\"\n\nfrom iemweb.projects.iembot.mastodon.index import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/projects/iembot/public.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n\n$t->content = <<<EOM\n\n<h3>Accessing \"for public\" chat rooms</h3>\n\n<p>In order to keep efficient communications and quality information, the\nchatrooms hosted on the <a href=\"https://nwschat.weather.gov\">NWSChat server</a>\n are closed to the general public.\n\n<p>One of the neat features that makes this setup interesting, is that \"iembot\"\nmessages are placed in these chatrooms.  Anybody can use this setup to\nmonitor what the \"bot\" is saying.  iembot is a process that automatically \nroutes NWS text products to WFO specific chatrooms.\n\n<p>Jason Patton, a meteorology student at Iowa State, has written up a \nconfiguration page for accessing the chatrooms.\n<br /><b><a href=\"http://meteor.geol.iastate.edu/~jpatton/jabber/\">How to join a WFO chatroom</a></b>.\n\n<h4>Please note:</h4>\n<ul>\n  <li>These chatrooms do not contain the information shared on the IEM Chat \n     chat servers.</li>\n  <li>These chatrooms do not contain NWS users or media users.  Most of the\n     users are probably weather enthusiasts or perhaps chasers.</li>\n  <li>No claims of accuracy or warranties with this.  Use at your own risk!</li>\n  <li>You can not access these chatrooms with your iemchat.com Jabber account.\n    You will need to setup another jabber account to use with this service.</li>\n</ul>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/projects/iembot/slack/index.phtml",
    "content": "<?php\nrequire_once \"../../../../config/settings.inc.php\";\nrequire_once \"../../../../include/myview.php\";\n$t = new MyView();\n\n$t->content = <<<EOM\n\n<h3>Experimental Slack Support</h3>\n\n<p>Want to live life dangerously?  As with about everything on this website,\nno warranties! This feature allows you to connect your Slack workspace\nto receive IEMBot messages.</p>\n\n<p>\nStep 0: Perhaps you just want to\n<a href=\"https://join.slack.com/t/iemchat/shared_invite/zt-3qu7ungcj-WWidph~rI5g4jCu5gm1Rfw\">join IEMChat</a>\nslack workspace and receive IEMBot messages there without messing with any of\nthis!\n</p>\n\n<p>\nStep 1: Install the app to your workspace via\n<a href=\"https://weather.im/iembot-json/install\">install link</a>.  After\napproving, you should see a OAuth success message.\n</p>\n\n<p>\nStep 2: Within slack, invite the bot to your channel via the channel command\n<code>/invite @iembot</code>.\n</p>\n\n<p>\nStep 3: Within the channel on Slack, issue the bot specific command\n<code>/iembot_subscribe ChannelID</code> where <code>ChannelID</code> is the\n<a href=\"/projects/iembot/#channels\">channel codes</a>\nused by iembot for various products.  Sadly, the word \"channel\" has dual\nmeanings in this context :(\n</p>\n\n<p>As with everything iembot, this is experimental and may break at any time\nand will be constantly iterated on to improve.  Good luck! akrherz@iastate.edu\n</p>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/projects/iembot/twitter.php",
    "content": "<?php\nsession_start();\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 102);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/vendor/autoload.php\";\n\nuse Abraham\\TwitterOAuth\\TwitterOAuth;\n\nrequire_once \"../../../include/iemprop.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/database.inc.php\";\n\ndefine(\"TWITTER_KEY\", get_iemprop('bot.twitter.consumerkey'));\ndefine(\"TWITTER_SECRET\", get_iemprop('bot.twitter.consumersecret'));\nif (TWITTER_KEY == null || TWITTER_SECRET == null) {\n    http_response_code(422);\n    die(\"Twitter API keys not configured, please contact the IEM.\");\n}\n\n\n$user_id = isset($_SESSION[\"user_id\"]) ? $_SESSION[\"user_id\"] : null;\n$screen_name = isset($_SESSION[\"screen_name\"]) ? $_SESSION[\"screen_name\"] : null;\n$iembot_account_id = isset($_SESSION[\"iembot_account_id\"]) ? $_SESSION[\"iembot_account_id\"] : null;\n\n$channel = strtoupper(get_str404(\"channel\", ''));\n$channel = trim($channel);\n\n$pgconn = iemdb('iembot');\n\n$st_saveauth = iem_pg_prepare($pgconn, \"INSERT into \" .\n    \"iembot_twitter_oauth \" .\n    \"(user_id, screen_name, access_token, access_token_secret, iembot_account_id) \" .\n    \"VALUES ($1,$2,$3,$4,(select create_iembot_account($5))) \".\n    \"returning iembot_account_id\");\n$st_updateauth = iem_pg_prepare($pgconn, \"UPDATE iembot_twitter_oauth \" .\n    \"SET access_token = $1, access_token_secret = $2, updated = now(), \" .\n    \"screen_name = $3 WHERE user_id = $4 RETURNING screen_name, iembot_account_id\");\n$st_deleteauth = iem_pg_prepare(\n    $pgconn,\n    \"DELETE from iembot_twitter_oauth where user_id = $1\",\n);\n$st_selectsubs = iem_pg_prepare($pgconn, <<<EOM\n    select channel_name from iembot_channels c, iembot_subscriptions s\n    where s.iembot_account_id = $1 and c.id = s.channel_id\n    ORDER by channel_name ASC\nEOM\n);\n$st_addsub = iem_pg_prepare($pgconn, <<<EOM\n    insert into iembot_subscriptions(iembot_account_id, channel_id)\n    values ($1, (select get_or_create_iembot_channel_id($2)))\nEOM\n);\n$st_delsub = iem_pg_prepare($pgconn, <<<EOM\n    delete from iembot_subscriptions s using iembot_channels c\n    where s.channel_id = c.id and s.iembot_account_id = $1\n    and c.channel_name = $2\nEOM\n);\n$st_deletesubs = iem_pg_prepare(\n    $pgconn,\n    \"DELETE from iembot_subscriptions where iembot_account_id = $1\",\n);\n\n\nfunction reloadbot()\n{\n    return file_get_contents(\"http://iembot:9003/reload\");\n}\n\n$msg = array();\n//------------------------------------------------------------\nif (array_key_exists(\"removeme\", $_REQUEST) && $_REQUEST[\"removeme\"] == \"1\") {\n    // remove subs first due to foreign key constraints\n    pg_execute($pgconn, $st_deletesubs, array($iembot_account_id));\n    pg_execute($pgconn, $st_deleteauth, array($user_id));\n    $msg[] = \"You have been removed from the bot.\";\n    reloadbot();\n    unset($_SESSION[\"user_id\"]);\n    unset($_SESSION[\"screen_name\"]);\n}\nif (array_key_exists('add', $_REQUEST) && $channel != '' && $screen_name != '') {\n    pg_execute($pgconn, $st_addsub, array(\n        $iembot_account_id,\n        $channel\n    ));\n    reloadbot();\n    $msg[] = sprintf(\n        \"Added channel subscription %s for user %s, reloaded bot\",\n        $channel,\n        $_SESSION[\"screen_name\"]\n    );\n}\nif (array_key_exists('del', $_REQUEST) && $channel != '' && $screen_name != '') {\n    pg_execute($pgconn, $st_delsub, array(\n        $iembot_account_id,\n        $channel\n    ));\n    reloadbot();\n    $msg[] = sprintf(\n        \"Deleted channel subscription %s for user %s, reloaded bot\",\n        $channel,\n        $_SESSION[\"screen_name\"]\n    );\n}\nif (array_key_exists('cb', $_REQUEST) && isset($_SESSION['token']) && isset($_SESSION['token_secret'])) {\n    $connection = new TwitterOAuth(\n        TWITTER_KEY,\n        TWITTER_SECRET,\n        $_SESSION['token'],\n        $_SESSION['token_secret'],\n    );\n    $atoken = $connection->oauth(\n        \"oauth/access_token\",\n        array(\"oauth_verifier\" => $_REQUEST['oauth_verifier']),\n    );\n    unset($_SESSION['token']);\n    unset($_SESSION['token_secret']);\n    $user_id = $atoken['user_id'];\n    $screen_name = $atoken['screen_name'];\n    $access_token     = $atoken['oauth_token'];\n    $access_token_secret = $atoken['oauth_token_secret'];\n    if ($screen_name != '') {\n        $_SESSION['user_id'] = $user_id;\n        $_SESSION['screen_name'] = $screen_name;\n        $rs = pg_execute(\n            $pgconn,\n            $st_updateauth,\n            array(\n                $access_token,\n                $access_token_secret,\n                strtolower($screen_name),\n                $user_id\n            )\n        );\n        if (pg_num_rows($rs) == 0) {\n            $rs = pg_execute(\n                $pgconn,\n                $st_saveauth,\n                array(\n                    $user_id,\n                    strtolower($screen_name),\n                    $access_token,\n                    $access_token_secret,\n                    \"twitter\",\n                )\n            );\n        }\n        $row = pg_fetch_assoc($rs);\n        $_SESSION['iembot_account_id'] = $row['iembot_account_id'];\n        $iembot_account_id = $row['iembot_account_id'];\n        reloadbot();\n    }\n    $msg[] = sprintf(\"Saved authorization for user %s\", $screen_name);\n}\n// Careful this is done after the oauth flow above\nif (is_null($screen_name) || is_null($iembot_account_id)) {\n    $connection = new TwitterOAuth(TWITTER_KEY, TWITTER_SECRET);\n    $request_token = $connection->oauth(\n        \"oauth/request_token\",\n        [\"oauth_callback\" => \"{$EXTERNAL_BASEURL}/projects/iembot/twitter.php?cb\"]\n    );\n    $_SESSION['token'] = $token = $request_token['oauth_token'];\n    $_SESSION['token_secret'] = $request_token['oauth_token_secret'];\n    $authUrl = $connection->url(\"oauth/authorize\", array(\"oauth_token\" => $token));\n    header(\"Location: $authUrl\");\n    exit;\n}\n\n$sselect2 = \"\";\n$rs = pg_execute($pgconn, $st_selectsubs, array($iembot_account_id));\nwhile ($row = pg_fetch_assoc($rs)) {\n    $sselect2 .= sprintf(\n        '<tr><th>%s</th><td>%s</td>\n        <td><a href=\"?del&amp;channel=%s\">Unsubscribe</a></tr>',\n        $screen_name,\n        $row['channel_name'],\n        $row['channel_name']\n    );\n}\n\n$msghtml = \"\";\nforeach ($msg as $key => $val) {\n    $msghtml .= \"<div class='alert alert-info'>{$val}</div>\";\n}\n\n$t = new MyView();\n$t->title = \"IEMBot Twitter Configuration Page\";\n\n\n$t->content = <<<EOM\n\n<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"/projects/iembot/\">IEMBot Homepage</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">Twitter Configuration Page</li>\n    </ol>\n</nav>\n\n{$msghtml}\n\n<h3 class=\"mt-4 mb-3\">IEMBOT + Twitter Integration</h3>\n\n<div class=\"alert alert-warning\" role=\"alert\">\n    2026-04-25: IEMBot's X support continues to be very touch and go as X\n    continues to break the usage case and is difficult to engage with. This all\n    may just go away sometime soon...\n</div>\n\n<p>This page allows for the subscription of a Twitter Account to one or more\n<a href=\"/projects/iembot/#channels\" target=\"_blank\">IEMBot channels</a>.\nThe automated processing of National Weather Service text products converts each product into a tweet-sized message and is associated\nwith one or more channels. These channels are then used to route the messages to subscribed Twitter pages. A deduplication process should prevent a single message from posting twice to your account.</p>\n\n<div class=\"alert alert-warning\" role=\"alert\">\n    This service is provided as-is and without warranty. <strong>The service could fail</strong> with an EF-5 tornado approaching your city, so you have been warned!\n</div>\n\n<div class=\"card my-4\">\n    <div class=\"card-body\">\n        <h4 class=\"card-title\">Add Channel Subscription</h4>\n        <form method=\"POST\" action=\"twitter.php\">\n            <input type=\"hidden\" name=\"add\" value=\"yes\" />\n            <div class=\"mb-3\">\n                <label for=\"page\" class=\"form-label\">Page</label>\n                <input type=\"text\" class=\"form-control-plaintext\" id=\"page\" readonly value=\"{$screen_name}\" />\n            </div>\n            <div class=\"mb-3\">\n                <label for=\"channel\" class=\"form-label\">Channel</label>\n                <input type=\"text\" class=\"form-control\" name=\"channel\" id=\"channel\" required />\n            </div>\n            <button type=\"submit\" class=\"btn btn-primary\">Subscribe Channel</button>\n        </form>\n    </div>\n</div>\n\n<div class=\"card my-4\">\n    <div class=\"card-body\">\n        <h4 class=\"card-title\">Current Subscriptions</h4>\n        <div class=\"table-responsive\">\n            <table class=\"table table-striped align-middle\">\n                <thead>\n                    <tr><th>Page</th><th>Channel</th><th></th></tr>\n                </thead>\n                <tbody>\n                    {$sselect2}\n                </tbody>\n            </table>\n        </div>\n    </div>\n</div>\n\n<div class=\"card my-4\">\n    <div class=\"card-body\">\n        <h4 class=\"card-title\">Delete IEMBot from my account</h4>\n        <p><strong>WARNING:</strong> This will delete all of your IEMBot subscriptions and remove your OpenAuth tokens from the IEMBot database. This should prevent any future posts to your page on IEMbot's behalf.</p>\n        <button class=\"btn btn-danger\" type=\"button\" onclick=\"if (confirm('Are you sure?')){window.location.href='/projects/iembot/twitter.php?removeme=1';}\">Delete IEMBot</button>\n    </div>\n</div>\n\nEOM;\n\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/projects/index.phtml",
    "content": "<?php\n// Meh, just redirect to the archive page\nheader(\"Location: /archive/\");\n"
  },
  {
    "path": "htdocs/projects/webcam.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 98);\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Webcam Project\";\n\n$t->content = <<<EOM\n<h3>IEM Webcam Project</h3>\n\n<p>One of the unique datasets collected by the IEM are weather webcam imagery.\nThese images provide very valuable data for folks interested in the current\nweather conditions and archived!  Our webcam imagery dates back to 2003 with\nimages saved every 5 minutes for that period!</p>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n<img src=\"/archive/data/2005/11/12/camera/KCCI-016/KCCI-016_200511122300.jpg\"\n        class=\"img-fluid\" />\n<br />Webcam on the top of ISU Agronomy Hall capturing a tornado off to the\n        north and west back on 12 Nov 2005.\n</div>\n<div class=\"col-md-6\">\n<object width=\"100%\" height=\"350\">\n<param name=\"movie\" value=\"https://youtube.com/v/yXnkzeCU3bE\"></param>\n<param name=\"wmode\" value=\"transparent\"></param>\n<embed src=\"https://youtube.com/v/yXnkzeCU3bE\"\ntype=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"425\"\nheight=\"350\"></embed></object>\n\n<br />An awesome gravity wave lapse from near Tama, IA.  This lapse has over\n        1 million views on YouTube!\n</div>\n</div>\n\n<h3>Available Tools:</h3>\n<ul>\n    <li><a href=\"/current/webcam.php\">Current/Archived Still Images</a>\n        <br />This page contains a simple listing of webcam images</li>\n    <li><a href=\"/current/viewer.phtml\">High Resolution + Live</a>\n        <br />This page contains the most recent captured image in its\n        highest resolution and has an interactive map to select sites.</li>\n    <li><a href=\"/current/bloop.phtml\">Loops</a>\n        <br />This page generates a timelapse for a webcam and period of your\n        choice.</li>\n    <li><a href=\"/current/camlapse/\">Recent Movies</a>\n        <br />For the webcam networks operated by KCCI, KCRG, and KELO, the\n        IEM generates five timelapses per day for specific periods during\n        each day.  These are used on-air and the most recent lapse is available\n        online.</li>\n    <li><a href=\"/cool/\">Cool Lapses</a>\n        <br />This page contains the best lapses that have been uploaded to\n        <a href=\"https://youtube.com/akrherz\">daryl's youtube channel</a>.</li>\n</ul>\n\n<h3>Accessing the Archive</h3>\n\n<p>Unfortunately, there is no simple means to quickly download large chunks of\nwebcam images. Here are a few options though:</p>\n\n<ol>\n<li>Run a web mirror/scraper against the per-UTC\n<a href=\"/archive/data/2024/07/06/camera/\">date folders</a></li>\n<li>Hit the <a href=\"/json/#IEM+Webcam+Availability\">Webcam JSON API</a>\nwithout providing a network parameter and get all imagery close to a given\ntimestamp.  The JSON metadata will contain the URL to the image.</li>\n</ol>\n\n<h3>Frequently Asked Questions</h3>\n\n<p><strong>What hardware are you using?</strong>\n<br />The TV networks contain a mix of Canon VB-C10, VB-C50 and VB-C60 model\n        webcams.  The newer webcams are Axis brand, due to the requirement for\n        HD video.  These webcams are autonomous and only need Internet and\n        power to work.  They run an embedded operating system / web server,\n        which allows some\n        <a href=\"https://github.com/akrherz/pyVBCam\">custom software</a> to\n        poll images from.</p>\n\n<p><strong>What costs are involved?</strong>\n<br />The physical hardware (mounting bracket, camera housing, and webcam)\n        runs about $2,000.  There are cheaper options, but this is what we\n        have traditionally seen sites use.  The power usage is neglegible\n        and usually donated by the webcam's host.  The Internet requirements\n        are for fast upload speeds as the webcam needs to serve out its\n        imagery.  Having 1 megabit upload speed will provide a workable\n        video stream.  The IEM provides collection and archival services\n        at no cost and without warranty.  There is no lock-in with our webcam\n        collection software and so other tools can access the webcams at\n        the same time we are polling for images to archive.</p>\n\n<p><strong>We'd like to build a webcam network, can you help?</strong>\n<br />In general, the IEM can not physically help with your construction\n        of a webcam network, but can provide some guidance based on our\n        experience.  Please <a href=\"/info/contacts.php\">contact us</a>\n        and let us know your interest!</p>\n\n<p><strong>Where are the best places to mount a webcam?</strong>\n<br />Great question!  You want a very stable and high location without\n        tree or building obstruction.  Obvious places like communication\n        towers are not the best due to shaking of the tower and they are\n        typically full of other equipment.  Placing them on grain elevators\n        is problematic due to dust and shaking.  Placing them at schools\n        is diffcult as they often do not have a high view and their local\n        ethernet networks can be difficult to work with.  We have had luck\n        with municipal locations, like town squares, clock towers, and\n        private downtown buildings.</p>\n\n<p><strong>Which directions are the most important to see?</strong>\n<br />Nearly all webcam houses create a blind spot whereby the webcam\n        can not see past its housing mount.  Having this blind spot be to\n        either your south or northeast is likely ideal as you can see\n        passing storms to your north and the sun rise/setting.  Storms\n        typically approach us from the west, so the west view is very\n        important.  Supercell thunderstorms, the ones that produce high\n        impact weather, are usually best seen will pointing the webcam\n        southwest thru northwest thru northeast.  These are directions\n        where the \"meso\" / \"wall cloud\" can be seen.</p>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/raccoon/index.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 69);\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\n\n$wfo = isset($_REQUEST[\"wfo\"]) ? xssafe($_REQUEST[\"wfo\"]) : 'OAX';\n$radar = isset($_REQUEST[\"radar\"]) ? xssafe($_REQUEST[\"radar\"]) : 'OAX';\n$radar_product = isset($_REQUEST[\"product\"]) ? xssafe($_REQUEST[\"product\"]) : 'N0Q';\n$year = get_int404(\"year\", date(\"Y\"));\n$month1 = get_int404(\"month1\", date(\"m\"));\n$day1 = get_int404(\"day1\", date(\"d\"));\n$hour1 = get_int404(\"hour1\", 0);\n$month2 = get_int404(\"month2\", date(\"m\"));\n$day2 = get_int404(\"day2\", date(\"d\"));\n$hour2 = get_int404(\"hour2\", 23);\n$sts = gmmktime($hour1, 0, 0, $month1, $day1, $year);\n$ets = gmmktime($hour2, 0, 0, $month2, $day2, $year);\n$wtype = isset($_GET[\"wtype\"]) ? $_GET[\"wtype\"] : array('TO', 'SV');\n\n// Double check that each wtype is 2 char long\nforeach ($wtype as $key => $val) {\n    if (strlen($val) != 2) {\n        xssafe(\"</script>\");  // will kill the script\n    }\n}\n\nif (isset($_REQUEST[\"wfo\"])) {\n    /* Check to make sure we have warnings first! */\n    $postgis = iemdb(\"postgis\");\n    $stname = iem_pg_prepare($postgis, \"SELECT issue from sbw_{$year} \" .\n        \"WHERE wfo = $1 and phenomena in ('SV','TO','FF', 'MA', 'SQ', 'DS') \" .\n        \"and significance = 'W' and issue BETWEEN $2 and $3\");\n    $rs = pg_execute($postgis, $stname, array(\n        $wfo,\n        gmdate(\"Y-m-d H:i\", $sts) . \"+00\", gmdate(\"Y-m-d H:i\", $ets) . \"+00\"\n    ));\n    if (pg_num_rows($rs) < 1) {\n        $err = \"Sorry, did not find any warnings for your selected WFO and\n        time period, please try again!\";\n    } else {\n        $mesosite = iemdb(\"mesosite\");\n        $stname = iem_pg_prepare($mesosite, \"INSERT into racoon_jobs(wfo, sts, ets,\n                radar, nexrad_product, wtype) values ($1,$2,$3,$4,$5,$6) \n                returning jobid\");\n        $rs = pg_execute($mesosite, $stname, array(\n            $wfo,\n            date(\"Y-m-d H:i\", $sts), date(\"Y-m-d H:i\", $ets), $radar,\n            $radar_product, implode(\",\", $wtype)\n        ));\n        $row = pg_fetch_assoc($rs, 0);\n        $jobid = $row[\"jobid\"];\n        Header(\"Location: wait.phtml?jobid=$jobid\");\n        die();\n    }\n}\n\n$t->title = \"Raccoon - Warnings overview in PowerPoint\";\n$t->headextra = \"<meta name='robots' content='index, nofollow'/>\";\n\n$e = \"\";\nif (isset($err)) {\n    $e = sprintf(\"<div class=\\\"alert alert-warning\\\">%s</div>\", $err);\n}\n\n$ar = array(\n    \"FF\" => \"Flash Flood\",\n    \"MA\" => \"Marine\",\n    \"SQ\" => \"Snow Squall\",\n    \"DS\" => \"Dust Storm\",\n    \"SV\" => \"Severe Thunderstorm\",\n    \"TO\" => \"Tornado\"\n);\n$wtselect = \"\";\nforeach ($ar as $p => $n) {\n    $wtselect .= sprintf(\n        \"<input name=\\\"wtype[]\\\" type=\\\"checkbox\\\" \n            value=\\\"%s\\\"%s>%s (%s.W)</input><br />\",\n        $p,\n        in_array($p, $wtype) ? \" CHECKED\" : \"\",\n        $n,\n        $p\n    );\n}\n\n\n$wselect = networkSelect(\"WFO\", $wfo, array(), \"wfo\");\n$nselect = networkSelect(\"NEXRAD\", $radar, array(), \"radar\");\n$yselect = yearSelect(2002, $year, \"year\");\n$m1select = monthSelect($month1, \"month1\");\n$d1select = daySelect($day1, \"day1\");\n$h1select = gmtHourSelect($hour1, \"hour1\");\n$m2select = monthSelect($month2, \"month2\");\n$d2select = daySelect($day2, \"day2\");\n$h2select = gmtHourSelect($hour2, \"hour2\");\n$t->content = <<<EOM\n{$e}\n<h3>IEM Raccoon</h3>\n\n<p>IEM Raccoon generates a Microsoft Powerpoint presentation of a National\nWeather Service office's storm based warnings for a time period of your choice.\nThe powerpoint contains a number of slides for each warning creating an easy\nway to look back through an event.</p>\n\n<div class=\"row\">\n<div class=\"col-md-4 col-sm-4\">\n <img src='raccoon.jpg' class=\"img-fluid\" />\n<br />Yawning Raccoon by <a href=\"http://www.flickr.com/photos/32541690@N02\">Alan Vernon</a>\n\n</div>\n<div class=\"col-md-4 col-sm-4\">\n<img src=\"ss1.png\" class=\"img-fluid\"/><br />Overview Stats\n</div>\n<div class=\"col-md-4 col-sm-4\">\n<img src=\"ss2.png\" class=\"img-fluid\"/><br />NEXRAD Snapshots in Time\n</div>\n</div>\n\n<p>Please fill out the form below by selecting the National Weather Service \noffice you are interested in viewing warnings from and the RADAR source to use\nfor graphics generated in the Powerpoint.  The RADAR archives are not complete\nprior to February 2012, but have been selectively backfilled.  If there is a \ncase you are really interested in, please \n<a href=\"/info/contacts.php\">let us know</a> and we can \nprobably back fill imagery for the event.\n\n<form method=\"GET\" name=\"raccoon\">\n<table>\n<tr><th>Select Weather Office</th>\n    <td colspan=\"4\">{$wselect}</td></tr>\n<tr><th>Select RADAR source</th>\n    <td colspan=\"4\">{$nselect}</td></tr>\n<tr><th>Select Level 3 Product:</th>\n    <td colspan=\"4\">\n    <select name=\"product\">\n        <option value=\"N0Q\">Base Reflectivity</option>\n        <option value=\"N0U\">Base Velocity</option>\n    </select>\n    </td></tr>\n<tr><th>View Warning Types:</th>\n    <td colspan=\"4\">\n{$wtselect}\n    </td></tr>\n    \n    <tr>\n    <td></td>\n    <th>Year</th><th>Month</th><th>Day</th>\n    <th>Hour</th>\n  </tr>\n\n  <tr>\n    <th>Start:</th>\n    <td rowspan=\"2\">{$yselect}</td>\n    <td>{$m1select}</td>\n    <td>{$d1select}</td>\n    <td>{$h1select}</td>\n  </tr>\n\n  <tr>\n    <th>End Time:</th>\n    <td>{$m2select}</td>\n    <td>{$d2select}</td>\n    <td>{$h2select}</td>\n  </tr>\n</table>\n<p><input type=\"submit\" value=\"Make my powerpoint!\" />\n</form>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/raccoon/wait.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\n\n$jobid = isset($_REQUEST[\"jobid\"]) ? xssafe($_REQUEST[\"jobid\"]) : null;\nif (is_null($jobid)) {\n    http_response_code(422);\n    die(\"jobid required\");\n}\n$status = \"PROCESSING\";\nif ($jobid) {\n    $mesosite = iemdb(\"mesosite\");\n    $stname = iem_pg_prepare($mesosite, \"SELECT * from racoon_jobs where jobid = $1\");\n    $rs = pg_execute($mesosite, $stname, array($jobid));\n    if (pg_num_rows($rs) < 1) die();\n    $row = pg_fetch_assoc($rs, 0);\n    $sts = strtotime($row[\"sts\"]);\n    $ets = strtotime($row[\"ets\"]);\n    $basefn = sprintf(\n        \"%s-%s-%s-%s-%s.ppt\",\n        $row[\"wfo\"],\n        str_replace(\",\", \"_\", $row[\"wtype\"]),\n        $row[\"radar\"],\n        gmdate(\"YmdH\", $sts),\n        gmdate(\"YmdH\", $ets)\n    );\n    $fn = sprintf(\"/mesonet/share/pickup/raccoon/%s\",  $basefn);\n    if (is_file($fn)) {\n        $status = \"DONE!\";\n    }\n}\n\n$t->title = \"Raccoon - Warnings overview in PowerPoint\";\nif ($status != \"DONE!\") {\n    $t->headextra = \"<meta http-equiv=\\\"refresh\\\" content=\\\"60\\\">\";\n}\n\n$c = \"\";\nif ($status == \"DONE!\") {\n    $c = sprintf(\n        '<p>Download your powerpoint <a href=\"/pickup/raccoon/%s\">here</a>',\n        $basefn\n    );\n}\n$t->content = <<<EOM\n<h3>IEM Raccoon</h3>\n\n<p>This page will refresh once per minute with the status of your request. It \ntypically takes 1-3 minutes for the powerpoint to be generated!\n\n<p>Current status is: {$status}\n{$c}\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/radmapserver/gisdata/radar.wld",
    "content": "   0.01000\n   0.00000\n   0.00000\n  -0.01000\n-104.00000\n  49.00000\n"
  },
  {
    "path": "htdocs/radmapserver/radmapserver.html",
    "content": "<!-- mapserver template -->\n<html>\n<head>\n  <title>RadMapserver Test</title>\n</head>\n\n<form method=\"GET\" action=\"/cgi-bin/mapserv/mapserv\" name=\"mapserv\">\n<input type=\"hidden\" value=\"[mapext]\" name=\"imgext\">\n<!-- imgxy is set to half of your display image size -->\n<input type=\"hidden\" value=\"225 175\" name=\"imgxy\">\n<input type=\"hidden\" value=\"[map]\" name=\"map\">\n<input type=\"hidden\" value=\"browse\" name=\"mode\">\n\n<table border=\"1\">\n<tr><td>\n\n<input name=\"img\" type=\"image\" src=\"[img]\" border=\"0\">\n\n</td><td>\n\n<p> <b> Select layers to display </b> \n<br><input type=\"checkbox\" value=\"radar\" name=\"layer\" [radar_check] > RADAR layer\n<br><input type=\"checkbox\" value=\"states\" name=\"layer\" [states_check] > States layer\n\n<p>  Set your zoom option:\n<br>  \n<select name=\"zoom\" size=\"1\">  \n  <option value=\"4\" [zoom_4_select]> Zoom in 4 times \n  <option value=\"3\" [zoom_3_select]> Zoom in 3 times \n  <option value=\"2\" [zoom_2_select]> Zoom in 2 times \n  <option value=\"1\" [zoom_1_select]> Recenter Map \n  <option value=\"-2\" [zoom_-2_select]> Zoom out 2 times \n  <option value=\"-3\" [zoom_-3_select]> Zoom out 3 times \n  <option value=\"-4\" [zoom_-4_select]> Zoom out 4 times \n</select>\n\n<p>\n<input type=\"submit\" value=\"Make Map!\">\n<form>\n</td></tr></table>\n\n<html>\n"
  },
  {
    "path": "htdocs/rainfall/bypoint.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/station.php\";\nrequire_once \"../../include/myview.php\";\n\n$wepp = iemdb(\"wepp\");\n$iem = iemdb(\"iem\");\n\n$iem_stname = iem_pg_prepare($iem, \"SELECT day, pday from \n      summary s JOIN stations t ON (t.iemid = s.iemid) WHERE\n      t.id = $1 and day >= $2 and day < $3\");\n$wepp_stname = iem_pg_prepare($wepp, \"select rainfall / 25.4 as inch, \n    valid from daily_rainfall\n    WHERE hrap_i = $1 and valid >= $2 and valid < $3 ORDER by valid ASC\");\n\n$method = isset($_GET[\"method\"]) ? xssafe($_GET[\"method\"]) : \"geocode\";\n$syear = get_int404(\"syear\", 0);\n$eyear = get_int404(\"eyear\", 0);\nif ($syear == 0 || $eyear == 0) {\n    http_response_code(422);\n    die(\"Please supply both syear and eyear.\");\n}\n$view = isset($_GET[\"view\"]) ? xssafe($_GET[\"view\"]) : \"online\";\n\n$d = array();\n$sts = mktime(0, 0, 0, 1, 1, $syear);\n$ets = mktime(0, 0, 0, 1, 1, $eyear + 1);\n$today = mktime(0, 0, 0, date(\"m\", time()), date(\"d\", time()), date(\"Y\", time()));\nif ($today < $ets) $ets = $today;\n$now = $sts;\nwhile ($now < $ets) {\n    $d[date(\"Y-m-d\", $now)] = array(\"rain\" => 0, \"ob\" => \"M\");\n    $now += 86400;\n}\n\n$data = \"# IEM Rainfall {$EXTERNAL_BASEURL} \n# Date Generated: \" . date(\"r\") . \"\\n\";\nif ($method == \"geocode\") {\n    $s = isset($_GET[\"street\"]) ? xssafe($_GET[\"street\"]) : \"100 Main Street\";\n    $c = xssafe($_GET[\"city\"]) . \", IA\";\n    $data .= \"# Request Method: Geocoded $s , $c\\n\";\n    $u = sprintf(\"%s/cgi-bin/geocoder.py?street=%s&city=%s\", $INTERNAL_BASEURL, $s, $c);\n    $res = trim(file_get_contents(str_replace(\" \", \"%20\", $u)));\n    //echo \"GEOCODER RESPONSE:::$res::: $u :::\";\n    if (substr($res, 0, 5) != \"ERROR\") {\n        $tokens = explode(\",\", $res);\n        $latitude = $tokens[0];\n        $longitude = $tokens[1];\n    } else {\n        die(\"Geocoder failed for: $s, $c\");\n    }\n} else if ($method == \"id\") {\n    $id = strtoupper(xssafe($_GET[\"nwsli\"]));\n    $st = new StationData($id);\n    $cities = $st->table;\n    $latitude = round($cities[$id][\"lat\"], 4);\n    $longitude = round($cities[$id][\"lon\"], 4);\n    $data .= \"# Request Method: Specified NWSLI $id \\n\";\n\n    $rs = pg_execute($iem, $iem_stname, array(\n        $id, date('Y-m-d', $sts),\n        date('Y-m-d', $ets)\n    ));\n    while ($row = pg_fetch_assoc($rs)) {\n        if ($row[\"pday\"] >= 0) {\n            $d[$row[\"day\"]][\"ob\"] = $row[\"pday\"];\n        } else {\n            $d[$row[\"day\"]][\"ob\"] = 0;\n        }\n    }\n} else if ($method == \"latlon\") {\n    if (isset($_GET[\"lat\"])) {\n        $latitude = floatval($_GET[\"lat\"]);\n    };\n    if (isset($_GET[\"lon\"])) {\n        $longitude = floatval($_GET[\"lon\"]);\n    };\n    $data .= \"# Request Method: Specified Lat $latitude Lon $longitude \\n\";\n}\n\n/* Cleanup Lat Lon values */\nif ($longitude > 0) {\n    $longitude = 0 - $longitude;\n}\n// Ensure values are ~ Iowa\nif ($longitude < -102 || $longitude > -88) {\n    die(\"Longitude outside of Iowa\");\n}\nif ($latitude < 38 || $latitude > 44) {\n    die(\"Longitude outside of Iowa\");\n}\n\n$stname2 = iem_pg_prepare($wepp, \"select hrap_i, ST_distance( the_geom, \n    ST_transform(ST_Point($1, $2, 4326), 26915) ) \n    from hrap_utm ORDER by st_distance ASC LIMIT 1\");\n$rs = pg_execute($wepp, $stname2, array($longitude, $latitude));\n$row = pg_fetch_assoc($rs);\nif ($row[\"st_distance\"] > 25000) {\n    echo sprintf(\n        \"ERROR: Point is %.1f km outside of data domain, abort.\",\n        $row[\"st_distance\"] / 1000.0\n    );\n    die();\n}\n\n$hrap_i = $row[\"hrap_i\"];\n$data .= \"# Latitude: $latitude Longitude: $longitude HRAP_I: $hrap_i\nDate,Estimate,YearToDate\";\nif ($method == 'id') {\n    $data .= \",Observation\\n\";\n} else {\n    $data .= \"\\n\";\n}\n\n$rs = pg_execute($wepp, $wepp_stname, array(\n    $hrap_i, date('Y-m-d', $sts),\n    date('Y-m-d', $ets)\n));\n\n$tot = 0;\n$otot = 0;\nwhile ($row = pg_fetch_assoc($rs)) {\n    $tot += $row[\"inch\"];\n    $ob = $d[$row[\"valid\"]][\"ob\"];\n    $otot += ($ob == \"M\") ? 0 : $ob;\n    $d[$row[\"valid\"]][\"rain\"] = $row[\"inch\"];\n}\n\n$running = 0;\nforeach ($d as $k => $v) {\n    $running += $d[$k][\"rain\"];\n    if ($method == \"id\") {\n        $data .=  sprintf(\n            \"%s,%5.2f,%5.2f,%9s\\n\",\n            $k,\n            $d[$k][\"rain\"],\n            $running,\n            $d[$k][\"ob\"]\n        );\n    } else {\n        $data .=  sprintf(\"%s,%5.2f,%5.2f\\n\", $k, $d[$k][\"rain\"], $running);\n    }\n}\n\nif ($method == \"id\") {\n    $data .= sprintf(\"%s,%4.2f,%4.2f,%9s\\n\", \"Total\", $tot, $running, $otot);\n} else {\n    $data .= sprintf(\"%s,%4.2f,%4.2f\\n\", \"Total\", $tot, $running);\n}\n\nif ($view == \"download\") {\n    header(\"Content-type: application/octet-stream\");\n    header(\"Content-Disposition: attachment; filename=iemrainfall.dat\");\n    echo $data;\n    die();\n}\n\n$t = new MyView();\n$t->title = \"Rainfall by Point\";\n$t->content = <<<EOM\n<pre>\n{$data}\n</pre>\nEOM;\n$t->render(\"single.phtml\");\n"
  },
  {
    "path": "htdocs/rainfall/dshape.php",
    "content": "<?php\n/* Download .zip files of rainfall estimates! */\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/forms.php\";\n\n// Prevent client abort from leaving temp files around\nignore_user_abort(true);\n\n$year = get_int404(\"year\", date(\"Y\", time() - 86400));\n$month = get_int404(\"month\", date(\"m\", time() - 86400));\n$day = get_int404(\"day\", date(\"d\", time() - 86400));\n$epsg = get_int404(\"epsg\", 4326);\n$geometry = get_str404(\"geometry\", \"point\");\n$duration = get_str404(\"duration\", \"day\");\n\n$ts = mktime(0, 0, 0, $month, $day, $year);\n\nif ($duration == 'year') {\n    $dir = sprintf(\"/mesonet/wepp/data/rainfall/shape/yearly\");\n    $fp = sprintf(\"%s_rain\",  date(\"Y\", $ts));\n} else if ($duration == 'month') {\n    $dir = sprintf(\"/mesonet/wepp/data/rainfall/shape/monthly/%s\", date(\"Y\", $ts));\n    $fp = sprintf(\"%s_rain\",  date(\"Ym\", $ts));\n} else {\n    $dir = sprintf(\"/mesonet/wepp/data/rainfall/shape/daily/%s\", date(\"Y/m\", $ts));\n    $fp = sprintf(\"%s_rain\",  date(\"Ymd\", $ts));\n}\n$dbf = sprintf(\"%s/%s.dbf\", $dir, $fp);\nif (!file_exists($dbf)) {\n    http_response_code(422);\n    die(\"File not found: {$dbf}\");\n}\n\nchdir(\"/tmp\");\ncopy($dbf, $fp . \".dbf\");\ncopy(\"/mesonet/wepp/GIS/static/hrap_{$geometry}_{$epsg}.shp\", $fp . \".shp\");\ncopy(\"/mesonet/wepp/GIS/static/hrap_{$geometry}_{$epsg}.shx\", $fp . \".shx\");\ncopy(\"/opt/iem/data/gis/meta/{$epsg}.prj\", $fp . \".prj\");\ncopy(\"/opt/iem/data/gis/avl/iemrainfall.avl\", $fp . \".avl\");\n`zip {$fp}.zip {$fp}*`;\n\n\nheader(\"Content-type: application/octet-stream\");\nheader(\"Content-Disposition: attachment; filename={$fp}.zip\");\nreadfile(\"{$fp}.zip\");\n\nunlink(\"{$fp}.shp\");\nunlink(\"{$fp}.shx\");\nunlink(\"{$fp}.dbf\");\nunlink(\"{$fp}.prj\");\nunlink(\"{$fp}.avl\");\nunlink(\"{$fp}.zip\");\n"
  },
  {
    "path": "htdocs/rainfall/index.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\n\n$t = new MyView();\n$t->title = \"GIS-Ready Rainfall Data\";\n\n$mselect = monthSelect(date(\"m\", time() - 86400));\n$dselect = daySelect(date(\"d\", time() - 86400));\n$yselect = yearSelect(1997, date(\"Y\", time() - 86400), \"year\");\n$ys = yearSelect(1997, date(\"Y\"), \"syear\");\n$ye = yearSelect(1997, date(\"Y\"), \"eyear\");\n\n$y2select = yearSelect(2014, date(\"Y\"), \"year\");\n$m2select = monthSelect(date(\"m\"));\n$d2select = daySelect(date(\"d\"));\n$h2select = gmtHourSelect(0, \"hour\");\n$ar = array(\n    \"1\" => \"1 Hour\",\n    \"24\" => \"24 Hour\",\n    \"48\" => \"48 Hour\",\n    \"72\" => \"72 Hour\"\n);\n$pselect = make_select(\"period\", 1, $ar);\n\n$archivedir = '/archive/data/' . date(\"Y\") . '/' . date('m') . '/' . date('d') . '/GIS/mrms';\n\n$t->content = <<<EOM\n<h3>IEM Rainfall</h3>\n\n<p>IEM rainfall is a high resolution depiction of rainfall estimates over\nthe state of Iowa.  These estimates are provided freely via the Internet with\nno warranty or claim of accuracy.  Currently, there are a number of ways you\ncan view/download this dataset.</p>\n\n<p><ul>\n <li><a href=\"#about\">About Precipitation Estimates</a></li>\n <li><a href=\"#mrms\">Multi-RADAR Multi-Sensor Products</a></li>\n</ul>\n\n<h3>Request Data by Point</h3>\n\n<form method=\"GET\" action=\"bypoint.phtml\" name=\"bypoint\">\n<b>Instructions:</b> With this form you can request daily estimates of rainfall\nfor a particular year and for a particular point.  This point can be specified\nin a number of ways. <b>Caveat:</b>  Geocoding is not perfect.  Your address\nmay not be found in the database.  If you first attempt fails, try using a\npopular building address for a location near you.\n\n<p><b>Start Year:</b>\n{$ys}\n &nbsp; <b>End Year (inclusive):</b>\n{$ye}\n<br /><b>View Options:</b>\n<select name=\"view\">\n    <option value=\"online\">Online\n    <option value=\"download\">Download to disk\n</select>\n\n<table class=\"table table-bordered\">\n<thead>\n<tr>\n    <th colspan=\"6\">Choose a method to select data point:</th>\n</tr></thead>\n\n<tbody>\n<tr>\n    <td colspan=\"2\">\n    <input type=\"radio\" name=\"method\" value=\"latlon\" id=\"latlon\">\n    <label for=\"latlon\">Specify Latitude &amp; Longitude</label>\n    </td>\n    <td colspan=\"2\">\n    <input type=\"radio\" name=\"method\" value=\"geocode\" checked=\"checked\" id=\"geocode\">\n    <label for=\"geocode\">Geocode An Address</label>\n    </td>\n    <td colspan=\"2\">\n    <input type=\"radio\" name=\"method\" value=\"id\" id=\"idid\">\n    <label for=\"idid\">Specify IEM Site ID</label>\n    </td>\n</tr>\n\n<tr>\n<td><b>Latitude:</b></td> <td><input type=\"text\" name=\"lat\" size=\"6\"></td>\n<td><b>Street Address:</b></td> <td> <input type=\"text\" name=\"street\"></td>\n<td rowspan=\"2\"><b>Enter ID:</b></td>\n<td rowspan=\"2\"><input type=\"text\" name=\"nwsli\" size=\"6\"></td>\n</tr>\n<tr>\n<td><b>Longitude:</b></td> <td> <input type=\"text\" name=\"lon\" size=\"6\"></td>\n<td><b>City in Iowa:</b></td> <td> <input type=\"text\" name=\"city\"></td>\n</tr>\n</tbody>\n</table>\n<input type=\"submit\" value=\"Show Data\">\n</form>\n\n\n<h3>GIS Shapefiles</h3>\n\n<form method=\"GET\" action=\"dshape.php\" name=\"shapefile\">\n<div>\n<b>Instructions:</b>  Please select the date you would like to download a zip\nfile containing a shapefile of rainfall estimates. The duration is the time\nperiod during which the estimates are valid for.  For the current month or\nyear, the estimates will be current for that period till yesterday.  Values\nare in inches.\n<table class=\"table table-bordered\">\n<thead>\n<tr>\n    <th>Month:</th><th>Day:</th><th>Year:</th><th>Coverage Type:</th>\n    <th>Duration</th><th>Projection:</th>\n</tr></thead>\n<tbody>\n<tr>\n    <td>{$mselect}</td>\n    <td>{$dselect}</td>\n    <td>{$yselect}</td>\n    <td><select name=\"geometry\">\n    <option value=\"point\">Point\n    <option value=\"polygon\">Polygon\n    </select></td>\n    <td>\n<select name=\"duration\">\n  <option value=\"day\">One Day\n  <option value=\"month\">Calendar Month\n  <option value=\"year\">Calendar Year\n</select>\n    </td>\n    <td><select name=\"epsg\">\n    <option value=\"4326\">Geographic (EPSG: 4326)\n    <option value=\"26915\">NAD83 UTM Zone15N (EPSG: 26915)\n    </select></td>\n</tr>\n</tbody>\n</table>\n<input type=\"submit\" value=\"Generate .zip file\">\n</form>\n<br />The point coverage is simply the centroid of the polygon coverage.\n</div>\n\n<h3>OGC Web Services</h3>\n\n<div>\nIf your GIS system supports accessing Web Map Service (WMS),\nyou can directly pull in some of these rainfall estimates\nfrom the IEM server.  Our WMS URI is:\n<pre>\n{$EXTERNAL_BASEURL}/cgi-bin/wms/iowa/rainfall.cgi?\n</pre>\n\n<p>Pulling data into GIS applications via these services has not been widely\ntested.  If you run into any problems, please let us know!\n\n</div>\n\n<h3><a name=\"about\" href=\"#about\"><i class=\"bi bi-bookmark\" aria-hidden=\"true\"></i></a> About Precipitation Estimates</h3>\n\n\nThese rainfall estimates are directly based on\nthe <a href=\"http://www.emc.ncep.noaa.gov/mmb/ylin/pcpanl/stage4/\">Stage 4</a>\nprecipitation analysis produced by the\n<a href=\"http://www.ncep.noaa.gov\">National Center for Environmental Prediction</a>.\nThe IEM processes this data source in the following ways:\n<ul>\n    <li>Extract data valid for Iowa from the national analyses.</li>\n    <li>Convert the data from Grib format to a relational database.</li>\n    <li>Produce summary totals for the local day instead of GMT day.</li>\n    <li>Provide instant access to this data from this page and others.</li>\n</ul>\n\n<p>Rainfall estimates are produced each day at 3:30 AM for the previous day.\nThese estimates are later revised as more information is made available to\nbetter refine the estimates.  If you downloaded data for yesterday at the time,\nyou may wish to redownload that dataset again later, since the estimates may\nbe refined then.  Sounds confusing.  Please\n<a href=\"/info/contacts.php\">contact us</a> if you have questions.</p>\n\n\n<h3><a name=\"mrms\" href=\"#mrms\"><i class=\"bi bi-bookmark\" aria-hidden=\"true\"></i></a> MRMS Estimates</h3>\n\n<p>NOAA has begun working on an advanced replacement of the system that produces\nrainfall estimates.  This project is called\n<a href=\"https://www.nssl.noaa.gov/projects/mrms/\">Multi-RADAR Multi-Sensor System</a>.  The IEM\nprocesses some of the data found in this feed and produces products from it.\n\n<h4>GIS RASTER PNG Images of Accumulation Estimates</h4>\n\n<p>The technique used provides 8-bit PNG images whereby a function can be used\nto convert the 8-bit value into a rainfall.  This equation is different for\nthe various products produced by the IEM in order to accomodate the data ranges\nnecessary to capture.  These images can be found in a\n<a href=\"/data/gis/images/4326/mrms/\">current directory</a>\nand <a href=\"{$archivedir}\">date based archive</a>. The units for the data is\nmillimeters.</p>\n\n<p><strong>1,24,48,72 Hour Precipitation</strong>\n<br ><table class=\"table\">\n<thead>\n<tr><th>8-bit value/index</th><th>Precip [mm]</th><th>Approx Precip [in]</th></tr>\n</thead>\n<tbody>\n<tr><td>0</td><td>0</td><td>0</td></tr>\n<tr><td>1-100 (0.25mm)</td><td>0.25 to 25</td><td>~0.01 to 1 inch</td></tr>\n<tr><td>101-180 (1.25mm)</td><td>26.25 to 125</td><td>~1.05 to 5 inch</td></tr>\n<tr><td>181-254 (5mm)</td><td>130 to 500</td><td>~5 to 20 inch</td></tr>\n<tr><td>255</td><td>Missing</td><td>Missing</td></tr>\n</tbody>\n</table>\n\n<h4>GIS RASTER in ERDAS Imagine (.IMG) Format</h4>\n\n<p>This tool provides you an ERDAS Imagine file for the time and\naccumulation period of your choice.  The IMG file is an unsigned 16 bit\nimage, with a scale unit of 0.1mm.  The 65535 value is set to missing and\nyour GIS system hopefully will automatically understand that. The time you\nchoose is the end time of the given accumulation period. <strong>This time\nis in UTC / GMT time!</strong> You could script\nagainst this service by using a URI like so:<br /><br />\n<code>\n{$EXTERNAL_BASEURL}/rainfall/mrms2img.py?year=2014&amp;month=9&amp;day=4&amp;hour=0&amp;period=24\n</code>\n</p>\n\n<p>Please be patient with this download!  It may take 10-20 seconds to generate,\nthe script converts the 8bit PNG mentioned above to uint16 IMG file on the fly!</p>\n\n<form method=\"GET\" action=\"mrms2img.py\" name=\"mrmsdl\">\n<br ><table class=\"table\">\n<thead>\n<tr><th>Accumulation Period</th><th>UTC Date</th><th> UTC Hour</th></tr>\n</thead>\n<tbody>\n<tr><td>{$pselect}</td>\n    <td>{$y2select} {$m2select} {$d2select}</td>\n    <td> {$h2select} </td>\n</tr>\n</tbody>\n</table>\n\n<input type=\"submit\" value=\"Request ERDAS Imagine File\" />\n</form>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/rainfall/mrms2img.py",
    "content": "\"\"\"implemented in pylib/iemweb/rainfall/mrms2img.py\"\"\"\n\nfrom iemweb.rainfall.mrms2img import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/rainfall/obhour-json.php",
    "content": "<?php\nrequire_once '../../config/settings.inc.php';\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\n\n$iem = iemdb(\"iem\");\n$mesosite = iemdb(\"mesosite\");\n\n$network = substr(get_str404(\"network\", \"IA_ASOS\"), 0, 20);\n$tstr = get_str404(\"ts\", gmdate(\"YmdHi\"));\n$ts = DateTime::createFromFormat(\"YmdHi\", $tstr, new DateTimeZone((\"UTC\")));\n\n$data = array();\n$stname = iem_pg_prepare(\n    $mesosite,\n    \"SELECT id, name from stations WHERE network = $1\"\n);\n$rs = pg_execute($mesosite, $stname, array($network));\nwhile ($z = pg_fetch_assoc($rs)) {\n    $data[$z[\"id\"]] = array(\n        \"name\" => $z[\"name\"],\n        \"id\" => $z[\"id\"],\n        \"pmidnight\" => 0,\n        \"p1\" => 0,\n        \"p3\" => 0,\n        \"p6\" => 0,\n        \"p12\" => 0,\n        \"p24\" => 0,\n        \"p48\" => 0,\n        \"p72\" => 0,\n        \"p168\" => 0,\n        \"p720\" => 0,\n        \"p2160\" => 0,\n        \"p8760\" => 0,\n    );\n}\n\n$intervals = array(1, 3, 6, 12, 24, 48, 72, 168, 720, 2160, 8760, \"midnight\");\n$tstamps = array();\nforeach ($intervals as $key => $interval) {\n    if ($interval == \"midnight\") {\n        $ts0 = clone $ts;\n        $ts0->setTimezone(new DateTimeZone(\"America/Chicago\"));\n        $ts0->setTime(0, 0, 0);\n        $ts0->setTimezone(new DateTimeZone(\"UTC\"));\n    } else {\n        $ts0 = clone $ts;\n        $ts0->sub(new DateInterval(\"PT{$interval}H\"));\n    }\n    $tstamps[$interval] = $ts0->format(\"Y-m-d H:i\") . \"+00\";\n}\n$stname = iem_pg_prepare($iem, <<<EOM\n    select id as station,\n    sum(case when valid >= $1 then phour else 0 end) as p1,\n    sum(case when valid >= $2 then phour else 0 end) as p3,\n    sum(case when valid >= $3 then phour else 0 end) as p6,\n    sum(case when valid >= $4 then phour else 0 end) as p12,\n    sum(case when valid >= $5 then phour else 0 end) as p24,\n    sum(case when valid >= $6 then phour else 0 end) as p48,\n    sum(case when valid >= $7 then phour else 0 end) as p72,\n    sum(case when valid >= $8 then phour else 0 end) as p168,\n    sum(case when valid >= $9 then phour else 0 end) as p720,\n    sum(case when valid >= $10 then phour else 0 end) as p2160,\n    sum(case when valid >= $11 then phour else 0 end) as p8760,\n    sum(case when valid >= $12 then phour else 0 end) as pmidnight\n    from hourly h\n    JOIN stations t on (h.iemid = t.iemid) WHERE\n    valid >= $13 and valid < $14 and t.network = $15\n    GROUP by t.id\nEOM);\n$rs = pg_execute(\n    $iem,\n    $stname,\n    array(\n        $tstamps[1],\n        $tstamps[3],\n        $tstamps[6],\n        $tstamps[12],\n        $tstamps[24],\n        $tstamps[48],\n        $tstamps[72],\n        $tstamps[168],\n        $tstamps[720],\n        $tstamps[2160],\n        $tstamps[8760],\n        $tstamps[\"midnight\"],\n        $tstamps[8760],\n        $ts->format(\"Y-m-d H:i\") . \"+00\",\n        $network\n    )\n);\nwhile ($z = pg_fetch_assoc($rs)) {\n    foreach ($intervals as $key => $interval) {\n        // hackery to account for trace values\n        $val = floatval($z[\"p$interval\"]);\n        if ($val > 0.005) {\n            $retval = round($val, 2);\n        } else if ($val > 0) {\n            $retval = 0.0001;\n        } else {\n            $retval = 0;\n        }\n        $data[$z[\"station\"]][\"p$interval\"]  = $retval;\n    }\n}\n\n$ar = array(\"precip\" => array());\nforeach ($data as $station => $d) {\n    $ar[\"precip\"][] = $d;\n}\n\nheader('Content-type: application/json');\necho json_encode($ar);\n"
  },
  {
    "path": "htdocs/rainfall/obhour.css",
    "content": "/* Hourly Precipitation Accumulator Custom Styles */\n\n/* Enhanced form styling */\n.form-control:focus, .form-select:focus {\n    border-color: var(--bs-primary);\n    box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);\n}\n\n/* Card enhancements */\n.card-header {\n    font-weight: 600;\n}\n\n/* Table styling improvements */\n#precipitation-table {\n    border-radius: 0.375rem;\n    overflow: hidden;\n}\n\n/* Tabulator theme overrides */\n.tabulator .tabulator-header {\n    background: linear-gradient(to bottom, #f8f9fa 0%, #e9ecef 100%);\n    border-bottom: 2px solid var(--bs-border-color);\n}\n\n.tabulator .tabulator-header .tabulator-col {\n    border-right: 1px solid var(--bs-border-color);\n}\n\n/* Enhanced column header styling for dynamic headers */\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n    line-height: 1.2;\n    white-space: normal;\n}\n\n/* Adjust header height for multi-line content */\n.tabulator .tabulator-header .tabulator-col {\n    min-height: 60px;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n    padding: 0.4rem;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    text-align: center;\n}\n\n/* Improve multi-line header readability */\n.tabulator .tabulator-header .tabulator-col .tabulator-col-title br {\n    line-height: 1.4;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n    padding: 0.5rem;\n    font-weight: 600;\n    font-size: 0.85rem;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n}\n\n.tabulator .tabulator-row:nth-child(even) {\n    background-color: rgba(var(--bs-light-rgb), 0.5);\n}\n\n.tabulator .tabulator-row:hover {\n    background-color: rgba(var(--bs-primary-rgb), 0.1) !important;\n}\n\n.tabulator .tabulator-cell {\n    border-right: 1px solid var(--bs-border-color-translucent);\n    padding: 0.5rem;\n    text-align: center;\n}\n\n/* Frozen column styling */\n.tabulator .tabulator-frozen {\n    background-color: rgba(var(--bs-primary-rgb), 0.05);\n}\n\n.tabulator .tabulator-frozen.tabulator-frozen-left {\n    border-right: 2px solid var(--bs-primary);\n}\n\n/* Precipitation value formatting */\n.tabulator .tabulator-cell[tabulator-field^=\"p\"] {\n    font-family: 'Courier New', monospace;\n    font-weight: 500;\n}\n\n/* Status alert improvements */\n.alert {\n    border: none;\n    border-radius: 0.5rem;\n    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n}\n\n.alert-info {\n    background: linear-gradient(135deg, #d1ecf1 0%, #bee5eb 100%);\n    border-left: 4px solid #0dcaf0;\n}\n\n.alert-success {\n    background: linear-gradient(135deg, #d1e7dd 0%, #a3cfbb 100%);\n    border-left: 4px solid #198754;\n}\n\n.alert-warning {\n    background: linear-gradient(135deg, #fff3cd 0%, #ffeaa7 100%);\n    border-left: 4px solid #ffc107;\n}\n\n.alert-danger {\n    background: linear-gradient(135deg, #f8d7da 0%, #f1aeb5 100%);\n    border-left: 4px solid #dc3545;\n}\n\n/* Button group styling */\n.btn-group .btn {\n    font-size: 0.875rem;\n    padding: 0.375rem 0.75rem;\n}\n\n/* Loading state styling */\n.btn:disabled {\n    opacity: 0.7;\n    cursor: not-allowed;\n}\n\n/* Breadcrumb styling */\n.breadcrumb {\n    background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);\n    border-radius: 0.5rem;\n    padding: 0.75rem 1rem;\n    margin-bottom: 1.5rem;\n}\n\n/* Container improvements */\n.container-fluid {\n    max-width: 1400px;\n}\n\n/* Icon spacing improvements */\n.bi {\n    vertical-align: -0.125em;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n    .container-fluid {\n        padding-left: 0.75rem;\n        padding-right: 0.75rem;\n    }\n    \n    .btn-lg {\n        font-size: 1rem;\n        padding: 0.5rem 1rem;\n    }\n    \n    #precipitation-table {\n        font-size: 0.875rem;\n    }\n    \n    .tabulator .tabulator-cell {\n        padding: 0.375rem;\n    }\n}\n\n/* Print styles */\n@media print {\n    .btn, .alert, nav, .card-header {\n        display: none !important;\n    }\n    \n    .card {\n        border: 1px solid #000 !important;\n        break-inside: avoid;\n    }\n    \n    #precipitation-table {\n        height: auto !important;\n    }\n}\n\n/* Focus styles for accessibility */\n.form-check-input:focus {\n    box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);\n}\n\n.btn:focus {\n    box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);\n}"
  },
  {
    "path": "htdocs/rainfall/obhour.module.js",
    "content": "import {TabulatorFull as Tabulator} from 'https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator_esm.min.mjs';\n\n// Network configurations\nconst networks = [\n    ['AL_ASOS', 'Alabama ASOS/AWOS'],\n    ['AL_DCP', 'Alabama DCP/HADS'],\n    ['AK_ASOS', 'Alaska ASOS/AWOS'],\n    ['AK_DCP', 'Alaska DCP/HADS'],\n    ['AZ_ASOS', 'Arizona ASOS/AWOS'],\n    ['AZ_DCP', 'Arizona DCP/HADS'],\n    ['AR_ASOS', 'Arkansas ASOS/AWOS'],\n    ['AR_DCP', 'Arkansas DCP/HADS'],\n    ['CA_ASOS', 'California ASOS/AWOS'],\n    ['CA_DCP', 'California DCP/HADS'],\n    ['CO_ASOS', 'Colorado ASOS/AWOS'],\n    ['CO_DCP', 'Colorado DCP/HADS'],\n    ['CT_ASOS', 'Connecticut ASOS/AWOS'],\n    ['CT_DCP', 'Connecticut DCP/HADS'],\n    ['DE_ASOS', 'Delaware ASOS/AWOS'],\n    ['DE_DCP', 'Delaware DCP/HADS'],\n    ['FL_ASOS', 'Florida ASOS/AWOS'],\n    ['FL_DCP', 'Florida DCP/HADS'],\n    ['GA_ASOS', 'Georgia ASOS/AWOS'],\n    ['GA_DCP', 'Georgia DCP/HADS'],\n    ['HI_ASOS', 'Hawaii ASOS/AWOS'],\n    ['HI_DCP', 'Hawaii DCP/HADS'],\n    ['ID_ASOS', 'Idaho ASOS/AWOS'],\n    ['ID_DCP', 'Idaho DCP/HADS'],\n    ['IL_ASOS', 'Illinois ASOS/AWOS'],\n    ['IL_DCP', 'Illinois DCP/HADS'],\n    ['IN_ASOS', 'Indiana ASOS/AWOS'],\n    ['IN_DCP', 'Indiana DCP/HADS'],\n    ['IA_ASOS', 'Iowa ASOS/AWOS'],\n    ['IA_DCP', 'Iowa DCP/HADS'],\n    ['KS_ASOS', 'Kansas ASOS/AWOS'],\n    ['KS_DCP', 'Kansas DCP/HADS'],\n    ['KY_ASOS', 'Kentucky ASOS/AWOS'],\n    ['KY_DCP', 'Kentucky DCP/HADS'],\n    ['LA_ASOS', 'Louisiana ASOS/AWOS'],\n    ['LA_DCP', 'Louisiana DCP/HADS'],\n    ['MA_ASOS', 'Massachusetts ASOS/AWOS'],\n    ['MA_DCP', 'Massachusetts DCP/HADS'],\n    ['MD_ASOS', 'Maryland ASOS/AWOS'],\n    ['MD_DCP', 'Maryland DCP/HADS'],\n    ['ME_ASOS', 'Maine ASOS/AWOS'],\n    ['ME_DCP', 'Maine DCP/HADS'],\n    ['MI_ASOS', 'Michigan ASOS/AWOS'],\n    ['MI_DCP', 'Michigan DCP/HADS'],\n    ['MN_ASOS', 'Minnesota ASOS/AWOS'],\n    ['MN_DCP', 'Minnesota DCP/HADS'],\n    ['MO_ASOS', 'Missouri ASOS/AWOS'],\n    ['MO_DCP', 'Missouri DCP/HADS'],\n    ['MS_ASOS', 'Mississippi ASOS/AWOS'],\n    ['MS_DCP', 'Mississippi DCP/HADS'],\n    ['MT_ASOS', 'Montana ASOS/AWOS'],\n    ['MT_DCP', 'Montana DCP/HADS'],\n    ['NC_ASOS', 'North Carolina ASOS/AWOS'],\n    ['NC_DCP', 'North Carolina DCP/HADS'],\n    ['NE_ASOS', 'Nebraska ASOS/AWOS'],\n    ['NE_DCP', 'Nebraska DCP/HADS'],\n    ['NV_ASOS', 'Nevada ASOS/AWOS'],\n    ['NV_DCP', 'Nevada DCP/HADS'],\n    ['NH_ASOS', 'New Hampshire ASOS/AWOS'],\n    ['NH_DCP', 'New Hampshire DCP/HADS'],\n    ['NJ_ASOS', 'New Jersey ASOS/AWOS'],\n    ['NJ_DCP', 'New Jersey DCP/HADS'],\n    ['NM_ASOS', 'New Mexico ASOS/AWOS'],\n    ['NM_DCP', 'New Mexico DCP/HADS'],\n    ['NY_ASOS', 'New York ASOS/AWOS'],\n    ['NY_DCP', 'New York DCP/HADS'],\n    ['ND_ASOS', 'North Dakota ASOS/AWOS'],\n    ['ND_DCP', 'North Dakota DCP/HADS'],\n    ['OH_ASOS', 'Ohio ASOS/AWOS'],\n    ['OH_DCP', 'Ohio DCP/HADS'],\n    ['OK_ASOS', 'Oklahoma ASOS/AWOS'],\n    ['OK_DCP', 'Oklahoma DCP/HADS'],\n    ['OR_ASOS', 'Oregon ASOS/AWOS'],\n    ['OR_DCP', 'Oregon DCP/HADS'],\n    ['PA_ASOS', 'Pennsylvania ASOS/AWOS'],\n    ['PA_DCP', 'Pennsylvania DCP/HADS'],\n    ['PR_ASOS', 'Puerto Rico ASOS/AWOS'],\n    ['PR_DCP', 'Puerto Rico DCP/HADS'],\n    ['RI_ASOS', 'Rhode Island ASOS/AWOS'],\n    ['RI_DCP', 'Rhode Island DCP/HADS'],\n    ['SC_ASOS', 'South Carolina ASOS/AWOS'],\n    ['SC_DCP', 'South Carolina DCP/HADS'],\n    ['SD_ASOS', 'South Dakota ASOS/AWOS'],\n    ['SD_DCP', 'South Dakota DCP/HADS'],\n    ['TN_ASOS', 'Tennessee ASOS/AWOS'],\n    ['TN_DCP', 'Tennessee DCP/HADS'],\n    ['TX_ASOS', 'Texas ASOS/AWOS'],\n    ['TX_DCP', 'Texas DCP/HADS'],\n    ['UT_ASOS', 'Utah ASOS/AWOS'],\n    ['UT_DCP', 'Utah DCP/HADS'],\n    ['VA_ASOS', 'Virginia ASOS/AWOS'],\n    ['VA_DCP', 'Virginia DCP/HADS'],\n    ['VT_ASOS', 'Vermont ASOS/AWOS'],\n    ['VT_DCP', 'Vermont DCP/HADS'],\n    ['VI_ASOS', 'Virgin Islands ASOS/AWOS'],\n    ['VI_DCP', 'Virgin Islands DCP/HADS'],\n    ['WA_ASOS', 'Washington ASOS/AWOS'],\n    ['WA_DCP', 'Washington DCP/HADS'],\n    ['WI_ASOS', 'Wisconsin ASOS/AWOS'],\n    ['WI_DCP', 'Wisconsin DCP/HADS'],\n    ['WV_ASOS', 'West Virginia ASOS/AWOS'],\n    ['WV_DCP', 'West Virginia DCP/HADS'],\n    ['WY_ASOS', 'Wyoming ASOS/AWOS'],\n    ['WY_DCP', 'Wyoming DCP/HADS']\n];\n\n// Application state\nlet precipTable = null;\nlet autoRefreshInterval = null;\nlet currentNetwork = '';\n\n// Common Tabulator configuration\nconst commonConfig = {\n    layout: \"fitDataStretch\",\n    pagination: \"local\",\n    paginationSize: 50,\n    paginationSizeSelector: [25, 50, 100, true],\n    movableColumns: true,\n    resizableColumns: true,\n    sortMode: \"local\",\n    filterMode: \"local\",\n    responsiveLayout: false, // Disable responsive hiding - use horizontal scroll instead\n    tooltips: true,\n    clipboard: true,\n    clipboardCopyHeader: true,\n    height: \"70vh\",\n    placeholder: \"No precipitation data available\"\n};\n\n// Format precipitation values (handle trace amounts)\nfunction formatPrecipitation(cell) {\n    const value = cell.getValue();\n    if (value > 0 && value < 0.009) {return \"T\";}\n    if (value === 0 || value === null || value === undefined) {return \"0.00\";}\n    return parseFloat(value).toFixed(2);\n}\n\n// Time offset mapping for each precipitation field\nconst timeOffsets = {\n    'pmidnight': 0,\n    'p1': 1,\n    'p3': 3,\n    'p6': 6,\n    'p12': 12,\n    'p24': 24,\n    'p48': 48,\n    'p72': 72,\n    'p168': 168,\n    'p720': 720,\n    'p2160': 2160,\n    'p8760': 8760\n};\n\n// Column definitions for precipitation data\nfunction getPrecipitationColumns() {\n    return [\n        {title: \"Station ID\", field: \"id\", frozen: true, width: 80, sorter: \"string\"},\n        {title: \"Station Name\", field: \"name\", frozen: true, minWidth: 200, sorter: \"string\"},\n        {title: \"Midnight\", field: \"pmidnight\", width: 120, sorter: \"number\", formatter: formatPrecipitation,\n         headerTooltip: \"Precipitation since midnight Central Time\"},\n        {title: \"1 Hour\", field: \"p1\", width: 120, sorter: \"number\", formatter: formatPrecipitation,\n         headerTooltip: \"Precipitation in the past 1 hour\"},\n        {title: \"3 Hours\", field: \"p3\", width: 120, sorter: \"number\", formatter: formatPrecipitation,\n         headerTooltip: \"Precipitation in the past 3 hours\"},\n        {title: \"6 Hours\", field: \"p6\", width: 120, sorter: \"number\", formatter: formatPrecipitation,\n         headerTooltip: \"Precipitation in the past 6 hours\"},\n        {title: \"12 Hours\", field: \"p12\", width: 120, sorter: \"number\", formatter: formatPrecipitation,\n         headerTooltip: \"Precipitation in the past 12 hours\"},\n        {title: \"1 Day\", field: \"p24\", width: 120, sorter: \"number\", formatter: formatPrecipitation,\n         headerTooltip: \"Precipitation in the past 24 hours\"},\n        {title: \"2 Days\", field: \"p48\", width: 120, sorter: \"number\", formatter: formatPrecipitation,\n         headerTooltip: \"Precipitation in the past 48 hours\"},\n        {title: \"3 Days\", field: \"p72\", width: 120, sorter: \"number\", formatter: formatPrecipitation,\n         headerTooltip: \"Precipitation in the past 72 hours\"},\n        {title: \"1 Week\", field: \"p168\", width: 120, sorter: \"number\", formatter: formatPrecipitation,\n         headerTooltip: \"Precipitation in the past week (168 hours)\"},\n        {title: \"30 Days\", field: \"p720\", width: 120, sorter: \"number\", formatter: formatPrecipitation,\n         headerTooltip: \"Precipitation in the past 30 days (720 hours)\"},\n        {title: \"90 Days\", field: \"p2160\", width: 120, sorter: \"number\", formatter: formatPrecipitation,\n         headerTooltip: \"Precipitation in the past 90 days (2160 hours)\"},\n        {title: \"1 Year\", field: \"p8760\", width: 120, sorter: \"number\", formatter: formatPrecipitation,\n         headerTooltip: \"Precipitation in the past year (8760 hours)\"}\n    ];\n}\n\n// Update URL parameters\nfunction updateURL(network) {\n    const url = new URL(window.location);\n    url.searchParams.set('network', network);\n    window.history.pushState({}, '', url);\n}\n\n// Update status message\nfunction updateStatus(message, type = 'info') {\n    const statusEl = document.getElementById('status-message');\n    const alertEl = statusEl.parentElement;\n\n    // Remove existing alert classes\n    alertEl.className = alertEl.className.replace(/alert-\\w+/g, '');\n    alertEl.classList.add(`alert-${type}`);\n\n    statusEl.textContent = message;\n}\n\n// Format time offset for display\nfunction formatTimeOffset(hours) {\n    if (hours < 24) {return `${hours} Hour`;}\n    return `${hours / 24} Day`;\n}\n\n// Format date for display\nfunction formatDisplayDate(date) {\n    return new Intl.DateTimeFormat('en-US', {\n        month: 'short',\n        day: 'numeric',\n        year: 'numeric',\n        hour: 'numeric',\n        hour12: true,\n        timeZone: 'America/Chicago'\n    }).format(date);\n}\n\n// Format date for column headers (shorter format)\nfunction formatColumnDate(date) {\n    return new Intl.DateTimeFormat('en-US', {\n        month: 'numeric',\n        day: 'numeric',\n        hour: 'numeric',\n        hour12: true,\n        timeZone: 'America/Chicago'\n    }).format(date);\n}\n\n// Update column headers with dynamic time ranges\nfunction updateColumnHeaders(selectedDateTime) {\n    if (!precipTable) {return;}\n\n    const columns = precipTable.getColumnDefinitions();\n    const updatedColumns = columns.map(col => {\n        // Skip columns that don't have precipitation data\n        if (!(col.field in timeOffsets)) {return col;}\n\n        const tOffset = timeOffsets[col.field];\n        let startDateTime = new Date(selectedDateTime.getTime() - (tOffset * 60 * 60 * 1000));\n        let endDateTime = new Date(selectedDateTime);\n\n        if (tOffset === 0) {\n            // Midnight column: from midnight to selected time\n            startDateTime = new Date(selectedDateTime);\n            startDateTime.setHours(0, 0, 0, 0);\n            endDateTime = new Date(selectedDateTime);\n        }\n\n        const startStr = formatColumnDate(startDateTime);\n        const endStr = formatColumnDate(endDateTime);\n\n        // Create multi-line header\n        let headerText = `Midnight<br/>${startStr}<br/>${endStr}`;\n        if (tOffset !== 0) {\n            headerText = `${formatTimeOffset(tOffset)}<br/>${startStr}<br/>${endStr}`;\n        }\n\n        return {\n            ...col,\n            title: headerText,\n            titleFormatter: \"html\" // Allow HTML in headers\n        };\n    });\n\n    precipTable.setColumns(updatedColumns);\n}\n\n// Load precipitation data\nasync function loadPrecipitationData(network, datetime) {\n    if (!network || !datetime) {\n        updateStatus('Please select both network and date/time', 'warning');\n        return;\n    }\n\n    try {\n        updateStatus('Loading precipitation data...', 'info');\n\n        // Convert local datetime to UTC and format for API (YmdHi format)\n        // The datetime parameter is in local timezone, we need to convert to UTC\n        // Always set minutes to 0 for the API call\n        const utcYear = datetime.getUTCFullYear();\n        const utcMonth = String(datetime.getUTCMonth() + 1).padStart(2, '0');\n        const utcDay = String(datetime.getUTCDate()).padStart(2, '0');\n        const utcHour = String(datetime.getUTCHours()).padStart(2, '0');\n        const utcMinute = '00'; // Always use 00 minutes\n        const timestamp = `${utcYear}${utcMonth}${utcDay}${utcHour}${utcMinute}`;\n\n        const response = await fetch(`obhour-json.php?network=${network}&ts=${timestamp}`);\n\n        if (!response.ok) {\n            throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n        }\n\n        const data = await response.json();\n\n        if (!data.precip || !Array.isArray(data.precip)) {\n            throw new Error('Invalid data format received');\n        }\n\n        // Update table with new data\n        precipTable.setData(data.precip);\n\n        // Update dynamic column headers\n        updateColumnHeaders(datetime);\n\n        // Update table title and subtitle\n        const displayDate = formatDisplayDate(datetime);\n        document.getElementById('table-title').textContent = 'Accumulated Precipitation by Interval';\n        document.getElementById('table-subtitle').textContent = `Valid at ${displayDate}`;\n\n        // Show download buttons\n        document.getElementById('download-buttons').classList.remove('d-none');\n\n        updateStatus(`Loaded ${data.precip.length} stations for ${displayDate}`, 'success');\n\n        // Store current state\n        currentNetwork = network;\n\n    } catch (error) {\n        updateStatus(`Error loading data: ${error.message}`, 'danger');\n    }\n}\n\n// Initialize form controls\nfunction initializeControls() {\n    // Populate network selector\n    const networkSelect = document.getElementById('network-select');\n    networks.forEach(([value, label]) => {\n        const option = document.createElement('option');\n        option.value = value;\n        option.textContent = label;\n        networkSelect.appendChild(option);\n    });\n\n    // Set default network from URL or use Iowa\n    const urlParams = new URLSearchParams(window.location.search);\n    const defaultNetwork = urlParams.get('network') || 'IA_ASOS';\n    networkSelect.value = defaultNetwork;\n\n    // Initialize date to today in local timezone\n    const now = new Date();\n    const dateSelect = document.getElementById('date-select');\n    const localDateString = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}`;\n    dateSelect.value = localDateString;\n    dateSelect.max = localDateString;\n    dateSelect.min = '2008-01-01';\n\n    // Populate time selector (24 hours)\n    const timeSelect = document.getElementById('time-select');\n    for (let hour = 0; hour < 24; hour++) {\n        const option = document.createElement('option');\n        const displayHour = hour === 0 ? 12 : (hour > 12 ? hour - 12 : hour);\n        const ampm = hour < 12 ? 'AM' : 'PM';\n        option.value = hour;\n        option.textContent = `${displayHour} ${ampm}`;\n        timeSelect.appendChild(option);\n    }\n\n    // Set current hour\n    timeSelect.value = now.getHours();\n}\n\n// Setup event handlers\nfunction setupEventHandlers() {\n    // Form submission\n    document.getElementById('precipitation-form').addEventListener('submit', (e) => {\n        e.preventDefault();\n\n        const formData = new FormData(e.target);\n        const network = formData.get('network');\n        const dateStr = formData.get('date');\n        const timeStr = formData.get('time');\n\n        if (!network || !dateStr || timeStr === null) {\n            updateStatus('Please fill in all required fields', 'warning');\n            return;\n        }\n\n        // Create datetime object using explicit date components to avoid timezone issues\n        const dateParts = dateStr.split('-');\n        const year = parseInt(dateParts[0]);\n        const month = parseInt(dateParts[1]) - 1; // JavaScript months are 0-based\n        const day = parseInt(dateParts[2]);\n        const datetime = new Date(year, month, day, parseInt(timeStr), 0, 0, 0);\n\n        updateURL(network);\n        loadPrecipitationData(network, datetime);\n    });\n\n    // Auto refresh toggle\n    document.getElementById('auto-refresh').addEventListener('change', (e) => {\n        if (e.target.checked) {\n            startAutoRefresh();\n        } else {\n            stopAutoRefresh();\n        }\n    });\n\n    // Download buttons (when table is loaded)\n    document.getElementById('download-csv').addEventListener('click', () => {\n        if (precipTable) {\n            precipTable.download(\"csv\", \"precipitation-data.csv\");\n        }\n    });\n\n    document.getElementById('copy-clipboard').addEventListener('click', () => {\n        if (precipTable) {\n            precipTable.copyToClipboard(\"active\");\n        }\n    });\n}\n\n// Auto refresh functionality\nfunction startAutoRefresh() {\n    stopAutoRefresh(); // Clear any existing interval\n\n    autoRefreshInterval = setInterval(() => {\n        // Update to current time in local timezone\n        const now = new Date();\n        // Set minutes and seconds to 0 for consistency\n        now.setMinutes(0, 0, 0);\n\n        const localDateString = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}`;\n        document.getElementById('date-select').value = localDateString;\n        document.getElementById('time-select').value = now.getHours();\n\n        // Reload data if we have a current network\n        if (currentNetwork) {\n            loadPrecipitationData(currentNetwork, now);\n        }\n    }, 20 * 60 * 1000); // 20 minutes\n\n    updateStatus('Auto-refresh enabled (every 20 minutes)', 'info');\n}\n\nfunction stopAutoRefresh() {\n    if (autoRefreshInterval) {\n        clearInterval(autoRefreshInterval);\n        autoRefreshInterval = null;\n    }\n}\n\n// Initialize the application\ndocument.addEventListener('DOMContentLoaded', () => {\n    // Initialize Tabulator table\n    precipTable = new Tabulator(\"#precipitation-table\", {\n        ...commonConfig,\n        columns: getPrecipitationColumns(),\n        initialSort: [\n            {column: \"name\", dir: \"asc\"}\n        ]\n    });\n\n    // Initialize form controls and event handlers\n    initializeControls();\n    setupEventHandlers();\n\n    // Load initial data if network is specified in URL\n    const urlParams = new URLSearchParams(window.location.search);\n    const initialNetwork = urlParams.get('network');\n    if (initialNetwork) {\n        // Auto-load with current time, minutes set to 0\n        const now = new Date();\n        now.setMinutes(0, 0, 0);\n        loadPrecipitationData(initialNetwork, now);\n    }\n});\n"
  },
  {
    "path": "htdocs/rainfall/obhour.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\n$t = new MyView();\n$network = isset($_GET[\"network\"]) ? xssafe($_GET[\"network\"]) : \"IA_ASOS\";\n\n$t->headextra = <<<EOM\n<link href=\"https://unpkg.com/tabulator-tables@6.2.1/dist/css/tabulator.min.css\" rel=\"stylesheet\">\n<link href=\"obhour.css\" rel=\"stylesheet\">\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"obhour.module.js?v=3\" type=\"module\"></script>\nEOM;\n\n$t->title = \"Hourly Precip Accumulator\";\n\n$t->content = <<<EOM\n<div class=\"container-fluid\">\n    <div class=\"row\">\n        <div class=\"col-12\">\n            <nav aria-label=\"breadcrumb\">\n                <ol class=\"breadcrumb\">\n                    <li class=\"breadcrumb-item\"><a href=\"/rainfall/\">Rainfall Tools</a></li>\n                    <li class=\"breadcrumb-item active\" aria-current=\"page\">Hourly Precipitation Accumulator</li>\n                </ol>\n            </nav>\n\n            <div class=\"d-flex align-items-center mb-3\">\n                <h2 class=\"mb-0 me-3\">\n                    <i class=\"bi bi-cloud-rain-fill text-primary me-2\"></i>\n                    Hourly Precipitation Accumulator\n                </h2>\n            </div>\n\n            <div class=\"alert alert-info d-flex align-items-start mb-4\">\n                <i class=\"bi bi-info-circle-fill me-2 flex-shrink-0\" style=\"font-size: 1.2rem;\"></i>\n                <div>\n                    <strong>About This Tool:</strong> View accumulated precipitation values over different time intervals for ASOS/AWOS stations.\n                    The valid time reported is the ending time (e.g., 1 Hour value at 11 AM covers 10-11 AM).\n                    <br><strong>Note:</strong> Data updates at the top of each hour. Current hour data is not available.\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <!-- Controls Panel -->\n    <form id=\"precipitation-form\" class=\"mb-4\">\n        <div class=\"card\">\n            <div class=\"card-header bg-light\">\n                <h5 class=\"card-title mb-0\">\n                    <i class=\"bi bi-sliders me-2\"></i>Data Selection\n                </h5>\n            </div>\n            <div class=\"card-body\">\n                <div class=\"row g-3 align-items-end\">\n                    <div class=\"col-lg-3\">\n                        <label for=\"network-select\" class=\"form-label fw-medium\">\n                            <i class=\"bi bi-geo-alt-fill me-1\"></i>Network\n                        </label>\n                        <select id=\"network-select\" name=\"network\" class=\"form-select\">\n                            <option value=\"\">Select a Network...</option>\n                        </select>\n                    </div>\n\n                    <div class=\"col-lg-2\">\n                        <label for=\"date-select\" class=\"form-label fw-medium\">\n                            <i class=\"bi bi-calendar3 me-1\"></i>Date\n                        </label>\n                        <input type=\"date\" id=\"date-select\" name=\"date\" class=\"form-control\">\n                    </div>\n\n                    <div class=\"col-lg-2\">\n                        <label for=\"time-select\" class=\"form-label fw-medium\">\n                            <i class=\"bi bi-clock me-1\"></i>Time\n                        </label>\n                        <select id=\"time-select\" name=\"time\" class=\"form-select\">\n                        </select>\n                    </div>\n\n                    <div class=\"col-lg-2\">\n                        <div class=\"form-check form-switch\">\n                            <input class=\"form-check-input\" type=\"checkbox\" id=\"auto-refresh\">\n                            <label class=\"form-check-label fw-medium\" for=\"auto-refresh\">\n                                <i class=\"bi bi-arrow-clockwise me-1\"></i>Auto Refresh\n                            </label>\n                        </div>\n                    </div>\n\n                    <div class=\"col-lg-3\">\n                        <button type=\"submit\" class=\"btn btn-primary btn-lg w-100\">\n                            <i class=\"bi bi-download me-2\"></i>Load Data\n                        </button>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </form>\n\n    <!-- Status and Downloads -->\n    <div class=\"row mb-3\">\n        <div class=\"col-md-8\">\n            <div class=\"alert alert-secondary mb-0\" role=\"status\">\n                <i class=\"bi bi-info-circle me-2\"></i>\n                <span id=\"status-message\">Please select network and date/time to load data</span>\n            </div>\n        </div>\n        <div class=\"col-md-4\">\n            <div id=\"download-buttons\" class=\"d-none\">\n                <div class=\"btn-group w-100\" role=\"group\">\n                    <button type=\"button\" id=\"download-csv\" class=\"btn btn-success\">\n                        <i class=\"bi bi-file-earmark-spreadsheet me-1\"></i>CSV\n                    </button>\n                    <button type=\"button\" id=\"copy-clipboard\" class=\"btn btn-secondary\">\n                        <i class=\"bi bi-clipboard me-1\"></i>Copy\n                    </button>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <!-- Precipitation Data Table -->\n    <div class=\"card\">\n        <div class=\"card-header bg-primary text-white d-flex align-items-center justify-content-between\">\n            <h5 class=\"mb-0\">\n                <i class=\"bi bi-table me-2\"></i>\n                <span id=\"table-title\">Accumulated Precipitation by Interval</span>\n            </h5>\n            <small id=\"table-subtitle\" class=\"opacity-75\"></small>\n        </div>\n        <div class=\"card-body p-0\">\n            <div id=\"precipitation-table\"></div>\n        </div>\n    </div>\n</div>\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/request/asos/1min.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/iemprop.php\";\nrequire_once \"../../../include/database.inc.php\";\n\ndefine(\"IEM_APPID\", 73);\n$t = new MyView();\n$t->iemss = True;\n$t->iem_resource = \"ASOS1MIN\";\n$t->title = \"ASOS One Minute Data Download\";\n\n$aend = get_iemprop(\"asos.1min.end\");\n$archive_end = \"N/A\";\nif (!is_null($aend)) {\n    $asos_archive_end = new DateTime($aend);\n    $archive_end = $asos_archive_end->format('d M Y');\n}\n$bogus = 0;\n\n$y1select = yearSelect(2000, date(\"Y\"), \"year1\");\n$m1select = monthSelect($bogus, \"month1\");\n$d1select = daySelect(\"1\", \"day1\");\n$h1select = hourSelect($bogus, \"hour1\");\n$min1select = minuteSelect($bogus, \"minute1\");\n\n$y2select = yearSelect(2000, date(\"Y\"), \"year2\");\n$m2select = monthSelect(date(\"m\"), \"month2\");\n$d2select = daySelect(date(\"d\"), \"day2\");\n$h2select = hourSelect($bogus, \"hour2\");\n$min2select = minuteSelect($bogus, \"minute2\");\n\n$t->headextra = <<<EOM\n<style type=\"text/css\">\n#map {\n    width: 100%;\n    height: 450px;\n    border: 2px solid black;\n}\n</style>\nEOM;\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/ASOS/\">ASOS Mainpage</a></li>\n <li class=\"active\">Download ASOS 1 minute interval data</li>\n</ol>\n\n<p>Each month, the National Climatic Data Center provides \n<a href=\"ftp://ftp.ncdc.noaa.gov/pub/data/asos-onemin/\">an archive of one \nminute interval data</a> from the ASOS sites in the United States.  Unfortunately, \nthe data format of this information is brutal to work with.  Fortunately for \nyou, the IEM <a href=\"https://github.com/akrherz/iem/blob/main/scripts/ingestors/asos_1minute/parse_ncei_asos1minute.py\">processes this information</a> and provides it for download here. The\narchive is available up until:\n<strong>{$archive_end}</strong>.  There is\na different interface to download the <a href=\"/request/download.phtml\">routine hourly</a>\nobservations from this network and for sites over the entire globe.</p>\n\n<p><a class=\"btn btn-secondary\" href=\"/cgi-bin/request/asos1min.py?help\"><i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend Documentation</a> exists for those that\nwish to script against this service.</p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/asos1min.py\" name=\"dl\">\n<div class=\"form2url\"></div>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n\n<p><h3>1. Select Station:</h3><br>\n<i>Select One or More or All stations in the network.</i><br>\n<br />\n<div id=\"iemss\" data-network=\"ASOS1MIN\" data-name=\"station\" data-supports-all=\"0\"></div>\n\n</div>\n<div class=\"col-md-6\">\n\n<h3>2. Timezone of Observations:</h3>\n<i>The timestamps used in the downloaded files will be set in the\ntimezone you specify.</i>\n<SELECT name=\"tz\">\n    <option value=\"UTC\">UTC Time</option>\n    <option value=\"America/New_York\">Eastern Time</option>\n    <option value=\"America/Chicago\">Central Time</option>\n    <option value=\"America/Denver\">Mountain Time</option>\n    <option value=\"America/Los_Angeles\">Pacific Time</option>\n    <option value=\"America/Anchorage\">Alaska/Anchorage Time</option>\n</SELECT>\n\n<h3>3. Select Start/End Time:</h3><br>\n<i>This timestamp is in the timezone you selected above.</i>\n<table class=\"table table-sm\">\n<thead>\n  <tr>\n    <td></td>\n    <th>Year</th><th>Month</th><th>Day</th>\n    <th>Hour</th><th>Minute</th>\n  </tr>\n</thead>\n<tbody>\n  <tr>\n    <th>Start:</th>\n    <td>{$y1select}</td><td>{$m1select}</td><td>{$d1select}</td>\n    <td>{$h1select}</td><td>{$min1select}</td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>{$y2select}</td><td>{$m2select}</td><td>{$d2select}</td>\n    <td>{$h2select}</td><td>{$min2select}</td>\n  </tr>\n</tbody>\n</table>\n\n<h3>4. Select Variables:</h3><br>\n<select size=5 name=\"vars\" MULTIPLE>\n  <option value=\"tmpf\">Air Temperature [F]</option>\n  <option value=\"dwpf\">Dew Point Temperature [F]</option>\n  <option value=\"sknt\">Wind Speed [knots]</option>\n  <option value=\"drct\">Wind Direction</option>\n  <option value=\"gust_drct\">5 sec gust Wind Direction</option>\n  <option value=\"gust_sknt\">5 sec gust Wind Speed [knots]</option>\n  <option value=\"vis1_coeff\">Visibility 1 Coefficient</option>\n  <option value=\"vis1_nd\">Visibility 1 Night/Day</option>\n  <option value=\"vis2_coeff\">Visibility 2 Coefficient</option>\n  <option value=\"vis2_nd\">Visibility 2 Night/Day</option>\n  <option value=\"vis3_coeff\">Visibility 3 Coefficient</option>\n  <option value=\"vis3_nd\">Visibility 3 Night/Day</option>\n  <option value=\"ptype\">Precip Type Code</option>\n  <option value=\"precip\">1 minute precip [inches]</option>\n  <option value=\"pres1\">Sensor 1 Station Pressure [inches]</option>\n  <option value=\"pres2\">Sensor 2 Station Pressure [inches]</option>\n  <option value=\"pres3\">Sensor 3 Station Pressure [inches]</option>\n</select>\n\n<h3>5. Data Sampling?</h3><br>\n<i>Data is potentially available every minute, but you don't have to download\nit at that frequency. This setting <b>does not bin</b> the values, but rather\nfilters based on your interval of choice.</i>\n<select name=\"sample\">\n<option value=\"1min\">Every Minute\n<option value=\"5min\">Every 5 Minutes\n<option value=\"10min\">Every 10 Minutes\n<option value=\"20min\">Every 20 Minutes\n<option value=\"1hour\">Every Hour\n</select>\n\n<h3>6. How to view?</h3>\n\n<p>The \"Plot in Chart\" option was removed here due to its poor performance.\nPlease try <a href=\"/plotting/auto/?q=211\">Autoplot 211</a> instead.</p>\n\n<p><select name=\"what\">\n  <option value=\"download\">Download to Disk</option>\n  <option value=\"view\">View on-line</option>\n</select></p>\n\n<h3>7. Data Delimitation:</h3><br>\nHow shall the output values be seperated?\n<br>\n<select name=\"delim\">\n    <option value=\"comma\">Comma</option>\n    <option value=\"tab\">Tab</option>\n</select>\n\n<h3>8. Include Station Latitude & Longitude values?</h3>\n<img src=\"/images/gisready.png\"><br>\n<div class=\"story\">\n <select name=\"gis\">\n   <option value=\"no\">No\n   <option value=\"yes\">Yes\n </select>\n</div>\n\n<p><h3>Submit Form:</h3><br>\n<input type=\"submit\" value=\"Process Data Request\">\n<input type=\"reset\">\n\n</div></div>\n\n</form>\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/request/asos/1min_dl.php",
    "content": "<?php\n// Automatically forward request with all the parameters to the new location\n$uri = sprintf(\"/cgi-bin/request/asos1min.py?%s\", $_SERVER['QUERY_STRING']);\nheader(\"Location: $uri\");\n"
  },
  {
    "path": "htdocs/request/asos/csv.php",
    "content": "<?php\n/* Generate a CSV file based on a request */\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/forms.php\";\n$mesosite = iemdb(\"mesosite\");\n$access = iemdb(\"iem\");\n$asos = iemdb(\"asos\");\npg_query($access, \"SET TIME ZONE 'UTC'\");\npg_query($asos, \"SET TIME ZONE 'UTC'\");\n\n$stations = array(\"AMW\");\n\nif (array_key_exists(\"lat\", $_GET) && array_key_exists(\"lon\", $_GET)) {\n    /* Figure out what station(s) fits the bill */\n    $lat = get_float404(\"lat\", null);\n    $lon = get_float404(\"lon\", null);\n    $sql = sprintf(\"SELECT id,\n      ST_DistanceSphere(geom, ST_geometryfromtext('POINT(%.4f %.4f)',4326)) as dist from stations\n      WHERE network ~* 'ASOS' ORDER by dist ASC\n      LIMIT 5\", $lon, $lat);\n    $rs = pg_query($mesosite, $sql);\n    for ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n        $stations[$i] = $row[\"id\"];\n    }\n}\n\n$result = \"id,valid,tmpf,dwpf,sknt,drct,phour,alti,gust,lon,lat\\n\";\n$prepared = null;\nforeach ($stations as $k => $id) {\n    if (array_key_exists(\"date\", $_REQUEST)) {\n        $ts = strtotime(get_str404(\"date\", null));\n        if (is_null($prepared)) {\n            $stname = iem_pg_prepare($asos, sprintf(\"SELECT station as id, valid,\n            max(tmpf) as tmpf, max(dwpf) as dwpf, max(sknt) as sknt, max(drct) as drct,\n            max(p01i) as phour, max(alti) as alti, max(gust) as gust,\n            max(ST_x(s.geom)) as lon, max(ST_y(s.geom)) as lat from alldata t, stations s\n            where s.id = $1 and s.network ~* 'ASOS'\n            and t.station = s.id and t.valid BETWEEN '%s'::date\n            and '%s'::date + '9 days'::interval GROUP by station, valid\n            ORDER by valid ASC\", date(\"Y-m-d\", $ts), date(\"Y-m-d\", $ts)));\n        }\n        $rs = pg_execute($asos, $stname, array($id));\n    } else {\n        $rs = pg_query($access, \"SELECT s.id, valid, max(tmpf) as tmpf, max(dwpf) as dwpf,\n      max(sknt) as sknt, max(drct) as drct,\n      max(phour) as phour, max(alti) as alti, max(gust) as gust,\n      max(ST_x(s.geom)) as lon, max(ST_y(s.geom)) as lat from current_log c, stations s\n      WHERE s.id = '$id' and s.iemid = c.iemid\n      GROUP by id, valid ORDER by valid ASC\");\n    }\n    if (pg_num_rows($rs) == 0) {\n        continue;\n    }\n    while ($row = pg_fetch_assoc($rs)) {\n        $result .= sprintf(\n            \"%s,%s,%s,%s,%s,%s,%s,%s,%s,%.4f,%.4f\\n\",\n            $row[\"id\"],\n            $row[\"valid\"],\n            $row[\"tmpf\"],\n            $row[\"dwpf\"],\n            $row[\"sknt\"],\n            $row[\"drct\"],\n            $row[\"phour\"],\n            $row[\"alti\"],\n            $row[\"gust\"],\n            $row[\"lon\"],\n            $row[\"lat\"]\n        );\n    }\n    break;\n}\n\nheader(\"Content-type: text/plain\");\necho $result;\n"
  },
  {
    "path": "htdocs/request/asos/hourlyprecip.phtml",
    "content": "<?php\nheader(\"Location: /request/hourlyprecip.phtml\");\n"
  },
  {
    "path": "htdocs/request/awos/1min.php",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 65);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/iemprop.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/network.php\";\n\n$t = new MyView();\n$t->title = \"AWOS One Minute Data Download\";\n\n$awos_archive_end = strtotime( get_iemprop(\"awos.1min.end\") );\n$bogus = 0;\n\n$ys1 = yearSelect(1995, date(\"Y\"), \"year1\");\n$ms1 = monthSelect($bogus, \"month1\");\n$ds1 = daySelect($bogus, \"day1\");\n$mi1 = minuteSelect($bogus, \"minute1\"); \n$hs1 = hour24Select($bogus, \"hour1\");\n\n$ys2 = yearSelect(1995, date(\"Y\"), \"year2\");\n$ms2 = monthSelect($bogus, \"month2\");\n$ds2 = daySelect($bogus, \"day2\");\n$mi2 = minuteSelect($bogus, \"minute2\");\n$hs2 = hour24Select($bogus, \"hour2\");\n\n$aend = date('d M Y', $awos_archive_end);\n\n$nt = new NetworkTable(\"IA_ASOS\");\n$ar = Array();\nforeach ($nt->table as $sid => $meta){\n    if (array_key_exists(\"IS_AWOS\", $meta[\"attributes\"])){\n        $ar[$sid] = $meta[\"name\"];\n    }\n}\n\n$sselect = make_select('station', \"\", $ar, '', '', TRUE, TRUE);\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/AWOS/\">AWOS Network</a></li>\n <li class=\"active\">Download One Minute Data</li>\n</ol>\n\n<p>The Iowa Department of Transportation (DOT) manages the \nnetwork of AWOS sensors in the state of Iowa.  While 20 minute interval data\nis published to the world in real-time, they also collect one minute interval\ndata internally.  Each month, the DOT kindly provides us with the previous\nmonth's archive of one minute data.  We process this data into our database\nand make the observations available here for download.  Please don't make\ngiant data requests through this interface, instead feel \nfree to email Daryl (akrherz@iastate.edu) and make your request.</p>\n\n<div class=\"alert alert-warning\">Population of this archive was discontinued by the DOT on 1 April 2011. Data\nfor dates after that date can be found \n<a class=\"link link-warning\" href=\"/request/download.phtml?network=IA_ASOS\">here</a>, but it is only\nat a 20 minute interval.\n\n<ul>\n <li><b>Archive Begins:</b> 1 Jan 1995 (for some sites, not all)</li>\n <li><b>Last Date in Archive:</b> {$aend} </li>\n</ul>\n</div>\n<form method=\"GET\" action=\"1min_dl.php\" name=\"dl\">\n\n<div class=\"row\">\n<div class=\"col-md-6 col-sm-6\">\n\n<p><h3 class=\"subtitle\">1. Select Station:</h3><br>\n<i>Select One or More or All stations in the network. Clinton and Fort Dodge \nwhere converted to ASOS in September of 2000.  Data for these sites exists \nin this archive up until that point.</i><br>\n{$sselect}\n\n<p><h3>2. Select Start/End Time:</h3><br>\n<strong>Time Zone:</strong><input type=\"radio\" value=\"UTC\" name=\"tz\" checked=\"checked\"> UTC  \n<input type=\"radio\" value=\"local\" name=\"tz\">Local CST/CDT\n\n<table>\n  <tr>\n    <td></td>\n    <th>Year</th><th>Month</th><th>Day</th>\n    <th>Hour</th><th>Minute</th>\n  </tr>\n\n  <tr>\n    <th>Start:</th>\n    <td>{$ys1}</td><td>{$ms1}</td><td>{$ds1}</td><td>{$hs1}</td><td>{$mi1}</td></tr>\n  <tr>\n    <th>End:</th>\n    <td>{$ys2}</td><td>{$ms2}</td><td>{$ds2}</td><td>{$hs2}</td><td>{$mi2}</td></tr>\n</table>\n\n<p><h3 class=\"subtitle\">3. Select Variables:</h3><br>\n(<i><a href=\"/AWOS/skyc.phtml\">More information</a> about cloud coverage codes.</i>)\n<select size=5 name=\"vars[]\" MULTIPLE>\n  <option value=\"tmpf\">Air Temperature\n  <option value=\"dwpf\">Dew Point Temperature\n  <option value=\"sknt\">Wind Speed [knots]\n  <option value=\"drct\">Wind Direction\n  <option value=\"gust\">Wind Gust [knots]\n  <option value=\"vsby\">Visibility\n  <option value=\"p01i\">Hourly Precipitation Accumulator\n  <option value=\"alti\">Altimeter\n  <option value=\"cl1\">Cloud Deck 1 Height\n  <option value=\"ca1\">Cloud Deck 1 Coverage\n  <option value=\"cl2\">Cloud Deck 2 Height\n  <option value=\"ca2\">Cloud Deck 2 Coverage\n  <option value=\"cl3\">Cloud Deck 3 Height\n  <option value=\"ca3\">Cloud Deck 3 Coverage\n</select>\n\n</div>\n<div class=\"col-md-6 col-sm-6\">\n\n\n<p><h3 class=\"subtitle\">4. Data Sampling?</h3><br>\n<i>Data is potentially available every minute, but you don't have to download\nit at that frequency. This setting <b>does not bin</b> the values, but rather\nfilters based on your interval of choice.</i>\n  <select name=\"sample\">\n    <option value=\"1min\">Every Minute\n    <option value=\"5min\">Every 5 Minutes\n    <option value=\"10min\">Every 10 Minutes\n    <option value=\"20min\">Every 20 Minutes\n    <option value=\"1hour\">Every Hour\n  </select>\n\n<p><h3 class=\"subtitle\">5. How to view?</h3><br>\n<select name=\"what\">\n  <option value=\"download\">Download to Disk\n  <option value=\"view\">View on-line\n</select>\n\n<p><h3 class=\"subtitle\">6. Data Delimitation:</h3><br>\nHow shall the output values be seperated?\n<br><select name=\"delim\">\n    <option value=\"comma\">Comma\n    <option value=\"space\">Space\n    <option value=\"tab\">Tab\n   </select>\n\n<p>\n<h3 class=\"subtitle\">7. Include Station Latitude & Longitude values?</h3><img src=\"/images/gisready.png\"><br>\n<div class=\"story\">\n <select name=\"gis\">\n   <option value=\"no\">No\n   <option value=\"yes\">Yes\n </select>\n</div>\n\n</div>\n\n<p><h3>Submit Form:</h3><br>\n<input type=\"submit\" value=\"Process Data Request\">\n<input type=\"reset\">\n</form>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/awos/1min_dl.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\n$nt = new NetworkTable(\"IA_ASOS\");\n\n$skycover = array(\n    0 => \"NOREPORT\",\n    1 => \"SCATTERED\",\n    2 => \"BROKEN\",\n    4 => \"OVERCAST\",\n    8 => \"OBSCURATION\",\n    16 => \"UNKNOWN\",\n    17 => \"OBSCURATION\",\n    18 => \"OBSCURATION\",\n    20 => \"OBSCURATION\",\n    32 => \"INDEFINITE\",\n    64 => \"CLEAR\",\n    128 => \"FEW\",\n    255 => \"MISSING\"\n);\n\n$gis = get_str404(\"gis\", 'no');\n$delim = get_str404(\"delim\", \",\");\n$sample = get_str404(\"sample\", \"1min\");\n$what = get_str404(\"what\", 'dl');\n$tz = get_str404(\"tz\", 'UTC');\n\n$day1 = get_int404(\"day1\", 1);\n$day2 = get_int404(\"day2\", 1);\n$month1 = get_int404(\"month1\", 1);\n$month2 = get_int404(\"month2\", 2);\n$year1 = get_int404(\"year1\", 2020);\n$year2 = get_int404(\"year2\", 2020);\n$hour1 = get_int404(\"hour1\", 0);\n$hour2 = get_int404(\"hour2\", 0);\n$minute1 = get_int404(\"minute1\", 0);\n$minute2 = get_int404(\"minute2\", 0);\n$vars = array_key_exists(\"vars\", $_GET) ? $_GET[\"vars\"] : [\"tmpf\"];\n\n$stations = array_key_exists(\"station\", $_GET) ? $_GET[\"station\"] : [\"BNW\"];\n$selectAll = false;\nforeach ($stations as $key => $value) {\n    if ($value === \"_ALL\") {\n        $selectAll = true;\n        continue;\n    }\n    if (strlen($value) > 4 && !array_key_exists($value, $nt->table)) {\n        xssafe(\"<tag>\");\n    }\n}\nif ($selectAll) {\n    $stations = array_keys($nt->table);\n}\n\n\n$ts1 = mktime($hour1, $minute1, 0, $month1, $day1, $year1);\n$ts2 = mktime($hour2, $minute2, 0, $month2, $day2, $year2);\n\nif ($selectAll && $day1 != $day2)\n    $ts2 = $ts1 + 86400;\n\n$num_vars = count($vars);\nif ($num_vars == 0)  die(\"You did not specify data\");\n\n$sqlStr = \"SELECT station, \";\nfor ($i = 0; $i < $num_vars; $i++) {\n    $sqlStr .= xssafe($vars[$i]) . \" as var{$i}, \";\n}\n\n$sqlTS1 = date(\"Y-m-d H:i\", $ts1);\n$sqlTS2 = date(\"Y-m-d H:i\", $ts2);\n$nicedate = date(\"Y-m-d\", $ts1);\n\n$sampleStr = array(\n    \"1min\" => \"1\",\n    \"5min\" => \"5\",\n    \"10min\" => \"10\",\n    \"20min\" => \"20\",\n    \"1hour\" => \"60\"\n);\n\n$d = array(\"space\" => \" \", \"comma\" => \",\", \"tab\" => \"\\t\");\n\n$sqlStr .= \"to_char(valid, 'YYYY-MM-DD HH24:MI') as dvalid from alldata \";\n$sqlStr .= \" WHERE valid >= '\" . $sqlTS1 . \"' and valid <= '\" . $sqlTS2 . \"' \";\n$sqlStr .= \" and extract(minute from valid)::int % \" . $sampleStr[$sample] . \" = 0 \";\n$sqlStr .= \" and station = ANY($1) ORDER by valid ASC\";\n\nif ($what == \"download\") {\n    header(\"Content-type: application/octet-stream\");\n    header(\"Content-Disposition: attachment; filename=changeme.txt\");\n} else {\n    header(\"Content-type: text/plain\");\n}\n\n$conn = iemdb(\"awos\");\n\n$tzn = \"local\";\nif ($tz == \"UTC\") {\n    $tzn = \"UTC\";\n    $result = pg_query($conn, \"SET TIME ZONE 'UTC'\");\n}\n\n$stname = iem_pg_prepare($conn, $sqlStr);\n$rs = pg_execute($conn, $stname, Array(\"{ \" . implode(\",\", $stations) . \" }\"));\n\nif ($gis == \"yes\") {\n    echo \"station,station_name,lat,lon,valid($tzn),\";\n} else {\n    echo \"station,station_name,valid($tzn),\";\n}\nfor ($j = 0; $j < $num_vars; $j++) {\n    echo $vars[$j] . $d[$delim];\n    if ($vars[$j] == \"ca1\") echo \"ca1code\" . $d[$delim];\n    if ($vars[$j] == \"ca2\") echo \"ca2code\" . $d[$delim];\n    if ($vars[$j] == \"ca3\") echo \"ca3code\" . $d[$delim];\n}\necho \"\\n\";\n\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n    $sid = $row[\"station\"];\n    echo $sid . $d[$delim] . $nt->table[$sid][\"name\"];\n    if ($gis == \"yes\") {\n        echo  $d[$delim] . $nt->table[$sid][\"lat\"] . $d[$delim] .  $nt->table[$sid][\"lon\"];\n    }\n    echo $d[$delim] . $row[\"dvalid\"] . $d[$delim];\n    for ($j = 0; $j < $num_vars; $j++) {\n        echo $row[\"var\" . $j] . $d[$delim];\n        if ($vars[$j] == \"ca1\") echo $skycover[$row[\"var\" . $j]] . $d[$delim];\n        if ($vars[$j] == \"ca2\") echo $skycover[$row[\"var\" . $j]] . $d[$delim];\n        if ($vars[$j] == \"ca3\") echo $skycover[$row[\"var\" . $j]] . $d[$delim];\n    }\n    echo \"\\n\";\n}\n"
  },
  {
    "path": "htdocs/request/coop/dl.php",
    "content": "<?php\n/*\n * Download COOP observations from the QC'd table\n * DEPRECIATE this at some point...\n */\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/mlib.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\n\n$connection = iemdb(\"coop\");\n$network = substr(get_str404(\"network\", \"IACLIMATE\"), 0, 10);\n$day1 = get_int404(\"day1\", 1);\n$day2 = get_int404(\"day2\", 1);\n$month1 = get_int404(\"month1\", 1);\n$month2 = get_int404(\"month2\", 2);\n$year1 = get_int404(\"year1\", 2020);\n$year2 = get_int404(\"year2\", 2020);\n$vars = array_key_exists(\"vars\", $_GET) ? $_GET[\"vars\"] : ['high'];\n\n$gis = get_str404(\"gis\", 'no');\n$delim = get_str404(\"delim\", \"comma\");\n$what = get_str404(\"what\", 'dl');\n\n$nt = new NetworkTable($network);\n$cities = $nt->table;\n\n$stations = array_key_exists(\"station\", $_GET) ? $_GET[\"station\"] : \"AMSI4\";\nif (!is_array($stations)) {\n    $stations = array($stations);\n}\n$selectAll = false;\nforeach ($stations as $key => $value) {\n    if ($value == \"_ALL\") {\n        $selectAll = true;\n    }\n    if (strlen($value) > 6 && !array_key_exists($value, $cities)) {\n        xssafe(\"<tag>\");\n    }\n}\n\nif ($selectAll) {\n    $stations = array_keys($cities);\n}\n$stationSQL = \"{\". implode(\",\", $stations) . \"}\";\n\n$ts1 = new DateTime(\"{$year1}-{$month1}-{$day1}\");\n$ts2 = new DateTime(\"{$year2}-{$month2}-{$day2}\");\n\n$num_vars = count($vars);\nif ($num_vars == 0)  die(\"You did not specify data\");\n\n$sqlTS1 = $ts1->format(\"Y-m-d\");\n$sqlTS2 = $ts2->format(\"Y-m-d\");\n$table = \"alldata\";\n$nicedate = $ts1->format(\"Y-m-d\");\n\n$d = array(\"space\" => \" \", \"comma\" => \",\", \"tab\" => \"\\t\");\n\n$sqlStr = \"SELECT station, *, to_char(day, 'YYYY/mm/dd') as dvalid,\n extract(doy from day) as doy,\n gddxx(50, 86, high, low) as gdd_50_86,\n gddxx(40, 86, high, low) as gdd_40_86,\n round((5.0/9.0 * (high - 32.0))::numeric,1) as highc,\n round((5.0/9.0 * (low - 32.0))::numeric,1) as lowc,\n round((precip * 25.4)::numeric,1) as precipmm\n from $table WHERE day >= '\" . $sqlTS1 . \"' and day <= '\" . $sqlTS2 . \"'\n and station = ANY($1) ORDER by day ASC\";\n\n/**\n * Must handle different ideas for what to do...\n **/\n\nif ($what == \"download\") {\n    header(\"Content-type: application/octet-stream\");\n    header(\"Content-Disposition: attachment; filename=changeme.txt\");\n} else {\n    header(\"Content-type: text/plain\");\n}\n\nif (in_array('daycent', $vars)) {\n    /*\n     * > Daily Weather Data File (use extra weather drivers = 0):\n     * >\n     * > 1 1 1990 1 7.040 -10.300 0.000\n     * >\n> NOTES:\n> Column 1 - Day of month, 1-31\n> Column 2 - Month of year, 1-12\n> Column 3 - Year\n> Column 4 - Day of the year, 1-366\n> Column 5 - Maximum temperature for day, degrees C\n> Column 6 - Minimum temperature for day, degrees C\n> Column 7 - Precipitation for day, centimeters\n     */\n    if (sizeof($stations) > 1) die(\"Sorry, only one station request at a time for daycent option\");\n    if ($selectAll) die(\"Sorry, only one station request at a time for daycent option\");\n    $stname = iem_pg_prepare($connection, \"SELECT extract(doy from day) as doy, high, low, precip,\n        month, year, extract(day from day) as lday\n        from $table WHERE station = ANY($1) and day >= '\" . $sqlTS1 . \"' and day <= '\" . $sqlTS2 . \"' ORDER by day ASC\");\n    $rs = pg_execute($connection, $stname, array($stationSQL));\n    echo \"Daily Weather Data File (use extra weather drivers = 0):\\n\";\n    echo \"\\n\";\n    while ($row = pg_fetch_assoc($rs)) {\n        echo sprintf(\n            \"%s %s %s %s %.2f %.2f %.2f\\n\",\n            $row[\"lday\"],\n            $row[\"month\"],\n            $row[\"year\"],\n            $row[\"doy\"],\n            f2c($row[\"high\"]),\n            f2c($row[\"low\"]),\n            $row[\"precip\"] * 25.4\n        );\n    }\n} else if (in_array('century', $vars)) {\n    /*\n     * Century format  (precip cm, avg high C, avg low C)\nprec  1980   2.60   6.40   0.90   1.00   0.70   0.00   2.10   1.60   4.60   3.20   5.70   5.90\ntmin  1980  14.66  12.10   7.33  -0.89  -5.45  -7.29 -11.65  -9.12  -7.03  -0.62   5.02  11.18\ntmax  1980  33.24  30.50  27.00  18.37  11.35   9.90   0.39   3.93   6.77  14.92  19.77  28.85\nprec  1981  12.00   7.20   0.60   4.90   1.10   0.30   0.70   0.30   4.50   5.10  11.50   4.10\ntmin  1981  14.32  12.48   8.17   0.92  -3.25  -8.90  -9.47  -9.84  -4.10   2.90   4.84  10.87\ntmax  1981  30.84  28.71  27.02  16.84  12.88   6.82   8.21   7.70  11.90  20.02  18.31  27.98\n     */\n    $response = \"\";\n    if (sizeof($stations) > 1) {\n        die(\"Sorry, only one station request at a time for century option\");\n    }\n    if ($selectAll) {\n        die(\"Sorry, only one station request at a time for century option\");\n    }\n    $table = sprintf(\"alldata_%s\", substr($stations[0], 0, 2));\n    $stname = iem_pg_prepare($connection, \"SELECT year, month, avg(high) as avgh, \" .\n        \" avg(low) as avgl, sum(precip) as p\" .\n        \" from $table WHERE station = ANY($3) and \" .\n        \" year >= $1 and year <= $2 GROUP by year, month\");\n    $rs = pg_execute($connection, $stname, array($year1, $year2, $stationSQL));\n    $monthly = array();\n    while ($row = pg_fetch_assoc($rs)) {\n        $key = sprintf(\"%s%02d\", $row[\"year\"], $row[\"month\"]);\n        $monthly[$key] = array(\n            \"tmax\" => f2c($row[\"avgh\"]),\n            \"tmin\" => f2c($row[\"avgl\"]),\n            \"prec\" => $row[\"p\"] * 2.54, // cm\n        );\n    }\n    $idxs = array(\"prec\", \"tmin\", \"tmax\");\n    for ($y = $year1; $y <= $year2; $y++) {\n        foreach ($idxs as $key => $val) {\n            $response .= sprintf(\n                \"%s  %s%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f\" .\n                    \"%7.2f%7.2f%7.2f%7.2f%7.2f\\n\",\n                $val,\n                $y,\n                $monthly[\"{$y}01\"][$val],\n                $monthly[\"{$y}02\"][$val],\n                $monthly[\"{$y}03\"][$val],\n                $monthly[\"{$y}04\"][$val],\n                $monthly[\"{$y}05\"][$val],\n                $monthly[\"{$y}06\"][$val],\n                $monthly[\"{$y}07\"][$val],\n                $monthly[\"{$y}08\"][$val],\n                $monthly[\"{$y}09\"][$val],\n                $monthly[\"{$y}10\"][$val],\n                $monthly[\"{$y}11\"][$val],\n                $monthly[\"{$y}12\"][$val]\n            );\n        }\n    }\n    /* Write back to the luser */\n    header(\"Content-type: application/octet-stream\");\n    header(sprintf(\n        \"Content-Disposition: attachment; filename=%s.wth\",\n        $stations[0]\n    ));\n    die($response);\n} else if (in_array('apsim', $vars)) {\n    /*\n     * [weather.met.weather]\nlatitude = 42.1 (DECIMAL DEGREES)\ntav = 9.325084 (oC) ! annual average ambient temperature\namp = 29.57153 (oC) ! annual amplitude in mean monthly temperature\nyear          day           radn          maxt          mint          rain\n()            ()            (MJ/m^2)      (oC)          (oC)          (mm)\n 1986          1             7.38585       0.8938889    -7.295556      0\n     */\n    $network = sprintf(\"%sCLIMATE\", substr($stations[0], 0, 2));\n    $nt = new NetworkTable($network);\n    $cities = $nt->table;\n    $response = \"[weather.met.weather]\\n\";\n    $response .= sprintf(\n        \"latitude = %.1f (DECIMAL DEGREES)\\n\",\n        $cities[$stations[0]][\"lat\"]\n    );\n\n    $sql = \"SELECT avg((high+low)/2) from climate51 \" .\n        \" WHERE station = ANY($1) \";\n    $stname = iem_pg_prepare($connection, $sql);\n    $rs = pg_execute($connection, $stname, array($stationSQL));\n    $row = pg_fetch_assoc($rs, 0);\n    $response .= sprintf(\n        \"tav = %.3f (oC) ! annual average ambient temperature\\n\",\n        f2c($row['avg'])\n    );\n    $stname = iem_pg_prepare($connection, \"select max(avg) as h, min(avg) as l from\n            (SELECT extract(month from valid) as month, avg((high+low)/2.)\n             from climate51\n             WHERE station = ANY($1) GROUP by month) as foo \");\n    $rs = pg_execute($connection, $stname, array($stationSQL));\n    $row = pg_fetch_assoc($rs, 0);\n    $response .= sprintf(\n        \"amp = %.3f (oC) ! annual amplitude in mean monthly temperature\\n\",\n        f2c($row['h']) - f2c($row['l'])\n    );\n\n    $response .= \"year          day           radn          maxt          mint          rain\n()            ()            (MJ/m^2)      (oC)          (oC)          (mm)\\n\";\n\n    $stname = iem_pg_prepare($connection, \"SELECT extract(doy from day) as doy, high,\" .\n        \" low, precip, month, year, extract(day from day) as lday, station, year,\" .\n        \" coalesce(narr_srad, merra_srad, hrrr_srad) as srad\" .\n        \" from $table \" .\n        \" WHERE station = ANY($1) and \" .\n        \" day >= '\" . $sqlTS1 . \"' and day <= '\" . $sqlTS2 . \"' ORDER by day ASC\");\n    $rs = pg_execute($connection, $stname, array($stationSQL));\n    while ($row = pg_fetch_assoc($rs)) {\n        $response .= sprintf(\n            \" %s         %s        %.4f         %.4f      %.4f     %.2f\\n\",\n            $row[\"year\"],\n            $row[\"doy\"],\n            ($row[\"srad\"] === null) ? -99 : $row[\"srad\"],\n            f2c($row[\"high\"]),\n            f2c($row[\"low\"]),\n            $row[\"precip\"] * 25.4\n        );\n    }\n\n    /* Write back to the luser */\n    header(\"Content-type: application/octet-stream\");\n    header(\"Content-Disposition: attachment; filename=fancypants.met\");\n    die($response);\n} else if (in_array('dndc', $vars)) {\n    /*\n     * One file per year! named StationName / StationName_YYYY.txt\n     * julian day, tmax C , tmin C, precip cm seperated by space\n     */\n    $stname = iem_pg_prepare($connection, \"SELECT extract(doy from day) as doy, high,\" .\n        \" low, precip, month, year, extract(day from day) as lday, station, year \" .\n        \" from $table \" .\n        \" WHERE station = ANY($1) and \" .\n        \" day >= '\" . $sqlTS1 . \"' and day <= '\" . $sqlTS2 . \"' ORDER by day ASC\");\n    $rs = pg_execute($connection, $stname, array($stationSQL));\n    $zipfiles = array();\n    while ($row = pg_fetch_assoc($rs)) {\n        $sname = str_replace(\" \", \"_\", $cities[$row[\"station\"]][\"name\"]);\n        $fn = sprintf(\"%s/%s_%s.txt\", $sname, $sname, $row[\"year\"]);\n        if (!array_key_exists($fn, $zipfiles)) {\n            $zipfiles[$fn] = \"\";\n        }\n        $zipfiles[$fn] .= sprintf(\n            \"%s %s %s %s\\n\",\n            $row[\"doy\"],\n            f2c($row[\"high\"]),\n            f2c($row[\"low\"]),\n            $row[\"precip\"] * 2.54\n        );\n    }\n    chdir(\"/tmp\");\n    $zip = new ZipArchive;\n    $res = $zip->open('dndc.zip', ZipArchive::CREATE);\n    foreach ($zipfiles as $key => $val) {\n        $zip->addFromString($key, $val);\n    }\n    $zip->close();\n    /* Write back to the luser */\n    header(\"Content-type: application/octet-stream\");\n    header(\"Content-Disposition: attachment; filename=dndc.zip\");\n    readfile(\"dndc.zip\");\n} else if (in_array('salus', $vars)) {\n    /*\n     * > Daily Weather Data File (use extra weather drivers = 0):\n\nStationID, Year, DOY, SRAD, Tmax, Tmin, Rain, DewP, Wind, Par, dbnum\nCTRL, 1981, 1, 5.62203, 2.79032, -3.53361, 5.43766, NaN, NaN, NaN, 2\nCTRL, 1981, 2, 3.1898, 1.59032, -6.83361, 1.38607, NaN, NaN, NaN, 3\n    */\n    if (sizeof($stations) > 1) die(\"Sorry, only one station request at a time for daycent option\");\n    if ($selectAll) die(\"Sorry, only one station request at a time for daycent option\");\n    $stname = iem_pg_prepare($connection, \"SELECT extract(doy from day) as doy, high,\" .\n        \" low, precip, month, year, extract(day from day) as lday, station, year,\" .\n        \" coalesce(narr_srad, merra_srad, hrrr_srad) as srad\" .\n        \" from $table WHERE station = ANY($1) and \" .\n        \" day >= '\" . $sqlTS1 . \"' and day <= '\" . $sqlTS2 . \"' ORDER by day ASC\");\n    $rs = pg_execute($connection, $stname, array($stationSQL));\n    echo \"StationID, Year, DOY, SRAD, Tmax, Tmin, Rain, DewP, Wind, Par, dbnum\\n\";\n    for ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n        echo sprintf(\n            \"%s, %s, %s, %.4f, %.2f, %.2f, %.2f, , , , %s\\n\",\n            substr($row[\"station\"], 0, 4),\n            $row[\"year\"],\n            $row[\"doy\"],\n            ($row[\"srad\"] === null) ? -99 : $row[\"srad\"],\n            f2c($row[\"high\"]),\n            f2c($row[\"low\"]),\n            $row[\"precip\"] * 25.4,\n            $i + 2\n        );\n    }\n} else if ($what != \"plot\") {\n\n    $stname = iem_pg_prepare($connection, $sqlStr);\n    $rs =  pg_execute($connection, $stname, Array($stationSQL));\n\n    if ($gis == \"yes\") {\n        echo \"station\" . $d[$delim] . \"station_name\" . $d[$delim] . \"lat\" . $d[$delim] . \"lon\" . $d[$delim] . \"day\" . $d[$delim] . \"julianday\" . $d[$delim];\n    } else {\n        echo \"station\" . $d[$delim] . \"station_name\" . $d[$delim] . \"day\" . $d[$delim] . \"julianday\" . $d[$delim];\n    }\n    for ($j = 0; $j < $num_vars; $j++) {\n        echo $vars[$j] . $d[$delim];\n    }\n    echo \"\\r\\n\";\n\n    while ($row = pg_fetch_assoc($rs)) {\n        $sid = $row[\"station\"];\n        echo $sid . $d[$delim] . $cities[$sid][\"name\"];\n        if ($gis == \"yes\") {\n            echo  $d[$delim] . $cities[$sid][\"lat\"] . $d[$delim] .  $cities[$sid][\"lon\"];\n        }\n        echo $d[$delim] . $row[\"dvalid\"] . $d[$delim] . $row[\"doy\"] . $d[$delim];\n        for ($j = 0; $j < $num_vars; $j++) {\n            echo $row[$vars[$j]] . $d[$delim];\n        }\n        echo \"\\r\\n\";\n    }\n}\n"
  },
  {
    "path": "htdocs/request/coop/fe.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 3);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/iemprop.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/forms.php\";\n\n$network = isset($_REQUEST[\"network\"]) ? substr(xssafe($_REQUEST[\"network\"]), 0, 10) : \"IACLIMATE\";\n\n$t = new MyView();\n$t->iem_resource = \"CLIMODAT\";\n$t->iemss = True;\n$t->title = \"Climodat Dataset Daily Data Download\";\n\n$coop_archive_end = strtotime(get_iemprop(\"iaclimate.end\"));\n\n$enddate = date('d M Y', $coop_archive_end);\n\n$thisyear = date('Y');\n$y1 = yearSelect(1870, 1893, \"year1\");\n$sy_select = yearSelect(1893, intval($thisyear) - 1, \"scenario_year\");\n$m1 = monthSelect(1, \"month1\");\n$d1 = daySelect(1, \"day1\");\n$y2 = yearSelect(1870, date(\"Y\"), \"year2\");\n$m2 = monthSelect(date(\"m\"), \"month2\");\n$d2 = daySelect(date(\"d\"), \"day2\");\n$sselect = selectNetworkType(\"CLIMATE\", $network);\n\n$t->content = <<<EOM\n<div class=\"container my-4\">\n  <nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb bg-light px-3 py-2 mb-4 rounded\">\n      <li class=\"breadcrumb-item\"><a href=\"/COOP/\">NWS COOP Network</a></li>\n      <li class=\"breadcrumb-item active\" aria-current=\"page\">Download IEM Climodat Daily Data</li>\n    </ol>\n  </nav>\n\n  <div class=\"card mb-4\">\n    <div class=\"card-body\">\n      <p>If you are looking for actual NWS COOP observations with no estimating and very little\n      quality control done, check out <a href=\"obs-fe.phtml\">this page</a>.</p>\n      <p>This page allows you to download observed, sometimes quality controlled, \n      and sometimes estimated once daily reports from various NWS networks including\n      COOP.  More detailed\n      <a href=\"/info/datasets/climodat.html\">documentation exists here</a> and should be \n      consulted before using the data.\n      <a href=\"/cgi-bin/request/coop.py?help\" class=\"btn btn-secondary btn-sm ms-2 mb-1\">\n        <i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend documentation</a> exists for those wishing\n      to script against the backend service.</p>\n      <p>Data is also available from the following states:</p>\n      <form method=\"GET\" name=\"SSSS\" class=\"row g-2 align-items-end mb-0\">\n        <div class=\"col-auto\">\n          {$sselect}\n        </div>\n        <div class=\"col-auto\">\n          <button type=\"submit\" class=\"btn btn-outline-primary btn-sm\">Select Network</button>\n        </div>\n      </form>\n    </div>\n  </div>\n\n  <div class=\"alert alert-warning mb-4\">The purpose is to provide a dataset that does \n   not have holes in it for temperature and precipitation and is updated up \n   until yesterday for most sites.  Unfortunately, these\n   values are not on a local calendar day, so please be very careful before\n   use.  Unfortunately, long term observations that are on local calendar \n   days does not exist for many locations!</div>\n\n  <form target=\"_blank\" method=\"GET\" action=\"/cgi-bin/request/coop.py\" name=\"iemss\" class=\"card p-4 shadow-sm mb-5\">\n    <div class=\"form2url\"></div>\n    <input type=\"hidden\" name=\"network\" value=\"{$network}\" />\n    <div class=\"row g-4\">\n      <div class=\"col-md-6\">\n        <h4 class=\"h5 mb-3\">1. Select station(s):</h4>\n        <div id=\"iemss\" data-network=\"{$network}\" data-only-online=\"0\"></div>\n      </div>\n      <div class=\"col-md-6\">\n        <h4 class=\"h5 mb-3\">2. Select Start/End Time:</h4>\n        <i class=\"small\">Please note the start year in the station selector. If you only want data\n        for one day, set the start and end times to the same value.</i>\n        <table class=\"table table-sm align-middle mt-2 mb-4\">\n          <tr>\n            <td></td>\n            <th>Year</th><th>Month</th><th>Day</th>\n          </tr>\n          <tr>\n            <th>Start:</th>\n            <td>{$y1}</td>\n            <td>{$m1}</td>\n            <td>{$d1}</td>\n          </tr>\n          <tr>\n            <th>End:</th>\n            <td>{$y2}</td>\n            <td>{$m2}</td>\n            <td>{$d2}</td>\n          </tr>\n        </table>\n        <h4 class=\"h5 mb-3\">3. Select Variables:</h4>\n        <p class=\"small\">If you select a model format in option 4 below, this selection is ignored.</p>\n        <select size=\"5\" name=\"vars[]\" MULTIPLE class=\"form-select mb-3\">\n          <option value=\"gdd_50_86\">Computed: Growing Degree Days (base=50,max=86) [F]</option>\n          <option value=\"gdd_40_86\">Computed: Growing Degree Days (base=40,max=86) [F]</option>\n          <option value=\"high\">Variable: High Temperature [F]</option>\n          <option value=\"highc\">Variable: High Temperature [C]</option>\n          <option value=\"low\">Variable: Low Temperature [F]</option>\n          <option value=\"lowc\">Variable: Low Temperature [C]</option>\n          <option value=\"temp_estimated\">Temperature Estimated Flag</option>\n          <option value=\"precip\">Variable: Precipitation (rain+melted snow) [inch]</option>\n          <option value=\"precipmm\">Variable: Precipitation (rain+melted snow) [mm]</option>\n          <option value=\"precip_estimated\">Precipitation Estimated Flag</option>\n          <option value=\"snow\">Variable: Snowfall [inch]</option>\n          <option value=\"snowd\">Variable: Snow Depth (since 1991) [inch]</option>\n          <option value=\"era5land_srad\">Estimate: ERA5 Land Sampled Solar Radiation [MJ/day] (1951-)</option>\n          <option value=\"hrrr_srad\">Estimate: HRRR Sampled Solar Radiation [MJ/day] (2013-)</option>\n          <option value=\"merra_srad\">Estimate: MERRA-2 Sampled Solar Radiation [MJ/day] (1979-)</option>\n          <option value=\"narr_srad\">Estimate: NARR Sampled Solar Radiation [MJ/day] (1979-)</option>\n          <option value=\"power_srad\">Estimate: NASA POWER Sampled Solar Radiation [MJ/day] (1984-)</option>\n          <option value=\"era5land_soilt4_avg\">Estimate: ERA5 Land Soil Temperature 0-7cm [F] (1950-)</option>\n          <option value=\"era5land_soilm4_avg\">Estimate: ERA5 Land Soil Moisture 0-7cm [m3/m3] (1950-)</option>\n          <option value=\"era5land_soilm1m_avg\">Estimate: ERA5 Land Soil Moisture 0-1m [m3/m3] (1950-)</option>\n          <option value=\"nldas_soilt4_avg\">Estimate: NLDASv2 NOAHv2 Soil Temperature 0-10cm [F] (1979-)</option>\n          <option value=\"nldas_soilm4_avg\">Estimate: NLDASv2 NOAHv2 Soil Moisture 0-10cm [m3/m3] (1979-)</option>\n          <option value=\"nldas_soilm1m_avg\">Estimate: NLDASv2 NOAHv2 Soil Moisture 0-1m [m3/m3] (1979-)</option>\n        </select>\n        <h4 class=\"h5 mb-3\">4. Specialized Data/Model Formats</h4>\n        <p class=\"small\">When you select a given data format, it will override any selected variables\n        above and formats below.  These are specialized formats typically used for modelling and\n        their choice dictates the variables to be included. Please <a href=\"/info/contacts.php\">contact us</a>\n        to have your format added to the list! The bundled solar radiation with these\n        model files is first prioritized by availability (ie HRRR for past week) and\n        then proceeds from ERA5-Land to NARR to MERRAv2.</p>\n        <select size=\"5\" name=\"model\" class=\"form-select mb-3\">\n          <option value=\"apsim\">Model: APSIM MET File</option> \n          <option value=\"century\">Model: Century (Monthly Format)</option> \n          <option value=\"daycent\">Model: DailyDayCent (no extra drivers)</option> \n          <option value=\"dndc\">Model: DNDC</option> \n          <option value=\"salus\">Model: SALUS</option> \n          <option value=\"swat\">Model: SWAT (daily precip and temperatures)</option> \n        </select>\n        <h4 class=\"h5 mb-3\">5. How to view?</h4>\n        <p class=\"small\">Note that the Excel format is limited to 1,048,576 rows of data, so selecting\n        it will limit the returned data.</p>\n        <select name=\"what\" class=\"form-select mb-3\">\n          <option value=\"excel\">Excel File</option>\n          <option value=\"download\">Download to Disk</option>\n          <option value=\"view\">View on-line</option>\n        </select>\n        <h4 class=\"h5 mb-3\">6. Data Delimitation:</h4>\n        <p class=\"small\">This option is only relevant if you did not select \"Excel File\" from #5 above.</p>\n        <select name=\"delim\" class=\"form-select mb-3\">\n          <option value=\"comma\">Comma</option>\n          <option value=\"space\">Space</option>\n          <option value=\"tab\">Tab</option>\n        </select>\n        <h4 class=\"h5 mb-3\">7. Include Latitude and Longitude in output?</h4>\n        <select name=\"gis\" class=\"form-select mb-3\">\n          <option value=\"no\">No</option>\n          <option value=\"yes\">Yes</option>\n        </select>\n        <h4 class=\"h5 mb-3\">8. Fill out last year with scenario</h4>\n        <i class=\"small\">Optional! This is a bit tricky to explain.  The common usage case is to\n        fill out the current calendar's year worth of data with some data from the\n        past. For example, if today is 16 August 2024 and you select 2023 as the\n        scenario year, the data for 16 August 2024 would instead be a copy of what\n        was observed on 16 August 2023.  If you select a date period that was in the\n        past and not ending on 31 December, you could still use this feature to fill\n        out the year with the scenario year.  The scenario year could be from the\n        future!  For example, what if 2020 ended like what was observed in 2023.</i>\n        <div class=\"form-check mt-2 mb-3\">\n          <input type=\"checkbox\" name=\"scenario\" value=\"yes\" id=\"scen\" class=\"form-check-input\">\n          <label for=\"scen\" class=\"form-check-label\">Yes, use this year for replacement:</label> {$sy_select}\n        </div>\n        <h4 class=\"h5 mb-3\">9. Submit Form:</h4>\n        <i class=\"small\">Please be patient and only submit this form once.  It may take 10-20\n        seconds to get a response.</i><br />\n        <button type=\"submit\" class=\"btn btn-primary\">Process Data Request</button>\n        <button type=\"reset\" class=\"btn btn-secondary ms-2\">Reset</button>\n      </div>\n    </div>\n  </form>\n</div>\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/request/coop/obs-dl.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\n\n$uri = $_SERVER['REQUEST_URI'];\n// Replace any station[] with stations\n$uri = preg_replace('/station%5B%5D/', 'stations', $uri);\n$pos = strpos($uri, '?');\nif ($pos !== false) {\n    $uri = substr($uri, $pos + 1);\n}\nheader(\"Location: /cgi-bin/request/coopobs.py?$uri\");"
  },
  {
    "path": "htdocs/request/coop/obs-fe.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n\n$network = isset($_REQUEST['network']) ? xssafe($_REQUEST[\"network\"]) : 'IA_COOP';\n\ndefine(\"IEM_APPID\", 45);\n$t = new MyView();\n$t->iemss = True;\n$t->title = \"NWS COOP Raw Observations Download\";\n\n$content = <<<EOM\n<ol class=\"breadcrumb\">\n<li><a href=\"/COOP/\">NWS COOP Network</a></li>\n<li class=\"active\">Raw Data Download</li>\n</ol>\n\n<p>This form provides access to the raw observations from the NWS COOP network.\n<strong>The date presented in the download is the date on which the observation\n        was made!</strong> The observations represent a 24 hour period prior\n        to the timestamp on the observation.  These observations are typically\n        made around 7 AM localtime.</p>\nEOM;\n\n$nselect = selectNetworkType(\"COOP\", $network);\n$y1 = yearSelect(2010, date(\"Y\"), \"year1\");\n$m1 = monthSelect(\"\", \"month1\");\n$d1 = daySelect(\"\", \"day1\");\n$y2 = yearSelect(2010, date(\"Y\"), \"year2\");\n$m2 = monthSelect(\"\", \"month2\");\n$d2 = daySelect(\"\", \"day2\");\n\n$west = <<<EOM\n<form method=\"GET\" name=\"chstate\">\n<p>Select from State:\n{$nselect}\n<input type=\"submit\" value=\"Change Network\" />\n</form>\n\n<p><a href=\"/cgi-bin/request/coopobs.py?help\" class=\"btn btn-info\">Backend documentation</a>\nexists for those wishing to script against this service.</p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/coopobs.py\" name='dl'>\n<div class=\"form2url\"></div>\n<input type='hidden' name='network' value=\"{$network}\" />\n\n<div id=\"iemss\" data-network=\"{$network}\"></div>\n\n<p><h3>2. Select Start/End Date:</h3>\n<p>These dates are the date of the observation and do not always represent\na local calendar day!.</p>\n<table class=\"table table-striped\">\n  <tr>\n    <td></td>\n    <th>Year</th><th>Month</th><th>Day</th>\n  </tr>\n\n  <tr>\n    <th>Start:</th>\n    <td>{$y1}</td><td>{$m1}</td><td>{$d1}</td>\n        </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>{$y2}</td><td>{$m2}</td><td>{$d2}</td>\n  </tr>\n</table>\n\nEOM;\n$east = <<<EOM\n<p><h3>3. How to view?</h3><br>\n<select name=\"what\">\n  <option value=\"download\">Download to Disk</option>\n  <option value=\"view\">View on-line</option>\n</select>\n\n<p><h3>4. Data Delimitation:</h3><br>\nHow shall the output values be seperated?\n<br><select name=\"delim\">\n    <option value=\"comma\">Comma</option>\n    <option value=\"space\">Space</option>\n    <option value=\"tab\">Tab</option>\n   </select>\n\n<p><h3 class=\"subtitle\">Submit Form:</h3><br>\n<input type=\"submit\" value=\"Process Data Request\">\n<input type=\"reset\">\n</form>\n\n<p><h3>Download variable description</h3>\n<pre>\nnwsli National Weather Service Location Identifier\ndate  Date the observation was taken\ntime  Time (local timezone) the observation was taken\nhigh_F      24 Hour High Temperature [F]\nlow_F       24 Hour Low Temperature [F]\nprecip      24 Hour Precipitation [inch]\nsnow_inch   24 Hour Snowfall [inch]\nsnowd_inch  Snow Depth [inch] at observation\n</pre>\n\nEOM;\n$t->content = <<<EOM\n$content\n<div class=\"row\">\n<div class=\"col-md-6\">\n$west\n</div>\n<div class=\"col-md-6\">\n$east\n</div>\n</div>\n\nEOM;\n\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/daily.css",
    "content": "label {\n    font-weight: normal !important;\n    margin-bottom: 5px;\n    display:inline-block;\n}\ninput {\n    display:inline-block;\n}"
  },
  {
    "path": "htdocs/request/daily.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 90);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\n\n$mesosite = iemdb('mesosite');\n\n$t = new MyView();\n$t->iemss = True;\n$t->title = \"Download Daily Summary Data\";\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" type=\"text/css\" href=\"daily.css\">\nEOM;\n\n$network = isset($_REQUEST[\"network\"]) ? xssafe($_REQUEST[\"network\"]) : \"IA_ASOS\";\n\n$ar = Array();\n$rs = pg_query(\n    $mesosite,\n    \"SELECT id, name from networks where id !~* 'CLIMATE' \"\n    .\"ORDER by name ASC\"\n);\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n    $ar[$row[\"id\"]] = $row[\"name\"];\n}\n$nselect = make_select(\"network\", $network, $ar);\n\n$y1 = yearSelect(1900, date(\"Y\"), \"year1\");\n$m1 = monthSelect(\"\", \"month1\");\n$d1 = daySelect(\"\", \"day1\");\n$y2 = yearSelect(1900, date(\"Y\"), \"year2\");\n$m2 = monthSelect(date(\"m\"), \"month2\");\n$d2 = daySelect(date(\"d\"), \"day2\");\n\n$ar = Array(\n    \"None\" => \"Text string 'None'\",\n    \"M\" => \"M\",\n    \"blank\" => \"Empty string (blank)\",\n);\n$naselect = make_select(\"na\", \"blank\", $ar);\n\n$ar = Array(\n    \"csv\" => \"Comma Seperated (csv)\",\n    \"excel\" => \"Excel (xlsx)\",\n    \"json\" => \"JSON\",\n);\n$fmtselect = make_select(\"format\", \"csv\", $ar);\n\n\n$vars = array(\n    \"max_temp_f\" => \"Maximum Air Temperature [F].\",\n    \"min_temp_f\" => \"Minimum Air Temperature [F].\",\n    \"max_dewpoint_f\" => \"Maximum Dew Point [F].\",\n    \"min_dewpoint_f\" => \"Minimum Dew Point [F].\",\n    \"precip_in\" => \"Daily Precipitation [inch].\",\n    \"avg_wind_speed_kts\" => \"Average Wind Speed [knots]\",\n    \"avg_wind_drct\" => \"Average Wind Direction [deg]\",\n    \"min_rh\" => \"Minimum Relative Humidity [%]\",\n    \"avg_rh\" => \"Average Relative Humidity [%]: computed by time averaging the available reports, it is not average of the daily max/min.\",\n    \"max_rh\" => \"Maximum Relative Humidity [%]\",\n    \"climo_high_f\" => \"NCEI 1991-2020 Daily High Temperature Climatology [F]\",\n    \"climo_low_f\" => \"NCEI 1991-2020 Daily Low Temperature Climatology [F]\",\n    \"climo_precip_in\" => \"NCEI 1991-2020 Daily Precipitation Climatology [inch]\",\n    \"snow_in\" => \"Reported Snowfall [inch]\",\n    \"snowd_in\" => \"Reported Snow Depth [inch]\",\n    \"min_feel\" => \"Minimum 'Feels Like' (either wind chill or heat index) temperature.  The value is always at least the air temperature.\",\n    \"avg_feel\" => \"Average 'Feels Like' (either wind chill or heat index) temperature.  The value is always at least the air temperature. Value is a time weighted average.\",\n    \"max_feel\" => \"Maximum 'Feels Like' (either wind chill or heat index) temperature.  The value is always at least the air temperature.\",\n    \"max_wind_speed_kts\" => \"Maximum sustained wind speed in knots.\",\n    \"max_wind_gust_kts\" => \"Maximum wind gust in knots.\",\n    \"srad_mj\" => \"Daily Solar Radiation MJ/m2 (when available).\",\n);\n$varform = \"\";\nforeach($vars as $key => $val){\n  // Bootstrap 5 form-check layout (do not alter name attr expected by backend)\n  $varform .= sprintf(\n    '<div class=\"col-12 col-sm-6 col-lg-4\" role=\"listitem\">'.\n    '<div class=\"form-check small\">'.\n    '<input class=\"form-check-input\" type=\"checkbox\" name=\"var\" value=\"%s\" id=\"var_%s\">'.\n    '<label class=\"form-check-label\" for=\"var_%s\">[%s] %s</label>'.\n    '</div></div>'.\"\\n\",\n    $key, $key, $key, $key, $val\n  );\n}\n\n\n$t->content = <<<EOM\n<header class=\"mb-4\">\n  <h1 class=\"h3 mb-3\">IEM Computed Daily Summary of Observations</h1>\n  <p>This tool lets you download daily summaries computed from collected observations for a site or all sites in a network. For COOP networks the daily values reflect the once-daily reports. When requesting all stations, limit the date span to one year.</p>\n  <p>The definition of a <strong>day</strong> usually follows the local calendar day for each station's timezone, but some stations provide standardized local-time summaries which override computed totals.</p>\n  <p><a href=\"/cgi-bin/request/daily.py?help\" class=\"btn btn-outline-info btn-sm\"><i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend documentation</a></p>\n</header>\n\n<section aria-labelledby=\"networkSelectHeading\" class=\"mb-4\">\n  <h2 id=\"networkSelectHeading\" class=\"h5\">1. Choose Network</h2>\n  <form name=\"network\" action=\"daily.phtml\" class=\"row gy-2 gx-2 align-items-end\" aria-describedby=\"networkHelp\">\n    <div class=\"col-auto\">\n      <label for=\"network\" class=\"form-label\">Network</label><br />\n      {$nselect}\n    </div>\n    <div class=\"col-auto\">\n      <button type=\"submit\" class=\"btn btn-primary btn-sm\">Switch Network</button>\n    </div>\n    <div class=\"col-12\"><p id=\"networkHelp\" class=\"form-text mb-0\">Switching networks updates available stations below.</p></div>\n  </form>\n</section>\n\n<form target=\"_blank\" name=\"iemss\" action=\"/cgi-bin/request/daily.py\" aria-labelledby=\"downloadHeading\">\n  <h2 id=\"downloadHeading\" class=\"h5 mb-3\">2. Select Stations, Dates, and Variables</h2>\n  <div class=\"form2url mb-3\"></div>\n  <input type=\"hidden\" value=\"{$network}\" name=\"network\" />\n\n  <div class=\"row g-4\">\n    <div class=\"col-md-6\">\n      <h3 class=\"h6\">Stations</h3>\n      <div id=\"iemss\" data-network=\"{$network}\" aria-live=\"polite\" aria-busy=\"false\"></div>\n    </div>\n    <div class=\"col-md-6\">\n      <fieldset class=\"mb-4\">\n        <legend class=\"h6\">Date Range (inclusive)</legend>\n        <div class=\"row g-2 align-items-end\">\n          <div class=\"col-12 col-lg-6\">\n            <div class=\"border rounded p-2 h-100\">\n              <div class=\"fw-semibold small mb-1\">Start Date</div>\n              <div class=\"row g-2\">\n                <div class=\"col-4\">{$y1}</div>\n                <div class=\"col-4\">{$m1}</div>\n                <div class=\"col-4\">{$d1}</div>\n              </div>\n            </div>\n          </div>\n          <div class=\"col-12 col-lg-6\">\n            <div class=\"border rounded p-2 h-100\">\n              <div class=\"fw-semibold small mb-1\">End Date</div>\n              <div class=\"row g-2\">\n                <div class=\"col-4\">{$y2}</div>\n                <div class=\"col-4\">{$m2}</div>\n                <div class=\"col-4\">{$d2}</div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <p class=\"form-text mt-2 mb-0\">For all stations limit span to <= 1 year for performance.</p>\n      </fieldset>\n\n      <fieldset class=\"mb-4\" aria-describedby=\"varHelp\">\n        <legend class=\"h6\">Variables</legend>\n        <p id=\"varHelp\" class=\"form-text\">Values of <code>0.0001</code> inches represent trace precipitation.</p>\n        <div class=\"row g-1\" role=\"list\">\n          {$varform}\n        </div>\n      </fieldset>\n\n      <div class=\"row g-3 mb-4\">\n        <div class=\"col-md-6\">\n          <label for=\"na\" class=\"form-label\">Missing Value Representation</label>\n          {$naselect}\n        </div>\n        <div class=\"col-md-6\">\n          <label for=\"format\" class=\"form-label\">Download Format</label>\n          {$fmtselect}\n        </div>\n      </div>\n\n      <div>\n        <button type=\"submit\" class=\"btn btn-success\">Request Data</button>\n      </div>\n    </div>\n  </div>\n</form>\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/request/dcp/fe.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/database.inc.php\";\n\n$network = isset($_GET['network']) ? xssafe($_GET[\"network\"]) : 'IA_DCP';\n\n$t = new MyView();\n$t->iemss = True;\n$t->iem_resource = \"HADS\";\ndefine(\"IEM_APPID\", 44);\n$mesosite = iemdb('mesosite');\n\n$t->title = \"DCP/HADS Data Download\";\n\n$nselect = \"<select name=\\\"network\\\">\";\n$rs = pg_query($mesosite, \"SELECT id, name from networks \" .\n    \"where id ~* '_DCP' or id ~* '_COOP' ORDER by name ASC\");\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n    $sel = '';\n    if ($network == $row[\"id\"]) {\n        $sel = \" selected='SELECTED'\";\n    }\n    $nselect .= sprintf(\n        \"<option value='%s'%s>%s</option>\\n\",\n        $row[\"id\"],\n        $sel,\n        $row[\"name\"]\n    );\n}\n$nselect .= \"</select>\";\n\n$ys1 = yearSelect(2002, date(\"Y\"), \"year1\");\n$ms1 = monthSelect(\"1\", \"month1\");\n$ds1 = daySelect(\"1\", \"day1\");\n$hs1 = gmtHourSelect(\"0\", \"hour1\");\n$ys2 = yearSelect(2002, date(\"Y\"), \"year2\");\n$ms2 = monthSelect(date(\"m\"), \"month2\");\n$ds2 = daySelect(date(\"d\"), \"day2\");\n$hs2 = gmtHourSelect(\"0\", \"hour2\");\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/DCP/\">DCP/HADS Mainpage</a></li>\n <li class=\"active\">Data Download</li>\n</ol>\n<h3>DCP/HADS Data Download</h3>\n\n<p>This form allows you to download whatever data the IEM was able to collect from\nthe GOES/DCP/HADS/AHPS (insert other acronyms here) data collection platforms.  This\ndataset is huge and the download may take a number of seconds to process.</p>\n\n<p>A <a href=\"/pickup/hads/\">static dump</a> of the database was made on 22 December 2022\nand may be useful for those of you wanting it all!</p>\n\n<p><a class=\"btn btn-secondary\" href=\"/cgi-bin/request/hads.py?help\"><i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend Documentation</a> exists for those that\nwish to script against this service.</p>\n\n<form method=\"GET\" name=\"chstate\">\n<p>Select from State/Country: {$nselect}\n<input type=\"submit\" value=\"Change Group\">\n</form>\n\n<form target=\"_blank\" method=\"GET\" action=\"/cgi-bin/request/hads.py\" name=\"iemss\">\n<div class=\"form2url\"></div>\n<input type='hidden' name='network' value=\"{$network}\" />\n\n<div class=\"row\">\n<div class=\"col-sm-7\">\n\n<h3>1. Select Station(s):</h3>\n\n<div id=\"iemss\" data-network=\"{$network}\"></div>\n\n</div>\n<div class=\"col-sm-5\">\n\n<h3>2. Select Start/End Time:</h3>\n\n<p>Times are specified in UTC. Archive starts in 2002 for Iowa and on\n9 Dec 2010 for all others. You can request up to one year of data when\nrequesting multiple stations. When requesting all stations, you can\nonly request 24 hours worth of data.</p>\n\n<table class=\"table table-sm\">\n  <tr>\n    <td></td>\n    <th>Year</th><th>Month</th><th>Day</th>\n    <th>Hour</th>\n  </tr>\n\n  <tr>\n    <th>Start:</th>\n    <td>{$ys1}</td>\n    <td>{$ms1}</td>\n    <td>{$ds1}</td>\n    <td>{$hs1}\n    <input type=\"hidden\" name=\"minute1\" value=\"0\"></td>\n    </td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>{$ys2}</td>\n    <td>{$ms2}</td>\n    <td>{$ds2}</td>\n    <td>{$hs2}\n    <input type=\"hidden\" name=\"minute2\" value=\"0\">\n    </td>\n  </tr>\n</table>\n\n<h3>3. How to download/view?</h3>\n\n<select name=\"what\">\n  <option value=\"txt\">Download as Delimited Text File</option>\n  <option value=\"excel\">Download as Excel</option>\n  <option value=\"html\">View as HTML webpage</option>\n</select>\n\n<h3>3a. Data Delimitation:</h3>\n\n<p>If you selected 'Delimited Text File' above, how do you want the values\nseparated in the downloaded file?</p>\n\n<select name=\"delim\">\n    <option value=\"comma\">Comma\n    <option value=\"space\">Space\n    <option value=\"tab\">Tab\n</select>\n\n<div class=\"card card-body\">\n<h3>5. <i>Optional:</i> Search for Threshold Exceedance</h3>\n\n<p>For stations that report a stage value (\"HG\" SHEF variable group), you\n can optionally search for when the value exceeds this threshold.  The \n print out will include:\n <ul>\n    <li>Timestamp when threshold was exceeded.</li>\n    <li>First timestamp when the value was at its peak.</li>\n    <li>Timestamp when the value crossed below the threshold.</li>\n </ul>\n <br /><strong>You can only do this search for one station at a time!</strong>\n <br />Thresold: <input type=\"text\" size=\"6\" name=\"threshold\" />\n <br />Type / Source Code:\n<select name=\"thresholdvar\">\n    <option value=\"RG\">GOES (RG)</option>\n    <option value=\"RP\">Phone ASCII (DARDC/LARC) (RP)</option>\n    <option value=\"RR\">Radio #1 (RR)</option>\n    <option value=\"RS\">Radio #2 (RS)</option>\n    <option value=\"RV\">Visual/manual #1 (RV)</option>\n    <option value=\"RZ\">Nonspecific (RZ)</option>\n    <option value=\"R2\">Secondard Sensor (R2)</option>\n    <option value=\"R3\">Tertiary Sensor (R3)</option>\n</select>\n\n</div>\n\n<h3>6. Submit Form:</h3>\n\n<input type=\"submit\" value=\"Process Data Request\">\n<input type=\"reset\">\n\n</div>\n</div>\n\n<h3>Frequently Asked Questions:</h3>\n\n<h4><span class=\"badge\">1</span> How do I make sense of the headings in the\ndownload file?</h4>\n\n<p>Great question!  This dataset is based on the IEM processing of SHEF-encoded\nproducts relayed by the NWS.  SHEF uses a series of identifiers to label various\nreported values.  These labels are explicitly stored within the database without\nany translation into more common terms.  Sadly, translating these labels into\nmore usable terms is an operation left to the end-user.</p>\n\n<p>The magic decoder ring is the <a href=\"https://www.weather.gov/media/mdl/SHEF_CodeManual_5July2012.pdf\">SHEF Manual</a>,\n which is 150 pages long!  Fear not, in general, you can scroll down to page 65\nand review Tables 1 and on.  The variable labels used in the downloaded file\nshould be broken apart and used as lookups in the table.  For example, \n<code>HGIRRZ</code> should be broken up as follows.</p>\n\n<table>\n<tr><th>HG</th><th>Table 1</th><th>HG Height, river stage (FT, M)</th></tr>\n<tr><th>I</th><th>Table 3</th><th>I Instantaneous (0000)</th></tr>\n<tr><th>RR</th><th>Table 4</th><th>RR Radio #1</th></tr>\n<tr><th>Z</th><th>Table 5</th><th>Z Null character (filler) or UTC Time</th></tr>\n</table>\n\n<p>Some codes may be longer than 6 characters, so good luck reading the manual!  In general,\nyou can see why it is hard to provide this data with any simplier headings.  As always,\nfeel free to contact us with questions. In general, the first three characters are the\nmost important, which are the variable type and duration of observation.</p>\n\n</form>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/download.css",
    "content": "#map {\n    width: 100%;\n    height: 450px;\n    border: 2px solid black;\n}"
  },
  {
    "path": "htdocs/request/download.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 8);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/iemprop.php\";\n\n$asos_archive_end = get_iemprop(\"asos2archive_last\");\n$t = new MyView();\n$t->iem_resource = \"ASOS\";\n$t->iemss = True;\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"download.css\">\nEOM;\n\n$network = isset($_GET['network']) ? xssafe($_GET['network']): \"IA_ASOS\";\n$station = \"\";\n$t->title = \"Download ASOS/AWOS/METAR Data\";\n\n$netselect = selectNetworkType(\"ASOS\", $network);\n\n$y1select = yearSelect(1900, date(\"Y\"), \"year1\");\n$y2select = yearSelect(1900, date(\"Y\"), \"year2\");\n\n$m1select = monthSelect(1, \"month1\");\n$m2select = monthSelect(date(\"m\"), \"month2\");\n\n$d1select = daySelect(1, \"day1\");\n$d2select = daySelect(date(\"d\"), \"day2\");\n\n$ar = Array(\n    \"Etc/UTC\" => \"Coordinated Universal Time (UTC)\",\n    \"America/New_York\" => \"America/New_York (EST/EDT)\",\n    \"America/Chicago\" => \"America/Chicago (CST/CDT)\",\n    \"America/Denver\" => \"America/Denver (MST/MDT)\",\n    \"America/Los_Angeles\" => \"America/Los_Angeles (PST/PDT)\",\n    \"America/Anchorage\" => \"America/Anchorage (AKST/AKDT)\",\n);\n\n$tzselect = make_select(\"tz\", \"Etc/UTC\", $ar);\n\n$t->content = <<<EOM\n\n\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/ASOS\">ASOS Network</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">ASOS-AWOS-METAR Data Download</li>\n  </ol>\n</nav>\n\n<div class=\"row\">\n<div class=\"col-lg-8 col-md-7\">\n\n<p>The IEM maintains an ever growing archive of automated airport weather\nobservations from around the world!  These observations are typically called\n'ASOS' or sometimes 'AWOS' sensors.  A more generic term may be METAR data,\nwhich is a term that describes the format the data is transmitted as. If you\ndon't get data for a request, please feel free to\n<a href=\"/info/contacts.php\">contact us</a> for help. The IEM also has a one\nminute interval dataset for <a href=\"asos/1min.phtml\">US ASOS</a> (2000-)\nand <a href=\"awos/1min.php\">Iowa AWOS</a> (1995-2011) sites.  This archive\nsimply provides the as-is collection of historical observations, very little\nquality control is done.  More details on this dataset are\n<a href=\"/info/datasets/metar.html\">here</a>.</p>\n\n<p><strong>Data Sources:</strong> The data made available on this page is sourced\nfrom a number of places including: <a href=\"https://www.unidata.ucar.edu/projects/#idd\">Unidata IDD</a>,\n<a href=\"https://www.ncdc.noaa.gov/isd\">NCEI ISD</a>, and\n<a href=\"https://madis.ncep.noaa.gov/madis_OMO.shtml\">MADIS One Minute ASOS</a>.</p>\n\n</div>\n<div class=\"col-lg-4 col-md-5\">\n\n<p><strong>Tools/Libaries</strong></p>\n\n<p><strong>Python Script Examples</strong>\n<br /><a href=\"https://github.com/akrherz/iem/blob/main/scripts/asos/iem_scraper_example.py\">fetch by network</a>\n<br /><a href=\"https://github.com/akrherz/iem/blob/main/scripts/asos/iem_scraper_example2.py\">selectively fetch</a>\n</p>\n\n<p><strong>R Script Examples</strong>\n<br />A community user has contributed <a href=\"https://github.com/realmiketalbot/R-scripts/blob/master/iem_scraper_example.\nr\">R language</a> version of the python script.\nThere is also a <a href=\"https://docs.ropensci.org/riem/\">riem R package</a>\n allowing for easy access to this archive.</p>\n\n</div>\n</div>\n\n<p>This archive contains processed observations up until\n<code>{$asos_archive_end}</code>. Data\nis synced from the real-time ingest every 10 minutes.</p>\n\n<p>\n<a href=\"/cgi-bin/request/asos.py?help\" class=\"btn btn-primary\"><i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend documentation</a> exists for those that\nwish to script against this service.\n</p>\n\n<form name=\"netselect\" class=\"mb-3\">\n  <label for=\"network-select\" class=\"form-label\"><strong>Select Network</strong></label>\n  {$netselect}\n  <button type=\"submit\" class=\"btn btn-outline-primary btn-sm ms-2\">Switch to Network</button>\n</form>\n\n<form target=\"_blank\" method=\"GET\" action=\"/cgi-bin/request/asos.py\" name=\"iemss\">\n  <input type=\"hidden\" name=\"network\" value=\"{$network}\">\n  <div class=\"form2url\"></div>\n  <div class=\"row\">\n    <div class=\"col-lg-7 col-md-6\">\n\n<h4>1) Select Station/Network by clicking on location: </h4>\n\n<p>If you select no stations, you can download up to a\n<strong>24 hour period</strong> of all\ndata available from this archive!  If you select stations, the aggregate\nrequest limit is <strong>1,000 station years</strong> worth of data.</p>\n\n\n<div id=\"iemss\" data-network=\"{$network}\" data-name=\"station\" data-supports-all=\"0\"></div>\n\n</div>\n<div class=\"col-lg-5 col-md-6\">\n\n<h4>2) Select From Available Data:</h4>\n\n<p><strong>Note:</strong> Precipitation data is unavailable for non-US sites.\nThe Heat Index/Wind Chill value retroactively use current NWS equations.</p>\n\n<select name=\"data\" size=\"10\" multiple class=\"form-select\">\n    <option value=\"all\" SELECTED>All Available</option>\n    <option value=\"tmpf\">Air Temperature [F]</option>\n    <option value=\"tmpc\">Air Temperature [C]</option>\n    <option value=\"dwpf\">Dew Point [F]</option>\n    <option value=\"dwpc\">Dew Point [C]</option>\n    <option value=\"relh\">Relative Humidity [%]</option>\n    <option value=\"feel\">Heat Index/Wind Chill [F]</option>\n    <option value=\"drct\">Wind Direction </option>\n    <option value=\"sknt\">Wind Speed [knots]</option>\n    <option value=\"sped\">Wind Speed [mph]</option>\n    <option value=\"alti\">Altimeter [inches]</option>\n    <option value=\"mslp\">Sea Level Pressure [mb]</option>\n    <option value=\"p01m\">1 hour Precipitation [mm]</option>\n    <option value=\"p01i\">1 hour Precipitation [inch]</option>\n    <option value=\"vsby\">Visibility [miles]</option>\n    <option value=\"gust\">Wind Gust [knots]</option>\n    <option value=\"gust_mph\">Wind Gust [mph]</option>\n    <option value=\"skyc1\">Cloud Coverage Level 1</option>\n    <option value=\"skyc2\">Cloud Coverage Level 2</option>\n    <option value=\"skyc3\">Cloud Coverage Level 3</option>\n    <option value=\"skyl1\">Cloud Height Level 1 [ft]</option>\n    <option value=\"skyl2\">Cloud Height Level 2 [ft]</option>\n    <option value=\"skyl3\">Cloud Height Level 3 [ft]</option>\n    <option value=\"wxcodes\">Present Weather Code(s)</option>\n    <option value=\"ice_accretion_1hr\">Ice Accretion 1 Hour</option>\n    <option value=\"ice_accretion_3hr\">Ice Accretion 3 Hour</option>\n    <option value=\"ice_accretion_6hr\">Ice Accretion 6 Hour</option>\n    <option value=\"peak_wind_gust\">Peak Wind Gust [knots]</option>\n    <option value=\"peak_wind_gust_mph\">Peak Wind Gust [MPH]</option>\n    <option value=\"peak_wind_drct\">Peak Wind Direction [deg]</option>\n    <option value=\"peak_wind_time\">Peak Wind Time</option>\n    <option value=\"snowdepth\">Snow Depth (4-group) [inch]</option>\n    <option value=\"metar\">Raw METAR</option>\n</select>\n\n\n<br><br>\n<h4>3) Select Date Range:</h4>\n<p><strong>Note:</strong> These dates define timestamps starting at\nmidnight of the selected timezone.  The start date is inclusive and the\nend date is exclusive.</p>\n\n<table class=\"table table-bordered table-sm align-middle\">\n<tr><th>Start Date:</th><td>{$y1select} {$m1select} {$d1select}</td></tr>\n<tr><th>End Date:</th><td>{$y2select} {$m2select} {$d2select}</td></tr>\n</table>\n\n<h4>4) Timezone of Observation Times:</h4>\n<p><i>The following options are available for how the observation time is\n    presented.</i></p>\n{$tzselect}\n\n<h4>5) Download Options:</h4>\n\n<p><strong>Data Format:</strong>\n<select name=\"format\" class=\"form-select form-select-sm w-auto d-inline-block ms-2\">\n<option value=\"onlycomma\">Comma Delimited</option>\n<option value=\"onlytdf\">Tab Delimited</option>\n<option value=\"comma\">Comma Delimited (With DEBUG headers)</option>\n<option value=\"tdf\">Tab Delimited (With DEBUG headers)</option>\n</select></p>\n\n<p><strong>Include Latitude + Longitude?</strong>\n<select name=\"latlon\" class=\"form-select form-select-sm w-auto d-inline-block ms-2\">\n  <option value=\"no\">No\n  <option value=\"yes\">Yes\n</select></p>\n\n<p><strong>Include Elevation (meters)?</strong>\n<select name=\"elev\" class=\"form-select form-select-sm w-auto d-inline-block ms-2\">\n  <option value=\"no\">No</option>\n  <option value=\"yes\">Yes</option>\n</select></p>\n\n<p><strong>How to represent missing data?</strong>\n<select name=\"missing\" class=\"form-select form-select-sm w-auto d-inline-block ms-2\">\n  <option value=\"M\">Use 'M'</option>\n  <option value=\"null\">Use 'null'</option>\n  <option value=\"empty\">Use blank/empty string</option>\n</select></p>\n\n<p><strong>How to represent Trace reports?</strong>\n<select name=\"trace\" class=\"form-select form-select-sm w-auto d-inline-block ms-2\">\n  <option value=\"T\">Use 'T'</option>\n  <option value=\"null\">Use 'null'</option>\n  <option value=\"empty\">Use blank/empty string</option>\n  <option value=\"0.0001\">Use float 0.0001</option>\n</select></p>\n\n<p>\n<select name=\"direct\" class=\"form-select form-select-sm w-auto d-inline-block ms-2\">\n  <option value=\"no\">View result data in web browser</option>\n  <option value=\"yes\">Save result data to file on computer</option>\n</select></p>\n\n<h4>6) Limit Report Types</h4>\n\n<p>See <a href=\"/onsite/news.phtml?id=1434\">news item</a> on recent changes\nmade for report types.  When in doubt, pick both routine and specials.</p>\n\n<div class=\"form-check\">\n  <input class=\"form-check-input\" type=\"checkbox\" name=\"report_type\" value=\"1\" id=\"rt1\">\n  <label class=\"form-check-label\" for=\"rt1\">MADIS HFMETAR / 5 Minute ASOS</label>\n</div>\n<div class=\"form-check\">\n  <input class=\"form-check-input\" type=\"checkbox\" name=\"report_type\" value=\"3\" id=\"rt3\" checked>\n  <label class=\"form-check-label\" for=\"rt3\">Routine / Once Hourly</label>\n</div>\n<div class=\"form-check\">\n  <input class=\"form-check-input\" type=\"checkbox\" name=\"report_type\" value=\"4\" id=\"rt4\" checked>\n  <label class=\"form-check-label\" for=\"rt4\">Specials</label>\n</div>\n\n<h4>7) Finally, get Data:</h4>\n\n  <button type=\"submit\" class=\"btn btn-success\">Get Data</button>\n  <button type=\"reset\" class=\"btn btn-secondary ms-2\">Reset</button>\n\n         </div>\n         </div>\n\n</form>\n\n<p><strong>Download Variable Description</strong>\n    <br /><a href=\"https://www.weather.gov/media/asos/aum-toc.pdf\">ASOS User's Guide</a>\n        has detailed information about these data variables. The value \"M\" represents\n        either value that was reported as missing or a value that was set to missing\n        after meeting some general quality control check, or a value that was never\n        reported by the sensor.  The METAR format makes it difficult to determine\n        which of the three cases may have happened.</p>\n\n<dl class=\"dl-horizontal\">\n<dt>station:</dt>\n<dd>three or four character site identifier</dd>\n<dt>valid:</dt>\n<dd>timestamp of the observation</dd>\n<dt>tmpf:</dt>\n<dd>Air Temperature in Fahrenheit, typically @ 2 meters</dd>\n<dt>dwpf:</dt>\n<dd>Dew Point Temperature in Fahrenheit, typically @ 2 meters</dd>\n<dt>relh:</dt>\n<dd>Relative Humidity in %</dd>\n<dt>drct:</dt>\n<dd>Wind Direction in degrees from *true* north</dd>\n<dt>sknt:</dt>\n<dd>Wind Speed in knots\t</dd>\n<dt>p01i:</dt>\n<dd>One hour precipitation for the period from the observation time\nto the time of the previous hourly precipitation reset.  This varies slightly\nby site. Values are in inches. This value may or may not contain frozen\n        precipitation melted by some device on the sensor or estimated\n        by some other means.  Unfortunately, we do not know of an\n        authoritative database denoting which station has which sensor.</dd>\n<dt>alti:</dt>\n<dd>Pressure altimeter in inches</dd>\n<dt>mslp:</dt>\n<dd>Sea Level Pressure in millibar</dd>\n<dt>vsby:</dt>\n<dd>Visibility in miles</dd>\n<dt>gust:</dt>\n<dd>Wind Gust in knots</dd>\n<dt>skyc1:</dt>\n<dd>Sky Level 1 Coverage</dd>\n<dt>skyc2:</dt>\n<dd>Sky Level 2 Coverage</dd>\n<dt>skyc3:</dt>\n<dd>Sky Level 3 Coverage</dd>\n<dt>skyc4:</dt>\n<dd>Sky Level 4 Coverage</dd>\n<dt>skyl1:</dt>\n<dd>Sky Level 1 Altitude in feet</dd>\n<dt>skyl2:</dt>\n<dd>Sky Level 2 Altitude in feet</dd>\n<dt>skyl3:</dt>\n<dd>Sky Level 3 Altitude in feet</dd>\n<dt>skyl4:</dt>\n<dd>Sky Level 4 Altitude in feet</dd>\n<dt>wxcodes:</dt>\n<dd>Present Weather Codes (space seperated)</dd>\n<dt>feel:</dt>\n<dd>Apparent Temperature (Wind Chill or Heat Index) in Fahrenheit</dd>\n<dt>ice_accretion_1hr:</dt>\n<dd>Ice Accretion over 1 Hour (inches)</dd>\n<dt>ice_accretion_3hr:</dt>\n<dd>Ice Accretion over 3 Hours (inches)</dd>\n<dt>ice_accretion_6hr:</dt>\n<dd>Ice Accretion over 6 Hours (inches)</dd>\n<dt>peak_wind_gust:</dt>\n<dd>Peak Wind Gust (from PK WND METAR remark) (knots)</dd>\n<dt>peak_wind_drct:</dt>\n<dd>Peak Wind Gust Direction (from PK WND METAR remark) (deg)</dd>\n<dt>peak_wind_time:</dt>\n<dd>Peak Wind Gust Time (from PK WND METAR remark)</dd>\n<dt>metar:</dt>\n<dd>unprocessed reported observation in METAR format</dd>\n</dl>\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/request/gis/awc_gairmets.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 132);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n$t->title = \"Download Aviation Weather Center G-AIRMETs Shapefile/KML\";\n$content = <<<EOM\n<p>\n<ul class=\"breadcrumb\">\n<li><a href=\"/nws/\">NWS Mainpage</a></li>\n<li class=\"active\">AWC G-AIRMETs Download</li>\n</ul>\n</p>\n\n<p>The IEM has a database archive of\n<a href=\"https://www.aviationweather.gov/gairmet/\">AWC G-AIRMETs</a>\nsince their inception on about 3 March 2021.  The IEM also maintains an\narchive of the raw XML text, which you can find listed on the main\n<a href=\"/wx/afos/list.phtml?source=KKCI\">AFOS List Page for KKCI</a>. These\nproducts are assigned a product identifier of <code>GMT</code> on that page.\n</p>\n\n<p><strong>Related:</strong>\n<a class=\"btn btn-primary\" href=\"cwas.phtml\">CWSU Center Weather Advisories</a>\n<a class=\"btn btn-primary\" href=\"pireps.php\">PIREPs</a>\n<a class=\"btn btn-primary\" href=\"awc_sigmets.phtml\">SIGMETs</a>\n<a class=\"btn btn-primary\" href=\"/request/taf.php\">TAFs</a>\n<a class=\"btn btn-primary\" href=\"/request/tempwind_aloft.php\">Temp/Winds Aloft</a>\n</p>\n\n<p><a href=\"/cgi-bin/request/gis/awc_gairmets.py?help\" class=\"btn btn-secondary\">\n<i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend documentation</a> exists for those wishing to script against this\nservice.</p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/gis/awc_gairmets.py\">\n<table class=\"table\">\n<thead><tr><th colspan=\"6\">Time Interval for G-AIRMET\n<strong>Issue Time (<code>G-AIRMETISSUETIME</code>)</strong> (UTC)</th></tr></thead>\n<tr>\n    <td></td><th>Year</th><th>Month</th><th>Day</th>\n    <th>Hour</th><th>Minute</th>\n</tr>\n\n<tr>\nEOM;\n$content .= \"<th>Start:</th>\n    <td>\n     \" . yearSelect(2021, date(\"Y\"), \"year1\") . \"\n    </td>\n    <td>\n     \" . monthSelect(0, \"month1\") . \"\n    </td>\n    <td>\n     \" . daySelect(0, \"day1\") . \"\n    </td>\n    <td>\n     \" . gmtHourSelect(0, \"hour1\") . \"\n    </td>\n    <td>\n     \" . minuteSelect(0, \"minute1\") . \"\n    </td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>\n     \" . yearSelect(2021, date(\"Y\"), \"year2\") . \"\n    </td>\n    <td>\n     \" . monthSelect(date(\"m\"), \"month2\") . \"\n    </td>\n    <td>\n     \" . daySelect(date(\"d\"), \"day2\") . \"\n    </td>\n    <td>\n     \" . gmtHourSelect(0, \"hour2\") . \"\n    </td>\n    <td>\n     \" . minuteSelect(0, \"minute2\") . \"\n    </td>\n  </tr>\n</table>\";\n\n$content .= <<<EOM\n\n<p><strong>Format:</strong><br />\n<input type=\"radio\" name=\"format\" value=\"shp\" checked=\"checked\" id=\"shp\" />\n<label for=\"shp\">Shapefile</label>\n<input type=\"radio\" name=\"format\" value=\"kml\" id=\"kml\" />\n<label for=\"kml\">KML</label>\n\n<p><input type=\"submit\" value=\"Giveme data right now!\"></p>\n</form>\n\n<h4>Shapefile DBF schema:</h4>\n<pre>\nField 0: Type=C/String, Title=`NAME', GML_ID + VALID_AT timestamp\nField 1: Type=C/String, Title=`LABEL', Event label from GML_ID\nField 2: Type=C/String, Title=`GML_ID', Verbatim GML_ID from product\nField 3: Type=C/String, Title=`VALID_AT', UTC Valid At time (gml:timePosition)\nField 4: Type=C/String, Title=`VALID_FM', UTC From Time (G-AIRMETVALIDFROM)\nField 5: Type=C/String, Title=`VALID_TO', UTC To Time (G-AIRMETVALIDTO)\nField 6: Type=C/String, Title=`ISSUTIME', UTC Issue Time (G-AIRMETISSUETIME)\nField 7: Type=C/String, Title=`PROD_ID', IEM Text Product ID\nField 8: Type=C/String, Title=`STATUS', Status of AIRMET\nField 9: Type=C/String, Title=`HZTYPE', Hazard Type\nField 10: Type=C/String, Title=`WXCOND', Comma list of weather conditions\n</pre>\n\n<h4>Archive / Usage Notes:</h4>\n<ol>\n</ol>\n</form>\nEOM;\n\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/gis/awc_sigmets.phtml",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 134);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n$t = new MyView();\n$t->title = \"Download Aviation Weather Center SIGMETs Shapefile/KML\";\n$content = <<<EOM\n<p>\n<ul class=\"breadcrumb\">\n<li><a href=\"/nws/\">NWS Mainpage</a></li>\n<li class=\"active\">AWC SIGMETs Download</li>\n</ul>\n</p>\n\n<p><strong>Related:</strong>\n<a class=\"btn btn-primary\" href=\"cwas.phtml\">CWSU Center Weather Advisories</a>\n<a class=\"btn btn-primary\" href=\"awc_gairmets.phtml\">Graphical-AIRMETs</a>\n<a class=\"btn btn-primary\" href=\"pireps.php\">PIREPs</a>\n<a class=\"btn btn-primary\" href=\"/request/taf.php\">TAFs</a>\n<a class=\"btn btn-primary\" href=\"/request/tempwind_aloft.php\">Temp/Winds Aloft</a>\n</p>\n\n<p><a href=\"/cgi-bin/request/gis/sigmets.py?help\"><i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend documentation</a>\nfor those wishing to script against this download portal.</p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/gis/sigmets.py\">\n<table class=\"table\">\n<thead><tr><th colspan=\"6\">Time Interval for SIGMET Issuance TIme (UTC)</th></tr></thead>\n<tr>\n    <td></td><th>Year</th><th>Month</th><th>Day</th>\n    <th>Hour</th><th>Minute</th>\n</tr>\n\n<tr>\nEOM;\n$content .= \"<th>Start:</th>\n    <td>\n     \". yearSelect(2005, date(\"Y\"), \"year1\") .\"\n    </td>\n    <td>\n     \". monthSelect(0,\"month1\") .\"\n    </td>\n    <td>\n     \". daySelect(0, \"day1\") .\"\n    </td>\n    <td>\n     \". gmtHourSelect(0, \"hour1\") .\"\n    </td>\n    <td>\n     \". minuteSelect(0, \"minute1\") .\"\n    </td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>\n     \". yearSelect(2005, date(\"Y\"), \"year2\") .\"\n    </td>\n    <td>\n     \". monthSelect(date(\"m\"), \"month2\") .\"\n    </td>\n    <td>\n     \". daySelect(date(\"d\"), \"day2\") .\"\n    </td>\n    <td>\n     \". gmtHourSelect(0, \"hour2\") .\"\n    </td>\n    <td>\n     \". minuteSelect(0, \"minute2\") .\"\n    </td>\n  </tr>\n</table>\";\n\n$content .= <<<EOM\n\n<p><strong>Format:</strong><br />\n<input type=\"radio\" name=\"format\" value=\"shp\" checked=\"checked\" id=\"shp\" />\n<label for=\"shp\">Shapefile</label>\n<input type=\"radio\" name=\"format\" value=\"kml\" id=\"kml\" />\n<label for=\"kml\">KML</label>\n<input type=\"radio\" name=\"format\" value=\"csv\" id=\"csv\" />\n<label for=\"csv\">CSV</label>\n<input type=\"radio\" name=\"format\" value=\"excel\" id=\"excel\" />\n<label for=\"excel\">Excel</label>\n\n<p><input type=\"submit\" value=\"Giveme data right now!\"></p>\n</form>\n\n<h4>Shapefile DBF schema:</h4>\n<pre>\nField 0: Type=C/String, Title='NAME' Combination of label and type fields\nField 1: Type=C/String, Title='LABEL' SIGMET label\nField 2: Type=C/String, Title='TYPE', One Character SIGMET type, always `C` at\n         this time.\nField 3: Type=C/String, Title='ISSUE', Issuance UTC Time\nField 4: Type=C/String, Title='EXPIRE', Expiration UTC Time\nField 5: Type=C/String, Title='PROD_ID', IEM NWS Text Product Identifier, which\n\t can be used against the /api/1/nwstext/&lt;PROD_ID&gt; service.\nField 6: Type=C/String, Title='TEXT', The SIGMET raw text\n</pre>\n\n<h4>Archive / Usage Notes:</h4>\n<ol>\n  <li><strong>14 May 2025</strong>: A number of location processing fixes were implemented\n  with archive corrections made. Tthe archive was backfilled to the start of 2005 as well.</li>\n</ol>\n</form>\nEOM;\n\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/gis/cwas.phtml",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 133);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n$t->title = \"Download CWSU Center Weather Advisory (CWA) Shapefile/KML\";\n$content = <<<EOM\n<p>\n<ul class=\"breadcrumb\">\n<li><a href=\"/nws/\">NWS Mainpage</a></li>\n<li class=\"active\">CWSU CWA Download</li>\n</ul>\n</p>\n\n<p>The IEM has a database archive of\n<a href=\"https://www.aviationweather.gov/cwamis\">CWSU Center Weather Advisories</a>.\nThe archive presently dates back to 1 January 2014 and is updated in real-time as\nnew products are received and processed.  Robust processing of the CWA has been\nproblematic as the raw products are more free-form text than adhering to a format\nspecification.  Presently, attempts are not made at processing cancellation statements. \n</p>\n\n<p><strong>Related:</strong>\n<a class=\"btn btn-primary\" href=\"awc_gairmets.phtml\">AWC Graphical-AIRMETs</a>\n<a class=\"btn btn-primary\" href=\"pireps.php\">PIREPs</a>\n<a class=\"btn btn-primary\" href=\"awc_sigmets.phtml\">SIGMETs</a>\n<a class=\"btn btn-primary\" href=\"/request/taf.php\">TAFs</a>\n<a class=\"btn btn-primary\" href=\"/request/tempwind_aloft.php\">Temp/Winds Aloft</a>\n</p>\n\n<div class=\"alert alert-warning\">\n<p>The data presented here is beta quality and refinements are being made yet\nto improve text parsing robustness.  This message will be removed once more\nquality control checks are done to ensure fidelity.</p>\n</div>\n\n<p><a href=\"/cgi-bin/request/gis/cwas.py?help\" class=\"btn btn-secondary\">\n<i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend documentation</a> exists for those\nwishing to script against this service.</p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/gis/cwas.py\">\n<table class=\"table\">\n<thead><tr><th colspan=\"6\">Time Interval for CWA Issuance (UTC)</th></tr></thead>\n<tr>\n    <td></td><th>Year</th><th>Month</th><th>Day</th>\n    <th>Hour</th><th>Minute</th>\n</tr>\n\n<tr>\nEOM;\n$content .= \"<th>Start:</th>\n    <td>\n     \". yearSelect(2014, date(\"Y\"), \"year1\") .\"\n    </td>\n    <td>\n     \". monthSelect(0,\"month1\") .\"\n    </td>\n    <td>\n     \". daySelect(0, \"day1\") .\"\n    </td>\n    <td>\n     \". gmtHourSelect(0, \"hour1\") .\"\n    </td>\n    <td>\n     \". minuteSelect(0, \"minute1\") .\"\n    </td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>\n     \". yearSelect(2014, date(\"Y\"), \"year2\") .\"\n    </td>\n    <td>\n     \". monthSelect(date(\"m\"), \"month2\") .\"\n    </td>\n    <td>\n     \". daySelect(date(\"d\"), \"day2\") .\"\n    </td>\n    <td>\n     \". gmtHourSelect(0, \"hour2\") .\"\n    </td>\n    <td>\n     \". minuteSelect(0, \"minute2\") .\"\n    </td>\n  </tr>\n</table>\";\n\n$content .= <<<EOM\n\n<p><strong>Format:</strong><br />\n<input type=\"radio\" name=\"format\" value=\"shp\" checked=\"checked\" id=\"shp\" />\n<label for=\"shp\">Shapefile</label>\n<input type=\"radio\" name=\"format\" value=\"kml\" id=\"kml\" />\n<label for=\"kml\">KML</label>\n\n<p><input type=\"submit\" value=\"Giveme data right now!\"></p>\n</form>\n\n<h4>Shapefile DBF schema:</h4>\n<pre>\nField 0: Type=C/String, Title='CENTER', CWSU Center ID\nField 1: Type=C/String, Title='ISSUE', UTC CWA Issuance Time\nField 2: Type=C/String, Title='EXPIRE', UTC CWA Expiration Time\nField 3: Type=C/String, Title='PROD_ID', IEM Text Product Identifier\nField 4: Type=C/String, Title='NARRATIV', Text Narrative found in raw text\nField 5: Type=N/Double, Title='NUMBER', CWA Number\n</pre>\n\n<h4>Archive / Usage Notes:</h4>\n<ol>\n</ol>\n</form>\nEOM;\n\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/gis/lsrs.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 17);\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/network.php\";\n$nt = new NetworkTable(\"WFO\");\n\n$t = new MyView();\n$t->iemss = true;\n$t->iem_resource = \"LSR\";\n$t->title = \"Archived Local Storm Reports\";\n\n$ys = yearSelect(2003, date(\"Y\"), \"year1\");\n$ms = monthSelect(0, \"month1\");\n$ds = daySelect(0, \"day1\");\n$hs = gmtHourSelect(0, \"hour1\");\n$ns = minuteSelect(0, \"minute1\");\n$ys2 = yearSelect(2003, date(\"Y\"), \"year2\");\n$ms2 = monthSelect(date(\"m\"), \"month2\");\n$ds2 = daySelect(date(\"d\"), \"day2\");\n$hs2 = gmtHourSelect(23, \"hour2\");\n$ns2 = minuteSelect(59, \"minute2\");\n$stateselect = stateSelect(\"_ALL\", '', \"state\", 5, true, true);\n$stateselect = str_replace('<select', '<select class=\"form-select\" id=\"state\"', $stateselect);\n$ss = \"\";\nforeach ($nt->table as $key => $value) {\n    $ss .= \"<option value='$key'>[$key] \" . $value[\"name\"] . \"</option>\\n\";\n}\n$types = Array(\n    \"ALL\" => \"All Types / No Limit\",\n    \"AVALANCHE\" => \"Avalanche\",\n    \"BLIZZARD\" => \"Blizzard\",\n    \"BLOWING DUST\" => \"Blowing Dust\",\n    \"COASTAL FLOOD\" => \"Coastal Flood\",\n    \"DEBRIS FLOW\" => \"Debris Flow\",\n    \"DENSE FOG\" => \"Dense Fog\",\n    \"DOWNBURST\" => \"Downburst\",\n    \"DUST STORM\" => \"Dust Storm\",\n    \"EXCESSIVE HEAT\" => \"Excessive Heat\",\n    \"EXTREME COLD\" => \"Extreme Cold\",\n    \"EXTREME HEAT\" => \"Extreme Heat\",\n    \"EXTR WIND CHILL\" => \"Extreme Wind Chill\",\n    \"FLASH FLOOD\" => \"Flash Flood\",\n    \"FLOOD\" => \"Flood\",\n    \"FOG\" => \"Fog\",\n    \"FREEZE\" => \"Freeze\",\n    \"FREEZING RAIN\" => \"Freezing Rain\",\n    \"FUNNEL CLOUD\" => \"Funnel Cloud\",\n    \"HAIL\" => \"Hail\",\n    \"HEAVY RAIN\" => \"Heavy Rain\",\n    \"HEAVY SLEET\" => \"Heavy Sleet\",\n    \"HEAVY SNOW\" => \"Heavy Snow\",\n    \"HIGH ASTR TIDES\" => \"High Astronomical Tides\",\n    \"HIGH SURF\" => \"High Surf\",\n    \"HIGH SUST WINDS\" => \"High Sustained Winds\",\n    \"ICE JAM\" => \"Ice Jam\",\n    \"ICE STORM\" => \"Ice Storm\",\n    \"LANDSLIDE\" => \"Landslide\",\n    \"LANDSPOUT\" => \"Landspout\",\n    \"LIGHTNING\" => \"Lightning\",\n    \"LOW ASTR TIDES\" => \"Low Astronomical Tides\",\n    \"MARINE TSTM WIND\" => \"Marine Thunderstorm Wind\",\n    \"MISC MRN/SRF HZD\" => \"Misc Marine/Surf Hazard\",\n    \"NON-TSTM WND DMG\" => \"Non-Thunderstorm Wind Damage\",\n    \"NON-TSTM WND GST\" => \"Non-Thunderstorm Wind Gust\",\n    \"RAIN\" => \"Rain\",\n    \"RIP CURRENTS\" => \"Rip Currents\",\n    \"SEICHE\" => \"Seiche\",\n    \"SLEET\" => \"Sleet\",\n    \"SNOW\" => \"Snow\",\n    \"SNOW/ICE DMG\" => \"Snow/Ice Damage\",\n    \"SNOW SQUALL\" => \"Snow Squall\",\n    \"STORM SURGE\" => \"Storm Surge\",\n    \"TORNADO\" => \"Tornado\",\n    \"TROPICAL CYCLONE\" => \"Tropical Cyclone\",\n    \"TROPICAL STORM\" => \"Tropical Storm\",\n    \"TSTM WND DMG\" => \"Thunderstorm Wind Damage\",\n    \"TSTM WND GST\" => \"Thunderstorm Wind Gust\",\n    \"WATER SPOUT\" => \"Waterspout\",\n    \"WATERSPOUT\" => \"Waterspout\",\n    \"WILDFIRE\" => \"Wildfire\",\n    \"WIND CHILL\" => \"Wind Chill\",\n);\n$typeselect = make_select(\"type\", \"ALL\", $types, \"\", \"\", TRUE, TRUE, FALSE);\n$typeselect = str_replace('<select', '<select class=\"form-select\" id=\"type\"', $typeselect);\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n<li class=\"breadcrumb-item\"><a href=\"/GIS/\">GIS Mainpage</a></li>\n<li class=\"breadcrumb-item active\" aria-current=\"page\">Archived Local Storm Reports Shapefiles</li>\n</ol>\n</nav>\n\n<p>This page allows you to generate a GIS shapefile of NWS issued Local Storm\nReports for a time period of your choice.  Please be sure to read the\narchive status and dbf schema below. The IEM's archive is certainly not complete or official.\n\n<p>If you are looking for a real-time source of lsrs, you can find with the following\nfiles generated every 5 minutes:  <a href=\"/data/gis/shape/4326/us/lsr_24hour.zip\">ESRI Shapefile</a>,\n<a href=\"/data/gis/shape/4326/us/lsr_24hour.csv\">Comma Delimited</a>,\n<a href=\"/data/gis/shape/4326/us/lsr_24hour.geojson\">GeoJSON</a>.</p>\n\n\n<p><strong>Looking to automate the downloading of LSRs?</strong>\n<br />You can use the following URI form to get the most recent number of seconds\nworth of LSRs.  Note that these times are based on the valid time of the LSR and\nnot the issuance of the text product itself that contained the LSR.\n<br /><code>{$EXTERNAL_BASEURL}/cgi-bin/request/gis/lsr.py?wfo=ALL&amp;recent=86400&amp;fmt=csv</code>\n<br /><code>{$EXTERNAL_BASEURL}/cgi-bin/request/gis/lsr.py?wfo=DMX,DVN&amp;recent=86400&amp;fmt=csv</code>\n<br /><code>{$EXTERNAL_BASEURL}/cgi-bin/request/gis/lsr.py?state=IA&amp;recent=86400&amp;fmt=csv</code>\n<br />Omit the <code>fmt=csv</code> portion to return the zipped shapefile.</p>\n\n<p>Example to fetch a month's worth of data\n<br /><code>{$EXTERNAL_BASEURL}/cgi-bin/request/gis/lsr.py?wfo=JAN&amp;sts=2020-08-01T00:00Z&amp;ets=2020-09-01T00:00Z&amp;fmt=csv</code>\n</p>\n\n<p><a class=\"btn btn-secondary\" href=\"/cgi-bin/request/gis/lsr.py?help\"><i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend documentation</a> exists\nfor those wishing to script against this service.</p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/gis/lsr.py\">\n<div class=\"form2url\"></div>\n<h4>Filter Options</h4>\n<div class=\"row\">\n  <div class=\"col-md-3\">\n    <div class=\"mb-3\">\n      <label for=\"wfo\" class=\"form-label\">Limit Weather Forecast Office (WFO)</label>\n      <select name=\"wfo\" id=\"wfo\" class=\"form-select\" multiple size=\"5\">\n        <option value=\"ALL\" selected>All Available</option>\n        {$ss}\n      </select>\n    </div>\n  </div>\n  <div class=\"col-md-3\">\n    <div class=\"mb-3\">\n      <label for=\"state\" class=\"form-label\">Limit by State</label>\n      {$stateselect}\n    </div>\n  </div>\n  <div class=\"col-md-3\">\n    <div class=\"mb-3\">\n      <label for=\"type\" class=\"form-label\">Limit by Report Type</label>\n      {$typeselect}\n    </div>\n  </div>\n  <div class=\"col-md-3\">\n    <div class=\"mb-3\">\n      <label for=\"magge\" class=\"form-label\">Minimum Magnitude</label>\n      <input type=\"number\" step=\"any\" class=\"form-control\" id=\"magge\"\n       name=\"magge\" placeholder=\"e.g. 0.5\">\n      <div class=\"form-text\">Only include reports with magnitude &ge; this\n       value. Leave blank for no filter. This is a blunt tool and generally\n       does not work for things without a magnitude, like tornado LSRs.</div>\n    </div>\n  </div>\n</div><!-- ./row -->\n\n<h4>Select time interval</h4>\n<i>(Times are in UTC.  Local Storm Reports with an event time <b>valid</b>\nbetween these times selected below will be included in the output GIS file...)</i>\n<table class=\"table table-sm table-bordered table-striped\">\n  <thead>\n    <tr>\n      <th scope=\"col\"></th>\n      <th scope=\"col\">Year</th>\n      <th scope=\"col\">Month</th>\n      <th scope=\"col\">Day</th>\n      <th scope=\"col\">Hour</th>\n      <th scope=\"col\">Minute</th>\n    </tr>\n  </thead>\n  <tbody>\n  <tr>\n    <th>Start:</th>\n    <td>{$ys}</td>\n    <td>{$ms}</td>\n    <td>{$ds}</td>\n    <td>{$hs}</td>\n    <td>{$ns}</td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>{$ys2}</td>\n    <td>{$ms2}</td>\n    <td>{$ds2}</td>\n    <td>{$hs2}</td>\n    <td>{$ns2}</td>\n   </tr>\n    </tbody>\n</table>\n\n<div class=\"mb-3\">\n<label for=\"fmt\" class=\"form-label\"><strong>Download Format:</strong></label>\n<select name=\"fmt\" id=\"fmt\" class=\"form-select\" style=\"width: auto; display: inline-block;\">\n  <option value=\"shp\">ESRI Shapefile</option>\n  <option value=\"csv\">Comma Delimited (.csv)</option>\n  <option value=\"kml\">KML (.kml)</option>\n  <option value=\"excel\">Microsoft Excel (.xlsx)</option>\n</select>\n</div>\n\n<div class=\"mb-3\">\n<button type=\"submit\" class=\"btn btn-primary\">Generate File</button>\n</div>\n</form>\n\n<h4>Shapefile DBF schema:</h4>\n<pre>\nVALID    Timestamp of LSR in GMT/UTC time\nMAG      Magnitude value of the LSR\nWFO      Weather Forecast Office originating the LSR\nTYPECODE 1 character identifier of the report type, IEM specific\nTYPETEXT Textual value of LSR type used in report\nCITY     Location used for the LSR\nCOUNTY   County/Parish of the LSR city\nSTATE    Two character state abbreviation\nSOURCE   Who reported the LSR\nREMARK   Text summary with the LSR\nLAT      Latitude\nLON      Longitude\nUGC      IEM computed NWS UGC code (6 character), sometimes null\nUGCNAME  IEM computed NWS UGC name (128 character), sometimes null\nQUALIFY  1 char describing if the MAG is Estimated, Measured, or Unknown\n</pre>\n\n<h4>Archive notes:</h4>\n<ul>\n <li>Before 1 Dec 2006, there was no differentiation between Snow and Sleet reports.</li>\n  <li><strong>18 July 2022:</strong> Added output fields that attempt to cross\n  reference NWS UGC County/Zones database to the referenced county/state found\n  in the LSR text.  This all is sub-optimal, but works in 99% of cases.</li>\n</ul>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/gis/misc.phtml",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 163);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n$t->title = \"Download Misc NWS Polygons in Shapefile/KML\";\n$content = <<<EOM\n<div class=\"container-fluid\">\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Mainpage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">NWS Misc Polygons Download</li>\n  </ol>\n</nav>\n\n<div class=\"mb-4\">\n  <h5 class=\"mb-3\"><i class=\"bi bi-link-45deg me-2\"></i>Related Services</h5>\n  <div class=\"d-flex flex-wrap gap-2\">\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"watchwarn.phtml\">\n      <i class=\"bi bi-exclamation-triangle\"></i> NWS VTEC Watch Warning Advisory\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"spc_mcd.phtml\">\n      <i class=\"bi bi-chat-square-text\"></i> SPC Convective Discussions\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"outlooks.phtml\">\n      <i class=\"bi bi-eye\"></i> SPC/WPC Outlooks\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"spc_watch.phtml\">\n      <i class=\"bi bi-shield-exclamation\"></i> SPC Watch Polygons\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"sps.phtml\">\n      <i class=\"bi bi-megaphone\"></i> SPS Polygons\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"wpc_mpd.phtml\">\n      <i class=\"bi bi-cloud-rain\"></i> WPC MPDs\n    </a>\n  </div>\n</div>\n\n<div class=\"alert alert-info\" role=\"alert\">\n  <div class=\"d-flex\">\n    <div class=\"flex-shrink-0\">\n      <i class=\"bi bi-info-circle\"></i>\n    </div>\n    <div class=\"flex-grow-1 ms-3\">\n      <p class=\"mb-2\">This miscellaneous service provides polygons associated with NWS Products that\n      were not SPS or VTEC enabled. These include civil emergency messages, fire weather\n      warnings, and others.</p>\n      <a href=\"/cgi-bin/request/gis/misc.py?help\" class=\"btn btn-outline-primary btn-sm\">\n        <i class=\"bi bi-file-text\"></i> Backend Documentation\n      </a>\n    </div>\n  </div>\n</div>\n\n<form method=\"GET\" action=\"/cgi-bin/request/gis/misc.py\" class=\"mb-4\">\n<div class=\"card\">\n  <div class=\"card-header bg-primary text-white\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-calendar-range\"></i> Time Interval for Issuance Time (UTC)\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"table-responsive\">\n      <table class=\"table table-borderless\">\n        <thead>\n          <tr>\n            <th scope=\"col\"></th>\n            <th scope=\"col\">Year</th>\n            <th scope=\"col\">Month</th>\n            <th scope=\"col\">Day</th>\n            <th scope=\"col\">Hour</th>\n            <th scope=\"col\">Minute</th>\n          </tr>\n        </thead>\n        <tbody>\nEOM;\n$content .= \"<tr>\n    <th scope=\\\"row\\\" class=\\\"text-success\\\">\n      <i class=\\\"bi bi-play-fill\\\"></i> Start:\n    </th>\n    <td>\n     \". yearSelect(2022, date(\"Y\"), \"year1\") .\"\n    </td>\n    <td>\n     \". monthSelect(0,\"month1\") .\"\n    </td>\n    <td>\n     \". daySelect(0, \"day1\") .\"\n    </td>\n    <td>\n     \". gmtHourSelect(0, \"hour1\") .\"\n    </td>\n    <td>\n     \". minuteSelect(0, \"minute1\") .\"\n    </td>\n  </tr>\n\n  <tr>\n    <th scope=\\\"row\\\" class=\\\"text-danger\\\">\n      <i class=\\\"bi bi-stop-fill\\\"></i> End:\n    </th>\n    <td>\n     \". yearSelect(2022, date(\"Y\"), \"year2\") .\"\n    </td>\n    <td>\n     \". monthSelect(date(\"m\"), \"month2\") .\"\n    </td>\n    <td>\n     \". daySelect(date(\"d\"), \"day2\") .\"\n    </td>\n    <td>\n     \". gmtHourSelect(0, \"hour2\") .\"\n    </td>\n    <td>\n     \". minuteSelect(0, \"minute2\") .\"\n    </td>\n  </tr>\n        </tbody>\n      </table>\n    </div>\n  </div>\n</div>\";\n\n$content .= <<<EOM\n\n<div class=\"card mb-4\">\n  <div class=\"card-header\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-download\"></i> Download Format\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"row\">\n      <div class=\"col-md-6\">\n        <div class=\"form-check\">\n          <input class=\"form-check-input\" type=\"radio\" name=\"format\" value=\"shp\" id=\"shp\" checked>\n          <label class=\"form-check-label\" for=\"shp\">\n            <i class=\"bi bi-file-earmark-zip text-primary\"></i> Shapefile\n          </label>\n        </div>\n        <div class=\"form-check\">\n          <input class=\"form-check-input\" type=\"radio\" name=\"format\" value=\"kml\" id=\"kml\">\n          <label class=\"form-check-label\" for=\"kml\">\n            <i class=\"bi bi-geo-alt text-warning\"></i> KML\n          </label>\n        </div>\n      </div>\n      <div class=\"col-md-6\">\n        <div class=\"form-check\">\n          <input class=\"form-check-input\" type=\"radio\" name=\"format\" value=\"csv\" id=\"csv\">\n          <label class=\"form-check-label\" for=\"csv\">\n            <i class=\"bi bi-filetype-csv text-success\"></i> CSV\n          </label>\n        </div>\n        <div class=\"form-check\">\n          <input class=\"form-check-input\" type=\"radio\" name=\"format\" value=\"excel\" id=\"excel\">\n          <label class=\"form-check-label\" for=\"excel\">\n            <i class=\"bi bi-file-earmark-excel text-success\"></i> Excel\n          </label>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"d-grid gap-2 mb-4\">\n  <button type=\"submit\" class=\"btn btn-primary btn-lg\">\n    <i class=\"bi bi-download\"></i> Download Data\n  </button>\n</div>\n</form>\n\n<div class=\"card mb-4\">\n  <div class=\"card-header bg-secondary text-white\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-table\"></i> Shapefile DBF Schema\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"table-responsive\">\n      <table class=\"table table-sm\">\n        <thead class=\"table-dark\">\n          <tr>\n            <th>Field</th>\n            <th>Type</th>\n            <th>Title</th>\n            <th>Description</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr><td>0</td><td><span class=\"badge bg-info\">String</span></td><td><code>PIL</code></td><td>Six character AWIPS/AFOS ID</td></tr>\n          <tr><td>1</td><td><span class=\"badge bg-info\">String</span></td><td><code>ISSUE</code></td><td>Issuance UTC Time</td></tr>\n          <tr><td>2</td><td><span class=\"badge bg-info\">String</span></td><td><code>EXPIRE</code></td><td>Expiration UTC Time</td></tr>\n          <tr><td>3</td><td><span class=\"badge bg-info\">String</span></td><td><code>PROD_ID</code></td><td>IEM NWS Text Product Identifier, which can be used against the /api/1/nwstext/&lt;PROD_ID&gt; service</td></tr>\n        </tbody>\n      </table>\n    </div>\n  </div>\n</div>\n\n<div class=\"card\">\n  <div class=\"card-header bg-light\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-info-circle\"></i> Archive / Usage Notes\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"alert alert-secondary\" role=\"alert\">\n      <strong><i class=\"bi bi-info-circle\"></i> Note:</strong> This service provides access to miscellaneous NWS polygon data that is not available through other specialized services.\n    </div>\n  </div>\n</div>\n</div>\nEOM;\n\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/gis/n0q2gtiff.php",
    "content": "<?php\n// Prevent client abort from leaving temp files around\nignore_user_abort(true);\n\nrequire_once \"../../../include/throttle.php\";\nrequire_once \"../../../include/forms.php\";\n\ndate_default_timezone_set('UTC');\nputenv(\"TZ=GMT\");\n/* This bad boy converts a PNG to a geo-tiff */\n\n$dstr = get_str404(\"dstr\", null);\nif (is_null($dstr)) {\n    http_response_code(422);\n    die(\"Invalid date format\");\n}\n// Validate dstr format (12 digits: YYYYMMDDHHMM)\nif (!preg_match('/^\\d{12}$/', $dstr)) {\n    http_response_code(422);\n    die(\"Invalid date format\");\n}\n$sector = substr(get_str404(\"sector\", \"us\"), 0, 2);\n// Validate sector contains only letters\nif (!preg_match('/^[a-zA-Z]+$/', $sector)) {\n    http_response_code(422);\n    die(\"Invalid sector format\");\n}\n$year = intval(substr($dstr, 0, 4));\n$month = intval(substr($dstr, 4, 2));\n$day = intval(substr($dstr, 6, 2));\n$hour = intval(substr($dstr, 8, 2));\n$minute = intval(substr($dstr, 10, 2));\n$ts = mktime($hour, $minute, 0, $month, $day, $year);\n$now = time();\nif ($ts > $now) {\n    http_response_code(422);\n    die(\"Request from the future?\");\n}\n$tmpdirname = sys_get_temp_dir() .\"/png2gtiff_\". bin2hex(random_bytes(8));\n\nmkdir($tmpdirname, 0755);\nchdir($tmpdirname);\n\n$outFile = sprintf(\"n0q_%s\", date(\"YmdHi\", $ts));\n$zipFile = sprintf(\"n0q_%s.zip\", date(\"YmdHi\", $ts));\n\n$S = strtoupper($sector);\nif ($ts > ($now - 360.0)) {\n    $inFile = \"/mesonet/ldmdata/gis/images/4326/{$S}COMP/n0q_0.tif\";\n} else {\n    $inFile = sprintf(\"/mesonet/ARCHIVE/data/%s/GIS/{$sector}comp/n0q_%s.png\", date(\"Y/m/d\", $ts), date(\"YmdHi\", $ts));\n}\n\nif (!is_file($inFile)) die(\"No GIS composite $inFile found for this time!\");\n\n\n$cmd = sprintf(\"gdalwarp -t_srs %s -s_srs %s -of GTIFF %s %s.tif\",\n    escapeshellarg(\"EPSG:4326\"),\n    escapeshellarg(\"EPSG:4326\"),\n    escapeshellarg($inFile),\n    escapeshellarg($outFile));\n`$cmd`;\n\n$cmd = sprintf(\"zip %s %s.tif\",\n    escapeshellarg($zipFile),\n    escapeshellarg($outFile));\n`$cmd`;\n\nheader(\"Content-type: application/octet-stream\");\nheader(\"Content-Disposition: attachment; filename={$zipFile}\");\nreadfile($zipFile);\n\nunlink($zipFile);\nunlink(\"{$outFile}.tif\");\n\nchdir(\"..\");\nrmdir($tmpdirname);\n"
  },
  {
    "path": "htdocs/request/gis/n0r2gtiff.php",
    "content": "<?php\n// Prevent client abort from leaving temp files around\nignore_user_abort(true);\n\nrequire_once \"../../../include/throttle.php\";\nrequire_once \"../../../include/forms.php\";\n\ndate_default_timezone_set('UTC');\nputenv(\"TZ=GMT\");\n/* This bad boy converts a PNG to a geo-tiff */\n\n$dstr = get_str404(\"dstr\", null);\nif (is_null($dstr)) {\n    http_response_code(422);\n    die(\"Invalid date format\");\n}\n$sector = substr(get_str404(\"sector\", \"us\"), 0, 2);\n$year = intval(substr($dstr, 0, 4));\n$month = intval(substr($dstr, 4, 2));\n$day = intval(substr($dstr, 6, 2));\n$hour = intval(substr($dstr, 8, 2));\n$minute = intval(substr($dstr, 10, 2));\n$ts = mktime($hour, $minute, 0, $month, $day, $year);\n$now = time();\nif ($ts > $now) {\n    die(\"Request from the future?\");\n}\nif (! is_dir(\"/tmp/png2gtiff\")){\n    mkdir(\"/tmp/png2gtiff\", 0755);\n}\nchdir(\"/tmp/png2gtiff\");\n\n$outFile = sprintf(\"n0r_%s\", date(\"YmdHi\", $ts));\n$zipFile = sprintf(\"n0r_%s.zip\", date(\"YmdHi\", $ts));\n\nif (is_file($zipFile)) {\n    header(\"Content-type: application/octet-stream\");\n    header(\"Content-Disposition: attachment; filename={$zipFile}\");\n    readfile($zipFile);\n    die();\n}\n\n$S = strtoupper($sector);\nif ($ts > ($now - 360.0)) {\n    $inFile = \"/mesonet/ldmdata/gis/images/4326/{$S}COMP/n0r_0.tif\";\n} else {\n    $inFile = sprintf(\"/mesonet/ARCHIVE/data/%s/GIS/{$sector}comp/n0r_%s.png\", date(\"Y/m/d\", $ts), date(\"YmdHi\", $ts));\n}\n\nif (!is_file($inFile)) die(\"No GIS composite found for this time!\");\n\n\n$cmd = sprintf(\"gdalwarp -t_srs \\\"EPSG:4326\\\" -s_srs \\\"EPSG:4326\\\" -of GTIFF %s %s.tif\", $inFile, $outFile);\n`$cmd`;\n\n$cmd = \"zip $zipFile {$outFile}.tif\";\n`$cmd`;\n\nheader(\"Content-type: application/octet-stream\");\nheader(\"Content-Disposition: attachment; filename={$zipFile}\");\nreadfile($zipFile);\n\nunlink($zipFile);\nunlink(\"{$outFile}.tif\");\n"
  },
  {
    "path": "htdocs/request/gis/nexrad_storm_attrs.module.js",
    "content": "document.addEventListener('DOMContentLoaded', () => {\n    const stationSelect = document.querySelector('select[name=\"station\"]');\n    const histImage = document.getElementById('histimage');\n\n    if (stationSelect) {\n        stationSelect.addEventListener('change', () => {\n            const nexrad = stationSelect.value;\n            if (histImage) {\n                histImage.src = `/pickup/nexrad_attrs/${nexrad}_histogram.png`;\n            }\n            window.location.hash = nexrad;\n        });\n    }\n\n    const tokens = window.location.href.split('#');\n    if (tokens.length === 2 && tokens[1].length === 3) {\n        if (histImage) {\n            histImage.src = `/pickup/nexrad_attrs/${tokens[1]}_histogram.png`;\n        }\n    }\n});"
  },
  {
    "path": "htdocs/request/gis/nexrad_storm_attrs.php",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 109);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n$t->jsextra = <<<EOM\n<script src=\"nexrad_storm_attrs.module.js\" type=\"module\"></script>\nEOM;\n$t->title = \"Download NEXRAD Storm Attributes Shapefile\";\n$content = <<<EOM\n<h3>Archived NEXRAD Storm Attributes Shapefiles</h3>\n\n<p>The IEM attempts to process and archive the Storm Attribute Table that is\n produced by the RADARs that are a part of the NEXRAD network.  This page allows\n you to selectively download these attributes from the IEM database in \n shapefile format. <strong>Holes do exist in this archive!</strong>  If you find\n a data hole and would like it filled, please let us know.\n\n<div class=\"alert alert-warning\">The <a href=\"https://www.ncdc.noaa.gov\">National Climatic Data Center</a> now\n        has a very impressive archive and interface to download these attributes.\n        You can find it on their <a href=\"https://www.ncdc.noaa.gov/swdi/\">Severe\n        Weather Data Inventory</a>.  For programic access, check out their \n        <a href=\"https://www.ncdc.noaa.gov/swdiws/\">web services</a>.</div>\n        \n<p>The archive behind this application is large, so please be patient after clicking\n the Givme button below.  Requests are limited to a \"score\" of 1500, which is a\n combination of selected RADARs and day interval.  If you select ALL RADARs,\n that counts as 150 toward that score.\n <a href=\"/cgi-bin/request/gis/nexrad_storm_attrs.py?help\"\n class=\"btn btn-info\"><i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend documentation</a> exists\n for those wishing to script against this service.</p>\n\n<p><a class=\"btn btn-secondary\" href=\"#histograms\" role=\"button\">\n        <i class=\"bi bi-bar-chart\" aria-hidden=\"true\"></i> View Histograms</a>\n \n<form method=\"GET\" action=\"/cgi-bin/request/gis/nexrad_storm_attrs.py\">\n<h4>Select time interval</h4>\n<i>(Times are in UTC.)</i>\n<table class=\"table\">\n<thead><tr><th>RADAR Site</th><th colspan=\"6\">Time Interval</th>\n        <th>Format</th></tr></thead>\n<tr>\n    <th></th>\n    <th></th>\n    <th>Year</th><th>Month</th><th>Day</th>\n    <th>Hour</th><th>Minute</th>\n    <td rowspan=\"3\"><select name=\"fmt\">\n        <option value=\"shp\">ESRI Shapefile</option>\n        <option value=\"csv\">Comma Delimited</option>\n        </select></td>\n</tr>\n\n<tr>\n  <td rowspan='2'>\nEOM;\n$content .= networkMultiSelect(Array(\"NEXRAD\", \"TWDR\"), 'ALL', \n          Array(\"ALL\"=>\"ALL\"), \"radar\") .\"</td>\n    <th>Start:</th>\n    <td>\n     \". yearSelect(2005, date(\"Y\"), \"year1\") .\"\n    </td>\n    <td>\n     \". monthSelect(0,\"month1\") .\"\n    </td>\n    <td>\n     \". daySelect(0, \"day1\") .\"\n    </td>\n    <td>\n     \". gmtHourSelect(0, \"hour1\") .\"\n    </td>\n    <td>\n     \". minuteSelect(0, \"minute1\") .\"\n    </td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>\n     \". yearSelect(2005, date(\"Y\"), \"year2\") .\"\n    </td>\n    <td>\n     \". monthSelect(0,\"month2\") .\"\n    </td>\n    <td>\n     \". daySelect(0, \"day2\") .\"\n    </td>\n    <td>\n     \". gmtHourSelect(0, \"hour2\") .\"\n    </td>\n    <td>\n     \". minuteSelect(0, \"minute2\") .\"\n    </td>\n  </tr>\n</table>\";\n\n$content .= <<<EOM\n<p><input type=\"submit\" value=\"Giveme data right now!\">\n</form>\n\n<h4>Shapefile DBF schema:</h4>\n<pre>\nField 0: Type=C/String, Title='VALID', Timestamp in UTC\nField 1: Type=C/String, Title='STORM_ID', 2 character Storm ID\nField 2: Type=C/String, Title='NEXRAD', 3 character NEXRAD ID\nField 3: Type=N/Integer, Title='AZIMUTH', Azimuth of storm in degrees from North\nField 4: Type=N/Integer, Title='RANGE', Range of storm in miles from RDA\nField 5: Type=C/String, Title='TVS', Tornado Vortex Signature\nField 6: Type=C/String, Title='MESO', Mesocyclone strength (1=weak,25=strongest)\nField 7: Type=N/Integer, Title='POSH', Probability of Hail\nField 8: Type=N/Integer, Title='POH', Probability of Hail\nField 9: Type=N/Double, Title='MAX_SIZE', Maximum Hail Size inch\nField 10: Type=N/Integer, Title='VIL', Volume Integrated Liquid kg/m3\nField 11: Type=N/Integer, Title='MAX_DBZ', max dbZ\nField 12: Type=N/Double, Title='MAX_DBZ_H', Height of Max dbZ in thousands of feet\nField 13: Type=N/Double, Title='TOP', Storm Top in thousands of feet\nField 14: Type=N/Integer, Title='DRCT', Motion Direction degrees from North\nField 15: Type=N/Integer, Title='SKNT', Speed in knots\nField 16: Type=N/Double, Title='LAT', Latitude\nField 17: Type=N/Double, Title='LON', Longitude \n</pre>\n\n<h4>Archive notes:</h4>\n<ul>\n <li>Data is missing June 2007 to March 2008</li>\n <li>Data is missing November 2008 to March 2009</li>\n </ul>\n\n<p><a name=\"histograms\"></a><h3>Attribute Speed &amp; Direction Histograms</h3>\n\n<p>Based on the archive built by the IEM, the following are 2-D Histograms \ncomparing RADAR storm attribute speed, direction of travel, and day of the year.\nA direction of \"west\" would represent a storm moving from west to east.\n\n<form id='dyno' name='dyno'>\n\n<p><strong>Select RADAR:</strong> \nEOM;\n$content .= networkSelect(Array(\"NEXRAD\", \"TWDR\"), \n        'DMX') .\"\n<br />\n<img id='histimage' src='/pickup/nexrad_attrs/DMX_histogram.png' alt='Histogram' />\n\n</form>\";\n\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/gis/outlooks.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 125);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n$t->title = \"Download SPC Convective/Fire Weather WPC Excessive Rainfall Outlooks Shapefile\";\n$content = <<<EOM\n<div class=\"container-fluid\">\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Mainpage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">SPC Convective and Fire Weather + WPC Excessive Rainfall Outlooks</li>\n  </ol>\n</nav>\n\n<div class=\"alert alert-info\" role=\"alert\">\n  <div class=\"d-flex\">\n    <div class=\"flex-shrink-0\">\n      <i class=\"bi bi-info-circle\"></i>\n    </div>\n    <div class=\"flex-grow-1 ms-3\">\n      <p class=\"mb-2\">The IEM attempts to process and archive the convective and fire weather\n      outlooks issued by the Storm Prediction Center and the excessive rainfall \n      outlooks issued by the Weather Prediction Center. This processing is done by\n      parsing the PTS product via <a href=\"https://github.com/akrherz/pyIEM/blob/main/src/pyiem/nws/products/spcpts.py\">pyIEM decoder</a>.</p>\n      <p class=\"mb-2\">Recently, the SPC website has added direct single outlook downloads in various\n      GIS formats. <strong>Your best data quality will come from scraping their website</strong>, but\n      maybe that approach is not for all users of this data! So here it is, a means\n      to bulk download the IEM's SPC/WPC Outlook database.</p>\n      <a href=\"/cgi-bin/request/gis/spc_outlooks.py?help\" class=\"btn btn-outline-primary btn-sm\">\n        <i class=\"bi bi-file-text\"></i> Backend Documentation\n      </a>\n    </div>\n  </div>\n</div>\n\n<div class=\"alert alert-warning\" role=\"alert\">\n  <div class=\"d-flex\">\n    <div class=\"flex-shrink-0\">\n      <i class=\"bi bi-exclamation-triangle\"></i>\n    </div>\n    <div class=\"flex-grow-1 ms-3\">\n      <strong>Processing Limit:</strong> Due to processing constraints, requests are limited\n      to 10 single outlook type-years at a time.\n    </div>\n  </div>\n</div>\n\n<div class=\"mb-4\">\n  <h5 class=\"mb-3\"><i class=\"bi bi-link-45deg me-2\"></i>Related Services</h5>\n  <div class=\"d-flex flex-wrap gap-2\">\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"misc.phtml\">\n      <i class=\"bi bi-geo\"></i> NWS Misc Polygons\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"watchwarn.phtml\">\n      <i class=\"bi bi-exclamation-triangle\"></i> NWS VTEC Watch Warning Advisory\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"spc_mcd.phtml\">\n      <i class=\"bi bi-chat-square-text\"></i> SPC Convective Discussions\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"spc_watch.phtml\">\n      <i class=\"bi bi-shield-exclamation\"></i> SPC Watch Polygons\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"wpc_mpd.phtml\">\n      <i class=\"bi bi-cloud-rain\"></i> WPC Precip Discussions\n    </a>\n  </div>\n</div>\n\n<form method=\"GET\" action=\"/cgi-bin/request/gis/spc_outlooks.py\" class=\"mb-4\">\n<div class=\"card\">\n  <div class=\"card-header bg-primary text-white\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-calendar-range\"></i> Time Interval for Outlook Issuance (UTC)\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"table-responsive\">\n      <table class=\"table table-borderless\">\n        <thead>\n          <tr>\n            <th scope=\"col\"></th>\n            <th scope=\"col\">Year</th>\n            <th scope=\"col\">Month</th>\n            <th scope=\"col\">Day</th>\n            <th scope=\"col\">Hour</th>\n            <th scope=\"col\">Minute</th>\n            <th scope=\"col\">Outlook Type</th>\n            <th scope=\"col\">Outlook Day</th>\n          </tr>\n        </thead>\n        <tbody>\nEOM;\n$content .= \"<tr>\n    <th scope=\\\"row\\\" class=\\\"text-success\\\">\n      <i class=\\\"bi bi-play-fill\\\"></i> Start:\n    </th>\n    <td>\n     \" . yearSelect(1987, date(\"Y\"), \"year1\") . \"\n    </td>\n    <td>\n     \" . monthSelect(0, \"month1\") . \"\n    </td>\n    <td>\n     \" . daySelect(0, \"day1\") . \"\n    </td>\n    <td>\n     \" . gmtHourSelect(0, \"hour1\") . \"\n    </td>\n    <td>\n     \" . minuteSelect(0, \"minute1\") . \"\n    </td>\n    <td rowspan=\\\"2\\\" class=\\\"align-middle\\\">\n      <div class=\\\"form-check\\\">\n        <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" name=\\\"type\\\" value=\\\"C\\\" id=\\\"tc\\\" checked>\n        <label class=\\\"form-check-label\\\" for=\\\"tc\\\">\n          <i class=\\\"bi bi-cloud-lightning text-warning\\\"></i> Convective (1987+)\n        </label>\n      </div>\n      <div class=\\\"form-check\\\">\n        <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" name=\\\"type\\\" value=\\\"E\\\" id=\\\"te\\\" checked>\n        <label class=\\\"form-check-label\\\" for=\\\"te\\\">\n          <i class=\\\"bi bi-cloud-rain text-primary\\\"></i> Excessive Rainfall (2019+)\n        </label>\n      </div>\n      <div class=\\\"form-check\\\">\n        <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" name=\\\"type\\\" value=\\\"F\\\" id=\\\"tf\\\" checked>\n        <label class=\\\"form-check-label\\\" for=\\\"tf\\\">\n          <i class=\\\"bi bi-fire text-danger\\\"></i> Fire Weather (2006+)\n        </label>\n      </div>\n    </td>\n    <td rowspan=\\\"2\\\" class=\\\"align-middle\\\">\n      <div class=\\\"row g-2\\\">\n        <div class=\\\"col-6\\\">\n          <div class=\\\"form-check form-check-inline\\\">\n            <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" name=\\\"d\\\" value=\\\"1\\\" id=\\\"d1\\\" checked>\n            <label class=\\\"form-check-label\\\" for=\\\"d1\\\">1</label>\n          </div>\n          <div class=\\\"form-check form-check-inline\\\">\n            <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" name=\\\"d\\\" value=\\\"2\\\" id=\\\"d2\\\" checked>\n            <label class=\\\"form-check-label\\\" for=\\\"d2\\\">2</label>\n          </div>\n          <div class=\\\"form-check form-check-inline\\\">\n            <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" name=\\\"d\\\" value=\\\"3\\\" id=\\\"d3\\\" checked>\n            <label class=\\\"form-check-label\\\" for=\\\"d3\\\">3</label>\n          </div>\n          <div class=\\\"form-check form-check-inline\\\">\n            <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" name=\\\"d\\\" value=\\\"4\\\" id=\\\"d4\\\" checked>\n            <label class=\\\"form-check-label\\\" for=\\\"d4\\\">4</label>\n          </div>\n        </div>\n        <div class=\\\"col-6\\\">\n          <div class=\\\"form-check form-check-inline\\\">\n            <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" name=\\\"d\\\" value=\\\"5\\\" id=\\\"d5\\\" checked>\n            <label class=\\\"form-check-label\\\" for=\\\"d5\\\">5</label>\n          </div>\n          <div class=\\\"form-check form-check-inline\\\">\n            <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" name=\\\"d\\\" value=\\\"6\\\" id=\\\"d6\\\" checked>\n            <label class=\\\"form-check-label\\\" for=\\\"d6\\\">6</label>\n          </div>\n          <div class=\\\"form-check form-check-inline\\\">\n            <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" name=\\\"d\\\" value=\\\"7\\\" id=\\\"d7\\\" checked>\n            <label class=\\\"form-check-label\\\" for=\\\"d7\\\">7</label>\n          </div>\n          <div class=\\\"form-check form-check-inline\\\">\n            <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" name=\\\"d\\\" value=\\\"8\\\" id=\\\"d8\\\" checked>\n            <label class=\\\"form-check-label\\\" for=\\\"d8\\\">8</label>\n          </div>\n        </div>\n      </div>\n    </td>\n  </tr>\n\n  <tr>\n    <th scope=\\\"row\\\" class=\\\"text-danger\\\">\n      <i class=\\\"bi bi-stop-fill\\\"></i> End:\n    </th>\n    <td>\n     \" . yearSelect(1987, date(\"Y\"), \"year2\") . \"\n    </td>\n    <td>\n     \" . monthSelect(date(\"m\"), \"month2\") . \"\n    </td>\n    <td>\n     \" . daySelect(date(\"d\"), \"day2\") . \"\n    </td>\n    <td>\n     \" . gmtHourSelect(0, \"hour2\") . \"\n    </td>\n    <td>\n     \" . minuteSelect(0, \"minute2\") . \"\n    </td>\n  </tr>\n        </tbody>\n      </table>\n    </div>\n  </div>\n</div>\";\n\n$content .= <<<EOM\n\n<div class=\"card mb-4\">\n  <div class=\"card-header\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-gear\"></i> Geometry Options\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"form-check\">\n      <input class=\"form-check-input\" type=\"radio\" name=\"geom\" value=\"geom_layers\" id=\"geom_layers\">\n      <label class=\"form-check-label\" for=\"geom_layers\">\n        <i class=\"bi bi-layers text-info\"></i> <strong>Geometries as 'Cake Layers'</strong>\n        <div class=\"text-muted small\">Includes all overlapping risk levels for each location</div>\n      </label>\n    </div>\n    <div class=\"form-check\">\n      <input class=\"form-check-input\" type=\"radio\" name=\"geom\" value=\"geom\" id=\"geom\" checked>\n      <label class=\"form-check-label\" for=\"geom\">\n        <i class=\"bi bi-cookie text-warning\"></i> <strong>Geometries as 'Cookie Cutters'</strong>\n        <div class=\"text-muted small\">Shows only the highest risk level for each location</div>\n      </label>\n    </div>\n  </div>\n</div>\n\n<div class=\"d-grid gap-2 mb-4\">\n  <button type=\"submit\" class=\"btn btn-primary btn-lg\">\n    <i class=\"bi bi-download\"></i> Download Data\n  </button>\n</div>\n</form>\n\n<div class=\"card mb-4\">\n  <div class=\"card-header bg-secondary text-white\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-table\"></i> Shapefile DBF Schema\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"table-responsive\">\n      <table class=\"table table-sm\">\n        <thead class=\"table-dark\">\n          <tr>\n            <th>Field</th>\n            <th>Type</th>\n            <th>Title</th>\n            <th>Description</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr><td>0</td><td><span class=\"badge bg-info\">String</span></td><td><code>ISSUE</code></td><td>Outlook Beginning Valid Time UTC</td></tr>\n          <tr><td>1</td><td><span class=\"badge bg-info\">String</span></td><td><code>EXPIRE</code></td><td>Outlook Ending Valid Time UTC</td></tr>\n          <tr><td>2</td><td><span class=\"badge bg-info\">String</span></td><td><code>PRODISS</code></td><td>Timestamp of Product Issuance UTC</td></tr>\n          <tr><td>3</td><td><span class=\"badge bg-info\">String</span></td><td><code>TYPE</code></td><td>Either C=Convective, F=Fire Weather</td></tr>\n          <tr><td>4</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>DAY</code></td><td>Day 1 through 8 for the outlook</td></tr>\n          <tr><td>5</td><td><span class=\"badge bg-info\">String</span></td><td><code>THRESHOLD</code></td><td>Threshold Label</td></tr>\n          <tr><td>6</td><td><span class=\"badge bg-info\">String</span></td><td><code>CATEGORY</code></td><td>Category of Threshold Label</td></tr>\n          <tr><td>7</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>CYCLE</code></td><td>The generalized forecast issuance hour</td></tr>\n        </tbody>\n      </table>\n    </div>\n  </div>\n</div>\n\n<div class=\"card\">\n  <div class=\"card-header bg-light\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-info-circle\"></i> Archive / Usage Notes\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"alert alert-primary\" role=\"alert\">\n      <strong><i class=\"bi bi-calendar-event\"></i> 8 Aug 2025:</strong> A date\n      problem was identified with some SPC D3+ convective outlooks that crossed\n      a month boundary prior to April 2019.  This issue caused the date to be\n      stored for the previous month.  The database was corrected.\n      We apologize for this error.\n    </div>\n    <div class=\"alert alert-primary\" role=\"alert\">\n      <strong><i class=\"bi bi-calendar-event\"></i> 11 Jul 2023:</strong> The archive was reprocessed to allow for\n      specification of returned geometries in either \"cake layer\" or \"cookie cutter\"\n      form. This gets complex to explain, but hopefully as a simple example: If you\n      are under a \"Moderate Risk\", the cake layer form would include polygons with\n      thresholds of general thunderstorm, marginal, slight, and enhanced for your\n      location: the cookie cutter form would just have a moderate polygon covering\n      your location.\n    </div>\n    <div class=\"alert alert-success\" role=\"alert\">\n      <strong><i class=\"bi bi-check-circle\"></i> 1 Apr 2021:</strong> An assessment was made of the archive\n      completeness and found 99.9% coverage. Some of the holes are due to\n      lost PTS text products yet to be found and others are due to errors within\n      the PTS product causing it to be generally unusable.\n    </div>\n    <div class=\"alert alert-info\" role=\"alert\">\n      <strong><i class=\"bi bi-arrow-repeat\"></i> Cycle Handling:</strong> A complication with using this dataset is that all outlooks are returned, the\n      <code>CYCLE</code> attribute attempts to define a canonical outlook for a given\n      issuance cycle. For example, the Day 1 20Z convective outlook may get issued three\n      times for various reasons. The download contains all three, but two of them will\n      have a cycle of <code>-1</code> and the other will have a <code>20</code>.\n    </div>\n    <div class=\"alert alert-warning\" role=\"alert\">\n      <strong><i class=\"bi bi-geo\"></i> Geography Filter:</strong> Presently, the service only returns outlooks that had actual geographies\n      associated with the outlook. For example, if there was no Day 5 area in the\n      outlook, no entries are included in the download result.\n    </div>\n  </div>\n</div>\n</div>\nEOM;\n\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/gis/pireps.module.js",
    "content": "// Module to wire up the \"filter\" inputs to show/hide #spatialfilter without jQuery\nconst initPireps = () => {\n    const inputs = document.querySelectorAll(\"input[name='filter']\");\n    const spatial = document.getElementById(\"spatialfilter\");\n    const summaryEl = document.getElementById(\"filter-summary\");\n    const artcc = document.querySelector(\"select[name='artcc']\");\n    const degrees = document.getElementById(\"degrees\");\n    const lon = document.getElementById(\"lon\");\n    const lat = document.getElementById(\"lat\");\n\n    if (!inputs.length || !spatial || !summaryEl) {return;}\n\n    const getSelectedFilter = () => document.querySelector(\"input[name='filter']:checked\");\n\n    const getFilterParts = () => {\n        const parts = [];\n        if (artcc?.value !== \"_ALL\") {\n            parts.push(`ARTCC=${artcc.value}`);\n        }\n        const spatialEnabled = Boolean(getSelectedFilter()?.checked);\n        if (spatialEnabled && degrees && lon && lat) {\n            parts.push(`Spatial=${degrees.value}° @ (${lon.value}, ${lat.value})`);\n        }\n        return parts;\n    };\n\n    const setSummaryBadge = (parts) => {\n        const badge = summaryEl.querySelector(\".badge\");\n        if (!badge) {return;}\n        if (parts.length) {\n            badge.textContent = parts.join(' · ');\n            badge.className = 'badge bg-info text-dark';\n        } else {\n            badge.textContent = 'No filters';\n            badge.className = 'badge bg-secondary';\n        }\n    };\n\n    const updateSummary = () => setSummaryBadge(getFilterParts());\n\n    const validateSpatial = () => {\n        let ok = true;\n        const setInvalid = (el, cond) => {\n            if (!el) {return;}\n            if (cond) {\n                el.classList.add('is-invalid');\n                ok = false;\n            } else {\n                el.classList.remove('is-invalid');\n            }\n        };\n        const degreesValue = parseFloat(degrees.value);\n        setInvalid(degrees, Number.isNaN(degreesValue) || degreesValue < 0);\n        const lonv = parseFloat(lon.value);\n        setInvalid(lon, Number.isNaN(lonv) || lonv < -180 || lonv > 180);\n        const latv = parseFloat(lat.value);\n        setInvalid(lat, Number.isNaN(latv) || latv < -90 || latv > 90);\n        return ok;\n    };\n\n    // Wire up events\n    inputs.forEach((input) => {\n        input.addEventListener('change', (evt) => {\n            const checked = Boolean(evt.currentTarget.checked);\n            spatial.classList.toggle('d-none', !checked);\n            if (checked) {validateSpatial();}\n            updateSummary();\n        });\n    });\n\n    if (artcc) {\n        artcc.addEventListener('change', updateSummary);\n    }\n    [degrees, lon, lat].forEach((el) => {\n        if (!el) {return;}\n        el.addEventListener('input', () => {\n            // live validate only if spatial filter enabled\n            if (getSelectedFilter()?.checked) {validateSpatial();}\n            updateSummary();\n        });\n    });\n\n    // initial state\n    updateSummary();\n};\n\n// Auto-initialize when DOM is ready, but also export for explicit init by consumers.\nif (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", initPireps);\n} else {\n    initPireps();\n}\n\nexport default initPireps;\n"
  },
  {
    "path": "htdocs/request/gis/pireps.php",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\ndefine(\"IEM_APPID\", 111);\n\n$t = new MyView();\n$t->iemss = True;\n$t->iem_resource = \"PIREPS\";\n$t->title = \"Download PIREPs\";\n$artcc = Array(\n    \"ZAB\"=> \"[ZAB] ALBUQUERQUE\",\n    \"ZAN\"=> \"[ZAN] ANCHORAGE\",\n    \"ZAU\"=> \"[ZAU] CHICAGO\",\n    \"ZBW\"=> \"[ZBW] BOSTON \",\n    \"ZDC\"=> \"[ZDC] WASHINGTON\",\n    \"ZDV\"=> \"[ZDV] DENVER\",\n    \"ZFW\"=> \"[ZFW] FORT WORTH\",\n    \"ZHU\"=> \"[ZHU] HOUSTON\",\n    \"ZID\"=> \"[ZID] INDIANAPOLIS\",\n    \"ZJX\"=> \"[ZJX] JACKSONVILLE\",\n    \"ZKC\"=> \"[ZKC] KANSAS CITY\",\n    \"ZLA\"=> \"[ZLA] LOS ANGELES\",\n    \"ZLC\"=> \"[ZLC] SALT LAKE CITY\",\n    \"ZMA\"=> \"[ZMA] MIAMI\",\n    \"ZME\"=> \"[ZME] MEMPHIS\",\n    \"ZMP\"=> \"[ZMP] MINNEAPOLIS\",\n    \"ZNY\"=> \"[ZNY] NEW YORK\",\n    \"ZOA\"=> \"[ZOA] OAKLAND\",\n    \"ZOB\"=> \"[ZOB] CLEVELAND \",\n    \"ZSE\"=> \"[ZSE] SEATTLE\",\n    \"ZTL\"=> \"[ZTL] ATLANTA\",\n    \"_ALL\" => \"No ARTCC Filter\",\n);\n$artccSelect = make_select(\"artcc\", \"_ALL\", $artcc);\n\n$content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Mainpage</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">Archived Pilot Reports (PIREPs)</li>\n    </ol>\n</nav>\n\n<p>The IEM attempts to process a feed of Pilot Reports (PIREPs). This\nprocessing is done via the <a href=\"https://github.com/akrherz/pyIEM/blob/main/src/pyiem/nws/products/pirep.py\">PyIEM Library</a>.\nSadly, there is not strict coherence to a format specification and so a \nnumber of reports are simply unparsable.  This archive should not be\nconsidered 'complete'.</p>\n\n<div class=\"alert alert-info\">\n <i class=\"bi bi-exclamation-triangle\" aria-hidden=\"true\"></i> The PIREP parsing library that decodes the location information into a latitude\n and longitude is crude.  It does not properly account for magnetic north and may\n also have errors with VOR baseline locations.  This download interface provides\n the raw undecoded PIREP reports, so users that have more sophisticated location\n calculators are encouraged to process them for yourself.\n</div>\n\n<p>Due to filesize and speed, you can only request up to 120 days of data\nat a time!  If you request data with the spatial filter, you can download\nlonger periods of data. <a href=\"/cgi-bin/request/gis/pireps.py?help\"\nclass=\"btn btn-secondary\"><i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend documentation</a>\nexists for those wishing to script against this service.</p>\n\n<p><strong>Related:</strong>\n<a class=\"btn btn-primary\" href=\"cwas.phtml\">CWSU Center Weather Advisories</a>\n<a class=\"btn btn-primary\" href=\"awc_gairmets.phtml\">Graphical AIRMETs</a>\n<a class=\"btn btn-primary\" href=\"awc_sigmets.phtml\">SIGMETs</a>\n<a class=\"btn btn-primary\" href=\"/request/taf.php\">TAFs</a>\n<a class=\"btn btn-primary\" href=\"/request/tempwind_aloft.php\">Temp/Winds Aloft</a>\n</p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/gis/pireps.py\">\n<div class=\"form2url\"></div>\n\n<h4>Select time interval</h4>\n<i>(Times are in UTC.)</i>\n<div class=\"table-responsive\">\n<table class=\"table\">\n<thead>\n    <tr>\n    <th colspan=\"6\">Time Interval</th>\n    <th>Format</th>\n    <th>Filters (Optional)</th>\n    </tr>\n</thead>\n<tr>\n    <th></th>\n    <th>Year</th><th>Month</th><th>Day</th>\n    <th>Hour</th><th>Minute</th>\n    <td rowspan=\"3\">\n        <select name=\"fmt\" class=\"form-select form-select-sm\">\n            <option value=\"shp\">ESRI Shapefile</option>\n            <option value=\"csv\">Comma Delimited</option>\n        </select>\n    </td>\n    <td rowspan=\"3\">\n        <div class=\"card border-secondary p-2\">\n            <div class=\"d-flex justify-content-between align-items-start\">\n                <div>\n                    <h6 class=\"mb-1\">Filters (optional)</h6>\n                    <div class=\"form-text\">Use either ARTCC, Lon/Lat, or both.</div>\n                </div>\n                <div id=\"filter-summary\" class=\"text-end\">\n                    <span class=\"badge bg-secondary\">No filters</span>\n                </div>\n            </div>\n\n            <div class=\"mt-2\">\n                <div class=\"form-check mb-2\">\n                    <input class=\"form-check-input\" type=\"checkbox\" name=\"filter\" value=\"1\" id=\"filter\">\n                    <label class=\"form-check-label\" for=\"filter\">Enable Lon/Lat Filter</label>\n                </div>\n\n                <div id=\"spatialfilter\" class=\"d-none mb-3\">\n                    <div class=\"row g-2 align-items-center\">\n                        <div class=\"col-auto\">\n                            <label for=\"degrees\" class=\"form-label mb-0 visually-hidden\">Radius (degrees)</label>\n                            <div class=\"input-group input-group-sm\">\n                                <span class=\"input-group-text\">Radius</span>\n                                <input class=\"form-control\" type=\"text\" id=\"degrees\" name=\"degrees\" size=\"5\" value=\"3.0\" aria-label=\"degrees\">\n                                <span class=\"input-group-text\">deg</span>\n                            </div>\n                            <div class=\"invalid-feedback\">Enter a radius in degrees (&gt;=0).</div>\n                        </div>\n\n                        <div class=\"col-auto\">\n                            <label for=\"lon\" class=\"form-label mb-0 visually-hidden\">Longitude</label>\n                            <div class=\"input-group input-group-sm\">\n                                <span class=\"input-group-text\">Lon</span>\n                                <input class=\"form-control\" type=\"text\" id=\"lon\" name=\"lon\" size=\"10\" value=\"-91.99\" aria-label=\"longitude\">\n                            </div>\n                            <div class=\"invalid-feedback\">Longitude must be between -180 and 180.</div>\n                        </div>\n\n                        <div class=\"col-auto\">\n                            <label for=\"lat\" class=\"form-label mb-0 visually-hidden\">Latitude</label>\n                            <div class=\"input-group input-group-sm\">\n                                <span class=\"input-group-text\">Lat</span>\n                                <input class=\"form-control\" type=\"text\" id=\"lat\" name=\"lat\" size=\"10\" value=\"41.99\" aria-label=\"latitude\">\n                            </div>\n                            <div class=\"invalid-feedback\">Latitude must be between -90 and 90.</div>\n                        </div>\n                    </div>\n                    <div class=\"form-text mt-2\">Filter reports to a latitude/longitude circle centered at the point (Lon, Lat) with the radius in degrees.</div>\n                </div>\n\n                <div class=\"mb-1\">\n                    <label for=\"artcc\" class=\"form-label mb-1\">ARTCC Filter</label>\n                    <div>{$artccSelect}</div>\n                    <div class=\"form-text\">Optional: pick an ARTCC to further restrict results. You may use this with or without the Lon/Lat filter.</div>\n                </div>\n            </div>\n        </div>\n    </td>\n</tr>\n\n<tr>\nEOM;\n$content .= \"\n    <th>Start:</th>\n    <td>\n     \". yearSelect(2000, date(\"Y\"), \"year1\") .\"\n    </td>\n    <td>\n     \". monthSelect(1, \"month1\") .\"\n    </td>\n    <td>\n     \". daySelect(1, \"day1\") .\"\n    </td>\n    <td>\n     \". gmtHourSelect(0, \"hour1\") .\"\n    </td>\n    <td>\n     \". minuteSelect(0, \"minute1\") .\"\n    </td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>\n     \". yearSelect(2000, date(\"Y\"), \"year2\") .\"\n    </td>\n    <td>\n     \". monthSelect(date(\"m\"), \"month2\") .\"\n    </td>\n    <td>\n     \". daySelect(date(\"d\"), \"day2\") .\"\n    </td>\n    <td>\n     \". gmtHourSelect(23, \"hour2\") .\"\n    </td>\n    <td>\n     \". minuteSelect(59, \"minute2\") .\"\n    </td>\n  </tr>\n</table>\n</div>\";\n\n$content .= <<<EOM\n<p>\n    <button type=\"submit\" class=\"btn btn-success\">Giveme data right now!</button>\n</p>\n</form>\n\n<h4>Shapefile DBF schema:</h4>\n<pre>\nField 0: Type=C/String, Title='VALID', Timestamp in UTC\nField 1: Type=C/String, Title='URGENT', Was this an urgent PIREP\nField 2: Type=C/String, Title='AIRCRAFT', Reported Aircraft type\nField 3: Type=C/String, Title='REPORT', The PIREP Report\nField 4: Type=C/String, Title='ICING', The icing /IC portion of the PIREP\nField 5: Type=C/String, Title='TURB', The turbulence /TB portion of the PIREP\nField 6: Type=C/String, Title='ARTCC', The ARTCC identifier, when applicable.\nField 7: Type=N/Double, Title='LAT', Latitude\nField 8: Type=N/Double, Title='LON', Longitude \nField 9: Type=C/String, Title='PROD_ID', The IEM NWS text product identifier.\n</pre>\n\n<h4>Archive notes:</h4>\n<ul>\n <li>Archive starts December 2000</li>\n <li><strong>11 Feb 2025:</strong> An issue was found with the location of\n the navaid <code>FLM</code>.  This resulted in PIREPs referencing that navaid\n being placed in Florida.  This has been corrected and the archive was\n reprocessed to fix this issue.</li>\n <li><strong>31 July 2024:</strong> Going forward, a IEM product identifier\n field has been added to allow the retrieval of the raw NWS text product that\n the report was extracted from.  Hope to backfill this, at some point.</li> \n <li><strong>30 January 2023:</strong> Added extraction of icing and turbulence\n portions of the PIREP. Added the associated, when applicable, ARTCC\n identifier for the location of the PIREP.</li>\n <li><strong>23 September 2022</strong>: The archive was backfilled for as long\n as raw data was available from NCEI.  This backfilling covered a period between\n early March 2003 and 20 January 2015.  Confidence is not great that this backfilling\n is complete and PIREPs from Canada are mostly missing.  Again, due to reasons\n above and the poor format of this data, this archive is not the greatest, but\n is certainly unique!</li>\n <li><strong>21 April 2021</strong>: It was kindly pointed out that location\n offsets are in nautical miles and not miles.  The archive was reprocessed\n to properly use nautical miles.</li>\n <li><strong>8 January 2020</strong>: Previously, the ingest process would not\n consider PIPEPs with unknown / bad location details.  These are now included\n in the CSV option with a \"None\" column for the latitude and longitude.  On a\n typical day, less than five PIREPs have unknown location details.</li>\n </ul>\nEOM;\n$t->content = $content;\n$t->jsextra = <<<EOM\n<script type=\"module\" src=\"pireps.module.js\"></script>\nEOM;\n\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/gis/spc_mcd.phtml",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 127);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n$t->title = \"Download SPC Mesoscale Convective Discussion (MCD) Shapefile\";\n$content = <<<EOM\n<div class=\"container-fluid\">\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Mainpage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Storm Prediction Center Mesoscale Convective Discussions (MCD)</li>\n  </ol>\n</nav>\n\n<div class=\"alert alert-info\" role=\"alert\">\n  <div class=\"d-flex\">\n    <div class=\"flex-shrink-0\">\n      <i class=\"bi bi-info-circle\"></i>\n    </div>\n    <div class=\"flex-grow-1 ms-3\">\n      <p class=\"mb-2\">The IEM has a database archive of SPC MCDs since 2003. The\n      download offered here does not contain the MCD text discussion, but the\n      polygon geometry along with some metadata. The backend database that\n      services this download updates in realtime, so the data should be as current\n      as your download.</p>\n      <a href=\"/cgi-bin/request/gis/spc_mcd.py?help\" class=\"btn btn-outline-primary btn-sm\">\n        <i class=\"bi bi-file-text\"></i> Backend Documentation\n      </a>\n    </div>\n  </div>\n</div>\n\n<div class=\"mb-4\">\n  <h5 class=\"mb-3\"><i class=\"bi bi-link-45deg me-2\"></i>Related Services</h5>\n  <div class=\"d-flex flex-wrap gap-2\">\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"misc.phtml\">\n      <i class=\"bi bi-geo\"></i> NWS Misc Polygons\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"watchwarn.phtml\">\n      <i class=\"bi bi-exclamation-triangle\"></i> NWS VTEC Watch Warning Advisory\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"outlooks.phtml\">\n      <i class=\"bi bi-eye\"></i> SPC/WPC Outlooks\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"spc_watch.phtml\">\n      <i class=\"bi bi-shield-exclamation\"></i> SPC Watch Polygons\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"wpc_mpd.phtml\">\n      <i class=\"bi bi-cloud-rain\"></i> WPC Precip Discussions\n    </a>\n  </div>\n</div>\n\n<form method=\"GET\" action=\"/cgi-bin/request/gis/spc_mcd.py\" class=\"mb-4\">\n<div class=\"card\">\n  <div class=\"card-header bg-primary text-white\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-calendar-range\"></i> Time Interval for MCD Issuance (UTC)\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"table-responsive\">\n      <table class=\"table table-borderless\">\n        <thead>\n          <tr>\n            <th scope=\"col\"></th>\n            <th scope=\"col\">Year</th>\n            <th scope=\"col\">Month</th>\n            <th scope=\"col\">Day</th>\n            <th scope=\"col\">Hour</th>\n            <th scope=\"col\">Minute</th>\n          </tr>\n        </thead>\n        <tbody>\nEOM;\n$content .= \"<tr>\n    <th scope=\\\"row\\\" class=\\\"text-success\\\">\n      <i class=\\\"bi bi-play-fill\\\"></i> Start:\n    </th>\n    <td>\n     \". yearSelect(2003, date(\"Y\"), \"year1\") .\"\n    </td>\n    <td>\n     \". monthSelect(0,\"month1\") .\"\n    </td>\n    <td>\n     \". daySelect(0, \"day1\") .\"\n    </td>\n    <td>\n     \". gmtHourSelect(0, \"hour1\") .\"\n    </td>\n    <td>\n     \". minuteSelect(0, \"minute1\") .\"\n    </td>\n  </tr>\n\n  <tr>\n    <th scope=\\\"row\\\" class=\\\"text-danger\\\">\n      <i class=\\\"bi bi-stop-fill\\\"></i> End:\n    </th>\n    <td>\n     \". yearSelect(2003, date(\"Y\"), \"year2\") .\"\n    </td>\n    <td>\n     \". monthSelect(date(\"m\"), \"month2\") .\"\n    </td>\n    <td>\n     \". daySelect(date(\"d\"), \"day2\") .\"\n    </td>\n    <td>\n     \". gmtHourSelect(0, \"hour2\") .\"\n    </td>\n    <td>\n     \". minuteSelect(0, \"minute2\") .\"\n    </td>\n  </tr>\n        </tbody>\n      </table>\n    </div>\n  </div>\n</div>\";\n\n$content .= <<<EOM\n\n<div class=\"d-grid gap-2 mb-4\">\n  <button type=\"submit\" class=\"btn btn-primary btn-lg\">\n    <i class=\"bi bi-download\"></i> Download Data\n  </button>\n</div>\n</form>\n\n<div class=\"card mb-4\">\n  <div class=\"card-header bg-secondary text-white\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-table\"></i> Shapefile DBF Schema\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"table-responsive\">\n      <table class=\"table table-sm\">\n        <thead class=\"table-dark\">\n          <tr>\n            <th>Field</th>\n            <th>Type</th>\n            <th>Title</th>\n            <th>Description</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr><td>0</td><td><span class=\"badge bg-info\">String</span></td><td><code>ISSUE</code></td><td>UTC Issuance Timestamp YYYYmmddHHMM</td></tr>\n          <tr><td>1</td><td><span class=\"badge bg-info\">String</span></td><td><code>EXPIRE</code></td><td>UTC MCD Expiration Timestamp</td></tr>\n          <tr><td>2</td><td><span class=\"badge bg-info\">String</span></td><td><code>PROD_ID</code></td><td>IEM Product ID (see below)</td></tr>\n          <tr><td>3</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>YEAR</code></td><td>YEAR of MCD</td></tr>\n          <tr><td>4</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>NUM</code></td><td>SPC MCD Number</td></tr>\n          <tr><td>5</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>CONFIDEN</code></td><td>SPC Watch issuance confidence</td></tr>\n          <tr><td>6</td><td><span class=\"badge bg-info\">String</span></td><td><code>CONCERN</code></td><td>SPC MCD concerning heading</td></tr>\n          <tr><td>7</td><td><span class=\"badge bg-info\">String</span></td><td><code>MP_TORN</code></td><td>SPC MCD Most Probable Tornado Intensity</td></tr>\n          <tr><td>8</td><td><span class=\"badge bg-info\">String</span></td><td><code>MP_HAIL</code></td><td>SPC MCD Most Probable Hail Intensity</td></tr>\n          <tr><td>9</td><td><span class=\"badge bg-info\">String</span></td><td><code>MP_GUST</code></td><td>SPC MCD Most Probable Gust Intensity</td></tr>\n        </tbody>\n      </table>\n    </div>\n  </div>\n</div>\n\n<div class=\"card\">\n  <div class=\"card-header bg-light\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-info-circle\"></i> Archive / Usage Notes\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"alert alert-primary\" role=\"alert\">\n      <strong><i class=\"bi bi-api\"></i> API Integration:</strong> The <code>PROD_ID</code> DBF field is a string the IEM uses to identify\n      NWS Text products and can be used to call an IEM API to fetch the text of\n      this product: <code>{$EXTERNAL_BASEURL}/api/1/nwstext/{PROD_ID}</code>\n    </div>\n    <div class=\"alert alert-info\" role=\"alert\">\n      <strong><i class=\"bi bi-link-45deg\"></i> SPC Integration:</strong> The <code>YEAR</code> and <code>NUM</code> fields can be used to construct\n      a stable URL into SPC's website like so: <code>https://www.spc.noaa.gov/products/md/{year}/md{NUM:04i}.html</code>\n    </div>\n  </div>\n</div>\n</div>\nEOM;\n\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/gis/spc_outlooks.phtml",
    "content": "<?php\nheader(\"Location: /request/gis/outlooks.phtml\");\n"
  },
  {
    "path": "htdocs/request/gis/spc_watch.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 128);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n$t->title = \"Download SPC Watch Outlines\";\n$content = <<<EOM\n<div class=\"container-fluid\">\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Mainpage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Storm Prediction Center Watches</li>\n  </ol>\n</nav>\n\n<div class=\"alert alert-info\" role=\"alert\">\n  <div class=\"d-flex\">\n    <div class=\"flex-shrink-0\">\n      <i class=\"bi bi-info-circle\"></i>\n    </div>\n    <div class=\"flex-grow-1 ms-3\">\n      <p class=\"mb-2\">The IEM maintains an archive of the watch polygons issued by the\n      Storm Prediction Center since 1997. Please note that these watches are\n      <strong>not the official spatial bounds</strong>\n      anymore as the WCN (watch by county) product is the official coverage.</p>\n      <a href=\"/cgi-bin/request/gis/spc_watch.py?help\" class=\"btn btn-outline-primary btn-sm\">\n        <i class=\"bi bi-file-text\"></i> Backend Documentation\n      </a>\n    </div>\n  </div>\n</div>\n\n<div class=\"mb-4\">\n  <h5 class=\"mb-3\"><i class=\"bi bi-link-45deg me-2\"></i>Related Services</h5>\n  <div class=\"d-flex flex-wrap gap-2\">\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"misc.phtml\">\n      <i class=\"bi bi-geo\"></i> NWS Misc Polygons\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"watchwarn.phtml\">\n      <i class=\"bi bi-exclamation-triangle\"></i> NWS VTEC Watch Warning Advisory\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"spc_mcd.phtml\">\n      <i class=\"bi bi-chat-square-text\"></i> SPC Convective Discussions\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"outlooks.phtml\">\n      <i class=\"bi bi-eye\"></i> SPC/WPC Outlooks\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"wpc_mpd.phtml\">\n      <i class=\"bi bi-cloud-rain\"></i> WPC Precip Discussions\n    </a>\n  </div>\n</div>\n\n<form method=\"GET\" action=\"/cgi-bin/request/gis/spc_watch.py\" class=\"mb-4\">\n<div class=\"card\">\n  <div class=\"card-header bg-primary text-white\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-calendar-range\"></i> Time Interval for Watch Issuance (UTC)\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"table-responsive\">\n      <table class=\"table table-borderless\">\n        <thead>\n          <tr>\n            <th scope=\"col\"></th>\n            <th scope=\"col\">Year</th>\n            <th scope=\"col\">Month</th>\n            <th scope=\"col\">Day</th>\n            <th scope=\"col\">Hour</th>\n            <th scope=\"col\">Minute</th>\n          </tr>\n        </thead>\n        <tbody>\nEOM;\n$content .= \"<tr>\n    <th scope=\\\"row\\\" class=\\\"text-success\\\">\n      <i class=\\\"bi bi-play-fill\\\"></i> Start:\n    </th>\n    <td>\n     \" . yearSelect(1997, date(\"Y\"), \"year1\") . \"\n    </td>\n    <td>\n     \" . monthSelect(0, \"month1\") . \"\n    </td>\n    <td>\n     \" . daySelect(0, \"day1\") . \"\n    </td>\n    <td>\n     \" . gmtHourSelect(0, \"hour1\") . \"\n    </td>\n    <td>\n     \" . minuteSelect(0, \"minute1\") . \"\n    </td>\n  </tr>\n\n  <tr>\n    <th scope=\\\"row\\\" class=\\\"text-danger\\\">\n      <i class=\\\"bi bi-stop-fill\\\"></i> End:\n    </th>\n    <td>\n     \" . yearSelect(1997, date(\"Y\"), \"year2\") . \"\n    </td>\n    <td>\n     \" . monthSelect(date(\"m\"), \"month2\") . \"\n    </td>\n    <td>\n     \" . daySelect(date(\"d\"), \"day2\") . \"\n    </td>\n    <td>\n     \" . gmtHourSelect(0, \"hour2\") . \"\n    </td>\n    <td>\n     \" . minuteSelect(0, \"minute2\") . \"\n    </td>\n  </tr>\n        </tbody>\n      </table>\n    </div>\n  </div>\n</div>\";\n\n$content .= <<<EOM\n\n<div class=\"card mb-4\">\n  <div class=\"card-header\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-download\"></i> Download Format\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"row\">\n      <div class=\"col-md-6\">\n        <div class=\"form-check\">\n          <input class=\"form-check-input\" type=\"radio\" name=\"format\" value=\"shp\" id=\"fshp\" checked>\n          <label class=\"form-check-label\" for=\"fshp\">\n            <i class=\"bi bi-file-earmark-zip text-primary\"></i> ESRI Shapefile\n          </label>\n        </div>\n        <div class=\"form-check\">\n          <input class=\"form-check-input\" type=\"radio\" name=\"format\" value=\"kml\" id=\"fkml\">\n          <label class=\"form-check-label\" for=\"fkml\">\n            <i class=\"bi bi-geo-alt text-warning\"></i> KML\n          </label>\n        </div>\n      </div>\n      <div class=\"col-md-6\">\n        <div class=\"form-check\">\n          <input class=\"form-check-input\" type=\"radio\" name=\"format\" value=\"geojson\" id=\"fgeojson\">\n          <label class=\"form-check-label\" for=\"fgeojson\">\n            <i class=\"bi bi-code-square text-info\"></i> GeoJSON\n          </label>\n        </div>\n        <div class=\"form-check\">\n          <input class=\"form-check-input\" type=\"radio\" name=\"format\" value=\"csv\" id=\"fcsv\">\n          <label class=\"form-check-label\" for=\"fcsv\">\n            <i class=\"bi bi-filetype-csv text-success\"></i> CSV (Polygon as WKT)\n          </label>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"d-grid gap-2 mb-4\">\n  <button type=\"submit\" class=\"btn btn-primary btn-lg\">\n    <i class=\"bi bi-download\"></i> Download Data\n  </button>\n</div>\n</form>\n\n<div class=\"card mb-4\">\n  <div class=\"card-header bg-secondary text-white\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-table\"></i> Shapefile DBF Schema\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"table-responsive\">\n      <table class=\"table table-sm\">\n        <thead class=\"table-dark\">\n          <tr>\n            <th>Field</th>\n            <th>Type</th>\n            <th>Title</th>\n            <th>Description</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr><td>0</td><td><span class=\"badge bg-info\">String</span></td><td><code>ISSUE</code></td><td>UTC Issuance Timestamp YYYYmmddHHMM</td></tr>\n          <tr><td>1</td><td><span class=\"badge bg-info\">String</span></td><td><code>EXPIRE</code></td><td>UTC MCD Expiration Timestamp</td></tr>\n          <tr><td>2</td><td><span class=\"badge bg-info\">String</span></td><td><code>SEL</code></td><td>The 0-9 watch sequence number</td></tr>\n          <tr><td>3</td><td><span class=\"badge bg-info\">String</span></td><td><code>TYPE</code></td><td>TOR or SVR watch</td></tr>\n          <tr><td>4</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>NUM</code></td><td>SPC Watch Number</td></tr>\n          <tr><td>5</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>P_TORTWO</code></td><td>PROB OF 2 OR MORE TORNADOES</td></tr>\n          <tr><td>6</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>P_TOREF2</code></td><td>PROB OF 1 OR MORE STRONG /EF2-EF5/ TORNADOES</td></tr>\n          <tr><td>7</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>P_WIND10</code></td><td>PROB OF 10 OR MORE SEVERE WIND EVENTS</td></tr>\n          <tr><td>8</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>P_WIND65</code></td><td>PROB OF 1 OR MORE WIND EVENTS >= 65 KNOTS</td></tr>\n          <tr><td>9</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>P_HAIL10</code></td><td>PROB OF 10 OR MORE SEVERE HAIL EVENTS</td></tr>\n          <tr><td>10</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>P_HAIL2I</code></td><td>PROB OF 1 OR MORE HAIL EVENTS >= 2 INCHES</td></tr>\n          <tr><td>11</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>P_HAILWND</code></td><td>PROB OF 6 OR MORE COMBINED SEVERE HAIL/WIND EVENTS</td></tr>\n          <tr><td>12</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>MAX_HAIL</code></td><td>MAX HAIL /INCHES/</td></tr>\n          <tr><td>13</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>MAX_GUST</code></td><td>MAX WIND GUSTS SURFACE /KNOTS/</td></tr>\n          <tr><td>14</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>MAX_TOPS</code></td><td>MAX TOPS /X 100 FEET/</td></tr>\n          <tr><td>15</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>MV_DRCT</code></td><td>MEAN STORM MOTION VECTOR /DEGREES/</td></tr>\n          <tr><td>16</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>MV_SKNT</code></td><td>MEAN STORM MOTION VECTOR /KNOTS/</td></tr>\n          <tr><td>17</td><td><span class=\"badge bg-success\">Integer</span></td><td><code>IS_PDS</code></td><td>PARTICULARLY DANGEROUS SITUATION</td></tr>\n        </tbody>\n      </table>\n    </div>\n  </div>\n</div>\n\n<div class=\"card\">\n  <div class=\"card-header bg-light\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-info-circle\"></i> Archive / Usage Notes\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"alert alert-primary\" role=\"alert\">\n      <strong><i class=\"bi bi-calendar-event\"></i> 30 April 2022:</strong> Associated probabilities found in the <code>WWP</code>\n      product are now included as attributes. This archive goes back to about May 2006.\n    </div>\n    <div class=\"alert alert-warning\" role=\"alert\">\n      <strong><i class=\"bi bi-exclamation-triangle\"></i> Important:</strong> To re-emphasize, these polygons are <strong>not the official</strong>\n      watch anymore. The official watch is issued on a county/zone basis.\n    </div>\n  </div>\n</div>\n</div>\nEOM;\n\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/gis/sps.phtml",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 126);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n$t->title = \"Download SPS Special Weather Statement Shapefile\";\n$content = <<<EOM\n<h3>NWS Special Weather Statement (SPS) Polygons</h3>\n\n<p>The IEM attempts to process and archive special weather statements (SPS)\nThis page offers a download of the SPS polygons and some limited associated\nmetadata. <a href=\"/cgi-bin/request/gis/sps.py?help\" class=\"btn btn-secondary\">\n<i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend documentation</a> exists for those wishing\nto script against this service.</p>\n\n<p>\n<strong>Related:</strong> &nbsp;\n<a class=\"btn btn-primary\" href=\"/nws/sps_search/\">SPS Search by Point</a> &nbsp;\n<a class=\"btn btn-primary\" href=\"/wx/afos/p.php?pil=SPSDMX\">SPS Text Download</a>\n</p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/gis/sps.py\">\n<table class=\"table\">\n<thead><tr><th colspan=\"6\">Time Interval for SPS *Issuance* (UTC)</th></tr></thead>\n<tr>\n    <th>Year</th><th>Month</th><th>Day</th>\n    <th>Hour</th><th>Minute</th>\n</tr>\n\n<tr>\nEOM;\n$content .= \"<th>Start:</th>\n    <td>\n     \". yearSelect(2002, date(\"Y\"), \"year1\") .\"\n    </td>\n    <td>\n     \". monthSelect(1, \"month1\") .\"\n    </td>\n    <td>\n     \". daySelect(1, \"day1\") .\"\n    </td>\n    <td>\n     \". gmtHourSelect(0, \"hour1\") .\"\n    </td>\n    <td>\n     \". minuteSelect(0, \"minute1\") .\"\n    </td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>\n     \". yearSelect(2002, date(\"Y\"), \"year2\") .\"\n    </td>\n    <td>\n     \". monthSelect(date(\"m\"), \"month2\") .\"\n    </td>\n    <td>\n     \". daySelect(date(\"d\"), \"day2\") .\"\n    </td>\n    <td>\n     \". gmtHourSelect(23, \"hour2\") .\"\n    </td>\n    <td>\n     \". minuteSelect(59, \"minute2\") .\"\n    </td>\n  </tr>\n</table>\";\n\n$content .= <<<EOM\n<p><input type=\"submit\" value=\"Giveme data right now!\">\n</form>\n\n<h4>Shapefile DBF schema:</h4>\n<pre>\nField 0: Type=C/String, Title=`ISSUE', SPS Issuance Timestamp UTC\nField 1: Type=C/String, Title=`EXPIRE', SPS Expiration Timestamp UTC\nField 2: Type=C/String, Title=`PROD_ID', IEM Text Product Identifier\nField 3: Type=C/String, Title=`WFO', 3 Character Issuance WFO\nField 4: Type=C/String, Title=`LNDSPOUT', Landspout IBW Tag\nField 5: Type=C/String, Title=`WTRSPOUT', Waterspout IBW Tag\nField 6: Type=C/String, Title=`MAX_HAIL', Max Hail Size\nField 7: Type=C/String, Title=`MAX_WIND', Max Wind Gust\nField 8: Type=C/String, Title=`TML_VALD', Time-Motion-Location Timestamp UTC\nField 9: Type=N/Double, Title=`TML_DRCT', Time-Motion-Location Storm Motion\nField 10: Type=N/Double, Title=`TML_SKNT', Time-Motion-Location Storm Speed kt\n\n</pre>\n\n<h4>Archive / Usage Notes:</h4>\n<ol>\n <li>Presently, only those SPS products with a polygon are returned.</li>\n</ol>\n</form>\nEOM;\n\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/gis/watchwarn.module.js",
    "content": "// watchwarn.module.js - NWS Watch, Warning, Advisory Download Interface\nimport { requireElement } from \"/js/iemjs/domUtils.js\";\n\n/**\n * Submit form with specified action URL and reset accept field\n * Used for KML and Shapefile downloads that require different endpoints\n */\nconst submitFormWithAction = (form, url) => {\n    form.action = url;\n    // Reset accept field to default 'shapefile' value for shapefile/KML requests\n    const acceptField = requireElement('accept');\n    acceptField.value = 'shapefile';\n    form.submit();\n};\n\n/**\n * Set the accept format and submit form\n * Updates the hidden accept field before form submission for CSV/Excel downloads\n */\nconst setAcceptAndSubmit = (form, acceptValue) => {\n    const acceptField = requireElement('accept');\n    acceptField.value = acceptValue;\n    form.submit();\n};\n\n/**\n * Initialize location group radio button functionality\n * Shows/hides appropriate select boxes based on radio button selection\n */\nconst initializeLocationGroups = () => {\n    const locationRadios = document.querySelectorAll('input[name=\"location_group\"]');\n    const locationContainers = document.querySelectorAll('.location_group');\n\n    // Function to update visibility based on selected radio\n    const updateLocationVisibility = () => {\n        const selectedValue = document.querySelector('input[name=\"location_group\"]:checked')?.value;\n\n        locationContainers.forEach(container => {\n            const containerId = container.id;\n            const shouldShow = containerId.endsWith(`-${selectedValue}`);\n\n            // Show/hide with smooth transition\n            container.style.display = shouldShow ? 'block' : 'none';\n            container.style.opacity = shouldShow ? '1' : '0.5';\n        });\n    };\n\n    // Add change listeners to radio buttons\n    locationRadios.forEach(radio => {\n        radio.addEventListener('change', updateLocationVisibility);\n    });\n\n    // Initialize visibility on page load\n    updateLocationVisibility();\n};\n\n/**\n * Initialize event handlers when DOM is loaded\n * Sets up click handlers for form submission buttons and location group toggles\n */\nconst init = () => {\n    // Find the main form\n    const form = document.querySelector('form[action=\"/cgi-bin/request/gis/watchwarn.py\"]');\n    if (!form) {return;}\n\n    // Handle Shapefile download button\n    const shapefileBtn = form.querySelector('input[value=\"Request Shapefile\"]');\n    if (shapefileBtn) {\n        shapefileBtn.addEventListener('click', (event) => {\n            event.preventDefault();\n            submitFormWithAction(form, '/cgi-bin/request/gis/watchwarn.py');\n        });\n    }\n\n    // Handle CSV download button\n    const csvBtn = form.querySelector('input[value=\"Request CSV\"]');\n    if (csvBtn) {\n        csvBtn.addEventListener('click', (event) => {\n            event.preventDefault();\n            setAcceptAndSubmit(form, 'csv');\n        });\n    }\n\n    // Handle Excel download button\n    const excelBtn = form.querySelector('input[value=\"Request Excel\"]');\n    if (excelBtn) {\n        excelBtn.addEventListener('click', (event) => {\n            event.preventDefault();\n            setAcceptAndSubmit(form, 'excel');\n        });\n    }\n\n    // Handle KML download button\n    const kmlBtn = form.querySelector('input[value*=\"Request KML\"]');\n    if (kmlBtn) {\n        kmlBtn.addEventListener('click', (event) => {\n            event.preventDefault();\n            setAcceptAndSubmit(form, 'kml');\n        });\n    }\n\n    // Initialize location group functionality\n    initializeLocationGroups();\n};\n\n\n\n// Initialize when DOM is ready\nif (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n} else {\n    // DOM already loaded\n    init();\n}\n\n// Export functions for potential external use or testing\nexport { submitFormWithAction, setAcceptAndSubmit, init };\n"
  },
  {
    "path": "htdocs/request/gis/watchwarn.phtml",
    "content": "<?php\n/*\n * Front-end that allows the download of archived WWA metadata\n */\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 18);\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/reference.php\";\n\n$t = new MyView();\n$t->iem_resource = \"VTEC\";\n$t->title = \"NWS Watches Warnings Advisories Download\";\n\n$nt = new NetworkTable(\"WFO\");\n\nfunction entry($year, $suffix){\n    $fn = \"/mesonet/share/pickup/wwa/{$year}_{$suffix}.zip\";\n    if (! is_file($fn)){\n        return \"N/A\";\n    }\n    $link = sprintf('<a href=\"/pickup/wwa/%s_%s.zip\">Zip</a>', $year, $suffix);\n    return sprintf(\"%s (%s, %s)\", $link, get_file_size($fn), get_file_created_date($fn));\n}\nfunction get_file_created_date($filename) {\n    $ctime = filectime($filename);\n    return date(\"d M Y\", $ctime);\n}\n\nfunction get_file_size($filename, $size_in = 'MB') {\n    $size_in_bytes = @filesize ( $filename );\n\n    // Precision: decimals at the end for each type of size\n\n    if ($size_in == 'B') {\n        $size = $size_in_bytes;\n        $precision = 0;\n    } elseif ($size_in == 'KB') {\n        $size = (($size_in_bytes / 1024));\n        $precision = 2;\n    } elseif ($size_in == 'MB') {\n        $size = (($size_in_bytes / 1024) / 1024);\n        $precision = 2;\n    } elseif ($size_in == 'GB') {\n        $size = (($size_in_bytes / 1024) / 1024) / 1024;\n        $precision = 2;\n    }\n\n    $size = round ( $size, $precision );\n\n    return $size . ' ' . $size_in;\n}\n\n$location_select_groups = array('states', 'wfo');\n$location_select_group_count = count($location_select_groups);\n$location_select_group_meta = array(\n    'states' => array(\n        'title' => 'Limit State'\n    ),\n    'wfo' => array(\n        'title' => 'Limit Weather Forecast Office (WFO)'\n    )\n);\n$selected_group = 'wfo';\n$wselect = \"<select name=\\\"wfos[]\\\" MULTIPLE size=\\\"5\\\">\";\n$wselect .= \"<option value=\\\"ALL\\\" SELECTED>All Available</option>\";\nforeach($nt->table as $key => $value){\n  $wselect .= \"<option value='$key'>[$key] \". $nt->table[$key][\"name\"] .\"</option>\\n\";\n}\n$wselect .= \"</select>\";\n\n$location_select_html = array(\n    'states' => stateSelect('AL', '', 'states[]', 5, true),\n    'wfo' => $wselect\n);\n\n$y1select = yearSelect(1986, date(\"Y\"), \"year1\");\n$m1select = monthSelect(1, \"month1\");\n$d1select = daySelect(1, \"day1\");\n$h1select = gmtHourSelect(0, \"hour1\");\n$mi1select = minuteSelect(0, \"minute1\");\n\n$y2select = yearSelect(1986, date(\"Y\"), \"year2\");\n$m2select = monthSelect(date(\"m\"), \"month2\");\n$d2select = daySelect(date(\"d\"), \"day2\");\n$h2select = gmtHourSelect(0, \"hour2\");\n$mi2select = minuteSelect(0, \"minute2\");\n\n$y3select = yearSelect(1986, date(\"Y\"), \"year3\");\n$m3select = monthSelect(date(\"m\"), \"month3\");\n$d3select = daySelect(date(\"d\"), \"day3\");\n$h3select = gmtHourSelect(0, \"hour3\");\n$mi3select = minuteSelect(0, \"minute3\");\n\n\n$table = \"\";\nfor($year=1986;$year<=date(\"Y\");$year++){\n    $table .= sprintf(\n        \"<tr><th>%s</th><td>%s</td><td>%s</td>\".\n        \"<td>%s</td></tr>\", $year,\n        entry($year, \"all\"), entry($year, \"tsmf\"), entry($year, \"tsmf_sbw\")\n    );\n}\n\n$content = <<<EOM\n<div class=\"container-fluid\">\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Mainpage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Archived NWS Watch, Warnings, Advisories</li>\n  </ol>\n</nav>\n\n<div class=\"alert alert-info\" role=\"alert\">\n  <div class=\"d-flex\">\n    <div class=\"flex-shrink-0\">\n      <i class=\"bi bi-info-circle\"></i>\n    </div>\n    <div class=\"flex-grow-1 ms-3\">\n      <p class=\"mb-2\">This page provides a download interface to IEM processed\n      <strong>metadata/geometries</strong> associated with National Weather Service\n      VTEC-enabled watch, warning, and advisory events. You can download this\n      information on-demand in a zip-file (containing a shapefile + CSV), KML, or\n      Microsoft Excel format.</p>\n      <p class=\"mb-0\">If you are looking for a real-time source of warning shapefiles,\n      you can find that <a href=\"/data/gis/shape/4326/us/current_ww.zip\" class=\"alert-link\">here.</a></p>\n    </div>\n  </div>\n</div>\n\n<div class=\"alert alert-warning\" role=\"alert\">\n  <div class=\"d-flex\">\n    <div class=\"flex-shrink-0\">\n      <i class=\"bi bi-exclamation-triangle\"></i>\n    </div>\n    <div class=\"flex-grow-1 ms-3\">\n      <strong>Download Limit:</strong> If you do not limit the state or WFO output,\n      you are limited to downloading <strong>1 year</strong> of data at a time. The reason being\n      to keep the requests from timing out as the response content is delivered on\n      the fly.\n    </div>\n  </div>\n</div>\n\n<div class=\"mb-4\">\n  <h5 class=\"mb-3\"><i class=\"bi bi-link-45deg me-2\"></i>Related Services</h5>\n  <div class=\"d-flex flex-wrap gap-2\">\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"misc.phtml\">\n      <i class=\"bi bi-geo\"></i> NWS Misc Polygons\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"spc_mcd.phtml\">\n      <i class=\"bi bi-chat-square-text\"></i> SPC Convective Discussions\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"outlooks.phtml\">\n      <i class=\"bi bi-eye\"></i> SPC/WPC Outlooks\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"spc_watch.phtml\">\n      <i class=\"bi bi-shield-exclamation\"></i> SPC Watch Polygons\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"wpc_mpd.phtml\">\n      <i class=\"bi bi-cloud-rain\"></i> WPC Precip Discussions\n    </a>\n  </div>\n</div>\n\n<div class=\"row\"><div class=\"col-md-6\">\n\n<div class=\"card mb-4\">\n  <div class=\"card-header bg-primary text-white\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-download\"></i> Custom Download\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <p class=\"mb-3\">\n      <a class=\"btn btn-outline-primary btn-sm\" href=\"/cgi-bin/request/gis/watchwarn.py?help\">\n        <i class=\"bi bi-file-text\"></i> Backend Documentation\n      </a>\n      for scripting against this service.\n    </p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/gis/watchwarn.py\">\n<input type=\"hidden\" value=\"1\" name=\"simple\">\n<input type=\"hidden\" value=\"shapefile\" name=\"accept\" id=\"accept\">\nEOM;\n\nfor($group_idx=0;$group_idx<$location_select_group_count;$group_idx++){\n    $group_key = $location_select_groups[$group_idx];\n    $group_meta = $location_select_group_meta[$group_key];\n    $group_selected = ($group_key === $selected_group);\n    $group_input_css = 'location_group';\n    $group_select_container_id = $group_input_css . '-' . $group_key;\n    if($group_selected){\n        $group_input_checked = 'checked';\n    }\n    else{\n        $group_input_checked = '';\n    }\n    $content .= '<h6 class=\"mb-2\">';\n    $content .=   '<div class=\"form-check\">';\n    $content .=     '<input class=\"form-check-input\" type=\"radio\" name=\"location_group\" value=\"'.$group_key.'\"';\n    $content .=     ' ' . $group_input_checked . ' id=\"location_'.$group_key.'\">';\n    $content .=     '<label class=\"form-check-label fw-semibold\" for=\"location_'.$group_key.'\">';\n    $content .=       $group_meta['title'];\n    $content .=     '</label>';\n    $content .=   '</div>';\n    $content .= '</h6>';\n    $content .= '<div class=\"' . $group_input_css . ' mb-3\" id=\"' . $group_select_container_id . '\">';\n    $content .= $location_select_html[$group_key];\n    $content .= '</div>';\n}\n$pselect = make_select(\"phenomena\", \"TO\", $reference[\"vtec_phenomena\"], \"\", \"\", FALSE, TRUE);\n$sselect = make_select(\"significance\", \"W\", $reference[\"vtec_significance\"], \"\", \"\", FALSE, TRUE);\n$content .= <<<EOM\n\n<h6 class=\"mb-3\"><i class=\"bi bi-clock\"></i> Select time interval <small class=\"text-muted\">(Times are in UTC.)</small></h6>\n\n<div class=\"table-responsive\">\n<table class=\"table table-sm table-borderless\">\n  <thead>\n    <tr>\n      <th scope=\"col\"></th>\n      <th scope=\"col\">Year</th><th scope=\"col\">Month</th><th scope=\"col\">Day</th>\n      <th scope=\"col\">Hour</th><th scope=\"col\">Minute</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th colspan=\"6\" class=\"bg-light\">\n        <div class=\"form-check\">\n          <input class=\"form-check-input\" type=\"radio\" name=\"timeopt\" value=\"1\" id=\"timeopt1\" checked>\n          <label class=\"form-check-label fw-semibold\" for=\"timeopt1\">\n            <i class=\"bi bi-calendar-range text-primary\"></i> Option 1: WWA events with start time between the specified start and end dates.\n          </label>\n        </div>\n      </th>\n    </tr>\n\n  <tr>\n    <th scope=\"row\" class=\"text-success\"><i class=\"bi bi-play-fill\"></i> Start:</th>\n    <td>{$y1select}</td><td>{$m1select}</td><td>{$d1select}</td>\n    <td>{$h1select}</td><td>{$mi1select}</td></tr>\n  <tr>\n    <th scope=\"row\" class=\"text-danger\"><i class=\"bi bi-stop-fill\"></i> End:</th>\n    <td>{$y2select}</td><td>{$m2select}</td><td>{$d2select}</td>\n    <td>{$h2select}</td><td>{$mi2select}</td></tr>\n<tr>\n    <th colspan=\"6\" class=\"bg-light\">\n      <div class=\"form-check\">\n        <input class=\"form-check-input\" type=\"radio\" name=\"timeopt\" value=\"2\" id=\"timeopt2\">\n        <label class=\"form-check-label fw-semibold\" for=\"timeopt2\">\n          <i class=\"bi bi-clock text-info\"></i> Option 2: WWA events valid at this exact time (UTC)\n        </label>\n      </div>\n    </th>\n</tr>\n    <tr>\n    <th scope=\"row\" class=\"text-info\"><i class=\"bi bi-calendar-check\"></i> Valid:</th>\n    <td>{$y3select}</td><td>{$m3select}</td><td>{$d3select}</td>\n    <td>{$h3select}</td><td>{$mi3select}</td></tr>\n\n</table>\n</div>\n\n<div class=\"mb-3\">\n  <h6 class=\"mb-3\"><i class=\"bi bi-funnel\"></i> Filter Options</h6>\n  <div class=\"form-check mb-2\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"limit0\" value=\"1\" id=\"limit0\">\n    <label class=\"form-check-label\" for=\"limit0\">\n      <i class=\"bi bi-tornado text-danger\"></i> Limit output to Tornado, Severe Thunderstorm, Marine, and Flash Flood Warnings\n    </label>\n  </div>\n  <div class=\"form-check mb-2\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"limit1\" value=\"1\" id=\"limit1\">\n    <label class=\"form-check-label\" for=\"limit1\">\n      <i class=\"bi bi-geo-alt text-warning\"></i> Limit output to only Storm Based Warnings\n    </label>\n  </div>\n  <div class=\"form-check mb-2\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"limit2\" value=\"1\" id=\"limit2\">\n    <label class=\"form-check-label\" for=\"limit2\">\n      <i class=\"bi bi-exclamation-triangle-fill text-danger\"></i> Limit output to only Emergencies [<sup>2</sup>]\n    </label>\n  </div>\n  <div class=\"form-check mb-2\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"limitpds\" value=\"1\" id=\"limitpds\">\n    <label class=\"form-check-label\" for=\"limitpds\">\n      <i class=\"bi bi-shield-fill-exclamation text-danger\"></i> Limit output to only Particularly Dangerous Situations\n    </label>\n  </div>\n\n  <div class=\"mb-3\">\n    <label for=\"fcster\" class=\"form-label\">\n      <i class=\"bi bi-person text-info\"></i> Forecaster Filter (optional)\n    </label>\n    <input type=\"text\" class=\"form-control\" name=\"fcster\" id=\"fcster\" placeholder=\"Enter forecaster name or initials\">\n    <div class=\"form-text\">Case-insensitive search against forecaster field</div>\n  </div>\n\n  <div class=\"form-check mb-2\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"limitps\" value=\"1\" id=\"limitps\">\n    <label class=\"form-check-label\" for=\"limitps\">\n      <i class=\"bi bi-list-check text-primary\"></i> Limit output to selected VTEC phenomena and significance below.\n    </label>\n  </div>\n</div>\n\n<div class=\"row mb-3\">\n<div class=\"col-md-6\">{$pselect}</div>\n<div class=\"col-md-6\">{$sselect}</div>\n</div><!-- ./row -->\n\n<div class=\"form-check mb-4\">\n  <input class=\"form-check-input\" type=\"checkbox\" name=\"addsvs\" value=\"1\" id=\"addsvs\">\n  <label class=\"form-check-label\" for=\"addsvs\">\n    <i class=\"bi bi-plus-circle text-success\"></i> Include polygons/metadata found with any followup (SVS/MWS/etc) statements. [<sup>1</sup>]\n  </label>\n</div>\n\n<div class=\"d-grid gap-2\">\n  <div class=\"btn-group\" role=\"group\">\n    <input type=\"submit\" class=\"btn btn-primary\" value=\"Request Shapefile\" />\n    <input type=\"submit\" class=\"btn btn-outline-primary\" value=\"Request CSV\" />\n    <input type=\"submit\" class=\"btn btn-outline-primary\" value=\"Request Excel\" />\n    <input type=\"submit\" class=\"btn btn-outline-primary\" value=\"Request KML\" />\n  </div>\n  <input type=\"reset\" class=\"btn btn-outline-secondary btn-sm\" />\n</div>\n<div class=\"small text-muted mt-2\">\n  [1] By default, only the issuance polygon is included.<br />\n  [2] In the case of KML output and emergencies, this gets very complex with\n  the download. You likely want to enable \"Include polygons/metadata\" option to\n  get a complete download. Otherwise, you only get emergencies <strong>at issuance</strong>.\n</div>\n</form>\n  </div>\n</div>\n\n<div class=\"card mb-3\">\n  <div class=\"card-header bg-secondary text-white\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-table\"></i> Shapefile DBF Schema\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <p>A discussion of the schema can be found on the <a href=\"/info/datasets/vtec.html\">FAQ Page</a>\n    for this dataset.</p>\n  </div>\n</div>\n\n\n</div><div class=\"col-md-6\">\n<div class=\"card\">\n  <div class=\"card-header bg-success text-white\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-file-earmark-zip\"></i> Pre-generated Zip Files\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <p class=\"mb-3\">These files are same as you could download from the form on the left, just\n    you don't have to wait so long! A script runs at around 2 AM Central Time each\n    day to dump the current year's data. The date stamps with each file denote\n    when they were generated.</p>\n\n<div class=\"table-responsive\">\n<table class=\"table table-sm table-striped\">\n<thead class=\"table-dark\">\n<tr><th>Year</th><th>All</th><th>Limit Tor,Svr,Mar,FF</th>\n<th>Limit Storm Based<br />Tor,Svr,Mar,FF</th></tr>\n</thead>\n<tbody>\n{$table}\n</tbody>\n</table>\n</div>\n  </div>\n</div>\n\n</div><!-- ./col -->\n</div><!-- ./row -->\n\n<div class=\"row\">\n  <div class=\"col-md-6\">\n    <div class=\"card\">\n      <div class=\"card-header bg-light\">\n        <h5 class=\"card-title mb-0\">\n          <i class=\"bi bi-clock-history\"></i> Service Changes\n        </h5>\n      </div>\n      <div class=\"card-body\">\n        <div class=\"alert alert-primary\" role=\"alert\">\n          <strong><i class=\"bi bi-calendar-event\"></i> 24 Apr 2026:</strong>\n          KML export was rewritten and does attempt to do county/zone based\n          warnings as well.  The description data is a bit different now as\n          well.  Can certainly iterate on functionality!\n        </div>\n        <div class=\"alert alert-primary\" role=\"alert\">\n          <strong><i class=\"bi bi-calendar-event\"></i> 10 Apr 2024:</strong> Polygons associated with CANcel VTEC\n          events when the event is still active for other areas have been culled from\n          the database and thus this portal. These were not providing any value and\n          were confusing users.\n        </div>\n        <div class=\"alert alert-info\" role=\"alert\">\n          <strong><i class=\"bi bi-plus-circle\"></i> 12 Mar 2019:</strong> Added <code>UPDATED</code> column to the\n          dataset providing the timestamp of the most recent NWS Text Product for\n          the event.\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"col-md-6\">\n    <div class=\"card\">\n      <div class=\"card-header bg-light\">\n        <h5 class=\"card-title mb-0\">\n          <i class=\"bi bi-archive\"></i> Archive Status\n        </h5>\n      </div>\n      <div class=\"card-body\">\n        <div class=\"table-responsive\">\n          <table class=\"table table-sm\">\n            <thead class=\"table-dark\">\n              <tr><th>Dataset Component</th><th>Start Time</th><th>Notes</th></tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td>Tornado<br />Severe T'storm<br /> Flash Flood<br />Special Marine</td>\n                <td>1 Jan 2002 (Polygons)<br />1 Jan 1986 (Counties)</td>\n                <td>Only the initial polygon is used. Polygon updates in the SVS\n                statements are ignored. The VTEC attributes didn't appear until\n                they became operational.</td>\n              </tr>\n              <tr>\n                <td>All VTEC watch/warn</td>\n                <td>12 Nov 2005</td>\n                <td>Products other than Tornado and Severe Thunderstorm Warnings.</td>\n              </tr>\n              <tr>\n                <td>SVR,TOR Watch by County</td>\n                <td>12 Nov 2005</td>\n                <td></td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n</div>\nEOM;\n$t->content = $content;\n$t->jsextra = '<script type=\"module\" src=\"watchwarn.module.js?v=2\"></script>';\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/request/gis/wpc_mpd.phtml",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 129);\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n\n$t = new MyView();\n$t->title = \"Download WPC Mesoscale Precipitation Discussion Shapefile\";\n$content = <<<EOM\n<div class=\"container-fluid\">\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Mainpage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Weather Prediction Center Mesoscale Precipitation Discussions</li>\n  </ol>\n</nav>\n\n<div class=\"alert alert-info\" role=\"alert\">\n  <div class=\"d-flex\">\n    <div class=\"flex-shrink-0\">\n      <i class=\"bi bi-info-circle\"></i>\n    </div>\n    <div class=\"flex-grow-1 ms-3\">\n      <p class=\"mb-2\">The IEM has a database archive of WPC Mesoscale Precipitation Discussions since fall 2017. This\n      page offers a shapefile download of these.</p>\n      <a href=\"/cgi-bin/request/gis/wpc_mpd.py?help\" class=\"btn btn-outline-primary btn-sm\">\n        <i class=\"bi bi-file-text\"></i> Backend Documentation\n      </a>\n    </div>\n  </div>\n</div>\n\n<div class=\"mb-4\">\n  <h5 class=\"mb-3\"><i class=\"bi bi-link-45deg me-2\"></i>Related Services</h5>\n  <div class=\"d-flex flex-wrap gap-2\">\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"misc.phtml\">\n      <i class=\"bi bi-geo\"></i> NWS Misc Polygons\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"watchwarn.phtml\">\n      <i class=\"bi bi-exclamation-triangle\"></i> NWS VTEC Watch Warning Advisory\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"spc_mcd.phtml\">\n      <i class=\"bi bi-chat-square-text\"></i> SPC Convective Discussions\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"outlooks.phtml\">\n      <i class=\"bi bi-eye\"></i> SPC/WPC Outlooks\n    </a>\n    <a class=\"btn btn-outline-secondary btn-sm\" href=\"spc_watch.phtml\">\n      <i class=\"bi bi-shield-exclamation\"></i> SPC Watch Polygons\n    </a>\n  </div>\n</div>\n\n<form method=\"GET\" action=\"/cgi-bin/request/gis/wpc_mpd.py\" class=\"mb-4\">\n<div class=\"card\">\n  <div class=\"card-header bg-primary text-white\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-calendar-range\"></i> Time Interval for MPD Issuance (UTC)\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"table-responsive\">\n      <table class=\"table table-borderless\">\n        <thead>\n          <tr>\n            <th scope=\"col\"></th>\n            <th scope=\"col\">Year</th>\n            <th scope=\"col\">Month</th>\n            <th scope=\"col\">Day</th>\n            <th scope=\"col\">Hour</th>\n            <th scope=\"col\">Minute</th>\n          </tr>\n        </thead>\n        <tbody>\nEOM;\n$content .= \"<tr>\n    <th scope=\\\"row\\\" class=\\\"text-success\\\">\n      <i class=\\\"bi bi-play-fill\\\"></i> Start:\n    </th>\n    <td>\n     \". yearSelect(2017, date(\"Y\"), \"year1\") .\"\n    </td>\n    <td>\n     \". monthSelect(0,\"month1\") .\"\n    </td>\n    <td>\n     \". daySelect(0, \"day1\") .\"\n    </td>\n    <td>\n     \". gmtHourSelect(0, \"hour1\") .\"\n    </td>\n    <td>\n     \". minuteSelect(0, \"minute1\") .\"\n    </td>\n  </tr>\n\n  <tr>\n    <th scope=\\\"row\\\" class=\\\"text-danger\\\">\n      <i class=\\\"bi bi-stop-fill\\\"></i> End:\n    </th>\n    <td>\n     \". yearSelect(2017, date(\"Y\"), \"year2\") .\"\n    </td>\n    <td>\n     \". monthSelect(date(\"m\"), \"month2\") .\"\n    </td>\n    <td>\n     \". daySelect(date(\"d\"), \"day2\") .\"\n    </td>\n    <td>\n     \". gmtHourSelect(0, \"hour2\") .\"\n    </td>\n    <td>\n     \". minuteSelect(0, \"minute2\") .\"\n    </td>\n  </tr>\n        </tbody>\n      </table>\n    </div>\n  </div>\n</div>\";\n\n$content .= <<<EOM\n\n<div class=\"d-grid gap-2 mb-4\">\n  <button type=\"submit\" class=\"btn btn-primary btn-lg\">\n    <i class=\"bi bi-download\"></i> Download Data\n  </button>\n</div>\n</form>\n\n<div class=\"card mb-4\">\n  <div class=\"card-header bg-secondary text-white\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-table\"></i> Shapefile DBF Schema\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"table-responsive\">\n      <table class=\"table table-sm\">\n        <thead class=\"table-dark\">\n          <tr>\n            <th>Field</th>\n            <th>Type</th>\n            <th>Title</th>\n            <th>Description</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr><td>0</td><td><span class=\"badge bg-info\">String</span></td><td><code>ISSUE</code></td><td>UTC Issuance Timestamp YYYYmmddHHMM</td></tr>\n          <tr><td>1</td><td><span class=\"badge bg-info\">String</span></td><td><code>EXPIRE</code></td><td>UTC MCD Expiration Timestamp</td></tr>\n          <tr><td>2</td><td><span class=\"badge bg-info\">String</span></td><td><code>PROD_ID</code></td><td>IEM Product ID (see below)</td></tr>\n          <tr><td>3</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>YEAR</code></td><td>YEAR of MCD</td></tr>\n          <tr><td>4</td><td><span class=\"badge bg-warning text-dark\">Double</span></td><td><code>NUM</code></td><td>SPC MCD Number</td></tr>\n          <tr><td>6</td><td><span class=\"badge bg-info\">String</span></td><td><code>CONCERN</code></td><td>WPC MPD concerning heading</td></tr>\n        </tbody>\n      </table>\n    </div>\n  </div>\n</div>\n\n<div class=\"card\">\n  <div class=\"card-header bg-light\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-info-circle\"></i> Archive / Usage Notes\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <div class=\"alert alert-primary\" role=\"alert\">\n      <strong><i class=\"bi bi-api\"></i> API Integration:</strong> The <code>PROD_ID</code> DBF field is a string the IEM uses to identify\n      NWS Text products and can be used to call an IEM API to fetch the text of\n      this product: <code>{$EXTERNAL_BASEURL}/api/1/nwstext/{PROD_ID}</code>\n    </div>\n    <div class=\"alert alert-info\" role=\"alert\">\n      <strong><i class=\"bi bi-link-45deg\"></i> SPC Integration:</strong> The <code>YEAR</code> and <code>NUM</code> fields can be used to construct\n      a stable URL into SPC's website like so: <code>https://www.spc.noaa.gov/products/md/{year}/md{NUM:04i}.html</code>\n    </div>\n  </div>\n</div>\n</div>\nEOM;\n\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/grx/asos.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nheader(\"Content-type: text/plain\");\n// Inspiration: http://grlevel3.tornadocentral.com/metars.php?state=IA\n\necho <<<EOM\nTitle: Iowa ASOS Only\nRefresh: 5\nColor: 200 200 255\nIconFile: 1, 18, 32, 2, 31, \"{$EXTERNAL_BASEURL}/request/grx/windbarbs.png\" \nIconFile: 2, 15, 15, 8, 8, \"{$EXTERNAL_BASEURL}/request/grx/cloudcover.png\" \nFont: 1, 11, 1, \"Courier New\"\n\nEOM;\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/mlib.php\";\n\nfunction s2icon($s)  // skipcq\n{\n    if ($s < 2.5) return \"1,21\";\n    if ($s < 5) return \"1,1\";\n    if ($s < 10) return \"1,2\";\n    if ($s < 15) return \"1,3\";\n    if ($s < 20) return \"1,4\";\n    if ($s < 25) return \"1,5\";\n    if ($s < 30) return \"1,6\";\n    if ($s < 35) return \"1,7\";\n\n    if ($s < 40) return \"1,8\";\n    if ($s < 45) return \"1,9\";\n    if ($s < 50) return \"1,10\";\n    if ($s < 55) return \"1,11\";\n    if ($s < 60) return \"1,12\";\n    if ($s < 65) return \"1,13\";\n    if ($s < 70) return \"1,14\";\n\n    if ($s < 75) return \"1,15\";\n    if ($s < 80) return \"1,16\";\n    if ($s < 85) return \"1,17\";\n    if ($s < 80) return \"1,18\";\n    if ($s < 100) return \"1,19\";\n    return \"1,20\";\n}\n\n$now = time();\n$arr = array(\n    \"network\" => \"IA_ASOS\",\n);\n$jobj = iemws_json(\"currents.json\", $arr);\n\nforeach ($jobj[\"data\"] as $bogus => $iemob) {\n    $mydata = $iemob;\n    $tdiff = $now - strtotime($mydata[\"local_valid\"]);\n    if ($tdiff > 3600) continue;\n    if ($mydata[\"sknt\"] < 2.5) $mydata[\"drct\"] = 0;\n\n    echo \"Object: \" . $mydata[\"lat\"] . \",\" . $mydata[\"lon\"] . \"\n  Threshold: 999 \n  Icon: 0,0,\" . $mydata[\"drct\"] . \",\" . s2icon(floatval($mydata[\"sknt\"])) . \"\n  Icon: 0,0,000,2,5,\\\"\" . $mydata[\"name\"] . \" @ \" . date(\"d M h:i A\", strtotime($mydata['local_valid'])) . \"\\\\nTemp: \" . $mydata[\"tmpf\"] . \"F (Dew: \" . $mydata[\"dwpf\"] . \"F)\\\\nWind: \" . drct2txt($mydata[\"drct\"]) . \" @ \" . intval($mydata[\"sknt\"]) . \"kt\\\\n\\\" \n  Threshold: 150\n  Text:  -17, 13, 1, \\\" \" . myround($mydata[\"tmpf\"], 0) . \" \\\" \n  Text:  -17, -13, 1, \\\" \" . myround($mydata[\"dwpf\"], 0) . \" \\\" \n End: \n\n\";\n}\n"
  },
  {
    "path": "htdocs/request/grx/iadot_trucks.py",
    "content": "\"\"\"implemented in pylib/iemweb/request/grx/iadot_trucks.py\"\"\"\n\nfrom iemweb.request.grx.iadot_trucks import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/request/grx/index.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Gibson Ridge Placefiles\";\n$t->content = <<<EOM\n\n<h3>IEM Data in Gibson Ridge Placefile format</h3>\n\n<p><a href=\"http://www.grlevelx.com\">Gibson Ridge Software</a> develops \na very popular set of RADAR data visualization programs.  These placefiles\ncan be freely used for educational use.  Use of the non government data \n\"on-air\" by media is strictly not allowed without permission of the \nprovider.</p>\n\n<div class=\"row\">\n<div class=\"card card-body\">\n<div class=\"col-sm-12\">\n\n<h3>Placefile Range Ring Generator</h3>\n<form method=\"GET\" action=\"/cgi-bin/request/grx_rings.py\" name=\"rings\">\n\n<p>Contributed by Zach Hiris, this generates a static placefile with range\nrings specified at the given distance for a point.\n<a class=\"btn btn-secondary\" href=\"/cgi-bin/request/grx_rings.py?help\">\n<i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend documentation</a> for those wishing to\nuse this service in their own applications.\n</p>\n\n<div class=\"row\">\n<div class=\"col-sm-4\">\n<strong>Location Label:</strong><br />\n<input type=\"text\" name=\"loc\" value=\"My Location\">\n</div>\n<div class=\"col-sm-4\">\n<strong>Latitude (degrees N)</strong>\n<input type=\"text\" name=\"lat\" value=\"42.00\">\n</div>\n<div class=\"col-sm-4\">\n<strong>Longitude (degrees E)</strong>\n<input type=\"text\" name=\"lon\" value=\"-94.33\">\n</div>\n</div>\n\n\n<table class=\"table\">\n<thead><tr><th>Ring</th><th>Miles</th><th>Label (use \\\\n for line feed)</th><th>Red (0-255)</th><th>Green (0-255)</th>\n<th>Blue (0-255)</th><th>Alpha (0-255)</th></tr></thead>\n\n<tbody>\n<tr>\n  <td>1</td>\n  <td><input type=\"text\" size=\"5\" maxlength=\"5\" name=\"m0\" value=\"100\"></td>\n  <td><input type=\"text\" size=\"40\" name=\"t0\" value=\"\"></td>\n  <td><input type=\"text\" size=\"5\" maxlength=\"3\" name=\"r0\" value=\"255\"></td>\n  <td><input type=\"text\" size=\"5\" maxlength=\"3\" name=\"g0\" value=\"255\"></td>\n  <td><input type=\"text\" size=\"5\" maxlength=\"3\" name=\"b0\" value=\"0\"></td>\n  <td><input type=\"text\" size=\"5\" maxlength=\"3\" name=\"a0\" value=\"255\"></td>\n  </tr>\n<tr>\n  <td>2</td>\n  <td><input type=\"text\" size=\"5\" maxlength=\"5\" name=\"m1\" value=\"0\"> (0 disables)</td>\n  <td><input type=\"text\" size=\"40\" name=\"t1\" value=\"\"></td>\n  <td><input type=\"text\" size=\"5\" maxlength=\"3\" name=\"r1\" value=\"255\"></td>\n  <td><input type=\"text\" size=\"5\" maxlength=\"3\" name=\"g1\" value=\"255\"></td>\n  <td><input type=\"text\" size=\"5\" maxlength=\"3\" name=\"b1\" value=\"0\"></td>\n  <td><input type=\"text\" size=\"5\" maxlength=\"3\" name=\"a1\" value=\"255\"></td>\n  </tr>\n<tr>\n  <td>3</td>\n  <td><input type=\"text\" size=\"5\" maxlength=\"5\" name=\"m2\" value=\"0\"> (0 disables)</td>\n  <td><input type=\"text\" size=\"40\" name=\"t2\" value=\"\"></td>\n  <td><input type=\"text\" size=\"5\" maxlength=\"3\" name=\"r2\" value=\"255\"></td>\n  <td><input type=\"text\" size=\"5\" maxlength=\"3\" name=\"g2\" value=\"255\"></td>\n  <td><input type=\"text\" size=\"5\" maxlength=\"3\" name=\"b2\" value=\"0\"></td>\n  <td><input type=\"text\" size=\"5\" maxlength=\"3\" name=\"a2\" value=\"255\"></td>\n  </tr>\n\n</table>\n</table>\n\n<p>Download Filename: <input type=\"text\" name=\"fn\" value=\"placefile_rings.txt\"></p>\n\n<input type=\"submit\" value=\"Generate Placefile\">\n</form>\n</div>\n</div>\n\n<p>\n<table class=\"table table-striped\">\n        <thead><tr><th>v3 Support</th><th>Title</th><th>Description</th></tr></thead>\n<tr>\n  <td>No</td>\n  <th><a href=\"iadot_trucks.txt\">Iowa DOT Truck Locations</a></th>\n  <td>{$EXTERNAL_BASEURL}/request/grx/iadot_trucks.txt<br />\n  <i>Notes:</i>  Locations of Iowa DOT Snow Plows.</td>\n</tr>\n<tr>\n  <td>No</td>\n  <th><a href=\"roadcond.php\">Iowa Winter Road Conditions</a></th>\n  <td>{$EXTERNAL_BASEURL}/request/grx/roadcond.php<br />\n  <i>Notes:</i>  Observations provided by the Iowa State Patrol.</td>\n</tr>\n<tr>\n  <td>No</td>\n  <th><a href=\"asos.php\">Iowa ASOS Data</a></th>\n  <td>{$EXTERNAL_BASEURL}/request/grx/asos.php<br />\n  <i>Notes:</i>  none at this time</td>\n</tr>\n<tr>\n  <td>No</td>\n  <th><a href=\"rwis.php\">RWIS Data</a></th>\n  <td>{$EXTERNAL_BASEURL}/request/grx/rwis.php?network=IA_RWIS<br />\n  <i>Notes:</i> Provide the proper network code to get other state's\n  RWIS data.  Not all states openly report their RWIS information!</td>\n</tr>\n<tr>\n  <td>No</td>\n  <th><a href=\"webcams.php?overview\">IEM Webcam Overview</a></th>\n  <td>{$EXTERNAL_BASEURL}/request/grx/webcams.php?overview<br />\n  <i>Notes:</i>  This layer provides the locations and direction\nthat the webcam is looking.  <b>This layer should be used along with the\nindividual network layers...</b> There aren't bandwidth concerns with this \nlayer.</td>\n</tr>\n<tr>\n  <td>No</td>\n  <th><a href=\"webcams.php?network=KCCI\">KCCI-TV Webcams</a></th>\n  <td>{$EXTERNAL_BASEURL}/request/grx/webcams.php?network=KCCI<br />\n  <i>Notes:</i>  You will not want to use this on a low bandwidth \nconnection as all of the webcam images are loaded every 1-5 minutes.  Please\nonly use this layer when you are using the data!  Thanks...</td>\n</tr>\n<tr>\n  <td>No</td>\n  <th><a href=\"webcams.php?network=KCRG\">KCRG-TV Webcams</a></th>\n  <td>{$EXTERNAL_BASEURL}/request/grx/webcams.php?network=KCRG<br />\n  <i>Notes:</i>  You will not want to use this on a low bandwidth\nconnection as all of the webcam images are loaded every 1-5 minutes.  Please\nonly use this layer when you are using the data!  Thanks...</td>\n</tr>\n\n<tr>\n  <td>Yes</td>\n  <th><a href=\"l3attr.txt\">NEXRAD Level3 Attributes</a></th>\n  <td>{$EXTERNAL_BASEURL}/request/grx/l3attr.txt<br />\n  <i>Notes:</i> This is a placefile of the level3 NEXRAD storm attributes. This\nmay be useful when looking at level2 data.  You can optionally pass a nexrad\n        3 character ID to limit the display to a certain NEXRAD. ie)\n        <code>l3attr.txt?nexrad=DMX</code>.  Otherwise, the service will utilize the\n        longitude and latitude passed to the server by the Gibson Ridge Client\n        to limit the displayed attributes.\n\n    <br /><strong>Additional Query Parameters</strong>: You can provide additional\n    URL parameters to limit the returned attributes. For example,\n    <code>l3attr.txt?tvs</code> will only return attrs with TVS flagged.\n    <code>l3attr.txt?poh=50</code> will only return attrs with a probability of\n    hail at least of 50%.  The third option is <code>l3attr.txt?meso=4</code>\n    will return attrs with at least a MESO value of 4.  A fourth option is to\n    limit the max_size of hail via <code>l3attr.txt?max_size=1</code>.\n    You can combine these\n    all in any order if you want along with the <code>nexrad</code> value.</td>\n</tr>\n\n<tr>\n  <td>No</td>\n  <th><a href=\"watch_by_county.php\">SPC Watch by County</a></th>\n  <td>{$EXTERNAL_BASEURL}/request/grx/watch_by_county.php?<br />\n  <i>Notes:</i> This is a placefile of the union of counties within a\n  Storm Prediction Center watch.  You can optionally pass an option\n  <code>alpha=255</code> to set the alpha value for the used color.  This value\n  is a number between 0 and 255. The\n  service uses the official NWS colors for Severe Thunderstorm Watch (#DB7093)\n  and Tornado Watch (yellow).</td>\n</tr>\n\n<tr>\n  <td>No</td>\n  <th><a href=\"time_mot_loc.txt\">NWS Warning TIME...MOT...LOC</a> (TOR)</th>\n  <td>{$EXTERNAL_BASEURL}/request/grx/time_mot_loc.txt?<br />\n  <i>Notes:</i> This provides lines indicating the path of travel for\n  tornado warnings based on the coding within the warning.</td>\n</tr>\n\n<tr>\n  <td>No</td>\n  <th><a href=\"time_mot_loc.txt?all\">NWS Warning TIME...MOT...LOC</a> (TOR+SVR)</th>\n  <td>{$EXTERNAL_BASEURL}/request/grx/time_mot_loc.txt?all<br />\n  <i>Notes:</i> This provides lines indicating the path of travel for\n  tornado and severe thunderstorm warnings based on the coding within the warning.</td>\n</tr>\n\n<tr>\n  <td>No</td>\n  <th><a href=\"time_mot_loc.txt?all&amp;valid=2020-05-25T00:00Z\">NWS Warning TIME...MOT...LOC (Historical)</a> (TOR+SVR)</th>\n  <td>{$EXTERNAL_BASEURL}/request/grx/time_mot_loc.txt?all&valid=2020-05-25T00:00Z<br />\n  <i>Notes:</i> Provides any TIME...MOT...LOC tracks for a four hour window of\n  time around the given UTC timestamp.  This uses the Gibson Ridge\n  <code>TimeRange</code> option to sync the data with RADAR display.  You'd have\n  to manually add this placefile for each four hour window of time you have interest\n  in!</td>\n</tr>\n\n</table>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/grx/l3attr.py",
    "content": "\"\"\"implemented in pylib/iemweb/request/grx/l3attr.py\"\"\"\n\nfrom iemweb.request.grx.l3attr import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/request/grx/roadcond.php",
    "content": "<?php\nheader(\"Content-type: text/plain\");\n\n/*\n * Iowa DOT provided state road conditions\n */\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/memcache.php\";\n\n// Try to get it from memcached\n$memcache = MemcacheSingleton::getInstance();\n$val = $memcache->get(\"/request/grx/roadcond.php\");\nif ($val) {\n    die($val);\n}\nob_start();\n\nrequire_once \"../../../include/database.inc.php\";\n$conn = iemdb('postgis');\n\n$colors = array(\n    0 => \"255 255 255\", // normal\n    76 => \"255 255 255\",\n\n    1 => \"0 204 0\", // wet\n\n    3 => \"240 240 0\", // Frost\n    7 => \"240 240 0\",\n    11 => \"240 240 0\",\n\n    15 => \"255 197 197\", // Partially Covered\n    27 => \"255 197 197\",\n    56 => \"255 197 197\",\n\n    19 => \"254 51 153\", // Mostly Covered\n    31 => \"254 51 153\",\n    60 => \"254 51 153\",\n\n    23 => \"181 0 181\", // Completely Covered\n    35 => \"181 0 181\",\n    64 => \"181 0 181\",\n\n    39 => \"153 255 255\", // PC Snow\n\n    43 => \"0 153 254\", // MC Snow\n\n    47 => \"0 0 158\", // CC Snow\n\n    51 => \"232 95 1\", // Travel Advisory\n\n    86 => \"125 0 0\" // Closed\n);\n\n\necho \"Threshold: 999\nTitle: IEM Delivered Iowa Road Conditions\nRefresh: 5\n\";\n\n$rs = pg_query($conn, \"SELECT ST_astext(ST_transform(simple_geom,4326)) as t, \". \n        \"* from roads_current r, roads_base b, roads_conditions c \".\n        \"WHERE r.segid = b.segid and r.cond_code = c.code \".\n        \"and b.geom is not null ORDER by type DESC\");\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    $meat = str_replace(\"MULTILINESTRING((\", \"\", $row[\"t\"]);\n    $meat = str_replace(\"))\", \"\", $meat);\n    $segments = explode(\"),(\", $meat);\n    $valid = strtotime(substr($row[\"valid\"], 0, 16));\n    $color = \"255 255 255\";\n    if (array_key_exists($row[\"cond_code\"], $colors)) {\n        $color = $colors[$row[\"cond_code\"]];\n    }\n    echo \"Color: {$color}\\n\";\n    foreach ($segments as $q => $seg) {\n        echo \"Line: 4, 0, \" . $row[\"major\"] . \" :: \" . $row[\"minor\"]  . \"\\\\nReport: \" . $row[\"raw\"] . \"\\\\nTime: \" . date('j M Y g:i A', $valid) . \"\\n\";\n        $tokens = explode(\",\", $seg);\n        foreach ($tokens as $p => $s) {\n            $t = explode(\" \", $s);\n            echo sprintf(\"  %.5f,%.5f\", $t[1], $t[0]) . \"\\n\";\n        }\n        echo \"End:\\n\";\n    }\n}\n\n$memcache->set(\"/request/grx/roadcond.php\", ob_get_contents(), 300);\nob_end_flush();\n"
  },
  {
    "path": "htdocs/request/grx/rwis.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/mlib.php\";\nrequire_once \"../../../include/forms.php\";\n\n$network = get_str404(\"network\", \"IA_RWIS\");\n\nheader(\"Content-type: text/plain\");\n// Generate placefiles, whatever\n// Inspiration: http://grlevel3.tornadocentral.com/metars.php?state=IA\n\necho <<<EOM\nTitle: {$network}\nRefresh: 5\nColor: 200 200 255\nIconFile: 1, 18, 32, 2, 31, \"{$EXTERNAL_BASEURL}/request/grx/windbarbs.png\"\nIconFile: 2, 15, 15, 8, 8, \"{$EXTERNAL_BASEURL}/request/grx/cloudcover.png\"\nIconFile: 3, 25, 25, 12, 12, \"{$EXTERNAL_BASEURL}/request/grx/rwis_cr.png\"\nFont: 1, 11, 1, \"Courier New\"\n\nEOM;\n\nfunction pcolor($tmpf)\n{\n    if ($tmpf == \"M\") return \"1\";\n    if ($tmpf >= 35) return \"2\";\n    if ($tmpf >= 34) return \"3\";\n    if ($tmpf >= 33) return \"4\";\n    if ($tmpf >= 32) return \"5\";\n    if ($tmpf >= 31) return \"6\";\n    if ($tmpf >= 30) return \"7\";\n    if ($tmpf < 30) return \"8\";\n    return \"1\";\n}\n\nfunction s2icon($s)  // skipcq\n{\n    if ($s < 2.5) return \"1,21\";\n    if ($s < 5) return \"1,1\";\n    if ($s < 10) return \"1,2\";\n    if ($s < 15) return \"1,3\";\n    if ($s < 20) return \"1,4\";\n    if ($s < 25) return \"1,5\";\n    if ($s < 30) return \"1,6\";\n    if ($s < 35) return \"1,7\";\n\n    if ($s < 40) return \"1,8\";\n    if ($s < 45) return \"1,9\";\n    if ($s < 50) return \"1,10\";\n    if ($s < 55) return \"1,11\";\n    if ($s < 60) return \"1,12\";\n    if ($s < 65) return \"1,13\";\n    if ($s < 70) return \"1,14\";\n\n    if ($s < 75) return \"1,15\";\n    if ($s < 80) return \"1,16\";\n    if ($s < 85) return \"1,17\";\n    if ($s < 80) return \"1,18\";\n    if ($s < 100) return \"1,19\";\n    return \"1,20\";\n}\n$arr = array(\n    \"network\" => $network,\n);\n$jobj = iemws_json(\"currents.json\", $arr);\n\n$now = time();\n\nforeach ($jobj[\"data\"] as $bogus => $iemob) {\n    $mydata = $iemob;\n    $tdiff = $now - strtotime($mydata[\"local_valid\"]);\n    if ($tdiff > 3600) continue;\n    if ($mydata[\"sknt\"] < 2.5) $mydata[\"drct\"] = 0;\n\n    /* Compute average pavement temperature */\n    $total = 0;\n    $cnt = 0;\n    for ($i = 0; $i < 4; $i++) {\n        if ($mydata[\"tsf$i\"] > -30 && $mydata[\"tsf$i\"] < 150) {\n            $cnt += 1;\n            $total += $mydata[\"tsf$i\"];\n        }\n    }\n    if ($cnt == 0) {\n        $mydata[\"pave_avg\"] = \"M\";\n    } else {\n        $mydata[\"pave_avg\"] = $total / floatval($cnt);\n    }\n\n    /* Condition Text */\n    $condTxt = sprintf(\n        \"Sensor 1: [%.1f F] %s\\\\nSensor 2: [%.1f F] %s\\\\n\".\n        \"Sensor 3: [%.1f F] %s\\\\nSensor 4: [%.1f F] %s\\\\nAvg: [%s F]\",\n        $mydata[\"tsf0\"],\n        $mydata[\"scond0\"],\n        $mydata[\"tsf1\"],\n        $mydata[\"scond1\"],\n        $mydata[\"tsf2\"],\n        $mydata[\"scond2\"],\n        $mydata[\"tsf3\"],\n        $mydata[\"scond3\"],\n        $mydata[\"pave_avg\"]\n    );\n\n    echo \"Object: \" . $mydata[\"lat\"] . \",\" . $mydata[\"lon\"] . \"\n  Threshold: 999\n  Icon: 0,0,000,3,\" . pcolor($mydata[\"pave_avg\"]) . \"\n  Icon: 0,0,\" . $mydata[\"drct\"] . \",\" . s2icon(floatval($mydata[\"sknt\"])) . \"\n  Icon: 0,0,000,2,13,\\\"\" . $mydata[\"name\"] . \" @ \" . date(\"d M h:i A\", strtotime($mydata['local_valid'])) . \"\\\\nTemp: {$mydata['tmpf']}F (Dew: \" . $mydata[\"dwpf\"] . \"F)\\\\nVsby: {$mydata['vsby']}\\\\nWind: \" . drct2txt($mydata[\"drct\"]) . \" @ \" . intval($mydata[\"sknt\"]) . \"kt\\\\n{$condTxt}\\\"\n  Threshold: 150\n  Text:  -17, 13, 1, \\\" \" . myround($mydata[\"tmpf\"], 0) . \" \\\"\n  Text:  -17, -13, 1, \\\" \" . myround($mydata[\"dwpf\"], 0) . \" \\\"\n End:\n\n\";\n}\n"
  },
  {
    "path": "htdocs/request/grx/sbw.php",
    "content": "<?php\n/*\n * Generate a placefile of SBWs valid at a given time for a given WFO\n */\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/reference.php\";\nrequire_once \"../../../include/forms.php\";\n$connect = iemdb(\"postgis\");\npg_query($connect, \"SET TIME ZONE 'UTC'\");\n\n$year = get_int404(\"year\", 2008);\n$month = get_int404(\"month\", 1);\n$day = get_int404(\"day\", 8);\n$hour = get_int404(\"hour\", 10);\n$minute = get_int404(\"minute\", 0);\n$ts = gmmktime($hour, $minute, 0, $month, $day, $year);\n$wfo = substr(get_str404(\"wfo\", \"MPX\"), 0, 3);\n\n$stname = iem_pg_prepare($connect, \"SELECT *, ST_AsText(geom) as g, \".\n           \"round(ST_area(ST_transform(geom,9311)) / 1000000.0) as psize \".\n           \"from sbw WHERE vtec_year = $3 and \".\n           \"wfo = $1 and issue <= $2 and expire > $2 \".\n           \"and status = 'NEW'\");\n\n$result = pg_execute(\n    $connect,\n    $stname,\n    array($wfo, gmdate(\"Y-m-d H:i\", $ts), $year)\n);\n\n$fp = sprintf(\"%s-%s.txt\", $wfo, gmdate(\"YmdHi\", $ts));\nheader(\"Content-type: application/octet-stream\");\nheader(\"Content-Disposition: attachment; filename=$fp\");\necho \"Refresh: 99999\\n\";\necho \"Threshold: 999\\n\";\necho sprintf(\"Title: $wfo SBW @ %s UTC\\n\", gmdate(\"d M Y H:i\", $ts));\n\nwhile ($row = pg_fetch_assoc($result)) {\n    $geom = $row[\"g\"];\n    $geom = str_replace(\"MULTIPOLYGON(((\", \"\", $geom);\n    $geom = str_replace(\")))\", \"\", $geom);\n    $tokens = preg_split(\"/,/\", $geom);\n    $phenomena = $row['phenomena'];\n    $significance = $row['significance'];\n    $issue = strtotime($row[\"issue\"]);\n    $expire = strtotime($row[\"expire\"]);\n    $lbl = $reference[\"vtec_phenomena\"][$phenomena] . \" \" . $reference[\"vtec_significance\"][$significance] . \" \" .\n        $row[\"eventid\"] . \"\\\\nIssue: \" . gmdate(\"Hi\", $issue) . \"Z Expire: \" .\n        gmdate(\"Hi\", $expire) . \"Z\";\n    echo \"\\n;\";\n\n    if ($row[\"phenomena\"] == \"SV\") {\n        $c = \"255 255 0 255\";\n    } else {\n        $c = \"255 0 0 255\";\n    }\n    echo \"Color: $c\\n\";\n    echo \"Line: 3, 0, \\\"$lbl\\\"\\n\";\n    $first = true;\n    foreach ($tokens as $token) {\n\n        $parts = preg_split(\"/ /\", $token);\n        $extra = \"\";\n        if ($first) {\n            $extra = $c;\n            $first = false;\n        }\n        echo sprintf(\"%.4f, %.4f\\n\", $parts[1], $parts[0]);\n    }\n    echo \"End:\\n\\n\";\n}\n"
  },
  {
    "path": "htdocs/request/grx/time_mot_loc.py",
    "content": "\"\"\"implemented in pylib/iemweb/request/grx/time_mot_loc.py\"\"\"\n\nfrom iemweb.request.grx.time_mot_loc import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/request/grx/vtec.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/reference.php\";\nrequire_once \"../../../include/forms.php\";\n$connect = iemdb(\"postgis\");\n\n$year = get_int404(\"year\", 2006);\nif ($year < 2002) die(\"invalid year specified!\");\n\n$wfo = substr(get_str404(\"wfo\", \"MPX\"), 0, 4);\nif (strlen($wfo) > 3) {\n    $wfo = substr($wfo, 1, 3);\n}\n$eventid = get_int404(\"eventid\", 103);\n$phenomena = substr(get_str404(\"phenomena\", \"SV\"), 0, 2);\n$significance = substr(get_str404(\"significance\", \"W\"), 0, 1);\n\n$stname = iem_pg_prepare($connect, \"SELECT eventid, phenomena, \".\n        \"significance, ST_AsText(geom) as g \".\n        \"from sbw \".\n        \"WHERE vtec_year = $5 and wfo = $1 and phenomena = $2 and \".\n        \"eventid = $3 and significance = $4 \".\n        \"and status = 'NEW'\");\n$result = pg_execute(\n    $connect,\n    $stname,\n    array($wfo, $phenomena, $eventid, $significance, $year)\n);\nif (pg_num_rows($result) <= 0) {\n    $stname = iem_pg_prepare($connect, \"SELECT eventid, phenomena, \".\n        \"significance, ST_astext(u.geom) as g \".\n        \"from warnings w JOIN ugcs u on (u.gid = w.gid) \".\n        \"WHERE w.vtec_year = $5 and w.wfo = $1 and phenomena = $2 and \".\n        \"eventid = $3 and significance = $4 \");\n\n    $result = pg_execute(\n        $connect,\n        $stname,\n        array($wfo, $phenomena, $eventid, $significance, $year)\n    );\n}\n$fp = sprintf(\"%s-%s-%s-%s.txt\", $wfo, $phenomena, $significance, $eventid);\n\nheader(\"Content-type: application/octet-stream\");\nheader(\"Content-Disposition: attachment; filename=$fp\");\n\necho \"Refresh: 99999\\n\";\necho \"Threshold: 999\\n\";\necho \"Title: VTEC $wfo {$phenomena}.{$significance} $eventid\\n\";\n\nwhile ($row = pg_fetch_assoc($result)) {\n    $geom = $row[\"g\"];\n    $geom = str_replace(\"MULTIPOLYGON(((\", \"\", $geom);\n    $geom = str_replace(\")))\", \"\", $geom);\n    $tokens = preg_split(\"/,/\", $geom);\n    $phenomena = $row['phenomena'];\n    $significance = $row['significance'];\n    echo \"\\n;\" . $reference[\"vtec_phenomena\"][$phenomena] . \" \" . $reference[\"vtec_significance\"][$significance] . \" \" . $row[\"eventid\"] . \"\\n\";\n\n    if ($row[\"phenomena\"] == \"SV\") {\n        $c = \"255 255 0 255\";\n    } else {\n        $c = \"255 0 0 255\";\n    }\n    echo \"Color: $c\\n\";\n    echo \"Line: 3, 0, \\\"\\\"\\n\";\n    $first = true;\n    foreach ($tokens as $token) {\n\n        $parts = preg_split(\"/ /\", $token);\n        $extra = \"\";\n        if ($first) {\n            $extra = $c;\n            $first = false;\n        }\n        echo sprintf(\"%.4f, %.4f\\n\", $parts[1], $parts[0]);\n    }\n    echo \"End:\\n\\n\";\n}\n"
  },
  {
    "path": "htdocs/request/grx/watch_by_county.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/forms.php\";\n$alpha = get_int404(\"alpha\", 255);\n\n$dbconn = iemdb(\"postgis\");\n\nheader(\"Content-type: text/plain\");\n\n$rs = pg_query($dbconn, \"select phenomena, eventid, \n         ST_asText(ST_Multi(ST_buffer(ST_collect( u.simple_geom ),0))) as g \n         from warnings w JOIN ugcs u on (u.gid = w.gid) \n         WHERE significance = 'A' and phenomena IN ('TO','SV') and \n         issue <= now() and expire > now() \n         and substr(w.ugc,3,1) = 'C' GROUP by phenomena, eventid \n         ORDER by phenomena ASC\");\n\necho \"Refresh: 10\\n\";\necho \"Threshold: 999\\n\";\necho \"Title: SPC Watch by County\\n\";\n\nwhile ($row = pg_fetch_assoc($rs)) {\n    $geom = $row[\"g\"];\n    if (is_null($geom)) {\n        continue;\n    }\n    //echo $geom .\"\\n\";\n    $geom = str_replace(\"MULTIPOLYGON(((\", \"\", $geom);\n    $geom = str_replace(\")))\", \"\", $geom);\n    $tokens3 = preg_split(\"/\\)\\),\\(\\(/\", $geom);\n    foreach ($tokens3 as $token3) {\n        $tokens = preg_split(\"/\\),\\(/\", $token3);\n        foreach ($tokens as $token) {\n            if ($row[\"phenomena\"] == \"TO\") {\n                $c = \", 255, 255, 0, {$alpha}\";\n            } else {\n                $c = \", 219, 112, 147, {$alpha}\";\n            }\n            echo \"\\n;\" . $row[\"phenomena\"] . \" Watch Number \" . $row[\"eventid\"] . \"\\n\";\n            echo \"Polygon:\\n\";\n            $first = true;\n            $tokens2 = preg_split(\"/,/\", $token);\n            foreach ($tokens2 as $token2) {\n\n                $parts = preg_split(\"/ /\", $token2);\n                $extra = \"\";\n                if ($first) {\n                    $extra = $c;\n                    $first = false;\n                }\n                echo sprintf(\"%s, %s%s\\n\", $parts[1], $parts[0], $extra);\n            }\n            echo \"End:\\n\\n\";\n        }\n    }\n}\n"
  },
  {
    "path": "htdocs/request/grx/webcams.php",
    "content": "<?php\n/* Generate GR placefile of webcam stuff */\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/cameras.inc.php\";\nrequire_once \"../../../include/iemprop.php\";\nrequire_once \"../../../include/forms.php\";\n$camera_refresh = get_iemprop(\"webcam.interval\");\n$network = get_str404(\"network\", \"KCRG\");\n$overview = array_key_exists(\"overview\", $_GET);\n\n$thres = 999;\n$title = \"IEM Webcam Overview\";\nif (!$overview) {\n    $thres = 45;\n    $title = \"$network webcams via IEM\";\n}\nheader(\"Content-type: text/plain\");\n$r = floatval($camera_refresh) / 60;\necho \"Refresh: $r\nThreshold: $thres\nTitle: $title\nIconFile: 1, 15, 25, 8, 25, \\\"http://www.spotternetwork.org/icon/arrows.png\\\"\n\";\n\n$conn = iemdb(\"mesosite\");\n\n$sql = \"SELECT * from camera_current \".\n    \"WHERE valid > (now() - '30 minutes'::interval) and \".\n    \"cam != 'KCRG-014' and cam !~* 'IDOT'\";\n$s2 = \"\";\n$s3 = \"\";\n$q = 2;\n$vectors = array(\n    \"E\" => array(\"ax\" => 320, \"ay\" => 120),\n    \"S\" => array(\"ax\" => 160, \"ay\" => 240),\n    \"W\" => array(\"ax\" => 0, \"ay\" => 120),\n    \"N\" => array(\"ax\" => 160, \"ay\" => 0)\n);\n\n$rs = pg_query($conn, $sql);\nwhile ($row = pg_fetch_assoc($rs)) {\n    $key = $row[\"cam\"];\n    if (!$overview && $cameras[$key][\"network\"] != $network) {\n        continue;\n    }\n    $drct = $row[\"drct\"];\n    if ($drct >= 315 || $drct < 45) {\n        $v = $vectors[\"N\"];\n    } else if ($drct >= 45 && $drct < 135) {\n        $v = $vectors[\"E\"];\n    } else if ($drct >= 135 && $drct < 225) {\n        $v = $vectors[\"S\"];\n    } else {\n        $v = $vectors[\"W\"];\n    }\n\n    if (!$overview)\n        echo sprintf(\"IconFile: %s, 320, 240, %.0f, %.0f,\\\"{$EXTERNAL_BASEURL}/data/camera/stills/%s.jpg\\\"\\n\", $q, $v[\"ax\"], $v[\"ay\"], $key);\n    if ($overview)\n        $s2 .= sprintf(\"Icon: %.4f,%.4f,%s,1,7,\\\"[%s] %s\\\"\\n\", $cameras[$key]['lat'], $cameras[$key]['lon'], $drct, $key, $cameras[$key][\"name\"]);\n    if (!$overview)\n        $s3 .= sprintf(\"Icon: %.4f,%.4f,000,%s,1\\n\", $cameras[$key]['lat'], $cameras[$key]['lon'], $q);\n    $q += 1;\n}\necho $s2;\nif (!$overview)\n    echo $s3;\n"
  },
  {
    "path": "htdocs/request/hml.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/iemprop.php\";\nrequire_once \"../../include/database.inc.php\";\n\ndefine(\"IEM_APPID\", 164);\n$t = new MyView();\n$t->iemss = True;\n$t->title = \"Hydrological Markup Language (HML) Processed Data Download\";\n\n$bogus = 0;\n$y1select = yearSelect(2012, date(\"Y\"), \"year1\");\n$m1select = monthSelect(1, \"month1\");\n$d1select = daySelect(1, \"day1\");\n\n$y2select = yearSelect(2012, date(\"Y\"), \"year2\");\n$m2select = monthSelect(date(\"m\"), \"month2\");\n$d2select = daySelect(date(\"d\"), \"day2\");\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/nws/\">NWS Mainpage</a></li>\n <li class=\"active\">Download HML Processed data</li>\n</ol>\n\n<p>The IEM attempts a high fidelity processing and archival of river gauge\nobservations and forecasts found within the NWS HML Products.</p>\n\n<p><a href=\"/cgi-bin/request/hml.py?help\" class=\"btn btn-secondary\"><i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend documentation</a>\nexists for those wishing to script against this service. The HML archive dates back to 2012.</p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/hml.py\" name=\"dl\" target=\"_blank\">\n<div class=\"form2url\"></div>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n\n<p>\n<h3>1. Select Station(s):</h3>\n<div id=\"iemss\" data-network=\"HAS_HML\" data-name=\"station\" data-supports-all=\"0\"></div>\n</p>\n\n<p>\n<h3>2. Select Data Type:</h3>\n<input type=\"radio\" name=\"kind\" value=\"obs\" checked id=\"obs\">\n<label for=\"obs\">Observations</label>\n<br />\n<input type=\"radio\" name=\"kind\" value=\"forecasts\" id=\"forecasts\">\n<label for=\"forecasts\">Forecasts</label>: Note that you can only request\nforecast data for a single UTC year at a time.\n</p>\n\n</div>\n<div class=\"col-md-6\">\n\n<h3>3. Timezone of Observations:</h3>\n<i>The timestamps used in the downloaded file will be set in the\ntimezone you specify.</i>\n<SELECT name=\"tz\">\n    <option value=\"UTC\">UTC Time</option>\n    <option value=\"America/New_York\">Eastern Time</option>\n    <option value=\"America/Chicago\">Central Time</option>\n    <option value=\"America/Denver\">Mountain Time</option>\n    <option value=\"America/Los_Angeles\">Western Time</option>\n</SELECT>\n\n<h3>4. Select Start/End Time:</h3><br>\n<i>The end date is not inclusive.</i>\n<table class=\"table table-sm\">\n<thead>\n  <tr>\n    <td></td>\n    <th>Year</th><th>Month</th><th>Day</th>\n  </tr>\n</thead>\n<tbody>\n  <tr>\n    <th>Start:</th>\n    <td>{$y1select}</td><td>{$m1select}</td><td>{$d1select}</td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>{$y2select}</td><td>{$m2select}</td><td>{$d2select}</td>\n  </tr>\n</tbody>\n</table>\n\n<h3>5. Data Format:</h3>\n<select name=\"fmt\">\n    <option value=\"csv\">Comma</option>\n    <option value=\"excel\">Excel</option>\n</select>\n\n<h3>Submit Form:</h3><br>\n<input type=\"submit\" value=\"Process Data Request\">\n<input type=\"reset\">\n\n<p><strong>Observation Data Columns</strong>\n<table class=\"table table-striped\">\n<thead><tr><th>Name</th><th>Description</th></tr></thead>\n<tbody>\n<tr><th>station</th><td>5 character station identifier</td></tr>\n<tr><th>valid[timezone]</th><td>Timestamp of observation</td></tr>\n<tr><th><code>Label for Values</code></th><td>Primary</td></tr>\n<tr><th><code>Label for Values</code></th><td>Secondary</td></tr>\n</tbody>\n</table></p>\n\n<p><strong>Observation Data Columns</strong>\n<table class=\"table table-striped\">\n<thead><tr><th>Name</th><th>Description</th></tr></thead>\n<tbody>\n<tr><th>station</th><td>5 character station identifier</td></tr>\n<tr><th>issued[timezone]</th><td>Timestamp of forecast issuance</td></tr>\n<tr><th>primaryname</th><td>Label for the primary forecast value</td></tr>\n<tr><th>primaryunits</th><td>Units for the primary forecast value</td></tr>\n<tr><th>secondaryname</th><td>Label for the secondary forecast value</td></tr>\n<tr><th>secondaryunits</th><td>Units for the secondary forecast value</td></tr>\n<tr><th>forecast_valid[timezone]</th><td>Timestamp of forecast valid</td></tr>\n<tr><th>primary_value</th><td>Primary forecast value</td></tr>\n<tr><th>secondary_value</th><td>Secondary forecast value</td></tr>\n</tbody>\n</table></p>\n\n\n</div></div>\n\n</form>\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/request/hourlyprecip.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 155);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\n\n$mesosite = iemdb('mesosite');\n\n$t = new MyView();\n$t->iemss = True;\n$t->title = \"Download Hourly Precipitation Data\";\n\n$network = isset($_REQUEST[\"network\"]) ? xssafe($_REQUEST[\"network\"]) : \"IA_ASOS\";\n\n$nselect = \"<select name=\\\"network\\\">\";\n$rs = pg_query(\n    $mesosite,\n    \"SELECT id, name from networks WHERE (id ~* 'ASOS' and \" .\n        \"length(id) = 7) or id ~* 'DCP' ORDER by name ASC\"\n);\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n    $sel = '';\n    if ($network == $row[\"id\"]) {\n        $sel = \" selected='SELECTED'\";\n    }\n    $nselect .= sprintf(\n        \"<option value='%s'%s>%s</option>\\n\",\n        $row[\"id\"],\n        $sel,\n        $row[\"name\"]\n    );\n}\n$nselect .= \"</select>\";\n\n$y1 = yearSelect(1941, date(\"Y\"), \"year1\");\n$m1 = monthSelect(\"\", \"month1\");\n$d1 = daySelect(\"\", \"day1\");\n$y2 = yearSelect(1941, date(\"Y\"), \"year2\");\n$m2 = monthSelect(date(\"m\"), \"month2\");\n$d2 = daySelect(date(\"d\"), \"day2\");\n\n$ar = array(\n    \"Etc/UTC\" => \"Coordinated Universal Time (UTC)\",\n    \"America/New_York\" => \"America/New_York (EST/EDT)\",\n    \"America/Chicago\" => \"America/Chicago (CST/CDT)\",\n    \"America/Denver\" => \"America/Denver (MST/MDT)\",\n    \"America/Los_Angeles\" => \"America/Los_Angeles (PST/PDT)\",\n    \"America/Anchorage\" => \"America/Anchorage (AKST/AKDT)\",\n);\n\n$tzselect = make_select(\"tz\", \"America/Chicago\", $ar);\n\n$t->content = <<<EOM\n\n<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"/archive/\">Archive Mainpage</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">IEM Computed Hourly Precipitation Totals</li>\n    </ol>\n</nav>\n\n<p>\nAs a convience, the IEM attempts to provide explicit hourly precipitation observations\nwithout the need for manual computation / deciphering observations.  For ASOS sites, this\nmeans the total is either derived from the \"top of the hour\" METAR reports or from the\ndaily summary message values.  For DCP sites, this means either the explicit PPH SHEF\nvariable is taken or the math is done to figure out the total from the PCI precipitation\ncounter.\n</p>\n\n<p>\n<a href=\"/cgi-bin/request/hourlyprecip.py?help\"\nclass=\"btn btn-secondary\"><i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend documentation</a>\nexists for those that wish to script against the backend service.\n</p>\n\n\n<div class=\"alert alert-warning\" role=\"alert\">\n    Data prior to 2010 only contains the non-zero values, whereas all hours are\n    accounted for after 2010. This may be fixed in upcoming work on the database.\n    On 23 Jan 2026, processing started to provide this information for DCP sites,\n    but will take a number of days to backfill to 2010.\n</div>\n\n<p>Select network to download from:<br />\n<form name=\"network\" action=\"hourlyprecip.phtml\" class=\"mb-3\">\n    <label for=\"network-select\" class=\"form-label\"><strong>Select Network</strong></label>\n    {$nselect}\n    <button type=\"submit\" class=\"btn btn-outline-primary btn-sm ms-2\">Switch Network</button>\n</form>\n\n<form target=\"_blank\" name=\"dl\" action=\"/cgi-bin/request/hourlyprecip.py\">\n    <div class=\"form2url\"></div>\n    <input type=\"hidden\" value=\"{$network}\" name=\"network\" />\n    <div class=\"row\">\n        <div class=\"col-lg-8 col-md-7\">\n\n<h4>1) Select Station(s):</h4>\n<div id=\"iemss\" data-network=\"{$network}\" data-name=\"station\" data-supports-all=\"0\"\n data-has-attribute=\"HAS_PHOUR\"></div>\n\n<p>The sites presented are those that have had hourly precipitation reported at\nsome point during each station's period of record.</p>\n    </div>\n    <div class=\"col-lg-4 col-md-5\">\n\n<h4>2) Select period:</h4>\n<table class=\"table table-bordered table-sm align-middle\">\n  <tr>\n    <td></td>\n    <th>Year</th><th>Month</th><th>Day</th>\n  </tr>\n\n  <tr>\n    <th>Start:</th>\n    <td>{$y1}</td><td>{$m1}</td><td>{$d1}</td>\n        </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>{$y2}</td><td>{$m2}</td><td>{$d2}</td>\n  </tr>\n</table>\n\n<h4>3) Metadata</h4>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"lalo\" value=\"1\" id=\"lalo\">\n    <label class=\"form-check-label\" for=\"lalo\">Include Station Lat/Lon</label>\n</div>\n<div class=\"form-check\">\n    <input class=\"form-check-input\" type=\"checkbox\" name=\"st\" value=\"1\" id=\"st\">\n    <label class=\"form-check-label\" for=\"st\">Include State of Station</label>\n</div>\n\n<h4>4) Timezone of Observation Times:</h4>\n<p><i>The following options are available for how the observation time is\n    presented.</i></p>\n{$tzselect}\n\n<button type=\"submit\" class=\"btn btn-success\">Request Data</button>\n\n<h4>Download Fields</h4>\n\n<dl class=\"row\">\n    <dt class=\"col-sm-3\">station</dt><dd class=\"col-sm-9\">Common identifier for the station.</dd>\n    <dt class=\"col-sm-3\">network</dt><dd class=\"col-sm-9\">Network identifier for the station.</dd>\n    <dt class=\"col-sm-3\">valid</dt><dd class=\"col-sm-9\">Hour on which the precip fell.</dd>\n    <dt class=\"col-sm-3\">precip_in</dt><dd class=\"col-sm-9\">Hourly Precipitation [inch]. A value of 0.0001 denotes a Trace.</dd>\n    <dt class=\"col-sm-3\">lat</dt><dd class=\"col-sm-9\">Station Latitude (deg N), when selected.</dd>\n    <dt class=\"col-sm-3\">lon</dt><dd class=\"col-sm-9\">Station Longitude (deg E), when selected.</dd>\n    <dt class=\"col-sm-3\">st</dt><dd class=\"col-sm-9\">Station State Indentifier, when selected.</dd>\n</dl>\n\n</div></div>\n</form>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/ldm.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"LDM Request HOWTO\";\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"/info.php\">IEM Information</a></li>\n        <li class=\"breadcrumb-item active\" aria-current=\"page\">Real-time IEM data feeds with LDM HOWTO</li>\n    </ol>\n</nav>\n\n<p>The IEM uses <a href=\"https://www.unidata.ucar.edu\">Unidata LDM</a> to move\ndata around within the computing infrastructure.  Anybody is eligable to request\na LDM feed, so to get products pushed to you without any fuss!  This page details\nthe setup of the LDM feed.</p>\n\n<div class=\"alert alert-warning\" role=\"alert\">\n\n<h3>Looking for low latency ASOS data? Read this first!</h3>\n\n<p>\n<strong>TL;DR There is no latency magic with the IEM LDM Feed.</strong>\n</p>\n\n<p>\nThe IEM continues to get incessant emails believing that the IEM offers some\nmagic feed of ASOS data with reduced latency allowing for gambling edge. Please\nsee <a href=\"https://mesonet.agron.iastate.edu/onsite/news.phtml?id=1469\">Wagering\non ASOS temperatures</a> for related info on this topic.  While LDM is a push\ntechnology that does offer products faster than what you could see off of government\nwebsites with CDN / caching, it is also sourced from a data stream that bounces\noff of geostationary satellites, which will have many seconds more of latency vs\nfolks that have a direct from FAA Internet feed.  Again no IEM LDM magic here,\nbut you insist there so, so we continue...\n</p>\n\n<p>\nMADIS processes a stream of data from the FAA with reduced latency, but has\na major quick with temperatures reported in\n<a href=\"https://mesonet.agron.iastate.edu/onsite/news.phtml?id=1290\">Whole\ndegree Celsius</a> and without two minute averaging, which makes the data\nvery problematic to figure out high temperatures, but people don't believe this\nagain and demand the feed of this data from the IEM.  The IEM does not have\nanything lower latency than what you find from the <a href=\"https://madis-data.cprk.ncep.noaa.gov/madisPublic1/data/LDAD/hfmetar/\">\nMADIS website of netcdf files</a>.  So again, we continue...\n</p>\n\n<p>\nFolks still think the IEM LDM feed of NOAAPort/NWS data containining METAR/SPECIs/\nCLIs/DSMs/CF6s will have lower latency and one minute updates, but it does not.\nThese are the legacy products with much latency, on the order of minutes for the METARs\nto roundtrip the FAA / NWS to satellite broadcast. But the data is there and some\nfolks think it is going to provide some magic money making scheme, so we continue...\n</p>\n\n<p>\nSo what the IEM has is a <code>IDS|DDPLUS</code> feed of METARs (<code>^S[AP]</code>), CLIs (<code>/pCLI</code>),\nDSMs (<code>^CDUS27</code>), and CF6s (<code>/pCF6</code>).  The METARs and DSMs are typically found in\nproduct collectives, so the LDM product name does not contain the airport ICAO\ncode within the name.  You have to process the collectives and find your airport of\nchoice within it.  The IEM website does a value add of splitting these products into\nairport based identifiers, but this data is not sent over the LDM feed.\n</p>\n\n<p>\nSo then finally after the IEM explains all this, people then ask where to find\nlower latency data.  Goodness, yes, if the IEM knew, the IEM would be doing it already.\nGuess what, it does not exist.  Perhaps ASOS modernization will fix this, but\nuntil then perhaps check out\n<a href=\"https://demos.synopticdata.com/hf-asos-available/index.html\">Synoptic Data</a>\nfor a feed of the FAA data that goes into the MADIS product mentioned above.\n</p>\n\n</div>\n\n<div class=\"row\">\n    <div class=\"col-lg-8\">\n        <div class=\"card mb-4\">\n            <div class=\"card-header\">\n                <h4 class=\"card-title mb-0\">STEP 1: Send an Email</h4>\n            </div>\n            <div class=\"card-body\">\n                <p>Send us an email requesting a LDM feed. You can send this email to me, Daryl\n                Herzmann (<a href=\"mailto:akrherz@iastate.edu\">akrherz@iastate.edu</a>). You should include contact information\n                and the DNS/IP of the host that you will be using to connect to the IEM LDM.</p>\n            </div>\n        </div>\n\n        <div class=\"card mb-4\">\n            <div class=\"card-header\">\n                <h4 class=\"card-title mb-0\">STEP 2: Configure LDM (ldmd.conf)</h4>\n            </div>\n            <div class=\"card-body\">\n                <p>All local products are generated within the <code>EXP</code> LDM feedtype. A\n                nomenclature is used within the IEM to help with product routing. The general\n                form is: <code>datatype routes timestamp archive_path current_path suffix</code></p>\n            </div>\n        </div>\n\n        <div class=\"card mb-4\">\n            <div class=\"card-header\">\n                <h4 class=\"card-title mb-0\">STEP 3: Sign up for IEM bulletin (optional)</h4>\n            </div>\n            <div class=\"card-body\">\n                <p>You don't have to complete this step, but you can keep up-to-date with\n                IEM news and events with the IEM Daily Bulletin. You can sign up for it\n                <a href=\"https://groups.google.com/g/iem-dailyb\" target=\"_blank\">here</a>.\n                If this service generates enough interest, I will set up a dedicated\n                email list for it.</p>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-lg-4\">\n        <div class=\"card\">\n            <div class=\"card-header\">\n                <h5 class=\"card-title mb-0\">Contact Information</h5>\n            </div>\n            <div class=\"card-body\">\n                <address>\n                    <strong>Daryl Herzmann</strong><br>\n                    Email: <a href=\"mailto:akrherz@iastate.edu\">akrherz@iastate.edu</a><br>\n                    <small class=\"text-muted\">Rev: 26 Dec 2002</small>\n                </address>\n            </div>\n        </div>\n    </div>\n</div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/maxcsv.php",
    "content": "<?php \nheader(\"Location: /request/maxcsv.py?help\");\n"
  },
  {
    "path": "htdocs/request/maxcsv.py",
    "content": "\"\"\"implemented in pylib/iemweb/request/maxcsv.py\"\"\"\n\nfrom iemweb.request.maxcsv import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/request/rwis/fe.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/database.inc.php\";\n\n$network = isset($_REQUEST[\"network\"]) ? xssafe($_REQUEST[\"network\"]) : \"IA_RWIS\";\n\ndefine(\"IEM_APPID\", 63);\n$t = new MyView();\n$t->iem_resource = \"RWIS\";\n$t->iemss = True;\n$t->title = \"RWIS Data Download\";\n\n$startyr = ($network == 'IA_RWIS') ? 1995 : 2009;\n$ys1 = yearSelect($startyr, date(\"Y\"), \"year1\");\n$ms1 = monthSelect(\"1\", \"month1\");\n$ds1 = daySelect(\"1\", \"day1\");\n$hs1 = hourSelect(\"0\", \"hour1\");\n$ys2 = yearSelect($startyr, date(\"Y\"), \"year2\");\n$ms2 = monthSelect(date(\"m\"), \"month2\");\n$ds2 = daySelect(date(\"d\"), \"day2\");\n$hs2 = hourSelect(\"23\", \"hour2\");\n\n$ar = array(\n    \"Etc/UTC\" => \"Coordinated Universal Time (UTC)\",\n    \"America/New_York\" => \"America/New_York (EST/EDT)\",\n    \"America/Chicago\" => \"America/Chicago (CST/CDT)\",\n    \"America/Denver\" => \"America/Denver (MST/MDT)\",\n    \"America/Los_Angeles\" => \"America/Los_Angeles (PST/PDT)\",\n    \"America/Anchorage\" => \"America/Anchorage (AKST/AKDT)\",\n);\n$tzselect = make_select(\"tz\", \"Etc/UTC\", $ar);\n\n$sselect = selectNetworkType(\"RWIS\", $network);\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/RWIS/\">RWIS Homepage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Download</li>\n  </ol>\n</nav>\n\n<div class=\"row\">\n  <div class=\"col-12\">\n    <h3 class=\"mb-3\">RWIS Atmospheric / Surface Data Download</h3>\n  </div>\n</div>\n\n<div class=\"row mb-4\">\n  <div class=\"col-12\">\n    <div class=\"alert alert-info\" role=\"alert\">\n  <i class=\"bi bi-info-circle me-2\" aria-hidden=\"true\"></i>\n      The IEM archives RWIS information for the network in Iowa based on a direct\n      feed from the DOT. We also archive other states based on an archive provided\n      by the <a href=\"https://madis.ncep.noaa.gov/\" class=\"alert-link\">MADIS project</a>.\n      Data for Iowa dates back to 1995, whereas archive availability for other states\n      varies based on their participation within MADIS.\n    </div>\n  </div>\n</div>\n\n<div class=\"row mb-4\">\n  <div class=\"col-12\">\n    <a href=\"/cgi-bin/request/rwis.py?help\" class=\"btn btn-primary\">\n      <i class=\"bi bi-file-text me-2\" aria-hidden=\"true\"></i>Backend Documentation\n    </a>\n  </div>\n</div>\n\n<div class=\"row mb-4\">\n  <div class=\"col-12\">\n    <div class=\"card\">\n      <div class=\"card-header\">\n        <h5 class=\"card-title mb-0\">Network Selection</h5>\n      </div>\n      <div class=\"card-body\">\n        <form method=\"GET\" name=\"s\" class=\"d-flex align-items-center gap-3\">\n          <label class=\"form-label mb-0 fw-bold\">Available States:</label>\n          {$sselect}\n          <button type=\"submit\" class=\"btn btn-secondary\">Select Network</button>\n        </form>\n      </div>\n    </div>\n  </div>\n</div>\n\n<form target=\"_blank\" method=\"GET\" action=\"/cgi-bin/request/rwis.py\" name=\"iemss\">\n<div class=\"form2url\"></div>\n<input type=\"hidden\" name=\"minute1\" value=\"0\">\n<input type=\"hidden\" name=\"minute2\" value=\"0\">\n<input type=\"hidden\" name=\"network\" value=\"{$network}\">\n\n<div class=\"row\">\n  <div class=\"col-lg-7 mb-4\">\n    <div class=\"card h-100\">\n      <div class=\"card-header\">\n        <h5 class=\"card-title mb-0\">1. Select Station(s)</h5>\n      </div>\n      <div class=\"card-body\">\n        <div id=\"iemss\" data-network=\"{$network}\"></div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"col-lg-5 mb-4\">\n    <div class=\"card h-100\">\n      <div class=\"card-header\">\n        <h5 class=\"card-title mb-0\">Data Request Configuration</h5>\n      </div>\n      <div class=\"card-body\">\n\n        <div class=\"mb-4\">\n          <h6 class=\"fw-bold\">2. Select Start/End Time</h6>\n          <p class=\"text-muted small mb-3\">\n          Times are in timezone you select in step 5 below. If you are\n          requesting a text download, you can request up to 500 station-years\n          of data. HTML and excel are limited to 1 station-years worth.</p>\n          <div class=\"table-responsive\">\n            <table class=\"table table-sm\">\n              <thead>\n                <tr>\n                  <th scope=\"col\"></th>\n                  <th scope=\"col\">Year</th>\n                  <th scope=\"col\">Month</th>\n                  <th scope=\"col\">Day</th>\n                  <th scope=\"col\">Hour</th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <th scope=\"row\">Start:</th>\n                  <td>{$ys1}</td>\n                  <td>{$ms1}</td>\n                  <td>{$ds1}</td>\n                  <td>{$hs1}</td>\n                </tr>\n                <tr>\n                  <th scope=\"row\">End:</th>\n                  <td>{$ys2}</td>\n                  <td>{$ms2}</td>\n                  <td>{$ds2}</td>\n                  <td>{$hs2}</td>\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n\n        <div class=\"mb-4\">\n          <h6 class=\"fw-bold\">3. Select Variables</h6>\n          <p class=\"text-muted small mb-2\">The label value within parenthesis is the output column name.</p>\n          <select size=\"5\" name=\"vars\" multiple class=\"form-select\">\n            <option value=\"tmpf\">Air Temperature [F] (tmpf)</option>\n            <option value=\"dwpf\">Dew Point Temperature [F] (dwpf)</option>\n            <option value=\"feel\">Feels Like Temperature [F] (feel)</option>\n            <option value=\"relh\">Relative Humidity [%] (relh)</option>\n            <option value=\"sknt\">Wind Speed [knots] (sknt)</option>\n            <option value=\"drct\">Wind Direction [degree N] (drct)</option>\n            <option value=\"gust\">Wind Gust [knots] (gust)</option>\n            <option value=\"tfs0\">Pavement Sensor0 Temperature [F] (tfs0)</option>\n            <option value=\"tfs0_text\">Pavement Sensor0 Condition (tfs0_text)</option>\n            <option value=\"tfs1\">Pavement Sensor1 Temperature [F] (tfs1)</option>\n            <option value=\"tfs1_text\">Pavement Sensor1 Condition (tfs1_text)</option>\n            <option value=\"tfs2\">Pavement Sensor2 Temperature [F] (tfs2)</option>\n            <option value=\"tfs2_text\">Pavement Sensor2 Condition (tfs2_text)</option>\n            <option value=\"tfs3\">Pavement Sensor3 Temperature [F] (tfs3)</option>\n            <option value=\"tfs3_text\">Pavement Sensor3 Condition (tfs3_text)</option>\n            <option value=\"subf\">Subsurface Temperature [F] (subf)</option>\n          </select>\n          <div class=\"form-text\">\n            <strong>See below for discussion on \"Pavement Sensor Condition\"</strong>\n          </div>\n        </div>\n\n        <div class=\"mb-4\">\n          <h6 class=\"fw-bold\">4. How to view?</h6>\n          <select name=\"what\" class=\"form-select\">\n            <option value=\"txt\">Download as Delimited Text File</option>\n            <option value=\"excel\">Download as Excel</option>\n            <option value=\"html\">View as HTML webpage</option>\n          </select>\n        </div>\n\n        <div class=\"mb-4\">\n          <h6 class=\"fw-bold\">5. Timezone of Timestamps</h6>\n          <p class=\"text-muted small mb-2\">This controls the timezone used for presenting the timestamps in the downloaded file.</p>\n          {$tzselect}\n        </div>\n\n        <div class=\"mb-4\">\n          <h6 class=\"fw-bold\">6. Data Delimitation</h6>\n          <p class=\"text-muted small mb-2\">How shall the output values be separated?</p>\n          <select name=\"delim\" class=\"form-select\">\n            <option value=\"comma\">Comma</option>\n            <option value=\"space\">Space</option>\n            <option value=\"tab\">Tab</option>\n          </select>\n        </div>\n\n        <div class=\"mb-4\">\n          <h6 class=\"fw-bold\">7. Include Lat / Lons?\n            <img src=\"/images/gisready.png\" alt=\"GIS Ready\" class=\"ms-2\">\n          </h6>\n          <select name=\"gis\" class=\"form-select\">\n            <option value=\"no\">No</option>\n            <option value=\"yes\">Yes</option>\n          </select>\n        </div>\n\n        <div class=\"mb-0\">\n          <h6 class=\"fw-bold\">8. Submit Form</h6>\n          <div class=\"d-grid gap-2 d-md-flex\">\n            <button type=\"submit\" class=\"btn btn-primary flex-fill\">\n              <i class=\"bi bi-download me-2\" aria-hidden=\"true\"></i>Process Data Request\n            </button>\n            <button type=\"reset\" class=\"btn btn-outline-secondary\">\n              <i class=\"bi bi-arrow-counterclockwise me-2\" aria-hidden=\"true\"></i>Reset\n            </button>\n          </div>\n        </div>\n\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"row mt-5\">\n  <div class=\"col-12\">\n    <div class=\"card\">\n      <div class=\"card-header\">\n        <h4 class=\"card-title mb-0\">Pavement Sensor Condition Explanation</h4>\n      </div>\n      <div class=\"card-body\">\n        <div class=\"alert alert-secondary\" role=\"alert\">\n          <i class=\"bi bi-info-circle me-2\" aria-hidden=\"true\"></i>\n          The following applies to most of the Iowa RWIS sensors and is passed along by\n          the Iowa RWIS Coordinator.\n        </div>\n\n        <p>The data is taken from the <a href=\"https://my.vaisala.net/en/roads/products/roadweathersensors/Pages/FP2000.aspx\" target=\"_blank\" rel=\"noopener\">Vaisala FP2000</a>.\n        These readings can be lumped into four general categories: wet, dry, snow/ice, error.\n        The sensor gives quite a few more, especially in the snow/ice realm but functionally\n        it is difficult to distinguish clear differences between them.</p>\n\n        <h5 class=\"mt-4 mb-3\">From the glossary:</h5>\n\n        <div class=\"table-responsive\">\n          <table class=\"table table-striped table-hover\">\n            <thead class=\"table-dark\">\n              <tr>\n                <th scope=\"col\">Status</th>\n                <th scope=\"col\">Description</th>\n              </tr>\n            </thead>\n            <tbody>\n\n<tr><th>Snow/Ice Warning</th>\n\n<td>Continuous film of ice and water mixture at or below freezing (32°F / 0°C) with insufficient chemical to keep the mixture from freezing.\nThis status can only be reported at Vaisala ESP and SP sites when precipitation occurs.\n</td></tr>\n<tr><th>Ice Warning</th>\n\n<td>Continuous film of ice and water mixture at or below freezing (32°F / 0°C) with insufficient chemical to keep the mixture from freezing.\nThis status can only be reported at NTCIP sites.\n</td></tr>\n<tr><th>Snow Warning</th>\n\n<td>This status can be reported at NTCIP sites, but will not be reported by Vaisala NTCIP sites.\n</td></tr>\n<tr><th>Wet Below Freezing</th>\n\n<td>Moisture on pavement sensor with a surface temperature below freezing (32°F / 0°C).\nThis status will only be reported at Vaisala SCAN Detector sites.\n</td></tr>\n<tr><th>Ice Watch</th>\n\n<td>Thin or spotty film of moisture at or below freezing (32°F / 0°C).\nThis status can only be reported at NTCIP sites when precipitation is not occurring.\n</td></tr>\n<tr><th>Snow/IceWatch</th>\n\n<td>Thin or spotty film of moisture at or below freezing (32°F / 0°C).\nThis status can only be reported at Vaisala ESP and SP sites when precipitation is not occurring.\n</td></tr>\n<tr><th>Snow Watch</th>\n\n<td>This status can be reported at NTCIP sites, but is not detected at Vaisala NTCIP sites.\n</td></tr>\n<tr><th>Frost</th>\n\n<td>Moisture on pavement at or below freezing (32°F / 0°C) with a pavement temperature at or below the dew point temperature.\nThis status can only be reported by Vaisala ESP, SP, and NTCIP sites when precipitation is not occurring.\n</td></tr>\n<tr><th>Chemical Wet</th>\n\n<td>Continuous film of water and ice mixture at or below freezing (32°F or 0°C) with enough chemical to keep the mixture from freezing.\nThis status can only be reported by Vaisala ESP, SP, and NTCIP sites when precipitation occurs.\n</td></tr>\n<tr><th>Wet</th>\n\n<td>Continuous film of moisture on the pavement sensor with a surface temperature above freezing (32°F or 0°C).\nThis status can be reported by Vaisala ESP, SP, SCAN Detector, and NTCIP sites when precipitation has occurred.\n</td></tr>\n<tr><th>Damp</th>\n\n<td>Thin or spotty film of moisture above freezing (32°F or 0°C).\nThis status can only be reported by Vaisala ESP, and SP sites when precipitation is not occurring.\n</td></tr>\n<tr><th>Trace Moisture</th>\n\n<td>Thin or spotty film of moisture above freezing (32°F or 0°C). Surface moisture occurred without precipitation being detected.\nThis status will only be reported at NTCIP sites when precipitation is not occurring.\n</td></tr>\n<tr><th>Absorption at Dew Point, Absorption, & Dew</th>\n\n<td>These statuses can be reported at NTCIP sites, but are not currently detected at Vaisala NTCIP sites.\n</td></tr>\n<tr><th>Dry</th>\n\n<td>Absence of moisture on the surface sensor.\nThis status can be reported by Vaisala ESP, SP, SCAN Dectector, and NTCIP sites.\n</td></tr>\n<tr><th>Other</th>\n\n<td>Other is the standard NTCIP ESS surface condition code to handle conditions not explicitly included in this table. This status will only be reported NTCIP by sensors installed at NTCIP ESS sites.\n</td></tr>\n<tr><th>No Report</th>\n\n<td>The surface sensor is not operating properly and requires maintenance.\nThis status will only be reported by Vaisala ESP and SP sites.</td></tr>\n\n<tr><th>Error</th>\n\n<td>The surface sensor is not operating properly and requires maintenance.\nThis status will only be reported by NTCIP sites.</td></tr>\n\n</tbody>\n</table>\n\n\n</form>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/rwis/soil.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 81);\ninclude_once \"../../../include/myview.php\";\n$t = new MyView();\nrequire_once \"../../../include/forms.php\";\n\n$t->title = \"RWIS Soil Probe Data Download\";\n$t->iemss = True;\n\n$ys = yearSelect(2008, date(\"Y\"), \"year1\");\n$ms = monthSelect(\"\", \"month1\");\n$ds = daySelect(\"\", \"day1\");\n$hs = gmtHourSelect(\"\", \"hour1\");\n\n$ys2 = yearSelect(2008, date(\"Y\"), \"year2\");\n$ms2 = monthSelect(\"\", \"month2\");\n$ds2 = daySelect(\"\", \"day2\");\n$hs2 = gmtHourSelect(\"\", \"hour2\");\n\n$ar = array(\n    \"Etc/UTC\" => \"Coordinated Universal Time (UTC)\",\n    \"America/New_York\" => \"America/New_York (EST/EDT)\",\n    \"America/Chicago\" => \"America/Chicago (CST/CDT)\",\n    \"America/Denver\" => \"America/Denver (MST/MDT)\",\n    \"America/Los_Angeles\" => \"America/Los_Angeles (PST/PDT)\",\n    \"America/Anchorage\" => \"America/Anchorage (AKST/AKDT)\",\n);\n$tzselect = make_select(\"tz\", \"Etc/UTC\", $ar);\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/RWIS/\">RWIS Homepage</a></li>\n <li class=\"active\">Iowa Soil Data Download</li>\n</ol>\n\n<p>This page provides a download of the soil temperature information collected\nby some of the Iowa RWIS sites.  This page was updated on 10 Feb 2021 to use\nmore explicit column headings within the download file to denote the depth\nthe temperature reading in Fahrenheit was recorded.</p>\n\n<p><a href=\"/cgi-bin/request/rwis.py?help\" class=\"btn btn-primary\"><i class=\"bi bi-file-text\" aria-hidden=\"true\"></i>\nBackend documentation</a> exists for those wishing to script against this service.</p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/rwis.py\">\n<div class=\"form2url\"></div>\n<input type=\"hidden\" name=\"network\" value=\"IA_RWIS\">\n<input type=\"hidden\" name=\"src\" value=\"soil\">\n<input type=\"hidden\" name=\"vars\" value=\"tmpf_1in\">\n<input type=\"hidden\" name=\"vars\" value=\"tmpf_3in\">\n<input type=\"hidden\" name=\"vars\" value=\"tmpf_6in\">\n<input type=\"hidden\" name=\"vars\" value=\"tmpf_9in\">\n<input type=\"hidden\" name=\"vars\" value=\"tmpf_12in\">\n<input type=\"hidden\" name=\"vars\" value=\"tmpf_18in\">\n<input type=\"hidden\" name=\"vars\" value=\"tmpf_24in\">\n<input type=\"hidden\" name=\"vars\" value=\"tmpf_30in\">\n<input type=\"hidden\" name=\"vars\" value=\"tmpf_36in\">\n<input type=\"hidden\" name=\"vars\" value=\"tmpf_42in\">\n<input type=\"hidden\" name=\"vars\" value=\"tmpf_48in\">\n<input type=\"hidden\" name=\"vars\" value=\"tmpf_54in\">\n<input type=\"hidden\" name=\"vars\" value=\"tmpf_60in\">\n<input type=\"hidden\" name=\"vars\" value=\"tmpf_66in\">\n<input type=\"hidden\" name=\"vars\" value=\"tmpf_72in\">\n\n<table>\n<tr><td width=\"50%\">\n\n<p><h3>1. Select Station:</h3><br>\n\n<p>Note that not all stations have soil probe data.</p>\n\n<div id=\"iemss\" data-network=\"IA_RWIS\"></div>\n\n\n<p><h3>2. Select Start/End Time:</h3><br>\n<i>Times are in UTC.  Archive starts in June 2008.</i>\n<table>\n  <tr>\n    <td></td>\n    <th>Year</th><th>Month</th><th>Day</th>\n    <th>Hour</th>\n  </tr>\n\n  <tr>\n    <th>Start:</th>\n    <td>{$ys}</td>\n    <td>{$ms}</td>\n    <td>{$ds}</td>\n    <td>{$hs}\n    <input type=\"hidden\" name=\"minute1\" value=\"0\"></td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>{$ys2}</td>\n    <td>{$ms2}</td>\n    <td>{$ds2}</td>\n    <td>{$hs2}\n    <input type=\"hidden\" name=\"minute2\" value=\"0\"></td>\n    </tr>\n</table>\n\n</td><td valign=\"TOP\">\n\n<p><h4>3. Timezone of Timestamps</h4>\n   <i>This controls the timezone used for presenting the timestamps in the\n    downloaded file.</i>\n   <br />{$tzselect}</p>\n            \n<p><h3>4. How to view?</h3><br>\n<select name=\"what\">\n  <option value=\"txt\">Download to Disk</option>\n  <option value=\"view\">View on-line\n</select>\n\n<p><h3>5. Data Delimitation:</h3><br>\nHow shall the output values be seperated?\n<br><select name=\"delim\">\n    <option value=\"comma\">Comma\n    <option value=\"space\">Space\n    <option value=\"tab\">Tab\n   </select>\n\n<p>\n<h3>6. Include Lat / Lons?</h3><img src=\"/images/gisready.png\"><br>\n <select name=\"gis\">\n   <option value=\"no\">No\n   <option value=\"yes\">Yes\n </select>\n\n</td></tr></table>\n\n<p><h3>Submit Form:</h3><br>\n<input type=\"submit\" value=\"Process Data Request\">\n<input type=\"reset\">\n</form>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/rwis/traffic.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 80);\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\nrequire_once \"../../../include/forms.php\";\n\n$t->title = \"RWIS Traffic Data Download\";\n\n$ys = yearSelect(2008, date(\"Y\"), \"year1\");\n$ms = monthSelect(\"\", \"month1\");\n$ds = daySelect(\"\", \"day1\");\n$hs = gmtHourSelect(\"\", \"hour1\");\n\n$ys2 = yearSelect(2008, date(\"Y\"), \"year2\");\n$ms2 = monthSelect(\"\", \"month2\");\n$ds2 = daySelect(\"\", \"day2\");\n$hs2 = gmtHourSelect(\"\", \"hour2\");\n\n$rselect = networkSelect(\n    \"IA_RWIS\",\n    \"\",\n    array(),\n    \"station\",\n    FALSE,\n    \"\",\n    10,\n);\n\n$ar = array(\n    \"Etc/UTC\" => \"Coordinated Universal Time (UTC)\",\n    \"America/New_York\" => \"America/New_York (EST/EDT)\",\n    \"America/Chicago\" => \"America/Chicago (CST/CDT)\",\n    \"America/Denver\" => \"America/Denver (MST/MDT)\",\n    \"America/Los_Angeles\" => \"America/Los_Angeles (PST/PDT)\",\n    \"America/Anchorage\" => \"America/Anchorage (AKST/AKDT)\",\n);\n$tzselect = make_select(\"tz\", \"Etc/UTC\", $ar);\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/RWIS/\">RWIS Homepage</a></li>\n <li class=\"active\">Traffic Download</li>\n</ol>\n\n<p>This page provides the IEM collected archive of Iowa RWIS Traffic Data.\n\n\n<form method=\"GET\" action=\"/cgi-bin/request/rwis.py\">\n<input type=\"hidden\" value=\"traffic\" name=\"src\">\n<input type=\"hidden\" value=\"lane_id\" name=\"vars\">\n<input type=\"hidden\" value=\"avg_speed\" name=\"vars\">\n<input type=\"hidden\" value=\"avg_headway\" name=\"vars\">\n<input type=\"hidden\" value=\"normal_vol\" name=\"vars\">\n<input type=\"hidden\" value=\"long_vol\" name=\"vars\">\n<input type=\"hidden\" value=\"occupancy\" name=\"vars\">\n\n\n<table>\n<tr><td width=\"50%\">\n\n<p><h3>1. Select Station:</h3><br>\n<i>Select One or More or All stations in the network.</i><br />\n{$rselect}\n\n\n<p><h3>2. Select Start/End Time:</h3><br>\n<i>Times are in UTC. Archive starts in December 2008.</i>\n<table>\n  <tr>\n    <td></td>\n    <th>Year</th><th>Month</th><th>Day</th>\n    <th>Hour</th>\n  </tr>\n\n  <tr>\n    <th>Start:</th>\n    <td>{$ys}</td>\n    <td>{$ms}</td>\n    <td>{$ds}</td>\n    <td>{$hs}\n    <input type=\"hidden\" name=\"minute1\" value=\"0\"></td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>{$ys2}</td>\n    <td>{$ms2}</td>\n    <td>{$ds2}</td>\n    <td>{$hs2}\n    <input type=\"hidden\" name=\"minute2\" value=\"0\"></td>\n    </tr>\n</table>\n\n</td><td valign=\"TOP\">\n\n<p><h4>3. Timezone of Timestamps</h4>\n   <i>This controls the timezone used for presenting the timestamps in the\n    downloaded file.</i>\n   <br />{$tzselect}</p>\n\n<p><h3 class=\"subtitle\">4. How to view?</h3><br>\n<select name=\"what\">\n  <option value=\"txt\">Download to Disk</option>\n  <option value=\"view\">View on-line\n</select>\n\n<p><h3 class=\"subtitle\">5. Data Delimitation:</h3><br>\nHow shall the output values be seperated?\n<br><select name=\"delim\">\n    <option value=\"comma\">Comma\n    <option value=\"space\">Space\n    <option value=\"tab\">Tab\n   </select>\n\n<p>\n<h3 class=\"subtitle\">6. Include Lat / Lons?</h3><img src=\"/images/gisready.png\"><br>\n <select name=\"gis\">\n   <option value=\"no\">No\n   <option value=\"yes\">Yes\n </select>\n\n</td></tr></table>\n\n<p><h3>Submit Form:</h3><br>\n<input type=\"submit\" value=\"Process Data Request\">\n<input type=\"reset\">\n</form>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/scan/fe.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->iemss = True;\n$t->title = \"SCAN Data Download\";\n\n$ys = yearSelect(1983, date(\"Y\"), \"year1\");\n$ms = monthSelect(1, \"month1\");\n$ds = daySelect(1, \"day1\");\n$hs = gmtHourSelect(0, \"hour1\");\n$ys2 = yearSelect(1983, date(\"Y\"), \"year2\");\n$ms2 = monthSelect(12, \"month2\");\n$ds2 = daySelect(31, \"day2\");\n$hs2 = gmtHourSelect(0, \"hour2\");\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n    <li><a href=\"/scan/\">SCAN</a></li>\n    <li class=\"active\">Download Data</li>\n </ol>\n\n<p>Filling out this form will provide you with whatever archive data the\nIEM has from the SCAN network.  The archive has some holes in it.\n<a href=\"/cgi-bin/request/scan.py?help\" class=\"btn btn-secondary\">Backend documentation</a>\nexists for those that wish to script against this service.</p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/scan.py\">\n<div class=\"form2url\"></div>\n<div class=\"row\">\n<div class=\"col-md-7\">\n\n<div id=\"iemss\" data-network=\"SCAN\"></div>\n\n</div><div class=\"col-md-5\">\n\n<p><h3>2. Select Start/End Time:</h3><br>\n<i>Times are in UTC.</i>\n<table>\n  <tr>\n    <td></td>\n    <th>Year</th><th>Month</th><th>Day</th><th>Hour</th>\n  </tr>\n\n  <tr>\n    <th>Start:</th>\n    <td>{$ys}</td>\n    <td>{$ms}</td>\n    <td>{$ds}</td>\n    <td>{$hs}\n    </td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>{$ys2}</td>\n    <td>\n     {$ms2}\n    </td>\n    <td>\n     {$ds2}\n    </td>\n    <td>\n     {$hs2}\n    </td>\n  </tr>\n</table>\n\n<p><h3>3. Select Variables:</h3><br>\n<select size=5 name=\"vars\" MULTIPLE>\n  <option value=\"tmpf\">Air Temperature\n  <option value=\"dwpf\">Dew Point Temperature\n  <option value=\"sknt\">Wind Speed [knots]\n  <option value=\"drct\">Wind Direction\n  <option value=\"srad\">Solar Radiation [Wm**-2]\n  <option value=\"pres\">Pressure\n  <option value=\"phour\">Hourly Precipitation\n  <option value=\"c1tmpf\">2 inch Soil Temperature\n  <option value=\"c2tmpf\">4 inch Soil Temperature\n  <option value=\"c3tmpf\">8 inch Soil Temperature\n  <option value=\"c4tmpf\">20 inch Soil Temperature\n  <option value=\"c5tmpf\">40 inch Soil Temperature\n  <option value=\"c1smv\">2 inch Volumetric Soil Moisture\n  <option value=\"c2smv\">4 inch Volumetric Soil Moisture\n  <option value=\"c3smv\">8 inch Volumetric Soil Moisture\n  <option value=\"c4smv\">20 inch Volumetric Soil Moisture\n  <option value=\"c5smv\">40 inch Volumetric Soil Moisture\n</select>\n\n<p><h3>4. How to view?</h3><br>\n<select name=\"what\">\n  <option value=\"download\">Download to Disk\n  <option value=\"view\">View on-line\n</select>\n\n<p><h3>5. Data Delimitation:</h3><br>\nHow shall the output values be seperated?\n<br><select name=\"delim\">\n    <option value=\"comma\">Comma</option>\n    <option value=\"space\">Space</option>\n    <option value=\"tab\">Tab</option>\n</select>\n\n<p><h3>Submit Form:</h3><br>\n<input type=\"submit\" value=\"Process Data Request\">\n<input type=\"reset\">\n\n</div></div>\n\n</form>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/taf.css",
    "content": "#map {\n    width: 100%;\n    height: 450px;\n    border: 2px solid black;\n}"
  },
  {
    "path": "htdocs/request/taf.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/iemprop.php\";\nrequire_once \"../../include/database.inc.php\";\n\ndefine(\"IEM_APPID\", 139);\n$t = new MyView();\n$t->iemss = True;\n$t->title = \"Terminal Aerodome Forecast (TAF) Data Download\";\n\n$bogus = 0;\n$y1select = yearSelect(1996, date(\"Y\"), \"year1\");\n$m1select = monthSelect(1, \"month1\");\n$d1select = daySelect(1, \"day1\");\n$min1select = minuteSelect(0, \"minute1\");\n$hour1select = hourSelect(0, \"hour1\");\n\n$y2select = yearSelect(1996, date(\"Y\"), \"year2\");\n$m2select = monthSelect(date(\"m\"), \"month2\");\n$d2select = daySelect(date(\"d\"), \"day2\");\n$min2select = minuteSelect(0, \"minute2\");\n$hour2select = hourSelect(0, \"hour2\");\n\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" type=\"text/css\" href=\"taf.css\">\nEOM;\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\" class=\"mb-3\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Mainpage</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Download TAF data</li>\n  </ol>\n</nav>\n\n<p>The IEM attempts a high fidelity processing and archival of Terminal\nAerodome Forecasts (TAF)s.  This page allows an atomic data download of the\nprocessed data.  If you are wishing to download the raw NWS text TAF data,\ntry looking <a href=\"/wx/afos/p.php?pil=TAFDSM\">here</a> as a starting point.</p>\n\n<p><a href=\"/cgi-bin/request/taf.py?help\" class=\"btn btn-secondary\"><i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend documentation</a>\nexists for those wishing to script against this service. The TAF archive dates back to 1 January 1996.</p>\n\n<p><strong>Related:</strong>\n<a class=\"btn btn-primary\" href=\"/request/gis/cwas.phtml\">CWSU Center Weather Advisories</a>\n<a class=\"btn btn-primary\" href=\"/request/gis/awc_gairmets.phtml\">Graphical AIRMETs</a>\n<a class=\"btn btn-primary\" href=\"/request/gis/pireps.php\">PIREPs</a>\n<a class=\"btn btn-primary\" href=\"/request/gis/awc_sigmets.phtml\">SIGMETs</a>\n<a class=\"btn btn-primary\" href=\"/request/tempwind_aloft.php\">Temp/Winds Aloft</a>\n</p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/taf.py\" name=\"dl\" target=\"_blank\">\n<div class=\"form2url\"></div>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n\n<p><h3>1. Select Station:</h3><br>\n<br />\n<div id=\"iemss\" data-network=\"TAF\" data-name=\"station\" data-supports-all=\"0\"></div>\n\n</div>\n<div class=\"col-md-6\">\n\n<h3>2. Timezone of Observations:</h3>\n<i>The timestamps used in the downloaded files will be set in the\ntimezone you specify.</i>\n<SELECT name=\"tz\">\n    <option value=\"UTC\">UTC Time</option>\n    <option value=\"America/New_York\">Eastern Time</option>\n    <option value=\"America/Chicago\">Central Time</option>\n    <option value=\"America/Denver\">Mountain Time</option>\n    <option value=\"America/Los_Angeles\">Western Time</option>\n</SELECT>\n\n<h3>3. Select Start/End Time:</h3><br>\n<i>This defines the time domain to look for TAFs <strong>issued</strong>\nwithin.</i>\n<table class=\"table table-sm\">\n<thead>\n  <tr>\n    <td></td>\n    <th>Year</th><th>Month</th><th>Day</th><th>Hour</th><th>Minute</th>\n  </tr>\n</thead>\n<tbody>\n  <tr>\n    <th>Start:</th>\n    <td>{$y1select}</td><td>{$m1select}</td><td>{$d1select}</td>\n    <td>{$hour1select}</td><td>{$min1select}</td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>{$y2select}</td><td>{$m2select}</td><td>{$d2select}</td>\n    <td>{$hour2select}</td><td>{$min2select}</td>\n  </tr>\n</tbody>\n</table>\n\n<h3>4. Data Format:</h3>\n<select name=\"fmt\">\n    <option value=\"comma\">Comma</option>\n    <option value=\"excel\">Excel</option>\n</select>\n\n<h3>5. Filter to last TAF per station:</h3>\n<input type=\"checkbox\" name=\"last\" value=\"1\" id=\"last\">\n<label for=\"last\">Only include the last TAF for each station</label>\n\n<h3>Submit Form:</h3><br>\n<input type=\"submit\" value=\"Process Data Request\">\n<input type=\"reset\">\n\n<p><strong>Data Columns</strong>\n<table class=\"table table-striped\">\n<thead><tr><th>Name</th><th>Description</th></tr></thead>\n<tbody>\n<tr><th>station</th><td>4 character station identifier</td></tr>\n<tr><th>valid</th><td>TAF issuance timestamp</td></tr>\n<tr><th>fx_valid</th><td>Forecast Timestamp</td></tr>\n<tr><th>raw</th><td>Raw TAF string for this forecast time</td></tr>\n<tr><th>fx_end_valid</th><td>Forecast timestamp end time (when set).</td></tr>\n<tr><th>sknt</th><td>Wind Speed (kts)</td></tr>\n<tr><th>drct</th><td>Wind Direction (deg)</td></tr>\n<tr><th>gust</th><td>Wind Gust (kts)</td></tr>\n<tr><th>visibility</th><td>Horizontal Visibility (miles). <strong>Note</strong> \nGreater than 6 miles is encoded as 6.01</td></tr>\n<tr><th>skyc</th><td>Sky Coverages</td></tr>\n<tr><th>skyl</th><td>Sky Coverage Levels (feet)</td></tr>\n<tr><th>ws_drct</th><td>Wind Shift Direction (deg)</td></tr>\n<tr><th>ws_sknt</th><td>Wind Shift Wind Speed (kts)</td></tr>\n<tr><th>product_id</th><td>IEM NWS Text Product Identifier</td></tr>\n<tr><th>ftype</th><td>Forecast Type: Observation, \"FM\" Forecast,\n \"BECMG\" Becoming, \"PROB30\" Probability 30, \"PROB40\" Probability 40, or\n \"TEMPO\" Temporary</td></tr>\n</tbody>\n</table>\n\n</div></div>\n\n</form>\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/request/tempwind_aloft.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/iemprop.php\";\nrequire_once \"../../include/database.inc.php\";\n\ndefine(\"IEM_APPID\", 30);\n$t = new MyView();\n$t->iemss = True;\n$t->title = \"Temps and Winds Aloft (FD) Data Download\";\n\n$bogus = 0;\n$y1select = yearSelect(2004, date(\"Y\"), \"year1\");\n$m1select = monthSelect(1, \"month1\");\n$d1select = daySelect(1, \"day1\");\n\n$y2select = yearSelect(2004, date(\"Y\"), \"year2\");\n$m2select = monthSelect(date(\"m\"), \"month2\");\n$d2select = daySelect(date(\"d\"), \"day2\");\n\n$pgconn = iemdb(\"asos\");\n$sql = <<<EOM\nwith data as (\n    select distinct station from alldata_tempwind_aloft WHERE\n    ftime > (now() - '5 days'::interval)\n    )\nselect station, name from data d LEFT JOIN stations t on\n((case when substr(d.station, 1, 1) = 'K' then substr(d.station, 2, 3)\n else d.station end) = t.id) ORDER by station ASC\nEOM;\n$rs = pg_query($pgconn, $sql);\n$sids = Array();\nwhile ($row = pg_fetch_assoc($rs)) {\n    $name = is_null($row[\"name\"]) ? \"((Unknown))\": $row[\"name\"];\n    $sids[$row[\"station\"]] = $name;\n}\n$sselect = make_select(\"station\", \"KDSM\", $sids, '', '', FALSE, TRUE);\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/nws/\">NWS Mainpage</a></li>\n <li class=\"active\">Download Temps and Winds Aloft (FD) Data</li>\n</ol>\n\n<p>This page allows for download of raw data found within products like this:\n<a href=\"/wx/afos/p.php?pil=FD1US1\">FD1US1</a>.  They contain\nnear term forecasts of temperatures and wind speed aloft.  More details on the \nproduct can be found with the <a href=\"https://weather.gov/directives/sym/pd01008012curr.pdf\">NWS Directive 10-812</a>.</p>\n\n<p><a href=\"/cgi-bin/request/tempwind_aloft.py?help\" class=\"btn btn-secondary\">\n<i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend documentation</a> exists for those wishing to script against this\nservice. The archive dates back to 23 September 2004.</p>\n\n<p><strong>Related:</strong>\n<a class=\"btn btn-primary\" href=\"/request/gis/cwas.phtml\">CWSU Center Weather Advisories</a>\n<a class=\"btn btn-primary\" href=\"/request/gis/awc_gairmets.phtml\">Graphical AIRMETs</a>\n<a class=\"btn btn-primary\" href=\"/request/gis/pireps.php\">PIREPs</a>\n<a class=\"btn btn-primary\" href=\"/request/gis/awc_sigmets.phtml\">SIGMETs</a>\n</p>\n\n<form method=\"GET\" action=\"/cgi-bin/request/tempwind_aloft.py\" name=\"dl\" target=\"_blank\">\n<div class=\"form2url\"></div>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n\n<p><h3>1. Select Station:</h3><br>\n{$sselect}\n\n<p><strong>Returned Columns</strong>\n\n<table>\n<thead><tr><th>column</th><th>Description</th></tr></thead>\n<tbody>\n<tr><td>obtime</td><td>The timestamp within the FD product by which the forecast\nis said to be based off.</td></tr>\n<tr><td>ftime</td><td>The timestamp the values are valid for / forecast timestamp</td></tr>\n<tr><td>tmpc#####</td><td>Air Temperature (&deg;C) at given altitude</td></tr> \n<tr><td>sknt#####</td><td>Wind Speed (kts) at given altitude</td></tr> \n<tr><td>drct#####</td><td>Wind Direction (&deg;) at given altitude</td></tr> \n</tbody>\n</table>\n</p>\n\n</div>\n<div class=\"col-md-6\">\n\n<h3>2. Timezone of Observations:</h3>\n<i>The timestamps used in the downloaded files will be set in the\ntimezone you specify.</i>\n<select name=\"tz\">\n    <option value=\"UTC\">UTC Time</option>\n    <option value=\"America/New_York\">Eastern Time</option>\n    <option value=\"America/Chicago\">Central Time</option>\n    <option value=\"America/Denver\">Mountain Time</option>\n    <option value=\"America/Los_Angeles\">Western Time</option>\n</select>\n\n<h3>3. Select Start/End Time:</h3><br>\n<i>This limits the data returned for forecast times between the start\nand end date.</i>\n<table class=\"table table-sm\">\n<thead>\n  <tr>\n    <td></td>\n    <th>Year</th><th>Month</th><th>Day</th>\n  </tr>\n</thead>\n<tbody>\n  <tr>\n    <th>Start:</th>\n    <td>{$y1select}</td><td>{$m1select}</td><td>{$d1select}</td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>{$y2select}</td><td>{$m2select}</td><td>{$d2select}</td>\n  </tr>\n</tbody>\n</table>\n\n<h3>4. Data Format:</h3>\n<select name=\"format\">\n    <option value=\"csv\">Comma</option>\n    <option value=\"excel\">Excel</option>\n</select>\n\n<h3>Submit Form:</h3><br>\n<input type=\"submit\" value=\"Process Data Request\">\n<input type=\"reset\">\n\n</div></div>\n\n</form>\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/request/uscrn.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\n\n$t = new MyView();\n$t->iemss = True;\ndefine(\"IEM_APPID\", 165);\n\n$t->title = \"USCRN Data Download\";\n\n$ys1 = yearSelect(2001, date(\"Y\"), \"year1\");\n$ms1 = monthSelect(\"1\", \"month1\");\n$ds1 = daySelect(\"1\", \"day1\");\n$hs1 = gmtHourSelect(\"0\", \"hour1\");\n$ys2 = yearSelect(2001, date(\"Y\"), \"year2\");\n$ms2 = monthSelect(date(\"m\"), \"month2\");\n$ds2 = daySelect(date(\"d\"), \"day2\");\n$hs2 = gmtHourSelect(\"0\", \"hour2\");\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/uscrn/\">USCRN Mainpage</a></li>\n <li class=\"active\">USCRN Download</li>\n</ol>\n<h3>USCRN Data Download</h3>\n\n<p><a class=\"btn btn-secondary\" href=\"/cgi-bin/request/uscrn.py?help\"><i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend Documentation</a> exists for those that\nwish to script against this service.</p>\n\n<form target=\"_blank\" method=\"GET\" action=\"/cgi-bin/request/uscrn.py\" name=\"iemss\">\n<div class=\"form2url\"></div>\n<input type='hidden' name='network' value=\"USCRN\" />\n\n<div class=\"row\">\n<div class=\"col-sm-7\">\n\n<h3>1. Select Station(s):</h3>\n\n<div id=\"iemss\" data-network=\"USCRN\"></div>\n\n</div>\n<div class=\"col-sm-5\">\n\n<h3>2. Select Start/End Time:</h3>\n\n<table class=\"table table-sm\">\n  <tr>\n    <td></td>\n    <th>Year</th><th>Month</th><th>Day</th>\n    <th>Hour</th>\n  </tr>\n\n  <tr>\n    <th>Start:</th>\n    <td>{$ys1}</td>\n    <td>{$ms1}</td>\n    <td>{$ds1}</td>\n    <td>{$hs1}\n    <input type=\"hidden\" name=\"minute1\" value=\"0\"></td>\n    </td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>{$ys2}</td>\n    <td>{$ms2}</td>\n    <td>{$ds2}</td>\n    <td>{$hs2}\n    <input type=\"hidden\" name=\"minute2\" value=\"0\">\n    </td>\n  </tr>\n</table>\n\n<h3>3. How to download/view?</h3>\n\n<select name=\"what\">\n  <option value=\"txt\">Download as Delimited Text File</option>\n  <option value=\"excel\">Download as Excel</option>\n  <option value=\"html\">View as HTML webpage</option>\n</select>\n\n<h3>3a. Data Delimitation:</h3>\n\n<p>If you selected 'Delimited Text File' above, how do you want the values\nseparated in the downloaded file?</p>\n\n<select name=\"delim\">\n    <option value=\"comma\">Comma</option>\n    <option value=\"space\">Space</option>\n    <option value=\"tab\">Tab</option>\n</select>\n\n<h3>6. Submit Form:</h3>\n\n<input type=\"submit\" value=\"Process Data Request\">\n<input type=\"reset\">\n\n</div>\n</div>\n\n<h3>Returned data columns:</h3>\n<pre>\nutc_valid - Observation timestamp in UTC\nstation - Station identifier\ntmpc - Air Temperature [C]\nprecip_mm - Precipitation [mm]\nsrad - Solar Radiation [Wm2]\nsrad_flag - Flag\nskinc\nskinc_flag\nskinc_type\nrh\nrh_flag\nvsm5\nsoilc5\nwetness\nwetness_flag\nwind_mps\nwind_mps_flag\n</pre>\n\n<h3>Frequently Asked Questions:</h3>\n\n</form>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/request/wmo_bufr_srf.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\n\n$t = new MyView();\n$t->iemss = True;\ndefine(\"IEM_APPID\", 162);\n\n$t->title = \"WMO BUFR Surface Station Data Download\";\n\n$ys1 = yearSelect(2024, date(\"Y\"), \"year1\");\n$ms1 = monthSelect(\"1\", \"month1\");\n$ds1 = daySelect(\"1\", \"day1\");\n$hs1 = gmtHourSelect(\"0\", \"hour1\");\n$ys2 = yearSelect(2024, date(\"Y\"), \"year2\");\n$ms2 = monthSelect(date(\"m\"), \"month2\");\n$ds2 = daySelect(date(\"d\"), \"day2\");\n$hs2 = gmtHourSelect(\"0\", \"hour2\");\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n <li><a href=\"/other/\">Other Mainpage</a></li>\n <li class=\"active\">WMO BUFR Surface Download</li>\n</ol>\n<h3>WMO BUFR Surface Data Download</h3>\n\n<p><a class=\"btn btn-secondary\" href=\"/cgi-bin/request/wmo_bufr_srf.py?help\"><i class=\"bi bi-file-text\" aria-hidden=\"true\"></i> Backend Documentation</a> exists for those that\nwish to script against this service.</p>\n\n<form target=\"_blank\" method=\"GET\" action=\"/cgi-bin/request/wmo_bufr_srf.py\" name=\"iemss\">\n<div class=\"form2url\"></div>\n<input type='hidden' name='network' value=\"WMO_BUFR_SRF\" />\n\n<div class=\"row\">\n<div class=\"col-sm-7\">\n\n<h3>1. Select Station(s):</h3>\n\n<div id=\"iemss\" data-network=\"WMO_BUFR_SRF\"></div>\n\n</div>\n<div class=\"col-sm-5\">\n\n<h3>2. Select Start/End Time:</h3>\n\n<table class=\"table table-sm\">\n  <tr>\n    <td></td>\n    <th>Year</th><th>Month</th><th>Day</th>\n    <th>Hour</th>\n  </tr>\n\n  <tr>\n    <th>Start:</th>\n    <td>{$ys1}</td>\n    <td>{$ms1}</td>\n    <td>{$ds1}</td>\n    <td>{$hs1}\n    <input type=\"hidden\" name=\"minute1\" value=\"0\"></td>\n    </td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>{$ys2}</td>\n    <td>{$ms2}</td>\n    <td>{$ds2}</td>\n    <td>{$hs2}\n    <input type=\"hidden\" name=\"minute2\" value=\"0\">\n    </td>\n  </tr>\n</table>\n\n<h3>3. How to download/view?</h3>\n\n<select name=\"what\">\n  <option value=\"txt\">Download as Delimited Text File</option>\n  <option value=\"excel\">Download as Excel</option>\n  <option value=\"html\">View as HTML webpage</option>\n</select>\n\n<h3>3a. Data Delimitation:</h3>\n\n<p>If you selected 'Delimited Text File' above, how do you want the values\nseparated in the downloaded file?</p>\n\n<select name=\"delim\">\n    <option value=\"comma\">Comma\n    <option value=\"space\">Space\n    <option value=\"tab\">Tab\n</select>\n\n<h3>6. Submit Form:</h3>\n\n<input type=\"submit\" value=\"Process Data Request\">\n<input type=\"reset\">\n\n</div>\n</div>\n\n<h3>Returned data columns:</h3>\n<pre>\nutc_valid - Observation timestamp in UTC\nstation - Often WIGOS or guessed WIGOS identifier\ntmpf - Air temperature in F\ndwpf - Dew Point Temperature in F\ndrct - Wind Direction (degrees North)\nsknt - Wind Speed (knots)\ngust - Wind Gust (knots)\nrelh - Relative Humidity (%)\nalti - Pressure Altimeter (inch)\npcpncnt - Precipitation Counter (inch)\npday - Precip for Day (inch)\npmonth - Precip for Month (inch)\nsrad - Solar Radiation (W/m^2)\ntsoil_4in_f - Approx Four inch depth Soil Temp (F)\ntsoil_8in_f - Approx Eight inch depth Soil Temp (F)\ntsoil_16in_f - Approx Sixteen inch depth Soil Temp (F)\ntsoil_20in_f - Approx Twenty inch depth Soil Temp (F)\ntsoil_32in_f - Approx Thirty-Two inch depth Soil Temp (F)\ntsoil_40in_f - Approx Forty inch depth Soil Temp (F)\ntsoil_64in_f - Approx Sixty-Four inch depth Soil Temp (F)\ntsoil_128in_f - Approx One Hundred Twenty-Eight inch depth Soil Temp (F)\nskyc1 - Sky Cover 1\nskyc2 - Sky Cover 2\nskyc3 - Sky Cover 3\nskyc4 - Sky Cover 4\nskyl1 - Sky Level 1 (ft)\nskyl2 - Sky Level 2 (ft)\nskyl3 - Sky Level 3 (ft)\nskyl4 - Sky Level 4 (ft)\nsrad_1h_j - Solar Radiation 1 hour sum (J/m^2)\n</pre>\n\n<h3>Frequently Asked Questions:</h3>\n\n</form>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/river/index.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 71);\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/mlib.php\";\nrequire_once \"../../include/myview.php\";\n\n$t = new MyView();\n$t->title = \"River Forecast Point Monitor\";\n$content = \"\";\n\n$wfo = substr(get_str404(\"wfo\", \"DMX\"), 0, 3);\n$state = substr(get_str404(\"state\", \"IA\"), 0, 2);\n\n$sevcol = array(\n    \"N\" => \"#0f0\",\n    \"0\" => \"#ff0\",\n    \"1\" => \"#ff9900\",\n    \"2\" => \"#f00\",\n    \"3\" => \"#f0f\",\n    \"U\" => \"#fff\"\n);\n$jobs = Array(\n    \"W\" => \"warnings\",\n    \"A\" => \"watches\",\n);\n$c1 = \"\";\n$c2 = \"\";\n$c3 = \"\";\n$rivers = array();\n$used = array();\nforeach ($jobs as $key => $val) {\n    $url = \"{$EXTERNAL_BASEURL}/api/1/nws/current_flood_{$val}.json\";\n    if (array_key_exists(\"state\", $_REQUEST)) {\n        $c2 = \" bg-light border rounded p-3\";\n        $url .= \"?state={$state}\";\n        $ptitle = \"<h3>River Forecast Point Monitor by State</h3>\";\n    } else if (array_key_exists(\"all\", $_REQUEST)) {\n        $c3 = \" bg-light border rounded p-3\";\n        $ptitle = \"<h3>River Forecast Point Monitor (view all)</h3>\";\n    } else {\n        $c1 = \" bg-light border rounded p-3\";\n        $url .= \"?wfo={$wfo}\";\n        $ptitle = \"<h3>River Forecast Point Monitor by NWS WFO</h3>\";\n    }\n\n    $jdata = file_get_contents($url);\n    $jobj = json_decode($jdata, $assoc = TRUE);\n\n    foreach ($jobj[\"data\"] as $bogus => $row) {\n        if (in_array($row[\"nwsli\"], $used)) {\n            continue;\n        }\n        $used[] = $row[\"nwsli\"];\n        $river = $row[\"river_name\"];\n        $uri = sprintf(\n            \"/vtec/?year=%s&wfo=%s&phenomena=%s&significance=%s&eventid=%s\",\n            date(\"Y\"),\n            rectify_wfo($row[\"wfo\"]),\n            $row[\"phenomena\"],\n            $row[\"significance\"],\n            $row[\"eventid\"]\n        );\n        if (!array_key_exists($river, $rivers)) {\n            $rivers[$river] = \"\";\n        }\n\n        $rivers[$river] .= sprintf(\n            \"<tr><td style='background: %s;'>&nbsp;&nbsp;</td>\" .\n            \"<td>%s</td>\" .\n                \"<th>%s<br />\" .\n                \"<a href=\\\"/plotting/auto/?q=160&amp;station=%s\\\"><i class=\\\"bi bi-graph-up-arrow\\\" aria-hidden=\\\"true\\\"></i> %s</a></th><td><a href='%s'>%s</a></td><td>%s</td>\" .\n                \"<td>%s</td><td>%s</td><td><strong>Impact...</strong> %s</td></tr>\",\n            $sevcol[$row[\"severity\"]],\n            ($key == \"W\" ? \"Flood Warning\" : \"Flood Watch\"),\n            $row[\"name\"],\n            $row[\"nwsli\"],\n            $row[\"nwsli\"],\n            $uri,\n            $row[\"counties\"],\n            $row[\"stage_text\"],\n            $row[\"flood_text\"],\n            $row[\"forecast_text\"],\n            $row[\"impact_text\"]\n        );\n    }\n}\n$content .= $ptitle;\n$nselect = networkSelect(\"WFO\", $wfo, array(), 'wfo');\n$sselect = stateSelect($state);\n$content .= <<<EOM\n<p>This page produces a summary listing for National Weather Service Flood\nForecast Points when the point is currently in a flood watch or warning state.\nThe IEM\nprocesses the flood products and attempts to extract the important\ndetails regarding flood state, severity, forecasted stage and impact. By clicking\non the graph icon near the location identfier, you are taken to an IEM Autoplot\nwhich shows forecasted stage and observations.</p>\n\n<p>Data presented here was provided by this <a href=\"{$url}\">JSON Web Service</a>.\nDocumentation on this webservice is\n<a href=\"/api/1/docs#/default/service_nws_current_flood_warnings__fmt__get\">here</a>.</p>\n\n\n<h3>Three Ways to View Forecasts</h3>\n<div class=\"row\">\n  <div class=\"col-md-4{$c1}\">\n    <h4>1. By NWS Forecast Office</h4>\n<form method=\"GET\" name=\"wfo\">\n{$nselect} <input type=\"submit\" value=\"Select by WFO\" class=\"btn btn-primary\">\n</form>\n  </div>\n  <div class=\"col-md-4{$c2}\">\n    <h4>2. By State</h4>\n<form method='GET' name='state'>\n{$sselect} <input type=\"submit\" value=\"Select by State\" class=\"btn btn-primary\">\n</form>\n  </div>\n  <div class=\"col-md-4{$c3}\">\n    <h4>3. Show all Available</h4>\n    <a href=\"?all\" class=\"btn btn-primary\"><i class=\"bi bi-globe\" aria-hidden=\"true\"></i> View All</a>\n\n  </div>\n</div>\n\n<p>\n\n<table class=\"table table-sm table-bordered\">\n<tr>\n <th>Key:</th>\n <td style=\"background: #ff0;\">Near Flood Stage</td>\n <td style=\"background: #ff9900;\">Minor Flooding</td>\n <td style=\"background: #f00;\">Moderate Flooding</td>\n <td style=\"background: #f0f;\">Major Flooding</td>\n</tr>\n</table>\nEOM;\n\n$content .= '<p><table class=\"table table-sm table-bordered\">';\n$rvs = array_keys($rivers);\nasort($rvs);\n\nforeach ($rvs as $idx => $key) {\n    $content .=  \"<tr><th colspan=\\\"8\\\" style='background: #eee; text-align: left;'>$key</th></tr>\";\n    $content .=  $rivers[$key];\n}\nif (sizeof($rvs) == 0) {\n    $content .= \"<tr><td colspan=\\\"8\\\">No Entries Found</td></tr>\";\n}\n\n$content .=  \"</table>\";\n\n$t->content = $content;\n$t->render(\"full.phtml\");\n"
  },
  {
    "path": "htdocs/roads/gis.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n  <li><a href=\"/roads/\">Roads</a></li>\n  <li class=\"active\">GIS Products</li>\n</ol>\n\n<h3>GIS Products:</h3>\n\n<p>\nThe Iowa Road Conditions data is available in the following GIS formats and \nOpen-GIS based web services.  Please let us know if you would like to see a different format or have any questions about these data sources.\n</p>\n\n<h4>Shapefile:</h4>\n<p>\nLine coverage shapefile in the <i>NAD83 UTM Zone15 North</i> projection.\n</p>\n<ul>\n <li>Current road conditions: <a href=\"/data/gis/shape/26915/ia/iaroad_cond.zip\">Zip File</a> (~200 KB)</li>\n</ul>\n\n<h4>Google Earth / KML</h4>\n\n<p>This file is in KML format, which works in many applications, such as \nGoogle Earth.<br />\n\n<a href=\"/kml/roadcond.kml\">{$EXTERNAL_BASEURL}/kml/roadcond.kml</a>\n\n<p>Also, here is a test layer you can use to see the various colors used.<br />\n\n<a href=\"/kml/roadcond.php?test\">{$EXTERNAL_BASEURL}/kml/roadcond.php?test</a>\n\n<h4>Open GIS Consortium Web Services:</h4>\n<p>\nSome intelligent GIS platforms are able to consume data from remove\nservers that implement <a href=\"http://www.opengis.org\">Open GIS Consortium</a>\nweb services.  If your client supports this feature, try pointing your\napplication to one of these services.\n</p>\n\n<p><strong>Web Map Service:</strong>\n<br /> <code>{$EXTERNAL_BASEURL}/cgi-bin/wms/iowa/roadcond.cgi?</code></p>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/roads/history.css",
    "content": "/* Roads History Page Styles - Bootstrap 5 + Tabulator compatible */\n\n/* Legacy table styling (in case Tabulator doesn't initialize) */\n#table1 {\n    width: 100%;\n    border-collapse: collapse;\n}\n\n#table1 th, #table1 td {\n    border: 1px solid #ddd;\n    padding: 8px;\n}\n\n#table1 th {\n    background-color: #f2f2f2;\n    text-align: left;\n}\n\n/* Card styling enhancements */\n.card {\n    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n    border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header.bg-primary {\n    border-bottom: 1px solid rgba(255, 255, 255, 0.125);\n}\n\n/* Icon styling */\n.bi {\n    vertical-align: -0.125em;\n}\n\n/* Alert enhancements */\n.alert {\n    border: 1px solid;\n    border-radius: 0.375rem;\n}\n\n/* Form enhancements */\n.form-select {\n    background-position: right 0.75rem center;\n}\n\n/* Table enhancements for Bootstrap styling */\n.table-striped > tbody > tr:nth-of-type(odd) > td {\n    background-color: rgba(0, 0, 0, 0.025);\n}\n\n.table-hover > tbody > tr:hover > td {\n    background-color: rgba(0, 0, 0, 0.075);\n}\n"
  },
  {
    "path": "htdocs/roads/history.module.js",
    "content": "import { TabulatorFull as Tabulator } from 'https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator_esm.min.js';\nimport { requireElement } from '/js/iemjs/domUtils.js';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    const tableElement = requireElement('table1');\n\n    // Get existing table headers\n    const headers = Array.from(tableElement.querySelectorAll('thead th')).map(th => th.textContent.trim());\n    \n    window.hs = new Tabulator(tableElement, {\n        layout: \"fitColumns\",\n        pagination: \"local\",\n        paginationSize: 25,\n        headerFilter: true,\n        columns: headers.map((header, index) => ({\n            title: header,\n            field: `col_${index}`,\n            formatter: index === 1 || index === 2 ? \"html\" : undefined,\n        })),\n    });\n});\n"
  },
  {
    "path": "htdocs/roads/history.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 43);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\n$t = new MyView();\n$t->iemselect2 = TRUE;\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"history.css\">\n<link rel=\"stylesheet\" href=\"https://unpkg.com/tabulator-tables@6.3.1/dist/css/tabulator_bootstrap5.min.css\">\nEOM;\n$dbconn = iemdb('postgis');\n\n$month = get_int404(\"month\", intval(date(\"m\")));\n$year = get_int404(\"year\", intval(date(\"Y\")));\n$segid = get_int404(\"segid\", null);\n$valid = isset($_GET[\"valid\"]) ? DateTime::createFromFormat(\"Y-m-d H:i\", xssafe($_GET['valid'])) : null;\n\nfunction segmentSelect($dbconn, $year, $month, $selected, $name = \"segid\")\n{\n    $s = \"<select name=\\\"$name\\\" id=\\\"$name\\\" class=\\\"form-select iemselect2\\\">\\n\";\n    $s .= \"<option value=\\\"\\\">Choose a road segment...</option>\\n\";\n    $stname = iem_pg_prepare(\n        $dbconn, <<<EOM\n    SELECT segid, major, minor from roads_base\n    WHERE archive_begin <= $1 and (archive_end > $1 or archive_end is null)\n    ORDER by major ASC\nEOM\n    );\n    $rs = pg_execute($dbconn, $stname, array(\"{$year}-{$month}-01\"));\n    while ($row = pg_fetch_assoc($rs)) {\n        $s .= \"<option value=\\\"\" . $row[\"segid\"] . \"\\\" \";\n        if ($row[\"segid\"] == $selected) $s .= \"SELECTED\";\n        $s .= \">{$row['major']} -- {$row['minor']}</option>\";\n    }\n    $s .= \"</select>\";\n    return $s;\n} // End of segmentSelect\n\n$t->title = \"Historical Iowa Winter Road Conditions\";\n$t->jsextra = <<<EOM\n<script src=\"history.module.js\" type=\"module\"></script>\nEOM;\n\n$segselect = segmentSelect($dbconn, $year, $month, strval($segid));\n\n// Create year and month selects with Bootstrap 5 classes\n$yearOptions = array();\nfor ($i = 2006; $i <= intval(date(\"Y\")); $i++) {\n    $yearOptions[$i] = (string)$i;\n}\n$ys = make_select(\"year\", $year, $yearOptions, \"\", \"form-select\");\n\n$monthOptions = array();\nfor ($i = 1; $i <= 12; $i++) {\n    $ts = new DateTime(\"2000-$i-01\");\n    $monthOptions[$i] = $ts->format(\"M\");\n}\n$ms = make_select(\"month\", $month, $monthOptions, \"\", \"form-select\");\n\n$content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\">\n      <a href=\"/roads/\"><i class=\"bi bi-arrow-left-circle me-1\"></i>Roads Mainpage</a>\n    </li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Historical Listing</li>\n  </ol>\n</nav>\n\n<div class=\"d-flex align-items-center mb-4\">\n  <i class=\"bi bi-clock-history me-2 text-primary fs-4\"></i>\n  <h3 class=\"mb-0\">Historical Road Conditions</h3>\n</div>\n\n<div class=\"card mb-4\">\n  <div class=\"card-header bg-light\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-funnel me-2\"></i>Filter Options\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <form method=\"GET\" action=\"history.phtml\">\n      <div class=\"row g-3 align-items-end\">\n        <div class=\"col-md-4\">\n          <label for=\"segid\" class=\"form-label\">\n            <i class=\"bi bi-signpost-2 me-1\"></i>Road Segment\n          </label>\n          {$segselect}\n        </div>\n        <div class=\"col-md-3\">\n          <label for=\"year\" class=\"form-label\">\n            <i class=\"bi bi-calendar me-1\"></i>Year\n          </label>\n          {$ys}\n        </div>\n        <div class=\"col-md-3\">\n          <label for=\"month\" class=\"form-label\">\n            <i class=\"bi bi-calendar-month me-1\"></i>Month\n          </label>\n          {$ms}\n        </div>\n        <div class=\"col-md-2\">\n          <button type=\"submit\" class=\"btn btn-primary w-100\">\n            <i class=\"bi bi-search me-1\"></i>View History\n          </button>\n        </div>\n      </div>\n    </form>\n  </div>\n</div>\nEOM;\n\n\nif (isset($_GET[\"month\"]) && isset($_GET[\"segid\"])) {\n    $content .= <<<EOM\n<div class=\"alert alert-info d-flex align-items-start\" role=\"alert\">\n  <i class=\"bi bi-info-circle-fill me-2 mt-1 flex-shrink-0\"></i>\n  <div>\n    <strong>Historical Data:</strong> Here is a listing of historical road conditions for the selected segment. \n    Updates during active weather can be as frequent as every five minutes, but this display only shows \n    when the segment changed condition. Click on the time of any report to get a listing of all road \n    conditions for that time.\n  </div>\n</div>\nEOM;\n    \n    $content .= <<<EOM\n<div class=\"card\">\n  <div class=\"card-header bg-primary text-white\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-table me-2\"></i>Road Condition History\n    </h5>\n  </div>\n  <div class=\"card-body p-0\">\n    <table id='table1' class=\"table table-striped table-hover mb-0\">\n      <thead class=\"table-dark\">\n        <tr>\n          <th><i class=\"bi bi-calendar-date me-1\"></i>Date</th>\n          <th><i class=\"bi bi-clock me-1\"></i>Report Time</th>\n          <th><i class=\"bi bi-signpost-2 me-1\"></i>Road Segment</th>\n          <th><i class=\"bi bi-exclamation-triangle me-1\"></i>Condition</th>\n        </tr>\n      </thead>\n      <tbody>\nEOM;\n    $sts = new DateTime(\"{$year}-{$month}-01\");\n    $ets = new DateTime(\"{$year}-{$month}-01\");\n    $ets->modify(\"+1 month\");\n    $stname = iem_pg_prepare($dbconn, <<<EOM\n    SELECT c.label, l.valid,\n    b.major, b.minor from roads_base b,\n    roads_log l, roads_conditions c WHERE l.segid = $1 and\n    l.valid >= $2 and l.valid < $3 and l.cond_code = c.code\n    and b.segid = l.segid ORDER by valid ASC\nEOM);\n    $rs = pg_execute($dbconn, $stname, array($segid, $sts->format(\"Y-m-d\"), $ets->format(\"Y-m-d\")));\n\n    $lastcond = \"\";\n    while ($row = pg_fetch_assoc($rs)) {\n        if ($lastcond == $row[\"label\"]) continue;\n        $lastcond = $row[\"label\"];\n        $ts = strtotime(substr($row[\"valid\"], 0, 16));\n        $content .= sprintf(\n            \"<tr><td>%s</td>\n            <td><a href=\\\"history.phtml?valid=%s\\\">%s</a></td>\n            <td>%s -- %s</td><td>%s</td></tr>\",\n            date('d M Y', $ts),\n            date('Y-m-d H:i', $ts),\n            date('h:i A', $ts),\n            $row[\"major\"],\n            $row[\"minor\"],\n            $row[\"label\"]\n        );\n    }\n    $content .= <<<EOM\n      </tbody>\n    </table>\n  </div>\n</div>\nEOM;\n} else if (!is_null($valid)) {\n    $year = intval($valid->format(\"Y\"));\n    $content .= <<<EOM\n<div class=\"alert alert-info d-flex align-items-start\" role=\"alert\">\n  <i class=\"bi bi-info-circle-fill me-2 mt-1 flex-shrink-0\"></i>\n  <div>\n    <strong>Snapshot View:</strong> Here is a listing of historical road conditions for a particular\n    time for all roads monitored in Iowa. Click on the segment name to get \n    a listing of historical conditions for that segment.\n  </div>\n</div>\nEOM;\n    \n    $gisurl = \"{$EXTERNAL_BASEURL}/archive/data/\" . $valid->format('Y/m/d/') . \"/GIS/\";\n    $content .= <<<EOM\n<div class=\"alert alert-secondary d-flex align-items-center\" role=\"alert\">\n  <i class=\"bi bi-download me-2\"></i>\n  <span>Directory of <a href=\"$gisurl\" class=\"alert-link\">GIS shapefiles</a> for this UTC date.</span>\n</div>\nEOM;\n    \n    $content .= <<<EOM\n<div class=\"card\">\n  <div class=\"card-header bg-primary text-white\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-table me-2\"></i>Road Conditions Snapshot\n    </h5>\n  </div>\n  <div class=\"card-body p-0\">\n    <table id='table1' class=\"table table-striped table-hover mb-0\">\n      <thead class=\"table-dark\">\n        <tr>\n          <th><i class=\"bi bi-calendar-date me-1\"></i>Date</th>\n          <th><i class=\"bi bi-clock me-1\"></i>Report Time</th>\n          <th><i class=\"bi bi-signpost-2 me-1\"></i>Road Segment</th>\n          <th><i class=\"bi bi-exclamation-triangle me-1\"></i>Condition</th>\n        </tr>\n      </thead>\n      <tbody>\nEOM;\n    $stname = iem_pg_prepare(\n        $dbconn,\n        \"SELECT c.label, l.valid, b.major, b.minor, \" .\n            \"b.segid from roads_base b, roads_log l, roads_conditions c \" .\n            \"WHERE l.valid > $1 and l.valid < $2 and l.cond_code = c.code \" .\n            \"and b.segid = l.segid ORDER by major ASC\"\n    );\n    $sts = DateTime::createFromFormat(\"Y-m-d H:i\", $_GET[\"valid\"]);\n    $sts->sub(new DateInterval('P1D'));\n    $ets = DateTime::createFromFormat(\"Y-m-d H:i\", $_GET[\"valid\"]);\n    $ets->add(new DateInterval('P1D'));\n    $rs = pg_execute(\n        $dbconn,\n        $stname,\n        array($sts->format(\"Y-m-d H:i\"), $ets->format(\"Y-m-d H:i\"))\n    );\n\n    while ($row = pg_fetch_assoc($rs)) {\n        $ts = strtotime(substr($row[\"valid\"], 0, 16));\n        $content .= sprintf(\n            \"<tr><td>%s</td><td>%s</td>\n            <td><a href=\\\"history.phtml?segid=%s&month=%s\\\">%s -- %s</a></td>\n            <td>%s</td></tr>\",\n            date('d M Y', $ts),\n            date('h:i A', $ts),\n            $row[\"segid\"],\n            date('m', $ts),\n            $row[\"major\"],\n            $row[\"minor\"],\n            $row[\"label\"]\n        );\n    }\n    $content .= <<<EOM\n      </tbody>\n    </table>\n  </div>\n</div>\nEOM;\n} else {\n    $content .= <<<EOM\n<div class=\"card\">\n  <div class=\"card-header bg-light\">\n    <h5 class=\"card-title mb-0\">\n      <i class=\"bi bi-info-circle me-2\"></i>About This Archive\n    </h5>\n  </div>\n  <div class=\"card-body\">\n    <p class=\"mb-3\">\n      <i class=\"bi bi-archive me-2 text-primary\"></i>\n      The Iowa Environmental Mesonet archives the road condition reports as \n      generated by the Iowa State Patrol. From this page, you can generate a \n      listing of road conditions per road segment for a particular month or a listing\n      of all road conditions for a particular time.\n    </p>\n    \n    <div class=\"alert alert-success d-flex align-items-center\" role=\"alert\">\n      <i class=\"bi bi-check-circle-fill me-2\"></i>\n      <span><strong>Archive Coverage:</strong> Our archive is basically complete back to 14 Feb 2006.</span>\n    </div>\n    \n    <h6 class=\"mt-4 mb-3\">\n      <i class=\"bi bi-map me-2\"></i>GIS Data Archive\n    </h6>\n    <p class=\"mb-2\">Archive of GIS shapefiles per report available at:</p>\n    <div class=\"bg-light p-3 rounded\">\n      <code>\n        <a href=\"/archive/data/2005/01/30/GIS/\" class=\"text-decoration-none\">\n          <i class=\"bi bi-link-45deg me-1\"></i>{$EXTERNAL_BASEURL}/archive/data/2005/01/30/GIS/\n        </a>\n      </code>\n    </div>\n    <small class=\"text-muted\">\n      <i class=\"bi bi-info-circle me-1\"></i>\n      Look for the iaroads_* files. Timestamps are in UTC.\n    </small>\n  </div>\n</div>\nEOM;\n}\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/roads/iem.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/vendor/mapscript.php\";\nrequire_once \"../../include/forms.php\";\n\n$con = iemdb(\"postgis\");\n\n$eightbit = array_key_exists(\"8bit\", $_GET);\n$metroview = array_key_exists(\"metro\", $_GET);\n$thumbnail = array_key_exists(\"thumbnail\", $_GET);\n\nif (!array_key_exists(\"valid\", $_GET)) {\n    $sql = \"SELECT max(valid) as valid from roads_current\";\n    $rs = pg_query($con, $sql);\n\n    $row = pg_fetch_assoc($rs, 0);\n    $ts = new DateTime(substr($row[\"valid\"], 0, 16), new DateTimeZone(\"America/Chicago\"));\n} else {\n    $ts = new DateTime(get_str404(\"valid\", null), new DateTimeZone(\"America/Chicago\"));\n}\n\n$map = new MapObj(\"roads.map\");\nif ($eightbit) {\n    $map->selectOutputFormat(\"png\");\n} else {\n    $map->selectOutputFormat(\"png24\");\n}\n$map->imagecolor->setRGB(140, 144, 90);\n$map->outputformat->__set('imagemode', MS_IMAGEMODE_RGB);\n$map->outputformat->__set('transparent', MS_OFF);\n\n$map->setextent(200000, 4440000, 710000, 4940000);\nif ($metroview) {\n    $map->setextent(376000, 4560000, 535000, 4680000);\n}\n$height = 496;\n$width = 640;\nif ($thumbnail) {\n    $height = 240;\n    $width = 320;\n}\n$map->__set(\"width\", $width);\n$map->__set(\"height\", $height);\n\n$img = $map->prepareImage();\n\nif (array_key_exists(\"nexrad\", $_GET)) {\n    $gmtts = clone $ts;\n    $gmtts->setTimezone(new DateTimeZone(\"UTC\"));\n    $radarfn = sprintf(\"/mesonet/ARCHIVE/data/%s/GIS/uscomp/n0q_%s.png\", $gmtts->format(\"Y/m/d\"), $gmtts->format(\"YmdHi\"));\n    $radar = $map->getLayerByName(\"nexrad_n0q\");\n    $radar->__set(\"status\", MS_ON);\n    $radar->__set(\"data\", $radarfn);\n    $radar->draw($map, $img);\n}\n\n$counties = $map->getLayerByName(\"counties\");\nif ($metroview) {\n    $counties->__set(\"status\", MS_ON);\n    $counties->draw($map, $img);\n}\n\n$states = $map->getLayerByName(\"states\");\n$states->__set(\"status\", MS_ON);\n$states->draw($map, $img);\n\n$visibility = $map->getLayerByName(\"visibility\");\n$visibility->__set(\"status\", MS_ON);\n$visibility->draw($map, $img);\n\n$roads = $map->getLayerByName(\"roads\");\n$roads->__set(\"status\", MS_ON);\n$dbvalid = $ts->format('Y-m-d H:i');\n# yuck\n$dbvalid2 = clone $ts;\n$dbvalid2->sub(new DateInterval(\"P90D\"));\n$dbvalid2 = $dbvalid2->format('Y-m-d H:i');\nif (array_key_exists('valid', $_GET)) {\n    $sql = <<< EOM\n    geom from (\n        with data as (\n            select b.segid, c.cond_code,\n            row_number() OVER (PARTITION by b.segid ORDER by c.valid DESC)\n            from roads_base b, roads_log c WHERE b.segid = c.segid\n            and c.valid < '$dbvalid' and c.valid > '$dbvalid2'),\n        agg as (\n            select * from data where row_number = 1)\n\n        select b.type as rtype, b.int1, random() as boid, b.geom,\n        d.cond_code from roads_base b JOIN agg d on (b.segid = d.segid)\n        WHERE b.type > 1)\n    as foo using UNIQUE boid using SRID=26915\nEOM;\n    $roads->__set(\"data\", $sql);\n}\n$roads->draw($map, $img);\n\n$roads_int = $map->getLayerByName(\"roads-inter\");\n$roads_int->__set(\"status\", MS_ON);\nif (array_key_exists('valid', $_GET)) {\n    $roads_int->__set(\"data\", str_replace(\"b.type > 1\", \"b.type = 1\", $sql));\n}\n$roads_int->draw($map, $img);\n\nif (array_key_exists(\"trucks\", $_GET)) {\n    // 10 minute window for trucks\n    $w1 = clone $ts;\n    $w1->sub(new DateInterval(\"PT5M\"));\n    $w1 = $w1->format('Y-m-d H:i');\n    $w2 = clone $ts;\n    $w2->add(new DateInterval(\"PT5M\"));\n    $w2 = $w2->format('Y-m-d H:i');\n    $trucks = $map->getLayerByName(\"trucks\");\n    $trucks->__set(\"status\", MS_ON);\n    $trucks->__set(\"data\", \"geom from (select geom, random() as boid from \" .\n        \"idot_snowplow_archive WHERE valid > '{$w1}' and valid < '{$w2}') as foo \" .\n        \"using UNIQUE boid using SRID=4326\");\n    $trucks->draw($map, $img);\n}\n\nif ($thumbnail) {\n    $logokey2 = $map->getLayerByName(\"colorkey-small\");\n} else {\n    $logokey2 = $map->getLayerByName(\"colorkey\");\n}\n$logokey2->__set(\"status\", MS_ON);\n$c1 = $logokey2->getClass(0);\n$s1 = $c1->getStyle(0);\nif ($thumbnail) {\n    $s1->__set(\"size\", 30);\n} else if ($eightbit) {\n    $s1->__set(\"symbolname\", \"logokey-8bit\");\n    $s1->__set(\"size\", 60);\n} else {\n    $s1->__set(\"size\", 50);\n}\n\n$logokey = new layerObj($map);\n$logokey->__set(\"type\", MS_SHAPE_POINT);\n$logokey->__set(\"transform\", MS_FALSE);\n$logokey->__set(\"status\", MS_ON);\n$logokey->__set(\"labelcache\", MS_ON);\n$logokey->__set(\"status\", MS_ON);\n\n$logokey_c3 = new classObj($logokey);\n$logokey_c3s0 = new styleObj($logokey_c3);\n$l = $logokey_c3->addLabel(new labelObj());\n$logokey_c3->getLabel(0)->__set(\"buffer\", 10);\n$logokey_c3->getLabel(0)->__set(\"size\", MS_MEDIUM);\n$logokey_c3->getLabel(0)->color->setRGB(0, 0, 0);\n$bpt = new pointObj();\n$bpt->setXY(300, 300);\n$bpt->draw($map, $logokey, $img, 0, \"      \");\n\n$map->drawLabelCache($img);\n\n$logokey2->draw($map, $img);\n\n$layer = $map->getLayerByName(\"credits\");\n$c = $layer->getClass(0);\n$point = new pointObj();\nif ($thumbnail) {\n    $point->setXY(85, 230);\n    $c->label->__set(\"size\", MS_LARGE);\n} else {\n    $point->setXY(300, 10);\n}\n$point->draw($map, $layer, $img, 0, $ts->format('Y-m-d h:i A'));\n\n$map->drawLabelCache($img);\n\nheader(\"Content-type: image/png\");\necho $img->getBytes();\n"
  },
  {
    "path": "htdocs/roads/index.phtml",
    "content": "<?php \nrequire_once '../../config/settings.inc.php';\ndefine(\"IEM_APPID\", 150);\nrequire_once '../../include/myview.php';\n\n$t = new MyView();\n$t->title = 'Winter Road Conditions';\n$t->refresh = 600;\n$tm = time();\n$t->content = <<<EOM\n\n<div class=\"row\">\n<div class=\"col-md-4\">\n\n<strong>Website Features:</strong>\n<ul>\n<li><a href=\"gis.phtml\">GIS Products</a>\n  <br />Current road conditions in GIS formats + web services.</li>\n<li><a href=\"history.phtml\">History Listing</a>\n  <br />Listing of monthly condition changes for a single segment.</li>\n<li><a href=\"rc.phtml\">Sortable Text</a>\n  <br />Sortable textual report of current road conditions.</li>\n<li><a href=\"maps.phtml\">Web Mapping</a>\n  <br />Internet mapping application with RADAR included!</li>\n</ul>\n\n<strong>Links:</strong>\n<ul>\n <li><a href=\"http://www.511ia.org/\">Iowa DOT 511 Page</a></li>\n <li><a href=\"https://services.arcgis.com/8lRhdTsQyJpO52F1/ArcGIS/rest/services/511_IA_Road_Conditions_View/FeatureServer\">Iowa DOT REST Service</a></li>\n <li><a href=\"https://services.arcgis.com/8lRhdTsQyJpO52F1/ArcGIS/rest/services/Midwest_Winter_Road_Conditions_View/FeatureServer\">Midwest Road Conditions REST Service</a></li>\n <li><a href=\"http://www.dps.state.ia.us/ISP/\">Iowa State Patrol</a></li>\n</ul>\n\n</div><div class=\"col-md-8\">\n\n<img class=\"img-fluid\" src=\"/data/iaroads.png?{$tm}\">\n\n<p>An archive of this image is in the:\n<a href=\"/timemachine/?product=118\" class=\"btn btn-success\"><i class=\"bi bi-clock\" aria-hidden=\"true\"></i> IEM Time Machine</a>.</p>\n\n<br />Data shown is provisional and without warranty.\n\n</div></div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/roads/maps.css",
    "content": "#map {\n    width: 100%;\n    height: 600px;\n    border: none;\n}\n\n.legend-color {\n    width: 20px;\n    height: 15px;\n    border: 1px solid #ccc;\n    border-radius: 3px;\n    flex-shrink: 0;\n}\n\n.legend-items {\n    border-left: 3px solid #dee2e6;\n    padding-left: 0.75rem;\n}\n\n@media (max-width: 768px) {\n    #map {\n        height: 400px;\n    }\n    \n    .legend-items {\n        border-left: none;\n        border-top: 2px solid #dee2e6;\n        padding-left: 0;\n        padding-top: 0.75rem;\n        margin-top: 0.75rem;\n    }\n}"
  },
  {
    "path": "htdocs/roads/maps.js",
    "content": "/* global ol */\nconst style = new ol.style.Style({\n    fill: new ol.style.Fill({\n        color: 'rgba(255, 255, 255, 0)'\n    }),\n    stroke: new ol.style.Stroke({\n        color: '#000000',\n        width: 2\n    })\n});\n\n// Lookup 'table' for styling of road conditions based on cond_code\nconst rcLookup = {\n    0: '#000000',\n    1: '#00CC00',\n    3: '#F0F000',\n    7: '#F0F000',\n    11: '#F0F000',\n    15: '#FFC5C5',\n    19: '#FE3299',\n    23: '#B500B5',\n    27: '#FFC5C5',\n    31: '#FE3399',\n    35: '#B500B5',\n    39: '#99FFFF',\n    43: '#0099FE',\n    47: '#00009E',\n    51: '#E85F01',\n    56: '#FFC5C5',\n    60: '#FE3399',\n    64: '#B500B5',\n    86: '#FF0000'\n};\n\ndocument.addEventListener('DOMContentLoaded', () => {\n\n    const roadLayer = new ol.layer.Vector({\n        title: 'Winter Road Conditions',\n        source: new ol.source.Vector({\n            url: '/geojson/winter_roads.geojson',\n            format: new ol.format.GeoJSON()\n        }),\n        style: (feature) => {\n            try{\n                style.getStroke().setColor(rcLookup[feature.get('code')]);\n            } catch {\n                // empty\n            }\n            return [style];\n        }\n    });\n    \n    const map = new ol.Map({\n        target: 'map',\n        layers: [new ol.layer.Tile({\n            title: 'OpenStreetMap',\n            visible: true,\n            source: new ol.source.OSM()\n        }), roadLayer],\n        view: new ol.View({\n            projection: 'EPSG:3857',\n            center: ol.proj.transform([-93.5, 42.1], 'EPSG:4326', 'EPSG:3857'),\n            zoom: 7\n        })\n    });\n\n    // Create a LayerSwitcher instance and add it to the map\n    map.addControl(new ol.control.LayerSwitcher());\n\n}); // End of onready\n"
  },
  {
    "path": "htdocs/roads/maps.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 112);\nrequire_once \"../../include/mlib.php\";\nforce_https();\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n\n$OL = '10.6.1';\n$con = iemdb(\"postgis\");\n$sql = \"SELECT max(valid) as valid from roads_current\";\n$rs = pg_query($con, $sql);\n\n$row = pg_fetch_assoc($rs, 0);\n$valid = substr($row[\"valid\"], 0, 16);\n$ts = strtotime($valid);\n$valid = date(\"h:i A, d M Y\", $ts);\n\n$t->headextra = <<<EOM\n<link type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"maps.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"/vendor/openlayers/{$OL}/ol.js\"></script>\n<script src=\"/vendor/openlayers/{$OL}/ol-layerswitcher.js\"></script>\n<script src=\"maps.js\"></script>\nEOM;\n$t->title = \"Interactive Road Conditions\";\n$t->content = <<<EOM\n\n<div class=\"container-fluid\">\n\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n  <li class=\"breadcrumb-item\"><a href=\"/roads/\">Roads</a></li>\n  <li class=\"breadcrumb-item active\" aria-current=\"page\">Interactive Mapping</li>\n</ol>\n</nav>\n\n<div class=\"row mb-4\">\n<div class=\"col-md-12\">\n<div class=\"card\">\n<div class=\"card-header\">\n<h3 class=\"card-title mb-0\">Interactive Road Conditions Map</h3>\n</div>\n<div class=\"card-body\">\n<p class=\"card-text\">\n<i class=\"bi bi-info-circle text-info\" aria-hidden=\"true\"></i>\nThis interactive map displays current road conditions across Iowa. Data is updated regularly and shows the latest conditions as of <strong>{$valid}</strong>.\nUse the map controls to zoom, pan, and switch between different data layers.\n</p>\n</div>\n</div>\n</div>\n</div>\n\n<div class=\"row\">\n<div class=\"col-lg-9 col-md-8 mb-4\">\n\n<div class=\"card\">\n<div class=\"card-header d-flex justify-content-between align-items-center\">\n<h4 class=\"card-title mb-0\">Road Conditions Map</h4>\n<small class=\"text-muted\">Last Updated: {$valid}</small>\n</div>\n<div class=\"card-body p-0\">\n<div id=\"map\" class=\"rounded-bottom\"></div>\n</div>\n</div>\n\n</div>\n<div class=\"col-lg-3 col-md-4 mb-4\">\n\n<div class=\"card h-100\">\n<div class=\"card-header\">\n<h5 class=\"card-title mb-0\">Legend & Information</h5>\n</div>\n<div class=\"card-body\">\n\n\n<div class=\"mb-4\">\n<h6 class=\"fw-bold\">Map Controls</h6>\n<ul class=\"list-unstyled small\">\n<li><i class=\"bi bi-cursor text-primary\" aria-hidden=\"true\"></i> Click and drag to pan</li>\n<li><i class=\"bi bi-zoom-in text-primary\" aria-hidden=\"true\"></i> Mouse wheel to zoom</li>\n<li><i class=\"bi bi-layers text-primary\" aria-hidden=\"true\"></i> Use layer switcher for different views</li>\n</ul>\n</div>\n\n<div class=\"alert alert-info\">\n<small>\n<i class=\"bi bi-clock\" aria-hidden=\"true\"></i>\nRoad conditions are reported by Iowa DOT and updated as conditions change. \nAlways exercise caution when driving in adverse weather conditions.\n</small>\n</div>\n\n</div>\n</div>\n\n</div>\n</div>\n\n<div class=\"row\">\n<div class=\"col-md-12\">\n<div class=\"card\">\n<div class=\"card-header\">\n<h5 class=\"card-title mb-0\">Data Sources & API Information</h5>\n</div>\n<div class=\"card-body\">\n<p class=\"card-text\">This map utilizes various <a href=\"/api/#json\" class=\"btn btn-sm btn-outline-primary\">GeoJSON Services</a> and\n<a href=\"/ogc/\" class=\"btn btn-sm btn-outline-secondary\">OGC WebMap Services</a> provided by the IEM.</p>\n\n<div class=\"row mt-3\">\n<div class=\"col-md-6\">\n<h6 class=\"fw-bold\">Available APIs:</h6>\n<ul class=\"list-unstyled\">\n<li><a href=\"/api/#json\" class=\"text-decoration-none\"><i class=\"bi bi-code-slash text-success\" aria-hidden=\"true\"></i> GeoJSON Web Services</a></li>\n<li><a href=\"/ogc/\" class=\"text-decoration-none\"><i class=\"bi bi-globe2 text-info\" aria-hidden=\"true\"></i> OGC WebMap Services</a></li>\n</ul>\n</div>\n<div class=\"col-md-6\">\n<h6 class=\"fw-bold\">Related Tools:</h6>\n<ul class=\"list-unstyled\">\n<li><a href=\"/roads/\" class=\"text-decoration-none\"><i class=\"bi bi-signpost-2 text-warning\" aria-hidden=\"true\"></i> Roads Main Page</a></li>\n<li><a href=\"/api/1/docs\" class=\"text-decoration-none\"><i class=\"bi bi-journal-text text-primary\" aria-hidden=\"true\"></i> API Documentation</a></li>\n</ul>\n</div>\n</div>\n</div>\n</div>\n</div>\n</div>\n\n</div>\n\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/roads/rc.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 54);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/mlib.php\";\n\n$t = new MyView();\n\n$conn = iemdb(\"postgis\");\n\n$sortcol = isset($_GET[\"sortcol\"]) ? xssafe($_GET[\"sortcol\"]) : \"segid\";\n$t->refresh = 600;\n\n$sql = \"SELECT * from roads_current r, roads_base b, roads_conditions c \" .\n    \"WHERE r.segid = b.segid and r.cond_code = c.code\";\n$rs = pg_query($conn, $sql);\n\n$obs = array();\nwhile ($row = pg_fetch_assoc($rs)) {\n    $seg = intval($row[\"segid\"]);\n    $obs[$seg] = $row;\n    $t2 = preg_split('/ to /', $row[\"longname\"]);\n    if (sizeof($t2) == 2) {\n        $obs[$seg][\"minor0\"] = $t2[0];\n        $obs[$seg][\"minor1\"] = $t2[1];\n    } else {\n        $obs[$seg][\"minor0\"] = $t2[0];\n        $obs[$seg][\"minor1\"] = '';\n    }\n\n    if ($row[\"type\"] == 1) {\n        $obs[$seg][\"number\"] = intval($row[\"int1\"]);\n    }\n    if ($row[\"type\"] == 2) {\n        $obs[$seg][\"number\"] = intval($row[\"us1\"]);\n    }\n    if ($row[\"type\"] == 3) {\n        $obs[$seg][\"number\"] = intval($row[\"st1\"]);\n    }\n    $valid = substr($row[\"valid\"], 0, 16);\n}\n$ts = strtotime($valid);\n$valid = date(\"h:i A d M Y\", $ts);\n\n$types = array(1 => \"Interstate\", 2 => \"US Highway\", 3 => \"State Highway\");\n\n$vals = array(\n    \"number\" => \"Route #\", \"type\" => \"Road Classification\",\n    \"minor0\" => \"Start Point\", \"minor1\" => \"End Point\",\n    \"label\" => \"Road Condition\", \"cond_code\" => \"Road Condition\",\n    \"segid\" => \"Travel Path\"\n);\n\n$uri = \"rc.phtml?sortcol=\";\n\n$finalA = aSortBySecondIndex($obs, $sortcol);\n$now = time();\n$i = 0;\n$table = \"\";\nforeach ($finalA as $key => $val) {\n    $i++;\n    $parts = $finalA[$key];\n\n    $table .= \"<tr\";\n    if ($i % 2 == 0)  $table .= \" bgcolor='#eeeeee'\";\n    $table .= \"></td>\";\n\n    $table .= \"<td>\" . $types[$parts[\"type\"]] . \"</td>\";\n    $table .= \"<td>\" . $parts[\"number\"] . \"</td>\";\n    $table .= \"<td>\" . $parts[\"minor0\"] . \"</td>\";\n    $table .= \"<td>\" . $parts[\"raw\"] . \"</td>\";\n}\n\n$t->content = <<<EOM\n<ol class=\"breadcrumb\">\n  <li><a href=\"/roads/\">Roads</a></li>\n  <li class=\"active\">Sortable Conditions</li>\n</ol>\n\n<h3>Iowa Road Conditions valid {$valid}</h3>\n\n<br>Sorted by: <b>({$vals[$sortcol]})</b>  &nbsp; &nbsp; Click on\n a column to sort it or sort by <a href=\"{$uri}segid\">travel path</a><br>\n\n<table class=\"table table-striped\">\n<thead class=\"sticky\">\n<tr>\n  <th><a href=\"{$uri}type\">Road Class</a></th>\n  <th><a href=\"{$uri}number\">Route #</a></th>\n  <th><a href=\"{$uri}minor0\">Segment</a></th>\n  <th><a href=\"{$uri}cond_code\">Condition</a></th>\n</tr></thead>\n<tbody>\n{$table}\n</table>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/roads/tv.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/vendor/mapscript.php\";\nrequire_once \"../../include/forms.php\";\n\n$con = iemdb(\"postgis\");\n\n// kvillewxguy@hotmail.com\n$metroview = array_key_exists(\"metro\", $_GET);\n\n$sql = \"SELECT max(valid) as valid from roads_current\";\n$rs = pg_query($con, $sql);\n\n$row = pg_fetch_assoc($rs, 0);\n$valid = substr($row[\"valid\"], 0, 16);\n\n$map = new MapObj('roads.map');\n//$map->setProjection(\"init=epsg:4326\");\n$map->setProjection(\"init=epsg:26915\");\n$map->selectOutputFormat(\"png24\");\n\nif ($metroview) {\n    $map->setextent(360000, 4580000, 559000, 4690000);\n    //$map->setextent(-95.3,  40.71, -92.3,  43.11);\n} else {\n    $map->setextent(190000, 4430000, 759000, 4910000);\n    //$map->setextent(-107.9, 40, -88.9,  44.9);\n}\n$map->setsize(720, 496);\n\n\n$img = $map->prepareImage();\n\n$states = $map->getLayerByName(\"states\");\n$states->__set(\"status\", MS_ON);\n$states->draw($map, $img);\n\n$roads = $map->getLayerByName(\"roads\");\n$roads->__set(\"status\", MS_ON);\n\nfor ($k = 0; $k < 17; $k++) {\n    $r_c1 = $roads->getClass($k);\n    $r_s1 = $r_c1->getStyle(0);\n    $r_s1->__set(\"size\", 0);\n    $r_s1 = $r_c1->getStyle(1);\n    $r_s1->__set(\"size\", 5);\n}\n$roads->draw($map, $img);\n\n$roads_int = $map->getLayerByName(\"roads-inter\");\n$roads_int->__set(\"status\", MS_ON);\nfor ($k = 0; $k < 17; $k++) {\n    $r_c1 = $roads_int->getClass($k);\n    $r_s1 = $r_c1->getStyle(0);\n    $r_s1->__set(\"size\", 0);\n    $r_s1 = $r_c1->getStyle(1);\n    $r_s1->__set(\"size\", 7);\n}\n$roads_int->draw($map, $img);\n\n$map->drawLabelCache($img);\n\nheader(\"Content-type: image/png\");\necho $img->getBytes();\n"
  },
  {
    "path": "htdocs/robots.txt",
    "content": "# Robots file for IEM \n\nCrawl-delay: 120\nDisallow: /usage/\nDisallow: /tmp/\nDisallow: /data/NIDS/\nDisallow: /data/nexrd2/\nDisallow: /data/model/\nDisallow: /archive/nexrad/\nDisallow: /archive/raw/snet/\n"
  },
  {
    "path": "htdocs/rss.php",
    "content": "<?php\nrequire_once \"../config/settings.inc.php\";\nrequire_once \"../include/memcache.php\";\ndefine(\"IEM_APPID\", 60);\nrequire_once \"../include/database.inc.php\";\n\n$cached_rss = cacheable(\"/rss.php\", 600)(function(){\n    global $EXTERNAL_BASEURL;\n    $conn = iemdb(\"mesosite\");\n    $rs = pg_query(\n        $conn,\n        \"SELECT id, title, body, entered from news ORDER by entered DESC LIMIT 20\"\n    );\n    $rows = [];\n    if ($rs === FALSE) {\n        error_log(\"rss.php: Database query failed\");\n    } else {\n        while ($row = pg_fetch_assoc($rs)) {\n            $rows[] = $row;\n        }\n    }\n    $bd = date('D, d M Y H:i:s O');\n    if (!empty($rows[0][\"entered\"])) {\n        $ts = strtotime($rows[0][\"entered\"]);\n        if ($ts !== false) {\n            $bd = date('D, d M Y H:i:s O', $ts);\n        }\n    }\n    $s = <<<EOM\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n<channel>\n<atom:link href=\"{$EXTERNAL_BASEURL}/rss.php\" rel=\"self\" type=\"application/rss+xml\" />\n<title>IEM News and Notes</title>\n<link>{$EXTERNAL_BASEURL}</link>\n<description>Iowa Environmental Mesonet News and Notes</description>\n<lastBuildDate>{$bd}</lastBuildDate>\nEOM;\n    for ($i = 0; $row = $rows[$i] ?? null; $i++) {\n        // Properly escape the title for XML; previous logic only replaced '&'.\n        $title = htmlspecialchars($row[\"title\"], ENT_XML1 | ENT_COMPAT, 'UTF-8');\n        // Guard against a body containing the CDATA termination sequence.\n        $body = str_replace(\"]]>\", \"]]]><![CDATA[>\", $row[\"body\"]);\n        $itemDate = date('D, d M Y H:i:s O');\n        if (!empty($row[\"entered\"])) {\n            $itemTs = strtotime($row[\"entered\"]);\n            if ($itemTs !== false) {\n                $itemDate = date('D, d M Y H:i:s O', $itemTs);\n            }\n        }\n        $s .= \"<item>\\n\";\n        $s .= \"<title>{$title}</title>\\n\";\n        $s .= \"<author>akrherz@iastate.edu (Daryl Herzmann)</author>\\n\";\n        $s .= \"<link>{$EXTERNAL_BASEURL}/onsite/news.phtml?id=\" . $row[\"id\"] . \"</link>\\n\";\n        $s .= \"<guid>{$EXTERNAL_BASEURL}/onsite/news.phtml?id=\" . $row[\"id\"] . \"</guid>\\n\";\n        $s .= \"<pubDate>{$itemDate}</pubDate>\\n\";\n        $s .= \"<description><![CDATA[\" . $body . \"]]></description>\\n\";\n        $s .= \"</item>\\n\";\n    }\n    $s .= \"</channel>\\n\";\n    $s .= \"</rss>\\n\";\n    return $s;\n});\n\n\nheader(\"Content-Type: application/rss+xml; charset=UTF-8\");\necho $cached_rss();\n"
  },
  {
    "path": "htdocs/scan/current.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/mlib.php\";\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/forms.php\";\n$nt = new NetworkTable(\"SCAN\");\n$cities = $nt->table;\n\n$sortcol = isset($_GET[\"sortcol\"]) ? xssafe($_GET[\"sortcol\"]) : 'station';\n$t = new MyView();\n$t->title = \"SCAN Sortable Currents\";\n$t->refresh = 3600;\n\nfunction make_link($sid)\n{\n    return sprintf(\"/sites/site.php?network=SCAN&station=%s\", $sid);\n}\n\n\n$mydata = array();\n$arr = array(\n    \"network\" => \"SCAN\",\n);\n$jobj = iemws_json(\"currents.json\", $arr);\n\nforeach ($jobj[\"data\"] as $bogus => $iemob) {\n    $key = $iemob[\"station\"];\n    $mydata[$key] = $iemob;\n    $mydata[$key][\"ts\"] = new DateTime($iemob[\"local_valid\"]);\n    $mydata[$key][\"sped\"] = $mydata[$key][\"sknt\"] * 1.15078;\n    if ($mydata[$key][\"max_gust\"] > $mydata[$key][\"max_sknt\"]) {\n        $mydata[$key][\"peak\"] = $mydata[$key][\"max_gust\"];\n        $mydata[$key][\"peak_ts\"] = new DateTime($mydata[$key][\"local_max_gust_ts\"]);\n    } else {\n        $mydata[$key][\"peak\"] = $mydata[$key][\"max_sknt\"];\n        if ($mydata[$key][\"local_max_sknt_ts\"]) {\n            $mydata[$key][\"peak_ts\"] = new DateTime($mydata[$key][\"local_max_sknt_ts\"]);\n        }\n    }\n}\n\n$finalA = aSortBySecondIndex($mydata, $sortcol);\n$i = 0;\n$now = new DateTime();\n\n$t1 = \"\";\n// Loop though all data\nforeach ($finalA as $key => $val) {\n    $parts = $finalA[$key];\n    $i++;\n    $t1 .= \"<tr\";\n    if ($i % 2 == 0)  $t1 .= \" bgcolor='#eeeeee'\";\n\n    $t1 .= \">\";\n    $t1 .= \"<td><input type=\\\"checkbox\\\" name=\\\"st[]\\\"\n               value=\\\"\" . $key . \"\\\"></td>\";\n    $t1 .= \"<td><a href=\\\"\" . make_link($key) . \"\\\">\" . $cities[$key][\"name\"] . \"</a></td><td>\";\n    $t1 .= $parts[\"ts\"]->format(\"M-d-Y h:i A\") . \"</td>\n  <td align='center'>\" . myround($parts[\"tmpf\"], 0) . \"(<font color=\\\"#ff0000\\\">\" .\n        myround($parts[\"max_tmpf\"], 0) . \"</font>/<font color=\\\"#0000ff\\\">\" .\n        myround($parts[\"min_tmpf\"], 0) . \"</font>)</td>\n <td>\" . myround($parts[\"dwpf\"], 0) . \"</td>\n <td>\" . myround($parts[\"feel\"], 0) . \"</td>\n <td>\" . $parts[\"relh\"] . \"</td>\n <td>\" . myround($parts[\"sknt\"], 1);\n    if (!is_null($parts[\"gust\"]) && $parts[\"gust\"] > 0) {\n        $t1 .= \"G\" . round($parts[\"gust\"], 1);\n    }\n    $t1 .= \"</td><td>\" . myround($parts[\"drct\"], 0) . \"</td>\";\n    $t1 .= \"<td>\". myround($parts[\"peak\"], 0);\n    $t1 .= \"</td><td>\" . myround($parts[\"srad\"], 0) . \"</td></tr>\";\n}\n\n$t2 = \"\";\n$n = $finalA;\nforeach ($n as $key => $parts) {\n    $i++;\n    $t2 .= \"<tr\";\n    if ($i % 2 == 0)  $t2 .= \" bgcolor='#eeeeee'\";\n\n    $t2 .= \">\";\n    $t2 .= \"<td><a href=\\\"\" . make_link($key) . \"\\\">\" . $cities[$key][\"name\"] . \"</a></td></td><td>\";\n    $t2 .= $parts[\"ts\"]->format(\"M-d-Y h:i P\") . \"</td>\n    <td>\" . myround($parts[\"c1smv\"], 0) . \"</td><td>\" . myround($parts[\"c1tmpf\"], 0) . \"</td>\n    <td>\" . myround($parts[\"c2smv\"], 0) . \"</td><td>\" . myround($parts[\"c2tmpf\"], 0) . \"</td>\n    <td>\" . myround($parts[\"c3smv\"], 0) . \"</td><td>\" . myround($parts[\"c3tmpf\"], 0) . \"</td>\n    <td>\" . myround($parts[\"c4smv\"], 0) . \"</td><td>\" . myround($parts[\"c4tmpf\"], 0) . \"</td>\n    <td>\" . myround($parts[\"c5smv\"], 0) . \"</td><td>\" . myround($parts[\"c5tmpf\"], 0) . \"</td>\";\n\n    $t2 .= \"</tr>\";\n}\n\n$vals = array(\n    \"tmpf\" => \"Air Temperature [F]\", \"dwpf\" => \"Dew Point Temp [F]\",\n    \"sknt\" => \"Wind Speed [knots]\", \"wdir\" => \"Wind Direction [deg]\",\n    \"pday\" => \"Precip Accum [inches]\", \"max_sknt\" => \"Wind Gust [knots]\",\n    \"ts\" => \"Observation Time [local]\", \"feel\" => \"Feels Like\",\n    \"min_tmpf\" => \"Today's Low Temperature\", \"srad\" => \"Solar Radiation\",\n    \"max_tmpf\" => \"Today's High Temperature\", \"gtim\" => \"Time of Gust\",\n    \"drct\" => \"Wind Direction\",\n    \"station\" => \"Station ID\", \"relh\" => \"Relative Humidity\"\n);\n\n$t->current_network = 'SCAN';\n$t->content = <<<EOM\n<h3>Current SCAN Conditions</h3>\n\nSorted by: <b>({$vals[$sortcol]})</b>  &nbsp; &nbsp; Click on\na column to sort it. Timestamps are in the local station's timezone.<br>\n\n<form method=\"GET\" action=\"/my/current.phtml\">\n<table class=\"table table-striped\">\n<thead class=\"sticky\">\n<tr>\n  <th rowspan=\"2\">ADD:</th>\n  <th rowspan=\"2\">Station:</th>\n  <th rowspan=\"2\"><a href=\"current.phtml?sortcol=ts\">Ob Time</a></th>\n  <th colspan=\"3\">Temps &deg;F</th>\n  <th>&nbsp;</th>\n  <th colspan=\"3\">Wind [knots]</th>\n  <th>&nbsp;</th>\n<tr>\n  \n  <th>\n   <a href=\"current.phtml?sortcol=tmpf\">Air</a>\n   (<a href=\"current.phtml?sortcol=max_tmpf\">Hi</a> /\n   <a href=\"current.phtml?sortcol=min_tmpf\">Lo</a>)\n</th>\n  <th><a href=\"current.phtml?sortcol=dwpf\">DewP</a></th>\n  <th><a href=\"current.phtml?sortcol=feel\">Feels</a></th>\n  <th><a href=\"current.phtml?sortcol=relh\">RH%</a></th>\n  <th><a href=\"current.phtml?sortcol=sknt\">Speed</a></th>\n  <th><a href=\"current.phtml?sortcol=drct\">Direction</a></th>\n  <th><a href=\"current.phtml?sortcol=max_sknt\">Gust</a>\n    @<a href=\"current.phtml?sortcol=gtim\">Time</a></th>\n  <th><a href=\"current.phtml?sortcol=srad\">Solar Rad</a></th>\n</tr></thead>\n<tbody>\n{$t1}\n</tbody>\n</table>\n<input type=\"submit\" value=\"Add to Favorites\">\n<input type=\"reset\" value=\"Reset\">\n\n</form>\n\n<br><br>\n\n<h3>SCAN Soil Conditions</h3>\n\n<table class=\"table table-striped\">\n<thead class=\"sticky\">\n <tr>\n  <th colspan=2>&nbsp;</th>\n  <th colspan=2>2 inch</th>\n  <th colspan=2>4 inch</th>\n  <th colspan=2>8 inch</th>\n  <th colspan=2>20 inch</th>\n  <th colspan=2>40 inch</th>\n </tr>\n <tr>\n  <th>Station:</th>\n  <th>Ob Time:</th>\n  <th>Moist:</th><th>Temp:</th>\n  <th>Moist:</th><th>Temp:</th>\n  <th>Moist:</th><th>Temp:</th>\n  <th>Moist:</th><th>Temp:</th>\n  <th>Moist:</th><th>Temp:</th>\n </tr></thead>\n<tbody>{$t2}</tbody>\n<tfoot>\n<tr>\n<td colspan=\"12\">&nbsp;</td>\n</tr>\n</tfoot>\n</table>\nEOM;\n$t->render(\"sortables.phtml\");\n"
  },
  {
    "path": "htdocs/scan/index.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Soil Climate Analysis Network\";\n\n$baseuri = \"https://wcc.sc.egov.usda.gov/nwcc/site\";\n$t->content = <<<EOM\n<h3>SCAN Network</h3>\n\n<p>This page contains data for the Ames SCAN site\nprovided by the National Water & Climate Center (NWCC).  SCAN is\nan acronym for <i>Soil Climate Analysis Network</i>. Although this station\ndoes provide atmospheric data, its main purpose is to provide soil\ninformation from five depths.</p>\n\n<div class=\"card card-body float-end\">\n<b>SCAN</b>\n<br>Reports: 1x per Hour\n<br>IA Stations: 2\n<br><a href=\"/sites/locate.php?network=SCAN\">Locations</a>\n</div>\n\n<h3>Data Products:</h3>\n\n<ul>\n <li><a href=\"/scan/current.phtml\">Sortable Current Conditions</a></li>\n <li><a href=\"/plotting/scan/\">Current/Historical Timeseries Plots</a></li>\n <li><a href=\"/request/scan/fe.phtml\">Download Hourly data</a></li>\n</ul>\n\n<p><h3>Station Locations</h3><br>\n<table class=\"table table-striped\">\n        <thead>\n<tr>\n  <th>Station</th>\n  <th>Site #</th>\n  <th>Latitude</th>\n  <th>Longitude</th>\n  <th>Elevation</th>\n</tr>\n        </thead>\n\n<tr>\n  <th><a href=\"{$baseuri}?sitenum=2031&state=ia\">Ames, IA</a></th>\n  <td>2031</td>\n  <td>42&deg;00' N</td>\n  <td>93&deg;43' W</td>\n  <td>1073 Feet</td>\n</tr>\n\n<tr>\n  <th><a href=\"{$baseuri}?sitenum=2068&state=ia\">Shagbark Hills, IA</a></th>\n  <td>2068</td>\n  <td>42&deg;26' N</td>\n  <td>95&deg;46' W</td>\n  <td>1400 Feet</td>\n</tr>\n\n\n<tr>\n  <th><a href=\"{$baseuri}?sitenum=2001&state=ne\">Rodger's Farm, NE</a></th>\n  <td>2001</td>\n  <td>40&deg;51' N</td>\n  <td>96&deg;28' W</td>\n  <td>1215 Feet</td>\n</tr>\n\n<tr>\n  <th><a href=\"{$baseuri}?sitenum=2047&state=mo\">Spickard, MO</a></th>\n  <td>2047</td>\n  <td>40&deg;14' N</td>\n  <td>93&deg;42' W</td>\n  <td>911 Feet</td>\n</tr>\n\n<tr>\n  <th><a href=\"{$baseuri}?sitenum=2004&state=il\">Mason, IL</a></th>\n  <td>2004</td>\n  <td>40&deg;19' N</td>\n  <td>89&deg;54' W</td>\n  <td>495 Feet</td>\n</tr>\n\n\n</table></div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/schoolnet/alerts/index.phtml",
    "content": "<?php  \nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->title = \"School Network Wind Gusts\";\n\n$t->content = <<<EOM\n\n<div class=\"alert alert-info\">\nThe information on this page is dated and only kept around for posterity.\nThe networks involved in this were all discontinued in 2019.\n</div>\n\n<h3>Automated Wind Gust Alerts</h3><p>\n\n<div class=\"text\">\n<div style=\"float: left; width:300px; font-size: smaller; margin: 5px; border: 1px solid #000; text-align: center;\">\n<img src=\"nws-alerts.png\"><br />Forecasters at the Des Moines Forecast Office evaluating a wind gust alert.</div>\n<p>The KCCI and KELO network of weather sensors based at schools (hereafter: SchoolNet) relays live weather information to the IEM.  This feed is monitored for\nwind gusts of 50 MPH and higher.  When such an observation is received, an\nalert message is generated and immediately sent to the NWS AWIPS system.  This\npage describes this data relay and also tries to explain the wind gust reports.</p>\n\n<p>First, a caveat.  We are well aware of the siting issues at some of the \nSchoolNet sites.  Local effects of buildings and sensor elevation can enhance\nthe wind flow past a sensor.  The instantaneous nature of the wind observations\nalso tend to produce gustier winds than an averaged value.  Having said all of\nthat, the sensors provide valuable information for many communities that do\nnot have an automated sensor.  Wind gust alerts are <b>NOT A PROXY</b> to\nissuing a weather warning.  They are evaluated along with the other data\nsources to provide accurate information for the public.</p>\n\n<p>Here is what a wind gust alert looks like.  Line numbers have been added\nfor reference. (Fictitious report shown)</p>\n\n<br clear=\"all\" />\n\n<pre style=\"text-align: left; margin: 5px; padding: 5px; background: #eeeeee; border: 1px solid #000;\"> 1 .A SPEI4 0320  C DH1454/UG 51\n 2 : IEM [DSM] Wind Gust Alert 51 MPH for PELLA MS\n 3 :    [Threshold: 50 MPH]\n 4 : Details:\n 5 :    Site:  PELLA MS  [SPEI4]\n 6 :    Latest Observation @ 2004-03-20 02:54 PM\n 7 :    Alert Gust: 51 from the N\n 8 :    Air Temp : 53 [F]  Rain Today: 0.0 [inch]\n 9 :    Today's Max Gust:  55 MPH from the N   @ 02:27 PM\n10 : All Wind Obs since last ob at: 20 Mar 2004 02:53 PM\n11 :    42 MPH from the N\n12 :    45 MPH from the NNW\n13 :    34 MPH from the N\n14 :    29 MPH from the N\n15 :    43 MPH from the NNW\n16 :    34 MPH from the N\n17 :    51 MPH from the N\n18 :    44 MPH from the N\n19 :    37 MPH from the N\n20 :    38 MPH from the N\n</pre>\n\n<p>\n<ul>\n <li>This product is SHEF encoded so that computers can read the report as \n  well as humans.  <i>Line 1</i> contains the SHEF formatted message.</li>\n <li><i>Line 2</i> quickly gives the basics of this alert.  Speed and site.  Forecasters are very busy during severe weather and don't need to be reading confusing products to be getting the necessary info.</li>\n <li><i>Line 3</i> has the current threshold that was exceeded for this alert to be generated.  During some events, the threshold will be increased to 55 or 60 MPH to cut down on the alerts.  This is typically during strong synoptic events and not during thunderstorms.</li>\n <li><i>Line 4-9</i> give the latest observation from the site as well as the maximum gust for the day.</li>\n <li><i>Line 10-20</i> give all of the wind observations since the last time the source was checked for threshold criteria winds.  For this alert, you can see that 10 obs were reported in the past minute!  This is common for the SchoolNet sites.</li>\n</ul>\n\n<p>Sometimes, this line of text may appear in the report:</p>\n<pre style=\"text-align: left; margin: 5px; padding: 5px; background: #eeeeee; border: 1px solid #000;\">: WARNING: First ob since 14 Mar 2004 12:31 AM [674 minutes]. Perhaps Offline?\n</pre>\n<p>This indicates that the site just recently came back online and the wind\nalert may not be current.  This sometimes happens when a school looses power\nduring a thunderstorm and once power is restored, the peak wind gust shows\nup in the feed. Due to the nature of the data flow, we can not identify the\nexact time of the gust during the period of being offline.</p>\n\n<h3 class=\"subtitle\">Auto Relay to the NWS:</h3>\n\n<p>Here is the first alert that was automatically relayed to the NWS on\n16 April 2002.</p>\n\n<pre style=\"text-align: left; margin: 5px; padding: 5px; background: #eeeeee; border: 1px solid #000;\">KCCI SNET OB: [19:30]   51 MPH GUST SPAI4 Panorama _ Panora\n   LATEST OB: [19:30] 75/65 26MPH from SW  P: 00.00\" RR: 00.00\"\n</pre>\n\n<p>The alerts are automatically sent to the NWS's Local Data Acquistion and\nDissemination [LDAD] server via <a href=\"http://my.unidata.ucar.edu/content/software/ldm/index.html\">UNIDATA's LDM</a> software.  LDM makes the transfer of\nthe alert on the IEM server to the NWS AWIPS system very easy and fast!</p>\n\n<p>Individual NWS offices can subscribe to any number of the sites in the \nSchoolNets.  Some choose to subscribe to sites upstream of their CWA (County Warning Area) to give them situational awareness of approaching storms.</p>\n\n<h3>Questions?</h3>\n\n<p>Please feel free to <a href=\"/info/contacts.php\">contact us</a> if you have any questions!</p>\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/schoolnet/dl/index.php",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 78);\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->title = \"School Network Data Download\";\nrequire_once \"../../../include/forms.php\";\n\n$nselect = networkMultiSelect(Array(\"KCCI\", \"KIMT\", \"KELO\"), '', Array(),\n    'station[]');\n\n$y1 = yearSelect(2002, date(\"Y\"), \"year1\");\n$m1 = monthSelect(date(\"m\"), \"month1\");\n$d1 = daySelect(date(\"d\"), \"day1\");\n$h1 = hourSelect(0, \"hour1\");\n\n$y2 = yearSelect(2002, date(\"Y\"), \"year2\");\n$m2 = monthSelect(date(\"m\"), \"month2\");\n$d2 = daySelect(date(\"d\"), \"day2\");\n$h2 = hourSelect(0, \"hour2\");\n\n$t->content = <<<EOM\n<h3>SchoolNet Data Download</h3>\n\n<p>With this form, you can download schoolnet data.  The \narchive starts on <b>12 Feb 2002</b> for stations that were online at that\ntime.  You may want to consult a \n<a href=\"/sites/networks.php?network=KCCI&format=html\">listing</a>\nof when the IEM started to archive data from a site.  Data from the current\nday is not dumped into this archive until Midnight.  This means that the most\nrecent data is from yesterday.</p>\n\n<form method=\"GET\" action=\"worker.php\">\n\n<table>\n<tr>\n  <th>Select Station:</th>\n  <td>{$nselect}</td>\n</tr>\n\n<tr>\n  <th>Select <a href=\"/schoolnet/dl/params.php\">Parameters</a></th>\n  <td>\n     <table>\n     <tr>\n       <td><input type=\"checkbox\" name=\"vars[]\" value=\"tmpf\">Air Temperature</td>\n       <td><input type=\"checkbox\" name=\"vars[]\" value=\"dwpf\">Dew Point</td>\n     </tr>\n     <tr>\n       <td><input type=\"checkbox\" name=\"vars[]\" value=\"drct\">Wind Direction</td>\n       <td><input type=\"checkbox\" name=\"vars[]\" value=\"sknt\">Wind Speed [kts]</td>\n     </tr>\n     <tr>\n       <td><input type=\"checkbox\" name=\"vars[]\" value=\"pday\">Daily Precip Counter [2]</td>\n       <td><input type=\"checkbox\" name=\"vars[]\" value=\"pmonth\">Monthly Precip Counter [2]</td>\n     </tr>\n     <tr>\n       <td><input type=\"checkbox\" name=\"vars[]\" value=\"srad\">Solar Radiation</td>\n       <td><input type=\"checkbox\" name=\"vars[]\" value=\"relh\">Relative Humidity</td>\n     </tr>\n     <tr>\n       <td><input type=\"checkbox\" name=\"vars[]\" value=\"alti\" colspan=2>Altimeter (Pressure)</td>\n       <td><input type=\"checkbox\" name=\"vars[]\" value=\"gust\" colspan=2>Wind Gust [kts]</td>\n     </tr>\n     </table>\n  </td>\n</tr>\n\n<tr>\n  <th>Time Interval:</th>\n  <td>\n    <table>\n     <tr>\n      <td></td>\n      <th class=\"subtitle\">Year:</th>\n      <th class=\"subtitle\">Month:</th>\n      <th class=\"subtitle\">Day:</th>\n      <th class=\"subtitle\">Hour:</th>\n     </tr>\n     <tr>\n      <th class=\"subtitle\">Start:</th>\n      <th>{$y1}</th>\n      <td>{$m1}</td>\n      <td>{$d1}</td>\n      <td>{$h1}</td>\n     </tr>\n     <tr>\n      <th class=\"subtitle\">End:</th>\n      <th>{$y2}</th>\n      <td>{$m2}</td>\n      <td>{$d2}</td>\n      <td>{$h2}</td>\n     </tr>\n    </table>\n  </td>\n</tr>\n\n<tr>\n  <th>Data Sampling: [1]</th>\n  <td>\n  <select name=\"sample\">\n    <option value=\"1min\">Every Minute\n    <option value=\"5min\">Every 5 Minutes\n    <option value=\"10min\">Every 10 Minutes\n    <option value=\"20min\">Every 20 Minutes\n    <option value=\"1hour\">Every Hour\n  </select>\n  </td>\n</tr>\n\n<tr>\n  <th>Download Options</th>\n  <td>\n   <select name=\"dl_option\">\n    <option value=\"download\">Download to disk\n    <option value=\"view\">View on-line\n   </select>\n  </td>\n</tr>\n\n<tr>\n  <th>Delimitation</th>\n  <td>\n   <select name=\"delim\">\n    <option value=\"comma\">Comma\n    <option value=\"space\">Space\n    <option value=\"tab\">Tab\n   </select>\n  </tr>\n</tr>\n\n<tr>\n  <td colspan=\"2\" align=\"CENTER\">\n  <input type=\"submit\" value=\"Download Data\">\n  <input type=\"reset\">\n</td>\n</tr>\n\n</table>\n\n</form>\n\n<p><b>1. </b> For this archive, data is saved every minute.  In most cases, \nyou will not be interested in data at that temporal frequency.  You can adjust\nthe sampling to cut down on the amount of data.\n<br><b>2. </b> Precipitation is measured by a non-heated tipping bucket.  Thus\ncold season precipitation is not accurately measured.\n<br><b>3. </b> Wind data before 4 August 2002 were instantaneous values.\nWind data afterwards are 1 minute average values.\n\n<br>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/schoolnet/dl/params.php",
    "content": "<?php \nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n$t->title = \"School Network Parameters\";\n\n$t->content = <<<EOM\n<h3>SchoolNet Data Explanation</h3>\n\n<div class=\"text\">\n<p><h3>Observation Time</h3>\n<p>This is the local valid time for which the observation was taken.\nThere may be some ambiguity around the times when Iowa changes from CDT->CST and\nvice-versa.</p>\n\n<p><h3>Air Temperature [tmpf]</h3>\n<p>This value is simply the temperature of the air.  Values are in units\nof degrees Fahrenhit.</p>\n\n<p><h3>Wind Direction [drct]</h3>\n<p>Wind Direction can sometimes be a hard concept to interpret.  The \nvalues are in integer degrees for where the wind is blowing from.  0&deg; \nis a wind from the North.  90&deg; is a wind from the East.  180&deg; in\na wind from the South.  &270&deg; is a wind from the West. \n<br>For example.  If the value is 90, this is an easterly wind.  Meaning,\nif you were facing east, the wind would be in your face.</p>\n\n<p><h3>Wind Speed [sknt]</h3>\n<p>For the schoolNet sites, this value is an instantenous\nmeasurement of the wind speed.  Values are in knots.</p>\n\n<p><h3>Daily Precip Counter [pday]</h3>\n<p>This value is the accumulated amount of precip recorded at\nthe site for the local day.  Values are in inches.</p>\n\n<p><h3>Monthly Precip Counter [pmonth]</h3>\n<p>This value is the accumulated amount of precip recorded at\nthe site for the current month. Values are in inches.</p>\n\n<p><h3>Solar Radiation [srad]</h3>\n<p>Instantaneous values of solar radiation.  Values are in Watts.\n</p>\n\n<p><h3>Relative Humidity [relh]</h3>\n<p>Relative humidity is expressed as a percentage.  It is a \nmeasure of the amount of water vapor currently in the air versus the \ncapacity of the air.</p>\n\n<p><h3>Altimeter [alti]</h3>\n<p>Atmospheric pressure expressed in inches of mercury.</p></div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/schoolnet/dl/worker.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/forms.php\";\n\n$year1 = get_int404(\"year1\", 2010);\n$year2 = get_int404(\"year2\", 2010);\n$hour1 = get_int404(\"hour1\", 0);\n$hour2 = get_int404(\"hour2\", 0);\n$day1 = get_int404(\"day1\", 1);\n$day2 = get_int404(\"day2\", 1);\n$month1 = get_int404(\"month1\", 1);\n$month2 = get_int404(\"month2\", 2);\n$vars = array_key_exists(\"vars\", $_GET) ? $_GET[\"vars\"] : [\"tmpf\"];\n$sample = get_str404(\"sample\", \"1min\");\n$dl_option = get_str404(\"dl_option\", \"display\");\n$delim = get_str404(\"delim\", \",\");\n\n$ts1 = mktime($hour1, 0, 0, $month1, $day1, $year1);\n$ts2 = mktime($hour2, 0, 0, $month2, $day2, $year2);\n\n$num_vars = count($vars);\n\n$connection = iemdb(\"snet\");\n\n$sqlStr = \"SELECT station, \";\nfor ($i = 0; $i < $num_vars; $i++) {\n    $sqlStr .= xssafe($vars[$i]) . \" as var{$i}, \";\n}\n\n$sqlTS1 = date(\"Y-m-d H:i\", $ts1);\n$sqlTS2 = date(\"Y-m-d H:i\", $ts2);\n$nicedate = date(\"Y-m-d\", $ts1);\n\n$sampleStr = array(\n    \"1min\" => \"1\",\n    \"5min\" => \"5\",\n    \"10min\" => \"10\",\n    \"20min\" => \"20\",\n    \"1hour\" => \"60\"\n);\n\n$d = array(\n    \"comma\" => \",\",\n    \"space\" => \" \",\n    \"tab\" => \"\\t\"\n);\n\n$stations = array_key_exists(\"station\", $_GET) ? $_GET[\"station\"] : [\"SAMI4\"];\n$stationSQL = \"{\". implode(\",\", $stations) . \"}\";\n\n$sqlStr .= \"to_char(valid, 'YYYY-MM-DD HH24:MI') as dvalid from alldata\";\n$sqlStr .= \" WHERE valid >= '\" . $sqlTS1 . \"' and valid <= '\" . $sqlTS2 . \"' \";\n$sqlStr .= \" and station = ANY($1) and \";\n$sqlStr .= \" extract(minute from valid)::int % \" . $sampleStr[$sample] . \" = 0 \";\n$sqlStr .= \" ORDER by valid ASC\";\n\n$stname = iem_pg_prepare($connection, $sqlStr);\n$rs = pg_execute($connection, $stname, array($stationSQL));\n\nif (pg_num_rows($rs) == 0) {\n    http_response_code(422);\n    die(\"Did not find any data for this query!\");\n} else if ($dl_option == \"download\") {\n    header(\"Content-type: application/octet-stream\");\n    header(\"Content-Disposition: attachment; filename=snetData.dat\");\n} else {\n    header(\"Content-type: text/plain\");\n}\n\nprintf(\"%s%s%s\", \"STID\", $d[$delim], \"DATETIME\");\nfor ($j = 0; $j < $num_vars; $j++) {\n    printf(\"%s%6s\", $d[$delim], $vars[$j]);\n}\necho \"\\n\";\nif ($dl_option == \"download\") {\n\n    while ($row = pg_fetch_assoc($rs)) {\n        printf(\"%s%s%s\", $row[\"station\"], $d[$delim],  $row[\"dvalid\"]);\n        for ($j = 0; $j < $num_vars; $j++) {\n            printf(\"%s%6s\", $d[$delim], $row[\"var\" . $j]);\n        }\n        echo \"\\n\";\n    }\n} else {\n\n    while ($row = pg_fetch_assoc($rs)) {\n        printf(\"%s%s%s\", $row[\"station\"], $d[$delim], $row[\"dvalid\"]);\n        for ($j = 0; $j < $num_vars; $j++) {\n            printf(\"%s%6s\", $d[$delim], $row[\"var\" . $j]);\n        }\n        echo \"\\n\";\n    }\n}\n"
  },
  {
    "path": "htdocs/schoolnet/index.php",
    "content": "<?php \nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n\n$t = new MyView();\n\n$t->content = <<<EOM\n\n<h3>SchoolNet</h3>\n\n<p>Over the years, the IEM partnered with \n<a href=\"https://www.kcci.com/\">KCCI-TV</a> (Des Moines, IA),\n<a href=\"https://www.keloland.com\">KELO-TV</a> (Sioux Falls, SD), \nand <a href=\"https://www.kimt.com\">KIMT-TV</a> (Mason City, IA) to collect data\nfrom their respective school-based weather stations.  Sadly, the observation\nequipment fell into disrepair and the various networks were wound down or\nreplaced with proprietary solutions.\n<strong>On 13 May 2019, all data collection was discontinued.</strong></p>\n\n<p>This page presents some legacy links and means yet to download the data.</p>\n\n<div class=\"row\">\n  <div class=\"col-md-4\">\n    <h4>Information</h4>\n    <ul>\n      <li><a href=\"alerts/\">About wind gust alerts</a> sent to the Weather Service.</li>\n    </ul>\n  </div>\n\n  <div class=\"col-md-4\">\n  <h4>Historical Data</h4>\n  <ul>\n   <li><a href=\"/schoolnet/dl/\">Download</a> from the archive!</a></li>\n  </ul>\n\n  </div>\n  <div class=\"col-md-4\">\n  <h3>Plotting Time Series</h3>\n  <ul>\n   <li><a href=\"/plotting/snet/1station.php\">1 station</a> [20 minute data]</li>\n   <li><a href=\"/plotting/snet/1station_1min.php\">1 station</a> [1 minute data]</li>\n  </ul>\n\n  </div>\n\n</div>\n\n<div class=\"alert alert-warning\">Many of the school net stations are not located in good\nmeteorological locations.  While the stations may be accurate, their data\nmay not be representative of the area in general.\nOften, they are placed on top of buildings and may\nhave obstructions which could skew wind and temperature readings.  The\nstations are placed at schools for educational purposes and to get students\ninterested in the weather.</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/sites/cal.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/sites.php\";\nrequire_once \"../../include/myview.php\";\n\n$ctx = get_sites_context();\n$station = $ctx->station;\n$network = $ctx->network;\n$metadata = $ctx->metadata;\n$t = new MyView();\n$t->iemselect2 = true;\n$t->title = \"Site Calibration\";\n$t->sites_current = \"cal\";\n\n$xref = array(\n    \"IA_ASOS\" => \"iaawos\",\n    \"IA_RWIS\" => \"iarwis\",\n    \"ISUAG\" => \"isuag\",\n    \"ISUSM\" => \"isusm\"\n);\n\n$portfolio = array_key_exists($network, $xref) ? $xref[$network] : null;\n\n$varDict = array(\n    \"tmpf\" => \"Air Temperature [F]\",\n    \"dwpf\" => \"Dew Point [F]\"\n);\n$table = \"\";\nif ($portfolio != null) {\n    $conn = iemdb(\"portfolio\");\n    $stname = iem_pg_prepare(\n        $conn,\n        \"SELECT * from iem_calibration WHERE portfolio = $1 and \" .\n            \"station = $2 ORDER by valid DESC\"\n    );\n    $rs = pg_execute($conn, $stname, array($portfolio, $station));\n\n    if (pg_num_rows($rs) == 0) {\n        $table .= \"<tr><th colspan=6>No events found in database.</th></tr>\";\n    }\n\n    $rowDict = array(\"tmpf\" => \"\", \"dwpf\" => \"\");\n    while ($row = pg_fetch_assoc($rs)) {\n        $param = $row[\"parameter\"];\n        $color = \"#00f\";\n        $ts = strtotime(substr($row[\"valid\"], 0, 16));\n        $ds = date(\"d M Y, h:i A\", $ts);\n        if (floatval($row[\"adjustment\"]) > 0) {\n            $color = \"#f00\";\n        }\n        $rowDict[$param] .= sprintf(\"<tr style=\\\"color: $color;\\\"><th>%s</th><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\", $row[\"id\"], $row[\"station\"], $ds, $row[\"parameter\"], $row[\"final\"], $row[\"adjustment\"]);\n        if (strlen($row[\"comments\"]) > 0) {\n            $rowDict[$param] .= \"<tr><td></td><td colspan=5>Comments: \" . $row[\"comments\"] . \"</td></tr>\";\n        }\n    }\n\n    foreach ($rowDict as $param => $tbl) {\n        $table .= \"<tr><th colspan=\\\"6\\\" align=\\\"left\\\" style=\\\"background: #eee; border-bottom: 1px solid #000\\\">\" . $varDict[$param] . \"</th></tr>\";\n        $table .= $tbl;\n    }\n} else {\n    $table .= \"<tr><td colspan=\\\"6\\\">Sorry no calibration information is collected for $network network</td></tr>\";\n}\n\n$t->content = <<<EOM\n<table class=\"table table-striped\">\n<thead><tr>\n <th>ID#:</th>\n <th>Station ID:</th>\n <th>Valid:</th>\n <th>Variable:</th>\n <th>Final Value:</th>\n <th>Adjustment:</th>\n</tr></thead>\n{$table}\n</table>\nEOM;\n$t->render('sites.phtml');\n"
  },
  {
    "path": "htdocs/sites/current.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/sites.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/mlib.php\";\n\n$ctx = get_sites_context();\n$station = $ctx->station;\n$network = $ctx->network;\n$metadata = $ctx->metadata;\n\n$t = new MyView();\n$t->iemselect2 = true;\n$t->refresh = 60;\n$t->title = \"Latest Observation\";\n$t->sites_current = \"current\";\n$SPECIAL = array(\n    'OT0013' => 'MCFC-001',\n    'OT0014' => 'MCFC-002',\n    'OT0015' => 'MCFC-003'\n);\n$LOOKUP = array(\n    'OT0013' => 'scranton',\n    'OT0014' => 'carroll',\n    'OT0015' => 'jefferson'\n);\nfunction fmt($val, $varname)\n{\n    if ($varname == 'altimeter[in]') {\n        return sprintf(\"%.2f\", $val);\n    }\n    return $val;\n}\nfunction make_shef_table($data, $iscurrent)\n{\n    global $shefcodes, $durationcodes, $extremumcodes, $metadata;\n    $msg = $iscurrent ? \"Recent\" : \"Five days and older\";\n    $table = <<<EOM\n    <p><strong>{$msg} SHEF encoded data</strong></p>\n    <table class=\"table table-striped\">\n    <thead class=\"sticky\">\n        <tr><th>Physical Code</th><th>Duration</th><th>Type</th>\n        <th>Source</th><th>Extrenum</th><th>Valid</th><th>Value</th>\n        <th>Product</th></tr>\n    </thead>\n    EOM;\n    $localtz = new DateTimeZone($metadata[\"tzname\"]);\n    $utctz = new DateTimeZone(\"UTC\");\n    $baseprodvalid = new DateTime(\"now\", $utctz);\n    $baseprodvalid->modify(\"-5 days\");\n    foreach ($data as $bogus => $row) {\n        $depth = \"\";\n        if ($row[\"depth\"] > 0) {\n            $depth = sprintf(\"%d inch\", $row[\"depth\"]);\n        }\n        $valid = new DateTime($row[\"utc_valid\"], $utctz);\n        $valid->setTimezone($localtz);\n        $plink = \"N/A\";\n        if ($iscurrent && $valid < $baseprodvalid) {\n            continue;\n        }\n        if (! $iscurrent && $valid >= $baseprodvalid) {\n            continue;\n        }\n        if ($valid > $baseprodvalid) {\n            if (!is_null($row[\"product_id\"])) {\n                $plink = sprintf(\n                    '<a href=\"/p.php?pid=%s\">Source Text</a>',\n                    $row[\"product_id\"]\n                );\n            }\n        }\n        $table .= sprintf(\n            \"<tr><td>[%s] %s %s</td><td>[%s] %s</td><td>%s</td>\" .\n                \"<td>%s</td><td>[%s] %s</td><td>%s</td><td>%s</td><td>%s</td></tr>\",\n            $row[\"physical_code\"],\n            array_key_exists($row[\"physical_code\"], $shefcodes) ? $shefcodes[$row[\"physical_code\"]] : \"((unknown code))\",\n            $depth,\n            $row[\"duration\"],\n            array_key_exists($row[\"duration\"], $durationcodes) ? $durationcodes[$row[\"duration\"]] : \"Invalid\",\n            $row[\"type\"],\n            $row[\"source\"],\n            $row[\"extremum\"] == 'Z' ? '-' : $row['extremum'],\n            array_key_exists($row[\"extremum\"], $extremumcodes) ? $extremumcodes[$row[\"extremum\"]] : \"Invalid\",\n            $valid->format(\"M j, Y h:i A\"),\n            $row[\"value\"],\n            $plink\n        );\n    }\n    $table .= \"</table>\";\n    return $table;\n}\n\nif (strpos($network, \"_DCP\") || strpos($network, \"_COOP\")) {\n    $table = <<<EOM\n<p>This station reports observations in SHEF format. The following two tables\nbreak these SHEF reports into recently made reports and those older than five\ndays ago.  The IEM's archive of raw SHEF text products is only five days, so\nthus why the Product links are only for the first table.\nEOM;\n    $mesosite = iemdb('mesosite');\n    $shefcodes = array();\n    $rs = pg_query($mesosite, \"SELECT * from shef_physical_codes\");\n    for ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n        $shefcodes[$row['code']] = $row['name'];\n    }\n    $durationcodes = array();\n    $rs = pg_query($mesosite, \"SELECT * from shef_duration_codes\");\n    for ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n        $durationcodes[$row['code']] = $row['name'];\n    }\n    $extremumcodes = array();\n    $rs = pg_query($mesosite, \"SELECT * from shef_extremum_codes\");\n    for ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n        $extremumcodes[$row['code']] = $row['name'];\n    }\n    $arr = array(\n        \"station\" => $station,\n    );\n    $jobj = iemws_json(\"last_shef.json\", $arr);\n    $exturi = sprintf(\n        \"%s/api/1/last_shef.json?\" .\n            \"station=%s\",\n        $EXTERNAL_BASEURL,\n        $station,\n    );\n    $table .= make_shef_table($jobj[\"data\"], TRUE);\n    $table .= make_shef_table($jobj[\"data\"], FALSE);\n} else {\n    $wsuri = sprintf(\n        \"%s/json/current.py?network=%s&station=%s\",\n        $INTERNAL_BASEURL,\n        $network,\n        $station\n    );\n    $exturi = sprintf(\n        \"%s/json/current.py?network=%s&station=%s\",\n        $EXTERNAL_BASEURL,\n        $network,\n        $station\n    );\n    $data = file_get_contents($wsuri);\n    $json = json_decode($data, $assoc = TRUE);\n    if ($json === FALSE) {\n        http_response_code(503);\n        die(\"Backend query failed, please try again later.\");\n    }\n\n    $vardict = array(\n        \"local_valid\" => \"Observation Local Time\",\n        \"utc_valid\" => \"Observation UTC Time\",\n        \"airtemp[F]\" => \"Air Temp [F]\",\n        \"max_dayairtemp[F]\" => \"Maximum Air Temperature [F]\",\n        \"min_dayairtemp[F]\" => \"Minimum Air Temperature [F]\",\n        \"dewpointtemp[F]\" => \"Dew Point [F]\",\n        \"relh\" => \"Relative Humidity [%]\",\n        \"winddirection[deg]\" => \"Wind Direction\",\n        \"windspeed[kt]\" => \"Wind Speed [knots]\",\n        \"srad\" => \"Solar Radiation\",\n        \"altimeter[in]\" => \"Altimeter [inches]\",\n        \"pday\" => \"Daily Precipitation [inches]\",\n        \"pmonth\" => \"Monthly Precipitation [inches]\",\n        \"gust\" => \"Wind Gust [knots]\",\n        \"c1tmpf\" => \"Soil Temperature [F]\",\n        \"c2tmpf\" => \"Soil Temperature [F]\",\n        \"c3tmpf\" => \"Soil Temperature [F]\",\n        \"c4tmpf\" => \"Soil Temperature [F]\",\n        \"c5tmpf\" => \"Soil Temperature [F]\",\n        \"c1smv\" => \"Soil Moisture [%]\",\n        \"c2smv\" => \"Soil Moisture [%]\",\n        \"c3smv\" => \"Soil Moisture [%]\",\n        \"c4smv\" => \"Soil Moisture [%]\",\n        \"c5smv\" => \"Soil Moisture [%]\",\n        \"srad_1h[J m-2]\" => \"Solar Radiation [past 60 minutes] [J m-2]\",\n        \"tsoil[4in][F]\" => \"Soil Temperature [4 inch / 10 cm] [F]\",\n        \"tsoil[8in][F]\" => \"Soil Temperature [8 inch / 20 cm] [F]\",\n        \"tsoil[16in][F]\" => \"Soil Temperature [16 inch / 40 cm] [F]\",\n        \"tsoil[20in][F]\" => \"Soil Temperature [20 inch / 50 cm] [F]\",\n        \"tsoil[32in][F]\" => \"Soil Temperature [32 inch / 80 cm] [F]\",\n        \"tsoil[40in][F]\" => \"Soil Temperature [40 inch / 100 cm] [F]\",\n        \"tsoil[64in][F]\" => \"Soil Temperature [64 inch / 160 cm] [F]\",\n        \"tsoil[128in][F]\" => \"Soil Temperature [128 inch / 320 cm] [F]\",\n        \"raw\" => \"Raw Observation/Product\"\n    );\n\n    if ($network == 'ISUSM') {\n        $vardict[\"c1tmpf\"] = \"4 inch Soil Temperature [F]\";\n        $vardict[\"c2tmpf\"] = \"12 inch Soil Temperature [F]\";\n        $vardict[\"c3tmpf\"] = \"24 inch Soil Temperature [F]\";\n        $vardict[\"c4tmpf\"] = \"50 inch Soil Temperature [F]\";\n        $vardict[\"c2smv\"] = \"12 inch Soil Moisture [%]\";\n        $vardict[\"c3smv\"] = \"24 inch Soil Moisture [%]\";\n        $vardict[\"c4smv\"] = \"50 inch Soil Moisture [%]\";\n    }\n\n    $table = \"<table class=\\\"table table-striped\\\">\";\n    foreach ($vardict as $key => $label) {\n        if (\n            is_null($json) ||\n            !array_key_exists(\"last_ob\", $json) ||\n            !array_key_exists($key, $json[\"last_ob\"])\n        ) {\n            continue;\n        }\n        if ($key == \"local_valid\") {\n            $t2 = date(\"d M Y, g:i A\", strtotime($json[\"last_ob\"][$key]));\n            $table .= '<tr><td><b>' . $label . '</b></td><td>' . $t2 . '</td></tr>';\n        } else if ($key == \"winddirection[deg]\") {\n            $table .= sprintf(\n                \"<tr><td><b>%s</b></td><td>%s (%.0f degrees)</td></tr>\",\n                $label,\n                drct2txt($json[\"last_ob\"][$key]),\n                $json[\"last_ob\"][$key]\n            );\n        } else {\n            if (is_null($json[\"last_ob\"][$key])) continue;\n            $table .= '<tr><td><b>' . $label . '</b></td>' .\n                '<td>' . fmt($json[\"last_ob\"][$key], $key) . '</td></tr>';\n        } // End if\n    } // End if\n    $table .= \"</table>\";\n\n    if (array_key_exists(\"last_ob\", $json)) {\n        // Cloud Levels\n        $skyc = $json[\"last_ob\"][\"skycover[code]\"];\n        $skyl = $json[\"last_ob\"][\"skylevel[ft]\"];\n        for ($i = 0; $i < 4; $i++) {\n            if (is_null($skyc[$i])) continue;\n            $table .= sprintf(\n                \"<b>Cloud Layer %s</b>: %s (%s feet)<br />\",\n                $i + 1,\n                $skyc[$i],\n                $skyl[$i]\n            );\n        }\n    }\n}\n\n$table .= sprintf(\"<p>This data was provided by a \" .\n    \"<a href=\\\"%s\\\">JSON(P) webservice</a>. You can find \" .\n    \"<a href=\\\"/json/\\\">more JSON services</a>.</p>\", $exturi);\n\n$interface = $table;\nif (array_key_exists($station, $SPECIAL)) {\n    $interface = <<<EOM\n<h4>New Way Weather Network</h4>\n\n<a class=\"btn btn-secondary\" href=\"/sites/current.php?station=OT0013&network=OT\">Scranton</a>\n&nbsp;\n<a class=\"btn btn-secondary\" href=\"/sites/current.php?station=OT0014&network=OT\">Carroll</a>\n&nbsp;\n<a class=\"btn btn-secondary\" href=\"/sites/current.php?station=OT0015&network=OT\">Jefferson</a>\n\n<div class=\"row\">\n  <div class=\"col-md-6\">\n    {$table}\n  </div>\n  <div class=\"col-md-6\">\n    <h3>Latest Webcam Image</h3>\n    <img src=\"/data/camera/stills/{$SPECIAL[$station]}.jpg\"\n     class=\"img-fluid\">\n    <br />View Recent Time Lapses:<br />\n    <a href=\"/current/camlapse/#{$LOOKUP[$station]}_sunrise\">Sunrise</a>,\n    <a href=\"/current/camlapse/#{$LOOKUP[$station]}_morning\">Morning</a>,\n    <a href=\"/current/camlapse/#{$LOOKUP[$station]}_afternoon\">Afternoon</a>,\n    <a href=\"/current/camlapse/#{$LOOKUP[$station]}_sunset\">Sunset</a>, and\n    <a href=\"/current/camlapse/#{$LOOKUP[$station]}_day\">All Day</a>\n  </div>\n</div>\n\nEOM;\n}\n\n$t->content = <<<EOM\n\n<h3>Most Recent Observation</h3>\n\n<p>This application displays the last observation received by the IEM\n from this site. The time stamp is in \n <strong>{$metadata[\"tzname\"]}</strong> timezone.</p>\n\n{$interface}\n\nEOM;\n$t->render('sites.phtml');\n"
  },
  {
    "path": "htdocs/sites/dyn_windrose.module.js",
    "content": "document.addEventListener('DOMContentLoaded', () => {\n    const setbins = document.querySelector('input[name=\"setbins\"]');\n    const showbins = document.getElementById('showbins');\n\n    if (setbins && showbins) {\n        setbins.addEventListener('change', () => {\n            if (setbins.checked) {\n                showbins.style.display = '';\n            } else {\n                showbins.style.display = 'none';\n            }\n        });\n    }\n\n    const windrose = document.getElementById('windrose-plot');\n    const imgLoading = document.getElementById('img-loading');\n\n    const hideLoading = () => {\n        if (imgLoading) {imgLoading.style.display = 'none';}\n    };\n\n    if (windrose) {\n        windrose.addEventListener('load', hideLoading);\n        // If the element is an <img> and already loaded from cache, hide immediately\n        if (windrose.complete) {hideLoading();}\n    }\n});\n"
  },
  {
    "path": "htdocs/sites/dyn_windrose.phtml",
    "content": "<?php\n// Frontend for dynamic windrose generation.  All kinds of options exist in\n// this form and are basically translated into /cgi-bin/mywindrose.py, which\n// then translates into pyIEM.windrose_utils\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/myview.php\";\n\n// Makes sure this page has proper context\nrequire_once \"../../include/sites.php\";\n$ctx = get_sites_context();\n$station = $ctx->station;\n$network = $ctx->network;\n$metadata = $ctx->metadata;\n\n\n// Switch this page to DCP, if necessary\nif (strpos($network, \"COOP\") > 0) {\n    $dbconn = iemdb(\"mesosite\");\n    $stname = iem_pg_prepare(\n        $dbconn,\n        \"SELECT network from stations where id = $1 and network = $2\",\n    );\n    $rs = pg_execute(\n        $dbconn,\n        $stname,\n        Array(\n            $station,\n            str_replace(\"_COOP\", \"_DCP\", $network),\n        )\n    );\n    if (pg_num_rows($rs) == 1){\n        $res = pg_fetch_row($rs);\n        $network = $res[0];\n        header(\"Location: /sites/dyn_windrose.phtml?station={$station}&network={$network}\");\n        die();\n    }\n\n}\n\n// HTTP GET vars\n$day1 = get_int404(\"day1\", 1);\n$day2 = get_int404(\"day2\", date(\"d\"));\n$month1 = get_int404(\"month1\", 1);\n$month2 = get_int404(\"month2\", date(\"m\"));\n$year1 = get_int404(\"year1\", date(\"Y\"));\n$year2 = get_int404(\"year2\", date(\"Y\"));\n$hour1 = get_int404(\"hour1\", 0);\n$hour2 = get_int404(\"hour2\", 0);\n$minute1 = get_int404(\"minute1\", 0);\n$minute2 = get_int404(\"minute2\", 0);\n$units = isset($_GET[\"units\"]) ? xssafe($_GET[\"units\"]) : \"mph\";\n$nsector = get_int404('nsector', 36);\n$staticrange = get_int404('staticrange', 0);\n$level = isset($_GET[\"level\"]) ? floatval($_GET['level']) : 1000;\n$fmt = isset($_GET[\"fmt\"]) ? xssafe($_GET[\"fmt\"]) : 'png';\n$conv = isset($_GET[\"conv\"]) ? xssafe($_GET[\"conv\"]) : \"from\";\n$dpi = get_int404(\"dpi\", 100);\n$bins = array(2, 5, 7, 10, 15, 20);\nfunction conv($val){\n    if (trim($val) == \"\"){\n        return \"\";\n    }\n    return floatval($val);\n}\nfor ($i = 0; $i < sizeof($bins); $i++) {\n    $bins[$i] = isset($_GET[\"bin{$i}\"]) ? conv(xssafe($_GET[\"bin{$i}\"])) : $bins[$i];\n}\n\n// If hour1 is set, we might as well assume we are wanting a plot\nif (isset($_GET[\"hour1\"])) {\n    $rose_uri = \"/cgi-bin/mywindrose.py?nsector=$nsector&amp;station=$station\" .\n        \"&amp;network=$network&amp;day1=$day1&amp;day2=$day2&amp;\" .\n        \"month1=$month1&amp;month2=$month2&amp;year1=$year1&amp;year2=\" .\n        \"$year2&amp;hour1=$hour1&amp;\" .\n        \"hour2=$hour2&amp;minute1=$minute1&amp;minute2=$minute2&amp;\" .\n        \"units=$units&amp;fmt=$fmt&amp;dpi=$dpi&amp;conv=$conv\";\n    if (isset($_GET[\"setbins\"])) {\n        $rose_uri .= sprintf(\"&amp;bins=%s\", implode(\",\", $bins));\n    }\n    if (isset($_GET[\"hourlimit\"])) {\n        $rose_uri .= \"&amp;hourlimit=1\";\n    }\n    if (isset($_GET[\"monthlimit\"])) {\n        $rose_uri .= \"&amp;monthlimit=1\";\n    }\n    if (isset($_GET[\"limit_by_doy\"])) {\n        $rose_uri .= \"&amp;limit_by_doy=1\";\n    }\n    if (isset($_GET[\"hourrangelimit\"])) {\n        $rose_uri .= \"&amp;hourrangelimit=1\";\n    }\n    if ($staticrange > 1 && $staticrange < 101) {\n        $rose_uri .= \"&amp;staticrange={$staticrange}\";\n    }\n    if ($network == 'RAOB') {\n        $rose_uri .= \"&amp;level=\" . $level;\n    }\n    $rosedata_uri = \"{$rose_uri}&amp;justdata=true\";\n}\n\n$firstyear = 1995;\nif (!is_null($metadata[\"archive_begin\"])) {\n    $firstyear = $metadata[\"archive_begin\"]->format(\"Y\");\n}\n\n$t = new MyView();\n$t->iemselect2 = true;\n$t->title = \"Custom Wind Roses\";\n$t->sites_current = \"custom_windrose\";\n$tznote = \"(Times are in {$metadata[\"tzname\"]} time zone)\";\nif ($network == 'RAOB') {\n    $tznote = \"(Times presented are in UTC)\";\n}\n\n$ar = array(\n    \"png\" => \"PNG Image (.PNG)\",\n    \"pdf\" => \"Portable Document Format (.PDF)\",\n    \"svg\" => \"Scalable Vector Graphic (.SVG)\"\n);\n$fselect = make_select(\"fmt\", $fmt, $ar);\n\n$content = <<<EOM\n<h3>Custom Wind Rose Plots</h3>\n\nThis application attempts to generate a wind rose for a time period of\nyour choice.  Please be patient when submitting this form, as it may take\nup to a few minutes to generate the plot due to the large amount of data\nthat this application processes. You can limit the dataset from which the\nwindrose is derived in three ways:\n<ol>\n <li>By only including observations from a specific hour</li>\n <li>By only including observations from a specific month or by a specific\n period of dates each year.</li>\n <li>By only including observations between a start and end hour</li>\n</ol>\n\n<p>You can also, optionally, prescribe six wind speed bins, in the units of\nyour choice.  The first bin from zero to your value is assumed to be calm values.\nThe last bin represents the last value to infinity.\nThese images and data are in the public domain,\nthe <a href=\"/disclaimer.php\">disclaimer page</a> contains more details.</p>\n\n<p><a href=\"/cgi-bin/mywindrose.py?help\" class=\"btn btn-primary\">\n<i class=\"bi bi-file-earmark-text\"></i> Backend Documentation\n</a>\nexists for those that wish to script against the windrose image/data service.\nAdditionally, <a href=\"/plotting/auto/?q=16\" class=\"btn btn-primary\">\n<i class=\"bi bi-graph-up\"></i> Autoplot 16</a> allows for custom wind roses\nbased on thresholds being met.</p>\n\n<form method=\"GET\" name=\"windrose\">\n<input type=\"hidden\" name=\"station\" value=\"{$station}\">\n<input type=\"hidden\" name=\"network\" value=\"{$network}\">\n\n<h4>Select Start/End Time:</h4>\n<i>{$tznote}</i>\n\n<table class=\"table table-bordered\">\n  <tr>\n    <td></td>\n    <th>Year</th><th>Month</th><th>Day</th>\n    <th>Hour</th><th>Minute</th>\n<td rowspan=\"3\">\nEOM;\n$hs1 = hourSelect($hour1, \"hour1\");\n$hs2 = hourSelect($hour2, \"hour2\");\n$mi1 = minuteSelect($minute1, \"minute1\");\n$mi2 = minuteSelect($minute2, \"minute2\");\nif ($network == 'RAOB') {\n    $levels = array(\n        1000 => 1000,\n        925 => 925,\n        850 => 850,\n        700 => 700,\n        500 => 500,\n        400 => 400,\n        300 => 300,\n        250 => 250,\n        150 => 150,\n        100 => 100\n    );\n    $content .= 'Select Pressure Level: ' . make_select(\"level\", $level, $levels) . ' hPa<br />';\n    $hours = array(0 => 0, 12 => 12);\n    $hs1 = make_select(\"hour1\", $hour1, $hours);\n    $hs2 = make_select(\"hour2\", $hour2, $hours);\n    $mi1 = \"\";\n    $mi2 = \"\";\n}\n$ar = array(\n    \"kts\" => \"knots (KTS)\",\n    \"mph\" => \"miles per hour (MPH)\",\n    \"mps\" => \"meters per second (MPS)\"\n);\n$uselect = make_select(\"units\", $units, $ar);\n\n$content .= '<input type=\"checkbox\" name=\"hourlimit\" value=\"1\" ';\nif (isset($_GET[\"hourlimit\"])) $content .= \"checked=\\\"checked\\\" \";\n$content .= 'id=\"r1\"> <label for=\"r1\">1. Limit to Hour of Start Time</label>';\n\n$content .= '<br /><input type=\"checkbox\" name=\"monthlimit\" value=\"1\" ';\nif (isset($_GET[\"monthlimit\"])) $content .= \"checked=\\\"checked\\\" \";\n$content .= 'id=\"r2\"> <label for=\"r2\">2a. Limit to Month of Start Time</label>';\n\n$content .= '<br /><input type=\"checkbox\" name=\"limit_by_doy\" value=\"1\" ';\nif (isset($_GET[\"limit_by_doy\"])) $content .= \"checked=\\\"checked\\\" \";\n$content .= 'id=\"r2b\"> <label for=\"r2b\">2b. Limit to Month+Day Period each Year</label>';\n\n$content .= '<br /><input type=\"checkbox\" name=\"hourrangelimit\" value=\"1\" ';\nif (isset($_GET[\"hourrangelimit\"])) $content .= \"checked=\\\"checked\\\" \";\n$content .= 'id=\"r3\"> <label for=\"r3\">3. Limit to Range of hours given by start and end time</label>';\n\n$content .= <<<EOM\n<br />\n<input type=\"number\" step=\".1\" min=\"0\" max=\"100\" name=\"staticrange\" value=\"{$staticrange}\" size=\"3\"\n id=\"staticrange\">\n<label for=\"staticrange\">Specify frequency axis maximum (number between 1 and 100)\n(0 represents auto-scale) (units are percent).</label>\nEOM;\n\n// Allow setting of wind speed bins\n$missive = <<<EOM\n<p>Since calm winds have no direction, the first bin lumps all the calm\nreports together. A value of 2 knots is likely the most appropriate here. The\nbin ranges are inclusive on the lower end and exclusive on the upper end. If you\nwant to plot less than six bins, leave the right most boxes blank.</p>\nEOM;\n$content .= sprintf(\n    '<br /><input type=\"checkbox\" name=\"setbins\" ' .\n        'value=\"1\"%s id=\"o2\"> <label for=\"o2\">Optional. User provided wind speed bins</label><br />' .\n        '<div style=\"display: %s;\" id=\"showbins\"> 0 - ' .\n        '<input type=\"text\" name=\"bin0\" value=\"%s\" size=\"4\"> - ' .\n        '<input type=\"text\" name=\"bin1\" value=\"%s\" size=\"4\"> - ' .\n        '<input type=\"text\" name=\"bin2\" value=\"%s\" size=\"4\"> - ' .\n        '<input type=\"text\" name=\"bin3\" value=\"%s\" size=\"4\"> - ' .\n        '<input type=\"text\" name=\"bin4\" value=\"%s\" size=\"4\"> - ' .\n        '<input type=\"text\" name=\"bin5\" value=\"%s\" size=\"4\"> +' .\n        '%s' .\n        '</div>',\n    isset($_GET[\"setbins\"]) ? \" checked=\\\"checked\\\"\" : \"\",\n    isset($_GET[\"setbins\"]) ? \"block\" : \"none\",\n    $bins[0],\n    $bins[1],\n    $bins[2],\n    $bins[3],\n    $bins[4],\n    $bins[5],\n    $missive,\n);\n\n$content .= \"<br /><strong>Bar Convention of Plot:</strong>\";\n$content .= '<br /><input type=\"radio\" id=\"met\" name=\"conv\" value=\"from\"';\n$content .= ($conv == \"from\") ? ' checked=\"checked\"' : \"\";\n$content .= '><label for=\"met\"> Meteorology: Bars point in direction wind is '.\n    'blowing from.</label>';\n$content .= '<br /><input type=\"radio\" id=\"eng\" name=\"conv\" value=\"to\"';\n$content .= ($conv == \"to\") ? ' checked=\"checked\"' : \"\";\n$content .= '><label for=\"eng\"> Engineering: Bars point in direction wind is '.\n    'blowing toward.</label>';\n\n// Pick between display units\n$content .= '<br />Display Units: ';\n$content .= $uselect;\n\n$content .= '<br />Direction Bins: <select name=\"nsector\">';\n$opts = array(8, 12, 16, 20, 24, 28, 32, 36);\nforeach ($opts as $k => $v) {\n    $content .= sprintf(\n        \"<option value=\\\"%s\\\" %s>%s</option>\\n\",\n        $v,\n        ($nsector == $v) ? 'selected=\"selected\"' : '',\n        $v\n    );\n}\n\n\n$content .= '\n</select>\n\n<br />Image Format: ' . $fselect . '\n<br />Image DPI: <input type=\"text\" name=\"dpi\" value=\"' . $dpi . '\" size=\"4\">\n<br /><input type=\"submit\"></td>\n  </tr>\n\n  <tr>\n    <th>Start:</th>\n    <td>\n     ' . yearSelect($firstyear, $year1, \"year1\") . '\n    </td>\n    <td>\n     ' . monthSelect($month1, \"month1\") . '\n    </td>\n    <td>\n     ' . daySelect($day1, \"day1\") . '\n    </td>\n    <td>\n     ' . $hs1 . '\n    </td>\n    <td>\n     ' . $mi1 . '\n    </td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>' . yearSelect($firstyear, $year2, \"year2\") . '</td>\n    <td>\n     ' . monthSelect($month2, \"month2\") . '\n    </td>\n    <td>\n     ' . daySelect($day2, \"day2\") . '\n    </td>\n    <td>\n     ' . $hs2 . '\n    </td>\n    <td>\n     ' . $mi2 . '\n    </td>\n  </tr>\n</table>\n</form>';\n\nif (isset($rose_uri)) {\n    $content .= \"<div class=\\\"alert alert-info\\\" id=\\\"img-loading\\\">Image will appear below once generated, please be patient...</div>\";\n    $content .= \"<a href='{$rosedata_uri}' class='btn btn-primary' role='button' rel='nofollow'><i class='bi bi-list'></i> View raw data for chart</a><br />\";\n    if ($fmt == 'pdf') {\n        $content .= <<<EOM\n<object id=\"windrose-plot\" src=\"{$rose_uri}\" width=\"700px\" height=\"700px\">\n    <embed src=\"{$rose_uri}\" width=\"700px\" height=\"700px\">\n    </embed>\n</object>\nEOM;\n    } else {\n        $content .= \"<img src=\\\"$rose_uri\\\" class=\\\"img-fluid\\\" id=\\\"windrose-plot\\\">\";\n    }\n} else {\n    $content .= \"<div class=\\\"alert alert-info\\\">Please make your custom plot\n          selections above</a>\";\n}\n$t->jsextra = <<<EOM\n<script src=\"dyn_windrose.module.js\" type=\"module\"></script>\nEOM;\n\n$t->content = $content;\n$t->render('sites.phtml');\n"
  },
  {
    "path": "htdocs/sites/hist.module.js",
    "content": "/* global Tabulator */\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    const table = document.getElementById('thetable');\n    if (table) {\n        window.tt = new Tabulator('#thetable', {\n            layout: 'fitColumns',\n            responsiveLayout: 'collapse',\n            columns: [\n                {title: \"ID:\", field: \"id\"},\n                {title: \"Location:\", field: \"location\", formatter: \"html\"},\n                {title: \"High:\", field: \"high\"},\n                {title: \"Low:\", field: \"low\"},\n                {title: \"Min Feels Like[F]:\", field: \"min_feels\"},\n                {title: \"Max Feels Like [F]:\", field: \"max_feels\"},\n                {title: \"Min Dew Point [F]:\", field: \"min_dew\"},\n                {title: \"Max Dew Point [F]:\", field: \"max_dew\"},\n                {title: \"Rainfall:\", field: \"rainfall\"},\n                {title: \"Peak Gust:\", field: \"peak_gust\"},\n                {title: \"Time of Gust:\", field: \"gust_time\"},\n                {title: \"Snowfall:\", field: \"snowfall\"},\n                {title: \"Snow Depth:\", field: \"snow_depth\"}\n            ]\n        });\n    }\n});"
  },
  {
    "path": "htdocs/sites/hist.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"THROTTLE_APP\", \"sites/obhistory\");\ndefine(\"THROTTLE_LIMIT\", 16);\n// sites calls throttle\nrequire_once \"../../include/sites.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/mlib.php\";\nrequire_once \"../../include/myview.php\";\n\n$ctx = get_sites_context();\n$station = $ctx->station;\n$network = $ctx->network;\n$metadata = $ctx->metadata;\n\n$t = new MyView();\n$t->iemselect2 = true;\n\n/* Get vars */\n$year = get_int404('year', intval(date(\"Y\", time() - 86400)));\n// Don't allow dates into the future\nif ($year > intval(gmdate(\"Y\"))) {\n    $year = intval(gmdate(\"Y\"));\n}\n$month = get_int404('month', date(\"m\", time() - 86400));\n$day = get_int404('day', 1);\n$mode = get_str404('mode', 'monthly');\n$sortvar = get_str404('sortvar', 'id');\nif ($sortvar == 'station') {\n    $sortvar = 'id';\n}\n\n$ts = new Datetime(\"$year-$month-$day\");\n$dateStr = $ts->format(\"Y-m-d\");\n$nicedate = $ts->format(\"d M Y\");\n$nicemonthdate = $ts->format(\"M Y\");\n$htmlout = \"\";\n\nfunction snowprint($val)\n{\n    if (is_null($val)) return \"\";\n    if ($val > 0 && $val < 0.01) return \"T\";\n    return $val;\n}\n\nfunction printMonth($year, $month, $db, $thisApp, $dailyApp)\n{\n\n    $sts = mktime(8, 0, 0, $month, 1, $year);\n    $ets = mktime(10, 0, 0, $month + 1, 0, $year);  // CST concerns\n\n    $lastMonth = $sts - 5 * 86400; // 5 days earlier\n    $nextMonth = $ets + 5 * 86400; // 5 days later\n\n    $lurl = $thisApp . sprintf(\"&year=%s&month=%s\", date(\"Y\", $lastMonth), date(\"m\", $lastMonth));\n    $lstr = date(\"M Y\", $lastMonth);\n    $nurl = $thisApp . sprintf(\"&year=%s&month=%s\", date(\"Y\", $nextMonth), date(\"m\", $nextMonth));\n    $nstr = date(\"M Y\", $nextMonth);\n\n    // Get the day of the week of the first day this month\n    $first_dow = intval(date(\"w\", $sts));\n\n    $title = date(\"M Y\", $sts);\n    $s = <<<EOM\n<table class=\"table table-bordered\">\n<tr><td><a href=\"{$lurl}\">{$lstr}</a></td><th colspan=\"5\">{$title}</th>\n    <td><a href=\"{$nurl}\">{$nstr}</a></td></tr>\n<tr><th>Sunday</th><th>Monday</th><th>Tuesday</th><th>Wednesday</th>\n    <th>Thursday</th><th>Friday</th><th>Saturday</th></tr>\nEOM;\n\n    // Handle the first week\n    $now = $sts;\n    $s .= \"<tr>\";\n    for ($i = 0; $i < $first_dow; $i++) {\n        $secs = $now - (86400 * ($first_dow - $i));\n        $s .= '<td valign=\"top\" bgcolor=\"#EEEEEE\">';\n        $s .= \"<b>\" . date(\"d\", $secs) . \"</b>\";\n        $s .= '</td>';\n    }\n    for ($i = $first_dow; $i < 7; $i++) {\n        $key = date(\"Ymd\", $now);\n\n        $s .= '<td valign=\"top\">';\n        $s .= \"<b><a href=\\\"\" . $dailyApp . date(\"d\", $now) . \"\\\">\" . date(\"d\", $now) . \"</a></b>\";\n        if (isset($db[$key][\"cv\"])) {\n            $s .= sprintf(\" (@%s)\", $db[$key]['cv']);\n        }\n        $s .= sprintf(\"<br />%s</td>\", $db[$key][\"content\"] ?? '');\n        $now = $now + 86400;\n    }\n    $s .= \"</tr>\";\n\n    // Handle the rest of the weeks\n    while ($now <= $ets) {\n        $s .= \"<tr>\\n\";\n        for ($i = 0; $i < 7; $i++) {\n            $key = date(\"Ymd\", $now);\n            if ($now < $ets) {\n                $s .= '<td valign=\"top\">';\n                $s .= \"<b><a href=\\\"\" . $dailyApp . date(\"d\", $now) . \"\\\">\" . date(\"d\", $now) . \"</a></b>\";\n            } else {\n                $s .= '<td bgcolor=\"#EEEEEE\" valign=\"top\">';\n                $s .= \"<b>\" . date(\"d\", $now) . \"</b>\";\n            }\n            if (isset($db[$key][\"cv\"])) {\n                $s .= sprintf(\" (@%s)\", $db[$key]['cv']);\n            }\n            if (isset($db[$key][\"content\"])) {\n                $s .= \"<br />\" . $db[$key][\"content\"] . \"</td>\";\n            }\n            $now = $now + 86400;\n        } // End of week\n        $s .= \"</tr>\\n\";\n    }\n\n    $s .= \"</table>\";\n    return $s;\n} // End of printMonth\n\nif ($mode == \"monthly\") {\n    $arr = array(\n        \"network\" => $network,\n        \"station\" => $station,\n        \"month\" => $month,\n        \"year\" => $year,\n    );\n} else {\n    $arr = array(\n        \"network\" => $network,\n        \"date\" => sprintf(\"%s-%02.0f-%02.0f\", $year, $month, $day),\n    );\n}\n$wsuri = sprintf(\"/api/1/daily.json?%s\", http_build_query($arr));\n$wsuri_csv = sprintf(\"/api/1/daily.txt?%s\", http_build_query($arr));\n$jobj = iemws_json(\"daily.json\", $arr);\n\nif ($jobj === FALSE){\n    $htmlout = \"<p>No data was found for this request.</p>\";\n}\nelse if ($mode == \"monthly\") {\n    $t->title = sprintf(\"%s Data Calendar for %s\", $station, $nicemonthdate);\n    $db = array();\n    foreach ($jobj[\"data\"] as $bogus => $row) {\n        $dvalid = date(\"Ymd\", strtotime($row[\"date\"] . \" 12:00\"));\n        $str = \"\";\n        if (! is_null($row[\"max_tmpf\"])){\n            $str .= \"High: \" . $row[\"max_tmpf\"];\n            if ($row[\"tmpf_est\"]) $str .= \"(E)\";\n        }\n\n        if (! is_null($row[\"min_tmpf\"])) {\n            $str .= \"<br>Low: \" . $row[\"min_tmpf\"];\n            if ($row[\"tmpf_est\"]) $str .= \"(E)\";\n        }\n\n        if ($row[\"precip\"] < 0.01 && $row[\"precip\"] > 0) {\n            $str .= \"<br>Precip: Trace \";\n        } elseif (is_null($row[\"precip\"])) {\n            $str .= \"<br />Precip: M\";\n        } else {\n            $str .= \"<br>Precip: \" . sprintf(\"%.2f\", $row[\"precip\"]);\n        }\n        if (array_key_exists(\"precip_est\", $row) && $row[\"precip_est\"]) $str .= \"(E)\";\n\n        if (array_key_exists(\"max_rstage\", $row) && !is_null($row[\"max_rstage\"]) && $row[\"max_rstage\"] >= 0) {\n            $str .= \"<br>Max Stage[ft]: \" . sprintf(\"%.2f\", $row[\"max_rstage\"]);\n        }\n\n        if (!is_null($row[\"snow\"]) && $row[\"snow\"] >= 0) {\n            $str .= \"<br>Snow: \" . snowprint($row[\"snow\"]);\n        }\n\n        if (!is_null($row[\"snowd\"]) && $row[\"snowd\"] >= 0) {\n            $str .= \"<br>Snow Depth: \" . snowprint($row[\"snowd\"]);\n        }\n        if (isset($row[\"avg_sknt\"])) {\n            $str .= sprintf(\n                \"<br />Avg Wind: %s @ %.1f\",\n                drct2txt($row[\"vector_avg_drct\"]),\n                $row[\"avg_sknt\"] * 1.15\n            );\n        }\n\n        if (!is_null($row[\"max_gust\"]) && !is_null($row[\"max_gust_localts\"]) && strlen($row[\"max_gust_localts\"]) > 0) {\n            $gtim = strtotime(substr($row[\"max_gust_localts\"], 0, 16));\n            $gs = date(\"g:i A\", $gtim);\n            $g = round($row[\"max_gust\"] * 1.15, 0);\n            if (is_null($row[\"max_drct\"])) {\n                $str .= \"<br>Gust: \" . $g . \" (\" . $gs . \")\";\n            } else {\n                $str .= \"<br>Gust:<br> \" . drct2txt($row[\"max_drct\"]) . \" @ \" . $g .\n                    \"<br>(\" . $gs . \")\";\n            }\n        }\n\n        if (!is_null($row[\"min_rh\"])) {\n            $str .= sprintf(\n                \"<br />RH%% Min/Max: %.0f-%.0f\",\n                $row[\"min_rh\"],\n                $row[\"max_rh\"]\n            );\n        }\n\n        if (!is_null($row[\"min_feel\"])) {\n            $str .= sprintf(\n                \"<br />Feel Min/Max: %.0f to %.0f\",\n                $row[\"min_feel\"],\n                $row[\"max_feel\"]\n            );\n        }\n        $db[$dvalid] = array(\"content\" => $str, \"cv\" => $row[\"temp_hour\"]);\n    } /* End of for */\n\n    $htmlout = printMonth(\n        $year,\n        $month,\n        $db,\n        \"/sites/hist.phtml?network=$network&station=$station\",\n        \"/sites/hist.phtml?station=$station&network=$network&mode=daily&year=$year&month=$month&day=\"\n    );\n\n    $htmlout .= <<<EOM\n\n <p>The data presented here provided by <a href=\"/api/\">IEM API</a>\n webservice: <a href=\"{$wsuri}\">daily.json</a>. A simple <a href=\"{$wsuri_csv}\">CSV option</a>\n exists as well.</p>\n\n <h3>Daily High/Low Plot</h3>\n<img src=\"/plotting/auto/plot/17/month:{$month}::year:{$year}::station:{$station}::network:{$network}.png\" class=\"img-fluid\">\n<br /><strong>Description:</strong> This chart of the monthly temperature data.\nThe bars are the observations and the dots are climatology.\n\n<h3>Daily Rainfall</h3>\n<img src=\"/plotting/auto/plot/17/month:{$month}::year:{$year}::station:{$station}::network:{$network}::p:precip.png\" class=\"img-fluid\">\n<br /><strong>Description:</strong> This chart is of daily precipitation for the month.\nThe red line would be an average month while the blue line and bars are observations.\n\n<h3>Daily Average Wind Speeds</h3>\n<img src=\"/plotting/auto/plot/71/network:{$network}::zstation:{$station}::year:{$year}::month:{$month}::units:MPH::dpi:100.png\" class=\"img-fluid\"></p>\n<br /><strong>Description:</strong> This chart is of the daily average wind speeds.\nEOM;\n} else {\n    $t->title = sprintf(\"%s Network Summary for %s\", $network, $nicedate);\n    // We want a table of obs for one day!\n    $uri = \"hist.phtml?year=$year&month=$month&day=$day&mode=daily&station=$station&network=$network&sortvar=\";\n    $htmlout = <<<EOM\n\n<p>This table lists out IEM computed daily summary values for this network.\nThese values are derived from available observations and specialized summary\nproducts that some of the observation sites produce.  The time zone reported\nfor the peak winds are hopefully the local valid time\n(<strong>{$metadata[\"tzname\"]}</strong>) at the site. There\nis a <a href=\"/request/daily.phtml?network={$network}\">download interface</a> for most of this\nsummary information.</p>\n\n<table class=\"table table-striped table-bordered\" id=\"thetable\">\n<thead>\n<tr>\n<th>ID:</th>\n<th>Location:</th>\n<th>High:</th>\n<th>Low:</th>\n<th>Min Feels Like[F]:</th>\n<th>Max Feels Like [F]:</th>\n<th>Min Dew Point [F]:</th>\n<th>Max Dew Point [F]:</th>\n<th>Rainfall:</th>\n<th>Peak Gust:</th>\n<th>Time of Gust:</th>\n<th>Snowfall:</th>\n<th>Snow Depth:</a></th>\n</tr>\n</thead>\nEOM;\n    foreach ($jobj[\"data\"] as $bogus => $row) {\n        if (is_null($row[\"max_tmpf\"])) $row[\"max_tmpf\"] = \"M\";\n        if (is_null($row[\"min_tmpf\"])) $row[\"min_tmpf\"] = \"M\";\n        $label = $row[\"name\"];\n        if ($row[\"temp_hour\"]) {\n            $label .= sprintf(\" (@ %s)\", $row[\"temp_hour\"]);\n        }\n        $htmlout .= \"<tr><td>\" . $row['station'] . \"</td>\n          <td><a href=\\\"hist.phtml?network=$network&year=$year&month=$month&mode=monthly&station=\" . $row[\"station\"] . \"\\\">{$label}</a></td>\";\n\n        $te = (array_key_exists(\"tmpf_est\", $row) && $row[\"tmpf_est\"] )? \"(E)\" : \"\";\n        $htmlout .= \"<td>\" . $row[\"max_tmpf\"] . \" {$te}</td>\";\n\n        $htmlout .= \"<td>\" . $row[\"min_tmpf\"] . \" {$te}</td>\";\n        $htmlout .= \"<td>\" . $row[\"min_feel\"] . \"</td>\";\n        $htmlout .= \"<td>\" . $row[\"max_feel\"] . \"</td>\";\n\n        $htmlout .= \"<td>\" . $row[\"min_dwpf\"] . \"</td>\";\n        $htmlout .= \"<td>\" . $row[\"max_dwpf\"] . \"</td>\";\n\n        $pe = (array_key_exists(\"precip_est\", $row) && $row[\"precip_est\"] ) ? \"(E)\" : \"\";\n        $htmlout .= \"<td>\" . snowprint($row[\"precip\"]) . \" {$pe}</td>\";\n\n        if (array_key_exists(\"max_gust\", $row) && !is_null($row[\"max_gust\"]) && $row[\"max_gust_localts\"] != \"\") {\n            $gtim = strtotime(substr($row[\"max_gust_localts\"], 0, 16));\n            $gs = date(\"g:i A\", $gtim);\n            $g = round($row[\"max_gust\"] * 1.15, 0);\n\n            if (is_null($row[\"max_drct\"])) {\n                $htmlout .= \"<td>\" . $g . \"</td><td>\" . $gs . \"</td>\";\n            } else {\n                $htmlout .= \"<td>\" . drct2txt($row[\"max_drct\"]) . \" @ \" . $g .\n                    \"</td><td>\" . $gs . \"</td>\";\n            }\n        } else {\n            $htmlout .= \"<td></td><td></td>\";\n        }\n        $htmlout .= \"<td>\" . snowprint($row[\"snow\"]) . \"</td><td>\" . snowprint($row[\"snowd\"]) . \"</td>\";\n\n        $htmlout .= \"</tr>\";\n    } /* End of for loop */\n    $htmlout .= \"</table>\\n\";\n}\n$t->sites_current = \"calendar\";\n$htmlout .= <<< EOM\n  <p>The data presented here provided by <a href=\"/api/\">IEM API</a>\n  webservice: <a href=\"{$wsuri}\">daily.json</a>. A simple <a href=\"{$wsuri_csv}\">CSV option</a>\n  exists as well.</p>\nEOM;\n\n$content = <<<EOM\n<div class=\"hidden-print\">\n<form method=\"GET\" name=\"changer\" class=\"form-inline\" role=\"form\">\n<input type=\"hidden\" name=\"station\" value=\"{$station}\">\n<input type=\"hidden\" name=\"network\" value=\"{$network}\">\nEOM;\n$startyear = 2002;\nif (!is_null($metadata[\"archive_begin\"])) {\n    $startyear = $metadata[\"archive_begin\"]->format(\"Y\");\n}\n$ys = yearSelect($startyear, $year, \"year\");\n$ms = monthSelect($month, \"month\");\n$ds = daySelect($day);\nif ($mode == \"monthly\") {\n    $content .= <<<EOM\n<h2>Data Calendar for {$metadata[\"name\"]}</h2>\n<p>The calendar chart below shows the daily reported climate variables.\nYou can click on a date to display the values for all sites for that day.\nTime stamps are displayed in the <strong>{$metadata[\"tzname\"]}</strong>\ntimezone. Wind speeds are in mph and temperatures in Fahrenheit.  Values\nflagged with a <i>(E)</i> are estimated by the IEM.</p>\n  <p>Year: &nbsp; {$ys}\n    <p>Month: &nbsp; {$ms}\n    <p>&nbsp; <input type='submit' value='Change'></form>\n</div>\nEOM;\n} else {\n    $content .= <<<EOM\n  <h2>{$nicedate} Summary for {$network}</h2>\n  <p>Switch date shown:<br /><input type=\"hidden\" value=\"daily\" name=\"mode\">\n  {$ys} {$ms} {$ds}\n  <input type=\"submit\" value=\"Switch Date\"></form>\n  </div>\nEOM;\n}\n\n$content .= $htmlout;\n$t->content = $content;\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"https://unpkg.com/tabulator-tables@6.3.1/dist/css/tabulator_bootstrap5.min.css\" />\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator.min.js\"></script>\n<script src=\"hist.module.js\" type=\"module\"></script>\nEOM;\n$t->render('sites.phtml');\n"
  },
  {
    "path": "htdocs/sites/locate.php",
    "content": "<?php\n// Main landing page for the IEM Sites stuff\n$OL = \"10.6.1\";\ndefine(\"IEM_APPID\", 5);\nrequire_once \"../../include/forms.php\";\nif (array_key_exists(\"station\", $_GET) && array_key_exists(\"network\", $_GET)) {\n    $uri = sprintf(\n        \"site.php?station=%s&network=%s\",\n        get_str404(\"station\", \"\"),\n        get_str404(\"network\", \"\")\n    );\n    header(\"Location: $uri\");\n    exit();\n}\nrequire_once \"../../include/mlib.php\";\nforce_https();\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/myview.php\";\n\n$network = get_str404(\"network\", \"IA_ASOS\");\n\n$t = new MyView();\n$t->iemselect2 = TRUE;\n$t->title = \"Site Locator\";\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/{$OL}/ol.css\" type=\"text/css\">\n<link type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"/vendor/openlayers/{$OL}/ol.js\" type=\"text/javascript\"></script>\n<script src='/vendor/openlayers/{$OL}/ol-layerswitcher.js'></script>\n<script src=\"/js/olselect.js\"></script>\nEOM;\n\n$nselect = selectNetwork($network);\n$n2select = networkSelect($network, \"\");\n\n$t->content = <<<EOM\n<div class=\"row\">\n    <div class=\"col-12\">\n        <div class=\"d-flex align-items-center mb-4\">\n            <i class=\"bi bi-geo-alt-fill fs-1 text-primary me-3\"></i>\n            <div>\n                <h1 class=\"mb-1\">IEM Site Information</h1>\n                <p class=\"text-muted mb-0\">Locate and explore weather monitoring stations</p>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"row mb-4\">\n    <div class=\"col-12\">\n        <div class=\"alert alert-info\" role=\"alert\">\n            <i class=\"bi bi-info-circle me-2\"></i>\n            <strong>About this tool:</strong> The IEM collects information from many sites organized into\n            networks based on their geography and/or the organization who administers the network.\n            This application provides metadata and site-specific applications you may find useful.\n        </div>\n    </div>\n</div>\n\n<div class=\"row mb-4\">\n    <div class=\"col-lg-6 mb-3\">\n        <div class=\"card\">\n            <div class=\"card-header bg-primary text-white\">\n                <i class=\"bi bi-diagram-3 me-2\"></i>Select By Network\n            </div>\n            <div class=\"card-body\">\n                <form name=\"switcher\" class=\"d-flex gap-2\">\n                    <div class=\"flex-grow-1\">\n                        {$nselect}\n                    </div>\n                    <button type=\"submit\" class=\"btn btn-primary\">\n                        <i class=\"bi bi-arrow-left-right me-1\"></i>Switch Network\n                    </button>\n                </form>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-lg-6 mb-3\">\n        <div class=\"card\">\n            <div class=\"card-header bg-success text-white\">\n                <i class=\"bi bi-geo-alt me-2\"></i>Select By Station\n            </div>\n            <div class=\"card-body\">\n                <form name=\"olselect\">\n                    <input type=\"hidden\" name=\"network\" value=\"{$network}\">\n                    <div class=\"d-flex gap-2\">\n                        <div class=\"flex-grow-1\">\n                            {$n2select}\n                        </div>\n                        <button type=\"submit\" class=\"btn btn-success\">\n                            <i class=\"bi bi-check-lg me-1\"></i>Select Station\n                        </button>\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"row\">\n    <div class=\"col-12\">\n        <div class=\"card\">\n            <div class=\"card-header bg-secondary text-white d-flex justify-content-between align-items-center\">\n                <div>\n                    <i class=\"bi bi-map me-2\"></i>Interactive Station Map\n                </div>\n                <div class=\"d-flex gap-3\">\n                    <span class=\"badge bg-success\">\n                        <i class=\"bi bi-circle-fill me-1\"></i>Online\n                    </span>\n                    <span class=\"badge bg-warning text-dark\">\n                        <i class=\"bi bi-circle-fill me-1\"></i>Offline\n                    </span>\n                </div>\n            </div>\n            <div class=\"card-body p-0\">\n                <div class=\"alert alert-light border-0 rounded-0 mb-0\">\n                    <small class=\"text-muted\">\n                        <i class=\"bi bi-lightbulb me-1\"></i>\n                        <strong>Tip:</strong> Green dots represent stations online with current data.\n                        Yellow dots are stations that are no longer active. Click on a dot to select a station.\n                    </small>\n                </div>\n                <div id=\"map\" style=\"width:100%; height: 500px; border-radius: 0 0 0.375rem 0.375rem;\" data-network=\"{$network}\"></div>\n            </div>\n        </div>\n    </div>\n</div>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/sites/meteo.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/sites.php\";\nrequire_once \"../../include/myview.php\";\n\n$ctx = get_sites_context();\n$station = $ctx->station;\n$network = $ctx->network;\n$metadata = $ctx->metadata;\n\n$t = new MyView();\n$t->iemselect2 = true;\n$t->title = \"Site Meteorograms\";\n$t->sites_current = \"meteo\";\n\n$uri = sprintf(\n    \"/plotting/auto/plot/43/station:%s::network:%s.png\",\n    $station,\n    $network\n);\n$t->content = <<<EOM\n\n<p>This page creates a simple plot of recent observations from this site.</p>\n\n<br /><img src=\"{$uri}\" class=\"img-fluid\">\nEOM;\n$t->render('sites.phtml');\n"
  },
  {
    "path": "htdocs/sites/monthlysum.module.js",
    "content": "function go() {\n    const myChartsElement = document.getElementById('mycharts');\n    if (myChartsElement) {\n        myChartsElement.scrollIntoView();\n    }\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    const gogogoBtn = document.getElementById('gogogo');\n    if (gogogoBtn) {\n        gogogoBtn.addEventListener('click', () => {\n            go();\n        });\n    }\n\n    // Check the current URL and if it contains a year parameter, we scroll\n    // to the charts.\n    if (window.location.href.indexOf('year') > -1) {\n        go();\n    }\n});\n"
  },
  {
    "path": "htdocs/sites/monthlysum.php",
    "content": "<?php\n// Summary of monthly data from IEMAccess\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\ndefine(\"THROTTLE_APP\", \"sites/obhistory\");\ndefine(\"THROTTLE_LIMIT\", 16);\n// sites calls throttle\nrequire_once \"../../include/sites.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\n\n$month = get_int404(\"month\", date(\"m\"));\n$year = get_int404(\"year\", date(\"Y\"));\n\n$ctx = get_sites_context();\n$station = $ctx->station;\n$network = $ctx->network;\n$metadata = $ctx->metadata;\n\n$t = new MyView();\n$t->iemselect2 = true;\n$t->title = \"Monthly Summaries\";\n$t->sites_current = \"monthsum\";\n\n$pgconn = iemdb(\"iem\");\n$stname = iem_pg_prepare($pgconn, \"SELECT extract(year from day) as year,\" .\n    \"extract(month from day) as month, sum(pday) as precip, \" .\n    \"avg(avg_rh) as avg_rh, avg(max_tmpf) as avg_high, \" .\n    \"avg(avg_sknt) * 1.15 as avg_wind_mph, \" .\n    \"avg(min_tmpf) as avg_low, avg((max_tmpf + min_tmpf) / 2.) as avg_temp \" .\n    \"from summary s \" .\n    \"JOIN stations t on (s.iemid = t.iemid) WHERE t.id = $1 and t.network = $2 \" .\n    \"GROUP by year, month ORDER by year, month\");\n$rs = pg_execute($pgconn, $stname, array($station, $network));\n$data = array();\n$minyear = 3000;\n$maxyear = 1000;\nwhile ($row = pg_fetch_assoc($rs)) {\n    if ($minyear > $row[\"year\"]) $minyear = $row[\"year\"];\n    if ($maxyear < $row[\"year\"]) $maxyear = $row[\"year\"];\n    $key = sprintf(\"%s_%s\", $row[\"year\"], $row[\"month\"]);\n    $data[$key] = $row;\n}\n$climo = array();\n$pgconn = iemdb(\"coop\");\n$stname = iem_pg_prepare($pgconn, \"SELECT \" .\n    \"extract(month from valid) as month, avg(high) as avg_high, \" .\n    \"avg(low) as avg_low, avg((high+low)/2.) as avg_temp, \" .\n    \"sum(precip) as precip from ncei_climate91 WHERE station = $1\" .\n    \" GROUP by month ORDER by month ASC\");\n$rs = pg_execute($pgconn, $stname, array($metadata[\"ncei91\"]));\nwhile ($row = pg_fetch_assoc($rs)) {\n    $climo[$row[\"month\"]] = $row;\n    $climo[$row[\"month\"]][\"avg_wind_mph\"] = null;\n}\n\nfunction f($data, $key1, $key2, $fmt)\n{\n    if (\n        !array_key_exists($key1, $data) ||\n        !array_key_exists($key2, $data[$key1])\n    ) {\n        return \"M\";\n    }\n    $val = $data[$key1][$key2];\n    if ($val === NULL) return \"M\";\n    return sprintf($fmt, $val);\n}\nfunction f2($data, $key, $fmt)\n{\n    if (!array_key_exists($key, $data)) {\n        return \"M\";\n    }\n    $val = $data[$key];\n    if (is_null($val)) return \"M\";\n    return sprintf($fmt, $val);\n}\n\nfunction make_table($data, $key, $minyear, $maxyear, $fmt, $climo)\n{\n    $table = '<table class=\"table table-ruled table-bordered\">' .\n        '<thead class=\"sticky\">' .\n        '<tr><th>Year</th><th>Jan</th><th>Feb</th><th>Mar</th>' .\n        '<th>Apr</th><th>May</th><th>Jun</th><th>Jul</th><th>Aug</th>' .\n        '<th>Sep</th><th>Oct</th><th>Nov</th><th>Dec</th></tr></thead>' .\n        '<tbody>';\n    for ($year = $minyear; $year <= $maxyear; $year++) {\n        $table .= sprintf(\n            \"<tr><td>%s</td><td>%s</td><td>%s</td>\" .\n                \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td>\" .\n                \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td>\" .\n                \"<td>%s</td><td>%s</td></tr>\",\n            $year,\n            f($data, sprintf(\"%s_1\", $year), $key, $fmt),\n            f($data, sprintf(\"%s_2\", $year), $key, $fmt),\n            f($data, sprintf(\"%s_3\", $year), $key, $fmt),\n            f($data, sprintf(\"%s_4\", $year), $key, $fmt),\n            f($data, sprintf(\"%s_5\", $year), $key, $fmt),\n            f($data, sprintf(\"%s_6\", $year), $key, $fmt),\n            f($data, sprintf(\"%s_7\", $year), $key, $fmt),\n            f($data, sprintf(\"%s_8\", $year), $key, $fmt),\n            f($data, sprintf(\"%s_9\", $year), $key, $fmt),\n            f($data, sprintf(\"%s_10\", $year), $key, $fmt),\n            f($data, sprintf(\"%s_11\", $year), $key, $fmt),\n            f($data, sprintf(\"%s_12\", $year), $key, $fmt)\n        );\n    }\n    if (sizeof($climo) > 0) {\n        $table .= sprintf(\n            \"<tr><td>%s</td><td>%s</td><td>%s</td>\" .\n                \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td>\" .\n                \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td>\" .\n                \"<td>%s</td><td>%s</td></tr>\",\n            \"NCEI Climatology\",\n            f2($climo[\"1\"], $key, $fmt),\n            f2($climo[\"2\"], $key, $fmt),\n            f2($climo[\"3\"], $key, $fmt),\n            f2($climo[\"4\"], $key, $fmt),\n            f2($climo[\"5\"], $key, $fmt),\n            f2($climo[\"6\"], $key, $fmt),\n            f2($climo[\"7\"], $key, $fmt),\n            f2($climo[\"8\"], $key, $fmt),\n            f2($climo[\"9\"], $key, $fmt),\n            f2($climo[\"10\"], $key, $fmt),\n            f2($climo[\"11\"], $key, $fmt),\n            f2($climo[\"12\"], $key, $fmt)\n        );\n    }\n    $table .= \"</tbody></table>\";\n    return $table;\n}\n\n$preciptable = make_table(\n    $data,\n    \"precip\",\n    $minyear,\n    $maxyear,\n    \"%.2f\",\n    $climo\n);\n$windtable = make_table(\n    $data,\n    \"avg_wind_mph\",\n    $minyear,\n    $maxyear,\n    \"%.1f\",\n    $climo\n);\n$hightable = make_table(\n    $data,\n    \"avg_high\",\n    $minyear,\n    $maxyear,\n    \"%.2f\",\n    $climo\n);\n$lowtable = make_table(\n    $data,\n    \"avg_low\",\n    $minyear,\n    $maxyear,\n    \"%.2f\",\n    $climo\n);\n$temptable = make_table(\n    $data,\n    \"avg_temp\",\n    $minyear,\n    $maxyear,\n    \"%.2f\",\n    $climo\n);\n$noclimo = array();\n$rhtable = make_table(\n    $data,\n    \"avg_rh\",\n    $minyear,\n    $maxyear,\n    \"%.1f%%\",\n    $noclimo\n);\n\n$timestamp = mktime(0, 0, 0, $month, 1, $year);\n$lmonth = $timestamp - 5 * 86400;\n$nmonth = $timestamp + 35 * 86400;\n$llink = sprintf(\n    \"monthlysum.php?station=%s&amp;network=%s&amp;month=%s&amp;year=%s\",\n    $station,\n    $network,\n    date(\"m\", $lmonth),\n    date(\"Y\", $lmonth)\n);\n$nlink = sprintf(\n    \"monthlysum.php?station=%s&amp;network=%s&amp;month=%s&amp;year=%s\",\n    $station,\n    $network,\n    date(\"m\", $nmonth),\n    date(\"Y\", $nmonth)\n);\n$ltext = date(\"M Y\", $lmonth);\n$ntext = date(\"M Y\", $nmonth);\n\n$ms = monthSelect($month);\n$minyear = is_null($metadata[\"archive_begin\"]) ? 1929 : intval($metadata[\"archive_begin\"]->format(\"Y\"));\n$ys = yearSelect($minyear, $year);\n\n$plot1 = sprintf(\n    \"/plotting/auto/plot/17/month:%s\"\n        . \"::year:%s::station:%s::network:%s::dpi:100.png\",\n    $month,\n    $year,\n    $station,\n    $network\n);\n$plot2 = sprintf(\n    \"/plotting/auto/plot/17/month:%s::year:%s::station:%s\" .\n        \"::network:%s::p:precip.png\",\n    $month,\n    $year,\n    $station,\n    $network\n);\n\n$t->jsextra = '<script src=\"monthlysum.module.js\" type=\"module\"></script>';\n$t->content = <<<EOM\n\n<p><button id=\"gogogo\" role=\"button\" class=\"btn btn-primary\"><i class=\"bi bi-arrow-down\"></i> View Monthly Charts</button></p>\n\n<p>The following tables present IEM computed monthly data summaries based on\ndaily data provided by or computed for the IEM. A <a href=\"/request/daily.phtml?network={$network}\">download interface</a>\nexists for the daily summary information.  The climatology is provided by the\nnearest NCEI climate station (<a href=\"/sites/site.php?station={$metadata[\"ncei91\"]}&amp;network=NCEI91\">{$metadata[\"ncei91\"]}</a>) within the current 1991-2020\ndataset.</p>\n\n<p><i class=\"bi bi-table\"></i> To load shown data into Microsoft Excel,\nhighlight the table information with your mouse and then copy/paste into Excel.</p>\n\n<h3><a name=\"precip\"></a>Precipitation Totals [inch]</h3>\n\n{$preciptable}\n\n<h3><a name=\"avg_wind_mph\"></a>Average Wind Speed [MPH]</h3>\n\n{$windtable}\n\n<h3><a name=\"avg_high\"></a>Average Daily High Temperature [F]</h3>\n\n{$hightable}\n\n<h3><a name=\"avg_low\"></a>Average Daily Low Temperature [F]</h3>\n\n{$lowtable}\n\n<h3><a name=\"avg_temp\"></a>Average Daily Temperature (high+low)/2 [F]</h3>\n\n{$temptable}\n\n<h3><a name=\"avg_rh\"></a>Average Relative Humidity [%]</h3>\n\n<p>This value is computed via a simple average of available observations weighted\nby the duration between observations.</p>\n\n{$rhtable}\n\n<h3 id=\"mycharts\">Monthly Plots</h3>\n\n<form method=\"GET\" name=\"changemonth\" action=\"monthlysum.php#plots\">\n <input type=\"hidden\" name=\"station\" value=\"{$station}\">\n <input type=\"hidden\" name=\"network\" value=\"{$network}\">\n <h3>Select month and year:</h3>\n <div class=\"row\">\n <div class=\"col-sm-3\">\n <a href=\"{$llink}\" class=\"btn btn-secondary\">{$ltext} <i class=\"bi bi-arrow-left\"></i></a>\n    </div>\n    <div class=\"col-sm-6\">\n  {$ms} {$ys}\n <input type=\"submit\" value=\"Generate Plot\">\n </div>\n <div class=\"col-sm-3\">\n <a href=\"{$nlink}\" class=\"btn btn-secondary\"><i class=\"bi bi-arrow-right\"></i> {$ntext}</a>\n</div>\n</div>\n</form>\n\n<div class=\"row\">\n<div class=\"col-md-12\">\n<img src=\"{$plot1}\" alt=\"Monthly Plot\" class=\"img-fluid\">\n</div>\n</div>\n\n<div class=\"row\">\n<div class=\"col-md-12\">\n<img src=\"{$plot2}\" alt=\"Monthly Plot\" class=\"img-fluid\">\n</div>\n</div>\n\nEOM;\n$t->render('sites.phtml');\n"
  },
  {
    "path": "htdocs/sites/neighbors.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/sites.php\";\nrequire_once \"../../include/myview.php\";\n\n$ctx = get_sites_context();\n// boilerplate is used in rendering :/\n$station = $ctx->station;\n$network = $ctx->network;\n$metadata = $ctx->metadata;\n\n$uri = sprintf(\"/geojson/station_neighbors.py?station=%s&network=%s\", $station, $network);\n\n$resp = file_get_contents(\"{$INTERNAL_BASEURL}{$uri}\");\nif ($resp === FALSE) {\n    die(\"Failed to fetch data\");\n}\n$jobj = json_decode($resp, $assoc=TRUE);\n\n$table = <<<EOM\n<table class=\"table table-striped\">\n<thead class=\"sticky\">\n<tr><th>Distance [km]</th><th>ID</th><th>Network</th><th>Station Name</th>\n<th>Archive Start</th><th>Archive End</th></tr></thead>\n<tbody>\nEOM;\nforeach ($jobj[\"features\"] as $feature){\n    $props = $feature[\"properties\"];\n    $table .= sprintf(\n        \"<tr><td>%.2f</td><td><a href=\\\"/sites/site.php?network=%s&station=%s\\\">%s</a></td>\".\n        \"<td><a href=\\\"locate.php?network=%s\\\">%s</a></td><td>%s</td><td>%s</td><td>%s</td></tr>\",\n        $props[\"distance_km\"],\n        $props[\"network\"],\n        $props[\"sid\"],\n        $props[\"sid\"],\n        $props[\"network\"],\n        $props[\"network\"],\n        $props[\"sname\"],\n        $props[\"archive_begin\"],\n        $props[\"archive_end\"]\n    );\n\n}\n\n$table .= \"</tbody></table>\";\n\n$t = new MyView();\n$t->iemselect2 = true;\n$t->title = \"Site Neighbors\";\n$t->sites_current = \"neighbors\";\n\n$t->content = <<<EOM\n<h3>Neighboring Stations</h3>\n<p>The following is a list of IEM tracked stations within roughly a 0.25 degree\nradius circle from the station location. Click on the site identifier\nfor more information. This <a href=\"/geojson/station_neighbors.py?help\">GeoJSON webservice</a> provided\nthe data for this page. </p>\n\n{$table}\nEOM;\n$t->render('sites.phtml');\n"
  },
  {
    "path": "htdocs/sites/networks.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 6);\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/vendor/mapscript.php\";\n\n$pgconn = iemdb(\"mesosite\");\n\n$network = get_str404('network', 'IA_ASOS');\n\n$extra_networks = array(\n    \"_ALL_\" => \"All Networks\",\n    \"HAS_HML\" => \"Stations with HML Data\",\n);\n\nfunction attrs2str($arr)\n{\n    $s = \"\";\n    if (is_array($arr)) {\n        foreach ($arr as $key => $value) {\n            if ($key != \"\"){  // Good grief PHP\n                $s .= sprintf(\"%s=%s<br />\", $key, $value);\n            }\n        }\n    }\n    return $s;\n}\nfunction pretty_date($val, $fmt = \"M d, Y\")\n{\n    if (is_null($val)) {\n        return \"\";\n    }\n    if (is_string($val)) {\n        $val = new DateTime($val);\n    }\n    return $val->format($fmt);\n}\n\nif ($network == '_ALL_') {\n    // Too much memory at the moment\n    $rs = pg_query(\n        $pgconn,\n        \"SELECT id, name, elevation, archive_begin, archive_end, network, \" .\n            \"ST_x(geom) as lon, ST_y(geom) as lat, null as attributes, state, \" .\n            \"synop, country from stations WHERE online = 't' and \".\n            \"network !~* '_COCORAHS' ORDER by name\"\n    );\n    $cities = array();\n    while ($row = pg_fetch_assoc($rs)) {\n        $cities[$row[\"id\"]] = $row;\n    }\n} else if (get_str404(\"special\", null) == 'allasos') {\n    $rs = pg_query(\n        $pgconn,\n        \"SELECT id, name, elevation, archive_begin, archive_end, network, \" .\n            \"ST_x(geom) as lon, ST_y(geom) as lat, null as attributes, state, \" .\n            \"synop, country from stations WHERE online and \" .\n            \"network ~* 'ASOS' ORDER by name\"\n    );\n    $cities = array();\n    while ($row = pg_fetch_assoc($rs)) {\n        $cities[$row[\"id\"]] = $row;\n    }\n} else if (get_str404(\"special\", null) == 'alldcp') {\n    $rs = pg_query(\n        $pgconn,\n        \"SELECT id, name, elevation, archive_begin, archive_end, network, \" .\n            \"ST_x(geom) as lon, ST_y(geom) as lat, null as attributes, state, \" .\n            \"synop, country from stations WHERE online and \" .\n            \"network ~* 'DCP' ORDER by name\"\n    );\n    $cities = array();\n    while ($row = pg_fetch_assoc($rs)) {\n        $cities[$row[\"id\"]] = $row;\n    }\n} else {\n    $resp = file_get_contents(\n        \"{$INTERNAL_BASEURL}/geojson/network/{$network}.geojson\");\n    if ($resp === FALSE) {\n        $cities = array();\n    } else {\n        $jobj = json_decode($resp, $assoc = TRUE);\n        $cities = array();\n        foreach ($jobj[\"features\"] as $k => $v) {\n            $props = $v[\"properties\"];\n            $cities[$props[\"sid\"]] = Array(\n                \"id\" => $props[\"sid\"],\n                \"name\" => $props[\"sname\"],\n                \"elevation\" => $props[\"elevation\"],\n                \"archive_begin\" => $props[\"archive_begin\"],\n                \"archive_end\" => $props[\"archive_end\"],\n                \"network\" => $props[\"network\"],\n                \"lon\" => $v[\"geometry\"][\"coordinates\"][0],\n                \"lat\" => $v[\"geometry\"][\"coordinates\"][1],\n                \"attributes\" => $props[\"attributes\"],\n                \"state\" => $props[\"state\"],\n                \"synop\" => $props[\"synop\"],\n                \"country\" => $props[\"country\"],\n                \"attributes\" => $props[\"attributes\"],\n            );\n        }\n    }\n}\n\n$format = get_str404('format', 'html');\n$nohtml = array_key_exists('nohtml', $_GET);\n\n$table = \"\";\nif (strlen($network) > 0) {\n    if ($format == \"html\") {\n        $table .= \"<div class=\\\"table-responsive\\\"><table class=\\\"table table-striped\\\">\\n\";\n        $table .= \"<caption><strong>\" . $network . \" Network</strong></caption>\\n\";\n        $table .= <<<EOM\n<thead class=\"table-dark sticky-top\">\n<tr>\n<th>ID</th><th>Station Name</th><th>Latitude<sup>1</sup></th>\n<th>Longitude<sup>1</sup></th><th>Elevation [m]</th>\n<th>Archive Begins</th><th>Archive Ends</th><th>IEM Network</th>\n<th>Attributes</th>\n</tr>\n</thead>\nEOM;\n        foreach ($cities as $sid => $row) {\n            $table .= \"<tr>\\n\n              <td><a href=\\\"site.php?station={$sid}&amp;network=\" . $row[\"network\"] . \"\\\">{$sid}</a></td>\n              <td>\" . $row[\"name\"] . \"</td>\n              <td>\" . round($row[\"lat\"], 5) . \"</td>\n              <td>\" . round($row[\"lon\"], 5) . \"</td>\n              <td>\" . $row[\"elevation\"] . \"</td>\n              <td>\" . pretty_date($row[\"archive_begin\"]) . \"</td>\n              <td>\" . pretty_date($row[\"archive_end\"]) . \"</td>\n              <td><a href=\\\"locate.php?network=\" . $row[\"network\"] . \"\\\">\" . $row[\"network\"] . \"</a></td>\n              <td>\" . attrs2str($row[\"attributes\"]) . \"</td>\n              </tr>\";\n        }\n        $table .= \"</table></div>\\n\";\n    } else if ($format == \"csv\") {\n        if (!$nohtml) $table .= \"<p><b>\" . $network . \" Network</b></p>\\n\";\n        if (!$nohtml) $table .= \"<pre>\\n\";\n        $table .= \"stid,station_name,lat,lon,elev,begints,endts,iem_network\\n\";\n        foreach ($cities as $sid => $row) {\n            $table .= $sid . \",\"\n                . $row[\"name\"] . \",\"\n                . round($row[\"lat\"], 5) . \",\"\n                . round($row[\"lon\"], 5) . \",\"\n                . $row[\"elevation\"] . \",\"\n                . pretty_date($row[\"archive_begin\"], 'Y-m-d H:i') . \",\"\n                . pretty_date($row[\"archive_end\"], 'Y-m-d H:i') . \",\"\n                . $row[\"network\"] . \"\\n\";\n        }\n        if (!$nohtml)  $table .= \"</pre>\\n\";\n    } else if ($format == \"shapefile\") {\n\n        /* Create SHP,DBF bases */\n        $filePre = \"{$network}_locs\";\n        $sufixes = Array(\"shp\", \"shx\", \"dbf\", \"zip\");\n        if (!is_file(\"/var/webtmp/{$filePre}.zip\")) {\n            $shpFname = \"/var/webtmp/$filePre\";\n            foreach($sufixes as $key => $suff){\n                $fn = \"{$shpFname}.{$suff}\";\n                if (is_file($fn)) unlink($fn);\n            }\n            $shpFile = new shapeFileObj($shpFname, mapscript::MS_SHAPEFILE_POINT);\n            $dbfFile = dbase_create($shpFname . \".dbf\", array(\n                array(\"ID\", \"C\", 6),\n                array(\"NAME\", \"C\", 50),\n                array(\"NETWORK\", \"C\", 20),\n                array(\"BEGINTS\", \"C\", 16),\n            ));\n\n            foreach ($cities as $sid => $row) {\n                $pt = new pointObj();\n                $pt->setXY($row[\"lon\"], $row[\"lat\"], 0);\n                $shpFile->addPoint($pt);\n\n                dbase_add_record($dbfFile, array(\n                    $row[\"id\"],\n                    $row[\"name\"],\n                    $row[\"network\"],\n                    pretty_date($row[\"archive_begin\"], \"Y-m-d\"),\n                ));\n            }\n            unset($shpFile);\n            dbase_close($dbfFile);\n            chdir(\"/var/webtmp/\");\n            copy(\"/opt/iem/data/gis/meta/4326.prj\", $filePre . \".prj\");\n            popen(\"zip {$filePre}.zip {$filePre}.shp {$filePre}.shx {$filePre}.dbf {$filePre}.prj\", 'r');\n        }\n        $table .= <<<EOM\n<div class=\"alert alert-info\">\nShapefile Generation Complete.<br>\nPlease download this <a href=\"/tmp/{$filePre}.zip\">zipfile</a>.\n</div>\nEOM;\n        chdir(\"/opt/iem/htdocs/sites/\");\n    } else if ($format == \"awips\") {\n        if (!$nohtml) $table .= \"<pre>\\n\";\n        foreach ($cities as $sid => $row) {\n            $table .= sprintf(\"%s|%s|%-30s|%4.1f|%2.5f|%3.5f|GMT|||1||||\\n\", $row[\"id\"], $row[\"id\"], $row[\"name\"], $row[\"elevation\"], $row[\"lat\"], $row[\"lon\"]);\n        } // End of for\n        if (!$nohtml) $table .= \"</pre>\\n\";\n    } else if ($format == \"madis\") {\n        if (!$nohtml) $table .= \"<pre>\\n\";\n\n        foreach ($cities as $sid => $row) {\n            if (substr($row[\"network\"], 0, 4) == \"KCCI\") $row[\"network\"] = \"KCCI-TV\";\n            if (substr($row[\"network\"], 0, 4) == \"KELO\") $row[\"network\"] = \"KELO-TV\";\n            if (substr($row[\"network\"], 0, 4) == \"KIMT\") $row[\"network\"] = \"KIMT-TV\";\n            $table .= sprintf(\"%s|%s|%-39s%-11s|%4.1f|%2.5f|%3.5f|GMT|||1||||\\n\", $row[\"id\"], $row[\"id\"], $row[\"name\"], $row[\"network\"], $row[\"elevation\"], $row[\"lat\"], $row[\"lon\"]);\n        } // End of for\n        if (!$nohtml) $table .= \"</pre>\\n\";\n    } else if ($format == \"gempak\") {\n        if (!$nohtml) $table .= \"<pre>\\n\";\n        foreach ($cities as $sid => $row) {\n            $table .= str_pad($row[\"id\"], 9)\n                .  str_pad(is_null($row[\"synop\"]) ? \"\": $row[\"synop\"], 7)\n                .  str_pad($row[\"name\"], 33)\n                .  str_pad(is_null($row[\"state\"]) ? \"\": $row[\"state\"], 3)\n                .  str_pad(is_null($row[\"country\"]) ? \"\": $row[\"country\"], 2)\n                .  sprintf(\"%6.0f\", $row[\"lat\"] * 100)\n                .  sprintf(\"%7.0f\", $row[\"lon\"] * 100)\n                .  sprintf(\"%6.0f\", $row[\"elevation\"])\n                . \"\\n\";\n        }\n        if (!$nohtml) $table .= \"</pre>\\n\";\n    }\n}\n\n\nif (!$nohtml || $format == 'shapefile') {\n    $t = new MyView();\n    $t->iemselect2 = true;\n    $t->title = \"Network Station Tables\";\n    $page = 'full.phtml';\n    $sextra = \"\";\n    if (array_key_exists('station', $_REQUEST)) {\n        $t->sites_current = \"tables\";\n        require_once \"../../include/sites.php\";\n        $ctx = get_sites_context();\n        $station = $ctx->station;\n        $network = $ctx->network;\n        $metadata = $ctx->metadata;\n\n        $page = 'sites.phtml';\n        $sextra = sprintf(\n            \"<input type=\\\"hidden\\\" value=\\\"%s\\\" name=\\\"station\\\">\",\n            xssafe($_REQUEST[\"station\"])\n        );\n    }\n\n    $ar = array(\n        \"html\" => \"HTML Table\",\n        \"csv\" => \"Comma Delimited\",\n        \"shapefile\" => \"ESRI Shapefile\",\n        \"gempak\" => \"GEMPAK Station Table\",\n        \"awips\" => \"AWIPS Station Table\",\n        \"madis\" => \"MADIS Station Table\"\n    );\n    $fselect = make_select(\"format\", $format, $ar);\n    $nselect = selectNetwork($network, $extra_networks);\n    $t->content = <<<EOM\n<div class=\"card mb-4\">\n<div class=\"card-header\">\n<h3 class=\"mb-0\">Network Location Tables</h3>\n</div>\n<div class=\"card-body\">\n\n<div class=\"card float-end\" style=\"width: 300px;\">\n<div class=\"card-body\">\n<a href=\"new-rss.php\"><img src=\"/images/rss.gif\" style=\"border: 0px;\" alt=\"RSS\" /></a> Feed of newly\nadded stations.\n\n<div class=\"mt-3\">\n<strong>Special Table Requests</strong>\n<ul class=\"list-unstyled mt-2\">\n <li><a href=\"networks.php?special=allasos&format=gempak&nohtml\">Global METAR in GEMPAK Format</a></li>\n <li><a href=\"networks.php?special=allasos&format=csv&nohtml\">Global METAR in CSV Format</a></li>\n <li><a href=\"/geojson/network/AZOS.geojson\">Global METAR/ASOS in GeoJSON</a></li>\n <li><a href=\"networks.php?special=alldcp&format=csv&nohtml\">All DCPs in CSV Format</a></li>\n <li><a href=\"networks.php?network=HAS_HML\">Sites with HML Coverage</a></li>\n</ul>\n</div>\n</div>\n</div>\n\n\n<p>With this form, you can generate a station table for any\nof the networks listed below.  If there is a particular format for a station\ntable that you need, please <a href=\"/info/contacts.php\">let us know</a>.</p>\n\n<form method=\"GET\" action=\"networks.php\" name=\"networkSelect\">\n{$sextra}\n\n<div class=\"row mb-3\">\n<div class=\"col-md-6\">\n<label for=\"network\" class=\"form-label\"><strong>Select Observing Network:</strong></label>\n{$nselect}\n</div>\n<div class=\"col-md-6\">\n<label for=\"format\" class=\"form-label\"><strong>Select Format:</strong></label>\n{$fselect}\n</div>\n</div>\n\n<div class=\"form-check mb-3\">\n<input class=\"form-check-input\" type=\"checkbox\" name=\"nohtml\" id=\"nohtml\">\n<label class=\"form-check-label\" for=\"nohtml\">Just Table, no HTML</label>\n</div>\n\n<div class=\"mb-3\">\n<input type=\"submit\" value=\"Create Table\" class=\"btn btn-primary\">\n</div>\n\n</form>\n</div>\n</div>\n\n{$table}\n<div class=\"card\">\n<div class=\"card-header\">\n<h3 class=\"mb-0\">Notes</h3>\n</div>\n<div class=\"card-body\">\n<ol>\n<li>Latitude and Longitude values are in decimal degrees.</li>\n<li>Elevation is expressed in meters above sea level.</li>\n</ol>\n</div>\n</div>\nEOM;\n    $t->render($page);\n} else {\n    header(\"Content-type: text/plain\");\n    echo $table;\n}\n"
  },
  {
    "path": "htdocs/sites/new-rss.php",
    "content": "<?php\n/*\n * RSS Feed of new IEM added station tables\n */\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 37);\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/memcache.php\";\n\n\n$cached_rss = cacheable(\"newstations_rss\", 3600)(function () {\n\n    global $EXTERNAL_BASEURL;\n    // Get the actual request URL for self-link\n    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? \"https://\" : \"http://\";\n    $self_url = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];\n\n    $conn = iemdb(\"mesosite\");\n    $rs = pg_query(\n        $conn,\n        \"SELECT s.*, ST_x(geom) as lon, ST_y(geom) as lat, t.name as netname \" .\n            \"from stations s JOIN networks t ON (t.id = s.network) \" .\n            \"WHERE s.elevation > -990 ORDER by iemid DESC LIMIT 50\"\n    );\n\n    $s = \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\\n\";\n    $s .= \"<feed xmlns=\\\"http://www.w3.org/2005/Atom\\\" xmlns:georss=\\\"http://www.georss.org/georss\\\">\\n\";\n    $s .= \"<title>Iowa Environmental Mesonet - New Stations</title>\\n\";\n    $s .= \"<subtitle>Recently added weather stations to the IEM network collection</subtitle>\\n\";\n    $s .= \"<link rel=\\\"alternate\\\" type=\\\"text/html\\\" href=\\\"{$EXTERNAL_BASEURL}/sites/locate.php\\\" />\\n\";\n    $s .= \"<link rel=\\\"self\\\" type=\\\"application/atom+xml\\\" href=\\\"\" . htmlspecialchars($self_url, ENT_XML1, 'UTF-8') . \"\\\" />\\n\";\n    $s .= \"<updated>\" . gmdate('Y-m-d\\\\TH:i:s\\\\Z') . \"</updated>\\n\";\n    $s .= \"<id>{$EXTERNAL_BASEURL}/sites/new-rss.php</id>\\n\";\n    $s .= \"<author><name>daryl herzmann</name><email>akrherz@iastate.edu</email></author>\\n\";\n\n    while ($row = pg_fetch_assoc($rs)) {\n        $station_id = htmlspecialchars($row[\"id\"], ENT_XML1, 'UTF-8');\n        $station_name = htmlspecialchars($row[\"name\"], ENT_XML1, 'UTF-8');\n        $network = htmlspecialchars($row[\"network\"], ENT_XML1, 'UTF-8');\n        $netname = htmlspecialchars($row[\"netname\"], ENT_XML1, 'UTF-8');\n        $lat = htmlspecialchars($row[\"lat\"], ENT_XML1, 'UTF-8');\n        $lon = htmlspecialchars($row[\"lon\"], ENT_XML1, 'UTF-8');\n        $elevation = htmlspecialchars($row[\"elevation\"], ENT_XML1, 'UTF-8');\n\n        $link = \"{$EXTERNAL_BASEURL}/sites/site.php?station={$station_id}&amp;network={$network}\";\n\n        // Build HTML content (properly escaped)\n        $cbody = \"&lt;dl&gt;\";\n        $cbody .= \"&lt;dt&gt;Station ID&lt;/dt&gt;&lt;dd&gt;{$station_id}&lt;/dd&gt;\";\n        $cbody .= \"&lt;dt&gt;Name&lt;/dt&gt;&lt;dd&gt;{$station_name}&lt;/dd&gt;\";\n        $cbody .= \"&lt;dt&gt;Latitude&lt;/dt&gt;&lt;dd&gt;{$lat}&lt;/dd&gt;\";\n        $cbody .= \"&lt;dt&gt;Longitude&lt;/dt&gt;&lt;dd&gt;{$lon}&lt;/dd&gt;\";\n        $cbody .= \"&lt;dt&gt;Elevation&lt;/dt&gt;&lt;dd&gt;{$elevation} m&lt;/dd&gt;\";\n        $cbody .= \"&lt;dt&gt;Network&lt;/dt&gt;&lt;dd&gt;{$netname} ({$network})&lt;/dd&gt;\";\n        $cbody .= \"&lt;/dl&gt;\";\n\n        $modified_time = strtotime($row[\"modified\"]);\n        $updated = gmdate('Y-m-d\\\\TH:i:s', $modified_time) . 'Z';\n\n        $s .= \"<entry>\\n\";\n        $s .= \"<title>{$station_name} [{$station_id}]</title>\\n\";\n        $s .= \"<link rel=\\\"alternate\\\" type=\\\"text/html\\\" href=\\\"{$link}\\\" />\\n\";\n        $s .= \"<id>{$link}</id>\\n\";\n        $s .= \"<published>{$updated}</published>\\n\";\n        $s .= \"<updated>{$updated}</updated>\\n\";\n        $s .= \"<content type=\\\"html\\\">{$cbody}</content>\\n\";\n        $s .= \"<georss:point>{$lat} {$lon}</georss:point>\\n\";\n        $s .= \"</entry>\\n\";\n    }\n    $s .= \"</feed>\\n\";\n    return $s;\n});\n\nheader(\"Content-type: text/xml\");\necho $cached_rss();\n"
  },
  {
    "path": "htdocs/sites/obhistory.css",
    "content": "/* Observation History Application Styles */\n\n/* Temperature value styling */\n.high {\n    color: #F00;\n}\n\n.low {\n    color: #00F;\n}\n\n/* Show/hide functionality for METAR and MADIS data */\n.metar {\n    display: none;\n}\n\n.metar td {\n    text-align: left !important;\n}\n\n.hfob {\n    display: none;\n}\n\n.hfmetar {\n    display: none;\n}\n\n.hfmetar td {\n    text-align: left !important;\n}\n\n/* Table styling improvements */\n.table th {\n    text-align: center;\n    vertical-align: middle;\n}\n\n.table td {\n    text-align: center;\n    vertical-align: middle;\n}\n\n/* Sticky header for better usability */\n.sticky {\n    position: sticky;\n    top: 0;\n    z-index: 1020; /* Higher than Bootstrap's default z-index values */\n}\n\n/* Ensure sticky works with Bootstrap table-dark and override inline styles */\n.table thead.sticky {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n}\n\n.table thead.sticky th {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n    background-color: #343a40 !important; /* Override inline bgcolor */\n    color: white !important;\n}\n\n/* Override old HTML bgcolor attributes in headers */\n.table thead tr[bgcolor] {\n    background-color: #343a40 !important;\n}\n\n.table thead th[bgcolor] {\n    background-color: #343a40 !important;\n    color: white !important;\n}\n\n/* Table container for horizontal scroll without breaking sticky headers */\n.table-container {\n    width: 100%;\n    /* Remove overflow-x to ensure sticky headers work */\n    position: relative;\n}\n\n/* Add overflow only on mobile if needed */\n@media (max-width: 1200px) {\n    .table-container {\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n    }\n    \n    /* Disable sticky on mobile due to overflow conflict */\n    .table-container .sticky {\n        position: relative;\n    }\n    \n    .table-container .sticky th {\n        position: relative;\n    }\n}\n\n/* Ensure table takes full width */\n.table-container .table {\n    margin-bottom: 0;\n    min-width: 100%;\n}\n\n/* Table row background colors - will be overridden by inline styles for now */\n.table-striped tbody tr:nth-of-type(odd) {\n    background-color: #FFF;\n}\n\n.table-striped tbody tr:nth-of-type(even) {\n    background-color: #EEE;\n}\n\n/* Mobile responsiveness - basic improvements */\n@media (max-width: 768px) {\n    .table-container {\n        font-size: 0.875rem;\n    }\n    \n    .table th,\n    .table td {\n        padding: 0.375rem 0.25rem;\n        white-space: nowrap;\n    }\n    \n    /* Make buttons stack vertically on mobile */\n    .btn-group-navigation,\n    .btn-group-controls {\n        flex-direction: column;\n    }\n    \n    .btn-group-navigation .btn,\n    .btn-group-controls .btn {\n        margin-bottom: 0.5rem;\n        width: 100%;\n    }\n    \n    /* Improve form layout on mobile */\n    #theform .row {\n        --bs-gutter-x: 0.5rem;\n    }\n    \n    #theform .col-auto {\n        margin-bottom: 0.5rem;\n    }\n}\n\n/* Form styling improvements */\n#theform {\n    margin-bottom: 1rem;\n    padding: 1rem;\n    background-color: #f8f9fa;\n    border-radius: 0.375rem;\n    border: 1px solid #dee2e6;\n}\n\n#theform strong {\n    margin-right: 0.5rem;\n}\n\n#theform select,\n#theform input[type=\"submit\"] {\n    margin-right: 0.5rem;\n    margin-bottom: 0.5rem;\n}\n\n/* Button spacing improvements */\n.btn-group-navigation {\n    display: flex;\n    gap: 0.5rem;\n    margin-bottom: 1rem;\n    flex-wrap: wrap;\n}\n\n.btn-group-controls {\n    display: flex;\n    gap: 0.5rem;\n    margin-bottom: 1rem;\n    flex-wrap: wrap;\n}\n\n/* Data notes styling */\n.data-notes {\n    margin-top: 2rem;\n    padding: 1rem;\n    background-color: #f8f9fa;\n    border-radius: 0.375rem;\n}\n\n.api-link {\n    margin-top: 1rem;\n    padding: 0.5rem;\n    background-color: #e9ecef;\n    border-radius: 0.375rem;\n    font-size: 0.875rem;\n}\n\n"
  },
  {
    "path": "htdocs/sites/obhistory.module.js",
    "content": "import { requireElement } from '/js/iemjs/domUtils.js';\nlet station = null;\nlet network = null;\nlet metar_show = false;\nlet madis_show = false;\n\nfunction buildUrl(dateStr) {\n    // Centralized URL building logic\n    const sortDirElement = document.querySelector('select[name=\"sortdir\"]');\n    const windUnitsElement = document.querySelector('select[name=\"windunits\"]');\n    const sortDir = sortDirElement ? sortDirElement.value : \"asc\";\n    const windUnits = windUnitsElement ? windUnitsElement.value : \"mph\";\n\n    // Use URLSearchParams to properly encode parameters\n    const params = new URLSearchParams({\n        station,\n        network,\n        date: dateStr,\n        sortdir: sortDir,\n        windunits: windUnits\n    });\n\n    if (metar_show) {\n        params.set(\"metar\", \"1\");\n    }\n    if (madis_show) {\n        params.set(\"madis\", \"1\");\n    }\n\n    return `${window.location.origin}${window.location.pathname}?${params.toString()}`;\n}\n\nfunction updateURI() {\n    // Update browser URL without reload\n    const datePicker = requireElement(\"date_picker\");\n    const url = buildUrl(datePicker.value);\n    window.history.pushState({}, \"\", url);\n}\n\nfunction handleDatePickerChange(event) {\n    // Only submit when user finishes interaction (blur or calendar selection)\n    // The change event fires on every keystroke when typing, which is annoying\n    const datePicker = event.target;\n\n    // If change happened due to calendar picker (not manual typing),\n    // the input will be blurred shortly after\n    if (datePicker.value && datePicker.validity.valid) {\n        // Check if we're still focused (typing) or not (picker/blur)\n        if (document.activeElement !== datePicker) {\n            // User clicked calendar or tabbed away - submit\n            document.getElementById(\"theform\").submit();\n        }\n        // If still focused, wait for blur event to submit\n    }\n}\n\nfunction handleDatePickerBlur(event) {\n    // Submit when user leaves the field with a valid date\n    const datePicker = event.target;\n    if (datePicker.value && datePicker.validity.valid) {\n        document.getElementById(\"theform\").submit();\n    }\n}\n\nfunction handleDatePickerKeydown(event) {\n    // Submit on Enter key only\n    if (event.key === 'Enter') {\n        event.preventDefault();\n        const datePicker = event.target;\n        if (datePicker.value && datePicker.validity.valid) {\n            document.getElementById(\"theform\").submit();\n        }\n    }\n}\n\nfunction handlePrevButtonClick() {\n    const prevButton = document.getElementById(\"prevbutton\");\n    const targetDate = prevButton.dataset.date;\n    if (targetDate) {\n        navigateToDate(targetDate);\n    }\n}\n\nfunction handleNextButtonClick() {\n    const nextButton = document.getElementById(\"nextbutton\");\n    const targetDate = nextButton.dataset.date;\n    if (targetDate && !nextButton.disabled) {\n        navigateToDate(targetDate);\n    }\n}\n\nfunction navigateToDate(dateStr) {\n    // Navigate to the new URL using centralized URL builder\n    window.location.href = buildUrl(dateStr);\n}\n\nfunction showMETAR() {\n    document.querySelectorAll(\".metar\").forEach(element => {\n        element.style.display = \"table-row\";\n    });\n    if (madis_show) {\n        document.querySelectorAll(\".hfmetar\").forEach(element => {\n            element.style.display = \"table-row\";\n        });\n    }\n    const toggle = document.getElementById(\"metar_toggle\");\n    toggle.textContent = \"\";\n    const icon = document.createElement(\"i\");\n    icon.className = \"bi bi-dash-lg\";\n    icon.setAttribute(\"aria-hidden\", \"true\");\n    toggle.appendChild(icon);\n    toggle.appendChild(document.createTextNode(\" Hide METARs\"));\n}\n\nfunction toggleMETAR() {\n    if (metar_show) {\n        // Hide both METARs and HFMETARs\n        document.querySelectorAll(\".metar\").forEach(element => {\n            element.style.display = \"none\";\n        });\n        document.querySelectorAll(\".hfmetar\").forEach(element => {\n            element.style.display = \"none\";\n        });\n        const toggle = document.getElementById(\"metar_toggle\");\n        toggle.textContent = \"\";\n        const icon = document.createElement(\"i\");\n        icon.className = \"bi bi-plus-lg\";\n        icon.setAttribute(\"aria-hidden\", \"true\");\n        toggle.appendChild(icon);\n        toggle.appendChild(document.createTextNode(\" Show METARs\"));\n        document.getElementById(\"hmetar\").value = \"0\";\n    } else {\n        // show\n        showMETAR();\n        document.getElementById(\"hmetar\").value = \"1\";\n    }\n    metar_show = !metar_show;\n    updateURI();\n}\n\nfunction showMADIS() {\n    document.querySelectorAll(\"tr[data-madis='1']\").forEach(element => {\n        element.style.display = \"table-row\";\n    });\n    if (metar_show) {\n        document.querySelectorAll(\".hfmetar\").forEach(element => {\n            element.style.display = \"table-row\";\n        });\n    }\n    const toggle = document.getElementById(\"madis_toggle\");\n    toggle.textContent = \"\";\n    const icon = document.createElement(\"i\");\n    icon.className = \"bi bi-dash-lg\";\n    icon.setAttribute(\"aria-hidden\", \"true\");\n    toggle.appendChild(icon);\n    toggle.appendChild(document.createTextNode(\" Hide High Frequency MADIS\"));\n}\n\nfunction toggleMADIS() {\n    if (madis_show) {\n        // Hide MADIS\n        document.querySelectorAll(\"tr[data-madis='1']\").forEach(element => {\n            element.style.display = \"none\";\n        });\n        document.querySelectorAll(\".hfmetar\").forEach(element => {\n            element.style.display = \"none\";\n        });\n        const toggle = document.getElementById(\"madis_toggle\");\n        toggle.textContent = \"\";\n        const icon = document.createElement(\"i\");\n        icon.className = \"bi bi-plus-lg\";\n        icon.setAttribute(\"aria-hidden\", \"true\");\n        toggle.appendChild(icon);\n        toggle.appendChild(document.createTextNode(\" Show High Frequency MADIS\"));\n        document.getElementById(\"hmadis\").value = \"0\";\n    } else {\n        // Show\n        showMADIS();\n        document.getElementById(\"hmadis\").value = \"1\";\n    }\n    madis_show = !madis_show;\n    updateURI();\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    // Get form values\n    const hiddenStation = document.querySelector('input[name=\"station\"]');\n    const hiddenNetwork = document.querySelector('input[name=\"network\"]');\n\n    station = hiddenStation.value;\n    network = hiddenNetwork.value;\n    metar_show = document.getElementById(\"hmetar\").value === \"1\";\n    madis_show = document.getElementById(\"hmadis\").value === \"1\";\n\n    // Set up event listeners\n    const metar_toggle = document.getElementById(\"metar_toggle\");\n    if (metar_toggle) {\n        metar_toggle.addEventListener('click', toggleMETAR);\n    }\n    const madis_toggle = document.getElementById(\"madis_toggle\");\n    if (madis_toggle) {\n        madis_toggle.addEventListener('click', toggleMADIS);\n    }\n    const datePicker = requireElement(\"date_picker\");\n    datePicker.addEventListener('change', handleDatePickerChange);\n    datePicker.addEventListener('blur', handleDatePickerBlur);\n    datePicker.addEventListener('keydown', handleDatePickerKeydown);\n    requireElement(\"prevbutton\").addEventListener('click', handlePrevButtonClick);\n    requireElement(\"nextbutton\").addEventListener('click', handleNextButtonClick);\n\n    // Initial state for METAR/MADIS display\n    if (metar_show) {\n        showMETAR();\n    }\n    if (madis_show) {\n        showMADIS();\n    }\n});\n"
  },
  {
    "path": "htdocs/sites/obhistory.php",
    "content": "<?php\n// This app apparently is an AI bot playground, so this setting causes the\n// downstream throttle to be more aggressive\ndefine(\"THROTTLE_APP\", \"sites/obhistory\");\ndefine(\"THROTTLE_LIMIT\", 16);\n// sites calls throttle\nrequire_once \"../../include/sites.php\";\nrequire_once \"../../include/mlib.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/myview.php\";\n\n$ctx = get_sites_context();\n$station = $ctx->station;\n$network = $ctx->network;\n$metadata = $ctx->metadata;\n\n/*\n * Rip off weather bureau website, but do it better\n */\nfunction wind_formatter($row, $units = \"mph\")\n{\n    if (is_null($row[\"drct\"]) && is_null($row[\"sknt\"])) {\n        return \"M\";\n    }\n\n    // Convert knots to appropriate units\n    $multiplier = ($units == \"mph\") ? 1.15 : 1.0; // knots to mph conversion factor\n\n    if (is_null($row[\"drct\"]) && ($row[\"sknt\"] > 0) && ($row[\"sknt\"] < 10)) {\n        return sprintf(\"VRB %.0f\", $row[\"sknt\"] * $multiplier);\n    }\n    if (($row[\"drct\"] == 0) && ($row[\"sknt\"] == 0)) {\n        return \"Calm\";\n    }\n    if (is_null($row[\"drct\"])) {\n        return \"M\";\n    }\n    $gust_text = \"\";\n    if ($row[\"gust\"] > 0) {\n        $gust_text = sprintf(\"G%.0f\", $row[\"gust\"] * $multiplier);\n    }\n    $peak_text = \"\";\n    if (!is_null($row[\"peak_wind_gust\"]) &&\n        !is_null($row[\"peak_wind_drct\"]) &&\n        !is_null($row[\"peak_wind_time\"])) {\n        $peakdt = new DateTime($row[\"peak_wind_time\"],\n            new DateTimeZone(\"UTC\"));\n        global $metadata;\n        $peaktime = $peakdt->setTimezone(new DateTimeZone($metadata[\"tzname\"]))\n            ->format(\"g:i A\");\n        $peak_text = sprintf(\n            \"<br />PK %s %.0f @ %s\",\n            drct2txt($row[\"peak_wind_drct\"]),\n            $row[\"peak_wind_gust\"] * $multiplier,\n            $peaktime,\n        );\n    }\n    return sprintf(\n        \"%s %.0f%s%s\",\n        drct2txt($row[\"drct\"]),\n        $row[\"sknt\"] * $multiplier,\n        $gust_text,\n        $peak_text,\n    );\n}\nfunction indy_sky_formatter($skyc, $skyl)\n{\n    if (intval($skyl) > 0) {\n        $skyl = sprintf(\"%03d\", $skyl / 100);\n    } else {\n        $skyl = \"\";\n    }\n    if (is_null($skyc) || trim($skyc) == \"\") return \"\";\n    return sprintf(\"%s%s<br />\", $skyc, $skyl);\n}\nfunction sky_formatter($row)\n{\n    return sprintf(\n        \"%s%s%s%s\",\n        indy_sky_formatter($row[\"skyc1\"], $row[\"skyl1\"]),\n        indy_sky_formatter($row[\"skyc2\"], $row[\"skyl2\"]),\n        indy_sky_formatter($row[\"skyc3\"], $row[\"skyl3\"]),\n        indy_sky_formatter($row[\"skyc4\"], $row[\"skyl4\"])\n    );\n}\nfunction temp_formatter($val)\n{\n    if (is_null($val)) return \"\";\n    return sprintf(\"%.0f\", $val);\n}\nfunction vis_formatter($val)\n{\n    if (is_null($val)) return \"\";\n    return round($val, 2);\n}\nfunction precip_formatter($val)\n{\n    if (is_null($val)) return \"\";\n    if ($val == 0.0001) return \"T\";\n    return round($val, 2);\n}\nfunction asos_formatter($i, $row, $windunits = \"mph\")\n{\n    $ts = strtotime(substr($row[\"local_valid\"], 0, 16));\n    $relh = relh(f2c($row[\"tmpf\"]), f2c($row[\"dwpf\"]));\n    $relh = (!is_null($relh)) ? intval($relh) : \"\";\n    $ismadis = is_null($row[\"raw\"]) ? FALSE : (strpos($row[\"raw\"], \"MADISHF\") > 0);\n    return sprintf(\n        \"<tr style=\\\"background: %s;\\\" class=\\\"%sob\\\" data-madis=\\\"%s\\\">\" .\n            \"</div><td>%s</td><td>%s</td><td>%s</td>\n    <td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>\n    <td><span class=\\\"high\\\">%s</span></td>\n    <td><span class=\\\"low\\\">%s</span></td>\n    <td>%s</td>\n    <td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\n    <tr style=\\\"background: %s;\\\" class=\\\"%smetar\\\">\" .\n            \"<td colspan=\\\"17\\\">%s</td></tr>\",\n        ($i % 2 == 0) ? \"#FFF\" : \"#EEE\",\n        $ismadis ? \"hf\" : \"\",\n        $ismadis ? \"1\" : \"0\",\n        date(\"g:i A\", $ts),\n        wind_formatter($row, $windunits),\n        vis_formatter($row[\"vsby\"]),\n        sky_formatter($row),\n        $row[\"wxcodes\"],\n        temp_formatter($row[\"tmpf\"]),\n        temp_formatter($row[\"dwpf\"]),\n        temp_formatter($row[\"feel\"]),\n        temp_formatter($row[\"max_tmpf_6hr\"]),\n        temp_formatter($row[\"min_tmpf_6hr\"]),\n        relh(f2c($row[\"tmpf\"]), f2c($row[\"dwpf\"])),\n        $row[\"alti\"],\n        $row[\"mslp\"],\n        $row[\"snowdepth\"],\n        precip_formatter($row[\"p01i\"]),\n        precip_formatter($row[\"p03i\"]),\n        precip_formatter($row[\"p06i\"]),\n        ($i % 2 == 0) ? \"#FFF\" : \"#EEE\",\n        $ismadis ? \" hf\" : \"\",\n        $row[\"raw\"]\n    );\n}\nfunction pavement_formatter($row, $sensor)\n{\n    $tmp = $row[\"tfs{$sensor}\"];\n    $text = $row[\"tfs{$sensor}_text\"];\n    return sprintf(\n        \"%s %s\",\n        is_null($tmp) ? \"\" : temp_formatter($tmp),\n        is_null($text) ? \"\" : \"($text)\"\n    );\n}\nfunction rwis_formatter($i, $row, $windunits = \"mph\")\n{\n    $ts = strtotime(substr($row[\"local_valid\"], 0, 16));\n    return sprintf(\n        \"<tr style=\\\"background: %s;\\\">\" .\n        \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>\" .\n        \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\",\n        ($i % 2 == 0) ? \"#FFF\" : \"#EEE\",\n        date(\"g:i A\", $ts),\n        wind_formatter($row, $windunits),\n        temp_formatter($row[\"tmpf\"]),\n        temp_formatter($row[\"dwpf\"]),\n        temp_formatter($row[\"feel\"]),\n        temp_formatter($row[\"relh\"]),\n        pavement_formatter($row, 0),\n        pavement_formatter($row, 1),\n        pavement_formatter($row, 2),\n        pavement_formatter($row, 3)\n    );\n}\nfunction formatter($i, $row, $windunits = \"mph\")\n{\n    $ts = strtotime(substr($row[\"local_valid\"], 0, 16));\n    $relh = relh(f2c($row[\"tmpf\"]), f2c($row[\"dwpf\"]));\n    $relh = (!is_null($relh)) ? intval($relh) : \"\";\n    $precip_extra = \"\";\n    if (array_key_exists(\"phour_flag\", $row) && !is_null($row[\"phour_flag\"])) {\n        $precip_extra = sprintf(\n            \" (%s)\",\n            ($row[\"phour_flag\"] == \"E\") ? \"Estimated\" : $row[\"phour_flag\"],\n        );\n    }\n    return sprintf(\n        \"<tr style=\\\"background: %s;\\\">\" .\n            \"<td>%s</td><td>%s</td><td>%s</td>\n    <td>%s</td><td>%s</td><td>%s</td><td>%s%s</td></tr>\",\n        ($i % 2 == 0) ? \"#FFF\" : \"#EEE\",\n        date(\"g:i A\", $ts),\n        wind_formatter($row, $windunits),\n        temp_formatter($row[\"tmpf\"]),\n        temp_formatter($row[\"dwpf\"]),\n        temp_formatter($row[\"feel\"]),\n        relh(f2c($row[\"tmpf\"]), f2c($row[\"dwpf\"])),\n        precip_formatter($row[\"phour\"]),\n        $precip_extra,\n    );\n}\nfunction hads_formatter($i, $row, $shefcols, $windunits = \"mph\")\n{\n    $ts = strtotime(substr($row[\"local_valid\"], 0, 16));\n    $relh = relh(f2c($row[\"tmpf\"]), f2c($row[\"dwpf\"]));\n    $relh = (!is_null($relh)) ? intval($relh) : \"\";\n    $html = \"\";\n    foreach ($shefcols as $bogus => $name) {\n        $html .= sprintf(\"<td>%s</td>\", $row[\"$name\"]);\n    }\n    return sprintf(\n        \"<tr style=\\\"background: %s;\\\">\" .\n            \"<td>%s</td><td>%s</td><td>%s</td>\n    <td>%s</td><td>%s</td><td>%s</td><td>%s</td>%s</tr>\",\n        ($i % 2 == 0) ? \"#FFF\" : \"#EEE\",\n        date(\"g:i A\", $ts),\n        wind_formatter($row, $windunits),\n        temp_formatter($row[\"tmpf\"]),\n        temp_formatter($row[\"dwpf\"]),\n        temp_formatter($row[\"feel\"]),\n        relh(f2c($row[\"tmpf\"]), f2c($row[\"dwpf\"])),\n        precip_formatter($row[\"phour\"]),\n        $html\n    );\n}\nfunction scan_formatter($i, $row, $windunits = \"mph\")\n{\n    $ts = strtotime(substr($row[\"local_valid\"], 0, 16));\n    return sprintf(\n        \"<tr style=\\\"background: %s;\\\">\" .\n            \"<td>%s</td><td>%s</td><td>%s</td>\" .\n            \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>\" .\n            \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>\" .\n            \"<td>%s</td><td>%s</td></tr>\",\n        ($i % 2 == 0) ? \"#FFF\" : \"#EEE\",\n        date(\"g:i A\", $ts),\n        wind_formatter($row, $windunits),\n        temp_formatter($row[\"tmpf\"]),\n        temp_formatter($row[\"dwpf\"]),\n        $row[\"relh\"],\n        $row[\"srad\"],\n        precip_formatter($row[\"phour\"]),\n        $row[\"soilt2\"],\n        $row[\"soilm2\"],\n        $row[\"soilt4\"],\n        $row[\"soilm4\"],\n        $row[\"soilt8\"],\n        $row[\"soilm8\"],\n        $row[\"soilt20\"],\n        $row[\"soilm20\"],\n        $row[\"soilt40\"],\n        $row[\"soilm40\"],\n    );\n}\n// Handle both legacy (year/month/day) and modern (date) URL parameters\n$date_param = get_str404(\"date\", null);\nif (!empty($date_param)) {\n    // Modern date parameter takes precedence\n    $date_parts = explode(\"-\", $date_param);\n    $year = intval($date_parts[0]);\n    $month = intval($date_parts[1]);\n    $day = intval($date_parts[2]);\n} else {\n    // Legacy parameters for backwards compatibility\n    $year = get_int404(\"year\", date(\"Y\"));\n    $month = get_int404(\"month\", date(\"m\"));\n    $day = get_int404(\"day\", date(\"d\"));\n    $date_param = sprintf(\"%04d-%02d-%02d\", $year, $month, $day);\n}\n\n$metar = (get_str404(\"metar\", \"0\") == \"1\") ? \"1\" : \"0\";\n$madis = (get_str404(\"madis\", \"0\") == \"1\") ? \"1\" : \"0\";\n$sortdir = get_str404(\"sortdir\", \"asc\");\n$windunits = get_str404(\"windunits\", \"mph\");\n$date = mktime(0, 0, 0, $month, $day, $year);\n$yesterday = $date - 86400;\n$tomorrow = $date + 86400;\nif ($tomorrow > time()) {\n    $tomorrow = null;\n}\n\n$sortopts = array(\n    \"asc\" => \"Ascending\",\n    \"desc\" => \"Descending\",\n);\n$sortform = make_select(\"sortdir\", $sortdir, $sortopts);\n\n$windunitopts = array(\n    \"mph\" => \"MPH\",\n    \"knots\" => \"Knots\",\n);\n$windunitform = make_select(\"windunits\", $windunits, $windunitopts);\n\nif (!is_null($metadata[\"archive_begin\"])) {\n    $startyear = intval($metadata[\"archive_begin\"]->format(\"Y\"));\n} else {\n    $startyear = 2010;\n}\n\n$t = new MyView();\n$t->iemselect2 = true;\n$t->title = \"Observation History\";\n$t->sites_current = 'obhistory';\n\n$savevars = array(\n    \"year\" => date(\"Y\", $date),\n    \"month\" => date(\"m\", $date),\n    \"day\" => date(\"d\", $date)\n);\n$t->jsextra = '<script type=\"module\" src=\"obhistory.module.js?v=4\"></script>';\n$t->headextra = '<link rel=\"stylesheet\" href=\"obhistory.css\" type=\"text/css\">';\n$dstr = date(\"d F Y\", $date);\n$tzname =  $metadata[\"tzname\"];\n\n// Variables for the new date picker UI\n$today_param = date(\"Y-m-d\");\n$yesterday_param = date(\"Y-m-d\", $yesterday);\n$tomorrow_param = ($tomorrow !== null) ? date(\"Y-m-d\", $tomorrow) : null;\n$next_disabled = ($tomorrow === null) ? 'disabled' : '';\n\n$ys = yearSelect($startyear, date(\"Y\", $date));\n$ms = monthSelect(date(\"m\", $date));\n$ds = daySelect(date(\"d\", $date));\n\n$mbutton = (preg_match(\"/ASOS/\", $network)) ?\n    '<div class=\"btn-group-controls\">' .\n    '<button type=\"button\" class=\"btn btn-success\" id=\"metar_toggle\">' .\n    '<i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i> Show METARs</button>' .\n    '<button type=\"button\" class=\"btn btn-success\" id=\"madis_toggle\">' .\n    '<i class=\"bi bi-plus-lg\" aria-hidden=\"true\"></i> Show High Frequency MADIS</button>' .\n    '</div>'\n    : \"\";\n\n// Legacy navigation buttons are now inline with the date picker\n$buttons = \"\";\n$content = <<<EOM\n<div class=\"container-fluid\">\n    <div class=\"row\">\n        <div class=\"col-12\">\n            <h3>{$dstr} Observation History, [{$station}] {$metadata[\"name\"]}, timezone: {$tzname}</h3>\n\n            <form id=\"theform\" name=\"theform\" method=\"GET\" class=\"mb-3\">\n                <div class=\"row g-2 align-items-end\">\n                    <div class=\"col-auto\">\n                        <label for=\"date_picker\" class=\"form-label mb-1\">Select Date:</label>\n                        <div class=\"input-group\">\n                            <button type=\"button\" id=\"prevbutton\" class=\"btn btn-outline-secondary\"\n                                data-date=\"{$yesterday_param}\" title=\"Previous Day\">\n                                <i class=\"bi bi-arrow-left\" aria-hidden=\"true\"></i>\n                            </button>\n                            <input type=\"date\" id=\"date_picker\" name=\"date\" class=\"form-control\"\n                                value=\"{$date_param}\" min=\"{$startyear}-01-01\" max=\"{$today_param}\">\n                            <button type=\"button\" id=\"nextbutton\" class=\"btn btn-outline-secondary\"\n                                data-date=\"{$tomorrow_param}\" title=\"Next Day\" {$next_disabled}>\n                                <i class=\"bi bi-arrow-right\" aria-hidden=\"true\"></i>\n                            </button>\n                        </div>\n                    </div>\n                    <div class=\"col-auto\">\n                        <label for=\"sortdir\" class=\"form-label mb-1\">Time Order:</label>\n                        {$sortform}\n                    </div>\n                    <div class=\"col-auto\">\n                        <label for=\"windunits\" class=\"form-label mb-1\">Wind Units:</label>\n                        {$windunitform}\n                    </div>\n                    <div class=\"col-auto\">\n                        <input type=\"submit\" value=\"Update\" class=\"btn btn-primary\" />\n                    </div>\n                </div>\n\n                <!-- Hidden parameters -->\n                <input type=\"hidden\" value=\"{$station}\" name=\"station\" />\n                <input type=\"hidden\" value=\"{$network}\" name=\"network\" />\n                <input id=\"hmetar\" type=\"hidden\" value=\"{$metar}\" name=\"metar\" />\n                <input id=\"hmadis\" type=\"hidden\" value=\"{$madis}\" name=\"madis\" />\n            </form>\n\n            {$mbutton}\n        </div>\n    </div>\n</div>\nEOM;\n\n$notes = '';\nif ($network == \"ISUSM\") {\n    $notes .= \"<li>Wind direction and wind speed are 10 minute averages at 10 feet above the ground.</li>\";\n}\n\n// API endpoint\n$errmsg = \"\";\n$arr = array(\n    \"station\" => $station,\n    \"network\" => $network,\n    \"date\" => date(\"Y-m-d\", $date),\n    \"full\" => \"1\",\n);\n$wsuri = sprintf(\"/api/1/obhistory.json?%s\", http_build_query($arr));\n$jobj = iemws_json(\"obhistory.json\", $arr);\nif ($jobj === FALSE) {\n    $jobj = array(\"data\" => array(), \"schema\" => array(\"fields\" => array()));\n    $errmsg = \"Failed to fetch history from web service. No data was found.\";\n}\n\nif (preg_match(\"/ASOS/\", $network)) {\n    $wind_label = ($windunits == \"mph\") ? \"Wind<br>(mph)\" : \"Wind<br>(knots)\";\n    $notes .= <<<EOM\n<li>For recent years, this page also optionally shows observations from the\n<a href=\"https://madis.ncep.noaa.gov/madis_OMO.shtml\">MADIS High Frequency METAR</a>\ndataset.  This dataset had a problem with temperatures detailed <a href=\"/onsite/news.phtml?id=1290\">here</a>.</li>\nEOM;\n    $header = <<<EOM\n    <tr align=\"center\" bgcolor=\"#b0c4de\">\n    <th rowspan=\"3\">Time</th>\n    <th rowspan=\"3\">{$wind_label}</th>\n    <th rowspan=\"3\">Vis.<br>(mi.)</th>\n    <th rowspan=\"3\">Sky Cond.<br />(100s ft)</th>\n    <th rowspan=\"3\">Present Wx</th>\n    <th colspan=\"5\">Temperature (&ordm;F)</th>\n    <th rowspan=\"3\">Relative<br>Humidity</th>\n    <th colspan=\"2\">Pressure</th>\n    <th rowspan=\"3\">Snow<br />Depth<br />(in)</th>\n    <th colspan=\"3\">Precipitation (in.)</th></tr>\n\n    <tr align=\"center\" bgcolor=\"#b0c4de\">\n    <th rowspan=\"2\">Air</th>\n    <th rowspan=\"2\">Dwpt</th>\n    <th rowspan=\"2\">Feels Like</th>\n    <th colspan=\"2\">6 hour</th>\n    <th rowspan=\"2\">altimeter<br>(in.)</th>\n    <th rowspan=\"2\">sea level<br>(mb)</th>\n    <th rowspan=\"2\">1 hr</th>\n    <th rowspan=\"2\">3 hr</th>\n    <th rowspan=\"2\">6 hr</th>\n    </tr>\n\n    <tr align=\"center\" bgcolor=\"#b0c4de\"><th>Max.</th><th>Min.</th></tr>\nEOM;\n} else if (preg_match(\"/DCP|COOP/\", $network)) {\n    $wind_label = ($windunits == \"mph\") ? \"Wind<br>(mph)\" : \"Wind<br>(knots)\";\n    // Figure out what extra columns we have here.\n    $shefcols = array();\n    $shefextra = \"\";\n    foreach ($jobj[\"schema\"][\"fields\"] as $bogus => $field) {\n        $name = $field[\"name\"];\n        if (preg_match(\"/^[A-Z]/\", $name)) {\n            $shefcols[] = $name;\n        }\n    }\n    asort($shefcols);\n    $shefheader = sprintf(\n        \"<th colspan=\\\"%s\\\">RAW SHEF CODES</th>\",\n        sizeof($shefcols)\n    );\n    foreach ($shefcols as $bogus => $val) {\n        $shefextra .= sprintf(\"<th>%s</th>\", $val);\n    }\n    $header = <<<EOM\n    <tr align=\"center\" bgcolor=\"#b0c4de\">\n    <th rowspan=\"2\">Time</th>\n    <th rowspan=\"2\">{$wind_label}</th>\n    <th colspan=\"3\">Temperature (&ordm;F)</th>\n    <th rowspan=\"3\">Relative<br>Humidity</th>\n    <th>Precipitation (in.)</th>\n    {$shefheader}\n    </tr>\n\n    <tr align=\"center\" bgcolor=\"#b0c4de\">\n    <th>Air</th>\n    <th>Dwpt</th>\n    <th>Feels Like</th>\n    <th>1 hr</th>\n    {$shefextra}\n    </tr>\nEOM;\n} else if (preg_match(\"/RWIS/\", $network)) {\n    $wind_label = ($windunits == \"mph\") ? \"Wind<br>(mph)\" : \"Wind<br>(knots)\";\n    $header = <<<EOM\n    <tr align=\"center\" bgcolor=\"#b0c4de\">\n    <th rowspan=\"2\">Time</th>\n    <th rowspan=\"2\">{$wind_label}</th>\n    <th colspan=\"3\">Temperature (&ordm;F)</th>\n    <th rowspan=\"2\">Relative<br>Humidity</th>\n    <th colspan=\"4\">Pavement Sensors: Temperature (&ordm;F) (Condition)</th>\n    </tr>\n\n    <tr align=\"center\" bgcolor=\"#b0c4de\">\n    <th>Air</th>\n    <th>Dwpt</th>\n    <th>Feels Like</th>\n    <th>Sensor 1</th>\n    <th>Sensor 2</th>\n    <th>Sensor 3</th>\n    <th>Sensor 4</th>\n    </tr>\nEOM;\n} else if ($network == \"SCAN\") {\n    $wind_label = ($windunits == \"mph\") ? \"Wind<br>(mph)\" : \"Wind<br>(knots)\";\n    $header = <<<EOM\n    <tr align=\"center\" bgcolor=\"#b0c4de\">\n    <th rowspan=\"2\">Time</th>\n    <th rowspan=\"2\">{$wind_label}</th>\n    <th colspan=\"2\">Temp (&deg;F)</th>\n    <th rowspan=\"2\">RH%</td>\n    <th rowspan=\"2\">Solar (W/m2)</th>\n    <th rowspan=\"2\">Precipitation (in.)</th>\n    <th colspan=\"2\">2 Inch</th>\n    <th colspan=\"2\">4 Inch</th>\n    <th colspan=\"2\">8 Inch</th>\n    <th colspan=\"2\">20 Inch</th>\n    <th colspan=\"2\">40 Inch</th>\n    </tr>\n\n    <tr align=\"center\" bgcolor=\"#b0c4de\">\n    <th>Air</th>\n    <th>Dwpt</th>\n    <th>Temp</th><th>VWC</th>\n    <th>Temp</th><th>VWC</th>\n    <th>Temp</th><th>VWC</th>\n    <th>Temp</th><th>VWC</th>\n    <th>Temp</th><th>VWC</th>\n    </tr>\nEOM;\n} else {\n    $wind_label = ($windunits == \"mph\") ? \"Wind<br>(mph)\" : \"Wind<br>(knots)\";\n    $header = <<<EOM\n    <tr align=\"center\" bgcolor=\"#b0c4de\">\n    <th rowspan=\"2\">Time</th>\n    <th rowspan=\"2\">{$wind_label}</th>\n    <th colspan=\"3\">Temperature (&ordm;F)</th>\n    <th rowspan=\"3\">Relative<br>Humidity</th>\n    <th>Precipitation (in.)</th></tr>\n\n    <tr align=\"center\" bgcolor=\"#b0c4de\">\n    <th>Air</th>\n    <th>Dwpt</th>\n    <th>Feels Like</th>\n    <th>1 hr</th>\n    </tr>\nEOM;\n}\n\n\n$table = \"\";\n$i = 0;\n$data = $jobj[\"data\"];\nif ($sortdir == \"desc\") {\n    $data = array_reverse($data);\n}\nforeach ($data as $bogus => $row) {\n    if (preg_match(\"/ASOS/\", $network)) {\n        $table .= asos_formatter($i, $row, $windunits);\n    } else if (preg_match(\"/DCP|COOP/\", $network)) {\n        $table .= hads_formatter($i, $row, $shefcols, $windunits);\n    } else if (preg_match(\"/RWIS/\", $network)) {\n        $table .= rwis_formatter($i, $row, $windunits);\n    } else if ($network == \"SCAN\") {\n        $table .= scan_formatter($i, $row, $windunits);\n    } else {\n        $table .= formatter($i, $row, $windunits);\n    }\n    $i++;\n}\n$errdiv = \"\";\nif ($errmsg != \"\") {\n    $errdiv = <<<EOM\n<div class=\"alert alert-warning\">{$errmsg}</div>\nEOM;\n}\n\n$content .= <<<EOM\n\n{$errdiv}\n\n<div class=\"table-container\">\n    <table class=\"table table-striped table-bordered table-hover\" id=\"datatable\">\n    <thead class=\"sticky\">\n    {$header}\n    </thead>\n    <tbody>\n    {$table}\n    </tbody>\n    </table>\n</div>\n\n<div class=\"api-link\">\n    <p><strong>API:</strong> The <a href=\"{$wsuri}\" target=\"_blank\">IEM API webservice</a> that provided data to this\n    page. For more details, see <a href=\"/api/1/docs#/default/service_obhistory__fmt__get\" target=\"_blank\">documentation</a>.</p>\n</div>\n\n<div class=\"data-notes\">\n    <h4>Data Notes</h4>\n    <ul>\n    {$notes}\n    </ul>\n</div>\nEOM;\n$t->content = $content;\n$t->render('sites.phtml');\n"
  },
  {
    "path": "htdocs/sites/pics.php",
    "content": "<?php\n/*\n * My purpose in life is to produce pics\n */\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/sites.php\";\nrequire_once \"../../include/myview.php\";\n\n$ctx = get_sites_context();\n$station = $ctx->station;\n$network = $ctx->network;\n$metadata = $ctx->metadata;\n$t = new MyView();\n$t->iemselect2 = true;\n$dir = get_str404(\"dir\", \"\");\n\n$filename = \"/mesonet/share/pics/{$station}/{$station}.jpg\";\n$puri = \"pics/{$station}/{$station}.jpg\";\n\nif ($dir != \"\") {\n    $filename = \"/mesonet/share/pics/{$station}/{$station}_{$dir}.jpg\";\n    $puri = \"pics/{$station}/{$station}_{$dir}.jpg\";\n}\nif (!file_exists($filename)) {\n    $puri = '/images/nophoto.png';\n}\n$t->title = \"Site Photos\";\n\n$t->sites_current = \"pics\";\n\n$table = sprintf(\n    \"<tr>%s%s%s</tr><tr>%s%s%s</tr><tr>%s%s%s</tr>\",\n    $ctx->printtd(\"NW\", $dir),\n    $ctx->printtd(\"N\", $dir),\n    $ctx->printtd(\"NE\", $dir),\n    $ctx->printtd(\"W\", $dir),\n    \"<td><img src=\\\"{$puri}\\\" alt=\\\"{$station} {$dir}\\\" class=\\\"img-fluid\\\" /></td>\",\n    $ctx->printtd(\"E\", $dir),\n    $ctx->printtd(\"SW\", $dir),\n    $ctx->printtd(\"S\", $dir),\n    $ctx->printtd(\"SE\", $dir)\n);\n\n$more = \"\";\n$filename = \"/mesonet/share/pics/{$station}/{$station}_span.jpg\";\n$puri = \"pics/{$station}/{$station}_span.jpg\";\n$lfilename = \"/mesonet/share/pics/{$station}/{$station}_pan.jpg\";\n$pluri = \"pics/{$station}/{$station}_pan.jpg\";\nif (file_exists($filename)) {\n    $more = \"<h3>Panoramic Shot</h3><img src=\\\"$puri\\\"><br /><a href=\\\"$pluri\\\">Full resolution version</a>\";\n}\nif (file_exists(\"/mesonet/share/pics/$station/HEADER.html\")) {\n    $more .= \"<p><strong>\" . file_get_contents(\"/mesonet/share/pics/$station/HEADER.html\") . \"</strong>\";\n}\n\n$t->content = <<<EOM\n<h3>Directional Photos</h3>\n\n<p>This application shows you photos of the observation site if they are\navailable.  In general, the IEM only has photos for some of the sites in\nIowa...</p>\n\n<p><a href=\"pics.php?network={$network}&station={$station}\">Site Photo</a>\n\n<table>\n{$table}\n</table>\n\n{$more}\nEOM;\n$t->render('sites.phtml');\n"
  },
  {
    "path": "htdocs/sites/porclimo.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/mlib.php\";\nrequire_once \"../../include/sites.php\";\nrequire_once \"../../include/myview.php\";\n\n$ctx = get_sites_context();\n$station = $ctx->station;\n$network = $ctx->network;\n$metadata = $ctx->metadata;\n\n// silly bots\nif (strpos($network, \"CLIMATE\") === false){\n    header(\"HTTP/1.1 404 Not Found\");\n    die();\n}\n\n$t = new MyView();\n$t->iemselect2 = true;\n$t->title = \"Period of Record Daily Climatology\";\n$t->sites_current = \"porclimo\";\n\n$arr = array(\n    \"station\" => $station,\n);\n$json = iemws_json(\"climodat/por_daily_climo.json\", $arr);\nif ($json === FALSE) {\n    $json = array(\"data\" => array());\n}\n$table = \"\";\nforeach ($json[\"data\"] as $key => $row) {\n    $dt = new DateTime($row[\"date\"]);\n    $table .= sprintf(\n        \"<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td>\" .\n            \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>\" .\n            \"<td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\",\n        $dt->format(\"M d\"),\n        $row[\"high_min\"],\n        $row[\"high_min_years\"],\n        $row[\"high_avg\"],\n        $row[\"high_max\"],\n        $row[\"high_max_years\"],\n        $row[\"low_min\"],\n        $row[\"low_min_years\"],\n        $row[\"low_avg\"],\n        $row[\"low_max\"],\n        $row[\"low_max_years\"],\n        $row[\"precip\"],\n        $row[\"precip_max\"],\n        $row[\"precip_max_years\"]\n    );\n}\n$t->content = <<<EOM\n\n<p>This table presents a simple period-of-record summary for the current station.\nThis is simply based off of whatever daily data exists without any adjustments,\netc. The raw data is available as a \n<a href=\"/api/1/climodat/por_daily_climo.txt?station={$station}\">CSV</a>.</p>\n\n<table class=\"table table-striped table-sm\">\n<thead class=\"sticky\">\n<tr><th>Day</th>\n<th>Min High</th><th>Min High Year(s)</th><th>Avg High</th><th>Max High</th><th>Max High Year(s)</th>\n<th>Min Low</th><th>Min Low Year(s)</th><th>Avg Low</th><th>Max Low</th><th>Max Low Year(s)</th>\n<th>Precip</th><th>Max Precip</th><th>Max Precip Year(s)</th>\n</tr>\n</thead>\n<tbody>\n{$table}\n</tbody>\n</table>\n\nEOM;\n$t->render('sites.phtml');\n"
  },
  {
    "path": "htdocs/sites/scp.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/sites.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/mlib.php\";\nrequire_once \"../../include/forms.php\";\n\n$ctx = get_sites_context();\n$station = $ctx->station;\n$network = $ctx->network;\n$metadata = $ctx->metadata;\n$t = new MyView();\n$t->iemselect2 = true;\n$t->title = \"Satellite Cloud Product\";\n$t->sites_current = \"scp\";\n$sortdir = get_str404(\"sortdir\", \"asc\");\n$year = get_int404(\"year\", gmdate(\"Y\"));\n$month = get_int404(\"month\", gmdate(\"m\"));\n$day = get_int404(\"day\", gmdate(\"d\"));\n$date = mktime(0, 0, 0, $month, $day, $year);\n\n$sortopts = array(\n    \"asc\" => \"Ascending\",\n    \"desc\" => \"Descending\",\n);\n$sortform = make_select(\"sortdir\", $sortdir, $sortopts);\n\n$startyear = 1993;\nif (!is_null($metadata[\"archive_begin\"])) {\n    $astart = intval($metadata[\"archive_begin\"]->format(\"Y\"));\n    if ($astart > $startyear) {\n        $startyear = $astart;\n    }\n}\n\n$exturi = sprintf(\n    \"%s/api/1/scp.json?station=%s&amp;date=%s&amp;tz=%s\",\n    $EXTERNAL_BASEURL,\n    $station,\n    date(\"Y-m-d\", $date),\n    $metadata[\"tzname\"],\n);\n$arr = array(\n    \"station\" => $station,\n    \"date\" => date(\"Y-m-d\", $date),\n    \"tz\" => $metadata[\"tzname\"],\n);\n$json = iemws_json(\"scp.json\", $arr);\nif ($json === FALSE) {\n    $json = array(\"data\" => array());\n}\n\n$birds = array();\n$possible = array(\"1\" => \"East Sounder\", \"2\" => \"West Sounder\", \"3\" => \"Imager\");\n$header = \"\";\n$header2 = \"\";\nforeach ($possible as $value => $label) {\n    $lookup = sprintf(\"mid_%s\", $value);\n    if (sizeof($json[\"data\"]) > 0 && array_key_exists($lookup, $json[\"data\"][0])) {\n        $birds[] = $value;\n        $header .= \"<th colspan=\\\"4\\\" class=\\\"rl\\\">Satellite $label</th>\";\n        $header2 .= \"<th>Mid Clouds</th><th>High Clouds</th><th>Levels [ft]</th><th class=\\\"rl\\\">ECA [%]</th>\";\n    }\n}\n\nfunction cldtop($val1, $val2)\n{\n    if ($val1 === null || $val2 === null) {\n        return \"-\";\n    }\n    return sprintf(\"%s - %s\", $val1, $val2);\n}\nfunction skyc($row, $i)\n{\n    if (!array_key_exists(\"skyc$i\", $row)) {\n        return \"\";\n    }\n    $coverage = $row[\"skyc$i\"];\n    $level = $row[\"skyl$i\"];\n    $res = \"\";\n    if ($coverage !== null) {\n        $res .= $coverage;\n    }\n    if ($level > 0) {\n        $res .= sprintf(\"@%s<br />\", $level);\n    }\n    return $res;\n}\n\n$table = <<<EOM\n<table>\n<thead class=\"sticky\">\n<tr>\n<th rowspan=\"2\" class=\"rl\">SCP Valid UTC</th>\n<th rowspan=\"2\" class=\"rl\">METAR Valid Local</th>\n$header<th colspan=\"2\">ASOS METAR Report</th></tr>\n<tr>$header2<th>Levels ft</th><th>METAR</th></tr>\n</thead>\n<tbody>\nEOM;\n$data = $json[\"data\"];\nif ($sortdir == \"desc\") {\n    $data = array_reverse($data);\n}\nforeach ($data as $key => $row) {\n    if (!array_key_exists(\"utc_scp_valid\", $row)) {\n        continue;\n    }\n    $lvalid = \"No Ob\";\n    if (array_key_exists(\"local_valid\", $row)) {\n        $lvalid = date(\"g:i A\", strtotime($row[\"local_valid\"]));\n    }\n    $table .= sprintf(\n        \"<tr><td class=\\\"rl\\\">%sZ</td><td class=\\\"rl\\\">%s</td>\",\n        gmdate(\"Hi\", strtotime($row[\"utc_scp_valid\"])),\n        $lvalid,\n    );\n    foreach ($birds as $b) {\n        $table .= sprintf(\n            \"<td>%s</td><td>%s</td><td>%s</td><td class=\\\"rl\\\">%s</td>\",\n            $row[\"mid_$b\"],\n            $row[\"high_$b\"],\n            cldtop($row[\"cldtop1_$b\"], $row[\"cldtop2_$b\"]),\n            $row[\"eca_$b\"]\n        );\n    }\n    $table .= sprintf(\n        \"<td>%s %s %s %s<td>%s</td></tr>\",\n        skyc($row, 1),\n        skyc($row, 2),\n        skyc($row, 3),\n        skyc($row, 4),\n        array_key_exists(\"metar\", $row) ? $row[\"metar\"] : \"\"\n    );\n}\n$table .= \"</tbody></table>\";\n\n$ys = yearSelect($startyear, date(\"Y\", $date));\n$ms = monthSelect(date(\"m\", $date));\n$ds = daySelect(date(\"d\", $date));\n\n$t->content = <<<EOM\n<style>\n.rl {\n    border-right: 2px solid;\n}\ntbody>tr:nth-child(even) {\n    background-color: #dddddd;\n}\n</style>\n\n<h3>Satellite Cloud Product</h3>\n\n<p><a href=\"https://www.nesdis.noaa.gov/\">NESDIS</a> produces a\n<a href=\"https://www.ospo.noaa.gov/Products/atmosphere/soundings/index.html\">Satellite Cloud Product</a> (SCP)\nthat supplements the ASOS ceilometer readings.  This page merges the SCP data\nwith the METAR observations for a given <strong>UTC date</strong>. Cloud level\nvalues are presented in feet above ground level.  <strong>ECA</strong> represents\nestimated cloud amount expressed in percentage. An\n<a href=\"/api/1/docs#/default/service_scp_json_get\">IEM Web Service</a> provided\nthe following <a href=\"$exturi\">JSON dataset</a> for this page. Data is available\nfor some sites back to 1993.</p>\n\n<form method=\"GET\">\n<input type=\"hidden\" name=\"station\" value=\"$station\">\n<input type=\"hidden\" name=\"network\" value=\"$network\">\nYear: {$ys}\n\nMonth: {$ms}\n\nDay:{$ds}\n\nTime Order:{$sortform}\n<input type=\"submit\" value=\"View Date\">\n\n</form>\n\n<p>&nbsp;</p>\n\n{$table}\n\nEOM;\n$t->render('sites.phtml');\n"
  },
  {
    "path": "htdocs/sites/site.js",
    "content": "/* global olSelectLonLat */\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    // The olSelectLonLat widget now handles bidirectional sync automatically\n    // via data attributes on the map div\n    const res = olSelectLonLat(\"mymap\");\n    window.marker = res.marker; // Store the marker globally if needed\n});\n"
  },
  {
    "path": "htdocs/sites/site.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/mlib.php\";\nforce_https();\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/sites.php\";\nrequire_once \"../../include/iemprop.php\";\n$OL = \"10.9.0\";\n$ctx = get_sites_context();\n$station = $ctx->station;\n$network = $ctx->network;\n$metadata = $ctx->metadata;\n\n$alertmsg = \"\";\nif (\n    isset($_GET[\"lat\"]) &&\n    $_GET[\"lat\"] != \"move marker\" &&\n    floatval($_GET[\"lat\"]) != 0 &&\n    floatval($_GET[\"lat\"]) != 1 &&\n    floatval($_GET[\"lat\"]) != -1 &&\n    floatval($_GET[\"lon\"]) != 0 &&\n    floatval($_GET[\"lon\"]) != 1 &&\n    floatval($_GET[\"lon\"]) != -1\n) {\n    $client_ip = getClientIp();\n    // Log the request so to effectively do some DOS protection.\n    $pgconn = iemdb(\"mesosite\");\n    $stname = iem_pg_prepare(\n        $pgconn,\n        \"INSERT into weblog \".\n            \"(client_addr, uri, referer, http_status) \" .\n            \"VALUES ($1, $2, $3, $4)\"\n    );\n    pg_execute(\n        $pgconn,\n        $stname,\n        array(\n            $client_ip,\n            \"/sites/site.php?network={$network}&station={$station}\",\n            $_SERVER[\"HTTP_REFERER\"],\n            404,\n        )\n    );\n\n    $newlat = floatval($_GET[\"lat\"]);\n    $newlon = floatval($_GET[\"lon\"]);\n    $email = get_str404(\"email\", 'n/a');\n    $name = get_str404(\"name\", \"n/a\");\n    $delta = (\n        ($newlat - $metadata[\"lat\"]) ** 2 +\n        ($newlon - $metadata[\"lon\"]) ** 2) ** 0.5;\n    $msg = <<<EOM\nIEM Sites Move Request\n======================\n> REMOTE_ADDR: {$client_ip}\n> ID:          {$station}\n> NAME:        {$name} OLD: {$metadata[\"name\"]}\n> NETWORK:     {$network}\n> LON:         {$newlon} OLD: {$metadata[\"lon\"]}\n> LAT:         {$newlat} OLD: {$metadata[\"lat\"]}\n> EMAIL:       {$email}\n\nReview with suggested location: {$EXTERNAL_BASEURL}/sites/site.php?network={$network}&station={$station}&suggested_lat={$newlat}&suggested_lon={$newlon}\nOriginal location: {$EXTERNAL_BASEURL}/sites/site.php?network={$network}&station={$station}\nEOM;\n    if ((($delta > 0.0001) && ($delta < 0.5)) || (strpos($email, '@') > 0)) {\n       mail(\"akrherz@iastate.edu\", \"Please move {$station} {$network}\", $msg);\n    }\n    // We are doing a GET request, so we don't want folks to bookmark this\n    header(\"Location: site.php?station={$station}&network={$network}&moved=1&suggested_lat={$newlat}&suggested_lon={$newlon}\");\n    exit();\n}\nif (isset($_GET[\"moved\"])) {\n    $moved_lat = isset($_GET[\"suggested_lat\"]) ? sprintf(\"%.5f\", floatval($_GET[\"suggested_lat\"])) : null;\n    $moved_lon = isset($_GET[\"suggested_lon\"]) ? sprintf(\"%.5f\", floatval($_GET[\"suggested_lon\"])) : null;\n\n    $coord_info = \"\";\n    if ($moved_lat && $moved_lon) {\n        $coord_info = \" The red circle on the map shows your suggested location (Lat: {$moved_lat}, Lon: {$moved_lon}).\";\n    }\n\n    $alertmsg = <<<EOM\n<div class=\"alert alert-success\">Thanks! Your suggested move was submitted for\nevaluation.{$coord_info}</div>\nEOM;\n}\n\n$lat = sprintf(\"%.5f\", $metadata[\"lat\"]);\n$lon = sprintf(\"%.5f\", $metadata[\"lon\"]);\n\n// Check for suggested coordinates\n$suggested_lat = isset($_GET[\"suggested_lat\"]) ? sprintf(\"%.5f\", floatval($_GET[\"suggested_lat\"])) : null;\n$suggested_lon = isset($_GET[\"suggested_lon\"]) ? sprintf(\"%.5f\", floatval($_GET[\"suggested_lon\"])) : null;\n\n$suggested_coordinates_info = \"\";\nif ($suggested_lat && $suggested_lon) {\n    $suggested_coordinates_info = <<<EOM\n<div class=\"alert alert-info\">\n<strong>Suggested Location Review:</strong> The blue marker shows the current database location,\nand the red circle shows a suggested new location (Lat: {$suggested_lat}, Lon: {$suggested_lon})\nsubmitted for review.\n</div>\nEOM;\n}\n\n$t = new MyView();\n$t->iemselect2 = true;\n$t->title = sprintf(\"Site Info: %s %s\", $station, $metadata[\"name\"]);\n$t->headextra = <<<EOM\n<link rel='stylesheet' href=\"/vendor/openlayers/{$OL}/ol.css\" type='text/css'>\nEOM;\n$t->jsextra = <<<EOM\n<script src='/vendor/openlayers/{$OL}/ol.js'></script>\n<script type=\"text/javascript\" src=\"/js/olselect-lonlat.js?v=3\"></script>\n<script src=\"site.js\" type=\"text/javascript\"></script>\nEOM;\n$t->sites_current = \"base\";\n\n\nfunction pretty_key($key)\n{\n    if ($key == \"TRACKS_STATION\") {\n        return \"Data tracks station\";\n    }\n    return $key;\n}\nfunction pretty_value($key, $value)\n{\n    if ($key == \"TRACKS_STATION\") {\n        $tokens = explode(\"|\", $value);\n        return sprintf(\n            '<a href=\"/sites/site.php?station=%s&network=%s\">%s [%s]</a>',\n            $tokens[0],\n            $tokens[1],\n            $tokens[0],\n            $tokens[1]\n        );\n    }\n    return $value;\n}\n\n$attrtable = \"\";\nif (sizeof($metadata[\"attributes\"]) > 0) {\n    $attrtable .= <<<EOM\n    <h3>Station Attributes:</h3>\n    <p><i>These are key value pairs used by the IEM to do data management.</i></p>\n    <table class=\"table table-sm table-striped\">\n    <thead><tr><th>Key / Description</th><th>Value</th></tr></thead>\n    <tbody>\nEOM;\n    foreach ($metadata[\"attributes\"] as $key => $value) {\n        $attrtable .= sprintf(\n            \"<tr><td>%s</td><td>%s</td></tr>\",\n            pretty_key($key),\n            pretty_value($key, $value)\n        );\n    }\n    $attrtable .= \"</tbody></table>\";\n}\n$threading = \"\";\nif ((strpos($network, \"CLIMATE\") > 0) && (substr($station, 2, 1) == \"T\")) {\n    $pgconn = iemdb(\"mesosite\");\n    $stname = iem_pg_prepare(\n        $pgconn,\n        \"SELECT t.id, t.network, t.name, s.begin_date, s.end_date \" .\n            \"from station_threading s \" .\n            \"JOIN stations t on (s.source_iemid = t.iemid) WHERE s.iemid = $1 \" .\n            \"ORDER by s.begin_date ASC\"\n    );\n    $result = pg_execute($pgconn, $stname, array($metadata[\"iemid\"]));\n    if (pg_num_rows($result) > 0) {\n        $threading = <<<EOM\n<h3>Station Threading:</h3>\n<p>This station threads together data from multiple stations to provide a\nlong term record for the location.</p>\n<table class=\"table table-sm table-striped\">\n<thead><tr><th>Station</th><th>Begin Date</th><th>End Date</th></tr></thead>\n<tbody>\nEOM;\n    }\n    while ($row = pg_fetch_assoc($result)) {\n        $threading .= sprintf(\n            \"<tr><td><a href=\\\"/sites/site.php?station=%s&network=%s\\\">%s (%s)</a></td><td>%s</td><td>%s</td></tr>\",\n            $row[\"id\"],\n            $row[\"network\"],\n            $row[\"name\"],\n            $row[\"id\"],\n            $row[\"begin_date\"],\n            $row[\"end_date\"],\n        );\n    }\n    if (pg_num_rows($result) > 0) {\n        $threading .= \"</tbody></table>\";\n    }\n}\n\nfunction df($val){\n    if (is_null($val)){\n        return \"\";\n    }\n    return $val->format(\"Y-m-d\");\n}\n$ab = df($metadata[\"archive_begin\"]);\n$ae = df($metadata[\"archive_end\"]);\n\n$wigos = \"\";\nif (! is_null($metadata[\"wigos\"])){\n    $wigos = sprintf(\n        \"<tr><th>WIGOS ID:</th>\".\n        \"<td><a href=\\\"https://oscar.wmo.int/surface/#/search/station/\".\n        \"stationReportDetails/%s\\\">%s</a></td></tr>\",\n        $metadata[\"wigos\"],\n        $metadata[\"wigos\"]);\n}\n\n$update_interface = <<<EOM\n<h5>Location Update Request</h5>\n<p><strong>Is the location shown for this station wrong?</strong></p>\n<p>If so, please consider submitting a location submission by moving the marker\non the map and completing this form below.</p>\n\n{$suggested_coordinates_info}\n\n<form name=\"updatecoords\" method=\"GET\">\n<input type=\"hidden\" value=\"{$network}\" name=\"network\">\n<input type=\"hidden\" value=\"{$station}\" name=\"station\">\n\n<div class=\"row mb-3\">\n<div class=\"col-md-6\">\n<label for=\"newlat\" class=\"form-label\">New Latitude:</label>\n<input id=\"newlat\" type=\"text\" class=\"form-control\" name=\"lat\" placeholder=\"move marker\" required>\n</div>\n<div class=\"col-md-6\">\n<label for=\"newlon\" class=\"form-label\">New Longitude:</label>\n<input id=\"newlon\" type=\"text\" class=\"form-control\" name=\"lon\" placeholder=\"move marker\" required>\n</div>\n</div>\n\n<div class=\"mb-3\">\n<label for=\"email\" class=\"form-label\">Enter Your Email Address <small>[1]</small>:</label>\n<input type=\"email\" id=\"email\" class=\"form-control\" name=\"email\" placeholder=\"optional\" autocomplete=\"email\">\n</div>\n\n<div class=\"mb-3\">\n<label for=\"name\" class=\"form-label\">Better Location Name?:</label>\n<input type=\"text\" id=\"name\" class=\"form-control\" name=\"name\" value=\"{$metadata[\"name\"]}\" maxlength=\"100\" />\n</div>\n\n<div class=\"alert alert-info\">\n<small>\n<strong>[1]</strong> Your email address will not be shared nor will you be added to any\nlists. The IEM developer will simply email you back after consideration of\nthis request.\n</small>\n</div>\n\n<div class=\"alert alert-warning\">\n<strong>Note:</strong> If you are looking for a wind rose for a location\nother than this, your only option on this website is to find the nearest station\nwith data.\n</div>\n\n<input type=\"submit\" value=\"I am asking the location be updated.\" class=\"btn btn-warning\">\n</form>\n</div>\nEOM;\nif (strpos($network, \"COCORAHS\") > 0) {\n    $update_interface = <<<EOM\n<p>\nLocation information and name is controlled by the <a href=\"https://cocorahs.org\">CoCoRaHS</a> organization.\nThe IEM hopefully automagically syncs updates from them to the IEM database.\n    </p>\nEOM;\n}\n\n$t->content = <<<EOM\n\n{$alertmsg}\n\n<div class=\"row\">\n<div class=\"col-md-4\">\n\n<div class=\"card mb-4\">\n<div class=\"card-header\">\n<h4 class=\"mb-0\">Station Information</h4>\n</div>\n<div class=\"card-body\">\n<table class=\"table table-sm table-striped\">\n<tr><th>IEM Internal ID:</th><td>{$metadata[\"iemid\"]}</td></tr>\n{$wigos}\n<tr><th>Station Identifier:</th><td>{$station}</td></tr>\n<tr><th>Station Name:</th><td>{$metadata[\"name\"]}</td></tr>\n<tr><th>Network:</th><td>{$network}</td></tr>\n<tr><th>County:</th><td>{$metadata[\"county\"]}</td></tr>\n<tr><th>State:</th><td>{$metadata[\"state\"]}</td></tr>\n<tr><th>Latitude:</th><td>{$lat}</td></tr>\n<tr><th>Longitude:</th><td>{$lon}</td></tr>\n<tr><th>Elevation [m]:</th><td>{$metadata[\"elevation\"]}</td></tr>\n<tr><th>Time Zone:</th><td>{$metadata[\"tzname\"]}</td></tr>\n<tr><th>Archive Begin:</th><td>{$ab}</td></tr>\n<tr><th>Archive End:</th><td>{$ae}</td></tr>\n</table>\n</div>\n</div>\n\n{$attrtable}\n\n{$threading}\n\n<div class=\"mb-3\">\n<a href=\"networks.php?station={$station}&amp;network={$network}\" class=\"btn btn-primary\">\n<i class=\"bi bi-table\" aria-hidden=\"true\"></i> View {$network} Network Table\n</a>\n</div>\n\n</div>\n<div class=\"col-md-8\">\n\n<div class=\"card\">\n<div class=\"card-header\">\n<h4 class=\"mb-0\">Station Location</h4>\n</div>\n<div class=\"card-body\">\n\n<div id=\"mymap\" style=\"height: 400px; width: 100%;\"\ndata-initial-lat=\"{$lat}\"\ndata-initial-lon=\"{$lon}\"\ndata-suggested-lat=\"{$suggested_lat}\"\ndata-suggested-lon=\"{$suggested_lon}\"\ndata-lat-input=\"newlat\"\ndata-lon-input=\"newlon\"\ndata-precision=\"8\"\ndata-zoom=\"14\"></div>\n\n<div class=\"mt-3\">\n{$update_interface}\n</div>\n</div>\n\n</div>\n\nEOM;\n$t->render('sites.phtml');\n"
  },
  {
    "path": "htdocs/sites/taf.module.js",
    "content": "import { requireElement } from '/js/iemjs/domUtils.js';\n\n/**\n * Loads and displays Terminal Aerodrome Forecast (TAF) data\n * @param {HTMLElement} element - The target element to populate\n * @param {string} station3 - 3-character station identifier\n */\nconst loadTafData = async (element, station3) => {\n    if (!station3) {\n        element.innerHTML = '<div class=\"alert alert-warning\">No station identifier provided for TAF data.</div>';\n        return;\n    }\n    \n    try {\n        const response = await fetch(`/cgi-bin/afos/retrieve.py?pil=TAF${station3}&fmt=html`);\n        if (!response.ok) {\n            throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n        }\n        const data = await response.text();\n        element.innerHTML = data || '<div class=\"alert alert-info\">No TAF data available for this station.</div>';\n    } catch (error) {\n        element.innerHTML = `<div class=\"alert alert-danger\"><strong>Error:</strong> Unable to load TAF data. ${error.message}</div>`;\n    }\n};\n\n/**\n * Loads and displays Area Forecast Discussion (AFD) aviation data\n * @param {HTMLElement} element - The target element to populate\n * @param {string} wfo - Weather Forecast Office identifier\n */\nconst loadAfdData = async (element, wfo) => {\n    if (!wfo) {\n        element.innerHTML = '<div class=\"alert alert-warning\">No Weather Forecast Office identifier provided for AFD data.</div>';\n        return;\n    }\n    \n    try {\n        const response = await fetch(`/cgi-bin/afos/retrieve.py?pil=AFD${wfo}&fmt=html&aviation_afd=1`);\n        if (!response.ok) {\n            throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n        }\n        const data = await response.text();\n        element.innerHTML = data || '<div class=\"alert alert-info\">No AFD aviation data available for this office.</div>';\n    } catch (error) {\n        element.innerHTML = `<div class=\"alert alert-danger\"><strong>Error:</strong> Unable to load AFD data. ${error.message}</div>`;\n    }\n};\n\n/**\n * Loads and displays recent METAR observations\n * @param {HTMLElement} element - The target element to populate\n * @param {string} station4 - 4-character station identifier\n */\nconst loadMetarData = async (element, station4) => {\n    if (!station4) {\n        element.innerHTML = '<div class=\"alert alert-warning\">No station identifier provided for METAR data.</div>';\n        return;\n    }\n    \n    try {\n        const response = await fetch(\n            `/cgi-bin/request/asos.py?station=${station4}&hours=4&nometa=1&data=metar&report_type=3,4`\n        );\n        if (!response.ok) {\n            throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n        }\n        const data = await response.text();\n        const processedData = data.trim();\n        if (processedData) {\n            element.innerHTML = `<pre class=\"bg-light p-3 rounded border\">${processedData}</pre>`;\n        } else {\n            element.innerHTML = '<div class=\"alert alert-info\">No recent METAR data available for this station.</div>';\n        }\n    } catch (error) {\n        element.innerHTML = `<div class=\"alert alert-danger\"><strong>Error:</strong> Unable to load METAR data. ${error.message}</div>`;\n    }\n};\n\n/**\n * Initialize aviation weather data loading when DOM is ready\n */\ndocument.addEventListener('DOMContentLoaded', () => {\n    // Load TAF data for the raw text section\n    const rawtext = requireElement('rawtext');\n    const station3 = rawtext.dataset.station3;\n    loadTafData(rawtext, station3);\n\n    // Load AFD aviation data\n    const afd = requireElement('afd');\n    const wfo = afd.dataset.wfo;\n    loadAfdData(afd, wfo);\n\n    // Load recent METAR observations\n    const metars = requireElement('metars');\n    const station4 = metars.dataset.station4;\n    loadMetarData(metars, station4);\n});\n\n// Export functions for testing purposes\nexport { loadTafData, loadAfdData, loadMetarData };\n"
  },
  {
    "path": "htdocs/sites/taf.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/sites.php\";\nrequire_once \"../../include/myview.php\";\n\n$ctx = get_sites_context();\n$station = $ctx->station;\n$network = $ctx->network;\n$metadata = $ctx->metadata;\n\n$station4 = (strlen($station) == 3) ? sprintf(\"K%s\", $station) : $station;\n$station3 = substr($station4, 1, 3);\n\n$t = new MyView();\n$t->iemselect2 = true;\n$t->refresh = 300;\n$t->title = \"Terminal Aerodome Forecasts\";\n$t->sites_current = \"taf\";\n$t->jsextra = <<<EOM\n<script src=\"taf.module.js\" type=\"module\"></script>\nEOM;\n\n$t->content = <<<EOM\n<div class=\"row\">\n<div class=\"col-md-12\">\n\n<div class=\"card mb-4\">\n<div class=\"card-header\">\n<h3 class=\"card-title mb-0\">Terminal Aerodrome Forecasts</h3>\n</div>\n<div class=\"card-body\">\n<p class=\"card-text\">The IEM processes the feed of Terminal Aerodrome Forecasts from the NWS. This\npage presents some of the options available for this dataset. A\n<a href=\"/request/taf.php\" class=\"btn btn-sm btn-outline-primary\">download option</a> exists as well.</p>\n</div>\n</div>\n\n</div>\n</div>\n\n<div class=\"row\">\n<div class=\"col-md-12 mb-4\">\n\n<div class=\"card\">\n<div class=\"card-header\">\n<h4 class=\"card-title mb-0\">Recent METARs</h4>\n</div>\n<div class=\"card-body\">\n<div id=\"metars\" data-station4=\"{$station4}\">\n<div class=\"d-flex justify-content-center\">\n<div class=\"spinner-border text-primary\" role=\"status\" aria-label=\"Loading METAR data\">\n<span class=\"visually-hidden\">Loading...</span>\n</div>\n</div>\n</div>\n</div>\n</div>\n\n</div>\n</div>\n\n<div class=\"row\">\n<div class=\"col-lg-6 col-md-12 mb-4\">\n\n<div class=\"card h-100\">\n<div class=\"card-header\">\n<h4 class=\"card-title mb-0\">Raw TAF Text</h4>\n</div>\n<div class=\"card-body\">\n<div id=\"rawtext\" data-station3=\"{$station3}\">\n<div class=\"d-flex justify-content-center\">\n<div class=\"spinner-border text-primary\" role=\"status\" aria-label=\"Loading TAF data\">\n<span class=\"visually-hidden\">Loading...</span>\n</div>\n</div>\n</div>\n</div>\n</div>\n\n</div>\n<div class=\"col-lg-6 col-md-12 mb-4\">\n\n<div class=\"card h-100\">\n<div class=\"card-header\">\n<h4 class=\"card-title mb-0\">Current NWS Aviation AFD</h4>\n</div>\n<div class=\"card-body\">\n<div id=\"afd\" data-wfo=\"{$metadata['wfo']}\">\n<div class=\"d-flex justify-content-center\">\n<div class=\"spinner-border text-primary\" role=\"status\" aria-label=\"Loading AFD data\">\n<span class=\"visually-hidden\">Loading...</span>\n</div>\n</div>\n</div>\n</div>\n</div>\n\n</div>\n</div>\n\n<div class=\"row\">\n<div class=\"col-md-12\">\n\n<div class=\"card\">\n<div class=\"card-header\">\n<h4 class=\"card-title mb-0\">IEM TAF Visualization</h4>\n</div>\n<div class=\"card-body\">\n<p class=\"card-text\">IEM <a href=\"/plotting/auto/?q=219&station={$station4}\" class=\"btn btn-sm btn-outline-secondary\">Autoplot 219</a> produced\nthis visualization:</p>\n<div class=\"text-center\">\n<img src=\"/plotting/auto/plot/219/station:{$station4}.png\" class=\"img-fluid rounded shadow-sm\" alt=\"TAF Visualization for {$station4}\">\n</div>\n</div>\n</div>\n\n</div>\n</div>\n\n\nEOM;\n$t->render('sites.phtml');\n"
  },
  {
    "path": "htdocs/sites/test.py",
    "content": "\"\"\"implemented in pylib/iemweb/sites/test.py\"\"\"\n\nfrom iemweb.sites.test import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/sites/windrose.css",
    "content": ".hover-zoom {\n    transition: transform 0.3s ease;\n}\n.hover-zoom:hover {\n    transform: scale(1.05);\n}\n"
  },
  {
    "path": "htdocs/sites/windrose.module.js",
    "content": "document.addEventListener('DOMContentLoaded', () => {\n    const imageModal = document.getElementById('imageModal');\n    if (imageModal) {\n        imageModal.addEventListener('show.bs.modal', (event) => {\n            // Get the element that triggered the modal (could be the anchor or img)\n            let triggerElement = event.relatedTarget;\n\n            // If we clicked on the image, get the parent anchor element\n            if (triggerElement && triggerElement.tagName === 'IMG') {\n                triggerElement = triggerElement.closest('a[data-bs-toggle=\"modal\"]');\n            }\n\n            if (triggerElement) {\n                const imageSrc = triggerElement.getAttribute('data-bs-image');\n                const imageTitle = triggerElement.getAttribute('data-bs-title');\n                const modalImage = document.getElementById('modalImage');\n                const modalTitle = imageModal.querySelector('.modal-title');\n\n                if (imageSrc) {\n                    modalImage.src = imageSrc;\n                    modalImage.alt = imageTitle || 'Wind rose';\n                }\n                if (imageTitle && modalTitle) {\n                    modalTitle.textContent = imageTitle;\n                }\n            }\n        });\n    }\n});\n"
  },
  {
    "path": "htdocs/sites/windrose.phtml",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/sites.php\";\nrequire_once \"../../include/myview.php\";\n$ctx = get_sites_context();\n$station = $ctx->station;\n$network = $ctx->network;\n$metadata = $ctx->metadata;\n\n// Switch this page to DCP, if necessary\nif (strpos($network, \"COOP\") > 0) {\n    $dbconn = iemdb(\"mesosite\");\n    $stname = iem_pg_prepare($dbconn, \"SELECT network from stations where id = $1 and network = $2\");\n    $rs = pg_execute(\n        $dbconn,\n        $stname,\n        Array(\n            $station,\n            str_replace(\"_COOP\", \"_DCP\", $network),\n        )\n    );\n    if (pg_num_rows($rs) == 1){\n        $res = pg_fetch_row($rs);\n        $network = $res[0];\n        header(\"Location: /sites/windrose.phtml?station={$station}&network={$network}\");\n        die();\n    }\n}\n\n$t = new MyView();\n$t->iemselect2 = true;\n$t->title = \"Site Wind Roses\";\n$t->sites_current = \"windrose\";\n$t->iem_resource = \"WINDROSE\";\n$t->jsextra = <<<EOM\n<script type=\"module\" src=\"/sites/windrose.module.js\"></script>\nEOM;\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"/sites/windrose.css\" />\nEOM;\n\n$content = <<<EOM\n<h2 class=\"mb-3\">Wind Roses</h2>\n\n<div class=\"alert alert-info d-flex align-items-center mb-4\" role=\"alert\">\n    <i class=\"bi bi-info-circle-fill me-2 fs-5\"></i>\n    <div>\n        <strong>Scroll down</strong> to view monthly climatologies and detailed breakdowns.\n    </div>\n</div>\n\n<div class=\"row mb-4\">\n    <div class=\"col-lg-8\">\n        <p class=\"lead\">Wind roses are information-packed plots providing frequencies of\n        wind direction and wind speed. They quickly indicate dominant\n        wind directions and the direction of strongest wind speeds.</p>\n\n        <p>The IEM has generated these wind roses based on our archive. The archive does\n        contain errors and non-representative data, so please use care when using these plots.\n        In general, data from airports is of good quality and representative of the\n        local surrounding area.</p>\n\n        <p class=\"text-muted small\">These images and data are in the public domain.\n        The <a href=\"/disclaimer.php\">disclaimer page</a> contains more details.</p>\n    </div>\n    <div class=\"col-lg-4\">\n        <div class=\"card border-primary\">\n            <div class=\"card-header bg-primary text-white\">\n                <i class=\"bi bi-tools me-2\"></i>Dynamic Wind Rose Tool\n            </div>\n            <div class=\"card-body\">\n                <p class=\"card-text\">Create custom wind roses over any time period</p>\n                <a href=\"dyn_windrose.phtml?station=$station&network=$network\"\n                   class=\"btn btn-primary w-100\">\n                    <i class=\"bi bi-graph-up me-2\"></i>Launch Tool\n                </a>\n            </div>\n        </div>\n    </div>\n</div>\nEOM;\n\n$rosedata_uri = \"/cgi-bin/mywindrose.py?nsector=36&station=$station&network=$network\"\n    . \"&year1=1970&day1=1&day2=1&month2=1&minute1=0&minute2=0&units=mph&\"\n    . \"justdata=true&hour1=0&hour2=0&year2=\" . (intval(date(\"Y\")) + 1);\n\n\nif (file_exists(\"/mesonet/share/windrose/{$network}/{$station}/{$station}_yearly.png\")) {\n    $content .= <<<EOM\n<div class=\"card mb-4\">\n    <div class=\"card-header bg-light\">\n        <h4 class=\"mb-0\"><i class=\"bi bi-calendar-range me-2\"></i>Yearly Climatology</h4>\n    </div>\n    <div class=\"card-body\">\n        <div class=\"mb-3\">\n            <a href='{$rosedata_uri}&month1=1'\n               class='btn btn-outline-primary'\n               role='button'\n               rel='nofollow'>\n                <i class='bi bi-table' aria-hidden='true'></i> View Raw Data\n            </a>\n        </div>\n        <figure class=\"figure\">\n            <img src=\"/onsite/windrose/{$network}/{$station}/{$station}_yearly.png\"\n                 class=\"img-fluid rounded shadow-sm\"\n                 alt=\"Yearly wind rose for {$station}\"\n                 loading=\"lazy\">\n            <figcaption class=\"figure-caption text-center mt-2\">\n                All-time wind rose based on available historical data\n            </figcaption>\n        </figure>\n    </div>\n</div>\n\n<div class=\"card\">\n    <div class=\"card-header bg-light\">\n        <h4 class=\"mb-0\"><i class=\"bi bi-calendar3 me-2\"></i>Monthly Climatology</h4>\n        <small class=\"text-muted\">Click any thumbnail to view full-size image</small>\n    </div>\n    <div class=\"card-body\">\n        <div class=\"row g-4\">\nEOM;\n\n    for ($mon = 1; $mon < 13; $mon++) {\n        $ts = mktime(0, 0, 0, $mon, 1, 2006);\n        $url = sprintf(\n            \"/onsite/windrose/%s/%s/%s_%s.png\",\n            $network,\n            $station,\n            $station,\n            strtolower(date(\"M\", $ts))\n        );\n        $rosedata = $rosedata_uri . \"&month1={$mon}&monthlimit=1\";\n        $monthName = date(\"F\", $ts);\n\n        $content .= <<<EOM\n            <div class='col-md-6 col-lg-4'>\n                <div class=\"card h-100 shadow-sm\">\n                    <div class=\"card-header bg-primary bg-opacity-10\">\n                        <strong class=\"d-flex justify-content-between align-items-center\">\n                            <span><i class=\"bi bi-calendar-month me-2\"></i>{$monthName}</span>\n                            <a href='{$rosedata}'\n                               class='btn btn-sm btn-outline-primary'\n                               role='button'\n                               rel='nofollow'\n                               title='View raw data for {$monthName}'>\n                                <i class='bi bi-table'></i>\n                            </a>\n                        </strong>\n                    </div>\n                    <div class=\"card-body p-2\">\n                        <a href=\"{$url}\"\n                           class=\"d-block position-relative overflow-hidden rounded\"\n                           data-bs-toggle=\"modal\"\n                           data-bs-target=\"#imageModal\"\n                           data-bs-image=\"{$url}\"\n                           data-bs-title=\"{$monthName} Wind Rose\">\n                            <img src=\"{$url}\"\n                                 class=\"img-fluid hover-zoom\"\n                                 alt=\"{$monthName} wind rose\"\n                                 loading=\"lazy\">\n                        </a>\n                    </div>\n                </div>\n            </div>\n\nEOM;\n    }\n\n    $content .= <<<EOM\n        </div>\n    </div>\n</div>\n\n<!-- Image Modal -->\n<div class=\"modal fade\" id=\"imageModal\" tabindex=\"-1\" aria-labelledby=\"imageModalLabel\" aria-hidden=\"true\">\n    <div class=\"modal-dialog modal-lg modal-dialog-centered\">\n        <div class=\"modal-content\">\n            <div class=\"modal-header\">\n                <h5 class=\"modal-title\" id=\"imageModalLabel\">Wind Rose</h5>\n                <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n            </div>\n            <div class=\"modal-body text-center\">\n                <img src=\"\" id=\"modalImage\" class=\"img-fluid\" alt=\"Wind rose\">\n            </div>\n        </div>\n    </div>\n</div>\n\nEOM;\n\n} else {\n    $content .= <<<EOM\n<div class=\"alert alert-danger d-flex align-items-center\" role=\"alert\">\n    <i class=\"bi bi-exclamation-triangle-fill me-2 fs-5\"></i>\n    <div>\n        <strong>No Data Available</strong> - Sorry, no wind roses are available for this site.\n    </div>\n</div>\nEOM;\n}\n\n$t->content = $content;\n$t->render('sites.phtml');\n"
  },
  {
    "path": "htdocs/smos/index.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/mlib.php\";\nforce_https();\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/myview.php\";\n$OL = \"10.9.0\";\n$t = new MyView();\n$t->title = \"SMOS Data\";\n$t->headextra = <<<EOM\n<link rel='stylesheet' href=\"/vendor/openlayers/{$OL}/ol.css\" type='text/css'>\nEOM;\n$t->jsextra = <<<EOM\n<script src='/vendor/openlayers/{$OL}/ol.js'></script>\n<script type=\"text/javascript\" src=\"/js/olselect-lonlat.js?v=3\"></script>\n<script src=\"smosmap.js?v=2\"></script>\nEOM;\n\n$y1select = yearSelect(2010, 2010, \"year1\");\n$m1select = monthSelect(1, \"month1\");\n$d1select = daySelect(1, \"day1\");\n\n$y2select = yearSelect(date(\"Y\"), 2010, \"year2\");\n$m2select = monthSelect(1, \"month2\");\n$d2select = daySelect(1, \"day2\");\n\n$t->content = <<<EOM\n<h3>Soil Moisture &amp; Ocean Salinity (SMOS) Satellite Data</h3>\n\n<p>The <a href=\"http://www.esa.int/SPECIALS/smos/\">SMOS</a> satellite is a polar\norbiting satellite operated by the European Space Agency.  The satellite provides\nestimates of soil moisture in the approximate top 5 centimeters of soil and the\namount of vegetation on the land surface.\n<a href=\"mailto:bkh@iastate.edu\">Dr Brian Hornbuckle</a> leads a\n<a href=\"https://faculty.sites.iastate.edu/bkh/research\">local research\nteam</a> here at Iowa State that works with this data.  The IEM collects processed\ndata from this satellite, generates analysis plots, and makes the raw data available.\n\n<h4>Download Data</h4>\n<p>This form allows you to download a single grid cell's worth of data based on\nthe latitude and longitude pair you provide.  Data is only available here from\nthe Midwestern United States.  The form will provide an error if you attempt\nto request a point outside of the domain.  Data is available since\n<strong>31 May 2010</strong>.<br />\n<form method=\"GET\" action=\"/cgi-bin/request/smos.py\" name=\"dl\">\n<div class=\"row\"><div class=\"col-md-6\">\n<i>Enter Latitude/Longitude manually or drag marker on map to the right.</i>\n<table>\n<tr><th>Latitude (north degree)</th>\n    <th><input id=\"lat\" type=\"text\" name=\"lat\" size=\"6\" value=\"42.0\" /></th></tr>\n<tr><th>Longitude (east degree)</th>\n    <th><input id=\"lon\" type=\"text\" name=\"lon\" size=\"6\" value=\"-93.0\" /></th></tr>\n    </table>\n<table>\n  <tr>\n    <td></td>\n    <th>Year</th><th>Month</th><th>Day</th>\n  </tr>\n\n  <tr>\n    <th>Start:</th>\n    <td>{$y1select}</td>\n    <td>{$m1select}</td>\n    <td>{$d1select}</td>\n  </tr>\n\n  <tr>\n    <th>End:</th>\n    <td>{$y2select}</td>\n    <td>{$m2select}</td>\n    <td>{$d2select}</td>\n  </tr>\n</table>\n</div><div class=\"col-md-6\">\n<div id=\"map\"\n style=\"width: 100%; height: 250px; border: 2px solid black\"\n data-initial-lat=\"42.0\"\n data-initial-lon=\"-93.0\"\n data-lat-input=\"lat\"\n data-lon-input=\"lon\"></div>\n\n</div></div>\n\n<input type=\"submit\" value=\"Get Data!\" />\n\n</form>\n\n<p><h4>Recent Analysis Plots at 00 UTC</h4>\n<i>Click image for archived imagery</i>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n<a href=\"/timemachine/?product=56\"><img src=\"/data/smos_iowa_sm00.png\" class=\"img-fluid\" /></a>\n</div>\n<div class=\"col-md-6\">\n<a href=\"/timemachine/?product=55\"><img src=\"/data/smos_iowa_od00.png\" class=\"img-fluid\" /></a>\n</div>\n</div>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n<a href=\"/timemachine/?product=53\"><img src=\"/data/smos_midwest_sm00.png\" class=\"img-fluid\" /></a>\n</div>\n<div class=\"col-md-6\">\n<a href=\"/timemachine/?product=54\"><img src=\"/data/smos_midwest_od00.png\" class=\"img-fluid\" /></a>\n</div>\n</div>\n\n<h4>Recent Analysis Plots at 12 UTC</h4>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n<a href=\"/timemachine/?product=56\"><img src=\"/data/smos_iowa_sm12.png\" class=\"img-fluid\" /></a>\n</div>\n<div class=\"col-md-6\">\n<a href=\"/timemachine/?product=55\"><img src=\"/data/smos_iowa_od12.png\" class=\"img-fluid\" /></a>\n</div>\n</div>\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n<a href=\"/timemachine/?product=53\"><img src=\"/data/smos_midwest_sm12.png\" class=\"img-fluid\" /></a>\n</div>\n<div class=\"col-md-6\">\n<a href=\"/timemachine/?product=54\"><img src=\"/data/smos_midwest_od12.png\" class=\"img-fluid\" /></a>\n</div>\n</div>\n\n\n<br />\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/smos/smosmap.js",
    "content": "/* global olSelectLonLat */\n\ndocument.addEventListener('DOMContentLoaded', () => {\n\n    olSelectLonLat(\"map\");\n});"
  },
  {
    "path": "htdocs/timemachine/index.css",
    "content": "/* Time control styling */\n.time-control {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 10px;\n    padding: 10px;\n    background: #f8f9fa;\n    border-radius: 8px;\n    border: 1px solid #dee2e6;\n}\n\n.time-label {\n    font-weight: 600;\n    font-size: 16px;\n    white-space: nowrap;\n    flex-grow: 1;\n    text-align: center;\n}\n\n.time-value {\n    font-weight: 700;\n    color: #007bff;\n    font-size: 18px;\n}\n\n.btn {\n    z-index: 10; /* Ensure buttons are above other elements */\n    position: relative; /* Prevent unintended overlap */\n}\n\n/* Flexbox layout for sliders and buttons */\n.slider-container {\n    display: flex;\n    flex-wrap: wrap;\n    justify-content: space-between;\n    gap: 15px;\n    margin-bottom: 20px;\n}\n\n.slider-item {\n    flex: 1 1 calc(25% - 15px); /* Adjust width for responsiveness */\n    min-width: 150px;\n}\n\n.button-container {\n    display: flex;\n    flex-wrap: wrap;\n    justify-content: center;\n    gap: 10px;\n    margin-top: 30px; /* Add more spacing above the buttons */\n}\n\nlabel[for=\"year_slider\"],\nlabel[for=\"hour_slider\"],\nlabel[for=\"minute_slider\"] {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n}\n\nlabel[for=\"year_slider\"] .btn,\nlabel[for=\"hour_slider\"] .btn,\nlabel[for=\"minute_slider\"] .btn {\n    margin: 0 5px;\n}\n\n/* Mobile adjustments */\n@media (max-width: 768px) {\n    .slider-item {\n        flex: 1 1 100%; /* Full width on smaller screens */\n    }\n\n    .button-container {\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .noUi-pips {\n        display: none; /* Hide pip labels on mobile devices */\n    }\n}\n\n.time-display {\n    display: flex;\n    justify-content: center;\n    gap: 20px;\n    margin-bottom: 20px;\n}\n\n.time-card {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    background: #f8f9fa;\n    border: 1px solid #dee2e6;\n    border-radius: 8px;\n    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n    padding: 10px 15px;\n    width: 100%;\n}\n\n.time-card h4 {\n    font-size: 1.5rem;\n    color: #495057;\n    margin: 0 10px 0 0;\n}\n\n.time-card p {\n    font-size: 1.5rem;\n    font-weight: bold;\n    color: #212529;\n    margin: 0;\n}\n\n.time-card .icon {\n    font-size: 1.5rem;\n    color: #6c757d;\n    margin-right: 10px;\n}\n\n#loading-indicator {\n    font-size: 1.2rem;\n    font-weight: bold;\n    text-align: center;\n}"
  },
  {
    "path": "htdocs/timemachine/index.js",
    "content": "/* global moment */\nlet dt = moment(); // Current application time\nlet irealtime = true; // Is our application in realtime mode or not\nlet isUpdating = false; // Prevent recursive calls\n\n/**\n * Replace HTML special characters with their entity equivalents\n * @param string val\n * @returns string converted string\n */\nfunction escapeHTML(val) {\n    if (typeof val !== 'string') {\n        return ''; // Return an empty string for invalid inputs\n    }\n    return val.replace(/&/g, '&amp;')\n              .replace(/</g, '&lt;')\n              .replace(/>/g, '&gt;')\n              .replace(/\"/g, '&quot;')\n              .replace(/'/g, '&#039;');\n}\n\nfunction updateURL() {\n    // Update the URL with the current product and timestamp\n    const url = new URL(window.location.href);\n    const opt = getSelectedOption();\n    if (!opt) {return;}\n    const pid = opt.value;\n    const stamp = dt.utc().format('YYYYMMDDHHmm');\n    url.searchParams.set('product', pid);\n    url.searchParams.set('timestamp', irealtime ? \"0\" : stamp);\n    window.history.replaceState({}, '', url);\n}\nfunction readURL() {\n    // Read the URL and set the product and timestamp\n    const urlParams = new URLSearchParams(window.location.search);\n    const pid = urlParams.get('product');\n    const stamp = urlParams.get('timestamp');\n    // parse the timestamp\n    if (stamp && stamp !== \"0\") {\n        dt = moment.utc(stamp, 'YYYYMMDDHHmm');\n        irealtime = false;\n    }\n    // Set the product\n    setProduct(pid);\n}\n\nfunction setProduct(pid) {\n    const pp = document.querySelector('select[name=products]');\n    if (pid) {\n        const options = pp.querySelectorAll('option');\n        for (let i = 0; i < options.length; i++) {\n            if (options[i].value === pid) {\n                pp.selectedIndex = i;\n                break;\n            }\n        }\n        // Trigger the change event to update the UI\n        const event = new Event('change');\n        pp.dispatchEvent(event);\n    }\n}\n\nfunction addproducts(data) {\n    const pp = document.querySelector('select[name=products]');\n    // Accessibility: Add ARIA label and role to product select\n    pp.setAttribute('aria-label', 'Product Selection');\n    pp.setAttribute('role', 'listbox');\n    let groupname = '';\n    let optgroup = null;\n\n    data.products.forEach(item => {\n        if (groupname !== item.groupname) {\n            optgroup = document.createElement('optgroup');\n            optgroup.setAttribute('label', item.groupname);\n            pp.appendChild(optgroup);\n            groupname = item.groupname;\n        }\n\n        const option = document.createElement('option');\n        option.value = item.id;\n        option.setAttribute('data-avail_lag', item.avail_lag);\n        option.setAttribute('data-interval', item.interval);\n        option.setAttribute('data-sts', item.sts);\n        option.setAttribute('data-template', item.template);\n        option.setAttribute('data-time_offset', item.time_offset);\n        option.textContent = item.name;\n        optgroup.appendChild(option);\n    });\n}\n\nfunction updateTimeDisplay() {\n    // Update the time display elements\n    // Accessibility: Add ARIA live region to time display\n    const yearElem = document.getElementById('year-value');\n    const monthElem = document.getElementById('month-value');\n    const dayElem = document.getElementById('day-value');\n    const hourElem = document.getElementById('hour-value');\n    const minuteElem = document.getElementById('minute-value');\n\n    yearElem.textContent = dt.year();\n    monthElem.textContent = dt.format('MMM');\n    dayElem.textContent = dt.format('D');\n\n    const hour = dt.local().hour();\n    const period = hour >= 12 ? 'PM' : 'AM';\n    const hour12 = hour % 12 || 12;\n    hourElem.textContent = `${hour12} ${period}`;\n    minuteElem.textContent = dt.format('mm');\n\n    // Set ARIA attributes for live update\n    yearElem.setAttribute('aria-live', 'polite');\n    monthElem.setAttribute('aria-live', 'polite');\n    dayElem.setAttribute('aria-live', 'polite');\n    hourElem.setAttribute('aria-live', 'polite');\n    minuteElem.setAttribute('aria-live', 'polite');\n}\n\n// Helper functions for update() complexity reduction\nfunction calculateTimeConstraints(opt) {\n    const ets = moment();\n    const sts = moment(opt.getAttribute('data-sts'));\n    const interval = parseInt(opt.getAttribute('data-interval'), 10);\n    const avail_lag = parseInt(opt.getAttribute('data-avail_lag'), 10);\n    const time_offset = parseInt(opt.getAttribute('data-time_offset'), 10);\n\n    if (avail_lag > 0) {\n        ets.add(0 - avail_lag, 'minutes');\n    }\n    ets.subtract(time_offset, 'minutes');\n\n    return { ets, sts, interval };\n}\n\nfunction adjustTimeForConstraints(sts, ets, interval) {\n    // Check 1: Bounds check\n    if (dt < sts) {\n        dt = sts;\n    }\n    if (dt > ets) {\n        dt = ets;\n    }\n\n    // Check 2: If our modulus is OK, we can quit early\n    if ((dt.utc().hours() * 60 + dt.minutes()) % interval !== 0) {\n        // Check 3: Place dt on a time that works for the given interval\n        if (interval > 1440) {\n            dt = dt.utc().startOf('month');\n        } else if (interval >= 60) {\n            // minute has to be zero\n            dt = dt.utc().startOf('hour');\n            if (interval !== 60) {\n                dt = dt.utc().startOf('day');\n            }\n        } else {\n            dt = dt.utc().startOf('hour');\n        }\n    }\n}\n\nfunction updateTimeSliders(sts, interval) {\n    // No sliders to update anymore - just update visibility\n    updateControlVisibility(interval);\n}\n\nfunction updateControlVisibility(interval) {\n    // Show/hide controls based on interval\n    // Year and Month are always visible for navigation\n    // Day/Hour/Minute visibility depends on product interval\n    const minuteControl = document.getElementById('minute-control');\n    const hourControl = document.getElementById('hour-control');\n    const dayControl = document.getElementById('day-control');\n\n    if (minuteControl) {\n        minuteControl.style.display = interval >= 60 ? 'none' : 'block';\n    }\n    if (hourControl) {\n        hourControl.style.display = interval >= 1440 ? 'none' : 'block';\n    }\n    if (dayControl) {\n        dayControl.style.display = interval > 1440 ? 'none' : 'block';\n    }\n}\n\nfunction updateImageDisplay(opt) {\n    const imagedisplay = document.getElementById('imagedisplay');\n    const loadingIndicator = document.getElementById('loading-indicator');\n\n    if (loadingIndicator) {\n        loadingIndicator.textContent = 'Loading...'; // Set loading text\n        loadingIndicator.style.display = 'block'; // Show loading indicator\n    }\n\n    const templateText = escapeHTML(opt.getAttribute('data-template'));\n    const url = templateText.replace(/%Y/g, dt.utc().format('YYYY'))\n        .replace(/%y/g, dt.utc().format('YY'))\n        .replace(/%m/g, dt.utc().format('MM'))\n        .replace(/%d/g, dt.utc().format('DD'))\n        .replace(/%H/g, dt.utc().format('HH'))\n        .replace(/%i/g, dt.utc().format('mm'));\n\n    imagedisplay.onload = () => {\n        if (loadingIndicator) {\n            loadingIndicator.style.display = 'none'; // Hide loading indicator\n        }\n    };\n    imagedisplay.onerror = () => {\n        if (loadingIndicator) {\n            loadingIndicator.textContent = 'Error loading image';\n        }\n    };\n    imagedisplay.setAttribute('src', url);\n}\n\nfunction update() {\n    if (isUpdating) {return;} // Safeguard to prevent recursion\n    isUpdating = true;\n\n    updateTimeDisplay();\n\n    // Make sure that our current dt matches what can be provided by the\n    // currently selected option.\n    const opt = getSelectedOption();\n    const { ets, sts, interval } = calculateTimeConstraints(opt);\n\n    adjustTimeForConstraints(sts, ets, interval);\n    updateTimeSliders(sts, interval);\n    updateImageDisplay(opt);\n\n    updateURL();\n    updateUITimestamp();\n    isUpdating = false;\n}\n\nfunction updateUITimestamp() {\n    const opt = getSelectedOption();\n    if (parseInt(opt.getAttribute('data-interval'), 10) >= 1440) {\n        document.getElementById('utctime').textContent = dt.utc().format('YYYY-MM-DD');\n        document.getElementById('localtime').textContent = dt.local().format('MMM Do YYYY');\n    } else {\n        document.getElementById('utctime').textContent = dt.utc().format('YYYY-MM-DD HH:mm');\n        document.getElementById('localtime').textContent = dt.local().format('MMM Do YYYY h:mm a');\n    }\n}\nfunction getSelectedOption() {\n    const pp = document.querySelector('select[name=products]');\n    const selectedOption = pp.options[pp.selectedIndex];\n    if (selectedOption) {\n        return selectedOption;\n    }\n    return null;\n}\n\n// Replace jQuery UI sliders with simple button controls\nfunction buildUI() {\n    // Listen for button clicks\n    document.querySelectorAll('.btn').forEach(button => {\n        // Accessibility: Add ARIA label and role to time navigation buttons\n        const btnUnit = button.getAttribute('data-unit');\n        const btnOffset = button.getAttribute('data-offset');\n        let label = 'Time Navigation';\n        if (btnUnit && btnOffset) {\n            label = `Change time by ${btnOffset} ${btnUnit}`;\n        }\n        button.setAttribute('aria-label', label);\n        button.setAttribute('role', 'button');\n        button.addEventListener('click', (event) => {\n            event.preventDefault();\n            // Get the current product interval\n            const opt = getSelectedOption();\n            if (!opt) {\n                return;\n            }\n            const interval = parseInt(opt.getAttribute('data-interval'), 10);\n            // retrieve the data-unit value from the DOM obj\n            const clickUnit = button.getAttribute('data-unit');\n            let clickOffset = parseInt(button.getAttribute('data-offset'), 10);\n            // If the abs(offset) is greater than the interval, we need to adjust\n            // the interval to match the offset\n            if (clickUnit === \"minute\" && (Math.abs(clickOffset) < interval)) {\n                clickOffset = clickOffset < 0 ? -interval : interval;\n            }\n\n            if (clickUnit && !isNaN(clickOffset)) {\n                dt.add(clickOffset, clickUnit);\n                irealtime = false;\n            }\n            button.blur();\n            update();\n        });\n    });\n\n    document.querySelector('select[name=products]').addEventListener('change', () => {\n        update();\n        // unblur\n        document.querySelector('select[name=products]').blur();\n    });\n}\nfunction refresh() {\n    if (irealtime) {\n        dt = moment();\n    }\n}\n\n/**\n * Legacy URLs had a hash link with a product ID and timestamp.\n * This function will convert that into a hash link\n */\nfunction translateHashLink() {\n    // get the hash link\n    const tokens = window.location.href.split(\"#\");\n    if (tokens.length !== 2) {\n        return;\n    }\n    const tokens2 = tokens[1].split(\".\");\n    if (tokens2.length !== 2) {\n        return;\n    }\n    const product = escapeHTML(tokens2[0]);\n    const timestamp = escapeHTML(tokens2[1]);\n    // Set the URL without updating the history using query params\n    const url = new URL(window.location.href);\n    url.searchParams.set('product', product);\n    url.searchParams.set('timestamp', timestamp);\n    window.history.replaceState({}, '', url);\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    translateHashLink();\n    fetch(\"/json/products.json\")\n        .then(response => {\n            if (!response.ok) {throw new Error('Failed to load products');}\n            return response.json();\n        })\n        .then(data => {\n            addproducts(data);\n            buildUI();\n            readURL();\n            update();\n            // Start the timer\n            window.setTimeout(refresh, 300000);\n        });\n\n    // Add logic for the realtime button\n    const realtimeButton = document.getElementById('realtime');\n    if (realtimeButton) {\n        realtimeButton.addEventListener('click', (event) => {\n            event.preventDefault();\n            dt = moment(); // Reset to current time\n            irealtime = true; // Enable realtime mode\n            update(); // Update the UI\n        });\n    }\n\n    // Keyboard navigation for time control\n    document.addEventListener('keydown', handleKeyboardNavigation);\n});\n\n/**\n * Keyboard navigation handler for time control\n * ArrowLeft/ArrowRight: decrement/increment by interval\n * Shift+ArrowLeft/ArrowRight: decrement/increment by one day\n */\nfunction handleKeyboardNavigation(event) {\n    // Ignore if focus is on an input, textarea, or select\n    const tag = document.activeElement.tagName;\n    if ([\"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(tag)) {return;}\n\n    const opt = getSelectedOption();\n    if (!opt) {return;}\n    const interval = parseInt(opt.getAttribute('data-interval'), 10);\n\n    // Shift+Arrow for day navigation\n    if (event.shiftKey && event.key === 'ArrowRight') {\n        dt.add(1, 'day');\n        irealtime = false;\n        update();\n        event.preventDefault();\n        return;\n    }\n    if (event.shiftKey && event.key === 'ArrowLeft') {\n        dt.subtract(1, 'day');\n        irealtime = false;\n        update();\n        event.preventDefault();\n        return;\n    }\n\n    // ArrowRight: increment by interval\n    if (!event.shiftKey && event.key === 'ArrowRight') {\n        dt.add(interval, 'minutes');\n        irealtime = false;\n        update();\n        event.preventDefault();\n        return;\n    }\n    // ArrowLeft: decrement by interval\n    if (!event.shiftKey && event.key === 'ArrowLeft') {\n        dt.subtract(interval, 'minutes');\n        irealtime = false;\n        update();\n        event.preventDefault();\n    }\n}\n"
  },
  {
    "path": "htdocs/timemachine/index.php",
    "content": "<?php\ndefine(\"IEM_APPID\", 148);\nrequire_once \"../../config/settings.inc.php\";\n\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n$t->title = \"Time Machine\";\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"index.css\">\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"/vendor/moment/2.13.0/moment.min.js\"></script>\n<script type=\"text/javascript\" src=\"index.js?v=2\"></script>\nEOM;\n\n$t->content = <<<EOM\n<p style=\"margin-bottom: 5px;\"><strong>IEM Time Machine:</strong> Select\nthe product of interest and use the time controls below to\nnavigate the archive.</p>\n\n<form name=\"app\">\n<div class=\"row align-items-center\" style=\"margin-bottom: 15px;\">\n    <div class=\"col-lg-4 col-md-6 order-md-2\" style=\"margin-bottom: 10px;\">\n        <div class=\"time-display\" style=\"flex-direction: column; gap: 10px;\">\n            <div class=\"time-card\" style=\"padding: 5px 10px;\">\n                <div class=\"icon\">🕒</div>\n                <h4 style=\"font-size: 0.9rem; margin: 0 5px 0 0;\">Local</h4>\n                <p id=\"localtime\" class=\"time-text\" style=\"font-size: 0.9rem;\"></p>\n            </div>\n            <div class=\"time-card\" style=\"padding: 5px 10px;\">\n                <div class=\"icon\">🌍</div>\n                <h4 style=\"font-size: 0.9rem; margin: 0 5px 0 0;\">UTC</h4>\n                <p id=\"utctime\" class=\"time-text\" style=\"font-size: 0.9rem;\"></p>\n            </div>\n        </div>\n    </div>\n    <div class=\"col-lg-8 col-md-6 order-md-1\" style=\"margin-bottom: 10px;\">\n        <select name=\"products\" id=\"products\" class=\"form-select\" style=\"margin-bottom: 10px;\"></select>\n        <div style=\"display: flex; justify-content: center; gap: 10px; flex-wrap: wrap;\">\n            <button class=\"btn btn-secondary btn-sm\" data-offset=\"-1\" data-unit=\"minute\"><i class=\"bi bi-arrow-left\" aria-hidden=\"true\"></i> Previous</button>\n            <button class=\"btn btn-secondary btn-sm\" id=\"realtime\">Show Latest</button>\n            <button class=\"btn btn-secondary btn-sm\" data-offset=\"1\" data-unit=\"minute\">Next <i class=\"bi bi-arrow-right\" aria-hidden=\"true\"></i></button>\n        </div>\n    </div>\n</div>\n\n<div class=\"row\" style=\"margin-top: 20px;\">\n    <div class=\"col-lg col-md-4 col-sm-6\" style=\"margin-bottom: 15px;\">\n        <div class=\"time-control\">\n            <button data-offset=\"-1\" data-unit=\"year\" class=\"btn btn-secondary btn-sm\" aria-label=\"Previous year\"><i class=\"bi bi-arrow-left\" aria-hidden=\"true\"></i></button>\n            <span class=\"time-label\">Year: <span id=\"year-value\" class=\"time-value\"></span></span>\n            <button data-offset=\"1\" data-unit=\"year\" class=\"btn btn-secondary btn-sm\" aria-label=\"Next year\"><i class=\"bi bi-arrow-right\" aria-hidden=\"true\"></i></button>\n        </div>\n    </div>\n    <div class=\"col-lg col-md-4 col-sm-6\" style=\"margin-bottom: 15px;\" id=\"month-control\">\n        <div class=\"time-control\">\n            <button data-offset=\"-1\" data-unit=\"month\" class=\"btn btn-secondary btn-sm\" aria-label=\"Previous month\"><i class=\"bi bi-arrow-left\" aria-hidden=\"true\"></i></button>\n            <span class=\"time-label\">Month: <span id=\"month-value\" class=\"time-value\"></span></span>\n            <button data-offset=\"1\" data-unit=\"month\" class=\"btn btn-secondary btn-sm\" aria-label=\"Next month\"><i class=\"bi bi-arrow-right\" aria-hidden=\"true\"></i></button>\n        </div>\n    </div>\n    <div class=\"col-lg col-md-4 col-sm-6\" style=\"margin-bottom: 15px;\" id=\"day-control\">\n        <div class=\"time-control\">\n            <button data-offset=\"-1\" data-unit=\"day\" class=\"btn btn-secondary btn-sm\" aria-label=\"Previous day\"><i class=\"bi bi-arrow-left\" aria-hidden=\"true\"></i></button>\n            <span class=\"time-label\">Day: <span id=\"day-value\" class=\"time-value\"></span></span>\n            <button data-offset=\"1\" data-unit=\"day\" class=\"btn btn-secondary btn-sm\" aria-label=\"Next day\"><i class=\"bi bi-arrow-right\" aria-hidden=\"true\"></i></button>\n        </div>\n    </div>\n    <div class=\"col-lg col-md-4 col-sm-6\" style=\"margin-bottom: 15px;\" id=\"hour-control\">\n        <div class=\"time-control\">\n            <button data-offset=\"-1\" data-unit=\"hour\" class=\"btn btn-secondary btn-sm\" aria-label=\"Previous hour\"><i class=\"bi bi-arrow-left\" aria-hidden=\"true\"></i></button>\n            <span class=\"time-label\">Hour: <span id=\"hour-value\" class=\"time-value\"></span></span>\n            <button data-offset=\"1\" data-unit=\"hour\" class=\"btn btn-secondary btn-sm\" aria-label=\"Next hour\"><i class=\"bi bi-arrow-right\" aria-hidden=\"true\"></i></button>\n        </div>\n    </div>\n    <div class=\"col-lg col-md-4 col-sm-6\" style=\"margin-bottom: 15px;\" id=\"minute-control\">\n        <div class=\"time-control\">\n            <button data-offset=\"-1\" data-unit=\"minute\" class=\"btn btn-secondary btn-sm\" aria-label=\"Previous minute\"><i class=\"bi bi-arrow-left\" aria-hidden=\"true\"></i></button>\n            <span class=\"time-label\">Minute: <span id=\"minute-value\" class=\"time-value\"></span></span>\n            <button data-offset=\"1\" data-unit=\"minute\" class=\"btn btn-secondary btn-sm\" aria-label=\"Next minute\"><i class=\"bi bi-arrow-right\" aria-hidden=\"true\"></i></button>\n        </div>\n    </div>\n</div>\n\n<div class=\"row\"><div class=\"col-md-12\">\n    <img id=\"imagedisplay\" src=\"timemachine.png\" class=\"img-fluid\"/>\n</div></div>\n\n<!-- Loading indicator -->\n<div id=\"loading-indicator\" style=\"display: none;\">Loading...</div>\n\n</form>\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/topics/first_freeze.phtml",
    "content": "<?php\n// First Fall Freeze Resources\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n\n$t = new MyView();\n$t->title = \"First Fall Freeze Resources\";\n\n// Compute a good fall Year\n$fall_year = intval(date(\"Y\"));\nif (intval(date(\"m\")) < 8) {\n    $fall_year -= 1;\n}\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n <li class=\"breadcrumb-item\"><a href=\"/topics/\">Topics</a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\">First Fall Freeze</li>\n </ol>\n</nav>\n\n <p>This page presents resources relevant to the first fall freeze.  Many of these\n plots are dynamicly generated and can be adjusted for the location and thresholds\n of your interest.  The general definition used by the IEM for 'first fall' is\n the first date after 1 July.  For some parts of the county, this date may not\n be the most appropriate.</p>\n\n <p><strong>IEM Dataset</strong>: For most of these data presentations, data from\n the <a href=\"/COOP/\">NWS Cooperative Observer (COOP)</a> network is used.  These\n once daily observations form the backbone of climate monitoring.</p>\n\n<h3>Map of Fall Minimum Temperature</h3>\n\n<p><img src=\"/plotting/auto/plot/97/sector:IA::var:min_low_temp::gddbase:50::usdm:no::p:text::cmap:RdYlBu::c:yes::dpi:100.png\" class=\"img-fluid\" alt=\"autoplot\"></p>\n\n<p><a class=\"btn btn-sm btn-primary\" href=\"/plotting/auto/?_wait=no&q=97&sector=IA&var=min_low_temp&gddbase=50&usdm=no&p=text&cmap=RdYlBu&c=yes\">Generate This Map</a></p>\n\n<h3>First {$fall_year} Fall Date this year below 32&deg;F</h3>\n\n<p><img src=\"/plotting/auto/plot/165/sector:IA::year:{$fall_year}::var:fall_below::popt:values::threshold:32::cmap:BrBG.png\" class=\"img-fluid\" alt=\"autoplot\"></p>\n\n<p><a class=\"btn btn-sm btn-primary\" href=\"/plotting/auto/?_wait=no&q=165&sector=IA&var=fall_below&popt=values&year=2019&threshold=32&p=50&syear=1893&eyear=2019&cmap=BrBG&cint=2\">Generate This Map</a></p>\n\n<h3>First {$fall_year} Fall Date this year below 29&deg;F</h3>\n\n<p><img src=\"/plotting/auto/plot/165/sector:IA::year:{$fall_year}::var:fall_below::popt:values::threshold:29::cmap:BrBG.png\" class=\"img-fluid\" alt=\"autoplot\"></p>\n\n<p><a class=\"btn btn-sm btn-primary\" href=\"/plotting/auto/?_wait=no&q=165&sector=IA&var=fall_below&popt=values&threshold=29&p=50&syear=1893&eyear=2019&cmap=BrBG&cint=2\">Generate This Map</a></p>\n\n<h3>Probability Dates below 32&deg;F</h3>\n\n<div class=\"row\">\n<div class=\"col-md-4\">\n  <h4>5th Percentile</h4>\n  <p><img src=\"/plotting/auto/plot/165/sector:IA::var:fall_below::popt:values::year:2019::threshold:32::p:5::cmap:BrBG::dpi:100.png\" class=\"img-fluid\" alt=\"autoplot\"></p>\n  <p><a class=\"btn btn-sm btn-primary\" href=\"/plotting/auto/?_wait=no&q=165&sector=IA&var=fall_below&popt=values&year=2019&threshold=32&_opt_p=on&p=5&syear=1893&eyear=2019&cmap=BrBG&cint=2\">Generate This Map</a></p>\n</div>\n<div class=\"col-md-4\">\n  <h4>50th Percentile</h4>\n  <p><img src=\"/plotting/auto/plot/165/sector:IA::var:fall_below::popt:values::year:2019::threshold:32::p:50::cmap:BrBG::dpi:100.png\" class=\"img-fluid\" alt=\"autoplot\"></p>\n  <p><a class=\"btn btn-sm btn-primary\" href=\"/plotting/auto/?_wait=no&q=165&sector=IA&var=fall_below&popt=values&year=2019&threshold=32&_opt_p=on&p=5&syear=1893&eyear=2019&cmap=BrBG&cint=2\">Generate This Map</a></p>\n</div>\n<div class=\"col-md-4\">\n  <h4>95th Percentile</h4>\n  <p><img src=\"/plotting/auto/plot/165/sector:IA::var:fall_below::popt:values::year:2019::threshold:32::p:95::cmap:BrBG::dpi:100.png\" class=\"img-fluid\" alt=\"autoplot\"></p>\n  <p><a class=\"btn btn-sm btn-primary\" href=\"/plotting/auto/?_wait=no&q=165&sector=IA&var=fall_below&popt=values&year=2019&threshold=32&_opt_p=on&p=5&syear=1893&eyear=2019&cmap=BrBG&cint=2\">Generate This Map</a></p>\n</div>\n</div>\n\n<h3>Accumulated observed frequencies</h3>\n\n<div class=\"row\">\n<div class=\"col-md-4\">\n  <h4>Ames</h4>\n<p><img src=\"/plotting/auto/plot/119/network:IACLIMATE::station:IA0200::t1:32::t2:28::t3:26::t4:22.png\" class=\"img-fluid\" alt=\"autoplot\"></p>\n<p><a class=\"btn btn-sm btn-primary\" href=\"/plotting/auto/?_wait=no&q=119&network=IACLIMATE&station=IA0200&t1=32&t2=28&t3=26&t4=22\">Generate This Chart</a></p>\n</div>\n<div class=\"col-md-4\">\n  <h4>Cedar Rapids</h4>\n<p><img src=\"/plotting/auto/plot/119/network:IACLIMATE::station:IATCID::t1:32::t2:28::t3:26::t4:22.png\" class=\"img-fluid\" alt=\"autoplot\"></p>\n<p><a class=\"btn btn-sm btn-primary\" href=\"/plotting/auto/?_wait=no&q=119&network=IACLIMATE&station=IATCID&t1=32&t2=28&t3=26&t4=22\">Generate This Chart</a></p>\n</div>\n<div class=\"col-md-4\">\n  <h4>Sioux City</h4>\n<p><img src=\"/plotting/auto/plot/119/network:IACLIMATE::station:IATSUX::t1:32::t2:28::t3:26::t4:22.png\" class=\"img-fluid\" alt=\"autoplot\"></p>\n<p><a class=\"btn btn-sm btn-primary\" href=\"/plotting/auto/?_wait=no&q=119&network=IACLIMATE&station=IATSUX&t1=32&t2=28&t3=26&t4=22\">Generate This Chart</a></p>\n</div>\n</div>\n\nEOM;\n$t->render(\"single.phtml\");\n"
  },
  {
    "path": "htdocs/topics/hardiness/index.php",
    "content": "<?php\ndefine(\"IEM_APPID\", 160);\n\n// Pest DD Maps\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n\n// Get things set via CGI\n$state = substr(get_str404(\"state\", \"IA\"), 0, 2);\n\n\n$sselect = stateSelect($state, \"state\");\n\n$t = new MyView();\n$t->title = \"Winter Hardiness Maps\";\n$t->jsextra = <<<EOM\nEOM;\n$t->headextra = <<<EOM\nEOM;\n\n$img32 = sprintf(\n    \"/plotting/auto/plot/252/var:low::w:below::sector:%s::popt:contour::\" .\n    \"sday:1001::eday:0331::threshold:32.png\", $state);\n$img25 = sprintf(\n    \"/plotting/auto/plot/252/var:low::w:below::sector:%s::popt:contour::\" .\n    \"sday:1001::eday:0331::threshold:25.png\", $state);\n$img15 = sprintf(\n    \"/plotting/auto/plot/252/var:low::w:below::sector:%s::popt:contour::\" .\n    \"sday:1001::eday:0331::threshold:15.png\", $state);\n$img10 = sprintf(\n    \"/plotting/auto/plot/252/var:low::w:below::sector:%s::popt:contour::\" .\n    \"sday:1001::eday:0331::threshold:10.png\", $state);\n$img0 = sprintf(\n    \"/plotting/auto/plot/252/var:low::w:below::sector:%s::popt:contour::\" .\n    \"sday:1001::eday:0331::threshold:0.png\", $state);\n$imgn10 = sprintf(\n    \"/plotting/auto/plot/252/var:low::w:below::sector:%s::popt:contour::\" .\n    \"sday:1001::eday:0331::threshold:-10.png\", $state);\n$imgn15 = sprintf(\n    \"/plotting/auto/plot/252/var:low::w:below::sector:%s::popt:contour::\" .\n    \"sday:1001::eday:0331::threshold:-15.png\", $state);\n$imgn20 = sprintf(\n    \"/plotting/auto/plot/252/var:low::w:below::sector:%s::popt:contour::\" .\n    \"sday:1001::eday:0331::threshold:-20.png\", $state);\n$imgn30 = sprintf(\n    \"/plotting/auto/plot/252/var:low::w:below::sector:%s::popt:contour::\" .\n    \"sday:1001::eday:0331::threshold:-30.png\", $state);\n$imgn40 = sprintf(\n    \"/plotting/auto/plot/252/var:low::w:below::sector:%s::popt:contour::\" .\n    \"sday:1001::eday:0331::threshold:-40.png\", $state);\n        \n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n <li class=\"breadcrumb-item\"><a href=\"/agweather/\">Ag Weather</a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\">State Hardiness Maps</li>\n </ol>\n</nav>\n\n<p>This page generates maps showing yearly frequency of having at least one\nday with a low temperature below a given threshold.  These types of maps\ndrive hardiness recommendations.  The frequencies are based on period of record\ndata, which generally is 50-70 years or more for the sites used within the map.\nThe IEM plotting backend is <a href=\"/plotting/auto/?q=252\">autoplot 252</a>.</p>\n\n<p>Skip down to threshold:\n<a href=\"#32\">32&deg;F</a>,\n<a href=\"#25\">25&deg;F</a>,\n<a href=\"#15\">15&deg;F</a>,\n<a href=\"#10\">10&deg;F</a>,\n<a href=\"#0\">0&deg;F</a>,\n<a href=\"#n10\">-10&deg;F</a>,\n<a href=\"#n15\">-15&deg;F</a>,\n<a href=\"#n20\">-20&deg;F</a>,\n<a href=\"#n30\">-30&deg;F</a>,\n<a href=\"#n40\">-40&deg;F</a></p>\n\n<form method=\"GET\" name=\"sswitch\">\n<p>$sselect <input type=\"submit\" value=\"Switch State\"></p>\n</form>\n\n<h3>Low Temperature below 32&deg;F</h3>\n\n<p>Buckwheat, Cowpea, Millets, Mungbean, Sorghum Forage, Sorghum-Sundangrass,\nSundangrass, Sunn Hemp, Teff</p>\n\n<img src=\"$img32\" class=\"img-fluid\" alt=\"Low Temperature below 32F\" />\n\n<!-- ................................. -->\n\n<h3>Low Temperature below 25&deg;F</h3>\n\n<p>Barley Spring, Flax, Oats, Sunflower, Wheat Spring</p>\n\n<img src=\"$img25\" class=\"img-fluid\" alt=\"Low Temperature below 32F\" />\n\n<!-- ................................. -->\n\n<h3>Low Temperature below 15&deg;F</h3>\n\n<pClover Berseem, Kale, Mustard, Radish</p>\n\n<img src=\"$img15\" class=\"img-fluid\" alt=\"Low Temperature below 32F\" />\n\n<!-- ................................. -->\n\n<h3>Low Temperature below 10&deg;F</h3>\n\n<p>Clover Crimson, Turnip, Vetch Common</p>\n\n<img src=\"$img10\" class=\"img-fluid\" alt=\"Low Temperature below 10F\" />\n\n<!-- ................................. -->\n\n<h3>Low Temperature below 0&deg;F</h3>\n\n<p>Barley Winter, Rapeseed, Ryegrass Annual</p>\n\n<img src=\"$img0\" class=\"img-fluid\" alt=\"Low Temperature below 0F\" />\n\n<!-- ................................. -->\n\n<h3>Low Temperature below -10&deg;F</h3>\n\n<p>Pea Winter/Field</p>\n\n<img src=\"$imgn10\" class=\"img-fluid\" alt=\"Low Temperature below -10F\" />\n\n<!-- ................................. -->\n\n<h3>Low Temperature below -15&deg;F</h3>\n\n<p>Vetch Hairy, Wheat Winter</p>\n\n<img src=\"$imgn15\" class=\"img-fluid\" alt=\"Low Temperature below -10F\" />\n\n<!-- ................................. -->\n\n<h3>Low Temperature below -20&deg;F</h3>\n\n<p>Camelina Winter, Triticale Winter</p>\n\n<img src=\"$imgn20\" class=\"img-fluid\" alt=\"Low Temperature below -10F\" />\n\n\n<!-- ................................. -->\n\n<h3>Low Temperature below -30&deg;F</h3>\n\n<p>Cereal Rye, Clover Red</p>\n\n<img src=\"$imgn30\" class=\"img-fluid\" alt=\"Low Temperature below -10F\" />\n\n<!-- ................................. -->\n\n<h3>Low Temperature below -40&deg;F</h3>\n\n<p>Clover White</p>\n\n<img src=\"$imgn40\" class=\"img-fluid\" alt=\"Low Temperature below -10F\" />\n\nEOM;\n$t->render(\"full.phtml\");\n"
  },
  {
    "path": "htdocs/topics/pests/index.css",
    "content": "#theimage {\n  display: block;\n  background-image: url(\"/images/wait24trans.gif\");\n  background-position: center top;\n  background-repeat: no-repeat;\n  background-size: 80px 80px;\n  min-height: 100px;\n  min-width: 400px;\n}"
  },
  {
    "path": "htdocs/topics/pests/index.module.js",
    "content": "// Pest Forecasting Maps - ES Module\nimport { \n    escapeHTML, \n    requireElement, \n    getElement,\n    requireInputElement,\n    getElementValue,\n    setElementValue\n} from '/js/iemjs/domUtils.js';\n\nconst pestData = {};\npestData.seedcorn_maggot = { 'gddbase': 39, 'gddceil': 84 };\npestData.alfalfa_weevil = { 'gddbase': 48, 'gddceil': 90 };\npestData.soybean_aphid = { 'gddbase': 50, 'gddceil': 90 };\npestData.common_stalk_borer = { 'gddbase': 41, 'gddceil': 90 };\npestData.japanese_beetle = { 'gddbase': 50, 'gddceil': 90 };\npestData.western_bean_cutworm = { 'gddbase': 38, 'gddceil': 75 };\npestData.european_corn_borer = { 'gddbase': 50, 'gddceil': 86 };\n\n/**\n * Hide image loading indicator and show download links\n */\nfunction hideImageLoad() {\n    const willloadEl = requireElement('willload');\n    willloadEl.style.display = 'none';\n\n    const theImageEl = requireElement('theimage');\n    const theDataEl = requireElement('thedata');\n    const url = theImageEl.src.replace(\".png\", \"\");\n    theDataEl.innerHTML = \n        `<p>Download point data: <a href=\"${url}.txt\" class=\"btn btn-primary\">` +\n        '<i class=\"bi bi-table\" aria-hidden=\"true\"></i> As CSV</a> &nbsp;' +\n        `<a href=\"${url}.xlsx\" class=\"btn btn-primary\">` +\n        '<i class=\"bi bi-table\" aria-hidden=\"true\"></i> As Excel</a></p>';\n}\n\n/**\n * Rectify start date based on selected pest\n */\nfunction rectify_start_date(pest) {\n    let month = (pest === \"western_bean_cutworm\") ? \"03\": \"01\"; // le sigh\n    let day = \"01\";\n    if (pest === \"european_corn_borer\") {\n        month = \"05\";\n        day = \"20\";\n    }\n    // Get the year from the edate input\n    const edate = getElementValue('edate');\n    if (edate) {\n        const year = parseInt(edate.substring(0, 4), 10);\n        setElementValue('sdate', `${year}-${month}-${day}`);\n    }\n}\n\n/**\n * Update station forecast data using fetch API\n */\nasync function updateStationForecast() {\n    const stationEl = document.querySelector('select[name=\"station\"]');\n    const pestEl = document.querySelector('select[name=\"pest\"]');\n    \n    if (!stationEl) {\n        return;\n    }\n    \n    const station = escapeHTML(stationEl.value);\n    const pest = escapeHTML(pestEl.value);\n    const opts = pestData[pest];\n    const sdate = escapeHTML(getElementValue('sdate'));\n    const edate = escapeHTML(getElementValue('edate'));\n    \n    const url = `/json/climodat_dd.py?station=${station}&gddbase=${opts.gddbase}&gddceil=${opts.gddceil}&sdate=${sdate}&edate=${edate}`;\n    \n    try {\n        const response = await fetch(url);\n        const data = await response.json();\n        \n        // Update observed data\n        const stationDateEl = requireElement('station_date');\n        const stationAccumEl = requireElement('station_accum');\n        stationDateEl.textContent = `${data.sdate} to ${data.edate}`;\n        stationAccumEl.textContent = data.accum.toFixed(1);\n\n        // Update GFS forecast\n        const stationGfsDateEl = requireElement('station_gfs_date');\n        const stationGfsAccumEl = requireElement('station_gfs_accum');\n        const stationGfsTotalEl = requireElement('station_gfs_total');\n        stationGfsDateEl.textContent = `${data.gfs_sdate} to ${data.gfs_edate}`;\n        stationGfsAccumEl.textContent = `+${data.gfs_accum.toFixed(1)}`;\n        stationGfsTotalEl.textContent = (data.accum + data.gfs_accum).toFixed(1);\n\n        // Update NDFD forecast\n        const stationNdfdDateEl = requireElement('station_ndfd_date');\n        const stationNdfdAccumEl = requireElement('station_ndfd_accum');\n        const stationNdfdTotalEl = requireElement('station_ndfd_total');\n        stationNdfdDateEl.textContent = `${data.ndfd_sdate} to ${data.ndfd_edate}`;\n        stationNdfdAccumEl.textContent = `+${data.ndfd_accum.toFixed(1)}`;\n        stationNdfdTotalEl.textContent = (data.accum + data.ndfd_accum).toFixed(1);\n    } catch {\n        // Silently handle error - station forecast update failed\n    }\n}\n\n/**\n * Update the pest map image and URL\n */\nfunction updateImage() {\n    showProgressBar();\n    \n    const theImageEl = requireElement('theimage');\n    theImageEl.src = \"/images/pixel.gif\";\n    \n    const stationEl = document.querySelector('select[name=\"station\"]');\n    const pestEl = document.querySelector('select[name=\"pest\"]');\n    const networkEl = document.querySelector(\"select[name='network']\");\n    \n    const station = escapeHTML(stationEl.value);\n    const pest = escapeHTML(pestEl.value);\n\n    // Hide all the pinfo containers\n    document.querySelectorAll('.pinfo').forEach(el => {\n        el.style.display = 'none';\n    });\n\n    // Show this pest's pinfo container\n    const pestInfoEl = getElement(pest);\n    if (pestInfoEl) {\n        pestInfoEl.style.display = 'block';\n    }\n    \n    const opts = pestData[pest];\n    const sdate = escapeHTML(getElementValue('sdate'));\n    const edate = escapeHTML(getElementValue('edate'));\n    let state = networkEl ? escapeHTML(networkEl.value) : \"IA\";\n    state = (state !== undefined) ? state.substring(0, 2) : \"IA\";\n    \n    const imgurl = `/plotting/auto/plot/97/d:sector::sector:${state}::var:gdd_sum::gddbase:${opts.gddbase}::gddceil:${opts.gddceil}::date1:${sdate}::usdm:no::date2:${edate}::p:contour::cmap:RdYlBu_r::c:yes::_r:43.png`;\n    \n    theImageEl.src = imgurl;\n\n    // Update the web browser URL\n    let url = `/topics/pests/?state=${state}&pest=${pest}&sdate=${sdate}&station=${station}`;\n    // is edate_off checked?\n    const edateOffEl = requireInputElement('edate_off');\n    if (!edateOffEl.checked) {\n        url += `&edate=${edate}`;\n    }\n    window.history.pushState({}, \"\", url);\n    updateStationForecast();\n}\n\n/**\n * Show progress bar animation\n */\nfunction showProgressBar() {\n    const willloadEl = requireElement('willload');\n    willloadEl.style.display = 'block';\n    \n    let timing = 0;\n    const progressBar = setInterval(() => {\n        const willloadDisplay = getElement('willload');\n        if (timing >= 10 || (willloadDisplay && willloadDisplay.style.display === 'none')) {\n            clearInterval(progressBar);\n        }\n        const width = (timing / 10) * 100.0;\n        const timingBarEl = requireElement('timingbar');\n        timingBarEl.style.width = `${width}%`;\n        timingBarEl.setAttribute('aria-valuenow', width.toString());\n        timing = timing + 0.2;\n    }, 200);\n}\n\n/**\n * Simple date picker functionality (replacing jQuery UI datepicker)\n */\nfunction setupDatePicker(elementId, onChangeCallback) {\n    const element = requireInputElement(elementId);\n    \n    // Set basic date input properties\n    element.type = 'date';\n    element.min = '1893-01-01';\n    element.max = new Date().toISOString().split('T')[0]; // Today's date\n    \n    // Add change event listener\n    element.addEventListener('change', onChangeCallback);\n}\n\n/**\n * Setup UI event handlers\n */\nfunction setupUI() {\n    const theImageEl = requireElement('theimage');\n    theImageEl.addEventListener('load', hideImageLoad);\n    theImageEl.addEventListener('error', hideImageLoad);\n    \n    // The image may be cached and return to the user before this javascript\n    // is hit, so we do a check to see if it is indeed loaded now\n    if (theImageEl.complete) {\n        hideImageLoad();\n    }\n\n    // Setup date pickers\n    setupDatePicker('edate', updateImage);\n    setupDatePicker('sdate', updateImage);\n\n    // Setup station dropdown change handler\n    const stationEl = document.querySelector('select[name=\"station\"]');;\n    stationEl.addEventListener('change', updateStationForecast);\n}\n\n/**\n * Update pest selection and related UI\n */\nfunction updatePest() {\n    const pestEl = document.querySelector('select[name=\"pest\"]');;\n    const pest = escapeHTML(pestEl.value);\n    rectify_start_date(pest);\n    updateImage();\n}\n\n/**\n * Global function for pest updates (called from PHP-generated onchange)\n */\nwindow.updatePest = updatePest;\n\n/**\n * Initialize the application\n */\nfunction init() {\n    updateImage();\n    updateStationForecast();\n    showProgressBar();\n    setupUI();\n}\n\n// Initialize when DOM is loaded\nif (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n} else {\n    // DOM already loaded\n    init();\n}\n"
  },
  {
    "path": "htdocs/topics/pests/index.php",
    "content": "<?php\n// TODO print out dates that key thresholds are met\n// TODO add climatology to the table\ndefine(\"IEM_APPID\", 135);\n\n// Pest DD Maps\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n\n// defaults\n$year = date(\"Y\");\n// yesterday\n$day = date(\"Y-m-d\", time() - 86400);\n\n// Get things set via CGI\n$network = get_str404(\"network\", \"IACLIMATE\");\n$station = get_str404(\"station\", \"IATAME\");\n$pest = get_str404(\"pest\", \"seedcorn_maggot\");\n$sdate = get_str404(\"sdate\", \"$year-01-01\");\n$edate = get_str404(\"edate\", $day);\n$edatechecked = !array_key_exists(\"edate\", $_GET) ? \"checked\" : \"\";\n\n// Folks may have this page bookmarked and thus get a wonky combination of\n// start date and end date, rectify this\nif (!array_key_exists(\"edate\", $_GET) && array_key_exists(\"sdate\", $_GET)) {\n    $sdate = sprintf(\"%s-%s\", $year, substr($sdate, 5, 5));\n}\n\n$sselect = selectNetworkType(\"CLIMATE\", $network);\n\n$t = new MyView();\n$t->title = \"Pest Forecasting Maps\";\n$t->jsextra = <<<EOM\n<script type=\"module\" src=\"index.module.js\"></script>\nEOM;\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"index.css\" />\nEOM;\n\n// Compute a good fall Year\n$year = intval(date(\"Y\"));\n\n$ar = array(\n    \"seedcorn_maggot\" => \"Seedcorn Maggot (Delia platura)\",\n    \"alfalfa_weevil\" => \"Alfalfa Weevil (Hypera postica)\",\n    \"soybean_aphid\" => \"Soybean Aphid (Aphis glycines)\",\n    \"common_stalk_borer\" => \"Common Stalk Borer (Papaipema nebris)\",\n    \"japanese_beetle\" => \"Japanese Beetle (Popillia japonica)\",\n    \"western_bean_cutworm\" => \"Western Bean Cutworm (Striacosta albicosta)\",\n    \"european_corn_borer\" => \"European Corn Borer (Ostrinia nubilalis)\",\n);\n$pselect = make_select(\"pest\", $pest, $ar, \"updatePest\", \"form-control\");\n$nselect = networkSelect($network, $station, array(), \"station\", TRUE);\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n <li class=\"breadcrumb-item\"><a href=\"/agweather/\">Ag Weather</a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\">Pest Forecasting Maps</li>\n </ol>\n</nav>\n\n<p>This page generates degree day maps for a selected pest. The pest provides\nthe base and ceiling values used in the degree day calculation. The IEM's\n<a href=\"/climodat/\">Climodat Stations</a> are used for the daily high and\nlow temperatures. <a href=\"/plotting/auto/?q=97\">IEM Autoplot 97</a> is\nthe backend that generates the maps/data here.</p>\n\n<form method=\"GET\" name=\"sswitch\">\n<p>$sselect <input type=\"submit\" value=\"Switch State\"></p>\n</form>\n\n<form method=\"GET\" name=\"main\">\n\n<div class=\"row\">\n<div class=\"col-md-6\">\n<label>Select Pest</label>\n<br />{$pselect}\n</div>\n<div class=\"col-md-3\">\n<label for=\"sdate\">Start Date for Selected Pest</label>\n<input type=\"text\" name=\"sdate\" id=\"sdate\" value=\"$sdate\" class=\"form-control\">\n</div>\n<div class=\"col-md-3\">\n<input type=\"checkbox\" name=\"edate_off\" id=\"edate_off\" value=\"1\" $edatechecked>\n<label for=\"edate_off\">Default to Latest End Date</label>\n<input type=\"text\" name=\"edate\" id=\"edate\" value=\"$edate\" class=\"form-control\" placeholder=\"End Date\">\n</div>\n\n</div><!-- end row -->\n\n<div id=\"seedcorn_maggot\" class=\"pinfo\" style=\"display: none;\">\n<h3>Seedcorn Maggot (Delia platura)</h3>\n<p>Key Degree Day Levels</p>\n<ul>\n <li><strong>January 1:</strong> Start Date</li>\n <li><strong>360:</strong> Peak adult emergence (1st generation) and egg-laying</li>\n <li><strong>781:</strong> Pupation, \"fly-free\" period begins</li>\n </ul>\n\n<p><a href=\"https://crops.extension.iastate.edu/encyclopedia/seedcorn-maggot\">Learn more here!</a></p>\n</div>\n\n<div id=\"alfalfa_weevil\" class=\"pinfo\" style=\"display: none;\">\n<h3>Alfalfa Weevil (Hypera postica)</h3>\n<p>Key Degree Day Levels:</p>\n<ul>\n <li><strong>January 1:</strong> Start Date</li>\n <li><strong>300:</strong> Egg hatch</li>\n <li><strong>575:</strong> Peak larval feeding</li>\n</ul>\n\n<p><a href=\"https://crops.extension.iastate.edu/encyclopedia/alfalfa-weevil\">Learn more here!</a></p>\n</div>\n\n<div id=\"soybean_aphid\" class=\"pinfo\" style=\"display: none;\">\n<h3>Soybean Aphid (Aphis glycines)</h3>\n<p>Key Degree Day Levels:</p>\n<ul>\n <li><strong>January 1:</strong> Start Date</li>\n <li><strong>150:</strong> Egg hatch</li>\n</ul>\n\n<p><a href=\"https://crops.extension.iastate.edu/encyclopedia/soybean-aphid\">Learn more here!</a></p>\n</div>\n\n<div id=\"common_stalk_borer\" class=\"pinfo\" style=\"display: none;\">\n<h3>Common Stalk Borer (Papaipema nebris)</h3>\n<p>Key Degree Day Levels:</p>\n<ul>\n <li><strong>January 1:</strong> Start Date</li>\n <li><strong>1,400</strong>: Larvae begin moving to cornfields</li>\n <li><strong>1,700</strong>: Peak larval movement</li>\n</ul>\n\n<p><a href=\"https://crops.extension.iastate.edu/encyclopedia/stalk-borer\">Learn more here!</a></p>\n</div>\n\n<div id=\"japanese_beetle\" class=\"pinfo\" style=\"display: none;\">\n<h3>Japanese Beetle (Popillia japonica)</h3>\n<p>Key Degree Day Levels:</p>\n<ul>\n <li><strong>January 1:</strong> Start Date</li>\n <li><strong>1,030</strong>: Adults begin emerging</li>\n <li><strong>2,150</strong>: Adults done emerging</li>\n</ul>\n\n<p><a href=\"https://crops.extension.iastate.edu/encyclopedia/japanese-beetle-corn-and-soybean\">Learn more here!</a></p>\n</div>\n\n<div id=\"western_bean_cutworm\" class=\"pinfo\" style=\"display: none;\">\n<h3>Western Bean Cutworm (Striacosta albicosta)</h3>\n<p>Key Degree Day Levels:</p>\n<ul>\n <li><strong>March 1:</strong> Start Date</li>\n <li><strong>2,577</strong>: 25% moth flight</li>\n</ul>\n\n<p><a href=\"https://cropwatch.unl.edu/2021/degree-days-prediction-western-bean-cutworm-flight\">Learn more here!</a></p>\n</div>\n\n<div id=\"european_corn_borer\" class=\"pinfo\" style=\"display: none;\">\n<h3>European Corn Borer (Ostrinia nubilalis)</h3>\n<p>Key Degree Day Levels:</p>\n<ul>\n <li><strong>May 20:</strong> Approximate Start Date (actual start date is first spring moth capture)</li>\n <li><strong>212</strong>: 1st generation egg hatch</li>\n <li><strong>1,192</strong>: Egg-laying occurs</li>\n</ul>\n\n<p><a href=\"https://crops.extension.iastate.edu/encyclopedia/european-corn-borer\">Learn more here!</a></p>\n<p></p>\n</div>\n\n\n<div id=\"willload\" style=\"height: 200px;\">\n<p><span class=\"bi bi-arrow-down\" aria-hidden=\"true\"></span>\nThis application takes about 10 seconds to generate a map.\nHold on for the map is generating now!</p>\n<div class=\"progress\">\n    <div id=\"timingbar\" class=\"progress-bar bg-warning progress-bar-striped progress-bar-animated\" role=\"progressbar\"\n        aria-valuenow=\"0\" aria-valuemin=\"0\" aria-valuemax=\"10\"\n        style=\"width: 0%;\"></div>\n</div>\n</div>\n<br clear=\"all\" />\n\n<div class=\"row\">\n<div class=\"col-md-9\">\n<img id=\"theimage\" src=\"/images/pixel.gif\" class=\"img-fluid\">\n<div id=\"thedata\"></div>\n</div>\n\n<div class=\"col-md-3\">\n<strong>Point Data &amp; Forecast</strong>\n\n<p>Select from the available stations for the observed data and a point\nforecast based on the <a href=\"https://digital.weather.gov/\">NWS NDFD</a>\nand <a href=\"https://mag.ncep.noaa.gov/\">NWS GFS Model</a>.</p>\n\n<label>Select Station</label>\n<br />{$nselect}\n\n<table class=\"table table-striped\">\n<tbody>\n<tr><th colspan=\"2\">Observed <span id=\"station_date\"></span></th></tr>\n<tr><th>DD Accum:</th><td><span id=\"station_accum\"></span></td></tr>\n\n<tr><th colspan=\"2\">NWS NDFD 7 Day Forecast\n<br /><span id=\"station_ndfd_date\"></span></th></tr>\n<tr><th>DD Accum:</th><td><span id=\"station_ndfd_accum\"></span></td></tr>\n<tr><th>DD Total:</th><td><span id=\"station_ndfd_total\"></span></td></tr>\n\n<tr><th colspan=\"2\">NWS GFS 14 Day Forecast\n<br /><span id=\"station_gfs_date\"></span></th></tr>\n<tr><th>DD Accum:</th><td><span id=\"station_gfs_accum\"></span></td></tr>\n<tr><th>DD Total:</th><td><span id=\"station_gfs_total\"></span></td></tr>\n\n</tbody>\n</table>\n</div>\n</div>\n\n</form>\n\n\nEOM;\n$t->render(\"full.phtml\");\n"
  },
  {
    "path": "htdocs/uscrn/index.phtml",
    "content": "<?php \nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/myview.php\";\n$t = new MyView();\n\n$t->title = \"US Climate Reference Network (USCRN)\";\n\n$t->content = <<<EOM\n\n<h3>United States Climate Reference Network (USCRN)</h3>\n\n<p>The IEM does a bit of processing of data from this network.  The upstream\n<a href=\"https://www.ncei.noaa.gov/access/crn/\">NCEI website</a> is the\nprimary source of data and information about the network.</p>\n\n<h4>Available Tools</h4>\n<ul>\n    <li><a href=\"/current/uscrn.phtml\">Sortable Currents</a></li>\n    <li><a href=\"/request/uscrn.php\">Download</a></li>\n</ul>\nEOM;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/vtec/emergencies.css",
    "content": "#map {\n    position: relative;\n    width: 100%;\n    height: 400px;\n    min-height: 300px;\n}\n\n/* Alert enhancements */\n.alert {\n    border: none;\n    border-radius: 0.5rem;\n}\n\n.alert-info {\n    background-color: #e7f3ff;\n    border-left: 4px solid #0d6efd;\n}\n\n.alert-secondary {\n    background-color: #f8f9fa;\n    border-left: 4px solid #6c757d;\n}\n\n.alert-primary {\n    background-color: #e7f1ff;\n    border-left: 4px solid #0d6efd;\n}\n\n/* Card enhancements */\n.card {\n    transition: box-shadow 0.3s ease;\n}\n\n.card:hover {\n    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.card-header {\n    font-weight: 500;\n}\n\n/* Breadcrumb styling */\n.breadcrumb {\n    background-color: transparent;\n    padding: 0;\n    margin-bottom: 1rem;\n}\n\n.breadcrumb-item a {\n    color: #0d6efd;\n    text-decoration: none;\n}\n\n.breadcrumb-item a:hover {\n    color: #0a58ca;\n    text-decoration: underline;\n}\n\n/* Tabulator customizations */\n.tabulator {\n    border: none;\n    border-radius: 0.375rem;\n    overflow: hidden;\n}\n\n.tabulator .tabulator-header {\n    background-color: #f8f9fa;\n    border-bottom: 2px solid #dee2e6;\n}\n\n.tabulator .tabulator-header .tabulator-col {\n    background-color: #f8f9fa;\n    border-right: 1px solid #dee2e6;\n}\n\n.tabulator .tabulator-header .tabulator-col:last-child {\n    border-right: none;\n}\n\n.tabulator .tabulator-tableholder .tabulator-table .tabulator-row {\n    border-bottom: 1px solid #dee2e6;\n}\n\n.tabulator .tabulator-tableholder .tabulator-table .tabulator-row:hover {\n    background-color: #f8f9fa;\n}\n\n.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-row-even {\n    background-color: #fff;\n}\n\n.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-row-odd {\n    background-color: #f8f9fa;\n}\n\n/* Links in table */\n.tabulator .tabulator-cell a {\n    color: #0d6efd;\n    text-decoration: none;\n}\n\n.tabulator .tabulator-cell a:hover {\n    color: #0a58ca;\n    text-decoration: underline;\n}\n\n#filter-title {\n    text-align: center;\n    margin: 10px 0;\n    font-weight: bold;\n}\n\n/* Initially show the table automatically */\n#emergencies-table {\n    display: block;\n}\n\n/* Remove indentation from popup lists */\n.popover .panel-body ul {\n    padding-left: 0;\n    list-style-type: none;\n    margin: 0;\n}\n\n/* Custom vanilla JS popup styles */\n.feature-popup {\n    position: absolute;\n    z-index: 1000;\n    background: white;\n    border: 1px solid #ccc;\n    border-radius: 4px;\n    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);\n    padding: 5px;\n    min-width: 250px;\n    max-width: 350px;\n    cursor: move; /* Indicate draggable */\n}\n\n.feature-popup ul {\n    padding-left: 0;\n    list-style-type: none;\n    margin: 0;\n}\n\n.feature-popup .panel-heading {\n    border-bottom: 1px solid #eee;\n    margin-bottom: 5px;\n    padding-bottom: 3px;\n}\n\n.feature-popup .panel-title {\n    font-size: 14px;\n    font-weight: bold;\n    margin: 0 0 3px 0;\n}\n\n.feature-popup .panel-body {\n    padding: 5px 5px 0 5px;\n}\n\n.feature-popup .panel-default {\n    margin-bottom: 0;\n}\n\n.feature-popup li {\n    margin-bottom: 8px;\n}\n\n.feature-popup li:last-child {\n    margin-bottom: 0;\n}\n\n.popup-close-btn {\n    position: absolute;\n    top: 2px;\n    right: 5px;\n    border: none;\n    background: transparent;\n    font-size: 16px;\n    cursor: pointer;\n    padding: 0;\n    line-height: 1;\n    color: #666;\n}\n"
  },
  {
    "path": "htdocs/vtec/emergencies.js",
    "content": "/* global moment, ol, Tabulator */\nlet olmap = null;\nlet elayer = null;\nlet emergenciesTable = null;\nconst tornadoFeatures = [];\nconst flashFloodFeatures = [];\nconst tableData = [];\n\nconst sbwStyle = [new ol.style.Style({\n    stroke: new ol.style.Stroke({\n        color: '#FFF',\n        width: 4.5\n    })\n}), new ol.style.Style({\n    stroke: new ol.style.Stroke({\n        color: '#319FD3',\n        width: 3\n    }),\n    fill: new ol.style.Fill({\n        color: '#319FD330'\n    })\n})\n];\nconst sbwLookup = {\n    \"TO\": '#FF0000',\n    \"FF\": '#00FF00'\n};\n\nfunction toggleFeatures(type, show) {\n    const source = elayer.getSource();\n    if (type === \"TO\") {\n        tornadoFeatures.forEach((feature) => {\n            if (show) {\n                source.addFeature(feature);\n            } else {\n                source.removeFeature(feature);\n            }\n        });\n    } else if (type === \"FF\") {\n        flashFloodFeatures.forEach((feature) => {\n            if (show) {\n                source.addFeature(feature);\n            } else {\n                source.removeFeature(feature);\n            }\n        });\n    }\n}\n\nfunction load_data() {\n    // Use fetch instead of jQuery Ajax\n    fetch(\"/api/1/nws/emergencies.geojson\")\n        .then(response => response.json())\n        .then(geodata => {\n            const format = new ol.format.GeoJSON({\n                featureProjection: \"EPSG:3857\"\n            });\n            const vectorSource = new ol.source.Vector({\n                features: format.readFeatures(geodata)\n            });\n            elayer.setSource(vectorSource);\n\n            vectorSource.getFeatures().forEach((feature) => {\n                const prop = feature.getProperties();\n                if (prop.phenomena === \"TO\") {\n                    tornadoFeatures.push(feature);\n                } else if (prop.phenomena === \"FF\") {\n                    flashFloodFeatures.push(feature);\n                }\n            });\n\n            // Populate table data array for Tabulator\n            tableData.length = 0; // Clear existing data\n            geodata.features.forEach(feat => {\n                const prop = feat.properties;\n                const lbl = (prop.phenomena === \"TO\") ? \"Tornado\" : \"Flash Flood\";\n                tableData.push({\n                    year: prop.year,\n                    wfo: prop.wfo,\n                    states: prop.states,\n                    eventid: prop.eventid,\n                    uri: prop.uri,\n                    event: `${lbl} Warning`,\n                    issue: prop.utc_issue,\n                    expire: prop.utc_expire\n                });\n            });\n\n            // If table is initialized, update its data\n            if (emergenciesTable) {\n                emergenciesTable.setData(tableData);\n            }\n        })\n        .catch(() => {\n            // Handle errors\n            document.getElementById('thetable').innerHTML = '<div class=\"alert alert-danger\">Error loading data</div>';\n        });\n}\nfunction featureHTML(features, lalo) {\n    const html = [];\n    \n    // Only add title if there's more than one feature\n    if (features.length > 1) {\n        html.push(\n            '<div class=\"card\">',\n            '<div class=\"card-header\">',\n            `<h3 class=\"card-title\">Emergencies List @${lalo[0].toFixed(3)}E ${lalo[1].toFixed(3)}N</h3>`,\n            '</div>'\n        );\n    } else {\n        html.push(\n            '<div class=\"card\">'\n        );\n    }\n    \n    html.push('<div class=\"card-body\"><ul>');\n    \n    features.forEach(feature => {\n        const utcTime = moment.utc(feature.get('utc_issue'));\n        const localTime = moment(utcTime).local();\n        const dtUTC = utcTime.format('HHmm [UTC]');\n        const dtLocal = localTime.format('MMM Do, YYYY h:mm A');\n        const lbl = (feature.get(\"phenomena\") === \"TO\") ? \"Tornado\" : \"Flash Flood\";\n        html.push(\n            `<li><strong>${dtLocal} [${dtUTC}]</strong><br />` +\n            `${feature.get('wfo')}: <a href=\"${feature.get('uri')}\">${lbl} Warning #${feature.get('eventid')}</a></li>`\n        );\n    });\n    html.push('</ul></div></div>');\n    return html.join('\\n');\n}\nfunction init_map() {\n    elayer = new ol.layer.Vector({\n        title: 'Emergencies',\n        style: (feature) => {\n            sbwStyle[1].getStroke().setColor(sbwLookup[feature.get('phenomena')]);\n            sbwStyle[1].getFill().setColor(`${sbwLookup[feature.get('phenomena')]}30`);\n            return sbwStyle;\n        },\n        source: new ol.source.Vector({\n            format: new ol.format.GeoJSON()\n        })\n    });\n    olmap = new ol.Map({\n        target: 'map',\n        view: new ol.View({\n            enableRotation: false,\n            center: ol.proj.transform([-94.5, 37.1], 'EPSG:4326', 'EPSG:3857'),\n            zoom: 4\n        }),\n        layers: [\n            new ol.layer.Tile({\n                title: 'OpenStreetMap',\n                visible: true,\n                source: new ol.source.OSM()\n            }),\n            elayer\n        ]\n    });\n\n    // Handle map clicks with vanilla JS\n    olmap.on('click', (evt) => {\n        const features = [];\n        olmap.forEachFeatureAtPixel(evt.pixel, (feature) => {\n            features.push(feature);\n        });\n        \n        if (features.length > 0) {\n            const coordinates = features[0].getGeometry().getFirstCoordinate();\n            const lalo = ol.proj.transform(coordinates, 'EPSG:3857', 'EPSG:4326');\n            const content = featureHTML(features, lalo);\n            \n            // Use vanilla JS popup\n            createPopup(content, coordinates);\n            \n            // Prevent event propagation to document\n            evt.stopPropagation();\n        }\n    });\n}\n\nlet popups = [];\n\nfunction createPopup(content, coordinates) {\n    // Create popup container\n    const popup = document.createElement('div');\n    popup.className = 'feature-popup';\n    popup.innerHTML = content;\n    \n    // Add to document first so we can get its dimensions\n    document.body.appendChild(popup);\n    \n    // Position the popup after it's in the DOM so we have dimensions\n    const mapEl = document.getElementById('map');\n    const mapRect = mapEl.getBoundingClientRect();\n    const point = olmap.getPixelFromCoordinate(coordinates);\n    \n    if (point) {\n        // Apply window scroll offset for fixed positioning\n        const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;\n        const scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n        \n        popup.style.position = 'absolute';\n        popup.style.left = `${(mapRect.left + point[0] - (popup.offsetWidth / 2) + scrollLeft)}px`;\n        popup.style.top = `${(mapRect.top + point[1] - popup.offsetHeight - 15 + scrollTop)}px`;\n    } else {\n        // Fallback positioning if point calculation fails\n        popup.style.position = 'fixed';\n        popup.style.left = '50%';\n        popup.style.top = '50%';\n        popup.style.transform = 'translate(-50%, -50%)';\n    }\n    \n    // Add close button\n    const closeBtn = document.createElement('button');\n    closeBtn.innerHTML = '×';\n    closeBtn.className = 'popup-close-btn';\n    closeBtn.onclick = function(e) {\n        e.stopPropagation();\n        document.body.removeChild(popup);\n        // Remove this popup from our array\n        popups = popups.filter(p => p !== popup);\n    };\n    popup.appendChild(closeBtn);\n    \n    // Make popup draggable\n    makeDraggable(popup);\n    \n    // Track this popup in our array\n    popups.push(popup);\n    \n    return popup;\n}\n\n// Draggable functionality\nfunction makeDraggable(element) {\n    let pos1 = 0;\n    let pos2 = 0;\n    let pos3 = 0;\n    let pos4 = 0;\n    \n    element.onmousedown = dragMouseDown;\n    \n    function dragMouseDown(e) {\n        e = e || window.event;\n        e.preventDefault();\n        \n        // Don't start drag if clicking on a button, link, or close button\n        if (e.target.tagName === 'BUTTON' || e.target.tagName === 'A' || \n            e.target.className === 'popup-close-btn') {\n            return;\n        }\n        \n        // Get the mouse cursor position at startup\n        pos3 = e.clientX;\n        pos4 = e.clientY;\n        \n        // Bring this popup to the front\n        element.style.zIndex = 1001;\n        popups.forEach(p => {\n            if (p !== element) {p.style.zIndex = 1000;}\n        });\n        \n        document.onmouseup = closeDragElement;\n        document.onmousemove = elementDrag;\n    }\n    \n    function elementDrag(e) {\n        e = e || window.event;\n        e.preventDefault();\n        \n        // Calculate the new cursor position\n        pos1 = pos3 - e.clientX;\n        pos2 = pos4 - e.clientY;\n        pos3 = e.clientX;\n        pos4 = e.clientY;\n        \n        // Set the element's new position\n        element.style.top = `${element.offsetTop - pos2}px`;\n        element.style.left = `${element.offsetLeft - pos1}px`;\n    }\n    \n    function closeDragElement() {\n        // Stop moving when mouse button is released\n        document.onmouseup = null;\n        document.onmousemove = null;\n    }\n}\n\nfunction applyDateFilter() {\n    let start = document.getElementById('startdate').value;\n    let end = document.getElementById('enddate').value;\n    if (start) {\n        start = moment.utc(start, 'YYYY-MM-DD');\n    }\n    if (end) {\n        end = moment.utc(end, 'YYYY-MM-DD').endOf('day');\n    }\n    if (start === null || end === null) {\n        // If either date is null, we can't apply the filter\n        return;\n    }\n\n    // Update the filter title\n    const filterTitle = document.getElementById('filter-title');\n    const formattedStart = moment.utc(start).format('MMMM D, YYYY');\n    const formattedEnd = moment.utc(end).format('MMMM D, YYYY');\n    filterTitle.textContent = `Emergencies from ${formattedStart} to ${formattedEnd}`;\n\n    const source = elayer.getSource();\n    source.clear();\n\n    function isFeatureValidForDateRange(feature) {\n        const issue = moment.utc(feature.get('utc_issue'));\n        return start.isBefore(issue) && end.isAfter(issue);\n    }\n\n    function isToggleCheckedForType(type) {\n        if (type === \"TO\") {\n            const tornadoToggle = document.getElementById('toggleTornado');\n            return tornadoToggle?.checked;\n        } else if (type === \"FF\") {\n            const flashFloodToggle = document.getElementById('toggleFlashFlood');\n            return flashFloodToggle?.checked;\n        }\n        return false;\n    }\n    \n    const addFeatureIfValid = function(feature, type) {\n        if (isFeatureValidForDateRange(feature) && isToggleCheckedForType(type)) {\n            source.addFeature(feature);\n        }\n    };\n    \n    tornadoFeatures.forEach(f => addFeatureIfValid(f, \"TO\"));\n    flashFloodFeatures.forEach(f => addFeatureIfValid(f, \"FF\"));\n}\n\nfunction initTable() {\n    emergenciesTable = new Tabulator(\"#emergencies-table\", {\n        data: tableData,\n        layout: \"fitColumns\",\n        responsiveLayout: \"collapse\",\n        pagination: \"local\",\n        paginationSize: 25,\n        paginationSizeSelector: [10, 25, 50, 100],\n        movableColumns: true,\n        resizableColumns: true,\n        tooltips: true,\n        columns: [\n            {\n                title: \"Year\",\n                field: \"year\",\n                width: 80,\n                sorter: \"number\",\n                headerFilter: \"input\"\n            },\n            {\n                title: \"WFO\",\n                field: \"wfo\",\n                width: 80,\n                sorter: \"string\",\n                headerFilter: \"input\"\n            },\n            {\n                title: \"State(s)\",\n                field: \"states\",\n                width: 120,\n                sorter: \"string\",\n                headerFilter: \"input\"\n            },\n            {\n                title: \"Event ID\",\n                field: \"eventid\",\n                width: 120,\n                sorter: \"number\",\n                formatter(cell) {\n                    const data = cell.getRow().getData();\n                    return `<a href=\"${data.uri}\" target=\"_blank\">${data.eventid}</a>`;\n                }\n            },\n            {\n                title: \"Event\",\n                field: \"event\",\n                minWidth: 150,\n                sorter: \"string\",\n                headerFilter: \"input\"\n            },\n            {\n                title: \"Issue\",\n                field: \"issue\",\n                width: 180,\n                sorter: \"datetime\",\n                sorterParams: {\n                    format: \"YYYY-MM-DD HH:mm\"\n                }\n            },\n            {\n                title: \"Expire\",\n                field: \"expire\",\n                width: 180,\n                sorter: \"datetime\",\n                sorterParams: {\n                    format: \"YYYY-MM-DD HH:mm\"\n                }\n            }\n        ]\n    });\n}\n\nfunction init_ui() {\n    // Initialize table immediately and show it\n    initTable();\n    \n    // Hide the placeholder since table will be visible\n    const placeholder = document.querySelector('.table-placeholder');\n    if (placeholder) {\n        placeholder.style.display = 'none';\n    }\n    \n    // Hide the \"Make Fancy\" button since table is already interactive\n    const makeFancyBtn = document.getElementById('makefancy');\n    if (makeFancyBtn) {\n        makeFancyBtn.style.display = 'none';\n    }\n\n    // Set default values for date inputs\n    const defaultStartDate = '1999-05-01';\n    const tomorrow = moment().add(1, 'days').format('YYYY-MM-DD');\n    document.getElementById('startdate').value = defaultStartDate;\n    document.getElementById('enddate').value = tomorrow;\n\n    const controls = '<div>' +\n        '<label><input type=\"checkbox\" id=\"toggleTornado\" checked /> Show <span style=\"color: #FF0000; font-weight: bold;\">■</span> Tornado Emergencies</label>' +\n        '<br /><label><input type=\"checkbox\" id=\"toggleFlashFlood\" checked /> Show <span style=\"color: #00FF00; font-weight: bold;\">■</span> Flash Flood Emergencies</label>' +\n        '</div>';\n    document.getElementById('map').insertAdjacentHTML('beforebegin', controls);\n\n    document.getElementById('toggleTornado').addEventListener('change', (e) => {\n        toggleFeatures(\"TO\", e.target.checked);\n    });\n\n    document.getElementById('toggleFlashFlood').addEventListener('change', (e) => {\n        toggleFeatures(\"FF\", e.target.checked);\n    });\n\n    document.getElementById('applyFilter').addEventListener('click', applyDateFilter);\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    init_map();\n    init_ui();\n    load_data();\n    // Apply the default date filter on initial load\n    applyDateFilter();\n});"
  },
  {
    "path": "htdocs/vtec/emergencies.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 120);\n$OL = \"10.7.0\";\n\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/forms.php\";\n\n$t = new MyView();\n$t->title = \"Tornado + Flash Flood Emergencies Listing\";\n$t->headextra = <<<EOM\n<link type=\"text/css\" href=\"https://unpkg.com/tabulator-tables@6.3.1/dist/css/tabulator_bootstrap5.min.css\" rel=\"stylesheet\" />\n<link rel='stylesheet' href=\"/vendor/openlayers/{$OL}/ol.css\" type='text/css'>\n<link type=\"text/css\" href=\"/vendor/openlayers/{$OL}/ol-layerswitcher.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"emergencies.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator.min.js\"></script>\n<script src=\"/vendor/moment/2.13.0/moment.min.js\"></script>\n<script src='/vendor/openlayers/{$OL}/ol.js'></script>\n<script src='/vendor/openlayers/{$OL}/ol-layerswitcher.js'></script>\n<script src=\"emergencies.js\"></script>\nEOM;\n\n\n$t->content = <<<EOM\n<div class=\"container-fluid\">\n    <div class=\"row\">\n        <div class=\"col-12\">\n            <nav aria-label=\"breadcrumb\">\n                <ol class=\"breadcrumb\">\n                    <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Resources</a></li>\n                    <li class=\"breadcrumb-item active\" aria-current=\"page\">Tornado + Flash Flood Emergencies</li>\n                </ol>\n            </nav>\n        </div>\n    </div>\n\n    <div class=\"row\">\n        <div class=\"col-12\">\n            <h3>NWS Tornado + Flash Flood Emergencies</h3>\n            <div class=\"alert alert-info\" role=\"alert\">\n                <h4 class=\"alert-heading\"><i class=\"bi bi-info-circle\"></i> About Emergency Warnings</h4>\n                <p>This page presents the current <strong>unofficial</strong> IEM accounting of Tornado and Flash Flood Emergencies issued by the NWS. If you find any discrepancies, please <a href=\"/info/contacts.php\" class=\"alert-link\">let us know</a>!</p>\n                <hr>\n                <p class=\"mb-0\">You may wonder how events prior to the implementation of VTEC have eventids. These were retroactively generated and assigned by the IEM.</p>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"row mb-3\">\n        <div class=\"col-md-6\">\n            <div class=\"alert alert-secondary\" role=\"alert\">\n                <h6 class=\"alert-heading\"><i class=\"bi bi-link-45deg\"></i> External Resources</h6>\n                <p class=\"mb-2\">Link to <a href=\"https://en.wikipedia.org/wiki/List_of_United_States_tornado_emergencies\" class=\"alert-link\" target=\"_blank\">Wikipedia List of United States tornado emergencies</a></p>\n                <p class=\"mb-0\">Data available via <a href=\"/api/1/docs#/vtec/service_nws_emergencies__fmt__get\" class=\"alert-link\">IEM webservice</a>: <code>{$EXTERNAL_BASEURL}/api/1/nws/emergencies.geojson</code></p>\n            </div>\n        </div>\n        <div class=\"col-md-6\">\n            <div class=\"alert alert-primary\" role=\"alert\">\n                <h6 class=\"alert-heading\"><i class=\"bi bi-collection\"></i> Related Resources</h6>\n                <div class=\"d-flex gap-2 flex-wrap\">\n                    <a class=\"btn btn-sm btn-outline-primary\" href=\"/vtec/pds.php\">PDS Warnings</a>\n                    <a class=\"btn btn-sm btn-outline-primary\" href=\"/nws/pds_watches.php\">SPC PDS Watches</a>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"row mb-4\">\n        <div class=\"col-12\">\n            <div class=\"card border-0 shadow-sm\">\n                <div class=\"card-header bg-primary text-white\">\n                    <h5 class=\"card-title mb-0\"><i class=\"bi bi-calendar-date\"></i> Date Filter</h5>\n                </div>\n                <div class=\"card-body\">\n                    <div class=\"row g-3\">\n                        <div class=\"col-md-4\">\n                            <label for=\"startdate\" class=\"form-label\">Start Date:</label>\n                            <input type=\"date\" class=\"form-control\" id=\"startdate\" />\n                        </div>\n                        <div class=\"col-md-4\">\n                            <label for=\"enddate\" class=\"form-label\">End Date:</label>\n                            <input type=\"date\" class=\"form-control\" id=\"enddate\" />\n                        </div>\n                        <div class=\"col-md-4 d-flex align-items-end\">\n                            <button class=\"btn btn-primary\" id=\"applyFilter\">\n                                <i class=\"bi bi-funnel\"></i> Apply Filter\n                            </button>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"row mb-3\">\n        <div class=\"col-12\">\n            <h4 id=\"filter-title\" class=\"text-muted\"></h4>\n        </div>\n    </div>\n\n    <div class=\"row mb-4\">\n        <div class=\"col-12\">\n            <div class=\"card border-0 shadow-sm\">\n                <div class=\"card-header bg-success text-white\">\n                    <h5 class=\"card-title mb-0\"><i class=\"bi bi-geo-alt\"></i> Interactive Map</h5>\n                </div>\n                <div class=\"card-body p-0\">\n                    <div id=\"map\" style=\"height: 400px;\"></div>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"row\">\n        <div class=\"col-12\">\n            <div class=\"card border-0 shadow-sm\">\n                <div class=\"card-header bg-info text-white\">\n                    <h5 class=\"card-title mb-0\"><i class=\"bi bi-table\"></i> Emergency Events Data</h5>\n                </div>\n                <div class=\"card-body\">\n                    <div id=\"thetable\">\n                        <div id=\"emergencies-table\"></div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\nEOM;\n$t->render(\"full.phtml\");\n"
  },
  {
    "path": "htdocs/vtec/events.css",
    "content": "/* VTEC Events Page Styles */\n\n/* Form visibility helpers */\n#wfo-select-container, #state-select-container {\n    transition: opacity 0.3s ease;\n}\n\n/* API URL input styling */\n#api-url {\n    font-size: 0.875rem;\n    background-color: #f8f9fa;\n}\n\n/* Loading indicator */\n#loading-indicator {\n    padding: 2rem;\n}\n\n/* Error message styling */\n#error-message {\n    margin-top: 1rem;\n}\n\n/* Event count badge */\n#event-count {\n    font-size: 0.875rem;\n    font-weight: 500;\n}\n\n/* Download buttons */\n#download-buttons {\n    gap: 0.5rem;\n}\n\n/* Tabulator customizations */\n.tabulator {\n    border: none;\n    border-radius: 0.375rem;\n    overflow: hidden;\n}\n\n.tabulator .tabulator-header {\n    background-color: #f8f9fa;\n    border-bottom: 2px solid #dee2e6;\n}\n\n.tabulator .tabulator-header .tabulator-col {\n    background-color: #f8f9fa;\n    border-right: 1px solid #dee2e6;\n}\n\n.tabulator .tabulator-header .tabulator-col:last-child {\n    border-right: none;\n}\n\n.tabulator .tabulator-tableholder .tabulator-table .tabulator-row {\n    border-bottom: 1px solid #dee2e6;\n}\n\n.tabulator .tabulator-tableholder .tabulator-table .tabulator-row:hover {\n    background-color: #f8f9fa;\n}\n\n.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-row-even {\n    background-color: #fff;\n}\n\n.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-row-odd {\n    background-color: #f8f9fa;\n}\n\n/* Links in table */\n.tabulator .tabulator-cell a {\n    color: #0d6efd;\n    text-decoration: none;\n}\n\n.tabulator .tabulator-cell a:hover {\n    color: #0a58ca;\n    text-decoration: underline;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n    .tabulator .tabulator-header {\n        font-size: 0.875rem;\n    }\n    \n    .tabulator .tabulator-cell {\n        font-size: 0.875rem;\n    }\n    \n    #download-buttons {\n        flex-direction: column;\n    }\n    \n    #download-buttons .btn {\n        margin-bottom: 0.5rem;\n    }\n    \n    #download-buttons .btn:last-child {\n        margin-bottom: 0;\n    }\n}\n\n/* Card enhancements */\n.card {\n    transition: box-shadow 0.3s ease;\n}\n\n.card:hover {\n    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n/* Form card styling */\n.card-header {\n    font-weight: 500;\n}\n\n.form-check-label {\n    font-weight: 500;\n}\n\n.form-check-label i {\n    margin-right: 0.5rem;\n}\n\n/* Alert enhancements */\n.alert {\n    border: none;\n    border-radius: 0.5rem;\n}\n\n.alert-info {\n    background-color: #e7f3ff;\n    border-left: 4px solid #0d6efd;\n}\n\n.alert-secondary {\n    background-color: #f8f9fa;\n    border-left: 4px solid #6c757d;\n}\n\n.alert-warning {\n    background-color: #fff3cd;\n    border-left: 4px solid #ffc107;\n}\n\n.alert-danger {\n    background-color: #f8d7da;\n    border-left: 4px solid #dc3545;\n}\n\n/* Breadcrumb styling */\n.breadcrumb {\n    background-color: transparent;\n    padding: 0;\n    margin-bottom: 1rem;\n}\n\n.breadcrumb-item a {\n    color: #0d6efd;\n    text-decoration: none;\n}\n\n.breadcrumb-item a:hover {\n    color: #0a58ca;\n    text-decoration: underline;\n}\n"
  },
  {
    "path": "htdocs/vtec/events.module.js",
    "content": "import { TabulatorFull as Tabulator } from 'https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator_esm.min.js';\nimport { vtec_phenomena_dict, vtec_significance_dict } from '/js/iemjs/iemdata.js';\nimport { requireElement } from '/js/iemjs/domUtils.js';\n\nfunction updateEventCount(count) {\n    const countElement = requireElement('#event-count');\n    countElement.textContent = `${count} Events`;\n}\n\nfunction updateApiUrlDisplay(apiUrl) {\n    const apiUrlElement = requireElement('#api-url');\n    const copyBtn = apiUrlElement.nextElementSibling;\n    apiUrlElement.value = apiUrl;\n    if (copyBtn) {\n        copyBtn.setAttribute('onclick', `navigator.clipboard.writeText('${apiUrl}')`);\n    }\n}\n\nfunction showLoading(show) {\n    const loadingElement = requireElement('#loading-indicator');\n    loadingElement.style.display = show ? 'block' : 'none';\n}\n\nfunction showError(show) {\n    const errorElement = requireElement('#error-message');\n    errorElement.style.display = show ? 'block' : 'none';\n}\n\nfunction showDownloadButtons(show) {\n    const buttonsElement = requireElement('#download-buttons');\n    buttonsElement.style.display = show ? 'flex' : 'none';\n}\n\nfunction getInputValue(selector, defaultValue) {\n    return document.querySelector(selector)?.value || defaultValue;\n}\n\nfunction getCheckboxValue(selector) {\n    return document.querySelector(selector)?.checked || false;\n}\n\nfunction getRadioValue(selector, defaultValue) {\n    return document.querySelector(selector)?.value || defaultValue;\n}\n\nfunction getFormValues() {\n    return {\n        whichValue: getRadioValue('input[name=\"which\"]:checked', 'wfo'),\n        wfo: getInputValue('select[name=\"wfo\"]', 'DMX'),\n        state: getInputValue('select[name=\"state\"]', 'IA'),\n        year: getInputValue('select[name=\"year\"]', new Date().getFullYear()),\n        phenomena: getInputValue('select[name=\"p\"]', ''),\n        significance: getInputValue('select[name=\"s\"]', ''),\n        ponChecked: getCheckboxValue('input[name=\"pon\"]'),\n        sonChecked: getCheckboxValue('input[name=\"son\"]'),\n    };\n}\n\nfunction buildBaseApiUrl(whichValue, wfo, state, year) {\n    return whichValue === 'wfo'\n        ? `/json/vtec_events.py?wfo=${wfo}&year=${year}`\n        : `/json/vtec_events_bystate.py?state=${state}&year=${year}`;\n}\n\nfunction addFiltersToUrl(apiUrl, ponChecked, phenomena, sonChecked, significance) {\n    let url = apiUrl;\n    if (ponChecked && phenomena) {\n        url += `&phenomena=${phenomena}`;\n    }\n    if (sonChecked && significance) {\n        url += `&significance=${significance}`;\n    }\n    return url;\n}\n\nfunction getConfig() {\n    const formValues = getFormValues();\n    const baseUrl = buildBaseApiUrl(formValues.whichValue, formValues.wfo, formValues.state, formValues.year);\n    const apiUrl = addFiltersToUrl(baseUrl, formValues.ponChecked, formValues.phenomena, formValues.sonChecked, formValues.significance);\n\n    return {\n        apiUrl,\n        ...formValues,\n    };\n}\n\nfunction toggleFormVisibility() {\n    const whichValue = document.querySelector('input[name=\"which\"]:checked')?.value;\n    const wfoContainer = requireElement('wfo-select-container');\n    const stateContainer = requireElement('state-select-container');\n\n    if (whichValue === 'wfo') {\n        wfoContainer.style.display = 'block';\n        stateContainer.style.display = 'none';\n    } else if (whichValue === 'state') {\n        wfoContainer.style.display = 'none';\n        stateContainer.style.display = 'block';\n    }\n}\n\nclass VTECEvents {\n    constructor() {\n        this.table = null;\n        this.init();\n    }\n\n    init() {\n        this.setupEventListeners();\n        this.loadEvents();\n    }\n\n    setupEventListeners() {\n        // Form visibility based on which option is selected\n        const whichRadios = document.querySelectorAll('input[name=\"which\"]');\n        whichRadios.forEach(radio => {\n            radio.addEventListener('change', () => toggleFormVisibility());\n        });\n\n        // Initial visibility setup\n        toggleFormVisibility();\n\n        // CSV Download\n        const downloadCsvBtn = requireElement('download-csv');\n        downloadCsvBtn.addEventListener('click', () => this.downloadCSV());\n\n        // Copy to clipboard\n        const copyBtn = requireElement('copy-clipboard');\n        copyBtn.addEventListener('click', () => this.copyToClipboard());\n\n        // Listen for form submissions to reload data\n        const form = requireElement('vtec-form');\n        form.addEventListener('submit', e => {\n            e.preventDefault();\n            this.loadEvents();\n        });\n    }\n\n    async loadEvents() {\n        try {\n            this.showLoading(true);\n\n            const config = getConfig();\n            updateApiUrlDisplay(config.apiUrl);\n\n            const response = await fetch(config.apiUrl);\n            if (!response.ok) {\n                throw new Error(`HTTP error! status: ${response.status}`);\n            }\n\n            const data = await response.json();\n            this.renderTable(data.events || []);\n            updateEventCount(data.events?.length || 0);\n            showDownloadButtons(true);\n        } catch {\n            // Error loading events, show error message\n            showError(true);\n        } finally {\n            showLoading(false);\n        }\n    }\n\n    renderTable(events) {\n        const tableContainer = requireElement('vtec-table');\n\n        if (events.length === 0) {\n            tableContainer.innerHTML =\n                '<div class=\"alert alert-warning\"><i class=\"bi bi-info-circle\"></i> No events found for the selected criteria.</div>';\n            tableContainer.style.display = 'block';\n            return;\n        }\n\n        // Transform data for Tabulator\n        const tableData = events.map(event => {\n            let hmlUrl = '';\n            if (event.hvtec_nwsli && event.hvtec_nwsli !== '00000') {\n                const ts = new Date(event.issue);\n                const dateStr = `${ts.getFullYear()}/${String(ts.getMonth() + 1).padStart(2, '0')}/${String(ts.getDate()).padStart(2, '0')} 0000`;\n                hmlUrl = `/plotting/auto/?_wait=no&q=160&station=${event.hvtec_nwsli}&dt=${dateStr}`;\n            }\n\n            return {\n                wfo: event.wfo,\n                eventid: event.eventid,\n                eventid_link: event.uri,\n                phenomena: event.phenomena,\n                significance: event.significance,\n                phenomena_desc: vtec_phenomena_dict[event.phenomena] || event.phenomena,\n                significance_desc: vtec_significance_dict[event.significance] || event.significance,\n                issue: event.issue,\n                expire: event.expire,\n                hvtec_nwsli: event.hvtec_nwsli,\n                hml_url: hmlUrl,\n            };\n        });\n\n        // Clear previous table if exists\n        if (this.table) {\n            this.table.destroy();\n        }\n\n        // Create Tabulator table\n        this.table = new Tabulator(tableContainer, {\n            data: tableData,\n            layout: 'fitColumns',\n            responsiveLayout: 'collapse',\n            pagination: 'local',\n            paginationSize: 50,\n            paginationSizeSelector: [25, 50, 100, 200],\n            movableColumns: true,\n            resizableColumns: true,\n            tooltips: true,\n            columns: [\n                {\n                    title: 'WFO',\n                    field: 'wfo',\n                    width: 80,\n                    sorter: 'string',\n                    headerFilter: 'input',\n                },\n                {\n                    title: 'Event ID',\n                    field: 'eventid',\n                    width: 100,\n                    sorter: 'number',\n                    formatter: cell => {\n                        const data = cell.getRow().getData();\n                        return `<a href=\"${data.eventid_link}\" target=\"_blank\">${data.eventid}</a>`;\n                    },\n                },\n                {\n                    title: 'Phenomena',\n                    field: 'phenomena',\n                    width: 120,\n                    sorter: 'string',\n                    headerFilter: 'input',\n                },\n                {\n                    title: 'Significance',\n                    field: 'significance',\n                    width: 120,\n                    sorter: 'string',\n                    headerFilter: 'input',\n                },\n                {\n                    title: 'Description',\n                    field: 'phenomena_desc',\n                    minWidth: 200,\n                    sorter: 'string',\n                    formatter: cell => {\n                        const data = cell.getRow().getData();\n                        return `${data.phenomena_desc} ${data.significance_desc}`;\n                    },\n                    headerFilter: 'input',\n                },\n                {\n                    title: 'Issue Time',\n                    field: 'issue',\n                    width: 180,\n                    sorter: 'datetime',\n                    sorterParams: {\n                        format: 'YYYY-MM-DD HH:mm',\n                    },\n                },\n                {\n                    title: 'Expire Time',\n                    field: 'expire',\n                    width: 180,\n                    sorter: 'datetime',\n                    sorterParams: {\n                        format: 'YYYY-MM-DD HH:mm',\n                    },\n                },\n                {\n                    title: 'HVTEC NWSLI',\n                    field: 'hvtec_nwsli',\n                    width: 130,\n                    sorter: 'string',\n                    formatter: cell => {\n                        const data = cell.getRow().getData();\n                        if (data.hml_url && data.hvtec_nwsli && data.hvtec_nwsli !== '00000') {\n                            return `<a href=\"${data.hml_url}\" target=\"_blank\">${data.hvtec_nwsli}</a>`;\n                        }\n                        return data.hvtec_nwsli || '';\n                    },\n                },\n            ],\n        });\n\n        tableContainer.style.display = 'block';\n    }\n\n    downloadCSV() {\n        if (this.table) {\n            this.table.download('csv', 'vtec_events.csv');\n        }\n    }\n\n    copyToClipboard() {\n        if (this.table) {\n            this.table.copyToClipboard('table');\n        }\n    }\n}\n\n// Initialize when DOM is ready\ndocument.addEventListener('DOMContentLoaded', () => {\n    window.ve = new VTECEvents();\n});\n"
  },
  {
    "path": "htdocs/vtec/events.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 85);\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/reference.php\";\nrequire_once \"../../include/forms.php\";\n$vtec_phenomena = $reference[\"vtec_phenomena\"];\n$vtec_significance = $reference[\"vtec_significance\"];\n$wfo = substr(get_str404(\"wfo\", 'DMX'), 0, 4);\n$year = get_int404(\"year\", intval(date(\"Y\")));\n$state = substr(get_str404('state', 'IA'), 0, 2);\n$which = get_str404(\"which\", 'wfo');\n$significance = get_str404(\"s\", \"\");\n$phenomena = get_str404(\"p\", \"\");\n$pon = (get_str404(\"pon\", null) == \"on\");\n$son = (get_str404(\"son\", null) == \"on\");\n\n\nif ($which == 'wfo') {\n    $service = \"\";\n    $uri = sprintf(\n        \"%s/json/vtec_events.py?wfo=%s&year=%s\",\n        $INTERNAL_BASEURL,\n        $wfo,\n        $year\n    );\n} else {\n    $service = \"_bystate\";\n    $uri = sprintf(\n        \"%s/json/vtec_events_bystate.py?state=%s&year=%s\",\n        $INTERNAL_BASEURL,\n        $state,\n        $year\n    );\n}\nif ($significance != \"\" && $son) {\n    $uri .= sprintf(\"&significance=%s\", $significance);\n}\nif ($phenomena != \"\" && $pon) {\n    $uri .= sprintf(\"&phenomena=%s\", $phenomena);\n}\n$public_uri = str_replace(\n    $INTERNAL_BASEURL,\n    $EXTERNAL_BASEURL,\n    $uri\n);\n\n$t = new MyView();\nif ($which == 'wfo') {\n    $t->title = \"VTEC Event Listing for $wfo during $year\";\n} else {\n    $t->title = \"VTEC Event Listing for $state during $year\";\n}\n$t->headextra = <<<EOM\n<link type=\"text/css\" href=\"https://unpkg.com/tabulator-tables@6.3.1/dist/css/tabulator_bootstrap5.min.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"events.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"events.module.js\" type=\"module\"></script>\nEOM;\n$yselect = yearSelect(2005, $year, 'year');\n$wfoselect = networkSelect(\"WFO\", $wfo, array(), \"wfo\");\n$stselect = stateSelect($state);\n$pselect = make_select(\"p\", $phenomena, $vtec_phenomena);\n$sselect = make_select(\"s\", $significance, $vtec_significance);\n\n$wchecked = ($which == 'wfo') ? \"CHECKED\" : \"\";\n$schecked = ($which == 'state') ? \"CHECKED\" : \"\";\n$ponchecked = $pon ? \"CHECKED\" : \"\";\n$sonchecked = $son ? \"CHECKED\" : \"\";\n\n$t->content = <<<EOM\n<div class=\"container-fluid\">\n    <div class=\"row\">\n        <div class=\"col-12\">\n            <nav aria-label=\"breadcrumb\">\n                <ol class=\"breadcrumb\">\n                    <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Resources</a></li>\n                    <li class=\"breadcrumb-item active\" aria-current=\"page\">NWS VTEC Event Listing</li>\n                </ol>\n            </nav>\n        </div>\n    </div>\n\n    <div class=\"row\">\n        <div class=\"col-12\">\n            <h3>NWS VTEC Event ID Usage</h3>\n            <div class=\"alert alert-info\" role=\"alert\">\n                <h4 class=\"alert-heading\"><i class=\"bi bi-info-circle\"></i> About VTEC Events</h4>\n                <p>This page provides a listing of VTEC events for a given forecast office or state and year. There are a number of caveats to this listing due to issues encountered processing NWS VTEC enabled products. Some events may appear listed twice due to quirks with how this information is stored within the database.</p>\n                <hr>\n                <p class=\"mb-0\">The \"Event ID\" column provides a direct link into the <a href=\"/vtec/\" class=\"alert-link\">IEM VTEC Browser</a> and the \"HVTEC NWSLI\" column provides a direct link into the <a href=\"/plotting/auto/?q=160\" class=\"alert-link\">HML Obs + Forecast Autoplot</a> application.</p>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"row mb-4\">\n        <div class=\"col-12\">\n            <div class=\"card border-0 shadow-sm\">\n                <div class=\"card-header bg-primary text-white\">\n                    <h5 class=\"card-title mb-0\">\n                        <i class=\"bi bi-filter\"></i> Event Filters\n                    </h5>\n                </div>\n                <div class=\"card-body\">\n                    <form method=\"GET\" action=\"events.php\" id=\"vtec-form\">\n                        <div class=\"row g-3\">\n                            <div class=\"col-md-6\">\n                                <div class=\"card border\">\n                                    <div class=\"card-header bg-light\">\n                                        <h6 class=\"card-title mb-0\">Search Scope</h6>\n                                    </div>\n                                    <div class=\"card-body\">\n                                        <div class=\"mb-3\">\n                                            <div class=\"form-check\">\n                                                <input class=\"form-check-input\" type=\"radio\" name=\"which\" value=\"wfo\" id=\"which-wfo\" $wchecked>\n                                                <label class=\"form-check-label\" for=\"which-wfo\">\n                                                    <i class=\"bi bi-building\"></i> By Weather Forecast Office\n                                                </label>\n                                            </div>\n                                            <div class=\"form-check\">\n                                                <input class=\"form-check-input\" type=\"radio\" name=\"which\" value=\"state\" id=\"which-state\" $schecked>\n                                                <label class=\"form-check-label\" for=\"which-state\">\n                                                    <i class=\"bi bi-map\"></i> By State\n                                                </label>\n                                            </div>\n                                        </div>\n                                        <div class=\"row g-2\">\n                                            <div class=\"col-6\" id=\"wfo-select-container\">\n                                                <label for=\"wfo\" class=\"form-label\">WFO:</label>\n                                                $wfoselect\n                                            </div>\n                                            <div class=\"col-6\" id=\"state-select-container\">\n                                                <label for=\"state\" class=\"form-label\">State:</label>\n                                                $stselect\n                                            </div>\n                                            <div class=\"col-6\">\n                                                <label for=\"year\" class=\"form-label\">Year:</label>\n                                                $yselect\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n\n                            <div class=\"col-md-6\">\n                                <div class=\"card border\">\n                                    <div class=\"card-header bg-light\">\n                                        <h6 class=\"card-title mb-0\">Event Type Filters</h6>\n                                    </div>\n                                    <div class=\"card-body\">\n                                        <div class=\"mb-3\">\n                                            <div class=\"form-check\">\n                                                <input class=\"form-check-input\" type=\"checkbox\" name=\"pon\" value=\"on\" id=\"pon\" $ponchecked>\n                                                <label class=\"form-check-label\" for=\"pon\">\n                                                    <i class=\"bi bi-funnel\"></i> Filter by Phenomena\n                                                </label>\n                                            </div>\n                                            <div class=\"mt-2\">\n                                                $pselect\n                                            </div>\n                                        </div>\n                                        <div class=\"mb-3\">\n                                            <div class=\"form-check\">\n                                                <input class=\"form-check-input\" type=\"checkbox\" name=\"son\" value=\"on\" id=\"son\" $sonchecked>\n                                                <label class=\"form-check-label\" for=\"son\">\n                                                    <i class=\"bi bi-funnel-fill\"></i> Filter by Significance\n                                                </label>\n                                            </div>\n                                            <div class=\"mt-2\">\n                                                $sselect\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n\n                        <div class=\"row mt-3\">\n                            <div class=\"col-12 text-center\">\n                                <button type=\"submit\" class=\"btn btn-primary btn-lg\">\n                                    <i class=\"bi bi-search\"></i> Generate Event Listing\n                                </button>\n                            </div>\n                        </div>\n                    </form>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"row mb-3\">\n        <div class=\"col-md-8\">\n            <div class=\"alert alert-secondary\" role=\"alert\">\n                <h6 class=\"alert-heading\"><i class=\"bi bi-api\"></i> JSON API Access</h6>\n                <p class=\"mb-0\">Data available via <a href=\"/json/\" class=\"alert-link\">JSON webservice</a>:</p>\n                <div class=\"input-group mt-2\">\n                    <input type=\"text\" class=\"form-control font-monospace\" value=\"Loading...\" readonly id=\"api-url\">\n                    <button class=\"btn btn-outline-secondary\" type=\"button\" onclick=\"navigator.clipboard.writeText('')\">\n                        <i class=\"bi bi-clipboard\"></i>\n                    </button>\n                </div>\n            </div>\n        </div>\n        <div class=\"col-md-4\">\n            <div class=\"btn-group w-100\" role=\"group\" id=\"download-buttons\" style=\"display: none;\">\n                <button type=\"button\" class=\"btn btn-success\" id=\"download-csv\">\n                    <i class=\"bi bi-file-earmark-spreadsheet\"></i> Download CSV\n                </button>\n                <button type=\"button\" class=\"btn btn-secondary\" id=\"copy-clipboard\">\n                    <i class=\"bi bi-clipboard\"></i> Copy Data\n                </button>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"row\">\n        <div class=\"col-12\">\n            <div class=\"card border-0 shadow-sm\">\n                <div class=\"card-header bg-success text-white d-flex justify-content-between align-items-center\">\n                    <h5 class=\"card-title mb-0\">\n                        <i class=\"bi bi-table\"></i> VTEC Events\n                    </h5>\n                    <span class=\"badge bg-light text-dark\" id=\"event-count\">Loading...</span>\n                </div>\n                <div class=\"card-body\">\n                    <div id=\"loading-indicator\" class=\"text-center\">\n                        <div class=\"spinner-border text-primary\" role=\"status\">\n                            <span class=\"visually-hidden\">Loading events...</span>\n                        </div>\n                        <p class=\"mt-2\">Loading VTEC events...</p>\n                    </div>\n                    <div id=\"vtec-table\" style=\"display: none;\"></div>\n                    <div id=\"error-message\" class=\"alert alert-danger\" role=\"alert\" style=\"display: none;\">\n                        <i class=\"bi bi-exclamation-triangle\"></i> Error loading events. Please try again.\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\nEOM;\n$t->render(\"single.phtml\");\n"
  },
  {
    "path": "htdocs/vtec/f.py",
    "content": "\"\"\"implemented in pylib/iemweb/vtec/f.py\"\"\"\n\nfrom iemweb.vtec.f import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/vtec/index.py",
    "content": "\"\"\"implemented in pylib/iemweb/vtec/index.py\"\"\"\n\nfrom iemweb.vtec.index import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/vtec/json-text.php",
    "content": "<?php\n// Giveme JSON data for zones affected by warning\n// 4 March 2024: Still being actively used, sigh\nrequire_once '../../config/settings.inc.php';\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/mlib.php\";\n\n$connect = iemdb(\"postgis\");\npg_query($connect, \"SET TIME ZONE 'UTC'\");\n\n$year = get_int404(\"year\", 2006);\nif ($year == 0) die(\"ERROR: invalid \\$year set\");\n$wfo = get_str404(\"wfo\", \"MPX\", 3);\n$eventid = get_int404(\"eventid\", 103);\n$phenomena = get_str404(\"phenomena\", \"SV\", 2);\n$significance = get_str404(\"significance\", \"W\", 1);\n$lastsvs = get_str404(\"lastsvs\", 'n');\n\n$stname = iem_pg_prepare(\n    $connect,\n    \"SELECT array_to_json(product_ids) as ja \".\n    \"from warnings WHERE vtec_year = $1 and wfo = $2 and \".\n    \"phenomena = $3 and eventid = $4 and significance = $5 \".\n    \"ORDER by cardinality(product_ids) DESC LIMIT 1\"\n);\n$rs = pg_execute($connect, $stname, Array($year, $wfo, $phenomena, $eventid, $significance));\n\n$ar = array(\"data\" => array());\nif (pg_num_rows($rs) > 0) {\n    $row = pg_fetch_assoc($rs, 0);\n    $product_ids = json_decode($row[\"ja\"]);\n\n    $z = array();\n    $z[\"id\"] = 1;\n    $report = file_get_contents(\"{$INTERNAL_BASEURL}/api/1/nwstext/\". $product_ids[0]);\n    $z[\"report\"] = preg_replace(\"/\\001/\", \"\",\n        preg_replace(\"/\\r\\r\\n/\", \"\\n\", $report));\n    $z[\"svs\"] = array();\n    $lsvs = \"\";\n    for ($i=1; $i < sizeof($product_ids); $i++) {\n        $report = file_get_contents(\"{$INTERNAL_BASEURL}/api/1/nwstext/\". $product_ids[$i]);\n        $lsvs = preg_replace(\"/\\001/\", \"\", htmlspecialchars($report));\n        $z[\"svs\"][] = preg_replace(\"/\\r\\r\\n/\", \"\\n\", $lsvs);\n    }\n    if ($lastsvs == \"y\") {\n        $z[\"svs\"] = preg_replace(\"/\\r\\r\\n/\", \"\\n\", $lsvs);\n    }\n    $ar[\"data\"][] = $z;\n}\nheader(\"Content-type: application/json\");\necho json_encode($ar);\n"
  },
  {
    "path": "htdocs/vtec/maxetn.css",
    "content": "/* VTEC Max ETN Table Styling */\n\n/* Loading indicator styling */\n#loading-indicator .spinner-border {\n    width: 3rem;\n    height: 3rem;\n}\n\n/* Tabulator responsive improvements */\n.tabulator {\n    font-size: 0.875rem;\n}\n\n.tabulator .tabulator-header {\n    background-color: var(--bs-primary);\n    color: white;\n}\n\n.tabulator .tabulator-header .tabulator-col {\n    background-color: transparent;\n    border-right: 1px solid rgba(255, 255, 255, 0.2);\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n    color: white;\n    font-weight: 600;\n}\n\n.tabulator .tabulator-row:hover {\n    background-color: var(--bs-light);\n}\n\n.tabulator .tabulator-row.tabulator-row-even {\n    background-color: var(--bs-gray-50);\n}\n\n/* Custom button styling for event ID links */\n.tabulator .btn-outline-primary {\n    --bs-btn-padding-y: 0.25rem;\n    --bs-btn-padding-x: 0.5rem;\n    --bs-btn-font-size: 0.75rem;\n}\n\n/* Pagination styling */\n.tabulator .tabulator-footer {\n    background-color: var(--bs-light);\n    border-top: 2px solid var(--bs-primary);\n}\n\n/* Filter input styling */\n.tabulator .tabulator-header-filter input {\n    border: 1px solid var(--bs-border-color);\n    border-radius: var(--bs-border-radius-sm);\n    padding: 0.25rem 0.5rem;\n    font-size: 0.75rem;\n}\n\n/* Card improvements */\n.card-header .card-title {\n    color: var(--bs-primary);\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n    .tabulator {\n        font-size: 0.75rem;\n    }\n    \n    .btn-group .btn {\n        padding: 0.375rem 0.5rem;\n        font-size: 0.75rem;\n    }\n}\n\n/* API URL input styling */\n.font-monospace {\n    font-size: 0.875rem;\n}\n\n/* Alert improvements */\n.alert-info {\n    border-left: 4px solid var(--bs-info);\n}"
  },
  {
    "path": "htdocs/vtec/maxetn.module.js",
    "content": "// VTEC Max ETN Tabulator implementation\n// Applies rules: jQuery removal, ES modules, avoid `this` usage\nimport { TabulatorFull as Tabulator } from 'https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator_esm.min.mjs';\n\n// Global state management\nconst state = {\n    table: null,\n    config: null\n};\n\n// Tabulator configuration\nconst tabulatorConfig = {\n    layout: \"fitColumns\",\n    pagination: \"local\",\n    paginationSize: 20,\n    paginationSizeSelector: [10, 20, 50, 100, true],\n    movableColumns: true,\n    resizableColumns: true,\n    sortMode: \"local\",\n    filterMode: \"local\",\n    responsiveLayout: \"hide\",\n    tooltips: true,\n    clipboard: true,\n    clipboardCopyHeader: true,\n    placeholder: \"No VTEC data available for this year\",\n    htmlOutputConfig: {\n        columnHeaders: true,\n        columnGroups: false,\n        rowGroups: false,\n        columnCalcs: false,\n        dataTree: false\n    },\n    downloadConfig: {\n        columnHeaders: true,\n        columnGroups: false,\n        rowGroups: false,\n        columnCalcs: false,\n        dataTree: false\n    }\n};\n\n// HTML formatter for cells with links\nfunction htmlFormatter(cell) {\n    return cell.getValue();\n}\n\n// Initialize column definitions based on the data structure\nfunction generateColumns(data) {\n    if (!data || data.length === 0) {return [];}\n    \n    const columns = [];\n    const firstRow = data[0];\n    \n    // Create columns based on the first row keys\n    Object.keys(firstRow).forEach(key => {\n        // Skip raw data fields (used for sorting)\n        if (key.endsWith('_raw')) {\n            return;\n        }\n        \n        const column = {\n            title: formatColumnTitle(key),\n            field: key,\n            sorter: \"string\",\n            minWidth: getColumnWidth(key)\n        };\n        \n        // Special handling for certain columns\n        if (key === 'max_eventid' || key.includes('eventid')) {\n            column.hozAlign = \"right\";\n            column.formatter = htmlFormatter; // Allow HTML links\n            // Custom sorter to use raw numeric value\n            column.sorter = (a, b, aRow, bRow) => {\n                const aVal = aRow.getData()[`${key}_raw`] || 0;\n                const bVal = bRow.getData()[`${key}_raw`] || 0;\n                return aVal - bVal;\n            };\n            // For CSV downloads, extract the numeric value\n            column.accessorDownload = (value) => {\n                const match = value.match(/>(\\d+)</);\n                return match ? parseInt(match[1], 10) : 0;\n            };\n        } else if (key === 'url') {\n            column.visible = false; // Hide URL column as it's used for links\n        } else if (key === 'wfo') {\n            column.width = 80;\n            column.headerFilter = \"input\";\n        } else if (key === 'phenomena' || key === 'significance') {\n            column.width = 100;\n            column.headerFilter = \"input\";\n        }\n        \n        columns.push(column);\n    });\n    \n    return columns;\n}\n\n// Format column titles for display\nfunction formatColumnTitle(key) {\n    const titleMap = {\n        'wfo': 'WFO',\n        'phenomena': 'Phenomena',\n        'significance': 'Significance',\n        'max_eventid': 'Max Event ID',\n        'url': 'URL'\n    };\n    \n    return titleMap[key] || key.charAt(0).toUpperCase() + key.slice(1);\n}\n\n// Get appropriate column width based on content\nfunction getColumnWidth(key) {\n    const widthMap = {\n        'wfo': 80,\n        'phenomena': 120,\n        'significance': 120,\n        'max_eventid': 130,\n        'url': 200\n    };\n    \n    return widthMap[key] || 100;\n}\n\n// Process the raw JSON data for Tabulator\nfunction processData(rawData) {\n    if (!rawData.table || rawData.table.length === 0) {\n        return [];\n    }\n    \n    const columnNames = rawData.columns.map(col => col.name);\n    \n    return rawData.table.map(row => {\n        const processedRow = {};\n        \n        row.forEach((value, index) => {\n            const columnName = columnNames[index];\n            \n            // Special handling for max_eventid - create link if URL column exists\n            if (columnName === 'max_eventid' && columnNames.includes('url')) {\n                const urlIndex = columnNames.indexOf('url');\n                const url = row[urlIndex];\n                processedRow[columnName] = `<a href=\"${url}\" class=\"btn btn-sm btn-outline-primary\">${value}</a>`;\n                // Store raw numeric value for sorting\n                processedRow[`${columnName}_raw`] = parseInt(value, 10) || 0;\n            } else if (columnName !== 'url') { // Skip URL column as it's used for links\n                processedRow[columnName] = value;\n            }\n        });\n        \n        return processedRow;\n    });\n}\n\n// Load data from the JSON API\nasync function loadData() {\n    // Ensure we have current config\n    if (!state.config) {\n        state.config = getConfigFromForm();\n    }\n    \n    const loadingIndicator = document.getElementById('loading-indicator');\n    const errorMessage = document.getElementById('error-message');\n    const tableContainer = document.getElementById('vtec-table');\n    \n    try {\n        loadingIndicator.style.display = 'block';\n        errorMessage.style.display = 'none';\n        tableContainer.style.display = 'none';\n        \n        const response = await fetch(`/json/vtec_max_etn.py?year=${state.config.year}`);\n        \n        if (!response.ok) {\n            throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n        }\n        \n        const rawData = await response.json();\n        const processedData = processData(rawData);\n        const columns = generateColumns(processedData);\n        \n        // Destroy existing table if it exists\n        if (state.table) {\n            state.table.destroy();\n            state.table = null;\n        }\n        \n        // Initialize Tabulator\n        state.table = new Tabulator(\"#vtec-table\", {\n            ...tabulatorConfig,\n            data: processedData,\n            columns,\n            initialSort: [\n                { column: \"wfo\", dir: \"asc\" },\n                { column: \"phenomena\", dir: \"asc\" },\n                { column: \"significance\", dir: \"asc\" }\n            ]\n        });\n        \n        // Show table when built\n        state.table.on(\"tableBuilt\", () => {\n            loadingIndicator.style.display = 'none';\n            tableContainer.style.display = 'block';\n            setupDownloadButtons();\n        });\n        \n        // Handle empty data\n        if (processedData.length === 0) {\n            loadingIndicator.style.display = 'none';\n            tableContainer.style.display = 'block';\n        }\n        \n    } catch (error) {\n        // Log error for debugging but show user-friendly message\n        loadingIndicator.style.display = 'none';\n        errorMessage.style.display = 'block';\n        errorMessage.innerHTML = `\n            <i class=\"bi bi-exclamation-triangle\"></i> \n            Error loading data: ${error.message}. Please try again or contact support.\n        `;\n    }\n}\n\n// Setup download functionality\nfunction setupDownloadButtons() {\n    const downloadButtons = document.getElementById('download-buttons');\n    const csvButton = document.getElementById('download-csv');\n    const clipboardButton = document.getElementById('copy-clipboard');\n    \n    if (downloadButtons && csvButton && clipboardButton) {\n        downloadButtons.style.display = 'block';\n        \n        csvButton.addEventListener('click', () => {\n            const filename = `vtec-max-etn-${state.config.year}.csv`;\n            state.table.download(\"csv\", filename);\n        });\n        \n        clipboardButton.addEventListener('click', () => {\n            state.table.copyToClipboard(\"active\");\n            \n            // Visual feedback\n            const originalText = clipboardButton.innerHTML;\n            clipboardButton.innerHTML = '<i class=\"bi bi-check\"></i> Copied!';\n            clipboardButton.classList.add('btn-success');\n            clipboardButton.classList.remove('btn-secondary');\n            \n            setTimeout(() => {\n                clipboardButton.innerHTML = originalText;\n                clipboardButton.classList.remove('btn-success');\n                clipboardButton.classList.add('btn-secondary');\n            }, 2000);\n        });\n    }\n}\n\n// Initialize the application\nfunction init() {\n    // Get configuration from form elements\n    state.config = getConfigFromForm();\n    \n    if (!state.config) {\n        // Configuration missing - show error in UI instead of console\n        const errorMessage = document.getElementById('error-message');\n        if (errorMessage) {\n            errorMessage.style.display = 'block';\n            errorMessage.innerHTML = '<i class=\"bi bi-exclamation-triangle\"></i> Configuration error. Please refresh the page.';\n        }\n        return;\n    }\n\n    // Set up form change handler for live updates\n    setupFormHandler();\n\n    // Load data when DOM is ready\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', loadData);\n    } else {\n        loadData();\n    }\n}\n\n// Get configuration from form elements\nfunction getConfigFromForm() {\n    const yearSelect = document.querySelector('select[name=\"year\"]');\n    if (!yearSelect) {\n        return null;\n    }\n    \n    return {\n        year: parseInt(yearSelect.value, 10) || new Date().getFullYear()\n    };\n}\n\n// Set up form handler for dynamic updates\nfunction setupFormHandler() {\n    const yearSelect = document.querySelector('select[name=\"year\"]');\n    const form = yearSelect?.closest('form');\n    \n    if (yearSelect) {\n        yearSelect.addEventListener('change', () => {\n            // Update configuration\n            state.config.year = parseInt(yearSelect.value, 10);\n            \n            // Update page elements\n            updatePageElements();\n            \n            // Reload data with new year \n            loadData();\n        });\n    }\n    \n    // Prevent form submission since we handle changes dynamically\n    if (form) {\n        form.addEventListener('submit', (event) => {\n            event.preventDefault();\n            // Trigger change event to reload data\n            if (yearSelect) {\n                yearSelect.dispatchEvent(new Event('change'));\n            }\n        });\n    }\n}\n\n// Update page elements when year changes\nfunction updatePageElements() {\n    // Update the card title\n    const cardTitle = document.querySelector('.card-title:not(.mb-0)');\n    if (cardTitle?.textContent.includes('Max VTEC ETN Listing')) {\n        cardTitle.textContent = `Max VTEC ETN Listing for ${state.config.year}`;\n    }\n    \n    // Update the API URL display\n    const apiUrlInput = document.querySelector('.input-group .form-control');\n    if (apiUrlInput) {\n        const newUrl = `/json/vtec_max_etn.py?year=${state.config.year}`;\n        apiUrlInput.value = newUrl;\n        \n        // Update the copy button onclick\n        const copyButton = apiUrlInput.nextElementSibling;\n        if (copyButton) {\n            copyButton.setAttribute('onclick', `navigator.clipboard.writeText('${newUrl}')`);\n        }\n    }\n}\n\n// Start the application\ninit();\n"
  },
  {
    "path": "htdocs/vtec/maxetn.php",
    "content": "<?php \nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/forms.php\";\ndefine(\"IEM_APPID\", 115);\n$year = get_int404(\"year\", intval(date(\"Y\")));\n\nrequire_once \"../../include/myview.php\";\n\n$uri = sprintf(\"%s/json/vtec_max_etn.py?year=%s&format=html\", \n    $INTERNAL_BASEURL,\n    $year);\n$wsuri = sprintf(\"%s/json/vtec_max_etn.py?year=%s\",\n    $EXTERNAL_BASEURL,\n    $year);\n$table = file_get_contents($uri);\n\n$t = new MyView();\n$t->title = \"VTEC Event Listing for $year\";\n$t->headextra = <<<EOM\n<link type=\"text/css\" href=\"https://unpkg.com/tabulator-tables@6.3.1/dist/css/tabulator_bootstrap5.min.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"maxetn.css\" rel=\"stylesheet\" />\nEOM;\n\n$yselect = yearSelect(2005, $year, 'year');\n\n$t->content = <<<EOM\n<div class=\"row\">\n    <div class=\"col-12\">\n        <nav aria-label=\"breadcrumb\">\n            <ol class=\"breadcrumb\">\n                <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Resources</a></li>\n                <li class=\"breadcrumb-item active\" aria-current=\"page\">Max VTEC EventID Listing</li>\n            </ol>\n        </nav>\n    </div>\n</div>\n\n<div class=\"row\">\n    <div class=\"col-12\">\n        <div class=\"alert alert-info\" role=\"alert\">\n            <h4 class=\"alert-heading\"><i class=\"bi bi-info-circle\"></i> About VTEC Event Tracking</h4>\n            <p>The National Weather Service uses a system called\n            <a href=\"http://www.nws.noaa.gov/om/vtec/\" class=\"alert-link\">Valid Time Event Code (VTEC)</a> to provide\n            more accurate tracking of its watch, warning, and advisories. The IEM attempts to provide a\n            high fidelity database of these products.</p>\n            <hr>\n            <p class=\"mb-0\">The following table shows the largest VTEC eventids (ETN) for each NWS Forecast Office, \n            each phenomena, and significance for the given year. <strong>Pro-tip</strong>: Use the search functionality \n            to filter by a specific WFO.</p>\n        </div>\n    </div>\n</div>\n\n<div class=\"row mb-3\">\n    <div class=\"col-md-6\">\n        <div class=\"card\">\n            <div class=\"card-header\">\n                <h5 class=\"card-title mb-0\"><i class=\"bi bi-calendar-event\"></i> Year Selection</h5>\n            </div>\n            <div class=\"card-body\">\n                <form method=\"GET\" action=\"maxetn.php\" class=\"d-flex gap-2 align-items-end\">\n                    <div class=\"flex-grow-1\">\n                        <label for=\"year\" class=\"form-label\">Select Year:</label>\n                        $yselect\n                    </div>\n                    <div>\n                        <button type=\"submit\" class=\"btn btn-primary\">\n                            <i class=\"bi bi-arrow-clockwise\"></i> Update Table\n                        </button>\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n    <div class=\"col-md-6\">\n        <div class=\"card\">\n            <div class=\"card-header\">\n                <h5 class=\"card-title mb-0\"><i class=\"bi bi-api\"></i> JSON API</h5>\n            </div>\n            <div class=\"card-body\">\n                <p class=\"card-text\">This data is available via our <a href=\"/json/\">JSON Webservice</a>:</p>\n                <div class=\"input-group\">\n                    <input type=\"text\" class=\"form-control font-monospace\" value=\"{$wsuri}\" readonly>\n                    <button class=\"btn btn-outline-secondary\" type=\"button\" onclick=\"navigator.clipboard.writeText('{$wsuri}')\">\n                        <i class=\"bi bi-clipboard\"></i>\n                    </button>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"row\">\n    <div class=\"col-12\">\n        <div class=\"card\">\n            <div class=\"card-header d-flex justify-content-between align-items-center\">\n                <h3 class=\"card-title mb-0\">Max VTEC ETN Listing for {$year}</h3>\n                <div class=\"btn-group\" role=\"group\" id=\"download-buttons\" style=\"display: none;\">\n                    <button type=\"button\" class=\"btn btn-success btn-sm\" id=\"download-csv\">\n                        <i class=\"bi bi-file-earmark-spreadsheet\"></i> Download CSV\n                    </button>\n                    <button type=\"button\" class=\"btn btn-secondary btn-sm\" id=\"copy-clipboard\">\n                        <i class=\"bi bi-clipboard\"></i> Copy to Clipboard\n                    </button>\n                </div>\n            </div>\n            <div class=\"card-body\">\n                <div id=\"loading-indicator\" class=\"text-center\">\n                    <div class=\"spinner-border text-primary\" role=\"status\">\n                        <span class=\"visually-hidden\">Loading...</span>\n                    </div>\n                    <p class=\"mt-2\">Loading VTEC data...</p>\n                </div>\n                <div id=\"vtec-table\" style=\"display: none;\"></div>\n                <div id=\"error-message\" class=\"alert alert-danger\" role=\"alert\" style=\"display: none;\">\n                    <i class=\"bi bi-exclamation-triangle\"></i> Error loading data. Please try again.\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\nEOM;\n$t->jsextra = <<<EOM\n<script src=\"maxetn.module.js\" type=\"module\"></script>\nEOM;\n$t->render(\"full.phtml\");\n"
  },
  {
    "path": "htdocs/vtec/mobile.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/forms.php\";\n$v = get_str404(\"vtec\", \"2008-O-NEW-KJAX-TO-W-0048\", 25);\n\nheader(\"Location: /vtec/f/$v\");\n"
  },
  {
    "path": "htdocs/vtec/pds.css",
    "content": "/* Tabulator container styling */\n#tabulator-container {\n    margin-top: 1rem;\n}\n\n/* Table controls styling */\n#table-controls {\n    margin-bottom: 1rem;\n    padding: 1rem;\n    background-color: var(--bs-light);\n    border-radius: 0.375rem;\n    border: 1px solid var(--bs-border-color);\n}\n\n#table-controls .btn-group {\n    margin-right: 0.5rem;\n    margin-bottom: 0.5rem;\n}\n\n#table-controls .btn {\n    margin-right: 0.25rem;\n}\n\n/* Enhance the \"Make Interactive\" button */\n#makefancy {\n    background: linear-gradient(135deg, var(--bs-primary), var(--bs-info));\n    border: none;\n    color: white;\n    padding: 0.75rem 1.5rem;\n    border-radius: 0.5rem;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    transition: all 0.3s ease;\n    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n}\n\n#makefancy:hover {\n    transform: translateY(-2px);\n    box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);\n}\n\n#makefancy:active {\n    transform: translateY(0);\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n/* Original table wrapper */\n#original-table {\n    margin-top: 1rem;\n}\n\n/* Tabulator table customizations */\n.tabulator {\n    border: 1px solid var(--bs-border-color);\n    border-radius: 0.375rem;\n    overflow: hidden;\n}\n\n.tabulator .tabulator-header {\n    background: var(--bs-primary);\n    color: white;\n    border-bottom: 2px solid var(--bs-primary);\n}\n\n.tabulator .tabulator-header .tabulator-col {\n    border-right: 1px solid rgba(255, 255, 255, 0.2);\n    background: var(--bs-primary);\n}\n\n.tabulator .tabulator-header .tabulator-col-title {\n    font-weight: 600;\n    color: white !important;\n    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n}\n\n.tabulator .tabulator-header .tabulator-col-sorter {\n    color: white !important;\n}\n\n.tabulator .tabulator-header .tabulator-header-filter input {\n    background-color: rgba(255, 255, 255, 0.9);\n    border: 1px solid rgba(255, 255, 255, 0.3);\n    border-radius: 0.25rem;\n    color: var(--bs-dark);\n}\n\n.tabulator .tabulator-header .tabulator-header-filter input:focus {\n    background-color: white;\n    border-color: var(--bs-primary);\n    box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), 0.25);\n}\n\n/* Row styling */\n.tabulator .tabulator-row:nth-child(even) {\n    background-color: var(--bs-light);\n}\n\n.tabulator .tabulator-row:hover {\n    background-color: rgba(var(--bs-primary-rgb), 0.12); /* Slightly higher contrast for accessibility */\n}\n\n.tabulator .tabulator-row .tabulator-cell {\n    border-right: 1px solid var(--bs-border-color);\n    padding: 0.75rem 0.5rem;\n}\n\n/* Link styling in table */\n.tabulator .tabulator-row .tabulator-cell a {\n    color: var(--bs-primary);\n    text-decoration: none;\n    font-weight: 500;\n}\n\n.tabulator .tabulator-row .tabulator-cell a:hover {\n    color: var(--bs-primary);\n    text-decoration: underline;\n}\n\n/* Pagination styling */\n.tabulator .tabulator-footer {\n    background-color: var(--bs-light);\n    border-top: 1px solid var(--bs-border-color);\n}\n\n.tabulator .tabulator-footer .tabulator-page {\n    background-color: white;\n    border: 1px solid var(--bs-border-color);\n    color: var(--bs-primary);\n}\n\n.tabulator .tabulator-footer .tabulator-page:hover {\n    background-color: var(--bs-primary);\n    color: white;\n}\n\n.tabulator .tabulator-footer .tabulator-page.active {\n    background-color: var(--bs-primary);\n    color: white;\n    border-color: var(--bs-primary);\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n    #table-controls {\n        padding: 0.75rem;\n    }\n\n    #table-controls .btn-group {\n        display: flex;\n        flex-direction: column;\n        width: 100%;\n        margin-bottom: 0.5rem;\n    }\n\n    #table-controls .btn {\n        margin-right: 0;\n        margin-bottom: 0.25rem;\n    }\n\n    .tabulator .tabulator-header .tabulator-col {\n        min-width: 120px;\n    }\n}\n\n/* Loading spinner */\n.tabulator-loader {\n    border: 3px solid var(--bs-light);\n    border-top: 3px solid var(--bs-primary);\n    border-radius: 50%;\n    width: 40px;\n    height: 40px;\n    animation: spin 1s linear infinite;\n    margin: 2rem auto;\n}\n\n@keyframes spin {\n    0% { transform: rotate(0deg); }\n    100% { transform: rotate(360deg); }\n}\n\n/* Alert styling for status messages */\n.alert-info {\n    background: linear-gradient(135deg, rgba(var(--bs-info-rgb), 0.1), rgba(var(--bs-primary-rgb), 0.1));\n    border-color: var(--bs-info);\n    color: var(--bs-info-text-emphasis, #055160);\n}\n\n/* Page header styling */\nh3 {\n    color: var(--bs-primary);\n    font-weight: 600;\n    margin-bottom: 1.5rem;\n    padding-bottom: 0.5rem;\n    border-bottom: 2px solid var(--bs-primary);\n}\n\n/* Card-like styling for content sections */\n.content-card {\n    background-color: white;\n    border-radius: 0.5rem;\n    padding: 1.5rem;\n    margin-bottom: 1.5rem;\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n    border: 1px solid var(--bs-border-color);\n}\n\n/* Button group improvements */\n.btn-group .btn {\n    border-radius: 0.375rem;\n    margin-right: 0.25rem;\n}\n\n.btn-group .btn:last-child {\n    margin-right: 0;\n}\n\n/* Code block styling */\ncode {\n    background-color: var(--bs-light);\n    padding: 0.25rem 0.5rem;\n    border-radius: 0.25rem;\n    font-family: 'Courier New', monospace;\n    color: var(--bs-dark);\n    border: 1px solid var(--bs-border-color);\n}\n\n/* Accessibility enhancements appended */\n/* Keyboard focus clarity */\n#makefancy:focus-visible,\n#table-controls .btn:focus-visible,\n.tabulator .tabulator-header .tabulator-col:focus-visible,\n.tabulator .tabulator-row .tabulator-cell:focus-visible {\n    outline: 3px solid var(--bs-warning);\n    outline-offset: 2px;\n}\n\n/* Reduced motion preferences */\n@media (prefers-reduced-motion: reduce) {\n    #makefancy,\n    #makefancy:hover,\n    #makefancy:active {\n        transition: none !important;\n        transform: none !important;\n    }\n    .tabulator-loader {\n        animation: none !important;\n        border-top-color: var(--bs-primary);\n    }\n}\n"
  },
  {
    "path": "htdocs/vtec/pds.module.js",
    "content": "// Tabulator-based PDS (Particularly Dangerous Situation) Watch/Warning Listing\n// Replaces jQuery DataTables implementation with modern Tabulator\nimport {TabulatorFull as Tabulator} from 'https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator_esm.min.mjs';\n\n// Application state\nlet pdsTable = null;\nlet originalData = [];\nlet statusEl = null;\n\n// Common Tabulator configuration for PDS table\nconst commonConfig = {\n    layout: \"fitDataStretch\",\n    pagination: \"local\",\n    paginationSize: 25,\n    paginationSizeSelector: [10, 25, 50, 100, true],\n    movableColumns: true,\n    resizableColumns: true,\n    sortMode: \"local\",\n    filterMode: \"local\",\n    responsiveLayout: false, // Use horizontal scroll instead of hiding columns\n    tooltips: true,\n    clipboard: true,\n    clipboardCopyHeader: true,\n    height: \"70vh\",\n    placeholder: \"No PDS events available\",\n    initialSort: [\n        {column: \"year\", dir: \"desc\"},\n        {column: \"issue\", dir: \"desc\"}\n    ]\n};\n\n// Column definitions for PDS data\nfunction getPDSColumns() {\n    return [\n        {\n            title: \"Year\", \n            field: \"year\", \n            width: 80, \n            sorter: \"number\",\n            headerFilter: \"number\",\n            headerFilterPlaceholder: \"Filter year...\"\n        },\n        {\n            title: \"WFO\", \n            field: \"wfo\", \n            width: 80, \n            sorter: \"string\",\n            headerFilter: \"input\",\n            headerFilterPlaceholder: \"Filter WFO...\"\n        },\n        {\n            title: \"State(s)\", \n            field: \"states\", \n            width: 100, \n            sorter: \"string\",\n            headerFilter: \"input\",\n            headerFilterPlaceholder: \"Filter states...\"\n        },\n        {\n            title: \"Event ID\", \n            field: \"eventid\", \n            width: 100, \n            sorter: \"string\",\n            formatter: \"link\",\n            formatterParams: {\n                urlField: \"uri\",\n                target: \"_blank\"\n            },\n            headerFilter: \"input\",\n            headerFilterPlaceholder: \"Filter event ID...\"\n        },\n        {\n            title: \"PH\", \n            field: \"phenomena\", \n            width: 60, \n            sorter: \"string\",\n            headerFilter: \"input\",\n            headerFilterPlaceholder: \"PH...\"\n        },\n        {\n            title: \"SIG\", \n            field: \"significance\", \n            width: 60, \n            sorter: \"string\",\n            headerFilter: \"input\",\n            headerFilterPlaceholder: \"SIG...\"\n        },\n        {\n            title: \"Event\", \n            field: \"event\", \n            minWidth: 200, \n            sorter: \"string\",\n            headerFilter: \"input\",\n            headerFilterPlaceholder: \"Filter event type...\"\n        },\n        {\n            title: \"Issue Time\", \n            field: \"issue\", \n            width: 180, \n            sorter: \"string\",\n            headerFilter: \"input\",\n            headerFilterPlaceholder: \"Filter issue time...\"\n        },\n        {\n            title: \"Expire Time\", \n            field: \"expire\", \n            width: 180, \n            sorter: \"string\",\n            headerFilter: \"input\",\n            headerFilterPlaceholder: \"Filter expire time...\"\n        }\n    ];\n}\n\n// Load and process PDS data from the existing table\nfunction loadTableData() {\n    const tableElement = document.querySelector('#original-table table');\n    if (!tableElement) {\n        return [];\n    }\n\n    const rows = tableElement.querySelectorAll('tbody tr');\n    const data = [];\n\n    rows.forEach(row => {\n        const cells = row.querySelectorAll('td');\n        if (cells.length >= 9) {\n            // Extract event ID and URI from the link\n            const linkElement = cells[3].querySelector('a');\n            const eventid = linkElement ? linkElement.textContent.trim() : cells[3].textContent.trim();\n            const uri = linkElement ? linkElement.href : '';\n\n            data.push({\n                year: parseInt(cells[0].textContent.trim()),\n                wfo: cells[1].textContent.trim(),\n                states: cells[2].textContent.trim(),\n                eventid,\n                uri,\n                phenomena: cells[4].textContent.trim(),\n                significance: cells[5].textContent.trim(),\n                event: cells[6].textContent.trim(),\n                issue: cells[7].textContent.trim(),\n                expire: cells[8].textContent.trim()\n            });\n        }\n    });\n\n    return data;\n}\n\n// Initialize the Tabulator table\nfunction initializeTable() {\n    // Load data from existing table\n    originalData = loadTableData();\n    \n    if (originalData.length === 0) {\n        return;\n    }\n\n    // Create Tabulator table\n    pdsTable = new Tabulator(\"#pds-tabulator-table\", {\n        ...commonConfig,\n        columns: getPDSColumns(),\n        data: originalData\n    });\n\n    // Show the new table and controls\n    const container = document.getElementById('tabulator-container');\n    container.classList.remove('d-none');\n    const controls = document.getElementById('table-controls');\n    controls.classList.remove('d-none');\n    controls.removeAttribute('aria-hidden');\n    if (statusEl) {statusEl.textContent = 'Interactive table loaded. Use column headers to sort and filter inputs to refine results.';}\n    \n    // Hide the original table and button\n    const original = document.getElementById('original-table');\n    original.style.display = 'none';\n    const btn = document.getElementById('makefancy');\n    btn.style.display = 'none';\n    btn.setAttribute('aria-expanded', 'true');\n}\n\n// Setup table control event handlers\nfunction setupControls() {\n    // Download CSV button\n    document.getElementById('download-csv').addEventListener('click', () => {\n        if (pdsTable) {\n            pdsTable.download(\"csv\", \"pds-events.csv\");\n        }\n    });\n\n    // Download JSON button\n    document.getElementById('download-json').addEventListener('click', () => {\n        if (pdsTable) {\n            pdsTable.download(\"json\", \"pds-events.json\");\n        }\n    });\n\n    // Copy to clipboard button\n    document.getElementById('copy-clipboard').addEventListener('click', () => {\n        if (pdsTable) {\n            pdsTable.copyToClipboard(\"active\");\n        }\n    });\n\n    // Clear all filters button\n    document.getElementById('clear-filters').addEventListener('click', () => {\n        if (pdsTable) {\n            pdsTable.clearHeaderFilter();\n        }\n    });\n}\n\n// Initialize the application\ndocument.addEventListener('DOMContentLoaded', () => {\n    statusEl = document.getElementById('pds-status');\n    // Setup the \"Make Table Interactive\" button\n    const makeFancyButton = document.getElementById('makefancy');\n    if (makeFancyButton) {\n        makeFancyButton.addEventListener('click', () => {\n            if (statusEl) {statusEl.textContent = 'Initializing interactive table…';}\n            initializeTable();\n        });\n    }\n\n    // Setup table controls\n    setupControls();\n});\n"
  },
  {
    "path": "htdocs/vtec/pds.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 122);\n\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/reference.php\";\nrequire_once \"../../include/forms.php\";\n$vtec_phenomena = $reference[\"vtec_phenomena\"];\n$vtec_significance = $reference[\"vtec_significance\"];\n\n$uri = \"{$INTERNAL_BASEURL}/json/vtec_pds.py\";\n$data = file_get_contents($uri);\n$json = json_decode($data, $assoc = TRUE);\n$table = \"\";\nforeach ($json['events'] as $key => $val) {\n    $table .= sprintf(\n        \"<tr><td>%s</td><td>%s</td><td>%s</td><td><a href=\\\"%s\\\">%s</a></td>\" .\n            \"<td>%s</td><td>%s</td><td>%s %s</td><td>%s</td><td>%s</td></tr>\",\n        $val[\"year\"],\n        $val[\"wfo\"],\n        $val[\"states\"],\n        $val[\"uri\"],\n        $val[\"eventid\"],\n        $val[\"phenomena\"],\n        $val[\"significance\"],\n        $vtec_phenomena[$val[\"phenomena\"]],\n        $vtec_significance[$val[\"significance\"]],\n        $val[\"issue\"],\n        $val[\"expire\"]\n    );\n}\n\n$t = new MyView();\n$t->title = \"Particularly Dangerous Situation (PDS) Listing\";\n$t->headextra = <<<EOM\n<link type=\"text/css\" href=\"https://unpkg.com/tabulator-tables@6.3.1/dist/css/tabulator_bootstrap5.min.css\" rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"pds.css\" rel=\"stylesheet\" />\nEOM;\n$t->jsextra = <<<EOM\n<script type=\"module\" src=\"pds.module.js?v=3\"></script>\nEOM;\n\n\n$t->content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Resources</a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\">PDS List</li>\n</ol>\n</nav>\n<h1 class=\"h4 mb-3\">Particularly Dangerous Situation Watch / Warnings</h1>\n<div>\n\n<p>This page presents the current and\n<strong>unofficial</strong> IEM\naccounting of watches/warnings that contain the special\nParticularly Dangerous Situation\nphrasing. This phrasing is the only key used to identify such events.\nThe phrasing can occur in either the issuance and/or followup statements.</p>\n\n<p>There is a <a href=\"/json/\">JSON(P) webservice</a> that backends this table presentation, you can\ndirectly access it here:\n<br /><code>{$EXTERNAL_BASEURL}/json/vtec_pds.py</code></p>\n\n<p><strong>Related:</strong>\n<a class=\"btn btn-primary\" href=\"/vtec/emergencies.php\">TOR/FFW Emergencies</a>\n<a class=\"btn btn-primary ms-2\" href=\"/nws/pds_watches.php\">SPC PDS Watches</a></p>\n\n<p>\nThis listing was generated at: <code>{$json['generated_at']}</code> and is\nregenerated hourly. <button id=\"makefancy\" class=\"btn btn-success\" aria-controls=\"pds-tabulator-table pds-status\" aria-expanded=\"false\">Make Table Interactive</button></p>\n\n<div id=\"pds-status\" class=\"visually-hidden\" role=\"status\" aria-live=\"polite\"></div>\n\n<!-- Tabulator Table Controls (hidden initially) -->\n<div id=\"table-controls\" class=\"d-none\" aria-hidden=\"true\">\n    <div class=\"d-flex flex-wrap align-items-center\">\n        <div class=\"btn-group me-3 mb-2\" role=\"group\" aria-label=\"Download data\">\n            <button id=\"download-csv\" type=\"button\" class=\"btn btn-outline-primary\">\n                <i class=\"bi bi-download\" aria-hidden=\"true\"></i> CSV\n            </button>\n            <button id=\"download-json\" type=\"button\" class=\"btn btn-outline-primary\">\n                <i class=\"bi bi-download\" aria-hidden=\"true\"></i> JSON\n            </button>\n        </div>\n        <div class=\"btn-group me-3 mb-2\" role=\"group\" aria-label=\"Utility actions\">\n            <button id=\"copy-clipboard\" type=\"button\" class=\"btn btn-outline-secondary\">\n                <i class=\"bi bi-clipboard\" aria-hidden=\"true\"></i> Copy\n            </button>\n            <button id=\"clear-filters\" type=\"button\" class=\"btn btn-outline-warning\">\n                <i class=\"bi bi-funnel\" aria-hidden=\"true\"></i> Clear Filters\n            </button>\n        </div>\n    </div>\n</div>\n\n<!-- Modern Tabulator Table (hidden initially) -->\n<div id=\"tabulator-container\" class=\"d-none\" aria-label=\"Interactive PDS events data table\">\n    <div id=\"pds-tabulator-table\"></div>\n</div>\n\n<!-- Original Table (shown initially) -->\n<div id=\"original-table\">\n<table class=\"table table-striped table-sm\" id=\"pds-table\">\n<caption class=\"text-start\">Listing of PDS (Particularly Dangerous Situation) watch and warning events. PH = VTEC Phenomena, SIG = VTEC Significance.</caption>\n<thead class=\"sticky\">\n<tr><th>Year</th><th>WFO</th><th>State(s)</th><th>Event ID</th>\n<th>PH</th><th>SIG</th><th>Event</th><th>Issue</th><th>Expire</th></tr>\n</thead>\n<tbody>\n{$table}\n</tbody>\n</table>\n</div>\n\nEOM;\n$t->render(\"full.phtml\");\n"
  },
  {
    "path": "htdocs/vtec/search.css",
    "content": "/* Custom styling for VTEC search app */\n.vtec-search-tabs .nav-link {\n    font-weight: 500;\n    color: #495057;\n    border-bottom: 3px solid transparent;\n    transition: all 0.3s ease;\n}\n\n.vtec-search-tabs .nav-link:hover {\n    color: #007bff;\n    border-bottom-color: #007bff;\n}\n\n.vtec-search-tabs .nav-link.active {\n    color: #007bff;\n    border-bottom-color: #007bff;\n    background-color: transparent;\n    font-weight: 600;\n}\n\n.vtec-card {\n    box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n    border: 1px solid #e9ecef;\n    transition: box-shadow 0.3s ease;\n}\n\n.vtec-card:hover {\n    box-shadow: 0 4px 8px rgba(0,0,0,0.15);\n}\n\n.vtec-card .card-title {\n    color: #495057;\n    font-weight: 600;\n    margin-bottom: 0.75rem;\n}\n\n.map {\n    height: 300px;\n    border: 2px solid #dee2e6;\n    border-radius: 0.375rem;\n    overflow: hidden;\n}\n\n.btn-group-export {\n    gap: 0.5rem;\n    display: flex;\n    flex-wrap: wrap;\n}\n\n.alert-warning {\n    border-left: 4px solid #ffc107;\n    background-color: #fff3cd;\n}\n\n.form-control, .form-select {\n    border-radius: 0.375rem;\n    border: 1px solid #ced4da;\n    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.form-control:focus, .form-select:focus {\n    border-color: #80bdff;\n    box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.tab-content {\n    border-top: 1px solid #dee2e6;\n    background-color: #fff;\n}\n\n.coordinate-input {\n    width: 120px;\n    display: inline-block;\n    margin-right: 10px;\n}\n\n.radio-group {\n    background-color: #f8f9fa;\n    padding: 0.75rem;\n    border-radius: 0.375rem;\n    border: 1px solid #e9ecef;\n}\n\n.btn-primary {\n    background-color: #007bff;\n    border-color: #007bff;\n    font-weight: 500;\n}\n\n.btn-primary:hover {\n    background-color: #0056b3;\n    border-color: #0056b3;\n}\n\n.section-description {\n    color: #6c757d;\n    font-size: 0.95rem;\n    line-height: 1.5;\n    margin-bottom: 1.5rem;\n}\n\n.coordinate-section {\n    background-color: #f8f9fa;\n    padding: 1rem;\n    border-radius: 0.375rem;\n    border: 1px solid #e9ecef;\n    margin-bottom: 1rem;\n}\n.map {\n    width: 100%;\n    height: 400px;\n    float: left;\n}\n\n/* Phenomena Summary Styling */\n.phenomena-summary .card-header {\n    background-color: #f8f9fa !important;\n}\n\n.phenomena-summary .btn-link {\n    color: #495057 !important;\n    text-decoration: none !important;\n}\n\n.phenomena-summary .btn-link:hover {\n    color: #007bff !important;\n}\n\n.phenomena-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n    gap: 8px;\n    max-height: 300px;\n    overflow-y: auto;\n}\n\n.phenomena-item {\n    cursor: pointer;\n    transition: all 0.2s ease;\n    border-radius: 6px;\n    padding: 8px 12px;\n    border: 1px solid #dee2e6;\n    background-color: #fff;\n}\n\n.phenomena-item:hover {\n    background-color: #f8f9fa;\n    border-color: #007bff;\n    transform: translateY(-1px);\n    box-shadow: 0 2px 4px rgba(0,123,255,0.1);\n}\n\n.phenomena-item.active {\n    background-color: #007bff;\n    border-color: #007bff;\n    color: white;\n}\n\n.phenomena-item.active .badge {\n    background-color: #fff !important;\n    color: #007bff !important;\n}\n\n.phenomena-badge {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    font-size: 0.9rem;\n}\n\n.summary-chevron {\n    transition: transform 0.3s ease;\n}\n\n/* Table Toolbar Styling */\n.table-toolbar {\n    background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%) !important;\n    border: 1px solid #dee2e6 !important;\n    box-shadow: 0 1px 3px rgba(0,0,0,0.1);\n}\n\n.table-toolbar .table-info {\n    flex-grow: 1;\n}\n\n.table-toolbar .table-exports {\n    display: flex;\n    align-items: center;\n    gap: 0.5rem;\n}\n\n.table-toolbar .btn {\n    font-size: 0.875rem;\n    padding: 0.375rem 0.75rem;\n}\n\n.table-toolbar .badge {\n    font-size: 0.75rem;\n}\n\n/* Full Dataset Export Styling */\n.full-dataset-export .alert {\n    margin-bottom: 1rem;\n}\n\n.full-dataset-export .btn-group {\n    flex-shrink: 0;\n}\n\n/* Tab 3 VTEC Event Selection Styling */\n.form-select:disabled {\n    background-color: #f8f9fa;\n    opacity: 0.6;\n    cursor: not-allowed;\n}\n\n.opacity-50 {\n    opacity: 0.5;\n    transition: opacity 0.3s ease;\n}\n\n.opacity-50 label {\n    color: #6c757d !important;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n    .phenomena-grid {\n        grid-template-columns: 1fr;\n        max-height: 250px;\n    }\n    \n    .phenomena-badge {\n        font-size: 0.8rem;\n    }\n    \n    .phenomena-summary .card-body {\n        padding: 0.75rem;\n    }\n    \n    .table-toolbar {\n        flex-direction: column;\n        align-items: stretch;\n        gap: 0.75rem;\n    }\n    \n    .table-toolbar .table-exports {\n        justify-content: center;\n    }\n    \n    .full-dataset-export .d-flex {\n        flex-direction: column;\n        gap: 0.75rem;\n    }\n    \n    .full-dataset-export .btn-group {\n        align-self: center;\n    }\n}\n\n@media (max-width: 576px) {\n    .phenomena-grid {\n        max-height: 200px;\n    }\n}\n"
  },
  {
    "path": "htdocs/vtec/search.js",
    "content": "/* global iemdata, ol, olSelectLonLat, Tabulator, bootstrap */\n\nlet stateSelect = null;\nlet stateSelect3 = null;\nlet ugcSelect = null;\nlet table1 = null;\nlet table2 = null;\nlet table3 = null;\nlet table2IsByPoint = true;\nlet marker1 = null;\nlet marker2 = null;\nlet edate = null;\nlet sdate = null;\nlet edate1 = null;\nlet sdate1 = null;\nconst BACKEND_EVENTS_BYPOINT = '/json/vtec_events_bypoint.py';\nconst BACKEND_EVENTS_BYUGC = '/json/vtec_events_byugc.py';\nconst BACKEND_SBW_BYPOINT = '/json/sbw_by_point.py';\nconst BACKEND_EVENTS = \"/json/vtec_events.py\";\nconst BACKEND_EVENTS_BYSTATE = \"/json/vtec_events_bystate.py\";\n\nconst states = [[\"AL\", \"Alabama\"], [\"AK\", \"Alaska\"], [\"AZ\", \"Arizona\"],\n        [\"AR\", \"Arkansas\"], [\"CA\", \"California\"], [\"CO\", \"Colorado\"],\n        [\"CT\", \"Connecticut\"], [\"DE\", \"Delaware\"], [\"FL\", \"Florida\"],\n        [\"GA\", \"Georgia\"], [\"HI\", \"Hawaii\"], [\"ID\", \"Idaho\"],\n        [\"IL\", \"Illinois\"], [\"IN\", \"Indiana\"], [\"IA\", \"Iowa\"],\n        [\"KS\", \"Kansas\"], [\"KY\", \"Kentucky\"], [\"LA\", \"Louisiana\"],\n        [\"ME\", \"Maine\"], [\"MD\", \"Maryland\"], [\"MA\", \"Massachusetts\"],\n        [\"MI\", \"Michigan\"], [\"MN\", \"Minnesota\"], [\"MS\", \"Mississippi\"],\n        [\"MO\", \"Missouri\"], [\"MT\", \"Montana\"], [\"NE\", \"Nebraska\"],\n        [\"NV\", \"Nevada\"], [\"NH\", \"New Hampshire\"], [\"NJ\", \"New Jersey\"],\n        [\"NM\", \"New Mexico\"], [\"NY\", \"New York\"], [\"NC\", \"North Carolina\"],\n        [\"ND\", \"North Dakota\"], [\"OH\", \"Ohio\"], [\"OK\", \"Oklahoma\"],\n        [\"OR\", \"Oregon\"], [\"PA\", \"Pennsylvania\"], [\"RI\", \"Rhode Island\"],\n        [\"SC\", \"South Carolina\"], [\"SD\", \"South Dakota\"], [\"TN\", \"Tennessee\"],\n        [\"TX\", \"Texas\"], [\"UT\", \"Utah\"], [\"VT\", \"Vermont\"], [\"VA\", \"Virginia\"],\n        [\"WA\", \"Washington\"], [\"WV\", \"West Virginia\"], [\"WI\", \"Wisconsin\"],\n        [\"WY\", \"Wyoming\"],\n        [\"AM\", \"Atlantic Ocean AM\"],\n        [\"AN\", \"Atlantic Ocean AN\"],\n        [\"AS\", \"AS\"],\n        [\"DC\", \"Distict of Columbia\"],\n        [\"GM\", \"Gulf of Mexico\"],\n        [\"GU\", \"Guam\"],\n        [\"LC\", \"Lake St. Clair\"],\n        [\"LE\", \"Lake Erie\"],\n        [\"LH\", \"Lake Huron\"],\n        [\"LM\", \"Lake Michigan\"],\n        [\"LO\", \"Lake Ontario\"],\n        [\"LS\", \"Lake Superior\"],\n        [\"PH\", \"Hawaii PH Zones\"],\n        [\"PK\", \"Alaska PK Zones\"],\n        [\"PM\", \"Zones PM\"],\n        [\"PR\", \"Puerto Rico\"],\n        [\"PS\", \"Zones PS\"],\n        [\"PZ\", \"Pacific Ocean PZ\"],\n        [\"SL\", \"St. Lawrence River\"]\n];\n\n// URL parameter management functions - removing hash linking approach\nfunction getURLParams() {\n    return new URLSearchParams(window.location.search);\n}\n\nfunction updateURL(params) {\n    const url = new URL(window.location);\n    url.search = params.toString();\n    window.history.replaceState({}, '', url);\n}\n\nfunction hasParamValue(value) {\n    return value !== undefined && value !== null;\n}\n\nfunction addByPointParams(params, newParams) {\n    if (hasParamValue(newParams.lon)) {params.set('lon', newParams.lon);}\n    if (hasParamValue(newParams.lat)) {params.set('lat', newParams.lat);}\n    if (hasParamValue(newParams.buffer)) {params.set('buffer', newParams.buffer);}\n    if (hasParamValue(newParams.sdate1)) {params.set('sdate1', newParams.sdate1);}\n    if (hasParamValue(newParams.edate1)) {params.set('edate1', newParams.edate1);}\n}\n\nfunction addByUGCParams(params, newParams) {\n    if (hasParamValue(newParams.state)) {params.set('state', newParams.state);}\n    if (hasParamValue(newParams.ugc)) {params.set('ugc', newParams.ugc);}\n    if (hasParamValue(newParams.lon)) {params.set('lon', newParams.lon);}\n    if (hasParamValue(newParams.lat)) {params.set('lat', newParams.lat);}\n    if (hasParamValue(newParams.buffer)) {params.set('buffer', newParams.buffer);}\n    if (hasParamValue(newParams.sdate)) {params.set('sdate', newParams.sdate);}\n    if (hasParamValue(newParams.edate)) {params.set('edate', newParams.edate);}\n}\n\nfunction addListParams(params, newParams) {\n    if (hasParamValue(newParams.by)) {params.set('by', newParams.by);}\n    if (hasParamValue(newParams.datum)) {params.set('datum', newParams.datum);}\n    if (hasParamValue(newParams.year)) {params.set('year', newParams.year);}\n    if (hasParamValue(newParams.phenomena)) {params.set('phenomena', newParams.phenomena);}\n    if (hasParamValue(newParams.significance)) {params.set('significance', newParams.significance);}\n}\n\n// Clean URL parameters to only include those relevant to the current mode\nfunction setModeParams(mode, newParams = {}) {\n    const params = new URLSearchParams();\n    params.set('mode', mode);\n\n    // Add only relevant parameters for each mode\n    switch (mode) {\n        case 'bypoint':\n            addByPointParams(params, newParams);\n            break;\n\n        case 'byugc':\n        case 'eventsbypoint':\n            addByUGCParams(params, newParams);\n            break;\n\n        case 'list':\n            addListParams(params, newParams);\n            break;\n\n        default:\n            // No additional parameters for unknown modes\n            break;\n    }\n\n    updateURL(params);\n}\n\n/**\n * Replace HTML special characters with their entity equivalents\n * @param string val\n * @returns string converted string\n */\nfunction escapeHTML(val) {\n    return val.replace(/&/g, '&amp;')\n              .replace(/</g, '&lt;')\n              .replace(/>/g, '&gt;')\n              .replace(/\"/g, '&quot;')\n              .replace(/'/g, '&#039;');\n}\n\n/**\n * Format date for API calls - works with native HTML date inputs\n * @param {HTMLInputElement} dateInput - Native date input element\n * @returns {string} formatted date string (YYYY-MM-DD)\n */\nfunction formatDatePicker(dateInput) {\n    if (dateInput?.value) {\n        return dateInput.value; // Native date inputs already return YYYY-MM-DD format\n    }\n    // Fallback to current date\n    const now = new Date();\n    const year = now.getFullYear();\n    const month = String(now.getMonth() + 1).padStart(2, '0');\n    const day = String(now.getDate()).padStart(2, '0');\n    return `${year}-${month}-${day}`;\n}\n\nfunction updateMarkerPosition(lon, lat) {\n    document.getElementById(\"lat\").value = lat.toFixed(4);\n    document.getElementById(\"lon\").value = lon.toFixed(4);\n    const buffer = parseFloat(document.querySelector('select[name=\"buffer\"]').value);\n    const sdate1Value = document.getElementById(\"sdate1\").value;\n    const edate1Value = document.getElementById(\"edate1\").value;\n    // Set clean URL parameters for this mode only\n    setModeParams('bypoint', {\n        lon: lon.toFixed(4),\n        lat: lat.toFixed(4),\n        buffer: buffer.toFixed(2),\n        sdate1: sdate1Value,\n        edate1: edate1Value\n    });\n    updateTable();\n}\nfunction updateMarkerPosition2(lon, lat) {\n    document.getElementById(\"lat2\").value = lat.toFixed(4);\n    document.getElementById(\"lon2\").value = lon.toFixed(4);\n    updateTable2ByPoint();\n}\nfunction updateTable(){\n    const buffer = parseFloat(document.querySelector('select[name=\"buffer\"]').value);\n    let title = `Storm Based Warnings for Point: ${document.getElementById(\"lon\").value}E ${document.getElementById(\"lat\").value}N`;\n    if (buffer > 0){\n        title += ` with ${buffer} degree buffer`;\n    }\n    document.getElementById(\"table1title\").textContent = title;\n    // Do what we need to for table 1\n    const urlparams = new URLSearchParams({\n        lat: document.getElementById(\"lat\").value,\n        lon: document.getElementById(\"lon\").value,\n        buffer,\n        sdate: formatDatePicker(sdate1),\n        edate: formatDatePicker(edate1)\n    });\n    fetch(`${BACKEND_SBW_BYPOINT}?${urlparams}`)\n    .then(response => response.json())\n    .then(data => {\n        const tableData = data.sbws.map(row => ({\n            event: `<a href=\"${row.url}\" target=\"_blank\">${row.eventid}</a>`,\n            phenomena: row.ph_name,\n            significance: row.sig_name,\n            phenomena_code: row.phenomena || '',\n            significance_code: row.significance || '',\n            issued: row.issue,\n            expired: row.expire,\n            issue_hailtag: row.issue_hailtag,\n            issue_windtag: row.issue_windtag,\n            issue_tornadotag: row.issue_tornadotag,\n            issue_damagetag: row.issue_damagetag\n        }));\n        table1.setData(tableData);\n        // Update phenomena summary\n        createPhenomenaSummary(tableData, 'table1title');\n        // Update toolbar count\n        updateTableToolbar('table1title', tableData);\n        // Update table toolbar with record count\n        updateTableToolbar('table1title', tableData);\n    })\n    .catch(() => {\n        // Handle error silently\n    });\n}\n\nfunction updateTable2ByUGC(){\n    table2IsByPoint = false;\n    document.getElementById(\"table2title\").textContent = `Events for UGC: ${ugcSelect.value}`;\n\n    // Set clean URL parameters for this mode only\n    setModeParams('byugc', {\n        state: stateSelect.value,\n        ugc: ugcSelect.value,\n        sdate: sdate.value,\n        edate: edate.value\n    });\n\n    // Do what we need to for table 2\n    const urlparams = new URLSearchParams({\n        ugc: ugcSelect.value,\n        sdate: formatDatePicker(sdate),\n        edate: formatDatePicker(edate)\n    });\n    fetch(`${BACKEND_EVENTS_BYUGC}?${urlparams}`)\n    .then(response => response.json())\n    .then(data => {\n        const tableData = data.events.map(row => ({\n            event: `<a href=\"${row.url}\" target=\"_blank\">${row.eventid}</a>`,\n            phenomena: row.ph_name,\n            significance: row.sig_name,\n            phenomena_code: row.phenomena || '',\n            significance_code: row.significance || '',\n            issued: row.issue,\n            expired: row.expire\n        }));\n        table2.setData(tableData);\n        // Update phenomena summary\n        createPhenomenaSummary(tableData, 'table2title');\n        // Update table toolbar with record count\n        updateTableToolbar('table2title', tableData);\n    })\n    .catch(() => {\n        // Handle error silently\n    });\n}\n\nfunction updateTable2ByPoint(){\n    const buffer = parseFloat(document.querySelector('select[name=\"buffer2\"]').value);\n    table2IsByPoint = true;\n    let title = `Events for Point: ${document.getElementById(\"lon2\").value}E ${document.getElementById(\"lat2\").value}N`;\n    if (buffer > 0){\n        title += ` with ${buffer} degree buffer`;\n    }\n    document.getElementById(\"table2title\").textContent = title;\n\n    // Set clean URL parameters for this mode only\n    setModeParams('eventsbypoint', {\n        lat: document.getElementById(\"lat2\").value,\n        lon: document.getElementById(\"lon2\").value,\n        buffer: buffer.toString(),\n        sdate: sdate.value,\n        edate: edate.value\n    });\n\n    // Do what we need to for table 2\n    const urlparams = new URLSearchParams({\n        lat: document.getElementById(\"lat2\").value,\n        lon: document.getElementById(\"lon2\").value,\n        buffer,\n        sdate: formatDatePicker(sdate),\n        edate: formatDatePicker(edate)\n    });\n    fetch(`${BACKEND_EVENTS_BYPOINT}?${urlparams}`)\n    .then(response => response.json())\n    .then(data => {\n        const tableData = data.events.map(row => ({\n            event: `<a href=\"${row.url}\" target=\"_blank\">${row.eventid}</a>`,\n            phenomena: row.ph_name,\n            significance: row.sig_name,\n            phenomena_code: row.phenomena || '',\n            significance_code: row.significance || '',\n            issued: row.issue,\n            expired: row.expire\n        }));\n        table2.setData(tableData);\n        // Update phenomena summary\n        createPhenomenaSummary(tableData, 'table2title');\n        // Update table toolbar with record count\n        updateTableToolbar('table2title', tableData);\n    })\n    .catch(() => {\n        // Handle error silently\n    });\n}\n\nfunction updateTable3(){\n    // get currently selected by3 radio button\n    const by = escapeHTML(document.querySelector(\"input[name='by3']:checked\").value);\n    const single = escapeHTML(document.querySelector(\"input[name='single3']:checked\").value);\n    const datum = (by === \"state\") ? escapeHTML(stateSelect3.value) : escapeHTML(document.getElementById(\"wfo3\").value);\n    const year = escapeHTML(document.getElementById(\"year3\").value);\n    const params = {\n        wfo: document.getElementById(\"wfo3\").value,\n        state: stateSelect3.value,\n        year,\n    };\n\n    // Set clean URL parameters for this mode only\n    const urlParams = {\n        by,\n        datum,\n        year\n    };\n    if (single === \"single\"){\n        params.phenomena = escapeHTML(document.getElementById(\"ph3\").value);\n        params.significance = escapeHTML(document.getElementById(\"sig3\").value);\n        urlParams.phenomena = params.phenomena;\n        urlParams.significance = params.significance;\n    }\n    setModeParams('list', urlParams);\n\n    // Create descriptive title based on selection type\n    let title = `Events for ${by} ${datum} in ${year}`;\n    if (single === \"single\") {\n        const phenText = document.getElementById(\"ph3\").selectedOptions[0]?.text || \"Unknown\";\n        const sigText = document.getElementById(\"sig3\").selectedOptions[0]?.text || \"Unknown\";\n        title += ` (${phenText} / ${sigText})`;\n    } else {\n        title += ' (All VTEC Events)';\n    }\n    document.getElementById(\"table3title\").textContent = title;\n    // Do what we need to for table 3\n    fetch((by === \"wfo\" ? `${BACKEND_EVENTS}?${new URLSearchParams(params)}` : `${BACKEND_EVENTS_BYSTATE}?${new URLSearchParams(params)}`))\n    .then(response => response.json())\n    .then(data => {\n        const tableData = data.events.map(row => ({\n            event: `<a href=\"${row.uri}\" target=\"_blank\">${row.phenomena}.${row.significance}.${row.eventid}</a>`,\n            phenomena: row.ph_name,\n            significance: row.sig_name,\n            phenomena_code: row.phenomena,\n            significance_code: row.significance,\n            wfo: row.wfo,\n            locations: row.locations,\n            issued: row.issue,\n            expired: row.expire\n        }));\n        table3.setData(tableData);\n        // Update phenomena summary\n        createPhenomenaSummary(tableData, 'table3title');\n        // Update table toolbar with record count\n        updateTableToolbar('table3title', tableData);\n    })\n    .catch(() => {\n        // Handle error silently\n    });\n}\n\n\n// Bean counting and filtering functionality for phenomena/significance combinations\nfunction createPhenomenaSummary(tableData, containerId) {\n    const titleElement = document.getElementById(containerId);\n    if (!titleElement) {return;}\n\n    // Find the card body that contains the title\n    const cardBody = titleElement.closest('.card-body');\n    if (!cardBody) {return;}\n\n    // Remove existing summary\n    const existingSummary = cardBody.querySelector('.phenomena-summary');\n    if (existingSummary) {\n        existingSummary.remove();\n    }\n\n    // Count phenomena/significance combinations\n    const combinations = {};\n    tableData.forEach(row => {\n        const key = `${row.phenomena}|${row.significance}`;\n        if (!combinations[key]) {\n            combinations[key] = {\n                phenomena: row.phenomena,\n                significance: row.significance,\n                phenomena_code: row.phenomena_code || '',\n                significance_code: row.significance_code || '',\n                count: 0\n            };\n        }\n        combinations[key].count++;\n    });\n\n    // Sort by count (descending)\n    const sortedCombinations = Object.values(combinations).sort((a, b) => b.count - a.count);\n\n    if (sortedCombinations.length === 0) {return;}\n\n    // Create summary panel\n    const summaryDiv = document.createElement('div');\n    summaryDiv.className = 'phenomena-summary mt-3 mb-3';\n    summaryDiv.innerHTML = `\n        <div class=\"card border-info\">\n            <div class=\"card-header bg-light\">\n                <h6 class=\"mb-0\">\n                    <button class=\"btn btn-link text-decoration-none p-0 fw-bold\" type=\"button\"\n                            data-bs-toggle=\"collapse\" data-bs-target=\"#${containerId}-summary\"\n                            aria-expanded=\"true\" aria-controls=\"${containerId}-summary\">\n                        <i class=\"bi bi-bar-chart-fill me-2\" aria-hidden=\"true\"></i>Phenomena Summary (${tableData.length} total events)\n                        <i class=\"bi bi-chevron-up ms-2 summary-chevron\" aria-hidden=\"true\"></i>\n                    </button>\n                </h6>\n            </div>\n            <div class=\"collapse show\" id=\"${containerId}-summary\">\n                <div class=\"card-body\">\n                    <div class=\"d-flex justify-content-between align-items-center mb-2\">\n                        <small class=\"text-muted\">\n                            <i class=\"bi bi-info-circle me-1\" aria-hidden=\"true\"></i>\n                            Click any combination to filter the table:\n                        </small>\n                        <button class=\"btn btn-sm btn-outline-secondary clear-filter-btn\" type=\"button\" style=\"display: none;\"\n                                title=\"Clear current filter and show all results\">\n                            <i class=\"bi bi-x-lg me-1\" aria-hidden=\"true\"></i>Clear Filter\n                        </button>\n                    </div>\n                    <div class=\"phenomena-grid\">\n                        ${sortedCombinations.map(combo => `\n                            <div class=\"phenomena-item\" data-phenomena=\"${combo.phenomena}\" data-significance=\"${combo.significance}\"\n                                 title=\"Click to filter table by ${combo.phenomena} / ${combo.significance} (${combo.count} events)\">\n                                <div class=\"phenomena-badge\">\n                                    <span class=\"fw-bold\">${combo.phenomena}</span> / <span class=\"fw-bold\">${combo.significance}</span>\n                                    ${combo.phenomena_code?.length && combo.significance_code?.length\n                                        ? `<span class=\"badge bg-secondary ms-1\">${combo.phenomena_code}.${combo.significance_code}</span>`\n                                        : ''\n                                    }\n                                    <span class=\"badge bg-primary ms-2\">${combo.count}</span>\n                                </div>\n                            </div>\n                        `).join('')}\n                    </div>\n                </div>\n            </div>\n        </div>\n    `;\n\n    // Insert summary before the table-responsive div\n    const tableContainer = cardBody.querySelector('.table-responsive');\n    if (tableContainer) {\n        cardBody.insertBefore(summaryDiv, tableContainer);\n    }\n\n    // Add event listeners for filtering\n    summaryDiv.querySelectorAll('.phenomena-item').forEach(item => {\n        item.addEventListener('click', () => {\n            const phenomena = item.dataset.phenomena;\n            const significance = item.dataset.significance;\n            filterTableByPhenomena(containerId, phenomena, significance);\n\n            // Update UI state\n            summaryDiv.querySelectorAll('.phenomena-item').forEach(i => i.classList.remove('active'));\n            item.classList.add('active');\n            summaryDiv.querySelector('.clear-filter-btn').style.display = 'inline-block';\n        });\n    });\n\n    // Clear filter button\n    summaryDiv.querySelector('.clear-filter-btn').addEventListener('click', () => {\n        clearPhenomenaFilter(containerId);\n        summaryDiv.querySelectorAll('.phenomena-item').forEach(i => i.classList.remove('active'));\n        summaryDiv.querySelector('.clear-filter-btn').style.display = 'none';\n    });\n\n    // Toggle chevron icon\n    const collapseElement = document.getElementById(`${containerId}-summary`);\n    collapseElement.addEventListener('show.bs.collapse', () => {\n        summaryDiv.querySelector('.summary-chevron').classList.replace('bi-chevron-down', 'bi-chevron-up');\n    });\n    collapseElement.addEventListener('hide.bs.collapse', () => {\n        summaryDiv.querySelector('.summary-chevron').classList.replace('bi-chevron-up', 'bi-chevron-down');\n    });\n}\n\nfunction filterTableByPhenomena(containerId, phenomena, significance) {\n    const table = (containerId === 'table1title') ? table1 :\n                  (containerId === 'table2title') ? table2 :\n                  (containerId === 'table3title') ? table3 : null;\n    if (!table) {return;}\n\n    // Apply filter to Tabulator\n    table.setFilter([\n        {field: \"phenomena\", type: \"=\", value: phenomena},\n        {field: \"significance\", type: \"=\", value: significance}\n    ]);\n\n    // Update table title\n    const titleElement = document.getElementById(containerId);\n    if (titleElement) {\n        const originalText = titleElement.textContent.split(' (')[0]; // Remove any existing filter text\n        const filteredCount = table.getDataCount(\"active\");\n    titleElement.innerHTML = `<i class=\"bi bi-table me-2\" aria-hidden=\"true\"></i>${escapeHTML(originalText)} <small class=\"text-muted\">(filtered: ${phenomena} / ${significance} - ${filteredCount} events)</small>`;\n    }\n\n    // Update toolbar count\n    const filteredCount = table.getDataCount(\"active\");\n    const tableData = table.getData(); // Get original data for count\n    updateTableToolbar(containerId, tableData, filteredCount);\n}\n\nfunction clearPhenomenaFilter(containerId) {\n    const table = (containerId === 'table1title') ? table1 :\n                  (containerId === 'table2title') ? table2 :\n                  (containerId === 'table3title') ? table3 : null;\n    if (!table) {return;}\n\n    // Clear filter\n    table.clearFilter();\n\n    // Reset table title\n    const titleElement = document.getElementById(containerId);\n    if (titleElement) {\n        let originalText = titleElement.textContent.split(' (')[0];\n        // Prevent DOM text interpreted as HTML\n        originalText = escapeHTML(originalText);\n        titleElement.innerHTML = `<i class=\"bi bi-table me-2\" aria-hidden=\"true\"></i>${originalText}`;\n    }\n\n    // Update toolbar count (no filter)\n    const tableData = table.getData();\n    updateTableToolbar(containerId, tableData);\n}\n\n// Helper function to get container from containerId (complexity reduction)\nfunction getTableContainer(containerId) {\n    const titleElement = document.getElementById(containerId);\n    return titleElement ? titleElement.parentNode : null;\n}\n\n// Helper function to format record count text (complexity reduction)\nfunction formatRecordCountText(totalCount, filteredCount) {\n    const displayCount = filteredCount !== null ? filteredCount : totalCount;\n    const filterText = filteredCount !== null ? ` (${filteredCount} of ${totalCount} shown)` : '';\n    return `${displayCount} record${displayCount !== 1 ? 's' : ''}${filterText}`;\n}\n\n// Update table toolbar with current data count\nfunction updateTableToolbar(containerId, tableData, filteredCount = null) {\n    const container = getTableContainer(containerId);\n    if (!container) {return;}\n\n    const toolbar = container.querySelector('.table-toolbar');\n    if (!toolbar) {return;}\n\n    const countSpan = toolbar.querySelector('.table-count');\n    if (countSpan) {\n        countSpan.textContent = formatRecordCountText(tableData.length, filteredCount);\n    }\n}\n\n// Helper functions for buildUI complexity reduction\nfunction setupExportButtons() {\n    document.querySelectorAll(\".iemtool\").forEach(btn => {\n        btn.addEventListener('click', (event) => {\n            event.preventDefault();\n            event.stopPropagation();\n            let url = BACKEND_SBW_BYPOINT;\n            let params = {\n                fmt: (btn.dataset.opt === \"csv\") ? \"csv\" : \"xlsx\",\n                lat: document.getElementById(\"lat\").value,\n                lon: document.getElementById(\"lon\").value,\n                buffer: document.querySelector('select[name=\"buffer\"]').value,\n                sdate: formatDatePicker(sdate1),\n                edate: formatDatePicker(edate1)\n            };\n            if (btn.dataset.table === \"2\"){\n                url = BACKEND_EVENTS_BYUGC;\n                params.ugc = ugcSelect.value;\n                params.sdate = formatDatePicker(sdate);\n                params.edate = formatDatePicker(edate);\n                if (table2IsByPoint) {\n                    url = BACKEND_EVENTS_BYPOINT;\n                    params.lon = document.getElementById(\"lon2\").value;\n                    params.lat = document.getElementById(\"lat2\").value;\n                }\n            }\n            if (btn.dataset.table === \"3\"){\n                const by = document.querySelector(\"input[name='by3']:checked\").value;\n                url = (by === \"state\") ? BACKEND_EVENTS_BYSTATE: BACKEND_EVENTS;\n                params = {\n                    fmt: (btn.dataset.opt === \"csv\") ? \"csv\" : \"xlsx\",\n                    wfo: document.getElementById(\"wfo3\").value,\n                    state: stateSelect3.value,\n                    year: document.getElementById(\"year3\").value,\n                    phenomena: document.getElementById(\"ph3\").value,\n                    significance: document.getElementById(\"sig3\").value\n                };\n            }\n            // For CSV, trigger download; for Excel, open in new tab to avoid reload\n            const downloadUrl = `${url}?${new URLSearchParams(params).toString()}`;\n            if (btn.dataset.opt === \"csv\") {\n                // Create a hidden link and click it to trigger download\n                const aa = document.createElement('a');\n                aa.href = downloadUrl;\n                aa.download = '';\n                document.body.appendChild(aa);\n                aa.click();\n                document.body.removeChild(aa);\n            } else {\n                // Open Excel export in a new tab to avoid page reload\n                window.open(downloadUrl, '_blank');\n            }\n        });\n    });\n}\n\nfunction setupTableConfigurations() {\n    // Tables\n    table1 = new Tabulator(\"#table1\", {\n        layout: \"fitColumns\",\n        placeholder: \"Drag marker on map to auto-populate this table\",\n        height: \"400px\",\n        columns: [\n            {\n                title: \"Event\",\n                field: \"event\",\n                formatter: \"html\",\n                headerSort: false,\n                width: 120,\n                download: (value) => {\n                    // Extract eventid from the HTML string for export\n                    const div = document.createElement('div');\n                    div.innerHTML = value;\n                    const aa = div.querySelector('a');\n                    return aa ? aa.textContent : value;\n                }\n            },\n            {title: \"Phenomena\", field: \"phenomena\", headerSort: true, sorter: \"string\"},\n            {title: \"Significance\", field: \"significance\", headerSort: true, sorter: \"string\"},\n            {title: \"Issued\", field: \"issued\", headerSort: true, sorter: customDateTimeSorter},\n            {title: \"Expired\", field: \"expired\", headerSort: true, sorter: customDateTimeSorter},\n            {title: \"Issue Hail Tag\", field: \"issue_hailtag\", headerSort: true, sorter: \"string\"},\n            {title: \"Issue Wind Tag\", field: \"issue_windtag\", headerSort: true, sorter: \"string\"},\n            {title: \"Issue Tornado Tag\", field: \"issue_tornadotag\", headerSort: true, sorter: \"string\"},\n            {title: \"Issue Damage Tag\", field: \"issue_damagetag\", headerSort: true, sorter: \"string\"}\n        ],\n        initialSort: [\n            {column: \"issued\", dir: \"desc\"}\n        ]\n    });\n\n    // Add table toolbar with current view exports\n    const table1Title = document.getElementById(\"table1title\");\n    if (table1Title && !table1Title.querySelector('.table-toolbar')) {\n        const toolbarDiv = document.createElement('div');\n        toolbarDiv.className = 'table-toolbar d-flex justify-content-between align-items-center mb-3 p-2 bg-light border rounded';\n        toolbarDiv.innerHTML = `${''}\n            <div class=\"table-info\">\n                <small class=\"text-muted\">\n                    <i class=\"bi bi-table me-1\" aria-hidden=\"true\"></i>\n                    <span class=\"table-count\">Table data</span>\n                </small>\n            </div>\n            <div class=\"table-exports\">\n                <span class=\"badge bg-info me-2\">Export Current View:</span>\n                <button type=\"button\" class=\"btn btn-sm btn-success me-1\" onclick=\"table1.download('xlsx', 'sbw-current-view.xlsx')\" title=\"Export visible table data to Excel\">\n                    <i class=\"bi bi-download me-1\" aria-hidden=\"true\"></i>Excel\n                </button>\n                <button type=\"button\" class=\"btn btn-sm btn-primary\" onclick=\"table1.download('csv', 'sbw-current-view.csv')\" title=\"Export visible table data to CSV\">\n                    <i class=\"bi bi-download me-1\" aria-hidden=\"true\"></i>CSV\n                </button>\n            </div>\n        `;\n\n        // Insert toolbar after the phenomena summary (or after title if no summary)\n        const phenomenaSummary = table1Title.parentNode.querySelector('.phenomena-summary');\n        const insertAfter = phenomenaSummary || table1Title;\n        insertAfter.parentNode.insertBefore(toolbarDiv, insertAfter.nextSibling);\n    }\n\n    table2 = new Tabulator(\"#table2\", {\n        layout: \"fitColumns\",\n        placeholder: \"Drag marker on map or select UGC to auto-populate this table\",\n        height: \"400px\",\n        columns: [\n            {\n                title: \"Event\",\n                field: \"event\",\n                formatter: \"html\",\n                headerSort: false,\n                width: 120,\n                download: (value) => {\n                    const div = document.createElement('div');\n                    div.innerHTML = value;\n                    const aa = div.querySelector('a');\n                    return aa ? aa.textContent : value;\n                }\n            },\n            {title: \"Phenomena\", field: \"phenomena\", headerSort: true, sorter: \"string\"},\n            {title: \"Significance\", field: \"significance\", headerSort: true, sorter: \"string\"},\n            {title: \"Issued\", field: \"issued\", headerSort: true, sorter: customDateTimeSorter},\n            {title: \"Expired\", field: \"expired\", headerSort: true, sorter: customDateTimeSorter}\n        ],\n        initialSort: [\n            {column: \"issued\", dir: \"desc\"}\n        ]\n    });\n\n    // Add table toolbar with current view exports for table2\n    const table2Title = document.getElementById(\"table2title\");\n    if (table2Title && !table2Title.querySelector('.table-toolbar')) {\n        const toolbarDiv = document.createElement('div');\n        toolbarDiv.className = 'table-toolbar d-flex justify-content-between align-items-center mb-3 p-2 bg-light border rounded';\n        toolbarDiv.innerHTML = `${''}\n            <div class=\"table-info\">\n                <small class=\"text-muted\">\n                    <i class=\"bi bi-table me-1\" aria-hidden=\"true\"></i>\n                    <span class=\"table-count\">Table data</span>\n                </small>\n            </div>\n            <div class=\"table-exports\">\n                <span class=\"badge bg-info me-2\">Export Current View:</span>\n                <button type=\"button\" class=\"btn btn-sm btn-success me-1\" onclick=\"table2.download('xlsx', 'events-current-view.xlsx')\" title=\"Export visible table data to Excel\">\n                    <i class=\"bi bi-download me-1\" aria-hidden=\"true\"></i>Excel\n                </button>\n                <button type=\"button\" class=\"btn btn-sm btn-primary\" onclick=\"table2.download('csv', 'events-current-view.csv')\" title=\"Export visible table data to CSV\">\n                    <i class=\"bi bi-download me-1\" aria-hidden=\"true\"></i>CSV\n                </button>\n            </div>\n        `;\n\n        // Insert toolbar after the phenomena summary (or after title if no summary)\n        const phenomenaSummary = table2Title.parentNode.querySelector('.phenomena-summary');\n        const insertAfter = phenomenaSummary || table2Title;\n        insertAfter.parentNode.insertBefore(toolbarDiv, insertAfter.nextSibling);\n    }\n\n    table3 = new Tabulator(\"#table3\", {\n        layout: \"fitColumns\",\n        placeholder: \"Select options to auto-populate this table\",\n        height: \"400px\",\n        columns: [\n            {\n                title: \"Event\",\n                field: \"event\",\n                formatter: \"html\",\n                headerSort: false,\n                width: 120,\n                download: (value) => {\n                    const div = document.createElement('div');\n                    div.innerHTML = value;\n                    const aa = div.querySelector('a');\n                    return aa ? aa.textContent : value;\n                }\n            },\n            {title: \"Phenomena\", field: \"phenomena\", headerSort: true, sorter: \"string\"},\n            {title: \"Significance\", field: \"significance\", headerSort: true, sorter: \"string\"},\n            {title: \"WFO\", field: \"wfo\", headerSort: true, sorter: \"string\"},\n            {title: \"Locations\", field: \"locations\", headerSort: true, sorter: \"string\"},\n            {title: \"Issued\", field: \"issued\", headerSort: true, sorter: customDateTimeSorter},\n            {title: \"Expired\", field: \"expired\", headerSort: true, sorter: customDateTimeSorter}\n        ],\n        initialSort: [\n            {column: \"issued\", dir: \"desc\"}\n        ]\n    });\n\n    // Add table toolbar with current view exports for table3\n    const table3Title = document.getElementById(\"table3title\");\n    if (table3Title && !table3Title.querySelector('.table-toolbar')) {\n        const toolbarDiv = document.createElement('div');\n        toolbarDiv.className = 'table-toolbar d-flex justify-content-between align-items-center mb-3 p-2 bg-light border rounded';\n        toolbarDiv.innerHTML = `${''}\n            <div class=\"table-info\">\n                <small class=\"text-muted\">\n                    <i class=\"bi bi-table me-1\" aria-hidden=\"true\"></i>\n                    <span class=\"table-count\">Table data</span>\n                </small>\n            </div>\n            <div class=\"table-exports\">\n                <span class=\"badge bg-info me-2\">Export Current View:</span>\n                <button type=\"button\" class=\"btn btn-sm btn-success me-1\" onclick=\"table3.download('xlsx', 'list-current-view.xlsx')\" title=\"Export visible table data to Excel\">\n                    <i class=\"bi bi-download me-1\" aria-hidden=\"true\"></i>Excel\n                </button>\n                <button type=\"button\" class=\"btn btn-sm btn-primary\" onclick=\"table3.download('csv', 'list-current-view.csv')\" title=\"Export visible table data to CSV\">\n                    <i class=\"bi bi-download me-1\" aria-hidden=\"true\"></i>CSV\n                </button>\n            </div>\n        `;\n\n        table3Title.parentNode.insertBefore(toolbarDiv, table3Title.nextSibling);\n    }\n}\n\nfunction setupDateInputs() {\n    // Native date inputs - applying jQuery removal rule\n    sdate = document.querySelector(\"input[name='sdate']\");\n    edate = document.querySelector(\"input[name='edate']\");\n    sdate1 = document.querySelector(\"input[name='sdate1']\");\n    edate1 = document.querySelector(\"input[name='edate1']\");\n\n    // Get tomorrow's UTC date\n    const tomorrow = new Date();\n    tomorrow.setUTCDate(tomorrow.getUTCDate() + 1);\n    const tomorrowUTC = tomorrow.toISOString().split('T')[0];\n\n    // Set default values\n    sdate.value = \"1986-01-01\";\n    edate.value = tomorrowUTC; // Tomorrow's UTC date\n    sdate1.value = \"2002-01-01\";\n    edate1.value = tomorrowUTC; // Tomorrow's UTC date\n\n    // Set min/max attributes for date validation\n    sdate.min = \"1986-01-01\";\n    sdate.max = tomorrowUTC;\n    edate.min = \"1986-01-01\";\n    edate.max = tomorrowUTC;\n    sdate1.min = \"2002-01-01\";\n    sdate1.max = tomorrowUTC;\n    edate1.min = \"2002-01-01\";\n    edate1.max = tomorrowUTC;\n\n    // Add event listeners for date changes\n    sdate.addEventListener('change', () => {\n        updateTable2ByUGC();\n    });\n    edate.addEventListener('change', () => {\n        updateTable2ByUGC();\n    });\n    sdate1.addEventListener('change', () => {\n        updateTable();\n    });\n    edate1.addEventListener('change', () => {\n        updateTable();\n    });\n}\n\nfunction setupSelectBoxes() {\n    // select boxes - applying jQuery removal rule\n    const data = states.map(obj => ({\n        id: obj[0],\n        text: obj[1]\n    }));\n\n    // Setup state selects with vanilla JavaScript\n    stateSelect3 = document.getElementById(\"state3\");\n    stateSelect = document.getElementById(\"state\");\n\n    // Populate state selects\n    [stateSelect3, stateSelect].forEach(select => {\n        // Clear existing options\n        select.innerHTML = '<option value=\"\">Select a geography/state</option>';\n        data.forEach(item => {\n            const option = document.createElement('option');\n            option.value = item.id;\n            option.textContent = item.text;\n            select.appendChild(option);\n        });\n    });\n\n    stateSelect.addEventListener('change', (e) => {\n        const state = e.target.value;\n        if (!state) {return;}\n        const existingUGC = getURLParams().get('ugc');\n        const nextParams = { state };\n        if (existingUGC?.startsWith(state)) {\n            nextParams.ugc = existingUGC;\n        }\n\n        // Set clean URL parameters for this mode only\n        setModeParams('byugc', nextParams);\n\n        // Load the ugcSelect box\n        fetch(`/json/state_ugc.json?${new URLSearchParams({ state })}`)\n        .then(response => response.json())\n        .then(data2 => {\n            ugcSelect.innerHTML = '<option value=\"\">Select County/Zone</option>';\n            data2.ugcs.forEach(obj => {\n                const extra = (obj.ugc.substring(2, 1) === \"Z\") ? \" (Zone)\": \"\";\n                const option = document.createElement('option');\n                option.value = obj.ugc;\n                option.textContent = `[${obj.ugc}] ${obj.name}${extra}`;\n                ugcSelect.appendChild(option);\n            });\n            // Check if we need to set a specific UGC from URL parameters\n            const urlParams = getURLParams();\n            const targetUGC = urlParams.get('ugc');\n            if (targetUGC){\n                ugcSelect.value = targetUGC;\n                updateTable2ByUGC();\n            }\n        })\n        .catch(() => {\n            // Handle error silently\n        });\n    });\n\n    ugcSelect = document.querySelector(\"select[name='ugc']\");\n    ugcSelect.innerHTML = '<option value=\"\">Select County/Zone after Selecting Geography</option>';\n    ugcSelect.addEventListener('change', (e) => {\n        const ugc = e.target.value;\n        if (!ugc) {return;}\n        // Set clean URL parameters for this mode only - include both state and ugc\n        setModeParams('byugc', {\n            state: stateSelect.value,\n            ugc\n        });\n        updateTable2ByUGC();\n    });\n}\n\nfunction setupManualButtons() {\n    // Manual Point Entry\n    document.getElementById(\"manualpt\").addEventListener('click', () => {\n        const la = parseFloat(document.getElementById(\"lat\").value);\n        const lo = parseFloat(document.getElementById(\"lon\").value);\n        if (isNaN(la) || isNaN(lo)){\n            return;\n        }\n        // Update the marker's position\n        marker1.setGeometry(new ol.geom.Point(ol.proj.fromLonLat([lo, la])));\n        updateMarkerPosition(lo, la);\n    });\n    document.getElementById(\"manualugc\").addEventListener('click', () => {\n        const ugc = ugcSelect.value;\n        if (ugc === null){\n            return;\n        }\n        // Set clean URL parameters for this mode only - include both state and ugc\n        setModeParams('byugc', {\n            state: stateSelect.value,\n            ugc\n        });\n        updateTable2ByUGC();\n    });\n    document.getElementById(\"manualpt2\").addEventListener('click', () => {\n        const la = parseFloat(document.getElementById(\"lat2\").value);\n        const lo = parseFloat(document.getElementById(\"lon2\").value);\n        if (isNaN(la) || isNaN(lo)){\n            return;\n        }\n        marker2.setGeometry(new ol.geom.Point(ol.proj.fromLonLat([lo, la])));\n        updateMarkerPosition2(lo, la);\n    });\n    document.getElementById(\"button3\").addEventListener('click', () => {\n        updateTable3();\n    });\n}\n\nfunction setupDropdownPopulation() {\n    // Populate wfos select with iemdata.wfos data - applying jQuery removal rule\n    const wfoSelect = document.querySelector(\"select[name='wfo']\");\n    wfoSelect.innerHTML = '<option value=\"\">Select a WFO</option>';\n    iemdata.wfos.forEach(obj => {\n        const option = document.createElement('option');\n        option.value = obj[0];\n        option.textContent = `[${obj[0]}] ${obj[1]}`;\n        wfoSelect.appendChild(option);\n    });\n\n    const phSelect = document.querySelector(\"select[name='ph']\");\n    phSelect.innerHTML = '<option value=\"\">Select a Phenomena</option>';\n    iemdata.vtec_phenomena.forEach(obj => {\n        const option = document.createElement('option');\n        option.value = obj[0];\n        option.textContent = obj[1];\n        phSelect.appendChild(option);\n    });\n\n    const sigSelect = document.querySelector(\"select[name='sig']\");\n    sigSelect.innerHTML = '<option value=\"\">Select a Significance</option>';\n    iemdata.vtec_significance.forEach(obj => {\n        const option = document.createElement('option');\n        option.value = obj[0];\n        option.textContent = obj[1];\n        sigSelect.appendChild(option);\n    });\n    // populate year3 select with values from 1986 to current year\n    const year3 = document.querySelector(\"select[name='year']\");\n    const currentYear = new Date().getFullYear();\n    for (let i = 1986; i <= currentYear; i++){\n        const option = new Option(i, i, false, false);\n        if (i === currentYear) {\n            option.selected = true; // Select current year by default\n        }\n        year3.appendChild(option);\n    }\n\n    // Set up radio button logic for tab 3 (Single vs All VTEC events)\n    const singleRadio = document.getElementById('single3');\n    const allRadio = document.getElementById('all3');\n    const phSelect2 = document.querySelector(\"select[name='ph']\");\n    const sigSelect2 = document.querySelector(\"select[name='sig']\");\n\n    // Function to update the state of phenomena and significance selects\n    function updateVTECSelects() {\n        const isSingleSelected = singleRadio.checked;\n\n        // Enable/disable the selects based on radio button state\n        phSelect2.disabled = !isSingleSelected;\n        sigSelect2.disabled = !isSingleSelected;\n\n        // Update visual styling\n        if (isSingleSelected) {\n            phSelect2.parentElement.classList.remove('opacity-50');\n            sigSelect2.parentElement.classList.remove('opacity-50');\n        } else {\n            phSelect2.parentElement.classList.add('opacity-50');\n            sigSelect2.parentElement.classList.add('opacity-50');\n            // Clear selections when switching to \"All\"\n            phSelect2.value = '';\n            sigSelect2.value = '';\n        }\n    }\n\n    // Add event listeners for radio buttons\n    singleRadio.addEventListener('change', updateVTECSelects);\n    allRadio.addEventListener('change', updateVTECSelects);\n\n    // Initialize the state\n    updateVTECSelects();\n}\n\nfunction buildUI(){\n    setupExportButtons();\n    setupTableConfigurations();\n    setupDateInputs();\n    setupSelectBoxes();\n    setupManualButtons();\n    setupDropdownPopulation();\n};\n\n// Helper functions for processURLParams complexity reduction\nfunction processHashMigration() {\n    const hash = window.location.hash;\n    if (hash && hash.length > 1) {\n        migrateHashToURLParams(hash.substring(1));\n        return true; // Will reload with new URL params\n    }\n    return false;\n}\n\nfunction handleByUGCMode(urlParams) {\n    const state = urlParams.get('state');\n    const ugc = urlParams.get('ugc');\n    const sdateParam = urlParams.get('sdate');\n    const edateParam = urlParams.get('edate');\n\n    // Set date values if provided\n    if (sdateParam) {\n        document.querySelector('input[name=\"sdate\"]').value = sdateParam;\n    }\n    if (edateParam) {\n        document.querySelector('input[name=\"edate\"]').value = edateParam;\n    }\n\n    // If we have a state parameter, use it directly\n    if (state) {\n        stateSelect.value = state;\n        stateSelect.dispatchEvent(new Event('change'));\n    } else if (ugc) {\n        // Fallback: extract state from UGC code\n        const stateFromUGC = ugc.substring(0, 2);\n        stateSelect.value = stateFromUGC;\n        stateSelect.dispatchEvent(new Event('change'));\n    }\n}\n\nfunction handleByPointMode(urlParams) {\n    const lat = parseFloat(urlParams.get('lat'));\n    const lon = parseFloat(urlParams.get('lon'));\n    const buffer = parseFloat(urlParams.get('buffer'));\n    const sdate1Param = urlParams.get('sdate1');\n    const edate1Param = urlParams.get('edate1');\n\n    // Set date values if provided\n    if (sdate1Param) {\n        document.getElementById('sdate1').value = sdate1Param;\n    }\n    if (edate1Param) {\n        document.getElementById('edate1').value = edate1Param;\n    }\n\n    if (!isNaN(lat) && !isNaN(lon)) {\n        if (!isNaN(buffer)) {\n            document.querySelector('select[name=\"buffer\"]').value = buffer;\n        }\n        // Update the marker position physically and trigger data loading\n        if (marker1) {\n            marker1.setGeometry(new ol.geom.Point(ol.proj.fromLonLat([lon, lat])));\n        }\n        updateMarkerPosition(lon, lat);\n    }\n}\n\nfunction handleEventsByPointMode(urlParams) {\n    // This mode uses the byugc tab but with different functionality\n    const lat2 = parseFloat(urlParams.get('lat'));\n    const lon2 = parseFloat(urlParams.get('lon'));\n    const buffer2 = parseFloat(urlParams.get('buffer'));\n    if (!isNaN(lat2) && !isNaN(lon2)) {\n        if (!isNaN(buffer2)) {\n            document.querySelector('select[name=\"buffer2\"]').value = buffer2;\n        }\n        updateMarkerPosition2(lon2, lat2);\n    }\n}\n\nfunction handleListMode(urlParams) {\n    const by = urlParams.get('by');\n    const datum = urlParams.get('datum');\n    const year = urlParams.get('year');\n    const phenomena = urlParams.get('phenomena');\n    const significance = urlParams.get('significance');\n\n    if (by && datum && year) {\n        document.querySelector(`input[name='by3'][value='${by}']`).checked = true;\n        if (phenomena && significance) {\n            document.querySelector(\"input[name='single3'][value='single']\").checked = true;\n            document.getElementById(\"ph3\").value = phenomena;\n            document.getElementById(\"sig3\").value = significance;\n        } else {\n            document.querySelector(\"input[name='single3'][value='all']\").checked = true;\n        }\n        document.getElementById(\"year3\").value = year;\n\n        if (by === \"state\"){\n            stateSelect3.value = datum;\n        } else {\n            document.getElementById(\"wfo3\").value = datum;\n        }\n        // Update VTEC select states after setting radio buttons\n        const updateEvent = new Event('change');\n        document.querySelector(\"input[name='single3']:checked\").dispatchEvent(updateEvent);\n        updateTable3();\n    }\n}\n\n// Process URL parameters on app initialization - now with Bootstrap tabs\nfunction processURLParams(){\n    const urlParams = getURLParams();\n    let mode = urlParams.get('mode');\n\n    // Handle backward compatibility: migrate hash to URL parameters\n    if (processHashMigration()) {\n        return; // Will reload with new URL params\n    }\n\n    // Default to first tab if no mode specified\n    if (!mode) {\n        mode = 'bypoint';\n        const params = getURLParams();\n        params.set('mode', mode);\n        updateURL(params);\n    }\n\n    // Activate the appropriate Bootstrap tab\n    activateTab(mode);\n\n    switch (mode) {\n        case 'byugc':\n            handleByUGCMode(urlParams);\n            break;\n\n        case 'bypoint':\n            handleByPointMode(urlParams);\n            break;\n\n        case 'eventsbypoint':\n            handleEventsByPointMode(urlParams);\n            break;\n\n        case 'list':\n            handleListMode(urlParams);\n            break;\n\n        default:\n            // Unknown mode, use default (bypoint) already set above\n            break;\n    }\n}\n\n// Activate Bootstrap tab based on mode\nfunction activateTab(mode) {\n    // Map modes to tab IDs\n    let tabId = 'bypoint-tab'; // Default tab\n    switch (mode) {\n        case 'bypoint':\n            tabId = 'bypoint-tab';\n            break;\n        case 'byugc':\n        case 'eventsbypoint':\n            tabId = 'byugc-tab';\n            break;\n        case 'list':\n            tabId = 'list-tab';\n            break;\n        default:\n            // Use default tab (bypoint-tab) already set above\n            break;\n    }\n\n    // Activate the tab using Bootstrap 5 API\n    const tabElement = document.getElementById(tabId);\n    if (tabElement) {\n        const tab = new bootstrap.Tab(tabElement);\n        tab.show();\n    }\n}\n\n// Helper functions for hash migration (complexity reduction)\nfunction handleByUGCHashMigration(tokens, params) {\n    params.set('mode', 'byugc');\n    params.set('ugc', tokens[1]);\n}\n\nfunction handleByPointHashMigration(tokens, params) {\n    params.set('mode', 'bypoint');\n    params.set('lon', tokens[1]);\n    params.set('lat', tokens[2]);\n    if (tokens.length >= 4) {\n        params.set('buffer', tokens[3]);\n    }\n}\n\nfunction handleEventsByPointHashMigration(tokens, params) {\n    params.set('mode', 'eventsbypoint');\n    params.set('lon', tokens[1]);\n    params.set('lat', tokens[2]);\n    if (tokens.length >= 4) {\n        params.set('buffer', tokens[3]);\n    }\n}\n\nfunction handleListHashMigration(tokens, params) {\n    params.set('mode', 'list');\n    params.set('by', tokens[1]);\n    params.set('datum', tokens[2]);\n    params.set('year', tokens[3]);\n    if (tokens.length >= 6) {\n        params.set('phenomena', tokens[4]);\n        params.set('significance', tokens[5]);\n    }\n}\n\n// Migrate old hash URLs to URL parameters for backward compatibility\nfunction migrateHashToURLParams(hash) {\n    const tokens = hash.split(\"/\");\n    const params = new URLSearchParams();\n\n    if (tokens.length >= 2) {\n        if (tokens[0] === 'byugc') {\n            handleByUGCHashMigration(tokens, params);\n        } else if (tokens[0] === 'bypoint' && tokens.length >= 3) {\n            handleByPointHashMigration(tokens, params);\n        } else if (tokens[0] === 'eventsbypoint' && tokens.length >= 3) {\n            handleEventsByPointHashMigration(tokens, params);\n        } else if (tokens[0] === 'list' && tokens.length >= 4) {\n            handleListHashMigration(tokens, params);\n        }\n    }\n\n    // Replace URL with parameters and remove hash\n    const url = new URL(window.location);\n    url.search = params.toString();\n    url.hash = '';\n    window.location.replace(url);\n}\n\nfunction parseLuxonDate(val) {\n    if (!val) {return null;}\n    let dt = window.luxon.DateTime.fromISO(val);\n    if (!dt.isValid) {dt = window.luxon.DateTime.fromFormat(val, \"yyyy-MM-dd HH:mm\");}\n    return dt.isValid ? dt : null;\n}\n\n// Custom datetime sorter using Luxon for proper date/time sorting\nfunction customDateTimeSorter(a, b) {\n    if (!a && !b) {return 0;}\n    if (!a) {return 1;}\n    if (!b) {return -1;}\n    const dateA = parseLuxonDate(a);\n    const dateB = parseLuxonDate(b);\n    if (!dateA && !dateB) {return 0;}\n    if (!dateA) {return 1;}\n    if (!dateB) {return -1;}\n    return dateA.toMillis() - dateB.toMillis();\n}\n\n// Initialize when DOM is ready\nfunction initializeApp() {\n    buildUI();\n\n    const res1 = olSelectLonLat(\"map\", updateMarkerPosition);\n    marker1 = res1.marker;\n    const res2 = olSelectLonLat(\"map2\", updateMarkerPosition2);\n    marker2 = res2.marker\n\n    // Process URL parameters after markers are initialized\n    processURLParams();\n\n    // Bootstrap tab event listeners - update URL when tabs change (clean parameters)\n    document.getElementById('bypoint-tab').addEventListener('shown.bs.tab', () => {\n        setModeParams('bypoint');\n    });\n\n    document.getElementById('byugc-tab').addEventListener('shown.bs.tab', () => {\n        const urlParams = getURLParams();\n        const currentMode = urlParams.get('mode');\n        const state = stateSelect?.value || urlParams.get('state') || '';\n        const ugc = ugcSelect?.value || urlParams.get('ugc') || '';\n        const modeParams = {};\n        const targetMode = (!currentMode || currentMode === 'byugc') ? 'byugc' : currentMode;\n        if (state) {\n            modeParams.state = state;\n        }\n        if (ugc) {\n            modeParams.ugc = ugc;\n        }\n        setModeParams(targetMode, modeParams);\n    });\n\n    document.getElementById('list-tab').addEventListener('shown.bs.tab', () => {\n        setModeParams('list');\n    });\n}\n\n// Use vanilla JS for DOM ready\nif (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initializeApp);\n} else {\n    initializeApp();\n}\n"
  },
  {
    "path": "htdocs/vtec/search.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 154);\nrequire_once \"../../include/mlib.php\";\nforce_https();\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/iemprop.php\";\nrequire_once \"../../include/forms.php\";\n$lat = get_float404('lat', 41.53);\n$lon = get_float404('lon', -93.653);\n$t = new MyView();\n$OL = \"10.9.0\";\n$t->jsextra = <<<EOM\n\n<script type=\"text/javascript\" src=\"wfos.js\"></script>\n<script src='/vendor/openlayers/{$OL}/ol.js'></script>\n<script type=\"text/javascript\" src=\"/js/olselect-lonlat.js?v=3\"></script>\n<script type=\"text/javascript\" src=\"https://oss.sheetjs.com/sheetjs/xlsx.full.min.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/luxon@3.4.4/build/global/luxon.min.js\"></script>\n<script src=\"https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator.min.js\"></script>\n<script type=\"text/javascript\" src=\"search.js?v=4\"></script>\nEOM;\n$t->headextra = <<<EOM\n<link href=\"https://unpkg.com/tabulator-tables@6.3.1/dist/css/tabulator.min.css\" rel=\"stylesheet\">\n<link rel='stylesheet' href=\"/vendor/openlayers/{$OL}/ol.css\" type='text/css'>\n<link rel=\"stylesheet\" href=\"search.css\" type=\"text/css\">\nEOM;\n$t->title = \"NWS Warning Search by Point or County/Zone\";\n\n$t->content = <<<EOM\n<h1 class=\"h4 mb-3\">NWS Watch / Warning / Advisory Search</h1>\n<p>This application allows you to search for National Weather Service Watch,\nWarning, and Advisories using three different search methods:</p>\n<div id=\"vtec-search-status\" class=\"visually-hidden\" role=\"status\" aria-live=\"polite\"></div>\n\n<!-- Bootstrap Navigation Tabs -->\n<ul class=\"nav nav-tabs vtec-search-tabs\" id=\"searchTabs\" role=\"tablist\" aria-label=\"Search modes\">\n    <li class=\"nav-item\" role=\"presentation\">\n        <button class=\"nav-link\" id=\"bypoint-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#bypoint\" type=\"button\" role=\"tab\" aria-controls=\"bypoint\" aria-selected=\"false\">\n            <i class=\"bi bi-geo-alt-fill me-2\" aria-hidden=\"true\"></i>Storm Based Warnings by Point\n        </button>\n    </li>\n    <li class=\"nav-item\" role=\"presentation\">\n        <button class=\"nav-link\" id=\"byugc-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#byugc\" type=\"button\" role=\"tab\" aria-controls=\"byugc\" aria-selected=\"false\">\n            <i class=\"bi bi-map me-2\" aria-hidden=\"true\"></i>Warnings by County/Zone or Point\n        </button>\n    </li>\n    <li class=\"nav-item\" role=\"presentation\">\n        <button class=\"nav-link\" id=\"list-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#list\" type=\"button\" role=\"tab\" aria-controls=\"list\" aria-selected=\"false\">\n            <i class=\"bi bi-list-ul me-2\" aria-hidden=\"true\"></i>List by State/WFO\n        </button>\n    </li>\n</ul>\n\n<!-- Tab Content -->\n<div class=\"tab-content\" id=\"searchTabContent\">\n    <!-- Tab 1: Storm Based Warnings by Point -->\n    <div class=\"tab-pane fade\" id=\"bypoint\" role=\"tabpanel\" aria-labelledby=\"bypoint-tab\">\n        <div class=\"mt-3\">\n            <p class=\"section-description\">The official warned area for some products the NWS issues is a polygon.\n            This section allows you to specify a point on the map below by dragging the\n            marker to where you are interested in. Once you stop dragging the marker, the\n            grid will update and provide a listing of storm based warnings found.</p>\n\n            <div class=\"row\">\n                <div class=\"col-md-4\">\n                    <div class=\"card vtec-card mb-3\">\n                        <div class=\"card-body\">\n                            <h6 class=\"card-title\"><i class=\"bi bi-gear-fill me-2\" aria-hidden=\"true\"></i>Search Parameters</h6>\n\n                            <div class=\"coordinate-section\">\n                                <strong>Enter coordinates manually:</strong><br />\n                                <div class=\"mt-2\">\n                                    <label for=\"lat\" class=\"form-label\">Latitude (deg N):</label>\n                                    <input id=\"lat\" value=\"{$lat}\" class=\"form-control coordinate-input\">\n                                </div>\n                                <div class=\"mt-2\">\n                                    <label for=\"lon\" class=\"form-label\">Longitude (deg E):</label>\n                                    <input id=\"lon\" value=\"{$lon}\" class=\"form-control coordinate-input\">\n                                </div>\n                            </div>\n\n                            <div class=\"mb-3\">\n                                <label for=\"buffer\" class=\"form-label\">Approximate Location Buffer Radius:</label>\n                                <select name=\"buffer\" class=\"form-select\">\n                                    <option value=\"0\">0 (Exact point)</option>\n                                    <option value=\"0.01\">~1 mile (0.01 deg)</option>\n                                    <option value=\"0.1\">~10 miles (0.10 deg)</option>\n                                </select>\n                            </div>\n\n                            <div class=\"mb-2\">\n                                <label for=\"sdate1\" class=\"form-label\">Start Date:</label>\n                                <input name=\"sdate1\" type=\"date\" id=\"sdate1\" class=\"form-control\">\n                            </div>\n                            <div class=\"mb-3\">\n                                <label for=\"edate1\" class=\"form-label\">End Date:</label>\n                                <input name=\"edate1\" type=\"date\" id=\"edate1\" class=\"form-control\">\n                            </div>\n\n                            <button type=\"button\" class=\"btn btn-primary w-100\" id=\"manualpt\">\n                                <i class=\"bi bi-arrow-repeat me-2\" aria-hidden=\"true\"></i>Update Results\n                            </button>\n                        </div>\n                    </div>\n\n                    <div class=\"card vtec-card\">\n                        <div class=\"card-body\">\n                            <h6 class=\"card-title\"><i class=\"bi bi-cursor me-2\" aria-hidden=\"true\"></i>Interactive Map</h6>\n                            <p class=\"card-text\">Drag the marker to select coordinates:</p>\n                            <div\n                             id=\"map\"\n                             class=\"map\"\n                             data-initial-lat=\"{$lat}\"\n                             data-initial-lon=\"{$lon}\"\n                             data-lat-input=\"lat\"\n                             data-lon-input=\"lon\"></div>\n                        </div>\n                    </div>\n                </div>\n\n                <div class=\"col-md-8\">\n                    <div class=\"card vtec-card\">\n                        <div class=\"card-body\">\n                            <h4 id=\"table1title\" class=\"card-title\"><i class=\"bi bi-table me-2\" aria-hidden=\"true\"></i>Search Results</h4>\n\n                            <div class=\"full-dataset-export mb-3\">\n                                <div class=\"alert alert-info py-2\">\n                                    <div class=\"d-flex justify-content-between align-items-center\">\n                                        <div>\n                                            <strong><i class=\"bi bi-database me-1\" aria-hidden=\"true\"></i>Full Dataset Export</strong>\n                                            <small class=\"d-block text-muted\">Download complete results (all matching records)</small>\n                                        </div>\n                                        <div class=\"btn-group\">\n                                            <button type=\"button\" data-table=\"1\" data-opt=\"excel\" class=\"btn btn-outline-success btn-sm iemtool\" aria-label=\"Download full dataset as Excel\">\n                                                <i class=\"bi bi-file-earmark-spreadsheet me-1\" aria-hidden=\"true\"></i>Excel\n                                            </button>\n                                            <button type=\"button\" data-table=\"1\" data-opt=\"csv\" class=\"btn btn-outline-primary btn-sm iemtool\" aria-label=\"Download full dataset as CSV\">\n                                                <i class=\"bi bi-file-earmark-text me-1\" aria-hidden=\"true\"></i>CSV\n                                            </button>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n\n                            <div class=\"table-responsive\">\n                                <table id=\"table1\" data-order='[[ 3, \"desc\" ]]' class=\"table table-striped table-hover\">\n                                <caption class=\"text-start\">Storm based warnings results table. Columns list event metadata including issuance/expiration and event tags.</caption>\n                                <thead class=\"table-dark\">\n                                <tr><th>Event</th><th>Phenomena</th><th>Significance</th><th>Issued</th>\n                                <th>Expired</th><th>Issue Hail Tag</th><th>Issue Wind Tag</th>\n                                <th>Issue Tornado Tag</th><th>Issue Damage Tag</th></tr>\n                                </thead>\n                                </table>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <!-- Tab 2: Search by County/Zone or Point -->\n    <div class=\"tab-pane fade\" id=\"byugc\" role=\"tabpanel\" aria-labelledby=\"byugc-tab\">\n        <div class=\"mt-3\">\n            <div class=\"section-description\">\n                <p>The NWS issues watch, warnings, and advisories (WWA) for counties/parishes. For\n                some products (like winter warnings), they issue for forecast zones. In many parts of the country, these zones are exactly the\n                same as the counties/parishes. When you get into regions with topography,\n                then zones will start to differ to the local counties.</p>\n\n                <p>This application allows you to search the IEM's archive of NWS WWA products.\n                Our archive is not complete, but there are no known holes since 12 November 2005.\n                This archive is of those products that contain VTEC codes, which are nearly all\n                WWAs that the NWS issues for. There are Severe Thunderstorm, Tornado, and\n                Flash Flood Warnings included in this archive for dates prior to 2005. These\n                were retroactively assigned VTEC event identifiers by the IEM based on some\n                hopefully intelligent logic.</p>\n            </div>\n\n            <div class=\"alert alert-warning\">Please note: NWS forecast offices have\n            changed over the years, this application may incorrectly label old warnings as coming from\n            an office that did not exist at the time.\n\n                <br /><strong>Also note:</strong> This particular search interface will return\n                    <strong>false-positives</strong> for some warnings that are now fully polygon/storm based. The IEM\n                    database tracks the UGC areas associated with the storm based warnings. So querying\n                    by UGC (even if you query by point), will return some warnings that were not actually\n                    active for that point, but were technically active for that UGC of which the point\n                    falls inside of. Please use the above search for these types of warnings!\n            </div>\n\n            <form id=\"form2\">\n            <div class=\"row\">\n                <div class=\"col-md-4\">\n                    <div class=\"card vtec-card mb-3\">\n                        <div class=\"card-body\">\n                            <h6 class=\"card-title\"><i class=\"bi bi-calendar me-2\" aria-hidden=\"true\"></i>Date Range</h6>\n                            <p class=\"card-text\">These dates (at 00 UTC) define the issuance of the event, please do not\n                            be too tight with these dates.</p>\n                            <div class=\"mb-2\">\n                                <label for=\"sdate\" class=\"form-label\">Start Date:</label>\n                                <input name=\"sdate\" type=\"date\" class=\"form-control\">\n                            </div>\n                            <div class=\"mb-2\">\n                                <label for=\"edate\" class=\"form-label\">End Date:</label>\n                                <input name=\"edate\" type=\"date\" class=\"form-control\">\n                            </div>\n                        </div>\n                    </div>\n\n                    <div class=\"card vtec-card mb-3\">\n                        <div class=\"card-body\">\n                            <h6 class=\"card-title\"><i class=\"bi bi-geo-alt me-2\" aria-hidden=\"true\"></i>Manual Selection</h6>\n                            <div class=\"mb-2\">\n                                <label for=\"state\" class=\"form-label\">Select State:</label>\n                                <select name=\"state\" id=\"state\" class=\"form-select\"></select>\n                            </div>\n                            <div class=\"mb-2\">\n                                <label for=\"ugc\" class=\"form-label\">Select County/Zone:</label>\n                                <select name=\"ugc\" class=\"form-select\"></select>\n                            </div>\n                            <button type=\"button\" class=\"btn btn-primary w-100\" id=\"manualugc\">\n                                <i class=\"bi bi-arrow-repeat me-2\" aria-hidden=\"true\"></i>Update Results\n                            </button>\n                        </div>\n                    </div>\n\n                    <div class=\"card vtec-card mb-3\">\n                        <div class=\"card-body\">\n                            <h6 class=\"card-title\"><i class=\"bi bi-crosshair me-2\" aria-hidden=\"true\"></i>Manual Point Selection</h6>\n                            <p class=\"card-text\">You can otherwise search by lat/lon point. The start and\n                            end date set above are used with this option as well:</p>\n\n                            <div class=\"coordinate-section\">\n                                <div class=\"mb-2\">\n                                    <label for=\"lat2\" class=\"form-label\">Latitude (deg N):</label>\n                                    <input id=\"lat2\" value=\"{$lat}\" class=\"form-control coordinate-input\">\n                                </div>\n                                <div class=\"mb-2\">\n                                    <label for=\"lon2\" class=\"form-label\">Longitude (deg E):</label>\n                                    <input id=\"lon2\" value=\"{$lon}\" class=\"form-control coordinate-input\">\n                                </div>\n                            </div>\n\n                            <div class=\"mb-3\">\n                                <label for=\"buffer2\" class=\"form-label\">Approximate Location Buffer Radius:</label>\n                                <select name=\"buffer2\" class=\"form-select\">\n                                    <option value=\"0\">0 (Exact point)</option>\n                                    <option value=\"0.01\">~1 mile (0.01 deg)</option>\n                                    <option value=\"0.1\">~10 miles (0.10 deg)</option>\n                                </select>\n                            </div>\n                            <button type=\"button\" class=\"btn btn-primary w-100\" id=\"manualpt2\">\n                                <i class=\"bi bi-arrow-repeat me-2\" aria-hidden=\"true\"></i>Update Results\n                            </button>\n                        </div>\n                    </div>\n\n                    <div class=\"card vtec-card\">\n                        <div class=\"card-body\">\n                            <h6 class=\"card-title\"><i class=\"bi bi-cursor me-2\" aria-hidden=\"true\"></i>Interactive Map</h6>\n                            <p class=\"card-text\">Drag the marker to select coordinates:</p>\n                            <div\n                             id=\"map2\"\n                             data-initial-lat=\"{$lat}\"\n                             data-initial-lon=\"{$lon}\"\n                             data-lat-input=\"lat2\"\n                             data-lon-input=\"lon2\"\n                             class=\"map\"></div>\n                        </div>\n                    </div>\n                </div>\n\n                <div class=\"col-md-8\">\n                    <div class=\"card vtec-card\">\n                        <div class=\"card-body\">\n                            <h4 id=\"table2title\" class=\"card-title\"><i class=\"bi bi-table me-2\" aria-hidden=\"true\"></i>Search Results</h4>\n\n                            <div class=\"full-dataset-export mb-3\">\n                                <div class=\"alert alert-info py-2\">\n                                    <div class=\"d-flex justify-content-between align-items-center\">\n                                        <div>\n                                            <strong><i class=\"bi bi-database me-1\" aria-hidden=\"true\"></i>Full Dataset Export</strong>\n                                            <small class=\"d-block text-muted\">Download complete results (all matching records)</small>\n                                        </div>\n                                        <div class=\"btn-group\">\n                                            <button type=\"button\" data-table=\"2\" data-opt=\"excel\" class=\"btn btn-outline-success btn-sm iemtool\" aria-label=\"Download full dataset as Excel\">\n                                                <i class=\"bi bi-file-earmark-spreadsheet me-1\" aria-hidden=\"true\"></i>Excel\n                                            </button>\n                                            <button type=\"button\" data-table=\"2\" data-opt=\"csv\" class=\"btn btn-outline-primary btn-sm iemtool\" aria-label=\"Download full dataset as CSV\">\n                                                <i class=\"bi bi-file-earmark-text me-1\" aria-hidden=\"true\"></i>CSV\n                                            </button>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n\n                            <div class=\"table-responsive\">\n                                <table id=\"table2\" data-order='[[ 3, \"desc\" ]]' class=\"table table-striped table-hover\">\n                                <caption class=\"text-start\">Events by UGC or point results table. Columns show event identifiers and timing.</caption>\n                                <thead class=\"table-dark\">\n                                <tr><th>Event</th><th>Phenomena</th><th>Significance</th><th>Issued</th>\n                                <th>Expired</th></tr>\n                                </thead>\n                                </table>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div><!-- ./row -->\n            </form><!-- ./form2 -->\n        </div>\n    </div>\n\n    <!-- Tab 3: List by State/WFO -->\n    <div class=\"tab-pane fade\" id=\"list\" role=\"tabpanel\" aria-labelledby=\"list-tab\">\n        <div class=\"mt-3\">\n            <p class=\"section-description\">This section generates a simple list of NWS Watch, Warning, and Advisories\n            by state and year.</p>\n\n            <form id=\"form3\">\n            <div class=\"row\">\n                <div class=\"col-md-4\">\n                    <div class=\"card vtec-card\">\n                        <div class=\"card-body\">\n                            <h6 class=\"card-title\"><i class=\"bi bi-gear-fill me-2\" aria-hidden=\"true\"></i>Search Parameters</h6>\n\n                            <div class=\"radio-group mb-3\">\n                                <div class=\"form-check\">\n                                    <input type=\"radio\" name=\"by3\" value=\"state\" checked=\"checked\" id=\"bystate\" class=\"form-check-input\"/>\n                                    <label for=\"bystate\" class=\"form-check-label\"><strong>Select By State</strong></label>\n                                </div>\n                                <select name=\"state\" id=\"state3\" class=\"form-select mt-2\"></select>\n                            </div>\n\n                            <div class=\"radio-group mb-3\">\n                                <div class=\"form-check\">\n                                    <input type=\"radio\" name=\"by3\" value=\"wfo\" id=\"bywfo\" class=\"form-check-input\"/>\n                                    <label for=\"bywfo\" class=\"form-check-label\"><strong>Select By WFO</strong></label>\n                                </div>\n                                <select name=\"wfo\" id=\"wfo3\" class=\"form-select mt-2\"></select>\n                            </div>\n\n                            <div class=\"radio-group mb-3\">\n                                <div class=\"form-check\">\n                                    <input type=\"radio\" name=\"single3\" value=\"single\" id=\"single3\" checked=\"checked\" class=\"form-check-input\"/>\n                                    <label for=\"single3\" class=\"form-check-label\"><strong>Single VTEC Event</strong></label>\n                                </div>\n                                <div class=\"form-check\">\n                                    <input type=\"radio\" name=\"single3\" value=\"all\" id=\"all3\" class=\"form-check-input\">\n                                    <label for=\"all3\" class=\"form-check-label\"><strong>All VTEC Events</strong></label>\n                                </div>\n\n                                <div class=\"mt-2\">\n                                    <label for=\"ph3\" class=\"form-label\">Select VTEC Phenomena:</label>\n                                    <select name=\"ph\" id=\"ph3\" class=\"form-select\"></select>\n                                </div>\n                            </div>\n\n                            <div class=\"mb-3\">\n                                <label for=\"sig3\" class=\"form-label\">Select VTEC Significance:</label>\n                                <select name=\"sig\" id=\"sig3\" class=\"form-select\"></select>\n                            </div>\n\n                            <div class=\"mb-3\">\n                                <label for=\"year3\" class=\"form-label\">Select Year:</label>\n                                <select name=\"year\" id=\"year3\" class=\"form-select\"></select>\n                            </div>\n\n                            <button type=\"button\" class=\"btn btn-primary w-100\" id=\"button3\">\n                                <i class=\"bi bi-arrow-repeat me-2\" aria-hidden=\"true\"></i>Update Table\n                            </button>\n                        </div>\n                    </div>\n                </div>\n\n                <div class=\"col-md-8\">\n                    <div class=\"card vtec-card\">\n                        <div class=\"card-body\">\n                            <h4 id=\"table3title\" class=\"card-title\"><i class=\"bi bi-table me-2\" aria-hidden=\"true\"></i>Search Results</h4>\n                            <div class=\"btn-group-export mb-3\">\n                                <button type=\"button\" data-table=\"3\" data-opt=\"excel\" class=\"btn btn-outline-success btn-sm iemtool\" aria-label=\"Download full dataset as Excel\">\n                                    <i class=\"bi bi-file-earmark-spreadsheet me-1\" aria-hidden=\"true\"></i>Excel\n                                </button>\n                                <button type=\"button\" data-table=\"3\" data-opt=\"csv\" class=\"btn btn-outline-primary btn-sm iemtool\" aria-label=\"Download full dataset as CSV\">\n                                    <i class=\"bi bi-file-earmark-text me-1\" aria-hidden=\"true\"></i>CSV\n                                </button>\n                            </div>\n\n                            <div class=\"table-responsive\">\n                                <table id=\"table3\" data-order='[[ 3, \"desc\" ]]' class=\"table table-striped table-hover\">\n                                <caption class=\"text-start\">List by state or WFO results table. Columns include WFO, locations, and issuance/expiration.</caption>\n                                <thead class=\"table-dark\">\n                                <tr>\n                                <th>Event</th>\n                                <th>Phenomena</th>\n                                <th>Significance</th>\n                                <th>WFO</th>\n                                <th>Locations</th>\n                                <th>Issued</th>\n                                <th>Expired</th></tr>\n                                </thead>\n                                </table>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div><!-- ./row -->\n            </form><!-- ./form3 -->\n        </div>\n    </div>\n</div>\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/vtec/wfos.js",
    "content": "\nconst iemdata = {};\n\niemdata.vtec_phenomena = [\n['SV','Severe Thunderstorm'],\n['TO','Tornado'],\n['MA','Marine'],\n['AF','Ashfall'],\n['AS','Air Stagnation'],\n['AV','Avalanche'],\n['BS','Blowing Snow'],\n['BW', 'Brisk Wind'],\n['BZ','Blizzard'],\n['CF','Coastal Flood'],\n['CW','Cold Weather'],\n['DU','Blowing Dust'],\n['DS','Dust Storm'],\n['EC','Extreme Cold'],\n['EH','Excessive Heat'],\n['EW','Extreme Wind'],\n['FA','Flood'],\n['FF','Flash Flood'],\n['FL','Flood'],\n['FR','Frost'],\n['FZ','Freeze'],\n['UP','Freezing Spray'],\n['FG','Dense Fog'],\n['FW','Red Flag'],\n['GL','Gale'],\n['HF','Hurricane Force Wind'],\n['HI','Inland Hurricane Wind'],\n['HS','Heavy Snow'],\n['HP','Heavy Sleet'],\n['HT','Heat'],\n['HU','Hurricane'],\n['HW','High Wind'],\n['HY','Hydrologic'],\n['HZ','Hard Freeze'],\n['IS','Ice Storm'],\n['IP','Sleet'],\n['LB','Lake Effect Snow and Blowing Snow'],\n['LE','Lake Effect Snow'],\n['LO','Low Water'],\n['LS','Lakeshore Flood'],\n['LW','Lake Wind'],\n['RB','Small Craft for Rough Bar'],\n['RH','Radiological Hazard'],\n['SB','Snow and Blowing Snow'],\n['SC','Small Craft'],\n['SE','Hazardous Seas'],\n['SI','Small Craft for Winds'],\n['SM','Dense Smoke'],\n['SN','Snow'],\n['SR','Storm'],\n['SU','High Surf'],\n['TI','Inland Tropical Storm Wind'],\n['TR','Tropical Storm'],\n['TS','Tsunami'],\n['TY','Typhoon'],\n['VO','Volcano'],\n['WC','Wind Chill'],\n['WI','Wind'],\n['WS','Winter Storm'],\n['WW','Winter Weather'],\n['XH', 'Extreme Heat'],\n['ZF','Freezing Fog'],\n['ZR','Freezing Rain']\n];\n\n\niemdata.vtec_significance = [\n['W','Warning'],\n['Y','Advisory'],\n['A','Watch'],\n['S','Statement'],\n['F','Forecast'],\n['O','Outlook'],\n['N','Synopsis']\n];\n\niemdata.wfos = [\n ['ABQ','ALBUQUERQUE'],\n ['ABR','ABERDEEN'],\n ['AFC','ANCHORAGE'],\n ['AFG','FAIRBANKS'],\n ['AJK','JUNEAU'],\n ['AKQ','WAKEFIELD'],\n ['ALY','ALBANY'],\n ['AMA','AMARILLO'],\n ['APX','GAYLORD'],\n ['ARX','LA_CROSSE'],\n ['BGM','BINGHAMTON'],\n ['BIS','BISMARCK'],\n ['BMX','BIRMINGHAM'],\n ['BOI','BOISE'],\n ['BOU','DENVER'],\n ['BOX','Boston / Norton'],\n ['BRO','BROWNSVILLE'],\n ['BTV','BURLINGTON'],\n ['BUF','BUFFALO'],\n ['BYZ','BILLINGS'],\n ['CAE','COLUMBIA'],\n ['CAR','CARIBOU'],\n ['CHS','CHARLESTON'],\n ['CLE','CLEVELAND'],\n ['CRP','CORPUS_CHRISTI'],\n ['CTP','STATE_COLLEGE'],\n ['CYS','CHEYENNE'],\n ['DDC','DODGE_CITY'],\n ['DLH','DULUTH'],\n ['DMX','DES_MOINES'],\n ['DTX','DETROIT'],\n ['DVN','QUAD_CITIES_IA'],\n ['EAX','KANSAS_CITY/PLEASANT_HILL'],\n ['EKA','EUREKA'],\n ['EPZ','EL_PASO_TX/SANTA_TERESA'],\n ['EWX','AUSTIN/SAN_ANTONIO'],\n ['EYW','KEY WEST (EYW, pre 5/18/06)'],\n ['FFC','PEACHTREE_CITY'],\n ['FGF','EASTERN_NORTH_DAKOTA'],\n ['FGZ','FLAGSTAFF'],\n ['FSD','SIOUX_FALLS'],\n ['FWD','DALLAS/FORT_WORTH'],\n ['GGW','GLASGOW'],\n ['GID','HASTINGS'],\n ['GJT','GRAND_JUNCTION'],\n ['GLD','GOODLAND'],\n ['GRB','GREEN_BAY'],\n ['GRR','GRAND_RAPIDS'],\n ['GSP','GREENVILLE/SPARTANBURG'],\n ['GUM','GUAM'],\n ['GYX','GRAY'],\n ['HFO','HONOLULU'],\n ['HGX','HOUSTON/GALVESTON'],\n ['HNX','SAN_JOAQUIN_VALLEY/HANFORD'],\n ['HUN','HUNTSVILLE'],\n ['ICT','WICHITA'],\n ['ILM','WILMINGTON'],\n ['ILN','WILMINGTON'],\n ['ILX','LINCOLN'],\n ['IND','INDIANAPOLIS'],\n ['IWX','NORTHERN_INDIANA'],\n ['JAN','JACKSON'],\n ['JAX','JACKSONVILLE'],\n ['JKL','JACKSON'],\n ['KEY','KEY WEST (KEY, post 5/18/06)'],\n ['LBF','NORTH_PLATTE'],\n ['LCH','LAKE_CHARLES'],\n ['LIX','NEW_ORLEANS'],\n ['LKN','ELKO'],\n ['LMK','LOUISVILLE'],\n ['LOT','CHICAGO'],\n ['LOX','LOS_ANGELES/OXNARD'],\n ['LSX','ST_LOUIS'],\n ['LUB','LUBBOCK'],\n ['LWX','BALTIMORE_MD/_WASHINGTON_DC'],\n ['LZK','LITTLE_ROCK'],\n ['MAF','MIDLAND/ODESSA'],\n ['MEG','MEMPHIS'],\n ['MFL','MIAMI'],\n ['MFR','MEDFORD'],\n ['MHX','NEWPORT/MOREHEAD_CITY'],\n ['MKX','MILWAUKEE/SULLIVAN'],\n ['MLB','MELBOURNE'],\n ['MOB','MOBILE'],\n ['MPX','TWIN_CITIES/CHANHASSEN'],\n ['MQT','MARQUETTE'],\n ['MRX','MORRISTOWN'],\n ['MSO','MISSOULA'],\n ['AAQ','National Tsunami Warning Center'],\n ['MTR','SAN_FRANCISCO'],\n ['OAX','OMAHA/VALLEY'],\n ['OHX','NASHVILLE'],\n ['OKX','NEW_YORK'],\n ['OTX','SPOKANE'],\n ['OUN','NORMAN'],\n ['HEB','Pacific Tsunami Warning Center'],\n ['PAH','PADUCAH'],\n ['PBZ','PITTSBURGH'],\n ['PDT','PENDLETON'],\n ['PHI','MOUNT_HOLLY'],\n ['PIH','POCATELLO/IDAHO_FALLS'],\n ['PQR','PORTLAND'],\n ['PSR','PHOENIX'],\n ['PUB','PUEBLO'],\n ['RAH','RALEIGH'],\n ['REV','RENO'],\n ['RIW','RIVERTON'],\n ['RLX','CHARLESTON'],\n ['RNK','BLACKSBURG'],\n ['SEW','SEATTLE'],\n ['SGF','SPRINGFIELD'],\n ['SGX','SAN_DIEGO'],\n ['SHV','SHREVEPORT'],\n ['SJT','SAN_ANGELO'],\n ['JSJ','SAN_JUAN'],\n ['SLC','SALT_LAKE_CITY'],\n ['STO','SACRAMENTO'],\n ['TAE','TALLAHASSEE'],\n ['TBW','TAMPA_BAY_AREA/RUSKIN'],\n ['TFX','GREAT_FALLS'],\n ['TOP','TOPEKA'],\n ['TSA','TULSA'],\n ['TWC','TUCSON'],\n ['UNR','RAPID_CITY'],\n ['VEF','LAS_VEGAS']\n];\n"
  },
  {
    "path": "htdocs/vtec/yearly_counts.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 151);\nrequire_once \"../../include/database.inc.php\";\nrequire_once \"../../include/myview.php\";\nrequire_once \"../../include/reference.php\";\nrequire_once \"../../include/network.php\";\nrequire_once \"../../include/forms.php\";\nrequire_once \"../../include/memcache.php\";\nrequire_once \"../../include/mlib.php\";\n$nt = new NetworkTable(\"WFO\");\n$vtec_phenomena = $reference[\"vtec_phenomena\"];\n$vtec_significance = $reference[\"vtec_significance\"];\n\n$clobber = array_key_exists(\"clobber\", $_REQUEST);\n$wfo = strtoupper(substr(get_str404(\"wfo\", \"_ALL\"), 0, 4));\n$wfo3 = unrectify_wfo($wfo);\n$phenomena = get_str404(\"phenomena\", null, 2);\n$significance = get_str404(\"significance\", null, 1);\n$wfoLimiter = \"\";\n$wfoMsg = \"Data for all WFOs shown\";\nif ($wfo != \"_ALL\") {\n    $wfoLimiter = \" and wfo = '{$wfo3}' \";\n    $wfoMsg = \"Data for only $wfo shown\";\n}\n\n$p1 = make_select(\"phenomena\", $phenomena, $vtec_phenomena, $showvalue = TRUE, $cssclass = \"form-select\");\n$s1 = make_select(\"significance\", $significance, $vtec_significance, $showvalue = TRUE, $cssclass = \"form-select\");\n\n$t = new MyView();\n$t->title = \"VTEC Yearly Event Counts\";\n\nfunction get_data()\n{\n    global $wfoLimiter;\n    $dbconn = iemdb(\"postgis\");\n\n    $rs = pg_query(\n        $dbconn,\n        \"\n            SELECT yr, phenomena, significance, count(*) from\n            (SELECT distinct vtec_year as yr, wfo,\n            phenomena, significance, eventid from warnings WHERE\n            significance is not null and phenomena is not null and\n            issue > '1980-01-01' $wfoLimiter) as foo\n            GROUP by yr, phenomena, significance\n    \"\n    );\n\n    $data = array();\n    $pcodes = array();\n    while ($row = pg_fetch_assoc($rs)) {\n        $yr = $row[\"yr\"];\n        if (!array_key_exists($yr, $data)) {\n            $data[$yr] = array();\n        }\n        $key = sprintf(\"%s.%s\", $row[\"phenomena\"], $row[\"significance\"]);\n        $pcodes[$key] = 1;\n        $data[$yr][$key] = $row[\"count\"];\n    }\n    return array($data, $pcodes);\n}\n\nfunction get_data2()\n{\n    global $phenomena, $significance;\n    $dbconn = iemdb(\"postgis\");\n\n    $rs = pg_query(\n        $dbconn,\n        \"\n        WITH data as (\n            SELECT distinct wfo, eventid, vtec_year as yr\n            from warnings where phenomena = '$phenomena' and\n            significance = '$significance'\n        )\n        SELECT wfo, yr, count(*) from data GROUP by wfo, yr\n    \"\n    );\n\n    $data = array();\n    while ($row = pg_fetch_assoc($rs)) {\n        $yr = $row[\"yr\"];\n        if (!array_key_exists($yr, $data)) {\n            $data[$yr] = array();\n        }\n        $data[$yr][$row[\"wfo\"]] = $row[\"count\"];\n    }\n    return $data;\n}\n\n/* see if memcache has our data */\n$memcache = MemcacheSingleton::getInstance();\nif (is_null($phenomena) || is_null($significance)) {\n    $data = $memcache->get(\"vtec_counts_data_$wfo\");\n    $pcodes = $memcache->get(\"vtec_counts_pcodes_$wfo\");\n    $cachedwarning = '<div class=\"alert alert-warning\">This information was cached\n                within the past 24 hours and may not be up to the moment.</div>';\n    if ($clobber || !$data || !$pcodes) {\n        list($data, $pcodes) = get_data();\n        $memcache->set(\"vtec_counts_data_$wfo\", $data, 86400);\n        $memcache->set(\"vtec_counts_pcodes_$wfo\", $pcodes, 86400);\n        $cachedwarning = '';\n    }\n\n    $table = <<<EOM\n    <table class=\"table table-striped\">\n    <thead class=\"sticky\"><tr><th>P</th><th>S</th><th>Phenomena</th><th>Significance</th>\nEOM;\n    $years = array_keys($data);\n    asort($years);\n    foreach ($years as $i => $yr) {\n        $table .= \"<th>{$yr}</th>\";\n    }\n    $table .= \"</tr></thead>\\n\";\n\n    $codes = array_keys($pcodes);\n    asort($codes);\n    foreach ($codes as $j => $code) {\n        list($phenomena, $significance) = explode(\".\", $code);\n        if (!array_key_exists($phenomena, $vtec_phenomena)) {\n            continue;\n        }\n        $table .= sprintf(\n            \"<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td>\",\n            $phenomena,\n            $significance,\n            $vtec_phenomena[$phenomena],\n            $vtec_significance[$significance]\n        );\n\n        foreach ($years as $i => $yr) {\n            if (array_key_exists($code, $data[$yr])) {\n                $table .= sprintf(\"<td>%s</td>\", $data[$yr][$code]);\n            } else {\n                $table .= \"<td>0</td>\";\n            }\n        }\n        $table .= \"</tr>\";\n    }\n    $table .= \"</table>\";\n} else {\n    // Logic for by WFO by year\n    $memkey = \"vtec_counts_data_{$phenomena}_{$significance}\";\n    $data = $memcache->get($memkey);\n    $cachedwarning = '<div class=\"alert alert-warning\">This information was cached\n                within the past 24 hours and may not be up to the moment.</div>';\n    if ($clobber || !$data) {\n        $data = get_data2();\n        $memcache->set($memkey, $data, 86400);\n        $cachedwarning = '';\n    }\n\n    $table = <<<EOM\n    <table class=\"table table-striped\">\n    <thead class=\"sticky\"><tr><th>WFO</th><th>WFO Name</th>\nEOM;\n    $years = array_keys($data);\n    asort($years);\n    foreach ($years as $i => $yr) {\n        $table .= \"<th>{$yr}</th>\";\n    }\n    $table .= \"</tr></thead>\\n\";\n\n    foreach ($nt->table as $key => $val) {\n        $wfo3 = unrectify_wfo($key);\n        $table .= sprintf(\n            \"<tr><td>%s</td><td>%s</td>\",\n            $key,\n            $val[\"name\"]\n        );\n        foreach ($years as $i => $yr) {\n            if (array_key_exists($wfo3, $data[$yr])) {\n                $table .= sprintf(\"<td>%s</td>\", $data[$yr][$wfo3]);\n            } else {\n                $table .= \"<td>0</td>\";\n            }\n        }\n        $table .= \"</tr>\";\n    }\n    $table .= \"</table>\";\n    $wfoMsg = sprintf(\n        \"%s.%s (%s %s) Event Counts by WFO\",\n        $phenomena,\n        $significance,\n        $vtec_phenomena[$phenomena],\n        $vtec_significance[$significance]\n    );\n}\n\n$content = <<<EOM\n<nav aria-label=\"breadcrumb\">\n<ol class=\"breadcrumb\">\n<li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Resources</a></li>\n<li class=\"breadcrumb-item active\" aria-current=\"page\">VTEC Warning Counts by Year/WFO</li>\n</ol>\n</nav>\n\n<p>This page presents the number of VTEC events issued by either all of the\nNWS or a selected WFO.  These numbers are based on the IEM maintained archive\nand are not official.  Please be careful of the presentation of zeros, as\nsome VTEC products were only recently added and don't go back prior to 2005.\nThe IEM retrospectively assigned VTEC events to some warnings prior to\nimplementation in fall 2005.  Note: the numbers shown are the unique combinations\nof VTEC event ids and WFO, so a single tornado watch event issued by four\nWFOs would count as four in this summary, when summarizing all WFOs!</p>\n\n<div class=\"alert alert-info\">Hopefully, you can copy/paste this table into\nyour favorite spreadsheet program for further analysis...</div>\n\n$cachedwarning\n\n<h4>Option 1: All VTEC Events by Year</h4>\n<form method=\"GET\" name=\"wfo\" class=\"mb-4\">\n<div class=\"row g-3 align-items-center\">\n<div class=\"col-auto\">\n<label for=\"wfoSelect\" class=\"col-form-label\">Limit Numbers by WFO:</label>\n</div>\n<div class=\"col-auto\">\nEOM;\n$allWFO = array(\"_ALL\" => array(\n    \"id\" => \"_ALL\",\n    \"name\" => \"All Available\",\n    \"archive_end\" => null,\n    \"archive_begin\" => new DateTime(\"1980-01-01\")));\n$content .= networkSelect(\"WFO\", $wfo, $extra = $allWFO, $selectName = \"wfo\");\n$content .= <<<EOM\n</div>\n<div class=\"col-auto\">\n<button type=\"submit\" class=\"btn btn-primary\">Generate Table</button>\n</div>\n</div>\n</form>\n\n<h4>Option 2: Count of One VTEC Phenomena and Significance by WFO</h4>\n<form method=\"GET\" name=\"wfo2\" class=\"mb-4\">\n<div class=\"row g-3 align-items-center\">\n<div class=\"col-auto\">\n{$p1}\n</div>\n<div class=\"col-auto\">\n{$s1}\n</div>\n<div class=\"col-auto\">\n<button type=\"submit\" class=\"btn btn-primary\">Generate Table</button>\n</div>\n</div>\n</form>\n\n<h4>$wfoMsg</h4>\n\n$table\n\nEOM;\n$t->content = $content;\n$t->render(\"single.phtml\");\n"
  },
  {
    "path": "htdocs/wfs/ww.php",
    "content": "<?php\nrequire_once \"../../config/settings.inc.php\";\nrequire_once \"../../include/forms.php\";\nheader(\"Content-type: application/vnd.ogc.gml\");\n$d = get_str404(\"date\", date(\"Y-m-d\"));\n$d = get_str404(\"DATE\", $d);\n$year = get_str404(\"year\", date(\"Y\"), 4);\n$year = get_str404(\"YEAR\", $year, 4);\n$sts = \"$d%2000:00\";\n$ets = \"$d%2023:59\";\n$uri = \"{$EXTERNAL_BASEURL}/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wfs/ww.map&amp;YEAR=$year&amp;STARTTS=$sts&amp;ENDTS=$ets&amp;\";\nif (array_key_exists('time', $_GET)) {\n    $year = substr($d, 0, 4);\n    $ts = \"$d%20\" . get_str404('time', null);\n    $uri = \"{$EXTERNAL_BASEURL}/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wfs/wwt.map&amp;YEAR=$year&TS=$ts&amp;\";\n}\necho <<<EOM\n<wfs:WFS_Capabilities xmlns:gml=\"http://www.opengis.net/gml\" xmlns:wfs=\"http://www.opengis.net/wfs\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns=\"http://www.opengis.net/wfs\" version=\"1.1.0\" xsi:schemaLocation=\"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd\">\n<ows:ServiceIdentification>\n<ows:Title>IEM Weather Warnings</ows:Title>\n<ows:Abstract>Archived NWS Watch, Warning, Advisories</ows:Abstract>\n<ows:Keywords>\n<ows:Keyword>NWS</ows:Keyword>\n<ows:Keyword>Warnings</ows:Keyword>\n</ows:Keywords>\n<ows:ServiceType codeSpace=\"OGC\">OGC WFS</ows:ServiceType>\n<ows:ServiceTypeVersion>1.1.0</ows:ServiceTypeVersion>\n<ows:Fees>None</ows:Fees>\n<ows:AccessConstraints>None</ows:AccessConstraints>\n</ows:ServiceIdentification>\n<ows:ServiceProvider>\n<ows:ProviderName>Iowa State University</ows:ProviderName>\n<ows:ProviderSite xlink:type=\"simple\" xlink:href=\"{$uri}\"/>\n<ows:ServiceContact>\n<ows:IndividualName>Daryl Herzmann</ows:IndividualName>\n<ows:PositionName>Assistant Scientist</ows:PositionName>\n<ows:ContactInfo>\n<ows:Phone>\n<ows:Voice>515-294-5978</ows:Voice>\n<ows:Facsimile>515-294-5978</ows:Facsimile>\n</ows:Phone>\n<ows:Address>\n<ows:DeliveryPoint>3015 Agronomy Hall</ows:DeliveryPoint>\n<ows:City>Ames</ows:City>\n<ows:AdministrativeArea>Iowa</ows:AdministrativeArea>\n<ows:PostalCode>50014</ows:PostalCode>\n<ows:Country>USA</ows:Country>\n<ows:ElectronicMailAddress>akrherz@iastate.edu</ows:ElectronicMailAddress>\n</ows:Address>\n<ows:OnlineResource xlink:type=\"simple\" xlink:href=\"{$uri}\"/>\n<ows:HoursOfService>24x7</ows:HoursOfService>\n<ows:ContactInstructions>email</ows:ContactInstructions>\n</ows:ContactInfo>\n<ows:Role>Owner</ows:Role>\n</ows:ServiceContact>\n</ows:ServiceProvider>\n<ows:OperationsMetadata>\n<ows:Operation name=\"GetCapabilities\">\n<ows:DCP>\n<ows:HTTP>\n<ows:Get xlink:type=\"simple\" xlink:href=\"{$uri}\"/>\n<ows:Post xlink:type=\"simple\" xlink:href=\"{$uri}\"/>\n</ows:HTTP>\n</ows:DCP>\n<ows:Parameter name=\"service\">\n<ows:Value>WFS</ows:Value>\n</ows:Parameter>\n<ows:Parameter name=\"AcceptVersions\">\n<ows:Value>1.0.0</ows:Value>\n<ows:Value>1.1.0</ows:Value>\n</ows:Parameter>\n<ows:Parameter name=\"AcceptFormats\">\n<ows:Value>text/xml</ows:Value>\n</ows:Parameter>\n</ows:Operation>\n<ows:Operation name=\"DescribeFeatureType\">\n<ows:DCP>\n<ows:HTTP>\n<ows:Get xlink:type=\"simple\" xlink:href=\"{$uri}\"/>\n<ows:Post xlink:type=\"simple\" xlink:href=\"{$uri}\"/>\n</ows:HTTP>\n</ows:DCP>\n<ows:Parameter name=\"outputFormat\">\n<ows:Value>XMLSCHEMA</ows:Value>\n<ows:Value>text/xml; subtype=gml/2.1.2</ows:Value>\n<ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>\n</ows:Parameter>\n</ows:Operation>\n<ows:Operation name=\"GetFeature\">\n<ows:DCP>\n<ows:HTTP>\n<ows:Get xlink:type=\"simple\" xlink:href=\"{$uri}\"/>\n<ows:Post xlink:type=\"simple\" xlink:href=\"{$uri}\"/>\n</ows:HTTP>\n</ows:DCP>\n<ows:Parameter name=\"resultType\">\n<ows:Value>results</ows:Value>\n<ows:Value>hits</ows:Value>\n</ows:Parameter>\n<ows:Parameter name=\"outputFormat\">\n<ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>\n</ows:Parameter>\n</ows:Operation>\n</ows:OperationsMetadata>\n<FeatureTypeList>\n<Operations>\n<Operation>Query</Operation>\n</Operations>\n<FeatureType>\n<Name>counties</Name>\n<Title>Iowa Counties</Title>\n<DefaultSRS>urn:ogc:def:crs:EPSG::4326</DefaultSRS>\n<OutputFormats>\n<Format>text/xml; subtype=gml/3.1.1</Format>\n</OutputFormats>\n<ows:WGS84BoundingBox dimensions=\"2\">\n<ows:LowerCorner>-96.640709192144 40.3719466182637</ows:LowerCorner>\n<ows:UpperCorner>-90.1427967503368 43.5014574340012</ows:UpperCorner>\n</ows:WGS84BoundingBox>\n</FeatureType>\n<FeatureType>\n<Name>archwarn_county</Name>\n<Title>County Based Warnings</Title>\n<DefaultSRS>urn:ogc:def:crs:EPSG::4326</DefaultSRS>\n<OutputFormats>\n<Format>text/xml; subtype=gml/3.1.1</Format>\n</OutputFormats>\n<ows:WGS84BoundingBox/>\n<!--\nWARNING: Optional WGS84BoundingBox could not be established for this layer.  Consider setting the EXTENT in the LAYER object, or wfs_extent metadata. Also check that your data exists in the DATA statement\n-->\n</FeatureType>\n<FeatureType>\n<Name>archwarn_polygon</Name>\n<Title>Polygon Based Warnings</Title>\n<DefaultSRS>urn:ogc:def:crs:EPSG::4326</DefaultSRS>\n<OutputFormats>\n<Format>text/xml; subtype=gml/3.1.1</Format>\n</OutputFormats>\n<ows:WGS84BoundingBox/>\n<!--\nWARNING: Optional WGS84BoundingBox could not be established for this layer.  Consider setting the EXTENT in the LAYER object, or wfs_extent metadata. Also check that your data exists in the DATA statement\n-->\n</FeatureType>\n<FeatureType>\n<Name>warn_polygon</Name>\n<Title>Current Polygon Based Warnings</Title>\n<DefaultSRS>urn:ogc:def:crs:EPSG::4326</DefaultSRS>\n<OutputFormats>\n<Format>text/xml; subtype=gml/3.1.1</Format>\n</OutputFormats>\n<ows:WGS84BoundingBox/>\n<!--\nWARNING: Optional WGS84BoundingBox could not be established for this layer.  Consider setting the EXTENT in the LAYER object, or wfs_extent metadata. Also check that your data exists in the DATA statement\n-->\n</FeatureType>\n<FeatureType>\n<Name>warn_county</Name>\n<Title>Current County Based Warnings</Title>\n<DefaultSRS>urn:ogc:def:crs:EPSG::4326</DefaultSRS>\n<OutputFormats>\n<Format>text/xml; subtype=gml/3.1.1</Format>\n</OutputFormats>\n<ows:WGS84BoundingBox/>\n<!--\nWARNING: Optional WGS84BoundingBox could not be established for this layer.  Consider setting the EXTENT in the LAYER object, or wfs_extent metadata. Also check that your data exists in the DATA statement\n-->\n</FeatureType>\n</FeatureTypeList>\n<ogc:Filter_Capabilities>\n<ogc:Spatial_Capabilities>\n<ogc:GeometryOperands>\n<ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n<ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n<ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n<ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n</ogc:GeometryOperands>\n<ogc:SpatialOperators>\n<ogc:SpatialOperator name=\"Equals\"/>\n<ogc:SpatialOperator name=\"Disjoint\"/>\n<ogc:SpatialOperator name=\"Touches\"/>\n<ogc:SpatialOperator name=\"Within\"/>\n<ogc:SpatialOperator name=\"Overlaps\"/>\n<ogc:SpatialOperator name=\"Crosses\"/>\n<ogc:SpatialOperator name=\"Intersects\"/>\n<ogc:SpatialOperator name=\"Contains\"/>\n<ogc:SpatialOperator name=\"DWithin\"/>\n<ogc:SpatialOperator name=\"Beyond\"/>\n<ogc:SpatialOperator name=\"BBOX\"/>\n</ogc:SpatialOperators>\n</ogc:Spatial_Capabilities>\n<ogc:Scalar_Capabilities>\n<ogc:LogicalOperators/>\n<ogc:ComparisonOperators>\n<ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n<ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n<ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n<ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n<ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n<ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n<ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n<ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n</ogc:ComparisonOperators>\n</ogc:Scalar_Capabilities>\n<ogc:Id_Capabilities>\n<ogc:EID/>\n<ogc:FID/>\n</ogc:Id_Capabilities>\n</ogc:Filter_Capabilities>\n</wfs:WFS_Capabilities>\nEOM;\n"
  },
  {
    "path": "htdocs/wx/afos/bottom.php",
    "content": "<html>\n\n<head>\n    <title>NWS Text Product Finder</title>\n    <style type=\"text/css\">\n        p {\n            width: 800px;\n            text-indent: 2em;\n        }\n\n        body {\n            margin-left: 5px;\n            border-left-width: 3px;\n            border-color: blue;\n            background-color: #eeeeee;\n        }\n    </style>\n</head>\n\n<body>\n\n    <h3>NWS Text Product Finder</h3>\n\n    <p>This is a legacy interface that will be kept around as long as folks continue\n        to use it. More modern interfaces exist with the <a href=\"list.phtml\">list by source/date</a>\n        and <a href=\"/wx/afos/\">list by pil</a> interfaces.</p>\n\n    <p>Using our local <a href=\"http://www.unidata.ucar.edu/projects/idd/index.html\">Unidata IDD</a>\n        data feed, a simple script archives NWS text products into a database.\n        The above form allows you to query this database for recent products. You must know\n        the <a href=\"http://www.nws.noaa.gov/datamgmt/x_ref/xr04_X_ref_by_NNN.xlsx\">AFOS PIL</a> in order to\n        get the products you want.</p>\n\n    <ul>\n        <li><a href=\"http://www.nws.noaa.gov/datamgmt/x_ref/xr04_X_ref_by_NNN.xlsx\">NNN Categories</a></li>\n    </ul>\n\n\n    <div style=\"margin: 5px; padding: 5px; border: 1px dashed; background: #eeeeee;\">\n        <b>Aliases</b>\n        <pre>\nWARxxx    Retrieve union of Tornado (TOR), Severe T'storm (SVR)\n          Flash Flood Warning (FFW), Severe Weather Statement (SVS)\n          and Local Storm Report (LSR)\n\n</pre>\n        <b>MOS PILS</b>\n        <pre>\nPIL       Description             Product ID for Des Moines\nMAVxxx    GFS MOS Guidance         MAVDSM\nMETxxx    NAM MOS Guidance         METDSM\nMEXxxx    GFSX MOS Guidance        MEXDSM\nNBExxx    National Blend E         NBEDSM\nNBHxxx    National Blend H         NBHDSM\nNBPxxx    National Blend P         NBPDSM\nNBSxxx    National Blend S         NBSDSM\nNBXxxx    National Blend X         NBXDSM\n\nAnd model output\n\nFRHxx     Eta Output               FRH68\nFRHTxx    NGM Output               FRHT68\n</pre>\n\n        <b>Other Favorites:</b>\n        <pre>\nREPNT2  NHC Vortex Message\nPMDHMD  Model Diagnostic Discussion\nPMDSPD  Short Range Prognostic Discussion\nPMDEPD  Extended Forecast Discussion\nSWOMCD  SPC Mesoscale Discussion\nSWODY1  SPC Day 1\nSWODY2  SPC Day 2\nAFDDMX  Des Moines WFO Area Forecast Discussion\nSELX    Convective Watch where \"X\" is a number between 0-9\n</pre>\n    </div>\n\n</body>\n\n</html>\n"
  },
  {
    "path": "htdocs/wx/afos/index.css",
    "content": "/* Used by index.phtml - Bootstrap 5 compatible */\n.tab-content {\n    height: 500px;\n    overflow-y: scroll;\n}\n\n/* Custom styling for AFOS tabs */\n.card-header-tabs {\n    border-bottom: none;\n    margin-bottom: -1px;\n}\n\n.card-header-tabs .nav-link {\n    border-bottom-color: transparent;\n}\n\n.card-header-tabs .nav-link.active {\n    background-color: #fff;\n    border-color: #dee2e6 #dee2e6 #fff;\n    color: #495057;\n}\n\n.card-header-tabs .nav-link:hover:not(.active) {\n    border-color: #e9ecef #e9ecef #dee2e6;\n}\n\n/* Toolbar styling */\n#thetabs-toolbar {\n    border-bottom: 1px solid #dee2e6;\n    padding-bottom: 0.75rem;\n    margin-bottom: 1rem;\n}\n\n/* Tab content specific styling */\n.tab-pane {\n    animation: fadeIn 0.3s ease-in-out;\n}\n\n@keyframes fadeIn {\n    from { opacity: 0; }\n    to { opacity: 1; }\n}"
  },
  {
    "path": "htdocs/wx/afos/index.module.js",
    "content": "// AFOS Text Product Finder - ES Module\nimport { escapeHTML } from '/js/iemjs/domUtils.js';\n\n// Legacy anchors looked like PIL-LIMIT, now are PIL:(LIMIT * ORDER)\nconst NO_DATE_SET = 'No Limit';\nconst INITIAL_LOAD_THROTTLE_MS = 3000;\n\nlet tabCounter = 0;\nlet startupLoadCounter = 0;\n\n/**\n * Cookie utility functions (replacing js-cookie dependency)\n */\nconst Cookies = {\n    set: (name, value, options = {}) => {\n        let cookieString = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;\n\n        if (options.expires) {\n            const date = new Date();\n            date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));\n            cookieString += `; expires=${date.toUTCString()}`;\n        }\n\n        if (options.path) {\n            cookieString += `; path=${options.path}`;\n        }\n\n        document.cookie = cookieString;\n    },\n\n    get: (name) => {\n        const nameEQ = `${encodeURIComponent(name)}=`;\n        const ca = document.cookie.split(';');\n        for (let i = 0; i < ca.length; i++) {\n            let cc = ca[i];\n            while (cc.charAt(0) === ' ') {cc = cc.substring(1, cc.length);}\n            if (cc.indexOf(nameEQ) === 0) {\n                return decodeURIComponent(cc.substring(nameEQ.length, cc.length));\n            }\n        }\n        return undefined;\n    }\n};\n\n/**\n * Safe XSS prevention for text content\n */\nfunction text(str) {\n    return escapeHTML(str);\n}\n\n/**\n * Parse a token and add the corresponding tab\n */\nfunction dealWithToken(token) {\n    let tokens2 = token.split(\".\"); // URL-safe delimiter (dot doesn't get encoded)\n    if (tokens2.length !== 2) {\n        // Fall back to legacy colon format (from previous migration)\n        tokens2 = token.split(\":\");\n        if (tokens2.length !== 2) {\n            // Fall back to legacy pipe format\n            tokens2 = token.split(\"|\");\n            if (tokens2.length !== 2) {\n                // Even older legacy format\n                tokens2 = token.split(\"-\");\n            }\n        }\n    }\n    if (tokens2.length === 1) {\n        tokens2.push(1);\n    }\n    // Last value indicates the order\n    const order = (parseInt(tokens2[1], 10) < 0) ? \"asc\" : \"desc\";\n    const limit = Math.abs(parseInt(tokens2[1], 10));\n    addTab(\n        text(tokens2[0]),\n        \"\",\n        \"\",\n        limit,\n        NO_DATE_SET,\n        NO_DATE_SET,\n        false,\n        order,\n        true\n    );\n}\n\n/**\n * Read URL parameters for PIL tabs (modern URLSearchParams approach)\n */\nfunction readURLParams() {\n    const urlParams = new URLSearchParams(window.location.search);\n    const pilParam = urlParams.get('pil');\n\n    if (pilParam) {\n        const tokenList = pilParam.split(\"~\"); // URL-safe delimiter\n        tokenList.forEach(token => {\n            if (token.trim()) {\n                dealWithToken(token);\n            }\n        });\n        return true; // Found URL params\n    }\n    return false; // No URL params found\n}\n\n/**\n * Read anchor tags from URL hash (legacy support)\n */\nfunction readAnchorTags() {\n    const tokens = window.location.href.split(\"#\");\n    if (tokens.length !== 2 || !tokens[1]) {\n        return false;\n    }\n    const tokenList = text(tokens[1]).split(\",\");\n    tokenList.forEach(token => {\n        if (token.trim()) {\n            dealWithToken(token);\n        }\n    });\n    return true; // Found hash params\n}\n\n/**\n * Read saved cookies\n */\nfunction readCookies() {\n    const afospils = Cookies.get('afospils');\n    if (afospils === undefined || afospils === '') {\n        return;\n    }\n    // Handle both new URL-safe format and legacy format\n    const delimiter = afospils.includes('~') ? '~' : ',';\n    const tokenList = afospils.split(delimiter);\n    tokenList.forEach(token => {\n        if (token.trim()) {\n            dealWithToken(token);\n        }\n    });\n}\n\n/**\n * Save current tabs to cookies and update URL\n */\nfunction saveCookies() {\n    const afospils = [];\n    const tabs = document.querySelectorAll(\".nav-tabs li[data-pil]\");\n\n    tabs.forEach(li => {\n        // Skip temporary tabs with date restrictions for COOKIES only\n        if (li.dataset.sdate !== NO_DATE_SET) {\n            return;\n        }\n        const multi = (li.dataset.order === \"desc\") ? 1 : -1;\n        const val = parseInt(li.dataset.limit, 10) * multi;\n        afospils.push(`${li.dataset.pil}.${val}`); // URL-safe delimiter (dot doesn't get encoded)\n    });\n\n    // Save to cookies (only persistent tabs)\n    Cookies.set('afospils', afospils.join(\"~\"), { // URL-safe delimiter\n        'path': '/wx/afos/',\n        'expires': 3650\n    });\n\n    // Always update URL with ALL current tabs (including temporary ones)\n    updateURLFromCurrentTabs();\n}\n\n/**\n * Update URL with current PIL tabs using URLSearchParams\n */\nfunction updateURL(pilTokens = []) {\n    const url = new URL(window.location);\n\n    if (pilTokens.length > 0) {\n        url.searchParams.set('pil', pilTokens.join(\"~\")); // URL-safe delimiter\n    } else {\n        url.searchParams.delete('pil');\n    }\n\n    // Clear legacy hash\n    url.hash = '';\n\n    // Update URL without page reload\n    window.history.replaceState({}, '', url);\n}\n\n/**\n * Update URL from all current tabs (including those with date restrictions)\n */\nfunction updateURLFromCurrentTabs() {\n    const afospils = [];\n    const tabs = document.querySelectorAll(\".nav-tabs li[data-pil]\");\n\n    tabs.forEach(li => {\n        const multi = (li.dataset.order === \"desc\") ? 1 : -1;\n        const val = parseInt(li.dataset.limit, 10) * multi;\n        afospils.push(`${li.dataset.pil}.${val}`); // URL-safe delimiter (dot doesn't get encoded)\n    });\n\n    updateURL(afospils);\n}\n\n/**\n * Load content for a tab using fetch API\n */\nasync function loadTabContent(div, pil, center, ttaaii, limit, sdate, edate, order) {\n    div.innerHTML = '<img src=\"/images/wait24trans.gif\"> Searching the database ...';\n\n    const urlParams = new URLSearchParams({\n        fmt: 'html',\n        pil,\n        center: center || '',\n        limit: limit.toString(),\n        sdate: sdate === NO_DATE_SET ? '' : sdate,\n        edate: edate === NO_DATE_SET ? '' : edate,\n        ttaaii: ttaaii || '',\n        order\n    });\n\n    const url = `/cgi-bin/afos/retrieve.py?${urlParams.toString()}`;\n\n    try {\n        const response = await fetch(url);\n        const responseText = await response.text();\n        div.innerHTML = responseText;\n    } catch (error) {\n        div.innerHTML = `Error loading content: ${error.message}`;\n    }\n}\n\n/**\n * Stagger initial loads to avoid backend rate limiting on startup.\n */\nfunction queueStartupTabLoad(div, pil, center, ttaaii, limit, sdate, edate, order) {\n    const delayMs = startupLoadCounter * INITIAL_LOAD_THROTTLE_MS;\n    startupLoadCounter += 1;\n    window.setTimeout(() => {\n        loadTabContent(div, pil, center, ttaaii, limit, sdate, edate, order);\n    }, delayMs);\n}\n\n/**\n * Refresh the currently active tab\n */\nfunction refreshActiveTab() {\n    const activeLink = document.querySelector(\".nav-tabs .nav-link.active\");\n    if (!activeLink) {\n        return;\n    }\n\n    const activeTab = activeLink.closest('li');\n    const pil = activeTab.dataset.pil;\n    const limit = parseInt(activeTab.dataset.limit, 10);\n    const center = activeTab.dataset.center;\n    const ttaaii = activeTab.dataset.ttaaii;\n    const sdate = activeTab.dataset.sdate;\n    const edate = activeTab.dataset.edate;\n    const order = activeTab.dataset.order;\n\n    if (pil === undefined) {\n        return;\n    }\n\n    const tabid = activeLink.getAttribute('href');\n    const tabDiv = document.querySelector(tabid);\n\n    if (tabDiv) {\n        loadTabContent(tabDiv, pil, center, ttaaii, limit, sdate, edate, order);\n    }\n}\n\n/**\n * Add a new tab for AFOS data\n */\nfunction addTab(\n    pil,\n    center,\n    ttaaii,\n    limit,\n    sdate,\n    edate,\n    doCookieSave,\n    order,\n    throttleOnLoad = false\n) {\n    // Make sure the pil is something\n    if (pil === null || pil === \"\") {\n        return;\n    }\n\n    // Make sure this isn't a duplicate\n    const existingTab = document.querySelector(`#thetabs .nav-tabs li[data-pil='${pil}']`);\n    if (existingTab) {\n        return;\n    }\n\n    const navTabs = document.querySelector(\".nav-tabs\");\n    const tabContent = document.querySelector('.tab-content');\n\n    if (!navTabs || !tabContent) {\n        return;\n    }\n\n    const pos = tabCounter++;\n    const tabId = `tab${pos}`;\n\n    // Create new tab\n    const li = document.createElement('li');\n    li.className = 'nav-item';\n    li.setAttribute('role', 'presentation');\n    li.dataset.center = text(center);\n    li.dataset.sdate = text(sdate);\n    li.dataset.edate = text(edate);\n    li.dataset.ttaaii = text(ttaaii);\n    li.dataset.limit = text(limit.toString());\n    li.dataset.pil = text(pil);\n    li.dataset.order = text(order);\n\n    const link = document.createElement('a');\n    link.className = 'nav-link';\n    link.href = `#${tabId}`;\n    link.setAttribute('data-bs-toggle', 'tab');\n    link.setAttribute('data-bs-target', `#${tabId}`);\n    link.setAttribute('role', 'tab');\n    link.setAttribute('aria-controls', tabId);\n    link.setAttribute('aria-selected', 'false');\n    link.textContent = text(pil);\n    link.addEventListener('click', (e) => {\n        e.preventDefault();\n        activateTab(li);\n    });\n\n    li.appendChild(link);\n    navTabs.appendChild(li);\n\n    // Create new tab content\n    const tabPane = document.createElement('div');\n    tabPane.className = 'tab-pane fade';\n    tabPane.id = tabId;\n    tabPane.setAttribute('role', 'tabpanel');\n    tabPane.setAttribute('aria-labelledby', `${tabId}-tab`);\n    tabContent.appendChild(tabPane);\n\n    // Activate the new tab\n    activateTab(li);\n\n    // Load content; startup loads are throttled to protect backend limits.\n    if (throttleOnLoad) {\n        queueStartupTabLoad(tabPane, pil, center, ttaaii, limit, sdate, edate, order);\n    } else {\n        loadTabContent(tabPane, pil, center, ttaaii, limit, sdate, edate, order);\n    }\n\n    if (doCookieSave) {\n        saveCookies();\n    } else {\n        // Still update URL even if not saving to cookies\n        updateURLFromCurrentTabs();\n    }\n}\n\n/**\n * Activate a specific tab\n */\nfunction activateTab(targetTab) {\n    // Remove active class from all nav-links and tab-panes\n    document.querySelectorAll('.nav-tabs .nav-link').forEach(link => {\n        link.classList.remove('active');\n        link.setAttribute('aria-selected', 'false');\n    });\n    document.querySelectorAll('.tab-pane').forEach(pane => {\n        pane.classList.remove('active', 'show');\n    });\n\n    // Add active class to target tab link\n    const link = targetTab.querySelector('.nav-link');\n    if (link) {\n        link.classList.add('active');\n        link.setAttribute('aria-selected', 'true');\n\n        const tabId = link.getAttribute('href');\n        const tabPane = document.querySelector(tabId);\n        if (tabPane) {\n            tabPane.classList.add('active', 'show');\n        }\n    }\n}\n\n/**\n * Download button handler\n */\nfunction dlbtn(btn, fmt) {\n    const activeLink = document.querySelector(\".nav-tabs .nav-link.active\");\n    if (!activeLink) {\n        return;\n    }\n\n    const activeTab = activeLink.closest('li');\n    const pil = activeTab.dataset.pil;\n    if (pil === undefined) {\n        return;\n    }\n\n    const limit = activeTab.dataset.limit;\n    const center = activeTab.dataset.center;\n    const ttaaii = activeTab.dataset.ttaaii;\n    const order = activeTab.dataset.order;\n    let sdate = activeTab.dataset.sdate;\n    let edate = activeTab.dataset.edate;\n    sdate = (sdate === NO_DATE_SET) ? \"\" : sdate;\n    edate = (edate === NO_DATE_SET) ? \"\" : edate;\n\n    window.location = `/cgi-bin/afos/retrieve.py?dl=1&fmt=${fmt}&pil=${pil}` +\n        `&center=${center}&limit=${limit}&sdate=${sdate}&edate=${edate}` +\n        `&ttaaii=${ttaaii}&order=${order}`;\n    btn.blur();\n}\n/**\n * Setup UI event handlers\n */\nfunction buildUI() {\n    // Download button\n    const downloadBtn = document.getElementById(\"toolbar-download\");\n    if (downloadBtn) {\n        downloadBtn.addEventListener('click', (event) => {\n            dlbtn(event.target, \"text\");\n        });\n    }\n\n    // ZIP download button\n    const zipBtn = document.getElementById(\"toolbar-zip\");\n    if (zipBtn) {\n        zipBtn.addEventListener('click', (event) => {\n            dlbtn(event.target, \"zip\");\n        });\n    }\n\n    // Refresh button\n    const refreshBtn = document.getElementById(\"toolbar-refresh\");\n    if (refreshBtn) {\n        refreshBtn.addEventListener('click', (event) => {\n            refreshActiveTab();\n            event.target.blur();\n        });\n    }\n\n    // Print button\n    const printBtn = document.getElementById(\"toolbar-print\");\n    if (printBtn) {\n        printBtn.addEventListener('click', (event) => {\n            event.target.blur();\n            const activeLink = document.querySelector(\".nav-tabs .nav-link.active\");\n            if (!activeLink) {\n                return;\n            }\n            const activeTab = activeLink.closest('li');\n            const pil = activeTab.dataset.pil;\n            if (pil === undefined) {\n                return;\n            }\n            const tabid = activeLink.getAttribute('href');\n            const divToPrint = document.querySelector(tabid);\n\n            if (divToPrint) {\n                const newWin = window.open('', 'Print-Window');\n                newWin.document.open();\n                newWin.document.write(`<html><body onload=\"window.print()\">${divToPrint.innerHTML}</body></html>`);\n                newWin.document.close();\n                setTimeout(() => { newWin.close(); }, 10);\n            }\n        });\n    }\n\n    // Close button\n    const closeBtn = document.getElementById(\"toolbar-close\");\n    if (closeBtn) {\n        closeBtn.addEventListener('click', (event) => {\n            event.target.blur();\n            const activeLink = document.querySelector(\".nav-tabs .nav-link.active\");\n            if (!activeLink) {\n                return;\n            }\n            const activeTab = activeLink.closest('li');\n            const pil = activeTab.dataset.pil;\n            if (pil === undefined) {\n                return;\n            }\n            const tabid = activeLink.getAttribute('href');\n            const tabPane = document.querySelector(tabid);\n\n            // Remove tab and content\n            activeTab.remove();\n            if (tabPane) {\n                tabPane.remove();\n            }\n\n            // Activate the last remaining tab\n            const lastTab = document.querySelector(\".nav-tabs li:last-child\");\n            if (lastTab) {\n                activateTab(lastTab);\n            }\n\n            // Update both cookies and URL\n            saveCookies();\n        });\n    }\n\n    // Form submit button\n    const submitBtn = document.getElementById(\"myform-submit\");\n    if (submitBtn) {\n        submitBtn.addEventListener('click', (event) => {\n            const pilInput = document.querySelector(\"#myform input[name='pil']\");\n            const centerInput = document.querySelector(\"#myform input[name='center']\");\n            const ttaaiiInput = document.querySelector(\"#myform input[name='ttaaii']\");\n            const limitInput = document.querySelector(\"#myform input[name='limit']\");\n            const sdateInput = document.getElementById(\"sdate\");\n            const edateInput = document.getElementById(\"edate\");\n            const orderInput = document.querySelector(\"#myform input[name='order']:checked\");\n\n            if (!pilInput || !limitInput || !orderInput) {\n                return;\n            }\n\n            const pil = pilInput.value.toUpperCase();\n            const center = centerInput ? centerInput.value.toUpperCase() : '';\n            const ttaaii = ttaaiiInput ? ttaaiiInput.value.toUpperCase() : '';\n            const limit = parseInt(limitInput.value, 10);\n            const sdate = sdateInput ? sdateInput.value : '';\n            const edate = edateInput ? edateInput.value : '';\n            const order = orderInput.value;\n\n            addTab(pil, center, ttaaii, limit, sdate, edate, true, order);\n            event.target.blur();\n        });\n    }\n}\n\n/**\n * Initialize the application when DOM is ready\n */\nfunction init() {\n    buildUI();\n    startupLoadCounter = 0;\n\n    // Try modern URL params first, fall back to legacy hash, then cookies\n    if (!readURLParams()) {\n        if (!readAnchorTags()) {\n            readCookies();\n        }\n    }\n\n    // Always save to ensure URL is updated to modern format\n    saveCookies();\n}\n\n// Initialize when DOM is loaded\nif (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n} else {\n    // DOM already loaded\n    init();\n}\n"
  },
  {
    "path": "htdocs/wx/afos/index.phtml",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 59);\nrequire_once \"../../../include/myview.php\";\n$t = new MyView();\n\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" href=\"index.css\" />\nEOM;\n$t->jsextra = <<<EOM\n<script type=\"module\" src=\"index.module.js?v=4\"></script>\nEOM;\n$t->title = \"NWS Text Product Finder\";\n\n$helpdiv = <<<EOM\n<div class=\"d-flex align-items-center mb-4\">\n  <i class=\"bi bi-info-circle-fill fs-2 text-primary me-3\"></i>\n  <div>\n    <h3 class=\"mb-1\">IEM NWS Text Product Finder</h3>\n    <p class=\"text-muted mb-0\">Search and view National Weather Service text products</p>\n  </div>\n</div>\n\n<div class=\"row\">\n  <div class=\"col-lg-8\">\n    <div class=\"alert alert-info\" role=\"alert\">\n      <h6 class=\"alert-heading\"><i class=\"bi bi-lightbulb\"></i> Quick Start</h6>\n      <p class=\"mb-0\">This application provides a nice interface into viewing National Weather Service issued text products. Once you select a product, a cookie is set on your computer so that when you visit this page the next time, the same products will appear!</p>\n    </div>\n\n    <div class=\"accordion\" id=\"helpAccordion\">\n      <div class=\"accordion-item\">\n        <h2 class=\"accordion-header\">\n          <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#updates\" aria-expanded=\"false\" aria-controls=\"updates\">\n            <i class=\"bi bi-clock-history me-2\"></i> Recent Updates\n          </button>\n        </h2>\n        <div id=\"updates\" class=\"accordion-collapse collapse\" data-bs-parent=\"#helpAccordion\">\n          <div class=\"accordion-body\">\n            <ul class=\"list-unstyled\">\n              <li class=\"mb-2\">\n              <strong>24 April 2026:</strong> Removed mention of the ECMWF Model\n              MOS PILs as these are no longer available for public usage.\n              </li>\n              <li class=\"mb-2\"><strong>5 June 2025:</strong> The app was mostly rewritten and now uses a URL Parameters pil= style page reference. Any previous bookmarks should continue to work, but you may want to update them to the new style.</li>\n              <li class=\"mb-2\"><strong>29 Mar 2024:</strong> <a href=\"/cgi-bin/afos/retrieve.py?help\" class=\"btn btn-sm btn-outline-primary\"><i class=\"bi bi-file-earmark\"></i> Backend documentation</a> exists for those wishing to script against this service.</li>\n              <li class=\"mb-2\"><strong>15 May 2019:</strong> If you specify a three character PIL, you will get any PIL matches that start with those three characters. You can optionally specify a WMO Header (TTAAII) to reduce PIL ambiguity.</li>\n            </ul>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"accordion-item\">\n        <h2 class=\"accordion-header\">\n          <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#about\" aria-expanded=\"false\" aria-controls=\"about\">\n            <i class=\"bi bi-info-circle me-2\"></i> About This Service\n          </button>\n        </h2>\n        <div id=\"about\" class=\"accordion-collapse collapse\" data-bs-parent=\"#helpAccordion\">\n          <div class=\"accordion-body\">\n            <p>Using our local <a href=\"http://www.unidata.ucar.edu/projects/idd/index.html\">UNIDATA IDD</a> data feed, a simple script archives <strong>recent</strong> NWS text products into a database. You must know the AFOS PIL / AWIPS ID in order to get the products you want.</p>\n\n            <div class=\"alert alert-warning\" role=\"alert\">\n              <h6 class=\"alert-heading\"><i class=\"bi bi-exclamation-triangle\"></i> Important Notice</h6>\n              <p class=\"mb-2\">Please do not depend on this page for operational decision making. Errors can and do occur with data processing, data reception and any other error possible with Internet communications.</p>\n              <p class=\"mb-0\"><strong>All products should be used for educational purposes only.</strong></p>\n            </div>\n\n            <p>The archive maintains products from at least the most recent 7 days. A daily scrubber runs at 3:30 AM each day to reindex the products and delete old products, so the query interface is off-line at that time. This interruption should only last 10 minutes.</p>\n\n            <p class=\"mb-0\">If you don't like this app, <a href=\"old.phtml\" class=\"btn btn-sm btn-outline-secondary\">here is the old one</a>.</p>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"col-lg-4\">\n    <div class=\"card\">\n      <div class=\"card-header bg-secondary text-white\">\n        <i class=\"bi bi-list-ul\"></i> Common Product IDs\n      </div>\n      <div class=\"card-body p-2\">\n        <div class=\"mb-3\">\n          <h6 class=\"text-primary mb-2\">MOS PILS</h6>\n          <div class=\"table-responsive\">\n            <table class=\"table table-sm table-striped\">\n              <thead>\n                <tr><th>PIL</th><th>Description</th><th>DSM Example</th></tr>\n              </thead>\n              <tbody>\n                <tr><td>MAVxxx</td><td>GFS MOS Guidance</td><td>MAVDSM</td></tr>\n                <tr><td>METxxx</td><td>NAM MOS Guidance</td><td>METDSM</td></tr>\n                <tr><td>NBExxx</td><td>National Blend E</td><td>NBEDSM</td></tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n\n        <div class=\"mb-3\">\n          <h6 class=\"text-primary mb-2\">Popular Products</h6>\n          <div class=\"row\">\n            <div class=\"col-6\">\n              <button class=\"btn btn-sm btn-outline-primary w-100 mb-1\" onclick=\"document.getElementById('pil').value='REPNT2'\">REPNT2</button>\n              <button class=\"btn btn-sm btn-outline-primary w-100 mb-1\" onclick=\"document.getElementById('pil').value='SWODY1'\">SWODY1</button>\n              <button class=\"btn btn-sm btn-outline-primary w-100 mb-1\" onclick=\"document.getElementById('pil').value='SWODY2'\">SWODY2</button>\n            </div>\n            <div class=\"col-6\">\n              <button class=\"btn btn-sm btn-outline-primary w-100 mb-1\" onclick=\"document.getElementById('pil').value='AFDDMX'\">AFDDMX</button>\n              <button class=\"btn btn-sm btn-outline-primary w-100 mb-1\" onclick=\"document.getElementById('pil').value='SWOMCD'\">SWOMCD</button>\n              <button class=\"btn btn-sm btn-outline-primary w-100 mb-1\" onclick=\"document.getElementById('pil').value='PMDHMD'\">PMDHMD</button>\n            </div>\n          </div>\n        </div>\n\n        <div class=\"text-center\">\n          <a href=\"http://www.nws.noaa.gov/datamgmt/x_ref/xr04_X_ref_by_NNN.xlsx\" class=\"btn btn-sm btn-outline-info\">\n            <i class=\"bi bi-file-earmark-excel\"></i> NNN Categories\n          </a>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\nEOM;\n$theform = <<<EOM\n<form name=\"control\" id=\"myform\">\n\n<div class=\"mb-3\">\n  <label for=\"pil\" class=\"form-label fw-bold\">3-6 Character PIL</label>\n  <input placeholder=\"AFDDMX\" type=\"text\" name=\"pil\" id=\"pil\" maxlength=\"6\" class=\"form-control form-control-sm\">\n  <div class=\"form-text\">Specify 4-6 characters for exact match</div>\n</div>\n\n<div class=\"mb-3\">\n  <label for=\"center\" class=\"form-label fw-bold\">4 Character Center</label>\n  <input placeholder=\"KDMX\" type=\"text\" name=\"center\" id=\"center\" maxlength=\"4\" class=\"form-control form-control-sm\">\n  <div class=\"form-text\">Can be left blank</div>\n</div>\n\n<div class=\"mb-3\">\n  <label for=\"ttaaii\" class=\"form-label fw-bold\">6 Char WMO Header</label>\n  <input placeholder=\"FXUS63\" type=\"text\" name=\"ttaaii\" id=\"ttaaii\" maxlength=\"6\" class=\"form-control form-control-sm\">\n  <div class=\"form-text\">Can be left blank</div>\n</div>\n\n<div class=\"mb-3\">\n  <label for=\"limit\" class=\"form-label fw-bold\">Entries</label>\n  <input type=\"number\" name=\"limit\" id=\"limit\" min=\"1\" max=\"100\" value=\"1\" class=\"form-control form-control-sm\">\n</div>\n\n<div class=\"mb-3\">\n  <label class=\"form-label fw-bold\">Time Sort</label>\n  <div class=\"form-check\">\n    <input type=\"radio\" name=\"order\" value=\"desc\" id=\"desc\" class=\"form-check-input\" checked>\n    <label for=\"desc\" class=\"form-check-label\">Newest First</label>\n  </div>\n  <div class=\"form-check\">\n    <input type=\"radio\" name=\"order\" value=\"asc\" id=\"asc\" class=\"form-check-input\">\n    <label for=\"asc\" class=\"form-check-label\">Oldest First</label>\n  </div>\n</div>\n\n<div class=\"mb-3\">\n  <label for=\"sdate\" class=\"form-label fw-bold\">Start Date @ 00 UTC</label>\n  <input id=\"sdate\" type=\"date\" name=\"sdate\" min=\"1983-01-01\" class=\"form-control form-control-sm\">\n</div>\n\n<div class=\"mb-3\">\n  <label for=\"edate\" class=\"form-label fw-bold\">End Date @ 00 UTC</label>\n  <input id=\"edate\" type=\"date\" name=\"edate\" min=\"1983-01-02\" class=\"form-control form-control-sm\">\n</div>\n\n<div class=\"d-grid\">\n  <button type=\"button\" id=\"myform-submit\" class=\"btn btn-primary\">\n    <i class=\"bi bi-search\"></i> Load Product\n  </button>\n</div>\n\n</form>\nEOM;\n$t->content = <<<EOM\n\n<nav aria-label=\"breadcrumb\">\n  <ol class=\"breadcrumb\">\n    <li class=\"breadcrumb-item\"><a href=\"/nws/\">NWS Mainpage</a></li>\n    <li class=\"breadcrumb-item\"><a href=\"/nws/text.php\">NWS Text</a></li>\n    <li class=\"breadcrumb-item active\" aria-current=\"page\">Text Product Finder</li>\n  </ol>\n</nav>\n\n<div class=\"row\">\n  <div class=\"col-md-3\">\n    <div class=\"card\">\n      <div class=\"card-header bg-primary text-white\">\n        <i class=\"bi bi-search\"></i> Product Search\n      </div>\n      <div class=\"card-body\">\n        {$theform}\n      </div>\n    </div>\n  </div><!-- ./col-md-3 -->\n  <div class=\"col-md-9\">\n\n<div class=\"card\" id=\"thetabs\">\n    <div class=\"card-header\">\n      <ul class=\"nav nav-tabs card-header-tabs\" id=\"myTab\" role=\"tablist\">\n         <li class=\"nav-item\" role=\"presentation\">\n           <a class=\"nav-link active\" href=\"#help\" data-bs-toggle=\"tab\" data-bs-target=\"#help\" role=\"tab\" aria-controls=\"help\" aria-selected=\"true\">Help</a>\n         </li>\n      </ul>\n    </div><!-- ./card-header -->\n    <div class=\"card-body\">\n    <div id=\"thetabs-toolbar\" class=\"mb-3\">\n        <div class=\"btn-toolbar\" role=\"toolbar\">\n          <div class=\"btn-group me-2\" role=\"group\">\n            <button type=\"button\" id=\"toolbar-refresh\" class=\"btn btn-outline-secondary btn-sm\">\n              <i class=\"bi bi-arrow-clockwise\"></i> Refresh\n            </button>\n            <button type=\"button\" id=\"toolbar-download\" class=\"btn btn-outline-secondary btn-sm\">\n              <i class=\"bi bi-download\"></i> Download Text\n            </button>\n            <button type=\"button\" id=\"toolbar-zip\" class=\"btn btn-outline-secondary btn-sm\">\n              <i class=\"bi bi-file-earmark-zip\"></i> Download Zipfile\n            </button>\n          </div>\n          <div class=\"btn-group me-2\" role=\"group\">\n            <button type=\"button\" id=\"toolbar-print\" class=\"btn btn-outline-secondary btn-sm\">\n              <i class=\"bi bi-printer\"></i> Print\n            </button>\n          </div>\n          <div class=\"btn-group\" role=\"group\">\n            <button type=\"button\" id=\"toolbar-close\" class=\"btn btn-outline-danger btn-sm\">\n              <i class=\"bi bi-x-lg\"></i> Close Tab\n            </button>\n          </div>\n        </div>\n    </div>\n     <div class=\"tab-content clearfix\" id=\"myTabContent\">\n\n       <div class=\"tab-pane fade show active\" id=\"help\" role=\"tabpanel\" aria-labelledby=\"help-tab\">\n        {$helpdiv}\n       </div><!-- ./help -->\n    </div><!-- ./tab-content -->\n    </div><!-- ./card-body -->\n  </div><!-- ./card -->\n  </div><!-- ./col-md-9 -->\n</div><!-- ./row -->\n\nEOM;\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/wx/afos/list.css",
    "content": ".col-md-2 {\n    overflow-y: auto;\n    overflow-x: hidden;\n    max-height: 350px;\n}\n\n.col-md-2 .card-body {\n    padding: 0.75rem;\n    font-size: 0.875rem;\n}"
  },
  {
    "path": "htdocs/wx/afos/list.module.js",
    "content": "import { requireElement } from '/js/iemjs/domUtils.js';\n\n/**\n * Toggle visibility of date range selector.\n */\nfunction showHide() {\n    const d2 = document.getElementById('d2');\n    const cb = document.getElementById('drange');\n    if (!d2 || !cb) {return;}\n    const expanded = cb.checked;\n    d2.style.display = expanded ? 'block' : 'none';\n    cb.setAttribute('aria-expanded', expanded ? 'true' : 'false');\n    d2.setAttribute('aria-hidden', expanded ? 'false' : 'true');\n}\n\n/**\n * Smooth scroll to section by name.\n */\nfunction scrollToSection(name) {\n    const target = document.getElementById(`sect${name}`);\n    if (!target) {return;}\n    const prefersReduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n    target.scrollIntoView({\n        behavior: prefersReduced ? 'auto' : 'smooth',\n        block: 'start'\n    });\n}\n\n// Initialize the application when DOM is ready\ndocument.addEventListener('DOMContentLoaded', () => {\n    // Date range checkbox listener\n    const drangeCheckbox = requireElement('drange');\n    drangeCheckbox.addEventListener('change', showHide);\n\n    document.querySelectorAll('button[data-jump]').forEach((btn) => {\n        btn.addEventListener('click', () => {\n            const name = btn.getAttribute('data-jump');\n            if (name) {scrollToSection(name);}\n        });\n    });\n});\n"
  },
  {
    "path": "htdocs/wx/afos/list.phtml",
    "content": "<?php\n/*\n * Create lists of links to archived AFOS products based on what the user wants\n */\nrequire_once \"../../../config/settings.inc.php\";\ndefine(\"IEM_APPID\", 48);\nrequire_once \"../../../include/forms.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/network.php\";\nrequire_once \"../../../include/mlib.php\";\n\n$t = new MyView();\n$t->iemselect2 = TRUE;\n$t->title = \"NWS Text Product by Issuing Center by Date\";\n$t->headextra = '<link rel=\"stylesheet\" href=\"list.css\" />';\n$t->jsextra = <<<EOM\n<script src=\"list.module.js?v=2\" type=\"module\"></script>\nEOM;\n\n// A dance here to get a 4-char and 3-char identifier\n$source = get_str404(\"source\", 'DMX', 4);\n$pil = get_str404(\"pil\", \"AFD\", 6);\n$by = get_str404(\"by\", \"cccc\");\n$view = get_str404(\"view\", 'grid');\n$order = get_str404(\"order\", \"asc\");\n\n$year = get_int404(\"year\", date(\"Y\"));\n$month = get_int404(\"month\", date(\"m\"));\n$day = get_int404(\"day\", date(\"d\"));\n$year2 = get_int404(\"year2\", date(\"Y\"));\n$month2 = get_int404(\"month2\", date(\"m\"));\n$day2 = get_int404(\"day2\", date(\"d\"));\n\n$res = file_get_contents(\"{$INTERNAL_BASEURL}/json/reference.py\");\n$jobj = json_decode($res, $assoc = TRUE, JSON_FORCE_OBJECT);\n$pilselect = make_select(\"pil\", $pil, $jobj['prodDefinitions'], $jscallback = \"\",\n    $cssclass = \"form-select iemselect2\",\n    $multiple=FALSE,\n    $showvalue=TRUE);\n\n$cccc = $source;\n$sesource = $source;\nif (strlen($source) == 3) {\n    $cccc = \"K$source\";\n}\nif ((strlen($source) == 4) && (substr($source, 0, 1) == 'K')) {\n    $sesource = substr($source, 1, 3);\n}\n\n// Belt-suspenders check here\n$dt = new DateTime(\"$year-$month-$day\");\n$datequeue = array($dt->format(\"Y-m-d\"));\n\n$d2display = \"none\";\n$ariaexpanded = \"false\"; // ARIA initial collapsed state for date range\n$ariahidden = \"true\"; // ARIA hidden state for end date container\n\n$timeformat = \"H:i\";\nif (isset($_REQUEST['drange'])) {\n    $dt2 = new Datetime(\"$year2-$month2-$day2\");\n    // Enforce the 10 day limit on range\n    if ($dt2->diff($dt)->days > 10) {\n        $dt2 = $dt->add(new DateInterval(\"P10D\"));\n        $year2 = $dt2->format(\"Y\");\n        $month2 = $dt2->format(\"m\");\n        $day2 = $dt2->format(\"d\");\n    }\n\n    // Loop through all the days in the range from $dt to $dt2\n    while (($dt <= $dt2) && sizeof($datequeue) < 10) {\n        $datequeue[] = $dt->format(\"Y-m-d\");\n        $dt->modify(\"+1 day\");\n    }\n    $d2display = \"block\";\n    $ariaexpanded = \"true\";\n    $ariahidden = \"false\";\n    $timeformat = \"d/H:i\";\n}\n\n$ar = array(\n    \"asc\" => \"Time Ascending\",\n    \"desc\" => \"Time Descending\"\n);\nif (!array_key_exists($order, $ar)) {\n    $order = 'asc';\n}\n$oselect = make_select(\"order\", $order, $ar);\n\n$table = \"\";\n$atags = \"\";\n$totalcount = 0; // Count rows for ARIA summary\n\n// Loop over dates in the datequeue\n$prods = array();\n$columns = array();\n$params = array();\nif ($by == \"cccc\") {\n    $params[\"cccc\"] = $cccc;\n} else {\n    $params[\"pil\"] = $pil;\n}\n$antiby = ($by == \"cccc\") ? \"pil\": \"cccc\";\nforeach ($datequeue as $dt) {\n    $params[\"date\"] = $dt;\n    $res = iemws_json(\"nws/afos/list.json\", $params);\n    $rows = $res[\"data\"];\n    if ($order == \"desc\") {\n        $rows = array_reverse($rows);\n    }\n    if (is_array($rows)) { $totalcount += count($rows); }\n    if (is_null($rows) || sizeof($rows) == 0) {\n        $table .= \"<h3>No products found for $dt</h3>\\n\";\n        continue;\n    }\n\n    if ($view == \"prod\") {\n        foreach ($rows as $row) {\n            $ts = strtotime($row[\"entered\"]);\n            if (!array_key_exists($row[$antiby], $prods)) {\n                $prods[$row[$antiby]] = \"\";\n            }\n            $prods[$row[$antiby]] .= sprintf(\n                \"<tr><td>%s</td><td><a href=\\\"%s\\\">%s</a>%s</td><td>%s</td><td>%s</td></tr>\",\n                $row[\"cccc\"],\n                $row[\"link\"],\n                $row[\"pil\"],\n                ($row[\"count\"] > 1) ? \" {$row['count']}x\": \"\",\n                gmdate(\"Y-m-d\", $ts),\n                gmdate(\"H:i\", $ts)\n            );\n        }\n    } else if ($view == \"grid\") {\n        foreach ($rows as $row) {\n            $ts = strtotime($row[\"entered\"]);\n            if (!array_key_exists($row[$antiby], $columns)) {\n                $columns[$row[$antiby]] = \"\";\n            }\n            $columns[$row[$antiby]] .= sprintf(\n                \"<a href=\\\"%s\\\">%s</a> %s@%s<br />\",\n                $row[\"link\"],\n                $row[\"pil\"],\n                ($row[\"count\"] > 1) ? \"{$row['count']}x\": \"\",\n                gmdate($timeformat, $ts)\n            );\n        }\n    } else {\n        // Chronological mode: build hour-based columns and rows\n        $lasthour = \"\";\n        $colnum = 0;\n        $rowopen = false;\n        $containeropen = false;\n    $atags .= '<div class=\"clearfix\"></div><nav class=\"mb-3\" aria-label=\"Hour navigation\"><strong class=\"d-block\">Skip to Hour:</strong><div class=\"d-flex flex-wrap gap-1 mt-2\">';\n        foreach ($rows as $row) {\n            $ts = strtotime($row[\"entered\"]);\n            if (gmdate(\"H\", $ts) != $lasthour) {\n                if ($lasthour != \"\") {\n                    // End previous card/col\n                    $table .= \"</div></div></div>\\n\";\n                }\n                $lasthour = gmdate(\"H\", $ts);\n                // Use data-jump attribute; JS adds listener (Rule: no JS embedded in HTML files)\n                $atags .= sprintf(\n                    \"<button type=\\\"button\\\" class=\\\"btn btn-outline-primary btn-sm\\\" data-jump=\\\"%s\\\" aria-label=\\\"Jump to hour %s UTC\\\">%s</button>\",\n                    $lasthour,\n                    $lasthour,\n                    $lasthour\n                );\n                if ($colnum % 6 == 0) {\n                    if ($rowopen) {\n                        // End previous row and container\n                        $table .= \"</div></div>\\n\";\n                        $rowopen = false;\n                        $containeropen = false;\n                    }\n                    $table .= \"<div class=\\\"container\\\"><div class=\\\"row mb-3\\\">\\n\";\n                    $rowopen = true;\n                    $containeropen = true;\n                }\n                $table .= \"<div id=\\\"sect$lasthour\\\" class=\\\"col-lg-2 col-md-2 col-sm-2 col-4 mb-2\\\"><div class=\\\"card h-100\\\"><div class=\\\"card-body\\\">\";\n                $table .= sprintf(\"<strong>%s UTC</strong><br />\", gmdate('d M Y : H', $ts));\n                $colnum += 1;\n            }\n            $table .= sprintf(\n                \"<a href=\\\"%s\\\">%s</a> %s@%s<br />\",\n                $row[\"link\"],\n                $row[\"pil\"],\n                ($row[\"count\"] > 1) ? \"{$row['count']}x\": \"\",\n                gmdate(\"H:i\", $ts)\n            );\n        }\n        // Close any open card/col\n        $table .= \"</div></div></div>\\n\";\n        // Close any open row/container\n        if ($rowopen) {\n            $table .= \"</div></div>\\n\";\n        }\n    $atags .= '</div></nav>';\n    }\n}\nif ($view == \"prod\") {\n    $keys = array_keys($prods);\n    asort($keys);\n    $table .= <<<EOM\n<table class=\"table table-sm table-striped\" aria-describedby=\"resultsSummary\">\n<caption class=\"visually-hidden\">NWS text products listing</caption>\n<thead><tr><th scope=\"col\">Source</th><th scope=\"col\">Product Link</th><th scope=\"col\">Date</th><th scope=\"col\">UTC Time</th></tr></thead>\n<tbody>\nEOM;\n    foreach ($keys as $i => $k) {\n        $table .= sprintf(\"%s\", $prods[$k]);\n    }\n    $table .= \"</tbody></table>\";\n} else if ($view == \"grid\") {\n    ksort($columns);\n    $keys = array_keys($columns);\n    $table = \"\";\n    $atags .= '<div class=\"clearfix\"></div><nav class=\"mb-3\" aria-label=\"' . htmlspecialchars($antiby) . ' navigation\"><strong class=\"d-block\">Skip to ' . $antiby . ':</strong><div class=\"d-flex flex-wrap gap-1 mt-2\">';\n    foreach ($keys as $i => $k) {\n        // Use data-jump attribute; JS adds listener (Rule: no JS embedded in HTML files)\n        $labelcontext = ($antiby == 'pil') ? 'product' : 'center';\n        $atags .= sprintf(\n            \"<button type=\\\"button\\\" class=\\\"btn btn-outline-secondary btn-sm\\\" data-jump=\\\"%s\\\" aria-label=\\\"Jump to %s %s\\\">%s</button>\",\n            $k,\n            $labelcontext,\n            $k,\n            $k\n        );\n        if ($i % 6 == 0) {\n            if ($i > 0) {\n                $table .= \"</div>\";\n            }\n            $table .= \"<div class=\\\"row mb-3\\\">\\n\";\n        }\n        $table .= sprintf(\n            \"<div id=\\\"sect$k\\\" class=\\\"col-lg-2 col-md-2 col-sm-2 col-4 mb-2\\\"><div class=\\\"card h-100\\\"><div class=\\\"card-body\\\">%s</div></div></div>\\n\",\n            $columns[$k]\n        );\n    }\n    $table .= \"</div>\\n\";\n    $atags .= '</div></nav>';\n}\n\n$drangecheck = (isset($_REQUEST[\"drange\"])) ? \"checked='checked'\" : \"\";\n$groups = array(\"WFO\", \"RFC\", \"NWS\", \"NCEP\", \"CWSU\", \"WSO\");\n$groupnames = array(\n    \"Weather Forecast Offices (WFO)\",\n    \"River Forecast Centers (RFC)\",\n    \"NWS Admin Organizations\",\n    \"NCEP Centers\",\n    \"Center Weather Service Units (CWSU)\",\n    \"Weather Service Offices (WSO)\",\n);\n$sources = array();\nforeach ($groups as $key => $s) {\n    $sources[$groupnames[$key]] = array();\n    $nt = new NetworkTable($s);\n    foreach ($nt->table as $sid => $tbl) {\n        $sources[$groupnames[$key]][$sid] = sprintf(\n            \"[%s] %s\",\n            $sid,\n            $tbl['name']\n        );\n    }\n}\n$netselect = make_select(\n    \"source\",\n    $sesource,\n    $sources,\n    $jscallback = \"\",\n    $cssclass = \"form-select iemselect2\"\n);\n\n$yselect = yearSelect(1983, $year, \"year\");\n$mselect = monthSelect($month, \"month\");\n$dselect = daySelect($day, \"day\");\n$y2select = yearSelect(1993, $year2, \"year2\");\n$m2select = monthSelect($month2, \"month2\");\n$d2select = daySelect($day2, \"day2\");\n\n$ar = array(\n    \"time\" => \"Chronological\",\n    \"grid\" => \"Grid\",\n    \"prod\" => \"Product List\"\n);\n$vselect = make_select(\"view\", $view, $ar, \"\", \"form-select\");\n$ar2 = array(\n    \"asc\" => \"Ascending\",\n    \"desc\" => \"Descending\"\n);\n$oselect = make_select(\"order\", $order, $ar2, \"\", \"form-select\");\n$bycccc = ($by == \"cccc\") ? ' checked=\"checked\"' : \"\";\n$bypil = ($by == \"pil\") ? ' checked=\"checked\"' : \"\";\n\n\n$t->content = <<<EOM\n<h3>NWS Text Products by Date and Issuance Center or PIL</h3>\n<p>This application prints out a listing of IEM archived text products.\nAfter about\nseven days, the IEM purges a lot of the frequently issued products like\nSHEF and METAR data. Please be patient with this page if you select a \nrange of dates.</p>\n\n<p>See this <a href=\"/onsite/news.phtml?id=1408\">news item</a> for more details\non this archive and sources used.  You can also find a listing of \n<a href=\"https://forecast.weather.gov/product_types.php?site=NWS\">three character PILs</a>\nand a brief associated product name on the NWS website.</p>\n\n<p><strong>Archive Completeness:</strong>\n<ul>\n <li><strong>1983 thru 2001</strong>: Sometimes sparse / missing data.\n Also note that product source IDs\n are likely different back then (prior to NWS Modernization), some work was\n done to assign present day WMO source IDs to the product metadata stored in\n the database. The original text was not modified. To find text from a now\n closed WSO from the period, try using the present day WFO center that covers\n the location.</li>\n <li><strong>2002 thru 2007</strong>: More consistent archives, but still likely\n missing things.  Much better coverage though.</li>\n <li><strong>2008 thru now</strong>: Very good data coverage and higher fidelity\n archiving.</li>\n </ul>\n</p>\n\n<p>This data presentation is powered by a <a href=\"/api/1/docs#/nws/service_nws_afos_list__fmt__get\">IEM API Web Service</a>.</p>\n\n<form name=\"selector\" method=\"GET\">\n<div class=\"card\">\n<div class=\"card-header\">\n<h4 class=\"card-title mb-0\">Search Parameters</h4>\n</div>\n<div class=\"card-body\">\n<div class=\"row\">\n\n<div class=\"col-lg-4 col-md-6 mb-3\">\n<h5>Search Method</h5>\n<div class=\"form-check\">\n<input type=\"radio\" name=\"by\" value=\"cccc\" id=\"bycccc\" class=\"form-check-input\"{$bycccc}>\n<label for=\"bycccc\" class=\"form-check-label\">By Center</label>\n</div>\n<div class=\"mt-2\">\n{$netselect}\n</div>\n\n<div class=\"form-check mt-3\">\n<input type=\"radio\" name=\"by\" value=\"pil\" id=\"bypil\" class=\"form-check-input\"{$bypil}>\n<label for=\"bypil\" class=\"form-check-label\">By Product ID</label>\n</div>\n<div class=\"mt-2\">\n{$pilselect}\n</div>\n</div>\n\n<div class=\"col-lg-4 col-md-6 mb-3\">\n<h5>Date Selection</h5>\n<label class=\"form-label fw-bold\">For UTC Date:</label>\n<div class=\"d-flex gap-2 mb-3\">\n{$yselect} {$mselect} {$dselect}\n</div>\n\n<div class=\"form-check\">\n<input id=\"drange\" type=\"checkbox\" name=\"drange\" value=\"yes\" class=\"form-check-input\" {$drangecheck} aria-controls=\"d2\" aria-expanded=\"{$ariaexpanded}\"/>\n<label for=\"drange\" class=\"form-check-label\">List over UTC date range through (max 10 days)</label>\n</div>\n\n<div id=\"d2\" class=\"mt-2\" style=\"display: {$d2display}\" aria-hidden=\"{$ariahidden}\">\n<label class=\"form-label\">End Date:</label>\n<div class=\"d-flex gap-2\">\n{$y2select} {$m2select} {$d2select}\n</div>\n</div>\n</div>\n\n<div class=\"col-lg-4 col-md-12 mb-3\">\n<h5>Display Options</h5>\n<div class=\"mb-3\">\n<label class=\"form-label\">How to view:</label>\n{$vselect}\n</div>\n\n<div class=\"mb-3\">\n<label class=\"form-label\">Sort order:</label>\n{$oselect}\n</div>\n\n<div class=\"d-grid\">\n<input type=\"submit\" value=\"Giveme Giveme!\" class=\"btn btn-primary\">\n</div>\n</div>\n\n</div>\n</div>\n</div>\n</form>\n<div id=\"resultsSummary\" class=\"visually-hidden\" aria-live=\"polite\">Loaded {$totalcount} product rows in {$view} view.</div>\n{$atags}\n\n{$table}\n\nEOM;\n\n$t->render('full.phtml');\n"
  },
  {
    "path": "htdocs/wx/afos/old.phtml",
    "content": "<html>\n\n<head>\n    <title>NWS Text Product Finder</title>\n</head>\n\n<frameset rows=\"67,*\" border=\"0\">\n    <frame src=\"top.php\" name=\"top\" resize=\"no\" frameborder=\"0\" framespacing=\"0\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\">\n    <frame src=\"bottom.php\" name=\"display\" resize=\"no\" frameborder=\"0\" framespacing=\"0\" marginwidth=\"0\" marginheight=\"0\">\n</frameset>\n\n</html>"
  },
  {
    "path": "htdocs/wx/afos/p.css",
    "content": "/* AFOS product display styles */\n.afos-block { position: relative; margin-top: 1rem; }\n.afos-block:first-of-type { margin-top: 0.5rem; }\n.afos-pre { background:#f8f9fa; padding: .75rem; border:1px solid #dee2e6; border-radius:.25rem; font-size: .85rem; overflow-x:auto; }\n.afos-toolbar { position:absolute; top:.25rem; right:.25rem; display:flex; gap:.25rem; }\n.afos-copy.copied { color:#198754; border-color:#198754; }\n.afos-copy.copied::after { content:\" ✓\"; }\n\n/* Compact bulk form */\n.afos-bulk-wrapper { font-size: .8rem; }\n.afos-bulk-form .form-control, .afos-bulk-form .form-select { min-width: 110px; }\n@media (max-width: 575.98px) {\n    .afos-bulk-form .form-control, .afos-bulk-form .form-select { flex:1 1 45%; }\n}\n\n/* Compact labeled fields */\n.afos-bulk-form .afos-field { min-width: 110px; }\n.afos-bulk-form .form-label { font-weight: 600; }\n\n/* Help toggle */\n.afos-bulk-help-toggle { font-size: .85rem; text-decoration: underline; }\n#bulk-help { background: #fdfdfd; border-left: 3px solid #6c757d; padding: .6rem .85rem; font-size: .9rem; }\n\n/* Bulk Download emphasis */\n.afos-bulk-heading { font-size: .95rem; font-weight: 600; color:#212529; border-bottom: 1px solid #dee2e6; padding-bottom: .15rem; }\n.afos-bulk-title { display:inline-flex; align-items:center; gap:.35rem; letter-spacing:.25px; }\n.afos-bulk-title i { color:#0d6efd; }\n"
  },
  {
    "path": "htdocs/wx/afos/p.module.js",
    "content": "// Copy-to-clipboard behavior for AFOS product <pre> blocks\nconst copyText = (text) => {\n    if (navigator.clipboard && window.isSecureContext) {\n        return navigator.clipboard.writeText(text);\n    }\n    // Fallback: temporary textarea\n    const ta = document.createElement('textarea');\n    ta.value = text;\n    ta.style.position = 'fixed';\n    ta.style.top = '-9999px';\n    document.body.appendChild(ta);\n    ta.focus();\n    ta.select();\n    try {\n        document.execCommand('copy');\n    } finally {\n        document.body.removeChild(ta);\n    }\n    return Promise.resolve();\n};\n\nconst markCopied = (btn) => {\n    btn.classList.add('copied');\n    const orig = btn.dataset.label || btn.textContent;\n    if (!btn.dataset.label) {btn.dataset.label = orig;}\n    btn.textContent = 'Copied';\n    setTimeout(() => {\n        btn.classList.remove('copied');\n        btn.textContent = btn.dataset.label;\n    }, 2500);\n};\n\nconst init = () => {\n    const buttons = document.querySelectorAll('.afos-copy');\n    if (buttons.length === 0) {return;}\n    const status = document.getElementById('afos-status');\n    buttons.forEach((btn) => {\n        btn.addEventListener('click', async (ev) => {\n            ev.preventDefault();\n            // data-copy-target=\"next\" means copy the sibling <pre>\n            const pre = btn.closest('.afos-block')?.querySelector('.afos-pre');\n            if (!pre) {return;}\n            const text = pre.innerText.replace(/\\s+$/, '');\n            try {\n                await copyText(text);\n                markCopied(btn);\n                if (status) {status.textContent = 'Product text copied to clipboard.';}\n            } catch {\n                // Silent failure; indicate error state briefly.\n                btn.textContent = 'Error';\n                setTimeout(() => {\n                    if (!btn.classList.contains('copied')) {\n                        btn.textContent = btn.dataset.label || 'Copy';\n                    }\n                }, 2000);\n                if (status) {status.textContent = 'Copy failed.';}\n            }\n        });\n    });\n    // Help toggle for bulk download\n    const helpToggle = document.querySelector('.afos-bulk-help-toggle');\n    const helpPanel = document.getElementById('bulk-help');\n    if (helpToggle && helpPanel) {\n        helpToggle.addEventListener('click', () => {\n            const isOpen = helpToggle.getAttribute('aria-expanded') === 'true';\n            helpToggle.setAttribute('aria-expanded', String(!isOpen));\n            if (isOpen) {\n                helpPanel.hidden = true;\n            } else {\n                helpPanel.hidden = false;\n                helpPanel.focus?.();\n            }\n        });\n    }\n};\n\ndocument.addEventListener('DOMContentLoaded', init);\n"
  },
  {
    "path": "htdocs/wx/afos/p.php",
    "content": "<?php\ndefine(\"IEM_APPID\", 47);\n\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/myview.php\";\nrequire_once \"../../../include/forms.php\";\n$t = new MyView();\n$t->headextra = <<<EOM\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/wx/afos/p.css\">\nEOM;\n$t->jsextra = <<<EOM\n<script type=\"module\" src=\"/wx/afos/p.module.js\"></script>\nEOM;\n\n$e = null;\n// Ensure e is 12 characters long and only contains digits\nif (array_key_exists(\"e\", $_GET)) {\n    $e = get_str404(\"e\");\n    if ((strlen($e) != 12) || !ctype_digit($e)) {\n        // Naughty\n        xssafe(\"<tag>\");\n    }\n    // convert to a DateTime instance\n    $e = DateTimeImmutable::createFromFormat(\"YmdHi\", $e, new DateTimeZone(\"UTC\"));\n    if ($e === false) {\n        // Naughty\n        xssafe(\"<tag>\");\n    }\n}\n$pil = isset($_GET['pil']) ? strtoupper(substr(xssafe($_GET['pil']), 0, 6)) : null;\n$bbb = isset($_GET[\"bbb\"]) ? strtoupper(substr(xssafe($_GET[\"bbb\"]), 0, 3)) : null;\n$dir = get_str404('dir', null);\n\nif (is_null($pil) || trim($pil) == \"\") {\n    http_response_code(422);\n    die(\"No 'pil' provided by URL, it is required.\");\n}\n\n$conn = iemdb(\"afos\");\n$st_nobbb = iem_pg_prepare(\n    $conn,\n    \"SELECT data, bbb, entered at time zone 'UTC' as mytime, source, wmo \" .\n        \"from products WHERE pil = $1 and entered = $2\"\n);\n$st_bbb = iem_pg_prepare(\n    $conn,\n    \"SELECT data, bbb, entered at time zone 'UTC' as mytime, source, wmo \" .\n        \"from products WHERE pil = $1 and entered = $2 and bbb = $3\"\n);\n\nfunction locate_product($conn, $e, $pil, $dir)\n{\n    $sortdir = ($dir == 'next') ? \"ASC\" : \"DESC\";\n    $sign = ($dir == 'next') ? \">\" : \"<\";\n    $table = sprintf(\n        \"products_%s_%s\",\n        $e->format(\"Y\"),\n        (intval($e->format(\"m\")) > 6) ? \"0712\" : \"0106\"\n    );\n    // first attempt shortcut\n    $stname = iem_pg_prepare($conn, \"SELECT \" .\n        \"entered at time zone 'UTC' as mytime from $table \" .\n        \"WHERE pil = $1 and entered $sign $2 \" .\n        \"ORDER by entered $sortdir LIMIT 1\");\n    $rs = pg_execute($conn, $stname, array(\n        $pil,\n        $e->format(\"c\"),\n    ));\n    if (pg_num_rows($rs) == 0) {\n        // widen the net\n        $stname = iem_pg_prepare($conn, \"SELECT \" .\n            \"entered at time zone 'UTC' as mytime from products \" .\n            \"WHERE pil = $1 and entered $sign $2 \" .\n            \"ORDER by entered $sortdir LIMIT 1\");\n        $rs = pg_execute($conn, $stname, array(\n            $pil,\n            $e->format(\"c\"),\n        ));\n    }\n    if (pg_num_rows($rs) == 0) return $rs;\n\n    $row = pg_fetch_assoc($rs, 0);\n    $uri = sprintf(\n        \"p.php?pil=%s&e=%s\",\n        $pil,\n        date(\"YmdHi\", strtotime($row[\"mytime\"]))\n    );\n    header(\"Location: $uri\");\n    die();\n}\n\nfunction last_product($conn, $pil)\n{\n    // Get the latest\n    $stname = iem_pg_prepare($conn, \"SELECT data, bbb, \"\n        . \" entered at time zone 'UTC' as mytime, source from products\"\n        . \" WHERE pil = $1\"\n        . \" ORDER by entered DESC LIMIT 1\");\n    $rs = pg_execute($conn, $stname, array($pil));\n    if (pg_num_rows($rs) == 1) {\n        $row = pg_fetch_assoc($rs, 0);\n        $uri = sprintf(\n            \"p.php?pil=%s&e=%s\",\n            $pil,\n            date(\"YmdHi\", strtotime($row[\"mytime\"]))\n        );\n        header(\"Location: $uri\");\n        die();\n    }\n    return $rs;\n}\nfunction exact_product($conn, $e, $pil, $bbb)\n{\n    if (is_null($bbb)) {\n        global $st_nobbb;\n        $rs = pg_execute($conn, $st_nobbb, array(\n            $pil,\n            $e->format(\"c\"),\n        ));\n    } else {\n        global $st_bbb;\n        $rs = pg_execute($conn, $st_bbb, array(\n            $pil,\n            $e->format(\"c\"),\n            $bbb,\n        ));\n    }\n    return $rs;\n}\n\n// Okay, lets see if we can find the product we are looking for!\nif (is_null($e)) {\n    // Option 1: We only pil= set and no time, find the last product\n    $rs = last_product($conn, $pil);\n} elseif (!is_null($e) && !is_null($dir)) {\n    // Option 2: We have a time set and some directionality set\n    $rs = locate_product($conn, $e, $pil, $dir);\n    // if the above fails, just go to last product\n    $rs = last_product($conn, $pil);\n} else {\n    $rs = exact_product($conn, $e, $pil, $bbb);\n}\n\n$bc_pil = htmlspecialchars($pil ?? '');\n$content = '<nav aria-label=\"breadcrumb\"><ol class=\"breadcrumb mb-2\">'\n    . '<li class=\"breadcrumb-item\"><a href=\"/nws/text.php\">NWS Text Products</a></li>'\n    . '<li class=\"breadcrumb-item active\" aria-current=\"page\">' . $bc_pil . '</li>'\n    . '</ol></nav>'\n    . '<h3 class=\"mb-3\" aria-hidden=\"true\">National Weather Service Text Product</h3>'\n    . '<div id=\"afos-heading\" class=\"visually-hidden\">AFOS product ' . $bc_pil . '</div>'\n    . '<div id=\"afos-status\" class=\"visually-hidden\" aria-live=\"polite\" aria-atomic=\"true\"></div>'\n    . '<span id=\"utc-note\" class=\"visually-hidden\">Dates interpreted at 00:00 UTC</span>';\n\nif (is_null($rs) || pg_num_rows($rs) < 1) {\n    if (!is_null($e)) {\n        // Archived AFOS data suffers from some rectification problems, so we try\n        // to be helpful here and look around for nearby products.\n        $offsets = array(-1, 1, -2, 2, -3, 3, -4, 4, -5, 5);\n        foreach ($offsets as $_idx => $offset) {\n            $ts = $e->modify(sprintf(\"%+d minutes\", $offset));\n            $rs = exact_product($conn, $ts, $pil, $bbb);\n            if (!is_null($rs) && pg_num_rows($rs) > 0) {\n                $row = pg_fetch_assoc($rs, 0);\n                $uri = sprintf(\n                    \"p.php?pil=%s&e=%s\",\n                    $pil,\n                    date(\"YmdHi\", strtotime($row[\"mytime\"]))\n                );\n                header(\"Location: $uri\");\n                die();\n            }\n        }\n        // Try to be even more helpful\n        $rs = locate_product($conn, $e, $pil, \"prev\");\n    }\n}\nif (is_null($rs) || pg_num_rows($rs) < 1) {\n    $content .= '<div class=\"alert alert-warning\" role=\"alert\">Sorry, could not find product.</div>';\n}\nif (pg_num_rows($rs) > 1) {\n    $rows = pg_num_rows($rs);\n    $content .= '<div class=\"alert alert-danger\"><i class=\"bi bi-file-earmark-text\" aria-hidden=\"true\"></i> ' .\n        \"Found {$rows} products at the given pil and timestamp. Scroll down to see them all.</div>\";\n}\n$extratools = \"\";\n$img = \"\";\nfor ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n    if ($i == 0) {\n        $basets = strtotime($row[\"mytime\"]);\n        if (substr($pil, 0, 3) == \"CLI\" || substr($pil, 0, 3) == \"CF6\") {\n            $station = sprintf(\"%s%s\", substr($row[\"source\"], 0, 1), substr($pil, 3, 3));\n            $year = date(\"Y\", $basets);\n            $ccc = substr($pil, 0, 3);\n            $cc = strtolower($ccc);\n            $extratools = <<<EOM\n            <p><a class=\"btn btn-success\" href=\"/nws/{$cc}table.php?station={$station}&opt=bystation&year={$year}\">\n                <i class=\"bi bi-list-ul\" aria-hidden=\"true\"></i> Daily {$ccc} Table for {$station}</a></p>\nEOM;\n        }\n        $newe = date(\"YmdHi\", $basets);\n        $rawtext = sprintf(\n            \"/api/1/nwstext/%s-%s-%s-%s\",\n            $newe,\n            $row[\"source\"],\n            $row[\"wmo\"],\n            $pil,\n        );\n        if ($row[\"bbb\"] != \"\") {\n            $rawtext .= \"-\" . $row[\"bbb\"];\n        }\n        $isodt = date(\"Y-m-d\\\\TH:i\", $basets);\n        $t->title = sprintf(\n            \"%s from NWS %s\",\n            substr($pil, 0, 3),\n            substr(is_null($row[\"source\"]) ? \"\" : $row[\"source\"], 1, 3)\n        );\n        $product_id = sprintf(\n            \"%s-%s-%s-%s\",\n            $newe,\n            $row[\"source\"],\n            $row[\"wmo\"],\n            $pil\n        );\n        if (!is_null($row[\"bbb\"])) {\n            $product_id .= sprintf(\"-%s\", $row[\"bbb\"]);\n        }\n        $t->twitter_description = sprintf(\n            \"%s issued by NWS %s at %s UTC\",\n            substr($pil, 0, 3),\n            substr($pil, 3, 3),\n            date(\"d M Y H:i\", $basets)\n        );\n        if (substr($pil, 0, 3) == \"CWA\") {\n            $pconn = iemdb(\"postgis\");\n            $stname = iem_pg_prepare(\n                $pconn,\n                \"SELECT num, issue, center from cwas WHERE \" .\n                    \"issue > $1 and issue < $2 and product_id = $3\"\n            );\n            $rs2 = pg_execute(\n                $pconn,\n                $stname,\n                array(\n                    date(\"Y-m-d H:i+00\", $basets - 3600),\n                    date(\"Y-m-d H:i+00\", $basets + 3600),\n                    $product_id,\n                )\n            );\n            if (pg_num_rows($rs2) > 0) {\n                $row2 = pg_fetch_assoc($rs2, 0);\n                $t->twitter_image = sprintf(\n                    \"/plotting/auto/plot/226/network:CWSU::cwsu:%s::num:%s::\" .\n                        \"issue:%s%%20%s.png\",\n                    $row2[\"center\"],\n                    $row2[\"num\"],\n                    date(\"Y-m-d\", strtotime($row2[\"issue\"])),\n                    date(\"Hi\", strtotime($row2[\"issue\"])),\n                );\n                $img = sprintf(\n                    '<p><img src=\"%s\" class=\"img-fluid\"></p>',\n                    $t->twitter_image,\n                );\n            }\n        }\n        if (substr($pil, 0, 3) == \"FRW\" && strpos($row[\"data\"], \"LAT...LON\") !== false) {\n            $t->twitter_image = \"/plotting/auto/plot/227/pid:{$product_id}.png\";\n            $img = <<<EOM\n<p><a class=\"btn btn-primary\"\n href=\"/plotting/auto/?q=227&pid={$product_id}\"><i class=\"bi bi-bar-chart\" aria-hidden=\"true\"></i> Autoplot 227</a>\ngenerated the following image below.  You may find more customization options\nfor this image by visiting that autoplot.</p>\n<p><img src=\"/plotting/auto/plot/227/pid:{$product_id}.png\"\n class=\"img-fluid\"></p>\nEOM;\n        } else if (substr($pil, 0, 3) == \"SPS\") {\n            // Account for multi-segment SPS by counting $$ occurrences\n            $segments = substr_count($row[\"data\"], \"$$\");\n            // Can only do one, so this is the best we can do\n            $t->twitter_image = \"/plotting/auto/plot/217/pid:{$product_id}.png\";\n            $img = <<<EOM\n<p><a class=\"btn btn-primary\"\n href=\"/plotting/auto/?q=217&pid={$product_id}\"><i class=\"bi bi-bar-chart\" aria-hidden=\"true\"></i> Autoplot 217</a>\ngenerated the following image below.  You may find more customization options\n, like removal of RADAR, for this image by visiting that autoplot.</p>\n<p><img src=\"/plotting/auto/plot/217/pid:{$product_id}::segnum:0.png\"\n class=\"img-fluid\"></p>\nEOM;\n            for ($segnum = 1; $segnum < $segments; $segnum++) {\n                $img .= sprintf(\n                    '<p><img src=\"/plotting/auto/plot/217/pid:%s::segnum:%s.png\" ' .\n                        'class=\"img-fluid\"></p>',\n                    $product_id,\n                    $segnum,\n                );\n            }\n        } else if ((substr($pil, 0, 3) == \"LSR\") && (intval(substr($product_id, 0, 4)) > 1985)) {\n            // Can only do one, so this is the best we can do\n            $t->twitter_image = \"/plotting/auto/plot/242/pid:{$product_id}.png\";\n            $img = sprintf(\n                '<p><img src=\"/plotting/auto/plot/242/pid:%s.png\" ' .\n                    'class=\"img-fluid\"></p>',\n                $product_id,\n            );\n        } else {\n            $t->twitter_image = \"/wx/afos/{$newe}_{$pil}.png\";\n        }\n        $t->twitter_card = \"summary_large_image\";\n        $dstamp = date(\"Y-m-d H:i\", $basets);\n        $listlink = sprintf(\n            \"/wx/afos/list.phtml?source=%s&amp;day=%s&amp;month=%s&amp;year=%s\",\n            $row[\"source\"],\n            date(\"d\", $basets),\n            date(\"m\", $basets),\n            date(\"Y\", $basets)\n        );\n        $pil3 = substr($pil, 0, 3);\n        $pil_listlink = sprintf(\n            \"/wx/afos/list.phtml?by=pil&pil=%s&amp;day=%s&amp;month=%s&amp;year=%s\",\n            $pil3,\n            date(\"d\", $basets),\n            date(\"m\", $basets),\n            date(\"Y\", $basets)\n        );\n        $date2 =  date(\"d M Y\", $basets);\n        $year = date(\"Y\", $basets);\n        $year2 = intval($year) + 1;\n                $content .= <<<EOM\n<div class=\"row g-4 align-items-start\">\n    <div class=\"col-md-7 col-lg-8\">\n        <p class=\"mb-1\">Displaying AFOS PIL: <strong>$pil</strong><br>\n        Product Timestamp: <strong>{$dstamp} UTC</strong></p>\n        <div class=\"btn-group my-2 flex-wrap\" role=\"group\" aria-label=\"Product navigation\">\n            <a class=\"btn btn-outline-primary btn-sm\" aria-label=\"Previous product in time\" href=\"p.php?dir=prev&pil=$pil&e=$newe\"><i class=\"bi bi-arrow-left\" aria-hidden=\"true\"></i> Previous</a>\n            <a class=\"btn btn-outline-primary btn-sm\" aria-label=\"Latest product\" href=\"p.php?pil=$pil\">Latest</a>\n            <a class=\"btn btn-outline-primary btn-sm\" aria-label=\"Next product in time\" href=\"p.php?dir=next&pil=$pil&e=$newe\">Next <i class=\"bi bi-arrow-right\" aria-hidden=\"true\"></i></a>\n        </div>\n        <div class=\"d-flex flex-wrap gap-2 my-2\">\n            <a class=\"btn btn-primary btn-sm\" href=\"{$listlink}\">All {$row[\"source\"]} Products ({$date2})</a>\n            <a class=\"btn btn-primary btn-sm\" href=\"{$pil_listlink}\">All {$pil3} Products ({$date2})</a>\n            <a class=\"btn btn-secondary btn-sm\" href=\"{$t->twitter_image}\">Text as Image</a>\n            <a class=\"btn btn-secondary btn-sm\" href=\"{$rawtext}\">Download Text</a>\n        </div>\n        {$extratools}\n    </div>\n    <div class=\"col-md-5 col-lg-4\">\n        <div class=\"border rounded p-2 bg-light afos-bulk-wrapper\">\n            <form method=\"GET\" action=\"/cgi-bin/afos/retrieve.py\" name=\"bulk\" aria-label=\"Bulk AFOS download\" class=\"d-flex flex-wrap align-items-end gap-2 w-100 m-0 afos-bulk-form\">\n                <input type=\"hidden\" name=\"dl\" value=\"1\">\n                <input type=\"hidden\" name=\"limit\" value=\"9999\">\n                <div class=\"d-flex flex-column afos-field\">\n                    <label for=\"bulkPil\" class=\"form-label small mb-0\">3-6 Char PIL / AFOS ID</label>\n                    <input id=\"bulkPil\" type=\"text\" maxlength=\"6\" class=\"form-control form-control-sm\" name=\"pil\" value=\"{$pil}\" autocomplete=\"off\">\n                </div>\n                <div class=\"d-flex flex-column afos-field\">\n                    <label for=\"bulkFmt\" class=\"form-label small mb-0\">Format</label>\n                    <select id=\"bulkFmt\" name=\"fmt\" class=\"form-select form-select-sm\">\n                        <option value=\"text\">Text (^C delimited)</option>\n                        <option value=\"zip\">Zip</option>\n                    </select>\n                </div>\n                <fieldset class=\"d-flex flex-wrap gap-2 m-0 p-0 border-0 afos-field\">\n                    <legend class=\"visually-hidden\">Download date range (UTC midnight)</legend>\n                    <div class=\"d-flex flex-column\">\n                        <label for=\"bulkSdate\" class=\"form-label small mb-0\">Start</label>\n                        <input id=\"bulkSdate\" type=\"date\" min=\"1980-01-01\" value=\"{$year}-01-01\" name=\"sdate\" class=\"form-control form-control-sm\" aria-describedby=\"utc-note\">\n                    </div>\n                    <div class=\"d-flex flex-column\">\n                        <label for=\"bulkEdate\" class=\"form-label small mb-0\">End</label>\n                        <input id=\"bulkEdate\" type=\"date\" min=\"1980-01-01\" value=\"{$year2}-01-01\" name=\"edate\" class=\"form-control form-control-sm\" aria-describedby=\"utc-note\">\n                    </div>\n                </fieldset>\n                <div class=\"d-flex flex-column\">\n                    <button type=\"submit\" class=\"btn btn-success btn-sm\">Download</button>\n                </div>\n            </form>\n            <div class=\"d-flex justify-content-between align-items-center afos-bulk-heading mt-1\" id=\"bulk-download-note\" role=\"heading\" aria-level=\"4\">\n                <span class=\"afos-bulk-title\"><i class=\"bi bi-download\" aria-hidden=\"true\"></i> Bulk Download</span>\n                <button type=\"button\" class=\"btn btn-link btn-sm p-0 afos-bulk-help-toggle\" aria-expanded=\"false\" aria-controls=\"bulk-help\">Help</button>\n            </div>\n            <div id=\"bulk-help\" class=\"mt-1\" hidden>\n                <p class=\"mb-1\"><strong>Bulk Download Help</strong></p>\n                <p class=\"mb-1\">This bulk download tool provides the NWS text\n                in a raw form, hopefully directly usable by your processing system.\n                You can either provide a complete 6-character PIL/AFOS ID or provide\n                the 3-character base ID (e.g., <code>AFD</code>). The start and end\n                dates represent 00 UTC for those dates.  The Zip format is useful as\n                the filenames will have the product timestamp, which is useful for\n                when the product format has ambiguous timestamps.\n                </p>\n                <p class=\"mb-1\"><a href=\"/cgi-bin/afos/retrieve.py?help\">Backend Documentation</a></p>\n            </div>\n        </div>\n    </div>\n</div>\n\nEOM;\n    }\n    if (strtotime($row[\"mytime\"]) != $basets) {\n        continue;\n    }\n    // Look for <?xml in the data and if found, pretty print it\n    if (preg_match(\"/<\\?xml/\", $row[\"data\"])) {\n        $pos = strpos($row[\"data\"], \"<?xml\");\n        // data could have multiple XML messages, so we need to\n        // parse each one\n        $tokens = explode(\"<?xml\", substr($row[\"data\"], $pos));\n    $content .= sprintf('<div class=\"afos-block\" role=\"region\" aria-label=\"Product XML segment\"><div class=\"afos-toolbar\"><button type=\"button\" aria-label=\"Copy product text\" class=\"btn btn-sm btn-outline-secondary afos-copy\" data-copy-target=\"next\">Copy</button></div><pre class=\"afos-pre\">%s',\n            htmlentities(substr($row[\"data\"], 0, $pos))\n        );\n        foreach ($tokens as $token) {\n            if (trim($token) == \"\") {\n                continue;\n            }\n            $rawxml = \"<?xml\" . $token;\n            try {\n                $xml = new SimpleXMLElement($rawxml);\n                $dom = dom_import_simplexml($xml)->ownerDocument;\n                $dom->formatOutput = true;\n                $content .= htmlentities($dom->saveXML());\n            } catch (Exception $exc) {\n                $content .= htmlentities($rawxml);\n            }\n        }\n    $content .= \"</pre></div>\";\n        continue;\n    }\n    $repr = htmlentities(preg_replace(\n        \"/\\1/\",\n        \"\",\n        preg_replace(\"/\\r\\r\\n/\", \"\\n\", $row[\"data\"])\n    ));\n    $content .= '<div class=\"afos-block\" role=\"region\" aria-label=\"Product text\" ><div class=\"afos-toolbar\"><button type=\"button\" aria-label=\"Copy product text\" class=\"btn btn-sm btn-outline-secondary afos-copy\" data-copy-target=\"next\">Copy</button></div><pre class=\"afos-pre\">' . $repr . \"</pre></div>\\n\";\n}\n\n$content .= $img;\n\n$t->content = $content;\n$t->render('single.phtml');\n"
  },
  {
    "path": "htdocs/wx/afos/recent.php",
    "content": "<?php\n/* Print last two days worth of some PIL */\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/database.inc.php\";\nrequire_once \"../../../include/forms.php\";\n\n$pil = strtoupper(substr(get_str404('pil', \"AFD\"), 0, 3));\n\n$conn = iemdb(\"afos\");\n$stname = iem_pg_prepare($conn, \"SELECT data from products \" .\n    \"WHERE substr(pil,1,3) = $1 \" .\n    \"and entered between now() - '48 hours'::interval and now() \" .\n    \"ORDER by entered DESC\");\n$rs = pg_execute($conn, $stname, array($pil));\n\n$content = \"\";\nif (pg_num_rows($rs) < 1) {\n    $content .= \"ERROR: No products found in past 48 hours.\";\n}\nwhile ($row = pg_fetch_assoc($rs)) {\n    $d = preg_replace(\"/\\r\\r\\n/\", \"\\n\", $row[\"data\"]);\n    $d = preg_replace(\"/\\001/\", \"\", $d);\n    $d = preg_replace(\"/\\x1e/\", \"\", $d);\n    $content .= $d;\n}\n\nheader(\"Content-type: text/plain\");\necho $content;\n"
  },
  {
    "path": "htdocs/wx/afos/retreive.php",
    "content": "<?php\nrequire_once \"../../../config/settings.inc.php\";\nrequire_once \"../../../include/forms.php\";\n// 27 Feb 2025 still being used...\n$pil = strtoupper(get_str404(\"pil\", 'AFDDMX'));\n$cnt = get_int404(\"cnt\", 1);\n$center = substr(get_str404(\"center\", \"\"), 0, 4);\n$sdate = get_str404(\"sdate\", '');\n$edate = get_str404(\"edate\", '');\n\nheader(\"Location: /cgi-bin/afos/retrieve.py?pil={$pil}&center={$center}&limit={$cnt}&sdate={$sdate}&edate={$edate}\");\n"
  },
  {
    "path": "htdocs/wx/afos/text2png.py",
    "content": "\"\"\"implemented in pylib/iemweb/wx/afos/text2png.py\"\"\"\n\nfrom iemweb.wx.afos.text2png import application\n\n__all__ = [\"application\"]\n"
  },
  {
    "path": "htdocs/wx/afos/top.php",
    "content": "<html>\n\n<head>\n    <title>Top</title>\n</head>\n\n<body>\n\n    <form method=\"GET\" action=\"/cgi-bin/afos/retrieve.py\" target=\"display\">\n\n        <table border=\"0\" width=\"100%\">\n            <tr>\n                <th>Enter AFOS PIL:<br>\n                    ex) <i>AFDDMX</i></th>\n                <td><input type=\"text\" name=\"pil\" size=20></td>\n\n                <td><SELECT name=\"limit\">\n                        <option value=\"1\">Latest\n                        <option value=\"2\">Last 2\n                        <option value=\"5\">Last 5\n                        <option value=\"10\">Last 10\n                        <option value=\"1500\">Last 1500\n                    </SELECT></td>\n\n                <td><input type=\"submit\" value=\"GET\"></td>\n\n                <td valign=\"top\" align=\"right\"><b><a target=\"display\" href=\"bottom.php\">NWS Text Product Finder</a></b><br>\n                    <a target=\"_top\" href=\"/\">Iowa Environmental Mesonet</a><br>\n                    <b>*</b>Unofficial data for educational use only.\n\n            </tr>\n        </table>\n\n    </form>\n</body>\n\n</html>"
  },
  {
    "path": "include/agclimate_boxinc.phtml",
    "content": "<?php \n// A simple box inclusion on the download pages\n$uri = $_SERVER[\"SCRIPT_URL\"];\n$lh = '';\n$ld = '';\n$ch = '';\n$cd = '';\n$ci = '';\n$highlight = '<i class=\"bi bi-check-lg\"></i> &nbsp; ';\nif ($uri == '/agclimate/hist/dailyRequest.php'){\n    $ld = $highlight;\n}\nelseif ($uri == '/agclimate/hist/hourlyRequest.php'){\n    $lh = $highlight;\n}\nelseif ($uri == '/agclimate/hist/hourly.php'){\n    $ch = $highlight;\n}\nelseif ($uri == '/agclimate/hist/daily.php'){\n    $cd = $highlight;\n}\nelseif ($uri == '/agclimate/hist/inversion.php'){\n    $ci = $highlight;\n}\n\n$box = <<<EOM\n<div class=\"row\">\n    <div class=\"col-sm-6\">\n<div class=\"card\">\n  <div class=\"card-header\">Legacy \"ISU AgClimate\" 1986-~2013</div>\n  <div class=\"card-body\">\n        <div class=\"row\">\n            <div class=\"col-sm-6\">{$lh}<a href=\"hourlyRequest.php\">Hourly Data</a></div>\n            <div class=\"col-sm-6\">{$ld}<a href=\"dailyRequest.php\">Daily Data</a></div>\n        </div>\n    </div>\n</div>\n    </div>\n    <div class=\"col-sm-6\">\n<div class=\"card\">\n  <div class=\"card-header\">\"ISU Soil Moisture Network\" ~2013-present</div>\n  <div class=\"card-body\">\n        <div class=\"row\">\n            <div class=\"col-sm-4\">{$ch}<a href=\"hourly.php\">Hourly Data</a></div>\n            <div class=\"col-sm-4\">{$ci}<a href=\"inversion.php\">Inversion Data</a></div>\n            <div class=\"col-sm-4\">{$cd}<a href=\"daily.php\">Daily Data</a></div>\n        </div>\n    </div>\n</div>\n\n    </div>\n</div>\nEOM;\n\n$qcbox = <<<EOM\n<p><strong>Include Quality Control Flags?</strong>\n<br /><input type=\"checkbox\" name=\"qcflags\" value=\"1\">\n<label for=\"qcflags\">Yes, please include</label>\n<br />\n<table>\n<thead><tr><th>Flag</th><th>Meaning</th></tr></thead>\n<tbody>\n<tr><td>E</td><td>Value estimated by IEM.</td></tr>\n</tbody>\n</table>\nEOM;\n"
  },
  {
    "path": "include/cameras.inc.php",
    "content": "<?php\nrequire_once dirname(__FILE__) . \"/memcache.php\";\nrequire_once dirname(__FILE__) . \"/database.inc.php\";\n\n$cached_cameras = cacheable(\"php/cameras.inc.php\", 43200)(function(){\n    $mesosite = iemdb(\"mesosite\");\n    $rs = pg_query($mesosite, \"SELECT *, ST_x(geom) as lon, \".\n            \"ST_y(geom) as lat from webcams ORDER by name ASC\");\n    $cameras = array();\n    while ($row = pg_fetch_assoc($rs)) {\n        $cameras[$row[\"id\"]] = array(\n            \"sts\" => is_null($row[\"sts\"]) ? time(): strtotime($row[\"sts\"]),\n            \"ets\" => ($row[\"ets\"] === NULL) ? time() + 86400 :\n                strtotime($row[\"ets\"]),\n            \"name\" => $row[\"name\"],\n            \"removed\" => ($row[\"removed\"] == 't'),\n            \"active\" => ($row[\"online\"] == 't'),\n            \"is_vapix\" => ($row[\"is_vapix\"] == 't'),\n            \"lat\" => $row[\"lat\"],\n            \"lon\" => $row[\"lon\"],\n            \"state\" => $row[\"state\"],\n            \"scrape_url\" => $row[\"scrape_url\"],\n            \"network\" => $row[\"network\"],\n            \"moviebase\" => $row[\"moviebase\"],\n            \"ip\" => $row[\"ip\"],\n            \"county\" => $row[\"county\"],\n            \"port\" => $row[\"port\"],\n        );\n    }\n    return $cameras;\n});\n\n$cameras = $cached_cameras();\n"
  },
  {
    "path": "include/composer.json",
    "content": "{\n    \"require\": {\n        \"abraham/twitteroauth\": \"^3.3\",\n        \"erusev/parsedown\": \"^1.7\"\n    }\n}\n"
  },
  {
    "path": "include/cow_worker.php",
    "content": "<?php\nrequire_once dirname(__FILE__) . \"/../config/settings.inc.php\";\n\n\nfunction printLSR($lsr, $verified = FALSE)\n{\n    $valid = new DateTime($lsr[\"valid\"]);\n    $lt = array(\n        \"x\" => \"Debris Flow\", \"q\" => \"Snow Squall\",\n        \"F\" => \"Flash Flood\", \"T\" => \"Tornado\", \"D\" => \"Tstm Wnd Dmg\",\n        \"H\" => \"Hail\", \"G\" => \"Wind Gust\", \"W\" => \"Waterspout\",\n        \"M\" => \"Marine Tstm Wnd\", \"2\" => \"Dust Storm\", \"h\" => \"Marine Hail\",\n    );\n    $background = ($lsr[\"warned\"] == False) ? \"#f00\" : \"#0f0\";\n    if (is_null($lsr[\"leadtime\"])) {\n        $background = \"#eee\";\n        $leadtime = \"NA\";\n    } else {\n        $leadtime = $lsr[\"leadtime\"] . \" minutes\";\n    }\n    if (array_key_exists(\"__assoc__\", $lsr)) {\n        $background = \"#8FBC8F\";\n    }\n    if ($lsr[\"tdq\"] || !$verified) {\n        $background = \"#aaa\";\n    }\n    if ($lsr[\"magnitude\"] == 0) {\n        $lsr[\"magnitude\"] = \"\";\n    }\n    return sprintf(\n        '<tr style=\"background: #eee;\"><td></td>' .\n            '<td><a href=\"%s\" target=\"_new\">%s</a></td>' .\n            '<td style=\"background: %s;\">%s</td><td>%s,%s</td>' .\n            '<td><a href=\"%s\" target=\"_new\">%s</a></td><td>%s</td><td>%s</td>' .\n            '<td colspan=\"5\">%s</td></tr>',\n        $lsr[\"link\"],\n        $valid->format(\"m/d/Y H:i\"),\n        $background,\n        $leadtime,\n        $lsr[\"county\"],\n        $lsr[\"state\"],\n        $lsr[\"link\"],\n        $lsr[\"city\"],\n        $lt[strval($lsr[\"type\"])],\n        $lsr[\"magnitude\"],\n        $lsr[\"remark\"]\n    );\n}\n\nfunction printWARN($lsrs, $warn)\n{\n    global $lsrbuffer;\n    $issue = new DateTime($warn[\"issue\"]);\n    $expire = new DateTime($warn[\"expire\"]);\n    $background = \"#0f0\";\n    if ($warn[\"verify\"] == False) {\n        $background = \"#f00\";\n    }\n    $bratio = \"0\";\n    if ($warn[\"perimeter\"] > 0) {\n        $bratio = $warn[\"sharedborder\"] / $warn[\"perimeter\"] * 100.0;\n    }\n    $windhail = \"\";\n    if ($warn[\"windtag\"] != null) {\n        $windhail = sprintf(\n            \"<br />H: %s\\\"<br />W: %s\",\n            $warn[\"hailtag\"],\n            $warn[\"windtag\"],\n        );\n    }\n    if ($warn[\"phenomena\"] == \"SV\"){\n        $windhail .= sprintf(\n            \"<br />T: %s\",\n            $warn[\"svr_tornado_possible\"] ? \"Poss\" : \"N\",\n        );\n    }\n\n    $s = sprintf(\n        \"<tr><td style=\\\"background: %s;\\\"><a href=\\\"%s\\\">%s.%s</a>%s</td>\" .\n            \"<td>%s</td><td>%s</td>\" .\n            \"<td colspan=\\\"2\\\"><a href=\\\"%s\\\" target=\\\"_new\\\">%s</a></td>\" .\n            \"<td><a href=\\\"%s\\\">%s</a></td><td>%.0f sq km</td>\" .\n            \"<td>%.0f sq km</td><td>%.0f %%</td>\" .\n            \"<td>%.0f%% <a href=\\\"%s\\\">Visual</a></td>\" .\n            \"<td>%.0f%%</td><td>%s</td></tr>\\n\",\n        $background,\n        $warn[\"link\"],\n        $warn[\"phenomena\"],\n        $warn[\"eventid\"],\n        $windhail,\n        $issue->format(\"m/d/Y H:i\"),\n        $expire->format(\"m/d/Y H:i\"),\n        $warn[\"link\"],\n        implode(\", \", $warn[\"ar_ugcname\"]),\n        $warn[\"link\"],\n        $warn[\"status\"],\n        $warn[\"parea\"],\n        $warn[\"carea\"],\n        ($warn[\"carea\"] - $warn[\"parea\"]) / $warn[\"carea\"]  * 100,\n        $bratio,\n        $warn[\"visual_imgurl\"],\n        $warn[\"areaverify\"] / $warn[\"parea\"] * 100.,\n        $warn[\"fcster\"]\n    );\n\n    $all_lsrs = explode(\",\", $warn[\"stormreports_all\"]);\n    $verif_lsrs = explode(\",\", $warn[\"stormreports\"]);\n    foreach ($lsrs as $k => $lsr) {\n        if (!in_array($lsr[\"id\"], $all_lsrs)) {\n            continue;\n        }\n        $verified = in_array($lsr[\"id\"], $verif_lsrs);\n        // Recompute the lead time as this LSR may have a leadtime based on\n        // an earlier warning\n        $lsrvalid = new DateTime($lsr[\"properties\"][\"valid\"]);\n        $leadtime = (intval($lsrvalid->diff($issue)->format(\"%h\")) * 60 +\n            intval($lsrvalid->diff($issue)->format(\"%i\"))\n        );\n        if ($leadtime != $lsr[\"properties\"][\"leadtime\"]) {\n            $lsr[\"properties\"][\"leadtime\"] = $leadtime;\n            $lsr[\"properties\"][\"__assoc__\"] = True;\n        }\n\n        $s .= printLSR($lsr[\"properties\"], $verified);\n    }\n    return $s;\n}\n\n$phenoms = \"\";\nforeach ($wtype as $k => $w) {\n    $phenoms .= sprintf(\"&phenomena=%s\", $w);\n}\n$lsrtypes = \"\";\nforeach ($ltype as $k => $w) {\n    $lsrtypes .= sprintf(\"&lsrtype=%s\", $w);\n}\n\n// Build Cow API URL\n$wsuri = sprintf(\n    \"%s/api/1/cow.json?wfo=%s&begints=%sZ&\" .\n        \"endts=%sZ&hailsize=%s&wind=%s%s%s&lsrbuffer=%s&warningbuffer=%s\",\n    $INTERNAL_BASEURL,\n    (strlen($wfo) == 4) ? substr($wfo, 1, 3) : $wfo,\n    $sts->format(\"Y-m-d\\\\TH:i:00\"),\n    $ets->format(\"Y-m-d\\\\TH:i:00\"),\n    $hail,\n    $wind,\n    $phenoms,\n    $lsrtypes,\n    $lsrbuffer,\n    floatval($warnbuffer) * 100., // approx to km\n);\nif ($fcster != '') {\n    $wsuri .= sprintf(\"&fcster=%s\", $fcster);\n}\nif (isset($useWindHailTag) && $useWindHailTag == 'Y') {\n    $wsuri .= \"&windhailtag=Y\";\n}\nif (isset($limitwarns) && $limitwarns == 'Y') {\n    $wsuri .= \"&limitwarns=Y\";\n}\n\n$res = file_get_contents($wsuri);\nif ($res === FALSE) {\n    echo <<< EOM\n<h3>IEM Cow API Error</h3>\n\n<p>Sorry, the backend service for your request had an unexpected failure.  Please\nconsider contacting daryl, akrherz@iastate.edu and copy/paste the long URL that\nappears at the top of this webpage for his review and fix!</p>\nEOM;\n    die();\n}\n$jobj = json_decode($res, True);\n$stats = $jobj['stats'];\n\n$charturl = sprintf(\n    \"chart.php?aw=%s&ae=%s&b=%s&c=%s&d=%s\",\n    $stats[\"events_verified\"],\n    $stats[\"warned_reports\"],\n    $stats[\"unwarned_reports\"],\n    $stats[\"events_total\"] - $stats[\"events_verified\"],\n    \"NA\"\n);\n\nif (sizeof($ltype) == 0) {\n    $content .= \"<div class='warning'>You did not select any of the Local Storm\n    Report types above, so none are listed below...<br /><br /></div>\";\n}\nif (sizeof($wtype) == 0) {\n    $content .= \"<div class='warning'>You did not select any of the Warning\n    types above, so none are listed below...<br /><br /></div>\";\n}\n\n$dstat = $sts->format(\"m/d/Y H:i\");\n$dstat1 = $ets->format(\"m/d/Y H:i\");\n\n$aw = sprintf(\"%s\", $stats[\"events_verified\"]);\nif ($stats[\"events_total\"] == 0) {\n    $pv = \"0\";\n} else {\n    $pv = sprintf(\"%.1f\", $stats[\"events_verified\"] / $stats[\"events_total\"] * 100);\n}\n$sr = sprintf(\"%.1f\", 100 - $stats[\"size_poly_vs_county[%]\"]);\n$asz =  sprintf(\"%.0f\", $stats[\"avg_size[sq km]\"]);\n$av = sprintf(\"%.0f\", $stats[\"area_verify[%]\"]);\n\n$ae = $stats[\"warned_reports\"];\n$b = $stats[\"unwarned_reports\"];\n$tdq = $stats[\"tdq_stormreports\"];\n\n$wtable = \"\";\n$wsz = sizeof($jobj[\"events\"][\"features\"]);\n$stormreports = $jobj[\"stormreports\"][\"features\"];\nforeach ($jobj[\"events\"][\"features\"] as $k => $warn) {\n    $wtable .= printWARN($stormreports, $warn[\"properties\"]);\n}\n\n$ltable = \"\";\n$lsz = sizeof($stormreports);\nforeach ($stormreports as $k => $lsr) {\n    if ($lsr[\"properties\"][\"warned\"] || $lsr[\"properties\"][\"tdq\"]) {\n        continue;\n    }\n    $ltable .= printLSR($lsr[\"properties\"]);\n}\n$far = sprintf(\"%.2f\", $stats[\"FAR[1]\"]);\n$pod = sprintf(\"%.2f\", $stats[\"POD[1]\"]);\n$csi = sprintf(\"%.2f\", $stats[\"CSI[1]\"]);\n\n$aleadtime = sprintf(\"%.1f\", $stats[\"avg_leadtime_firstreport[min]\"]);\n$allleadtime = sprintf(\"%.1f\", $stats[\"avg_leadtime[min]\"]);\n$maxleadtime = sprintf(\"%.1f\", $stats[\"max_leadtime[min]\"]);\n$minleadtime = sprintf(\"%.1f\", $stats[\"min_leadtime[min]\"]);\n\n$fwarning = \"\";\nif ($fcster != '') {\n    $fwarning = <<<EOF\n<div class=\"alert alert-warning\">\n    <strong>This display is filtered for product signature: \"{$fcster}\".\n    This means that the 'Unwarned Events' are not accurate as they may have\n    verified by warnings signed by a different string. This also means that\n    the POD + CSI metrics are also unreliable.</strong></div>\nEOF;\n}\n\n$shpuri = sprintf(\n    \"/cgi-bin/request/gis/watchwarn.py?year1=%s&amp;\" .\n        \"month1=%s&amp;day1=%s&amp;hour1=%s&amp;minute1=0&amp;year2=%s&amp;\" .\n        \"month2=%s&amp;\" .\n        \"day2=%s&amp;hour2=%s&amp;minute2=0&amp;limit1=yes&amp;wfo[]=%s\",\n    $sts->format(\"Y\"),\n    $sts->format(\"m\"),\n    $sts->format(\"d\"),\n    $sts->format(\"H\"),\n    $ets->format(\"Y\"),\n    $ets->format(\"m\"),\n    $ets->format(\"d\"),\n    $ets->format(\"H\"),\n    $wfo\n);\n\n$lsruri = sprintf(\n    '/cgi-bin/request/gis/lsr.py?wfo=%s&amp;sts=%sZ&amp;ets=%sZ',\n    $wfo,\n    $sts->format(\"Y-m-d\\\\TH:i\"),\n    $ets->format(\"Y-m-d\\\\TH:i\"),\n);\n\n// lame\n$extwsuri = str_replace(\"http://iem.local\", \"\", $wsuri);\n$content .= <<<EOF\n<strong>Related Downloads:</strong>\n<a href=\"{$extwsuri}\" class=\"btn btn-primary\">JSON Web Service</a> &nbsp;\n<a href=\"{$shpuri}\" class=\"btn btn-primary\">Shapefile of Warnings</a> &nbsp;\n<a href=\"{$lsruri}\" class=\"btn btn-primary\">Shapefile of LSRs</a> &nbsp;\n\n<h3>Summary:</h3>\n<b>Begin Date:</b> {$dstat} <b>End Date:</b> {$dstat1}\n<br />* These numbers are not official and should be used for educational purposes only.\n{$fwarning}\n\n<div class=\"row\">\n  <div class=\"col-sm-2\">\n      <img src=\"cow.jpg\" class=\"img-fluid\" /><br />\n      <img src=\"{$charturl}\"  class=\"img-fluid\"/>\n  </div>\n    <div class=\"col-sm-5\">\n <table class=\"table\">\n <tr><th>Listed Warnings:</th><th>{$wsz}</th></tr>\n <tr><th>Verified: (A<sub>w</sub>)</th><th>{$aw}</th></tr>\n <tr><th>% Verified</th><th>{$pv}%</th></tr>\n <tr><th>Storm Based Warning Size Reduction:</th><th>{$sr}%</th></tr>\n <tr><th>Avg SBW Size (sq km)</th><th>{$asz}</th></tr>\n <tr><th>Areal Verification %:</th><th>{$av}%</th></tr>\n <tr><th>Local Storm Reports</th><th>{$lsz}</th></tr>\n <tr><th>Warned Local Storm Reports (A<sub>e</sub>)</th><th>{$ae}</th></tr>\n <tr><th>Unwarned Local Storm Reports (B)</th><th>{$b}</th></tr>\n <tr><th>LSRs during TOR warning without SVR warning</th><th>{$tdq}</th></tr>\n </table>\n    </div>\n    <div class=\"col-sm-5\">\n <table class=\"table\">\n <tr><th>SVRs with Tornado Possible Tag</th><th>{$stats[\"svr_with_torpossible_total\"]}</th></tr>\n <tr><th>SVRs with Tornado Possible Tag and Tor LSR</th><th>{$stats[\"svr_with_torpossible_verified\"]}</th></tr>\n <tr><th>FAR == C / (A<sub>w</sub>+C)</th><th>{$far}</th></tr>\n <tr><th>POD == A<sub>e</sub> / (A<sub>e</sub> + B)</th><th>{$pod}</th></tr>\n <tr><th>CSI == ((POD)<sup>-1</sup> + (1-FAR)<sup>-1</sup> - 1)<sup>-1</sup></th><th>{$csi}</th></tr>\n <tr><th>Avg Lead Time for 1rst Event</th><th>{$aleadtime} min</th></tr>\n <tr><th>Avg Lead Time for all Events</th><th>{$allleadtime} min</th></tr>\n <tr><th>Max Lead Time</th><th>{$maxleadtime} min</th></tr>\n <tr><th>Min Lead Time</th><th>{$minleadtime} min</th></tr>\n </table>\n    </div>\n</div>\n\n<h3>Warnings Issued & Verifying LSRs:</h3>\n<strong>Column Headings:</strong>\n<i>Issued:</i> UTC timestamp of when the product was issued,\n<i>Expired:</i> UTC timestamp of when the product expired,\n<i>Final Status:</i> VTEC action of the last statement issued for the product,\n<i>SBW Area:</i> Size of the storm based warning in square km,\n<i>County Area:</i> Total size of the counties included in the product in square km,\n<i>Size % (C-P)/C:</i> Size reduction gained by the storm based warning,\n<i>Perimeter Ratio:</i> Estimated percentage of the storm based warning polygon border that was influenced by political boundaries (0% is ideal).\n<i>Areal Verification %:</i> Percentage of the polygon warning that received a verifying report (report is buffered {$lsrbuffer} km).\n\n<table class=\"table-condensed\">\n<tr><th>LSR Leadtime Color Key</th>\n<td style=\"background: #0F0;\">LSR verified warning</td>\n<td style=\"background: #8FBC8F;\">LSR covered by earlier warning</td>\n<td style=\"background: #AAA;\">LSR non-verifying type for warning</td>\n</table>\n\n<br />\n<table cellspacing=\"0\" cellpadding=\"2\" border=\"1\">\n<tr>\n    <td></td>\n    <th>Issued:</th>\n    <th>Expired:</th>\n    <th colspan=\"2\">County:</th>\n    <th>Final Status:</th>\n    <th>SBW Area: (P)</th>\n    <th>County Area: (C)</th>\n    <th>Size %<br /> (C-P)/C:</th>\n    <th>Perimeter Ratio:</th>\n    <th>Areal Verif. %:</th>\n    <th>Signature</th>\n</tr>\n<tr bgcolor=\"#eee\">\n    <th>lsr</th>\n    <th>Valid</th>\n    <th>Lead Time:</th>\n    <th>County</th>\n    <th>City</th>\n    <th>Type</th>\n    <th>Magnitude</th>\n    <th colspan=\"5\">Remarks</th>\n</tr>\n{$wtable}\n</table>\n\n<h3>Storm Reports without warning:</h3>\n<table class=\"table table-bordered\">\n<tr>\n    <th>lsr</th>\n    <th>Valid</th>\n    <th>Lead Time:</th>\n    <th>County</th>\n    <th>City</th>\n    <th>Type</th>\n    <th>Magnitude</th>\n    <th>Remark</th>\n</tr>\n{$ltable}\n</table>\nEOF;\n"
  },
  {
    "path": "include/database.inc.php",
    "content": "<?php\n// Avoid circular includes here!\n\n/**\n * Prepare a query, die if it fails\n * @param PgSql\\Connection $dbconn database connection\n * @param string $sql SQL query\n * @return string the statement name\n */\nfunction iem_pg_prepare($dbconn, $sql)\n{\n    $stname = uniqid();\n    $res = pg_prepare($dbconn, $stname, $sql);\n    if ($res === FALSE) {\n        // Thought here is that erroring here is likely a code bug that \n        // should be fixed, so we die here.\n        http_response_code(500);\n        error_log(pg_last_error($dbconn));\n        die(\"Aborting, failed to prepare database query.\");\n    }\n    return $stname;\n}\n\n// Helper to get a dbconn string\nfunction get_dbconn_str($dbname)\n{\n    return sprintf(\n        \"dbname=%s host=iemdb-%s.local user=nobody gssencmode=disable connect_timeout=5\",\n        $dbname,\n        $dbname\n    );\n}\n/*\n * Help function that yields database connections\n */\nfunction iemdb($dbname)\n{\n    $connstr = get_dbconn_str($dbname);\n    $db = pg_connect($connstr);\n    if (!$db) {\n        // Try once more\n        $db = pg_connect($connstr);\n    }\n    if (!$db) {\n        // Send a HTTP try again later\n        header(\"HTTP/1.1 503 Service Unavailable\");\n        die(\"Could not connect to database: $dbname\");\n    }\n    return $db;\n}\n"
  },
  {
    "path": "include/dbase.stub.php",
    "content": "<?php\n\n/** @generate-function-entries */\n\n/**\n * @return resource|false\n */\nfunction dbase_open(string $path, int $mode) {}\n\n/**\n * @param resource $database\n */\nfunction dbase_close($database): bool {}\n\n/**\n * @param resource $database\n */\nfunction dbase_add_record($database, array $data): bool {}\n\n/**\n * @param resource $database\n */\nfunction dbase_delete_record($database, int $number): bool {}\n\n/**\n * @param resource $database\n */\nfunction dbase_replace_record($database, array $data, int $number): bool {}\n\n/**\n * @param resource $database\n */\nfunction dbase_numrecords($database): int {}\n\n/**\n * @param resource $database\n */\nfunction dbase_numfields($database): int {}\n\n/**\n * @param resource $database\n */\nfunction dbase_pack($database): bool {}\n\n/**\n * @param resource $database\n */\nfunction dbase_get_record($database, int $number): array|false {}\n\n/**\n * @param resource $database\n */\nfunction dbase_get_record_with_names($database, int $number): array|false {}\n\n/**\n * @return resource|false\n */\nfunction dbase_create(string $path, array $fields, int $type = DBASE_TYPE_DBASE) {}\n\n/**\n * @param resource $database\n */\nfunction dbase_get_header_info($database): array {}\n\n"
  },
  {
    "path": "include/forms.php",
    "content": "<?php\n// Library for doing repetetive forms stuff\nrequire_once dirname(__FILE__) . \"/database.inc.php\";\nrequire_once dirname(__FILE__) . \"/network.php\";\n\n/**\n * Generate a UGC (Universal Geographic Code) selection dropdown for a state\n *\n * Creates a select element containing counties and zones for the specified state,\n * fetched from the ugcs database table. Each option displays the UGC code,\n * name, and type (County/Zone).\n *\n * @param string $state Two-letter state code (case-insensitive)\n * @param string $selected Currently selected UGC code\n * @return string Complete HTML select element with UGC options\n *\n * @example Basic usage:\n *   echo ugcStateSelect('IA', 'IAC001');\n *\n * @example With zone selection:\n *   echo ugcStateSelect('mn', 'MNZ001');\n */\nfunction ugcStateSelect($state, $selected)\n{\n    $state = substr(strtoupper($state), 0, 2);\n    $dbconn = iemdb('postgis');\n    $stname = iem_pg_prepare($dbconn, \"SELECT ugc, name from ugcs WHERE end_ts is null \"\n        . \" and substr(ugc,1,2) = $1 ORDER by name ASC\");\n    $rs = pg_execute($dbconn, $stname, array($state));\n\n    // Build options array from database results\n    $options = array();\n    while ($row = pg_fetch_assoc($rs)) {\n        $z = (substr($row[\"ugc\"], 2, 1) == \"Z\") ? \"Zone\" : \"County\";\n        $options[$row[\"ugc\"]] = \"[\" . $row[\"ugc\"] . \"] \" . $row[\"name\"] . \" ($z)\";\n    }\n\n    return make_select(\"ugc\", $selected, $options);\n}\n\n\n/**\n * Select a network type\n * @param string $nettype the network type pattern to match\n * @param string $selected the selected network id\n * @return string the select box HTML\n */\nfunction selectNetworkType($nettype, $selected)\n{\n    $selected = strtoupper($selected);\n    $dbconn = iemdb('mesosite');\n    $stname = iem_pg_prepare(\n        $dbconn,\n        \"SELECT * from networks WHERE id ~* $1 ORDER by name ASC\");\n    $rs = pg_execute($dbconn, $stname, array($nettype));\n\n    // Build options array from database results\n    $options = array();\n    while ($row = pg_fetch_assoc($rs)) {\n        $options[$row[\"id\"]] = $row[\"name\"];\n    }\n\n    return make_select(\"network\", $selected, $options, \"\", \"iemselect2\");\n}\n\n\n/**\n * Create a network selection dropdown\n *\n * Generates a select element containing all available networks from the database,\n * with optional extra options. Uses the modernized make_select function for\n * proper HTML generation and escaping.\n *\n * @param string $selected The currently selected network ID (case-insensitive)\n * @param array $extra Additional options to include at the top of the list.\n *                     Array keys are option values, array values are option labels\n * @return string Complete HTML select element with network options\n *\n * @example Basic usage:\n *   echo selectNetwork('IA_ASOS');\n *\n * @example With extra options:\n *   $extras = array('_ALL_' => 'All Networks', 'CUSTOM' => 'Custom Selection');\n *   echo selectNetwork('IA_ASOS', $extras);\n */\nfunction selectNetwork($selected, $extra = array())\n{\n    $selected = strtoupper($selected);\n    $dbconn = iemdb('mesosite');\n    $rs = pg_query($dbconn, \"SELECT * from networks ORDER by name ASC\");\n\n    // Build options array starting with extra options\n    $options = array();\n    foreach ($extra as $idx => $sid) {\n        $options[$idx] = \"[{$idx}] {$sid}\";\n    }\n\n    // Add database results to options array\n    while ($row = pg_fetch_assoc($rs)) {\n        $options[$row[\"id\"]] = \"[{$row['id']}] {$row['name']}\";\n    }\n\n    return make_select(\"network\", $selected, $options, \"\", \"iemselect2\");\n}\n\n/**\n * Generate a multiple selection box for network stations\n *\n * Creates a select element with multiple selection capability containing\n * network stations and optional extra entries.\n *\n * @param string|array $network Network identifier(s)\n * @param string $selected Currently selected value\n * @param array $extra Additional options to include (key => value pairs)\n * @param string $label Name attribute for the select element\n * @return string HTML select element with multiple selection enabled\n */\nfunction networkMultiSelect(\n    $network,\n    $selected,\n    $extra = array(),\n    $label = \"station\"\n) {\n    $nt = new NetworkTable($network);\n    $options = array();\n\n    // Add extra options first\n    foreach ($extra as $idx => $sid) {\n        $options[$idx] = \"[$idx] $sid\";\n    }\n\n    // Add options from network table\n    foreach ($nt->table as $sid => $tbl) {\n        $options[$sid] = \"[$sid] \" . $tbl[\"name\"];\n    }\n\n    // Use standardized make_select with multiple selection and size attributes\n    return make_select(\n        $label,           // name\n        $selected,        // selected value\n        $options,         // options array\n        \"\",               // jscallback\n        \"\",               // cssclass\n        TRUE,             // multiple\n        FALSE,            // showvalue\n        TRUE,             // appendbrackets\n        array('size' => 5) // extra attributes for size\n    );\n}\n\nfunction make_sname($tbl)\n{\n    // Construct a nice label for the given station\n    $dextra = '';\n    if (!is_null($tbl['archive_begin'])) {\n        $dextra .= sprintf(\" [%s-\", $tbl[\"archive_begin\"]->format(\"Y\"));\n        if (!is_null($tbl['archive_end'])) {\n            $dextra .= $tbl[\"archive_end\"]->format(\"Y\");\n        }\n        $dextra .= \"]\";\n    }\n    return sprintf(\"[%s] %s%s\", $tbl['id'], $tbl['name'], $dextra);\n}\n\nfunction networkSelect(\n    $network,\n    $selected,\n    $extra = array(),\n    $selectName = \"station\",\n    $only_online = FALSE,\n    $clsname = \"iemselect2\",\n    $size = 1,\n) {\n    $nt = new NetworkTable($network, FALSE, $only_online);\n\n    // Build options array from network table\n    $options = array();\n    foreach ($nt->table as $sid => $tbl) {\n        $options[$sid] = make_sname($tbl);\n    }\n\n    // Add extra options\n    foreach ($extra as $idx => $sid) {\n        if (is_array($sid)) {\n            $tbl = $sid;\n            $sid = $idx;\n        } else {\n            $nt->loadStation($sid);\n            $tbl = $nt->table[$sid];\n        }\n        $options[$sid] = make_sname($tbl);\n    }\n\n    return make_select(\n        $selectName,\n        $selected,\n        $options,\n        \"\",\n        $clsname,\n        FALSE,          // multiple selection\n        FALSE,          // showvalue\n        FALSE,          // appendbrackets\n        array('size' => $size) // extra attributes for size\n    );\n}\n\n\n/**\n * Generate a network station selection dropdown with auto-submit on change\n *\n * Creates a select element for stations within a specific network that\n * automatically submits the form when selection changes. Includes support\n * for extra station entries.\n *\n * @param string $network Network identifier (case-insensitive)\n * @param string $selected Currently selected station ID\n * @param array $extra Additional station entries to include (station_id => value pairs)\n * @return string Complete HTML select element with auto-submit functionality\n *\n * @example Basic usage:\n *   echo networkSelectAuto('IA_ASOS', 'KAMW');\n *\n * @example With extra stations:\n *   $extras = array('CUSTOM1' => 'Custom Station 1');\n *   echo networkSelectAuto('IA_ASOS', 'KAMW', $extras);\n */\nfunction networkSelectAuto($network, $selected, $extra = array())\n{\n    $network = strtoupper($network);\n    $nt = new NetworkTable($network);\n    $cities = $nt->table;\n\n    // Build options array from network table\n    $options = array();\n    foreach ($cities as $sid => $tbl) {\n        if ($tbl[\"network\"] != $network) continue;\n        $sname = make_sname($tbl);\n        $options[$sid] = $sname;\n    }\n\n    // Add extra station entries\n    foreach ($extra as $idx => $sid) {\n        $nt->loadStation($sid);\n        $tbl = $nt->table[$sid];\n        $sname = make_sname($tbl);\n        $options[$sid] = $sname;\n    }\n    return make_select(\n        \"station\",                    // name\n        $selected,                   // selected value\n        $options,                    // options array\n        null,                        // onchange callback\n        \"iemselect2\",               // CSS class\n        FALSE,                      // multiple\n        FALSE,                      // showvalue\n        FALSE,                      // appendbrackets\n        array('style' => 'min-width: 300px;') // extra attributes for width\n    );\n}\n\n//xss mitigation functions\n//https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet#XSS_Cheat_Sheet\nfunction xssafe($data, $encoding = 'UTF-8')\n{\n    if (is_array($data) || is_null($data)) {\n        return $data;\n    }\n    $res = htmlspecialchars($data, ENT_QUOTES | ENT_HTML401, $encoding);\n    if ($res !== $data) {\n        // 405, which ends up hitting some iemwebfarm code\n        http_response_code(405);\n        die();\n    }\n\n    return $res;\n}\n\n// Ensure we get a sane string\nfunction get_str404($name, $default = null, $maxlength = null)\n{\n    if (!array_key_exists($name, $_REQUEST)) {\n        return $default;\n    }\n    $val = xssafe($_REQUEST[$name]);\n    if ($maxlength !== null && strlen($val) > $maxlength) {\n        // passed up to iemwebfarm handler\n        http_response_code(405);\n        die();\n    }\n    return $val;\n}\n\n// Ensure we are getting int values from request or we 405\nfunction get_int404($name, $default = null)\n{\n    if (!array_key_exists($name, $_REQUEST)) {\n        return $default;\n    }\n    $val = $_REQUEST[$name];\n    if ($val != \"0\" && empty($val)) return $default;\n    if (!is_numeric($val)) {\n        // passed up to iemwebfarm handler\n        http_response_code(405);\n        die();\n    }\n    return intval($val);\n}\n\n// Ensure we are getting float values from request or we 405\nfunction get_float404($name, $default = null)\n{\n    if (!array_key_exists($name, $_REQUEST)) {\n        return $default;\n    }\n    $val = $_REQUEST[$name];\n    if ($val != \"0\" && empty($val)) return $default;\n    if (!is_numeric($val)) {\n        // passed up to iemwebfarm handler\n        http_response_code(405);\n        die();\n    }\n    return floatval($val);\n}\n\nfunction make_checkboxes($name, $selected, $ar)\n{\n    $myselected = $selected;\n    if (!is_array($selected)) {\n        $myselected = array($selected);\n    }\n    $s = \"\";\n    foreach ($ar as $key => $val) {\n        $s .= sprintf(\n            '<div class=\"form-check mb-1\">' .\n                '<input class=\"form-check-input\" name=\"%s\" type=\"checkbox\" value=\"%s\" id=\"%s_%s\"%s>' .\n                '<label class=\"form-check-label ms-1\" for=\"%s_%s\">%s</label>' .\n            '</div>' . \"\\n\",\n            $name,\n            $key,\n            $name,\n            $key,\n            in_array($key, $myselected) ? ' checked=\"checked\"' : \"\",\n            $name,\n            $key,\n            $val\n        );\n    }\n    return $s;\n}\n\n/**\n * Create a HTML select element with options using modern DOM generation\n *\n * This function generates a complete HTML select element with proper escaping\n * and attribute handling. Supports single/multiple selection, optgroups,\n * JavaScript callbacks, and CSS styling.\n *\n * @param string $name The name attribute for the select element\n * @param string|array $selected The selected value(s). Can be a single value\n *                               or array for multiple selections\n * @param array $ar The options array. Simple key=>value pairs create options.\n *                  Nested arrays create optgroups with the key as group label\n * @param string $jscallback Optional JavaScript function name to call on change.\n *                           Will be called with selected value as parameter\n * @param string $cssclass Optional CSS class(es) to add to the select element\n * @param bool $multiple Whether to allow multiple selections (adds 'multiple' attribute)\n * @param bool $showvalue Whether to display option values in brackets before labels\n * @param bool $appendbrackets Whether to append '[]' to name for multiple selects\n * @param array $extraAttrs Optional additional HTML attributes as key=>value pairs\n *\n * @return string Complete HTML select element as string\n *\n * @example Basic usage:\n *   $options = array('val1' => 'Label 1', 'val2' => 'Label 2');\n *   echo make_select('myselect', 'val1', $options);\n *\n * @example With optgroups:\n *   $options = array(\n *       'Group 1' => array('g1v1' => 'Group 1 Value 1'),\n *       'Group 2' => array('g2v1' => 'Group 2 Value 1')\n *   );\n *   echo make_select('grouped', 'g1v1', $options);\n *\n * @example Multiple selection with callback:\n *   echo make_select('multi', array('val1', 'val3'), $options,\n *                    'handleChange', 'form-control', TRUE);\n */\nfunction make_select(\n    $name,\n    $selected,\n    $ar,\n    $jscallback = \"\",\n    $cssclass = '',\n    $multiple = FALSE,\n    $showvalue = FALSE,\n    $appendbrackets = TRUE,\n    $extraAttrs = array()\n) {\n    // Create a simple HTML select box using DOMDocument\n    $myselected = $selected;\n    if (!is_array($selected)) {\n        $myselected = array($selected);\n    }\n\n    // Create DOM document\n    $dom = new DOMDocument('1.0', 'UTF-8');\n    $dom->formatOutput = false; // Keep compact for web output\n\n    // Create select element\n    $select = $dom->createElement('select');\n\n    // Set name attribute with optional brackets for multiple selection\n    $nameAttr = $name;\n    if ($multiple !== FALSE && $appendbrackets !== FALSE) {\n        $nameAttr .= '[]';\n    }\n    $select->setAttribute('name', $nameAttr);\n\n    // Set additional attributes\n    if ($jscallback !== \"\") {\n        $select->setAttribute('onChange', $jscallback . '(this.value)');\n    }\n    if ($cssclass !== '') {\n        $select->setAttribute('class', $cssclass);\n    }\n    if ($multiple !== FALSE) {\n        $select->setAttribute('multiple', 'multiple');\n    }\n\n    // Set any extra attributes\n    foreach ($extraAttrs as $attr => $value) {\n        $select->setAttribute($attr, $value);\n    }\n\n    // Process array options\n    foreach ($ar as $key => $val) {\n        if (is_array($val)) {\n            // Create optgroup for nested arrays\n            $optgroup = $dom->createElement('optgroup');\n            $optgroup->setAttribute('label', $key);\n\n            foreach ($val as $k2 => $v2) {\n                $option = $dom->createElement('option');\n                $option->setAttribute('value', $k2);\n\n                $displayText = $showvalue ? \"[$k2] $v2\" : $v2;\n                $option->textContent = $displayText;\n\n                if (in_array($k2, $myselected)) {\n                    $option->setAttribute('selected', 'selected');\n                }\n\n                $optgroup->appendChild($option);\n            }\n\n            $select->appendChild($optgroup);\n        } else {\n            // Create regular option\n            $option = $dom->createElement('option');\n            $option->setAttribute('value', $key);\n\n            $displayText = $showvalue ? \"[$key] $val\" : $val;\n            $option->textContent = $displayText;\n\n            if (in_array($key, $myselected)) {\n                $option->setAttribute('selected', 'selected');\n            }\n\n            $select->appendChild($option);\n        }\n    }\n\n    $dom->appendChild($select);\n    return $dom->saveHTML($select);\n}\n\n/**\n * Generate a US state and territory selection dropdown\n *\n * Creates a select element containing all US states, territories, and districts.\n * Each option displays the state code and full name. Optionally includes an\n * \"All Available\" option. Uses the standardized make_select() function.\n *\n * @param string $selected Currently selected state code\n * @param string $jscallback JavaScript function to call on change (optional)\n * @param string $name HTML name attribute for the select element\n * @param int $size Number of visible options (HTML size attribute)\n * @param bool $multiple Whether to allow multiple selections\n * @param bool $all Whether to include \"All Available\" option at top\n * @return string Complete HTML select element with state options\n *\n * @example Basic usage:\n *   echo stateSelect('IA');  // Iowa selected\n * @example With callback:\n *   echo stateSelect('CA', 'updateDisplay', 'state_code', 5, true, true);\n */\nfunction stateSelect(\n    $selected,\n    $jscallback = '',\n    $name = 'state',\n    $size = 1,\n    $multiple = false,\n    $all = false\n) {\n    // US states, territories, and districts\n    $states = array(\n        \"AL\" => \"Alabama\",\n        \"AK\" => \"Alaska\",\n        \"AR\" => \"Arkansas\",\n        \"AS\" => \"American Samoa\",\n        \"AZ\" => \"Arizona\",\n        \"CA\" => \"California\",\n        \"CO\" => \"Colorado\",\n        \"CT\" => \"Connecticut\",\n        \"DC\" => \"District of Columbia\",\n        \"DE\" => \"Delaware\",\n        \"FL\" => \"Florida\",\n        \"GA\" => \"Georgia\",\n        \"GU\" => \"Guam\",\n        \"HI\" => \"Hawaii\",\n        \"ID\" => \"Idaho\",\n        \"IL\" => \"Illinois\",\n        \"IN\" => \"Indiana\",\n        \"IA\" => \"Iowa\",\n        \"KS\" => \"Kansas\",\n        \"KY\" => \"Kentucky\",\n        \"LA\" => \"Louisana\",\n        \"ME\" => \"Maine\",\n        \"MD\" => \"Maryland\",\n        \"MA\" => \"Massachusetts\",\n        \"MI\" => \"Michigan\",\n        \"MN\" => \"Minnesota\",\n        \"MS\" => \"Mississippi\",\n        \"MO\" => \"Missouri\",\n        \"MT\" => \"Montana\",\n        \"NE\" => \"Nebraska\",\n        \"NV\" => \"Nevada\",\n        \"NH\" => \"New Hampshire\",\n        \"NJ\" => \"New Jersey\",\n        \"NM\" => \"New Mexico\",\n        \"NY\" => \"New York\",\n        \"NC\" => \"North Carolina\",\n        \"ND\" => \"North Dakota\",\n        \"OH\" => \"Ohio\",\n        \"OK\" => \"Oklahoma\",\n        \"OR\" => \"Oregon\",\n        \"PA\" => \"Pennsylvania\",\n        \"PR\" => \"Puerto Rico\",\n        \"RI\" => \"Rhode Island\",\n        \"SC\" => \"South Carolina\",\n        \"SD\" => \"South Dakota\",\n        \"TN\" => \"Tennessee\",\n        \"TX\" => \"Texas\",\n        \"UT\" => \"Utah\",\n        \"VT\" => \"Vermont\",\n        \"VA\" => \"Virginia\",\n        \"VI\" => \"Virgin Islands\",\n        \"WA\" => \"Washington\",\n        \"WV\" => \"West Virginia\",\n        \"WI\" => \"Wisconsin\",\n        \"WY\" => \"Wyoming\",\n    );\n\n    // Build options array\n    $options = array();\n    if ($all) {\n        $options[\"_ALL\"] = \"All Available\";\n    }\n\n    foreach ($states as $key => $val) {\n        $options[$key] = \"[$key] $val\";\n    }\n\n    // Additional attributes for size\n    $extraAttrs = array();\n    if ($size > 1) {\n        $extraAttrs['size'] = $size;\n    }\n\n    return make_select(\n        $name,\n        $selected,\n        $options,\n        $jscallback,\n        '',        // cssclass\n        $multiple,\n        FALSE,     // showvalue (options are already formatted with [CODE])\n        FALSE,     // appendbrackets (let caller control name format)\n        $extraAttrs\n    );\n}\n\n/**\n * Generate a Weather Forecast Office (WFO) selection dropdown\n *\n * Creates a select element containing all Weather Forecast Offices using\n * the global $wfos array. Each option displays the WFO code and city name.\n * Uses the standardized make_select() function for consistency.\n *\n * @param string $selected Currently selected WFO code\n * @return string Complete HTML select element with WFO options\n *\n * @example Basic usage:\n *   echo wfoSelect('DMX');  // Des Moines WFO\n */\nfunction wfoSelect($selected)\n{\n    global $wfos;\n    reset($wfos);\n\n    // Build options array from global $wfos\n    $options = array();\n    foreach ($wfos as $key => $value) {\n        $options[$key] = \"[$key] \" . $value[\"city\"];\n    }\n\n    return make_select(\n        'wfo',           // name\n        $selected,       // selected value\n        $options         // options array\n    );\n}\n\n/**\n * Generate a minute selection dropdown with custom interval\n *\n * Creates a select element for selecting minutes with customizable skip interval.\n * Supports JavaScript/HTML attributes for enhanced functionality.\n * Uses the standardized make_select() function for consistency.\n *\n * @param int $selected Currently selected minute value (0-59)\n * @param string $name Name attribute for the select element\n * @param int $skip Interval between minute options (default: 1)\n * @return string Complete HTML select element with minute options\n *\n * @example Basic usage:\n *   echo minuteSelect(30, 'start_minute');  // 30 selected, every minute\n * @example With 5-minute intervals:\n *   echo minuteSelect(15, 'minute', 5);  // 15 selected, 5-minute intervals\n * @example With JavaScript:\n *   echo minuteSelect(0, 'minute', 1, 'onchange=\"updateTime()\"');\n */\nfunction minuteSelect($selected, $name, $skip = 1)\n{\n    // Build options array with skip interval\n    $options = array();\n    for ($i = 0; $i < 60; $i = $i + $skip) {\n        $options[$i] = (string)$i;\n    }\n\n    return make_select(\n        $name,          // name\n        $selected,      // selected value\n        $options,       // options array\n    );\n}\n\n\n/**\n * Generate a 24-hour selection dropdown (0-23)\n *\n * Creates a select element for selecting hours of the day in 24-hour format.\n * Uses the standardized make_select() function for consistency.\n *\n * @param int $selected Currently selected hour value (0-23)\n * @param string $name Name attribute for the select element\n * @return string Complete HTML select element with 24-hour options\n *\n * @example Basic usage:\n *   echo hour24Select(14, 'start_hour');  // 14 (2 PM) selected\n */\nfunction hour24Select($selected, $name)\n{\n    // Build options array for 24-hour format (0-23)\n    $options = array();\n    for ($i = 0; $i < 24; $i++) {\n        $options[$i] = (string)$i;\n    }\n\n    return make_select(\n        $name,      // name\n        $selected,  // selected value\n        $options    // options array\n    );\n}\n\n/**\n * Generate a 12-hour format hour selection dropdown with AM/PM\n *\n * Creates a select element for selecting hours of the day in 12-hour format\n * with AM/PM display. Uses the standardized make_select() function with support\n * for additional JavaScript attributes via $extraAttrs.\n *\n * @param int $selected Currently selected hour value (0-23)\n * @param string $name Name attribute for the select element\n * @return string Complete HTML select element with 12-hour format options\n *\n * @example Basic usage:\n *   echo hourSelect(14, 'hour');  // 2 PM selected\n */\nfunction hourSelect($selected, $name)\n{\n    // Build options array for 12-hour format with AM/PM\n    $options = array();\n    for ($i = 0; $i < 24; $i++) {\n        $ts = new DateTime(\"2000-01-01 $i:00\");\n        $options[$i] = $ts->format(\"h A\");\n    }\n\n    return make_select(\n        $name,          // name\n        $selected,      // selected value\n        $options,       // options array\n    );\n}\n\n/**\n * Generate a GMT/UTC hour selection dropdown (0-23)\n *\n * Creates a select element for selecting hours of the day in 24-hour GMT/UTC format.\n * Each option displays the hour followed by \"UTC\" (e.g., \"0 UTC\", \"14 UTC\").\n * Uses the standardized make_select() function for consistency.\n *\n * @param int $selected Currently selected hour value (0-23)\n * @param string $name Name attribute for the select element\n * @return string Complete HTML select element with GMT/UTC hour options\n *\n * @example Basic usage:\n *   echo gmtHourSelect(14, 'gmt_hour');  // 14 UTC selected\n * @example With custom name:\n *   echo gmtHourSelect(0, 'start_hour_utc');  // 0 UTC selected\n */\nfunction gmtHourSelect($selected, $name)\n{\n    // Build options array for 24-hour GMT/UTC format\n    $options = array();\n    for ($i = 0; $i < 24; $i++) {\n        $options[$i] = $i . \" UTC\";\n    }\n\n    return make_select(\n        $name,      // name\n        $selected,  // selected value\n        $options    // options array\n    );\n}\n\n\n/**\n * Generate a month selection dropdown with customizable format\n *\n * Creates a select element for selecting months using customizable date format.\n * Supports custom name attributes, date formatting, and JavaScript/HTML attributes.\n * Uses the standardized make_select() function for consistency.\n *\n * @param int $selected Currently selected month value (1-12)\n * @param string $name Name attribute for the select element (default: \"month\")\n * @param string $fmt Date format for month display (default: \"M\" for 3-letter abbreviation)\n * @param string $jsextra Additional JavaScript/HTML attributes (default: \"\")\n * @return string Complete HTML select element with month options\n *\n * @example Basic usage (backwards compatible):\n *   echo monthSelect(6);  // June selected, name=\"month\", format=\"M\"\n * @example Custom name and format:\n *   echo monthSelect(3, 'birth_month', 'F');  // Full month name\n * @example With JavaScript:\n *   echo monthSelect(12, 'month', 'M', 'onchange=\"updateDays()\"');\n */\nfunction monthSelect($selected, $name = \"month\", $fmt = \"M\", $jsextra = '')\n{\n    // Build options array for months (1-12) with specified format\n    $options = array();\n    for ($i = 1; $i <= 12; $i++) {\n        $ts = new DateTime(\"2000-$i-01\");\n        $options[$i] = $ts->format($fmt);\n    }\n\n    // Parse jsextra for additional attributes\n    $extraAttrs = array();\n    $jscallback = '';\n    $cssclass = '';\n\n    if (!empty($jsextra)) {\n        // Parse onchange callback\n        if (preg_match('/onchange\\s*=\\s*[\"\\']([^\"\\']*)[\"\\']/', $jsextra, $matches)) {\n            $jscallback = $matches[1];\n        }\n    }\n\n    return make_select(\n        $name,          // name\n        $selected,      // selected value\n        $options,       // options array\n        $jscallback,    // JavaScript callback\n        $cssclass,      // CSS class\n        FALSE,          // multiple\n        FALSE,          // showvalue\n        FALSE,          // appendbrackets\n        $extraAttrs     // extra attributes\n    );\n}\n\n/**\n * Generate a year selection dropdown from start year to end year\n *\n * Creates a select element for selecting years from a specified start year\n * up to an end year (defaults to current year). Supports custom name attributes\n * and JavaScript/HTML attributes. Uses the standardized make_select() function.\n *\n * @param int $start Starting year for the range\n * @param int $selected Currently selected year value\n * @param string $fname Name attribute for the select element (default: \"year\")\n * @param string $jsextra Additional JavaScript/HTML attributes (default: \"\")\n * @param int|null $endyear Ending year for the range (default: current year)\n * @return string Complete HTML select element with year options\n *\n * @example Basic usage (backwards compatible):\n *   echo yearSelect(2000, 2023);  // Years 2000-current, 2023 selected, name=\"year\"\n * @example Custom name and end year:\n *   echo yearSelect(1950, 1995, 'birth_year', '', 2000);  // Years 1950-2000\n * @example With JavaScript:\n *   echo yearSelect(2010, 2020, 'start_year', 'onchange=\"updateRange()\"');\n */\nfunction yearSelect($start, $selected, $fname = 'year', $jsextra = '', $endyear = null)\n{\n    $start = intval($start);\n    $now = new DateTime();\n    $tyear = ($endyear !== null) ? intval($endyear) : intval($now->format(\"Y\"));\n\n    // Build options array for year range\n    $options = array();\n    for ($i = $start; $i <= $tyear; $i++) {\n        $options[$i] = (string)$i;\n    }\n\n    // Parse jsextra for additional attributes\n    $extraAttrs = array();\n    $jscallback = '';\n    $cssclass = '';\n\n    if (!empty($jsextra)) {\n        // Parse onchange callback\n        if (preg_match('/onchange\\s*=\\s*[\"\\']([^\"\\']*)[\"\\']/', $jsextra, $matches)) {\n            $jscallback = $matches[1];\n        }\n    }\n\n    return make_select(\n        $fname,         // name\n        $selected,      // selected value\n        $options,       // options array\n        $jscallback,    // JavaScript callback\n        $cssclass,      // CSS class\n        FALSE,          // multiple\n        FALSE,          // showvalue\n        FALSE,          // appendbrackets\n        $extraAttrs     // extra attributes\n    );\n}\n\n/**\n * Generate a day selection dropdown (1-31)\n *\n * Creates a select element for selecting day of month from 1 to 31.\n * Supports custom name attributes and JavaScript/HTML attributes for enhanced functionality.\n * Uses the standardized make_select() function for consistency.\n *\n * @param int $selected Currently selected day value (1-31)\n * @param string $name Name attribute for the select element (default: \"day\")\n * @return string Complete HTML select element with day options\n *\n * @example Basic usage (backwards compatible):\n *   echo daySelect(15);  // Day 15 selected, name=\"day\"\n * @example Custom name:\n *   echo daySelect(20, 'birth_day');  // Day 20 selected, name=\"birth_day\"\n */\nfunction daySelect($selected, $name = 'day')\n{\n    // Build options array for days 1-31\n    $options = array();\n    for ($k = 1; $k < 32; $k++) {\n        $options[$k] = (string)$k;\n    }\n\n    return make_select(\n        $name,          // name\n        $selected,      // selected value\n        $options,       // options array\n    );\n} // End of daySelect\n\n\n"
  },
  {
    "path": "include/generators.php",
    "content": "<?php\n/*\n * functions that generate stuff\n */\nrequire_once dirname(__FILE__) . \"/database.inc.php\";\nrequire_once dirname(__FILE__) . \"/memcache.php\";\n\n/**\n * Generate a listing of recent citations for a given IEM resource\n *\n * Result is cached for 1 hour\n *\n * @param string $label The IEM resource label\n * @return string HTML\n */\n$get_website_citations = cacheable('citations')(function ($label){\n    $conn = iemdb(\"mesosite\");\n    $stname = iem_pg_prepare(\n        $conn,\n        \"SELECT * from website_citations WHERE iem_resource = $1 \".\n        \"ORDER by publication_date DESC LIMIT 10\");\n    $rs = pg_execute($conn, $stname, array($label));\n    $s = <<<EOM\n<h3>Publications Citing IEM Data (<a href=\"/info/refs.php\">View All</a>)</h3>\n<p>These are the most recent 10 publications that have cited the usage of data\nfrom this page. This\nlist is not exhaustive, so please <a href=\"/info/contacts.php\">let us know</a>\nif you have a publication that should be added.</p>\n<ul>\nEOM;\n    for ($i=0; $row = pg_fetch_assoc($rs); $i++){\n        $s .= sprintf(\n            \"<li>%s <a href=\\\"%s\\\">%s</a></li>\",\n            $row[\"title\"], $row[\"link\"], $row[\"link\"]);\n    }\n    $s .= \"</ul>\";\n    return $s;\n});\n\n\n$get_news_by_tag = cacheable(\"newsbytag\")(function($tag)\n{\n    // Generate a listing of recent news items by a certain tag\n    $pgconn = iemdb(\"mesosite\");\n    $stname = iem_pg_prepare(\n        $pgconn,\n        \"SELECT id, entered, title from news WHERE \"\n            . \"tags @> ARRAY[$1]::varchar[] ORDER by entered DESC LIMIT 5\"\n    );\n    $rs = pg_execute($pgconn, $stname, array($tag));\n    $s = \"<h3>Recent News Items</h3><p>Most recent news items tagged: \"\n        . \"{$tag}</p><ul>\";\n    for ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n        $s .= sprintf(\n            \"<li><a href=\\\"/onsite/news.phtml?id=%s\\\">%s</a>\"\n                . \"<br />Posted: %s</li>\\n\",\n            $row[\"id\"],\n            $row[\"title\"],\n            date(\"d M Y\", strtotime($row[\"entered\"]))\n        );\n    }\n    $s .= \"</ul>\";\n    return $s;\n});\n\n$get_iemapps_tags = cacheable(\"iemappstags\")(function($tagname)\n{\n    // Get a html list for this tagname\n    $pgconn = iemdb(\"mesosite\");\n    $stname = iem_pg_prepare(\n        $pgconn,\n        \"SELECT name, description, url from iemapps WHERE \"\n            . \"appid in (SELECT appid from iemapps_tags WHERE tag = $1) \"\n            . \"ORDER by name ASC\"\n    );\n    $rs = pg_execute($pgconn, $stname, array($tagname));\n    $s = \"<ul>\";\n    while ($row = pg_fetch_assoc($rs)) {\n        $s .= sprintf(\n            \"<li><a href=\\\"%s\\\">%s</a><br />%s</li>\\n\",\n            $row[\"url\"],\n            $row[\"name\"],\n            $row[\"description\"]\n        );\n    }\n    $s .= \"</ul>\";\n    return $s;\n});\n\n$get_website_stats = cacheable(\"websitestats\", 120)(function ()\n{\n    // Fetch from nagios\n    $val = file_get_contents(\"https://nagios.agron.iastate.edu/cgi-bin/get_iemstats.py\");  // skipcq\n    $bcolor = \"success\";\n    $rcolor = \"success\";\n    $ocolor = \"success\";\n    $acolor = \"success\";\n    $bandwidth = 0;\n    $req = 0;\n    $ok = 0;\n    $apirate = 0;\n    if ($val) {\n        $jobj = json_decode($val);\n\n        $ok = $jobj->stats->telemetry_ok;\n        if ($ok < 90) $ocolor = \"warning\";\n        if ($ok < 80) $ocolor = \"danger\";\n\n        $apirate = $jobj->stats->telemetry_rate;\n        if ($apirate > 300) $acolor = \"warning\";\n        if ($apirate > 400) $acolor = \"danger\";\n\n        $bandwidth = $jobj->stats->bandwidth / 1000000.0;\n        // grading of the bandwidth (MB/s)\n        if ($bandwidth > 35) $bcolor = \"warning\";\n        if ($bandwidth > 70) $bcolor = \"danger\";\n\n        $req = $jobj->stats->apache_req_per_sec;\n        if ($req > 5000) $rcolor = \"warning\";\n        if ($req > 7500) $rcolor = \"danger\";\n    }\n    $label = sprintf(\"%.1f MB/s\", $bandwidth);\n    $bpercent = intval($bandwidth / 124.0  * 100.0);\n    $rlabel = sprintf(\"%s req/s\", number_format($req));\n    $rpercent = intval($req / 15000.0 * 100.0);\n    $olabel = sprintf(\"%.0f%%\", $ok);\n    $opercent = intval($ok);\n    $alabel = sprintf(\"%.1f req/s\", $apirate);\n    $apercent = intval($apirate / 500.0 * 100.0);\n\n    $s = <<<EOF\n<div class=\"card mb-3\">\n<div class=\"card-header\">Current Website Performance:</div>\n  <div class=\"card-body\">\n\n  <div class=\"mb-2\">\n    <span>Bandwidth: {$label}</span>\n    <div class=\"progress\">\n        <div class=\"progress-bar bg-{$bcolor}\" role=\"progressbar\" aria-valuenow=\"{$bpercent}\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: {$bpercent}%;\">\n        </div>\n    </div>\n  </div>\n\n  <div class=\"mb-2\">\n    <span>Total Website: {$rlabel}</span>\n    <div class=\"progress\">\n        <div class=\"progress-bar bg-{$rcolor}\" role=\"progressbar\" aria-valuenow=\"{$rpercent}\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: {$rpercent}%;\">\n        </div>\n    </div>\n  </div>\n\n  <div class=\"mb-2\">\n    <span>API/Data Services: {$alabel}</span>\n    <div class=\"progress\">\n        <div class=\"progress-bar bg-{$acolor}\" role=\"progressbar\" aria-valuenow=\"{$apercent}\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: {$apercent}%;\">\n        </div>\n    </div>\n  </div>\n\n  <div class=\"mb-2\">\n    <span>API Success: {$olabel}</span>\n    <div class=\"progress\">\n        <div class=\"progress-bar bg-{$ocolor}\" role=\"progressbar\"\n        aria-valuenow=\"{$opercent}\" aria-valuemin=\"0\" aria-valuemax=\"100\"\n        style=\"width: {$opercent}%;\">\n        </div>\n    </div>\n  </div>\n\n  </div>\n</div>\nEOF;\n    return $s;\n});\n\n/**\n * Generate the HTML for the most recent feature\n * With 2 minutes of caching\n * param object $t Template object\n * return string HTML\n */\nfunction gen_feature($t)\n{\n    global $EXTERNAL_BASEURL;\n    $s = '';\n\n    $connection = iemdb(\"mesosite\");\n    $query1 = \"SELECT *, to_char(valid, 'YYYY/MM/YYMMDD') as imageref,\n                to_char(valid, 'DD Mon YYYY HH:MI AM') as webdate,\n                to_char(valid, 'YYYY-MM-DD') as permalink from feature\n                WHERE valid < now() ORDER by valid DESC LIMIT 1\";\n    $result = pg_query($connection, $query1);\n    $row = pg_fetch_assoc($result, 0);\n    $good = intval($row[\"good\"]);\n    $bad = intval($row[\"bad\"]);\n    $abstain = intval($row[\"abstain\"]);\n    $tags = ($row[\"tags\"] != null) ? explode(\",\", $row[\"tags\"]) : array();\n    $fbid = $row[\"fbid\"];\n    $fburl = sprintf(\"https://www.facebook.com/permalink.php?\" .\n        \"story_fbid=%s&id=157789644737\", $fbid);\n\n    $imghref = sprintf(\n        \"/onsite/features/%s.%s\",\n        $row[\"imageref\"],\n        $row[\"mediasuffix\"]\n    );\n\n    $linktext = \"\";\n    if ($row[\"appurl\"] != \"\") {\n        $linktext = \"<br /><a class=\\\"btn btn-sm btn-primary\\\" href=\\\"\" . $row[\"appurl\"] . \"\\\"><i class=\\\"bi bi-bar-chart\\\"></i> Generate This Chart on Website</a>\";\n    }\n\n    $tagtext = \"\";\n    if (sizeof($tags) > 0) {\n        $tagtext .= \"<br /><small>Tags: &nbsp; \";\n        foreach ($tags as $k => $v) {\n            $tagtext .= sprintf(\"<a href=\\\"/onsite/features/tags/%s.html\\\">%s</a> &nbsp; \", $v, $v);\n        }\n        $tagtext .= \"</small>\";\n    }\n    $chart_block = \"\";\n    $jsextra = \"\";\n    if ($row[\"mediasuffix\"] == 'mp4') {\n        $imgiface = <<<EOM\n<video class=\"img-fluid\" controls>\n    <source src=\"{$imghref}\" type=\"video/mp4\">\n    Your browser does not support the video tag.\n</video>\nEOM;\n    } else {\n        $imgiface = \"<a href=\\\"$imghref\\\"><img src=\\\"$imghref\\\" alt=\\\"Feature\\\" class=\\\"img-fluid\\\" /></a>\";\n    }\n    if ($row[\"javascripturl\"]) {\n        $chart_block = <<<EOF\n<div class=\"d-none d-md-block mb-3\">\n    <div id=\"ap_container\" class=\"w-100\" style=\"min-height:400px;\"></div>\n</div>\nEOF;\n        $imgiface = <<<EOF\n<div class=\"d-md-none\">\n<a href=\"$imghref\"><img src=\"$imghref\" alt=\"Feature\" class=\"img-fluid\" /></a>\n</div>\nEOF;\n        $HC = \"12.1.2\";\n        $jsextra = <<<EOM\n<script src=\"/vendor/highcharts/{$HC}/highcharts.js\"></script>\n<script src=\"/vendor/highcharts/{$HC}/highcharts-more.js\"></script>\n<script src=\"/vendor/highcharts/{$HC}/modules/exporting.js\"></script>\n<script src=\"{$row[\"javascripturl\"]}\"></script>\nEOM;\n    }\n\n    $s .= <<<EOF\n<div class=\"card mb-3\">\n    <div class=\"card-header\">\n\n<div class='row'>\n    <div class='col-12 col-sm-4'><b>IEM Daily Feature</b>\n        <a href=\"/feature_rss.php\"><img src=\"/images/rss.gif\" /></a></div>\n    <div class='col-12 col-sm-8'>\n        <div class='d-flex flex-wrap gap-1'>\n            <a class=\"btn btn-outline-secondary btn-sm\" href=\"{$fburl}\">Facebook</a>\n            <a class=\"btn btn-outline-secondary btn-sm\" href=\"/onsite/features/cat.php?day={$row[\"permalink\"]}\">Permalink</a>\n            <a class=\"btn btn-outline-secondary btn-sm\" href=\"/onsite/features/past.php\">Past Features</a>\n            <a class=\"btn btn-outline-secondary btn-sm\" href=\"/onsite/features/tags/\">Tags</a>\n         </div>\n    </div>\n</div>\n\n    </div>\n    <div class=\"card-body\">\n        <h4>{$row[\"title\"]}</h4>\n        <small class=\"text-muted\">Posted: {$row[\"webdate\"]}, Views: {$row[\"views\"]}</small>\n        {$tagtext}\n\n        <div class=\"row g-3\">\n            <div class=\"col-12 col-lg-5\">\n                <div class=\"mt-2\">{$row[\"story\"]}</div>\n            </div>\n            <div class=\"col-12 col-lg-7\">\n                <div class=\"card h-100\">\n                    <div class=\"card-body\">\n                        {$chart_block}\n                        <div class=\"mb-2\">{$imgiface}</div>\n                        <span>{$row[\"caption\"]}</span>\n                        {$linktext}\n                    </div>\n                </div>\n            </div>\n        </div>\n\nEOF;\n\n    /* Rate Feature and Past ones too! */\n    if ($row[\"voting\"] == \"f\") {\n        $fbtext = \"\";\n        $vtext = \"\";\n    } else {\n        $vtext = <<<EOM\n        <div class=\"clearfix\"></div>\n        <div class=\"mt-3\" style=\"clear: both;\">\n        <div class=\"row g-2\">\n        <div class=\"col-12 col-sm-3 d-flex align-items-center\"><strong><span id=\"feature_msg\">Rate Feature</span></strong></div>\n        <div class=\"col-12 col-sm-3\">\n<button class=\"btn btn-success w-100 feature_btn\" type=\"button\" data-voting=\"good\">Good (<span id=\"feature_good_votes\">$good</span> votes)</button>\n        </div>\n        <div class=\"col-12 col-sm-3\">\n<button class=\"btn btn-danger w-100 feature_btn\" type=\"button\" data-voting=\"bad\">Bad (<span id=\"feature_bad_votes\">$bad</span> votes)</button>\n        </div>\n        <div class=\"col-12 col-sm-3\">\n<button class=\"btn btn-warning w-100 feature_btn\" type=\"button\" data-voting=\"abstain\">Abstain (<span id=\"feature_abstain_votes\">$abstain</span> votes)</button>\n        </div>\n        </div>\n    </div>\nEOM;\n\n        $t->jsextra = <<<EOF\n<script src=\"index.js\"></script>\n{$jsextra}\nEOF;\n        $huri = \"{$EXTERNAL_BASEURL}/onsite/features/cat.php?day=\" . $row[\"permalink\"];\n        $fbtext = <<<EOF\n<div class=\"fb-comments\" data-href=\"{$huri}\" data-numposts=\"5\" data-colorscheme=\"light\"></div>\nEOF;\n    }\n    $s .= <<<EOF\n        $vtext\n        $fbtext\n\n        <br /><strong>Previous Years' Features</strong>\n\nEOF;\n    // Find previous years' features\n    $stname = iem_pg_prepare(\n        $connection,\n        \"select *, extract(year from valid) as yr from feature \".\n        \"WHERE to_char(valid, 'mmdd') = $1 and valid < 'TODAY'::date \".\n        \"ORDER by yr DESC\"\n        );\n    $result = pg_execute($connection, $stname, array(\n        date(\"md\")\n    ));\n\n    // Check if we have any previous years' features\n    $features = [];\n    while ($row = pg_fetch_assoc($result)) {\n        $features[] = $row;\n    }\n\n    if (count($features) > 0) {\n        $s .= '<div class=\"row g-2 mt-2\">';\n        foreach ($features as $row) {\n            $icon = $row[\"appurl\"] ? '<i class=\"bi bi-bar-chart text-primary me-1\"></i>' : '';\n            $s .= sprintf(\n                '<div class=\"col-md-6 col-xl-4\">' .\n                '<div class=\"card card-body py-2 px-3\">' .\n                '<div class=\"d-flex align-items-center\">' .\n                '<span class=\"badge bg-primary me-2 flex-shrink-0\">%s</span>' .\n                '<small class=\"text-truncate\">' .\n                '<a href=\"onsite/features/cat.php?day=%s\" class=\"text-decoration-none\">%s%s</a>' .\n                '</small>' .\n                '</div></div></div>',\n                $row[\"yr\"],\n                substr($row[\"valid\"], 0, 10),\n                $icon,\n                htmlspecialchars($row[\"title\"])\n            );\n        }\n        $s .= '</div>';\n    }\n\n    $s .= \"</div><!--  end of card body -->\";\n    $s .= \"</div><!-- end of card -->\";\n\n    return $s;\n};\n\n/**\n * Get recent news items\n */\n$get_recent_news = cacheable(\"recentnews\", 120)(function(){\n    $pgconn = iemdb(\"mesosite\");\n    $rs = pg_query($pgconn, \"SELECT * from news ORDER by entered DESC LIMIT 5\");\n\n    $today = new DateTime();\n\n    $news = \"\";\n    while ($row = pg_fetch_assoc($rs)){\n        $ts = new DateTime(substr($row[\"entered\"],0,16));\n        // Show time only for today's posts, otherwise show date and time\n        $sts = ($ts->format(\"Y-m-d\") === $today->format(\"Y-m-d\"))\n            ? $ts->format(\"g:i A\")\n            : $ts->format(\"j M g:i A\");\n        $news .= sprintf(\"<p><a href=\\\"/onsite/news.phtml?id=%s\\\">%s</a>\".\n            \"<br /><i>Posted:</i> %s</li>\\n\", $row[\"id\"], $row[\"title\"], $sts);\n    }\n    return $news;\n});\n"
  },
  {
    "path": "include/iemmap.php",
    "content": "<?php\n/* \n * Helper functions for now for mapping of data\n */\nfunction saveWebImage($img)\n{\n    $tempfn = sprintf(\"%s.png\", tempnam(\"/var/webtmp\", \"ms\"));\n    $img->save($tempfn);\n    return sprintf(\"/tmp/%s\", basename($tempfn));\n}\n\nfunction iemmap_title($map, $img, $title = null, $subtitle = null)\n{\n    $iem_headerbar = $map->getLayerByName(\"iem_headerbar\");\n    $iem_headerbar->__set(\"status\", MS_ON);\n\n    $iem_headerbar_logo = $map->getLayerByName(\"iem_headerbar_logo\");\n    $iem_headerbar_logo->__set(\"status\", MS_ON);\n\n    $iem_headerbar->draw($map, $img);\n    $iem_headerbar_logo->draw($map, $img);\n\n    $iem_headerbar_title = $map->getLayerByName(\"iem_headerbar_title\");\n    $iem_headerbar_title->__set(\"status\", MS_ON);\n\n    if ($title != null) {\n        $point = new pointObj();\n        $point->setXY(80, 28);\n        $point->draw($map, $iem_headerbar_title, $img, 0, $title);\n    }\n    if ($subtitle != null) {\n        $point = new pointObj();\n        $point->setXY(82, 50);\n        $point->draw($map, $iem_headerbar_title, $img, 1, $subtitle);\n    }\n}\n"
  },
  {
    "path": "include/iemprop.php",
    "content": "<?php\n/* Need something to fetch IEM Properties */\nrequire_once dirname(__FILE__) . \"/database.inc.php\";\nrequire_once dirname(__FILE__) . \"/memcache.php\";\n\n$cached_get_iemprop = cacheable(\"iemprop\", 120)(function($propname)\n{\n    $dbconn = iemdb(\"mesosite\");\n    $stname = iem_pg_prepare(\n        $dbconn,\n        \"SELECT propvalue from properties where propname = $1\",\n    );\n    $rs = pg_execute($dbconn, $stname, array($propname));\n    if (pg_num_rows($rs) < 1) {\n        return null;\n    }\n    $row = pg_fetch_assoc($rs, 0);\n    return $row[\"propvalue\"];\n});\n\n// Proxy to the cached function\nfunction get_iemprop($propname)\n{\n    global $cached_get_iemprop;\n    return $cached_get_iemprop($propname);\n}"
  },
  {
    "path": "include/jpgraph/README",
    "content": "README FOR JPGRAPH 4.4.2\r\n=========================\r\n\r\nThis package contains the JpGraph PHP library version 4.4.2\r\n\r\nThe library is Copyright (C) 2000-2010 Asial Corporatoin and\r\nreleased under dual license QPL 1.0 for open source and educational\r\nuse and JpGraph Professional License for commercial use. \r\n\r\nPlease see full license details at \r\nhttp://jpgraph.net/pro/\r\nhttp://jpgraph.net/download/\r\n\r\n\r\nRequirements:\r\n-------------\r\nMiminum:\r\n* PHP 5.1.0 or higher \r\n* GD 2.0.28 or higher\r\nNote: Earlier versions might work but is unsupported.\r\n\r\nRecommended:\r\n* >= PHP 5.2.0\r\n* PHP Builtin GD library\r\n\r\nInstallation\r\n------------\r\n1. Make sure that the PHP version is compatible with the stated \r\n   requirements and that the PHP installation has support for \r\n   the GD library. Please run phpinfo() to check if GD library \r\n   is supported in the installation. \r\n   If the GD library doesn't seem to be installed \r\n   please consult the PHP manual under section \"Image\" for\r\n   instructions on where to find this library. Please refer to\r\n   the manual section \"Verifying your PHP installation\"\r\n   \r\n2. Unzip and copy the files to a directory of your choice where Your\r\n   httpd sever can access them. \r\n   For a global site installation you should copy the files to \r\n   somewhere in the PHP search path. \r\n\r\n3. Check that the default directory paths in jpg-config.inc.php\r\n   for cache directory and TTF directory suits your installation. \r\n   Note1: The default directories are different depending on if\r\n   the library is running on Windows or UNIX.\r\n   Note2: Apache/PHP must have write permission to your cache \r\n   directory if you enable the cache feature. By default the cache\r\n   is disabled.\r\n   \r\n\r\nDocumentation\r\n-------------\r\nThe installation includes HTML documentation and reference guide for the\r\nlibrary. The portal page for all documentation is\r\n<YOUR-INSTALLATION-DIRECTORY>/docs/index.html\r\n\r\n\r\nBug reports and suggestions\r\n---------------------------\r\nShould be reported using the contact form at\r\n\r\nhttp://jpgraph.net/contact/\r\n\r\n"
  },
  {
    "path": "include/jpgraph/flag_mapping",
    "content": "class JpCountryFlags {\n\n$iCountryFlags = array(\n    'Afghanistan' => 'afgh.gif',\n    'Republic of Angola' => 'agla.gif',\n    'Republic of Albania' => 'alba.gif',\n    'Alderney' => 'alde.gif',\n    'Democratic and Popular Republic of Algeria' => 'alge.gif',\n    'Territory of American Samoa' => 'amsa.gif',\n    'Principality of Andorra' => 'andr.gif',\n    'British Overseas Territory of Anguilla' => 'angu.gif',\n    'Antarctica' => 'anta.gif',\n    'Argentine Republic' => 'arge.gif',\n    'League of Arab States' => 'arle.gif',\n    'Republic of Armenia' => 'arme.gif',\n    'Aruba' => 'arub.gif',\n    'Commonwealth of Australia' => 'astl.gif',\n    'Republic of Austria' => 'aust.gif',\n    'Azerbaijani Republic' => 'azer.gif',\n    'British Antarctic Territory' => 'bant.gif',\n    'Kingdom of Belgium' => 'belg.gif',\n    'British Overseas Territory of Bermuda' => 'berm.gif',\n    'Commonwealth of the Bahamas' => 'bhms.gif',\n    'Kingdom of Bahrain' => 'bhrn.gif',\n    'Republic of Belarus' => 'blru.gif',\n    'Republic of Bolivia' => 'blva.gif',\n    'Belize' => 'blze.gif',\n    'Republic of Benin' => 'bnin.gif',\n    'Republic of Botswana' => 'bots.gif',\n    'Federative Republic of Brazil' => 'braz.gif',\n    'Barbados' => 'brbd.gif',\n    'British Indian Ocean Territory' => 'brin.gif',\n    'Brunei Darussalam' => 'brun.gif',\n    'Republic of Burkina' => 'bufa.gif',\n    'Republic of Bulgaria' => 'bulg.gif',\n    'Republic of Burundi' => 'buru.gif',\n    'Overseas Territory of the British Virgin Islands' => 'bvis.gif',\n    'Central African Republic' => 'cafr.gif',\n    'Kingdom of Cambodia' => 'camb.gif',\n    'Republic of Cameroon' => 'came.gif',\n    'Dominion of Canada' => 'cana.gif',\n    'Caribbean Community' => 'cari.gif',\n    'Republic of Cape Verde' => 'cave.gif',\n    'Republic of Chad' => 'chad.gif',\n    'Republic of Chile' => 'chil.gif',\n    'Territory of Christmas Island' => 'chms.gif',\n    'Commonwealth of Independent States' => 'cins.gif',\n    'Cook Islands' => 'ckis.gif',\n    'Republic of Colombia' => 'clmb.gif',\n    'Territory of Cocos Islands' => 'cois.gif',\n    'Commonwealth' => 'comn.gif',\n    'Union of the Comoros' => 'como.gif',\n    'Republic of the Congo' => 'cong.gif',\n    'Republic of Costa Rica' => 'corc.gif',\n    'Republic of Croatia' => 'croa.gif',\n    'Republic of Cuba' => 'cuba.gif',\n    'British Overseas Territory of the Cayman Islands' => 'cyis.gif',\n    'Republic of Cyprus' => 'cypr.gif',\n    'The Czech Republic' => 'czec.gif',\n    'Kingdom of Denmark' => 'denm.gif',\n    'Republic of Djibouti' => 'djib.gif',\n    'Commonwealth of Dominica' => 'domn.gif',\n    'Dominican Republic' => 'dore.gif',\n    'Republic of Ecuador' => 'ecua.gif',\n    'Arab Republic of Egypt' => 'egyp.gif',\n    'Republic of El Salvador' => 'elsa.gif',\n    'England' => 'engl.gif',\n    'Republic of Equatorial Guinea' => 'eqgu.gif',\n    'State of Eritrea' => 'erit.gif',\n    'Republic of Estonia' => 'estn.gif',\n    'Ethiopia' => 'ethp.gif',\n    'European Union' => 'euun.gif',\n    'British Overseas Territory of the Falkland Islands' => 'fais.gif',\n    'International Federation of Vexillological Associations' => 'fiav.gif',\n    'Republic of Fiji' => 'fiji.gif',\n    'Republic of Finland' => 'finl.gif',\n    'Territory of French Polynesia' => 'fpol.gif',\n    'French Republic' => 'fran.gif',\n    'Overseas Department of French Guiana' => 'frgu.gif',\n    'Gabonese Republic' => 'gabn.gif',\n    'Republic of the Gambia' => 'gamb.gif',\n    'Republic of Georgia' => 'geor.gif',\n    'Federal Republic of Germany' => 'germ.gif',\n    'Republic of Ghana' => 'ghan.gif',\n    'Gibraltar' => 'gibr.gif',\n    'Hellenic Republic' => 'grec.gif',\n    'State of Grenada' => 'gren.gif',\n    'Overseas Department of Guadeloupe' => 'guad.gif',\n    'Territory of Guam' => 'guam.gif',\n    'Republic of Guatemala' => 'guat.gif',\n    'The Bailiwick of Guernsey' => 'guer.gif',\n    'Republic of Guinea' => 'guin.gif',\n    'Republic of Haiti' => 'hait.gif',\n    'Hong Kong Special Administrative Region' => 'hokn.gif',\n    'Republic of Honduras' => 'hond.gif',\n    'Republic of Hungary' => 'hung.gif',\n    'Republic of Iceland' => 'icel.gif',\n    'International Committee of the Red Cross' => 'icrc.gif',\n    'Republic of India' => 'inda.gif',\n    'Republic of Indonesia' => 'indn.gif',\n    'Republic of Iraq' => 'iraq.gif',\n    'Republic of Ireland' => 'irel.gif',\n    'Organization of the Islamic Conference' => 'isco.gif',\n    'Isle of Man' => 'isma.gif',\n    'State of Israel' => 'isra.gif',\n    'Italian Republic' => 'ital.gif',\n    'Jamaica' => 'jama.gif',\n    'Japan' => 'japa.gif',\n    'The Bailiwick of Jersey' => 'jers.gif',\n    'Hashemite Kingdom of Jordan' => 'jord.gif',\n    'Republic of Kazakhstan' => 'kazk.gif',\n    'Republic of Kenya' => 'keny.gif',\n    'Republic of Kiribati' => 'kirb.gif',\n    'State of Kuwait' => 'kuwa.gif',\n    'Kyrgyz Republic' => 'kyrg.gif',\n    'Republic of Latvia' => 'latv.gif',\n    'Lebanese Republic' => 'leba.gif',\n    'Kingdom of Lesotho' => 'lest.gif',\n    'Republic of Liberia' => 'libe.gif',\n    'Principality of Liechtenstein' => 'liec.gif',\n    'Republic of Lithuania' => 'lith.gif',\n    'Grand Duchy of Luxembourg' => 'luxe.gif',\n    'Macao Special Administrative Region' => 'maca.gif',\n    'Republic of Macedonia' => 'mace.gif',\n    'Republic of Madagascar' => 'mada.gif',\n    'Republic of the Marshall Islands' => 'mais.gif',\n    'Republic of Maldives' => 'mald.gif',\n    'Republic of Mali' => 'mali.gif',\n    'Federation of Malaysia' => 'mals018.gif',\n    'Republic of Malta' => 'malt.gif',\n    'Republic of Malawi' => 'malw.gif',\n    'Overseas Department of Martinique' => 'mart.gif',\n    'Islamic Republic of Mauritania' => 'maur.gif',\n    'Territorial Collectivity of Mayotte' => 'mayt.gif',\n    'United Mexican States' => 'mexc.gif',\n    'Federated States of Micronesia' => 'micr.gif',\n    'Midway Islands' => 'miis.gif',\n    'Republic of Moldova' => 'mold.gif',\n    'Principality of Monaco' => 'mona.gif',\n    'Republic of Mongolia' => 'mong.gif',\n    'British Overseas Territory of Montserrat' => 'mont.gif',\n    'Kingdom of Morocco' => 'morc.gif',\n    'Republic of Mozambique' => 'moza.gif',\n    'Republic of Mauritius' => 'mrts.gif',\n    'Union of Myanmar' => 'myan.gif',\n    'Republic of Namibia' => 'namb.gif',\n    'North Atlantic Treaty Organization' => 'nato.gif',\n    'Republic of Nauru' => 'naur.gif',\n    'Turkish Republic of Northern Cyprus' => 'ncyp.gif',\n    'Netherlands Antilles' => 'nean.gif',\n    'Kingdom of Nepal' => 'nepa.gif',\n    'Kingdom of the Netherlands' => 'neth.gif',\n    'Territory of Norfolk Island' => 'nfis.gif',\n    'Federal Republic of Nigeria' => 'ngra.gif',\n    'Republic of Nicaragua' => 'nica.gif',\n    'Republic of Niger' => 'nigr.gif',\n    'Niue' => 'niue.gif',\n    'Commonwealth of the Northern Mariana Islands' => 'nmar.gif',\n    'Province of Northern Ireland' => 'noir.gif',\n    'Nordic Council' => 'nord.gif',\n    'Kingdom of Norway' => 'norw.gif',\n    'Territory of New Caledonia and Dependencies' => 'nwca.gif',\n    'New Zealand' => 'nwze.gif',\n    'Organization of American States' => 'oast.gif',\n    'Organization of African Unity' => 'oaun.gif',\n    'International Olympic Committee' => 'olym.gif',\n    'Sultanate of Oman' => 'oman.gif',\n    'Organization of Petroleum Exporting Countries' => 'opec.gif',\n    'Islamic Republic of Pakistan' => 'paks.gif',\n    'Republic of Palau' => 'pala.gif',\n    'Independent State of Papua New Guinea' => 'pang.gif',\n    'Republic of Paraguay' => 'para.gif',\n    'Republic of the Philippines' => 'phil.gif',\n    'British Overseas Territory of the Pitcairn Islands' => 'piis.gif',\n    'Republic of Poland' => 'pola.gif',\n    'Republic of Portugal' => 'port.gif',\n    'Commonwealth of Puerto Rico' => 'purc.gif',\n    'State of Qatar' => 'qata.gif',\n    'Russian Federation' => 'russ.gif',\n    'Republic of Rwanda' => 'rwan.gif',\n    'Kingdom of Saudi Arabia' => 'saar.gif',\n    'Republic of San Marino' => 'sama.gif',\n    'Nordic Sami Conference' => 'sami.gif',\n    'Sark' => 'sark.gif',\n    'Scotland' => 'scot.gif',\n    'Principality of Seborga' => 'sebo.gif',\n    'Republic of Sierra Leone' => 'sile.gif',\n    'Republic of Singapore' => 'sing.gif',\n    'Republic of Korea' => 'skor.gif',\n    'Republic of Slovenia' => 'slva.gif',\n    'Somali Republic' => 'smla.gif',\n    'Republic of Somaliland' => 'smld.gif',\n    'Republic of South Africa' => 'soaf.gif',\n    'Solomon Islands' => 'sois.gif',\n    'Kingdom of Spain' => 'span.gif',\n    'Secretariat of the Pacific Community' => 'spco.gif',\n    'Democratic Socialist Republic of Sri Lanka' => 'srla.gif',\n    'Saint Lucia' => 'stlu.gif',\n    'Republic of the Sudan' => 'suda.gif',\n    'Republic of Suriname' => 'surn.gif',\n    'Slovak Republic' => 'svka.gif',\n    'Kingdom of Sweden' => 'swdn.gif',\n    'Swiss Confederation' => 'swit.gif',\n    'Syrian Arab Republic' => 'syra.gif',\n    'Kingdom of Swaziland' => 'szld.gif',\n    'Republic of China' => 'taiw.gif',\n    'Republic of Tajikistan' => 'tajk.gif',\n    'United Republic of Tanzania' => 'tanz.gif',\n    'Kingdom of Thailand' => 'thal.gif',\n    'Autonomous Region of Tibet' => 'tibe.gif',\n    'Turkmenistan' => 'tkst.gif',\n    'Togolese Republic' => 'togo.gif',\n    'Tokelau' => 'toke.gif',\n    'Kingdom of Tonga' => 'tong.gif',\n    'Tristan da Cunha' => 'trdc.gif',\n    'Tromelin' => 'tris.gif',\n    'Republic of Tunisia' => 'tuns.gif',\n    'Republic of Turkey' => 'turk.gif',\n    'Tuvalu' => 'tuva.gif',\n    'United Arab Emirates' => 'uaem.gif',\n    'Republic of Uganda' => 'ugan.gif',\n    'Ukraine' => 'ukrn.gif',\n    'United Kingdom of Great Britain' => 'unkg.gif',\n    'United Nations' => 'unna.gif',\n    'United States of America' => 'unst.gif',\n    'Oriental Republic of Uruguay' => 'urgy.gif',\n    'Virgin Islands of the United States' => 'usvs.gif',\n    'Republic of Uzbekistan' => 'uzbk.gif',\n    'State of the Vatican City' => 'vacy.gif',\n    'Republic of Vanuatu' => 'vant.gif',\n    'Bolivarian Republic of Venezuela' => 'venz.gif',\n    'Republic of Yemen' => 'yemn.gif',\n    'Democratic Republic of Congo' => 'zare.gif',\n    'Republic of Zimbabwe' => 'zbwe.gif' \n) ;\n\n\n"
  },
  {
    "path": "include/jpgraph/gd_image.inc.php",
    "content": "<?php\n//=======================================================================\n// File:        GD_IMAGE.INC.PHP\n// Description: PHP Graph Plotting library. Low level image drawing routines\n// Created:     2001-01-08, refactored 2008-03-29\n// Ver:         $Id: gd_image.inc.php 1922 2010-01-11 11:42:50Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\nrequire_once 'jpgraph_rgb.inc.php';\nrequire_once 'jpgraph_ttf.inc.php';\nrequire_once 'imageSmoothArc.php';\nrequire_once 'jpgraph_errhandler.inc.php';\n\n// Line styles\ndefine('LINESTYLE_SOLID',1);\ndefine('LINESTYLE_DOTTED',2);\ndefine('LINESTYLE_DASHED',3);\ndefine('LINESTYLE_LONGDASH',4);\n\n// The DEFAULT_GFORMAT sets the default graphic encoding format, i.e.\n// PNG, JPG or GIF depending on what is installed on the target system\n// in that order.\nif( !DEFINED(\"DEFAULT_GFORMAT\") ) {\n    define(\"DEFAULT_GFORMAT\",\"auto\");\n}\n\n//========================================================================\n// CLASS Image\n// Description: The very coor image drawing class that encapsulates all\n//              calls to the GD library\n//              Note: The class used by the library is the decendant\n//              class RotImage which extends the Image class with transparent\n//              rotation.\n//=========================================================================\nclass Image {\n    public $img=null;\n    public $rgb=null;\n    public $img_format;\n    public $ttf=null;\n    public $line_style=LINESTYLE_SOLID;\n    public $current_color,$current_color_name;\n    public $original_width=0, $original_height=0;\n    public $plotwidth=0,$plotheight=0;\n\n    // for __get, __set\n    private $_left_margin=30,$_right_margin=30,$_top_margin=20,$_bottom_margin=30;\n    //private $_plotwidth=0,$_plotheight=0;\n    private $_width=0, $_height=0;\n    private $_line_weight=1;\n\n    protected $expired=true;\n    protected $lastx=0, $lasty=0;\n    protected $obs_list=array();\n    protected $font_size=12,$font_family=FF_DEFAULT, $font_style=FS_NORMAL;\n    protected $font_file='';\n    protected $text_halign=\"left\",$text_valign=\"bottom\";\n    protected $use_anti_aliasing=false;\n    protected $quality=null;\n    protected $colorstack=array(),$colorstackidx=0;\n    protected $canvascolor = 'white' ;\n    protected $langconv = null ;\n    protected $iInterlace=false;\n    protected $bbox_cache = array(); // STore the last found tetx bounding box\n    protected $ff_font0;\n    protected $ff_font0_bold;\n    protected $ff_font1;\n    protected $ff_font1_bold;\n    protected $ff_font2;\n    protected $ff_font2_bold;\n\n\n    //---------------\n    // CONSTRUCTOR\n    function __construct($aWidth=0,$aHeight=0,$aFormat=DEFAULT_GFORMAT,$aSetAutoMargin=true) {\n\n        $this->original_width  = $aWidth;\n        $this->original_height = $aHeight;\n        $this->CreateImgCanvas($aWidth, $aHeight);\n\n        if( $aSetAutoMargin ) {\n            $this->SetAutoMargin();\n        }\n\n        if( !$this->SetImgFormat($aFormat) ) {\n            JpGraphError::RaiseL(25081,$aFormat);//(\"JpGraph: Selected graphic format is either not supported or unknown [$aFormat]\");\n        }\n        $this->ttf = new TTF();\n        $this->langconv = new LanguageConv();\n\n        $this->ff_font0 =  imageloadfont(dirname(__FILE__) . \"/fonts/FF_FONT0.gdf\");\n        $this->ff_font1 =  imageloadfont(dirname(__FILE__) . \"/fonts/FF_FONT1.gdf\");\n        $this->ff_font2 =  imageloadfont(dirname(__FILE__) . \"/fonts/FF_FONT2.gdf\");\n        $this->ff_font1_bold =  imageloadfont(dirname(__FILE__) . \"/fonts/FF_FONT1-Bold.gdf\");\n        $this->ff_font2_bold =  imageloadfont(dirname(__FILE__) . \"/fonts/FF_FONT2-Bold.gdf\");\n    }\n\n    // Enable interlacing in images\n    function SetInterlace($aFlg=true) {\n        $this->iInterlace=$aFlg;\n    }\n\n    // Should we use anti-aliasing. Note: This really slows down graphics!\n    function SetAntiAliasing($aFlg=true) {\n        $this->use_anti_aliasing = $aFlg;\n        if( function_exists('imageantialias') ) {\n            imageantialias($this->img,$aFlg);\n        }\n        else {\n            JpGraphError::RaiseL(25128);//('The function imageantialias() is not available in your PHP installation. Use the GD version that comes with PHP and not the standalone version.')\n        }\n    }\n\n    function GetAntiAliasing() {\n        return $this->use_anti_aliasing ;\n    }\n\n    function CreateRawCanvas($aWidth=0,$aHeight=0) {\n\n        $aWidth  *= SUPERSAMPLING_SCALE;\n        $aHeight *= SUPERSAMPLING_SCALE;\n\n        if( $aWidth <= 1 || $aHeight <= 1 ) {\n            JpGraphError::RaiseL(25082,$aWidth,$aHeight);//(\"Illegal sizes specified for width or height when creating an image, (width=$aWidth, height=$aHeight)\");\n        }\n\n        $this->img = @imagecreatetruecolor($aWidth, $aHeight);\n        if( !$this->img ) {\n            JpGraphError::RaiseL(25126);\n            //die(\"Can't create truecolor image. Check that you really have GD2 library installed.\");\n        }\n        $this->SetAlphaBlending();\n\n        if( $this->iInterlace ) {\n            imageinterlace($this->img,1);\n        }\n        if( $this->rgb != null ) {\n            $this->rgb->img = $this->img ;\n        }\n        else {\n            $this->rgb = new RGB($this->img);\n        }\n    }\n\n    function CloneCanvasH() {\n        $oldimage = $this->img;\n        $this->CreateRawCanvas($this->width,$this->height);\n        imagecopy($this->img,$oldimage,0,0,0,0,$this->width,$this->height);\n        return $oldimage;\n    }\n\n    function CreateImgCanvas($aWidth=0,$aHeight=0) {\n\n        $old = array($this->img,$this->width,$this->height);\n\n        $aWidth = round($aWidth);\n        $aHeight = round($aHeight);\n\n        $this->width=$aWidth;\n        $this->height=$aHeight;\n\n\n        if( $aWidth==0 || $aHeight==0 ) {\n            // We will set the final size later.\n            // Note: The size must be specified before any other\n            // img routines that stroke anything are called.\n            $this->img = null;\n            $this->rgb = null;\n            return $old;\n        }\n\n        $this->CreateRawCanvas($aWidth,$aHeight);\n        // Set canvas color (will also be the background color for a\n        // a pallett image\n        $this->SetColor($this->canvascolor);\n        $this->FilledRectangle(0,0,$this->width-1,$this->height-1);\n\n        return $old ;\n    }\n\n    function CopyCanvasH($aToHdl,$aFromHdl,$aToX,$aToY,$aFromX,$aFromY,$aWidth,$aHeight,$aw=-1,$ah=-1) {\n        if( $aw === -1 ) {\n            $aw = $aWidth;\n            $ah = $aHeight;\n            $f = 'imagecopyresized';\n        }\n        else {\n            $f = 'imagecopyresampled';\n        }\n        $f($aToHdl,$aFromHdl,(int)$aToX,(int)$aToY,(int)$aFromX,(int)$aFromY, (int)$aWidth,(int)$aHeight,(int)$aw,(int)$ah);\n    }\n\n    function Copy($fromImg,$toX,$toY,$fromX,$fromY,$toWidth,$toHeight,$fromWidth=-1,$fromHeight=-1) {\n        $this->CopyCanvasH($this->img,$fromImg,$toX,$toY,$fromX,$fromY,$toWidth,$toHeight,$fromWidth,$fromHeight);\n    }\n\n    function CopyMerge($fromImg,$toX,$toY,$fromX,$fromY,$toWidth,$toHeight,$fromWidth=-1,$fromHeight=-1,$aMix=100) {\n        if( $aMix == 100 ) {\n            $this->CopyCanvasH($this->img,$fromImg,\n            $toX,$toY,$fromX,$fromY,$toWidth,$toHeight,$fromWidth,$fromHeight);\n        }\n        else {\n            if( ($fromWidth  != -1 && ($fromWidth != $toWidth)) || ($fromHeight != -1 && ($fromHeight != $fromHeight)) ) {\n                // Create a new canvas that will hold the re-scaled original from image\n                if( $toWidth <= 1 || $toHeight <= 1 ) {\n                    JpGraphError::RaiseL(25083);//('Illegal image size when copying image. Size for copied to image is 1 pixel or less.');\n                }\n\n                $tmpimg = @imagecreatetruecolor($toWidth, $toHeight);\n\n                if( $tmpimg < 1 ) {\n                    JpGraphError::RaiseL(25084);//('Failed to create temporary GD canvas. Out of memory ?');\n                }\n                $this->CopyCanvasH($tmpimg,$fromImg,0,0,0,0,\n                $toWidth,$toHeight,$fromWidth,$fromHeight);\n                $fromImg = $tmpimg;\n            }\n            imagecopymerge($this->img,$fromImg,$toX,$toY,$fromX,$fromY,$toWidth,$toHeight,$aMix);\n        }\n    }\n\n    static function GetWidth($aImg) {\n        return imagesx($aImg);\n    }\n\n    static function GetHeight($aImg) {\n        return imagesy($aImg);\n    }\n\n    static function CreateFromString($aStr) {\n        $img = imagecreatefromstring($aStr);\n        if( $img === false ) {\n            JpGraphError::RaiseL(25085);\n            //('An image can not be created from the supplied string. It is either in a format not supported or the string is representing an corrupt image.');\n        }\n        return $img;\n    }\n\n    function SetCanvasH($aHdl) {\n        $this->img = $aHdl;\n        $this->rgb->img = $aHdl;\n    }\n\n    function SetCanvasColor($aColor) {\n        $this->canvascolor = $aColor ;\n    }\n\n    function SetAlphaBlending($aFlg=true) {\n        ImageAlphaBlending($this->img,$aFlg);\n    }\n\n    function SetAutoMargin() {\n        $min_bm=5;\n        $lm = min(40,$this->width/7);\n        $rm = min(20,$this->width/10);\n        $tm = max(5,$this->height/7);\n        $bm = max($min_bm,$this->height/6);\n        $this->SetMargin($lm,$rm,$tm,$bm);\n    }\n\n    //---------------\n    // PUBLIC METHODS\n\n    function SetFont($family,$style=FS_NORMAL,$size=10) {\n        $this->font_family=$family;\n        $this->font_style=$style;\n        $this->font_size=$size*SUPERSAMPLING_SCALE;\n        $this->font_file='';\n        if( ($this->font_family==FF_FONT1 || $this->font_family==FF_FONT2) && $this->font_style==FS_BOLD ){\n            ++$this->font_family;\n        }\n        if( $this->font_family > FF_FONT2+1 ) { // A TTF font so get the font file\n\n            // Check that this PHP has support for TTF fonts\n            if( !function_exists('imagettfbbox') ) {\n                // use internal font when php is configured without '--with-ttf'\n                $this->font_family = FF_FONT1;\n//                JpGraphError::RaiseL(25087);//('This PHP build has not been configured with TTF support. You need to recompile your PHP installation with FreeType support.');\n            } else {\n                $this->font_file = $this->ttf->File($this->font_family,$this->font_style);\n            }\n        }\n    }\n\n    // Get the specific height for a text string\n    function GetTextHeight($txt=\"\",$angle=0) {\n        $tmp = preg_split('/\\n/',$txt ?: '');\n        $n = count($tmp);\n        $m=0;\n        for($i=0; $i< $n; ++$i) {\n            $m = max($m,strlen($tmp[$i]));\n        }\n\n        if( $this->font_family <= FF_FONT2+1 ) {\n            if( $angle==0 ) {\n                $h = imagefontheight($this->font_family);\n                if( $h === false ) {\n                    JpGraphError::RaiseL(25088);//('You have a misconfigured GD font support. The call to imagefontwidth() fails.');\n                }\n\n                return $n*$h;\n            }\n            else {\n                $w = @imagefontwidth($this->font_family);\n                if( $w === false ) {\n                    JpGraphError::RaiseL(25088);//('You have a misconfigured GD font support. The call to imagefontwidth() fails.');\n                }\n\n                return $m*$w;\n            }\n        }\n        else {\n            $bbox = $this->GetTTFBBox($txt,$angle);\n            return $bbox[1]-$bbox[5]+1;\n        }\n    }\n\n    // Estimate font height\n    function GetFontHeight($angle=0) {\n        $txt = \"XOMg\";\n        return $this->GetTextHeight($txt,$angle);\n    }\n\n    // Approximate font width with width of letter \"O\"\n    function GetFontWidth($angle=0) {\n        $txt = 'O';\n        return $this->GetTextWidth($txt,$angle);\n    }\n\n    // Get actual width of text in absolute pixels. Note that the width is the\n    // texts projected with onto the x-axis. Call with angle=0 to get the true\n    // etxt width.\n    function GetTextWidth($txt,$angle=0) {\n\n        $tmp = preg_split('/\\n/',$txt ?: '');\n        $n = count($tmp);\n        if( $this->font_family <= FF_FONT2+1 ) {\n\n            $m=0;\n            for($i=0; $i < $n; ++$i) {\n                $l=strlen($tmp[$i]);\n                if( $l > $m ) {\n                    $m = $l;\n                }\n            }\n\n            if( $angle==0 ) {\n                $w = @imagefontwidth($this->font_family);\n                if( $w === false ) {\n                    JpGraphError::RaiseL(25088);//('You have a misconfigured GD font support. The call to imagefontwidth() fails.');\n                }\n                return $m*$w;\n            }\n            else {\n                // 90 degrees internal so height becomes width\n                $h = @imagefontheight($this->font_family);\n                if( $h === false ) {\n                    JpGraphError::RaiseL(25089);//('You have a misconfigured GD font support. The call to imagefontheight() fails.');\n                }\n                return $n*$h;\n            }\n        }\n        else {\n            // For TTF fonts we must walk through a lines and find the\n            // widest one which we use as the width of the multi-line\n            // paragraph\n            $m=0;\n            for( $i=0; $i < $n; ++$i ) {\n                $bbox = $this->GetTTFBBox($tmp[$i],$angle);\n                $mm =  $bbox[2] - $bbox[0];\n                if( $mm > $m )\n                    $m = $mm;\n            }\n            return $m;\n        }\n    }\n\n\n    // Draw text with a box around it\n    function StrokeBoxedText($x,$y,$txt,$dir=0,$fcolor=\"white\",$bcolor=\"black\",\n                             $shadowcolor=false,$paragraph_align=\"left\",\n                             $xmarg=6,$ymarg=4,$cornerradius=0,$dropwidth=3) {\n\n\t\t$oldx = $this->lastx;\n\t\t$oldy = $this->lasty;\n\n        if( !is_numeric($dir) ) {\n            if( $dir==\"h\" ) $dir=0;\n            elseif( $dir==\"v\" ) $dir=90;\n            else JpGraphError::RaiseL(25090,$dir);//(\" Unknown direction specified in call to StrokeBoxedText() [$dir]\");\n        }\n\n        if( $this->font_family >= FF_FONT0 && $this->font_family <= FF_FONT2+1) {\n            $width=$this->GetTextWidth($txt,$dir) ;\n            $height=$this->GetTextHeight($txt,$dir) ;\n        }\n        else {\n            $width=$this->GetBBoxWidth($txt,$dir) ;\n            $height=$this->GetBBoxHeight($txt,$dir) ;\n        }\n\n        $height += 2*$ymarg;\n        $width  += 2*$xmarg;\n\n        if( $this->text_halign==\"right\" )      $x -= $width;\n        elseif( $this->text_halign==\"center\" ) $x -= $width/2;\n\n        if( $this->text_valign==\"bottom\" )     $y -= $height;\n        elseif( $this->text_valign==\"center\" ) $y -= $height/2;\n\n        $olda = $this->SetAngle(0);\n\n        if( $shadowcolor ) {\n            $this->PushColor($shadowcolor);\n            $this->FilledRoundedRectangle($x-$xmarg+$dropwidth,$y-$ymarg+$dropwidth,\n                                          $x+$width+$dropwidth,$y+$height-$ymarg+$dropwidth,\n                                          $cornerradius);\n            $this->PopColor();\n            $this->PushColor($fcolor);\n            $this->FilledRoundedRectangle($x-$xmarg,$y-$ymarg,\n                                          $x+$width,$y+$height-$ymarg,\n                                          $cornerradius);\n            $this->PopColor();\n            $this->PushColor($bcolor);\n            $this->RoundedRectangle($x-$xmarg,$y-$ymarg,\n                                    $x+$width,$y+$height-$ymarg,$cornerradius);\n            $this->PopColor();\n        }\n        else {\n            if( $fcolor ) {\n                $oc=$this->current_color;\n                $this->SetColor($fcolor);\n                $this->FilledRoundedRectangle($x-$xmarg,$y-$ymarg,$x+$width,$y+$height-$ymarg,$cornerradius);\n                $this->current_color=$oc;\n            }\n            if( $bcolor ) {\n                $oc=$this->current_color;\n                $this->SetColor($bcolor);\n                $this->RoundedRectangle($x-$xmarg,$y-$ymarg,$x+$width,$y+$height-$ymarg,$cornerradius);\n                $this->current_color=$oc;\n            }\n        }\n\n        $h=$this->text_halign;\n        $v=$this->text_valign;\n        $this->SetTextAlign(\"left\",\"top\");\n\n        $debug=false;\n        $this->StrokeText($x, $y, $txt, $dir, $paragraph_align,$debug);\n\n        $bb = array($x-$xmarg,$y+$height-$ymarg,$x+$width,$y+$height-$ymarg,\n                    $x+$width,$y-$ymarg,$x-$xmarg,$y-$ymarg);\n        $this->SetTextAlign($h,$v);\n\n        $this->SetAngle($olda);\n\t\t$this->lastx = $oldx;\n\t\t$this->lasty = $oldy;\n\n        return $bb;\n    }\n\n    // Draw text with a box around it. This time the box will be rotated\n    // with the text. The previous method will just make a larger enough non-rotated\n    // box to hold the text inside.\n    function StrokeBoxedText2($x,$y,$txt,$dir=0,$fcolor=\"white\",$bcolor=\"black\",\n                             $shadowcolor=false,$paragraph_align=\"left\",\n                             $xmarg=6,$ymarg=4,$cornerradius=0,$dropwidth=3) {\n\n       // This version of boxed text will stroke a rotated box round the text\n       // thta will follow the angle of the text.\n       // This has two implications:\n       // 1) This methos will only support TTF fonts\n       // 2) The only two alignment that makes sense are centered or baselined\n\n       if( $this->font_family <= FF_FONT2+1 ) {\n           JpGraphError::RaiseL(25131);//StrokeBoxedText2() Only support TTF fonts and not built in bitmap fonts\n       }\n\n\t\t$oldx = $this->lastx;\n\t\t$oldy = $this->lasty;\n        $dir = $this->NormAngle($dir);\n\n        if( !is_numeric($dir) ) {\n            if( $dir==\"h\" ) $dir=0;\n            elseif( $dir==\"v\" ) $dir=90;\n            else JpGraphError::RaiseL(25090,$dir);//(\" Unknown direction specified in call to StrokeBoxedText() [$dir]\");\n        }\n\n        $width=$this->GetTextWidth($txt,0) + 2*$xmarg;\n        $height=$this->GetTextHeight($txt,0) + 2*$ymarg ;\n        $rect_width=$this->GetBBoxWidth($txt,$dir) ;\n        $rect_height=$this->GetBBoxHeight($txt,$dir) ;\n\n        $baseline_offset = $this->bbox_cache[1]-1;\n\n        if( $this->text_halign==\"center\" ) {\n            if( $dir >= 0 && $dir <= 90 ) {\n\n                $x -= $rect_width/2;\n                $x += sin($dir*M_PI/180)*$height;\n                $y += $rect_height/2;\n\n            } elseif( $dir >= 270 && $dir <= 360 ) {\n\n                $x -= $rect_width/2;\n                $y -= $rect_height/2;\n                $y += cos($dir*M_PI/180)*$height;\n\n            } elseif( $dir >= 90 && $dir <= 180 ) {\n\n                $x += $rect_width/2;\n                $y += $rect_height/2;\n                $y += cos($dir*M_PI/180)*$height;\n\n            }\n            else {\n                // $dir > 180 &&  $dir < 270\n                $x += $rect_width/2;\n                $x += sin($dir*M_PI/180)*$height;\n                $y -= $rect_height/2;\n            }\n        }\n\n        // Rotate the box around this point\n        $this->SetCenter($x,$y);\n        $olda = $this->SetAngle(-$dir);\n\n        // We need to use adjusted coordinats for the box to be able\n        // to draw the box below the baseline. This cannot be done before since\n        // the rotating point must be the original x,y since that is arounbf the\n        // point where the text will rotate and we cannot change this since\n        // that is where the GD/GreeType will rotate the text\n\n\n        // For smaller <14pt font we need to do some additional\n        // adjustments to make it look good\n        if( $this->font_size < 14 ) {\n            $x -= 2;\n            $y += 2;\n        }\n        else {\n          //  $y += $baseline_offset;\n        }\n\n        if( $shadowcolor ) {\n            $this->PushColor($shadowcolor);\n            $this->FilledRectangle($x-$xmarg+$dropwidth,$y+$ymarg+$dropwidth-$height,\n                                          $x+$width+$dropwidth,$y+$ymarg+$dropwidth);\n                                          //$cornerradius);\n            $this->PopColor();\n            $this->PushColor($fcolor);\n            $this->FilledRectangle($x-$xmarg, $y+$ymarg-$height,\n                                          $x+$width, $y+$ymarg);\n                                          //$cornerradius);\n            $this->PopColor();\n            $this->PushColor($bcolor);\n            $this->Rectangle($x-$xmarg,$y+$ymarg-$height,\n                                    $x+$width,$y+$ymarg);\n                                    //$cornerradius);\n            $this->PopColor();\n        }\n        else {\n            if( $fcolor ) {\n                $oc=$this->current_color;\n                $this->SetColor($fcolor);\n                $this->FilledRectangle($x-$xmarg,$y+$ymarg-$height,$x+$width,$y+$ymarg);//,$cornerradius);\n                $this->current_color=$oc;\n            }\n            if( $bcolor ) {\n                $oc=$this->current_color;\n                $this->SetColor($bcolor);\n                $this->Rectangle($x-$xmarg,$y+$ymarg-$height,$x+$width,$y+$ymarg);//,$cornerradius);\n                $this->current_color=$oc;\n            }\n        }\n\n        if( $this->font_size < 14 ) {\n            $x += 2;\n            $y -= 2;\n        }\n        else {\n\n            // Restore the original y before we stroke the text\n           // $y -= $baseline_offset;\n\n        }\n\n        $this->SetCenter(0,0);\n        $this->SetAngle($olda);\n\n        $h=$this->text_halign;\n        $v=$this->text_valign;\n        if( $this->text_halign == 'center') {\n            $this->SetTextAlign('center','basepoint');\n        }\n        else {\n            $this->SetTextAlign('basepoint','basepoint');\n        }\n\n        $debug=false;\n        $this->StrokeText($x, $y, $txt, $dir, $paragraph_align,$debug);\n\n        $bb = array($x-$xmarg, $y+$height-$ymarg,\n                    $x+$width, $y+$height-$ymarg,\n                    $x+$width, $y-$ymarg,\n                    $x-$xmarg, $y-$ymarg);\n\n        $this->SetTextAlign($h,$v);\n        $this->SetAngle($olda);\n\n\t\t$this->lastx = $oldx;\n\t\t$this->lasty = $oldy;\n\n        return $bb;\n    }\n\n    // Set text alignment\n    function SetTextAlign($halign,$valign=\"bottom\") {\n        $this->text_halign=$halign;\n        $this->text_valign=$valign;\n    }\n\n    function _StrokeBuiltinFont($x,$y,$txt,$dir,$paragraph_align,&$aBoundingBox,$aDebug=false) {\n\n        if( is_numeric($dir) && $dir!=90 && $dir!=0)\n        JpGraphError::RaiseL(25091);//(\" Internal font does not support drawing text at arbitrary angle. Use TTF fonts instead.\");\n\n        $h=$this->GetTextHeight($txt);\n        $fh=$this->GetFontHeight();\n        $w=$this->GetTextWidth($txt);\n\n        if( $this->text_halign==\"right\") {\n            $x -= $dir==0 ? $w : $h;\n        }\n        elseif( $this->text_halign==\"center\" ) {\n            // For center we subtract 1 pixel since this makes the middle\n            // be prefectly in the middle\n            $x -= $dir==0 ? $w/2-1 : $h/2;\n        }\n        if( $this->text_valign==\"top\" ) {\n            $y += $dir==0 ? $h : $w;\n        }\n        elseif( $this->text_valign==\"center\" ) {\n            $y += $dir==0 ? $h/2 : $w/2;\n        }\n\n        $use_font = $this->font_family;\n\n        if( $dir==90 ) {\n            imagestringup($this->img,$use_font,(int)$x,(int)$y,$txt,$this->current_color);\n            $aBoundingBox = array(round($x),round($y),round($x),round($y-$w),round($x+$h),round($y-$w),round($x+$h),round($y));\n            if( $aDebug ) {\n                // Draw bounding box\n                $this->PushColor('green');\n                $this->Polygon($aBoundingBox,true);\n                $this->PopColor();\n            }\n        }\n        else {\n            if( preg_match('/\\n/',$txt ?: '') ) {\n                $tmp = preg_split('/\\n/',$txt);\n                for($i=0; $i < count($tmp); ++$i) {\n                    $w1 = $this->GetTextWidth($tmp[$i]);\n                    if( $paragraph_align==\"left\" ) {\n                        imagestring($this->img,$use_font,(int)$x,(int)($y-$h+1+$i*$fh),$tmp[$i],$this->current_color); //MiToTeam: explicit type casting\n                    }\n                    elseif( $paragraph_align==\"right\" ) {\n                        imagestring($this->img,$use_font,(int)($x+($w-$w1)),(int)($y-$h+1+$i*$fh),$tmp[$i],$this->current_color); //MiToTeam: explicit type casting\n                    }\n                    else {\n                        imagestring($this->img,$use_font,(int)($x+$w/2-$w1/2),(int)($y-$h+1+$i*$fh),$tmp[$i],$this->current_color); //MiToTeam: explicit type casting\n                    }\n                }\n            }\n            else {\n                //Put the text\n                imagestring($this->img,$use_font,(int)$x,(int)($y-$h+1),$txt ?: '',$this->current_color);\n            }\n            if( $aDebug ) {\n                // Draw the bounding rectangle and the bounding box\n                $p1 = array(round($x),round($y),round($x),round($y-$h),round($x+$w),round($y-$h),round($x+$w),round($y));\n\n                // Draw bounding box\n                $this->PushColor('green');\n                $this->Polygon($p1,true);\n                $this->PopColor();\n\n            }\n            $aBoundingBox=array(round($x),round($y),round($x),round($y-$h),round($x+$w),round($y-$h),round($x+$w),round($y));\n        }\n    }\n\n    function AddTxtCR($aTxt) {\n        // If the user has just specified a '\\n'\n        // instead of '\\n\\t' we have to add '\\r' since\n        // the width will be too muchy otherwise since when\n        // we print we stroke the individually lines by hand.\n        $e = explode(\"\\n\",$aTxt);\n        $n = count($e);\n        for($i=0; $i<$n; ++$i) {\n            $e[$i]=str_replace(\"\\r\",\"\",$e[$i]);\n        }\n        return implode(\"\\n\\r\",$e);\n    }\n\n    function NormAngle($a) {\n        // Normalize angle in degrees\n        // Normalize angle to be between 0-360\n        while( $a > 360 )\n            $a -= 360;\n        while( $a < -360 )\n            $a += 360;\n        if( $a < 0 )\n            $a = 360 + $a;\n        return $a;\n    }\n\n    function imagettfbbox_fixed($size, $angle, $fontfile, $text) {\n\n\n        if( ! USE_LIBRARY_IMAGETTFBBOX ) {\n\n            $bbox = @imagettfbbox($size, $angle, $fontfile, $text);\n            if( $bbox === false ) {\n                JpGraphError::RaiseL(25092,$this->font_file);\n                //(\"There is either a configuration problem with TrueType or a problem reading font file (\".$this->font_file.\"). Make sure file exists and is in a readable place for the HTTP process. (If 'basedir' restriction is enabled in PHP then the font file must be located in the document root.). It might also be a wrongly installed FreeType library. Try uppgrading to at least FreeType 2.1.13 and recompile GD with the correct setup so it can find the new FT library.\");\n            }\n            $this->bbox_cache = $bbox;\n            return $bbox;\n        }\n\n        // The built in imagettfbbox is buggy for angles != 0 so\n        // we calculate this manually by getting the bounding box at\n        // angle = 0 and then rotate the bounding box manually\n        $bbox = @imagettfbbox($size, 0, $fontfile, $text);\n        if( $bbox === false ) {\n            JpGraphError::RaiseL(25092,$this->font_file);\n            //(\"There is either a configuration problem with TrueType or a problem reading font file (\".$this->font_file.\"). Make sure file exists and is in a readable place for the HTTP process. (If 'basedir' restriction is enabled in PHP then the font file must be located in the document root.). It might also be a wrongly installed FreeType library. Try uppgrading to at least FreeType 2.1.13 and recompile GD with the correct setup so it can find the new FT library.\");\n        }\n\n        $angle = $this->NormAngle($angle);\n\n        $a = $angle*M_PI/180;\n        $ca = cos($a);\n        $sa = sin($a);\n        $ret = array();\n\n        // We always add 1 pixel to the left since the left edge of the bounding\n        // box is sometimes coinciding with the first pixel of the text\n        //$bbox[0] -= 1;\n        //$bbox[6] -= 1;\n\n        // For roatated text we need to add extra width for rotated\n        // text since the kerning and stroking of the TTF is not the same as for\n        // text at a 0 degree angle\n\n        if( $angle > 0.001 && abs($angle-360) > 0.001 ) {\n            $h = abs($bbox[7]-$bbox[1]);\n            $w = abs($bbox[2]-$bbox[0]);\n\n            $bbox[0] -= 2;\n            $bbox[6] -= 2;\n            // The width is underestimated so compensate for that\n            $bbox[2] += round($w*0.06);\n            $bbox[4] += round($w*0.06);\n\n            // and we also need to compensate with increased height\n            $bbox[5] -= round($h*0.1);\n            $bbox[7] -= round($h*0.1);\n\n            if( $angle > 90 ) {\n                // For angles > 90 we also need to extend the height further down\n                // by the baseline since that is also one more problem\n                $bbox[1] += round($h*0.15);\n                $bbox[3] += round($h*0.15);\n\n                // and also make it slighty less height\n                $bbox[7] += round($h*0.05);\n                $bbox[5] += round($h*0.05);\n\n                // And we need to move the box slightly top the rright (from a tetx perspective)\n                $bbox[0] += round($w*0.02);\n                $bbox[6] += round($w*0.02);\n\n                if( $angle > 180 ) {\n                    // And we need to move the box slightly to the left (from a text perspective)\n                    $bbox[0] -= round($w*0.02);\n                    $bbox[6] -= round($w*0.02);\n                    $bbox[2] -= round($w*0.02);\n                    $bbox[4] -= round($w*0.02);\n\n                }\n\n            }\n            for($i = 0; $i < 7; $i += 2) {\n                $ret[$i] = round($bbox[$i] * $ca + $bbox[$i+1] * $sa);\n                $ret[$i+1] = round($bbox[$i+1] * $ca - $bbox[$i] * $sa);\n            }\n            $this->bbox_cache = $ret;\n            return $ret;\n        }\n        else {\n            $this->bbox_cache = $bbox;\n            return $bbox;\n        }\n    }\n\n    // Deprecated\n    function GetTTFBBox($aTxt,$aAngle=0) {\n        $bbox = $this->imagettfbbox_fixed($this->font_size,$aAngle,$this->font_file,$aTxt);\n         return $bbox;\n    }\n\n    function GetBBoxTTF($aTxt,$aAngle=0) {\n        // Normalize the bounding box to become a minimum\n        // enscribing rectangle\n\n        $aTxt = $this->AddTxtCR($aTxt);\n\n        if( !is_readable($this->font_file) ) {\n            JpGraphError::RaiseL(25093,$this->font_file);\n            //('Can not read font file ('.$this->font_file.') in call to Image::GetBBoxTTF. Please make sure that you have set a font before calling this method and that the font is installed in the TTF directory.');\n        }\n        $bbox = $this->imagettfbbox_fixed($this->font_size,$aAngle,$this->font_file,$aTxt);\n\n        if( $aAngle==0 ) return $bbox;\n\n        if( $aAngle >= 0 ) {\n            if(  $aAngle <= 90 ) { //<=0\n                $bbox = array($bbox[6],$bbox[1],$bbox[2],$bbox[1],\n                              $bbox[2],$bbox[5],$bbox[6],$bbox[5]);\n            }\n            elseif(  $aAngle <= 180 ) { //<= 2\n                $bbox = array($bbox[4],$bbox[7],$bbox[0],$bbox[7],\n                              $bbox[0],$bbox[3],$bbox[4],$bbox[3]);\n            }\n            elseif(  $aAngle <= 270 )  { //<= 3\n                $bbox = array($bbox[2],$bbox[5],$bbox[6],$bbox[5],\n                              $bbox[6],$bbox[1],$bbox[2],$bbox[1]);\n            }\n            else {\n                $bbox = array($bbox[0],$bbox[3],$bbox[4],$bbox[3],\n                              $bbox[4],$bbox[7],$bbox[0],$bbox[7]);\n            }\n        }\n        elseif(  $aAngle < 0 ) {\n            if( $aAngle <= -270 ) { // <= -3\n                $bbox = array($bbox[6],$bbox[1],$bbox[2],$bbox[1],\n                              $bbox[2],$bbox[5],$bbox[6],$bbox[5]);\n            }\n            elseif( $aAngle <= -180 ) { // <= -2\n                $bbox = array($bbox[0],$bbox[3],$bbox[4],$bbox[3],\n                              $bbox[4],$bbox[7],$bbox[0],$bbox[7]);\n            }\n            elseif( $aAngle <= -90 ) { // <= -1\n                $bbox = array($bbox[2],$bbox[5],$bbox[6],$bbox[5],\n                              $bbox[6],$bbox[1],$bbox[2],$bbox[1]);\n            }\n            else {\n                $bbox = array($bbox[0],$bbox[3],$bbox[4],$bbox[3],\n                              $bbox[4],$bbox[7],$bbox[0],$bbox[7]);\n            }\n        }\n        return $bbox;\n    }\n\n    function GetBBoxHeight($aTxt,$aAngle=0) {\n        $box = $this->GetBBoxTTF($aTxt,$aAngle);\n        return abs($box[7]-$box[1]);\n    }\n\n    function GetBBoxWidth($aTxt,$aAngle=0) {\n        $box = $this->GetBBoxTTF($aTxt,$aAngle);\n        return $box[2]-$box[0]+1;\n    }\n\n\n    function _StrokeTTF($x,$y,$txt,$dir,$paragraph_align,&$aBoundingBox,$debug=false) {\n\n        // Setup default inter line margin for paragraphs to be\n        // 3% of the font height.\n        $ConstLineSpacing = 0.03 ;\n\n        // Remember the anchor point before adjustment\n        if( $debug ) {\n            $ox=$x;\n            $oy=$y;\n        }\n\n        if( !preg_match('/\\n/',$txt) || ($dir>0 && preg_match('/\\n/',$txt)) ) {\n            // Format a single line\n\n            $txt = $this->AddTxtCR($txt);\n            $bbox=$this->GetBBoxTTF($txt,$dir);\n            $width  = $this->GetBBoxWidth($txt,$dir);\n            $height = $this->GetBBoxHeight($txt,$dir);\n\n            // The special alignment \"basepoint\" is mostly used internally\n            // in the library. This will put the anchor position at the left\n            // basepoint of the tetx. This is the default anchor point for\n            // TTF text.\n\n            if( $this->text_valign != 'basepoint' ) {\n                // Align x,y ot lower left corner of bbox\n\n\n                if( $this->text_halign=='right' ) {\n                    $x -= $width;\n                    $x -= $bbox[0];\n                }\n                elseif( $this->text_halign=='center' ) {\n                    $x -= $width/2;\n                    $x -= $bbox[0];\n                }\n                elseif( $this->text_halign=='baseline' ) {\n                    // This is only support for text at 90 degree !!\n                    // Do nothing the text is drawn at baseline by default\n                }\n\n                if( $this->text_valign=='top' ) {\n                    $y -= $bbox[1]; // Adjust to bottom of text\n                    $y += $height;\n                }\n                elseif( $this->text_valign=='center' ) {\n                    $y -= $bbox[1]; // Adjust to bottom of text\n                    $y += $height/2;\n                }\n                elseif( $this->text_valign=='baseline' ) {\n                    // This is only support for text at 0 degree !!\n                    // Do nothing the text is drawn at baseline by default\n                }\n            } \n            ImageTTFText ($this->img, $this->font_size, $dir, (int)$x, (int)$y,\n                          $this->current_color,$this->font_file,$txt);\n\n            // Calculate and return the co-ordinates for the bounding box\n            $box = $this->imagettfbbox_fixed($this->font_size,$dir,$this->font_file,$txt);\n            $p1 = array();\n\n            for($i=0; $i < 4; ++$i) {\n                $p1[] = round($box[$i*2]+$x);\n                $p1[] = round($box[$i*2+1]+$y);\n            }\n            $aBoundingBox = $p1;\n\n            // Debugging code to highlight the bonding box and bounding rectangle\n            // For text at 0 degrees the bounding box and bounding rectangle are the\n            // same\n            if( $debug ) {\n            // Draw the bounding rectangle and the bounding box\n\n                $p = array();\n                $p1 = array();\n\n                for($i=0; $i < 4; ++$i) {\n                    $p[] =  $bbox[$i*2]+$x ;\n                    $p[] =  $bbox[$i*2+1]+$y;\n                    $p1[] = $box[$i*2]+$x ;\n                    $p1[] = $box[$i*2+1]+$y ;\n                }\n\n                // Draw bounding box\n                $this->PushColor('green');\n                $this->Polygon($p1,true);\n                $this->PopColor();\n\n                // Draw bounding rectangle\n                $this->PushColor('darkgreen');\n                $this->Polygon($p,true);\n                $this->PopColor();\n\n                // Draw a cross at the anchor point\n                $this->PushColor('red');\n                $this->Line($ox-15,$oy,$ox+15,$oy);\n                $this->Line($ox,$oy-15,$ox,$oy+15);\n                $this->PopColor();\n            }\n        }\n        else {\n            // Format a text paragraph\n            $fh=$this->GetFontHeight();\n\n            // Line margin is 25% of font height\n            $linemargin=round($fh*$ConstLineSpacing);\n            $fh += $linemargin;\n            $w=$this->GetTextWidth($txt);\n\n            $y -= $linemargin/2;\n            $tmp = preg_split('/\\n/',$txt);\n            $nl = count($tmp);\n            $h = $nl * $fh;\n\n            if( $this->text_halign=='right') {\n                $x -= $dir==0 ? $w : $h;\n            }\n            elseif( $this->text_halign=='center' ) {\n                $x -= $dir==0 ? $w/2 : $h/2;\n            }\n\n            if( $this->text_valign=='top' ) {\n                $y += $dir==0 ? $h : $w;\n            }\n            elseif( $this->text_valign=='center' ) {\n                $y += $dir==0 ? $h/2 : $w/2;\n            }\n\n            // Here comes a tricky bit.\n            // Since we have to give the position for the string at the\n            // baseline this means thaht text will move slightly up\n            // and down depending on any of it's character descend below\n            // the baseline, for example a 'g'. To adjust the Y-position\n            // we therefore adjust the text with the baseline Y-offset\n            // as used for the current font and size. This will keep the\n            // baseline at a fixed positoned disregarding the actual\n            // characters in the string.\n            $standardbox = $this->GetTTFBBox('Gg',$dir);\n            $yadj = $standardbox[1];\n            $xadj = $standardbox[0];\n            $aBoundingBox = array();\n            for($i=0; $i < $nl; ++$i) {\n                $wl = $this->GetTextWidth($tmp[$i]);\n                $bbox = $this->GetTTFBBox($tmp[$i],$dir);\n                if( $paragraph_align=='left' ) {\n                    $xl = $x;\n                }\n                elseif( $paragraph_align=='right' ) {\n                    $xl = $x + ($w-$wl);\n                }\n                else {\n                    // Center\n                    $xl = $x + $w/2 - $wl/2 ;\n                }\n\n                // In theory we should adjust with full pre-lead to get the lines\n                // lined up but this doesn't look good so therfore we only adjust with\n                // half th pre-lead\n                $xl -= $bbox[0]/2;\n                $yl = $y - $yadj;\n                //$xl = $xl- $xadj;\n                ImageTTFText($this->img, $this->font_size, $dir, (int)$xl, (int)($yl-($h-$fh)+$fh*$i),\n                             $this->current_color,$this->font_file,$tmp[$i]);\n\n               // echo \"xl=$xl,\".$tmp[$i].\" <br>\";\n                if( $debug  ) {\n                    // Draw the bounding rectangle around each line\n                    $box=@ImageTTFBBox($this->font_size,$dir,$this->font_file,$tmp[$i]);\n                    $p = array();\n                    for($j=0; $j < 4; ++$j) {\n                        $p[] = $bbox[$j*2]+$xl;\n                        $p[] = $bbox[$j*2+1]+$yl-($h-$fh)+$fh*$i;\n                    }\n\n                    // Draw bounding rectangle\n                    $this->PushColor('darkgreen');\n                    $this->Polygon($p,true);\n                    $this->PopColor();\n                }\n            }\n\n            // Get the bounding box\n            $bbox = $this->GetBBoxTTF($txt,$dir);\n            for($j=0; $j < 4; ++$j) {\n                $bbox[$j*2]+= round($x);\n                $bbox[$j*2+1]+= round($y - ($h-$fh) - $yadj);\n            }\n            $aBoundingBox = $bbox;\n\n            if( $debug ) {\n                // Draw a cross at the anchor point\n                $this->PushColor('red');\n                $this->Line($ox-25,$oy,$ox+25,$oy);\n                $this->Line($ox,$oy-25,$ox,$oy+25);\n                $this->PopColor();\n            }\n\n        }\n    }\n\n    function StrokeText($x,$y,$txt,$dir=0,$paragraph_align=\"left\",$debug=false) {\n\n        $x = round($x);\n        $y = round($y);\n\n        // Do special language encoding\n        $txt = $this->langconv->Convert($txt,$this->font_family);\n\n        if( !is_numeric($dir) ) {\n            JpGraphError::RaiseL(25094);//(\" Direction for text most be given as an angle between 0 and 90.\");\n        }\n\n        if( $this->font_family >= FF_FONT0 && $this->font_family <= FF_FONT2+1) {\n            $this->_StrokeBuiltinFont($x,$y,$txt,$dir,$paragraph_align,$boundingbox,$debug);\n        }\n        elseif( $this->font_family >= _FIRST_FONT && $this->font_family <= _LAST_FONT)  {\n            $this->_StrokeTTF($x,$y,$txt,$dir,$paragraph_align,$boundingbox,$debug);\n        }\n        else {\n            JpGraphError::RaiseL(25095);//(\" Unknown font font family specification. \");\n        }\n        return $boundingbox;\n    }\n\n    function SetMargin($lm,$rm,$tm,$bm) {\n\n        $this->left_margin=$lm;\n        $this->right_margin=$rm;\n        $this->top_margin=$tm;\n        $this->bottom_margin=$bm;\n\n        $this->plotwidth  = $this->width  - $this->left_margin - $this->right_margin;\n        $this->plotheight = $this->height - $this->top_margin  - $this->bottom_margin;\n\n        if( $this->width  > 0 && $this->height > 0 ) {\n            if( $this->plotwidth < 0  || $this->plotheight < 0 ) {\n            \tJpGraphError::RaiseL(25130, $this->plotwidth, $this->plotheight);\n                //JpGraphError::raise(\"To small plot area. ($lm,$rm,$tm,$bm : $this->plotwidth x $this->plotheight). With the given image size and margins there is to little space left for the plot. Increase the plot size or reduce the margins.\");\n            }\n        }\n    }\n\n    function SetTransparent($color) {\n        imagecolortransparent ($this->img,$this->rgb->allocate($color));\n    }\n\n    function SetColor($color,$aAlpha=0) {\n        $this->current_color_name = $color;\n        $this->current_color=$this->rgb->allocate($color,$aAlpha);\n        if( $this->current_color == -1 ) {\n            $tc=imagecolorstotal($this->img);\n            JpGraphError::RaiseL(25096);\n            //(\"Can't allocate any more colors. Image has already allocated maximum of <b>$tc colors</b>. This might happen if you have anti-aliasing turned on together with a background image or perhaps gradient fill since this requires many, many colors. Try to turn off anti-aliasing. If there is still a problem try downgrading the quality of the background image to use a smaller pallete to leave some entries for your graphs. You should try to limit the number of colors in your background image to 64. If there is still problem set the constant DEFINE(\\\"USE_APPROX_COLORS\\\",true); in jpgraph.php This will use approximative colors when the palette is full. Unfortunately there is not much JpGraph can do about this since the palette size is a limitation of current graphic format and what the underlying GD library suppports.\");\n        }\n        return $this->current_color;\n    }\n\n    function PushColor($color) {\n        if( $color != \"\" ) {\n            $this->colorstack[$this->colorstackidx]=$this->current_color_name;\n            $this->colorstack[$this->colorstackidx+1]=$this->current_color;\n            $this->colorstackidx+=2;\n            $this->SetColor($color);\n        }\n        else {\n            JpGraphError::RaiseL(25097);//(\"Color specified as empty string in PushColor().\");\n        }\n    }\n\n    function PopColor() {\n        if( $this->colorstackidx < 1 ) {\n            JpGraphError::RaiseL(25098);//(\" Negative Color stack index. Unmatched call to PopColor()\");\n        }\n        $this->current_color=$this->colorstack[--$this->colorstackidx];\n        $this->current_color_name=$this->colorstack[--$this->colorstackidx];\n    }\n\n\n    function SetLineWeight($weight) {\n        $old = $this->line_weight;\n        imagesetthickness($this->img,$weight);\n        $this->line_weight = $weight;\n        return $old;\n    }\n\n    function SetStartPoint($x,$y) {\n        $this->lastx=round($x);\n        $this->lasty=round($y);\n    }\n\n    function Arc($cx,$cy,$w,$h,$s,$e) {\n        // GD Arc doesn't like negative angles\n        while( $s < 0) $s += 360;\n        while( $e < 0) $e += 360;\n        imagearc($this->img,round($cx),round($cy),round($w),round($h),$s,$e,$this->current_color);\n    }\n\n    function FilledArc($xc,$yc,$w,$h,$s,$e,$style='') {\n        $s = round($s);\n        $e = round($e);\n        while( $s < 0 ) $s += 360;\n        while( $e < 0 ) $e += 360;\n        if( $style=='' )\n        $style=IMG_ARC_PIE;\n        if( abs($s-$e) > 0 ) {\n            imagefilledarc($this->img,round($xc),round($yc),round($w),round($h),$s,$e,$this->current_color,$style);\n//            $this->DrawImageSmoothArc($this->img,round($xc),round($yc),round($w),round($h),$s,$e,$this->current_color,$style);\n        }\n    }\n\n    function FilledCakeSlice($cx,$cy,$w,$h,$s,$e) {\n        $this->CakeSlice($cx,$cy,$w,$h,$s,$e,$this->current_color_name);\n    }\n\n    function CakeSlice($xc,$yc,$w,$h,$s,$e,$fillcolor=\"\",$arccolor=\"\") {\n        $s = round($s); $e = round($e);\n        $w = round($w); $h = round($h);\n        $xc = round($xc); $yc = round($yc);\n        if( $s == $e ) {\n            // A full circle. We draw this a plain circle\n            $this->PushColor($fillcolor);\n            imagefilledellipse($this->img,$xc,$yc,2*$w,2*$h,$this->current_color);\n\n            // If antialiasing is used then we often don't have any color no the surrounding\n            // arc. So, we need to check for this special case so we don't send an empty\n            // color to the push function. In this case we use the fill color for the arc as well\n            if( $arccolor != '' ) {\n                $this->PopColor();\n                $this->PushColor($arccolor);\n            }\n            imageellipse($this->img,$xc,$yc,2*$w,2*$h,$this->current_color);\n            $this->Line($xc,$yc,cos($s*M_PI/180)*$w+$xc,$yc+sin($s*M_PI/180)*$h);\n            $this->PopColor();\n        }\n        else {\n            $this->PushColor($fillcolor);\n            $this->FilledArc($xc,$yc,2*$w,2*$h,$s,$e);\n            $this->PopColor();\n            if( $arccolor != \"\" ) {\n                $this->PushColor($arccolor);\n                // We add 2 pixels to make the Arc() better aligned with\n                // the filled arc.\n                imagefilledarc($this->img,$xc,$yc,2*$w,2*$h,$s,$e,$this->current_color,IMG_ARC_NOFILL | IMG_ARC_EDGED ) ;\n                $this->PopColor();\n            }\n        }\n    }\n\n    function Ellipse($xc,$yc,$w,$h) {\n        $this->Arc($xc,$yc,$w,$h,0,360);\n    }\n\n    function Circle($xc,$yc,$r) {\n        imageellipse($this->img,round($xc),round($yc),(float)$r*2,(float)$r*2,$this->current_color); //MiToTeam: explicit type casting\n//        $this->DrawImageSmoothArc($this->img,round($xc),round($yc),$r*2+1,$r*2+1,0,360,$this->current_color);\n//        $this->imageSmoothCircle($this->img, round($xc),round($yc), $r*2+1, $this->current_color);\n    }\n\n    function FilledCircle($xc,$yc,$r) {\n        imagefilledellipse($this->img,round($xc),round($yc),2*(float)$r,2*(float)$r,$this->current_color); //MiToTeam: explicit type casting\n//        $this->DrawImageSmoothArc($this->img, round($xc), round($yc), 2*$r, 2*$r, 0, 360, $this->current_color);\n    }\n\n    // Linear Color InterPolation\n    function lip($f,$t,$p) {\n        $p = round($p,1);\n        $r = $f[0] + ($t[0]-$f[0])*$p;\n        $g = $f[1] + ($t[1]-$f[1])*$p;\n        $b = $f[2] + ($t[2]-$f[2])*$p;\n        return array($r,$g,$b);\n    }\n\n    // Set line style dashed, dotted etc\n    function SetLineStyle($s) {\n        if( is_numeric($s) ) {\n            if( $s<1 || $s>4 ) {\n                JpGraphError::RaiseL(25101,$s);//(\" Illegal numeric argument to SetLineStyle(): ($s)\");\n            }\n        }\n        elseif( is_string($s) ) {\n            if( $s == \"solid\" ) $s=1;\n            elseif( $s == \"dotted\" ) $s=2;\n            elseif( $s == \"dashed\" ) $s=3;\n            elseif( $s == \"longdashed\" ) $s=4;\n            else {\n                JpGraphError::RaiseL(25102,$s);//(\" Illegal string argument to SetLineStyle(): $s\");\n            }\n        }\n        else {\n            JpGraphError::RaiseL(25103,$s);//(\" Illegal argument to SetLineStyle $s\");\n        }\n        $old = $this->line_style;\n        $this->line_style=$s;\n        return $old;\n    }\n\n    // Same as Line but take the line_style into account\n    function StyleLine($x1,$y1,$x2,$y2,$aStyle='', $from_grid_class = false) {\n        if( $this->line_weight <= 0 ) return;\n\n        if( $aStyle === '' ) {\n            $aStyle = $this->line_style;\n        }\n\n        $dashed_line_method = 'DashedLine';\n        if ($from_grid_class) {\n            $dashed_line_method = 'DashedLineForGrid';\n        }\n\n        // Add error check since dashed line will only work if anti-alias is disabled\n        // this is a limitation in GD\n\n        if( $aStyle == 1 ) {\n            // Solid style. We can handle anti-aliasing for this\n            $this->Line($x1,$y1,$x2,$y2);\n        }\n        else {\n            // Since the GD routines doesn't handle AA for styled line\n            // we have no option than to turn it off to get any lines at\n            // all if the weight > 1\n            $oldaa = $this->GetAntiAliasing();\n            if( $oldaa && $this->line_weight > 1 ) {\n                 $this->SetAntiAliasing(false);\n            }\n\n            switch( $aStyle ) {\n                case 2: // Dotted\n                    $this->$dashed_line_method($x1,$y1,$x2,$y2,2,6);\n                    break;\n                case 3: // Dashed\n                    $this->$dashed_line_method($x1,$y1,$x2,$y2,5,9);\n                    break;\n                case 4: // Longdashes\n                    $this->$dashed_line_method($x1,$y1,$x2,$y2,9,13);\n                    break;\n                default:\n                    JpGraphError::RaiseL(25104,$this->line_style);//(\" Unknown line style: $this->line_style \");\n                    break;\n            }\n            if( $oldaa ) {\n                $this->SetAntiAliasing(true);\n            }\n        }\n    }\n\n    function DashedLine($x1,$y1,$x2,$y2,$dash_length=1,$dash_space=4) {\n\n        if( $this->line_weight <= 0 ) return;\n\n        // Add error check to make sure anti-alias is not enabled.\n        // Dashed line does not work with anti-alias enabled. This\n        // is a limitation in GD.\n        if( $this->use_anti_aliasing ) {\n//            JpGraphError::RaiseL(25129); // Anti-alias can not be used with dashed lines. Please disable anti-alias or use solid lines.\n        }\n\n        $x1 = round($x1);\n        $x2 = round($x2);\n        $y1 = round($y1);\n        $y2 = round($y2);\n\n        $dash_length *= SUPERSAMPLING_SCALE;\n        $dash_space  *= SUPERSAMPLING_SCALE;\n\n        $style = array_fill(0,$dash_length,$this->current_color);\n        $style = array_pad($style,$dash_space,IMG_COLOR_TRANSPARENT);\n        imagesetstyle($this->img, $style);\n        imageline($this->img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);\n\n        $this->lastx = $x2;\n        $this->lasty = $y2;\n    }\n\n    function DashedLineForGrid($x1,$y1,$x2,$y2,$dash_length=1,$dash_space=4) {\n\n        if( $this->line_weight <= 0 ) return;\n\n        // Add error check to make sure anti-alias is not enabled.\n        // Dashed line does not work with anti-alias enabled. This\n        // is a limitation in GD.\n        if( $this->use_anti_aliasing ) {\n//            JpGraphError::RaiseL(25129); // Anti-alias can not be used with dashed lines. Please disable anti-alias or use solid lines.\n        }\n\n        $x1 = round($x1);\n        $x2 = round($x2);\n        $y1 = round($y1);\n        $y2 = round($y2);\n\n        /*\n        $dash_length *= $this->scale;\n        $dash_space  *= $this->scale;\n        */\n\n        $dash_length = 2;\n        $dash_length = 4;\n        imagesetthickness($this->img, 1);\n        $style = array_fill(0,$dash_length, $this->current_color); //hexdec('CCCCCC'));\n        $style = array_pad($style,$dash_space,IMG_COLOR_TRANSPARENT);\n        imagesetstyle($this->img, $style);\n        imageline($this->img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);\n\n        $this->lastx = $x2;\n        $this->lasty = $y2;\n    }\n\n    function Line($x1,$y1,$x2,$y2) {\n\n        if( $this->line_weight <= 0 ) return;\n\n        $x1 = round($x1);\n        $x2 = round($x2);\n        $y1 = round($y1);\n        $y2 = round($y2);\n\n        imageline($this->img,$x1,$y1,$x2,$y2,$this->current_color);\n//        $this->DrawLine($this->img, $x1, $y1, $x2, $y2, $this->line_weight, $this->current_color);\n        $this->lastx=$x2;\n        $this->lasty=$y2;\n    }\n\n    function Polygon($p,$closed=FALSE,$fast=FALSE) {\n\n        if( $this->line_weight <= 0 ) return;\n\n        $n=count($p);\n        $oldx = $p[0];\n        $oldy = $p[1];\n        if( $fast ) {\n            for( $i=2; $i < $n; $i+=2 ) {\n                imageline($this->img,$oldx,$oldy,$p[$i],$p[$i+1],$this->current_color);\n                $oldx = $p[$i];\n                $oldy = $p[$i+1];\n            }\n            if( $closed ) {\n                imageline($this->img,$p[$n*2-2],$p[$n*2-1],$p[0],$p[1],$this->current_color);\n            }\n        }\n        else {\n            for( $i=2; $i < $n; $i+=2 ) {\n                $this->StyleLine($oldx,$oldy,$p[$i],$p[$i+1]);\n                $oldx = $p[$i];\n                $oldy = $p[$i+1];\n            }\n            if( $closed ) {\n                $this->StyleLine($oldx,$oldy,$p[0],$p[1]);\n            }\n        }\n    }\n\n    function FilledPolygon($pts) {\n        $n=count($pts);\n        if( $n == 0 ) {\n            JpGraphError::RaiseL(25105);//('NULL data specified for a filled polygon. Check that your data is not NULL.');\n        }\n        for($i=0; $i < $n; ++$i) {\n            $pts[$i] = round($pts[$i]);\n        }\n        $old = $this->line_weight;\n        imagesetthickness($this->img,1);\n        if (CheckPHPVersion('8.1.0')) {\n            imagefilledpolygon($this->img,$pts,$this->current_color);\n        } else {\n            imagefilledpolygon($this->img,$pts,count($pts)/2,$this->current_color);\n        }\n        $this->line_weight = $old;\n        imagesetthickness($this->img,$old);\n    }\n\n    function Rectangle($xl,$yu,$xr,$yl) {\n        $this->Polygon(array($xl,$yu,$xr,$yu,$xr,$yl,$xl,$yl,$xl,$yu));\n    }\n\n    function FilledRectangle($xl,$yu,$xr,$yl) {\n        $this->FilledPolygon(array($xl,$yu,$xr,$yu,$xr,$yl,$xl,$yl));\n    }\n\n    function FilledRectangle2($xl,$yu,$xr,$yl,$color1,$color2,$style=1) {\n        // Fill a rectangle with lines of two colors\n        if( $style===1 ) {\n            // Horizontal stripe\n            if( $yl < $yu ) {\n                $t = $yl; $yl=$yu; $yu=$t;\n            }\n            for( $y=$yu; $y <= $yl; ++$y) {\n                $this->SetColor($color1);\n                $this->Line($xl,$y,$xr,$y);\n                ++$y;\n                $this->SetColor($color2);\n                $this->Line($xl,$y,$xr,$y);\n            }\n        }\n        else {\n            if( $xl < $xl ) {\n                $t = $xl; $xl=$xr; $xr=$t;\n            }\n            for( $x=$xl; $x <= $xr; ++$x) {\n                $this->SetColor($color1);\n                $this->Line($x,$yu,$x,$yl);\n                ++$x;\n                $this->SetColor($color2);\n                $this->Line($x,$yu,$x,$yl);\n            }\n        }\n    }\n\n    function ShadowRectangle($xl,$yu,$xr,$yl,$fcolor=false,$shadow_width=4,$shadow_color='darkgray',$useAlpha=true) {\n        // This is complicated by the fact that we must also handle the case where\n        // the reactangle has no fill color\n        $xl = floor($xl);\n        $yu = floor($yu);\n        $xr = floor($xr);\n        $yl = floor($yl);\n        $this->PushColor($shadow_color);\n        $shadowAlpha=0;\n        $this->SetLineWeight(1);\n        $this->SetLineStyle('solid');\n        $basecolor = $this->rgb->Color($shadow_color);\n        $shadow_color = array($basecolor[0],$basecolor[1],$basecolor[2],);\n        for( $i=0; $i < $shadow_width; ++$i ) {\n            $this->SetColor($shadow_color,$shadowAlpha);\n            $this->Line($xr-$shadow_width+$i,   $yu+$shadow_width,\n                        $xr-$shadow_width+$i,   $yl-$shadow_width-1+$i);\n            $this->Line($xl+$shadow_width,   $yl-$shadow_width+$i,\n                        $xr-$shadow_width+$i,   $yl-$shadow_width+$i);\n            if( $useAlpha ) $shadowAlpha += 1.0/$shadow_width;\n        }\n\n        $this->PopColor();\n        if( $fcolor==false ) {\n            $this->Rectangle($xl,$yu,$xr-$shadow_width-1,$yl-$shadow_width-1);\n        }\n        else {\n            $this->PushColor($fcolor);\n            $this->FilledRectangle($xl,$yu,$xr-$shadow_width-1,$yl-$shadow_width-1);\n            $this->PopColor();\n            $this->Rectangle($xl,$yu,$xr-$shadow_width-1,$yl-$shadow_width-1);\n        }\n    }\n\n    function FilledRoundedRectangle($xt,$yt,$xr,$yl,$r=5) {\n        if( $r==0 ) {\n            $this->FilledRectangle($xt,$yt,$xr,$yl);\n            return;\n        }\n\n        // To avoid overlapping fillings (which will look strange\n        // when alphablending is enabled) we have no choice but\n        // to fill the five distinct areas one by one.\n\n        // Center square\n        $this->FilledRectangle($xt+$r,$yt+$r,$xr-$r,$yl-$r);\n        // Top band\n        $this->FilledRectangle($xt+$r,$yt,$xr-$r,$yt+$r);\n        // Bottom band\n        $this->FilledRectangle($xt+$r,$yl-$r,$xr-$r,$yl);\n        // Left band\n        $this->FilledRectangle($xt,$yt+$r,$xt+$r,$yl-$r);\n        // Right band\n        $this->FilledRectangle($xr-$r,$yt+$r,$xr,$yl-$r);\n\n        // Topleft & Topright arc\n        $this->FilledArc($xt+$r,$yt+$r,$r*2,$r*2,180,270);\n        $this->FilledArc($xr-$r,$yt+$r,$r*2,$r*2,270,360);\n\n        // Bottomleft & Bottom right arc\n        $this->FilledArc($xt+$r,$yl-$r,$r*2,$r*2,90,180);\n        $this->FilledArc($xr-$r,$yl-$r,$r*2,$r*2,0,90);\n\n    }\n\n    function RoundedRectangle($xt,$yt,$xr,$yl,$r=5) {\n\n        if( $r==0 ) {\n            $this->Rectangle($xt,$yt,$xr,$yl);\n            return;\n        }\n\n        // Top & Bottom line\n        $this->Line($xt+$r,$yt,$xr-$r,$yt);\n        $this->Line($xt+$r,$yl,$xr-$r,$yl);\n\n        // Left & Right line\n        $this->Line($xt,$yt+$r,$xt,$yl-$r);\n        $this->Line($xr,$yt+$r,$xr,$yl-$r);\n\n        // Topleft & Topright arc\n        $this->Arc($xt+$r,$yt+$r,$r*2,$r*2,180,270);\n        $this->Arc($xr-$r,$yt+$r,$r*2,$r*2,270,360);\n\n        // Bottomleft & Bottomright arc\n        $this->Arc($xt+$r,$yl-$r,$r*2,$r*2,90,180);\n        $this->Arc($xr-$r,$yl-$r,$r*2,$r*2,0,90);\n    }\n\n    function FilledBevel($x1,$y1,$x2,$y2,$depth=2,$color1='white@0.4',$color2='darkgray@0.4') {\n        $this->FilledRectangle($x1,$y1,$x2,$y2);\n        $this->Bevel($x1,$y1,$x2,$y2,$depth,$color1,$color2);\n    }\n\n    function Bevel($x1,$y1,$x2,$y2,$depth=2,$color1='white@0.4',$color2='black@0.5') {\n        $this->PushColor($color1);\n        for( $i=0; $i < $depth; ++$i ) {\n            $this->Line($x1+$i,$y1+$i,$x1+$i,$y2-$i);\n            $this->Line($x1+$i,$y1+$i,$x2-$i,$y1+$i);\n        }\n        $this->PopColor();\n\n        $this->PushColor($color2);\n        for( $i=0; $i < $depth; ++$i ) {\n            $this->Line($x1+$i,$y2-$i,$x2-$i,$y2-$i);\n            $this->Line($x2-$i,$y1+$i,$x2-$i,$y2-$i-1);\n        }\n        $this->PopColor();\n    }\n\n    function StyleLineTo($x,$y) {\n        $this->StyleLine($this->lastx,$this->lasty,$x,$y);\n        $this->lastx=$x;\n        $this->lasty=$y;\n    }\n\n    function LineTo($x,$y) {\n        $this->Line($this->lastx,$this->lasty,$x,$y);\n        $this->lastx=$x;\n        $this->lasty=$y;\n    }\n\n    function Point($x,$y) {\n        imagesetpixel($this->img,round($x),round($y),$this->current_color);\n    }\n\n    function Fill($x,$y) {\n        imagefill($this->img,round($x),round($y),$this->current_color);\n    }\n\n    function FillToBorder($x,$y,$aBordColor) {\n        $bc = $this->rgb->allocate($aBordColor);\n        if( $bc == -1 ) {\n            JpGraphError::RaiseL(25106);//('Image::FillToBorder : Can not allocate more colors');\n        }\n        imagefilltoborder($this->img,round($x),round($y),$bc,$this->current_color);\n    }\n\n    function SetExpired($aFlg=true) {\n        $this->expired = $aFlg;\n    }\n\n    // Generate image header\n    function Headers() {\n\n        // In case we are running from the command line with the client version of\n        // PHP we can't send any headers.\n        $sapi = php_sapi_name();\n        if( $sapi == 'cli' ) return;\n\n        // These parameters are set by headers_sent() but they might cause\n        // an undefined variable error unless they are initilized\n        $file='';\n        $lineno='';\n        if( headers_sent($file,$lineno) ) {\n            $file=basename($file);\n            $t = new ErrMsgText();\n            $msg = $t->Get(10,$file,$lineno);\n            die($msg);\n        }\n\n        if ($this->expired) {\n            header(\"Expires: Mon, 26 Jul 1997 05:00:00 GMT\");\n            header(\"Last-Modified: \" . gmdate(\"D, d M Y H:i:s\") . \"GMT\");\n            header(\"Cache-Control: no-cache, must-revalidate\");\n            header(\"Pragma: no-cache\");\n        }\n        header(\"Content-type: image/$this->img_format\");\n    }\n\n    // Adjust image quality for formats that allow this\n    function SetQuality($q) {\n        $this->quality = $q;\n    }\n\n    // Stream image to browser or to file\n    function Stream($aFile=NULL) {\n        $this->DoSupersampling();\n\n        $func=\"image\".$this->img_format;\n        if( $this->img_format==\"jpeg\" && $this->quality != null ) {\n            $res = @$func($this->img,$aFile,$this->quality);\n\n\t\t\tif(!$res){\n\t\t\t\tif($aFile != NULL){\n                    JpGraphError::RaiseL(25107,$aFile);//(\"Can't write to file '$aFile'. Check that the process running PHP has enough permission.\");\n\t\t\t\t}else{\n                    JpGraphError::RaiseL(25108);//(\"Can't stream image. This is most likely due to a faulty PHP/GD setup. Try to recompile PHP and use the built-in GD library that comes with PHP.\");\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n        else {\n            if( $aFile != NULL ) {\n                $res = @$func($this->img,$aFile);\n                if( !$res ) {\n                    JpGraphError::RaiseL(25107,$aFile);//(\"Can't write to file '$aFile'. Check that the process running PHP has enough permission.\");\n                }\n            }\n            else {\n                $res = @$func($this->img);\n                if( !$res ) {\n                    JpGraphError::RaiseL(25108);//(\"Can't stream image. This is most likely due to a faulty PHP/GD setup. Try to recompile PHP and use the built-in GD library that comes with PHP.\");\n                }\n\n            }\n        }\n    }\n\n    // Do SuperSampling using $scale\n    function DoSupersampling() {\n        if (SUPERSAMPLING_SCALE <= 1) {\n            return $this->img;\n        }\n\n        $dst_img = @imagecreatetruecolor($this->original_width, $this->original_height);\n        imagecopyresampled($dst_img, $this->img, 0, 0, 0, 0, $this->original_width, $this->original_height, $this->width, $this->height);\n        $this->Destroy();\n        return $this->img = $dst_img;\n    }\n\n    // Clear resources used by image (this is normally not used since all resources are/should be\n    // returned when the script terminates\n    function Destroy() {\n        imagedestroy($this->img);\n    }\n\n    // Specify image format. Note depending on your installation\n    // of PHP not all formats may be supported.\n    function SetImgFormat($aFormat,$aQuality=75) {\n        $this->quality = $aQuality;\n        $aFormat = strtolower($aFormat);\n        $tst = true;\n        $supported = imagetypes();\n        if( $aFormat==\"auto\" ) {\n            if( $supported & IMG_PNG )      $this->img_format=\"png\";\n            elseif( $supported & IMG_JPG )  $this->img_format=\"jpeg\";\n            elseif( $supported & IMG_GIF )  $this->img_format=\"gif\";\n            elseif( $supported & IMG_WBMP ) $this->img_format=\"wbmp\";\n            elseif( $supported & IMG_XPM )  $this->img_format=\"xpm\";\n            else {\n                JpGraphError::RaiseL(25109);//(\"Your PHP (and GD-lib) installation does not appear to support any known graphic formats. You need to first make sure GD is compiled as a module to PHP. If you also want to use JPEG images you must get the JPEG library. Please see the PHP docs for details.\");\n            }\n            return true;\n        }\n        else {\n            if( $aFormat==\"jpeg\" || $aFormat==\"png\" || $aFormat==\"gif\" ) {\n                if( $aFormat==\"jpeg\" && !($supported & IMG_JPG) )       $tst=false;\n                elseif( $aFormat==\"png\" && !($supported & IMG_PNG) )    $tst=false;\n                elseif( $aFormat==\"gif\" && !($supported & IMG_GIF) )    $tst=false;\n                elseif( $aFormat==\"wbmp\" && !($supported & IMG_WBMP) )  $tst=false;\n                elseif( $aFormat==\"xpm\" && !($supported & IMG_XPM) )    $tst=false;\n                else {\n                    $this->img_format=$aFormat;\n                    return true;\n                }\n            }\n            else {\n                $tst=false;\n            }\n            if( !$tst ) {\n                JpGraphError::RaiseL(25110,$aFormat);//(\" Your PHP installation does not support the chosen graphic format: $aFormat\");\n            }\n        }\n    }\n\n    /**\n    * Draw Line\n    */\n    function DrawLine($im, $x1, $y1, $x2, $y2, $weight, $color) {\n        if ($weight == 1) {\n            return imageline($im,$x1,$y1,$x2,$y2,$color);\n        }\n\n        $angle=(atan2(($y1 - $y2), ($x2 - $x1)));\n\n        $dist_x = $weight * (sin($angle)) / 2;\n        $dist_y = $weight * (cos($angle)) / 2;\n\n        $p1x=ceil(($x1 + $dist_x));\n        $p1y=ceil(($y1 + $dist_y));\n        $p2x=ceil(($x2 + $dist_x));\n        $p2y=ceil(($y2 + $dist_y));\n        $p3x=ceil(($x2 - $dist_x));\n        $p3y=ceil(($y2 - $dist_y));\n        $p4x=ceil(($x1 - $dist_x));\n        $p4y=ceil(($y1 - $dist_y));\n\n        $array=array($p1x,$p1y,$p2x,$p2y,$p3x,$p3y,$p4x,$p4y);\n        if (CheckPHPVersion('8.1.0')) {\n            imagefilledpolygon ( $im, $array, $color );\n        } else {\n            imagefilledpolygon ( $im, $array, (count($array)/2), $color );\n        }\n\n        // for antialias\n        imageline($im, $p1x, $p1y, $p2x, $p2y, $color);\n        imageline($im, $p3x, $p3y, $p4x, $p4y, $color);\n        return;\n\n\n\n          return imageline($this->img,$x1,$y1,$x2,$y2,$this->current_color);\n      $weight = 8;\n        if ($weight <= 1) {\n          return imageline($this->img,$x1,$y1,$x2,$y2,$this->current_color);\n        }\n\n        $pts = array();\n\n        $weight /= 2;\n\n        if ($y2 - $y1 == 0) {\n            // x line\n            $pts = array();\n            $pts[] = $x1; $pts[] = $y1 - $weight;\n            $pts[] = $x1; $pts[] = $y1 + $weight;\n            $pts[] = $x2; $pts[] = $y2 + $weight;\n            $pts[] = $x2; $pts[] = $y2 - $weight;\n\n        } elseif ($x2 - $x1 == 0) {\n            // y line\n            $pts = array();\n            $pts[] = $x1 - $weight; $pts[] = $y1;\n            $pts[] = $x1 + $weight; $pts[] = $y1;\n            $pts[] = $x2 + $weight; $pts[] = $y2;\n            $pts[] = $x2 - $weight; $pts[] = $y2;\n\n        } else {\n\n            var_dump($x1, $x2, $y1, $y2);\n            $length = sqrt(pow($x2 - $x1, 2) + pow($y2 - $y1, 2));\n            var_dump($length);exit;\n            exit;\n\n/*\n            $lean = ($y2 - $y1) / ($x2 - $x1);\n            $lean2 = -1 / $lean;\n            $sin = $lean / ($y2 - $y1);\n            $cos = $lean / ($x2 - $x1);\n\n            $pts[] = $x1 + (-$weight * $sin); $pts[] = $y1 + (-$weight * $cos);\n            $pts[] = $x1 + (+$weight * $sin); $pts[] = $y1 + (+$weight * $cos);\n            $pts[] = $x2 + (+$weight * $sin); $pts[] = $y2 + (+$weight * $cos);\n            $pts[] = $x2 + (-$weight * $sin); $pts[] = $y2 + (-$weight * $cos);\n*/\n        }\n\n//print_r($pts);exit;\n        if (count($pts)/2 < 3) {\n            return;\n        }\n\n        imagesetthickness($im, 1);\n        if (CheckPHPVersion('8.1.0')) {\n            imagefilledpolygon($im, $pts, $color);\n        } else {\n            imagefilledpolygon($im, $pts,count($pts)/2, $color);\n        }\n\n\n        $weight *= 2;\n\n//        $this->DrawImageSmoothArc($im, $x1, $y1, $weight, $weight, 0, 360, $color);\n//        $this->DrawImageSmoothArc($im, $x2, $y2, $weight, $weight, 0, 360, $color);\n    }\n\n\n    function DrawImageSmoothArc($im, $xc, $yc, $w, $h, $s, $e, $color, $style = null) {\n        $tmp = $s;\n        $s = (360 - $e) / 180 * M_PI;\n        $e = (360 - $tmp) / 180 * M_PI;\n        return imageSmoothArc($im, round($xc), round($yc), round($w), round($h), $this->CreateColorForImageSmoothArc($color), $s, $e);\n    }\n\n    function CreateColorForImageSmoothArc($color) {\n        $alpha = $color >> 24 & 0xFF;\n        $red   = $color >> 16 & 0xFF;\n        $green = $color >> 8 & 0xFF;\n        $blue  = $color & 0xFF;\n\n//var_dump($alpha, $red, $green, $blue);exit;\n\n        return array($red, $green, $blue, $alpha);\n    }\n\n    function imageSmoothCircle( &$img, $cx, $cy, $cr, $color ) {\n        $ir = $cr;\n        $ix = 0;\n        $iy = $ir;\n        $ig = 2 * $ir - 3;\n        $idgr = -6;\n        $idgd = 4 * $ir - 10;\n        $fill = imageColorExactAlpha( $img, $color[ 'R' ], $color[ 'G' ], $color[ 'B' ], 0 );\n        imageLine( $img, $cx + $cr - 1, $cy, $cx, $cy, $fill );\n        imageLine( $img, $cx - $cr + 1, $cy, $cx - 1, $cy, $fill );\n        imageLine( $img, $cx, $cy + $cr - 1, $cx, $cy + 1, $fill );\n        imageLine( $img, $cx, $cy - $cr + 1, $cx, $cy - 1, $fill );\n        $draw = imageColorExactAlpha( $img, $color[ 'R' ], $color[ 'G' ], $color[ 'B' ], 42 );\n        imageSetPixel( $img, $cx + $cr, $cy, $draw );\n        imageSetPixel( $img, $cx - $cr, $cy, $draw );\n        imageSetPixel( $img, $cx, $cy + $cr, $draw );\n        imageSetPixel( $img, $cx, $cy - $cr, $draw );\n        while ( $ix <= $iy - 2 ) {\n            if ( $ig < 0 ) {\n                $ig += $idgd;\n                $idgd -= 8;\n                $iy--;\n            } else {\n                $ig += $idgr;\n                $idgd -= 4;\n            }\n            $idgr -= 4;\n            $ix++;\n            imageLine( $img, $cx + $ix, $cy + $iy - 1, $cx + $ix, $cy + $ix, $fill );\n            imageLine( $img, $cx + $ix, $cy - $iy + 1, $cx + $ix, $cy - $ix, $fill );\n            imageLine( $img, $cx - $ix, $cy + $iy - 1, $cx - $ix, $cy + $ix, $fill );\n            imageLine( $img, $cx - $ix, $cy - $iy + 1, $cx - $ix, $cy - $ix, $fill );\n            imageLine( $img, $cx + $iy - 1, $cy + $ix, $cx + $ix, $cy + $ix, $fill );\n            imageLine( $img, $cx + $iy - 1, $cy - $ix, $cx + $ix, $cy - $ix, $fill );\n            imageLine( $img, $cx - $iy + 1, $cy + $ix, $cx - $ix, $cy + $ix, $fill );\n            imageLine( $img, $cx - $iy + 1, $cy - $ix, $cx - $ix, $cy - $ix, $fill );\n            $filled = 0;\n            for ( $xx = $ix - 0.45; $xx < $ix + 0.5; $xx += 0.2 ) {\n                for ( $yy = $iy - 0.45; $yy < $iy + 0.5; $yy += 0.2 ) {\n                    if ( sqrt( pow( $xx, 2 ) + pow( $yy, 2 ) ) < $cr ) $filled += 4;\n                }\n            }\n            $draw = imageColorExactAlpha( $img, $color[ 'R' ], $color[ 'G' ], $color[ 'B' ], ( 100 - $filled ) );\n            imageSetPixel( $img, $cx + $ix, $cy + $iy, $draw );\n            imageSetPixel( $img, $cx + $ix, $cy - $iy, $draw );\n            imageSetPixel( $img, $cx - $ix, $cy + $iy, $draw );\n            imageSetPixel( $img, $cx - $ix, $cy - $iy, $draw );\n            imageSetPixel( $img, $cx + $iy, $cy + $ix, $draw );\n            imageSetPixel( $img, $cx + $iy, $cy - $ix, $draw );\n            imageSetPixel( $img, $cx - $iy, $cy + $ix, $draw );\n            imageSetPixel( $img, $cx - $iy, $cy - $ix, $draw );\n        }\n    }\n\n    function __get($name) {\n\n        if (strpos($name, 'raw_') !== false) {\n            // if $name == 'raw_left_margin' , return $this->_left_margin;\n            $variable_name = '_' . str_replace('raw_', '', $name);\n            return $this->$variable_name;\n        }\n\n        $variable_name = '_' . $name;\n\n        if (isset($this->$variable_name)) {\n            return $this->$variable_name * SUPERSAMPLING_SCALE;\n        } else {\n            JpGraphError::RaiseL('25132', $name);\n        }\n    }\n\n    function __set($name, $value) {\n        $this->{'_'.$name} = $value;\n    }\n\n} // CLASS\n\n//===================================================\n// CLASS RotImage\n// Description: Exactly as Image but draws the image at\n// a specified angle around a specified rotation point.\n//===================================================\nclass RotImage extends Image {\n    public $a=0;\n    public $dx=0,$dy=0,$transx=0,$transy=0;\n    private $m=array();\n\n    function __construct($aWidth,$aHeight,$a=0,$aFormat=DEFAULT_GFORMAT,$aSetAutoMargin=true) {\n        parent::__construct($aWidth,$aHeight,$aFormat,$aSetAutoMargin);\n        $this->dx=$this->width/2;\n        $this->dy=$this->height/2;\n        $this->SetAngle($a);\n    }\n\n    function SetCenter($dx,$dy) {\n        $old_dx = $this->dx;\n        $old_dy = $this->dy;\n        $this->dx=$dx;\n        $this->dy=$dy;\n        $this->SetAngle($this->a);\n        return array($old_dx,$old_dy);\n    }\n\n    function SetTranslation($dx,$dy) {\n        $old = array($this->transx,$this->transy);\n        $this->transx = $dx;\n        $this->transy = $dy;\n        return $old;\n    }\n\n    function UpdateRotMatrice()  {\n        $a = $this->a;\n        $a *= M_PI/180;\n        $sa=sin($a); $ca=cos($a);\n        // Create the rotation matrix\n        $this->m[0][0] = $ca;\n        $this->m[0][1] = -$sa;\n        $this->m[0][2] = $this->dx*(1-$ca) + $sa*$this->dy ;\n        $this->m[1][0] = $sa;\n        $this->m[1][1] = $ca;\n        $this->m[1][2] = $this->dy*(1-$ca) - $sa*$this->dx ;\n    }\n\n    function SetAngle($a) {\n        $tmp = $this->a;\n        $this->a = $a;\n        $this->UpdateRotMatrice();\n        return $tmp;\n    }\n\n    function Circle($xc,$yc,$r) {\n        list($xc,$yc) = $this->Rotate($xc,$yc);\n        parent::Circle($xc,$yc,$r);\n    }\n\n    function FilledCircle($xc,$yc,$r) {\n        list($xc,$yc) = $this->Rotate($xc,$yc);\n        parent::FilledCircle($xc,$yc,$r);\n    }\n\n\n    function Arc($xc,$yc,$w,$h,$s,$e) {\n        list($xc,$yc) = $this->Rotate($xc,$yc);\n        $s += $this->a;\n        $e += $this->a;\n        parent::Arc($xc,$yc,$w,$h,$s,$e);\n    }\n\n    function FilledArc($xc,$yc,$w,$h,$s,$e,$style='') {\n        list($xc,$yc) = $this->Rotate($xc,$yc);\n        $s += $this->a;\n        $e += $this->a;\n        parent::FilledArc($xc,$yc,$w,$h,$s,$e);\n    }\n\n    function SetMargin($lm,$rm,$tm,$bm) {\n        parent::SetMargin($lm,$rm,$tm,$bm);\n        $this->UpdateRotMatrice();\n    }\n\n    function Rotate($x,$y) {\n        // Optimization. Ignore rotation if Angle==0 || Angle==360\n        if( $this->a == 0 || $this->a == 360 ) {\n            return array($x + $this->transx, $y + $this->transy );\n        }\n        else {\n            $x1=round($this->m[0][0]*$x + $this->m[0][1]*$y,1) + $this->m[0][2] + $this->transx;\n            $y1=round($this->m[1][0]*$x + $this->m[1][1]*$y,1) + $this->m[1][2] + $this->transy;\n            return array($x1,$y1);\n        }\n    }\n\n    function CopyMerge($fromImg,$toX,$toY,$fromX,$fromY,$toWidth,$toHeight,$fromWidth=-1,$fromHeight=-1,$aMix=100) {\n        list($toX,$toY) = $this->Rotate($toX,$toY);\n        parent::CopyMerge($fromImg,$toX,$toY,$fromX,$fromY,$toWidth,$toHeight,$fromWidth,$fromHeight,$aMix);\n\n    }\n\n    function ArrRotate($pnts) {\n        $n = count($pnts)-1;\n        for($i=0; $i < $n; $i+=2) {\n            list ($x,$y) = $this->Rotate($pnts[$i],$pnts[$i+1]);\n            $pnts[$i] = $x; $pnts[$i+1] = $y;\n        }\n        return $pnts;\n    }\n\n    function DashedLine($x1,$y1,$x2,$y2,$dash_length=1,$dash_space=4) {\n        list($x1,$y1) = $this->Rotate($x1,$y1);\n        list($x2,$y2) = $this->Rotate($x2,$y2);\n        parent::DashedLine($x1,$y1,$x2,$y2,$dash_length,$dash_space);\n    }\n\n    function Line($x1,$y1,$x2,$y2) {\n        list($x1,$y1) = $this->Rotate($x1,$y1);\n        list($x2,$y2) = $this->Rotate($x2,$y2);\n        parent::Line($x1,$y1,$x2,$y2);\n    }\n\n    function Rectangle($x1,$y1,$x2,$y2) {\n        // Rectangle uses Line() so it will be rotated through that call\n        parent::Rectangle($x1,$y1,$x2,$y2);\n    }\n\n    function FilledRectangle($x1,$y1,$x2,$y2) {\n        if( $y1==$y2 || $x1==$x2 )\n        $this->Line($x1,$y1,$x2,$y2);\n        else\n        $this->FilledPolygon(array($x1,$y1,$x2,$y1,$x2,$y2,$x1,$y2));\n    }\n\n    function Polygon($pnts,$closed=FALSE,$fast=FALSE) {\n        // Polygon uses Line() so it will be rotated through that call unless\n        // fast drawing routines are used in which case a rotate is needed\n        if( $fast ) {\n            parent::Polygon($this->ArrRotate($pnts));\n        }\n        else {\n            parent::Polygon($pnts,$closed,$fast);\n        }\n    }\n\n    function FilledPolygon($pnts) {\n        parent::FilledPolygon($this->ArrRotate($pnts));\n    }\n\n    function Point($x,$y) {\n        list($xp,$yp) = $this->Rotate($x,$y);\n        parent::Point($xp,$yp);\n    }\n\n    function StrokeText($x,$y,$txt,$dir=0,$paragraph_align=\"left\",$debug=false) {\n        list($xp,$yp) = $this->Rotate($x,$y);\n        return parent::StrokeText($xp,$yp,$txt,$dir,$paragraph_align,$debug);\n    }\n}\n\n//=======================================================================\n// CLASS ImgStreamCache\n// Description: Handle caching of graphs to files. All image output goes\n//              through this class\n//=======================================================================\nclass ImgStreamCache {\n    private $cache_dir, $timeout=0;  // Infinite timeout\n    //---------------\n    // CONSTRUCTOR\n    function __construct($aCacheDir=CACHE_DIR) {\n        $this->cache_dir = $aCacheDir;\n    }\n\n    //---------------\n    // PUBLIC METHODS\n\n    // Specify a timeout (in minutes) for the file. If the file is older then the\n    // timeout value it will be overwritten with a newer version.\n    // If timeout is set to 0 this is the same as infinite large timeout and if\n    // timeout is set to -1 this is the same as infinite small timeout\n    function SetTimeout($aTimeout) {\n        $this->timeout=$aTimeout;\n    }\n\n    // Output image to browser and also write it to the cache\n    function PutAndStream($aImage,$aCacheFileName,$aInline,$aStrokeFileName) {\n\n        // Check if we should always stroke the image to a file\n        if( _FORCE_IMGTOFILE ) {\n            $aStrokeFileName = _FORCE_IMGDIR.GenImgName();\n        }\n\n        if( $aStrokeFileName != '' ) {\n\n            if( $aStrokeFileName == 'auto' ) {\n                $aStrokeFileName = GenImgName();\n            }\n\n            if( file_exists($aStrokeFileName) ) {\n\n                // Wait for lock (to make sure no readers are trying to access the image)\n                $fd = fopen($aStrokeFileName,'w');\n                $lock = flock($fd, LOCK_EX);\n\n                // Since the image write routines only accepts a filename which must not\n                // exist we need to delete the old file first\n                if( !@unlink($aStrokeFileName) ) {\n                    $lock = flock($fd, LOCK_UN);\n                    JpGraphError::RaiseL(25111,$aStrokeFileName);\n                    //(\" Can't delete cached image $aStrokeFileName. Permission problem?\");\n                }\n                $aImage->Stream($aStrokeFileName);\n                $lock = flock($fd, LOCK_UN);\n                fclose($fd);\n\n            }\n            else {\n                $aImage->Stream($aStrokeFileName);\n            }\n\n            return;\n        }\n\n        if( $aCacheFileName != '' && USE_CACHE) {\n\n            $aCacheFileName = $this->cache_dir . $aCacheFileName;\n            if( file_exists($aCacheFileName) ) {\n                if( !$aInline ) {\n                    // If we are generating image off-line (just writing to the cache)\n                    // and the file exists and is still valid (no timeout)\n                    // then do nothing, just return.\n                    $diff=time()-filemtime($aCacheFileName);\n                    if( $diff < 0 ) {\n                        JpGraphError::RaiseL(25112,$aCacheFileName);\n                        //(\" Cached imagefile ($aCacheFileName) has file date in the future!!\");\n                    }\n                    if( $this->timeout>0 && ($diff <= $this->timeout*60) ) return;\n                }\n\n                // Wait for lock (to make sure no readers are trying to access the image)\n                $fd = fopen($aCacheFileName,'w');\n                $lock = flock($fd, LOCK_EX);\n\n                if( !@unlink($aCacheFileName) ) {\n                    $lock = flock($fd, LOCK_UN);\n                    JpGraphError::RaiseL(25113,$aStrokeFileName);\n                    //(\" Can't delete cached image $aStrokeFileName. Permission problem?\");\n                }\n                $aImage->Stream($aCacheFileName);\n                $lock = flock($fd, LOCK_UN);\n                fclose($fd);\n\n            }\n            else {\n                $this->MakeDirs(dirname($aCacheFileName));\n                if( !is_writeable(dirname($aCacheFileName)) ) {\n                    JpGraphError::RaiseL(25114,$aCacheFileName);\n                    //('PHP has not enough permissions to write to the cache file '.$aCacheFileName.'. Please make sure that the user running PHP has write permission for this file if you wan to use the cache system with JpGraph.');\n                }\n                $aImage->Stream($aCacheFileName);\n            }\n\n            $res=true;\n            // Set group to specified\n            if( CACHE_FILE_GROUP != '' ) {\n                $res = @chgrp($aCacheFileName,CACHE_FILE_GROUP);\n            }\n            if( CACHE_FILE_MOD != '' ) {\n                $res = @chmod($aCacheFileName,CACHE_FILE_MOD);\n            }\n            if( !$res ) {\n                JpGraphError::RaiseL(25115,$aStrokeFileName);\n                //(\" Can't set permission for cached image $aStrokeFileName. Permission problem?\");\n            }\n\n            $aImage->Destroy();\n            if( $aInline ) {\n                if ($fh = @fopen($aCacheFileName, \"rb\") ) {\n                    $aImage->Headers();\n                    fpassthru($fh);\n                    return;\n                }\n                else {\n                    JpGraphError::RaiseL(25116,$aFile);//(\" Cant open file from cache [$aFile]\");\n                }\n            }\n        }\n        elseif( $aInline ) {\n            $aImage->Headers();\n            $aImage->Stream();\n            return;\n        }\n    }\n\n    function IsValid($aCacheFileName) {\n        $aCacheFileName = $this->cache_dir.$aCacheFileName;\n        if ( USE_CACHE && file_exists($aCacheFileName) ) {\n            $diff=time()-filemtime($aCacheFileName);\n            if( $this->timeout>0 && ($diff > $this->timeout*60) ) {\n                return false;\n            }\n            else {\n                return true;\n            }\n        }\n        else {\n            return false;\n        }\n    }\n\n    function StreamImgFile($aImage,$aCacheFileName) {\n        $aCacheFileName = $this->cache_dir.$aCacheFileName;\n        if ( $fh = @fopen($aCacheFileName, 'rb') ) {\n            $lock = flock($fh, LOCK_SH);\n            $aImage->Headers();\n            fpassthru($fh);\n            $lock = flock($fh, LOCK_UN);\n            fclose($fh);\n            return true;\n        }\n        else {\n            JpGraphError::RaiseL(25117,$aCacheFileName);//(\" Can't open cached image \\\"$aCacheFileName\\\" for reading.\");\n        }\n    }\n\n    // Check if a given image is in cache and in that case\n    // pass it directly on to web browser. Return false if the\n    // image file doesn't exist or exists but is to old\n    function GetAndStream($aImage,$aCacheFileName) {\n        if( $this->Isvalid($aCacheFileName) ) {\n            return $this->StreamImgFile($aImage,$aCacheFileName);\n        }\n        else {\n            return false;\n        }\n    }\n\n    //---------------\n    // PRIVATE METHODS\n    // Create all necessary directories in a path\n    function MakeDirs($aFile) {\n        $dirs = array();\n        // In order to better work when open_basedir is enabled\n        // we do not create directories in the root path\n        while ( $aFile != '/' && !(file_exists($aFile)) ) {\n            $dirs[] = $aFile.'/';\n            $aFile = dirname($aFile);\n        }\n        for ($i = sizeof($dirs)-1; $i>=0; $i--) {\n            if(! @mkdir($dirs[$i],0777) ) {\n                JpGraphError::RaiseL(25118,$aFile);//(\" Can't create directory $aFile. Make sure PHP has write permission to this directory.\");\n            }\n            // We also specify mode here after we have changed group.\n            // This is necessary if Apache user doesn't belong the\n            // default group and hence can't specify group permission\n            // in the previous mkdir() call\n            if( CACHE_FILE_GROUP != \"\" ) {\n                $res=true;\n                $res =@chgrp($dirs[$i],CACHE_FILE_GROUP);\n                $res = @chmod($dirs[$i],0777);\n                if( !$res ) {\n                    JpGraphError::RaiseL(25119,$aFile);//(\" Can't set permissions for $aFile. Permission problems?\");\n                }\n            }\n        }\n        return true;\n    }\n} // CLASS Cache\n\n?>\n"
  },
  {
    "path": "include/jpgraph/imageSmoothArc.php",
    "content": "<?php\n\n/*\n    \n    Copyright (c) 2006-2008 Ulrich Mierendorff\n\n    Permission is hereby granted, free of charge, to any person obtaining a\n    copy of this software and associated documentation files (the \"Software\"),\n    to deal in the Software without restriction, including without limitation\n    the rights to use, copy, modify, merge, publish, distribute, sublicense,\n    and/or sell copies of the Software, and to permit persons to whom the\n    Software is furnished to do so, subject to the following conditions:\n\n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\n    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n    DEALINGS IN THE SOFTWARE.\n    \n    Changelog:\n    version 1.1\n        - improved the rendering speed by ~20%\n        \n        - Thanks to Matthias Mächler for fixing some small errors:\n            * uninitialized variables\n            * deprecated passing of $img reference in imageSmoothArc ()\n    \n    version 1.0\n        Release of rewritten script\n\n*/\n\nfunction imageSmoothArcDrawSegment (&$img, $cx, $cy, $a, $b, $aaAngleX, $aaAngleY, $color, $start, $stop, $seg)\n{\n    // Originally written from scratch by Ulrich Mierendorff, 06/2006\n    // Rewritten and improved, 04/2007, 07/2007\n    \n    // Please do not use THIS function directly. Scroll down to imageSmoothArc(...).\n    \n    $fillColor = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], $color[3] );\n    \n    $xStart = abs($a * cos($start));\n    $yStart = abs($b * sin($start));\n    $xStop  = abs($a * cos($stop));\n    $yStop  = abs($b * sin($stop));\n    $dxStart = 0;\n    $dyStart = 0;\n    $dxStop = 0;\n    $dyStop = 0;\n    if ($xStart != 0)\n        $dyStart = $yStart/$xStart;\n    if ($xStop != 0)\n        $dyStop = $yStop/$xStop;\n    if ($yStart != 0)\n        $dxStart = $xStart/$yStart;\n    if ($yStop != 0)\n        $dxStop = $xStop/$yStop;\n    if (abs($xStart) >= abs($yStart)) {\n        $aaStartX = true;\n    } else {\n        $aaStartX = false;\n    }\n    if ($xStop >= $yStop) {\n        $aaStopX = true;\n    } else {\n        $aaStopX = false;\n    }\n    //$xp = +1; $yp = -1; $xa = +1; $ya = 0;\n    for ( $x = 0; $x < $a; $x += 1 ) {\n        /*$y = $b * sqrt( 1 - ($x*$x)/($a*$a) );\n        \n        $error = $y - (int)($y);\n        $y = (int)($y);\n        \n        $diffColor = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error );*/\n        \n        $_y1 = $dyStop*$x;\n        $_y2 = $dyStart*$x;\n        if ($xStart > $xStop)\n        {\n            $error1 = $_y1 - (int)($_y1);\n            $error2 = 1 - $_y2 + (int)$_y2;\n            $_y1 = $_y1-$error1;\n            $_y2 = $_y2+$error2;\n        }\n        else\n        {\n            $error1 = 1 - $_y1 + (int)$_y1;\n            $error2 = $_y2 - (int)($_y2);\n            $_y1 = $_y1+$error1;\n            $_y2 = $_y2-$error2;\n        }\n        /*\n        if ($aaStopX)\n            $diffColor1 = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error1 );\n        if ($aaStartX)\n            $diffColor2 = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error2 );\n        */\n        \n        if ($seg == 0 || $seg == 2)\n        {\n            $i = $seg;\n            if (!($start > $i*M_PI/2 && $x > $xStart)) {\n                if ($i == 0) {\n                    $xp = +1; $yp = -1; $xa = +1; $ya = 0;\n                } else {\n                    $xp = -1; $yp = +1; $xa = 0; $ya = +1;\n                }\n                if ( $stop < ($i+1)*(M_PI/2) && $x <= $xStop ) {\n                    $diffColor1 = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error1 );\n                    $y1 = $_y1; if ($aaStopX) imageSetPixel($img, $cx+$xp*($x)+$xa, $cy+$yp*($y1+1)+$ya, $diffColor1);\n                    \n                } else {\n                    $y = $b * sqrt( 1 - ($x*$x)/($a*$a) );\n                    $error = $y - (int)($y);\n                    $y = (int)($y);\n                    $diffColor = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error );\n                    $y1 = $y; if ($x < $aaAngleX ) imageSetPixel($img, $cx+$xp*$x+$xa, $cy+$yp*($y1+1)+$ya, $diffColor);\n                }\n                if ($start > $i*M_PI/2 && $x <= $xStart) {\n                    $diffColor2 = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error2 );\n                    $y2 = $_y2; if ($aaStartX) imageSetPixel($img, $cx+$xp*$x+$xa, $cy+$yp*($y2-1)+$ya, $diffColor2);\n                } else {\n                    $y2 = 0;\n                }\n                if ($y2 <= $y1) imageLine($img, $cx+$xp*$x+$xa, $cy+$yp*$y1+$ya , $cx+$xp*$x+$xa, $cy+$yp*$y2+$ya, $fillColor);\n            }\n        }\n        \n        if ($seg == 1 || $seg == 3)\n        {\n            $i = $seg;\n            if (!($stop < ($i+1)*M_PI/2 && $x > $xStop)) {\n                if ($i == 1) {\n                    $xp = -1; $yp = -1; $xa = 0; $ya = 0;\n                } else {\n                    $xp = +1; $yp = +1; $xa = 1; $ya = 1;\n                }\n                if ( $start > $i*M_PI/2 && $x < $xStart ) {\n                    $diffColor2 = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error2 );\n                    $y1 = $_y2; if ($aaStartX) imageSetPixel($img, $cx+$xp*$x+$xa, $cy+$yp*($y1+1)+$ya, $diffColor2);\n                    \n                } else {\n                    $y = $b * sqrt( 1 - ($x*$x)/($a*$a) );\n                    $error = $y - (int)($y);\n                    $y = (int) $y;\n                    $diffColor = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error );\n                    $y1 = $y; if ($x < $aaAngleX ) imageSetPixel($img, $cx+$xp*$x+$xa, $cy+$yp*($y1+1)+$ya, $diffColor);\n                }\n                if ($stop < ($i+1)*M_PI/2 && $x <= $xStop) {\n                    $diffColor1 = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error1 );\n                    $y2 = $_y1; if ($aaStopX)  imageSetPixel($img, $cx+$xp*$x+$xa, $cy+$yp*($y2-1)+$ya, $diffColor1);\n                } else {\n                    $y2 = 0;\n                }\n                if ($y2 <= $y1) imageLine($img, $cx+$xp*$x+$xa, $cy+$yp*$y1+$ya, $cx+$xp*$x+$xa, $cy+$yp*$y2+$ya, $fillColor);\n            }\n        }\n    }\n    \n    ///YYYYY\n    \n    for ( $y = 0; $y < $b; $y += 1 ) {\n        /*$x = $a * sqrt( 1 - ($y*$y)/($b*$b) );\n        \n        $error = $x - (int)($x);\n        $x = (int)($x);\n        \n        $diffColor = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error );\n        */\n        $_x1 = $dxStop*$y;\n        $_x2 = $dxStart*$y;\n        if ($yStart > $yStop)\n        {\n            $error1 = $_x1 - (int)($_x1);\n            $error2 = 1 - $_x2 + (int)$_x2;\n            $_x1 = $_x1-$error1;\n            $_x2 = $_x2+$error2;\n        }\n        else\n        {\n            $error1 = 1 - $_x1 + (int)$_x1;\n            $error2 = $_x2 - (int)($_x2);\n            $_x1 = $_x1+$error1;\n            $_x2 = $_x2-$error2;\n        }\n/*\n        if (!$aaStopX)\n            $diffColor1 = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error1 );\n        if (!$aaStartX)\n            $diffColor2 = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error2 );\n*/\n        \n        if ($seg == 0 || $seg == 2)\n        {\n            $i = $seg;\n            if (!($start > $i*M_PI/2 && $y > $yStop)) {\n                if ($i == 0) {\n                    $xp = +1; $yp = -1; $xa = 1; $ya = 0;\n                } else {\n                    $xp = -1; $yp = +1; $xa = 0; $ya = 1;\n                }\n                if ( $stop < ($i+1)*(M_PI/2) && $y <= $yStop ) {\n                    $diffColor1 = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error1 );\n                    $x1 = $_x1; if (!$aaStopX) imageSetPixel($img, $cx+$xp*($x1-1)+$xa, $cy+$yp*($y)+$ya, $diffColor1);\n                } \n                if ($start > $i*M_PI/2 && $y < $yStart) {\n                    $diffColor2 = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error2 );\n                    $x2 = $_x2; if (!$aaStartX) imageSetPixel($img, $cx+$xp*($x2+1)+$xa, $cy+$yp*($y)+$ya, $diffColor2);\n                } else {\n                    $x = $a * sqrt( 1 - ($y*$y)/($b*$b) );\n                    $error = $x - (int)($x);\n                    $x = (int)($x);\n                    $diffColor = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error );\n                    $x1 = $x; if ($y < $aaAngleY && $y <= $yStop ) imageSetPixel($img, $cx+$xp*($x1+1)+$xa, $cy+$yp*$y+$ya, $diffColor);\n                }\n            }\n        }\n        \n        if ($seg == 1 || $seg == 3)\n        {\n            $i = $seg;\n            if (!($stop < ($i+1)*M_PI/2 && $y > $yStart)) {\n                if ($i == 1) {\n                    $xp = -1; $yp = -1; $xa = 0; $ya = 0;\n                } else {\n                    $xp = +1; $yp = +1; $xa = 1; $ya = 1;\n                }\n                if ( $start > $i*M_PI/2 && $y < $yStart ) {\n                    $diffColor2 = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error2 );\n                    $x1 = $_x2; if (!$aaStartX) imageSetPixel($img, $cx+$xp*($x1-1)+$xa, $cy+$yp*$y+$ya,  $diffColor2);\n                } \n                if ($stop < ($i+1)*M_PI/2 && $y <= $yStop) {\n                    $diffColor1 = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error1 );\n                    $x2 = $_x1; if (!$aaStopX)  imageSetPixel($img, $cx+$xp*($x2+1)+$xa, $cy+$yp*$y+$ya, $diffColor1);\n                } else {\n                    $x = $a * sqrt( 1 - ($y*$y)/($b*$b) );\n                    $error = $x - (int)($x);\n                    $x = (int)($x);\n                    $diffColor = imageColorExactAlpha( $img, $color[0], $color[1], $color[2], 127-(127-$color[3])*$error );\n                    $x1 = $x; if ($y < $aaAngleY  && $y < $yStart) imageSetPixel($img,$cx+$xp*($x1+1)+$xa,  $cy+$yp*$y+$ya, $diffColor);\n                }\n            }\n        }\n    }\n}\n\n\nfunction imageSmoothArc ( &$img, $cx, $cy, $w, $h, $color, $start, $stop)\n{\n    // Originally written from scratch by Ulrich Mierendorff, 06/2006\n    // Rewritten and improved, 04/2007, 07/2007\n    // compared to old version:\n    // + Support for transparency added\n    // + Improved quality of edges & antialiasing\n    \n    // note: This function does not represent the fastest way to draw elliptical\n    // arcs. It was written without reading any papers on that subject. Better\n    // algorithms may be twice as fast or even more.\n    \n    // what it cannot do: It does not support outlined arcs, only filled\n    \n    // Parameters:\n    // $cx      - Center of ellipse, X-coord\n    // $cy      - Center of ellipse, Y-coord\n    // $w       - Width of ellipse ($w >= 2)\n    // $h       - Height of ellipse ($h >= 2 )\n    // $color   - Color of ellipse as a four component array with RGBA\n    // $start   - Starting angle of the arc, no limited range!\n    // $stop    - Stop     angle of the arc, no limited range!\n    // $start _can_ be greater than $stop!\n    // If any value is not in the given range, results are undefined!\n    \n    // This script does not use any special algorithms, everything is completely\n    // written from scratch; see http://de.wikipedia.org/wiki/Ellipse for formulas.\n    \n    while ($start < 0)\n        $start += 2*M_PI;\n    while ($stop < 0)\n        $stop += 2*M_PI;\n    \n    while ($start > 2*M_PI)\n        $start -= 2*M_PI;\n    \n    while ($stop > 2*M_PI)\n        $stop -= 2*M_PI;\n    \n    \n    if ($start > $stop)\n    {\n        imageSmoothArc ( $img, $cx, $cy, $w, $h, $color, $start, 2*M_PI);\n        imageSmoothArc ( $img, $cx, $cy, $w, $h, $color, 0, $stop);\n        return;\n    }\n    \n    $a = 1.0*round ($w/2);\n    $b = 1.0*round ($h/2);\n    $cx = 1.0*round ($cx);\n    $cy = 1.0*round ($cy);\n    \n    $aaAngle = atan(($b*$b)/($a*$a)*tan(0.25*M_PI));\n    $aaAngleX = $a*cos($aaAngle);\n    $aaAngleY = $b*sin($aaAngle);\n    \n    $a -= 0.5; // looks better...\n    $b -= 0.5;\n    \n    for ($i=0; $i<4;$i++)\n    {\n        if ($start < ($i+1)*M_PI/2)\n        {\n            if ($start > $i*M_PI/2)\n            {\n                if ($stop > ($i+1)*M_PI/2)\n                {\n                    imageSmoothArcDrawSegment($img, $cx, $cy, $a, $b, $aaAngleX, $aaAngleY , $color, $start, ($i+1)*M_PI/2, $i);\n                }\n                else\n                {\n                    imageSmoothArcDrawSegment($img, $cx, $cy, $a, $b, $aaAngleX, $aaAngleY, $color, $start, $stop, $i);\n                    break;\n                }\n            }\n            else\n            {\n                if ($stop > ($i+1)*M_PI/2)\n                {\n                    imageSmoothArcDrawSegment($img, $cx, $cy, $a, $b, $aaAngleX, $aaAngleY, $color, $i*M_PI/2, ($i+1)*M_PI/2, $i);\n                }\n                else\n                {\n                    imageSmoothArcDrawSegment($img, $cx, $cy, $a, $b, $aaAngleX, $aaAngleY, $color, $i*M_PI/2, $stop, $i);\n                    break;\n                }\n            }\n        }\n    }\n}\n?>\n"
  },
  {
    "path": "include/jpgraph/imgdata_balls.inc.php",
    "content": "<?php\n//=======================================================================\n// File:        IMGDATA_ROUNDBALLS.INC\n// Description: Base64 encoded images for small round markers\n// Created:     2003-03-20\n// Ver:         $Id: imgdata_balls.inc.php 1106 2009-02-22 20:16:35Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\nclass ImgData_Balls extends ImgData {\n    protected $name = 'Round Balls';\n    protected $an = array(MARK_IMG_LBALL => 'imgdata_large',\n    MARK_IMG_MBALL => 'imgdata_small',\n    MARK_IMG_SBALL => 'imgdata_xsmall',\n    MARK_IMG_BALL => 'imgdata_xsmall');\n    protected $colors,$index,$maxidx;\n    private $colors_1 = array('blue','lightblue','brown','darkgreen',\n         'green','purple','red','gray','yellow','silver','gray');\n    private $index_1  = array('blue'=>9,'lightblue'=>1,'brown'=>6,'darkgreen'=>7,\n         'green'=>8,'purple'=>4,'red'=>0,'gray'=>5,'silver'=>3,'yellow'=>2);\n    private $maxidx_1 = 9 ;\n\n    private $colors_2 = array('blue','bluegreen','brown','cyan',\n     'darkgray','greengray','gray','green',\n     'greenblue','lightblue','lightred',\n     'purple','red','white','yellow');\n     \n\n    private $index_2 =  array('blue'=>9,'bluegreen'=>13,'brown'=>8,'cyan'=>12,\n     'darkgray'=>5,'greengray'=>6,'gray'=>2,'green'=>10,\n     'greenblue'=>3,'lightblue'=>1,'lightred'=>14,\n     'purple'=>7,'red'=>0,'white'=>11,'yellow'=>4);\n     \n    private $maxidx_2 = 14 ;\n\n\n    private $colors_3 = array('bluegreen','cyan','darkgray','greengray',\n     'gray','graypurple','green','greenblue','lightblue',\n     'lightred','navy','orange','purple','red','yellow');\n\n    private $index_3 = array('bluegreen'=>1,'cyan'=>11,'darkgray'=>14,'greengray'=>10,\n    'gray'=>3,'graypurple'=>4,'green'=>9,'greenblue'=>7,\n    'lightblue'=>13,'lightred'=>0,'navy'=>2,'orange'=>12,\n    'purple'=>8,'red'=>5,'yellow'=>6);\n    private $maxidx_3 = 14 ;\n\n    protected $imgdata_large, $imgdata_small, $imgdata_xsmall ;\n\n\n    function GetImg($aMark,$aIdx) {\n        switch( $aMark ) {\n            case MARK_IMG_SBALL:\n            case MARK_IMG_BALL:\n                $this->colors = $this->colors_3;\n                $this->index = $this->index_3 ;\n                $this->maxidx = $this->maxidx_3 ;\n                break;\n            case MARK_IMG_MBALL:\n                $this->colors = $this->colors_2;\n                $this->index = $this->index_2 ;\n                $this->maxidx = $this->maxidx_2 ;\n                break;\n            default:\n                $this->colors = $this->colors_1;\n                $this->index = $this->index_1 ;\n                $this->maxidx = $this->maxidx_1 ;\n                break;\n        }\n        return parent::GetImg($aMark,$aIdx);\n    }\n\n    function __construct() {\n\n        //==========================================================\n        // File: bl_red.png\n        //==========================================================\n        $this->imgdata_large[0][0]= 1072 ;\n        $this->imgdata_large[0][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAByF'.\n     'BMVEX/////////xsb/vb3/lIz/hIT/e3v/c3P/c2v/a2v/Y2P/'.\n     'UlL/Skr/SkL/Qjn/MTH/MSn/KSn/ISH/IRj/GBj/GBD/EBD/EA'.\n     'j/CAj/CAD/AAD3QkL3MTH3KSn3KSH3GBj3EBD3CAj3AAD1zMzv'.\n     'QkLvISHvIRjvGBjvEBDvEAjvAADnUlLnSkrnMTnnKSnnIRjnGB'.\n     'DnEBDnCAjnAADec3PeSkreISHeGBjeGBDeEAjWhITWa2vWUlLW'.\n     'SkrWISnWGBjWEBDWEAjWCAjWAADOnp7Oa2vOGCHOGBjOGBDOEB'.\n     'DOCAjOAADJrq7Gt7fGGBjGEBDGCAjGAADEpKS/v7+9QkK9GBC9'.\n     'EBC9CAi9AAC1e3u1a2u1Skq1KSm1EBC1CAi1AACtEBCtCBCtCA'.\n     'itAACngYGlCAilAACghIScOTmcCAicAACYgYGUGAiUCAiUAAiU'.\n     'AACMKSmMEACMAACEa2uEGAiEAAB7GBh7CAB7AABzOTlzGBBzCA'.\n     'BzAABrSkprOTlrGBhrAABjOTljAABaQkJaOTlaCABaAABSKSlS'.\n     'GBhSAABKKSlKGBhKAABCGBhCCABCAAA5CAA5AAAxCAAxAAApCA'.\n     'ApAAAhAAAYAACc9eRyAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgF'.\n     'HUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkRFD'.\n     'UHLytKAAAB4UlEQVR4nGNgIAK4mGjrmNq6BmFIWMmISUpKSmk5'.\n     'B8ZEokj4qoiLiQCBgqald3xaBpKMj6y4sLCQkJCIvIaFV0RaUR'.\n     'lCSk5cWEiAn19ASN7QwisuraihHiajKyEixM/NwckjoKrvEACU'.\n     'qumpg7pAUlREiJdNmZmLT9/cMzwps7Smc3I2WEpGUkxYkJuFiY'.\n     'lTxszePzY1v7Shc2oX2D+K4iLCgjzsrOw8embuYUmZeTVtPVOn'.\n     'gqSslYAOF+Ln4ZHWtXMPTcjMrWno7J82rRgoZWOsqaCgrqaqqm'.\n     'fn5peQmlsK1DR52vRaoFSIs5GRoYG5ub27n19CYm5pdVPnxKnT'.\n     'pjWDpLydnZwcHTz8QxMSEnJLgDL9U6dNnQ6Sio4PDAgICA+PTU'.\n     'zNzSkph8hADIxKS46Pj0tKTc3MLSksqWrtmQySAjuDIT8rKy0r'.\n     'Kz+vtLSmur6jb9JUIJgGdjxDQUVRUVFpaUVNQ1NrZ9+kKVOmTZ'.\n     'k6vR0sldJUAwQNTU2dnX0TgOJTQLrSIYFY2dPW1NbW2TNxwtQp'.\n     'U6ZMmjJt2rRGWNB3TO7vnzh5MsgSoB6gy7sREdY7bRrQEDAGOb'.\n     'wXOQW0TJsOEpwClmxBTTbZ7UDVIPkp7dkYaYqhuLa5trYYUxwL'.\n     'AADzm6uekAAcXAAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        // File: bl_bluegreen.png\n        //==========================================================\n        $this->imgdata_large[1][0]= 1368 ;\n        $this->imgdata_large[1][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABm'.\n     'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.\n     'B3RJTUUH0wMMFi8hE9b2uAAABOVJREFUeNq9lk2sJFUVx3+3qv'.\n     'tW95t57zFvhiFxmCFRUJRoNCQiJARMhiFx/Igxii5goTG6ZDAu'.\n     '/EhcSCIrTAgLEiKsJ8ywABNZEMJXEDYCukAmjgjzBkK/j35V1d'.\n     '333FtV97io97pfzwxfG86qcu/N+Z3zP+fcW/Apmfk4hx57+R/6'.\n     'Rqmc9ykhsWjlsUngAA1fXIQ7b73pI/186IGHnn9dH/8frC8v4I'.\n     'PiG53uaerR4GmKkv31mB8cyfjd946ZTwR66qVX9OTWIi8UKUv9'.\n     'BOrZXpYZvFeiBvzI0fgSUSFKwbVG+Pl1V3HH0VvNR4KeeukV/f'.\n     'PmMmdHhst76aXD64AbeVQ9bjNHaiGOC2o3wLrAb2/4LL/84ffn'.\n     'fCdzkOdayKpLppBemrBsU5Y1Zdmm9LJdGU6E/t4M24Q26jRDRL'.\n     'j3mdc49cSTekFsMzs5XuTsyLDUNSDQ25NwKOly9YIl22MYhJr/'.\n     'uoDtBBoT0CxBRGYOAhibIaOCe//2MpfM6KHnX9cXipSlbkKWmS'.\n     'nk9iv38J0jixw7vJfrTMYBOvhSoQHJBS09ANELloAGDxW8tfoW'.\n     'J+5/UC8CPS0LU7r3SpYarr7M8rmFjMPLXT6/33L4si7Z2GCrQC'.\n     '+0ctlOaNs9DReV8vSLr85ndPLpZ/WNvHW+01kAVFBOGvJx0wYg'.\n     'Sp47RIQ4Emwa8FGJXlDxSCFo5YlVgAo2hwPue/hRndboTV3EW2'.\n     'Wp3k6wBp8q56QiWzecW6vwQfnPRkAWhFgILnq08jQ+R2nlUzzN'.\n     'uES9Q7Vd+9fba7NmWJW61db2247qACmcjxXr45psYphsFGSLBu'.\n     'kIajxqtjNwHkvAjQt0sg3crhPA2+fPz0CuyNFOghsGsr19mnFg'.\n     'DGwrRm8UoAtNmQPQtRXDgdC4HImCFEKcCE0oieUWUYq2LtbiGp'.\n     'mBQmppfIkjw45DK0QNNkvQ0jMBtPL0UnDRM1rN+cxKwzvOo2NP'.\n     'tykR9a1kfpZNDLMG6QDYJqCTBvUe1+uxs+YKyPoGrTwY2HhvC4'.\n     'CDWQd5d4xNApNQEEMgjgLdUCLBQ5cprL/trwNwKG2IUmDqDFd5'.\n     'sr5BWrlxuSdLDFEFlqAzXGc4zFjupqh6uqYihpxJcEgp026l2w'.\n     '7wFUv7Z6AvrfRo/n0OYzPwIKE3HUKAJg2otMBiElnsF7wngis9'.\n     '3ZDjNnLi7huCWUZfueZKTu/M0V3HvmkOFDVxVKDG04ScejSgW5'.\n     'V0q5JYFEghuDLHlTmToqDeGOCKIVtrW9hsdmXufEcNLPSXuPHa'.\n     'a+bvuh9df5AH/v5PDFmbWQC3Mx+TVvfGVTRB2CodNgT2JBX003'.\n     'aANZAYS/BxCv32TV/l2C03G7jgmfjGiT/qmeEmibEYm7XzAO2k'.\n     'A+pbgHhBgydqu54YO5eRiLCy7yDvPP6Xqf+5Z+Lu277OYuOpiw'.\n     'H15oBmlNOMcmK5RbP+PrEscGU+DSAxdg4CICIkxnLP8aNz63Og'.\n     'H3/rdvOb795GVhuaYo0oBc3GGrEsUPVTwO6a7LYd+X51x3Hu/t'.\n     'lP5tS65FN+6okn9U+n/sqb596dTvhOF+02myXTmkQNrOw7yD3H'.\n     'j14E+UDQjp24/0E9/eKrbA4HH3aMK1b2ccvXvswjv//1J/s5ud'.\n     'Due/hRPfP+OmfOrk7vrn7a48ihA3zh8CH+8Iuffiw/n4r9H1ZZ'.\n     '0zz7G56hAAAAAElFTkSuQmCC' ; \n\n        //==========================================================\n        // File: bl_yellow.png\n        //==========================================================\n        $this->imgdata_large[2][0]= 1101 ;\n        $this->imgdata_large[2][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAB2l'.\n     'BMVEX//////////+///+f//9b//8b//73//7X//63//6X//5T/'.\n     '/4z//4T//3P//2v//1r//0r//0L//zH//yn//yH//xj//xD//w'.\n     'j//wD/90L/9zn/9zH/9xj/9xD/9wj/9wD39yn37zn37zH37yH3'.\n     '7xD37wj37wDv70Lv50rv50Lv5znv5yHv5xjv5wjv5wDn51Ln5x'.\n     'Dn3jHn3iHn3hjn3hDn3gje3oze3nPe3lLe1oze1nPe1lLe1ine'.\n     '1iHe1hje1hDe1gje1gDW1qXW1mvWzqXWzkLWzhjWzhDWzgjWzg'.\n     'DOzrXOzq3OzpzOzgDOxkrOxinOxhjOxhDOxgjOxgDGxqXGxnvG'.\n     'xmvGvRjGvRDGvQjGvQDFxbnAvr6/v7+9vaW9vZS9vQi9vQC9tR'.\n     'C9tQi9tQC7u7W1tZS1tXu1tTG1tQi1rRC1rQi1rQCtrYytrSGt'.\n     'rQitrQCtpYStpSGtpQitpQClpYSlpXulpQClnBClnAilnACcnG'.\n     'ucnAicnACclAiclACUlFqUlCmUlAiUlACUjFKUjAiUjACMjFKM'.\n     'jEqMjACMhACEhACEewB7ezF7exB7ewB7cwBzcylzcwBzaxBzaw'.\n     'BraxhrawhrawBrYxBrYwBjYwBjWgBaWgBaUgCXBwRMAAAAAXRS'.\n     'TlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAd'.\n     'LdfvwAAAAHdElNRQfTAwkRFBKiJZ4hAAAB7ElEQVR4nI3S+1vS'.\n     'UBgHcB67WJmIMWAVdDHEDLBC6Go0slj3Ft0m9RRBWQEmFZFDEM'.\n     'Qgt0EMFBY7p/+198hj1kM/9N1+++x73rOd6XT/kStnTx4fPzd9'.\n     'uwfOjFhomj7smAhwj/6Cm2O0xUwy6g7cCL99uCW3jtBmE7lsdr'.\n     'fvejgpzP7uEDFRRoqy2k8xQPnypo2BUMP6waF9Vpf3ciiSzErL'.\n     'XTkPc0zDe3bsHDAcc00yoVgqL3UWN2iENpspff+2vn6D0+NnZ9'.\n     '6lC5K6RuSqBTZn1O/a3rd7v/MSez+WyIpVFX8GuuCA9SjD4N6B'.\n     'oRNTfo5PCAVR0fBXoIuOQzab1XjwwNHx00GOj8/nKtV1DdeArk'.\n     '24R+0ul9PjmbrHPYl+EipyU0OoQSjg8/m83kl/MMhx0fjCkqio'.\n     'SMOE7t4JMAzDsizH81AqSdW2hroLPg4/CEF4PhKNx98vlevrbY'.\n     'QQXgV6kXwVfjkTiSXmhYVcSa7DIE1DOENe7GM6lUym0l+EXKks'.\n     'K20VAeH2M0JvVgrZfL5Qqkiy0lRVaMBd7H7EZUmsiJJcrTdVja'.\n     'wGpdbTLj3/3qwrUOjAfGgg4LnNA5tdQx14Hm00QFBm65hfNzAm'.\n     '+yIFhFtzuj+z2MI/MQn6Uez5pz4Ua41G7VumB/6RX4zMr1TKBr'.\n     'SXAAAAAElFTkSuQmCC' ; \n\n        //==========================================================\n        // File: bl_silver.png\n        //==========================================================\n        $this->imgdata_large[3][0]= 1481 ;\n        $this->imgdata_large[3][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAMAAAAM7l6QAAADAF'.\n     'BMVEUAAADOzs7Gxsa9vb21tbXOxsbOzsbGzsb3///O1ta1vb2c'.\n     'paVSWlpKWlpSY2ve5+97hIze7/9aY2vO5/9zhJRaa3tSY3PGzt'.\n     'aMlJxrc3tja3NKUlpCSlK1vcZze4RSWmPW5/+Upb3G3v9zhJxS'.\n     'Y3t7jKVaa4TO3veltc6ElK1re5Rjc4ycpbV7hJRaY3M5QlLn7/'.\n     '/Gzt6lrb2EjJzO3v9ja3vG1ve9zu+1xueltdacrc6UpcaMnL1C'.\n     'SlqElLV7jK1zhKVre5zW3u/O1ue1vc6ttcaMlKVze4xrc4RSWm'.\n     'tKUmPG1v+9zve1xu+tveeltd6crdbe5/+9xt6cpb17hJxaY3s5'.\n     'QlrW3vfO1u/Gzue1vdattc6lrcaUnLWMlK2EjKVze5Rrc4xja4'.\n     'RSWnNKUmtCSmO9xuecpcZ7hKVaY4TW3v/O1vfGzu+1vd6ttdal'.\n     'rc69xu+UnL2MlLWEjK1ze5xrc5R7hK1ja4zO1v+1veettd6lrd'.\n     'aMlL3Gzv/39//W1t7Gxs61tb29vcatrbWlpa2cnKWUlJyEhIx7'.\n     'e4TW1ufGxta1tcZSUlqcnK3W1u+UlKW9vda1tc57e4ytrcalpb'.\n     '1ra3vOzu9jY3OUlK29vd6MjKWEhJxaWmtSUmNzc4xKSlpjY3tK'.\n     'SmNCQlqUjJzOxs7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'.\n     'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'.\n     'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'.\n     'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'.\n     'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'.\n     'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'.\n     'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'.\n     'AAAAAAAAAAAAAAAAAAAAAAAAD///9fnkWVAAAAAnRSTlP/AOW3'.\n     'MEoAAAABYktHRP+lB/LFAAAACXBIWXMAAABFAAAARQBP+QatAA'.\n     'AB/klEQVR42mNgxAsYqCdd3+lcb4hLmj8wMMvEu8DCMqYbU9op'.\n     'UEFB2MTb26eyysomFl06XEEhUCHLpAKo2z/fujikEUVaXUFBMB'.\n     'BouLePuV+VVWGRciIXknSEsImCQd3//xwmPr65llaFcSFJHkjS'.\n     '3iYmWUDZ//8NfCr989NjNUMSUyTg0jneSiaCINn/gmlVQM12qg'.\n     'lJnp5waTMTE5NAkCyHWZW/lXWNfUlikmdYK0zax7siS4EDKJtd'.\n     'mQeU1XRwLBdLkRGASucWmGVnZ4dnhZvn5lmm29iVOWpnJqcuko'.\n     'JKR1Wm5eTkRKYF5eblp9sU2ZeUJiV7zbfVg0pH56UFBQXNjIqK'.\n     'jgkujItX1koKTVmYajsdKu2qETVhwgSXiUDZ2Bn9xqUeoZ5e0t'.\n     'LzYYZ3B092ndjtOnmKTmycW1s7SHa+l5dtB8zlccE6RlN0dGbM'.\n     'mDVbd5KupNBcL6+F82XgHouLj5vRP2PWLGNdd4+ppnxe8tJec6'.\n     'XnNsKkm0uVQ5RDRHQTPTym68nPlZbvkfYCexsa5rpJ2qXa5Umm'.\n     'ocmec3m8vHjmSs+fgxyhC5JDQ8WSPT2lvbzm8vDIe0nbtiBLN8'.\n     '8BigNdu1B6Lsje+fPbUFMLi5TMfGmvHi/puUAv23q2YCTFNqH5'.\n     'MvPnSwPh3HasCbm3XUpv+nS5VtrkEkwAANSTpGHdye9PAAAASn'.\n     'RFWHRzaWduYXR1cmUANGJkODkyYmE4MWZhNTk4MTIyNDJjNjUx'.\n     'NzZhY2UxMDAzOGFhZjdhZWIyNzliNTM2ZGFmZDlkM2RiNDU3Zm'.\n     'NlNT9CliMAAAAASUVORK5CYII=' ; \n\n        //==========================================================\n        // File: bl_purple.png\n        //==========================================================\n        $this->imgdata_large[4][0]= 1149 ;\n        $this->imgdata_large[4][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAACAV'.\n     'BMVEX/////////7///5///1v//xv//rf//pf//lP//jP//hP//'.\n     'c///a///Wv//Wvf/Uv//Sv//Qv//Qvf/Off/Mf//Kf//If//If'.\n     'f/GP//GPf/EP//EPf/CP//CPf/CO//AP//APf3Oe/3Kff3Ke/3'.\n     'Ie/3GO/3EO/3AO/vSu/vSufvOefvMefvIefvGOfvEOfvCOfvAO'.\n     'fnUufnSufnMd7nId7nGN7nGNbnEN7nCN7nAN7ejN7ejNbec97e'.\n     'c9beUtbeQtbeIdbeGNbeENbeCNbeANbWpdbWa9bWQs7WGM7WEM'.\n     '7WCM7WAM7Otc7Orc7OnM7OSsbOIb3OGMbOEMbOCMbOAM7OAMbG'.\n     'pcbGnMbGe8bGa8bGKbXGEL3GCL3GAL3FucXBu73AvsC/v7+9pb'.\n     '29Ka29GLW9ELW9CLW9AL29ALW5rrm1lLW1e7W1MbW1GKW1EK21'.\n     'CLW1CK21AK2tjK2thKWtMaWtIaWtGJytCK2tCKWtAK2tAKWlhK'.\n     'Wle6WlEJylCJylAKWlAJyca5ycGJScEJScCJScAJycAJSUWpSU'.\n     'UoyUKZSUEIyUCIyUAJSUAIyMUoyMSoyMIYSMEISMCISMAIyMAI'.\n     'SECHuEAISEAHt7MXt7EHt7CHt7AHt7AHNzKXNzEGtzAHNzAGtr'.\n     'GGtrEGNrCGtrAGtrAGNjCFpjAGNjAFpaAFpaAFIpZn4bAAAAAX'.\n     'RSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsS'.\n     'AdLdfvwAAAAHdElNRQfTAwkRFB0ymoOwAAAB9UlEQVR4nGNgIA'.\n     'K42hhqGtm5+WFIWClKycvLK6gbuARGoEj4aMjLSElISUir6Tt7'.\n     'x+aEIWR8leQlwEBSTc/CK7awLguuR0lGQkJMVFRUTFJVzwko1d'.\n     'oFk9OQl5IQE+Dh5hVR0TV3CkkvbJgyASJjDZIR5GBl5eRX0TH1'.\n     'DEqrbJ2ypBEspSgvJSXKw8bMxMavbOLoGZNf1TZlybw4oIyfLN'.\n     'BxotxsLEzsQiaOHkFpBQ2905esrAZK2SpIAaUEuDm5+LTNPAKj'.\n     'C+pbps1evrIDKGWnLictKSkuLKyoZQyUya9o7Z2+YMXKGUApew'.\n     'M9PTVdXR0TEwf3wOjUirruafOXL18xFyjl72Kpb25qaurg4REU'.\n     'EFVe2zJ5zpLlK1aCpbydnZ2dnDwDA6NTopLLeiZNXbB8BcTAyP'.\n     'TQ0JDg4KCY1NS83JKmiVOBepYvX9UPlAovzEiPSU/LLyior2vq'.\n     'mjZr3vLlIF01IC+XVhUWFlZW1Lc290ycOGfxohVATSsXx4Oksn'.\n     'vaWlsb2tq6J0+bM2/RohVA81asbIcEYueU3t7JU6ZNnwNyGkhm'.\n     '+cp5CRCppJnzZ8+ZM3/JUogECBbBIixr8Yqly8FCy8F6ltUgoj'.\n     'lz7sqVK2ByK+cVMSCDxoUrwWDVysXt8WhJKqG4Y8bcuTP6qrGk'.\n     'QwwAABiMu7T4HMi4AAAAAElFTkSuQmCC' ; \n\n        //==========================================================\n        // File: bl_gray.png\n        //==========================================================\n        $this->imgdata_large[5][0]= 905 ;\n        $this->imgdata_large[5][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAABO1'.\n     'BMVEX////////3///39/fv7+/e5+fW3t7Wzs7WxsbG1tbGzsbG'.\n     'xsbDxMS/v7++wMC+v7+9zsa9xsa9vb29tbW9ra29pa24uLi1xs'.\n     'a1vb21tbWxtrattbWmpqalra2cra2cpaWcnJycjIyUpaWUnJyU'.\n     'lJSUjIyMnJyMnJSMlJSMlIyMjJSMjIyElJSElIyEjIyEhIR7jI'.\n     'x7hIR7hHt7e3t7e3N7e2tzhIRze3tze3Nzc3Nre3trc3Nrc2tr'.\n     'a2tjc3Njc2tja3Nja2tjY2NjWlpaa2taY2taY2NaY1paWlpaUl'.\n     'JSY2NSY1pSWlpSWlJSUlJSUkpKWlpKWlJKUlpKUlJKUkpKSkpK'.\n     'SkJCUlJCUkJCSkpCSkJCQkI5Sko5QkI5Qjk5OUI5OTkxQkIxOT'.\n     'kxMTkxMTEpMTEhMTEhKSkYISEpy7AFAAAAAXRSTlMAQObYZgAA'.\n     'AAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdE'.\n     'lNRQfTAwkRFQfW40uLAAABx0lEQVR4nI3SbXfSMBQA4NV3nce5'.\n     'TecAHUywRMHSgFuBCFsQUqwBS1OsWQh0GTj//y8wZUzdwQ/efM'.\n     'tzcm/uuXdj4z9ic/PR9k4qk1qDnf0X2/uZzKt8GaRvSubg4LVp'.\n     'mkWzCGAT/i3Zsm2XNQHLsm2n2937LaaNnGoJFAEo27B50qN0ay'.\n     'Wg26lXsw8fP8nmzcJb2CbsnF5JmmCE8ncN404KvLfsYwd7/MdV'.\n     'Pdgl/VbKMIzbuwVgVZw2JlSKJTVJ3609vWUY957lgAUd1KNcqr'.\n     'yWnOcOPn8q7d5/8PywAqsOOiVDrn42NFk+HQ7dVuXNYeFdBTpN'.\n     'nY5JdZl8xI5Y+HXYaTVqEDp1hAnRohZM03EUjMdhn5wghOoNnD'.\n     'wSK7KiiDPqEtz+iD4ctdyAifNYzUnScBSxwPd6GLfRURW7Ay5i'.\n     'pS5bmrY8348C5vvUI+TLiIVSJrVA0heK/GDkJxYMRoyfCSmk4s'.\n     'uWc3yic/oBo4yF374LGQs5Xw0GyQljI8bYmEsxVUoKxa6HMpAT'.\n     'vgyhU2mR8uU1pXmsa8ezqb6U4mwWF/5MeY8uLtQ0nmmQ8UWYvb'.\n     'EcJaYWar7QhztrO5Wr4Q4hDbAG/4hfTAF2iCiWrCEAAAAASUVO'.\n     'RK5CYII=' ; \n\n        //==========================================================\n        // File: bl_brown.png\n        //==========================================================\n        $this->imgdata_large[6][0]= 1053 ;\n        $this->imgdata_large[6][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAABoV'.\n     'BMVEX////Gzs7GvbXGrZTGpXu9nHO1nHO1nIy9taXGxs7GtaXO'.\n     'nHPGlFrGjEq9hEq1hEqte0Klczmcazmce1KtnIzGxsbGvb3OlF'.\n     'LOlFq9hFKte0qcc0KUYzGEWimMc1K9ta3OnGvOnGPWnGO9jFq9'.\n     'jFKlc0KUazmMYzl7UilzUjGtpZzGxr3GnGPWpWvepXO1hFJ7Wj'.\n     'FrSiFjUjG1ra3GnHPvxpT/5733zpythFKUa0KEYzlzUilaOSF7'.\n     'Wjm9jErvvYz/99b///f/78bnrYS1hFqle0p7UjFrSiljQiFCMR'.\n     'iMhHO9lGvGjFLWnGv/3q3////erXuthEqlc0paQiFKMRhSQin/'.\n     '1qX/997//++cc0pjSilaQilKORhCKRiclIy9pYzGlGPntYT33q'.\n     '3vvZSEWjlSOSE5KRB7c2O1lHutczmthFqte1JrWkqtjGtCKRBa'.\n     'SjmljGuca0KMYzGMaznOztaclISUYzmEWjFKOSF7a1qEYzFaSi'.\n     'GUjISEa0pKOSm9vb2llIxaQhg5IQiEc2tzY0paORilnJy1raVS'.\n     'OSljUkJjWkKTpvQWAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHU'.\n     'gAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkREiei'.\n     'zP2EAAAB9UlEQVR4nGWS/VfSUBjHL5QluhhBxtwyWcCus5Blpm'.\n     'wDC4ONaWXCyBi7RMZmpQ2Bypm9W/byV3cHHo/W88s95/s5z/d5'.\n     'uwCcCh/4L3zAf+bs0NC588On9QAYGSUuBINk6GI4cmnsBLk8Go'.\n     '1SFEGMkzRzZeLq5JE8FvDHouw1lqXiCZJOcnCKnx4AcP0GBqmZ'.\n     'mRgRT9MMB4Wbs7cGSXNRik3dnp9fiMUzNCNKgpzN9bsaWaQo9s'.\n     '7dfH7pXiFTZCBU1JK27LmtBO8TDx7mV1eXHqXXyiIUFLWiVzHx'.\n     'BxcJIvV4/cn6wkqmWOOwmVE3UQOAp6HxRKL5bGPj+VwhUhalFq'.\n     '8alm5vAt+LlySZTsebzcKrraIIW4JqZC3N3ga+1+EQTZKZta1M'.\n     'pCZCSeDViqVrThsEdsLJZLJYLpZrHVGScrKBvTQNtQHY6XIM02'.\n     'E6Ik7odRW1Dzy3N28n3kGuB3tQagm7UMBFXI/sATAs7L5vdbEs'.\n     '8Lycm923NB0j5wMe6KOsKIIyxcuqauxbrmlqyEWfPmPy5assY1'.\n     'U1SvWKZWom9nK/HfQ3+v2HYZSMStayTNN0PYKqg11P1nWsWq7u'.\n     '4gJeY8g9PLrddNXRdW8Iryv86I3ja/9s26gvukhDdvUQnIjlKr'.\n     'IdZCNH+3Xw779qbG63f//ZOzb6C4+ofdbzERrSAAAAAElFTkSu'.\n     'QmCC' ; \n\n        //==========================================================\n        // File: bl_darkgreen.png\n        //==========================================================\n        $this->imgdata_large[7][0]= 1113 ;\n        $this->imgdata_large[7][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAB2l'.\n     'BMVEX////////3///v///n/+/e99bW/+/W99bO786/v7++vr69'.\n     '/96999a7wb24vbu1/9a1zqW1u7itxrWosq6l772l1qWlxrWlxq'.\n     '2lva2cxpSU562U3q2UxqWUvaWUpZyM77WM57WMvYyMtZyMrZyM'.\n     'pZSMnJSEvZyEtYyErZSElIx7zpR7xpx7xpR7vZR7jIRz1pRzxp'.\n     'RzjIRrzpRrzoxrxoxrtYRrrYxrrXtrpYRrhHNjzoxjxoxjxoRj'.\n     'vYRjtYRjrXtjpXtjlGNje2tazoxazoRaxoxaxoRavYRatYRatX'.\n     'tarXtapXNanHNajFpae2tSzoRSxoRSvXtStXtSrXtSrXNSpXNS'.\n     'nHNSnGtSlGtSlGNSjGtSjGNKvXtKtXNKrXNKpWtKnGtKlGNKjG'.\n     'NKhGNKhFJKc1pKa1JCrWtCpWtCnGtClGNCjGNCjFpChFpCe1JC'.\n     'a1JCY1I5pWs5nGM5lGM5jFo5hFo5e1o5c0o5WkoxjFoxhFoxhF'.\n     'Ixe1Ixc1Ixc0oxa0ophFIpe0opc0opa0opa0IpY0IpWkIpWjkp'.\n     'UkIpUjkhc0oha0IhY0IhWjkhWjEhUjkhUjEhSjEhSikhQjEhQi'.\n     'kYWjkYSjEYSikYQjEYQikQSikQQikQQiEQOSExf8saAAAAAXRS'.\n     'TlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAd'.\n     'LdfvwAAAAHdElNRQfTAwkRFCaDkWqUAAAB+ElEQVR4nI3S+1vS'.\n     'UBgHcGZlPV0ks/vFrmQWFimJjiwiYUJWjFBWFhClyZCy5hLrwA'.\n     'x2EIwJC1w7zf2vnU0re+iHvs9++7x7zznvORbLf+TA6ct9fYMX'.\n     'jrfAUYefpp+/iM1ykxf/lmuhUZ/PTwXC8dml5Wcd23o5H5Mk6b'.\n     '5NUU8icXbhS67rNzn9JDnguOEYGQtEEtwC+Crs3RJ76P5A/znr'.\n     'vsNX7wQnEiwHCtK7TTkW8rvdZ9uJtvZTLkxpHhSrP66bNEj7/P'.\n     '3WNoLYeeSWQQCIpe9lQw7RNEU5rDsIYtcJ14Nocg7kRUlBNkxn'.\n     'YmGKcp7cv3vPwR7XOJPmc0VYU3Sv0e9NOBAYG7Hbz/cMjTMveZ'.\n     'CHkqxuTBv0PhYJB4N3XR6PJ5rMAPMnpGUxDX1IxSeMTEaZp1OZ'.\n     'nGAIQiYtsalUIhFlmGTy3sO3AizJCKn6DKYryxzHsWyaneMzr6'.\n     'cWxRVZVlFTe4SpE3zm+U/4+whyiwJcWVMQNr3XONirVWAklxcE'.\n     'EdbqchPhjhVzGpeqhUKhWBQhLElr9fo3pDaQPrw5xOl1CGG1JE'.\n     'k1uYEBIVkrb02+o6RItfq6rBhbw/tuINT96766KhuqYpY3UFPF'.\n     'BbY/19yZ1XF1U0UNBa9T7rZsz80K0jWk6bpWGW55UzbvTHZ+3t'.\n     'vbAv/IT+K1uCmhIrKJAAAAAElFTkSuQmCC' ; \n\n        //==========================================================\n        // File: bl_green.png\n        //==========================================================\n        $this->imgdata_large[8][0]= 1484 ;\n        $this->imgdata_large[8][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABm'.\n     'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.\n     'B3RJTUUH0wMMFjM4kcoDJQAABVlJREFUeNq9ll2MJFUVx3/11V'.\n     'Vd/TE9vU0v4zLDwJIF16jBqLAPhsRXEiDqg0QTJiQSjcSNvCzw'.\n     'sBEDDxizhvAAxBgf1oR9QF9NiE9ESFZkQyZB5WtddmdnZ3qqqr'.\n     'uqbt367Cofqu3ZZpWVaDzJfbkf53//55z/PVdZXV3l/2H6f7Lp'.\n     '5VdOV/4Nb+GmHpUeA7AdBNxc3kafNb73jRPK9Xwon8ToxVefqU'.\n     'b91wibH5EkCQBCizFihTSviHUHR0hWws9xe3wvJ7/7nPKpgX5y'.\n     '9oFqt3eOgWniRBoAbUBGGqZUibSYaeoT2B5bnkdaSA6793Cv/S'.\n     'QPPbihXBfo5VdOV+8dfgnvwAU62YH5fCZ12sDujFkwyegCqTrB'.\n     'iUOKTOJKj8jr88jS8zy6cXwBTP048nuHX0I0nDlIp7RpTG7kM0'.\n     'sdyAYsTVukUuWGhlWHMq0ITL92lnUp9R1Obz/GmTNnqn9bDD8/'.\n     '+0D1oX0O0zQZZDYCsK2j3Gl9jQqDfHiei8GfiKVLlsZkJaBAN1'.\n     '0i6PgwUbB0GxG5/PrtE/xLRr959Znqw9452oVNI+jiJhnr1pe4'.\n     'k29zB1/nFr5Kj7tpt1YYhJ0FJ7nUYbcJQBgahN2MzeCP/OipR6'.\n     'prgN6Qr6ELFQFUWoRpNVjlKwxZB8DCpE+PtfEKqV1cUzxpVudu'.\n     'GTBHA5Y1g99e+dUio9O/P1Vpq+/WE5GGjDSMoAtAQjrf3C52IP'.\n     'QxpY4WK2hpReka9Gfrhqgz0bACRoCWjDh56kQ1z9FeuUUQxVhK'.\n     'B92sD1VahM+bAJgcoJhGjP/6Ln8rAgDiRCVRKiIzxMkkodBJ85'.\n     'im1IlEHbE4k1xyNveL4YP8HarmGJIOpqyjeQmfNHmTvnqZTWBt'.\n     'vIJXpPwlukJSuSTKGK3pEwtJmiX00ZlInTyNscImO6XBITvH1c'.\n     '8vVt2OucdKvIyeKRTNCivsEMgcpg6taYs30nfq0Gqg6hOSSFJ4'.\n     'BSnJPht0IqEjWmOGocEI6F0J94F0qaL6BntTF0MtUfweKQKAPU'.\n     'Wwp4OcVnQAmVb0p9DLOzjEhEKnGRmoRc7EzRGlwA6NujAKG4yP'.\n     '6Sjwc4aVznZ7DK0xXdkDoJf0kGmFBniFBOBGcZSCCSKd0IwN0k'.\n     'IS+QZWCGVZex4BnUxya3+Zt9iugQbcRFpIAtuHvAZulPUdLhUJ'.\n     'RqegI3WcqaSXddlT3idsWMSRRGkEtNwmyTifAwyBo7LP+11J0e'.\n     '7tM7pZOYblHkBLcqZ5LcYtw6Wbd4CM3SpE9foYZsIHoqDKCrbz'.\n     'mLSQtPwmuhXgtBLs0GBdbXOhFGB7WBKO2F8GXt9/VO97Ya3atF'.\n     '7nUHnwGjGGQqcPxFEdFqURkEidiZszAERoYIsGju1hq21kWee3'.\n     'bw15+8WpsvAy3K1+i3JkkhZyPpxxjjPOsfOYiZ+TFhLPzQnHOU'.\n     'tpzGB2dgA4tscIkKIx19Cxg/fPL7vQJu47eXt1VvsDK8pwPueZ'.\n     'PuZoQMOqhRoJHSs0kKLBWjvjYinmeQGw1TaX1RFdfZ3LMzYLjA'.\n     'C++dkn6AaH2Nobk6cxEzdnuG0TdC8zvdJkN0hqkFkO/jwL0fxa'.\n     'so8sBcuFzQ+/+MRC+BeAHnpwQzn++ee5KT9Eshuy46dcKAXm32'.\n     '0uzPQhS4GttkH2GQID2Wc0Y4LtAbDxhZ/x5A+e/uTG9+jGceXH'.\n     '9/ySnnIXnUzOxXe1038mW3ZynNmam4yYWkO+f9cv+Oljz16/lV'.\n     '9tDz/9nerc1hm8ZEScSRK7VvtYl1i1dklsOKyvc+zg/bzw1O8+'.\n     '/efkajt56kR1ydlEJBc5H46xzbrJ3dY9wrB7hGcff+6/+279L+'.\n     '0fHxyiE8XMLl4AAAAASUVORK5CYII=' ; \n\n        //==========================================================\n        // File: bl_blue.png\n        //==========================================================\n        $this->imgdata_large[9][0]= 1169 ;\n        $this->imgdata_large[9][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAACEF'.\n     'BMVEX/////////7//35//v1v/exv/Wvf/Wrf/Wpf/Orf+/v7+9'.\n     'tc69jP+9hP+5ucW1tc6tlP+rq7Wlpdalpcalpb2cnM6cnMacc/'.\n     '+cWv+UlLWUjN6UjK2Uc/+Ma/+MUv+EhKWEa/+EQvd7e8Z7e7V7'.\n     'e6V7c957Wv9za9Zza8ZzSv9ra5xrSv9rOf9rMe9jUudjQv9jOe'.\n     '9aWpRaUt5aUpRaSu9aSudSUoxSSs5SSoxSMf9KQtZKOfdKMedK'.\n     'Kf9KKe9CKf9CKb1CKa1CIfdCIedCId45MXs5Kfc5If85Iec5Id'.\n     'Y5GP8xMbUxMXsxKc4xKZQxIf8xGP8xGO8xGN4xGNYxGL0xGK0p'.\n     'KXMpIYwpGP8pGO8pGOcpGNYpGM4pEP8pEPcpEOcpEN4pENYpEM'.\n     'YpEL0hGKUhEP8hEPchEO8hEOchEN4hENYhEM4hEMYhELUhCP8h'.\n     'CO8hCN4YGJwYGGsYEL0YEK0YEHMYCN4YCM4YCMYYCL0YCKUYAP'.\n     '8QEJQQEIwQEHsQEGsQCM4QCLUQCK0QCKUQCJwQCJQQCIwQCHMQ'.\n     'CGsQAP8QAPcQAO8QAOcQAN4QANYQAM4QAMYQAL0QALUQAKUQAJ'.\n     'QQAIQICGsICGMIAO8IANYIAL0IALUIAK0IAKUIAJwIAJQIAIwI'.\n     'AIQIAHsIAHMIAGsIAGMAAN4AAMYAAK0AAJQAAIwAAIQAAHMAAG'.\n     'sAAGMAAFrR1dDlAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgA'.\n     'AAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkRFRPMOZ'.\n     '/2AAAB+klEQVR4nGNgIAIIqeqZmBqpi2JISNml5lVXV3d198Yo'.\n     'oUjwm1SnxsbGRsSm5ZfNXO4tjCTjVh0ABhFx6QV9E1Y0S8JkuN'.\n     '3yAgLc7W3t/QPi4jPKJ8ye1yoIlTKpjvVy15eVUbN0i4zKLJ8w'.\n     'ae6qcKgLqmMj3PUFWFl5NJ0CExLLJzbNW7BWCyxlXR0ba6/Axs'.\n     'zELmfnkRBT0QiSKgXJCOflxUbYy3KyMHEoOrtEZ1c2TZ6/cMl6'.\n     'eaCUamdsbIC7tjgPr4SBS3BMMVDTwkXr1hsDpYy6UmMj/O0tdX'.\n     'QNbDxjknJLWqYsXLx0vStQynxGflpkZGCgs7Onp29SbtNkoMy6'.\n     'pevCgFJWy3oyMuKjgoKCPWNCvEuqWhcsWrJ06XqQlPnMvrKyrM'.\n     'TomJjkZAfHlNa2qdOWrlu63gcopbG8v7+hvLwip7g4JdSxsLZu'.\n     '8dKlS9ettwBKic2eNXHChIkTG5tKqgpr2uo6loLAehWQx0LnzJ'.\n     '49p6mpeXLLlNq6RUvqly6dvnR9Bx9ISnnlvLmT582bMr9t4aL2'.\n     '+vrp60GaDCGB6Ld6wfwFCxYCJZYsXQ+SmL6+FBryInVrFi1atH'.\n     'jJkqVQsH6pNCzCJNvXrQW6CmQJREYFEc2CYevXrwMLAyXXl0oz'.\n     'IAOt0vVQUGSIkabkDV3DwlzNVDAksAAAfUbNQRCwr88AAAAASU'.\n     'VORK5CYII=' ; \n\n        //==========================================================\n        // File: bs_red.png\n        //==========================================================\n        $this->imgdata_small[0][0]= 437 ;\n        $this->imgdata_small[0][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAk1'.\n     'BMVEX////////GxsbGra3/xsbOhITWhIT/hIT/e3v/c3P/a2vG'.\n     'UlK1SkrOUlL/Y2PWUlLGSkrnUlLeSkrnSkr/SkqEGBj/KSmlGB'.\n     'jeGBjvGBj3GBj/EBD/CAj/AAD3AADvAADnAADeAADWAADOAADG'.\n     'AAC9AAC1AACtAAClAACcAACUAACMAACEAAB7AABzAABrAABjAA'.\n     'BuukXBAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZ'.\n     'cwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkUGDNEMgOYAAAAm0'.\n     'lEQVR4nI3Q3RKCIBAFYGZMy9RKzX7MVUAUlQTe/+kS0K49d3wD'.\n     '7JlFaG+CvIR3FvzPXgpLatxevVVS+Jzv0BDGk/UJwOkQ1ph2g/'.\n     'Ct5ACX4wNT1o/zzUoJUFUGBiGfVnDTYGJgmrWy8iKEtp0Bpd2d'.\n     'jLGu56MB7f4JOOfDJAwoNwslk/jOUi+Jts6RVNrC1hkhPy50Ef'.\n     'u79/ADQMQSGQ8bBywAAAAASUVORK5CYII=' ; \n\n\n        //==========================================================\n        // File: bs_lightblue.png\n        //==========================================================\n        $this->imgdata_small[1][0]= 657 ;\n        $this->imgdata_small[1][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAABVl'.\n     'BMVEX////////d///AwMC7wcS08P+y+P+xxdCwxM+uws2twMur'.\n     'vsinzNynytylzuKhyN6e5v6d5P+d1fOcwNWcu8ub4f+at8iZ3v'.\n     '+ZvdGY2/yW2f+VscGU1vuT1fqTr72Sx+SSxeKR0fWRz/GPz/OP'.\n     'rr+OyeqMy+6Myu2LyeyKxueJudSGw+SGorGDvt+Cvd6CvN2Aud'.\n     'p+uNd+t9Z9tdV8tdR8tNN6sc94r813rct2q8h0qcZ0qMVzp8Rx'.\n     'o8Bwor5tn7ptnrptnrlsnbhqmbRpmbNpi51ol7Flkqtkkqtkka'.\n     'pjj6hijaRhjaZgi6NfiqJfiaFdh55bhJtag5pZgphYgJZYf5VX'.\n     'cn9Ve5FSeI1RdopRdYlQdYlPc4dPcoZPcoVNcINLboBLbH9GZn'.\n     'hGZXdFZHZEY3RDYnJCXW4/W2s/WWg+Wmo7VmU7VGM7U2E6VGM6'.\n     'VGI5UV82T1wGxheQAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHU'.\n     'gAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkUGTok'.\n     '9Yp9AAAAtElEQVR4nGNgIBaw8wkpKghzwvksPAKiUsraprYiLF'.\n     'ARXkE2JiZ1PXMHXzGIAIekOFBE08TGLTCOCyzCLyvDxsZqZOnk'.\n     'E56kAhaRV9NQUjW2tPcMjs9wBYsY6Oobmlk7egRGpxZmgkW0zC'.\n     '2s7Jy9giKT8gohaiQcnVzc/UNjkrMLCyHmcHr7BYREJKTlFxbm'.\n     'QOxiEIuKTUzJKgQCaZibpdOzQfwCOZibGRi4dcJyw3S4iQ4HAL'.\n     'qvIlIAMH7YAAAAAElFTkSuQmCC' ; \n\n        //==========================================================\n        // File: bs_gray.png\n        //==========================================================\n        $this->imgdata_small[2][0]= 550 ;\n        $this->imgdata_small[2][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAAQCAMAAADH72RtAAABI1'.\n     'BMVEX///8AAAD8EAD8IAD8NAD8RAD8VAAYGBi/v7+goKCCgoJk'.\n     'ZGRGRkb8yAD83AD87AD8/AD4+ADo+ADY+ADI+AC0+ACk+ACU+A'.\n     'CE+AB0/ABk/ABU/ABE/AAw/AAg/AAQ/AAA/AAA+AAA6BAA2CAA'.\n     'yDQAtEQApFQAlGQAhHQAdIgAZJgAVKgARLgAMMgAINwAEOwAAP'.\n     'wAAPgIAPAQAOgYAOAkANgsANA0AMg8AMBEALhMALBUAKhcAKBo'.\n     'AJhwAJB4AIiAAID////4+Pjy8vLs7Ozm5ubg4ODa2trT09PNzc'.\n     '3Hx8fBwcG7u7u1tbWurq6oqKiioqKcnJyWlpaQkJCJiYmDg4N9'.\n     'fX13d3dxcXFra2tkZGReXl5YWFhSUlJMTExGRkZAQEA1BLn4AA'.\n     'AAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIA'.\n     'AAsSAdLdfvwAAAAHdElNRQfTAwkUGiIctEHoAAAAfElEQVR4nI'.\n     '2N2xKDIAwF+bZ2kAa8cNFosBD//yvKWGh9dN+yk9kjxH28R7ze'.\n     'wzBOYSX6CaNB927Z9qZ66KTSNmBM7UU9Hx2c5qjmJaWCaV5j4t'.\n     'o1ANr40sn5a+x4biElrqHgrXMeac/c1nEpFHG0LSFoo/jO/BeF'.\n     'lJnFbT58ayUf0BpA8wAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        // File: bs_greenblue.png\n        //==========================================================\n        $this->imgdata_small[3][0]= 503 ;\n        $this->imgdata_small[3][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAxl'.\n     'BMVEX///////+/v79znJQhSkJ7raU5hHtjraVKnJRCjIRClIyU'.\n     '9++E595avbVaxr2/v7+ctbWcvb17nJxrjIx7paUxQkK9//+Mvb'.\n     '17ra2Evb17tbVCY2MQGBiU5+ec9/eM5+d71tZanJxjra1rvb1j'.\n     'tbVSnJxara1rzs5jxsZKlJRChIQpUlIhQkJatbVSpaU5c3MxY2'.\n     'MYMTEQISFavb1Sra1KnJxCjIw5e3sxa2spWlpClJQhSkoYOTkp'.\n     'Y2MhUlIQKSkIGBgQMTH+e30mAAAAAXRSTlMAQObYZgAAAAFiS0'.\n     'dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfT'.\n     'AwkUGTIqLgJPAAAAqklEQVR4nI2QVxOCMBCEM6Mi2OiCvSslJB'.\n     'CUoqjn//9TYgCfubf9Zu9uZxFqO+rscO7b6l/LljMZX29J2pNr'.\n     'YjmX4ZaIEs2NeiWO19NNacl8rHAyD4LR6jjw6PMRdTjZE0JOiU'.\n     'dDv2ALTlzRvSdCCfAHGCc7yRPSrAQRQOWxKc3C/IUjBlDdUcM8'.\n     '97vFGwBY9QsZGBc/A4DWZNbeXIPWZEZI0c2lqSute/gCO9MXGY'.\n     '4/IOkAAAAASUVORK5CYII=' ; \n\n        //==========================================================\n        // File: bs_yellow.png\n        //==========================================================\n        $this->imgdata_small[4][0]= 507 ;\n        $this->imgdata_small[4][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAzF'.\n     'BMVEX///////+/v79zYwCMewDOxoTWzoTezkr/5wj/5wDnzgDe'.\n     'xgC1pQCtnACllACcjACUhABjWgDGvVK1rUrOxlLGvUqEexilnB'.\n     'jv3hj35xj/7wj/7wD35wDv3gDn1gDezgDWxgDOvQDGtQC9rQCE'.\n     'ewB7cwBzawBrYwDWzlLn3lLe1krn3kre1hi9tQC1rQCtpQClnA'.\n     'CclACUjACMhAD/9wC/v7///8bOzoT//4T//3v//3P//2v//2Pn'.\n     '50r//0r//yn39xj//xD//wBjYwDO8noaAAAAAXRSTlMAQObYZg'.\n     'AAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAH'.\n     'dElNRQfTAwkUGSDZl3MHAAAAqElEQVR4nI3QWRNDMBAA4My09E'.\n     'IF1SME0VT1okXvM/3//6kEfbZv+81eswA0DfHxRpOV+M+zkDGG'.\n     'rL63zCoJ2ef2RLZDIqNqYexyvFrY9ePkxGWdpvfzC7tEGtIRly'.\n     'nqzboFKMlizAXbNnZyiFUKAy4bZ+B6W0lRaQDLmg4h/k7eFwDL'.\n     'OWIky8qhXUBQ7gKGmsxpC+ah1TdriwByqG8GQNDNr6kLjf/wAx'.\n     'KgEq+FpPbfAAAAAElFTkSuQmCC' ; \n\n        //==========================================================\n        // File: bs_darkgray.png\n        //==========================================================\n        $this->imgdata_small[5][0]= 611 ;\n        $this->imgdata_small[5][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAMAAAAMCGV4AAABJl'.\n     'BMVEX////////o8v/f6O7W4OnR3PXL1OTL0evEyLvCzePAwMC/'.\n     'v7a8wsq7t7C1xum1vtS1q6GzopmyxeKsrsOqvNWoq7anvN+nsb'.\n     'qhrcGgqbGfpq6cp7+bqMuVmJKRm7yPlKKMnL6FkKWFipOEkLSE'.\n     'j6qEhoqAiaB+jqd8haF7hZR4iJt4g5l3hZl2gIt2cod1hJVzeY'.\n     'VzboJvhp9sfJJsb41peY1pd5xpdoVod4xndI5lcHxka4BjcYVg'.\n     'Z3BfboFbb4lbZnZbYntaZ4laZYVZV3JYYWpXX3JWWm5VX4RVW2'.\n     'NUYX9SXHxPWn5OVFxNWWtNVXVMVWFKV3xHUGZGU3dGTldFSlxE'.\n     'Sk9ESXBCRlNBS3k/SGs/RU4+R1k9R2U6RFU2PUg0PEQxNU0ECL'.\n     'QWAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAA'.\n     'CxIAAAsSAdLdfvwAAAAHdElNRQfTAwkUGQmbJetrAAAAtklEQV'.\n     'R4nGNgwAK4JZTNNOWlYDxhMT4ZDTOzQE1uMF9CiJWVU0LbxDlS'.\n     'G8QVF+FnZ2KRNHAIiPUHaZGSlmZj5lH19A1KjLUA8lXU5MWllF'.\n     'yjo30TYr2BfG19G11b37CEeN84H38gX1HbwTUkOjo+zjfG3hLI'.\n     'l1exCvCNCwnxjfMz0gTyRdXNHXx9fUNCQu2MwU6SN3ZwD42LCH'.\n     'W30IK4T8vUJSAkNMhDiwPqYiktXWN9JZj7UQAAjWEfhlG+kScA'.\n     'AAAASUVORK5CYII=' ; \n\n\n        //==========================================================\n        // File: bs_darkgreen.png\n        //==========================================================\n        $this->imgdata_small[6][0]= 666 ;\n        $this->imgdata_small[6][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAABX1'.\n     'BMVEX////////l/+nAwMC86r+8wb28wby8wLy78sCzw7SywrSx'.\n     'wLKwvrGuvK+syK+ryq2rx62n36ym3aumxKmk2qij0Keh16ahva'.\n     'Og1aSguKKe06KeuaCetZ+d0KGdtZ+bz6Cay56ZyZ2Zwp2Zr5qZ'.\n     'rpqYwJuXyZuXrJmVw5mUxZiTxJeTw5eTq5WRwJWPtJKOvZKKuI'.\n     '6Kt42Kn4yJt42ItIuGsomFsYmEsIiEr4eDr4eBrIR/qoN+qIJ8'.\n     'poB7pH56o356on14nnt2nXl0mndzmnZzmXZymHVwlXNvlHJukn'.\n     'FtiHBqjm1qjW1oi2toiWpniWplh2hlhmdkhWdig2VggGNgf2Je'.\n     'fmFdfGBde19bbl1aeFxXdFpWclhVclhVcVdUcFZTb1VSbVRQal'.\n     'JPaVFKY0xKYkxJYUtIYEpHX0lEWkZCWERCV0NCVkM/U0A+U0A+'.\n     'UUA+UEA9Uj89UT48Tj45TDvewfrHAAAAAXRSTlMAQObYZgAAAA'.\n     'FiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElN'.\n     'RQfTAwkUGRjxlcuZAAAAtElEQVR4nGNgIBZw8osqqIpzw/msfI'.\n     'IiUmr6lo6SbFARASEOJiYtQ2uXADmIAJeEGFBE18LBMySBBywi'.\n     'LC/LwcFiZuvmH5WiAxZR0tRW1DC3dfYJS8zyAouYGBibWtm7+o'.\n     'TEpZfkgEX0rG3snNx9Q2NSCksgaqRd3Ty8gyLiU/NKSiDmcPsF'.\n     'BodHJ2UUlZTkQ+xikIlNSE7LLgECZagL2VQyc0H8YnV2uD94jS'.\n     'ILIo14iQ4HALarJBNwbJVNAAAAAElFTkSuQmCC' ; \n\n        //==========================================================\n        // File: bs_purple.png\n        //==========================================================\n        $this->imgdata_small[7][0]= 447 ;\n        $this->imgdata_small[7][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAnF'.\n     'BMVEX///////+/v7/Gvca9rb3Grcb/xv+1hLWte629hL21e7XG'.\n     'hMbWhNbOe87We9b/hP//e/97OXv/c///a///Y/+cOZz/Sv/WOd'.\n     'bnOefvOe//Kf9jCGNrCGv/EP//CP/nCOf/AP/3APfvAO/nAOfe'.\n     'AN7WANbOAM7GAMa9AL21ALWtAK2lAKWcAJyUAJSMAIyEAIR7AH'.\n     'tzAHNrAGtjAGPP1sZnAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgF'.\n     'HUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkUGS'.\n     'o5QpoZAAAAnElEQVR4nI3Q2xJDMBAG4MyQokWrZz3oSkJISJH3'.\n     'f7dK0Gv/Xb7J7vyzCK0NjtPsHuH/2wlhTE7LnTNLCO/TFQjjIp'.\n     'hHAA6bY06LSqppMAY47x+04HXTba2kAFlmQKr+YuVDCGUG2k6/'.\n     'rNwYK8rKwKCnPxHnVS0aA3rag4UQslUGhrlk0Kpv1+sx3tLZ6w'.\n     'dtYemMkOsnz8R3V9/hB87DEu2Wos5+AAAAAElFTkSuQmCC' ; \n\n\n        //==========================================================\n        // File: bs_brown.png\n        //==========================================================\n        $this->imgdata_small[8][0]= 677 ;\n        $this->imgdata_small[8][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAABaF'.\n     'BMVEX//////////8X/3oD/3nj/1HX/0Gr/xGP/rkv/gBf+iS/2'.\n     'bAL1agDxaQDuZwDrZwLpZQDmZQLlZADjcx7gZATeYQDdZgraXw'.\n     'DZXwHYXgDXiEvXZAvUjlfUXwXTjVfTbR7ShUvRbR7RWwDMWQDL'.\n     'WADKooLKWADJoYLJgkvHWATGoILFn4LFgEvFVgDEZx7EVQDDt6'.\n     '/DVQDCt6/CnoLChlfCVADAwMC+hFe+UgC8UgC6UQC4gVe4UAC3'.\n     'gVe3UAC1gFe1eUu1TwC1TgCzTgCwTQKuTACrSgCqSgCpSgCpSQ'.\n     'CodEulSACkRwCiRgCdRACcRACaQwCYQgCWQgKVQQCVQACUQACS'.\n     'UR6RPwCOPgCNPQCLPACKPACJOwCEOQCBOAB+NwB9NgB8NgB7NQ'.\n     'B6NwJ4NAB3RR52MwB0MgBuLwBtLwBsLwBqLgBpLQBkLQJiKgBh'.\n     'KgBgKwRcKABbKQJbJwBaKQRaJwBYKAJVJQDZvdIYAAAAAXRSTl'.\n     'MAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLd'.\n     'fvwAAAAHdElNRQfTAwkUGho0tvl2AAAAtklEQVR4nGNgIBaoSg'.\n     'mLKGpowfkGMty8AqJKpi4mRlAROR5ONg4JFUv3YHOIgDo/HwsT'.\n     'q6yps29EsjZYREFIkJ2ZS9/OMzA20wEsIi8uKSZtaOPmH5WSFw'.\n     'YW0VRW07Vw8vCLSMguLwCL6FlaObp6B0TGZxSXQ9TouHv6+IXG'.\n     'JGYWlpdDzNEKCgmPjkvLKS0vL4LYxWAen5SelV8OBNZQFxrZ5h'.\n     'aC+GX2MDczMBh7pZakehkTHQ4AA0Am/jsB5gkAAAAASUVORK5C'.\n     'YII=' ; \n\n        //==========================================================\n        // File: bs_blue.png\n        //==========================================================\n        $this->imgdata_small[9][0]= 436 ;\n        $this->imgdata_small[9][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAk1'.\n     'BMVEX///////+/v7+trcbGxv+EhM6EhNaEhP97e/9zc/9ra/9S'.\n     'UsZKSrVSUs5jY/9SUtZKSsZSUudKSt5KSudKSv8YGIQpKf8YGK'.\n     'UYGN4YGO8YGPcQEP8ICP8AAP8AAPcAAO8AAOcAAN4AANYAAM4A'.\n     'AMYAAL0AALUAAK0AAKUAAJwAAJQAAIwAAIQAAHsAAHMAAGsAAG'.\n     'ONFkFbAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZ'.\n     'cwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkUGhNNakHSAAAAmk'.\n     'lEQVR4nI3P2xKCIBAGYGfM6SBWo1nauIqogaDA+z9dK9Lhrv47'.\n     'vtl/2A2CfxNlJRRp9IETYGraJeEb7ocLNKznia8A7Db7umWDUG'.\n     'sxAzhurxRHxok4KQGqCuEhlL45oU1D2w5BztY4KRhj/bCAsetM'.\n     '2uObjwvY8/oX50JItYDxSyZSTrO2mNhvGMbaWAevnbFIcpuTr7'.\n     't+5AkyfBIKSJHdSQAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        // File: bs_green.png\n        //==========================================================\n        $this->imgdata_small[10][0]= 452 ;\n        $this->imgdata_small[10][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAn1'.\n     'BMVEX///////+/v7+/v7/G/8aUxpSMvYyUzpSMzoyM1oxarVqE'.\n     '/4R7/3tavVpKnEpaxlpz/3Nr/2tKtUpj/2Na51pKzkpK1kpK50'.\n     'pK/0oYcxgp/ykYlBgY3hgY7xgY9xgQ/xAI/wgA/wAA9wAA7wAA'.\n     '5wAA3gAA1gAAzgAAxgAAvQAAtQAArQAApQAAnAAAlAAAjAAAhA'.\n     'AAewAAcwAAawAAYwA0tyxUAAAAAXRSTlMAQObYZgAAAAFiS0dE'.\n     'AIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAw'.\n     'kUGgW5vvSDAAAAnklEQVR4nI3QSxKCMAwA0M4gqCgoiiJ+kEAL'.\n     'LQUq0PufzX7ENdnlJZNkgtDS2CYZvK6bf+7EoKLA9cH5SQzv6A'.\n     'YloTywsAbYr44FrlgrXCMJwHl3xxVtuuFkJAPIcw2tGB9GcFli'.\n     'oqEf5GTkSUhVMw2TtD0XSlnDOw3SznE5520vNEi7CwW9+Ayjyq'.\n     'U/3+yPuq5gvhkhL0xlGnqL//AFf14UIh4mkEkAAAAASUVORK5C'.\n     'YII=' ; \n\n\n        //==========================================================\n        // File: bs_white.png\n        //==========================================================\n        $this->imgdata_small[11][0]= 480 ;\n        $this->imgdata_small[11][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAAQCAYAAADwMZRfAAAABm'.\n     'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.\n     'B3RJTUUH0wMLFTsY/ewvBQAAAW1JREFUeJytkz2u4jAUhT/jic'.\n     'gfBUKiZhE0bIKeVbCWrIKenp6eDiGlCEEEBArIxvzGU4xeZjLk'.\n     'jWb05lRXuvbx+exr4bouX1Xjyw7Atz81F4uFBYjjGIDhcCjq1o'.\n     'k6nN1uZwFerxfP55Msy1itVmRZBsB4PK6YveHkeW5d18XzPIIg'.\n     'wPd9Wq0WnU6HMAxJkoQoiuynOIfDwUopkVIihKAoCgAcx6Hdbm'.\n     'OMIU1T5vN55eBKEikljUYDIX6kFUKU9e8aDAZlmjcca+1b7TgO'.\n     '1+uVy+VS9nzfr8e53++VzdZaiqIgz3OMMWitOZ/PaK0JgqDeRC'.\n     'mF53lIKYGfr3O73TDGoJQiTVO01nS73XqT4/FIs9kkCAIej0eZ'.\n     'brPZEMcxSZKgtQZgMpmIWpN+vy+m06n1PK9yTx8Gy+WS/X5Pr9'.\n     'er9GuHLYoiG4YhSilOpxPr9Zrtdlti/JriU5MPjUYjq7UuEWaz'.\n     '2d+P/b/qv/zi75oetJcv7QQXAAAAAElFTkSuQmCC' ; \n\n\n        //==========================================================\n        // File: bs_cyan.png\n        //==========================================================\n        $this->imgdata_small[12][0]= 633 ;\n        $this->imgdata_small[12][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAABPl'.\n     'BMVEX////////F///AwMCvxsaC1NSC0dGCz8+CzMyA//94//91'.\n     '//9q//9j//9X4uJX09NXz89Xx8dXxMRL//9L5uZL3d1L2NhLxs'.\n     'ZLt7cv//8e9fUe8fEe7u4e398epqYehoYX//8L+PgK//8F9fUE'.\n     '/v4E5+cEb28EZ2cC//8C/v4C/f0CzMwCrq4Cjo4CdXUCaWkCZW'.\n     'UB/PwA//8A/f0A+/sA8/MA7e0A7OwA6+sA5eUA5OQA4uIA4eEA'.\n     '3NwA2toA2NgA1dUA09MA0tIA0NAAysoAxsYAxcUAxMQAv78Avr'.\n     '4AvLwAtrYAtbUAs7MAsLAAra0Aq6sAqKgApaUApKQAoqIAoKAA'.\n     'n58AmpoAlZUAk5MAkpIAkJAAj48AjIwAiYkAh4cAf38AfX0Ae3'.\n     'sAenoAcnIAcHAAa2sAaWkAaGgAYmIUPEuTAAAAAXRSTlMAQObY'.\n     'ZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAA'.\n     'AHdElNRQfTAwkUGQDi+VPPAAAAtElEQVR4nGNgIBawikipyIiy'.\n     'wfksfJpGRkamNtr8LFARPiMFHmFDcztXfwGoFi0jLiZuZRtnry'.\n     'BddrCIiJEGL6eklYO7X3iCOFhE2thESdHawdUnJDZFDiyiamZh'.\n     'aevk5h0UlZSpBhaRtbN3dPHwDY5MSM+EqBFzc/f0DgiLTkjLzI'.\n     'SYw6bjHxgaEZeckZmpD7GLQSAqJj4xNRMIBGFuFtRLA/ENhGBu'.\n     'ZmDgkJBXl5fgIDocAAKcINaFePT4AAAAAElFTkSuQmCC' ; \n\n        //==========================================================\n        // File: bs_bluegreen.png\n        //==========================================================\n        $this->imgdata_small[13][0]= 493 ;\n        $this->imgdata_small[13][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAvV'.\n     'BMVEX///////+/v79j//855/8x3v851v9Spb1C1v8AOUqEtcZK'.\n     'lK1StdYxzv8hxv8AY4QASmNSlK1KpcZKtd4YQlIYnM4YrecIvf'.\n     '8AtfcAre8AjL0AhLUAc5wAa5QAWnsAQloAKTkAGCFKhJxKrdYY'.\n     'jL0Ypd4Atf8ArfcApecAnN4AlM4AjMYAe60Ac6UAY4wAUnNSnL'.\n     '0AlNYAWoQASmsAOVIAITGEtc4YWnsAUnsAMUqtvcaErcYAKUIA'.\n     'GCkAECHUyVh/AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAA'.\n     'AJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkUGxNUcXCT'.\n     'AAAAqUlEQVR4nI2Q1xKCMBREM2NHLCCogAGCjd6SqLT8/2cZKT'.\n     '6zb3tm987OBWCsXoejp8rC35fi4+l6gXFZlD0Rz6fZ1tdDmKR9'.\n     'RdOmkzmP7DDpilfX3SzvRgQ/Vr1uiZplfsCBiVf03RJd140wgj'.\n     'kmNqMtuYXcxyYmNWJdRoYwzpM9qRvGujuCmSR7q7ARY00/MiWk'.\n     'sCnjkobNEm1+HknDZgAqR0GKU43+wxdu2hYzbsHU6AAAAABJRU'.\n     '5ErkJggg==' ; \n\n        //==========================================================\n        // File: bs_lightred.png\n        //==========================================================\n        $this->imgdata_small[14][0]= 532 ;\n        $this->imgdata_small[14][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAA3l'.\n     'BMVEX///////+/v7/Gvb0hGBj/5///3v//zu//1u//xucpGCG9'.\n     'nK21lKVSQkp7Wms5KTExISlaOUpjQlIhEBj/tdbOhKXnrcbGjK'.\n     'Wla4TetcbGnK2EWmv/rc73pcZ7UmOcY3vOpbW1jJzenLW9e5Rz'.\n     'Slq1c4xrQlJSOULGhJz/pcb3nL2chIzOnK33rcbelK3WjKWMWm'.\n     'vGe5SEUmM5ISnOtb3GrbXerb3vpb2ca3v/rcaUY3POhJxCKTF7'.\n     'SlrWnK21e4ytc4TvnLXnlK2la3taOUK1lJxrSlLGhJRjQkpSMT'.\n     'lw+q2nAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZ'.\n     'cwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwkUGjoP2Nm+AAAAr0'.\n     'lEQVR4nGNgIBaYiOk62imYwPnMkiIyso76yhJSzFARMxkRNk49'.\n     'a3t5OW6oFk1LVkYOfWUHKxUXiEYzLS12DnN3VXkjIRtFsIiSk5'.\n     '6evqGqhYGKugAfWMRa1FpD2UHeQEXQRlgALCJur+rgbCUNFOAS'.\n     'hqjRkZe3MpBTcwEKCEPMMTGSs3Xz8OQHCnBBHckt6OJpIyAMBD'.\n     'wwN/MYc4H4LK4wNzMwmGrzcvFqmxIdDgDiHRT6VVQkrAAAAABJ'.\n     'RU5ErkJggg==' ;\n\n        //==========================================================\n        // File: bxs_lightred.png\n        //==========================================================\n        $this->imgdata_xsmall[0][0]= 432 ;\n        $this->imgdata_xsmall[0][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAA3l'.\n     'BMVEX///////+/v7/Gvb0hGBj/5///3v//zu//1u//xucpGCG9'.\n     'nK21lKVSQkp7Wms5KTExISlaOUpjQlIhEBj/tdbOhKXnrcbGjK'.\n     'Wla4TetcbGnK2EWmv/rc73pcZ7UmOcY3vOpbW1jJzenLW9e5Rz'.\n     'Slq1c4xrQlJSOULGhJz/pcb3nL2chIzOnK33rcbelK3WjKWMWm'.\n     'vGe5SEUmM5ISnOtb3GrbXerb3vpb2ca3v/rcaUY3POhJxCKTF7'.\n     'SlrWnK21e4ytc4TvnLXnlK2la3taOUK1lJxrSlLGhJRjQkpSMT'.\n     'lw+q2nAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZ'.\n     'cwAACxEAAAsRAX9kX5EAAAAHdElNRQfTAwkUKBOgGhWjAAAAS0'.\n     'lEQVR4nGNgQAEmunYmEJaMCKe1vBxYzJKVQ9lKBSSupKdnaKGi'.\n     'zgdkiqs6WKnYcIGYJnK2HvzCwmCNgi42wsLCECNMeXlNUY0HAL'.\n     'DaB7Du8MiEAAAAAElFTkSuQmCC' ; \n\n        //==========================================================\n        // File: bxs_bluegreen.png\n        //==========================================================\n        $this->imgdata_xsmall[1][0]= 397 ;\n        $this->imgdata_xsmall[1][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAvV'.\n     'BMVEX///////+/v79j//855/8x3v851v9Spb1C1v8AOUqEtcZK'.\n     'lK1StdYxzv8hxv8AY4QASmNSlK1KpcZKtd4YQlIYnM4YrecIvf'.\n     '8AtfcAre8AjL0AhLUAc5wAa5QAWnsAQloAKTkAGCFKhJxKrdYY'.\n     'jL0Ypd4Atf8ArfcApecAnN4AlM4AjMYAe60Ac6UAY4wAUnNSnL'.\n     '0AlNYAWoQASmsAOVIAITGEtc4YWnsAUnsAMUqtvcaErcYAKUIA'.\n     'GCkAECHUyVh/AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAA'.\n     'AJcEhZcwAACxEAAAsRAX9kX5EAAAAHdElNRQfTAwkUKDVyF5Be'.\n     'AAAASUlEQVR4nGNgQAFmYqJcEJaEOJ+UrD5YTJKFTZrfGCQuaq'.\n     'glLWvMaQ5kqujo6hnbKIKYXPr68gp2dmCNJiZAlh3ECGsREWtU'.\n     '4wF1kwdpAHfnSwAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        // File: bxs_navy.png\n        //==========================================================\n        $this->imgdata_xsmall[2][0]= 353 ;\n        $this->imgdata_xsmall[2][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAk1'.\n     'BMVEX///////+/v7+trcbGxv+EhM6EhNaEhP97e/9zc/9ra/9S'.\n     'UsZKSrVSUs5jY/9SUtZKSsZSUudKSt5KSudKSv8YGIQpKf8YGK'.\n     'UYGN4YGO8YGPcQEP8ICP8AAP8AAPcAAO8AAOcAAN4AANYAAM4A'.\n     'AMYAAL0AALUAAK0AAKUAAJwAAJQAAIwAAIQAAHsAAHMAAGsAAG'.\n     'ONFkFbAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZ'.\n     'cwAACxEAAAsRAX9kX5EAAAAHdElNRQfTAwkUJxXO4axZAAAAR0'.\n     'lEQVR4nGNgQAGskhKsEJaslIi8ijpYTJaDU1FVAyQuKSujoKKh'.\n     'LQ5kSigpqWro6oOYrOoaWroGBmCNWiCWAdQwUVFWVOMBOp4GCJ'.\n     's5S60AAAAASUVORK5CYII=' ; \n\n        //==========================================================\n        // File: bxs_gray.png\n        //==========================================================\n        $this->imgdata_xsmall[3][0]= 492 ;\n        $this->imgdata_xsmall[3][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAABI1'.\n     'BMVEX///8AAAD8EAD8IAD8NAD8RAD8VAAYGBi/v7+goKCCgoJk'.\n     'ZGRGRkb8yAD83AD87AD8/AD4+ADo+ADY+ADI+AC0+ACk+ACU+A'.\n     'CE+AB0/ABk/ABU/ABE/AAw/AAg/AAQ/AAA/AAA+AAA6BAA2CAA'.\n     'yDQAtEQApFQAlGQAhHQAdIgAZJgAVKgARLgAMMgAINwAEOwAAP'.\n     'wAAPgIAPAQAOgYAOAkANgsANA0AMg8AMBEALhMALBUAKhcAKBo'.\n     'AJhwAJB4AIiAAID////4+Pjy8vLs7Ozm5ubg4ODa2trT09PNzc'.\n     '3Hx8fBwcG7u7u1tbWurq6oqKiioqKcnJyWlpaQkJCJiYmDg4N9'.\n     'fX13d3dxcXFra2tkZGReXl5YWFhSUlJMTExGRkZAQEA1BLn4AA'.\n     'AAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxEA'.\n     'AAsRAX9kX5EAAAAHdElNRQfTAwkUKC74clmyAAAAQklEQVR4nG'.\n     'NgQAVBYVCGt5dXYEQ0mOnp5h4QFgVmeri6+4dHxYMVeHoFRUTH'.\n     'gTUFBIZBWAwMkZEx8bFQM2Lj0UwHANc/DV6yq/BiAAAAAElFTk'.\n     'SuQmCC' ; \n\n        //==========================================================\n        // File: bxs_graypurple.png\n        //==========================================================\n        $this->imgdata_xsmall[4][0]= 542 ;\n        $this->imgdata_xsmall[4][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAABSl'.\n     'BMVEX////////11P/MqdvKrNfAwMC+u7+9u7+4rr24lsi3rby3'.\n     'lMe1rLq1o720q7i0oL20ksSzoryyqbaykMGxlb2wkL+vnbiujb'.\n     '2sjLuri7qpl7GoirWoibenmK2mla6mjLKmhrSllauki7CjhrCj'.\n     'hLGihLChg6+ggq2fkqadkKOcfqqai6Gag6WYe6WXeqSWeaOTd6'.\n     'CTd5+Rdp6RdZ6RdZ2Qg5eOc5qMcpiLcZeJb5WIbpOHbZKGbJGE'.\n     'a4+CaY2AZ4t/Z4p/Zop/Zol+Zol7ZIZ6Y4V5YoR1ZH11X391Xn'.\n     '9zXX1yXXtxXHtvWnluWXhsV3VqVnNpVXJoVHFnU3BmUm9jUGth'.\n     'VGdgTmheTGZcS2RcSmRaSWJYR19XRl5SQllRQlhQQVdPQFZOP1'.\n     'VLPlFJO09IPE5IOk5FOEtEN0lDOEpDOElDNklCNkc/M0XhbrfD'.\n     'AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACx'.\n     'EAAAsRAX9kX5EAAAAHdElNRQfTAwkUKCgREfyHAAAATUlEQVR4'.\n     'nGNgQAEcIko8EBY3M5Ougy+IxSXMwmTsFsAHZMqrSRvZB0W7A5'.\n     'k6FlYugXEZICaPr394Um4uSAFDRFRCbm4uxAihsDAhVOMBHT0L'.\n     'hkeRpo8AAAAASUVORK5CYII=' ; \n\n        //==========================================================\n        // File: bxs_red.png\n        //==========================================================\n        $this->imgdata_xsmall[5][0]= 357 ;\n        $this->imgdata_xsmall[5][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAk1'.\n     'BMVEX////////GxsbGra3/xsbOhITWhIT/hIT/e3v/c3P/a2vG'.\n     'UlK1SkrOUlL/Y2PWUlLGSkrnUlLeSkrnSkr/SkqEGBj/KSmlGB'.\n     'jeGBjvGBj3GBj/EBD/CAj/AAD3AADvAADnAADeAADWAADOAADG'.\n     'AAC9AAC1AACtAAClAACcAACUAACMAACEAAB7AABzAABrAABjAA'.\n     'BuukXBAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZ'.\n     'cwAACxEAAAsRAX9kX5EAAAAHdElNRQfTAwkUIyjy5SVMAAAAS0'.\n     'lEQVR4nGNgQAFsUpJsEJastIi8ijpYTJaDU0FVgxXIlJKVUVDR'.\n     '0BYHMiUUlVQ1dPVBTDZ1dS1dAwOQAgYtbSDLAGIEq6goK6rxAD'.\n     'yXBg73lwGUAAAAAElFTkSuQmCC' ; \n\n        //==========================================================\n        // File: bxs_yellow.png\n        //==========================================================\n        $this->imgdata_xsmall[6][0]= 414 ;\n        $this->imgdata_xsmall[6][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAzF'.\n     'BMVEX///////+/v79zYwCMewDOxoTWzoTezkr/5wj/5wDnzgDe'.\n     'xgC1pQCtnACllACcjACUhABjWgDGvVK1rUrOxlLGvUqEexilnB'.\n     'jv3hj35xj/7wj/7wD35wDv3gDn1gDezgDWxgDOvQDGtQC9rQCE'.\n     'ewB7cwBzawBrYwDWzlLn3lLe1krn3kre1hi9tQC1rQCtpQClnA'.\n     'CclACUjACMhAD/9wC/v7///8bOzoT//4T//3v//3P//2v//2Pn'.\n     '50r//0r//yn39xj//xD//wBjYwDO8noaAAAAAXRSTlMAQObYZg'.\n     'AAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxEAAAsRAX9kX5EAAAAH'.\n     'dElNRQfTAwkUIzoBXFQEAAAAS0lEQVR4nGNgQAFsDhJsEJaTo5'.\n     '2skj5YzMnSSk7ZwBzIlOSUklPiMxYHMnW4FXT5VNVBTDZeXiNV'.\n     'QUGQAgYBYyBLEGIEq5gYK6rxAH4kBmHBaMQQAAAAAElFTkSuQm'.\n     'CC' ; \n\n        //==========================================================\n        // File: bxs_greenblue.png\n        //==========================================================\n        $this->imgdata_xsmall[7][0]= 410 ;\n        $this->imgdata_xsmall[7][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAxl'.\n     'BMVEX///////+/v79znJQhSkJ7raU5hHtjraVKnJRCjIRClIyU'.\n     '9++E595avbVaxr2/v7+ctbWcvb17nJxrjIx7paUxQkK9//+Mvb'.\n     '17ra2Evb17tbVCY2MQGBiU5+ec9/eM5+d71tZanJxjra1rvb1j'.\n     'tbVSnJxara1rzs5jxsZKlJRChIQpUlIhQkJatbVSpaU5c3MxY2'.\n     'MYMTEQISFavb1Sra1KnJxCjIw5e3sxa2spWlpClJQhSkoYOTkp'.\n     'Y2MhUlIQKSkIGBgQMTH+e30mAAAAAXRSTlMAQObYZgAAAAFiS0'.\n     'dEAIgFHUgAAAAJcEhZcwAACxEAAAsRAX9kX5EAAAAHdElNRQfT'.\n     'AwkUJy5/6kV9AAAATUlEQVR4nGNgQAGCyuyCEJaGugKHviVYzF'.\n     'hO3sxCWwDIVNLTM9PXtpEGMhW12Cy0DR1ATEFLSxZ7BweQAgYd'.\n     'HUMHBweIEQKiogKoxgMAo/4H5AfSehsAAAAASUVORK5CYII=' ; \n\n        //==========================================================\n        // File: bxs_purple.png\n        //==========================================================\n        $this->imgdata_xsmall[8][0]= 364 ;\n        $this->imgdata_xsmall[8][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAnF'.\n     'BMVEX///////+/v7/Gvca9rb3Grcb/xv+1hLWte629hL21e7XG'.\n     'hMbWhNbOe87We9b/hP//e/97OXv/c///a///Y/+cOZz/Sv/WOd'.\n     'bnOefvOe//Kf9jCGNrCGv/EP//CP/nCOf/AP/3APfvAO/nAOfe'.\n     'AN7WANbOAM7GAMa9AL21ALWtAK2lAKWcAJyUAJSMAIyEAIR7AH'.\n     'tzAHNrAGtjAGPP1sZnAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgF'.\n     'HUgAAAAJcEhZcwAACxEAAAsRAX9kX5EAAAAHdElNRQfTAwkUIj'.\n     'mBTjT/AAAASUlEQVR4nGNgQAGskhKsEJaCrJiSuhZYTEFASFlD'.\n     'GyQuqSCnrK6tJwpkiquoamgbGIGYrFpaugbGxmCNunpAljHECB'.\n     'ZBQRZU4wFSMAZsXeM71AAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        // File: bxs_green.png\n        //==========================================================\n        $this->imgdata_xsmall[9][0]= 370 ;\n        $this->imgdata_xsmall[9][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAn1'.\n     'BMVEX///////+/v7+/v7/G/8aUxpSMvYyUzpSMzoyM1oxarVqE'.\n     '/4R7/3tavVpKnEpaxlpz/3Nr/2tKtUpj/2Na51pKzkpK1kpK50'.\n     'pK/0oYcxgp/ykYlBgY3hgY7xgY9xgQ/xAI/wgA/wAA9wAA7wAA'.\n     '5wAA3gAA1gAAzgAAxgAAvQAAtQAArQAApQAAnAAAlAAAjAAAhA'.\n     'AAewAAcwAAawAAYwA0tyxUAAAAAXRSTlMAQObYZgAAAAFiS0dE'.\n     'AIgFHUgAAAAJcEhZcwAACxEAAAsRAX9kX5EAAAAHdElNRQfTAw'.\n     'kUKBrZxq0HAAAATElEQVR4nGNgQAGccrIcEJaivISyhjaIxa7I'.\n     'I6CiqcMKZMopKqho6OhLA5kyqmqaOobGICartraeoYkJSAGDnj'.\n     '6QZQIxgk1Skg3VeABlVgbItqEBUwAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        // File: bxs_darkgreen.png\n        //==========================================================\n        $this->imgdata_xsmall[10][0]= 563 ;\n        $this->imgdata_xsmall[10][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAABX1'.\n     'BMVEX////////l/+nAwMC86r+8wb28wby8wLy78sCzw7SywrSx'.\n     'wLKwvrGuvK+syK+ryq2rx62n36ym3aumxKmk2qij0Keh16ahva'.\n     'Og1aSguKKe06KeuaCetZ+d0KGdtZ+bz6Cay56ZyZ2Zwp2Zr5qZ'.\n     'rpqYwJuXyZuXrJmVw5mUxZiTxJeTw5eTq5WRwJWPtJKOvZKKuI'.\n     '6Kt42Kn4yJt42ItIuGsomFsYmEsIiEr4eDr4eBrIR/qoN+qIJ8'.\n     'poB7pH56o356on14nnt2nXl0mndzmnZzmXZymHVwlXNvlHJukn'.\n     'FtiHBqjm1qjW1oi2toiWpniWplh2hlhmdkhWdig2VggGNgf2Je'.\n     'fmFdfGBde19bbl1aeFxXdFpWclhVclhVcVdUcFZTb1VSbVRQal'.\n     'JPaVFKY0xKYkxJYUtIYEpHX0lEWkZCWERCV0NCVkM/U0A+U0A+'.\n     'UUA+UEA9Uj89UT48Tj45TDvewfrHAAAAAXRSTlMAQObYZgAAAA'.\n     'FiS0dEAIgFHUgAAAAJcEhZcwAACxEAAAsRAX9kX5EAAAAHdElN'.\n     'RQfTAwkUKCFozUQjAAAATUlEQVR4nGNgQAGcoqrcEJYQB5OhSw'.\n     'CIxSXGwWThGcIDZCppK5o7hyV6AZl6NnbuoSmFICZ3YHB0RkkJ'.\n     'SAFDbEJaSUkJxAjeyEheVOMBQj4MOEkWew4AAAAASUVORK5CYI'.\n     'I=' ; \n\n        //==========================================================\n        // File: bxs_cyan.png\n        //==========================================================\n        $this->imgdata_xsmall[11][0]= 530 ;\n        $this->imgdata_xsmall[11][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAABPl'.\n     'BMVEX////////F///AwMCvxsaC1NSC0dGCz8+CzMyA//94//91'.\n     '//9q//9j//9X4uJX09NXz89Xx8dXxMRL//9L5uZL3d1L2NhLxs'.\n     'ZLt7cv//8e9fUe8fEe7u4e398epqYehoYX//8L+PgK//8F9fUE'.\n     '/v4E5+cEb28EZ2cC//8C/v4C/f0CzMwCrq4Cjo4CdXUCaWkCZW'.\n     'UB/PwA//8A/f0A+/sA8/MA7e0A7OwA6+sA5eUA5OQA4uIA4eEA'.\n     '3NwA2toA2NgA1dUA09MA0tIA0NAAysoAxsYAxcUAxMQAv78Avr'.\n     '4AvLwAtrYAtbUAs7MAsLAAra0Aq6sAqKgApaUApKQAoqIAoKAA'.\n     'n58AmpoAlZUAk5MAkpIAkJAAj48AjIwAiYkAh4cAf38AfX0Ae3'.\n     'sAenoAcnIAcHAAa2sAaWkAaGgAYmIUPEuTAAAAAXRSTlMAQObY'.\n     'ZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxEAAAsRAX9kX5EAAA'.\n     'AHdElNRQfTAwkUKQFKuFWqAAAATUlEQVR4nGNgQAGsUjJsEJaR'.\n     'grC5qz9YzIiL28YriB3IlDZRsnYNiZUDMmXtHT2CE9JBTDb/wI'.\n     'jkzEyQAoaomMTMzEyIERzy8hyoxgMAN2MLVPW0f4gAAAAASUVO'.\n     'RK5CYII=' ; \n\n        //==========================================================\n        // File: bxs_orange.png\n        //==========================================================\n        $this->imgdata_xsmall[12][0]= 572 ;\n        $this->imgdata_xsmall[12][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAABaF'.\n     'BMVEX//////////8X/3oD/3nj/1HX/0Gr/xGP/rkv/gBf+iS/2'.\n     'bAL1agDxaQDuZwDrZwLpZQDmZQLlZADjcx7gZATeYQDdZgraXw'.\n     'DZXwHYXgDXiEvXZAvUjlfUXwXTjVfTbR7ShUvRbR7RWwDMWQDL'.\n     'WADKooLKWADJoYLJgkvHWATGoILFn4LFgEvFVgDEZx7EVQDDt6'.\n     '/DVQDCt6/CnoLChlfCVADAwMC+hFe+UgC8UgC6UQC4gVe4UAC3'.\n     'gVe3UAC1gFe1eUu1TwC1TgCzTgCwTQKuTACrSgCqSgCpSgCpSQ'.\n     'CodEulSACkRwCiRgCdRACcRACaQwCYQgCWQgKVQQCVQACUQACS'.\n     'UR6RPwCOPgCNPQCLPACKPACJOwCEOQCBOAB+NwB9NgB8NgB7NQ'.\n     'B6NwJ4NAB3RR52MwB0MgBuLwBtLwBsLwBqLgBpLQBkLQJiKgBh'.\n     'KgBgKwRcKABbKQJbJwBaKQRaJwBYKAJVJQDZvdIYAAAAAXRSTl'.\n     'MAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxEAAAsRAX9k'.\n     'X5EAAAAHdElNRQfTAwkUJBSSy88MAAAATUlEQVR4nGNgQAGqwo'.\n     'paEBYPJ4eKezCIpc7HwmrqG6ENZMpLihm6RaWEAZl6Vo7ekRnF'.\n     'IKZWSHhcTnk5SAFDfFJWeXk5xAjj1FRjVOMBeFwNcWYSLjsAAA'.\n     'AASUVORK5CYII=' ; \n\n        //==========================================================\n        // File: bxs_lightblue.png\n        //==========================================================\n        $this->imgdata_xsmall[13][0]= 554 ;\n        $this->imgdata_xsmall[13][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAABVl'.\n     'BMVEX////////d///AwMC7wcS08P+y+P+xxdCwxM+uws2twMur'.\n     'vsinzNynytylzuKhyN6e5v6d5P+d1fOcwNWcu8ub4f+at8iZ3v'.\n     '+ZvdGY2/yW2f+VscGU1vuT1fqTr72Sx+SSxeKR0fWRz/GPz/OP'.\n     'rr+OyeqMy+6Myu2LyeyKxueJudSGw+SGorGDvt+Cvd6CvN2Aud'.\n     'p+uNd+t9Z9tdV8tdR8tNN6sc94r813rct2q8h0qcZ0qMVzp8Rx'.\n     'o8Bwor5tn7ptnrptnrlsnbhqmbRpmbNpi51ol7Flkqtkkqtkka'.\n     'pjj6hijaRhjaZgi6NfiqJfiaFdh55bhJtag5pZgphYgJZYf5VX'.\n     'cn9Ve5FSeI1RdopRdYlQdYlPc4dPcoZPcoVNcINLboBLbH9GZn'.\n     'hGZXdFZHZEY3RDYnJCXW4/W2s/WWg+Wmo7VmU7VGM7U2E6VGM6'.\n     'VGI5UV82T1wGxheQAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHU'.\n     'gAAAAJcEhZcwAACxEAAAsRAX9kX5EAAAAHdElNRQfTAwkUJziL'.\n     'PvAsAAAATUlEQVR4nGNgQAHsQgqcEJYgG5Oegy+IxSHOxmTiFs'.\n     'gFZMprKBnbB8e7AplaFlbOQUl5ICanX0BEWmEhSAFDVGxKYWEh'.\n     'xAjusDBuVOMBJO8LrFHRAykAAAAASUVORK5CYII=' ; \n\n        //==========================================================\n        // File: bxs_darkgray.png\n        //==========================================================\n        $this->imgdata_xsmall[14][0]= 574 ;\n        $this->imgdata_xsmall[14][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABm'.\n     'JLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsRAAALEQF/ZF+RAAAB'.\n     'iElEQVR42k3QPU8TYRwA8P//ebkXrgdIColXRAOEkJqbaExMut'.\n     'DBhE1GNjYHPg+DG6ODiU6QOLjVxITBcFKBYCstlAC2Bz17fe76'.\n     'vLD6+wg/1FpTRFR5lpaub/u1eGBGaAT4HneD4OlXx7avtDYUjT'.\n     'HQabd2Ti8e3vVSKzxrtHS32wIpFVldno22Nqvvg2Bhl0gp/aNm'.\n     'vJ3qqXAtLIva+ks1H0wqlSXi4+d6+OFTfRsAfHJx2d1od24rZP'.\n     'xP2HzopINr1mkesX7ccojqif0v9crxWXODZTno3+dNGA7uWLsd'.\n     'mUYU4fHJCViMG9umLBmM4L6fagZGg9QKfjZ+Qfy3C3G/B3mugF'.\n     'IHHNcDf64E3KJALApk2p8CSolUUqLjFkyxOGMsTtFyJ+Wz57NQ'.\n     '8DghS4sLB0svioeZZo7nPhFoUKZDIVFbglkTTnl5/rC8snjAkJ'.\n     'Bk/XV5LxHC/v7tR8jzTFPbg8LENK9WX0Vv31T2AEmCSmlKCCoh'.\n     'ROnP1U1tPFYjJBRcbtzSf+GPsFTAQBq1n4AAAABKdEVYdHNpZ2'.\n     '5hdHVyZQBiYzYyMDIyNjgwYThjODMyMmUxNjk0NWUzZjljOGFh'.\n     'N2VmZWFhMjA4OTE2ZjkwOTdhZWE1MzYyMjk0MWRkM2I5EqaPDA'.\n     'AAAABJRU5ErkJggg==' ; \n    }\n}\n\n?>\n"
  },
  {
    "path": "include/jpgraph/imgdata_bevels.inc.php",
    "content": "<?php\n//=======================================================================\n// File:        IMGDATA_BEVELS.INC\n// Description: Base64 encoded images for round bevels\n// Created:     2003-03-20\n// Ver:         $Id: imgdata_bevels.inc.php 1106 2009-02-22 20:16:35Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\nclass ImgData_Bevels extends ImgData {\n    protected $name = 'Round Bevels';\n    protected $an = array(MARK_IMG_BEVEL => 'imgdata');\n\n    protected $colors = array('green','purple','orange','red','yellow');\n    protected $index  = array('green'=>1,'purple'=>4,'orange'=>2,'red'=>0,'yellow'=>3);\n    protected $maxidx = 4 ;\n\n    protected $imgdata ;\n\n    function __construct() {\n        //==========================================================\n        // File: bullets_balls_red_013.png\n        //==========================================================\n        $this->imgdata[0][0]= 337 ;\n        $this->imgdata[0][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAM1'.\n     'BMVEX////////27t/f3+LFwcmNxMuxm62DmqKth1VpZmIWg6fv'.\n     'HCa7K0BwMEytCjFnIyUlEBg9vhQvAAAAAXRSTlMAQObYZgAAAA'.\n     'FiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElN'.\n     'RQfTAxcBNhk+pYJVAAAAl0lEQVR4nE2Q2xLDIAgFHUWBKJf//9'.\n     'oekmbafVDZARRbK/pYTKP9WNcNv64zzUdd9BjmrgnsVXRNSzO3'.\n     'CJ5ahdhy0XKQkxld1kxb45j7dp0x2lBNOyVgQpMaoadX7Hs7zr'.\n     'P1yKj47DKBnKaBKiSAkNss7O6PkMx6kIgYXISQJpcZCqdY6KR+'.\n     'J1PkS5Xob/h7MNz8x6D3fz5DKQjpkZOBYAAAAABJRU5ErkJggg'.\n     '==' ; \n\n        //==========================================================\n        // File: bullets_balls_green_013.png\n        //==========================================================\n        $this->imgdata[1][0]= 344 ;\n        $this->imgdata[1][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAM1'.\n     'BMVEX////////27t/e3+K3vriUub/Dm18j4xc3ob10k0ItqQlU'.\n     'e5JBmwpxY1ENaKBgUh0iHgwsSre9AAAAAXRSTlMAQObYZgAAAA'.\n     'FiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElN'.\n     'RQfTAxcBNTfJXtxZAAAAnklEQVR4nE2QWY4EMQhDUVhSIRC4/2'.\n     'kbaqLp9p+f2AxAayAzDfiK9znPORuvH0x8Ss9z6I9sHp6tcxE9'.\n     'nLmWmebmt5F5p2AR0+C9AWpLBjXRaZsCAT3SqklVp0YkAWaGtd'.\n     'c5Z41/STYpPzW7BjyiRrwkVmQto/Cw9tNEMvsgcekyCyFPboIu'.\n     'IsuXiKffYB4NK4r/h6d4g9HPPwCR7i8+GscIiiaonUAAAAAASU'.\n     'VORK5CYII=' ; \n\n        //==========================================================\n        // File: bullets_balls_oy_035.png\n        //==========================================================\n        $this->imgdata[2][0]= 341 ;\n        $this->imgdata[2][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAM1'.\n     'BMVEX////////27t/f3+K5tbqNwcjnkjXjbxR2i5anfEoNkbis'.\n     'PBxpU0sZbZejKgdqIRIlERIwYtkYAAAAAXRSTlMAQObYZgAAAA'.\n     'FiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElN'.\n     'RQfTAxcBNgK0wEu5AAAAm0lEQVR4nE3QVxIEIQgEUErAgTHA/U'.\n     '+7zbipf9RXgoGo0liMmX6RdSPLPtZM9F4LuuSIaZtZWffiU6Iz'.\n     'Y8SOMF0NogBj30ioGRGLZgiPvce1TbIRz6oBQEbOFGK0rIoxrn'.\n     '5hDomMA1cfGRCaRVhjS3gkzheM+4HtnlkXcvdZhWG4qZawewe6'.\n     '9Jnz/TKLB/ML6HUepn//QczazuwFO/0Ivpolhi4AAAAASUVORK'.\n     '5CYII=' ; \n\n        //==========================================================\n        // File: bullets_balls_oy_036.png\n        //==========================================================\n        $this->imgdata[3][0]= 340 ;\n        $this->imgdata[3][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAM1'.\n     'BMVEX////////27t/e3+LO3hfYzz65ubiNwci6uQ12ipadgVGa'.\n     'fwsNkbhnVkcaZ5dwSA8lFg7CEepmAAAAAXRSTlMAQObYZgAAAA'.\n     'FiS0dEAIgFHUgAAAAJcEhZcwAACxEAAAsRAX9kX5EAAAAHdElN'.\n     'RQfTAxcCBySi1nevAAAAjElEQVR4nFXPWw7EIAgFUNMoCMhj/6'.\n     'staKczc/2RkwjS2glQ+w3YytgXCXCZpRo8gJdGxZadJws13CUP'.\n     '4SZI4MYiUxypeiGGw1XShVBTNN9kLXP2GRrZPFvKgd7z/sqGGV'.\n     '7C7r7r3l09alYN3iA8Yn+ImdVrNoEeSRqJPAaHfhZzLYwXstdZ'.\n     'rP3n2bvdAI4INwtihiwAAAAASUVORK5CYII=' ;\n\n        //==========================================================\n        // File: bullets_balls_pp_019.png\n        //==========================================================\n        $this->imgdata[4][0]= 334 ;\n        $this->imgdata[4][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAM1'.\n     'BMVEX////+/v7i4eO/w8eHxcvKroNVormtfkjrMN2BeXQrepPc'.\n     'Esy4IL+OFaR7F25LHF8mFRh5XXtUAAAAAXRSTlMAQObYZgAAAA'.\n     'FiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElN'.\n     'RQfTAxcBNgkjEpIxAAAAlElEQVR4nE2QAQ7FIAhDDTAVndL7n3'.\n     'ZV/7JfEwMvFIWUlkTMVNInbVv5ZeJqG7Smh2QTBwJBpsdizAZP'.\n     '5NyW0awhK8kYodnZxS6ECvPRp2sI+y7PBv1mN02KH7h77QCJ8D'.\n     '4VvY5NUgEmCwj6ZMzHtJRgRSXwC1gfcqJJH0GBnSnK1kUQ72DY'.\n     'CPBv+MCS/e0jib77eQAJxwiEWm7hFwAAAABJRU5ErkJggg==' ; \n\n    }\n}\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/imgdata_diamonds.inc.php",
    "content": "<?php\n//=======================================================================\n// File:        IMGDATA_DIAMONDS.INC\n// Description: Base64 encoded images for diamonds\n// Created:     2003-03-20\n// Ver:         $Id: imgdata_diamonds.inc.php 1106 2009-02-22 20:16:35Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\nclass ImgData_Diamonds extends ImgData {\n    protected $name = 'Diamonds';\n    protected $an = array(MARK_IMG_DIAMOND =>'imgdata');\n    protected $colors = array('lightblue','darkblue','gray',\n   'blue','pink','purple','red','yellow');\n    protected $index  = array('lightblue' =>7,'darkblue'=>2,'gray'=>6,\n   'blue'=>4,'pink'=>1,'purple'=>5,'red'=>0,'yellow'=>3);\n\n    protected $maxidx = 7 ;\n    protected $imgdata ;\n\n    function __construct() {\n        //==========================================================\n        // File: diam_red.png\n        //==========================================================\n        $this->imgdata[0][0]= 668 ;\n        $this->imgdata[0][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAMAAAC6CgRnAAAA/F'.\n     'BMVEX///////+cAAD/AADOAABjAABrAADWGBjOCAj/CAj/GBj/'.\n     'EBCcCAiMOTl7KSl7ISFzGBilGBjOEBBrCAjv5+eMQkK1QkKtMT'.\n     'GtKSnWKSn/KSlzEBCcEBDexsb/tbXOe3ucWlqcUlKUSkr/e3vn'.\n     'a2u9UlL/a2uEMTHeUlLeSkqtOTn/UlL/SkrWOTn/QkL/OTmlIS'.\n     'H/MTH/ISH39/f/9/f35+fezs7/5+fvzs7WtbXOra3nvb3/zs7G'.\n     'nJzvtbXGlJTepaW9jIy1hITWlJS1e3uta2ulY2P/lJTnhITne3'.\n     'vGY2O9Wlr/c3PeY2O1Skr/Y2P/WlreQkLWISGlEBCglEUaAAAA'.\n     'AXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAA'.\n     'sSAdLdfvwAAAAHdElNRQfTAwsWEw5WI4qnAAABGUlEQVR4nHXQ'.\n     '1XLDMBAFUKUCM1NiO8zcpIxpp8z0//9SWY7b2LHv6EU6s1qtAN'.\n     'iMBAojLPkigpJvogKC4pxDuQipjanlICXof1RQDkYEF21mKIfg'.\n     '/GGKtjAmOKt9oSyuCU7OhyiDCQnjowGfRnooCJIkiWJvv8NxnG'.\n     'nyNAwFcekvZpPP3mu7Vrp8fOq8DYbTyjdnAvBj7Jbd7nP95urs'.\n     '+MC2D6unF+Cu0VJULQBAlsOQuueN3Hrp2nGUvqppemBZ0aU7Se'.\n     'SXvYZFMKaLJn7MH3btJmZEMEmGSOreqy0SI/4ffo3uiUOYEACy'.\n     'OFopmNWlP5uZd9uPWmUoxvK9ilO9NtBo6mS7KkZD0fOJYqgGBU'.\n     'S/T7OKCAA9tfsFOicXcbxt29cAAAAASUVORK5CYII=' ; \n\n        //==========================================================\n        // File: diam_pink.png\n        //==========================================================\n        $this->imgdata[1][0]= 262 ;\n        $this->imgdata[1][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABsAAAAbBAMAAAB/+ulmAAAAEl'.\n     'BMVEX///+AgID/M5n/Zpn/zMz/mZn1xELhAAAAAXRSTlMAQObY'.\n     'ZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAA'.\n     'AHdElNRQfTAwsWEi3tX8qUAAAAbUlEQVR4nFXJwQ3AMAhDUdRm'.\n     'kKojuCswABf2X6UEEiC+WF+PyDfoGEuvwXogq3Rk1Y6W0tBSG8'.\n     '6Uwpla6CmJnpoYKRsjjb/Y63vo9kIkLcZCCsbGYGwMRqIzEp1R'.\n     'OBmFk9HQGA2N0ZEIz5HX+h/jailYpfz4dAAAAABJRU5ErkJggg'.\n     '==' ; \n\n        //==========================================================\n        // File: diam_blue.png\n        //==========================================================\n        $this->imgdata[2][0]= 662 ;\n        $this->imgdata[2][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAMAAAC6CgRnAAAA+V'.\n     'BMVEX///+AgIAAAJwAAP8AAM4AAGMAAGsQEP8YGHMQEHMYGP8Q'.\n     'EKUICJwICM5KSpQxMYQpKXsYGNYQEM4ICGsICP97e85aWpw5OY'.\n     'xSUv85ObVCQt4xMa0pKa0hIaUpKf+9vd6EhLVra+dzc/9SUr1r'.\n     'a/9aWt5SUt5CQrVaWv9KSv8hIXs5Of8xMf8pKdYhIdYYGKUhIf'.\n     '/Ozs739//v7/fn5+/v7//n5/fW1ufOzufOzu/W1v+trc69veel'.\n     'pc6trd6UlMa9vf+MjL21tfe1tf+UlNZzc61ra6Wlpf+EhOeMjP'.\n     '9ra8ZSUpyEhP9CQoxKSrVCQv85Od4xMdYQENZnJhlWAAAAAXRS'.\n     'TlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAd'.\n     'LdfvwAAAAHdElNRQfTAwsWEx3Snct5AAABFklEQVR4nHXR5XbD'.\n     'IBgGYM6AuHsaqbvOfeuknev9X8xISbplSd5/8JyXwwcA/I0AKm'.\n     'PFchVBdvKNKggKQx2VIoRwMZihMiQE49YUlWBCcPL0hYq4ITh+'.\n     'qKECUoLDZWqoQNA766F/mJHlHXblPJJNiyURhM5eU9cNw5BlmS'.\n     'IrLOLxhzfotF7vwO2j3ez2ap/TmW4AIM7DoN9+tu+vLk6Pdg9O'.\n     '6ufXjfXLm6pxPACSJIpRFAa+/26DhuK6qjbiON40k0N3skjOvm'.\n     'NijBmchF5mi+1jhQqDmWyIzPp1hUlrv8On5l+6mMm1tigFNyrt'.\n     '5R97g+FKKyGKkTNKesXPJTZXOFIrUoKiypcTQVHjK4g8H2dWEQ'.\n     'B8bvUDLSQXSr41rmEAAAAASUVORK5CYII=' ; \n\n        //==========================================================\n        // File: diam_yellow.png\n        //==========================================================\n        $this->imgdata[3][0]= 262 ;\n        $this->imgdata[3][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABsAAAAbBAMAAAB/+ulmAAAAEl'.\n     'BMVEX///+AgIBmMwCZZgD/zADMmQD/QLMZAAAAAXRSTlMAQObY'.\n     'ZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAA'.\n     'AHdElNRQfTAwsWEwcv/zIDAAAAbUlEQVR4nFXJwQ3AMAhDUdRm'.\n     'kKojuCswABf2X6UEEiC+WF+PyDfoGEuvwXogq3Rk1Y6W0tBSG8'.\n     '6Uwpla6CmJnpoYKRsjjb/Y63vo9kIkLcZCCsbGYGwMRqIzEp1R'.\n     'OBmFk9HQGA2N0ZEIz5HX+h/jailYpfz4dAAAAABJRU5ErkJggg'.\n     '==' ; \n\n        //==========================================================\n        // File: diam_lightblue.png\n        //==========================================================\n        $this->imgdata[4][0]= 671 ;\n        $this->imgdata[4][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAMAAAC6CgRnAAAA/1'.\n     'BMVEX///+AgIAAnP8A//8Azv8AY/8Aa/8I//8Y1v8Izv8Y//8Q'.\n     '//8InP8Qzv8Ypf85jP8he/8Yc/8Ia/8pe/8p//8p1v9Ctf8xrf'.\n     '8prf8QnP8Qc/9CjP+1//97//9r//9S//9K//9C//85//8x//8h'.\n     '//9r5/9K3v9S3v851v97zv9Svf85rf8hpf/G3v9SnP9anP9KlP'.\n     '8xhP/n7//v7+f3///n///O//+U//9z//9j//9a//975/9C3v8h'.\n     '1v+E5/+17/9j3v/O7//n9/+95/+l3v9jxv+U1v8Qpf9avf9Ktf'.\n     '+Uxv+11v97tf9rrf+cxv+Mvf9jpf+tzv+Etf/O3v/39/8Akkxr'.\n     'AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACx'.\n     'IAAAsSAdLdfvwAAAAHdElNRQfTAwsWEiHk6Ya/AAABGUlEQVR4'.\n     'nHXQ13KDMBAF0J2o0E01GHDvJa7p3em95/+/JQJMYjDc0Yt0Zr'.\n     'VaAaxHgtxwbSGPkGQpOIeQ2ORxJiJmNWYZyAhZR0WcgQGhViU0'.\n     'nEGoedDHGxgRapRPcRpXhOr7XZzCmLjaXk9IIjvkOEmSRLG62+'.\n     'F5XlEElhA5sW21GvXj6mGlDBfnJ51lr9svnvEKwH1hu2QPbwd3'.\n     'N9eXVzuL7/Hn29frdKaamgcgy67L3HFG9gDefV+dm5qme4YRXL'.\n     'oVR374mRqUELZYosf84XAxISFRQuMh4rrH8YxGSP6HX6H97NNQ'.\n     'KEAaR08qCeuSnx2a8zIPWqUowtKHSRK91rAw0elmVYQFVc8mhq'.\n     '7p5RD7Ps3IIwA9sfsFxFUX6eZ4Zh4AAAAASUVORK5CYII=' ; \n\n        //==========================================================\n        // File: diam_purple.png\n        //==========================================================\n        $this->imgdata[5][0]= 657 ;\n        $this->imgdata[5][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAMAAAC6CgRnAAAA/F'.\n     'BMVEX///////8xAP/OAP+cAP9jAP9rAP+cCP85CP/OEP9SKf/O'.\n     'CP9CEP9zGP9rCP+lGP/WOf/WIf9KIf9jOf+MQv+EMf97If9zEP'.\n     '+1Sv+lIf/ne//eUv/na//n5//Oxv/Wzv+chP9zUv97Wv9rQv9a'.\n     'Mf9KGP/v5/+te/97Kf+9Y/+tOf+tKf+lEP/vtf/WMf/WKf/v7+'.\n     'f39/+tnP+9rf9rSv9jQv9CGP+ljP+EY//Gtf+tlP+Ma/9zSv/e'.\n     'zv+UUv+9lP+cWv+lY/+cUv+MOf+EKf+UQv/Opf/OhP/Ga/+1Qv'.\n     '/Oe/+9Uv/ntf/eWv/eSv/WGP/3zv/vlP/WEP//9/+pL4oHAAAA'.\n     'AXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAA'.\n     'sSAdLdfvwAAAAHdElNRQfTAwsWEjX+M1LCAAABDklEQVR4nHXQ'.\n     '1bLDIBAGYFqIEW+ksbr7cXd3ff93OUCamdOE/Mxw882yywLwPz'.\n     '+gNKotlRFUVnNUQlCxTMRFCKEdE+MgpJaEiIOU4DKaoSIygtb3'.\n     'FBUQrm3xjPK4JvXjK0A5hFniYSBtIilQVYUm+X0KTVNiYah+2q'.\n     'ulFb8nUbSovD2+TCavwXQWmnMA6ro+di+uR5cPzfPhVqPV3N1p'.\n     'n3b3+rimAWAYhP3xnXd7P6oc9vadPsa1wYEs00dFQRAFehlX21'.\n     '25Sg9NOgwF5jeNTjVL9om0TjDc1lmeCKZ17nFPzhPtSRt6J06R'.\n     'WKUoeG3MoXRa/wjLHGLodwZcotPqjsYngnWslRBZH91hWTbpD2'.\n     'EdF1ECWW1SAAAAAElFTkSuQmCC' ; \n\n        //==========================================================\n        // File: diam_gray.png\n        //==========================================================\n        $this->imgdata[6][0]= 262 ;\n        $this->imgdata[6][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABsAAAAbBAMAAAB/+ulmAAAAEl'.\n     'BMVEX//////wAzMzNmZmbMzMyZmZlq4Qo5AAAAAXRSTlMAQObY'.\n     'ZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAA'.\n     'AHdElNRQfTAwsWExZFTxLxAAAAbUlEQVR4nFXJwQ3AMAhDUdRm'.\n     'kKojuCswABf2X6UEEiC+WF+PyDfoGEuvwXogq3Rk1Y6W0tBSG8'.\n     '6Uwpla6CmJnpoYKRsjjb/Y63vo9kIkLcZCCsbGYGwMRqIzEp1R'.\n     'OBmFk9HQGA2N0ZEIz5HX+h/jailYpfz4dAAAAABJRU5ErkJggg'.\n     '==' ; \n\n        //==========================================================\n        // File: diam_blgr.png\n        //==========================================================\n        $this->imgdata[7][0]= 262 ;\n        $this->imgdata[7][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABsAAAAbBAMAAAB/+ulmAAAAEl'.\n     'BMVEX///+AgIBmzP9m///M//+Z//8hMmBVAAAAAXRSTlMAQObY'.\n     'ZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAA'.\n     'AHdElNRQfTAwsWEwCxm6egAAAAbUlEQVR4nFXJwQ3AMAhDUdRm'.\n     'kKojuCswABf2X6UEEiC+WF+PyDfoGEuvwXogq3Rk1Y6W0tBSG8'.\n     '6Uwpla6CmJnpoYKRsjjb/Y63vo9kIkLcZCCsbGYGwMRqIzEp1R'.\n     'OBmFk9HQGA2N0ZEIz5HX+h/jailYpfz4dAAAAABJRU5ErkJggg'.\n     '==' ; \n    }\n}\n\n?>\n"
  },
  {
    "path": "include/jpgraph/imgdata_pushpins.inc.php",
    "content": "<?php\n//=======================================================================\n// File: IMGDATA_PUSHPINS.INC\n// Description: Base64 encoded images for pushpins\n// Created:  2003-03-20\n// Ver:  $Id: imgdata_pushpins.inc.php 1106 2009-02-22 20:16:35Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\nclass ImgData_PushPins extends ImgData {\n    protected $name = 'Push pins';\n    protected $an = array(MARK_IMG_PUSHPIN => 'imgdata_small',\n    MARK_IMG_SPUSHPIN => 'imgdata_small',\n    MARK_IMG_LPUSHPIN => 'imgdata_large');\n\n    protected $colors = array('blue','green','orange','pink','red');\n    protected $index  = array('red' => 0, 'orange' => 1, 'pink' => 2, 'blue' => 3, 'green' => 4 ) ;\n    protected $maxidx = 4 ;\n    protected $imgdata_large, $imgdata_small ;\n\n    function __construct() {\n\n        // The anchor should be where the needle \"hits\" the paper\n        // (bottom left corner)\n        $this->anchor_x = 0;\n        $this->anchor_y = 1;\n\n        //==========================================================\n        // File: ppl_red.png\n        //==========================================================\n        $this->imgdata_large[0][0]= 2490 ;\n        $this->imgdata_large[0][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABm'.\n     'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.\n     'B3RJTUUH0wMKBh4Ryh89CgAACUdJREFUeJy9mNtTFFcexz+/7p'.\n     '4Lw1wZJKDGCAwmDAqUySamcCq1ed6k9mn3UfMP7F+1T3nYqn2J'.\n     'lZdoDEjpbq0KG8EBFBFBEJye6Zmenkv32Ydu5GYiUMmeqq6uqT'.\n     '6Xz3zP73aOcIKmAQkIFyD3N/jrBPwlKjLQEglVlJKyUjR3u7cc'.\n     'WLoP3/4dvv03LNrQ8I6x1rFbDML9kOmHvh7IRHU9JKmUSG8vpF'.\n     'IoXX/TV0AiEM5A5jT0noFMFMJHXUt/d5f9TUAbhtQ3cPFruDog'.\n     '8klHMnmO0dGYe/myOJGINEwTz3F2higFXgy8PpAkOC+h8hoaCt'.\n     '4ppHFcQAWSgOQlyI/p+lUjmRxWAwNJd3xca/f34yoFi4tgmjtD'.\n     'NIFkJ4xcgBCgVqEBFJ9DqcZea/gNAAVEg7AOGYnHe9XoaJd3+X'.\n     'LISSSwnz6lsbKCZ9sHh4UVdBkwdA6cPwNnIfJPmC3Ctgft3wwQ'.\n     'QPkvTZJJnbExzfvsM2nMzVG7e5fG48d4lnXwTwEYCjJxuHQBog'.\n     'BHUfKkgAIIhiGk06hTp/Dm5qS1uYlXLvtWd4gPgIiCrAEcVckT'.\n     'Ab5p7TaYJrK1hQaEenrwSiVfQdc91P0kSp7Ii89D5ksY/kAkLy'.\n     'IZXFdXkQjS1YUSEbdcRu168V6+HTUNIKJDRwdE+sBIQmP9Ld59'.\n     'bEBA3of4F/D+uXb7rGaaCSmXI3pPj64PDaHCYfEqFVSjgWo2D2'.\n     '73XlJNQTgCyQykIuBWoNKEeh1aLXBPBCggGdBOgxZVSjoajVhH'.\n     'o5HWlIpq4bCQSgm9vXhK4ZZKh5SUYygp4J1EQVUD9xlU18BJQD'.\n     'bUbJ5T5XJStyxN9fSI099P3baxV1dRloW2h2ivx/yakg2ot6F1'.\n     'EkCa4G1D+zVEq5ArKTWM42Q6HUczQV7U66w9e0ZpdRXlOIQ5vF'.\n     'VHUXILKify4jiEzkOqC3peQMoBQymFlMt4Dx6wUSxSsm2UZXEK'.\n     'P30QvOUt8/2Sd78CdWwFDTA+gsw3cOlPcPUD+CQB52oQ21RKXM'.\n     'eRhGXhOg7VoKrx8KuS4ygZhVg3ZI8FGIfwR9BVgAtfwxdXdP3L'.\n     '86nUR91dXelNXTeWWy10paQHX602YAP1ADASAL7LJvFtMpOCc0'.\n     'cG3FHuGlz6Gr4YEpnoTCbzsdHRbOzy5RCRiLRMk5rjyOtAimwA'.\n     'U4U3SurBN/0wnAASBCVDIKpB4kiAB5Ub0/UvO9LpPAMDGfn005'.\n     'AxPCzxep3Q6iqPLUseBoufCZRsAE6g5g5kKIDfKUj3wnpAG8QB'.\n     '/Z1OIqANQuI65AtwNScyYXR2XlAXL2YZHzcklRKWl5GVFXFtGx'.\n     'MoAiV/EQaAGH6BUQNWgQpwFngv+Ca8KUAQEBcwgTJHyMV7679R'.\n     'XS8YqdSI6u/PMD5ukMtJY3GR2uQkr5aXeWVZOEALmA8WsIAxfL'.\n     'd0goVLAdCOd+/YpgqeVtBv4yiA++q/RKKXixe7GB8PSyoljcVF'.\n     'yg8fyubyMpulEk2lyAIfAAvAC+B+oOQFoAt/+0rAejB/EzjNri'.\n     'vvqNnCd64jxcE39V8spnP+vMbAgDSePKE2NcXm06dslMuUlcID'.\n     'TuFvqwXMBU8N39bGgRR+ki0Dz4L5DSAe9NGD7zq+6kcN1L6H2b'.\n     'ao5WWaQHllRTafPmWrVMJUimoAQrBYJFjQwre7B6A8YAi8LCgD'.\n     '5DVo6/hbb/iHK1KggvFeD3hHziQKEMuiNTNDbXGRTdtmw7Iwla'.\n     'KGH0oqwbscLOoG46rAY6AOzRhY74PT6QuUKEN4PegXxd/yEDTT'.\n     'YMWOk+oEaLkuFdNk0zTZwjfkavDUArXWgGXgFb4dEShXhfYqlI'.\n     'ow3w9rg3B6ED60IOOA5oEYQBrcpG+mj9bg0VG8GMJhVDZLyzAo'.\n     'VSq8rFYxXXefcjVgG9+uisDrXUCApoKSBcUHMBmHhfcgNwhtD3'.\n     'q9IG6Lr15b4OUTmPwBJt8JqGuapp05o0mhoHnptLQfPsR+8IBK'.\n     'uYyNH3yr+B77LHheA3tK1Ta+IrMeTL2C6Xl48TOsNWDDgAz7s5'.\n     '/r+krP/eddCsbj8fDQ4GBm9MqVvvRXX2VULBayRGRzaYn1SoWa'.\n     'UjgB4PIB5QK4ZgBXBKaAHxQsrED1H7CRgCUPwgHZDqACmhWwXv'.\n     '2aDRqGYeRyufS169cvThQKV88PDuYbW1vJ5VRK+5euqxWlPMdX'.\n     'SRqgreHbZGN3ijfKBXBTAeh2Fdwi2MofshP/dvKwCmKhp4m83Y'.\n     'vj8Xg4l8tlCoXC0MTExMTFkZE/1m37wvLGRvKRacoD1209E7Fc'.\n     'pZwYREOQqEJ4z3HskHLsz4AoXykPIBSN0t3dTTQafROoHdumXC'.\n     '4fjoMiog0ODiauX7+eLxQKV3O53ETdti88nJnJ3rl505ifmWm3'.\n     'arWSodR8GNbycDoNHy5C5jFold1k8d+DyvELNwg93d18/vnn9P'.\n     'X1oes6nufx/Plz7t+/fxhQKSWJRCI5NjaWHxkZKdj1+sjSwkJm'.\n     '+uZN/dZ337VqCwullGUVdZjsgIUC5LqhrUPvCugWuApeApPAzY'.\n     'PKHWyaphGNRunt7WVwcBARwfM8Ojo6sCzrMKBhGLphGFEF2Wq1'.\n     '2jc7M5OZ/vHH0MPbt93awkJJmeZsC6ZaMK3DCwvWdNioQUb5B6'.\n     'AdBR+9SzkAz/NwHIeXL18iIui6TjgcJplMMjY2th8wHo+Hh4aG'.\n     'MsPDw6fddru7+Phxx51bt/RbN260qwsLpZhlFZsw9QJ+2Pbrga'.\n     'oJG2FY2oKwuTtVEz9uV34NbqdtbW0xPT1NNBoF4MyZM1y5coWu'.\n     'rq5dQBHRcrlc4tq1a/l8Pj9RMs38ndu3Ez//9JNXLRZNyuXZJk'.\n     'xVYKoExQpsK/+IaAuYb7no8zjC/R+A4zisrq7u+53NZjl16tQ+'.\n     'QIlEIslsNpuPRCJXZ2dnh2/duNFRW1oy07a96MKd575yxRqU1B'.\n     '5vPMpF5HHa1tYW9+7do7Ozc/eQpZTSQ6FQt1Lq8pMnT/5w7969'.\n     'nuLcXE1rNufO9fRMhlKpOyvt9qPtVmvb25fFfvvWbrepVCqHwo'.\n     'xaX19vff/996ZhGC8qlkW9Wt1Onz073fXxxz+6MB+9e9dUjuO+'.\n     '7ebq9wLdB9hoNCrr6+s/4wf3FCJW3fPmTZhXsNWCprjuW66Dfr'.\n     '928KAfBhJAEgiJSLuzs7OSTqctoFkqlZRt26j/I+L/AGjPTN4d'.\n     'Nqn4AAAAAElFTkSuQmCC' ; \n\n        //==========================================================\n        // File: ppl_orange.png\n        //==========================================================\n        $this->imgdata_large[1][0]= 2753 ;\n        $this->imgdata_large[1][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABm'.\n     'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.\n     'B3RJTUUH0wMLFQ0VCkHCzQAACk5JREFUeJytmGtzG0d2hp8zNw'.\n     'AEcRdJ6EJK9FL0CqZUm9jWbkwq3vhDstl8dmLvz8rP2H8Q75ZT'.\n     'pkRfpLgqsS6WIFEKGYkiSBCDO+banQ8DUpRWEkklXQUUqlCDfv'.\n     'rp857pgfAOQ4AMOJdg4R/hX96Hf06bvDc5iT07i8yeg8ksiIAI'.\n     '4TBi/ds9/vivD/njapNHvRBfHXMu410AM+BUoVSF05NQsi1sO4'.\n     '8402AXwLQTuP31OAZO2aG0MEn14iSlnI1z3LnMk8IZYJyBwjIs'.\n     '/TWsVIWPJkvMFS4zMfMhUp5BsoCpAAEBLYKaMFGn00jBxnvu02'.\n     '35+JHmSJEnBpQEcPo38MmCxd/nS9Ry71Ga/g1W9a8gn0GsHkgA'.\n     '6DGjxkqb5CoO+YxF3A3p+jGjQUzoK+L/V0ADzFMwtSR8eLbAr8'.\n     'uXOTf9NzhTc0geSLUQcYHgYEH786RMg0zWJHV2Aitv4x/HpHVS'.\n     'QA2YBqTTGIUq5qkPMWaWkVwPnPtAA/BevmZcjxaaUtHh8pJJGu'.\n     'DpCB9FvT7A7YT7S3p5vFMNzmWo/O0MSx/Ms3TqI8r59zFTfUQe'.\n     'I7SBODE3tnfoIxYnNHligwik0zAzDdVpyKbA8sff5YAeMEwgkV'.\n     'cufQeTJzZoCsaFLKXPTnNpoUTNsSgJmNoGsuNQjIDwYD2HlnZy'.\n     'k++yxTKXZfKTU8zOpjhneeQYkorSmGERtIlICBKRbLX+y98YN3'.\n     'ADcNIm+bJD4U3pPnmbEaRgYVRTGBkDSSsmxKfY7ZLuDJA4hdjl'.\n     'JEgyBB2SJOvQ9RzTpNKoEwNq0CNFvOXR3/HxMgYVPObaz8kPmh'.\n     'hkEWMatAfRONGGvLizyOE9P8KkpwhPDAgQKJQbELUD0oOIhbbH'.\n     'JeVTmowxjAgZutB5AoOngA+2DdYrcTyOyYZP9+QpBvI29vwEhb'.\n     'It042BVQgDy9KTMfkwQG1A9ACCLlgBBGUwxxoc52WDh2ATyEPp'.\n     '1hoaPvrEBh0Dq5an9OUsl/9hylk5b5c+mowLc4E2Jtw4Eoljyf'.\n     'ogA/AGEAagNRjGyUxOmEycyVA5EWDBxrmUp3ytLIv/NJP69Goh'.\n     '+9mFydIvS5PZYkvH1oY/RFtKymlwBFQAgQd+kAA6qSQ8pvn2mp'.\n     'SkJkuVFHPHBnQMrEt5Sl+e4/Lvp51PF1PF5Xy6WMvOWZXMom8z'.\n     'OZTQ8+j5sbQiMEwopsCIwRtBGIJSCdzbTGo9NimkDcgdC7Bg49'.\n     'TG5n4/nfr0Si77WdYp1YzyZEkWPdteaEnB7pPqBTxuIf/VgciE'.\n     'SgasCPwh+GNIkaNNag1RiPge5pEhMQVjfoLcF+eoXSvbKxedwn'.\n     'LKzC3KWbOi5/sW5a44/SHFUSgVA7SCzRG0AvA9mPOgFIETgu4n'.\n     'Ww0wNQWFAqRSL6D2ZQYBdDrQ7R7jXiwgRcvIL02makuTmWtpM/'.\n     '+BlLMl5vuWzLVEuwH6oYnR1KS8kJINGXMM2YdfRlALoQoQQKeb'.\n     'bDVwoMdxQMaLCwLo96HZTF5HbrEhmOftianfZisfzueKv7ZmrX'.\n     'MsjhxKXZGBjzyeEHmSE3oWiggtyVGmE8DTIXTC5NxgAxOAGUM8'.\n     'fun9mnSSLQ/CxNzOTgJ3LIMgoGwkKBiiMyaVviHVkdCO4FEKNv'.\n     'LQzWBYHfITPa4UBVM0LR/WB7ARJsdDDTjA6deYFIFUOimJ3d0E'.\n     'sNdLavYYgBpthqKcjiiJRO8K6CK0CsJTjfQAGaJtD9vQFAxNNQ'.\n     '1FB0yBAfA8gdMAIagLoCVAen0M00zMOTYShNDtoHs9CAIUoI4E'.\n     '1IBihCdNhsMhsj6NuV7BCC2IBpBqQaaFOENCCeiEsO1BO4RQgy'.\n     'I5Hm4k4oIU9MrgZSAdBeTabZz+ODxKQRRBFBJo6IUc51anYRQo'.\n     'dto+24FNxYCiaWKkQsj00KkO4gxRRkAngJ868M0u3OkkM+hxQA'.\n     'cQ7YD7GO5XYSsPZybh/TCkFIYY+kWniTW4Q7jXgHvHMhiRpmuW'.\n     'ca08GZkkZ/nY6TZMNhCnf2CuPoDVJvxpB+q9BHA8Ag1uH+oP4c'.\n     'YEPCzDwmzSLquShHW/E0YRbG/BjZtw40hAy7aNzJlzRn75E6N0'.\n     'qiwTzafI7kOU3gWrhzZC2iHcbsPqLlxvJnCt4KC1RYAL3I5hzY'.\n     'Xv/huePYCtITQMKEnyB4KQvMURuJvw889HGSwUCs7CwkLpo6tX'.\n     'Ty/+7nel6VLGDn/8N9m+eZuo1UP8iNhLau6b3RfmOsHBGTUYw9'.\n     'WBNeDrGB4+h/4qNLKwTnLbHj9CJw/6GoIh9Jpvq0HHcayFhYXi'.\n     'l3/4w9LK8vLKexfma3G/mb/3n1njTivS7tNQaaU1grQDjJ868D'.\n     'Axx6vmxnBrY9C9IcSbSXbavNjb/S3eN6/0m1JcKBScixcvllZW'.\n     'Vi6uLC8v12q1v/M8b/HxVjP//YYr32yE4dYWvShO0ogi14xwxq'.\n     'F4rbnxZ3cMjtpvEEeMvwA0TdOYn5/PffHFF7Vr166tvPeLXyx7'.\n     'nrd4+/btyg/frFo//Xgncnd67qCn78earQqcmYD3fSi1wPCTSV'.\n     '3gzqvm9uFOMl5nUAqFQn5paal26dKla57vf7D+6FHph9VV88af'.\n     'vgq79bo70e3VT2l9A3hYg4UiRALVHTCHSZvYBm4A//6quf8zoG'.\n     '3bpuM4acMwKr1+//SDe/dK31+/bv90/Xrcq9fduNW6rbVeC+E7'.\n     'gWdD2DKg4UEpBmPcm10RuScida31ntb62HAigoigDw6Gh0axWH'.\n     'QWFhZKi4uLZ+I4PrVer2e+u37dXPvqq6hbr7tOp1NXWq89h6/b'.\n     '8FBB34WGBesdcPrj38lkMkGlUuml0+mu53nR3t4eo9HoSLhMJk'.\n     'OlUiGdTuN5Hq7rvgA0TdO4cOFC7vPPP6/VarXldqdTu7m2lrv7'.\n     '7beq++BBO263b/tKrfWSXlbvwJ6CuAtDgTYiaBFMw6BSqfDxxx'.\n     '+rarWqGo0GN2/eZGtrC6XenAkRoVKpcPXqVWZmZmg0Gty6desF'.\n     'oIhIOp3Ol8vlmmVZK3fv3Lm09uc/Zwbr653ccPgoNIzvnmn99Z'.\n     '7W9QG46lAaM5mM2l95GIYUi0VOnz7N7OwsWmsymQzyuse5Q8Mw'.\n     'DNLpNDMzM5w/f/7A6AGgUkoajYa9urpayOXzUz/fvZutr68Pim'.\n     'F4/2y1+n2o9Q/ru7uPesPhXnyo4A+vfHp6mmazybNnz9jZ2UFr'.\n     'TbPZJAhe+8/aS0Mphed5NBoNABqNBqPR6MWBVWstvu/nnj9/Pv'.\n     'vo0aPq5uZmPBgM/qcwPf39xV/9ajU1M3Nvq9PZaw8GoT50PjdN'.\n     'k6mpKa5cucL58+eJ45j19XWePHnCzs4OnudhmiaWZRGGIVH05r'.\n     'yEYYjrumxubrKxsfFyDQJ6NBp1Pc+7C4jWumBaVm+kVL2l1H2l'.\n     '1G6otS+H6V6z8u3tbVzXpdFooJRicXGRqakptre3uXXr1ltrcT'.\n     'Qa8ezZszemWAE9rfUdYBOwtVLRbrPZ+48ff+wDvuu6Sr3MB4Dr'.\n     'uty6desgfa1WC3iRyrNnz4pSSmezWUzTfGtYtNYcdvC/9sMlgP'.\n     'n5N4cAAAAASUVORK5CYII=' ; \n\n        //==========================================================\n        // File: ppl_pink.png\n        //==========================================================\n        $this->imgdata_large[2][0]= 2779 ;\n        $this->imgdata_large[2][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABm'.\n     'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.\n     'B3RJTUUH0wMLFQolY9lkpgAACmhJREFUeJy9mOtzFNl5h5+3b9'.\n     'Mz0kzPBWmEVtIiWYhIiC0HCDhB8lb8ISk7nzdZ5+/zJ/8BTmpT'.\n     '660CZLwG1pVFgBkgGIHECEaa+/T9nHzQCCQuRpCNz6mp6g893U'.\n     '8/c37ve3qEjxiC4OA4n/Lp/EUu/tsMM/+aEWduVBx7WhdkShcY'.\n     'xUH2zo0Dwod/5N6vf8V//PoGdx8M8EOFPtK9jI8BdHCcMuVSmf'.\n     'LxHLmSZdm2U8xIbmKETDGDZZnIy4dBbCynyGhphurEDBOlHFnn'.\n     'qPcyPxTOwDCOccw7w5nlBRZWylI+ny/mZ6rL1dzUZ5/IWGZU3D'.\n     'ZIOMQDDaJcHDVGWUbJBi9odVr0QoVSPzigIEaZ8vgSS/8wZU3/'.\n     'k1fylipz5dLM2WlrZqHKaGCKbEbontq3KAKWQyZfZKTgYqc9Bp'.\n     '2I2PcJ4ogk/UEBQcwipbFZmT13vDBx8fhnE1Ofnp9yJopFyT3X'.\n     'yANfks0QHSQMDaL37pOxMLIu2UyVkjVKLjyKSeuD8dAYCFkso1'.\n     'gYMaeWJ40T56cl8yAi/O4FSa2P6kYczIDsgVpAqcDImZPMuAB1'.\n     'dkLQtcc8a/bwox8IUHAxZVxGZMouSLVYwKuMkD5IxN+JSdsRJB'.\n     'pexuTVgYYM6EoGmxkmg3/hEhNUMr/hd7dqbOzExMn/GRDAxWZc'.\n     'j3I8HiXfMjF2FQowKw7pjoN6E/Llw/GBJj8qxVOMlX4ipxc/lY'.\n     'kl2zBLkmrTcEzMkoNoRLVidLi/9g+Z3I+1xRHX5EcAihxnbPRv'.\n     'OTU9kZSmpKPy9FTGrLimPZ1H+UiyGaF67w6n7E1DwMngFDxGvc'.\n     'w70v0xZUby5IxjlIyMssUJrJwVWkXBdbXvSvwEibcSdKCAFI16'.\n     '4/sc0SRo9cGAGq1DwvQFzV6DVuBiV4zYnlEts6A2TSPcSiXoxo'.\n     'QqJCEEFMbQ2b69o5qMiOOPqIMQkagu/aSL7waE8101WFShLjk9'.\n     'yxgEvjRUiyYd+gwAjY2J9VpXfZ/JEXLhDp3OR6U4T97+hEnPwx'.\n     'tv4HsRjy2tTQSFzQgDUnwSLBQRI+x1ZgcH87Vcv4SF19Kt0ezS'.\n     '1h9s0Ma25pgr/YJfnLnEysok0+ezjM6EBLldGqKIJYuDRhOQEJ'.\n     'Oih8X9Q0xmcXNjlCofBJgn78wxVz7L2YWf8tPPz1hnfjbjzfxN'.\n     'qVwutq2etZXUQSXikcXGIgUiUkJSDIQMJgYGJsaB3c7b1qQ4GZ'.\n     'xSkdGZIwMeNLfK6uezMnvJK3pLxeVixfvMsyVjSNSO6IV9adPG'.\n     'AArkEEz8oUkFmBjYGO80qfd6pCWIayD59wIKcsjcKqufn7JO/S'.\n     'xfyi+5c24pey5rZ09mJRNkiDdT/tzbkBr3SYkpMYpgEaIJSYhI'.\n     'kSOY1GhilAQk5ntDIojxCZ/kf87Pl85xbuWEnLiUy+cW3NNuJX'.\n     'MmY5meKf6mT7wZS+THdOjxlG06tIlIOMZxchSxcFFEGAwAGGME'.\n     'jwyZYSnWL3cXWiIUbUI6hO/vxXuFOV84ycmlBWthNeflTjuzTi'.\n     'lzJmM5s46Ej0J63/ZoPmoy6PYxtYVNhmfs0mbAND1mmKVMBY1L'.\n     'mxA1LN7WgXQbCApNhKJHRIM+DQbv7yQGhjnJ5NgFuXBuxpu5mD'.\n     'udm3LPuY7pmZLUE6L1SIJaIPFuDAqyw9lnwDYv6NFHkWJh4ZDB'.\n     'wCBFD3uMxsTAwcBAiElpE/KcPg36dIiOvpsRxDCyhmlP2YY9ZU'.\n     'v8NMb/1id+FGO0DTztkSXLOONUqeITsMkW2zwnJEIDFhYGx+A1'.\n     'kwK4mASkvKDPc3p0iYhRRwYUhZLUTyV6Eu0t4s1Y4kcx6W6KaM'.\n     'EZThcXH59RRhGEgIAddnBwNEBKqqpUtWBIF22YDIhJsbEkJqFN'.\n     'qLtERHs7GnUkwISEQAf0uj30bY39PzbiC6qrDu2cExJ69Nhhhz'.\n     '59UlIUipCQOnVi4sjG7ubJBy6um0C+he/0iDHQKIQERYyKFLqr'.\n     'SI/W6kJCnvOcrWSLSquC1/Jw9Ks3R0FQKHr0uMc9bnCDGjX69A'.\n     'H0XlcJkibN5jOe/alCZStHbjJL9lSMLkXExvCXRiDV6GZEeGeX'.\n     '3TvvBVQoEjfBL/v0rT75Th7VU5C8gktI6NLlMY+5yU3WWGODDf'.\n     'r098tHpNFNH7/2lKdXXdz7efLzVaqJIBOCmK8AJUlI6g0aV+9y'.\n     '9+p7AR3bMQpTBWPy7yeN6fy0jNwewfpvC9Xe+3kFoUuXe9zj5n'.\n     'BusEGHjh6GIAGawC2FWuvSvbbF1maFylZAsC1ISZADBiVNSJrP'.\n     'eX73MY//skHP85z5+fnSxQsXj//4n39cmnPn7LbZlsajBmEnBL'.\n     '1nuEGDG9x4aa5Ldz+h0RCuBqwBv1Wo+7vs9r7n++0MmYeAM+zB'.\n     '+61EK1QUEnbbtN+9Bh3Hsebn54u//PdfLq9eWl2ZnZ1dSnaSwu'.\n     'Pin40b9g3doKE0WoNIl65xj3v75njd3BBubQi6ExKmDWkMRKSl'.\n     'tSbVKQcMao1Go5Ugb0+x53nOyZMnSysrKydXLq1cWlxa/McgCB'.\n     'Yev3hU+GPrD3I5/q94k3pXYQY58q6B5Bs0HB//neaGx00gyWaz'.\n     'VCoV7bquCoKAnZ0dfN/f03egLGj0m3XQNE1jdnY2/+WXXy6trq'.\n     '6uzP3oR5eCIFi4detW5feXL1vr679Let37zVB3/mQytjXJwmSB'.\n     'wikHp9ShY0RESqObwPrr5oBERKhUKly4cIFqtUq9XufmzZtsbW'.\n     '2hXvuDwTTNtxZq8TyvsLy8vLS4uLgahOHphw8elL69fNlc++qr'.\n     'uFOrNXPddm1cczVL5f5P+Lv5MuOJgTGxwYbZpZsCdeAq8M1Bcw'.\n     'CGYeC6LtVqlRMnTjAyMkKn0yGXyx0N0LZt03Ec1zCMSrfXO37v'.\n     'zp3S769csb+/ciXt1mrNdHf3ltZ6Lca8ZpJsduhtCdb2gEFJoQ'.\n     'xADYHuHDS3f32lFEEQUK/XGRkZoVAocP78eZaXl9FaI/Jq25Uk'.\n     'yWHAYrHozM/PlxYWFibTND32sFbLXrtyxVz76qukXas1M61WTW'.\n     'm99gx+20TdN9jqtfjP7QzOwwYNp037Zd0DukDnIByA1pqdnR2+'.\n     '++472u02Z8+eZWJiAsMwDsEBRNGBzYJpmsaJEyfyX3zxxdLS0t'.\n     'KlVqu1dP3q1cLta9ekU6u1dat1J9b6Sk9kraV1rYXegW7apDYw'.\n     'kFY6fPc4MNTw88bwfZ/NzU2UUnieRxAEiAiGcXiXfcigiIjruo'.\n     'VyubxkWdbK7fX1xWvffFMInjzBM82uMT5+p++6V1UUrSe7u03t'.\n     '+8lezlKt3gHyl0aSJDQaDa5fv876+vo+w6FzDq1BpZRsb2/bly'.\n     '9f9vL5/Njdu3fzG0+eMJHNxsfn532vXN5NPG/7abPZal6/Hvfe'.\n     'kroPHfsm98f7AHW9Xo+//vrrlmVZm71+37QNw3JnZ9PK4uJGpV'.\n     'pt4Dh+vLGhsrmcfv1iHzu01m89HjIdCon2fb8TBMHtvYeRUn50'.\n     '1Oj4vqp3Ok1f5LYSadfr9dQfDN642P/XeF2DA+SBAuA4jkOhUK'.\n     'BQKESO43S11p3BYBDt7u4y+CtB/i/q7jp1GMiw2AAAAABJRU5E'.\n     'rkJggg==' ; \n\n        //==========================================================\n        // File: ppl_blue.png\n        //==========================================================\n        $this->imgdata_large[3][0]= 2284 ;\n        $this->imgdata_large[3][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABm'.\n     'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.\n     'B3RJTUUH0wMLFRAiTZAL3gAACHlJREFUeJy9mGtv29YZgJ9zKF'.\n     'F3y/Q9jh05tuQkarKgbYasde0UBdZgwNou/Vqga/sD9mP2B4a1'.\n     'BbZ9atFPxb5sqOtmXbI19bqsluPYiR3HN90vFEWRZx/IJI5zqa'.\n     'x0OwBBSgR5Hj7v+55zSEFXTUgIJyA9C6/9RsjMjAyFIxxJCDc7'.\n     'iBqKgyZACGg3G2x9+xXf/fG33P3mC9qNKsp1O+1JdkEnQTdgIO'.\n     'ttCSMUi8gj072MnugllAyB9G8rBGi6RsToJTF6iuRoFi1kHKZf'.\n     '7fB8Iggj0/Dy23D2dakNTR3JDsXPvzstxmZGRMER1EwHhQAEgE'.\n     'CLhIkPD6InY9S3djGLJVBtQP1Qb4HDAyoJYQOOZkPx49nhTH9i'.\n     '7MUBGT7egxkJgd70wZS/CUkoZtA/fRoE1DZ2ACiv52ibReCp4e'.\n     '7CIEHomxDiuVdGTqUnf/ZeOjR8fpiVXZul5ZrY3bWwbdcLr/dA'.\n     'AAIpAwQjUWIjQ+g9HZvswiCgBVF9/SI6OSLGzo0i+oLi6+Utbq'.\n     '+bKEftgwOE/0Ohocf66M+cBjo22U2RQLIHMhmYnvaOpR9S8bSU'.\n     'UqCURGpRkuMZMm9cIvPGJZLj0yBjT2LprkiSkykx9cuXIhOnUs'.\n     'm+QNC2XdG02ggBTcvFabsPWwTPpBAChSCgh4kYBpoeplWp47Qs'.\n     '7EYDt21xINzd5GCAxLExRl89Z+nHjpbKMmjbmkgfDzI0JEW53K'.\n     'Jaa6NcAOEX8v52uJzsBlAS6u0hcnTIccPRqhWPCUcLD+s1EaUp'.\n     'HCEhEMCyHNpt9SjgIU12A6iw6xb123vYhaaKjB9tlgMD5X+uBp'.\n     'zdkpg6azA8EaNQtKlVba+Xez4eCntnJrsDdFsW5nYFpxlFN846'.\n     'DXe8utkM4mhi+EgQmjYbS2WqexZKk6BpjwJ2YlK5VjeA3pNDiH'.\n     'YjRWPzPE7tmBo8EWwGhkXx+z3uXL7D3rU97LIF8RBEAl6lK/Uo'.\n     '6JNM1rZ2aTcr3eUgIQOGTgbdwXMGyRejenLYTvQGbAdRuetSud'.\n     'OivVuFZgtCEgICghICnZoMhmlVTPR49LCAEkQUhk/B7KXe0MWf'.\n     'nxj8xVR/cDheK14WZmtVMJSBnlGoN6FmQq0FLfdwJgORKPHRo/'.\n     'Snzx4G0F/FjJ4KiOdmjPCrrx8bffnMybMv9MQGNG3rzlVqtR1B'.\n     'sh/CYXCD4Aag1oCW7ZnUOjSp6WFi/QNEB8Y7BfTNjZyCmUvJ0I'.\n     'XXT47MTp98Ybon9VZCk8cVazfqlNargsY34G7ByAlIjkHd9CCr'.\n     'LbBdiHViUgiECuDKYCdz8b2cywREdiYZOj8zNnLuzOTzx6ODp+'.\n     'OaGaqwVzBFqz0Idhz2loE7YEwBLaAJLQcKbW8qjAcBF5Jh0AMP'.\n     'IOHe6kxgtb3UMO2OxkF//ffK28nQqxfvm3szrtnDVa799Qb/+v'.\n     'NtsbNSpm3tAv8B+w7Ub0FhAyoBcMPec9oK6raXk48ziQBXQcmC'.\n     'pT3YqHa0mpEBkTR6wz/Jjo2cy04+fzwxdDquNfQKO7sFUbpu0c'.\n     'wp3JoAYsA42Bbkl4GCryUNDEM7Avm6Z/CgSYBWG8pNuFuDu1Wo'.\n     'tjoxKIJGeHIiM/jmK9NnX5ycuJQMtUcqXPvLDTa+qIie4hAJ1U'.\n     'vdrmO2HaDfB931twJgAn1A4lGT96obPHPLBbhVgUoTHHWo9aAA'.\n     'JVAKpyKEmQNzWRENAsL18ycKjAFN/9gCNvzLB/390MMmE7pnDi'.\n     'Bvwt0K5Jv3O+0oB22nJ1Vvjb/UMhOpcKknqN1OiMB2DNHU2G5s'.\n     'sVndpGJVcZXjX1IAlvw9PmhRQcOFPhsSDkiBrQR1G7brgs0a7D'.\n     'ag3FK4rguqBXarI4Nt1SJv5gls7TEWtJDRBO2GwnIs8maevFnA'.\n     'Gx6awLZvzeTBu4kFbLigijC47pscpx0xyDfkvtUEnlarCDtrUC'.\n     't2HGIhvPHVdVwqjTIrxRU2a5uUrYoP0QZ2gMvACl7+3V/LuKDq'.\n     'sJuDy597516+CEezIHXv7vcgXQu2l+Bvn8He9Y4AE4kgk5P9DE'.\n     'R6aFdq5Et5Nit3yTf3m9sBcsAN3+D98c0Fit5JawE25r1zg1Fo'.\n     '5B8GFD7g+nVYnu8EUEop9XTa0N/9dUbqcphP/rDJzbUClVbpgR'.\n     'y2fXM3fND95qj75J8AC6BWPINfVSBieK+x+6cS5UCzCLu3oFV9'.\n     'GqCMx2NGOp2Znpv7aXZudsool3T5J/179sxVlHJ4kGPrP2COBX'.\n     '/7DmiApWCjxIMXpYNznYuXM+6TAKWUMppOZzLvv//ery5cuDCT'.\n     'SqVS336bCwr1JfAPB9r+2KAFwJS+OcETzZHz/7v3etl6ipz77X'.\n     'GAMh6PG+l0OjM3NzczOzs3k0pNnFlbW43+e/GKtMqrblSsF03V'.\n     'WHcJA0PjIAzvg9JTze2H67g9DjAwOTmZ+uCDD96anZ2dnZiYmF'.\n     '5dW41++Lvfa1fnr7qllVK9103mXNTnJgPA+YugsvB3HTaEl+Qs'.\n     'AZ/yeHPPDCiTyaRx5syZbGoilV1dW00szC9oV+avusuLy0Xd0X'.\n     'MgFkDM+zkYBZEHV8f7wwKu84zmngQoNU0LaZoWUa4K31y5qX/8'.\n     '4cfyyvwVN5/L10NOKNeg8UmDxoKF5Vfj1xXAgD0JrgAcvBDfel'.\n     'a4g4AykUgY6XR6emJiIru2ttZXq9S0K19eUcuLy8WQE8o5OAsN'.\n     'Ggsmpl+NpoL1g9X4UBU+C9xDgEKIwNTUVOqdd955M9mbnJ3/cj'.\n     '6Vu5aTheXCQXNdVeMzAwJSCGEA2XKpnF1cXIzlFnOVhJPIKdR+'.\n     'c88ctq4AlVKsrKzw0UcfKcC5uXqzXnNqSzb2pwLxOHP/l7Z/BN'.\n     'eB01LKt4HTrusKvGr8jB+hGn8MQAkYQMrfw4Nq/MFPtf+rdvDb'.\n     'k8QL+/5Z4Uepxm7bfwHuTAVUWpWaqAAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        // File: ppl_green.png\n        //==========================================================\n        $this->imgdata_large[4][0]= 2854 ;\n        $this->imgdata_large[4][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABm'.\n     'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.\n     'B3RJTUUH0wMLFQ4hANhluwAACrNJREFUeJytmF1zE1eagJ+3u9'.\n     'XdkvUty2AbmLEtEzDBgZ0UpDBOalNTUzU3czl7tct/2n+wt3M/'.\n     'NVM12SSTQQSyW2TA+QAJQogtYYFtyfrqL3WfvWj5g8AEjzfvhS'.\n     'SXjk8//Zz3Pf3qCMcJAWxMKlT4kH+jwu/FknnJSUItKFHzCrKA'.\n     'BggBQx5ziz/wn/yBz3hED4/oaJfSjgVoYjJJgTLTZCjohp7IGT'.\n     'k5aZ4kb+bRTR30Q7djj8f/kpPMUSCFedRL6W8e8qMQNE6S4xpv'.\n     'c5HrTPFubiJ3ZnlyOXV59rJYU5Z00h1c3d0brxAiUkScRijisk'.\n     '6XLTyiN3s8HuAJpniXa/q8/pt8Or+0kF8oXJm5YiydWcIpOrJu'.\n     'rjOQwd54AQwsMpTJYhPSoYuLQ58An/DnBQSdImXO8avsTPbqpc'.\n     'lLp67OXDVzMznZLGxSs2qyIRu4at8gKHQEC50kE1icxqCAdxST'.\n     'xjEA44tqaJlERl8uLWvvnX5PHuQfcCdxh5qq0aX76vj4WgWyXO'.\n     'QiNgBP8IAaddr08X8+wHFmJSQhBbPAZGoSZSt5wQs6qoNC7UEd'.\n     '4AEoLIQSCaCCy78Dv8Tiv1hjjW1CRj8XIAgEKqDtt9keboMJZa'.\n     'vMjuzQVd3Xr9prTJo+GF/jKZea95R25Lxs8jg5qFGiwDnOS0mW'.\n     'NE0rjNRIt3WbklUCA9mV3Zdz8OBT/JfCQLB0SKYVVjGFYSfx/E'.\n     '26ow4e6uDujlPFQpE0FU6P8qNTHdXJdEdda0qf0itWBVM3pa/3'.\n     'ccUlIECJet0cAJoeYk5EZCeS5IwEoerSxccJBwRqFFf38QCTaO'.\n     'TRVFKJm3NTbtLNSyh2IkhIXsvLCesEGNCWdmwyruSD/z9kUlRc'.\n     '3bqNlSxhJNJ43p5JITrOEis8Qtr0cXEpU/JT/pmO18n2vb42pU'.\n     '3JnDnHMBqyPlpnoAaxhr2llv1ZUBqEGlqYwDQMsskMOcMgVL3Y'.\n     'ZOQTHAcQQiIGjHCwCaiovjrv4hbcpKuJJjIcDHm685RGr4GLCx'.\n     'YHkAcrLoAoDSLBiAQrMkjqybHJCbxgh+7xAC1MpsgzwRwD3qHL'.\n     'WyTIBdlAa6u2rHfXaew06PV78ZZjAwleNnkolECoH5i090wOcY'.\n     '+TgwYzFHiPi1zkOkXexeAMASnVU+LiyiA1wFUuaqggACLizeWw'.\n     'ycMzyssmVYKkbpGyC5T+OUALk2mKLHKWf+ED/az+YW42d66YL+'.\n     'aNrmEEzQCFEnKw368EgEvcN1m80eTIQIt0TFOjMJHkzNEBBYPp'.\n     'sblf8QHzrORO5JaWZ5ZLl6cuJyyxpNPv4PZdoT+GyIxBfI5uUg'.\n     'eJMCwP2/bIHO1JEudcgUUWOceKNq99mCvnzs5PzRcuTV4y5mRO'.\n     'SMIjo47z5S7a94oQCNKgJsZwO7D/IDNg3/LLhRNXt4JohBb4aG'.\n     '82GLdXcf93mQ+Y43r2RHZp+cRy6cqJK4l8MS+tdItaqiYtc0Mm'.\n     'QpfJARh98HYh9IiXVcaAo58wGb+LBAjbSPgCOcoSa0wzxXtc08'.\n     '/pv8mfyL+9MLVQvDJ1JVHJV6SZbFI1qtTsB+KlehRtRTGE8Afo'.\n     'P4DRcAxiEudhAHjjzz+ubgX4oHowakHQOlqzICQwyVPITGVOXi'.\n     'xfLF6aumzmczl5lHzMff2+fCdPaGttEkXoLQAO9B7C6EugPYby'.\n     'gVPjGXc5eIbNAJPjGwiAbaAJUQv8wVG7GROkJFpyOqn/ovgLba'.\n     '44L0+sDaraXb6jzq7aBQWjBOyUoHcaopOgmaA3IRyNDZnA1HjO'.\n     'HSBkr7eEFDAEngHrQCf+/s2A8cSiSkqcKUeeTjwFy2Jd78t3+L'.\n     'TR4itIiBLwLQhzkJyB5Cx4HXDaENVQCBAQcRqFIHTRaBIvuYXg'.\n     'AdsouuNxEL0ZUBHnSQp66R73zYfUtQ6OytKT8RckQAJQoLtgO5'.\n     'BJgj0D/WfgdyHaAHx8THoUcbGx8ciwhUl3bDEiToURPooeI7pH'.\n     'MziK9Yd9nU5a6GgKjOH41vsgI4hAcyC5AZkapF+AoYNrjjsuhx'.\n     'FbtPmeB5ykyQQzTPAWAQWC8S9oAI0QRRuPb9jkmyMZNAOTklvC'.\n     'GGYZaFkGmkVAh8h4DtKFMIBunG+pB5B5AIkGBDsQ+qBiL20caj'.\n     'zhJknq5KlgMkLjJHJos4kYEbFJi5vc5eYbATVN02bNWe19+32t'.\n     'aJWlFm3wbf8Rz5NbDFJdlOFBF/g7cBf0JkrbBb+F6j1DOduEkU'.\n     '8bWCOiSofPWadBnSZDWmgUkEMGhZCINut8S/0NBtPptFlZrBSu'.\n     'vnt1+ndnflfIp9OJ/279Ubbbd+lP7KBKPoEBsgnqLph/BRzwdS'.\n     'LnBUFvHcfdpRsGPAGqwMco6jynz+e0SPKYCHMfLX5VKHwcenR+'.\n     'Igd1XTcqlUr+xn/cePv91fevzy8sLO2OtrOpWkqL7gXKSAVRdh'.\n     'ZFEmEXoYkwBNqovoc/3GHH3aUR+jwC1oD/AWrANi4hGwyBzqEG'.\n     'Vvb77Dgi0eT1VZzJZMxKpVJYXV1dXF1dXVm6sPSvruue3Xzcyj'.\n     '6/syvDzwj0lNazK6Fj5LFCRZouZpBABj6jXouu3+Np6HNvDHaf'.\n     'g91t74msbMuOJicnSSaTKKUQEUQEpRSO69But1/dB0VEm5uby9'.\n     'y4cWNpdXX1+sLCworrume//PuXpeqnVeOban0U1PW2kcx+O9L7'.\n     'Te9sUB4lWFR9SqNtNGcHx+/RDD2+Am4D94CnQA8OjjlEhMnyJC'.\n     'srK8zOzu7BiYioMAzZ2Njg9u3brwIqpSSXy2WXl5eXLly4sOo4'.\n     'zoV6vV6oflrVP/7Tx8Hmw1Zb6ydqmpWp7ha8h4O3gjOhzVANmF'.\n     'XPMNQWvdDnCXCXuHR+APqH4fbCtm2mp6eZn59H13WJuYXRaKSU'.\n     'UiSTyVcBdV3XDcOwRaTU7/en19bWCn/79G+JL/76RbhZ22y7u+'.\n     '6ahl71nPDz/nO17m7wAxlabFOihy4+DvAcqAMbPzZ3OFzX5dmz'.\n     'Z2iahoiosUUVhiGNRgPHcV4GzGQy5uLiYuH8+fMzo9FoslarJW'.\n     '9+elP75E+fBJu1zY7qqpqBUW3T/niohnVvy+1zm5aVtp+WE2XT'.\n     'nrHFzbjh1tYLz3XdPjD4R3BKKba2tqhWq4dzUO3noBPn4H5PKy'.\n     'LaO++8U7hx48byhQsXVne7u6tf3/v64t3P7mbq9+odt+OuaWi3'.\n     'PLxbW2ytubjbQCgiMnt6VlaurWgz0zM0m02q1WrUaDSUUuqI56'.\n     'ivDxE5MCgiYllWtlwuL5mmufLV/a/O/uXPf9Ff1F+80Lv6Yx29'.\n     '2qHzyZBh3cdvc7gaTZuZkzPh/Py8ACqVSv1/uPZDKXUAGEWRtF'.\n     'qtxEcffZTL5XLF+2v39fqjeivshA/TpP83JLwzYFBzcA4370Cc'.\n     'S81nTRBUs9lkOByi1GuOPI4Rh3+26JZlnSkWi781DOPXvV4v3+'.\n     '/2G0R8kSBxB/jew+tERK+c49m2TblcxrZtXNfl+fPneJ6HZVmU'.\n     'y2VJJpNyaJ9TSinlOA5bW1u4rntkQA0oAG8D54gb9W3ianxM3A'.\n     'e/cn73U3Hq1Cm5du2aPjs7a+ztcSIShmE4ajQa6tatWzQajZ+0'.\n     'fbiKI+It4SvijVUj7kL2qvGfgkskEqTTaZmcnDROnTplJhIJTU'.\n     'QiwPd9P/Q8T6XTaQzDIAiCfzjP/wFVfszuFqdHXgAAAABJRU5E'.\n     'rkJggg==' ; \n\n\n        //==========================================================\n        // File: pp_red.png\n        //==========================================================\n        $this->imgdata_small[0][0]= 384 ;\n        $this->imgdata_small[0][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABm'.\n     'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsSAAALEgHS3X78AAAA'.\n     'B3RJTUUH0wMJFhouFobZrQAAAQ1JREFUeJyV1dFtwyAQBuD/og'.\n     'xQdYxa8gRY6hJ0jK6QdohMkTEuE5wUj5ERen05IoLvID7Jkn2G'.\n     'j8MgTMyMXqRlUQBYq9ydmaL2h1cwqD7l30t+L1iwlbYFRegY7I'.\n     'SHjkEifGg4ww3aBa/l4+9AhxWWr/dLhEunXUGHq6yGniw3QkOw'.\n     '3jJ7UBd82n/VVAlAtvsfp98lAj2sAJOhU4AeQ7DC1ubVBODWDJ'.\n     'TtCsEWa6u5M1NeFs1NzgdtuhHGtj+9Q2IDppQUAL6Cyrlz0gDN'.\n     'ohSMiJCt861672EiAhEhESG3woJ9V9OKTkwRKbdqz4cHmFLSFg'.\n     's69+LvAZKdeZ/n89uLnd2g0S+gjd5g8zzjH5Y/eLLi+NPEAAAA'.\n     'AElFTkSuQmCC' ; \n\n        //==========================================================\n        // File: pp_orange.png\n        //==========================================================\n        $this->imgdata_small[1][0]= 403 ;\n        $this->imgdata_small[1][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABm'.\n     'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsSAAALEgHS3X78AAAA'.\n     'B3RJTUUH0wMJFhwAnApz5AAAASBJREFUeJyN1dFthDAMBuDf7S'.\n     '3BCm2VCRKpS4QxbhikW6IewzcBqm6Fm6JyH7iEEByCn5AJH38g'.\n     'BBIRHNUzBAWAGNfe/SrUGv92CtNt309BrfFdMGPjvt9CD8Fyml'.\n     'ZZaDchRgA/59FDMD18pvNoNyHxMnUmgLmPHoJ+CqqfMaNAH22C'.\n     'fgqKRwR+GRpxGjXBEiuXDBWQhTK3plxijyWWvtKVS5KNG1xM8I'.\n     'OBr7geV1WupDqpmTAPKjCqLhxk/z0PImQmjKrAuI6vMXlhFroD'.\n     'vfdqITXWqg2YMSJEAFcReoag6UXU2DzPG8w5t09YYsAyLWvHrL'.\n     'HUy6D3XmvMAAhAay8kAJpBosX4vt0G4+4Jam6s6Rz1fgFG0ncA'.\n     'f3XfOQcA+Acv5IUSdQw9hgAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        // File: pp_pink.png\n        //==========================================================\n        $this->imgdata_small[2][0]= 419 ;\n        $this->imgdata_small[2][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABm'.\n     'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsSAAALEgHS3X78AAAA'.\n     'B3RJTUUH0wMJFhsQzvz1RwAAATBJREFUeJyd1MFthDAQheF/oi'.\n     'gF+JYWQKICkCJRA1vGtrDbxFbhGvY0HVjCLeS2BeTiHFgTB2wg'.\n     'eRISstCnmcG2qCpbuXf3ADBQzWsPfZfS9y9HsEu4/Fo33Wf4Fx'.\n     'gxL3a1XkI3wbTNXHLoboVeLFUYDqObYBy+Fw/Uh9DdCmtOwIjF'.\n     'YvG76CZoOhNGRmpO8zz30CJoOhMAqlDxFzQLppgXj2XaNlP7FF'.\n     'GLL7ccMYCBgZERgCvXLBrfi2DEclmiKZwFY4tp6sW26bVfnede'.\n     'e5Hc5dC2bUgrXGKqWrwcXnNYDjmCrcCIiQgDcFYV05kQ8SXmnB'.\n     'NgPiVN06wrTDGAhz5EWY/FOccTk+cTnHM/YNu2YYllgFxCWuUM'.\n     'ikzGx+2Gc+4N+CoJW8n+5a2UKm2aBoBvGA6L7wfl8aoAAAAASU'.\n     'VORK5CYII=' ; \n\n\n        //==========================================================\n        // File: pp_blue.png\n        //==========================================================\n        $this->imgdata_small[3][0]= 883 ;\n        $this->imgdata_small[3][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAACi1'.\n     'BMVEX///8AAAAAADMAAGYAAJkAAMwAAP8zAAAzADMzAGYzAJkz'.\n     'AMwzAP9mAABmADNmAGZmAJlmAMxmAP+ZAACZADOZAGaZAJmZAM'.\n     'yZAP/MAADMADPMAGbMAJnMAMzMAP//AAD/ADP/AGb/AJn/AMz/'.\n     'AP8AMwAAMzMAM2YAM5kAM8wAM/8zMwAzMzMzM2YzM5kzM8wzM/'.\n     '9mMwBmMzNmM2ZmM5lmM8xmM/+ZMwCZMzOZM2aZM5mZM8yZM//M'.\n     'MwDMMzPMM2bMM5nMM8zMM///MwD/MzP/M2b/M5n/M8z/M/8AZg'.\n     'AAZjMAZmYAZpkAZswAZv8zZgAzZjMzZmYzZpkzZswzZv9mZgBm'.\n     'ZjNmZmZmZplmZsxmZv+ZZgCZZjOZZmaZZpmZZsyZZv/MZgDMZj'.\n     'PMZmbMZpnMZszMZv//ZgD/ZjP/Zmb/Zpn/Zsz/Zv8AmQAAmTMA'.\n     'mWYAmZkAmcwAmf8zmQAzmTMzmWYzmZkzmcwzmf9mmQBmmTNmmW'.\n     'ZmmZlmmcxmmf+ZmQCZmTOZmWaZmZmZmcyZmf/MmQDMmTPMmWbM'.\n     'mZnMmczMmf//mQD/mTP/mWb/mZn/mcz/mf8AzAAAzDMAzGYAzJ'.\n     'kAzMwAzP8zzAAzzDMzzGYzzJkzzMwzzP9mzABmzDNmzGZmzJlm'.\n     'zMxmzP+ZzACZzDOZzGaZzJmZzMyZzP/MzADMzDPMzGbMzJnMzM'.\n     'zMzP//zAD/zDP/zGb/zJn/zMz/zP8A/wAA/zMA/2YA/5kA/8wA'.\n     '//8z/wAz/zMz/2Yz/5kz/8wz//9m/wBm/zNm/2Zm/5lm/8xm//'.\n     '+Z/wCZ/zOZ/2aZ/5mZ/8yZ///M/wDM/zPM/2bM/5nM/8zM////'.\n     '/wD//zP//2b//5n//8z///9jJVUgAAAAAXRSTlMAQObYZgAAAA'.\n     'FiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElN'.\n     'RQfTAwkWGTNerea3AAAAYUlEQVR4nHXNwQ3AIAxDUUfyoROxRZ'.\n     'icARin0EBTIP3Hp1gBRqSqYo0seqjZpnngojlWBir5+b8o06lM'.\n     'ha5uFKEpDZulV8l52axhVzqaCdxQp32qVSSwC1wN3fYiw7b76w'.\n     'bN4SMue4/KbwAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        // File: pp_green.png\n        //==========================================================\n        $this->imgdata_small[4][0]= 447 ;\n        $this->imgdata_small[4][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABm'.\n     'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsSAAALEgHS3X78AAAA'.\n     'B3RJTUUH0wMJFhkLdq9eKQAAAUxJREFUeJyN1LFVwzAQxvH/8f'.\n     'IeDS0FLKABlN6eIwPYAzCHB0gWYI2jj+i1ABUTQN4TRSQ7iiWZ'.\n     'qxLn9Mt9ydmiqrSq930AYFiu6YdKrf/hP1gYQn6960PxwBaYMG'.\n     'E9UA3dBFtVQjdBOQmBakLennK0CapRwbZRZ3N0O/IeEsqp3HKL'.\n     'Smtt5pUZgTPg4gdDud+6xoS97wM2rsxxmRSoTgoVcMZsXJkBho'.\n     'SmKqCuOuEtls6nmGMFPTUmxBKx/MeyNfQGLoOOiC2ddsxb1Kzv'.\n     'ZzUqu5IXbGDvBJf+hDisi77qFSuhq7Xpuu66TyJLRGbsXVUPxV'.\n     'SxsgkzDMt0mKT3/RcjL8C5hHnvJToXY0xYRZ4xnVKsV/S+a8YA'.\n     'AvCb3s9g13UhYj+TTo93B3fApRV1FVlEAD6H42DjN9/WvzDYuJ'.\n     'dL5b1/ji+/IX8EGWP4AwRii8PdFHTqAAAAAElFTkSuQmCC' ; \n    }\n}\n\n?>\n"
  },
  {
    "path": "include/jpgraph/imgdata_squares.inc.php",
    "content": "<?php\n//=======================================================================\n// File:        IMGDATA_SQUARES.INC\n// Description: Base64 encoded images for squares\n// Created:     2003-03-20\n// Ver:         $Id: imgdata_squares.inc.php 1106 2009-02-22 20:16:35Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\nclass ImgData_Squares extends ImgData {\n    protected $name = 'Squares';\n    protected $an = array(MARK_IMG_SQUARE =>'imgdata');\n\n    protected $colors = array('bluegreen','blue','green',\n   'lightblue','orange','purple','red','yellow');\n    protected $index  = array('bluegreen' =>2,'blue'=>5,'green'=>6,\n   'lightblue'=>0,'orange'=>7,'purple'=>4,'red'=>3,'yellow'=>1);\n    protected $maxidx = 7 ;\n    protected $imgdata ;\n\n    function ImgData_Squares () {\n        //==========================================================\n        //sq_lblue.png\n        //==========================================================\n        $this->imgdata[0][0]= 362 ;\n        $this->imgdata[0][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAAABm'.\n     'JLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAA'.\n     'B3RJTUUH0wMLFgojiPx/ygAAAPdJREFUeNpj/P377+kzHx89/c'.\n     'VAHNBQ5VBX52HavPWWjg6nnDQbkXoUFTnnL7zD9PPXrz17HxCj'.\n     'E6Jn6fL7H7/+ZWJgYCBGJ7IeBgYGJogofp1oehDa8OjE1IOiDa'.\n     'tOrHoYGBhY0NwD0enirMDAwMDFxYRVD7ptyDrNTAU0NXix6sGu'.\n     'jYGBgZOT9e/f/0xMjFyczFgVsGAKCfBza2kKzpl3hIuT1c9Xb/'.\n     'PW58/foKchJqx6tmy98vbjj8cvPm/afMnXW1JShA2fNmQ9EBFc'.\n     'Opnw6MGjkwm/Hlw6mQjqwaqTiRg9mDoZv//4M2/+UYJ64EBWgj'.\n     'cm2hwA8l24oNDl+DMAAAAASUVORK5CYII=' ; \n\n        //==========================================================\n        //sq_yellow.png\n        //==========================================================\n        $this->imgdata[1][0]= 338 ;\n        $this->imgdata[1][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAAWl'.\n     'BMVEX////+/+H+/9/9/9v8/8P8/8H8/7v8/7n6/4P5/335/3n5'.\n     '/3X4/1f4/1P3/031/w30/wn0/wPt+ADp9ADm8ADk7gDc5gDa5A'.\n     'DL1ADFzgCwuACqsgClrABzeAC9M0MzAAAAAWJLR0QAiAUdSAAA'.\n     'AAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9MDCxYEDlOgDj'.\n     'EAAAB+SURBVHjaVcpbCsQgDEDRGERGKopjDa2a/W9zfLWj9/Nw'.\n     'Ac21ZRBOtZlRN9ApzSYFaDUj79KIorRDbJNO9bN/GUSh2ZRJFJ'.\n     'S18iorURBiyksO8buT0zkfYaUqzI91ckfhWhoGXTLzsDjI68Sz'.\n     'pGMjrzPzauA/iXk1AtykmvgBC8UcWUdc9HkAAAAASUVORK5CYI'.\n     'I=' ; \n\n        //==========================================================\n        //sq_blgr.png\n        //==========================================================\n        $this->imgdata[2][0]= 347 ;\n        $this->imgdata[2][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAAZl'.\n     'BMVEX////0+vv0+vrz+fry+frv+Png7e/d7e/a6+zY6+250tSz'.\n     '0tSyztCtztGM0NWIz9SDzdNfsLVcrrRZrbJOp61MpqtIr7dHn6'.\n     'RErrZArLQ6q7M2g4kygYcsp68npa4ctr8QZ20JnqepKsl4AAAA'.\n     'AWJLR0QAiAUdSAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU'.\n     '1FB9MDCxYEByp8tpUAAAB7SURBVHjaVcjRFoIgDADQWZpWJpjY'.\n     'MsnG//9kzIFn3McLzfArDA3MndFjrhvgfDHFBEB9pt0CVzwrY3'.\n     'n2yicjhY4vTSp0nbXtN+hCV53SHDWe61dZY+/9463r2XuifHAM'.\n     '0SoH+6xEcovUlCfefeFSIwfTTQ3fB+pi4lV/bTIgvmaA7a0AAA'.\n     'AASUVORK5CYII=' ; \n\n        //==========================================================\n        //sq_red.png\n        //==========================================================\n        $this->imgdata[3][0]= 324 ;\n        $this->imgdata[3][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAAXV'.\n     'BMVEX////++Pn99/j99ff99fb98/X98/T98PL55uj43+P24+bw'.\n     'kKPvjaHviJ3teJHpxMnoL2Pjs73WW3rWNljVWXnUVnbUK1DTJk'.\n     '3SUHPOBz/KQmmxPVmuOFasNFOeIkWVka/fAAAAAWJLR0QAiAUd'.\n     'SAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9MDCxYEHd'.\n     'ceT+8AAABtSURBVHjaVchbAkMwEAXQq6i3VrQiQfa/zDYTw8z5'.\n     'PCjGt9JVWFt1XWPh1fWNdfDy+tq6WPfRUPENNKnSnXNWPB4uv2'.\n     'b54nSZ8jHrMtOxvWZZZtpD4KP6xLkO9/AhzhaCOMhJh68cOjzV'.\n     '/K/4Ac2cG+nBcaRuAAAAAElFTkSuQmCC' ; \n\n        //==========================================================\n        //sq_pink.png\n        //==========================================================\n        $this->imgdata[4][0]= 445 ;\n        $this->imgdata[4][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAApV'.\n     'BMVEX////6+Pz69/v49Pr38/r17/jr4+/l3Onj2efh1ua/L+i+'.\n     'q8m+Lue9Lua8qsS8LuW8LeS7pca5LOG4LN+2Y9O2YNW1ZdO1Kt'.\n     'y0atC0aNGzb82zbc6zKtuzKdqycsuwa8qtJtOISZ2GRpuFN6GE'.\n     'NqCDQpmCMZ+BPpd/LJ1/K519S5B9Jpx9Jpt9JZt6RY11BJZ1BJ'.\n     'V0BJV0BJRzBJNvNoRtIoJUEmdZ/XbrAAAAAWJLR0QAiAUdSAAA'.\n     'AAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9MDCxYDF3iKMD'.\n     'YAAACeSURBVHjaVczbEoIgGARgCiMtrexoWpaa2FHUgvd/tH4Y'.\n     'BnEvv9ldhNPradPnnGBUTtPDzMRPSIF46SaBoR25dYjz3I20Lb'.\n     'ek6BgQz73Il7KKpSgCO0pTHU0886J1sCe0ZYbALjGhjFnEM2es'.\n     'VhZVI4d+B1QtfnV47ywCEaKeP/p7JdLejSYt0j6NIiOq1wJZIs'.\n     'QTDA0ELHwhPBCwyR/Cni9cOmzJtwAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        //sq_blue.png\n        //==========================================================\n        $this->imgdata[5][0]= 283 ;\n        $this->imgdata[5][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAAQl'.\n     'BMVEX////4+fz39/z19vvy8vru7/ni4+7g4fHW1ue8vteXmt6B'.\n     'hdhiZ7FQVaZETcxCSJo1Oq4zNoMjKakhJHcKFaMEC2jRVYdWAA'.\n     'AAAWJLR0QAiAUdSAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0'.\n     'SU1FB9MDCxYDN0PkEP4AAABfSURBVHjaVchHAoAgDATAVcCCIF'.\n     'j4/1elJEjmOFDHKVgDv4iz640gLs+LMF6ZUv/VqcXXplU7Gqpy'.\n     'PFzBT5qml9NzlOX259riWHlS4kOffviHD8PQYZx2EFMPRkw+9Q'.\n     'FSnRPeWEDzKAAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        //sq_green.png\n        //==========================================================\n        $this->imgdata[6][0]= 325 ;\n        $this->imgdata[6][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAAXV'.\n     'BMVEX////2+vX1+vX1+fT0+fPz+PPx9/Dv9u7u9e3h7uHe697a'.\n     '6dnO2s3I1sa10LOvza2ay5aEwYBWlE9TqE5Tkk1RkEpMrUJMg0'.\n     'hKiUNGpEFBojw8oTcsbScaYBMWlwmMT0NtAAAAAWJLR0QAiAUd'.\n     'SAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9MDCxYEFd'.\n     'nFx90AAABuSURBVHjaVc9HAoAgDADB2HuJWLDx/2cKBITscW4L'.\n     '5byzMIWtZobNDZIZtrcCGZsRQ8GwvRSRNxIiMuysODKG3alikl'.\n     'ueOPlpKTLBaRmOZxQxaXlfb5ZWI9om4WntrXiDSJzp7SBkwMQa'.\n     'FEy0VR/NAB2kNuj7rgAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        //sq_orange.png\n        //==========================================================\n        $this->imgdata[7][0]= 321 ;\n        $this->imgdata[7][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAAUV'.\n     'BMVEX/////8+n/8uf/8OP/59H/5Mv/zqH/zJ3/ypv/yJf/vYH/'.\n     'u33/uXn/n0n/nUX/m0H/lzn/ljf/lDP/kS3/kCv/iR//hxv/fg'.\n     'n/fAX/eQDYZgDW6ia5AAAAAWJLR0QAiAUdSAAAAAlwSFlzAAAL'.\n     'EgAACxIB0t1+/AAAAAd0SU1FB9MDCxYEJIgbx+cAAAB2SURBVH'.\n     'jaVczRCoQwDETRbLAWLZSGUA35/w/dVI0283i4DODew3YESmWW'.\n     'kg5gWkoQAe6TleUQI/66Sy7i56+kLk7cht2N0+hcnJgQu0SqiC'.\n     '1SzSIbzWSi6gavqJ63wSduRi2f+kwyD5rEukwCdZ1kGAMGMfv9'.\n     'AbWuGMOr5COSAAAAAElFTkSuQmCC' ; \n    }\n}\n\n?>\n"
  },
  {
    "path": "include/jpgraph/imgdata_stars.inc.php",
    "content": "<?php\n//=======================================================================\n// File:        IMGDATA_STARS.INC\n// Description: Base64 encoded images for stars\n// Created:     2003-03-20\n// Ver:         $Id: imgdata_stars.inc.php 1106 2009-02-22 20:16:35Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\n\nclass ImgData_Stars extends ImgData {\n    protected $name = 'Stars';\n    protected $an = array(MARK_IMG_STAR => 'imgdata');\n\n    protected $colors = array('bluegreen','lightblue','purple','blue','green','pink','red','yellow');\n    protected $index  = array('bluegreen'=>3,'lightblue'=>4,'purple'=>1,\n   'blue'=>5,'green'=>0,'pink'=>7,'red'=>2,'yellow'=>6);\n    protected $maxidx = 7 ;\n    protected $imgdata ;\n\n    function __construct() {\n        //==========================================================\n        // File: bstar_green_001.png\n        //==========================================================\n        $this->imgdata[0][0]= 329 ;\n        $this->imgdata[0][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAAUV'.\n     'BMVEX///////+/v7+83rqcyY2Q/4R7/15y/1tp/05p/0lg/zdX'.\n     '/zdX/zVV/zdO/zFJ9TFJvDFD4yg+8Bw+3iU68hwurhYotxYosx'.\n     'YokBoTfwANgQFUp7DWAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgF'.\n     'HUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAxYTJj'.\n     'CRyxgTAAAAcUlEQVR4nH3MSw6AIAwEUBL/IKBWwXL/g0pLojUS'.\n     'ZzGLl8ko9Zumhr5iy66/GH0dp49llNPB5sTotDY5PVuLG6tnM9'.\n     'CVKSIe1joSgPsAKSuANNaENFQvTAGzmheSkUpMBWeJZwqBT8wo'.\n     'hmysD4bnnPsC/x8ItUdGPfAAAAAASUVORK5CYII=' ; \n        //==========================================================\n        // File: bstar_blred.png\n        //==========================================================\n        $this->imgdata[1][0]= 325 ;\n        $this->imgdata[1][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAATl'.\n     'BMVEX///+/v79uRJ6jWPOSUtKrb+ejWO+gWPaGTruJTr6rZvF2'.\n     'RqC2ocqdVuCeV+egV/GsnLuIXL66rMSpcOyATbipY/OdWOp+VK'.\n     'aTU9WhV+yJKBoLAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgA'.\n     'AAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAxYTJwynv1'.\n     'XVAAAAcElEQVR4nH3MyQ6AIAwEUFIqiwju2///qLQmWiJxDnN4'.\n     'mYxSv5lqGCs2nvaLLtZx/VhGOW1MjnPJWp0zsw2wsUY2jd09BY'.\n     'DFmESC+BwA5UCUxhqAhqrA4CGrLpCMVGK4sZe4B+/5RLdiyMb6'.\n     'on/PuS9CdQNC7yBXEQAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        // File: bstar_red_001.png\n        //==========================================================\n        $this->imgdata[2][0]= 325 ;\n        $this->imgdata[2][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAATl'.\n     'BMVEX///+/v7+eRFHzWG3SUmHnb37vWGr2WHG7Tlm+TljxZneg'.\n     'Rk3KoaXgVmXnV2nxV227nJ++XGzErK3scIS4TVzzY3fqWG2mVF'.\n     'zVU2PsV2rJFw9VAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgA'.\n     'AAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAxYTJzCI0C'.\n     'lSAAAAcElEQVR4nH3MyQ6AIAwEUFIqiwju2///qLQmWiJxDnN4'.\n     'mYxSv5lqGCs2nvaLLtZx/VhGOW1MjnPJWp0zsw2wsUY2jd09BY'.\n     'DFmESC+BwA5UCUxhqAhqrA4CGrLpCMVGK4sZe4B+/5RLdiyMb6'.\n     'on/PuS9CdQNC7yBXEQAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        // File: bstar_blgr_001.png\n        //==========================================================\n        $this->imgdata[3][0]= 325 ;\n        $this->imgdata[3][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAATl'.\n     'BMVEX///+/v79Ehp5Yx/NSq9Jvw+dYwu9YzfZOmbtOmb5myPFG'.\n     'gqChvcpWteBXvedXxvGcsbtcpb6su8RwzOxNmrhjyvNYwupUjK'.\n     'ZTr9VXwOyJhmWNAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgA'.\n     'AAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAxYTJTC65k'.\n     'vQAAAAcElEQVR4nH3MyQ6AIAwEUFIqiwju2///qLQmWiJxDnN4'.\n     'mYxSv5lqGCs2nvaLLtZx/VhGOW1MjnPJWp0zsw2wsUY2jd09BY'.\n     'DFmESC+BwA5UCUxhqAhqrA4CGrLpCMVGK4sZe4B+/5RLdiyMb6'.\n     'on/PuS9CdQNC7yBXEQAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        // File: bstar_blgr_002.png\n        //==========================================================\n        $this->imgdata[4][0]= 325 ;\n        $this->imgdata[4][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAATl'.\n     'BMVEX///+/v79EnpxY8/FS0dJv5+dY7+9Y9vBOubtOur5m8fFG'.\n     'nKChycpW3uBX5+ZX8e2curtcvrqswsRw7OdNuLZj8/BY6udUpK'.\n     'ZT1dRX7OtNkrW5AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgA'.\n     'AAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAxYTJgXHeN'.\n     'wwAAAAcElEQVR4nH3MyQ6AIAwEUFIqiwju2///qLQmWiJxDnN4'.\n     'mYxSv5lqGCs2nvaLLtZx/VhGOW1MjnPJWp0zsw2wsUY2jd09BY'.\n     'DFmESC+BwA5UCUxhqAhqrA4CGrLpCMVGK4sZe4B+/5RLdiyMb6'.\n     'on/PuS9CdQNC7yBXEQAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        // File: bstar_blue_001.png\n        //==========================================================\n        $this->imgdata[5][0]= 325 ;\n        $this->imgdata[5][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAATl'.\n     'BMVEX///+/v79EY55Yi/NSetJvledYiO9YkPZOb7tObr5mkvFG'.\n     'X6ChrcpWgOBXhedXi/Gcpbtcf76sssRwnOxNcbhjk/NYiepUbK'.\n     'ZTfdVXh+ynNEzzAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgA'.\n     'AAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAxYTJhStyP'.\n     'zCAAAAcElEQVR4nH3MyQ6AIAwEUFIqiwju2///qLQmWiJxDnN4'.\n     'mYxSv5lqGCs2nvaLLtZx/VhGOW1MjnPJWp0zsw2wsUY2jd09BY'.\n     'DFmESC+BwA5UCUxhqAhqrA4CGrLpCMVGK4sZe4B+/5RLdiyMb6'.\n     'on/PuS9CdQNC7yBXEQAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        // File: bstar_oy_007.png\n        //==========================================================\n        $this->imgdata[6][0]= 325 ;\n        $this->imgdata[6][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAATl'.\n     'BMVEX///+/v7+ejUTz11jSvVLn02/v1lj21li7q06+r07x2mag'.\n     'lUbKxKHgy1bnz1fx1Ve7t5y+qlzEwqzs03C4pE3z2WPqz1imml'.\n     'TVv1Ps01dGRjeyAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgA'.\n     'AAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAxYTJjsGGc'.\n     'GbAAAAcElEQVR4nH3MyQ6AIAwEUFIqiwju2///qLQmWiJxDnN4'.\n     'mYxSv5lqGCs2nvaLLtZx/VhGOW1MjnPJWp0zsw2wsUY2jd09BY'.\n     'DFmESC+BwA5UCUxhqAhqrA4CGrLpCMVGK4sZe4B+/5RLdiyMb6'.\n     'on/PuS9CdQNC7yBXEQAAAABJRU5ErkJggg==' ; \n\n        //==========================================================\n        // File: bstar_lred.png\n        //==========================================================\n        $this->imgdata[7][0]= 325 ;\n        $this->imgdata[7][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAATl'.\n     'BMVEX///+/v7+eRJPzWN3SUr7nb9TvWNj2WOS7Tqi+TqnxZtyg'.\n     'Ro/KocPgVsjnV9LxV927nLa+XLTErL7scN24TarzY9/qWNemVJ'.\n     'jVU8LsV9VCwcc9AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgA'.\n     'AAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAxYTJxi9ZY'.\n     'GoAAAAcElEQVR4nH3MyQ6AIAwEUFIqiwju2///qLQmWiJxDnN4'.\n     'mYxSv5lqGCs2nvaLLtZx/VhGOW1MjnPJWp0zsw2wsUY2jd09BY'.\n     'DFmESC+BwA5UCUxhqAhqrA4CGrLpCMVGK4sZe4B+/5RLdiyMb6'.\n     'on/PuS9CdQNC7yBXEQAAAABJRU5ErkJggg==' ; \n    }\n}\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpg-config.inc.php",
    "content": "<?php\n//=======================================================================\n// File:        JPG-CONFIG.INC\n// Description: Configuration file for JpGraph library\n// Created:     2004-03-27\n// Ver:         $Id: jpg-config.inc.php 1871 2009-09-29 05:56:39Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\n\n//------------------------------------------------------------------------\n// Directories for cache and font directory.\n//\n// CACHE_DIR:\n// The full absolute name of the directory to be used to store the\n// cached image files. This directory will not be used if the USE_CACHE\n// define (further down) is false. If you enable the cache please note that\n// this directory MUST be readable and writable for the process running PHP.\n// Must end with '/'\n//\n// TTF_DIR:\n// Directory where TTF fonts can be found. Must end with '/'\n//\n// The default values used if these defines are left commented out are:\n//\n// UNIX:\n//   CACHE_DIR /tmp/jpgraph_cache/\n//   TTF_DIR   /usr/share/fonts/truetype/\n//   MBTTF_DIR /usr/share/fonts/truetype/\n//\n// WINDOWS:\n//   CACHE_DIR $SERVER_TEMP/jpgraph_cache/\n//   TTF_DIR   $SERVER_SYSTEMROOT/fonts/\n//   MBTTF_DIR $SERVER_SYSTEMROOT/fonts/\n//\n//------------------------------------------------------------------------\n// define('CACHE_DIR','/tmp/jpgraph_cache/');\n// define('TTF_DIR','/usr/share/fonts/TrueType/');\n// define('MBTTF_DIR','/usr/share/fonts/TrueType/');\n\n//-------------------------------------------------------------------------\n// Cache directory specification for use with CSIM graphs that are\n// using the cache.\n// The directory must be the filesysystem name as seen by PHP\n// and the 'http' version must be the same directory but as\n// seen by the HTTP server relative to the 'htdocs' ddirectory.\n// If a relative path is specified it is taken to be relative from where\n// the image script is executed.\n// Note: The default setting is to create a subdirectory in the\n// directory from where the image script is executed and store all files\n// there. As ususal this directory must be writeable by the PHP process.\ndefine('CSIMCACHE_DIR','csimcache/');\ndefine('CSIMCACHE_HTTP_DIR','csimcache/');\n\n//------------------------------------------------------------------------\n// Various JpGraph Settings. Adjust accordingly to your\n// preferences. Note that cache functionality is turned off by\n// default (Enable by setting USE_CACHE to true)\n//------------------------------------------------------------------------\n\n// Deafult locale for error messages.\n// This defaults to English = 'en'\ndefine('DEFAULT_ERR_LOCALE','en');\n\n// Deafult graphic format set to 'auto' which will automatically\n// choose the best available format in the order png,gif,jpeg\n// (The supported format depends on what your PHP installation supports)\ndefine('DEFAULT_GFORMAT','auto');\n\n// Should the cache be used at all? By setting this to false no\n// files will be generated in the cache directory.\n// The difference from READ_CACHE being that setting READ_CACHE to\n// false will still create the image in the cache directory\n// just not use it. By setting USE_CACHE=false no files will even\n// be generated in the cache directory.\ndefine('USE_CACHE',false);\n\n// Should we try to find an image in the cache before generating it?\n// Set this define to false to bypass the reading of the cache and always\n// regenerate the image. Note that even if reading the cache is\n// disabled the cached will still be updated with the newly generated\n// image. Set also 'USE_CACHE' below.\ndefine('READ_CACHE',true);\n\n// Determine if the error handler should be image based or purely\n// text based. Image based makes it easier since the script will\n// always return an image even in case of errors.\ndefine('USE_IMAGE_ERROR_HANDLER',true);\n\n// Should the library examine the global php_errmsg string and convert\n// any error in it to a graphical representation. This is handy for the\n// occasions when, for example, header files cannot be found and this results\n// in the graph not being created and just a 'red-cross' image would be seen.\n// This should be turned off for a production site.\ndefine('CATCH_PHPERRMSG',true);\n\n// Determine if the library should also setup the default PHP\n// error handler to generate a graphic error mesage. This is useful\n// during development to be able to see the error message as an image\n// instead as a 'red-cross' in a page where an image is expected.\ndefine('INSTALL_PHP_ERR_HANDLER',false);\n\n// Should usage of deprecated functions and parameters give a fatal error?\n// (Useful to check if code is future proof.)\ndefine('ERR_DEPRECATED',true);\n\n// The builtin GD function imagettfbbox() fuction which calculates the bounding box for\n// text using TTF fonts is buggy. By setting this define to true the library\n// uses its own compensation for this bug. However this will give a\n// slightly different visual apparance than not using this compensation.\n// Enabling this compensation will in general give text a bit more space to more\n// truly reflect the actual bounding box which is a bit larger than what the\n// GD function thinks.\ndefine('USE_LIBRARY_IMAGETTFBBOX',true);\n\n//------------------------------------------------------------------------\n// The following constants should rarely have to be changed !\n//------------------------------------------------------------------------\n\n// What group should the cached file belong to\n// (Set to '' will give the default group for the 'PHP-user')\n// Please note that the Apache user must be a member of the\n// specified group since otherwise it is impossible for Apache\n// to set the specified group.\ndefine('CACHE_FILE_GROUP','www');\n\n// What permissions should the cached file have\n// (Set to '' will give the default persmissions for the 'PHP-user')\ndefine('CACHE_FILE_MOD',0664);\n\n// Default theme class name\ndefine('DEFAULT_THEME_CLASS', 'UniversalTheme');\n\ndefine('SUPERSAMPLING', true);\ndefine('SUPERSAMPLING_SCALE', 1);\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph.php",
    "content": "<?php\n//=======================================================================\n// File:        JPGRAPH.PHP\n// Description: PHP Graph Plotting library. Base module.\n// Created:     2001-01-08\n// Ver:         $Id: jpgraph.php 1924 2010-01-11 14:03:26Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\nrequire_once('jpg-config.inc.php');\nrequire_once('jpgraph_gradient.php');\nrequire_once('jpgraph_errhandler.inc.php');\nrequire_once('jpgraph_ttf.inc.php');\nrequire_once('jpgraph_rgb.inc.php');\nrequire_once('jpgraph_text.inc.php');\nrequire_once('jpgraph_legend.inc.php');\nrequire_once('jpgraph_theme.inc.php');\nrequire_once('gd_image.inc.php');\n\n// Version info\ndefine('JPG_VERSION','4.4.2');\n\n// Minimum required PHP version\ndefine('MIN_PHPVERSION','5.1.0');\n\n// Special file name to indicate that we only want to calc\n// the image map in the call to Graph::Stroke() used\n// internally from the GetHTMLCSIM() method.\ndefine('_CSIM_SPECIALFILE','_csim_special_');\n\n// HTTP GET argument that is used with image map\n// to indicate to the script to just generate the image\n// and not the full CSIM HTML page.\ndefine('_CSIM_DISPLAY','_jpg_csimd');\n\n// Special filename for Graph::Stroke(). If this filename is given\n// then the image will NOT be streamed to browser of file. Instead the\n// Stroke call will return the handler for the created GD image.\ndefine('_IMG_HANDLER','__handle');\n\n// Special filename for Graph::Stroke(). If this filename is given\n// the image will be stroked to a file with a name based on the script name.\ndefine('_IMG_AUTO','auto');\n\n// Tick density\ndefine(\"TICKD_DENSE\",1);\ndefine(\"TICKD_NORMAL\",2);\ndefine(\"TICKD_SPARSE\",3);\ndefine(\"TICKD_VERYSPARSE\",4);\n\n// Side for ticks and labels.\ndefine(\"SIDE_LEFT\",-1);\ndefine(\"SIDE_RIGHT\",1);\ndefine(\"SIDE_DOWN\",-1);\ndefine(\"SIDE_BOTTOM\",-1);\ndefine(\"SIDE_UP\",1);\ndefine(\"SIDE_TOP\",1);\n\n// Legend type stacked vertical or horizontal\ndefine(\"LEGEND_VERT\",0);\ndefine(\"LEGEND_HOR\",1);\n\n// Mark types for plot marks\ndefine(\"MARK_SQUARE\",1);\ndefine(\"MARK_UTRIANGLE\",2);\ndefine(\"MARK_DTRIANGLE\",3);\ndefine(\"MARK_DIAMOND\",4);\ndefine(\"MARK_CIRCLE\",5);\ndefine(\"MARK_FILLEDCIRCLE\",6);\ndefine(\"MARK_CROSS\",7);\ndefine(\"MARK_STAR\",8);\ndefine(\"MARK_X\",9);\ndefine(\"MARK_LEFTTRIANGLE\",10);\ndefine(\"MARK_RIGHTTRIANGLE\",11);\ndefine(\"MARK_FLASH\",12);\ndefine(\"MARK_IMG\",13);\ndefine(\"MARK_FLAG1\",14);\ndefine(\"MARK_FLAG2\",15);\ndefine(\"MARK_FLAG3\",16);\ndefine(\"MARK_FLAG4\",17);\n\n// Builtin images\ndefine(\"MARK_IMG_PUSHPIN\",50);\ndefine(\"MARK_IMG_SPUSHPIN\",50);\ndefine(\"MARK_IMG_LPUSHPIN\",51);\ndefine(\"MARK_IMG_DIAMOND\",52);\ndefine(\"MARK_IMG_SQUARE\",53);\ndefine(\"MARK_IMG_STAR\",54);\ndefine(\"MARK_IMG_BALL\",55);\ndefine(\"MARK_IMG_SBALL\",55);\ndefine(\"MARK_IMG_MBALL\",56);\ndefine(\"MARK_IMG_LBALL\",57);\ndefine(\"MARK_IMG_BEVEL\",58);\n\n// Inline defines\ndefine(\"INLINE_YES\",1);\ndefine(\"INLINE_NO\",0);\n\n// Format for background images\ndefine(\"BGIMG_FILLPLOT\",1);\ndefine(\"BGIMG_FILLFRAME\",2);\ndefine(\"BGIMG_COPY\",3);\ndefine(\"BGIMG_CENTER\",4);\ndefine(\"BGIMG_FREE\",5);\n\n// Depth of objects\ndefine(\"DEPTH_BACK\",0);\ndefine(\"DEPTH_FRONT\",1);\n\n// Direction\ndefine(\"VERTICAL\",1);\ndefine(\"HORIZONTAL\",0);\n\n// Axis styles for scientific style axis\ndefine('AXSTYLE_SIMPLE',1);\ndefine('AXSTYLE_BOXIN',2);\ndefine('AXSTYLE_BOXOUT',3);\ndefine('AXSTYLE_YBOXIN',4);\ndefine('AXSTYLE_YBOXOUT',5);\n\n// Style for title backgrounds\ndefine('TITLEBKG_STYLE1',1);\ndefine('TITLEBKG_STYLE2',2);\ndefine('TITLEBKG_STYLE3',3);\ndefine('TITLEBKG_FRAME_NONE',0);\ndefine('TITLEBKG_FRAME_FULL',1);\ndefine('TITLEBKG_FRAME_BOTTOM',2);\ndefine('TITLEBKG_FRAME_BEVEL',3);\ndefine('TITLEBKG_FILLSTYLE_HSTRIPED',1);\ndefine('TITLEBKG_FILLSTYLE_VSTRIPED',2);\ndefine('TITLEBKG_FILLSTYLE_SOLID',3);\n\n// Styles for axis labels background\ndefine('LABELBKG_NONE',0);\ndefine('LABELBKG_XAXIS',1);\ndefine('LABELBKG_YAXIS',2);\ndefine('LABELBKG_XAXISFULL',3);\ndefine('LABELBKG_YAXISFULL',4);\ndefine('LABELBKG_XYFULL',5);\ndefine('LABELBKG_XY',6);\n\n\n// Style for background gradient fills\ndefine('BGRAD_FRAME',1);\ndefine('BGRAD_MARGIN',2);\ndefine('BGRAD_PLOT',3);\n\n// Width of tab titles\ndefine('TABTITLE_WIDTHFIT',0);\ndefine('TABTITLE_WIDTHFULL',-1);\n\n// Defines for 3D skew directions\ndefine('SKEW3D_UP',0);\ndefine('SKEW3D_DOWN',1);\ndefine('SKEW3D_LEFT',2);\ndefine('SKEW3D_RIGHT',3);\n\n// For internal use only\ndefine(\"_JPG_DEBUG\",false);\ndefine(\"_FORCE_IMGTOFILE\",false);\ndefine(\"_FORCE_IMGDIR\",'/tmp/jpgimg/');\n\n//MiToTeam: better Windows OS detection under Cygwin (PHP_OS_FAMILY constant supported only in PHP 7.2+)\ndefine(\n  \"JPG_IS_WINDOWS\",\n  defined(\"PHP_OS_FAMILY\") ? PHP_OS_FAMILY === 'Windows' : strstr(PHP_OS, 'WIN')\n);\n\n//\n// Automatic settings of path for cache and font directory\n// if they have not been previously specified\n//\nif(USE_CACHE) {\n    if (!defined('CACHE_DIR')) {\n        if (JPG_IS_WINDOWS) { //MiToTeam: better Windows OS detection under Cygwin\n            if( empty($_SERVER['TEMP']) ) {\n                $t = new ErrMsgText();\n                $msg = $t->Get(11,$file,$lineno);\n                die($msg);\n            }\n            else {\n                define('CACHE_DIR', $_SERVER['TEMP'] . '/');\n            }\n        } else {\n            define('CACHE_DIR','/tmp/jpgraph_cache/');\n        }\n    }\n}\nelseif( !defined('CACHE_DIR') ) {\n    define('CACHE_DIR', '');\n}\n\n//\n// Setup path for western/latin TTF fonts\n//\nif (!defined('TTF_DIR')) {\n    if (JPG_IS_WINDOWS) { //MiToTeam: better Windows OS detection under Cygwin\n        $sroot = getenv('SystemRoot');\n        if( empty($sroot) ) {\n            $t = new ErrMsgText();\n            $msg = $t->Get(12,$file,$lineno);\n            die($msg);\n        }\n        else {\n            define('TTF_DIR', $sroot.'/fonts/');\n        }\n    } else {\n        define('TTF_DIR','/usr/share/fonts/truetype/');\n    }\n}\n\n//\n// Setup path for MultiByte TTF fonts (japanese, chinese etc.)\n//\nif (!defined('MBTTF_DIR')) {\n    if (JPG_IS_WINDOWS) { //MiToTeam: better Windows OS detection under Cygwin\n        $sroot = getenv('SystemRoot');\n        if( empty($sroot) ) {\n            $t = new ErrMsgText();\n            $msg = $t->Get(12,$file,$lineno);\n            die($msg);\n        }\n        else {\n            define('MBTTF_DIR', $sroot.'/fonts/');\n        }\n    } else {\n        define('MBTTF_DIR','/usr/share/fonts/truetype/');\n    }\n}\n\n//\n// Check minimum PHP version\n//\nfunction CheckPHPVersion($aMinVersion) {\n    list($majorC, $minorC, $editC) = preg_split('/[\\/.-]/', PHP_VERSION);\n    list($majorR, $minorR, $editR) = preg_split('/[\\/.-]/', $aMinVersion);\n\n    if ($majorC < $majorR) return false;\n\n    if ($majorC == $majorR) {\n        if($minorC < $minorR) return false;\n\n        if($minorC == $minorR){\n            if($editC < $editR) return false;\n        }\n    }\n\n    return true;\n}\n\n//\n// Make sure PHP version is high enough\n//\nif( !CheckPHPVersion(MIN_PHPVERSION) ) {\n    JpGraphError::RaiseL(13,PHP_VERSION,MIN_PHPVERSION);\n    die();\n}\n\n//\n// Make GD sanity check\n//\nif( !function_exists(\"imagetypes\") || !function_exists('imagecreatefromstring') ) {\n    JpGraphError::RaiseL(25001);\n    //(\"This PHP installation is not configured with the GD library. Please recompile PHP with GD support to run JpGraph. (Neither function imagetypes() nor imagecreatefromstring() does exist)\");\n}\n\n//\n// Setup PHP error handler\n//\nfunction _phpErrorHandler($errno,$errmsg,$filename, $linenum, $vars) {\n    // Respect current error level\n    if( $errno & error_reporting() ) {\n        JpGraphError::RaiseL(25003,basename($filename),$linenum,$errmsg);\n    }\n}\n\nif( INSTALL_PHP_ERR_HANDLER ) {\n    set_error_handler(\"_phpErrorHandler\");\n}\n\n//\n// Check if there were any warnings, perhaps some wrong includes by the user. In this\n// case we raise it immediately since otherwise the image will not show and makes\n// debugging difficult. This is controlled by the user setting CATCH_PHPERRMSG\n//\nif( isset($GLOBALS['php_errormsg']) && CATCH_PHPERRMSG && !preg_match('/|Deprecated|/i', $GLOBALS['php_errormsg']) ) {\n    JpGraphError::RaiseL(25004,$GLOBALS['php_errormsg']);\n}\n\n// Useful mathematical function\nfunction sign($a) {return $a >= 0 ? 1 : -1;}\n\n//\n// Utility function to generate an image name based on the filename we\n// are running from and assuming we use auto detection of graphic format\n// (top level), i.e it is safe to call this function\n// from a script that uses JpGraph\n//\nfunction GenImgName() {\n    // Determine what format we should use when we save the images\n    $supported = imagetypes();\n    if( $supported & IMG_PNG )    $img_format=\"png\";\n    elseif( $supported & IMG_GIF ) $img_format=\"gif\";\n    elseif( $supported & IMG_JPG ) $img_format=\"jpeg\";\n    elseif( $supported & IMG_WBMP ) $img_format=\"wbmp\";\n    elseif( $supported & IMG_XPM ) $img_format=\"xpm\";\n\n\n    if( !isset($_SERVER['PHP_SELF']) ) {\n        JpGraphError::RaiseL(25005);\n        //(\" Can't access PHP_SELF, PHP global variable. You can't run PHP from command line if you want to use the 'auto' naming of cache or image files.\");\n    }\n    $fname = basename($_SERVER['PHP_SELF']);\n    if( !empty($_SERVER['QUERY_STRING']) ) {\n        $q = @$_SERVER['QUERY_STRING'];\n        $fname .= '_'.preg_replace(\"/\\W/\", \"_\", $q).'.'.$img_format;\n    }\n    else {\n        $fname = substr($fname,0,strlen($fname)-4).'.'.$img_format;\n    }\n    return $fname;\n}\n\n//===================================================\n// CLASS JpgTimer\n// Description: General timing utility class to handle\n// time measurement of generating graphs. Multiple\n// timers can be started.\n//===================================================\nclass JpgTimer {\n    private $start, $idx;\n\n    function __construct() {\n        $this->idx=0;\n    }\n\n    // Push a new timer start on stack\n    function Push() {\n        list($ms,$s)=explode(\" \",microtime());\n        $this->start[$this->idx++]=floor($ms*1000) + 1000*$s;\n    }\n\n    // Pop the latest timer start and return the diff with the\n    // current time\n    function Pop() {\n        assert($this->idx>0);\n        list($ms,$s)=explode(\" \",microtime());\n        $etime=floor($ms*1000) + (1000*$s);\n        $this->idx--;\n        return $etime-$this->start[$this->idx];\n    }\n} // Class\n\n//===================================================\n// CLASS DateLocale\n// Description: Hold localized text used in dates\n//===================================================\nclass DateLocale {\n\n    public $iLocale = 'C'; // environmental locale be used by default\n    private $iDayAbb = null, $iShortDay = null, $iShortMonth = null, $iMonthName = null;\n\n    function __construct() {\n        settype($this->iDayAbb, 'array');\n        settype($this->iShortDay, 'array');\n        settype($this->iShortMonth, 'array');\n        settype($this->iMonthName, 'array');\n        $this->Set('C');\n    }\n\n    function Set($aLocale) {\n        if ( in_array($aLocale, array_keys($this->iDayAbb)) ){\n            $this->iLocale = $aLocale;\n            return TRUE;  // already cached nothing else to do!\n        }\n\n        $pLocale = setlocale(LC_TIME, 0); // get current locale for LC_TIME\n\n        if (is_array($aLocale)) {\n            foreach ($aLocale as $loc) {\n                $res = @setlocale(LC_TIME, $loc);\n                if ( $res ) {\n                    $aLocale = $loc;\n                    break;\n                }\n            }\n        }\n        else {\n            $res = @setlocale(LC_TIME, $aLocale);\n        }\n\n        if ( ! $res ) {\n            JpGraphError::RaiseL(25007,$aLocale);\n            //(\"You are trying to use the locale ($aLocale) which your PHP installation does not support. Hint: Use '' to indicate the default locale for this geographic region.\");\n            return FALSE;\n        }\n\n        $this->iLocale = $aLocale;\n        for( $i = 0, $ofs = 0 - date('w'); $i < 7; $i++, $ofs++ ) {\n            $day = date('D', strtotime(\"$ofs day\"));\n            $day[0] = strtoupper($day[0]);\n            $this->iDayAbb[$aLocale][]= $day[0];\n            $this->iShortDay[$aLocale][]= $day;\n        }\n\n        for($i=1; $i<=12; ++$i) {\n            list($short ,$full) = explode('|', date(\"M|F\",strtotime(\"2001-$i-01\")));\n            $this->iShortMonth[$aLocale][] = ucfirst($short);\n            $this->iMonthName [$aLocale][] = ucfirst($full);\n        }\n\n        setlocale(LC_TIME, $pLocale);\n\n        return TRUE;\n    }\n\n\n    function GetDayAbb() {\n        return $this->iDayAbb[$this->iLocale];\n    }\n\n    function GetShortDay() {\n        return $this->iShortDay[$this->iLocale];\n    }\n\n    function GetShortMonth() {\n        return $this->iShortMonth[$this->iLocale];\n    }\n\n    function GetShortMonthName($aNbr) {\n        return $this->iShortMonth[$this->iLocale][$aNbr];\n    }\n\n    function GetLongMonthName($aNbr) {\n        return $this->iMonthName[$this->iLocale][$aNbr];\n    }\n\n    function GetMonth() {\n        return $this->iMonthName[$this->iLocale];\n    }\n}\n\n// Global object handlers\n$gDateLocale = new DateLocale();\n$gJpgDateLocale = new DateLocale();\n\n//=======================================================\n// CLASS Footer\n// Description: Encapsulates the footer line in the Graph\n//=======================================================\nclass Footer {\n    public $iLeftMargin = 3, $iRightMargin = 3, $iBottomMargin = 3 ;\n    public $left,$center,$right;\n    private $iTimer=null, $itimerpoststring='';\n\n    function __construct() {\n        $this->left = new Text();\n        $this->left->ParagraphAlign('left');\n        $this->center = new Text();\n        $this->center->ParagraphAlign('center');\n        $this->right = new Text();\n        $this->right->ParagraphAlign('right');\n    }\n\n    function SetTimer($aTimer,$aTimerPostString='') {\n        $this->iTimer = $aTimer;\n        $this->itimerpoststring = $aTimerPostString;\n    }\n\n    function SetMargin($aLeft=3,$aRight=3,$aBottom=3) {\n        $this->iLeftMargin = $aLeft;\n        $this->iRightMargin = $aRight;\n        $this->iBottomMargin = $aBottom;\n    }\n\n    function Stroke($aImg) {\n        $y = $aImg->height - $this->iBottomMargin;\n        $x = $this->iLeftMargin;\n        $this->left->Align('left','bottom');\n        $this->left->Stroke($aImg,$x,$y);\n\n        $x = ($aImg->width - $this->iLeftMargin - $this->iRightMargin)/2;\n        $this->center->Align('center','bottom');\n        $this->center->Stroke($aImg,$x,$y);\n\n        $x = $aImg->width - $this->iRightMargin;\n        $this->right->Align('right','bottom');\n        if( $this->iTimer != null ) {\n            $this->right->Set( $this->right->t . sprintf('%.3f',$this->iTimer->Pop()/1000.0) . $this->itimerpoststring );\n        }\n        $this->right->Stroke($aImg,$x,$y);\n    }\n}\n\n\n//===================================================\n// CLASS Graph\n// Description: Main class to handle graphs\n//===================================================\nclass Graph {\n    public $cache=null;   // Cache object (singleton)\n    public $img=null;   // Img object (singleton)\n    public $plots=array();  // Array of all plot object in the graph (for Y 1 axis)\n    public $y2plots=array();  // Array of all plot object in the graph (for Y 2 axis)\n    public $ynplots=array();\n    public $xscale=null;  // X Scale object (could be instance of LinearScale or LogScale\n    public $yscale=null,$y2scale=null, $ynscale=array();\n    public $iIcons = array();  // Array of Icons to add to\n    public $cache_name;   // File name to be used for the current graph in the cache directory\n    public $xgrid=null;   // X Grid object (linear or logarithmic)\n    public $ygrid=null,$y2grid=null; //dito for Y\n    public $doframe,$frame_color, $frame_weight; // Frame around graph\n    public $boxed=false, $box_color='black', $box_weight=1;  // Box around plot area\n    public $doshadow=false,$shadow_width=4,$shadow_color='gray@0.5'; // Shadow for graph\n    public $xaxis=null;   // X-axis (instane of Axis class)\n    public $yaxis=null, $y2axis=null, $ynaxis=array(); // Y axis (instance of Axis class)\n    public $margin_color; // Margin color of graph\n    public $plotarea_color=array(255,255,255); // Plot area color\n    public $title,$subtitle,$subsubtitle;  // Title and subtitle(s) text object\n    public $axtype=\"linlin\";  // Type of axis\n    public $xtick_factor,$ytick_factor; // Factor to determine the maximum number of ticks depending on the plot width\n    public $texts=null, $y2texts=null; // Text object to ge shown in the graph\n    public $lines=null, $y2lines=null;\n    public $bands=null, $y2bands=null;\n    public $text_scale_off=0, $text_scale_abscenteroff=-1; // Text scale in fractions and for centering bars\n    public $background_image='',$background_image_type=-1,$background_image_format=\"png\";\n    public $background_image_bright=0,$background_image_contr=0,$background_image_sat=0;\n    public $background_image_xpos=0,$background_image_ypos=0;\n    public $image_bright=0, $image_contr=0, $image_sat=0;\n    public $inline;\n    public $showcsim=0,$csimcolor=\"red\";//debug stuff, draw the csim boundaris on the image if <>0\n    public $grid_depth=DEPTH_BACK; // Draw grid under all plots as default\n    public $iAxisStyle = AXSTYLE_SIMPLE;\n    public $iCSIMdisplay=false,$iHasStroked = false;\n    public $footer;\n    public $csimcachename = '', $csimcachetimeout = 0, $iCSIMImgAlt='';\n    public $iDoClipping = false;\n    public $y2orderback=true;\n    public $tabtitle;\n    public $bkg_gradtype=-1,$bkg_gradstyle=BGRAD_MARGIN;\n    public $bkg_gradfrom='navy', $bkg_gradto='silver';\n    public $plot_gradtype=-1,$plot_gradstyle=BGRAD_MARGIN;\n    public $plot_gradfrom='silver', $plot_gradto='navy';\n\n    public $titlebackground = false;\n    public $titlebackground_color = 'lightblue',\n           $titlebackground_style = 1,\n           $titlebackground_framecolor,\n           $titlebackground_framestyle,\n           $titlebackground_frameweight,\n           $titlebackground_bevelheight;\n    public $titlebkg_fillstyle=TITLEBKG_FILLSTYLE_SOLID;\n    public $titlebkg_scolor1='black',$titlebkg_scolor2='white';\n    public $framebevel, $framebeveldepth;\n    public $framebevelborder, $framebevelbordercolor;\n    public $framebevelcolor1, $framebevelcolor2;\n    public $background_image_mix=100;\n    public $background_cflag = '';\n    public $background_cflag_type = BGIMG_FILLPLOT;\n    public $background_cflag_mix = 100;\n    public $iImgTrans=false,\n           $iImgTransHorizon = 100,$iImgTransSkewDist=150,\n           $iImgTransDirection = 1, $iImgTransMinSize = true,\n           $iImgTransFillColor='white',$iImgTransHighQ=false,\n           $iImgTransBorder=false,$iImgTransHorizonPos=0.5;\n    public $legend;\n    public $graph_theme;\n    protected $iYAxisDeltaPos=50;\n    protected $iIconDepth=DEPTH_BACK;\n    protected $iAxisLblBgType = 0,\n              $iXAxisLblBgFillColor = 'lightgray', $iXAxisLblBgColor = 'black',\n              $iYAxisLblBgFillColor = 'lightgray', $iYAxisLblBgColor = 'black';\n    protected $iTables=NULL;\n\n    protected $isRunningClear = false;\n    protected $inputValues;\n    protected $isAfterSetScale = false;\n\n    // aWIdth   Width in pixels of image\n    // aHeight   Height in pixels of image\n    // aCachedName Name for image file in cache directory\n    // aTimeOut  Timeout in minutes for image in cache\n    // aInline  If true the image is streamed back in the call to Stroke()\n    //   If false the image is just created in the cache\n    function __construct($aWidth=300,$aHeight=200,$aCachedName='',$aTimeout=0,$aInline=true) {\n\n        if( !is_numeric($aWidth) || !is_numeric($aHeight) ) {\n            JpGraphError::RaiseL(25008);//('Image width/height argument in Graph::Graph() must be numeric');\n        }\n\n        // Initialize frame and margin\n        $this->InitializeFrameAndMargin();\n\n        // Automatically generate the image file name based on the name of the script that\n        // generates the graph\n        if( $aCachedName == 'auto' ) {\n            $aCachedName=GenImgName();\n        }\n\n        // Should the image be streamed back to the browser or only to the cache?\n        $this->inline=$aInline;\n\n        $this->img = new RotImage($aWidth,$aHeight);\n        $this->cache  = new ImgStreamCache();\n\n        // Window doesn't like '?' in the file name so replace it with an '_'\n        $aCachedName = str_replace(\"?\",\"_\",$aCachedName);\n        $this->SetupCache($aCachedName, $aTimeout);\n\n        $this->title = new Text();\n        $this->title->ParagraphAlign('center');\n        $this->title->SetFont(FF_DEFAULT,FS_NORMAL); //FF_FONT2, FS_BOLD\n        $this->title->SetMargin(5);\n        $this->title->SetAlign('center');\n\n        $this->subtitle = new Text();\n        $this->subtitle->ParagraphAlign('center');\n        $this->subtitle->SetMargin(3);\n        $this->subtitle->SetAlign('center');\n\n        $this->subsubtitle = new Text();\n        $this->subsubtitle->ParagraphAlign('center');\n        $this->subsubtitle->SetMargin(3);\n        $this->subsubtitle->SetAlign('center');\n\n        $this->legend = new Legend();\n        $this->footer = new Footer();\n\n        // If the cached version exist just read it directly from the\n        // cache, stream it back to browser and exit\n        if( $aCachedName!='' && READ_CACHE && $aInline ) {\n            if( $this->cache->GetAndStream($this->img,$aCachedName) ) {\n                exit();\n            }\n        }\n\n        $this->SetTickDensity(); // Normal density\n\n        $this->tabtitle = new GraphTabTitle();\n\n        if (!$this->isRunningClear) {\n            $this->inputValues = array();\n            $this->inputValues['aWidth'] = $aWidth;\n            $this->inputValues['aHeight'] = $aHeight;\n            $this->inputValues['aCachedName'] = $aCachedName;\n            $this->inputValues['aTimeout'] = $aTimeout;\n            $this->inputValues['aInline'] = $aInline;\n\n            $theme_class = DEFAULT_THEME_CLASS;\n            if (class_exists($theme_class)) {\n                $this->graph_theme = new $theme_class();\n            }\n        }\n    }\n\n    function InitializeFrameAndMargin() {\n        $this->doframe=true;\n        $this->frame_color='black';\n        $this->frame_weight=1;\n\n        $this->titlebackground_framecolor = 'blue';\n        $this->titlebackground_framestyle = 2;\n        $this->titlebackground_frameweight = 1;\n        $this->titlebackground_bevelheight = 3;\n        $this->titlebkg_fillstyle=TITLEBKG_FILLSTYLE_SOLID;\n        $this->titlebkg_scolor1='black';\n        $this->titlebkg_scolor2='white';\n        $this->framebevel = false;\n        $this->framebeveldepth = 2;\n        $this->framebevelborder = false;\n        $this->framebevelbordercolor='black';\n        $this->framebevelcolor1='white@0.4';\n        $this->framebevelcolor2='black@0.4';\n\n        $this->margin_color = array(250,250,250);\n    }\n\n    function SetupCache($aFilename,$aTimeout=60) {\n        $this->cache_name = $aFilename;\n        $this->cache->SetTimeOut($aTimeout);\n    }\n\n    // Enable final image perspective transformation\n    function Set3DPerspective($aDir=1,$aHorizon=100,$aSkewDist=120,$aQuality=false,$aFillColor='#FFFFFF',$aBorder=false,$aMinSize=true,$aHorizonPos=0.5) {\n        $this->iImgTrans = true;\n        $this->iImgTransHorizon = $aHorizon;\n        $this->iImgTransSkewDist= $aSkewDist;\n        $this->iImgTransDirection = $aDir;\n        $this->iImgTransMinSize = $aMinSize;\n        $this->iImgTransFillColor=$aFillColor;\n        $this->iImgTransHighQ=$aQuality;\n        $this->iImgTransBorder=$aBorder;\n        $this->iImgTransHorizonPos=$aHorizonPos;\n    }\n\n    function SetUserFont($aNormal,$aBold='',$aItalic='',$aBoldIt='') {\n        $this->img->ttf->SetUserFont($aNormal,$aBold,$aItalic,$aBoldIt);\n    }\n\n    function SetUserFont1($aNormal,$aBold='',$aItalic='',$aBoldIt='') {\n        $this->img->ttf->SetUserFont1($aNormal,$aBold,$aItalic,$aBoldIt);\n    }\n\n    function SetUserFont2($aNormal,$aBold='',$aItalic='',$aBoldIt='') {\n        $this->img->ttf->SetUserFont2($aNormal,$aBold,$aItalic,$aBoldIt);\n    }\n\n    function SetUserFont3($aNormal,$aBold='',$aItalic='',$aBoldIt='') {\n        $this->img->ttf->SetUserFont3($aNormal,$aBold,$aItalic,$aBoldIt);\n    }\n\n    // Set Image format and optional quality\n    function SetImgFormat($aFormat,$aQuality=75) {\n        $this->img->SetImgFormat($aFormat,$aQuality);\n    }\n\n    // Should the grid be in front or back of the plot?\n    function SetGridDepth($aDepth) {\n        $this->grid_depth=$aDepth;\n    }\n\n    function SetIconDepth($aDepth) {\n        $this->iIconDepth=$aDepth;\n    }\n\n    // Specify graph angle 0-360 degrees.\n    function SetAngle($aAngle) {\n        $this->img->SetAngle($aAngle);\n    }\n\n    function SetAlphaBlending($aFlg=true) {\n        $this->img->SetAlphaBlending($aFlg);\n    }\n\n    // Shortcut to image margin\n    function SetMargin($lm,$rm,$tm,$bm) {\n        $this->img->SetMargin($lm,$rm,$tm,$bm);\n    }\n\n    function SetY2OrderBack($aBack=true) {\n        $this->y2orderback = $aBack;\n    }\n\n    // Rotate the graph 90 degrees and set the margin\n    // when we have done a 90 degree rotation\n    function Set90AndMargin($lm=0,$rm=0,$tm=0,$bm=0) {\n        $adj = ($this->img->height - $this->img->width)/2;\n        $this->img->SetMargin($tm-$adj,$bm-$adj,$rm+$adj,$lm+$adj);\n        $this->img->SetCenter(floor($this->img->width/2),floor($this->img->height/2));\n        $this->SetAngle(90);\n        if( empty($this->yaxis) || empty($this->xaxis) ) {\n            JpgraphError::RaiseL(25009);//('You must specify what scale to use with a call to Graph::SetScale()');\n        }\n        $this->xaxis->SetLabelAlign('right','center');\n        $this->yaxis->SetLabelAlign('center','bottom');\n    }\n\n    function SetClipping($aFlg=true) {\n        $this->iDoClipping = $aFlg ;\n    }\n\n    // Add a plot object to the graph\n    function Add($aPlot) {\n        if( $aPlot == null ) {\n            JpGraphError::RaiseL(25010);//(\"Graph::Add() You tried to add a null plot to the graph.\");\n        }\n        if( is_array($aPlot) && count($aPlot) > 0 ) {\n            $cl = $aPlot[0];\n        }\n        else {\n            $cl = $aPlot;\n        }\n\n        if( $cl instanceof Text ) $this->AddText($aPlot);\n        elseif( class_exists('PlotLine',false) && ($cl instanceof PlotLine) )  $this->AddLine($aPlot);\n        elseif( class_exists('PlotBand',false) && ($cl instanceof PlotBand) ) $this->AddBand($aPlot);\n        elseif( class_exists('IconPlot',false) && ($cl instanceof IconPlot) ) $this->AddIcon($aPlot);\n        elseif( class_exists('GTextTable',false) && ($cl instanceof GTextTable) ) $this->AddTable($aPlot);\n        else {\n            if( is_array($aPlot) ) {\n                $this->plots = array_merge($this->plots,$aPlot);\n            }\n            else {\n                $this->plots[] = $aPlot;\n            }\n        }\n\n        if ($this->graph_theme) {\n            $this->graph_theme->SetupPlot($aPlot);\n        }\n    }\n\n    function AddTable($aTable) {\n        if( is_array($aTable) ) {\n            for($i=0; $i < count($aTable); ++$i ) {\n                $this->iTables[]=$aTable[$i];\n            }\n        }\n        else {\n            $this->iTables[] = $aTable ;\n        }\n    }\n\n    function AddIcon($aIcon) {\n        if( is_array($aIcon) ) {\n            for($i=0; $i < count($aIcon); ++$i ) {\n                $this->iIcons[]=$aIcon[$i];\n            }\n        }\n        else {\n            $this->iIcons[] = $aIcon ;\n        }\n    }\n\n    // Add plot to second Y-scale\n    function AddY2($aPlot) {\n        if( $aPlot == null ) {\n            JpGraphError::RaiseL(25011);//(\"Graph::AddY2() You tried to add a null plot to the graph.\");\n        }\n\n        if( is_array($aPlot) && count($aPlot) > 0 ) {\n            $cl = $aPlot[0];\n        }\n        else {\n            $cl = $aPlot;\n        }\n\n        if( $cl instanceof Text ) {\n            $this->AddText($aPlot,true);\n        }\n        elseif( class_exists('PlotLine',false) && ($cl instanceof PlotLine) ) {\n            $this->AddLine($aPlot,true);\n        }\n        elseif( class_exists('PlotBand',false) && ($cl instanceof PlotBand) ) {\n            $this->AddBand($aPlot,true);\n        }\n        else {\n            $this->y2plots[] = $aPlot;\n        }\n\n        if ($this->graph_theme) {\n            $this->graph_theme->SetupPlot($aPlot);\n        }\n    }\n\n    // Add plot to the extra Y-axises\n    function AddY($aN,$aPlot) {\n\n        if( $aPlot == null ) {\n            JpGraphError::RaiseL(25012);//(\"Graph::AddYN() You tried to add a null plot to the graph.\");\n        }\n\n        if( is_array($aPlot) && count($aPlot) > 0 ) {\n            $cl = $aPlot[0];\n        }\n        else {\n            $cl = $aPlot;\n        }\n\n        if( ($cl instanceof Text) ||\n            (class_exists('PlotLine',false) && ($cl instanceof PlotLine)) ||\n            (class_exists('PlotBand',false) && ($cl instanceof PlotBand)) ) {\n            JpGraph::RaiseL(25013);//('You can only add standard plots to multiple Y-axis');\n        }\n        else {\n            $this->ynplots[$aN][] = $aPlot;\n        }\n\n        if ($this->graph_theme) {\n            $this->graph_theme->SetupPlot($aPlot);\n        }\n    }\n\n    // Add text object to the graph\n    function AddText($aTxt,$aToY2=false) {\n        if( $aTxt == null ) {\n            JpGraphError::RaiseL(25014);//(\"Graph::AddText() You tried to add a null text to the graph.\");\n        }\n        if( $aToY2 ) {\n            if( is_array($aTxt) ) {\n                for($i=0; $i < count($aTxt); ++$i ) {\n                    $this->y2texts[]=$aTxt[$i];\n                }\n            }\n            else {\n                $this->y2texts[] = $aTxt;\n            }\n        }\n        else {\n            if( is_array($aTxt) ) {\n                for($i=0; $i < count($aTxt); ++$i ) {\n                    $this->texts[]=$aTxt[$i];\n                }\n            }\n            else {\n                $this->texts[] = $aTxt;\n            }\n        }\n    }\n\n    // Add a line object (class PlotLine) to the graph\n    function AddLine($aLine,$aToY2=false) {\n        if( $aLine == null ) {\n            JpGraphError::RaiseL(25015);//(\"Graph::AddLine() You tried to add a null line to the graph.\");\n        }\n\n        if( $aToY2 ) {\n            if( is_array($aLine) ) {\n                for($i=0; $i < count($aLine); ++$i ) {\n                    //$this->y2lines[]=$aLine[$i];\n                    $this->y2plots[]=$aLine[$i];\n                }\n            }\n            else {\n                //$this->y2lines[] = $aLine;\n                $this->y2plots[]=$aLine;\n            }\n        }\n        else {\n            if( is_array($aLine) ) {\n                for($i=0; $i<count($aLine); ++$i ) {\n                    //$this->lines[]=$aLine[$i];\n                    $this->plots[]=$aLine[$i];\n                }\n            }\n            else {\n                //$this->lines[] = $aLine;\n                $this->plots[] = $aLine;\n            }\n        }\n    }\n\n    // Add vertical or horizontal band\n    function AddBand($aBand,$aToY2=false) {\n        if( $aBand == null ) {\n            JpGraphError::RaiseL(25016);//(\" Graph::AddBand() You tried to add a null band to the graph.\");\n        }\n\n        if( $aToY2 ) {\n            if( is_array($aBand) ) {\n                for($i=0; $i < count($aBand); ++$i ) {\n                    $this->y2bands[] = $aBand[$i];\n                }\n            }\n            else {\n                $this->y2bands[] = $aBand;\n            }\n        }\n        else {\n            if( is_array($aBand) ) {\n                for($i=0; $i < count($aBand); ++$i ) {\n                    $this->bands[] = $aBand[$i];\n                }\n            }\n            else {\n                $this->bands[] = $aBand;\n            }\n        }\n    }\n\n    function SetPlotGradient($aFrom='navy',$aTo='silver',$aGradType=2) {\n        $this->plot_gradtype=$aGradType;\n        $this->plot_gradfrom = $aFrom;\n        $this->plot_gradto = $aTo;\n    }\n\n    function SetBackgroundGradient($aFrom='navy',$aTo='silver',$aGradType=2,$aStyle=BGRAD_FRAME) {\n        $this->bkg_gradtype=$aGradType;\n        $this->bkg_gradstyle=$aStyle;\n        $this->bkg_gradfrom = $aFrom;\n        $this->bkg_gradto = $aTo;\n    }\n\n    // Set a country flag in the background\n    function SetBackgroundCFlag($aName,$aBgType=BGIMG_FILLPLOT,$aMix=100) {\n        $this->background_cflag = $aName;\n        $this->background_cflag_type = $aBgType;\n        $this->background_cflag_mix = $aMix;\n    }\n\n    // Alias for the above method\n    function SetBackgroundCountryFlag($aName,$aBgType=BGIMG_FILLPLOT,$aMix=100) {\n        $this->background_cflag = $aName;\n        $this->background_cflag_type = $aBgType;\n        $this->background_cflag_mix = $aMix;\n    }\n\n\n    // Specify a background image\n    function SetBackgroundImage($aFileName,$aBgType=BGIMG_FILLPLOT,$aImgFormat='auto') {\n\n        // Get extension to determine image type\n        if( $aImgFormat == 'auto' ) {\n            $e = explode('.',$aFileName);\n            if( !$e ) {\n                JpGraphError::RaiseL(25018,$aFileName);//('Incorrect file name for Graph::SetBackgroundImage() : '.$aFileName.' Must have a valid image extension (jpg,gif,png) when using autodetection of image type');\n            }\n\n            $valid_formats = array('png', 'jpg', 'gif');\n            $aImgFormat = strtolower($e[count($e)-1]);\n            if ($aImgFormat == 'jpeg')  {\n                $aImgFormat = 'jpg';\n            }\n            elseif (!in_array($aImgFormat, $valid_formats) )  {\n                JpGraphError::RaiseL(25019,$aImgFormat);//('Unknown file extension ($aImgFormat) in Graph::SetBackgroundImage() for filename: '.$aFileName);\n            }\n        }\n\n        $this->background_image = $aFileName;\n        $this->background_image_type=$aBgType;\n        $this->background_image_format=$aImgFormat;\n    }\n\n    function SetBackgroundImageMix($aMix) {\n        $this->background_image_mix = $aMix ;\n    }\n\n    // Adjust background image position\n    function SetBackgroundImagePos($aXpos,$aYpos) {\n        $this->background_image_xpos = $aXpos ;\n        $this->background_image_ypos = $aYpos ;\n    }\n\n    // Specify axis style (boxed or single)\n    function SetAxisStyle($aStyle) {\n        $this->iAxisStyle = $aStyle ;\n    }\n\n    // Set a frame around the plot area\n    function SetBox($aDrawPlotFrame=true,$aPlotFrameColor=array(0,0,0),$aPlotFrameWeight=1) {\n        $this->boxed = $aDrawPlotFrame;\n        $this->box_weight = $aPlotFrameWeight;\n        $this->box_color = $aPlotFrameColor;\n    }\n\n    // Specify color for the plotarea (not the margins)\n    function SetColor($aColor) {\n        $this->plotarea_color=$aColor;\n    }\n\n    // Specify color for the margins (all areas outside the plotarea)\n    function SetMarginColor($aColor) {\n        $this->margin_color=$aColor;\n    }\n\n    // Set a frame around the entire image\n    function SetFrame($aDrawImgFrame=true,$aImgFrameColor=array(0,0,0),$aImgFrameWeight=1) {\n        $this->doframe = $aDrawImgFrame;\n        $this->frame_color = $aImgFrameColor;\n        $this->frame_weight = $aImgFrameWeight;\n    }\n\n    function SetFrameBevel($aDepth=3,$aBorder=false,$aBorderColor='black',$aColor1='white@0.4',$aColor2='darkgray@0.4',$aFlg=true) {\n        $this->framebevel = $aFlg ;\n        $this->framebeveldepth = $aDepth ;\n        $this->framebevelborder = $aBorder ;\n        $this->framebevelbordercolor = $aBorderColor ;\n        $this->framebevelcolor1 = $aColor1 ;\n        $this->framebevelcolor2 = $aColor2 ;\n\n        $this->doshadow = false ;\n    }\n\n    // Set the shadow around the whole image\n    function SetShadow($aShowShadow=true,$aShadowWidth=5,$aShadowColor='darkgray') {\n        $this->doshadow = $aShowShadow;\n        $this->shadow_color = $aShadowColor;\n        $this->shadow_width = $aShadowWidth;\n        $this->footer->iBottomMargin += $aShadowWidth;\n        $this->footer->iRightMargin += $aShadowWidth;\n    }\n\n    // Specify x,y scale. Note that if you manually specify the scale\n    // you must also specify the tick distance with a call to Ticks::Set()\n    function SetScale($aAxisType,$aYMin=1,$aYMax=1,$aXMin=1,$aXMax=1) {\n        $this->axtype = $aAxisType;\n\n        if( $aYMax < $aYMin || $aXMax < $aXMin ) {\n            JpGraphError::RaiseL(25020);//('Graph::SetScale(): Specified Max value must be larger than the specified Min value.');\n        }\n\n        $yt=substr($aAxisType,-3,3);\n        if( $yt == 'lin' ) {\n            $this->yscale = new LinearScale($aYMin,$aYMax);\n        }\n        elseif( $yt == 'int' ) {\n            $this->yscale = new LinearScale($aYMin,$aYMax);\n            $this->yscale->SetIntScale();\n        }\n        elseif( $yt == 'log' ) {\n            $this->yscale = new LogScale($aYMin,$aYMax);\n        }\n        else {\n            JpGraphError::RaiseL(25021,$aAxisType);//(\"Unknown scale specification for Y-scale. ($aAxisType)\");\n        }\n\n        $xt=substr($aAxisType,0,3);\n        if( $xt == 'lin' || $xt == 'tex' ) {\n            $this->xscale = new LinearScale($aXMin,$aXMax,'x');\n            $this->xscale->textscale = ($xt == 'tex');\n        }\n        elseif( $xt == 'int' ) {\n            $this->xscale = new LinearScale($aXMin,$aXMax,'x');\n            $this->xscale->SetIntScale();\n        }\n        elseif( $xt == 'dat' ) {\n            $this->xscale = new DateScale($aXMin,$aXMax,'x');\n        }\n        elseif( $xt == 'log' ) {\n            $this->xscale = new LogScale($aXMin,$aXMax,'x');\n        }\n        else {\n            JpGraphError::RaiseL(25022,$aAxisType);//(\" Unknown scale specification for X-scale. ($aAxisType)\");\n        }\n\n        $this->xaxis = new Axis($this->img,$this->xscale);\n        $this->yaxis = new Axis($this->img,$this->yscale);\n        $this->xgrid = new Grid($this->xaxis);\n        $this->ygrid = new Grid($this->yaxis);\n        $this->ygrid->Show();\n\n\n        if (!$this->isRunningClear) {\n            $this->inputValues['aAxisType'] = $aAxisType;\n            $this->inputValues['aYMin'] = $aYMin;\n            $this->inputValues['aYMax'] = $aYMax;\n            $this->inputValues['aXMin'] = $aXMin;\n            $this->inputValues['aXMax'] = $aXMax;\n\n            if ($this->graph_theme) {\n                $this->graph_theme->ApplyGraph($this);\n            }\n        }\n\n        $this->isAfterSetScale = true;\n    }\n\n    // Specify secondary Y scale\n    function SetY2Scale($aAxisType='lin',$aY2Min=1,$aY2Max=1) {\n        if( $aAxisType == 'lin' ) {\n            $this->y2scale = new LinearScale($aY2Min,$aY2Max);\n        }\n        elseif( $aAxisType == 'int' ) {\n            $this->y2scale = new LinearScale($aY2Min,$aY2Max);\n            $this->y2scale->SetIntScale();\n        }\n        elseif( $aAxisType == 'log' ) {\n            $this->y2scale = new LogScale($aY2Min,$aY2Max);\n        }\n        else {\n            JpGraphError::RaiseL(25023,$aAxisType);//(\"JpGraph: Unsupported Y2 axis type: $aAxisType\\nMust be one of (lin,log,int)\");\n        }\n\n        $this->y2axis = new Axis($this->img,$this->y2scale);\n        $this->y2axis->scale->ticks->SetDirection(SIDE_LEFT);\n        $this->y2axis->SetLabelSide(SIDE_RIGHT);\n        $this->y2axis->SetPos('max');\n        $this->y2axis->SetTitleSide(SIDE_RIGHT);\n\n        // Deafult position is the max x-value\n        $this->y2grid = new Grid($this->y2axis);\n\n        if ($this->graph_theme) {\n          $this->graph_theme->ApplyGraph($this);\n        }\n    }\n\n    // Set the delta position (in pixels) between the multiple Y-axis\n    function SetYDeltaDist($aDist) {\n        $this->iYAxisDeltaPos = $aDist;\n    }\n\n    // Specify secondary Y scale\n    function SetYScale($aN,$aAxisType=\"lin\",$aYMin=1,$aYMax=1) {\n\n        if( $aAxisType == 'lin' ) {\n            $this->ynscale[$aN] = new LinearScale($aYMin,$aYMax);\n        }\n        elseif( $aAxisType == 'int' ) {\n            $this->ynscale[$aN] = new LinearScale($aYMin,$aYMax);\n            $this->ynscale[$aN]->SetIntScale();\n        }\n        elseif( $aAxisType == 'log' ) {\n            $this->ynscale[$aN] = new LogScale($aYMin,$aYMax);\n        }\n        else {\n            JpGraphError::RaiseL(25024,$aAxisType);//(\"JpGraph: Unsupported Y axis type: $aAxisType\\nMust be one of (lin,log,int)\");\n        }\n\n        $this->ynaxis[$aN] = new Axis($this->img,$this->ynscale[$aN]);\n        $this->ynaxis[$aN]->scale->ticks->SetDirection(SIDE_LEFT);\n        $this->ynaxis[$aN]->SetLabelSide(SIDE_RIGHT);\n\n        if ($this->graph_theme) {\n            $this->graph_theme->ApplyGraph($this);\n        }\n    }\n\n    // Specify density of ticks when autoscaling 'normal', 'dense', 'sparse', 'verysparse'\n    // The dividing factor have been determined heuristically according to my aesthetic\n    // sense (or lack off) y.m.m.v !\n    function SetTickDensity($aYDensity=TICKD_NORMAL,$aXDensity=TICKD_NORMAL) {\n        $this->xtick_factor=30;\n        $this->ytick_factor=25;\n        switch( $aYDensity ) {\n            case TICKD_DENSE:\n                $this->ytick_factor=12;\n                break;\n            case TICKD_NORMAL:\n                $this->ytick_factor=25;\n                break;\n            case TICKD_SPARSE:\n                $this->ytick_factor=40;\n                break;\n            case TICKD_VERYSPARSE:\n                $this->ytick_factor=100;\n                break;\n            default:\n                JpGraphError::RaiseL(25025,$densy);//(\"JpGraph: Unsupported Tick density: $densy\");\n        }\n        switch( $aXDensity ) {\n            case TICKD_DENSE:\n                $this->xtick_factor=15;\n                break;\n            case TICKD_NORMAL:\n                $this->xtick_factor=30;\n                break;\n            case TICKD_SPARSE:\n                $this->xtick_factor=45;\n                break;\n            case TICKD_VERYSPARSE:\n                $this->xtick_factor=60;\n                break;\n            default:\n                JpGraphError::RaiseL(25025,$densx);//(\"JpGraph: Unsupported Tick density: $densx\");\n        }\n    }\n\n\n    // Get a string of all image map areas\n    function GetCSIMareas() {\n        if( !$this->iHasStroked ) {\n            $this->Stroke(_CSIM_SPECIALFILE);\n        }\n\n        $csim = $this->title->GetCSIMAreas();\n        $csim .= $this->subtitle->GetCSIMAreas();\n        $csim .= $this->subsubtitle->GetCSIMAreas();\n        $csim .= $this->legend->GetCSIMAreas();\n\n        if( $this->y2axis != NULL ) {\n            $csim .= $this->y2axis->title->GetCSIMAreas();\n        }\n\n        if( $this->texts != null ) {\n            $n = count($this->texts);\n            for($i=0; $i < $n; ++$i ) {\n                $csim .= $this->texts[$i]->GetCSIMAreas();\n            }\n        }\n\n        if( $this->y2texts != null && $this->y2scale != null ) {\n            $n = count($this->y2texts);\n            for($i=0; $i < $n; ++$i ) {\n                $csim .= $this->y2texts[$i]->GetCSIMAreas();\n            }\n        }\n\n        if( $this->yaxis != null && $this->xaxis != null ) {\n            $csim .= $this->yaxis->title->GetCSIMAreas();\n            $csim .= $this->xaxis->title->GetCSIMAreas();\n        }\n\n        $n = count($this->plots);\n        for( $i=0; $i < $n; ++$i ) {\n            $csim .= $this->plots[$i]->GetCSIMareas();\n        }\n\n        $n = count($this->y2plots);\n        for( $i=0; $i < $n; ++$i ) {\n            $csim .= $this->y2plots[$i]->GetCSIMareas();\n        }\n\n        $n = count($this->ynaxis);\n        for( $i=0; $i < $n; ++$i ) {\n            $m = count($this->ynplots[$i]);\n            for($j=0; $j < $m; ++$j ) {\n                $csim .= $this->ynplots[$i][$j]->GetCSIMareas();\n            }\n        }\n\n        if($this->iTables != null) {\n            $n = count($this->iTables);\n            for ($i = 0; $i < $n; ++$i) {\n                $csim .= $this->iTables[$i]->GetCSIMareas();\n            }\n        }\n\n        return $csim;\n    }\n\n    // Get a complete <MAP>..</MAP> tag for the final image map\n    function GetHTMLImageMap($aMapName) {\n        $im = \"<map name=\\\"$aMapName\\\" id=\\\"$aMapName\\\" >\\n\";\n        $im .= $this->GetCSIMareas();\n        $im .= \"</map>\";\n        return $im;\n    }\n\n    function CheckCSIMCache($aCacheName,$aTimeOut=60) {\n        global $_SERVER;\n\n        if( $aCacheName=='auto' ) {\n            $aCacheName=basename($_SERVER['PHP_SELF']);\n        }\n\n        $urlarg = $this->GetURLArguments();\n        $this->csimcachename = CSIMCACHE_DIR.$aCacheName.$urlarg;\n        $this->csimcachetimeout = $aTimeOut;\n\n        // First determine if we need to check for a cached version\n        // This differs from the standard cache in the sense that the\n        // image and CSIM map HTML file is written relative to the directory\n        // the script executes in and not the specified cache directory.\n        // The reason for this is that the cache directory is not necessarily\n        // accessible from the HTTP server.\n        if( $this->csimcachename != '' ) {\n            $dir = dirname($this->csimcachename);\n            $base = basename($this->csimcachename);\n            $base = strtok($base,'.');\n            $suffix = strtok('.');\n            $basecsim = $dir.'/'.$base.'?'.$urlarg.'_csim_.html';\n            $baseimg = $dir.'/'.$base.'?'.$urlarg.'.'.$this->img->img_format;\n\n            $timedout=false;\n            // Does it exist at all ?\n\n            if( file_exists($basecsim) && file_exists($baseimg) ) {\n                // Check that it hasn't timed out\n                $diff=time()-filemtime($basecsim);\n                if( $this->csimcachetimeout>0 && ($diff > $this->csimcachetimeout*60) ) {\n                    $timedout=true;\n                    @unlink($basecsim);\n                    @unlink($baseimg);\n                }\n                else {\n                    if ($fh = @fopen($basecsim, \"r\")) {\n                        fpassthru($fh);\n                        return true;\n                    }\n                    else {\n                        JpGraphError::RaiseL(25027,$basecsim);//(\" Can't open cached CSIM \\\"$basecsim\\\" for reading.\");\n                    }\n                }\n            }\n        }\n        return false;\n    }\n\n    // Build the argument string to be used with the csim images\n    static function GetURLArguments($aAddRecursiveBlocker=false) {\n\n        if( $aAddRecursiveBlocker ) {\n            // This is a JPGRAPH internal defined that prevents\n            // us from recursively coming here again\n            $urlarg = _CSIM_DISPLAY.'=1';\n        }\n\n        // Now reconstruct any user URL argument\n        reset($_GET);\n        foreach ($_GET as $key => $value) {\n            if( is_array($value) ) {\n                foreach ( $value as $k => $v ) {\n                    $urlarg .= '&amp;'.$key.'%5B'.$k.'%5D='.urlencode($v);\n                }\n            }\n            else {\n                $urlarg .= '&amp;'.$key.'='.urlencode($value);\n            }\n        }\n\n        // It's not ideal to convert POST argument to GET arguments\n        // but there is little else we can do. One idea for the\n        // future might be recreate the POST header in case.\n        reset($_POST);\n        foreach ($_POST as $key => $value) {\n            if( is_array($value) ) {\n                foreach ( $value as $k => $v ) {\n                    $urlarg .= '&amp;'.$key.'%5B'.$k.'%5D='.urlencode($v);\n                }\n            }\n            else {\n                $urlarg .= '&amp;'.$key.'='.urlencode($value);\n            }\n        }\n\n        return $urlarg;\n    }\n\n    function SetCSIMImgAlt($aAlt) {\n        $this->iCSIMImgAlt = $aAlt;\n    }\n\n    function StrokeCSIM($aScriptName='auto',$aCSIMName='',$aBorder=0) {\n        if( $aCSIMName=='' ) {\n            // create a random map name\n            srand ((int)((float) microtime() * 1000000)); //MiToTeam: explicit type casting\n            $r = rand(0,100000);\n            $aCSIMName='__mapname'.$r.'__';\n        }\n\n        if( $aScriptName=='auto' ) {\n            $aScriptName=basename($_SERVER['PHP_SELF']);\n        }\n\n        $urlarg = $this->GetURLArguments(true);\n\n        if( empty($_GET[_CSIM_DISPLAY]) ) {\n            // First determine if we need to check for a cached version\n            // This differs from the standard cache in the sense that the\n            // image and CSIM map HTML file is written relative to the directory\n            // the script executes in and not the specified cache directory.\n            // The reason for this is that the cache directory is not necessarily\n            // accessible from the HTTP server.\n            if( $this->csimcachename != '' ) {\n                $dir = dirname($this->csimcachename);\n                $base = basename($this->csimcachename);\n                $base = strtok($base,'.');\n                $suffix = strtok('.');\n                $basecsim = $dir.'/'.$base.'?'.$urlarg.'_csim_.html';\n                $baseimg = $base.'?'.$urlarg.'.'.$this->img->img_format;\n\n                // Check that apache can write to directory specified\n\n                if( file_exists($dir) && !is_writeable($dir) ) {\n                    JpgraphError::RaiseL(25028,$dir);//('Apache/PHP does not have permission to write to the CSIM cache directory ('.$dir.'). Check permissions.');\n                }\n\n                // Make sure directory exists\n                $this->cache->MakeDirs($dir);\n\n                // Write the image file\n                $this->Stroke(CSIMCACHE_DIR.$baseimg);\n\n                // Construct wrapper HTML and write to file and send it back to browser\n\n                // In the src URL we must replace the '?' with its encoding to prevent the arguments\n                // to be converted to real arguments.\n                $tmp = str_replace('?','%3f',$baseimg);\n                $htmlwrap = $this->GetHTMLImageMap($aCSIMName).\"\\n\".\n                            '<img src=\"'.CSIMCACHE_HTTP_DIR.$tmp.'\" ismap=\"ismap\" usemap=\"#'.$aCSIMName.' width=\"'.$this->img->width.'\" height=\"'.$this->img->height.\"\\\" alt=\\\"\".$this->iCSIMImgAlt.\"\\\" />\\n\";\n\n                if($fh =  @fopen($basecsim,'w') ) {\n                    fwrite($fh,$htmlwrap);\n                    fclose($fh);\n                    echo $htmlwrap;\n                }\n                else {\n                    JpGraphError::RaiseL(25029,$basecsim);//(\" Can't write CSIM \\\"$basecsim\\\" for writing. Check free space and permissions.\");\n                }\n            }\n            else {\n\n                if( $aScriptName=='' ) {\n                    JpGraphError::RaiseL(25030);//('Missing script name in call to StrokeCSIM(). You must specify the name of the actual image script as the first parameter to StrokeCSIM().');\n                }\n                echo $this->GetHTMLImageMap($aCSIMName) . $this->GetCSIMImgHTML($aCSIMName, $aScriptName, $aBorder);\n            }\n        }\n        else {\n            $this->Stroke();\n        }\n    }\n\n    function StrokeCSIMImage() {\n        if( @$_GET[_CSIM_DISPLAY] == 1 ) {\n            $this->Stroke();\n        }\n    }\n\n    function GetCSIMImgHTML($aCSIMName, $aScriptName='auto', $aBorder=0 ) {\n        if( $aScriptName=='auto' ) {\n            $aScriptName=basename($_SERVER['PHP_SELF']);\n        }\n        $urlarg = $this->GetURLArguments(true);\n        return \"<img src=\\\"\".$aScriptName.'?'.$urlarg.\"\\\" ismap=\\\"ismap\\\" usemap=\\\"#\".$aCSIMName.'\" height=\"'.$this->img->height.\"\\\" alt=\\\"\".$this->iCSIMImgAlt.\"\\\" />\\n\";\n    }\n\n    function GetTextsYMinMax($aY2=false) {\n        if( $aY2 ) {\n            $txts = $this->y2texts;\n        }\n        else {\n            $txts = $this->texts;\n        }\n        $n = is_array($txts) ? count($txts) : 0;\n        $min=null;\n        $max=null;\n        for( $i=0; $i < $n; ++$i ) {\n            if( $txts[$i]->iScalePosY !== null && $txts[$i]->iScalePosX !== null  ) {\n                if( $min === null  ) {\n                    $min = $max = $txts[$i]->iScalePosY ;\n                }\n                else {\n                    $min = min($min,$txts[$i]->iScalePosY);\n                    $max = max($max,$txts[$i]->iScalePosY);\n                }\n            }\n        }\n        if( $min !== null ) {\n            return array($min,$max);\n        }\n        else {\n            return null;\n        }\n    }\n\n    function GetTextsXMinMax($aY2=false) {\n        if( $aY2 ) {\n            $txts = $this->y2texts;\n        }\n        else {\n            $txts = $this->texts;\n        }\n        $n = is_array($txts) ? count($txts) : 0;\n        $min=null;\n        $max=null;\n        for( $i=0; $i < $n; ++$i ) {\n            if( $txts[$i]->iScalePosY !== null && $txts[$i]->iScalePosX !== null  ) {\n                if( $min === null  ) {\n                    $min = $max = $txts[$i]->iScalePosX ;\n                }\n                else {\n                    $min = min($min,$txts[$i]->iScalePosX);\n                    $max = max($max,$txts[$i]->iScalePosX);\n                }\n            }\n        }\n        if( $min !== null ) {\n            return array($min,$max);\n        }\n        else {\n            return null;\n        }\n    }\n\n    function GetXMinMax() {\n\n        list($min,$ymin) = $this->plots[0]->Min();\n        list($max,$ymax) = $this->plots[0]->Max();\n\n        $i=0;\n        // Some plots, e.g. PlotLine should not affect the scale\n        // and will return (null,null). We should ignore those\n        // values.\n        while( ($min===null || $max === null) && ($i < count($this->plots)-1) ) {\n            ++$i;\n            list($min,$ymin) = $this->plots[$i]->Min();\n            list($max,$ymax) = $this->plots[$i]->Max();\n        }\n\n        foreach( $this->plots as $p ) {\n            list($xmin,$ymin) = $p->Min();\n            list($xmax,$ymax) = $p->Max();\n\n            if( $xmin !== null && $xmax !== null ) {\n                $min = Min($xmin,$min);\n                $max = Max($xmax,$max);\n            }\n        }\n\n        if( $this->y2axis != null ) {\n            foreach( $this->y2plots as $p ) {\n                list($xmin,$ymin) = $p->Min();\n                list($xmax,$ymax) = $p->Max();\n                if( $xmin !== null && $xmax !== null ) {\n                    $min = Min($xmin, $min);\n                    $max = Max($xmax, $max);\n                }\n            }\n        }\n\n        $n = count($this->ynaxis);\n        for( $i=0; $i < $n; ++$i ) {\n            if( $this->ynaxis[$i] != null) {\n                foreach( $this->ynplots[$i] as $p ) {\n                    list($xmin,$ymin) = $p->Min();\n                    list($xmax,$ymax) = $p->Max();\n                    if( $xmin !== null && $xmax !== null ) {\n                        $min = Min($xmin, $min);\n                        $max = Max($xmax, $max);\n                    }\n                }\n            }\n        }\n        return array($min,$max);\n    }\n\n    function AdjustMarginsForTitles() {\n        $totrequired =\n            ($this->title->t != ''\n                ? $this->title->GetTextHeight($this->img) + $this->title->margin + 5 * SUPERSAMPLING_SCALE\n                : 0 ) +\n            ($this->subtitle->t != ''\n                ? $this->subtitle->GetTextHeight($this->img) + $this->subtitle->margin + 5 * SUPERSAMPLING_SCALE\n                : 0 ) +\n            ($this->subsubtitle->t != ''\n                ? $this->subsubtitle->GetTextHeight($this->img) + $this->subsubtitle->margin + 5 * SUPERSAMPLING_SCALE\n                : 0 ) ;\n\n        $btotrequired = 0;\n        if($this->xaxis != null &&  !$this->xaxis->hide && !$this->xaxis->hide_labels ) {\n            // Minimum bottom margin\n            if( $this->xaxis->title->t != '' ) {\n                if( $this->img->a == 90 ) {\n                    $btotrequired = $this->yaxis->title->GetTextHeight($this->img) + 7 ;\n                }\n                else {\n                    $btotrequired = $this->xaxis->title->GetTextHeight($this->img) + 7 ;\n                }\n            }\n            else {\n                $btotrequired = 0;\n            }\n\n            if( $this->img->a == 90 ) {\n                $this->img->SetFont($this->yaxis->font_family,$this->yaxis->font_style,\n                $this->yaxis->font_size);\n                $lh = $this->img->GetTextHeight('Mg',$this->yaxis->label_angle);\n            }\n            else {\n                $this->img->SetFont($this->xaxis->font_family,$this->xaxis->font_style,\n                $this->xaxis->font_size);\n                $lh = $this->img->GetTextHeight('Mg',$this->xaxis->label_angle);\n            }\n\n            $btotrequired += $lh + 6;\n        }\n\n        if( $this->img->a == 90 ) {\n            // DO Nothing. It gets too messy to do this properly for 90 deg...\n        }\n        else{\n            // need more top margin\n            if( $this->img->top_margin < $totrequired ) {\n                $this->SetMargin(\n                    $this->img->raw_left_margin,\n                    $this->img->raw_right_margin,\n                    $totrequired / SUPERSAMPLING_SCALE,\n                    $this->img->raw_bottom_margin\n                );\n            }\n\n            // need more bottom margin\n            if( $this->img->bottom_margin < $btotrequired ) {\n                $this->SetMargin(\n                    $this->img->raw_left_margin,\n                    $this->img->raw_right_margin,\n                    $this->img->raw_top_margin,\n                    $btotrequired / SUPERSAMPLING_SCALE\n                );\n            }\n        }\n    }\n\n    function StrokeStore($aStrokeFileName) {\n        // Get the handler to prevent the library from sending the\n        // image to the browser\n        $ih = $this->Stroke(_IMG_HANDLER);\n\n        // Stroke it to a file\n        $this->img->Stream($aStrokeFileName);\n\n        // Send it back to browser\n        $this->img->Headers();\n        $this->img->Stream();\n    }\n\n    function doAutoscaleXAxis() {\n    //Check if we should autoscale x-axis\n        if( !$this->xscale->IsSpecified() ) {\n            if( substr($this->axtype,0,4) == \"text\" ) {\n                $max=0;\n                $n = count($this->plots);\n                for($i=0; $i < $n; ++$i ) {\n                    $p = $this->plots[$i];\n                    // We need some unfortunate sub class knowledge here in order\n                    // to increase number of data points in case it is a line plot\n                    // which has the barcenter set. If not it could mean that the\n                    // last point of the data is outside the scale since the barcenter\n                    // settings means that we will shift the entire plot half a tick step\n                    // to the right in oder to align with the center of the bars.\n                    if( class_exists('BarPlot',false) ) {\n                        $cl = strtolower(get_class($p));\n                        if( (class_exists('BarPlot',false) && ($p instanceof BarPlot)) || empty($p->barcenter) ) {\n                            $max=max($max,$p->numpoints-1);\n                        }\n                        else {\n                            $max=max($max,$p->numpoints);\n                        }\n                    }\n                    else {\n                        if( empty($p->barcenter) ) {\n                            $max=max($max,$p->numpoints-1);\n                        }\n                        else {\n                            $max=max($max,$p->numpoints);\n                        }\n                    }\n                }\n                $min=0;\n                if( $this->y2axis != null ) {\n                    foreach( $this->y2plots as $p ) {\n                        $max=max($max,$p->numpoints-1);\n                    }\n                }\n                $n = count($this->ynaxis);\n                for( $i=0; $i < $n; ++$i ) {\n                    if( $this->ynaxis[$i] != null) {\n                        foreach( $this->ynplots[$i] as $p ) {\n                            $max=max($max,$p->numpoints-1);\n                        }\n                    }\n                }\n\n                $this->xscale->Update($this->img,$min,$max);\n                $this->xscale->ticks->Set($this->xaxis->tick_step,1);\n                $this->xscale->ticks->SupressMinorTickMarks();\n            }\n            else {\n                list($min,$max) = $this->GetXMinMax();\n\n                $lres = $this->GetLinesXMinMax($this->lines);\n                if( $lres ) {\n                    list($linmin,$linmax) = $lres ;\n                    $min = min($min,$linmin);\n                    $max = max($max,$linmax);\n                }\n\n                $lres = $this->GetLinesXMinMax($this->y2lines);\n                if( $lres ) {\n                    list($linmin,$linmax) = $lres ;\n                    $min = min($min,$linmin);\n                    $max = max($max,$linmax);\n                }\n\n                $tres = $this->GetTextsXMinMax();\n                if( $tres ) {\n                    list($tmin,$tmax) = $tres ;\n                    $min = min($min,$tmin);\n                    $max = max($max,$tmax);\n                }\n\n                $tres = $this->GetTextsXMinMax(true);\n                if( $tres ) {\n                    list($tmin,$tmax) = $tres ;\n                    $min = min($min,$tmin);\n                    $max = max($max,$tmax);\n                }\n\n                $this->xscale->AutoScale($this->img,$min,$max,round($this->img->plotwidth/$this->xtick_factor));\n            }\n\n            //Adjust position of y-axis and y2-axis to minimum/maximum of x-scale\n            if( !is_numeric($this->yaxis->pos) && !is_string($this->yaxis->pos) ) {\n                $this->yaxis->SetPos($this->xscale->GetMinVal());\n            }\n        }\n        elseif( $this->xscale->IsSpecified() &&\n                ( $this->xscale->auto_ticks || !$this->xscale->ticks->IsSpecified()) ) {\n            // The tick calculation will use the user suplied min/max values to determine\n            // the ticks. If auto_ticks is false the exact user specifed min and max\n            // values will be used for the scale.\n            // If auto_ticks is true then the scale might be slightly adjusted\n            // so that the min and max values falls on an even major step.\n            $min = $this->xscale->scale[0];\n            $max = $this->xscale->scale[1];\n            $this->xscale->AutoScale($this->img,$min,$max,round($this->img->plotwidth/$this->xtick_factor),false);\n\n            // Now make sure we show enough precision to accurate display the\n            // labels. If this is not done then the user might end up with\n            // a scale that might actually start with, say 13.5, butdue to rounding\n            // the scale label will ony show 14.\n            if( abs(floor($min)-$min) > 0 ) {\n\n                // If the user has set a format then we bail out\n                if( $this->xscale->ticks->label_formatstr == '' && $this->xscale->ticks->label_dateformatstr == '' ) {\n                    $this->xscale->ticks->precision = abs( floor(log10( abs(floor($min)-$min))) )+1;\n                }\n            }\n        }\n\n        // Position the optional Y2 and Yn axis to the rightmost position of the x-axis\n        if( $this->y2axis != null ) {\n            if( !is_numeric($this->y2axis->pos) && !is_string($this->y2axis->pos) ) {\n                $this->y2axis->SetPos($this->xscale->GetMaxVal());\n            }\n            $this->y2axis->SetTitleSide(SIDE_RIGHT);\n        }\n\n        $n = count($this->ynaxis);\n        $nY2adj = $this->y2axis != null ? $this->iYAxisDeltaPos : 0;\n        for( $i=0; $i < $n; ++$i ) {\n            if( $this->ynaxis[$i] != null ) {\n                if( !is_numeric($this->ynaxis[$i]->pos) && !is_string($this->ynaxis[$i]->pos) ) {\n                    $this->ynaxis[$i]->SetPos($this->xscale->GetMaxVal());\n                    $this->ynaxis[$i]->SetPosAbsDelta($i*$this->iYAxisDeltaPos + $nY2adj);\n                }\n                $this->ynaxis[$i]->SetTitleSide(SIDE_RIGHT);\n            }\n        }\n    }\n\n\n    function doAutoScaleYnAxis() {\n\n        if( $this->y2scale != null) {\n            if( !$this->y2scale->IsSpecified() && count($this->y2plots)>0 ) {\n                list($min,$max) = $this->GetPlotsYMinMax($this->y2plots);\n\n                $lres = $this->GetLinesYMinMax($this->y2lines);\n                if( is_array($lres) ) {\n                    list($linmin,$linmax) = $lres ;\n                    $min = min($min,$linmin);\n                    $max = max($max,$linmax);\n                }\n                $tres = $this->GetTextsYMinMax(true);\n                if( is_array($tres) ) {\n                    list($tmin,$tmax) = $tres ;\n                    $min = min($min,$tmin);\n                    $max = max($max,$tmax);\n                }\n                $this->y2scale->AutoScale($this->img,$min,$max,$this->img->plotheight/$this->ytick_factor);\n            }\n            elseif( $this->y2scale->IsSpecified() && ( $this->y2scale->auto_ticks || !$this->y2scale->ticks->IsSpecified()) ) {\n                // The tick calculation will use the user suplied min/max values to determine\n                // the ticks. If auto_ticks is false the exact user specifed min and max\n                // values will be used for the scale.\n                // If auto_ticks is true then the scale might be slightly adjusted\n                // so that the min and max values falls on an even major step.\n                $min = $this->y2scale->scale[0];\n                $max = $this->y2scale->scale[1];\n                $this->y2scale->AutoScale($this->img,$min,$max,\n                $this->img->plotheight/$this->ytick_factor,\n                $this->y2scale->auto_ticks);\n\n                // Now make sure we show enough precision to accurate display the\n                // labels. If this is not done then the user might end up with\n                // a scale that might actually start with, say 13.5, butdue to rounding\n                // the scale label will ony show 14.\n                if( abs(floor($min)-$min) > 0 ) {\n                    // If the user has set a format then we bail out\n                    if( $this->y2scale->ticks->label_formatstr == '' && $this->y2scale->ticks->label_dateformatstr == '' ) {\n                        $this->y2scale->ticks->precision = abs( floor(log10( abs(floor($min)-$min))) )+1;\n                    }\n                }\n\n            }\n        }\n\n\n        //\n        // Autoscale the extra Y-axises\n        //\n        $n = count($this->ynaxis);\n        for( $i=0; $i < $n; ++$i ) {\n            if( $this->ynscale[$i] != null) {\n                if( !$this->ynscale[$i]->IsSpecified() && count($this->ynplots[$i])>0 ) {\n                    list($min,$max) = $this->GetPlotsYMinMax($this->ynplots[$i]);\n                    $this->ynscale[$i]->AutoScale($this->img,$min,$max,$this->img->plotheight/$this->ytick_factor);\n                }\n                elseif( $this->ynscale[$i]->IsSpecified() && ( $this->ynscale[$i]->auto_ticks || !$this->ynscale[$i]->ticks->IsSpecified()) ) {\n                    // The tick calculation will use the user suplied min/max values to determine\n                    // the ticks. If auto_ticks is false the exact user specifed min and max\n                    // values will be used for the scale.\n                    // If auto_ticks is true then the scale might be slightly adjusted\n                    // so that the min and max values falls on an even major step.\n                    $min = $this->ynscale[$i]->scale[0];\n                    $max = $this->ynscale[$i]->scale[1];\n                    $this->ynscale[$i]->AutoScale($this->img,$min,$max,\n                    $this->img->plotheight/$this->ytick_factor,\n                    $this->ynscale[$i]->auto_ticks);\n\n                    // Now make sure we show enough precision to accurate display the\n                    // labels. If this is not done then the user might end up with\n                    // a scale that might actually start with, say 13.5, butdue to rounding\n                    // the scale label will ony show 14.\n                    if( abs(floor($min)-$min) > 0 ) {\n                        // If the user has set a format then we bail out\n                        if( $this->ynscale[$i]->ticks->label_formatstr == '' && $this->ynscale[$i]->ticks->label_dateformatstr == '' ) {\n                            $this->ynscale[$i]->ticks->precision = abs( floor(log10( abs(floor($min)-$min))) )+1;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    function doAutoScaleYAxis() {\n\n        //Check if we should autoscale y-axis\n        if( !$this->yscale->IsSpecified() && count($this->plots)>0 ) {\n            list($min,$max) = $this->GetPlotsYMinMax($this->plots);\n            $lres = $this->GetLinesYMinMax($this->lines);\n            if( is_array($lres) ) {\n                list($linmin,$linmax) = $lres ;\n                $min = min($min,$linmin);\n                $max = max($max,$linmax);\n            }\n            $tres = $this->GetTextsYMinMax();\n            if( is_array($tres) ) {\n                list($tmin,$tmax) = $tres ;\n                $min = min($min,$tmin);\n                $max = max($max,$tmax);\n            }\n            $this->yscale->AutoScale($this->img,$min,$max,\n            $this->img->plotheight/$this->ytick_factor);\n        }\n        elseif( $this->yscale->IsSpecified() && ( $this->yscale->auto_ticks || !$this->yscale->ticks->IsSpecified()) ) {\n            // The tick calculation will use the user suplied min/max values to determine\n            // the ticks. If auto_ticks is false the exact user specifed min and max\n            // values will be used for the scale.\n            // If auto_ticks is true then the scale might be slightly adjusted\n            // so that the min and max values falls on an even major step.\n            $min = $this->yscale->scale[0];\n            $max = $this->yscale->scale[1];\n            $this->yscale->AutoScale($this->img,$min,$max,\n            $this->img->plotheight/$this->ytick_factor,\n            $this->yscale->auto_ticks);\n\n            // Now make sure we show enough precision to accurate display the\n            // labels. If this is not done then the user might end up with\n            // a scale that might actually start with, say 13.5, butdue to rounding\n            // the scale label will ony show 14.\n            if( abs(floor($min)-$min) > 0 ) {\n\n                // If the user has set a format then we bail out\n                if( $this->yscale->ticks->label_formatstr == '' && $this->yscale->ticks->label_dateformatstr == '' ) {\n                    $this->yscale->ticks->precision = abs( floor(log10( abs(floor($min)-$min))) )+1;\n                }\n            }\n        }\n\n    }\n\n    function InitScaleConstants() {\n        // Setup scale constants\n        if( $this->yscale ) $this->yscale->InitConstants($this->img);\n        if( $this->xscale ) $this->xscale->InitConstants($this->img);\n        if( $this->y2scale ) $this->y2scale->InitConstants($this->img);\n\n        $n=count($this->ynscale);\n        for($i=0; $i < $n; ++$i) {\n            if( $this->ynscale[$i] ) {\n                $this->ynscale[$i]->InitConstants($this->img);\n            }\n        }\n    }\n\n    function doPrestrokeAdjustments() {\n\n        // Do any pre-stroke adjustment that is needed by the different plot types\n        // (i.e bar plots want's to add an offset to the x-labels etc)\n        for($i=0; $i < count($this->plots) ; ++$i ) {\n            $this->plots[$i]->PreStrokeAdjust($this);\n            $this->plots[$i]->DoLegend($this);\n        }\n\n        // Any plots on the second Y scale?\n        if( $this->y2scale != null ) {\n            for($i=0; $i<count($this->y2plots) ; ++$i ) {\n                $this->y2plots[$i]->PreStrokeAdjust($this);\n                $this->y2plots[$i]->DoLegend($this);\n            }\n        }\n\n        // Any plots on the extra Y axises?\n        $n = count($this->ynaxis);\n        for($i=0; $i<$n ; ++$i ) {\n            if( $this->ynplots == null || $this->ynplots[$i] == null) {\n                JpGraphError::RaiseL(25032,$i);//(\"No plots for Y-axis nbr:$i\");\n            }\n            $m = count($this->ynplots[$i]);\n            for($j=0; $j < $m; ++$j ) {\n                $this->ynplots[$i][$j]->PreStrokeAdjust($this);\n                $this->ynplots[$i][$j]->DoLegend($this);\n            }\n        }\n    }\n\n    function StrokeBands($aDepth,$aCSIM) {\n    // Stroke bands\n        if( $this->bands != null && !$aCSIM) {\n            for($i=0; $i < count($this->bands); ++$i) {\n            // Stroke all bands that asks to be in the background\n                if( $this->bands[$i]->depth == $aDepth ) {\n                    $this->bands[$i]->Stroke($this->img,$this->xscale,$this->yscale);\n                }\n            }\n        }\n\n        if( $this->y2bands != null && $this->y2scale != null && !$aCSIM ) {\n            for($i=0; $i < count($this->y2bands); ++$i) {\n            // Stroke all bands that asks to be in the foreground\n                if( $this->y2bands[$i]->depth == $aDepth ) {\n                    $this->y2bands[$i]->Stroke($this->img,$this->xscale,$this->y2scale);\n                }\n            }\n        }\n    }\n\n\n    // Stroke the graph\n    // $aStrokeFileName If != \"\" the image will be written to this file and NOT\n    // streamed back to the browser\n    function Stroke($aStrokeFileName='') {\n        // Fist make a sanity check that user has specified a scale\n        if( empty($this->yscale) ) {\n            JpGraphError::RaiseL(25031);//('You must specify what scale to use with a call to Graph::SetScale().');\n        }\n\n        // Start by adjusting the margin so that potential titles will fit.\n        $this->AdjustMarginsForTitles();\n\n        // Give the plot a chance to do any scale adjuments the individual plots\n        // wants to do. Right now this is only used by the contour plot to set scale\n        // limits\n        for($i=0; $i < count($this->plots) ; ++$i ) {\n            $this->plots[$i]->PreScaleSetup($this);\n        }\n\n        // Init scale constants that are used to calculate the transformation from\n        // world to pixel coordinates\n        $this->InitScaleConstants();\n\n        // If the filename is the predefined value = '_csim_special_'\n        // we assume that the call to stroke only needs to do enough\n        // to correctly generate the CSIM maps.\n        // We use this variable to skip things we don't strictly need\n        // to do to generate the image map to improve performance\n        // a best we can. Therefor you will see a lot of tests !$_csim in the\n        // code below.\n        $_csim = ($aStrokeFileName===_CSIM_SPECIALFILE);\n\n        // If we are called the second time (perhaps the user has called GetHTMLImageMap()\n        // himself then the legends have alsready been populated once in order to get the\n        // CSIM coordinats. Since we do not want the legends to be populated a second time\n        // we clear the legends\n        $this->legend->Clear();\n\n        // We need to know if we have stroked the plot in the\n        // GetCSIMareas. Otherwise the CSIM hasn't been generated\n        // and in the case of GetCSIM called before stroke to generate\n        // CSIM without storing an image to disk GetCSIM must call Stroke.\n        $this->iHasStroked = true;\n\n        // Setup pre-stroked adjustments and Legends\n        $this->doPrestrokeAdjustments();\n\n        if ($this->graph_theme) {\n            $this->graph_theme->PreStrokeApply($this);\n        }\n\n        // Bail out if any of the Y-axis not been specified and\n        // has no plots. (This means it is impossible to do autoscaling and\n        // no other scale was given so we can't possible draw anything). If you use manual\n        // scaling you also have to supply the tick steps as well.\n        if( (!$this->yscale->IsSpecified() && count($this->plots)==0) ||\n            ($this->y2scale!=null && !$this->y2scale->IsSpecified() && count($this->y2plots)==0) ) {\n            //$e = \"n=\".count($this->y2plots).\"\\n\";\n            // $e = \"Can't draw unspecified Y-scale.<br>\\nYou have either:<br>\\n\";\n            // $e .= \"1. Specified an Y axis for autoscaling but have not supplied any plots<br>\\n\";\n            // $e .= \"2. Specified a scale manually but have forgot to specify the tick steps\";\n            JpGraphError::RaiseL(25026);\n        }\n\n        // Bail out if no plots and no specified X-scale\n        if( (!$this->xscale->IsSpecified() && count($this->plots)==0 && count($this->y2plots)==0) ) {\n            JpGraphError::RaiseL(25034);//(\"<strong>JpGraph: Can't draw unspecified X-scale.</strong><br>No plots.<br>\");\n        }\n\n        // Autoscale the normal Y-axis\n        $this->doAutoScaleYAxis();\n\n        // Autoscale all additiopnal y-axis\n        $this->doAutoScaleYnAxis();\n\n        // Autoscale the regular x-axis and position the y-axis properly\n        $this->doAutoScaleXAxis();\n\n        // If we have a negative values and x-axis position is at 0\n        // we need to supress the first and possible the last tick since\n        // they will be drawn on top of the y-axis (and possible y2 axis)\n        // The test below might seem strange the reasone being that if\n        // the user hasn't specified a value for position this will not\n        // be set until we do the stroke for the axis so as of now it\n        // is undefined.\n        // For X-text scale we ignore all this since the tick are usually\n        // much further in and not close to the Y-axis. Hence the test\n        // for 'text'\n        if( ($this->yaxis->pos==$this->xscale->GetMinVal() || (is_string($this->yaxis->pos) && $this->yaxis->pos=='min')) &&\n            !is_numeric($this->xaxis->pos) && $this->yscale->GetMinVal() < 0 &&\n            substr($this->axtype,0,4) != 'text' && $this->xaxis->pos != 'min' ) {\n\n            //$this->yscale->ticks->SupressZeroLabel(false);\n            $this->xscale->ticks->SupressFirst();\n            if( $this->y2axis != null ) {\n                $this->xscale->ticks->SupressLast();\n            }\n        }\n        elseif( !is_numeric($this->yaxis->pos) && $this->yaxis->pos=='max' ) {\n            $this->xscale->ticks->SupressLast();\n        }\n\n        if( !$_csim ) {\n            $this->StrokePlotArea();\n            if( $this->iIconDepth == DEPTH_BACK ) {\n                $this->StrokeIcons();\n            }\n        }\n        $this->StrokeAxis(false);\n\n        // Stroke colored bands\n        $this->StrokeBands(DEPTH_BACK,$_csim);\n\n        if( $this->grid_depth == DEPTH_BACK && !$_csim) {\n            $this->ygrid->Stroke();\n            $this->xgrid->Stroke();\n        }\n\n        // Stroke Y2-axis\n        if( $this->y2axis != null && !$_csim) {\n            $this->y2axis->Stroke($this->xscale);\n            $this->y2grid->Stroke();\n        }\n\n        // Stroke yn-axis\n        $n = count($this->ynaxis);\n        for( $i=0; $i < $n; ++$i ) {\n            $this->ynaxis[$i]->Stroke($this->xscale);\n        }\n\n        $oldoff=$this->xscale->off;\n        if( substr($this->axtype,0,4) == 'text' ) {\n            if( $this->text_scale_abscenteroff > -1 ) {\n                // For a text scale the scale factor is the number of pixel per step.\n                // Hence we can use the scale factor as a substitute for number of pixels\n                // per major scale step and use that in order to adjust the offset so that\n                // an object of width \"abscenteroff\" becomes centered.\n                $this->xscale->off += round($this->xscale->scale_factor/2)-round($this->text_scale_abscenteroff/2);\n            }\n            else {\n                $this->xscale->off += ceil($this->xscale->scale_factor*$this->text_scale_off*$this->xscale->ticks->minor_step);\n            }\n        }\n\n        if( $this->iDoClipping ) {\n            $oldimage = $this->img->CloneCanvasH();\n        }\n\n        if( ! $this->y2orderback ) {\n            // Stroke all plots for Y1 axis\n            for($i=0; $i < count($this->plots); ++$i) {\n                $this->plots[$i]->Stroke($this->img,$this->xscale,$this->yscale);\n                $this->plots[$i]->StrokeMargin($this->img);\n            }\n        }\n\n        // Stroke all plots for Y2 axis\n        if( $this->y2scale != null ) {\n            for($i=0; $i< count($this->y2plots); ++$i ) {\n                $this->y2plots[$i]->Stroke($this->img,$this->xscale,$this->y2scale);\n            }\n        }\n\n        if( $this->y2orderback ) {\n            // Stroke all plots for Y1 axis\n            for($i=0; $i < count($this->plots); ++$i) {\n                $this->plots[$i]->Stroke($this->img,$this->xscale,$this->yscale);\n                $this->plots[$i]->StrokeMargin($this->img);\n            }\n        }\n\n        $n = count($this->ynaxis);\n        for( $i=0; $i < $n; ++$i ) {\n            $m = count($this->ynplots[$i]);\n            for( $j=0; $j < $m; ++$j ) {\n                $this->ynplots[$i][$j]->Stroke($this->img,$this->xscale,$this->ynscale[$i]);\n                $this->ynplots[$i][$j]->StrokeMargin($this->img);\n            }\n        }\n\n        if( $this->iIconDepth == DEPTH_FRONT) {\n            $this->StrokeIcons();\n        }\n\n        if( $this->iDoClipping ) {\n            // Clipping only supports graphs at 0 and 90 degrees\n            if( $this->img->a == 0 ) {\n                $this->img->CopyCanvasH($oldimage,$this->img->img,\n                $this->img->left_margin,$this->img->top_margin,\n                $this->img->left_margin,$this->img->top_margin,\n                $this->img->plotwidth+1,$this->img->plotheight);\n            }\n            elseif( $this->img->a == 90 ) {\n                $adj = ($this->img->height - $this->img->width)/2;\n                $this->img->CopyCanvasH($oldimage,$this->img->img,\n                $this->img->bottom_margin-$adj,$this->img->left_margin+$adj,\n                $this->img->bottom_margin-$adj,$this->img->left_margin+$adj,\n                $this->img->plotheight+1,$this->img->plotwidth);\n            }\n            else {\n                JpGraphError::RaiseL(25035,$this->img->a);//('You have enabled clipping. Cliping is only supported for graphs at 0 or 90 degrees rotation. Please adjust you current angle (='.$this->img->a.' degrees) or disable clipping.');\n            }\n            $this->img->Destroy();\n            $this->img->SetCanvasH($oldimage);\n        }\n\n        $this->xscale->off=$oldoff;\n\n        if( $this->grid_depth == DEPTH_FRONT && !$_csim ) {\n            $this->ygrid->Stroke();\n            $this->xgrid->Stroke();\n        }\n\n        // Stroke colored bands\n        $this->StrokeBands(DEPTH_FRONT,$_csim);\n\n        // Finally draw the axis again since some plots may have nagged\n        // the axis in the edges.\n        if( !$_csim ) {\n            $this->StrokeAxis();\n        }\n\n        if( $this->y2scale != null && !$_csim ) {\n            $this->y2axis->Stroke($this->xscale,false);\n        }\n\n        if( !$_csim ) {\n            $this->StrokePlotBox();\n        }\n\n        // The titles and legends never gets rotated so make sure\n        // that the angle is 0 before stroking them\n        $aa = $this->img->SetAngle(0);\n        $this->StrokeTitles();\n        $this->footer->Stroke($this->img);\n        $this->legend->Stroke($this->img);\n        $this->img->SetAngle($aa);\n        $this->StrokeTexts();\n        $this->StrokeTables();\n\n        if( !$_csim ) {\n\n            $this->img->SetAngle($aa);\n\n            // Draw an outline around the image map\n            if(_JPG_DEBUG) {\n                $this->DisplayClientSideaImageMapAreas();\n            }\n\n            // Should we do any final image transformation\n            if( $this->iImgTrans ) {\n                if( !class_exists('ImgTrans',false) ) {\n                    require_once('jpgraph_imgtrans.php');\n                    //JpGraphError::Raise('In order to use image transformation you must include the file jpgraph_imgtrans.php in your script.');\n                }\n\n                $tform = new ImgTrans($this->img->img);\n                $this->img->img = $tform->Skew3D($this->iImgTransHorizon,$this->iImgTransSkewDist,\n                $this->iImgTransDirection,$this->iImgTransHighQ,\n                $this->iImgTransMinSize,$this->iImgTransFillColor,\n                $this->iImgTransBorder);\n            }\n\n            // If the filename is given as the special \"__handle\"\n            // then the image handler is returned and the image is NOT\n            // streamed back\n            if( $aStrokeFileName == _IMG_HANDLER ) {\n                return $this->img->img;\n            }\n            else {\n                // Finally stream the generated picture\n                $this->cache->PutAndStream($this->img,$this->cache_name,$this->inline,$aStrokeFileName);\n            }\n        }\n    }\n\n    function SetAxisLabelBackground($aType,$aXFColor='lightgray',$aXColor='black',$aYFColor='lightgray',$aYColor='black') {\n        $this->iAxisLblBgType = $aType;\n        $this->iXAxisLblBgFillColor = $aXFColor;\n        $this->iXAxisLblBgColor = $aXColor;\n        $this->iYAxisLblBgFillColor = $aYFColor;\n        $this->iYAxisLblBgColor = $aYColor;\n    }\n\n    function StrokeAxisLabelBackground() {\n        // Types\n        // 0 = No background\n        // 1 = Only X-labels, length of axis\n        // 2 = Only Y-labels, length of axis\n        // 3 = As 1 but extends to width of graph\n        // 4 = As 2 but extends to height of graph\n        // 5 = Combination of 3 & 4\n        // 6 = Combination of 1 & 2\n\n        $t = $this->iAxisLblBgType ;\n        if( $t < 1 ) return;\n\n        // Stroke optional X-axis label background color\n        if( $t == 1 || $t == 3 || $t == 5 || $t == 6 ) {\n            $this->img->PushColor($this->iXAxisLblBgFillColor);\n            if( $t == 1 || $t == 6 ) {\n                $xl = $this->img->left_margin;\n                $yu = $this->img->height - $this->img->bottom_margin + 1;\n                $xr = $this->img->width - $this->img->right_margin ;\n                $yl = $this->img->height-1-$this->frame_weight;\n            }\n            else { // t==3 || t==5\n                $xl = $this->frame_weight;\n                $yu = $this->img->height - $this->img->bottom_margin + 1;\n                $xr = $this->img->width - 1 - $this->frame_weight;\n                $yl = $this->img->height-1-$this->frame_weight;\n            }\n\n            $this->img->FilledRectangle($xl,$yu,$xr,$yl);\n            $this->img->PopColor();\n\n            // Check if we should add the vertical lines at left and right edge\n            if( $this->iXAxisLblBgColor !== '' ) {\n                // Hardcode to one pixel wide\n                $this->img->SetLineWeight(1);\n                $this->img->PushColor($this->iXAxisLblBgColor);\n                if( $t == 1 || $t == 6 ) {\n                    $this->img->Line($xl,$yu,$xl,$yl);\n                    $this->img->Line($xr,$yu,$xr,$yl);\n                }\n                else {\n                    $xl = $this->img->width - $this->img->right_margin ;\n                    $this->img->Line($xl,$yu-1,$xr,$yu-1);\n                }\n                $this->img->PopColor();\n            }\n        }\n\n        if( $t == 2 || $t == 4 || $t == 5 || $t == 6 ) {\n            $this->img->PushColor($this->iYAxisLblBgFillColor);\n            if( $t == 2 || $t == 6 ) {\n                $xl = $this->frame_weight;\n                $yu = $this->frame_weight+$this->img->top_margin;\n                $xr = $this->img->left_margin - 1;\n                $yl = $this->img->height - $this->img->bottom_margin + 1;\n            }\n            else {\n                $xl = $this->frame_weight;\n                $yu = $this->frame_weight;\n                $xr = $this->img->left_margin - 1;\n                $yl = $this->img->height-1-$this->frame_weight;\n            }\n\n            $this->img->FilledRectangle($xl,$yu,$xr,$yl);\n            $this->img->PopColor();\n\n            // Check if we should add the vertical lines at left and right edge\n            if( $this->iXAxisLblBgColor !== '' ) {\n                $this->img->PushColor($this->iXAxisLblBgColor);\n                if( $t == 2 || $t == 6 ) {\n                    $this->img->Line($xl,$yu-1,$xr,$yu-1);\n                    $this->img->Line($xl,$yl-1,$xr,$yl-1);\n                }\n                else {\n                    $this->img->Line($xr+1,$yu,$xr+1,$this->img->top_margin);\n                }\n                $this->img->PopColor();\n            }\n\n        }\n    }\n\n    function StrokeAxis($aStrokeLabels=true) {\n\n        if( $aStrokeLabels ) {\n            $this->StrokeAxisLabelBackground();\n        }\n\n        // Stroke axis\n        if( $this->iAxisStyle != AXSTYLE_SIMPLE ) {\n            switch( $this->iAxisStyle ) {\n                case AXSTYLE_BOXIN :\n                    $toppos = SIDE_DOWN;\n                    $bottompos = SIDE_UP;\n                    $leftpos = SIDE_RIGHT;\n                    $rightpos = SIDE_LEFT;\n                    break;\n                case AXSTYLE_BOXOUT :\n                    $toppos = SIDE_UP;\n                    $bottompos = SIDE_DOWN;\n                    $leftpos = SIDE_LEFT;\n                    $rightpos = SIDE_RIGHT;\n                    break;\n                case AXSTYLE_YBOXIN:\n                    $toppos = FALSE;\n                    $bottompos = SIDE_UP;\n                    $leftpos = SIDE_RIGHT;\n                    $rightpos = SIDE_LEFT;\n                    break;\n                case AXSTYLE_YBOXOUT:\n                    $toppos = FALSE;\n                    $bottompos = SIDE_DOWN;\n                    $leftpos = SIDE_LEFT;\n                    $rightpos = SIDE_RIGHT;\n                    break;\n                default:\n                    JpGRaphError::RaiseL(25036,$this->iAxisStyle); //('Unknown AxisStyle() : '.$this->iAxisStyle);\n                    break;\n            }\n\n            // By default we hide the first label so it doesn't cross the\n            // Y-axis in case the positon hasn't been set by the user.\n            // However, if we use a box we always want the first value\n            // displayed so we make sure it will be displayed.\n            $this->xscale->ticks->SupressFirst(false);\n\n            // Now draw the bottom X-axis\n            $this->xaxis->SetPos('min');\n            $this->xaxis->SetLabelSide(SIDE_DOWN);\n            $this->xaxis->scale->ticks->SetSide($bottompos);\n            $this->xaxis->Stroke($this->yscale,$aStrokeLabels);\n\n            if( $toppos !== FALSE ) {\n                // We also want a top X-axis\n                $this->xaxis = $this->xaxis;\n                $this->xaxis->SetPos('max');\n                $this->xaxis->SetLabelSide(SIDE_UP);\n                // No title for the top X-axis\n                if( $aStrokeLabels ) {\n                    $this->xaxis->title->Set('');\n                }\n                $this->xaxis->scale->ticks->SetSide($toppos);\n                $this->xaxis->Stroke($this->yscale,$aStrokeLabels);\n            }\n\n            // Stroke the left Y-axis\n            $this->yaxis->SetPos('min');\n            $this->yaxis->SetLabelSide(SIDE_LEFT);\n            $this->yaxis->scale->ticks->SetSide($leftpos);\n            $this->yaxis->Stroke($this->xscale,$aStrokeLabels);\n\n            // Stroke the  right Y-axis\n            $this->yaxis->SetPos('max');\n            // No title for the right side\n            if( $aStrokeLabels ) {\n                $this->yaxis->title->Set('');\n            }\n            $this->yaxis->SetLabelSide(SIDE_RIGHT);\n            $this->yaxis->scale->ticks->SetSide($rightpos);\n            $this->yaxis->Stroke($this->xscale,$aStrokeLabels);\n        }\n        else {\n            $this->xaxis->Stroke($this->yscale,$aStrokeLabels);\n            $this->yaxis->Stroke($this->xscale,$aStrokeLabels);\n        }\n    }\n\n\n    // Private helper function for backgound image\n    static function LoadBkgImage($aImgFormat='',$aFile='',$aImgStr='') {\n        if( $aImgStr != '' ) {\n            return Image::CreateFromString($aImgStr);\n        }\n\n        // Remove case sensitivity and setup appropriate function to create image\n        // Get file extension. This should be the LAST '.' separated part of the filename\n        $e = explode('.',$aFile);\n        $ext = strtolower($e[count($e)-1]);\n        if ($ext == \"jpeg\")  {\n            $ext = \"jpg\";\n        }\n\n        if( trim($ext) == '' ) {\n            $ext = 'png';  // Assume PNG if no extension specified\n        }\n\n        if( $aImgFormat == '' ) {\n            $imgtag = $ext;\n        }\n        else {\n            $imgtag = $aImgFormat;\n        }\n\n        $supported = imagetypes();\n        if( ( $ext == 'jpg' && !($supported & IMG_JPG) ) ||\n            ( $ext == 'gif' && !($supported & IMG_GIF) ) ||\n            ( $ext == 'png' && !($supported & IMG_PNG) ) ||\n            ( $ext == 'bmp' && !($supported & IMG_WBMP) ) ||\n            ( $ext == 'xpm' && !($supported & IMG_XPM) ) ) {\n\n            JpGraphError::RaiseL(25037,$aFile);//('The image format of your background image ('.$aFile.') is not supported in your system configuration. ');\n        }\n\n\n        if( $imgtag == \"jpg\" || $imgtag == \"jpeg\") {\n            $f = \"imagecreatefromjpeg\";\n            $imgtag = \"jpg\";\n        }\n        else {\n            $f = \"imagecreatefrom\".$imgtag;\n        }\n\n        // Compare specified image type and file extension\n        if( $imgtag != $ext ) {\n            //$t = \"Background image seems to be of different type (has different file extension) than specified imagetype. Specified: '\".$aImgFormat.\"'File: '\".$aFile.\"'\";\n            JpGraphError::RaiseL(25038, $aImgFormat, $aFile);\n        }\n\n        $img = @$f($aFile);\n        if( !$img ) {\n            JpGraphError::RaiseL(25039,$aFile);//(\" Can't read background image: '\".$aFile.\"'\");\n        }\n        return $img;\n    }\n\n    function StrokePlotGrad() {\n        if( $this->plot_gradtype < 0  )\n            return;\n\n        $grad = new Gradient($this->img);\n        $xl = $this->img->left_margin;\n        $yt = $this->img->top_margin;\n        $xr = $xl + $this->img->plotwidth+1 ;\n        $yb = $yt + $this->img->plotheight ;\n        $grad->FilledRectangle($xl,$yt,$xr,$yb,$this->plot_gradfrom,$this->plot_gradto,$this->plot_gradtype);\n\n    }\n\n    function StrokeBackgroundGrad() {\n        if( $this->bkg_gradtype < 0  )\n            return;\n\n        $grad = new Gradient($this->img);\n        if( $this->bkg_gradstyle == BGRAD_PLOT ) {\n            $xl = $this->img->left_margin;\n            $yt = $this->img->top_margin;\n            $xr = $xl + $this->img->plotwidth+1 ;\n            $yb = $yt + $this->img->plotheight ;\n            $grad->FilledRectangle($xl,$yt,$xr,$yb,$this->bkg_gradfrom,$this->bkg_gradto,$this->bkg_gradtype);\n        }\n        else {\n            $xl = 0;\n            $yt = 0;\n            $xr = $xl + $this->img->width - 1;\n            $yb = $yt + $this->img->height - 1 ;\n            if( $this->doshadow  ) {\n                $xr -= $this->shadow_width;\n                $yb -= $this->shadow_width;\n            }\n            if( $this->doframe ) {\n                $yt += $this->frame_weight;\n                $yb -= $this->frame_weight;\n                $xl += $this->frame_weight;\n                $xr -= $this->frame_weight;\n            }\n            $aa = $this->img->SetAngle(0);\n            $grad->FilledRectangle($xl,$yt,$xr,$yb,$this->bkg_gradfrom,$this->bkg_gradto,$this->bkg_gradtype);\n            $aa = $this->img->SetAngle($aa);\n        }\n    }\n\n    function StrokeFrameBackground() {\n        if( $this->background_image != '' && $this->background_cflag != '' ) {\n            JpGraphError::RaiseL(25040);//('It is not possible to specify both a background image and a background country flag.');\n        }\n        if( $this->background_image != '' ) {\n            $bkgimg = $this->LoadBkgImage($this->background_image_format,$this->background_image);\n        }\n        elseif( $this->background_cflag != '' ) {\n            if( ! class_exists('FlagImages',false) ) {\n                JpGraphError::RaiseL(25041);//('In order to use Country flags as backgrounds you must include the \"jpgraph_flags.php\" file.');\n            }\n            $fobj = new FlagImages(FLAGSIZE4);\n            $dummy='';\n            $bkgimg = $fobj->GetImgByName($this->background_cflag,$dummy);\n            $this->background_image_mix = $this->background_cflag_mix;\n            $this->background_image_type = $this->background_cflag_type;\n        }\n        else {\n            return ;\n        }\n\n        $bw = ImageSX($bkgimg);\n        $bh = ImageSY($bkgimg);\n\n        // No matter what the angle is we always stroke the image and frame\n        // assuming it is 0 degree\n        $aa = $this->img->SetAngle(0);\n\n        switch( $this->background_image_type ) {\n            case BGIMG_FILLPLOT: // Resize to just fill the plotarea\n                $this->FillMarginArea();\n                $this->StrokeFrame();\n                // Special case to hande 90 degree rotated graph corectly\n                if( $aa == 90 ) {\n                    $this->img->SetAngle(90);\n                    $this->FillPlotArea();\n                    $aa = $this->img->SetAngle(0);\n                    $adj = ($this->img->height - $this->img->width)/2;\n                    $this->img->CopyMerge($bkgimg,\n                        $this->img->bottom_margin-$adj,$this->img->left_margin+$adj,\n                        0,0,\n                        $this->img->plotheight+1,$this->img->plotwidth,\n                        $bw,$bh,$this->background_image_mix);\n                }\n                else {\n                    $this->FillPlotArea();\n                    $this->img->CopyMerge($bkgimg,\n                        $this->img->left_margin,$this->img->top_margin+1,\n                        0,0,$this->img->plotwidth+1,$this->img->plotheight,\n                        $bw,$bh,$this->background_image_mix);\n                }\n                break;\n            case BGIMG_FILLFRAME: // Fill the whole area from upper left corner, resize to just fit\n                $hadj=0; $vadj=0;\n                if( $this->doshadow ) {\n                    $hadj = $this->shadow_width;\n                    $vadj = $this->shadow_width;\n                }\n                $this->FillMarginArea();\n                $this->FillPlotArea();\n                $this->img->CopyMerge($bkgimg,0,0,0,0,$this->img->width-$hadj,$this->img->height-$vadj,\n                $bw,$bh,$this->background_image_mix);\n                $this->StrokeFrame();\n                break;\n            case BGIMG_COPY: // Just copy the image from left corner, no resizing\n                $this->FillMarginArea();\n                $this->FillPlotArea();\n                $this->img->CopyMerge($bkgimg,0,0,0,0,$bw,$bh,\n                $bw,$bh,$this->background_image_mix);\n                $this->StrokeFrame();\n                break;\n            case BGIMG_CENTER: // Center original image in the plot area\n                $this->FillMarginArea();\n                $this->FillPlotArea();\n                $centerx = round($this->img->plotwidth/2+$this->img->left_margin-$bw/2);\n                $centery = round($this->img->plotheight/2+$this->img->top_margin-$bh/2);\n                $this->img->CopyMerge($bkgimg,$centerx,$centery,0,0,$bw,$bh,\n                $bw,$bh,$this->background_image_mix);\n                $this->StrokeFrame();\n                break;\n            case BGIMG_FREE: // Just copy the image to the specified location\n                $this->img->CopyMerge($bkgimg,\n                $this->background_image_xpos,$this->background_image_ypos,\n                0,0,$bw,$bh,$bw,$bh,$this->background_image_mix);\n                $this->StrokeFrame(); // New\n                break;\n            default:\n                JpGraphError::RaiseL(25042);//(\" Unknown background image layout\");\n        }\n        $this->img->SetAngle($aa);\n    }\n\n    // Private\n    // Draw a frame around the image\n    function StrokeFrame() {\n        if( !$this->doframe ) return;\n\n        if( $this->background_image_type <= 1 && ($this->bkg_gradtype < 0 || ($this->bkg_gradtype > 0 && $this->bkg_gradstyle==BGRAD_PLOT)) ) {\n            $c = $this->margin_color;\n        }\n        else {\n            $c = false;\n        }\n\n        if( $this->doshadow ) {\n            $this->img->SetColor($this->frame_color);\n            $this->img->ShadowRectangle(0,0,$this->img->width,$this->img->height,\n            $c,$this->shadow_width,$this->shadow_color);\n        }\n        elseif( $this->framebevel ) {\n            if( $c ) {\n                $this->img->SetColor($this->margin_color);\n                $this->img->FilledRectangle(0,0,$this->img->width-1,$this->img->height-1);\n            }\n            $this->img->Bevel(1,1,$this->img->width-2,$this->img->height-2,\n            $this->framebeveldepth,\n            $this->framebevelcolor1,$this->framebevelcolor2);\n            if( $this->framebevelborder ) {\n                $this->img->SetColor($this->framebevelbordercolor);\n                $this->img->Rectangle(0,0,$this->img->width-1,$this->img->height-1);\n            }\n        }\n        else {\n            $this->img->SetLineWeight($this->frame_weight);\n            if( $c ) {\n                $this->img->SetColor($this->margin_color);\n                $this->img->FilledRectangle(0,0,$this->img->width-1,$this->img->height-1);\n            }\n            $this->img->SetColor($this->frame_color);\n            $this->img->Rectangle(0,0,$this->img->width-1,$this->img->height-1);\n        }\n    }\n\n    function FillMarginArea() {\n        $hadj=0; $vadj=0;\n        if( $this->doshadow ) {\n            $hadj = $this->shadow_width;\n            $vadj = $this->shadow_width;\n        }\n\n        $this->img->SetColor($this->margin_color);\n        $this->img->FilledRectangle(0,0,$this->img->width-1-$hadj,$this->img->height-1-$vadj);\n\n        $this->img->FilledRectangle(0,0,$this->img->width-1-$hadj,$this->img->top_margin);\n        $this->img->FilledRectangle(0,$this->img->top_margin,$this->img->left_margin,$this->img->height-1-$hadj);\n        $this->img->FilledRectangle($this->img->left_margin+1,\n        $this->img->height-$this->img->bottom_margin,\n        $this->img->width-1-$hadj,\n        $this->img->height-1-$hadj);\n        $this->img->FilledRectangle($this->img->width-$this->img->right_margin,\n        $this->img->top_margin+1,\n        $this->img->width-1-$hadj,\n        $this->img->height-$this->img->bottom_margin-1);\n    }\n\n    function FillPlotArea() {\n        $this->img->PushColor($this->plotarea_color);\n        $this->img->FilledRectangle($this->img->left_margin,\n        $this->img->top_margin,\n        $this->img->width-$this->img->right_margin,\n        $this->img->height-$this->img->bottom_margin);\n        $this->img->PopColor();\n    }\n\n    // Stroke the plot area with either a solid color or a background image\n    function StrokePlotArea() {\n        // Note: To be consistent we really should take a possible shadow\n        // into account. However, that causes some problem for the LinearScale class\n        // since in the current design it does not have any links to class Graph which\n        // means it has no way of compensating for the adjusted plotarea in case of a\n        // shadow. So, until I redesign LinearScale we can't compensate for this.\n        // So just set the two adjustment parameters to zero for now.\n        $boxadj = 0; //$this->doframe ? $this->frame_weight : 0 ;\n        $adj = 0; //$this->doshadow ? $this->shadow_width : 0 ;\n\n        if( $this->background_image != '' || $this->background_cflag != '' ) {\n            $this->StrokeFrameBackground();\n        }\n        else {\n            $aa = $this->img->SetAngle(0);\n            $this->StrokeFrame();\n            $aa = $this->img->SetAngle($aa);\n            $this->StrokeBackgroundGrad();\n            if( $this->bkg_gradtype < 0 || ($this->bkg_gradtype > 0 && $this->bkg_gradstyle==BGRAD_MARGIN) ) {\n                $this->FillPlotArea();\n            }\n            $this->StrokePlotGrad();\n        }\n    }\n\n    function StrokeIcons() {\n        $n = count($this->iIcons);\n        for( $i=0; $i < $n; ++$i ) {\n            $this->iIcons[$i]->StrokeWithScale($this->img,$this->xscale,$this->yscale);\n        }\n    }\n\n    function StrokePlotBox() {\n        // Should we draw a box around the plot area?\n        if( $this->boxed ) {\n            $this->img->SetLineWeight(1);\n            $this->img->SetLineStyle('solid');\n            $this->img->SetColor($this->box_color);\n            for($i=0; $i < $this->box_weight; ++$i ) {\n                $this->img->Rectangle(\n                $this->img->left_margin-$i,$this->img->top_margin-$i,\n                $this->img->width-$this->img->right_margin+$i,\n                $this->img->height-$this->img->bottom_margin+$i);\n            }\n        }\n    }\n\n    function SetTitleBackgroundFillStyle($aStyle,$aColor1='black',$aColor2='white') {\n        $this->titlebkg_fillstyle = $aStyle;\n        $this->titlebkg_scolor1 = $aColor1;\n        $this->titlebkg_scolor2 = $aColor2;\n    }\n\n    function SetTitleBackground($aBackColor='gray', $aStyle=TITLEBKG_STYLE1, $aFrameStyle=TITLEBKG_FRAME_NONE, $aFrameColor='black', $aFrameWeight=1, $aBevelHeight=3, $aEnable=true) {\n        $this->titlebackground = $aEnable;\n        $this->titlebackground_color = $aBackColor;\n        $this->titlebackground_style = $aStyle;\n        $this->titlebackground_framecolor = $aFrameColor;\n        $this->titlebackground_framestyle = $aFrameStyle;\n        $this->titlebackground_frameweight = $aFrameWeight;\n        $this->titlebackground_bevelheight = $aBevelHeight ;\n    }\n\n\n    function StrokeTitles() {\n\n        $margin=3;\n\n        if( $this->titlebackground ) {\n            // Find out height\n            $this->title->margin += 2 ;\n            $h = $this->title->GetTextHeight($this->img)+$this->title->margin+$margin;\n            if( $this->subtitle->t != '' && !$this->subtitle->hide ) {\n                $h += $this->subtitle->GetTextHeight($this->img)+$margin+\n                $this->subtitle->margin;\n                $h += 2;\n            }\n            if( $this->subsubtitle->t != '' && !$this->subsubtitle->hide ) {\n                $h += $this->subsubtitle->GetTextHeight($this->img)+$margin+\n                $this->subsubtitle->margin;\n                $h += 2;\n            }\n            $this->img->PushColor($this->titlebackground_color);\n            if( $this->titlebackground_style === TITLEBKG_STYLE1 ) {\n                // Inside the frame\n                if( $this->framebevel ) {\n                    $x1 = $y1 = $this->framebeveldepth + 1 ;\n                    $x2 = $this->img->width - $this->framebeveldepth - 2 ;\n                    $this->title->margin += $this->framebeveldepth + 1 ;\n                    $h += $y1 ;\n                    $h += 2;\n                }\n                else {\n                    $x1 = $y1 = $this->frame_weight;\n                    $x2 = $this->img->width - $this->frame_weight-1;\n                }\n            }\n            elseif( $this->titlebackground_style === TITLEBKG_STYLE2 ) {\n                // Cover the frame as well\n                $x1 = $y1 = 0;\n                $x2 = $this->img->width - 1 ;\n            }\n            elseif( $this->titlebackground_style === TITLEBKG_STYLE3 ) {\n                // Cover the frame as well (the difference is that\n                // for style==3 a bevel frame border is on top\n                // of the title background)\n                $x1 = $y1 = 0;\n                $x2 = $this->img->width - 1 ;\n                $h += $this->framebeveldepth ;\n                $this->title->margin += $this->framebeveldepth ;\n            }\n            else {\n                JpGraphError::RaiseL(25043);//('Unknown title background style.');\n            }\n\n            if( $this->titlebackground_framestyle === 3 ) {\n                $h += $this->titlebackground_bevelheight*2 + 1  ;\n                $this->title->margin += $this->titlebackground_bevelheight ;\n            }\n\n            if( $this->doshadow ) {\n                $x2 -= $this->shadow_width ;\n            }\n\n            $indent=0;\n            if( $this->titlebackground_framestyle == TITLEBKG_FRAME_BEVEL ) {\n                $indent = $this->titlebackground_bevelheight;\n            }\n\n            if( $this->titlebkg_fillstyle==TITLEBKG_FILLSTYLE_HSTRIPED ) {\n                $this->img->FilledRectangle2($x1+$indent,$y1+$indent,$x2-$indent,$h-$indent,\n                $this->titlebkg_scolor1,\n                $this->titlebkg_scolor2);\n            }\n            elseif( $this->titlebkg_fillstyle==TITLEBKG_FILLSTYLE_VSTRIPED ) {\n                $this->img->FilledRectangle2($x1+$indent,$y1+$indent,$x2-$indent,$h-$indent,\n                $this->titlebkg_scolor1,\n                $this->titlebkg_scolor2,2);\n            }\n            else {\n                // Solid fill\n                $this->img->FilledRectangle($x1,$y1,$x2,$h);\n            }\n            $this->img->PopColor();\n\n            $this->img->PushColor($this->titlebackground_framecolor);\n            $this->img->SetLineWeight($this->titlebackground_frameweight);\n            if( $this->titlebackground_framestyle == TITLEBKG_FRAME_FULL ) {\n                // Frame background\n                $this->img->Rectangle($x1,$y1,$x2,$h);\n            }\n            elseif( $this->titlebackground_framestyle == TITLEBKG_FRAME_BOTTOM ) {\n                // Bottom line only\n                $this->img->Line($x1,$h,$x2,$h);\n            }\n            elseif( $this->titlebackground_framestyle == TITLEBKG_FRAME_BEVEL ) {\n                $this->img->Bevel($x1,$y1,$x2,$h,$this->titlebackground_bevelheight);\n            }\n            $this->img->PopColor();\n\n            // This is clumsy. But we neeed to stroke the whole graph frame if it is\n            // set to bevel to get the bevel shading on top of the text background\n            if( $this->framebevel && $this->doframe && $this->titlebackground_style === 3 ) {\n                $this->img->Bevel(1,1,$this->img->width-2,$this->img->height-2,\n                $this->framebeveldepth,\n                $this->framebevelcolor1,$this->framebevelcolor2);\n                if( $this->framebevelborder ) {\n                    $this->img->SetColor($this->framebevelbordercolor);\n                    $this->img->Rectangle(0,0,$this->img->width-1,$this->img->height-1);\n                }\n            }\n        }\n\n        // Stroke title\n        $y = $this->title->margin;\n        if( $this->title->halign == 'center' ) {\n            $this->title->Center(0,$this->img->width,$y);\n        }\n        elseif( $this->title->halign == 'left' ) {\n            $this->title->SetPos($this->title->margin+2,$y);\n        }\n        elseif( $this->title->halign == 'right' ) {\n            $indent = 0;\n            if( $this->doshadow ) {\n                $indent = $this->shadow_width+2;\n            }\n            $this->title->SetPos($this->img->width-$this->title->margin-$indent,$y,'right');\n        }\n        $this->title->Stroke($this->img);\n\n        // ... and subtitle\n        $y += $this->title->GetTextHeight($this->img) + $margin + $this->subtitle->margin;\n        if( $this->subtitle->halign == 'center' ) {\n            $this->subtitle->Center(0,$this->img->width,$y);\n        }\n        elseif( $this->subtitle->halign == 'left' ) {\n            $this->subtitle->SetPos($this->subtitle->margin+2,$y);\n        }\n        elseif( $this->subtitle->halign == 'right' ) {\n            $indent = 0;\n            if( $this->doshadow )\n            $indent = $this->shadow_width+2;\n            $this->subtitle->SetPos($this->img->width-$this->subtitle->margin-$indent,$y,'right');\n        }\n        $this->subtitle->Stroke($this->img);\n\n        // ... and subsubtitle\n        $y += $this->subtitle->GetTextHeight($this->img) + $margin + $this->subsubtitle->margin;\n        if( $this->subsubtitle->halign == 'center' ) {\n            $this->subsubtitle->Center(0,$this->img->width,$y);\n        }\n        elseif( $this->subsubtitle->halign == 'left' ) {\n            $this->subsubtitle->SetPos($this->subsubtitle->margin+2,$y);\n        }\n        elseif( $this->subsubtitle->halign == 'right' ) {\n            $indent = 0;\n            if( $this->doshadow )\n            $indent = $this->shadow_width+2;\n            $this->subsubtitle->SetPos($this->img->width-$this->subsubtitle->margin-$indent,$y,'right');\n        }\n        $this->subsubtitle->Stroke($this->img);\n\n        // ... and fancy title\n        $this->tabtitle->Stroke($this->img);\n\n    }\n\n    function StrokeTexts() {\n        // Stroke any user added text objects\n        if( $this->texts != null ) {\n            for($i=0; $i < count($this->texts); ++$i) {\n                $this->texts[$i]->StrokeWithScale($this->img,$this->xscale,$this->yscale);\n            }\n        }\n\n        if( $this->y2texts != null && $this->y2scale != null ) {\n            for($i=0; $i < count($this->y2texts); ++$i) {\n                $this->y2texts[$i]->StrokeWithScale($this->img,$this->xscale,$this->y2scale);\n            }\n        }\n\n    }\n\n    function StrokeTables() {\n        if( $this->iTables != null ) {\n            $n = count($this->iTables);\n            for( $i=0; $i < $n; ++$i ) {\n                $this->iTables[$i]->StrokeWithScale($this->img,$this->xscale,$this->yscale);\n            }\n        }\n    }\n\n    function DisplayClientSideaImageMapAreas() {\n        // Debug stuff - display the outline of the image map areas\n        $csim='';\n        foreach ($this->plots as $p) {\n            $csim.= $p->GetCSIMareas();\n        }\n        $csim .= $this->legend->GetCSIMareas();\n        if (preg_match_all(\"/area shape=\\\"(\\w+)\\\" coords=\\\"([0-9\\, ]+)\\\"/\", $csim, $coords)) {\n            $this->img->SetColor($this->csimcolor);\n            $n = count($coords[0]);\n            for ($i=0; $i < $n; $i++) {\n                if ( $coords[1][$i] == 'poly' ) {\n                    preg_match_all('/\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,*/',$coords[2][$i],$pts);\n                    $this->img->SetStartPoint($pts[1][count($pts[0])-1],$pts[2][count($pts[0])-1]);\n                    $m = count($pts[0]);\n                    for ($j=0; $j < $m; $j++) {\n                        $this->img->LineTo($pts[1][$j],$pts[2][$j]);\n                    }\n                } elseif ( $coords[1][$i] == 'rect' ) {\n                    $pts = preg_split('/,/', $coords[2][$i]);\n                    $this->img->SetStartPoint($pts[0],$pts[1]);\n                    $this->img->LineTo($pts[2],$pts[1]);\n                    $this->img->LineTo($pts[2],$pts[3]);\n                    $this->img->LineTo($pts[0],$pts[3]);\n                    $this->img->LineTo($pts[0],$pts[1]);\n                }\n            }\n        }\n    }\n\n    // Text scale offset in world coordinates\n    function SetTextScaleOff($aOff) {\n        $this->text_scale_off = $aOff;\n        $this->xscale->text_scale_off = $aOff;\n    }\n\n    // Text width of bar to be centered in absolute pixels\n    function SetTextScaleAbsCenterOff($aOff) {\n        $this->text_scale_abscenteroff = $aOff;\n    }\n\n    // Get Y min and max values for added lines\n    function GetLinesYMinMax( $aLines ) {\n        $n = is_array($aLines) ? count($aLines) : 0;\n        if( $n == 0 ) return false;\n        $min = $aLines[0]->scaleposition ;\n        $max = $min ;\n        $flg = false;\n        for( $i=0; $i < $n; ++$i ) {\n            if( $aLines[$i]->direction == HORIZONTAL ) {\n                $flg = true ;\n                $v = $aLines[$i]->scaleposition ;\n                if( $min > $v ) $min = $v ;\n                if( $max < $v ) $max = $v ;\n            }\n        }\n        return $flg ? array($min,$max) : false ;\n    }\n\n    // Get X min and max values for added lines\n    function GetLinesXMinMax( $aLines ) {\n        $n = is_array($aLines) ? count($aLines) : 0;\n        if( $n == 0 ) return false ;\n        $min = $aLines[0]->scaleposition ;\n        $max = $min ;\n        $flg = false;\n        for( $i=0; $i < $n; ++$i ) {\n            if( $aLines[$i]->direction == VERTICAL ) {\n                $flg = true ;\n                $v = $aLines[$i]->scaleposition ;\n                if( $min > $v ) $min = $v ;\n                if( $max < $v ) $max = $v ;\n            }\n        }\n        return $flg ? array($min,$max) : false ;\n    }\n\n    // Get min and max values for all included plots\n    function GetPlotsYMinMax($aPlots) {\n        $n = count($aPlots);\n        $i=0;\n        do {\n            list($xmax,$max) = $aPlots[$i]->Max();\n        } while( ++$i < $n && !is_numeric($max) );\n\n        $i=0;\n        do {\n            list($xmin,$min) = $aPlots[$i]->Min();\n        } while( ++$i < $n && !is_numeric($min) );\n\n        if( !is_numeric($min) || !is_numeric($max) ) {\n            JpGraphError::RaiseL(25044);//('Cannot use autoscaling since it is impossible to determine a valid min/max value  of the Y-axis (only null values).');\n        }\n\n        for($i=0; $i < $n; ++$i ) {\n            list($xmax,$ymax)=$aPlots[$i]->Max();\n            list($xmin,$ymin)=$aPlots[$i]->Min();\n            if (is_numeric($ymax)) $max=max($max,$ymax);\n            if (is_numeric($ymin)) $min=min($min,$ymin);\n        }\n        if( $min == '' ) $min = 0;\n        if( $max == '' ) $max = 0;\n        if( $min == 0 && $max == 0 ) {\n            // Special case if all values are 0\n            $min=0;$max=1;\n        }\n        return array($min,$max);\n    }\n\n    function hasLinePlotAndBarPlot() {\n        $has_line = false;\n        $has_bar  = false;\n\n        foreach ($this->plots as $plot) {\n            if ($plot instanceof LinePlot) {\n                $has_line = true;\n            }\n            if ($plot instanceof BarPlot) {\n                $has_bar = true;\n            }\n        }\n\n        if ($has_line && $has_bar) {\n            return true;\n        }\n\n        return false;\n    }\n\n    function SetTheme($graph_theme) {\n\n        if (!($this instanceof PieGraph)) {\n            if (!$this->isAfterSetScale) {\n                JpGraphError::RaiseL(25133);//('Use Graph::SetTheme() after Graph::SetScale().');\n            }\n        }\n\n        if ($this->graph_theme) {\n            $this->ClearTheme();\n        }\n        $this->graph_theme = $graph_theme;\n        $this->graph_theme->ApplyGraph($this);\n    }\n\n    function ClearTheme() {\n        $this->graph_theme = null;\n\n        $this->isRunningClear = true;\n\n        $this->__construct(\n                $this->inputValues['aWidth'],\n                $this->inputValues['aHeight'],\n                $this->inputValues['aCachedName'],\n                $this->inputValues['aTimeout'],\n                $this->inputValues['aInline']\n            );\n\n        if (!($this instanceof PieGraph)) {\n            if ($this->isAfterSetScale) {\n                $this->SetScale(\n                        $this->inputValues['aAxisType'],\n                        $this->inputValues['aYMin'],\n                        $this->inputValues['aYMax'],\n                        $this->inputValues['aXMin'],\n                        $this->inputValues['aXMax']\n                    );\n            }\n        }\n\n        $this->isRunningClear = false;\n    }\n\n    function SetSupersampling($do = false, $scale = 2) {\n        if ($do) {\n            define('SUPERSAMPLING_SCALE', $scale);\n           // $this->img->scale = $scale;\n        } else {\n            define('SUPERSAMPLING_SCALE', 1);\n            //$this->img->scale = 0;\n        }\n    }\n\n} // Class\n\n//===================================================\n// CLASS LineProperty\n// Description: Holds properties for a line\n//===================================================\nclass LineProperty {\n    public $iWeight=1, $iColor='black', $iStyle='solid', $iShow=false;\n\n    function __construct($aWeight=1,$aColor='black',$aStyle='solid') {\n        $this->iWeight = $aWeight;\n        $this->iColor = $aColor;\n        $this->iStyle = $aStyle;\n    }\n\n    function SetColor($aColor) {\n        $this->iColor = $aColor;\n    }\n\n    function SetWeight($aWeight) {\n        $this->iWeight = $aWeight;\n    }\n\n    function SetStyle($aStyle) {\n        $this->iStyle = $aStyle;\n    }\n\n    function Show($aShow=true) {\n        $this->iShow=$aShow;\n    }\n\n    function Stroke($aImg,$aX1,$aY1,$aX2,$aY2) {\n        if( $this->iShow ) {\n            $aImg->PushColor($this->iColor);\n            $oldls = $aImg->line_style;\n            $oldlw = $aImg->line_weight;\n            $aImg->SetLineWeight($this->iWeight);\n            $aImg->SetLineStyle($this->iStyle);\n            $aImg->StyleLine($aX1,$aY1,$aX2,$aY2);\n            $aImg->PopColor($this->iColor);\n            $aImg->line_style = $oldls;\n            $aImg->line_weight = $oldlw;\n\n        }\n    }\n}\n\n//===================================================\n// CLASS GraphTabTitle\n// Description: Draw \"tab\" titles on top of graphs\n//===================================================\nclass GraphTabTitle extends Text{\n    private $corner = 6 , $posx = 7, $posy = 4;\n    private $fillcolor='lightyellow',$bordercolor='black';\n    private $align = 'left', $width=TABTITLE_WIDTHFIT;\n    function __construct() {\n        $this->t = '';\n        $this->font_style = FS_BOLD;\n        $this->hide = true;\n        $this->color = 'darkred';\n    }\n\n    function SetColor($aTxtColor,$aFillColor='lightyellow',$aBorderColor='black') {\n        $this->color = $aTxtColor;\n        $this->fillcolor = $aFillColor;\n        $this->bordercolor = $aBorderColor;\n    }\n\n    function SetFillColor($aFillColor) {\n        $this->fillcolor = $aFillColor;\n    }\n\n    function SetTabAlign($aAlign) {\n        $this->align = $aAlign;\n    }\n\n    function SetWidth($aWidth) {\n        $this->width = $aWidth ;\n    }\n\n    function Set($t) {\n        $this->t = $t;\n        $this->hide = false;\n    }\n\n    function SetCorner($aD) {\n        $this->corner = $aD ;\n    }\n\n    function Stroke($aImg,$aDummy1=null,$aDummy2=null) {\n        if( $this->hide )\n            return;\n        $this->boxed = false;\n        $w = $this->GetWidth($aImg) + 2*$this->posx;\n        $h = $this->GetTextHeight($aImg) + 2*$this->posy;\n\n        $x = $aImg->left_margin;\n        $y = $aImg->top_margin;\n\n        if( $this->width === TABTITLE_WIDTHFIT ) {\n            if( $this->align == 'left' ) {\n                $p = array($x,                $y,\n                $x,                $y-$h+$this->corner,\n                $x + $this->corner,$y-$h,\n                $x + $w - $this->corner, $y-$h,\n                $x + $w, $y-$h+$this->corner,\n                $x + $w, $y);\n            }\n            elseif( $this->align == 'center' ) {\n                $x += round($aImg->plotwidth/2) - round($w/2);\n                $p = array($x, $y,\n                $x, $y-$h+$this->corner,\n                $x + $this->corner, $y-$h,\n                $x + $w - $this->corner, $y-$h,\n                $x + $w, $y-$h+$this->corner,\n                $x + $w, $y);\n            }\n            else {\n                $x += $aImg->plotwidth -$w;\n                $p = array($x, $y,\n                $x, $y-$h+$this->corner,\n                $x + $this->corner,$y-$h,\n                $x + $w - $this->corner, $y-$h,\n                $x + $w, $y-$h+$this->corner,\n                $x + $w, $y);\n            }\n        }\n        else {\n            if( $this->width === TABTITLE_WIDTHFULL ) {\n                $w = $aImg->plotwidth ;\n            }\n            else {\n                $w = $this->width ;\n            }\n\n            // Make the tab fit the width of the plot area\n            $p = array($x, $y,\n            $x, $y-$h+$this->corner,\n            $x + $this->corner,$y-$h,\n            $x + $w - $this->corner, $y-$h,\n            $x + $w, $y-$h+$this->corner,\n            $x + $w, $y);\n\n        }\n        if( $this->halign == 'left' ) {\n            $aImg->SetTextAlign('left','bottom');\n            $x += $this->posx;\n            $y -= $this->posy;\n        }\n        elseif( $this->halign == 'center' ) {\n            $aImg->SetTextAlign('center','bottom');\n            $x += $w/2;\n            $y -= $this->posy;\n        }\n        else {\n            $aImg->SetTextAlign('right','bottom');\n            $x += $w - $this->posx;\n            $y -= $this->posy;\n        }\n\n        $aImg->SetColor($this->fillcolor);\n        $aImg->FilledPolygon($p);\n\n        $aImg->SetColor($this->bordercolor);\n        $aImg->Polygon($p,true);\n\n        $aImg->SetColor($this->color);\n        $aImg->SetFont($this->font_family,$this->font_style,$this->font_size);\n        $aImg->StrokeText($x,$y,$this->t,0,'center');\n    }\n\n}\n\n//===================================================\n// CLASS SuperScriptText\n// Description: Format a superscript text\n//===================================================\nclass SuperScriptText extends Text {\n    private $iSuper='';\n    private $sfont_family='',$sfont_style='',$sfont_size=8;\n    private $iSuperMargin=2,$iVertOverlap=4,$iSuperScale=0.65;\n    private $iSDir=0;\n    private $iSimple=false;\n\n    function __construct($aTxt='',$aSuper='',$aXAbsPos=0,$aYAbsPos=0) {\n        parent::__construct($aTxt,$aXAbsPos,$aYAbsPos);\n        $this->iSuper = $aSuper;\n    }\n\n    function FromReal($aVal,$aPrecision=2) {\n        // Convert a floating point number to scientific notation\n        $neg=1.0;\n        if( $aVal < 0 ) {\n            $neg = -1.0;\n            $aVal = -$aVal;\n        }\n\n        $l = floor(log10($aVal));\n        $a = sprintf(\"%0.\".$aPrecision.\"f\",round($aVal / pow(10,$l),$aPrecision));\n        $a *= $neg;\n        if( $this->iSimple && ($a == 1 || $a==-1) ) $a = '';\n\n        if( $a != '' ) {\n            $this->t = $a.' * 10';\n        }\n        else {\n            if( $neg == 1 ) {\n                $this->t = '10';\n            }\n            else {\n                $this->t = '-10';\n            }\n        }\n        $this->iSuper = $l;\n    }\n\n    function Set($aTxt,$aSuper='') {\n        $this->t = $aTxt;\n        $this->iSuper = $aSuper;\n    }\n\n    function SetSuperFont($aFontFam,$aFontStyle=FS_NORMAL,$aFontSize=8) {\n        $this->sfont_family = $aFontFam;\n        $this->sfont_style = $aFontStyle;\n        $this->sfont_size = $aFontSize;\n    }\n\n    // Total width of text\n    function GetWidth($aImg) {\n        $aImg->SetFont($this->font_family,$this->font_style,$this->font_size);\n        $w = $aImg->GetTextWidth($this->t);\n        $aImg->SetFont($this->sfont_family,$this->sfont_style,$this->sfont_size);\n        $w += $aImg->GetTextWidth($this->iSuper);\n        $w += $this->iSuperMargin;\n        return $w;\n    }\n\n    // Hight of font (approximate the height of the text)\n    function GetFontHeight($aImg) {\n        $aImg->SetFont($this->font_family,$this->font_style,$this->font_size);\n        $h = $aImg->GetFontHeight();\n        $aImg->SetFont($this->sfont_family,$this->sfont_style,$this->sfont_size);\n        $h += $aImg->GetFontHeight();\n        return $h;\n    }\n\n    // Hight of text\n    function GetTextHeight($aImg) {\n        $aImg->SetFont($this->font_family,$this->font_style,$this->font_size);\n        $h = $aImg->GetTextHeight($this->t);\n        $aImg->SetFont($this->sfont_family,$this->sfont_style,$this->sfont_size);\n        $h += $aImg->GetTextHeight($this->iSuper);\n        return $h;\n    }\n\n    function Stroke($aImg,$ax=-1,$ay=-1) {\n\n        // To position the super script correctly we need different\n        // cases to handle the alignmewnt specified since that will\n        // determine how we can interpret the x,y coordinates\n\n        $w = parent::GetWidth($aImg);\n        $h = parent::GetTextHeight($aImg);\n        switch( $this->valign ) {\n            case 'top':\n                $sy = $this->y;\n                break;\n            case 'center':\n                $sy = $this->y - $h/2;\n                break;\n            case 'bottom':\n                $sy = $this->y - $h;\n                break;\n            default:\n                JpGraphError::RaiseL(25052);//('PANIC: Internal error in SuperScript::Stroke(). Unknown vertical alignment for text');\n                break;\n        }\n\n        switch( $this->halign ) {\n            case 'left':\n                $sx = $this->x + $w;\n                break;\n            case 'center':\n                $sx = $this->x + $w/2;\n                break;\n            case 'right':\n                $sx = $this->x;\n                break;\n            default:\n                JpGraphError::RaiseL(25053);//('PANIC: Internal error in SuperScript::Stroke(). Unknown horizontal alignment for text');\n                break;\n        }\n\n        $sx += $this->iSuperMargin;\n        $sy += $this->iVertOverlap;\n\n        // Should we automatically determine the font or\n        // has the user specified it explicetly?\n        if( $this->sfont_family == '' ) {\n            if( $this->font_family <= FF_FONT2 ) {\n                if( $this->font_family == FF_FONT0 ) {\n                    $sff = FF_FONT0;\n                }\n                elseif( $this->font_family == FF_FONT1 ) {\n                    if( $this->font_style == FS_NORMAL ) {\n                        $sff = FF_FONT0;\n                    }\n                    else {\n                        $sff = FF_FONT1;\n                    }\n                }\n                else {\n                    $sff = FF_FONT1;\n                }\n                $sfs = $this->font_style;\n                $sfz = $this->font_size;\n            }\n            else {\n                // TTF fonts\n                $sff = $this->font_family;\n                $sfs = $this->font_style;\n                $sfz = floor($this->font_size*$this->iSuperScale);\n                if( $sfz < 8 ) $sfz = 8;\n            }\n            $this->sfont_family = $sff;\n            $this->sfont_style = $sfs;\n            $this->sfont_size = $sfz;\n        }\n        else {\n            $sff = $this->sfont_family;\n            $sfs = $this->sfont_style;\n            $sfz = $this->sfont_size;\n        }\n\n        parent::Stroke($aImg,$ax,$ay);\n\n        // For the builtin fonts we need to reduce the margins\n        // since the bounding bx reported for the builtin fonts\n        // are much larger than for the TTF fonts.\n        if( $sff <= FF_FONT2 ) {\n            $sx -= 2;\n            $sy += 3;\n        }\n\n        $aImg->SetTextAlign('left','bottom');\n        $aImg->SetFont($sff,$sfs,$sfz);\n        $aImg->PushColor($this->color);\n        $aImg->StrokeText($sx,$sy,$this->iSuper,$this->iSDir,'left');\n        $aImg->PopColor();\n    }\n}\n\n\n//===================================================\n// CLASS Grid\n// Description: responsible for drawing grid lines in graph\n//===================================================\nclass Grid {\n    protected $img;\n    protected $scale;\n    protected $majorcolor='#CCCCCC',$minorcolor='#DDDDDD';\n    protected $majortype='solid',$minortype='solid';\n    protected $show=false, $showMinor=false,$majorweight=1,$minorweight=1;\n    protected $fill=false,$fillcolor=array('#EFEFEF','#BBCCFF');\n\n    function __construct($aAxis) {\n        $this->scale = $aAxis->scale;\n        $this->img = $aAxis->img;\n    }\n\n    function SetColor($aMajColor,$aMinColor=false) {\n        $this->majorcolor=$aMajColor;\n        if( $aMinColor === false ) {\n            $aMinColor = $aMajColor ;\n        }\n        $this->minorcolor = $aMinColor;\n    }\n\n    function SetWeight($aMajorWeight,$aMinorWeight=1) {\n        $this->majorweight=$aMajorWeight;\n        $this->minorweight=$aMinorWeight;\n    }\n\n    // Specify if grid should be dashed, dotted or solid\n    function SetLineStyle($aMajorType,$aMinorType='solid') {\n        $this->majortype = $aMajorType;\n        $this->minortype = $aMinorType;\n    }\n\n    function SetStyle($aMajorType,$aMinorType='solid') {\n        $this->SetLineStyle($aMajorType,$aMinorType);\n    }\n\n    // Decide if both major and minor grid should be displayed\n    function Show($aShowMajor=true,$aShowMinor=false) {\n        $this->show=$aShowMajor;\n        $this->showMinor=$aShowMinor;\n    }\n\n    function SetFill($aFlg=true,$aColor1='lightgray',$aColor2='lightblue') {\n        $this->fill = $aFlg;\n        $this->fillcolor = array( $aColor1, $aColor2 );\n    }\n\n    // Display the grid\n    function Stroke() {\n        if( $this->showMinor && !$this->scale->textscale ) {\n            $this->DoStroke($this->scale->ticks->ticks_pos,$this->minortype,$this->minorcolor,$this->minorweight);\n            $this->DoStroke($this->scale->ticks->maj_ticks_pos,$this->majortype,$this->majorcolor,$this->majorweight);\n        }\n        else {\n            $this->DoStroke($this->scale->ticks->maj_ticks_pos,$this->majortype,$this->majorcolor,$this->majorweight);\n        }\n    }\n\n    //--------------\n    // Private methods\n    // Draw the grid\n    function DoStroke($aTicksPos,$aType,$aColor,$aWeight) {\n        if( !$this->show ) return;\n        $nbrgrids = count($aTicksPos);\n\n        if( $this->scale->type == 'y' ) {\n            $xl=$this->img->left_margin;\n            $xr=$this->img->width-$this->img->right_margin;\n\n            if( $this->fill ) {\n                // Draw filled areas\n                $y2 = !empty($aTicksPos) ? $aTicksPos[0] : null;\n                $i=1;\n                while( $i < $nbrgrids ) {\n                    $y1 = $y2;\n                    $y2 = $aTicksPos[$i++];\n                    $this->img->SetColor($this->fillcolor[$i & 1]);\n                    $this->img->FilledRectangle($xl,$y1,$xr,$y2);\n                }\n            }\n\n            $this->img->SetColor($aColor);\n            $this->img->SetLineWeight($aWeight);\n\n            // Draw grid lines\n            switch( $aType ) {\n                case 'solid':  $style = LINESTYLE_SOLID; break;\n                case 'dotted': $style = LINESTYLE_DOTTED; break;\n                case 'dashed': $style = LINESTYLE_DASHED; break;\n                case 'longdashed': $style = LINESTYLE_LONGDASH; break;\n                default:\n                    $style = LINESTYLE_SOLID; break;\n            }\n\n            for($i=0; $i < $nbrgrids; ++$i) {\n                $y=$aTicksPos[$i];\n                $this->img->StyleLine($xl,$y,$xr,$y,$style,true);\n            }\n        }\n        elseif( $this->scale->type == 'x' ) {\n            $yu=$this->img->top_margin;\n            $yl=$this->img->height-$this->img->bottom_margin;\n            $limit=$this->img->width-$this->img->right_margin;\n\n            if( $this->fill ) {\n                // Draw filled areas\n                $x2 = $aTicksPos[0];\n                $i=1;\n                while( $i < $nbrgrids ) {\n                    $x1 = $x2;\n                    $x2 = min($aTicksPos[$i++],$limit) ;\n                    $this->img->SetColor($this->fillcolor[$i & 1]);\n                    $this->img->FilledRectangle($x1,$yu,$x2,$yl);\n                }\n            }\n\n            $this->img->SetColor($aColor);\n            $this->img->SetLineWeight($aWeight);\n\n            // We must also test for limit since we might have\n            // an offset and the number of ticks is calculated with\n            // assumption offset==0 so we might end up drawing one\n            // to many gridlines\n            $i=0;\n            while( $i<count($aTicksPos) && ($x=$aTicksPos[$i]) <= $limit ) {\n                if    ( $aType == 'solid' )      $this->img->Line($x,$yl,$x,$yu);\n                elseif( $aType == 'dotted' )     $this->img->DashedLineForGrid($x,$yl,$x,$yu,1,6);\n                elseif( $aType == 'dashed' )     $this->img->DashedLineForGrid($x,$yl,$x,$yu,2,4);\n                elseif( $aType == 'longdashed' ) $this->img->DashedLineForGrid($x,$yl,$x,$yu,8,6);\n                ++$i;\n            }\n        }\n        else {\n            JpGraphError::RaiseL(25054,$this->scale->type);//('Internal error: Unknown grid axis ['.$this->scale->type.']');\n        }\n        return true;\n    }\n} // Class\n\n//===================================================\n// CLASS Axis\n// Description: Defines X and Y axis. Notes that at the\n// moment the code is not really good since the axis on\n// several occasion must know wheter it's an X or Y axis.\n// This was a design decision to make the code easier to\n// follow.\n//===================================================\nclass AxisPrototype {\n    public $scale=null;\n    public $img=null;\n    public $hide=false,$hide_labels=false;\n    public $title=null;\n    public $font_family=FF_DEFAULT,$font_style=FS_NORMAL,$font_size=8,$label_angle=0;\n    public $tick_step=1;\n    public $pos = false;\n    public $ticks_label = array();\n\n    protected $weight=1;\n    protected $color=array(0,0,0),$label_color=array(0,0,0);\n    protected $ticks_label_colors=null;\n    protected $show_first_label=true,$show_last_label=true;\n    protected $label_step=1; // Used by a text axis to specify what multiple of major steps\n    // should be labeled.\n    protected $labelPos=0;   // Which side of the axis should the labels be?\n    protected $title_adjust,$title_margin,$title_side=SIDE_LEFT;\n    protected $tick_label_margin=5;\n    protected $label_halign = '',$label_valign = '', $label_para_align='left';\n    protected $hide_line=false;\n    protected $iDeltaAbsPos=0;\n\n    function __construct($img,$aScale,$color = array(0,0,0)) {\n        $this->img = $img;\n        $this->scale = $aScale;\n        $this->color = $color;\n        $this->title=new Text('');\n\n        if( $aScale->type == 'y' ) {\n            $this->title_margin = 25;\n            $this->title_adjust = 'middle';\n            $this->title->SetOrientation(90);\n            $this->tick_label_margin=7;\n            $this->labelPos=SIDE_LEFT;\n        }\n        else {\n            $this->title_margin = 5;\n            $this->title_adjust = 'high';\n            $this->title->SetOrientation(0);\n            $this->tick_label_margin=5;\n            $this->labelPos=SIDE_DOWN;\n            $this->title_side=SIDE_DOWN;\n        }\n    }\n\n    function SetLabelFormat($aFormStr) {\n        $this->scale->ticks->SetLabelFormat($aFormStr);\n    }\n\n    function SetLabelFormatString($aFormStr,$aDate=false) {\n        $this->scale->ticks->SetLabelFormat($aFormStr,$aDate);\n    }\n\n    function SetLabelFormatCallback($aFuncName) {\n        $this->scale->ticks->SetFormatCallback($aFuncName);\n    }\n\n    function SetLabelAlign($aHAlign,$aVAlign='top',$aParagraphAlign='left') {\n        $this->label_halign = $aHAlign;\n        $this->label_valign = $aVAlign;\n        $this->label_para_align = $aParagraphAlign;\n    }\n\n    // Don't display the first label\n    function HideFirstTickLabel($aShow=false) {\n        $this->show_first_label=$aShow;\n    }\n\n    function HideLastTickLabel($aShow=false) {\n        $this->show_last_label=$aShow;\n    }\n\n    // Manually specify the major and (optional) minor tick position and labels\n    function SetTickPositions($aMajPos,$aMinPos=NULL,$aLabels=NULL) {\n        $this->scale->ticks->SetTickPositions($aMajPos,$aMinPos,$aLabels);\n    }\n\n    // Manually specify major tick positions and optional labels\n    function SetMajTickPositions($aMajPos,$aLabels=NULL) {\n        $this->scale->ticks->SetTickPositions($aMajPos,NULL,$aLabels);\n    }\n\n    // Hide minor or major tick marks\n    function HideTicks($aHideMinor=true,$aHideMajor=true) {\n        $this->scale->ticks->SupressMinorTickMarks($aHideMinor);\n        $this->scale->ticks->SupressTickMarks($aHideMajor);\n    }\n\n    // Hide zero label\n    function HideZeroLabel($aFlag=true) {\n        $this->scale->ticks->SupressZeroLabel();\n    }\n\n    function HideFirstLastLabel() {\n        // The two first calls to ticks method will supress\n        // automatically generated scale values. However, that\n        // will not affect manually specified value, e.g text-scales.\n        // therefor we also make a kludge here to supress manually\n        // specified scale labels.\n        $this->scale->ticks->SupressLast();\n        $this->scale->ticks->SupressFirst();\n        $this->show_first_label = false;\n        $this->show_last_label = false;\n    }\n\n    // Hide the axis\n    function Hide($aHide=true) {\n        $this->hide=$aHide;\n    }\n\n    // Hide the actual axis-line, but still print the labels\n    function HideLine($aHide=true) {\n        $this->hide_line = $aHide;\n    }\n\n    function HideLabels($aHide=true) {\n        $this->hide_labels = $aHide;\n    }\n\n    // Weight of axis\n    function SetWeight($aWeight) {\n        $this->weight = $aWeight;\n    }\n\n    // Axis color\n    function SetColor($aColor,$aLabelColor=false) {\n        $this->color = $aColor;\n        if( !$aLabelColor ) $this->label_color = $aColor;\n        else $this->label_color = $aLabelColor;\n    }\n\n    // Title on axis\n    function SetTitle($aTitle,$aAdjustAlign='high') {\n        $this->title->Set($aTitle);\n        $this->title_adjust=$aAdjustAlign;\n    }\n\n    // Specify distance from the axis\n    function SetTitleMargin($aMargin) {\n        $this->title_margin=$aMargin;\n    }\n\n    // Which side of the axis should the axis title be?\n    function SetTitleSide($aSideOfAxis) {\n        $this->title_side = $aSideOfAxis;\n    }\n\n    function SetTickSide($aDir) {\n        $this->scale->ticks->SetSide($aDir);\n    }\n\n    function SetTickSize($aMajSize,$aMinSize=3) {\n        $this->scale->ticks->SetSize($aMajSize,$aMinSize=3);\n    }\n\n    // Specify text labels for the ticks. One label for each data point\n    function SetTickLabels($aLabelArray,$aLabelColorArray=null) {\n        $this->ticks_label = $aLabelArray;\n        $this->ticks_label_colors = $aLabelColorArray;\n    }\n\n    function SetLabelMargin($aMargin) {\n        $this->tick_label_margin=$aMargin;\n    }\n\n    // Specify that every $step of the ticks should be displayed starting\n    // at $start\n    function SetTextTickInterval($aStep,$aStart=0) {\n        $this->scale->ticks->SetTextLabelStart($aStart);\n        $this->tick_step=$aStep;\n    }\n\n    // Specify that every $step tick mark should have a label\n    // should be displayed starting\n    function SetTextLabelInterval($aStep) {\n        if( $aStep < 1 ) {\n            JpGraphError::RaiseL(25058);//(\" Text label interval must be specified >= 1.\");\n        }\n        $this->label_step=$aStep;\n    }\n\n    function SetLabelSide($aSidePos) {\n        $this->labelPos=$aSidePos;\n    }\n\n    // Set the font\n    function SetFont($aFamily,$aStyle=FS_NORMAL,$aSize=10) {\n        $this->font_family = $aFamily;\n        $this->font_style = $aStyle;\n        $this->font_size = $aSize;\n    }\n\n    // Position for axis line on the \"other\" scale\n    function SetPos($aPosOnOtherScale) {\n        $this->pos=$aPosOnOtherScale;\n    }\n\n    // Set the position of the axis to be X-pixels delta to the right\n    // of the max X-position (used to position the multiple Y-axis)\n    function SetPosAbsDelta($aDelta) {\n        $this->iDeltaAbsPos=$aDelta;\n    }\n\n    // Specify the angle for the tick labels\n    function SetLabelAngle($aAngle) {\n        $this->label_angle = $aAngle;\n    }\n\n} // Class\n\n\n//===================================================\n// CLASS Axis\n// Description: Defines X and Y axis. Notes that at the\n// moment the code is not really good since the axis on\n// several occasion must know wheter it's an X or Y axis.\n// This was a design decision to make the code easier to\n// follow.\n//===================================================\nclass Axis extends AxisPrototype {\n\n    function __construct($img,$aScale,$color='black') {\n        parent::__construct($img,$aScale,$color);\n    }\n\n    // Stroke the axis.\n    function Stroke($aOtherAxisScale,$aStrokeLabels=true) {\n        if( $this->hide )\n            return;\n        if( is_numeric($this->pos) ) {\n            $pos=$aOtherAxisScale->Translate($this->pos);\n        }\n        else { // Default to minimum of other scale if pos not set\n            if( ($aOtherAxisScale->GetMinVal() >= 0 && $this->pos==false) || $this->pos == 'min' ) {\n                $pos = $aOtherAxisScale->scale_abs[0];\n            }\n            elseif($this->pos == \"max\") {\n                $pos = $aOtherAxisScale->scale_abs[1];\n            }\n            else { // If negative set x-axis at 0\n                $this->pos=0;\n                $pos=$aOtherAxisScale->Translate(0);\n            }\n        }\n\n        $pos += $this->iDeltaAbsPos;\n        $this->img->SetLineWeight($this->weight);\n        $this->img->SetColor($this->color);\n        $this->img->SetFont($this->font_family,$this->font_style,$this->font_size);\n\n        if( $this->scale->type == \"x\" ) {\n            if( !$this->hide_line ) {\n                // Stroke X-axis\n                $this->img->FilledRectangle(\n                    $this->img->left_margin,\n                    $pos,\n                    $this->img->width - $this->img->right_margin,\n                    $pos + $this->weight-1\n                );\n            }\n            if( $this->title_side == SIDE_DOWN ) {\n                $y = $pos + $this->img->GetFontHeight() + $this->title_margin + $this->title->margin;\n                $yalign = 'top';\n            }\n            else {\n                $y = $pos - $this->img->GetFontHeight() - $this->title_margin - $this->title->margin;\n                $yalign = 'bottom';\n            }\n\n            if( $this->title_adjust=='high' ) {\n                $this->title->SetPos($this->img->width-$this->img->right_margin,$y,'right',$yalign);\n            }\n            elseif( $this->title_adjust=='middle' || $this->title_adjust=='center' ) {\n                $this->title->SetPos(($this->img->width-$this->img->left_margin-$this->img->right_margin)/2+$this->img->left_margin,$y,'center',$yalign);\n            }\n            elseif($this->title_adjust=='low') {\n                $this->title->SetPos($this->img->left_margin,$y,'left',$yalign);\n            }\n            else {\n                JpGraphError::RaiseL(25060,$this->title_adjust);//('Unknown alignment specified for X-axis title. ('.$this->title_adjust.')');\n            }\n        }\n        elseif( $this->scale->type == \"y\" ) {\n            // Add line weight to the height of the axis since\n            // the x-axis could have a width>1 and we want the axis to fit nicely together.\n            if( !$this->hide_line ) {\n                // Stroke Y-axis\n                $this->img->FilledRectangle(\n                    $pos - $this->weight + 1,\n                    $this->img->top_margin,\n                    $pos,\n                    $this->img->height - $this->img->bottom_margin + $this->weight - 1\n                );\n            }\n\n            $x=$pos ;\n            if( $this->title_side == SIDE_LEFT ) {\n                $x -= $this->title_margin;\n                $x -= $this->title->margin;\n                $halign = 'right';\n            }\n            else {\n                $x += $this->title_margin;\n                $x += $this->title->margin;\n                $halign = 'left';\n            }\n            // If the user has manually specified an hor. align\n            // then we override the automatic settings with this\n            // specifed setting. Since default is 'left' we compare\n            // with that. (This means a manually set 'left' align\n            // will have no effect.)\n            if( $this->title->halign != 'left' ) {\n                $halign = $this->title->halign;\n            }\n            if( $this->title_adjust == 'high' ) {\n                $this->title->SetPos($x,$this->img->top_margin,$halign,'top');\n            }\n            elseif($this->title_adjust=='middle' || $this->title_adjust=='center') {\n                $this->title->SetPos($x,($this->img->height-$this->img->top_margin-$this->img->bottom_margin)/2+$this->img->top_margin,$halign,\"center\");\n            }\n            elseif($this->title_adjust=='low') {\n                $this->title->SetPos($x,$this->img->height-$this->img->bottom_margin,$halign,'bottom');\n            }\n            else {\n                JpGraphError::RaiseL(25061,$this->title_adjust);//('Unknown alignment specified for Y-axis title. ('.$this->title_adjust.')');\n            }\n        }\n        $this->scale->ticks->Stroke($this->img,$this->scale,$pos);\n        if( $aStrokeLabels ) {\n            if( !$this->hide_labels ) {\n                $this->StrokeLabels($pos);\n            }\n            $this->title->Stroke($this->img);\n        }\n    }\n\n    //---------------\n    // PRIVATE METHODS\n    // Draw all the tick labels on major tick marks\n    function StrokeLabels($aPos,$aMinor=false,$aAbsLabel=false) {\n\n        if( is_array($this->label_color) && count($this->label_color) > 3 ) {\n            $this->ticks_label_colors = $this->label_color;\n            $this->img->SetColor($this->label_color[0]);\n        }\n        else {\n            $this->img->SetColor($this->label_color);\n        }\n        $this->img->SetFont($this->font_family,$this->font_style,$this->font_size);\n        $yoff=$this->img->GetFontHeight()/2;\n\n        // Only draw labels at major tick marks\n        $nbr = count($this->scale->ticks->maj_ticks_label);\n\n        // We have the option to not-display the very first mark\n        // (Usefull when the first label might interfere with another\n        // axis.)\n        $i = $this->show_first_label ? 0 : 1 ;\n        if( !$this->show_last_label ) {\n            --$nbr;\n        }\n        // Now run through all labels making sure we don't overshoot the end\n        // of the scale.\n        $ncolor=0;\n        if( isset($this->ticks_label_colors) ) {\n            $ncolor=count($this->ticks_label_colors);\n        }\n        while( $i < $nbr ) {\n            // $tpos holds the absolute text position for the label\n            $tpos=$this->scale->ticks->maj_ticklabels_pos[$i];\n\n            // Note. the $limit is only used for the x axis since we\n            // might otherwise overshoot if the scale has been centered\n            // This is due to us \"loosing\" the last tick mark if we center.\n            if( $this->scale->type == 'x' && $tpos > $this->img->width-$this->img->right_margin+1 ) {\n                return;\n            }\n            // we only draw every $label_step label\n            if( ($i % $this->label_step)==0 ) {\n\n                // Set specific label color if specified\n                if( $ncolor > 0 ) {\n                    $this->img->SetColor($this->ticks_label_colors[$i % $ncolor]);\n                }\n\n                // If the label has been specified use that and in other case\n                // just label the mark with the actual scale value\n                $m=$this->scale->ticks->GetMajor();\n\n                // ticks_label has an entry for each data point and is the array\n                // that holds the labels set by the user. If the user hasn't\n                // specified any values we use whats in the automatically asigned\n                // labels in the maj_ticks_label\n                if( isset($this->ticks_label[$i *(int)$m]) ) {\n                    $label=$this->ticks_label[$i*(int)$m]; //MiToTeam: explicit type casting\n                }\n                else {\n                    if( $aAbsLabel ) {\n                        $label=abs($this->scale->ticks->maj_ticks_label[$i]);\n                    }\n                    else {\n                        $label=$this->scale->ticks->maj_ticks_label[$i];\n                    }\n\n                    // We number the scale from 1 and not from 0 so increase by one\n                    if( $this->scale->textscale &&\n                        $this->scale->ticks->label_formfunc == '' &&\n                        ! $this->scale->ticks->HaveManualLabels() ) {\n\n                        ++$label;\n\n                    }\n                }\n\n                if( $this->scale->type == \"x\" ) {\n                    if( $this->labelPos == SIDE_DOWN ) {\n                        if( $this->label_angle==0 || $this->label_angle==90 ) {\n                            if( $this->label_halign=='' && $this->label_valign=='') {\n                                $this->img->SetTextAlign('center','top');\n                            }\n                            else {\n                                $this->img->SetTextAlign($this->label_halign,$this->label_valign);\n                            }\n\n                        }\n                        else {\n                            if( $this->label_halign=='' && $this->label_valign=='') {\n                                $this->img->SetTextAlign(\"right\",\"top\");\n                            }\n                            else {\n                                $this->img->SetTextAlign($this->label_halign,$this->label_valign);\n                            }\n                        }\n                        $this->img->StrokeText($tpos,$aPos+$this->tick_label_margin,$label,\n                        $this->label_angle,$this->label_para_align);\n                    }\n                    else {\n                        if( $this->label_angle==0 || $this->label_angle==90 ) {\n                            if( $this->label_halign=='' && $this->label_valign=='') {\n                                $this->img->SetTextAlign(\"center\",\"bottom\");\n                            }\n                            else {\n                                $this->img->SetTextAlign($this->label_halign,$this->label_valign);\n                            }\n                        }\n                        else {\n                            if( $this->label_halign=='' && $this->label_valign=='') {\n                                $this->img->SetTextAlign(\"right\",\"bottom\");\n                            }\n                            else {\n                                $this->img->SetTextAlign($this->label_halign,$this->label_valign);\n                            }\n                        }\n                        $this->img->StrokeText($tpos,$aPos-$this->tick_label_margin-1,$label,\n                        $this->label_angle,$this->label_para_align);\n                    }\n                }\n                else {\n                    // scale->type == \"y\"\n                    //if( $this->label_angle!=0 )\n                    //JpGraphError::Raise(\" Labels at an angle are not supported on Y-axis\");\n                    if( $this->labelPos == SIDE_LEFT ) { // To the left of y-axis\n                        if( $this->label_halign=='' && $this->label_valign=='') {\n                            $this->img->SetTextAlign(\"right\",\"center\");\n                        }\n                        else {\n                            $this->img->SetTextAlign($this->label_halign,$this->label_valign);\n                        }\n                        $this->img->StrokeText($aPos-$this->tick_label_margin,$tpos,$label,$this->label_angle,$this->label_para_align);\n                    }\n                    else { // To the right of the y-axis\n                        if( $this->label_halign=='' && $this->label_valign=='') {\n                            $this->img->SetTextAlign(\"left\",\"center\");\n                        }\n                        else {\n                            $this->img->SetTextAlign($this->label_halign,$this->label_valign);\n                        }\n                        $this->img->StrokeText($aPos+$this->tick_label_margin,$tpos,$label,$this->label_angle,$this->label_para_align);\n                    }\n                }\n            }\n            ++$i;\n        }\n    }\n\n}\n\n\n//===================================================\n// CLASS Ticks\n// Description: Abstract base class for drawing linear and logarithmic\n// tick marks on axis\n//===================================================\nclass Ticks {\n    public $label_formatstr='';   // C-style format string to use for labels\n    public $label_formfunc='';\n    public $label_dateformatstr='';\n    public $direction=1; // Should ticks be in(=1) the plot area or outside (=-1)\n    public $supress_last=false,$supress_tickmarks=false,$supress_minor_tickmarks=false;\n    public $maj_ticks_pos = array(), $maj_ticklabels_pos = array(),\n           $ticks_pos = array(), $maj_ticks_label = array();\n    public $precision;\n\n    public $ticks_label = array(); //MiToTeam: explicit class member declared\n\n    protected $minor_abs_size=3, $major_abs_size=5;\n    protected $scale;\n    protected $is_set=false;\n    protected $supress_zerolabel=false,$supress_first=false;\n    protected $mincolor='',$majcolor='';\n    protected $weight=1;\n    protected $label_usedateformat=FALSE;\n\n    function __construct($aScale) {\n        $this->scale=$aScale;\n        $this->precision = -1;\n    }\n\n    // Set format string for automatic labels\n    function SetLabelFormat($aFormatString,$aDate=FALSE) {\n        $this->label_formatstr=$aFormatString;\n        $this->label_usedateformat=$aDate;\n    }\n\n    function SetLabelDateFormat($aFormatString) {\n        $this->label_dateformatstr=$aFormatString;\n    }\n\n    function SetFormatCallback($aCallbackFuncName) {\n        $this->label_formfunc = $aCallbackFuncName;\n    }\n\n    // Don't display the first zero label\n    function SupressZeroLabel($aFlag=true) {\n        $this->supress_zerolabel=$aFlag;\n    }\n\n    // Don't display minor tick marks\n    function SupressMinorTickMarks($aHide=true) {\n        $this->supress_minor_tickmarks=$aHide;\n    }\n\n    // Don't display major tick marks\n    function SupressTickMarks($aHide=true) {\n        $this->supress_tickmarks=$aHide;\n    }\n\n    // Hide the first tick mark\n    function SupressFirst($aHide=true) {\n        $this->supress_first=$aHide;\n    }\n\n    // Hide the last tick mark\n    function SupressLast($aHide=true) {\n        $this->supress_last=$aHide;\n    }\n\n    // Size (in pixels) of minor tick marks\n    function GetMinTickAbsSize() {\n        return $this->minor_abs_size;\n    }\n\n    // Size (in pixels) of major tick marks\n    function GetMajTickAbsSize() {\n        return $this->major_abs_size;\n    }\n\n    function SetSize($aMajSize,$aMinSize=3) {\n        $this->major_abs_size = $aMajSize;\n        $this->minor_abs_size = $aMinSize;\n    }\n\n    // Have the ticks been specified\n    function IsSpecified() {\n        return $this->is_set;\n    }\n\n    function SetSide($aSide) {\n        $this->direction=$aSide;\n    }\n\n    // Which side of the axis should the ticks be on\n    function SetDirection($aSide=SIDE_RIGHT) {\n        $this->direction=$aSide;\n    }\n\n    // Set colors for major and minor tick marks\n    function SetMarkColor($aMajorColor,$aMinorColor='') {\n        $this->SetColor($aMajorColor,$aMinorColor);\n    }\n\n    function SetColor($aMajorColor,$aMinorColor='') {\n        $this->majcolor=$aMajorColor;\n\n        // If not specified use same as major\n        if( $aMinorColor == '' ) {\n            $this->mincolor=$aMajorColor;\n        }\n        else {\n            $this->mincolor=$aMinorColor;\n        }\n    }\n\n    function SetWeight($aWeight) {\n        $this->weight=$aWeight;\n    }\n\n} // Class\n\n//===================================================\n// CLASS LinearTicks\n// Description: Draw linear ticks on axis\n//===================================================\nclass LinearTicks extends Ticks {\n    public $minor_step=1, $major_step=2;\n    public $xlabel_offset=0,$xtick_offset=0;\n    private $label_offset=0; // What offset should the displayed label have\n    // i.e should we display 0,1,2 or 1,2,3,4 or 2,3,4 etc\n    private $text_label_start=0;\n    private $iManualTickPos = NULL, $iManualMinTickPos = NULL, $iManualTickLabels = NULL;\n    private $iAdjustForDST = false; // If a date falls within the DST period add one hour to the diaplyed time\n\n    function __construct() {\n        $this->precision = -1;\n    }\n\n    // Return major step size in world coordinates\n    function GetMajor() {\n        return $this->major_step;\n    }\n\n    // Return minor step size in world coordinates\n    function GetMinor() {\n        return $this->minor_step;\n    }\n\n    // Set Minor and Major ticks (in world coordinates)\n    function Set($aMajStep,$aMinStep=false) {\n        if( $aMinStep==false ) {\n            $aMinStep=$aMajStep;\n        }\n\n        if( $aMajStep <= 0 || $aMinStep <= 0 ) {\n            JpGraphError::RaiseL(25064);\n            //(\" Minor or major step size is 0. Check that you haven't got an accidental SetTextTicks(0) in your code. If this is not the case you might have stumbled upon a bug in JpGraph. Please report this and if possible include the data that caused the problem.\");\n        }\n\n        $this->major_step=$aMajStep;\n        $this->minor_step=$aMinStep;\n        $this->is_set = true;\n    }\n\n    function SetMajTickPositions($aMajPos,$aLabels=NULL) {\n        $this->SetTickPositions($aMajPos,NULL,$aLabels);\n    }\n\n    function SetTickPositions($aMajPos,$aMinPos=NULL,$aLabels=NULL) {\n        if( !is_array($aMajPos) || ($aMinPos!==NULL && !is_array($aMinPos)) ) {\n            JpGraphError::RaiseL(25065);//('Tick positions must be specifued as an array()');\n            return;\n        }\n        $n=count($aMajPos);\n        if( is_array($aLabels) && (count($aLabels) != $n) ) {\n            JpGraphError::RaiseL(25066);//('When manually specifying tick positions and labels the number of labels must be the same as the number of specified ticks.');\n        }\n        $this->iManualTickPos = $aMajPos;\n        $this->iManualMinTickPos = $aMinPos;\n        $this->iManualTickLabels = $aLabels;\n    }\n\n    function HaveManualLabels() {\n        return is_array($this->iManualTickLabels) ? count($this->iManualTickLabels) > 0 : false;\n    }\n\n    // Specify all the tick positions manually and possible also the exact labels\n    function _doManualTickPos($aScale) {\n        $n=count($this->iManualTickPos);\n        $m= is_array($this->iManualMinTickPos) ? count($this->iManualMinTickPos) : 0;\n        $doLbl= is_array($this->iManualTickLabels) ? count($this->iManualTickLabels) > 0 : false;\n\n        $this->maj_ticks_pos = array();\n        $this->maj_ticklabels_pos = array();\n        $this->ticks_pos = array();\n\n        // Now loop through the supplied positions and translate them to screen coordinates\n        // and store them in the maj_label_positions\n        $minScale = $aScale->scale[0];\n        $maxScale = $aScale->scale[1];\n        $j=0;\n        for($i=0; $i < $n ; ++$i ) {\n            // First make sure that the first tick is not lower than the lower scale value\n            if( !isset($this->iManualTickPos[$i]) || $this->iManualTickPos[$i] < $minScale  || $this->iManualTickPos[$i] > $maxScale) {\n                continue;\n            }\n\n            $this->maj_ticks_pos[$j] = $aScale->Translate($this->iManualTickPos[$i]);\n            $this->maj_ticklabels_pos[$j] = $this->maj_ticks_pos[$j];\n\n            // Set the minor tick marks the same as major if not specified\n            if( $m <= 0 ) {\n                $this->ticks_pos[$j] = $this->maj_ticks_pos[$j];\n            }\n            if( $doLbl ) {\n                $this->maj_ticks_label[$j] = $this->iManualTickLabels[$i];\n            }\n            else {\n                $this->maj_ticks_label[$j]=$this->_doLabelFormat($this->iManualTickPos[$i],$i,$n);\n            }\n            ++$j;\n        }\n\n        // Some sanity check\n        if( count($this->maj_ticks_pos) < 2 ) {\n            JpGraphError::RaiseL(25067);//('Your manually specified scale and ticks is not correct. The scale seems to be too small to hold any of the specified tickl marks.');\n        }\n\n        // Setup the minor tick marks\n        $j=0;\n        for($i=0; $i < $m; ++$i ) {\n            if(  empty($this->iManualMinTickPos[$i]) || $this->iManualMinTickPos[$i] < $minScale  || $this->iManualMinTickPos[$i] > $maxScale) {\n                continue;\n            }\n            $this->ticks_pos[$j] = $aScale->Translate($this->iManualMinTickPos[$i]);\n            ++$j;\n        }\n    }\n\n    function _doAutoTickPos($aScale) {\n        $maj_step_abs = $aScale->scale_factor*$this->major_step;\n        $min_step_abs = $aScale->scale_factor*$this->minor_step;\n\n        if( $min_step_abs==0 || $maj_step_abs==0 ) {\n            JpGraphError::RaiseL(25068);//(\"A plot has an illegal scale. This could for example be that you are trying to use text autoscaling to draw a line plot with only one point or that the plot area is too small. It could also be that no input data value is numeric (perhaps only '-' or 'x')\");\n        }\n        // We need to make this an int since comparing it below\n        // with the result from round() can give wrong result, such that\n        // (40 < 40) == TRUE !!!\n        $limit = (int)$aScale->scale_abs[1];\n\n        if( $aScale->textscale ) {\n            // This can only be true for a X-scale (horizontal)\n            // Define ticks for a text scale. This is slightly different from a\n            // normal linear type of scale since the position might be adjusted\n            // and the labels start at on\n            $label = (float)$aScale->GetMinVal()+$this->text_label_start+$this->label_offset;\n            $start_abs=$aScale->scale_factor*$this->text_label_start;\n            $nbrmajticks=round(($aScale->GetMaxVal()-$aScale->GetMinVal()-$this->text_label_start )/$this->major_step)+1;\n\n            $x = $aScale->scale_abs[0]+$start_abs+$this->xlabel_offset*$min_step_abs;\n            for( $i=0; $label <= $aScale->GetMaxVal()+$this->label_offset; ++$i ) {\n                // Apply format to label\n                $this->maj_ticks_label[$i]=$this->_doLabelFormat($label,$i,$nbrmajticks);\n                $label+=$this->major_step;\n\n                // The x-position of the tick marks can be different from the labels.\n                // Note that we record the tick position (not the label) so that the grid\n                // happen upon tick marks and not labels.\n                $xtick=$aScale->scale_abs[0]+$start_abs+$this->xtick_offset*$min_step_abs+$i*$maj_step_abs;\n                $this->maj_ticks_pos[$i]=$xtick;\n                $this->maj_ticklabels_pos[$i] = round($x);\n                $x += $maj_step_abs;\n            }\n        }\n        else {\n            $label = $aScale->GetMinVal();\n            $abs_pos = $aScale->scale_abs[0];\n            $j=0; $i=0;\n            $step = round($maj_step_abs/$min_step_abs);\n            if( $aScale->type == \"x\" ) {\n                // For a normal linear type of scale the major ticks will always be multiples\n                // of the minor ticks. In order to avoid any rounding issues the major ticks are\n                // defined as every \"step\" minor ticks and not calculated separately\n                $nbrmajticks=round(($aScale->GetMaxVal()-$aScale->GetMinVal()-$this->text_label_start )/$this->major_step)+1;\n                while( round($abs_pos) <= $limit ) {\n                    $this->ticks_pos[] = round($abs_pos);\n                    $this->ticks_label[] = $label;\n                    if( $step== 0 || $i % $step == 0 && $j < $nbrmajticks ) {\n                        $this->maj_ticks_pos[$j] = round($abs_pos);\n                        $this->maj_ticklabels_pos[$j] = round($abs_pos);\n                        $this->maj_ticks_label[$j]=$this->_doLabelFormat($label,$j,$nbrmajticks);\n                        ++$j;\n                    }\n                    ++$i;\n                    $abs_pos += $min_step_abs;\n                    $label+=$this->minor_step;\n                }\n            }\n            elseif( $aScale->type == \"y\" ) {\n                //@todo  s=2:20,12  s=1:50,6  $this->major_step:$nbr\n                // abs_point,limit s=1:270,80 s=2:540,160\n             // $this->major_step = 50;\n                $nbrmajticks=round(($aScale->GetMaxVal()-$aScale->GetMinVal())/$this->major_step)+1;\n//                $step = 5;\n                while( round($abs_pos) >= $limit ) {\n                    $this->ticks_pos[$i] = round($abs_pos);\n                    $this->ticks_label[$i]=$label;\n                    if( $step== 0 || $i % $step == 0 && $j < $nbrmajticks) {\n                        $this->maj_ticks_pos[$j] = round($abs_pos);\n                        $this->maj_ticklabels_pos[$j] = round($abs_pos);\n                        $this->maj_ticks_label[$j]=$this->_doLabelFormat($label,$j,$nbrmajticks);\n                        ++$j;\n                    }\n                    ++$i;\n                    $abs_pos += $min_step_abs;\n                    $label += $this->minor_step;\n                }\n            }\n        }\n    }\n\n    function AdjustForDST($aFlg=true) {\n        $this->iAdjustForDST = $aFlg;\n    }\n\n\n    function _doLabelFormat($aVal,$aIdx,$aNbrTicks) {\n\n        // If precision hasn't been specified set it to a sensible value\n        if( $this->precision==-1 ) {\n            $t = log10($this->minor_step);\n            if( $t > 0 || $t === 0.0) {\n                $precision = 0;\n            }\n            else {\n                $precision = -floor($t);\n            }\n        }\n        else {\n            $precision = $this->precision;\n        }\n\n        if( $this->label_formfunc != '' ) {\n            $f=$this->label_formfunc;\n            if( $this->label_formatstr == '' ) {\n                $l = call_user_func($f,$aVal);\n            }\n            else {\n                $l = sprintf($this->label_formatstr, call_user_func($f,$aVal));\n            }\n        }\n        elseif( $this->label_formatstr != '' || $this->label_dateformatstr != '' ) {\n            if( $this->label_usedateformat ) {\n                // Adjust the value to take daylight savings into account\n                if (date(\"I\",$aVal)==1 && $this->iAdjustForDST ) {\n                    // DST\n                    $aVal+=3600;\n                }\n\n                $l = date($this->label_formatstr,$aVal);\n                if( $this->label_formatstr == 'W' ) {\n                    // If we use week formatting then add a single 'w' in front of the\n                    // week number to differentiate it from dates\n                    $l = 'w'.$l;\n                }\n            }\n            else {\n                if( $this->label_dateformatstr !== '' ) {\n                    // Adjust the value to take daylight savings into account\n                    if (date(\"I\",$aVal)==1 && $this->iAdjustForDST ) {\n                        // DST\n                        $aVal+=3600;\n                    }\n\n                    $l = date($this->label_dateformatstr,$aVal);\n                    if( $this->label_formatstr == 'W' ) {\n                        // If we use week formatting then add a single 'w' in front of the\n                        // week number to differentiate it from dates\n                        $l = 'w'.$l;\n                    }\n                }\n                else {\n                    $l = sprintf($this->label_formatstr,$aVal);\n                }\n            }\n        }\n        else {\n            $l = sprintf('%01.'.$precision.'f',round($aVal,$precision));\n        }\n\n        if( ($this->supress_zerolabel && $l==0) ||  ($this->supress_first && $aIdx==0) || ($this->supress_last  && $aIdx==$aNbrTicks-1) ) {\n            $l='';\n        }\n        return $l;\n    }\n\n    // Stroke ticks on either X or Y axis\n    function _StrokeTicks($aImg,$aScale,$aPos) {\n        $hor = $aScale->type == 'x';\n        $aImg->SetLineWeight($this->weight);\n\n        // We need to make this an int since comparing it below\n        // with the result from round() can give wrong result, such that\n        // (40 < 40) == TRUE !!!\n        $limit = (int)$aScale->scale_abs[1];\n\n        // A text scale doesn't have any minor ticks\n        if( !$aScale->textscale ) {\n            // Stroke minor ticks\n            $yu = $aPos - $this->direction*$this->GetMinTickAbsSize();\n            $xr = $aPos + $this->direction*$this->GetMinTickAbsSize();\n            $n = count($this->ticks_pos);\n            for($i=0; $i < $n; ++$i ) {\n                if( !$this->supress_tickmarks && !$this->supress_minor_tickmarks) {\n                    if( $this->mincolor != '') {\n                        $aImg->PushColor($this->mincolor);\n                    }\n                    if( $hor ) {\n                        //if( $this->ticks_pos[$i] <= $limit )\n                        $aImg->Line($this->ticks_pos[$i],$aPos,$this->ticks_pos[$i],$yu);\n                    }\n                    else {\n                        //if( $this->ticks_pos[$i] >= $limit )\n                        $aImg->Line($aPos,$this->ticks_pos[$i],$xr,$this->ticks_pos[$i]);\n                    }\n                    if( $this->mincolor != '' ) {\n                        $aImg->PopColor();\n                    }\n                }\n            }\n        }\n\n        // Stroke major ticks\n        $yu = $aPos - $this->direction*$this->GetMajTickAbsSize();\n        $xr = $aPos + $this->direction*$this->GetMajTickAbsSize();\n        $nbrmajticks=round(($aScale->GetMaxVal()-$aScale->GetMinVal()-$this->text_label_start )/$this->major_step)+1;\n        $n = count($this->maj_ticks_pos);\n        for($i=0; $i < $n ; ++$i ) {\n            if(!($this->xtick_offset > 0 && $i==$nbrmajticks-1) && !$this->supress_tickmarks) {\n                if( $this->majcolor != '') {\n                    $aImg->PushColor($this->majcolor);\n                }\n                if( $hor ) {\n                    //if( $this->maj_ticks_pos[$i] <= $limit )\n                    $aImg->Line($this->maj_ticks_pos[$i],$aPos,$this->maj_ticks_pos[$i],$yu);\n                }\n                else {\n                    //if( $this->maj_ticks_pos[$i] >= $limit )\n                    $aImg->Line($aPos,$this->maj_ticks_pos[$i],$xr,$this->maj_ticks_pos[$i]);\n                }\n                if( $this->majcolor != '') {\n                    $aImg->PopColor();\n                }\n            }\n        }\n\n    }\n\n    // Draw linear ticks\n    function Stroke($aImg,$aScale,$aPos) {\n        if( $this->iManualTickPos != NULL ) {\n            $this->_doManualTickPos($aScale);\n        }\n        else {\n            $this->_doAutoTickPos($aScale);\n        }\n        $this->_StrokeTicks($aImg,$aScale,$aPos, $aScale->type == 'x' );\n    }\n\n    //---------------\n    // PRIVATE METHODS\n    // Spoecify the offset of the displayed tick mark with the tick \"space\"\n    // Legal values for $o is [0,1] used to adjust where the tick marks and label\n    // should be positioned within the major tick-size\n    // $lo specifies the label offset and $to specifies the tick offset\n    // this comes in handy for example in bar graphs where we wont no offset for the\n    // tick but have the labels displayed halfway under the bars.\n    function SetXLabelOffset($aLabelOff,$aTickOff=-1) {\n        $this->xlabel_offset=$aLabelOff;\n        if( $aTickOff==-1 ) {\n            // Same as label offset\n            $this->xtick_offset=$aLabelOff;\n        }\n        else {\n            $this->xtick_offset=$aTickOff;\n        }\n        if( $aLabelOff>0 ) {\n            $this->SupressLast(); // The last tick wont fit\n        }\n    }\n\n    // Which tick label should we start with?\n    function SetTextLabelStart($aTextLabelOff) {\n        $this->text_label_start=$aTextLabelOff;\n    }\n\n} // Class\n\n//===================================================\n// CLASS LinearScale\n// Description: Handle linear scaling between screen and world\n//===================================================\nclass LinearScale {\n    public $textscale=false; // Just a flag to let the Plot class find out if\n    // we are a textscale or not. This is a cludge since\n    // this information is available in Graph::axtype but\n    // we don't have access to the graph object in the Plots\n    // stroke method. So we let graph store the status here\n    // when the linear scale is created. A real cludge...\n    public $type; // is this x or y scale ?\n    public $ticks=null; // Store ticks\n    public $text_scale_off = 0;\n    public $scale_abs=array(0,0);\n    public $scale_factor; // Scale factor between world and screen\n    public $off; // Offset between image edge and plot area\n    public $scale=array(0,0);\n    public $name = 'lin';\n    public $auto_ticks=false; // When using manual scale should the ticks be automatically set?\n    public $world_abs_size; // Plot area size in pixels (Needed public in jpgraph_radar.php)\n    public $intscale=false; // Restrict autoscale to integers\n    protected $autoscale_min=false; // Forced minimum value, auto determine max\n    protected $autoscale_max=false; // Forced maximum value, auto determine min\n    private $gracetop=0,$gracebottom=0;\n\n    private $_world_size; // Plot area size in world coordinates\n\n    function __construct($aMin=0,$aMax=0,$aType='y') {\n        assert($aType=='x' || $aType=='y' );\n        assert($aMin<=$aMax);\n\n        $this->type=$aType;\n        $this->scale=array($aMin,$aMax);\n        $this->world_size=$aMax-$aMin;\n        $this->ticks = new LinearTicks();\n    }\n\n    // Check if scale is set or if we should autoscale\n    // We should do this is either scale or ticks has not been set\n    function IsSpecified() {\n        if( $this->GetMinVal()==$this->GetMaxVal() ) {  // Scale not set\n            return false;\n        }\n        return true;\n    }\n\n    // Set the minimum data value when the autoscaling is used.\n    // Usefull if you want a fix minimum (like 0) but have an\n    // automatic maximum\n    function SetAutoMin($aMin) {\n        $this->autoscale_min=$aMin;\n    }\n\n    // Set the minimum data value when the autoscaling is used.\n    // Usefull if you want a fix minimum (like 0) but have an\n    // automatic maximum\n    function SetAutoMax($aMax) {\n        $this->autoscale_max=$aMax;\n    }\n\n    // If the user manually specifies a scale should the ticks\n    // still be set automatically?\n    function SetAutoTicks($aFlag=true) {\n        $this->auto_ticks = $aFlag;\n    }\n\n    // Specify scale \"grace\" value (top and bottom)\n    function SetGrace($aGraceTop,$aGraceBottom=0) {\n        if( $aGraceTop<0 || $aGraceBottom < 0  ) {\n            JpGraphError::RaiseL(25069);//(\" Grace must be larger then 0\");\n        }\n        $this->gracetop=$aGraceTop;\n        $this->gracebottom=$aGraceBottom;\n    }\n\n    // Get the minimum value in the scale\n    function GetMinVal() {\n        return $this->scale[0];\n    }\n\n    // get maximum value for scale\n    function GetMaxVal() {\n        return $this->scale[1];\n    }\n\n    // Specify a new min/max value for sclae\n    function Update($aImg,$aMin,$aMax) {\n        $this->scale=array($aMin,$aMax);\n        $this->world_size=$aMax-$aMin;\n        $this->InitConstants($aImg);\n    }\n\n    // Translate between world and screen\n    function Translate($aCoord) {\n        if( !is_numeric($aCoord) ) {\n            if( $aCoord != '' && $aCoord != '-' && $aCoord != 'x' ) {\n                JpGraphError::RaiseL(25070);//('Your data contains non-numeric values.');\n            }\n            return 0;\n        }\n        else {\n            return round($this->off+($aCoord - $this->scale[0]) * $this->scale_factor);\n        }\n    }\n\n    // Relative translate (don't include offset) usefull when we just want\n    // to know the relative position (in pixels) on the axis\n    function RelTranslate($aCoord) {\n        if( !is_numeric($aCoord) ) {\n            if( $aCoord != '' && $aCoord != '-' && $aCoord != 'x'  ) {\n                JpGraphError::RaiseL(25070);//('Your data contains non-numeric values.');\n            }\n            return 0;\n        }\n        else {\n            return ($aCoord - $this->scale[0]) * $this->scale_factor;\n        }\n    }\n\n    // Restrict autoscaling to only use integers\n    function SetIntScale($aIntScale=true) {\n        $this->intscale=$aIntScale;\n    }\n\n    // Calculate an integer autoscale\n    function IntAutoScale($img,$min,$max,$maxsteps,$majend=true) {\n        // Make sure limits are integers\n        $min=floor($min);\n        $max=ceil($max);\n        if( abs($min-$max)==0 ) {\n            --$min; ++$max;\n        }\n        $maxsteps = floor($maxsteps);\n\n        $gracetop=round(($this->gracetop/100.0)*abs($max-$min));\n        $gracebottom=round(($this->gracebottom/100.0)*abs($max-$min));\n        if( is_numeric($this->autoscale_min) ) {\n            $min = ceil($this->autoscale_min);\n            if( $min >= $max ) {\n                JpGraphError::RaiseL(25071);//('You have specified a min value with SetAutoMin() which is larger than the maximum value used for the scale. This is not possible.');\n            }\n        }\n\n        if( is_numeric($this->autoscale_max) ) {\n            $max = ceil($this->autoscale_max);\n            if( $min >= $max ) {\n                JpGraphError::RaiseL(25072);//('You have specified a max value with SetAutoMax() which is smaller than the miminum value used for the scale. This is not possible.');\n            }\n        }\n\n        if( abs($min-$max ) == 0 ) {\n            ++$max;\n            --$min;\n        }\n\n        $min -= $gracebottom;\n        $max += $gracetop;\n\n        // First get tickmarks as multiples of 1, 10, ...\n        if( $majend ) {\n            list($num1steps,$adj1min,$adj1max,$maj1step) = $this->IntCalcTicks($maxsteps,$min,$max,1);\n        }\n        else {\n            $adj1min = $min;\n            $adj1max = $max;\n            list($num1steps,$maj1step) = $this->IntCalcTicksFreeze($maxsteps,$min,$max,1);\n        }\n\n        if( abs($min-$max) > 2 ) {\n            // Then get tick marks as 2:s 2, 20, ...\n            if( $majend ) {\n                list($num2steps,$adj2min,$adj2max,$maj2step) = $this->IntCalcTicks($maxsteps,$min,$max,5);\n            }\n            else {\n                $adj2min = $min;\n                $adj2max = $max;\n                list($num2steps,$maj2step) = $this->IntCalcTicksFreeze($maxsteps,$min,$max,5);\n            }\n        }\n        else {\n            $num2steps = 10000; // Dummy high value so we don't choose this\n        }\n\n        if( abs($min-$max) > 5 ) {\n            // Then get tickmarks as 5:s 5, 50, 500, ...\n            if( $majend ) {\n                list($num5steps,$adj5min,$adj5max,$maj5step) = $this->IntCalcTicks($maxsteps,$min,$max,2);\n            }\n            else {\n                $adj5min = $min;\n                $adj5max = $max;\n                list($num5steps,$maj5step) = $this->IntCalcTicksFreeze($maxsteps,$min,$max,2);\n            }\n        }\n        else {\n            $num5steps = 10000; // Dummy high value so we don't choose this\n        }\n\n        // Check to see whichof 1:s, 2:s or 5:s fit better with\n        // the requested number of major ticks\n        $match1=abs($num1steps-$maxsteps);\n        $match2=abs($num2steps-$maxsteps);\n        if( !empty($maj5step) && $maj5step > 1 ) {\n            $match5=abs($num5steps-$maxsteps);\n        }\n        else {\n            $match5=10000;  // Dummy high value\n        }\n\n        // Compare these three values and see which is the closest match\n        // We use a 0.6 weight to gravitate towards multiple of 5:s\n        if( $match1 < $match2 ) {\n            if( $match1 < $match5 ) $r=1;\n            else  $r=3;\n        }\n        else {\n            if( $match2 < $match5 ) $r=2;\n            else $r=3;\n        }\n        // Minsteps are always the same as maxsteps for integer scale\n        switch( $r ) {\n            case 1:\n                $this->ticks->Set($maj1step,$maj1step);\n                $this->Update($img,$adj1min,$adj1max);\n                break;\n            case 2:\n                $this->ticks->Set($maj2step,$maj2step);\n                $this->Update($img,$adj2min,$adj2max);\n                break;\n            case 3:\n                $this->ticks->Set($maj5step,$maj5step);\n                $this->Update($img,$adj5min,$adj5max);\n                break;\n            default:\n                JpGraphError::RaiseL(25073,$r);//('Internal error. Integer scale algorithm comparison out of bound (r=$r)');\n        }\n    }\n\n\n    // Calculate autoscale. Used if user hasn't given a scale and ticks\n    // $maxsteps is the maximum number of major tickmarks allowed.\n    function AutoScale($img,$min,$max,$maxsteps,$majend=true) {\n\n        if( !is_numeric($min) || !is_numeric($max) ) {\n            JpGraphError::Raise(25044);\n        }\n\n        if( $this->intscale ) {\n            $this->IntAutoScale($img,$min,$max,$maxsteps,$majend);\n            return;\n        }\n        if( abs($min-$max) < 0.00001 ) {\n            // We need some difference to be able to autoscale\n            // make it 5% above and 5% below value\n            if( $min==0 && $max==0 ) {  // Special case\n                $min=-1; $max=1;\n            }\n            else {\n                $delta = (abs($max)+abs($min))*0.005;\n                $min -= $delta;\n                $max += $delta;\n            }\n        }\n\n        $gracetop=($this->gracetop/100.0)*abs($max-$min);\n        $gracebottom=($this->gracebottom/100.0)*abs($max-$min);\n        if( is_numeric($this->autoscale_min) ) {\n            $min = $this->autoscale_min;\n            if( $min >= $max ) {\n                JpGraphError::RaiseL(25071);//('You have specified a min value with SetAutoMin() which is larger than the maximum value used for the scale. This is not possible.');\n            }\n            if( abs($min-$max ) < 0.001 ) {\n                $max *= 1.2;\n            }\n        }\n\n        if( is_numeric($this->autoscale_max) ) {\n            $max = $this->autoscale_max;\n            if( $min >= $max ) {\n                JpGraphError::RaiseL(25072);//('You have specified a max value with SetAutoMax() which is smaller than the miminum value used for the scale. This is not possible.');\n            }\n            if( abs($min-$max ) < 0.001 ) {\n                $min *= 0.8;\n            }\n        }\n\n        $min -= $gracebottom;\n        $max += $gracetop;\n\n        // First get tickmarks as multiples of 0.1, 1, 10, ...\n        if( $majend ) {\n            list($num1steps,$adj1min,$adj1max,$min1step,$maj1step) = $this->CalcTicks($maxsteps,$min,$max,1,2);\n        }\n        else {\n            $adj1min=$min;\n            $adj1max=$max;\n            list($num1steps,$min1step,$maj1step) = $this->CalcTicksFreeze($maxsteps,$min,$max,1,2,false);\n        }\n\n        // Then get tick marks as 2:s 0.2, 2, 20, ...\n        if( $majend ) {\n            list($num2steps,$adj2min,$adj2max,$min2step,$maj2step) = $this->CalcTicks($maxsteps,$min,$max,5,2);\n        }\n        else {\n            $adj2min=$min;\n            $adj2max=$max;\n            list($num2steps,$min2step,$maj2step) = $this->CalcTicksFreeze($maxsteps,$min,$max,5,2,false);\n        }\n\n        // Then get tickmarks as 5:s 0.05, 0.5, 5, 50, ...\n        if( $majend ) {\n            list($num5steps,$adj5min,$adj5max,$min5step,$maj5step) = $this->CalcTicks($maxsteps,$min,$max,2,5);\n        }\n        else {\n            $adj5min=$min;\n            $adj5max=$max;\n            list($num5steps,$min5step,$maj5step) = $this->CalcTicksFreeze($maxsteps,$min,$max,2,5,false);\n        }\n\n        // Check to see whichof 1:s, 2:s or 5:s fit better with\n        // the requested number of major ticks\n        $match1=abs($num1steps-$maxsteps);\n        $match2=abs($num2steps-$maxsteps);\n        $match5=abs($num5steps-$maxsteps);\n\n        // Compare these three values and see which is the closest match\n        // We use a 0.8 weight to gravitate towards multiple of 5:s\n        $r=$this->MatchMin3($match1,$match2,$match5,0.8);\n        switch( $r ) {\n            case 1:\n                $this->Update($img,$adj1min,$adj1max);\n                $this->ticks->Set($maj1step,$min1step);\n                break;\n            case 2:\n                $this->Update($img,$adj2min,$adj2max);\n                $this->ticks->Set($maj2step,$min2step);\n                break;\n            case 3:\n                $this->Update($img,$adj5min,$adj5max);\n                $this->ticks->Set($maj5step,$min5step);\n                break;\n        }\n    }\n\n    //---------------\n    // PRIVATE METHODS\n\n    // This method recalculates all constants that are depending on the\n    // margins in the image. If the margins in the image are changed\n    // this method should be called for every scale that is registred with\n    // that image. Should really be installed as an observer of that image.\n    function InitConstants($img) {\n        if( $this->type=='x' ) {\n            $this->world_abs_size=$img->width - $img->left_margin - $img->right_margin;\n            $this->off=$img->left_margin;\n            $this->scale_factor = 0;\n            if( $this->world_size > 0 ) {\n                $this->scale_factor=$this->world_abs_size/($this->world_size*0.999999);\n            }\n        }\n        else { // y scale\n            $this->world_abs_size=$img->height - $img->top_margin - $img->bottom_margin;\n            $this->off=$img->top_margin+$this->world_abs_size;\n            $this->scale_factor = 0;\n            if( $this->world_size > 0 ) {\n                $this->scale_factor=-$this->world_abs_size/($this->world_size*0.999999);\n            }\n        }\n        $size = $this->world_size * $this->scale_factor;\n        $this->scale_abs=array($this->off,$this->off + $size);\n    }\n\n    // Initialize the conversion constants for this scale\n    // This tries to pre-calculate as much as possible to speed up the\n    // actual conversion (with Translate()) later on\n    // $start =scale start in absolute pixels (for x-scale this is an y-position\n    //     and for an y-scale this is an x-position\n    // $len   =absolute length in pixels of scale\n    function SetConstants($aStart,$aLen) {\n        $this->world_abs_size=$aLen;\n        $this->off=$aStart;\n\n        if( $this->world_size<=0 ) {\n            // This should never ever happen !!\n            JpGraphError::RaiseL(25074);\n            //(\"You have unfortunately stumbled upon a bug in JpGraph. It seems like the scale range is \".$this->world_size.\" [for \".$this->type.\" scale] <br> Please report Bug #01 to info@jpgraph.net and include the script that gave this error. This problem could potentially be caused by trying to use \\\"illegal\\\" values in the input data arrays (like trying to send in strings or only NULL values) which causes the autoscaling to fail.\");\n        }\n\n        // scale_factor = number of pixels per world unit\n        $this->scale_factor=$this->world_abs_size/($this->world_size*1.0);\n\n        // scale_abs = start and end points of scale in absolute pixels\n        $this->scale_abs=array($this->off,$this->off+$this->world_size*$this->scale_factor);\n    }\n\n\n    // Calculate number of ticks steps with a specific division\n    // $a is the divisor of 10**x to generate the first maj tick intervall\n    // $a=1, $b=2 give major ticks with multiple of 10, ...,0.1,1,10,...\n    // $a=5, $b=2 give major ticks with multiple of 2:s ...,0.2,2,20,...\n    // $a=2, $b=5 give major ticks with multiple of 5:s ...,0.5,5,50,...\n    // We return a vector of\n    //  [$numsteps,$adjmin,$adjmax,$minstep,$majstep]\n    // If $majend==true then the first and last marks on the axis will be major\n    // labeled tick marks otherwise it will be adjusted to the closest min tick mark\n    function CalcTicks($maxsteps,$min,$max,$a,$b,$majend=true) {\n        $diff=$max-$min;\n        if( $diff==0 ) {\n            $ld=0;\n        }\n        else {\n            $ld=floor(log10($diff));\n        }\n\n        // Gravitate min towards zero if we are close\n        if( $min>0 && $min < pow(10,$ld) ) $min=0;\n\n        //$majstep=pow(10,$ld-1)/$a;\n        $majstep=pow(10,$ld)/$a;\n        $minstep=$majstep/$b;\n\n        $adjmax=ceil($max/$minstep)*$minstep;\n        $adjmin=floor($min/$minstep)*$minstep;\n        $adjdiff = $adjmax-$adjmin;\n        $numsteps=$adjdiff/$majstep;\n\n        while( $numsteps>$maxsteps ) {\n            $majstep=pow(10,$ld)/$a;\n            $numsteps=$adjdiff/$majstep;\n            ++$ld;\n        }\n\n        $minstep=$majstep/$b;\n        $adjmin=floor($min/$minstep)*$minstep;\n        $adjdiff = $adjmax-$adjmin;\n        if( $majend ) {\n            $adjmin = floor($min/$majstep)*$majstep;\n            $adjdiff = $adjmax-$adjmin;\n            $adjmax = ceil($adjdiff/$majstep)*$majstep+$adjmin;\n        }\n        else {\n            $adjmax=ceil($max/$minstep)*$minstep;\n        }\n\n        return array($numsteps,$adjmin,$adjmax,$minstep,$majstep);\n    }\n\n    function CalcTicksFreeze($maxsteps,$min,$max,$a,$b) {\n        // Same as CalcTicks but don't adjust min/max values\n        $diff=$max-$min;\n        if( $diff==0 ) {\n            $ld=0;\n        }\n        else {\n            $ld=floor(log10($diff));\n        }\n\n        //$majstep=pow(10,$ld-1)/$a;\n        $majstep=pow(10,$ld)/$a;\n        $minstep=$majstep/$b;\n        $numsteps=floor($diff/$majstep);\n\n        while( $numsteps > $maxsteps ) {\n            $majstep=pow(10,$ld)/$a;\n            $numsteps=floor($diff/$majstep);\n            ++$ld;\n        }\n        $minstep=$majstep/$b;\n        return array($numsteps,$minstep,$majstep);\n    }\n\n\n    function IntCalcTicks($maxsteps,$min,$max,$a,$majend=true) {\n        $diff=$max-$min;\n        if( $diff==0 ) {\n            JpGraphError::RaiseL(25075);//('Can\\'t automatically determine ticks since min==max.');\n        }\n        else {\n            $ld=floor(log10($diff));\n        }\n\n        // Gravitate min towards zero if we are close\n        if( $min>0 && $min < pow(10,$ld) ) {\n            $min=0;\n        }\n        if( $ld == 0 ) {\n            $ld=1;\n        }\n        if( $a == 1 ) {\n            $majstep = 1;\n        }\n        else {\n            $majstep=pow(10,$ld)/$a;\n        }\n        $adjmax=ceil($max/$majstep)*$majstep;\n\n        $adjmin=floor($min/$majstep)*$majstep;\n        $adjdiff = $adjmax-$adjmin;\n        $numsteps=$adjdiff/$majstep;\n        while( $numsteps>$maxsteps ) {\n            $majstep=pow(10,$ld)/$a;\n            $numsteps=$adjdiff/$majstep;\n            ++$ld;\n        }\n\n        $adjmin=floor($min/$majstep)*$majstep;\n        $adjdiff = $adjmax-$adjmin;\n        if( $majend ) {\n            $adjmin = floor($min/$majstep)*$majstep;\n            $adjdiff = $adjmax-$adjmin;\n            $adjmax = ceil($adjdiff/$majstep)*$majstep+$adjmin;\n        }\n        else {\n            $adjmax=ceil($max/$majstep)*$majstep;\n        }\n\n        return array($numsteps,$adjmin,$adjmax,$majstep);\n    }\n\n\n    function IntCalcTicksFreeze($maxsteps,$min,$max,$a) {\n        // Same as IntCalcTick but don't change min/max values\n        $diff=$max-$min;\n        if( $diff==0 ) {\n            JpGraphError::RaiseL(25075);//('Can\\'t automatically determine ticks since min==max.');\n        }\n        else {\n            $ld=floor(log10($diff));\n        }\n        if( $ld == 0 ) {\n            $ld=1;\n        }\n        if( $a == 1 ) {\n            $majstep = 1;\n        }\n        else {\n            $majstep=pow(10,$ld)/$a;\n        }\n\n        $numsteps=floor($diff/$majstep);\n        while( $numsteps > $maxsteps ) {\n            $majstep=pow(10,$ld)/$a;\n            $numsteps=floor($diff/$majstep);\n            ++$ld;\n        }\n\n        return array($numsteps,$majstep);\n    }\n\n    // Determine the minimum of three values witha  weight for last value\n    function MatchMin3($a,$b,$c,$weight) {\n        if( $a < $b ) {\n            if( $a < ($c*$weight) ) {\n                return 1; // $a smallest\n            }\n            else {\n                return 3; // $c smallest\n            }\n        }\n        elseif( $b < ($c*$weight) ) {\n            return 2; // $b smallest\n        }\n        return 3; // $c smallest\n    }\n\n    function __get($name) {\n        $variable_name = '_' . $name;\n\n        if (isset($this->$variable_name)) {\n            return $this->$variable_name * SUPERSAMPLING_SCALE;\n        } else {\n            JpGraphError::RaiseL('25132', $name);\n        }\n    }\n\n    function __set($name, $value) {\n        $this->{'_'.$name} = $value;\n    }\n} // Class\n\n\n//===================================================\n// CLASS DisplayValue\n// Description: Used to print data values at data points\n//===================================================\nclass DisplayValue {\n    public $margin=5;\n    public $show=false;\n    public $valign='',$halign='center';\n    public $format='%.1f',$negformat='';\n    private $ff=FF_DEFAULT,$fs=FS_NORMAL,$fsize=8;\n    private $iFormCallback='';\n    private $angle=0;\n    private $color='navy',$negcolor='';\n    private $iHideZero=false;\n    public $txt=null;\n\n    function __construct() {\n                $this->txt = new Text();\n    }\n\n    function Show($aFlag=true) {\n        $this->show=$aFlag;\n    }\n\n    function SetColor($aColor,$aNegcolor='') {\n        $this->color = $aColor;\n        $this->negcolor = $aNegcolor;\n    }\n\n    function SetFont($aFontFamily,$aFontStyle=FS_NORMAL,$aFontSize=8) {\n        $this->ff=$aFontFamily;\n        $this->fs=$aFontStyle;\n        $this->fsize=$aFontSize;\n    }\n\n    function ApplyFont($aImg) {\n        $aImg->SetFont($this->ff,$this->fs,$this->fsize);\n    }\n\n    function SetMargin($aMargin) {\n        $this->margin = $aMargin;\n    }\n\n    function SetAngle($aAngle) {\n        $this->angle = $aAngle;\n    }\n\n    function SetAlign($aHAlign,$aVAlign='') {\n        $this->halign = $aHAlign;\n        $this->valign = $aVAlign;\n    }\n\n    function SetFormat($aFormat,$aNegFormat='') {\n        $this->format= $aFormat;\n        $this->negformat= $aNegFormat;\n    }\n\n    function SetFormatCallback($aFunc) {\n        $this->iFormCallback = $aFunc;\n    }\n\n    function HideZero($aFlag=true) {\n        $this->iHideZero=$aFlag;\n    }\n\n    function Stroke($img,$aVal,$x,$y) {\n\n        if( $this->show )\n        {\n            if( $this->negformat=='' ) {\n                $this->negformat=$this->format;\n            }\n            if( $this->negcolor=='' ) {\n                $this->negcolor=$this->color;\n            }\n\n            if( $aVal===NULL || (is_string($aVal) && ($aVal=='' || $aVal=='-' || $aVal=='x' ) ) ) {\n                return;\n            }\n\n            if( is_numeric($aVal) && $aVal==0 && $this->iHideZero ) {\n                return;\n            }\n\n            // Since the value is used in different cirumstances we need to check what\n            // kind of formatting we shall use. For example, to display values in a line\n            // graph we simply display the formatted value, but in the case where the user\n            // has already specified a text string we don't fo anything.\n            if( $this->iFormCallback != '' ) {\n                $f = $this->iFormCallback;\n                $sval = call_user_func($f,$aVal);\n            }\n            elseif( is_numeric($aVal) ) {\n                if( $aVal >= 0 ) {\n                    $sval=sprintf($this->format,$aVal);\n                }\n                else {\n                    $sval=sprintf($this->negformat,$aVal);\n                }\n            }\n            else {\n                $sval=$aVal;\n            }\n\n            $y = $y-sign($aVal)*$this->margin;\n\n            $this->txt->Set($sval);\n            $this->txt->SetPos($x,$y);\n            $this->txt->SetFont($this->ff,$this->fs,$this->fsize);\n            if( $this->valign == '' ) {\n                if( $aVal >= 0 ) {\n                    $valign = \"bottom\";\n                }\n                else {\n                    $valign = \"top\";\n                }\n            }\n            else {\n                $valign = $this->valign;\n            }\n            $this->txt->Align($this->halign,$valign);\n\n            $this->txt->SetOrientation($this->angle);\n            if( $aVal > 0 ) {\n                $this->txt->SetColor($this->color);\n            }\n            else {\n                $this->txt->SetColor($this->negcolor);\n            }\n            $this->txt->Stroke($img);\n        }\n    }\n}\n\n//===================================================\n// CLASS Plot\n// Description: Abstract base class for all concrete plot classes\n//===================================================\nclass Plot {\n    public $numpoints=0;\n    public $value;\n    public $legend='';\n    public $coords=array();\n    public $color='black';\n    public $hidelegend=false;\n    public $line_weight=1;\n    public $csimtargets=array(),$csimwintargets=array(); // Array of targets for CSIM\n    public $csimareas='';   // Resultant CSIM area tags\n    public $csimalts=null;   // ALT:s for corresponding target\n    public $legendcsimtarget='',$legendcsimwintarget='';\n    public $legendcsimalt='';\n    protected $weight=1;\n    protected $center=false;\n\n    protected $inputValues;\n    protected $isRunningClear = false;\n\n    function __construct($aDatay,$aDatax=false) {\n        $this->numpoints = count($aDatay);\n        if( $this->numpoints==0 ) {\n            JpGraphError::RaiseL(25121);//(\"Empty input data array specified for plot. Must have at least one data point.\");\n        }\n\n        if (!$this->isRunningClear) {\n            $this->inputValues = array();\n            $this->inputValues['aDatay'] = $aDatay;\n            $this->inputValues['aDatax'] = $aDatax;\n        }\n\n        $this->coords[0]=$aDatay;\n        if( is_array($aDatax) ) {\n            $this->coords[1]=$aDatax;\n            $n = count($aDatax);\n            for( $i=0; $i < $n; ++$i ) {\n                if( !is_numeric($aDatax[$i]) ) {\n                    JpGraphError::RaiseL(25070);\n                }\n            }\n        }\n        $this->value = new DisplayValue();\n    }\n\n    // Stroke the plot\n    // \"virtual\" function which must be implemented by\n    // the subclasses\n    function Stroke($aImg,$aXScale,$aYScale) {\n        JpGraphError::RaiseL(25122);//(\"JpGraph: Stroke() must be implemented by concrete subclass to class Plot\");\n    }\n\n    function HideLegend($f=true) {\n        $this->hidelegend = $f;\n    }\n\n    function DoLegend($graph) {\n        if( !$this->hidelegend )\n        $this->Legend($graph);\n    }\n\n    function StrokeDataValue($img,$aVal,$x,$y) {\n        $this->value->Stroke($img,$aVal,$x,$y);\n    }\n\n    // Set href targets for CSIM\n    function SetCSIMTargets($aTargets,$aAlts='',$aWinTargets='') {\n        $this->csimtargets=$aTargets;\n        $this->csimwintargets=$aWinTargets;\n        $this->csimalts=$aAlts;\n    }\n\n    // Get all created areas\n    function GetCSIMareas() {\n        return $this->csimareas;\n    }\n\n    // \"Virtual\" function which gets called before any scale\n    // or axis are stroked used to do any plot specific adjustment\n    function PreStrokeAdjust($aGraph) {\n        if( substr($aGraph->axtype,0,4) == \"text\" && (isset($this->coords[1])) ) {\n            JpGraphError::RaiseL(25123);//(\"JpGraph: You can't use a text X-scale with specified X-coords. Use a \\\"int\\\" or \\\"lin\\\" scale instead.\");\n        }\n        return true;\n    }\n\n    // Virtual function to the the concrete plot class to make any changes to the graph\n    // and scale before the stroke process begins\n    function PreScaleSetup($aGraph) {\n        // Empty\n    }\n\n    // Get minimum values in plot\n    function Min() {\n        if( isset($this->coords[1]) ) {\n            $x=$this->coords[1];\n        }\n        else {\n            $x='';\n        }\n        if( $x != '' && count($x) > 0 ) {\n            $xm=min($x);\n        }\n        else {\n            $xm=0;\n        }\n        $y=$this->coords[0];\n        $cnt = count($y);\n        if( $cnt > 0 ) {\n            $i=0;\n            while( $i<$cnt && !is_numeric($ym=$y[$i]) ) {\n                $i++;\n            }\n            while( $i < $cnt) {\n                if( is_numeric($y[$i]) ) {\n                    $ym=min($ym,$y[$i]);\n                }\n                ++$i;\n            }\n        }\n        else {\n            $ym='';\n        }\n        return array($xm,$ym);\n    }\n\n    // Get maximum value in plot\n    function Max() {\n        if( isset($this->coords[1]) ) {\n            $x=$this->coords[1];\n        }\n        else {\n            $x='';\n        }\n\n        if( $x!='' && count($x) > 0 ) {\n            $xm=max($x);\n        }\n        else {\n            $xm = $this->numpoints-1;\n        }\n        $y=$this->coords[0];\n        if( count($y) > 0 ) {\n            $cnt = count($y);\n            $i=0;\n            while( $i<$cnt && !is_numeric($ym=$y[$i]) ) {\n                $i++;\n            }\n            while( $i < $cnt ) {\n                if( is_numeric($y[$i]) ) {\n                    $ym=max($ym,$y[$i]);\n                }\n                ++$i;\n            }\n        }\n        else {\n            $ym='';\n        }\n        return array($xm,$ym);\n    }\n\n    function SetColor($aColor) {\n        $this->color=$aColor;\n    }\n\n    function SetLegend($aLegend,$aCSIM='',$aCSIMAlt='',$aCSIMWinTarget='') {\n        $this->legend = $aLegend;\n        $this->legendcsimtarget = $aCSIM;\n        $this->legendcsimwintarget = $aCSIMWinTarget;\n        $this->legendcsimalt = $aCSIMAlt;\n    }\n\n    function SetWeight($aWeight) {\n        $this->weight=$aWeight;\n    }\n\n    function SetLineWeight($aWeight=1) {\n        $this->line_weight=$aWeight;\n    }\n\n    function SetCenter($aCenter=true) {\n        $this->center = $aCenter;\n    }\n\n    // This method gets called by Graph class to plot anything that should go\n    // into the margin after the margin color has been set.\n    function StrokeMargin($aImg) {\n        return true;\n    }\n\n    // Framework function the chance for each plot class to set a legend\n    function Legend($aGraph) {\n        if( $this->legend != '' ) {\n            $aGraph->legend->Add($this->legend,$this->color,'',0,$this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);\n        }\n    }\n\n    function Clear() {\n        $this->isRunningClear = true;\n        Plot::__construct($this->inputValues['aDatay'], $this->inputValues['aDatax']);\n        $this->isRunningClear = false;\n    }\n\n} // Class\n\n\n// Provide a deterministic list of new colors whenever the getColor() method\n// is called. Used to automatically set colors of plots.\nclass ColorFactory {\n\n    static private $iIdx = 0;\n    static private $iColorList = array(\n        'black',\n        'blue',\n        'orange',\n        'darkgreen',\n        'red',\n        'AntiqueWhite3',\n        'aquamarine3',\n        'azure4',\n        'brown',\n        'cadetblue3',\n        'chartreuse4',\n        'chocolate',\n        'darkblue',\n        'darkgoldenrod3',\n        'darkorchid3',\n        'darksalmon',\n        'darkseagreen4',\n        'deepskyblue2',\n        'dodgerblue4',\n        'gold3',\n        'hotpink',\n        'lawngreen',\n        'lightcoral',\n        'lightpink3',\n        'lightseagreen',\n        'lightslateblue',\n        'mediumpurple',\n        'olivedrab',\n        'orangered1',\n        'peru',\n        'slategray',\n        'yellow4',\n        'springgreen2');\n    static private $iNum = 33;\n\n    static function getColor() {\n        if( ColorFactory::$iIdx >= ColorFactory::$iNum )\n            ColorFactory::$iIdx = 0;\n        return ColorFactory::$iColorList[ColorFactory::$iIdx++];\n    }\n\n}\n\n// <EOF>\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_antispam-digits.php",
    "content": "<?php\n//=======================================================================\n// File:        JPGRAPH_ANTISPAM.PHP\n// Description: Genarate anti-spam challenge\n// Created:     2004-10-07\n// Ver:         $Id: jpgraph_antispam-digits.php 1930 2010-01-22 20:19:27Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\nclass HandDigits {\n    public $digits = array();\n    public $iHeight=30, $iWidth=30;\n\n    function __construct() {\n        //==========================================================\n        // d6-small.jpg\n        //==========================================================\n        $this->digits['6'][0]= 645 ;\n        $this->digits['6'][1]=\n     '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n     'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n     'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAEBAAMBAAAAAAAAAAAAAAAABgMEBwX/xAAvEAABAwMC'.\n     'BAQEBwAAAAAAAAABAgMEAAURBiESIjFRBxMUQRUWMmFTYnGRkrHC/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFhEBAQEAAAAA'.\n     'AAAAAAAAAAAAAAER/9oADAMBAAIRAxEAPwDslwiR3oDku8ONttsAvDiVyMcO/ET7ke5/aoOz6k1Vr5htNjW7a7M1yO3NTQU9JUDu'.\n     'GgrlSn8xyf6p4gXaHJvNps9/mKZtSkGdMjRwpfqAFBLLACRlZUrJONsI2717No1lbZ10kx7XGnRpKWQ/6GVGMfzEJ5VFIVtsOH6e'.\n     'wyKVhYsia0y22pLThSkJK1uniVgdThOM0ol+StIUhpopIyCFq3H8aUVCwnG3PGe4Rp6fLXJtMdyM0ojcIWvIz3HFnAPfrWTXb6GN'.\n     'WaLXDwZjVz8pKEfhuIUFg/bAz9sVJ61nt61mxJFslLtq7e5yPqiBT4UDklKw4MDpt+u+9bFiu9riXNu83R+fcr6tohuQ5HQhmK37'.\n     'paaC8DruScmg6X8KkjZEhbaB9KEyFYSOw26Uqd+e7Qerl5z74DY/1SomP//Z' ; \n\n        //==========================================================\n        // d2-small.jpg\n        //==========================================================\n        $this->digits['2'][0]= 606 ;\n        $this->digits['2'][1]=\n     '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n     'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n     'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEQMBIgACEQEDEQH/xAAYAAEBAQEBAAAAAAAAAAAAAAAFAAQHAv/EACsQAAEDBAEC'.\n     'BAYDAAAAAAAAAAIBAwQABQYRIRIxQVFhcQcTFSJSU5GU0f/EABcBAAMBAAAAAAAAAAAAAAAAAAECAwT/xAAZEQACAwEAAAAAAAAA'.\n     'AAAAAAAAARESUUH/2gAMAwEAAhEDEQA/AOqXm/Q8dxmOL4PPSnCSNFixx6nXnkXgRT3Te17JWbGsveueSyLZdbPItNxOKLzTLjou'.\n     'gYCSoSoY8ISKSbFeUrzkdlnTL1YshskiErkQnFEZaF8kkdBBVdjyi6RNL5+9F486eS/ECVkcBtDt1vZcho5viS8ZCp9C9tAIAm/F'.\n     'VoPRU+HRtJ5JVRP1kP0PfwP+1VKrHBMliXG4Nw8VgE4xGkuqk2S1wTUNEVdIvgpL9iL6KtNxY7WOwo9tt0RCitj0sR2uCbFPPzH1'.\n     '7+6rRuSRcljMBMsUy2tky045KOawZk5xtEFBJEROO3hx61kh2rPCIX3MhsyC4QmfTbC6lH8dq5212qwkiG5H6Y/9R2qm+ofxqqsL'.\n     'DLZ6f//Z' ; \n\n        //==========================================================\n        // d9-small.jpg\n        //==========================================================\n        $this->digits['9'][0]= 680 ;\n        $this->digits['9'][1]=\n     '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n     'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n     'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABAUGBwP/xAArEAABAwMD'.\n     'AgYBBQAAAAAAAAABAgMEBQYRABIhE1EUIjEzQUIHMlJhcdH/xAAWAQEBAQAAAAAAAAAAAAAAAAACAQD/xAAYEQEAAwEAAAAAAAAA'.\n     'AAAAAAAAAREhQf/aAAwDAQACEQMRAD8AkK7brF6X7XpMeGoKhFMLEeT4ZUheEhanF4OcZ2pTgDykk92bZpdCsi7aezLjxkIPUZiV'.\n     'RSCy8hah7EkZ27yM7V+iscal5bE22Lon1qNDmSKROd8Sl+Ix1lMOlIS4HGgQpbStoUCnlJz8HmsXtW3Lst2rmBAelLMRRekOwnYz'.\n     'Edls9QKKnOVLyk7UgcbzzrdBthqEJJwZbAI4x1U/7o1TaFa9lG36aXaZTy54VrcXUgrzsGdx+T30aNydweqVw1GS87T6Lb86Q4ha'.\n     'my/IAYjZBx+snKk99oOQMf1AViE65SY348hzFy6hPKnqtKz7DC1lbqyPrvJKUJ7H+M6Wrt3InP7o1brFNp4bCDGhxGAsqz69VSiQ'.\n     'ORwBxrrQ7itm1ac7Hp0WoGTIc3PSn0pccdcP2WorycfA1RaRHjxosZqOyhtDTSAhCf2gDAGjVHTd9sKSCumynFEZK1tIJUe58/ro'.\n     '1V1//9k=' ; \n\n        //==========================================================\n        // d5-small.jpg\n        //==========================================================\n        $this->digits['5'][0]= 632 ;\n        $this->digits['5'][1]=\n     '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n     'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n     'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABgIFBwT/xAAoEAABAwME'.\n     'AQQCAwAAAAAAAAABAgMEBQYRABIhIkEUMVFhBxNCgaH/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAv/EABcRAQEBAQAAAAAAAAAAAAAA'.\n     'AAABEUH/2gAMAwEAAhEDEQA/ANGvW4YVOeiRX5b4mv5Sin05IdlupPKdo/j2SO3+6TbPNQvOsTVz33KRT4csR3YUF7Dsh5OSFvug'.\n     'kqG4FPBxnjxpvvi4KZb1pTpU+QwxUi2Y7ZIAefUk5ATxnB9/gbtL/wCH1UpuhPUlZlMVaQ0mS8zJjqZOPfc2TwpIUonI9tw40R1r'.\n     'WNGq/wBdJR1XT3lqHBUnGCfkfWjRWs1ve249erQqQYjOtN1FqPUpCXQ4WIzQSsJwT0UpRwQPG0nzqyuNHobjsl9kBuWqoOoXtT1/'.\n     'WppZcA8lKRj64HxqU+3KpAr6plElRVKef3S4E0K9O8pLXVzKcqSsJAB9wSAca6bSoNXeuA1+5pEV+SGFNU1iKVFqI0Vdx2AJUeoz'.\n     '8DGlTDwG3CAf3q/pI0ah6MDhLz6U+EpXwPoaNMU//9k=' ; \n\n        //==========================================================\n        // d1-small.jpg\n        //==========================================================\n        $this->digits['1'][0]= 646 ;\n        $this->digits['1'][1]=\n     '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n     'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n     'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEwMBIgACEQEDEQH/xAAZAAADAAMAAAAAAAAAAAAAAAAABQYCBAf/xAApEAACAQMD'.\n     'AwQBBQAAAAAAAAABAgMEBREABiESMUEHEyJRkSNCYXGB/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFxEBAQEBAAAAAAAAAAAA'.\n     'AAAAAAEREv/aAAwDAQACEQMRAD8A6jdd4WLbstILnc4Uq0VoWpkJknb6IjXLHJUePOlez923fcW4r1SxWlqC2UbdKirQif3Xw3yA'.\n     'OFAGT09/kO3OmV3a20MFRf6lIYPcpy7yRRAzgxjIy2M8YwcdiBzpX6d22VNvUlTXsFkuwkrKqNSfnK7F8OTzwrAY+l5zoxKskudN'.\n     'EgQPUT9PBkWF3DH+1GPxo1mLnRoAqF2VRgGOFmX/AAgY/GjRUP6hVMFv2FuFqUvUGrpDFJMBnpdyF5bsAQew7Hxzp6LZNT0yQ1DI'.\n     'wp0QCFBhD0jCsfLZHxbx5xxpTuvb1+v9PV7Ztk9roLPLCjmSSN3mX5ZwqjCgZX7PfWxDQb2in96pv9qq46aTE0bW4x9ceAWAYPwS'.\n     'PsYzoixgmheBGjIVcYCnjp/jHjHbRpe1JLn9OnopE/a0ykvjwDx47aNMXqP/2Q==' ; \n\n        //==========================================================\n        // d8-small.jpg\n        //==========================================================\n        $this->digits['8'][0]= 694 ;\n        $this->digits['8'][1]=\n     '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n     'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n     'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AFQMBIgACEQEDEQH/xAAYAAADAQEAAAAAAAAAAAAAAAAABgcEBf/EACsQAAEDAwMD'.\n     'AwMFAAAAAAAAAAECAwQFBhEAEiEUMVEHE0EVYYEiIzJCsf/EABYBAQEBAAAAAAAAAAAAAAAAAAIAAf/EABcRAQEBAQAAAAAAAAAA'.\n     'AAAAAAABERL/2gAMAwEAAhEDEQA/AKL6gVVUa0i1T5QjvTprUJMlxW4R9zgQXe/AH+kaWrntqlWjaq7gpcmotXAw82ht9yY4tch8'.\n     'uAFC0k7VBXPGMY51ruiaue+bThIj+7NbWqS+7HDxajFf6AlB/k44o8ZOABk4xkL0X0tZiojKrlRuGRJjugqldSlKGf6t7BuUQe3J'.\n     '44xxxrA1a4KVJipLidri8uLHgqOcfjOPxo0o2hdDvS1CmV2Yl6fS5ioipIQR1CAlKkLKR2UUqAI8g6NRSwuuyHab6s1ufLI/Zai7'.\n     'UBJOxhTS0+6B32pWSFH4CidOdWU0ukLiN1BLr0zG5Sdm3GRvcPhIT858DvjXNrVsSLnm/VIdTXS6tTnFsxZTSN3jchaTwps+O/z9'.\n     'tcBVq3hIX0tYqlIiQHdy5CqRHKHXEjAOMgBKjnvyRk4xrQa7OiGt1K5biYZL8SoVEpjOqkFsONtJCNwASeCQrn7aNUKnQYtLp7EC'.\n     'EylmLHQltptPZKQOBo1FzH//2Q==' ; \n\n        //==========================================================\n        // d4-small.jpg\n        //==========================================================\n        $this->digits['4'][0]= 643 ;\n        $this->digits['4'][1]=\n     '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n     'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n     'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAYAAADAQEAAAAAAAAAAAAAAAAABAYHAv/EAC0QAAIBAwQA'.\n     'BAMJAAAAAAAAAAECAwQFEQAGEiETFDFBUmGBByIjUVNxobHR/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAIB/8QAGBEBAAMBAAAAAAAA'.\n     'AAAAAAAAAAERIVH/2gAMAwEAAhEDEQA/ANjM00Nxmt1xiWW31CZp5uJwoAAaOQ/n7qfcZHqO5my3q5XX7R6ijiqnNut9u4NyJ4yv'.\n     'JJyjYr8Xhrn5g599J7x3ulBNU7Zo7dXXXcLQ8kURYi4epYtkALjOePv1nUvbLvV7P3BZm3DR3eh88Kp7pVzBZI6iUhGWRRGWwE44'.\n     'HX3V+uiL1uHgt+vL/H+aNJQ3CSeCOaFqSaJ1DJKs/TqRkMOvQjvRorHE4pRDLNWLGlRHGUeYIORXs9e5B7OP31E0fmdyb/t0DJ4Q'.\n     '27bfx3YZzPUIoAAz7IpOD6cuxq0uNumqLfVNDOqXBoZEjnZcqhIPXH4c46+WkdoWOltu3IDDLLLVVR83UVcuPEmmcZZ2/rHoAANG'.\n     'GI7KIY1ijoLeEQBVCwIoAHpgY6Hy0aZe7mJ2jeHLKcEhusj6aNKgzr//2Q==' ; \n\n        //==========================================================\n        // d7-small.jpg\n        //==========================================================\n        $this->digits['7'][0]= 658 ;\n        $this->digits['7'][1]=\n     '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n     'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n     'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABgEFBwT/xAAuEAABAwIE'.\n     'BAQGAwAAAAAAAAABAgMEBREABiExEhMiQSMyUXEHFBclVJFhk9L/xAAXAQADAQAAAAAAAAAAAAAAAAAAAQID/8QAGREBAQEAAwAA'.\n     'AAAAAAAAAAAAAAEREiFR/9oADAMBAAIRAxEAPwDXq9mCjZeQ05VZ5ZST4bfEpa3VdglCbqUe+g9MZ5Uq7V8415WXoMSdQ6etgSps'.\n     '19wpkCMDZKUpv0FZvbi1NzpYasMDLDUbMVXrtQdbeeU23xLWkj5RlLYK0J7anW9gbAjCzkOtsVSUJUdtc6dVZK51UeaFm4LKbhpC'.\n     'l7EhIFkDW974GbRI2XorUVls1OTdKAOqUpR0Hc3198GITQ6k+hLwrEpoODiDenRfW23bBicg78JXxPpD0mgVOW5PAivNNpahsPW5'.\n     '8xxQaSVkboQnhsnYm5OHqDGp1IpsalMKjMsMIC3+XZKbJFth62/QOEfMOZqZXp9JcKZTcGmTky3meSi7xQklI81vMR+sXIz/AEgp'.\n     'Q0qPNu6ea8Q2jqtbp8+2w9h/OKORc/cpHjt1dDSHOtLZ4ekHW23bBjj+o9H/AB539aP94MG0+L//2Q==' ; \n\n        //==========================================================\n        // d3-small.jpg\n        //==========================================================\n        $this->digits['3'][0]= 662 ;\n        $this->digits['3'][1]=\n     '/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n     'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n     'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABAUGBwL/xAArEAABBAED'.\n     'AwMDBQEAAAAAAAABAgMEBREABhIhMUEiMmETFZEHFkJDUdH/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAL/xAAYEQEBAQEBAAAAAAAA'.\n     'AAAAAAAAEQExQf/aAAwDAQACEQMRAD8A0vclruBdk3VVLLUNssGRJsZSCtqOjlgJAHvcOD6c4HnOdIbcttw1W5P29cFEhuawqTXS'.\n     'VsJjnCMBxKkJJx7goAde+ceJfdNxU0UNlyymyXHi6kxWUNl1S3EnkAEIHX2nv86qtTuZr9Q9+1VhRsOoYpYcgSVyAE/TdewkJxnK'.\n     'sBCjkdPGpnOtFMd3PqsXgfOAgD8Y0aX+11H9rDDjn8lr9yj5J+dGqsqxaw6Cc9cQZU4Sp7zTJsIrKlcUEKwhSin1JABI45GUjqOu'.\n     'lbOvjbc3Ts9ynjGCy445UuFLYRzbWgrT6fhSCQSMDke+pew2zYVly/d7YchNqkMJZnQpgV9J8IzwWFJyUrAJHYgjvpLbu37G5nR7'.\n     'vck5C3YRKYEOEVJZj8kjKypXqWvirjk9h+dB9i4faa89TDZUfKlIyT8k+To10a6KTkpcJ/0vL/7o0TS//9k=' ; \n    }\n}\n\nclass AntiSpam {\n\n    private $iNumber='';\n\n    function __construct($aNumber='') {\n        $this->iNumber = $aNumber;\n    }\n\n    function Rand($aLen) {\n        $d='';\n        for($i=0; $i < $aLen; ++$i) {\n            $d .= rand(1,9);\n        }\n        $this->iNumber = $d;\n        return $d;\n    }\n\n    function Stroke() {\n\n        $n=strlen($this->iNumber);\n        for($i=0; $i < $n; ++$i ) {\n            if( !is_numeric($this->iNumber[$i]) || $this->iNumber[$i]==0 ) {\n                return false;\n            }\n        }\n\n        $dd = new HandDigits();\n        $n = strlen($this->iNumber);\n        $img = @imagecreatetruecolor($n*$dd->iWidth, $dd->iHeight);\n        if( $img < 1 ) {\n            return false;\n        }\n        $start=0;\n        for($i=0; $i < $n; ++$i ) {\n            $size = $dd->digits[$this->iNumber[$i]][0];\n            $dimg = imagecreatefromstring(base64_decode($dd->digits[$this->iNumber[$i]][1]));\n            imagecopy($img,$dimg,$start,0,0,0,imagesx($dimg), $dd->iHeight);\n            $start += imagesx($dimg);\n        }\n        $resimg = @imagecreatetruecolor($start+4, $dd->iHeight+4);\n        if( $resimg < 1 ) {\n            return false;\n        }\n        imagecopy($resimg,$img,2,2,0,0,$start, $dd->iHeight);\n        header(\"Content-type: image/jpeg\");\n        imagejpeg($resimg);\n        return true;\n    }\n}\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_antispam.php",
    "content": "<?php\n//=======================================================================\n// File:        JPGRAPH_ANTISPAM.PHP\n// Description: Genarate anti-spam challenge\n// Created:     2004-10-07\n// Ver:         $Id: jpgraph_antispam.php 1106 2009-02-22 20:16:35Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\nclass HandDigits {\n    public $chars = array();\n    public $iHeight=30, $iWidth=30;\n\n    function __construct() {\n\n        //==========================================================\n        // lj-small.jpg\n        //==========================================================\n        $this->chars['j'][0]= 658 ;\n        $this->chars['j'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABUDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAUGBAf/xAAsEAACAQMDAwMBCQAAAAAAAAAB'.\n'AgMEBREAEjEGIUEUUXGBBxMVIiNSYWKC/8QAFgEBAQEAAAAAAAAAAAAAAAAAAwEC/8QAGhEAAwADAQAAAAAAAAAAAAAAAAECERIh'.\n'Mv/aAAwDAQACEQMRAD8A6veK2st8zRWSyV1dUBfvHaGVI4hknsS7AFv4AyM57ayWbqeS+11xtT2etttwo4YqhEqnQs5bcAfyk4AZ'.\n'SOeD441TKRTyingUBG4/ah8j684+dSFzh/BvtaslejMUu9DPQTDnLx4lQ/ONw1TGBm0jdRWqguEMghEisWilgDmNs4Ze+MEEEH40'.\n'aUVFTa7JeLjRXu4GjhmnNbSfqFQVlA3rkckOjH/Q99Glmkl0C/Q06pvsvT9vttXHDF6T1KrWbs5gRgQJM+FDlQxPhjpF1XcVq+qe'.\n'jEoKiOecXBqh2TDDYIXLKuP6549xk8auI6aJqV45oknWdNswkAIkGMYIxjGO2NR1F0LZY5qkWqkS1xrM0M8lMSJpY+TGrnJiQ577'.\n'cEgeNHhi7D3qC3UN69M8tIakRhgrh9o748+eNGtcCiKjjpkQKlMTEg3ZwoxtHHtgfTRpYXArvp//2Q==' ; \n\n        //==========================================================\n        // lf-small.jpg\n        //==========================================================\n        $this->chars['f'][0]= 633 ;\n        $this->chars['f'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQFBgcC/8QAKxAAAgEDAwMCBQUAAAAAAAAA'.\n'AQIDBBEhAAUGEjFBEyIHFFFhoRUzYnGS/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQP/xAAaEQACAwEBAAAAAAAAAAAAAAAAAQIRMRIh'.\n'/9oADAMBAAIRAxEAPwDcnmLoIkiSYsouC3tA++O2lU9WkqVjJ+YdhZLsQI/4/YfQm50kZP0vbmaCSU0SRNIH6sghb9INs3t38dvp'.\n'akUuz8x5DwdN5peS1jV1dSipSiVUigIcdQjQ26lIB/c6r3F86SZpE/zCFJaqsihQNhRgdj3Jyfxo0jDSbXHt9Oph9RAoV3qJGltY'.\n'HDOxyb/nRpV0D3RXle21m48XraOk3IUSemUaV4g4Zc9ShcDtgff+tQfwvjq34Dtku7buamFqeJKemCCMxKFsEJU+/FrX8d76sEHG'.\n'aNItzr4usVNdG3S0rmRYAVwEUmyjyQLZ11x7aF4zs9DQOyzml29I2cLa/pixIHi99DFCtU9dFuLIaijo9qiYPmR2mZmB9thgAHOD'.\n'4+mjUrURyrUNMZFEkkIOFuFAbsP9d/OjVIQ6Vh4tP//Z' ; \n\n        //==========================================================\n        // lb-small.jpg\n        //==========================================================\n        $this->chars['b'][0]= 645 ;\n        $this->chars['b'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABUDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAYCAwUH/8QAKxAAAQMDAwMDAwUAAAAAAAAA'.\n'AQIDBAAFEQYSIRMxUSJBYQcVI2JxgqHw/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQL/xAAYEQEBAQEBAAAAAAAAAAAAAAAAATERYf/a'.\n'AAwDAQACEQMRAD8A6H95mxNYwLXcX+pCuilSLXJ6YSplaUELjqxwe4IJ5PIPamJ2V0bPcS7+NxCX1cHggAnIP+xSd9RyzHh2m7FQ'.\n'Q1CvMNQWTjCt+HFD+PB/Y1fI1PL1HFFt0zaGblFdJQ9cJjpZiqPJUlBAKnPcEpGB5NNRKdrOl1NlgiQol4R2w4Sc5VtGf7opZteo'.\n'LhdorjUSM5FnQnlR50NeHQysYxtVxlJHIPgjtRRD3xkaghs6juumdHz4+Y7RVPnt59K2mk7W+fcKWsZ7djTXMkW+xMP3GRJjwIEN'.\n'HTG/CWx5wPY8AADx2NYk3SL9wukvUjGobnBkORksIbjdMANozgEqSo8qJPGO/wAVO36IsjUmBIfZfuM7epZk3F9UhSSk5O0K9Kcq'.\n'8AcU3UzFuhUSBFud6nRXoz96mqmJZWg7m2dqUNhWBwdqQSP1UU5c/FFCn//Z' ; \n\n        //==========================================================\n        // d6-small.jpg\n        //==========================================================\n        $this->chars['6'][0]= 645 ;\n        $this->chars['6'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAEBAAMBAAAAAAAAAAAAAAAABgMEBwX/xAAvEAABAwMC'.\n'BAQEBwAAAAAAAAABAgMEAAURBiESIjFRBxMUQRUWMmFTYnGRkrHC/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFhEBAQEAAAAA'.\n'AAAAAAAAAAAAAAER/9oADAMBAAIRAxEAPwDslwiR3oDku8ONttsAvDiVyMcO/ET7ke5/aoOz6k1Vr5htNjW7a7M1yO3NTQU9JUDu'.\n'GgrlSn8xyf6p4gXaHJvNps9/mKZtSkGdMjRwpfqAFBLLACRlZUrJONsI2717No1lbZ10kx7XGnRpKWQ/6GVGMfzEJ5VFIVtsOH6e'.\n'wyKVhYsia0y22pLThSkJK1uniVgdThOM0ol+StIUhpopIyCFq3H8aUVCwnG3PGe4Rp6fLXJtMdyM0ojcIWvIz3HFnAPfrWTXb6GN'.\n'WaLXDwZjVz8pKEfhuIUFg/bAz9sVJ61nt61mxJFslLtq7e5yPqiBT4UDklKw4MDpt+u+9bFiu9riXNu83R+fcr6tohuQ5HQhmK37'.\n'paaC8DruScmg6X8KkjZEhbaB9KEyFYSOw26Uqd+e7Qerl5z74DY/1SomP//Z' ; \n\n        //==========================================================\n        // lx-small.jpg\n        //==========================================================\n        $this->chars['x'][0]= 650 ;\n        $this->chars['x'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABMDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAUHBgj/xAApEAABAwMDAwQCAwAAAAAAAAAB'.\n'AgMEBQYRACFBBxIxFCJRgRNxkcHw/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/xAAWEQEBAQAAAAAAAAAAAAAAAAAAEQH/2gAMAwEA'.\n'AhEDEQA/AH9t3pKvO14UykVARa/HfAlxlDKXR24V2p3z7RlPwdtMep91uWdRGHWELjuTFFtLvcC4SNznnH+21O7ttiodOq1BvC0E'.\n'p9I0lSX2kgqCSklK+5PKCMAng6zV2XRO6u3lSIURtbDRShltlZHa0tW7q/0MeTwnjxq1Jiw2xc9xTLbhSVU5iaXUFfqFFILgJOCd'.\n'9Gt3SXabR6REpkL8yo0RpLCFNx1qBCRjOQMHxo0pEr6o3um2LVYpMEpTVqg25lHn08dfcB9kEgfZ1LIFDuawqZRb7aQlLTzqglsg'.\n'9wQdveOEqBIB425xqhQuk8qo9UKlPrlRblw2ZBeCSVKW6CcoSrI2AGOT41SKzT4dYtmdS5bIXDZhNoWgbZJ94x8AYT/GkM03oNUc'.\n'uKgwqtTZDTMOU0FttqRkoHggnPkEEHRrkJ6t1SlSHYUOc6zHaWrsbQrATk5/vRqK/9k=' ; \n\n        //==========================================================\n        // d2-small.jpg\n        //==========================================================\n        $this->chars['2'][0]= 606 ;\n        $this->chars['2'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEQMBIgACEQEDEQH/xAAYAAEBAQEBAAAAAAAAAAAAAAAFAAQHAv/EACsQAAEDBAEC'.\n'BAYDAAAAAAAAAAIBAwQABQYRIRIxQVFhcQcTFSJSU5GU0f/EABcBAAMBAAAAAAAAAAAAAAAAAAECAwT/xAAZEQACAwEAAAAAAAAA'.\n'AAAAAAAAARESUUH/2gAMAwEAAhEDEQA/AOqXm/Q8dxmOL4PPSnCSNFixx6nXnkXgRT3Te17JWbGsveueSyLZdbPItNxOKLzTLjou'.\n'gYCSoSoY8ISKSbFeUrzkdlnTL1YshskiErkQnFEZaF8kkdBBVdjyi6RNL5+9F486eS/ECVkcBtDt1vZcho5viS8ZCp9C9tAIAm/F'.\n'VoPRU+HRtJ5JVRP1kP0PfwP+1VKrHBMliXG4Nw8VgE4xGkuqk2S1wTUNEVdIvgpL9iL6KtNxY7WOwo9tt0RCitj0sR2uCbFPPzH1'.\n'7+6rRuSRcljMBMsUy2tky045KOawZk5xtEFBJEROO3hx61kh2rPCIX3MhsyC4QmfTbC6lH8dq5212qwkiG5H6Y/9R2qm+ofxqqsL'.\n'DLZ6f//Z' ; \n\n        //==========================================================\n        // lm-small.jpg\n        //==========================================================\n        $this->chars['m'][0]= 649 ;\n        $this->chars['m'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGgAAAgMBAQAAAAAAAAAAAAAAAAcDBAUCBv/EAC0QAAICAQMCBAMJAAAAAAAA'.\n'AAECAwQRAAUSBiETMVFhB2KhFSIyQVJxgZHB/8QAFgEBAQEAAAAAAAAAAAAAAAAAAgED/8QAGREBAQEAAwAAAAAAAAAAAAAAAQAR'.\n'EiEx/9oADAMBAAIRAxEAPwB0MI2lIdgI0Cly3kFXLEn2zx1FDdp7rbpbjUtRWKio3hyxOGQllJzkegX66rQ2qW87Zuk9S5FNVmru'.\n'iywyBhjDKTkeXfSr+GRfYtq2KAO32b1BGxAZu0dyJ2DKPTxY1wPddVszycUq2Golq8jRWbcnJWwCVGMjz+VQP50atxMtm2ZUOY4l'.\n'4qfUnBP0x/Z0amy4jJm10Tt2yddWasFmfaRfdrlG3UcgArnxKzJ+Fu4DqCMkcgNem2DoWav8PLfTm+FPEkuSNTnqueS5bnHIv6CG'.\n'LNjJwM99bm67NB1Ht89KSxNXnr2hNDbiUc47K4KyD2GQMfmMjUnS+7vuIktTqPCaaWCqAMMojPFyw8hyYMQBnAwNJHYGXPTsW9VN'.\n'jg2zf50W9zk524GAEihuz+xbIOD82jW5TkjtRPZkTkJ+4VgDhQfuj/f3OjUxl1f/2Q==' ; \n\n        //==========================================================\n        // lt-small.jpg\n        //==========================================================\n        $this->chars['t'][0]= 648 ;\n        $this->chars['t'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQDBQYH/8QAJxAAAQMDAgYDAQEAAAAAAAAA'.\n'AQIDBAUGEQASEyExQVFhIjJxFSP/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAP/xAAZEQADAQEBAAAAAAAAAAAAAAAAAREhMUH/2gAM'.\n'AwEAAhEDEQA/AO4BLEiEy7uG4IGxxs5IOOx76wd2XYidSp1HoD70240gcNNPbDyI6wQQpaz8E9MczkdhqtbsKYLieDk6WLKmZmmL'.\n'Hk7AHVkbkLI+RQc7uRxgkfr1tx2rGu6VbToLVKkhU+kbugGf9WfaknCk5ycaX0zmaa+3JkqvW/CmzojsB9xoF6OoFK0r6HOcEDI0'.\n'aefTuKX5ScMdC14HYq8n12zo1DEUcKTGg1Z+hyBwoPBVIiA/VQyOIgedhUCB4WMfXSV3UufVLcTUIqVf26K6mXDbPVRRzKT54iMg'.\n'+zjtq6mtsyJjclxpKlUhSXEbkgkqWnBx4+J5e/zU0pZemPvJJQzEPDfQOrwwFY9AZ5eeYPLV6FwhoFYZuigxpkJeIjqAeIoAk9wA'.\n'D46EnuD+6Nc1smDNrTlRkxqtMo1vzKhIdYgU9YDqVpISrLhHxSSd21I0aYyqP//Z' ; \n\n        //==========================================================\n        // li-small.jpg\n        //==========================================================\n        $this->chars['i'][0]= 639 ;\n        $this->chars['i'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABYDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAABwAGBP/EACcQAAEEAQMEAgIDAAAAAAAAAAEC'.\n'AwQRBQAGEiExQVEHExSBFWFx/8QAFgEBAQEAAAAAAAAAAAAAAAAAAgMB/8QAGBEBAQEBAQAAAAAAAAAAAAAAAAECMRH/2gAMAwEA'.\n'AhEDEQA/AE7c+5M9BeRG29t1WUfKFFYW+GvrI7WD3B9g140YD5T36rcErDjbUR6dCBdejsKUpxITXI2FUrooCh70yvxzHyIlMvuK'.\n'eVSH7IKEpJoKqu/ahddLryR/aMiO187bsmrWShhp1AZS2XHHrWhNJrzdf7f7GiVcHk3sptmHkJcJ2DIftS2FrKlJPXudWuLGYeQp'.\n't2fmEIckqIZaaKuSGG0lQ4gduRoFRHQ9AOgs2lOJbk9aSUlpjGvAWeSVH2VKq/2dFPw3IjyJe8s281ct3I9UoHJXGiQkD2STrSZ7'.\n'Yf8AOl7JTdw5eOCz0jw3+LbYCfA9nz71msb8KMxoTGTw+5srjsipAdDqFBQBIuiOl6KrdYyJMyTCshlw2G3Fr/HiNqNNAqJJUoGl'.\n'KND+h47km1bZwsvCbYYjycxIyK1qDv2yEi0hQviK8atKDcy9j//Z' ;\n\n\n        //==========================================================\n        // lp-small.jpg\n        //==========================================================\n        $this->chars['p'][0]= 700 ;\n        $this->chars['p'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGgAAAQUBAAAAAAAAAAAAAAAAAAECBAUGB//EAC8QAAEDAwMCBAMJAAAAAAAA'.\n'AAECAwQFESEABhIiMRMVUWEHFEEWIzIzcYGRocH/xAAWAQEBAQAAAAAAAAAAAAAAAAADAgH/xAAcEQACAgIDAAAAAAAAAAAAAAAA'.\n'AQIxAxESIUH/2gAMAwEAAhEDEQA/AOh703xG21DMeOyqoVNDjSzERiwU6Ep5qtZNycA97HTF13d33KWtmlt9xwkLl1NkXVxIuQgK'.\n'wLj+hqBvel0qmbR8GnR22nJNZiLeeKr8nDIT1OLJucX+uPbWom7iocRpafOac5MX1ALltp/Cbi+cJH++utdh+WVNL3PNdNYpdWgx'.\n'Y0qmLZSrwJJcQoOJ5XKlJFu4HbJOjVbt+V5nu7eopNRivqcdhK+bFnWwA1Y2AOcgjvj9dGlxy0g5y0xd+hNXoG24C4obizq3HZUh'.\n'YHqtRHD06bG/8a0MbbG1mqekxaBSGmgkrcdcitlLfrckZIz7DUatbeFak0tyRLUwzT5vmiGm0cufEkFBJItfkD+59tKmiO12atFa'.\n'eQukO3ejUxgENqTcfnE5WbkHiOnJ76N2IqI1DibabptS+zkZhtp90F2Y0S026EkAFK/qL46cXv65NVZDfxHmVCK4DE2/RX/lRFbA'.\n'C5LwAyq2EtpHZI7mxPYDRqoctdESimz/2Q==' ; \n\n        //==========================================================\n        // le-small.jpg\n        //==========================================================\n        $this->chars['e'][0]= 700 ;\n        $this->chars['e'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABgDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAYEBQcB/8QAKhAAAQMCBAUEAwEAAAAAAAAA'.\n'AgEDBAURAAYSIQciMTJBE0JRYRQVFoH/xAAXAQEBAQEAAAAAAAAAAAAAAAAAAgED/8QAGREAAwEBAQAAAAAAAAAAAAAAAAERAjFB'.\n'/9oADAMBAAIRAxEAPwDTszvhEYCoS80BTm2bCjQRwdAzVe2yopkpJtpRUVfjEIc4V2oMerByg5Ji30oMyS3GeMunK0upfnu09MdJ'.\n'p2scTmWnnGfx6HThktgLfKj7xEOqyr7QBbL41LhBzpxbcOru0LKDLdSnOHoaltNqSC4qWL0x9xbJYum69caczSaHmGmTmpDUYn4l'.\n'UiqjkynzAVtwV23Ud+X4Ibpa2DCPkjhfUaRO/p8yzpb+YHhUmhbev6ZEll1lvqK3jt2XrbBgp6HVwsK3THpfEubGSoOUyFMpbJmL'.\n'Deh6SgOGKti57EuY6l62JMWdJy7k3hg1LkOozEbVm7suQSkTiKtkEfP1pH664Za/QItccgI4bseTHdNxiXHLQ8yVl7V32XyioqL5'.\n'TGc1ng6eYs0idczXUZscBBABWgEhEtfKNuUezwPnBhEuj8X2M21z9BR6NUX211Kk/UKKAjuhkPhL7XVf8vtgw7UPJlEyrDWFSYLb'.\n'LBNF6qrzG6t0spEu6+fpL7YMXhUndp//2Q==' ; \n\n        //==========================================================\n        // la-small.jpg\n        //==========================================================\n        $this->chars['a'][0]= 730 ;\n        $this->chars['a'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABoDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAABgMEBwX/xAAvEAABAwIFAQcCBwAAAAAAAAAB'.\n'AgMEBREAEiExQQYHFBUiUXGBE2EyQkNSgpHh/8QAFwEBAQEBAAAAAAAAAAAAAAAAAAMBAv/EABkRAAMBAQEAAAAAAAAAAAAAAAAB'.\n'IQIRMf/aAAwDAQACEQMRAD8AfdQ1pxjqZMSn0mRUZRYDaklJCE3OawO2ttTxY4hl07qFMVs1Ku02kpPnRGhsAqz8W9T9wDjozq6o'.\n'Q1lDrcZLGVcmUoZg0obpufxK3Ftt9ccqB1GgBcmLSqtVEqOZcr6ARm/kbXHt7DEtc7WTJKTJqEWvRKfLqL9QplSjuPtGVYOJKBrm'.\n't+U+n94WGStZzNypmRWqckUKTbixy6jAfxPxHtCgKqFNlU5huK6pLMndSlegG4J45N8aKmTMKQRBsCNMzwB+RbHWHGEAZlPZX2hx'.\n'qZIC34ygZoYUbB50JSkFXFhZR9BrpheR4fIbQ6gvurJ7q02bIQTuAOAN8x40HAxRr3TrNRpBmSHVt1KMlTyJTCsqkKAPlSf28W+c'.\n'UGaD1c9HSR1HFUh9tJU45EBcAtcC9+P9wqbg8IAto9o81yputrVGpiUkgHKkqUTZI32+cKm1z1tIUgPBBAKQ4UBQH3uL3xmXSXep'.\n'HVDtXStE5K5jlPU7PF3Q41+okJFkjgC+3OuNSYiSzHaLtRcW4UDMpLYSCbakDW3thhum5p//2Q==' ;\n\n        //==========================================================\n        // d9-small.jpg\n        //==========================================================\n        $this->chars['9'][0]= 680 ;\n        $this->chars['9'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABAUGBwP/xAArEAABAwMD'.\n'AgYBBQAAAAAAAAABAgMEBQYRABIhE1EUIjEzQUIHMlJhcdH/xAAWAQEBAQAAAAAAAAAAAAAAAAACAQD/xAAYEQEAAwEAAAAAAAAA'.\n'AAAAAAAAAREhQf/aAAwDAQACEQMRAD8AkK7brF6X7XpMeGoKhFMLEeT4ZUheEhanF4OcZ2pTgDykk92bZpdCsi7aezLjxkIPUZiV'.\n'RSCy8hah7EkZ27yM7V+iscal5bE22Lon1qNDmSKROd8Sl+Ix1lMOlIS4HGgQpbStoUCnlJz8HmsXtW3Lst2rmBAelLMRRekOwnYz'.\n'Edls9QKKnOVLyk7UgcbzzrdBthqEJJwZbAI4x1U/7o1TaFa9lG36aXaZTy54VrcXUgrzsGdx+T30aNydweqVw1GS87T6Lb86Q4ha'.\n'my/IAYjZBx+snKk99oOQMf1AViE65SY348hzFy6hPKnqtKz7DC1lbqyPrvJKUJ7H+M6Wrt3InP7o1brFNp4bCDGhxGAsqz69VSiQ'.\n'ORwBxrrQ7itm1ac7Hp0WoGTIc3PSn0pccdcP2WorycfA1RaRHjxosZqOyhtDTSAhCf2gDAGjVHTd9sKSCumynFEZK1tIJUe58/ro'.\n'1V1//9k=' ; \n\n        //==========================================================\n        // d5-small.jpg\n        //==========================================================\n        $this->chars['5'][0]= 632 ;\n        $this->chars['5'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABgIFBwT/xAAoEAABAwME'.\n'AQQCAwAAAAAAAAABAgMEBQYRABIhIkEUMVFhBxNCgaH/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAv/EABcRAQEBAQAAAAAAAAAAAAAA'.\n'AAABEUH/2gAMAwEAAhEDEQA/ANGvW4YVOeiRX5b4mv5Sin05IdlupPKdo/j2SO3+6TbPNQvOsTVz33KRT4csR3YUF7Dsh5OSFvug'.\n'kqG4FPBxnjxpvvi4KZb1pTpU+QwxUi2Y7ZIAefUk5ATxnB9/gbtL/wCH1UpuhPUlZlMVaQ0mS8zJjqZOPfc2TwpIUonI9tw40R1r'.\n'WNGq/wBdJR1XT3lqHBUnGCfkfWjRWs1ve249erQqQYjOtN1FqPUpCXQ4WIzQSsJwT0UpRwQPG0nzqyuNHobjsl9kBuWqoOoXtT1/'.\n'WppZcA8lKRj64HxqU+3KpAr6plElRVKef3S4E0K9O8pLXVzKcqSsJAB9wSAca6bSoNXeuA1+5pEV+SGFNU1iKVFqI0Vdx2AJUeoz'.\n'8DGlTDwG3CAf3q/pI0ah6MDhLz6U+EpXwPoaNMU//9k=' ; \n\n        //==========================================================\n        // d1-small.jpg\n        //==========================================================\n        $this->chars['1'][0]= 646 ;\n        $this->chars['1'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEwMBIgACEQEDEQH/xAAZAAADAAMAAAAAAAAAAAAAAAAABQYCBAf/xAApEAACAQMD'.\n'AwQBBQAAAAAAAAABAgMEBREABiESMUEHEyJRkSNCYXGB/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFxEBAQEBAAAAAAAAAAAA'.\n'AAAAAAEREv/aAAwDAQACEQMRAD8A6jdd4WLbstILnc4Uq0VoWpkJknb6IjXLHJUePOlez923fcW4r1SxWlqC2UbdKirQif3Xw3yA'.\n'OFAGT09/kO3OmV3a20MFRf6lIYPcpy7yRRAzgxjIy2M8YwcdiBzpX6d22VNvUlTXsFkuwkrKqNSfnK7F8OTzwrAY+l5zoxKskudN'.\n'EgQPUT9PBkWF3DH+1GPxo1mLnRoAqF2VRgGOFmX/AAgY/GjRUP6hVMFv2FuFqUvUGrpDFJMBnpdyF5bsAQew7Hxzp6LZNT0yQ1DI'.\n'wp0QCFBhD0jCsfLZHxbx5xxpTuvb1+v9PV7Ztk9roLPLCjmSSN3mX5ZwqjCgZX7PfWxDQb2in96pv9qq46aTE0bW4x9ceAWAYPwS'.\n'PsYzoixgmheBGjIVcYCnjp/jHjHbRpe1JLn9OnopE/a0ykvjwDx47aNMXqP/2Q==' ; \n\n        //==========================================================\n        // ll-small.jpg\n        //==========================================================\n        $this->chars['l'][0]= 626 ;\n        $this->chars['l'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAYEBQf/xAArEAACAQIFAwIGAwAAAAAAAAAB'.\n'AgMEEQAFBhIhFEFREzEHFSIyYcFxgZH/xAAXAQEAAwAAAAAAAAAAAAAAAAACAAED/8QAGhEAAwEAAwAAAAAAAAAAAAAAAAECMREh'.\n'Qf/aAAwDAQACEQMRAD8A15Zfm1VURj1Fp5AqLKv3OARcL4W5Nzx+MLWjdRz5hqXU6TSb6OCr6WghiQbrJ91gOTy1yT5xZ55myZFk'.\n'Gb5ozX6Ondm28XYqpQDwu7jEH4c5S2UaDy4xxrLmlUDWzk8XaQ3O49hbj+RiB85HNg8Ee3aqwIqhDuux7G/HHbvzgxEqaWOvy09R'.\n'O0o3hjdQoUji20g+fY3wYSM6pJ4Ylr7V+Zz5PSaezHTlTRNWzxySSxt6q1MSkH6AOT2Fu3Aw7RfF/T9DEkLUeawuF2mKSgdWQj2/'.\n'q3+fnDZDlqRZzQGaOGcpTOaeR1u8R+ncN3gj94so2jNWHeMNNKzorEX2qp9v3imNPoRE1zpjUtZ09HJmYq5lury0benZeTww23t3'.\n'Ivgw+T0yRRyyxIqNfkLcA8jt7YMKcBWn/9k=' ;\n\n\n        //==========================================================\n        // ls-small.jpg\n        //==========================================================\n        $this->chars['s'][0]= 701 ;\n        $this->chars['s'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABQDASIAAhEBAxEB/8QAGgAAAgMBAQAAAAAAAAAAAAAAAAMCBAUGB//EACwQAAEEAQIFAgUFAAAAAAAA'.\n'AAECAwQFEQAGEhMUITEiYQcjQVFxFRZCUoH/xAAWAQEBAQAAAAAAAAAAAAAAAAADAgH/xAAZEQADAQEBAAAAAAAAAAAAAAAAAQIR'.\n'EiH/2gAMAwEAAhEDEQA/APWZMhmFXSJU+SGmWFiQtAWMJQAnJUr8Z+w/OuQk71uZnMsqnbjy9s8st9UMCQ6kZJdZaIHEkZ/JHceN'.\n'N3HtizuY1JLrG48yLBSC9UTFKQiY4nACir+wAOOMEe2rm2bTbzlqtE1MyBuZAPybpw85KSfDRJ4Cg+Pl/wC61hJeGjV31VuuKqwr'.\n'LGU+whZZK+Rw+oYJAyj3GjS4dZFpZVkqPLktdfMXNcaU2kBC1BIITkdx6c599GlnvPAa3TL2vNvU76n0063acr3YSLCEjpUpUQtW'.\n'Dhf14SMEnOc57aZ8Tegm7dbrEQGZt1PeTDgc1PEW3FeXAvyAkZVkeMDOm2G3f3O7Cl/qEuqkQg4lp6CRxraWfUlRUD24kZA741Ko'.\n'2k1HvlT3ri2sLOCgtsyJz6XEtBwZPAgJAGQMHUNPWKqWItsqh0UCFVyLeKhyLHQ2TMdHNVj+RKlAnJyfto1FW2ahgjrq6LYTFjjf'.\n'lymUOLdWfJyoHA+gA7AAAaNPE3ysJdLT/9k=' ; \n\n        //==========================================================\n        // lh-small.jpg\n        //==========================================================\n        $this->chars['h'][0]= 677 ;\n        $this->chars['h'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABUDASIAAhEBAxEB/8QAGgAAAQUBAAAAAAAAAAAAAAAAAAIDBAUGB//EACwQAAIBAwMCBQIHAAAAAAAA'.\n'AAECAwQFEQAGEiExExQiQVEVggcyU2GRocH/xAAXAQADAQAAAAAAAAAAAAAAAAAAAwQB/8QAGhEBAQEAAwEAAAAAAAAAAAAAAQAC'.\n'AyEyMf/aAAwDAQACEQMRAD8A6DZb95q9bmpK6ieOCzNHJTxmE+NMhQ5fr1fLq3Ejvkak2e7ipiFsqb3R0m4qkPPJRiRXenU9VjKE'.\n'5JVcA9R7nWc3/BUbfoKTdO3VRXhpjbZ2D8Rwk6RyZH6chB+46m7i2hDYtgA2ePlV2VkuKysoLzzRnlIScZJZeeevvjtrX7LK2rp7'.\n'tTwwJ9WjhILDrTKnIdMEDl2+P80aVdJZb1QW+vgqENLPH4sBCDLIwUgnOf4GjVvDnLgUk79T81voqjb8NnuUx8pVRCiEaYUSuynl'.\n'jHU9mOfnOoOx6hqz8PrbNdfEkMUXg1LSM3rKOUywJ7YAJ1ZTWmSpvdvlaVTDSUzJAhH5ZJBgv0x2RSAPlz21WXqoet3ba9nuW8n4'.\n'Jr6qTPqnUNxSM/f6mPvxA9zqJnExTbR+h0nkhVu1uE8j0UBRQ9PGxBKFjnkAScdsDp10a0lc7z0tI7Y5YYN+5GAf7GjVXF4Icj3f'.\n'/9k=' ; \n\n\n        //==========================================================\n        // ld-small.jpg\n        //==========================================================\n        $this->chars['d'][0]= 681 ;\n        $this->chars['d'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAQFBgH/xAAsEAABAwMEAAQFBQAAAAAAAAAB'.\n'AgMEBQYRABIhMQcTI0EUMlFhkRgicaGx/8QAFgEBAQEAAAAAAAAAAAAAAAAAAgEA/8QAGBEBAQEBAQAAAAAAAAAAAAAAAAECETH/'.\n'2gAMAwEAAhEDEQA/ALUhp6h3W/X63UlypbhCY0WMjLqGzwDtPCfv/WtealNpVInuVBBqCogcdbU36YUkAkJWVHG8YPXBxxzxqPcN'.\n'YtWyWnIlUeW05VEOAvrCnnSkftK1H5lKJPHsMDoDUWq+KdrSbIqsalVsImiEtLUZ2MU71bcYJWkhZ/36ayLHhi/IXZVOmzKqp5uU'.\n'688hTyjuGVEFJKvoQesD86NL2jGZp1EoLDSmk+ZAQ8d7oPzp3YGesFWMfxo1YGvSzLsT9QExVX8phTlMaFOExAJIBGQjJwCcL+/e'.\n'rd+W7GuO0Kw05CQ6+ww69Gfdb2kFIKk7DgEkjgnr86rXRa9HuyP8LV4SH0sIBbWFFDiFEgDaocgdkjo8ccay0qw7ut5nyrcviQqC'.\n'slsRKo0HwlODkBRzxj2AGoXTtpzIdQ8MbffUChz4NCPRaClAo9Mn6c7T3o13wytmo0K05VIqkiPJbizFiMWs4CTgnIIHOST796NL'.\n'Ia1JX//Z' ;\n\n        //==========================================================\n        // d8-small.jpg\n        //==========================================================\n        $this->chars['8'][0]= 694 ;\n        $this->chars['8'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AFQMBIgACEQEDEQH/xAAYAAADAQEAAAAAAAAAAAAAAAAABgcEBf/EACsQAAEDAwMD'.\n'AwMFAAAAAAAAAAECAwQFBhEAEiEUMVEHE0EVYYEiIzJCsf/EABYBAQEBAAAAAAAAAAAAAAAAAAIAAf/EABcRAQEBAQAAAAAAAAAA'.\n'AAAAAAABERL/2gAMAwEAAhEDEQA/AKL6gVVUa0i1T5QjvTprUJMlxW4R9zgQXe/AH+kaWrntqlWjaq7gpcmotXAw82ht9yY4tch8'.\n'uAFC0k7VBXPGMY51ruiaue+bThIj+7NbWqS+7HDxajFf6AlB/k44o8ZOABk4xkL0X0tZiojKrlRuGRJjugqldSlKGf6t7BuUQe3J'.\n'44xxxrA1a4KVJipLidri8uLHgqOcfjOPxo0o2hdDvS1CmV2Yl6fS5ioipIQR1CAlKkLKR2UUqAI8g6NRSwuuyHab6s1ufLI/Zai7'.\n'UBJOxhTS0+6B32pWSFH4CidOdWU0ukLiN1BLr0zG5Sdm3GRvcPhIT858DvjXNrVsSLnm/VIdTXS6tTnFsxZTSN3jchaTwps+O/z9'.\n'tcBVq3hIX0tYqlIiQHdy5CqRHKHXEjAOMgBKjnvyRk4xrQa7OiGt1K5biYZL8SoVEpjOqkFsONtJCNwASeCQrn7aNUKnQYtLp7EC'.\n'EylmLHQltptPZKQOBo1FzH//2Q==' ; \n\n        //==========================================================\n        // lz-small.jpg\n        //==========================================================\n        $this->chars['z'][0]= 690 ;\n        $this->chars['z'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABYDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAABgAHA//EACsQAAEDAwQBAwIHAAAAAAAAAAEC'.\n'AwQFESEABhIxBxMiQVFxCCM0UmGRof/EABYBAQEBAAAAAAAAAAAAAAAAAAECAP/EABgRAAMBAQAAAAAAAAAAAAAAAAABEVEC/9oA'.\n'DAMBAAIRAxEAPwBTWfLu1KXXZDbM4uewNvLajlwhaCbBAwDe5uehYd3xm6t6bi3jvulwqc7KgxXZZeYQLNLeF73WRg4HEdgfzrSa'.\n'P45pNEkznITDc9ypLShtyWhJDJyXC2qxJHZvjoZOjyVv1v8AESt6FFS4ijxvTLbawEApSccrYHJf0+OtJMQ2rNXk7GZMufJgJjTH'.\n'Un9M4qzxT7hyCiThIyRnPXWrRvyLElVBUF6vlhl0lwRYCFKcQhAtyWpVhyWTx+w++rUvp4EWjOvbniUOnVatcS43BYDbJSPZyIBw'.\n'ejclIx+3Wa+J63T6DQanuGszI0eZVJJV60p0Jum5GEi6le7l0PjvSjyRsaTvJqI1BqhhR46ksuMrQVJcUSEoUbHNr/7o7C8L7eiz'.\n'4lLlyJk2cEqW+6V+m0AE9ISLnsj5+O9UhsFK92bZZqb9SRu9p2c4A0OCEqDbYAJSlJwAVZv3fBvbFrg/462btlhuS1RG5nL8pYkq'.\n'KrnsKH06I/rVrQKkf//Z' ;\n\n        //==========================================================\n        // d4-small.jpg\n        //==========================================================\n        $this->chars['4'][0]= 643 ;\n        $this->chars['4'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAYAAADAQEAAAAAAAAAAAAAAAAABAYHAv/EAC0QAAIBAwQA'.\n'BAMJAAAAAAAAAAECAwQFEQAGEiETFDFBUmGBByIjUVNxobHR/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAIB/8QAGBEBAAMBAAAAAAAA'.\n'AAAAAAAAAAERIVH/2gAMAwEAAhEDEQA/ANjM00Nxmt1xiWW31CZp5uJwoAAaOQ/n7qfcZHqO5my3q5XX7R6ijiqnNut9u4NyJ4yv'.\n'JJyjYr8Xhrn5g599J7x3ulBNU7Zo7dXXXcLQ8kURYi4epYtkALjOePv1nUvbLvV7P3BZm3DR3eh88Kp7pVzBZI6iUhGWRRGWwE44'.\n'HX3V+uiL1uHgt+vL/H+aNJQ3CSeCOaFqSaJ1DJKs/TqRkMOvQjvRorHE4pRDLNWLGlRHGUeYIORXs9e5B7OP31E0fmdyb/t0DJ4Q'.\n'27bfx3YZzPUIoAAz7IpOD6cuxq0uNumqLfVNDOqXBoZEjnZcqhIPXH4c46+WkdoWOltu3IDDLLLVVR83UVcuPEmmcZZ2/rHoAANG'.\n'GI7KIY1ijoLeEQBVCwIoAHpgY6Hy0aZe7mJ2jeHLKcEhusj6aNKgzr//2Q==' ; \n\n        //==========================================================\n        // lv-small.jpg\n        //==========================================================\n        $this->chars['v'][0]= 648 ;\n        $this->chars['v'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQDBQYH/8QAKBAAAQQBAwMEAgMAAAAAAAAA'.\n'AQIDBBEFAAYhEzFBEhQiYQdRFTKB/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFxEBAQEBAAAAAAAAAAAAAAAAAAERIf/aAAwD'.\n'AQACEQMRAD8A6Ngt1SZ4yrYgrecgTFsFJA9aGwAUrUaF2D2Avjzq6CIjiBPkB9bwQVIkIYIDae/wq+P9N+dY4SGMf+Txlev7KBmY'.\n'PoadKRy4zxSgRxaTwO/x09u7KPYnasmHjlsyFZZXt4K23ezjvBpNGgLUrvXfVZyLLbWambiwEbKvvxYAkeotNlIJW2FEJWb7WBda'.\n'NSQI0fHYyJjkrjKRDZQwnpQ1vgBIr+w8+a+9GocZr8iKkuY1eXhsKH8U8iZE9BHz6ZHUc48UfSPqzqH3kfeO9kTTDQYGGietpTaO'.\n'shyW6AocpHNIrv8AvWzk9BUSdPdYS4BcRlomkhIV6KP0VE39V+tU2wdlRMHtZUB8NuTQ+51X27+Kr46ZPIAFV540D8zeLsJ5LMHa'.\n'ubmMBCVJdjx0pRyLoWR4I8aNIQ8BvZMNtMTeUcsptKfc4tC1gAkCyFC+K0aJtf/Z' ;\n\n        //==========================================================\n        // lk-small.jpg\n        //==========================================================\n        $this->chars['k'][0]= 680 ;\n        $this->chars['k'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABUDASIAAhEBAxEB/8QAGQAAAwEBAQAAAAAAAAAAAAAAAAUGBAMH/8QALhAAAQMDAwIEBAcAAAAAAAAA'.\n'AQIDBAUREgAGITFBEyIyYQcVUYEUIzNicZHx/8QAFgEBAQEAAAAAAAAAAAAAAAAAAwEE/8QAGxEAAwACAwAAAAAAAAAAAAAAAAEC'.\n'AxESMeH/2gAMAwEAAhEDEQA/APVK/V36dU6NSJDTT8esPLiqfK8S2cCoeTkKvZQ6jm2ldSqKqbu+OgMOvSX3m4UBrLnDlbqiefKl'.\n'Nzz2x1m+IwNP27CkJQ7JkR6rCkMJbP5jp8S2CPfkgD6H+dJ6Ca0nerr+64rTNSqMYrg+C9mmOwhVpDfsuxSbi97DmybaoZeQ5jTl'.\n'PEp18JTIfeW3kq3ly4H26aNZqvTWZsjFcZTsVtSg0G8Rio+vr2vb7g6NLPRnuXy8F+8kl+obUh4KXJdqSJJQnohlkZqJPYBXh3P+'.\n'a4b5Hyp6k1bO7sOotPyXkj9NlwFl0ewstJA9ifrqkVSmET4csoS7UTHXFQ+6SQlskKUMb/tH9ddLVUmS7DqdBqD7U6OsqfS46jzl'.\n'hQ5bXb1K9Scuybdxo2OTu92dwSZkWn0Sb8viQWyn8Qq5D6ifSLd0BIv7q0arTBRSKPToMZbi2GWylsvLK148Wue/XRrRjxOpT2R2'.\n'k9aP/9k=' ; \n\n        //==========================================================\n        // lr-small.jpg\n        //==========================================================\n        $this->chars['r'][0]= 681 ;\n        $this->chars['r'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABYDASIAAhEBAxEB/8QAGgAAAgIDAAAAAAAAAAAAAAAAAAYCBQMEB//EAC4QAAICAQIFAgMJAQAAAAAA'.\n'AAECAwQRBQYAEiExQQdRFGFxEyIyM0JSYoGC8P/EABYBAQEBAAAAAAAAAAAAAAAAAAEAAv/EABcRAQEBAQAAAAAAAAAAAAAAAAAB'.\n'EUH/2gAMAwEAAhEDEQA/AOs0ZdETU54Gt1INSmlPJEsyo7J+jlXPUYBPY9c+eE/dO9tY0a7ren6BVrW7VJTZtW5kZkjXkBSIKveQ'.\n'gHp0AAJ4w+q2hVdT2Md0h46+saS4mr3EUK0gWTAB+vQj2PboeL/ZVOqmhaZVjkFmxdC6tctt3tM2G5/7bAx4C4+qxiWwd3prWzKe'.\n'r3IBAth5OYxozKsgc8y4GTgnJB9uncdTi6tXq2140rRVM13JMEMAVAg7sMdBjJB/18uDgRO9R2Oo6FX2vShkFzURFUq1whIj+8DI'.\n'7EdAFjXv7MeNb0kuStsFEmIaajZaos2fy2Q4VGH7SGxn+Rzw9yMLOm/FzRhZazmOTkP4grYyD3B8j2PTyeFfZ+z7G3BeSS8lmprl'.\n'2K2qcnK0Z5S8gPjrgAY8cNEWmq7u23pEos6/Zji+Kd0rLLGWwseA3joeZj/w4OET1g0vlmrWV+ydFnkUxSgsvM4V+YYIwfHz6cHB'.\n'ZeKZ1//Z' ; \n\n        //==========================================================\n        // lg-small.jpg\n        //==========================================================\n        $this->chars['g'][0]= 655 ;\n        $this->chars['g'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQCBQYH/8QAJxAAAQQBAwQCAgMAAAAAAAAA'.\n'AQIDBBEFAAYhBxIxQRNhcYEiQlH/xAAYAQACAwAAAAAAAAAAAAAAAAACAwABBP/EABkRAAMBAQEAAAAAAAAAAAAAAAABAhEhIv/a'.\n'AAwDAQACEQMRAD8AayO4t6bq3hmMHtxyLi4OKeKH5jyASiiQCCQeTRNAeB61FrBb+jTGpLO+BMW24EFMhkhpQru8m7B/H70x09Yi'.\n'q3nv/vLfwpnJ7UNkqSRbngf2ofWkpXV7brymC2malLfagurjW0aHk89xPJ9cX9aprURHWbYEaMHHEBfwpv8AnXPk+/8AdGqGJOxO'.\n'4YbOSxK4y4boIStUWysgkEmxY54r60aOI8oTV9MHtjJwunPUbO46WWo0HLlD8KY4goboFVoquOVEVwLT963WdnxYfT6ZJyz0JvHm'.\n'KvtaSkW4tYNVSqKiTwB+fw5n9sY/cuOXCzDDcluyW3Ckd7V+0n0eNZTH9DdouFalHIOJBUhtDki0pNV3UALo81ehG6IdKjPZ6d47'.\n'4ywltanVJvuJI+RQs/sHRqy2r003JhsImEc/CUyhxRZBjKV2oJ8eRXNmufPnRo1WIz3DdNn/2Q==' ;\n\n        //==========================================================\n        // lc-small.jpg\n        //==========================================================\n        $this->chars['c'][0]= 629 ;\n        $this->chars['c'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGQAAAwEBAQAAAAAAAAAAAAAAAAUGBwID/8QALRAAAgICAQIEBAYDAAAAAAAA'.\n'AQIDBAURACExBhIiQRMVUWEHMkJScYFykaH/xAAWAQEBAQAAAAAAAAAAAAAAAAABAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAAAATER'.\n'/9oADAMBAAIRAxEAPwDcoGkmiT4Q8kWvzuPU38D2/v8A1zwrCFayq1qTaFk2H7aJHt05MeMvENzC4upDWkjW9kJXiricAJCigvJN'.\n'IB1IVQT5frrv24twPgunk6a288crbklUSJNNdnSTZ2STHHqOP/Eb17njdZtAoqwEvrEiGVyG117/AG6HhyV8H1sljMldoxXTksGC'.\n'zV7M0oaWGQOVeGQ92I6EMR22D11w4LmEPjaOL51iL8ssc9Z69zHtZkYCGGeQK0ez2UEoU39wCeX1S/LLiEt+mPSbMLxsGVv2kEjR'.\n'305xkaEV/GTULMUT1LD/AAGh8gIZS2jv+vpybb8NMIb0dVLWYWgiiU0vmMphOj6V0TvQI3rfsON1E6dYjGtisa0F1mAWR2NhG0WZ'.\n'3Ls3TqNs5Hc9h23w49NWL9K+Q/VD5T/zhwPH/9k=' ; \n\n        //==========================================================\n        // d7-small.jpg\n        //==========================================================\n        $this->chars['7'][0]= 658 ;\n        $this->chars['7'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABgEFBwT/xAAuEAABAwIE'.\n'BAQGAwAAAAAAAAABAgMEBREABiExEhMiQSMyUXEHFBclVJFhk9L/xAAXAQADAQAAAAAAAAAAAAAAAAAAAQID/8QAGREBAQEAAwAA'.\n'AAAAAAAAAAAAAAEREiFR/9oADAMBAAIRAxEAPwDXq9mCjZeQ05VZ5ZST4bfEpa3VdglCbqUe+g9MZ5Uq7V8415WXoMSdQ6etgSps'.\n'19wpkCMDZKUpv0FZvbi1NzpYasMDLDUbMVXrtQdbeeU23xLWkj5RlLYK0J7anW9gbAjCzkOtsVSUJUdtc6dVZK51UeaFm4LKbhpC'.\n'l7EhIFkDW974GbRI2XorUVls1OTdKAOqUpR0Hc3198GITQ6k+hLwrEpoODiDenRfW23bBicg78JXxPpD0mgVOW5PAivNNpahsPW5'.\n'8xxQaSVkboQnhsnYm5OHqDGp1IpsalMKjMsMIC3+XZKbJFth62/QOEfMOZqZXp9JcKZTcGmTky3meSi7xQklI81vMR+sXIz/AEgp'.\n'Q0qPNu6ea8Q2jqtbp8+2w9h/OKORc/cpHjt1dDSHOtLZ4ekHW23bBjj+o9H/AB539aP94MG0+L//2Q==' ; \n\n        //==========================================================\n        // ly-small.jpg\n        //==========================================================\n        $this->chars['y'][0]= 672 ;\n        $this->chars['y'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAQGBQf/xAArEAABAwMEAQIFBQAAAAAAAAAB'.\n'AgMEBREhAAYSEzEHIhQkQVGxQmFxgaH/xAAWAQEBAQAAAAAAAAAAAAAAAAADAQL/xAAeEQEAAgEEAwAAAAAAAAAAAAABABECAxIh'.\n'MUGR8P/aAAwDAQACEQMRAD8Ar3tys07dVHohemz5dWQ7fk91MsA3IIRY8rkKFySceTqw3JVV0KhyKw+0C1CQp9aUOFSiAk4AIAvn'.\n'76xtz0ioVvbcJ6msx2JtOfZmw1PKI5LQcJNh7UqBKcn6+NRfqPu6s1fYc6GxSJsRfWDUVSGA22ygEckJWSexRNgOP0udXzDKOJ0I'.\n'yo62mHm25Sy80l1Z4lSgpQvZRGLgWwPGjTjbchyLH+Ejx22EtJSgO8kki3kADA/nOjWjGzv73CyQZjUWNVp7bNSrj7qJDqflqUlQ'.\n'DMds24l3HvcNr3Pi9gME6T9WWVsemdYWswwC2lPta4m5WMA3OdUExCmozUJD6g84ntMjrHIFBTdQz5yLDx/WDNytpwW6nAkViqVe'.\n'uvmXdlme6n4dCwlRBKEgA2tj99QG7Ilncp5QqpU31PMsJ6x7A32f6SPxo0hPVCD45oVyKf0MtgeT97/nRrO7UOCFla3tn//Z' ; \n\n        //==========================================================\n        // d3-small.jpg\n        //==========================================================\n        $this->chars['3'][0]= 662 ;\n        $this->chars['3'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD//gAJSnBHcmFwaP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg'.\n'IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAB4AEgMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABAUGBwL/xAArEAABBAED'.\n'AwMDBQEAAAAAAAABAgMEBREABhIhMUEiMmETFZEHFkJDUdH/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAL/xAAYEQEBAQEBAAAAAAAA'.\n'AAAAAAAAEQExQf/aAAwDAQACEQMRAD8A0vclruBdk3VVLLUNssGRJsZSCtqOjlgJAHvcOD6c4HnOdIbcttw1W5P29cFEhuawqTXS'.\n'VsJjnCMBxKkJJx7goAde+ceJfdNxU0UNlyymyXHi6kxWUNl1S3EnkAEIHX2nv86qtTuZr9Q9+1VhRsOoYpYcgSVyAE/TdewkJxnK'.\n'sBCjkdPGpnOtFMd3PqsXgfOAgD8Y0aX+11H9rDDjn8lr9yj5J+dGqsqxaw6Cc9cQZU4Sp7zTJsIrKlcUEKwhSin1JABI45GUjqOu'.\n'lbOvjbc3Ts9ynjGCy445UuFLYRzbWgrT6fhSCQSMDke+pew2zYVly/d7YchNqkMJZnQpgV9J8IzwWFJyUrAJHYgjvpLbu37G5nR7'.\n'vck5C3YRKYEOEVJZj8kjKypXqWvirjk9h+dB9i4faa89TDZUfKlIyT8k+To10a6KTkpcJ/0vL/7o0TS//9k=' ; \n\n        //==========================================================\n        // ln-small.jpg\n        //==========================================================\n        $this->chars['n'][0]= 643 ;\n        $this->chars['n'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABQDASIAAhEBAxEB/8QAGwAAAgEFAAAAAAAAAAAAAAAAAAYCAQMEBQf/xAAtEAACAQMCBAUCBwAAAAAA'.\n'AAABAgMEBREAIQYSE0EHIjFRcWGRIzIzQoGCwf/EABYBAQEBAAAAAAAAAAAAAAAAAAMEAP/EABkRAQEBAQEBAAAAAAAAAAAAAAEA'.\n'AhEhUf/aAAwDAQACEQMRAD8A6FR3p7v4oV9rlkMQsjL00RyOss0KkFxnDcrc2PbI1NOJKyTjW+W5OmKeA0UEJx5meRZS2/8AUfbS'.\n'LVGS1+K16vCzfiR3GmoqqXGyxz06hWPsFlVMfOmq1iNvE69KjBYo3oJMZ3GKeYYPxg/fW+xzZX1FLQyxwSTcpWNceu4G3+aNSmpY'.\n'qmQzzwh2k8yhv2r2H23/AJ0aoy+EWh7I1ntacR3PxDtEzhjWy0wkkIwYmanU5GO6sNh7rrU8AVdTceNbhDXxNHUQvS0tZ3DzwxVA'.\n'fB7hj59/XJ08cPWaKj4gvlwSQiG7dCboqvLy9NOmQT9SM7ayJrBa6K5V91hjlWorp4JGUOAglRSiMMDb82/vgaBGTpVvtNUVtyJg'.\n'5+WNAh5ZCu/r2+dGrgq0pi0DhmlRsSSAfqMd+b6ZyNu3po1Rk1yNBe3/2Q==' ; \n\n        //==========================================================\n        // lu-small.jpg\n        //==========================================================\n        $this->chars['u'][0]= 671 ;\n        $this->chars['u'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAYDBAUH/8QAJRAAAQQBAwQDAQEAAAAAAAAA'.\n'AQIDBBEFAAYhBxMxYRJBURSB/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQAD/8QAGhEBAQEAAwEAAAAAAAAAAAAAAQARITFBAv/aAAwD'.\n'AQACEQMRAD8A6dLkQmJzu3WVtHIqjf0duKFNuBr5UTQ45F1R8/XI1PMmsYoJyjhS9iI7BKHeKjkXZVXqhyLHP+rrHeR1pZlx1W1M'.\n'wTiW0ukkrS28nn5fV2SPPFfurHUKQhzYG7pLYKEfyBhaSOS7dG/YCki/uvWn3LPDOJrwa4kyEzOYeakqkpC3Hk0bNePQHgDRpchY'.\n'leIZwzUWauKtuPctTSUlCAUmrBHIKuAPV/ujQsmHdm7hya43UbbD3ZVElOQJsdTS6IQaQUqBHCk8E2Pocgam6oYwObHy0Zm0oi45'.\n'T1KBPdpV2f0pom/1Ws7cmPazu98Ltvcq3VzRHfehz8a4pirFEKRZo8eQT+eCdWYfS/b+WYnxpbuVcDRMdHcyTqg2fiAfiLoi+Rf+'.\n'jT7Xc74HtOYnHyUOh8yWUvKeHhy0CiPVUAPoDRrm+OeznTva6lzsyMjCYbbaiNJjJSWElagD5tRpNUSALFeNGoOCH7Bv/9k=' ; \n\n        //==========================================================\n        // lw-small.jpg\n        //==========================================================\n        $this->chars['w'][0]= 673 ;\n        $this->chars['w'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABcDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAYDBAX/xAAtEAACAQMDAgMHBQAAAAAAAAAB'.\n'AgMEBREABhIhMRMUQRUiIzJRYZEWNIGx0f/EABYBAQEBAAAAAAAAAAAAAAAAAAABA//EABoRAAICAwAAAAAAAAAAAAAAAAABERIh'.\n'MVH/2gAMAwEAAhEDEQA/AHXbV13ZLu6t2/uaa1JijWopVp4XUTKSAXRyc+6ehBGeoPbTSlwpql0K3GneqpZViqUhI5JzGMEZJGeh'.\n'GlXfaFILDf7FQzXC426rDLTojs8sLqVkXBGcfKf40twWbdWzZY75R0s90ul3jPtKjVMJDNn4DDp8iEhW+wJ1WZG2KWt3Lv26U1tv'.\n'92o7PaYkgYUbqVepYlmUBlIwqnB++O2jTDt/bBtth9jcpvEWNGqalZQryTlmeR8jPct6+mNGmRC4a1U13htzVFItB5nA/cyOUVfp'.\n'7oz/ALqitJulYJKuqvFsppHALLFb3cp9FBaXr+O51bq0q6i38KK5PDVAAxSzU6SIpz3Kjjn8jUFoS7uFmut1gq17xLFQ+DxOccj8'.\n'Rsn+tVpiyJnqv09YfOXu5AycgZZQEhBZjgDBOOgwO/po0sttWHdNzqLruioa4UwmdaC3kYp4IwSvJlBHKQ4OSe3po0qxM6P/2Q==' ;\n\n        //==========================================================\n        // lq-small.jpg\n        //==========================================================\n        $this->chars['q'][0]= 671 ;\n        $this->chars['q'][1]=\n'/9j/4AAQSkZJRgABAQEASgBKAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx'.\n'NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy'.\n'MjIyMjIyMjL/wAARCAAeABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAcDBAUG/8QAKRAAAQQBBAICAQQDAAAAAAAA'.\n'AQIDBBEFAAYSIQcxIlETCBQVgSNBYf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/8QAFhEBAQEAAAAAAAAAAAAAAAAAAAER/9oADAMB'.\n'AAIRAxEAPwDT3H5Qz+O3LN2vtrF/y86NYLzzVlAABJITQPv2a/17vXMboz3lDEYWPuafNx7CFrS03+2jpK2bs0CUkUa7pRvrUu63'.\n'sr438yv7pLEo4XIK5Kcji0uJUkckm+uQUOVH6GsnyJv7A5vaJwuFdkONLmolgONFH4vioKRXYqyCADXvRMh0yspmZ4jyIEtDTK47'.\n'aiA0lQUopBJBI/7X9aNT7amRo228e3a31iO3yUzCcdSPiKAIFdCho0TIswZ7GQlO/hlRxBooih1YXzAoKUkX0LPEBX110dJ7zbuv'.\n'AORpO04cIpmxH23FSEIRwKuNnsdk0o31702XhFMKbuRUZJWP8LTQ6HBCuIB+iVWSR2BXuqK93/hDlvGzEphmG3Ml5JpDi1I7TzNA'.\n'BYFlPafY+/7LBiv1CYDH4iFDOGySlMR22lFP4wCUpANfL11o1r4bxXlWMNEaE/bqlIbCFl/ANPK5Do/M0VDr2Rf3o0TX/9k=' ;\n\n\n\n    }\n}\n\nclass AntiSpam {\n\n    private $iData='';\n    private $iDD=null;\n\n    function __construct($aData='') {\n        $this->iData = $aData;\n        $this->iDD = new HandDigits();\n    }\n\n    function Set($aData) {\n        $this->iData = $aData;\n    }\n\n    function Rand($aLen) {\n        $d='';\n        for($i=0; $i < $aLen; ++$i) {\n            if( rand(0,9) < 6 ) {\n                // Digits\n                $d .= chr( ord('1') + rand(0,8) );\n            }\n            else {\n                // Letters\n                do {\n                    $offset = rand(0,25);\n                } while ( $offset==14 );\n                $d .= chr( ord('a') + $offset );\n            }\n        }\n        $this->iData = $d;\n        return $d;\n    }\n\n    function Stroke() {\n\n        $n=strlen($this->iData);\n        if( $n==0 ) {\n            return false;\n        }\n\n        for($i=0; $i < $n; ++$i ) {\n            if( $this->iData[$i]==='0' || strtolower($this->iData[$i])==='o') {\n                return false;\n            }\n        }\n\n        $img = @imagecreatetruecolor($n*$this->iDD->iWidth, $this->iDD->iHeight);\n        if( $img < 1 ) {\n            return false;\n        }\n\n        $start=0;\n        for($i=0; $i < $n; ++$i ) {\n            $dimg = imagecreatefromstring(base64_decode($this->iDD->chars[strtolower($this->iData[$i])][1]));\n            imagecopy($img,$dimg,$start,0,0,0,imagesx($dimg), $this->iDD->iHeight);\n            $start += imagesx($dimg);\n        }\n        $resimg = @imagecreatetruecolor($start+4, $this->iDD->iHeight+4);\n        if( $resimg < 1 ) {\n            return false;\n        }\n\n        imagecopy($resimg,$img,2,2,0,0,$start, $this->iDD->iHeight);\n        header(\"Content-type: image/jpeg\");\n        imagejpeg($resimg);\n        return true;\n    }\n}\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_bar.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_BAR.PHP\n // Description: Bar plot extension for JpGraph\n // Created:     2001-01-08\n // Ver:         $Id: jpgraph_bar.php 1905 2009-10-06 18:00:21Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\nrequire_once('jpgraph_plotband.php');\n\n// Pattern for Bars\nDEFINE('PATTERN_DIAG1',1);\nDEFINE('PATTERN_DIAG2',2);\nDEFINE('PATTERN_DIAG3',3);\nDEFINE('PATTERN_DIAG4',4);\nDEFINE('PATTERN_CROSS1',5);\nDEFINE('PATTERN_CROSS2',6);\nDEFINE('PATTERN_CROSS3',7);\nDEFINE('PATTERN_CROSS4',8);\nDEFINE('PATTERN_STRIPE1',9);\nDEFINE('PATTERN_STRIPE2',10);\n\n//===================================================\n// CLASS BarPlot\n// Description: Main code to produce a bar plot\n//===================================================\nclass BarPlot extends Plot {\n    public $fill=false,$fill_color=\"lightblue\"; // Default is to fill with light blue\n    public $iPattern=-1,$iPatternDensity=80,$iPatternColor='black';\n    public $valuepos='top';\n    public $grad=false,$grad_style=1;\n    public $grad_fromcolor=array(50,50,200),$grad_tocolor=array(255,255,255);\n    public $ymin=0;\n    protected $width=0.4; // in percent of major ticks\n    protected $abswidth=-1; // Width in absolute pixels\n    protected $ybase=0; // Bars start at 0\n    protected $align=\"center\";\n    protected $bar_shadow=false;\n    protected $bar_shadow_color=\"black\";\n    protected $bar_shadow_hsize=3,$bar_shadow_vsize=3;\n    protected $bar_3d=false;\n    protected $bar_3d_hsize=3,$bar_3d_vsize=3;\n\n    //---------------\n    // CONSTRUCTOR\n    function __construct($datay,$datax=false) {\n        parent::__construct($datay,$datax);\n        ++$this->numpoints;\n    }\n\n    //---------------\n    // PUBLIC METHODS\n\n    // Set a drop shadow for the bar (or rather an \"up-right\" shadow)\n    function SetShadow($aColor=\"black\",$aHSize=3,$aVSize=3,$aShow=true) {\n        $this->bar_shadow=$aShow;\n        $this->bar_shadow_color=$aColor;\n        $this->bar_shadow_vsize=$aVSize;\n        $this->bar_shadow_hsize=$aHSize;\n\n        // Adjust the value margin to compensate for shadow\n        $this->value->margin += $aVSize;\n    }\n\n    function Set3D($aHSize=3,$aVSize=3,$aShow=true) {\n        $this->bar_3d=$aShow;\n        $this->bar_3d_vsize=$aVSize;\n        $this->bar_3d_hsize=$aHSize;\n\n        $this->value->margin += $aVSize;\n    }\n\n    // DEPRECATED use SetYBase instead\n    function SetYMin($aYStartValue) {\n        //die(\"JpGraph Error: Deprecated function SetYMin. Use SetYBase() instead.\");\n        $this->ybase=$aYStartValue;\n    }\n\n    // Specify the base value for the bars\n    function SetYBase($aYStartValue) {\n        $this->ybase=$aYStartValue;\n    }\n\n    // The method will take the specified pattern anre\n    // return a pattern index that corresponds to the original\n    // patterm being rotated 90 degreees. This is needed when plottin\n    // Horizontal bars\n    function RotatePattern($aPat,$aRotate=true) {\n        $rotate = array(1 => 2, 2 => 1, 3 => 3, 4 => 5, 5 => 4, 6 => 6, 7 => 7, 8 => 8);\n        if( $aRotate ) {\n            return $rotate[$aPat];\n        }\n        else {\n            return $aPat;\n        }\n    }\n\n    function Legend($graph) {\n        if( $this->grad && $this->legend!=\"\" && !$this->fill ) {\n            $color=array($this->grad_fromcolor,$this->grad_tocolor);\n            // In order to differentiate between gradients and cooors specified as an RGB triple\n            $graph->legend->Add($this->legend,$color,\"\",-$this->grad_style,\n            $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);\n        }\n        elseif( $this->legend!=\"\" && ($this->iPattern > -1 || is_array($this->iPattern)) ) {\n            if( is_array($this->iPattern) ) {\n                $p1 = $this->RotatePattern( $this->iPattern[0], $graph->img->a == 90 );\n                $p2 = $this->iPatternColor[0];\n                $p3 = $this->iPatternDensity[0];\n            }\n            else {\n                $p1 = $this->RotatePattern( $this->iPattern, $graph->img->a == 90 );\n                $p2 = $this->iPatternColor;\n                $p3 = $this->iPatternDensity;\n            }\n            if( $p3 < 90 ) $p3 += 5;\n            $color = array($p1,$p2,$p3,$this->fill_color);\n            // A kludge: Too mark that we add a pattern we use a type value of < 100\n            $graph->legend->Add($this->legend,$color,\"\",-101,\n                                $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);\n        }\n        elseif( $this->fill_color && $this->legend!=\"\" ) {\n            if( is_array($this->fill_color) ) {\n                $graph->legend->Add($this->legend,$this->fill_color[0],\"\",0,\n                $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);\n            }\n            else {\n                $graph->legend->Add($this->legend,$this->fill_color,\"\",0,\n                $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);\n            }\n        }\n    }\n\n    // Gets called before any axis are stroked\n    function PreStrokeAdjust($graph) {\n        parent::PreStrokeAdjust($graph);\n\n        // If we are using a log Y-scale we want the base to be at the\n        // minimum Y-value unless the user have specifically set some other\n        // value than the default.\n        if( substr($graph->axtype,-3,3)==\"log\" && $this->ybase==0 )\n        $this->ybase = $graph->yaxis->scale->GetMinVal();\n\n        // For a \"text\" X-axis scale we will adjust the\n        // display of the bars a little bit.\n        if( substr($graph->axtype,0,3)==\"tex\" ) {\n            // Position the ticks between the bars\n            $graph->xaxis->scale->ticks->SetXLabelOffset(0.5,0);\n\n            // Center the bars\n            if( $this->abswidth > -1 ) {\n                $graph->SetTextScaleAbsCenterOff($this->abswidth);\n            }\n            else {\n                if( $this->align == \"center\" )\n                $graph->SetTextScaleOff(0.5-$this->width/2);\n                elseif( $this->align == \"right\" )\n                $graph->SetTextScaleOff(1-$this->width);\n            }\n        }\n        elseif( ($this instanceof AccBarPlot) || ($this instanceof GroupBarPlot) ) {\n            // We only set an absolute width for linear and int scale\n            // for text scale the width will be set to a fraction of\n            // the majstep width.\n            if( $this->abswidth == -1 ) {\n                // Not set\n                // set width to a visuable sensible default\n                $this->abswidth = $graph->img->plotwidth/(2*$this->numpoints);\n            }\n        }\n    }\n\n    function Min() {\n        $m = parent::Min();\n        if( $m[1] >= $this->ybase ) $m[1] = $this->ybase;\n        return $m;\n    }\n\n    function Max() {\n        $m = parent::Max();\n        if( $m[1] <= $this->ybase ) $m[1] = $this->ybase;\n        return $m;\n    }\n\n    // Specify width as fractions of the major stepo size\n    function SetWidth($aWidth) {\n        if( $aWidth > 1 ) {\n            // Interpret this as absolute width\n            $this->abswidth=$aWidth;\n        }\n        else {\n            $this->width=$aWidth;\n        }\n    }\n\n    // Specify width in absolute pixels. If specified this\n    // overrides SetWidth()\n    function SetAbsWidth($aWidth) {\n        $this->abswidth=$aWidth;\n    }\n\n    function SetAlign($aAlign) {\n        $this->align=$aAlign;\n    }\n\n    function SetNoFill() {\n        $this->grad = false;\n        $this->fill_color=false;\n        $this->fill=false;\n    }\n\n    function SetFillColor($aColor) {\n        // Do an extra error check if the color is specified as an RGB array triple\n        // In that case convert it to a hex string since it will otherwise be\n        // interpretated as an array of colors for each individual bar.\n\n        $aColor = RGB::tryHexConversion($aColor);\n        $this->fill = true ;\n        $this->fill_color=$aColor;\n\n    }\n\n    function SetFillGradient($aFromColor,$aToColor=null,$aStyle=null) {\n        $this->grad = true;\n        $this->grad_fromcolor = $aFromColor;\n        $this->grad_tocolor   = $aToColor;\n        $this->grad_style     = $aStyle;\n    }\n\n    function SetValuePos($aPos) {\n        $this->valuepos = $aPos;\n    }\n\n    function SetPattern($aPattern, $aColor='black'){\n        if( is_array($aPattern) ) {\n            $n = count($aPattern);\n            $this->iPattern = array();\n            $this->iPatternDensity = array();\n            if( is_array($aColor) ) {\n                $this->iPatternColor = array();\n                if( count($aColor) != $n ) {\n                    JpGraphError::RaiseL(2001);//('NUmber of colors is not the same as the number of patterns in BarPlot::SetPattern()');\n                }\n            }\n            else {\n                $this->iPatternColor = $aColor;\n            }\n            for( $i=0; $i < $n; ++$i ) {\n                $this->_SetPatternHelper($aPattern[$i], $this->iPattern[$i], $this->iPatternDensity[$i]);\n                if( is_array($aColor) ) {\n                    $this->iPatternColor[$i] = $aColor[$i];\n                }\n            }\n        }\n        else {\n            $this->_SetPatternHelper($aPattern, $this->iPattern, $this->iPatternDensity);\n            $this->iPatternColor = $aColor;\n        }\n    }\n\n    function _SetPatternHelper($aPattern, &$aPatternValue, &$aDensity){\n        switch( $aPattern ) {\n            case PATTERN_DIAG1:\n                $aPatternValue= 1;\n                $aDensity = 92;\n                break;\n            case PATTERN_DIAG2:\n                $aPatternValue= 1;\n                $aDensity = 78;\n                break;\n            case PATTERN_DIAG3:\n                $aPatternValue= 2;\n                $aDensity = 92;\n                break;\n            case PATTERN_DIAG4:\n                $aPatternValue= 2;\n                $aDensity = 78;\n                break;\n            case PATTERN_CROSS1:\n                $aPatternValue= 8;\n                $aDensity = 90;\n                break;\n            case PATTERN_CROSS2:\n                $aPatternValue= 8;\n                $aDensity = 78;\n                break;\n            case PATTERN_CROSS3:\n                $aPatternValue= 8;\n                $aDensity = 65;\n                break;\n            case PATTERN_CROSS4:\n                $aPatternValue= 7;\n                $aDensity = 90;\n                break;\n            case PATTERN_STRIPE1:\n                $aPatternValue= 5;\n                $aDensity = 94;\n                break;\n            case PATTERN_STRIPE2:\n                $aPatternValue= 5;\n                $aDensity = 85;\n                break;\n            default:\n                JpGraphError::RaiseL(2002);\n                //('Unknown pattern specified in call to BarPlot::SetPattern()');\n        }\n    }\n\n\n    /**\n     * @override\n     * Without overriding this method, $this->numpoints does not updated correctly.\n     */\n    function Clear() {\n        $this->isRunningClear = true;\n        $this->__construct($this->inputValues['aDatay'], $this->inputValues['aDatax']);\n        $this->isRunningClear = false;\n    }\n\n    function Stroke($img,$xscale,$yscale) {\n\n        $numpoints = count($this->coords[0]);\n        if( isset($this->coords[1]) ) {\n            if( count($this->coords[1])!=$numpoints ) {\n                JpGraphError::RaiseL(2003,count($this->coords[1]),$numpoints);\n            //\"Number of X and Y points are not equal. Number of X-points:\".count($this->coords[1]).\"Number of Y-points:$numpoints\");\n            }\n            else {\n                $exist_x = true;\n            }\n        }\n        else {\n            $exist_x = false;\n        }\n\n\n        $numbars=count($this->coords[0]);\n\n        // Use GetMinVal() instead of scale[0] directly since in the case\n        // of log scale we get a correct value. Log scales will have negative\n        // values for values < 1 while still not representing negative numbers.\n        if( $yscale->GetMinVal() >= 0 )\n        $zp=$yscale->scale_abs[0];\n        else {\n            $zp=$yscale->Translate(0);\n        }\n\n        if( $this->abswidth > -1 ) {\n            $abswidth=$this->abswidth;\n        }\n        else {\n            $abswidth=round($this->width*$xscale->scale_factor,0);\n        }\n\n        // Count pontetial pattern array to avoid doing the count for each iteration\n        if( is_array($this->iPattern) ) {\n            $np = count($this->iPattern);\n        }\n\n        $grad = null;\n        for($i=0; $i < $numbars; ++$i) {\n\n            // If value is NULL, or 0 then don't draw a bar at all\n            if ($this->coords[0][$i] === null || $this->coords[0][$i] === '' )\n            continue;\n\n            if( $exist_x ) {\n                $x=$this->coords[1][$i];\n            }\n            else {\n                $x=$i;\n            }\n\n            $x=$xscale->Translate($x);\n\n            // Comment Note: This confuses the positioning when using acc together with\n            // grouped bars. Workaround for fixing #191\n            /*\n            if( !$xscale->textscale ) {\n            if($this->align==\"center\")\n            $x -= $abswidth/2;\n            elseif($this->align==\"right\")\n            $x -= $abswidth;\n            }\n            */\n            // Stroke fill color and fill gradient\n            $pts=array(\n            $x,$zp,\n            $x,$yscale->Translate($this->coords[0][$i]),\n            $x+$abswidth,$yscale->Translate($this->coords[0][$i]),\n            $x+$abswidth,$zp);\n            if( $this->grad ) {\n                if( $grad === null ) {\n                    $grad = new Gradient($img);\n                }\n                if( is_array($this->grad_fromcolor) ) {\n                    // The first argument (grad_fromcolor) can be either an array or a single color. If it is an array\n                    // then we have two choices. It can either a) be a single color specified as an RGB triple or it can be\n                    // an array to specify both (from, to style) for each individual bar. The way to know the difference is\n                    // to investgate the first element. If this element is an integer [0,255] then we assume it is an RGB\n                    // triple.\n                    $ng = count($this->grad_fromcolor);\n                    if( $ng === 3 ) {\n                        if( is_numeric($this->grad_fromcolor[0]) && $this->grad_fromcolor[0] > 0 && $this->grad_fromcolor[0] < 256 ) {\n                            // RGB Triple\n                            $fromcolor = $this->grad_fromcolor;\n                            $tocolor = $this->grad_tocolor;\n                            $style = $this->grad_style;\n                        }\n                        else {\n                            $fromcolor = $this->grad_fromcolor[$i % $ng][0];\n                            $tocolor = $this->grad_fromcolor[$i % $ng][1];\n                            $style = $this->grad_fromcolor[$i % $ng][2];\n                        }\n                    }\n                    else {\n                        $fromcolor = $this->grad_fromcolor[$i % $ng][0];\n                        $tocolor = $this->grad_fromcolor[$i % $ng][1];\n                        $style = $this->grad_fromcolor[$i % $ng][2];\n                    }\n                    $grad->FilledRectangle($pts[2],$pts[3],\n                                           $pts[6],$pts[7],\n                                           $fromcolor,$tocolor,$style);\n                }\n                else {\n                    $grad->FilledRectangle($pts[2],$pts[3],\n                    $pts[6],$pts[7],\n                    $this->grad_fromcolor,$this->grad_tocolor,$this->grad_style);\n                }\n            }\n            elseif( !empty($this->fill_color) ) {\n                if(is_array($this->fill_color)) {\n                    $img->PushColor($this->fill_color[$i % count($this->fill_color)]);\n                } else {\n                    $img->PushColor($this->fill_color);\n                }\n                $img->FilledPolygon($pts);\n                $img->PopColor();\n            }\n\n/////////////////////////kokorahen rectangle polygon//////////////////////\n\n            // Remember value of this bar\n            $val=$this->coords[0][$i];\n\n            if( !empty($val) && !is_numeric($val) ) {\n                JpGraphError::RaiseL(2004,$i,$val);\n                //'All values for a barplot must be numeric. You have specified value['.$i.'] == \\''.$val.'\\'');\n            }\n\n            // Determine the shadow\n            if( $this->bar_shadow && $val != 0) {\n\n                $ssh = $this->bar_shadow_hsize;\n                $ssv = $this->bar_shadow_vsize;\n                // Create points to create a \"upper-right\" shadow\n                if( $val > 0 ) {\n                    $sp[0]=$pts[6];  $sp[1]=$pts[7];\n                    $sp[2]=$pts[4];  $sp[3]=$pts[5];\n                    $sp[4]=$pts[2];  $sp[5]=$pts[3];\n                    $sp[6]=$pts[2]+$ssh; $sp[7]=$pts[3]-$ssv;\n                    $sp[8]=$pts[4]+$ssh; $sp[9]=$pts[5]-$ssv;\n                    $sp[10]=$pts[6]+$ssh; $sp[11]=$pts[7]-$ssv;\n                }\n                elseif( $val < 0 ) {\n                    $sp[0]=$pts[4];  $sp[1]=$pts[5];\n                    $sp[2]=$pts[6];  $sp[3]=$pts[7];\n                    $sp[4]=$pts[0];  $sp[5]=$pts[1];\n                    $sp[6]=$pts[0]+$ssh; $sp[7]=$pts[1]-$ssv;\n                    $sp[8]=$pts[6]+$ssh; $sp[9]=$pts[7]-$ssv;\n                    $sp[10]=$pts[4]+$ssh; $sp[11]=$pts[5]-$ssv;\n                }\n                if( is_array($this->bar_shadow_color) ) {\n                    $numcolors = count($this->bar_shadow_color);\n                    if( $numcolors == 0 ) {\n                        JpGraphError::RaiseL(2005);//('You have specified an empty array for shadow colors in the bar plot.');\n                    }\n                    $img->PushColor($this->bar_shadow_color[$i % $numcolors]);\n                }\n                else {\n                    $img->PushColor($this->bar_shadow_color);\n                }\n                $img->FilledPolygon($sp);\n                $img->PopColor();\n\n            } elseif( $this->bar_3d && $val != 0) {\n              // Determine the 3D\n\n                $ssh = $this->bar_3d_hsize;\n                $ssv = $this->bar_3d_vsize;\n\n                // Create points to create a \"upper-right\" shadow\n                if( $val > 0 ) {\n                    $sp1[0]=$pts[6];  $sp1[1]=$pts[7];\n                    $sp1[2]=$pts[4];  $sp1[3]=$pts[5];\n                    $sp1[4]=$pts[4]+$ssh; $sp1[5]=$pts[5]-$ssv;\n                    $sp1[6]=$pts[6]+$ssh; $sp1[7]=$pts[7]-$ssv;\n\n                    $sp2[0]=$pts[4];  $sp2[1]=$pts[5];\n                    $sp2[2]=$pts[2];  $sp2[3]=$pts[3];\n                    $sp2[4]=$pts[2]+$ssh; $sp2[5]=$pts[3]-$ssv;\n                    $sp2[6]=$pts[4]+$ssh; $sp2[7]=$pts[5]-$ssv;\n\n                }\n                elseif( $val < 0 ) {\n                    $sp1[0]=$pts[4];  $sp1[1]=$pts[5];\n                    $sp1[2]=$pts[6];  $sp1[3]=$pts[7];\n                    $sp1[4]=$pts[6]+$ssh; $sp1[5]=$pts[7]-$ssv;\n                    $sp1[6]=$pts[4]+$ssh; $sp1[7]=$pts[5]-$ssv;\n\n                    $sp2[0]=$pts[6];  $sp2[1]=$pts[7];\n                    $sp2[2]=$pts[0];  $sp2[3]=$pts[1];\n                    $sp2[4]=$pts[0]+$ssh; $sp2[5]=$pts[1]-$ssv;\n                    $sp2[6]=$pts[6]+$ssh; $sp2[7]=$pts[7]-$ssv;\n                }\n\n                $base_color = $this->fill_color;\n\n                $img->PushColor($base_color . ':0.7');\n                $img->FilledPolygon($sp1);\n                $img->PopColor();\n\n                $img->PushColor($base_color . ':1.1');\n                $img->FilledPolygon($sp2);\n                $img->PopColor();\n            }\n\n            // Stroke the pattern\n            if( is_array($this->iPattern) ) {\n                $f = new RectPatternFactory();\n                if( is_array($this->iPatternColor) ) {\n                    $pcolor = $this->iPatternColor[$i % $np];\n                }\n                else {\n                    $pcolor = $this->iPatternColor;\n                }\n                $prect = $f->Create($this->iPattern[$i % $np],$pcolor,1);\n                $prect->SetDensity($this->iPatternDensity[$i % $np]);\n\n                if( $val < 0 ) {\n                    $rx = $pts[0];\n                    $ry = $pts[1];\n                }\n                else {\n                    $rx = $pts[2];\n                    $ry = $pts[3];\n                }\n                $width = abs($pts[4]-$pts[0])+1;\n                $height = abs($pts[1]-$pts[3])+1;\n                $prect->SetPos(new Rectangle($rx,$ry,$width,$height));\n                $prect->Stroke($img);\n            }\n            else {\n                if( $this->iPattern > -1 ) {\n                    $f = new RectPatternFactory();\n                    $prect = $f->Create($this->iPattern,$this->iPatternColor,1);\n                    $prect->SetDensity($this->iPatternDensity);\n                    if( $val < 0 ) {\n                        $rx = $pts[0];\n                        $ry = $pts[1];\n                    }\n                    else {\n                        $rx = $pts[2];\n                        $ry = $pts[3];\n                    }\n                    $width = abs($pts[4]-$pts[0])+1;\n                    $height = abs($pts[1]-$pts[3])+1;\n                    $prect->SetPos(new Rectangle($rx,$ry,$width,$height));\n                    $prect->Stroke($img);\n                }\n            }\n\n            // Stroke the outline of the bar\n            if( is_array($this->color) ) {\n                $img->SetColor($this->color[$i % count($this->color)]);\n            }\n            else {\n                $img->SetColor($this->color);\n            }\n\n            $pts[] = $pts[0];\n            $pts[] = $pts[1];\n\n            if( $this->weight > 0 ) {\n                $img->SetLineWeight($this->weight);\n                $img->Polygon($pts);\n            }\n\n            // Determine how to best position the values of the individual bars\n            $x=$pts[2]+($pts[4]-$pts[2])/2;\n            $this->value->SetMargin(5);\n\n            if( $this->valuepos=='top' ) {\n                $y=$pts[3];\n                if( $img->a === 90 ) {\n                    if( $val < 0 ) {\n                        $this->value->SetAlign('right','center');\n                    }\n                    else {\n                        $this->value->SetAlign('left','center');\n                    }\n\n                }\n                else {\n                    if( $val < 0 ) {\n                        $this->value->SetMargin(-5);\n                        $y=$pts[1];\n                        $this->value->SetAlign('center','bottom');\n                    }\n                    else {\n                        $this->value->SetAlign('center','bottom');\n                    }\n\n                }\n                $this->value->Stroke($img,$val,$x,$y);\n            }\n            elseif( $this->valuepos=='max' ) {\n                $y=$pts[3];\n                if( $img->a === 90 ) {\n                    if( $val < 0 )\n                    $this->value->SetAlign('left','center');\n                    else\n                    $this->value->SetAlign('right','center');\n                }\n                else {\n                    if( $val < 0 ) {\n                        $this->value->SetAlign('center','bottom');\n                    }\n                    else {\n                        $this->value->SetAlign('center','top');\n                    }\n                }\n                $this->value->SetMargin(-5);\n                $this->value->Stroke($img,$val,$x,$y);\n            }\n            elseif( $this->valuepos=='center' ) {\n                $y = ($pts[3] + $pts[1])/2;\n                $this->value->SetAlign('center','center');\n                $this->value->SetMargin(0);\n                $this->value->Stroke($img,$val,$x,$y);\n            }\n            elseif( $this->valuepos=='bottom' || $this->valuepos=='min' ) {\n                $y=$pts[1];\n                if( $img->a === 90 ) {\n                    if( $val < 0 )\n                    $this->value->SetAlign('right','center');\n                    else\n                    $this->value->SetAlign('left','center');\n                }\n                $this->value->SetMargin(3);\n                $this->value->Stroke($img,$val,$x,$y);\n            }\n            else {\n                JpGraphError::RaiseL(2006,$this->valuepos);\n                //'Unknown position for values on bars :'.$this->valuepos);\n            }\n            // Create the client side image map\n            $rpts = $img->ArrRotate($pts);\n            $csimcoord=round($rpts[0]).\", \".round($rpts[1]);\n            for( $j=1; $j < 4; ++$j){\n                $csimcoord .= \", \".round($rpts[2*$j]).\", \".round($rpts[2*$j+1]);\n            }\n            if( !empty($this->csimtargets[$i]) ) {\n                $this->csimareas .= '<area shape=\"poly\" coords=\"'.$csimcoord.'\" ';\n                $this->csimareas .= \" href=\\\"\".htmlentities($this->csimtargets[$i]).\"\\\"\";\n\n                if( !empty($this->csimwintargets[$i]) ) {\n                    $this->csimareas .= \" target=\\\"\".$this->csimwintargets[$i].\"\\\" \";\n                }\n\n                $sval='';\n                if( !empty($this->csimalts[$i]) ) {\n                    $sval=sprintf($this->csimalts[$i],$this->coords[0][$i]);\n                    $this->csimareas .= \" title=\\\"$sval\\\" alt=\\\"$sval\\\" \";\n                }\n                $this->csimareas .= \" />\\n\";\n            }\n        }\n        return true;\n    }\n} // Class\n\n//===================================================\n// CLASS GroupBarPlot\n// Description: Produce grouped bar plots\n//===================================================\nclass GroupBarPlot extends BarPlot {\n    public $plots; \n    private $nbrplots=0;\n    //---------------\n    // CONSTRUCTOR\n    function __construct($plots) {\n        $this->width=0.7;\n        $this->plots = $plots;\n        $this->nbrplots = count($plots);\n        if( $this->nbrplots < 1 ) {\n            JpGraphError::RaiseL(2007);//('Cannot create GroupBarPlot from empty plot array.');\n        }\n        for($i=0; $i < $this->nbrplots; ++$i ) {\n            if( empty($this->plots[$i]) || !isset($this->plots[$i]) ) {\n                JpGraphError::RaiseL(2008,$i);//(\"Group bar plot element nbr $i is undefined or empty.\");\n            }\n        }\n        $this->numpoints = $plots[0]->numpoints;\n        $this->width=0.7;\n    }\n\n    //---------------\n    // PUBLIC METHODS\n    function Legend($graph) {\n        $n = count($this->plots);\n        for($i=0; $i < $n; ++$i) {\n            $c = get_class($this->plots[$i]);\n            if( !($this->plots[$i] instanceof BarPlot) ) {\n                JpGraphError::RaiseL(2009,$c);\n                //('One of the objects submitted to GroupBar is not a BarPlot. Make sure that you create the Group Bar plot from an array of BarPlot or AccBarPlot objects. (Class = '.$c.')');\n            }\n            $this->plots[$i]->DoLegend($graph);\n        }\n    }\n\n    function Min() {\n        list($xmin,$ymin) = $this->plots[0]->Min();\n        $n = count($this->plots);\n        for($i=0; $i < $n; ++$i) {\n            list($xm,$ym) = $this->plots[$i]->Min();\n            $xmin = min($xmin,$xm);\n            $ymin = min($ymin,$ym);\n        }\n        return array($xmin,$ymin);\n    }\n\n    function Max() {\n        list($xmax,$ymax) = $this->plots[0]->Max();\n        $n = count($this->plots);\n        for($i=0; $i < $n; ++$i) {\n            list($xm,$ym) = $this->plots[$i]->Max();\n            $xmax = max($xmax,$xm);\n            $ymax = max($ymax,$ym);\n        }\n        return array($xmax,$ymax);\n    }\n\n    function GetCSIMareas() {\n        $n = count($this->plots);\n        $csimareas='';\n        for($i=0; $i < $n; ++$i) {\n            $csimareas .= $this->plots[$i]->csimareas;\n        }\n        return $csimareas;\n    }\n\n    // Stroke all the bars next to each other\n    function Stroke($img,$xscale,$yscale) {\n        $tmp=$xscale->off;\n        $n = count($this->plots);\n        $subwidth = $this->width/$this->nbrplots ;\n\n        for( $i=0; $i < $n; ++$i ) {\n            $this->plots[$i]->ymin=$this->ybase;\n            $this->plots[$i]->SetWidth($subwidth);\n\n            // If the client have used SetTextTickInterval() then\n            // major_step will be > 1 and the positioning will fail.\n            // If we assume it is always one the positioning will work\n            // fine with a text scale but this will not work with\n            // arbitrary linear scale\n            $xscale->off = $tmp+$i*round($xscale->scale_factor* $subwidth);\n            $this->plots[$i]->Stroke($img,$xscale,$yscale);\n        }\n        $xscale->off=$tmp;\n    }\n} // Class\n\n//===================================================\n// CLASS AccBarPlot\n// Description: Produce accumulated bar plots\n//===================================================\nclass AccBarPlot extends BarPlot {\n    public $plots=null;\n    private $nbrplots=0;\n    //---------------\n    // CONSTRUCTOR\n    function __construct($plots) {\n        $this->plots = $plots;\n        $this->nbrplots = count($plots);\n        if( $this->nbrplots < 1 ) {\n            JpGraphError::RaiseL(2010);//('Cannot create AccBarPlot from empty plot array.');\n        }\n        for($i=0; $i < $this->nbrplots; ++$i ) {\n            if( empty($this->plots[$i]) || !isset($this->plots[$i]) ) {\n                JpGraphError::RaiseL(2011,$i);//(\"Acc bar plot element nbr $i is undefined or empty.\");\n            }\n        }\n\n        // We can only allow individual plost which do not have specified X-positions\n        for($i=0; $i < $this->nbrplots; ++$i ) {\n            if( !empty($this->plots[$i]->coords[1]) ) {\n                JpGraphError::RaiseL(2015);\n                //'Individual bar plots in an AccBarPlot or GroupBarPlot can not have specified X-positions.');\n            }\n        }\n\n        // Use 0 weight by default which means that the individual bar\n        // weights will be used per part n the accumulated bar\n        $this->SetWeight(0);\n\n        $this->numpoints = $plots[0]->numpoints;\n        $this->value = new DisplayValue();\n    }\n\n    //---------------\n    // PUBLIC METHODS\n    function Legend($graph) {\n        $n = count($this->plots);\n        for( $i=$n-1; $i >= 0; --$i ) {\n            $c = get_class($this->plots[$i]);\n            if( !($this->plots[$i] instanceof BarPlot) ) {\n                JpGraphError::RaiseL(2012,$c);\n                //('One of the objects submitted to AccBar is not a BarPlot. Make sure that you create the AccBar plot from an array of BarPlot objects.(Class='.$c.')');\n            }\n            $this->plots[$i]->DoLegend($graph);\n        }\n    }\n\n    function Max() {\n        list($xmax) = $this->plots[0]->Max();\n        $nmax=0;\n        for($i=0; $i < count($this->plots); ++$i) {\n            $n = count($this->plots[$i]->coords[0]);\n            $nmax = max($nmax,$n);\n            list($x) = $this->plots[$i]->Max();\n            $xmax = max($xmax,$x);\n        }\n        for( $i = 0; $i < $nmax; $i++ ) {\n            // Get y-value for bar $i by adding the\n            // individual bars from all the plots added.\n            // It would be wrong to just add the\n            // individual plots max y-value since that\n            // would in most cases give to large y-value.\n            $y=0;\n            if( !isset($this->plots[0]->coords[0][$i]) ) {\n                JpGraphError::RaiseL(2014);\n            }\n            if( $this->plots[0]->coords[0][$i] > 0 )\n            $y=$this->plots[0]->coords[0][$i];\n            for( $j = 1; $j < $this->nbrplots; $j++ ) {\n                if( !isset($this->plots[$j]->coords[0][$i]) ) {\n                    JpGraphError::RaiseL(2014);\n                }\n                if( $this->plots[$j]->coords[0][$i] > 0 )\n                $y += $this->plots[$j]->coords[0][$i];\n            }\n            $ymax[$i] = $y;\n        }\n        $ymax = max($ymax);\n\n        // Bar always start at baseline\n        if( $ymax <= $this->ybase )\n        $ymax = $this->ybase;\n        return array($xmax,$ymax);\n    }\n\n    function Min() {\n        $nmax=0;\n        list($xmin,$ysetmin) = $this->plots[0]->Min();\n        for($i=0; $i < count($this->plots); ++$i) {\n            $n = count($this->plots[$i]->coords[0]);\n            $nmax = max($nmax,$n);\n            list($x,$y) = $this->plots[$i]->Min();\n            $xmin = Min($xmin,$x);\n            $ysetmin = Min($y,$ysetmin);\n        }\n        for( $i = 0; $i < $nmax; $i++ ) {\n            // Get y-value for bar $i by adding the\n            // individual bars from all the plots added.\n            // It would be wrong to just add the\n            // individual plots max y-value since that\n            // would in most cases give to large y-value.\n            $y=0;\n            if( $this->plots[0]->coords[0][$i] < 0 )\n            $y=$this->plots[0]->coords[0][$i];\n            for( $j = 1; $j < $this->nbrplots; $j++ ) {\n                if( $this->plots[$j]->coords[0][$i] < 0 )\n                $y += $this->plots[ $j ]->coords[0][$i];\n            }\n            $ymin[$i] = $y;\n        }\n        $ymin = Min($ysetmin,Min($ymin));\n        // Bar always start at baseline\n        if( $ymin >= $this->ybase )\n        $ymin = $this->ybase;\n        return array($xmin,$ymin);\n    }\n\n    // Stroke acc bar plot\n    function Stroke($img,$xscale,$yscale) {\n        $pattern=NULL;\n        $img->SetLineWeight($this->weight);\n        $grad=null;\n        for($i=0; $i < $this->numpoints-1; $i++) {\n            $accy = 0;\n            $accy_neg = 0;\n            for($j=0; $j < $this->nbrplots; ++$j ) {\n                $img->SetColor($this->plots[$j]->color);\n\n                if ( $this->plots[$j]->coords[0][$i] >= 0) {\n                    $yt=$yscale->Translate($this->plots[$j]->coords[0][$i]+$accy);\n                    $accyt=$yscale->Translate($accy);\n                    $accy+=$this->plots[$j]->coords[0][$i];\n                }\n                else {\n                    //if ( $this->plots[$j]->coords[0][$i] < 0 || $accy_neg < 0 ) {\n                    $yt=$yscale->Translate($this->plots[$j]->coords[0][$i]+$accy_neg);\n                    $accyt=$yscale->Translate($accy_neg);\n                    $accy_neg+=$this->plots[$j]->coords[0][$i];\n                }\n\n                $xt=$xscale->Translate($i);\n\n                if( $this->abswidth > -1 ) {\n                    $abswidth=$this->abswidth;\n                }\n                else {\n                    $abswidth=round($this->width*$xscale->scale_factor,0);\n                }\n\n                $pts=array($xt,$accyt,$xt,$yt,$xt+$abswidth,$yt,$xt+$abswidth,$accyt);\n\n                if( $this->bar_shadow ) {\n                    $ssh = $this->bar_shadow_hsize;\n                    $ssv = $this->bar_shadow_vsize;\n\n                    // We must also differ if we are a positive or negative bar.\n                    if( $j === 0 ) {\n                        // This gets extra complicated since we have to\n                        // see all plots to see if we are negative. It could\n                        // for example be that all plots are 0 until the very\n                        // last one. We therefore need to save the initial setup\n                        // for both the negative and positive case\n\n                        // In case the final bar is positive\n                        $sp[0]=$pts[6]+1; $sp[1]=$pts[7];\n                        $sp[2]=$pts[6]+$ssh; $sp[3]=$pts[7]-$ssv;\n\n                        // In case the final bar is negative\n                        $nsp[0]=$pts[0]; $nsp[1]=$pts[1];\n                        $nsp[2]=$pts[0]+$ssh; $nsp[3]=$pts[1]-$ssv;\n                        $nsp[4]=$pts[6]+$ssh; $nsp[5]=$pts[7]-$ssv;\n                        $nsp[10]=$pts[6]+1; $nsp[11]=$pts[7];\n                    }\n\n                    if( $j === $this->nbrplots-1 ) {\n                        // If this is the last plot of the bar and\n                        // the total value is larger than 0 then we\n                        // add the shadow.\n                        if( is_array($this->bar_shadow_color) ) {\n                            $numcolors = count($this->bar_shadow_color);\n                            if( $numcolors == 0 ) {\n                                JpGraphError::RaiseL(2013);//('You have specified an empty array for shadow colors in the bar plot.');\n                            }\n                            $img->PushColor($this->bar_shadow_color[$i % $numcolors]);\n                        }\n                        else {\n                            $img->PushColor($this->bar_shadow_color);\n                        }\n\n                        if( $accy > 0 ) {\n                            $sp[4]=$pts[4]+$ssh; $sp[5]=$pts[5]-$ssv;\n                            $sp[6]=$pts[2]+$ssh; $sp[7]=$pts[3]-$ssv;\n                            $sp[8]=$pts[2]; $sp[9]=$pts[3]-1;\n                            $sp[10]=$pts[4]+1; $sp[11]=$pts[5];\n                            $img->FilledPolygon($sp,4);\n                        }\n                        elseif( $accy_neg < 0 ) {\n                            $nsp[6]=$pts[4]+$ssh; $nsp[7]=$pts[5]-$ssv;\n                            $nsp[8]=$pts[4]+1; $nsp[9]=$pts[5];\n                            $img->FilledPolygon($nsp,4);\n                        }\n                        $img->PopColor();\n                    }\n                }\n\n\n                // If value is NULL or 0, then don't draw a bar at all\n                if ($this->plots[$j]->coords[0][$i] == 0 ) continue;\n\n                if( $this->plots[$j]->grad ) {\n                    if( $grad === null ) {\n                        $grad = new Gradient($img);\n                    }\n                    if( is_array($this->plots[$j]->grad_fromcolor) ) {\n                        // The first argument (grad_fromcolor) can be either an array or a single color. If it is an array\n                        // then we have two choices. It can either a) be a single color specified as an RGB triple or it can be\n                        // an array to specify both (from, to style) for each individual bar. The way to know the difference is\n                        // to investgate the first element. If this element is an integer [0,255] then we assume it is an RGB\n                        // triple.\n                        $ng = count($this->plots[$j]->grad_fromcolor);\n                        if( $ng === 3 ) {\n                            if( is_numeric($this->plots[$j]->grad_fromcolor[0]) && $this->plots[$j]->grad_fromcolor[0] > 0 &&\n                                 $this->plots[$j]->grad_fromcolor[0] < 256 ) {\n                                // RGB Triple\n                                $fromcolor = $this->plots[$j]->grad_fromcolor;\n                                $tocolor = $this->plots[$j]->grad_tocolor;\n                                $style = $this->plots[$j]->grad_style;\n                            }\n                            else {\n                                $fromcolor = $this->plots[$j]->grad_fromcolor[$i % $ng][0];\n                                $tocolor = $this->plots[$j]->grad_fromcolor[$i % $ng][1];\n                                $style = $this->plots[$j]->grad_fromcolor[$i % $ng][2];\n                            }\n                        }\n                        else {\n                            $fromcolor = $this->plots[$j]->grad_fromcolor[$i % $ng][0];\n                            $tocolor = $this->plots[$j]->grad_fromcolor[$i % $ng][1];\n                            $style = $this->plots[$j]->grad_fromcolor[$i % $ng][2];\n                        }\n                        $grad->FilledRectangle($pts[2],$pts[3],\n                                               $pts[6],$pts[7],\n                                               $fromcolor,$tocolor,$style);\n                    }\n                    else {\n                        $grad->FilledRectangle($pts[2],$pts[3],\n                                               $pts[6],$pts[7],\n                                               $this->plots[$j]->grad_fromcolor,\n                                               $this->plots[$j]->grad_tocolor,\n                                               $this->plots[$j]->grad_style);\n                    }\n                } else {\n                    if (is_array($this->plots[$j]->fill_color) ) {\n                        $numcolors = count($this->plots[$j]->fill_color);\n                        $fillcolor = $this->plots[$j]->fill_color[$i % $numcolors];\n                        // If the bar is specified to be non filled then the fill color is false\n                        if( $fillcolor !== false ) {\n                            $img->SetColor($this->plots[$j]->fill_color[$i % $numcolors]);\n                        }\n                    }\n                    else {\n                        $fillcolor = $this->plots[$j]->fill_color;\n                        if( $fillcolor !== false ) {\n                            $img->SetColor($this->plots[$j]->fill_color);\n                        }\n                    }\n                    if( $fillcolor !== false ) {\n                        $img->FilledPolygon($pts);\n                    }\n                }\n\n                $img->SetColor($this->plots[$j]->color);\n\n                // Stroke the pattern\n                if( $this->plots[$j]->iPattern > -1 ) {\n                    if( $pattern===NULL ) {\n                        $pattern = new RectPatternFactory();\n                    }\n\n                    $prect = $pattern->Create($this->plots[$j]->iPattern,$this->plots[$j]->iPatternColor,1);\n                    $prect->SetDensity($this->plots[$j]->iPatternDensity);\n                    if( $this->plots[$j]->coords[0][$i] < 0 ) {\n                        $rx = $pts[0];\n                        $ry = $pts[1];\n                    }\n                    else {\n                        $rx = $pts[2];\n                        $ry = $pts[3];\n                    }\n                    $width = abs($pts[4]-$pts[0])+1;\n                    $height = abs($pts[1]-$pts[3])+1;\n                    $prect->SetPos(new Rectangle($rx,$ry,$width,$height));\n                    $prect->Stroke($img);\n                }\n\n\n                // CSIM array\n\n                if( $i < count($this->plots[$j]->csimtargets) ) {\n                    // Create the client side image map\n                    $rpts = $img->ArrRotate($pts);\n                    $csimcoord=round($rpts[0]).\", \".round($rpts[1]);\n                    for( $k=1; $k < 4; ++$k){\n                        $csimcoord .= \", \".round($rpts[2*$k]).\", \".round($rpts[2*$k+1]);\n                    }\n                    if( ! empty($this->plots[$j]->csimtargets[$i]) ) {\n                        $this->csimareas.= '<area shape=\"poly\" coords=\"'.$csimcoord.'\" ';\n                        $this->csimareas.= \" href=\\\"\".$this->plots[$j]->csimtargets[$i].\"\\\" \";\n\n                        if( ! empty($this->plots[$j]->csimwintargets[$i]) ) {\n                            $this->csimareas.= \" target=\\\"\".$this->plots[$j]->csimwintargets[$i].\"\\\" \";\n                        }\n\n                        $sval='';\n                        if( !empty($this->plots[$j]->csimalts[$i]) ) {\n                            $sval=sprintf($this->plots[$j]->csimalts[$i],$this->plots[$j]->coords[0][$i]);\n                            $this->csimareas .= \" title=\\\"$sval\\\" \";\n                        }\n                        $this->csimareas .= \" alt=\\\"$sval\\\" />\\n\";\n                    }\n                }\n\n                $pts[] = $pts[0];\n                $pts[] = $pts[1];\n                $img->SetLineWeight($this->plots[$j]->weight);\n                $img->Polygon($pts);\n                $img->SetLineWeight(1);\n            }\n\n            // Daw potential bar around the entire accbar bar\n            if( $this->weight > 0 ) {\n                $y=$yscale->Translate(0);\n                $img->SetColor($this->color);\n                $img->SetLineWeight($this->weight);\n                $img->Rectangle($pts[0],$y,$pts[6],$pts[5]);\n            }\n\n            // Draw labels for each acc.bar\n\n            $x=$pts[2]+($pts[4]-$pts[2])/2;\n            if($this->bar_shadow) $x += $ssh;\n\n            // First stroke the accumulated value for the entire bar\n            // This value is always placed at the top/bottom of the bars\n            if( $accy + $accy_neg < 0 ) {\n                $y=$yscale->Translate($accy_neg);\n            }\n            else {\n                $y=$yscale->Translate($accy);\n            }\n            $this->value->Stroke($img,$accy + $accy_neg,$x,$y);\n\n            $accy = 0;\n            $accy_neg = 0;\n            for($j=0; $j < $this->nbrplots; ++$j ) {\n\n                // We don't print 0 values in an accumulated bar plot\n                if( $this->plots[$j]->coords[0][$i] == 0 ) continue;\n\n                if ($this->plots[$j]->coords[0][$i] > 0) {\n                    $yt=$yscale->Translate($this->plots[$j]->coords[0][$i]+$accy);\n                    $accyt=$yscale->Translate($accy);\n                    if(  $this->plots[$j]->valuepos=='center' ) {\n                        $y = $accyt-($accyt-$yt)/2;\n                    }\n                    elseif( $this->plots[$j]->valuepos=='bottom' ) {\n                        $y = $accyt;\n                    }\n                    else { // top or max\n                        $y = $accyt-($accyt-$yt);\n                    }\n                    $accy+=$this->plots[$j]->coords[0][$i];\n                    if(  $this->plots[$j]->valuepos=='center' ) {\n                        $this->plots[$j]->value->SetAlign(\"center\",\"center\");\n                        $this->plots[$j]->value->SetMargin(0);\n                    }\n                    elseif( $this->plots[$j]->valuepos=='bottom' ) {\n                        $this->plots[$j]->value->SetAlign('center','bottom');\n                        $this->plots[$j]->value->SetMargin(2);\n                    }\n                    else {\n                        $this->plots[$j]->value->SetAlign('center','top');\n                        $this->plots[$j]->value->SetMargin(1);\n                    }\n                } else {\n                    $yt=$yscale->Translate($this->plots[$j]->coords[0][$i]+$accy_neg);\n                    $accyt=$yscale->Translate($accy_neg);\n                    $accy_neg+=$this->plots[$j]->coords[0][$i];\n                    if(  $this->plots[$j]->valuepos=='center' ) {\n                        $y = $accyt-($accyt-$yt)/2;\n                    }\n                    elseif( $this->plots[$j]->valuepos=='bottom' ) {\n                        $y = $accyt;\n                    }\n                    else {\n                        $y = $accyt-($accyt-$yt);\n                    }\n                    if(  $this->plots[$j]->valuepos=='center' ) {\n                        $this->plots[$j]->value->SetAlign(\"center\",\"center\");\n                        $this->plots[$j]->value->SetMargin(0);\n                    }\n                    elseif( $this->plots[$j]->valuepos=='bottom' ) {\n                        $this->plots[$j]->value->SetAlign('center',$j==0 ? 'bottom':'top');\n                        $this->plots[$j]->value->SetMargin(-2);\n                    }\n                    else {\n                        $this->plots[$j]->value->SetAlign('center','bottom');\n                        $this->plots[$j]->value->SetMargin(-1);\n                    }\n                }\n                $this->plots[$j]->value->Stroke($img,$this->plots[$j]->coords[0][$i],round($x),round($y));\n            }\n\n        }\n        return true;\n    }\n} // Class\n\n/* EOF */\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_canvas.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_CANVAS.PHP\n // Description: Canvas drawing extension for JpGraph\n // Created:     2001-01-08\n // Ver:         $Id: jpgraph_canvas.php 1923 2010-01-11 13:48:49Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\n//===================================================\n// CLASS CanvasGraph\n// Description: Creates a simple canvas graph which\n// might be used together with the basic Image drawing\n// primitives. Useful to auickoly produce some arbitrary\n// graphic which benefits from all the functionality in the\n// graph liek caching for example.\n//===================================================\nclass CanvasGraph extends Graph {\n    //---------------\n    // CONSTRUCTOR\n    function __construct($aWidth=300,$aHeight=200,$aCachedName=\"\",$timeout=0,$inline=1) {\n        parent::__construct($aWidth,$aHeight,$aCachedName,$timeout,$inline);\n    }\n\n    //---------------\n    // PUBLIC METHODS\n\n    function InitFrame() {\n        $this->StrokePlotArea();\n    }\n\n    // Method description\n    function Stroke($aStrokeFileName=\"\") {\n        if( $this->texts != null ) {\n            for($i=0; $i < count($this->texts); ++$i) {\n                $this->texts[$i]->Stroke($this->img);\n            }\n        }\n        if( $this->iTables !== null ) {\n            for($i=0; $i < count($this->iTables); ++$i) {\n                $this->iTables[$i]->Stroke($this->img);\n            }\n        }\n        $this->StrokeTitles();\n\n        // If the filename is the predefined value = '_csim_special_'\n        // we assume that the call to stroke only needs to do enough\n        // to correctly generate the CSIM maps.\n        // We use this variable to skip things we don't strictly need\n        // to do to generate the image map to improve performance\n        // a best we can. Therefor you will see a lot of tests !$_csim in the\n        // code below.\n        $_csim = ($aStrokeFileName===_CSIM_SPECIALFILE);\n\n        // We need to know if we have stroked the plot in the\n        // GetCSIMareas. Otherwise the CSIM hasn't been generated\n        // and in the case of GetCSIM called before stroke to generate\n        // CSIM without storing an image to disk GetCSIM must call Stroke.\n        $this->iHasStroked = true;\n\n        if( !$_csim ) {\n\n            // Should we do any final image transformation\n            if( $this->iImgTrans ) {\n                if( !class_exists('ImgTrans',false) ) {\n                    require_once('jpgraph_imgtrans.php');\n                }\n\n                $tform = new ImgTrans($this->img->img);\n                $this->img->img = $tform->Skew3D($this->iImgTransHorizon,$this->iImgTransSkewDist,\n                $this->iImgTransDirection,$this->iImgTransHighQ,\n                $this->iImgTransMinSize,$this->iImgTransFillColor,\n                $this->iImgTransBorder);\n            }\n\n\n            // If the filename is given as the special _IMG_HANDLER\n            // then the image handler is returned and the image is NOT\n            // streamed back\n            if( $aStrokeFileName == _IMG_HANDLER ) {\n                return $this->img->img;\n            }\n            else {\n                // Finally stream the generated picture\n                $this->cache->PutAndStream($this->img,$this->cache_name,$this->inline,$aStrokeFileName);\n                return true;\n            }\n        }\n    }\n} // Class\n\n/* EOF */\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_canvtools.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_CANVTOOLS.PHP\n // Description: Some utilities for text and shape drawing on a canvas\n // Created:     2002-08-23\n // Ver:         $Id: jpgraph_canvtools.php 1857 2009-09-28 14:38:14Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\ndefine('CORNER_TOPLEFT',0);\ndefine('CORNER_TOPRIGHT',1);\ndefine('CORNER_BOTTOMRIGHT',2);\ndefine('CORNER_BOTTOMLEFT',3);\n\n\n//===================================================\n// CLASS CanvasScale\n// Description: Define a scale for canvas so we\n// can abstract away with absolute pixels\n//===================================================\n\nclass CanvasScale {\n    private $g;\n    private $w,$h;\n    private $ixmin=0,$ixmax=10,$iymin=0,$iymax=10;\n\n    function __construct($graph,$xmin=0,$xmax=10,$ymin=0,$ymax=10) {\n        $this->g = $graph;\n        $this->w = $graph->img->width;\n        $this->h = $graph->img->height;\n        $this->ixmin = $xmin;\n        $this->ixmax = $xmax;\n        $this->iymin = $ymin;\n        $this->iymax = $ymax;\n    }\n\n    function Set($xmin=0,$xmax=10,$ymin=0,$ymax=10) {\n        $this->ixmin = $xmin;\n        $this->ixmax = $xmax;\n        $this->iymin = $ymin;\n        $this->iymax = $ymax;\n    }\n\n    function Get() {\n        return array($this->ixmin,$this->ixmax,$this->iymin,$this->iymax);\n    }\n\n    function Translate($x,$y) {\n        $xp = round(($x-$this->ixmin)/($this->ixmax - $this->ixmin) * $this->w);\n        $yp = round(($y-$this->iymin)/($this->iymax - $this->iymin) * $this->h);\n        return array($xp,$yp);\n    }\n\n    function TranslateX($x) {\n        $xp = round(($x-$this->ixmin)/($this->ixmax - $this->ixmin) * $this->w);\n        return $xp;\n    }\n\n    function TranslateY($y) {\n        $yp = round(($y-$this->iymin)/($this->iymax - $this->iymin) * $this->h);\n        return $yp;\n    }\n\n}\n\n\n//===================================================\n// CLASS Shape\n// Description: Methods to draw shapes on canvas\n//===================================================\nclass Shape {\n    private $img,$scale;\n\n    function __construct($aGraph,$scale) {\n        $this->img = $aGraph->img;\n        $this->img->SetColor('black');\n        $this->scale = $scale;\n    }\n\n    function SetColor($aColor) {\n        $this->img->SetColor($aColor);\n    }\n\n    function Line($x1,$y1,$x2,$y2) {\n        list($x1,$y1) = $this->scale->Translate($x1,$y1);\n        list($x2,$y2) = $this->scale->Translate($x2,$y2);\n        $this->img->Line($x1,$y1,$x2,$y2);\n    }\n\n    function SetLineWeight($aWeight) {\n        $this->img->SetLineWeight($aWeight);\n    }\n\n    function Polygon($p,$aClosed=false) {\n        $n=count($p);\n        for($i=0; $i < $n; $i+=2 ) {\n            $p[$i]   = $this->scale->TranslateX($p[$i]);\n            $p[$i+1] = $this->scale->TranslateY($p[$i+1]);\n        }\n        $this->img->Polygon($p,$aClosed);\n    }\n\n    function FilledPolygon($p) {\n        $n=count($p);\n        for($i=0; $i < $n; $i+=2 ) {\n            $p[$i]   = $this->scale->TranslateX($p[$i]);\n            $p[$i+1] = $this->scale->TranslateY($p[$i+1]);\n        }\n        $this->img->FilledPolygon($p);\n    }\n\n\n    // Draw a bezier curve with defining points in the $aPnts array\n    // using $aSteps steps.\n    // 0=x0, 1=y0\n    // 2=x1, 3=y1\n    // 4=x2, 5=y2\n    // 6=x3, 7=y3\n    function Bezier($p,$aSteps=40) {\n        $x0 = $p[0];\n        $y0 = $p[1];\n        // Calculate coefficients\n        $cx = 3*($p[2]-$p[0]);\n        $bx = 3*($p[4]-$p[2])-$cx;\n        $ax = $p[6]-$p[0]-$cx-$bx;\n        $cy = 3*($p[3]-$p[1]);\n        $by = 3*($p[5]-$p[3])-$cy;\n        $ay = $p[7]-$p[1]-$cy-$by;\n\n        // Step size\n        $delta = 1.0/$aSteps;\n\n        $x_old = $x0;\n        $y_old = $y0;\n        for($t=$delta; $t<=1.0; $t+=$delta) {\n            $tt = $t*$t; $ttt=$tt*$t;\n            $x  = $ax*$ttt + $bx*$tt + $cx*$t + $x0;\n            $y = $ay*$ttt + $by*$tt + $cy*$t + $y0;\n            $this->Line($x_old,$y_old,$x,$y);\n            $x_old = $x;\n            $y_old = $y;\n        }\n        $this->Line($x_old,$y_old,$p[6],$p[7]);\n    }\n\n    function Rectangle($x1,$y1,$x2,$y2) {\n        list($x1,$y1) = $this->scale->Translate($x1,$y1);\n        list($x2,$y2)   = $this->scale->Translate($x2,$y2);\n        $this->img->Rectangle($x1,$y1,$x2,$y2);\n    }\n\n    function FilledRectangle($x1,$y1,$x2,$y2) {\n        list($x1,$y1) = $this->scale->Translate($x1,$y1);\n        list($x2,$y2)   = $this->scale->Translate($x2,$y2);\n        $this->img->FilledRectangle($x1,$y1,$x2,$y2);\n    }\n\n    function Circle($x1,$y1,$r) {\n        list($x1,$y1) = $this->scale->Translate($x1,$y1);\n        if( $r >= 0 )\n        $r   = $this->scale->TranslateX($r);\n        else\n        $r = -$r;\n        $this->img->Circle($x1,$y1,$r);\n    }\n\n    function FilledCircle($x1,$y1,$r) {\n        list($x1,$y1) = $this->scale->Translate($x1,$y1);\n        if( $r >= 0 )\n        $r   = $this->scale->TranslateX($r);\n        else\n        $r = -$r;\n        $this->img->FilledCircle($x1,$y1,$r);\n    }\n\n    function RoundedRectangle($x1,$y1,$x2,$y2,$r=null) {\n        list($x1,$y1) = $this->scale->Translate($x1,$y1);\n        list($x2,$y2)   = $this->scale->Translate($x2,$y2);\n\n        if( $r == null )\n        $r = 5;\n        elseif( $r >= 0 )\n        $r = $this->scale->TranslateX($r);\n        else\n        $r = -$r;\n        $this->img->RoundedRectangle($x1,$y1,$x2,$y2,$r);\n    }\n\n    function FilledRoundedRectangle($x1,$y1,$x2,$y2,$r=null) {\n        list($x1,$y1) = $this->scale->Translate($x1,$y1);\n        list($x2,$y2)   = $this->scale->Translate($x2,$y2);\n\n        if( $r == null )\n        $r = 5;\n        elseif( $r > 0 )\n        $r = $this->scale->TranslateX($r);\n        else\n        $r = -$r;\n        $this->img->FilledRoundedRectangle($x1,$y1,$x2,$y2,$r);\n    }\n\n    function ShadowRectangle($x1,$y1,$x2,$y2,$fcolor=false,$shadow_width=null,$shadow_color=array(102,102,102)) {\n        list($x1,$y1) = $this->scale->Translate($x1,$y1);\n        list($x2,$y2) = $this->scale->Translate($x2,$y2);\n        if( $shadow_width == null )\n        $shadow_width=4;\n        else\n        $shadow_width=$this->scale->TranslateX($shadow_width);\n        $this->img->ShadowRectangle($x1,$y1,$x2,$y2,$fcolor,$shadow_width,$shadow_color);\n    }\n\n    function SetTextAlign($halign,$valign=\"bottom\") {\n        $this->img->SetTextAlign($halign,$valign=\"bottom\");\n    }\n\n    function StrokeText($x1,$y1,$txt,$dir=0,$paragraph_align=\"left\") {\n        list($x1,$y1) = $this->scale->Translate($x1,$y1);\n        $this->img->StrokeText($x1,$y1,$txt,$dir,$paragraph_align);\n    }\n\n    // A rounded rectangle where one of the corner has been moved \"into\" the\n    // rectangle 'iw' width and 'ih' height. Corners:\n    // 0=Top left, 1=top right, 2=bottom right, 3=bottom left\n    function IndentedRectangle($xt,$yt,$w,$h,$iw=0,$ih=0,$aCorner=3,$aFillColor=\"\",$r=4) {\n\n        list($xt,$yt) = $this->scale->Translate($xt,$yt);\n        list($w,$h)   = $this->scale->Translate($w,$h);\n        list($iw,$ih) = $this->scale->Translate($iw,$ih);\n\n        $xr = $xt + $w - 0;\n        $yl = $yt + $h - 0;\n\n        switch( $aCorner ) {\n            case 0: // Upper left\n                 \n                // Bottom line, left &  right arc\n                $this->img->Line($xt+$r,$yl,$xr-$r,$yl);\n                $this->img->Arc($xt+$r,$yl-$r,$r*2,$r*2,90,180);\n                $this->img->Arc($xr-$r,$yl-$r,$r*2,$r*2,0,90);\n\n                // Right line, Top right arc\n                $this->img->Line($xr,$yt+$r,$xr,$yl-$r);\n                $this->img->Arc($xr-$r,$yt+$r,$r*2,$r*2,270,360);\n\n                // Top line, Top left arc\n                $this->img->Line($xt+$iw+$r,$yt,$xr-$r,$yt);\n                $this->img->Arc($xt+$iw+$r,$yt+$r,$r*2,$r*2,180,270);\n\n                // Left line\n                $this->img->Line($xt,$yt+$ih+$r,$xt,$yl-$r);\n\n                // Indent horizontal, Lower left arc\n                $this->img->Line($xt+$r,$yt+$ih,$xt+$iw-$r,$yt+$ih);\n                $this->img->Arc($xt+$r,$yt+$ih+$r,$r*2,$r*2,180,270);\n\n                // Indent vertical, Indent arc\n                $this->img->Line($xt+$iw,$yt+$r,$xt+$iw,$yt+$ih-$r);\n                $this->img->Arc($xt+$iw-$r,$yt+$ih-$r,$r*2,$r*2,0,90);\n\n                if( $aFillColor != '' ) {\n                    $bc = $this->img->current_color_name;\n                    $this->img->PushColor($aFillColor);\n                    $this->img->FillToBorder($xr-$r,$yl-$r,$bc);\n                    $this->img->PopColor();\n                }\n\n                break;\n\n            case 1: // Upper right\n\n                // Bottom line, left &  right arc\n                $this->img->Line($xt+$r,$yl,$xr-$r,$yl);\n                $this->img->Arc($xt+$r,$yl-$r,$r*2,$r*2,90,180);\n                $this->img->Arc($xr-$r,$yl-$r,$r*2,$r*2,0,90);\n\n                // Left line, Top left arc\n                $this->img->Line($xt,$yt+$r,$xt,$yl-$r);\n                $this->img->Arc($xt+$r,$yt+$r,$r*2,$r*2,180,270);\n\n                // Top line, Top right arc\n                $this->img->Line($xt+$r,$yt,$xr-$iw-$r,$yt);\n                $this->img->Arc($xr-$iw-$r,$yt+$r,$r*2,$r*2,270,360);\n\n                // Right line\n                $this->img->Line($xr,$yt+$ih+$r,$xr,$yl-$r);\n\n                // Indent horizontal, Lower right arc\n                $this->img->Line($xr-$iw+$r,$yt+$ih,$xr-$r,$yt+$ih);\n                $this->img->Arc($xr-$r,$yt+$ih+$r,$r*2,$r*2,270,360);\n\n                // Indent vertical, Indent arc\n                $this->img->Line($xr-$iw,$yt+$r,$xr-$iw,$yt+$ih-$r);\n                $this->img->Arc($xr-$iw+$r,$yt+$ih-$r,$r*2,$r*2,90,180);\n\n                if( $aFillColor != '' ) {\n                    $bc = $this->img->current_color_name;\n                    $this->img->PushColor($aFillColor);\n                    $this->img->FillToBorder($xt+$r,$yl-$r,$bc);\n                    $this->img->PopColor();\n                }\n\n                break;\n\n            case 2: // Lower right\n                // Top line, Top left & Top right arc\n                $this->img->Line($xt+$r,$yt,$xr-$r,$yt);\n                $this->img->Arc($xt+$r,$yt+$r,$r*2,$r*2,180,270);\n                $this->img->Arc($xr-$r,$yt+$r,$r*2,$r*2,270,360);\n\n                // Left line, Bottom left arc\n                $this->img->Line($xt,$yt+$r,$xt,$yl-$r);\n                $this->img->Arc($xt+$r,$yl-$r,$r*2,$r*2,90,180);\n\n                // Bottom line, Bottom right arc\n                $this->img->Line($xt+$r,$yl,$xr-$iw-$r,$yl);\n                $this->img->Arc($xr-$iw-$r,$yl-$r,$r*2,$r*2,0,90);\n\n                // Right line\n                $this->img->Line($xr,$yt+$r,$xr,$yl-$ih-$r);\n                 \n                // Indent horizontal, Lower right arc\n                $this->img->Line($xr-$r,$yl-$ih,$xr-$iw+$r,$yl-$ih);\n                $this->img->Arc($xr-$r,$yl-$ih-$r,$r*2,$r*2,0,90);\n\n                // Indent vertical, Indent arc\n                $this->img->Line($xr-$iw,$yl-$r,$xr-$iw,$yl-$ih+$r);\n                $this->img->Arc($xr-$iw+$r,$yl-$ih+$r,$r*2,$r*2,180,270);\n\n                if( $aFillColor != '' ) {\n                    $bc = $this->img->current_color_name;\n                    $this->img->PushColor($aFillColor);\n                    $this->img->FillToBorder($xt+$r,$yt+$r,$bc);\n                    $this->img->PopColor();\n                }\n\n                break;\n\n            case 3: // Lower left\n                // Top line, Top left & Top right arc\n                $this->img->Line($xt+$r,$yt,$xr-$r,$yt);\n                $this->img->Arc($xt+$r,$yt+$r,$r*2,$r*2,180,270);\n                $this->img->Arc($xr-$r,$yt+$r,$r*2,$r*2,270,360);\n\n                // Right line, Bottom right arc\n                $this->img->Line($xr,$yt+$r,$xr,$yl-$r);\n                $this->img->Arc($xr-$r,$yl-$r,$r*2,$r*2,0,90);\n\n                // Bottom line, Bottom left arc\n                $this->img->Line($xt+$iw+$r,$yl,$xr-$r,$yl);\n                $this->img->Arc($xt+$iw+$r,$yl-$r,$r*2,$r*2,90,180);\n\n                // Left line\n                $this->img->Line($xt,$yt+$r,$xt,$yl-$ih-$r);\n                 \n                // Indent horizontal, Lower left arc\n                $this->img->Line($xt+$r,$yl-$ih,$xt+$iw-$r,$yl-$ih);\n                $this->img->Arc($xt+$r,$yl-$ih-$r,$r*2,$r*2,90,180);\n\n                // Indent vertical, Indent arc\n                $this->img->Line($xt+$iw,$yl-$ih+$r,$xt+$iw,$yl-$r);\n                $this->img->Arc($xt+$iw-$r,$yl-$ih+$r,$r*2,$r*2,270,360);\n\n                if( $aFillColor != '' ) {\n                    $bc = $this->img->current_color_name;\n                    $this->img->PushColor($aFillColor);\n                    $this->img->FillToBorder($xr-$r,$yt+$r,$bc);\n                    $this->img->PopColor();\n                }\n\n                break;\n        }\n    }\n}\n\n\n//===================================================\n// CLASS RectangleText\n// Description: Draws a text paragraph inside a\n// rounded, possible filled, rectangle.\n//===================================================\nclass CanvasRectangleText {\n    private $ix,$iy,$iw,$ih,$ir=4;\n    private $iTxt,$iColor='black',$iFillColor='',$iFontColor='black';\n    private $iParaAlign='center';\n    private $iAutoBoxMargin=5;\n    private $iShadowWidth=3,$iShadowColor='';\n\n    function __construct($aTxt='',$xl=0,$yt=0,$w=0,$h=0) {\n        $this->iTxt = new Text($aTxt);\n        $this->ix = $xl;\n        $this->iy = $yt;\n        $this->iw = $w;\n        $this->ih = $h;\n    }\n\n    function SetShadow($aColor='gray',$aWidth=3) {\n        $this->iShadowColor = $aColor;\n        $this->iShadowWidth = $aWidth;\n    }\n\n    function SetFont($FontFam,$aFontStyle,$aFontSize=12) {\n        $this->iTxt->SetFont($FontFam,$aFontStyle,$aFontSize);\n    }\n\n    function SetTxt($aTxt) {\n        $this->iTxt->Set($aTxt);\n    }\n\n    function ParagraphAlign($aParaAlign) {\n        $this->iParaAlign = $aParaAlign;\n    }\n\n    function SetFillColor($aFillColor) {\n        $this->iFillColor = $aFillColor;\n    }\n\n    function SetAutoMargin($aMargin) {\n        $this->iAutoBoxMargin=$aMargin;\n    }\n\n    function SetColor($aColor) {\n        $this->iColor = $aColor;\n    }\n\n    function SetFontColor($aColor) {\n        $this->iFontColor = $aColor;\n    }\n\n    function SetPos($xl=0,$yt=0,$w=0,$h=0) {\n        $this->ix = $xl;\n        $this->iy = $yt;\n        $this->iw = $w;\n        $this->ih = $h;\n    }\n\n    function Pos($xl=0,$yt=0,$w=0,$h=0) {\n        $this->ix = $xl;\n        $this->iy = $yt;\n        $this->iw = $w;\n        $this->ih = $h;\n    }\n\n    function Set($aTxt,$xl,$yt,$w=0,$h=0) {\n        $this->iTxt->Set($aTxt);\n        $this->ix = $xl;\n        $this->iy = $yt;\n        $this->iw = $w;\n        $this->ih = $h;\n    }\n\n    function SetCornerRadius($aRad=5) {\n        $this->ir = $aRad;\n    }\n\n    function Stroke($aImg,$scale) {\n\n        // If coordinates are specifed as negative this means we should\n        // treat them as abolsute (pixels) coordinates\n        if( $this->ix > 0 ) {\n            $this->ix = $scale->TranslateX($this->ix) ;\n        }\n        else {\n            $this->ix = -$this->ix;\n        }\n\n        if( $this->iy > 0 ) {\n            $this->iy = $scale->TranslateY($this->iy) ;\n        }\n        else {\n            $this->iy = -$this->iy;\n        }\n         \n        list($this->iw,$this->ih) = $scale->Translate($this->iw,$this->ih) ;\n\n        if( $this->iw == 0 )\n        $this->iw = round($this->iTxt->GetWidth($aImg) + $this->iAutoBoxMargin);\n        if( $this->ih == 0 ) {\n            $this->ih = round($this->iTxt->GetTextHeight($aImg) + $this->iAutoBoxMargin);\n        }\n\n        if( $this->iShadowColor != '' ) {\n            $aImg->PushColor($this->iShadowColor);\n            $aImg->FilledRoundedRectangle($this->ix+$this->iShadowWidth,\n            $this->iy+$this->iShadowWidth,\n            $this->ix+$this->iw-1+$this->iShadowWidth,\n            $this->iy+$this->ih-1+$this->iShadowWidth,\n            $this->ir);\n            $aImg->PopColor();\n        }\n\n        if( $this->iFillColor != '' ) {\n            $aImg->PushColor($this->iFillColor);\n            $aImg->FilledRoundedRectangle($this->ix,$this->iy,\n            $this->ix+$this->iw-1,\n            $this->iy+$this->ih-1,\n            $this->ir);\n            $aImg->PopColor();\n        }\n\n        if( $this->iColor != '' ) {\n            $aImg->PushColor($this->iColor);\n            $aImg->RoundedRectangle($this->ix,$this->iy,\n            $this->ix+$this->iw-1,\n            $this->iy+$this->ih-1,\n            $this->ir);\n            $aImg->PopColor();\n        }\n\n        $this->iTxt->Align('center','center');\n        $this->iTxt->ParagraphAlign($this->iParaAlign);\n        $this->iTxt->SetColor($this->iFontColor);\n        $this->iTxt->Stroke($aImg, $this->ix+$this->iw/2, $this->iy+$this->ih/2);\n\n        return array($this->iw, $this->ih);\n\n    }\n\n}\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_contour.php",
    "content": "<?php\n/*=======================================================================\n// File:        JPGRAPH_CONTOUR.PHP\n// Description: Contour plot\n// Created:     2009-03-08\n// Ver:         $Id: jpgraph_contour.php 1870 2009-09-29 04:24:18Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n*/\nrequire_once('jpgraph_meshinterpolate.inc.php');\ndefine('HORIZ_EDGE',0);\ndefine('VERT_EDGE',1);\n\n/**\n * This class encapsulates the core contour plot algorithm. It will find the path\n * of the specified isobars in the data matrix specified. It is assumed that the\n * data matrix models an equspaced X-Y mesh of datavalues corresponding to the Z\n * values.\n *\n */\nclass Contour {\n\n    private $dataPoints = array();\n    private $nbrCols=0,$nbrRows=0;\n    private $horizEdges = array(), $vertEdges=array();\n    private $isobarValues = array();\n    private $stack = null;\n    private $isobarCoord = array();\n    private $nbrIsobars = 10, $isobarColors = array();\n    private $invert = true;\n    private $highcontrast = false, $highcontrastbw = false;\n\n    private $edges = array(); //MiToTeam: explicit class member declared\n\n    /**\n     * Create a new contour level \"algorithm machine\".\n     * @param $aMatrix    The values to find the contour from\n     * @param $aIsobars Mixed. If integer it determines the number of isobars to be used. The levels are determined\n     * automatically as equdistance between the min and max value of the matrice.\n     * If $aIsobars is an array then this is interpretated as an array of values to be used as isobars in the\n     * contour plot.\n     * @return an instance of the contour algorithm\n     */\n    function __construct($aMatrix,$aIsobars=10, $aColors=null) {\n\n        $this->nbrRows = count($aMatrix);\n        $this->nbrCols = count($aMatrix[0]);\n        $this->dataPoints = $aMatrix;\n\n        if( is_array($aIsobars) ) {\n            // use the isobar values supplied\n            $this->nbrIsobars = count($aIsobars);\n            $this->isobarValues = $aIsobars;\n        }\n        else {\n            // Determine the isobar values automatically\n            $this->nbrIsobars = $aIsobars;\n            list($min,$max) = $this->getMinMaxVal();\n            $stepSize = ($max-$min) / $aIsobars ;\n            $isobar = $min+$stepSize/2;\n            for ($i = 0; $i < $aIsobars; $i++) {\n                $this->isobarValues[$i] = $isobar;\n                $isobar += $stepSize;\n            }\n        }\n\n        if( $aColors !== null && count($aColors) > 0 ) {\n\n            if( !is_array($aColors) ) {\n                JpGraphError::RaiseL(28001);\n                //'Third argument to Contour must be an array of colors.'\n            }\n\n            if( count($aColors) != count($this->isobarValues) ) {\n                JpGraphError::RaiseL(28002);\n                //'Number of colors must equal the number of isobar lines specified';\n            }\n\n            $this->isobarColors = $aColors;\n        }\n    }\n\n    /**\n     * Flip the plot around the Y-coordinate. This has the same affect as flipping the input\n     * data matrice\n     *\n     * @param $aFlg If true the the vertice in input data matrice position (0,0) corresponds to the top left\n     * corner of teh plot otherwise it will correspond to the bottom left corner (a horizontal flip)\n     */\n    function SetInvert($aFlg=true) {\n        $this->invert = $aFlg;\n    }\n\n    /**\n     * Find the min and max values in the data matrice\n     *\n     * @return array(min_value,max_value)\n     */\n    function getMinMaxVal() {\n        $min = $this->dataPoints[0][0];\n        $max = $this->dataPoints[0][0];\n        for ($i = 0; $i < $this->nbrRows; $i++) {\n            if( ($mi=min($this->dataPoints[$i])) < $min )  $min = $mi;\n            if( ($ma=max($this->dataPoints[$i])) > $max )  $max = $ma;\n        }\n        return array($min,$max);\n    }\n\n    /**\n     * Reset the two matrices that keeps track on where the isobars crosses the\n     * horizontal and vertical edges\n     */\n    function resetEdgeMatrices() {\n        for ($k = 0; $k < 2; $k++) {\n            for ($i = 0; $i <= $this->nbrRows; $i++) {\n                for ($j = 0; $j <= $this->nbrCols; $j++) {\n                    $this->edges[$k][$i][$j] = false;\n                }\n            }\n        }\n    }\n\n    /**\n     * Determine if the specified isobar crosses the horizontal edge specified by its row and column\n     *\n     * @param $aRow Row index of edge to be checked\n     * @param $aCol Col index of edge to be checked\n     * @param $aIsobar Isobar value\n     * @return true if the isobar is crossing this edge\n     */\n    function isobarHCrossing($aRow,$aCol,$aIsobar) {\n\n        if( $aCol >= $this->nbrCols-1 ) {\n            JpGraphError::RaiseL(28003,$aCol);\n            //'ContourPlot Internal Error: isobarHCrossing: Coloumn index too large (%d)'\n        }\n        if( $aRow >= $this->nbrRows ) {\n            JpGraphError::RaiseL(28004,$aRow);\n            //'ContourPlot Internal Error: isobarHCrossing: Row index too large (%d)'\n        }\n\n        $v1 = $this->dataPoints[$aRow][$aCol];\n        $v2 = $this->dataPoints[$aRow][$aCol+1];\n\n        return ($aIsobar-$v1)*($aIsobar-$v2) < 0 ;\n\n    }\n\n    /**\n     * Determine if the specified isobar crosses the vertical edge specified by its row and column\n     *\n     * @param $aRow Row index of edge to be checked\n     * @param $aCol Col index of edge to be checked\n     * @param $aIsobar Isobar value\n     * @return true if the isobar is crossing this edge\n     */\n    function isobarVCrossing($aRow,$aCol,$aIsobar) {\n\n        if( $aRow >= $this->nbrRows-1) {\n            JpGraphError::RaiseL(28005,$aRow);\n            //'isobarVCrossing: Row index too large\n        }\n        if( $aCol >= $this->nbrCols ) {\n            JpGraphError::RaiseL(28006,$aCol);\n            //'isobarVCrossing: Col index too large\n        }\n\n        $v1 = $this->dataPoints[$aRow][$aCol];\n        $v2 = $this->dataPoints[$aRow+1][$aCol];\n\n        return ($aIsobar-$v1)*($aIsobar-$v2) < 0 ;\n\n    }\n\n    /**\n     * Determine all edges, horizontal and vertical that the specified isobar crosses. The crossings\n     * are recorded in the two edge matrices.\n     *\n     * @param $aIsobar The value of the isobar to be checked\n     */\n    function determineIsobarEdgeCrossings($aIsobar) {\n\n        $ib = $this->isobarValues[$aIsobar];\n\n        for ($i = 0; $i < $this->nbrRows-1; $i++) {\n            for ($j = 0; $j < $this->nbrCols-1; $j++) {\n                $this->edges[HORIZ_EDGE][$i][$j] = $this->isobarHCrossing($i,$j,$ib);\n                $this->edges[VERT_EDGE][$i][$j] = $this->isobarVCrossing($i,$j,$ib);\n            }\n        }\n\n        // We now have the bottom and rightmost edges unsearched\n        for ($i = 0; $i < $this->nbrRows-1; $i++) {\n            $this->edges[VERT_EDGE][$i][$j] = $this->isobarVCrossing($i,$this->nbrCols-1,$ib);\n        }\n        for ($j = 0; $j < $this->nbrCols-1; $j++) {\n            $this->edges[HORIZ_EDGE][$i][$j] = $this->isobarHCrossing($this->nbrRows-1,$j,$ib);\n        }\n\n    }\n\n    /**\n     * Return the normalized coordinates for the crossing of the specified edge with the specified\n     * isobar- The crossing is simpy detrmined with a linear interpolation between the two vertices\n     * on each side of the edge and the value of the isobar\n     *\n     * @param $aRow Row of edge\n     * @param $aCol Column of edge\n     * @param $aEdgeDir Determine if this is a horizontal or vertical edge\n     * @param $ib The isobar value\n     * @return unknown_type\n     */\n    function getCrossingCoord($aRow,$aCol,$aEdgeDir,$aIsobarVal) {\n\n        // In order to avoid numerical problem when two vertices are very close\n        // we have to check and avoid dividing by close to zero denumerator.\n        if( $aEdgeDir == HORIZ_EDGE ) {\n            $d = abs($this->dataPoints[$aRow][$aCol] - $this->dataPoints[$aRow][$aCol+1]);\n            if( $d > 0.001 ) {\n                $xcoord = $aCol + abs($aIsobarVal - $this->dataPoints[$aRow][$aCol]) / $d;\n            }\n            else {\n                $xcoord = $aCol;\n            }\n            $ycoord = $aRow;\n        }\n        else {\n            $d = abs($this->dataPoints[$aRow][$aCol] - $this->dataPoints[$aRow+1][$aCol]);\n            if( $d > 0.001 ) {\n                $ycoord = $aRow + abs($aIsobarVal - $this->dataPoints[$aRow][$aCol]) / $d;\n            }\n            else {\n                $ycoord = $aRow;\n            }\n            $xcoord = $aCol;\n        }\n        if( $this->invert ) {\n            $ycoord = $this->nbrRows-1 - $ycoord;\n        }\n        return array($xcoord,$ycoord);\n\n    }\n\n    /**\n     * In order to avoid all kinds of unpleasent extra checks and complex boundary\n     * controls for the degenerated case where the contour levels exactly crosses\n     * one of the vertices we add a very small delta (0.1%) to the data point value.\n     * This has no visible affect but it makes the code sooooo much cleaner.\n     *\n     */\n    function adjustDataPointValues() {\n\n        $ni = count($this->isobarValues);\n        for ($k = 0; $k < $ni; $k++) {\n            $ib = $this->isobarValues[$k];\n            for ($row = 0 ; $row < $this->nbrRows-1; ++$row) {\n                for ($col = 0 ; $col < $this->nbrCols-1; ++$col ) {\n                    if( abs($this->dataPoints[$row][$col] - $ib) < 0.0001 ) {\n                        $this->dataPoints[$row][$col] += $this->dataPoints[$row][$col]*0.001;\n                    }\n                }\n            }\n        }\n\n    }\n\n    /**\n     * @param $aFlg\n     * @param $aBW\n     * @return unknown_type\n     */\n    function UseHighContrastColor($aFlg=true,$aBW=false) {\n        $this->highcontrast = $aFlg;\n        $this->highcontrastbw = $aBW;\n    }\n\n    /**\n     * Calculate suitable colors for each defined isobar\n     *\n     */\n    function CalculateColors() {\n        if ( $this->highcontrast ) {\n            if ( $this->highcontrastbw ) {\n                for ($ib = 0; $ib < $this->nbrIsobars; $ib++) {\n                    $this->isobarColors[$ib] = 'black';\n                }\n            }\n            else {\n                // Use only blue/red scale\n                $step = round(255/($this->nbrIsobars-1));\n                for ($ib = 0; $ib < $this->nbrIsobars; $ib++) {\n                    $this->isobarColors[$ib] = array($ib*$step, 50, 255-$ib*$step);\n                }\n            }\n        }\n        else {\n            $n = $this->nbrIsobars;\n            $v = 0; $step = 1 / ($this->nbrIsobars-1);\n            for ($ib = 0; $ib < $this->nbrIsobars; $ib++) {\n                $this->isobarColors[$ib] = RGB::GetSpectrum($v);\n                $v += $step;\n            }\n        }\n    }\n\n    /**\n     * This is where the main work is done. For each isobar the crossing of the edges are determined\n     * and then each cell is analyzed to find the 0, 2 or 4 crossings. Then the normalized coordinate\n     * for the crossings are determined and pushed on to the isobar stack. When the method is finished\n     * the $isobarCoord will hold one arrayfor each isobar where all the line segments that makes\n     * up the contour plot are stored.\n     *\n     * @return array( $isobarCoord, $isobarValues, $isobarColors )\n     */\n    function getIsobars() {\n\n        $this->adjustDataPointValues();\n\n        for ($isobar = 0; $isobar < $this->nbrIsobars; $isobar++) {\n\n            $ib = $this->isobarValues[$isobar];\n            $this->resetEdgeMatrices();\n            $this->determineIsobarEdgeCrossings($isobar);\n            $this->isobarCoord[$isobar] = array();\n\n            $ncoord = 0;\n\n            for ($row = 0 ; $row < $this->nbrRows-1; ++$row) {\n                for ($col = 0 ; $col < $this->nbrCols-1; ++$col ) {\n\n                    // Find out how many crossings around the edges\n                    $n = 0;\n                    if ( $this->edges[HORIZ_EDGE][$row][$col] )   $neigh[$n++] = array($row,  $col,  HORIZ_EDGE);\n                    if ( $this->edges[HORIZ_EDGE][$row+1][$col] ) $neigh[$n++] = array($row+1,$col,  HORIZ_EDGE);\n                    if ( $this->edges[VERT_EDGE][$row][$col] )    $neigh[$n++] = array($row,  $col,  VERT_EDGE);\n                    if ( $this->edges[VERT_EDGE][$row][$col+1] )  $neigh[$n++] = array($row,  $col+1,VERT_EDGE);\n\n                    if ( $n == 2 ) {\n                        $n1=0; $n2=1;\n                        $this->isobarCoord[$isobar][$ncoord++] = array(\n                        $this->getCrossingCoord($neigh[$n1][0],$neigh[$n1][1],$neigh[$n1][2],$ib),\n                        $this->getCrossingCoord($neigh[$n2][0],$neigh[$n2][1],$neigh[$n2][2],$ib) );\n                    }\n                    elseif ( $n == 4 ) {\n                        // We must determine how to connect the edges either northwest->southeast or\n                        // northeast->southwest. We do that by calculating the imaginary middle value of\n                        // the cell by averaging the for corners. This will compared with the value of the\n                        // top left corner will help determine the orientation of the ridge/creek\n                        $midval = ($this->dataPoints[$row][$col]+$this->dataPoints[$row][$col+1]+$this->dataPoints[$row+1][$col]+$this->dataPoints[$row+1][$col+1])/4;\n                        $v = $this->dataPoints[$row][$col];\n                        if( $midval == $ib ) {\n                            // Orientation \"+\"\n                            $n1=0; $n2=1; $n3=2; $n4=3;\n                        } elseif ( ($midval > $ib && $v > $ib) ||  ($midval < $ib && $v < $ib) ) {\n                            // Orientation of ridge/valley = \"\\\"\n                            $n1=0; $n2=3; $n3=2; $n4=1;\n                        } elseif ( ($midval > $ib && $v < $ib) ||  ($midval < $ib && $v > $ib) ) {\n                            // Orientation of ridge/valley = \"/\"\n                            $n1=0; $n2=2; $n3=3; $n4=1;\n                        }\n\n                        $this->isobarCoord[$isobar][$ncoord++] = array(\n                        $this->getCrossingCoord($neigh[$n1][0],$neigh[$n1][1],$neigh[$n1][2],$ib),\n                        $this->getCrossingCoord($neigh[$n2][0],$neigh[$n2][1],$neigh[$n2][2],$ib) );\n\n                        $this->isobarCoord[$isobar][$ncoord++] = array(\n                        $this->getCrossingCoord($neigh[$n3][0],$neigh[$n3][1],$neigh[$n3][2],$ib),\n                        $this->getCrossingCoord($neigh[$n4][0],$neigh[$n4][1],$neigh[$n4][2],$ib) );\n\n                    }\n                }\n            }\n        }\n\n        if( count($this->isobarColors) == 0 ) {\n            // No manually specified colors. Calculate them automatically.\n            $this->CalculateColors();\n        }\n        return array( $this->isobarCoord, $this->isobarValues, $this->isobarColors );\n    }\n}\n\n\n/**\n * This class represent a plotting of a contour outline of data given as a X-Y matrice\n *\n */\nclass ContourPlot extends Plot {\n\n    private $contour, $contourCoord, $contourVal, $contourColor;\n    private $nbrContours = 0 ; //MiToTeam: was $nbrCountours in original sources\n\n    private $dataMatrix = array();\n    private $invertLegend = false;\n    private $interpFactor = 1;\n    private $flipData = false;\n    private $isobar = 10;\n    private $showLegend = false;\n    private $highcontrast = false, $highcontrastbw = false;\n    private $manualIsobarColors = array();\n\n    /**\n     * Construct a contour plotting algorithm. The end result of the algorithm is a sequence of\n     * line segments for each isobar given as two vertices.\n     *\n     * @param $aDataMatrix    The Z-data to be used\n     * @param $aIsobar A mixed variable, if it is an integer then this specified the number of isobars to use.\n     * The values of the isobars are automatically detrmined to be equ-spaced between the min/max value of the\n     * data. If it is an array then it explicetely gives the isobar values\n     * @param $aInvert By default the matrice with row index 0 corresponds to Y-value 0, i.e. in the bottom of\n     * the plot. If this argument is true then the row with the highest index in the matrice corresponds  to\n     * Y-value 0. In affect flipping the matrice around an imaginary horizontal axis.\n     * @param $aHighContrast Use high contrast colors (blue/red:ish)\n     * @param $aHighContrastBW Use only black colors for contours\n     * @return an instance of the contour plot algorithm\n     */\n    function __construct($aDataMatrix, $aIsobar=10, $aFactor=1, $aInvert=false, $aIsobarColors=array()) {\n\n        $this->dataMatrix = $aDataMatrix;\n        $this->flipData = $aInvert;\n        $this->isobar = $aIsobar;\n        $this->interpFactor = $aFactor;\n\n        if ( $this->interpFactor > 1 ) {\n\n            if( $this->interpFactor > 5 ) {\n                JpGraphError::RaiseL(28007);// ContourPlot interpolation factor is too large (>5)\n            }\n\n            $ip = new MeshInterpolate();\n            $this->dataMatrix = $ip->Linear($this->dataMatrix, $this->interpFactor);\n        }\n\n        $this->contour = new Contour($this->dataMatrix,$this->isobar,$aIsobarColors);\n\n        if( is_array($aIsobar) )\n            $this->nbrContours = count($aIsobar);\n        else\n            $this->nbrContours = $aIsobar;\n    }\n\n\n    /**\n     * Flipe the data around the center\n     *\n     * @param $aFlg\n     *\n     */\n    function SetInvert($aFlg=true) {\n        $this->flipData = $aFlg;\n    }\n\n    /**\n     * Set the colors for the isobar lines\n     *\n     * @param $aColorArray\n     *\n     */\n    function SetIsobarColors($aColorArray) {\n        $this->manualIsobarColors = $aColorArray;\n    }\n\n    /**\n     * Show the legend\n     *\n     * @param $aFlg true if the legend should be shown\n     *\n     */\n    function ShowLegend($aFlg=true) {\n        $this->showLegend = $aFlg;\n    }\n\n\n    /**\n     * @param $aFlg true if the legend should start with the lowest isobar on top\n     * @return unknown_type\n     */\n    function Invertlegend($aFlg=true) {\n        $this->invertLegend = $aFlg;\n    }\n\n    /* Internal method. Give the min value to be used for the scaling\n     *\n     */\n    function Min() {\n        return array(0,0);\n    }\n\n    /* Internal method. Give the max value to be used for the scaling\n     *\n     */\n    function Max() {\n        return array(count($this->dataMatrix[0])-1,count($this->dataMatrix)-1);\n    }\n\n    /**\n     * Internal ramewrok method to setup the legend to be used for this plot.\n     * @param $aGraph The parent graph class\n     */\n    function Legend($aGraph) {\n\n        if( ! $this->showLegend )\n            return;\n\n        if( $this->invertLegend ) {\n            for ($i = 0; $i < $this->nbrContours; $i++) {\n                $aGraph->legend->Add(sprintf('%.1f',$this->contourVal[$i]), $this->contourColor[$i]);\n            }\n        }\n        else {\n            for ($i = $this->nbrContours-1; $i >= 0 ; $i--) {\n                $aGraph->legend->Add(sprintf('%.1f',$this->contourVal[$i]), $this->contourColor[$i]);\n            }\n        }\n    }\n\n\n    /**\n     *  Framework function which gets called before the Stroke() method is called\n     *\n     *  @see Plot#PreScaleSetup($aGraph)\n     *\n     */\n    function PreScaleSetup($aGraph) {\n        $xn = count($this->dataMatrix[0])-1;\n        $yn = count($this->dataMatrix)-1;\n\n        $aGraph->xaxis->scale->Update($aGraph->img,0,$xn);\n        $aGraph->yaxis->scale->Update($aGraph->img,0,$yn);\n\n        $this->contour->SetInvert($this->flipData);\n        list($this->contourCoord,$this->contourVal,$this->contourColor) = $this->contour->getIsobars();\n    }\n\n    /**\n     * Use high contrast color schema\n     *\n     * @param $aFlg True, to use high contrast color\n     * @param $aBW True, Use only black and white color schema\n     */\n    function UseHighContrastColor($aFlg=true,$aBW=false) {\n        $this->highcontrast = $aFlg;\n        $this->highcontrastbw = $aBW;\n        $this->contour->UseHighContrastColor($this->highcontrast,$this->highcontrastbw);\n    }\n\n    /**\n     * Internal method. Stroke the contour plot to the graph\n     *\n     * @param $img Image handler\n     * @param $xscale Instance of the xscale to use\n     * @param $yscale Instance of the yscale to use\n     */\n    function Stroke($img,$xscale,$yscale) {\n\n        if( count($this->manualIsobarColors) > 0 ) {\n            $this->contourColor = $this->manualIsobarColors;\n            if( count($this->manualIsobarColors) != $this->nbrContours ) {\n                JpGraphError::RaiseL(28002);\n            }\n        }\n\n        $img->SetLineWeight($this->line_weight);\n\n        for ($c = 0; $c < $this->nbrContours; $c++) {\n\n            $img->SetColor( $this->contourColor[$c] );\n\n            $n = count($this->contourCoord[$c]);\n            $i = 0;\n            while ( $i < $n ) {\n                list($x1,$y1) = $this->contourCoord[$c][$i][0];\n                $x1t = $xscale->Translate($x1);\n                $y1t = $yscale->Translate($y1);\n\n                list($x2,$y2) = $this->contourCoord[$c][$i++][1];\n                $x2t = $xscale->Translate($x2);\n                $y2t = $yscale->Translate($y2);\n\n                $img->Line($x1t,$y1t,$x2t,$y2t);\n            }\n\n        }\n    }\n\n}\n\n// EOF\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_date.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_DATE.PHP\n // Description: Classes to handle Date scaling\n // Created:     2005-05-02\n // Ver:         $Id: jpgraph_date.php 1106 2009-02-22 20:16:35Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\ndefine('HOURADJ_1',0+30);\ndefine('HOURADJ_2',1+30);\ndefine('HOURADJ_3',2+30);\ndefine('HOURADJ_4',3+30);\ndefine('HOURADJ_6',4+30);\ndefine('HOURADJ_12',5+30);\n\ndefine('MINADJ_1',0+20);\ndefine('MINADJ_5',1+20);\ndefine('MINADJ_10',2+20);\ndefine('MINADJ_15',3+20);\ndefine('MINADJ_30',4+20);\n\ndefine('SECADJ_1',0);\ndefine('SECADJ_5',1);\ndefine('SECADJ_10',2);\ndefine('SECADJ_15',3);\ndefine('SECADJ_30',4);\n\n\ndefine('YEARADJ_1',0+30);\ndefine('YEARADJ_2',1+30);\ndefine('YEARADJ_5',2+30);\n\ndefine('MONTHADJ_1',0+20);\ndefine('MONTHADJ_6',1+20);\n\ndefine('DAYADJ_1',0);\ndefine('DAYADJ_WEEK',1);\ndefine('DAYADJ_7',1);\n\ndefine('SECPERYEAR',31536000);\ndefine('SECPERDAY',86400);\ndefine('SECPERHOUR',3600);\ndefine('SECPERMIN',60);\n\n\nclass DateScale extends LinearScale {\n    private $date_format = '';\n    private $iStartAlign = false, $iEndAlign = false;\n    private $iStartTimeAlign = false, $iEndTimeAlign = false;\n\n    //---------------\n    // CONSTRUCTOR\n    function __construct($aMin=0,$aMax=0,$aType='x') {\n        assert($aType==\"x\");\n        assert($aMin<=$aMax);\n\n        $this->type=$aType;\n        $this->scale=array($aMin,$aMax);\n        $this->world_size=$aMax-$aMin;\n        $this->ticks = new LinearTicks();\n        $this->intscale=true;\n    }\n\n\n    //------------------------------------------------------------------------------------------\n    // Utility Function AdjDate()\n    // Description: Will round a given time stamp to an even year, month or day\n    // argument.\n    //------------------------------------------------------------------------------------------\n\n    function AdjDate($aTime,$aRound=0,$aYearType=false,$aMonthType=false,$aDayType=false) {\n        $y = (int)date('Y',$aTime); $m = (int)date('m',$aTime); $d = (int)date('d',$aTime);\n        $h=0;$i=0;$s=0;\n        if( $aYearType !== false ) {\n            $yearAdj = array(0=>1, 1=>2, 2=>5);\n            if( $aRound == 0 ) {\n                $y = floor($y/$yearAdj[$aYearType])*$yearAdj[$aYearType];\n            }\n            else {\n                ++$y;\n                $y = ceil($y/$yearAdj[$aYearType])*$yearAdj[$aYearType];\n            }\n            $m=1;$d=1;\n        }\n        elseif( $aMonthType !== false ) {\n            $monthAdj = array(0=>1, 1=>6);\n            if( $aRound == 0 ) {\n                $m = floor($m/$monthAdj[$aMonthType])*$monthAdj[$aMonthType];\n                $d=1;\n            }\n            else {\n                ++$m;\n                $m = ceil($m/$monthAdj[$aMonthType])*$monthAdj[$aMonthType];\n                $d=1;\n            }\n        }\n        elseif( $aDayType !== false ) {\n            if( $aDayType == 0 ) {\n                if( $aRound == 1 ) {\n                    //++$d;\n                    $h=23;$i=59;$s=59;\n                }\n            }\n            else {\n                // Adjust to an even week boundary.\n                $w = (int)date('w',$aTime); // Day of week 0=Sun, 6=Sat\n                if( true ) { // Adjust to start on Mon\n                    if( $w==0 ) $w=6;\n                    else --$w;\n                }\n                if( $aRound == 0 ) {\n                    $d -= $w;\n                }\n                else {\n                    $d += (7-$w);\n                    $h=23;$i=59;$s=59;\n                }\n            }\n        }\n        return mktime($h,$i,$s,$m,$d,$y);\n\n    }\n\n    //------------------------------------------------------------------------------------------\n    // Wrapper for AdjDate that will round a timestamp to an even date rounding\n    // it downwards.\n    //------------------------------------------------------------------------------------------\n    function AdjStartDate($aTime,$aYearType=false,$aMonthType=false,$aDayType=false) {\n        return $this->AdjDate($aTime,0,$aYearType,$aMonthType,$aDayType);\n    }\n\n    //------------------------------------------------------------------------------------------\n    // Wrapper for AdjDate that will round a timestamp to an even date rounding\n    // it upwards\n    //------------------------------------------------------------------------------------------\n    function AdjEndDate($aTime,$aYearType=false,$aMonthType=false,$aDayType=false) {\n        return $this->AdjDate($aTime,1,$aYearType,$aMonthType,$aDayType);\n    }\n\n    //------------------------------------------------------------------------------------------\n    // Utility Function AdjTime()\n    // Description: Will round a given time stamp to an even time according to\n    // argument.\n    //------------------------------------------------------------------------------------------\n\n    function AdjTime($aTime,$aRound=0,$aHourType=false,$aMinType=false,$aSecType=false) {\n        $y = (int)date('Y',$aTime); $m = (int)date('m',$aTime); $d = (int)date('d',$aTime);\n        $h = (int)date('H',$aTime); $i = (int)date('i',$aTime); $s = (int)date('s',$aTime);\n        if( $aHourType !== false ) {\n            $aHourType %= 6;\n            $hourAdj = array(0=>1, 1=>2, 2=>3, 3=>4, 4=>6, 5=>12);\n            if( $aRound == 0 )\n            $h = floor($h/$hourAdj[$aHourType])*$hourAdj[$aHourType];\n            else {\n                if( ($h % $hourAdj[$aHourType]==0) && ($i > 0 || $s > 0) ) {\n                    $h++;\n                }\n                $h = ceil($h/$hourAdj[$aHourType])*$hourAdj[$aHourType];\n                if( $h >= 24 ) {\n                    $aTime += 86400;\n                    $y = (int)date('Y',$aTime); $m = (int)date('m',$aTime); $d = (int)date('d',$aTime);\n                    $h -= 24;\n                }\n            }\n            $i=0;$s=0;\n        }\n        elseif( $aMinType !== false ) {\n            $aMinType %= 5;\n            $minAdj = array(0=>1, 1=>5, 2=>10, 3=>15, 4=>30);\n            if( $aRound == 0 ) {\n                $i = floor($i/$minAdj[$aMinType])*$minAdj[$aMinType];\n            }\n            else {\n                if( ($i % $minAdj[$aMinType]==0) && $s > 0 ) {\n                    $i++;\n                }\n                $i = ceil($i/$minAdj[$aMinType])*$minAdj[$aMinType];\n                if( $i >= 60) {\n                    $aTime += 3600;\n                    $y = (int)date('Y',$aTime); $m = (int)date('m',$aTime); $d = (int)date('d',$aTime);\n                    $h = (int)date('H',$aTime); $i = 0;\n                }\n            }\n            $s=0;\n        }\n        elseif( $aSecType !== false ) {\n            $aSecType %= 5;\n            $secAdj = array(0=>1, 1=>5, 2=>10, 3=>15, 4=>30);\n            if( $aRound == 0 ) {\n                $s = floor($s/$secAdj[$aSecType])*$secAdj[$aSecType];\n            }\n            else {\n                $s = ceil($s/$secAdj[$aSecType]*1.0)*$secAdj[$aSecType];\n                if( $s >= 60) {\n                    $s=0;\n                    $aTime += 60;\n                    $y = (int)date('Y',$aTime); $m = (int)date('m',$aTime); $d = (int)date('d',$aTime);\n                    $h = (int)date('H',$aTime); $i = (int)date('i',$aTime);\n                }\n            }\n        }\n        return mktime($h,$i,$s,$m,$d,$y);\n    }\n\n    //------------------------------------------------------------------------------------------\n    // Wrapper for AdjTime that will round a timestamp to an even time rounding\n    // it downwards.\n    // Example: AdjStartTime(mktime(18,27,13,2,22,2005),false,2) => 18:20\n    //------------------------------------------------------------------------------------------\n    function AdjStartTime($aTime,$aHourType=false,$aMinType=false,$aSecType=false) {\n        return $this->AdjTime($aTime,0,$aHourType,$aMinType,$aSecType);\n    }\n\n    //------------------------------------------------------------------------------------------\n    // Wrapper for AdjTime that will round a timestamp to an even time rounding\n    // it upwards\n    // Example: AdjEndTime(mktime(18,27,13,2,22,2005),false,2) => 18:30\n    //------------------------------------------------------------------------------------------\n    function AdjEndTime($aTime,$aHourType=false,$aMinType=false,$aSecType=false) {\n        return $this->AdjTime($aTime,1,$aHourType,$aMinType,$aSecType);\n    }\n\n    //------------------------------------------------------------------------------------------\n    // DateAutoScale\n    // Autoscale a date axis given start and end time\n    // Returns an array ($start,$end,$major,$minor,$format)\n    //------------------------------------------------------------------------------------------\n    function DoDateAutoScale($aStartTime,$aEndTime,$aDensity=0,$aAdjust=true) {\n        // Format of array\n        // array ( Decision point,  array( array( Major-scale-step-array ),\n        //       array( Minor-scale-step-array ),\n        //       array( 0=date-adjust, 1=time-adjust, adjustment-alignment) )\n        //\n        $scalePoints =\n        array(\n        /* Intervall larger than 10 years */\n        SECPERYEAR*10,array(array(SECPERYEAR*5,SECPERYEAR*2),\n        array(SECPERYEAR),\n        array(0,YEARADJ_1, 0,YEARADJ_1) ),\n\n        /* Intervall larger than 2 years */\n        SECPERYEAR*2,array(array(SECPERYEAR),array(SECPERYEAR),\n        array(0,YEARADJ_1) ),\n\n        /* Intervall larger than 90 days (approx 3 month) */\n        SECPERDAY*90,array(array(SECPERDAY*30,SECPERDAY*14,SECPERDAY*7,SECPERDAY),\n        array(SECPERDAY*5,SECPERDAY*7,SECPERDAY,SECPERDAY),\n        array(0,MONTHADJ_1, 0,DAYADJ_WEEK, 0,DAYADJ_1, 0,DAYADJ_1)),\n\n        /* Intervall larger than 30 days (approx 1 month) */\n        SECPERDAY*30,array(array(SECPERDAY*14,SECPERDAY*7,SECPERDAY*2, SECPERDAY),\n        array(SECPERDAY,SECPERDAY,SECPERDAY,SECPERDAY),\n        array(0,DAYADJ_WEEK, 0,DAYADJ_1, 0,DAYADJ_1, 0,DAYADJ_1)),\n\n        /* Intervall larger than 7 days */\n        SECPERDAY*7,array(array(SECPERDAY,SECPERHOUR*12,SECPERHOUR*6,SECPERHOUR*2),\n        array(SECPERHOUR*6,SECPERHOUR*3,SECPERHOUR,SECPERHOUR),\n        array(0,DAYADJ_1, 1,HOURADJ_12, 1,HOURADJ_6, 1,HOURADJ_1)),\n\n        /* Intervall larger than 1 day */\n        SECPERDAY,array(array(SECPERDAY,SECPERHOUR*12,SECPERHOUR*6,SECPERHOUR*2,SECPERHOUR),\n        array(SECPERHOUR*6,SECPERHOUR*2,SECPERHOUR,SECPERHOUR,SECPERHOUR),\n        array(1,HOURADJ_12, 1,HOURADJ_6, 1,HOURADJ_1, 1,HOURADJ_1)),\n\n        /* Intervall larger than 12 hours */\n        SECPERHOUR*12,array(array(SECPERHOUR*2,SECPERHOUR,SECPERMIN*30,900,600),\n        array(1800,1800,900,300,300),\n        array(1,HOURADJ_1, 1,MINADJ_30, 1,MINADJ_15, 1,MINADJ_10, 1,MINADJ_5) ),\n\n        /* Intervall larger than 2 hours */\n        SECPERHOUR*2,array(array(SECPERHOUR,SECPERMIN*30,900,600,300),\n        array(1800,900,300,120,60),\n        array(1,HOURADJ_1, 1,MINADJ_30, 1,MINADJ_15, 1,MINADJ_10, 1,MINADJ_5) ),\n\n        /* Intervall larger than 1 hours */\n        SECPERHOUR,array(array(SECPERMIN*30,900,600,300),array(900,300,120,60),\n        array(1,MINADJ_30, 1,MINADJ_15, 1,MINADJ_10, 1,MINADJ_5) ),\n\n        /* Intervall larger than 30 min */\n        SECPERMIN*30,array(array(SECPERMIN*15,SECPERMIN*10,SECPERMIN*5,SECPERMIN),\n        array(300,300,60,10),\n        array(1,MINADJ_15, 1,MINADJ_10, 1,MINADJ_5, 1,MINADJ_1)),\n\n        /* Intervall larger than 1 min */\n        SECPERMIN,array(array(SECPERMIN,15,10,5),\n        array(15,5,2,1),\n        array(1,MINADJ_1, 1,SECADJ_15, 1,SECADJ_10, 1,SECADJ_5)),\n\n        /* Intervall larger than 10 sec */\n        10,array(array(5,2),\n        array(1,1),\n        array(1,SECADJ_5, 1,SECADJ_1)),\n\n        /* Intervall larger than 1 sec */\n        1,array(array(1),\n        array(1),\n        array(1,SECADJ_1)),\n        );\n\n        $ns = count($scalePoints);\n        // Establish major and minor scale units for the date scale\n        $diff = $aEndTime - $aStartTime;\n        if( $diff < 1 ) return false;\n        $done=false;\n        $i=0;\n        while( ! $done ) {\n            if( $diff > $scalePoints[2*$i] ) {\n                // Get major and minor scale for this intervall\n                $scaleSteps = $scalePoints[2*$i+1];\n                $major = $scaleSteps[0][min($aDensity,count($scaleSteps[0])-1)];\n                // Try to find out which minor step looks best\n                $minor = $scaleSteps[1][min($aDensity,count($scaleSteps[1])-1)];\n                if( $aAdjust ) {\n                    // Find out how we should align the start and end timestamps\n                    $idx = 2*min($aDensity,floor(count($scaleSteps[2])/2)-1);\n                    if( $scaleSteps[2][$idx] === 0 ) {\n                        // Use date adjustment\n                        $adj = $scaleSteps[2][$idx+1];\n                        if( $adj >= 30 ) {\n                            $start = $this->AdjStartDate($aStartTime,$adj-30);\n                            $end   = $this->AdjEndDate($aEndTime,$adj-30);\n                        }\n                        elseif( $adj >= 20 ) {\n                            $start = $this->AdjStartDate($aStartTime,false,$adj-20);\n                            $end   = $this->AdjEndDate($aEndTime,false,$adj-20);\n                        }\n                        else {\n                            $start = $this->AdjStartDate($aStartTime,false,false,$adj);\n                            $end   = $this->AdjEndDate($aEndTime,false,false,$adj);\n                            // We add 1 second for date adjustment to make sure we end on 00:00 the following day\n                            // This makes the final major tick be srawn when we step day-by-day instead of ending\n                            // on xx:59:59 which would not draw the final major tick\n                            $end++;\n                        }\n                    }\n                    else {\n                        // Use time adjustment\n                        $adj = $scaleSteps[2][$idx+1];\n                        if( $adj >= 30 ) {\n                            $start = $this->AdjStartTime($aStartTime,$adj-30);\n                            $end   = $this->AdjEndTime($aEndTime,$adj-30);\n                        }\n                        elseif( $adj >= 20 ) {\n                            $start = $this->AdjStartTime($aStartTime,false,$adj-20);\n                            $end   = $this->AdjEndTime($aEndTime,false,$adj-20);\n                        }\n                        else {\n                            $start = $this->AdjStartTime($aStartTime,false,false,$adj);\n                            $end   = $this->AdjEndTime($aEndTime,false,false,$adj);\n                        }\n                    }\n                }\n                // If the overall date span is larger than 1 day ten we show date\n                $format = '';\n                if( ($end-$start) > SECPERDAY ) {\n                    $format = 'Y-m-d ';\n                }\n                // If the major step is less than 1 day we need to whow hours + min\n                if( $major < SECPERDAY ) {\n                    $format .= 'H:i';\n                }\n                // If the major step is less than 1 min we need to show sec\n                if( $major < 60 ) {\n                    $format .= ':s';\n                }\n                $done=true;\n            }\n            ++$i;\n        }\n        return array($start,$end,$major,$minor,$format);\n    }\n\n    // Overrides the automatic determined date format. Must be a valid date() format string\n    function SetDateFormat($aFormat) {\n        $this->date_format = $aFormat;\n        $this->ticks->SetLabelDateFormat($this->date_format);\n    }\n\n    function AdjustForDST($aFlg=true) {\n        $this->ticks->AdjustForDST($aFlg);\n    }\n\n\n    function SetDateAlign($aStartAlign,$aEndAlign=false) {\n        if( $aEndAlign === false ) {\n            $aEndAlign=$aStartAlign;\n        }\n        $this->iStartAlign = $aStartAlign;\n        $this->iEndAlign = $aEndAlign;\n    }\n\n    function SetTimeAlign($aStartAlign,$aEndAlign=false) {\n        if( $aEndAlign === false ) {\n            $aEndAlign=$aStartAlign;\n        }\n        $this->iStartTimeAlign = $aStartAlign;\n        $this->iEndTimeAlign = $aEndAlign;\n    }\n\n\n    function AutoScale($img,$aStartTime,$aEndTime,$aNumSteps,$_adummy=false) {\n        // We need to have one dummy argument to make the signature of AutoScale()\n        // identical to LinearScale::AutoScale\n        if( $aStartTime == $aEndTime ) {\n            // Special case when we only have one data point.\n            // Create a small artificial interval to do the autoscaling\n            $aStartTime -= 10;\n            $aEndTime += 10;\n        }\n        if( abs($aEndTime - $aStartTime) <= 1 ) {\n            // Special case when we only have one second.\n            // Create a small artificial interval to do the autoscaling\n            $aStartTime -= 1;\n            $aEndTime += 1;\n        }\n        $done=false;\n        $i=0;\n        while( ! $done && $i < 5) {\n            list($adjstart,$adjend,$maj,$min,$format) = $this->DoDateAutoScale($aStartTime,$aEndTime,$i);\n            $n = floor(($adjend-$adjstart)/$maj);\n            if( $n * 1.7 > $aNumSteps ) {\n                $done=true;\n            }\n            $i++;\n        }\n\n        /*\n         if( 0 ) { // DEBUG\n         echo \"    Start =\".date(\"Y-m-d H:i:s\",$aStartTime).\"<br>\";\n         echo \"    End   =\".date(\"Y-m-d H:i:s\",$aEndTime).\"<br>\";\n         echo \"Adj Start =\".date(\"Y-m-d H:i:s\",$adjstart).\"<br>\";\n         echo \"Adj End   =\".date(\"Y-m-d H:i:s\",$adjend).\"<p>\";\n         echo \"Major = $maj s, \".floor($maj/60).\"min, \".floor($maj/3600).\"h, \".floor($maj/86400).\"day<br>\";\n         echo \"Min = $min s, \".floor($min/60).\"min, \".floor($min/3600).\"h, \".floor($min/86400).\"day<br>\";\n         echo \"Format=$format<p>\";\n         }\n         */\n\n        if( $this->iStartTimeAlign !== false && $this->iStartAlign !== false ) {\n            JpGraphError::RaiseL(3001);\n            //('It is only possible to use either SetDateAlign() or SetTimeAlign() but not both');\n        }\n\n        if( $this->iStartTimeAlign !== false ) {\n            if( $this->iStartTimeAlign >= 30 ) {\n                $adjstart = $this->AdjStartTime($aStartTime,$this->iStartTimeAlign-30);\n            }\n            elseif(  $this->iStartTimeAlign >= 20 ) {\n                $adjstart = $this->AdjStartTime($aStartTime,false,$this->iStartTimeAlign-20);\n            }\n            else {\n                $adjstart = $this->AdjStartTime($aStartTime,false,false,$this->iStartTimeAlign);\n            }\n        }\n        if( $this->iEndTimeAlign !== false ) {\n            if( $this->iEndTimeAlign >= 30 ) {\n                $adjend = $this->AdjEndTime($aEndTime,$this->iEndTimeAlign-30);\n            }\n            elseif(  $this->iEndTimeAlign >= 20 ) {\n                $adjend = $this->AdjEndTime($aEndTime,false,$this->iEndTimeAlign-20);\n            }\n            else {\n                $adjend = $this->AdjEndTime($aEndTime,false,false,$this->iEndTimeAlign);\n            }\n        }\n\n\n\n        if( $this->iStartAlign !== false ) {\n            if( $this->iStartAlign >= 30 ) {\n                $adjstart = $this->AdjStartDate($aStartTime,$this->iStartAlign-30);\n            }\n            elseif(  $this->iStartAlign >= 20 ) {\n                $adjstart = $this->AdjStartDate($aStartTime,false,$this->iStartAlign-20);\n            }\n            else {\n                $adjstart = $this->AdjStartDate($aStartTime,false,false,$this->iStartAlign);\n            }\n        }\n        if( $this->iEndAlign !== false ) {\n            if( $this->iEndAlign >= 30 ) {\n                $adjend = $this->AdjEndDate($aEndTime,$this->iEndAlign-30);\n            }\n            elseif(  $this->iEndAlign >= 20 ) {\n                $adjend = $this->AdjEndDate($aEndTime,false,$this->iEndAlign-20);\n            }\n            else {\n                $adjend = $this->AdjEndDate($aEndTime,false,false,$this->iEndAlign);\n            }\n        }\n        $this->Update($img,$adjstart,$adjend);\n        if( ! $this->ticks->IsSpecified() )\n        $this->ticks->Set($maj,$min);\n        if( $this->date_format == '' )\n        $this->ticks->SetLabelDateFormat($format);\n        else\n        $this->ticks->SetLabelDateFormat($this->date_format);\n    }\n}\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_errhandler.inc.php",
    "content": "<?php\n//=======================================================================\n// File:        JPGRAPH_ERRHANDLER.PHP\n// Description: Error handler class together with handling of localized\n//              error messages. All localized error messages are stored\n//              in a separate file under the \"lang/\" subdirectory.\n// Created:     2006-09-24\n// Ver:         $Id: jpgraph_errhandler.inc.php 1920 2009-12-08 10:02:26Z ljp $\n//\n// Copyright 2006 (c) Aditus Consulting. All rights reserved.\n//========================================================================\n\nif( !defined('DEFAULT_ERR_LOCALE') ) {\n    define('DEFAULT_ERR_LOCALE','en');\n}\n\nif( !defined('USE_IMAGE_ERROR_HANDLER') ) {\n    define('USE_IMAGE_ERROR_HANDLER',true);\n}\n\nGLOBAL $__jpg_err_locale ;\n$__jpg_err_locale = DEFAULT_ERR_LOCALE;\n\nclass ErrMsgText {\n    private $lt=NULL;\n    function __construct() {\n        GLOBAL $__jpg_err_locale;\n        $file = 'lang/'.$__jpg_err_locale.'.inc.php';\n\n        // If the chosen locale doesn't exist try english\n        if( !file_exists(dirname(__FILE__).'/'.$file) ) {\n            $__jpg_err_locale = 'en';\n        }\n\n        $file = 'lang/'.$__jpg_err_locale.'.inc.php';\n        if( !file_exists(dirname(__FILE__).'/'.$file) ) {\n            die('Chosen locale file (\"'.$file.'\") for error messages does not exist or is not readable for the PHP process. Please make sure that the file exists and that the file permissions are such that the PHP process is allowed to read this file.');\n        }\n        require($file);\n        $this->lt = $_jpg_messages;\n    }\n\n    function Get($errnbr,$a1=null,$a2=null,$a3=null,$a4=null,$a5=null) {\n        GLOBAL $__jpg_err_locale;\n        if( !isset($this->lt[$errnbr]) ) {\n            return 'Internal error: The specified error message ('.$errnbr.') does not exist in the chosen locale ('.$__jpg_err_locale.')';\n        }\n        $ea = $this->lt[$errnbr];\n        $j=0;\n        if( $a1 !== null ) {\n            $argv[$j++] = $a1;\n            if( $a2 !== null ) {\n                $argv[$j++] = $a2;\n                if( $a3 !== null ) {\n                    $argv[$j++] = $a3;\n                    if( $a4 !== null ) {\n                        $argv[$j++] = $a4;\n                        if( $a5 !== null ) {\n                            $argv[$j++] = $a5;\n                        }\n                    }\n                }\n            }\n        }\n        $numargs = $j;\n        if( $ea[1] != $numargs ) {\n            // Error message argument count do not match.\n            // Just return the error message without arguments.\n            return $ea[0];\n        }\n        switch( $numargs ) {\n            case 1:\n                $msg = sprintf($ea[0],$argv[0]);\n                break;\n            case 2:\n                $msg = sprintf($ea[0],$argv[0],$argv[1]);\n                break;\n            case 3:\n                $msg = sprintf($ea[0],$argv[0],$argv[1],$argv[2]);\n                break;\n            case 4:\n                $msg = sprintf($ea[0],$argv[0],$argv[1],$argv[2],$argv[3]);\n                break;\n            case 5:\n                $msg = sprintf($ea[0],$argv[0],$argv[1],$argv[2],$argv[3],$argv[4]);\n                break;\n            case 0:\n            default:\n                $msg = sprintf($ea[0]);\n                break;\n        }\n        return $msg;\n    }\n}\n     \n//\n// A wrapper class that is used to access the specified error object\n// (to hide the global error parameter and avoid having a GLOBAL directive\n// in all methods.\n//\nclass JpGraphError {\n    private static $__iImgFlg = true;\n    private static $__iLogFile = '';\n    private static $__iTitle = 'JpGraph Error: ';\n    public static function Raise($aMsg,$aHalt=true){\n        throw new JpGraphException($aMsg);\n    }\n    public static function SetErrLocale($aLoc) {\n        GLOBAL $__jpg_err_locale ;\n        $__jpg_err_locale = $aLoc;\n    }\n    public static function RaiseL($errnbr,$a1=null,$a2=null,$a3=null,$a4=null,$a5=null) {\n        throw new JpGraphExceptionL($errnbr,$a1,$a2,$a3,$a4,$a5);\n    }\n    public static function SetImageFlag($aFlg=true) {\n    \tself::$__iImgFlg = $aFlg;\n    }\n    public static function GetImageFlag() {\n    \treturn self::$__iImgFlg;\n    }\n    public static function SetLogFile($aFile) {\n    \tself::$__iLogFile = $aFile;\n    }\n    public static function GetLogFile() {\n    \treturn self::$__iLogFile;\n    }\n    public static function SetTitle($aTitle) {\n    \tself::$__iTitle = $aTitle;\n    }\n    public static function GetTitle() {\n    \treturn self::$__iTitle;\n    }    \n}\n\nclass JpGraphException extends Exception {\n    // Redefine the exception so message isn't optional\n    public function __construct($message, $code = 0) {\n        // make sure everything is assigned properly\n        parent::__construct($message, $code);\n    }\n    // custom string representation of object\n    public function _toString() {\n        return __CLASS__ . \": [{$this->code}]: {$this->message} at \" . basename($this->getFile()) . \":\" . $this->getLine() . \"\\n\" . $this->getTraceAsString() . \"\\n\";\n    }\n    // custom representation of error as an image\n    public function Stroke() {\n    \tif( JpGraphError::GetImageFlag() ) {\n        \t$errobj = new JpGraphErrObjectImg();\n        \t$errobj->SetTitle(JpGraphError::GetTitle());\n    \t}\n    \telse {    \t\t\n    \t\t$errobj = new JpGraphErrObject();\n        \t$errobj->SetTitle(JpGraphError::GetTitle());    \t\t\n    \t\t$errobj->SetStrokeDest(JpGraphError::GetLogFile());\n    \t}\n        $errobj->Raise($this->getMessage());\n    }\n    static public function defaultHandler(Throwable $exception) {\n        global $__jpg_OldHandler;\n        if( $exception instanceof JpGraphException ) {\n            $exception->Stroke();\n        }\n        else {\n            // Restore old handler\n            if( $__jpg_OldHandler !== NULL ) {\n                set_exception_handler($__jpg_OldHandler);\n            }\n            throw $exception;\n        }\n    }\n}\n\nclass JpGraphExceptionL extends JpGraphException {\n   // Redefine the exception so message isn't optional\n    public function __construct($errcode,$a1=null,$a2=null,$a3=null,$a4=null,$a5=null) {\n        // make sure everything is assigned properly\n        $errtxt = new ErrMsgText();\n        JpGraphError::SetTitle('JpGraph Error: '.$errcode);\n        parent::__construct($errtxt->Get($errcode,$a1,$a2,$a3,$a4,$a5), 0);\n    }\n}\n\n// Setup the default handler\nglobal $__jpg_OldHandler;\n$__jpg_OldHandler = set_exception_handler(array('JpGraphException','defaultHandler'));\n\n//\n// First of all set up a default error handler\n//\n\n//=============================================================\n// The default trivial text error handler.\n//=============================================================\nclass JpGraphErrObject {\n\n    protected $iTitle = \"JpGraph error: \";\n    protected $iDest = false;\n\n\n    function __construct() {\n        // Empty. Reserved for future use\n    }\n\n    function SetTitle($aTitle) {\n        $this->iTitle = $aTitle;\n    }\n\n    function SetStrokeDest($aDest) {\n        $this->iDest = $aDest;\n    }\n\n    // If aHalt is true then execution can't continue. Typical used for fatal errors\n    function Raise($aMsg,$aHalt=false) {\n        if( $this->iDest != '' ) {\n        \tif( $this->iDest == 'syslog' ) {\n        \t\terror_log($this->iTitle.$aMsg);\t\n        \t} \n        \telse {\n        \t\t$str = '['.date('r').'] '.$this->iTitle.$aMsg.\"\\n\";\n        \t\t$f = @fopen($this->iDest,'a');\n    \t        if( $f ) {            \t\n        \t        @fwrite($f,$str);\n            \t    @fclose($f);\n            \t}\n        \t}\n        }\n        else {\n        \t$aMsg = $this->iTitle.$aMsg;        \t\n        \t// Check SAPI and if we are called from the command line\n        \t// send the error to STDERR instead\n        \tif( PHP_SAPI == 'cli' ) {\n        \t\tfwrite(STDERR,$aMsg);\n        \t}\n        \telse {\n            \techo $aMsg;\n        \t}\n        }\n        if( $aHalt )\n        \texit(1);\n    }\n}\n\n//==============================================================\n// An image based error handler\n//==============================================================\nclass JpGraphErrObjectImg extends JpGraphErrObject {\n    \n    function __construct() {\n        parent::__construct();\n        // Empty. Reserved for future use\n    }\n\n    function Raise($aMsg,$aHalt=true) {\n        $img_iconerror =\n     'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAAaV'.\n     'BMVEX//////2Xy8mLl5V/Z2VvMzFi/v1WyslKlpU+ZmUyMjEh/'.\n     'f0VyckJlZT9YWDxMTDjAwMDy8sLl5bnY2K/MzKW/v5yyspKlpY'.\n     'iYmH+MjHY/PzV/f2xycmJlZVlZWU9MTEXY2Ms/PzwyMjLFTjea'.\n     'AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACx'.\n     'IAAAsSAdLdfvwAAAAHdElNRQfTBgISOCqusfs5AAABLUlEQVR4'.\n     '2tWV3XKCMBBGWfkranCIVClKLd/7P2Q3QsgCxjDTq+6FE2cPH+'.\n     'xJ0Ogn2lQbsT+Wrs+buAZAV4W5T6Bs0YXBBwpKgEuIu+JERAX6'.\n     'wM2rHjmDdEITmsQEEmWADgZm6rAjhXsoMGY9B/NZBwJzBvn+e3'.\n     'wHntCAJdGu9SviwIwoZVDxPB9+Rc0TSEbQr0j3SA1gwdSn6Db0'.\n     '6Tm1KfV6yzWGQO7zdpvyKLKBDmRFjzeB3LYgK7r6A/noDAfjtS'.\n     'IXaIzbJSv6WgUebTMV4EoRB8a2mQiQjgtF91HdKDKZ1gtFtQjk'.\n     'YcWaR5OKOhkYt+ZsTFdJRfPAApOpQYJTNHvCRSJR6SJngQadfc'.\n     'vd69OLMddVOPCGVnmrFD8bVYd3JXfxXPtLR/+mtv59/ALWiiMx'.\n     'qL72fwAAAABJRU5ErkJggg==' ;\n\n        \n        if( function_exists(\"imagetypes\") ) {\n            $supported = imagetypes();\n        } else {\n            $supported = 0;\n        }\n\n        if( !function_exists('imagecreatefromstring') ) {\n            $supported = 0;\n        }\n        \n        if( ob_get_length() || headers_sent() || !($supported & IMG_PNG) ) {\n            // Special case for headers already sent or that the installation doesn't support\n            // the PNG format (which the error icon is encoded in).\n            // Dont return an image since it can't be displayed\n            die($this->iTitle.' '.$aMsg);\n        }\n\n        $aMsg = wordwrap($aMsg,55);\n        $lines = substr_count($aMsg,\"\\n\");\n\n        // Create the error icon GD\n        $erricon = Image::CreateFromString(base64_decode($img_iconerror));\n\n        // Create an image that contains the error text.\n        $w=400;\n        $h=100 + 15*max(0,$lines-3);\n\n        $img = new Image($w,$h);\n\n\n        // Drop shadow\n        $img->SetColor(\"gray\");\n        $img->FilledRectangle(5,5,$w-1,$h-1,10);\n        $img->SetColor(\"gray:0.7\");\n        $img->FilledRectangle(5,5,$w-3,$h-3,10);\n\n        // Window background\n        $img->SetColor(\"lightblue\");\n        $img->FilledRectangle(1,1,$w-5,$h-5);\n        $img->CopyCanvasH($img->img,$erricon,5,30,0,0,40,40);\n\n        // Window border\n        $img->SetColor(\"black\");\n        $img->Rectangle(1,1,$w-5,$h-5);\n        $img->Rectangle(0,0,$w-4,$h-4);\n\n        // Window top row\n        $img->SetColor(\"darkred\");\n        for($y=3; $y < 18; $y += 2 )\n        $img->Line(1,$y,$w-6,$y);\n\n        // \"White shadow\"\n        $img->SetColor(\"white\");\n\n        // Left window edge\n        $img->Line(2,2,2,$h-5);\n        $img->Line(2,2,$w-6,2);\n\n        // \"Gray button shadow\"\n        $img->SetColor(\"darkgray\");\n\n        // Gray window shadow\n        $img->Line(2,$h-6,$w-5,$h-6);\n        $img->Line(3,$h-7,$w-5,$h-7);\n\n        // Window title\n        $m = floor($w/2-5);\n        $l = 110;\n        $img->SetColor(\"lightgray:1.3\");\n        $img->FilledRectangle($m-$l,2,$m+$l,16);\n\n        // Stroke text\n        $img->SetColor(\"darkred\");\n        $img->SetFont(FF_FONT2,FS_BOLD);\n        $img->StrokeText($m-90,15,$this->iTitle);\n        $img->SetColor(\"black\");\n        $img->SetFont(FF_FONT1,FS_NORMAL);\n        $txt = new Text($aMsg,52,25);\n        $txt->SetFont(FF_FONT1);\n        $txt->Align(\"left\",\"top\");\n        $txt->Stroke($img);\n        if ($this->iDest) {\n            $img->Stream($this->iDest);\n        } else {\n            $img->Headers();\n            $img->Stream();\n        }\n        if( $aHalt )\n            die();\n    }\n}\n\n\n\nif( ! USE_IMAGE_ERROR_HANDLER ) {\n\tJpGraphError::SetImageFlag(false);\n}\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_error.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_ERROR.PHP\n // Description: Error plot extension for JpGraph\n // Created:     2001-01-08\n // Ver:         $Id: jpgraph_error.php 1106 2009-02-22 20:16:35Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n   \n//===================================================\n// CLASS ErrorPlot\n// Description: Error plot with min/max value for\n// each datapoint\n//===================================================\nclass ErrorPlot extends Plot {\n    private $errwidth=2;\n    \n    //---------------\n    // CONSTRUCTOR\n    function __construct($datay,$datax=false) {\n        parent::__construct($datay,$datax);\n        $this->numpoints /= 2;\n    }\n    //---------------\n    // PUBLIC METHODS\n\n    // Gets called before any axis are stroked\n    function PreStrokeAdjust($graph) {\n        if( $this->center ) {\n            $a=0.5; $b=0.5;\n            ++$this->numpoints;\n        } else {\n            $a=0; $b=0;\n        }\n        $graph->xaxis->scale->ticks->SetXLabelOffset($a);\n        $graph->SetTextScaleOff($b);\n        //$graph->xaxis->scale->ticks->SupressMinorTickMarks();\n    }\n\n    // Method description\n    function Stroke($img,$xscale,$yscale) {\n        $numpoints=count($this->coords[0])/2;\n        $img->SetColor($this->color);\n        $img->SetLineWeight($this->weight);\n\n        if( isset($this->coords[1]) ) {\n            if( count($this->coords[1])!=$numpoints )\n            JpGraphError::RaiseL(2003,count($this->coords[1]),$numpoints);\n            //(\"Number of X and Y points are not equal. Number of X-points:\".count($this->coords[1]).\" Number of Y-points:$numpoints\");\n            else\n            $exist_x = true;\n        }\n        else\n        $exist_x = false;\n\n        for( $i=0; $i<$numpoints; ++$i) {\n            if( $exist_x )\n            $x=$this->coords[1][$i];\n            else\n            $x=$i;\n\n            if( !is_numeric($x) ||\n            !is_numeric($this->coords[0][$i*2]) || !is_numeric($this->coords[0][$i*2+1]) ) {\n                continue;\n            }\n\n            $xt = $xscale->Translate($x);\n            $yt1 = $yscale->Translate($this->coords[0][$i*2]);\n            $yt2 = $yscale->Translate($this->coords[0][$i*2+1]);\n            $img->Line($xt,$yt1,$xt,$yt2);\n            $img->Line($xt-$this->errwidth,$yt1,$xt+$this->errwidth,$yt1);\n            $img->Line($xt-$this->errwidth,$yt2,$xt+$this->errwidth,$yt2);\n        }\n        return true;\n    }\n} // Class\n\n\n//===================================================\n// CLASS ErrorLinePlot\n// Description: Combine a line and error plot\n// THIS IS A DEPRECATED PLOT TYPE JUST KEPT FOR\n// BACKWARD COMPATIBILITY\n//===================================================\nclass ErrorLinePlot extends ErrorPlot {\n    public $line=null;\n    //---------------\n    // CONSTRUCTOR\n    function __construct($datay,$datax=false) {\n        parent::__construct($datay,$datax);\n        // Calculate line coordinates as the average of the error limits\n        $n = count($datay);\n        for($i=0; $i < $n; $i+=2 ) {\n            $ly[]=($datay[$i]+$datay[$i+1])/2;\n        }\n        $this->line=new LinePlot($ly,$datax);\n    }\n\n    //---------------\n    // PUBLIC METHODS\n    function Legend($graph) {\n        if( $this->legend != \"\" )\n        $graph->legend->Add($this->legend,$this->color);\n        $this->line->Legend($graph);\n    }\n     \n    function Stroke($img,$xscale,$yscale) {\n        parent::Stroke($img,$xscale,$yscale);\n        $this->line->Stroke($img,$xscale,$yscale);\n    }\n} // Class\n\n\n//===================================================\n// CLASS LineErrorPlot\n// Description: Combine a line and error plot\n//===================================================\nclass LineErrorPlot extends ErrorPlot {\n    public $line=null;\n    //---------------\n    // CONSTRUCTOR\n    // Data is (val, errdeltamin, errdeltamax)\n    function __construct($datay,$datax=false) {\n        $ly=array(); $ey=array();\n        $n = count($datay);\n        if( $n % 3 != 0 ) {\n            JpGraphError::RaiseL(4002);\n            //('Error in input data to LineErrorPlot. Number of data points must be a multiple of 3');\n        }\n        for($i=0; $i < $n; $i+=3 ) {\n            $ly[]=$datay[$i];\n            $ey[]=$datay[$i]+$datay[$i+1];\n            $ey[]=$datay[$i]+$datay[$i+2];\n        }\n        parent::__construct($ey,$datax);\n        $this->line=new LinePlot($ly,$datax);\n    }\n\n    //---------------\n    // PUBLIC METHODS\n    function Legend($graph) {\n        if( $this->legend != \"\" )\n        $graph->legend->Add($this->legend,$this->color);\n        $this->line->Legend($graph);\n    }\n     \n    function Stroke($img,$xscale,$yscale) {\n        parent::Stroke($img,$xscale,$yscale);\n        $this->line->Stroke($img,$xscale,$yscale);\n    }\n} // Class\n\n\n/* EOF */\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_flags.php",
    "content": "<?php\n//=======================================================================\n// File:        JPGRAPH_FLAGS.PHP\n// Description: Class Jpfile. Handles plotmarks\n// Created:     2003-06-28\n// Ver:         $Id: jpgraph_flags.php 1106 2009-02-22 20:16:35Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\n//------------------------------------------------------------\n// Defines for the different basic sizes of flags\n//------------------------------------------------------------\nDEFINE('FLAGSIZE1',1);\nDEFINE('FLAGSIZE2',2);\nDEFINE('FLAGSIZE3',3);\nDEFINE('FLAGSIZE4',4);\n\nclass FlagImages {\n\n    public $iCountryNameMap = array(\n    'Afghanistan' => 'afgh',\n    'Republic of Angola' => 'agla',\n    'Republic of Albania' => 'alba',\n    'Alderney' => 'alde',\n    'Democratic and Popular Republic of Algeria' => 'alge',\n    'Territory of American Samoa' => 'amsa',\n    'Principality of Andorra' => 'andr',\n    'British Overseas Territory of Anguilla' => 'angu',\n    'Antarctica' => 'anta',\n    'Argentine Republic' => 'arge',\n    'League of Arab States' => 'arle',\n    'Republic of Armenia' => 'arme',\n    'Aruba' => 'arub',\n    'Commonwealth of Australia' => 'astl',\n    'Republic of Austria' => 'aust',\n    'Azerbaijani Republic' => 'azer',\n    'Bangladesh' => 'bngl',\n    'British Antarctic Territory' => 'bant',\n    'Kingdom of Belgium' => 'belg',\n    'British Overseas Territory of Bermuda' => 'berm',\n    'Commonwealth of the Bahamas' => 'bhms',\n    'Kingdom of Bahrain' => 'bhrn',\n    'Republic of Belarus' => 'blru',\n    'Republic of Bolivia' => 'blva',\n    'Belize' => 'blze',\n    'Republic of Benin' => 'bnin',\n    'Republic of Botswana' => 'bots',\n    'Federative Republic of Brazil' => 'braz',\n    'Barbados' => 'brbd',\n    'British Indian Ocean Territory' => 'brin',\n    'Brunei Darussalam' => 'brun',\n    'Republic of Burkina' => 'bufa',\n    'Republic of Bulgaria' => 'bulg',\n    'Republic of Burundi' => 'buru',\n    'Overseas Territory of the British Virgin Islands' => 'bvis',\n    'Central African Republic' => 'cafr',\n    'Kingdom of Cambodia' => 'camb',\n    'Republic of Cameroon' => 'came',\n    'Dominion of Canada' => 'cana',\n    'Caribbean Community' => 'cari',\n    'Republic of Cape Verde' => 'cave',\n    'Republic of Chad' => 'chad',\n    'Republic of Chile' => 'chil',\n    'Peoples Republic of China' => 'chin',\n    'Territory of Christmas Island' => 'chms',\n    'Commonwealth of Independent States' => 'cins',\n    'Cook Islands' => 'ckis',\n    'Republic of Colombia' => 'clmb',\n    'Territory of Cocos Islands' => 'cois',\n    'Commonwealth' => 'comn',\n    'Union of the Comoros' => 'como',\n    'Republic of the Congo' => 'cong',\n    'Republic of Costa Rica' => 'corc',\n    'Republic of Croatia' => 'croa',\n    'Republic of Cuba' => 'cuba',\n    'British Overseas Territory of the Cayman Islands' => 'cyis',\n    'Republic of Cyprus' => 'cypr',\n    'The Czech Republic' => 'czec',\n    'Kingdom of Denmark' => 'denm',\n    'Republic of Djibouti' => 'djib',\n    'Commonwealth of Dominica' => 'domn',\n    'Dominican Republic' => 'dore',\n    'Republic of Ecuador' => 'ecua',\n    'Arab Republic of Egypt' => 'egyp',\n    'Republic of El Salvador' => 'elsa',\n    'England' => 'engl',\n    'Republic of Equatorial Guinea' => 'eqgu',\n    'State of Eritrea' => 'erit',\n    'Republic of Estonia' => 'estn',\n    'Ethiopia' => 'ethp',\n    'European Union' => 'euun',\n    'British Overseas Territory of the Falkland Islands' => 'fais',\n    'International Federation of Vexillological Associations' => 'fiav',\n    'Republic of Fiji' => 'fiji',\n    'Republic of Finland' => 'finl',\n    'Territory of French Polynesia' => 'fpol',\n    'French Republic' => 'fran',\n    'Overseas Department of French Guiana' => 'frgu',\n    'Gabonese Republic' => 'gabn',\n    'Republic of the Gambia' => 'gamb',\n    'Republic of Georgia' => 'geor',\n    'Federal Republic of Germany' => 'germ',\n    'Republic of Ghana' => 'ghan',\n    'Gibraltar' => 'gibr',\n    'Hellenic Republic' => 'grec',\n    'State of Grenada' => 'gren',\n    'Overseas Department of Guadeloupe' => 'guad',\n    'Territory of Guam' => 'guam',\n    'Republic of Guatemala' => 'guat',\n    'The Bailiwick of Guernsey' => 'guer',\n    'Republic of Guinea' => 'guin',\n    'Republic of Haiti' => 'hait',\n    'Hong Kong Special Administrative Region' => 'hokn',\n    'Republic of Honduras' => 'hond',\n    'Republic of Hungary' => 'hung',\n    'Republic of Iceland' => 'icel',\n    'International Committee of the Red Cross' => 'icrc',\n    'Republic of India' => 'inda',\n    'Republic of Indonesia' => 'indn',\n    'Republic of Iraq' => 'iraq',\n    'Republic of Ireland' => 'irel',\n    'Organization of the Islamic Conference' => 'isco',\n    'Isle of Man' => 'isma',\n    'State of Israel' => 'isra',\n    'Italian Republic' => 'ital',\n    'Jamaica' => 'jama',\n    'Japan' => 'japa',\n    'The Bailiwick of Jersey' => 'jers',\n    'Hashemite Kingdom of Jordan' => 'jord',\n    'Republic of Kazakhstan' => 'kazk',\n    'Republic of Kenya' => 'keny',\n    'Republic of Kiribati' => 'kirb',\n    'State of Kuwait' => 'kuwa',\n    'Kyrgyz Republic' => 'kyrg',\n    'Republic of Latvia' => 'latv',\n    'Lebanese Republic' => 'leba',\n    'Kingdom of Lesotho' => 'lest',\n    'Republic of Liberia' => 'libe',\n    'Principality of Liechtenstein' => 'liec',\n    'Republic of Lithuania' => 'lith',\n    'Grand Duchy of Luxembourg' => 'luxe',\n    'Macao Special Administrative Region' => 'maca',\n    'Republic of Macedonia' => 'mace',\n    'Republic of Madagascar' => 'mada',\n    'Republic of the Marshall Islands' => 'mais',\n    'Republic of Mali' => 'mali',\n    'Federation of Malaysia' => 'mals',\n    'Republic of Malta' => 'malt',\n    'Republic of Malawi' => 'malw',\n    'Overseas Department of Martinique' => 'mart',\n    'Islamic Republic of Mauritania' => 'maur',\n    'Territorial Collectivity of Mayotte' => 'mayt',\n    'United Mexican States' => 'mexc',\n    'Federated States of Micronesia' => 'micr',\n    'Midway Islands' => 'miis',\n    'Republic of Moldova' => 'mold',\n    'Principality of Monaco' => 'mona',\n    'Republic of Mongolia' => 'mong',\n    'British Overseas Territory of Montserrat' => 'mont',\n    'Kingdom of Morocco' => 'morc',\n    'Republic of Mozambique' => 'moza',\n    'Republic of Mauritius' => 'mrts',\n    'Union of Myanmar' => 'myan',\n    'Republic of Namibia' => 'namb',\n    'North Atlantic Treaty Organization' => 'nato',\n    'Republic of Nauru' => 'naur',\n    'Turkish Republic of Northern Cyprus' => 'ncyp',\n    'Netherlands Antilles' => 'nean',\n    'Kingdom of Nepal' => 'nepa',\n    'Kingdom of the Netherlands' => 'neth',\n    'Territory of Norfolk Island' => 'nfis',\n    'Federal Republic of Nigeria' => 'ngra',\n    'Republic of Nicaragua' => 'nica',\n    'Republic of Niger' => 'nigr',\n    'Niue' => 'niue',\n    'Commonwealth of the Northern Mariana Islands' => 'nmar',\n    'Province of Northern Ireland' => 'noir',\n    'Nordic Council' => 'nord',\n    'Kingdom of Norway' => 'norw',\n    'Territory of New Caledonia and Dependencies' => 'nwca',\n    'New Zealand' => 'nwze',\n    'Organization of American States' => 'oast',\n    'Organization of African Unity' => 'oaun',\n    'International Olympic Committee' => 'olym',\n    'Sultanate of Oman' => 'oman',\n    'Islamic Republic of Pakistan' => 'paks',\n    'Republic of Palau' => 'pala',\n    'Independent State of Papua New Guinea' => 'pang',\n    'Republic of Paraguay' => 'para',\n    'Republic of Peru' => 'peru',\n    'Republic of the Philippines' => 'phil',\n    'British Overseas Territory of the Pitcairn Islands' => 'piis',\n    'Republic of Poland' => 'pola',\n    'Republic of Portugal' => 'port',\n    'Commonwealth of Puerto Rico' => 'purc',\n    'State of Qatar' => 'qata',\n    'Russian Federation' => 'russ',\n    'Romania' => 'rmna',\n    'Republic of Rwanda' => 'rwan',\n    'Kingdom of Saudi Arabia' => 'saar',\n    'Republic of San Marino' => 'sama',\n    'Nordic Sami Conference' => 'sami',\n    'Sark' => 'sark',\n    'Scotland' => 'scot',\n    'Principality of Seborga' => 'sebo',\n    'Republic of Serbia' => 'serb',\n    'Republic of Sierra Leone' => 'sile',\n    'Republic of Singapore' => 'sing',\n    'Republic of Korea' => 'skor',\n    'Republic of Slovenia' => 'slva',\n    'Somali Republic' => 'smla',\n    'Republic of Somaliland' => 'smld',\n    'Republic of South Africa' => 'soaf',\n    'Solomon Islands' => 'sois',\n    'Kingdom of Spain' => 'span',\n    'Secretariat of the Pacific Community' => 'spco',\n    'Democratic Socialist Republic of Sri Lanka' => 'srla',\n    'Saint Lucia' => 'stlu',\n    'Republic of the Sudan' => 'suda',\n    'Republic of Suriname' => 'surn',\n    'Slovak Republic' => 'svka',\n    'Kingdom of Sweden' => 'swdn',\n    'Swiss Confederation' => 'swit',\n    'Syrian Arab Republic' => 'syra',\n    'Kingdom of Swaziland' => 'szld',\n    'Republic of China' => 'taiw',\n    'Taiwan' => 'taiw',\n    'Republic of Tajikistan' => 'tajk',\n    'United Republic of Tanzania' => 'tanz',\n    'Kingdom of Thailand' => 'thal',\n    'Autonomous Region of Tibet' => 'tibe',\n    'Turkmenistan' => 'tkst',\n    'Togolese Republic' => 'togo',\n    'Tokelau' => 'toke',\n    'Kingdom of Tonga' => 'tong',\n    'Tristan da Cunha' => 'trdc',\n    'Tromelin' => 'tris',\n    'Republic of Tunisia' => 'tuns',\n    'Republic of Turkey' => 'turk',\n    'Tuvalu' => 'tuva',\n    'United Arab Emirates' => 'uaem',\n    'Republic of Uganda' => 'ugan',\n    'Ukraine' => 'ukrn',\n    'United Kingdom of Great Britain' => 'unkg',\n    'United Nations' => 'unna',\n    'United States of America' => 'unst',\n    'Oriental Republic of Uruguay' => 'urgy',\n    'Virgin Islands of the United States' => 'usvs',\n    'Republic of Uzbekistan' => 'uzbk',\n    'State of the Vatican City' => 'vacy',\n    'Republic of Vanuatu' => 'vant',\n    'Bolivarian Republic of Venezuela' => 'venz',\n    'Republic of Yemen' => 'yemn',\n    'Democratic Republic of Congo' => 'zare',\n    'Republic of Zimbabwe' => 'zbwe' ) ;\n\n\n    private $iFlagCount = -1;\n    private $iFlagSetMap = array(\n    FLAGSIZE1 => 'flags_thumb35x35',\n    FLAGSIZE2 => 'flags_thumb60x60',\n    FLAGSIZE3 => 'flags_thumb100x100',\n    FLAGSIZE4 => 'flags'\n    );\n\n    private $iFlagData ;\n    private $iOrdIdx=array();\n\n    function __construct($aSize=FLAGSIZE1) {\n        switch($aSize) {\n            case FLAGSIZE1 :\n            case FLAGSIZE2 :\n            case FLAGSIZE3 :\n            case FLAGSIZE4 :\n                $file = dirname(__FILE__).'/'.$this->iFlagSetMap[$aSize].'.dat';\n                $fp = fopen($file,'rb');\n                $rawdata = fread($fp,filesize($file));\n                $this->iFlagData = unserialize($rawdata);\n                break;\n            default:\n                JpGraphError::RaiseL(5001,$aSize);\n                //('Unknown flag size. ('.$aSize.')');\n        }\n        $this->iFlagCount = count($this->iCountryNameMap);\n    }\n\n    function GetNum() {\n        return $this->iFlagCount;\n    }\n\n    function GetImgByName($aName,&$outFullName) {\n        $idx = $this->GetIdxByName($aName,$outFullName);\n        return $this->GetImgByIdx($idx);\n    }\n\n    function GetImgByIdx($aIdx) {\n        if( array_key_exists($aIdx,$this->iFlagData) ) {\n            $d = $this->iFlagData[$aIdx][1];\n            return Image::CreateFromString($d);\n        }\n        else {\n            JpGraphError::RaiseL(5002,$aIdx);\n            //(\"Flag index \\\"�$aIdx\\\" does not exist.\");\n        }\n    }\n\n    function GetIdxByOrdinal($aOrd,&$outFullName) {\n        $aOrd--;\n        $n = count($this->iOrdIdx);\n        if( $n == 0 ) {\n            $this->iOrdIdx=array();\n            $i=0;\n            foreach( $this->iCountryNameMap as $key => $val ) {\n                $this->iOrdIdx[$i++] = array($val,$key);\n            }\n            $tmp=$this->iOrdIdx[$aOrd];\n            $outFullName = $tmp[1];\n            return $tmp[0];\n             \n        }\n        elseif( $aOrd >= 0 && $aOrd < $n ) {\n            $tmp=$this->iOrdIdx[$aOrd];\n            $outFullName = $tmp[1];\n            return $tmp[0];\n        }\n        else {\n            JpGraphError::RaiseL(5003,$aOrd);\n            //('Invalid ordinal number specified for flag index.');\n        }\n    }\n\n    function GetIdxByName($aName,&$outFullName) {\n\n        if( is_integer($aName) ) {\n            $idx = $this->GetIdxByOrdinal($aName,$outFullName);\n            return $idx;\n        }\n\n        $found=false;\n        $aName = strtolower($aName);\n        $nlen = strlen($aName);\n        // Start by trying to match exact index name\n        foreach( $this->iCountryNameMap as $key => $val ) {\n            if( $nlen == strlen($val) && $val == $aName )  {\n                $found=true;\n                break;\n            }\n        }\n        if( !$found ) {\n            // If the exact index doesn't work try a (partial) full name\n            foreach( $this->iCountryNameMap as $key => $val ) {\n                if( strpos(strtolower($key), $aName) !== false ) {\n                    $found=true;\n                    break;\n                }\n            }\n        }\n        if( $found ) {\n            $outFullName = $key;\n            return $val;\n        }\n        else {\n            JpGraphError::RaiseL(5004,$aName);\n            //(\"The (partial) country name \\\"$aName\\\" does not have a cooresponding flag image. The flag may still exist but under another name, e.g. insted of \\\"usa\\\" try \\\"united states\\\".\");\n        }\n    }\n}\n\n\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_gantt.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_GANTT.PHP\n // Description: JpGraph Gantt plot extension\n // Created:     2001-11-12\n // Ver:         $Id: jpgraph_gantt.php 1809 2009-09-09 13:07:33Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\nrequire_once('jpgraph_plotband.php');\nrequire_once('jpgraph_iconplot.php');\nrequire_once('jpgraph_plotmark.inc.php');\n\n// Maximum size for Automatic Gantt chart\ndefine('MAX_GANTTIMG_SIZE_W',8000);\ndefine('MAX_GANTTIMG_SIZE_H',5000);\n\n// Scale Header types\ndefine(\"GANTT_HDAY\",1);\ndefine(\"GANTT_HWEEK\",2);\ndefine(\"GANTT_HMONTH\",4);\ndefine(\"GANTT_HYEAR\",8);\ndefine(\"GANTT_HHOUR\",16);\ndefine(\"GANTT_HMIN\",32);\n\n// Bar patterns\ndefine(\"GANTT_RDIAG\",BAND_RDIAG); // Right diagonal lines\ndefine(\"GANTT_LDIAG\",BAND_LDIAG); // Left diagonal lines\ndefine(\"GANTT_SOLID\",BAND_SOLID); // Solid one color\ndefine(\"GANTT_VLINE\",BAND_VLINE); // Vertical lines\ndefine(\"GANTT_HLINE\",BAND_HLINE);  // Horizontal lines\ndefine(\"GANTT_3DPLANE\",BAND_3DPLANE);  // \"3D\" Plane\ndefine(\"GANTT_HVCROSS\",BAND_HVCROSS);  // Vertical/Hor crosses\ndefine(\"GANTT_DIAGCROSS\",BAND_DIAGCROSS); // Diagonal crosses\n\n// Conversion constant\ndefine(\"SECPERDAY\",3600*24);\n\n// Locales. ONLY KEPT FOR BACKWARDS COMPATIBILITY\n// You should use the proper locale strings directly\n// from now on.\ndefine(\"LOCALE_EN\",\"en_UK\");\ndefine(\"LOCALE_SV\",\"sv_SE\");\n\n// Layout of bars\ndefine(\"GANTT_EVEN\",1);\ndefine(\"GANTT_FROMTOP\",2);\n\n// Style for minute header\ndefine(\"MINUTESTYLE_MM\",0);  // 15\ndefine(\"MINUTESTYLE_CUSTOM\",2);  // Custom format\n\n\n// Style for hour header\ndefine(\"HOURSTYLE_HM24\",0);  // 13:10\ndefine(\"HOURSTYLE_HMAMPM\",1);  // 1:10pm\ndefine(\"HOURSTYLE_H24\",2);  // 13\ndefine(\"HOURSTYLE_HAMPM\",3);  // 1pm\ndefine(\"HOURSTYLE_CUSTOM\",4);  // User defined\n\n// Style for day header\ndefine(\"DAYSTYLE_ONELETTER\",0);  // \"M\"\ndefine(\"DAYSTYLE_LONG\",1);  // \"Monday\"\ndefine(\"DAYSTYLE_LONGDAYDATE1\",2); // \"Monday 23 Jun\"\ndefine(\"DAYSTYLE_LONGDAYDATE2\",3); // \"Monday 23 Jun 2003\"\ndefine(\"DAYSTYLE_SHORT\",4);  // \"Mon\"\ndefine(\"DAYSTYLE_SHORTDAYDATE1\",5); // \"Mon 23/6\"\ndefine(\"DAYSTYLE_SHORTDAYDATE2\",6); // \"Mon 23 Jun\"\ndefine(\"DAYSTYLE_SHORTDAYDATE3\",7); // \"Mon 23\"\ndefine(\"DAYSTYLE_SHORTDATE1\",8); // \"23/6\"\ndefine(\"DAYSTYLE_SHORTDATE2\",9); // \"23 Jun\"\ndefine(\"DAYSTYLE_SHORTDATE3\",10); // \"Mon 23\"\ndefine(\"DAYSTYLE_SHORTDATE4\",11); // \"23\"\ndefine(\"DAYSTYLE_CUSTOM\",12);  // \"M\"\n\n// Styles for week header\ndefine(\"WEEKSTYLE_WNBR\",0);\ndefine(\"WEEKSTYLE_FIRSTDAY\",1);\ndefine(\"WEEKSTYLE_FIRSTDAY2\",2);\ndefine(\"WEEKSTYLE_FIRSTDAYWNBR\",3);\ndefine(\"WEEKSTYLE_FIRSTDAY2WNBR\",4);\n\n// Styles for month header\ndefine(\"MONTHSTYLE_SHORTNAME\",0);\ndefine(\"MONTHSTYLE_LONGNAME\",1);\ndefine(\"MONTHSTYLE_LONGNAMEYEAR2\",2);\ndefine(\"MONTHSTYLE_SHORTNAMEYEAR2\",3);\ndefine(\"MONTHSTYLE_LONGNAMEYEAR4\",4);\ndefine(\"MONTHSTYLE_SHORTNAMEYEAR4\",5);\ndefine(\"MONTHSTYLE_FIRSTLETTER\",6);\n\n\n// Types of constrain links\ndefine('CONSTRAIN_STARTSTART',0);\ndefine('CONSTRAIN_STARTEND',1);\ndefine('CONSTRAIN_ENDSTART',2);\ndefine('CONSTRAIN_ENDEND',3);\n\n// Arrow direction for constrain links\ndefine('ARROW_DOWN',0);\ndefine('ARROW_UP',1);\ndefine('ARROW_LEFT',2);\ndefine('ARROW_RIGHT',3);\n\n// Arrow type for constrain type\ndefine('ARROWT_SOLID',0);\ndefine('ARROWT_OPEN',1);\n\n// Arrow size for constrain lines\ndefine('ARROW_S1',0);\ndefine('ARROW_S2',1);\ndefine('ARROW_S3',2);\ndefine('ARROW_S4',3);\ndefine('ARROW_S5',4);\n\n// Activity types for use with utility method CreateSimple()\ndefine('ACTYPE_NORMAL',0);\ndefine('ACTYPE_GROUP',1);\ndefine('ACTYPE_MILESTONE',2);\n\ndefine('ACTINFO_3D',1);\ndefine('ACTINFO_2D',0);\n\n\n// Check if array_fill() exists\nif (!function_exists('array_fill')) {\n    function array_fill($iStart, $iLen, $vValue) {\n        $aResult = array();\n        for ($iCount = $iStart; $iCount < $iLen + $iStart; $iCount++) {\n            $aResult[$iCount] = $vValue;\n        }\n        return $aResult;\n    }\n}\n\n//===================================================\n// CLASS GanttActivityInfo\n// Description:\n//===================================================\nclass GanttActivityInfo {\n    public $iShow=true;\n    public $iLeftColMargin=4,$iRightColMargin=1,$iTopColMargin=1,$iBottomColMargin=3;\n    public $vgrid = null;\n    private $iColor='black';\n    private $iBackgroundColor='lightgray';\n    private $iFFamily=FF_FONT1,$iFStyle=FS_NORMAL,$iFSize=10,$iFontColor='black';\n    private $iTitles=array();\n    private $iWidth=array(),$iHeight=-1;\n    private $iTopHeaderMargin = 4;\n    private $iStyle=1;\n    private $iHeaderAlign='center';\n\n    function __construct() {\n        $this->vgrid = new LineProperty();\n    }\n\n    function Hide($aF=true) {\n        $this->iShow=!$aF;\n    }\n\n    function Show($aF=true) {\n        $this->iShow=$aF;\n    }\n\n    // Specify font\n    function SetFont($aFFamily,$aFStyle=FS_NORMAL,$aFSize=10) {\n        $this->iFFamily = $aFFamily;\n        $this->iFStyle  = $aFStyle;\n        $this->iFSize  = $aFSize;\n    }\n\n    function SetStyle($aStyle) {\n        $this->iStyle = $aStyle;\n    }\n\n    function SetColumnMargin($aLeft,$aRight) {\n        $this->iLeftColMargin = $aLeft;\n        $this->iRightColMargin = $aRight;\n    }\n\n    function SetFontColor($aFontColor) {\n        $this->iFontColor = $aFontColor;\n    }\n\n    function SetColor($aColor) {\n        $this->iColor = $aColor;\n    }\n\n    function SetBackgroundColor($aColor) {\n        $this->iBackgroundColor = $aColor;\n    }\n\n    function SetColTitles($aTitles,$aWidth=null) {\n        $this->iTitles = $aTitles;\n        $this->iWidth = $aWidth;\n    }\n\n    function SetMinColWidth($aWidths) {\n        $n = min(count($this->iTitles),count($aWidths));\n        for($i=0; $i < $n; ++$i ) {\n            if( !empty($aWidths[$i]) ) {\n                if( empty($this->iWidth[$i]) ) {\n                    $this->iWidth[$i] = $aWidths[$i];\n                }\n                else {\n                    $this->iWidth[$i] = max($this->iWidth[$i],$aWidths[$i]);\n                }\n            }\n        }\n    }\n\n    function GetWidth($aImg) {\n        $txt = new TextProperty();\n        $txt->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);\n        $n = count($this->iTitles) ;\n        $rm=$this->iRightColMargin;\n        $w = 0;\n        for($h=0, $i=0; $i < $n; ++$i ) {\n            $w += $this->iLeftColMargin;\n            $txt->Set($this->iTitles[$i]);\n            if( !empty($this->iWidth[$i]) ) {\n                $w1 = max($txt->GetWidth($aImg)+$rm,$this->iWidth[$i]);\n            }\n            else {\n                $w1 = $txt->GetWidth($aImg)+$rm;\n            }\n            $this->iWidth[$i] = $w1;\n            $w += $w1;\n            $h = max($h,$txt->GetHeight($aImg));\n        }\n        $this->iHeight = $h+$this->iTopHeaderMargin;\n        $txt='';\n        return $w;\n    }\n\n    function GetColStart($aImg,&$aStart,$aAddLeftMargin=false) {\n        $n = count($this->iTitles) ;\n        $adj = $aAddLeftMargin ? $this->iLeftColMargin : 0;\n        $aStart=array($aImg->left_margin+$adj);\n        for( $i=1; $i < $n; ++$i ) {\n            $aStart[$i] = $aStart[$i-1]+$this->iLeftColMargin+$this->iWidth[$i-1];\n        }\n    }\n\n    // Adjust headers left, right or centered\n    function SetHeaderAlign($aAlign) {\n        $this->iHeaderAlign=$aAlign;\n    }\n\n    function Stroke($aImg,$aXLeft,$aYTop,$aXRight,$aYBottom,$aUseTextHeight=false) {\n\n        if( !$this->iShow ) return;\n\n        $txt = new TextProperty();\n        $txt->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);\n        $txt->SetColor($this->iFontColor);\n        $txt->SetAlign($this->iHeaderAlign,'top');\n        $n=count($this->iTitles);\n\n        if( $n == 0 )\n        return;\n\n        $x = $aXLeft;\n        $h = $this->iHeight;\n        $yTop = $aUseTextHeight ? $aYBottom-$h-$this->iTopColMargin-$this->iBottomColMargin : $aYTop ;\n\n        if( $h < 0 ) {\n            JpGraphError::RaiseL(6001);\n            //('Internal error. Height for ActivityTitles is < 0');\n        }\n\n        $aImg->SetLineWeight(1);\n        // Set background color\n        $aImg->SetColor($this->iBackgroundColor);\n        $aImg->FilledRectangle($aXLeft,$yTop,$aXRight,$aYBottom-1);\n\n        if( $this->iStyle == 1 ) {\n            // Make a 3D effect\n            $aImg->SetColor('white');\n            $aImg->Line($aXLeft,$yTop+1,$aXRight,$yTop+1);\n        }\n\n        for($i=0; $i < $n; ++$i ) {\n            if( $this->iStyle == 1 ) {\n                // Make a 3D effect\n                $aImg->SetColor('white');\n                $aImg->Line($x+1,$yTop,$x+1,$aYBottom);\n            }\n            $x += $this->iLeftColMargin;\n            $txt->Set($this->iTitles[$i]);\n\n            // Adjust the text anchor position according to the choosen alignment\n            $xp = $x;\n            if( $this->iHeaderAlign == 'center' ) {\n                $xp = (($x-$this->iLeftColMargin)+($x+$this->iWidth[$i]))/2;\n            }\n            elseif( $this->iHeaderAlign == 'right' ) {\n                $xp = $x +$this->iWidth[$i]-$this->iRightColMargin;\n            }\n\n            $txt->Stroke($aImg,$xp,$yTop+$this->iTopHeaderMargin);\n            $x += $this->iWidth[$i];\n            if( $i < $n-1 ) {\n                $aImg->SetColor($this->iColor);\n                $aImg->Line($x,$yTop,$x,$aYBottom);\n            }\n        }\n\n        $aImg->SetColor($this->iColor);\n        $aImg->Line($aXLeft,$yTop, $aXRight,$yTop);\n\n        // Stroke vertical column dividers\n        $cols=array();\n        $this->GetColStart($aImg,$cols);\n        $n=count($cols);\n        for( $i=1; $i < $n; ++$i ) {\n            $this->vgrid->Stroke($aImg,$cols[$i],$aYBottom,$cols[$i],\n            $aImg->height - $aImg->bottom_margin);\n        }\n    }\n}\n\n\n//===================================================\n// CLASS GanttGraph\n// Description: Main class to handle gantt graphs\n//===================================================\nclass GanttGraph extends Graph {\n    public $scale;  // Public accessible\n    public $hgrid=null;\n    private $iObj=array();    // Gantt objects\n    private $iLabelHMarginFactor=0.2; // 10% margin on each side of the labels\n    private $iLabelVMarginFactor=0.4; // 40% margin on top and bottom of label\n    private $iLayout=GANTT_FROMTOP; // Could also be GANTT_EVEN\n    private $iSimpleFont = FF_FONT1,$iSimpleFontSize=11;\n    private $iSimpleStyle=GANTT_RDIAG,$iSimpleColor='yellow',$iSimpleBkgColor='red';\n    private $iSimpleProgressBkgColor='gray',$iSimpleProgressColor='darkgreen';\n    private $iSimpleProgressStyle=GANTT_SOLID;\n    private $iZoomFactor = 1.0;\n    //---------------\n    // CONSTRUCTOR\n    // Create a new gantt graph\n    function __construct($aWidth=0,$aHeight=0,$aCachedName=\"\",$aTimeOut=0,$aInline=true) {\n\n        // Backward compatibility\n        if( $aWidth == -1 ) $aWidth=0;\n        if( $aHeight == -1 ) $aHeight=0;\n\n        if( $aWidth<  0 || $aHeight < 0 ) {\n            JpgraphError::RaiseL(6002);\n            //(\"You can't specify negative sizes for Gantt graph dimensions. Use 0 to indicate that you want the library to automatically determine a dimension.\");\n        }\n        parent::__construct($aWidth,$aHeight,$aCachedName,$aTimeOut,$aInline);\n        $this->scale = new GanttScale($this->img);\n\n        // Default margins\n        $this->img->SetMargin(15,17,25,15);\n\n        $this->hgrid = new HorizontalGridLine();\n\n        $this->scale->ShowHeaders(GANTT_HWEEK|GANTT_HDAY);\n        $this->SetBox();\n    }\n\n    //---------------\n    // PUBLIC METHODS\n\n    //\n\n    function SetSimpleFont($aFont,$aSize) {\n        $this->iSimpleFont = $aFont;\n        $this->iSimpleFontSize = $aSize;\n    }\n\n    function SetSimpleStyle($aBand,$aColor,$aBkgColor) {\n        $this->iSimpleStyle = $aBand;\n        $this->iSimpleColor = $aColor;\n        $this->iSimpleBkgColor = $aBkgColor;\n    }\n\n    // A utility function to help create basic Gantt charts\n    function CreateSimple($data,$constrains=array(),$progress=array()) {\n        $num = count($data);\n        for( $i=0; $i < $num; ++$i) {\n            switch( $data[$i][1] ) {\n                case ACTYPE_GROUP:\n                    // Create a slightly smaller height bar since the\n                    // \"wings\" at the end will make it look taller\n                    $a = new GanttBar($data[$i][0],$data[$i][2],$data[$i][3],$data[$i][4],'',8);\n                    $a->title->SetFont($this->iSimpleFont,FS_BOLD,$this->iSimpleFontSize);\n                    $a->rightMark->Show();\n                    $a->rightMark->SetType(MARK_RIGHTTRIANGLE);\n                    $a->rightMark->SetWidth(8);\n                    $a->rightMark->SetColor('black');\n                    $a->rightMark->SetFillColor('black');\n\n                    $a->leftMark->Show();\n                    $a->leftMark->SetType(MARK_LEFTTRIANGLE);\n                    $a->leftMark->SetWidth(8);\n                    $a->leftMark->SetColor('black');\n                    $a->leftMark->SetFillColor('black');\n\n                    $a->SetPattern(BAND_SOLID,'black');\n                    $csimpos = 6;\n                    break;\n\n                case ACTYPE_NORMAL:\n                    $a = new GanttBar($data[$i][0],$data[$i][2],$data[$i][3],$data[$i][4],'',10);\n                    $a->title->SetFont($this->iSimpleFont,FS_NORMAL,$this->iSimpleFontSize);\n                    $a->SetPattern($this->iSimpleStyle,$this->iSimpleColor);\n                    $a->SetFillColor($this->iSimpleBkgColor);\n                    // Check if this activity should have a constrain line\n                    $n = count($constrains);\n                    for( $j=0; $j < $n; ++$j ) {\n                        if( empty($constrains[$j]) || (count($constrains[$j]) != 3) ) {\n                            JpGraphError::RaiseL(6003,$j);\n                            //(\"Invalid format for Constrain parameter at index=$j in CreateSimple(). Parameter must start with index 0 and contain arrays of (Row,Constrain-To,Constrain-Type)\");\n                        }\n                        if( $constrains[$j][0]==$data[$i][0] ) {\n                            $a->SetConstrain($constrains[$j][1],$constrains[$j][2],'black',ARROW_S2,ARROWT_SOLID);\n                        }\n                    }\n\n                    // Check if this activity have a progress bar\n                    $n = count($progress);\n                    for( $j=0; $j < $n; ++$j ) {\n\n                        if( empty($progress[$j]) || (count($progress[$j]) != 2) ) {\n                            JpGraphError::RaiseL(6004,$j);\n                            //(\"Invalid format for Progress parameter at index=$j in CreateSimple(). Parameter must start with index 0 and contain arrays of (Row,Progress)\");\n                        }\n                        if( $progress[$j][0]==$data[$i][0] ) {\n                            $a->progress->Set($progress[$j][1]);\n                            $a->progress->SetPattern($this->iSimpleProgressStyle,\n                            $this->iSimpleProgressColor);\n                            $a->progress->SetFillColor($this->iSimpleProgressBkgColor);\n                            //$a->progress->SetPattern($progress[$j][2],$progress[$j][3]);\n                            break;\n                        }\n                    }\n                    $csimpos = 6;\n                    break;\n\n                case ACTYPE_MILESTONE:\n                    $a = new MileStone($data[$i][0],$data[$i][2],$data[$i][3]);\n                    $a->title->SetFont($this->iSimpleFont,FS_NORMAL,$this->iSimpleFontSize);\n                    $a->caption->SetFont($this->iSimpleFont,FS_NORMAL,$this->iSimpleFontSize);\n                    $csimpos = 5;\n                    break;\n                default:\n                    die('Unknown activity type');\n                    break;\n            }\n\n            // Setup caption\n            $a->caption->Set($data[$i][$csimpos-1]);\n\n            // Check if this activity should have a CSIM target�?\n            if( !empty($data[$i][$csimpos]) ) {\n                $a->SetCSIMTarget($data[$i][$csimpos]);\n                $a->SetCSIMAlt($data[$i][$csimpos+1]);\n            }\n            if( !empty($data[$i][$csimpos+2]) ) {\n                $a->title->SetCSIMTarget($data[$i][$csimpos+2]);\n                $a->title->SetCSIMAlt($data[$i][$csimpos+3]);\n            }\n\n            $this->Add($a);\n        }\n    }\n\n    // Set user specified scale zoom factor when auto sizing is used\n    function SetZoomFactor($aZoom) {\n    \t$this->iZoomFactor = $aZoom;\n    }\n\n\n    // Set what headers should be shown\n    function ShowHeaders($aFlg) {\n        $this->scale->ShowHeaders($aFlg);\n    }\n\n    // Specify the fraction of the font height that should be added\n    // as vertical margin\n    function SetLabelVMarginFactor($aVal) {\n        $this->iLabelVMarginFactor = $aVal;\n    }\n\n    // Synonym to the method above\n    function SetVMarginFactor($aVal) {\n        $this->iLabelVMarginFactor = $aVal;\n    }\n\n\n    // Add a new Gantt object\n    function Add($aObject) {\n        if( is_array($aObject) && count($aObject) > 0 ) {\n            $cl = $aObject[0];\n            if( class_exists('IconPlot',false) && ($cl instanceof IconPlot) ) {\n                $this->AddIcon($aObject);\n            }\n            elseif( class_exists('Text',false) && ($cl instanceof Text) ) {\n            \t$this->AddText($aObject);\n            }\n            else {\n                $n = count($aObject);\n                for($i=0; $i < $n; ++$i)\n                $this->iObj[] = $aObject[$i];\n            }\n        }\n        else {\n            if( class_exists('IconPlot',false) && ($aObject instanceof IconPlot) ) {\n                $this->AddIcon($aObject);\n            }\n            elseif( class_exists('Text',false) && ($aObject instanceof Text) ) {\n            \t$this->AddText($aObject);\n            }\n            else {\n                $this->iObj[] = $aObject;\n            }\n        }\n    }\n\n\tfunction StrokeTexts() {\n        // Stroke any user added text objects\n        if( $this->texts != null ) {\n        \t$n = count($this->texts);\n            for($i=0; $i < $n; ++$i) {\n            \tif( $this->texts[$i]->iScalePosX !== null && $this->texts[$i]->iScalePosY !== null ) {\n            \t\t$x = $this->scale->TranslateDate($this->texts[$i]->iScalePosX);\n            \t\t$y = $this->scale->TranslateVertPos($this->texts[$i]->iScalePosY);\n            \t\t$y -= $this->scale->GetVertSpacing()/2;\n            \t}\n            \telse {\n            \t\t$x = $y = null;\n            \t}\n                $this->texts[$i]->Stroke($this->img,$x,$y);\n            }\n        }\n\t}\n\n    // Override inherit method from Graph and give a warning message\n    function SetScale($aAxisType,$aYMin=1,$aYMax=1,$aXMin=1,$aXMax=1) {\n        JpGraphError::RaiseL(6005);\n        //(\"SetScale() is not meaningfull with Gantt charts.\");\n    }\n\n    // Specify the date range for Gantt graphs (if this is not set it will be\n    // automtically determined from the input data)\n    function SetDateRange($aStart,$aEnd) {\n        // Adjust the start and end so that the indicate the\n        // begining and end of respective start and end days\n        if( strpos($aStart,':') === false )\n        $aStart = date('Y-m-d 00:00',strtotime($aStart));\n        if( strpos($aEnd,':') === false )\n        $aEnd = date('Y-m-d 23:59',strtotime($aEnd));\n        $this->scale->SetRange($aStart,$aEnd);\n    }\n\n    // Get the maximum width of the activity titles columns for the bars\n    // The name is lightly misleading since we from now on can have\n    // multiple columns in the label section. When this was first written\n    // it only supported a single label, hence the name.\n    function GetMaxLabelWidth() {\n        $m=10;\n        if( $this->iObj != null ) {\n            $marg = $this->scale->actinfo->iLeftColMargin+$this->scale->actinfo->iRightColMargin;\n            $n = count($this->iObj);\n            for($i=0; $i < $n; ++$i) {\n                if( !empty($this->iObj[$i]->title) ) {\n                    if( $this->iObj[$i]->title->HasTabs() ) {\n                        list($tot,$w) = $this->iObj[$i]->title->GetWidth($this->img,true);\n                        $m=max($m,$tot);\n                    }\n                    else\n                    $m=max($m,$this->iObj[$i]->title->GetWidth($this->img));\n                }\n            }\n        }\n        return $m;\n    }\n\n    // Get the maximum height of the titles for the bars\n    function GetMaxLabelHeight() {\n        $m=10;\n        if( $this->iObj != null ) {\n            $n = count($this->iObj);\n            // We can not include the title of GnttVLine since that title is stroked at the bottom\n            // of the Gantt bar and not in the activity title columns\n            for($i=0; $i < $n; ++$i) {\n                if( !empty($this->iObj[$i]->title) && !($this->iObj[$i] instanceof GanttVLine) ) {\n                    $m=max($m,$this->iObj[$i]->title->GetHeight($this->img));\n                }\n            }\n        }\n        return $m;\n    }\n\n    function GetMaxBarAbsHeight() {\n        $m=0;\n        if( $this->iObj != null ) {\n            $m = $this->iObj[0]->GetAbsHeight($this->img);\n            $n = count($this->iObj);\n            for($i=1; $i < $n; ++$i) {\n                $m=max($m,$this->iObj[$i]->GetAbsHeight($this->img));\n            }\n        }\n        return $m;\n    }\n\n    // Get the maximum used line number (vertical position) for bars\n    function GetBarMaxLineNumber() {\n        $m=1;\n        if( $this->iObj != null ) {\n            $m = $this->iObj[0]->GetLineNbr();\n            $n = count($this->iObj);\n            for($i=1; $i < $n; ++$i) {\n                $m=max($m,$this->iObj[$i]->GetLineNbr());\n            }\n        }\n        return $m;\n    }\n\n    // Get the minumum and maximum used dates for all bars\n    function GetBarMinMax() {\n        $start = 0 ;\n        $n = count($this->iObj);\n        while( $start < $n && $this->iObj[$start]->GetMaxDate() === false )\n        ++$start;\n        if( $start >= $n ) {\n            JpgraphError::RaiseL(6006);\n            //('Cannot autoscale Gantt chart. No dated activities exist. [GetBarMinMax() start >= n]');\n        }\n\n        $max=$this->scale->NormalizeDate($this->iObj[$start]->GetMaxDate());\n        $min=$this->scale->NormalizeDate($this->iObj[$start]->GetMinDate());\n\n        for($i=$start+1; $i < $n; ++$i) {\n            $rmax = $this->scale->NormalizeDate($this->iObj[$i]->GetMaxDate());\n            if( $rmax != false )\n            $max=Max($max,$rmax);\n            $rmin = $this->scale->NormalizeDate($this->iObj[$i]->GetMinDate());\n            if( $rmin != false )\n            $min=Min($min,$rmin);\n        }\n        $minDate = date(\"Y-m-d\",$min);\n        $min = strtotime($minDate);\n        $maxDate = date(\"Y-m-d 23:59\",$max);\n        $max = strtotime($maxDate);\n        return array($min,$max);\n    }\n\n    // Create a new auto sized canvas if the user hasn't specified a size\n    // The size is determined by what scale the user has choosen and hence\n    // the minimum width needed to display the headers. Some margins are\n    // also added to make it better looking.\n    function AutoSize() {\n\n        if( $this->img->img == null ) {\n            // The predefined left, right, top, bottom margins.\n            // Note that the top margin might incease depending on\n            // the title.\n           $hadj = $vadj = 0;\n           if( $this->doshadow ) {\n           \t\t$hadj = $this->shadow_width;\n                $vadj = $this->shadow_width+5;\n            }\n\n            $lm = $this->img->left_margin;\n            $rm = $this->img->right_margin +$hadj;\n            $rm += 2 ;\n            $tm = $this->img->top_margin;\n            $bm = $this->img->bottom_margin + $vadj;\n            $bm += 2;\n\n            // If there are any added GanttVLine we must make sure that the\n            // bottom margin is wide enough to hold a title.\n            $n = count($this->iObj);\n        \tfor($i=0; $i < $n; ++$i) {\n            \tif( $this->iObj[$i] instanceof GanttVLine ) {\n\t\t\t\t\t$bm = max($bm,$this->iObj[$i]->title->GetHeight($this->img)+10);\n            \t}\n        \t}\n\n            // First find out the height\n            $n=$this->GetBarMaxLineNumber()+1;\n            $m=max($this->GetMaxLabelHeight(),$this->GetMaxBarAbsHeight());\n            $height=$n*((1+$this->iLabelVMarginFactor)*$m);\n\n            // Add the height of the scale titles\n            $h=$this->scale->GetHeaderHeight();\n            $height += $h;\n\n            // Calculate the top margin needed for title and subtitle\n            if( $this->title->t != \"\" ) {\n                $tm += $this->title->GetFontHeight($this->img);\n            }\n            if( $this->subtitle->t != \"\" ) {\n                $tm += $this->subtitle->GetFontHeight($this->img);\n            }\n\n            // ...and then take the bottom and top plot margins into account\n            $height += $tm + $bm + $this->scale->iTopPlotMargin + $this->scale->iBottomPlotMargin;\n            // Now find the minimum width for the chart required\n\n            // If day scale or smaller is shown then we use the day font width\n            // as the base size unit.\n            // If only weeks or above is displayed we use a modified unit to\n            // get a smaller image.\n            if( $this->scale->IsDisplayHour() || $this->scale->IsDisplayMinute() ) {\n                // Add 2 pixel margin on each side\n                $fw=$this->scale->day->GetFontWidth($this->img)+4;\n            }\n            elseif( $this->scale->IsDisplayWeek() ) {\n                $fw = 8;\n            }\n            elseif( $this->scale->IsDisplayMonth() ) {\n                $fw = 4;\n            }\n            else {\n                $fw = 2;\n            }\n\n            $nd=$this->scale->GetNumberOfDays();\n\n            if( $this->scale->IsDisplayDay() ) {\n                // If the days are displayed we also need to figure out\n                // how much space each day's title will require.\n                switch( $this->scale->day->iStyle ) {\n                    case DAYSTYLE_LONG :\n                        $txt = \"Monday\";\n                        break;\n                    case DAYSTYLE_LONGDAYDATE1 :\n                        $txt =  \"Monday 23 Jun\";\n                        break;\n                    case DAYSTYLE_LONGDAYDATE2 :\n                        $txt =  \"Monday 23 Jun 2003\";\n                        break;\n                    case DAYSTYLE_SHORT :\n                        $txt =  \"Mon\";\n                        break;\n                    case DAYSTYLE_SHORTDAYDATE1 :\n                        $txt =  \"Mon 23/6\";\n                        break;\n                    case DAYSTYLE_SHORTDAYDATE2 :\n                        $txt =  \"Mon 23 Jun\";\n                        break;\n                    case DAYSTYLE_SHORTDAYDATE3 :\n                        $txt =  \"Mon 23\";\n                        break;\n                    case DAYSTYLE_SHORTDATE1 :\n                        $txt =  \"23/6\";\n                        break;\n                    case DAYSTYLE_SHORTDATE2 :\n                        $txt =  \"23 Jun\";\n                        break;\n                    case DAYSTYLE_SHORTDATE3 :\n                        $txt =  \"Mon 23\";\n                        break;\n                    case DAYSTYLE_SHORTDATE4 :\n                        $txt =  \"88\";\n                        break;\n                    case DAYSTYLE_CUSTOM :\n                        $txt = date($this->scale->day->iLabelFormStr,strtotime('2003-12-20 18:00'));\n                        break;\n                    case DAYSTYLE_ONELETTER :\n                    default:\n                        $txt = \"M\";\n                        break;\n                }\n                $fw = $this->scale->day->GetStrWidth($this->img,$txt)+6;\n            }\n\n            // If we have hours enabled we must make sure that each day has enough\n            // space to fit the number of hours to be displayed.\n            if( $this->scale->IsDisplayHour() ) {\n                // Depending on what format the user has choose we need different amount\n                // of space. We therefore create a typical string for the choosen format\n                // and determine the length of that string.\n                switch( $this->scale->hour->iStyle ) {\n                    case HOURSTYLE_HMAMPM:\n                        $txt = '12:00pm';\n                        break;\n                    case HOURSTYLE_H24:\n                        // 13\n                        $txt = '24';\n                        break;\n                    case HOURSTYLE_HAMPM:\n                        $txt = '12pm';\n                        break;\n                    case HOURSTYLE_CUSTOM:\n                        $txt = date($this->scale->hour->iLabelFormStr,strtotime('2003-12-20 18:00'));\n                        break;\n                    case HOURSTYLE_HM24:\n                    default:\n                        $txt = '24:00';\n                        break;\n                }\n\n                $hfw = $this->scale->hour->GetStrWidth($this->img,$txt)+6;\n                $mw = $hfw;\n                if( $this->scale->IsDisplayMinute() ) {\n                    // Depending on what format the user has choose we need different amount\n                    // of space. We therefore create a typical string for the choosen format\n                    // and determine the length of that string.\n                    switch( $this->scale->minute->iStyle ) {\n                        case HOURSTYLE_CUSTOM:\n                            $txt2 = date($this->scale->minute->iLabelFormStr,strtotime('2005-05-15 18:55'));\n                            break;\n                        case MINUTESTYLE_MM:\n                        default:\n                            $txt2 = '15';\n                            break;\n                    }\n\n                    $mfw = $this->scale->minute->GetStrWidth($this->img,$txt2)+6;\n                    $n2 = ceil(60 / $this->scale->minute->GetIntervall() );\n                    $mw = $n2 * $mfw;\n                }\n                $hfw = $hfw < $mw ? $mw : $hfw ;\n                $n = ceil(24*60 / $this->scale->TimeToMinutes($this->scale->hour->GetIntervall()) );\n                $hw = $n * $hfw;\n                $fw = $fw < $hw ? $hw : $fw ;\n            }\n\n            // We need to repeat this code block here as well.\n            // THIS iS NOT A MISTAKE !\n            // We really need it since we need to adjust for minutes both in the case\n            // where hour scale is shown and when it is not shown.\n\n            if( $this->scale->IsDisplayMinute() ) {\n                // Depending on what format the user has choose we need different amount\n                // of space. We therefore create a typical string for the choosen format\n                // and determine the length of that string.\n                switch( $this->scale->minute->iStyle ) {\n                    case HOURSTYLE_CUSTOM:\n                        $txt = date($this->scale->minute->iLabelFormStr,strtotime('2005-05-15 18:55'));\n                        break;\n                    case MINUTESTYLE_MM:\n                    default:\n                        $txt = '15';\n                        break;\n                }\n\n                $mfw = $this->scale->minute->GetStrWidth($this->img,$txt)+6;\n                $n = ceil(60 / $this->scale->TimeToMinutes($this->scale->minute->GetIntervall()) );\n                $mw = $n * $mfw;\n                $fw = $fw < $mw ? $mw : $fw ;\n            }\n\n            // If we display week we must make sure that 7*$fw is enough\n            // to fit up to 10 characters of the week font (if the week is enabled)\n            if( $this->scale->IsDisplayWeek() ) {\n                // Depending on what format the user has choose we need different amount\n                // of space\n                $fsw = strlen($this->scale->week->iLabelFormStr);\n                if( $this->scale->week->iStyle==WEEKSTYLE_FIRSTDAY2WNBR ) {\n                    $fsw += 8;\n                }\n                elseif( $this->scale->week->iStyle==WEEKSTYLE_FIRSTDAYWNBR ) {\n                    $fsw += 7;\n                }\n                else {\n                    $fsw += 4;\n                }\n\n                $ww = $fsw*$this->scale->week->GetFontWidth($this->img);\n                if( 7*$fw < $ww ) {\n                    $fw = ceil($ww/7);\n                }\n            }\n\n            if( !$this->scale->IsDisplayDay() && !$this->scale->IsDisplayHour() &&\n            \t!( ($this->scale->week->iStyle==WEEKSTYLE_FIRSTDAYWNBR ||\n            \t\t$this->scale->week->iStyle==WEEKSTYLE_FIRSTDAY2WNBR) && $this->scale->IsDisplayWeek() ) ) {\n                // If we don't display the individual days we can shrink the\n                // scale a little bit. This is a little bit pragmatic at the\n                // moment and should be re-written to take into account\n                // a) What scales exactly are shown and\n                // b) what format do they use so we know how wide we need to\n                // make each scale text space at minimum.\n                $fw /= 2;\n                if( !$this->scale->IsDisplayWeek() ) {\n                    $fw /= 1.8;\n                }\n            }\n\n            $cw = $this->GetMaxActInfoColWidth() ;\n            $this->scale->actinfo->SetMinColWidth($cw);\n            if( $this->img->width <= 0 ) {\n                // Now determine the width for the activity titles column\n\n                // Firdst find out the maximum width of each object column\n                $titlewidth = max(max($this->GetMaxLabelWidth(),\n                $this->scale->tableTitle->GetWidth($this->img)),\n                $this->scale->actinfo->GetWidth($this->img));\n\n                // Add the width of the vertivcal divider line\n                $titlewidth += $this->scale->divider->iWeight*2;\n\n\t\t\t\t// Adjust the width by the user specified zoom factor\n\t\t\t\t$fw *= $this->iZoomFactor;\n\n                // Now get the total width taking\n                // titlewidth, left and rigt margin, dayfont size\n                // into account\n                $width = $titlewidth + $nd*$fw + $lm+$rm;\n            }\n            else {\n                $width = $this->img->width;\n            }\n\n            $width = round($width);\n            $height = round($height);\n            // Make a sanity check on image size\n            if( $width > MAX_GANTTIMG_SIZE_W || $height > MAX_GANTTIMG_SIZE_H ) {\n                JpgraphError::RaiseL(6007,$width,$height);\n                //(\"Sanity check for automatic Gantt chart size failed. Either the width (=$width) or height (=$height) is larger than MAX_GANTTIMG_SIZE. This could potentially be caused by a wrong date in one of the activities.\");\n            }\n            $this->img->CreateImgCanvas($width,$height);\n            $this->img->SetMargin($lm,$rm,$tm,$bm);\n        }\n    }\n\n    // Return an array width the maximum width for each activity\n    // column. This is used when we autosize the columns where we need\n    // to find out the maximum width of each column. In order to do that we\n    // must walk through all the objects, sigh...\n    function GetMaxActInfoColWidth() {\n        $n = count($this->iObj);\n        if( $n == 0 ) return;\n        $w = array();\n        $m = $this->scale->actinfo->iLeftColMargin + $this->scale->actinfo->iRightColMargin;\n\n        for( $i=0; $i < $n; ++$i ) {\n            $tmp = $this->iObj[$i]->title->GetColWidth($this->img,$m);\n            $nn = count($tmp);\n            for( $j=0; $j < $nn; ++$j ) {\n                if( empty($w[$j]) )\n                $w[$j] = $tmp[$j];\n                else\n                $w[$j] = max($w[$j],$tmp[$j]);\n            }\n        }\n        return $w;\n    }\n\n    // Stroke the gantt chart\n    function Stroke($aStrokeFileName=\"\") {\n\n        // If the filename is the predefined value = '_csim_special_'\n        // we assume that the call to stroke only needs to do enough\n        // to correctly generate the CSIM maps.\n        // We use this variable to skip things we don't strictly need\n        // to do to generate the image map to improve performance\n        // a best we can. Therefor you will see a lot of tests !$_csim in the\n        // code below.\n        $_csim = ($aStrokeFileName===_CSIM_SPECIALFILE);\n\n        // Should we autoscale dates?\n\n        if( !$this->scale->IsRangeSet() ) {\n            list($min,$max) = $this->GetBarMinMax();\n            $this->scale->SetRange($min,$max);\n        }\n\n        $this->scale->AdjustStartEndDay();\n\n        // Check if we should autoscale the image\n        $this->AutoSize();\n\n        // Should we start from the top or just spread the bars out even over the\n        // available height\n        $this->scale->SetVertLayout($this->iLayout);\n        if( $this->iLayout == GANTT_FROMTOP ) {\n            $maxheight=max($this->GetMaxLabelHeight(),$this->GetMaxBarAbsHeight());\n            $this->scale->SetVertSpacing($maxheight*(1+$this->iLabelVMarginFactor));\n        }\n        // If it hasn't been set find out the maximum line number\n        if( $this->scale->iVertLines == -1 )\n        \t$this->scale->iVertLines = $this->GetBarMaxLineNumber()+1;\n\n        $maxwidth=max($this->scale->actinfo->GetWidth($this->img),\n        max($this->GetMaxLabelWidth(),\n        $this->scale->tableTitle->GetWidth($this->img)));\n\n        $this->scale->SetLabelWidth($maxwidth+$this->scale->divider->iWeight);//*(1+$this->iLabelHMarginFactor));\n\n        if( !$_csim ) {\n            $this->StrokePlotArea();\n            if( $this->iIconDepth == DEPTH_BACK ) {\n                $this->StrokeIcons();\n            }\n        }\n\n        $this->scale->Stroke();\n\n        if( !$_csim ) {\n            // Due to a minor off by 1 bug we need to temporarily adjust the margin\n            $this->img->right_margin--;\n            $this->StrokePlotBox();\n            $this->img->right_margin++;\n        }\n\n        // Stroke Grid line\n        $this->hgrid->Stroke($this->img,$this->scale);\n\n        $n = count($this->iObj);\n        for($i=0; $i < $n; ++$i) {\n            //$this->iObj[$i]->SetLabelLeftMargin(round($maxwidth*$this->iLabelHMarginFactor/2));\n            $this->iObj[$i]->Stroke($this->img,$this->scale);\n        }\n\n        $this->StrokeTitles();\n\n        if( !$_csim ) {\n            $this->StrokeConstrains();\n            $this->footer->Stroke($this->img);\n\n\n            if( $this->iIconDepth == DEPTH_FRONT) {\n                $this->StrokeIcons();\n            }\n\n            // Stroke all added user texts\n            $this->StrokeTexts();\n\n            // Should we do any final image transformation\n            if( $this->iImgTrans ) {\n                if( !class_exists('ImgTrans',false) ) {\n                    require_once('jpgraph_imgtrans.php');\n                }\n\n                $tform = new ImgTrans($this->img->img);\n                $this->img->img = $tform->Skew3D($this->iImgTransHorizon,$this->iImgTransSkewDist,\n                $this->iImgTransDirection,$this->iImgTransHighQ,\n                $this->iImgTransMinSize,$this->iImgTransFillColor,\n                $this->iImgTransBorder);\n            }\n\n\n            // If the filename is given as the special \"__handle\"\n            // then the image handler is returned and the image is NOT\n            // streamed back\n            if( $aStrokeFileName == _IMG_HANDLER ) {\n                return $this->img->img;\n            }\n            else {\n                // Finally stream the generated picture\n                $this->cache->PutAndStream($this->img,$this->cache_name,$this->inline,\n                $aStrokeFileName);\n            }\n        }\n    }\n\n    function StrokeConstrains() {\n        $n = count($this->iObj);\n\n        // Stroke all constrains\n        for($i=0; $i < $n; ++$i) {\n\n            // Some gantt objects may not have constraints associated with them\n            // for example we can add IconPlots which doesn't have this property.\n            if( empty($this->iObj[$i]->constraints) ) continue;\n\n            $numConstrains = count($this->iObj[$i]->constraints);\n\n            for( $k = 0; $k < $numConstrains; $k++ ) {\n                $vpos = $this->iObj[$i]->constraints[$k]->iConstrainRow;\n                if( $vpos >= 0 ) {\n                    $c1 = $this->iObj[$i]->iConstrainPos;\n\n                    // Find out which object is on the target row\n                    $targetobj = -1;\n                    for( $j=0; $j < $n && $targetobj == -1; ++$j ) {\n                        if( $this->iObj[$j]->iVPos == $vpos ) {\n                            $targetobj = $j;\n                        }\n                    }\n                    if( $targetobj == -1 ) {\n                        JpGraphError::RaiseL(6008,$this->iObj[$i]->iVPos,$vpos);\n                        //('You have specifed a constrain from row='.$this->iObj[$i]->iVPos.' to row='.$vpos.' which does not have any activity.');\n                    }\n                    $c2 = $this->iObj[$targetobj]->iConstrainPos;\n                    if( count($c1) == 4 && count($c2 ) == 4) {\n                        switch( $this->iObj[$i]->constraints[$k]->iConstrainType ) {\n                            case CONSTRAIN_ENDSTART:\n                                if( $c1[1] < $c2[1] ) {\n                                    $link = new GanttLink($c1[2],$c1[3],$c2[0],$c2[1]);\n                                }\n                                else {\n                                    $link = new GanttLink($c1[2],$c1[1],$c2[0],$c2[3]);\n                                }\n                                $link->SetPath(3);\n                                break;\n                            case CONSTRAIN_STARTEND:\n                                if( $c1[1] < $c2[1] ) {\n                                    $link = new GanttLink($c1[0],$c1[3],$c2[2],$c2[1]);\n                                }\n                                else {\n                                    $link = new GanttLink($c1[0],$c1[1],$c2[2],$c2[3]);\n                                }\n                                $link->SetPath(0);\n                                break;\n                            case CONSTRAIN_ENDEND:\n                                if( $c1[1] < $c2[1] ) {\n                                    $link = new GanttLink($c1[2],$c1[3],$c2[2],$c2[1]);\n                                }\n                                else {\n                                    $link = new GanttLink($c1[2],$c1[1],$c2[2],$c2[3]);\n                                }\n                                $link->SetPath(1);\n                                break;\n                            case CONSTRAIN_STARTSTART:\n                                if( $c1[1] < $c2[1] ) {\n                                    $link = new GanttLink($c1[0],$c1[3],$c2[0],$c2[1]);\n                                }\n                                else {\n                                    $link = new GanttLink($c1[0],$c1[1],$c2[0],$c2[3]);\n                                }\n                                $link->SetPath(3);\n                                break;\n                            default:\n                                JpGraphError::RaiseL(6009,$this->iObj[$i]->iVPos,$vpos);\n                                //('Unknown constrain type specified from row='.$this->iObj[$i]->iVPos.' to row='.$vpos);\n                                break;\n                        }\n\n                        $link->SetColor($this->iObj[$i]->constraints[$k]->iConstrainColor);\n                        $link->SetArrow($this->iObj[$i]->constraints[$k]->iConstrainArrowSize,\n                        $this->iObj[$i]->constraints[$k]->iConstrainArrowType);\n\n                        $link->Stroke($this->img);\n                    }\n                }\n            }\n        }\n    }\n\n    function GetCSIMAreas() {\n        if( !$this->iHasStroked )\n        $this->Stroke(_CSIM_SPECIALFILE);\n\n        $csim = $this->title->GetCSIMAreas();\n        $csim .= $this->subtitle->GetCSIMAreas();\n        $csim .= $this->subsubtitle->GetCSIMAreas();\n\n        $n = count($this->iObj);\n        for( $i=$n-1; $i >= 0; --$i )\n        $csim .= $this->iObj[$i]->GetCSIMArea();\n        return $csim;\n    }\n}\n\n//===================================================\n// CLASS PredefIcons\n// Description: Predefined icons for use with Gantt charts\n//===================================================\ndefine('GICON_WARNINGRED',0);\ndefine('GICON_TEXT',1);\ndefine('GICON_ENDCONS',2);\ndefine('GICON_MAIL',3);\ndefine('GICON_STARTCONS',4);\ndefine('GICON_CALC',5);\ndefine('GICON_MAGNIFIER',6);\ndefine('GICON_LOCK',7);\ndefine('GICON_STOP',8);\ndefine('GICON_WARNINGYELLOW',9);\ndefine('GICON_FOLDEROPEN',10);\ndefine('GICON_FOLDER',11);\ndefine('GICON_TEXTIMPORTANT',12);\n\nclass PredefIcons {\n    private $iBuiltinIcon = null, $iLen = -1 ;\n\n    function GetLen() {\n        return $this->iLen ;\n    }\n\n    function GetImg($aIdx) {\n        if( $aIdx < 0 || $aIdx >= $this->iLen ) {\n            JpGraphError::RaiseL(6010,$aIdx);\n            //('Illegal icon index for Gantt builtin icon ['.$aIdx.']');\n        }\n        return Image::CreateFromString(base64_decode($this->iBuiltinIcon[$aIdx][1]));\n    }\n\n    function __construct() {\n        //==========================================================\n        // warning.png\n        //==========================================================\n        $this->iBuiltinIcon[0][0]= 1043 ;\n        $this->iBuiltinIcon[0][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsSAAALEgHS3X78AAAA'.\n     'B3RJTUUH0wgKFSgilWPhUQAAA6BJREFUeNrtl91rHFUYh5/3zMx+Z5JNUoOamCZNaqTZ6IWIkqRiQWmi1IDetHfeiCiltgXBP8AL'.\n     '0SIUxf/AvfRSBS9EKILFFqyIH9CEmFZtPqrBJLs7c+b1YneT3WTTbNsUFPLCcAbmzPt73o9zzgzs2Z793231UOdv3w9k9Z2uzOdA'.\n     '5+2+79yNeL7Hl7hw7oeixRMZ6PJM26W18DNAm/Vh7lR8fqh97NmMF11es1iFpMATqdirwMNA/J4DpIzkr5YsAF1PO6gIMYHRdPwl'.\n     'oO2elmB+qH3sm7XozbkgYvy8SzYnZPtcblyM6I+5z3jQ+0vJfgpEu56BfI9vUkbyi2HZd1QJoeWRiAjBd4SDCW8SSAOy6wBHMzF7'.\n     'YdV2A+ROuvRPLfHoiSU0EMY/cDAIhxJeGngKaN1VgHyPL7NBxI1K9P4QxBzw3K1zJ/zkG8B9uwaQ7/HNsRZv9kohBGD0o7JqMYS/'.\n     '/ynPidQw/LrBiPBcS/yFCT95DvB2BWAy4575PaQbQKW+tPd3GCItu2odKI++YxiKu0d26oWmAD7paZU/rLz37VqIijD2YbnzNBBE'.\n     'IBHf8K8qjL7vYhCGErEU8CTg3xXAeMp96GrJEqkyXkm9Bhui1xfsunjdGhcYLq+IzjsGmBt5YH/cmJkFq6gIqlon3u4LxdKGuCIo'.\n     'Qu41g0E41po+2R33Xt5uz9kRIB2UTle7PnfKrROP1HD4sRjZlq0lzhwoZ6rDNeTi3nEg1si/7FT7kYQbXS6E5E65tA5uRF9tutq0'.\n     'K/VwAF+/FbIYWt6+tjQM/AqUms7A4Wy6d7YSfSNxgMmzi0ycWWworio4QJvj4LpuL5BqugTnXzzqJsJwurrlNhJXFaavW67NRw3F'.\n     'q+aJcCQVe9fzvJGmAY7/dPH0gi0f64OveGxa+usCuQMeZ0+kt8BVrX+qPO9Bzx0MgqBvs+a2PfDdYIf+WAjXU1ub4tqNaPPzRs8A'.\n     'blrli+WVn79cXn0cWKl+tGx7HLc7pu3CSmnfitL+l1UihAhwjFkPQev4K/fSABjBM8JCaFuurJU+rgW41SroA8aNMVNAFtgHJCsn'.\n     'XGy/58QVxAC9MccJtZ5kIzNlW440WrJ2ea4YPA9cAooA7i0A/gS+iqLoOpB1HOegqrYB3UBmJrAtQAJwpwPr1Ry92wVlgZsiYlW1'.\n     'uX1gU36dymgqYxJIJJNJT1W9QqHgNwFQBGYqo94OwHZQUuPD7ACglSvc+5n5T9m/wfJJX4U9qzEAAAAASUVORK5CYII=' ;\n\n        //==========================================================\n        // edit.png\n        //==========================================================\n        $this->iBuiltinIcon[1][0]= 959 ;\n        $this->iBuiltinIcon[1][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAFgAWABY9j+ZuwAAAAlwSFlz'.\n     'AAALEAAACxABrSO9dQAAAAd0SU1FB9AKDAwbIEXOA6AAAAM8SURBVHicpdRPaBxlHMbx76ZvsmOTmm1dsEqQSIIsEmGVBAQjivEQ'.\n     'PAUJngpWsAWlBw8egpQepKwplN4ULEG9CjkEyUFKlSJrWTG0IU51pCsdYW2ncUPjdtp9Z+f3vuNhu8nKbmhaf5cZeGc+PO8zf1Lc'.\n     'm0KhkACICCKCMeaBjiLC0tLSnjNvPmuOHRpH0TZTU1M8zBi9wakzn7OFTs5sw8YYACYmJrre7HkeuVyu69qPF77hlT1XmZ0eQ03O'.\n     'wOLJTvhBx1rLz18VmJ0eY+jVd2FxDkKXnvYLHgb97OgLzE4ON9Hzc1B1QaQzsed5O0Lta3Ec89OnR5h5McfQ+Mw2qgQUnfBOPbZ3'.\n     'bK3l+xOvMT0+3ERLp5FNF6UEjcL32+DdVmGt5WLhDYYPZrbRqreFumXwql0S3w9tnDvLWD5PZigPpdOwuYpSCo3C8wU3UHxQdHbf'.\n     'cZIkNM6dxcnlUM4k1eUFMlUPpUADbpkttFarHe6oYqeOr6yt4RzMQHYUcUsQVtGicHDwKprViuLDkkOtVnsHCHZVRVy/zcj1i5Af'.\n     'h8AjdIts+hUcGcYPK3iBtKM3gD/uAzf/AdY2mmmVgy6X8YNNKmGIvyloPcB8SUin07RQ4EZHFdsdG0wkJEnEaHAJxvKEpSLeaokV'.\n     'r4zWmhUZYLlY4b1D03y5eIEWCtS7vsciAgiIxkQRabWOrlQor66y4pUphoJb1jiO4uO5o0S3q6RSqVbiOmC7VCEgAhLSaDQ48dH7'.\n     'vD46REY0iysegSjKQciRt99ib7qXwX0O+pG4teM6YKHLB9JMq4mTmF9/+AKA4wvLZByH7OgYL7+UY2qvw/7Bfg5kHiXjJFyv3CGO'.\n     'Y1rof+BW4t/XLiPG0DCGr79d4XzRxRnIMn98huXSTYyJ6et1UNYQhRvcinpJq86H3wGPPPM0iBDd+QffD1g4eZjLvuG7S1Wef26E'.\n     'J7L7eSx7gAHVg7V3MSbi6m/r93baBd6qQjerAJg/9Ql/XrvG0ON1+vv7GH3qSfY5fahUnSTpwZgIEQesaVXRPbHRG/xyJSAxMYlp'.\n     'EOm71HUINiY7mGb95l/8jZCyQmJjMDGJjUmsdCROtZ0n/P/Z8v4Fs2MTUUf7vYoAAAAASUVORK5CYII=' ;\n\n        //==========================================================\n        // endconstrain.png\n        //==========================================================\n        $this->iBuiltinIcon[2][0]= 666 ;\n        $this->iBuiltinIcon[2][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlz'.\n     'AAALDwAACw8BkvkDpQAAAAd0SU1FB9ALEREILkh0+eQAAAIXSURBVHictZU9aFNRFMd/N81HX77aptJUWmp1LHRpIcWhg5sIDlUQ'.\n     'LAXB4t7RRUpwEhy7iQ46CCIoSHcl0CFaoVARU2MFMYktadLXJNok7x2HtCExvuYFmnO4w/3gx+Gc/z1HKRTdMEdXqHbB/sgc/sic'.\n     'nDoYAI8XwDa8o1RMLT+2hAsigtTvbIGVqhX46szUifBGswUeCPgAGB7QeLk0X4Ork+HOxo1VgSqGASjMqkn8W4r4vVtEgI/RRQEL'.\n     'vaoGD85cl5V3nySR/S1mxWxab7f35PnntNyMJeRr9kCMqiHTy09EoeToLwggx6ymiMOD/VwcD7Oa/MHkcIiQx026WGYto5P/U+ZZ'.\n     '7gD0QwDuT5z9N3LrVPi0Xs543eQPKkRzaS54eviJIp4tMFQFMllAWN2qcRZHBnixNM8NYD162xq8u7ePSQ+GX2Pjwxc2dB2cLtB8'.\n     '7GgamCb0anBYBeChMtl8855CarclxU1gvViiUK4w2OMkNDnGeJ8bt9fH90yOnOkCwLFTwhzykhvtYzOWoBBbY//R3dbaNTYhf2RO'.\n     'QpeuUMzv188MlwuHy0H13HnE48UzMcL0WAtUHX8OxZHoG1URiFw7rnLLCswuSPD1ulze/iWjT2PSf+dBXRFtVVGIvzqph0pQL7VE'.\n     'avXYaXXxPwsnt0imdttCocMmZBdK7YU9D8wuNOW0nXc6QWzPsSa5naZ1beb9BbGB6dxGtMnXAAAAAElFTkSuQmCC' ;\n\n        //==========================================================\n        // mail.png\n        //==========================================================\n        $this->iBuiltinIcon[3][0]= 1122 ;\n        $this->iBuiltinIcon[3][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlz'.\n     'AAALEAAACxABrSO9dQAAAAd0SU1FB9AJHAMfFvL9OU8AAAPfSURBVHictZRdaBRXFMd/987H7tbNx8aYtGCrEexDsOBDaKHFxirb'.\n     'h0qhsiY0ykppKq1osI99C4H2WSiFFMHWUhXBrjRi0uCmtSEUGgP1QWqhWjGkoW7M1kTX3WRn5p4+TJJNGolQ6IXDnDtz+N0z/3PP'.\n     'UWBIpdpYa23b9g09PZ2kUrOrvmUyGVKp1Ao/mUyi56YnVgWfO/P1CihAd/dJMpmaNROIRq8BkM1m0bH6TasC3j6QXgFdXI+DR6PR'.\n     'JX/Pno8B+KLnMKqlpUU8z8MYs2RBEDzWf9J+0RcRbMdxGBsbw/fmCXwPMUEYID4iAVp8wIRmDIHMo4yHSIBSASKC+CWE0C/PF9jU'.\n     '3B6Cp+4M07C5FUtKGNvGwQJctPgIsgD2wRhEIqAMGB+UQYkHJgYYZD7P1HwVlmWhHcfhyk83KeRGUW4t6CgoG5SNUS4KBWgQDUov'.\n     '7AGlwYASBVqH0Bk49dXpCviVV3dw/tI1Bvr7kMIIlh0NYUpjlF0BAYvcxSXmEVLKceHSCJm+PnbueBHbtkNwTXUNBzo6aGpq4sSZ'.\n     'GwT5H7BsF6Wdf1GWHQAoM0upeI9PT1yioS7B7tdaSdSuw7KsUGMAy7HYsmUztTW1nMwM0txssX1rlHjjS5jy/Uq2YkK/eJuLl6/z'.\n     'x+1xkslW6mrixGIODx8EFSlEBC0+tmXT0NhA2763iEUjnLv4C8XpUbSbAB1mKkGJ3J83Od77HW5EszvZSqK2iljMIeJaRGNuJePF'.\n     '6mspY7BJ1DXwQnCd2fxGRq5OUCz8xt72dyhMZcn++Cu3xu9SKhdp2b4ZHWnAtTSxmIWlhcIjlksR3lNBYzlxZsb7+f7ne+xtSzOd'.\n     'u83szH1OnThOPp/n+a0beeP1l4mvq+PU2Qyd+5PY1RuwlAqLYFaBfbTbyPSdfgaH77A//QF4f1O/vpr6RJyq+C5Kc/M8FbFxXItY'.\n     'xOHDrvfo/fxLDnbsJBp5BowBReVWYAzabeTh5ABDw7cWoNNL3YYYNtSv57lnn6Z+Qx01VeuIuBa2DV1HD3H63BAPZu4u1WGpeLHq'.\n     'Rh7+NcjA0O+0p4+CNwXigwnbWlQQdpuEpli+n+PIkcOc//YKuckJJFh2K2anrjFw+QZt6S6kPImIF/b+cqAJD1LihWAxC61twBTo'.\n     'fPcQF/oGsVW5ovHQlavs2/8+uYnRVSOUgHAmmAClBIOBwKC0gPjhIRgEIX2wg7NnwpZW3d3d4vs+vu8TBMGK51rvPM9b8hdteZxd'.\n     'LBbVR8feJDs0Rlv6GFKeXJ21rNRXESxMPR+CBUl0nN7PjtO+dye7Up/8v1I88bf/ixT/AO1/hZsqW+C6AAAAAElFTkSuQmCC' ;\n\n        //==========================================================\n        // startconstrain.png\n        //==========================================================\n        $this->iBuiltinIcon[4][0]= 725 ;\n        $this->iBuiltinIcon[4][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlz'.\n     'AAALDgAACw4BQL7hQQAAAAd0SU1FB9ALEREICJp5fBkAAAJSSURBVHic3dS9a1NRGMfx77kxtS+xqS9FG6p1ER3qVJpBQUUc3CRU'.\n     'BwURVLB1EAuKIP0THJQiiNRJBK3iJl18AyeltRZa0bbaJMbUNmlNSm5e7s25j0NqpSSmyag/OMM9POdzDuflwn8djz8gClVRrVEV'.\n     'ur4Bl1FTNSzLrSS6vbml0jUUwSXj8Qfk3PkLtLW2AeBIybmrgz3+gFzpucjlE4f4btuFTuWuCF5XDr3a3UPf6cM8GQvxzbsRAJdh'.\n     'ScfxSywml5j7mVypN0eGEJ0tebIre+zxB6Tv7jPReS2hREpOvpmUXU+H5eC913JnNCSRVE60pUVbWoZjprR39Yq70bdqj4pW7PEH'.\n     '5FpvL9e79jOTTHM7ssDL6CJZ08LbvAGnrpZg2mI2Z/MlZfN8IkxuSwu4V9+WIrj7zFlOHfXzKrLIi2SGh5ECKjnNVNxkQEc55vOw'.\n     'rb6O8JLFdHyJ+ayFElUeHvjwkfteL/V7fKTSkFvIQE4DoLI2Mz/muTkTApcBKIwaN8pwIUrKw+ajWwDknAO0d/r4zFaMuRS63sWm'.\n     'RoOdm+vRIriUYjKexrQV+t1o0YEVwfZSVJmD/dIABJuO0LG3lRFx0GOfiAELE9OgCrfU0XnIp5FwGLEy5WEAOxlR5uN+ARhP7GN3'.\n     '5w7Gv4bQI2+xpt4jjv2nWBmIlcExE2vDAHYioszBZXw6CPE4ADoWVHmd/tuwlZR9eXYyoszBfpiNQqaAOU5+TXRN+DeeenADPT9b'.\n     'EVgKVsutKPl0TGWGhwofoquaoKK4apsq/tH/e/kFwBMXLgAEKK4AAAAASUVORK5CYII=' ;\n\n        //==========================================================\n        // calc.png\n        //==========================================================\n        $this->iBuiltinIcon[5][0]= 589 ;\n        $this->iBuiltinIcon[5][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAA4AIwBbgMF12wAAAAlwSFlz'.\n     'AAALEQAACxEBf2RfkQAAAAd0SU1FB9AHBxQeFsqn0wQAAAHKSURBVHicnZWff+RAGIef3U/gcOEgUAgUCgcLhYXCwsHBQeGgUDgs'.\n     'FgMHB4VA/4Bg4XChWFgIFIqBwkJhsRAYeOGF+TQHmWSTTbKd9pU37/x45jvfTDITXEynAbdWKVQB0NazcVm0alcL4rJaRVzm+w/e'.\n     '3iwAkzbYRcnnYgI04GCvsxxSPabYaEdt2Ra6D0atcvvvDmyrMWBX1zPq2ircP/Tk98DiJtjV/fim6ziOCL6dDHZNhxQ3arIMsox4'.\n     'vejleL2Ay9+jaw6A+4OSICG2cacGKhsGxg+CxeqAQS0Y7BYJvowq7iGMOhXHEfzpvpQkA9bLKgOgWKt+4Lo1mM9hs9m17QNsJ70P'.\n     'Fjc/O52joogoX8MZKiBiAFxd9Z1vcj9wfSpUlDRNMcYQxzFpmnJ0FPH8nDe1MQaWSz9woQpWSZKEojDkeaWoKAyr1tlu+s48wfVx'.\n     'u7n5i7jthmGIiEGcT+36PP+gFeJrxWLhb0UA/lb4ggGs1T0rZs0zwM/ZjNfilcIY5tutPxgOW3F6dUX464LrKILLiw+A7WErrl+2'.\n     'rABG1EL/BilZP8DjU2uR4U+2E49P1Z8QJmNXUzl24A9GBT0IruCfi86d9x+D12RGzt+pNAAAAABJRU5ErkJggg==' ;\n\n        //==========================================================\n        // mag.png\n        //==========================================================\n        $this->iBuiltinIcon[6][0]= 1415 ;\n        $this->iBuiltinIcon[6][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlz'.\n     'AAALDAAACwwBP0AiyAAAAAd0SU1FB9ALDxEWDY6Ul+UAAAUESURBVHicdZVrbFRFGIafsyyF0nalV1R6WiggaAptlzsr1OgEogmC'.\n     '0IgoBAsBgkIrBAPEhBj/AP6xRTCUFEwRI4jcgsitXMrFCJptJWvBNpXYbbXtbtttt6e7e86ec/yxadlCfZPJZDIz73zzzjfvR2VL'.\n     'F7U+hf0HD2JduIzTFy6SlJRkPtkcDgdCCE65OxFC8NPV6wghyM7OptankJ2dzbSC5QghEEIgCSHog9PpNAF27dlN6miZuPgElB4/'.\n     'nmY3O7ZtByA1NVUCkGWZweD1eklJScESTbqxuIjrd+/x6uIl5M19hSy7nfGOeUxf+g7VjU1sKi7C4/GYsiyz7tAJAD4/cRaA1tZW'.\n     'AHIPnECUVGD1+/3U19ebG4uLeHf1akamjsIwoVnVCOvQEdLoVILYYmMo3PIxSBJflpSaDX5FAmju1QAYv/8k/s8+wLVxOU0jR2LZ'.\n     '8sMFAApWrCApbRRDrRZirBYSLBKaoRPQw3SFernf2sav7T0Ubt4KwL4FMwF4Vu8FoHBCKgCzDhwHwLIhZ7y5a89u4m2JhA0wTdDC'.\n     'OrphEjJMNElCHxKDEjaobmvlfo/Krj27CQQCJsCGJW8C0KXqAMxMiosQA8hZWcTFx9OsaniDKh1qmG7VoFsL0x0K06kbeAMhWpRe'.\n     '/KpG+gwHAKUnz7Dz3BUMw6DK18nuw99wt0Nh6VdHI8RJicmETQgFg7SFwjSrGv+oKp6ghldV6dZ0ugJBlF6FmCESQ2w2AIqXLsan'.\n     'BrFYLJTnTCBrdBqveeopWZiPFaBHUegJhegMqGgxEkHDwB/UaQ9rdIV06v0+TD2EEQjQFtAY0dsNgNvt5sialQAIIXh7wQKuVf6J'.\n     'gTsSccPDWlQstClBGjr9eHpVWvUQncEwdYEedF8noQ4vmYmpZMTH0nTvDn25vLbrNmu7bvfnsYEbAMnhcPDgwQPzUo2LJusw/mhp'.\n     'QwlHNO0KBAnoIfxtrcQMT2De1Mm891wyUzNlUlJSpIyMDBobGzlzr5rFM/Koq6vrP8ASGxsLwPmKcvIShjPGZiPOakE3VFB8hHwd'.\n     'vJAxhrk5L7Ly+RQuH/sWgPdXrwFg/6HDFBUsIj09nehfbAWwPWOT9n5RYhqGwarNWxkRM5TRCfF4U1PQsDDJFk9uYhwXvzvKjm3b'.\n     'KSsro3DJInNW5RXp7u2bAKSlpeH1esnPz6eqqgqLpmmcr3Fht9ulfaV7mZk1Bs+lM6T1djM9fhg5egDPpTNMy5TZsW07kydPYdWM'.\n     'aXx96ixOp9O8cfUa80srmDpjOgAulytiQqZpMnvObLbt/JTtHxXj9/tRVdU0DGOAufRpevPDTeac0hJyc3NxOOawfv161lVWS6eX'.\n     'z+9/UOCxu1VWVvaTRGv16NFfjB2bNeAQp9NpTpmSM4DcbrdL0WsGDKLRR+52uwe1yP8jb2lpYfikyY9t80n03UCWZeaXVjw1f+zs'.\n     'Oen+/d+pqanhzp2fKSsrw+l0mi6XiyPl5ZGITdN8fAVJwjRNJEmi1qfw1kw7siyTnJxMe3s71dXV3GpoZO64DG41NPJylvxU5D/e'.\n     'qJKsfWQD9IkaZ2RmUvr9aV4aGYcQgjfO3aWoYBF5eXm4ewIsu/CbdPz1aWb0/p1bNoOrQxlUiuiaFo3c3FyEEOx9+C9CCD6paaTW'.\n     'p/TXyYkTJ0Xe59jf7QOyAKDWp/QXxcFQ61P4pT3ShBBcvnUHIQTjxmX19/8BCeVg+/GPpskAAAAASUVORK5CYII=' ;\n\n        //==========================================================\n        // lock.png\n        //==========================================================\n        $this->iBuiltinIcon[7][0]= 963 ;\n        $this->iBuiltinIcon[7][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlz'.\n     'AAALCwAACwsBbQSEtwAAAAd0SU1FB9AKAw0XDmwMOwIAAANASURBVHic7ZXfS1t3GMY/3+PprI7aisvo2YU6h6ATA8JW4rrlsF4U'.\n     'qiAsF9mhl0N2cYTRy9G/wptAYWPD9iJtRy5asDe7cYFmyjaXOLaMImOrmkRrjL9yTmIS3120JybWQgfb3R74wuc8Lzw858vLOUpE'.\n     'OK6pqSm2trbY39+nu7tbPHYch7m5OcLhMIA67kWj0aMQEWk6tm17rNm2LSIie3t7ksvlJJ1OSyqVkls3Z8SyLMnlcqTTaVKpFLdu'.\n     'zmBZVj1HeY2VUti2TSQSQSml2bZdi0QirK2tMT09zerqKtlslqGhISYnJ4nHv2N+foFsNquOe9FotLlxOBwmk8lgWRbhcFgymYxY'.\n     'liUi0mqaJoAuIi2macrdO7fFsizx3to0Te7euV1vrXtXEgqFmJmZYWVlhXK5LB4/U9kwDL784kYV0A3DYHd3m4sXRymXywKoRi8U'.\n     'Ch01DgQCJBIJLMsiEAhIIpHw2uLz+eqtYrEYIqKZpimxWEyCwaCMjY01zYPBIJpXqVQqsby8TLVabWKA/v5+RkZGMAyDrq4ulFKH'.\n     'HsfjcWZnZ+ns7KTRqwcnk0mKxSKFQqGJlVKtruuSTCYB6O3trW9UI/v9/iZPB/j8s2HOnX0FgHfeXpeffnzK+fWf+fijvhLs0PtG'.\n     'D/n1OJ9+MsrlSwb3733DwMCAt1EyPj6uACYmJp56168NU6nUqFSE9nZdPE7+WqC/r4NKTagcCJVqDaUUB5VDAA4Pa9x7sMLlSwan'.\n     'WjRmv13D7/erpaWlo604qOp88OF7LC48rPNosMq5Th+Dgxd4/XyA1rbzADi7j8jnf2P++wdcvSr8MJ/i8eomAKlUqn41OsDAQDeD'.\n     'g++yuPCwzm/2vU8+n2a7sMFfj79mp7BBuVzioFSiXHJx3SKuW2Rzy0Up9dxnQVvODALQerqNRn4ZKe0Mvtc6TpzpmqbxalcY9Ato'.\n     '2v06t515C73YQftZB9GLnDrt4LoujuPgOA4Ui+C6yOpXJwZrJ7r/gv4P/u+D9W7fLxTz+1ScQxrZ3atRLaVxdjbY2d184R6/sLHe'.\n     'opHP7/Do90Ua+WWUyezzZHObP/7cfX54/dowE1d66s8TV3oE+Mfn+L/zb4XmHPjRG9YjAAAAAElFTkSuQmCC' ;\n\n        //==========================================================\n        // stop.png\n        //==========================================================\n        $this->iBuiltinIcon[8][0]= 889 ;\n        $this->iBuiltinIcon[8][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlz'.\n     'AAALDwAACw8BkvkDpQAAAAd0SU1FB9AJDwEvNyD6M/0AAAL2SURBVHic1ZTLaxVnGIefb2bO5OScHJN4oWrFNqcUJYoUEgU3/Qf6'.\n     'F7gwCkIrvdBLUtqqiLhSg9bgBduFSHZdiG5ctkJ3xRDbUFwUmghNzBDanPGMkzOX79LFJGPMOSd204U/+Bbzvd/78F4H/ieJdoad'.\n     'pZKxRFszAI/DcP0HazXY22v+HB01kee1PA/v3zfnjx4xgGnHcNZe7OvuNj+cOEF1ZATv5nUA4jhBSgmADCVWo8Ge2Of9wb18P/G7'.\n     'oUXmYi30zqlTVEdGWLh1g2D6MYlKkXGE0Vl8aa2GEB149+4xXSzyoOIw/mimiZV/DPb25pFOj13A9gOMEChhUEqhVYqWKUk9QAUp'.\n     'sT/P4s8PmKlUmNhQaIJbkDVqBbpw6wZ2zUc4Nm+ePku5p4eOrgpueQOFUoVCVxcD4+N07dpF9+5tVJeWGPBjhvr7WF1zC8ASgtcP'.\n     'H8a7eZ1odh4sh50nzwCw9ZNh3M4Stutiu0X2nB/LyjZ6lcIbVTpdQU/jWVPzLADM8+ZGBRdtC7wrF/O7bR99iu26VL86iU4SAH4b'.\n     'Po5d6AQhstMSvGyI4wS5FJBKSRwnzF8byx/u+PjzzMF1mfryQ1K/jnCahqp1xEopjFLoNEFJSRJHzF799gWHqa+/QKcSUXBI609f'.\n     'Al5W4teQSiHDOipNUKnMI13RvnOXAIEKQixvGWya98SC560MFwPiqEG86JM8q79Q06lvhnOndy5/B6GPCUOMUu3BQgg8z0M3GmBZ'.\n     'iGJn3v2VmsqnfzNx7FDueODuj8ROCFpjtG5TCmOYv32bJ09msP0ISydMfnAUgF8/O45RAA6WTPjlvXcB+Gn7FuRf/zAnNX6x3ARe'.\n     'PSdmqL+P/YHkwMGDOGWDZTlQcNBRhPEComgB/YeHfq2InF1kLlXUOkpMbio1bd7aATRD/X0M1lPeSlM2vt2X1XBZjZnpLG2tmZO6'.\n     'LbQVOIcP+HG2UauH3xgwBqOz9Cc3l1tC24Fz+MvUDroeGNb5if9H/1dM/wLPCYMw9fryKgAAAABJRU5ErkJggg==' ;\n\n        //==========================================================\n        // error.png\n        //==========================================================\n        $this->iBuiltinIcon[9][0]= 541 ;\n        $this->iBuiltinIcon[9][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAAaVBMVEX//////2Xy8mLl5V/Z2VvMzFi/v1WyslKlpU+ZmUyMjEh/'.\n     'f0VyckJlZT9YWDxMTDjAwMDy8sLl5bnY2K/MzKW/v5yyspKlpYiYmH+MjHY/PzV/f2xycmJlZVlZWU9MTEXY2Ms/PzwyMjLFTjea'.\n     'AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTCAkUMSj9wWSOAAABLUlEQVR4'.\n     '2s2U3ZKCMAxGjfzJanFAXFkUle/9H9JUKA1gKTN7Yy6YMjl+kNPK5rlZVSuxf1ZRnlZxFYAm93NnIKvR+MEHUgqBXx93wZGIUrSe'.\n     'h+ctEgbpiMo3iQ4kioHCGxir/ZYUbr7AgPXs9bX0BCYM8vN/cPe8oQYzom3tVsSBMVHEoOJ5dm5F1RsIe9CtqGgRacCAkUvRtevT'.\n     'e2pd6vOWF+gCuc/brcuhyARakBU9FgK5bUBWdHEH8tHpDsZnRTZQGzdLVvQ3CzyYZiTAmSIODEwzFCAdJopuvbpeZDisJ4pKEcjD'.\n     'ijWPJhU1MjCo9dkYfiUVjQNTDKY6CVbR6A0niUSZjRwFanR0l9i/TyvGnFdqwStq5axMfDbyBksld/FUumvxS/Bd9VyJvQDWiiMx'.\n     'iOsCHgAAAABJRU5ErkJggg==' ;\n\n        //==========================================================\n        // openfolder.png\n        //==========================================================\n        $this->iBuiltinIcon[10][0]= 2040 ;\n        $this->iBuiltinIcon[10][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEANAAtwClFht71AAAAAlwSFlz'.\n     'AAALEAAACxABrSO9dQAAAAd0SU1FB9AKDQ4RIXMeaLcAAAd1SURBVHicxZd7jBXVHcc/58zcvTNzH8vusqw8FsTsKiCUUh5WBZXG'.\n     'GkOptmqwNWsWLKXFGlEpzZI0AWNKSy0WhDS22gJKtWlTsSRqzYIuLGB2WVvDIwQMZQMsy2OFfdzde+/OnHP6x907vJaFpjb9JZM5'.\n     'c85Mfp/f9/s7Jxn4P4e41gtSyp78WGvtfdEAcqDFYUOH9HS0NhGk9tPb/ilSyp789UUB2AMuqhQy3Uzm7HGkE6W3dTNZMRI3EcWO'.\n     'jf9ClLmWBT3dzW8jUsevWHCG3UpWl+IkHSxnbDh/Mcz12NevBcuWXTmf6TjnXvJ88gDmVB3pw3+nt3UzHa1NqMzBS2zqPLGFjtMN'.\n     'ZNr3XdW+qyqwZcFk76HX/tHWfuQvyO4W7qhaHwL8efkMRlRUpPv7rqD0RrJ+FgAjLy1a20OIxZJEEuNCRfIApj+om4bGM3u2/sYU'.\n     '9J41d8973f3Dhg1pISTV1dXXBRNJxPGFCzhou+DCQrScZOkktNaeDZjamgeZ9MgiYmVDccvHhjAzJw0NTh8/alyZMaVJicp0iTHj'.\n     'JpgNv38tjWUhhGROdbUL9W5/MH5XCkjlcibi+KIop5LVHLKEu8A/f4r286doa9pGrGwYAAsfqbbH3b8MgO/Nqgy6WvdbbXHMkEFJ'.\n     '4xUOMVEvaTZu3BgmvF4Yk4hz9rO/Ulr5cE9owae/rcGxohSOuiWkC2IjcIqKyPZm+OmCH7GhoZEF077EEzVVweAbJ+riEeO0Ey8y'.\n     'UubqOHn0AOgMwvf59txnBrSp9dgxKmf/+kIP1NY8SFk0jh5ajmNHAWg5b2E5EexojGHjbiVRMoRMNs0LC+Yz46vTuH3enN7BI8fr'.\n     'qFdo0BoVZNC9aVSQ4fNjBzEmQJiARxb+/AqYPMAVB5FsPU5v37g9OxgLhe14ZM5/ju052E6MNZvf5pmHHuLmmWOkEysxUtpGAtme'.\n     'dtHTflJkezqQto3jFRnLssyf1jydxiiM7zNnye/c3ZsqLu2BN5fcMfzrv/hby1tPzmRUoihcTJ87CwQI2yLtDcIqsIjYUf51qBlf'.\n     'OnScOSrdQUOMURkiXsLUzJnvbGhoBGDHH5cGyZLhOpYoNl5hqYnYEXOu5fDl9eYAHntx98n8hFHZcPHUuTSxSASAeK/CGIOxJJ0f'.\n     'bOGNPU280dgkq6Y2yu8vfjCIlwwzr+/ZQ/PHO0gOLuO5qsftDQ2NbN+4OCgqG6WTxWVaq6zpF+DiSHWnicdylp3r6aZTWthIOrNp'.\n     'ktHcvBu0sHX1Sm6ozB3B42d90zZA9bQp7PvgPSzXZfnqX/HS4DKKK2+x69Y/HURs26iBAN5ccsfw7774UcumF37C6f07KSt2OHji'.\n     'DEUJD0tISjyPrrSPlAKvN0JP/U4O1NfjuhG2rvklN1SOpfXwftpbTqAyKRrff5fb7rs9V1R7m4wlz2ihA3HpmXflUWyOH2umpLiY'.\n     'ui3v8M+6bWzfsRNbSgqkxaCkiy0simMuEWEhpcRzIhQWOIAh6tiAwS4owInFiTou5dOnMnl2NR++ujBwXEc9terD6M43nrj6LgAB'.\n     'QnDPA9/irtkP8JRS7Hr/3T6YekDQ1pEiEXOwpUVJzCVlZZFS4mZtkpEo9ChAkDp/jtLMBACy6S4RiQghLyv5cgBRPnKUOX6smUGF'.\n     'hSil0MYw9d77mPy1e5mnFE3batm3czvb6nYgEJztSFGU9LCRlMRdUjIH0+lnEMIwPNXD3NumoVJnrMCJaiciMUZfvQnz4QcBSvV1'.\n     'vjE5GK358t0zmXDnDB79saLpo20c+aSRD+t25JTp7GZQwsEWFiVxl6hlUf/WO9z32CxmL1rOe6u/I2KuwGhzLQCB7/sYY9Bah3el'.\n     'FKbvrrVm4vS7GH/7ncx+chEHGz7myCeNbPtoO0JI2jq78WIRLGkzsqs7V5SfFV5EovXACoiqqsfNpk2vo5VCWtYFBfoU0VoTBAFa'.\n     'a7TRaK2p+MoURk+cxMzq+Rzbv49DDbuo27UTW9h0dedssPxuK+kIfN8XxhgDYPVXf2Fh4XKtFIl4AiklAlBKAYRKKK36wHIweTCt'.\n     'NfHiEkaOn8j0+7/BmDFjaT30GbHywSxcuZkpFfFg+m1jjZ/NmnVvNfRvwd69e8WBA/uNFAIh4JVXXmHsmDHE4vEQQgjQ2lxQIm9N'.\n     'nz35q3BEOZOHzaG2thaA4mRU+L29It+IV21CpbRQfeMFC35gRB/M2rVrubnyZmLxWJhECBEmz/eHyo/7lMlH3LFFujsthNFCCGOu'.\n     '+WNyeUgpjSVzMKtWraKyshLPdcPEeYWCIEBdpIxSivr6eta8vI7d6+cGnhdV06pe1QP+F/QXWmuRL+jZZ58LlVmxYgUVFRV4rhtu'.\n     '4TzMxXAA6XRaRAtsYUkx8I/JtSJQOlSwpmZpCLN8+fPcdNNoHMfB9/0QJgRoP295TlR7UVv8xxZcHMuWIZ9/Hn35vG3JEGZpzVJG'.\n     'jx5N1IlitKahsZE1L69j69qHgx+urFX/lQL9JYdLlfnZihUhzOLFi8N3Ml1dthOxVH/f/8/CtqSJ2JaJ2JZ59J7RPsC/AViJsQS/'.\n     'dBntAAAAAElFTkSuQmCC' ;\n\n        //==========================================================\n        // folder.png\n        //==========================================================\n        $this->iBuiltinIcon[11][0]= 1824 ;\n        $this->iBuiltinIcon[11][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlz'.\n     'AAALEAAACxABrSO9dQAAAAd0SU1FB9ECAQgFFyd9cRUAAAadSURBVHiczdhvbBP3Hcfx9/2xfefEOA5JoCNNnIT8AdtZmYBETJsI'.\n     '6+jQOlQihT1AYgytqzZpD1atfyYqlT1h0lRpT7aRJ4NQpRvZGELVuo5Ua9jEJDIETQsNQyPBsUJMWGPnj//e+e72wNg4xElMR6ed'.\n     'ZNln3933dZ/f93f6yfB/sgmrHdDV1WXlPg8NDZUDScD8LFFFEZZlWYZhWMFg0Orq6sq/gDJAfFy1iiZy9OjrVnj4JzQ1rMWqfxm/'.\n     '309jYyNtbW0kEgnu3bvH4cOH88c/jqSKQl4/XGkd+eVtAN46up1LH92ktqYS++ZX8Pv9NDQ0sGnTJlKpFOFwmO7u7vy5IyMjeVRd'.\n     'XV1+WEOh0IrY4pDnq6wXX/sTiCJaMkFZdRNqxefoe7VtCSqXVDqdZnZ2ltraWkzTpKqqijt3JpFlG7dvj7NzZ1f++qFQyA3EClHL'.\n     'Ql743nFkhxPDtJAd5eTaYSVUfX09lZWVlJWVIUnSg7sVQMBCUcu4ceMGe/bsIRQK1QAzOcyykIM9P0KyudAyCWyqG8nhwqa4SkLt'.\n     '3r0bVVVxu924XC40TUOWZUQxe97CwgIdHR2LMHIxSCaVInVvFElxE0vMY1Pd2NUKJMWNTXHlUfF//4vETJCelwbpFm3MjP2dt37x'.\n     'AlN+PzU1NViWRSwW4+7du3g8HjweD4qi5EFAJzAExIpCANbooxhplfB0FJvTg6xWIqsVRVF6MopkU3FXPcnkJxGU0VEAdF2noqKC'.\n     'W3/8DpnqLjzep2lubsblcjE8PExHR8fboVDID9xYFpLBDpJF0jDQIncQpWlkm31FlFLtp9PfyuW/vYQj1kPSuRW/38+lj27S2Q7v'.\n     '/aWXUBVUffVNtm3blivVCEwsC5Eyc5iiApEpDEAXMqQdldhSiWVQHjJagud+8Fuexck/zv+K82dfoSbSCsDe75/km+4GVPd6+l5t'.\n     '4zJHcqVUYN2yEEtZQDCSJCueRAYsPY49HsFIZVG6p25JUumFafT4DKJN4amtT7Nz38sk5+5A70HMtEYyMkFiZhxzjQ/poXrLQrRU'.\n     'DFGEeFpAlkQkm4pRiCpIKodKzk0T/2QMh+piPjxKZPwiSkUtu/b9mNnJEWS7E8nhAmvpM60oJDkXJxqNozxRRUxPIesispBBlsXV'.\n     'UaKEFo8gzoaJhz8s2lOmrpUG+WBhJ9/60g+Z+fDXTAXfxllRjl1VkO0OFATsYhYliiK21ZKKhhHnFveUqSdKgwAEOp7F2v51vvw8'.\n     'XH7/N1wd/BlTweuUV65BdtgfoLTSkipsdD3tRi0VYpommUwGwzDwdT5HYEc3giAwcvH3jLz3BlPB67jWeZBEKYsSBWwpHZtNKo4q'.\n     'aHTDsJeeiGEYWJaFZVmYpommaRiGQdPnv0bb1m8gSRL/vPIOV979aR4lmAJ2p4qCgCxksNuKJ6VNpx4NYhgGpmkuQhmGQTqdxjAM'.\n     'qr2d7HtxEEEQuH1tkKvvvkF44tqDnrIcKJKAPf1g+LAUElq8dIiu60sApmnm93Pfzc7OYhgGrie+wFe++ztcLhcT1wf54PzPCU9c'.\n     'w7XWjWS3IdsdOAUBWZAxrRJnTQ6SG5bce2FCpmkughmGQSqVYm5uDtnj44sH38TtdhP6+Dwf//V4ttHXrkGURZJaic8RgHQ6jWma'.\n     'SJKUL5RLKNfIOczDKF3XSSaTRCIRhLJWntp3nGfWrSMxc5OLf3iNP4+68T9Ub9nF76lTpxgfHycajZJKpdA0LZ9GbjYV7hcDWZaF'.\n     'pmnMz88Ti8UYunSLmu1HFi2aVkxkaGjINTY2ttDb24vX6+XQoUNs3ryZ8vJyIDu1BUFYkkxhgxeiWlpaOHPmDE1NTdTX1xe98eWG'.\n     'JnF/9dQZCoXUYDA4AOD1ejlw4ACtra2Ul5fniwmCkEcUJiUIAoFAgL6+Pnw+H21tbfT39z8SxCS7hHsfWH9/8dL4MKqnp4eWlhac'.\n     'TmcekEvMNE2am5s5ceIEgUCA9vZ2Tp48ic/nY3j4UsmQHCYOjJHtpeBKqL1799Lc3IzT6UTXdRobGxkYGKC9vZ3W1tZ8Ko86NJ8a'.\n     'tXHjRo4dO8bp06fZsmULGzZsoL+/n0AggNfr5ezZs/8VpGTU5OSkc//+/acBfD4f1dXV7Nq1i4aGBs6dO4fP5+Pq1SuPBbIiyjTN'.\n     'RUnV1dUNXLhwAa/Xy44dO4jFYgBEo9FFF1r134BPuYlk16LrAYXsAlmtq6sbKDwoFAp9m+ykuP5ZQVZF3f8tCdwCov8LyHIoAANI'.\n     'AXf/A1TI0XCDh7OWAAAAAElFTkSuQmCC' ;\n\n        //==========================================================\n        // file_important.png\n        //==========================================================\n        $this->iBuiltinIcon[12][0]= 1785 ;\n        $this->iBuiltinIcon[12][1]=\n     'iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlz'.\n     'AAALDwAACw8BkvkDpQAAAAd0SU1FB9ECDAcjDeD3lKsAAAZ2SURBVHicrZhPaFzHHcc/897s7lutJCsr2VHsOHWMk0MPbsBUrcnF'.\n     'OFRdSo6FNhdB6SGHlpDmYtJCDyoxyKe6EBxKQkt7KKL0T6ABo0NbciqigtC6PhWKI2NFqqxdSd7V2/dmftPDvPd212t55dCBYfbN'.\n     'zpvfZ77z+/1mdhUjytWrV93Hf/24eD5z9gwiMlDjOKbb7dLtdhER2u02u7u73Lp1CxEZBw4AeZwdNQqkMd9wbziFGINJUt6rRbz5'.\n     '1ptUq1XK5TJBEAAUMHt7e+zu7gKwvLzMysoKwAng/uNg9CgQgFKlgg1DUJ67Vqtx6tQpZmdniaIIpRTOOZRSdDoddnZ2aLfbLC8v'.\n     's7S0xJUrV7ZGwQSj1PhhfRodVdDlMrpc5vup5Z2fvMPdu3fZ29vDWjvwztjYGPV6nVqtRqVS4dKlSywtLQFsAdOH2XwsCEApg3jl'.\n     'w98Rak2gvYjNZpNms0mSJDjnHgkDMDc3dySYQ0Ea8w139YUX0OUKulzyg7UmCEO+l1huvHuDra0t9vf3h1TJYSqVypFhHquIrlQI'.\n     'S5qv/uIDAC7/4bcEQYAKvK+0Wq1DVQGIoog7d+4cCeaRII35hrt+8SsEOkRlUaEyR0UpFIrXHxyMVKVUKnHv3r0jwRwaNelBjBjL'.\n     'Sz/7KYuLiwAsLi7y4z/9kY9e+TpkCuSqjI+Po7XuAWeKXLt2DWNMUZMkwRjDhQsXWFtbK6JpCCT3jfQgxomPtPX19YHWicM5x3c2'.\n     '73Pj3Ru8/aO3mZqaolKpoHVvyuvXr/Ppnf/Q7uzz380NPtu4y/qnG+ztd1hfX2dtbQ3gIvDnRyqSxl1UoPjyz98D4PTp0wPtq39Z'.\n     '4fdzLxegrVaLVqvF5OQkYRgWqpRKJZ77wvNsbW1RG5tgfKLOTH2G7Z1twqBQrgrMDvhInjfSOCY5iIv+hYWFgRZArEWsZWF941Bf'.\n     'SdMUgMnJCWpjVU4cn+HUyePM1Gc4+fRUPkzBI5w1jbukcczLv/5l0XfmzJmBFuCba38r/CRXpT+CrDUoZ0jjB4RYonJAOYRobJKT'.\n     'z5zgqfqxAbsFSH6mpHFM2qdGXh4VnoViD6mSJF2cTQeqDqBaKVHWmonJCWpZjhkC6anR5WsffTgwaHV1FaUUq6urA/2v3f5k4LnV'.\n     'arG9tUn3oI2YBCcWHYAxMVYs1qZEZY2SFB2aYZDGfMN9d7uJiWPSeFiNo5Rclc3NTXZbO6RpF7EJVixYA9agwwDnUiqlEPdQ3imi'.\n     'Jo27BGHIt/7x9yEjc3Nzh27Na7c/4TdffKl4bja3ae5MUIu0T/HOEIaOpJt4gwoSsVTK4SBIY77hFtY3ABBjBiZ90rKwvsH77/+K'.\n     't37wOhO1iPpTk4SBw1mLsz6CnKQ4l3qV+kE+t9XHlNZOk+bUJLVIE1VCcIJWQmJ6qjj30NbcXLkZMt8YPig+Z3n1G5fZ39/j/vY2'.\n     '9ckqZT2Ochbn0p4qNkU/dDfUADdXbh4HXgRO4zNdEU0XL1784PLly5w9e7Z4SazFOfGrEotDcOKrcoJPmrYIXf/Zop3QNd1skuGt'.\n     'cUAb2MgAxvHZTgFUq1Wmp6eZnZ0F8JlTjDduDThBnDeECEoJtbGIp6enqEblzCcEZ1PECU4yVRiOGgd0gc+AB0CZvkv1sWPHOHfu'.\n     'HOfPn8da41cpkkltEBEPJhYnBkTQJcdYVKGkgRxCfBsq5xXNgAa2Bn+hjTOgHEKBP8pzRUxykIH4ifLJRTJAl+UMBJzPHQ6bfe/f'.\n     'cWIzPxlUpD+zugzIZtVk1d8znBAqRxgoQuVQgSJQ3h9C5QhDRYgjUILCAzlnEdsHYTKfMTEBcP7F54YUGVmc2GLlIn6ve6v0ahSt'.\n     '8X25TzjJ+rIx1grKpQPWR4LkGVVsMgghvS0qjPdvm5OeceOTWA5Evo2mFzkjQfL7hZPUy5yvvF/uPFQL3+nbDmsLCEmT3sTmCTNr'.\n     'rogT6yFsOix3ftw7OwQhkvSU6CuinhCk0+kAkFoBazEEICHaHHiPVmU0gnUp4EAc1mYrF0EBVpwPi34VrBkwPxKk3W5ju/e5/c+d'.\n     'bGUHIAIuydTIE5zfc5Wr4lJcahHnHTP3CVGm78DrgY38N+DEibp7dmYKdAQmBh1hjEFjis+9CTWYGK21H6PxPyOI0DobYwzZF/z7'.\n     '7jadTvJtYG0kCD7lfwl49ijgT1gc0AH+dZSJA/xB+Mz/GSIvFoj/B7H1mAd8CO/zAAAAAElFTkSuQmCC' ;\n\n        $this->iLen = count($this->iBuiltinIcon);\n    }\n}\n\n//===================================================\n// Global cache for builtin images\n//===================================================\n$_gPredefIcons = new PredefIcons();\n\n//===================================================\n// CLASS IconImage\n// Description: Holds properties for an icon image\n//===================================================\nclass IconImage {\n    private $iGDImage=null;\n    private $iWidth,$iHeight;\n    private $ixalign='left',$iyalign='center';\n    private $iScale=1.0;\n\n    function __construct($aIcon,$aScale=1) {\n        GLOBAL $_gPredefIcons ;\n        if( is_string($aIcon) ) {\n            $this->iGDImage = Graph::LoadBkgImage('',$aIcon);\n        }\n        elseif( is_integer($aIcon) ) {\n            // Builtin image\n            $this->iGDImage = $_gPredefIcons->GetImg($aIcon);\n        }\n        else {\n            JpGraphError::RaiseL(6011);\n            //('Argument to IconImage must be string or integer');\n        }\n        $this->iScale = $aScale;\n        $this->iWidth = Image::GetWidth($this->iGDImage);\n        $this->iHeight = Image::GetHeight($this->iGDImage);\n    }\n\n    function GetWidth() {\n        return round($this->iScale*$this->iWidth);\n    }\n\n    function GetHeight() {\n        return round($this->iScale*$this->iHeight);\n    }\n\n    function SetAlign($aX='left',$aY='center') {\n        $this->ixalign = $aX;\n        $this->iyalign = $aY;\n    }\n\n    function Stroke($aImg,$x,$y) {\n\n        if( $this->ixalign == 'right' ) {\n            $x -= $this->iWidth;\n        }\n        elseif( $this->ixalign == 'center' ) {\n            $x -= round($this->iWidth/2*$this->iScale);\n        }\n\n        if( $this->iyalign == 'bottom' ) {\n            $y -= $this->iHeight;\n        }\n        elseif( $this->iyalign == 'center' ) {\n            $y -= round($this->iHeight/2*$this->iScale);\n        }\n\n        $aImg->Copy($this->iGDImage,\n        \t\t\t$x,$y,0,0,\n        \t\t\tround($this->iWidth*$this->iScale),round($this->iHeight*$this->iScale),\n        \t\t\t$this->iWidth,$this->iHeight);\n    }\n}\n\n\n//===================================================\n// CLASS TextProperty\n// Description: Holds properties for a text\n//===================================================\nclass TextProperty {\n    public $iShow=true;\n    public $csimtarget='',$csimwintarget='',$csimalt='';\n    private $iFFamily=FF_FONT1,$iFStyle=FS_NORMAL,$iFSize=10;\n    private $iFontArray=array();\n    private $iColor=\"black\";\n    private $iText=\"\";\n    private $iHAlign=\"left\",$iVAlign=\"bottom\";\n\n    //---------------\n    // CONSTRUCTOR\n    function __construct($aTxt='') {\n        $this->iText = $aTxt;\n    }\n\n    //---------------\n    // PUBLIC METHODS\n    function Set($aTxt) {\n        $this->iText = $aTxt;\n    }\n\n    function SetCSIMTarget($aTarget,$aAltText='',$aWinTarget='') {\n        if( is_string($aTarget) )\n        $aTarget = array($aTarget);\n        $this->csimtarget=$aTarget;\n\n        if( is_string($aWinTarget) )\n        $aWinTarget = array($aWinTarget);\n        $this->csimwintarget=$aWinTarget;\n\n        if( is_string($aAltText) )\n        $aAltText = array($aAltText);\n        $this->csimalt=$aAltText;\n\n    }\n\n    function SetCSIMAlt($aAltText) {\n        if( is_string($aAltText) )\n        $aAltText = array($aAltText);\n        $this->csimalt=$aAltText;\n    }\n\n    // Set text color\n    function SetColor($aColor) {\n        $this->iColor = $aColor;\n    }\n\n    function HasTabs() {\n        if( is_string($this->iText) ) {\n            return substr_count($this->iText,\"\\t\") > 0;\n        }\n        elseif( is_array($this->iText) ) {\n            return false;\n        }\n    }\n\n    // Get number of tabs in string\n    function GetNbrTabs() {\n        if( is_string($this->iText) ) {\n            return substr_count($this->iText,\"\\t\") ;\n        }\n        else{\n            return 0;\n        }\n    }\n\n    // Set alignment\n    function Align($aHAlign,$aVAlign=\"bottom\") {\n        $this->iHAlign=$aHAlign;\n        $this->iVAlign=$aVAlign;\n    }\n\n    // Synonym\n    function SetAlign($aHAlign,$aVAlign=\"bottom\") {\n        $this->iHAlign=$aHAlign;\n        $this->iVAlign=$aVAlign;\n    }\n\n    // Specify font\n    function SetFont($aFFamily,$aFStyle=FS_NORMAL,$aFSize=10) {\n        $this->iFFamily = $aFFamily;\n        $this->iFStyle  = $aFStyle;\n        $this->iFSize  = $aFSize;\n    }\n\n    function SetColumnFonts($aFontArray) {\n        if( !is_array($aFontArray) || count($aFontArray[0]) != 3 ) {\n            JpGraphError::RaiseL(6033);\n            // 'Array of fonts must contain arrays with 3 elements, i.e. (Family, Style, Size)'\n        }\n        $this->iFontArray = $aFontArray;\n    }\n\n\n    function IsColumns() {\n        return is_array($this->iText) ;\n    }\n\n    // Get width of text. If text contains several columns separated by\n    // tabs then return both the total width as well as an array with a\n    // width for each column.\n    function GetWidth($aImg,$aUseTabs=false,$aTabExtraMargin=1.1) {\n        $extra_margin=4;\n        $aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);\n        if( is_string($this->iText) ) {\n            if( strlen($this->iText) == 0 ) return 0;\n            $tmp = preg_split('/\\t/',$this->iText);\n            if( count($tmp) <= 1 || !$aUseTabs ) {\n                $w = $aImg->GetTextWidth($this->iText);\n                return $w + 2*$extra_margin;\n            }\n            else {\n                $tot=0;\n                $n = count($tmp);\n                for($i=0; $i < $n; ++$i) {\n                    $res[$i] = $aImg->GetTextWidth($tmp[$i]);\n                    $tot += $res[$i]*$aTabExtraMargin;\n                }\n                return array(round($tot),$res);\n            }\n        }\n        elseif( is_object($this->iText) ) {\n            // A single icon\n            return $this->iText->GetWidth()+2*$extra_margin;\n        }\n        elseif( is_array($this->iText) ) {\n            // Must be an array of texts. In this case we return the sum of the\n            // length + a fixed margin of 4 pixels on each text string\n            $n = count($this->iText);\n            $nf = count($this->iFontArray);\n            for( $i=0, $w=0; $i < $n; ++$i ) {\n                if( $i < $nf ) {\n                    $aImg->SetFont($this->iFontArray[$i][0],$this->iFontArray[$i][1],$this->iFontArray[$i][2]);\n                }\n                else {\n                    $aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);\n                }\n                $tmp = $this->iText[$i];\n                if( is_string($tmp) ) {\n                    $w += $aImg->GetTextWidth($tmp)+$extra_margin;\n                }\n                else {\n                    if( is_object($tmp) === false ) {\n                        JpGraphError::RaiseL(6012);\n                    }\n                    $w += $tmp->GetWidth()+$extra_margin;\n                }\n            }\n            return $w;\n        }\n        else {\n            JpGraphError::RaiseL(6012);\n        }\n    }\n\n    // for the case where we have multiple columns this function returns the width of each\n    // column individually. If there is no columns just return the width of the single\n    // column as an array of one\n    function GetColWidth($aImg,$aMargin=0) {\n        $aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);\n        if( is_array($this->iText) ) {\n            $n = count($this->iText);\n            $nf = count($this->iFontArray);\n            for( $i=0, $w=array(); $i < $n; ++$i ) {\n                $tmp = $this->iText[$i];\n                if( is_string($tmp) ) {\n                    if( $i < $nf ) {\n                        $aImg->SetFont($this->iFontArray[$i][0],$this->iFontArray[$i][1],$this->iFontArray[$i][2]);\n                    }\n                    else {\n                        $aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);\n                    }\n                    $w[$i] = $aImg->GetTextWidth($tmp)+$aMargin;\n                }\n                else {\n                    if( is_object($tmp) === false ) {\n                        JpGraphError::RaiseL(6012);\n                    }\n                    $w[$i] = $tmp->GetWidth()+$aMargin;\n                }\n            }\n            return $w;\n        }\n        else {\n            return array($this->GetWidth($aImg));\n        }\n    }\n\n    // Get total height of text\n    function GetHeight($aImg) {\n        $nf = count($this->iFontArray);\n        $maxheight = -1;\n\n        if( $nf > 0 ) {\n            // We have to find out the largest font and take that one as the\n            // height of the row\n            for($i=0; $i < $nf; ++$i ) {\n                $aImg->SetFont($this->iFontArray[$i][0],$this->iFontArray[$i][1],$this->iFontArray[$i][2]);\n                $height = $aImg->GetFontHeight();\n                $maxheight = max($height,$maxheight);\n            }\n        }\n\n        $aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);\n        $height = $aImg->GetFontHeight();\n        $maxheight = max($height,$maxheight);\n        return $maxheight;\n    }\n\n    // Unhide/hide the text\n    function Show($aShow=true) {\n        $this->iShow=$aShow;\n    }\n\n    // Stroke text at (x,y) coordinates. If the text contains tabs then the\n    // x parameter should be an array of positions to be used for each successive\n    // tab mark. If no array is supplied then the tabs will be ignored.\n    function Stroke($aImg,$aX,$aY) {\n        if( $this->iShow ) {\n            $aImg->SetColor($this->iColor);\n            $aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);\n            $aImg->SetTextAlign($this->iHAlign,$this->iVAlign);\n            if( $this->GetNbrTabs() < 1 ) {\n                if( is_string($this->iText) ) {\n                    if( is_array($aX) ) $aX=$aX[0];\n                    if( is_array($aY) ) $aY=$aY[0];\n                    $aImg->StrokeText($aX,$aY,$this->iText);\n                }\n                elseif( is_array($this->iText) && ($n = count($this->iText)) > 0 ) {\n                    $ax = is_array($aX) ;\n                    $ay = is_array($aY) ;\n                    if( $ax && $ay ) {\n                        // Nothing; both are already arrays\n                    }\n                    elseif( $ax ) {\n                        $aY = array_fill(0,$n,$aY);\n                    }\n                    elseif( $ay ) {\n                        $aX = array_fill(0,$n,$aX);\n                    }\n                    else {\n                        $aX = array_fill(0,$n,$aX);\n                        $aY = array_fill(0,$n,$aY);\n                    }\n                    $n = min($n, count($aX) ) ;\n                    $n = min($n, count($aY) ) ;\n                    for($i=0; $i < $n; ++$i ) {\n                        $tmp = $this->iText[$i];\n                        if( is_object($tmp) ) {\n                            $tmp->Stroke($aImg,$aX[$i],$aY[$i]);\n                        }\n                        else {\n                            if( $i < count($this->iFontArray) ) {\n                                $font = $this->iFontArray[$i];\n                                $aImg->SetFont($font[0],$font[1],$font[2]);\n                            }\n                            else {\n                                $aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);\n                            }\n                        \t$aImg->StrokeText($aX[$i],$aY[$i],str_replace(\"\\t\",\" \",$tmp));\n                        }\n                    }\n                }\n            }\n            else {\n                $tmp = preg_split('/\\t/',$this->iText);\n                $n = min(count($tmp),count($aX));\n                for($i=0; $i < $n; ++$i) {\n                    if( $i < count($this->iFontArray) ) {\n                        $font = $this->iFontArray[$i];\n                        $aImg->SetFont($font[0],$font[1],$font[2]);\n                    }\n                    else {\n                        $aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);\n                    }\n                    $aImg->StrokeText($aX[$i],$aY,$tmp[$i]);\n                }\n            }\n        }\n    }\n}\n\n//===================================================\n// CLASS HeaderProperty\n// Description: Data encapsulating class to hold property\n// for each type of the scale headers\n//===================================================\nclass HeaderProperty {\n    public $grid;\n    public $iShowLabels=true,$iShowGrid=true;\n    public $iTitleVertMargin=3,$iFFamily=FF_FONT0,$iFStyle=FS_NORMAL,$iFSize=8;\n    public $iStyle=0;\n    public $iFrameColor=\"black\",$iFrameWeight=1;\n    public $iBackgroundColor=\"white\";\n    public $iWeekendBackgroundColor=\"lightgray\",$iSundayTextColor=\"red\"; // these are only used with day scale\n    public $iTextColor=\"black\";\n    public $iLabelFormStr=\"%d\";\n    public $iIntervall = 1;\n\n    //---------------\n    // CONSTRUCTOR\n    function __construct() {\n        $this->grid = new LineProperty();\n    }\n\n    //---------------\n    // PUBLIC METHODS\n    function Show($aShow=true) {\n        $this->iShowLabels = $aShow;\n    }\n\n    function SetIntervall($aInt) {\n    \t$this->iIntervall = $aInt;\n    }\n\n    function SetInterval($aInt) {\n        $this->iIntervall = $aInt;\n    }\n\n    function GetIntervall() {\n        return $this->iIntervall ;\n    }\n\n    function SetFont($aFFamily,$aFStyle=FS_NORMAL,$aFSize=10) {\n        $this->iFFamily = $aFFamily;\n        $this->iFStyle  = $aFStyle;\n        $this->iFSize  = $aFSize;\n    }\n\n    function SetFontColor($aColor) {\n        $this->iTextColor = $aColor;\n    }\n\n    function GetFontHeight($aImg) {\n        $aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);\n        return $aImg->GetFontHeight();\n    }\n\n    function GetFontWidth($aImg) {\n        $aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);\n        return $aImg->GetFontWidth();\n    }\n\n    function GetStrWidth($aImg,$aStr) {\n        $aImg->SetFont($this->iFFamily,$this->iFStyle,$this->iFSize);\n        return $aImg->GetTextWidth($aStr);\n    }\n\n    function SetStyle($aStyle) {\n        $this->iStyle = $aStyle;\n    }\n\n    function SetBackgroundColor($aColor) {\n        $this->iBackgroundColor=$aColor;\n    }\n\n    function SetFrameWeight($aWeight) {\n        $this->iFrameWeight=$aWeight;\n    }\n\n    function SetFrameColor($aColor) {\n        $this->iFrameColor=$aColor;\n    }\n\n    // Only used by day scale\n    function SetWeekendColor($aColor) {\n        $this->iWeekendBackgroundColor=$aColor;\n    }\n\n    // Only used by day scale\n    function SetSundayFontColor($aColor) {\n        $this->iSundayTextColor=$aColor;\n    }\n\n    function SetTitleVertMargin($aMargin) {\n        $this->iTitleVertMargin=$aMargin;\n    }\n\n    function SetLabelFormatString($aStr) {\n        $this->iLabelFormStr=$aStr;\n    }\n\n    function SetFormatString($aStr) {\n        $this->SetLabelFormatString($aStr);\n    }\n\n\n}\n\n//===================================================\n// CLASS GanttScale\n// Description: Responsible for calculating and showing\n// the scale in a gantt chart. This includes providing methods for\n// converting dates to position in the chart as well as stroking the\n// date headers (days, week, etc).\n//===================================================\nclass GanttScale {\n    public $minute,$hour,$day,$week,$month,$year;\n    public $divider,$dividerh,$tableTitle;\n    public $iStartDate=-1,$iEndDate=-1;\n    // Number of gantt bar position (n.b not necessariliy the same as the number of bars)\n    // we could have on bar in position 1, and one bar in position 5 then there are two\n    // bars but the number of bar positions is 5\n    public $actinfo;\n    public $iTopPlotMargin=10,$iBottomPlotMargin=15;\n    public $iVertLines=-1;\n    public $iVertHeaderSize=-1;\n    // The width of the labels (defaults to the widest of all labels)\n    private $iLabelWidth;\n    // Out image to stroke the scale to\n    private $iImg;\n    private $iTableHeaderBackgroundColor=\"white\",$iTableHeaderFrameColor=\"black\";\n    private $iTableHeaderFrameWeight=1;\n    private $iAvailableHeight=-1,$iVertSpacing=-1;\n    private $iDateLocale;\n    private $iVertLayout=GANTT_EVEN;\n    private $iUsePlotWeekendBackground=true;\n    private $iWeekStart = 1; // Default to have weekends start on Monday\n\n    //---------------\n    // CONSTRUCTOR\n    function __construct($aImg) {\n        $this->iImg = $aImg;\n        $this->iDateLocale = new DateLocale();\n\n        $this->minute = new HeaderProperty();\n        $this->minute->SetIntervall(15);\n        $this->minute->SetLabelFormatString('i');\n        $this->minute->SetFont(FF_FONT0);\n        $this->minute->grid->SetColor(\"gray\");\n\n        $this->hour = new HeaderProperty();\n        $this->hour->SetFont(FF_FONT0);\n        $this->hour->SetIntervall(6);\n        $this->hour->SetStyle(HOURSTYLE_HM24);\n        $this->hour->SetLabelFormatString('H:i');\n        $this->hour->grid->SetColor(\"gray\");\n\n        $this->day = new HeaderProperty();\n        $this->day->grid->SetColor(\"gray\");\n        $this->day->SetLabelFormatString('l');\n\n        $this->week = new HeaderProperty();\n        $this->week->SetLabelFormatString(\"w%d\");\n        $this->week->SetFont(FF_FONT1);\n\n        $this->month = new HeaderProperty();\n        $this->month->SetFont(FF_FONT1,FS_BOLD);\n\n        $this->year = new HeaderProperty();\n        $this->year->SetFont(FF_FONT1,FS_BOLD);\n\n        $this->divider=new LineProperty();\n        $this->dividerh=new LineProperty();\n        $this->dividerh->SetWeight(2);\n        $this->divider->SetWeight(6);\n        $this->divider->SetColor('gray');\n        $this->divider->SetStyle('fancy');\n\n        $this->tableTitle=new TextProperty();\n        $this->tableTitle->Show(false);\n        $this->actinfo = new GanttActivityInfo();\n    }\n\n    //---------------\n    // PUBLIC METHODS\n    // Specify what headers should be visible\n    function ShowHeaders($aFlg) {\n        $this->day->Show($aFlg & GANTT_HDAY);\n        $this->week->Show($aFlg & GANTT_HWEEK);\n        $this->month->Show($aFlg & GANTT_HMONTH);\n        $this->year->Show($aFlg & GANTT_HYEAR);\n        $this->hour->Show($aFlg & GANTT_HHOUR);\n        $this->minute->Show($aFlg & GANTT_HMIN);\n\n        // Make some default settings of gridlines whihc makes sense\n        if( $aFlg & GANTT_HWEEK ) {\n            $this->month->grid->Show(false);\n            $this->year->grid->Show(false);\n        }\n        if( $aFlg & GANTT_HHOUR ) {\n            $this->day->grid->SetColor(\"black\");\n        }\n    }\n\n    // Should the weekend background stretch all the way down in the plotarea\n    function UseWeekendBackground($aShow) {\n        $this->iUsePlotWeekendBackground = $aShow;\n    }\n\n    // Have a range been specified?\n    function IsRangeSet() {\n        return $this->iStartDate!=-1 && $this->iEndDate!=-1;\n    }\n\n    // Should the layout be from top or even?\n    function SetVertLayout($aLayout) {\n        $this->iVertLayout = $aLayout;\n    }\n\n    // Which locale should be used?\n    function SetDateLocale($aLocale) {\n        $this->iDateLocale->Set($aLocale);\n    }\n\n    // Number of days we are showing\n    function GetNumberOfDays() {\n        return round(($this->iEndDate-$this->iStartDate)/SECPERDAY);\n    }\n\n    // The width of the actual plot area\n    function GetPlotWidth() {\n        $img=$this->iImg;\n        return $img->width - $img->left_margin - $img->right_margin;\n    }\n\n    // Specify the width of the titles(labels) for the activities\n    // (This is by default set to the minimum width enought for the\n    // widest title)\n    function SetLabelWidth($aLabelWidth) {\n        $this->iLabelWidth=$aLabelWidth;\n    }\n\n    // Which day should the week start?\n    // 0==Sun, 1==Monday, 2==Tuesday etc\n    function SetWeekStart($aStartDay) {\n        $this->iWeekStart = $aStartDay % 7;\n\n        //Recalculate the startday since this will change the week start\n        $this->SetRange($this->iStartDate,$this->iEndDate);\n    }\n\n    // Do we show min scale?\n    function IsDisplayMinute() {\n        return $this->minute->iShowLabels;\n    }\n\n    // Do we show day scale?\n    function IsDisplayHour() {\n        return $this->hour->iShowLabels;\n    }\n\n\n    // Do we show day scale?\n    function IsDisplayDay() {\n        return $this->day->iShowLabels;\n    }\n\n    // Do we show week scale?\n    function IsDisplayWeek() {\n        return $this->week->iShowLabels;\n    }\n\n    // Do we show month scale?\n    function IsDisplayMonth() {\n        return $this->month->iShowLabels;\n    }\n\n    // Do we show year scale?\n    function IsDisplayYear() {\n        return $this->year->iShowLabels;\n    }\n\n    // Specify spacing (in percent of bar height) between activity bars\n    function SetVertSpacing($aSpacing) {\n        $this->iVertSpacing = $aSpacing;\n    }\n\n    // Specify scale min and max date either as timestamp or as date strings\n    // Always round to the nearest week boundary\n    function SetRange($aMin,$aMax) {\n        $this->iStartDate = $this->NormalizeDate($aMin);\n        $this->iEndDate = $this->NormalizeDate($aMax);\n    }\n\n\n    // Adjust the start and end date so they fit to beginning/ending\n    // of the week taking the specified week start day into account.\n    function AdjustStartEndDay() {\n\n        if( !($this->IsDisplayYear() ||$this->IsDisplayMonth() || $this->IsDisplayWeek()) ) {\n            // Don't adjust\n            return;\n        }\n\n        // Get day in week for start and ending date (Sun==0)\n        $ds=date(\"w\",$this->iStartDate);\n        $de=date(\"w\",$this->iEndDate);\n\n        // We want to start on iWeekStart day. But first we subtract a week\n        // if the startdate is \"behind\" the day the week start at.\n        // This way we ensure that the given start date is always included\n        // in the range. If we don't do this the nearest correct weekday in the week\n        // to start at might be later than the start date.\n        if( $ds < $this->iWeekStart )\n        $d = strtotime('-7 day',$this->iStartDate);\n        else\n        $d = $this->iStartDate;\n        $adjdate = strtotime(($this->iWeekStart-$ds).' day',$d /*$this->iStartDate*/ );\n        $this->iStartDate = $adjdate;\n\n        // We want to end on the last day of the week\n        $preferredEndDay = ($this->iWeekStart+6)%7;\n        if( $preferredEndDay != $de ) {\n            // Solve equivalence eq:    $de + x ~ $preferredDay (mod 7)\n            $adj = (7+($preferredEndDay - $de)) % 7;\n            $adjdate = strtotime(\"+$adj day\",$this->iEndDate);\n            $this->iEndDate = $adjdate;\n        }\n    }\n\n    // Specify background for the table title area (upper left corner of the table)\n    function SetTableTitleBackground($aColor) {\n        $this->iTableHeaderBackgroundColor = $aColor;\n    }\n\n    ///////////////////////////////////////\n    // PRIVATE Methods\n\n    // Determine the height of all the scale headers combined\n    function GetHeaderHeight() {\n        $img=$this->iImg;\n        $height=1;\n        if( $this->minute->iShowLabels ) {\n            $height += $this->minute->GetFontHeight($img);\n            $height += $this->minute->iTitleVertMargin;\n        }\n        if( $this->hour->iShowLabels ) {\n            $height += $this->hour->GetFontHeight($img);\n            $height += $this->hour->iTitleVertMargin;\n        }\n        if( $this->day->iShowLabels ) {\n            $height += $this->day->GetFontHeight($img);\n            $height += $this->day->iTitleVertMargin;\n        }\n        if( $this->week->iShowLabels ) {\n            $height += $this->week->GetFontHeight($img);\n            $height += $this->week->iTitleVertMargin;\n        }\n        if( $this->month->iShowLabels ) {\n            $height += $this->month->GetFontHeight($img);\n            $height += $this->month->iTitleVertMargin;\n        }\n        if( $this->year->iShowLabels ) {\n            $height += $this->year->GetFontHeight($img);\n            $height += $this->year->iTitleVertMargin;\n        }\n        return $height;\n    }\n\n    // Get width (in pixels) for a single day\n    function GetDayWidth() {\n        return ($this->GetPlotWidth()-$this->iLabelWidth+1)/$this->GetNumberOfDays();\n    }\n\n    // Get width (in pixels) for a single hour\n    function GetHourWidth() {\n        return $this->GetDayWidth() / 24 ;\n    }\n\n    function GetMinuteWidth() {\n        return $this->GetHourWidth() / 60 ;\n    }\n\n    // Nuber of days in a year\n    function GetNumDaysInYear($aYear) {\n        if( $this->IsLeap($aYear) )\n        return 366;\n        else\n        return 365;\n    }\n\n    // Get week number\n    function GetWeekNbr($aDate,$aSunStart=true) {\n        // We can't use the internal strftime() since it gets the weeknumber\n        // wrong since it doesn't follow ISO on all systems since this is\n        // system linrary dependent.\n        // Even worse is that this works differently if we are on a Windows\n        // or UNIX box (it even differs between UNIX boxes how strftime()\n        // is natively implemented)\n        //\n        // Credit to Nicolas Hoizey <nhoizey@phpheaven.net> for this elegant\n        // version of Week Nbr calculation.\n\n        $day = $this->NormalizeDate($aDate);\n        if( $aSunStart )\n        $day += 60*60*24;\n\n        /*-------------------------------------------------------------------------\n         According to ISO-8601 :\n         \"Week 01 of a year is per definition the first week that has the Thursday in this year,\n         which is equivalent to the week that contains the fourth day of January.\n         In other words, the first week of a new year is the week that has the majority of its\n         days in the new year.\"\n\n         Be carefull, with PHP, -3 % 7 = -3, instead of 4 !!!\n\n         day of year             = date(\"z\", $day) + 1\n         offset to thursday      = 3 - (date(\"w\", $day) + 6) % 7\n         first thursday of year  = 1 + (11 - date(\"w\", mktime(0, 0, 0, 1, 1, date(\"Y\", $day)))) % 7\n         week number             = (thursday's day of year - first thursday's day of year) / 7 + 1\n         ---------------------------------------------------------------------------*/\n\n        $thursday = $day + 60 * 60 * 24 * (3 - (date(\"w\", $day) + 6) % 7);              // take week's thursday\n        $week = 1 + (date(\"z\", $thursday) - (11 - date(\"w\", mktime(0, 0, 0, 1, 1, date(\"Y\", $thursday)))) % 7) / 7;\n\n        return $week;\n    }\n\n    // Is year a leap year?\n    function IsLeap($aYear) {\n        // Is the year a leap year?\n        //$year = 0+date(\"Y\",$aDate);\n        if( $aYear % 4 == 0)\n        if( !($aYear % 100 == 0) || ($aYear % 400 == 0) )\n        return true;\n        return false;\n    }\n\n    // Get current year\n    function GetYear($aDate) {\n        return 0+Date(\"Y\",$aDate);\n    }\n\n    // Return number of days in a year\n    function GetNumDaysInMonth($aMonth,$aYear) {\n        $days=array(31,28,31,30,31,30,31,31,30,31,30,31);\n        $daysl=array(31,29,31,30,31,30,31,31,30,31,30,31);\n        if( $this->IsLeap($aYear))\n        return $daysl[$aMonth];\n        else\n        return $days[$aMonth];\n    }\n\n    // Get day in month\n    function GetMonthDayNbr($aDate) {\n        return 0+date(\"d\",$aDate);\n    }\n\n    // Get day in year\n    function GetYearDayNbr($aDate) {\n        return 0+date(\"z\",$aDate);\n    }\n\n    // Get month number\n    function GetMonthNbr($aDate) {\n        return 0+date(\"m\",$aDate);\n    }\n\n    // Translate a date to screen coordinates (horizontal scale)\n    function TranslateDate($aDate) {\n        //\n        // In order to handle the problem with Daylight savings time\n        // the scale written with equal number of seconds per day beginning\n        // with the start date. This means that we \"cement\" the state of\n        // DST as it is in the start date. If later the scale includes the\n        // switchover date (depends on the locale) we need to adjust back\n        // if the date we try to translate has a different DST status since\n        // we would otherwise be off by one hour.\n        $aDate = $this->NormalizeDate($aDate);\n        $tmp = localtime($aDate);\n        $cloc = $tmp[8];\n        $tmp = localtime($this->iStartDate);\n        $sloc = $tmp[8];\n        $offset = 0;\n        if( $sloc != $cloc) {\n            if( $sloc )\n            $offset = 3600;\n            else\n            $offset = -3600;\n        }\n        $img=$this->iImg;\n        return ($aDate-$this->iStartDate-$offset)/SECPERDAY*$this->GetDayWidth()+$img->left_margin+$this->iLabelWidth;;\n    }\n\n    // Get screen coordinatesz for the vertical position for a bar\n    function TranslateVertPos($aPos,$atTop=false) {\n        $img=$this->iImg;\n        if( $aPos > $this->iVertLines )\n        \tJpGraphError::RaiseL(6015,$aPos);\n        // 'Illegal vertical position %d'\n        if( $this->iVertLayout == GANTT_EVEN ) {\n            // Position the top bar at 1 vert spacing from the scale\n            $pos =  round($img->top_margin + $this->iVertHeaderSize +  ($aPos+1)*$this->iVertSpacing);\n        }\n        else {\n            // position the top bar at 1/2 a vert spacing from the scale\n            $pos = round($img->top_margin + $this->iVertHeaderSize  + $this->iTopPlotMargin + ($aPos+1)*$this->iVertSpacing);\n        }\n\n        if( $atTop )\n            $pos -= $this->iVertSpacing;\n\n        return $pos;\n    }\n\n    // What is the vertical spacing?\n    function GetVertSpacing() {\n        return $this->iVertSpacing;\n    }\n\n    // Convert a date to timestamp\n    function NormalizeDate($aDate) {\n        if( $aDate === false ) return false;\n        if( is_string($aDate) ) {\n            $t = strtotime($aDate);\n            if( $t === FALSE || $t === -1 ) {\n                JpGraphError::RaiseL(6016,$aDate);\n                //(\"Date string ($aDate) specified for Gantt activity can not be interpretated. Please make sure it is a valid time string, e.g. 2005-04-23 13:30\");\n            }\n            return $t;\n        }\n        elseif( is_int($aDate) || is_float($aDate) )\n            return $aDate;\n        else\n            JpGraphError::RaiseL(6017,$aDate);\n        //Unknown date format in GanttScale ($aDate).\");\n    }\n\n\n    // Convert a time string to minutes\n\n    function TimeToMinutes($aTimeString) {\n        // Split in hours and minutes\n        $pos=strpos($aTimeString,':');\n        $minint=60;\n        if( $pos === false ) {\n            $hourint = $aTimeString;\n            $minint = 0;\n        }\n        else {\n            $hourint = floor(substr($aTimeString,0,$pos));\n            $minint = floor(substr($aTimeString,$pos+1));\n        }\n        $minint += 60 * $hourint;\n        return $minint;\n    }\n\n    // Stroke the day scale (including gridlines)\n    function StrokeMinutes($aYCoord,$getHeight=false) {\n        $img=$this->iImg;\n        $xt=$img->left_margin+$this->iLabelWidth;\n        $yt=$aYCoord+$img->top_margin;\n        if( $this->minute->iShowLabels ) {\n            $img->SetFont($this->minute->iFFamily,$this->minute->iFStyle,$this->minute->iFSize);\n            $yb = $yt + $img->GetFontHeight() +\n            $this->minute->iTitleVertMargin + $this->minute->iFrameWeight;\n            if( $getHeight ) {\n                return $yb - $img->top_margin;\n            }\n            $xb = $img->width-$img->right_margin+1;\n            $img->SetColor($this->minute->iBackgroundColor);\n            $img->FilledRectangle($xt,$yt,$xb,$yb);\n\n            $x = $xt;\n            $img->SetTextAlign(\"center\");\n            $day = date('w',$this->iStartDate);\n            $minint = $this->minute->GetIntervall() ;\n\n            if( 60 % $minint !== 0 ) {\n                JpGraphError::RaiseL(6018,$minint);\n                //'Intervall for minutes must divide the hour evenly, e.g. 1,5,10,12,15,20,30 etc You have specified an intervall of '.$minint.' minutes.');\n            }\n\n\n            $n = 60 / $minint;\n            $datestamp = $this->iStartDate;\n            $width = $this->GetHourWidth() / $n ;\n            if( $width < 8 ) {\n                // TO small width to draw minute scale\n                JpGraphError::RaiseL(6019,$width);\n                //('The available width ('.$width.') for minutes are to small for this scale to be displayed. Please use auto-sizing or increase the width of the graph.');\n            }\n\n            $nh = ceil(24*60 / $this->TimeToMinutes($this->hour->GetIntervall()) );\n            $nd = $this->GetNumberOfDays();\n            // Convert to intervall to seconds\n            $minint *= 60;\n            for($j=0; $j < $nd; ++$j, $day += 1, $day %= 7) {\n                for( $k=0; $k < $nh; ++$k ) {\n                    for($i=0; $i < $n ;++$i, $x+=$width, $datestamp += $minint ) {\n                        if( $day==6 || $day==0 ) {\n\n                            $img->PushColor($this->day->iWeekendBackgroundColor);\n                            if( $this->iUsePlotWeekendBackground )\n                            $img->FilledRectangle($x,$yt+$this->day->iFrameWeight,$x+$width,$img->height-$img->bottom_margin);\n                            else\n                            $img->FilledRectangle($x,$yt+$this->day->iFrameWeight,$x+$width,$yb-$this->day->iFrameWeight);\n                            $img->PopColor();\n\n                        }\n\n                        if( $day==0 )\n                        $img->SetColor($this->day->iSundayTextColor);\n                        else\n                        $img->SetColor($this->day->iTextColor);\n\n                        switch( $this->minute->iStyle ) {\n                            case MINUTESTYLE_CUSTOM:\n                                $txt = date($this->minute->iLabelFormStr,$datestamp);\n                                break;\n                            case MINUTESTYLE_MM:\n                            default:\n                                // 15\n                                $txt = date('i',$datestamp);\n                                break;\n                        }\n                        $img->StrokeText(round($x+$width/2),round($yb-$this->minute->iTitleVertMargin),$txt);\n\n                        // Fix a rounding problem the wrong way ..\n                        // If we also have hour scale then don't draw the firsta or last\n                        // gridline since that will be overwritten by the hour scale gridline if such exists.\n                        // However, due to the propagation of rounding of the 'x+=width' term in the loop\n                        // this might sometimes be one pixel of so we fix this by not drawing it.\n                        // The proper way to fix it would be to re-calculate the scale for each step and\n                        // not using the additive term.\n                        if( !(($i == $n || $i==0) && $this->hour->iShowLabels && $this->hour->grid->iShow) ) {\n                            $img->SetColor($this->minute->grid->iColor);\n                            $img->SetLineWeight($this->minute->grid->iWeight);\n                            $img->Line($x,$yt,$x,$yb);\n                            $this->minute->grid->Stroke($img,$x,$yb,$x,$img->height-$img->bottom_margin);\n                        }\n                    }\n                }\n            }\n            $img->SetColor($this->minute->iFrameColor);\n            $img->SetLineWeight($this->minute->iFrameWeight);\n            $img->Rectangle($xt,$yt,$xb,$yb);\n            return $yb - $img->top_margin;\n        }\n        return $aYCoord;\n    }\n\n    // Stroke the day scale (including gridlines)\n    function StrokeHours($aYCoord,$getHeight=false) {\n        $img=$this->iImg;\n        $xt=$img->left_margin+$this->iLabelWidth;\n        $yt=$aYCoord+$img->top_margin;\n        if( $this->hour->iShowLabels ) {\n            $img->SetFont($this->hour->iFFamily,$this->hour->iFStyle,$this->hour->iFSize);\n            $yb = $yt + $img->GetFontHeight() +\n            $this->hour->iTitleVertMargin + $this->hour->iFrameWeight;\n            if( $getHeight ) {\n                return $yb - $img->top_margin;\n            }\n            $xb = $img->width-$img->right_margin+1;\n            $img->SetColor($this->hour->iBackgroundColor);\n            $img->FilledRectangle($xt,$yt,$xb,$yb);\n\n            $x = $xt;\n            $img->SetTextAlign(\"center\");\n            $tmp = $this->hour->GetIntervall() ;\n            $minint = $this->TimeToMinutes($tmp);\n            if( 1440 % $minint !== 0 ) {\n                JpGraphError::RaiseL(6020,$tmp);\n                //('Intervall for hours must divide the day evenly, e.g. 0:30, 1:00, 1:30, 4:00 etc. You have specified an intervall of '.$tmp);\n            }\n\n            $n = ceil(24*60 / $minint );\n            $datestamp = $this->iStartDate;\n            $day = date('w',$this->iStartDate);\n            $doback = !$this->minute->iShowLabels;\n            $width = $this->GetDayWidth() / $n ;\n            for($j=0; $j < $this->GetNumberOfDays(); ++$j, $day += 1,$day %= 7) {\n                for($i=0; $i < $n ;++$i, $x+=$width) {\n                    if( $day==6 || $day==0 ) {\n\n                        $img->PushColor($this->day->iWeekendBackgroundColor);\n                        if( $this->iUsePlotWeekendBackground && $doback )\n                        $img->FilledRectangle($x,$yt+$this->day->iFrameWeight,$x+$width,$img->height-$img->bottom_margin);\n                        else\n                        $img->FilledRectangle($x,$yt+$this->day->iFrameWeight,$x+$width,$yb-$this->day->iFrameWeight);\n                        $img->PopColor();\n\n                    }\n\n                    if( $day==0 )\n                    $img->SetColor($this->day->iSundayTextColor);\n                    else\n                    $img->SetColor($this->day->iTextColor);\n\n                    switch( $this->hour->iStyle ) {\n                        case HOURSTYLE_HMAMPM:\n                            // 1:35pm\n                            $txt = date('g:ia',$datestamp);\n                            break;\n                        case HOURSTYLE_H24:\n                            // 13\n                            $txt = date('H',$datestamp);\n                            break;\n                        case HOURSTYLE_HAMPM:\n                            $txt = date('ga',$datestamp);\n                            break;\n                        case HOURSTYLE_CUSTOM:\n                            $txt = date($this->hour->iLabelFormStr,$datestamp);\n                            break;\n                        case HOURSTYLE_HM24:\n                        default:\n                            $txt = date('H:i',$datestamp);\n                            break;\n                    }\n                    $img->StrokeText(round($x+$width/2),round($yb-$this->hour->iTitleVertMargin),$txt);\n                    $img->SetColor($this->hour->grid->iColor);\n                    $img->SetLineWeight($this->hour->grid->iWeight);\n                    $img->Line($x,$yt,$x,$yb);\n                    $this->hour->grid->Stroke($img,$x,$yb,$x,$img->height-$img->bottom_margin);\n                    //$datestamp += $minint*60\n                    $datestamp = mktime(date('H',$datestamp),date('i',$datestamp)+$minint,0,\n                    date(\"m\",$datestamp),date(\"d\",$datestamp)+1,date(\"Y\",$datestamp));\n\n                }\n            }\n            $img->SetColor($this->hour->iFrameColor);\n            $img->SetLineWeight($this->hour->iFrameWeight);\n            $img->Rectangle($xt,$yt,$xb,$yb);\n            return $yb - $img->top_margin;\n        }\n        return $aYCoord;\n    }\n\n\n    // Stroke the day scale (including gridlines)\n    function StrokeDays($aYCoord,$getHeight=false) {\n        $img=$this->iImg;\n        $daywidth=$this->GetDayWidth();\n        $xt=$img->left_margin+$this->iLabelWidth;\n        $yt=$aYCoord+$img->top_margin;\n        if( $this->day->iShowLabels ) {\n            $img->SetFont($this->day->iFFamily,$this->day->iFStyle,$this->day->iFSize);\n            $yb=$yt + $img->GetFontHeight() + $this->day->iTitleVertMargin + $this->day->iFrameWeight;\n            if( $getHeight ) {\n                return $yb - $img->top_margin;\n            }\n            $xb=$img->width-$img->right_margin+1;\n            $img->SetColor($this->day->iBackgroundColor);\n            $img->FilledRectangle($xt,$yt,$xb,$yb);\n\n            $x = $xt;\n            $img->SetTextAlign(\"center\");\n            $day = date('w',$this->iStartDate);\n            $datestamp = $this->iStartDate;\n\n            $doback = !($this->hour->iShowLabels || $this->minute->iShowLabels);\n\n            setlocale(LC_TIME,$this->iDateLocale->iLocale);\n\n            for($i=0; $i < $this->GetNumberOfDays(); ++$i, $x+=$daywidth, $day += 1,$day %= 7) {\n                if( $day==6 || $day==0 ) {\n                    $img->SetColor($this->day->iWeekendBackgroundColor);\n                    if( $this->iUsePlotWeekendBackground && $doback)\n                        $img->FilledRectangle($x,$yt+$this->day->iFrameWeight,\n                                              $x+$daywidth,$img->height-$img->bottom_margin);\n                    else\n                        $img->FilledRectangle($x,$yt+$this->day->iFrameWeight,\n                    $x+$daywidth,$yb-$this->day->iFrameWeight);\n                }\n\n                $mn = date('m',$datestamp);\n                if( $mn[0]=='0' )\n                    $mn = $mn[1];\n\n                switch( $this->day->iStyle ) {\n                    case DAYSTYLE_LONG:\n                        // \"Monday\"\n                        $txt = date('l',$datestamp);\n                        break;\n                    case DAYSTYLE_SHORT:\n                        // \"Mon\"\n                        $txt = date('D',$datestamp);\n                        break;\n                    case DAYSTYLE_SHORTDAYDATE1:\n                        // \"Mon 23/6\"\n                        $txt = date('D d/'.$mn,$datestamp);\n                        break;\n                    case DAYSTYLE_SHORTDAYDATE2:\n                        // \"Mon 23 Jun\"\n                        $txt = date('D d M',$datestamp);\n                        break;\n                    case DAYSTYLE_SHORTDAYDATE3:\n                        // \"Mon 23 Jun 2003\"\n                        $txt = date('D d M Y',$datestamp);\n                        break;\n                    case DAYSTYLE_LONGDAYDATE1:\n                        // \"Monday 23 Jun\"\n                        $txt = date('l d M',$datestamp);\n                        break;\n                    case DAYSTYLE_LONGDAYDATE2:\n                        // \"Monday 23 Jun 2003\"\n                        $txt = date('l d M Y',$datestamp);\n                        break;\n                    case DAYSTYLE_SHORTDATE1:\n                        // \"23/6\"\n                        $txt = date('d/'.$mn,$datestamp);\n                        break;\n                    case DAYSTYLE_SHORTDATE2:\n                        // \"23 Jun\"\n                        $txt = date('d M',$datestamp);\n                        break;\n                    case DAYSTYLE_SHORTDATE3:\n                        // \"Mon 23\"\n                        $txt = date('D d',$datestamp);\n                        break;\n                    case DAYSTYLE_SHORTDATE4:\n                        // \"23\"\n                        $txt = date('d',$datestamp);\n                        break;\n                    case DAYSTYLE_CUSTOM:\n                        // Custom format\n                        $txt = date($this->day->iLabelFormStr,$datestamp);\n                        break;\n                    case DAYSTYLE_ONELETTER:\n                    default:\n                        // \"M\"\n                        $txt = date('l',$datestamp);\n                        $txt = strtoupper($txt[0]);\n                        break;\n                }\n\n                if( $day==0 )\n                    $img->SetColor($this->day->iSundayTextColor);\n                else\n                    $img->SetColor($this->day->iTextColor);\n                $img->StrokeText(round($x+$daywidth/2+1),\n                round($yb-$this->day->iTitleVertMargin),$txt);\n                $img->SetColor($this->day->grid->iColor);\n                $img->SetLineWeight($this->day->grid->iWeight);\n                $img->Line($x,$yt,$x,$yb);\n                $this->day->grid->Stroke($img,$x,$yb,$x,$img->height-$img->bottom_margin);\n                $datestamp = mktime(0,0,0,date(\"m\",$datestamp),date(\"d\",$datestamp)+1,date(\"Y\",$datestamp));\n                //$datestamp += SECPERDAY;\n\n            }\n            $img->SetColor($this->day->iFrameColor);\n            $img->SetLineWeight($this->day->iFrameWeight);\n            $img->Rectangle($xt,$yt,$xb,$yb);\n            return $yb - $img->top_margin;\n        }\n        return $aYCoord;\n    }\n\n    // Stroke week header and grid\n    function StrokeWeeks($aYCoord,$getHeight=false) {\n        if( $this->week->iShowLabels ) {\n            $img=$this->iImg;\n            $yt=$aYCoord+$img->top_margin;\n            $img->SetFont($this->week->iFFamily,$this->week->iFStyle,$this->week->iFSize);\n            $yb=$yt + $img->GetFontHeight() + $this->week->iTitleVertMargin + $this->week->iFrameWeight;\n\n            if( $getHeight ) {\n                return $yb - $img->top_margin;\n            }\n\n            $xt=$img->left_margin+$this->iLabelWidth;\n            $weekwidth=$this->GetDayWidth()*7;\n            $wdays=$this->iDateLocale->GetDayAbb();\n            $xb=$img->width-$img->right_margin+1;\n            $week = $this->iStartDate;\n            $weeknbr=$this->GetWeekNbr($week);\n            $img->SetColor($this->week->iBackgroundColor);\n            $img->FilledRectangle($xt,$yt,$xb,$yb);\n            $img->SetColor($this->week->grid->iColor);\n            $x = $xt;\n            if( $this->week->iStyle==WEEKSTYLE_WNBR ) {\n                $img->SetTextAlign(\"center\");\n                $txtOffset = $weekwidth/2+1;\n            }\n            elseif( $this->week->iStyle==WEEKSTYLE_FIRSTDAY  ||\n                    $this->week->iStyle==WEEKSTYLE_FIRSTDAY2 ||\n                    $this->week->iStyle==WEEKSTYLE_FIRSTDAYWNBR ||\n                    $this->week->iStyle==WEEKSTYLE_FIRSTDAY2WNBR ) {\n                $img->SetTextAlign(\"left\");\n                $txtOffset = 3;\n            }\n            else {\n                JpGraphError::RaiseL(6021);\n                //(\"Unknown formatting style for week.\");\n            }\n\n            for($i=0; $i<$this->GetNumberOfDays()/7; ++$i, $x+=$weekwidth) {\n                $img->PushColor($this->week->iTextColor);\n\n                if( $this->week->iStyle==WEEKSTYLE_WNBR )\n                    $txt = sprintf($this->week->iLabelFormStr,$weeknbr);\n                elseif( $this->week->iStyle==WEEKSTYLE_FIRSTDAY ||\n                        $this->week->iStyle==WEEKSTYLE_FIRSTDAYWNBR )\n                    $txt = date(\"j/n\",$week);\n                elseif( $this->week->iStyle==WEEKSTYLE_FIRSTDAY2 ||\n                        $this->week->iStyle==WEEKSTYLE_FIRSTDAY2WNBR ) {\n                    $monthnbr = date(\"n\",$week)-1;\n                    $shortmonth = $this->iDateLocale->GetShortMonthName($monthnbr);\n                    $txt = Date(\"j\",$week).\" \".$shortmonth;\n                }\n\n                if( $this->week->iStyle==WEEKSTYLE_FIRSTDAYWNBR ||\n                $this->week->iStyle==WEEKSTYLE_FIRSTDAY2WNBR ) {\n                    $w = sprintf($this->week->iLabelFormStr,$weeknbr);\n                    $txt .= ' '.$w;\n                }\n\n                $img->StrokeText(round($x+$txtOffset),\n                round($yb-$this->week->iTitleVertMargin),$txt);\n\n                $week = strtotime('+7 day',$week);\n                $weeknbr = $this->GetWeekNbr($week);\n                $img->PopColor();\n                $img->SetLineWeight($this->week->grid->iWeight);\n                $img->Line($x,$yt,$x,$yb);\n                $this->week->grid->Stroke($img,$x,$yb,$x,$img->height-$img->bottom_margin);\n            }\n            $img->SetColor($this->week->iFrameColor);\n            $img->SetLineWeight($this->week->iFrameWeight);\n            $img->Rectangle($xt,$yt,$xb,$yb);\n            return $yb-$img->top_margin;\n        }\n        return $aYCoord;\n    }\n\n    // Format the mont scale header string\n    function GetMonthLabel($aMonthNbr,$year) {\n        $sn = $this->iDateLocale->GetShortMonthName($aMonthNbr);\n        $ln = $this->iDateLocale->GetLongMonthName($aMonthNbr);\n        switch($this->month->iStyle) {\n            case MONTHSTYLE_SHORTNAME:\n                $m=$sn;\n                break;\n            case MONTHSTYLE_LONGNAME:\n                $m=$ln;\n                break;\n            case MONTHSTYLE_SHORTNAMEYEAR2:\n                $m=$sn.\" '\".substr(\"\".$year,2);\n                break;\n            case MONTHSTYLE_SHORTNAMEYEAR4:\n                $m=$sn.\" \".$year;\n                break;\n            case MONTHSTYLE_LONGNAMEYEAR2:\n                $m=$ln.\" '\".substr(\"\".$year,2);\n                break;\n            case MONTHSTYLE_LONGNAMEYEAR4:\n                $m=$ln.\" \".$year;\n                break;\n            case MONTHSTYLE_FIRSTLETTER:\n                $m=$sn[0];\n                break;\n        }\n        return $m;\n    }\n\n    // Stroke month scale and gridlines\n    function StrokeMonths($aYCoord,$getHeight=false) {\n        if( $this->month->iShowLabels ) {\n            $img=$this->iImg;\n            $img->SetFont($this->month->iFFamily,$this->month->iFStyle,$this->month->iFSize);\n            $yt=$aYCoord+$img->top_margin;\n            $yb=$yt + $img->GetFontHeight() + $this->month->iTitleVertMargin + $this->month->iFrameWeight;\n            if( $getHeight ) {\n                return $yb - $img->top_margin;\n            }\n            $monthnbr = $this->GetMonthNbr($this->iStartDate)-1;\n            $xt=$img->left_margin+$this->iLabelWidth;\n            $xb=$img->width-$img->right_margin+1;\n\n            $img->SetColor($this->month->iBackgroundColor);\n            $img->FilledRectangle($xt,$yt,$xb,$yb);\n\n            $img->SetLineWeight($this->month->grid->iWeight);\n            $img->SetColor($this->month->iTextColor);\n            $year = 0+date(\"Y\",$this->iStartDate);\n            $img->SetTextAlign(\"center\");\n            if( $this->GetMonthNbr($this->iStartDate) == $this->GetMonthNbr($this->iEndDate)\n                && $this->GetYear($this->iStartDate)==$this->GetYear($this->iEndDate) ) {\n                $monthwidth=$this->GetDayWidth()*($this->GetMonthDayNbr($this->iEndDate) - $this->GetMonthDayNbr($this->iStartDate) + 1);\n            }\n            else {\n                $monthwidth=$this->GetDayWidth()*($this->GetNumDaysInMonth($monthnbr,$year)-$this->GetMonthDayNbr($this->iStartDate)+1);\n            }\n            // Is it enough space to stroke the first month?\n            $monthName = $this->GetMonthLabel($monthnbr,$year);\n            if( $monthwidth >= 1.2*$img->GetTextWidth($monthName) ) {\n                $img->SetColor($this->month->iTextColor);\n                $img->StrokeText(round($xt+$monthwidth/2+1),\n                round($yb-$this->month->iTitleVertMargin),\n                $monthName);\n            }\n            $x = $xt + $monthwidth;\n            while( $x < $xb ) {\n                $img->SetColor($this->month->grid->iColor);\n                $img->Line($x,$yt,$x,$yb);\n                $this->month->grid->Stroke($img,$x,$yb,$x,$img->height-$img->bottom_margin);\n                $monthnbr++;\n                if( $monthnbr==12 ) {\n                    $monthnbr=0;\n                    $year++;\n                }\n                $monthName = $this->GetMonthLabel($monthnbr,$year);\n                $monthwidth=$this->GetDayWidth()*$this->GetNumDaysInMonth($monthnbr,$year);\n                if( $x + $monthwidth < $xb )\n                    $w = $monthwidth;\n                else\n                    $w = $xb-$x;\n                if( $w >= 1.2*$img->GetTextWidth($monthName) ) {\n                    $img->SetColor($this->month->iTextColor);\n                    $img->StrokeText(round($x+$w/2+1),\n                    round($yb-$this->month->iTitleVertMargin),$monthName);\n                }\n                $x += $monthwidth;\n            }\n            $img->SetColor($this->month->iFrameColor);\n            $img->SetLineWeight($this->month->iFrameWeight);\n            $img->Rectangle($xt,$yt,$xb,$yb);\n            return $yb-$img->top_margin;\n        }\n        return $aYCoord;\n    }\n\n    // Stroke year scale and gridlines\n    function StrokeYears($aYCoord,$getHeight=false) {\n        if( $this->year->iShowLabels ) {\n            $img=$this->iImg;\n            $yt=$aYCoord+$img->top_margin;\n            $img->SetFont($this->year->iFFamily,$this->year->iFStyle,$this->year->iFSize);\n            $yb=$yt + $img->GetFontHeight() + $this->year->iTitleVertMargin + $this->year->iFrameWeight;\n\n            if( $getHeight ) {\n                return $yb - $img->top_margin;\n            }\n\n            $xb=$img->width-$img->right_margin+1;\n            $xt=$img->left_margin+$this->iLabelWidth;\n            $year = $this->GetYear($this->iStartDate);\n            $img->SetColor($this->year->iBackgroundColor);\n            $img->FilledRectangle($xt,$yt,$xb,$yb);\n            $img->SetLineWeight($this->year->grid->iWeight);\n            $img->SetTextAlign(\"center\");\n            if( $year == $this->GetYear($this->iEndDate) )\n                $yearwidth=$this->GetDayWidth()*($this->GetYearDayNbr($this->iEndDate)-$this->GetYearDayNbr($this->iStartDate)+1);\n            else\n                $yearwidth=$this->GetDayWidth()*($this->GetNumDaysInYear($year)-$this->GetYearDayNbr($this->iStartDate)+1);\n\n            // The space for a year must be at least 20% bigger than the actual text\n            // so we allow 10% margin on each side\n            if( $yearwidth >= 1.20*$img->GetTextWidth(\"\".$year) ) {\n                $img->SetColor($this->year->iTextColor);\n                $img->StrokeText(round($xt+$yearwidth/2+1),\n                                 round($yb-$this->year->iTitleVertMargin),\n                                 $year);\n            }\n            $x = $xt + $yearwidth;\n            while( $x < $xb ) {\n                $img->SetColor($this->year->grid->iColor);\n                $img->Line($x,$yt,$x,$yb);\n                $this->year->grid->Stroke($img,$x,$yb,$x,$img->height-$img->bottom_margin);\n                $year += 1;\n                $yearwidth=$this->GetDayWidth()*$this->GetNumDaysInYear($year);\n                if( $x + $yearwidth < $xb )\n                    $w = $yearwidth;\n                else\n                    $w = $xb-$x;\n                if( $w >= 1.2*$img->GetTextWidth(\"\".$year) ) {\n                    $img->SetColor($this->year->iTextColor);\n                    $img->StrokeText(round($x+$w/2+1),\n                                     round($yb-$this->year->iTitleVertMargin),\n                                     $year);\n                }\n                $x += $yearwidth;\n            }\n            $img->SetColor($this->year->iFrameColor);\n            $img->SetLineWeight($this->year->iFrameWeight);\n            $img->Rectangle($xt,$yt,$xb,$yb);\n            return $yb-$img->top_margin;\n        }\n        return $aYCoord;\n    }\n\n    // Stroke table title (upper left corner)\n    function StrokeTableHeaders($aYBottom) {\n        $img=$this->iImg;\n        $xt=$img->left_margin;\n        $yt=$img->top_margin;\n        $xb=$xt+$this->iLabelWidth;\n        $yb=$aYBottom+$img->top_margin;\n\n        if( $this->tableTitle->iShow ) {\n            $img->SetColor($this->iTableHeaderBackgroundColor);\n            $img->FilledRectangle($xt,$yt,$xb,$yb);\n            $this->tableTitle->Align(\"center\",\"top\");\n            $this->tableTitle->Stroke($img,$xt+($xb-$xt)/2+1,$yt+2);\n            $img->SetColor($this->iTableHeaderFrameColor);\n            $img->SetLineWeight($this->iTableHeaderFrameWeight);\n            $img->Rectangle($xt,$yt,$xb,$yb);\n        }\n\n        $this->actinfo->Stroke($img,$xt,$yt,$xb,$yb,$this->tableTitle->iShow);\n\n\n        // Draw the horizontal dividing line\n        $this->dividerh->Stroke($img,$xt,$yb,$img->width-$img->right_margin,$yb);\n\n        // Draw the vertical dividing line\n        // We do the width \"manually\" since we want the line only to grow\n        // to the left\n        $fancy = $this->divider->iStyle == 'fancy' ;\n        if( $fancy ) {\n            $this->divider->iStyle = 'solid';\n        }\n\n        $tmp = $this->divider->iWeight;\n        $this->divider->iWeight=1;\n        $y = $img->height-$img->bottom_margin;\n        for($i=0; $i < $tmp; ++$i ) {\n            $this->divider->Stroke($img,$xb-$i,$yt,$xb-$i,$y);\n        }\n\n        // Should we draw \"fancy\" divider\n        if( $fancy ) {\n            $img->SetLineWeight(1);\n            $img->SetColor($this->iTableHeaderFrameColor);\n            $img->Line($xb,$yt,$xb,$y);\n            $img->Line($xb-$tmp+1,$yt,$xb-$tmp+1,$y);\n            $img->SetColor('white');\n            $img->Line($xb-$tmp+2,$yt,$xb-$tmp+2,$y);\n        }\n    }\n\n    // Main entry point to stroke scale\n    function Stroke() {\n        if( !$this->IsRangeSet() ) {\n        \tJpGraphError::RaiseL(6022);\n        \t//(\"Gantt scale has not been specified.\");\n        }\n        $img=$this->iImg;\n\n        // If minutes are displayed then hour interval must be 1\n        if( $this->IsDisplayMinute() && $this->hour->GetIntervall() > 1 ) {\n            JpGraphError::RaiseL(6023);\n            //('If you display both hour and minutes the hour intervall must be 1 (Otherwise it doesn\\' make sense to display minutes).');\n        }\n\n        // Stroke all headers. As argument we supply the offset from the\n        // top which depends on any previous headers\n\n        // First find out the height of each header\n        $offy=$this->StrokeYears(0,true);\n        $offm=$this->StrokeMonths($offy,true);\n        $offw=$this->StrokeWeeks($offm,true);\n        $offd=$this->StrokeDays($offw,true);\n        $offh=$this->StrokeHours($offd,true);\n        $offmin=$this->StrokeMinutes($offh,true);\n\n\n        // ... then we can stroke them in the \"backwards order to ensure that\n        // the larger scale gridlines is stroked over the smaller scale gridline\n        $this->StrokeMinutes($offh);\n        $this->StrokeHours($offd);\n        $this->StrokeDays($offw);\n        $this->StrokeWeeks($offm);\n        $this->StrokeMonths($offy);\n        $this->StrokeYears(0);\n\n        // Now when we now the oaverall size of the scale headers\n        // we can stroke the overall table headers\n        $this->StrokeTableHeaders($offmin);\n\n        // Now we can calculate the correct scaling factor for each vertical position\n        $this->iAvailableHeight = $img->height - $img->top_margin - $img->bottom_margin - $offd;\n\n        $this->iVertHeaderSize = $offmin;\n        if( $this->iVertSpacing == -1 )\n        \t$this->iVertSpacing = $this->iAvailableHeight / $this->iVertLines;\n    }\n}\n\n\n//===================================================\n// CLASS GanttConstraint\n// Just a structure to store all the values for a constraint\n//===================================================\nclass GanttConstraint {\n    public $iConstrainRow;\n    public $iConstrainType;\n    public $iConstrainColor;\n    public $iConstrainArrowSize;\n    public $iConstrainArrowType;\n\n    //---------------\n    // CONSTRUCTOR\n    function __construct($aRow,$aType,$aColor,$aArrowSize,$aArrowType){\n        $this->iConstrainType = $aType;\n        $this->iConstrainRow = $aRow;\n        $this->iConstrainColor=$aColor;\n        $this->iConstrainArrowSize=$aArrowSize;\n        $this->iConstrainArrowType=$aArrowType;\n    }\n}\n\n\n//===================================================\n// CLASS GanttPlotObject\n// The common signature for a Gantt object\n//===================================================\nclass GanttPlotObject {\n    public $title,$caption;\n    public $csimarea='',$csimtarget='',$csimwintarget='',$csimalt='';\n    public $constraints = array();\n    public $iCaptionMargin=5;\n    public $iConstrainPos=array();\n    protected $iStart=\"\";    // Start date\n    public $iVPos=0;     // Vertical position\n    protected $iLabelLeftMargin=2; // Title margin\n\n    function __construct() {\n        $this->title = new TextProperty();\n        $this->title->Align('left','center');\n        $this->caption = new TextProperty();\n    }\n\n    function GetCSIMArea() {\n        return $this->csimarea;\n    }\n\n    function SetCSIMTarget($aTarget,$aAlt='',$aWinTarget='') {\n        if( !is_string($aTarget) ) {\n            $tv = substr(var_export($aTarget,true),0,40);\n            JpGraphError::RaiseL(6024,$tv);\n            //('CSIM Target must be specified as a string.'.\"\\nStart of target is:\\n$tv\");\n        }\n        if( !is_string($aAlt) ) {\n            $tv = substr(var_export($aAlt,true),0,40);\n            JpGraphError::RaiseL(6025,$tv);\n            //('CSIM Alt text must be specified as a string.'.\"\\nStart of alt text is:\\n$tv\");\n        }\n\n        $this->csimtarget=$aTarget;\n        $this->csimwintarget=$aWinTarget;\n        $this->csimalt=$aAlt;\n    }\n\n    function SetCSIMAlt($aAlt) {\n        if( !is_string($aAlt) ) {\n            $tv = substr(var_export($aAlt,true),0,40);\n            JpGraphError::RaiseL(6025,$tv);\n            //('CSIM Alt text must be specified as a string.'.\"\\nStart of alt text is:\\n$tv\");\n        }\n        $this->csimalt=$aAlt;\n    }\n\n    function SetConstrain($aRow,$aType,$aColor='black',$aArrowSize=ARROW_S2,$aArrowType=ARROWT_SOLID) {\n        $this->constraints[] = new GanttConstraint($aRow, $aType, $aColor, $aArrowSize, $aArrowType);\n    }\n\n    function SetConstrainPos($xt,$yt,$xb,$yb) {\n        $this->iConstrainPos = array($xt,$yt,$xb,$yb);\n    }\n\n    function GetMinDate() {\n        return $this->iStart;\n    }\n\n    function GetMaxDate() {\n        return $this->iStart;\n    }\n\n    function SetCaptionMargin($aMarg) {\n        $this->iCaptionMargin=$aMarg;\n    }\n\n    function GetAbsHeight($aImg) {\n        return 0;\n    }\n\n    function GetLineNbr() {\n        return $this->iVPos;\n    }\n\n    function SetLabelLeftMargin($aOff) {\n        $this->iLabelLeftMargin=$aOff;\n    }\n\n    function StrokeActInfo($aImg,$aScale,$aYPos) {\n        $cols=array();\n        $aScale->actinfo->GetColStart($aImg,$cols,true);\n        $this->title->Stroke($aImg,$cols,$aYPos);\n    }\n}\n\n//===================================================\n// CLASS Progress\n// Holds parameters for the progress indicator\n// displyed within a bar\n//===================================================\nclass Progress {\n    public $iProgress=-1;\n    public $iPattern=GANTT_SOLID;\n    public $iColor=\"black\", $iFillColor='black';\n    public $iDensity=98, $iHeight=0.65;\n\n    function Set($aProg) {\n        if( $aProg < 0.0 || $aProg > 1.0 ) {\n        \tJpGraphError::RaiseL(6027);\n        \t//(\"Progress value must in range [0, 1]\");\n        }\n        $this->iProgress = $aProg;\n    }\n\n    function SetPattern($aPattern,$aColor=\"blue\",$aDensity=98) {\n        $this->iPattern = $aPattern;\n        $this->iColor = $aColor;\n        $this->iDensity = $aDensity;\n    }\n\n    function SetFillColor($aColor) {\n        $this->iFillColor = $aColor;\n    }\n\n    function SetHeight($aHeight) {\n        $this->iHeight = $aHeight;\n    }\n}\n\ndefine('GANTT_HGRID1',0);\ndefine('GANTT_HGRID2',1);\n\n//===================================================\n// CLASS HorizontalGridLine\n// Responsible for drawinf horizontal gridlines and filled alternatibg rows\n//===================================================\nclass HorizontalGridLine {\n    private $iGraph=NULL;\n    private $iRowColor1 = '', $iRowColor2 = '';\n    private $iShow=false;\n    private $line=null;\n    private $iStart=0; // 0=from left margin, 1=just along header\n\n    function __construct() {\n        $this->line = new LineProperty();\n        $this->line->SetColor('gray@0.4');\n        $this->line->SetStyle('dashed');\n    }\n\n    function Show($aShow=true) {\n        $this->iShow = $aShow;\n    }\n\n    function SetRowFillColor($aColor1,$aColor2='') {\n        $this->iRowColor1 = $aColor1;\n        $this->iRowColor2 = $aColor2;\n    }\n\n    function SetStart($aStart) {\n        $this->iStart = $aStart;\n    }\n\n    function Stroke($aImg,$aScale) {\n\n        if( ! $this->iShow ) return;\n\n        // Get horizontal width of line\n        /*\n        $limst = $aScale->iStartDate;\n        $limen = $aScale->iEndDate;\n        $xt = round($aScale->TranslateDate($aScale->iStartDate));\n        $xb = round($aScale->TranslateDate($limen));\n        */\n\n        if( $this->iStart === 0 ) {\n            $xt = $aImg->left_margin-1;\n        }\n        else {\n            $xt = round($aScale->TranslateDate($aScale->iStartDate))+1;\n        }\n\n        $xb = $aImg->width-$aImg->right_margin;\n\n        $yt = round($aScale->TranslateVertPos(0));\n        $yb = round($aScale->TranslateVertPos(1));\n        $height = $yb - $yt;\n\n        // Loop around for all lines in the chart\n        for($i=0; $i < $aScale->iVertLines; ++$i ) {\n            $yb = $yt - $height;\n            $this->line->Stroke($aImg,$xt,$yb,$xb,$yb);\n            if( $this->iRowColor1 !== '' ) {\n                if( $i % 2 == 0 ) {\n                    $aImg->PushColor($this->iRowColor1);\n                    $aImg->FilledRectangle($xt,$yt,$xb,$yb);\n                    $aImg->PopColor();\n                }\n                elseif( $this->iRowColor2 !== '' ) {\n                    $aImg->PushColor($this->iRowColor2);\n                    $aImg->FilledRectangle($xt,$yt,$xb,$yb);\n                    $aImg->PopColor();\n                }\n            }\n            $yt = round($aScale->TranslateVertPos($i+1));\n        }\n        $yb = $yt - $height;\n        $this->line->Stroke($aImg,$xt,$yb,$xb,$yb);\n    }\n}\n\n\n//===================================================\n// CLASS GanttBar\n// Responsible for formatting individual gantt bars\n//===================================================\nclass GanttBar extends GanttPlotObject {\n    public $progress;\n    public $leftMark,$rightMark;\n    private $iEnd;\n    private $iHeightFactor=0.5;\n    private $iFillColor=\"white\",$iFrameColor=\"black\";\n    private $iShadow=false,$iShadowColor=\"darkgray\",$iShadowWidth=1,$iShadowFrame=\"black\";\n    private $iPattern=GANTT_RDIAG,$iPatternColor=\"blue\",$iPatternDensity=95;\n    private $iBreakStyle=false, $iBreakLineStyle='dotted',$iBreakLineWeight=1;\n    //---------------\n    // CONSTRUCTOR\n    function __construct($aPos,$aLabel,$aStart,$aEnd,$aCaption=\"\",$aHeightFactor=0.6) {\n        parent::__construct();\n        $this->iStart = $aStart;\n        // Is the end date given as a date or as number of days added to start date?\n        if( is_string($aEnd) ) {\n            // If end date has been specified without a time we will asssume\n            // end date is at the end of that date\n            if( strpos($aEnd,':') === false ) {\n            \t$this->iEnd = strtotime($aEnd)+SECPERDAY-1;\n            }\n            else {\n            \t$this->iEnd = $aEnd;\n            }\n        }\n        elseif(is_int($aEnd) || is_float($aEnd) ) {\n        \t$this->iEnd = strtotime($aStart)+round($aEnd*SECPERDAY);\n        }\n        $this->iVPos = $aPos;\n        $this->iHeightFactor = $aHeightFactor;\n        $this->title->Set($aLabel);\n        $this->caption = new TextProperty($aCaption);\n        $this->caption->Align(\"left\",\"center\");\n        $this->leftMark =new PlotMark();\n        $this->leftMark->Hide();\n        $this->rightMark=new PlotMark();\n        $this->rightMark->Hide();\n        $this->progress = new Progress();\n    }\n\n    //---------------\n    // PUBLIC METHODS\n    function SetShadow($aShadow=true,$aColor=\"gray\") {\n        $this->iShadow=$aShadow;\n        $this->iShadowColor=$aColor;\n    }\n\n    function SetBreakStyle($aFlg=true,$aLineStyle='dotted',$aLineWeight=1) {\n    \t$this->iBreakStyle = $aFlg;\n    \t$this->iBreakLineStyle = $aLineStyle;\n    \t$this->iBreakLineWeight = $aLineWeight;\n    }\n\n    function GetMaxDate() {\n        return $this->iEnd;\n    }\n\n    function SetHeight($aHeight) {\n        $this->iHeightFactor = $aHeight;\n    }\n\n    function SetColor($aColor) {\n        $this->iFrameColor = $aColor;\n    }\n\n    function SetFillColor($aColor) {\n        $this->iFillColor = $aColor;\n    }\n\n    function GetAbsHeight($aImg) {\n        if( is_int($this->iHeightFactor) || $this->leftMark->show || $this->rightMark->show ) {\n            $m=-1;\n            if( is_int($this->iHeightFactor) )\n            \t$m = $this->iHeightFactor;\n            if( $this->leftMark->show )\n            \t$m = max($m,$this->leftMark->width*2);\n            if( $this->rightMark->show )\n            \t$m = max($m,$this->rightMark->width*2);\n            return $m;\n        }\n        else\n        \treturn -1;\n    }\n\n    function SetPattern($aPattern,$aColor=\"blue\",$aDensity=95) {\n        $this->iPattern = $aPattern;\n        $this->iPatternColor = $aColor;\n        $this->iPatternDensity = $aDensity;\n    }\n\n    function Stroke($aImg,$aScale) {\n        $factory = new RectPatternFactory();\n        $prect = $factory->Create($this->iPattern,$this->iPatternColor);\n        $prect->SetDensity($this->iPatternDensity);\n\n        // If height factor is specified as a float between 0,1 then we take it as meaning\n        // percetage of the scale width between horizontal line.\n        // If it is an integer > 1 we take it to mean the absolute height in pixels\n        if( $this->iHeightFactor > -0.0 && $this->iHeightFactor <= 1.1)\n        \t$vs = $aScale->GetVertSpacing()*$this->iHeightFactor;\n        elseif(is_int($this->iHeightFactor) && $this->iHeightFactor>2 && $this->iHeightFactor < 200 )\n        \t$vs = $this->iHeightFactor;\n        else {\n        \tJpGraphError::RaiseL(6028,$this->iHeightFactor);\n        \t//\t(\"Specified height (\".$this->iHeightFactor.\") for gantt bar is out of range.\");\n        }\n\n        // Clip date to min max dates to show\n        $st = $aScale->NormalizeDate($this->iStart);\n        $en = $aScale->NormalizeDate($this->iEnd);\n\n        $limst = max($st,$aScale->iStartDate);\n        $limen = min($en,$aScale->iEndDate);\n\n        $xt = round($aScale->TranslateDate($limst));\n        $xb = round($aScale->TranslateDate($limen));\n        $yt = round($aScale->TranslateVertPos($this->iVPos)-$vs-($aScale->GetVertSpacing()/2-$vs/2));\n        $yb = round($aScale->TranslateVertPos($this->iVPos)-($aScale->GetVertSpacing()/2-$vs/2));\n        $middle = round($yt+($yb-$yt)/2);\n        $this->StrokeActInfo($aImg,$aScale,$middle);\n\n        // CSIM for title\n        if( ! empty($this->title->csimtarget) ) {\n            $colwidth = $this->title->GetColWidth($aImg);\n            $colstarts=array();\n            $aScale->actinfo->GetColStart($aImg,$colstarts,true);\n            $n = min(count($colwidth),count($this->title->csimtarget));\n            for( $i=0; $i < $n; ++$i ) {\n                $title_xt = $colstarts[$i];\n                $title_xb = $title_xt + $colwidth[$i];\n                $coords = \"$title_xt,$yt,$title_xb,$yt,$title_xb,$yb,$title_xt,$yb\";\n\n                if( ! empty($this->title->csimtarget[$i]) ) {\n                    $this->csimarea .= \"<area shape=\\\"poly\\\" coords=\\\"$coords\\\" href=\\\"\".$this->title->csimtarget[$i].\"\\\"\";\n\n                    if( ! empty($this->title->csimwintarget[$i]) ) {\n                        $this->csimarea .= \"target=\\\"\".$this->title->csimwintarget[$i].\"\\\" \";\n                    }\n\n                    if( ! empty($this->title->csimalt[$i]) ) {\n                        $tmp = $this->title->csimalt[$i];\n                        $this->csimarea .= \" title=\\\"$tmp\\\" alt=\\\"$tmp\\\" \";\n                    }\n                    $this->csimarea .= \" />\\n\";\n                }\n            }\n        }\n\n        // Check if the bar is totally outside the current scale range\n        if( $en <  $aScale->iStartDate || $st > $aScale->iEndDate )\n        \treturn;\n\n\n        // Remember the positions for the bar\n        $this->SetConstrainPos($xt,$yt,$xb,$yb);\n\n\n\n        $prect->ShowFrame(false);\n        $prect->SetBackground($this->iFillColor);\n        if( $this->iBreakStyle ) {\n        \t$aImg->SetColor($this->iFrameColor);\n        \t$olds = $aImg->SetLineStyle($this->iBreakLineStyle);\n        \t$oldw = $aImg->SetLineWeight($this->iBreakLineWeight);\n        \t$aImg->StyleLine($xt,$yt,$xb,$yt);\n        \t$aImg->StyleLine($xt,$yb,$xb,$yb);\n        \t$aImg->SetLineStyle($olds);\n        \t$aImg->SetLineWeight($oldw);\n        }\n        else {\n\t        if( $this->iShadow ) {\n\t            $aImg->SetColor($this->iFrameColor);\n\t            $aImg->ShadowRectangle($xt,$yt,$xb,$yb,$this->iFillColor,$this->iShadowWidth,$this->iShadowColor);\n\t            $prect->SetPos(new Rectangle($xt+1,$yt+1,$xb-$xt-$this->iShadowWidth-2,$yb-$yt-$this->iShadowWidth-2));\n\t            $prect->Stroke($aImg);\n\t        }\n\t        else {\n\t            $prect->SetPos(new Rectangle($xt,$yt,$xb-$xt+1,$yb-$yt+1));\n\t            $prect->Stroke($aImg);\n\t            $aImg->SetColor($this->iFrameColor);\n\t            $aImg->Rectangle($xt,$yt,$xb,$yb);\n\t        }\n        }\n        // CSIM for bar\n        if( ! empty($this->csimtarget) ) {\n\n            $coords = \"$xt,$yt,$xb,$yt,$xb,$yb,$xt,$yb\";\n            $this->csimarea .= \"<area shape=\\\"poly\\\" coords=\\\"$coords\\\" href=\\\"\".$this->csimtarget.\"\\\"\";\n\n            if( !empty($this->csimwintarget) ) {\n                $this->csimarea .= \" target=\\\"\".$this->csimwintarget.\"\\\" \";\n            }\n\n            if( $this->csimalt != '' ) {\n                $tmp = $this->csimalt;\n                $this->csimarea .= \" title=\\\"$tmp\\\" alt=\\\"$tmp\\\" \";\n            }\n            $this->csimarea .= \" />\\n\";\n        }\n\n        // Draw progress bar inside activity bar\n        if( $this->progress->iProgress > 0 ) {\n\n            $xtp = $aScale->TranslateDate($st);\n            $xbp = $aScale->TranslateDate($en);\n            $len = ($xbp-$xtp)*$this->progress->iProgress;\n\n            $endpos = $xtp+$len;\n            if( $endpos > $xt ) {\n\n                // Take away the length of the progress that is not visible (before the start date)\n                $len -= ($xt-$xtp);\n\n                // Is the the progress bar visible after the start date?\n                if( $xtp < $xt )\n                $xtp = $xt;\n\n                // Make sure that the progess bar doesn't extend over the end date\n                if( $xtp+$len-1 > $xb )\n                $len = $xb - $xtp ;\n\n                $prog = $factory->Create($this->progress->iPattern,$this->progress->iColor);\n                $prog->SetDensity($this->progress->iDensity);\n                $prog->SetBackground($this->progress->iFillColor);\n                $barheight = ($yb-$yt+1);\n                if( $this->iShadow )\n                \t$barheight -= $this->iShadowWidth;\n                $progressheight = floor($barheight*$this->progress->iHeight);\n                $marg = ceil(($barheight-$progressheight)/2);\n                $pos = new Rectangle($xtp,$yt + $marg, $len,$barheight-2*$marg);\n                $prog->SetPos($pos);\n                $prog->Stroke($aImg);\n            }\n        }\n\n        // We don't plot the end mark if the bar has been capped\n        if( $limst == $st ) {\n            $y = $middle;\n            // We treat the RIGHT and LEFT triangle mark a little bi\n            // special so that these marks are placed right under the\n            // bar.\n            if( $this->leftMark->GetType() == MARK_LEFTTRIANGLE ) {\n                $y = $yb ;\n            }\n            $this->leftMark->Stroke($aImg,$xt,$y);\n        }\n        if( $limen == $en ) {\n            $y = $middle;\n            // We treat the RIGHT and LEFT triangle mark a little bi\n            // special so that these marks are placed right under the\n            // bar.\n            if( $this->rightMark->GetType() == MARK_RIGHTTRIANGLE ) {\n                $y = $yb ;\n            }\n            $this->rightMark->Stroke($aImg,$xb,$y);\n\n            $margin = $this->iCaptionMargin;\n            if( $this->rightMark->show )\n            \t$margin += $this->rightMark->GetWidth();\n            $this->caption->Stroke($aImg,$xb+$margin,$middle);\n        }\n    }\n}\n\n//===================================================\n// CLASS MileStone\n// Responsible for formatting individual milestones\n//===================================================\nclass MileStone extends GanttPlotObject {\n    public $mark;\n\n    //---------------\n    // CONSTRUCTOR\n    function __construct($aVPos,$aLabel,$aDate,$aCaption=\"\") {\n        GanttPlotObject::__construct();\n        $this->caption->Set($aCaption);\n        $this->caption->Align(\"left\",\"center\");\n        $this->caption->SetFont(FF_FONT1,FS_BOLD);\n        $this->title->Set($aLabel);\n        $this->title->SetColor(\"darkred\");\n        $this->mark = new PlotMark();\n        $this->mark->SetWidth(10);\n        $this->mark->SetType(MARK_DIAMOND);\n        $this->mark->SetColor(\"darkred\");\n        $this->mark->SetFillColor(\"darkred\");\n        $this->iVPos = $aVPos;\n        $this->iStart = $aDate;\n    }\n\n    //---------------\n    // PUBLIC METHODS\n\n    function GetAbsHeight($aImg) {\n        return max($this->title->GetHeight($aImg),$this->mark->GetWidth());\n    }\n\n    function Stroke($aImg,$aScale) {\n        // Put the mark in the middle at the middle of the day\n        $d = $aScale->NormalizeDate($this->iStart)+SECPERDAY/2;\n        $x = $aScale->TranslateDate($d);\n        $y = $aScale->TranslateVertPos($this->iVPos)-($aScale->GetVertSpacing()/2);\n\n        $this->StrokeActInfo($aImg,$aScale,$y);\n\n        // CSIM for title\n        if( ! empty($this->title->csimtarget) ) {\n\n            $yt = round($y - $this->title->GetHeight($aImg)/2);\n            $yb = round($y + $this->title->GetHeight($aImg)/2);\n\n            $colwidth = $this->title->GetColWidth($aImg);\n            $colstarts=array();\n            $aScale->actinfo->GetColStart($aImg,$colstarts,true);\n            $n = min(count($colwidth),count($this->title->csimtarget));\n            for( $i=0; $i < $n; ++$i ) {\n                $title_xt = $colstarts[$i];\n                $title_xb = $title_xt + $colwidth[$i];\n                $coords = \"$title_xt,$yt,$title_xb,$yt,$title_xb,$yb,$title_xt,$yb\";\n\n                if( !empty($this->title->csimtarget[$i]) ) {\n\n                    $this->csimarea .= \"<area shape=\\\"poly\\\" coords=\\\"$coords\\\" href=\\\"\".$this->title->csimtarget[$i].\"\\\"\";\n\n                    if( !empty($this->title->csimwintarget[$i]) ) {\n                        $this->csimarea .= \"target=\\\"\".$this->title->csimwintarget[$i].\"\\\"\";\n                    }\n\n                    if( ! empty($this->title->csimalt[$i]) ) {\n                        $tmp = $this->title->csimalt[$i];\n                        $this->csimarea .= \" title=\\\"$tmp\\\" alt=\\\"$tmp\\\" \";\n                    }\n                    $this->csimarea .= \" />\\n\";\n                }\n            }\n        }\n\n        if( $d <  $aScale->iStartDate || $d > $aScale->iEndDate )\n        \treturn;\n\n        // Remember the coordinates for any constrains linking to\n        // this milestone\n        $w = $this->mark->GetWidth()/2;\n        $this->SetConstrainPos($x,round($y-$w),$x,round($y+$w));\n\n        // Setup CSIM\n        if( $this->csimtarget != '' ) {\n            $this->mark->SetCSIMTarget( $this->csimtarget );\n            $this->mark->SetCSIMAlt( $this->csimalt );\n        }\n\n        $this->mark->Stroke($aImg,$x,$y);\n        $this->caption->Stroke($aImg,$x+$this->mark->width/2+$this->iCaptionMargin,$y);\n\n        $this->csimarea .= $this->mark->GetCSIMAreas();\n    }\n}\n\n\n//===================================================\n// CLASS GanttVLine\n// Responsible for formatting individual milestones\n//===================================================\n\nclass TextPropertyBelow extends TextProperty {\n    function __construct($aTxt='') {\n        parent::__construct($aTxt);\n    }\n\n    function GetColWidth($aImg,$aMargin=0) {\n        // Since we are not stroking the title in the columns\n        // but rather under the graph we want this to return 0.\n        return array(0);\n    }\n}\n\nclass GanttVLine extends GanttPlotObject {\n\n    private $iLine,$title_margin=3, $iDayOffset=0.5;\n    private $iStartRow = -1, $iEndRow = -1;\n\n    //---------------\n    // CONSTRUCTOR\n    function __construct($aDate,$aTitle=\"\",$aColor=\"darkred\",$aWeight=2,$aStyle=\"solid\") {\n        GanttPlotObject::__construct();\n        $this->iLine = new LineProperty();\n        $this->iLine->SetColor($aColor);\n        $this->iLine->SetWeight($aWeight);\n        $this->iLine->SetStyle($aStyle);\n        $this->iLine->Show();\n        $this->iStart = $aDate;\n        $this->title = new TextPropertyBelow();\n        $this->title->Set($aTitle);\n    }\n\n    //---------------\n    // PUBLIC METHODS\n\n    // Set start and end rows for the VLine. By default the entire heigh of the\n    // Gantt chart is used\n    function SetRowSpan($aStart, $aEnd=-1) {\n        $this->iStartRow = $aStart;\n        $this->iEndRow = $aEnd;\n    }\n\n    function SetDayOffset($aOff=0.5) {\n        if( $aOff < 0.0 || $aOff > 1.0 ) {\n        \tJpGraphError::RaiseL(6029);\n        \t//(\"Offset for vertical line must be in range [0,1]\");\n        }\n        $this->iDayOffset = $aOff;\n    }\n\n    function SetTitleMargin($aMarg) {\n        $this->title_margin = $aMarg;\n    }\n\n    function SetWeight($aWeight) {\n        $this->iLine->SetWeight($aWeight);\n    }\n\n    function Stroke($aImg,$aScale) {\n        $d = $aScale->NormalizeDate($this->iStart);\n        if( $d <  $aScale->iStartDate || $d > $aScale->iEndDate )\n            return;\n        if($this->iDayOffset != 0.0)\n            $d += 24*60*60*$this->iDayOffset;\n        $x = $aScale->TranslateDate($d);//d=1006858800,\n\n        if( $this->iStartRow > -1 ) {\n            $y1 = $aScale->TranslateVertPos($this->iStartRow,true) ;\n        }\n        else {\n            $y1 = $aScale->iVertHeaderSize+$aImg->top_margin;\n        }\n\n        if( $this->iEndRow > -1 ) {\n            $y2 = $aScale->TranslateVertPos($this->iEndRow);\n        }\n        else {\n            $y2 = $aImg->height - $aImg->bottom_margin;\n        }\n\n        $this->iLine->Stroke($aImg,$x,$y1,$x,$y2);\n        $this->title->Align(\"center\",\"top\");\n        $this->title->Stroke($aImg,$x,$y2+$this->title_margin);\n    }\n}\n\n//===================================================\n// CLASS LinkArrow\n// Handles the drawing of a an arrow\n//===================================================\nclass LinkArrow {\n    private $ix,$iy;\n    private $isizespec = array(\n    array(2,3),array(3,5),array(3,8),array(6,15),array(8,22));\n    private $iDirection=ARROW_DOWN,$iType=ARROWT_SOLID,$iSize=ARROW_S2;\n    private $iColor='black';\n\n    function __construct($x,$y,$aDirection,$aType=ARROWT_SOLID,$aSize=ARROW_S2) {\n        $this->iDirection = $aDirection;\n        $this->iType = $aType;\n        $this->iSize = $aSize;\n        $this->ix = $x;\n        $this->iy = $y;\n    }\n\n    function SetColor($aColor) {\n        $this->iColor = $aColor;\n    }\n\n    function SetSize($aSize) {\n        $this->iSize = $aSize;\n    }\n\n    function SetType($aType) {\n        $this->iType = $aType;\n    }\n\n    function Stroke($aImg) {\n        list($dx,$dy) = $this->isizespec[$this->iSize];\n        $x = $this->ix;\n        $y = $this->iy;\n        switch ( $this->iDirection ) {\n            case ARROW_DOWN:\n                $c = array($x,$y,$x-$dx,$y-$dy,$x+$dx,$y-$dy,$x,$y);\n                break;\n            case ARROW_UP:\n                $c = array($x,$y,$x-$dx,$y+$dy,$x+$dx,$y+$dy,$x,$y);\n                break;\n            case ARROW_LEFT:\n                $c = array($x,$y,$x+$dy,$y-$dx,$x+$dy,$y+$dx,$x,$y);\n                break;\n            case ARROW_RIGHT:\n                $c = array($x,$y,$x-$dy,$y-$dx,$x-$dy,$y+$dx,$x,$y);\n                break;\n            default:\n                JpGraphError::RaiseL(6030);\n                //('Unknown arrow direction for link.');\n                die();\n                break;\n        }\n        $aImg->SetColor($this->iColor);\n        switch( $this->iType ) {\n            case ARROWT_SOLID:\n                $aImg->FilledPolygon($c);\n                break;\n            case ARROWT_OPEN:\n                $aImg->Polygon($c);\n                break;\n            default:\n                JpGraphError::RaiseL(6031);\n                //('Unknown arrow type for link.');\n                die();\n                break;\n        }\n    }\n}\n\n//===================================================\n// CLASS GanttLink\n// Handles the drawing of a link line between 2 points\n//===================================================\n\nclass GanttLink {\n    private $ix1,$ix2,$iy1,$iy2;\n    private $iPathType=2,$iPathExtend=15;\n    private $iColor='black',$iWeight=1;\n    private $iArrowSize=ARROW_S2,$iArrowType=ARROWT_SOLID;\n\n    function __construct($x1=0,$y1=0,$x2=0,$y2=0) {\n        $this->ix1 = $x1;\n        $this->ix2 = $x2;\n        $this->iy1 = $y1;\n        $this->iy2 = $y2;\n    }\n\n    function SetPos($x1,$y1,$x2,$y2) {\n        $this->ix1 = $x1;\n        $this->ix2 = $x2;\n        $this->iy1 = $y1;\n        $this->iy2 = $y2;\n    }\n\n    function SetPath($aPath) {\n        $this->iPathType = $aPath;\n    }\n\n    function SetColor($aColor) {\n        $this->iColor = $aColor;\n    }\n\n    function SetArrow($aSize,$aType=ARROWT_SOLID) {\n        $this->iArrowSize = $aSize;\n        $this->iArrowType = $aType;\n    }\n\n    function SetWeight($aWeight) {\n        $this->iWeight = $aWeight;\n    }\n\n    function Stroke($aImg) {\n        // The way the path for the arrow is constructed is partly based\n        // on some heuristics. This is not an exact science but draws the\n        // path in a way that, for me, makes esthetic sence. For example\n        // if the start and end activities are very close we make a small\n        // detour to endter the target horixontally. If there are more\n        // space between axctivities then no suh detour is made and the\n        // target is \"hit\" directly vertical. I have tried to keep this\n        // simple. no doubt this could become almost infinitive complex\n        // and have some real AI. Feel free to modify this.\n        // This will no-doubt be tweaked as times go by. One design aim\n        // is to avoid having the user choose what types of arrow\n        // he wants.\n\n        // The arrow is drawn between (x1,y1) to (x2,y2)\n        $x1 = $this->ix1 ;\n        $x2 = $this->ix2 ;\n        $y1 = $this->iy1 ;\n        $y2 = $this->iy2 ;\n\n        // Depending on if the target is below or above we have to\n        // handle thi different.\n        if( $y2 > $y1 ) {\n            $arrowtype = ARROW_DOWN;\n            $midy = round(($y2-$y1)/2+$y1);\n            if( $x2 > $x1 ) {\n                switch ( $this->iPathType  ) {\n                    case 0:\n                        $c = array($x1,$y1,$x1,$midy,$x2,$midy,$x2,$y2);\n                        break;\n                    case 1:\n                    case 2:\n                    case 3:\n                        $c = array($x1,$y1,$x2,$y1,$x2,$y2);\n                        break;\n                    default:\n                        JpGraphError::RaiseL(6032,$this->iPathType);\n                        //('Internal error: Unknown path type (='.$this->iPathType .') specified for link.');\n                        exit(1);\n                        break;\n                }\n            }\n            else {\n                switch ( $this->iPathType  ) {\n                    case 0:\n                    case 1:\n                        $c = array($x1,$y1,$x1,$midy,$x2,$midy,$x2,$y2);\n                        break;\n                    case 2:\n                        // Always extend out horizontally a bit from the first point\n                        // If we draw a link back in time (end to start) and the bars\n                        // are very close we also change the path so it comes in from\n                        // the left on the activity\n                        $c = array($x1,$y1,$x1+$this->iPathExtend,$y1,\n                        $x1+$this->iPathExtend,$midy,\n                        $x2,$midy,$x2,$y2);\n                        break;\n                    case 3:\n                        if( $y2-$midy < 6 ) {\n                            $c = array($x1,$y1,$x1,$midy,\n                            $x2-$this->iPathExtend,$midy,\n                            $x2-$this->iPathExtend,$y2,\n                            $x2,$y2);\n                            $arrowtype = ARROW_RIGHT;\n                        }\n                        else {\n                            $c = array($x1,$y1,$x1,$midy,$x2,$midy,$x2,$y2);\n                        }\n                        break;\n                    default:\n                        JpGraphError::RaiseL(6032,$this->iPathType);\n                        //('Internal error: Unknown path type specified for link.');\n                        exit(1);\n                        break;\n                }\n            }\n            $arrow = new LinkArrow($x2,$y2,$arrowtype);\n        }\n        else {\n            // Y2 < Y1\n            $arrowtype = ARROW_UP;\n            $midy = round(($y1-$y2)/2+$y2);\n            if( $x2 > $x1 ) {\n                switch ( $this->iPathType  ) {\n                    case 0:\n                    case 1:\n                        $c = array($x1,$y1,$x1,$midy,$x2,$midy,$x2,$y2);\n                        break;\n                    case 3:\n                        if( $midy-$y2 < 8 ) {\n                            $arrowtype = ARROW_RIGHT;\n                            $c = array($x1,$y1,$x1,$y2,$x2,$y2);\n                        }\n                        else {\n                            $c = array($x1,$y1,$x1,$midy,$x2,$midy,$x2,$y2);\n                        }\n                        break;\n                    default:\n                        JpGraphError::RaiseL(6032,$this->iPathType);\n                        //('Internal error: Unknown path type specified for link.');\n                        break;\n                }\n            }\n            else {\n                switch ( $this->iPathType  ) {\n                    case 0:\n                    case 1:\n                        $c = array($x1,$y1,$x1,$midy,$x2,$midy,$x2,$y2);\n                        break;\n                    case 2:\n                        // Always extend out horizontally a bit from the first point\n                        $c = array($x1,$y1,$x1+$this->iPathExtend,$y1,\n                        $x1+$this->iPathExtend,$midy,\n                        $x2,$midy,$x2,$y2);\n                        break;\n                    case 3:\n                        if( $midy-$y2 < 16 ) {\n                            $arrowtype = ARROW_RIGHT;\n                            $c = array($x1,$y1,$x1,$midy,$x2-$this->iPathExtend,$midy,\n                            $x2-$this->iPathExtend,$y2,\n                            $x2,$y2);\n                        }\n                        else {\n                            $c = array($x1,$y1,$x1,$midy,$x2,$midy,$x2,$y2);\n                        }\n                        break;\n                    default:\n                        JpGraphError::RaiseL(6032,$this->iPathType);\n                        //('Internal error: Unknown path type specified for link.');\n                        break;\n                }\n            }\n            $arrow = new LinkArrow($x2,$y2,$arrowtype);\n        }\n        $aImg->SetColor($this->iColor);\n        $aImg->SetLineWeight($this->iWeight);\n        $aImg->Polygon($c);\n        $aImg->SetLineWeight(1);\n        $arrow->SetColor($this->iColor);\n        $arrow->SetSize($this->iArrowSize);\n        $arrow->SetType($this->iArrowType);\n        $arrow->Stroke($aImg);\n    }\n}\n\n// <EOF>\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_gb2312.php",
    "content": "<?php\n//=======================================================================\n// File:        JPGRAPH_GB2312.PHP\n// Description: Chinese font conversions\n// Created:     2003-05-30\n// Ver:         $Id: jpgraph_gb2312.php 1106 2009-02-22 20:16:35Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\n\nclass GB2312toUTF8 {\n    // --------------------------------------------------------------------\n    // This code table is used to translate GB2312 code (key) to\n    // it's corresponding Unicode value (data)\n    // --------------------------------------------------------------------\n    private $codetable = array(\n    8481 => 12288, 8482 => 12289, 8483 => 12290, 8484 => 12539, 8485 => 713,\n    8486 => 711, 8487 => 168, 8488 => 12291, 8489 => 12293, 8490 => 8213,\n    8491 => 65374, 8492 => 8214, 8493 => 8230, 8494 => 8216, 8495 => 8217,\n    8496 => 8220, 8497 => 8221, 8498 => 12308, 8499 => 12309, 8500 => 12296,\n    8501 => 12297, 8502 => 12298, 8503 => 12299, 8504 => 12300, 8505 => 12301,\n    8506 => 12302, 8507 => 12303, 8508 => 12310, 8509 => 12311, 8510 => 12304,\n    8511 => 12305, 8512 => 177, 8513 => 215, 8514 => 247, 8515 => 8758,\n    8516 => 8743, 8517 => 8744, 8518 => 8721, 8519 => 8719, 8520 => 8746,\n    8521 => 8745, 8522 => 8712, 8523 => 8759, 8524 => 8730, 8525 => 8869,\n    8526 => 8741, 8527 => 8736, 8528 => 8978, 8529 => 8857, 8530 => 8747,\n    8531 => 8750, 8532 => 8801, 8533 => 8780, 8534 => 8776, 8535 => 8765,\n    8536 => 8733, 8537 => 8800, 8538 => 8814, 8539 => 8815, 8540 => 8804,\n    8541 => 8805, 8542 => 8734, 8543 => 8757, 8544 => 8756, 8545 => 9794,\n    8546 => 9792, 8547 => 176, 8548 => 8242, 8549 => 8243, 8550 => 8451,\n    8551 => 65284, 8552 => 164, 8553 => 65504, 8554 => 65505, 8555 => 8240,\n    8556 => 167, 8557 => 8470, 8558 => 9734, 8559 => 9733, 8560 => 9675,\n    8561 => 9679, 8562 => 9678, 8563 => 9671, 8564 => 9670, 8565 => 9633,\n    8566 => 9632, 8567 => 9651, 8568 => 9650, 8569 => 8251, 8570 => 8594,\n    8571 => 8592, 8572 => 8593, 8573 => 8595, 8574 => 12307, 8753 => 9352,\n    8754 => 9353, 8755 => 9354, 8756 => 9355, 8757 => 9356, 8758 => 9357,\n    8759 => 9358, 8760 => 9359, 8761 => 9360, 8762 => 9361, 8763 => 9362,\n    8764 => 9363, 8765 => 9364, 8766 => 9365, 8767 => 9366, 8768 => 9367,\n    8769 => 9368, 8770 => 9369, 8771 => 9370, 8772 => 9371, 8773 => 9332,\n    8774 => 9333, 8775 => 9334, 8776 => 9335, 8777 => 9336, 8778 => 9337,\n    8779 => 9338, 8780 => 9339, 8781 => 9340, 8782 => 9341, 8783 => 9342,\n    8784 => 9343, 8785 => 9344, 8786 => 9345, 8787 => 9346, 8788 => 9347,\n    8789 => 9348, 8790 => 9349, 8791 => 9350, 8792 => 9351, 8793 => 9312,\n    8794 => 9313, 8795 => 9314, 8796 => 9315, 8797 => 9316, 8798 => 9317,\n    8799 => 9318, 8800 => 9319, 8801 => 9320, 8802 => 9321, 8805 => 12832,\n    8806 => 12833, 8807 => 12834, 8808 => 12835, 8809 => 12836, 8810 => 12837,\n    8811 => 12838, 8812 => 12839, 8813 => 12840, 8814 => 12841, 8817 => 8544,\n    8818 => 8545, 8819 => 8546, 8820 => 8547, 8821 => 8548, 8822 => 8549,\n    8823 => 8550, 8824 => 8551, 8825 => 8552, 8826 => 8553, 8827 => 8554,\n    8828 => 8555, 8993 => 65281, 8994 => 65282, 8995 => 65283, 8996 => 65509,\n    8997 => 65285, 8998 => 65286, 8999 => 65287, 9000 => 65288, 9001 => 65289,\n    9002 => 65290, 9003 => 65291, 9004 => 65292, 9005 => 65293, 9006 => 65294,\n    9007 => 65295, 9008 => 65296, 9009 => 65297, 9010 => 65298, 9011 => 65299,\n    9012 => 65300, 9013 => 65301, 9014 => 65302, 9015 => 65303, 9016 => 65304,\n    9017 => 65305, 9018 => 65306, 9019 => 65307, 9020 => 65308, 9021 => 65309,\n    9022 => 65310, 9023 => 65311, 9024 => 65312, 9025 => 65313, 9026 => 65314,\n    9027 => 65315, 9028 => 65316, 9029 => 65317, 9030 => 65318, 9031 => 65319,\n    9032 => 65320, 9033 => 65321, 9034 => 65322, 9035 => 65323, 9036 => 65324,\n    9037 => 65325, 9038 => 65326, 9039 => 65327, 9040 => 65328, 9041 => 65329,\n    9042 => 65330, 9043 => 65331, 9044 => 65332, 9045 => 65333, 9046 => 65334,\n    9047 => 65335, 9048 => 65336, 9049 => 65337, 9050 => 65338, 9051 => 65339,\n    9052 => 65340, 9053 => 65341, 9054 => 65342, 9055 => 65343, 9056 => 65344,\n    9057 => 65345, 9058 => 65346, 9059 => 65347, 9060 => 65348, 9061 => 65349,\n    9062 => 65350, 9063 => 65351, 9064 => 65352, 9065 => 65353, 9066 => 65354,\n    9067 => 65355, 9068 => 65356, 9069 => 65357, 9070 => 65358, 9071 => 65359,\n    9072 => 65360, 9073 => 65361, 9074 => 65362, 9075 => 65363, 9076 => 65364,\n    9077 => 65365, 9078 => 65366, 9079 => 65367, 9080 => 65368, 9081 => 65369,\n    9082 => 65370, 9083 => 65371, 9084 => 65372, 9085 => 65373, 9086 => 65507,\n    9249 => 12353, 9250 => 12354, 9251 => 12355, 9252 => 12356, 9253 => 12357,\n    9254 => 12358, 9255 => 12359, 9256 => 12360, 9257 => 12361, 9258 => 12362,\n    9259 => 12363, 9260 => 12364, 9261 => 12365, 9262 => 12366, 9263 => 12367,\n    9264 => 12368, 9265 => 12369, 9266 => 12370, 9267 => 12371, 9268 => 12372,\n    9269 => 12373, 9270 => 12374, 9271 => 12375, 9272 => 12376, 9273 => 12377,\n    9274 => 12378, 9275 => 12379, 9276 => 12380, 9277 => 12381, 9278 => 12382,\n    9279 => 12383, 9280 => 12384, 9281 => 12385, 9282 => 12386, 9283 => 12387,\n    9284 => 12388, 9285 => 12389, 9286 => 12390, 9287 => 12391, 9288 => 12392,\n    9289 => 12393, 9290 => 12394, 9291 => 12395, 9292 => 12396, 9293 => 12397,\n    9294 => 12398, 9295 => 12399, 9296 => 12400, 9297 => 12401, 9298 => 12402,\n    9299 => 12403, 9300 => 12404, 9301 => 12405, 9302 => 12406, 9303 => 12407,\n    9304 => 12408, 9305 => 12409, 9306 => 12410, 9307 => 12411, 9308 => 12412,\n    9309 => 12413, 9310 => 12414, 9311 => 12415, 9312 => 12416, 9313 => 12417,\n    9314 => 12418, 9315 => 12419, 9316 => 12420, 9317 => 12421, 9318 => 12422,\n    9319 => 12423, 9320 => 12424, 9321 => 12425, 9322 => 12426, 9323 => 12427,\n    9324 => 12428, 9325 => 12429, 9326 => 12430, 9327 => 12431, 9328 => 12432,\n    9329 => 12433, 9330 => 12434, 9331 => 12435, 9505 => 12449, 9506 => 12450,\n    9507 => 12451, 9508 => 12452, 9509 => 12453, 9510 => 12454, 9511 => 12455,\n    9512 => 12456, 9513 => 12457, 9514 => 12458, 9515 => 12459, 9516 => 12460,\n    9517 => 12461, 9518 => 12462, 9519 => 12463, 9520 => 12464, 9521 => 12465,\n    9522 => 12466, 9523 => 12467, 9524 => 12468, 9525 => 12469, 9526 => 12470,\n    9527 => 12471, 9528 => 12472, 9529 => 12473, 9530 => 12474, 9531 => 12475,\n    9532 => 12476, 9533 => 12477, 9534 => 12478, 9535 => 12479, 9536 => 12480,\n    9537 => 12481, 9538 => 12482, 9539 => 12483, 9540 => 12484, 9541 => 12485,\n    9542 => 12486, 9543 => 12487, 9544 => 12488, 9545 => 12489, 9546 => 12490,\n    9547 => 12491, 9548 => 12492, 9549 => 12493, 9550 => 12494, 9551 => 12495,\n    9552 => 12496, 9553 => 12497, 9554 => 12498, 9555 => 12499, 9556 => 12500,\n    9557 => 12501, 9558 => 12502, 9559 => 12503, 9560 => 12504, 9561 => 12505,\n    9562 => 12506, 9563 => 12507, 9564 => 12508, 9565 => 12509, 9566 => 12510,\n    9567 => 12511, 9568 => 12512, 9569 => 12513, 9570 => 12514, 9571 => 12515,\n    9572 => 12516, 9573 => 12517, 9574 => 12518, 9575 => 12519, 9576 => 12520,\n    9577 => 12521, 9578 => 12522, 9579 => 12523, 9580 => 12524, 9581 => 12525,\n    9582 => 12526, 9583 => 12527, 9584 => 12528, 9585 => 12529, 9586 => 12530,\n    9587 => 12531, 9588 => 12532, 9589 => 12533, 9590 => 12534, 9761 => 913,\n    9762 => 914, 9763 => 915, 9764 => 916, 9765 => 917, 9766 => 918,\n    9767 => 919, 9768 => 920, 9769 => 921, 9770 => 922, 9771 => 923,\n    9772 => 924, 9773 => 925, 9774 => 926, 9775 => 927, 9776 => 928,\n    9777 => 929, 9778 => 931, 9779 => 932, 9780 => 933, 9781 => 934,\n    9782 => 935, 9783 => 936, 9784 => 937, 9793 => 945, 9794 => 946,\n    9795 => 947, 9796 => 948, 9797 => 949, 9798 => 950, 9799 => 951,\n    9800 => 952, 9801 => 953, 9802 => 954, 9803 => 955, 9804 => 956,\n    9805 => 957, 9806 => 958, 9807 => 959, 9808 => 960, 9809 => 961,\n    9810 => 963, 9811 => 964, 9812 => 965, 9813 => 966, 9814 => 967,\n    9815 => 968, 9816 => 969, 10017 => 1040, 10018 => 1041, 10019 => 1042,\n    10020 => 1043, 10021 => 1044, 10022 => 1045, 10023 => 1025, 10024 => 1046,\n    10025 => 1047, 10026 => 1048, 10027 => 1049, 10028 => 1050, 10029 => 1051,\n    10030 => 1052, 10031 => 1053, 10032 => 1054, 10033 => 1055, 10034 => 1056,\n    10035 => 1057, 10036 => 1058, 10037 => 1059, 10038 => 1060, 10039 => 1061,\n    10040 => 1062, 10041 => 1063, 10042 => 1064, 10043 => 1065, 10044 => 1066,\n    10045 => 1067, 10046 => 1068, 10047 => 1069, 10048 => 1070, 10049 => 1071,\n    10065 => 1072, 10066 => 1073, 10067 => 1074, 10068 => 1075, 10069 => 1076,\n    10070 => 1077, 10071 => 1105, 10072 => 1078, 10073 => 1079, 10074 => 1080,\n    10075 => 1081, 10076 => 1082, 10077 => 1083, 10078 => 1084, 10079 => 1085,\n    10080 => 1086, 10081 => 1087, 10082 => 1088, 10083 => 1089, 10084 => 1090,\n    10085 => 1091, 10086 => 1092, 10087 => 1093, 10088 => 1094, 10089 => 1095,\n    10090 => 1096, 10091 => 1097, 10092 => 1098, 10093 => 1099, 10094 => 1100,\n    10095 => 1101, 10096 => 1102, 10097 => 1103, 10273 => 257, 10274 => 225,\n    10275 => 462, 10276 => 224, 10277 => 275, 10278 => 233, 10279 => 283,\n    10280 => 232, 10281 => 299, 10282 => 237, 10283 => 464, 10284 => 236,\n    10285 => 333, 10286 => 243, 10287 => 466, 10288 => 242, 10289 => 363,\n    10290 => 250, 10291 => 468, 10292 => 249, 10293 => 470, 10294 => 472,\n    10295 => 474, 10296 => 476, 10297 => 252, 10298 => 234, 10309 => 12549,\n    10310 => 12550, 10311 => 12551, 10312 => 12552, 10313 => 12553, 10314 => 12554,\n    10315 => 12555, 10316 => 12556, 10317 => 12557, 10318 => 12558, 10319 => 12559,\n    10320 => 12560, 10321 => 12561, 10322 => 12562, 10323 => 12563, 10324 => 12564,\n    10325 => 12565, 10326 => 12566, 10327 => 12567, 10328 => 12568, 10329 => 12569,\n    10330 => 12570, 10331 => 12571, 10332 => 12572, 10333 => 12573, 10334 => 12574,\n    10335 => 12575, 10336 => 12576, 10337 => 12577, 10338 => 12578, 10339 => 12579,\n    10340 => 12580, 10341 => 12581, 10342 => 12582, 10343 => 12583, 10344 => 12584,\n    10345 => 12585, 10532 => 9472, 10533 => 9473, 10534 => 9474, 10535 => 9475,\n    10536 => 9476, 10537 => 9477, 10538 => 9478, 10539 => 9479, 10540 => 9480,\n    10541 => 9481, 10542 => 9482, 10543 => 9483, 10544 => 9484, 10545 => 9485,\n    10546 => 9486, 10547 => 9487, 10548 => 9488, 10549 => 9489, 10550 => 9490,\n    10551 => 9491, 10552 => 9492, 10553 => 9493, 10554 => 9494, 10555 => 9495,\n    10556 => 9496, 10557 => 9497, 10558 => 9498, 10559 => 9499, 10560 => 9500,\n    10561 => 9501, 10562 => 9502, 10563 => 9503, 10564 => 9504, 10565 => 9505,\n    10566 => 9506, 10567 => 9507, 10568 => 9508, 10569 => 9509, 10570 => 9510,\n    10571 => 9511, 10572 => 9512, 10573 => 9513, 10574 => 9514, 10575 => 9515,\n    10576 => 9516, 10577 => 9517, 10578 => 9518, 10579 => 9519, 10580 => 9520,\n    10581 => 9521, 10582 => 9522, 10583 => 9523, 10584 => 9524, 10585 => 9525,\n    10586 => 9526, 10587 => 9527, 10588 => 9528, 10589 => 9529, 10590 => 9530,\n    10591 => 9531, 10592 => 9532, 10593 => 9533, 10594 => 9534, 10595 => 9535,\n    10596 => 9536, 10597 => 9537, 10598 => 9538, 10599 => 9539, 10600 => 9540,\n    10601 => 9541, 10602 => 9542, 10603 => 9543, 10604 => 9544, 10605 => 9545,\n    10606 => 9546, 10607 => 9547, 12321 => 21834, 12322 => 38463, 12323 => 22467,\n    12324 => 25384, 12325 => 21710, 12326 => 21769, 12327 => 21696, 12328 => 30353,\n    12329 => 30284, 12330 => 34108, 12331 => 30702, 12332 => 33406, 12333 => 30861,\n    12334 => 29233, 12335 => 38552, 12336 => 38797, 12337 => 27688, 12338 => 23433,\n    12339 => 20474, 12340 => 25353, 12341 => 26263, 12342 => 23736, 12343 => 33018,\n    12344 => 26696, 12345 => 32942, 12346 => 26114, 12347 => 30414, 12348 => 20985,\n    12349 => 25942, 12350 => 29100, 12351 => 32753, 12352 => 34948, 12353 => 20658,\n    12354 => 22885, 12355 => 25034, 12356 => 28595, 12357 => 33453, 12358 => 25420,\n    12359 => 25170, 12360 => 21485, 12361 => 21543, 12362 => 31494, 12363 => 20843,\n    12364 => 30116, 12365 => 24052, 12366 => 25300, 12367 => 36299, 12368 => 38774,\n    12369 => 25226, 12370 => 32793, 12371 => 22365, 12372 => 38712, 12373 => 32610,\n    12374 => 29240, 12375 => 30333, 12376 => 26575, 12377 => 30334, 12378 => 25670,\n    12379 => 20336, 12380 => 36133, 12381 => 25308, 12382 => 31255, 12383 => 26001,\n    12384 => 29677, 12385 => 25644, 12386 => 25203, 12387 => 33324, 12388 => 39041,\n    12389 => 26495, 12390 => 29256, 12391 => 25198, 12392 => 25292, 12393 => 20276,\n    12394 => 29923, 12395 => 21322, 12396 => 21150, 12397 => 32458, 12398 => 37030,\n    12399 => 24110, 12400 => 26758, 12401 => 27036, 12402 => 33152, 12403 => 32465,\n    12404 => 26834, 12405 => 30917, 12406 => 34444, 12407 => 38225, 12408 => 20621,\n    12409 => 35876, 12410 => 33502, 12411 => 32990, 12412 => 21253, 12413 => 35090,\n    12414 => 21093, 12577 => 34180, 12578 => 38649, 12579 => 20445, 12580 => 22561,\n    12581 => 39281, 12582 => 23453, 12583 => 25265, 12584 => 25253, 12585 => 26292,\n    12586 => 35961, 12587 => 40077, 12588 => 29190, 12589 => 26479, 12590 => 30865,\n    12591 => 24754, 12592 => 21329, 12593 => 21271, 12594 => 36744, 12595 => 32972,\n    12596 => 36125, 12597 => 38049, 12598 => 20493, 12599 => 29384, 12600 => 22791,\n    12601 => 24811, 12602 => 28953, 12603 => 34987, 12604 => 22868, 12605 => 33519,\n    12606 => 26412, 12607 => 31528, 12608 => 23849, 12609 => 32503, 12610 => 29997,\n    12611 => 27893, 12612 => 36454, 12613 => 36856, 12614 => 36924, 12615 => 40763,\n    12616 => 27604, 12617 => 37145, 12618 => 31508, 12619 => 24444, 12620 => 30887,\n    12621 => 34006, 12622 => 34109, 12623 => 27605, 12624 => 27609, 12625 => 27606,\n    12626 => 24065, 12627 => 24199, 12628 => 30201, 12629 => 38381, 12630 => 25949,\n    12631 => 24330, 12632 => 24517, 12633 => 36767, 12634 => 22721, 12635 => 33218,\n    12636 => 36991, 12637 => 38491, 12638 => 38829, 12639 => 36793, 12640 => 32534,\n    12641 => 36140, 12642 => 25153, 12643 => 20415, 12644 => 21464, 12645 => 21342,\n    12646 => 36776, 12647 => 36777, 12648 => 36779, 12649 => 36941, 12650 => 26631,\n    12651 => 24426, 12652 => 33176, 12653 => 34920, 12654 => 40150, 12655 => 24971,\n    12656 => 21035, 12657 => 30250, 12658 => 24428, 12659 => 25996, 12660 => 28626,\n    12661 => 28392, 12662 => 23486, 12663 => 25672, 12664 => 20853, 12665 => 20912,\n    12666 => 26564, 12667 => 19993, 12668 => 31177, 12669 => 39292, 12670 => 28851,\n    12833 => 30149, 12834 => 24182, 12835 => 29627, 12836 => 33760, 12837 => 25773,\n    12838 => 25320, 12839 => 38069, 12840 => 27874, 12841 => 21338, 12842 => 21187,\n    12843 => 25615, 12844 => 38082, 12845 => 31636, 12846 => 20271, 12847 => 24091,\n    12848 => 33334, 12849 => 33046, 12850 => 33162, 12851 => 28196, 12852 => 27850,\n    12853 => 39539, 12854 => 25429, 12855 => 21340, 12856 => 21754, 12857 => 34917,\n    12858 => 22496, 12859 => 19981, 12860 => 24067, 12861 => 27493, 12862 => 31807,\n    12863 => 37096, 12864 => 24598, 12865 => 25830, 12866 => 29468, 12867 => 35009,\n    12868 => 26448, 12869 => 25165, 12870 => 36130, 12871 => 30572, 12872 => 36393,\n    12873 => 37319, 12874 => 24425, 12875 => 33756, 12876 => 34081, 12877 => 39184,\n    12878 => 21442, 12879 => 34453, 12880 => 27531, 12881 => 24813, 12882 => 24808,\n    12883 => 28799, 12884 => 33485, 12885 => 33329, 12886 => 20179, 12887 => 27815,\n    12888 => 34255, 12889 => 25805, 12890 => 31961, 12891 => 27133, 12892 => 26361,\n    12893 => 33609, 12894 => 21397, 12895 => 31574, 12896 => 20391, 12897 => 20876,\n    12898 => 27979, 12899 => 23618, 12900 => 36461, 12901 => 25554, 12902 => 21449,\n    12903 => 33580, 12904 => 33590, 12905 => 26597, 12906 => 30900, 12907 => 25661,\n    12908 => 23519, 12909 => 23700, 12910 => 24046, 12911 => 35815, 12912 => 25286,\n    12913 => 26612, 12914 => 35962, 12915 => 25600, 12916 => 25530, 12917 => 34633,\n    12918 => 39307, 12919 => 35863, 12920 => 32544, 12921 => 38130, 12922 => 20135,\n    12923 => 38416, 12924 => 39076, 12925 => 26124, 12926 => 29462, 13089 => 22330,\n    13090 => 23581, 13091 => 24120, 13092 => 38271, 13093 => 20607, 13094 => 32928,\n    13095 => 21378, 13096 => 25950, 13097 => 30021, 13098 => 21809, 13099 => 20513,\n    13100 => 36229, 13101 => 25220, 13102 => 38046, 13103 => 26397, 13104 => 22066,\n    13105 => 28526, 13106 => 24034, 13107 => 21557, 13108 => 28818, 13109 => 36710,\n    13110 => 25199, 13111 => 25764, 13112 => 25507, 13113 => 24443, 13114 => 28552,\n    13115 => 37108, 13116 => 33251, 13117 => 36784, 13118 => 23576, 13119 => 26216,\n    13120 => 24561, 13121 => 27785, 13122 => 38472, 13123 => 36225, 13124 => 34924,\n    13125 => 25745, 13126 => 31216, 13127 => 22478, 13128 => 27225, 13129 => 25104,\n    13130 => 21576, 13131 => 20056, 13132 => 31243, 13133 => 24809, 13134 => 28548,\n    13135 => 35802, 13136 => 25215, 13137 => 36894, 13138 => 39563, 13139 => 31204,\n    13140 => 21507, 13141 => 30196, 13142 => 25345, 13143 => 21273, 13144 => 27744,\n    13145 => 36831, 13146 => 24347, 13147 => 39536, 13148 => 32827, 13149 => 40831,\n    13150 => 20360, 13151 => 23610, 13152 => 36196, 13153 => 32709, 13154 => 26021,\n    13155 => 28861, 13156 => 20805, 13157 => 20914, 13158 => 34411, 13159 => 23815,\n    13160 => 23456, 13161 => 25277, 13162 => 37228, 13163 => 30068, 13164 => 36364,\n    13165 => 31264, 13166 => 24833, 13167 => 31609, 13168 => 20167, 13169 => 32504,\n    13170 => 30597, 13171 => 19985, 13172 => 33261, 13173 => 21021, 13174 => 20986,\n    13175 => 27249, 13176 => 21416, 13177 => 36487, 13178 => 38148, 13179 => 38607,\n    13180 => 28353, 13181 => 38500, 13182 => 26970, 13345 => 30784, 13346 => 20648,\n    13347 => 30679, 13348 => 25616, 13349 => 35302, 13350 => 22788, 13351 => 25571,\n    13352 => 24029, 13353 => 31359, 13354 => 26941, 13355 => 20256, 13356 => 33337,\n    13357 => 21912, 13358 => 20018, 13359 => 30126, 13360 => 31383, 13361 => 24162,\n    13362 => 24202, 13363 => 38383, 13364 => 21019, 13365 => 21561, 13366 => 28810,\n    13367 => 25462, 13368 => 38180, 13369 => 22402, 13370 => 26149, 13371 => 26943,\n    13372 => 37255, 13373 => 21767, 13374 => 28147, 13375 => 32431, 13376 => 34850,\n    13377 => 25139, 13378 => 32496, 13379 => 30133, 13380 => 33576, 13381 => 30913,\n    13382 => 38604, 13383 => 36766, 13384 => 24904, 13385 => 29943, 13386 => 35789,\n    13387 => 27492, 13388 => 21050, 13389 => 36176, 13390 => 27425, 13391 => 32874,\n    13392 => 33905, 13393 => 22257, 13394 => 21254, 13395 => 20174, 13396 => 19995,\n    13397 => 20945, 13398 => 31895, 13399 => 37259, 13400 => 31751, 13401 => 20419,\n    13402 => 36479, 13403 => 31713, 13404 => 31388, 13405 => 25703, 13406 => 23828,\n    13407 => 20652, 13408 => 33030, 13409 => 30209, 13410 => 31929, 13411 => 28140,\n    13412 => 32736, 13413 => 26449, 13414 => 23384, 13415 => 23544, 13416 => 30923,\n    13417 => 25774, 13418 => 25619, 13419 => 25514, 13420 => 25387, 13421 => 38169,\n    13422 => 25645, 13423 => 36798, 13424 => 31572, 13425 => 30249, 13426 => 25171,\n    13427 => 22823, 13428 => 21574, 13429 => 27513, 13430 => 20643, 13431 => 25140,\n    13432 => 24102, 13433 => 27526, 13434 => 20195, 13435 => 36151, 13436 => 34955,\n    13437 => 24453, 13438 => 36910, 13601 => 24608, 13602 => 32829, 13603 => 25285,\n    13604 => 20025, 13605 => 21333, 13606 => 37112, 13607 => 25528, 13608 => 32966,\n    13609 => 26086, 13610 => 27694, 13611 => 20294, 13612 => 24814, 13613 => 28129,\n    13614 => 35806, 13615 => 24377, 13616 => 34507, 13617 => 24403, 13618 => 25377,\n    13619 => 20826, 13620 => 33633, 13621 => 26723, 13622 => 20992, 13623 => 25443,\n    13624 => 36424, 13625 => 20498, 13626 => 23707, 13627 => 31095, 13628 => 23548,\n    13629 => 21040, 13630 => 31291, 13631 => 24764, 13632 => 36947, 13633 => 30423,\n    13634 => 24503, 13635 => 24471, 13636 => 30340, 13637 => 36460, 13638 => 28783,\n    13639 => 30331, 13640 => 31561, 13641 => 30634, 13642 => 20979, 13643 => 37011,\n    13644 => 22564, 13645 => 20302, 13646 => 28404, 13647 => 36842, 13648 => 25932,\n    13649 => 31515, 13650 => 29380, 13651 => 28068, 13652 => 32735, 13653 => 23265,\n    13654 => 25269, 13655 => 24213, 13656 => 22320, 13657 => 33922, 13658 => 31532,\n    13659 => 24093, 13660 => 24351, 13661 => 36882, 13662 => 32532, 13663 => 39072,\n    13664 => 25474, 13665 => 28359, 13666 => 30872, 13667 => 28857, 13668 => 20856,\n    13669 => 38747, 13670 => 22443, 13671 => 30005, 13672 => 20291, 13673 => 30008,\n    13674 => 24215, 13675 => 24806, 13676 => 22880, 13677 => 28096, 13678 => 27583,\n    13679 => 30857, 13680 => 21500, 13681 => 38613, 13682 => 20939, 13683 => 20993,\n    13684 => 25481, 13685 => 21514, 13686 => 38035, 13687 => 35843, 13688 => 36300,\n    13689 => 29241, 13690 => 30879, 13691 => 34678, 13692 => 36845, 13693 => 35853,\n    13694 => 21472, 13857 => 19969, 13858 => 30447, 13859 => 21486, 13860 => 38025,\n    13861 => 39030, 13862 => 40718, 13863 => 38189, 13864 => 23450, 13865 => 35746,\n    13866 => 20002, 13867 => 19996, 13868 => 20908, 13869 => 33891, 13870 => 25026,\n    13871 => 21160, 13872 => 26635, 13873 => 20375, 13874 => 24683, 13875 => 20923,\n    13876 => 27934, 13877 => 20828, 13878 => 25238, 13879 => 26007, 13880 => 38497,\n    13881 => 35910, 13882 => 36887, 13883 => 30168, 13884 => 37117, 13885 => 30563,\n    13886 => 27602, 13887 => 29322, 13888 => 29420, 13889 => 35835, 13890 => 22581,\n    13891 => 30585, 13892 => 36172, 13893 => 26460, 13894 => 38208, 13895 => 32922,\n    13896 => 24230, 13897 => 28193, 13898 => 22930, 13899 => 31471, 13900 => 30701,\n    13901 => 38203, 13902 => 27573, 13903 => 26029, 13904 => 32526, 13905 => 22534,\n    13906 => 20817, 13907 => 38431, 13908 => 23545, 13909 => 22697, 13910 => 21544,\n    13911 => 36466, 13912 => 25958, 13913 => 39039, 13914 => 22244, 13915 => 38045,\n    13916 => 30462, 13917 => 36929, 13918 => 25479, 13919 => 21702, 13920 => 22810,\n    13921 => 22842, 13922 => 22427, 13923 => 36530, 13924 => 26421, 13925 => 36346,\n    13926 => 33333, 13927 => 21057, 13928 => 24816, 13929 => 22549, 13930 => 34558,\n    13931 => 23784, 13932 => 40517, 13933 => 20420, 13934 => 39069, 13935 => 35769,\n    13936 => 23077, 13937 => 24694, 13938 => 21380, 13939 => 25212, 13940 => 36943,\n    13941 => 37122, 13942 => 39295, 13943 => 24681, 13944 => 32780, 13945 => 20799,\n    13946 => 32819, 13947 => 23572, 13948 => 39285, 13949 => 27953, 13950 => 20108,\n    14113 => 36144, 14114 => 21457, 14115 => 32602, 14116 => 31567, 14117 => 20240,\n    14118 => 20047, 14119 => 38400, 14120 => 27861, 14121 => 29648, 14122 => 34281,\n    14123 => 24070, 14124 => 30058, 14125 => 32763, 14126 => 27146, 14127 => 30718,\n    14128 => 38034, 14129 => 32321, 14130 => 20961, 14131 => 28902, 14132 => 21453,\n    14133 => 36820, 14134 => 33539, 14135 => 36137, 14136 => 29359, 14137 => 39277,\n    14138 => 27867, 14139 => 22346, 14140 => 33459, 14141 => 26041, 14142 => 32938,\n    14143 => 25151, 14144 => 38450, 14145 => 22952, 14146 => 20223, 14147 => 35775,\n    14148 => 32442, 14149 => 25918, 14150 => 33778, 14151 => 38750, 14152 => 21857,\n    14153 => 39134, 14154 => 32933, 14155 => 21290, 14156 => 35837, 14157 => 21536,\n    14158 => 32954, 14159 => 24223, 14160 => 27832, 14161 => 36153, 14162 => 33452,\n    14163 => 37210, 14164 => 21545, 14165 => 27675, 14166 => 20998, 14167 => 32439,\n    14168 => 22367, 14169 => 28954, 14170 => 27774, 14171 => 31881, 14172 => 22859,\n    14173 => 20221, 14174 => 24575, 14175 => 24868, 14176 => 31914, 14177 => 20016,\n    14178 => 23553, 14179 => 26539, 14180 => 34562, 14181 => 23792, 14182 => 38155,\n    14183 => 39118, 14184 => 30127, 14185 => 28925, 14186 => 36898, 14187 => 20911,\n    14188 => 32541, 14189 => 35773, 14190 => 22857, 14191 => 20964, 14192 => 20315,\n    14193 => 21542, 14194 => 22827, 14195 => 25975, 14196 => 32932, 14197 => 23413,\n    14198 => 25206, 14199 => 25282, 14200 => 36752, 14201 => 24133, 14202 => 27679,\n    14203 => 31526, 14204 => 20239, 14205 => 20440, 14206 => 26381, 14369 => 28014,\n    14370 => 28074, 14371 => 31119, 14372 => 34993, 14373 => 24343, 14374 => 29995,\n    14375 => 25242, 14376 => 36741, 14377 => 20463, 14378 => 37340, 14379 => 26023,\n    14380 => 33071, 14381 => 33105, 14382 => 24220, 14383 => 33104, 14384 => 36212,\n    14385 => 21103, 14386 => 35206, 14387 => 36171, 14388 => 22797, 14389 => 20613,\n    14390 => 20184, 14391 => 38428, 14392 => 29238, 14393 => 33145, 14394 => 36127,\n    14395 => 23500, 14396 => 35747, 14397 => 38468, 14398 => 22919, 14399 => 32538,\n    14400 => 21648, 14401 => 22134, 14402 => 22030, 14403 => 35813, 14404 => 25913,\n    14405 => 27010, 14406 => 38041, 14407 => 30422, 14408 => 28297, 14409 => 24178,\n    14410 => 29976, 14411 => 26438, 14412 => 26577, 14413 => 31487, 14414 => 32925,\n    14415 => 36214, 14416 => 24863, 14417 => 31174, 14418 => 25954, 14419 => 36195,\n    14420 => 20872, 14421 => 21018, 14422 => 38050, 14423 => 32568, 14424 => 32923,\n    14425 => 32434, 14426 => 23703, 14427 => 28207, 14428 => 26464, 14429 => 31705,\n    14430 => 30347, 14431 => 39640, 14432 => 33167, 14433 => 32660, 14434 => 31957,\n    14435 => 25630, 14436 => 38224, 14437 => 31295, 14438 => 21578, 14439 => 21733,\n    14440 => 27468, 14441 => 25601, 14442 => 25096, 14443 => 40509, 14444 => 33011,\n    14445 => 30105, 14446 => 21106, 14447 => 38761, 14448 => 33883, 14449 => 26684,\n    14450 => 34532, 14451 => 38401, 14452 => 38548, 14453 => 38124, 14454 => 20010,\n    14455 => 21508, 14456 => 32473, 14457 => 26681, 14458 => 36319, 14459 => 32789,\n    14460 => 26356, 14461 => 24218, 14462 => 32697, 14625 => 22466, 14626 => 32831,\n    14627 => 26775, 14628 => 24037, 14629 => 25915, 14630 => 21151, 14631 => 24685,\n    14632 => 40858, 14633 => 20379, 14634 => 36524, 14635 => 20844, 14636 => 23467,\n    14637 => 24339, 14638 => 24041, 14639 => 27742, 14640 => 25329, 14641 => 36129,\n    14642 => 20849, 14643 => 38057, 14644 => 21246, 14645 => 27807, 14646 => 33503,\n    14647 => 29399, 14648 => 22434, 14649 => 26500, 14650 => 36141, 14651 => 22815,\n    14652 => 36764, 14653 => 33735, 14654 => 21653, 14655 => 31629, 14656 => 20272,\n    14657 => 27837, 14658 => 23396, 14659 => 22993, 14660 => 40723, 14661 => 21476,\n    14662 => 34506, 14663 => 39592, 14664 => 35895, 14665 => 32929, 14666 => 25925,\n    14667 => 39038, 14668 => 22266, 14669 => 38599, 14670 => 21038, 14671 => 29916,\n    14672 => 21072, 14673 => 23521, 14674 => 25346, 14675 => 35074, 14676 => 20054,\n    14677 => 25296, 14678 => 24618, 14679 => 26874, 14680 => 20851, 14681 => 23448,\n    14682 => 20896, 14683 => 35266, 14684 => 31649, 14685 => 39302, 14686 => 32592,\n    14687 => 24815, 14688 => 28748, 14689 => 36143, 14690 => 20809, 14691 => 24191,\n    14692 => 36891, 14693 => 29808, 14694 => 35268, 14695 => 22317, 14696 => 30789,\n    14697 => 24402, 14698 => 40863, 14699 => 38394, 14700 => 36712, 14701 => 39740,\n    14702 => 35809, 14703 => 30328, 14704 => 26690, 14705 => 26588, 14706 => 36330,\n    14707 => 36149, 14708 => 21053, 14709 => 36746, 14710 => 28378, 14711 => 26829,\n    14712 => 38149, 14713 => 37101, 14714 => 22269, 14715 => 26524, 14716 => 35065,\n    14717 => 36807, 14718 => 21704, 14881 => 39608, 14882 => 23401, 14883 => 28023,\n    14884 => 27686, 14885 => 20133, 14886 => 23475, 14887 => 39559, 14888 => 37219,\n    14889 => 25000, 14890 => 37039, 14891 => 38889, 14892 => 21547, 14893 => 28085,\n    14894 => 23506, 14895 => 20989, 14896 => 21898, 14897 => 32597, 14898 => 32752,\n    14899 => 25788, 14900 => 25421, 14901 => 26097, 14902 => 25022, 14903 => 24717,\n    14904 => 28938, 14905 => 27735, 14906 => 27721, 14907 => 22831, 14908 => 26477,\n    14909 => 33322, 14910 => 22741, 14911 => 22158, 14912 => 35946, 14913 => 27627,\n    14914 => 37085, 14915 => 22909, 14916 => 32791, 14917 => 21495, 14918 => 28009,\n    14919 => 21621, 14920 => 21917, 14921 => 33655, 14922 => 33743, 14923 => 26680,\n    14924 => 31166, 14925 => 21644, 14926 => 20309, 14927 => 21512, 14928 => 30418,\n    14929 => 35977, 14930 => 38402, 14931 => 27827, 14932 => 28088, 14933 => 36203,\n    14934 => 35088, 14935 => 40548, 14936 => 36154, 14937 => 22079, 14938 => 40657,\n    14939 => 30165, 14940 => 24456, 14941 => 29408, 14942 => 24680, 14943 => 21756,\n    14944 => 20136, 14945 => 27178, 14946 => 34913, 14947 => 24658, 14948 => 36720,\n    14949 => 21700, 14950 => 28888, 14951 => 34425, 14952 => 40511, 14953 => 27946,\n    14954 => 23439, 14955 => 24344, 14956 => 32418, 14957 => 21897, 14958 => 20399,\n    14959 => 29492, 14960 => 21564, 14961 => 21402, 14962 => 20505, 14963 => 21518,\n    14964 => 21628, 14965 => 20046, 14966 => 24573, 14967 => 29786, 14968 => 22774,\n    14969 => 33899, 14970 => 32993, 14971 => 34676, 14972 => 29392, 14973 => 31946,\n    14974 => 28246, 15137 => 24359, 15138 => 34382, 15139 => 21804, 15140 => 25252,\n    15141 => 20114, 15142 => 27818, 15143 => 25143, 15144 => 33457, 15145 => 21719,\n    15146 => 21326, 15147 => 29502, 15148 => 28369, 15149 => 30011, 15150 => 21010,\n    15151 => 21270, 15152 => 35805, 15153 => 27088, 15154 => 24458, 15155 => 24576,\n    15156 => 28142, 15157 => 22351, 15158 => 27426, 15159 => 29615, 15160 => 26707,\n    15161 => 36824, 15162 => 32531, 15163 => 25442, 15164 => 24739, 15165 => 21796,\n    15166 => 30186, 15167 => 35938, 15168 => 28949, 15169 => 28067, 15170 => 23462,\n    15171 => 24187, 15172 => 33618, 15173 => 24908, 15174 => 40644, 15175 => 30970,\n    15176 => 34647, 15177 => 31783, 15178 => 30343, 15179 => 20976, 15180 => 24822,\n    15181 => 29004, 15182 => 26179, 15183 => 24140, 15184 => 24653, 15185 => 35854,\n    15186 => 28784, 15187 => 25381, 15188 => 36745, 15189 => 24509, 15190 => 24674,\n    15191 => 34516, 15192 => 22238, 15193 => 27585, 15194 => 24724, 15195 => 24935,\n    15196 => 21321, 15197 => 24800, 15198 => 26214, 15199 => 36159, 15200 => 31229,\n    15201 => 20250, 15202 => 28905, 15203 => 27719, 15204 => 35763, 15205 => 35826,\n    15206 => 32472, 15207 => 33636, 15208 => 26127, 15209 => 23130, 15210 => 39746,\n    15211 => 27985, 15212 => 28151, 15213 => 35905, 15214 => 27963, 15215 => 20249,\n    15216 => 28779, 15217 => 33719, 15218 => 25110, 15219 => 24785, 15220 => 38669,\n    15221 => 36135, 15222 => 31096, 15223 => 20987, 15224 => 22334, 15225 => 22522,\n    15226 => 26426, 15227 => 30072, 15228 => 31293, 15229 => 31215, 15230 => 31637,\n    15393 => 32908, 15394 => 39269, 15395 => 36857, 15396 => 28608, 15397 => 35749,\n    15398 => 40481, 15399 => 23020, 15400 => 32489, 15401 => 32521, 15402 => 21513,\n    15403 => 26497, 15404 => 26840, 15405 => 36753, 15406 => 31821, 15407 => 38598,\n    15408 => 21450, 15409 => 24613, 15410 => 30142, 15411 => 27762, 15412 => 21363,\n    15413 => 23241, 15414 => 32423, 15415 => 25380, 15416 => 20960, 15417 => 33034,\n    15418 => 24049, 15419 => 34015, 15420 => 25216, 15421 => 20864, 15422 => 23395,\n    15423 => 20238, 15424 => 31085, 15425 => 21058, 15426 => 24760, 15427 => 27982,\n    15428 => 23492, 15429 => 23490, 15430 => 35745, 15431 => 35760, 15432 => 26082,\n    15433 => 24524, 15434 => 38469, 15435 => 22931, 15436 => 32487, 15437 => 32426,\n    15438 => 22025, 15439 => 26551, 15440 => 22841, 15441 => 20339, 15442 => 23478,\n    15443 => 21152, 15444 => 33626, 15445 => 39050, 15446 => 36158, 15447 => 30002,\n    15448 => 38078, 15449 => 20551, 15450 => 31292, 15451 => 20215, 15452 => 26550,\n    15453 => 39550, 15454 => 23233, 15455 => 27516, 15456 => 30417, 15457 => 22362,\n    15458 => 23574, 15459 => 31546, 15460 => 38388, 15461 => 29006, 15462 => 20860,\n    15463 => 32937, 15464 => 33392, 15465 => 22904, 15466 => 32516, 15467 => 33575,\n    15468 => 26816, 15469 => 26604, 15470 => 30897, 15471 => 30839, 15472 => 25315,\n    15473 => 25441, 15474 => 31616, 15475 => 20461, 15476 => 21098, 15477 => 20943,\n    15478 => 33616, 15479 => 27099, 15480 => 37492, 15481 => 36341, 15482 => 36145,\n    15483 => 35265, 15484 => 38190, 15485 => 31661, 15486 => 20214, 15649 => 20581,\n    15650 => 33328, 15651 => 21073, 15652 => 39279, 15653 => 28176, 15654 => 28293,\n    15655 => 28071, 15656 => 24314, 15657 => 20725, 15658 => 23004, 15659 => 23558,\n    15660 => 27974, 15661 => 27743, 15662 => 30086, 15663 => 33931, 15664 => 26728,\n    15665 => 22870, 15666 => 35762, 15667 => 21280, 15668 => 37233, 15669 => 38477,\n    15670 => 34121, 15671 => 26898, 15672 => 30977, 15673 => 28966, 15674 => 33014,\n    15675 => 20132, 15676 => 37066, 15677 => 27975, 15678 => 39556, 15679 => 23047,\n    15680 => 22204, 15681 => 25605, 15682 => 38128, 15683 => 30699, 15684 => 20389,\n    15685 => 33050, 15686 => 29409, 15687 => 35282, 15688 => 39290, 15689 => 32564,\n    15690 => 32478, 15691 => 21119, 15692 => 25945, 15693 => 37237, 15694 => 36735,\n    15695 => 36739, 15696 => 21483, 15697 => 31382, 15698 => 25581, 15699 => 25509,\n    15700 => 30342, 15701 => 31224, 15702 => 34903, 15703 => 38454, 15704 => 25130,\n    15705 => 21163, 15706 => 33410, 15707 => 26708, 15708 => 26480, 15709 => 25463,\n    15710 => 30571, 15711 => 31469, 15712 => 27905, 15713 => 32467, 15714 => 35299,\n    15715 => 22992, 15716 => 25106, 15717 => 34249, 15718 => 33445, 15719 => 30028,\n    15720 => 20511, 15721 => 20171, 15722 => 30117, 15723 => 35819, 15724 => 23626,\n    15725 => 24062, 15726 => 31563, 15727 => 26020, 15728 => 37329, 15729 => 20170,\n    15730 => 27941, 15731 => 35167, 15732 => 32039, 15733 => 38182, 15734 => 20165,\n    15735 => 35880, 15736 => 36827, 15737 => 38771, 15738 => 26187, 15739 => 31105,\n    15740 => 36817, 15741 => 28908, 15742 => 28024, 15905 => 23613, 15906 => 21170,\n    15907 => 33606, 15908 => 20834, 15909 => 33550, 15910 => 30555, 15911 => 26230,\n    15912 => 40120, 15913 => 20140, 15914 => 24778, 15915 => 31934, 15916 => 31923,\n    15917 => 32463, 15918 => 20117, 15919 => 35686, 15920 => 26223, 15921 => 39048,\n    15922 => 38745, 15923 => 22659, 15924 => 25964, 15925 => 38236, 15926 => 24452,\n    15927 => 30153, 15928 => 38742, 15929 => 31455, 15930 => 31454, 15931 => 20928,\n    15932 => 28847, 15933 => 31384, 15934 => 25578, 15935 => 31350, 15936 => 32416,\n    15937 => 29590, 15938 => 38893, 15939 => 20037, 15940 => 28792, 15941 => 20061,\n    15942 => 37202, 15943 => 21417, 15944 => 25937, 15945 => 26087, 15946 => 33276,\n    15947 => 33285, 15948 => 21646, 15949 => 23601, 15950 => 30106, 15951 => 38816,\n    15952 => 25304, 15953 => 29401, 15954 => 30141, 15955 => 23621, 15956 => 39545,\n    15957 => 33738, 15958 => 23616, 15959 => 21632, 15960 => 30697, 15961 => 20030,\n    15962 => 27822, 15963 => 32858, 15964 => 25298, 15965 => 25454, 15966 => 24040,\n    15967 => 20855, 15968 => 36317, 15969 => 36382, 15970 => 38191, 15971 => 20465,\n    15972 => 21477, 15973 => 24807, 15974 => 28844, 15975 => 21095, 15976 => 25424,\n    15977 => 40515, 15978 => 23071, 15979 => 20518, 15980 => 30519, 15981 => 21367,\n    15982 => 32482, 15983 => 25733, 15984 => 25899, 15985 => 25225, 15986 => 25496,\n    15987 => 20500, 15988 => 29237, 15989 => 35273, 15990 => 20915, 15991 => 35776,\n    15992 => 32477, 15993 => 22343, 15994 => 33740, 15995 => 38055, 15996 => 20891,\n    15997 => 21531, 15998 => 23803, 16161 => 20426, 16162 => 31459, 16163 => 27994,\n    16164 => 37089, 16165 => 39567, 16166 => 21888, 16167 => 21654, 16168 => 21345,\n    16169 => 21679, 16170 => 24320, 16171 => 25577, 16172 => 26999, 16173 => 20975,\n    16174 => 24936, 16175 => 21002, 16176 => 22570, 16177 => 21208, 16178 => 22350,\n    16179 => 30733, 16180 => 30475, 16181 => 24247, 16182 => 24951, 16183 => 31968,\n    16184 => 25179, 16185 => 25239, 16186 => 20130, 16187 => 28821, 16188 => 32771,\n    16189 => 25335, 16190 => 28900, 16191 => 38752, 16192 => 22391, 16193 => 33499,\n    16194 => 26607, 16195 => 26869, 16196 => 30933, 16197 => 39063, 16198 => 31185,\n    16199 => 22771, 16200 => 21683, 16201 => 21487, 16202 => 28212, 16203 => 20811,\n    16204 => 21051, 16205 => 23458, 16206 => 35838, 16207 => 32943, 16208 => 21827,\n    16209 => 22438, 16210 => 24691, 16211 => 22353, 16212 => 21549, 16213 => 31354,\n    16214 => 24656, 16215 => 23380, 16216 => 25511, 16217 => 25248, 16218 => 21475,\n    16219 => 25187, 16220 => 23495, 16221 => 26543, 16222 => 21741, 16223 => 31391,\n    16224 => 33510, 16225 => 37239, 16226 => 24211, 16227 => 35044, 16228 => 22840,\n    16229 => 22446, 16230 => 25358, 16231 => 36328, 16232 => 33007, 16233 => 22359,\n    16234 => 31607, 16235 => 20393, 16236 => 24555, 16237 => 23485, 16238 => 27454,\n    16239 => 21281, 16240 => 31568, 16241 => 29378, 16242 => 26694, 16243 => 30719,\n    16244 => 30518, 16245 => 26103, 16246 => 20917, 16247 => 20111, 16248 => 30420,\n    16249 => 23743, 16250 => 31397, 16251 => 33909, 16252 => 22862, 16253 => 39745,\n    16254 => 20608, 16417 => 39304, 16418 => 24871, 16419 => 28291, 16420 => 22372,\n    16421 => 26118, 16422 => 25414, 16423 => 22256, 16424 => 25324, 16425 => 25193,\n    16426 => 24275, 16427 => 38420, 16428 => 22403, 16429 => 25289, 16430 => 21895,\n    16431 => 34593, 16432 => 33098, 16433 => 36771, 16434 => 21862, 16435 => 33713,\n    16436 => 26469, 16437 => 36182, 16438 => 34013, 16439 => 23146, 16440 => 26639,\n    16441 => 25318, 16442 => 31726, 16443 => 38417, 16444 => 20848, 16445 => 28572,\n    16446 => 35888, 16447 => 25597, 16448 => 35272, 16449 => 25042, 16450 => 32518,\n    16451 => 28866, 16452 => 28389, 16453 => 29701, 16454 => 27028, 16455 => 29436,\n    16456 => 24266, 16457 => 37070, 16458 => 26391, 16459 => 28010, 16460 => 25438,\n    16461 => 21171, 16462 => 29282, 16463 => 32769, 16464 => 20332, 16465 => 23013,\n    16466 => 37226, 16467 => 28889, 16468 => 28061, 16469 => 21202, 16470 => 20048,\n    16471 => 38647, 16472 => 38253, 16473 => 34174, 16474 => 30922, 16475 => 32047,\n    16476 => 20769, 16477 => 22418, 16478 => 25794, 16479 => 32907, 16480 => 31867,\n    16481 => 27882, 16482 => 26865, 16483 => 26974, 16484 => 20919, 16485 => 21400,\n    16486 => 26792, 16487 => 29313, 16488 => 40654, 16489 => 31729, 16490 => 29432,\n    16491 => 31163, 16492 => 28435, 16493 => 29702, 16494 => 26446, 16495 => 37324,\n    16496 => 40100, 16497 => 31036, 16498 => 33673, 16499 => 33620, 16500 => 21519,\n    16501 => 26647, 16502 => 20029, 16503 => 21385, 16504 => 21169, 16505 => 30782,\n    16506 => 21382, 16507 => 21033, 16508 => 20616, 16509 => 20363, 16510 => 20432,\n    16673 => 30178, 16674 => 31435, 16675 => 31890, 16676 => 27813, 16677 => 38582,\n    16678 => 21147, 16679 => 29827, 16680 => 21737, 16681 => 20457, 16682 => 32852,\n    16683 => 33714, 16684 => 36830, 16685 => 38256, 16686 => 24265, 16687 => 24604,\n    16688 => 28063, 16689 => 24088, 16690 => 25947, 16691 => 33080, 16692 => 38142,\n    16693 => 24651, 16694 => 28860, 16695 => 32451, 16696 => 31918, 16697 => 20937,\n    16698 => 26753, 16699 => 31921, 16700 => 33391, 16701 => 20004, 16702 => 36742,\n    16703 => 37327, 16704 => 26238, 16705 => 20142, 16706 => 35845, 16707 => 25769,\n    16708 => 32842, 16709 => 20698, 16710 => 30103, 16711 => 29134, 16712 => 23525,\n    16713 => 36797, 16714 => 28518, 16715 => 20102, 16716 => 25730, 16717 => 38243,\n    16718 => 24278, 16719 => 26009, 16720 => 21015, 16721 => 35010, 16722 => 28872,\n    16723 => 21155, 16724 => 29454, 16725 => 29747, 16726 => 26519, 16727 => 30967,\n    16728 => 38678, 16729 => 20020, 16730 => 37051, 16731 => 40158, 16732 => 28107,\n    16733 => 20955, 16734 => 36161, 16735 => 21533, 16736 => 25294, 16737 => 29618,\n    16738 => 33777, 16739 => 38646, 16740 => 40836, 16741 => 38083, 16742 => 20278,\n    16743 => 32666, 16744 => 20940, 16745 => 28789, 16746 => 38517, 16747 => 23725,\n    16748 => 39046, 16749 => 21478, 16750 => 20196, 16751 => 28316, 16752 => 29705,\n    16753 => 27060, 16754 => 30827, 16755 => 39311, 16756 => 30041, 16757 => 21016,\n    16758 => 30244, 16759 => 27969, 16760 => 26611, 16761 => 20845, 16762 => 40857,\n    16763 => 32843, 16764 => 21657, 16765 => 31548, 16766 => 31423, 16929 => 38534,\n    16930 => 22404, 16931 => 25314, 16932 => 38471, 16933 => 27004, 16934 => 23044,\n    16935 => 25602, 16936 => 31699, 16937 => 28431, 16938 => 38475, 16939 => 33446,\n    16940 => 21346, 16941 => 39045, 16942 => 24208, 16943 => 28809, 16944 => 25523,\n    16945 => 21348, 16946 => 34383, 16947 => 40065, 16948 => 40595, 16949 => 30860,\n    16950 => 38706, 16951 => 36335, 16952 => 36162, 16953 => 40575, 16954 => 28510,\n    16955 => 31108, 16956 => 24405, 16957 => 38470, 16958 => 25134, 16959 => 39540,\n    16960 => 21525, 16961 => 38109, 16962 => 20387, 16963 => 26053, 16964 => 23653,\n    16965 => 23649, 16966 => 32533, 16967 => 34385, 16968 => 27695, 16969 => 24459,\n    16970 => 29575, 16971 => 28388, 16972 => 32511, 16973 => 23782, 16974 => 25371,\n    16975 => 23402, 16976 => 28390, 16977 => 21365, 16978 => 20081, 16979 => 25504,\n    16980 => 30053, 16981 => 25249, 16982 => 36718, 16983 => 20262, 16984 => 20177,\n    16985 => 27814, 16986 => 32438, 16987 => 35770, 16988 => 33821, 16989 => 34746,\n    16990 => 32599, 16991 => 36923, 16992 => 38179, 16993 => 31657, 16994 => 39585,\n    16995 => 35064, 16996 => 33853, 16997 => 27931, 16998 => 39558, 16999 => 32476,\n    17000 => 22920, 17001 => 40635, 17002 => 29595, 17003 => 30721, 17004 => 34434,\n    17005 => 39532, 17006 => 39554, 17007 => 22043, 17008 => 21527, 17009 => 22475,\n    17010 => 20080, 17011 => 40614, 17012 => 21334, 17013 => 36808, 17014 => 33033,\n    17015 => 30610, 17016 => 39314, 17017 => 34542, 17018 => 28385, 17019 => 34067,\n    17020 => 26364, 17021 => 24930, 17022 => 28459, 17185 => 35881, 17186 => 33426,\n    17187 => 33579, 17188 => 30450, 17189 => 27667, 17190 => 24537, 17191 => 33725,\n    17192 => 29483, 17193 => 33541, 17194 => 38170, 17195 => 27611, 17196 => 30683,\n    17197 => 38086, 17198 => 21359, 17199 => 33538, 17200 => 20882, 17201 => 24125,\n    17202 => 35980, 17203 => 36152, 17204 => 20040, 17205 => 29611, 17206 => 26522,\n    17207 => 26757, 17208 => 37238, 17209 => 38665, 17210 => 29028, 17211 => 27809,\n    17212 => 30473, 17213 => 23186, 17214 => 38209, 17215 => 27599, 17216 => 32654,\n    17217 => 26151, 17218 => 23504, 17219 => 22969, 17220 => 23194, 17221 => 38376,\n    17222 => 38391, 17223 => 20204, 17224 => 33804, 17225 => 33945, 17226 => 27308,\n    17227 => 30431, 17228 => 38192, 17229 => 29467, 17230 => 26790, 17231 => 23391,\n    17232 => 30511, 17233 => 37274, 17234 => 38753, 17235 => 31964, 17236 => 36855,\n    17237 => 35868, 17238 => 24357, 17239 => 31859, 17240 => 31192, 17241 => 35269,\n    17242 => 27852, 17243 => 34588, 17244 => 23494, 17245 => 24130, 17246 => 26825,\n    17247 => 30496, 17248 => 32501, 17249 => 20885, 17250 => 20813, 17251 => 21193,\n    17252 => 23081, 17253 => 32517, 17254 => 38754, 17255 => 33495, 17256 => 25551,\n    17257 => 30596, 17258 => 34256, 17259 => 31186, 17260 => 28218, 17261 => 24217,\n    17262 => 22937, 17263 => 34065, 17264 => 28781, 17265 => 27665, 17266 => 25279,\n    17267 => 30399, 17268 => 25935, 17269 => 24751, 17270 => 38397, 17271 => 26126,\n    17272 => 34719, 17273 => 40483, 17274 => 38125, 17275 => 21517, 17276 => 21629,\n    17277 => 35884, 17278 => 25720, 17441 => 25721, 17442 => 34321, 17443 => 27169,\n    17444 => 33180, 17445 => 30952, 17446 => 25705, 17447 => 39764, 17448 => 25273,\n    17449 => 26411, 17450 => 33707, 17451 => 22696, 17452 => 40664, 17453 => 27819,\n    17454 => 28448, 17455 => 23518, 17456 => 38476, 17457 => 35851, 17458 => 29279,\n    17459 => 26576, 17460 => 25287, 17461 => 29281, 17462 => 20137, 17463 => 22982,\n    17464 => 27597, 17465 => 22675, 17466 => 26286, 17467 => 24149, 17468 => 21215,\n    17469 => 24917, 17470 => 26408, 17471 => 30446, 17472 => 30566, 17473 => 29287,\n    17474 => 31302, 17475 => 25343, 17476 => 21738, 17477 => 21584, 17478 => 38048,\n    17479 => 37027, 17480 => 23068, 17481 => 32435, 17482 => 27670, 17483 => 20035,\n    17484 => 22902, 17485 => 32784, 17486 => 22856, 17487 => 21335, 17488 => 30007,\n    17489 => 38590, 17490 => 22218, 17491 => 25376, 17492 => 33041, 17493 => 24700,\n    17494 => 38393, 17495 => 28118, 17496 => 21602, 17497 => 39297, 17498 => 20869,\n    17499 => 23273, 17500 => 33021, 17501 => 22958, 17502 => 38675, 17503 => 20522,\n    17504 => 27877, 17505 => 23612, 17506 => 25311, 17507 => 20320, 17508 => 21311,\n    17509 => 33147, 17510 => 36870, 17511 => 28346, 17512 => 34091, 17513 => 25288,\n    17514 => 24180, 17515 => 30910, 17516 => 25781, 17517 => 25467, 17518 => 24565,\n    17519 => 23064, 17520 => 37247, 17521 => 40479, 17522 => 23615, 17523 => 25423,\n    17524 => 32834, 17525 => 23421, 17526 => 21870, 17527 => 38218, 17528 => 38221,\n    17529 => 28037, 17530 => 24744, 17531 => 26592, 17532 => 29406, 17533 => 20957,\n    17534 => 23425, 17697 => 25319, 17698 => 27870, 17699 => 29275, 17700 => 25197,\n    17701 => 38062, 17702 => 32445, 17703 => 33043, 17704 => 27987, 17705 => 20892,\n    17706 => 24324, 17707 => 22900, 17708 => 21162, 17709 => 24594, 17710 => 22899,\n    17711 => 26262, 17712 => 34384, 17713 => 30111, 17714 => 25386, 17715 => 25062,\n    17716 => 31983, 17717 => 35834, 17718 => 21734, 17719 => 27431, 17720 => 40485,\n    17721 => 27572, 17722 => 34261, 17723 => 21589, 17724 => 20598, 17725 => 27812,\n    17726 => 21866, 17727 => 36276, 17728 => 29228, 17729 => 24085, 17730 => 24597,\n    17731 => 29750, 17732 => 25293, 17733 => 25490, 17734 => 29260, 17735 => 24472,\n    17736 => 28227, 17737 => 27966, 17738 => 25856, 17739 => 28504, 17740 => 30424,\n    17741 => 30928, 17742 => 30460, 17743 => 30036, 17744 => 21028, 17745 => 21467,\n    17746 => 20051, 17747 => 24222, 17748 => 26049, 17749 => 32810, 17750 => 32982,\n    17751 => 25243, 17752 => 21638, 17753 => 21032, 17754 => 28846, 17755 => 34957,\n    17756 => 36305, 17757 => 27873, 17758 => 21624, 17759 => 32986, 17760 => 22521,\n    17761 => 35060, 17762 => 36180, 17763 => 38506, 17764 => 37197, 17765 => 20329,\n    17766 => 27803, 17767 => 21943, 17768 => 30406, 17769 => 30768, 17770 => 25256,\n    17771 => 28921, 17772 => 28558, 17773 => 24429, 17774 => 34028, 17775 => 26842,\n    17776 => 30844, 17777 => 31735, 17778 => 33192, 17779 => 26379, 17780 => 40527,\n    17781 => 25447, 17782 => 30896, 17783 => 22383, 17784 => 30738, 17785 => 38713,\n    17786 => 25209, 17787 => 25259, 17788 => 21128, 17789 => 29749, 17790 => 27607,\n    17953 => 21860, 17954 => 33086, 17955 => 30130, 17956 => 30382, 17957 => 21305,\n    17958 => 30174, 17959 => 20731, 17960 => 23617, 17961 => 35692, 17962 => 31687,\n    17963 => 20559, 17964 => 29255, 17965 => 39575, 17966 => 39128, 17967 => 28418,\n    17968 => 29922, 17969 => 31080, 17970 => 25735, 17971 => 30629, 17972 => 25340,\n    17973 => 39057, 17974 => 36139, 17975 => 21697, 17976 => 32856, 17977 => 20050,\n    17978 => 22378, 17979 => 33529, 17980 => 33805, 17981 => 24179, 17982 => 20973,\n    17983 => 29942, 17984 => 35780, 17985 => 23631, 17986 => 22369, 17987 => 27900,\n    17988 => 39047, 17989 => 23110, 17990 => 30772, 17991 => 39748, 17992 => 36843,\n    17993 => 31893, 17994 => 21078, 17995 => 25169, 17996 => 38138, 17997 => 20166,\n    17998 => 33670, 17999 => 33889, 18000 => 33769, 18001 => 33970, 18002 => 22484,\n    18003 => 26420, 18004 => 22275, 18005 => 26222, 18006 => 28006, 18007 => 35889,\n    18008 => 26333, 18009 => 28689, 18010 => 26399, 18011 => 27450, 18012 => 26646,\n    18013 => 25114, 18014 => 22971, 18015 => 19971, 18016 => 20932, 18017 => 28422,\n    18018 => 26578, 18019 => 27791, 18020 => 20854, 18021 => 26827, 18022 => 22855,\n    18023 => 27495, 18024 => 30054, 18025 => 23822, 18026 => 33040, 18027 => 40784,\n    18028 => 26071, 18029 => 31048, 18030 => 31041, 18031 => 39569, 18032 => 36215,\n    18033 => 23682, 18034 => 20062, 18035 => 20225, 18036 => 21551, 18037 => 22865,\n    18038 => 30732, 18039 => 22120, 18040 => 27668, 18041 => 36804, 18042 => 24323,\n    18043 => 27773, 18044 => 27875, 18045 => 35755, 18046 => 25488, 18209 => 24688,\n    18210 => 27965, 18211 => 29301, 18212 => 25190, 18213 => 38030, 18214 => 38085,\n    18215 => 21315, 18216 => 36801, 18217 => 31614, 18218 => 20191, 18219 => 35878,\n    18220 => 20094, 18221 => 40660, 18222 => 38065, 18223 => 38067, 18224 => 21069,\n    18225 => 28508, 18226 => 36963, 18227 => 27973, 18228 => 35892, 18229 => 22545,\n    18230 => 23884, 18231 => 27424, 18232 => 27465, 18233 => 26538, 18234 => 21595,\n    18235 => 33108, 18236 => 32652, 18237 => 22681, 18238 => 34103, 18239 => 24378,\n    18240 => 25250, 18241 => 27207, 18242 => 38201, 18243 => 25970, 18244 => 24708,\n    18245 => 26725, 18246 => 30631, 18247 => 20052, 18248 => 20392, 18249 => 24039,\n    18250 => 38808, 18251 => 25772, 18252 => 32728, 18253 => 23789, 18254 => 20431,\n    18255 => 31373, 18256 => 20999, 18257 => 33540, 18258 => 19988, 18259 => 24623,\n    18260 => 31363, 18261 => 38054, 18262 => 20405, 18263 => 20146, 18264 => 31206,\n    18265 => 29748, 18266 => 21220, 18267 => 33465, 18268 => 25810, 18269 => 31165,\n    18270 => 23517, 18271 => 27777, 18272 => 38738, 18273 => 36731, 18274 => 27682,\n    18275 => 20542, 18276 => 21375, 18277 => 28165, 18278 => 25806, 18279 => 26228,\n    18280 => 27696, 18281 => 24773, 18282 => 39031, 18283 => 35831, 18284 => 24198,\n    18285 => 29756, 18286 => 31351, 18287 => 31179, 18288 => 19992, 18289 => 37041,\n    18290 => 29699, 18291 => 27714, 18292 => 22234, 18293 => 37195, 18294 => 27845,\n    18295 => 36235, 18296 => 21306, 18297 => 34502, 18298 => 26354, 18299 => 36527,\n    18300 => 23624, 18301 => 39537, 18302 => 28192, 18465 => 21462, 18466 => 23094,\n    18467 => 40843, 18468 => 36259, 18469 => 21435, 18470 => 22280, 18471 => 39079,\n    18472 => 26435, 18473 => 37275, 18474 => 27849, 18475 => 20840, 18476 => 30154,\n    18477 => 25331, 18478 => 29356, 18479 => 21048, 18480 => 21149, 18481 => 32570,\n    18482 => 28820, 18483 => 30264, 18484 => 21364, 18485 => 40522, 18486 => 27063,\n    18487 => 30830, 18488 => 38592, 18489 => 35033, 18490 => 32676, 18491 => 28982,\n    18492 => 29123, 18493 => 20873, 18494 => 26579, 18495 => 29924, 18496 => 22756,\n    18497 => 25880, 18498 => 22199, 18499 => 35753, 18500 => 39286, 18501 => 25200,\n    18502 => 32469, 18503 => 24825, 18504 => 28909, 18505 => 22764, 18506 => 20161,\n    18507 => 20154, 18508 => 24525, 18509 => 38887, 18510 => 20219, 18511 => 35748,\n    18512 => 20995, 18513 => 22922, 18514 => 32427, 18515 => 25172, 18516 => 20173,\n    18517 => 26085, 18518 => 25102, 18519 => 33592, 18520 => 33993, 18521 => 33635,\n    18522 => 34701, 18523 => 29076, 18524 => 28342, 18525 => 23481, 18526 => 32466,\n    18527 => 20887, 18528 => 25545, 18529 => 26580, 18530 => 32905, 18531 => 33593,\n    18532 => 34837, 18533 => 20754, 18534 => 23418, 18535 => 22914, 18536 => 36785,\n    18537 => 20083, 18538 => 27741, 18539 => 20837, 18540 => 35109, 18541 => 36719,\n    18542 => 38446, 18543 => 34122, 18544 => 29790, 18545 => 38160, 18546 => 38384,\n    18547 => 28070, 18548 => 33509, 18549 => 24369, 18550 => 25746, 18551 => 27922,\n    18552 => 33832, 18553 => 33134, 18554 => 40131, 18555 => 22622, 18556 => 36187,\n    18557 => 19977, 18558 => 21441, 18721 => 20254, 18722 => 25955, 18723 => 26705,\n    18724 => 21971, 18725 => 20007, 18726 => 25620, 18727 => 39578, 18728 => 25195,\n    18729 => 23234, 18730 => 29791, 18731 => 33394, 18732 => 28073, 18733 => 26862,\n    18734 => 20711, 18735 => 33678, 18736 => 30722, 18737 => 26432, 18738 => 21049,\n    18739 => 27801, 18740 => 32433, 18741 => 20667, 18742 => 21861, 18743 => 29022,\n    18744 => 31579, 18745 => 26194, 18746 => 29642, 18747 => 33515, 18748 => 26441,\n    18749 => 23665, 18750 => 21024, 18751 => 29053, 18752 => 34923, 18753 => 38378,\n    18754 => 38485, 18755 => 25797, 18756 => 36193, 18757 => 33203, 18758 => 21892,\n    18759 => 27733, 18760 => 25159, 18761 => 32558, 18762 => 22674, 18763 => 20260,\n    18764 => 21830, 18765 => 36175, 18766 => 26188, 18767 => 19978, 18768 => 23578,\n    18769 => 35059, 18770 => 26786, 18771 => 25422, 18772 => 31245, 18773 => 28903,\n    18774 => 33421, 18775 => 21242, 18776 => 38902, 18777 => 23569, 18778 => 21736,\n    18779 => 37045, 18780 => 32461, 18781 => 22882, 18782 => 36170, 18783 => 34503,\n    18784 => 33292, 18785 => 33293, 18786 => 36198, 18787 => 25668, 18788 => 23556,\n    18789 => 24913, 18790 => 28041, 18791 => 31038, 18792 => 35774, 18793 => 30775,\n    18794 => 30003, 18795 => 21627, 18796 => 20280, 18797 => 36523, 18798 => 28145,\n    18799 => 23072, 18800 => 32453, 18801 => 31070, 18802 => 27784, 18803 => 23457,\n    18804 => 23158, 18805 => 29978, 18806 => 32958, 18807 => 24910, 18808 => 28183,\n    18809 => 22768, 18810 => 29983, 18811 => 29989, 18812 => 29298, 18813 => 21319,\n    18814 => 32499, 18977 => 30465, 18978 => 30427, 18979 => 21097, 18980 => 32988,\n    18981 => 22307, 18982 => 24072, 18983 => 22833, 18984 => 29422, 18985 => 26045,\n    18986 => 28287, 18987 => 35799, 18988 => 23608, 18989 => 34417, 18990 => 21313,\n    18991 => 30707, 18992 => 25342, 18993 => 26102, 18994 => 20160, 18995 => 39135,\n    18996 => 34432, 18997 => 23454, 18998 => 35782, 18999 => 21490, 19000 => 30690,\n    19001 => 20351, 19002 => 23630, 19003 => 39542, 19004 => 22987, 19005 => 24335,\n    19006 => 31034, 19007 => 22763, 19008 => 19990, 19009 => 26623, 19010 => 20107,\n    19011 => 25325, 19012 => 35475, 19013 => 36893, 19014 => 21183, 19015 => 26159,\n    19016 => 21980, 19017 => 22124, 19018 => 36866, 19019 => 20181, 19020 => 20365,\n    19021 => 37322, 19022 => 39280, 19023 => 27663, 19024 => 24066, 19025 => 24643,\n    19026 => 23460, 19027 => 35270, 19028 => 35797, 19029 => 25910, 19030 => 25163,\n    19031 => 39318, 19032 => 23432, 19033 => 23551, 19034 => 25480, 19035 => 21806,\n    19036 => 21463, 19037 => 30246, 19038 => 20861, 19039 => 34092, 19040 => 26530,\n    19041 => 26803, 19042 => 27530, 19043 => 25234, 19044 => 36755, 19045 => 21460,\n    19046 => 33298, 19047 => 28113, 19048 => 30095, 19049 => 20070, 19050 => 36174,\n    19051 => 23408, 19052 => 29087, 19053 => 34223, 19054 => 26257, 19055 => 26329,\n    19056 => 32626, 19057 => 34560, 19058 => 40653, 19059 => 40736, 19060 => 23646,\n    19061 => 26415, 19062 => 36848, 19063 => 26641, 19064 => 26463, 19065 => 25101,\n    19066 => 31446, 19067 => 22661, 19068 => 24246, 19069 => 25968, 19070 => 28465,\n    19233 => 24661, 19234 => 21047, 19235 => 32781, 19236 => 25684, 19237 => 34928,\n    19238 => 29993, 19239 => 24069, 19240 => 26643, 19241 => 25332, 19242 => 38684,\n    19243 => 21452, 19244 => 29245, 19245 => 35841, 19246 => 27700, 19247 => 30561,\n    19248 => 31246, 19249 => 21550, 19250 => 30636, 19251 => 39034, 19252 => 33308,\n    19253 => 35828, 19254 => 30805, 19255 => 26388, 19256 => 28865, 19257 => 26031,\n    19258 => 25749, 19259 => 22070, 19260 => 24605, 19261 => 31169, 19262 => 21496,\n    19263 => 19997, 19264 => 27515, 19265 => 32902, 19266 => 23546, 19267 => 21987,\n    19268 => 22235, 19269 => 20282, 19270 => 20284, 19271 => 39282, 19272 => 24051,\n    19273 => 26494, 19274 => 32824, 19275 => 24578, 19276 => 39042, 19277 => 36865,\n    19278 => 23435, 19279 => 35772, 19280 => 35829, 19281 => 25628, 19282 => 33368,\n    19283 => 25822, 19284 => 22013, 19285 => 33487, 19286 => 37221, 19287 => 20439,\n    19288 => 32032, 19289 => 36895, 19290 => 31903, 19291 => 20723, 19292 => 22609,\n    19293 => 28335, 19294 => 23487, 19295 => 35785, 19296 => 32899, 19297 => 37240,\n    19298 => 33948, 19299 => 31639, 19300 => 34429, 19301 => 38539, 19302 => 38543,\n    19303 => 32485, 19304 => 39635, 19305 => 30862, 19306 => 23681, 19307 => 31319,\n    19308 => 36930, 19309 => 38567, 19310 => 31071, 19311 => 23385, 19312 => 25439,\n    19313 => 31499, 19314 => 34001, 19315 => 26797, 19316 => 21766, 19317 => 32553,\n    19318 => 29712, 19319 => 32034, 19320 => 38145, 19321 => 25152, 19322 => 22604,\n    19323 => 20182, 19324 => 23427, 19325 => 22905, 19326 => 22612, 19489 => 29549,\n    19490 => 25374, 19491 => 36427, 19492 => 36367, 19493 => 32974, 19494 => 33492,\n    19495 => 25260, 19496 => 21488, 19497 => 27888, 19498 => 37214, 19499 => 22826,\n    19500 => 24577, 19501 => 27760, 19502 => 22349, 19503 => 25674, 19504 => 36138,\n    19505 => 30251, 19506 => 28393, 19507 => 22363, 19508 => 27264, 19509 => 30192,\n    19510 => 28525, 19511 => 35885, 19512 => 35848, 19513 => 22374, 19514 => 27631,\n    19515 => 34962, 19516 => 30899, 19517 => 25506, 19518 => 21497, 19519 => 28845,\n    19520 => 27748, 19521 => 22616, 19522 => 25642, 19523 => 22530, 19524 => 26848,\n    19525 => 33179, 19526 => 21776, 19527 => 31958, 19528 => 20504, 19529 => 36538,\n    19530 => 28108, 19531 => 36255, 19532 => 28907, 19533 => 25487, 19534 => 28059,\n    19535 => 28372, 19536 => 32486, 19537 => 33796, 19538 => 26691, 19539 => 36867,\n    19540 => 28120, 19541 => 38518, 19542 => 35752, 19543 => 22871, 19544 => 29305,\n    19545 => 34276, 19546 => 33150, 19547 => 30140, 19548 => 35466, 19549 => 26799,\n    19550 => 21076, 19551 => 36386, 19552 => 38161, 19553 => 25552, 19554 => 39064,\n    19555 => 36420, 19556 => 21884, 19557 => 20307, 19558 => 26367, 19559 => 22159,\n    19560 => 24789, 19561 => 28053, 19562 => 21059, 19563 => 23625, 19564 => 22825,\n    19565 => 28155, 19566 => 22635, 19567 => 30000, 19568 => 29980, 19569 => 24684,\n    19570 => 33300, 19571 => 33094, 19572 => 25361, 19573 => 26465, 19574 => 36834,\n    19575 => 30522, 19576 => 36339, 19577 => 36148, 19578 => 38081, 19579 => 24086,\n    19580 => 21381, 19581 => 21548, 19582 => 28867, 19745 => 27712, 19746 => 24311,\n    19747 => 20572, 19748 => 20141, 19749 => 24237, 19750 => 25402, 19751 => 33351,\n    19752 => 36890, 19753 => 26704, 19754 => 37230, 19755 => 30643, 19756 => 21516,\n    19757 => 38108, 19758 => 24420, 19759 => 31461, 19760 => 26742, 19761 => 25413,\n    19762 => 31570, 19763 => 32479, 19764 => 30171, 19765 => 20599, 19766 => 25237,\n    19767 => 22836, 19768 => 36879, 19769 => 20984, 19770 => 31171, 19771 => 31361,\n    19772 => 22270, 19773 => 24466, 19774 => 36884, 19775 => 28034, 19776 => 23648,\n    19777 => 22303, 19778 => 21520, 19779 => 20820, 19780 => 28237, 19781 => 22242,\n    19782 => 25512, 19783 => 39059, 19784 => 33151, 19785 => 34581, 19786 => 35114,\n    19787 => 36864, 19788 => 21534, 19789 => 23663, 19790 => 33216, 19791 => 25302,\n    19792 => 25176, 19793 => 33073, 19794 => 40501, 19795 => 38464, 19796 => 39534,\n    19797 => 39548, 19798 => 26925, 19799 => 22949, 19800 => 25299, 19801 => 21822,\n    19802 => 25366, 19803 => 21703, 19804 => 34521, 19805 => 27964, 19806 => 23043,\n    19807 => 29926, 19808 => 34972, 19809 => 27498, 19810 => 22806, 19811 => 35916,\n    19812 => 24367, 19813 => 28286, 19814 => 29609, 19815 => 39037, 19816 => 20024,\n    19817 => 28919, 19818 => 23436, 19819 => 30871, 19820 => 25405, 19821 => 26202,\n    19822 => 30358, 19823 => 24779, 19824 => 23451, 19825 => 23113, 19826 => 19975,\n    19827 => 33109, 19828 => 27754, 19829 => 29579, 19830 => 20129, 19831 => 26505,\n    19832 => 32593, 19833 => 24448, 19834 => 26106, 19835 => 26395, 19836 => 24536,\n    19837 => 22916, 19838 => 23041, 20001 => 24013, 20002 => 24494, 20003 => 21361,\n    20004 => 38886, 20005 => 36829, 20006 => 26693, 20007 => 22260, 20008 => 21807,\n    20009 => 24799, 20010 => 20026, 20011 => 28493, 20012 => 32500, 20013 => 33479,\n    20014 => 33806, 20015 => 22996, 20016 => 20255, 20017 => 20266, 20018 => 23614,\n    20019 => 32428, 20020 => 26410, 20021 => 34074, 20022 => 21619, 20023 => 30031,\n    20024 => 32963, 20025 => 21890, 20026 => 39759, 20027 => 20301, 20028 => 28205,\n    20029 => 35859, 20030 => 23561, 20031 => 24944, 20032 => 21355, 20033 => 30239,\n    20034 => 28201, 20035 => 34442, 20036 => 25991, 20037 => 38395, 20038 => 32441,\n    20039 => 21563, 20040 => 31283, 20041 => 32010, 20042 => 38382, 20043 => 21985,\n    20044 => 32705, 20045 => 29934, 20046 => 25373, 20047 => 34583, 20048 => 28065,\n    20049 => 31389, 20050 => 25105, 20051 => 26017, 20052 => 21351, 20053 => 25569,\n    20054 => 27779, 20055 => 24043, 20056 => 21596, 20057 => 38056, 20058 => 20044,\n    20059 => 27745, 20060 => 35820, 20061 => 23627, 20062 => 26080, 20063 => 33436,\n    20064 => 26791, 20065 => 21566, 20066 => 21556, 20067 => 27595, 20068 => 27494,\n    20069 => 20116, 20070 => 25410, 20071 => 21320, 20072 => 33310, 20073 => 20237,\n    20074 => 20398, 20075 => 22366, 20076 => 25098, 20077 => 38654, 20078 => 26212,\n    20079 => 29289, 20080 => 21247, 20081 => 21153, 20082 => 24735, 20083 => 35823,\n    20084 => 26132, 20085 => 29081, 20086 => 26512, 20087 => 35199, 20088 => 30802,\n    20089 => 30717, 20090 => 26224, 20091 => 22075, 20092 => 21560, 20093 => 38177,\n    20094 => 29306, 20257 => 31232, 20258 => 24687, 20259 => 24076, 20260 => 24713,\n    20261 => 33181, 20262 => 22805, 20263 => 24796, 20264 => 29060, 20265 => 28911,\n    20266 => 28330, 20267 => 27728, 20268 => 29312, 20269 => 27268, 20270 => 34989,\n    20271 => 24109, 20272 => 20064, 20273 => 23219, 20274 => 21916, 20275 => 38115,\n    20276 => 27927, 20277 => 31995, 20278 => 38553, 20279 => 25103, 20280 => 32454,\n    20281 => 30606, 20282 => 34430, 20283 => 21283, 20284 => 38686, 20285 => 36758,\n    20286 => 26247, 20287 => 23777, 20288 => 20384, 20289 => 29421, 20290 => 19979,\n    20291 => 21414, 20292 => 22799, 20293 => 21523, 20294 => 25472, 20295 => 38184,\n    20296 => 20808, 20297 => 20185, 20298 => 40092, 20299 => 32420, 20300 => 21688,\n    20301 => 36132, 20302 => 34900, 20303 => 33335, 20304 => 38386, 20305 => 28046,\n    20306 => 24358, 20307 => 23244, 20308 => 26174, 20309 => 38505, 20310 => 29616,\n    20311 => 29486, 20312 => 21439, 20313 => 33146, 20314 => 39301, 20315 => 32673,\n    20316 => 23466, 20317 => 38519, 20318 => 38480, 20319 => 32447, 20320 => 30456,\n    20321 => 21410, 20322 => 38262, 20323 => 39321, 20324 => 31665, 20325 => 35140,\n    20326 => 28248, 20327 => 20065, 20328 => 32724, 20329 => 31077, 20330 => 35814,\n    20331 => 24819, 20332 => 21709, 20333 => 20139, 20334 => 39033, 20335 => 24055,\n    20336 => 27233, 20337 => 20687, 20338 => 21521, 20339 => 35937, 20340 => 33831,\n    20341 => 30813, 20342 => 38660, 20343 => 21066, 20344 => 21742, 20345 => 22179,\n    20346 => 38144, 20347 => 28040, 20348 => 23477, 20349 => 28102, 20350 => 26195,\n    20513 => 23567, 20514 => 23389, 20515 => 26657, 20516 => 32918, 20517 => 21880,\n    20518 => 31505, 20519 => 25928, 20520 => 26964, 20521 => 20123, 20522 => 27463,\n    20523 => 34638, 20524 => 38795, 20525 => 21327, 20526 => 25375, 20527 => 25658,\n    20528 => 37034, 20529 => 26012, 20530 => 32961, 20531 => 35856, 20532 => 20889,\n    20533 => 26800, 20534 => 21368, 20535 => 34809, 20536 => 25032, 20537 => 27844,\n    20538 => 27899, 20539 => 35874, 20540 => 23633, 20541 => 34218, 20542 => 33455,\n    20543 => 38156, 20544 => 27427, 20545 => 36763, 20546 => 26032, 20547 => 24571,\n    20548 => 24515, 20549 => 20449, 20550 => 34885, 20551 => 26143, 20552 => 33125,\n    20553 => 29481, 20554 => 24826, 20555 => 20852, 20556 => 21009, 20557 => 22411,\n    20558 => 24418, 20559 => 37026, 20560 => 34892, 20561 => 37266, 20562 => 24184,\n    20563 => 26447, 20564 => 24615, 20565 => 22995, 20566 => 20804, 20567 => 20982,\n    20568 => 33016, 20569 => 21256, 20570 => 27769, 20571 => 38596, 20572 => 29066,\n    20573 => 20241, 20574 => 20462, 20575 => 32670, 20576 => 26429, 20577 => 21957,\n    20578 => 38152, 20579 => 31168, 20580 => 34966, 20581 => 32483, 20582 => 22687,\n    20583 => 25100, 20584 => 38656, 20585 => 34394, 20586 => 22040, 20587 => 39035,\n    20588 => 24464, 20589 => 35768, 20590 => 33988, 20591 => 37207, 20592 => 21465,\n    20593 => 26093, 20594 => 24207, 20595 => 30044, 20596 => 24676, 20597 => 32110,\n    20598 => 23167, 20599 => 32490, 20600 => 32493, 20601 => 36713, 20602 => 21927,\n    20603 => 23459, 20604 => 24748, 20605 => 26059, 20606 => 29572, 20769 => 36873,\n    20770 => 30307, 20771 => 30505, 20772 => 32474, 20773 => 38772, 20774 => 34203,\n    20775 => 23398, 20776 => 31348, 20777 => 38634, 20778 => 34880, 20779 => 21195,\n    20780 => 29071, 20781 => 24490, 20782 => 26092, 20783 => 35810, 20784 => 23547,\n    20785 => 39535, 20786 => 24033, 20787 => 27529, 20788 => 27739, 20789 => 35757,\n    20790 => 35759, 20791 => 36874, 20792 => 36805, 20793 => 21387, 20794 => 25276,\n    20795 => 40486, 20796 => 40493, 20797 => 21568, 20798 => 20011, 20799 => 33469,\n    20800 => 29273, 20801 => 34460, 20802 => 23830, 20803 => 34905, 20804 => 28079,\n    20805 => 38597, 20806 => 21713, 20807 => 20122, 20808 => 35766, 20809 => 28937,\n    20810 => 21693, 20811 => 38409, 20812 => 28895, 20813 => 28153, 20814 => 30416,\n    20815 => 20005, 20816 => 30740, 20817 => 34578, 20818 => 23721, 20819 => 24310,\n    20820 => 35328, 20821 => 39068, 20822 => 38414, 20823 => 28814, 20824 => 27839,\n    20825 => 22852, 20826 => 25513, 20827 => 30524, 20828 => 34893, 20829 => 28436,\n    20830 => 33395, 20831 => 22576, 20832 => 29141, 20833 => 21388, 20834 => 30746,\n    20835 => 38593, 20836 => 21761, 20837 => 24422, 20838 => 28976, 20839 => 23476,\n    20840 => 35866, 20841 => 39564, 20842 => 27523, 20843 => 22830, 20844 => 40495,\n    20845 => 31207, 20846 => 26472, 20847 => 25196, 20848 => 20335, 20849 => 30113,\n    20850 => 32650, 20851 => 27915, 20852 => 38451, 20853 => 27687, 20854 => 20208,\n    20855 => 30162, 20856 => 20859, 20857 => 26679, 20858 => 28478, 20859 => 36992,\n    20860 => 33136, 20861 => 22934, 20862 => 29814, 21025 => 25671, 21026 => 23591,\n    21027 => 36965, 21028 => 31377, 21029 => 35875, 21030 => 23002, 21031 => 21676,\n    21032 => 33280, 21033 => 33647, 21034 => 35201, 21035 => 32768, 21036 => 26928,\n    21037 => 22094, 21038 => 32822, 21039 => 29239, 21040 => 37326, 21041 => 20918,\n    21042 => 20063, 21043 => 39029, 21044 => 25494, 21045 => 19994, 21046 => 21494,\n    21047 => 26355, 21048 => 33099, 21049 => 22812, 21050 => 28082, 21051 => 19968,\n    21052 => 22777, 21053 => 21307, 21054 => 25558, 21055 => 38129, 21056 => 20381,\n    21057 => 20234, 21058 => 34915, 21059 => 39056, 21060 => 22839, 21061 => 36951,\n    21062 => 31227, 21063 => 20202, 21064 => 33008, 21065 => 30097, 21066 => 27778,\n    21067 => 23452, 21068 => 23016, 21069 => 24413, 21070 => 26885, 21071 => 34433,\n    21072 => 20506, 21073 => 24050, 21074 => 20057, 21075 => 30691, 21076 => 20197,\n    21077 => 33402, 21078 => 25233, 21079 => 26131, 21080 => 37009, 21081 => 23673,\n    21082 => 20159, 21083 => 24441, 21084 => 33222, 21085 => 36920, 21086 => 32900,\n    21087 => 30123, 21088 => 20134, 21089 => 35028, 21090 => 24847, 21091 => 27589,\n    21092 => 24518, 21093 => 20041, 21094 => 30410, 21095 => 28322, 21096 => 35811,\n    21097 => 35758, 21098 => 35850, 21099 => 35793, 21100 => 24322, 21101 => 32764,\n    21102 => 32716, 21103 => 32462, 21104 => 33589, 21105 => 33643, 21106 => 22240,\n    21107 => 27575, 21108 => 38899, 21109 => 38452, 21110 => 23035, 21111 => 21535,\n    21112 => 38134, 21113 => 28139, 21114 => 23493, 21115 => 39278, 21116 => 23609,\n    21117 => 24341, 21118 => 38544, 21281 => 21360, 21282 => 33521, 21283 => 27185,\n    21284 => 23156, 21285 => 40560, 21286 => 24212, 21287 => 32552, 21288 => 33721,\n    21289 => 33828, 21290 => 33829, 21291 => 33639, 21292 => 34631, 21293 => 36814,\n    21294 => 36194, 21295 => 30408, 21296 => 24433, 21297 => 39062, 21298 => 30828,\n    21299 => 26144, 21300 => 21727, 21301 => 25317, 21302 => 20323, 21303 => 33219,\n    21304 => 30152, 21305 => 24248, 21306 => 38605, 21307 => 36362, 21308 => 34553,\n    21309 => 21647, 21310 => 27891, 21311 => 28044, 21312 => 27704, 21313 => 24703,\n    21314 => 21191, 21315 => 29992, 21316 => 24189, 21317 => 20248, 21318 => 24736,\n    21319 => 24551, 21320 => 23588, 21321 => 30001, 21322 => 37038, 21323 => 38080,\n    21324 => 29369, 21325 => 27833, 21326 => 28216, 21327 => 37193, 21328 => 26377,\n    21329 => 21451, 21330 => 21491, 21331 => 20305, 21332 => 37321, 21333 => 35825,\n    21334 => 21448, 21335 => 24188, 21336 => 36802, 21337 => 28132, 21338 => 20110,\n    21339 => 30402, 21340 => 27014, 21341 => 34398, 21342 => 24858, 21343 => 33286,\n    21344 => 20313, 21345 => 20446, 21346 => 36926, 21347 => 40060, 21348 => 24841,\n    21349 => 28189, 21350 => 28180, 21351 => 38533, 21352 => 20104, 21353 => 23089,\n    21354 => 38632, 21355 => 19982, 21356 => 23679, 21357 => 31161, 21358 => 23431,\n    21359 => 35821, 21360 => 32701, 21361 => 29577, 21362 => 22495, 21363 => 33419,\n    21364 => 37057, 21365 => 21505, 21366 => 36935, 21367 => 21947, 21368 => 23786,\n    21369 => 24481, 21370 => 24840, 21371 => 27442, 21372 => 29425, 21373 => 32946,\n    21374 => 35465, 21537 => 28020, 21538 => 23507, 21539 => 35029, 21540 => 39044,\n    21541 => 35947, 21542 => 39533, 21543 => 40499, 21544 => 28170, 21545 => 20900,\n    21546 => 20803, 21547 => 22435, 21548 => 34945, 21549 => 21407, 21550 => 25588,\n    21551 => 36757, 21552 => 22253, 21553 => 21592, 21554 => 22278, 21555 => 29503,\n    21556 => 28304, 21557 => 32536, 21558 => 36828, 21559 => 33489, 21560 => 24895,\n    21561 => 24616, 21562 => 38498, 21563 => 26352, 21564 => 32422, 21565 => 36234,\n    21566 => 36291, 21567 => 38053, 21568 => 23731, 21569 => 31908, 21570 => 26376,\n    21571 => 24742, 21572 => 38405, 21573 => 32792, 21574 => 20113, 21575 => 37095,\n    21576 => 21248, 21577 => 38504, 21578 => 20801, 21579 => 36816, 21580 => 34164,\n    21581 => 37213, 21582 => 26197, 21583 => 38901, 21584 => 23381, 21585 => 21277,\n    21586 => 30776, 21587 => 26434, 21588 => 26685, 21589 => 21705, 21590 => 28798,\n    21591 => 23472, 21592 => 36733, 21593 => 20877, 21594 => 22312, 21595 => 21681,\n    21596 => 25874, 21597 => 26242, 21598 => 36190, 21599 => 36163, 21600 => 33039,\n    21601 => 33900, 21602 => 36973, 21603 => 31967, 21604 => 20991, 21605 => 34299,\n    21606 => 26531, 21607 => 26089, 21608 => 28577, 21609 => 34468, 21610 => 36481,\n    21611 => 22122, 21612 => 36896, 21613 => 30338, 21614 => 28790, 21615 => 29157,\n    21616 => 36131, 21617 => 25321, 21618 => 21017, 21619 => 27901, 21620 => 36156,\n    21621 => 24590, 21622 => 22686, 21623 => 24974, 21624 => 26366, 21625 => 36192,\n    21626 => 25166, 21627 => 21939, 21628 => 28195, 21629 => 26413, 21630 => 36711,\n    21793 => 38113, 21794 => 38392, 21795 => 30504, 21796 => 26629, 21797 => 27048,\n    21798 => 21643, 21799 => 20045, 21800 => 28856, 21801 => 35784, 21802 => 25688,\n    21803 => 25995, 21804 => 23429, 21805 => 31364, 21806 => 20538, 21807 => 23528,\n    21808 => 30651, 21809 => 27617, 21810 => 35449, 21811 => 31896, 21812 => 27838,\n    21813 => 30415, 21814 => 26025, 21815 => 36759, 21816 => 23853, 21817 => 23637,\n    21818 => 34360, 21819 => 26632, 21820 => 21344, 21821 => 25112, 21822 => 31449,\n    21823 => 28251, 21824 => 32509, 21825 => 27167, 21826 => 31456, 21827 => 24432,\n    21828 => 28467, 21829 => 24352, 21830 => 25484, 21831 => 28072, 21832 => 26454,\n    21833 => 19976, 21834 => 24080, 21835 => 36134, 21836 => 20183, 21837 => 32960,\n    21838 => 30260, 21839 => 38556, 21840 => 25307, 21841 => 26157, 21842 => 25214,\n    21843 => 27836, 21844 => 36213, 21845 => 29031, 21846 => 32617, 21847 => 20806,\n    21848 => 32903, 21849 => 21484, 21850 => 36974, 21851 => 25240, 21852 => 21746,\n    21853 => 34544, 21854 => 36761, 21855 => 32773, 21856 => 38167, 21857 => 34071,\n    21858 => 36825, 21859 => 27993, 21860 => 29645, 21861 => 26015, 21862 => 30495,\n    21863 => 29956, 21864 => 30759, 21865 => 33275, 21866 => 36126, 21867 => 38024,\n    21868 => 20390, 21869 => 26517, 21870 => 30137, 21871 => 35786, 21872 => 38663,\n    21873 => 25391, 21874 => 38215, 21875 => 38453, 21876 => 33976, 21877 => 25379,\n    21878 => 30529, 21879 => 24449, 21880 => 29424, 21881 => 20105, 21882 => 24596,\n    21883 => 25972, 21884 => 25327, 21885 => 27491, 21886 => 25919, 22049 => 24103,\n    22050 => 30151, 22051 => 37073, 22052 => 35777, 22053 => 33437, 22054 => 26525,\n    22055 => 25903, 22056 => 21553, 22057 => 34584, 22058 => 30693, 22059 => 32930,\n    22060 => 33026, 22061 => 27713, 22062 => 20043, 22063 => 32455, 22064 => 32844,\n    22065 => 30452, 22066 => 26893, 22067 => 27542, 22068 => 25191, 22069 => 20540,\n    22070 => 20356, 22071 => 22336, 22072 => 25351, 22073 => 27490, 22074 => 36286,\n    22075 => 21482, 22076 => 26088, 22077 => 32440, 22078 => 24535, 22079 => 25370,\n    22080 => 25527, 22081 => 33267, 22082 => 33268, 22083 => 32622, 22084 => 24092,\n    22085 => 23769, 22086 => 21046, 22087 => 26234, 22088 => 31209, 22089 => 31258,\n    22090 => 36136, 22091 => 28825, 22092 => 30164, 22093 => 28382, 22094 => 27835,\n    22095 => 31378, 22096 => 20013, 22097 => 30405, 22098 => 24544, 22099 => 38047,\n    22100 => 34935, 22101 => 32456, 22102 => 31181, 22103 => 32959, 22104 => 37325,\n    22105 => 20210, 22106 => 20247, 22107 => 33311, 22108 => 21608, 22109 => 24030,\n    22110 => 27954, 22111 => 35788, 22112 => 31909, 22113 => 36724, 22114 => 32920,\n    22115 => 24090, 22116 => 21650, 22117 => 30385, 22118 => 23449, 22119 => 26172,\n    22120 => 39588, 22121 => 29664, 22122 => 26666, 22123 => 34523, 22124 => 26417,\n    22125 => 29482, 22126 => 35832, 22127 => 35803, 22128 => 36880, 22129 => 31481,\n    22130 => 28891, 22131 => 29038, 22132 => 25284, 22133 => 30633, 22134 => 22065,\n    22135 => 20027, 22136 => 33879, 22137 => 26609, 22138 => 21161, 22139 => 34496,\n    22140 => 36142, 22141 => 38136, 22142 => 31569, 22305 => 20303, 22306 => 27880,\n    22307 => 31069, 22308 => 39547, 22309 => 25235, 22310 => 29226, 22311 => 25341,\n    22312 => 19987, 22313 => 30742, 22314 => 36716, 22315 => 25776, 22316 => 36186,\n    22317 => 31686, 22318 => 26729, 22319 => 24196, 22320 => 35013, 22321 => 22918,\n    22322 => 25758, 22323 => 22766, 22324 => 29366, 22325 => 26894, 22326 => 38181,\n    22327 => 36861, 22328 => 36184, 22329 => 22368, 22330 => 32512, 22331 => 35846,\n    22332 => 20934, 22333 => 25417, 22334 => 25305, 22335 => 21331, 22336 => 26700,\n    22337 => 29730, 22338 => 33537, 22339 => 37196, 22340 => 21828, 22341 => 30528,\n    22342 => 28796, 22343 => 27978, 22344 => 20857, 22345 => 21672, 22346 => 36164,\n    22347 => 23039, 22348 => 28363, 22349 => 28100, 22350 => 23388, 22351 => 32043,\n    22352 => 20180, 22353 => 31869, 22354 => 28371, 22355 => 23376, 22356 => 33258,\n    22357 => 28173, 22358 => 23383, 22359 => 39683, 22360 => 26837, 22361 => 36394,\n    22362 => 23447, 22363 => 32508, 22364 => 24635, 22365 => 32437, 22366 => 37049,\n    22367 => 36208, 22368 => 22863, 22369 => 25549, 22370 => 31199, 22371 => 36275,\n    22372 => 21330, 22373 => 26063, 22374 => 31062, 22375 => 35781, 22376 => 38459,\n    22377 => 32452, 22378 => 38075, 22379 => 32386, 22380 => 22068, 22381 => 37257,\n    22382 => 26368, 22383 => 32618, 22384 => 23562, 22385 => 36981, 22386 => 26152,\n    22387 => 24038, 22388 => 20304, 22389 => 26590, 22390 => 20570, 22391 => 20316,\n    22392 => 22352, 22393 => 24231, 22561 => 20109, 22562 => 19980, 22563 => 20800,\n    22564 => 19984, 22565 => 24319, 22566 => 21317, 22567 => 19989, 22568 => 20120,\n    22569 => 19998, 22570 => 39730, 22571 => 23404, 22572 => 22121, 22573 => 20008,\n    22574 => 31162, 22575 => 20031, 22576 => 21269, 22577 => 20039, 22578 => 22829,\n    22579 => 29243, 22580 => 21358, 22581 => 27664, 22582 => 22239, 22583 => 32996,\n    22584 => 39319, 22585 => 27603, 22586 => 30590, 22587 => 40727, 22588 => 20022,\n    22589 => 20127, 22590 => 40720, 22591 => 20060, 22592 => 20073, 22593 => 20115,\n    22594 => 33416, 22595 => 23387, 22596 => 21868, 22597 => 22031, 22598 => 20164,\n    22599 => 21389, 22600 => 21405, 22601 => 21411, 22602 => 21413, 22603 => 21422,\n    22604 => 38757, 22605 => 36189, 22606 => 21274, 22607 => 21493, 22608 => 21286,\n    22609 => 21294, 22610 => 21310, 22611 => 36188, 22612 => 21350, 22613 => 21347,\n    22614 => 20994, 22615 => 21000, 22616 => 21006, 22617 => 21037, 22618 => 21043,\n    22619 => 21055, 22620 => 21056, 22621 => 21068, 22622 => 21086, 22623 => 21089,\n    22624 => 21084, 22625 => 33967, 22626 => 21117, 22627 => 21122, 22628 => 21121,\n    22629 => 21136, 22630 => 21139, 22631 => 20866, 22632 => 32596, 22633 => 20155,\n    22634 => 20163, 22635 => 20169, 22636 => 20162, 22637 => 20200, 22638 => 20193,\n    22639 => 20203, 22640 => 20190, 22641 => 20251, 22642 => 20211, 22643 => 20258,\n    22644 => 20324, 22645 => 20213, 22646 => 20261, 22647 => 20263, 22648 => 20233,\n    22649 => 20267, 22650 => 20318, 22651 => 20327, 22652 => 25912, 22653 => 20314,\n    22654 => 20317, 22817 => 20319, 22818 => 20311, 22819 => 20274, 22820 => 20285,\n    22821 => 20342, 22822 => 20340, 22823 => 20369, 22824 => 20361, 22825 => 20355,\n    22826 => 20367, 22827 => 20350, 22828 => 20347, 22829 => 20394, 22830 => 20348,\n    22831 => 20396, 22832 => 20372, 22833 => 20454, 22834 => 20456, 22835 => 20458,\n    22836 => 20421, 22837 => 20442, 22838 => 20451, 22839 => 20444, 22840 => 20433,\n    22841 => 20447, 22842 => 20472, 22843 => 20521, 22844 => 20556, 22845 => 20467,\n    22846 => 20524, 22847 => 20495, 22848 => 20526, 22849 => 20525, 22850 => 20478,\n    22851 => 20508, 22852 => 20492, 22853 => 20517, 22854 => 20520, 22855 => 20606,\n    22856 => 20547, 22857 => 20565, 22858 => 20552, 22859 => 20558, 22860 => 20588,\n    22861 => 20603, 22862 => 20645, 22863 => 20647, 22864 => 20649, 22865 => 20666,\n    22866 => 20694, 22867 => 20742, 22868 => 20717, 22869 => 20716, 22870 => 20710,\n    22871 => 20718, 22872 => 20743, 22873 => 20747, 22874 => 20189, 22875 => 27709,\n    22876 => 20312, 22877 => 20325, 22878 => 20430, 22879 => 40864, 22880 => 27718,\n    22881 => 31860, 22882 => 20846, 22883 => 24061, 22884 => 40649, 22885 => 39320,\n    22886 => 20865, 22887 => 22804, 22888 => 21241, 22889 => 21261, 22890 => 35335,\n    22891 => 21264, 22892 => 20971, 22893 => 22809, 22894 => 20821, 22895 => 20128,\n    22896 => 20822, 22897 => 20147, 22898 => 34926, 22899 => 34980, 22900 => 20149,\n    22901 => 33044, 22902 => 35026, 22903 => 31104, 22904 => 23348, 22905 => 34819,\n    22906 => 32696, 22907 => 20907, 22908 => 20913, 22909 => 20925, 22910 => 20924,\n    23073 => 20935, 23074 => 20886, 23075 => 20898, 23076 => 20901, 23077 => 35744,\n    23078 => 35750, 23079 => 35751, 23080 => 35754, 23081 => 35764, 23082 => 35765,\n    23083 => 35767, 23084 => 35778, 23085 => 35779, 23086 => 35787, 23087 => 35791,\n    23088 => 35790, 23089 => 35794, 23090 => 35795, 23091 => 35796, 23092 => 35798,\n    23093 => 35800, 23094 => 35801, 23095 => 35804, 23096 => 35807, 23097 => 35808,\n    23098 => 35812, 23099 => 35816, 23100 => 35817, 23101 => 35822, 23102 => 35824,\n    23103 => 35827, 23104 => 35830, 23105 => 35833, 23106 => 35836, 23107 => 35839,\n    23108 => 35840, 23109 => 35842, 23110 => 35844, 23111 => 35847, 23112 => 35852,\n    23113 => 35855, 23114 => 35857, 23115 => 35858, 23116 => 35860, 23117 => 35861,\n    23118 => 35862, 23119 => 35865, 23120 => 35867, 23121 => 35864, 23122 => 35869,\n    23123 => 35871, 23124 => 35872, 23125 => 35873, 23126 => 35877, 23127 => 35879,\n    23128 => 35882, 23129 => 35883, 23130 => 35886, 23131 => 35887, 23132 => 35890,\n    23133 => 35891, 23134 => 35893, 23135 => 35894, 23136 => 21353, 23137 => 21370,\n    23138 => 38429, 23139 => 38434, 23140 => 38433, 23141 => 38449, 23142 => 38442,\n    23143 => 38461, 23144 => 38460, 23145 => 38466, 23146 => 38473, 23147 => 38484,\n    23148 => 38495, 23149 => 38503, 23150 => 38508, 23151 => 38514, 23152 => 38516,\n    23153 => 38536, 23154 => 38541, 23155 => 38551, 23156 => 38576, 23157 => 37015,\n    23158 => 37019, 23159 => 37021, 23160 => 37017, 23161 => 37036, 23162 => 37025,\n    23163 => 37044, 23164 => 37043, 23165 => 37046, 23166 => 37050, 23329 => 37048,\n    23330 => 37040, 23331 => 37071, 23332 => 37061, 23333 => 37054, 23334 => 37072,\n    23335 => 37060, 23336 => 37063, 23337 => 37075, 23338 => 37094, 23339 => 37090,\n    23340 => 37084, 23341 => 37079, 23342 => 37083, 23343 => 37099, 23344 => 37103,\n    23345 => 37118, 23346 => 37124, 23347 => 37154, 23348 => 37150, 23349 => 37155,\n    23350 => 37169, 23351 => 37167, 23352 => 37177, 23353 => 37187, 23354 => 37190,\n    23355 => 21005, 23356 => 22850, 23357 => 21154, 23358 => 21164, 23359 => 21165,\n    23360 => 21182, 23361 => 21759, 23362 => 21200, 23363 => 21206, 23364 => 21232,\n    23365 => 21471, 23366 => 29166, 23367 => 30669, 23368 => 24308, 23369 => 20981,\n    23370 => 20988, 23371 => 39727, 23372 => 21430, 23373 => 24321, 23374 => 30042,\n    23375 => 24047, 23376 => 22348, 23377 => 22441, 23378 => 22433, 23379 => 22654,\n    23380 => 22716, 23381 => 22725, 23382 => 22737, 23383 => 22313, 23384 => 22316,\n    23385 => 22314, 23386 => 22323, 23387 => 22329, 23388 => 22318, 23389 => 22319,\n    23390 => 22364, 23391 => 22331, 23392 => 22338, 23393 => 22377, 23394 => 22405,\n    23395 => 22379, 23396 => 22406, 23397 => 22396, 23398 => 22395, 23399 => 22376,\n    23400 => 22381, 23401 => 22390, 23402 => 22387, 23403 => 22445, 23404 => 22436,\n    23405 => 22412, 23406 => 22450, 23407 => 22479, 23408 => 22439, 23409 => 22452,\n    23410 => 22419, 23411 => 22432, 23412 => 22485, 23413 => 22488, 23414 => 22490,\n    23415 => 22489, 23416 => 22482, 23417 => 22456, 23418 => 22516, 23419 => 22511,\n    23420 => 22520, 23421 => 22500, 23422 => 22493, 23585 => 22539, 23586 => 22541,\n    23587 => 22525, 23588 => 22509, 23589 => 22528, 23590 => 22558, 23591 => 22553,\n    23592 => 22596, 23593 => 22560, 23594 => 22629, 23595 => 22636, 23596 => 22657,\n    23597 => 22665, 23598 => 22682, 23599 => 22656, 23600 => 39336, 23601 => 40729,\n    23602 => 25087, 23603 => 33401, 23604 => 33405, 23605 => 33407, 23606 => 33423,\n    23607 => 33418, 23608 => 33448, 23609 => 33412, 23610 => 33422, 23611 => 33425,\n    23612 => 33431, 23613 => 33433, 23614 => 33451, 23615 => 33464, 23616 => 33470,\n    23617 => 33456, 23618 => 33480, 23619 => 33482, 23620 => 33507, 23621 => 33432,\n    23622 => 33463, 23623 => 33454, 23624 => 33483, 23625 => 33484, 23626 => 33473,\n    23627 => 33449, 23628 => 33460, 23629 => 33441, 23630 => 33450, 23631 => 33439,\n    23632 => 33476, 23633 => 33486, 23634 => 33444, 23635 => 33505, 23636 => 33545,\n    23637 => 33527, 23638 => 33508, 23639 => 33551, 23640 => 33543, 23641 => 33500,\n    23642 => 33524, 23643 => 33490, 23644 => 33496, 23645 => 33548, 23646 => 33531,\n    23647 => 33491, 23648 => 33553, 23649 => 33562, 23650 => 33542, 23651 => 33556,\n    23652 => 33557, 23653 => 33504, 23654 => 33493, 23655 => 33564, 23656 => 33617,\n    23657 => 33627, 23658 => 33628, 23659 => 33544, 23660 => 33682, 23661 => 33596,\n    23662 => 33588, 23663 => 33585, 23664 => 33691, 23665 => 33630, 23666 => 33583,\n    23667 => 33615, 23668 => 33607, 23669 => 33603, 23670 => 33631, 23671 => 33600,\n    23672 => 33559, 23673 => 33632, 23674 => 33581, 23675 => 33594, 23676 => 33587,\n    23677 => 33638, 23678 => 33637, 23841 => 33640, 23842 => 33563, 23843 => 33641,\n    23844 => 33644, 23845 => 33642, 23846 => 33645, 23847 => 33646, 23848 => 33712,\n    23849 => 33656, 23850 => 33715, 23851 => 33716, 23852 => 33696, 23853 => 33706,\n    23854 => 33683, 23855 => 33692, 23856 => 33669, 23857 => 33660, 23858 => 33718,\n    23859 => 33705, 23860 => 33661, 23861 => 33720, 23862 => 33659, 23863 => 33688,\n    23864 => 33694, 23865 => 33704, 23866 => 33722, 23867 => 33724, 23868 => 33729,\n    23869 => 33793, 23870 => 33765, 23871 => 33752, 23872 => 22535, 23873 => 33816,\n    23874 => 33803, 23875 => 33757, 23876 => 33789, 23877 => 33750, 23878 => 33820,\n    23879 => 33848, 23880 => 33809, 23881 => 33798, 23882 => 33748, 23883 => 33759,\n    23884 => 33807, 23885 => 33795, 23886 => 33784, 23887 => 33785, 23888 => 33770,\n    23889 => 33733, 23890 => 33728, 23891 => 33830, 23892 => 33776, 23893 => 33761,\n    23894 => 33884, 23895 => 33873, 23896 => 33882, 23897 => 33881, 23898 => 33907,\n    23899 => 33927, 23900 => 33928, 23901 => 33914, 23902 => 33929, 23903 => 33912,\n    23904 => 33852, 23905 => 33862, 23906 => 33897, 23907 => 33910, 23908 => 33932,\n    23909 => 33934, 23910 => 33841, 23911 => 33901, 23912 => 33985, 23913 => 33997,\n    23914 => 34000, 23915 => 34022, 23916 => 33981, 23917 => 34003, 23918 => 33994,\n    23919 => 33983, 23920 => 33978, 23921 => 34016, 23922 => 33953, 23923 => 33977,\n    23924 => 33972, 23925 => 33943, 23926 => 34021, 23927 => 34019, 23928 => 34060,\n    23929 => 29965, 23930 => 34104, 23931 => 34032, 23932 => 34105, 23933 => 34079,\n    23934 => 34106, 24097 => 34134, 24098 => 34107, 24099 => 34047, 24100 => 34044,\n    24101 => 34137, 24102 => 34120, 24103 => 34152, 24104 => 34148, 24105 => 34142,\n    24106 => 34170, 24107 => 30626, 24108 => 34115, 24109 => 34162, 24110 => 34171,\n    24111 => 34212, 24112 => 34216, 24113 => 34183, 24114 => 34191, 24115 => 34169,\n    24116 => 34222, 24117 => 34204, 24118 => 34181, 24119 => 34233, 24120 => 34231,\n    24121 => 34224, 24122 => 34259, 24123 => 34241, 24124 => 34268, 24125 => 34303,\n    24126 => 34343, 24127 => 34309, 24128 => 34345, 24129 => 34326, 24130 => 34364,\n    24131 => 24318, 24132 => 24328, 24133 => 22844, 24134 => 22849, 24135 => 32823,\n    24136 => 22869, 24137 => 22874, 24138 => 22872, 24139 => 21263, 24140 => 23586,\n    24141 => 23589, 24142 => 23596, 24143 => 23604, 24144 => 25164, 24145 => 25194,\n    24146 => 25247, 24147 => 25275, 24148 => 25290, 24149 => 25306, 24150 => 25303,\n    24151 => 25326, 24152 => 25378, 24153 => 25334, 24154 => 25401, 24155 => 25419,\n    24156 => 25411, 24157 => 25517, 24158 => 25590, 24159 => 25457, 24160 => 25466,\n    24161 => 25486, 24162 => 25524, 24163 => 25453, 24164 => 25516, 24165 => 25482,\n    24166 => 25449, 24167 => 25518, 24168 => 25532, 24169 => 25586, 24170 => 25592,\n    24171 => 25568, 24172 => 25599, 24173 => 25540, 24174 => 25566, 24175 => 25550,\n    24176 => 25682, 24177 => 25542, 24178 => 25534, 24179 => 25669, 24180 => 25665,\n    24181 => 25611, 24182 => 25627, 24183 => 25632, 24184 => 25612, 24185 => 25638,\n    24186 => 25633, 24187 => 25694, 24188 => 25732, 24189 => 25709, 24190 => 25750,\n    24353 => 25722, 24354 => 25783, 24355 => 25784, 24356 => 25753, 24357 => 25786,\n    24358 => 25792, 24359 => 25808, 24360 => 25815, 24361 => 25828, 24362 => 25826,\n    24363 => 25865, 24364 => 25893, 24365 => 25902, 24366 => 24331, 24367 => 24530,\n    24368 => 29977, 24369 => 24337, 24370 => 21343, 24371 => 21489, 24372 => 21501,\n    24373 => 21481, 24374 => 21480, 24375 => 21499, 24376 => 21522, 24377 => 21526,\n    24378 => 21510, 24379 => 21579, 24380 => 21586, 24381 => 21587, 24382 => 21588,\n    24383 => 21590, 24384 => 21571, 24385 => 21537, 24386 => 21591, 24387 => 21593,\n    24388 => 21539, 24389 => 21554, 24390 => 21634, 24391 => 21652, 24392 => 21623,\n    24393 => 21617, 24394 => 21604, 24395 => 21658, 24396 => 21659, 24397 => 21636,\n    24398 => 21622, 24399 => 21606, 24400 => 21661, 24401 => 21712, 24402 => 21677,\n    24403 => 21698, 24404 => 21684, 24405 => 21714, 24406 => 21671, 24407 => 21670,\n    24408 => 21715, 24409 => 21716, 24410 => 21618, 24411 => 21667, 24412 => 21717,\n    24413 => 21691, 24414 => 21695, 24415 => 21708, 24416 => 21721, 24417 => 21722,\n    24418 => 21724, 24419 => 21673, 24420 => 21674, 24421 => 21668, 24422 => 21725,\n    24423 => 21711, 24424 => 21726, 24425 => 21787, 24426 => 21735, 24427 => 21792,\n    24428 => 21757, 24429 => 21780, 24430 => 21747, 24431 => 21794, 24432 => 21795,\n    24433 => 21775, 24434 => 21777, 24435 => 21799, 24436 => 21802, 24437 => 21863,\n    24438 => 21903, 24439 => 21941, 24440 => 21833, 24441 => 21869, 24442 => 21825,\n    24443 => 21845, 24444 => 21823, 24445 => 21840, 24446 => 21820, 24609 => 21815,\n    24610 => 21846, 24611 => 21877, 24612 => 21878, 24613 => 21879, 24614 => 21811,\n    24615 => 21808, 24616 => 21852, 24617 => 21899, 24618 => 21970, 24619 => 21891,\n    24620 => 21937, 24621 => 21945, 24622 => 21896, 24623 => 21889, 24624 => 21919,\n    24625 => 21886, 24626 => 21974, 24627 => 21905, 24628 => 21883, 24629 => 21983,\n    24630 => 21949, 24631 => 21950, 24632 => 21908, 24633 => 21913, 24634 => 21994,\n    24635 => 22007, 24636 => 21961, 24637 => 22047, 24638 => 21969, 24639 => 21995,\n    24640 => 21996, 24641 => 21972, 24642 => 21990, 24643 => 21981, 24644 => 21956,\n    24645 => 21999, 24646 => 21989, 24647 => 22002, 24648 => 22003, 24649 => 21964,\n    24650 => 21965, 24651 => 21992, 24652 => 22005, 24653 => 21988, 24654 => 36756,\n    24655 => 22046, 24656 => 22024, 24657 => 22028, 24658 => 22017, 24659 => 22052,\n    24660 => 22051, 24661 => 22014, 24662 => 22016, 24663 => 22055, 24664 => 22061,\n    24665 => 22104, 24666 => 22073, 24667 => 22103, 24668 => 22060, 24669 => 22093,\n    24670 => 22114, 24671 => 22105, 24672 => 22108, 24673 => 22092, 24674 => 22100,\n    24675 => 22150, 24676 => 22116, 24677 => 22129, 24678 => 22123, 24679 => 22139,\n    24680 => 22140, 24681 => 22149, 24682 => 22163, 24683 => 22191, 24684 => 22228,\n    24685 => 22231, 24686 => 22237, 24687 => 22241, 24688 => 22261, 24689 => 22251,\n    24690 => 22265, 24691 => 22271, 24692 => 22276, 24693 => 22282, 24694 => 22281,\n    24695 => 22300, 24696 => 24079, 24697 => 24089, 24698 => 24084, 24699 => 24081,\n    24700 => 24113, 24701 => 24123, 24702 => 24124, 24865 => 24119, 24866 => 24132,\n    24867 => 24148, 24868 => 24155, 24869 => 24158, 24870 => 24161, 24871 => 23692,\n    24872 => 23674, 24873 => 23693, 24874 => 23696, 24875 => 23702, 24876 => 23688,\n    24877 => 23704, 24878 => 23705, 24879 => 23697, 24880 => 23706, 24881 => 23708,\n    24882 => 23733, 24883 => 23714, 24884 => 23741, 24885 => 23724, 24886 => 23723,\n    24887 => 23729, 24888 => 23715, 24889 => 23745, 24890 => 23735, 24891 => 23748,\n    24892 => 23762, 24893 => 23780, 24894 => 23755, 24895 => 23781, 24896 => 23810,\n    24897 => 23811, 24898 => 23847, 24899 => 23846, 24900 => 23854, 24901 => 23844,\n    24902 => 23838, 24903 => 23814, 24904 => 23835, 24905 => 23896, 24906 => 23870,\n    24907 => 23860, 24908 => 23869, 24909 => 23916, 24910 => 23899, 24911 => 23919,\n    24912 => 23901, 24913 => 23915, 24914 => 23883, 24915 => 23882, 24916 => 23913,\n    24917 => 23924, 24918 => 23938, 24919 => 23961, 24920 => 23965, 24921 => 35955,\n    24922 => 23991, 24923 => 24005, 24924 => 24435, 24925 => 24439, 24926 => 24450,\n    24927 => 24455, 24928 => 24457, 24929 => 24460, 24930 => 24469, 24931 => 24473,\n    24932 => 24476, 24933 => 24488, 24934 => 24493, 24935 => 24501, 24936 => 24508,\n    24937 => 34914, 24938 => 24417, 24939 => 29357, 24940 => 29360, 24941 => 29364,\n    24942 => 29367, 24943 => 29368, 24944 => 29379, 24945 => 29377, 24946 => 29390,\n    24947 => 29389, 24948 => 29394, 24949 => 29416, 24950 => 29423, 24951 => 29417,\n    24952 => 29426, 24953 => 29428, 24954 => 29431, 24955 => 29441, 24956 => 29427,\n    24957 => 29443, 24958 => 29434, 25121 => 29435, 25122 => 29463, 25123 => 29459,\n    25124 => 29473, 25125 => 29450, 25126 => 29470, 25127 => 29469, 25128 => 29461,\n    25129 => 29474, 25130 => 29497, 25131 => 29477, 25132 => 29484, 25133 => 29496,\n    25134 => 29489, 25135 => 29520, 25136 => 29517, 25137 => 29527, 25138 => 29536,\n    25139 => 29548, 25140 => 29551, 25141 => 29566, 25142 => 33307, 25143 => 22821,\n    25144 => 39143, 25145 => 22820, 25146 => 22786, 25147 => 39267, 25148 => 39271,\n    25149 => 39272, 25150 => 39273, 25151 => 39274, 25152 => 39275, 25153 => 39276,\n    25154 => 39284, 25155 => 39287, 25156 => 39293, 25157 => 39296, 25158 => 39300,\n    25159 => 39303, 25160 => 39306, 25161 => 39309, 25162 => 39312, 25163 => 39313,\n    25164 => 39315, 25165 => 39316, 25166 => 39317, 25167 => 24192, 25168 => 24209,\n    25169 => 24203, 25170 => 24214, 25171 => 24229, 25172 => 24224, 25173 => 24249,\n    25174 => 24245, 25175 => 24254, 25176 => 24243, 25177 => 36179, 25178 => 24274,\n    25179 => 24273, 25180 => 24283, 25181 => 24296, 25182 => 24298, 25183 => 33210,\n    25184 => 24516, 25185 => 24521, 25186 => 24534, 25187 => 24527, 25188 => 24579,\n    25189 => 24558, 25190 => 24580, 25191 => 24545, 25192 => 24548, 25193 => 24574,\n    25194 => 24581, 25195 => 24582, 25196 => 24554, 25197 => 24557, 25198 => 24568,\n    25199 => 24601, 25200 => 24629, 25201 => 24614, 25202 => 24603, 25203 => 24591,\n    25204 => 24589, 25205 => 24617, 25206 => 24619, 25207 => 24586, 25208 => 24639,\n    25209 => 24609, 25210 => 24696, 25211 => 24697, 25212 => 24699, 25213 => 24698,\n    25214 => 24642, 25377 => 24682, 25378 => 24701, 25379 => 24726, 25380 => 24730,\n    25381 => 24749, 25382 => 24733, 25383 => 24707, 25384 => 24722, 25385 => 24716,\n    25386 => 24731, 25387 => 24812, 25388 => 24763, 25389 => 24753, 25390 => 24797,\n    25391 => 24792, 25392 => 24774, 25393 => 24794, 25394 => 24756, 25395 => 24864,\n    25396 => 24870, 25397 => 24853, 25398 => 24867, 25399 => 24820, 25400 => 24832,\n    25401 => 24846, 25402 => 24875, 25403 => 24906, 25404 => 24949, 25405 => 25004,\n    25406 => 24980, 25407 => 24999, 25408 => 25015, 25409 => 25044, 25410 => 25077,\n    25411 => 24541, 25412 => 38579, 25413 => 38377, 25414 => 38379, 25415 => 38385,\n    25416 => 38387, 25417 => 38389, 25418 => 38390, 25419 => 38396, 25420 => 38398,\n    25421 => 38403, 25422 => 38404, 25423 => 38406, 25424 => 38408, 25425 => 38410,\n    25426 => 38411, 25427 => 38412, 25428 => 38413, 25429 => 38415, 25430 => 38418,\n    25431 => 38421, 25432 => 38422, 25433 => 38423, 25434 => 38425, 25435 => 38426,\n    25436 => 20012, 25437 => 29247, 25438 => 25109, 25439 => 27701, 25440 => 27732,\n    25441 => 27740, 25442 => 27722, 25443 => 27811, 25444 => 27781, 25445 => 27792,\n    25446 => 27796, 25447 => 27788, 25448 => 27752, 25449 => 27753, 25450 => 27764,\n    25451 => 27766, 25452 => 27782, 25453 => 27817, 25454 => 27856, 25455 => 27860,\n    25456 => 27821, 25457 => 27895, 25458 => 27896, 25459 => 27889, 25460 => 27863,\n    25461 => 27826, 25462 => 27872, 25463 => 27862, 25464 => 27898, 25465 => 27883,\n    25466 => 27886, 25467 => 27825, 25468 => 27859, 25469 => 27887, 25470 => 27902,\n    25633 => 27961, 25634 => 27943, 25635 => 27916, 25636 => 27971, 25637 => 27976,\n    25638 => 27911, 25639 => 27908, 25640 => 27929, 25641 => 27918, 25642 => 27947,\n    25643 => 27981, 25644 => 27950, 25645 => 27957, 25646 => 27930, 25647 => 27983,\n    25648 => 27986, 25649 => 27988, 25650 => 27955, 25651 => 28049, 25652 => 28015,\n    25653 => 28062, 25654 => 28064, 25655 => 27998, 25656 => 28051, 25657 => 28052,\n    25658 => 27996, 25659 => 28000, 25660 => 28028, 25661 => 28003, 25662 => 28186,\n    25663 => 28103, 25664 => 28101, 25665 => 28126, 25666 => 28174, 25667 => 28095,\n    25668 => 28128, 25669 => 28177, 25670 => 28134, 25671 => 28125, 25672 => 28121,\n    25673 => 28182, 25674 => 28075, 25675 => 28172, 25676 => 28078, 25677 => 28203,\n    25678 => 28270, 25679 => 28238, 25680 => 28267, 25681 => 28338, 25682 => 28255,\n    25683 => 28294, 25684 => 28243, 25685 => 28244, 25686 => 28210, 25687 => 28197,\n    25688 => 28228, 25689 => 28383, 25690 => 28337, 25691 => 28312, 25692 => 28384,\n    25693 => 28461, 25694 => 28386, 25695 => 28325, 25696 => 28327, 25697 => 28349,\n    25698 => 28347, 25699 => 28343, 25700 => 28375, 25701 => 28340, 25702 => 28367,\n    25703 => 28303, 25704 => 28354, 25705 => 28319, 25706 => 28514, 25707 => 28486,\n    25708 => 28487, 25709 => 28452, 25710 => 28437, 25711 => 28409, 25712 => 28463,\n    25713 => 28470, 25714 => 28491, 25715 => 28532, 25716 => 28458, 25717 => 28425,\n    25718 => 28457, 25719 => 28553, 25720 => 28557, 25721 => 28556, 25722 => 28536,\n    25723 => 28530, 25724 => 28540, 25725 => 28538, 25726 => 28625, 25889 => 28617,\n    25890 => 28583, 25891 => 28601, 25892 => 28598, 25893 => 28610, 25894 => 28641,\n    25895 => 28654, 25896 => 28638, 25897 => 28640, 25898 => 28655, 25899 => 28698,\n    25900 => 28707, 25901 => 28699, 25902 => 28729, 25903 => 28725, 25904 => 28751,\n    25905 => 28766, 25906 => 23424, 25907 => 23428, 25908 => 23445, 25909 => 23443,\n    25910 => 23461, 25911 => 23480, 25912 => 29999, 25913 => 39582, 25914 => 25652,\n    25915 => 23524, 25916 => 23534, 25917 => 35120, 25918 => 23536, 25919 => 36423,\n    25920 => 35591, 25921 => 36790, 25922 => 36819, 25923 => 36821, 25924 => 36837,\n    25925 => 36846, 25926 => 36836, 25927 => 36841, 25928 => 36838, 25929 => 36851,\n    25930 => 36840, 25931 => 36869, 25932 => 36868, 25933 => 36875, 25934 => 36902,\n    25935 => 36881, 25936 => 36877, 25937 => 36886, 25938 => 36897, 25939 => 36917,\n    25940 => 36918, 25941 => 36909, 25942 => 36911, 25943 => 36932, 25944 => 36945,\n    25945 => 36946, 25946 => 36944, 25947 => 36968, 25948 => 36952, 25949 => 36962,\n    25950 => 36955, 25951 => 26297, 25952 => 36980, 25953 => 36989, 25954 => 36994,\n    25955 => 37000, 25956 => 36995, 25957 => 37003, 25958 => 24400, 25959 => 24407,\n    25960 => 24406, 25961 => 24408, 25962 => 23611, 25963 => 21675, 25964 => 23632,\n    25965 => 23641, 25966 => 23409, 25967 => 23651, 25968 => 23654, 25969 => 32700,\n    25970 => 24362, 25971 => 24361, 25972 => 24365, 25973 => 33396, 25974 => 24380,\n    25975 => 39739, 25976 => 23662, 25977 => 22913, 25978 => 22915, 25979 => 22925,\n    25980 => 22953, 25981 => 22954, 25982 => 22947, 26145 => 22935, 26146 => 22986,\n    26147 => 22955, 26148 => 22942, 26149 => 22948, 26150 => 22994, 26151 => 22962,\n    26152 => 22959, 26153 => 22999, 26154 => 22974, 26155 => 23045, 26156 => 23046,\n    26157 => 23005, 26158 => 23048, 26159 => 23011, 26160 => 23000, 26161 => 23033,\n    26162 => 23052, 26163 => 23049, 26164 => 23090, 26165 => 23092, 26166 => 23057,\n    26167 => 23075, 26168 => 23059, 26169 => 23104, 26170 => 23143, 26171 => 23114,\n    26172 => 23125, 26173 => 23100, 26174 => 23138, 26175 => 23157, 26176 => 33004,\n    26177 => 23210, 26178 => 23195, 26179 => 23159, 26180 => 23162, 26181 => 23230,\n    26182 => 23275, 26183 => 23218, 26184 => 23250, 26185 => 23252, 26186 => 23224,\n    26187 => 23264, 26188 => 23267, 26189 => 23281, 26190 => 23254, 26191 => 23270,\n    26192 => 23256, 26193 => 23260, 26194 => 23305, 26195 => 23319, 26196 => 23318,\n    26197 => 23346, 26198 => 23351, 26199 => 23360, 26200 => 23573, 26201 => 23580,\n    26202 => 23386, 26203 => 23397, 26204 => 23411, 26205 => 23377, 26206 => 23379,\n    26207 => 23394, 26208 => 39541, 26209 => 39543, 26210 => 39544, 26211 => 39546,\n    26212 => 39551, 26213 => 39549, 26214 => 39552, 26215 => 39553, 26216 => 39557,\n    26217 => 39560, 26218 => 39562, 26219 => 39568, 26220 => 39570, 26221 => 39571,\n    26222 => 39574, 26223 => 39576, 26224 => 39579, 26225 => 39580, 26226 => 39581,\n    26227 => 39583, 26228 => 39584, 26229 => 39586, 26230 => 39587, 26231 => 39589,\n    26232 => 39591, 26233 => 32415, 26234 => 32417, 26235 => 32419, 26236 => 32421,\n    26237 => 32424, 26238 => 32425, 26401 => 32429, 26402 => 32432, 26403 => 32446,\n    26404 => 32448, 26405 => 32449, 26406 => 32450, 26407 => 32457, 26408 => 32459,\n    26409 => 32460, 26410 => 32464, 26411 => 32468, 26412 => 32471, 26413 => 32475,\n    26414 => 32480, 26415 => 32481, 26416 => 32488, 26417 => 32491, 26418 => 32494,\n    26419 => 32495, 26420 => 32497, 26421 => 32498, 26422 => 32525, 26423 => 32502,\n    26424 => 32506, 26425 => 32507, 26426 => 32510, 26427 => 32513, 26428 => 32514,\n    26429 => 32515, 26430 => 32519, 26431 => 32520, 26432 => 32523, 26433 => 32524,\n    26434 => 32527, 26435 => 32529, 26436 => 32530, 26437 => 32535, 26438 => 32537,\n    26439 => 32540, 26440 => 32539, 26441 => 32543, 26442 => 32545, 26443 => 32546,\n    26444 => 32547, 26445 => 32548, 26446 => 32549, 26447 => 32550, 26448 => 32551,\n    26449 => 32554, 26450 => 32555, 26451 => 32556, 26452 => 32557, 26453 => 32559,\n    26454 => 32560, 26455 => 32561, 26456 => 32562, 26457 => 32563, 26458 => 32565,\n    26459 => 24186, 26460 => 30079, 26461 => 24027, 26462 => 30014, 26463 => 37013,\n    26464 => 29582, 26465 => 29585, 26466 => 29614, 26467 => 29602, 26468 => 29599,\n    26469 => 29647, 26470 => 29634, 26471 => 29649, 26472 => 29623, 26473 => 29619,\n    26474 => 29632, 26475 => 29641, 26476 => 29640, 26477 => 29669, 26478 => 29657,\n    26479 => 39036, 26480 => 29706, 26481 => 29673, 26482 => 29671, 26483 => 29662,\n    26484 => 29626, 26485 => 29682, 26486 => 29711, 26487 => 29738, 26488 => 29787,\n    26489 => 29734, 26490 => 29733, 26491 => 29736, 26492 => 29744, 26493 => 29742,\n    26494 => 29740, 26657 => 29723, 26658 => 29722, 26659 => 29761, 26660 => 29788,\n    26661 => 29783, 26662 => 29781, 26663 => 29785, 26664 => 29815, 26665 => 29805,\n    26666 => 29822, 26667 => 29852, 26668 => 29838, 26669 => 29824, 26670 => 29825,\n    26671 => 29831, 26672 => 29835, 26673 => 29854, 26674 => 29864, 26675 => 29865,\n    26676 => 29840, 26677 => 29863, 26678 => 29906, 26679 => 29882, 26680 => 38890,\n    26681 => 38891, 26682 => 38892, 26683 => 26444, 26684 => 26451, 26685 => 26462,\n    26686 => 26440, 26687 => 26473, 26688 => 26533, 26689 => 26503, 26690 => 26474,\n    26691 => 26483, 26692 => 26520, 26693 => 26535, 26694 => 26485, 26695 => 26536,\n    26696 => 26526, 26697 => 26541, 26698 => 26507, 26699 => 26487, 26700 => 26492,\n    26701 => 26608, 26702 => 26633, 26703 => 26584, 26704 => 26634, 26705 => 26601,\n    26706 => 26544, 26707 => 26636, 26708 => 26585, 26709 => 26549, 26710 => 26586,\n    26711 => 26547, 26712 => 26589, 26713 => 26624, 26714 => 26563, 26715 => 26552,\n    26716 => 26594, 26717 => 26638, 26718 => 26561, 26719 => 26621, 26720 => 26674,\n    26721 => 26675, 26722 => 26720, 26723 => 26721, 26724 => 26702, 26725 => 26722,\n    26726 => 26692, 26727 => 26724, 26728 => 26755, 26729 => 26653, 26730 => 26709,\n    26731 => 26726, 26732 => 26689, 26733 => 26727, 26734 => 26688, 26735 => 26686,\n    26736 => 26698, 26737 => 26697, 26738 => 26665, 26739 => 26805, 26740 => 26767,\n    26741 => 26740, 26742 => 26743, 26743 => 26771, 26744 => 26731, 26745 => 26818,\n    26746 => 26990, 26747 => 26876, 26748 => 26911, 26749 => 26912, 26750 => 26873,\n    26913 => 26916, 26914 => 26864, 26915 => 26891, 26916 => 26881, 26917 => 26967,\n    26918 => 26851, 26919 => 26896, 26920 => 26993, 26921 => 26937, 26922 => 26976,\n    26923 => 26946, 26924 => 26973, 26925 => 27012, 26926 => 26987, 26927 => 27008,\n    26928 => 27032, 26929 => 27000, 26930 => 26932, 26931 => 27084, 26932 => 27015,\n    26933 => 27016, 26934 => 27086, 26935 => 27017, 26936 => 26982, 26937 => 26979,\n    26938 => 27001, 26939 => 27035, 26940 => 27047, 26941 => 27067, 26942 => 27051,\n    26943 => 27053, 26944 => 27092, 26945 => 27057, 26946 => 27073, 26947 => 27082,\n    26948 => 27103, 26949 => 27029, 26950 => 27104, 26951 => 27021, 26952 => 27135,\n    26953 => 27183, 26954 => 27117, 26955 => 27159, 26956 => 27160, 26957 => 27237,\n    26958 => 27122, 26959 => 27204, 26960 => 27198, 26961 => 27296, 26962 => 27216,\n    26963 => 27227, 26964 => 27189, 26965 => 27278, 26966 => 27257, 26967 => 27197,\n    26968 => 27176, 26969 => 27224, 26970 => 27260, 26971 => 27281, 26972 => 27280,\n    26973 => 27305, 26974 => 27287, 26975 => 27307, 26976 => 29495, 26977 => 29522,\n    26978 => 27521, 26979 => 27522, 26980 => 27527, 26981 => 27524, 26982 => 27538,\n    26983 => 27539, 26984 => 27533, 26985 => 27546, 26986 => 27547, 26987 => 27553,\n    26988 => 27562, 26989 => 36715, 26990 => 36717, 26991 => 36721, 26992 => 36722,\n    26993 => 36723, 26994 => 36725, 26995 => 36726, 26996 => 36728, 26997 => 36727,\n    26998 => 36729, 26999 => 36730, 27000 => 36732, 27001 => 36734, 27002 => 36737,\n    27003 => 36738, 27004 => 36740, 27005 => 36743, 27006 => 36747, 27169 => 36749,\n    27170 => 36750, 27171 => 36751, 27172 => 36760, 27173 => 36762, 27174 => 36558,\n    27175 => 25099, 27176 => 25111, 27177 => 25115, 27178 => 25119, 27179 => 25122,\n    27180 => 25121, 27181 => 25125, 27182 => 25124, 27183 => 25132, 27184 => 33255,\n    27185 => 29935, 27186 => 29940, 27187 => 29951, 27188 => 29967, 27189 => 29969,\n    27190 => 29971, 27191 => 25908, 27192 => 26094, 27193 => 26095, 27194 => 26096,\n    27195 => 26122, 27196 => 26137, 27197 => 26482, 27198 => 26115, 27199 => 26133,\n    27200 => 26112, 27201 => 28805, 27202 => 26359, 27203 => 26141, 27204 => 26164,\n    27205 => 26161, 27206 => 26166, 27207 => 26165, 27208 => 32774, 27209 => 26207,\n    27210 => 26196, 27211 => 26177, 27212 => 26191, 27213 => 26198, 27214 => 26209,\n    27215 => 26199, 27216 => 26231, 27217 => 26244, 27218 => 26252, 27219 => 26279,\n    27220 => 26269, 27221 => 26302, 27222 => 26331, 27223 => 26332, 27224 => 26342,\n    27225 => 26345, 27226 => 36146, 27227 => 36147, 27228 => 36150, 27229 => 36155,\n    27230 => 36157, 27231 => 36160, 27232 => 36165, 27233 => 36166, 27234 => 36168,\n    27235 => 36169, 27236 => 36167, 27237 => 36173, 27238 => 36181, 27239 => 36185,\n    27240 => 35271, 27241 => 35274, 27242 => 35275, 27243 => 35276, 27244 => 35278,\n    27245 => 35279, 27246 => 35280, 27247 => 35281, 27248 => 29294, 27249 => 29343,\n    27250 => 29277, 27251 => 29286, 27252 => 29295, 27253 => 29310, 27254 => 29311,\n    27255 => 29316, 27256 => 29323, 27257 => 29325, 27258 => 29327, 27259 => 29330,\n    27260 => 25352, 27261 => 25394, 27262 => 25520, 27425 => 25663, 27426 => 25816,\n    27427 => 32772, 27428 => 27626, 27429 => 27635, 27430 => 27645, 27431 => 27637,\n    27432 => 27641, 27433 => 27653, 27434 => 27655, 27435 => 27654, 27436 => 27661,\n    27437 => 27669, 27438 => 27672, 27439 => 27673, 27440 => 27674, 27441 => 27681,\n    27442 => 27689, 27443 => 27684, 27444 => 27690, 27445 => 27698, 27446 => 25909,\n    27447 => 25941, 27448 => 25963, 27449 => 29261, 27450 => 29266, 27451 => 29270,\n    27452 => 29232, 27453 => 34402, 27454 => 21014, 27455 => 32927, 27456 => 32924,\n    27457 => 32915, 27458 => 32956, 27459 => 26378, 27460 => 32957, 27461 => 32945,\n    27462 => 32939, 27463 => 32941, 27464 => 32948, 27465 => 32951, 27466 => 32999,\n    27467 => 33000, 27468 => 33001, 27469 => 33002, 27470 => 32987, 27471 => 32962,\n    27472 => 32964, 27473 => 32985, 27474 => 32973, 27475 => 32983, 27476 => 26384,\n    27477 => 32989, 27478 => 33003, 27479 => 33009, 27480 => 33012, 27481 => 33005,\n    27482 => 33037, 27483 => 33038, 27484 => 33010, 27485 => 33020, 27486 => 26389,\n    27487 => 33042, 27488 => 35930, 27489 => 33078, 27490 => 33054, 27491 => 33068,\n    27492 => 33048, 27493 => 33074, 27494 => 33096, 27495 => 33100, 27496 => 33107,\n    27497 => 33140, 27498 => 33113, 27499 => 33114, 27500 => 33137, 27501 => 33120,\n    27502 => 33129, 27503 => 33148, 27504 => 33149, 27505 => 33133, 27506 => 33127,\n    27507 => 22605, 27508 => 23221, 27509 => 33160, 27510 => 33154, 27511 => 33169,\n    27512 => 28373, 27513 => 33187, 27514 => 33194, 27515 => 33228, 27516 => 26406,\n    27517 => 33226, 27518 => 33211, 27681 => 33217, 27682 => 33190, 27683 => 27428,\n    27684 => 27447, 27685 => 27449, 27686 => 27459, 27687 => 27462, 27688 => 27481,\n    27689 => 39121, 27690 => 39122, 27691 => 39123, 27692 => 39125, 27693 => 39129,\n    27694 => 39130, 27695 => 27571, 27696 => 24384, 27697 => 27586, 27698 => 35315,\n    27699 => 26000, 27700 => 40785, 27701 => 26003, 27702 => 26044, 27703 => 26054,\n    27704 => 26052, 27705 => 26051, 27706 => 26060, 27707 => 26062, 27708 => 26066,\n    27709 => 26070, 27710 => 28800, 27711 => 28828, 27712 => 28822, 27713 => 28829,\n    27714 => 28859, 27715 => 28864, 27716 => 28855, 27717 => 28843, 27718 => 28849,\n    27719 => 28904, 27720 => 28874, 27721 => 28944, 27722 => 28947, 27723 => 28950,\n    27724 => 28975, 27725 => 28977, 27726 => 29043, 27727 => 29020, 27728 => 29032,\n    27729 => 28997, 27730 => 29042, 27731 => 29002, 27732 => 29048, 27733 => 29050,\n    27734 => 29080, 27735 => 29107, 27736 => 29109, 27737 => 29096, 27738 => 29088,\n    27739 => 29152, 27740 => 29140, 27741 => 29159, 27742 => 29177, 27743 => 29213,\n    27744 => 29224, 27745 => 28780, 27746 => 28952, 27747 => 29030, 27748 => 29113,\n    27749 => 25150, 27750 => 25149, 27751 => 25155, 27752 => 25160, 27753 => 25161,\n    27754 => 31035, 27755 => 31040, 27756 => 31046, 27757 => 31049, 27758 => 31067,\n    27759 => 31068, 27760 => 31059, 27761 => 31066, 27762 => 31074, 27763 => 31063,\n    27764 => 31072, 27765 => 31087, 27766 => 31079, 27767 => 31098, 27768 => 31109,\n    27769 => 31114, 27770 => 31130, 27771 => 31143, 27772 => 31155, 27773 => 24529,\n    27774 => 24528, 27937 => 24636, 27938 => 24669, 27939 => 24666, 27940 => 24679,\n    27941 => 24641, 27942 => 24665, 27943 => 24675, 27944 => 24747, 27945 => 24838,\n    27946 => 24845, 27947 => 24925, 27948 => 25001, 27949 => 24989, 27950 => 25035,\n    27951 => 25041, 27952 => 25094, 27953 => 32896, 27954 => 32895, 27955 => 27795,\n    27956 => 27894, 27957 => 28156, 27958 => 30710, 27959 => 30712, 27960 => 30720,\n    27961 => 30729, 27962 => 30743, 27963 => 30744, 27964 => 30737, 27965 => 26027,\n    27966 => 30765, 27967 => 30748, 27968 => 30749, 27969 => 30777, 27970 => 30778,\n    27971 => 30779, 27972 => 30751, 27973 => 30780, 27974 => 30757, 27975 => 30764,\n    27976 => 30755, 27977 => 30761, 27978 => 30798, 27979 => 30829, 27980 => 30806,\n    27981 => 30807, 27982 => 30758, 27983 => 30800, 27984 => 30791, 27985 => 30796,\n    27986 => 30826, 27987 => 30875, 27988 => 30867, 27989 => 30874, 27990 => 30855,\n    27991 => 30876, 27992 => 30881, 27993 => 30883, 27994 => 30898, 27995 => 30905,\n    27996 => 30885, 27997 => 30932, 27998 => 30937, 27999 => 30921, 28000 => 30956,\n    28001 => 30962, 28002 => 30981, 28003 => 30964, 28004 => 30995, 28005 => 31012,\n    28006 => 31006, 28007 => 31028, 28008 => 40859, 28009 => 40697, 28010 => 40699,\n    28011 => 40700, 28012 => 30449, 28013 => 30468, 28014 => 30477, 28015 => 30457,\n    28016 => 30471, 28017 => 30472, 28018 => 30490, 28019 => 30498, 28020 => 30489,\n    28021 => 30509, 28022 => 30502, 28023 => 30517, 28024 => 30520, 28025 => 30544,\n    28026 => 30545, 28027 => 30535, 28028 => 30531, 28029 => 30554, 28030 => 30568,\n    28193 => 30562, 28194 => 30565, 28195 => 30591, 28196 => 30605, 28197 => 30589,\n    28198 => 30592, 28199 => 30604, 28200 => 30609, 28201 => 30623, 28202 => 30624,\n    28203 => 30640, 28204 => 30645, 28205 => 30653, 28206 => 30010, 28207 => 30016,\n    28208 => 30030, 28209 => 30027, 28210 => 30024, 28211 => 30043, 28212 => 30066,\n    28213 => 30073, 28214 => 30083, 28215 => 32600, 28216 => 32609, 28217 => 32607,\n    28218 => 35400, 28219 => 32616, 28220 => 32628, 28221 => 32625, 28222 => 32633,\n    28223 => 32641, 28224 => 32638, 28225 => 30413, 28226 => 30437, 28227 => 34866,\n    28228 => 38021, 28229 => 38022, 28230 => 38023, 28231 => 38027, 28232 => 38026,\n    28233 => 38028, 28234 => 38029, 28235 => 38031, 28236 => 38032, 28237 => 38036,\n    28238 => 38039, 28239 => 38037, 28240 => 38042, 28241 => 38043, 28242 => 38044,\n    28243 => 38051, 28244 => 38052, 28245 => 38059, 28246 => 38058, 28247 => 38061,\n    28248 => 38060, 28249 => 38063, 28250 => 38064, 28251 => 38066, 28252 => 38068,\n    28253 => 38070, 28254 => 38071, 28255 => 38072, 28256 => 38073, 28257 => 38074,\n    28258 => 38076, 28259 => 38077, 28260 => 38079, 28261 => 38084, 28262 => 38088,\n    28263 => 38089, 28264 => 38090, 28265 => 38091, 28266 => 38092, 28267 => 38093,\n    28268 => 38094, 28269 => 38096, 28270 => 38097, 28271 => 38098, 28272 => 38101,\n    28273 => 38102, 28274 => 38103, 28275 => 38105, 28276 => 38104, 28277 => 38107,\n    28278 => 38110, 28279 => 38111, 28280 => 38112, 28281 => 38114, 28282 => 38116,\n    28283 => 38117, 28284 => 38119, 28285 => 38120, 28286 => 38122, 28449 => 38121,\n    28450 => 38123, 28451 => 38126, 28452 => 38127, 28453 => 38131, 28454 => 38132,\n    28455 => 38133, 28456 => 38135, 28457 => 38137, 28458 => 38140, 28459 => 38141,\n    28460 => 38143, 28461 => 38147, 28462 => 38146, 28463 => 38150, 28464 => 38151,\n    28465 => 38153, 28466 => 38154, 28467 => 38157, 28468 => 38158, 28469 => 38159,\n    28470 => 38162, 28471 => 38163, 28472 => 38164, 28473 => 38165, 28474 => 38166,\n    28475 => 38168, 28476 => 38171, 28477 => 38173, 28478 => 38174, 28479 => 38175,\n    28480 => 38178, 28481 => 38186, 28482 => 38187, 28483 => 38185, 28484 => 38188,\n    28485 => 38193, 28486 => 38194, 28487 => 38196, 28488 => 38198, 28489 => 38199,\n    28490 => 38200, 28491 => 38204, 28492 => 38206, 28493 => 38207, 28494 => 38210,\n    28495 => 38197, 28496 => 38212, 28497 => 38213, 28498 => 38214, 28499 => 38217,\n    28500 => 38220, 28501 => 38222, 28502 => 38223, 28503 => 38226, 28504 => 38227,\n    28505 => 38228, 28506 => 38230, 28507 => 38231, 28508 => 38232, 28509 => 38233,\n    28510 => 38235, 28511 => 38238, 28512 => 38239, 28513 => 38237, 28514 => 38241,\n    28515 => 38242, 28516 => 38244, 28517 => 38245, 28518 => 38246, 28519 => 38247,\n    28520 => 38248, 28521 => 38249, 28522 => 38250, 28523 => 38251, 28524 => 38252,\n    28525 => 38255, 28526 => 38257, 28527 => 38258, 28528 => 38259, 28529 => 38202,\n    28530 => 30695, 28531 => 30700, 28532 => 38601, 28533 => 31189, 28534 => 31213,\n    28535 => 31203, 28536 => 31211, 28537 => 31238, 28538 => 23879, 28539 => 31235,\n    28540 => 31234, 28541 => 31262, 28542 => 31252, 28705 => 31289, 28706 => 31287,\n    28707 => 31313, 28708 => 40655, 28709 => 39333, 28710 => 31344, 28711 => 30344,\n    28712 => 30350, 28713 => 30355, 28714 => 30361, 28715 => 30372, 28716 => 29918,\n    28717 => 29920, 28718 => 29996, 28719 => 40480, 28720 => 40482, 28721 => 40488,\n    28722 => 40489, 28723 => 40490, 28724 => 40491, 28725 => 40492, 28726 => 40498,\n    28727 => 40497, 28728 => 40502, 28729 => 40504, 28730 => 40503, 28731 => 40505,\n    28732 => 40506, 28733 => 40510, 28734 => 40513, 28735 => 40514, 28736 => 40516,\n    28737 => 40518, 28738 => 40519, 28739 => 40520, 28740 => 40521, 28741 => 40523,\n    28742 => 40524, 28743 => 40526, 28744 => 40529, 28745 => 40533, 28746 => 40535,\n    28747 => 40538, 28748 => 40539, 28749 => 40540, 28750 => 40542, 28751 => 40547,\n    28752 => 40550, 28753 => 40551, 28754 => 40552, 28755 => 40553, 28756 => 40554,\n    28757 => 40555, 28758 => 40556, 28759 => 40561, 28760 => 40557, 28761 => 40563,\n    28762 => 30098, 28763 => 30100, 28764 => 30102, 28765 => 30112, 28766 => 30109,\n    28767 => 30124, 28768 => 30115, 28769 => 30131, 28770 => 30132, 28771 => 30136,\n    28772 => 30148, 28773 => 30129, 28774 => 30128, 28775 => 30147, 28776 => 30146,\n    28777 => 30166, 28778 => 30157, 28779 => 30179, 28780 => 30184, 28781 => 30182,\n    28782 => 30180, 28783 => 30187, 28784 => 30183, 28785 => 30211, 28786 => 30193,\n    28787 => 30204, 28788 => 30207, 28789 => 30224, 28790 => 30208, 28791 => 30213,\n    28792 => 30220, 28793 => 30231, 28794 => 30218, 28795 => 30245, 28796 => 30232,\n    28797 => 30229, 28798 => 30233, 28961 => 30235, 28962 => 30268, 28963 => 30242,\n    28964 => 30240, 28965 => 30272, 28966 => 30253, 28967 => 30256, 28968 => 30271,\n    28969 => 30261, 28970 => 30275, 28971 => 30270, 28972 => 30259, 28973 => 30285,\n    28974 => 30302, 28975 => 30292, 28976 => 30300, 28977 => 30294, 28978 => 30315,\n    28979 => 30319, 28980 => 32714, 28981 => 31462, 28982 => 31352, 28983 => 31353,\n    28984 => 31360, 28985 => 31366, 28986 => 31368, 28987 => 31381, 28988 => 31398,\n    28989 => 31392, 28990 => 31404, 28991 => 31400, 28992 => 31405, 28993 => 31411,\n    28994 => 34916, 28995 => 34921, 28996 => 34930, 28997 => 34941, 28998 => 34943,\n    28999 => 34946, 29000 => 34978, 29001 => 35014, 29002 => 34999, 29003 => 35004,\n    29004 => 35017, 29005 => 35042, 29006 => 35022, 29007 => 35043, 29008 => 35045,\n    29009 => 35057, 29010 => 35098, 29011 => 35068, 29012 => 35048, 29013 => 35070,\n    29014 => 35056, 29015 => 35105, 29016 => 35097, 29017 => 35091, 29018 => 35099,\n    29019 => 35082, 29020 => 35124, 29021 => 35115, 29022 => 35126, 29023 => 35137,\n    29024 => 35174, 29025 => 35195, 29026 => 30091, 29027 => 32997, 29028 => 30386,\n    29029 => 30388, 29030 => 30684, 29031 => 32786, 29032 => 32788, 29033 => 32790,\n    29034 => 32796, 29035 => 32800, 29036 => 32802, 29037 => 32805, 29038 => 32806,\n    29039 => 32807, 29040 => 32809, 29041 => 32808, 29042 => 32817, 29043 => 32779,\n    29044 => 32821, 29045 => 32835, 29046 => 32838, 29047 => 32845, 29048 => 32850,\n    29049 => 32873, 29050 => 32881, 29051 => 35203, 29052 => 39032, 29053 => 39040,\n    29054 => 39043, 29217 => 39049, 29218 => 39052, 29219 => 39053, 29220 => 39055,\n    29221 => 39060, 29222 => 39066, 29223 => 39067, 29224 => 39070, 29225 => 39071,\n    29226 => 39073, 29227 => 39074, 29228 => 39077, 29229 => 39078, 29230 => 34381,\n    29231 => 34388, 29232 => 34412, 29233 => 34414, 29234 => 34431, 29235 => 34426,\n    29236 => 34428, 29237 => 34427, 29238 => 34472, 29239 => 34445, 29240 => 34443,\n    29241 => 34476, 29242 => 34461, 29243 => 34471, 29244 => 34467, 29245 => 34474,\n    29246 => 34451, 29247 => 34473, 29248 => 34486, 29249 => 34500, 29250 => 34485,\n    29251 => 34510, 29252 => 34480, 29253 => 34490, 29254 => 34481, 29255 => 34479,\n    29256 => 34505, 29257 => 34511, 29258 => 34484, 29259 => 34537, 29260 => 34545,\n    29261 => 34546, 29262 => 34541, 29263 => 34547, 29264 => 34512, 29265 => 34579,\n    29266 => 34526, 29267 => 34548, 29268 => 34527, 29269 => 34520, 29270 => 34513,\n    29271 => 34563, 29272 => 34567, 29273 => 34552, 29274 => 34568, 29275 => 34570,\n    29276 => 34573, 29277 => 34569, 29278 => 34595, 29279 => 34619, 29280 => 34590,\n    29281 => 34597, 29282 => 34606, 29283 => 34586, 29284 => 34622, 29285 => 34632,\n    29286 => 34612, 29287 => 34609, 29288 => 34601, 29289 => 34615, 29290 => 34623,\n    29291 => 34690, 29292 => 34594, 29293 => 34685, 29294 => 34686, 29295 => 34683,\n    29296 => 34656, 29297 => 34672, 29298 => 34636, 29299 => 34670, 29300 => 34699,\n    29301 => 34643, 29302 => 34659, 29303 => 34684, 29304 => 34660, 29305 => 34649,\n    29306 => 34661, 29307 => 34707, 29308 => 34735, 29309 => 34728, 29310 => 34770,\n    29473 => 34758, 29474 => 34696, 29475 => 34693, 29476 => 34733, 29477 => 34711,\n    29478 => 34691, 29479 => 34731, 29480 => 34789, 29481 => 34732, 29482 => 34741,\n    29483 => 34739, 29484 => 34763, 29485 => 34771, 29486 => 34749, 29487 => 34769,\n    29488 => 34752, 29489 => 34762, 29490 => 34779, 29491 => 34794, 29492 => 34784,\n    29493 => 34798, 29494 => 34838, 29495 => 34835, 29496 => 34814, 29497 => 34826,\n    29498 => 34843, 29499 => 34849, 29500 => 34873, 29501 => 34876, 29502 => 32566,\n    29503 => 32578, 29504 => 32580, 29505 => 32581, 29506 => 33296, 29507 => 31482,\n    29508 => 31485, 29509 => 31496, 29510 => 31491, 29511 => 31492, 29512 => 31509,\n    29513 => 31498, 29514 => 31531, 29515 => 31503, 29516 => 31559, 29517 => 31544,\n    29518 => 31530, 29519 => 31513, 29520 => 31534, 29521 => 31537, 29522 => 31520,\n    29523 => 31525, 29524 => 31524, 29525 => 31539, 29526 => 31550, 29527 => 31518,\n    29528 => 31576, 29529 => 31578, 29530 => 31557, 29531 => 31605, 29532 => 31564,\n    29533 => 31581, 29534 => 31584, 29535 => 31598, 29536 => 31611, 29537 => 31586,\n    29538 => 31602, 29539 => 31601, 29540 => 31632, 29541 => 31654, 29542 => 31655,\n    29543 => 31672, 29544 => 31660, 29545 => 31645, 29546 => 31656, 29547 => 31621,\n    29548 => 31658, 29549 => 31644, 29550 => 31650, 29551 => 31659, 29552 => 31668,\n    29553 => 31697, 29554 => 31681, 29555 => 31692, 29556 => 31709, 29557 => 31706,\n    29558 => 31717, 29559 => 31718, 29560 => 31722, 29561 => 31756, 29562 => 31742,\n    29563 => 31740, 29564 => 31759, 29565 => 31766, 29566 => 31755, 29729 => 31775,\n    29730 => 31786, 29731 => 31782, 29732 => 31800, 29733 => 31809, 29734 => 31808,\n    29735 => 33278, 29736 => 33281, 29737 => 33282, 29738 => 33284, 29739 => 33260,\n    29740 => 34884, 29741 => 33313, 29742 => 33314, 29743 => 33315, 29744 => 33325,\n    29745 => 33327, 29746 => 33320, 29747 => 33323, 29748 => 33336, 29749 => 33339,\n    29750 => 33331, 29751 => 33332, 29752 => 33342, 29753 => 33348, 29754 => 33353,\n    29755 => 33355, 29756 => 33359, 29757 => 33370, 29758 => 33375, 29759 => 33384,\n    29760 => 34942, 29761 => 34949, 29762 => 34952, 29763 => 35032, 29764 => 35039,\n    29765 => 35166, 29766 => 32669, 29767 => 32671, 29768 => 32679, 29769 => 32687,\n    29770 => 32688, 29771 => 32690, 29772 => 31868, 29773 => 25929, 29774 => 31889,\n    29775 => 31901, 29776 => 31900, 29777 => 31902, 29778 => 31906, 29779 => 31922,\n    29780 => 31932, 29781 => 31933, 29782 => 31937, 29783 => 31943, 29784 => 31948,\n    29785 => 31949, 29786 => 31944, 29787 => 31941, 29788 => 31959, 29789 => 31976,\n    29790 => 33390, 29791 => 26280, 29792 => 32703, 29793 => 32718, 29794 => 32725,\n    29795 => 32741, 29796 => 32737, 29797 => 32742, 29798 => 32745, 29799 => 32750,\n    29800 => 32755, 29801 => 31992, 29802 => 32119, 29803 => 32166, 29804 => 32174,\n    29805 => 32327, 29806 => 32411, 29807 => 40632, 29808 => 40628, 29809 => 36211,\n    29810 => 36228, 29811 => 36244, 29812 => 36241, 29813 => 36273, 29814 => 36199,\n    29815 => 36205, 29816 => 35911, 29817 => 35913, 29818 => 37194, 29819 => 37200,\n    29820 => 37198, 29821 => 37199, 29822 => 37220, 29985 => 37218, 29986 => 37217,\n    29987 => 37232, 29988 => 37225, 29989 => 37231, 29990 => 37245, 29991 => 37246,\n    29992 => 37234, 29993 => 37236, 29994 => 37241, 29995 => 37260, 29996 => 37253,\n    29997 => 37264, 29998 => 37261, 29999 => 37265, 30000 => 37282, 30001 => 37283,\n    30002 => 37290, 30003 => 37293, 30004 => 37294, 30005 => 37295, 30006 => 37301,\n    30007 => 37300, 30008 => 37306, 30009 => 35925, 30010 => 40574, 30011 => 36280,\n    30012 => 36331, 30013 => 36357, 30014 => 36441, 30015 => 36457, 30016 => 36277,\n    30017 => 36287, 30018 => 36284, 30019 => 36282, 30020 => 36292, 30021 => 36310,\n    30022 => 36311, 30023 => 36314, 30024 => 36318, 30025 => 36302, 30026 => 36303,\n    30027 => 36315, 30028 => 36294, 30029 => 36332, 30030 => 36343, 30031 => 36344,\n    30032 => 36323, 30033 => 36345, 30034 => 36347, 30035 => 36324, 30036 => 36361,\n    30037 => 36349, 30038 => 36372, 30039 => 36381, 30040 => 36383, 30041 => 36396,\n    30042 => 36398, 30043 => 36387, 30044 => 36399, 30045 => 36410, 30046 => 36416,\n    30047 => 36409, 30048 => 36405, 30049 => 36413, 30050 => 36401, 30051 => 36425,\n    30052 => 36417, 30053 => 36418, 30054 => 36433, 30055 => 36434, 30056 => 36426,\n    30057 => 36464, 30058 => 36470, 30059 => 36476, 30060 => 36463, 30061 => 36468,\n    30062 => 36485, 30063 => 36495, 30064 => 36500, 30065 => 36496, 30066 => 36508,\n    30067 => 36510, 30068 => 35960, 30069 => 35970, 30070 => 35978, 30071 => 35973,\n    30072 => 35992, 30073 => 35988, 30074 => 26011, 30075 => 35286, 30076 => 35294,\n    30077 => 35290, 30078 => 35292, 30241 => 35301, 30242 => 35307, 30243 => 35311,\n    30244 => 35390, 30245 => 35622, 30246 => 38739, 30247 => 38633, 30248 => 38643,\n    30249 => 38639, 30250 => 38662, 30251 => 38657, 30252 => 38664, 30253 => 38671,\n    30254 => 38670, 30255 => 38698, 30256 => 38701, 30257 => 38704, 30258 => 38718,\n    30259 => 40832, 30260 => 40835, 30261 => 40837, 30262 => 40838, 30263 => 40839,\n    30264 => 40840, 30265 => 40841, 30266 => 40842, 30267 => 40844, 30268 => 40702,\n    30269 => 40715, 30270 => 40717, 30271 => 38585, 30272 => 38588, 30273 => 38589,\n    30274 => 38606, 30275 => 38610, 30276 => 30655, 30277 => 38624, 30278 => 37518,\n    30279 => 37550, 30280 => 37576, 30281 => 37694, 30282 => 37738, 30283 => 37834,\n    30284 => 37775, 30285 => 37950, 30286 => 37995, 30287 => 40063, 30288 => 40066,\n    30289 => 40069, 30290 => 40070, 30291 => 40071, 30292 => 40072, 30293 => 31267,\n    30294 => 40075, 30295 => 40078, 30296 => 40080, 30297 => 40081, 30298 => 40082,\n    30299 => 40084, 30300 => 40085, 30301 => 40090, 30302 => 40091, 30303 => 40094,\n    30304 => 40095, 30305 => 40096, 30306 => 40097, 30307 => 40098, 30308 => 40099,\n    30309 => 40101, 30310 => 40102, 30311 => 40103, 30312 => 40104, 30313 => 40105,\n    30314 => 40107, 30315 => 40109, 30316 => 40110, 30317 => 40112, 30318 => 40113,\n    30319 => 40114, 30320 => 40115, 30321 => 40116, 30322 => 40117, 30323 => 40118,\n    30324 => 40119, 30325 => 40122, 30326 => 40123, 30327 => 40124, 30328 => 40125,\n    30329 => 40132, 30330 => 40133, 30331 => 40134, 30332 => 40135, 30333 => 40138,\n    30334 => 40139, 30497 => 40140, 30498 => 40141, 30499 => 40142, 30500 => 40143,\n    30501 => 40144, 30502 => 40147, 30503 => 40148, 30504 => 40149, 30505 => 40151,\n    30506 => 40152, 30507 => 40153, 30508 => 40156, 30509 => 40157, 30510 => 40159,\n    30511 => 40162, 30512 => 38780, 30513 => 38789, 30514 => 38801, 30515 => 38802,\n    30516 => 38804, 30517 => 38831, 30518 => 38827, 30519 => 38819, 30520 => 38834,\n    30521 => 38836, 30522 => 39601, 30523 => 39600, 30524 => 39607, 30525 => 40536,\n    30526 => 39606, 30527 => 39610, 30528 => 39612, 30529 => 39617, 30530 => 39616,\n    30531 => 39621, 30532 => 39618, 30533 => 39627, 30534 => 39628, 30535 => 39633,\n    30536 => 39749, 30537 => 39747, 30538 => 39751, 30539 => 39753, 30540 => 39752,\n    30541 => 39757, 30542 => 39761, 30543 => 39144, 30544 => 39181, 30545 => 39214,\n    30546 => 39253, 30547 => 39252, 30548 => 39647, 30549 => 39649, 30550 => 39654,\n    30551 => 39663, 30552 => 39659, 30553 => 39675, 30554 => 39661, 30555 => 39673,\n    30556 => 39688, 30557 => 39695, 30558 => 39699, 30559 => 39711, 30560 => 39715,\n    30561 => 40637, 30562 => 40638, 30563 => 32315, 30564 => 40578, 30565 => 40583,\n    30566 => 40584, 30567 => 40587, 30568 => 40594, 30569 => 37846, 30570 => 40605,\n    30571 => 40607, 30572 => 40667, 30573 => 40668, 30574 => 40669, 30575 => 40672,\n    30576 => 40671, 30577 => 40674, 30578 => 40681, 30579 => 40679, 30580 => 40677,\n    30581 => 40682, 30582 => 40687, 30583 => 40738, 30584 => 40748, 30585 => 40751,\n    30586 => 40761, 30587 => 40759, 30588 => 40765, 30589 => 40766, 30590 => 40772,\n    0 => 0 );\n\n    function gb2utf8($gb) {\n        if( !trim($gb) ) return $gb;\n        $utf8='';\n        while($gb) {\n            if( ord(substr($gb,0,1)) > 127 ) {\n                $t=substr($gb,0,2);\n                $gb=substr($gb,2);\n                $utf8 .= $this->u2utf8($this->codetable[hexdec(bin2hex($t))-0x8080]);\n            }\n            else {\n                $t=substr($gb,0,1);\n                $gb=substr($gb,1);\n                $utf8 .= $this->u2utf8($t);\n            }\n        }\n        return $utf8;\n    }\n\n    function u2utf8($c) {\n        $str='';\n        if ($c < 0x80) {\n            $str.=$c;\n        }\n        else if ($c < 0x800) {\n            $str.=chr(0xC0 | $c>>6);\n            $str.=chr(0x80 | $c & 0x3F);\n        }\n        else if ($c < 0x10000) {\n            $str.=chr(0xE0 | $c>>12);\n            $str.=chr(0x80 | $c>>6 & 0x3F);\n            $str.=chr(0x80 | $c & 0x3F);\n        }\n        else if ($c < 0x200000) {\n            $str.=chr(0xF0 | $c>>18);\n            $str.=chr(0x80 | $c>>12 & 0x3F);\n            $str.=chr(0x80 | $c>>6 & 0x3F);\n            $str.=chr(0x80 | $c & 0x3F);\n        }\n        return $str;\n    }\n\n} // END Class\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_gradient.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_GRADIENT.PHP\n // Description: Create a color gradient\n // Created:     2003-02-01\n // Ver:         $Id: jpgraph_gradient.php 1761 2009-08-01 08:31:28Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\n// Styles for gradient color fill\ndefine(\"GRAD_VER\",1);\ndefine(\"GRAD_VERT\",1);\ndefine(\"GRAD_HOR\",2);\ndefine(\"GRAD_MIDHOR\",3);\ndefine(\"GRAD_MIDVER\",4);\ndefine(\"GRAD_CENTER\",5);\ndefine(\"GRAD_WIDE_MIDVER\",6);\ndefine(\"GRAD_WIDE_MIDHOR\",7);\ndefine(\"GRAD_LEFT_REFLECTION\",8);\ndefine(\"GRAD_RIGHT_REFLECTION\",9);\ndefine(\"GRAD_RAISED_PANEL\",10);\ndefine(\"GRAD_DIAGONAL\",11);\n\n//===================================================\n// CLASS Gradient\n// Description: Handles gradient fills. This is to be\n// considered a \"friend\" class of Class Image.\n//===================================================\nclass Gradient {\n    private $img=null, $numcolors=100;\n    //---------------\n    // CONSTRUCTOR\n    function __construct(&$img) {\n        $this->img = $img;\n    }\n\n\n    function SetNumColors($aNum) {\n        $this->numcolors=$aNum;\n    }\n    //---------------\n    // PUBLIC METHODS\n    // Produce a gradient filled rectangle with a smooth transition between\n    // two colors.\n    // ($xl,$yt)  Top left corner\n    // ($xr,$yb) Bottom right\n    // $from_color Starting color in gradient\n    // $to_color End color in the gradient\n    // $style  Which way is the gradient oriented?\n    function FilledRectangle($xl,$yt,$xr,$yb,$from_color,$to_color,$style=1) {\n        $this->img->SetLineWeight(1);\n        switch( $style ) {\n            case GRAD_VER:\n                $steps = ceil(abs($xr-$xl)+1);\n                $delta = $xr>=$xl ? 1 : -1;\n                $this->GetColArray($from_color,$to_color,$steps,$colors,$this->numcolors);\n                for( $i=0, $x=$xl; $i < $steps; ++$i ) {\n                    $this->img->current_color = $colors[$i];\n                    $this->img->Line($x,$yt,$x,$yb);\n                    $x += $delta;\n                }\n                break;\n\n            case GRAD_HOR:\n                $steps = ceil(abs($yb-$yt)+1);\n                $delta = $yb >= $yt ? 1 : -1;\n                $this->GetColArray($from_color,$to_color,$steps,$colors,$this->numcolors);\n                for($i=0,$y=$yt; $i < $steps; ++$i) {\n                    $this->img->current_color = $colors[$i];\n                    $this->img->Line($xl,$y,$xr,$y);\n                    $y += $delta;\n                }\n                break;\n\n            case GRAD_MIDHOR:\n                $steps = ceil(abs($yb-$yt)/2);\n                $delta = $yb >= $yt ? 1 : -1;\n                $this->GetColArray($from_color,$to_color,$steps,$colors,$this->numcolors);\n                for($y=$yt, $i=0; $i < $steps;  ++$i) {\n                    $this->img->current_color = $colors[$i];\n                    $this->img->Line($xl,$y,$xr,$y);\n                    $y += $delta;\n                }\n                --$i;\n                if( abs($yb-$yt) % 2 == 1 ) {\n                    --$steps;\n                }\n                for($j=0; $j < $steps; ++$j, --$i) {\n                    $this->img->current_color = $colors[$i];\n                    $this->img->Line($xl,$y,$xr,$y);\n                    $y += $delta;\n                }\n                $this->img->Line($xl,$y,$xr,$y);\n                break;\n\n            case GRAD_MIDVER:\n                $steps = ceil(abs($xr-$xl)/2);\n                $delta = $xr>=$xl ? 1 : -1;\n                $this->GetColArray($from_color,$to_color,$steps,$colors,$this->numcolors);\n                for($x=$xl, $i=0; $i < $steps; ++$i) {\n                    $this->img->current_color = $colors[$i];\n                    $this->img->Line($x,$yb,$x,$yt);\n                    $x += $delta;\n                }\n                --$i;\n                if( abs($xr-$xl) % 2 == 1 ) {\n                    --$steps;\n                }\n                for($j=0; $j < $steps; ++$j, --$i) {\n                    $this->img->current_color = $colors[$i];\n                    $this->img->Line($x,$yb,$x,$yt);\n                    $x += $delta;\n                }\n                $this->img->Line($x,$yb,$x,$yt);\n                break;\n\n            case GRAD_WIDE_MIDVER:\n                $diff = ceil(abs($xr-$xl));\n                $steps = floor(abs($diff)/3);\n                $firststep = $diff - 2*$steps ;\n                $delta = $xr >= $xl ? 1 : -1;\n                $this->GetColArray($from_color,$to_color,$firststep,$colors,$this->numcolors);\n                for($x=$xl, $i=0; $i < $firststep; ++$i) {\n                    $this->img->current_color = $colors[$i];\n                    $this->img->Line($x,$yb,$x,$yt);\n                    $x += $delta;\n                }\n                --$i;\n                $this->img->current_color = $colors[$i];\n                for($j=0; $j< $steps; ++$j) {\n                    $this->img->Line($x,$yb,$x,$yt);\n                    $x += $delta;\n                }\n\n                for($j=0; $j < $steps; ++$j, --$i) {\n                    $this->img->current_color = $colors[$i];\n                    $this->img->Line($x,$yb,$x,$yt);\n                    $x += $delta;\n                }\n                break;\n\n            case GRAD_WIDE_MIDHOR:\n                $diff = ceil(abs($yb-$yt));\n                $steps = floor(abs($diff)/3);\n                $firststep = $diff - 2*$steps ;\n                $delta = $yb >= $yt? 1 : -1;\n                $this->GetColArray($from_color,$to_color,$firststep,$colors,$this->numcolors);\n                for($y=$yt, $i=0; $i < $firststep;  ++$i) {\n                    $this->img->current_color = $colors[$i];\n                    $this->img->Line($xl,$y,$xr,$y);\n                    $y += $delta;\n                }\n                --$i;\n                $this->img->current_color = $colors[$i];\n                for($j=0; $j < $steps; ++$j) {\n                    $this->img->Line($xl,$y,$xr,$y);\n                    $y += $delta;\n                }\n                for($j=0; $j < $steps; ++$j, --$i) {\n                    $this->img->current_color = $colors[$i];\n                    $this->img->Line($xl,$y,$xr,$y);\n                    $y += $delta;\n                }\n                break;\n\n            case GRAD_LEFT_REFLECTION:\n                $steps1 = ceil(0.3*abs($xr-$xl));\n                $delta = $xr>=$xl ? 1 : -1;\n\n                $from_color = $this->img->rgb->Color($from_color);\n                $adj = 1.4;\n                $m = ($adj-1.0)*(255-min(255,min($from_color[0],min($from_color[1],$from_color[2]))));\n                $from_color2 = array(min(255,$from_color[0]+$m),\n                min(255,$from_color[1]+$m), min(255,$from_color[2]+$m));\n\n                $this->GetColArray($from_color2,$to_color,$steps1,$colors,$this->numcolors);\n                $n = count($colors);\n                for($x=$xl, $i=0; $i < $steps1 && $i < $n; ++$i) {\n                    $this->img->current_color = $colors[$i];\n                    $this->img->Line($x,$yb,$x,$yt);\n                    $x += $delta;\n                }\n                $steps2 = max(1,ceil(0.08*abs($xr-$xl)));\n                $this->img->SetColor($to_color);\n                for($j=0; $j< $steps2; ++$j) {\n                    $this->img->Line($x,$yb,$x,$yt);\n                    $x += $delta;\n                }\n                $steps = abs($xr-$xl)-$steps1-$steps2;\n                $this->GetColArray($to_color,$from_color,$steps,$colors,$this->numcolors);\n                $n = count($colors);\n                for($i=0; $i < $steps && $i < $n; ++$i) {\n                    $this->img->current_color = $colors[$i];\n                    $this->img->Line($x,$yb,$x,$yt);\n                    $x += $delta;\n                }\n                break;\n\n            case GRAD_RIGHT_REFLECTION:\n                $steps1 = ceil(0.7*abs($xr-$xl));\n                $delta = $xr>=$xl ? 1 : -1;\n\n                $this->GetColArray($from_color,$to_color,$steps1,$colors,$this->numcolors);\n                $n = count($colors);\n                for($x=$xl, $i=0; $i < $steps1 && $i < $n; ++$i) {\n                    $this->img->current_color = $colors[$i];\n                    $this->img->Line($x,$yb,$x,$yt);\n                    $x += $delta;\n                }\n                $steps2 = max(1,ceil(0.08*abs($xr-$xl)));\n                $this->img->SetColor($to_color);\n                for($j=0; $j< $steps2; ++$j) {\n                    $this->img->Line($x,$yb,$x,$yt);\n                    $x += $delta;\n                }\n\n                $from_color = $this->img->rgb->Color($from_color);\n                $adj = 1.4;\n                $m = ($adj-1.0)*(255-min(255,min($from_color[0],min($from_color[1],$from_color[2]))));\n                $from_color = array(min(255,$from_color[0]+$m),\n                min(255,$from_color[1]+$m), min(255,$from_color[2]+$m));\n\n                $steps = abs($xr-$xl)-$steps1-$steps2;\n                $this->GetColArray($to_color,$from_color,$steps,$colors,$this->numcolors);\n                $n = count($colors);\n                for($i=0; $i < $steps && $i < $n; ++$i) {\n                    $this->img->current_color = $colors[$i];\n                    $this->img->Line($x,$yb,$x,$yt);\n                    $x += $delta;\n                }\n                break;\n\n            case GRAD_CENTER:\n                $steps = ceil(min(($yb-$yt)+1,($xr-$xl)+1)/2);\n                $this->GetColArray($from_color,$to_color,$steps,$colors,$this->numcolors);\n                $dx = ($xr-$xl)/2;\n                $dy = ($yb-$yt)/2;\n                $x=$xl;$y=$yt;$x2=$xr;$y2=$yb;\n                $n = count($colors);\n                for($x=$xl, $i=0; $x < $xl+$dx && $y < $yt+$dy && $i < $n; ++$x, ++$y, --$x2, --$y2, ++$i) {\n                    $this->img->current_color = $colors[$i];\n                    $this->img->Rectangle($x,$y,$x2,$y2);\n                }\n                $this->img->Line($x,$y,$x2,$y2);\n                break;\n\n            case GRAD_RAISED_PANEL:\n                // right to left\n                $steps1 = $xr-$xl;\n                $delta = $xr>=$xl ? 1 : -1;\n                $this->GetColArray($to_color,$from_color,$steps1,$colors,$this->numcolors);\n                $n = count($colors);\n                for($x=$xl, $i=0; $i < $steps1 && $i < $n; ++$i) {\n                    $this->img->current_color = $colors[$i];\n                    $this->img->Line($x,$yb,$x,$yt);\n                    $x += $delta;\n                }\n\n                // left to right\n                $xr -= 3;\n                $xl += 3;\n                $yb -= 3;\n                $yt += 3;\n                $steps2 = $xr-$xl;\n                $delta = $xr>=$xl ? 1 : -1;\n                for($x=$xl, $j=$steps2; $j >= 0; --$j) {\n                    $this->img->current_color = $colors[$j];\n                    $this->img->Line($x,$yb,$x,$yt);\n                    $x += $delta;\n                }\n                break;\n\n            case GRAD_DIAGONAL:\n                // use the longer dimension to determine the required number of steps.\n                // first loop draws from one corner to the mid-diagonal and the second\n                // loop draws from the mid-diagonal to the opposing corner.\n                if($xr-$xl > $yb - $yt) {\n                    // width is greater than height -> use x-dimension for steps\n                    $steps = $xr-$xl;\n                    $delta = $xr>=$xl ? 1 : -1;\n                    $this->GetColArray($from_color,$to_color,$steps*2,$colors,$this->numcolors);\n                    $n = count($colors);\n\n                    for($x=$xl, $i=0; $i < $steps && $i < $n; ++$i) {\n                        $this->img->current_color = $colors[$i];\n                        $y = $yt+($i/$steps)*($yb-$yt)*$delta;\n                        $this->img->Line($x,$yt,$xl,$y);\n                        $x += $delta;\n                    }\n\n                    for($x=$xl, $i = 0; $i < $steps && $i < $n; ++$i) {\n                        $this->img->current_color = $colors[$steps+$i];\n                        $y = $yt+($i/$steps)*($yb-$yt)*$delta;\n                        $this->img->Line($x,$yb,$xr,$y);\n                        $x += $delta;\n                    }\n                } else {\n                    // height is greater than width -> use y-dimension for steps\n                    $steps = $yb-$yt;\n                    $delta = $yb>=$yt ? 1 : -1;\n                    $this->GetColArray($from_color,$to_color,$steps*2,$colors,$this->numcolors);\n                    $n = count($colors);\n\n                    for($y=$yt, $i=0; $i < $steps && $i < $n; ++$i) {\n                        $this->img->current_color = $colors[$i];\n                        $x = $xl+($i/$steps)*($xr-$xl)*$delta;\n                        $this->img->Line($x,$yt,$xl,$y);\n                        $y += $delta;\n                    }\n\n                    for($y=$yt, $i = 0; $i < $steps && $i < $n; ++$i) {\n                        $this->img->current_color = $colors[$steps+$i];\n                        $x = $xl+($i/$steps)*($xr-$xl)*$delta;\n                        $this->img->Line($x,$yb,$xr,$y);\n                        $x += $delta;\n                    }\n\n                }\n                break;\n\n            default:\n                JpGraphError::RaiseL(7001,$style);\n                //(\"Unknown gradient style (=$style).\");\n                break;\n        }\n    }\n\n    // Fill a special case of a polygon with a flat bottom\n    // with a gradient. Can be used for filled line plots.\n    // Please note that this is NOT a generic gradient polygon fill\n    // routine. It assumes that the bottom is flat (like a drawing\n    // of a mountain)\n    function FilledFlatPolygon($pts,$from_color,$to_color) {\n        if( count($pts) == 0 ) return;\n\n        $maxy=$pts[1];\n        $miny=$pts[1];\n        $n = count($pts) ;\n        for( $i=0, $idx=0; $i < $n; $i += 2) {\n            $x = round($pts[$i]);\n            $y = round($pts[$i+1]);\n            $miny = min($miny,$y);\n            $maxy = max($maxy,$y);\n        }\n\n        $colors = array();\n        $this->GetColArray($from_color,$to_color,abs($maxy-$miny)+1,$colors,$this->numcolors);\n        for($i=$miny, $idx=0; $i <= $maxy; ++$i ) {\n            $colmap[$i] = $colors[$idx++];\n        }\n\n        $n = count($pts)/2 ;\n        $idx = 0 ;\n        while( $idx < $n-1 ) {\n            $p1 = array(round($pts[$idx*2]),round($pts[$idx*2+1]));\n            $p2 = array(round($pts[++$idx*2]),round($pts[$idx*2+1]));\n\n            // Find the largest rectangle we can fill\n            $y = max($p1[1],$p2[1]) ;\n            for($yy=$maxy; $yy > $y; --$yy) {\n                $this->img->current_color = $colmap[$yy];\n                $this->img->Line($p1[0],$yy,$p2[0]-1,$yy);\n            }\n\n            if( $p1[1] == $p2[1] ) {\n                continue;\n            }\n\n            // Fill the rest using lines (slow...)\n            $slope = ($p2[0]-$p1[0])/($p1[1]-$p2[1]);\n            $x1 = $p1[0];\n            $x2 = $p2[0]-1;\n            $start = $y;\n            if( $p1[1] > $p2[1] ) {\n                while( $y >= $p2[1] ) {\n                    $x1=$slope*($start-$y)+$p1[0];\n                    $this->img->current_color = $colmap[$y];\n                    $this->img->Line($x1,$y,$x2,$y);\n                    --$y;\n                }\n            }\n            else {\n                while( $y >= $p1[1] ) {\n                    $x2=$p2[0]+$slope*($start-$y);\n                    $this->img->current_color = $colmap[$y];\n                    $this->img->Line($x1,$y,$x2,$y);\n                    --$y;\n                }\n            }\n        }\n    }\n\n    //---------------\n    // PRIVATE METHODS\n    // Add to the image color map the necessary colors to do the transition\n    // between the two colors using $numcolors intermediate colors\n    function GetColArray($from_color,$to_color,$arr_size,&$colors,$numcols=100) {\n        if( $arr_size==0 ) {\n            return;\n        }\n\n        // If color is given as text get it's corresponding r,g,b values\n        $from_color = $this->img->rgb->Color($from_color);\n        $to_color = $this->img->rgb->Color($to_color);\n\n        $rdelta=($to_color[0]-$from_color[0])/$numcols;\n        $gdelta=($to_color[1]-$from_color[1])/$numcols;\n        $bdelta=($to_color[2]-$from_color[2])/$numcols;\n        $colorsperstep = $numcols/$arr_size;\n        $prevcolnum = -1;\n        $from_alpha = floatval($from_color[3]);\n        $to_alpha = floatval($to_color[3]);\n        $adelta = ( $to_alpha - $from_alpha ) / $numcols ;\n        for ($i=0; $i < $arr_size; ++$i) {\n            $colnum = floor($colorsperstep*$i);\n            if ( $colnum == $prevcolnum ) {\n                $colors[$i] = $colidx;\n            }\n            else {\n                $r = floor($from_color[0] + $colnum*$rdelta);\n                $g = floor($from_color[1] + $colnum*$gdelta);\n                $b = floor($from_color[2] + $colnum*$bdelta);\n                $alpha = $from_alpha + $colnum*$adelta;\n                $colidx = $this->img->rgb->Allocate(sprintf(\"#%02x%02x%02x\",$r,$g,$b),$alpha);\n                $colors[$i] = $colidx;\n            }\n            $prevcolnum = $colnum;\n        }\n    }\n} // Class\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_iconplot.php",
    "content": "<?php\n//=======================================================================\n// File:        JPGRAPH_ICONPLOT.PHP\n// Description: Extension module to add icons to plots\n// Created:     2004-02-18\n// Ver:         $Id: jpgraph_iconplot.php 1404 2009-06-28 15:25:41Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\n\n//===================================================\n// CLASS IconPlot\n// Description: Make it possible to add a (small) image\n// to the graph\n//===================================================\nclass IconPlot {\n    public $iX=0,$iY=0,$iScale=1.0,$iMix=100;\n    private $iHorAnchor='left',$iVertAnchor='top';\n    private $iFile='';\n    private $iAnchors = array('left','right','top','bottom','center');\n    private $iCountryFlag='',$iCountryStdSize=3;\n    private $iScalePosY=null,$iScalePosX=null;\n    private $iImgString='';\n\n\n    function __construct($aFile=\"\",$aX=0,$aY=0,$aScale=1.0,$aMix=100) {\n        $this->iFile = $aFile;\n        $this->iX=$aX;\n        $this->iY=$aY;\n        $this->iScale= $aScale;\n        if( $aMix < 0 || $aMix > 100 ) {\n            JpGraphError::RaiseL(8001); //('Mix value for icon must be between 0 and 100.');\n        }\n        $this->iMix = $aMix ;\n    }\n\n    function SetCountryFlag($aFlag,$aX=0,$aY=0,$aScale=1.0,$aMix=100,$aStdSize=3) {\n        $this->iCountryFlag = $aFlag;\n        $this->iX=$aX;\n        $this->iY=$aY;\n        $this->iScale= $aScale;\n        if( $aMix < 0 || $aMix > 100 ) {\n            JpGraphError::RaiseL(8001);//'Mix value for icon must be between 0 and 100.');\n        }\n        $this->iMix = $aMix;\n        $this->iCountryStdSize = $aStdSize;\n    }\n\n    function SetPos($aX,$aY) {\n        $this->iX=$aX;\n        $this->iY=$aY;\n    }\n\n    function CreateFromString($aStr) {\n        $this->iImgString = $aStr;\n    }\n\n    function SetScalePos($aX,$aY) {\n        $this->iScalePosX = $aX;\n        $this->iScalePosY = $aY;\n    }\n\n    function SetScale($aScale) {\n        $this->iScale = $aScale;\n    }\n\n    function SetMix($aMix) {\n        if( $aMix < 0 || $aMix > 100 ) {\n            JpGraphError::RaiseL(8001);//('Mix value for icon must be between 0 and 100.');\n        }\n        $this->iMix = $aMix ;\n    }\n\n    function SetAnchor($aXAnchor='left',$aYAnchor='center') {\n        if( !in_array($aXAnchor,$this->iAnchors) ||\n        !in_array($aYAnchor,$this->iAnchors) ) {\n            JpGraphError::RaiseL(8002);//(\"Anchor position for icons must be one of 'top', 'bottom', 'left', 'right' or 'center'\");\n        }\n        $this->iHorAnchor=$aXAnchor;\n        $this->iVertAnchor=$aYAnchor;\n    }\n\n    function PreStrokeAdjust($aGraph) {\n        // Nothing to do ...\n    }\n\n    function DoLegend($aGraph) {\n        // Nothing to do ...\n    }\n\n    function Max() {\n        return array(false,false);\n    }\n\n\n    // The next four function are framework function tht gets called\n    // from Gantt and is not menaiungfull in the context of Icons but\n    // they must be implemented to avoid errors.\n    function GetMaxDate() { return false;   }\n    function GetMinDate() { return false;   }\n    function GetLineNbr() { return 0;   }\n    function GetAbsHeight() {return 0;  }\n\n\n    function Min() {\n        return array(false,false);\n    }\n\n    function StrokeMargin(&$aImg) {\n        return true;\n    }\n\n    function Stroke($aImg,$axscale=null,$ayscale=null) {\n        $this->StrokeWithScale($aImg,$axscale,$ayscale);\n    }\n\n    function StrokeWithScale($aImg,$axscale,$ayscale) {\n        if( $this->iScalePosX === null || $this->iScalePosY === null ||\n        \t$axscale === null || $ayscale === null ) {\n            $this->_Stroke($aImg);\n        }\n        else {\n            $this->_Stroke($aImg,\n            \tround($axscale->Translate($this->iScalePosX)),\n            \tround($ayscale->Translate($this->iScalePosY)));\n        }\n    }\n\n    function GetWidthHeight() {\n        $dummy=0;\n        return $this->_Stroke($dummy,null,null,true);\n    }\n\n    function _Stroke($aImg,$x=null,$y=null,$aReturnWidthHeight=false) {\n        if( $this->iFile != '' && $this->iCountryFlag != '' ) {\n            JpGraphError::RaiseL(8003);//('It is not possible to specify both an image file and a country flag for the same icon.');\n        }\n        if( $this->iFile != '' ) {\n            $gdimg = Graph::LoadBkgImage('',$this->iFile);\n        }\n        elseif( $this->iImgString != '') {\n            $gdimg = Image::CreateFromString($this->iImgString);\n        }\n\n        else {\n            if( ! class_exists('FlagImages',false) ) {\n                JpGraphError::RaiseL(8004);//('In order to use Country flags as icons you must include the \"jpgraph_flags.php\" file.');\n            }\n            $fobj = new FlagImages($this->iCountryStdSize);\n            $dummy='';\n            $gdimg = $fobj->GetImgByName($this->iCountryFlag,$dummy);\n        }\n\n        $iconw = imagesx($gdimg);\n        $iconh = imagesy($gdimg);\n\n        if( $aReturnWidthHeight ) {\n            return array(round($iconw*$this->iScale),round($iconh*$this->iScale));\n        }\n\n        if( $x !== null && $y !== null ) {\n            $this->iX = $x; $this->iY = $y;\n        }\n        if( $this->iX >= 0  && $this->iX <= 1.0 ) {\n            $w = imagesx($aImg->img);\n            $this->iX = round($w*$this->iX);\n        }\n        if( $this->iY >= 0  && $this->iY <= 1.0 ) {\n            $h = imagesy($aImg->img);\n            $this->iY = round($h*$this->iY);\n        }\n\n        if( $this->iHorAnchor == 'center' )\n        $this->iX -= round($iconw*$this->iScale/2);\n        if( $this->iHorAnchor == 'right' )\n        $this->iX -= round($iconw*$this->iScale);\n        if( $this->iVertAnchor == 'center' )\n        $this->iY -= round($iconh*$this->iScale/2);\n        if( $this->iVertAnchor == 'bottom' )\n        $this->iY -= round($iconh*$this->iScale);\n\n        $aImg->CopyMerge($gdimg,$this->iX,$this->iY,0,0,\n        round($iconw*$this->iScale),round($iconh*$this->iScale),\n        $iconw,$iconh,\n        $this->iMix);\n    }\n}\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_imgtrans.php",
    "content": "<?php\n//=======================================================================\n// File:        JPGRAPH_IMGTRANS.PHP\n// Description: Extension for JpGraph to do some simple img transformations\n// Created:     2003-09-06\n// Ver:         $Id: jpgraph_imgtrans.php 1106 2009-02-22 20:16:35Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\n//------------------------------------------------------------------------\n// Class ImgTrans\n// Perform some simple image transformations.\n//------------------------------------------------------------------------\nclass ImgTrans {\n    private $gdImg=null;\n\n    function __construct($aGdImg) {\n        // Constructor\n        $this->gdImg = $aGdImg;\n    }\n\n    // --------------------------------------------------------------------\n    // _TransVert3D() and _TransHor3D() are helper methods to\n    // Skew3D().\n    // --------------------------------------------------------------------\n    function _TransVert3D($aGdImg,$aHorizon=100,$aSkewDist=120,$aDir=SKEW3D_DOWN,$aMinSize=true,$aFillColor='#FFFFFF',$aQuality=false,$aBorder=false,$aHorizonPos=0.5) {\n\n\n        // Parameter check\n    if( $aHorizonPos < 0 || $aHorizonPos > 1.0 ) {\n        JpGraphError::RaiseL(9001);\n        //(\"Value for image transformation out of bounds.\\nVanishing point on horizon must be specified as a value between 0 and 1.\");\n    }\n\n    $w = imagesx($aGdImg);\n    $h = imagesy($aGdImg);\n\n    // Create new image\n    $ww = $w;\n    if( $aMinSize )\n    $hh = ceil($h * $aHorizon / ($aSkewDist+$h));\n    else\n    $hh = $h;\n\n    $newgdh = imagecreatetruecolor($ww,$hh);\n    $crgb = new RGB( $newgdh );\n    $fillColor = $crgb->Allocate($aFillColor);\n    imagefilledrectangle($newgdh,0,0,$ww-1,$hh-1,$fillColor);\n\n    if( $aBorder ) {\n        $colidx = $crgb->Allocate($aBorder);\n        imagerectangle($newgdh,0,0,$ww-1,$hh-1,$colidx);\n    }\n\n    $mid = round($w * $aHorizonPos);\n\n    $last=$h;\n    for($y=0; $y < $h; ++$y) {\n\n        $yp = $h-$y-1;\n        $yt = floor($yp * $aHorizon / ($aSkewDist + $yp));\n\n        if( !$aQuality ) {\n            if( $last <= $yt ) continue ;\n            $last = $yt;\n        }\n\n        for($x=0; $x < $w; ++$x) {\n            $xt = ($x-$mid) * $aSkewDist / ($aSkewDist + $yp);\n            if( $aDir == SKEW3D_UP )\n            $rgb = imagecolorat($aGdImg,$x,$h-$y-1);\n            else\n            $rgb = imagecolorat($aGdImg,$x,$y);\n            $r = ($rgb >> 16) & 0xFF;\n            $g = ($rgb >> 8) & 0xFF;\n            $b = $rgb & 0xFF;\n            $colidx = imagecolorallocate($newgdh,$r,$g,$b);\n            $xt = round($xt+$mid);\n            if( $aDir == SKEW3D_UP ) {\n                $syt = $yt;\n            }\n            else {\n                $syt = $hh-$yt-1;\n            }\n\n            if( !empty($set[$yt]) ) {\n                $nrgb = imagecolorat($newgdh,$xt,$syt);\n                $nr = ($nrgb >> 16) & 0xFF;\n                $ng = ($nrgb >> 8) & 0xFF;\n                $nb = $nrgb & 0xFF;\n                $colidx = imagecolorallocate($newgdh,floor(($r+$nr)/2),\n                floor(($g+$ng)/2),floor(($b+$nb)/2));\n            }\n\n            imagesetpixel($newgdh,$xt,$syt,$colidx);\n        }\n\n        $set[$yt] = true;\n    }\n\n    return $newgdh;\n    }\n\n    // --------------------------------------------------------------------\n    // _TransVert3D() and _TransHor3D() are helper methods to\n    // Skew3D().\n    // --------------------------------------------------------------------\n    function _TransHor3D($aGdImg,$aHorizon=100,$aSkewDist=120,$aDir=SKEW3D_LEFT,$aMinSize=true,$aFillColor='#FFFFFF',$aQuality=false,$aBorder=false,$aHorizonPos=0.5) {\n\n        $w = imagesx($aGdImg);\n        $h = imagesy($aGdImg);\n\n        // Create new image\n        $hh = $h;\n        if( $aMinSize )\n        $ww = ceil($w * $aHorizon / ($aSkewDist+$w));\n        else\n        $ww = $w;\n\n        $newgdh = imagecreatetruecolor($ww,$hh);\n        $crgb = new RGB( $newgdh );\n        $fillColor = $crgb->Allocate($aFillColor);\n        imagefilledrectangle($newgdh,0,0,$ww-1,$hh-1,$fillColor);\n\n        if( $aBorder ) {\n            $colidx = $crgb->Allocate($aBorder);\n            imagerectangle($newgdh,0,0,$ww-1,$hh-1,$colidx);\n        }\n\n        $mid = round($h * $aHorizonPos);\n\n        $last = -1;\n        for($x=0; $x < $w-1; ++$x) {\n            $xt = floor($x * $aHorizon / ($aSkewDist + $x));\n            if( !$aQuality ) {\n                if( $last >= $xt ) continue ;\n                $last = $xt;\n            }\n\n            for($y=0; $y < $h; ++$y) {\n                $yp = $h-$y-1;\n                $yt = ($yp-$mid) * $aSkewDist / ($aSkewDist + $x);\n\n                if( $aDir == SKEW3D_RIGHT )\n                $rgb = imagecolorat($aGdImg,$w-$x-1,$y);\n                else\n                $rgb = imagecolorat($aGdImg,$x,$y);\n                $r = ($rgb >> 16) & 0xFF;\n                $g = ($rgb >> 8) & 0xFF;\n                $b = $rgb & 0xFF;\n                $colidx = imagecolorallocate($newgdh,$r,$g,$b);\n                $yt = floor($hh-$yt-$mid-1);\n                if( $aDir == SKEW3D_RIGHT ) {\n                    $sxt = $ww-$xt-1;\n                }\n                else\n                $sxt = $xt ;\n\n                if( !empty($set[$xt]) ) {\n                    $nrgb = imagecolorat($newgdh,$sxt,$yt);\n                    $nr = ($nrgb >> 16) & 0xFF;\n                    $ng = ($nrgb >> 8) & 0xFF;\n                    $nb = $nrgb & 0xFF;\n                    $colidx = imagecolorallocate($newgdh,floor(($r+$nr)/2),\n                    floor(($g+$ng)/2),floor(($b+$nb)/2));\n                }\n                imagesetpixel($newgdh,$sxt,$yt,$colidx);\n            }\n\n            $set[$xt] = true;\n        }\n\n        return $newgdh;\n    }\n\n    // --------------------------------------------------------------------\n    // Skew image for the apperance of a 3D effect\n    // This transforms an image into a 3D-skewed version\n    // of the image. The transformation is specified by giving the height\n    // of the artificial horizon and specifying a \"skew\" factor which\n    // is the distance on the horizon line between the point of\n    // convergence and perspective line.\n    //\n    // The function returns the GD handle of the transformed image\n    // leaving the original image untouched.\n    //\n    // Parameters:\n    // * $aGdImg, GD handle to the image to be transformed\n    // * $aHorizon, Distance to the horizon\n    // * $aSkewDist, Distance from the horizon point of convergence\n    //   on the horizon line to the perspective points. A larger\n    //   value will fore-shorten the image more\n    // * $aDir, parameter specifies type of convergence. This of this\n    //   as the walls in a room you are looking at. This specifies if the\n    //   image should be applied on the left,right,top or bottom walls.\n    // * $aMinSize, true=make the new image just as big as needed,\n    //   false = keep the image the same size as the original image\n    // * $aFillColor, Background fill color in the image\n    // * $aHiQuality, true=performa some interpolation that improves\n    //   the image quality but at the expense of performace. Enabling\n    //   high quality will have a dramatic effect on the time it takes\n    //   to transform an image.\n    // * $aBorder, if set to anything besides false this will draw a\n    //   a border of the speciied color around the image\n    // --------------------------------------------------------------------\n    function Skew3D($aHorizon=120,$aSkewDist=150,$aDir=SKEW3D_DOWN,$aHiQuality=false,$aMinSize=true,$aFillColor='#FFFFFF',$aBorder=false) {\n        return $this->_Skew3D($this->gdImg,$aHorizon,$aSkewDist,$aDir,$aHiQuality,\n        $aMinSize,$aFillColor,$aBorder);\n    }\n\n    function _Skew3D($aGdImg,$aHorizon=120,$aSkewDist=150,$aDir=SKEW3D_DOWN,$aHiQuality=false,$aMinSize=true,$aFillColor='#FFFFFF',$aBorder=false) {\n        if( $aDir == SKEW3D_DOWN || $aDir == SKEW3D_UP )\n        return $this->_TransVert3D($aGdImg,$aHorizon,$aSkewDist,$aDir,$aMinSize,$aFillColor,$aHiQuality,$aBorder);\n        else\n        return $this->_TransHor3D($aGdImg,$aHorizon,$aSkewDist,$aDir,$aMinSize,$aFillColor,$aHiQuality,$aBorder);\n\n    }\n\n}\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_led.php",
    "content": "<?php\n//=======================================================================\n// File:        JPGRAPH_LED.PHP\n// Description: Module to generate Dotted LED-like digits\n// Created:     2006-11-26\n// Ver:         $Id: jpgraph_led.php 1674 2009-07-22 19:42:23Z ljp $\n//\n// Copyright 2006 (c) Asial Corporation. All rights reserved.\n//\n// Changed: 2007-08-06 by Alexander Kurochkin (inspector@list.ru)\n//========================================================================\n\n// Constants for color schema\nDEFINE('LEDC_RED', 0);\nDEFINE('LEDC_GREEN', 1);\nDEFINE('LEDC_BLUE', 2);\nDEFINE('LEDC_YELLOW', 3);\nDEFINE('LEDC_GRAY', 4);\nDEFINE('LEDC_CHOCOLATE', 5);\nDEFINE('LEDC_PERU', 6);\nDEFINE('LEDC_GOLDENROD', 7);\nDEFINE('LEDC_KHAKI', 8);\nDEFINE('LEDC_OLIVE', 9);\nDEFINE('LEDC_LIMEGREEN', 10);\nDEFINE('LEDC_FORESTGREEN', 11);\nDEFINE('LEDC_TEAL', 12);\nDEFINE('LEDC_STEELBLUE', 13);\nDEFINE('LEDC_NAVY', 14);\nDEFINE('LEDC_INVERTGRAY', 15);\n\n// Check that mb_strlen() is available\nif( ! function_exists('mb_strlen') ) {\n    JpGraphError::RaiseL(25500);\n    //'Multibyte strings must be enabled in the PHP installation in order to run the LED module\n    // so that the function mb_strlen() is available. See PHP documentation for more information.'\n}\n\n//========================================================================\n// CLASS DigitalLED74\n// Description:\n// Construct a number as an image that looks like LED numbers in a\n// 7x4 digital matrix\n//========================================================================\nclass DigitalLED74\n{\n    private $iLED_X = 4, $iLED_Y=7,\n\n        // fg-up, fg-down, bg\n        $iColorSchema = array(\n            LEDC_RED  => array('red','darkred:0.9','red:0.3'),// 0\n            LEDC_GREEN  => array('green','darkgreen','green:0.3'),// 1\n            LEDC_BLUE  => array('lightblue:0.9','darkblue:0.85','darkblue:0.7'),// 2\n            LEDC_YELLOW  => array('yellow','yellow:0.4','yellow:0.3'),// 3\n            LEDC_GRAY  => array('gray:1.4','darkgray:0.85','darkgray:0.7'),\n            LEDC_CHOCOLATE => array('chocolate','chocolate:0.7','chocolate:0.5'),\n            LEDC_PERU  => array('peru:0.95','peru:0.6','peru:0.5'),\n            LEDC_GOLDENROD => array('goldenrod','goldenrod:0.6','goldenrod:0.5'),\n            LEDC_KHAKI  => array('khaki:0.7','khaki:0.4','khaki:0.3'),\n            LEDC_OLIVE  => array('#808000','#808000:0.7','#808000:0.6'),\n            LEDC_LIMEGREEN => array('limegreen:0.9','limegreen:0.5','limegreen:0.4'),\n            LEDC_FORESTGREEN => array('forestgreen','forestgreen:0.7','forestgreen:0.5'),\n            LEDC_TEAL  => array('teal','teal:0.7','teal:0.5'),\n            LEDC_STEELBLUE => array('steelblue','steelblue:0.65','steelblue:0.5'),\n            LEDC_NAVY  => array('navy:1.3','navy:0.95','navy:0.8'),//14\n            LEDC_INVERTGRAY => array('darkgray','lightgray:1.5','white')//15\n            ),\n\n        /* Each line of the character is encoded as a 4 bit value\n         0      ____\n         1      ___x\n         2      __x_\n         3      __xx\n         4      _x__\n         5      _x_x\n         6      _xx_\n         7      _xxx\n         8      x___\n         9      x__x\n         10     x_x_\n         11     x_xx\n         12     xx__\n         13     xx_x\n         14     xxx_\n         15     xxxx\n        */\n\n        $iLEDSpec = array(\n            0 => array(6,9,11,15,13,9,6),\n            1 => array(2,6,10,2,2,2,2),\n            2 => array(6,9,1,2,4,8,15),\n            3 => array(6,9,1,6,1,9,6),\n            4 => array(1,3,5,9,15,1,1),\n            5 => array(15,8,8,14,1,9,6),\n            6 => array(6,8,8,14,9,9,6),\n            7 => array(15,1,1,2,4,4,4),\n            8 => array(6,9,9,6,9,9,6),\n            9 => array(6,9,9,7,1,1,6),\n            '!' => array(4,4,4,4,4,0,4),\n            '?' => array(6,9,1,2,2,0,2),\n            '#' => array(0,9,15,9,15,9,0),\n            '@' => array(6,9,11,11,10,9,6),\n            '-' => array(0,0,0,15,0,0,0),\n            '_' => array(0,0,0,0,0,0,15),\n            '=' => array(0,0,15,0,15,0,0),\n            '+' => array(0,0,4,14,4,0,0),\n            '|' => array(4,4,4,4,4,4,4), //vertical line, used for simulate rus 'Ы'\n            ',' => array(0,0,0,0,0,12,4),\n            '.' => array(0,0,0,0,0,12,12),\n            ':' => array(12,12,0,0,0,12,12),\n            ';' => array(12,12,0,0,0,12,4),\n            '[' => array(3,2,2,2,2,2,3),\n            ']' => array(12,4,4,4,4,4,12),\n            '(' => array(1,2,2,2,2,2,1),\n            ')' => array(8,4,4,4,4,4,8),\n            '{' => array(3,2,2,6,2,2,3),\n            '}' => array(12,4,4,6,4,4,12),\n            '<' => array(1,2,4,8,4,2,1),\n            '>' => array(8,4,2,1,2,4,8),\n            '*' => array(9,6,15,6,9,0,0),\n            '\"' => array(10,10,0,0,0,0,0),\n            '\\'' => array(4,4,0,0,0,0,0),\n            '`' => array(4,2,0,0,0,0,0),\n            '~' => array(13,11,0,0,0,0,0),\n            '^' => array(4,10,0,0,0,0,0),\n            '\\\\' => array(8,8,4,6,2,1,1),\n            '/' => array(1,1,2,6,4,8,8),\n            '%' => array(1,9,2,6,4,9,8),\n            '&' => array(0,4,10,4,11,10,5),\n            '$' => array(2,7,8,6,1,14,4),\n            ' ' => array(0,0,0,0,0,0,0),\n            '•' => array(0,0,6,6,0,0,0), //149\n            '°' => array(14,10,14,0,0,0,0), //176\n            '†' => array(4,4,14,4,4,4,4), //134\n            '‡' => array(4,4,14,4,14,4,4), //135\n            '±' => array(0,4,14,4,0,14,0), //177\n            '‰' => array(0,4,2,15,2,4,0), //137 show right arrow\n            '™' => array(0,2,4,15,4,2,0), //156 show left arrow\n            'Ў' => array(0,0,8,8,0,0,0), //159 show small hi-stick - that need for simulate rus 'Ф'\n            \"\\t\" => array(8,8,8,0,0,0,0), //show hi-stick - that need for simulate rus 'У'\n            \"\\r\" => array(8,8,8,8,8,8,8), //vertical line - that need for simulate 'M', 'W' and rus 'М','Ш' ,'Щ'\n            \"\\n\" => array(15,15,15,15,15,15,15), //fill up - that need for simulate rus 'Ж'\n            \"Ґ\" => array(10,5,10,5,10,5,10), //chess\n            \"µ\" => array(15,0,15,0,15,0,15), //4 horizontal lines\n            // latin\n            'A' => array(6,9,9,15,9,9,9),\n            'B' => array(14,9,9,14,9,9,14),\n            'C' => array(6,9,8,8,8,9,6),\n            'D' => array(14,9,9,9,9,9,14),\n            'E' => array(15,8,8,14,8,8,15),\n            'F' => array(15,8,8,14,8,8,8),\n            'G' => array(6,9,8,8,11,9,6),\n            'H' => array(9,9,9,15,9,9,9),\n            'I' => array(14,4,4,4,4,4,14),\n            'J' => array(15,1,1,1,1,9,6),\n            'K' => array(8,9,10,12,12,10,9),\n            'L' => array(8,8,8,8,8,8,15),\n            'M' => array(8,13,10,8,8,8,8),// need to add \\r\n            'N' => array(9,9,13,11,9,9,9),\n            'O' => array(6,9,9,9,9,9,6),\n            'P' => array(14,9,9,14,8,8,8),\n            'Q' => array(6,9,9,9,13,11,6),\n            'R' => array(14,9,9,14,12,10,9),\n            'S' => array(6,9,8,6,1,9,6),\n            'T' => array(14,4,4,4,4,4,4),\n            'U' => array(9,9,9,9,9,9,6),\n            'V' => array(0,0,0,10,10,10,4),\n            'W' => array(8,8,8,8,10,13,8),// need to add \\r\n            'X' => array(9,9,6,6,6,9,9),\n            'Y' => array(10,10,10,10,4,4,4),\n            'Z' => array(15,1,2,6,4,8,15),\n            // russian utf-8\n            'А' => array(6,9,9,15,9,9,9),\n            'Б' => array(14,8,8,14,9,9,14),\n            'В' => array(14,9,9,14,9,9,14),\n            'Г' => array(15,8,8,8,8,8,8),\n            'Д' => array(14,9,9,9,9,9,14),\n            'Е' => array(15,8,8,14,8,8,15),\n            'Ё' => array(6,15,8,14,8,8,15),\n            //Ж is combine: >\\n<\n            'З' => array(6,9,1,2,1,9,6),\n            'И' => array(9,9,9,11,13,9,9),\n            'Й' => array(13,9,9,11,13,9,9),\n            'К' => array(9,10,12,10,9,9,9),\n            'Л' => array(7,9,9,9,9,9,9),\n            'М' => array(8,13,10,8,8,8,8),// need to add \\r\n            'Н' => array(9,9,9,15,9,9,9),\n            'О' => array(6,9,9,9,9,9,6),\n            'П' => array(15,9,9,9,9,9,9),\n            'Р' => array(14,9,9,14,8,8,8),\n            'С' => array(6,9,8,8,8,9,6),\n            'Т' => array(14,4,4,4,4,4,4),\n            'У' => array(9,9,9,7,1,9,6),\n            'Ф' => array(2,7,10,10,7,2,2),// need to add Ў\n            'Х' => array(9,9,6,6,6,9,9),\n            'Ц' => array(10,10,10,10,10,15,1),\n            'Ч' => array(9,9,9,7,1,1,1),\n            'Ш' => array(10,10,10,10,10,10,15),// \\r\n            'Щ' => array(10,10,10,10,10,15,0),// need to add \\r\n            'Ъ' => array(12,4,4,6,5,5,6),\n            'Ы' => array(8,8,8,14,9,9,14),// need to add |\n            'Ь' => array(8,8,8,14,9,9,14),\n            'Э' => array(6,9,1,7,1,9,6),\n            'Ю' => array(2,2,2,3,2,2,2),// need to add O\n            'Я' => array(7,9,9,7,3,5,9)\n            ),\n\n        $iSuperSampling = 3, $iMarg = 1, $iRad = 4;\n\n    function __construct($aRadius = 2, $aMargin= 0.6) {\n        $this->iRad = $aRadius;\n        $this->iMarg = $aMargin;\n    }\n\n    function SetSupersampling($aSuperSampling = 2) {\n        $this->iSuperSampling = $aSuperSampling;\n    }\n\n    function _GetLED($aLedIdx, $aColor = 0) {\n        $width=  $this->iLED_X*$this->iRad*2 +  ($this->iLED_X+1)*$this->iMarg + $this->iRad ;\n        $height= $this->iLED_Y*$this->iRad*2 +  ($this->iLED_Y)*$this->iMarg + $this->iRad * 2;\n\n        // Adjust radious for supersampling\n        $rad = $this->iRad * $this->iSuperSampling;\n\n        // Margin in between \"Led\" dots\n        $marg = $this->iMarg * $this->iSuperSampling;\n\n        $swidth = $width*$this->iSuperSampling;\n        $sheight = $height*$this->iSuperSampling;\n\n        $simg = new RotImage($swidth, $sheight, 0, DEFAULT_GFORMAT, false);\n        $simg->SetColor($this->iColorSchema[$aColor][2]);\n        $simg->FilledRectangle(0, 0, $swidth-1, $sheight-1);\n\n        if( array_key_exists($aLedIdx, $this->iLEDSpec) ) {\n            $d = $this->iLEDSpec[$aLedIdx];\n        }\n        else {\n            $d = array(0,0,0,0,0,0,0);\n        }\n\n        for($r = 0; $r < 7; ++$r) {\n            $dr = $d[$r];\n            for($c = 0; $c < 4; ++$c) {\n                if( ($dr & pow(2,3-$c)) !== 0 ) {\n                    $color = $this->iColorSchema[$aColor][0];\n                }\n                else {\n                    $color = $this->iColorSchema[$aColor][1];\n                }\n\n                $x = 2*$rad*$c+$rad + ($c+1)*$marg + $rad ;\n                $y = 2*$rad*$r+$rad + ($r+1)*$marg + $rad ;\n\n                $simg->SetColor($color);\n                $simg->FilledCircle($x,$y,$rad);\n            }\n        }\n\n        $img =  new Image($width, $height, DEFAULT_GFORMAT, false);\n        $img->Copy($simg->img, 0, 0, 0, 0, $width, $height, $swidth, $sheight);\n        $simg->Destroy();\n        unset($simg);\n        return $img;\n    }\n\n\n    function Stroke($aValStr, $aColor = 0, $aFileName = '') {\n    \t$this->StrokeNumber($aValStr, $aColor, $aFileName);\n    }\n\n\n    function StrokeNumber($aValStr, $aColor = 0, $aFileName = '') {\n        if( $aColor < 0 || $aColor >= sizeof($this->iColorSchema) ) {\n            $aColor = 0;\n        }\n\n        if(($n = mb_strlen($aValStr,'utf8')) == 0) {\n            $aValStr = ' ';\n            $n = 1;\n        }\n\n        for($i = 0; $i < $n; ++$i) {\n            $d = mb_substr($aValStr, $i, 1, 'utf8');\n            if(  ctype_digit($d) ) {\n                $d = (int)$d;\n            }\n            else {\n               $d = strtoupper($d);\n            }\n            $digit_img[$i] = $this->_GetLED($d, $aColor);\n        }\n\n        $w = imagesx($digit_img[0]->img);\n        $h = imagesy($digit_img[0]->img);\n\n        $number_img = new Image($w*$n, $h, DEFAULT_GFORMAT, false);\n\n        for($i = 0; $i < $n; ++$i) {\n            $number_img->Copy($digit_img[$i]->img, $i*$w, 0, 0, 0, $w, $h, $w, $h);\n        }\n\n        if( $aFileName != '' ) {\n            $number_img->Stream($aFileName);\n        } else {\n            $number_img->Headers();\n            $number_img->Stream();\n        }\n    }\n}\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_legend.inc.php",
    "content": "<?php\n//=======================================================================\n// File:        JPGRAPH_LEGEND.INC.PHP\n// Description: Class to handle the legend box in the graph that gives\n//              names on the data series. The number of rows and columns\n//              in the legend are user specifyable.\n// Created:     2001-01-08 (Refactored to separate file 2008-08-01)\n// Ver:         $Id: jpgraph_legend.inc.php 1926 2010-01-11 16:33:07Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\nDEFINE('_DEFAULT_LPM_SIZE',8); // Default Legend Plot Mark size\n\n\n//===================================================\n// CLASS Legend\n// Description: Responsible for drawing the box containing\n// all the legend text for the graph\n//===================================================\n\nclass Legend {\n    public $txtcol=array();\n    public $font_family=FF_DEFAULT,$font_style=FS_NORMAL,$font_size=8; // old. 12\n    private $color=array(120,120,120); // Default frame color\n    private $fill_color=array(245,245,245); // Default fill color\n    private $shadow=false; // Shadow around legend \"box\"\n    private $shadow_color='darkgray';\n    private $mark_abs_hsize=_DEFAULT_LPM_SIZE,$mark_abs_vsize=_DEFAULT_LPM_SIZE;\n    private $xmargin=10,$ymargin=0,$shadow_width=2;\n    private $xlmargin=4;\n    private $ylinespacing=5;\n    \n     // We need a separate margin since the baseline of the last text would coincide with the bottom otherwise\n    private $ybottom_margin = 8;\n    \n    private $xpos=0.05, $ypos=0.15, $xabspos=-1, $yabspos=-1;\n    private $halign=\"right\", $valign=\"top\";\n    private $font_color='black';\n    private $hide=false,$layout_n=1;\n    private $weight=1,$frameweight=1;\n    private $csimareas='';\n    private $reverse = false ;\n    private $bkg_gradtype=-1, $bkg_gradfrom='lightgray', $bkg_gradto='gray';\n\n    //---------------\n    // CONSTRUCTOR\n    function __construct() {\n        // Empty\n    }\n    //---------------\n    // PUBLIC METHODS\n    function Hide($aHide=true) {\n        $this->hide=$aHide;\n    }\n\n    function SetHColMargin($aXMarg) {\n        $this->xmargin = $aXMarg;\n    }\n\n    function SetVColMargin($aSpacing) {\n        $this->ylinespacing = $aSpacing ;\n    }\n\n    function SetLeftMargin($aXMarg) {\n        $this->xlmargin = $aXMarg;\n    }\n\n    // Synonym\n    function SetLineSpacing($aSpacing) {\n        $this->ylinespacing = $aSpacing ;\n    }\n\n    function SetShadow($aShow='gray',$aWidth=4) {\n        if( is_string($aShow) ) {\n            $this->shadow_color = $aShow;\n            $this->shadow=true;\n        }\n        else {\n            $this->shadow = $aShow;\n        }\n        $this->shadow_width = $aWidth;\n    }\n\n    function SetMarkAbsSize($aSize) {\n        $this->mark_abs_vsize = $aSize ;\n        $this->mark_abs_hsize = $aSize ;\n    }\n\n    function SetMarkAbsVSize($aSize) {\n        $this->mark_abs_vsize = $aSize ;\n    }\n\n    function SetMarkAbsHSize($aSize) {\n        $this->mark_abs_hsize = $aSize ;\n    }\n\n    function SetLineWeight($aWeight) {\n        $this->weight = $aWeight;\n    }\n\n    function SetFrameWeight($aWeight) {\n        $this->frameweight = $aWeight;\n    }\n\n    function SetLayout($aDirection=LEGEND_VERT) {\n        $this->layout_n = $aDirection==LEGEND_VERT ? 1 : 99 ;\n    }\n\n    function SetColumns($aCols) {\n        $this->layout_n = $aCols ;\n    }\n\n    function SetReverse($f=true) {\n        $this->reverse = $f ;\n    }\n\n    // Set color on frame around box\n    function SetColor($aFontColor,$aColor='black') {\n        $this->font_color=$aFontColor;\n        $this->color=$aColor;\n    }\n\n    function SetFont($aFamily,$aStyle=FS_NORMAL,$aSize=10) {\n        $this->font_family = $aFamily;\n        $this->font_style = $aStyle;\n        $this->font_size = $aSize;\n    }\n\n    function SetPos($aX,$aY,$aHAlign='right',$aVAlign='top') {\n        $this->Pos($aX,$aY,$aHAlign,$aVAlign);\n    }\n\n    function SetAbsPos($aX,$aY,$aHAlign='right',$aVAlign='top') {\n        $this->xabspos=$aX;\n        $this->yabspos=$aY;\n        $this->halign=$aHAlign;\n        $this->valign=$aVAlign;\n    }\n\n    function Pos($aX,$aY,$aHAlign='right',$aVAlign='top') {\n        if( !($aX<1 && $aY<1) ) {\n            JpGraphError::RaiseL(25120);//(\" Position for legend must be given as percentage in range 0-1\");\n        }\n        $this->xpos=$aX;\n        $this->ypos=$aY;\n        $this->halign=$aHAlign;\n        $this->valign=$aVAlign;\n    }\n\n    function SetFillColor($aColor) {\n        $this->fill_color=$aColor;\n    }\n\n    function Clear() {\n        $this->txtcol = array();\n    }\n\n    function Add($aTxt,$aColor,$aPlotmark='',$aLinestyle=0,$csimtarget='',$csimalt='',$csimwintarget='') {\n        $this->txtcol[]=array($aTxt,$aColor,$aPlotmark,$aLinestyle,$csimtarget,$csimalt,$csimwintarget);\n    }\n\n    function GetCSIMAreas() {\n        return $this->csimareas;\n    }\n\n    function SetBackgroundGradient($aFrom='navy',$aTo='silver',$aGradType=2) {\n        $this->bkg_gradtype=$aGradType;\n        $this->bkg_gradfrom = $aFrom;\n        $this->bkg_gradto = $aTo;\n    }\n\n    function HasItems() {\n        return (bool)(count($this->txtcol)); //MiToTeam: Non-canonical scalar type casts (php 8.5)\n    }\n\n    function Stroke($aImg) {\n        // Constant\n        $fillBoxFrameWeight=1;\n\n        if( $this->hide ) return;\n\n        $aImg->SetFont($this->font_family,$this->font_style,$this->font_size);\n\n        if( $this->reverse ) {\n            $this->txtcol = array_reverse($this->txtcol);\n        }\n\n        $n=count($this->txtcol);\n        if( $n == 0 ) return;\n\n        // Find out the max width and height of each column to be able\n        // to size the legend box.\n        $numcolumns = ($n > $this->layout_n ? $this->layout_n : $n);\n        for( $i=0; $i < $numcolumns; ++$i ) {\n            $colwidth[$i] = $aImg->GetTextWidth($this->txtcol[$i][0]) +\n                            2*$this->xmargin + 2*$this->mark_abs_hsize;\n            $colheight[$i] = 0;\n\n        }\n\n        // Find our maximum height in each row\n        $rows = 0 ; $rowheight[0] = 0;\n        for( $i=0; $i < $n; ++$i ) {\n            $h = max($this->mark_abs_vsize,$aImg->GetTextHeight($this->txtcol[$i][0]))+$this->ylinespacing;\n\n            // Makes sure we always have a minimum of 1/4 (1/2 on each side) of the mark as space\n            // between two vertical legend entries\n            //$h = round(max($h,$this->mark_abs_vsize+$this->ymargin));\n            //echo \"Textheight #$i: tetxheight=\".$aImg->GetTextHeight($this->txtcol[$i][0]).', ';\n            //echo \"h=$h ({$this->mark_abs_vsize},{$this->ymargin})<br>\";\n            if( $i % $numcolumns == 0 ) {\n                $rows++;\n                $rowheight[$rows-1] = 0;\n            }\n            $rowheight[$rows-1] = max($rowheight[$rows-1],$h)+1;\n        }\n\n        $abs_height = 0;\n        for( $i=0; $i < $rows; ++$i ) {\n            $abs_height += $rowheight[$i] ;\n        }\n\n        // Make sure that the height is at least as high as mark size + ymargin\n        $abs_height = max($abs_height,$this->mark_abs_vsize);\n        $abs_height += $this->ybottom_margin; \n\n        // Find out the maximum width in each column\n        for( $i=$numcolumns; $i < $n; ++$i ) {\n            $colwidth[$i % $numcolumns] = max(\n                $aImg->GetTextWidth($this->txtcol[$i][0])+2*$this->xmargin+2*$this->mark_abs_hsize,\n                $colwidth[$i % $numcolumns]);\n        }\n\n        // Get the total width\n        $mtw = 0;\n        for( $i=0; $i < $numcolumns; ++$i ) {\n            $mtw += $colwidth[$i] ;\n        }\n\n        // remove the last rows interpace margin (since there is no next row)\n        $abs_height -= $this->ylinespacing;\n\n\n        // Find out maximum width we need for legend box\n        $abs_width = $mtw+$this->xlmargin+($numcolumns-1)*$this->mark_abs_hsize;\n\n        if( $this->xabspos === -1  && $this->yabspos === -1 ) {\n            $this->xabspos = $this->xpos*$aImg->width ;\n            $this->yabspos = $this->ypos*$aImg->height ;\n        }\n\n        // Positioning of the legend box\n        if( $this->halign == 'left' ) {\n        \t$xp = $this->xabspos;\n        }\n        elseif( $this->halign == 'center' ) {\n        \t$xp = $this->xabspos - $abs_width/2;\n        }\n        else {\n        \t$xp = $aImg->width - $this->xabspos - $abs_width;\n        }\n\n        $yp=$this->yabspos;\n        if( $this->valign == 'center' ) {\n        \t$yp-=$abs_height/2;\n        }\n        elseif( $this->valign == 'bottom' ) {\n        \t$yp-=$abs_height;\n        }\n\n        // Stroke legend box\n        $aImg->SetColor($this->color);\n        $aImg->SetLineWeight($this->frameweight);\n        $aImg->SetLineStyle('solid');\n\n        if( $this->shadow ) {\n        \t$aImg->ShadowRectangle($xp,$yp,\n                                   $xp+$abs_width+$this->shadow_width+2,\n                                   $yp+$abs_height+$this->shadow_width+2,\n                                   $this->fill_color,$this->shadow_width+2,$this->shadow_color);\n        }\n        else {\n            $aImg->SetColor($this->fill_color);\n            $aImg->FilledRectangle($xp,$yp,$xp+$abs_width,$yp+$abs_height);\n            $aImg->SetColor($this->color);\n            $aImg->Rectangle($xp,$yp,$xp+$abs_width,$yp+$abs_height);\n        }\n\n        if( $this->bkg_gradtype >= 0 ) {\n            $grad = new Gradient($aImg);\n            $grad->FilledRectangle($xp+1, $yp+1,\n                                   $xp+$abs_width-3, $yp+$abs_height-3,\n                                   $this->bkg_gradfrom, $this->bkg_gradto,\n                                   $this->bkg_gradtype);\n        }\n\n        // x1,y1 is the position for the legend marker + text\n        // The vertical position is the baseline position for the text\n        // and every marker is adjusted acording to that.\n\n        // For multiline texts this get more complicated.\n\n        $x1 = $xp + $this->xlmargin;\n        $y1 = $yp + $rowheight[0] - $this->ylinespacing + 2 ; // The ymargin is included in rowheight\n\n        // Now, y1 is the bottom vertical position of the first legend, i.e if\n        // the legend has multiple lines it is the bottom line.\n\n        $grad = new Gradient($aImg);\n        $patternFactory = null;\n\n        // Now stroke each legend in turn\n        // Each plot has added the following information to  the legend\n        // p[0] = Legend text\n        // p[1] = Color,\n        // p[2] = For markers a reference to the PlotMark object\n        // p[3] = For lines the line style, for gradient the negative gradient style\n        // p[4] = CSIM target\n        // p[5] = CSIM Alt text\n        $i = 1 ; $row = 0;\n        foreach($this->txtcol as $p) {\n\n            // STROKE DEBUG BOX\n            if( _JPG_DEBUG ) {\n                $aImg->SetLineWeight(1);\n                $aImg->SetColor('red');\n                $aImg->SetLineStyle('solid');\n                $aImg->Rectangle($x1,$y1,$xp+$abs_width-1,$y1-$rowheight[$row]);\n            }\n\n            $aImg->SetLineWeight($this->weight);\n            $x1 = round($x1)+1; // We add one to not collide with the border\n            $y1=round($y1);\n\n            // This is the center offset up from the baseline which is\n            // considered the \"center\" of the marks. This gets slightly complicated since\n            // we need to consider if the text is a multiline paragraph or if it is only\n            // a single line. The reason is that for single line the y1 corresponds to the baseline\n            // and that is fine. However for a multiline paragraph there is no single baseline\n            // and in that case the y1 corresponds to the lowest y for the bounding box. In that\n            // case we center the mark in the middle of the paragraph\n            if( !preg_match('/\\n/',$p[0]) ) {\n                // Single line\n                $marky = ceil($y1-$this->mark_abs_vsize/2)-1;\n            } else {\n                // Paragraph\n                $marky = $y1 - $aImg->GetTextHeight($p[0])/2;\n\n              //  echo \"y1=$y1, p[o]={$p[0]}, marky=$marky<br>\";\n            }\n\n            //echo \"<br>Mark #$i: marky=$marky<br>\";\n\n            $x1 += $this->mark_abs_hsize;\n    \n            if ( !empty($p[2]) && $p[2]->GetType() > -1 ) {\n\n\n                // Make a plot mark legend. This is constructed with a mark which\n                // is run through with a line\n\n                // First construct a bit of the line that looks exactly like the\n                // line in the plot\n                $aImg->SetColor($p[1]);\n                if( is_string($p[3]) || $p[3]>0 ) {\n                    $aImg->SetLineStyle($p[3]);\n                    $aImg->StyleLine($x1-$this->mark_abs_hsize,$marky,$x1+$this->mark_abs_hsize,$marky);\n                }\n\n                // Stroke a mark using image\n                if( $p[2]->GetType() == MARK_IMG ) {\n                    $p[2]->Stroke($aImg,$x1,$marky);\n                }\n\n                // Stroke a mark with the standard size\n                // (As long as it is not an image mark )\n                if( $p[2]->GetType() != MARK_IMG ) {\n\n                    // Clear any user callbacks since we ont want them called for\n                    // the legend marks\n                    $p[2]->iFormatCallback = '';\n                    $p[2]->iFormatCallback2 = '';\n\n                    // Since size for circles is specified as the radius\n                    // this means that we must half the size to make the total\n                    // width behave as the other marks\n                    if( $p[2]->GetType() == MARK_FILLEDCIRCLE || $p[2]->GetType() == MARK_CIRCLE ) {\n                        $p[2]->SetSize(min($this->mark_abs_vsize,$this->mark_abs_hsize)/2);\n                        $p[2]->Stroke($aImg,$x1,$marky);\n                    }\n                    else {\n                        $p[2]->SetSize(min($this->mark_abs_vsize,$this->mark_abs_hsize));\n                        $p[2]->Stroke($aImg,$x1,$marky);\n                    }\n                }\n            }\n            elseif ( !empty($p[2]) && (is_string($p[3]) || $p[3]>0 ) ) {\n                // Draw a styled line\n                $aImg->SetColor($p[1]);\n                $aImg->SetLineStyle($p[3]);\n                $aImg->StyleLine($x1-$this->mark_abs_hsize,$marky,$x1+$this->mark_abs_hsize,$marky);\n                $aImg->StyleLine($x1-$this->mark_abs_hsize,$marky+1,$x1+$this->mark_abs_hsize,$marky+1);\n            }\n            else {\n                // Draw a colored box\n                $color = $p[1] ;\n\n                // We make boxes slightly larger to better show\n                $boxsize = max($this->mark_abs_vsize,$this->mark_abs_hsize) + 2 ;\n\n                $ym = $marky-ceil($boxsize/2) ; // Marker y-coordinate\n\n                // We either need to plot a gradient or a\n                // pattern. To differentiate we use a kludge.\n                // Patterns have a p[3] value of < -100\n                if( $p[3] < -100 ) {\n                    // p[1][0] == iPattern, p[1][1] == iPatternColor, p[1][2] == iPatternDensity\n                    if( $patternFactory == null ) {\n                        $patternFactory = new RectPatternFactory();\n                    }\n                    $prect = $patternFactory->Create($p[1][0],$p[1][1],1);\n                    $prect->SetBackground($p[1][3]);\n                    $prect->SetDensity($p[1][2]+1);\n                    $prect->SetPos(new Rectangle($x1,$ym,$boxsize,$boxsize));\n                    $prect->Stroke($aImg);\n                    $prect=null;\n                }\n                else {\n                    if( is_array($color) && count($color)==2 ) {\n                        // The client want a gradient color\n                        $grad->FilledRectangle($x1-$boxsize/2,$ym,\n                                               $x1+$boxsize/2,$ym+$boxsize,\n                                               $color[0],$color[1],-$p[3]);\n                    }\n                    else {\n                        $aImg->SetColor($p[1]);\n                        $aImg->FilledRectangle($x1-$boxsize/2,$ym, $x1+$boxsize/2,$ym+$boxsize);\n                    }\n\n                    // Draw a plot frame line\n                    $aImg->SetColor($this->color);\n                    $aImg->SetLineWeight($fillBoxFrameWeight);\n                    $aImg->Rectangle($x1-$boxsize/2,$ym,\n                                     $x1+$boxsize/2,$ym+$boxsize);\n                }\n            }\n            $aImg->SetColor($this->font_color);\n            $aImg->SetFont($this->font_family,$this->font_style,$this->font_size);\n            $aImg->SetTextAlign('left','baseline');\n\n            $debug=false;\n            $aImg->StrokeText($x1+$this->mark_abs_hsize+$this->xmargin,$y1,$p[0],\n                0,'left',$debug);\n\n            // Add CSIM for Legend if defined\n            if( !empty($p[4]) ) {\n\n                $xs = $x1 - $this->mark_abs_hsize ;\n                $ys = $y1 + 1 ;\n                $xe = $x1 + $aImg->GetTextWidth($p[0]) + $this->mark_abs_hsize + $this->xmargin ;\n                $ye = $y1-$rowheight[$row]+1;\n                $coords = \"$xs,$ys,$xe,$y1,$xe,$ye,$xs,$ye\";\n                if( ! empty($p[4]) ) {\n                    $this->csimareas .= \"<area shape=\\\"poly\\\" coords=\\\"$coords\\\" href=\\\"\".htmlentities($p[4]).\"\\\"\";\n\n                    if( !empty($p[6]) ) {\n                        $this->csimareas .= \" target=\\\"\".$p[6].\"\\\"\";\n                    }\n\n                    if( !empty($p[5]) ) {\n                        $tmp=sprintf($p[5],$p[0]);\n                        $this->csimareas .= \" title=\\\"$tmp\\\" alt=\\\"$tmp\\\" \";\n                    }\n                    $this->csimareas .= \" />\\n\";\n                }\n            }\n\n            if( $i >= $this->layout_n ) {\n                $x1 = $xp+$this->xlmargin;\n                $row++;\n                if( !empty($rowheight[$row]) )\n                    $y1 += $rowheight[$row];\n                $i = 1;\n            }\n            else {\n                $x1 += $colwidth[($i-1) % $numcolumns] ;\n                ++$i;\n            }\n        }\n    }\n} // Class\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_line.php",
    "content": "<?php\n/*=======================================================================\n // File:  \t\t JPGRAPH_LINE.PHP\n // Description: Line plot extension for JpGraph\n // Created:  \t 2001-01-08\n // Ver:  \t\t $Id: jpgraph_line.php 1921 2009-12-11 11:46:39Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\nrequire_once ('jpgraph_plotmark.inc.php');\n\n// constants for the (filled) area\nDEFINE(\"LP_AREA_FILLED\", true);\nDEFINE(\"LP_AREA_NOT_FILLED\", false);\nDEFINE(\"LP_AREA_BORDER\",false);\nDEFINE(\"LP_AREA_NO_BORDER\",true);\n\n//===================================================\n// CLASS LinePlot\n// Description:\n//===================================================\nclass LinePlot extends Plot{\n    public $mark=null;\n    protected $filled=false;\n    protected $fill_color='blue';\n    protected $step_style=false, $center=false;\n    protected $line_style=1; // Default to solid\n    protected $filledAreas = array(); // array of arrays(with min,max,col,filled in them)\n    public $barcenter=false;  // When we mix line and bar. Should we center the line in the bar.\n    protected $fillFromMin = false, $fillFromMax = false;\n    protected $fillgrad=false,$fillgrad_fromcolor='navy',$fillgrad_tocolor='silver',$fillgrad_numcolors=100;\n    protected $iFastStroke=false;\n\n    //---------------\n    // CONSTRUCTOR\n    function __construct($datay,$datax=false) {\n        parent::__construct($datay,$datax);\n        $this->mark = new PlotMark() ;\n        $this->color = ColorFactory::getColor();\n        $this->fill_color = $this->color;\n    }\n    //---------------\n    // PUBLIC METHODS\n\n    function SetFilled($aFlg=true) {\n\t\t$this->filled = $aFlg;\n    }\n\n    function SetBarCenter($aFlag=true) {\n        $this->barcenter=$aFlag;\n    }\n\n    function SetStyle($aStyle) {\n        $this->line_style=$aStyle;\n    }\n\n    function SetStepStyle($aFlag=true) {\n        $this->step_style = $aFlag;\n    }\n\n    function SetColor($aColor) {\n        parent::SetColor($aColor);\n    }\n\n    function SetFillFromYMin($f=true) {\n        $this->fillFromMin = $f ;\n    }\n\n    function SetFillFromYMax($f=true) {\n        $this->fillFromMax = $f ;\n    }\n\n    function SetFillColor($aColor,$aFilled=true) {\n    \t//$this->color = $aColor;\n        $this->fill_color=$aColor;\n        $this->filled=$aFilled;\n    }\n\n    function SetFillGradient($aFromColor,$aToColor,$aNumColors=100,$aFilled=true) {\n        $this->fillgrad_fromcolor = $aFromColor;\n        $this->fillgrad_tocolor   = $aToColor;\n        $this->fillgrad_numcolors = $aNumColors;\n        $this->filled = $aFilled;\n        $this->fillgrad = true;\n    }\n\n    function Legend($graph) {\n        if( $this->legend!=\"\" ) {\n            if( $this->filled && !$this->fillgrad ) {\n                $graph->legend->Add($this->legend,\n                $this->fill_color,$this->mark,0,\n                $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);\n            }\n            elseif( $this->fillgrad ) {\n                $color=array($this->fillgrad_fromcolor,$this->fillgrad_tocolor);\n                // In order to differentiate between gradients and cooors specified as an RGB triple\n                $graph->legend->Add($this->legend,$color,\"\",-2 /* -GRAD_HOR */,\n                $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);\n            } else {\n                $graph->legend->Add($this->legend,\n                $this->color,$this->mark,$this->line_style,\n                $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);\n            }\n        }\n    }\n\n    function AddArea($aMin=0,$aMax=0,$aFilled=LP_AREA_NOT_FILLED,$aColor=\"gray9\",$aBorder=LP_AREA_BORDER) {\n        if($aMin > $aMax) {\n            // swap\n            $tmp = $aMin;\n            $aMin = $aMax;\n            $aMax = $tmp;\n        }\n        $this->filledAreas[] = array($aMin,$aMax,$aColor,$aFilled,$aBorder);\n    }\n\n    // Gets called before any axis are stroked\n    function PreStrokeAdjust($graph) {\n\n        // If another plot type have already adjusted the\n        // offset we don't touch it.\n        // (We check for empty in case the scale is  a log scale\n        // and hence doesn't contain any xlabel_offset)\n        if( empty($graph->xaxis->scale->ticks->xlabel_offset) || $graph->xaxis->scale->ticks->xlabel_offset == 0 ) {\n            if( $this->center ) {\n                ++$this->numpoints;\n                $a=0.5; $b=0.5;\n            } else {\n                $a=0; $b=0;\n            }\n            $graph->xaxis->scale->ticks->SetXLabelOffset($a);\n            $graph->SetTextScaleOff($b);\n            //$graph->xaxis->scale->ticks->SupressMinorTickMarks();\n        }\n    }\n\n    function SetFastStroke($aFlg=true) {\n        $this->iFastStroke = $aFlg;\n    }\n\n    function FastStroke($img,$xscale,$yscale,$aStartPoint=0,$exist_x=true) {\n        // An optimized stroke for many data points with no extra\n        // features but 60% faster. You can't have values or line styles, or null\n        // values in plots.\n        $numpoints=count($this->coords[0]);\n        if( $this->barcenter ) {\n            $textadj = 0.5-$xscale->text_scale_off;\n        }\n        else {\n            $textadj = 0;\n        }\n\n        $img->SetColor($this->color);\n        $img->SetLineWeight($this->weight);\n        $pnts=$aStartPoint;\n        while( $pnts < $numpoints ) {\n            if( $exist_x ) {\n                $x=$this->coords[1][$pnts];\n            }\n            else {\n                $x=$pnts+$textadj;\n            }\n            $xt = $xscale->Translate($x);\n            $y=$this->coords[0][$pnts];\n            $yt = $yscale->Translate($y);\n            if( is_numeric($y) ) {\n                $cord[] = $xt;\n                $cord[] = $yt;\n            }\n            elseif( $y == '-' && $pnts > 0 ) {\n                // Just ignore\n            }\n            else {\n                JpGraphError::RaiseL(10002);//('Plot too complicated for fast line Stroke. Use standard Stroke()');\n            }\n            ++$pnts;\n        } // WHILE\n\n        $img->Polygon($cord,false,true);\n    }\n\n    function Stroke($img,$xscale,$yscale) {\n        $idx=0;\n        $numpoints=count($this->coords[0]);\n        if( isset($this->coords[1]) ) {\n            if( count($this->coords[1])!=$numpoints ) {\n                JpGraphError::RaiseL(2003,count($this->coords[1]),$numpoints);\n            //(\"Number of X and Y points are not equal. Number of X-points:\".count($this->coords[1]).\" Number of Y-points:$numpoints\");\n            }\n            else {\n                $exist_x = true;\n            }\n        }\n        else {\n            $exist_x = false;\n        }\n\n        if( $this->barcenter ) {\n            $textadj = 0.5-$xscale->text_scale_off;\n        }\n        else {\n            $textadj = 0;\n        }\n\n        // Find the first numeric data point\n        $startpoint=0;\n        while( $startpoint < $numpoints && !is_numeric($this->coords[0][$startpoint]) ) {\n            ++$startpoint;\n        }\n\n        // Bail out if no data points\n        if( $startpoint == $numpoints ) return;\n\n        if( $this->iFastStroke ) {\n            $this->FastStroke($img,$xscale,$yscale,$startpoint,$exist_x);\n            return;\n        }\n\n        if( $exist_x ) {\n            $xs=$this->coords[1][$startpoint];\n        }\n        else {\n            $xs= $textadj+$startpoint;\n        }\n\n        $img->SetStartPoint($xscale->Translate($xs),\n        $yscale->Translate($this->coords[0][$startpoint]));\n\n        if( $this->filled ) {\n            if( $this->fillFromMax ) {\n                //$max = $yscale->GetMaxVal();\n                $cord[$idx++] = $xscale->Translate($xs);\n                $cord[$idx++] = $yscale->scale_abs[1];\n            }\n            else {\n                $min = $yscale->GetMinVal();\n                if( $min > 0 || $this->fillFromMin ) {\n                    $fillmin = $yscale->scale_abs[0];//Translate($min);\n                }\n                else {\n                    $fillmin = $yscale->Translate(0);\n                }\n\n                $cord[$idx++] = $xscale->Translate($xs);\n                $cord[$idx++] = $fillmin;\n            }\n        }\n        $xt = $xscale->Translate($xs);\n        $yt = $yscale->Translate($this->coords[0][$startpoint]);\n        $cord[$idx++] = $xt;\n        $cord[$idx++] = $yt;\n        $yt_old = $yt;\n        $xt_old = $xt;\n        $y_old = $this->coords[0][$startpoint];\n\n        $this->value->Stroke($img,$this->coords[0][$startpoint],$xt,$yt);\n\n        $img->SetColor($this->color);\n        $img->SetLineWeight($this->weight);\n        $img->SetLineStyle($this->line_style);\n        $pnts=$startpoint+1;\n        $firstnonumeric = false;\n\n\n        while( $pnts < $numpoints ) {\n\n            if( $exist_x ) {\n                $x=$this->coords[1][$pnts];\n            }\n            else {\n                $x=$pnts+$textadj;\n            }\n            $xt = $xscale->Translate($x);\n            $yt = $yscale->Translate($this->coords[0][$pnts]);\n\n            $y=$this->coords[0][$pnts];\n            if( $this->step_style ) {\n                // To handle null values within step style we need to record the\n                // first non numeric value so we know from where to start if the\n                // non value is '-'.\n                if( is_numeric($y) ) {\n                    $firstnonumeric = false;\n                    if( is_numeric($y_old) ) {\n                        $img->StyleLine($xt_old,$yt_old,$xt,$yt_old);\n                        $img->StyleLine($xt,$yt_old,$xt,$yt);\n                    }\n                    elseif( $y_old == '-' ) {\n                        $img->StyleLine($xt_first,$yt_first,$xt,$yt_first);\n                        $img->StyleLine($xt,$yt_first,$xt,$yt);\n                    }\n                    else {\n                        $yt_old = $yt;\n                        $xt_old = $xt;\n                    }\n                    $cord[$idx++] = $xt;\n                    $cord[$idx++] = $yt_old;\n                    $cord[$idx++] = $xt;\n                    $cord[$idx++] = $yt;\n                }\n                elseif( $firstnonumeric==false ) {\n                    $firstnonumeric = true;\n                    $yt_first = $yt_old;\n                    $xt_first = $xt_old;\n                }\n            }\n            else {\n                $tmp1=$y;\n                $prev=$this->coords[0][$pnts-1];\n                if( $tmp1==='' || $tmp1===NULL || $tmp1==='X' ) $tmp1 = 'x';\n                if( $prev==='' || $prev===null || $prev==='X' ) $prev = 'x';\n\n                if( is_numeric($y) || (is_string($y) && $y != '-') ) {\n                    if( is_numeric($y) && (is_numeric($prev) || $prev === '-' ) ) {\n                        $img->StyleLineTo($xt,$yt);\n                    }\n                    else {\n                        $img->SetStartPoint($xt,$yt);\n                    }\n                }\n                if( $this->filled && $tmp1 !== '-' ) {\n                    if( $tmp1 === 'x' ) {\n                        $cord[$idx++] = $cord[$idx-3];\n                        $cord[$idx++] = $fillmin;\n                    }\n                    elseif( $prev === 'x' ) {\n                        $cord[$idx++] = $xt;\n                        $cord[$idx++] = $fillmin;\n                        $cord[$idx++] = $xt;\n                        $cord[$idx++] = $yt;\n                    }\n                    else {\n                        $cord[$idx++] = $xt;\n                        $cord[$idx++] = $yt;\n                    }\n                }\n                else {\n                    if( is_numeric($tmp1)  && (is_numeric($prev) || $prev === '-' ) ) {\n                        $cord[$idx++] = $xt;\n                        $cord[$idx++] = $yt;\n                    }\n                }\n            }\n            $yt_old = $yt;\n            $xt_old = $xt;\n            $y_old = $y;\n\n            $this->StrokeDataValue($img,$this->coords[0][$pnts],$xt,$yt);\n\n            ++$pnts;\n        }\n\n        if( $this->filled  ) {\n            $cord[$idx++] = $xt;\n            if( $this->fillFromMax ) {\n                $cord[$idx++] = $yscale->scale_abs[1];\n            }\n            else {\n                if( $min > 0 || $this->fillFromMin ) {\n                    $cord[$idx++] = $yscale->Translate($min);\n                }\n                else {\n                    $cord[$idx++] = $yscale->Translate(0);\n                }\n            }\n            if( $this->fillgrad ) {\n                $img->SetLineWeight(1);\n                $grad = new Gradient($img);\n                $grad->SetNumColors($this->fillgrad_numcolors);\n                $grad->FilledFlatPolygon($cord,$this->fillgrad_fromcolor,$this->fillgrad_tocolor);\n                $img->SetLineWeight($this->weight);\n            }\n            else {\n                $img->SetColor($this->fill_color);\n                $img->FilledPolygon($cord);\n            }\n            if( $this->weight > 0 ) { \n                $img->SetLineWeight($this->weight);\n                $img->SetColor($this->color);\n                // Remove first and last coordinate before drawing the line\n                // sine we otherwise get the vertical start and end lines which\n                // doesn't look appropriate\n                $img->Polygon(array_slice($cord,2,count($cord)-4));\n            }\n        }\n\n        if(!empty($this->filledAreas)) {\n\n            $minY = $yscale->Translate($yscale->GetMinVal());\n            $factor = ($this->step_style ? 4 : 2);\n\n            for($i = 0; $i < sizeof($this->filledAreas); ++$i) {\n                // go through all filled area elements ordered by insertion\n                // fill polygon array\n                $areaCoords[] = $cord[$this->filledAreas[$i][0] * $factor];\n                $areaCoords[] = $minY;\n\n                $areaCoords =\n                array_merge($areaCoords,\n                array_slice($cord,\n                $this->filledAreas[$i][0] * $factor,\n                ($this->filledAreas[$i][1] - $this->filledAreas[$i][0] + ($this->step_style ? 0 : 1))  * $factor));\n                $areaCoords[] = $areaCoords[sizeof($areaCoords)-2]; // last x\n                $areaCoords[] = $minY; // last y\n\n                if($this->filledAreas[$i][3]) {\n                    $img->SetColor($this->filledAreas[$i][2]);\n                    $img->FilledPolygon($areaCoords);\n                    $img->SetColor($this->color);\n                }\n                // Check if we should draw the frame.\n                // If not we still re-draw the line since it might have been\n                // partially overwritten by the filled area and it doesn't look\n                // very good.\n                if( $this->filledAreas[$i][4] ) {\n                    $img->Polygon($areaCoords);\n                }\n                else {\n                    $img->Polygon($cord);\n                }\n\n                $areaCoords = array();\n            }\n        }\n\n        if( $this->mark->type == -1 || $this->mark->show == false )\n        return;\n\n        for( $pnts=0; $pnts<$numpoints; ++$pnts) {\n\n            if( $exist_x ) {\n                $x=$this->coords[1][$pnts];\n            }\n            else {\n                $x=$pnts+$textadj;\n            }\n            $xt = $xscale->Translate($x);\n            $yt = $yscale->Translate($this->coords[0][$pnts]);\n\n            if( is_numeric($this->coords[0][$pnts]) ) {\n                if( !empty($this->csimtargets[$pnts]) ) {\n                    if( !empty($this->csimwintargets[$pnts]) ) {\n                        $this->mark->SetCSIMTarget($this->csimtargets[$pnts],$this->csimwintargets[$pnts]);\n                    }\n                    else {\n                        $this->mark->SetCSIMTarget($this->csimtargets[$pnts]);\n                    }\n                    $this->mark->SetCSIMAlt($this->csimalts[$pnts]);\n                }\n                if( $exist_x ) {\n                    $x=$this->coords[1][$pnts];\n                }\n                else {\n                    $x=$pnts;\n                }\n                $this->mark->SetCSIMAltVal($this->coords[0][$pnts],$x);\n                $this->mark->Stroke($img,$xt,$yt);\n                $this->csimareas .= $this->mark->GetCSIMAreas();\n            }\n        }\n    }\n} // Class\n\n\n//===================================================\n// CLASS AccLinePlot\n// Description:\n//===================================================\nclass AccLinePlot extends Plot {\n    protected $plots=null,$nbrplots=0;\n    private $iStartEndZero=true;\n    //---------------\n    // CONSTRUCTOR\n    function __construct($plots) {\n        $this->plots = $plots;\n        $this->nbrplots = count($plots);\n        $this->numpoints = $plots[0]->numpoints;\n\n        // Verify that all plots have the same number of data points\n        for( $i=1; $i < $this->nbrplots; ++$i ) {\n            if( $plots[$i]->numpoints != $this->numpoints ) {\n                JpGraphError::RaiseL(10003);//('Each plot in an accumulated lineplot must have the same number of data points',0)\n            }\n        }\n\n        for($i=0; $i < $this->nbrplots; ++$i ) {\n            $this->LineInterpolate($this->plots[$i]->coords[0]);\n        }\n    }\n\n    //---------------\n    // PUBLIC METHODS\n    function Legend($graph) {\n        foreach( $this->plots as $p ) {\n            $p->DoLegend($graph);\n        }\n    }\n\n    function Max() {\n        list($xmax) = $this->plots[0]->Max();\n        $nmax=0;\n        $n = count($this->plots);\n        for($i=0; $i < $n; ++$i) {\n            $nc = count($this->plots[$i]->coords[0]);\n            $nmax = max($nmax,$nc);\n            list($x) = $this->plots[$i]->Max();\n            $xmax = Max($xmax,$x);\n        }\n        for( $i = 0; $i < $nmax; $i++ ) {\n            // Get y-value for line $i by adding the\n            // individual bars from all the plots added.\n            // It would be wrong to just add the\n            // individual plots max y-value since that\n            // would in most cases give to large y-value.\n            $y=$this->plots[0]->coords[0][$i];\n            for( $j = 1; $j < $this->nbrplots; $j++ ) {\n                $y += $this->plots[ $j ]->coords[0][$i];\n            }\n            $ymax[$i] = $y;\n        }\n        $ymax = max($ymax);\n        return array($xmax,$ymax);\n    }\n\n    function Min() {\n        $nmax=0;\n        list($xmin,$ysetmin) = $this->plots[0]->Min();\n        $n = count($this->plots);\n        for($i=0; $i < $n; ++$i) {\n            $nc = count($this->plots[$i]->coords[0]);\n            $nmax = max($nmax,$nc);\n            list($x,$y) = $this->plots[$i]->Min();\n            $xmin = Min($xmin,$x);\n            $ysetmin = Min($y,$ysetmin);\n        }\n        for( $i = 0; $i < $nmax; $i++ ) {\n            // Get y-value for line $i by adding the\n            // individual bars from all the plots added.\n            // It would be wrong to just add the\n            // individual plots min y-value since that\n            // would in most cases give to small y-value.\n            $y=$this->plots[0]->coords[0][$i];\n            for( $j = 1; $j < $this->nbrplots; $j++ ) {\n                $y += $this->plots[ $j ]->coords[0][$i];\n            }\n            $ymin[$i] = $y;\n        }\n        $ymin = Min($ysetmin,Min($ymin));\n        return array($xmin,$ymin);\n    }\n\n    // Gets called before any axis are stroked\n    function PreStrokeAdjust($graph) {\n\n        // If another plot type have already adjusted the\n        // offset we don't touch it.\n        // (We check for empty in case the scale is  a log scale\n        // and hence doesn't contain any xlabel_offset)\n\n        if( empty($graph->xaxis->scale->ticks->xlabel_offset) ||\n        $graph->xaxis->scale->ticks->xlabel_offset == 0 ) {\n            if( $this->center ) {\n                ++$this->numpoints;\n                $a=0.5; $b=0.5;\n            } else {\n                $a=0; $b=0;\n            }\n            $graph->xaxis->scale->ticks->SetXLabelOffset($a);\n            $graph->SetTextScaleOff($b);\n            $graph->xaxis->scale->ticks->SupressMinorTickMarks();\n        }\n\n    }\n\n    function SetInterpolateMode($aIntMode) {\n        $this->iStartEndZero=$aIntMode;\n    }\n\n    // Replace all '-' with an interpolated value. We use straightforward\n    // linear interpolation. If the data starts with one or several '-' they\n    // will be replaced by the the first valid data point\n    function LineInterpolate(&$aData) {\n\n        $n=count($aData);\n        $i=0;\n\n        // If first point is undefined we will set it to the same as the first\n        // valid data\n        if( $aData[$i]==='-' ) {\n            // Find the first valid data\n            while( $i < $n && $aData[$i]==='-' ) {\n                ++$i;\n            }\n            if( $i < $n ) {\n                for($j=0; $j < $i; ++$j ) {\n                    if( $this->iStartEndZero )\n                    $aData[$i] = 0;\n                    else\n                    $aData[$j] = $aData[$i];\n                }\n            }\n            else {\n                // All '-' => Error\n                return false;\n            }\n        }\n\n        while($i < $n) {\n            while( $i < $n && $aData[$i] !== '-' ) {\n                ++$i;\n            }\n            if( $i < $n ) {\n                $pstart=$i-1;\n\n                // Now see how long this segment of '-' are\n                while( $i < $n && $aData[$i] === '-' ) {\n                    ++$i;\n                }\n                if( $i < $n ) {\n                    $pend=$i;\n                    $size=$pend-$pstart;\n                    $k=($aData[$pend]-$aData[$pstart])/$size;\n                    // Replace the segment of '-' with a linear interpolated value.\n                    for($j=1; $j < $size; ++$j ) {\n                        $aData[$pstart+$j] = $aData[$pstart] + $j*$k ;\n                    }\n                }\n                else {\n                    // There are no valid end point. The '-' goes all the way to the end\n                    // In that case we just set all the remaining values the the same as the\n                    // last valid data point.\n                    for( $j=$pstart+1; $j < $n; ++$j )\n                    if( $this->iStartEndZero ) {\n                        $aData[$j] = 0;\n                    }\n                    else {\n                        $aData[$j] = $aData[$pstart] ;\n                    }\n                }\n            }\n        }\n        return true;\n    }\n\n    // To avoid duplicate of line drawing code here we just\n    // change the y-values for each plot and then restore it\n    // after we have made the stroke. We must do this copy since\n    // it wouldn't be possible to create an acc line plot\n    // with the same graphs, i.e AccLinePlot(array($pl,$pl,$pl));\n    // since this method would have a side effect.\n    function Stroke($img,$xscale,$yscale) {\n        $img->SetLineWeight($this->weight);\n        $this->numpoints = count($this->plots[0]->coords[0]);\n        // Allocate array\n        $coords[$this->nbrplots][$this->numpoints]=0;\n        for($i=0; $i<$this->numpoints; $i++) {\n            $coords[0][$i]=$this->plots[0]->coords[0][$i];\n            $accy=$coords[0][$i];\n            for($j=1; $j<$this->nbrplots; ++$j ) {\n                $coords[$j][$i] = $this->plots[$j]->coords[0][$i]+$accy;\n                $accy = $coords[$j][$i];\n            }\n        }\n        for($j=$this->nbrplots-1; $j>=0; --$j) {\n            $p=$this->plots[$j];\n            for( $i=0; $i<$this->numpoints; ++$i) {\n                $tmp[$i]=$p->coords[0][$i];\n                $p->coords[0][$i]=$coords[$j][$i];\n            }\n            $p->Stroke($img,$xscale,$yscale);\n            for( $i=0; $i<$this->numpoints; ++$i) {\n                $p->coords[0][$i]=$tmp[$i];\n            }\n            $p->coords[0][]=$tmp;\n        }\n    }\n} // Class\n\n\n/* EOF */\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_log.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_LOG.PHP\n // Description: Log scale plot extension for JpGraph\n // Created:     2001-01-08\n // Ver:         $Id: jpgraph_log.php 1106 2009-02-22 20:16:35Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\nDEFINE('LOGLABELS_PLAIN',0);\nDEFINE('LOGLABELS_MAGNITUDE',1);\n\n//===================================================\n// CLASS LogScale\n// Description: Logarithmic scale between world and screen\n//===================================================\nclass LogScale extends LinearScale {\n    //---------------\n    // CONSTRUCTOR\n\n    // Log scale is specified using the log of min and max\n    function __construct($min,$max,$type=\"y\") {\n        parent::__construct($min,$max,$type);\n        $this->ticks = new LogTicks();\n        $this->name = 'log';\n    }\n\n    //----------------\n    // PUBLIC METHODS\n\n    // Translate between world and screen\n    function Translate($a) {\n        if( !is_numeric($a) ) {\n            if( $a != '' && $a != '-' && $a != 'x' ) { \n                JpGraphError::RaiseL(11001);\n                // ('Your data contains non-numeric values.');\n            }\n            return 1;\n        }\n        if( $a < 0 ) {\n            JpGraphError::RaiseL(11002);\n            //(\"Negative data values can not be used in a log scale.\");\n            exit(1);\n        }\n        if( $a==0 ) $a=1;\n        $a=log10($a);\n        return ceil($this->off + ($a*1.0 - $this->scale[0]) * $this->scale_factor);\n    }\n\n    // Relative translate (don't include offset) usefull when we just want\n    // to know the relative position (in pixels) on the axis\n    function RelTranslate($a) {\n        if( !is_numeric($a) ) {\n            if( $a != '' && $a != '-' && $a != 'x' ) {\n                JpGraphError::RaiseL(11001);\n                //('Your data contains non-numeric values.');\n            }\n            return 1;\n        }\n        if( $a==0 ) {\n            $a=1;\n        }\n        $a=log10($a);\n        return round(($a*1.0 - $this->scale[0]) * $this->scale_factor);\n    }\n\n    // Use bcpow() for increased precision\n    function GetMinVal() {\n        if( function_exists(\"bcpow\") ) {\n            return round(bcpow(10,$this->scale[0],15),14);\n        }\n        else {\n            return round(pow(10,$this->scale[0]),14);\n        }\n    }\n\n    function GetMaxVal() {\n        if( function_exists(\"bcpow\") ) {\n            return round(bcpow(10,$this->scale[1],15),14);\n        }\n        else {\n            return round(pow(10,$this->scale[1]),14);\n        }\n    }\n\n    // Logarithmic autoscaling is much simplier since we just\n    // set the min and max to logs of the min and max values.\n    // Note that for log autoscale the \"maxstep\" the fourth argument\n    // isn't used. This is just included to give the method the same\n    // signature as the linear counterpart.\n    function AutoScale($img,$min,$max,$maxsteps,$majend=true) {\n        if( $min==0 ) $min=1;\n\n        if( $max <= 0 ) {\n            JpGraphError::RaiseL(11004);\n            //('Scale error for logarithmic scale. You have a problem with your data values. The max value must be greater than 0. It is mathematically impossible to have 0 in a logarithmic scale.');\n        }\n        if( is_numeric($this->autoscale_min) ) {\n            $smin = round($this->autoscale_min);\n            $smax = ceil(log10($max));\n            if( $min >= $max ) {\n                JpGraphError::RaiseL(25071);//('You have specified a min value with SetAutoMin() which is larger than the maximum value used for the scale. This is not possible.');\n            }\n        }\n        else {\n            $smin = floor(log10($min));\n            if( is_numeric($this->autoscale_max) ) {\n                $smax = round($this->autoscale_max);\n                if( $smin >= $smax ) {\n                    JpGraphError::RaiseL(25072);//('You have specified a max value with SetAutoMax() which is smaller than the miminum value used for the scale. This is not possible.');\n                }\n            }\n            else\n            $smax = ceil(log10($max));\n        }\n\n        $this->Update($img,$smin,$smax);\n    }\n    //---------------\n    // PRIVATE METHODS\n} // Class\n\n//===================================================\n// CLASS LogTicks\n// Description:\n//===================================================\nclass LogTicks extends Ticks{\n    private $label_logtype=LOGLABELS_MAGNITUDE;\n    private $ticklabels_pos = array();\n    //---------------\n    // CONSTRUCTOR\n    function __construct() {\n    }\n    //---------------\n    // PUBLIC METHODS\n    function IsSpecified() {\n        return true;\n    }\n\n    function SetLabelLogType($aType) {\n        $this->label_logtype = $aType;\n    }\n\n    // For log scale it's meaningless to speak about a major step\n    // We just return -1 to make the framework happy (specifically\n    // StrokeLabels() )\n    function GetMajor() {\n        return -1;\n    }\n\n    function SetTextLabelStart($aStart) {\n        JpGraphError::RaiseL(11005);\n        //('Specifying tick interval for a logarithmic scale is undefined. Remove any calls to SetTextLabelStart() or SetTextTickInterval() on the logarithmic scale.');\n    }\n\n    function SetXLabelOffset($dummy) {\n        // For log scales we dont care about XLabel offset\n    }\n\n    // Draw ticks on image \"img\" using scale \"scale\". The axis absolute\n    // position in the image is specified in pos, i.e. for an x-axis\n    // it specifies the absolute y-coord and for Y-ticks it specified the\n    // absolute x-position.\n    function Stroke($img,$scale,$pos) {\n        $start = $scale->GetMinVal();\n        $limit = $scale->GetMaxVal();\n        $nextMajor = 10*$start;\n        $step = $nextMajor / 10.0;\n\n\n        $img->SetLineWeight($this->weight);\n\n        if( $scale->type == \"y\" ) {\n            // member direction specified if the ticks should be on\n            // left or right side.\n            $a=$pos + $this->direction*$this->GetMinTickAbsSize();\n            $a2=$pos + $this->direction*$this->GetMajTickAbsSize();\n             \n            $count=1;\n            $this->maj_ticks_pos[0]=$scale->Translate($start);\n            $this->maj_ticklabels_pos[0]=$scale->Translate($start);\n            if( $this->supress_first )\n            $this->maj_ticks_label[0]=\"\";\n            else {\n                if( $this->label_formfunc != '' ) {\n                    $f = $this->label_formfunc;\n                    $this->maj_ticks_label[0]=call_user_func($f,$start);\n                }\n                elseif( $this->label_logtype == LOGLABELS_PLAIN ) {\n                    $this->maj_ticks_label[0]=$start;\n                }\n                else {\n                    $this->maj_ticks_label[0]='10^'.round(log10($start));\n                }\n            }\n            $i=1;\n            for($y=$start; $y<=$limit; $y+=$step,++$count  ) {\n                $ys=$scale->Translate($y);\n                $this->ticks_pos[]=$ys;\n                $this->ticklabels_pos[]=$ys;\n                if( $count % 10 == 0 ) {\n                    if( !$this->supress_tickmarks ) {\n                        if( $this->majcolor!=\"\" ) {\n                            $img->PushColor($this->majcolor);\n                            $img->Line($pos,$ys,$a2,$ys);\n                            $img->PopColor();\n                        }\n                        else {\n                            $img->Line($pos,$ys,$a2,$ys);\n                        }\n                    }\n\n                    $this->maj_ticks_pos[$i]=$ys;\n                    $this->maj_ticklabels_pos[$i]=$ys;\n\n                    if( $this->label_formfunc != '' ) {\n                        $f = $this->label_formfunc;\n                        $this->maj_ticks_label[$i]=call_user_func($f,$nextMajor);\n                    }\n                    elseif( $this->label_logtype == 0 ) {\n                        $this->maj_ticks_label[$i]=$nextMajor;\n                    }\n                    else {\n                        $this->maj_ticks_label[$i]='10^'.round(log10($nextMajor));\n                    }\n                    ++$i;\n                    $nextMajor *= 10;\n                    $step *= 10;\n                    $count=1;\n                }\n                else {\n                    if( !$this->supress_tickmarks && !$this->supress_minor_tickmarks) {\n                        if( $this->mincolor!=\"\" ) {\n                            $img->PushColor($this->mincolor);\n                        }\n                        $img->Line($pos,$ys,$a,$ys);\n                        if( $this->mincolor!=\"\" ) {\n                            $img->PopColor();\n                        }\n                    }\n                }\n            }\n        }\n        else {\n            $a=$pos - $this->direction*$this->GetMinTickAbsSize();\n            $a2=$pos - $this->direction*$this->GetMajTickAbsSize();\n            $count=1;\n            $this->maj_ticks_pos[0]=$scale->Translate($start);\n            $this->maj_ticklabels_pos[0]=$scale->Translate($start);\n            if( $this->supress_first ) {\n                $this->maj_ticks_label[0]=\"\";\n            }\n            else {\n                if( $this->label_formfunc != '' ) {\n                    $f = $this->label_formfunc;\n                    $this->maj_ticks_label[0]=call_user_func($f,$start);\n                }\n                elseif( $this->label_logtype == 0 ) {\n                    $this->maj_ticks_label[0]=$start;\n                }\n                else {\n                    $this->maj_ticks_label[0]='10^'.round(log10($start));\n                }\n            }\n            $i=1;\n            for($x=$start; $x<=$limit; $x+=$step,++$count  ) {\n                $xs=$scale->Translate($x);\n                $this->ticks_pos[]=$xs;\n                $this->ticklabels_pos[]=$xs;\n                if( $count % 10 == 0 ) {\n                    if( !$this->supress_tickmarks ) {\n                        $img->Line($xs,$pos,$xs,$a2);\n                    }\n                    $this->maj_ticks_pos[$i]=$xs;\n                    $this->maj_ticklabels_pos[$i]=$xs;\n\n                    if( $this->label_formfunc != '' ) {\n                        $f = $this->label_formfunc;\n                        $this->maj_ticks_label[$i]=call_user_func($f,$nextMajor);\n                    }\n                    elseif( $this->label_logtype == 0 ) {\n                        $this->maj_ticks_label[$i]=$nextMajor;\n                    }\n                    else {\n                        $this->maj_ticks_label[$i]='10^'.round(log10($nextMajor));\n                    }\n                    ++$i;\n                    $nextMajor *= 10;\n                    $step *= 10;\n                    $count=1;\n                }\n                else {\n                    if( !$this->supress_tickmarks && !$this->supress_minor_tickmarks) {\n                        $img->Line($xs,$pos,$xs,$a);\n                    }\n                }\n            }\n        }\n        return true;\n    }\n} // Class\n/* EOF */\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_meshinterpolate.inc.php",
    "content": "<?php\n/*=======================================================================\n// File:        JPGRAPH_MESHINTERPOLATE.INC.PHP\n// Description: Utility class to do mesh linear interpolation of a matrix\n// Created:     2009-03-09\n// Ver:         $Id: jpgraph_meshinterpolate.inc.php 1709 2009-07-30 08:00:08Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n*/\n  \n/**\n* Utility function to do linear mesh interpolation\n* @param $aDat Matrix to interpolate\n* @param $aFactor Interpolation factor  \n*/\nfunction doMeshInterpolate( &$aData, $aFactor ) {\n    $m = new MeshInterpolate();\n    $aData = $m->Linear($aData,$aFactor);\n}\n\n/**\n * Utility class to interpolate a given data matrix\n *\n */\nclass MeshInterpolate {\n    private $data = array();\n\n   /**\n    * Calculate the mid points of the given rectangle which has its top left\n    * corner at $row,$col. The $aFactordecides how many spliots should be done.\n    * i.e. how many more divisions should be done recursively\n    *\n    * @param $row Top left corner of square to work with\n    * @param $col Top left corner of square to work with\n    * $param $aFactor In how many subsquare should we split this square. A value of 1 indicates that no action\n    */\n    function IntSquare( $aRow, $aCol, $aFactor ) {\n        if ( $aFactor <= 1 )\n            return;\n\n        $step = pow( 2, $aFactor-1 );\n\n        $v0 = $this->data[$aRow][$aCol];\n        $v1 = $this->data[$aRow][$aCol + $step];\n        $v2 = $this->data[$aRow + $step][$aCol];\n        $v3 = $this->data[$aRow + $step][$aCol + $step];\n\n        $this->data[$aRow][$aCol + $step / 2] = ( $v0 + $v1 ) / 2;\n        $this->data[$aRow + $step / 2][$aCol] = ( $v0 + $v2 ) / 2;\n        $this->data[$aRow + $step][$aCol + $step / 2] = ( $v2 + $v3 ) / 2;\n        $this->data[$aRow + $step / 2][$aCol + $step] = ( $v1 + $v3 ) / 2;\n        $this->data[$aRow + $step / 2][$aCol + $step / 2] = ( $v0 + $v1 + $v2 + $v3 ) / 4;\n\n        $this->IntSquare( $aRow, $aCol, $aFactor-1 );\n        $this->IntSquare( $aRow, $aCol + $step / 2, $aFactor-1 );\n        $this->IntSquare( $aRow + $step / 2, $aCol, $aFactor-1 );\n        $this->IntSquare( $aRow + $step / 2, $aCol + $step / 2, $aFactor-1 );\n    }\n\n    /**\n     * Interpolate values in a matrice so that the total number of data points\n     * in vert and horizontal axis are $aIntNbr more. For example $aIntNbr=2 will\n     * make the data matrice have tiwce as many vertical and horizontal dta points.\n     *\n     * Note: This will blow up the matrcide in memory size in the order of $aInNbr^2\n     *\n     * @param  $ &$aData The original data matricde\n     * @param  $aInNbr Interpolation factor\n     * @return the interpolated matrice\n     */\n    function Linear( &$aData, $aIntFactor ) {\n        $step = pow( 2, $aIntFactor-1 );\n\n        $orig_cols = count( $aData[0] );\n        $orig_rows = count( $aData );\n        // Number of new columns/rows\n        // N = (a-1) * 2^(f-1) + 1\n        $p = pow( 2, $aIntFactor-1 );\n        $new_cols = $p * ( $orig_cols - 1 ) + 1;\n        $new_rows = $p * ( $orig_rows - 1 ) + 1;\n\n        $this->data = array_fill( 0, $new_rows, array_fill( 0, $new_cols, 0 ) );\n        // Initialize the new matrix with the values that we know\n        for ( $i = 0; $i < $new_rows; $i++ ) {\n            for ( $j = 0; $j < $new_cols; $j++ ) {\n                $v = 0 ;\n                if ( ( $i % $step == 0 ) && ( $j % $step == 0 ) ) {\n                    $v = $aData[$i / $step][$j / $step];\n                }\n                $this->data[$i][$j] = $v;\n            }\n        }\n\n        for ( $i = 0; $i < $new_rows-1; $i += $step ) {\n            for ( $j = 0; $j < $new_cols-1; $j += $step ) {\n                $this->IntSquare( $i, $j, $aIntFactor );\n            }\n        }\n\n        return $this->data;\n    }\n}\n  \n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_mgraph.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_MGRAPH.PHP\n // Description: Class to handle multiple graphs in the same image\n // Created:     2006-01-15\n // Ver:         $Id: jpgraph_mgraph.php 1770 2009-08-17 06:10:22Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\n//=============================================================================\n// CLASS MGraph\n// Description: Create a container image that can hold several graph\n//=============================================================================\nclass MGraph {\n\n    public $title = null, $subtitle = null, $subsubtitle = null;\n\n    protected $img=NULL;\n    protected $iCnt=0,$iGraphs = array(); // image_handle, x, y, fx, fy, sizex, sizey\n    protected $iFillColor='white', $iCurrentColor=0;\n    protected $lm=4,$rm=4,$tm=4,$bm=4;\n    protected $iDoFrame = FALSE, $iFrameColor = 'black', $iFrameWeight = 1;\n    protected $iLineWeight = 1;\n    protected $expired=false;\n    protected $cache=null,$cache_name = '',$inline=true;\n    protected $image_format='png',$image_quality=75;\n    protected $iWidth=NULL,$iHeight=NULL;\n    protected $background_image='',$background_image_center=true,\n    $backround_image_format='',$background_image_mix=100,\n    $background_image_y=NULL, $background_image_x=NULL;\n    private $doshadow=false, $shadow_width=4, $shadow_color='gray@0.5';\n    public $footer;\n\n\n    // Create a new instane of the combined graph\n    function __construct($aWidth=NULL,$aHeight=NULL,$aCachedName='',$aTimeOut=0,$aInline=true) {\n        $this->iWidth = $aWidth;\n        $this->iHeight = $aHeight;\n\n        // If the cached version exist just read it directly from the\n        // cache, stream it back to browser and exit\n        if( $aCachedName!='' && READ_CACHE && $aInline ) {\n            $this->cache = new ImgStreamCache();\n            $this->cache->SetTimeOut($aTimeOut);\n            $image = new Image();\n            if( $this->cache->GetAndStream($image,$aCachedName) ) {\n                exit();\n            }\n        }\n        $this->inline = $aInline;\n        $this->cache_name = $aCachedName;\n\n        $this->title = new Text();\n        $this->title->ParagraphAlign('center');\n        $this->title->SetFont(FF_FONT2,FS_BOLD);\n        $this->title->SetMargin(3);\n        $this->title->SetAlign('center');\n\n        $this->subtitle = new Text();\n        $this->subtitle->ParagraphAlign('center');\n        $this->subtitle->SetFont(FF_FONT1,FS_BOLD);\n        $this->subtitle->SetMargin(3);\n        $this->subtitle->SetAlign('center');\n\n        $this->subsubtitle = new Text();\n        $this->subsubtitle->ParagraphAlign('center');\n        $this->subsubtitle->SetFont(FF_FONT1,FS_NORMAL);\n        $this->subsubtitle->SetMargin(3);\n        $this->subsubtitle->SetAlign('center');\n\n        $this->footer = new Footer();\n\n    }\n\n    // Specify background fill color for the combined graph\n    function SetFillColor($aColor) {\n        $this->iFillColor = $aColor;\n    }\n\n    // Add a frame around the combined graph\n    function SetFrame($aFlg,$aColor='black',$aWeight=1) {\n        $this->iDoFrame = $aFlg;\n        $this->iFrameColor = $aColor;\n        $this->iFrameWeight = $aWeight;\n    }\n\n    // Specify a background image blend\n    function SetBackgroundImageMix($aMix) {\n        $this->background_image_mix = $aMix ;\n    }\n\n    // Specify a background image\n    function SetBackgroundImage($aFileName,$aCenter_aX=NULL,$aY=NULL) {\n        // Second argument can be either a boolean value or\n        // a numeric\n        $aCenter=TRUE;\n        $aX=NULL;\n\n        if( is_numeric($aCenter_aX) ) {\n            $aX=$aCenter_aX;\n        }\n\n        // Get extension to determine image type\n        $e = explode('.',$aFileName);\n        if( !$e ) {\n            JpGraphError::RaiseL(12002,$aFileName);\n            //('Incorrect file name for MGraph::SetBackgroundImage() : '.$aFileName.' Must have a valid image extension (jpg,gif,png) when using autodetection of image type');\n        }\n\n        $valid_formats = array('png', 'jpg', 'gif');\n        $aImgFormat = strtolower($e[count($e)-1]);\n        if ($aImgFormat == 'jpeg')  {\n            $aImgFormat = 'jpg';\n        }\n        elseif (!in_array($aImgFormat, $valid_formats) )  {\n            JpGraphError::RaiseL(12003,$aImgFormat,$aFileName);\n            //('Unknown file extension ($aImgFormat) in MGraph::SetBackgroundImage() for filename: '.$aFileName);\n        }\n\n        $this->background_image = $aFileName;\n        $this->background_image_center=$aCenter;\n        $this->background_image_format=$aImgFormat;\n        $this->background_image_x = $aX;\n        $this->background_image_y = $aY;\n    }\n\n    function _strokeBackgroundImage() {\n        if( $this->background_image == '' ) return;\n\n        $bkgimg = Graph::LoadBkgImage('',$this->background_image);\n\n        // Background width & Heoght\n        $bw = imagesx($bkgimg);\n        $bh = imagesy($bkgimg);\n\n        // Canvas width and height\n        $cw = imagesx($this->img);\n        $ch = imagesy($this->img);\n\n        if( $this->doshadow ) {\n            $cw -= $this->shadow_width;\n            $ch -= $this->shadow_width;\n        }\n\n        if( $this->background_image_x === NULL || $this->background_image_y === NULL ) {\n            if( $this->background_image_center ) {\n                // Center original image in the plot area\n                $x = round($cw/2-$bw/2); $y = round($ch/2-$bh/2);\n            }\n            else {\n                // Just copy the image from left corner, no resizing\n                $x=0; $y=0;\n            }\n        }\n        else {\n            $x = $this->background_image_x;\n            $y = $this->background_image_y;\n        }\n        imagecopymerge($this->img,$bkgimg,$x,$y,0,0,$bw,$bh,$this->background_image_mix);\n    }\n\n    function AddMix($aGraph,$x=0,$y=0,$mix=100,$fx=0,$fy=0,$w=0,$h=0) {\n        $this->_gdImgHandle($aGraph->Stroke( _IMG_HANDLER),$x,$y,$fx=0,$fy=0,$w,$h,$mix);\n    }\n\n    function Add($aGraph,$x=0,$y=0,$fx=0,$fy=0,$w=0,$h=0) {\n        $this->_gdImgHandle($aGraph->Stroke( _IMG_HANDLER),$x,$y,$fx=0,$fy=0,$w,$h);\n    }\n\n    function _gdImgHandle($agdCanvas,$x,$y,$fx=0,$fy=0,$w=0,$h=0,$mix=100) {\n        if( $w == 0 ) {\n            $w = @imagesx($agdCanvas);\n        }\n        if( $w === NULL ) {\n            JpGraphError::RaiseL(12007);\n            //('Argument to MGraph::Add() is not a valid GD image handle.');\n            return;\n        }\n        if( $h == 0 ) {\n            $h = @imagesy($agdCanvas);\n        }\n        $this->iGraphs[$this->iCnt++] = array($agdCanvas,$x,$y,$fx,$fy,$w,$h,$mix);\n    }\n\n    function SetMargin($lm,$rm,$tm,$bm) {\n        $this->lm = $lm;\n        $this->rm = $rm;\n        $this->tm = $tm;\n        $this->bm = $bm;\n    }\n\n    function SetExpired($aFlg=true) {\n        $this->expired = $aFlg;\n    }\n\n    function SetImgFormat($aFormat,$aQuality=75) {\n        $this->image_format = $aFormat;\n        $this->image_quality = $aQuality;\n    }\n\n    // Set the shadow around the whole image\n    function SetShadow($aShowShadow=true,$aShadowWidth=4,$aShadowColor='gray@0.3') {\n        $this->doshadow = $aShowShadow;\n        $this->shadow_color = $aShadowColor;\n        $this->shadow_width = $aShadowWidth;\n        $this->footer->iBottomMargin += $aShadowWidth;\n        $this->footer->iRightMargin += $aShadowWidth;\n    }\n\n    function StrokeTitle($image,$w,$h) {\n        // Stroke title\n        if( $this->title->t !== '' ) {\n\n            $margin = 3;\n\n            $y = $this->title->margin;\n            if( $this->title->halign == 'center' ) {\n                $this->title->Center(0,$w,$y);\n            }\n            elseif( $this->title->halign == 'left' ) {\n                $this->title->SetPos($this->title->margin+2,$y);\n            }\n            elseif( $this->title->halign == 'right' ) {\n                $indent = 0;\n                if( $this->doshadow ) {\n                    $indent = $this->shadow_width+2;\n                }\n                $this->title->SetPos($w-$this->title->margin-$indent,$y,'right');\n            }\n            $this->title->Stroke($image);\n\n            // ... and subtitle\n            $y += $this->title->GetTextHeight($image) + $margin + $this->subtitle->margin;\n            if( $this->subtitle->halign == 'center' ) {\n                $this->subtitle->Center(0,$w,$y);\n            }\n            elseif( $this->subtitle->halign == 'left' ) {\n                $this->subtitle->SetPos($this->subtitle->margin+2,$y);\n            }\n            elseif( $this->subtitle->halign == 'right' ) {\n                $indent = 0;\n                if( $this->doshadow ) {\n                    $indent = $this->shadow_width+2;\n                }\n                $this->subtitle->SetPos($this->img->width-$this->subtitle->margin-$indent,$y,'right');\n            }\n            $this->subtitle->Stroke($image);\n\n            // ... and subsubtitle\n            $y += $this->subtitle->GetTextHeight($image) + $margin + $this->subsubtitle->margin;\n            if( $this->subsubtitle->halign == 'center' ) {\n                $this->subsubtitle->Center(0,$w,$y);\n            }\n            elseif( $this->subsubtitle->halign == 'left' ) {\n                $this->subsubtitle->SetPos($this->subsubtitle->margin+2,$y);\n            }\n            elseif( $this->subsubtitle->halign == 'right' ) {\n                $indent = 0;\n                if( $this->doshadow ) {\n                    $indent = $this->shadow_width+2;\n                }\n                $this->subsubtitle->SetPos($w-$this->subsubtitle->margin-$indent,$y,'right');\n            }\n            $this->subsubtitle->Stroke($image);\n\n        }\n    }\n\n    function Stroke($aFileName='') {\n        // Find out the necessary size for the container image\n        $w=0; $h=0;\n        for($i=0; $i < $this->iCnt; ++$i ) {\n            $maxw = $this->iGraphs[$i][1]+$this->iGraphs[$i][5];\n            $maxh = $this->iGraphs[$i][2]+$this->iGraphs[$i][6];\n            $w = max( $w, $maxw );\n            $h = max( $h, $maxh );\n        }\n        $w += $this->lm+$this->rm;\n        $h += $this->tm+$this->bm;\n\n        // User specified width,height overrides\n        if( $this->iWidth !== NULL && $this->iWidth !== 0 ) $w = $this->iWidth;\n        if( $this->iHeight!== NULL && $this->iHeight !== 0) $h = $this->iHeight;\n\n        if( $this->doshadow ) {\n            $w += $this->shadow_width;\n            $h += $this->shadow_width;\n        }\n\n        $image = new Image($w,$h);\n        $image->SetImgFormat( $this->image_format,$this->image_quality);\n\n        if( $this->doshadow ) {\n            $image->SetColor($this->iFrameColor);\n            $image->ShadowRectangle(0,0,$w-1,$h-1,$this->iFillColor,$this->shadow_width,$this->shadow_color);\n            $w -= $this->shadow_width;\n            $h -= $this->shadow_width;\n        }\n        else {\n            $image->SetColor($this->iFillColor);\n            $image->FilledRectangle(0,0,$w-1,$h-1);\n        }\n        $image->SetExpired($this->expired);\n\n        $this->img = $image->img;\n        $this->_strokeBackgroundImage();\n\n        if( $this->iDoFrame && ! $this->doshadow ) {\n           $image->SetColor($this->iFrameColor);\n           $image->SetLineWeight($this->iFrameWeight);\n           $image->Rectangle(0,0,$w-1,$h-1);\n        }\n\n        // Copy all sub graphs to the container\n        for($i=0; $i < $this->iCnt; ++$i ) {\n            $image->CopyMerge($this->iGraphs[$i][0],\n                            $this->iGraphs[$i][1]+$this->lm,$this->iGraphs[$i][2]+$this->tm,\n                            $this->iGraphs[$i][3],$this->iGraphs[$i][4],\n                            $this->iGraphs[$i][5],$this->iGraphs[$i][6],\n                            -1,-1, /* Full from width and height */\n                            $this->iGraphs[$i][7]);\n\n\n        }\n\n        $this->StrokeTitle($image,$w,$h);\n        $this->footer->Stroke($image);\n\n        // Output image\n        if( $aFileName == _IMG_HANDLER ) {\n            return $image->img;\n        }\n        else {\n            //Finally stream the generated picture\n            $this->cache = new ImgStreamCache();\n            $this->cache->PutAndStream($image,$this->cache_name,$this->inline,$aFileName);\n        }\n    }\n}\n\n// EOF\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_pie.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_PIE.PHP\n // Description: Pie plot extension for JpGraph\n // Created:     2001-02-14\n // Ver:         $Id: jpgraph_pie.php 1926 2010-01-11 16:33:07Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\n\n// Defines for PiePlot::SetLabelType()\ndefine(\"PIE_VALUE_ABS\",1);\ndefine(\"PIE_VALUE_PER\",0);\n//MiToTeam: PIE_VALUE_PERCENTAGE is not used in jpgraph but interferes with same constant in https://github.com/szymach/c-pchart\n//define it only if not defined yet\nif(!defined(\"PIE_VALUE_PERCENTAGE\")) {\n    define(\"PIE_VALUE_PERCENTAGE\", 0);\n}\ndefine(\"PIE_VALUE_ADJPERCENTAGE\",2);\ndefine(\"PIE_VALUE_ADJPER\",2);\n\n//===================================================\n// CLASS PiePlot\n// Description: Draws a pie plot\n//===================================================\nclass PiePlot {\n    public $posx=0.5,$posy=0.5;\n    public $is_using_plot_theme = false;\n    public $theme=\"earth\";\n    protected $use_plot_theme_colors = false;\n    protected $radius=0.3;\n    protected $explode_radius=array(),$explode_all=false,$explode_r=20;\n    protected $labels=null, $legends=null;\n    protected $csimtargets=null,$csimwintargets=null;  // Array of targets for CSIM\n    protected $csimareas='';  // Generated CSIM text\n    protected $csimalts=null;  // ALT tags for corresponding target\n    protected $data=null;\n    public $title;\n    protected $startangle=0;\n    protected $weight=1, $color=\"black\";\n    protected $legend_margin=6,$show_labels=true;\n    protected $themearr = array(\n \"earth\"  => array(136,34,40,45,46,62,63,134,74,10,120,136,141,168,180,77,209,218,346,395,89,430),\n \"pastel\" => array(27,415,128,59,66,79,105,110,42,147,152,230,236,240,331,337,405,38),\n \"water\"  => array(8,370,24,40,335,56,213,237,268,14,326,387,10,388),\n \"sand\"   => array(27,168,34,170,19,50,65,72,131,209,46,393));\n    protected $setslicecolors=array();\n    protected $labeltype=0; // Default to percentage\n    protected $pie_border=true,$pie_interior_border=true;\n    public $value;\n    protected $ishadowcolor='',$ishadowdrop=4;\n    protected $ilabelposadj=1;\n    protected $legendcsimtargets = array(),$legendcsimwintargets = array();\n    protected $legendcsimalts = array();\n    protected $adjusted_data = array();\n    public $guideline = null;\n    protected $guidelinemargin=10,$iShowGuideLineForSingle = false;\n    protected $iGuideLineCurve = false,$iGuideVFactor=1.4,$iGuideLineRFactor=0.8;\n    protected $la = array(); // Holds the exact angle for each label\n\n    //---------------\n    // CONSTRUCTOR\n    function __construct($data) {\n        $this->data = array_reverse($data);\n        $this->title = new Text(\"\");\n        $this->title->SetFont(FF_DEFAULT,FS_BOLD);\n        $this->value = new DisplayValue();\n        $this->value->Show();\n        $this->value->SetFormat('%.1f%%');\n        $this->guideline = new LineProperty();\n    }\n\n    //---------------\n    // PUBLIC METHODS\n    function SetCenter($x,$y=0.5) {\n        $this->posx = $x;\n        $this->posy = $y;\n    }\n\n    // Enable guideline and set drwaing policy\n    function SetGuideLines($aFlg=true,$aCurved=true,$aAlways=false) {\n        $this->guideline->Show($aFlg);\n        $this->iShowGuideLineForSingle = $aAlways;\n        $this->iGuideLineCurve = $aCurved;\n    }\n\n    // Adjuste the distance between labels and labels and pie\n    function SetGuideLinesAdjust($aVFactor,$aRFactor=0.8) {\n        $this->iGuideVFactor=$aVFactor;\n        $this->iGuideLineRFactor=$aRFactor;\n    }\n\n    function SetColor($aColor) {\n        $this->color = $aColor;\n    }\n\n    function SetSliceColors($aColors) {\n        $this->setslicecolors = $aColors;\n    }\n\n    function SetShadow($aColor='darkgray',$aDropWidth=4) {\n        $this->ishadowcolor = $aColor;\n        $this->ishadowdrop = $aDropWidth;\n    }\n\n    function SetCSIMTargets($aTargets,$aAlts='',$aWinTargets='') {\n        $this->csimtargets=array_reverse($aTargets);\n        if( is_array($aWinTargets) )\n        $this->csimwintargets=array_reverse($aWinTargets);\n        if( is_array($aAlts) )\n        $this->csimalts=array_reverse($aAlts);\n    }\n\n    function GetCSIMareas() {\n        return $this->csimareas;\n    }\n\n    function AddSliceToCSIM($i,$xc,$yc,$radius,$sa,$ea) {\n        //Slice number, ellipse centre (x,y), height, width, start angle, end angle\n        while( $sa > 2*M_PI ) $sa = $sa - 2*M_PI;\n        while( $ea > 2*M_PI ) $ea = $ea - 2*M_PI;\n\n        $sa = 2*M_PI - $sa;\n        $ea = 2*M_PI - $ea;\n\n        // Special case when we have only one slice since then both start and end\n        // angle will be == 0\n        if( abs($sa - $ea) < 0.0001 ) {\n            $sa=2*M_PI; $ea=0;\n        }\n\n        //add coordinates of the centre to the map\n        $xc = floor($xc);$yc=floor($yc);\n        $coords = \"$xc, $yc\";\n\n        //add coordinates of the first point on the arc to the map\n        $xp = floor(($radius*cos($ea))+$xc);\n        $yp = floor($yc-$radius*sin($ea));\n        $coords.= \", $xp, $yp\";\n\n        //add coordinates every 0.2 radians\n        $a=$ea+0.2;\n\n        // If we cross the 360-limit with a slice we need to handle\n        // the fact that end angle is smaller than start\n        if( $sa < $ea ) {\n            while ($a <= 2*M_PI) {\n                $xp = floor($radius*cos($a)+$xc);\n                $yp = floor($yc-$radius*sin($a));\n                $coords.= \", $xp, $yp\";\n                $a += 0.2;\n            }\n            $a -= 2*M_PI;\n        }\n\n\n        while ($a < $sa) {\n            $xp = floor($radius*cos($a)+$xc);\n            $yp = floor($yc-$radius*sin($a));\n            $coords.= \", $xp, $yp\";\n            $a += 0.2;\n        }\n\n        //Add the last point on the arc\n        $xp = floor($radius*cos($sa)+$xc);\n        $yp = floor($yc-$radius*sin($sa));\n        $coords.= \", $xp, $yp\";\n        if( !empty($this->csimtargets[$i]) ) {\n            $this->csimareas .= \"<area shape=\\\"poly\\\" coords=\\\"$coords\\\" href=\\\"\".$this->csimtargets[$i].\"\\\"\";\n            $tmp=\"\";\n            if( !empty($this->csimwintargets[$i]) ) {\n                $this->csimareas .= \" target=\\\"\".$this->csimwintargets[$i].\"\\\" \";\n            }\n            if( !empty($this->csimalts[$i]) ) {\n                $tmp=sprintf($this->csimalts[$i],$this->data[$i]);\n                $this->csimareas .= \" title=\\\"$tmp\\\" alt=\\\"$tmp\\\" \";\n            }\n            $this->csimareas .= \" />\\n\";\n        }\n    }\n\n\n    function SetTheme($aTheme) {\n//        JpGraphError::RaiseL(15012,$aTheme);\n//        return;\n\n        if( in_array($aTheme,array_keys($this->themearr)) ) {\n            $this->theme = $aTheme;\n            $this->is_using_plot_theme = true;\n        } else {\n            JpGraphError::RaiseL(15001,$aTheme);//(\"PiePLot::SetTheme() Unknown theme: $aTheme\");\n        }\n    }\n\n    function ExplodeSlice($e,$radius=20) {\n        if( ! is_integer($e) )\n        JpGraphError::RaiseL(15002);//('Argument to PiePlot::ExplodeSlice() must be an integer');\n        $this->explode_radius[$e]=$radius;\n    }\n\n    function ExplodeAll($radius=20) {\n        $this->explode_all=true;\n        $this->explode_r = $radius;\n    }\n\n    function Explode($aExplodeArr) {\n        if( !is_array($aExplodeArr) ) {\n            JpGraphError::RaiseL(15003);\n            //(\"Argument to PiePlot::Explode() must be an array with integer distances.\");\n        }\n        $this->explode_radius = $aExplodeArr;\n    }\n\n    function SetStartAngle($aStart) {\n        if( $aStart < 0 || $aStart > 360 ) {\n            JpGraphError::RaiseL(15004);//('Slice start angle must be between 0 and 360 degrees.');\n        }\n        if( $aStart == 0 ) {\n            $this->startangle = 0;\n        }\n        else {\n            $this->startangle = 360-$aStart;\n            $this->startangle *= M_PI/180;\n        }\n    }\n\n    // Size in percentage\n    function SetSize($aSize) {\n        if( ($aSize>0 && $aSize<=0.5) || ($aSize>10 && $aSize<1000) )\n        $this->radius = $aSize;\n        else\n        JpGraphError::RaiseL(15006);\n        //(\"PiePlot::SetSize() Radius for pie must either be specified as a fraction [0, 0.5] of the size of the image or as an absolute size in pixels  in the range [10, 1000]\");\n    }\n\n    // Set label arrays\n    function SetLegends($aLegend) {\n        $this->legends = $aLegend;\n    }\n\n    // Set text labels for slices\n    function SetLabels($aLabels,$aLblPosAdj=\"auto\") {\n        $this->labels = array_reverse($aLabels);\n        $this->ilabelposadj=$aLblPosAdj;\n    }\n\n    function SetLabelPos($aLblPosAdj) {\n        $this->ilabelposadj=$aLblPosAdj;\n    }\n\n    // Should we display actual value or percentage?\n    function SetLabelType($aType) {\n        if( $aType < 0 || $aType > 2 )\n        \tJpGraphError::RaiseL(15008,$aType);\n\t        //(\"PiePlot::SetLabelType() Type for pie plots must be 0 or 1 (not $t).\");\n        $this->labeltype = $aType;\n    }\n\n    // Deprecated.\n    function SetValueType($aType) {\n        $this->SetLabelType($aType);\n    }\n\n    // Should the circle around a pie plot be displayed\n    function ShowBorder($exterior=true,$interior=true) {\n        $this->pie_border = $exterior;\n        $this->pie_interior_border = $interior;\n    }\n\n    // Setup the legends\n    function Legend($graph) {\n        $colors = array_keys($graph->img->rgb->rgb_table);\n        sort($colors);\n        $ta=$this->themearr[$this->theme];\n        $n = count($this->data);\n\n        if( $this->setslicecolors==null ) {\n            $numcolors=count($ta);\n            if( class_exists('PiePlot3D',false) && ($this instanceof PiePlot3D) ) {\n                $ta = array_reverse(array_slice($ta,0,$n));\n            }\n        }\n        else {\n            $this->setslicecolors = array_slice($this->setslicecolors,0,$n);\n            $numcolors=count($this->setslicecolors);\n            if( $graph->pieaa && !($this instanceof PiePlot3D) ) {\n                $this->setslicecolors = array_reverse($this->setslicecolors);\n            }\n        }\n\n        $sum=0;\n        for($i=0; $i < $n; ++$i)\n            $sum += $this->data[$i];\n\n        // Bail out with error if the sum is 0\n        if( $sum==0 )\n        JpGraphError::RaiseL(15009);//(\"Illegal pie plot. Sum of all data is zero for Pie!\");\n\n        // Make sure we don't plot more values than data points\n        // (in case the user added more legends than data points)\n        $legendsCount = is_array($this->legends) ? count($this->legends) : 0;\n        $n = min($legendsCount,count($this->data));\n        if( $this->legends != \"\" ) {\n            $this->legends = array_reverse(array_slice($this->legends,0,$n));\n        }\n        for( $i=$n-1; $i >= 0; --$i ) {\n            $l = $this->legends[$i];\n            // Replace possible format with actual values\n            $count = is_array($this->csimalts) ? count($this->csimalts) : 0;\n            if( $count > $i ) {\n                $fmt = $this->csimalts[$i];\n            }\n            else {\n                $fmt = \"%d\"; // Deafult Alt if no other has been specified\n            }\n            if( $this->labeltype==0 ) {\n                $l = sprintf($l,100*$this->data[$i]/$sum);\n                $alt = sprintf($fmt,$this->data[$i]);\n\n            }\n            elseif( $this->labeltype == 1)  {\n                $l = sprintf($l,$this->data[$i]);\n                $alt = sprintf($fmt,$this->data[$i]);\n\n            }\n            else {\n                $l = sprintf($l,$this->adjusted_data[$i]);\n                $alt = sprintf($fmt,$this->adjusted_data[$i]);\n            }\n\n            if( empty($this->csimwintargets[$i]) ) {\n                $wintarg = '';\n            }\n            else {\n                $wintarg = $this->csimwintargets[$i];\n            }\n\n            if( $this->setslicecolors==null ) {\n                $csimtarget = isset($this->csimtargets[$i]) ? $this->csimtargets[$i] : null;\n                $graph->legend->Add($l,$colors[$ta[$i%$numcolors]],\"\",0,$csimtarget,$alt,$wintarg);\n            }\n            else {\n                $csimtarget = isset($this->csimtargets[$i]) ? $this->csimtargets[$i] : null;\n                $graph->legend->Add($l,$this->setslicecolors[$i%$numcolors],\"\",0,$csimtarget,$alt,$wintarg);\n            }\n        }\n    }\n\n    // Adjust the rounded percetage value so that the sum of\n    // of the pie slices are always 100%\n    // Using the Hare/Niemeyer method\n    function AdjPercentage($aData,$aPrec=0) {\n        $mul=100;\n        if( $aPrec > 0 && $aPrec < 3 ) {\n            if( $aPrec == 1 )\n            $mul=1000;\n            else\n            $mul=10000;\n        }\n\n        $tmp = array();\n        $result = array();\n        $quote_sum=0;\n        $n = count($aData) ;\n        for( $i=0, $sum=0; $i < $n; ++$i )\n        $sum+=$aData[$i];\n        foreach($aData as $index => $value) {\n            $tmp_percentage=$value/$sum*$mul;\n            $result[$index]=floor($tmp_percentage);\n            $tmp[$index]=$tmp_percentage-$result[$index];\n            $quote_sum+=$result[$index];\n        }\n        if( $quote_sum == $mul) {\n            if( $mul > 100 ) {\n                $tmp = $mul / 100;\n                for( $i=0; $i < $n; ++$i ) {\n                    $result[$i] /= $tmp ;\n                }\n            }\n            return $result;\n        }\n        arsort($tmp,SORT_NUMERIC);\n        reset($tmp);\n        for($i=0; $i < $mul-$quote_sum; $i++)\n        {\n            $result[key($tmp)]++;\n            next($tmp);\n        }\n        if( $mul > 100 ) {\n            $tmp = $mul / 100;\n            for( $i=0; $i < $n; ++$i ) {\n                $result[$i] /= $tmp ;\n            }\n        }\n        return $result;\n    }\n\n\n    function Stroke($img,$aaoption=0) {\n        // aaoption is used to handle antialias\n        // aaoption == 0 a normal pie\n        // aaoption == 1 just the body\n        // aaoption == 2 just the values\n\n        // Explode scaling. If anti alias we scale the image\n        // twice and we also need to scale the exploding distance\n        $expscale = $aaoption === 1 ? 2 : 1;\n\n        if( $this->labeltype == 2 ) {\n            // Adjust the data so that it will add up to 100%\n            $this->adjusted_data = $this->AdjPercentage($this->data);\n        }\n\n        if ($this->use_plot_theme_colors) {\n            $this->setslicecolors = null;\n        }\n\n        $colors = array_keys($img->rgb->rgb_table);\n        sort($colors);\n        $ta=$this->themearr[$this->theme];\n        $n = count($this->data);\n\n        if( $this->setslicecolors==null ) {\n            $numcolors=count($ta);\n        }\n        else {\n            // We need to create an array of colors as long as the data\n            // since we need to reverse it to get the colors in the right order\n            $numcolors=count($this->setslicecolors);\n            $i = 2*$numcolors;\n            while( $n > $i ) {\n                $this->setslicecolors = array_merge($this->setslicecolors,$this->setslicecolors);\n                $i += $n;\n            }\n            $tt = array_slice($this->setslicecolors,0,$n % $numcolors);\n            $this->setslicecolors = array_merge($this->setslicecolors,$tt);\n            $this->setslicecolors = array_reverse($this->setslicecolors);\n        }\n\n        // Draw the slices\n        $sum=0;\n        for($i=0; $i < $n; ++$i)\n            $sum += $this->data[$i];\n\n        // Bail out with error if the sum is 0\n        if( $sum==0 ) {\n            JpGraphError::RaiseL(15009);//(\"Sum of all data is 0 for Pie.\");\n        }\n\n        // Set up the pie-circle\n        if( $this->radius <= 1 ) {\n            $radius = floor($this->radius*min($img->width,$img->height));\n        }\n        else {\n            $radius = $aaoption === 1 ? $this->radius*2 : $this->radius;\n        }\n\n        if( $this->posx <= 1 && $this->posx > 0 ) {\n            $xc = round($this->posx*$img->width);\n        }\n        else {\n            $xc = $this->posx ;\n        }\n\n        if( $this->posy <= 1 && $this->posy > 0 ) {\n            $yc = round($this->posy*$img->height);\n        }\n        else {\n            $yc = $this->posy ;\n        }\n\n        $n = count($this->data);\n\n        if( $this->explode_all ) {\n            for($i=0; $i < $n; ++$i) {\n                $this->explode_radius[$i]=$this->explode_r;\n            }\n        }\n\n        // If we have a shadow and not just drawing the labels\n        if( $this->ishadowcolor != \"\" && $aaoption !== 2) {\n            $accsum=0;\n            $angle2 = $this->startangle;\n            $img->SetColor($this->ishadowcolor);\n            for($i=0; $sum > 0 && $i < $n; ++$i) {\n                $j = $n-$i-1;\n                $d = $this->data[$i];\n                $angle1 = $angle2;\n                $accsum += $d;\n                $angle2 = $this->startangle+2*M_PI*$accsum/$sum;\n                if( empty($this->explode_radius[$j]) ) {\n                    $this->explode_radius[$j]=0;\n                }\n\n                if( $d < 0.00001 ) continue;\n\n                $la = 2*M_PI - (abs($angle2-$angle1)/2.0+$angle1);\n\n                $xcm = $xc + $this->explode_radius[$j]*cos($la)*$expscale;\n                $ycm = $yc - $this->explode_radius[$j]*sin($la)*$expscale;\n\n                $xcm += $this->ishadowdrop*$expscale;\n                $ycm += $this->ishadowdrop*$expscale;\n\n                $_sa = round($angle1*180/M_PI);\n                $_ea = round($angle2*180/M_PI);\n\n                // The CakeSlice method draws a full circle in case of start angle = end angle\n                // for pie slices we don't want this behaviour unless we only have one\n                // slice in the pie in case it is the wanted behaviour\n                if( $_ea-$_sa > 0.1 || $n==1 ) {\n                    $img->CakeSlice($xcm,$ycm,$radius-1,$radius-1,\n                    $angle1*180/M_PI,$angle2*180/M_PI,$this->ishadowcolor);\n                }\n            }\n        }\n\n        //--------------------------------------------------------------------------------\n        // This is the main loop to draw each cake slice\n        //--------------------------------------------------------------------------------\n\n        // Set up the accumulated sum, start angle for first slice and border color\n        $accsum=0;\n        $angle2 = $this->startangle;\n        $img->SetColor($this->color);\n\n        // Loop though all the slices if there is a pie to draw (sum>0)\n        // There are n slices in total\n        for($i=0; $sum>0 && $i < $n; ++$i) {\n\n            // $j is the actual index used for the slice\n            $j = $n-$i-1;\n\n            // Make sure we havea  valid distance to explode the slice\n            if( empty($this->explode_radius[$j]) ) {\n                $this->explode_radius[$j]=0;\n            }\n\n            // The actual numeric value for the slice\n            $d = $this->data[$i];\n\n            $angle1 = $angle2;\n\n            // Accumlate the sum\n            $accsum += $d;\n\n            // The new angle when we add the \"size\" of this slice\n            // angle1 is then the start and angle2 the end of this slice\n            $angle2 = $this->NormAngle($this->startangle+2*M_PI*$accsum/$sum);\n\n            // We avoid some trouble by not allowing end angle to be 0, in that case\n            // we translate to 360\n\n            // la is used to hold the label angle, which is centered on the slice\n            if( $angle2 < 0.0001 && $angle1 > 0.0001 ) {\n                $this->la[$i] = 2*M_PI - (abs(2*M_PI-$angle1)/2.0+$angle1);\n            }\n            elseif( $angle1 > $angle2 ) {\n                // The case where the slice crosses the 3 a'clock line\n                // Remember that the slices are counted clockwise and\n                // labels are counted counter clockwise so we need to revert with 2 PI\n                $this->la[$i] = 2*M_PI-$this->NormAngle($angle1 + ((2*M_PI - $angle1)+$angle2)/2);\n            }\n            else {\n                $this->la[$i] = 2*M_PI - (abs($angle2-$angle1)/2.0+$angle1);\n            }\n\n            // Too avoid rounding problems we skip the slice if it is too small\n            if( $d < 0.00001 ) continue;\n\n            // If the user has specified an array of colors for each slice then use\n            // that a color otherwise use the theme array (ta) of colors\n            if( $this->setslicecolors==null ) {\n                $slicecolor=$colors[$ta[$i%$numcolors]];\n            }\n            else {\n                $slicecolor=$this->setslicecolors[$i%$numcolors];\n            }\n\n//            $_sa = round($angle1*180/M_PI);\n//            $_ea = round($angle2*180/M_PI);\n//            $_la = round($this->la[$i]*180/M_PI);\n//            echo \"Slice#$i: ang1=$_sa , ang2=$_ea, la=$_la, color=$slicecolor<br>\";\n\n\n            // If we have enabled antialias then we don't draw any border so\n            // make the bordedr color the same as the slice color\n            if( $this->pie_interior_border && $aaoption===0 ) {\n                $img->SetColor($this->color);\n            }\n            else {\n                $img->SetColor($slicecolor);\n            }\n            $arccolor = $this->pie_border && $aaoption===0 ? $this->color : \"\";\n\n            // Calculate the x,y coordinates for the base of this slice taking\n            // the exploded distance into account. Here we use the mid angle as the\n            // ray of extension and we have the mid angle handy as it is also the\n            // label angle\n            $xcm = $xc + $this->explode_radius[$j]*cos($this->la[$i])*$expscale;\n            $ycm = $yc - $this->explode_radius[$j]*sin($this->la[$i])*$expscale;\n\n            // If we are not just drawing the labels then draw this cake slice\n            if( $aaoption !== 2 ) {\n\n                $_sa = round($angle1*180/M_PI);\n                $_ea = round($angle2*180/M_PI);\n                $_la = round($this->la[$i]*180/M_PI);\n                //echo \"[$i] sa=$_sa, ea=$_ea, la[$i]=$_la, (color=$slicecolor)<br>\";\n\n                // The CakeSlice method draws a full circle in case of start angle = end angle\n                // for pie slices we want this in case the slice have a value larger than 99% of the\n                // total sum\n                if( abs($_ea-$_sa) >= 1 || $d == $sum ) {\n                    $img->CakeSlice($xcm,$ycm,$radius-1,$radius-1,$_sa,$_ea,$slicecolor,$arccolor);\n                }\n            }\n\n            // If the CSIM is used then make sure we register a CSIM area for this slice as well\n            if( $this->csimtargets && $aaoption !== 1 ) {\n                $this->AddSliceToCSIM($i,$xcm,$ycm,$radius,$angle1,$angle2);\n            }\n        }\n\n        // Format the titles for each slice\n        if( $aaoption !== 2 ) {\n            for( $i=0; $i < $n; ++$i) {\n                if( $this->labeltype==0 ) {\n                    if( $sum != 0 )\n                    $l = 100.0*$this->data[$i]/$sum;\n                    else\n                    $l = 0.0;\n                }\n                elseif( $this->labeltype==1 ) {\n                    $l = $this->data[$i]*1.0;\n                }\n                else {\n                    $l = $this->adjusted_data[$i];\n                }\n                if( isset($this->labels[$i]) && is_string($this->labels[$i]) )\n                $this->labels[$i]=sprintf($this->labels[$i],$l);\n                else\n                $this->labels[$i]=$l;\n            }\n        }\n\n        if( $this->value->show && $aaoption !== 1 ) {\n            $this->StrokeAllLabels($img,$xc,$yc,$radius);\n        }\n\n        // Adjust title position\n        if( $aaoption !== 1 ) {\n            $this->title->SetPos($xc,\n            $yc-$this->title->GetFontHeight($img)-$radius-$this->title->margin,\n     \"center\",\"bottom\");\n            $this->title->Stroke($img);\n        }\n\n    }\n\n    //---------------\n    // PRIVATE METHODS\n\n    function NormAngle($a) {\n        while( $a < 0 ) $a += 2*M_PI;\n        while( $a > 2*M_PI ) $a -= 2*M_PI;\n        return $a;\n    }\n\n    function Quadrant($a) {\n        $a=$this->NormAngle($a);\n        if( $a > 0 && $a <= M_PI/2 )\n        return 0;\n        if( $a > M_PI/2 && $a <= M_PI )\n        return 1;\n        if( $a > M_PI && $a <= 1.5*M_PI )\n        return 2;\n        if( $a > 1.5*M_PI )\n        return 3;\n    }\n\n    function StrokeGuideLabels($img,$xc,$yc,$radius) {\n        $n = count($this->labels);\n\n        //-----------------------------------------------------------------------\n        // Step 1 of the algorithm is to construct a number of clusters\n        // a cluster is defined as all slices within the same quadrant (almost)\n        // that has an angular distance less than the treshold\n        //-----------------------------------------------------------------------\n        $tresh_hold=25 * M_PI/180; // 25 degrees difference to be in a cluster\n        $incluster=false; // flag if we are currently in a cluster or not\n        $clusters = array(); // array of clusters\n        $cidx=-1;  // running cluster index\n\n        // Go through all the labels and construct a number of clusters\n        for($i=0; $i < $n-1; ++$i) {\n            // Calc the angle distance between two consecutive slices\n            $a1=$this->la[$i];\n            $a2=$this->la[$i+1];\n            $q1 = $this->Quadrant($a1);\n            $q2 = $this->Quadrant($a2);\n            $diff = abs($a1-$a2);\n            if( $diff < $tresh_hold ) {\n                if( $incluster ) {\n                    $clusters[$cidx][1]++;\n                    // Each cluster can only cover one quadrant\n                    // Do we cross a quadrant ( and must break the cluster)\n                    if( $q1 !=  $q2 ) {\n                        // If we cross a quadrant boundary we normally start a\n                        // new cluster. However we need to take the 12'a clock\n                        // and 6'a clock positions into a special consideration.\n                        // Case 1: WE go from q=1 to q=2 if the last slice on\n                        // the cluster for q=1 is close to 12'a clock and the\n                        // first slice in q=0 is small we extend the previous\n                        // cluster\n                        if( $q1 == 1 && $q2 == 0 && $a2 > (90-15)*M_PI/180 ) {\n                            if( $i < $n-2 ) {\n                                $a3 = $this->la[$i+2];\n                                // If there isn't a cluster coming up with the next-next slice\n                                // we extend the previous cluster to cover this slice as well\n                                if( abs($a3-$a2) >= $tresh_hold ) {\n                                    $clusters[$cidx][1]++;\n                                    $i++;\n                                }\n                            }\n                        }\n                        elseif( $q1 == 3 && $q2 == 2 && $a2 > (270-15)*M_PI/180 ) {\n                            if( $i < $n-2 ) {\n                                $a3 = $this->la[$i+2];\n                                // If there isn't a cluster coming up with the next-next slice\n                                // we extend the previous cluster to cover this slice as well\n                                if( abs($a3-$a2) >= $tresh_hold ) {\n                                    $clusters[$cidx][1]++;\n                                    $i++;\n                                }\n                            }\n                        }\n\n                        if( $q1==2 && $q2==1 && $a2 > (180-15)*M_PI/180 ) {\n                            $clusters[$cidx][1]++;\n                            $i++;\n                        }\n\n                        $incluster = false;\n                    }\n                }\n                elseif( $q1 == $q2)  {\n                    $incluster = true;\n                    // Now we have a special case for quadrant 0. If we previously\n                    // have a cluster of one in quadrant 0 we just extend that\n                    // cluster. If we don't do this then we risk that the label\n                    // for the cluster of one will cross the guide-line\n                    if( $q1 == 0 && $cidx > -1 &&\n                    $clusters[$cidx][1] == 1 &&\n                    $this->Quadrant($this->la[$clusters[$cidx][0]]) == 0 ) {\n                        $clusters[$cidx][1]++;\n                    }\n                    else {\n                        $cidx++;\n                        $clusters[$cidx][0] = $i;\n                        $clusters[$cidx][1] = 1;\n                    }\n                }\n                else {\n                    // Create a \"cluster\" of one since we are just crossing\n                    // a quadrant\n                    $cidx++;\n                    $clusters[$cidx][0] = $i;\n                    $clusters[$cidx][1] = 1;\n                }\n            }\n            else {\n                if( $incluster ) {\n                    // Add the last slice\n                    $clusters[$cidx][1]++;\n                    $incluster = false;\n                }\n                else { // Create a \"cluster\" of one\n                    $cidx++;\n                    $clusters[$cidx][0] = $i;\n                    $clusters[$cidx][1] = 1;\n                }\n            }\n        }\n        // Handle the very last slice\n        if( $incluster ) {\n            $clusters[$cidx][1]++;\n        }\n        else { // Create a \"cluster\" of one\n            $cidx++;\n            $clusters[$cidx][0] = $i;\n            $clusters[$cidx][1] = 1;\n        }\n\n        /*\n         if( true ) {\n         // Debug printout in labels\n         for( $i=0; $i <= $cidx; ++$i ) {\n         for( $j=0; $j < $clusters[$i][1]; ++$j ) {\n         $a = $this->la[$clusters[$i][0]+$j];\n         $aa = round($a*180/M_PI);\n         $q = $this->Quadrant($a);\n         $this->labels[$clusters[$i][0]+$j]=\"[$q:$aa] $i:$j\";\n         }\n         }\n         }\n         */\n\n        //-----------------------------------------------------------------------\n        // Step 2 of the algorithm is use the clusters and draw the labels\n        // and guidelines\n        //-----------------------------------------------------------------------\n\n        // We use the font height as the base factor for how far we need to\n        // spread the labels in the Y-direction.\n        $this->value->ApplyFont($img);\n        $fh = $img->GetFontHeight();\n        $origvstep=$fh*$this->iGuideVFactor;\n        $this->value->SetMargin(0);\n\n        // Number of clusters found\n        $nc = count($clusters);\n\n        // Walk through all the clusters\n        for($i=0; $i < $nc; ++$i) {\n\n            // Start angle and number of slices in this cluster\n            $csize = $clusters[$i][1];\n            $a = $this->la[$clusters[$i][0]];\n            $q = $this->Quadrant($a);\n\n            // Now set up the start and end conditions to make sure that\n            // in each cluster we walk through the all the slices starting with the slice\n            // closest to the equator. Since all slices are numbered clockwise from \"3'a clock\"\n            // we have different conditions depending on in which quadrant the slice lies within.\n            if( $q == 0 ) {\n                $start = $csize-1; $idx = $start; $step = -1; $vstep = -$origvstep;\n            }\n            elseif( $q == 1 ) {\n                $start = 0; $idx = $start; $step = 1; $vstep = -$origvstep;\n            }\n            elseif( $q == 2 ) {\n                $start = $csize-1; $idx = $start; $step = -1; $vstep = $origvstep;\n            }\n            elseif( $q == 3 ) {\n                $start = 0; $idx = $start; $step = 1; $vstep = $origvstep;\n            }\n\n            // Walk through all slices within this cluster\n            for($j=0; $j < $csize; ++$j) {\n                // Now adjust the position of the labels in each cluster starting\n                // with the slice that is closest to the equator of the pie\n                $a = $this->la[$clusters[$i][0]+$idx];\n\n                // Guide line start in the center of the arc of the slice\n                $r = $radius+$this->explode_radius[$n-1-($clusters[$i][0]+$idx)];\n                $x = round($r*cos($a)+$xc);\n                $y = round($yc-$r*sin($a));\n\n                // The distance from the arc depends on chosen font and the \"R-Factor\"\n                $r += $fh*$this->iGuideLineRFactor;\n\n                // Should the labels be placed curved along the pie or in straight columns\n                // outside the pie?\n                if( $this->iGuideLineCurve )\n                $xt=round($r*cos($a)+$xc);\n\n                // If this is the first slice in the cluster we need some first time\n                // proessing\n                if( $idx == $start ) {\n                    if( ! $this->iGuideLineCurve )\n                    $xt=round($r*cos($a)+$xc);\n                    $yt=round($yc-$r*sin($a));\n\n                    // Some special consideration in case this cluster starts\n                    // in quadrant 1 or 3 very close to the \"equator\" (< 20 degrees)\n                    // and the previous clusters last slice is within the tolerance.\n                    // In that case we add a font height to this labels Y-position\n                    // so it doesn't collide with\n                    // the slice in the previous cluster\n                    $prevcluster = ($i + ($nc-1) ) % $nc;\n                    $previdx=$clusters[$prevcluster][0]+$clusters[$prevcluster][1]-1;\n                    if( $q == 1 && $a > 160*M_PI/180 ) {\n                        // Get the angle for the previous clusters last slice\n                        $diff = abs($a-$this->la[$previdx]);\n                        if( $diff < $tresh_hold ) {\n                            $yt -= $fh;\n                        }\n                    }\n                    elseif( $q == 3 && $a > 340*M_PI/180 ) {\n                        // We need to subtract 360 to compare angle distance between\n                        // q=0 and q=3\n                        $diff = abs($a-$this->la[$previdx]-360*M_PI/180);\n                        if( $diff < $tresh_hold ) {\n                            $yt += $fh;\n                        }\n                    }\n\n                }\n                else {\n                    // The step is at minimum $vstep but if the slices are relatively large\n                    // we make sure that we add at least a step that corresponds to the vertical\n                    // distance between the centers at the arc on the slice\n                    $prev_a = $this->la[$clusters[$i][0]+($idx-$step)];\n                    $dy = abs($radius*(sin($a)-sin($prev_a))*1.2);\n                    if( $vstep > 0 )\n                    $yt += max($vstep,$dy);\n                    else\n                    $yt += min($vstep,-$dy);\n                }\n\n                $label = $this->labels[$clusters[$i][0]+$idx];\n\n                if( $csize == 1 ) {\n                    // A \"meta\" cluster with only one slice\n                    $r = $radius+$this->explode_radius[$n-1-($clusters[$i][0]+$idx)];\n                    $rr = $r+$img->GetFontHeight()/2;\n                    $xt=round($rr*cos($a)+$xc);\n                    $yt=round($yc-$rr*sin($a));\n                    $this->StrokeLabel($label,$img,$xc,$yc,$a,$r);\n                    if( $this->iShowGuideLineForSingle )\n                    $this->guideline->Stroke($img,$x,$y,$xt,$yt);\n                }\n                else {\n                    $this->guideline->Stroke($img,$x,$y,$xt,$yt);\n                    if( $q==1 || $q==2 ) {\n                        // Left side of Pie\n                        $this->guideline->Stroke($img,$xt,$yt,$xt-$this->guidelinemargin,$yt);\n                        $lbladj = -$this->guidelinemargin-5;\n                        $this->value->halign = \"right\";\n                        $this->value->valign = \"center\";\n                    }\n                    else {\n                        // Right side of pie\n                        $this->guideline->Stroke($img,$xt,$yt,$xt+$this->guidelinemargin,$yt);\n                        $lbladj = $this->guidelinemargin+5;\n                        $this->value->halign = \"left\";\n                        $this->value->valign = \"center\";\n                    }\n                    $this->value->Stroke($img,$label,$xt+$lbladj,$yt);\n                }\n\n                // Udate idx to point to next slice in the cluster to process\n                $idx += $step;\n            }\n        }\n    }\n\n    function StrokeAllLabels($img,$xc,$yc,$radius) {\n        // First normalize all angles for labels\n        $n = count($this->la);\n        for($i=0; $i < $n; ++$i) {\n            $this->la[$i] = $this->NormAngle($this->la[$i]);\n        }\n        if( $this->guideline->iShow ) {\n            $this->StrokeGuideLabels($img,$xc,$yc,$radius);\n        }\n        else {\n            $n = count($this->labels);\n            for($i=0; $i < $n; ++$i) {\n                $this->StrokeLabel($this->labels[$i],$img,$xc,$yc,\n                $this->la[$i],\n                $radius + $this->explode_radius[$n-1-$i]);\n            }\n        }\n    }\n\n    // Position the labels of each slice\n    function StrokeLabel($label,$img,$xc,$yc,$a,$r) {\n\n        // Default value\n        if( $this->ilabelposadj === 'auto' )\n        $this->ilabelposadj = 0.65;\n\n        // We position the values diferently depending on if they are inside\n        // or outside the pie\n        if( $this->ilabelposadj < 1.0 ) {\n\n            $this->value->SetAlign('center','center');\n            $this->value->margin = 0;\n\n            $xt=round($this->ilabelposadj*$r*cos($a)+$xc);\n            $yt=round($yc-$this->ilabelposadj*$r*sin($a));\n\n            $this->value->Stroke($img,$label,$xt,$yt);\n        }\n        else {\n\n            $this->value->halign = \"left\";\n            $this->value->valign = \"top\";\n            $this->value->margin = 0;\n\n            // Position the axis title.\n            // dx, dy is the offset from the top left corner of the bounding box that sorrounds the text\n            // that intersects with the extension of the corresponding axis. The code looks a little\n            // bit messy but this is really the only way of having a reasonable position of the\n            // axis titles.\n            $this->value->ApplyFont($img);\n            $h=$img->GetTextHeight($label);\n            // For numeric values the format of the display value\n            // must be taken into account\n            if( is_numeric($label) ) {\n                if( $label > 0 )\n                $w=$img->GetTextWidth(sprintf($this->value->format,$label));\n                else\n                $w=$img->GetTextWidth(sprintf($this->value->negformat,$label));\n            }\n            else\n            $w=$img->GetTextWidth($label);\n\n            if( $this->ilabelposadj > 1.0 && $this->ilabelposadj < 5.0) {\n                $r *= $this->ilabelposadj;\n            }\n\n            $r += $img->GetFontHeight()/1.5;\n\n            $xt=round($r*cos($a)+$xc);\n            $yt=round($yc-$r*sin($a));\n\n            // Normalize angle\n            while( $a < 0 ) $a += 2*M_PI;\n            while( $a > 2*M_PI ) $a -= 2*M_PI;\n\n            if( $a>=7*M_PI/4 || $a <= M_PI/4 ) $dx=0;\n            if( $a>=M_PI/4 && $a <= 3*M_PI/4 ) $dx=($a-M_PI/4)*2/M_PI;\n            if( $a>=3*M_PI/4 && $a <= 5*M_PI/4 ) $dx=1;\n            if( $a>=5*M_PI/4 && $a <= 7*M_PI/4 ) $dx=(1-($a-M_PI*5/4)*2/M_PI);\n\n            if( $a>=7*M_PI/4 ) $dy=(($a-M_PI)-3*M_PI/4)*2/M_PI;\n            if( $a<=M_PI/4 ) $dy=(1-$a*2/M_PI);\n            if( $a>=M_PI/4 && $a <= 3*M_PI/4 ) $dy=1;\n            if( $a>=3*M_PI/4 && $a <= 5*M_PI/4 ) $dy=(1-($a-3*M_PI/4)*2/M_PI);\n            if( $a>=5*M_PI/4 && $a <= 7*M_PI/4 ) $dy=0;\n\n            $this->value->Stroke($img,$label,$xt-$dx*$w,$yt-$dy*$h);\n        }\n    }\n\n    function UsePlotThemeColors($flag = true) {\n        $this->use_plot_theme_colors = $flag;\n    }\n} // Class\n\n\n//===================================================\n// CLASS PiePlotC\n// Description: Same as a normal pie plot but with a\n// filled circle in the center\n//===================================================\nclass PiePlotC extends PiePlot {\n    private $imidsize=0.5;  // Fraction of total width\n    private $imidcolor='white';\n    public $midtitle='';\n    private $middlecsimtarget='',$middlecsimwintarget='',$middlecsimalt='';\n\n    function __construct($data,$aCenterTitle='') {\n        parent::__construct($data);\n        $this->midtitle = new Text();\n        $this->midtitle->ParagraphAlign('center');\n    }\n\n    function SetMid($aTitle,$aColor='white',$aSize=0.5) {\n        $this->midtitle->Set($aTitle);\n\n        $this->imidsize = $aSize ;\n        $this->imidcolor = $aColor ;\n    }\n\n    function SetMidTitle($aTitle) {\n        $this->midtitle->Set($aTitle);\n    }\n\n    function SetMidSize($aSize) {\n        $this->imidsize = $aSize ;\n    }\n\n    function SetMidColor($aColor) {\n        $this->imidcolor = $aColor ;\n    }\n\n    function SetMidCSIM($aTarget,$aAlt='',$aWinTarget='') {\n        $this->middlecsimtarget = $aTarget;\n        $this->middlecsimwintarget = $aWinTarget;\n        $this->middlecsimalt = $aAlt;\n    }\n\n    function AddSliceToCSIM($i,$xc,$yc,$radius,$sa,$ea) {\n        //Slice number, ellipse centre (x,y), radius, start angle, end angle\n        while( $sa > 2*M_PI ) $sa = $sa - 2*M_PI;\n        while( $ea > 2*M_PI ) $ea = $ea - 2*M_PI;\n\n        $sa = 2*M_PI - $sa;\n        $ea = 2*M_PI - $ea;\n\n        // Special case when we have only one slice since then both start and end\n        // angle will be == 0\n        if( abs($sa - $ea) < 0.0001 ) {\n            $sa=2*M_PI; $ea=0;\n        }\n\n        // Add inner circle first point\n        $xp = floor(($this->imidsize*$radius*cos($ea))+$xc);\n        $yp = floor($yc-($this->imidsize*$radius*sin($ea)));\n        $coords = \"$xp, $yp\";\n\n        //add coordinates every 0.25 radians\n        $a=$ea+0.25;\n\n        // If we cross the 360-limit with a slice we need to handle\n        // the fact that end angle is smaller than start\n        if( $sa < $ea ) {\n            while ($a <= 2*M_PI) {\n                $xp = floor($radius*cos($a)+$xc);\n                $yp = floor($yc-$radius*sin($a));\n                $coords.= \", $xp, $yp\";\n                $a += 0.25;\n            }\n            $a -= 2*M_PI;\n        }\n\n        while ($a < $sa) {\n            $xp = floor(($this->imidsize*$radius*cos($a)+$xc));\n            $yp = floor($yc-($this->imidsize*$radius*sin($a)));\n            $coords.= \", $xp, $yp\";\n            $a += 0.25;\n        }\n\n        // Make sure we end at the last point\n        $xp = floor(($this->imidsize*$radius*cos($sa)+$xc));\n        $yp = floor($yc-($this->imidsize*$radius*sin($sa)));\n        $coords.= \", $xp, $yp\";\n\n        // Straight line to outer circle\n        $xp = floor($radius*cos($sa)+$xc);\n        $yp = floor($yc-$radius*sin($sa));\n        $coords.= \", $xp, $yp\";\n\n        //add coordinates every 0.25 radians\n        $a=$sa - 0.25;\n        while ($a > $ea) {\n            $xp = floor($radius*cos($a)+$xc);\n            $yp = floor($yc-$radius*sin($a));\n            $coords.= \", $xp, $yp\";\n            $a -= 0.25;\n        }\n\n        //Add the last point on the arc\n        $xp = floor($radius*cos($ea)+$xc);\n        $yp = floor($yc-$radius*sin($ea));\n        $coords.= \", $xp, $yp\";\n\n        // Close the arc\n        $xp = floor(($this->imidsize*$radius*cos($ea))+$xc);\n        $yp = floor($yc-($this->imidsize*$radius*sin($ea)));\n        $coords .= \", $xp, $yp\";\n\n        if( !empty($this->csimtargets[$i]) ) {\n            $this->csimareas .= \"<area shape=\\\"poly\\\" coords=\\\"$coords\\\" href=\\\"\".\n            $this->csimtargets[$i].\"\\\"\";\n            if( !empty($this->csimwintargets[$i]) ) {\n                $this->csimareas .= \" target=\\\"\".$this->csimwintargets[$i].\"\\\" \";\n            }\n            if( !empty($this->csimalts[$i]) ) {\n                $tmp=sprintf($this->csimalts[$i],$this->data[$i]);\n                $this->csimareas .= \" title=\\\"$tmp\\\"  alt=\\\"$tmp\\\" \";\n            }\n            $this->csimareas .= \" />\\n\";\n        }\n    }\n\n\n    function Stroke($img,$aaoption=0) {\n\n        // Stroke the pie but don't stroke values\n        $tmp =  $this->value->show;\n        $this->value->show = false;\n        parent::Stroke($img,$aaoption);\n        $this->value->show = $tmp;\n\n        $xc = round($this->posx*$img->width);\n        $yc = round($this->posy*$img->height);\n\n        $radius = floor($this->radius * min($img->width,$img->height)) ;\n\n\n        if( $this->imidsize > 0 && $aaoption !== 2 ) {\n\n            if( $this->ishadowcolor != \"\" ) {\n                $img->SetColor($this->ishadowcolor);\n                $img->FilledCircle($xc+$this->ishadowdrop,$yc+$this->ishadowdrop,\n                round($radius*$this->imidsize));\n            }\n\n            $img->SetColor($this->imidcolor);\n            $img->FilledCircle($xc,$yc,round($radius*$this->imidsize));\n\n            if(  $this->pie_border && $aaoption === 0 ) {\n                $img->SetColor($this->color);\n                $img->Circle($xc,$yc,round($radius*$this->imidsize));\n            }\n\n            if( !empty($this->middlecsimtarget) )\n            $this->AddMiddleCSIM($xc,$yc,round($radius*$this->imidsize));\n\n        }\n\n        if( $this->value->show && $aaoption !== 1) {\n            $this->StrokeAllLabels($img,$xc,$yc,$radius);\n            $this->midtitle->SetPos($xc,$yc,'center','center');\n            $this->midtitle->Stroke($img);\n        }\n\n    }\n\n    function AddMiddleCSIM($xc,$yc,$r) {\n        $xc=round($xc);$yc=round($yc);$r=round($r);\n        $this->csimareas .= \"<area shape=\\\"circle\\\" coords=\\\"$xc,$yc,$r\\\" href=\\\"\".\n        $this->middlecsimtarget.\"\\\"\";\n        if( !empty($this->middlecsimwintarget) ) {\n            $this->csimareas .= \" target=\\\"\".$this->middlecsimwintarget.\"\\\"\";\n        }\n        if( !empty($this->middlecsimalt) ) {\n            $tmp = $this->middlecsimalt;\n            $this->csimareas .= \" title=\\\"$tmp\\\" alt=\\\"$tmp\\\" \";\n        }\n        $this->csimareas .= \" />\\n\";\n    }\n\n    function StrokeLabel($label,$img,$xc,$yc,$a,$r) {\n\n        if( $this->ilabelposadj === 'auto' )\n        $this->ilabelposadj = (1-$this->imidsize)/2+$this->imidsize;\n\n        parent::StrokeLabel($label,$img,$xc,$yc,$a,$r);\n\n    }\n\n}\n\n\n//===================================================\n// CLASS PieGraph\n// Description:\n//===================================================\nclass PieGraph extends Graph {\n    private $posx, $posy, $radius;\n    private $legends=array();\n    public $plots=array();\n    public $pieaa = false ;\n    //---------------\n    // CONSTRUCTOR\n    function __construct($width=300,$height=200,$cachedName=\"\",$timeout=0,$inline=1) {\n        parent::__construct($width,$height,$cachedName,$timeout,$inline);\n        $this->posx=$width/2;\n        $this->posy=$height/2;\n        $this->SetColor(array(255,255,255));\n\n        if ($this->graph_theme) {\n          $this->graph_theme->ApplyGraph($this);\n        }\n    }\n\n    //---------------\n    // PUBLIC METHODS\n    function Add($aObj) {\n\n        if( is_array($aObj) && count($aObj) > 0 )\n        $cl = $aObj[0];\n        else\n        $cl = $aObj;\n\n        if( $cl instanceof Text )\n        $this->AddText($aObj);\n        elseif( class_exists('IconPlot',false) && ($cl instanceof IconPlot) )\n        $this->AddIcon($aObj);\n        else {\n            if( is_array($aObj) ) {\n                $n = count($aObj);\n                for($i=0; $i < $n; ++$i ) {\n                    //if ($aObj[$i]->theme) {\n                    //    $this->ClearTheme();\n                    //}\n                    $this->plots[] = $aObj[$i];\n                }\n            }\n            else {\n                //if ($aObj->theme) {\n                //    $this->ClearTheme();\n                //}\n                $this->plots[] = $aObj;\n            }\n        }\n\n        if ($this->graph_theme) {\n            $this->graph_theme->SetupPlot($aObj);\n            if ($aObj->is_using_plot_theme) {\n                $aObj->UsePlotThemeColors();\n            }\n        }\n    }\n\n    function SetAntiAliasing($aFlg=true) {\n        $this->pieaa = $aFlg;\n    }\n\n    function SetColor($c) {\n        $this->SetMarginColor($c);\n    }\n\n\n    function DisplayCSIMAreas() {\n        $csim=\"\";\n        foreach($this->plots as $p ) {\n            $csim .= $p->GetCSIMareas();\n        }\n        \n        $csim.= $this->legend->GetCSIMareas();\n        if (preg_match_all(\"/area shape=\\\"(\\w+)\\\" coords=\\\"([0-9\\, ]+)\\\"/\", $csim, $coords)) {\n            $this->img->SetColor($this->csimcolor);\n            $n = count($coords[0]);\n            for ($i=0; $i < $n; $i++) {\n                if ($coords[1][$i]==\"poly\") {\n                    preg_match_all('/\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,*/',$coords[2][$i],$pts);\n                    $this->img->SetStartPoint($pts[1][count($pts[0])-1],$pts[2][count($pts[0])-1]);\n                    $m = count($pts[0]);\n                    for ($j=0; $j < $m; $j++) {\n                        $this->img->LineTo($pts[1][$j],$pts[2][$j]);\n                    }\n                } else if ($coords[1][$i]==\"rect\") {\n                    $pts = preg_split('/,/', $coords[2][$i]);\n                    $this->img->SetStartPoint($pts[0],$pts[1]);\n                    $this->img->LineTo($pts[2],$pts[1]);\n                    $this->img->LineTo($pts[2],$pts[3]);\n                    $this->img->LineTo($pts[0],$pts[3]);\n                    $this->img->LineTo($pts[0],$pts[1]);\n\n                }\n            }\n        }\n    }\n\n    // Method description\n    function Stroke($aStrokeFileName=\"\") {\n\n        // If the filename is the predefined value = '_csim_special_'\n        // we assume that the call to stroke only needs to do enough\n        // to correctly generate the CSIM maps.\n        // We use this variable to skip things we don't strictly need\n        // to do to generate the image map to improve performance\n        // a best we can. Therefor you will see a lot of tests !$_csim in the\n        // code below.\n        $_csim = ($aStrokeFileName===_CSIM_SPECIALFILE);\n\n        // If we are called the second time (perhaps the user has called GetHTMLImageMap()\n        // himself then the legends have alsready been populated once in order to get the\n        // CSIM coordinats. Since we do not want the legends to be populated a second time\n        // we clear the legends\n        $this->legend->Clear();\n\n        // We need to know if we have stroked the plot in the\n        // GetCSIMareas. Otherwise the CSIM hasn't been generated\n        // and in the case of GetCSIM called before stroke to generate\n        // CSIM without storing an image to disk GetCSIM must call Stroke.\n        $this->iHasStroked = true;\n\n        $n = count($this->plots);\n\n        if( $this->pieaa ) {\n\n            if( !$_csim ) {\n                if( $this->background_image != \"\" ) {\n                    $this->StrokeFrameBackground();\n                }\n                else {\n                    $this->StrokeFrame();\n                    $this->StrokeBackgroundGrad();\n                }\n            }\n\n\n            $w = $this->img->width;\n            $h = $this->img->height;\n            $oldimg = $this->img->img;\n\n            $this->img->CreateImgCanvas(2*$w,2*$h);\n\n            $this->img->SetColor( $this->margin_color );\n            $this->img->FilledRectangle(0,0,2*$w-1,2*$h-1);\n\n            // Make all icons *2 i size since we will be scaling down the\n            // imahe to do the anti aliasing\n            $ni = count($this->iIcons);\n            for($i=0; $i < $ni; ++$i) {\n                $this->iIcons[$i]->iScale *= 2 ;\n                if( $this->iIcons[$i]->iX > 1 )\n                $this->iIcons[$i]->iX *= 2 ;\n                if( $this->iIcons[$i]->iY > 1 )\n                $this->iIcons[$i]->iY *= 2 ;\n            }\n\n            $this->StrokeIcons();\n\n            for($i=0; $i < $n; ++$i) {\n                if( $this->plots[$i]->posx > 1 )\n                $this->plots[$i]->posx *= 2 ;\n                if( $this->plots[$i]->posy > 1 )\n                $this->plots[$i]->posy *= 2 ;\n\n                $this->plots[$i]->Stroke($this->img,1);\n\n                if( $this->plots[$i]->posx > 1 )\n                $this->plots[$i]->posx /= 2 ;\n                if( $this->plots[$i]->posy > 1 )\n                $this->plots[$i]->posy /= 2 ;\n            }\n\n            $indent = $this->doframe ? ($this->frame_weight + ($this->doshadow ? $this->shadow_width : 0 )) : 0 ;\n            $indent += $this->framebevel ? $this->framebeveldepth + 1 : 0 ;\n            $this->img->CopyCanvasH($oldimg,$this->img->img,$indent,$indent,$indent,$indent,\n            $w-2*$indent,$h-2*$indent,2*($w-$indent),2*($h-$indent));\n\n            $this->img->img = $oldimg ;\n            $this->img->width = $w ;\n            $this->img->height = $h ;\n\n            for($i=0; $i < $n; ++$i) {\n                $this->plots[$i]->Stroke($this->img,2); // Stroke labels\n                $this->plots[$i]->Legend($this);\n            }\n\n        }\n        else {\n\n            if( !$_csim ) {\n                if( $this->background_image != \"\" ) {\n                    $this->StrokeFrameBackground();\n                }\n                else {\n                    $this->StrokeFrame();\n                    $this->StrokeBackgroundGrad();\n                }\n            }\n\n            $this->StrokeIcons();\n\n            for($i=0; $i < $n; ++$i) {\n                $this->plots[$i]->Stroke($this->img);\n                $this->plots[$i]->Legend($this);\n            }\n        }\n\n        $this->legend->Stroke($this->img);\n        $this->footer->Stroke($this->img);\n        $this->StrokeTitles();\n\n        if( !$_csim ) {\n\n            // Stroke texts\n            if( $this->texts != null ) {\n                $n = count($this->texts);\n                for($i=0; $i < $n; ++$i ) {\n                    $this->texts[$i]->Stroke($this->img);\n                }\n            }\n\n            if( _JPG_DEBUG ) {\n                $this->DisplayCSIMAreas();\n            }\n\n            // Should we do any final image transformation\n            if( $this->iImgTrans ) {\n                if( !class_exists('ImgTrans',false) ) {\n                    require_once('jpgraph_imgtrans.php');\n                    //JpGraphError::Raise('In order to use image transformation you must include the file jpgraph_imgtrans.php in your script.');\n                }\n\n                $tform = new ImgTrans($this->img->img);\n                $this->img->img = $tform->Skew3D($this->iImgTransHorizon,$this->iImgTransSkewDist,\n                $this->iImgTransDirection,$this->iImgTransHighQ,\n                $this->iImgTransMinSize,$this->iImgTransFillColor,\n                $this->iImgTransBorder);\n            }\n\n\n            // If the filename is given as the special \"__handle\"\n            // then the image handler is returned and the image is NOT\n            // streamed back\n            if( $aStrokeFileName == _IMG_HANDLER ) {\n                return $this->img->img;\n            }\n            else {\n                // Finally stream the generated picture\n                $this->cache->PutAndStream($this->img,$this->cache_name,$this->inline,\n                $aStrokeFileName);\n            }\n        }\n    }\n} // Class\n\n/* EOF */\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_pie3d.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_PIE3D.PHP\n // Description: 3D Pie plot extension for JpGraph\n // Created:     2001-03-24\n // Ver:         $Id: jpgraph_pie3d.php 1329 2009-06-20 19:23:30Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\n//===================================================\n// CLASS PiePlot3D\n// Description: Plots a 3D pie with a specified projection\n// angle between 20 and 70 degrees.\n//===================================================\nclass PiePlot3D extends PiePlot {\n    private $labelhintcolor=\"red\",$showlabelhint=true;\n    private $angle=50;\n    private $edgecolor=\"\", $edgeweight=1;\n    private $iThickness=false;\n\n    //---------------\n    // CONSTRUCTOR\n    function __construct($data) {\n        $this->radius = 0.5;\n        $this->data = $data;\n        $this->title = new Text(\"\");\n        $this->title->SetFont(FF_FONT1,FS_BOLD);\n        $this->value = new DisplayValue();\n        $this->value->Show();\n        $this->value->SetFormat('%.0f%%');\n    }\n\n    //---------------\n    // PUBLIC METHODS\n\n    // Set label arrays\n    function SetLegends($aLegend) {\n        $this->legends = array_reverse(array_slice($aLegend,0,count($this->data)));\n    }\n\n    function SetSliceColors($aColors) {\n        $this->setslicecolors = $aColors;\n    }\n\n    function Legend($aGraph) {\n        parent::Legend($aGraph);\n        $aGraph->legend->txtcol = array_reverse($aGraph->legend->txtcol);\n    }\n\n    function SetCSIMTargets($aTargets,$aAlts='',$aWinTargets='') {\n        $this->csimtargets = $aTargets;\n        $this->csimwintargets = $aWinTargets;\n        $this->csimalts = $aAlts;\n    }\n\n    // Should the slices be separated by a line? If color is specified as \"\" no line\n    // will be used to separate pie slices.\n    function SetEdge($aColor='black',$aWeight=1) {\n        $this->edgecolor = $aColor;\n        $this->edgeweight = $aWeight;\n    }\n\n    // Specify projection angle for 3D in degrees\n    // Must be between 20 and 70 degrees\n    function SetAngle($a) {\n        if( $a<5 || $a>90 ) {\n            JpGraphError::RaiseL(14002);\n            //(\"PiePlot3D::SetAngle() 3D Pie projection angle must be between 5 and 85 degrees.\");\n        }\n        else {\n            $this->angle = $a;\n        }\n    }\n\n    function Add3DSliceToCSIM($i,$xc,$yc,$height,$width,$thick,$sa,$ea) {  //Slice number, ellipse centre (x,y), height, width, start angle, end angle\n\n        $sa *= M_PI/180;\n        $ea *= M_PI/180;\n\n        //add coordinates of the centre to the map\n        $coords = \"$xc, $yc\";\n\n        //add coordinates of the first point on the arc to the map\n        $xp = floor($width*cos($sa)/2+$xc);\n        $yp = floor($yc-$height*sin($sa)/2);\n        $coords.= \", $xp, $yp\";\n\n        //If on the front half, add the thickness offset\n        if ($sa >= M_PI && $sa <= 2*M_PI*1.01) {\n            $yp = floor($yp+$thick);\n            $coords.= \", $xp, $yp\";\n        }\n\n        //add coordinates every 0.2 radians\n        $a=$sa+0.2;\n        while ($a<$ea) {\n            $xp = floor($width*cos($a)/2+$xc);\n            if ($a >= M_PI && $a <= 2*M_PI*1.01) {\n                $yp = floor($yc-($height*sin($a)/2)+$thick);\n            } else {\n                $yp = floor($yc-$height*sin($a)/2);\n            }\n            $coords.= \", $xp, $yp\";\n            $a += 0.2;\n        }\n\n        //Add the last point on the arc\n        $xp = floor($width*cos($ea)/2+$xc);\n        $yp = floor($yc-$height*sin($ea)/2);\n\n\n        if ($ea >= M_PI && $ea <= 2*M_PI*1.01) {\n            $coords.= \", $xp, \".floor($yp+$thick);\n        }\n        $coords.= \", $xp, $yp\";\n        $alt='';\n\n        if( !empty($this->csimtargets[$i]) ) {\n            $this->csimareas .= \"<area shape=\\\"poly\\\" coords=\\\"$coords\\\" href=\\\"\".$this->csimtargets[$i].\"\\\"\";\n\n            if( !empty($this->csimwintargets[$i]) ) {\n                $this->csimareas .= \" target=\\\"\".$this->csimwintargets[$i].\"\\\" \";\n            }\n             \n            if( !empty($this->csimalts[$i]) ) {\n                $tmp=sprintf($this->csimalts[$i],$this->data[$i]);\n                $this->csimareas .= \"alt=\\\"$tmp\\\" title=\\\"$tmp\\\" \";\n            }\n            $this->csimareas .=  \" />\\n\";\n        }\n\n    }\n\n    function SetLabels($aLabels,$aLblPosAdj=\"auto\") {\n        $this->labels = $aLabels;\n        $this->ilabelposadj=$aLblPosAdj;\n    }\n\n\n    // Distance from the pie to the labels\n    function SetLabelMargin($m) {\n        $this->value->SetMargin($m);\n    }\n\n    // Show a thin line from the pie to the label for a specific slice\n    function ShowLabelHint($f=true) {\n        $this->showlabelhint=$f;\n    }\n\n    // Set color of hint line to label for each slice\n    function SetLabelHintColor($c) {\n        $this->labelhintcolor=$c;\n    }\n\n    function SetHeight($aHeight) {\n        $this->iThickness = $aHeight;\n    }\n\n\n    // Normalize Angle between 0-360\n    function NormAngle($a) {\n        // Normalize anle to 0 to 2M_PI\n        //\n        if( $a > 0 ) {\n            while($a > 360) $a -= 360;\n        }\n        else {\n            while($a < 0) $a += 360;\n        }\n        if( $a < 0 )\n        $a = 360 + $a;\n\n        if( $a == 360 ) $a=0;\n        return $a;\n    }\n\n\n\n    // Draw one 3D pie slice at position ($xc,$yc) with height $z\n    function Pie3DSlice($img,$xc,$yc,$w,$h,$sa,$ea,$z,$fillcolor,$shadow=0.65) {\n\n        // Due to the way the 3D Pie algorithm works we are\n        // guaranteed that any slice we get into this method\n        // belongs to either the left or right side of the\n        // pie ellipse. Hence, no slice will cross 90 or 270\n        // point.\n        if( ($sa < 90 && $ea > 90) || ( ($sa > 90 && $sa < 270) && $ea > 270) ) {\n            JpGraphError::RaiseL(14003);//('Internal assertion failed. Pie3D::Pie3DSlice');\n            exit(1);\n        }\n\n        $p[] = array();\n\n        // Setup pre-calculated values\n        $rsa = $sa/180*M_PI; // to Rad\n        $rea = $ea/180*M_PI; // to Rad\n        $sinsa = sin($rsa);\n        $cossa = cos($rsa);\n        $sinea = sin($rea);\n        $cosea = cos($rea);\n\n        // p[] is the points for the overall slice and\n        // pt[] is the points for the top pie\n\n        // Angular step when approximating the arc with a polygon train.\n        $step = 0.05;\n\n        if( $sa >= 270 ) {\n            if( $ea > 360 || ($ea > 0 && $ea <= 90) ) {\n                if( $ea > 0 && $ea <= 90 ) {\n                    // Adjust angle to simplify conditions in loops\n                    $rea += 2*M_PI;\n                }\n\n                $p = array($xc,$yc,$xc,$yc+$z,\n                $xc+$w*$cossa,$z+$yc-$h*$sinsa);\n                $pt = array($xc,$yc,$xc+$w*$cossa,$yc-$h*$sinsa);\n\n                for( $a=$rsa; $a < 2*M_PI; $a += $step ) {\n                    $tca = cos($a);\n                    $tsa = sin($a);\n                    $p[] = $xc+$w*$tca;\n                    $p[] = $z+$yc-$h*$tsa;\n                    $pt[] = $xc+$w*$tca;\n                    $pt[] = $yc-$h*$tsa;\n                }\n\n                $pt[] = $xc+$w;\n                $pt[] = $yc;\n\n                $p[] = $xc+$w;\n                $p[] = $z+$yc;\n                $p[] = $xc+$w;\n                $p[] = $yc;\n                $p[] = $xc;\n                $p[] = $yc;\n\n                for( $a=2*M_PI+$step; $a < $rea; $a += $step ) {\n                    $pt[] = $xc + $w*cos($a);\n                    $pt[] = $yc - $h*sin($a);\n                }\n\n                $pt[] = $xc+$w*$cosea;\n                $pt[] = $yc-$h*$sinea;\n                $pt[] = $xc;\n                $pt[] = $yc;\n\n            }\n            else {\n                $p = array($xc,$yc,$xc,$yc+$z,\n                $xc+$w*$cossa,$z+$yc-$h*$sinsa);\n                $pt = array($xc,$yc,$xc+$w*$cossa,$yc-$h*$sinsa);\n\n                $rea = $rea == 0.0 ? 2*M_PI : $rea;\n                for( $a=$rsa; $a < $rea; $a += $step ) {\n                    $tca = cos($a);\n                    $tsa = sin($a);\n                    $p[] = $xc+$w*$tca;\n                    $p[] = $z+$yc-$h*$tsa;\n                    $pt[] = $xc+$w*$tca;\n                    $pt[] = $yc-$h*$tsa;\n                }\n\n                $pt[] = $xc+$w*$cosea;\n                $pt[] = $yc-$h*$sinea;\n                $pt[] = $xc;\n                $pt[] = $yc;\n\n                $p[] = $xc+$w*$cosea;\n                $p[] = $z+$yc-$h*$sinea;\n                $p[] = $xc+$w*$cosea;\n                $p[] = $yc-$h*$sinea;\n                $p[] = $xc;\n                $p[] = $yc;\n            }\n        }\n        elseif( $sa >= 180 ) {\n            $p = array($xc,$yc,$xc,$yc+$z,$xc+$w*$cosea,$z+$yc-$h*$sinea);\n            $pt = array($xc,$yc,$xc+$w*$cosea,$yc-$h*$sinea);\n\n            for( $a=$rea; $a>$rsa; $a -= $step ) {\n                $tca = cos($a);\n                $tsa = sin($a);\n                $p[] = $xc+$w*$tca;\n                $p[] = $z+$yc-$h*$tsa;\n                $pt[] = $xc+$w*$tca;\n                $pt[] = $yc-$h*$tsa;\n            }\n\n            $pt[] = $xc+$w*$cossa;\n            $pt[] = $yc-$h*$sinsa;\n            $pt[] = $xc;\n            $pt[] = $yc;\n\n            $p[] = $xc+$w*$cossa;\n            $p[] = $z+$yc-$h*$sinsa;\n            $p[] = $xc+$w*$cossa;\n            $p[] = $yc-$h*$sinsa;\n            $p[] = $xc;\n            $p[] = $yc;\n\n        }\n        elseif( $sa >= 90 ) {\n            if( $ea > 180 ) {\n                $p = array($xc,$yc,$xc,$yc+$z,$xc+$w*$cosea,$z+$yc-$h*$sinea);\n                $pt = array($xc,$yc,$xc+$w*$cosea,$yc-$h*$sinea);\n\n                for( $a=$rea; $a > M_PI; $a -= $step ) {\n                    $tca = cos($a);\n                    $tsa = sin($a);\n                    $p[] = $xc+$w*$tca;\n                    $p[] = $z + $yc - $h*$tsa;\n                    $pt[] = $xc+$w*$tca;\n                    $pt[] = $yc-$h*$tsa;\n                }\n\n                $p[] = $xc-$w;\n                $p[] = $z+$yc;\n                $p[] = $xc-$w;\n                $p[] = $yc;\n                $p[] = $xc;\n                $p[] = $yc;\n\n                $pt[] = $xc-$w;\n                $pt[] = $z+$yc;\n                $pt[] = $xc-$w;\n                $pt[] = $yc;\n\n                for( $a=M_PI-$step; $a > $rsa; $a -= $step ) {\n                    $pt[] = $xc + $w*cos($a);\n                    $pt[] = $yc - $h*sin($a);\n                }\n\n                $pt[] = $xc+$w*$cossa;\n                $pt[] = $yc-$h*$sinsa;\n                $pt[] = $xc;\n                $pt[] = $yc;\n\n            }\n            else { // $sa >= 90 && $ea <= 180\n                $p = array($xc,$yc,$xc,$yc+$z,\n                $xc+$w*$cosea,$z+$yc-$h*$sinea,\n                $xc+$w*$cosea,$yc-$h*$sinea,\n                $xc,$yc);\n\n                $pt = array($xc,$yc,$xc+$w*$cosea,$yc-$h*$sinea);\n\n                for( $a=$rea; $a>$rsa; $a -= $step ) {\n                    $pt[] = $xc + $w*cos($a);\n                    $pt[] = $yc - $h*sin($a);\n                }\n\n                $pt[] = $xc+$w*$cossa;\n                $pt[] = $yc-$h*$sinsa;\n                $pt[] = $xc;\n                $pt[] = $yc;\n\n            }\n        }\n        else { // sa > 0 && ea < 90\n\n            $p = array($xc,$yc,$xc,$yc+$z,\n            $xc+$w*$cossa,$z+$yc-$h*$sinsa,\n            $xc+$w*$cossa,$yc-$h*$sinsa,\n            $xc,$yc);\n\n            $pt = array($xc,$yc,$xc+$w*$cossa,$yc-$h*$sinsa);\n\n            for( $a=$rsa; $a < $rea; $a += $step ) {\n                $pt[] = $xc + $w*cos($a);\n                $pt[] = $yc - $h*sin($a);\n            }\n\n            $pt[] = $xc+$w*$cosea;\n            $pt[] = $yc-$h*$sinea;\n            $pt[] = $xc;\n            $pt[] = $yc;\n        }\n         \n        $img->PushColor($fillcolor.\":\".$shadow);\n        $img->FilledPolygon($p);\n        $img->PopColor();\n\n        $img->PushColor($fillcolor);\n        $img->FilledPolygon($pt);\n        $img->PopColor();\n    }\n\n    function SetStartAngle($aStart) {\n        if( $aStart < 0 || $aStart > 360 ) {\n            JpGraphError::RaiseL(14004);//('Slice start angle must be between 0 and 360 degrees.');\n        }\n        $this->startangle = $aStart;\n    }\n\n    // Draw a 3D Pie\n    function Pie3D($aaoption,$img,$data,$colors,$xc,$yc,$d,$angle,$z,\n                   $shadow=0.65,$startangle=0,$edgecolor=\"\",$edgeweight=1) {\n\n        //---------------------------------------------------------------------------\n        // As usual the algorithm get more complicated than I originally\n        // envisioned. I believe that this is as simple as it is possible\n        // to do it with the features I want. It's a good exercise to start\n        // thinking on how to do this to convince your self that all this\n        // is really needed for the general case.\n        //\n        // The algorithm two draw 3D pies without \"real 3D\" is done in\n        // two steps.\n        // First imagine the pie cut in half through a thought line between\n        // 12'a clock and 6'a clock. It now easy to imagine that we can plot\n        // the individual slices for each half by starting with the topmost\n        // pie slice and continue down to 6'a clock.\n        //\n        // In the algortithm this is done in three principal steps\n        // Step 1. Do the knife cut to ensure by splitting slices that extends\n        // over the cut line. This is done by splitting the original slices into\n        // upto 3 subslices.\n        // Step 2. Find the top slice for each half\n        // Step 3. Draw the slices from top to bottom\n        //\n        // The thing that slightly complicates this scheme with all the\n        // angle comparisons below is that we can have an arbitrary start\n        // angle so we must take into account the different equivalence classes.\n        // For the same reason we must walk through the angle array in a\n        // modulo fashion.\n        //\n        // Limitations of algorithm:\n        // * A small exploded slice which crosses the 270 degree point\n        //   will get slightly nagged close to the center due to the fact that\n        //   we print the slices in Z-order and that the slice left part\n        //   get printed first and might get slightly nagged by a larger\n        //   slice on the right side just before the right part of the small\n        //   slice. Not a major problem though.\n        //---------------------------------------------------------------------------\n\n\n        // Determine the height of the ellippse which gives an\n        // indication of the inclination angle\n        $h = ($angle/90.0)*$d;\n        $sum = 0;\n        for($i=0; $i<count($data); ++$i ) {\n            $sum += $data[$i];\n        }\n\n        // Special optimization\n        if( $sum==0 ) return;\n\n        if( $this->labeltype == 2 ) {\n            $this->adjusted_data = $this->AdjPercentage($data);\n        }\n\n        // Setup the start\n        $accsum = 0;\n        $a = $startangle;\n        $a = $this->NormAngle($a);\n\n        //\n        // Step 1 . Split all slices that crosses 90 or 270\n        //\n        $idx=0;\n        $adjexplode=array();\n        $numcolors = count($colors);\n        for($i=0; $i<count($data); ++$i, ++$idx ) {\n            $da = $data[$i]/$sum * 360;\n\n            if( empty($this->explode_radius[$i]) ) {\n                $this->explode_radius[$i]=0;\n            }\n\n            $expscale=1;\n            if( $aaoption == 1 ) {\n                $expscale=2;\n            }\n\n            $la = $a + $da/2;\n            $explode = array( $xc + $this->explode_radius[$i]*cos($la*M_PI/180)*$expscale,\n            $yc - $this->explode_radius[$i]*sin($la*M_PI/180) * ($h/$d) *$expscale );\n            $adjexplode[$idx] = $explode;\n            $labeldata[$i] = array($la,$explode[0],$explode[1]);\n            $originalangles[$i] = array($a,$a+$da);\n\n            $ne = $this->NormAngle($a+$da);\n            if( $da <= 180 ) {\n                // If the slice size is <= 90 it can at maximum cut across\n                // one boundary (either 90 or 270) where it needs to be split\n                $split=-1; // no split\n                if( ($da<=90 && ($a <= 90 && $ne > 90)) ||\n                (($da <= 180 && $da >90)  && (($a < 90 || $a >= 270) && $ne > 90)) ) {\n                    $split = 90;\n                }\n                elseif( ($da<=90 && ($a <= 270 && $ne > 270)) ||\n                (($da<=180 && $da>90) && ($a >= 90 && $a < 270 && ($a+$da) > 270 )) ) {\n                    $split = 270;\n                }\n                if( $split > 0 ) { // split in two\n                    $angles[$idx] = array($a,$split);\n                    $adjcolors[$idx] = $colors[$i % $numcolors];\n                    $adjexplode[$idx] = $explode;\n                    $angles[++$idx] = array($split,$ne);\n                    $adjcolors[$idx] = $colors[$i % $numcolors];\n                    $adjexplode[$idx] = $explode;\n                }\n                else { // no split\n                    $angles[$idx] = array($a,$ne);\n                    $adjcolors[$idx] = $colors[$i  % $numcolors];\n                    $adjexplode[$idx] = $explode;\n                }\n            }\n            else {\n                // da>180\n                // Slice may, depending on position, cross one or two\n                // bonudaries\n\n                if( $a < 90 )        $split = 90;\n                elseif( $a <= 270 )  $split = 270;\n                else                 $split = 90;\n\n                $angles[$idx] = array($a,$split);\n                $adjcolors[$idx] = $colors[$i % $numcolors];\n                $adjexplode[$idx] = $explode;\n                //if( $a+$da > 360-$split ) {\n                // For slices larger than 270 degrees we might cross\n                // another boundary as well. This means that we must\n                // split the slice further. The comparison gets a little\n                // bit complicated since we must take into accound that\n                // a pie might have a startangle >0 and hence a slice might\n                // wrap around the 0 angle.\n                // Three cases:\n                //  a) Slice starts before 90 and hence gets a split=90, but\n                //     we must also check if we need to split at 270\n                //  b) Slice starts after 90 but before 270 and slices\n                //     crosses 90 (after a wrap around of 0)\n                //  c) If start is > 270 (hence the firstr split is at 90)\n                //     and the slice is so large that it goes all the way\n                //     around 270.\n                if( ($a < 90 && ($a+$da > 270)) || ($a > 90 && $a<=270 && ($a+$da>360+90) ) || ($a > 270 && $this->NormAngle($a+$da)>270) ) {\n                    $angles[++$idx] = array($split,360-$split);\n                    $adjcolors[$idx] = $colors[$i % $numcolors];\n                    $adjexplode[$idx] = $explode;\n                    $angles[++$idx] = array(360-$split,$ne);\n                    $adjcolors[$idx] = $colors[$i % $numcolors];\n                    $adjexplode[$idx] = $explode;\n                }\n                else {\n                    // Just a simple split to the previous decided\n                    // angle.\n                    $angles[++$idx] = array($split,$ne);\n                    $adjcolors[$idx] = $colors[$i % $numcolors];\n                    $adjexplode[$idx] = $explode;\n                }\n            }\n            $a += $da;\n            $a = $this->NormAngle($a);\n        }\n\n        // Total number of slices\n        $n = count($angles);\n\n        for($i=0; $i<$n; ++$i) {\n            list($dbgs,$dbge) = $angles[$i];\n        }\n\n        //\n        // Step 2. Find start index (first pie that starts in upper left quadrant)\n        //\n        $minval = $angles[0][0];\n        $min = 0;\n        for( $i=0; $i<$n; ++$i ) {\n            if( $angles[$i][0] < $minval ) {\n                $minval = $angles[$i][0];\n                $min = $i;\n            }\n        }\n        $j = $min;\n        $cnt = 0;\n        while( $angles[$j][1] <= 90 ) {\n            $j++;\n            if( $j>=$n) {\n                $j=0;\n            }\n            if( $cnt > $n ) {\n                JpGraphError::RaiseL(14005);\n                //(\"Pie3D Internal error (#1). Trying to wrap twice when looking for start index\");\n            }\n            ++$cnt;\n        }\n        $start = $j;\n\n        //\n        // Step 3. Print slices in z-order\n        //\n        $cnt = 0;\n\n        // First stroke all the slices between 90 and 270 (left half circle)\n        // counterclockwise\n         \n        while( $angles[$j][0] < 270  && $aaoption !== 2 ) {\n\n            list($x,$y) = $adjexplode[$j];\n\n            $this->Pie3DSlice($img,$x,$y,$d,$h,$angles[$j][0],$angles[$j][1],\n            $z,$adjcolors[$j],$shadow);\n\n            $last = array($x,$y,$j);\n\n            $j++;\n            if( $j >= $n ) $j=0;\n            if( $cnt > $n ) {\n                JpGraphError::RaiseL(14006);\n                //(\"Pie3D Internal Error: Z-Sorting algorithm for 3D Pies is not working properly (2). Trying to wrap twice while stroking.\");\n            }\n            ++$cnt;\n        }\n         \n        $slice_left = $n-$cnt;\n        $j=$start-1;\n        if($j<0) $j=$n-1;\n        $cnt = 0;\n\n        // The stroke all slices from 90 to -90 (right half circle)\n        // clockwise\n        while( $cnt < $slice_left  && $aaoption !== 2 ) {\n\n            list($x,$y) = $adjexplode[$j];\n\n            $this->Pie3DSlice($img,$x,$y,$d,$h,$angles[$j][0],$angles[$j][1],\n            $z,$adjcolors[$j],$shadow);\n            $j--;\n            if( $cnt > $n ) {\n                JpGraphError::RaiseL(14006);\n                //(\"Pie3D Internal Error: Z-Sorting algorithm for 3D Pies is not working properly (2). Trying to wrap twice while stroking.\");\n            }\n            if($j<0) $j=$n-1;\n            $cnt++;\n        }\n\n        // Now do a special thing. Stroke the last slice on the left\n        // halfcircle one more time.  This is needed in the case where\n        // the slice close to 270 have been exploded. In that case the\n        // part of the slice close to the center of the pie might be\n        // slightly nagged.\n        if( $aaoption !== 2 )\n        $this->Pie3DSlice($img,$last[0],$last[1],$d,$h,$angles[$last[2]][0],\n        $angles[$last[2]][1],$z,$adjcolors[$last[2]],$shadow);\n\n\n        if( $aaoption !== 1 ) {\n            // Now print possible labels and add csim\n            $this->value->ApplyFont($img);\n            $margin = $img->GetFontHeight()/2 + $this->value->margin ;\n            $labelpoasadj = $this->ilabelposadj === 'auto' ? 1.0 : $this->ilabelposadj; //MiToTeam: 'auto' can not be used as float\n            for($i=0; $i < count($data); ++$i ) {\n                $la = $labeldata[$i][0];\n                $x = $labeldata[$i][1] + cos($la*M_PI/180)*($d+$margin)*$labelpoasadj;\n                $y = $labeldata[$i][2] - sin($la*M_PI/180)*($h+$margin)*$labelpoasadj;\n                if( $labelpoasadj >= 1.0 ) {\n                    if( $la > 180 && $la < 360 ) $y += $z;\n                }\n                if( $this->labeltype == 0 ) {\n                    if( $sum > 0 ) $l = 100*$data[$i]/$sum;\n                    else $l = 0;\n                }\n                elseif( $this->labeltype == 1 ) {\n                    $l = $data[$i];\n                }\n                else {\n                    $l = $this->adjusted_data[$i];\n                }\n                if( isset($this->labels[$i]) && is_string($this->labels[$i]) ) {\n                    $l=sprintf($this->labels[$i],$l);\n                }\n\n                $this->StrokeLabels($l,$img,$labeldata[$i][0]*M_PI/180,$x,$y,$z);\n                 \n                $this->Add3DSliceToCSIM($i,$labeldata[$i][1],$labeldata[$i][2],$h*2,$d*2,$z,\n                $originalangles[$i][0],$originalangles[$i][1]);\n            }\n        }\n\n        //\n        // Finally add potential lines in pie\n        //\n\n        if( $edgecolor==\"\" || $aaoption !== 0 ) return;\n\n        $accsum = 0;\n        $a = $startangle;\n        $a = $this->NormAngle($a);\n\n        $a *= M_PI/180.0;\n\n        $idx=0;\n        $img->PushColor($edgecolor);\n        $img->SetLineWeight($edgeweight);\n\n        $fulledge = true;\n        for($i=0; $i < count($data) && $fulledge; ++$i ) {\n            if( empty($this->explode_radius[$i]) ) {\n                $this->explode_radius[$i]=0;\n            }\n            if( $this->explode_radius[$i] > 0 ) {\n                $fulledge = false;\n            }\n        }\n         \n\n        for($i=0; $i < count($data); ++$i, ++$idx ) {\n\n            $da = $data[$i]/$sum * 2*M_PI;\n            $this->StrokeFullSliceFrame($img,$xc,$yc,$a,$a+$da,$d,$h,$z,$edgecolor,\n            $this->explode_radius[$i],$fulledge);\n            $a += $da;\n        }\n        $img->PopColor();\n    }\n\n    function StrokeFullSliceFrame($img,$xc,$yc,$sa,$ea,$w,$h,$z,$edgecolor,$exploderadius,$fulledge) {\n        $step = 0.02;\n\n        if( $exploderadius > 0 ) {\n            $la = ($sa+$ea)/2;\n            $xc += $exploderadius*cos($la);\n            $yc -= $exploderadius*sin($la) * ($h/$w) ;\n             \n        }\n\n        $p = array($xc,$yc,$xc+$w*cos($sa),$yc-$h*sin($sa));\n\n        for($a=$sa; $a < $ea; $a += $step ) {\n            $p[] = $xc + $w*cos($a);\n            $p[] = $yc - $h*sin($a);\n        }\n\n        $p[] = $xc+$w*cos($ea);\n        $p[] = $yc-$h*sin($ea);\n        $p[] = $xc;\n        $p[] = $yc;\n\n        $img->SetColor($edgecolor);\n        $img->Polygon($p);\n\n        // Unfortunately we can't really draw the full edge around the whole of\n        // of the slice if any of the slices are exploded. The reason is that\n        // this algorithm is to simply. There are cases where the edges will\n        // \"overwrite\" other slices when they have been exploded.\n        // Doing the full, proper 3D hidden lines stiff is actually quite\n        // tricky. So for exploded pies we only draw the top edge. Not perfect\n        // but the \"real\" solution is much more complicated.\n        if( $fulledge && !( $sa > 0 && $sa < M_PI && $ea < M_PI) ) {\n\n            if($sa < M_PI && $ea > M_PI) {\n                $sa = M_PI;\n            }\n\n            if($sa < 2*M_PI && (($ea >= 2*M_PI) || ($ea > 0 && $ea < $sa ) ) ) {\n                $ea = 2*M_PI;\n            }\n\n            if( $sa >= M_PI && $ea <= 2*M_PI ) {\n                $p = array($xc + $w*cos($sa),$yc - $h*sin($sa),\n                $xc + $w*cos($sa),$z + $yc - $h*sin($sa));\n\n                for($a=$sa+$step; $a < $ea; $a += $step ) {\n                    $p[] = $xc + $w*cos($a);\n                    $p[] = $z + $yc - $h*sin($a);\n                }\n                $p[] = $xc + $w*cos($ea);\n                $p[] = $z + $yc - $h*sin($ea);\n                $p[] = $xc + $w*cos($ea);\n                $p[] = $yc - $h*sin($ea);\n                $img->SetColor($edgecolor);\n                $img->Polygon($p);\n            }\n        }\n    }\n\n    function Stroke($img,$aaoption=0) {\n        $n = count($this->data);\n\n        // If user hasn't set the colors use the theme array\n        if( $this->setslicecolors==null ) {\n            $colors = array_keys($img->rgb->rgb_table);\n            sort($colors);\n            $idx_a=$this->themearr[$this->theme];\n            $ca = array();\n            $m = count($idx_a);\n            for($i=0; $i < $m; ++$i) {\n                $ca[$i] = $colors[$idx_a[$i]];\n            }\n            $ca = array_reverse(array_slice($ca,0,$n));\n        }\n        else {\n            $ca = $this->setslicecolors;\n        }\n\n\n        if( $this->posx <= 1 && $this->posx > 0 ) {\n            $xc = round($this->posx*$img->width);\n        }\n        else {\n            $xc = $this->posx ;\n        }\n\n        if( $this->posy <= 1 && $this->posy > 0 ) {\n            $yc = round($this->posy*$img->height);\n        }\n        else {\n            $yc = $this->posy ;\n        }\n\n        if( $this->radius <= 1 ) {\n            $width = floor($this->radius*min($img->width,$img->height));\n            // Make sure that the pie doesn't overflow the image border\n            // The 0.9 factor is simply an extra margin to leave some space\n            // between the pie an the border of the image.\n            $width = min($width,min($xc*0.9,($yc*90/$this->angle-$width/4)*0.9));\n        }\n        else {\n            $width = $this->radius * ($aaoption === 1 ? 2 : 1 ) ;\n        }\n\n        // Add a sanity check for width\n        if( $width < 1 ) {\n            JpGraphError::RaiseL(14007);//(\"Width for 3D Pie is 0. Specify a size > 0\");\n        }\n\n        // Establish a thickness. By default the thickness is a fifth of the\n        // pie slice width (=pie radius) but since the perspective depends\n        // on the inclination angle we use some heuristics to make the edge\n        // slightly thicker the less the angle.\n\n        // Has user specified an absolute thickness? In that case use\n        // that instead\n\n        if( $this->iThickness ) {\n            $thick = $this->iThickness;\n            $thick *= ($aaoption === 1 ? 2 : 1 );\n        }\n        else {\n            $thick = $width/12;\n        }\n        $a = $this->angle;\n        \n        if( $a <= 30 ) $thick *= 1.6;\n        elseif( $a <= 40 ) $thick *= 1.4;\n        elseif( $a <= 50 ) $thick *= 1.2;\n        elseif( $a <= 60 ) $thick *= 1.0;\n        elseif( $a <= 70 ) $thick *= 0.8;\n        elseif( $a <= 80 ) $thick *= 0.7;\n        else $thick *= 0.6;\n\n        $thick = floor($thick);\n\n        if( $this->explode_all ) {\n            for($i=0; $i < $n; ++$i)\n                $this->explode_radius[$i]=$this->explode_r;\n        }\n\n        $this->Pie3D($aaoption,$img,$this->data, $ca, $xc, $yc, $width, $this->angle,\n        $thick, 0.65, $this->startangle, $this->edgecolor, $this->edgeweight);\n\n        // Adjust title position\n        if( $aaoption != 1 ) {\n            $this->title->SetPos($xc,$yc-$this->title->GetFontHeight($img)-$width/2-$this->title->margin,         \"center\",\"bottom\");\n            $this->title->Stroke($img);\n        }\n    }\n\n    //---------------\n    // PRIVATE METHODS\n\n    // Position the labels of each slice\n    function StrokeLabels($label,$img,$a,$xp,$yp,$z) {\n        $this->value->halign=\"left\";\n        $this->value->valign=\"top\";\n\n        // Position the axis title.\n        // dx, dy is the offset from the top left corner of the bounding box that sorrounds the text\n        // that intersects with the extension of the corresponding axis. The code looks a little\n        // bit messy but this is really the only way of having a reasonable position of the\n        // axis titles.\n        $this->value->ApplyFont($img);\n        $h=$img->GetTextHeight($label);\n        // For numeric values the format of the display value\n        // must be taken into account\n        if( is_numeric($label) ) {\n            if( $label >= 0 ) {\n                $w=$img->GetTextWidth(sprintf($this->value->format,$label));\n            }\n            else {\n                $w=$img->GetTextWidth(sprintf($this->value->negformat,$label));\n            }\n        }\n        else {\n            $w=$img->GetTextWidth($label);\n        }\n        \n        while( $a > 2*M_PI ) {\n            $a -= 2*M_PI;\n        }\n        \n        if( $a>=7*M_PI/4 || $a <= M_PI/4 ) $dx=0;\n        if( $a>=M_PI/4 && $a <= 3*M_PI/4 ) $dx=($a-M_PI/4)*2/M_PI;\n        if( $a>=3*M_PI/4 && $a <= 5*M_PI/4 ) $dx=1;\n        if( $a>=5*M_PI/4 && $a <= 7*M_PI/4 ) $dx=(1-($a-M_PI*5/4)*2/M_PI);\n\n        if( $a>=7*M_PI/4 ) $dy=(($a-M_PI)-3*M_PI/4)*2/M_PI;\n        if( $a<=M_PI/4 ) $dy=(1-$a*2/M_PI);\n        if( $a>=M_PI/4 && $a <= 3*M_PI/4 ) $dy=1;\n        if( $a>=3*M_PI/4 && $a <= 5*M_PI/4 ) $dy=(1-($a-3*M_PI/4)*2/M_PI);\n        if( $a>=5*M_PI/4 && $a <= 7*M_PI/4 ) $dy=0;\n\n        $x = round($xp-$dx*$w);\n        $y = round($yp-$dy*$h);\n\n        // Mark anchor point for debugging\n        /*\n        $img->SetColor('red');\n        $img->Line($xp-10,$yp,$xp+10,$yp);\n        $img->Line($xp,$yp-10,$xp,$yp+10);\n        */\n\n        $oldmargin = $this->value->margin;\n        $this->value->margin=0;\n        $this->value->Stroke($img,$label,$x,$y);\n        $this->value->margin=$oldmargin;\n\n    }\n} // Class\n\n/* EOF */\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_plotband.php",
    "content": "<?php\n//=======================================================================\n// File:        JPGRAPH_PLOTBAND.PHP\n// Description: PHP4 Graph Plotting library. Extension module.\n// Created:     2004-02-18\n// Ver:         $Id: jpgraph_plotband.php 1106 2009-02-22 20:16:35Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\n// Constants for types of static bands in plot area\ndefine(\"BAND_RDIAG\",1); // Right diagonal lines\ndefine(\"BAND_LDIAG\",2); // Left diagonal lines\ndefine(\"BAND_SOLID\",3); // Solid one color\ndefine(\"BAND_VLINE\",4); // Vertical lines\ndefine(\"BAND_HLINE\",5);  // Horizontal lines\ndefine(\"BAND_3DPLANE\",6);  // \"3D\" Plane\ndefine(\"BAND_HVCROSS\",7);  // Vertical/Hor crosses\ndefine(\"BAND_DIAGCROSS\",8); // Diagonal crosses\n\n\n// Utility class to hold coordinates for a rectangle\nclass Rectangle {\n    public $x,$y,$w,$h;\n    public $xe, $ye;\n    function __construct($aX,$aY,$aWidth,$aHeight) {\n        $this->x=$aX;\n        $this->y=$aY;\n        $this->w=$aWidth;\n        $this->h=$aHeight;\n        $this->xe=$aX+$aWidth-1;\n        $this->ye=$aY+$aHeight-1;\n    }\n}\n\n//=====================================================================\n// Class RectPattern\n// Base class for pattern hierarchi that is used to display patterned\n// bands on the graph. Any subclass that doesn't override Stroke()\n// must at least implement method DoPattern($aImg) which is responsible\n// for drawing the pattern onto the graph.\n//=====================================================================\nclass RectPattern {\n    protected $color;\n    protected $weight;\n    protected $rect=null;\n    protected $doframe=true;\n    protected $linespacing; // Line spacing in pixels\n    protected $iBackgroundColor=-1;  // Default is no background fill\n\n    function __construct($aColor,$aWeight=1) {\n        $this->color = $aColor;\n        $this->weight = $aWeight;\n    }\n\n    function SetBackground($aBackgroundColor) {\n        $this->iBackgroundColor=$aBackgroundColor;\n    }\n\n    function SetPos($aRect) {\n        $this->rect = $aRect;\n    }\n\n    function ShowFrame($aShow=true) {\n        $this->doframe=$aShow;\n    }\n\n    function SetDensity($aDens) {\n        if( $aDens < 1 || $aDens > 100 )\n        JpGraphError::RaiseL(16001,$aDens);\n        //(\" Desity for pattern must be between 1 and 100. (You tried $aDens)\");\n        // 1% corresponds to linespacing=50\n        // 100 % corresponds to linespacing 1\n        $this->linespacing = floor(((100-$aDens)/100.0)*50)+1;\n\n    }\n\n    function Stroke($aImg) {\n        if( $this->rect == null )\n        JpGraphError::RaiseL(16002);\n        //(\" No positions specified for pattern.\");\n\n        if( !(is_numeric($this->iBackgroundColor) && $this->iBackgroundColor==-1) ) {\n            $aImg->SetColor($this->iBackgroundColor);\n            $aImg->FilledRectangle($this->rect->x,$this->rect->y,$this->rect->xe,$this->rect->ye);\n        }\n\n        $aImg->SetColor($this->color);\n        $aImg->SetLineWeight($this->weight);\n\n        // Virtual function implemented by subclass\n        $this->DoPattern($aImg);\n\n        // Frame around the pattern area\n        if( $this->doframe )\n        $aImg->Rectangle($this->rect->x,$this->rect->y,$this->rect->xe,$this->rect->ye);\n    }\n\n}\n\n\n//=====================================================================\n// Class RectPatternSolid\n// Implements a solid band\n//=====================================================================\nclass RectPatternSolid extends RectPattern {\n\n    function __construct($aColor=\"black\",$aWeight=1) {\n        parent::__construct($aColor,$aWeight);\n    }\n\n    function DoPattern($aImg) {\n        $aImg->SetColor($this->color);\n        $aImg->FilledRectangle($this->rect->x,$this->rect->y,\n        $this->rect->xe,$this->rect->ye);\n    }\n}\n\n//=====================================================================\n// Class RectPatternHor\n// Implements horizontal line pattern\n//=====================================================================\nclass RectPatternHor extends RectPattern {\n\n    function __construct($aColor=\"black\",$aWeight=1,$aLineSpacing=7) {\n        parent::__construct($aColor,$aWeight);\n        $this->linespacing = $aLineSpacing;\n    }\n\n    function DoPattern($aImg) {\n        $x0 = $this->rect->x;\n        $x1 = $this->rect->xe;\n        $y = $this->rect->y;\n        while( $y < $this->rect->ye ) {\n            $aImg->Line($x0,$y,$x1,$y);\n            $y += $this->linespacing;\n        }\n    }\n}\n\n//=====================================================================\n// Class RectPatternVert\n// Implements vertical line pattern\n//=====================================================================\nclass RectPatternVert extends RectPattern {\n\n    function __construct($aColor=\"black\",$aWeight=1,$aLineSpacing=7) {\n        parent::__construct($aColor,$aWeight);\n        $this->linespacing = $aLineSpacing;\n    }\n\n    //--------------------\n    // Private methods\n    //\n    function DoPattern($aImg) {\n        $x = $this->rect->x;\n        $y0 = $this->rect->y;\n        $y1 = $this->rect->ye;\n        while( $x < $this->rect->xe ) {\n            $aImg->Line($x,$y0,$x,$y1);\n            $x += $this->linespacing;\n        }\n    }\n}\n\n\n//=====================================================================\n// Class RectPatternRDiag\n// Implements right diagonal pattern\n//=====================================================================\nclass RectPatternRDiag extends RectPattern {\n\n    function __construct($aColor=\"black\",$aWeight=1,$aLineSpacing=12) {\n        parent::__construct($aColor,$aWeight);\n        $this->linespacing = $aLineSpacing;\n    }\n\n    function DoPattern($aImg) {\n        //  --------------------\n        //  | /   /   /   /   /|\n        //  |/   /   /   /   / |\n        //  |   /   /   /   /  |\n        //  --------------------\n        $xe = $this->rect->xe;\n        $ye = $this->rect->ye;\n        $x0 = $this->rect->x + round($this->linespacing/2);\n        $y0 = $this->rect->y;\n        $x1 = $this->rect->x;\n        $y1 = $this->rect->y + round($this->linespacing/2);\n\n        while($x0<=$xe && $y1<=$ye) {\n            $aImg->Line($x0,$y0,$x1,$y1);\n            $x0 += $this->linespacing;\n            $y1 += $this->linespacing;\n        }\n\n        if( $xe-$x1 > $ye-$y0 ) {\n            // Width larger than height\n            $x1 = $this->rect->x + ($y1-$ye);\n            $y1 = $ye;\n            $y0 = $this->rect->y;\n            while( $x0 <= $xe ) {\n                $aImg->Line($x0,$y0,$x1,$y1);\n                $x0 += $this->linespacing;\n                $x1 += $this->linespacing;\n            }\n             \n            $y0=$this->rect->y + ($x0-$xe);\n            $x0=$xe;\n        }\n        else {\n            // Height larger than width\n            $diff = $x0-$xe;\n            $y0 = $diff+$this->rect->y;\n            $x0 = $xe;\n            $x1 = $this->rect->x;\n            while( $y1 <= $ye ) {\n                $aImg->Line($x0,$y0,$x1,$y1);\n                $y1 += $this->linespacing;\n                $y0 += $this->linespacing;\n            }\n             \n            $diff = $y1-$ye;\n            $y1 = $ye;\n            $x1 = $diff + $this->rect->x;\n        }\n\n        while( $y0 <= $ye ) {\n            $aImg->Line($x0,$y0,$x1,$y1);\n            $y0 += $this->linespacing;\n            $x1 += $this->linespacing;\n        }\n    }\n}\n\n//=====================================================================\n// Class RectPatternLDiag\n// Implements left diagonal pattern\n//=====================================================================\nclass RectPatternLDiag extends RectPattern {\n\n    function __construct($aColor=\"black\",$aWeight=1,$aLineSpacing=12) {\n        $this->linespacing = $aLineSpacing;\n        parent::__construct($aColor,$aWeight);\n    }\n\n    function DoPattern($aImg) {\n        //  --------------------\n        //  |\\   \\   \\   \\   \\ |\n        //  | \\   \\   \\   \\   \\|\n        //  |  \\   \\   \\   \\   |\n        //  |------------------|\n        $xe = $this->rect->xe;\n        $ye = $this->rect->ye;\n        $x0 = $this->rect->x + round($this->linespacing/2);\n        $y0 = $this->rect->ye;\n        $x1 = $this->rect->x;\n        $y1 = $this->rect->ye - round($this->linespacing/2);\n\n        while($x0<=$xe && $y1>=$this->rect->y) {\n            $aImg->Line($x0,$y0,$x1,$y1);\n            $x0 += $this->linespacing;\n            $y1 -= $this->linespacing;\n        }\n        if( $xe-$x1 > $ye-$this->rect->y ) {\n            // Width larger than height\n            $x1 = $this->rect->x + ($this->rect->y-$y1);\n            $y0=$ye; $y1=$this->rect->y;\n            while( $x0 <= $xe ) {\n                $aImg->Line($x0,$y0,$x1,$y1);\n                $x0 += $this->linespacing;\n                $x1 += $this->linespacing;\n            }\n             \n            $y0=$this->rect->ye - ($x0-$xe);\n            $x0=$xe;\n        }\n        else {\n            // Height larger than width\n            $diff = $x0-$xe;\n            $y0 = $ye-$diff;\n            $x0 = $xe;\n            while( $y1 >= $this->rect->y ) {\n                $aImg->Line($x0,$y0,$x1,$y1);\n                $y0 -= $this->linespacing;\n                $y1 -= $this->linespacing;\n            }\n            $diff = $this->rect->y - $y1;\n            $x1 = $this->rect->x + $diff;\n            $y1 = $this->rect->y;\n        }\n        while( $y0 >= $this->rect->y ) {\n            $aImg->Line($x0,$y0,$x1,$y1);\n            $y0 -= $this->linespacing;\n            $x1 += $this->linespacing;\n        }\n    }\n}\n\n//=====================================================================\n// Class RectPattern3DPlane\n// Implements \"3D\" plane pattern\n//=====================================================================\nclass RectPattern3DPlane extends RectPattern {\n    private $alpha=50;  // Parameter that specifies the distance\n    // to \"simulated\" horizon in pixel from the\n    // top of the band. Specifies how fast the lines\n    // converge.\n\n    function __construct($aColor=\"black\",$aWeight=1) {\n        parent::__construct($aColor,$aWeight);\n        $this->SetDensity(10);  // Slightly larger default\n    }\n\n    function SetHorizon($aHorizon) {\n        $this->alpha=$aHorizon;\n    }\n\n    function DoPattern($aImg) {\n        // \"Fake\" a nice 3D grid-effect.\n        $x0 = $this->rect->x + $this->rect->w/2;\n        $y0 = $this->rect->y;\n        $x1 = $x0;\n        $y1 = $this->rect->ye;\n        $x0_right = $x0;\n        $x1_right = $x1;\n\n        // BTW \"apa\" means monkey in Swedish but is really a shortform for\n        // \"alpha+a\" which was the labels I used on paper when I derived the\n        // geometric to get the 3D perspective right.\n        // $apa is the height of the bounding rectangle plus the distance to the\n        // artifical horizon (alpha)\n        $apa = $this->rect->h + $this->alpha;\n\n        // Three cases and three loops\n        // 1) The endpoint of the line ends on the bottom line\n        // 2) The endpoint ends on the side\n        // 3) Horizontal lines\n\n        // Endpoint falls on bottom line\n        $middle=$this->rect->x + $this->rect->w/2;\n        $dist=$this->linespacing;\n        $factor=$this->alpha /($apa);\n        while($x1>$this->rect->x) {\n            $aImg->Line($x0,$y0,$x1,$y1);\n            $aImg->Line($x0_right,$y0,$x1_right,$y1);\n            $x1 = $middle - $dist;\n            $x0 = $middle - $dist * $factor;\n            $x1_right = $middle + $dist;\n            $x0_right =  $middle + $dist * $factor;\n            $dist += $this->linespacing;\n        }\n\n        // Endpoint falls on sides\n        $dist -= $this->linespacing;\n        $d=$this->rect->w/2;\n        $c = $apa - $d*$apa/$dist;\n        while( $x0>$this->rect->x ) {\n            $aImg->Line($x0,$y0,$this->rect->x,$this->rect->ye-$c);\n            $aImg->Line($x0_right,$y0,$this->rect->xe,$this->rect->ye-$c);\n            $dist += $this->linespacing;\n            $x0 = $middle - $dist * $factor;\n            $x1 = $middle - $dist;\n            $x0_right =  $middle + $dist * $factor;\n            $c = $apa - $d*$apa/$dist;\n        }\n\n        // Horizontal lines\n        // They need some serious consideration since they are a function\n        // of perspective depth (alpha) and density (linespacing)\n        $x0=$this->rect->x;\n        $x1=$this->rect->xe;\n        $y=$this->rect->ye;\n\n        // The first line is drawn directly. Makes the loop below slightly\n        // more readable.\n        $aImg->Line($x0,$y,$x1,$y);\n        $hls = $this->linespacing;\n\n        // A correction factor for vertical \"brick\" line spacing to account for\n        // a) the difference in number of pixels hor vs vert\n        // b) visual apperance to make the first layer of \"bricks\" look more\n        // square.\n        $vls = $this->linespacing*0.6;\n\n        $ds = $hls*($apa-$vls)/$apa;\n        // Get the slope for the \"perspective line\" going from bottom right\n        // corner to top left corner of the \"first\" brick.\n\n        // Uncomment the following lines if you want to get a visual understanding\n        // of what this helpline does. BTW this mimics the way you would get the\n        // perspective right when drawing on paper.\n        /*\n        $x0 = $middle;\n        $y0 = $this->rect->ye;\n        $len=floor(($this->rect->ye-$this->rect->y)/$vls);\n        $x1 = $middle+round($len*$ds);\n        $y1 = $this->rect->ye-$len*$vls;\n        $aImg->PushColor(\"red\");\n        $aImg->Line($x0,$y0,$x1,$y1);\n        $aImg->PopColor();\n        */\n\n        $y -= $vls;\n        $k=($this->rect->ye-($this->rect->ye-$vls))/($middle-($middle-$ds));\n        $dist = $hls;\n        while( $y>$this->rect->y ) {\n            $aImg->Line($this->rect->x,$y,$this->rect->xe,$y);\n            $adj = $k*$dist/(1+$dist*$k/$apa);\n            if( $adj < 2 ) $adj=1;\n            $y = $this->rect->ye - round($adj);\n            $dist += $hls;\n        }\n    }\n}\n\n//=====================================================================\n// Class RectPatternCross\n// Vert/Hor crosses\n//=====================================================================\nclass RectPatternCross extends RectPattern {\n    private $vert=null;\n    private $hor=null;\n    function __construct($aColor=\"black\",$aWeight=1) {\n        parent::__construct($aColor,$aWeight);\n        $this->vert = new RectPatternVert($aColor,$aWeight);\n        $this->hor  = new RectPatternHor($aColor,$aWeight);\n    }\n\n    function SetOrder($aDepth) {\n        $this->vert->SetOrder($aDepth);\n        $this->hor->SetOrder($aDepth);\n    }\n\n    function SetPos($aRect) {\n        parent::SetPos($aRect);\n        $this->vert->SetPos($aRect);\n        $this->hor->SetPos($aRect);\n    }\n\n    function SetDensity($aDens) {\n        $this->vert->SetDensity($aDens);\n        $this->hor->SetDensity($aDens);\n    }\n\n    function DoPattern($aImg) {\n        $this->vert->DoPattern($aImg);\n        $this->hor->DoPattern($aImg);\n    }\n}\n\n//=====================================================================\n// Class RectPatternDiagCross\n// Vert/Hor crosses\n//=====================================================================\n\nclass RectPatternDiagCross extends RectPattern {\n    private $left=null;\n    private $right=null;\n    function __construct($aColor=\"black\",$aWeight=1) {\n        parent::__construct($aColor,$aWeight);\n        $this->right = new RectPatternRDiag($aColor,$aWeight);\n        $this->left  = new RectPatternLDiag($aColor,$aWeight);\n    }\n\n    function SetOrder($aDepth) {\n        $this->left->SetOrder($aDepth);\n        $this->right->SetOrder($aDepth);\n    }\n\n    function SetPos($aRect) {\n        parent::SetPos($aRect);\n        $this->left->SetPos($aRect);\n        $this->right->SetPos($aRect);\n    }\n\n    function SetDensity($aDens) {\n        $this->left->SetDensity($aDens);\n        $this->right->SetDensity($aDens);\n    }\n\n    function DoPattern($aImg) {\n        $this->left->DoPattern($aImg);\n        $this->right->DoPattern($aImg);\n    }\n\n}\n\n//=====================================================================\n// Class RectPatternFactory\n// Factory class for rectangular pattern\n//=====================================================================\nclass RectPatternFactory {\n    function __construct() {\n        // Empty\n    }\n    function Create($aPattern,$aColor,$aWeight=1) {\n        switch($aPattern) {\n            case BAND_RDIAG:\n                $obj =  new RectPatternRDiag($aColor,$aWeight);\n                break;\n            case BAND_LDIAG:\n                $obj =  new RectPatternLDiag($aColor,$aWeight);\n                break;\n            case BAND_SOLID:\n                $obj =  new RectPatternSolid($aColor,$aWeight);\n                break;\n            case BAND_VLINE:\n                $obj =  new RectPatternVert($aColor,$aWeight);\n                break;\n            case BAND_HLINE:\n                $obj =  new RectPatternHor($aColor,$aWeight);\n                break;\n            case BAND_3DPLANE:\n                $obj =  new RectPattern3DPlane($aColor,$aWeight);\n                break;\n            case BAND_HVCROSS:\n                $obj =  new RectPatternCross($aColor,$aWeight);\n                break;\n            case BAND_DIAGCROSS:\n                $obj =  new RectPatternDiagCross($aColor,$aWeight);\n                break;\n            default:\n                JpGraphError::RaiseL(16003,$aPattern);\n                //(\" Unknown pattern specification ($aPattern)\");\n        }\n        return $obj;\n    }\n}\n\n\n//=====================================================================\n// Class PlotBand\n// Factory class which is used by the client.\n// It is responsible for factoring the corresponding pattern\n// concrete class.\n//=====================================================================\nclass PlotBand {\n    public $depth; // Determine if band should be over or under the plots\n    private $prect=null;\n    private $dir, $min, $max;\n\n    function __construct($aDir,$aPattern,$aMin,$aMax,$aColor=\"black\",$aWeight=1,$aDepth=DEPTH_BACK) {\n        $f =  new RectPatternFactory();\n        $this->prect = $f->Create($aPattern,$aColor,$aWeight);\n        if( is_numeric($aMin) && is_numeric($aMax) && ($aMin > $aMax) )\n        JpGraphError::RaiseL(16004);\n        //('Min value for plotband is larger than specified max value. Please correct.');\n        $this->dir = $aDir;\n        $this->min = $aMin;\n        $this->max = $aMax;\n        $this->depth=$aDepth;\n    }\n\n    // Set position. aRect contains absolute image coordinates\n    function SetPos($aRect) {\n        assert( $this->prect != null ) ;\n        $this->prect->SetPos($aRect);\n    }\n\n    function ShowFrame($aFlag=true) {\n        $this->prect->ShowFrame($aFlag);\n    }\n\n    // Set z-order. In front of pplot or in the back\n    function SetOrder($aDepth) {\n        $this->depth=$aDepth;\n    }\n\n    function SetDensity($aDens) {\n        $this->prect->SetDensity($aDens);\n    }\n\n    function GetDir() {\n        return $this->dir;\n    }\n\n    function GetMin() {\n        return $this->min;\n    }\n\n    function GetMax() {\n        return $this->max;\n    }\n\n    function PreStrokeAdjust($aGraph) {\n        // Nothing to do\n    }\n\n    // Display band\n    function Stroke($aImg,$aXScale,$aYScale) {\n        assert( $this->prect != null ) ;\n        if( $this->dir == HORIZONTAL ) {\n            if( $this->min === 'min' ) $this->min = $aYScale->GetMinVal();\n            if( $this->max === 'max' ) $this->max = $aYScale->GetMaxVal();\n\n            // Only draw the bar if it actually appears in the range\n            if ($this->min < $aYScale->GetMaxVal() && $this->max > $aYScale->GetMinVal()) {\n                 \n                // Trucate to limit of axis\n                $this->min = max($this->min, $aYScale->GetMinVal());\n                $this->max = min($this->max, $aYScale->GetMaxVal());\n\n                $x=$aXScale->scale_abs[0];\n                $y=$aYScale->Translate($this->max);\n                $width=$aXScale->scale_abs[1]-$aXScale->scale_abs[0]+1;\n                $height=abs($y-$aYScale->Translate($this->min))+1;\n                $this->prect->SetPos(new Rectangle($x,$y,$width,$height));\n                $this->prect->Stroke($aImg);\n            }\n        }\n        else { // VERTICAL\n            if( $this->min === 'min' ) $this->min = $aXScale->GetMinVal();\n            if( $this->max === 'max' ) $this->max = $aXScale->GetMaxVal();\n\n            // Only draw the bar if it actually appears in the range\n            if ($this->min < $aXScale->GetMaxVal() && $this->max > $aXScale->GetMinVal()) {\n                 \n                // Trucate to limit of axis\n                $this->min = max($this->min, $aXScale->GetMinVal());\n                $this->max = min($this->max, $aXScale->GetMaxVal());\n\n                $y=$aYScale->scale_abs[1];\n                $x=$aXScale->Translate($this->min);\n                $height=abs($aYScale->scale_abs[1]-$aYScale->scale_abs[0]);\n                $width=abs($x-$aXScale->Translate($this->max));\n                $this->prect->SetPos(new Rectangle($x,$y,$width,$height));\n                $this->prect->Stroke($aImg);\n            }\n        }\n    }\n}\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_plotline.php",
    "content": "<?php\n/*=======================================================================\n // File:  \t\t JPGRAPH_PLOTLINE.PHP\n // Description: PlotLine extension for JpGraph\n // Created:  \t 2009-03-24\n // Ver:  \t\t $Id: jpgraph_plotline.php 1931 2010-03-22 15:05:48Z ljp $\n //\n // CLASS PlotLine\n // Data container class to hold properties for a static\n // line that is drawn directly in the plot area.\n // Useful to add static borders inside a plot to show for example set-values\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\nclass PlotLine {\n    public $scaleposition, $direction=-1;\n    protected $weight=1;\n    protected $color = 'black';\n    private $legend='',$hidelegend=false, $legendcsimtarget='', $legendcsimalt='',$legendcsimwintarget='';\n    private $iLineStyle='solid';\n    public $numpoints=0; // Needed since the framework expects this property\n\n    function __construct($aDir=HORIZONTAL,$aPos=0,$aColor='black',$aWeight=1) {\n        $this->direction = $aDir;\n        $this->color=$aColor;\n        $this->weight=$aWeight;\n        $this->scaleposition=$aPos;\n    }\n\n    function SetLegend($aLegend,$aCSIM='',$aCSIMAlt='',$aCSIMWinTarget='') {\n        $this->legend = $aLegend;\n        $this->legendcsimtarget = $aCSIM;\n        $this->legendcsimwintarget = $aCSIMWinTarget;\n        $this->legendcsimalt = $aCSIMAlt;\n    }\n\n    function HideLegend($f=true) {\n        $this->hidelegend = $f;\n    }\n\n    function SetPosition($aScalePosition) {\n        $this->scaleposition=$aScalePosition;\n    }\n\n    function SetDirection($aDir) {\n        $this->direction = $aDir;\n    }\n\n    function SetColor($aColor) {\n        $this->color=$aColor;\n    }\n\n    function SetWeight($aWeight) {\n        $this->weight=$aWeight;\n    }\n\n    function SetLineStyle($aStyle) {\n        $this->iLineStyle = $aStyle;\n    }\n\n    function GetCSIMAreas() {\n        return '';\n    }\n\n    //---------------\n    // PRIVATE METHODS\n\n    function DoLegend($graph) {\n        if( !$this->hidelegend ) $this->Legend($graph);\n    }\n\n    // Framework function the chance for each plot class to set a legend\n    function Legend($aGraph) {\n        if( $this->legend != '' ) {\n            $dummyPlotMark = new PlotMark();\n            $lineStyle = 1;\n            $aGraph->legend->Add($this->legend,$this->color,$dummyPlotMark,$lineStyle,\n            $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);\n        }\n    }\n\n    function PreStrokeAdjust($aGraph) {\n        // Nothing to do\n    }\n\n    // Called by framework to allow the object to draw\n    // optional information in the margin area\n    function StrokeMargin($aImg) {\n        // Nothing to do\n    }\n\n    // Framework function to allow the object to adjust the scale\n    function PrescaleSetup($aGraph) {\n        // Nothing to do\n    }\n\n    function Min() {\n        return array(null,null);\n    }\n\n    function Max() {\n        return array(null,null);\n    }\n\n    function _Stroke($aImg,$aMinX,$aMinY,$aMaxX,$aMaxY,$aXPos,$aYPos) {\n        $aImg->SetColor($this->color);\n        $aImg->SetLineWeight($this->weight);\n        $oldStyle = $aImg->SetLineStyle($this->iLineStyle);\n        if( $this->direction == VERTICAL ) {\n            $ymin_abs = $aMinY;\n            $ymax_abs = $aMaxY;\n            $xpos_abs = $aXPos;\n            $aImg->StyleLine($xpos_abs, $ymin_abs, $xpos_abs, $ymax_abs);\n        }\n        elseif( $this->direction == HORIZONTAL ) {\n            $xmin_abs = $aMinX;\n            $xmax_abs = $aMaxX;\n            $ypos_abs = $aYPos;\n            $aImg->StyleLine($xmin_abs, $ypos_abs, $xmax_abs, $ypos_abs);\n        }\n        else {\n            JpGraphError::RaiseL(25125);//(\" Illegal direction for static line\");\n        }\n        $aImg->SetLineStyle($oldStyle);\n    }\n\n    function Stroke($aImg,$aXScale,$aYScale) {\n        $this->_Stroke($aImg,\n            $aImg->left_margin,\n            $aYScale->Translate($aYScale->GetMinVal()),\n            $aImg->width-$aImg->right_margin,\n            $aYScale->Translate($aYScale->GetMaxVal()),\n            $aXScale->Translate($this->scaleposition),\n            $aYScale->Translate($this->scaleposition)\n        );\n    }\n}\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_plotmark.inc.php",
    "content": "<?php\n//=======================================================================\n// File:        JPGRAPH_PLOTMARK.PHP\n// Description: Class file. Handles plotmarks\n// Created:     2003-03-21\n// Ver:         $Id: jpgraph_plotmark.inc.php 1106 2009-02-22 20:16:35Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\n\n//===================================================\n// CLASS PlotMark\n// Description: Handles the plot marks in graphs\n//===================================================\n\nclass PlotMark {\n    public $title, $show=true;\n    public $type,$weight=1;\n    public $iFormatCallback=\"\", $iFormatCallback2=\"\";\n    public $fill_color=\"blue\";\n    public $color=\"black\", $width=4;\n    private $yvalue,$xvalue='',$csimtarget,$csimwintarget='',$csimalt,$csimareas;\n    private $markimg='',$iScale=1.0;\n    private $oldfilename='',$iFileName='';\n    private $imgdata_balls = null;\n    private $imgdata_diamonds = null;\n    private $imgdata_squares = null;\n    private $imgdata_bevels = null;\n    private $imgdata_stars = null;\n    private $imgdata_pushpins = null;\n\n    //--------------\n    // CONSTRUCTOR\n    function __construct() {\n        $this->title = new Text();\n        $this->title->Hide();\n        $this->csimareas = '';\n        $this->type=-1;\n    }\n    //---------------\n    // PUBLIC METHODS\n    function SetType($aType,$aFileName='',$aScale=1.0) {\n        $this->type = $aType;\n        if( $aType == MARK_IMG && $aFileName=='' ) {\n            JpGraphError::RaiseL(23003);//('A filename must be specified if you set the mark type to MARK_IMG.');\n        }\n        $this->iFileName = $aFileName;\n        $this->iScale = $aScale;\n    }\n\n    function SetCallback($aFunc) {\n        $this->iFormatCallback = $aFunc;\n    }\n\n    function SetCallbackYX($aFunc) {\n        $this->iFormatCallback2 = $aFunc;\n    }\n\n    function GetType() {\n        return $this->type;\n    }\n\n    function SetColor($aColor) {\n        $this->color=$aColor;\n    }\n\n    function SetFillColor($aFillColor) {\n        $this->fill_color = $aFillColor;\n    }\n\n    function SetWeight($aWeight) {\n        $this->weight = $aWeight;\n    }\n\n    // Synonym for SetWidth()\n    function SetSize($aWidth) {\n        $this->width=$aWidth;\n    }\n\n    function SetWidth($aWidth) {\n        $this->width=$aWidth;\n    }\n\n    function SetDefaultWidth() {\n        switch( $this->type ) {\n            case MARK_CIRCLE:\n            case MARK_FILLEDCIRCLE:\n                $this->width=4;\n                break;\n            default:\n                $this->width=7;\n        }\n    }\n\n    function GetWidth() {\n        return $this->width;\n    }\n\n    function Hide($aHide=true) {\n        $this->show = !$aHide;\n    }\n\n    function Show($aShow=true) {\n        $this->show = $aShow;\n    }\n\n    function SetCSIMAltVal($aY,$aX='') {\n        $this->yvalue=$aY;\n        $this->xvalue=$aX;\n    }\n\n    function SetCSIMTarget($aTarget,$aWinTarget='') {\n        $this->csimtarget=$aTarget;\n        $this->csimwintarget=$aWinTarget;\n    }\n\n    function SetCSIMAlt($aAlt) {\n        $this->csimalt=$aAlt;\n    }\n\n    function GetCSIMAreas(){\n        return $this->csimareas;\n    }\n\n    function AddCSIMPoly($aPts) {\n        $coords = round($aPts[0]).\", \".round($aPts[1]);\n        $n = count($aPts)/2;\n        for( $i=1; $i < $n; ++$i){\n            $coords .= \", \".round($aPts[2*$i]).\", \".round($aPts[2*$i+1]);\n        }\n        $this->csimareas=\"\";\n        if( !empty($this->csimtarget) ) {\n            $this->csimareas .= \"<area shape=\\\"poly\\\" coords=\\\"$coords\\\" href=\\\"\".htmlentities($this->csimtarget).\"\\\"\";\n\n            if( !empty($this->csimwintarget) ) {\n                $this->csimareas .= \" target=\\\"\".$this->csimwintarget.\"\\\" \";\n            }\n\n            if( !empty($this->csimalt) ) {\n                $tmp=sprintf($this->csimalt,$this->yvalue,$this->xvalue);\n                $this->csimareas .= \" title=\\\"$tmp\\\" alt=\\\"$tmp\\\"\";\n            }\n            $this->csimareas .= \" />\\n\";\n        }\n    }\n\n    function AddCSIMCircle($x,$y,$r) {\n        $x = round((float)$x); $y=round((float)$y); $r=round((float)$r); //MiToTeam: explicit type casting\n        $this->csimareas=\"\";\n        if( !empty($this->csimtarget) ) {\n            $this->csimareas .= \"<area shape=\\\"circle\\\" coords=\\\"$x,$y,$r\\\" href=\\\"\".htmlentities($this->csimtarget).\"\\\"\";\n\n            if( !empty($this->csimwintarget) ) {\n                $this->csimareas .= \" target=\\\"\".$this->csimwintarget.\"\\\" \";\n            }\n\n            if( !empty($this->csimalt) ) {\n                $tmp=sprintf($this->csimalt,$this->yvalue,$this->xvalue);\n                $this->csimareas .= \" title=\\\"$tmp\\\" alt=\\\"$tmp\\\" \";\n            }\n            $this->csimareas .= \" />\\n\";\n        }\n    }\n     \n    function Stroke($img,$x,$y) {\n        if( !$this->show ) return;\n\n        if( $this->iFormatCallback != '' || $this->iFormatCallback2 != '' ) {\n\n            if( $this->iFormatCallback != '' ) {\n                $f = $this->iFormatCallback;\n                list($width,$color,$fcolor) = call_user_func($f,$this->yvalue);\n                $filename = $this->iFileName;\n                $imgscale = $this->iScale;\n            }\n            else {\n                $f = $this->iFormatCallback2;\n                list($width,$color,$fcolor,$filename,$imgscale) = call_user_func($f,$this->yvalue,$this->xvalue);\n                if( $filename==\"\" ) $filename = $this->iFileName;\n                if( $imgscale==\"\" ) $imgscale = $this->iScale;\n            }\n\n            if( $width==\"\" ) $width = $this->width;\n            if( $color==\"\" ) $color = $this->color;\n            if( $fcolor==\"\" ) $fcolor = $this->fill_color;\n\n        }\n        else {\n            $fcolor = $this->fill_color;\n            $color = $this->color;\n            $width = $this->width;\n            $filename = $this->iFileName;\n            $imgscale = $this->iScale;\n        }\n\n        if( $this->type == MARK_IMG ||\n        ($this->type >= MARK_FLAG1 && $this->type <= MARK_FLAG4 ) ||\n        $this->type >= MARK_IMG_PUSHPIN ) {\n\n            // Note: For the builtin images we use the \"filename\" parameter\n            // to denote the color\n            $anchor_x = 0.5;\n            $anchor_y = 0.5;\n            switch( $this->type ) {\n                case MARK_FLAG1:\n                case MARK_FLAG2:\n                case MARK_FLAG3:\n                case MARK_FLAG4:\n                    $this->markimg = FlagCache::GetFlagImgByName($this->type-MARK_FLAG1+1,$filename);\n                    break;\n\n                case MARK_IMG :\n                    // Load an image and use that as a marker\n                    // Small optimization, if we have already read an image don't\n                    // waste time reading it again.\n                    if( $this->markimg == '' || !($this->oldfilename === $filename) ) {\n                        $this->markimg = Graph::LoadBkgImage('',$filename);\n                        $this->oldfilename = $filename ;\n                    }\n                    break;\n\n                case MARK_IMG_PUSHPIN:\n                case MARK_IMG_SPUSHPIN:\n                case MARK_IMG_LPUSHPIN:\n                    if( $this->imgdata_pushpins == null ) {\n                        require_once 'imgdata_pushpins.inc.php';\n                        $this->imgdata_pushpins = new ImgData_PushPins();\n                    }\n                    $this->markimg = $this->imgdata_pushpins->GetImg($this->type,$filename);\n                    list($anchor_x,$anchor_y) = $this->imgdata_pushpins->GetAnchor();\n                    break;\n\n                case MARK_IMG_SQUARE:\n                    if( $this->imgdata_squares == null ) {\n                        require_once 'imgdata_squares.inc.php';\n                        $this->imgdata_squares = new ImgData_Squares();\n                    }\n                    $this->markimg = $this->imgdata_squares->GetImg($this->type,$filename);\n                    list($anchor_x,$anchor_y) = $this->imgdata_squares->GetAnchor();\n                    break;\n\n                case MARK_IMG_STAR:\n                    if( $this->imgdata_stars == null ) {\n                        require_once 'imgdata_stars.inc.php';\n                        $this->imgdata_stars = new ImgData_Stars();\n                    }\n                    $this->markimg = $this->imgdata_stars->GetImg($this->type,$filename);\n                    list($anchor_x,$anchor_y) = $this->imgdata_stars->GetAnchor();\n                    break;\n\n                case MARK_IMG_BEVEL:\n                    if( $this->imgdata_bevels == null ) {\n                        require_once 'imgdata_bevels.inc.php';\n                        $this->imgdata_bevels = new ImgData_Bevels();\n                    }\n                    $this->markimg = $this->imgdata_bevels->GetImg($this->type,$filename);\n                    list($anchor_x,$anchor_y) = $this->imgdata_bevels->GetAnchor();\n                    break;\n\n                case MARK_IMG_DIAMOND:\n                    if( $this->imgdata_diamonds == null ) {\n                        require_once 'imgdata_diamonds.inc.php';\n                        $this->imgdata_diamonds = new ImgData_Diamonds();\n                    }\n                    $this->markimg = $this->imgdata_diamonds->GetImg($this->type,$filename);\n                    list($anchor_x,$anchor_y) = $this->imgdata_diamonds->GetAnchor();\n                    break;\n\n                case MARK_IMG_BALL:\n                case MARK_IMG_SBALL:\n                case MARK_IMG_MBALL:\n                case MARK_IMG_LBALL:\n                    if( $this->imgdata_balls == null ) {\n                        require_once 'imgdata_balls.inc.php';\n                        $this->imgdata_balls = new ImgData_Balls();\n                    }\n                    $this->markimg = $this->imgdata_balls->GetImg($this->type,$filename);\n                    list($anchor_x,$anchor_y) = $this->imgdata_balls->GetAnchor();\n                    break;\n            }\n\n            $w = $img->GetWidth($this->markimg);\n            $h = $img->GetHeight($this->markimg);\n             \n            $dw = round($imgscale * $w );\n            $dh = round($imgscale * $h );\n\n            // Do potential rotation\n            list($x,$y) = $img->Rotate($x,$y);\n\n            $dx = round($x-$dw*$anchor_x);\n            $dy = round($y-$dh*$anchor_y);\n             \n            $this->width = max($dx,$dy);\n             \n            $img->Copy($this->markimg,$dx,$dy,0,0,$dw,$dh,$w,$h);\n            if( !empty($this->csimtarget) ) {\n                $this->csimareas = \"<area shape=\\\"rect\\\" coords=\\\"\".\n                $dx.','.$dy.','.round($dx+$dw).','.round($dy+$dh).'\" '.\n      \"href=\\\"\".htmlentities($this->csimtarget).\"\\\"\";\n\n                if( !empty($this->csimwintarget) ) {\n                    $this->csimareas .= \" target=\\\"\".$this->csimwintarget.\"\\\" \";\n                }\n\n                if( !empty($this->csimalt) ) {\n                    $tmp=sprintf($this->csimalt,$this->yvalue,$this->xvalue);\n                    $this->csimareas .= \" title=\\\"$tmp\\\" alt=\\\"$tmp\\\" \";\n                }\n                $this->csimareas .= \" />\\n\";\n            }\n             \n            // Stroke title\n            $this->title->Align(\"center\",\"top\");\n            $this->title->Stroke($img,$x,$y+round($dh/2));\n            return;\n        }\n\n        $weight = $this->weight;\n        $dx=round((float)$width/2,0); //MiToTeam: explicit type casting\n        $dy=round((float)$width/2,0); //MiToTeam: explicit type casting\n        $pts=0;\n\n        switch( $this->type ) {\n            case MARK_SQUARE:\n                $c[]=$x-$dx;$c[]=$y-$dy;\n                $c[]=$x+$dx;$c[]=$y-$dy;\n                $c[]=$x+$dx;$c[]=$y+$dy;\n                $c[]=$x-$dx;$c[]=$y+$dy;\n                $c[]=$x-$dx;$c[]=$y-$dy;\n                $pts=5;\n                break;\n            case MARK_UTRIANGLE:\n                ++$dx;++$dy;\n                $c[]=$x-$dx;$c[]=$y+0.87*$dy; // tan(60)/2*$dx\n                $c[]=$x;$c[]=$y-0.87*$dy;\n                $c[]=$x+$dx;$c[]=$y+0.87*$dy;\n                $c[]=$x-$dx;$c[]=$y+0.87*$dy; // tan(60)/2*$dx\n                $pts=4;\n                break;\n            case MARK_DTRIANGLE:\n                ++$dx;++$dy;\n                $c[]=$x;$c[]=$y+0.87*$dy; // tan(60)/2*$dx\n                $c[]=$x-$dx;$c[]=$y-0.87*$dy;\n                $c[]=$x+$dx;$c[]=$y-0.87*$dy;\n                $c[]=$x;$c[]=$y+0.87*$dy; // tan(60)/2*$dx\n                $pts=4;\n                break;\n            case MARK_DIAMOND:\n                $c[]=$x;$c[]=$y+$dy;\n                $c[]=$x-$dx;$c[]=$y;\n                $c[]=$x;$c[]=$y-$dy;\n                $c[]=$x+$dx;$c[]=$y;\n                $c[]=$x;$c[]=$y+$dy;\n                $pts=5;\n                break;\n            case MARK_LEFTTRIANGLE:\n                $c[]=$x;$c[]=$y;\n                $c[]=$x;$c[]=$y+2*$dy;\n                $c[]=$x+$dx*2;$c[]=$y;\n                $c[]=$x;$c[]=$y;\n                $pts=4;\n                break;\n            case MARK_RIGHTTRIANGLE:\n                $c[]=$x-$dx*2;$c[]=$y;\n                $c[]=$x;$c[]=$y+2*$dy;\n                $c[]=$x;$c[]=$y;\n                $c[]=$x-$dx*2;$c[]=$y;\n                $pts=4;\n                break;\n            case MARK_FLASH:\n                $dy *= 2;\n                $c[]=$x+$dx/2; $c[]=$y-$dy;\n                $c[]=$x-$dx+$dx/2; $c[]=$y+$dy*0.7-$dy;\n                $c[]=$x+$dx/2; $c[]=$y+$dy*1.3-$dy;\n                $c[]=$x-$dx+$dx/2; $c[]=$y+2*$dy-$dy;\n                $img->SetLineWeight($weight);\n                $img->SetColor($color);\n                $img->Polygon($c);\n                $img->SetLineWeight(1);\n                $this->AddCSIMPoly($c);\n                break;\n        }\n\n        if( $pts>0 ) {\n            $this->AddCSIMPoly($c);\n            $img->SetLineWeight($weight);\n            $img->SetColor($fcolor);\n            $img->FilledPolygon($c);\n            $img->SetColor($color);\n            $img->Polygon($c);\n            $img->SetLineWeight(1);\n        }\n        elseif( $this->type==MARK_CIRCLE ) {\n            $img->SetColor($color);\n            $img->Circle($x,$y,$width);\n            $this->AddCSIMCircle($x,$y,$width);\n        }\n        elseif( $this->type==MARK_FILLEDCIRCLE ) {\n            $img->SetColor($fcolor);\n            $img->FilledCircle($x,$y,$width);\n            $img->SetColor($color);\n            $img->Circle($x,$y,$width);\n            $this->AddCSIMCircle($x,$y,$width);\n        }\n        elseif( $this->type==MARK_CROSS ) {\n            // Oversize by a pixel to match the X\n            $img->SetColor($color);\n            $img->SetLineWeight($weight);\n            $img->Line($x,$y+$dy+1,$x,$y-$dy-1);\n            $img->Line($x-$dx-1,$y,$x+$dx+1,$y);\n            $this->AddCSIMCircle($x,$y,$dx);\n        }\n        elseif( $this->type==MARK_X ) {\n            $img->SetColor($color);\n            $img->SetLineWeight($weight);\n            $img->Line($x+$dx,$y+$dy,$x-$dx,$y-$dy);\n            $img->Line($x-$dx,$y+$dy,$x+$dx,$y-$dy);\n            $this->AddCSIMCircle($x,$y,$dx+$dy);\n        }\n        elseif( $this->type==MARK_STAR ) {\n            $img->SetColor($color);\n            $img->SetLineWeight($weight);\n            $img->Line($x+$dx,$y+$dy,$x-$dx,$y-$dy);\n            $img->Line($x-$dx,$y+$dy,$x+$dx,$y-$dy);\n            // Oversize by a pixel to match the X\n            $img->Line($x,$y+$dy+1,$x,$y-$dy-1);\n            $img->Line($x-$dx-1,$y,$x+$dx+1,$y);\n            $this->AddCSIMCircle($x,$y,$dx+$dy);\n        }\n\n        // Stroke title\n        $this->title->Align(\"center\",\"center\");\n        $this->title->Stroke($img,$x,$y);\n    }\n} // Class\n\n\n\n//========================================================================\n// CLASS ImgData\n// Description: Base class for all image data classes that contains the\n// real image data.\n//========================================================================\nclass ImgData {\n    protected $name = '';  // Each subclass gives a name\n    protected $an = array();  // Data array names\n    protected $colors = array(); // Available colors\n    protected $index  = array(); // Index for colors\n    protected $maxidx = 0 ;  // Max color index\n    protected $anchor_x=0.5, $anchor_y=0.5 ;    // Where is the center of the image\n    \n    function __construct() {\n        // Empty\n    }\n    \n    // Create a GD image from the data and return a GD handle\n    function GetImg($aMark,$aIdx) {\n        $n = $this->an[$aMark];\n        if( is_string($aIdx) ) {\n            if( !in_array($aIdx,$this->colors) ) {\n                JpGraphError::RaiseL(23001,$this->name,$aIdx);//('This marker \"'.($this->name).'\" does not exist in color: '.$aIdx);\n            }\n            $idx = $this->index[$aIdx];\n        }\n        elseif( !is_integer($aIdx) ||\n        (is_integer($aIdx) && $aIdx > $this->maxidx ) ) {\n            JpGraphError::RaiseL(23002,$this->name);//('Mark color index too large for marker \"'.($this->name).'\"');\n        }\n        else\n        $idx = $aIdx ;\n        return Image::CreateFromString(base64_decode($this->{$n}[$idx][1]));\n    }\n    \n    function GetAnchor() {\n        return array($this->anchor_x,$this->anchor_y);\n    }\n}\n\n\n// Keep a global flag cache to reduce memory usage\n$_gFlagCache=array(\n1 => null,\n2 => null,\n3 => null,\n4 => null,\n);\n// Only supposed to b called as statics\nclass FlagCache {\n    \n    static function GetFlagImgByName($aSize,$aName) {\n        global $_gFlagCache;\n        require_once('jpgraph_flags.php');\n        if( $_gFlagCache[$aSize] === null ) {\n            $_gFlagCache[$aSize] = new FlagImages($aSize);\n        }\n        $f = $_gFlagCache[$aSize];\n        $idx = $f->GetIdxByName($aName,$aFullName);\n        return $f->GetImgByIdx($idx);\n    }\n}\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_polar.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_POLAR.PHP\n // Description: Polar plot extension for JpGraph\n // Created:     2003-02-02\n // Ver:         $Id: jpgraph_polar.php 1796 2009-09-07 09:37:19Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\nrequire_once ('jpgraph_plotmark.inc.php');\nrequire_once \"jpgraph_log.php\";\n\n\ndefine('POLAR_360',1);\ndefine('POLAR_180',2);\n\n//\n// Note. Don't attempt to make sense of this code.\n// In order not to have to be able to inherit the scaling code\n// from the main graph package we have had to make some \"tricks\" since\n// the original scaling and axis was not designed to do what is\n// required here.\n// There were two option. 1: Re-implement everything and get a clean design\n// and 2: do some \"small\" trickery and be able to inherit most of\n// the functionlity from the main graph package.\n// We choose 2: here in order to save some time.\n//\n\n//--------------------------------------------------------------------------\n// class PolarPlot\n//--------------------------------------------------------------------------\nclass PolarPlot {\n    public $line_style='solid',$mark;\n    public $legendcsimtarget='';\n    public $legendcsimalt='';\n    public $legend=\"\";\n    public $csimtargets=array(); // Array of targets for CSIM\n    public $csimareas=\"\";   // Resultant CSIM area tags\n    public $csimalts=null;   // ALT:s for corresponding target\n    public $scale=null;\n    private $numpoints=0;\n    private $iColor='navy',$iFillColor='';\n    private $iLineWeight=1;\n    private $coord=null;\n\n    function __construct($aData) {\n        $n = count($aData);\n        if( $n & 1 ) {\n            JpGraphError::RaiseL(17001);\n            //('Polar plots must have an even number of data point. Each data point is a tuple (angle,radius).');\n        }\n        $this->numpoints = $n/2;\n        $this->coord = $aData;\n        $this->mark = new PlotMark();\n    }\n\n    function SetWeight($aWeight) {\n        $this->iLineWeight = $aWeight;\n    }\n\n    function SetColor($aColor){\n        $this->iColor = $aColor;\n    }\n\n    function SetFillColor($aColor){\n        $this->iFillColor = $aColor;\n    }\n\n    function Max() {\n        $m = $this->coord[1];\n        $i=1;\n        while( $i < $this->numpoints ) {\n            $m = max($m,$this->coord[2*$i+1]);\n            ++$i;\n        }\n        return $m;\n    }\n    // Set href targets for CSIM\n    function SetCSIMTargets($aTargets,$aAlts=null) {\n        $this->csimtargets=$aTargets;\n        $this->csimalts=$aAlts;\n    }\n\n    // Get all created areas\n    function GetCSIMareas() {\n        return $this->csimareas;\n    }\n\n    function SetLegend($aLegend,$aCSIM=\"\",$aCSIMAlt=\"\") {\n        $this->legend = $aLegend;\n        $this->legendcsimtarget = $aCSIM;\n        $this->legendcsimalt = $aCSIMAlt;\n    }\n\n    // Private methods\n\n    function Legend($aGraph) {\n        $color = $this->iColor ;\n        if( $this->legend != \"\" ) {\n            if( $this->iFillColor!='' ) {\n                $color = $this->iFillColor;\n                $aGraph->legend->Add($this->legend,$color,$this->mark,0,\n                $this->legendcsimtarget,$this->legendcsimalt);\n            }\n            else {\n                $aGraph->legend->Add($this->legend,$color,$this->mark,$this->line_style,\n                $this->legendcsimtarget,$this->legendcsimalt);\n            }\n        }\n    }\n\n    function Stroke($img,$scale) {\n\n        $i=0;\n        $p=array();\n        $this->csimareas='';\n        while($i < $this->numpoints) {\n            list($x1,$y1) = $scale->PTranslate($this->coord[2*$i],$this->coord[2*$i+1]);\n            $p[2*$i] = $x1;\n            $p[2*$i+1] = $y1;\n\n            if( isset($this->csimtargets[$i]) ) {\n                $this->mark->SetCSIMTarget($this->csimtargets[$i]);\n                $this->mark->SetCSIMAlt($this->csimalts[$i]);\n                $this->mark->SetCSIMAltVal($this->coord[2*$i], $this->coord[2*$i+1]);\n                $this->mark->Stroke($img,$x1,$y1);\n                $this->csimareas .= $this->mark->GetCSIMAreas();\n            }\n            else {\n            \t$this->mark->Stroke($img,$x1,$y1);\n            }\n\n            ++$i;\n        }\n\n        if( $this->iFillColor != '' ) {\n            $img->SetColor($this->iFillColor);\n            $img->FilledPolygon($p);\n        }\n        $img->SetLineWeight($this->iLineWeight);\n        $img->SetColor($this->iColor);\n        $img->Polygon($p,$this->iFillColor!='');\n    }\n}\n\n//--------------------------------------------------------------------------\n// class PolarAxis\n//--------------------------------------------------------------------------\nclass PolarAxis extends Axis {\n    private $angle_step=15,$angle_color='lightgray',$angle_label_color='black';\n    private $angle_fontfam=FF_FONT1,$angle_fontstyle=FS_NORMAL,$angle_fontsize=10;\n    private $angle_fontcolor = 'navy';\n    private $gridminor_color='lightgray',$gridmajor_color='lightgray';\n    private $show_minor_grid = false, $show_major_grid = true ;\n    private $show_angle_mark=true, $show_angle_grid=true, $show_angle_label=true;\n    private $angle_tick_len=3, $angle_tick_len2=3, $angle_tick_color='black';\n    private $show_angle_tick=true;\n    private $radius_tick_color='black';\n\n    function __construct($img,$aScale) {\n        parent::__construct($img,$aScale);\n    }\n\n    function ShowAngleDegreeMark($aFlg=true) {\n        $this->show_angle_mark = $aFlg;\n    }\n\n    function SetAngleStep($aStep) {\n        $this->angle_step=$aStep;\n    }\n\n    function HideTicks($aFlg=true,$aAngleFlg=true) {\n        parent::HideTicks($aFlg,$aFlg);\n        $this->show_angle_tick = !$aAngleFlg;\n    }\n\n    function ShowAngleLabel($aFlg=true) {\n        $this->show_angle_label = $aFlg;\n    }\n\n    function ShowGrid($aMajor=true,$aMinor=false,$aAngle=true) {\n        $this->show_minor_grid = $aMinor;\n        $this->show_major_grid = $aMajor;\n        $this->show_angle_grid = $aAngle ;\n    }\n\n    function SetAngleFont($aFontFam,$aFontStyle=FS_NORMAL,$aFontSize=10) {\n        $this->angle_fontfam = $aFontFam;\n        $this->angle_fontstyle = $aFontStyle;\n        $this->angle_fontsize = $aFontSize;\n    }\n\n    function SetColor($aColor,$aRadColor='',$aAngleColor='') {\n        if( $aAngleColor == '' )\n        $aAngleColor=$aColor;\n        parent::SetColor($aColor,$aRadColor);\n        $this->angle_fontcolor = $aAngleColor;\n    }\n\n    function SetGridColor($aMajorColor,$aMinorColor='',$aAngleColor='') {\n        if( $aMinorColor == '' )\n        $aMinorColor = $aMajorColor;\n        if( $aAngleColor == '' )\n        $aAngleColor = $aMajorColor;\n\n        $this->gridminor_color = $aMinorColor;\n        $this->gridmajor_color = $aMajorColor;\n        $this->angle_color = $aAngleColor;\n    }\n\n    function SetTickColors($aRadColor,$aAngleColor='') {\n        $this->radius_tick_color = $aRadColor;\n        $this->angle_tick_color = $aAngleColor;\n    }\n\n    // Private methods\n    function StrokeGrid($pos) {\n        $x = round($this->img->left_margin + $this->img->plotwidth/2);\n        $this->scale->ticks->Stroke($this->img,$this->scale,$pos);\n\n        // Stroke the minor arcs\n        $pmin = array();\n        $p = $this->scale->ticks->ticks_pos;\n        $n = count($p);\n        $i = 0;\n        $this->img->SetColor($this->gridminor_color);\n        while( $i < $n ) {\n            $r = $p[$i]-$x+1;\n            $pmin[]=$r;\n            if( $this->show_minor_grid ) {\n                $this->img->Circle($x,$pos,$r);\n            }\n            $i++;\n        }\n\n        $limit = max($this->img->plotwidth,$this->img->plotheight)*1.4 ;\n        while( $r < $limit ) {\n            $off = $r;\n            $i=1;\n            $r = $off + round($p[$i]-$x+1);\n            while( $r < $limit && $i < $n ) {\n                $r = $off+$p[$i]-$x;\n                $pmin[]=$r;\n                if( $this->show_minor_grid ) {\n                    $this->img->Circle($x,$pos,$r);\n                }\n                $i++;\n            }\n        }\n\n        // Stroke the major arcs\n        if( $this->show_major_grid ) {\n            // First determine how many minor step on\n            // every major step. We have recorded the minor radius\n            // in pmin and use these values. This is done in order\n            // to avoid rounding errors if we were to recalculate the\n            // different major radius.\n            $pmaj = $this->scale->ticks->maj_ticks_pos;\n            $p = $this->scale->ticks->ticks_pos;\n            if( $this->scale->name == 'lin' ) {\n                $step=round(($pmaj[1] - $pmaj[0])/($p[1] - $p[0]));\n            }\n            else {\n                $step=9;\n            }\n            $n = round(count($pmin)/$step);\n            $i = 0;\n            $this->img->SetColor($this->gridmajor_color);\n            $limit = max($this->img->plotwidth,$this->img->plotheight)*1.4 ;\n            $off = $r;\n            $i=0;\n            $r = $pmin[$i*$step];\n            while( $r < $limit && $i < $n ) {\n                $r = $pmin[$i*$step];\n                $this->img->Circle($x,$pos,$r);\n                $i++;\n            }\n        }\n\n        // Draw angles\n        if( $this->show_angle_grid ) {\n            $this->img->SetColor($this->angle_color);\n            $d = max($this->img->plotheight,$this->img->plotwidth)*1.4 ;\n            $a = 0;\n            $p = $this->scale->ticks->ticks_pos;\n            $start_radius = $p[1]-$x;\n            while( $a < 360 ) {\n                if( $a == 90 || $a == 270 ) {\n                    // Make sure there are no rounding problem with\n                    // exactly vertical lines\n                    $this->img->Line($x+$start_radius*cos($a/180*M_PI)+1,\n                                     $pos-$start_radius*sin($a/180*M_PI),\n                                     $x+$start_radius*cos($a/180*M_PI)+1,\n                                     $pos-$d*sin($a/180*M_PI));\n\n                }\n                else {\n                    $this->img->Line($x+$start_radius*cos($a/180*M_PI)+1,\n                                     $pos-$start_radius*sin($a/180*M_PI),\n                                     $x+$d*cos($a/180*M_PI),\n                                     $pos-$d*sin($a/180*M_PI));\n                }\n                $a += $this->angle_step;\n            }\n        }\n    }\n\n    function StrokeAngleLabels($pos,$type) {\n\n        if( !$this->show_angle_label )\n            return;\n\n        $x0 = round($this->img->left_margin+$this->img->plotwidth/2)+1;\n\n        $d = max($this->img->plotwidth,$this->img->plotheight)*1.42;\n        $a = $this->angle_step;\n        $t = new Text();\n        $t->SetColor($this->angle_fontcolor);\n        $t->SetFont($this->angle_fontfam,$this->angle_fontstyle,$this->angle_fontsize);\n        $xright = $this->img->width - $this->img->right_margin;\n        $ytop = $this->img->top_margin;\n        $xleft = $this->img->left_margin;\n        $ybottom = $this->img->height - $this->img->bottom_margin;\n        $ha = 'left';\n        $va = 'center';\n        $w = $this->img->plotwidth/2;\n        $h = $this->img->plotheight/2;\n        $xt = $x0; $yt = $pos;\n        $margin=5;\n\n        $tl  = $this->angle_tick_len ; // Outer len\n        $tl2 = $this->angle_tick_len2 ; // Interior len\n\n        $this->img->SetColor($this->angle_tick_color);\n        $rot90 = $this->img->a == 90 ;\n\n        if( $type == POLAR_360 ) {\n\n            // Corner angles of the four corners\n            $ca1 = atan($h/$w)/M_PI*180;\n            $ca2 = 180-$ca1;\n            $ca3 = $ca1+180;\n            $ca4 = 360-$ca1;\n            $end = 360;\n\n            while( $a < $end ) {\n                $ca = cos($a/180*M_PI);\n                $sa = sin($a/180*M_PI);\n                $x = $d*$ca;\n                $y = $d*$sa;\n                $xt=1000;$yt=1000;\n                if( $a <= $ca1 || $a >= $ca4 ) {\n                    $yt = $pos - $w * $y/$x;\n                    $xt = $xright + $margin;\n                    if( $rot90 ) {\n                        $ha = 'center';\n                        $va = 'top';\n                    }\n                    else {\n                        $ha = 'left';\n                        $va = 'center';\n                    }\n                    $x1=$xright-$tl2; $x2=$xright+$tl;\n                    $y1=$y2=$yt;\n                }\n                elseif( $a > $ca1 && $a < $ca2 ) {\n                    $xt = $x0 + $h * $x/$y;\n                    $yt = $ytop - $margin;\n                    if( $rot90 ) {\n                        $ha = 'left';\n                        $va = 'center';\n                    }\n                    else {\n                        $ha = 'center';\n                        $va = 'bottom';\n                    }\n                    $y1=$ytop+$tl2;$y2=$ytop-$tl;\n                    $x1=$x2=$xt;\n                }\n                elseif( $a >= $ca2 && $a <= $ca3 ) {\n                    $yt = $pos + $w * $y/$x;\n                    $xt = $xleft - $margin;\n                    if( $rot90 ) {\n                        $ha = 'center';\n                        $va = 'bottom';\n                    }\n                    else {\n                        $ha = 'right';\n                        $va = 'center';\n                    }\n                    $x1=$xleft+$tl2;$x2=$xleft-$tl;\n                    $y1=$y2=$yt;\n                }\n                else {\n                    $xt = $x0 - $h * $x/$y;\n                    $yt = $ybottom + $margin;\n                    if( $rot90 ) {\n                        $ha = 'right';\n                        $va = 'center';\n                    }\n                    else {\n                        $ha = 'center';\n                        $va = 'top';\n                    }\n                    $y1=$ybottom-$tl2;$y2=$ybottom+$tl;\n                    $x1=$x2=$xt;\n                }\n                if( $a != 0 && $a != 180 ) {\n                    $t->Align($ha,$va);\n                    if( $this->scale->clockwise ) {\n                        $t->Set(360-$a);\n                    }\n                    else {\n                        $t->Set($a);\n                    }\n                    if( $this->show_angle_mark && $t->font_family > 4 ) {\n                        $a .= SymChar::Get('degree');\n                    }\n                    $t->Stroke($this->img,$xt,$yt);\n                    if( $this->show_angle_tick ) {\n                        $this->img->Line($x1,$y1,$x2,$y2);\n                    }\n                }\n                $a = (int) $a;\n                $a += $this->angle_step;\n            }\n        }\n        else {\n            // POLAR_HALF\n            $ca1 = atan($h/$w*2)/M_PI*180;\n            $ca2 = 180-$ca1;\n            $end = 180;\n            while( $a < $end ) {\n                $ca = cos($a/180*M_PI);\n                $sa = sin($a/180*M_PI);\n                $x = $d*$ca;\n                $y = $d*$sa;\n                if( $a <= $ca1 ) {\n                    $yt = $pos - $w * $y/$x;\n                    $xt = $xright + $margin;\n                    if( $rot90 ) {\n                        $ha = 'center';\n                        $va = 'top';\n                    }\n                    else {\n                        $ha = 'left';\n                        $va = 'center';\n                    }\n                    $x1=$xright-$tl2; $x2=$xright+$tl;\n                    $y1=$y2=$yt;\n                }\n                elseif( $a > $ca1 && $a < $ca2 ) {\n                    $xt = $x0 + 2*$h * $x/$y;\n                    $yt = $ytop - $margin;\n                    if( $rot90 ) {\n                        $ha = 'left';\n                        $va = 'center';\n                    }\n                    else {\n                        $ha = 'center';\n                        $va = 'bottom';\n                    }\n                    $y1=$ytop+$tl2;$y2=$ytop-$tl;\n                    $x1=$x2=$xt;\n                }\n                elseif( $a >= $ca2 ) {\n                    $yt = $pos + $w * $y/$x;\n                    $xt = $xleft - $margin;\n                    if( $rot90 ) {\n                        $ha = 'center';\n                        $va = 'bottom';\n                    }\n                    else {\n                        $ha = 'right';\n                        $va = 'center';\n                    }\n                    $x1=$xleft+$tl2;$x2=$xleft-$tl;\n                    $y1=$y2=$yt;\n                }\n                $t->Align($ha,$va);\n                if( $this->show_angle_mark && $t->font_family > 4 ) {\n                \t$a .= SymChar::Get('degree');\n                }\n                $t->Set($a);\n                $t->Stroke($this->img,$xt,$yt);\n                if( $this->show_angle_tick ) {\n                    $this->img->Line($x1,$y1,$x2,$y2);\n                }\n                $a = (int) $a;\n                $a += $this->angle_step;\n            }\n        }\n    }\n\n    function Stroke($pos,$dummy=true) {\n\n        $this->img->SetLineWeight($this->weight);\n        $this->img->SetColor($this->color);\n        $this->img->SetFont($this->font_family,$this->font_style,$this->font_size);\n        if( !$this->hide_line ) {\n            $this->img->FilledRectangle($this->img->left_margin,$pos,\n                                        $this->img->width-$this->img->right_margin,\n                                        $pos+$this->weight-1);\n        }\n        $y=$pos+$this->img->GetFontHeight()+$this->title_margin+$this->title->margin;\n        if( $this->title_adjust==\"high\" ) {\n            $this->title->SetPos($this->img->width-$this->img->right_margin,$y,\"right\",\"top\");\n        }\n        elseif( $this->title_adjust==\"middle\" || $this->title_adjust==\"center\" ) {\n            $this->title->SetPos(($this->img->width-$this->img->left_margin-$this->img->right_margin)/2+$this->img->left_margin,\n                                $y,\"center\",\"top\");\n        }\n        elseif($this->title_adjust==\"low\") {\n            $this->title->SetPos($this->img->left_margin,$y,\"left\",\"top\");\n        }\n        else {\n            JpGraphError::RaiseL(17002,$this->title_adjust);\n            //('Unknown alignment specified for X-axis title. ('.$this->title_adjust.')');\n        }\n\n\n        if (!$this->hide_labels) {\n            $this->StrokeLabels($pos,false);\n        }\n        $this->img->SetColor($this->radius_tick_color);\n        $this->scale->ticks->Stroke($this->img,$this->scale,$pos);\n\n        //\n        // Mirror the positions for the left side of the scale\n        //\n        $mid = 2*($this->img->left_margin+$this->img->plotwidth/2);\n        $n = count($this->scale->ticks->ticks_pos);\n        $i=0;\n        while( $i < $n ) {\n            $this->scale->ticks->ticks_pos[$i] =\n            $mid-$this->scale->ticks->ticks_pos[$i] ;\n            ++$i;\n        }\n\n        $n = count($this->scale->ticks->maj_ticks_pos);\n        $i=0;\n        while( $i < $n ) {\n            $this->scale->ticks->maj_ticks_pos[$i] =\n            $mid-$this->scale->ticks->maj_ticks_pos[$i] ;\n            ++$i;\n        }\n\n        $n = count($this->scale->ticks->maj_ticklabels_pos);\n        $i=1;\n        while( $i < $n ) {\n            $this->scale->ticks->maj_ticklabels_pos[$i] =\n            $mid-$this->scale->ticks->maj_ticklabels_pos[$i] ;\n            ++$i;\n        }\n\n        // Draw the left side of the scale\n        $n = count($this->scale->ticks->ticks_pos);\n        $yu = $pos - $this->scale->ticks->direction*$this->scale->ticks->GetMinTickAbsSize();\n\n\n        // Minor ticks\n        if( ! $this->scale->ticks->supress_minor_tickmarks ) {\n            $i=1;\n            while( $i < $n/2 ) {\n                $x = round($this->scale->ticks->ticks_pos[$i]) ;\n                $this->img->Line($x,$pos,$x,$yu);\n                ++$i;\n            }\n        }\n\n        $n = count($this->scale->ticks->maj_ticks_pos);\n        $yu = $pos - $this->scale->ticks->direction*$this->scale->ticks->GetMajTickAbsSize();\n\n\n        // Major ticks\n        if( ! $this->scale->ticks->supress_tickmarks ) {\n            $i=1;\n            while( $i < $n/2 ) {\n                $x = round($this->scale->ticks->maj_ticks_pos[$i]) ;\n                $this->img->Line($x,$pos,$x,$yu);\n                ++$i;\n            }\n        }\n        if (!$this->hide_labels) {\n            $this->StrokeLabels($pos,false);\n        }\n        $this->title->Stroke($this->img);\n    }\n}\n\nclass PolarScale extends LinearScale {\n    private $graph;\n    public $clockwise=false;\n\n    function __construct($aMax,$graph,$aClockwise) {\n        parent::__construct(0,$aMax,'x');\n        $this->graph = $graph;\n        $this->clockwise = $aClockwise;\n    }\n\n    function SetClockwise($aFlg) {\n        $this->clockwise = $aFlg;\n    }\n\n    function _Translate($v) {\n        return parent::Translate($v);\n    }\n\n    function PTranslate($aAngle,$aRad) {\n\n        $m = $this->scale[1];\n        $w = $this->graph->img->plotwidth/2;\n        $aRad = $aRad/$m*$w;\n\n        $a = $aAngle/180 * M_PI;\n        if( $this->clockwise ) { \n            $a = 2*M_PI-$a;\n        }\n\n        $x = cos($a) * $aRad;\n        $y = sin($a) * $aRad;\n\n        $x += $this->_Translate(0);\n\n        if( $this->graph->iType == POLAR_360 ) {\n            $y = ($this->graph->img->top_margin + $this->graph->img->plotheight/2) - $y;\n        }\n        else {\n            $y = ($this->graph->img->top_margin + $this->graph->img->plotheight) - $y;\n        }\n        return array($x,$y);\n    }\n}\n\nclass PolarLogScale extends LogScale {\n    private $graph;\n    public $clockwise=false;\n\n    function __construct($aMax,$graph,$aClockwise=false) {\n        parent::__construct(0,$aMax,'x');\n        $this->graph = $graph;\n        $this->ticks->SetLabelLogType(LOGLABELS_MAGNITUDE);\n        $this->clockwise = $aClockwise;\n\n    }\n\n    function SetClockwise($aFlg) {\n        $this->clockwise = $aFlg;\n    }\n\n    function PTranslate($aAngle,$aRad) {\n\n        if( $aRad == 0 )\n        $aRad = 1;\n        $aRad = log10($aRad);\n        $m = $this->scale[1];\n        $w = $this->graph->img->plotwidth/2;\n        $aRad = $aRad/$m*$w;\n\n        $a = $aAngle/180 * M_PI;\n        if( $this->clockwise ) {\n            $a = 2*M_PI-$a;\n        }\n\n        $x = cos( $a ) * $aRad;\n        $y = sin( $a ) * $aRad;\n\n        $x += $w+$this->graph->img->left_margin;//$this->_Translate(0);\n        if( $this->graph->iType == POLAR_360 ) {\n            $y = ($this->graph->img->top_margin + $this->graph->img->plotheight/2) - $y;\n        }\n        else {\n            $y = ($this->graph->img->top_margin + $this->graph->img->plotheight) - $y;\n        }\n        return array($x,$y);\n    }\n}\n\nclass PolarGraph extends Graph {\n    public $scale;\n    public $axis;\n    public $iType=POLAR_360;\n    private $iClockwise=false;\n\n    function __construct($aWidth=300,$aHeight=200,$aCachedName=\"\",$aTimeOut=0,$aInline=true) {\n        parent::__construct($aWidth,$aHeight,$aCachedName,$aTimeOut,$aInline) ;\n        $this->SetDensity(TICKD_DENSE);\n        $this->SetBox();\n        $this->SetMarginColor('white');\n    }\n\n    function SetDensity($aDense) {\n        $this->SetTickDensity(TICKD_NORMAL,$aDense);\n    }\n\n    function SetClockwise($aFlg) {\n        $this->scale->SetClockwise($aFlg);\n    }\n\n    function Set90AndMargin($lm=0,$rm=0,$tm=0,$bm=0) {\n        $adj = ($this->img->height - $this->img->width)/2;\n        $this->SetAngle(90);\n        $lm2 = -$adj + ($lm-$rm+$tm+$bm)/2;\n        $rm2 = -$adj + (-$lm+$rm+$tm+$bm)/2;\n        $tm2 = $adj + ($tm-$bm+$lm+$rm)/2;\n        $bm2 = $adj + (-$tm+$bm+$lm+$rm)/2;\n        $this->SetMargin($lm2, $rm2, $tm2, $bm2);\n        $this->axis->SetLabelAlign('right','center');\n    }\n\n    function SetScale($aScale,$rmax=0,$dummy1=1,$dummy2=1,$dummy3=1) {\n        if( $aScale == 'lin' ) {\n            $this->scale = new PolarScale($rmax,$this,$this->iClockwise);\n        }\n        elseif( $aScale == 'log' ) {\n            $this->scale = new PolarLogScale($rmax,$this,$this->iClockwise);\n        }\n        else {\n            JpGraphError::RaiseL(17004);//('Unknown scale type for polar graph. Must be \"lin\" or \"log\"');\n        }\n\n        $this->axis = new PolarAxis($this->img,$this->scale);\n        $this->SetMargin(40,40,50,40);\n    }\n\n    function SetType($aType) {\n        $this->iType = $aType;\n    }\n\n    function SetPlotSize($w,$h) {\n        $this->SetMargin(($this->img->width-$w)/2,($this->img->width-$w)/2,\n                         ($this->img->height-$h)/2,($this->img->height-$h)/2);\n    }\n\n    // Private methods\n    function GetPlotsMax() {\n        $n = count($this->plots);\n        $m = $this->plots[0]->Max();\n        $i=1;\n        while($i < $n) {\n            $m = max($this->plots[$i]->Max(),$m);\n            ++$i;\n        }\n        return $m;\n    }\n\n    function Stroke($aStrokeFileName=\"\") {\n\n        // Start by adjusting the margin so that potential titles will fit.\n        $this->AdjustMarginsForTitles();\n\n        // If the filename is the predefined value = '_csim_special_'\n        // we assume that the call to stroke only needs to do enough\n        // to correctly generate the CSIM maps.\n        // We use this variable to skip things we don't strictly need\n        // to do to generate the image map to improve performance\n        // a best we can. Therefor you will see a lot of tests !$_csim in the\n        // code below.\n        $_csim = ($aStrokeFileName===_CSIM_SPECIALFILE);\n\n        // We need to know if we have stroked the plot in the\n        // GetCSIMareas. Otherwise the CSIM hasn't been generated\n        // and in the case of GetCSIM called before stroke to generate\n        // CSIM without storing an image to disk GetCSIM must call Stroke.\n        $this->iHasStroked = true;\n\n        //Check if we should autoscale axis\n        if( !$this->scale->IsSpecified() && count($this->plots)>0 ) {\n            $max = $this->GetPlotsMax();\n            $t1 = $this->img->plotwidth;\n            $this->img->plotwidth /= 2;\n            $t2 = $this->img->left_margin;\n            $this->img->left_margin += $this->img->plotwidth+1;\n            $this->scale->AutoScale($this->img,0,$max,\n            $this->img->plotwidth/$this->xtick_factor/2);\n            $this->img->plotwidth = $t1;\n            $this->img->left_margin = $t2;\n        }\n        else {\n            // The tick calculation will use the user suplied min/max values to determine\n            // the ticks. If auto_ticks is false the exact user specifed min and max\n            // values will be used for the scale.\n            // If auto_ticks is true then the scale might be slightly adjusted\n            // so that the min and max values falls on an even major step.\n            //$min = 0;\n            $max = $this->scale->scale[1];\n            $t1 = $this->img->plotwidth;\n            $this->img->plotwidth /= 2;\n            $t2 = $this->img->left_margin;\n            $this->img->left_margin += $this->img->plotwidth+1;\n            $this->scale->AutoScale($this->img,0,$max,\n            $this->img->plotwidth/$this->xtick_factor/2);\n            $this->img->plotwidth = $t1;\n            $this->img->left_margin = $t2;\n        }\n\n        if( $this->iType ==  POLAR_180 ) {\n        \t$pos = $this->img->height - $this->img->bottom_margin;\n        }\n        else {\n        \t$pos = $this->img->plotheight/2 + $this->img->top_margin;\n        }\n\n        if( !$_csim ) {\n            $this->StrokePlotArea();\n        }\n\n        $this->iDoClipping = true;\n\n        if( $this->iDoClipping ) {\n            $oldimage = $this->img->CloneCanvasH();\n        }\n\n        if( !$_csim ) {\n            $this->axis->StrokeGrid($pos);\n        }\n\n        // Stroke all plots for Y1 axis\n        for($i=0; $i < count($this->plots); ++$i) {\n            $this->plots[$i]->Stroke($this->img,$this->scale);\n        }\n\n\n        if( $this->iDoClipping ) {\n            // Clipping only supports graphs at 0 and 90 degrees\n            if( $this->img->a == 0  ) {\n                $this->img->CopyCanvasH($oldimage,$this->img->img,\n                                        $this->img->left_margin,$this->img->top_margin,\n                                        $this->img->left_margin,$this->img->top_margin,\n                                        $this->img->plotwidth+1,$this->img->plotheight+1);\n            }\n            elseif( $this->img->a == 90 ) {\n                $adj1 = round(($this->img->height - $this->img->width)/2);\n                $adj2 = round(($this->img->width - $this->img->height)/2);\n                $lm = $this->img->left_margin;\n                $rm = $this->img->right_margin;\n                $tm = $this->img->top_margin;\n                $bm = $this->img->bottom_margin;\n                $this->img->CopyCanvasH($oldimage,$this->img->img,\n                                        $adj2 + round(($lm-$rm+$tm+$bm)/2),\n                                        $adj1 + round(($tm-$bm+$lm+$rm)/2),\n                                        $adj2 + round(($lm-$rm+$tm+$bm)/2),\n                                        $adj1 + round(($tm-$bm+$lm+$rm)/2),\n                                        $this->img->plotheight+1,\n                                        $this->img->plotwidth+1);\n            }\n            $this->img->Destroy();\n            $this->img->SetCanvasH($oldimage);\n        }\n\n        if( !$_csim ) {\n            $this->axis->Stroke($pos);\n            $this->axis->StrokeAngleLabels($pos,$this->iType);\n        }\n\n        if( !$_csim ) {\n            $this->StrokePlotBox();\n            $this->footer->Stroke($this->img);\n\n            // The titles and legends never gets rotated so make sure\n            // that the angle is 0 before stroking them\n            $aa = $this->img->SetAngle(0);\n            $this->StrokeTitles();\n        }\n\n        for($i=0; $i < count($this->plots) ; ++$i ) {\n            $this->plots[$i]->Legend($this);\n        }\n\n        $this->legend->Stroke($this->img);\n\n        if( !$_csim ) {\n\n            $this->StrokeTexts();\n            $this->img->SetAngle($aa);\n\n            // Draw an outline around the image map\n            if(_JPG_DEBUG)\n            \t$this->DisplayClientSideaImageMapAreas();\n\n            // If the filename is given as the special \"__handle\"\n            // then the image handler is returned and the image is NOT\n            // streamed back\n            if( $aStrokeFileName == _IMG_HANDLER ) {\n                return $this->img->img;\n            }\n            else {\n                // Finally stream the generated picture\n                $this->cache->PutAndStream($this->img,$this->cache_name,$this->inline,$aStrokeFileName);\n            }\n        }\n    }\n}\n\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_radar.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_RADAR.PHP\n // Description: Radar plot extension for JpGraph\n // Created:     2001-02-04\n // Ver:         $Id: jpgraph_radar.php 1783 2009-08-25 11:41:01Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\nrequire_once('jpgraph_plotmark.inc.php');\n\n//===================================================\n// CLASS RadarLogTicks\n// Description: Logarithmic ticks\n//===================================================\nclass RadarLogTicks extends Ticks {\n\n    function __construct() {\n            // Empty\n    }\n\n    function Stroke($aImg,&$grid,$aPos,$aAxisAngle,$aScale,&$aMajPos,&$aMajLabel) {\n        $start = $aScale->GetMinVal();\n        $limit = $aScale->GetMaxVal();\n        $nextMajor = 10*$start;\n        $step = $nextMajor / 10.0;\n        $count=1;\n\n        $ticklen_maj=5;\n        $dx_maj=round(sin($aAxisAngle)*$ticklen_maj);\n        $dy_maj=round(cos($aAxisAngle)*$ticklen_maj);\n        $ticklen_min=3;\n        $dx_min=round(sin($aAxisAngle)*$ticklen_min);\n        $dy_min=round(cos($aAxisAngle)*$ticklen_min);\n\n        $aMajPos=array();\n        $aMajLabel=array();\n\n        if( $this->supress_first ) {\n            $aMajLabel[] = '';\n        }\n        else {\n            $aMajLabel[]=$start;\n        }\n\n        $yr=$aScale->RelTranslate($start);\n        $xt=round($yr*cos($aAxisAngle))+$aScale->scale_abs[0];\n        $yt=$aPos-round($yr*sin($aAxisAngle));\n        $aMajPos[]=$xt+2*$dx_maj;\n        $aMajPos[]=$yt-$aImg->GetFontheight()/2;\n        $grid[]=$xt;\n        $grid[]=$yt;\n\n        $aImg->SetLineWeight($this->weight);\n\n        for($y=$start; $y<=$limit; $y+=$step,++$count  ) {\n            $yr=$aScale->RelTranslate($y);\n            $xt=round($yr*cos($aAxisAngle))+$aScale->scale_abs[0];\n            $yt=$aPos-round($yr*sin($aAxisAngle));\n            if( $count % 10 == 0 ) {\n                $grid[]=$xt;\n                $grid[]=$yt;\n                $aMajPos[]=$xt+2*$dx_maj;\n                $aMajPos[]=$yt-$aImg->GetFontheight()/2;\n                if( !$this->supress_tickmarks ) {\n                    if( $this->majcolor != '' ) {\n                        $aImg->PushColor($this->majcolor);\n                    }\n                    $aImg->Line($xt+$dx_maj,$yt+$dy_maj,$xt-$dx_maj,$yt-$dy_maj);\n                    if( $this->majcolor != '' ) {\n                        $aImg->PopColor();\n                    }\n                }\n                if( $this->label_formfunc != '' ) {\n                    $f=$this->label_formfunc;\n                    $l = call_user_func($f,$nextMajor);\n                }\n                else {\n                    $l = $nextMajor;\n                }\n\n                $aMajLabel[]=$l;\n                $nextMajor *= 10;\n                $step *= 10;\n                $count=1;\n            }\n            else {\n                if( !$this->supress_minor_tickmarks ) {\n                    if( $this->mincolor != '' ) {\n                        $aImg->PushColor($this->mincolor);\n                    }\n                    $aImg->Line($xt+$dx_min,$yt+$dy_min,$xt-$dx_min,$yt-$dy_min);\n                    if( $this->mincolor != '' ) {\n                        $aImg->PopColor();\n                    }\n                }\n            }\n        }\n    }\n}\n\n//===================================================\n// CLASS RadarLinear\n// Description: Linear ticks\n//===================================================\nclass RadarLinearTicks extends Ticks {\n\n    private $minor_step=1, $major_step=2;\n    private $xlabel_offset=0,$xtick_offset=0;\n\n    function __construct() {\n        // Empty\n    }\n\n    // Return major step size in world coordinates\n    function GetMajor() {\n        return $this->major_step;\n    }\n\n    // Return minor step size in world coordinates\n    function GetMinor() {\n        return $this->minor_step;\n    }\n\n    // Set Minor and Major ticks (in world coordinates)\n    function Set($aMajStep,$aMinStep=false) {\n        if( $aMinStep==false ) {\n            $aMinStep=$aMajStep;\n        }\n\n        if( $aMajStep <= 0 || $aMinStep <= 0 ) {\n            JpGraphError::RaiseL(25064);\n            //JpGraphError::Raise(\" Minor or major step size is 0. Check that you haven't got an accidental SetTextTicks(0) in your code. If this is not the case you might have stumbled upon a bug in JpGraph. Please report this and if possible include the data that caused the problem.\");\n        }\n\n        $this->major_step=$aMajStep;\n        $this->minor_step=$aMinStep;\n        $this->is_set = true;\n    }\n\n    function Stroke($aImg,&$grid,$aPos,$aAxisAngle,$aScale,&$aMajPos,&$aMajLabel) {\n        // Prepare to draw linear ticks\n        $maj_step_abs = abs($aScale->scale_factor*$this->major_step);\n        $min_step_abs = abs($aScale->scale_factor*$this->minor_step);\n        $nbrmaj = round($aScale->world_abs_size/$maj_step_abs);\n        $nbrmin = round($aScale->world_abs_size/$min_step_abs);\n        $skip = round($nbrmin/$nbrmaj); // Don't draw minor on top of major\n\n        // Draw major ticks\n        $ticklen2=$this->major_abs_size;\n        $dx=round(sin($aAxisAngle)*$ticklen2);\n        $dy=round(cos($aAxisAngle)*$ticklen2);\n        $label=$aScale->scale[0]+$this->major_step;\n\n        $aImg->SetLineWeight($this->weight);\n\n        $aMajPos = array();\n        $aMajLabel = array();\n\n        for($i=1; $i<=$nbrmaj; ++$i) {\n            $xt=round($i*$maj_step_abs*cos($aAxisAngle))+$aScale->scale_abs[0];\n            $yt=$aPos-round($i*$maj_step_abs*sin($aAxisAngle));\n\n            if( $this->label_formfunc != '' ) {\n                $f=$this->label_formfunc;\n                $l = call_user_func($f,$label);\n            }\n            else {\n                $l = $label;\n            }\n\n            $aMajLabel[]=$l;\n            $label += $this->major_step;\n            $grid[]=$xt;\n            $grid[]=$yt;\n            $aMajPos[($i-1)*2]=$xt+2*$dx;\n            $aMajPos[($i-1)*2+1]=$yt-$aImg->GetFontheight()/2;\n            if( !$this->supress_tickmarks ) {\n                if( $this->majcolor != '' ) {\n                    $aImg->PushColor($this->majcolor);\n                }\n                $aImg->Line($xt+$dx,$yt+$dy,$xt-$dx,$yt-$dy);\n                if( $this->majcolor != '' ) {\n                    $aImg->PopColor();\n                }\n            }\n        }\n\n        // Draw minor ticks\n        $ticklen2=$this->minor_abs_size;\n        $dx=round(sin($aAxisAngle)*$ticklen2);\n        $dy=round(cos($aAxisAngle)*$ticklen2);\n        if( !$this->supress_tickmarks && !$this->supress_minor_tickmarks) {\n            if( $this->mincolor != '' ) {\n                $aImg->PushColor($this->mincolor);\n            }\n            for($i=1; $i<=$nbrmin; ++$i) {\n                if( ($i % $skip) == 0 ) {\n                    continue;\n                }\n                $xt=round($i*$min_step_abs*cos($aAxisAngle))+$aScale->scale_abs[0];\n                $yt=$aPos-round($i*$min_step_abs*sin($aAxisAngle));\n                $aImg->Line($xt+$dx,$yt+$dy,$xt-$dx,$yt-$dy);\n            }\n            if( $this->mincolor != '' ) {\n                $aImg->PopColor();\n            }\n        }\n    }\n}\n\n\n//===================================================\n// CLASS RadarAxis\n// Description: Implements axis for the radar graph\n//===================================================\nclass RadarAxis extends AxisPrototype {\n    public $title=null;\n    private $title_color='navy';\n    private $len=0;\n\n    function __construct($img,$aScale,$color=array(0,0,0)) {\n        parent::__construct($img,$aScale,$color);\n        $this->len = $img->plotheight;\n        $this->title = new Text();\n        $this->title->SetFont(FF_FONT1,FS_BOLD);\n        $this->color = array(0,0,0);\n    }\n\n    // Stroke the axis\n    // $pos    = Vertical position of axis\n    // $aAxisAngle = Axis angle\n    // $grid   = Returns an array with positions used to draw the grid\n    // $lf   = Label flag, TRUE if the axis should have labels\n    function Stroke($pos,$aAxisAngle,&$grid,$title,$lf) {\n        $this->img->SetColor($this->color);\n\n        // Determine end points for the axis\n        $x=round($this->scale->world_abs_size*cos($aAxisAngle)+$this->scale->scale_abs[0]);\n        $y=round($pos-$this->scale->world_abs_size*sin($aAxisAngle));\n\n        // Draw axis\n        $this->img->SetColor($this->color);\n        $this->img->SetLineWeight($this->weight);\n        if( !$this->hide ) {\n            $this->img->Line($this->scale->scale_abs[0],$pos,$x,$y);\n        }\n\n        $this->scale->ticks->Stroke($this->img,$grid,$pos,$aAxisAngle,$this->scale,$majpos,$majlabel);\n        $ncolor=0;\n        if( isset($this->ticks_label_colors) ) {\n            $ncolor=count($this->ticks_label_colors);\n        }\n\n        // Draw labels\n        if( $lf && !$this->hide ) {\n            $this->img->SetFont($this->font_family,$this->font_style,$this->font_size);\n            $this->img->SetTextAlign('left','top');\n            $this->img->SetColor($this->label_color);\n\n            // majpos contains (x,y) coordinates for labels\n            if( ! $this->hide_labels ) {\n                $n = floor(count($majpos)/2);\n                for($i=0; $i < $n; ++$i) {\n                    // Set specific label color if specified\n                    if( $ncolor > 0 ) {\n                        $this->img->SetColor($this->ticks_label_colors[$i % $ncolor]);\n                    }\n\n                    if( $this->ticks_label != null && isset($this->ticks_label[$i]) ) {\n                        $this->img->StrokeText($majpos[$i*2],$majpos[$i*2+1],$this->ticks_label[$i]);\n                    }\n                    else {\n                        $this->img->StrokeText($majpos[$i*2],$majpos[$i*2+1],$majlabel[$i]);\n                    }\n                }\n            }\n        }\n        $this->_StrokeAxisTitle($pos,$aAxisAngle,$title);\n    }\n\n    function _StrokeAxisTitle($pos,$aAxisAngle,$title) {\n        $this->title->Set($title);\n        $marg=6+$this->title->margin;\n        $xt=round(($this->scale->world_abs_size+$marg)*cos($aAxisAngle)+$this->scale->scale_abs[0]);\n        $yt=round($pos-($this->scale->world_abs_size+$marg)*sin($aAxisAngle));\n\n        // Position the axis title.\n        // dx, dy is the offset from the top left corner of the bounding box that sorrounds the text\n        // that intersects with the extension of the corresponding axis. The code looks a little\n        // bit messy but this is really the only way of having a reasonable position of the\n        // axis titles.\n        if( $this->title->iWordwrap > 0 ) {\n            $title = wordwrap($title,$this->title->iWordwrap,\"\\n\");\n        }\n\n        $h=$this->img->GetTextHeight($title)*1.2;\n        $w=$this->img->GetTextWidth($title)*1.2;\n\n        while( $aAxisAngle > 2*M_PI )\n            $aAxisAngle -= 2*M_PI;\n\n        // Around 3 a'clock\n        if( $aAxisAngle>=7*M_PI/4 || $aAxisAngle <= M_PI/4 ) $dx=-0.15; // Small trimming to make the dist to the axis more even\n\n        // Around 12 a'clock\n        if( $aAxisAngle>=M_PI/4 && $aAxisAngle <= 3*M_PI/4 ) $dx=($aAxisAngle-M_PI/4)*2/M_PI;\n\n        // Around 9 a'clock\n        if( $aAxisAngle>=3*M_PI/4 && $aAxisAngle <= 5*M_PI/4 ) $dx=1;\n\n        // Around 6 a'clock\n        if( $aAxisAngle>=5*M_PI/4 && $aAxisAngle <= 7*M_PI/4 ) $dx=(1-($aAxisAngle-M_PI*5/4)*2/M_PI);\n\n        if( $aAxisAngle>=7*M_PI/4 ) $dy=(($aAxisAngle-M_PI)-3*M_PI/4)*2/M_PI;\n        if( $aAxisAngle<=M_PI/12 ) $dy=(0.5-$aAxisAngle*2/M_PI);\n        if( $aAxisAngle<=M_PI/4 && $aAxisAngle > M_PI/12) $dy=(1-$aAxisAngle*2/M_PI);\n        if( $aAxisAngle>=M_PI/4 && $aAxisAngle <= 3*M_PI/4 ) $dy=1;\n        if( $aAxisAngle>=3*M_PI/4 && $aAxisAngle <= 5*M_PI/4 ) $dy=(1-($aAxisAngle-3*M_PI/4)*2/M_PI);\n        if( $aAxisAngle>=5*M_PI/4 && $aAxisAngle <= 7*M_PI/4 ) $dy=0;\n\n        if( !$this->hide ) {\n            $this->title->Stroke($this->img,$xt-$dx*$w,$yt-$dy*$h,$title);\n        }\n    }\n\n} // Class\n\n\n//===================================================\n// CLASS RadarGrid\n// Description: Draws grid for the radar graph\n//===================================================\nclass RadarGrid { //extends Grid {\n    private $type='solid';\n    private $grid_color='#DDDDDD';\n    private $show=false, $weight=1;\n\n    function __construct() {\n        // Empty\n    }\n\n    function SetColor($aMajColor) {\n        $this->grid_color = $aMajColor;\n    }\n\n    function SetWeight($aWeight) {\n        $this->weight=$aWeight;\n    }\n\n    // Specify if grid should be dashed, dotted or solid\n    function SetLineStyle($aType) {\n        $this->type = $aType;\n    }\n\n    // Decide if both major and minor grid should be displayed\n    function Show($aShowMajor=true) {\n        $this->show=$aShowMajor;\n    }\n\n    function Stroke($img,$grid) {\n        if( !$this->show ) {\n            return;\n        }\n\n        $nbrticks = count($grid[0])/2;\n        $nbrpnts = count($grid);\n        $img->SetColor($this->grid_color);\n        $img->SetLineWeight($this->weight);\n\n        for($i=0; $i<$nbrticks; ++$i) {\n            for($j=0; $j<$nbrpnts; ++$j) {\n                $pnts[$j*2]=$grid[$j][$i*2];\n                $pnts[$j*2+1]=$grid[$j][$i*2+1];\n            }\n            for($k=0; $k<$nbrpnts; ++$k ){\n                $l=($k+1)%$nbrpnts;\n                if( $this->type == 'solid' )\n                    $img->Line($pnts[$k*2],$pnts[$k*2+1],$pnts[$l*2],$pnts[$l*2+1]);\n                elseif( $this->type == 'dotted' )\n                    $img->DashedLine($pnts[$k*2],$pnts[$k*2+1],$pnts[$l*2],$pnts[$l*2+1],1,6);\n                elseif( $this->type == 'dashed' )\n                    $img->DashedLine($pnts[$k*2],$pnts[$k*2+1],$pnts[$l*2],$pnts[$l*2+1],2,4);\n                elseif( $this->type == 'longdashed' )\n                    $img->DashedLine($pnts[$k*2],$pnts[$k*2+1],$pnts[$l*2],$pnts[$l*2+1],8,6);\n            }\n            $pnts=array();\n        }\n    }\n} // Class\n\n\n//===================================================\n// CLASS RadarPlot\n// Description: Plot a radarplot\n//===================================================\nclass RadarPlot {\n    public $mark=null;\n    public $legend='';\n    public $legendcsimtarget='';\n    public $legendcsimalt='';\n    public $csimtargets=array(); // Array of targets for CSIM\n    public $csimareas=\"\";   // Resultant CSIM area tags\n    public $csimalts=null;   // ALT:s for corresponding target\n    private $data=array();\n    private $fill=false, $fill_color=array(200,170,180);\n    private $color=array(0,0,0);\n    private $weight=1;\n    private $linestyle='solid';\n\n    //---------------\n    // CONSTRUCTOR\n    function __construct($data) {\n        $this->data = $data;\n        $this->mark = new PlotMark();\n    }\n\n    function Min() {\n        return Min($this->data);\n    }\n\n    function Max() {\n        return Max($this->data);\n    }\n\n    function SetLegend($legend) {\n        $this->legend=$legend;\n    }\n\n    function SetLineStyle($aStyle) {\n        $this->linestyle=$aStyle;\n    }\n\n    function SetLineWeight($w) {\n        $this->weight=$w;\n    }\n\n    function SetFillColor($aColor) {\n        $this->fill_color = $aColor;\n        $this->fill = true;\n    }\n\n    function SetFill($f=true) {\n        $this->fill = $f;\n    }\n\n    function SetColor($aColor,$aFillColor=false) {\n        $this->color = $aColor;\n        if( $aFillColor ) {\n            $this->SetFillColor($aFillColor);\n            $this->fill = true;\n        }\n    }\n\n    // Set href targets for CSIM\n    function SetCSIMTargets($aTargets,$aAlts=null) {\n        $this->csimtargets=$aTargets;\n        $this->csimalts=$aAlts;\n    }\n\n    // Get all created areas\n    function GetCSIMareas() {\n        return $this->csimareas;\n    }\n\n    function Stroke($img, $pos, $scale, $startangle) {\n        $nbrpnts = count($this->data);\n        $astep=2*M_PI/$nbrpnts;\n        $a=$startangle;\n\n        for($i=0; $i<$nbrpnts; ++$i) {\n\n            // Rotate each non null point to the correct axis-angle\n            $cs=$scale->RelTranslate($this->data[$i]);\n            $x=round($cs*cos($a)+$scale->scale_abs[0]);\n            $y=round($pos-$cs*sin($a));\n\n            $pnts[$i*2]=$x;\n            $pnts[$i*2+1]=$y;\n\n            // If the next point is null then we draw this polygon segment\n            // to the center, skip the next and draw the next segment from\n            // the center up to the point on the axis with the first non-null\n            // value and continues from that point. Some additoinal logic is necessary\n            // to handle the boundary conditions\n            if( $i < $nbrpnts-1 ) {\n                if( is_null($this->data[$i+1]) ) {\n                    $cs = 0;\n                    $x=round($cs*cos($a)+$scale->scale_abs[0]);\n                    $y=round($pos-$cs*sin($a));\n                    $pnts[$i*2]=$x;\n                    $pnts[$i*2+1]=$y;\n                    $a += $astep;\n                }\n            }\n\n            $a += $astep;\n        }\n\n        if( $this->fill ) {\n            $img->SetColor($this->fill_color);\n            $img->FilledPolygon($pnts);\n        }\n\n        $img->SetLineWeight($this->weight);\n        $img->SetColor($this->color);\n        $img->SetLineStyle($this->linestyle);\n        $pnts[] = $pnts[0];\n        $pnts[] = $pnts[1];\n        $img->Polygon($pnts);\n        $img->SetLineStyle('solid'); // Reset line style to default\n\n        // Add plotmarks on top\n        if( $this->mark->show ) {\n\t\t\tfor($i=0; $i < $nbrpnts; ++$i) {\n\t            if( isset($this->csimtargets[$i]) ) {\n\t                $this->mark->SetCSIMTarget($this->csimtargets[$i]);\n\t                $this->mark->SetCSIMAlt($this->csimalts[$i]);\n\t                $this->mark->SetCSIMAltVal($pnts[$i*2], $pnts[$i*2+1]);\n\t                $this->mark->Stroke($img, $pnts[$i*2], $pnts[$i*2+1]);\n\t                $this->csimareas .= $this->mark->GetCSIMAreas();\n\t            }\n\t            else {\n\t\t\t\t\t$this->mark->Stroke($img,$pnts[$i*2],$pnts[$i*2+1]);\n\t            }\n            }\n        }\n\n    }\n\n    function GetCount() {\n        return count($this->data);\n    }\n\n    function Legend($graph) {\n        if( $this->legend == '' ) {\n            return;\n        }\n        if( $this->fill ) {\n            $graph->legend->Add($this->legend,$this->fill_color,$this->mark);\n        } else {\n            $graph->legend->Add($this->legend,$this->color,$this->mark);\n        }\n    }\n\n} // Class\n\n//===================================================\n// CLASS RadarGraph\n// Description: Main container for a radar graph\n//===================================================\nclass RadarGraph extends Graph {\n    public $grid,$axis=null;\n    private $posx,$posy;\n    private $len;\n    private $axis_title=null;\n\n    function __construct($width=300,$height=200,$cachedName=\"\",$timeout=0,$inline=1) {\n        parent::__construct($width,$height,$cachedName,$timeout,$inline);\n        $this->posx = $width/2;\n        $this->posy = $height/2;\n        $this->len = min($width,$height)*0.35;\n        $this->SetColor(array(255,255,255));\n        $this->SetTickDensity(TICKD_NORMAL);\n        $this->SetScale('lin');\n        $this->SetGridDepth(DEPTH_FRONT);\n    }\n\n    function HideTickMarks($aFlag=true) {\n        $this->axis->scale->ticks->SupressTickMarks($aFlag);\n    }\n\n    function ShowMinorTickmarks($aFlag=true) {\n        $this->yscale->ticks->SupressMinorTickMarks(!$aFlag);\n    }\n\n    function SetScale($axtype,$ymin=1,$ymax=1,$dummy1=null,$dumy2=null) {\n        if( $axtype != 'lin' && $axtype != 'log' ) {\n            JpGraphError::RaiseL(18003,$axtype);\n            //(\"Illegal scale for radarplot ($axtype). Must be \\\"lin\\\" or \\\"log\\\"\");\n        }\n        if( $axtype == 'lin' ) {\n            $this->yscale = new LinearScale($ymin,$ymax);\n            $this->yscale->ticks = new RadarLinearTicks();\n            $this->yscale->ticks->SupressMinorTickMarks();\n        }\n        elseif( $axtype == 'log' ) {\n            $this->yscale = new LogScale($ymin,$ymax);\n            $this->yscale->ticks = new RadarLogTicks();\n        }\n\n        $this->axis = new RadarAxis($this->img,$this->yscale);\n        $this->grid = new RadarGrid();\n    }\n\n    function SetSize($aSize) {\n        if( $aSize < 0.1 || $aSize>1 ) {\n            JpGraphError::RaiseL(18004,$aSize);\n            //(\"Radar Plot size must be between 0.1 and 1. (Your value=$s)\");\n        }\n        $this->len=min($this->img->width,$this->img->height)*$aSize/2;\n    }\n\n    function SetPlotSize($aSize) {\n        $this->SetSize($aSize);\n    }\n\n    function SetTickDensity($densy=TICKD_NORMAL,$dummy1=null) {\n        $this->ytick_factor=25;\n        switch( $densy ) {\n            case TICKD_DENSE:\n                $this->ytick_factor=12;\n                break;\n            case TICKD_NORMAL:\n                $this->ytick_factor=25;\n                break;\n            case TICKD_SPARSE:\n                $this->ytick_factor=40;\n                break;\n            case TICKD_VERYSPARSE:\n                $this->ytick_factor=70;\n                break;\n            default:\n                JpGraphError::RaiseL(18005,$densy);\n                //(\"RadarPlot Unsupported Tick density: $densy\");\n        }\n    }\n\n    function SetPos($px,$py=0.5) {\n        $this->SetCenter($px,$py);\n    }\n\n    function SetCenter($px,$py=0.5) {\n        if( $px >= 0 && $px <= 1 ) {\n        \t$this->posx = $this->img->width*$px;\n        }\n        else {\n        \t$this->posx = $px;\n        }\n        if( $py >= 0 && $py <= 1 ) {\n        \t$this->posy = $this->img->height*$py;\n        }\n        else {\n        \t$this->posy = $py;\n        }\n    }\n\n    function SetColor($aColor) {\n        $this->SetMarginColor($aColor);\n    }\n\n    function SetTitles($aTitleArray) {\n        $this->axis_title = $aTitleArray;\n    }\n\n    function Add($aPlot) {\n    \tif( $aPlot == null ) {\n            JpGraphError::RaiseL(25010);//(\"Graph::Add() You tried to add a null plot to the graph.\");\n        }\n        if( is_array($aPlot) && count($aPlot) > 0 ) {\n            $cl = $aPlot[0];\n        }\n        else {\n            $cl = $aPlot;\n        }\n\n        if( $cl instanceof Text ) $this->AddText($aPlot);\n        elseif( class_exists('IconPlot',false) && ($cl instanceof IconPlot) ) $this->AddIcon($aPlot);\n        else {\n            $this->plots[] = $aPlot;\n        }\n    }\n\n    function GetPlotsYMinMax($aPlots) {\n        $min=$aPlots[0]->Min();\n        $max=$aPlots[0]->Max();\n        foreach( $this->plots as $p ) {\n            $max=max($max,$p->Max());\n            $min=min($min,$p->Min());\n        }\n        if( $min < 0 ) {\n            JpGraphError::RaiseL(18006,$min);\n            //(\"Minimum data $min (Radar plots should only be used when all data points > 0)\");\n        }\n        return array($min,$max);\n    }\n\n    function StrokeIcons() {\n    \tif( $this->iIcons != null ) {\n        \t$n = count($this->iIcons);\n        \tfor( $i=0; $i < $n; ++$i ) {\n            \t$this->iIcons[$i]->Stroke($this->img);\n        \t}\n    \t}\n    }\n\n\tfunction StrokeTexts() {\n        if( $this->texts != null ) {\n\t\t\t$n = count($this->texts);\n            for( $i=0; $i < $n; ++$i ) {\n                $this->texts[$i]->Stroke($this->img);\n            }\n        }\n    }\n\n    // Stroke the Radar graph\n    function Stroke($aStrokeFileName='') {\n\n        // If the filename is the predefined value = '_csim_special_'\n        // we assume that the call to stroke only needs to do enough\n        // to correctly generate the CSIM maps.\n        // We use this variable to skip things we don't strictly need\n        // to do to generate the image map to improve performance\n        // a best we can. Therefor you will see a lot of tests !$_csim in the\n        // code below.\n        $_csim = ( $aStrokeFileName === _CSIM_SPECIALFILE );\n\n        // We need to know if we have stroked the plot in the\n        // GetCSIMareas. Otherwise the CSIM hasn't been generated\n        // and in the case of GetCSIM called before stroke to generate\n        // CSIM without storing an image to disk GetCSIM must call Stroke.\n        $this->iHasStroked = true;\n\n        $n = count($this->plots);\n        // Set Y-scale\n\n        if( !$this->yscale->IsSpecified() && count($this->plots) > 0 ) {\n            list($min,$max) = $this->GetPlotsYMinMax($this->plots);\n            $this->yscale->AutoScale($this->img,0,$max,$this->len/$this->ytick_factor);\n        }\n        elseif( $this->yscale->IsSpecified() &&\n                ( $this->yscale->auto_ticks || !$this->yscale->ticks->IsSpecified()) ) {\n\n            // The tick calculation will use the user suplied min/max values to determine\n            // the ticks. If auto_ticks is false the exact user specifed min and max\n            // values will be used for the scale.\n            // If auto_ticks is true then the scale might be slightly adjusted\n            // so that the min and max values falls on an even major step.\n            $min = $this->yscale->scale[0];\n            $max = $this->yscale->scale[1];\n            $this->yscale->AutoScale($this->img,$min,$max,\n                                     $this->len/$this->ytick_factor,\n                                     $this->yscale->auto_ticks);\n        }\n\n        // Set start position end length of scale (in absolute pixels)\n        $this->yscale->SetConstants($this->posx,$this->len);\n\n        // We need as many axis as there are data points\n        $nbrpnts=$this->plots[0]->GetCount();\n\n        // If we have no titles just number the axis 1,2,3,...\n        if( $this->axis_title==null ) {\n            for($i=0; $i < $nbrpnts; ++$i ) {\n                $this->axis_title[$i] = $i+1;\n            }\n        }\n        elseif( count($this->axis_title) < $nbrpnts) {\n            JpGraphError::RaiseL(18007);\n            // (\"Number of titles does not match number of points in plot.\");\n        }\n        for( $i=0; $i < $n; ++$i ) {\n            if( $nbrpnts != $this->plots[$i]->GetCount() ) {\n                JpGraphError::RaiseL(18008);\n                //(\"Each radar plot must have the same number of data points.\");\n            }\n        }\n\n        if( !$_csim ) {\n        \tif( $this->background_image != '' ) {\n            \t$this->StrokeFrameBackground();\n        \t}\n        \telse {\n            \t$this->StrokeFrame();\n            \t$this->StrokeBackgroundGrad();\n        \t}\n        }\n        $astep=2*M_PI/$nbrpnts;\n\n\t\tif( !$_csim ) {\n     \t\tif( $this->iIconDepth == DEPTH_BACK ) {\n        \t\t$this->StrokeIcons();\n        \t}\n\n\n\t        // Prepare legends\n    \t    for($i=0; $i < $n; ++$i) {\n        \t    $this->plots[$i]->Legend($this);\n\t        }\n    \t    $this->legend->Stroke($this->img);\n        \t$this->footer->Stroke($this->img);\n\t\t}\n\n\t\tif( !$_csim ) {\n\t        if( $this->grid_depth == DEPTH_BACK ) {\n\t            // Draw axis and grid\n\t            for( $i=0,$a=M_PI/2; $i < $nbrpnts; ++$i, $a += $astep ) {\n\t                $this->axis->Stroke($this->posy,$a,$grid[$i],$this->axis_title[$i],$i==0);\n\t            }\n                $this->grid->Stroke($this->img,$grid);\n\t        }\n            if( $this->iIconDepth == DEPTH_BACK ) {\n                $this->StrokeIcons();\n            }\n\n\t\t}\n\n        // Plot points\n        $a=M_PI/2;\n        for($i=0; $i < $n; ++$i ) {\n            $this->plots[$i]->Stroke($this->img, $this->posy, $this->yscale, $a);\n        }\n\n        if( !$_csim ) {\n            if( $this->grid_depth != DEPTH_BACK ) {\n                // Draw axis and grid\n                for( $i=0,$a=M_PI/2; $i < $nbrpnts; ++$i, $a += $astep ) {\n                   $this->axis->Stroke($this->posy,$a,$grid[$i],$this->axis_title[$i],$i==0);\n                }\n                $this->grid->Stroke($this->img,$grid);\n            }\n\n        \t$this->StrokeTitles();\n       \t\t$this->StrokeTexts();\n       \t\tif( $this->iIconDepth == DEPTH_FRONT ) {\n        \t\t$this->StrokeIcons();\n        \t}\n\t\t}\n\n        // Should we do any final image transformation\n        if( $this->iImgTrans && !$_csim ) {\n            if( !class_exists('ImgTrans',false) ) {\n                require_once('jpgraph_imgtrans.php');\n            }\n\n            $tform = new ImgTrans($this->img->img);\n            $this->img->img = $tform->Skew3D($this->iImgTransHorizon,$this->iImgTransSkewDist,\n            $this->iImgTransDirection,$this->iImgTransHighQ,\n            $this->iImgTransMinSize,$this->iImgTransFillColor,\n            $this->iImgTransBorder);\n        }\n\n\t\tif( !$_csim ) {\n\t        // If the filename is given as the special \"__handle\"\n\t        // then the image handler is returned and the image is NOT\n\t        // streamed back\n\t        if( $aStrokeFileName == _IMG_HANDLER ) {\n\t            return $this->img->img;\n\t        }\n\t        else {\n\t            // Finally stream the generated picture\n\t            $this->cache->PutAndStream($this->img,$this->cache_name,$this->inline,$aStrokeFileName);\n\t        }\n\t\t}\n    }\n} // Class\n\n/* EOF */\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_regstat.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_REGSTAT.PHP\n // Description: Regression and statistical analysis helper classes\n // Created:     2002-12-01\n // Ver:         $Id: jpgraph_regstat.php 1131 2009-03-11 20:08:24Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\n//------------------------------------------------------------------------\n// CLASS Spline\n// Create a new data array from an existing data array but with more points.\n// The new points are interpolated using a cubic spline algorithm\n//------------------------------------------------------------------------\nclass Spline {\n    // 3:rd degree polynom approximation\n\n    private $xdata,$ydata;   // Data vectors\n    private $y2;   // 2:nd derivate of ydata\n    private $n=0;\n\n    function __construct($xdata,$ydata) {\n        $this->y2 = array();\n        $this->xdata = $xdata;\n        $this->ydata = $ydata;\n\n        $n = count($ydata);\n        $this->n = $n;\n        if( $this->n !== count($xdata) ) {\n            JpGraphError::RaiseL(19001);\n            //('Spline: Number of X and Y coordinates must be the same');\n        }\n\n        // Natural spline 2:derivate == 0 at endpoints\n        $this->y2[0]    = 0.0;\n        $this->y2[$n-1] = 0.0;\n        $delta[0] = 0.0;\n\n        // Calculate 2:nd derivate\n        for($i=1; $i < $n-1; ++$i) {\n            $d = ($xdata[$i+1]-$xdata[$i-1]);\n            if( $d == 0  ) {\n                JpGraphError::RaiseL(19002);\n                //('Invalid input data for spline. Two or more consecutive input X-values are equal. Each input X-value must differ since from a mathematical point of view it must be a one-to-one mapping, i.e. each X-value must correspond to exactly one Y-value.');\n            }\n            $s = ($xdata[$i]-$xdata[$i-1])/$d;\n            $p = $s*$this->y2[$i-1]+2.0;\n            $this->y2[$i] = ($s-1.0)/$p;\n            $delta[$i] = ($ydata[$i+1]-$ydata[$i])/($xdata[$i+1]-$xdata[$i]) -\n            ($ydata[$i]-$ydata[$i-1])/($xdata[$i]-$xdata[$i-1]);\n            $delta[$i] = (6.0*$delta[$i]/($xdata[$i+1]-$xdata[$i-1])-$s*$delta[$i-1])/$p;\n        }\n\n        // Backward substitution\n        for( $j=$n-2; $j >= 0; --$j ) {\n            $this->y2[$j] = $this->y2[$j]*$this->y2[$j+1] + $delta[$j];\n        }\n    }\n\n    // Return the two new data vectors\n    function Get($num=50) {\n        $n = $this->n ;\n        $step = ($this->xdata[$n-1]-$this->xdata[0]) / ($num-1);\n        $xnew=array();\n        $ynew=array();\n        $xnew[0] = $this->xdata[0];\n        $ynew[0] = $this->ydata[0];\n        for( $j=1; $j < $num; ++$j ) {\n            $xnew[$j] = $xnew[0]+$j*$step;\n            $ynew[$j] = $this->Interpolate($xnew[$j]);\n        }\n        return array($xnew,$ynew);\n    }\n\n    // Return a single interpolated Y-value from an x value\n    function Interpolate($xpoint) {\n\n        $max = $this->n-1;\n        $min = 0;\n\n        // Binary search to find interval\n        while( $max-$min > 1 ) {\n            $k = (int) floor(($max+$min) / 2); //MiToTeam: explicit type casting\n            if( $this->xdata[$k] > $xpoint )\n            $max=$k;\n            else\n            $min=$k;\n        }\n\n        // Each interval is interpolated by a 3:degree polynom function\n        $h = $this->xdata[$max]-$this->xdata[$min];\n\n        if( $h == 0  ) {\n            JpGraphError::RaiseL(19002);\n            //('Invalid input data for spline. Two or more consecutive input X-values are equal. Each input X-value must differ since from a mathematical point of view it must be a one-to-one mapping, i.e. each X-value must correspond to exactly one Y-value.');\n        }\n\n\n        $a = ($this->xdata[$max]-$xpoint)/$h;\n        $b = ($xpoint-$this->xdata[$min])/$h;\n        return $a*$this->ydata[$min]+$b*$this->ydata[$max]+\n        (($a*$a*$a-$a)*$this->y2[$min]+($b*$b*$b-$b)*$this->y2[$max])*($h*$h)/6.0;\n    }\n}\n\n//------------------------------------------------------------------------\n// CLASS Bezier\n// Create a new data array from a number of control points\n//------------------------------------------------------------------------\nclass Bezier {\n    /**\n     * @author Thomas Despoix, openXtrem company\n     * @license released under QPL\n     * @abstract Bezier interoplated point generation,\n     * computed from control points data sets, based on Paul Bourke algorithm :\n     * http://local.wasp.uwa.edu.au/~pbourke/geometry/bezier/index2.html\n     */\n    private $datax = array();\n    private $datay = array();\n    private $n=0;\n\n    function __construct($datax, $datay, $attraction_factor = 1) {\n        // Adding control point multiple time will raise their attraction power over the curve\n        $this->n = count($datax);\n        if( $this->n !== count($datay) ) {\n            JpGraphError::RaiseL(19003);\n            //('Bezier: Number of X and Y coordinates must be the same');\n        }\n        $idx=0;\n        foreach($datax as $datumx) {\n            for ($i = 0; $i < $attraction_factor; $i++) {\n                $this->datax[$idx++] = $datumx;\n            }\n        }\n        $idx=0;\n        foreach($datay as $datumy) {\n            for ($i = 0; $i < $attraction_factor; $i++) {\n                $this->datay[$idx++] = $datumy;\n            }\n        }\n        $this->n *= $attraction_factor;\n    }\n\n    /**\n     * Return a set of data points that specifies the bezier curve with $steps points\n     * @param $steps Number of new points to return\n     * @return array($datax, $datay)\n     */\n    function Get($steps) {\n        $datax = array();\n        $datay = array();\n        for ($i = 0; $i < $steps; $i++) {\n            list($datumx, $datumy) = $this->GetPoint((float) $i / (float) $steps); //MiToTeam: Non-canonical scalar type casts (php 8.5)\n            $datax[$i] = $datumx;\n            $datay[$i] = $datumy;\n        }\n         \n        $datax[] = end($this->datax);\n        $datay[] = end($this->datay);\n         \n        return array($datax, $datay);\n    }\n\n    /**\n     * Return one point on the bezier curve. $mu is the position on the curve where $mu is in the\n     * range 0 $mu < 1 where 0 is tha start point and 1 is the end point. Note that every newly computed\n     * point depends on all the existing points\n     * \n     * @param $mu Position on the bezier curve\n     * @return array($x, $y)\n     */\n    function GetPoint($mu) {\n        $n = $this->n - 1;\n        $k = 0;\n        $kn = 0;\n        $nn = 0;\n        $nkn = 0;\n        $blend = 0.0;\n        $newx = 0.0;\n        $newy = 0.0;\n\n        $muk = 1.0;\n        $munk = (float) pow(1-$mu, (float) $n); //MiToTeam: Non-canonical scalar type casts (php 8.5)\n\n        for ($k = 0; $k <= $n; $k++) {\n            $nn = $n;\n            $kn = $k;\n            $nkn = $n - $k;\n            $blend = $muk * $munk;\n            $muk *= $mu;\n            $munk /= (1-$mu);\n            while ($nn >= 1) {\n                $blend *= $nn;\n                $nn--;\n                if ($kn > 1) {\n                    $blend /= (float) $kn; //MiToTeam: Non-canonical scalar type casts (php 8.5)\n                    $kn--;\n                }\n                if ($nkn > 1) {\n                    $blend /= (float) $nkn; //MiToTeam: Non-canonical scalar type casts (php 8.5)\n                    $nkn--;\n                }\n            }\n            $newx += $this->datax[$k] * $blend;\n            $newy += $this->datay[$k] * $blend;\n        }\n\n        return array($newx, $newy);\n    }\n}\n\n// EOF\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_rgb.inc.php",
    "content": "<?php\n//=======================================================================\n// File:        JPGRAPH_RGB.INC.PHP\n// Description: Class to handle RGb color space specification and\n//              named colors\n// Created:     2001-01-08 (Refactored to separate file 2008-08-01)\n// Ver:         $Id: jpgraph_rgb.inc.php 1893 2009-10-02 23:15:25Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\n\n/*===================================================\n// CLASS RGB\n// Description: Color definitions as RGB triples\n//===================================================\n*/\n\nclass RGB {\n    public $rgb_table;\n    public $img;\n\n    function __construct($aImg=null) {\n        $this->img = $aImg;\n\n        // Conversion array between color names and RGB\n        $this->rgb_table = array(\n            'aqua'=> array(0,255,255),\n            'lime'=> array(0,255,0),\n            'teal'=> array(0,128,128),\n            'whitesmoke'=>array(245,245,245),\n            'gainsboro'=>array(220,220,220),\n            'oldlace'=>array(253,245,230),\n            'linen'=>array(250,240,230),\n            'antiquewhite'=>array(250,235,215),\n            'papayawhip'=>array(255,239,213),\n            'blanchedalmond'=>array(255,235,205),\n            'bisque'=>array(255,228,196),\n            'peachpuff'=>array(255,218,185),\n            'navajowhite'=>array(255,222,173),\n            'moccasin'=>array(255,228,181),\n            'cornsilk'=>array(255,248,220),\n            'ivory'=>array(255,255,240),\n            'lemonchiffon'=>array(255,250,205),\n            'seashell'=>array(255,245,238),\n            'mintcream'=>array(245,255,250),\n            'azure'=>array(240,255,255),\n            'aliceblue'=>array(240,248,255),\n            'lavender'=>array(230,230,250),\n            'lavenderblush'=>array(255,240,245),\n            'mistyrose'=>array(255,228,225),\n            'white'=>array(255,255,255),\n            'black'=>array(0,0,0),\n            'darkslategray'=>array(47,79,79),\n            'dimgray'=>array(105,105,105),\n            'slategray'=>array(112,128,144),\n            'lightslategray'=>array(119,136,153),\n            'gray'=>array(190,190,190),\n            'lightgray'=>array(211,211,211),\n            'midnightblue'=>array(25,25,112),\n            'navy'=>array(0,0,128),\n            'indigo'=>array(75,0,130),\n            'electricindigo'=>array(102,0,255),\n            'deepindigo'=>array(138,43,226),\n            'pigmentindigo'=>array(75,0,130),\n            'indigodye'=>array(0,65,106),\n            'cornflowerblue'=>array(100,149,237),\n            'darkslateblue'=>array(72,61,139),\n            'slateblue'=>array(106,90,205),\n            'mediumslateblue'=>array(123,104,238),\n            'lightslateblue'=>array(132,112,255),\n            'mediumblue'=>array(0,0,205),\n            'royalblue'=>array(65,105,225),\n            'blue'=>array(0,0,255),\n            'dodgerblue'=>array(30,144,255),\n            'deepskyblue'=>array(0,191,255),\n            'skyblue'=>array(135,206,235),\n            'lightskyblue'=>array(135,206,250),\n            'steelblue'=>array(70,130,180),\n            'lightred'=>array(211,167,168),\n            'lightsteelblue'=>array(176,196,222),\n            'lightblue'=>array(173,216,230),\n            'powderblue'=>array(176,224,230),\n            'paleturquoise'=>array(175,238,238),\n            'darkturquoise'=>array(0,206,209),\n            'mediumturquoise'=>array(72,209,204),\n            'turquoise'=>array(64,224,208),\n            'cyan'=>array(0,255,255),\n            'lightcyan'=>array(224,255,255),\n            'cadetblue'=>array(95,158,160),\n            'mediumaquamarine'=>array(102,205,170),\n            'aquamarine'=>array(127,255,212),\n            'darkgreen'=>array(0,100,0),\n            'darkolivegreen'=>array(85,107,47),\n            'darkseagreen'=>array(143,188,143),\n            'seagreen'=>array(46,139,87),\n            'mediumseagreen'=>array(60,179,113),\n            'lightseagreen'=>array(32,178,170),\n            'palegreen'=>array(152,251,152),\n            'springgreen'=>array(0,255,127),\n            'lawngreen'=>array(124,252,0),\n            'green'=>array(0,255,0),\n            'chartreuse'=>array(127,255,0),\n            'mediumspringgreen'=>array(0,250,154),\n            'greenyellow'=>array(173,255,47),\n            'limegreen'=>array(50,205,50),\n            'yellowgreen'=>array(154,205,50),\n            'forestgreen'=>array(34,139,34),\n            'olivedrab'=>array(107,142,35),\n            'darkkhaki'=>array(189,183,107),\n            'khaki'=>array(240,230,140),\n            'palegoldenrod'=>array(238,232,170),\n            'lightgoldenrodyellow'=>array(250,250,210),\n            'lightyellow'=>array(255,255,200),\n            'yellow'=>array(255,255,0),\n            'gold'=>array(255,215,0),\n            'lightgoldenrod'=>array(238,221,130),\n            'goldenrod'=>array(218,165,32),\n            'darkgoldenrod'=>array(184,134,11),\n            'rosybrown'=>array(188,143,143),\n            'indianred'=>array(205,92,92),\n            'saddlebrown'=>array(139,69,19),\n            'sienna'=>array(160,82,45),\n            'peru'=>array(205,133,63),\n            'burlywood'=>array(222,184,135),\n            'beige'=>array(245,245,220),\n            'wheat'=>array(245,222,179),\n            'sandybrown'=>array(244,164,96),\n            'tan'=>array(210,180,140),\n            'chocolate'=>array(210,105,30),\n            'firebrick'=>array(178,34,34),\n            'brown'=>array(165,42,42),\n            'darksalmon'=>array(233,150,122),\n            'salmon'=>array(250,128,114),\n            'lightsalmon'=>array(255,160,122),\n            'orange'=>array(255,165,0),\n            'darkorange'=>array(255,140,0),\n            'coral'=>array(255,127,80),\n            'lightcoral'=>array(240,128,128),\n            'tomato'=>array(255,99,71),\n            'orangered'=>array(255,69,0),\n            'red'=>array(255,0,0),\n            'hotpink'=>array(255,105,180),\n            'deeppink'=>array(255,20,147),\n            'pink'=>array(255,192,203),\n            'lightpink'=>array(255,182,193),\n            'palevioletred'=>array(219,112,147),\n            'maroon'=>array(176,48,96),\n            'mediumvioletred'=>array(199,21,133),\n            'violetred'=>array(208,32,144),\n            'magenta'=>array(255,0,255),\n            'violet'=>array(238,130,238),\n            'plum'=>array(221,160,221),\n            'orchid'=>array(218,112,214),\n            'mediumorchid'=>array(186,85,211),\n            'darkorchid'=>array(153,50,204),\n            'darkviolet'=>array(148,0,211),\n            'blueviolet'=>array(138,43,226),\n            'purple'=>array(160,32,240),\n            'mediumpurple'=>array(147,112,219),\n            'thistle'=>array(216,191,216),\n            'snow1'=>array(255,250,250),\n            'snow2'=>array(238,233,233),\n            'snow3'=>array(205,201,201),\n            'snow4'=>array(139,137,137),\n            'seashell1'=>array(255,245,238),\n            'seashell2'=>array(238,229,222),\n            'seashell3'=>array(205,197,191),\n            'seashell4'=>array(139,134,130),\n            'AntiqueWhite1'=>array(255,239,219),\n            'AntiqueWhite2'=>array(238,223,204),\n            'AntiqueWhite3'=>array(205,192,176),\n            'AntiqueWhite4'=>array(139,131,120),\n            'bisque1'=>array(255,228,196),\n            'bisque2'=>array(238,213,183),\n            'bisque3'=>array(205,183,158),\n            'bisque4'=>array(139,125,107),\n            'peachPuff1'=>array(255,218,185),\n            'peachpuff2'=>array(238,203,173),\n            'peachpuff3'=>array(205,175,149),\n            'peachpuff4'=>array(139,119,101),\n            'navajowhite1'=>array(255,222,173),\n            'navajowhite2'=>array(238,207,161),\n            'navajowhite3'=>array(205,179,139),\n            'navajowhite4'=>array(139,121,94),\n            'lemonchiffon1'=>array(255,250,205),\n            'lemonchiffon2'=>array(238,233,191),\n            'lemonchiffon3'=>array(205,201,165),\n            'lemonchiffon4'=>array(139,137,112),\n            'ivory1'=>array(255,255,240),\n            'ivory2'=>array(238,238,224),\n            'ivory3'=>array(205,205,193),\n            'ivory4'=>array(139,139,131),\n            'honeydew'=>array(193,205,193),\n            'lavenderblush1'=>array(255,240,245),\n            'lavenderblush2'=>array(238,224,229),\n            'lavenderblush3'=>array(205,193,197),\n            'lavenderblush4'=>array(139,131,134),\n            'mistyrose1'=>array(255,228,225),\n            'mistyrose2'=>array(238,213,210),\n            'mistyrose3'=>array(205,183,181),\n            'mistyrose4'=>array(139,125,123),\n            'azure1'=>array(240,255,255),\n            'azure2'=>array(224,238,238),\n            'azure3'=>array(193,205,205),\n            'azure4'=>array(131,139,139),\n            'slateblue1'=>array(131,111,255),\n            'slateblue2'=>array(122,103,238),\n            'slateblue3'=>array(105,89,205),\n            'slateblue4'=>array(71,60,139),\n            'royalblue1'=>array(72,118,255),\n            'royalblue2'=>array(67,110,238),\n            'royalblue3'=>array(58,95,205),\n            'royalblue4'=>array(39,64,139),\n            'dodgerblue1'=>array(30,144,255),\n            'dodgerblue2'=>array(28,134,238),\n            'dodgerblue3'=>array(24,116,205),\n            'dodgerblue4'=>array(16,78,139),\n            'steelblue1'=>array(99,184,255),\n            'steelblue2'=>array(92,172,238),\n            'steelblue3'=>array(79,148,205),\n            'steelblue4'=>array(54,100,139),\n            'deepskyblue1'=>array(0,191,255),\n            'deepskyblue2'=>array(0,178,238),\n            'deepskyblue3'=>array(0,154,205),\n            'deepskyblue4'=>array(0,104,139),\n            'skyblue1'=>array(135,206,255),\n            'skyblue2'=>array(126,192,238),\n            'skyblue3'=>array(108,166,205),\n            'skyblue4'=>array(74,112,139),\n            'lightskyblue1'=>array(176,226,255),\n            'lightskyblue2'=>array(164,211,238),\n            'lightskyblue3'=>array(141,182,205),\n            'lightskyblue4'=>array(96,123,139),\n            'slategray1'=>array(198,226,255),\n            'slategray2'=>array(185,211,238),\n            'slategray3'=>array(159,182,205),\n            'slategray4'=>array(108,123,139),\n            'lightsteelblue1'=>array(202,225,255),\n            'lightsteelblue2'=>array(188,210,238),\n            'lightsteelblue3'=>array(162,181,205),\n            'lightsteelblue4'=>array(110,123,139),\n            'lightblue1'=>array(191,239,255),\n            'lightblue2'=>array(178,223,238),\n            'lightblue3'=>array(154,192,205),\n            'lightblue4'=>array(104,131,139),\n            'lightcyan1'=>array(224,255,255),\n            'lightcyan2'=>array(209,238,238),\n            'lightcyan3'=>array(180,205,205),\n            'lightcyan4'=>array(122,139,139),\n            'paleturquoise1'=>array(187,255,255),\n            'paleturquoise2'=>array(174,238,238),\n            'paleturquoise3'=>array(150,205,205),\n            'paleturquoise4'=>array(102,139,139),\n            'cadetblue1'=>array(152,245,255),\n            'cadetblue2'=>array(142,229,238),\n            'cadetblue3'=>array(122,197,205),\n            'cadetblue4'=>array(83,134,139),\n            'turquoise1'=>array(0,245,255),\n            'turquoise2'=>array(0,229,238),\n            'turquoise3'=>array(0,197,205),\n            'turquoise4'=>array(0,134,139),\n            'cyan1'=>array(0,255,255),\n            'cyan2'=>array(0,238,238),\n            'cyan3'=>array(0,205,205),\n            'cyan4'=>array(0,139,139),\n            'darkslategray1'=>array(151,255,255),\n            'darkslategray2'=>array(141,238,238),\n            'darkslategray3'=>array(121,205,205),\n            'darkslategray4'=>array(82,139,139),\n            'aquamarine1'=>array(127,255,212),\n            'aquamarine2'=>array(118,238,198),\n            'aquamarine3'=>array(102,205,170),\n            'aquamarine4'=>array(69,139,116),\n            'darkseagreen1'=>array(193,255,193),\n            'darkseagreen2'=>array(180,238,180),\n            'darkseagreen3'=>array(155,205,155),\n            'darkseagreen4'=>array(105,139,105),\n            'seagreen1'=>array(84,255,159),\n            'seagreen2'=>array(78,238,148),\n            'seagreen3'=>array(67,205,128),\n            'seagreen4'=>array(46,139,87),\n            'palegreen1'=>array(154,255,154),\n            'palegreen2'=>array(144,238,144),\n            'palegreen3'=>array(124,205,124),\n            'palegreen4'=>array(84,139,84),\n            'springgreen1'=>array(0,255,127),\n            'springgreen2'=>array(0,238,118),\n            'springgreen3'=>array(0,205,102),\n            'springgreen4'=>array(0,139,69),\n            'chartreuse1'=>array(127,255,0),\n            'chartreuse2'=>array(118,238,0),\n            'chartreuse3'=>array(102,205,0),\n            'chartreuse4'=>array(69,139,0),\n            'olivedrab1'=>array(192,255,62),\n            'olivedrab2'=>array(179,238,58),\n            'olivedrab3'=>array(154,205,50),\n            'olivedrab4'=>array(105,139,34),\n            'darkolivegreen1'=>array(202,255,112),\n            'darkolivegreen2'=>array(188,238,104),\n            'darkolivegreen3'=>array(162,205,90),\n            'darkolivegreen4'=>array(110,139,61),\n            'khaki1'=>array(255,246,143),\n            'khaki2'=>array(238,230,133),\n            'khaki3'=>array(205,198,115),\n            'khaki4'=>array(139,134,78),\n            'lightgoldenrod1'=>array(255,236,139),\n            'lightgoldenrod2'=>array(238,220,130),\n            'lightgoldenrod3'=>array(205,190,112),\n            'lightgoldenrod4'=>array(139,129,76),\n            'yellow1'=>array(255,255,0),\n            'yellow2'=>array(238,238,0),\n            'yellow3'=>array(205,205,0),\n            'yellow4'=>array(139,139,0),\n            'gold1'=>array(255,215,0),\n            'gold2'=>array(238,201,0),\n            'gold3'=>array(205,173,0),\n            'gold4'=>array(139,117,0),\n            'goldenrod1'=>array(255,193,37),\n            'goldenrod2'=>array(238,180,34),\n            'goldenrod3'=>array(205,155,29),\n            'goldenrod4'=>array(139,105,20),\n            'darkgoldenrod1'=>array(255,185,15),\n            'darkgoldenrod2'=>array(238,173,14),\n            'darkgoldenrod3'=>array(205,149,12),\n            'darkgoldenrod4'=>array(139,101,8),\n            'rosybrown1'=>array(255,193,193),\n            'rosybrown2'=>array(238,180,180),\n            'rosybrown3'=>array(205,155,155),\n            'rosybrown4'=>array(139,105,105),\n            'indianred1'=>array(255,106,106),\n            'indianred2'=>array(238,99,99),\n            'indianred3'=>array(205,85,85),\n            'indianred4'=>array(139,58,58),\n            'sienna1'=>array(255,130,71),\n            'sienna2'=>array(238,121,66),\n            'sienna3'=>array(205,104,57),\n            'sienna4'=>array(139,71,38),\n            'burlywood1'=>array(255,211,155),\n            'burlywood2'=>array(238,197,145),\n            'burlywood3'=>array(205,170,125),\n            'burlywood4'=>array(139,115,85),\n            'wheat1'=>array(255,231,186),\n            'wheat2'=>array(238,216,174),\n            'wheat3'=>array(205,186,150),\n            'wheat4'=>array(139,126,102),\n            'tan1'=>array(255,165,79),\n            'tan2'=>array(238,154,73),\n            'tan3'=>array(205,133,63),\n            'tan4'=>array(139,90,43),\n            'chocolate1'=>array(255,127,36),\n            'chocolate2'=>array(238,118,33),\n            'chocolate3'=>array(205,102,29),\n            'chocolate4'=>array(139,69,19),\n            'firebrick1'=>array(255,48,48),\n            'firebrick2'=>array(238,44,44),\n            'firebrick3'=>array(205,38,38),\n            'firebrick4'=>array(139,26,26),\n            'brown1'=>array(255,64,64),\n            'brown2'=>array(238,59,59),\n            'brown3'=>array(205,51,51),\n            'brown4'=>array(139,35,35),\n            'salmon1'=>array(255,140,105),\n            'salmon2'=>array(238,130,98),\n            'salmon3'=>array(205,112,84),\n            'salmon4'=>array(139,76,57),\n            'lightsalmon1'=>array(255,160,122),\n            'lightsalmon2'=>array(238,149,114),\n            'lightsalmon3'=>array(205,129,98),\n            'lightsalmon4'=>array(139,87,66),\n            'orange1'=>array(255,165,0),\n            'orange2'=>array(238,154,0),\n            'orange3'=>array(205,133,0),\n            'orange4'=>array(139,90,0),\n            'darkorange1'=>array(255,127,0),\n            'darkorange2'=>array(238,118,0),\n            'darkorange3'=>array(205,102,0),\n            'darkorange4'=>array(139,69,0),\n            'coral1'=>array(255,114,86),\n            'coral2'=>array(238,106,80),\n            'coral3'=>array(205,91,69),\n            'coral4'=>array(139,62,47),\n            'tomato1'=>array(255,99,71),\n            'tomato2'=>array(238,92,66),\n            'tomato3'=>array(205,79,57),\n            'tomato4'=>array(139,54,38),\n            'orangered1'=>array(255,69,0),\n            'orangered2'=>array(238,64,0),\n            'orangered3'=>array(205,55,0),\n            'orangered4'=>array(139,37,0),\n            'deeppink1'=>array(255,20,147),\n            'deeppink2'=>array(238,18,137),\n            'deeppink3'=>array(205,16,118),\n            'deeppink4'=>array(139,10,80),\n            'hotpink1'=>array(255,110,180),\n            'hotpink2'=>array(238,106,167),\n            'hotpink3'=>array(205,96,144),\n            'hotpink4'=>array(139,58,98),\n            'pink1'=>array(255,181,197),\n            'pink2'=>array(238,169,184),\n            'pink3'=>array(205,145,158),\n            'pink4'=>array(139,99,108),\n            'lightpink1'=>array(255,174,185),\n            'lightpink2'=>array(238,162,173),\n            'lightpink3'=>array(205,140,149),\n            'lightpink4'=>array(139,95,101),\n            'palevioletred1'=>array(255,130,171),\n            'palevioletred2'=>array(238,121,159),\n            'palevioletred3'=>array(205,104,137),\n            'palevioletred4'=>array(139,71,93),\n            'maroon1'=>array(255,52,179),\n            'maroon2'=>array(238,48,167),\n            'maroon3'=>array(205,41,144),\n            'maroon4'=>array(139,28,98),\n            'violetred1'=>array(255,62,150),\n            'violetred2'=>array(238,58,140),\n            'violetred3'=>array(205,50,120),\n            'violetred4'=>array(139,34,82),\n            'magenta1'=>array(255,0,255),\n            'magenta2'=>array(238,0,238),\n            'magenta3'=>array(205,0,205),\n            'magenta4'=>array(139,0,139),\n            'mediumred'=>array(140,34,34),\n            'orchid1'=>array(255,131,250),\n            'orchid2'=>array(238,122,233),\n            'orchid3'=>array(205,105,201),\n            'orchid4'=>array(139,71,137),\n            'plum1'=>array(255,187,255),\n            'plum2'=>array(238,174,238),\n            'plum3'=>array(205,150,205),\n            'plum4'=>array(139,102,139),\n            'mediumorchid1'=>array(224,102,255),\n            'mediumorchid2'=>array(209,95,238),\n            'mediumorchid3'=>array(180,82,205),\n            'mediumorchid4'=>array(122,55,139),\n            'darkorchid1'=>array(191,62,255),\n            'darkorchid2'=>array(178,58,238),\n            'darkorchid3'=>array(154,50,205),\n            'darkorchid4'=>array(104,34,139),\n            'purple1'=>array(155,48,255),\n            'purple2'=>array(145,44,238),\n            'purple3'=>array(125,38,205),\n            'purple4'=>array(85,26,139),\n            'mediumpurple1'=>array(171,130,255),\n            'mediumpurple2'=>array(159,121,238),\n            'mediumpurple3'=>array(137,104,205),\n            'mediumpurple4'=>array(93,71,139),\n            'thistle1'=>array(255,225,255),\n            'thistle2'=>array(238,210,238),\n            'thistle3'=>array(205,181,205),\n            'thistle4'=>array(139,123,139),\n            'gray1'=>array(10,10,10),\n            'gray2'=>array(40,40,30),\n            'gray3'=>array(70,70,70),\n            'gray4'=>array(100,100,100),\n            'gray5'=>array(130,130,130),\n            'gray6'=>array(160,160,160),\n            'gray7'=>array(190,190,190),\n            'gray8'=>array(210,210,210),\n            'gray9'=>array(240,240,240),\n            'darkgray'=>array(100,100,100),\n            'darkblue'=>array(0,0,139),\n            'darkcyan'=>array(0,139,139),\n            'darkmagenta'=>array(139,0,139),\n            'darkred'=>array(139,0,0),\n            'silver'=>array(192, 192, 192),\n            'eggplant'=>array(144,176,168),\n            'lightgreen'=>array(144,238,144));\n    }\n\n\n    //----------------\n    // PUBLIC METHODS\n    // Colors can be specified as either\n    // 1. #xxxxxx   HTML style\n    // 2. \"colorname\"  as a named color\n    // 3. array(r,g,b) RGB triple\n    // This function translates this to a native RGB format and returns an\n    // RGB triple.\n\n    function Color($aColor) {\n        if (is_string($aColor)) {\n            $matches = array();\n            // this regex will parse a color string and fill the $matches array as such:\n            // 0: the full match if any\n            // 1: a hex string preceded by a hash, can be 3 characters (#fff) or 6 (#ffffff) (4 or 5 also accepted but...)\n            // 2,3,4: r,g,b values in hex if the first character of the string is #\n            // 5: all alpha-numeric characters at the beginning of the string if string does not start with #\n            // 6: alpha value prefixed by @ if supplied\n            // 7: alpha value with @ stripped\n            // 8: adjust value prefixed with : if supplied\n            // 9: adjust value with : stripped\n            $regex = '/(#([0-9a-fA-F]{1,2})([0-9a-fA-F]{1,2})([0-9a-fA-F]{1,2}))?([\\w]+)?(@([\\d\\.,]+))?(:([\\d\\.,]+))?/';\n            if(!preg_match($regex, $aColor, $matches)) {\n                JpGraphError::RaiseL(25078,$aColor);//(\" Unknown color: $aColor\");\n            }\n            if(empty($matches[5])) {\n                $r = strlen($matches[2]) == 1 ? $matches[2].$matches[2] : $matches[2];\n                $g = strlen($matches[3]) == 1 ? $matches[3].$matches[3] : $matches[3];\n                $b = strlen($matches[4]) == 1 ? $matches[4].$matches[4] : $matches[4];\n                $r = hexdec($r);\n                $g = hexdec($g);\n                $b = hexdec($b);\n            }else {\n                if(!isset($this->rgb_table[$matches[5]]) ) {\n                    JpGraphError::RaiseL(25078,$aColor);//(\" Unknown color: $aColor\");\n                }\n                $r = $this->rgb_table[$matches[5]][0];\n                $g = $this->rgb_table[$matches[5]][1];\n                $b = $this->rgb_table[$matches[5]][2];\n            }\n            $alpha\t= isset($matches[7]) ? str_replace(',','.',$matches[7]) : 0;\n            $adj\t= isset($matches[9]) ? str_replace(',','.',$matches[9]) : 1.0;\n\n            if( $adj < 0 ) {\n                JpGraphError::RaiseL(25077);//('Adjustment factor for color must be > 0');\n            }\n\n            // Scale adj so that an adj=2 always\n            // makes the color 100% white (i.e. 255,255,255.\n            // and adj=1 neutral and adj=0 black.\n            if( $adj == 1) {\n                return array($r,$g,$b,$alpha);\n            }\n            elseif( $adj > 1 ) {\n                $m = ($adj-1.0)*(255-min(255,min($r,min($g,$b))));\n                return array(min(255,$r+$m), min(255,$g+$m), min(255,$b+$m),$alpha);\n            }\n            elseif( $adj < 1 ) {\n                $m = ($adj-1.0)*max(255,max($r,max($g,$b)));\n                return array(max(0,$r+$m), max(0,$g+$m), max(0,$b+$m),$alpha);\n            }\n        } elseif( is_array($aColor) ) {\n            if(!isset($aColor[3])) $aColor[3] = 0;\n            return $aColor;\n        }\n        else {\n            JpGraphError::RaiseL(25079,$aColor,count($aColor));//(\" Unknown color specification: $aColor , size=\".count($aColor));\n        }\n    }\n\n    // Compare two colors\n    // return true if equal\n    function Equal($aCol1,$aCol2) {\n        $c1 = $this->Color($aCol1);\n        $c2 = $this->Color($aCol2);\n        return $c1[0]==$c2[0] && $c1[1]==$c2[1] && $c1[2]==$c2[2] ;\n    }\n\n    // Allocate a new color in the current image\n    // Return new color index, -1 if no more colors could be allocated\n    function Allocate($aColor,$aAlpha=0.0) {\n        list ($r, $g, $b, $a) = $this->color($aColor);\n        // If alpha is specified in the color string then this\n        // takes precedence over the second argument\n        if( $a > 0 ) {\n            $aAlpha = $a;\n        }\n        if( $aAlpha < 0 || $aAlpha > 1 ) {\n            JpGraphError::RaiseL(25080);//('Alpha parameter for color must be between 0.0 and 1.0');\n        }\n        return imagecolorresolvealpha($this->img, (int)$r, (int)$g, (int)$b, (int)round($aAlpha * 127));\n    }\n\n    // Try to convert an array with three valid numbers to the corresponding hex array\n    // This is currenly only used in processing the colors for barplots in order to be able\n    // to handle the case where the color might be specified as an array of colros as well.\n    // In that case we must be able to find out if an array of values should be interpretated as\n    // a single color (specifeid as an RGB triple)\n    static function tryHexConversion($aColor) {\n        if( is_array( $aColor ) ) {\n            if( count( $aColor ) == 3 ) {\n                if( is_numeric($aColor[0]) && is_numeric($aColor[1]) && is_numeric($aColor[2]) ) {\n                    if( ($aColor[0] >= 0 && $aColor[0] <= 255) &&\n                        ($aColor[1] >= 0 && $aColor[1] <= 255) &&\n                        ($aColor[2] >= 0 && $aColor[2] <= 255) ) {\n                        return sprintf('#%02x%02x%02x',$aColor[0],$aColor[1],$aColor[2]);\n                    }\n                }\n            }\n        }\n        return $aColor;\n    }\n\n    // Return a RGB tripple corresponding to a position in the normal light spectrum\n    // The argumen values is in the range [0, 1] where a value of 0 correponds to blue and\n    // a value of 1 corresponds to red. Values in betwen is mapped to a linear interpolation\n    // of the constituting colors in the visible color spectra.\n    // The $aDynamicRange specified how much of the dynamic range we shold use\n    // a value of 1.0 give the full dyanmic range and a lower value give more dark\n    // colors. In the extreme of 0.0 then all colors will be black.\n    static function GetSpectrum($aVal,$aDynamicRange=1.0) {\n        if( $aVal < 0 || $aVal > 1.0001 ) {\n            return array(0,0,0); // Invalid case - just return black\n        }\n\n        $sat = round(255*$aDynamicRange);\n        $a = 0.25;\n        if( $aVal <= 0.25 ) {\n            return array(0, round($sat*$aVal/$a), $sat);\n        }\n        elseif( $aVal <= 0.5 ) {\n            return array(0, $sat, round($sat-$sat*($aVal-0.25)/$a));\n        }\n        elseif( $aVal <= 0.75 ) {\n            return array(round($sat*($aVal-0.5)/$a), $sat, 0);\n        }\n        else {\n            return array($sat, round($sat-$sat*($aVal-0.75)/$a), 0);\n        }\n    }\n\n} // Class\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_scatter.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_SCATTER.PHP\n // Description: Scatter (and impuls) plot extension for JpGraph\n // Created:     2001-02-11\n // Ver:         $Id: jpgraph_scatter.php 1397 2009-06-27 21:34:14Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\nrequire_once ('jpgraph_plotmark.inc.php');\n\n//===================================================\n// CLASS FieldArrow\n// Description: Draw an arrow at (x,y) with angle a\n//===================================================\nclass FieldArrow {\n    public $iColor='black';\n    public $iSize=10;  // Length in pixels for  arrow\n    public $iArrowSize = 2;\n    private $isizespec = array(\n    \tarray(2,1),array(3,2),array(4,3),array(6,4),array(7,4),array(8,5),array(10,6),array(12,7),array(16,8),array(20,10)\n    \t);\n    function __construct() {\n    \t// Empty\n    }\n\n    function SetSize($aSize,$aArrowSize=2) {\n        $this->iSize = $aSize;\n        $this->iArrowSize = $aArrowSize;\n    }\n\n    function SetColor($aColor) {\n        $this->iColor = $aColor;\n    }\n\n    function Stroke($aImg,$x,$y,$a) {\n        // First rotate the center coordinates\n        list($x,$y) = $aImg->Rotate($x,$y);\n\n        $old_origin = $aImg->SetCenter($x,$y);\n        $old_a = $aImg->a;\n        $aImg->SetAngle(-$a+$old_a);\n\n        $dx = round($this->iSize/2);\n        $c = array($x-$dx,$y,$x+$dx,$y);\n        $x += $dx;\n\n        list($dx,$dy) = $this->isizespec[$this->iArrowSize];\n        $ca = array($x,$y,$x-$dx,$y-$dy,$x-$dx,$y+$dy,$x,$y);\n\n        $aImg->SetColor($this->iColor);\n        $aImg->Polygon($c);\n        $aImg->FilledPolygon($ca);\n\n        $aImg->SetCenter($old_origin[0],$old_origin[1]);\n        $aImg->SetAngle($old_a);\n    }\n}\n\n//===================================================\n// CLASS FieldPlot\n// Description: Render a field plot\n//===================================================\nclass FieldPlot extends Plot {\n    public $arrow = '';\n    private $iAngles = array();\n    private $iCallback = '';\n\n    function __construct($datay,$datax,$angles) {\n        if( (count($datax) != count($datay)) )\n        JpGraphError::RaiseL(20001);//(\"Fieldplots must have equal number of X and Y points.\");\n        if( (count($datax) != count($angles)) )\n        JpGraphError::RaiseL(20002);//(\"Fieldplots must have an angle specified for each X and Y points.\");\n\n        $this->iAngles = $angles;\n\n        parent::__construct($datay,$datax);\n        $this->value->SetAlign('center','center');\n        $this->value->SetMargin(15);\n\n        $this->arrow = new FieldArrow();\n    }\n\n    function SetCallback($aFunc) {\n        $this->iCallback = $aFunc;\n    }\n\n    function Stroke($img,$xscale,$yscale) {\n\n        // Remeber base color and size\n        $bc = $this->arrow->iColor;\n        $bs = $this->arrow->iSize;\n        $bas = $this->arrow->iArrowSize;\n\n        for( $i=0; $i<$this->numpoints; ++$i ) {\n            // Skip null values\n            if( $this->coords[0][$i]===\"\" )\n            continue;\n\n            $f = $this->iCallback;\n            if( $f != \"\" ) {\n                list($cc,$cs,$cas) = call_user_func($f,$this->coords[1][$i],$this->coords[0][$i],$this->iAngles[$i]);\n                // Fall back on global data if the callback isn't set\n                if( $cc  == \"\" ) $cc = $bc;\n                if( $cs  == \"\" ) $cs = $bs;\n                if( $cas == \"\" ) $cas = $bas;\n                $this->arrow->SetColor($cc);\n                $this->arrow->SetSize($cs,$cas);\n            }\n\n            $xt = $xscale->Translate($this->coords[1][$i]);\n            $yt = $yscale->Translate($this->coords[0][$i]);\n\n            $this->arrow->Stroke($img,$xt,$yt,$this->iAngles[$i]);\n            $this->value->Stroke($img,$this->coords[0][$i],$xt,$yt);\n        }\n    }\n\n    // Framework function\n    function Legend($aGraph) {\n        if( $this->legend != \"\" ) {\n            $aGraph->legend->Add($this->legend,$this->mark->fill_color,$this->mark,0,\n            $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);\n        }\n    }\n}\n\n//===================================================\n// CLASS ScatterPlot\n// Description: Render X and Y plots\n//===================================================\nclass ScatterPlot extends Plot {\n    public $mark,$link;\n    private $impuls = false;\n    //---------------\n    // CONSTRUCTOR\n    function __construct($datay,$datax=false) {\n        if( is_array($datax) && (count($datax) != count($datay)) ) {\n        \tJpGraphError::RaiseL(20003);//(\"Scatterplot must have equal number of X and Y points.\");\n        }\n        parent::__construct($datay,$datax);\n        $this->mark = new PlotMark();\n        $this->mark->SetType(MARK_SQUARE);\n        $this->mark->SetColor($this->color);\n        $this->value->SetAlign('center','center');\n        $this->value->SetMargin(0);\n        $this->link = new LineProperty(1,'black','solid');\n        $this->link->iShow = false;\n    }\n\n    //---------------\n    // PUBLIC METHODS\n    function SetImpuls($f=true) {\n        $this->impuls = $f;\n    }\n\n    function SetStem($f=true) {\n        $this->impuls = $f;\n    }\n\n    // Combine the scatter plot points with a line\n    function SetLinkPoints($aFlag=true,$aColor=\"black\",$aWeight=1,$aStyle='solid') {\n    \t$this->link->iShow = $aFlag;\n    \t$this->link->iColor = $aColor;\n    \t$this->link->iWeight = $aWeight;\n    \t$this->link->iStyle = $aStyle;\n    }\n\n    function Stroke($img,$xscale,$yscale) {\n\n        $ymin=$yscale->scale_abs[0];\n        if( $yscale->scale[0] < 0 )\n        $yzero=$yscale->Translate(0);\n        else\n        $yzero=$yscale->scale_abs[0];\n\n        $this->csimareas = '';\n        for( $i=0; $i<$this->numpoints; ++$i ) {\n\n            // Skip null values\n            if( $this->coords[0][$i]==='' || $this->coords[0][$i]==='-' || $this->coords[0][$i]==='x')\n            continue;\n\n            if( isset($this->coords[1]) )\n            $xt = $xscale->Translate($this->coords[1][$i]);\n            else\n            $xt = $xscale->Translate($i);\n            $yt = $yscale->Translate($this->coords[0][$i]);\n\n\n            if( $this->link->iShow && isset($yt_old) ) {\n                $img->SetColor($this->link->iColor);\n                $img->SetLineWeight($this->link->iWeight);\n                $old = $img->SetLineStyle($this->link->iStyle);\n                $img->StyleLine($xt_old,$yt_old,$xt,$yt);\n                $img->SetLineStyle($old);\n            }\n\n            if( $this->impuls ) {\n                $img->SetColor($this->color);\n                $img->SetLineWeight($this->weight);\n                $img->Line($xt,$yzero,$xt,$yt);\n            }\n\n            if( !empty($this->csimtargets[$i]) ) {\n                if( !empty($this->csimwintargets[$i]) ) {\n                    $this->mark->SetCSIMTarget($this->csimtargets[$i],$this->csimwintargets[$i]);\n                }\n                else {\n                    $this->mark->SetCSIMTarget($this->csimtargets[$i]);\n                }\n                $this->mark->SetCSIMAlt($this->csimalts[$i]);\n            }\n\n            if( isset($this->coords[1]) ) {\n                $this->mark->SetCSIMAltVal($this->coords[0][$i],$this->coords[1][$i]);\n            }\n            else {\n                $this->mark->SetCSIMAltVal($this->coords[0][$i],$i);\n            }\n\n            $this->mark->Stroke($img,$xt,$yt);\n\n            $this->csimareas .= $this->mark->GetCSIMAreas();\n            $this->value->Stroke($img,$this->coords[0][$i],$xt,$yt);\n\n            $xt_old = $xt;\n            $yt_old = $yt;\n        }\n    }\n\n    // Framework function\n    function Legend($aGraph) {\n        if( $this->legend != \"\" ) {\n            $aGraph->legend->Add($this->legend,$this->mark->fill_color,$this->mark,0,\n            $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);\n        }\n    }\n} // Class\n/* EOF */\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_stock.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_STOCK.PHP\n // Description: Stock plot extension for JpGraph\n // Created:     2003-01-27\n // Ver:         $Id: jpgraph_stock.php 1364 2009-06-24 07:07:44Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\n//===================================================\n// CLASS StockPlot\n//===================================================\nclass StockPlot extends Plot {\n    protected $iTupleSize = 4;\n    private $iWidth=9;\n    private $iEndLines=1;\n    private $iStockColor1='white',$iStockColor2='darkred',$iStockColor3='darkred';\n    //---------------\n    // CONSTRUCTOR\n    function __construct($datay,$datax=false) {\n        if( count($datay) % $this->iTupleSize ) {\n            JpGraphError::RaiseL(21001,$this->iTupleSize);\n            //('Data values for Stock charts must contain an even multiple of '.$this->iTupleSize.' data points.');\n        }\n        parent::__construct($datay,$datax);\n        $this->numpoints /= $this->iTupleSize;\n    }\n    //---------------\n    // PUBLIC METHODS\n\n    function SetColor($aColor,$aColor1='white',$aColor2='darkred',$aColor3='darkred') {\n        $this->color = $aColor;\n        $this->iStockColor1 = $aColor1;\n        $this->iStockColor2 = $aColor2;\n        $this->iStockColor3 = $aColor3;\n    }\n\n    function SetWidth($aWidth) {\n        // Make sure it's odd\n        $this->iWidth = 2*floor($aWidth/2)+1;\n    }\n\n    function HideEndLines($aHide=true) {\n        $this->iEndLines = !$aHide;\n    }\n\n    // Gets called before any axis are stroked\n    function PreStrokeAdjust($graph) {\n        if( $this->center ) {\n            $a=0.5; $b=0.5;\n            $this->numpoints++;\n        } else {\n            $a=0; $b=0;\n        }\n        $graph->xaxis->scale->ticks->SetXLabelOffset($a);\n        $graph->SetTextScaleOff($b);\n    }\n\n    // Method description\n    function Stroke($img,$xscale,$yscale) {\n        $n=$this->numpoints;\n        if( $this->center ) $n--;\n        if( isset($this->coords[1]) ) {\n            if( count($this->coords[1])!=$n ) {\n                JpGraphError::RaiseL(2003,count($this->coords[1]),$n);\n                // (\"Number of X and Y points are not equal. Number of X-points:\".count($this->coords[1]).\" Number of Y-points:$numpoints\");\n            }\n            else {\n                $exist_x = true;\n            }\n        }\n        else {\n            $exist_x = false;\n        }\n\n        if( $exist_x ) {\n            $xs=$this->coords[1][0];\n        }\n        else {\n            $xs=0;\n        }\n\n        $ts = $this->iTupleSize;\n        $this->csimareas = '';\n        for( $i=0; $i<$n; ++$i) {\n\n            //If value is NULL, then don't draw a bar at all\n            if ($this->coords[0][$i*$ts] === null) continue;\n\n            if( $exist_x ) {\n                $x=$this->coords[1][$i];\n\t\t\t\tif ($x === null) continue;\n            }\n            else {\n                $x=$i;\n            }\n            $xt = $xscale->Translate($x);\n\n            $neg = $this->coords[0][$i*$ts] > $this->coords[0][$i*$ts+1] ;\n            $yopen  = $yscale->Translate($this->coords[0][$i*$ts]);\n            $yclose = $yscale->Translate($this->coords[0][$i*$ts+1]);\n            $ymin   = $yscale->Translate($this->coords[0][$i*$ts+2]);\n            $ymax   = $yscale->Translate($this->coords[0][$i*$ts+3]);\n\n            $dx = floor($this->iWidth/2);\n            $xl = $xt - $dx;\n            $xr = $xt + $dx;\n\n            if( $neg ) {\n                $img->SetColor($this->iStockColor3);\n            }\n            else {\n                $img->SetColor($this->iStockColor1);\n            }\n            $img->FilledRectangle($xl,$yopen,$xr,$yclose);\n            $img->SetLineWeight($this->weight);\n            if( $neg ) {\n                $img->SetColor($this->iStockColor2);\n            }\n            else {\n                $img->SetColor($this->color);\n            }\n\n            $img->Rectangle($xl,$yopen,$xr,$yclose);\n\n            if( $yopen < $yclose ) {\n                $ytop = $yopen ;\n                $ybottom = $yclose ;\n            }\n            else {\n                $ytop = $yclose ;\n                $ybottom = $yopen ;\n            }\n            $img->SetColor($this->color);\n            $img->Line($xt,$ytop,$xt,$ymax);\n            $img->Line($xt,$ybottom,$xt,$ymin);\n\n            if( $this->iEndLines ) {\n                $img->Line($xl,$ymax,$xr,$ymax);\n                $img->Line($xl,$ymin,$xr,$ymin);\n            }\n\n            // A chance for subclasses to add things to the bar\n            // for data point i\n            $this->ModBox($img,$xscale,$yscale,$i,$xl,$xr,$neg);\n\n            // Setup image maps\n            if( !empty($this->csimtargets[$i]) ) {\n                $this->csimareas.= '<area shape=\"rect\" coords=\"'.\n                round($xl).','.round($ytop).','.\n                round($xr).','.round($ybottom).'\" ';\n                $this->csimareas .= ' href=\"'.$this->csimtargets[$i].'\"';\n                if( !empty($this->csimalts[$i]) ) {\n                    $sval=$this->csimalts[$i];\n                    $this->csimareas .= \" title=\\\"$sval\\\" alt=\\\"$sval\\\" \";\n                }\n                $this->csimareas.= \"  />\\n\";\n            }\n        }\n        return true;\n    }\n\n    // A hook for subclasses to modify the plot\n    function ModBox($img,$xscale,$yscale,$i,$xl,$xr,$neg) {}\n\n} // Class\n\n//===================================================\n// CLASS BoxPlot\n//===================================================\nclass BoxPlot extends StockPlot {\n    private $iPColor='black',$iNColor='white';\n\n    function __construct($datay,$datax=false) {\n        $this->iTupleSize=5;\n        parent::__construct($datay,$datax);\n    }\n\n    function SetMedianColor($aPos,$aNeg) {\n        $this->iPColor = $aPos;\n        $this->iNColor = $aNeg;\n    }\n\n    function ModBox($img,$xscale,$yscale,$i,$xl,$xr,$neg) {\n        if( $neg )\n        $img->SetColor($this->iNColor);\n        else\n        $img->SetColor($this->iPColor);\n\n        $y = $yscale->Translate($this->coords[0][$i*5+4]);\n        $img->Line($xl,$y,$xr,$y);\n    }\n}\n\n/* EOF */\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_table.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_TABLE.PHP\n // Description: Classes to create basic tables of data\n // Created:     2006-01-25\n // Ver:         $Id: jpgraph_table.php 1514 2009-07-07 11:15:58Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\n// Style of grid lines in table\nDEFINE('TGRID_SINGLE',1);\nDEFINE('TGRID_DOUBLE',2);\nDEFINE('TGRID_DOUBLE2',3);\n\n// Type of constrain for image constrain\nDEFINE('TIMG_WIDTH',1);\nDEFINE('TIMG_HEIGHT',2);\n\n//---------------------------------------------------------------------\n// CLASS GTextTableCell\n// Description:\n// Internal class that represents each cell in the table\n//---------------------------------------------------------------------\nclass GTextTableCell {\n    public $iColSpan=1,$iRowSpan=1;\n    public $iMarginLeft=5,$iMarginRight=5,$iMarginTop=5,$iMarginBottom=5;\n    public $iVal=NULL;\n    private $iBGColor='', $iFontColor='black';\n    private $iFF=FF_FONT1,$iFS=FS_NORMAL,$iFSize=10;\n    private $iRow=0, $iCol=0;\n    private $iVertAlign = 'bottom', $iHorAlign = 'left';\n    private $iMerged=FALSE,$iPRow=NULL,$iPCol=NULL;\n    private $iTable=NULL;\n    private $iGridColor=array('darkgray','darkgray','darkgray','darkgray');\n    private $iGridWeight=array(1,1,0,0); // left,top,bottom,right;\n    private $iGridStyle=array(TGRID_SINGLE,TGRID_SINGLE,TGRID_SINGLE,TGRID_SINGLE); // left,top,bottom,right;\n    private $iNumberFormat=null;\n    private $iIcon=null, $iIconConstrain=array();\n    private $iCSIMtarget = '',$iCSIMwintarget = '', $iCSIMalt = '', $iCSIMArea = '';\n\n    function __construct($aVal='',$aRow=0,$aCol=0) {\n        $this->iVal = new Text($aVal);\n        $this->iRow = $aRow;\n        $this->iCol = $aCol;\n        $this->iPRow = $aRow; // Initialiy each cell is its own parent\n        $this->iPCol = $aCol;\n        $this->iIconConstrain = array(-1,-1);\n    }\n\n    function Init($aTable) {\n        $this->iTable = $aTable;\n    }\n\n    function SetCSIMTarget($aTarget,$aAlt='',$aWinTarget='') {\n        $this->iCSIMtarget = $aTarget;\n        $this->iCSIMwintarget = $aWinTarget;\n        $this->iCSIMalt = $aAlt;\n    }\n\n    function GetCSIMArea() {\n        if( $this->iCSIMtarget !== '' )\n        return $this->iCSIMArea;\n        else\n        return '';\n    }\n\n    function SetImageConstrain($aType,$aVal) {\n        if( !in_array($aType,array(TIMG_WIDTH, TIMG_HEIGHT)) ) {\n            JpGraphError::RaiseL(27015);\n        }\n        $this->iIconConstrain = array($aType,$aVal);\n    }\n\n    function SetCountryFlag($aFlag,$aScale=1.0,$aMix=100,$aStdSize=3) {\n        $this->iIcon = new IconPlot();\n        $this->iIcon->SetCountryFlag($aFlag,0,0,$aScale,$aMix,$aStdSize);\n    }\n\n    function SetImage($aFile,$aScale=1.0,$aMix=100) {\n        $this->iIcon = new IconPlot($aFile,0,0,$aScale,$aMix);\n    }\n\n    function SetImageFromString($aStr,$aScale=1.0,$aMix=100) {\n        $this->iIcon = new IconPlot(\"\",0,0,$aScale,$aMix);\n        $this->iIcon->CreateFromString($aStr);\n    }\n\n    function SetRowColSpan($aRowSpan,$aColSpan) {\n        $this->iRowSpan = $aRowSpan;\n        $this->iColSpan = $aColSpan;\n        $this->iMerged = true;\n    }\n\n    function SetMerged($aPRow,$aPCol,$aFlg=true) {\n        $this->iMerged = $aFlg;\n        $this->iPRow=$aPRow;\n        $this->iPCol=$aPCol;\n    }\n\n    function IsMerged() {\n        return $this->iMerged;\n    }\n\n    function SetNumberFormat($aF) {\n        $this->iNumberFormat = $aF;\n    }\n\n    function Set($aTxt) {\n        $this->iVal->Set($aTxt);\n    }\n\n    function SetFont($aFF,$aFS,$aFSize) {\n        $this->iFF = $aFF;\n        $this->iFS = $aFS;\n        $this->iFSize = $aFSize;\n        $this->iVal->SetFont($aFF,$aFS,$aFSize);\n    }\n\n    function SetFillColor($aColor) {\n        $this->iBGColor=$aColor;\n    }\n\n    function SetFontColor($aColor) {\n        $this->iFontColor=$aColor;\n    }\n\n    function SetGridColor($aLeft,$aTop=null,$aBottom=null,$aRight=null) {\n        if( $aLeft !== null ) $this->iGridColor[0] = $aLeft;\n        if( $aTop !== null ) $this->iGridColor[1] = $aTop;\n        if( $aBottom !== null ) $this->iGridColor[2] = $aBottom;\n        if( $aRight !== null )$this->iGridColor[3] = $aRight;\n    }\n\n    function SetGridStyle($aLeft,$aTop=null,$aBottom=null,$aRight=null) {\n        if( $aLeft !== null ) $this->iGridStyle[0] = $aLeft;\n        if( $aTop !== null ) $this->iGridStyle[1] = $aTop;\n        if( $aBottom !== null ) $this->iGridStyle[2] = $aBottom;\n        if( $aRight !== null )$this->iGridStyle[3] = $aRight;\n    }\n\n    function SetGridWeight($aLeft=null,$aTop=null,$aBottom=null,$aRight=null) {\n        $weight_arr = array($aLeft, $aTop, $aBottom, $aRight);\n        for ($i = 0; $i < count($weight_arr); $i++) {\n            if ($weight_arr[$i] === \"\") {\n                $weight_arr[$i] = 0;\n            }\n        }\n        if( $aLeft !== null ) $this->iGridWeight[0] = $weight_arr[0];\n        if( $aTop !== null ) $this->iGridWeight[1] = $weight_arr[1];\n        if( $aBottom !== null ) $this->iGridWeight[2] = $weight_arr[2];\n        if( $aRight !== null ) $this->iGridWeight[3] = $weight_arr[3];\n    }\n\n    function SetMargin($aLeft,$aRight,$aTop,$aBottom) {\n        $this->iMarginLeft=$aLeft;\n        $this->iMarginRight=$aRight;\n        $this->iMarginTop=$aTop;\n        $this->iMarginBottom=$aBottom;\n    }\n\n    function GetWidth($aImg) {\n        if( $this->iIcon !== null ) {\n            if( $this->iIconConstrain[0] == TIMG_WIDTH ) {\n            \t$this->iIcon->SetScale(1);\n            \t$tmp = $this->iIcon->GetWidthHeight();\n                $this->iIcon->SetScale($this->iIconConstrain[1]/$tmp[0]);\n            }\n            elseif( $this->iIconConstrain[0] == TIMG_HEIGHT ) {\n            \t$this->iIcon->SetScale(1);\n            \t$tmp = $this->iIcon->GetWidthHeight();\n                $this->iIcon->SetScale($this->iIconConstrain[1]/$tmp[1]);\n            }\n            $tmp = $this->iIcon->GetWidthHeight();\n            $iwidth = $tmp[0];\n        }\n        else {\n            $iwidth=0;\n        }\n        if( $this->iTable->iCells[$this->iPRow][$this->iPCol]->iVal->dir == 0 ) {\n            $pwidth = $this->iTable->iCells[$this->iPRow][$this->iPCol]->iVal->GetWidth($aImg);\n        }\n        elseif( $this->iTable->iCells[$this->iPRow][$this->iPCol]->iVal->dir == 90 ) {\n            $pwidth = $this->iTable->iCells[$this->iPRow][$this->iPCol]->iVal->GetFontHeight($aImg)+2;\n        }\n        else {\n            $pwidth = $this->iTable->iCells[$this->iPRow][$this->iPCol]->iVal->GetWidth($aImg)+2;\n        }\n\n        $pcolspan = $this->iTable->iCells[$this->iPRow][$this->iPCol]->iColSpan;\n        return round(max($iwidth,$pwidth)/$pcolspan) + $this->iMarginLeft + $this->iMarginRight;\n    }\n\n    function GetHeight($aImg) {\n        if( $this->iIcon !== null ) {\n            if( $this->iIconConstrain[0] == TIMG_WIDTH ) {\n            \t$this->iIcon->SetScale(1);\n            \t$tmp = $this->iIcon->GetWidthHeight();\n            \t$this->iIcon->SetScale($this->iIconConstrain[1]/$tmp[0]);\n            }\n            elseif( $this->iIconConstrain[0] == TIMG_HEIGHT ) {\n            \t$this->iIcon->SetScale(1);\n            \t$tmp = $this->iIcon->GetWidthHeight();\n                $this->iIcon->SetScale($this->iIconConstrain[1]/$tmp[1]);\n            }\n            $tmp = $this->iIcon->GetWidthHeight();\n            $iheight =  $tmp[1];\n        }\n        else {\n            $iheight = 0;\n        }\n        if( $this->iTable->iCells[$this->iPRow][$this->iPCol]->iVal->dir == 0 ) {\n            $pheight = $this->iTable->iCells[$this->iPRow][$this->iPCol]->iVal->GetHeight($aImg);\n        }\n        else {\n            $pheight = $this->iTable->iCells[$this->iPRow][$this->iPCol]->iVal->GetHeight($aImg)+1;\n        }\n        $prowspan = $this->iTable->iCells[$this->iPRow][$this->iPCol]->iRowSpan;\n        return round(max($iheight,$pheight)/$prowspan) + $this->iMarginTop + $this->iMarginBottom;\n    }\n\n    function SetAlign($aHorAlign='left',$aVertAlign='bottom') {\n        $aHorAlign = strtolower($aHorAlign);\n        $aVertAlign = strtolower($aVertAlign);\n        $chk = array('left','right','center','bottom','top','middle');\n        if( !in_array($aHorAlign,$chk) || !in_array($aVertAlign,$chk) ) {\n            JpGraphError::RaiseL(27011,$aHorAlign,$aVertAlign);\n        }\n        $this->iVertAlign = $aVertAlign;\n        $this->iHorAlign = $aHorAlign;\n    }\n\n    function AdjustMarginsForGrid() {\n        if( $this->iCol > 0 ) {\n            switch( $this->iGridStyle[0] ) {\n                case TGRID_SINGLE:  $wf=1;  break;\n                case TGRID_DOUBLE:  $wf=3;  break;\n                case TGRID_DOUBLE2: $wf=4;  break;\n            }\n            $this->iMarginLeft += $this->iGridWeight[0]*$wf;\n        }\n        if( $this->iRow > 0 ) {\n            switch( $this->iGridStyle[1] ) {\n                case TGRID_SINGLE:  $wf=1;  break;\n                case TGRID_DOUBLE:  $wf=3;  break;\n                case TGRID_DOUBLE2: $wf=4;  break;\n            }\n            $this->iMarginTop += $this->iGridWeight[1]*$wf;\n        }\n        if( $this->iRow+$this->iRowSpan-1 < $this->iTable->iSize[0]-1 ) {\n            switch( $this->iGridStyle[2] ) {\n                case TGRID_SINGLE: $wf=1; break;\n                case TGRID_DOUBLE: $wf=3; break;\n                case TGRID_DOUBLE2: $wf=4; break;\n            }\n            $this->iMarginBottom += $this->iGridWeight[2]*$wf;\n        }\n        if( $this->iCol+$this->iColSpan-1 < $this->iTable->iSize[1]-1 ) {\n            switch( $this->iGridStyle[3] ) {\n                case TGRID_SINGLE: $wf=1; break;\n                case TGRID_DOUBLE: $wf=3; break;\n                case TGRID_DOUBLE2: $wf=4; break;\n            }\n            $this->iMarginRight += $this->iGridWeight[3]*$wf;\n        }\n    }\n\n    function StrokeVGrid($aImg,$aX,$aY,$aWidth,$aHeight,$aDir=1) {\n        // Left or right grid line\n        // For the right we increase the X-pos and for the right we decrease it. This is\n        // determined by the direction argument.\n        $idx = $aDir==1 ? 0 : 3;\n\n        // We don't stroke the grid lines that are on the edge of the table since this is\n        // the place of the border.\n        if( ( ($this->iCol > 0 && $idx==0) || ($this->iCol+$this->iColSpan-1 < $this->iTable->iSize[1]-1 && $idx==3) )\n        && $this->iGridWeight[$idx] > 0 ) {\n            $x = $aDir==1 ? $aX : $aX + $aWidth-1;\n            $y = $aY+$aHeight-1;\n            $aImg->SetColor($this->iGridColor[$idx]);\n            switch( $this->iGridStyle[$idx] ) {\n                case TGRID_SINGLE:\n                    for( $i=0; $i < $this->iGridWeight[$idx]; ++$i )\n                    $aImg->Line($x+$i*$aDir,$aY, $x+$i*$aDir,$y);\n                    break;\n\n                case TGRID_DOUBLE:\n                    for( $i=0; $i < $this->iGridWeight[$idx]; ++$i )\n                    $aImg->Line($x+$i*$aDir,$aY, $x+$i*$aDir,$y);\n                    $x += $this->iGridWeight[$idx]*2;\n                    for( $i=0; $i < $this->iGridWeight[$idx]; ++$i )\n                    $aImg->Line($x+$i*$aDir,$aY, $x+$i*$aDir,$y);\n                    break;\n\n                case TGRID_DOUBLE2:\n                    for( $i=0; $i < $this->iGridWeight[$idx]*2; ++$i )\n                    $aImg->Line($x+$i*$aDir,$aY,$x+$i*$aDir,$y);\n                    $x += $this->iGridWeight[$idx]*3;\n                    for( $i=0; $i < $this->iGridWeight[$idx]; ++$i )\n                    $aImg->Line($x+$i*$aDir,$aY, $x+$i*$aDir,$y);\n                    break;\n            }\n        }\n    }\n\n    function StrokeHGrid($aImg,$aX,$aY,$aWidth,$aHeight,$aDir=1) {\n        // Top or bottom grid line\n        // For the left we increase the X-pos and for the right we decrease it. This is\n        // determined by the direction argument.\n        $idx = $aDir==1 ? 1 : 2;\n\n        // We don't stroke the grid lines that are on the edge of the table since this is\n        // the place of the border.\n        if( ( ($this->iRow > 0 && $idx==1) || ($this->iRow+$this->iRowSpan-1 < $this->iTable->iSize[0]-1 && $idx==2) )\n        && $this->iGridWeight[$idx] > 0) {\n            $y = $aDir==1 ? $aY : $aY+$aHeight-1;\n            $x = $aX+$aWidth-1;\n            $aImg->SetColor($this->iGridColor[$idx]);\n            switch( $this->iGridStyle[$idx] ) {\n                case TGRID_SINGLE:\n                    for( $i=0; $i < $this->iGridWeight[$idx]; ++$i )\n                    $aImg->Line($aX,$y+$i, $x,$y+$i);\n                    break;\n\n                case TGRID_DOUBLE:\n                    for( $i=0; $i < $this->iGridWeight[$idx]; ++$i )\n                    $aImg->Line($aX,$y+$i, $x,$y+$i);\n                    $y += $this->iGridWeight[$idx]*2;\n                    for( $i=0; $i < $this->iGridWeight[$idx]; ++$i )\n                    $aImg->Line($aX,$y+$i, $x,$y+$i);\n                    break;\n\n                case TGRID_DOUBLE2:\n                    for( $i=0; $i < $this->iGridWeight[$idx]*2; ++$i )\n                    $aImg->Line($aX,$y+$i, $x,$y+$i);\n                    $y += $this->iGridWeight[$idx]*3;\n                    for( $i=0; $i < $this->iGridWeight[$idx]; ++$i )\n                    $aImg->Line($aX,$y+$i, $x,$y+$i);\n                    break;\n            }\n        }\n    }\n\n    function Stroke($aImg,$aX,$aY,$aWidth,$aHeight) {\n        // If this is a merged cell we only stroke if it is the parent cell.\n        // The parent cell holds the merged cell block\n        if( $this->iMerged && ($this->iRow != $this->iPRow || $this->iCol != $this->iPCol) ) {\n            return;\n        }\n\n        if( $this->iBGColor != '' ) {\n            $aImg->SetColor($this->iBGColor);\n            $aImg->FilledRectangle($aX,$aY,$aX+$aWidth-1,$aY+$aHeight-1);\n        }\n\n        $coords = $aX.','.$aY.','.($aX+$aWidth-1).','.$aY.','.($aX+$aWidth-1).','.($aY+$aHeight-1).','.$aX.','.($aY+$aHeight-1);\n        if( ! empty($this->iCSIMtarget) ) {\n            $this->iCSIMArea = '<area shape=\"poly\" coords=\"'.$coords.'\" href=\"'.$this->iCSIMtarget.'\"';\n            if( ! empty($this->iCSIMwintarget) ) {\n                $this->iCSIMArea .= \" target=\\\"\".$this->iCSIMwintarget.\"\\\"\";\n            }\n            if( ! empty($this->iCSIMalt) ) {\n                $this->iCSIMArea .= ' alt=\"'.$this->iCSIMalt.'\" title=\"'.$this->iCSIMalt.\"\\\" \";\n            }\n            $this->iCSIMArea .= \" />\\n\";\n        }\n\n        $this->StrokeVGrid($aImg,$aX,$aY,$aWidth,$aHeight);\n        $this->StrokeVGrid($aImg,$aX,$aY,$aWidth,$aHeight,-1);\n        $this->StrokeHGrid($aImg,$aX,$aY,$aWidth,$aHeight);\n        $this->StrokeHGrid($aImg,$aX,$aY,$aWidth,$aHeight,-1);\n\n        if( $this->iIcon !== null ) {\n            switch( $this->iHorAlign ) {\n                case 'left':\n                    $x = $aX+$this->iMarginLeft;\n                    $hanchor='left';\n                    break;\n                case 'center':\n                case 'middle':\n                    $x = $aX+$this->iMarginLeft+round(($aWidth-$this->iMarginLeft-$this->iMarginRight)/2);\n                    $hanchor='center';\n                    break;\n                case 'right':\n                    $x = $aX+$aWidth-$this->iMarginRight-1;\n                    $hanchor='right';\n                    break;\n                default:\n                    JpGraphError::RaiseL(27012,$this->iHorAlign);\n            }\n\n            switch( $this->iVertAlign ) {\n                case 'top':\n                    $y = $aY+$this->iMarginTop;\n                    $vanchor='top';\n                    break;\n                case 'center':\n                case 'middle':\n                    $y = $aY+$this->iMarginTop+round(($aHeight-$this->iMarginTop-$this->iMarginBottom)/2);\n                    $vanchor='center';\n                    break;\n                case 'bottom':\n                    $y = $aY+$aHeight-1-$this->iMarginBottom;\n                    $vanchor='bottom';\n                    break;\n                default:\n                    JpGraphError::RaiseL(27012,$this->iVertAlign);\n            }\n            $this->iIcon->SetAnchor($hanchor,$vanchor);\n            $this->iIcon->_Stroke($aImg,$x,$y);\n        }\n        $this->iVal->SetColor($this->iFontColor);\n        $this->iVal->SetFont($this->iFF,$this->iFS,$this->iFSize);\n        switch( $this->iHorAlign ) {\n            case 'left':\n                $x = $aX+$this->iMarginLeft;\n                break;\n            case 'center':\n            case 'middle':\n                $x = $aX+$this->iMarginLeft+round(($aWidth-$this->iMarginLeft-$this->iMarginRight)/2);\n                break;\n            case 'right':\n                $x = $aX+$aWidth-$this->iMarginRight-1;\n                break;\n            default:\n                JpGraphError::RaiseL(27012,$this->iHorAlign);\n        }\n        // A workaround for the shortcomings in the TTF font handling in GD\n        // The anchor position for rotated text (=90) is to \"short\" so we add\n        // an offset based on the actual font size\n        if( $this->iVal->dir != 0 && $this->iVal->font_family >= 10 ) {\n            $aY += 4 + round($this->iVal->font_size*0.8);\n        }\n        switch( $this->iVertAlign ) {\n            case 'top':\n                $y = $aY+$this->iMarginTop;\n                break;\n            case 'center':\n            case 'middle':\n                $y = $aY+$this->iMarginTop+round(($aHeight-$this->iMarginTop-$this->iMarginBottom)/2);\n                //$y -= round($this->iVal->GetFontHeight($aImg)/2);\n                $y -= round($this->iVal->GetHeight($aImg)/2);\n                break;\n            case 'bottom':\n                //$y = $aY+$aHeight-1-$this->iMarginBottom-$this->iVal->GetFontHeight($aImg);\n                $y = $aY+$aHeight-$this->iMarginBottom-$this->iVal->GetHeight($aImg);\n                break;\n            default:\n                JpGraphError::RaiseL(27012,$this->iVertAlign);\n        }\n        $this->iVal->SetAlign($this->iHorAlign,'top');\n        if( $this->iNumberFormat !== null && is_numeric($this->iVal->t) ) {\n            $this->iVal->t = sprintf($this->iNumberFormat,$this->iVal->t);\n        }\n        $this->iVal->Stroke($aImg,$x,$y);\n    }\n}\n\n//---------------------------------------------------------------------\n// CLASS GTextTable\n// Description:\n// Graphic text table\n//---------------------------------------------------------------------\nclass GTextTable {\n    public $iCells = array(), $iSize=array(0,0); // Need to be public since they are used by the cell\n    private $iWidth=0, $iHeight=0;\n    private $iColWidth=NULL,$iRowHeight=NULL;\n    private $iImg=NULL;\n    private $iXPos=0, $iYPos=0;\n    private $iScaleXPos=null,$iScaleYPos=null;\n    private $iBGColor='';\n    private $iBorderColor='black',$iBorderWeight=1;\n    private $iInit=false;\n    private $iYAnchor='top',$iXAnchor='left';\n    /*-----------------------------------------------------------------\n     * First and second phase constructors\n     *-----------------------------------------------------------------\n     */\n    function __construct() {\n        // Empty\n    }\n\n    function Init($aRows=0,$aCols=0,$aFillText='') {\n        $this->iSize[0] = $aRows;\n        $this->iSize[1] = $aCols;\n        for($i=0; $i < $this->iSize[0]; ++$i) {\n            for($j=0; $j < $this->iSize[1]; ++$j) {\n                $this->iCells[$i][$j] = new GTextTableCell($aFillText,$i,$j);\n                $this->iCells[$i][$j]->Init($this);\n            }\n        }\n        $this->iInit=true;\n    }\n\n    /*-----------------------------------------------------------------\n     * Outer border of table\n     *-----------------------------------------------------------------\n     */\n    function SetBorder($aWeight=1,$aColor='black') {\n        $this->iBorderColor=$aColor;\n        $this->iBorderWeight = $aWeight;\n    }\n\n\n    /*-----------------------------------------------------------------\n     * Position in graph of table\n     *-----------------------------------------------------------------\n     */\n    function SetPos($aX,$aY) {\n        $this->iXPos = $aX;\n        $this->iYPos = $aY;\n    }\n\n    function SetScalePos($aX,$aY) {\n        $this->iScaleXPos = $aX;\n        $this->iScaleYPos = $aY;\n    }\n\n    function SetAnchorPos($aXAnchor,$aYAnchor='top') {\n        $this->iXAnchor = $aXAnchor;\n        $this->iYAnchor = $aYAnchor;\n    }\n\n    /*-----------------------------------------------------------------\n     * Setup country flag in a cell\n     *-----------------------------------------------------------------\n     */\n    function SetCellCountryFlag($aRow,$aCol,$aFlag,$aScale=1.0,$aMix=100,$aStdSize=3) {\n        $this->_chkR($aRow);\n        $this->_chkC($aCol);\n        $this->iCells[$aRow][$aCol]->SetCountryFlag($aFlag,$aScale,$aMix,$aStdSize);\n\n    }\n\n    /*-----------------------------------------------------------------\n     * Setup image in a cell\n     *-----------------------------------------------------------------\n     */\n    function SetCellImage($aRow,$aCol,$aFile,$aScale=1.0,$aMix=100) {\n        $this->_chkR($aRow);\n        $this->_chkC($aCol);\n        $this->iCells[$aRow][$aCol]->SetImage($aFile,$aScale,$aMix);\n    }\n\n    function SetRowImage($aRow,$aFile,$aScale=1.0,$aMix=100) {\n        $this->_chkR($aRow);\n        for($j=0; $j < $this->iSize[1]; ++$j) {\n            $this->iCells[$aRow][$j]->SetImage($aFile,$aScale,$aMix);\n        }\n    }\n\n    function SetColImage($aCol,$aFile,$aScale=1.0,$aMix=100) {\n        $this->_chkC($aCol);\n        for($j=0; $j < $this->iSize[0]; ++$j) {\n            $this->iCells[$j][$aCol]->SetImage($aFile,$aScale,$aMix);\n        }\n    }\n\n    function SetImage($aFileR1,$aScaleC1=null,$aMixR2=null,$aC2=null,$aFile=null,$aScale=1.0,$aMix=100) {\n        if( $aScaleC1 !== null && $aMixR2!==null && $aC2!==null && $aFile!==null ) {\n            $this->_chkR($aArgR1);  $this->_chkC($aC1);\n            $this->_chkR($aR2);  $this->_chkC($aC2);\n        }\n        else {\n            if( $aScaleC1 !== null ) $aScale = $aScaleC1;\n            if( $aMixR2 !== null ) $aMix = $aMixR2;\n            $aFile = $aFileR1;\n            $aMixR2 = $this->iSize[0]-1; $aFileR1 = 0;\n            $aC2 = $this->iSize[1]-1; $aScaleC1 = 0;\n        }\n        for($i=$aArgR1; $i <= $aR2; ++$i) {\n            for($j=$aC1; $j <= $aC2; ++$j) {\n                $this->iCells[$i][$j]->SetImage($aFile,$aScale,$aMix);\n            }\n        }\n    }\n\n    function SetCellImageConstrain($aRow,$aCol,$aType,$aVal) {\n        $this->_chkR($aRow);\n        $this->_chkC($aCol);\n        $this->iCells[$aRow][$aCol]->SetImageConstrain($aType,$aVal);\n    }\n\n    /*-----------------------------------------------------------------\n     * Generate a HTML version of the table\n     *-----------------------------------------------------------------\n     */\n    function toString() {\n        $t = '<table border=1 cellspacing=0 cellpadding=0>';\n        for($i=0; $i < $this->iSize[0]; ++$i) {\n            $t .= '<tr>';\n            for($j=0; $j < $this->iSize[1]; ++$j) {\n                $t .= '<td>';\n                if( $this->iCells[$i][$j]->iMerged )\n                $t .= 'M ';\n                $t .= 'val='.$this->iCells[$i][$j]->iVal->t;\n                $t .= ' (cs='.$this->iCells[$i][$j]->iColSpan.\n        ', rs='.$this->iCells[$i][$j]->iRowSpan.')';\n                $t .= '</td>';\n            }\n            $t .= '</tr>';\n        }\n        $t .= '</table>';\n        return $t;\n    }\n\n    /*-----------------------------------------------------------------\n     * Specify data for table\n     *-----------------------------------------------------------------\n     */\n    function Set($aArg1,$aArg2=NULL,$aArg3=NULL) {\n        if( $aArg2===NULL && $aArg3===NULL ) {\n            if( is_array($aArg1) ) {\n                if( is_array($aArg1[0]) ) {\n                    $m = count($aArg1);\n                    // Find the longest row\n                    $n=0;\n                    for($i=0; $i < $m; ++$i)\n                    $n = max(count($aArg1[$i]),$n);\n                    for($i=0; $i < $m; ++$i) {\n                        for($j=0; $j < $n; ++$j) {\n                            if( isset($aArg1[$i][$j]) ){\n                                $this->_setcell($i,$j,(string)$aArg1[$i][$j]);\n                            }\n                            else {\n                                $this->_setcell($i,$j);\n                            }\n                        }\n                    }\n                    $this->iSize[0] = $m;\n                    $this->iSize[1] = $n;\n                    $this->iInit=true;\n                }\n                else {\n                    JpGraphError::RaiseL(27001);\n                    //('Illegal argument to GTextTable::Set(). Array must be 2 dimensional');\n                }\n            }\n            else {\n                JpGraphError::RaiseL(27002);\n                //('Illegal argument to GTextTable::Set()');\n            }\n        }\n        else {\n            // Must be in the form (row,col,val)\n            $this->_chkR($aArg1);\n            $this->_chkC($aArg2);\n            $this->_setcell($aArg1,$aArg2,(string)$aArg3);\n        }\n    }\n\n    /*---------------------------------------------------------------------\n     * Cell margin setting\n     *---------------------------------------------------------------------\n     */\n    function SetPadding($aArgR1,$aC1=null,$aR2=null,$aC2=null,$aPad=null) {\n        if( $aC1 !== null && $aR2!==null && $aC2!==null && $aPad!==null ) {\n            $this->_chkR($aArgR1);  $this->_chkC($aC1);\n            $this->_chkR($aR2);  $this->_chkC($aC2);\n        }\n        else {\n            $aPad = $aArgR1;\n            $aR2 = $this->iSize[0]-1; $aArgR1 = 0;\n            $aC2 = $this->iSize[1]-1; $aC1 = 0;\n        }\n        for($i=$aArgR1; $i <= $aR2; ++$i) {\n            for($j=$aC1; $j <= $aC2; ++$j) {\n                $this->iCells[$i][$j]->SetMargin($aPad,$aPad,$aPad,$aPad);\n            }\n        }\n    }\n\n    function SetRowPadding($aRow,$aPad) {\n        $this->_chkR($aRow);\n        for($j=0; $j < $this->iSize[1]; ++$j) {\n            $this->iCells[$aRow][$j]->SetMargin($aPad,$aPad,$aPad,$aPad);\n        }\n    }\n\n    function SetColPadding($aCol,$aPad) {\n        $this->_chkC($aCol);\n        for($j=0; $j < $this->iSize[0]; ++$j) {\n            $this->iCells[$j][$aCol]->SetMargin($aPad,$aPad,$aPad,$aPad);\n        }\n    }\n\n    function SetCellPadding($aRow,$aCol,$aPad) {\n        $this->_chkR($aRow);\n        $this->_chkC($aCol);\n        $this->iCells[$aRow][$aCol]->SetMargin($aPad,$aPad,$aPad,$aPad);\n    }\n\n\n    /*---------------------------------------------------------------------\n     * Cell text orientation setting\n     *---------------------------------------------------------------------\n     */\n    function SetTextOrientation($aArgR1,$aC1=null,$aR2=null,$aC2=null,$aO=null) {\n        if( $aC1 !== null && $aR2!==null && $aC2!==null && $aPad!==null ) {\n            $this->_chkR($aArgR1);  $this->_chkC($aC1);\n            $this->_chkR($aR2);  $this->_chkC($aC2);\n        }\n        else {\n            $aO = $aArgR1;\n            $aR2 = $this->iSize[0]-1; $aArgR1 = 0;\n            $aC2 = $this->iSize[1]-1; $aC1 = 0;\n        }\n        for($i=$aArgR1; $i <= $aR2; ++$i) {\n            for($j=$aC1; $j <= $aC2; ++$j) {\n                $this->iCells[$i][$j]->iVal->SetOrientation($aO);\n            }\n        }\n    }\n\n    function SetRowTextOrientation($aRow,$aO) {\n        $this->_chkR($aRow);\n        for($j=0; $j < $this->iSize[1]; ++$j) {\n            $this->iCells[$aRow][$j]->iVal->SetOrientation($aO);\n        }\n    }\n\n    function SetColTextOrientation($aCol,$aO) {\n        $this->_chkC($aCol);\n        for($j=0; $j < $this->iSize[0]; ++$j) {\n            $this->iCells[$j][$aCol]->iVal->SetOrientation($aO);\n        }\n    }\n\n    function SetCellTextOrientation($aRow,$aCol,$aO) {\n        $this->_chkR($aRow);\n        $this->_chkC($aCol);\n        $this->iCells[$aRow][$aCol]->iVal->SetOrientation($aO);\n    }\n\n\n\n\n    /*---------------------------------------------------------------------\n     * Font color setting\n     *---------------------------------------------------------------------\n     */\n\n    function SetColor($aArgR1,$aC1=null,$aR2=null,$aC2=null,$aArg=null) {\n        if( $aC1 !== null && $aR2!==null && $aC2!==null && $aArg!==null ) {\n            $this->_chkR($aArgR1);  $this->_chkC($aC1);\n            $this->_chkR($aR2);  $this->_chkC($aC2);\n        }\n        else {\n            $aArg = $aArgR1;\n            $aR2 = $this->iSize[0]-1; $aArgR1 = 0;\n            $aC2 = $this->iSize[1]-1; $aC1 = 0;\n        }\n        for($i=$aArgR1; $i <= $aR2; ++$i) {\n            for($j=$aC1; $j <= $aC2; ++$j) {\n                $this->iCells[$i][$j]->SetFontColor($aArg);\n            }\n        }\n    }\n\n    function SetRowColor($aRow,$aColor) {\n        $this->_chkR($aRow);\n        for($j=0; $j < $this->iSize[1]; ++$j) {\n            $this->iCells[$aRow][$j]->SetFontColor($aColor);\n        }\n    }\n\n    function SetColColor($aCol,$aColor) {\n        $this->_chkC($aCol);\n        for($i=0; $i < $this->iSize[0]; ++$i) {\n            $this->iCells[$i][$aCol]->SetFontColor($aColor);\n        }\n    }\n\n    function SetCellColor($aRow,$aCol,$aColor) {\n        $this->_chkR($aRow);\n        $this->_chkC($aCol);\n        $this->iCells[$aRow][$aCol]->SetFontColor($aColor);\n    }\n\n    /*---------------------------------------------------------------------\n     * Fill color settings\n     *---------------------------------------------------------------------\n     */\n\n    function SetFillColor($aArgR1,$aC1=null,$aR2=null,$aC2=null,$aArg=null) {\n        if( $aC1 !== null && $aR2!==null && $aC2!==null && $aArg!==null ) {\n            $this->_chkR($aArgR1);  $this->_chkC($aC1);\n            $this->_chkR($aR2);  $this->_chkC($aC2);\n            for($i=$aArgR1; $i <= $aR2; ++$i) {\n                for($j=$aC1; $j <= $aC2; ++$j) {\n                    $this->iCells[$i][$j]->SetFillColor($aArg);\n                }\n            }\n        }\n        else {\n            $this->iBGColor = $aArgR1;\n        }\n    }\n\n    function SetRowFillColor($aRow,$aColor) {\n        $this->_chkR($aRow);\n        for($j=0; $j < $this->iSize[1]; ++$j) {\n            $this->iCells[$aRow][$j]->SetFillColor($aColor);\n        }\n    }\n\n    function SetColFillColor($aCol,$aColor) {\n        $this->_chkC($aCol);\n        for($i=0; $i < $this->iSize[0]; ++$i) {\n            $this->iCells[$i][$aCol]->SetFillColor($aColor);\n        }\n    }\n\n    function SetCellFillColor($aRow,$aCol,$aColor) {\n        $this->_chkR($aRow);\n        $this->_chkC($aCol);\n        $this->iCells[$aRow][$aCol]->SetFillColor($aColor);\n    }\n\n    /*---------------------------------------------------------------------\n     * Font family setting\n     *---------------------------------------------------------------------\n     */\n    function SetFont() {\n        $numargs = func_num_args();\n        if( $numargs == 2 || $numargs == 3 ) {\n            $aFF = func_get_arg(0);\n            $aFS = func_get_arg(1);\n            if( $numargs == 3 )\n            $aFSize=func_get_arg(2);\n            else\n            $aFSize=10;\n            $aR2 = $this->iSize[0]-1; $aR1 = 0;\n            $aC2 = $this->iSize[1]-1; $aC1 = 0;\n\n        }\n        elseif($numargs == 6 || $numargs == 7 ) {\n            $aR1 = func_get_arg(0); $aC1 = func_get_arg(1);\n            $aR2 = func_get_arg(2); $aC2 = func_get_arg(3);\n            $aFF = func_get_arg(4); $aFS = func_get_arg(5);\n            if( $numargs == 7 )\n            $aFSize=func_get_arg(6);\n            else\n            $aFSize=10;\n        }\n        else {\n            JpGraphError::RaiseL(27003);\n            //('Wrong number of arguments to GTextTable::SetColor()');\n        }\n        $this->_chkR($aR1);  $this->_chkC($aC1);\n        $this->_chkR($aR2);  $this->_chkC($aC2);\n        for($i=$aR1; $i <= $aR2; ++$i) {\n            for($j=$aC1; $j <= $aC2; ++$j) {\n                $this->iCells[$i][$j]->SetFont($aFF,$aFS,$aFSize);\n            }\n        }\n    }\n\n    function SetRowFont($aRow,$aFF,$aFS,$aFSize=10) {\n        $this->_chkR($aRow);\n        for($j=0; $j < $this->iSize[1]; ++$j) {\n            $this->iCells[$aRow][$j]->SetFont($aFF,$aFS,$aFSize);\n        }\n    }\n\n    function SetColFont($aCol,$aFF,$aFS,$aFSize=10) {\n        $this->_chkC($aCol);\n        for($i=0; $i < $this->iSize[0]; ++$i) {\n            $this->iCells[$i][$aCol]->SetFont($aFF,$aFS,$aFSize);\n        }\n    }\n\n    function SetCellFont($aRow,$aCol,$aFF,$aFS,$aFSize=10) {\n        $this->_chkR($aRow);\n        $this->_chkC($aCol);\n        $this->iCells[$aRow][$aCol]->SetFont($aFF,$aFS,$aFSize);\n    }\n\n    /*---------------------------------------------------------------------\n     * Cell align settings\n     *---------------------------------------------------------------------\n     */\n\n    function SetAlign($aR1HAlign=null,$aC1VAlign=null,$aR2=null,$aC2=null,$aHArg=null,$aVArg='center') {\n        if( $aC1VAlign !== null && $aR2!==null && $aC2!==null && $aHArg!==null ) {\n            $this->_chkR($aR1HAlign);  $this->_chkC($aC1VAlign);\n            $this->_chkR($aR2);  $this->_chkC($aC2);\n        }\n        else {\n            if( $aR1HAlign === null ) {\n                JpGraphError::RaiseL(27010);\n            }\n            if( $aC1VAlign === null ) {\n                $aC1VAlign = 'center';\n            }\n            $aHArg = $aR1HAlign;\n            $aVArg = $aC1VAlign === null ? 'center' : $aC1VAlign ;\n            $aR2 = $this->iSize[0]-1; $aR1HAlign = 0;\n            $aC2 = $this->iSize[1]-1; $aC1VAlign = 0;\n        }\n        for($i=$aR1HAlign; $i <= $aR2; ++$i) {\n            for($j=$aC1VAlign; $j <= $aC2; ++$j) {\n                $this->iCells[$i][$j]->SetAlign($aHArg,$aVArg);\n            }\n        }\n    }\n\n    function SetCellAlign($aRow,$aCol,$aHorAlign,$aVertAlign='bottom') {\n        $this->_chkR($aRow);\n        $this->_chkC($aCol);\n        $this->iCells[$aRow][$aCol]->SetAlign($aHorAlign,$aVertAlign);\n    }\n\n    function SetRowAlign($aRow,$aHorAlign,$aVertAlign='bottom') {\n        $this->_chkR($aRow);\n        for($j=0; $j < $this->iSize[1]; ++$j) {\n            $this->iCells[$aRow][$j]->SetAlign($aHorAlign,$aVertAlign);\n        }\n    }\n\n    function SetColAlign($aCol,$aHorAlign,$aVertAlign='bottom') {\n        $this->_chkC($aCol);\n        for($i=0; $i < $this->iSize[0]; ++$i) {\n            $this->iCells[$i][$aCol]->SetAlign($aHorAlign,$aVertAlign);\n        }\n    }\n\n    /*---------------------------------------------------------------------\n     * Cell number format\n     *---------------------------------------------------------------------\n     */\n\n    function SetNumberFormat($aArgR1,$aC1=null,$aR2=null,$aC2=null,$aArg=null) {\n        if( $aC1 !== null && $aR2!==null && $aC2!==null && $aArg!==null ) {\n            $this->_chkR($aArgR1);  $this->_chkC($aC1);\n            $this->_chkR($aR2);  $this->_chkC($aC2);\n        }\n        else {\n            $aArg = $aArgR1;\n            $aR2 = $this->iSize[0]-1; $aArgR1 = 0;\n            $aC2 = $this->iSize[1]-1; $aC1 = 0;\n        }\n        if( !is_string($aArg) ) {\n            JpGraphError::RaiseL(27013); // argument must be a string\n        }\n        for($i=$aArgR1; $i <= $aR2; ++$i) {\n            for($j=$aC1; $j <= $aC2; ++$j) {\n                $this->iCells[$i][$j]->SetNumberFormat($aArg);\n            }\n        }\n    }\n\n    function SetRowNumberFormat($aRow,$aF) {\n        $this->_chkR($aRow);\n        if( !is_string($aF) ) {\n            JpGraphError::RaiseL(27013); // argument must be a string\n        }\n        for($j=0; $j < $this->iSize[1]; ++$j) {\n            $this->iCells[$aRow][$j]->SetNumberFormat($aF);\n        }\n    }\n\n    function SetColNumberFormat($aCol,$aF) {\n        $this->_chkC($aCol);\n        if( !is_string($aF) ) {\n            JpGraphError::RaiseL(27013); // argument must be a string\n        }\n        for($i=0; $i < $this->iSize[0]; ++$i) {\n            $this->iCells[$i][$aCol]->SetNumberFormat($aF);\n        }\n    }\n\n    function SetCellNumberFormat($aRow,$aCol,$aF) {\n        $this->_chkR($aRow); $this->_chkC($aCol);\n        if( !is_string($aF) ) {\n            JpGraphError::RaiseL(27013); // argument must be a string\n        }\n        $this->iCells[$aRow][$aCol]->SetNumberFormat($aF);\n    }\n\n    /*---------------------------------------------------------------------\n     * Set row and column min size\n     *---------------------------------------------------------------------\n     */\n\n    function SetMinColWidth($aColWidth,$aWidth=null) {\n        // If there is only one argument this means that all\n        // columns get set to the same width\n        if( $aWidth===null ) {\n            for($i=0; $i < $this->iSize[1]; ++$i) {\n                $this->iColWidth[$i]  = $aColWidth;\n            }\n        }\n        else {\n            $this->_chkC($aColWidth);\n            $this->iColWidth[$aColWidth]  = $aWidth;\n        }\n    }\n\n    function SetMinRowHeight($aRowHeight,$aHeight=null) {\n        // If there is only one argument this means that all\n        // rows get set to the same height\n        if( $aHeight===null ) {\n            for($i=0; $i < $this->iSize[0]; ++$i) {\n                $this->iRowHeight[$i]  = $aRowHeight;\n            }\n        }\n        else {\n            $this->_chkR($aRowHeight);\n            $this->iRowHeight[$aRowHeight]  = $aHeight;\n        }\n    }\n\n    /*---------------------------------------------------------------------\n     * Grid line settings\n     *---------------------------------------------------------------------\n     */\n\n    function SetGrid($aWeight=1,$aColor='black',$aStyle=TGRID_SINGLE) {\n        $rc = $this->iSize[0];\n        $cc = $this->iSize[1];\n        for($i=0; $i < $rc; ++$i) {\n            for($j=0; $j < $cc; ++$j) {\n                $this->iCells[$i][$j]->SetGridColor($aColor,$aColor);\n                $this->iCells[$i][$j]->SetGridWeight($aWeight,$aWeight);\n                $this->iCells[$i][$j]->SetGridStyle($aStyle);\n            }\n        }\n    }\n\n    function SetColGrid($aCol,$aWeight=1,$aColor='black',$aStyle=TGRID_SINGLE) {\n        $this->_chkC($aCol);\n        for($i=0; $i < $this->iSize[0]; ++$i) {\n            $this->iCells[$i][$aCol]->SetGridWeight($aWeight);\n            $this->iCells[$i][$aCol]->SetGridColor($aColor);\n            $this->iCells[$i][$aCol]->SetGridStyle($aStyle);\n        }\n    }\n\n    function SetRowGrid($aRow,$aWeight=1,$aColor='black',$aStyle=TGRID_SINGLE) {\n        $this->_chkR($aRow);\n        for($j=0; $j < $this->iSize[1]; ++$j) {\n            $this->iCells[$aRow][$j]->SetGridWeight(NULL,$aWeight);\n            $this->iCells[$aRow][$j]->SetGridColor(NULL,$aColor);\n            $this->iCells[$aRow][$j]->SetGridStyle(NULL,$aStyle);\n        }\n    }\n\n    /*---------------------------------------------------------------------\n     * Merge cells\n     *---------------------------------------------------------------------\n     */\n\n    function MergeRow($aRow,$aHAlign='center',$aVAlign='center') {\n        $this->_chkR($aRow);\n        $this->MergeCells($aRow,0,$aRow,$this->iSize[1]-1,$aHAlign,$aVAlign);\n    }\n\n    function MergeCol($aCol,$aHAlign='center',$aVAlign='center') {\n        $this->_chkC($aCol);\n        $this->MergeCells(0,$aCol,$this->iSize[0]-1,$aCol,$aHAlign,$aVAlign);\n    }\n\n    function MergeCells($aR1,$aC1,$aR2,$aC2,$aHAlign='center',$aVAlign='center') {\n        if( $aR1 > $aR2 || $aC1 > $aC2 ) {\n            JpGraphError::RaiseL(27004);\n            //('GTextTable::MergeCells(). Specified cell range to be merged is not valid.');\n        }\n        $this->_chkR($aR1); $this->_chkC($aC1);\n        $this->_chkR($aR2); $this->_chkC($aC2);\n        $rspan = $aR2-$aR1+1;\n        $cspan = $aC2-$aC1+1;\n        // Setup the parent cell for this merged group\n        if( $this->iCells[$aR1][$aC1]->IsMerged() ) {\n            JpGraphError::RaiseL(27005,$aR1,$aC1,$aR2,$aC2);\n            //(\"Cannot merge already merged cells in the range ($aR1,$aC1), ($aR2,$aC2)\");\n        }\n        $this->iCells[$aR1][$aC1]->SetRowColSpan($rspan,$cspan);\n        $this->iCells[$aR1][$aC1]->SetAlign($aHAlign,$aVAlign);\n        for($i=$aR1; $i <= $aR2; ++$i) {\n            for($j=$aC1; $j <= $aC2; ++$j) {\n                if( ! ($i == $aR1 && $j == $aC1) ) {\n                    if( $this->iCells[$i][$j]->IsMerged() ) {\n                        JpGraphError::RaiseL(27005,$aR1,$aC1,$aR2,$aC2);\n                        //(\"Cannot merge already merged cells in the range ($aR1,$aC1), ($aR2,$aC2)\");\n                    }\n                    $this->iCells[$i][$j]->SetMerged($aR1,$aC1,true);\n                }\n            }\n        }\n    }\n\n\n    /*---------------------------------------------------------------------\n     * CSIM methods\n     *---------------------------------------------------------------------\n     */\n\n    function SetCSIMTarget($aTarget,$aAlt=null,$aAutoTarget=false) {\n        $m = $this->iSize[0];\n        $n = $this->iSize[1];\n        $csim = '';\n        for($i=0; $i < $m; ++$i) {\n            for($j=0; $j < $n; ++$j) {\n                if( $aAutoTarget )\n                $t = $aTarget.\"?row=$i&col=$j\";\n                else\n                $t = $aTarget;\n                $this->iCells[$i][$j]->SetCSIMTarget($t,$aAlt);\n            }\n        }\n    }\n\n    function SetCellCSIMTarget($aRow,$aCol,$aTarget,$aAlt=null) {\n        $this->_chkR($aRow);\n        $this->_chkC($aCol);\n        $this->iCells[$aRow][$aCol]->SetCSIMTarget($aTarget,$aAlt);\n    }\n\n    /*---------------------------------------------------------------------\n     * Private methods\n     *---------------------------------------------------------------------\n     */\n\n    function GetCSIMAreas() {\n        $m = $this->iSize[0];\n        $n = $this->iSize[1];\n        $csim = '';\n        for($i=0; $i < $m; ++$i) {\n            for($j=0; $j < $n; ++$j) {\n                $csim .= $this->iCells[$i][$j]->GetCSIMArea();\n            }\n        }\n        return $csim;\n    }\n\n    function _chkC($aCol) {\n        if( ! $this->iInit ) {\n            JpGraphError::Raise(27014); // Table not initialized\n        }\n        if( $aCol < 0 || $aCol >= $this->iSize[1] )\n        JpGraphError::RaiseL(27006,$aCol);\n        //(\"GTextTable:\\nColumn argument ($aCol) is outside specified table size.\");\n    }\n\n    function _chkR($aRow) {\n        if( ! $this->iInit ) {\n            JpGraphError::Raise(27014); // Table not initialized\n        }\n        if( $aRow < 0 || $aRow >= $this->iSize[0] )\n        JpGraphError::RaiseL(27007,$aRow);\n        //(\"GTextTable:\\nRow argument ($aRow) is outside specified table size.\");\n    }\n\n    function _getScalePos() {\n        if( $this->iScaleXPos === null || $this->iScaleYPos === null ) {\n            return false;\n        }\n        return array($this->iScaleXPos, $this->iScaleYPos);\n    }\n\n    function _autoSizeTable($aImg) {\n        // Get maximum column width and row height\n        $m = $this->iSize[0];\n        $n = $this->iSize[1];\n        $w=1;$h=1;\n\n        // Get maximum row height per row\n        for($i=0; $i < $m; ++$i) {\n            $h=0;\n            for($j=0; $j < $n; ++$j) {\n                $h = max($h,$this->iCells[$i][$j]->GetHeight($aImg));\n            }\n            if( isset($this->iRowHeight[$i]) ) {\n                $this->iRowHeight[$i]  = max($h,$this->iRowHeight[$i]);\n            }\n            else\n            $this->iRowHeight[$i]  = $h;\n        }\n\n        // Get maximum col width per columns\n        for($j=0; $j < $n; ++$j) {\n            $w=0;\n            for($i=0; $i < $m; ++$i) {\n                $w = max($w,$this->iCells[$i][$j]->GetWidth($aImg));\n            }\n            if( isset($this->iColWidth[$j]) ) {\n                $this->iColWidth[$j]  = max($w,$this->iColWidth[$j]);\n            }\n            else\n            $this->iColWidth[$j]  = $w;\n        }\n    }\n\n    function _setcell($aRow,$aCol,$aVal='') {\n        if( isset($this->iCells[$aRow][$aCol]) ) {\n            $this->iCells[$aRow][$aCol]->Set($aVal);\n        }\n        else {\n            $this->iCells[$aRow][$aCol] = new GTextTableCell((string)$aVal,$aRow,$aCol);\n            $this->iCells[$aRow][$aCol]->Init($this);\n        }\n    }\n\n    function StrokeWithScale($aImg,$aXScale,$aYScale) {\n        if( is_numeric($this->iScaleXPos) && is_numeric($this->iScaleYPos) ) {\n            $x = round($aXScale->Translate($this->iScaleXPos));\n            $y = round($aYScale->Translate($this->iScaleYPos));\n            $this->Stroke($aImg,$x,$y);\n        }\n        else {\n            $this->Stroke($aImg);\n        }\n    }\n\n    function Stroke($aImg,$aX=NULL,$aY=NULL) {\n        if( $aX !== NULL && $aY !== NULL ) {\n            $this->iXPos = $aX;\n            $this->iYPos = $aY;\n        }\n\n        $rc = $this->iSize[0]; // row count\n        $cc = $this->iSize[1]; // column count\n\n        if( $rc == 0 || $cc == 0 ) {\n            JpGraphError::RaiseL(27009);\n        }\n\n        // Adjust margins of each cell based on the weight of the grid. Each table grid line\n        // is actually occupying the left side and top part of each cell.\n        for($j=0; $j < $cc; ++$j) {\n            $this->iCells[0][$j]->iMarginTop += $this->iBorderWeight;\n        }\n        for($i=0; $i < $rc; ++$i) {\n            $this->iCells[$i][0]->iMarginLeft += $this->iBorderWeight;\n        }\n        for($i=0; $i < $rc; ++$i) {\n            for($j=0; $j < $cc; ++$j) {\n                $this->iCells[$i][$j]->AdjustMarginsForGrid();\n            }\n        }\n\n        // adjust row and column size depending on cell content\n        $this->_autoSizeTable($aImg);\n\n        if( $this->iSize[1] != count($this->iColWidth) || $this->iSize[0] != count($this->iRowHeight) ) {\n            JpGraphError::RaiseL(27008);\n            //('Column and row size arrays must match the dimesnions of the table');\n        }\n\n        // Find out overall table size\n        $width=0;\n        for($i=0; $i < $cc; ++$i) {\n            $width += $this->iColWidth[$i];\n        }\n        $height=0;\n        for($i=0; $i < $rc; ++$i) {\n            $height += $this->iRowHeight[$i];\n        }\n\n        // Adjust the X,Y position to alway be at the top left corner\n        // The anchor position, i.e. how the client want to interpret the specified\n        // x and y coordinate must be taken into account\n        switch( strtolower($this->iXAnchor) ) {\n            case 'left' :\n                break;\n            case 'center':\n                $this->iXPos -= round($width/2);\n                break;\n            case 'right':\n                $this->iXPos -= $width;\n                break;\n        }\n        switch( strtolower($this->iYAnchor) ) {\n            case 'top' :\n                break;\n            case 'center':\n            case 'middle':\n                $this->iYPos -= round($height/2);\n                break;\n            case 'bottom':\n                $this->iYPos -= $height;\n                break;\n        }\n\n        // Set the overall background color of the table if set\n        if( $this->iBGColor !== '' ) {\n            $aImg->SetColor($this->iBGColor);\n            $aImg->FilledRectangle($this->iXPos,$this->iYPos,$this->iXPos+$width,$this->iYPos+$height);\n        }\n\n        // Stroke all cells\n        $rpos=$this->iYPos;\n        for($i=0; $i < $rc; ++$i) {\n            $cpos=$this->iXPos;\n            for($j=0; $j < $cc; ++$j) {\n                // Calculate width and height of this cell if it is spanning\n                // more than one column or row\n                $cwidth=0;\n                for( $k=0; $k < $this->iCells[$i][$j]->iColSpan; ++$k ) {\n                    $cwidth += $this->iColWidth[$j+$k];\n                }\n                $cheight=0;\n                for( $k=0; $k < $this->iCells[$i][$j]->iRowSpan; ++$k ) {\n                    $cheight += $this->iRowHeight[$i+$k];\n                }\n\n                $this->iCells[$i][$j]->Stroke($aImg,$cpos,$rpos,$cwidth,$cheight);\n                $cpos += $this->iColWidth[$j];\n            }\n            $rpos += $this->iRowHeight[$i];\n        }\n\n        // Stroke outer border\n        $aImg->SetColor($this->iBorderColor);\n        if( $this->iBorderWeight == 1 )\n        $aImg->Rectangle($this->iXPos,$this->iYPos,$this->iXPos+$width,$this->iYPos+$height);\n        else {\n            for( $i=0; $i < $this->iBorderWeight; ++$i )\n            $aImg->Rectangle($this->iXPos+$i,$this->iYPos+$i,\n            $this->iXPos+$width-1+$this->iBorderWeight-$i,\n            $this->iYPos+$height-1+$this->iBorderWeight-$i);\n        }\n    }\n}\n\n/*\n EOF\n */\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_text.inc.php",
    "content": "<?php\n//=======================================================================\n// File:        JPGRAPH_TEXT.INC.PHP\n// Description: Class to handle text as object in the graph.\n//              The low level text layout engine is handled by the GD class\n// Created:     2001-01-08 (Refactored to separate file 2008-08-01)\n// Ver:         $Id: jpgraph_text.inc.php 1844 2009-09-26 17:05:31Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\n\n//===================================================\n// CLASS Text\n// Description: Arbitrary text object that can be added to the graph\n//===================================================\nclass Text {\n    public $t;\n    public $x=0,$y=0,$halign=\"left\",$valign=\"top\",$color=array(0,0,0);\n    public $hide=false, $dir=0;\n    public $iScalePosY=null,$iScalePosX=null;\n    public $iWordwrap=0;\n    public $font_family=FF_DEFAULT,$font_style=FS_NORMAL; // old. FF_FONT1\n    protected $boxed=false; // Should the text be boxed\n    protected $paragraph_align=\"left\";\n    protected $icornerradius=0,$ishadowwidth=3;\n    protected $fcolor='white',$bcolor='black',$shadow=false;\n    protected $iCSIMarea='',$iCSIMalt='',$iCSIMtarget='',$iCSIMWinTarget='';\n    private $iBoxType = 1; // Which variant of filled box around text we want\n\n    // for __get, __set\n    private $_margin;\n    private $_font_size=8; // old. 12\n\n    //---------------\n    // CONSTRUCTOR\n\n    // Create new text at absolute pixel coordinates\n    function __construct($aTxt=\"\",$aXAbsPos=0,$aYAbsPos=0) {\n        if( ! is_string($aTxt) ) {\n            JpGraphError::RaiseL(25050);//('First argument to Text::Text() must be s atring.');\n        }\n        $this->t = $aTxt;\n        $this->x = round($aXAbsPos);\n        $this->y = round($aYAbsPos);\n        $this->margin = 0;\n    }\n    //---------------\n    // PUBLIC METHODS\n    // Set the string in the text object\n    function Set($aTxt) {\n        $this->t = $aTxt;\n    }\n\n    // Alias for Pos()\n    function SetPos($aXAbsPos=0,$aYAbsPos=0,$aHAlign=\"left\",$aVAlign=\"top\") {\n    //$this->Pos($aXAbsPos,$aYAbsPos,$aHAlign,$aVAlign);\n        $this->x = $aXAbsPos;\n        $this->y = $aYAbsPos;\n        $this->halign = $aHAlign;\n        $this->valign = $aVAlign;\n    }\n\n    function SetScalePos($aX,$aY) {\n        $this->iScalePosX = $aX;\n        $this->iScalePosY = $aY;\n    }\n\n    // Specify alignment for the text\n    function Align($aHAlign,$aVAlign=\"top\",$aParagraphAlign=\"\") {\n        $this->halign = $aHAlign;\n        $this->valign = $aVAlign;\n        if( $aParagraphAlign != \"\" )\n            $this->paragraph_align = $aParagraphAlign;\n    }\n\n    // Alias\n    function SetAlign($aHAlign,$aVAlign=\"top\",$aParagraphAlign=\"\") {\n        $this->Align($aHAlign,$aVAlign,$aParagraphAlign);\n    }\n\n    // Specifies the alignment for a multi line text\n    function ParagraphAlign($aAlign) {\n        $this->paragraph_align = $aAlign;\n    }\n\n    // Specifies the alignment for a multi line text\n    function SetParagraphAlign($aAlign) {\n        $this->paragraph_align = $aAlign;\n    }\n\n    function SetShadow($aShadowColor='gray',$aShadowWidth=3) {\n        $this->ishadowwidth=$aShadowWidth;\n        $this->shadow=$aShadowColor;\n        $this->boxed=true;\n    }\n\n    function SetWordWrap($aCol) {\n        $this->iWordwrap = $aCol ;\n    }\n\n    // Specify that the text should be boxed. fcolor=frame color, bcolor=border color,\n    // $shadow=drop shadow should be added around the text.\n    function SetBox($aFrameColor=array(255,255,255),$aBorderColor=array(0,0,0),$aShadowColor=false,$aCornerRadius=4,$aShadowWidth=3) {\n        if( $aFrameColor === false ) {\n            $this->boxed=false;\n        }\n        else {\n            $this->boxed=true;\n        }\n        $this->fcolor=$aFrameColor;\n        $this->bcolor=$aBorderColor;\n        // For backwards compatibility when shadow was just true or false\n        if( $aShadowColor === true ) {\n            $aShadowColor = 'gray';\n        }\n        $this->shadow=$aShadowColor;\n        $this->icornerradius=$aCornerRadius;\n        $this->ishadowwidth=$aShadowWidth;\n    }\n\n    function SetBox2($aFrameColor=array(255,255,255),$aBorderColor=array(0,0,0),$aShadowColor=false,$aCornerRadius=4,$aShadowWidth=3) {\n        $this->iBoxType=2;\n        $this->SetBox($aFrameColor,$aBorderColor,$aShadowColor,$aCornerRadius,$aShadowWidth);\n    }\n\n    // Hide the text\n    function Hide($aHide=true) {\n        $this->hide=$aHide;\n    }\n\n    // This looks ugly since it's not a very orthogonal design\n    // but I added this \"inverse\" of Hide() to harmonize\n    // with some classes which I designed more recently (especially)\n    // jpgraph_gantt\n    function Show($aShow=true) {\n        $this->hide=!$aShow;\n    }\n\n    // Specify font\n    function SetFont($aFamily,$aStyle=FS_NORMAL,$aSize=10) {\n        $this->font_family=$aFamily;\n        $this->font_style=$aStyle;\n        $this->font_size=$aSize;\n    }\n\n    // Center the text between $left and $right coordinates\n    function Center($aLeft,$aRight,$aYAbsPos=false) {\n        $this->x = $aLeft + ($aRight-$aLeft )/2;\n        $this->halign = \"center\";\n        if( is_numeric($aYAbsPos) )\n            $this->y = $aYAbsPos;\n    }\n\n    // Set text color\n    function SetColor($aColor) {\n        $this->color = $aColor;\n    }\n\n    function SetAngle($aAngle) {\n        $this->SetOrientation($aAngle);\n    }\n\n    // Orientation of text. Note only TTF fonts can have an arbitrary angle\n    function SetOrientation($aDirection=0) {\n        if( is_numeric($aDirection) )\n            $this->dir=$aDirection;\n        elseif( $aDirection==\"h\" )\n            $this->dir = 0;\n        elseif( $aDirection==\"v\" )\n            $this->dir = 90;\n        else\n            JpGraphError::RaiseL(25051);//(\" Invalid direction specified for text.\");\n    }\n\n    // Total width of text\n    function GetWidth($aImg) {\n        $aImg->SetFont($this->font_family,$this->font_style,$this->raw_font_size);\n        $w = $aImg->GetTextWidth($this->t,$this->dir);\n        return $w;\n    }\n\n    // Hight of font\n    function GetFontHeight($aImg) {\n        $aImg->SetFont($this->font_family,$this->font_style,$this->raw_font_size);\n        $h = $aImg->GetFontHeight();\n        return $h;\n\n    }\n\n    function GetTextHeight($aImg) {\n        $aImg->SetFont($this->font_family,$this->font_style,$this->raw_font_size);\n        $h = $aImg->GetTextHeight($this->t,$this->dir);\n        return $h;\n    }\n\n    function GetHeight($aImg) {\n    // Synonym for GetTextHeight()\n        $aImg->SetFont($this->font_family,$this->font_style,$this->raw_font_size);\n        $h = $aImg->GetTextHeight($this->t,$this->dir);\n        return $h;\n    }\n\n    // Set the margin which will be interpretated differently depending\n    // on the context.\n    function SetMargin($aMarg) {\n        $this->margin = $aMarg;\n    }\n\n    function StrokeWithScale($aImg,$axscale,$ayscale) {\n        if( $this->iScalePosX === null || $this->iScalePosY === null ) {\n            $this->Stroke($aImg);\n        }\n        else {\n            $this->Stroke($aImg,\n                round($axscale->Translate($this->iScalePosX)),\n                round($ayscale->Translate($this->iScalePosY)));\n        }\n    }\n\n    function SetCSIMTarget($aURITarget,$aAlt='',$aWinTarget='') {\n        $this->iCSIMtarget = $aURITarget;\n        $this->iCSIMalt = $aAlt;\n        $this->iCSIMWinTarget = $aWinTarget;\n    }\n\n    function GetCSIMareas() {\n        if( $this->iCSIMtarget !== '' ) {\n            return $this->iCSIMarea;\n        }\n        else {\n            return '';\n        }\n    }\n\n    // Display text in image\n    function Stroke($aImg,$x=null,$y=null) {\n\n        if( $x !== null ) $this->x = round($x);\n        if( $y !== null ) $this->y = round($y);\n\n        // Insert newlines\n        if( $this->iWordwrap > 0 ) {\n            $this->t = wordwrap($this->t,$this->iWordwrap,\"\\n\");\n        }\n\n        // If position been given as a fraction of the image size\n        // calculate the absolute position\n        if( $this->x < 1 && $this->x > 0 ) $this->x *= $aImg->width;\n        if( $this->y < 1 && $this->y > 0 ) $this->y *= $aImg->height;\n\n        $aImg->PushColor($this->color);\n        $aImg->SetFont($this->font_family,$this->font_style,$this->raw_font_size);\n        $aImg->SetTextAlign($this->halign,$this->valign);\n\n        if( $this->boxed ) {\n            if( $this->fcolor==\"nofill\" ) {\n                $this->fcolor=false;\n            }\n\n            $oldweight=$aImg->SetLineWeight(1);\n\n            if( $this->iBoxType == 2 && $this->font_family > FF_FONT2+2 ) {\n\n                $bbox = $aImg->StrokeBoxedText2($this->x, $this->y,\n                                                $this->t, $this->dir,\n                                                $this->fcolor,\n                                                $this->bcolor,\n                                                $this->shadow,\n                                                $this->paragraph_align,\n                                                2,4,\n                                                $this->icornerradius,\n                                                $this->ishadowwidth);\n            }\n            else {\n                $bbox = $aImg->StrokeBoxedText($this->x,$this->y,$this->t,\n                    $this->dir,$this->fcolor,$this->bcolor,$this->shadow,\n                    $this->paragraph_align,3,3,$this->icornerradius,\n                    $this->ishadowwidth);\n            }\n\n            $aImg->SetLineWeight($oldweight);\n        }\n        else {\n            $debug=false;\n            $bbox = $aImg->StrokeText($this->x,$this->y,$this->t,$this->dir,$this->paragraph_align,$debug);\n        }\n\n        // Create CSIM targets\n        $coords = $bbox[0].','.$bbox[1].','.$bbox[2].','.$bbox[3].','.$bbox[4].','.$bbox[5].','.$bbox[6].','.$bbox[7];\n        $this->iCSIMarea = \"<area shape=\\\"poly\\\" coords=\\\"$coords\\\" href=\\\"\".htmlentities($this->iCSIMtarget).\"\\\" \";\n        if( trim($this->iCSIMalt) != '' ) {\n            $this->iCSIMarea .= \" alt=\\\"\".$this->iCSIMalt.\"\\\" \";\n            $this->iCSIMarea .= \" title=\\\"\".$this->iCSIMalt.\"\\\" \";\n        }\n        if( trim($this->iCSIMWinTarget) != '' ) {\n            $this->iCSIMarea .= \" target=\\\"\".$this->iCSIMWinTarget.\"\\\" \";\n        }\n        $this->iCSIMarea .= \" />\\n\";\n\n        $aImg->PopColor($this->color);\n    }\n\n    function __get($name) {\n\n        if (strpos($name, 'raw_') !== false) {\n            // if $name == 'raw_left_margin' , return $this->_left_margin;\n            $variable_name = '_' . str_replace('raw_', '', $name);\n            return $this->$variable_name;\n        }\n\n        $variable_name = '_' . $name; \n\n        if (isset($this->$variable_name)) {\n            return $this->$variable_name * SUPERSAMPLING_SCALE;\n        } else {\n            JpGraphError::RaiseL('25132', $name);\n        } \n    }\n\n    function __set($name, $value) {\n        $this->{'_'.$name} = $value;\n    }\n} // Class\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_theme.inc.php",
    "content": "<?php\n//=======================================================================\n// File:        JPGRAPH_THEME.INC.PHP\n// Description: Class to define graph theme\n// Created:     2010-09-29\n// Ver:         $Id: jpgraph_theme.inc.php 83 2010-10-01 11:24:19Z atsushi $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\n\n// include Theme classes\nforeach (glob(dirname(__FILE__) . '/themes/*.php') as $theme_class_script) {\n  require_once($theme_class_script);\n}\n\n//===================================================\n// CLASS\n// Description:\n//===================================================\nabstract class Theme {\n    protected $color_index;\n    protected $graph; //MiToTeam: explicit class member declared\n\n    function __construct() {\n        $this->color_index = 0;\n    }\n    /**\n    *\n    */\n    abstract function GetColorList();\n\n    /**\n    *\n    */\n    abstract function ApplyPlot($plot);\n\n\n    /**\n    *\n    */\n    function SetupPlot($plot) {\n        if (is_array($plot)) {\n            foreach ($plot as $obj) {\n                $this->ApplyPlot($obj);\n            }\n        } else {\n            $this->ApplyPlot($plot);\n        }\n    }\n\n    /**\n    *\n    */\n    function ApplyGraph($graph) {\n\n        $this->graph = $graph;\n        $method_name = '';\n\n        if (get_class($graph) == 'Graph') {\n            $method_name = 'SetupGraph';\n        } else {\n            $method_name = 'Setup' . get_class($graph);\n        }\n\n        if (method_exists($this, $method_name)) {\n            $this->$method_name($graph);\n        } else {\n            JpGraphError::RaiseL(30001, $method_name, $method_name); //Theme::%s() is not defined. \\nPlease make %s(\\$graph) function in your theme classs.\n        }\n    }\n\n    /**\n    *\n    */\n    function PreStrokeApply($graph) {\n    }\n\n    /**\n    *\n    */\n    function GetThemeColors($num = 30) {\n        $result_list = array();\n\n        $old_index = $this->color_index;\n        $this->color_index = 0;\n        $count = 0;\n\n        $i = 0;\n        while (true) {\n            for ($j = 0; $j < count($this->GetColorList()); $j++) {\n                if (++$count > $num) {\n                    break 2;\n                }\n                $result_list[] = $this->GetNextColor();\n            }\n            $i++;\n        }\n\n        $this->color_index = $old_index;\n\n        return $result_list;\n    }\n\n    /**\n    *\n    */\n    function GetNextColor() {\n        $color_list = $this->GetColorList();\n\n        $color = null;\n        if (isset($color_list[$this->color_index])) {\n            $color = $color_list[$this->color_index];\n        } else {\n            $color_count = count($color_list);\n            if ($color_count <= $this->color_index) {\n                $color_tmp = $color_list[$this->color_index % $color_count];\n                $brightness = 1.0 - intval($this->color_index / $color_count) * 0.2;\n                $rgb = new RGB();\n                $color = $color_tmp . ':' . $brightness;\n                $color = $rgb->Color($color);\n                $alpha = array_pop($color);\n                $color = $rgb->tryHexConversion($color);\n                if ($alpha) {\n                    $color .= '@' . $alpha;\n                }\n            }\n        }\n\n        $this->color_index++;\n\n        return $color;\n    }\n\n} // Class\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_ttf.inc.php",
    "content": "<?php\n//=======================================================================\n// File:        jpgraph_ttf.inc.php\n// Description: Handling of TTF fonts\n// Created:     2006-11-19\n// Ver:         $Id: jpgraph_ttf.inc.php 1858 2009-09-28 14:39:51Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n\n// TTF Font families\ndefine(\"FF_COURIER\",10);\ndefine(\"FF_VERDANA\",11);\ndefine(\"FF_TIMES\",12);\ndefine(\"FF_COMIC\",14);\ndefine(\"FF_ARIAL\",15);\ndefine(\"FF_GEORGIA\",16);\ndefine(\"FF_TREBUCHE\",17);\n\n// Gnome Vera font\n// Available from http://www.gnome.org/fonts/\ndefine(\"FF_VERA\",18);\ndefine(\"FF_VERAMONO\",19);\ndefine(\"FF_VERASERIF\",20);\n\n// Chinese font\ndefine(\"FF_SIMSUN\",30);\ndefine(\"FF_CHINESE\",31);\ndefine(\"FF_BIG5\",32);\n\n// Japanese font\ndefine(\"FF_MINCHO\",40);\ndefine(\"FF_PMINCHO\",41);\ndefine(\"FF_GOTHIC\",42);\ndefine(\"FF_PGOTHIC\",43);\n\n// Hebrew fonts\ndefine(\"FF_DAVID\",44);\ndefine(\"FF_MIRIAM\",45);\ndefine(\"FF_AHRON\",46);\n\n// Dejavu-fonts http://sourceforge.net/projects/dejavu\ndefine(\"FF_DV_SANSSERIF\",47);\ndefine(\"FF_DV_SERIF\",48);\ndefine(\"FF_DV_SANSSERIFMONO\",49);\ndefine(\"FF_DV_SERIFCOND\",50);\ndefine(\"FF_DV_SANSSERIFCOND\",51);\n\n// Extra fonts\n// Download fonts from\n// http://www.webfontlist.com\n// http://www.webpagepublicity.com/free-fonts.html\n// http://www.fontonic.com/fonts.asp?width=d&offset=120\n// http://www.fontspace.com/category/famous\n\n// define(\"FF_SPEEDO\",71);  // This font is also known as Bauer (Used for development gauge fascia)\ndefine(\"FF_DIGITAL\",72); // Digital readout font\ndefine(\"FF_COMPUTER\",73); // The classic computer font\ndefine(\"FF_CALCULATOR\",74); // Triad font\n\ndefine(\"FF_USERFONT\",90);\ndefine(\"FF_USERFONT1\",90);\ndefine(\"FF_USERFONT2\",91);\ndefine(\"FF_USERFONT3\",92);\n\n// Limits for fonts\ndefine(\"_FIRST_FONT\",10);\ndefine(\"_LAST_FONT\",99);\n\n// TTF Font styles\ndefine(\"FS_NORMAL\",9001);\ndefine(\"FS_BOLD\",9002);\ndefine(\"FS_ITALIC\",9003);\ndefine(\"FS_BOLDIT\",9004);\ndefine(\"FS_BOLDITALIC\",9004);\n\n//Definitions for internal font\ndefine(\"FF_FONT0\",1);\ndefine(\"FF_FONT1\",2);\ndefine(\"FF_FONT2\",4);\n\n//------------------------------------------------------------------------\n// Defines for font setup\n//------------------------------------------------------------------------\n\n// Actual name of the TTF file used together with FF_CHINESE aka FF_BIG5\n// This is the TTF file being used when the font family is specified as\n// either FF_CHINESE or FF_BIG5\ndefine('CHINESE_TTF_FONT','bkai00mp.ttf');\n\n// Special unicode greek language support\ndefine(\"LANGUAGE_GREEK\",false);\n\n// If you are setting this config to true the conversion of greek characters\n// will assume that the input text is windows 1251\ndefine(\"GREEK_FROM_WINDOWS\",false);\n\n// Special unicode cyrillic language support\ndefine(\"LANGUAGE_CYRILLIC\",false);\n\n// If you are setting this config to true the conversion\n// will assume that the input text is windows 1251, if\n// false it will assume koi8-r\ndefine(\"CYRILLIC_FROM_WINDOWS\",false);\n\n// The following constant is used to auto-detect\n// whether cyrillic conversion is really necessary\n// if enabled. Just replace 'windows-1251' with a variable\n// containing the input character encoding string\n// of your application calling jpgraph.\n// A typical such string would be 'UTF-8' or 'utf-8'.\n// The comparison is case-insensitive.\n// If this charset is not a 'koi8-r' or 'windows-1251'\n// derivate then no conversion is done.\n//\n// This constant can be very important in multi-user\n// multi-language environments where a cyrillic conversion\n// could be needed for some cyrillic people\n// and resulting in just erraneous conversions\n// for not-cyrillic language based people.\n//\n// Example: In the free project management\n// software dotproject.net $locale_char_set is dynamically\n// set by the language environment the user has chosen.\n//\n// Usage: define('LANGUAGE_CHARSET', $locale_char_set);\n//\n// where $locale_char_set is a GLOBAL (string) variable\n// from the application including JpGraph.\n//\ndefine('LANGUAGE_CHARSET', null);\n\n// Japanese TrueType font used with FF_MINCHO, FF_PMINCHO, FF_GOTHIC, FF_PGOTHIC\n// Standard fonts from Infomation-technology Promotion Agency (IPA)\n// See http://mix-mplus-ipa.sourceforge.jp/\ndefine('MINCHO_TTF_FONT','ipam.ttf');\ndefine('PMINCHO_TTF_FONT','ipamp.ttf');\ndefine('GOTHIC_TTF_FONT','ipag.ttf');\ndefine('PGOTHIC_TTF_FONT','ipagp.ttf');\n\n// Assume that Japanese text have been entered in EUC-JP encoding.\n// If this define is true then conversion from EUC-JP to UTF8 is done\n// automatically in the library using the mbstring module in PHP.\ndefine('ASSUME_EUCJP_ENCODING',false);\n\n\n// Default font family\ndefine('FF_DEFAULT', FF_DV_SANSSERIF);\n\n\n\n//=================================================================\n// CLASS LanguageConv\n// Description:\n// Converts various character encoding into proper\n// UTF-8 depending on how the library have been configured and\n// what font family is being used\n//=================================================================\nclass LanguageConv {\n    private $g2312 = null ;\n\n    function Convert($aTxt,$aFF) {\n        if( LANGUAGE_GREEK ) {\n            if( GREEK_FROM_WINDOWS ) {\n                $unistring = LanguageConv::gr_win2uni($aTxt);\n            } else  {\n                $unistring = LanguageConv::gr_iso2uni($aTxt);\n            }\n            return $unistring;\n        } elseif( LANGUAGE_CYRILLIC ) {\n            if( CYRILLIC_FROM_WINDOWS && (!defined('LANGUAGE_CHARSET') || stristr(LANGUAGE_CHARSET, 'windows-1251')) ) {\n                $aTxt = convert_cyr_string($aTxt, \"w\", \"k\");\n            }\n            if( !defined('LANGUAGE_CHARSET') || stristr(LANGUAGE_CHARSET, 'koi8-r') || stristr(LANGUAGE_CHARSET, 'windows-1251')) {\n                $isostring = convert_cyr_string($aTxt, \"k\", \"i\");\n                $unistring = LanguageConv::iso2uni($isostring);\n            }\n            else {\n                $unistring = $aTxt;\n            }\n            return $unistring;\n        }\n        elseif( $aFF === FF_SIMSUN ) {\n            // Do Chinese conversion\n            if( $this->g2312 == null ) {\n                include_once 'jpgraph_gb2312.php' ;\n                $this->g2312 = new GB2312toUTF8();\n            }\n            return $this->g2312->gb2utf8($aTxt);\n        }\n        elseif( $aFF === FF_BIG5 ) {\n            if( !function_exists('iconv') ) {\n                JpGraphError::RaiseL(25006);\n                //('Usage of FF_CHINESE (FF_BIG5) font family requires that your PHP setup has the iconv() function. By default this is not compiled into PHP (needs the \"--width-iconv\" when configured).');\n            }\n            return iconv('BIG5','UTF-8',$aTxt);\n        }\n        elseif( ASSUME_EUCJP_ENCODING &&\n        ($aFF == FF_MINCHO || $aFF == FF_GOTHIC || $aFF == FF_PMINCHO || $aFF == FF_PGOTHIC) ) {\n            if( !function_exists('mb_convert_encoding') ) {\n                JpGraphError::RaiseL(25127);\n            }\n            return mb_convert_encoding($aTxt, 'UTF-8','EUC-JP');\n        }\n        elseif( $aFF == FF_DAVID || $aFF == FF_MIRIAM || $aFF == FF_AHRON ) {\n            return LanguageConv::heb_iso2uni($aTxt);\n        }\n        else\n        return $aTxt;\n    }\n\n    // Translate iso encoding to unicode\n    public static function iso2uni ($isoline){\n        $uniline='';\n        for ($i=0; $i < strlen($isoline); $i++){\n            $thischar=substr($isoline,$i,1);\n            $charcode=ord($thischar);\n            $uniline.=($charcode>175) ? \"&#\" . (1040+($charcode-176)). \";\" : $thischar;\n        }\n        return $uniline;\n    }\n\n    // Translate greek iso encoding to unicode\n    public static function gr_iso2uni ($isoline) {\n        $uniline='';\n        for ($i=0; $i < strlen($isoline); $i++) {\n            $thischar=substr($isoline,$i,1);\n            $charcode=ord($thischar);\n            $uniline.=($charcode>179 && $charcode!=183 && $charcode!=187 && $charcode!=189) ? \"&#\" . (900+($charcode-180)). \";\" : $thischar;\n        }\n        return $uniline;\n    }\n\n    // Translate greek win encoding to unicode\n    public static function gr_win2uni ($winline) {\n        $uniline='';\n        for ($i=0; $i < strlen($winline); $i++) {\n            $thischar=substr($winline,$i,1);\n            $charcode=ord($thischar);\n            if ($charcode==161 || $charcode==162) {\n                $uniline.=\"&#\" . (740+$charcode). \";\";\n            }\n            else {\n                $uniline.=(($charcode>183 && $charcode!=187 && $charcode!=189) || $charcode==180) ? \"&#\" . (900+($charcode-180)). \";\" : $thischar;\n            }\n        }\n        return $uniline;\n    }\n\n    public static function heb_iso2uni($isoline) {\n        $isoline = hebrev($isoline);\n        $o = '';\n\n        $n = strlen($isoline);\n        for($i=0; $i < $n; $i++) {\n            $c=ord( substr($isoline,$i,1) );\n            $o .= ($c > 223) && ($c < 251) ? '&#'.(1264+$c).';' : chr($c);\n        }\n        return utf8_encode($o);\n    }\n}\n\n//=============================================================\n// CLASS TTF\n// Description: Handle TTF font names and mapping and loading of\n//              font files\n//=============================================================\nclass TTF {\n    private $font_files,$style_names;\n\n    function __construct() {\n\n\t        // String names for font styles to be used in error messages\n\t    $this->style_names=array(\n\t    \tFS_NORMAL =>'normal',\n\t    \tFS_BOLD =>'bold',\n\t    \tFS_ITALIC =>'italic',\n\t    \tFS_BOLDITALIC =>'bolditalic');\n\n\t    // File names for available fonts\n\t    $this->font_files=array(\n\t    FF_COURIER => array(FS_NORMAL =>'cour.ttf',\n\t    \tFS_BOLD  =>'courbd.ttf',\n\t    \tFS_ITALIC =>'couri.ttf',\n\t    \tFS_BOLDITALIC =>'courbi.ttf' ),\n\t    FF_GEORGIA => array(FS_NORMAL =>'georgia.ttf',\n\t    \tFS_BOLD  =>'georgiab.ttf',\n\t    \tFS_ITALIC =>'georgiai.ttf',\n\t    \tFS_BOLDITALIC =>'' ),\n\t    FF_TREBUCHE =>array(FS_NORMAL =>'trebuc.ttf',\n\t    \tFS_BOLD  =>'trebucbd.ttf',\n\t    \tFS_ITALIC =>'trebucit.ttf',\n\t    \tFS_BOLDITALIC =>'trebucbi.ttf' ),\n\t    FF_VERDANA  => array(FS_NORMAL =>'verdana.ttf',\n\t    \tFS_BOLD  =>'verdanab.ttf',\n\t    \tFS_ITALIC =>'verdanai.ttf',\n\t    \tFS_BOLDITALIC =>'' ),\n\t    FF_TIMES =>   array(FS_NORMAL =>'times.ttf',\n\t    \tFS_BOLD  =>'timesbd.ttf',\n\t    \tFS_ITALIC =>'timesi.ttf',\n\t    \tFS_BOLDITALIC =>'timesbi.ttf' ),\n\t    FF_COMIC =>   array(FS_NORMAL =>'comic.ttf',\n\t    \tFS_BOLD  =>'comicbd.ttf',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ),\n\t    FF_ARIAL =>   array(FS_NORMAL =>'arial.ttf',\n\t    \tFS_BOLD  =>'arialbd.ttf',\n\t    \tFS_ITALIC =>'ariali.ttf',\n\t    \tFS_BOLDITALIC =>'arialbi.ttf' ) ,\n\t    FF_VERA =>    array(FS_NORMAL =>'Vera.ttf',\n\t    \tFS_BOLD  =>'VeraBd.ttf',\n\t    \tFS_ITALIC =>'VeraIt.ttf',\n\t    \tFS_BOLDITALIC =>'VeraBI.ttf' ),\n\t    FF_VERAMONO => array(FS_NORMAL =>'VeraMono.ttf',\n\t    \tFS_BOLD =>'VeraMoBd.ttf',\n\t    \tFS_ITALIC =>'VeraMoIt.ttf',\n\t    \tFS_BOLDITALIC =>'VeraMoBI.ttf' ),\n\t    FF_VERASERIF=> array(FS_NORMAL =>'VeraSe.ttf',\n\t    \tFS_BOLD =>'VeraSeBd.ttf',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ) ,\n\n\t    /* Chinese fonts */\n\t    FF_SIMSUN  =>  array(\n\t    \tFS_NORMAL =>'simsun.ttc',\n\t    \tFS_BOLD =>'simhei.ttf',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ),\n\t    FF_CHINESE  =>   array(\n\t    \tFS_NORMAL =>CHINESE_TTF_FONT,\n\t    \tFS_BOLD =>'',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ),\n\t    FF_BIG5  =>   array(\n\t    \tFS_NORMAL =>CHINESE_TTF_FONT,\n\t    \tFS_BOLD =>'',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ),\n\n\t    /* Japanese fonts */\n\t    FF_MINCHO  =>  array(\n\t    \tFS_NORMAL =>MINCHO_TTF_FONT,\n\t    \tFS_BOLD =>'',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ),\n\n\t    FF_PMINCHO  =>  array(\n\t    \tFS_NORMAL =>PMINCHO_TTF_FONT,\n\t    \tFS_BOLD =>'',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ),\n\n\t    FF_GOTHIC   =>  array(\n\t    \tFS_NORMAL =>GOTHIC_TTF_FONT,\n\t    \tFS_BOLD =>'',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ),\n\n\t    FF_PGOTHIC  =>  array(\n\t    \tFS_NORMAL =>PGOTHIC_TTF_FONT,\n\t    \tFS_BOLD =>'',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ),\n\n\t    /* Hebrew fonts */\n\t    FF_DAVID  =>  array(\n\t    \tFS_NORMAL =>'DAVIDNEW.TTF',\n\t    \tFS_BOLD =>'',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ),\n\n\t    FF_MIRIAM  =>  array(\n\t    \tFS_NORMAL =>'MRIAMY.TTF',\n\t    \tFS_BOLD =>'',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ),\n\n\t    FF_AHRON  =>  array(\n\t    \tFS_NORMAL =>'ahronbd.ttf',\n\t    \tFS_BOLD =>'',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ),\n\n\t    /* Misc fonts */\n\t    FF_DIGITAL =>   array(\n\t    \tFS_NORMAL =>'DIGIRU__.TTF',\n\t    \tFS_BOLD =>'Digirtu_.ttf',\n\t    \tFS_ITALIC =>'Digir___.ttf',\n\t    \tFS_BOLDITALIC =>'DIGIRT__.TTF' ),\n\n\t    /* This is an experimental font for the speedometer development\n\t    FF_SPEEDO =>    array(\n\t    FS_NORMAL =>'Speedo.ttf',\n\t    FS_BOLD =>'',\n\t    FS_ITALIC =>'',\n\t    FS_BOLDITALIC =>'' ),\n\t    */\n\n\t    FF_COMPUTER  =>  array(\n\t    \tFS_NORMAL =>'COMPUTER.TTF',\n\t    \tFS_BOLD =>'',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ),\n\n\t    FF_CALCULATOR => array(\n\t    \tFS_NORMAL =>'Triad_xs.ttf',\n\t    \tFS_BOLD =>'',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ),\n\n\t    /* Dejavu fonts */\n\t    FF_DV_SANSSERIF => array(\n\t    \tFS_NORMAL =>array('DejaVuSans.ttf'),\n\t    \tFS_BOLD =>array('DejaVuSans-Bold.ttf','DejaVuSansBold.ttf'),\n\t    \tFS_ITALIC =>array('DejaVuSans-Oblique.ttf','DejaVuSansOblique.ttf'),\n\t    \tFS_BOLDITALIC =>array('DejaVuSans-BoldOblique.ttf','DejaVuSansBoldOblique.ttf') ),\n\n\t    FF_DV_SANSSERIFMONO => array(\n\t    \tFS_NORMAL =>array('DejaVuSansMono.ttf','DejaVuMonoSans.ttf'),\n\t    \tFS_BOLD =>array('DejaVuSansMono-Bold.ttf','DejaVuMonoSansBold.ttf'),\n\t    \tFS_ITALIC =>array('DejaVuSansMono-Oblique.ttf','DejaVuMonoSansOblique.ttf'),\n\t    \tFS_BOLDITALIC =>array('DejaVuSansMono-BoldOblique.ttf','DejaVuMonoSansBoldOblique.ttf') ),\n\n\t    FF_DV_SANSSERIFCOND => array(\n\t    \tFS_NORMAL =>array('DejaVuSansCondensed.ttf','DejaVuCondensedSans.ttf'),\n\t    \tFS_BOLD =>array('DejaVuSansCondensed-Bold.ttf','DejaVuCondensedSansBold.ttf'),\n\t    \tFS_ITALIC =>array('DejaVuSansCondensed-Oblique.ttf','DejaVuCondensedSansOblique.ttf'),\n\t    \tFS_BOLDITALIC =>array('DejaVuSansCondensed-BoldOblique.ttf','DejaVuCondensedSansBoldOblique.ttf') ),\n\n\t    FF_DV_SERIF => array(\n\t    \tFS_NORMAL =>array('DejaVuSerif.ttf'),\n\t    \tFS_BOLD =>array('DejaVuSerif-Bold.ttf','DejaVuSerifBold.ttf'),\n\t    \tFS_ITALIC =>array('DejaVuSerif-Italic.ttf','DejaVuSerifItalic.ttf'),\n\t    \tFS_BOLDITALIC =>array('DejaVuSerif-BoldItalic.ttf','DejaVuSerifBoldItalic.ttf') ),\n\n\t    FF_DV_SERIFCOND => array(\n\t    \tFS_NORMAL =>array('DejaVuSerifCondensed.ttf','DejaVuCondensedSerif.ttf'),\n\t    \tFS_BOLD =>array('DejaVuSerifCondensed-Bold.ttf','DejaVuCondensedSerifBold.ttf'),\n\t    \tFS_ITALIC =>array('DejaVuSerifCondensed-Italic.ttf','DejaVuCondensedSerifItalic.ttf'),\n\t    \tFS_BOLDITALIC =>array('DejaVuSerifCondensed-BoldItalic.ttf','DejaVuCondensedSerifBoldItalic.ttf') ),\n\n\n\t    /* Placeholders for defined fonts */\n\t    FF_USERFONT1 => array(\n\t    \tFS_NORMAL =>'',\n\t    \tFS_BOLD =>'',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ),\n\n\t    FF_USERFONT2 => array(\n\t    \tFS_NORMAL =>'',\n\t    \tFS_BOLD =>'',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ),\n\n\t    FF_USERFONT3 => array(\n\t    \tFS_NORMAL =>'',\n\t    \tFS_BOLD =>'',\n\t    \tFS_ITALIC =>'',\n\t    \tFS_BOLDITALIC =>'' ),\n\n\t    );\n    }\n\n    //---------------\n    // PUBLIC METHODS\n    // Create the TTF file from the font specification\n    function File($family,$style=FS_NORMAL) {\n        $fam = @$this->font_files[$family];\n        if( !$fam ) {\n            JpGraphError::RaiseL(25046,$family);//(\"Specified TTF font family (id=$family) is unknown or does not exist. Please note that TTF fonts are not distributed with JpGraph for copyright reasons. You can find the MS TTF WEB-fonts (arial, courier etc) for download at http://corefonts.sourceforge.net/\");\n        }\n        $ff = @$fam[$style];\n\n        // There are several optional file names. They are tried in order\n        // and the first one found is used\n        if( !is_array($ff) ) {\n            $ff = array($ff);\n        }\n\n        $jpgraph_font_dir = dirname(__FILE__).'/fonts/';\n\n        foreach ($ff as $font_file) {\n            // All font families are guaranteed to have the normal style\n\n            if( $font_file==='' )\n                    JpGraphError::RaiseL(25047,$this->style_names[$style],$this->font_files[$family][FS_NORMAL]);//('Style \"'.$this->style_names[$style].'\" is not available for font family '.$this->font_files[$family][FS_NORMAL].'.');\n            if( !$font_file ) {\n                JpGraphError::RaiseL(25048,$fam);//(\"Unknown font style specification [$fam].\");\n            }\n\n            //MiToTeam: if absolute path provided check if file exists\n            if($font_file[0] === DIRECTORY_SEPARATOR) {\n              if (file_exists($font_file) === true && is_readable($font_file) === true) {\n                break;\n              }\n            }\n\n            // check jpgraph/src/fonts dir\n            $jpgraph_font_file = $jpgraph_font_dir . $font_file;\n            if (file_exists($jpgraph_font_file) === true && is_readable($jpgraph_font_file) === true) { \n                $font_file = $jpgraph_font_file;\n                break;\n            }\n\n            // check OS font dir\n            if ($family >= FF_MINCHO && $family <= FF_PGOTHIC) {\n                $font_file = MBTTF_DIR.$font_file;\n            } else {\n                $font_file = TTF_DIR.$font_file;\n            }\n            if (file_exists($font_file) === true && is_readable($font_file) === true) { \n                break;\n            }\n        }\n\n        if( !file_exists($font_file) ) {\n        \tJpGraphError::RaiseL(25049,$font_file);//(\"Font file \\\"$font_file\\\" is not readable or does not exist.\");\n        }\n\n        return $font_file;\n    }\n\n    function SetUserFont($aNormal,$aBold='',$aItalic='',$aBoldIt='') {\n        $this->font_files[FF_USERFONT] =\n        \tarray(FS_NORMAL     => $aNormal,\n        \t\t  FS_BOLD => $aBold,\n        \t\t  FS_ITALIC => $aItalic,\n        \t\t  FS_BOLDITALIC => $aBoldIt ) ;\n    }\n\n    function SetUserFont1($aNormal,$aBold='',$aItalic='',$aBoldIt='') {\n        $this->font_files[FF_USERFONT1] =\n        \tarray(FS_NORMAL     => $aNormal,\n        \t\t  FS_BOLD => $aBold,\n        \t\t  FS_ITALIC => $aItalic,\n        \t\t  FS_BOLDITALIC => $aBoldIt ) ;\n    }\n\n    function SetUserFont2($aNormal,$aBold='',$aItalic='',$aBoldIt='') {\n        $this->font_files[FF_USERFONT2] =\n        \tarray(FS_NORMAL     => $aNormal,\n        \t\t  FS_BOLD => $aBold,\n        \t\t  FS_ITALIC => $aItalic,\n        \t\t  FS_BOLDITALIC => $aBoldIt ) ;\n    }\n\n    function SetUserFont3($aNormal,$aBold='',$aItalic='',$aBoldIt='') {\n        $this->font_files[FF_USERFONT3] =\n        \tarray(FS_NORMAL     => $aNormal,\n        \t\t  FS_BOLD => $aBold,\n        \t\t  FS_ITALIC => $aItalic,\n        \t\t  FS_BOLDITALIC => $aBoldIt ) ;\n    }\n\n} // Class\n\n\n//=============================================================================\n// CLASS SymChar\n// Description: Code values for some commonly used characters that\n//              normally isn't available directly on the keyboard, for example\n//              mathematical and greek symbols.\n//=============================================================================\nclass  SymChar {\n    static function Get($aSymb,$aCapital=FALSE) {\n        $iSymbols = array(\n        /* Greek */\n        array('alpha','03B1','0391'),\n        array('beta','03B2','0392'),\n        array('gamma','03B3','0393'),\n        array('delta','03B4','0394'),\n        array('epsilon','03B5','0395'),\n        array('zeta','03B6','0396'),\n        array('ny','03B7','0397'),\n        array('eta','03B8','0398'),\n        array('theta','03B8','0398'),\n        array('iota','03B9','0399'),\n        array('kappa','03BA','039A'),\n        array('lambda','03BB','039B'),\n        array('mu','03BC','039C'),\n        array('nu','03BD','039D'),\n        array('xi','03BE','039E'),\n        array('omicron','03BF','039F'),\n        array('pi','03C0','03A0'),\n        array('rho','03C1','03A1'),\n        array('sigma','03C3','03A3'),\n        array('tau','03C4','03A4'),\n        array('upsilon','03C5','03A5'),\n        array('phi','03C6','03A6'),\n        array('chi','03C7','03A7'),\n        array('psi','03C8','03A8'),\n        array('omega','03C9','03A9'),\n        /* Money */\n        array('euro','20AC'),\n        array('yen','00A5'),\n        array('pound','20A4'),\n        /* Math */\n        array('approx','2248'),\n        array('neq','2260'),\n        array('not','2310'),\n        array('def','2261'),\n        array('inf','221E'),\n        array('sqrt','221A'),\n        array('int','222B'),\n        /* Misc */\n        array('copy','00A9'),\n        array('para','00A7'),\n        array('tm','2122'),   /* Trademark symbol */\n        array('rtm','00AE'),   /* Registered trademark */\n        array('degree','00b0'),\n        array('lte','2264'), /* Less than or equal */\n        array('gte','2265'), /* Greater than or equal */\n\n        );\n\n        $n = count($iSymbols);\n        $i=0;\n        $found = false;\n        $aSymb = strtolower($aSymb);\n        while( $i < $n && !$found ) {\n            $found = $aSymb === $iSymbols[$i++][0];\n        }\n        if( $found ) {\n            $ca = $iSymbols[--$i];\n            if( $aCapital && count($ca)==3 )\n                $s = $ca[2];\n            else\n                $s = $ca[1];\n            return sprintf('&#%04d;',hexdec($s));\n        }\n        else\n            return '';\n    }\n}\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_utils.inc.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_UTILS.INC\n // Description: Collection of non-essential \"nice to have\" utilities\n // Created:     2005-11-20\n // Ver:         $Id: jpgraph_utils.inc.php 1777 2009-08-23 17:34:36Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\n//===================================================\n// CLASS FuncGenerator\n// Description: Utility class to help generate data for function plots.\n// The class supports both parametric and regular functions.\n//===================================================\nclass FuncGenerator {\n    private $iFunc='',$iXFunc='',$iMin,$iMax,$iStepSize;\n\n    function __construct($aFunc,$aXFunc='') {\n        $this->iFunc = $aFunc;\n        $this->iXFunc = $aXFunc;\n    }\n\n    function E($aXMin,$aXMax,$aSteps=50) {\n        $this->iMin = $aXMin;\n        $this->iMax = $aXMax;\n        $this->iStepSize = ($aXMax-$aXMin)/$aSteps;\n\n        if( $this->iXFunc != '' )\n        $t = 'for($i='.$aXMin.'; $i<='.$aXMax.'; $i += '.$this->iStepSize.') {$ya[]='.$this->iFunc.';$xa[]='.$this->iXFunc.';}';\n        elseif( $this->iFunc != '' )\n        $t = 'for($x='.$aXMin.'; $x<='.$aXMax.'; $x += '.$this->iStepSize.') {$ya[]='.$this->iFunc.';$xa[]=$x;} $x='.$aXMax.';$ya[]='.$this->iFunc.';$xa[]=$x;';\n        else\n        JpGraphError::RaiseL(24001);//('FuncGenerator : No function specified. ');\n\n        @eval($t);\n\n        // If there is an error in the function specifcation this is the only\n        // way we can discover that.\n        if( empty($xa) || empty($ya) )\n        JpGraphError::RaiseL(24002);//('FuncGenerator : Syntax error in function specification ');\n\n        return array($xa,$ya);\n    }\n}\n\n\n//=============================================================================\n// CLASS DateScaleUtils\n// Description: Help to create a manual date scale\n//=============================================================================\ndefine('DSUTILS_MONTH',1); // Major and minor ticks on a monthly basis\ndefine('DSUTILS_MONTH1',1); // Major and minor ticks on a monthly basis\ndefine('DSUTILS_MONTH2',2); // Major ticks on a bi-monthly basis\ndefine('DSUTILS_MONTH3',3); // Major icks on a tri-monthly basis\ndefine('DSUTILS_MONTH6',4); // Major on a six-monthly basis\ndefine('DSUTILS_WEEK1',5); // Major ticks on a weekly basis\ndefine('DSUTILS_WEEK2',6); // Major ticks on a bi-weekly basis\ndefine('DSUTILS_WEEK4',7); // Major ticks on a quod-weekly basis\ndefine('DSUTILS_DAY1',8); // Major ticks on a daily basis\ndefine('DSUTILS_DAY2',9); // Major ticks on a bi-daily basis\ndefine('DSUTILS_DAY4',10); // Major ticks on a qoud-daily basis\ndefine('DSUTILS_YEAR1',11); // Major ticks on a yearly basis\ndefine('DSUTILS_YEAR2',12); // Major ticks on a bi-yearly basis\ndefine('DSUTILS_YEAR5',13); // Major ticks on a five-yearly basis\n\n\nclass DateScaleUtils {\n    public static $iMin=0, $iMax=0;\n\n    private static $starthour,$startmonth, $startday, $startyear;\n    private static $endmonth, $endyear, $endday;\n    private static $tickPositions=array(),$minTickPositions=array();\n    private static $iUseWeeks = true;\n\n    static function UseWeekFormat($aFlg) {\n        self::$iUseWeeks = $aFlg;\n    }\n\n    static function doYearly($aType,$aMinor=false) {\n        $i=0; $j=0;\n        $m = self::$startmonth;\n        $y = self::$startyear;\n\n        if( self::$startday == 1 ) {\n            self::$tickPositions[$i++] = mktime(0,0,0,$m,1,$y);\n        }\n        ++$m;\n\n\n        switch( $aType ) {\n            case DSUTILS_YEAR1:\n                for($y=self::$startyear; $y <= self::$endyear; ++$y ) {\n                    if( $aMinor ) {\n                        while( $m <= 12 ) {\n                            if( !($y == self::$endyear && $m > self::$endmonth) ) {\n                                self::$minTickPositions[$j++] = mktime(0,0,0,$m,1,$y);\n                            }\n                            ++$m;\n                        }\n                        $m=1;\n                    }\n                    self::$tickPositions[$i++] = mktime(0,0,0,1,1,$y);\n                }\n                break;\n            case DSUTILS_YEAR2:\n                $y=self::$startyear;\n                while( $y <= self::$endyear ) {\n                    self::$tickPositions[$i++] = mktime(0,0,0,1,1,$y);\n                    for($k=0; $k < 1; ++$k ) {\n                        ++$y;\n                        if( $aMinor ) {\n                            self::$minTickPositions[$j++] = mktime(0,0,0,1,1,$y);\n                        }\n                    }\n                    ++$y;\n                }\n                break;\n            case DSUTILS_YEAR5:\n                $y=self::$startyear;\n                while( $y <= self::$endyear ) {\n                    self::$tickPositions[$i++] = mktime(0,0,0,1,1,$y);\n                    for($k=0; $k < 4; ++$k ) {\n                        ++$y;\n                        if( $aMinor ) {\n                            self::$minTickPositions[$j++] = mktime(0,0,0,1,1,$y);\n                        }\n                    }\n                    ++$y;\n                }\n                break;\n        }\n    }\n\n    static function doDaily($aType,$aMinor=false) {\n        $m = self::$startmonth;\n        $y = self::$startyear;\n        $d = self::$startday;\n        $h = self::$starthour;\n        $i=0;$j=0;\n\n        if( $h == 0 ) {\n            self::$tickPositions[$i++] = mktime(0,0,0,$m,$d,$y);\n        }\n        $t = mktime(0,0,0,$m,$d,$y);\n\n        switch($aType) {\n            case DSUTILS_DAY1:\n                while( $t <= self::$iMax ) {\n                    $t = strtotime('+1 day',$t);\n                    self::$tickPositions[$i++] = $t;\n                    if( $aMinor ) {\n                        self::$minTickPositions[$j++] = strtotime('+12 hours',$t);\n                    }\n                }\n                break;\n            case DSUTILS_DAY2:\n                while( $t <= self::$iMax ) {\n                    $t = strtotime('+1 day',$t);\n                    if( $aMinor ) {\n                        self::$minTickPositions[$j++] = $t;\n                    }\n                    $t = strtotime('+1 day',$t);\n                    self::$tickPositions[$i++] = $t;\n                }\n                break;\n            case DSUTILS_DAY4:\n                while( $t <= self::$iMax ) {\n                    for($k=0; $k < 3; ++$k ) {\n                        $t = strtotime('+1 day',$t);\n                        if( $aMinor ) {\n                            self::$minTickPositions[$j++] = $t;\n                        }\n                    }\n                    $t = strtotime('+1 day',$t);\n                    self::$tickPositions[$i++] = $t;\n                }\n                break;\n        }\n    }\n\n    static function doWeekly($aType,$aMinor=false) {\n        $hpd = 3600*24;\n        $hpw = 3600*24*7;\n        // Find out week number of min date\n        $thursday = self::$iMin + $hpd * (3 - (date('w', self::$iMin) + 6) % 7);\n        $week = 1 + (date('z', $thursday) - (11 - date('w', mktime(0, 0, 0, 1, 1, date('Y', $thursday)))) % 7) / 7;\n        $daynumber = date('w',self::$iMin);\n        if( $daynumber == 0 ) $daynumber = 7;\n        $m = self::$startmonth;\n        $y = self::$startyear;\n        $d = self::$startday;\n        $i=0;$j=0;\n        // The assumption is that the weeks start on Monday. If the first day\n        // is later in the week then the first week tick has to be on the following\n        // week.\n        if( $daynumber == 1 ) {\n            self::$tickPositions[$i++] = mktime(0,0,0,$m,$d,$y);\n            $t = mktime(0,0,0,$m,$d,$y) + $hpw;\n        }\n        else {\n            $t = mktime(0,0,0,$m,$d,$y) + $hpd*(8-$daynumber);\n        }\n\n        switch($aType) {\n            case DSUTILS_WEEK1:\n                $cnt=0;\n                break;\n            case DSUTILS_WEEK2:\n                $cnt=1;\n                break;\n            case DSUTILS_WEEK4:\n                $cnt=3;\n                break;\n        }\n        while( $t <= self::$iMax ) {\n            self::$tickPositions[$i++] = $t;\n            for($k=0; $k < $cnt; ++$k ) {\n                $t += $hpw;\n                if( $aMinor ) {\n                    self::$minTickPositions[$j++] = $t;\n                }\n            }\n            $t += $hpw;\n        }\n    }\n\n    static function doMonthly($aType,$aMinor=false) {\n        $monthcount=0;\n        $m = self::$startmonth;\n        $y = self::$startyear;\n        $i=0; $j=0;\n\n        // Skip the first month label if it is before the startdate\n        if( self::$startday == 1 ) {\n            self::$tickPositions[$i++] = mktime(0,0,0,$m,1,$y);\n            $monthcount=1;\n        }\n        if( $aType == 1 ) {\n            if( self::$startday < 15 ) {\n                self::$minTickPositions[$j++] = mktime(0,0,0,$m,15,$y);\n            }\n        }\n        ++$m;\n\n        // Loop through all the years included in the scale\n        for($y=self::$startyear; $y <= self::$endyear; ++$y ) {\n            // Loop through all the months. There are three cases to consider:\n            // 1. We are in the first year and must start with the startmonth\n            // 2. We are in the end year and we must stop at last month of the scale\n            // 3. A year in between where we run through all the 12 months\n            $stopmonth = $y == self::$endyear ? self::$endmonth : 12;\n            while( $m <= $stopmonth ) {\n                switch( $aType ) {\n                    case DSUTILS_MONTH1:\n                        // Set minor tick at the middle of the month\n                        if( $aMinor ) {\n                            if( $m <= $stopmonth ) {\n                                if( !($y==self::$endyear && $m==$stopmonth && self::$endday < 15) )\n                                self::$minTickPositions[$j++] = mktime(0,0,0,$m,15,$y);\n                            }\n                        }\n                        // Major at month\n                        // Get timestamp of first hour of first day in each month\n                        self::$tickPositions[$i++] = mktime(0,0,0,$m,1,$y);\n\n                        break;\n                    case DSUTILS_MONTH2:\n                        if( $aMinor ) {\n                            // Set minor tick at start of each month\n                            self::$minTickPositions[$j++] = mktime(0,0,0,$m,1,$y);\n                        }\n\n                        // Major at every second month\n                        // Get timestamp of first hour of first day in each month\n                        if( $monthcount % 2 == 0 ) {\n                            self::$tickPositions[$i++] = mktime(0,0,0,$m,1,$y);\n                        }\n                        break;\n                    case DSUTILS_MONTH3:\n                        if( $aMinor ) {\n                            // Set minor tick at start of each month\n                            self::$minTickPositions[$j++] = mktime(0,0,0,$m,1,$y);\n                        }\n                        // Major at every third month\n                        // Get timestamp of first hour of first day in each month\n                        if( $monthcount % 3 == 0 ) {\n                            self::$tickPositions[$i++] = mktime(0,0,0,$m,1,$y);\n                        }\n                        break;\n                    case DSUTILS_MONTH6:\n                        if( $aMinor ) {\n                            // Set minor tick at start of each month\n                            self::$minTickPositions[$j++] = mktime(0,0,0,$m,1,$y);\n                        }\n                        // Major at every third month\n                        // Get timestamp of first hour of first day in each month\n                        if( $monthcount % 6 == 0 ) {\n                            self::$tickPositions[$i++] = mktime(0,0,0,$m,1,$y);\n                        }\n                        break;\n                }\n                ++$m;\n                ++$monthcount;\n            }\n            $m=1;\n        }\n\n        // For the case where all dates are within the same month\n        // we want to make sure we have at least two ticks on the scale\n        // since the scale want work properly otherwise\n        if(self::$startmonth == self::$endmonth && self::$startyear == self::$endyear && $aType==1 ) {\n            self::$tickPositions[$i++] = mktime(0 ,0 ,0, self::$startmonth + 1, 1, self::$startyear);\n        }\n\n        return array(self::$tickPositions,self::$minTickPositions);\n    }\n\n    static function GetTicks($aData,$aType=1,$aMinor=false,$aEndPoints=false) {\n        $n = count($aData);\n        return self::GetTicksFromMinMax($aData[0],$aData[$n-1],$aType,$aMinor,$aEndPoints);\n    }\n\n    static function GetAutoTicks($aMin,$aMax,$aMaxTicks=10,$aMinor=false) {\n        $diff = $aMax - $aMin;\n        $spd = 3600*24;\n        $spw = $spd*7;\n        $spm = $spd*30;\n        $spy = $spd*352;\n\n        if( self::$iUseWeeks )\n        $w = 'W';\n        else\n        $w = 'd M';\n\n        // Decision table for suitable scales\n        // First value: Main decision point\n        // Second value: Array of formatting depending on divisor for wanted max number of ticks. <divisor><formatting><format-string>,..\n        $tt = array(\n            array($spw, array(1,DSUTILS_DAY1,'d M',2,DSUTILS_DAY2,'d M',-1,DSUTILS_DAY4,'d M')),\n            array($spm, array(1,DSUTILS_DAY1,'d M',2,DSUTILS_DAY2,'d M',4,DSUTILS_DAY4,'d M',7,DSUTILS_WEEK1,$w,-1,DSUTILS_WEEK2,$w)),\n            array($spy, array(1,DSUTILS_DAY1,'d M',2,DSUTILS_DAY2,'d M',4,DSUTILS_DAY4,'d M',7,DSUTILS_WEEK1,$w,14,DSUTILS_WEEK2,$w,30,DSUTILS_MONTH1,'M',60,DSUTILS_MONTH2,'M',-1,DSUTILS_MONTH3,'M')),\n            array(-1, array(30,DSUTILS_MONTH1,'M-Y',60,DSUTILS_MONTH2,'M-Y',90,DSUTILS_MONTH3,'M-Y',180,DSUTILS_MONTH6,'M-Y',352,DSUTILS_YEAR1,'Y',704,DSUTILS_YEAR2,'Y',-1,DSUTILS_YEAR5,'Y')));\n\n        $ntt = count($tt);\n        $nd = floor($diff/$spd);\n        for($i=0; $i < $ntt; ++$i ) {\n            if( $diff <= $tt[$i][0] || $i==$ntt-1) {\n                $t = $tt[$i][1];\n                $n = count($t)/3;\n                for( $j=0; $j < $n; ++$j ) {\n                    if( $nd/$t[3*$j] <= $aMaxTicks || $j==$n-1) {\n                        $type = $t[3*$j+1];\n                        $fs = $t[3*$j+2];\n                        list($tickPositions,$minTickPositions) = self::GetTicksFromMinMax($aMin,$aMax,$type,$aMinor);\n                        return array($fs,$tickPositions,$minTickPositions,$type);\n                    }\n                }\n            }\n        }\n    }\n\n    static function GetTicksFromMinMax($aMin,$aMax,$aType,$aMinor=false,$aEndPoints=false) {\n        self::$starthour = date('G',$aMin);\n        self::$startmonth = date('n',$aMin);\n        self::$startday = date('j',$aMin);\n        self::$startyear = date('Y',$aMin);\n        self::$endmonth = date('n',$aMax);\n        self::$endyear = date('Y',$aMax);\n        self::$endday = date('j',$aMax);\n        self::$iMin = $aMin;\n        self::$iMax = $aMax;\n\n        if( $aType <= DSUTILS_MONTH6 ) {\n            self::doMonthly($aType,$aMinor);\n        }\n        elseif( $aType <= DSUTILS_WEEK4 ) {\n            self::doWeekly($aType,$aMinor);\n        }\n        elseif( $aType <= DSUTILS_DAY4 ) {\n            self::doDaily($aType,$aMinor);\n        }\n        elseif( $aType <= DSUTILS_YEAR5 ) {\n            self::doYearly($aType,$aMinor);\n        }\n        else {\n            JpGraphError::RaiseL(24003);\n        }\n        // put a label at the very left data pos\n        if( $aEndPoints ) {\n            $tickPositions[$i++] = $aData[0];\n        }\n\n        // put a label at the very right data pos\n        if( $aEndPoints ) {\n            $tickPositions[$i] = $aData[$n-1];\n        }\n\n        return array(self::$tickPositions,self::$minTickPositions);\n    }\n}\n\n//=============================================================================\n// Class ReadFileData\n//=============================================================================\nClass ReadFileData {\n    //----------------------------------------------------------------------------\n    // Desciption:\n    // Read numeric data from a file.\n    // Each value should be separated by either a new line or by a specified\n    // separator character (default is ',').\n    // Before returning the data each value is converted to a proper float\n    // value. The routine is robust in the sense that non numeric data in the\n    // file will be discarded.\n    //\n    // Returns:\n    // The number of data values read on success, FALSE on failure\n    //----------------------------------------------------------------------------\n    static function FromCSV($aFile,&$aData,$aSepChar=',',$aMaxLineLength=1024) {\n        $rh = @fopen($aFile,'r');\n        if( $rh === false ) {\n                return false;\n        }\n        $tmp = array();\n        $lineofdata = fgetcsv($rh, 1000, ',');\n        while ( $lineofdata !== FALSE) {\n            $tmp = array_merge($tmp,$lineofdata);\n            $lineofdata = fgetcsv($rh, $aMaxLineLength, $aSepChar);\n        }\n        fclose($rh);\n\n        // Now make sure that all data is numeric. By default\n        // all data is read as strings\n        $n = count($tmp);\n        $aData = array();\n        $cnt=0;\n        for($i=0; $i < $n; ++$i) {\n            if( $tmp[$i] !== \"\" ) {\n                $aData[$cnt++] = floatval($tmp[$i]);\n            }\n        }\n        return $cnt;\n    }\n\n    //----------------------------------------------------------------------------\n    // Desciption:\n    // Read numeric data from a file.\n    // Each value should be separated by either a new line or by a specified\n    // separator character (default is ',').\n    // Before returning the data each value is converted to a proper float\n    // value. The routine is robust in the sense that non numeric data in the\n    // file will be discarded.\n    //\n    // Options:\n    // 'separator'     => ',',\n    // 'enclosure'     => '\"',\n    // 'readlength'    => 1024,\n    // 'ignore_first'  => false,\n    // 'first_as_key'  => false\n    // 'escape'        => '\\',   # PHP >= 5.3 only\n    //\n    // Returns:\n    // The number of lines read on success, FALSE on failure\n    //----------------------------------------------------------------------------\n    static function FromCSV2($aFile, &$aData, $aOptions = array()) {\n        $aDefaults = array(\n            'separator'     => ',',\n            'enclosure'     => chr(34),\n            'escape'        => chr(92),\n            'readlength'    => 1024,\n            'ignore_first'  => false,\n            'first_as_key'  => false\n            );\n\n        $aOptions = array_merge(\n            $aDefaults, is_array($aOptions) ? $aOptions : array());\n\n        if( $aOptions['first_as_key'] ) {\n            $aOptions['ignore_first'] =  true;\n        }\n\n        $rh = @fopen($aFile, 'r');\n\n        if( $rh === false ) {\n            return false;\n        }\n\n        $aData  = array();\n        $aLine  = fgetcsv($rh,\n                          $aOptions['readlength'],\n                          $aOptions['separator'],\n                          $aOptions['enclosure']\n                          /*, $aOptions['escape']     # PHP >= 5.3 only */\n                          );\n\n        // Use numeric array keys for the columns by default\n        // If specified use first lines values as assoc keys instead\n        $keys = array_keys($aLine);\n        if( $aOptions['first_as_key'] ) {\n            $keys = array_values($aLine);\n        }\n\n        $num_lines = 0;\n        $num_cols  = count($aLine);\n\n        while ($aLine !== false) {\n            if( is_array($aLine) && count($aLine) != $num_cols ) {\n                JpGraphError::RaiseL(24004);\n                // 'ReadCSV2: Column count mismatch in %s line %d'\n            }\n\n            // fgetcsv returns NULL for empty lines\n            if( !is_null($aLine) ) {\n                $num_lines++;\n\n                if( !($aOptions['ignore_first'] && $num_lines == 1) && is_numeric($aLine[0]) ) {\n                    for( $i = 0; $i < $num_cols; $i++ ) {\n                        $aData[ $keys[$i] ][] = floatval($aLine[$i]);\n                    }\n                }\n            }\n\n            $aLine = fgetcsv($rh,\n                             $aOptions['readlength'],\n                             $aOptions['separator'],\n                             $aOptions['enclosure']\n                             /*, $aOptions['escape']     # PHP >= 5.3 only*/\n                );\n        }\n\n        fclose($rh);\n\n        if( $aOptions['ignore_first'] ) {\n            $num_lines--;\n        }\n\n        return $num_lines;\n    }\n\n    // Read data from two columns in a plain text file\n    static function From2Col($aFile, $aCol1, $aCol2, $aSepChar=' ') {\n        $lines = @file($aFile,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);\n        if( $lines === false ) {\n                return false;\n        }\n        $s = '/[\\s]+/';\n        if( $aSepChar == ',' ) {\n                        $s = '/[\\s]*,[\\s]*/';\n        }\n        elseif( $aSepChar == ';' ) {\n                        $s = '/[\\s]*;[\\s]*/';\n        }\n        foreach( $lines as $line => $datarow ) {\n                $split = preg_split($s,$datarow);\n                $aCol1[] = floatval(trim($split[0]));\n                $aCol2[] = floatval(trim($split[1]));\n        }\n\n        return count($lines);\n    }\n\n    // Read data from one columns in a plain text file\n    static function From1Col($aFile, $aCol1) {\n        $lines = @file($aFile,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);\n        if( $lines === false ) {\n                return false;\n        }\n        foreach( $lines as $line => $datarow ) {\n                $aCol1[] = floatval(trim($datarow));\n        }\n\n        return count($lines);\n    }\n\n    static function FromMatrix($aFile,$aSepChar=' ') {\n        $lines = @file($aFile,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);\n        if( $lines === false ) {\n                return false;\n        }\n        $mat = array();\n        $reg = '/'.$aSepChar.'/';\n        foreach( $lines as $line => $datarow ) {\n                $row = preg_split($reg,trim($datarow));\n                foreach ($row as $key => $cell ) {\n                        $row[$key] = floatval(trim($cell));\n                }\n                $mat[] = $row;\n        }\n        return $mat;\n    }\n\n\n}\n\ndefine('__LR_EPSILON', 1.0e-8);\n//=============================================================================\n// Class LinearRegression\n//=============================================================================\nclass LinearRegression {\n        private $ix=array(),$iy=array();\n        private $ib=0, $ia=0;\n        private $icalculated=false;\n        public $iDet=0, $iCorr=0, $iStdErr=0;\n\n        public function __construct($aDataX,$aDataY) {\n                if( count($aDataX) !== count($aDataY) ) {\n                        JpGraph::Raise('LinearRegression: X and Y data array must be of equal length.');\n                }\n                $this->ix = $aDataX;\n                $this->iy = $aDataY;\n        }\n\n        public function Calc() {\n\n                $this->icalculated = true;\n\n                $n = count($this->ix);\n                $sx2 = 0 ;\n                $sy2 = 0 ;\n                $sxy = 0 ;\n                $sx = 0 ;\n                $sy = 0 ;\n\n                for( $i=0; $i < $n; ++$i ) {\n                        $sx2 += $this->ix[$i] * $this->ix[$i];\n                        $sy2 += $this->iy[$i] * $this->iy[$i];\n                        $sxy += $this->ix[$i] * $this->iy[$i];\n                        $sx += $this->ix[$i];\n                        $sy += $this->iy[$i];\n                }\n\n                if( $n*$sx2 - $sx*$sx > __LR_EPSILON ) {\n                        $this->ib = ($n*$sxy - $sx*$sy) / ( $n*$sx2 - $sx*$sx );\n                        $this->ia = ( $sy - $this->ib*$sx ) / $n;\n\n                        $sx = $this->ib * ( $sxy - $sx*$sy/$n );\n                        $sy2 = $sy2 - $sy*$sy/$n;\n                        $sy = $sy2 - $sx;\n\n                        $this->iDet = $sx / $sy2;\n                        $this->iCorr = sqrt($this->iDet);\n                        if( $n > 2 ) {\n                                $this->iStdErr = sqrt( $sy / ($n-2) );\n                        }\n                        else {\n                                $this->iStdErr = NAN ;\n                        }\n                }\n                else {\n                        $this->ib = 0;\n                        $this->ia = 0;\n                }\n\n        }\n\n        public function GetAB() {\n                if( $this->icalculated == false )\n                        $this->Calc();\n                return array($this->ia, $this->ib);\n        }\n\n        public function GetStat() {\n                if( $this->icalculated == false )\n                        $this->Calc();\n                return array($this->iStdErr, $this->iCorr, $this->iDet);\n        }\n\n        public function GetY($aMinX, $aMaxX, $aStep=1) {\n                if( $this->icalculated == false )\n                        $this->Calc();\n\n                $yy = array();\n                $i = 0;\n                for( $x=$aMinX; $x <= $aMaxX; $x += $aStep ) {\n                        $xx[$i  ] = $x;\n                        $yy[$i++] = $this->ia + $this->ib * $x;\n                }\n\n                return array($xx,$yy);\n        }\n\n}\n\n?>\n"
  },
  {
    "path": "include/jpgraph/jpgraph_windrose.php",
    "content": "<?php\n/*=======================================================================\n // File:        JPGRAPH_WINDROSE.PHP\n // Description: Windrose extension for JpGraph\n // Created:     2003-09-17\n // Ver:         $Id: jpgraph_windrose.php 1928 2010-01-11 19:56:51Z ljp $\n //\n // Copyright (c) Asial Corporation. All rights reserved.\n //========================================================================\n */\n\nrequire_once('jpgraph_glayout_vh.inc.php');\n\n//------------------------------------------------------------------------\n// Determine how many compass directions to show\n//------------------------------------------------------------------------\ndefine('WINDROSE_TYPE4',1);\ndefine('WINDROSE_TYPE8',2);\ndefine('WINDROSE_TYPE16',3);\ndefine('WINDROSE_TYPEFREE',4);\n\n//------------------------------------------------------------------------\n// How should the labels for the circular grids be aligned\n//------------------------------------------------------------------------\ndefine('LBLALIGN_CENTER',1);\ndefine('LBLALIGN_TOP',2);\n\n//------------------------------------------------------------------------\n// How should the labels around the plot be align\n//------------------------------------------------------------------------\ndefine('LBLPOSITION_CENTER',1);\ndefine('LBLPOSITION_EDGE',2);\n\n//------------------------------------------------------------------------\n// Interpretation of ordinal values in the data\n//------------------------------------------------------------------------\ndefine('KEYENCODING_CLOCKWISE',1);\ndefine('KEYENCODING_ANTICLOCKWISE',2);\n\n// Internal debug flag\ndefine('__DEBUG',false);\n\n\n//===================================================\n// CLASS WindrosePlotScale\n//===================================================\nclass WindrosePlotScale {\n    private $iMax,$iDelta=5;\n    private $iNumCirc=3;\n    public $iMaxNum=0;\n    private $iLblFmt='%.0f%%';\n    public $iFontFamily=FF_VERDANA,$iFontStyle=FS_NORMAL,$iFontSize=10;\n    public $iZFontFamily=FF_ARIAL,$iZFontStyle=FS_NORMAL,$iZFontSize=10;\n    public $iFontColor='black',$iZFontColor='black';\n    private $iFontFrameColor=false, $iFontBkgColor=false;\n    private $iLblZeroTxt=null;\n    private $iLblAlign=LBLALIGN_CENTER;\n    public $iAngle='auto';\n    private $iManualScale = false;\n    private $iHideLabels = false;\n\n    function __construct($aData) {\n        $max=0;\n        $totlegsum = 0;\n        $maxnum=0;\n        $this->iZeroSum=0;\n        foreach( $aData as $idx => $legdata ) {\n            $legsum = array_sum($legdata);\n            $maxnum = max($maxnum,count($legdata)-1);\n            $max = max($legsum-$legdata[0],$max);\n            $totlegsum += $legsum;\n            $this->iZeroSum += $legdata[0] ;\n        }\n        if( round($totlegsum) > 100 ) {\n            JpGraphError::RaiseL(22001,$legsum);\n            //(\"Total percentage for all windrose legs in a windrose plot can not exceed  100% !\\n(Current max is: \".$legsum.')');\n        }\n        $this->iMax = $max ;\n        $this->iMaxNum = $maxnum;\n        $this->iNumCirc = $this->GetNumCirc();\n        $this->iMaxVal = $this->iNumCirc * $this->iDelta ;\n    }\n\n    // Return number of grid circles\n    function GetNumCirc() {\n        // Never return less than 1 circles\n        $num = ceil($this->iMax / $this->iDelta);\n        return max(1,$num) ;\n    }\n\n    function SetMaxValue($aMax) {\n        $this->iMax = $aMax;\n        $this->iNumCirc = $this->GetNumCirc();\n        $this->iMaxVal = $this->iNumCirc * $this->iDelta ;\n    }\n\n    // Set step size for circular grid\n    function Set($aMax,$aDelta=null) {\n        if( $aDelta==null ) {\n            $this->SetMaxValue($aMax);\n            return;\n        }\n        $this->iDelta = $aDelta;\n        $this->iNumCirc = ceil($aMax/$aDelta); //$this->GetNumCirc();\n        $this->iMaxVal = $this->iNumCirc * $this->iDelta ;\n        $this->iMax=$aMax;\n        // Remember that user has specified interval so don't\n        // do autoscaling\n        $this->iManualScale = true;\n    }\n\n    function AutoScale($aRadius,$aMinDist=30) {\n\n        if( $this->iManualScale ) return;\n\n        // Make sure distance (in pixels) between two circles\n        // is never less than $aMinDist pixels\n        $tst = ceil($aRadius / $this->iNumCirc) ;\n\n        while( $tst <= $aMinDist && $this->iDelta < 100 ) {\n            $this->iDelta += 5;\n            $tst = ceil($aRadius / $this->GetNumCirc()) ;\n        }\n\n        if( $this->iDelta >= 100 ) {\n            JpGraphError::RaiseL(22002);//('Graph is too small to have a scale. Please make the graph larger.');\n        }\n\n        // If the distance is to large try with multiples of 2 instead\n        if( $tst > $aMinDist * 3 ) {\n            $this->iDelta = 2;\n            $tst = ceil($aRadius / $this->iNumCirc) ;\n\n            while( $tst <= $aMinDist && $this->iDelta < 100 ) {\n                $this->iDelta += 2;\n                $tst = ceil($aRadius / $this->GetNumCirc()) ;\n            }\n\n            if( $this->iDelta >= 100 ) {\n                JpGraphError::RaiseL(22002); //('Graph is too small to have a scale. Please make the graph larger.');\n            }\n        }\n\n        $this->iNumCirc = $this->GetNumCirc();\n        $this->iMaxVal = $this->iNumCirc * $this->iDelta ;\n    }\n\n    // Return max of all leg values\n    function GetMax() {\n        return $this->iMax;\n    }\n\n    function Hide($aFlg=true) {\n        $this->iHideLabels = $aFlg;\n    }\n\n    function SetAngle($aAngle) {\n        $this->iAngle = $aAngle ;\n    }\n\n    // Translate a Leg value to radius distance\n    function RelTranslate($aVal,$r,$ri) {\n        $tv = round($aVal/$this->iMaxVal*($r-$ri));\n        return $tv ;\n    }\n\n    function SetLabelAlign($aAlign) {\n        $this->iLblAlign = $aAlign ;\n    }\n\n    function SetLabelFormat($aFmt) {\n        $this->iLblFmt = $aFmt ;\n    }\n\n    function SetLabelFillColor($aBkgColor,$aBorderColor=false) {\n\n        $this->iFontBkgColor = $aBkgColor;\n        if( $aBorderColor === false ) {\n            $this->iFontFrameColor = $aBkgColor;\n        }\n        else {\n            $this->iFontFrameColor = $aBorderColor;\n        }\n    }\n\n    function SetFontColor($aColor) {\n        $this->iFontColor = $aColor ;\n        $this->iZFontColor = $aColor ;\n    }\n\n    function SetFont($aFontFamily,$aFontStyle=FS_NORMAL,$aFontSize=10) {\n        $this->iFontFamily = $aFontFamily ;\n        $this->iFontStyle = $aFontStyle ;\n        $this->iFontSize = $aFontSize ;\n        $this->SetZFont($aFontFamily,$aFontStyle,$aFontSize);\n    }\n\n    function SetZFont($aFontFamily,$aFontStyle=FS_NORMAL,$aFontSize=10) {\n        $this->iZFontFamily = $aFontFamily ;\n        $this->iZFontStyle = $aFontStyle ;\n        $this->iZFontSize = $aFontSize ;\n    }\n\n    function SetZeroLabel($aTxt) {\n        $this->iLblZeroTxt = $aTxt ;\n    }\n\n    function SetZFontColor($aColor) {\n        $this->iZFontColor = $aColor ;\n    }\n\n    function StrokeLabels($aImg,$xc,$yc,$ri,$rr) {\n\n        if( $this->iHideLabels ) return;\n\n        // Setup some convinient vairables\n        $a = $this->iAngle * M_PI/180.0;\n        $n = $this->iNumCirc;\n        $d = $this->iDelta;\n\n        // Setup the font and font color\n        $val = new Text();\n        $val->SetFont($this->iFontFamily,$this->iFontStyle,$this->iFontSize);\n        $val->SetColor($this->iFontColor);\n\n        if( $this->iFontBkgColor !== false ) {\n            $val->SetBox($this->iFontBkgColor,$this->iFontFrameColor);\n        }\n\n        // Position the labels relative to the radiant circles\n        if( $this->iLblAlign == LBLALIGN_TOP ) {\n            if( $a > 0 && $a <= M_PI/2 ) {\n                $val->SetAlign('left','bottom');\n            }\n            elseif( $a > M_PI/2 && $a <= M_PI ) {\n                $val->SetAlign('right','bottom');\n            }\n        }\n        elseif( $this->iLblAlign == LBLALIGN_CENTER ) {\n            $val->SetAlign('center','center');\n        }\n\n        // Stroke the labels close to each circle\n        $v = $d ;\n        $si = sin($a);\n        $co = cos($a);\n        for( $i=0; $i < $n; ++$i, $v += $d ) {\n            $r = $ri + ($i+1) * $rr;\n            $x = $xc + $co * $r;\n            $y = $yc - $si * $r;\n            $val->Set(sprintf($this->iLblFmt,$v));\n            $val->Stroke($aImg,$x,$y);\n        }\n\n        // Print the text in the zero circle\n        if( $this->iLblZeroTxt === null ) {\n            $this->iLblZeroTxt = sprintf($this->iLblFmt,$this->iZeroSum);\n        }\n        else {\n            $this->iLblZeroTxt = sprintf($this->iLblZeroTxt,$this->iZeroSum);\n        }\n\n        $val->Set($this->iLblZeroTxt);\n        $val->SetAlign('center','center');\n        $val->SetParagraphAlign('center');\n        $val->SetColor($this->iZFontColor);\n        $val->SetFont($this->iZFontFamily,$this->iZFontStyle,$this->iZFontSize);\n        $val->Stroke($aImg,$xc,$yc);\n    }\n}\n\n//===================================================\n// CLASS LegendStyle\n//===================================================\nclass LegendStyle {\n    public $iLength = 40, $iMargin = 20 , $iBottomMargin=5;\n    public $iCircleWeight=2,  $iCircleRadius = 18, $iCircleColor='black';\n    public $iTxtFontFamily=FF_VERDANA,$iTxtFontStyle=FS_NORMAL,$iTxtFontSize=8;\n    public $iLblFontFamily=FF_VERDANA,$iLblFontStyle=FS_NORMAL,$iLblFontSize=8;\n    public $iCircleFontFamily=FF_VERDANA,$iCircleFontStyle=FS_NORMAL,$iCircleFontSize=8;\n    public $iLblFontColor='black',$iTxtFontColor='black',$iCircleFontColor='black';\n    public $iShow=true;\n    public $iFormatString='%.1f';\n    public $iTxtMargin=6, $iTxt='';\n    public $iZCircleTxt='Calm';\n\n    function SetFont($aFontFamily,$aFontStyle=FS_NORMAL,$aFontSize=10) {\n        $this->iLblFontFamily = $aFontFamily ;\n        $this->iLblFontStyle = $aFontStyle ;\n        $this->iLblFontSize = $aFontSize ;\n        $this->iTxtFontFamily = $aFontFamily ;\n        $this->iTxtFontStyle = $aFontStyle ;\n        $this->iTxtFontSize = $aFontSize ;\n        $this->iCircleFontFamily = $aFontFamily ;\n        $this->iCircleFontStyle = $aFontStyle ;\n        $this->iCircleFontSize = $aFontSize ;\n    }\n\n    function SetLFont($aFontFamily,$aFontStyle=FS_NORMAL,$aFontSize=10) {\n        $this->iLblFontFamily = $aFontFamily ;\n        $this->iLblFontStyle = $aFontStyle ;\n        $this->iLblFontSize = $aFontSize ;\n    }\n\n    function SetTFont($aFontFamily,$aFontStyle=FS_NORMAL,$aFontSize=10) {\n        $this->iTxtFontFamily = $aFontFamily ;\n        $this->iTxtFontStyle = $aFontStyle ;\n        $this->iTxtFontSize = $aFontSize ;\n    }\n\n    function SetCFont($aFontFamily,$aFontStyle=FS_NORMAL,$aFontSize=10) {\n        $this->iCircleFontFamily = $aFontFamily ;\n        $this->iCircleFontStyle = $aFontStyle ;\n        $this->iCircleFontSize = $aFontSize ;\n    }\n\n\n    function SetFontColor($aColor) {\n        $this->iTxtFontColor = $aColor ;\n        $this->iLblFontColor = $aColor ;\n        $this->iCircleFontColor = $aColor ;\n    }\n\n    function SetTFontColor($aColor) {\n        $this->iTxtFontColor = $aColor ;\n    }\n\n    function SetLFontColor($aColor) {\n        $this->iLblFontColor = $aColor ;\n    }\n\n    function SetCFontColor($aColor) {\n        $this->iCircleFontColor = $aColor ;\n    }\n\n    function SetCircleWeight($aWeight) {\n        $this->iCircleWeight = $aWeight;\n    }\n\n    function SetCircleRadius($aRadius) {\n        $this->iCircleRadius = $aRadius;\n    }\n\n    function SetCircleColor($aColor) {\n        $this->iCircleColor = $aColor ;\n    }\n\n    function SetCircleText($aTxt) {\n        $this->iZCircleTxt = $aTxt;\n    }\n\n    function SetMargin($aMarg,$aBottomMargin=5) {\n        $this->iMargin=$aMarg;\n        $this->iBottomMargin=$aBottomMargin;\n    }\n\n    function SetLength($aLength) {\n        $this->iLength = $aLength ;\n    }\n\n    function Show($aFlg=true) {\n        $this->iShow = $aFlg;\n    }\n\n    function Hide($aFlg=true) {\n        $this->iShow = ! $aFlg;\n    }\n\n    function SetFormat($aFmt) {\n        $this->iFormatString=$aFmt;\n    }\n\n    function SetText($aTxt) {\n        $this->iTxt = $aTxt ;\n    }\n\n}\n\ndefine('RANGE_OVERLAPPING',0);\ndefine('RANGE_DISCRETE',1);\n\n//===================================================\n// CLASS WindrosePlot\n//===================================================\nclass WindrosePlot {\n    private $iAntiAlias=true;\n    private $iData=array();\n    public $iX=0.5,$iY=0.5;\n    public $iSize=0.55;\n    private $iGridColor1='gray',$iGridColor2='darkgreen';\n    private $iRadialColorArray=array();\n    private $iRadialWeightArray=array();\n    private $iRadialStyleArray=array();\n    private $iRanges = array(1,2,3,5,6,10,13.5,99.0);\n    private $iRangeStyle = RANGE_OVERLAPPING ;\n    public $iCenterSize=60;\n    private $iType = WINDROSE_TYPE16;\n    public $iFontFamily=FF_VERDANA,$iFontStyle=FS_NORMAL,$iFontSize=10;\n    public $iFontColor='darkgray';\n    private $iRadialGridStyle='longdashed';\n    private $iAllDirectionLabels =  array('E','ENE','NE','NNE','N','NNW','NW','WNW','W','WSW','SW','SSW','S','SSE','SE','ESE');\n    private $iStandardDirections = array();\n    private $iCircGridWeight=3, $iRadialGridWeight=1;\n    private $iLabelMargin=12;\n    private $iLegweights = array(2,4,6,8,10,12,14,16,18,20);\n    private $iLegColors = array('orange','black','blue','red','green','purple','navy','yellow','brown');\n    private $iLabelFormatString='', $iLabels=array();\n    private $iLabelPositioning = LBLPOSITION_EDGE;\n    private $iColor='white';\n    private $iShowBox=false, $iBoxColor='black',$iBoxWeight=1,$iBoxStyle='solid';\n    private $iOrdinalEncoding=KEYENCODING_ANTICLOCKWISE;\n    public $legend=null;\n\n    function __construct($aData) {\n        $this->iData = $aData;\n        $this->legend = new LegendStyle();\n\n        // Setup the scale\n        $this->scale = new WindrosePlotScale($this->iData);\n\n        // default label for free type i agle and a degree sign\n        $this->iLabelFormatString = '%.1f'.SymChar::Get('degree');\n\n        $delta = 2*M_PI/16;\n        for( $i=0, $a=0; $i < 16; ++$i, $a += $delta ) {\n            $this->iStandardDirections[$this->iAllDirectionLabels[$i]] = $a;\n        }\n    }\n\n    // Dummy method to make window plots have the same signature as the\n    // layout classes since windrose plots are \"leaf\" classes in the hierarchy\n    function LayoutSize() {\n        return 1;\n    }\n\n    function SetSize($aSize) {\n        $this->iSize = $aSize;\n    }\n\n    function SetDataKeyEncoding($aEncoding) {\n        $this->iOrdinalEncoding = $aEncoding;\n    }\n\n    function SetColor($aColor) {\n        $this->iColor = $aColor;\n    }\n\n    function SetRadialColors($aColors) {\n        $this->iRadialColorArray = $aColors;\n    }\n\n    function SetRadialWeights($aWeights) {\n        $this->iRadialWeightArray = $aWeights;\n    }\n\n    function SetRadialStyles($aStyles) {\n        $this->iRadialStyleArray = $aStyles;\n    }\n\n    function SetBox($aColor='black',$aWeight=1, $aStyle='solid', $aShow=true) {\n        $this->iShowBox = $aShow ;\n        $this->iBoxColor = $aColor ;\n        $this->iBoxWeight = $aWeight ;\n        $this->iBoxStyle = $aStyle;\n    }\n\n    function SetLabels($aLabels) {\n        $this->iLabels = $aLabels ;\n    }\n\n    function SetLabelMargin($aMarg) {\n        $this->iLabelMargin = $aMarg ;\n    }\n\n    function SetLabelFormat($aLblFormat) {\n        $this->iLabelFormatString = $aLblFormat ;\n    }\n\n    function SetCompassLabels($aLabels) {\n        if( count($aLabels) != 16 ) {\n            JpgraphError::RaiseL(22004); //('Label specification for windrose directions must have 16 values (one for each compass direction).');\n        }\n        $this->iAllDirectionLabels = $aLabels ;\n\n        $delta = 2*M_PI/16;\n        for( $i=0, $a=0; $i < 16; ++$i, $a += $delta ) {\n            $this->iStandardDirections[$this->iAllDirectionLabels[$i]] = $a;\n        }\n\n    }\n\n    function SetCenterSize($aSize) {\n        $this->iCenterSize = $aSize;\n    }\n    // Alias for SetCenterSize\n    function SetZCircleSize($aSize) {\n        $this->iCenterSize = $aSize;\n    }\n\n    function SetFont($aFFam,$aFStyle=FS_NORMAL,$aFSize=10) {\n        $this->iFontFamily = $aFFam ;\n        $this->iFontStyle = $aFStyle ;\n        $this->iFontSize = $aFSize ;\n    }\n\n    function SetFontColor($aColor) {\n        $this->iFontColor=$aColor;\n    }\n\n    function SetGridColor($aColor1,$aColor2) {\n        $this->iGridColor1 = $aColor1;\n        $this->iGridColor2 = $aColor2;\n    }\n\n    function SetGridWeight($aGrid1=1,$aGrid2=2) {\n        $this->iCircGridWeight = $aGrid1 ;\n        $this->iRadialGridWeight = $aGrid2 ;\n    }\n\n    function SetRadialGridStyle($aStyle) {\n        $aStyle = strtolower($aStyle);\n        if( !in_array($aStyle,array('solid','dotted','dashed','longdashed')) ) {\n            JpGraphError::RaiseL(22005); //(\"Line style for radial lines must be on of ('solid','dotted','dashed','longdashed') \");\n        }\n        $this->iRadialGridStyle=$aStyle;\n    }\n\n    function SetRanges($aRanges) {\n        $this->iRanges = $aRanges;\n    }\n\n    function SetRangeStyle($aStyle) {\n        $this->iRangeStyle = $aStyle;\n    }\n\n    function SetRangeColors($aLegColors) {\n        $this->iLegColors = $aLegColors;\n    }\n\n    function SetRangeWeights($aWeights) {\n        $n=count($aWeights);\n        for($i=0; $i< $n; ++$i ) {\n            $aWeights[$i] = floor($aWeights[$i]/2);\n        }\n        $this->iLegweights = $aWeights;\n\n    }\n\n    function SetType($aType) {\n        if( $aType < WINDROSE_TYPE4 || $aType > WINDROSE_TYPEFREE ) {\n            JpGraphError::RaiseL(22006); //('Illegal windrose type specified.');\n        }\n        $this->iType = $aType;\n    }\n\n    // Alias for SetPos()\n    function SetCenterPos($aX,$aY) {\n        $this->iX = $aX;\n        $this->iY = $aY;        \n    }\n    \n    function SetPos($aX,$aY) {\n        $this->iX = $aX;\n        $this->iY = $aY;\n    }\n\n    function SetAntiAlias($aFlag) {\n        $this->iAntiAlias = $aFlag ;\n        if( ! $aFlag )\n        $this->iCircGridWeight = 1;\n    }\n\n    function _ThickCircle($aImg,$aXC,$aYC,$aRad,$aWeight,$aColor) {\n\n        $aImg->SetColor($aColor);\n        $aRad *= 2 ;\n        $aImg->Ellipse($aXC,$aYC,$aRad,$aRad);\n        if( $aWeight > 1 ) {\n            $aImg->Ellipse($aXC,$aYC,$aRad+1,$aRad+1);\n            $aImg->Ellipse($aXC,$aYC,$aRad+2,$aRad+2);\n            if( $aWeight > 2 ) {\n                $aImg->Ellipse($aXC,$aYC,$aRad+3,$aRad+3);\n                $aImg->Ellipse($aXC,$aYC,$aRad+3,$aRad+4);\n                $aImg->Ellipse($aXC,$aYC,$aRad+4,$aRad+3);\n            }\n        }\n    }\n\n    function _StrokeWindLeg($aImg,$xc,$yc,$a,$ri,$r,$weight,$color) {\n\n        // If less than 1 px long then we assume this has been caused by rounding problems\n        // and should not be stroked\n        if( $r < 1 ) return;\n\n        $xt = $xc + cos($a)*$ri;\n        $yt = $yc - sin($a)*$ri;\n        $xxt = $xc + cos($a)*($ri+$r);\n        $yyt = $yc - sin($a)*($ri+$r);\n\n        $x1 = $xt - $weight*sin($a);\n        $y1 = $yt - $weight*cos($a);\n        $x2 = $xxt - $weight*sin($a);\n        $y2 = $yyt - $weight*cos($a);\n\n        $x3 = $xxt + $weight*sin($a);\n        $y3 = $yyt + $weight*cos($a);\n        $x4 = $xt + $weight*sin($a);\n        $y4 = $yt + $weight*cos($a);\n\n        $pts = array($x1,$y1,$x2,$y2,$x3,$y3,$x4,$y4);\n        $aImg->SetColor($color);\n        $aImg->FilledPolygon($pts);\n\n    }\n\n    function _StrokeLegend($aImg,$x,$y,$scaling=1,$aReturnWidth=false) {\n\n        if( ! $this->legend->iShow ) return 0;\n\n        $nlc = count($this->iLegColors);\n        $nlw = count($this->iLegweights);\n\n        // Setup font for ranges\n        $value = new Text();\n        $value->SetAlign('center','bottom');\n        $value->SetFont($this->legend->iLblFontFamily,\n        $this->legend->iLblFontStyle,\n        $this->legend->iLblFontSize*$scaling);\n        $value->SetColor($this->legend->iLblFontColor);\n\n        // Remember x-center\n        $xcenter = $x ;\n\n        // Construct format string\n        $fmt = $this->legend->iFormatString.'-'.$this->legend->iFormatString;\n\n        // Make sure that the length of each range is enough to cover the\n        // size of the labels\n        $tst = sprintf($fmt,$this->iRanges[0],$this->iRanges[1]);\n        $value->Set($tst);\n        $w = $value->GetWidth($aImg);\n        $l = round(max($this->legend->iLength * $scaling,$w*1.5));\n\n        $r = $this->legend->iCircleRadius * $scaling ;\n        $len = 2*$r + $this->scale->iMaxNum * $l;\n\n        // We are called just to find out the width\n        if( $aReturnWidth ) return $len;\n\n        $x -= round($len/2);\n        $x += $r;\n\n        // 4 pixels extra vertical margin since the circle sometimes is +/- 1 pixel of the\n        // theorethical radius due to imperfection in the GD library\n        //$y -= round(max($r,$scaling*$this->iLegweights[($this->scale->iMaxNum-1) % $nlw])+4*$scaling);\n        $y -= ($this->legend->iCircleRadius + 2)*$scaling+$this->legend->iBottomMargin*$scaling;\n\n        // Adjust for bottom text\n        if( $this->legend->iTxt != '' ) {\n            // Setup font for text\n            $value->Set($this->legend->iTxt);\n            $y -= /*$this->legend->iTxtMargin + */ $value->GetHeight($aImg);\n        }\n\n        // Stroke 0-circle\n        $this->_ThickCircle($aImg,$x,$y,$r,$this->legend->iCircleWeight,\n        $this->legend->iCircleColor);\n\n        // Remember the center of the circe\n        $xc=$x; $yc=$y;\n\n        $value->SetAlign('center','bottom');\n        $x += $r+1;\n\n        // Stroke all used ranges\n        $txty = $y -\n        round($this->iLegweights[($this->scale->iMaxNum-1)%$nlw]*$scaling) - 4*$scaling;\n        if( $this->scale->iMaxNum >= count($this->iRanges) ) {\n            JpGraphError::RaiseL(22007); //('To few values for the range legend.');\n        }\n        $i=0;$idx=0;\n        while( $i < $this->scale->iMaxNum ) {\n            $y1 = $y - round($this->iLegweights[$i % $nlw]*$scaling);\n            $y2 = $y + round($this->iLegweights[$i % $nlw]*$scaling);\n            $x2 = $x + $l ;\n            $aImg->SetColor($this->iLegColors[$i % $nlc]);\n            $aImg->FilledRectangle($x,$y1,$x2,$y2);\n            if( $this->iRangeStyle == RANGE_OVERLAPPING ) {\n                $lbl = sprintf($fmt,$this->iRanges[$idx],$this->iRanges[$idx+1]);\n            }\n            else {\n                $lbl = sprintf($fmt,$this->iRanges[$idx],$this->iRanges[$idx+1]);\n                ++$idx;\n            }\n            $value->Set($lbl);\n            $value->Stroke($aImg,$x+$l/2,$txty);\n            $x = $x2;\n            ++$i;++$idx;\n        }\n\n        // Setup circle font\n        $value->SetFont($this->legend->iCircleFontFamily,\n        $this->legend->iCircleFontStyle,\n        $this->legend->iCircleFontSize*$scaling);\n        $value->SetColor($this->legend->iCircleFontColor);\n\n        // Stroke 0-circle text\n        $value->Set($this->legend->iZCircleTxt);\n        $value->SetAlign('center','center');\n        $value->ParagraphAlign('center');\n        $value->Stroke($aImg,$xc,$yc);\n\n        // Setup circle font\n        $value->SetFont($this->legend->iTxtFontFamily,\n        $this->legend->iTxtFontStyle,\n        $this->legend->iTxtFontSize*$scaling);\n        $value->SetColor($this->legend->iTxtFontColor);\n\n        // Draw the text under the legend\n        $value->Set($this->legend->iTxt);\n        $value->SetAlign('center','top');\n        $value->SetParagraphAlign('center');\n        $value->Stroke($aImg,$xcenter,$y2+$this->legend->iTxtMargin*$scaling);\n    }\n\n    function SetAutoScaleAngle($aIsRegRose=true) {\n\n        // If the user already has manually set an angle don't\n        // trye to find a position\n        if( is_numeric($this->scale->iAngle) )\n            return;\n\n        if( $aIsRegRose ) {\n\n            // Create a complete data for all directions\n            // and translate string directions to ordinal values.\n            // This will much simplify the logic below\n            for( $i=0; $i < 16; ++$i ) {\n                $dtxt = $this->iAllDirectionLabels[$i];\n                if( !empty($this->iData[$dtxt]) ) {\n                    $data[$i] = $this->iData[$dtxt];\n                }\n                elseif( !empty($this->iData[strtolower($dtxt)]) ) {\n                    $data[$i] = $this->iData[strtolower($dtxt)];\n                }\n                elseif( !empty($this->iData[$i]) ) {\n                    $data[$i] = $this->iData[$i];\n                }\n                else {\n                    $data[$i] = array();\n                }\n            }\n\n            // Find the leg which has the lowest weighted sum of number of data around it\n            $c0 = array_sum($data[0]);\n            $c1 = array_sum($data[1]);\n            $found = 1;\n            $min = $c0+$c1*100; // Initialize to a high value\n            for( $i=1; $i < 15; ++$i ) {\n                $c2 = array_sum($data[$i+1]);\n\n                // Weight the leg we will use more to give preference\n                // to a short middle leg even if the 3 way sum is similair\n                $w = $c0 + 3*$c1 + $c2 ;\n                if( $w < $min ) {\n                    $min = $w;\n                    $found = $i;\n                }\n                $c0 = $c1;\n                $c1 = $c2;\n            }\n            $this->scale->iAngle = $found*22.5;\n        }\n        else {\n            $n = count($this->iData);\n            foreach( $this->iData as $dir => $leg ) {\n                if( !is_numeric($dir) ) {\n                    $pos = array_search(strtoupper($dir),$this->iAllDirectionLabels);\n                    if( $pos !== false ) {\n                        $dir = $pos*22.5;\n                    }\n                }\n                $data[round($dir)] = $leg;\n            }\n\n            // Get all the angles for the data and sort it\n            $keys = array_keys($data);\n            sort($keys, SORT_NUMERIC);\n\n            $n = count($data);\n            $found = false;\n            $max = 0 ;\n            for( $i=0; $i < 15; ++$i ) {\n                $try_a = round(22.5*$i);\n\n                if( $try_a > $keys[$n-1] ) break;\n\n                if( in_array($try_a,$keys) ) continue;\n\n                // Find the angle just lower than this\n                $j=0;\n                while( $j < $n && $keys[$j] <= $try_a ) ++$j;\n                if( $j == 0 ) {\n                    $kj = 0; $keys[$n-1];\n                    $d1 = 0; abs($kj-$try_a);\n                }\n                else {\n                    --$j;\n                    $kj = $keys[$j];\n                    $d1 = abs($kj-$try_a);\n                }\n\n                // Find the angle just larger than this\n                $l=$n-1;\n                while( $l >= 0 && $keys[$l] >= $try_a ) --$l;\n                if( $l == $n-1) {\n                    $kl = $keys[0];\n                    $d2 = abs($kl-$try_a);\n                }\n                else {\n                    ++$l;\n                    $kl = $keys[$l];\n                    $d2 = abs($kl-$try_a);\n                }\n\n                // Weight the distance so that legs with large spread\n                // gets a better weight\n                $w = $d1 + $d2;\n                if( $i == 0 ) {\n                    $w = round(1.4 * $w);\n                }\n                $diff = abs($d1 - $d2);\n                $w *= (360-$diff);\n                if( $w > $max ) {\n                    $found = $i;\n                    $max = $w;\n                }\n            }\n\n            $a = $found*22.5;\n\n            // Some heuristics to have some preferred positions\n            if( $keys[$n-1] < 25 ) $a = 45;\n            elseif( $keys[0] > 60 ) $a = 45;\n            elseif( $keys[0] > 25 && $keys[$n-1] < 340 ) $a = 0;\n            elseif( $keys[$n-1] < 75 ) $a = 90;\n            elseif( $keys[$n-1] < 120 ) $a = 135;\n            elseif( $keys[$n-1] < 160 ) $a = 180;\n\n            $this->scale->iAngle = $a ;\n        }\n    }\n\n    function NormAngle($a) {\n        while( $a > 360 ) {\n            $a -= 360;\n        }\n        return $a;\n    }\n\n    function SetLabelPosition($aPos) {\n        $this->iLabelPositioning  = $aPos ;\n    }\n\n    function _StrokeFreeRose($dblImg,$value,$scaling,$xc,$yc,$r,$ri) {\n\n        // Plot radial grid lines and remember the end position\n        // and the angle for later use when plotting the labels\n        if( $this->iType != WINDROSE_TYPEFREE ) {\n            JpGraphError::RaiseL(22008); //('Internal error: Trying to plot free Windrose even though type is not a free windorose');\n        }\n\n        // Check if we should auto-position the angle for the\n        // labels. Basically we try to find a firection with smallest\n        // (or none) data.\n        $this->SetAutoScaleAngle(false);\n\n        $nlc = count($this->iLegColors);\n        $nlw = count($this->iLegweights);\n\n        // Stroke grid lines for directions and remember the\n        // position for the labels\n        $txtpos=array();\n        $num = count($this->iData);\n\n        $keys = array_keys($this->iData);\n\n        foreach( $this->iData as $dir => $legdata ) {\n            if( in_array($dir,$this->iAllDirectionLabels,true) === true) {\n                $a = $this->iStandardDirections[strtoupper($dir)];\n                if( in_array($a*180/M_PI,$keys) ) {\n                    JpGraphError::RaiseL(22009,round($a*180/M_PI));\n                    //('You have specified the same direction twice, once with an angle and once with a compass direction ('.$a*180/M_PI.' degrees.)');\n                }\n            }\n            elseif( is_numeric($dir) ) {\n                $this->NormAngle($dir);\n\n                if( $this->iOrdinalEncoding == KEYENCODING_CLOCKWISE ) {\n                    $dir = 360-$dir;\n                }\n\n                $a = $dir * M_PI/180;\n            }\n            else {\n                JpGraphError::RaiseL(22010);//('Direction must either be a numeric value or one of the 16 compass directions');\n            }\n\n            $xxc = round($xc + cos($a)*$ri);\n            $yyc = round($yc - sin($a)*$ri);\n            $x = round($xc + cos($a)*$r);\n            $y = round($yc - sin($a)*$r);\n            if( empty($this->iRadialColorArray[$dir]) ) {\n                $dblImg->SetColor($this->iGridColor2);\n            }\n            else {\n                $dblImg->SetColor($this->iRadialColorArray[$dir]);\n            }\n            if( empty($this->iRadialWeightArray[$dir]) ) {\n                $dblImg->SetLineWeight($this->iRadialGridWeight);\n            }\n            else {\n                $dblImg->SetLineWeight($this->iRadialWeightArray[$dir]);\n            }\n            if( empty($this->iRadialStyleArray[$dir]) ) {\n                $dblImg->SetLineStyle($this->iRadialGridStyle);\n            }\n            else {\n                $dblImg->SetLineStyle($this->iRadialStyleArray[$dir]);\n            }\n            $dblImg->StyleLine($xxc,$yyc,$x,$y);\n            $txtpos[] = array($x,$y,$a);\n        }\n        $dblImg->SetLineWeight(1);\n\n        // Setup labels\n        $lr = $scaling * $this->iLabelMargin;\n\n        if( $this->iLabelPositioning == LBLPOSITION_EDGE ) {\n            $value->SetAlign('left','top');\n        }\n        else {\n            $value->SetAlign('center','center');\n            $value->SetMargin(0);\n        }\n\n        for($i=0; $i < $num; ++$i ) {\n\n            list($x,$y,$a) = $txtpos[$i];\n\n            // Determine the label\n\n            $da = $a*180/M_PI;\n            if( $this->iOrdinalEncoding == KEYENCODING_CLOCKWISE ) {\n                $da = 360 - $da;\n            }\n\n            //$da = 360-$da;\n            \n            if( !empty($this->iLabels[$keys[$i]]) ) {\n                $lbl = $this->iLabels[$keys[$i]];\n            }\n            else {\n                $lbl = sprintf($this->iLabelFormatString,$da);\n            }\n\n            if( $this->iLabelPositioning == LBLPOSITION_CENTER ) {\n                $dx = $dy = 0;\n            }\n            else {\n                // LBLPOSIITON_EDGE\n                if( $a>=7*M_PI/4 || $a <= M_PI/4 ) $dx=0;\n                if( $a>=M_PI/4 && $a <= 3*M_PI/4 ) $dx=($a-M_PI/4)*2/M_PI;\n                if( $a>=3*M_PI/4 && $a <= 5*M_PI/4 ) $dx=1;\n                if( $a>=5*M_PI/4 && $a <= 7*M_PI/4 ) $dx=(1-($a-M_PI*5/4)*2/M_PI);\n\n                if( $a>=7*M_PI/4 ) $dy=(($a-M_PI)-3*M_PI/4)*2/M_PI;\n                if( $a<=M_PI/4 ) $dy=(0.5+$a*2/M_PI);\n                if( $a>=M_PI/4 && $a <= 3*M_PI/4 ) $dy=1;\n                if( $a>=3*M_PI/4 && $a <= 5*M_PI/4 ) $dy=(1-($a-3*M_PI/4)*2/M_PI);\n                if( $a>=5*M_PI/4 && $a <= 7*M_PI/4 ) $dy=0;\n            }\n\n            $value->Set($lbl);\n            $th = $value->GetHeight($dblImg);\n            $tw = $value->GetWidth($dblImg);\n            $xt=round($lr*cos($a)+$x) - $dx*$tw;\n            $yt=round($y-$lr*sin($a)) - $dy*$th;\n\n            $value->Stroke($dblImg,$xt,$yt);\n        }\n\n        if( __DEBUG ) {\n            $dblImg->SetColor('red');\n            $dblImg->Circle($xc,$yc,$lr+$r);\n        }\n\n        // Stroke all the legs\n        reset($this->iData);\n        $i=0;\n        foreach($this->iData as $dir => $legdata) {\n            $legdata = array_slice($legdata,1);\n            $nn = count($legdata);\n\n            $a = $txtpos[$i][2];\n            $rri = $ri/$scaling;\n            for( $j=0; $j < $nn; ++$j ) {\n                // We want the non scaled original radius\n                $legr = $this->scale->RelTranslate($legdata[$j],$r/$scaling,$ri/$scaling) ;\n                $this->_StrokeWindLeg($dblImg, $xc, $yc, $a,\n                $rri *$scaling,\n                $legr *$scaling,\n                $this->iLegweights[$j % $nlw] * $scaling,\n                $this->iLegColors[$j % $nlc]);\n                $rri += $legr;\n            }\n            ++$i;\n        }\n    }\n\n    // Translate potential string specified compass labels to their\n    // corresponding index.\n    function FixupIndexes($aDataArray,$num) {\n        $ret = array();\n        $keys = array_keys($aDataArray);\n        foreach($aDataArray as $idx => $data) {\n            if( is_string($idx) ) {\n                $idx = strtoupper($idx);\n                $res = array_search($idx,$this->iAllDirectionLabels);\n                if( $res === false ) {\n                    JpGraphError::RaiseL(22011,$idx); //('Windrose index must be numeric or direction label. You have specified index='.$idx);\n                }\n                $idx = $res;\n                if( $idx % (16 / $num) !== 0 ) {\n                    JpGraphError::RaiseL(22012); //('Windrose radial axis specification contains a direction which is not enabled.');\n                }\n                $idx /= (16/$num) ;\n\n                if( in_array($idx,$keys,1) ) {\n                    JpgraphError::RaiseL(22013,$idx); //('You have specified the look&feel for the same compass direction twice, once with text and once with index (Index='.$idx.')');\n                }\n            }\n            if( $idx < 0 || $idx > 15 ) {\n                JpgraphError::RaiseL(22014); //('Index for copmass direction must be between 0 and 15.');\n            }\n            $ret[$idx] = $data;\n        }\n        return $ret;\n    }\n\n    function _StrokeRegularRose($dblImg,$value,$scaling,$xc,$yc,$r,$ri) {\n        // _StrokeRegularRose($dblImg,$xc,$yc,$r,$ri)\n        // Plot radial grid lines and remember the end position\n        // and the angle for later use when plotting the labels\n        switch( $this->iType ) {\n            case WINDROSE_TYPE4:\n                $num = 4; break;\n            case WINDROSE_TYPE8:\n                $num = 8; break;\n            case WINDROSE_TYPE16:\n                $num = 16; break;\n            default:\n                JpGraphError::RaiseL(22015);//('You have specified an undefined Windrose plot type.');\n        }\n\n        // Check if we should auto-position the angle for the\n        // labels. Basically we try to find a firection with smallest\n        // (or none) data.\n        $this->SetAutoScaleAngle(true);\n\n        $nlc = count($this->iLegColors);\n        $nlw = count($this->iLegweights);\n\n        $this->iRadialColorArray = $this->FixupIndexes($this->iRadialColorArray,$num);\n        $this->iRadialWeightArray = $this->FixupIndexes($this->iRadialWeightArray,$num);\n        $this->iRadialStyleArray = $this->FixupIndexes($this->iRadialStyleArray,$num);\n\n        $txtpos=array();\n        $a = 2*M_PI/$num;\n        $dblImg->SetColor($this->iGridColor2);\n        $dblImg->SetLineStyle($this->iRadialGridStyle);\n        $dblImg->SetLineWeight($this->iRadialGridWeight);\n\n        // Translate any name specified directions to the index\n        // so we can easily use it in the loop below\n        for($i=0; $i < $num; ++$i ) {\n            $xxc = round($xc + cos($a*$i)*$ri);\n            $yyc = round($yc - sin($a*$i)*$ri);\n            $x = round($xc + cos($a*$i)*$r);\n            $y = round($yc - sin($a*$i)*$r);\n            if( empty($this->iRadialColorArray[$i]) ) {\n                $dblImg->SetColor($this->iGridColor2);\n            }\n            else {\n                $dblImg->SetColor($this->iRadialColorArray[$i]);\n            }\n            if( empty($this->iRadialWeightArray[$i]) ) {\n                $dblImg->SetLineWeight($this->iRadialGridWeight);\n            }\n            else {\n                $dblImg->SetLineWeight($this->iRadialWeightArray[$i]);\n            }\n            if( empty($this->iRadialStyleArray[$i]) ) {\n                $dblImg->SetLineStyle($this->iRadialGridStyle);\n            }\n            else {\n                $dblImg->SetLineStyle($this->iRadialStyleArray[$i]);\n            }\n\n            $dblImg->StyleLine($xxc,$yyc,$x,$y);\n            $txtpos[] = array($x,$y,$a*$i);\n        }\n        $dblImg->SetLineWeight(1);\n\n        $lr = $scaling * $this->iLabelMargin;\n        if( $this->iLabelPositioning == LBLPOSITION_CENTER ) {\n            $value->SetAlign('center','center');\n        }\n        else {\n            $value->SetAlign('left','top');\n            $value->SetMargin(0);\n            $lr /= 2 ;\n        }\n\n        for($i=0; $i < $num; ++$i ) {\n            list($x,$y,$a) = $txtpos[$i];\n\n            // Set the position of the label\n            if( $this->iLabelPositioning == LBLPOSITION_CENTER ) {\n                $dx = $dy = 0;\n            }\n            else {\n                // LBLPOSIITON_EDGE\n                if( $a>=7*M_PI/4 || $a <= M_PI/4 ) $dx=0;\n                if( $a>=M_PI/4 && $a <= 3*M_PI/4 ) $dx=($a-M_PI/4)*2/M_PI;\n                if( $a>=3*M_PI/4 && $a <= 5*M_PI/4 ) $dx=1;\n                if( $a>=5*M_PI/4 && $a <= 7*M_PI/4 ) $dx=(1-($a-M_PI*5/4)*2/M_PI);\n\n                if( $a>=7*M_PI/4 ) $dy=(($a-M_PI)-3*M_PI/4)*2/M_PI;\n                if( $a<=M_PI/4 ) $dy=(0.5+$a*2/M_PI);\n                if( $a>=M_PI/4 && $a <= 3*M_PI/4 ) $dy=1;\n                if( $a>=3*M_PI/4 && $a <= 5*M_PI/4 ) $dy=(1-($a-3*M_PI/4)*2/M_PI);\n                if( $a>=5*M_PI/4 && $a <= 7*M_PI/4 ) $dy=0;\n            }\n\n            $value->Set($this->iAllDirectionLabels[$i*(16/$num)]);\n            $th = $value->GetHeight($dblImg);\n            $tw = $value->GetWidth($dblImg);\n            $xt=round($lr*cos($a)+$x) - $dx*$tw;\n            $yt=round($y-$lr*sin($a)) - $dy*$th;\n\n            $value->Stroke($dblImg,$xt,$yt);\n        }\n\n        if( __DEBUG ) {\n            $dblImg->SetColor(\"red\");\n            $dblImg->Circle($xc,$yc,$lr+$r);\n        }\n\n        // Stroke all the legs\n        reset($this->iData);\n        $keys = array_keys($this->iData);\n        foreach($this->iData as $idx => $legdata) {\n            $legdata = array_slice($legdata,1);\n            $nn = count($legdata);\n            if( is_string($idx) ) {\n                $idx = strtoupper($idx);\n                $idx = array_search($idx,$this->iAllDirectionLabels);\n                if( $idx === false ) {\n                    JpGraphError::RaiseL(22016);//('Windrose leg index must be numeric or direction label.');\n                }\n                if( $idx % (16 / $num) !== 0 ) {\n                    JpGraphError::RaiseL(22017);//('Windrose data contains a direction which is not enabled. Please adjust what labels are displayed.');\n                }\n                $idx /= (16/$num) ;\n\n                if( in_array($idx,$keys,1) ) {\n                    JpgraphError::RaiseL(22018,$idx);//('You have specified data for the same compass direction twice, once with text and once with index (Index='.$idx.')');\n\n                }\n            }\n            if( $idx < 0 || $idx > 15 ) {\n                JpgraphError::RaiseL(22019);//('Index for direction must be between 0 and 15. You can\\'t specify angles for a Regular Windplot, only index and compass directions.');\n            }\n            $a = $idx * (360 / $num) ;\n            $a *= M_PI/180.0;\n            $rri = $ri/$scaling;\n            for( $j=0; $j < $nn; ++$j ) {\n                // We want the non scaled original radius\n                $legr = $this->scale->RelTranslate($legdata[$j], $r/$scaling,$ri/$scaling) ;\n                $this->_StrokeWindLeg($dblImg, $xc, $yc, $a,\n                $rri *$scaling,\n                $legr *$scaling,\n                $this->iLegweights[$j % $nlw] * $scaling,\n                $this->iLegColors[$j % $nlc]);\n                $rri += $legr;\n            }\n        }\n    }\n\n\n    function getWidth($aImg) {\n\n        $scaling = 1;//$this->iAntiAlias ? 2 : 1 ;\n       \tif( $this->iSize > 0 && $this->iSize < 1 ) {\n\t\t\t$this->iSize *= min($aImg->width,$aImg->height);\n       \t}\n\n\n        $value = new Text();\n        $value->SetFont($this->iFontFamily,$this->iFontStyle,$this->iFontSize*$scaling);\n        $value->SetColor($this->iFontColor);\n        // Setup extra size around the graph needed so that the labels\n        // doesn't get cut. For this we need to find the largest label.\n        // The code below gives a possible a little to large margin. The\n        // really, really proper way would be to account for what angle\n        // the label are at\n        $n = count($this->iLabels);\n        if( $n > 0 ) {\n            $maxh=0;$maxw=0;\n            foreach($this->iLabels as $key => $lbl) {\n                $value->Set($lbl);\n                $maxw = max($maxw,$value->GetWidth($aImg));\n            }\n        }\n        else {\n            $value->Set('888.888'); // Dummy value to get width/height\n            $maxw = $value->GetWidth($aImg);\n        }\n        // Add an extra margin of 50% the font size\n        $maxw += round($this->iFontSize*$scaling * 0.4) ;\n\n        $valxmarg = 1.5*$maxw+2*$this->iLabelMargin*$scaling;\n        $w = round($this->iSize*$scaling + $valxmarg);\n\n        // Make sure that the width of the legend fits\n        $legendwidth = $this->_StrokeLegend($aImg,0,0,$scaling,true)+10*$scaling;\n        $w = max($w,$legendwidth);\n\n        return $w;\n    }\n\n    function getHeight($aImg) {\n\n        $scaling = 1;//$this->iAntiAlias ? 2 : 1 ;\n       \tif( $this->iSize > 0 && $this->iSize < 1 ) {\n\t\t\t$this->iSize *= min($aImg->width,$aImg->height);\n       \t}\n\n        $value = new Text();\n        $value->SetFont($this->iFontFamily,$this->iFontStyle,$this->iFontSize*$scaling);\n        $value->SetColor($this->iFontColor);\n        // Setup extra size around the graph needed so that the labels\n        // doesn't get cut. For this we need to find the largest label.\n        // The code below gives a possible a little to large margin. The\n        // really, really proper way would be to account for what angle\n        // the label are at\n        $n = count($this->iLabels);\n        if( $n > 0 ) {\n            $maxh=0;$maxw=0;\n            foreach($this->iLabels as $key => $lbl) {\n                $value->Set($lbl);\n                $maxh = max($maxh,$value->GetHeight($aImg));\n            }\n        }\n        else {\n            $value->Set('180.8'); // Dummy value to get width/height\n            $maxh = $value->GetHeight($aImg);\n        }\n        // Add an extra margin of 50% the font size\n        //$maxh += round($this->iFontSize*$scaling * 0.5) ;\n        $valymarg = 2*$maxh+2*$this->iLabelMargin*$scaling;\n\n        $legendheight = round($this->legend->iShow ? 1 : 0);\n        $legendheight *= max($this->legend->iCircleRadius*2,$this->legend->iTxtFontSize*2)+\n        \t\t\t\t $this->legend->iMargin + $this->legend->iBottomMargin + 2;\n        $legendheight *= $scaling;\n        $h = round($this->iSize*$scaling + $valymarg) + $legendheight ;\n\n        return $h;\n    }\n\n    function Stroke($aGraph) {\n\n\t\t$aImg = $aGraph->img;\n\n\t\tif( $this->iX > 0 && $this->iX < 1 ) {\n\t\t\t$this->iX = round( $aImg->width * $this->iX ) ;\n\t\t}\n\n       \tif( $this->iY > 0 && $this->iY < 1 ) {\n       \t\t$this->iY = round( $aImg->height * $this->iY ) ;\n       \t}\n\n       \tif( $this->iSize > 0 && $this->iSize < 1 ) {\n\t\t\t$this->iSize *= min($aImg->width,$aImg->height);\n       \t}\n\n       \tif( $this->iCenterSize > 0 && $this->iCenterSize < 1 ) {\n\t\t\t$this->iCenterSize *= $this->iSize;\n       \t}\n\n        $this->scale->AutoScale(($this->iSize - $this->iCenterSize)/2, round(2.5*$this->scale->iFontSize));\n\n        $scaling = $this->iAntiAlias ? 2 : 1 ;\n\n        $value = new Text();\n        $value->SetFont($this->iFontFamily,$this->iFontStyle,$this->iFontSize*$scaling);\n        $value->SetColor($this->iFontColor);\n\n        $legendheight = round($this->legend->iShow ? 1 : 0);\n        $legendheight *= max($this->legend->iCircleRadius*2,$this->legend->iTxtFontSize*2)+\n        $this->legend->iMargin + $this->legend->iBottomMargin + 2;\n        $legendheight *= $scaling;\n\n        $w = $scaling*$this->getWidth($aImg);\n        $h = $scaling*$this->getHeight($aImg);\n\n        // Copy back the double buffered image to the proper canvas\n        $ww = $w / $scaling ;\n        $hh = $h / $scaling ;\n\n        // Create the double buffer\n        if( $this->iAntiAlias ) {\n            $dblImg = new RotImage($w,$h);\n            // Set the background color\n            $dblImg->SetColor($this->iColor);\n            $dblImg->FilledRectangle(0,0,$w,$h);\n        }\n        else {\n            $dblImg = $aImg ;\n            // Make sure the ix and it coordinates correpond to the new top left center\n            $dblImg->SetTranslation($this->iX-$w/2, $this->iY-$h/2);\n        }\n\n        if( __DEBUG ) {\n            $dblImg->SetColor('red');\n            $dblImg->Rectangle(0,0,$w-1,$h-1);\n        }\n\n        $dblImg->SetColor('black');\n\n        if( $this->iShowBox ) {\n            $dblImg->SetColor($this->iBoxColor);\n            $old = $dblImg->SetLineWeight($this->iBoxWeight);\n            $dblImg->SetLineStyle($this->iBoxStyle);\n            $dblImg->Rectangle(0,0,$w-1,$h-1);\n            $dblImg->SetLineWeight($old);\n        }\n\n        $xc = round($w/2);\n        $yc = round(($h-$legendheight)/2);\n\n        if( __DEBUG ) {\n            $dblImg->SetColor('red');\n            $old = $dblImg->SetLineWeight(2);\n            $dblImg->Line($xc-5,$yc-5,$xc+5,$yc+5);\n\t\t\t$dblImg->Line($xc+5,$yc-5,$xc-5,$yc+5);\n\t\t\t$dblImg->SetLineWeight($old);\n        }\n\n        $this->iSize *= $scaling;\n\n        // Inner circle size\n        $ri = $this->iCenterSize/2 ;\n\n        // Full circle radius\n        $r = round( $this->iSize/2 );\n\n        // Get number of grid circles\n        $n = $this->scale->GetNumCirc();\n\n        // Plot circle grids\n        $ri *= $scaling ;\n        $rr = round(($r-$ri)/$n);\n        for( $i = 1; $i <= $n; ++$i ) {\n            $this->_ThickCircle($dblImg,$xc,$yc,$rr*$i+$ri,\n            $this->iCircGridWeight,$this->iGridColor1);\n        }\n\n        $num = 0 ;\n\n        if( $this->iType == WINDROSE_TYPEFREE ) {\n            $this->_StrokeFreeRose($dblImg,$value,$scaling,$xc,$yc,$r,$ri);\n        }\n        else {\n            // Check if we need to re-code the interpretation of the ordinal\n            // number in the data. Internally ordinal value 0 is East and then\n            // counted anti-clockwise. The user might choose an encoding\n            // that have 0 being the first axis to the right of the \"N\" axis and then\n            // counted clock-wise\n            if( $this->iOrdinalEncoding == KEYENCODING_CLOCKWISE ) {\n                if( $this->iType == WINDROSE_TYPE16 ) {\n                    $const1 = 19; $const2 = 16;\n                }\n                elseif( $this->iType == WINDROSE_TYPE8 ) {\n                    $const1 = 9; $const2 = 8;\n                }\n                else {\n                    $const1 = 4; $const2 = 4;\n                }\n                $tmp = array();\n                $n=count($this->iData);\n                foreach( $this->iData as $key => $val ) {\n                    if( is_numeric($key) ) {\n                        $key = ($const1 - $key) % $const2 ;\n                    }\n                    $tmp[$key] = $val;\n                }\n                $this->iData = $tmp;\n            }\n            $this->_StrokeRegularRose($dblImg,$value,$scaling,$xc,$yc,$r,$ri);\n        }\n\n        // Stroke the labels\n        $this->scale->iFontSize *= $scaling;\n        $this->scale->iZFontSize *= $scaling;\n        $this->scale->StrokeLabels($dblImg,$xc,$yc,$ri,$rr);\n\n        // Stroke the inner circle again since the legs\n        // might have written over it\n        $this->_ThickCircle($dblImg,$xc,$yc,$ri,$this->iCircGridWeight,$this->iGridColor1);\n\n        if( $ww > $aImg->width ) {\n            JpgraphError::RaiseL(22020);\n            //('Windrose plot is too large to fit the specified Graph size. Please use WindrosePlot::SetSize() to make the plot smaller or increase the size of the Graph in the initial WindroseGraph() call.');\n        }\n\n        $x = $xc;\n        $y = $h;\n        $this->_StrokeLegend($dblImg,$x,$y,$scaling);\n\n        if( $this->iAntiAlias ) {\n            $aImg->Copy($dblImg->img, $this->iX-$ww/2, $this->iY-$hh/2, 0, 0, $ww,$hh, $w,$h);\n        }\n\n        // We need to restore the translation matrix\n        $aImg->SetTranslation(0,0);\n\n    }\n\n}\n\n//============================================================\n// CLASS WindroseGraph\n//============================================================\nclass WindroseGraph extends Graph {\n    private $posx, $posy;\n    public $plots=array();\n\n    function __construct($width=300,$height=200,$cachedName=\"\",$timeout=0,$inline=1) {\n        parent::__construct($width,$height,$cachedName,$timeout,$inline);\n        $this->posx=$width/2;\n        $this->posy=$height/2;\n        $this->SetColor('white');\n        $this->title->SetFont(FF_VERDANA,FS_NORMAL,12);\n        $this->title->SetMargin(8);\n        $this->subtitle->SetFont(FF_VERDANA,FS_NORMAL,10);\n        $this->subtitle->SetMargin(0);\n        $this->subsubtitle->SetFont(FF_VERDANA,FS_NORMAL,8);\n        $this->subsubtitle->SetMargin(0);\n    }\n\n    function StrokeTexts() {\n        if( $this->texts != null ) {\n            $n = count($this->texts);\n            for($i=0; $i < $n; ++$i ) {\n                $this->texts[$i]->Stroke($this->img);\n            }\n        }\n    }\n\n    function StrokeIcons() {\n        if( $this->iIcons != null ) {\n            $n = count($this->iIcons);\n            for( $i=0; $i < $n; ++$i ) {\n                // Since Windrose graphs doesn't have any linear scale the position of\n                // each icon has to be given as absolute coordinates\n                $this->iIcons[$i]->_Stroke($this->img);\n            }\n        }\n    }\n\n    //---------------\n    // PUBLIC METHODS\n    function Add($aObj) {\n        if( is_array($aObj) && count($aObj) > 0 ) {\n            $cl = $aObj[0];\n        }\n        else {\n            $cl = $aObj;\n        }\n        if( $cl instanceof Text ) {\n            $this->AddText($aObj);\n        }\n        elseif( $cl instanceof IconPlot ) {\n            $this->AddIcon($aObj);\n        }\n        elseif( ($cl instanceof WindrosePlot) || ($cl instanceof LayoutRect) || ($cl instanceof LayoutHor)) {\n            $this->plots[] = $aObj;\n        }\n        else {\n            JpgraphError::RaiseL(22021);\n        }\n    }\n\n    function AddText($aTxt,$aToY2=false) {\n        parent::AddText($aTxt);\n    }\n\n    function SetColor($c) {\n        $this->SetMarginColor($c);\n    }\n\n    // Method description\n    function Stroke($aStrokeFileName=\"\") {\n\n        // If the filename is the predefined value = '_csim_special_'\n        // we assume that the call to stroke only needs to do enough\n        // to correctly generate the CSIM maps.\n        // We use this variable to skip things we don't strictly need\n        // to do to generate the image map to improve performance\n        // as best we can. Therefore you will see a lot of tests !$_csim in the\n        // code below.\n        $_csim = ($aStrokeFileName===_CSIM_SPECIALFILE);\n\n        // We need to know if we have stroked the plot in the\n        // GetCSIMareas. Otherwise the CSIM hasn't been generated\n        // and in the case of GetCSIM called before stroke to generate\n        // CSIM without storing an image to disk GetCSIM must call Stroke.\n        $this->iHasStroked = true;\n\n        if( $this->background_image != \"\" || $this->background_cflag != \"\" ) {\n            $this->StrokeFrameBackground();\n        }\n        else {\n            $this->StrokeFrame();\n        }\n\n        // n holds number of plots\n        $n = count($this->plots);\n        for($i=0; $i < $n ; ++$i) {\n     \t\t$this->plots[$i]->Stroke($this);\n        }\n\n        $this->footer->Stroke($this->img);\n        $this->StrokeIcons();\n        $this->StrokeTexts();\n        $this->StrokeTitles();\n\n        // If the filename is given as the special \"__handle\"\n        // then the image handler is returned and the image is NOT\n        // streamed back\n        if( $aStrokeFileName == _IMG_HANDLER ) {\n            return $this->img->img;\n        }\n        else {\n            // Finally stream the generated picture\n            $this->cache->PutAndStream($this->img,$this->cache_name,$this->inline,\n            $aStrokeFileName);\n        }\n    }\n\n} // Class\n\n?>\n"
  },
  {
    "path": "include/jpgraph/lang/de.inc.php",
    "content": "<?php\n/*=======================================================================\n// File:        DE.INC.PHP\n// Description: German language file for error messages\n// Created:     2006-03-06\n// Author:      Timo Leopold (timo@leopold-hh.de)\n//              Johan Persson (ljp@localhost.nil)\n// Ver:         $Id: de.inc.php 1886 2009-10-01 23:30:16Z ljp $\n//\n// Copyright (c)\n//========================================================================\n*/\n\n// Notiz: Das Format fuer jede Fehlermeldung ist array(<Fehlermeldung>,<Anzahl der Argumente>)\n$_jpg_messages = array(\n\n/*\n** Headers wurden bereits gesendet - Fehler. Dies wird als HTML formatiert, weil es direkt als text zurueckgesendet wird\n*/\n10  => array('<table border=\"1\"><tr><td style=\"color:darkred;font-size:1.2em;\"><b>JpGraph Fehler:</b>\nHTTP header wurden bereits gesendet.<br>Fehler in der Datei <b>%s</b> in der Zeile <b>%d</b>.</td></tr><tr><td><b>Erklärung:</b><br>HTTP header wurden bereits zum Browser gesendet, wobei die Daten als Text gekennzeichnet wurden, bevor die Bibliothek die Chance hatte, seinen Bild-HTTP-Header zum Browser zu schicken. Dies verhindert, dass die Bibliothek Bilddaten zum Browser schicken kann (weil sie vom Browser als Text interpretiert würden und daher nur Mist dargestellt würde).<p>Wahrscheinlich steht Text im Skript bevor <i>Graph::Stroke()</i> aufgerufen wird. Wenn dieser Text zum Browser gesendet wird, nimmt dieser an, dass die gesamten Daten aus Text bestehen. Such nach irgendwelchem Text, auch nach Leerzeichen und Zeilenumbrüchen, die eventuell bereits zum Browser gesendet wurden. <p>Zum Beispiel ist ein oft auftretender Fehler, eine Leerzeile am Anfang der Datei oder vor <i>Graph::Stroke()</i> zu lassen.\"<b>&lt;?php</b>\".</td></tr></table>',2),\n\n/*\n** Setup Fehler\n*/\n11 => array('Es wurde kein Pfad für CACHE_DIR angegeben. Bitte gib einen Pfad CACHE_DIR in der Datei jpg-config.inc an.',0),\n12 => array('Es wurde kein Pfad für TTF_DIR angegeben und der Pfad kann nicht automatisch ermittelt werden. Bitte gib den Pfad in der Datei jpg-config.inc an.',0),\n13 => array('The installed PHP version (%s) is not compatible with this release of the library. The library requires at least PHP version %s',2),\n\n/*\n**  jpgraph_bar\n*/\n\n2001 => array('Die Anzahl der Farben ist nicht gleich der Anzahl der Vorlagen in BarPlot::SetPattern().',0),\n2002 => array('Unbekannte Vorlage im Aufruf von BarPlot::SetPattern().',0),\n2003 => array('Anzahl der X- und Y-Koordinaten sind nicht identisch. Anzahl der X-Koordinaten: %d; Anzahl der Y-Koordinaten: %d.',2),\n2004 => array('Alle Werte für ein Balkendiagramm (barplot) müssen numerisch sein. Du hast den Wert nr [%d] == %s angegeben.',2),\n2005 => array('Du hast einen leeren Vektor für die Schattierungsfarben im Balkendiagramm (barplot) angegeben.',0),\n2006 => array('Unbekannte Position für die Werte der Balken: %s.',1),\n2007 => array('Kann GroupBarPlot nicht aus einem leeren Vektor erzeugen.',0),\n2008 => array('GroupBarPlot Element nbr %d wurde nicht definiert oder ist leer.',0),\n2009 => array('Eins der Objekte, das an GroupBar weitergegeben wurde ist kein Balkendiagramm (BarPlot). Versichere Dich, dass Du den GroupBarPlot aus einem Vektor von Balkendiagrammen (barplot) oder AccBarPlot-Objekten erzeugst. (Class = %s)',1),\n2010 => array('Kann AccBarPlot nicht aus einem leeren Vektor erzeugen.',0),\n2011 => array('AccBarPlot-Element nbr %d wurde nicht definiert oder ist leer.',1),\n2012 => array('Eins der Objekte, das an AccBar weitergegeben wurde ist kein Balkendiagramm (barplot). Versichere Dich, dass Du den AccBar-Plot aus einem Vektor von Balkendiagrammen (barplot) erzeugst. (Class=%s)',1),\n2013 => array('Du hast einen leeren Vektor für die Schattierungsfarben im Balkendiagramm (barplot) angegeben.',0),\n2014 => array('Die Anzahl der Datenpunkte jeder Datenreihe in AccBarPlot muss gleich sein.',0),\n2015 => array('Individual bar plots in an AccBarPlot or GroupBarPlot can not have specified X-coordinates',0),\n\n\n/*\n**  jpgraph_date\n*/\n\n3001 => array('Es ist nur möglich, entweder SetDateAlign() oder SetTimeAlign() zu benutzen, nicht beides!',0),\n\n/*\n**  jpgraph_error\n*/\n\n4002 => array('Fehler bei den Eingabedaten von LineErrorPlot. Die Anzahl der Datenpunkte mus ein Mehrfaches von drei sein!',0),\n\n/*\n**  jpgraph_flags\n*/\n\n5001 => array('Unbekannte Flaggen-Größe (%d).',1),\n5002 => array('Der Flaggen-Index %s existiert nicht.',1),\n5003 => array('Es wurde eine ungültige Ordnungszahl (%d) für den Flaggen-Index angegeben.',1),\n5004 => array('Der Landesname %s hat kein korrespondierendes Flaggenbild. Die Flagge mag existieren, abr eventuell unter einem anderen Namen, z.B. versuche \"united states\" statt \"usa\".',1),\n\n\n/*\n**  jpgraph_gantt\n*/\n\n6001 => array('Interner Fehler. Die Höhe für ActivityTitles ist < 0.',0),\n6002 => array('Es dürfen keine negativen Werte für die Gantt-Diagramm-Dimensionen angegeben werden. Verwende 0, wenn die Dimensionen automatisch ermittelt werden sollen.',0),\n6003 => array('Ungültiges Format für den Bedingungs-Parameter bei Index=%d in CreateSimple(). Der Parameter muss bei index 0 starten und Vektoren in der Form (Row,Constrain-To,Constrain-Type) enthalten.',1),\n6004 => array('Ungültiges Format für den Fortschritts-Parameter bei Index=%d in CreateSimple(). Der Parameter muss bei Index 0 starten und Vektoren in der Form (Row,Progress) enthalten.',1),\n6005 => array('SetScale() ist nicht sinnvoll bei Gantt-Diagrammen.',0),\n6006 => array('Das Gantt-Diagramm kann nicht automatisch skaliert werden. Es existieren keine Aktivitäten mit Termin. [GetBarMinMax() start >= n]',0),\n6007 => array('Plausibiltätsprüfung für die automatische Gantt-Diagramm-Größe schlug fehl. Entweder die Breite (=%d) oder die Höhe (=%d) ist größer als MAX_GANTTIMG_SIZE. Dies kann möglicherweise durch einen falschen Wert bei einer Aktivität hervorgerufen worden sein.',2),\n6008 => array('Du hast eine Bedingung angegeben von Reihe=%d bis Reihe=%d, die keine Aktivität hat.',2),\n6009 => array('Unbekannter Bedingungstyp von Reihe=%d bis Reihe=%d',2),\n6010 => array('Ungültiger Icon-Index für das eingebaute Gantt-Icon [%d]',1),\n6011 => array('Argument für IconImage muss entweder ein String oder ein Integer sein.',0),\n6012 => array('Unbekannter Typ bei der Gantt-Objekt-Title-Definition.',0),\n6015 => array('Ungültige vertikale Position %d',1),\n6016 => array('Der eingegebene Datums-String (%s) für eine Gantt-Aktivität kann nicht interpretiert werden. Versichere Dich, dass es ein gültiger Datumsstring ist, z.B. 2005-04-23 13:30',1),\n6017 => array('Unbekannter Datumstyp in GanttScale (%s).',1),\n6018 => array('Intervall für Minuten muss ein gerader Teiler einer Stunde sein, z.B. 1,5,10,12,15,20,30, etc. Du hast ein Intervall von %d Minuten angegeben.',1),\n6019 => array('Die vorhandene Breite (%d) für die Minuten ist zu klein, um angezeigt zu werden. Bitte benutze die automatische Größenermittlung oder vergrößere die Breite des Diagramms.',1),\n6020 => array('Das Intervall für die Stunden muss ein gerader Teiler eines Tages sein, z.B. 0:30, 1:00, 1:30, 4:00, etc. Du hast ein Intervall von %d eingegeben.',1),\n6021 => array('Unbekanntes Format für die Woche.',0),\n6022 => array('Die Gantt-Skala wurde nicht eingegeben.',0),\n6023 => array('Wenn Du sowohl Stunden als auch Minuten anzeigen lassen willst, muss das Stunden-Interval gleich 1 sein (anderenfalls ist es nicht sinnvoll, Minuten anzeigen zu lassen).',0),\n6024 => array('Das CSIM-Ziel muss als String angegeben werden. Der Start des Ziels ist: %d',1),\n6025 => array('Der CSIM-Alt-Text muss als String angegeben werden. Der Beginn des Alt-Textes ist: %d',1),\n6027 => array('Der Fortschrittswert muss im Bereich [0, 1] liegen.',0),\n6028 => array('Die eingegebene Höhe (%d) für GanttBar ist nicht im zulässigen Bereich.',1),\n6029 => array('Der Offset für die vertikale Linie muss im Bereich [0,1] sein.',0),\n6030 => array('Unbekannte Pfeilrichtung für eine Verbindung.',0),\n6031 => array('Unbekannter Pfeiltyp für eine Verbindung.',0),\n6032 => array('Interner Fehler: Unbekannter Pfadtyp (=%d) für eine Verbindung.',1),\n6033 => array('Array of fonts must contain arrays with 3 elements, i.e. (Family, Style, Size)',0),\n\n/*\n**  jpgraph_gradient\n*/\n\n7001 => array('Unbekannter Gradiententyp (=%d).',1),\n\n/*\n**  jpgraph_iconplot\n*/\n\n8001 => array('Der Mix-Wert für das Icon muss zwischen 0 und 100 sein.',0),\n8002 => array('Die Ankerposition für Icons muss entweder \"top\", \"bottom\", \"left\", \"right\" oder \"center\" sein.',0),\n8003 => array('Es ist nicht möglich, gleichzeitig ein Bild und eine Landesflagge für dasselbe Icon zu definieren',0),\n8004 => array('Wenn Du Landesflaggen benutzen willst, musst Du die Datei \"jpgraph_flags.php\" hinzufügen (per include).',0),\n\n/*\n**  jpgraph_imgtrans\n*/\n\n9001 => array('Der Wert für die Bildtransformation ist außerhalb des zulässigen Bereichs. Der verschwindende Punkt am Horizont muss als Wert zwischen 0 und 1 angegeben werden.',0),\n\n/*\n**  jpgraph_lineplot\n*/\n\n10001 => array('Die Methode LinePlot::SetFilled() sollte nicht mehr benutzt werden. Benutze lieber SetFillColor()',0),\n10002 => array('Der Plot ist zu kompliziert für FastLineStroke. Benutze lieber den StandardStroke()',0),\n10003 => array('Each plot in an accumulated lineplot must have the same number of data points.',0),\n/*\n**  jpgraph_log\n*/\n\n11001 => array('Deine Daten enthalten nicht-numerische Werte.',0),\n11002 => array('Negative Werte können nicht für logarithmische Achsen verwendet werden.',0),\n11003 => array('Deine Daten enthalten nicht-numerische Werte.',0),\n11004 => array('Skalierungsfehler für die logarithmische Achse. Es gibt ein Problem mit den Daten der Achse. Der größte Wert muss größer sein als Null. Es ist mathematisch nicht möglich, einen Wert gleich Null in der Skala zu haben.',0),\n11005 => array('Das Tick-Intervall für die logarithmische Achse ist nicht definiert. Lösche jeden Aufruf von SetTextLabelStart() oder SetTextTickInterval() bei der logarithmischen Achse.',0),\n\n/*\n**  jpgraph_mgraph\n*/\n\n12001 => array(\"Du benutzt GD 2.x und versuchst ein Nicht-Truecolor-Bild als Hintergrundbild zu benutzen. Um Hintergrundbilder mit GD 2.x zu benutzen, ist es notwendig Truecolor zu aktivieren, indem die USE_TRUECOLOR-Konstante auf TRUE gesetzt wird. Wegen eines Bugs in GD 2.0.1 ist die Qualität der Truetype-Schriften sehr schlecht, wenn man Truetype-Schriften mit Truecolor-Bildern verwendet.\",0),\n12002 => array('Ungültiger Dateiname für MGraph::SetBackgroundImage() : %s. Die Datei muss eine gültige Dateierweiterung haben (jpg,gif,png), wenn die automatische Typerkennung verwendet wird.',1),\n12003 => array('Unbekannte Dateierweiterung (%s) in MGraph::SetBackgroundImage() für Dateiname: %s',2),\n12004 => array('Das Bildformat des Hintergrundbildes (%s) wird von Deiner System-Konfiguration nicht unterstützt. ',1),\n12005 => array('Das Hintergrundbild kann nicht gelesen werden: %s',1),\n12006 => array('Es wurden ungültige Größen für Breite oder Höhe beim Erstellen des Bildes angegeben, (Breite=%d, Höhe=%d)',2),\n12007 => array('Das Argument für MGraph::Add() ist nicht gültig für GD.',0),\n12008 => array('Deine PHP- (und GD-lib-) Installation scheint keine bekannten Bildformate zu unterstützen.',0),\n12009 => array('Deine PHP-Installation unterstützt das gewählte Bildformat nicht: %s',1),\n12010 => array('Es konnte kein Bild als Datei %s erzeugt werden. Überprüfe, ob Du die entsprechenden Schreibrechte im aktuellen Verzeichnis hast.',1),\n12011 => array('Es konnte kein Truecolor-Bild erzeugt werden. Überprüfe, ob Du wirklich die GD2-Bibliothek installiert hast.',0),\n12012 => array('Es konnte kein Bild erzeugt werden. Überprüfe, ob Du wirklich die GD2-Bibliothek installiert hast.',0),\n\n/*\n**  jpgraph_pie3d\n*/\n\n14001 => array('Pie3D::ShowBorder(). Missbilligte Funktion. Benutze Pie3D::SetEdge(), um die Ecken der Tortenstücke zu kontrollieren.',0),\n14002 => array('PiePlot3D::SetAngle() 3D-Torten-Projektionswinkel muss zwischen 5 und 85 Grad sein.',0),\n14003 => array('Interne Festlegung schlug fehl. Pie3D::Pie3DSlice',0),\n14004 => array('Tortenstück-Startwinkel muss zwischen 0 und 360 Grad sein.',0),\n14005 => array('Pie3D Interner Fehler: Versuch, zweimal zu umhüllen bei der Suche nach dem Startindex.',0,),\n14006 => array('Pie3D Interner Fehler: Z-Sortier-Algorithmus für 3D-Tortendiagramme funktioniert nicht einwandfrei (2). Versuch, zweimal zu umhüllen beim Erstellen des Bildes.',0),\n14007 => array('Die Breite für das 3D-Tortendiagramm ist 0. Gib eine Breite > 0 an.',0),\n\n/*\n**  jpgraph_pie\n*/\n\n15001 => array('PiePLot::SetTheme() Unbekannter Stil: %s',1),\n15002 => array('Argument für PiePlot::ExplodeSlice() muss ein Integer-Wert sein',0),\n15003 => array('Argument für PiePlot::Explode() muss ein Vektor mit Integer-Werten sein.',0),\n15004 => array('Tortenstück-Startwinkel muss zwischen 0 und 360 Grad sein.',0),\n15005 => array('PiePlot::SetFont() sollte nicht mehr verwendet werden. Benutze stattdessen PiePlot->value->SetFont().',0),\n15006 => array('PiePlot::SetSize() Radius für Tortendiagramm muss entweder als Bruch [0, 0.5] der Bildgröße oder als Absoluwert in Pixel im Bereich [10, 1000] angegeben werden.',0),\n15007 => array('PiePlot::SetFontColor() sollte nicht mehr verwendet werden. Benutze stattdessen PiePlot->value->SetColor()..',0),\n15008 => array('PiePlot::SetLabelType() der Typ für Tortendiagramme muss entweder 0 or 1 sein (nicht %d).',1),\n15009 => array('Ungültiges Tortendiagramm. Die Summe aller Daten ist Null.',0),\n15010 => array('Die Summe aller Daten ist Null.',0),\n15011 => array('Um Bildtransformationen benutzen zu können, muss die Datei jpgraph_imgtrans.php eingefügt werden (per include).',0), // @todo translate into German\n15012 => array('PiePlot::SetTheme() is no longer recommended. Use PieGraph::SetTheme()',0),\n\n/*\n**  jpgraph_plotband\n*/\n\n16001 => array('Die Dichte für das Pattern muss zwischen 1 und 100 sein. (Du hast %f eingegeben)',1),\n16002 => array('Es wurde keine Position für das Pattern angegeben.',0),\n16003 => array('Unbekannte Pattern-Definition (%d)',0),\n16004 => array('Der Mindeswert für das PlotBand ist größer als der Maximalwert. Bitte korrigiere dies!',0),\n\n\n/*\n**  jpgraph_polar\n*/\n\n17001 => array('PolarPlots müssen eine gerade Anzahl von Datenpunkten haben. Jeder Datenpunkt ist ein Tupel (Winkel, Radius).',0),\n17002 => array('Unbekannte Ausrichtung für X-Achsen-Titel. (%s)',1),\n//17003 => array('Set90AndMargin() wird für PolarGraph nicht unterstützt.',0),\n17004 => array('Unbekannter Achsentyp für PolarGraph. Er muss entweder \\'lin\\' oder \\'log\\' sein.',0),\n\n/*\n**  jpgraph_radar\n*/\n\n18001 => array('ClientSideImageMaps werden für RadarPlots nicht unterstützt.',0),\n18002 => array('RadarGraph::SupressTickMarks() sollte nicht mehr verwendet werden. Benutze stattdessen HideTickMarks().',0),\n18003 => array('Ungültiger Achsentyp für RadarPlot (%s). Er muss entweder \\'lin\\' oder \\'log\\' sein.',1),\n18004 => array('Die RadarPlot-Größe muss zwischen 0.1 und 1 sein. (Dein Wert=%f)',1),\n18005 => array('RadarPlot: nicht unterstützte Tick-Dichte: %d',1),\n18006 => array('Minimum Daten %f (RadarPlots sollten nur verwendet werden, wenn alle Datenpunkte einen Wert > 0 haben).',1),\n18007 => array('Die Anzahl der Titel entspricht nicht der Anzahl der Datenpunkte.',0),\n18008 => array('Jeder RadarPlot muss die gleiche Anzahl von Datenpunkten haben.',0),\n\n/*\n**  jpgraph_regstat\n*/\n\n19001 => array('Spline: Anzahl der X- und Y-Koordinaten muss gleich sein.',0),\n19002 => array('Ungültige Dateneingabe für Spline. Zwei oder mehr aufeinanderfolgende X-Werte sind identisch. Jeder eigegebene X-Wert muss unterschiedlich sein, weil vom mathematischen Standpunkt ein Eins-zu-Eins-Mapping vorliegen muss, d.h. jeder X-Wert korrespondiert mit exakt einem Y-Wert.',0),\n19003 => array('Bezier: Anzahl der X- und Y-Koordinaten muss gleich sein.',0),\n\n/*\n**  jpgraph_scatter\n*/\n\n20001 => array('Fieldplots müssen die gleiche Anzahl von X und Y Datenpunkten haben.',0),\n20002 => array('Bei Fieldplots muss ein Winkel für jeden X und Y Datenpunkt angegeben werden.',0),\n20003 => array('Scatterplots müssen die gleiche Anzahl von X- und Y-Datenpunkten haben.',0),\n\n/*\n**  jpgraph_stock\n*/\n\n21001 => array('Die Anzahl der Datenwerte für Stock-Charts müssen ein Mehrfaches von %d Datenpunkten sein.',1),\n\n/*\n**  jpgraph_plotmark\n*/\n\n23001 => array('Der Marker \"%s\" existiert nicht in der Farbe: %d',2),\n23002 => array('Der Farb-Index ist zu hoch für den Marker \"%s\"',1),\n23003 => array('Ein Dateiname muss angegeben werden, wenn Du den Marker-Typ auf MARK_IMG setzt.',0),\n\n/*\n**  jpgraph_utils\n*/\n\n24001 => array('FuncGenerator : Keine Funktion definiert. ',0),\n24002 => array('FuncGenerator : Syntax-Fehler in der Funktionsdefinition ',0),\n24003 => array('DateScaleUtils: Unknown tick type specified in call to GetTicks()',0),\n24004 => array('ReadCSV2: Die anzahl der spalten fehler in %s reihe %d',2),\n/*\n**  jpgraph\n*/\n\n25001 => array('Diese PHP-Installation ist nicht mit der GD-Bibliothek kompiliert. Bitte kompiliere PHP mit GD-Unterstützung neu, damit JpGraph funktioniert. (Weder die Funktion imagetypes() noch imagecreatefromstring() existiert!)',0),\n25002 => array('Diese PHP-Installation scheint nicht die benötigte GD-Bibliothek zu unterstützen. Bitte schau in der PHP-Dokumentation nach, wie man die GD-Bibliothek installiert und aktiviert.',0),\n25003 => array('Genereller PHP Fehler : Bei %s:%d : %s',3),\n25004 => array('Genereller PHP Fehler : %s ',1),\n25005 => array('PHP_SELF, die PHP-Global-Variable kann nicht ermittelt werden. PHP kann nicht von der Kommandozeile gestartet werden, wenn der Cache oder die Bilddateien automatisch benannt werden sollen.',0),\n25006 => array('Die Benutzung der FF_CHINESE (FF_BIG5) Schriftfamilie benötigt die iconv() Funktion in Deiner PHP-Konfiguration. Dies wird nicht defaultmäßig in PHP kompiliert (benötigt \"--width-iconv\" bei der Konfiguration).',0),\n25007 => array('Du versuchst das lokale (%s) zu verwenden, was von Deiner PHP-Installation nicht unterstützt wird. Hinweis: Benutze \\'\\', um das defaultmäßige Lokale für diese geographische Region festzulegen.',1),\n25008 => array('Die Bild-Breite und Höhe in Graph::Graph() müssen numerisch sein',0),\n25009 => array('Die Skalierung der Achsen muss angegeben werden mit Graph::SetScale()',0),\n\n25010 => array('Graph::Add() Du hast versucht, einen leeren Plot zum Graph hinzuzufügen.',0),\n25011 => array('Graph::AddY2() Du hast versucht, einen leeren Plot zum Graph hinzuzufügen.',0),\n25012 => array('Graph::AddYN() Du hast versucht, einen leeren Plot zum Graph hinzuzufügen.',0),\n25013 => array('Es können nur Standard-Plots zu multiplen Y-Achsen hinzugefügt werden',0),\n25014 => array('Graph::AddText() Du hast versucht, einen leeren Text zum Graph hinzuzufügen.',0),\n25015 => array('Graph::AddLine() Du hast versucht, eine leere Linie zum Graph hinzuzufügen.',0),\n25016 => array('Graph::AddBand() Du hast versucht, ein leeres Band zum Graph hinzuzufügen.',0),\n25017 => array('Du benutzt GD 2.x und versuchst, ein Hintergrundbild in einem Truecolor-Bild zu verwenden. Um Hintergrundbilder mit GD 2.x zu verwenden, ist es notwendig, Truecolor zu aktivieren, indem die USE_TRUECOLOR-Konstante auf TRUE gesetzt wird. Wegen eines Bugs in GD 2.0.1 ist die Qualität der Schrift sehr schlecht, wenn Truetype-Schrift in Truecolor-Bildern verwendet werden.',0),\n25018 => array('Falscher Dateiname für Graph::SetBackgroundImage() : \"%s\" muss eine gültige Dateinamenerweiterung (jpg,gif,png) haben, wenn die automatische Dateityperkennung verwenndet werden soll.',1),\n25019 => array('Unbekannte Dateinamenerweiterung (%s) in Graph::SetBackgroundImage() für Dateiname: \"%s\"',2),\n\n25020 => array('Graph::SetScale(): Dar Maximalwert muss größer sein als der Mindestwert.',0),\n25021 => array('Unbekannte Achsendefinition für die Y-Achse. (%s)',1),\n25022 => array('Unbekannte Achsendefinition für die X-Achse. (%s)',1),\n25023 => array('Nicht unterstützter Y2-Achsentyp: \"%s\" muss einer von (lin,log,int) sein.',1),\n25024 => array('Nicht unterstützter X-Achsentyp: \"%s\" muss einer von (lin,log,int) sein.',1),\n25025 => array('Nicht unterstützte Tick-Dichte: %d',1),\n25026 => array('Nicht unterstützter Typ der nicht angegebenen Y-Achse. Du hast entweder: 1. einen Y-Achsentyp für automatisches Skalieren definiert, aber keine Plots angegeben. 2. eine Achse direkt definiert, aber vergessen, die Tick-Dichte zu festzulegen.',0),\n25027 => array('Kann cached CSIM \"%s\" zum Lesen nicht öffnen.',1),\n25028 => array('Apache/PHP hat keine Schreibrechte, in das CSIM-Cache-Verzeichnis (%s) zu schreiben. Überprüfe die Rechte.',1),\n25029 => array('Kann nicht in das CSIM \"%s\" schreiben. Überprüfe die Schreibrechte und den freien Speicherplatz.',1),\n\n25030 => array('Fehlender Skriptname für StrokeCSIM(). Der Name des aktuellen Skriptes muss als erster Parameter von StrokeCSIM() angegeben werden.',0),\n25031 => array('Der Achsentyp muss mittels Graph::SetScale() angegeben werden.',0),\n25032 => array('Es existieren keine Plots für die Y-Achse nbr:%d',1),\n25033 => array('',0),\n25034 => array('Undefinierte X-Achse kann nicht gezeichnet werden. Es wurden keine Plots definiert.',0),\n25035 => array('Du hast Clipping aktiviert. Clipping wird nur für Diagramme mit 0 oder 90 Grad Rotation unterstützt. Bitte verändere Deinen Rotationswinkel (=%d Grad) dementsprechend oder deaktiviere Clipping.',1),\n25036 => array('Unbekannter Achsentyp AxisStyle() : %s',1),\n25037 => array('Das Bildformat Deines Hintergrundbildes (%s) wird von Deiner System-Konfiguration nicht unterstützt. ',1),\n25038 => array('Das Hintergrundbild scheint von einem anderen Typ (unterschiedliche Dateierweiterung) zu sein als der angegebene Typ. Angegebenen: %s; Datei: %s',2),\n25039 => array('Hintergrundbild kann nicht gelesen werden: \"%s\"',1),\n\n25040 => array('Es ist nicht möglich, sowohl ein Hintergrundbild als auch eine Hintergrund-Landesflagge anzugeben.',0),\n25041 => array('Um Landesflaggen als Hintergrund benutzen zu können, muss die Datei \"jpgraph_flags.php\" eingefügt werden (per include).',0),\n25042 => array('Unbekanntes Hintergrundbild-Layout',0),\n25043 => array('Unbekannter Titelhintergrund-Stil.',0),\n25044 => array('Automatisches Skalieren kann nicht verwendet werden, weil es unmöglich ist, einen gültigen min/max Wert für die Y-Achse zu ermitteln (nur Null-Werte).',0),\n25045 => array('Die Schriftfamilien FF_HANDWRT und FF_BOOK sind wegen Copyright-Problemen nicht mehr verfügbar. Diese Schriften können nicht mehr mit JpGraph verteilt werden. Bitte lade Dir Schriften von http://corefonts.sourceforge.net/ herunter.',0),\n25046 => array('Angegebene TTF-Schriftfamilie (id=%d) ist unbekannt oder existiert nicht. Bitte merke Dir, dass TTF-Schriften wegen Copyright-Problemen nicht mit JpGraph mitgeliefert werden. Du findest MS-TTF-Internetschriften (arial, courier, etc.) zum Herunterladen unter http://corefonts.sourceforge.net/',1),\n25047 => array('Stil %s ist nicht verfügbar für Schriftfamilie %s',2),\n25048 => array('Unbekannte Schriftstildefinition [%s].',1),\n25049 => array('Schriftdatei \"%s\" ist nicht lesbar oder existiert nicht.',1),\n\n25050 => array('Erstes Argument für Text::Text() muss ein String sein.',0),\n25051 => array('Ungültige Richtung angegeben für Text.',0),\n25052 => array('PANIK: Interner Fehler in SuperScript::Stroke(). Unbekannte vertikale Ausrichtung für Text.',0),\n25053 => array('PANIK: Interner Fehler in SuperScript::Stroke(). Unbekannte horizontale Ausrichtung für Text.',0),\n25054 => array('Interner Fehler: Unbekannte Grid-Achse %s',1),\n25055 => array('Axis::SetTickDirection() sollte nicht mehr verwendet werden. Benutze stattdessen Axis::SetTickSide().',0),\n25056 => array('SetTickLabelMargin() sollte nicht mehr verwendet werden. Benutze stattdessen Axis::SetLabelMargin().',0),\n25057 => array('SetTextTicks() sollte nicht mehr verwendet werden. Benutze stattdessen SetTextTickInterval().',0),\n25058 => array('TextLabelIntevall >= 1 muss angegeben werden.',0),\n25059 => array('SetLabelPos() sollte nicht mehr verwendet werden. Benutze stattdessen Axis::SetLabelSide().',0),\n\n25060 => array('Unbekannte Ausrichtung angegeben für X-Achsentitel (%s).',1),\n25061 => array('Unbekannte Ausrichtung angegeben für Y-Achsentitel (%s).',1),\n25062 => array('Label unter einem Winkel werden für die Y-Achse nicht unterstützt.',0),\n25063 => array('Ticks::SetPrecision() sollte nicht mehr verwendet werden. Benutze stattdessen Ticks::SetLabelFormat() (oder Ticks::SetFormatCallback()).',0),\n25064 => array('Kleinere oder größere Schrittgröße ist 0. Überprüfe, ob Du fälschlicherweise SetTextTicks(0) in Deinem Skript hast. Wenn dies nicht der Fall ist, bist Du eventuell über einen Bug in JpGraph gestolpert. Bitte sende einen Report und füge den Code an, der den Fehler verursacht hat.',0),\n25065 => array('Tick-Positionen müssen als array() angegeben werden',0),\n25066 => array('Wenn die Tick-Positionen und -Label von Hand eingegeben werden, muss die Anzahl der Ticks und der Label gleich sein.',0),\n25067 => array('Deine von Hand eingegebene Achse und Ticks sind nicht korrekt. Die Skala scheint zu klein zu sein für den Tickabstand.',0),\n25068 => array('Ein Plot hat eine ungültige Achse. Dies kann beispielsweise der Fall sein, wenn Du automatisches Text-Skalieren verwendest, um ein Liniendiagramm zu zeichnen mit nur einem Datenpunkt, oder wenn die Bildfläche zu klein ist. Es kann auch der Fall sein, dass kein Datenpunkt einen numerischen Wert hat (vielleicht nur \\'-\\' oder \\'x\\').',0),\n25069 => array('Grace muss größer sein als 0',0),\n\n25070 => array('Deine Daten enthalten nicht-numerische Werte.',0),\n25071 => array('Du hast mit SetAutoMin() einen Mindestwert angegeben, der größer ist als der Maximalwert für die Achse. Dies ist nicht möglich.',0),\n25072 => array('Du hast mit SetAutoMax() einen Maximalwert angegeben, der kleiner ist als der Minimalwert der Achse. Dies ist nicht möglich.',0),\n25073 => array('Interner Fehler. Der Integer-Skalierungs-Algorithmus-Vergleich ist außerhalb der Grenzen  (r=%f).',1),\n25074 => array('Interner Fehler. Der Skalierungsbereich ist negativ (%f) [für %s Achse]. Dieses Problem könnte verursacht werden durch den Versuch, \\'ungültige\\' Werte in die Daten-Vektoren einzugeben (z.B. nur String- oder NULL-Werte), was beim automatischen Skalieren einen Fehler erzeugt.',2),\n25075 => array('Die automatischen Ticks können nicht gesetzt werden, weil min==max.',0),\n25077 => array('Einstellfaktor für die Farbe muss größer sein als 0',0),\n25078 => array('Unbekannte Farbe: %s',1),\n25079 => array('Unbekannte Farbdefinition: %s, Größe=%d',2),\n\n25080 => array('Der Alpha-Parameter für Farben muss zwischen 0.0 und 1.0 liegen.',0),\n25081 => array('Das ausgewählte Grafikformat wird entweder nicht unterstützt oder ist unbekannt [%s]',1),\n25082 => array('Es wurden ungültige Größen für Breite und Höhe beim Erstellen des Bildes definiert (Breite=%d, Höhe=%d).',2),\n25083 => array('Es wurde eine ungültige Größe beim Kopieren des Bildes angegeben. Die Größe für das kopierte Bild wurde auf 1 Pixel oder weniger gesetzt.',0),\n25084 => array('Fehler beim Erstellen eines temporären GD-Canvas. Möglicherweise liegt ein Arbeitsspeicherproblem vor.',0),\n25085 => array('Ein Bild kann nicht aus dem angegebenen String erzeugt werden. Er ist entweder in einem nicht unterstützen Format oder er represäntiert ein kaputtes Bild.',0),\n25086 => array('Du scheinst nur GD 1.x installiert zu haben. Um Alphablending zu aktivieren, ist GD 2.x oder höher notwendig. Bitte installiere GD 2.x oder versichere Dich, dass die Konstante USE_GD2 richtig gesetzt ist. Standardmäßig wird die installierte GD-Version automatisch erkannt. Ganz selten wird GD2 erkannt, obwohl nur GD1 installiert ist. Die Konstante USE_GD2 muss dann zu \"false\" gesetzt werden.',0),\n25087 => array('Diese PHP-Version wurde ohne TTF-Unterstützung konfiguriert. PHP muss mit TTF-Unterstützung neu kompiliert und installiert werden.',0),\n25088 => array('Die GD-Schriftunterstützung wurde falsch konfiguriert. Der Aufruf von imagefontwidth() ist fehlerhaft.',0),\n25089 => array('Die GD-Schriftunterstützung wurde falsch konfiguriert. Der Aufruf von imagefontheight() ist fehlerhaft.',0),\n\n25090 => array('Unbekannte Richtung angegeben im Aufruf von StrokeBoxedText() [%s].',1),\n25091 => array('Die interne Schrift untestützt das Schreiben von Text in einem beliebigen Winkel nicht. Benutze stattdessen TTF-Schriften.',0),\n25092 => array('Es liegt entweder ein Konfigurationsproblem mit TrueType oder ein Problem beim Lesen der Schriftdatei \"%s\" vor. Versichere Dich, dass die Datei existiert und Leserechte und -pfad vergeben sind. (wenn \\'basedir\\' restriction in PHP aktiviert ist, muss die Schriftdatei im Dokumentwurzelverzeichnis abgelegt werden). Möglicherweise ist die FreeType-Bibliothek falsch installiert. Versuche, mindestens zur FreeType-Version 2.1.13 zu aktualisieren und kompiliere GD mit einem korrekten Setup neu, damit die FreeType-Bibliothek gefunden werden kann.',1),\n25093 => array('Die Schriftdatei \"%s\" kann nicht gelesen werden beim Aufruf von Image::GetBBoxTTF. Bitte versichere Dich, dass die Schrift gesetzt wurde, bevor diese Methode aufgerufen wird, und dass die Schrift im TTF-Verzeichnis installiert ist.',1),\n25094 => array('Die Textrichtung muss in einem Winkel zwischen 0 und 90 engegeben werden.',0),\n25095 => array('Unbekannte Schriftfamilien-Definition. ',0),\n25096 => array('Der Farbpalette können keine weiteren Farben zugewiesen werden. Dem Bild wurde bereits die größtmögliche Anzahl von Farben (%d) zugewiesen und die Palette ist voll. Verwende stattdessen ein TrueColor-Bild',0),\n25097 => array('Eine Farbe wurde als leerer String im Aufruf von PushColor() angegegeben.',0),\n25098 => array('Negativer Farbindex. Unpassender Aufruf von PopColor().',0),\n25099 => array('Die Parameter für Helligkeit und Kontrast sind außerhalb des zulässigen Bereichs [-1,1]',0),\n\n25100 => array('Es liegt ein Problem mit der Farbpalette und dem GD-Setup vor. Bitte deaktiviere anti-aliasing oder verwende GD2 mit TrueColor. Wenn die GD2-Bibliothek installiert ist, versichere Dich, dass die Konstante USE_GD2 auf \"true\" gesetzt und TrueColor aktiviert ist.',0),\n25101 => array('Ungültiges numerisches Argument für SetLineStyle(): (%d)',1),\n25102 => array('Ungültiges String-Argument für SetLineStyle(): %s',1),\n25103 => array('Ungültiges Argument für SetLineStyle %s',1),\n25104 => array('Unbekannter Linientyp: %s',1),\n25105 => array('Es wurden NULL-Daten für ein gefülltes Polygon angegeben. Sorge dafür, dass keine NULL-Daten angegeben werden.',0),\n25106 => array('Image::FillToBorder : es können keine weiteren Farben zugewiesen werden.',0),\n25107 => array('In Datei \"%s\" kann nicht geschrieben werden. Überprüfe die aktuellen Schreibrechte.',1),\n25108 => array('Das Bild kann nicht gestreamt werden. Möglicherweise liegt ein Fehler im PHP/GD-Setup vor. Kompiliere PHP neu und verwende die eingebaute GD-Bibliothek, die mit PHP angeboten wird.',0),\n25109 => array('Deine PHP- (und GD-lib-) Installation scheint keine bekannten Grafikformate zu unterstützen. Sorge zunächst dafür, dass GD als PHP-Modul kompiliert ist. Wenn Du außerdem JPEG-Bilder verwenden willst, musst Du die JPEG-Bibliothek installieren. Weitere Details sind in der PHP-Dokumentation zu finden.',0),\n\n25110 => array('Dein PHP-Installation unterstützt das gewählte Grafikformat nicht: %s',1),\n25111 => array('Das gecachete Bild %s kann nicht gelöscht werden. Problem mit den Rechten?',1),\n25112 => array('Das Datum der gecacheten Datei (%s) liegt in der Zukunft.',1),\n25113 => array('Das gecachete Bild %s kann nicht gelöscht werden. Problem mit den Rechten?',1),\n25114 => array('PHP hat nicht die erforderlichen Rechte, um in die Cache-Datei %s zu schreiben. Bitte versichere Dich, dass der Benutzer, der PHP anwendet, die entsprechenden Schreibrechte für die Datei hat, wenn Du das Cache-System in JPGraph verwenden willst.',1),\n25115 => array('Berechtigung für gecachetes Bild %s kann nicht gesetzt werden. Problem mit den Rechten?',1),\n25116 => array('Datei kann nicht aus dem Cache %s geöffnet werden',1),\n25117 => array('Gecachetes Bild %s kann nicht zum Lesen geöffnet werden.',1),\n25118 => array('Verzeichnis %s kann nicht angelegt werden. Versichere Dich, dass PHP die Schreibrechte in diesem Verzeichnis hat.',1),\n25119 => array('Rechte für Datei %s können nicht gesetzt werden. Problem mit den Rechten?',1),\n\n25120 => array('Die Position für die Legende muss als Prozentwert im Bereich 0-1 angegeben werden.',0),\n25121 => array('Eine leerer Datenvektor wurde für den Plot eingegeben. Es muss wenigstens ein Datenpunkt vorliegen.',0),\n25122 => array('Stroke() muss als Subklasse der Klasse Plot definiert sein.',0),\n25123 => array('Du kannst keine Text-X-Achse mit X-Koordinaten verwenden. Benutze stattdessen eine \"int\" oder \"lin\" Achse.',0),\n25124 => array('Der Eingabedatenvektor mus aufeinanderfolgende Werte von 0 aufwärts beinhalten. Der angegebene Y-Vektor beginnt mit leeren Werten (NULL).',0),\n25125 => array('Ungültige Richtung für statische Linie.',0),\n25126 => array('Es kann kein TrueColor-Bild erzeugt werden. Überprüfe, ob die GD2-Bibliothek und PHP korrekt aufgesetzt wurden.',0),\n25127 => array('The library has been configured for automatic encoding conversion of Japanese fonts. This requires that PHP has the mb_convert_encoding() function. Your PHP installation lacks this function (PHP needs the \"--enable-mbstring\" when compiled).',0),\n25128 => array('The function imageantialias() is not available in your PHP installation. Use the GD version that comes with PHP and not the standalone version.',0),\n25129 => array('Anti-alias can not be used with dashed lines. Please disable anti-alias or use solid lines.',0),\n25130 => array('Too small plot area. (%d x %d). With the given image size and margins there is to little space left for the plot. Increase the plot size or reduce the margins.',2),\n\n25131 => array('StrokeBoxedText2() only supports TTF fonts and not built-in bitmap fonts.',0),\n25132 => array('Undefined property %s.',1), // @todo translate\n25133 => array('Use Graph::SetTheme() after Graph::SetScale().',0), // @todo translate\n\n/*\n**  jpgraph_led\n*/\n\n25500 => array('Multibyte strings must be enabled in the PHP installation in order to run the LED module so that the function mb_strlen() is available. See PHP documentation for more information.',0),\n\n\n/*\n**---------------------------------------------------------------------------------------------\n** Pro-version strings\n**---------------------------------------------------------------------------------------------\n*/\n\n/*\n**  jpgraph_table\n*/\n\n27001 => array('GTextTable: Ungültiges Argument für Set(). Das Array-Argument muss 2-- dimensional sein.',0),\n27002 => array('GTextTable: Ungültiges Argument für Set()',0),\n27003 => array('GTextTable: Falsche Anzahl von Argumenten für GTextTable::SetColor()',0),\n27004 => array('GTextTable: Angegebener Zellenbereich, der verschmolzen werden soll, ist ungültig.',0),\n27005 => array('GTextTable: Bereits verschmolzene Zellen im Bereich (%d,%d) bis (%d,%d) können nicht ein weiteres Mal verschmolzen werden.',4),\n27006 => array('GTextTable: Spalten-Argument = %d liegt außerhalb der festgelegten Tabellengröße.',1),\n27007 => array('GTextTable: Zeilen-Argument = %d liegt außerhalb der festgelegten Tabellengröße.',1),\n27008 => array('GTextTable: Spalten- und Zeilengröße müssen zu den Dimensionen der Tabelle passen.',0),\n27009 => array('GTextTable: Die Anzahl der Tabellenspalten oder -zeilen ist 0. Versichere Dich, dass die Methoden Init() oder Set() aufgerufen werden.',0),\n27010 => array('GTextTable: Es wurde keine Ausrichtung beim Aufruf von SetAlign() angegeben.',0),\n27011 => array('GTextTable: Es wurde eine unbekannte Ausrichtung beim Aufruf von SetAlign() abgegeben. Horizontal=%s, Vertikal=%s',2),\n27012 => array('GTextTable: Interner Fehler. Es wurde ein ungültiges Argument festgeleget %s',1),\n27013 => array('GTextTable: Das Argument für FormatNumber() muss ein String sein.',0),\n27014 => array('GTextTable: Die Tabelle wurde weder mit einem Aufruf von Set() noch von Init() initialisiert.',0),\n27015 => array('GTextTable: Der Zellenbildbedingungstyp muss entweder TIMG_WIDTH oder TIMG_HEIGHT sein.',0),\n\n/*\n**  jpgraph_windrose\n*/\n\n22001 => array('Die Gesamtsumme der prozentualen Anteile aller Windrosenarme darf 100%% nicht überschreiten!\\n(Aktuell max: %d)',1),\n22002 => array('Das Bild ist zu klein für eine Skala. Bitte vergrößere das Bild.',0),\n22004 => array('Die Etikettendefinition für Windrosenrichtungen müssen 16 Werte haben (eine für jede Kompassrichtung).',0),\n22005 => array('Der Linientyp für radiale Linien muss einer von (\"solid\",\"dotted\",\"dashed\",\"longdashed\") sein.',0),\n22006 => array('Es wurde ein ungültiger Windrosentyp angegeben.',0),\n22007 => array('Es wurden zu wenig Werte für die Bereichslegende angegeben.',0),\n22008 => array('Interner Fehler: Versuch, eine freie Windrose zu plotten, obwohl der Typ keine freie Windrose ist.',0),\n22009 => array('Du hast die gleiche Richtung zweimal angegeben, einmal mit einem Winkel und einmal mit einer Kompassrichtung (%f Grad).',0),\n22010 => array('Die Richtung muss entweder ein numerischer Wert sein oder eine der 16 Kompassrichtungen',0),\n22011 => array('Der Windrosenindex muss ein numerischer oder Richtungswert sein. Du hast angegeben Index=%d',1),\n22012 => array('Die radiale Achsendefinition für die Windrose enthält eine nicht aktivierte Richtung.',0),\n22013 => array('Du hast dasselbe Look&Feel für die gleiche Kompassrichtung zweimal engegeben, einmal mit Text und einmal mit einem Index (Index=%d)',1),\n22014 => array('Der Index für eine Kompassrichtung muss zwischen 0 und 15 sein.',0),\n22015 => array('Du hast einen unbekannten Windrosenplottyp angegeben.',0),\n22016 => array('Der Windrosenarmindex muss ein numerischer oder ein Richtungswert sein.',0),\n22017 => array('Die Windrosendaten enthalten eine Richtung, die nicht aktiviert ist. Bitte berichtige, welche Label angezeigt werden sollen.',0),\n22018 => array('Du hast für dieselbe Kompassrichtung zweimal Daten angegeben, einmal mit Text und einmal mit einem Index (Index=%d)',1),\n22019 => array('Der Index für eine Richtung muss zwischen 0 und 15 sein. Winkel dürfen nicht für einen regelmäßigen Windplot angegeben werden, sondern entweder ein Index oder eine Kompassrichtung.',0),\n22020 => array('Der Windrosenplot ist zu groß für die angegebene Bildgröße. Benutze entweder WindrosePlot::SetSize(), um den Plot kleiner zu machen oder vergrößere das Bild im ursprünglichen Aufruf von WindroseGraph().',0),\n22021 => array('It is only possible to add Text, IconPlot or WindrosePlot to a Windrose Graph',0),\n\n/*\n**  jpgraph_odometer\n*/\n\n13001 => array('Unbekannter Nadeltypstil (%d).',1),\n13002 => array('Ein Wert für das Odometer (%f) ist außerhalb des angegebenen Bereichs [%f,%f]',3),\n\n/*\n**  jpgraph_barcode\n*/\n\n1001 => array('Unbekannte Kodier-Specifikation: %s',1),\n1002 => array('datenvalidierung schlug fehl. [%s] kann nicht mittels der Kodierung \"%s\" kodiert werden',2),\n1003 => array('Interner Kodierfehler. Kodieren von %s ist nicht möglich in Code 128',1),\n1004 => array('Interner barcode Fehler. Unbekannter UPC-E Kodiertyp: %s',1),\n1005 => array('Interner Fehler. Das Textzeichen-Tupel (%s, %s) kann nicht im Code-128 Zeichensatz C kodiert werden.',2),\n1006 => array('Interner Kodierfehler für CODE 128. Es wurde versucht, CTRL in CHARSET != A zu kodieren.',0),\n1007 => array('Interner Kodierfehler für CODE 128. Es wurde versucht, DEL in CHARSET != B zu kodieren.',0),\n1008 => array('Interner Kodierfehler für CODE 128. Es wurde versucht, kleine Buchstaben in CHARSET != B zu kodieren.',0),\n1009 => array('Kodieren mittels CODE 93 wird noch nicht unterstützt.',0),\n1010 => array('Kodieren mittels POSTNET wird noch nicht unterstützt.',0),\n1011 => array('Nicht untrstütztes Barcode-Backend für den Typ %s',1),\n\n/*\n** PDF417\n*/\n\n26000 => array('PDF417: The PDF417 module requires that the PHP installation must support the function bcmod(). This is normally enabled at compile time. See documentation for more information.',0),\n26001 => array('PDF417: Die Anzahl der Spalten muss zwischen 1 und 30 sein.',0),\n26002 => array('PDF417: Der Fehler-Level muss zwischen 0 und 8 sein.',0),\n26003 => array('PDF417: Ungültiges Format für Eingabedaten, um sie mit PDF417 zu kodieren.',0),\n26004 => array('PDF417: die eigebenen Daten können nicht mit Fehler-Level %d und %d spalten kodiert werden, weil daraus zu viele Symbole oder mehr als 90 Zeilen resultieren.',2),\n26005 => array('PDF417: Die Datei \"%s\" kann nicht zum Schreiben geöffnet werden.',1),\n26006 => array('PDF417: Interner Fehler. Die Eingabedatendatei für PDF417-Cluster %d ist fehlerhaft.',1),\n26007 => array('PDF417: Interner Fehler. GetPattern: Ungültiger Code-Wert %d (Zeile %d)',2),\n26008 => array('PDF417: Interner Fehler. Modus wurde nicht in der Modusliste!! Modus %d',1),\n26009 => array('PDF417: Kodierfehler: Ungültiges Zeichen. Zeichen kann nicht mit ASCII-Code %d kodiert werden.',1),\n26010 => array('PDF417: Interner Fehler: Keine Eingabedaten beim Dekodieren.',0),\n26011 => array('PDF417: Kodierfehler. Numerisches Kodieren bei nicht-numerischen Daten nicht möglich.',0),\n26012 => array('PDF417: Interner Fehler. Es wurden für den Binary-Kompressor keine Daten zum Dekodieren eingegeben.',0),\n26013 => array('PDF417: Interner Fehler. Checksum Fehler. Koeffiziententabellen sind fehlerhaft.',0),\n26014 => array('PDF417: Interner Fehler. Es wurden keine Daten zum Berechnen von Kodewörtern eingegeben.',0),\n26015 => array('PDF417: Interner Fehler. Ein Eintrag 0 in die Statusübertragungstabellen ist nicht NULL. Eintrag 1 = (%s)',1),\n26016 => array('PDF417: Interner Fehler: Nichtregistrierter Statusübertragungsmodus beim Dekodieren.',0),\n\n\n/*\n** jpgraph_contour\n*/\n\n28001 => array('Dritten parameter fur Contour muss ein vector der fargen sind.',0),\n28002 => array('Die anzahlen der farges jeder isobar linien muss gleich sein.',0),\n28003 => array('ContourPlot Interner Fehler: isobarHCrossing: Spalten index ist zu hoch (%d)',1),\n28004 => array('ContourPlot Interner Fehler: isobarHCrossing: Reihe index ist zu hoch (%d)',1),\n28005 => array('ContourPlot Interner Fehler: isobarVCrossing: Reihe index ist zu hoch (%d)',1),\n28006 => array('ContourPlot Interner Fehler: isobarVCrossing: Spalten index ist zu hoch (%d)',1),\n28007 => array('ContourPlot. Interpolation faktor ist zu hoch (>5)',0),\n\n\n/*\n * jpgraph_matrix and colormap\n*/\n29201 => array('Min range value must be less or equal to max range value for colormaps',0),\n29202 => array('The distance between min and max value is too small for numerical precision',0),\n29203 => array('Number of color quantification level must be at least %d',1),\n29204 => array('Number of colors (%d) is invalid for this colormap. It must be a number that can be written as: %d + k*%d',3),\n29205 => array('Colormap specification out of range. Must be an integer in range [0,%d]',1),\n29206 => array('Invalid object added to MatrixGraph',0),\n29207 => array('Empty input data specified for MatrixPlot',0),\n29208 => array('Unknown side specifiction for matrix labels \"%s\"',1),\n29209 => array('CSIM Target matrix must be the same size as the data matrix (csim=%d x %d, data=%d x %d)',4),\n29210 => array('CSIM Target for matrix labels does not match the number of labels (csim=%d, labels=%d)',2),\n\n\n/*\n* jpgraph_theme\n*/\n30001 => array(\"Theme::%s() is not defined. \\nPlease make %s(\\$graph) function in your theme classs.\",2),\n\n\n);\n\n?>\n"
  },
  {
    "path": "include/jpgraph/lang/en.inc.php",
    "content": "<?php\n/*=======================================================================\n// File:     EN.INC.PHP\n// Description: English language file for error messages\n// Created:     2006-01-25\n// Ver:        $Id: en.inc.php 1886 2009-10-01 23:30:16Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n*/\n\n// Note: Format of each error message is array(<error message>,<number of arguments>)\n$_jpg_messages = array(\n\n/*\n** Headers already sent error. This is formatted as HTML different since this will be sent back directly as text\n*/\n10  => array('<table border=\"1\"><tr><td style=\"color:darkred; font-size:1.2em;\"><b>JpGraph Error:</b>\nHTTP headers have already been sent.<br>Caused by output from file <b>%s</b> at line <b>%d</b>.</td></tr><tr><td><b>Explanation:</b><br>HTTP headers have already been sent back to the browser indicating the data as text before the library got a chance to send it\\'s image HTTP header to this browser. This makes it impossible for the library to send back image data to the browser (since that would be interpretated as text by the browser and show up as junk text).<p>Most likely you have some text in your script before the call to <i>Graph::Stroke()</i>. If this texts gets sent back to the browser the browser will assume that all data is plain text. Look for any text, even spaces and newlines, that might have been sent back to the browser. <p>For example it is a common mistake to leave a blank line before the opening \"<b>&lt;?php</b>\".</td></tr></table>',2),\n\n/*\n** Setup errors\n*/\n11 => array('No path specified for CACHE_DIR. Please specify CACHE_DIR manually in jpg-config.inc',0),\n12 => array('No path specified for TTF_DIR and path can not be determined automatically. Please specify TTF_DIR manually (in jpg-config.inc).',0),\n13 => array('The installed PHP version (%s) is not compatible with this release of the library. The library requires at least PHP version %s',2),\n\n\n/*\n**  jpgraph_bar\n*/\n\n2001 => array('Number of colors is not the same as the number of patterns in BarPlot::SetPattern()',0),\n2002 => array('Unknown pattern specified in call to BarPlot::SetPattern()',0),\n2003 => array('Number of X and Y points are not equal. Number of X-points: %d Number of Y-points: %d',2),\n2004 => array('All values for a barplot must be numeric. You have specified value nr [%d] == %s',2),\n2005 => array('You have specified an empty array for shadow colors in the bar plot.',0),\n2006 => array('Unknown position for values on bars : %s',1),\n2007 => array('Cannot create GroupBarPlot from empty plot array.',0),\n2008 => array('Group bar plot element nbr %d is undefined or empty.',0),\n2009 => array('One of the objects submitted to GroupBar is not a BarPlot. Make sure that you create the GroupBar plot from an array of BarPlot or AccBarPlot objects. (Class = %s)',1),\n2010 => array('Cannot create AccBarPlot from empty plot array.',0),\n2011 => array('Acc bar plot element nbr %d is undefined or empty.',1),\n2012 => array('One of the objects submitted to AccBar is not a BarPlot. Make sure that you create the AccBar plot from an array of BarPlot objects. (Class=%s)',1),\n2013 => array('You have specified an empty array for shadow colors in the bar plot.',0),\n2014 => array('Number of datapoints for each data set in accbarplot must be the same',0),\n2015 => array('Individual bar plots in an AccBarPlot or GroupBarPlot can not have specified X-coordinates',0),\n\n\n/*\n**  jpgraph_date\n*/\n\n3001 => array('It is only possible to use either SetDateAlign() or SetTimeAlign() but not both',0),\n\n/*\n**  jpgraph_error\n*/\n\n4002 => array('Error in input data to LineErrorPlot. Number of data points must be a multiple of 3',0),\n\n/*\n**  jpgraph_flags\n*/\n\n5001 => array('Unknown flag size (%d).',1),\n5002 => array('Flag index %s does not exist.',1),\n5003 => array('Invalid ordinal number (%d) specified for flag index.',1),\n5004 => array('The (partial) country name %s does not have a corresponding flag image. The flag may still exist but under another name, e.g. instead of \"usa\" try \"united states\".',1),\n\n\n/*\n**  jpgraph_gantt\n*/\n\n6001 => array('Internal error. Height for ActivityTitles is < 0',0),\n6002 => array('You can\\'t specify negative sizes for Gantt graph dimensions. Use 0 to indicate that you want the library to automatically determine a dimension.',0),\n6003 => array('Invalid format for Constrain parameter at index=%d in CreateSimple(). Parameter must start with index 0 and contain arrays of (Row,Constrain-To,Constrain-Type)',1),\n6004 => array('Invalid format for Progress parameter at index=%d in CreateSimple(). Parameter must start with index 0 and contain arrays of (Row,Progress)',1),\n6005 => array('SetScale() is not meaningful with Gantt charts.',0),\n6006 => array('Cannot autoscale Gantt chart. No dated activities exist. [GetBarMinMax() start >= n]',0),\n6007 => array('Sanity check for automatic Gantt chart size failed. Either the width (=%d) or height (=%d) is larger than MAX_GANTTIMG_SIZE. This could potentially be caused by a wrong date in one of the activities.',2),\n6008 => array('You have specified a constrain from row=%d to row=%d which does not have any activity',2),\n6009 => array('Unknown constrain type specified from row=%d to row=%d',2),\n6010 => array('Illegal icon index for Gantt builtin icon [%d]',1),\n6011 => array('Argument to IconImage must be string or integer',0),\n6012 => array('Unknown type in Gantt object title specification',0),\n6015 => array('Illegal vertical position %d',1),\n6016 => array('Date string (%s) specified for Gantt activity can not be interpretated. Please make sure it is a valid time string, e.g. 2005-04-23 13:30',1),\n6017 => array('Unknown date format in GanttScale (%s).',1),\n6018 => array('Interval for minutes must divide the hour evenly, e.g. 1,5,10,12,15,20,30 etc You have specified an interval of %d minutes.',1),\n6019 => array('The available width (%d) for minutes are to small for this scale to be displayed. Please use auto-sizing or increase the width of the graph.',1),\n6020 => array('Interval for hours must divide the day evenly, e.g. 0:30, 1:00, 1:30, 4:00 etc. You have specified an interval of %d',1),\n6021 => array('Unknown formatting style for week.',0),\n6022 => array('Gantt scale has not been specified.',0),\n6023 => array('If you display both hour and minutes the hour interval must be 1 (Otherwise it doesn\\'t make sense to display minutes).',0),\n6024 => array('CSIM Target must be specified as a string. Start of target is: %d',1),\n6025 => array('CSIM Alt text must be specified as a string. Start of alt text is: %d',1),\n6027 => array('Progress value must in range [0, 1]',0),\n6028 => array('Specified height (%d) for gantt bar is out of range.',1),\n6029 => array('Offset for vertical line must be in range [0,1]',0),\n6030 => array('Unknown arrow direction for link.',0),\n6031 => array('Unknown arrow type for link.',0),\n6032 => array('Internal error: Unknown path type (=%d) specified for link.',1),\n6033 => array('Array of fonts must contain arrays with 3 elements, i.e. (Family, Style, Size)',0),\n\n/*\n**  jpgraph_gradient\n*/\n\n7001 => array('Unknown gradient style (=%d).',1),\n\n/*\n**  jpgraph_iconplot\n*/\n\n8001 => array('Mix value for icon must be between 0 and 100.',0),\n8002 => array('Anchor position for icons must be one of \"top\", \"bottom\", \"left\", \"right\" or \"center\"',0),\n8003 => array('It is not possible to specify both an image file and a country flag for the same icon.',0),\n8004 => array('In order to use Country flags as icons you must include the \"jpgraph_flags.php\" file.',0),\n\n/*\n**  jpgraph_imgtrans\n*/\n\n9001 => array('Value for image transformation out of bounds. Vanishing point on horizon must be specified as a value between 0 and 1.',0),\n\n/*\n**  jpgraph_lineplot\n*/\n\n10001 => array('LinePlot::SetFilled() is deprecated. Use SetFillColor()',0),\n10002 => array('Plot too complicated for fast line Stroke. Use standard Stroke()',0),\n10003 => array('Each plot in an accumulated lineplot must have the same number of data points.',0),\n\n/*\n**  jpgraph_log\n*/\n\n11001 => array('Your data contains non-numeric values.',0),\n11002 => array('Negative data values can not be used in a log scale.',0),\n11003 => array('Your data contains non-numeric values.',0),\n11004 => array('Scale error for logarithmic scale. You have a problem with your data values. The max value must be greater than 0. It is mathematically impossible to have 0 in a logarithmic scale.',0),\n11005 => array('Specifying tick interval for a logarithmic scale is undefined. Remove any calls to SetTextLabelStart() or SetTextTickInterval() on the logarithmic scale.',0),\n\n/*\n**  jpgraph_mgraph\n*/\n\n12001 => array(\"You are using GD 2.x and are trying to use a background images on a non truecolor image. To use background images with GD 2.x it is necessary to enable truecolor by setting the USE_TRUECOLOR constant to TRUE. Due to a bug in GD 2.0.1 using any truetype fonts with truecolor images will result in very poor quality fonts.\",0),\n12002 => array('Incorrect file name for MGraph::SetBackgroundImage() : %s Must have a valid image extension (jpg,gif,png) when using auto detection of image type',1),\n12003 => array('Unknown file extension (%s) in MGraph::SetBackgroundImage() for filename: %s',2),\n12004 => array('The image format of your background image (%s) is not supported in your system configuration. ',1),\n12005 => array('Can\\'t read background image: %s',1),\n12006 => array('Illegal sizes specified for width or height when creating an image, (width=%d, height=%d)',2),\n12007 => array('Argument to MGraph::Add() is not a valid GD image handle.',0),\n12008 => array('Your PHP (and GD-lib) installation does not appear to support any known graphic formats.',0),\n12009 => array('Your PHP installation does not support the chosen graphic format: %s',1),\n12010 => array('Can\\'t create or stream image to file %s Check that PHP has enough permission to write a file to the current directory.',1),\n12011 => array('Can\\'t create truecolor image. Check that you really have GD2 library installed.',0),\n12012 => array('Can\\'t create image. Check that you really have GD2 library installed.',0),\n\n/*\n**  jpgraph_pie3d\n*/\n\n14001 => array('Pie3D::ShowBorder() . Deprecated function. Use Pie3D::SetEdge() to control the edges around slices.',0),\n14002 => array('PiePlot3D::SetAngle() 3D Pie projection angle must be between 5 and 85 degrees.',0),\n14003 => array('Internal assertion failed. Pie3D::Pie3DSlice',0),\n14004 => array('Slice start angle must be between 0 and 360 degrees.',0),\n14005 => array('Pie3D Internal error: Trying to wrap twice when looking for start index',0,),\n14006 => array('Pie3D Internal Error: Z-Sorting algorithm for 3D Pies is not working properly (2). Trying to wrap twice while stroking.',0),\n14007 => array('Width for 3D Pie is 0. Specify a size > 0',0),\n\n/*\n**  jpgraph_pie\n*/\n\n15001 => array('PiePLot::SetTheme() Unknown theme: %s',1),\n15002 => array('Argument to PiePlot::ExplodeSlice() must be an integer',0),\n15003 => array('Argument to PiePlot::Explode() must be an array with integer distances.',0),\n15004 => array('Slice start angle must be between 0 and 360 degrees.',0),\n15005 => array('PiePlot::SetFont() is deprecated. Use PiePlot->value->SetFont() instead.',0),\n15006 => array('PiePlot::SetSize() Radius for pie must either be specified as a fraction [0, 0.5] of the size of the image or as an absolute size in pixels  in the range [10, 1000]',0),\n15007 => array('PiePlot::SetFontColor() is deprecated. Use PiePlot->value->SetColor() instead.',0),\n15008 => array('PiePlot::SetLabelType() Type for pie plots must be 0 or 1 (not %d).',1),\n15009 => array('Illegal pie plot. Sum of all data is zero for Pie Plot',0),\n15010 => array('Sum of all data is 0 for Pie.',0),\n15011 => array('In order to use image transformation you must include the file jpgraph_imgtrans.php in your script.',0),\n15012 => array('PiePlot::SetTheme() is no longer supported. Use PieGraph::SetTheme()',0),\n\n/*\n**  jpgraph_plotband\n*/\n\n16001 => array('Density for pattern must be between 1 and 100. (You tried %f)',1),\n16002 => array('No positions specified for pattern.',0),\n16003 => array('Unknown pattern specification (%d)',0),\n16004 => array('Min value for plotband is larger than specified max value. Please correct.',0),\n\n\n/*\n**  jpgraph_polar\n*/\n\n17001 => array('Polar plots must have an even number of data point. Each data point is a tuple (angle,radius).',0),\n17002 => array('Unknown alignment specified for X-axis title. (%s)',1),\n//17003 => array('Set90AndMargin() is not supported for polar graphs.',0),\n17004 => array('Unknown scale type for polar graph. Must be \"lin\" or \"log\"',0),\n\n/*\n**  jpgraph_radar\n*/\n\n18001 => array('Client side image maps not supported for RadarPlots.',0),\n18002 => array('RadarGraph::SupressTickMarks() is deprecated. Use HideTickMarks() instead.',0),\n18003 => array('Illegal scale for radarplot (%s). Must be \\'lin\\' or \\'log\\'',1),\n18004 => array('Radar Plot size must be between 0.1 and 1. (Your value=%f)',1),\n18005 => array('RadarPlot Unsupported Tick density: %d',1),\n18006 => array('Minimum data %f (Radar plots should only be used when all data points > 0)',1),\n18007 => array('Number of titles does not match number of points in plot.',0),\n18008 => array('Each radar plot must have the same number of data points.',0),\n\n/*\n**  jpgraph_regstat\n*/\n\n19001 => array('Spline: Number of X and Y coordinates must be the same',0),\n19002 => array('Invalid input data for spline. Two or more consecutive input X-values are equal. Each input X-value must differ since from a mathematical point of view it must be a one-to-one mapping, i.e. each X-value must correspond to exactly one Y-value.',0),\n19003 => array('Bezier: Number of X and Y coordinates must be the same',0),\n\n/*\n**  jpgraph_scatter\n*/\n\n20001 => array('Fieldplots must have equal number of X and Y points.',0),\n20002 => array('Fieldplots must have an angle specified for each X and Y points.',0),\n20003 => array('Scatterplot must have equal number of X and Y points.',0),\n\n/*\n**  jpgraph_stock\n*/\n\n21001 => array('Data values for Stock charts must contain an even multiple of %d data points.',1),\n\n/*\n**  jpgraph_plotmark\n*/\n\n23001 => array('This marker \"%s\" does not exist in color with index: %d',2),\n23002 => array('Mark color index too large for marker \"%s\"',1),\n23003 => array('A filename must be specified if you set the mark type to MARK_IMG.',0),\n\n/*\n**  jpgraph_utils\n*/\n\n24001 => array('FuncGenerator : No function specified. ',0),\n24002 => array('FuncGenerator : Syntax error in function specification ',0),\n24003 => array('DateScaleUtils: Unknown tick type specified in call to GetTicks()',0),\n24004 => array('ReadCSV2: Column count mismatch in %s line %d',2),\n/*\n**  jpgraph\n*/\n\n25001 => array('This PHP installation is not configured with the GD library. Please recompile PHP with GD support to run JpGraph. (Neither function imagetypes() nor imagecreatefromstring() does exist)',0),\n25002 => array('Your PHP installation does not seem to have the required GD library. Please see the PHP documentation on how to install and enable the GD library.',0),\n25003 => array('General PHP error : At %s:%d : %s',3),\n25004 => array('General PHP error : %s ',1),\n25005 => array('Can\\'t access PHP_SELF, PHP global variable. You can\\'t run PHP from command line if you want to use the \\'auto\\' naming of cache or image files.',0),\n25006 => array('Usage of FF_CHINESE (FF_BIG5) font family requires that your PHP setup has the iconv() function. By default this is not compiled into PHP (needs the \"--width-iconv\" when configured).',0),\n25007 => array('You are trying to use the locale (%s) which your PHP installation does not support. Hint: Use \\'\\' to indicate the default locale for this geographic region.',1),\n25008 => array('Image width/height argument in Graph::Graph() must be numeric',0),\n25009 => array('You must specify what scale to use with a call to Graph::SetScale()',0),\n\n25010 => array('Graph::Add() You tried to add a null plot to the graph.',0),\n25011 => array('Graph::AddY2() You tried to add a null plot to the graph.',0),\n25012 => array('Graph::AddYN() You tried to add a null plot to the graph.',0),\n25013 => array('You can only add standard plots to multiple Y-axis',0),\n25014 => array('Graph::AddText() You tried to add a null text to the graph.',0),\n25015 => array('Graph::AddLine() You tried to add a null line to the graph.',0),\n25016 => array('Graph::AddBand() You tried to add a null band to the graph.',0),\n25017 => array('You are using GD 2.x and are trying to use a background images on a non truecolor image. To use background images with GD 2.x it is necessary to enable truecolor by setting the USE_TRUECOLOR constant to TRUE. Due to a bug in GD 2.0.1 using any truetype fonts with truecolor images will result in very poor quality fonts.',0),\n25018 => array('Incorrect file name for Graph::SetBackgroundImage() : \"%s\" Must have a valid image extension (jpg,gif,png) when using auto detection of image type',1),\n25019 => array('Unknown file extension (%s) in Graph::SetBackgroundImage() for filename: \"%s\"',2),\n\n25020 => array('Graph::SetScale(): Specified Max value must be larger than the specified Min value.',0),\n25021 => array('Unknown scale specification for Y-scale. (%s)',1),\n25022 => array('Unknown scale specification for X-scale. (%s)',1),\n25023 => array('Unsupported Y2 axis type: \"%s\" Must be one of (lin,log,int)',1),\n25024 => array('Unsupported Y axis type:  \"%s\" Must be one of (lin,log,int)',1),\n25025 => array('Unsupported Tick density: %d',1),\n25026 => array('Can\\'t draw unspecified Y-scale. You have either: 1. Specified an Y axis for auto scaling but have not supplied any plots. 2. Specified a scale manually but have forgot to specify the tick steps',0),\n25027 => array('Can\\'t open cached CSIM \"%s\" for reading.',1),\n25028 => array('Apache/PHP does not have permission to write to the CSIM cache directory (%s). Check permissions.',1),\n25029 => array('Can\\'t write CSIM \"%s\" for writing. Check free space and permissions.',1),\n\n25030 => array('Missing script name in call to StrokeCSIM(). You must specify the name of the actual image script as the first parameter to StrokeCSIM().',0),\n25031 => array('You must specify what scale to use with a call to Graph::SetScale().',0),\n25032 => array('No plots for Y-axis nbr:%d',1),\n25033 => array('',0),\n25034 => array('Can\\'t draw unspecified X-scale. No plots specified.',0),\n25035 => array('You have enabled clipping. Clipping is only supported for graphs at 0 or 90 degrees rotation. Please adjust you current angle (=%d degrees) or disable clipping.',1),\n25036 => array('Unknown AxisStyle() : %s',1),\n25037 => array('The image format of your background image (%s) is not supported in your system configuration. ',1),\n25038 => array('Background image seems to be of different type (has different file extension) than specified imagetype. Specified: %s File: %s',2),\n25039 => array('Can\\'t read background image: \"%s\"',1),\n\n25040 => array('It is not possible to specify both a background image and a background country flag.',0),\n25041 => array('In order to use Country flags as backgrounds you must include the \"jpgraph_flags.php\" file.',0),\n25042 => array('Unknown background image layout',0),\n25043 => array('Unknown title background style.',0),\n25044 => array('Cannot use auto scaling since it is impossible to determine a valid min/max value of the Y-axis (only null values).',0),\n25045 => array('Font families FF_HANDWRT and FF_BOOK are no longer available due to copyright problem with these fonts. Fonts can no longer be distributed with JpGraph. Please download fonts from http://corefonts.sourceforge.net/',0),\n25046 => array('Specified TTF font family (id=%d) is unknown or does not exist. Please note that TTF fonts are not distributed with JpGraph for copyright reasons. You can find the MS TTF WEB-fonts (arial, courier etc) for download at http://corefonts.sourceforge.net/',1),\n25047 => array('Style %s is not available for font family %s',2),\n25048 => array('Unknown font style specification [%s].',1),\n25049 => array('Font file \"%s\" is not readable or does not exist.',1),\n\n25050 => array('First argument to Text::Text() must be a string.',0),\n25051 => array('Invalid direction specified for text.',0),\n25052 => array('PANIC: Internal error in SuperScript::Stroke(). Unknown vertical alignment for text',0),\n25053 => array('PANIC: Internal error in SuperScript::Stroke(). Unknown horizontal alignment for text',0),\n25054 => array('Internal error: Unknown grid axis %s',1),\n25055 => array('Axis::SetTickDirection() is deprecated. Use Axis::SetTickSide() instead',0),\n25056 => array('SetTickLabelMargin() is deprecated. Use Axis::SetLabelMargin() instead.',0),\n25057 => array('SetTextTicks() is deprecated. Use SetTextTickInterval() instead.',0),\n25058 => array('Text label interval must be specified >= 1.',0),\n25059 => array('SetLabelPos() is deprecated. Use Axis::SetLabelSide() instead.',0),\n\n25060 => array('Unknown alignment specified for X-axis title. (%s)',1),\n25061 => array('Unknown alignment specified for Y-axis title. (%s)',1),\n25062 => array('Labels at an angle are not supported on Y-axis',0),\n25063 => array('Ticks::SetPrecision() is deprecated. Use Ticks::SetLabelFormat() (or Ticks::SetFormatCallback()) instead',0),\n25064 => array('Minor or major step size is 0. Check that you haven\\'t got an accidental SetTextTicks(0) in your code. If this is not the case you might have stumbled upon a bug in JpGraph. Please report this and if possible include the data that caused the problem',0),\n25065 => array('Tick positions must be specified as an array()',0),\n25066 => array('When manually specifying tick positions and labels the number of labels must be the same as the number of specified ticks.',0),\n25067 => array('Your manually specified scale and ticks is not correct. The scale seems to be too small to hold any of the specified tick marks.',0),\n25068 => array('A plot has an illegal scale. This could for example be that you are trying to use text auto scaling to draw a line plot with only one point or that the plot area is too small. It could also be that no input data value is numeric (perhaps only \\'-\\' or \\'x\\')',0),\n25069 => array('Grace must be larger then 0',0),\n25070 => array('Either X or Y data arrays contains non-numeric values. Check that the data is really specified as numeric data and not as strings. It is an error to specify data for example as \\'-2345.2\\' (using quotes).',0),\n25071 => array('You have specified a min value with SetAutoMin() which is larger than the maximum value used for the scale. This is not possible.',0),\n25072 => array('You have specified a max value with SetAutoMax() which is smaller than the minimum value used for the scale. This is not possible.',0),\n25073 => array('Internal error. Integer scale algorithm comparison out of bound (r=%f)',1),\n25074 => array('Internal error. The scale range is negative (%f) [for %s scale] This problem could potentially be caused by trying to use \\\"illegal\\\" values in the input data arrays (like trying to send in strings or only NULL values) which causes the auto scaling to fail.',2),\n25075 => array('Can\\'t automatically determine ticks since min==max.',0),\n25077 => array('Adjustment factor for color must be > 0',0),\n25078 => array('Unknown color: %s',1),\n25079 => array('Unknown color specification: %s, size=%d',2),\n\n25080 => array('Alpha parameter for color must be between 0.0 and 1.0',0),\n25081 => array('Selected graphic format is either not supported or unknown [%s]',1),\n25082 => array('Illegal sizes specified for width or height when creating an image, (width=%d, height=%d)',2),\n25083 => array('Illegal image size when copying image. Size for copied to image is 1 pixel or less.',0),\n25084 => array('Failed to create temporary GD canvas. Possible Out of memory problem.',0),\n25085 => array('An image can not be created from the supplied string. It is either in a format not supported or the string is representing an corrupt image.',0),\n25086 => array('You only seem to have GD 1.x installed. To enable Alphablending requires GD 2.x or higher. Please install GD or make sure the constant USE_GD2 is specified correctly to reflect your installation. By default it tries to auto detect what version of GD you have installed. On some very rare occasions it may falsely detect GD2 where only GD1 is installed. You must then set USE_GD2 to false.',0),\n25087 => array('This PHP build has not been configured with TTF support. You need to recompile your PHP installation with FreeType support.',0),\n25088 => array('You have a misconfigured GD font support. The call to imagefontwidth() fails.',0),\n25089 => array('You have a misconfigured GD font support. The call to imagefontheight() fails.',0),\n\n25090 => array('Unknown direction specified in call to StrokeBoxedText() [%s]',1),\n25091 => array('Internal font does not support drawing text at arbitrary angle. Use TTF fonts instead.',0),\n25092 => array('There is either a configuration problem with TrueType or a problem reading font file \"%s\" Make sure file exists and is in a readable place for the HTTP process. (If \\'basedir\\' restriction is enabled in PHP then the font file must be located in the document root.). It might also be a wrongly installed FreeType library. Try upgrading to at least FreeType 2.1.13 and recompile GD with the correct setup so it can find the new FT library.',1),\n25093 => array('Can not read font file \"%s\" in call to Image::GetBBoxTTF. Please make sure that you have set a font before calling this method and that the font is installed in the TTF directory.',1),\n25094 => array('Direction for text most be given as an angle between 0 and 90.',0),\n25095 => array('Unknown font font family specification. ',0),\n25096 => array('Can\\'t allocate any more colors in palette image. Image has already allocated maximum of %d colors and the palette  is now full. Change to a truecolor image instead',0),\n25097 => array('Color specified as empty string in PushColor().',0),\n25098 => array('Negative Color stack index. Unmatched call to PopColor()',0),\n25099 => array('Parameters for brightness and Contrast out of range [-1,1]',0),\n\n25100 => array('Problem with color palette and your GD setup. Please disable anti-aliasing or use GD2 with true-color. If you have GD2 library installed please make sure that you have set the USE_GD2 constant to true and truecolor is enabled.',0),\n25101 => array('Illegal numeric argument to SetLineStyle(): (%d)',1),\n25102 => array('Illegal string argument to SetLineStyle(): %s',1),\n25103 => array('Illegal argument to SetLineStyle %s',1),\n25104 => array('Unknown line style: %s',1),\n25105 => array('NULL data specified for a filled polygon. Check that your data is not NULL.',0),\n25106 => array('Image::FillToBorder : Can not allocate more colors',0),\n25107 => array('Can\\'t write to file \"%s\". Check that the process running PHP has enough permission.',1),\n25108 => array('Can\\'t stream image. This is most likely due to a faulty PHP/GD setup. Try to recompile PHP and use the built-in GD library that comes with PHP.',0),\n25109 => array('Your PHP (and GD-lib) installation does not appear to support any known graphic formats. You need to first make sure GD is compiled as a module to PHP. If you also want to use JPEG images you must get the JPEG library. Please see the PHP docs for details.',0),\n\n25110 => array('Your PHP installation does not support the chosen graphic format: %s',1),\n25111 => array('Can\\'t delete cached image %s. Permission problem?',1),\n25112 => array('Cached imagefile (%s) has file date in the future.',1),\n25113 => array('Can\\'t delete cached image \"%s\". Permission problem?',1),\n25114 => array('PHP has not enough permissions to write to the cache file \"%s\". Please make sure that the user running PHP has write permission for this file if you wan to use the cache system with JpGraph.',1),\n25115 => array('Can\\'t set permission for cached image \"%s\". Permission problem?',1),\n25116 => array('Cant open file from cache \"%s\"',1),\n25117 => array('Can\\'t open cached image \"%s\" for reading.',1),\n25118 => array('Can\\'t create directory \"%s\". Make sure PHP has write permission to this directory.',1),\n25119 => array('Can\\'t set permissions for \"%s\". Permission problems?',1),\n\n25120 => array('Position for legend must be given as percentage in range 0-1',0),\n25121 => array('Empty input data array specified for plot. Must have at least one data point.',0),\n25122 => array('Stroke() must be implemented by concrete subclass to class Plot',0),\n25123 => array('You can\\'t use a text X-scale with specified X-coords. Use a \"int\" or \"lin\" scale instead.',0),\n25124 => array('The input data array must have consecutive values from position 0 and forward. The given y-array starts with empty values (NULL)',0),\n25125 => array('Illegal direction for static line',0),\n25126 => array('Can\\'t create truecolor image. Check that the GD2 library is properly setup with PHP.',0),\n25127 => array('The library has been configured for automatic encoding conversion of Japanese fonts. This requires that PHP has the mb_convert_encoding() function. Your PHP installation lacks this function (PHP needs the \"--enable-mbstring\" when compiled).',0),\n25128 => array('The function imageantialias() is not available in your PHP installation. Use the GD version that comes with PHP and not the standalone version.',0),\n25129 => array('Anti-alias can not be used with dashed lines. Please disable anti-alias or use solid lines.',0),\n25130 => array('Too small plot area. (%d x %d). With the given image size and margins there is to little space left for the plot. Increase the plot size or reduce the margins.',2),\n\n25131 => array('StrokeBoxedText2() only supports TTF fonts and not built-in bitmap fonts.',0),\n25132 => array('Undefined property %s.',1),\n25133 => array('Use Graph::SetTheme() after Graph::SetScale().',0),\n\n/*\n**  jpgraph_led\n*/\n\n25500 => array('Multibyte strings must be enabled in the PHP installation in order to run the LED module so that the function mb_strlen() is available. See PHP documentation for more information.',0),\n\n/*\n**---------------------------------------------------------------------------------------------\n** Pro-version strings\n**---------------------------------------------------------------------------------------------\n*/\n\n/*\n**  jpgraph_table\n*/\n\n27001 => array('GTextTable: Invalid argument to Set(). Array argument must be 2 dimensional',0),\n27002 => array('GTextTable: Invalid argument to Set()',0),\n27003 => array('GTextTable: Wrong number of arguments to GTextTable::SetColor()',0),\n27004 => array('GTextTable: Specified cell range to be merged is not valid.',0),\n27005 => array('GTextTable: Cannot merge already merged cells in the range: (%d,%d) to (%d,%d)',4),\n27006 => array('GTextTable: Column argument = %d is outside specified table size.',1),\n27007 => array('GTextTable: Row argument = %d is outside specified table size.',1),\n27008 => array('GTextTable: Column and row size arrays must match the dimensions of the table',0),\n27009 => array('GTextTable: Number of table columns or rows are 0. Make sure Init() or Set() is called.',0),\n27010 => array('GTextTable: No alignment specified in call to SetAlign()',0),\n27011 => array('GTextTable: Unknown alignment specified in SetAlign(). Horizontal=%s, Vertical=%s',2),\n27012 => array('GTextTable: Internal error. Invalid alignment specified =%s',1),\n27013 => array('GTextTable: Argument to FormatNumber() must be a string.',0),\n27014 => array('GTextTable: Table is not initilaized with either a call to Set() or Init()',0),\n27015 => array('GTextTable: Cell image constrain type must be TIMG_WIDTH or TIMG_HEIGHT',0),\n\n/*\n**  jpgraph_windrose\n*/\n\n22001 => array('Total percentage for all windrose legs in a windrose plot can not exceed 100%% !\\n(Current max is: %d)',1),\n22002 => array('Graph is too small to have a scale. Please make the graph larger.',0),\n22004 => array('Label specification for windrose directions must have 16 values (one for each compass direction).',0),\n22005 => array('Line style for radial lines must be on of (\"solid\",\"dotted\",\"dashed\",\"longdashed\") ',0),\n22006 => array('Illegal windrose type specified.',0),\n22007 => array('To few values for the range legend.',0),\n22008 => array('Internal error: Trying to plot free Windrose even though type is not a free windrose',0),\n22009 => array('You have specified the same direction twice, once with an angle and once with a compass direction (%f degrees)',0),\n22010 => array('Direction must either be a numeric value or one of the 16 compass directions',0),\n22011 => array('Windrose index must be numeric or direction label. You have specified index=%d',1),\n22012 => array('Windrose radial axis specification contains a direction which is not enabled.',0),\n22013 => array('You have specified the look&feel for the same compass direction twice, once with text and once with index (Index=%d)',1),\n22014 => array('Index for compass direction must be between 0 and 15.',0),\n22015 => array('You have specified an undefined Windrose plot type.',0),\n22016 => array('Windrose leg index must be numeric or direction label.',0),\n22017 => array('Windrose data contains a direction which is not enabled. Please adjust what labels are displayed.',0),\n22018 => array('You have specified data for the same compass direction twice, once with text and once with index (Index=%d)',1),\n22019 => array('Index for direction must be between 0 and 15. You can\\'t specify angles for a Regular Windplot, only index and compass directions.',0),\n22020 => array('Windrose plot is too large to fit the specified Graph size. Please use WindrosePlot::SetSize() to make the plot smaller or increase the size of the Graph in the initial WindroseGraph() call.',0),\n22021 => array('It is only possible to add Text, IconPlot or WindrosePlot to a Windrose Graph',0),\n/*\n**  jpgraph_odometer\n*/\n\n13001 => array('Unknown needle style (%d).',1),\n13002 => array('Value for odometer (%f) is outside specified scale [%f,%f]',3),\n\n/*\n**  jpgraph_barcode\n*/\n\n1001 => array('Unknown encoder specification: %s',1),\n1002 => array('Data validation failed. Can\\'t encode [%s] using encoding \"%s\"',2),\n1003 => array('Internal encoding error. Trying to encode %s is not possible in Code 128',1),\n1004 => array('Internal barcode error. Unknown UPC-E encoding type: %s',1),\n1005 => array('Internal error. Can\\'t encode character tuple (%s, %s) in Code-128 charset C',2),\n1006 => array('Internal encoding error for CODE 128. Trying to encode control character in CHARSET != A',0),\n1007 => array('Internal encoding error for CODE 128. Trying to encode DEL in CHARSET != B',0),\n1008 => array('Internal encoding error for CODE 128. Trying to encode small letters in CHARSET != B',0),\n1009 => array('Encoding using CODE 93 is not yet supported.',0),\n1010 => array('Encoding using POSTNET is not yet supported.',0),\n1011 => array('Non supported barcode backend for type %s',1),\n\n/*\n** PDF417\n*/\n26000 => array('PDF417: The PDF417 module requires that the PHP installation must support the function bcmod(). This is normally enabled at compile time. See documentation for more information.',0),\n26001 => array('PDF417: Number of Columns must be >= 1 and <= 30',0),\n26002 => array('PDF417: Error level must be between 0 and 8',0),\n26003 => array('PDF417: Invalid format for input data to encode with PDF417',0),\n26004 => array('PDF417: Can\\'t encode given data with error level %d and %d columns since it results in too many symbols or more than 90 rows.',2),\n26005 => array('PDF417: Can\\'t open file \"%s\" for writing',1),\n26006 => array('PDF417: Internal error. Data files for PDF417 cluster %d is corrupted.',1),\n26007 => array('PDF417: Internal error. GetPattern: Illegal Code Value = %d (row=%d)',2),\n26008 => array('PDF417: Internal error. Mode not found in mode list!! mode=%d',1),\n26009 => array('PDF417: Encode error: Illegal character. Can\\'t encode character with ASCII code=%d',1),\n26010 => array('PDF417: Internal error: No input data in decode.',0),\n26011 => array('PDF417: Encoding error. Can\\'t use numeric encoding on non-numeric data.',0),\n26012 => array('PDF417: Internal error. No input data to decode for Binary compressor.',0),\n26013 => array('PDF417: Internal error. Checksum error. Coefficient tables corrupted.',0),\n26014 => array('PDF417: Internal error. No data to calculate codewords on.',0),\n26015 => array('PDF417: Internal error. State transition table entry 0 is NULL. Entry 1 = (%s)',1),\n26016 => array('PDF417: Internal error: Unrecognized state transition mode in decode.',0),\n\n/*\n** jpgraph_contour\n*/\n\n28001 => array('Third argument to Contour must be an array of colors.',0),\n28002 => array('Number of colors must equal the number of isobar lines specified',0),\n28003 => array('ContourPlot Internal Error: isobarHCrossing: Coloumn index too large (%d)',1),\n28004 => array('ContourPlot Internal Error: isobarHCrossing: Row index too large (%d)',1),\n28005 => array('ContourPlot Internal Error: isobarVCrossing: Row index too large (%d)',1),\n28006 => array('ContourPlot Internal Error: isobarVCrossing: Col index too large (%d)',1),\n28007 => array('ContourPlot interpolation factor is too large (>5)',0),\n\n/*\n * jpgraph_matrix and colormap\n*/\n29201 => array('Min range value must be less or equal to max range value for colormaps',0),\n29202 => array('The distance between min and max value is too small for numerical precision',0),\n29203 => array('Number of color quantification level must be at least %d',1),\n29204 => array('Number of colors (%d) is invalid for this colormap. It must be a number that can be written as: %d + k*%d',3),\n29205 => array('Colormap specification out of range. Must be an integer in range [0,%d]',1),\n29206 => array('Invalid object added to MatrixGraph',0),\n29207 => array('Empty input data specified for MatrixPlot',0),\n29208 => array('Unknown side specifiction for matrix labels \"%s\"',1),\n29209 => array('CSIM Target matrix must be the same size as the data matrix (csim=%d x %d, data=%d x %d)',4),\n29210 => array('CSIM Target for matrix labels does not match the number of labels (csim=%d, labels=%d)',2),\n\n\n/*\n* jpgraph_theme\n*/\n30001 => array(\"Theme::%s() is not defined. \\nPlease make %s(\\$graph) function in your theme classs.\",2),\n\n);\n\n?>\n"
  },
  {
    "path": "include/jpgraph/lang/prod.inc.php",
    "content": "<?php\n/*=======================================================================\n// File: \tPROD.INC.PHP\n// Description: Special localization file with the same error messages\n//              for all errors.\n// Created: \t2006-02-18\n// Ver:\t\t$Id: prod.inc.php 1886 2009-10-01 23:30:16Z ljp $\n//\n// Copyright (c) Asial Corporation. All rights reserved.\n//========================================================================\n*/\n\n// The single error message for all errors\nDEFINE('DEFAULT_ERROR_MESSAGE','We are sorry but the system could not generate the requested image. Please contact site support to resolve this problem. Problem no: #');\n\n// Note: Format of each error message is array(<error message>,<number of arguments>)\n$_jpg_messages = array(\n\n/*\n** Headers already sent error. This is formatted as HTML different since this will be sent back directly as text\n*/\n10  => array('<table border=1><tr><td><font color=darkred size=4><b>JpGraph Error:</b>\nHTTP headers have already been sent.<br>Caused by output from file <b>%s</b> at line <b>%d</b>.</font></td></tr><tr><td><b>Explanation:</b><br>HTTP headers have already been sent back to the browser indicating the data as text before the library got a chance to send it\\'s image HTTP header to this browser. This makes it impossible for the library to send back image data to the browser (since that would be interpretated as text by the browser and show up as junk text).<p>Most likely you have some text in your script before the call to <i>Graph::Stroke()</i>. If this texts gets sent back to the browser the browser will assume that all data is plain text. Look for any text, even spaces and newlines, that might have been sent back to the browser. <p>For example it is a common mistake to leave a blank line before the opening \"<b>&lt;?php</b>\".</td></tr></table>',2),\n\n\n11 => array(DEFAULT_ERROR_MESSAGE.'11',0),\n12 => array(DEFAULT_ERROR_MESSAGE.'12',0),\n13 => array(DEFAULT_ERROR_MESSAGE.'13',0),\n2001 => array(DEFAULT_ERROR_MESSAGE.'2001',0),\n2002 => array(DEFAULT_ERROR_MESSAGE.'2002',0),\n2003 => array(DEFAULT_ERROR_MESSAGE.'2003',0),\n2004 => array(DEFAULT_ERROR_MESSAGE.'2004',0),\n2005 => array(DEFAULT_ERROR_MESSAGE.'2005',0),\n2006 => array(DEFAULT_ERROR_MESSAGE.'2006',0),\n2007 => array(DEFAULT_ERROR_MESSAGE.'2007',0),\n2008 => array(DEFAULT_ERROR_MESSAGE.'2008',0),\n2009 => array(DEFAULT_ERROR_MESSAGE.'2009',0),\n2010 => array(DEFAULT_ERROR_MESSAGE.'2010',0),\n2011 => array(DEFAULT_ERROR_MESSAGE.'2011',0),\n2012 => array(DEFAULT_ERROR_MESSAGE.'2012',0),\n2013 => array(DEFAULT_ERROR_MESSAGE.'2013',0),\n2014 => array(DEFAULT_ERROR_MESSAGE.'2014',0),\n3001 => array(DEFAULT_ERROR_MESSAGE.'3001',0),\n4002 => array(DEFAULT_ERROR_MESSAGE.'4002',0),\n5001 => array(DEFAULT_ERROR_MESSAGE.'5001',0),\n5002 => array(DEFAULT_ERROR_MESSAGE.'5002',0),\n5003 => array(DEFAULT_ERROR_MESSAGE.'5003',0),\n5004 => array(DEFAULT_ERROR_MESSAGE.'5004',0),\n6001 => array(DEFAULT_ERROR_MESSAGE.'6001',0),\n6002 => array(DEFAULT_ERROR_MESSAGE.'6002',0),\n6003 => array(DEFAULT_ERROR_MESSAGE.'6003',0),\n6004 => array(DEFAULT_ERROR_MESSAGE.'6004',0),\n6005 => array(DEFAULT_ERROR_MESSAGE.'6005',0),\n6006 => array(DEFAULT_ERROR_MESSAGE.'6006',0),\n6007 => array(DEFAULT_ERROR_MESSAGE.'6007',0),\n6008 => array(DEFAULT_ERROR_MESSAGE.'6008',0),\n6009 => array(DEFAULT_ERROR_MESSAGE.'6009',0),\n6010 => array(DEFAULT_ERROR_MESSAGE.'6010',0),\n6011 => array(DEFAULT_ERROR_MESSAGE.'6011',0),\n6012 => array(DEFAULT_ERROR_MESSAGE.'6012',0),\n6015 => array(DEFAULT_ERROR_MESSAGE.'6015',0),\n6016 => array(DEFAULT_ERROR_MESSAGE.'6016',0),\n6017 => array(DEFAULT_ERROR_MESSAGE.'6017',0),\n6018 => array(DEFAULT_ERROR_MESSAGE.'6018',0),\n6019 => array(DEFAULT_ERROR_MESSAGE.'6019',0),\n6020 => array(DEFAULT_ERROR_MESSAGE.'6020',0),\n6021 => array(DEFAULT_ERROR_MESSAGE.'6021',0),\n6022 => array(DEFAULT_ERROR_MESSAGE.'6022',0),\n6023 => array(DEFAULT_ERROR_MESSAGE.'6023',0),\n6024 => array(DEFAULT_ERROR_MESSAGE.'6024',0),\n6025 => array(DEFAULT_ERROR_MESSAGE.'6025',0),\n6027 => array(DEFAULT_ERROR_MESSAGE.'6027',0),\n6028 => array(DEFAULT_ERROR_MESSAGE.'6028',0),\n6029 => array(DEFAULT_ERROR_MESSAGE.'6029',0),\n6030 => array(DEFAULT_ERROR_MESSAGE.'6030',0),\n6031 => array(DEFAULT_ERROR_MESSAGE.'6031',0),\n6032 => array(DEFAULT_ERROR_MESSAGE.'6032',0),\n6033 => array(DEFAULT_ERROR_MESSAGE.'6033',0),\n7001 => array(DEFAULT_ERROR_MESSAGE.'7001',0),\n8001 => array(DEFAULT_ERROR_MESSAGE.'8001',0),\n8002 => array(DEFAULT_ERROR_MESSAGE.'8002',0),\n8003 => array(DEFAULT_ERROR_MESSAGE.'8003',0),\n8004 => array(DEFAULT_ERROR_MESSAGE.'8004',0),\n9001 => array(DEFAULT_ERROR_MESSAGE.'9001',0),\n10001 => array(DEFAULT_ERROR_MESSAGE.'10001',0),\n10002 => array(DEFAULT_ERROR_MESSAGE.'10002',0),\n10003 => array(DEFAULT_ERROR_MESSAGE.'10003',0),\n11001 => array(DEFAULT_ERROR_MESSAGE.'11001',0),\n11002 => array(DEFAULT_ERROR_MESSAGE.'11002',0),\n11003 => array(DEFAULT_ERROR_MESSAGE.'11003',0),\n11004 => array(DEFAULT_ERROR_MESSAGE.'11004',0),\n11005 => array(DEFAULT_ERROR_MESSAGE.'11005',0),\n12001 => array(DEFAULT_ERROR_MESSAGE.'12001',0),\n12002 => array(DEFAULT_ERROR_MESSAGE.'12002',0),\n12003 => array(DEFAULT_ERROR_MESSAGE.'12003',0),\n12004 => array(DEFAULT_ERROR_MESSAGE.'12004',0),\n12005 => array(DEFAULT_ERROR_MESSAGE.'12005',0),\n12006 => array(DEFAULT_ERROR_MESSAGE.'12006',0),\n12007 => array(DEFAULT_ERROR_MESSAGE.'12007',0),\n12008 => array(DEFAULT_ERROR_MESSAGE.'12008',0),\n12009 => array(DEFAULT_ERROR_MESSAGE.'12009',0),\n12010 => array(DEFAULT_ERROR_MESSAGE.'12010',0),\n12011 => array(DEFAULT_ERROR_MESSAGE.'12011',0),\n12012 => array(DEFAULT_ERROR_MESSAGE.'12012',0),\n14001 => array(DEFAULT_ERROR_MESSAGE.'14001',0),\n14002 => array(DEFAULT_ERROR_MESSAGE.'14002',0),\n14003 => array(DEFAULT_ERROR_MESSAGE.'14003',0),\n14004 => array(DEFAULT_ERROR_MESSAGE.'14004',0),\n14005 => array(DEFAULT_ERROR_MESSAGE.'14005',0),\n14006 => array(DEFAULT_ERROR_MESSAGE.'14006',0),\n14007 => array(DEFAULT_ERROR_MESSAGE.'14007',0),\n15001 => array(DEFAULT_ERROR_MESSAGE.'15001',0),\n15002 => array(DEFAULT_ERROR_MESSAGE.'15002',0),\n15003 => array(DEFAULT_ERROR_MESSAGE.'15003',0),\n15004 => array(DEFAULT_ERROR_MESSAGE.'15004',0),\n15005 => array(DEFAULT_ERROR_MESSAGE.'15005',0),\n15006 => array(DEFAULT_ERROR_MESSAGE.'15006',0),\n15007 => array(DEFAULT_ERROR_MESSAGE.'15007',0),\n15008 => array(DEFAULT_ERROR_MESSAGE.'15008',0),\n15009 => array(DEFAULT_ERROR_MESSAGE.'15009',0),\n15010 => array(DEFAULT_ERROR_MESSAGE.'15010',0),\n15011 => array(DEFAULT_ERROR_MESSAGE.'15011',0),\n15012 => array(DEFAULT_ERROR_MESSAGE.'15012',0),\n16001 => array(DEFAULT_ERROR_MESSAGE.'16001',0),\n16002 => array(DEFAULT_ERROR_MESSAGE.'16002',0),\n16003 => array(DEFAULT_ERROR_MESSAGE.'16003',0),\n16004 => array(DEFAULT_ERROR_MESSAGE.'16004',0),\n17001 => array(DEFAULT_ERROR_MESSAGE.'17001',0),\n17002 => array(DEFAULT_ERROR_MESSAGE.'17002',0),\n17004 => array(DEFAULT_ERROR_MESSAGE.'17004',0),\n18001 => array(DEFAULT_ERROR_MESSAGE.'18001',0),\n18002 => array(DEFAULT_ERROR_MESSAGE.'18002',0),\n18003 => array(DEFAULT_ERROR_MESSAGE.'18003',0),\n18004 => array(DEFAULT_ERROR_MESSAGE.'18004',0),\n18005 => array(DEFAULT_ERROR_MESSAGE.'18005',0),\n18006 => array(DEFAULT_ERROR_MESSAGE.'18006',0),\n18007 => array(DEFAULT_ERROR_MESSAGE.'18007',0),\n18008 => array(DEFAULT_ERROR_MESSAGE.'18008',0),\n19001 => array(DEFAULT_ERROR_MESSAGE.'19001',0),\n19002 => array(DEFAULT_ERROR_MESSAGE.'19002',0),\n19003 => array(DEFAULT_ERROR_MESSAGE.'19003',0),\n20001 => array(DEFAULT_ERROR_MESSAGE.'20001',0),\n20002 => array(DEFAULT_ERROR_MESSAGE.'20002',0),\n20003 => array(DEFAULT_ERROR_MESSAGE.'20003',0),\n21001 => array(DEFAULT_ERROR_MESSAGE.'21001',0),\n23001 => array(DEFAULT_ERROR_MESSAGE.'23001',0),\n23002 => array(DEFAULT_ERROR_MESSAGE.'23002',0),\n23003 => array(DEFAULT_ERROR_MESSAGE.'23003',0),\n24001 => array(DEFAULT_ERROR_MESSAGE.'24001',0),\n24002 => array(DEFAULT_ERROR_MESSAGE.'24002',0),\n24003 => array(DEFAULT_ERROR_MESSAGE.'24003',0),\n24004 => array(DEFAULT_ERROR_MESSAGE.'24004',0),\n25001 => array(DEFAULT_ERROR_MESSAGE.'25001',0),\n25002 => array(DEFAULT_ERROR_MESSAGE.'25002',0),\n25003 => array(DEFAULT_ERROR_MESSAGE.'25003',0),\n25004 => array(DEFAULT_ERROR_MESSAGE.'25004',0),\n25005 => array(DEFAULT_ERROR_MESSAGE.'25005',0),\n25006 => array(DEFAULT_ERROR_MESSAGE.'25006',0),\n25007 => array(DEFAULT_ERROR_MESSAGE.'25007',0),\n25008 => array(DEFAULT_ERROR_MESSAGE.'25008',0),\n25009 => array(DEFAULT_ERROR_MESSAGE.'25009',0),\n25010 => array(DEFAULT_ERROR_MESSAGE.'25010',0),\n25011 => array(DEFAULT_ERROR_MESSAGE.'25011',0),\n25012 => array(DEFAULT_ERROR_MESSAGE.'25012',0),\n25013 => array(DEFAULT_ERROR_MESSAGE.'25013',0),\n25014 => array(DEFAULT_ERROR_MESSAGE.'25014',0),\n25015 => array(DEFAULT_ERROR_MESSAGE.'25015',0),\n25016 => array(DEFAULT_ERROR_MESSAGE.'25016',0),\n25017 => array(DEFAULT_ERROR_MESSAGE.'25017',0),\n25018 => array(DEFAULT_ERROR_MESSAGE.'25018',0),\n25019 => array(DEFAULT_ERROR_MESSAGE.'25019',0),\n25020 => array(DEFAULT_ERROR_MESSAGE.'25020',0),\n25021 => array(DEFAULT_ERROR_MESSAGE.'25021',0),\n25022 => array(DEFAULT_ERROR_MESSAGE.'25022',0),\n25023 => array(DEFAULT_ERROR_MESSAGE.'25023',0),\n25024 => array(DEFAULT_ERROR_MESSAGE.'25024',0),\n25025 => array(DEFAULT_ERROR_MESSAGE.'25025',0),\n25026 => array(DEFAULT_ERROR_MESSAGE.'25026',0),\n25027 => array(DEFAULT_ERROR_MESSAGE.'25027',0),\n25028 => array(DEFAULT_ERROR_MESSAGE.'25028',0),\n25029 => array(DEFAULT_ERROR_MESSAGE.'25029',0),\n25030 => array(DEFAULT_ERROR_MESSAGE.'25030',0),\n25031 => array(DEFAULT_ERROR_MESSAGE.'25031',0),\n25032 => array(DEFAULT_ERROR_MESSAGE.'25032',0),\n25033 => array(DEFAULT_ERROR_MESSAGE.'25033',0),\n25034 => array(DEFAULT_ERROR_MESSAGE.'25034',0),\n25035 => array(DEFAULT_ERROR_MESSAGE.'25035',0),\n25036 => array(DEFAULT_ERROR_MESSAGE.'25036',0),\n25037 => array(DEFAULT_ERROR_MESSAGE.'25037',0),\n25038 => array(DEFAULT_ERROR_MESSAGE.'25038',0),\n25039 => array(DEFAULT_ERROR_MESSAGE.'25039',0),\n25040 => array(DEFAULT_ERROR_MESSAGE.'25040',0),\n25041 => array(DEFAULT_ERROR_MESSAGE.'25041',0),\n25042 => array(DEFAULT_ERROR_MESSAGE.'25042',0),\n25043 => array(DEFAULT_ERROR_MESSAGE.'25043',0),\n25044 => array(DEFAULT_ERROR_MESSAGE.'25044',0),\n25045 => array(DEFAULT_ERROR_MESSAGE.'25045',0),\n25046 => array(DEFAULT_ERROR_MESSAGE.'25046',0),\n25047 => array(DEFAULT_ERROR_MESSAGE.'25047',0),\n25048 => array(DEFAULT_ERROR_MESSAGE.'25048',0),\n25049 => array(DEFAULT_ERROR_MESSAGE.'25049',0),\n25050 => array(DEFAULT_ERROR_MESSAGE.'25050',0),\n25051 => array(DEFAULT_ERROR_MESSAGE.'25051',0),\n25052 => array(DEFAULT_ERROR_MESSAGE.'25052',0),\n25053 => array(DEFAULT_ERROR_MESSAGE.'25053',0),\n25054 => array(DEFAULT_ERROR_MESSAGE.'25054',0),\n25055 => array(DEFAULT_ERROR_MESSAGE.'25055',0),\n25056 => array(DEFAULT_ERROR_MESSAGE.'25056',0),\n25057 => array(DEFAULT_ERROR_MESSAGE.'25057',0),\n25058 => array(DEFAULT_ERROR_MESSAGE.'25058',0),\n25059 => array(DEFAULT_ERROR_MESSAGE.'25059',0),\n25060 => array(DEFAULT_ERROR_MESSAGE.'25060',0),\n25061 => array(DEFAULT_ERROR_MESSAGE.'25061',0),\n25062 => array(DEFAULT_ERROR_MESSAGE.'25062',0),\n25063 => array(DEFAULT_ERROR_MESSAGE.'25063',0),\n25064 => array(DEFAULT_ERROR_MESSAGE.'25064',0),\n25065 => array(DEFAULT_ERROR_MESSAGE.'25065',0),\n25066 => array(DEFAULT_ERROR_MESSAGE.'25066',0),\n25067 => array(DEFAULT_ERROR_MESSAGE.'25067',0),\n25068 => array(DEFAULT_ERROR_MESSAGE.'25068',0),\n25069 => array(DEFAULT_ERROR_MESSAGE.'25069',0),\n25070 => array(DEFAULT_ERROR_MESSAGE.'25070',0),\n25071 => array(DEFAULT_ERROR_MESSAGE.'25071',0),\n25072 => array(DEFAULT_ERROR_MESSAGE.'25072',0),\n25073 => array(DEFAULT_ERROR_MESSAGE.'25073',0),\n25074 => array(DEFAULT_ERROR_MESSAGE.'25074',0),\n25075 => array(DEFAULT_ERROR_MESSAGE.'25075',0),\n25077 => array(DEFAULT_ERROR_MESSAGE.'25077',0),\n25078 => array(DEFAULT_ERROR_MESSAGE.'25078',0),\n25079 => array(DEFAULT_ERROR_MESSAGE.'25079',0),\n25080 => array(DEFAULT_ERROR_MESSAGE.'25080',0),\n25081 => array(DEFAULT_ERROR_MESSAGE.'25081',0),\n25082 => array(DEFAULT_ERROR_MESSAGE.'25082',0),\n25083 => array(DEFAULT_ERROR_MESSAGE.'25083',0),\n25084 => array(DEFAULT_ERROR_MESSAGE.'25084',0),\n25085 => array(DEFAULT_ERROR_MESSAGE.'25085',0),\n25086 => array(DEFAULT_ERROR_MESSAGE.'25086',0),\n25087 => array(DEFAULT_ERROR_MESSAGE.'25087',0),\n25088 => array(DEFAULT_ERROR_MESSAGE.'25088',0),\n25089 => array(DEFAULT_ERROR_MESSAGE.'25089',0),\n25090 => array(DEFAULT_ERROR_MESSAGE.'25090',0),\n25091 => array(DEFAULT_ERROR_MESSAGE.'25091',0),\n25092 => array(DEFAULT_ERROR_MESSAGE.'25092',0),\n25093 => array(DEFAULT_ERROR_MESSAGE.'25093',0),\n25094 => array(DEFAULT_ERROR_MESSAGE.'25094',0),\n25095 => array(DEFAULT_ERROR_MESSAGE.'25095',0),\n25096 => array(DEFAULT_ERROR_MESSAGE.'25096',0),\n25097 => array(DEFAULT_ERROR_MESSAGE.'25097',0),\n25098 => array(DEFAULT_ERROR_MESSAGE.'25098',0),\n25099 => array(DEFAULT_ERROR_MESSAGE.'25099',0),\n25100 => array(DEFAULT_ERROR_MESSAGE.'25100',0),\n25101 => array(DEFAULT_ERROR_MESSAGE.'25101',0),\n25102 => array(DEFAULT_ERROR_MESSAGE.'25102',0),\n25103 => array(DEFAULT_ERROR_MESSAGE.'25103',0),\n25104 => array(DEFAULT_ERROR_MESSAGE.'25104',0),\n25105 => array(DEFAULT_ERROR_MESSAGE.'25105',0),\n25106 => array(DEFAULT_ERROR_MESSAGE.'25106',0),\n25107 => array(DEFAULT_ERROR_MESSAGE.'25107',0),\n25108 => array(DEFAULT_ERROR_MESSAGE.'25108',0),\n25109 => array(DEFAULT_ERROR_MESSAGE.'25109',0),\n25110 => array(DEFAULT_ERROR_MESSAGE.'25110',0),\n25111 => array(DEFAULT_ERROR_MESSAGE.'25111',0),\n25112 => array(DEFAULT_ERROR_MESSAGE.'25112',0),\n25113 => array(DEFAULT_ERROR_MESSAGE.'25113',0),\n25114 => array(DEFAULT_ERROR_MESSAGE.'25114',0),\n25115 => array(DEFAULT_ERROR_MESSAGE.'25115',0),\n25116 => array(DEFAULT_ERROR_MESSAGE.'25116',0),\n25117 => array(DEFAULT_ERROR_MESSAGE.'25117',0),\n25118 => array(DEFAULT_ERROR_MESSAGE.'25118',0),\n25119 => array(DEFAULT_ERROR_MESSAGE.'25119',0),\n25120 => array(DEFAULT_ERROR_MESSAGE.'25120',0),\n25121 => array(DEFAULT_ERROR_MESSAGE.'25121',0),\n25122 => array(DEFAULT_ERROR_MESSAGE.'25122',0),\n25123 => array(DEFAULT_ERROR_MESSAGE.'25123',0),\n25124 => array(DEFAULT_ERROR_MESSAGE.'25124',0),\n25125 => array(DEFAULT_ERROR_MESSAGE.'25125',0),\n25126 => array(DEFAULT_ERROR_MESSAGE.'25126',0),\n25127 => array(DEFAULT_ERROR_MESSAGE.'25127',0),\n25128 => array(DEFAULT_ERROR_MESSAGE.'25128',0),\n25129 => array(DEFAULT_ERROR_MESSAGE.'25129',0),\n25130 => array(DEFAULT_ERROR_MESSAGE.'25130',0),\n25131 => array(DEFAULT_ERROR_MESSAGE.'25131',0),\n25132 => array(DEFAULT_ERROR_MESSAGE.'25132',0),\n25133 => array(DEFAULT_ERROR_MESSAGE.'25133',0),\n25500 => array(DEFAULT_ERROR_MESSAGE.'25500',0),\n24003 => array(DEFAULT_ERROR_MESSAGE.'24003',0),\n24004 => array(DEFAULT_ERROR_MESSAGE.'24004',0),\n24005 => array(DEFAULT_ERROR_MESSAGE.'24005',0),\n24006 => array(DEFAULT_ERROR_MESSAGE.'24006',0),\n24007 => array(DEFAULT_ERROR_MESSAGE.'24007',0),\n24008 => array(DEFAULT_ERROR_MESSAGE.'24008',0),\n24009 => array(DEFAULT_ERROR_MESSAGE.'24009',0),\n24010 => array(DEFAULT_ERROR_MESSAGE.'24010',0),\n24011 => array(DEFAULT_ERROR_MESSAGE.'24011',0),\n24012 => array(DEFAULT_ERROR_MESSAGE.'24012',0),\n24013 => array(DEFAULT_ERROR_MESSAGE.'24013',0),\n24014 => array(DEFAULT_ERROR_MESSAGE.'24014',0),\n24015 => array(DEFAULT_ERROR_MESSAGE.'24015',0),\n22001 => array(DEFAULT_ERROR_MESSAGE.'22001',0),\n22002 => array(DEFAULT_ERROR_MESSAGE.'22002',0),\n22004 => array(DEFAULT_ERROR_MESSAGE.'22004',0),\n22005 => array(DEFAULT_ERROR_MESSAGE.'22005',0),\n22006 => array(DEFAULT_ERROR_MESSAGE.'22006',0),\n22007 => array(DEFAULT_ERROR_MESSAGE.'22007',0),\n22008 => array(DEFAULT_ERROR_MESSAGE.'22008',0),\n22009 => array(DEFAULT_ERROR_MESSAGE.'22009',0),\n22010 => array(DEFAULT_ERROR_MESSAGE.'22010',0),\n22011 => array(DEFAULT_ERROR_MESSAGE.'22011',0),\n22012 => array(DEFAULT_ERROR_MESSAGE.'22012',0),\n22013 => array(DEFAULT_ERROR_MESSAGE.'22013',0),\n22014 => array(DEFAULT_ERROR_MESSAGE.'22014',0),\n22015 => array(DEFAULT_ERROR_MESSAGE.'22015',0),\n22016 => array(DEFAULT_ERROR_MESSAGE.'22016',0),\n22017 => array(DEFAULT_ERROR_MESSAGE.'22017',0),\n22018 => array(DEFAULT_ERROR_MESSAGE.'22018',0),\n22019 => array(DEFAULT_ERROR_MESSAGE.'22019',0),\n22020 => array(DEFAULT_ERROR_MESSAGE.'22020',0),\n13001 => array(DEFAULT_ERROR_MESSAGE.'13001',0),\n13002 => array(DEFAULT_ERROR_MESSAGE.'13002',0),\n1001 => array(DEFAULT_ERROR_MESSAGE.'1001',0),\n1002 => array(DEFAULT_ERROR_MESSAGE.'1002',0),\n1003 => array(DEFAULT_ERROR_MESSAGE.'1003',0),\n1004 => array(DEFAULT_ERROR_MESSAGE.'1004',0),\n1005 => array(DEFAULT_ERROR_MESSAGE.'1005',0),\n1006 => array(DEFAULT_ERROR_MESSAGE.'1006',0),\n1007 => array(DEFAULT_ERROR_MESSAGE.'1007',0),\n1008 => array(DEFAULT_ERROR_MESSAGE.'1008',0),\n1009 => array(DEFAULT_ERROR_MESSAGE.'1009',0),\n1010 => array(DEFAULT_ERROR_MESSAGE.'1010',0),\n1011 => array(DEFAULT_ERROR_MESSAGE.'1011',0),\n26000 => array(DEFAULT_ERROR_MESSAGE.'26000',0),\n26001 => array(DEFAULT_ERROR_MESSAGE.'26001',0),\n26002 => array(DEFAULT_ERROR_MESSAGE.'26002',0),\n26003 => array(DEFAULT_ERROR_MESSAGE.'26003',0),\n26004 => array(DEFAULT_ERROR_MESSAGE.'26004',0),\n26005 => array(DEFAULT_ERROR_MESSAGE.'26005',0),\n26006 => array(DEFAULT_ERROR_MESSAGE.'26006',0),\n26007 => array(DEFAULT_ERROR_MESSAGE.'26007',0),\n26008 => array(DEFAULT_ERROR_MESSAGE.'26008',0),\n26009 => array(DEFAULT_ERROR_MESSAGE.'26009',0),\n26010 => array(DEFAULT_ERROR_MESSAGE.'26010',0),\n26011 => array(DEFAULT_ERROR_MESSAGE.'26011',0),\n26012 => array(DEFAULT_ERROR_MESSAGE.'26012',0),\n26013 => array(DEFAULT_ERROR_MESSAGE.'26013',0),\n26014 => array(DEFAULT_ERROR_MESSAGE.'26014',0),\n26015 => array(DEFAULT_ERROR_MESSAGE.'26015',0),\n26016 => array(DEFAULT_ERROR_MESSAGE.'26016',0),\n\n27001 => array(DEFAULT_ERROR_MESSAGE.'27001',0),\n27002 => array(DEFAULT_ERROR_MESSAGE.'27002',0),\n27003 => array(DEFAULT_ERROR_MESSAGE.'27003',0),\n27004 => array(DEFAULT_ERROR_MESSAGE.'27004',0),\n27005 => array(DEFAULT_ERROR_MESSAGE.'27005',0),\n27006 => array(DEFAULT_ERROR_MESSAGE.'27006',0),\n27007 => array(DEFAULT_ERROR_MESSAGE.'27007',0),\n27008 => array(DEFAULT_ERROR_MESSAGE.'27008',0),\n27009 => array(DEFAULT_ERROR_MESSAGE.'27009',0),\n27010 => array(DEFAULT_ERROR_MESSAGE.'27010',0),\n27011 => array(DEFAULT_ERROR_MESSAGE.'27011',0),\n27012 => array(DEFAULT_ERROR_MESSAGE.'27012',0),\n27013 => array(DEFAULT_ERROR_MESSAGE.'27013',0),\n27014 => array(DEFAULT_ERROR_MESSAGE.'27014',0),\n27015 => array(DEFAULT_ERROR_MESSAGE.'27015',0),\n\n28001 => array(DEFAULT_ERROR_MESSAGE.'28001',0),\n28002 => array(DEFAULT_ERROR_MESSAGE.'28002',0),\n28003 => array(DEFAULT_ERROR_MESSAGE.'28003',0),\n28004 => array(DEFAULT_ERROR_MESSAGE.'28004',0),\n28005 => array(DEFAULT_ERROR_MESSAGE.'28005',0),\n28006 => array(DEFAULT_ERROR_MESSAGE.'28006',0),\n28007 => array(DEFAULT_ERROR_MESSAGE.'28007',0),\n\n29201 => array(DEFAULT_ERROR_MESSAGE.'28001',0),\n29202 => array(DEFAULT_ERROR_MESSAGE.'28002',0),\n29203 => array(DEFAULT_ERROR_MESSAGE.'28003',0),\n29204 => array(DEFAULT_ERROR_MESSAGE.'28004',0),\n29205 => array(DEFAULT_ERROR_MESSAGE.'28005',0),\n29206 => array(DEFAULT_ERROR_MESSAGE.'28006',0),\n29207 => array(DEFAULT_ERROR_MESSAGE.'28007',0),\n29208 => array(DEFAULT_ERROR_MESSAGE.'28008',0),\n29209 => array(DEFAULT_ERROR_MESSAGE.'28009',0),\n29210 => array(DEFAULT_ERROR_MESSAGE.'28010',0),\n\n);\n\n?>\n"
  },
  {
    "path": "include/jpgraph/themes/AquaTheme.class.php",
    "content": "<?php\n\n/**\n* Aqua Theme class\n*/\nclass AquaTheme extends Theme \n{\n    protected $font_color       = '#0044CC';\n    protected $background_color = '#DDFFFF';\n    protected $axis_color       = '#0066CC';\n    protected $grid_color       = '#3366CC';\n\n    function GetColorList() {\n        return array(\n            '#183152',\n            '#C4D7ED',\n            '#375D81',\n            '#ABC8E2',\n            '#E1E6FA',\n            '#9BBAB2',\n            '#3B4259',\n            '#0063BC',\n            '#1D5A73',\n            '#ABABFF',\n            '#27ADC5',\n            '#EDFFCC',\n\n/*\n\n            '#66FFFF',\n            '#00AABB',\n            '#00FFCC',\n            '#33CCFF',\n            '#008866',\n            '#99FFFF',\n            '#0099FF',\n            '#99FFCC',\n            '#3399FF',\n            '#2277FF',\n            '#445588',\n            '#003388',\n            '#338877',\n            '#55DDFF',\n            '#00FF99',\n            '#BBBBBB',\n            '#77AAFF',\n            '#00FFCC',\n*/\n        );\n    }\n\n    function SetupGraph($graph) {\n\n        // graph\n        /*\n        $img = $graph->img;\n        $height = $img->height;\n        $graph->SetMargin($img->left_margin, $img->right_margin, $img->top_margin, $height * 0.25);\n        */\n        $graph->SetFrame(false);\n        $graph->SetMarginColor('white');\n        $graph->SetBackgroundGradient($this->background_color, '#FFFFFF', GRAD_HOR, BGRAD_PLOT);\n\n        // legend\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.85, 'center', 'top');\n        $graph->legend->SetFillColor('white');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(3);\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // xaxis\n        $graph->xaxis->title->SetColor($this->font_color);  \n        $graph->xaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->xaxis->SetTickSide(SIDE_BOTTOM);\n        $graph->xaxis->SetLabelMargin(10);\n                \n        // yaxis\n        $graph->yaxis->title->SetColor($this->font_color);  \n        $graph->yaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->yaxis->SetTickSide(SIDE_LEFT);\n        $graph->yaxis->SetLabelMargin(8);\n        $graph->yaxis->HideLine();\n        $graph->yaxis->HideTicks();\n        $graph->xaxis->SetTitleMargin(15);\n\n        // grid\n        $graph->ygrid->SetColor($this->grid_color);\n        $graph->ygrid->SetLineStyle('dotted');\n\n\n        // font\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n//        $graph->img->SetAntiAliasing();\n    }\n\n\n    function SetupPieGraph($graph) {\n\n        // graph\n        $graph->SetFrame(false);\n\n        // legend\n        $graph->legend->SetFillColor('white');\n\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.80, 'center', 'top');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(4);\n\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // title\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n        $graph->SetAntiAliasing();\n    }\n\n\n    function PreStrokeApply($graph) {\n        if ($graph->legend->HasItems()) {\n            $img = $graph->img;\n            $graph->SetMargin(\n                $img->raw_left_margin, \n                $img->raw_right_margin, \n                $img->raw_top_margin, \n                is_numeric($img->raw_bottom_margin) ? $img->raw_bottom_margin : $img->height * 0.25\n            );\n        }\n    }\n\n    function ApplyPlot($plot) {\n\n        switch (get_class($plot))\n        { \n            case 'GroupBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'AccBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'BarPlot':\n            {\n                $plot->Clear();\n\n                $color = $this->GetNextColor();\n                $plot->SetColor($color);\n                $plot->SetFillColor($color);\n                //$plot->SetShadow();\n                break;\n            }\n\n            case 'LinePlot':\n            {\n                $plot->Clear();\n                $plot->SetColor($this->GetNextColor());\n                $plot->SetWeight(2);\n//                $plot->SetBarCenter();\n                break;\n            }\n\n            case 'PiePlot':\n            {\n                $plot->SetCenter(0.5, 0.45);\n                $plot->ShowBorder(false);\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n\n            case 'PiePlot3D':\n            {\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n    \n            default:\n            {\n            }\n        }\n    }\n}\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/themes/GreenTheme.class.php",
    "content": "<?php\n\n/**\n* Green Theme class\n*/\nclass GreenTheme extends Theme \n{\n    private $font_color       = '#009900';\n    private $background_color = '#EEFFDD';\n    private $axis_color       = '#00CC00';\n    private $grid_color       = '#33CC33';\n\n    function GetColorList() {\n        return array(\n            '#66CC00',\n            '#009900',\n            '#AAFF77',\n            '#559922',\n            '#00CC33',\n            '#99FF00',\n            '#009966',\n            '#00FF99',\n            '#99BB66',\n            '#33FF00',\n            '#DDFFBB',\n            '#669933',\n            '#BBDDCC',\n            '#77CCBB',\n            '#668833',\n            '#BBEE66',\n        );\n    }\n\n    function SetupGraph($graph) {\n\n        // graph\n        /*\n        $img = $graph->img;\n        $height = $img->height;\n        $graph->SetMargin($img->left_margin, $img->right_margin, $img->top_margin, $height * 0.25);\n        */\n        $graph->SetFrame(false);\n        $graph->SetMarginColor('white');\n        $graph->SetBackgroundGradient($this->background_color, '#FFFFFF', GRAD_HOR, BGRAD_PLOT);\n\n        // legend\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.85, 'center', 'top');\n        $graph->legend->SetFillColor('white');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(3);\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // xaxis\n        $graph->xaxis->title->SetColor($this->font_color);  \n        $graph->xaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->xaxis->SetTickSide(SIDE_BOTTOM);\n        $graph->xaxis->SetLabelMargin(10);\n                \n        // yaxis\n        $graph->yaxis->title->SetColor($this->font_color);  \n        $graph->yaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->yaxis->SetTickSide(SIDE_LEFT);\n        $graph->yaxis->SetLabelMargin(8);\n        $graph->yaxis->HideLine();\n        $graph->yaxis->HideTicks();\n        $graph->xaxis->SetTitleMargin(15);\n\n        // grid\n        $graph->ygrid->SetColor($this->grid_color);\n        $graph->ygrid->SetLineStyle('dotted');\n\n\n        // font\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n//        $graph->img->SetAntiAliasing();\n    }\n\n\n    function SetupPieGraph($graph) {\n\n        // graph\n        $graph->SetFrame(false);\n\n        // legend\n        $graph->legend->SetFillColor('white');\n        /*\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.85, 'center', 'top');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(3);\n        */\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // title\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n        $graph->SetAntiAliasing();\n    }\n\n\n    function PreStrokeApply($graph) {\n        if ($graph->legend->HasItems()) {\n            $img = $graph->img;\n            $graph->SetMargin(\n                $img->raw_left_margin, \n                $img->raw_right_margin, \n                $img->raw_top_margin, \n                is_numeric($img->raw_bottom_margin) ? $img->raw_bottom_margin : $img->height * 0.25\n            );\n        }\n    }\n\n    function ApplyPlot($plot) {\n\n        switch (get_class($plot))\n        { \n            case 'GroupBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'AccBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'BarPlot':\n            {\n                $plot->Clear();\n\n                $color = $this->GetNextColor();\n                $plot->SetColor($color);\n                $plot->SetFillColor($color);\n                $plot->SetShadow('red', 3, 4, false);\n                break;\n            }\n\n            case 'LinePlot':\n            {\n                $plot->Clear();\n\n                $plot->SetColor($this->GetNextColor().'@0.4');\n                $plot->SetWeight(2);\n                break;\n            }\n\n            case 'PiePlot':\n            {\n                $plot->ShowBorder(false);\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n\n            case 'PiePlot3D':\n            {\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n    \n            default:\n            {\n            }\n        }\n    }\n}\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/themes/OceanTheme.class.php",
    "content": "<?php\n\n/**\n* Ocean Theme class\n*/\nclass OceanTheme extends Theme \n{\n    protected $font_color       = '#0066FF';\n    private $background_color = '#DDEEFF';\n    private $axis_color       = '#0000CC';\n    private $grid_color       = '#3333CC';\n\n    function GetColorList() {\n        return array(\n            '#0066FF',\n            '#CCCCFF',\n            '#0000FF',\n            '#3366FF',\n            '#33CCFF',\n            '#660088',\n            '#3300FF',\n            '#0099FF',\n            '#6633FF',\n            '#0055EE',\n            '#2277EE',\n            '#3300FF',\n            '#AA00EE',\n            '#778899',\n            '#114499',\n            '#7744EE',\n            '#002288',\n            '#6666FF',\n        );\n    }\n\n    function SetupGraph($graph) {\n\n        // graph\n        /*\n        $img = $graph->img;\n        $height = $img->height;\n        $graph->SetMargin($img->left_margin, $img->right_margin, $img->top_margin, $height * 0.25);\n        */\n        $graph->SetFrame(false);\n        $graph->SetMarginColor('white');\n        $graph->SetBackgroundGradient($this->background_color, '#FFFFFF', GRAD_HOR, BGRAD_PLOT);\n\n        // legend\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.85, 'center', 'top');\n        $graph->legend->SetFillColor('white');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(3);\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // xaxis\n        $graph->xaxis->title->SetColor($this->font_color);  \n        $graph->xaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->xaxis->SetTickSide(SIDE_BOTTOM);\n        $graph->xaxis->SetLabelMargin(10);\n                \n        // yaxis\n        $graph->yaxis->title->SetColor($this->font_color);  \n        $graph->yaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->yaxis->SetTickSide(SIDE_LEFT);\n        $graph->yaxis->SetLabelMargin(8);\n        $graph->yaxis->HideLine();\n        $graph->yaxis->HideTicks();\n        $graph->xaxis->SetTitleMargin(15);\n\n        // grid\n        $graph->ygrid->SetColor($this->grid_color);\n        $graph->ygrid->SetLineStyle('dotted');\n\n\n        // font\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n//        $graph->img->SetAntiAliasing();\n    }\n\n\n    function SetupPieGraph($graph) {\n\n        // graph\n        $graph->SetFrame(false);\n\n        // legend\n        $graph->legend->SetFillColor('white');\n        /*\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.85, 'center', 'top');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(3);\n        */\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // title\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n        $graph->SetAntiAliasing();\n    }\n\n\n    function PreStrokeApply($graph) {\n        if ($graph->legend->HasItems()) {\n            $img = $graph->img;\n            $graph->SetMargin(\n                $img->raw_left_margin, \n                $img->raw_right_margin, \n                $img->raw_top_margin, \n                is_numeric($img->raw_bottom_margin) ? $img->raw_bottom_margin : $img->height * 0.25\n            );\n        }\n    }\n\n    function ApplyPlot($plot) {\n\n        switch (get_class($plot))\n        { \n            case 'GroupBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'AccBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'BarPlot':\n            {\n                $plot->Clear();\n\n                $color = $this->GetNextColor();\n                $plot->SetColor($color);\n                $plot->SetFillColor($color);\n                $plot->SetShadow('red', 3, 4, false);\n                break;\n            }\n\n            case 'LinePlot':\n            {\n                $plot->Clear();\n\n                $plot->SetColor($this->GetNextColor());\n                $plot->SetWeight(2);\n                break;\n            }\n\n            case 'PiePlot':\n            {\n                $plot->ShowBorder(false);\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n\n            case 'PiePlot3D':\n            {\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n    \n            default:\n            {\n            }\n        }\n    }\n}\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/themes/OrangeTheme.class.php",
    "content": "<?php\n\n/**\n* Orange Theme class\n*/\nclass OrangeTheme extends Theme \n{\n    private $font_color       = '#CC4400';\n    private $background_color = '#FFEEDD';\n    private $axis_color       = '#CC6600';\n    private $grid_color       = '#CC6633';\n\n    function GetColorList() {\n        return array(\n            '#FF9900',\n            '#FFCC00',\n            '#AA6600',\n            '#CCCC00',\n            '#CC6600',\n            '#FFFF66',\n            '#CCFF00',\n            '#CC3300',\n            '#669933',\n            '#EE7700',\n            '#AAEE33',\n            '#77AA00',\n            '#CCFF99',\n            '#FF6633',\n            '#885500',\n            '#AADD00',\n            '#99CC44',\n            '#887711',\n        );\n    }\n\n    function SetupGraph($graph) {\n\n        // graph\n        /*\n        $img = $graph->img;\n        $height = $img->height;\n        $graph->SetMargin($img->left_margin, $img->right_margin, $img->top_margin, $height * 0.25);\n        */\n        $graph->SetFrame(false);\n        $graph->SetMarginColor('white');\n        $graph->SetBackgroundGradient($this->background_color, '#FFFFFF', GRAD_HOR, BGRAD_PLOT);\n\n        // legend\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.85, 'center', 'top');\n        $graph->legend->SetFillColor('white');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(3);\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // xaxis\n        $graph->xaxis->title->SetColor($this->font_color);  \n        $graph->xaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->xaxis->SetTickSide(SIDE_BOTTOM);\n        $graph->xaxis->SetLabelMargin(10);\n                \n        // yaxis\n        $graph->yaxis->title->SetColor($this->font_color);  \n        $graph->yaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->yaxis->SetTickSide(SIDE_LEFT);\n        $graph->yaxis->SetLabelMargin(8);\n        $graph->yaxis->HideLine();\n        $graph->yaxis->HideTicks();\n        $graph->xaxis->SetTitleMargin(15);\n\n        // grid\n        $graph->ygrid->SetColor($this->grid_color);\n        $graph->ygrid->SetLineStyle('dotted');\n\n\n        // font\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n//        $graph->img->SetAntiAliasing();\n    }\n\n\n    function SetupPieGraph($graph) {\n\n        // graph\n        $graph->SetFrame(false);\n\n        // legend\n        $graph->legend->SetFillColor('white');\n        /*\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.85, 'center', 'top');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(3);\n        */\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // title\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n        $graph->SetAntiAliasing();\n    }\n\n\n    function PreStrokeApply($graph) {\n        if ($graph->legend->HasItems()) {\n            $img = $graph->img;\n            $graph->SetMargin(\n                $img->raw_left_margin, \n                $img->raw_right_margin, \n                $img->raw_top_margin, \n                is_numeric($img->raw_bottom_margin) ? $img->raw_bottom_margin : $img->height * 0.25\n            );\n        }\n    }\n\n    function ApplyPlot($plot) {\n\n        switch (get_class($plot))\n        { \n            case 'GroupBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'AccBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'BarPlot':\n            {\n                $plot->Clear();\n\n                $color = $this->GetNextColor();\n                $plot->SetColor($color);\n                $plot->SetFillColor($color);\n                $plot->SetShadow('red', 3, 4, false);\n                break;\n            }\n\n            case 'LinePlot':\n            {\n                $plot->Clear();\n\n                $plot->SetColor($this->GetNextColor().'@0.4');\n                $plot->SetWeight(2);\n                break;\n            }\n\n            case 'PiePlot':\n            {\n                $plot->ShowBorder(false);\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n\n            case 'PiePlot3D':\n            {\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n    \n            default:\n            {\n            }\n        }\n    }\n}\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/themes/PastelTheme.class.php",
    "content": "<?php\n\n/**\n* Pastel Theme class\n*/\nclass PastelTheme extends Theme \n{\n    private $font_color       = '#0044CC';\n    private $background_color = '#DDFFFF';\n    private $axis_color       = '#0066CC';\n    private $grid_color       = '#3366CC';\n\n    function GetColorList() {\n        return array(\n            '#FFAACC',\n            '#AAEECC',\n            '#AACCFF',\n            '#CCAAFF',\n            '#EEDDFF',\n            '#FFCCAA',\n            '#CCBBDD',\n            '#CCFFAA',\n            '#C7D7C2',\n            '#FFEEDD',\n            '#FFCCEE',\n            '#BFECFA',\n        );\n    }\n\n    function SetupGraph($graph) {\n\n        // graph\n        /*\n        $img = $graph->img;\n        $height = $img->height;\n        $graph->SetMargin($img->left_margin, $img->right_margin, $img->top_margin, $height * 0.25);\n        */\n        $graph->SetFrame(false);\n        $graph->SetMarginColor('white');\n        $graph->SetBackgroundGradient($this->background_color, '#FFFFFF', GRAD_HOR, BGRAD_PLOT);\n\n        // legend\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.85, 'center', 'top');\n        $graph->legend->SetFillColor('white');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(3);\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // xaxis\n        $graph->xaxis->title->SetColor($this->font_color);  \n        $graph->xaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->xaxis->SetTickSide(SIDE_BOTTOM);\n        $graph->xaxis->SetLabelMargin(10);\n                \n        // yaxis\n        $graph->yaxis->title->SetColor($this->font_color);  \n        $graph->yaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->yaxis->SetTickSide(SIDE_LEFT);\n        $graph->yaxis->SetLabelMargin(8);\n        $graph->yaxis->HideLine();\n        $graph->yaxis->HideTicks();\n        $graph->xaxis->SetTitleMargin(15);\n\n        // grid\n        $graph->ygrid->SetColor($this->grid_color);\n        $graph->ygrid->SetLineStyle('dotted');\n\n\n        // font\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n//        $graph->img->SetAntiAliasing();\n    }\n\n\n    function SetupPieGraph($graph) {\n\n        // graph\n        $graph->SetFrame(false);\n\n        // legend\n        $graph->legend->SetFillColor('white');\n\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.80, 'center', 'top');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(4);\n\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // title\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n        $graph->SetAntiAliasing();\n    }\n\n\n    function PreStrokeApply($graph) {\n        if ($graph->legend->HasItems()) {\n            $img = $graph->img;\n            $graph->SetMargin(\n                $img->raw_left_margin, \n                $img->raw_right_margin, \n                $img->raw_top_margin, \n                is_numeric($img->raw_bottom_margin) ? $img->raw_bottom_margin : $img->height * 0.25\n            );\n        }\n    }\n\n    function ApplyPlot($plot) {\n\n        switch (get_class($plot))\n        { \n            case 'GroupBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'AccBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'BarPlot':\n            {\n                $plot->Clear();\n\n                $color = $this->GetNextColor();\n                $plot->SetColor($color);\n                $plot->SetFillColor($color);\n                $plot->SetShadow('red', 3, 4, false);\n                break;\n            }\n\n            case 'LinePlot':\n            {\n                $plot->Clear();\n                $plot->SetColor($this->GetNextColor().'@0.4');\n                $plot->SetWeight(2);\n//                $plot->SetBarCenter();\n                break;\n            }\n\n            case 'PiePlot':\n            {\n                $plot->SetCenter(0.5, 0.45);\n                $plot->ShowBorder(false);\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n\n            case 'PiePlot3D':\n            {\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n    \n            default:\n            {\n            }\n        }\n    }\n}\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/themes/RoseTheme.class.php",
    "content": "<?php\n\n/**\n* Rose Theme class\n*/\nclass RoseTheme extends Theme \n{\n    private $font_color       = '#CC0044';\n    private $background_color = '#FFDDDD';\n    private $axis_color       = '#CC0000';\n    private $grid_color       = '#CC3333';\n\n    function GetColorList() {\n        return array(\n            '#FF0000',\n            '#FF99FF',\n            '#AA0099',\n            '#FF00FF',\n            '#FF6666',\n            '#FF0099',\n            '#FFBB88',\n            '#AA2211',\n            '#FF6699',\n            '#BBAA88',\n            '#FF2200',\n            '#883333',\n            '#EE7777',\n            '#EE7711',\n            '#FF0066',\n            '#DD7711',\n            '#AA6600',\n            '#EE5500',\n        );\n    }\n\n    function SetupGraph($graph) {\n\n        // graph\n        /*\n        $img = $graph->img;\n        $height = $img->height;\n        $graph->SetMargin($img->left_margin, $img->right_margin, $img->top_margin, $height * 0.25);\n        */\n        $graph->SetFrame(false);\n        $graph->SetMarginColor('white');\n        $graph->SetBackgroundGradient($this->background_color, '#FFFFFF', GRAD_HOR, BGRAD_PLOT);\n\n        // legend\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.85, 'center', 'top');\n        $graph->legend->SetFillColor('white');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(3);\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // xaxis\n        $graph->xaxis->title->SetColor($this->font_color);  \n        $graph->xaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->xaxis->SetTickSide(SIDE_BOTTOM);\n        $graph->xaxis->SetLabelMargin(10);\n                \n        // yaxis\n        $graph->yaxis->title->SetColor($this->font_color);  \n        $graph->yaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->yaxis->SetTickSide(SIDE_LEFT);\n        $graph->yaxis->SetLabelMargin(8);\n        $graph->yaxis->HideLine();\n        $graph->yaxis->HideTicks();\n        $graph->xaxis->SetTitleMargin(15);\n\n        // grid\n        $graph->ygrid->SetColor($this->grid_color);\n        $graph->ygrid->SetLineStyle('dotted');\n\n\n        // font\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n//        $graph->img->SetAntiAliasing();\n    }\n\n\n    function SetupPieGraph($graph) {\n\n        // graph\n        $graph->SetFrame(false);\n\n        // legend\n        $graph->legend->SetFillColor('white');\n        /*\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.85, 'center', 'top');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(3);\n        */\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // title\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n        $graph->SetAntiAliasing();\n    }\n\n\n    function PreStrokeApply($graph) {\n        if ($graph->legend->HasItems()) {\n            $img = $graph->img;\n            $graph->SetMargin(\n                $img->raw_left_margin, \n                $img->raw_right_margin, \n                $img->raw_top_margin, \n                is_numeric($img->raw_bottom_margin) ? $img->raw_bottom_margin : $img->height * 0.25\n            );\n        }\n    }\n\n    function ApplyPlot($plot) {\n\n        switch (get_class($plot))\n        { \n            case 'GroupBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'AccBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'BarPlot':\n            {\n                $plot->Clear();\n\n                $color = $this->GetNextColor();\n                $plot->SetColor($color);\n                $plot->SetFillColor($color);\n                $plot->SetShadow('red', 3, 4, false);\n                break;\n            }\n\n            case 'LinePlot':\n            {\n                $plot->Clear();\n\n                $plot->SetColor($this->GetNextColor().'@0.4');\n                $plot->SetWeight(2);\n                break;\n            }\n\n            case 'PiePlot':\n            {\n                $plot->ShowBorder(false);\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n\n            case 'PiePlot3D':\n            {\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n    \n            default:\n            {\n            }\n        }\n    }\n}\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/themes/SoftyTheme.class.php",
    "content": "<?php\n\n/**\n* Softy Theme class\n*/\nclass SoftyTheme extends Theme \n{\n    protected $font_color       = '#000000';\n    protected $background_color = '#F7F8F4';\n    protected $axis_color       = '#000000';\n    protected $grid_color       = '#CCCCCC';\n\n    function GetColorList() {\n        return array(\n            '#CFE7FB',\n            '#F9D76F',\n            '#B9D566',\n            '#FFBB90',\n            '#66BBBB',\n            '#E69090',\n            '#BB90BB',\n            '#9AB67C',\n            '#D1CC66',\n\n/*\n\n            '#AFD8F8',\n            '#F6BD0F',\n            '#8BBA00',\n            '#FF8E46',\n            '#008E8E',\n\n            '#D64646',\n            '#8E468E',\n            '#588526',\n            '#B3AA00',\n            '#008ED6',\n\n            '#9D080D',\n            '#A186BE',\n            */\n        );\n    }\n\n    function SetupGraph($graph) {\n\n        // graph\n        $graph->SetFrame(false);\n        $graph->SetMarginColor('white');\n\n        // legend\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.85, 'center', 'top');\n        $graph->legend->SetFillColor('white');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(3);\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // xaxis\n        $graph->xaxis->title->SetColor($this->font_color);  \n        $graph->xaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->xaxis->SetTickSide(SIDE_BOTTOM);\n        $graph->xaxis->SetLabelMargin(10);\n                \n        // yaxis\n        $graph->yaxis->title->SetColor($this->font_color);  \n        $graph->yaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->yaxis->SetTickSide(SIDE_LEFT);\n        $graph->yaxis->SetLabelMargin(8);\n        $graph->yaxis->HideLine();\n        $graph->yaxis->HideTicks();\n        $graph->xaxis->SetTitleMargin(15);\n\n        // y2~\n        if (isset($graph->y2axis)) {\n            $graph->y2axis->title->SetColor($this->font_color);  \n            $graph->y2axis->SetColor($this->axis_color, $this->font_color);    \n            $graph->y2axis->SetTickSide(SIDE_LEFT);\n            $graph->y2axis->SetLabelMargin(8);\n            $graph->y2axis->HideLine();\n            $graph->y2axis->HideTicks();\n        }\n\n        // yn\n        if (isset($graph->y2axis)) {\n            foreach ($graph->ynaxis as $axis) {\n                $axis->title->SetColor($this->font_color);  \n                $axis->SetColor($this->axis_color, $this->font_color);    \n                $axis->SetTickSide(SIDE_LEFT);\n                $axis->SetLabelMargin(8);\n                $axis->HideLine();\n                $axis->HideTicks();\n            }\n        }\n\n        // grid\n        $graph->ygrid->SetColor($this->grid_color);\n        $graph->ygrid->SetLineStyle('dotted');\n        $graph->ygrid->SetFill(true, '#FFFFFF', $this->background_color);\n        $graph->xgrid->Show();\n        $graph->xgrid->SetColor($this->grid_color);\n        $graph->xgrid->SetLineStyle('dotted');\n\n\n        // font\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n//        $graph->img->SetAntiAliasing();\n    }\n\n\n    function SetupPieGraph($graph) {\n\n        // graph\n        $graph->SetFrame(false);\n\n        // title\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n        $graph->SetAntiAliasing();\n    }\n\n\n    function PreStrokeApply($graph) {\n        if ($graph->legend->HasItems()) {\n            $img = $graph->img;\n            $graph->SetMargin(\n                $img->raw_left_margin, \n                $img->raw_right_margin, \n                $img->raw_top_margin, \n                is_numeric($img->raw_bottom_margin) ? $img->raw_bottom_margin : $img->height * 0.25\n            );\n        }\n    }\n\n    function ApplyPlot($plot) {\n\n        switch (get_class($plot))\n        { \n            case 'BarPlot':\n            {\n                $plot->Clear();\n\n                $color = $this->GetNextColor();\n                $plot->SetColor($color);\n                $plot->SetFillColor($color);\n                $plot->SetShadow('red', 3, 4, false);\n                $plot->value->SetAlign('center', 'center');\n                break;\n            }\n\n            case 'LinePlot':\n            {\n                $plot->Clear();\n\n                $plot->SetColor($this->GetNextColor());\n                $plot->SetWeight(2);\n//                $plot->SetBarCenter();\n                break;\n            }\n\n            case 'PiePlot':\n            {\n                $plot->ShowBorder(false);\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n\n\n            case 'GroupBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'AccBarPlot':\n            {\n                $plot->value->SetAlign('center', 'center');\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                    $_plot->SetValuePos('center');\n                }\n                break;\n            }\n\n            case 'ScatterPlot':\n            {\n                break;\n            }\n\n\n            case 'PiePlot3D':\n            {\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n    \n            default:\n            {\n            }\n        }\n    }\n}\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/themes/UniversalTheme.class.php",
    "content": "<?php\n\n/**\n* Universal Theme class\n*/\nclass UniversalTheme extends Theme \n{\n    private $font_color       = '#444444';\n    private $background_color = '#F4F4F4';\n    private $axis_color       = '#888888';\n    private $grid_color       = '#E3E3E3';\n\n    function GetColorList() {\n        return array(\n            '#61a9f3',#blue\n            '#f381b9',#red\n            '#61E3A9',#green\n\n            #'#D56DE2',\n            '#85eD82',\n            '#F7b7b7',\n            '#CFDF49',\n            '#88d8f2',\n            '#07AF7B',\n            '#B9E3F9',\n            '#FFF3AD',\n            '#EF606A',\n            '#EC8833',\n            '#FFF100',\n            '#87C9A5',\n        );\n    }\n\n    function SetupGraph($graph) {\n\n        // graph\n        /*\n        $img = $graph->img;\n        $height = $img->height;\n        $graph->SetMargin($img->left_margin, $img->right_margin, $img->top_margin, $height * 0.25);\n        */\n        $graph->SetFrame(false);\n        $graph->SetMarginColor('white');\n        $graph->SetBox(true, '#DADADA');\n//        $graph->SetBackgroundGradient($this->background_color, '#FFFFFF', GRAD_HOR, BGRAD_PLOT);\n\n        // legend\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.85, 'center', 'top');\n        $graph->legend->SetFillColor('white');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(3);\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // xaxis\n        $graph->xaxis->title->SetColor($this->font_color);  \n        $graph->xaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->xaxis->SetTickSide(SIDE_BOTTOM);\n        $graph->xaxis->SetLabelMargin(10);\n        $graph->xaxis->HideTicks();\n        $graph->xaxis->SetTitleMargin(15);\n        //$graph->xaxis->SetLabelMargin(30);\n                \n        // yaxis\n        $graph->yaxis->title->SetColor($this->font_color);  \n        $graph->yaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->yaxis->SetTickSide(SIDE_LEFT);\n        $graph->yaxis->SetLabelMargin(8);\n//        $graph->yaxis->SetTickPositions(array(50, 100, 150));\n//        $graph->yaxis->HideLine();\n        $graph->yaxis->HideTicks();\n\n        // grid\n        $graph->ygrid->SetColor($this->grid_color);\n        $graph->ygrid->SetFill(true, '#FFFFFF', $this->background_color);\n //       $graph->ygrid->SetLineStyle('dotted');\n\n\n        // font\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n        $graph->img->SetAntiAliasing();\n    }\n\n\n    function SetupPieGraph($graph) {\n\n        // graph\n        $graph->SetFrame(false);\n\n        // legend\n        $graph->legend->SetFillColor('white');\n\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.80, 'center', 'top');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(4);\n\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // title\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n        $graph->SetAntiAliasing();\n    }\n\n\n    function PreStrokeApply($graph) {\n        if ($graph->legend->HasItems()) {\n            $img = $graph->img;\n            $graph->SetMargin(\n                $img->raw_left_margin, \n                $img->raw_right_margin, \n                $img->raw_top_margin, \n                is_numeric($img->raw_bottom_margin) ? $img->raw_bottom_margin : $img->height * 0.25\n            );\n        }\n    }\n\n    function ApplyPlot($plot) {\n\n        switch (get_class($plot))\n        { \n            case 'GroupBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'AccBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'BarPlot':\n            {\n                $plot->Clear();\n\n                $color = $this->GetNextColor();\n                $plot->SetColor($color);\n                $plot->SetFillColor($color);\n                $plot->SetShadow('red', 3, 4, false);\n                break;\n            }\n\n            case 'LinePlot':\n            {\n                $plot->Clear();\n                $plot->SetColor($this->GetNextColor().'@0.4');\n                $plot->SetWeight(2);\n                break;\n            }\n\n            case 'PiePlot':\n            {\n                $plot->SetCenter(0.5, 0.45);\n                $plot->ShowBorder(false);\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n\n            case 'PiePlot3D':\n            {\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n    \n            default:\n            {\n            }\n        }\n    }\n}\n\n\n?>\n"
  },
  {
    "path": "include/jpgraph/themes/VividTheme.class.php",
    "content": "<?php\n\n/**\n* Vivid Theme class\n*/\nclass VividTheme extends Theme \n{\n    private $font_color       = '#0044CC';\n    private $background_color = '#DDFFFF';\n    private $axis_color       = '#0066CC';\n    private $grid_color       = '#3366CC';\n\n    function GetColorList() {\n        return array(\n            '#FFFB11',\n            '#005EBC',\n            '#9AEB67',\n            '#FF4A26',\n            '#FDFF98',\n            '#6B7EFF',\n            '#BCE02E',\n            '#E0642E',\n            '#E0D62E',\n            '#2E97E0',\n            '#02927F',\n            '#FF005A',\n        );\n    }\n\n    function SetupGraph($graph) {\n\n        // graph\n        /*\n        $img = $graph->img;\n        $height = $img->height;\n        $graph->SetMargin($img->left_margin, $img->right_margin, $img->top_margin, $height * 0.25);\n        */\n        $graph->SetFrame(false);\n        $graph->SetMarginColor('white');\n        $graph->SetBackgroundGradient($this->background_color, '#FFFFFF', GRAD_HOR, BGRAD_PLOT);\n\n        // legend\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.85, 'center', 'top');\n        $graph->legend->SetFillColor('white');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(3);\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // xaxis\n        $graph->xaxis->title->SetColor($this->font_color);  \n        $graph->xaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->xaxis->SetTickSide(SIDE_BOTTOM);\n        $graph->xaxis->SetLabelMargin(10);\n                \n        // yaxis\n        $graph->yaxis->title->SetColor($this->font_color);  \n        $graph->yaxis->SetColor($this->axis_color, $this->font_color);    \n        $graph->yaxis->SetTickSide(SIDE_LEFT);\n        $graph->yaxis->SetLabelMargin(8);\n        $graph->yaxis->HideLine();\n        $graph->yaxis->HideTicks();\n        $graph->xaxis->SetTitleMargin(15);\n\n        // grid\n        $graph->ygrid->SetColor($this->grid_color);\n        $graph->ygrid->SetLineStyle('dotted');\n\n\n        // font\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n//        $graph->img->SetAntiAliasing();\n    }\n\n\n    function SetupPieGraph($graph) {\n\n        // graph\n        $graph->SetFrame(false);\n\n        // legend\n        $graph->legend->SetFillColor('white');\n\n        $graph->legend->SetFrameWeight(0);\n        $graph->legend->Pos(0.5, 0.80, 'center', 'top');\n        $graph->legend->SetLayout(LEGEND_HOR);\n        $graph->legend->SetColumns(4);\n\n        $graph->legend->SetShadow(false);\n        $graph->legend->SetMarkAbsSize(5);\n\n        // title\n        $graph->title->SetColor($this->font_color);\n        $graph->subtitle->SetColor($this->font_color);\n        $graph->subsubtitle->SetColor($this->font_color);\n\n        $graph->SetAntiAliasing();\n    }\n\n\n    function PreStrokeApply($graph) {\n        if ($graph->legend->HasItems()) {\n            $img = $graph->img;\n            $graph->SetMargin(\n                $img->raw_left_margin, \n                $img->raw_right_margin, \n                $img->raw_top_margin, \n                is_numeric($img->raw_bottom_margin) ? $img->raw_bottom_margin : $img->height * 0.25\n            );\n        }\n    }\n\n    function ApplyPlot($plot) {\n\n        switch (get_class($plot))\n        { \n            case 'GroupBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'AccBarPlot':\n            {\n                foreach ($plot->plots as $_plot) {\n                    $this->ApplyPlot($_plot);\n                }\n                break;\n            }\n\n            case 'BarPlot':\n            {\n                $plot->Clear();\n\n                $color = $this->GetNextColor();\n                $plot->SetColor($color);\n                $plot->SetFillColor($color);\n                $plot->SetShadow('red', 3, 4, false);\n                break;\n            }\n\n            case 'LinePlot':\n            {\n                $plot->Clear();\n                $plot->SetColor($this->GetNextColor().'@0.4');\n                $plot->SetWeight(2);\n//                $plot->SetBarCenter();\n                break;\n            }\n\n            case 'PiePlot':\n            {\n                $plot->SetCenter(0.5, 0.45);\n                $plot->ShowBorder(false);\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n\n            case 'PiePlot3D':\n            {\n                $plot->SetSliceColors($this->GetThemeColors());\n                break;\n            }\n    \n            default:\n            {\n            }\n        }\n    }\n}\n\n\n?>\n"
  },
  {
    "path": "include/memcache.php",
    "content": "<?php\n\nclass MemcacheSingleton\n{\n    private static $instance = null;\n    private $memcache;\n\n    private function __construct()\n    {\n        $this->memcache = new Memcached();\n        // Belief is that this is safe for all intended usage\n        $this->memcache->setOption(Memcached::OPT_BINARY_PROTOCOL, true);\n        $this->memcache->addServer('iem-memcached', 11211);\n    }\n\n    public static function getInstance()\n    {\n        if (self::$instance == null) {\n            self::$instance = new MemcacheSingleton();\n        }\n\n        return self::$instance->memcache;\n    }\n}\n\nfunction cacheable($cacheKeyPrefix, $cacheDuration = 3600) {\n    return function ($func) use ($cacheKeyPrefix, $cacheDuration) {\n        return function (...$args) use ($func, $cacheKeyPrefix, $cacheDuration) {\n            try {\n                $memcache = MemcacheSingleton::getInstance();\n                $mckey = $cacheKeyPrefix . implode('_', $args);\n                $val = $memcache->get($mckey);\n            } catch (Exception $e) {\n                // log error\n                openlog(\"IEM\", LOG_PID | LOG_PERROR, LOG_LOCAL0);\n                syslog(LOG_ERR, \"memcache error: \" . $e->getMessage());\n                closelog();\n                $val = null;\n            }\n            if ($val) {\n                return $val;\n            }\n            $result = $func(...$args);\n            try{\n                $memcache->set($mckey, $result, $cacheDuration);\n            } catch (Exception $e) {\n                // log error\n                openlog(\"IEM\", LOG_PID | LOG_PERROR, LOG_LOCAL0);\n                syslog(LOG_ERR, \"memcache error: \" . $e->getMessage());\n                closelog();\n                // ignore\n            }\n            return $result;\n        };\n    };\n}"
  },
  {
    "path": "include/mesoeast.php",
    "content": "<?php\nrequire_once \"../../../include/jpgraph/jpgraph.php\";\nrequire_once \"../../../include/jpgraph/jpgraph_led.php\";\n\nfunction dwpf($tmpf, $relh)\n{\n    $tmpk = 273.15 + (5.00 / 9.00 * ($tmpf - 32.00));\n    $dwpk = $tmpk / (1 + 0.000425 * $tmpk * - (log10($relh / 100)));\n    return round(($dwpk - 273.15) * 9.00 / 5.00 + 32, 2);\n}\n\n\nfunction read_data($dt, $candie = TRUE) {\n    $dirRef = date(\"Y/m/d\", $dt);\n    $fn = \"/mesonet/ARCHIVE/data/$dirRef/text/ot/ot0006.dat\";\n    $data = array();\n    $data[\"times\"] = array();\n    $data[\"tmpf\"] = array();\n    $data[\"rh\"] = array();\n    $data[\"dwpf\"] = array();\n    $data[\"max_tmpf\"] = -99;\n    $data[\"min_tmpf\"] = 999;\n    $data[\"max_gust\"] = -99;\n    $data[\"max_gust_time\"] = \"\";\n    $data[\"baro\"] = array();\n    $data[\"mph\"] = array();\n    $data[\"gust\"] = array();\n    $data[\"drct\"] = array();\n    $data[\"inTmpf\"] = array();\n    $data[\"inDwpf\"] = array();\n    $data[\"inRh\"] = array();\n    $data[\"precip\"] = array();\n\n\n    if (!file_exists($fn)) {\n        if ($candie) {\n            $led = new DigitalLED74();\n            $led->StrokeNumber('NO DATA FOR THIS DATE', LEDC_GREEN);\n            die();\n        }\n        return $data;\n    }\n    $fcontents = file($fn);\n\n    foreach ($fcontents as $line_num => $line) {\n        $parts = explode(\" \", $line);\n        // Ensure we have enough tokens\n        if (count($parts) < 19) {\n            continue;\n        }\n        $linedt = strtotime(sprintf(\n            \"%s %s %s %s %s\",\n            $parts[0],\n            $parts[1],\n            $parts[2],\n            $parts[3],\n            $parts[4]\n        ));\n        // Ensure that the date matches the requested dt as sometimes\n        // timestamps leak\n        if ($linedt < $dt || $linedt >= ($dt + 86400)) {\n            continue;\n        }\n        $data[\"times\"][] = $linedt;\n\n        $thisTmpf = $parts[5];\n        $thisrh = $parts[8];\n        $thisDwpf = dwpf($thisTmpf, $thisrh);\n        if ($thisTmpf < -50 || $thisTmpf > 150) {\n            $thisTmpf = \"\";\n            $thisDwpf = \"\";\n        }\n        $data[\"tmpf\"][] = $thisTmpf;\n        $data[\"dwpf\"][] = $thisDwpf;\n        $data[\"rh\"][] = $thisrh;\n\n        // Max/Min\n        if ($thisTmpf > $data[\"max_tmpf\"]) {\n            $data[\"max_tmpf\"] = $thisTmpf;\n        }\n        if ($thisTmpf < $data[\"min_tmpf\"]) {\n            $data[\"min_tmpf\"] = $thisTmpf;\n        }\n\n        $thisMPH = intval($parts[9]);\n        $thisDRCT = intval($parts[10]);\n\n        if ($line_num % 5 == 0){\n        $data[\"drct\"][] = $thisDRCT;\n        }else{\n        $data[\"drct\"][] = \"-199\";\n        }\n        $data[\"mph\"][] = $thisMPH;\n\n        $gust = floatval($parts[11]);\n        $data[\"gust\"][] = $gust;\n        $gust_time = $parts[12];\n        if ($gust > $data[\"max_gust\"]) {\n            $data[\"max_gust\"] = $gust;\n            $data[\"max_gust_time\"] = $gust_time;\n        }\n\n        $data[\"precip\"][] = floatval($parts[14]);\n\n        // Inside\n        $inTmpf = floatval($parts[17]);\n        $inRH = floatval($parts[18]);\n        $inDwpf = dwpf($inTmpf, $inRH);\n\n        $data[\"inTmpf\"][] = $inTmpf;\n        $data[\"inDwpf\"][] = $inDwpf;\n        $data[\"inRh\"][] = $inRH;\n\n        // Barometer\n        $value = $parts[13];\n        $value = round((floatval($value) * 33.8639), 2);\n        if ($value < 900 || $value > 1100) {\n            $value = \"\";\n        }\n        $data[\"baro\"][] = $value;\n    } // End of while\n\n    return $data;\n}\n"
  },
  {
    "path": "include/mlib.php",
    "content": "<?php\n\n/**\n * Convert a vague 3 character WFO identifier to a 4 character one\n * @param wfo3 the 3 character WFO identifier\n * @return the 4 character WFO identifier\n */\nfunction rectify_wfo($wfo3){\n    $xref = Array(\n        \"AFC\" => \"PAFC\",\n        \"AJK\" => \"PAJK\",\n        \"AFG\" => \"PAFG\",\n        \"HFO\" => \"PHFO\",\n        \"GUM\" => \"PGUM\",\n        \"SJU\" => \"TJSJ\",\n        \"JSJ\" => \"TJSJ\",\n    );\n    if (array_key_exists($wfo3, $xref)){\n        return $xref[$wfo3];\n    };\n    return sprintf(\"K%s\", $wfo3);\n}\n\n/**\n * Figure out the vague 3 character ID :/\n * @param wfo3 the 3 character WFO identifier\n * @return the 4 character WFO identifier\n */\nfunction unrectify_wfo($wfo){\n    if (strlen($wfo) == 4){\n        $wfo = substr($wfo, 1, 3);\n    }\n    if ($wfo == \"SJU\"){\n        return \"JSJ\";\n    }\n    return $wfo;\n}\n\n\nfunction getClientIp() {\n    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {\n        $ipArray = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);\n        // Likely want the last IP in the list\n        $ip = trim(end($ipArray));\n    } else {\n        $ip = $_SERVER['REMOTE_ADDR'];\n    }\n    return $ip;\n}\n\n// Helper\nfunction printTags($tokens)\n{\n    if (sizeof($tokens) == 0 || $tokens[0] == \"\") {\n        return \"\";\n    }\n    $s = \"<br /><span style=\\\"font-size: smaller; float: left;\\\">Tags: &nbsp; \";\n    foreach ($tokens as $k => $v) {\n        $s .= sprintf(\n            \"<a href=\\\"/onsite/features/tags/%s.html\\\">%s</a> &nbsp; \",\n            $v,\n            $v\n        );\n    }\n    $s .= \"</span>\";\n    return $s;\n}\n\n\n// Workaround round() quirks\nfunction myround($val, $prec){\n    if (is_null($val)) return \"\";\n    if (is_string($val)) return $val;\n    return round($val, $prec);\n}\n\n// Helper to make an IEM webservice call, returns FALSE if fails\nfunction iemws_json($endpoint, $args)\n{\n    // Everything is method get at the moment\n    $cgi = http_build_query($args);\n    // Nginx lives here\n    $uri = \"http://iem-web-services.agron.iastate.edu:8080/{$endpoint}?{$cgi}\";\n    // Try twice to get the content\n    $jobj = FALSE;\n    for ($i = 0; $i < 2; $i++) {\n        // Use curl to get the data with a 15 second timeout\n        $ch = curl_init($uri);\n        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);\n        curl_setopt($ch, CURLOPT_TIMEOUT, 15);\n        $res = curl_exec($ch);\n        $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n        if ($res === FALSE || $http_status != 200) {\n            openlog(\"iem\", LOG_PID | LOG_PERROR, LOG_LOCAL1);\n            syslog(LOG_WARNING, \"iemws fail[$i] $http_status \".\n                \"from:\" . $_SERVER[\"REQUEST_URI\"] .\n                ' remote: ' . getClientIp() .\n                ' to: ' . $uri);\n            closelog();\n            sleep(3);\n            continue;\n        }\n        try {\n            $jobj = json_decode($res, $assoc = TRUE);\n            break;\n        } catch (Exception $e) {\n            // Log\n            openlog(\"iem\", LOG_PID | LOG_PERROR, LOG_LOCAL1);\n            syslog(\n                LOG_WARNING,\n                \"iemws jsonfail  from:\" . $_SERVER[\"REQUEST_URI\"] .\n                    ' remote: ' . getClientIp() .\n                    ' msg: ' . $e .\n                    ' to: ' . $uri\n            );\n            closelog();\n        }\n    }\n    if ($jobj === FALSE) {\n        header(\"Content-type: text/plain\");\n        http_response_code(503);\n        die(\"Backend web service failure, please try again later.\");\n    }\n    return $jobj;\n}\n\n// Make sure a page is HTTPS when called\nfunction force_https()\n{\n    global $EXTERNAL_BASEURL;\n    // Require that EXTERNAL_BASEURL is https, otherwise we have infinite loop\n    if (strpos($EXTERNAL_BASEURL, \"https://\") !== 0) {\n        return;\n    }\n    if (empty($_SERVER[\"HTTPS\"]) || $_SERVER[\"HTTPS\"] !== \"on\") {\n        // Ensure we collapse folks that have bookmarks to aliases\n        header(\"Location: {$EXTERNAL_BASEURL}\" . $_SERVER[\"REQUEST_URI\"]);\n        exit();\n    }\n}\n\n//________________________________________________________\nfunction aSortBySecondIndex($multiArray, $secondIndex, $sorder = \"asc\")\n{\n    reset($multiArray);\n    if (sizeof($multiArray) == 0) {\n        return array();\n    }\n    $indexMap = array();\n    foreach ($multiArray as $firstIndex => $value) {\n        if (array_key_exists($secondIndex, $value)) {\n            $val = $value[$secondIndex];\n        } else {\n            $val = null;\n        }\n        $indexMap[$firstIndex] = $val;\n    }\n    if ($sorder == \"asc\") {\n        asort($indexMap);\n    } else {\n        arsort($indexMap);\n    }\n    $sortedArray = array();\n    foreach ($indexMap as $firstIndex => $unused) {\n        $sortedArray[$firstIndex] = $multiArray[$firstIndex];\n    }\n    return $sortedArray;\n}\n\n//_____________________________________________________________\nfunction c2f($myC)\n{\n    if ($myC == \"\") {\n        return \"\";\n    }\n    return round(((9.00 / 5.00) * $myC + 32.00), 2);\n} // End of function c2f()\n\n//_____________________________________________________________\nfunction f2c($tmpf)\n{\n    if (is_null($tmpf)) return null;\n    return round(((5.00 / 9.00) * ((float)$tmpf - 32.00)), 2);\n} // End of function f2c()\n\n\n//______________________________________________________________\nfunction dwpf($tmpf, $relh)\n{\n    $tmpk = 273.15 + (5.00 / 9.00 * ($tmpf - 32.00));\n    $dwpk = $tmpk / (1 + 0.000425 * $tmpk * - (log10($relh / 100)));\n    return ($dwpk - 273.15) * 9.00 / 5.00 + 32;\n}\n\n\n//______________________________________________________________\n// /home/nawips/nawips56.e.1/gempak/source/gemlib/pr/prvapr.f\n// /home/nawips/nawips56.e.1/gempak/source/gemlib/pr/prrelh.f\nfunction relh($tmpc, $dwpc)\n{\n    if (is_null($tmpc) || is_null($dwpc)) return null;\n    $e  = 6.112 * exp((17.67 * (float)$dwpc) / ((float)$dwpc + 243.5));\n    $es  = 6.112 * exp((17.67 * (float)$tmpc) / ((float)$tmpc + 243.5));\n    $relh = ($e / $es) * 100.00;\n    return round($relh, 0);\n}\n\n\nfunction drct2txt($dir)\n{\n    $dir = intval($dir);\n    $directions = [\n        \"N\" => [350, 360, 0, 13],\n        \"NNE\" => [13, 35],\n        \"NE\" => [35, 57],\n        \"ENE\" => [57, 80],\n        \"E\" => [80, 102],\n        \"ESE\" => [102, 127],\n        \"SE\" => [127, 143],\n        \"SSE\" => [143, 166],\n        \"S\" => [166, 190],\n        \"SSW\" => [190, 215],\n        \"SW\" => [215, 237],\n        \"WSW\" => [237, 260],\n        \"W\" => [260, 281],\n        \"WNW\" => [281, 304],\n        \"NW\" => [304, 324],\n        \"NNW\" => [324, 350]\n    ];\n\n    foreach ($directions as $text => $ranges) {\n        if (count($ranges) == 4) {\n            if (($dir >= $ranges[0] && $dir <= $ranges[1]) || ($dir >= $ranges[2] && $dir < $ranges[3])) {\n                return $text;\n            }\n        } else {\n            if ($dir >= $ranges[0] && $dir < $ranges[1]) {\n                return $text;\n            }\n        }\n    }\n\n    return \"\";\n}\n"
  },
  {
    "path": "include/mos_lib.php",
    "content": "<?php\n// Used in fe.phtml and table.phtml\n\n$mosvars = array(\n    \"n_x\" => \"Max/Min Temp [°F]\",\n    \"tmp\" => \"Temperature [°F]\",\n    \"dpt\" => \"Dew Point Temperature [°F]\",\n    \"wbg\" => \"Wet Bulb Temperature [°F]\",\n    \"cld\" => \"Cloud Coverage\",\n    \"wdr\" => \"Wind Direction [tens of deg]\",\n    \"wsp\" => \"Wind Speed [kt]\",\n    \"p06\" => \"6 Hr PoP [%]\",\n    \"p12\" => \"12 Hr PoP [%]\",\n    \"q06\" => \"6 Hr QPF [0.01 in]\",\n    \"q12\" => \"12 Hr QPF [0.01 in]\",\n    \"t06\" => \"6 Hr Thunderstorm Probability [%]\",\n    \"t12\" => \"12 Hr Thunderstorm Probability [%]\",\n    \"snw\" => \"Categorical Snow\",\n    \"cig\" => \"Ceiling Height [100s ft]\",\n    \"vis\" => \"Visibility [0.1 mi]\",\n    \"obv\" => \"Obstruction to Vision\",\n    \"poz\" => \"Freezing Rain Probability [%]\",\n    \"pos\" => \"Snowfall Probability [%]\",\n    \"typ\" => \"Precipitation Type\",\n    \"sky\" => \"Sky Coverage [%]\",\n    \"gst\" => \"Wind Gust [kt]\",\n    \"t03\" => \"3 Hr Thunderstorm Probability [%]\",\n    \"pzr\" => \"Conditional Probability of Freezing Rain [%]\",\n    \"psn\" => \"Conditional Probability of Snow [%]\",\n    \"ppl\" => \"Conditional Probability of Sleet/Ice Pellets [%]\",\n    \"pra\" => \"Conditional Probability of Rain [%]\",\n    \"s06\" => \"6 Hr Snow Amount [0.1 in]\",\n    \"slv\" => \"Snow Level [100s ft MSL]\",\n    \"i06\" => \"6 Hr Ice Amount [0.01 in]\",\n    \"lcb\" => \"Lowest Cloud Base [100s ft]\",\n    \"swh\" => \"Significant Wave Height [ft]\",\n    \"dur\" => \"Duration of Precipitation [hr]\",\n    \"mht\" => \"Mixing Height [100s ft AGL]\",\n    \"twd\" => \"Transport Wind Direction [tens of deg]\",\n    \"tws\" => \"Transport Wind Speed [kt]\",\n    \"hid\" => \"Haines Index (unitless)\",\n    \"sol\" => \"Solar Radiation [10s W/m2]\",\n    \"q24\" => \"24 Hr QPF [0.01 in]\",\n    \"p24\" => \"24 Hr PoP [%]\",\n    \"t24\" => \"24 Hr Thunderstorm Probability [%]\",\n    \"ccg\" => \"Legacy MOS Code CCG\",\n    \"ppo\" => \"Legacy MOS Code PPO\",\n    \"pco\" => \"Legacy MOS Code PCO\",\n    \"cvs\" => \"Legacy MOS Code CVS\",\n    \"lp1\" => \"Legacy MOS Code LP1\",\n    \"lc1\" => \"Legacy MOS Code LC1\",\n    \"cp1\" => \"Legacy MOS Code CP1\",\n    \"cc1\" => \"Legacy MOS Code CC1\",\n    \"s12\" => \"12 Hr Snow Amount [0.1 in]\",\n    \"i12\" => \"12 Hr Ice Amount [0.01 in]\",\n    \"s24\" => \"24 Hr Snow Amount [0.1 in]\",\n    \"pzp\" => \"Legacy MOS Code PZP\",\n    \"prs\" => \"Legacy MOS Code PRS\",\n    \"txn\" => \"18 Hr Max/Min Temperature [°F]\",\n    \"xnd\" => \"Std Dev of Max/Min Temperature [°F]\",\n    \"tsd\" => \"Temperature Std Dev [°F]\",\n    \"dsd\" => \"Dew Point Temperature Std Dev [°F]\",\n    \"ifc\" => \"Probability of Ceiling IFR Conditions [%]\",\n    \"ifv\" => \"Probability of Visibility IFR Conditions [%]\",\n    \"mvc\" => \"Probability of Ceiling MVFR Conditions [%]\",\n    \"mvv\" => \"Probability of Visibility MVFR Conditions [%]\",\n    \"liv\" => \"Probability of Visibility LIFR Conditions [%]\",\n    \"wsd\" => \"Wind Speed Std Dev [kt]\",\n    \"p01\" => \"1 Hr PoP [%]\",\n    \"pc1\" => \"Legacy MOS Code PC1\",\n);\n"
  },
  {
    "path": "include/myview.php",
    "content": "<?php\nrequire_once dirname(__FILE__) . \"/generators.php\";\n\n/* Here lies the dead simple templating engine the IEM uses\n * \n * For example\n *     $t = new MyView();\n *     $t->blah = \"Hi\";\n *     $t->render('single.phtml');\n *     \n *  http://coding.smashingmagazine.com/2011/10/17/getting-started-with-php-templating/\n */\nclass MyView {\n    protected $vars = array();\n    public ?string $breadcrumbs = null;\n    public ?string $content = null;\n    public ?string $current_network = null;\n    public ?string $headextra = null;\n    public bool $iemss = FALSE;\n    public bool $iemselect2 = FALSE; // Enables select2 form javascript\n    public bool $jsani = FALSE;\n    public ?string $jsextra = null;\n    public int $refresh = -1;\n    public ?string $sites_current = null;\n    public ?string $template_dir = null;\n    public ?string $title = null;\n    public string $twitter_card = \"summary\";\n    public string $twitter_description = \"Iowa Environmental Mesonet of Iowa State University\";\n    public string $twitter_image = \"/images/logo_large.png\";\n    public ?string $twitter_video = null;\n    public int $twitter_video_width = 0;\n    public int $twitter_video_height = 0;\n    public ?string $iem_resource = null;\n\n    public function __construct() {\n            $this->template_dir =  dirname(__FILE__).'/templates/';  // skipcq\n    }\n    public function render($template_file) {\n        if (!is_null($this->iem_resource)) {\n            global $get_website_citations;\n            $this->content .= $get_website_citations($this->iem_resource);\n        }\n        if (file_exists($this->template_dir.$template_file)) {\n            include $this->template_dir.$template_file;  // skipcq\n        } else {\n            throw new Exception(\n                'no template file ' .\n                $template_file . ' present in directory ' .\n                $this->template_dir\n            );\n        }\n    }\n    public function __set($name, $value) {\n        $this->vars[$name] = $value;\n    }\n    public function __get($name) {\n        return $this->vars[$name];\n    }\n}\n"
  },
  {
    "path": "include/network.php",
    "content": "<?php\n// Build Network station tables on demand!\n\nrequire_once dirname(__FILE__) . \"/database.inc.php\";\nrequire_once dirname(__FILE__) . \"/memcache.php\";\n\nclass NetworkTable\n{\n    public array $table;\n    public string $stname1;\n    public string $stname2;\n    public $dbconn;\n\n    public function __construct($a, $force3char = FALSE, $only_online = FALSE)\n    {\n        // Cache the simple cache\n        if (is_string($a)){\n            $mckey = sprintf(\"networkTable_%s_%s_%s\",\n                $a,\n                $force3char ? \"t\" : \"f\",\n                $only_online ? \"t\" : \"f\",\n            );\n            $memcache = MemcacheSingleton::getInstance();\n            $result = $memcache->get($mckey);\n            if ($result !== FALSE) {\n                $this->table = $result;\n                return;\n            }\n        }\n\n        $this->table = array();\n        $ol = ($only_online) ? \" and online = 't' \" : \"\";\n        $sql_template = <<<EOM\n    WITH attrs as (\n        SELECT t.iemid, array_to_json(array_agg(a.attr)) as attrs,\n        array_to_json(array_agg(a.value)) as attr_values\n        from stations t LEFT JOIN station_attributes a\n        on (t.iemid = a.iemid) WHERE %s {$ol}\n        GROUP by t.iemid)\n    SELECT t.*, ST_X(t.geom) as lon, ST_Y(t.geom) as lat,\n    a.attrs, a.attr_values from stations t JOIN attrs a on\n    (t.iemid = a.iemid) ORDER by t.name ASC\nEOM;\n        $this->dbconn = iemdb(\"mesosite\");\n        $this->stname1 = iem_pg_prepare(\n            $this->dbconn,\n            sprintf($sql_template, \"network = $1\")\n        );\n        $this->stname2 = iem_pg_prepare(\n            $this->dbconn,\n            sprintf($sql_template, \"id = $1\")\n        );\n        if (is_string($a)) {\n            $this->loadNetwork($a, $force3char);\n            $memcache->set($mckey, $this->table, 3600);\n        } else if (is_array($a)) {\n            foreach ($a as $network) {\n                $this->loadNetwork($network, $force3char);\n            }\n        }\n    }\n\n    public function loadNetwork($network, $force3char = FALSE)\n    {\n        $rs = pg_execute($this->dbconn, $this->stname1, array($network));\n        for ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n            $keyid = $row[\"id\"];\n            if ($force3char && strlen($keyid) === 4) {\n                $keyid = substr($keyid, 1, 3);\n            }\n            $this->table[$keyid] = $row;\n            $this->doConversions($keyid);\n        }\n    }\n\n    public function loadStation($id)\n    {\n        $rs = pg_execute($this->dbconn, $this->stname2, array($id));\n        for ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n            $this->table[$row[\"id\"]] = $row;\n            $this->doConversions($row[\"id\"]);\n        }\n        if (pg_num_rows($rs) < 1) {\n            return false;\n        }\n        return true;\n    }\n\n    public function doConversions($id)\n    {\n        if (!is_null($this->table[$id][\"archive_begin\"])) {\n            // can't deal with ancient dates\n            $this->table[$id][\"archive_begin\"] = new DateTime(\n                substr($this->table[$id][\"archive_begin\"], 0, 10)\n            );\n        }\n        if (!is_null($this->table[$id][\"archive_end\"])) {\n            $this->table[$id][\"archive_end\"] = new DateTime($this->table[$id][\"archive_end\"]);\n        }\n        // Make attributes more accessible\n        $this->table[$id][\"attrs\"] = json_decode($this->table[$id][\"attrs\"]);\n        $this->table[$id][\"attr_values\"] = json_decode($this->table[$id][\"attr_values\"]);\n        $this->table[$id][\"attributes\"] = array();\n        foreach ($this->table[$id][\"attrs\"] as $key => $value) {\n            $this->table[$id][\"attributes\"][$value] = $this->table[$id][\"attr_values\"][$key];\n        }\n    }\n\n    public function get($id)\n    {\n        return $this->table[$id];\n    }\n}\n"
  },
  {
    "path": "include/reference.php",
    "content": "<?php\n/* Proxy for pyiem reference data */\nrequire_once dirname(__FILE__) . '/../config/settings.inc.php';\nrequire_once dirname(__FILE__) . '/memcache.php';\n\n$cached_reference = cacheable('include_reference')(function() {\n    global $INTERNAL_BASEURL;\n    $ch = curl_init(\"{$INTERNAL_BASEURL}/json/reference.json\");\n    curl_setopt($ch, CURLOPT_TIMEOUT, 10);\n    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n    $data = curl_exec($ch);\n    $res = json_decode($data, true);\n    if (is_null($res)) {\n        http_response_code(503);\n        die(\"FATAL: Failed to fetch reference data\");\n    }\n    return $res;\n});\n\n$reference = $cached_reference();\n"
  },
  {
    "path": "include/rview_lib.php",
    "content": "<?php\nrequire_once \"../../../../include/iemmap.php\";\n\nfunction determine_time_base($t)\n{\n    /* Round to the nearest 5 minute! */\n    $year = date(\"Y\", $t);\n    $month = date(\"m\", $t);\n    $day = date(\"d\", $t);\n    $hour = date(\"H\", $t);\n    $m = intval(date(\"i\", $t) / 5) * 5;\n    return mktime($hour, $m, 0, $month, $day, $year);\n}\n\n\nfunction mktitle($map, $imgObj, $titlet, $subtitle = \"\", $width = 640)\n{\n    $height = ($subtitle == \"\") ? 36 : 53;\n    $layer = new layerObj($map);\n    $layer->__set(\"status\", MS_ON);\n    $layer->__set(\"type\", MS_LAYER_POLYGON);\n    $layer->__set(\"transform\", MS_OFF);\n    $wkt = \"POLYGON((0 0, 0 $height, $width $height, $width 0, 0 0))\";\n    $layer->addFeature(shapeObj::fromWkt($wkt));\n\n    $layerc0 = new classObj($layer);\n    $layerc0s0 = new styleObj($layerc0);\n    $layerc0s0->color->setRGB(0, 0, 0);\n    $layer->draw($map, $imgObj);\n\n    $tlayer = $map->getLayerByName(\"iem_headerbar_title\");\n    $point = new pointObj();\n    $point->setXY(82, 22);\n    $point->draw($map, $tlayer, $imgObj, 0, $titlet);\n    if ($subtitle != \"\") {\n        $point = new pointObj();\n        $point->setXY(82, 39);\n        $point->draw($map, $tlayer, $imgObj, 1, $subtitle);\n    }\n}\n\nfunction mklogolocal($map, $imgObj)\n{\n\n    $layer = $map->getLayerByName(\"logo\");\n    //$layer->__set(\"transparency\", MS_GD_ALPHA);\n\n    // point feature with text for location\n    $point = new pointObj();\n    $point->setXY(40, 26);\n\n    $point->draw($map, $layer, $imgObj, 0, \"\");\n}\n\nfunction drawStateNEXRAD($hlext)\n{\n    $width = 350;\n    $height = 300;\n\n    $map = new mapObj(\"mosaic.map\");\n    $map->__set(\"width\", $width);\n    $map->__set(\"height\", $height);\n\n    $map->setextent(-96.639706, 40.375437, -90.140061, 43.501196);\n    $map->setProjection(\"init=epsg:4326\");\n\n    $namerica = $map->getLayerByName(\"namerica\");\n    $namerica->__set(\"status\", MS_ON);\n\n    $counties = $map->getLayerByName(\"counties_unproj\");\n    $counties->__set(\"status\", MS_ON);\n\n    $radarL = $map->getLayerByName(\"radar\");\n    $radarL->__set(\"status\", MS_ON);\n\n    $img = $map->prepareImage();\n    $namerica->draw($map, $img);\n    $radarL->draw($map, $img);\n    $counties->draw($map, $img);\n\n    $rect = $map->getLayerByName(\"rect\");\n    $rect->__set(\"status\", MS_ON);\n\n    /** Draw a box for what we are zoomed in on */\n    $rt = new rectObj($hlext[0], $hlext[1], $hlext[2], $hlext[3]);\n    $rt->draw($map, $rect, $img, 0, \" \");\n\n    $url = saveWebImage($img);\n\n    $s = \"<form name=\\\"img\\\" method=\\\"GET\\\" action=\\\"compare.phtml\\\">\";\n\n    $s .= \"<input type=\\\"hidden\\\" name=\\\"ul_x\\\" value=\\\"\" . $map->extent->minx . \"\\\">\n<input type=\\\"hidden\\\" name=\\\"ul_y\\\" value=\\\"\" . $map->extent->maxy . \"\\\">\n<input type=\\\"hidden\\\" name=\\\"lr_x\\\" value=\\\"\" . $map->extent->maxx . \"\\\">\n<input type=\\\"hidden\\\" name=\\\"lr_y\\\" value=\\\"\" . $map->extent->miny . \"\\\">\n<input type=\\\"hidden\\\" name=\\\"map_height\\\" value=\\\"{$height}\\\">\n<input type=\\\"hidden\\\" name=\\\"map_width\\\" value=\\\"{$width}\\\">\";\n    $s .= \"<input border=1 name=\\\"map\\\" type=\\\"image\\\" src=\\\"$url\\\"></form>\";\n\n    return $s;\n}\n\nfunction drawCountyNEXRAD($site, $extents)\n{\n    $width = \"150\";\n    $height = \"150\";\n\n    /** ----------------------- */\n    $map = new mapObj(\"mosaic.map\");\n    $map->__set(\"width\", $width);\n    $map->__set(\"height\", $height);\n\n    $map->setextent($extents[0], $extents[1], $extents[2], $extents[3]);\n    $map->setProjection(\"init=epsg:4326\");\n\n    $namerica = $map->getLayerByName(\"namerica\");\n    $namerica->__set(\"status\", MS_ON);\n    $counties = $map->getLayerByName(\"counties_unproj\");\n    $counties->__set(\"status\", MS_ON);\n\n    $radarL = $map->getLayerByName(\"DMX\");\n    $radarL->__set(\"status\", MS_ON);\n    $radarL->__set(\"data\", \"/mesonet/ldmdata/gis/images/4326/ridge/{$site}/N0B_0.png\");\n\n    $img = $map->prepareImage();\n    $namerica->draw($map, $img);\n    $radarL->draw($map, $img);\n    $counties->draw($map, $img);\n\n    return saveWebImage($img);\n}\n"
  },
  {
    "path": "include/sites.php",
    "content": "<?php\n// Provides a context for PHP pages within the /sites/ IEM website\nrequire_once dirname(__FILE__) . \"/../config/settings.inc.php\";\n// Throttle\nrequire_once dirname(__FILE__) . \"/throttle.php\";\nrequire_once dirname(__FILE__) . \"/database.inc.php\";\nrequire_once dirname(__FILE__) . \"/station.php\";\nrequire_once dirname(__FILE__) . \"/forms.php\";\nrequire_once dirname(__FILE__) . \"/myview.php\";\nrequire_once dirname(__FILE__) . \"/memcache.php\";\n\n\nclass SitesContext\n{\n    public ?string $station = null;\n    public ?string $network = null;\n    public ?array $metadata = null;\n\n    public function printtd($instr, $selected)\n    {\n        $s = \"\";\n        $filename = \"/mesonet/share/pics/{$this->station}/{$this->station}_{$instr}.jpg\";\n        if (file_exists($filename)) {\n            if ($instr == $selected) {\n                $s .= '<td align=\"center\" style=\"background: #ee0;\">'. $instr .'</td>';\n                $s .= \"\\n\";\n            } else {\n                $s .= '<td align=\"center\"><a href=\"pics.php?network=' . $this->network . '&station=' . $this->station . '&dir=' . $instr . '\">' . $instr . '</a></td>';\n                $s .= \"\\n\";\n            }\n        } else {\n            $s .= '<td align=\"center\">'. $instr .'</td>';\n            $s .= \"\\n\";\n        }\n        return $s;\n    }\n}\n\n\nfunction station_helper($station)\n{\n    // Attempt to help the user find this station\n    $iemdb = iemdb(\"mesosite\");\n    $stname = iem_pg_prepare($iemdb, \"SELECT id, name, network from stations \" .\n        \"WHERE id = $1\");\n    $rs = pg_execute($iemdb, $stname, array($station));\n    if (pg_num_rows($rs) == 0) {\n        header(\"Location: locate.php\");\n        die();\n    }\n    $table = <<<EOM\n    <p>Sorry, the requested station identifier and network could not be found\n        within the IEM database.  Here are other network matches for your \n        identifier provided.</p>\n    \n    <table class=\"table table-ruled table-bordered\">\n    <thead><tr><th>ID</th><th>Name</th><th>Network</th></tr></thead>\n    <tbody>\n    EOM;\n    while ($row = pg_fetch_assoc($rs)) {\n        $table .= sprintf(\n            \"<tr><td>%s</td><td><a href=\\\"site.php?network=%s\" .\n                \"&amp;station=%s\\\">%s</a></td><td>%s</td></tr>\",\n            $row[\"id\"],\n            $row[\"network\"],\n            $row[\"id\"],\n            $row[\"name\"],\n            $row[\"network\"]\n        );\n    }\n    $table .= \"</tbody></table>\";\n    $t = new MyView();\n    $t->title = \"Sites\";\n    $t->content = $table;\n\n    $t->render(\"single.phtml\");\n}\n\nfunction get_sites_context()\n{\n    // Return a SitesContext\n    $station = get_str404(\"station\", \"\", 20);\n    $network = get_str404(\"network\", \"\", 14);  // could be 10?\n\n    if ($station == \"\" || $network == \"\") {\n        header(\"Location: /sites/locate.php\");\n        die();\n    }\n    // 28 Jan 2025 temp\n    if ($network == \"IACOCORAHS\"){\n        $network = \"IA_COCORAHS\";\n    }\n\n    $mckey = sprintf(\"/sites/%s/%s\", $network, $station);\n\n    $memcache = MemcacheSingleton::getInstance();\n    $st = $memcache->get($mckey);\n    if ($st === FALSE){\n        $st = new StationData($station, $network);\n        $memcache->set($mckey, $st, 3600);\n    }\n\n    $cities = $st->table;\n    if (!array_key_exists($station, $cities)) {\n        station_helper($station);\n        die();\n    }\n\n    if (!isset($_GET[\"network\"])) {\n        $network = $cities[$station][\"network\"];\n    }\n    $ctx = new SitesContext();\n    $ctx->station = $station;\n    $ctx->network = $network;\n    $ctx->metadata = $cities[$station];\n    return $ctx;\n}\n"
  },
  {
    "path": "include/station.php",
    "content": "<?php\n/* Build Network station tables on demand! */\n\nrequire_once dirname(__FILE__) . \"/network.php\";\n\n\nclass StationData\n{\n    public $table;\n    public $dbconn;\n    public string $stname1;\n    public string $stname2;\n\n    public function __construct($a, $n = \"\")\n    {\n        $this->table = array();\n        $dbconn = iemdb(\"mesosite\");\n        $sql_template = <<<EOM\n    WITH attrs as (\n        SELECT t.iemid, array_to_json(array_agg(a.attr)) as attrs,\n        array_to_json(array_agg(a.value)) as attr_values\n        from stations t LEFT JOIN station_attributes a\n        on (t.iemid = a.iemid) WHERE %s\n        GROUP by t.iemid)\n    SELECT t.*, ST_X(t.geom) as lon, ST_Y(t.geom) as lat,\n    a.attrs, a.attr_values from stations t JOIN attrs a on\n    (t.iemid = a.iemid)\nEOM;\n\n        $this->stname1 = iem_pg_prepare(\n            $dbconn,\n            sprintf($sql_template, \"id = $1 and network = $2\")\n        );\n        $this->stname2 = iem_pg_prepare(\n            $dbconn,\n            sprintf($sql_template, \"id = $1\")\n        );\n\n        if (is_string($a)) {\n            $this->loadStation($dbconn, $a, $n);\n        } else if (is_array($a)) {\n            foreach ($a as $id) {\n                $this->loadStation($dbconn, $id, $n);\n            }\n        }\n    }\n\n    public function loadStation($dbconn, $id, $n = \"\")\n    {\n        if ($n != \"\") {\n            $rs = pg_execute($dbconn, $this->stname1, array($id, $n));\n        } else {\n            $rs = pg_execute($dbconn, $this->stname2, array($id));\n        }\n        for ($i = 0; $row = pg_fetch_assoc($rs); $i++) {\n            $this->table[$row[\"id\"]] = $row;\n            $this->doConversions($row[\"id\"]);\n        }\n        if (pg_num_rows($rs) < 1) {\n            return false;\n        }\n        return true;\n    }\n\n    public function doConversions($id)\n    {\n        if (!is_null($this->table[$id][\"archive_begin\"])) {\n            $this->table[$id][\"archive_begin\"] = new DateTime($this->table[$id][\"archive_begin\"]);\n        }\n        if (!is_null($this->table[$id][\"archive_end\"])) {\n            $this->table[$id][\"archive_end\"] = new DateTime($this->table[$id][\"archive_end\"]);\n        }\n        // Make attributes more accessible\n        $this->table[$id][\"attrs\"] = json_decode($this->table[$id][\"attrs\"]);\n        $this->table[$id][\"attr_values\"] = json_decode($this->table[$id][\"attr_values\"]);\n        $this->table[$id][\"attributes\"] = array();\n        foreach ($this->table[$id][\"attrs\"] as $key => $value) {\n            $this->table[$id][\"attributes\"][$value] = $this->table[$id][\"attr_values\"][$key];\n        }\n    }\n\n    public function get($id)\n    {\n        return $this->table[$id];\n    }\n}\n"
  },
  {
    "path": "include/templates/footer.phtml",
    "content": "<?php\n$jsextra = is_null($this->jsextra) ? '' : $this->jsextra;\nif ($this->iemss){\n    $jsextra .= <<<EOF\n<script src=\"/vendor/openlayers/10.8.0/ol.js\"></script>\n<script src=\"/js/iemss.js?v=4\"></script>\n<script type=\"module\" src=\"/js/form2url.module.js\"></script>\nEOF;\n}\nif ($this->jsani){\n    $jsextra .= <<<EOM\n<script src=\"/vendor/jquery/1.11.3/jquery-1.11.3.min.js\"></script>\n<script src=\"/vendor/jquery-ui/1.12.1/jquery-ui.min.js\"></script>\n<script src=\"/vendor/jsani/2.84/jquery.jsani.min.js\"></script>\n<script src=\"/js/jsani.js?v=2\"></script>\nEOM;\n}\nif ($this->iemselect2) {\n    $jsextra .= <<<EOM\n<script src=\"https://cdn.jsdelivr.net/npm/tom-select@2.4.3/dist/js/tom-select.complete.min.js\"></script>\n<script src=\"/js/select2.js?v=3\"></script>\nEOM;\n}\n\n?>\n<footer>\n    <div class=\"container\" id=\"iem-footer\" aria-label=\"Site footer\">\n        <div class=\"row\">\n\n            <!-- footer-associates -->\n            <section class=\"footer-associates col-sm-12 col-md-3\">\n                <ul>\n                    <li><a href=\"https://iastate.edu\"><img src=\"/vendor/img/isu-stacked.svg\" class=\"wordmark-isu\" alt=\"Iowa State University\"></a></li>\n                    <li><a href=\"https://www.ag.iastate.edu\">College of Ag</a></li>\n                    <li><a href=\"https://www.agron.iastate.edu\">Department of Agronomy</a></li>\n                </ul>\n            </section>\n\n            <!-- footer-contact -->\n            <section class=\"footer-contact col-sm-12 col-md-3\" aria-labelledby=\"footer-contact-heading\">\n                <h2 id=\"footer-contact-heading\" class=\"visually-hidden\">Contact</h2>\n                <address class=\"mb-2\">\n                    <strong>Department of Agronomy</strong><br>\n                    <a href=\"https://maps.google.com/?q=716+Farm+House+Ln+Ames,+IA+50011\">716 Farm House Ln<br>\n                    Ames, IA 50011</a>\n                </address>\n                <a href=\"mailto:akrherz@iastate.edu\">akrherz@iastate.edu</a><br>\n            </section>\n\n            <!-- footer-social -->\n            <section class=\"footer-social col-sm-12 col-md-3\" aria-labelledby=\"footer-social-heading\">\n                <h2 id=\"footer-social-heading\" class=\"visually-hidden\">Social media</h2>\n                <ul class=\" labeled\">\n                <li><a href=\"https://www.facebook.com/IEM-157789644737/\"><i class=\"bi bi-box-arrow-up-right\" aria-hidden=\"true\"></i> Facebook</a></li>\n                <li><a href=\"https://x.com/akrherz\"><i class=\"bi bi-box-arrow-up-right\" aria-hidden=\"true\"></i> Twitter</a></li>\n                <li><a href=\"https://github.com/akrherz/iem\"><i class=\"bi bi-box-arrow-up-right\" aria-hidden=\"true\"></i> Github</a></li>\n                <li><a href=\"https://youtube.com/akrherz\"><i class=\"bi bi-box-arrow-up-right\" aria-hidden=\"true\"></i> YouTube</a></li>\n                <li><a href=\"/rss.php\"><i class=\"bi bi-box-arrow-up-right\" aria-hidden=\"true\"></i> RSS</a></li>\n                </ul>\n            </section>\n\n            <!-- footer-legal -->\n            <section class=\"footer-legal col-sm-12 col-md-3\" aria-labelledby=\"footer-legal-heading\">\n                <h2 id=\"footer-legal-heading\" class=\"visually-hidden\">Legal</h2>\n                <p>Copyright &copy; 2001-<?php echo date(\"Y\"); ?><br>\n                                Iowa State University<br>\n                                of Science and Technology<br>\n                                All rights reserved.</p>\n                <ul>\n                    <li><a href=\"https://www.policy.iastate.edu/policy/discrimination\">Non-discrimination Policy</a></li>\n                    <li><a href=\"https://www.policy.iastate.edu/electronicprivacy\">Privacy Policy</a></li>\n                    <li><a href=\"https://digitalaccess.iastate.edu\">Digital Access &amp; Accessibility</a></li>\n                </ul>\n            </section>\n\n        </div>\n    </div>\n</footer>\n    <script src=\"/vendor/bootstrap/5.3.6/js/bootstrap.bundle.min.js\"></script>\n    <script src=\"/js/iastate-iem.js\"></script>\n\n    <?php echo $jsextra; ?>\n  </body>\n</html>\n"
  },
  {
    "path": "include/templates/full.phtml",
    "content": "<?php include 'header.phtml'; ?>\n<?php include 'navbar.phtml'; ?>\n<main role=\"main\" id=\"main-content\">\n<div class=\"container-fluid\">\n<?php echo $this->content; ?>\n</div><!--/.container-->\n</main>\n<?php include 'footer.phtml'; ?>"
  },
  {
    "path": "include/templates/header.phtml",
    "content": "<?php\nglobal $EXTERNAL_BASEURL;\n$title = is_null($this->title)? 'Iowa Environmental Mesonet': \"IEM :: {$this->title}\";\n// Page should refresh\n$refresh = \"\";\nif ($this->refresh > 0){\n  $refresh = sprintf(\"<meta http-equiv=\\\"refresh\\\" content=\\\"%s;\\\">\",\n    $this->refresh);\n}\n// Include headextra last so that CSS overrides work\n$headextra = \"\";\nif ($this->iemss){\n  $headextra .= <<<EOF\n<link rel=\"stylesheet\" href=\"/vendor/openlayers/10.8.0/ol.css\" type=\"text/css\">\n<link rel=\"stylesheet\" href=\"/css/iemss.css\" type=\"text/css\">\nEOF;\n}\nif ($this->iemselect2) {\n    $headextra .= <<<EOM\n<link href=\"https://cdn.jsdelivr.net/npm/tom-select@2.4.3/dist/css/tom-select.css\" rel=\"stylesheet\">\n<link href=\"https://cdn.jsdelivr.net/npm/tom-select@2.4.3/dist/css/tom-select.bootstrap5.css\" rel=\"stylesheet\">\nEOM;\n}\nif ($this->jsani){\n    $headextra .= <<<EOM\n<link rel=\"stylesheet\" href=\"/vendor/jquery-ui/1.12.1/jquery-ui.min.css\">\n<link rel=\"stylesheet\" href=\"/vendor/jquery-ui/1.12.1/jquery-ui.theme.min.css\">\n<link rel=\"stylesheet\" href=\"/vendor/jsani/2.84/jquery.jsani.min.css\">\nEOM;\n}\n$headextra .= is_null($this->headextra) ? '': $this->headextra;\n?>\n<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <?php echo $refresh; ?>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title><?php echo $title; ?></title>\n    <meta name=\"description\" content=\"Iowa State University, Iowa Environmental Mesonet\">\n    <meta name=\"author\" content=\"daryl herzmann akrherz@iastate.edu\">\n\n    <link href=\"/vendor/bootstrap/5.3.6/css/bootstrap.min.css\" rel=\"stylesheet\">\n    <!-- Bootstrap Icons for UI and navigation -->\n    <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\">\n    <link href=\"/css/iastate-iem.css\" rel=\"stylesheet\">\n\n    <!-- Any page specific headextra content here -->\n    <?php echo $headextra; ?>\n\n    <!-- Essential Social Tags -->\n    <meta property=\"og:title\" content=\"<?php echo $title; ?>\">\n    <meta property=\"og:description\" content=\"<?php echo $this->twitter_description; ?>\">\n    <meta property=\"og:image\" content=\"<?php echo $EXTERNAL_BASEURL . $this->twitter_image; ?>\">\n    <meta property=\"og:url\" content=\"<?php echo $EXTERNAL_BASEURL .htmlentities($_SERVER[\"REQUEST_URI\"]); ?>\">\n    <?php if (!is_null($this->twitter_video)){\n        echo <<<EOM\n    <meta property=\"og:type\" content=\"video\">\n    <meta property=\"og:video\" content=\"{$EXTERNAL_BASEURL}{$this->twitter_video}\">\n    <meta property=\"og:video:type\" content=\"video/mp4\">\n    <meta property=\"og:video:width\" content=\"{$this->twitter_video_width}\">\n    <meta property=\"og:video:height\" content=\"{$this->twitter_video_height}\">\n\nEOM;\n    } ?>\n    <meta name=\"twitter:card\" content=\"<?php echo $this->twitter_card; ?>\">\n\n    <!-- Non-essential -->\n    <meta name=\"twitter:creator\" content=\"@akrherz\">\n    <!-- Le fav and touch icons -->\n    <link rel=\"shortcut icon\" href=\"/favicon.ico\">\n    <link rel=\"apple-touch-icon-precomposed\" sizes=\"144x144\" href=\"/apple-touch-icon-precomposed.png\">\n    <link rel=\"apple-touch-icon-precomposed\" sizes=\"114x114\" href=\"/apple-touch-icon-precomposed.png\">\n    <link rel=\"apple-touch-icon-precomposed\" sizes=\"72x72\" href=\"/apple-touch-icon-precomposed.png\">\n    <link rel=\"apple-touch-icon-precomposed\" href=\"/apple-touch-icon-precomposed.png\">\n  </head>\n\n  <body>\n    <a href=\"#main-content\" class=\"visually-hidden-focusable\">Skip to main content</a>\n"
  },
  {
    "path": "include/templates/navbar.phtml",
    "content": "<header>\n<!-- Mobile navbar: Simple single row with logo, search, and hamburger -->\n<nav class=\"navbar-site d-block d-lg-none\" aria-label=\"Utility navigation\">\n    <div class=\"container\">\n        <div class=\"mobile-navbar-row d-flex align-items-center\">\n            <div class=\"mobile-logo me-2\">\n                <a href=\"/\" title=\"Home\">\n                    <img src=\"/images/logo_small.png\" alt=\"IEM\" height=\"30\">\n                </a>\n            </div>\n            \n            <div class=\"mobile-search flex-fill me-2\">\n                <form action=\"/search\" method=\"GET\" role=\"search\">\n                    <input name=\"q\" aria-label=\"Search\" title=\"Search\" placeholder=\"Search 'DSM' 'autoplot 100' 'street address'\" type=\"text\" class=\"form-control form-control-sm\">\n                </form>\n            </div>\n            \n            <div class=\"mobile-menu d-flex align-items-center\">\n                <!-- Utility toggler removed per design: keep only primary-nav toggler -->\n                <button type=\"button\" class=\"navbar-toggler p-1 ms-2\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbar-menu-collapse\" aria-controls=\"navbar-menu-collapse\" aria-expanded=\"false\" aria-label=\"Toggle primary navigation\">\n                    <span class=\"navbar-toggler-icon\"></span>\n                    <span class=\"visually-hidden\">Primary navigation</span>\n                </button>\n            </div>\n        </div>\n        <!-- Mobile site links (contact, disclaimer, apps) now unified target -->\n        <div class=\"collapse\" id=\"mobile-nav-collapse\">\n            <ul class=\"nav navbar-nav mobile-site-nav\" aria-label=\"Utility navigation links\">\n                <li class=\"nav-item\"><a class=\"nav-link\" href=\"/info/contacts.php\">contact us</a></li>\n                <li class=\"nav-item\"><a class=\"nav-link\" href=\"/disclaimer.php\">disclaimer</a></li>\n                <li class=\"nav-item\"><a class=\"nav-link\" href=\"/apps.php\">apps</a></li>\n            </ul>\n        </div>\n    </div>\n</nav>\n\n<!-- Desktop navbar: ISU wordmark on left, search and links stacked on right -->\n<nav class=\"navbar-site d-none d-lg-block\" aria-label=\"Utility navigation\">\n    <div class=\"container\">\n        <div class=\"desktop-navbar-row\">\n            <div class=\"desktop-wordmark\">\n                <a href=\"/\" title=\"Home\" class=\"wordmark-unit\">\n                    <span class=\"wordmark-isu\">Iowa State University</span>\n                    <span class=\"wordmark-unit-title\">Iowa Environmental Mesonet</span>\n                </a>\n            </div>\n            \n            <div class=\"desktop-right\">\n                <div class=\"desktop-search\">\n                    <form action=\"/search\" method=\"GET\" role=\"search\">\n                        <input name=\"q\" aria-label=\"Search\" title=\"Search\" placeholder=\"Search 'DSM' 'autoplot 100' 'street address'\" type=\"text\" class=\"form-control\">\n                    </form>\n                </div>\n                \n                <div class=\"desktop-links\">\n                    <ul class=\"nav navbar-nav\">\n                        <li class=\"nav-item\"><a class=\"nav-link\" href=\"/info/contacts.php\">contact us</a></li>\n                        <li class=\"nav-item\"><a class=\"nav-link\" href=\"/disclaimer.php\">disclaimer</a></li>\n                        <li class=\"nav-item\"><a class=\"nav-link\" href=\"/apps.php\">apps</a></li>\n                    </ul>\n                </div>\n            </div>\n        </div>\n    </div>\n</nav>\n</header>\n\n<!-- Main navigation menu navbar -->\n<nav class=\"navbar navbar-expand-lg navbar-light bg-white border-bottom\" aria-label=\"Primary navigation\">\n    <div class=\"container\">\n        <!-- Desktop IEM logo (visible in main nav on desktop) -->\n        <div class=\"d-none d-lg-block\">\n            <a href=\"/\"><img style=\"height: 50px;\" alt=\"IEM\" class=\"img-fluid float-start\" src=\"/images/logo_small.png\" /></a>\n        </div>\n        \n    <!-- Main navigation menu (collapsible on mobile) -->\n    <div class=\"navbar-collapse collapse\" id=\"navbar-menu-collapse\">\n            <ul class=\"nav navbar-nav\">\n        \n<li class=\"nav-item dropdown\"><a class=\"nav-link dropdown-toggle\" data-bs-toggle=\"dropdown\" \n    href=\"#\" aria-label=\"Home resources menu\"> <i class=\"bi bi-house-fill\" aria-hidden=\"true\"></i><span class=\"visually-hidden\">Home resources</span> </a>\n    <ul class=\"dropdown-menu\">\n        <li><a class=\"dropdown-item\" href=\"/projects/iao/\">Iowa Atmospheric Observatory</a></li>\n        <li><a class=\"dropdown-item\" href=\"/\">Iowa Environmental Mesonet</a></li>\n        <li><a class=\"dropdown-item\" href=\"https://cocorahs.org\">CoCoRaHS</a></li>\n        <li><a class=\"dropdown-item\" href=\"https://dailyerosion.org\">Daily Erosion Project</a></li>\n        <li><a class=\"dropdown-item\" href=\"https://weather.im\">Weather.IM Project</a></li>\n    </ul></li>\n        \n<?php\n$_pages = json_decode(\n    file_get_contents(dirname(__FILE__) . \"/../../config/navbar.json\"),\n    $assoc=TRUE\n);\n$lookfor = $_SERVER[\"SCRIPT_URL\"];\nforeach($_pages[\"tabs\"] as $bogus => $tab)\n{\n    $s = \"<ul class=\\\"dropdown-menu\\\">\\n\";\n    $hit = FALSE;\n    foreach($tab[\"subs\"] as $bogus2 => $sub)\n    {\n        if ($lookfor == $sub[\"url\"]){\n            $hit = TRUE;\n        }\n        $s .= sprintf(\"<li><a%s class=\\\"dropdown-item%s\\\" href=\\\"%s\\\">%s</a></li>\\n\", \n         \"\",\n         ($lookfor == $sub[\"url\"]) ? \" active\" : \"\",\n           $sub[\"url\"],  $sub[\"title\"] );\n    }\n    echo sprintf(\n        \"<li class=\\\"nav-item dropdown%s\\\">\\n<a class=\\\"nav-link dropdown-toggle\\\" \".\n        \"data-bs-toggle=\\\"dropdown\\\" href=\\\"#\\\">%s</a>\\n\", \n        ($hit) ? \" active\" : \"\", $tab[\"title\"]);\n    echo $s;\n    echo \"</ul>\\n</li>\\n\";\n}\n?>\n</ul>\n        </div>\n    </div>\n</nav>"
  },
  {
    "path": "include/templates/single.phtml",
    "content": "<?php include 'header.phtml'; ?>\n<?php include 'navbar.phtml'; ?>\n<main role=\"main\" id=\"main-content\">\n  <div class=\"container\">\n    <?php\n    if (! is_null($this->content)){\n      echo $this->content;\n    }\n    ?>\n  </div><!--/.container-->\n</main>\n<?php include 'footer.phtml'; ?>"
  },
  {
    "path": "include/templates/sitebar.phtml",
    "content": "<?php\nglobal $metadata;\nglobal $station;\nglobal $network;\nrequire_once dirname(__FILE__).\"/../forms.php\";\n?>\n<div class=\"hidden-print\">\n<form method=\"GET\" name=\"automatic\">\n<?php\nif (isset($savevars)){\n    foreach($savevars as $k => $v){\n        echo sprintf(\"<input type=\\\"hidden\\\" value=\\\"%s\\\" name=\\\"%s\\\" />\",\n        $v, $k);\n    }\n}\nif (isset($_REQUEST[\"prod\"])){\n    echo \"<input type='hidden' name='prod' value='\". xssafe($_REQUEST[\"prod\"]) .\"'>\\n\";\n}\nif (isset($_REQUEST[\"month\"])){\n    echo \"<input type='hidden' name='month' value='\". xssafe($_REQUEST[\"month\"]) .\"'>\\n\";\n}\nif (isset($_REQUEST[\"year\"])){\n    echo \"<input type='hidden' name='year' value='\". xssafe($_REQUEST[\"year\"]) .\"'>\\n\";\n}\nif (isset($_REQUEST[\"day\"])){\n    echo \"<input type='hidden' name='day' value='\". xssafe($_REQUEST[\"day\"]) .\"'>\\n\";\n}\n?>\n<input type=\"hidden\" name=\"network\" value=\"<?php echo $network; ?>\">\n<ol class=\"breadcrumb\">\n<li class=\"breadcrumb-item\"><a href=\"/sites/locate.php\">Station Data &amp; Metadata</a></li>\n<li class=\"breadcrumb-item\"><a href=\"/sites/locate.php?network=<?php echo $network; ?>\"><?php echo $network; ?></a></li>\n</ol>\n\n<div class=\"d-flex align-items-center gap-2 mb-3\">\n    <label for=\"station-select\" class=\"form-label mb-0\">Select Station:</label>\n    <?php echo networkSelectAuto($network, $station); ?>\n    <input type=\"submit\" class=\"btn btn-primary\" value=\"Change Station\" />\n    <span class=\"text-muted\">or</span>\n    <a href=\"locate.php?network=<?php echo $network; ?>\" class=\"btn btn-outline-secondary btn-sm\">Select from map</a>\n</div>\n</form>\n\n<div class=\"d-flex flex-wrap gap-2 mb-3\">\n<?php\n$o = Array(\n  \"base\" => Array(\"name\" => \"Information\", \"uri\" => \"site.php?\",\n          \"metaok\" => TRUE, \"icon\" => \"info-circle\"),\n  \"current\" => Array(\"name\" => \"Last Ob\", \"uri\" => \"current.php?\",\n          \"icon\" => \"clock\"),\n  \"porclimo\" => Array(\"name\" => \"Daily Climatology\", \"uri\" => \"porclimo.php?\",\n          \"icon\" => \"table\", \"metaok\" => TRUE),\n  \"pics\" => Array(\"name\" => \"Photographs\", \"uri\" => \"pics.php?\",\n          \"icon\" => \"camera\"),\n  \"cal\" => Array(\"name\" => \"Calibration\", \"uri\" => \"cal.phtml?\",\n        \"icon\" => \"wrench\",\n        \"networks\" => Array(\"IA_ASOS\", \"IA_RWIS\", \"ISUAG\", \"ISUSM\")),\n  \"meteo\" => Array(\"name\" => \"Meteogram\", \"uri\" => \"meteo.php?\",\n          \"icon\" => \"graph-up\"),\n  \"tables\" => Array(\"name\" => \"Network Table\", \"uri\" => \"networks.php?\",\n          \"metaok\" => TRUE, \"icon\" => \"table\"),\n  \"neighbors\" => Array(\"name\" => \"Neighbors\", \"uri\" => \"neighbors.php?\",\n          \"metaok\" => TRUE, \"icon\" => \"people\"),\n  \"monthsum\" => Array(\"name\" => \"Monthly Summaries\",\n          \"uri\" => \"monthlysum.php?\", \"icon\" => \"calendar-month\"),\n  \"obhistory\" => Array(\"name\" => \"Observation History\",\n          \"uri\" => \"obhistory.php?\", \"icon\" => \"clock-history\"),\n  \"windrose\" => Array(\"name\" => \"Wind Roses\",\n          \"uri\" => \"windrose.phtml?\", \"icon\" => \"diagram-3\"),\n  \"custom_windrose\" => Array(\"name\" => \"Custom Wind Roses\",\n          \"uri\" => \"dyn_windrose.phtml?\", \"icon\" => \"diagram-3\"),\n  \"calendar\" => Array(\"name\" => \"Data Calendar\", \"uri\" => \"hist.phtml?\",\n          \"icon\" => \"calendar\", \"metaok\" => TRUE),\n);\n\nforeach($o as $key => $val)\n{\n    if (($key == \"meteo\") && preg_match('/COOP/', $network) > 0){\n        continue;\n    }\n    if (($key == \"obhistory\") && preg_match('/COCORAHS/', $network) > 0){\n        continue;\n    }\n    if (($key == \"porclimo\") && (preg_match('/CLIMATE/', $network) == 0)){\n        continue;\n    }\n     if ((array_key_exists(\"azos\", $val) &&  preg_match('/ASOS|ISUSM/', $network) <= 0) &&\n        (array_key_exists(\"rwis\", $val) &&  preg_match('/RWIS/', $network) <= 0)){\n        continue;\n    }\n    if (array_key_exists(\"networks\", $val) && !in_array($network, $val[\"networks\"])){\n        continue;\n    }\n    // network has no wind direction\n    if ($network == \"USCRN\" and ($key == 'custom_windrose' || $key == 'windrose')){\n        continue;\n    }\n    // Do not display links to pages that only work for sites that produce\n    // data that we consume!\n    if ($network == 'RAOB' && $key == 'custom_windrose'){\n\n    }\n    else if ($metadata[\"metasite\"] == 't' && ! array_key_exists(\"metaok\", $val)){\n        continue;\n    }\n      $uri = sprintf(\"%sstation=%s&amp;network=%s\", $val[\"uri\"], $station, $network);\n      $active = ($this->sites_current == $key) ? \" active\": \"\";\n    echo sprintf(\"<a href=\\\"%s\\\" class=\\\"btn btn-outline-primary%s\\\">\".\n          \"<i class=\\\"bi bi-%s me-1\\\" aria-hidden=\\\"true\\\"></i><span class=\\\"visually-hidden\\\">%s</span>%s</a> \",\n          $uri, $active, $val[\"icon\"], ucfirst($val[\"icon\"]), $val[\"name\"]);\n}\n\nif (preg_match('/ASOS/', $network) > 0){\n    if ($metadata[\"country\"] == \"US\") {\n        $uri = sprintf(\"/sites/scp.php?station=%s&amp;network=%s\", $station, $network);\n    echo sprintf(\"<a href=\\\"%s\\\" class=\\\"btn btn-outline-primary\\\"><i class=\\\"bi bi-cloud me-1\\\" aria-hidden=\\\"true\\\"></i><span class=\\\"visually-hidden\\\">Cloud</span>Satellite Cloud Product</a> \",\n        $uri);\n    }\n    $uri = sprintf(\"/request/download.phtml?network=%s\", $network);\n    echo sprintf(\"<a href=\\\"%s\\\" class=\\\"btn btn-outline-primary\\\"><i class=\\\"bi bi-download me-1\\\" aria-hidden=\\\"true\\\"></i><span class=\\\"visually-hidden\\\">Download</span>Download</a> \",\n            $uri);\n    // TAF\n    if (array_key_exists(\"HASTAF\", $metadata[\"attributes\"])){\n        echo sprintf(\n            '<a href=\"/sites/taf.php?station=%s&amp;network=%s\" '.\n            'class=\"btn btn-outline-primary\"><i class=\"bi bi-cloud me-1\" aria-hidden=\"true\"></i><span class=\"visually-hidden\">Cloud</span>Terminal Aerodome Forecast</a> ',\n            $station, $network);\n    }\n}elseif (preg_match('/DCP/', $network) > 0){\n    $uri = sprintf(\"/request/dcp/fe.phtml?network=%s\", $network);\n    echo sprintf(\"<a href=\\\"%s\\\" class=\\\"btn btn-outline-primary\\\"><i class=\\\"bi bi-download me-1\\\" aria-hidden=\\\"true\\\"></i><span class=\\\"visually-hidden\\\">Download</span>Download</a> \",\n            $uri);\n\n}elseif (preg_match('/RWIS/', $network) > 0){\n    $uri = sprintf(\"/request/rwis/fe.phtml?network=%s\", $network);\n    echo sprintf(\n        \"<a href=\\\"%s\\\" class=\\\"btn btn-outline-primary\\\">\".\n        \"<i class=\\\"bi bi-download me-1\\\" aria-hidden=\\\"true\\\"></i>\".\n        \"<span class=\\\"visually-hidden\\\">Download</span>Download</a> \",\n        $uri);\n}\n?>\n</div>\n</div>\n"
  },
  {
    "path": "include/templates/sites.phtml",
    "content": "<?php \ninclude 'header.phtml'; \ninclude 'navbar.phtml';\necho \"<main role=\\\"main\\\" id=\\\"main-content\\\">\";\necho \"<div class=\\\"container-fluid\\\">\";\n\ninclude 'sitebar.phtml';\n\nif (array_key_exists('north', $this->vars)){\n    echo \"<div class=\\\"row\\\"><div class=\\\"col-md-12\\\">\\n\";\n    echo $this->vars['north'];\n    echo \"</div></div>\\n\";\n}\nif (array_key_exists('east', $this->vars) && \n    array_key_exists('west', $this->vars)){\n    echo \"<div class=\\\"row\\\"><div class=\\\"col-md-6\\\">\\n\";\n    echo $this->vars['west'];\n    echo \"</div><div class=\\\"col-md-6\\\">\\n\";\n    echo $this->vars['east'];\n    echo \"</div></div>\\n\";\n}\nif (!is_null($this->content)){\n  echo \"<div class=\\\"row\\\"><div class=\\\"col-md-12\\\">\\n\";\n  echo $this->content;\n  echo \"</div></div>\\n\";\n}\nif (array_key_exists('south', $this->vars)){\n    echo \"<div class=\\\"row\\\"><div class=\\\"col-md-12\\\">\\n\";\n    echo $this->vars['south'];\n    echo \"</div></div>\\n\";\n}\necho \"</div><!--/.container-->\";\necho \"</main>\";\ninclude 'footer.phtml';\n"
  },
  {
    "path": "include/templates/sortables.phtml",
    "content": "<?php include 'header.phtml'; ?>\n<?php include 'navbar.phtml'; ?>\n<main role=\"main\" id=\"main-content\">\n<div class=\"container-fluid\">\n<?php echo $this->breadcrumbs; ?>\n<div class=\"mb-4\">\n  <h2 class=\"h5\">View Sortable Currents For Network</h2>\n  <div class=\"row g-2\">\n    <?php\n    $d = Array(\n      \"ASOS\" => Array(\"url\" => \"/ASOS/current.phtml\"),\n      \"CoCoRaHS\" => Array(\"url\" => \"/cocorahs/current.phtml\"),\n      \"COOP\" => Array(\"url\" => \"/COOP/current.phtml\"),\n      \"Cellular COOP\" => Array(\"url\" => \"/nws/ccoop_current.php\"),\n      \"DCP\" => Array(\"url\" => \"/DCP/current.phtml\"),\n      \"ISU Soil Moisture\" => Array(\"url\" => \"/agclimate/current.phtml\"),\n      \"Other\" => Array(\"url\" => \"/other/current.phtml\"),\n      \"SCAN\" => Array(\"url\" => \"/scan/current.phtml\"),\n      \"My Favorites\" => Array(\"url\" => \"/my/current.phtml\"),\n      \"By State\" => Array(\"url\" => \"/current/all.phtml\"),\n      \"RWIS\" => Array(\"url\" => \"/RWIS/current.phtml\"),\n      \"RWIS Surface\" => Array(\"url\" => \"/RWIS/currentSF.phtml\"),\n      \"RWIS Traffic\" => Array(\"url\" => \"/RWIS/traffic.phtml\"),\n      \"RWIS Soil\" => Array(\"url\" => \"/RWIS/soil.phtml\"),\n      \"By NWS WFO\" => Array(\"url\" => \"/nws/obs.php\"),\n      \"USCRN\" => Array(\"url\" => \"/current/uscrn.phtml\"),\n    );\n    foreach($d as $key => $value){\n      $active = ($this->current_network == $key) ? \" btn-primary\" : \" btn-outline-primary\";\n  echo \"<div class=\\\"col-6 col-md-3 col-lg-2\\\"><a href=\\\"{$value['url']}\\\" class=\\\"btn{$active} w-100 mb-2 text-truncate\\\" title=\\\"{$key}\\\">{$key}</a></div>\";\n    }\n    ?>\n  </div>\n</div>\n<?php \nif (!is_null($this->content)){\n  echo \"<div class=\\\"row\\\"><div class=\\\"col-md-12\\\">\\n\";\n  echo $this->content;\n  echo \"</div></div>\\n\";\n}\n?>\n</div><!--/.container-->\n</main>\n<?php include 'footer.phtml'; ?>"
  },
  {
    "path": "include/throttle.php",
    "content": "<?php\n// Throttle the script kiddies.\nrequire_once __DIR__ . '/mlib.php';\nrequire_once __DIR__ . '/memcache.php';\n\n// check if THROTTLE_APP is defined and use it as the key, if so\nif (defined(\"THROTTLE_APP\")) {\n    $key = sprintf(\"throttle/%s\", THROTTLE_APP);\n} else {\n    $key = sprintf(\"throttle/%s\", getClientIp());\n}\n$concurrency_limit = defined(\"THROTTLE_LIMIT\") ? max(1, (int) THROTTLE_LIMIT) : 5;\n\n// Need to do a custom memcache with BinaryProtocol\n$memcache = MemcacheSingleton::getInstance();\nregister_shutdown_function(function () use ($memcache, $key) {\n    $memcache->decrement($key);\n});\nif ($memcache->increment($key, 1, 0, 300) > $concurrency_limit) {\n    http_response_code(429);\n    die('429: Too Many Requests');\n}\n"
  },
  {
    "path": "include/vendor/abraham/twitteroauth/LICENSE.md",
    "content": "Copyright (c) 2009 Abraham Williams - http://abrah.am - abraham@abrah.am\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "include/vendor/abraham/twitteroauth/autoload.php",
    "content": "<?php\n\n/**\n * Use to autoload needed classes without Composer.\n *\n * @param string $class The fully-qualified class name.\n * @return void\n */\nspl_autoload_register(function ($class) {\n    // project-specific namespace prefix\n    $prefix = 'Abraham\\\\TwitterOAuth\\\\';\n\n    // base directory for the namespace prefix\n    $base_dir = __DIR__ . '/src/';\n\n    // does the class use the namespace prefix?\n    $len = strlen($prefix);\n    if (strncmp($prefix, $class, $len) !== 0) {\n        // no, move to the next registered autoloader\n        return;\n    }\n\n    // get the relative class name\n    $relative_class = substr($class, $len);\n\n    // replace the namespace prefix with the base directory, replace namespace\n    // separators with directory separators in the relative class name, append\n    // with .php\n    $file = $base_dir . str_replace('\\\\', '/', $relative_class) . '.php';\n\n    // if the file exists, require it\n    if (file_exists($file)) {\n        require $file;\n    }\n});\n"
  },
  {
    "path": "include/vendor/abraham/twitteroauth/composer.json",
    "content": "{\n  \"name\": \"abraham/twitteroauth\",\n  \"type\": \"library\",\n  \"description\": \"The most popular PHP library for use with the Twitter OAuth REST API.\",\n  \"keywords\": [\n    \"twitter\",\n    \"api\",\n    \"oauth\",\n    \"rest\",\n    \"social\",\n    \"twitter api\",\n    \"twitter oauth\"\n  ],\n  \"license\": \"MIT\",\n  \"homepage\": \"https://twitteroauth.com\",\n  \"authors\": [\n    {\n      \"name\": \"Abraham Williams\",\n      \"email\": \"abraham@abrah.am\",\n      \"homepage\": \"https://abrah.am\",\n      \"role\": \"Developer\"\n    }\n  ],\n  \"support\": {\n    \"source\": \"https://github.com/abraham/twitteroauth\",\n    \"issues\": \"https://github.com/abraham/twitteroauth/issues\"\n  },\n  \"repositories\": [\n    {\n      \"type\": \"git\",\n      \"url\": \"https://github.com/morozov/php-vcr\"\n    },\n    {\n      \"type\": \"git\",\n      \"url\": \"https://github.com/abraham/phpunit-testlistener-vcr\"\n    }\n  ],\n  \"require\": {\n    \"php\": \"^7.4 || ^8.0 || ^8.1\",\n    \"ext-curl\": \"*\",\n    \"composer/ca-bundle\": \"^1.2\"\n  },\n  \"require-dev\": {\n    \"phpunit/phpunit\": \"^8 || ^9\",\n    \"squizlabs/php_codesniffer\": \"^3\",\n    \"phpmd/phpmd\": \"^2\",\n    \"php-vcr/php-vcr\": \"^1\",\n    \"php-vcr/phpunit-testlistener-vcr\": \"dev-php-8\"\n  },\n  \"autoload\": {\n    \"psr-4\": {\n      \"Abraham\\\\TwitterOAuth\\\\\": \"src\"\n    }\n  }\n}\n"
  },
  {
    "path": "include/vendor/abraham/twitteroauth/src/Config.php",
    "content": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Abraham\\TwitterOAuth;\n\n/**\n * Handle setting and storing config for TwitterOAuth.\n *\n * @author Abraham Williams <abraham@abrah.am>\n */\nclass Config\n{\n    // Update extension function when updating this list.\n    private const SUPPORTED_VERSIONS = ['1.1', '2'];\n\n    /** @var int How long to wait for a response from the API */\n    protected $timeout = 5;\n    /** @var int how long to wait while connecting to the API */\n    protected $connectionTimeout = 5;\n    /** @var int How many times we retry request when API is down */\n    protected $maxRetries = 0;\n    /** @var int Delay in seconds before we retry the request */\n    protected $retriesDelay = 1;\n    /** @var string Version of the Twitter API requests should target */\n    protected $apiVersion = '1.1';\n\n    /**\n     * Decode JSON Response as associative Array\n     *\n     * @see http://php.net/manual/en/function.json-decode.php\n     *\n     * @var bool\n     */\n    protected $decodeJsonAsArray = false;\n    /** @var string User-Agent header */\n    protected $userAgent = 'TwitterOAuth (+https://twitteroauth.com)';\n    /** @var array Store proxy connection details */\n    protected $proxy = [];\n\n    /** @var bool Whether to encode the curl requests with gzip or not */\n    protected $gzipEncoding = true;\n\n    /** @var integer Size for Chunked Uploads */\n    protected $chunkSize = 250000; // 0.25 MegaByte\n\n    /**\n     * Set the the Twitter API version.\n     *\n     * @param string $apiVersion\n     */\n    public function setApiVersion(string $apiVersion): void\n    {\n        if (in_array($apiVersion, self::SUPPORTED_VERSIONS, true)) {\n            $this->apiVersion = $apiVersion;\n        } else {\n            throw new TwitterOAuthException('Unsupported API version');\n        }\n    }\n\n    /**\n     * Set the connection and response timeouts.\n     *\n     * @param int $connectionTimeout\n     * @param int $timeout\n     */\n    public function setTimeouts(int $connectionTimeout, int $timeout): void\n    {\n        $this->connectionTimeout = $connectionTimeout;\n        $this->timeout = $timeout;\n    }\n\n    /**\n     *  Set the number of times to retry on error and how long between each.\n     *\n     * @param int $maxRetries\n     * @param int $retriesDelay\n     */\n    public function setRetries(int $maxRetries, int $retriesDelay): void\n    {\n        $this->maxRetries = $maxRetries;\n        $this->retriesDelay = $retriesDelay;\n    }\n\n    /**\n     * @param bool $value\n     */\n    public function setDecodeJsonAsArray(bool $value): void\n    {\n        $this->decodeJsonAsArray = $value;\n    }\n\n    /**\n     * @param string $userAgent\n     */\n    public function setUserAgent(string $userAgent): void\n    {\n        $this->userAgent = $userAgent;\n    }\n\n    /**\n     * @param array $proxy\n     */\n    public function setProxy(array $proxy): void\n    {\n        $this->proxy = $proxy;\n    }\n\n    /**\n     * Whether to encode the curl requests with gzip or not.\n     *\n     * @param boolean $gzipEncoding\n     */\n    public function setGzipEncoding(bool $gzipEncoding): void\n    {\n        $this->gzipEncoding = $gzipEncoding;\n    }\n\n    /**\n     * Set the size of each part of file for chunked media upload.\n     *\n     * @param int $value\n     */\n    public function setChunkSize(int $value): void\n    {\n        $this->chunkSize = $value;\n    }\n}\n"
  },
  {
    "path": "include/vendor/abraham/twitteroauth/src/Consumer.php",
    "content": "<?php\n\n/**\n * The MIT License\n * Copyright (c) 2007 Andy Smith\n */\n\ndeclare(strict_types=1);\n\nnamespace Abraham\\TwitterOAuth;\n\nclass Consumer\n{\n    /** @var string  */\n    public $key;\n    /** @var string  */\n    public $secret;\n    /** @var string|null  */\n    public $callbackUrl;\n\n    /**\n     * @param string|null $key\n     * @param string|null $secret\n     * @param null $callbackUrl\n     */\n    public function __construct(\n        ?string $key,\n        ?string $secret,\n        ?string $callbackUrl = null\n    ) {\n        $this->key = $key;\n        $this->secret = $secret;\n        $this->callbackUrl = $callbackUrl;\n    }\n\n    /**\n     * @return string\n     */\n    public function __toString()\n    {\n        return \"Consumer[key=$this->key,secret=$this->secret]\";\n    }\n}\n"
  },
  {
    "path": "include/vendor/abraham/twitteroauth/src/HmacSha1.php",
    "content": "<?php\n\n/**\n * The MIT License\n * Copyright (c) 2007 Andy Smith\n */\n\ndeclare(strict_types=1);\n\nnamespace Abraham\\TwitterOAuth;\n\n/**\n * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]\n * where the Signature Base String is the text and the key is the concatenated values (each first\n * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'\n * character (ASCII code 38) even if empty.\n *   - Chapter 9.2 (\"HMAC-SHA1\")\n */\nclass HmacSha1 extends SignatureMethod\n{\n    /**\n     * {@inheritDoc}\n     */\n    public function getName()\n    {\n        return 'HMAC-SHA1';\n    }\n\n    /**\n     * {@inheritDoc}\n     */\n    public function buildSignature(\n        Request $request,\n        Consumer $consumer,\n        Token $token = null\n    ): string {\n        $signatureBase = $request->getSignatureBaseString();\n\n        $parts = [$consumer->secret, null !== $token ? $token->secret : ''];\n\n        $parts = Util::urlencodeRfc3986($parts);\n        $key = implode('&', $parts);\n\n        return base64_encode(hash_hmac('sha1', $signatureBase, $key, true));\n    }\n}\n"
  },
  {
    "path": "include/vendor/abraham/twitteroauth/src/Request.php",
    "content": "<?php\n\n/**\n * The MIT License\n * Copyright (c) 2007 Andy Smith\n */\n\ndeclare(strict_types=1);\n\nnamespace Abraham\\TwitterOAuth;\n\nclass Request\n{\n    protected $parameters;\n    protected $httpMethod;\n    protected $httpUrl;\n    protected $json;\n    public static $version = '1.0';\n\n    /**\n     * Constructor\n     *\n     * @param string     $httpMethod\n     * @param string     $httpUrl\n     * @param array|null $parameters\n     */\n    public function __construct(\n        string $httpMethod,\n        string $httpUrl,\n        ?array $parameters = []\n    ) {\n        $parameters = array_merge(\n            Util::parseParameters(parse_url($httpUrl, PHP_URL_QUERY)),\n            $parameters,\n        );\n        $this->parameters = $parameters;\n        $this->httpMethod = $httpMethod;\n        $this->httpUrl = $httpUrl;\n    }\n\n    /**\n     * pretty much a helper function to set up the request\n     *\n     * @param Consumer $consumer\n     * @param Token    $token\n     * @param string   $httpMethod\n     * @param string   $httpUrl\n     * @param array    $parameters\n     *\n     * @return Request\n     */\n    public static function fromConsumerAndToken(\n        Consumer $consumer,\n        Token $token = null,\n        string $httpMethod,\n        string $httpUrl,\n        array $parameters = [],\n        $json = false\n    ) {\n        $defaults = [\n            'oauth_version' => Request::$version,\n            'oauth_nonce' => Request::generateNonce(),\n            'oauth_timestamp' => time(),\n            'oauth_consumer_key' => $consumer->key,\n        ];\n        if (null !== $token) {\n            $defaults['oauth_token'] = $token->key;\n        }\n\n        // The json payload is not included in the signature on json requests,\n        // therefore it shouldn't be included in the parameters array.\n        if ($json) {\n            $parameters = $defaults;\n        } else {\n            $parameters = array_merge($defaults, $parameters);\n        }\n\n        return new Request($httpMethod, $httpUrl, $parameters);\n    }\n\n    /**\n     * @param string $name\n     * @param string $value\n     */\n    public function setParameter(string $name, string $value)\n    {\n        $this->parameters[$name] = $value;\n    }\n\n    /**\n     * @param string $name\n     *\n     * @return string|null\n     */\n    public function getParameter(string $name): ?string\n    {\n        return isset($this->parameters[$name])\n            ? $this->parameters[$name]\n            : null;\n    }\n\n    /**\n     * @return array\n     */\n    public function getParameters(): array\n    {\n        return $this->parameters;\n    }\n\n    /**\n     * @param string $name\n     */\n    public function removeParameter(string $name): void\n    {\n        unset($this->parameters[$name]);\n    }\n\n    /**\n     * The request parameters, sorted and concatenated into a normalized string.\n     *\n     * @return string\n     */\n    public function getSignableParameters(): string\n    {\n        // Grab all parameters\n        $params = $this->parameters;\n\n        // Remove oauth_signature if present\n        // Ref: Spec: 9.1.1 (\"The oauth_signature parameter MUST be excluded.\")\n        if (isset($params['oauth_signature'])) {\n            unset($params['oauth_signature']);\n        }\n\n        return Util::buildHttpQuery($params);\n    }\n\n    /**\n     * Returns the base string of this request\n     *\n     * The base string defined as the method, the url\n     * and the parameters (normalized), each urlencoded\n     * and the concated with &.\n     *\n     * @return string\n     */\n    public function getSignatureBaseString(): string\n    {\n        $parts = [\n            $this->getNormalizedHttpMethod(),\n            $this->getNormalizedHttpUrl(),\n            $this->getSignableParameters(),\n        ];\n\n        $parts = Util::urlencodeRfc3986($parts);\n\n        return implode('&', $parts);\n    }\n\n    /**\n     * Returns the HTTP Method in uppercase\n     *\n     * @return string\n     */\n    public function getNormalizedHttpMethod(): string\n    {\n        return strtoupper($this->httpMethod);\n    }\n\n    /**\n     * parses the url and rebuilds it to be\n     * scheme://host/path\n     *\n     * @return string\n     */\n    public function getNormalizedHttpUrl(): string\n    {\n        $parts = parse_url($this->httpUrl);\n\n        $scheme = $parts['scheme'];\n        $host = strtolower($parts['host']);\n        $path = $parts['path'];\n\n        return \"$scheme://$host$path\";\n    }\n\n    /**\n     * Builds a url usable for a GET request\n     *\n     * @return string\n     */\n    public function toUrl(): string\n    {\n        $postData = $this->toPostdata();\n        $out = $this->getNormalizedHttpUrl();\n        if ($postData) {\n            $out .= '?' . $postData;\n        }\n        return $out;\n    }\n\n    /**\n     * Builds the data one would send in a POST request\n     *\n     * @return string\n     */\n    public function toPostdata(): string\n    {\n        return Util::buildHttpQuery($this->parameters);\n    }\n\n    /**\n     * Builds the Authorization: header\n     *\n     * @return string\n     * @throws TwitterOAuthException\n     */\n    public function toHeader(): string\n    {\n        $first = true;\n        $out = 'Authorization: OAuth';\n        foreach ($this->parameters as $k => $v) {\n            if (substr($k, 0, 5) != 'oauth') {\n                continue;\n            }\n            if (is_array($v)) {\n                throw new TwitterOAuthException(\n                    'Arrays not supported in headers',\n                );\n            }\n            $out .= $first ? ' ' : ', ';\n            $out .=\n                Util::urlencodeRfc3986($k) .\n                '=\"' .\n                Util::urlencodeRfc3986($v) .\n                '\"';\n            $first = false;\n        }\n        return $out;\n    }\n\n    /**\n     * @return string\n     */\n    public function __toString(): string\n    {\n        return $this->toUrl();\n    }\n\n    /**\n     * @param SignatureMethod $signatureMethod\n     * @param Consumer        $consumer\n     * @param Token           $token\n     */\n    public function signRequest(\n        SignatureMethod $signatureMethod,\n        Consumer $consumer,\n        Token $token = null\n    ) {\n        $this->setParameter(\n            'oauth_signature_method',\n            $signatureMethod->getName(),\n        );\n        $signature = $this->buildSignature($signatureMethod, $consumer, $token);\n        $this->setParameter('oauth_signature', $signature);\n    }\n\n    /**\n     * @param SignatureMethod $signatureMethod\n     * @param Consumer        $consumer\n     * @param Token           $token\n     *\n     * @return string\n     */\n    public function buildSignature(\n        SignatureMethod $signatureMethod,\n        Consumer $consumer,\n        Token $token = null\n    ): string {\n        return $signatureMethod->buildSignature($this, $consumer, $token);\n    }\n\n    /**\n     * @return string\n     */\n    public static function generateNonce(): string\n    {\n        return md5(microtime() . mt_rand());\n    }\n}\n"
  },
  {
    "path": "include/vendor/abraham/twitteroauth/src/Response.php",
    "content": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Abraham\\TwitterOAuth;\n\n/**\n * The result of the most recent API request.\n *\n * @author Abraham Williams <abraham@abrah.am>\n */\nclass Response\n{\n    /** @var string|null API path from the most recent request */\n    private $apiPath;\n    /** @var int HTTP status code from the most recent request */\n    private $httpCode = 0;\n    /** @var array HTTP headers from the most recent request */\n    private $headers = [];\n    /** @var array|object Response body from the most recent request */\n    private $body = [];\n    /** @var array HTTP headers from the most recent request that start with X */\n    private $xHeaders = [];\n\n    /**\n     * @param string $apiPath\n     */\n    public function setApiPath(string $apiPath): void\n    {\n        $this->apiPath = $apiPath;\n    }\n\n    /**\n     * @return string|null\n     */\n    public function getApiPath(): ?string\n    {\n        return $this->apiPath;\n    }\n\n    /**\n     * @param array|object $body\n     */\n    public function setBody($body)\n    {\n        $this->body = $body;\n    }\n\n    /**\n     * @return array|object|string\n     */\n    public function getBody()\n    {\n        return $this->body;\n    }\n\n    /**\n     * @param int $httpCode\n     */\n    public function setHttpCode(int $httpCode): void\n    {\n        $this->httpCode = $httpCode;\n    }\n\n    /**\n     * @return int\n     */\n    public function getHttpCode(): int\n    {\n        return $this->httpCode;\n    }\n\n    /**\n     * @param array $headers\n     */\n    public function setHeaders(array $headers): void\n    {\n        foreach ($headers as $key => $value) {\n            if (substr($key, 0, 1) == 'x') {\n                $this->xHeaders[$key] = $value;\n            }\n        }\n        $this->headers = $headers;\n    }\n\n    /**\n     * @return array\n     */\n    public function getsHeaders(): array\n    {\n        return $this->headers;\n    }\n\n    /**\n     * @param array $xHeaders\n     */\n    public function setXHeaders(array $xHeaders = []): void\n    {\n        $this->xHeaders = $xHeaders;\n    }\n\n    /**\n     * @return array\n     */\n    public function getXHeaders(): array\n    {\n        return $this->xHeaders;\n    }\n}\n"
  },
  {
    "path": "include/vendor/abraham/twitteroauth/src/SignatureMethod.php",
    "content": "<?php\n\n/**\n * The MIT License\n * Copyright (c) 2007 Andy Smith\n */\n\ndeclare(strict_types=1);\n\nnamespace Abraham\\TwitterOAuth;\n\n/**\n * A class for implementing a Signature Method\n * See section 9 (\"Signing Requests\") in the spec\n */\nabstract class SignatureMethod\n{\n    /**\n     * Needs to return the name of the Signature Method (ie HMAC-SHA1)\n     *\n     * @return string\n     */\n    abstract public function getName();\n\n    /**\n     * Build up the signature\n     * NOTE: The output of this function MUST NOT be urlencoded.\n     * the encoding is handled in OAuthRequest when the final\n     * request is serialized\n     *\n     * @param Request $request\n     * @param Consumer $consumer\n     * @param Token $token\n     *\n     * @return string\n     */\n    abstract public function buildSignature(\n        Request $request,\n        Consumer $consumer,\n        Token $token = null\n    );\n\n    /**\n     * Verifies that a given signature is correct\n     *\n     * @param Request $request\n     * @param Consumer $consumer\n     * @param Token $token\n     * @param string $signature\n     *\n     * @return bool\n     */\n    public function checkSignature(\n        Request $request,\n        Consumer $consumer,\n        Token $token,\n        string $signature\n    ): bool {\n        $built = $this->buildSignature($request, $consumer, $token);\n\n        // Check for zero length, although unlikely here\n        if (strlen($built) == 0 || strlen($signature) == 0) {\n            return false;\n        }\n\n        if (strlen($built) != strlen($signature)) {\n            return false;\n        }\n\n        // Avoid a timing leak with a (hopefully) time insensitive compare\n        $result = 0;\n        for ($i = 0; $i < strlen($signature); $i++) {\n            $result |= ord($built[$i]) ^ ord($signature[$i]);\n        }\n\n        return $result == 0;\n    }\n}\n"
  },
  {
    "path": "include/vendor/abraham/twitteroauth/src/Token.php",
    "content": "<?php\n\n/**\n * The MIT License\n * Copyright (c) 2007 Andy Smith\n */\n\ndeclare(strict_types=1);\n\nnamespace Abraham\\TwitterOAuth;\n\nclass Token\n{\n    /** @var string */\n    public $key;\n    /** @var string */\n    public $secret;\n\n    /**\n     * @param string $key    The OAuth Token\n     * @param string $secret The OAuth Token Secret\n     */\n    public function __construct(?string $key, ?string $secret)\n    {\n        $this->key = $key;\n        $this->secret = $secret;\n    }\n\n    /**\n     * Generates the basic string serialization of a token that a server\n     * would respond to request_token and access_token calls with\n     *\n     * @return string\n     */\n    public function __toString(): string\n    {\n        return sprintf(\n            'oauth_token=%s&oauth_token_secret=%s',\n            Util::urlencodeRfc3986($this->key),\n            Util::urlencodeRfc3986($this->secret),\n        );\n    }\n}\n"
  },
  {
    "path": "include/vendor/abraham/twitteroauth/src/TwitterOAuth.php",
    "content": "<?php\n\n/**\n * The most popular PHP library for use with the Twitter OAuth REST API.\n *\n * @license MIT\n */\n\ndeclare(strict_types=1);\n\nnamespace Abraham\\TwitterOAuth;\n\nuse Abraham\\TwitterOAuth\\Util\\JsonDecoder;\nuse Composer\\CaBundle\\CaBundle;\n\n/**\n * TwitterOAuth class for interacting with the Twitter API.\n *\n * @author Abraham Williams <abraham@abrah.am>\n */\nclass TwitterOAuth extends Config\n{\n    private const API_HOST = 'https://api.twitter.com';\n    private const UPLOAD_HOST = 'https://upload.twitter.com';\n\n    /** @var Response details about the result of the last request */\n    private $response;\n    /** @var string|null Application bearer token */\n    private $bearer;\n    /** @var Consumer Twitter application details */\n    private $consumer;\n    /** @var Token|null User access token details */\n    private $token;\n    /** @var HmacSha1 OAuth 1 signature type used by Twitter */\n    private $signatureMethod;\n    /** @var int Number of attempts we made for the request */\n    private $attempts = 0;\n\n    /**\n     * Constructor\n     *\n     * @param string      $consumerKey      The Application Consumer Key\n     * @param string      $consumerSecret   The Application Consumer Secret\n     * @param string|null $oauthToken       The Client Token (optional)\n     * @param string|null $oauthTokenSecret The Client Token Secret (optional)\n     */\n    public function __construct(\n        string $consumerKey,\n        string $consumerSecret,\n        ?string $oauthToken = null,\n        ?string $oauthTokenSecret = null\n    ) {\n        $this->resetLastResponse();\n        $this->signatureMethod = new HmacSha1();\n        $this->consumer = new Consumer($consumerKey, $consumerSecret);\n        if (!empty($oauthToken) && !empty($oauthTokenSecret)) {\n            $this->setOauthToken($oauthToken, $oauthTokenSecret);\n        }\n        if (empty($oauthToken) && !empty($oauthTokenSecret)) {\n            $this->setBearer($oauthTokenSecret);\n        }\n    }\n\n    /**\n     * @param string $oauthToken\n     * @param string $oauthTokenSecret\n     */\n    public function setOauthToken(\n        string $oauthToken,\n        string $oauthTokenSecret\n    ): void {\n        $this->token = new Token($oauthToken, $oauthTokenSecret);\n        $this->bearer = null;\n    }\n\n    /**\n     * @param string $oauthTokenSecret\n     */\n    public function setBearer(string $oauthTokenSecret): void\n    {\n        $this->bearer = $oauthTokenSecret;\n        $this->token = null;\n    }\n\n    /**\n     * @return string|null\n     */\n    public function getLastApiPath(): ?string\n    {\n        return $this->response->getApiPath();\n    }\n\n    /**\n     * @return int\n     */\n    public function getLastHttpCode(): int\n    {\n        return $this->response->getHttpCode();\n    }\n\n    /**\n     * @return array\n     */\n    public function getLastXHeaders(): array\n    {\n        return $this->response->getXHeaders();\n    }\n\n    /**\n     * @return array|object|null\n     */\n    public function getLastBody()\n    {\n        return $this->response->getBody();\n    }\n\n    /**\n     * Resets the last response cache.\n     */\n    public function resetLastResponse(): void\n    {\n        $this->response = new Response();\n    }\n\n    /**\n     * Resets the attempts number.\n     */\n    private function resetAttemptsNumber(): void\n    {\n        $this->attempts = 0;\n    }\n\n    /**\n     * Delays the retries when they're activated.\n     */\n    private function sleepIfNeeded(): void\n    {\n        if ($this->maxRetries && $this->attempts) {\n            sleep($this->retriesDelay);\n        }\n    }\n\n    /**\n     * Make URLs for user browser navigation.\n     *\n     * @param string $path\n     * @param array  $parameters\n     *\n     * @return string\n     */\n    public function url(string $path, array $parameters): string\n    {\n        $this->resetLastResponse();\n        $this->response->setApiPath($path);\n        $query = http_build_query($parameters);\n        return sprintf('%s/%s?%s', self::API_HOST, $path, $query);\n    }\n\n    /**\n     * Make /oauth/* requests to the API.\n     *\n     * @param string $path\n     * @param array  $parameters\n     *\n     * @return array\n     * @throws TwitterOAuthException\n     */\n    public function oauth(string $path, array $parameters = []): array\n    {\n        $response = [];\n        $this->resetLastResponse();\n        $this->response->setApiPath($path);\n        $url = sprintf('%s/%s', self::API_HOST, $path);\n        $result = $this->oAuthRequest($url, 'POST', $parameters);\n\n        if ($this->getLastHttpCode() != 200) {\n            throw new TwitterOAuthException($result);\n        }\n\n        parse_str($result, $response);\n        $this->response->setBody($response);\n\n        return $response;\n    }\n\n    /**\n     * Make /oauth2/* requests to the API.\n     *\n     * @param string $path\n     * @param array  $parameters\n     *\n     * @return array|object\n     */\n    public function oauth2(string $path, array $parameters = [])\n    {\n        $method = 'POST';\n        $this->resetLastResponse();\n        $this->response->setApiPath($path);\n        $url = sprintf('%s/%s', self::API_HOST, $path);\n        $request = Request::fromConsumerAndToken(\n            $this->consumer,\n            $this->token,\n            $method,\n            $url,\n            $parameters,\n        );\n        $authorization =\n            'Authorization: Basic ' .\n            $this->encodeAppAuthorization($this->consumer);\n        $result = $this->request(\n            $request->getNormalizedHttpUrl(),\n            $method,\n            $authorization,\n            $parameters,\n        );\n        $response = JsonDecoder::decode($result, $this->decodeJsonAsArray);\n        $this->response->setBody($response);\n        return $response;\n    }\n\n    /**\n     * Make GET requests to the API.\n     *\n     * @param string $path\n     * @param array  $parameters\n     *\n     * @return array|object\n     */\n    public function get(string $path, array $parameters = [])\n    {\n        return $this->http('GET', self::API_HOST, $path, $parameters, false);\n    }\n\n    /**\n     * Make POST requests to the API.\n     *\n     * @param string $path\n     * @param array  $parameters\n     * @param bool   $json\n     *\n     * @return array|object\n     */\n    public function post(\n        string $path,\n        array $parameters = [],\n        bool $json = false\n    ) {\n        return $this->http('POST', self::API_HOST, $path, $parameters, $json);\n    }\n\n    /**\n     * Make DELETE requests to the API.\n     *\n     * @param string $path\n     * @param array  $parameters\n     *\n     * @return array|object\n     */\n    public function delete(string $path, array $parameters = [])\n    {\n        return $this->http('DELETE', self::API_HOST, $path, $parameters, false);\n    }\n\n    /**\n     * Make PUT requests to the API.\n     *\n     * @param string $path\n     * @param array  $parameters\n     * @param bool   $json\n     *\n     * @return array|object\n     */\n    public function put(\n        string $path,\n        array $parameters = [],\n        bool $json = false\n    ) {\n        return $this->http('PUT', self::API_HOST, $path, $parameters, $json);\n    }\n\n    /**\n     * Upload media to upload.twitter.com.\n     *\n     * @param string $path\n     * @param array  $parameters\n     * @param boolean  $chunked\n     *\n     * @return array|object\n     */\n    public function upload(\n        string $path,\n        array $parameters = [],\n        bool $chunked = false\n    ) {\n        if ($chunked) {\n            return $this->uploadMediaChunked($path, $parameters);\n        } else {\n            return $this->uploadMediaNotChunked($path, $parameters);\n        }\n    }\n\n    /**\n     * Progression of media upload\n     *\n     * @param string $media_id\n     *\n     * @return array|object\n     */\n    public function mediaStatus(string $media_id)\n    {\n        return $this->http(\n            'GET',\n            self::UPLOAD_HOST,\n            'media/upload',\n            [\n                'command' => 'STATUS',\n                'media_id' => $media_id,\n            ],\n            false,\n        );\n    }\n\n    /**\n     * Private method to upload media (not chunked) to upload.twitter.com.\n     *\n     * @param string $path\n     * @param array  $parameters\n     *\n     * @return array|object\n     */\n    private function uploadMediaNotChunked(string $path, array $parameters)\n    {\n        if (\n            !is_readable($parameters['media']) ||\n            ($file = file_get_contents($parameters['media'])) === false\n        ) {\n            throw new \\InvalidArgumentException(\n                'You must supply a readable file',\n            );\n        }\n        $parameters['media'] = base64_encode($file);\n        return $this->http(\n            'POST',\n            self::UPLOAD_HOST,\n            $path,\n            $parameters,\n            false,\n        );\n    }\n\n    /**\n     * Private method to upload media (chunked) to upload.twitter.com.\n     *\n     * @param string $path\n     * @param array  $parameters\n     *\n     * @return array|object\n     */\n    private function uploadMediaChunked(string $path, array $parameters)\n    {\n        $init = $this->http(\n            'POST',\n            self::UPLOAD_HOST,\n            $path,\n            $this->mediaInitParameters($parameters),\n            false,\n        );\n        // Append\n        $segmentIndex = 0;\n        $media = fopen($parameters['media'], 'rb');\n        while (!feof($media)) {\n            $this->http(\n                'POST',\n                self::UPLOAD_HOST,\n                'media/upload',\n                [\n                    'command' => 'APPEND',\n                    'media_id' => $init->media_id_string,\n                    'segment_index' => $segmentIndex++,\n                    'media_data' => base64_encode(\n                        fread($media, $this->chunkSize),\n                    ),\n                ],\n                false,\n            );\n        }\n        fclose($media);\n        // Finalize\n        $finalize = $this->http(\n            'POST',\n            self::UPLOAD_HOST,\n            'media/upload',\n            [\n                'command' => 'FINALIZE',\n                'media_id' => $init->media_id_string,\n            ],\n            false,\n        );\n        return $finalize;\n    }\n\n    /**\n     * Private method to get params for upload media chunked init.\n     * Twitter docs: https://dev.twitter.com/rest/reference/post/media/upload-init.html\n     *\n     * @param array  $parameters\n     *\n     * @return array\n     */\n    private function mediaInitParameters(array $parameters): array\n    {\n        $allowed_keys = [\n            'media_type',\n            'additional_owners',\n            'media_category',\n            'shared',\n        ];\n        $base = [\n            'command' => 'INIT',\n            'total_bytes' => filesize($parameters['media']),\n        ];\n        $allowed_parameters = array_intersect_key(\n            $parameters,\n            array_flip($allowed_keys),\n        );\n        return array_merge($base, $allowed_parameters);\n    }\n\n    /**\n     * Cleanup any parameters that are known not to work.\n     *\n     * @param array  $parameters\n     *\n     * @return array\n     */\n    private function cleanUpParameters(array $parameters)\n    {\n        foreach ($parameters as $key => $value) {\n            // PHP coerces `true` to `\"1\"` which some Twitter APIs don't like.\n            if (is_bool($value)) {\n                $parameters[$key] = var_export($value, true);\n            }\n        }\n        return $parameters;\n    }\n\n    /**\n     * Get URL extension for current API Version.\n     *\n     * @return string\n     */\n    private function extension()\n    {\n        return [\n            '1.1' => '.json',\n            '2' => '',\n        ][$this->apiVersion];\n    }\n\n    /**\n     * @param string $method\n     * @param string $host\n     * @param string $path\n     * @param array  $parameters\n     * @param bool   $json\n     *\n     * @return array|object\n     */\n    private function http(\n        string $method,\n        string $host,\n        string $path,\n        array $parameters,\n        bool $json\n    ) {\n        $this->resetLastResponse();\n        $this->resetAttemptsNumber();\n        $this->response->setApiPath($path);\n        if (!$json) {\n            $parameters = $this->cleanUpParameters($parameters);\n        }\n        return $this->makeRequests(\n            $this->apiUrl($host, $path),\n            $method,\n            $parameters,\n            $json,\n        );\n    }\n\n    /**\n     * Generate API URL.\n     *\n     * Overriding this function is not supported and may cause unintended issues.\n     *\n     * @param string $host\n     * @param string $path\n     *\n     * @return string\n     */\n    protected function apiUrl(string $host, string $path)\n    {\n        return sprintf(\n            '%s/%s/%s%s',\n            $host,\n            $this->apiVersion,\n            $path,\n            $this->extension(),\n        );\n    }\n\n    /**\n     *\n     * Make requests and retry them (if enabled) in case of Twitter's problems.\n     *\n     * @param string $method\n     * @param string $url\n     * @param string $method\n     * @param array  $parameters\n     * @param bool   $json\n     *\n     * @return array|object\n     */\n    private function makeRequests(\n        string $url,\n        string $method,\n        array $parameters,\n        bool $json\n    ) {\n        do {\n            $this->sleepIfNeeded();\n            $result = $this->oAuthRequest($url, $method, $parameters, $json);\n            $response = JsonDecoder::decode($result, $this->decodeJsonAsArray);\n            $this->response->setBody($response);\n            $this->attempts++;\n            // Retry up to our $maxRetries number if we get errors greater than 500 (over capacity etc)\n        } while ($this->requestsAvailable());\n\n        return $response;\n    }\n\n    /**\n     * Checks if we have to retry request if API is down.\n     *\n     * @return bool\n     */\n    private function requestsAvailable(): bool\n    {\n        return $this->maxRetries &&\n            $this->attempts <= $this->maxRetries &&\n            $this->getLastHttpCode() >= 500;\n    }\n\n    /**\n     * Format and sign an OAuth / API request\n     *\n     * @param string $url\n     * @param string $method\n     * @param array  $parameters\n     * @param bool   $json\n     *\n     * @return string\n     * @throws TwitterOAuthException\n     */\n    private function oAuthRequest(\n        string $url,\n        string $method,\n        array $parameters,\n        bool $json = false\n    ) {\n        $request = Request::fromConsumerAndToken(\n            $this->consumer,\n            $this->token,\n            $method,\n            $url,\n            $parameters,\n            $json,\n        );\n        if (array_key_exists('oauth_callback', $parameters)) {\n            // Twitter doesn't like oauth_callback as a parameter.\n            unset($parameters['oauth_callback']);\n        }\n        if ($this->bearer === null) {\n            $request->signRequest(\n                $this->signatureMethod,\n                $this->consumer,\n                $this->token,\n            );\n            $authorization = $request->toHeader();\n            if (array_key_exists('oauth_verifier', $parameters)) {\n                // Twitter doesn't always work with oauth in the body and in the header\n                // and it's already included in the $authorization header\n                unset($parameters['oauth_verifier']);\n            }\n        } else {\n            $authorization = 'Authorization: Bearer ' . $this->bearer;\n        }\n        return $this->request(\n            $request->getNormalizedHttpUrl(),\n            $method,\n            $authorization,\n            $parameters,\n            $json,\n        );\n    }\n\n    /**\n     * Set Curl options.\n     *\n     * @return array\n     */\n    private function curlOptions(): array\n    {\n        $bundlePath = CaBundle::getSystemCaRootBundlePath();\n        $options = [\n            // CURLOPT_VERBOSE => true,\n            CURLOPT_CONNECTTIMEOUT => $this->connectionTimeout,\n            CURLOPT_HEADER => true,\n            CURLOPT_RETURNTRANSFER => true,\n            CURLOPT_SSL_VERIFYHOST => 2,\n            CURLOPT_SSL_VERIFYPEER => true,\n            CURLOPT_TIMEOUT => $this->timeout,\n            CURLOPT_USERAGENT => $this->userAgent,\n            $this->curlCaOpt($bundlePath) => $bundlePath,\n        ];\n\n        if ($this->gzipEncoding) {\n            $options[CURLOPT_ENCODING] = 'gzip';\n        }\n\n        if (!empty($this->proxy)) {\n            $options[CURLOPT_PROXY] = $this->proxy['CURLOPT_PROXY'];\n            $options[CURLOPT_PROXYUSERPWD] =\n                $this->proxy['CURLOPT_PROXYUSERPWD'];\n            $options[CURLOPT_PROXYPORT] = $this->proxy['CURLOPT_PROXYPORT'];\n            $options[CURLOPT_PROXYAUTH] = CURLAUTH_BASIC;\n            $options[CURLOPT_PROXYTYPE] = CURLPROXY_HTTP;\n        }\n\n        return $options;\n    }\n\n    /**\n     * Make an HTTP request\n     *\n     * @param string $url\n     * @param string $method\n     * @param string $authorization\n     * @param array $postfields\n     * @param bool $json\n     *\n     * @return string\n     * @throws TwitterOAuthException\n     */\n    private function request(\n        string $url,\n        string $method,\n        string $authorization,\n        array $postfields,\n        bool $json = false\n    ): string {\n        $options = $this->curlOptions();\n        $options[CURLOPT_URL] = $url;\n        $options[CURLOPT_HTTPHEADER] = [\n            'Accept: application/json',\n            $authorization,\n            'Expect:',\n        ];\n\n        switch ($method) {\n            case 'GET':\n                break;\n            case 'POST':\n                $options[CURLOPT_POST] = true;\n                $options = $this->setPostfieldsOptions(\n                    $options,\n                    $postfields,\n                    $json,\n                );\n                break;\n            case 'DELETE':\n                $options[CURLOPT_CUSTOMREQUEST] = 'DELETE';\n                break;\n            case 'PUT':\n                $options[CURLOPT_CUSTOMREQUEST] = 'PUT';\n                $options = $this->setPostfieldsOptions(\n                    $options,\n                    $postfields,\n                    $json,\n                );\n                break;\n        }\n\n        if (\n            in_array($method, ['GET', 'PUT', 'DELETE']) &&\n            !empty($postfields)\n        ) {\n            $options[CURLOPT_URL] .= '?' . Util::buildHttpQuery($postfields);\n        }\n\n        $curlHandle = curl_init();\n        curl_setopt_array($curlHandle, $options);\n        $response = curl_exec($curlHandle);\n\n        // Throw exceptions on cURL errors.\n        if (curl_errno($curlHandle) > 0) {\n            $error = curl_error($curlHandle);\n            $errorNo = curl_errno($curlHandle);\n            curl_close($curlHandle);\n            throw new TwitterOAuthException($error, $errorNo);\n        }\n\n        $this->response->setHttpCode(\n            curl_getinfo($curlHandle, CURLINFO_HTTP_CODE),\n        );\n        $parts = explode(\"\\r\\n\\r\\n\", $response);\n        $responseBody = array_pop($parts);\n        $responseHeader = array_pop($parts);\n        $this->response->setHeaders($this->parseHeaders($responseHeader));\n\n        curl_close($curlHandle);\n\n        return $responseBody;\n    }\n\n    /**\n     * Get the header info to store.\n     *\n     * @param string $header\n     *\n     * @return array\n     */\n    private function parseHeaders(string $header): array\n    {\n        $headers = [];\n        foreach (explode(\"\\r\\n\", $header) as $line) {\n            if (strpos($line, ':') !== false) {\n                [$key, $value] = explode(': ', $line);\n                $key = str_replace('-', '_', strtolower($key));\n                $headers[$key] = trim($value);\n            }\n        }\n        return $headers;\n    }\n\n    /**\n     * Encode application authorization header with base64.\n     *\n     * @param Consumer $consumer\n     *\n     * @return string\n     */\n    private function encodeAppAuthorization(Consumer $consumer): string\n    {\n        $key = rawurlencode($consumer->key);\n        $secret = rawurlencode($consumer->secret);\n        return base64_encode($key . ':' . $secret);\n    }\n\n    /**\n     * Get Curl CA option based on whether the given path is a directory or file.\n     *\n     * @param string $path\n     * @return int\n     */\n    private function curlCaOpt(string $path): int\n    {\n        return is_dir($path) ? CURLOPT_CAPATH : CURLOPT_CAINFO;\n    }\n\n    /**\n     * Set options for JSON Requests\n     *\n     * @param array $options\n     * @param array $postfields\n     * @param bool $json\n     *\n     * @return array\n     */\n    private function setPostfieldsOptions(\n        array $options,\n        array $postfields,\n        bool $json\n    ): array {\n        if ($json) {\n            $options[CURLOPT_HTTPHEADER][] = 'Content-type: application/json';\n            $options[CURLOPT_POSTFIELDS] = json_encode($postfields);\n        } else {\n            $options[CURLOPT_POSTFIELDS] = Util::buildHttpQuery($postfields);\n        }\n\n        return $options;\n    }\n}\n"
  },
  {
    "path": "include/vendor/abraham/twitteroauth/src/TwitterOAuthException.php",
    "content": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Abraham\\TwitterOAuth;\n\n/**\n * @author Abraham Williams <abraham@abrah.am>\n */\nclass TwitterOAuthException extends \\Exception\n{\n}\n"
  },
  {
    "path": "include/vendor/abraham/twitteroauth/src/Util/JsonDecoder.php",
    "content": "<?php\n\nnamespace Abraham\\TwitterOAuth\\Util;\n\n/**\n * @author louis <louis@systemli.org>\n */\nclass JsonDecoder\n{\n    /**\n     * Decodes a JSON string to stdObject or associative array\n     *\n     * @param string $string\n     * @param bool   $asArray\n     *\n     * @return array|object\n     */\n    public static function decode(string $string, bool $asArray)\n    {\n        if (\n            version_compare(PHP_VERSION, '5.4.0', '>=') &&\n            !(defined('JSON_C_VERSION') && PHP_INT_SIZE > 4)\n        ) {\n            return json_decode($string, $asArray, 512, JSON_BIGINT_AS_STRING);\n        }\n\n        return json_decode($string, $asArray);\n    }\n}\n"
  },
  {
    "path": "include/vendor/abraham/twitteroauth/src/Util.php",
    "content": "<?php\n\n/**\n * The MIT License\n * Copyright (c) 2007 Andy Smith\n */\n\ndeclare(strict_types=1);\n\nnamespace Abraham\\TwitterOAuth;\n\nclass Util\n{\n    /**\n     * @param mixed $input\n     *\n     * @return mixed\n     */\n    public static function urlencodeRfc3986($input)\n    {\n        $output = '';\n        if (is_array($input)) {\n            $output = array_map(\n                [__NAMESPACE__ . '\\Util', 'urlencodeRfc3986'],\n                $input,\n            );\n        } elseif (is_scalar($input)) {\n            $output = rawurlencode((string) $input);\n        }\n        return $output;\n    }\n\n    /**\n     * @param string $string\n     *\n     * @return string\n     */\n    public static function urldecodeRfc3986($string): string\n    {\n        return urldecode($string);\n    }\n\n    /**\n     * This function takes a input like a=b&a=c&d=e and returns the parsed\n     * parameters like this\n     * array('a' => array('b','c'), 'd' => 'e')\n     *\n     * @param string $input\n     *\n     * @return array\n     */\n    public static function parseParameters($input): array\n    {\n        if (!is_string($input)) {\n            return [];\n        }\n\n        $pairs = explode('&', $input);\n\n        $parameters = [];\n        foreach ($pairs as $pair) {\n            $split = explode('=', $pair, 2);\n            $parameter = Util::urldecodeRfc3986($split[0]);\n            $value = isset($split[1]) ? Util::urldecodeRfc3986($split[1]) : '';\n\n            if (isset($parameters[$parameter])) {\n                // We have already recieved parameter(s) with this name, so add to the list\n                // of parameters with this name\n\n                if (is_scalar($parameters[$parameter])) {\n                    // This is the first duplicate, so transform scalar (string) into an array\n                    // so we can add the duplicates\n                    $parameters[$parameter] = [$parameters[$parameter]];\n                }\n\n                $parameters[$parameter][] = $value;\n            } else {\n                $parameters[$parameter] = $value;\n            }\n        }\n        return $parameters;\n    }\n\n    /**\n     * @param array $params\n     *\n     * @return string\n     */\n    public static function buildHttpQuery(array $params): string\n    {\n        if (empty($params)) {\n            return '';\n        }\n\n        // Urlencode both keys and values\n        $keys = Util::urlencodeRfc3986(array_keys($params));\n        $values = Util::urlencodeRfc3986(array_values($params));\n        $params = array_combine($keys, $values);\n\n        // Parameters are sorted by name, using lexicographical byte value ordering.\n        // Ref: Spec: 9.1.1 (1)\n        uksort($params, 'strcmp');\n\n        $pairs = [];\n        foreach ($params as $parameter => $value) {\n            if (is_array($value)) {\n                // If two or more parameters share the same name, they are sorted by their value\n                // Ref: Spec: 9.1.1 (1)\n                // June 12th, 2010 - changed to sort because of issue 164 by hidetaka\n                sort($value, SORT_STRING);\n                foreach ($value as $duplicateValue) {\n                    $pairs[] = $parameter . '=' . $duplicateValue;\n                }\n            } else {\n                $pairs[] = $parameter . '=' . $value;\n            }\n        }\n        // For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61)\n        // Each name-value pair is separated by an '&' character (ASCII code 38)\n        return implode('&', $pairs);\n    }\n}\n"
  },
  {
    "path": "include/vendor/autoload.php",
    "content": "<?php\n\n// autoload.php @generated by Composer\n\nif (PHP_VERSION_ID < 50600) {\n    if (!headers_sent()) {\n        header('HTTP/1.1 500 Internal Server Error');\n    }\n    $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via \"composer self-update --2.2\". Aborting.'.PHP_EOL;\n    if (!ini_get('display_errors')) {\n        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {\n            fwrite(STDERR, $err);\n        } elseif (!headers_sent()) {\n            echo $err;\n        }\n    }\n    trigger_error(\n        $err,\n        E_USER_ERROR\n    );\n}\n\nrequire_once __DIR__ . '/composer/autoload_real.php';\n\nreturn ComposerAutoloaderInit69db1f271801e9da41f8ec97675be152::getLoader();\n"
  },
  {
    "path": "include/vendor/composer/ClassLoader.php",
    "content": "<?php\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *     Jordi Boggiano <j.boggiano@seld.be>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace Composer\\Autoload;\n\n/**\n * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.\n *\n *     $loader = new \\Composer\\Autoload\\ClassLoader();\n *\n *     // register classes with namespaces\n *     $loader->add('Symfony\\Component', __DIR__.'/component');\n *     $loader->add('Symfony',           __DIR__.'/framework');\n *\n *     // activate the autoloader\n *     $loader->register();\n *\n *     // to enable searching the include path (eg. for PEAR packages)\n *     $loader->setUseIncludePath(true);\n *\n * In this example, if you try to use a class in the Symfony\\Component\n * namespace or one of its children (Symfony\\Component\\Console for instance),\n * the autoloader will first look for the class under the component/\n * directory, and it will then fallback to the framework/ directory if not\n * found before giving up.\n *\n * This class is loosely based on the Symfony UniversalClassLoader.\n *\n * @author Fabien Potencier <fabien@symfony.com>\n * @author Jordi Boggiano <j.boggiano@seld.be>\n * @see    https://www.php-fig.org/psr/psr-0/\n * @see    https://www.php-fig.org/psr/psr-4/\n */\nclass ClassLoader\n{\n    /** @var \\Closure(string):void */\n    private static $includeFile;\n\n    /** @var string|null */\n    private $vendorDir;\n\n    // PSR-4\n    /**\n     * @var array<string, array<string, int>>\n     */\n    private $prefixLengthsPsr4 = array();\n    /**\n     * @var array<string, list<string>>\n     */\n    private $prefixDirsPsr4 = array();\n    /**\n     * @var list<string>\n     */\n    private $fallbackDirsPsr4 = array();\n\n    // PSR-0\n    /**\n     * List of PSR-0 prefixes\n     *\n     * Structured as array('F (first letter)' => array('Foo\\Bar (full prefix)' => array('path', 'path2')))\n     *\n     * @var array<string, array<string, list<string>>>\n     */\n    private $prefixesPsr0 = array();\n    /**\n     * @var list<string>\n     */\n    private $fallbackDirsPsr0 = array();\n\n    /** @var bool */\n    private $useIncludePath = false;\n\n    /**\n     * @var array<string, string>\n     */\n    private $classMap = array();\n\n    /** @var bool */\n    private $classMapAuthoritative = false;\n\n    /**\n     * @var array<string, bool>\n     */\n    private $missingClasses = array();\n\n    /** @var string|null */\n    private $apcuPrefix;\n\n    /**\n     * @var array<string, self>\n     */\n    private static $registeredLoaders = array();\n\n    /**\n     * @param string|null $vendorDir\n     */\n    public function __construct($vendorDir = null)\n    {\n        $this->vendorDir = $vendorDir;\n        self::initializeIncludeClosure();\n    }\n\n    /**\n     * @return array<string, list<string>>\n     */\n    public function getPrefixes()\n    {\n        if (!empty($this->prefixesPsr0)) {\n            return call_user_func_array('array_merge', array_values($this->prefixesPsr0));\n        }\n\n        return array();\n    }\n\n    /**\n     * @return array<string, list<string>>\n     */\n    public function getPrefixesPsr4()\n    {\n        return $this->prefixDirsPsr4;\n    }\n\n    /**\n     * @return list<string>\n     */\n    public function getFallbackDirs()\n    {\n        return $this->fallbackDirsPsr0;\n    }\n\n    /**\n     * @return list<string>\n     */\n    public function getFallbackDirsPsr4()\n    {\n        return $this->fallbackDirsPsr4;\n    }\n\n    /**\n     * @return array<string, string> Array of classname => path\n     */\n    public function getClassMap()\n    {\n        return $this->classMap;\n    }\n\n    /**\n     * @param array<string, string> $classMap Class to filename map\n     *\n     * @return void\n     */\n    public function addClassMap(array $classMap)\n    {\n        if ($this->classMap) {\n            $this->classMap = array_merge($this->classMap, $classMap);\n        } else {\n            $this->classMap = $classMap;\n        }\n    }\n\n    /**\n     * Registers a set of PSR-0 directories for a given prefix, either\n     * appending or prepending to the ones previously set for this prefix.\n     *\n     * @param string              $prefix  The prefix\n     * @param list<string>|string $paths   The PSR-0 root directories\n     * @param bool                $prepend Whether to prepend the directories\n     *\n     * @return void\n     */\n    public function add($prefix, $paths, $prepend = false)\n    {\n        $paths = (array) $paths;\n        if (!$prefix) {\n            if ($prepend) {\n                $this->fallbackDirsPsr0 = array_merge(\n                    $paths,\n                    $this->fallbackDirsPsr0\n                );\n            } else {\n                $this->fallbackDirsPsr0 = array_merge(\n                    $this->fallbackDirsPsr0,\n                    $paths\n                );\n            }\n\n            return;\n        }\n\n        $first = $prefix[0];\n        if (!isset($this->prefixesPsr0[$first][$prefix])) {\n            $this->prefixesPsr0[$first][$prefix] = $paths;\n\n            return;\n        }\n        if ($prepend) {\n            $this->prefixesPsr0[$first][$prefix] = array_merge(\n                $paths,\n                $this->prefixesPsr0[$first][$prefix]\n            );\n        } else {\n            $this->prefixesPsr0[$first][$prefix] = array_merge(\n                $this->prefixesPsr0[$first][$prefix],\n                $paths\n            );\n        }\n    }\n\n    /**\n     * Registers a set of PSR-4 directories for a given namespace, either\n     * appending or prepending to the ones previously set for this namespace.\n     *\n     * @param string              $prefix  The prefix/namespace, with trailing '\\\\'\n     * @param list<string>|string $paths   The PSR-4 base directories\n     * @param bool                $prepend Whether to prepend the directories\n     *\n     * @throws \\InvalidArgumentException\n     *\n     * @return void\n     */\n    public function addPsr4($prefix, $paths, $prepend = false)\n    {\n        $paths = (array) $paths;\n        if (!$prefix) {\n            // Register directories for the root namespace.\n            if ($prepend) {\n                $this->fallbackDirsPsr4 = array_merge(\n                    $paths,\n                    $this->fallbackDirsPsr4\n                );\n            } else {\n                $this->fallbackDirsPsr4 = array_merge(\n                    $this->fallbackDirsPsr4,\n                    $paths\n                );\n            }\n        } elseif (!isset($this->prefixDirsPsr4[$prefix])) {\n            // Register directories for a new namespace.\n            $length = strlen($prefix);\n            if ('\\\\' !== $prefix[$length - 1]) {\n                throw new \\InvalidArgumentException(\"A non-empty PSR-4 prefix must end with a namespace separator.\");\n            }\n            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;\n            $this->prefixDirsPsr4[$prefix] = $paths;\n        } elseif ($prepend) {\n            // Prepend directories for an already registered namespace.\n            $this->prefixDirsPsr4[$prefix] = array_merge(\n                $paths,\n                $this->prefixDirsPsr4[$prefix]\n            );\n        } else {\n            // Append directories for an already registered namespace.\n            $this->prefixDirsPsr4[$prefix] = array_merge(\n                $this->prefixDirsPsr4[$prefix],\n                $paths\n            );\n        }\n    }\n\n    /**\n     * Registers a set of PSR-0 directories for a given prefix,\n     * replacing any others previously set for this prefix.\n     *\n     * @param string              $prefix The prefix\n     * @param list<string>|string $paths  The PSR-0 base directories\n     *\n     * @return void\n     */\n    public function set($prefix, $paths)\n    {\n        if (!$prefix) {\n            $this->fallbackDirsPsr0 = (array) $paths;\n        } else {\n            $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;\n        }\n    }\n\n    /**\n     * Registers a set of PSR-4 directories for a given namespace,\n     * replacing any others previously set for this namespace.\n     *\n     * @param string              $prefix The prefix/namespace, with trailing '\\\\'\n     * @param list<string>|string $paths  The PSR-4 base directories\n     *\n     * @throws \\InvalidArgumentException\n     *\n     * @return void\n     */\n    public function setPsr4($prefix, $paths)\n    {\n        if (!$prefix) {\n            $this->fallbackDirsPsr4 = (array) $paths;\n        } else {\n            $length = strlen($prefix);\n            if ('\\\\' !== $prefix[$length - 1]) {\n                throw new \\InvalidArgumentException(\"A non-empty PSR-4 prefix must end with a namespace separator.\");\n            }\n            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;\n            $this->prefixDirsPsr4[$prefix] = (array) $paths;\n        }\n    }\n\n    /**\n     * Turns on searching the include path for class files.\n     *\n     * @param bool $useIncludePath\n     *\n     * @return void\n     */\n    public function setUseIncludePath($useIncludePath)\n    {\n        $this->useIncludePath = $useIncludePath;\n    }\n\n    /**\n     * Can be used to check if the autoloader uses the include path to check\n     * for classes.\n     *\n     * @return bool\n     */\n    public function getUseIncludePath()\n    {\n        return $this->useIncludePath;\n    }\n\n    /**\n     * Turns off searching the prefix and fallback directories for classes\n     * that have not been registered with the class map.\n     *\n     * @param bool $classMapAuthoritative\n     *\n     * @return void\n     */\n    public function setClassMapAuthoritative($classMapAuthoritative)\n    {\n        $this->classMapAuthoritative = $classMapAuthoritative;\n    }\n\n    /**\n     * Should class lookup fail if not found in the current class map?\n     *\n     * @return bool\n     */\n    public function isClassMapAuthoritative()\n    {\n        return $this->classMapAuthoritative;\n    }\n\n    /**\n     * APCu prefix to use to cache found/not-found classes, if the extension is enabled.\n     *\n     * @param string|null $apcuPrefix\n     *\n     * @return void\n     */\n    public function setApcuPrefix($apcuPrefix)\n    {\n        $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;\n    }\n\n    /**\n     * The APCu prefix in use, or null if APCu caching is not enabled.\n     *\n     * @return string|null\n     */\n    public function getApcuPrefix()\n    {\n        return $this->apcuPrefix;\n    }\n\n    /**\n     * Registers this instance as an autoloader.\n     *\n     * @param bool $prepend Whether to prepend the autoloader or not\n     *\n     * @return void\n     */\n    public function register($prepend = false)\n    {\n        spl_autoload_register(array($this, 'loadClass'), true, $prepend);\n\n        if (null === $this->vendorDir) {\n            return;\n        }\n\n        if ($prepend) {\n            self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;\n        } else {\n            unset(self::$registeredLoaders[$this->vendorDir]);\n            self::$registeredLoaders[$this->vendorDir] = $this;\n        }\n    }\n\n    /**\n     * Unregisters this instance as an autoloader.\n     *\n     * @return void\n     */\n    public function unregister()\n    {\n        spl_autoload_unregister(array($this, 'loadClass'));\n\n        if (null !== $this->vendorDir) {\n            unset(self::$registeredLoaders[$this->vendorDir]);\n        }\n    }\n\n    /**\n     * Loads the given class or interface.\n     *\n     * @param  string    $class The name of the class\n     * @return true|null True if loaded, null otherwise\n     */\n    public function loadClass($class)\n    {\n        if ($file = $this->findFile($class)) {\n            $includeFile = self::$includeFile;\n            $includeFile($file);\n\n            return true;\n        }\n\n        return null;\n    }\n\n    /**\n     * Finds the path to the file where the class is defined.\n     *\n     * @param string $class The name of the class\n     *\n     * @return string|false The path if found, false otherwise\n     */\n    public function findFile($class)\n    {\n        // class map lookup\n        if (isset($this->classMap[$class])) {\n            return $this->classMap[$class];\n        }\n        if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {\n            return false;\n        }\n        if (null !== $this->apcuPrefix) {\n            $file = apcu_fetch($this->apcuPrefix.$class, $hit);\n            if ($hit) {\n                return $file;\n            }\n        }\n\n        $file = $this->findFileWithExtension($class, '.php');\n\n        // Search for Hack files if we are running on HHVM\n        if (false === $file && defined('HHVM_VERSION')) {\n            $file = $this->findFileWithExtension($class, '.hh');\n        }\n\n        if (null !== $this->apcuPrefix) {\n            apcu_add($this->apcuPrefix.$class, $file);\n        }\n\n        if (false === $file) {\n            // Remember that this class does not exist.\n            $this->missingClasses[$class] = true;\n        }\n\n        return $file;\n    }\n\n    /**\n     * Returns the currently registered loaders keyed by their corresponding vendor directories.\n     *\n     * @return array<string, self>\n     */\n    public static function getRegisteredLoaders()\n    {\n        return self::$registeredLoaders;\n    }\n\n    /**\n     * @param  string       $class\n     * @param  string       $ext\n     * @return string|false\n     */\n    private function findFileWithExtension($class, $ext)\n    {\n        // PSR-4 lookup\n        $logicalPathPsr4 = strtr($class, '\\\\', DIRECTORY_SEPARATOR) . $ext;\n\n        $first = $class[0];\n        if (isset($this->prefixLengthsPsr4[$first])) {\n            $subPath = $class;\n            while (false !== $lastPos = strrpos($subPath, '\\\\')) {\n                $subPath = substr($subPath, 0, $lastPos);\n                $search = $subPath . '\\\\';\n                if (isset($this->prefixDirsPsr4[$search])) {\n                    $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);\n                    foreach ($this->prefixDirsPsr4[$search] as $dir) {\n                        if (file_exists($file = $dir . $pathEnd)) {\n                            return $file;\n                        }\n                    }\n                }\n            }\n        }\n\n        // PSR-4 fallback dirs\n        foreach ($this->fallbackDirsPsr4 as $dir) {\n            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {\n                return $file;\n            }\n        }\n\n        // PSR-0 lookup\n        if (false !== $pos = strrpos($class, '\\\\')) {\n            // namespaced class name\n            $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)\n                . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);\n        } else {\n            // PEAR-like class name\n            $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;\n        }\n\n        if (isset($this->prefixesPsr0[$first])) {\n            foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {\n                if (0 === strpos($class, $prefix)) {\n                    foreach ($dirs as $dir) {\n                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {\n                            return $file;\n                        }\n                    }\n                }\n            }\n        }\n\n        // PSR-0 fallback dirs\n        foreach ($this->fallbackDirsPsr0 as $dir) {\n            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {\n                return $file;\n            }\n        }\n\n        // PSR-0 include paths.\n        if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {\n            return $file;\n        }\n\n        return false;\n    }\n\n    /**\n     * @return void\n     */\n    private static function initializeIncludeClosure()\n    {\n        if (self::$includeFile !== null) {\n            return;\n        }\n\n        /**\n         * Scope isolated include.\n         *\n         * Prevents access to $this/self from included files.\n         *\n         * @param  string $file\n         * @return void\n         */\n        self::$includeFile = \\Closure::bind(static function($file) {\n            include $file;\n        }, null, null);\n    }\n}\n"
  },
  {
    "path": "include/vendor/composer/InstalledVersions.php",
    "content": "<?php\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *     Jordi Boggiano <j.boggiano@seld.be>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace Composer;\n\nuse Composer\\Autoload\\ClassLoader;\nuse Composer\\Semver\\VersionParser;\n\n/**\n * This class is copied in every Composer installed project and available to all\n *\n * See also https://getcomposer.org/doc/07-runtime.md#installed-versions\n *\n * To require its presence, you can require `composer-runtime-api ^2.0`\n *\n * @final\n */\nclass InstalledVersions\n{\n    /**\n     * @var mixed[]|null\n     * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null\n     */\n    private static $installed;\n\n    /**\n     * @var bool\n     */\n    private static $installedIsLocalDir;\n\n    /**\n     * @var bool|null\n     */\n    private static $canGetVendors;\n\n    /**\n     * @var array[]\n     * @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>\n     */\n    private static $installedByVendor = array();\n\n    /**\n     * Returns a list of all package names which are present, either by being installed, replaced or provided\n     *\n     * @return string[]\n     * @psalm-return list<string>\n     */\n    public static function getInstalledPackages()\n    {\n        $packages = array();\n        foreach (self::getInstalled() as $installed) {\n            $packages[] = array_keys($installed['versions']);\n        }\n\n        if (1 === \\count($packages)) {\n            return $packages[0];\n        }\n\n        return array_keys(array_flip(\\call_user_func_array('array_merge', $packages)));\n    }\n\n    /**\n     * Returns a list of all package names with a specific type e.g. 'library'\n     *\n     * @param  string   $type\n     * @return string[]\n     * @psalm-return list<string>\n     */\n    public static function getInstalledPackagesByType($type)\n    {\n        $packagesByType = array();\n\n        foreach (self::getInstalled() as $installed) {\n            foreach ($installed['versions'] as $name => $package) {\n                if (isset($package['type']) && $package['type'] === $type) {\n                    $packagesByType[] = $name;\n                }\n            }\n        }\n\n        return $packagesByType;\n    }\n\n    /**\n     * Checks whether the given package is installed\n     *\n     * This also returns true if the package name is provided or replaced by another package\n     *\n     * @param  string $packageName\n     * @param  bool   $includeDevRequirements\n     * @return bool\n     */\n    public static function isInstalled($packageName, $includeDevRequirements = true)\n    {\n        foreach (self::getInstalled() as $installed) {\n            if (isset($installed['versions'][$packageName])) {\n                return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;\n            }\n        }\n\n        return false;\n    }\n\n    /**\n     * Checks whether the given package satisfies a version constraint\n     *\n     * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:\n     *\n     *   Composer\\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')\n     *\n     * @param  VersionParser $parser      Install composer/semver to have access to this class and functionality\n     * @param  string        $packageName\n     * @param  string|null   $constraint  A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package\n     * @return bool\n     */\n    public static function satisfies(VersionParser $parser, $packageName, $constraint)\n    {\n        $constraint = $parser->parseConstraints((string) $constraint);\n        $provided = $parser->parseConstraints(self::getVersionRanges($packageName));\n\n        return $provided->matches($constraint);\n    }\n\n    /**\n     * Returns a version constraint representing all the range(s) which are installed for a given package\n     *\n     * It is easier to use this via isInstalled() with the $constraint argument if you need to check\n     * whether a given version of a package is installed, and not just whether it exists\n     *\n     * @param  string $packageName\n     * @return string Version constraint usable with composer/semver\n     */\n    public static function getVersionRanges($packageName)\n    {\n        foreach (self::getInstalled() as $installed) {\n            if (!isset($installed['versions'][$packageName])) {\n                continue;\n            }\n\n            $ranges = array();\n            if (isset($installed['versions'][$packageName]['pretty_version'])) {\n                $ranges[] = $installed['versions'][$packageName]['pretty_version'];\n            }\n            if (array_key_exists('aliases', $installed['versions'][$packageName])) {\n                $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);\n            }\n            if (array_key_exists('replaced', $installed['versions'][$packageName])) {\n                $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);\n            }\n            if (array_key_exists('provided', $installed['versions'][$packageName])) {\n                $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);\n            }\n\n            return implode(' || ', $ranges);\n        }\n\n        throw new \\OutOfBoundsException('Package \"' . $packageName . '\" is not installed');\n    }\n\n    /**\n     * @param  string      $packageName\n     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present\n     */\n    public static function getVersion($packageName)\n    {\n        foreach (self::getInstalled() as $installed) {\n            if (!isset($installed['versions'][$packageName])) {\n                continue;\n            }\n\n            if (!isset($installed['versions'][$packageName]['version'])) {\n                return null;\n            }\n\n            return $installed['versions'][$packageName]['version'];\n        }\n\n        throw new \\OutOfBoundsException('Package \"' . $packageName . '\" is not installed');\n    }\n\n    /**\n     * @param  string      $packageName\n     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present\n     */\n    public static function getPrettyVersion($packageName)\n    {\n        foreach (self::getInstalled() as $installed) {\n            if (!isset($installed['versions'][$packageName])) {\n                continue;\n            }\n\n            if (!isset($installed['versions'][$packageName]['pretty_version'])) {\n                return null;\n            }\n\n            return $installed['versions'][$packageName]['pretty_version'];\n        }\n\n        throw new \\OutOfBoundsException('Package \"' . $packageName . '\" is not installed');\n    }\n\n    /**\n     * @param  string      $packageName\n     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference\n     */\n    public static function getReference($packageName)\n    {\n        foreach (self::getInstalled() as $installed) {\n            if (!isset($installed['versions'][$packageName])) {\n                continue;\n            }\n\n            if (!isset($installed['versions'][$packageName]['reference'])) {\n                return null;\n            }\n\n            return $installed['versions'][$packageName]['reference'];\n        }\n\n        throw new \\OutOfBoundsException('Package \"' . $packageName . '\" is not installed');\n    }\n\n    /**\n     * @param  string      $packageName\n     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.\n     */\n    public static function getInstallPath($packageName)\n    {\n        foreach (self::getInstalled() as $installed) {\n            if (!isset($installed['versions'][$packageName])) {\n                continue;\n            }\n\n            return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;\n        }\n\n        throw new \\OutOfBoundsException('Package \"' . $packageName . '\" is not installed');\n    }\n\n    /**\n     * @return array\n     * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}\n     */\n    public static function getRootPackage()\n    {\n        $installed = self::getInstalled();\n\n        return $installed[0]['root'];\n    }\n\n    /**\n     * Returns the raw installed.php data for custom implementations\n     *\n     * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.\n     * @return array[]\n     * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}\n     */\n    public static function getRawData()\n    {\n        @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);\n\n        if (null === self::$installed) {\n            // only require the installed.php file if this file is loaded from its dumped location,\n            // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937\n            if (substr(__DIR__, -8, 1) !== 'C' && is_file(__DIR__ . '/installed.php')) {\n                self::$installed = include __DIR__ . '/installed.php';\n            } else {\n                self::$installed = array();\n            }\n        }\n\n        return self::$installed;\n    }\n\n    /**\n     * Returns the raw data of all installed.php which are currently loaded for custom implementations\n     *\n     * @return array[]\n     * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>\n     */\n    public static function getAllRawData()\n    {\n        return self::getInstalled();\n    }\n\n    /**\n     * Lets you reload the static array from another file\n     *\n     * This is only useful for complex integrations in which a project needs to use\n     * this class but then also needs to execute another project's autoloader in process,\n     * and wants to ensure both projects have access to their version of installed.php.\n     *\n     * A typical case would be PHPUnit, where it would need to make sure it reads all\n     * the data it needs from this class, then call reload() with\n     * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure\n     * the project in which it runs can then also use this class safely, without\n     * interference between PHPUnit's dependencies and the project's dependencies.\n     *\n     * @param  array[] $data A vendor/composer/installed.php data set\n     * @return void\n     *\n     * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data\n     */\n    public static function reload($data)\n    {\n        self::$installed = $data;\n        self::$installedByVendor = array();\n\n        // when using reload, we disable the duplicate protection to ensure that self::$installed data is\n        // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,\n        // so we have to assume it does not, and that may result in duplicate data being returned when listing\n        // all installed packages for example\n        self::$installedIsLocalDir = false;\n    }\n\n    /**\n     * @return array[]\n     * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>\n     */\n    private static function getInstalled()\n    {\n        if (null === self::$canGetVendors) {\n            self::$canGetVendors = method_exists('Composer\\Autoload\\ClassLoader', 'getRegisteredLoaders');\n        }\n\n        $installed = array();\n        $copiedLocalDir = false;\n\n        if (self::$canGetVendors) {\n            $selfDir = strtr(__DIR__, '\\\\', '/');\n            foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {\n                $vendorDir = strtr($vendorDir, '\\\\', '/');\n                if (isset(self::$installedByVendor[$vendorDir])) {\n                    $installed[] = self::$installedByVendor[$vendorDir];\n                } elseif (is_file($vendorDir.'/composer/installed.php')) {\n                    /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */\n                    $required = require $vendorDir.'/composer/installed.php';\n                    self::$installedByVendor[$vendorDir] = $required;\n                    $installed[] = $required;\n                    if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {\n                        self::$installed = $required;\n                        self::$installedIsLocalDir = true;\n                    }\n                }\n                if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {\n                    $copiedLocalDir = true;\n                }\n            }\n        }\n\n        if (null === self::$installed) {\n            // only require the installed.php file if this file is loaded from its dumped location,\n            // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937\n            if (substr(__DIR__, -8, 1) !== 'C' && is_file(__DIR__ . '/installed.php')) {\n                /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */\n                $required = require __DIR__ . '/installed.php';\n                self::$installed = $required;\n            } else {\n                self::$installed = array();\n            }\n        }\n\n        if (self::$installed !== array() && !$copiedLocalDir) {\n            $installed[] = self::$installed;\n        }\n\n        return $installed;\n    }\n}\n"
  },
  {
    "path": "include/vendor/composer/LICENSE",
    "content": "Copyright (c) Nils Adermann, Jordi Boggiano\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is furnished\nto do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "include/vendor/composer/autoload_classmap.php",
    "content": "<?php\n\n// autoload_classmap.php @generated by Composer\n\n$vendorDir = dirname(__DIR__);\n$baseDir = dirname($vendorDir);\n\nreturn array(\n    'Composer\\\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',\n);\n"
  },
  {
    "path": "include/vendor/composer/autoload_namespaces.php",
    "content": "<?php\n\n// autoload_namespaces.php @generated by Composer\n\n$vendorDir = dirname(__DIR__);\n$baseDir = dirname($vendorDir);\n\nreturn array(\n    'Parsedown' => array($vendorDir . '/erusev/parsedown'),\n);\n"
  },
  {
    "path": "include/vendor/composer/autoload_psr4.php",
    "content": "<?php\n\n// autoload_psr4.php @generated by Composer\n\n$vendorDir = dirname(__DIR__);\n$baseDir = dirname($vendorDir);\n\nreturn array(\n    'Composer\\\\CaBundle\\\\' => array($vendorDir . '/composer/ca-bundle/src'),\n    'Abraham\\\\TwitterOAuth\\\\' => array($vendorDir . '/abraham/twitteroauth/src'),\n);\n"
  },
  {
    "path": "include/vendor/composer/autoload_real.php",
    "content": "<?php\n\n// autoload_real.php @generated by Composer\n\nclass ComposerAutoloaderInit69db1f271801e9da41f8ec97675be152\n{\n    private static $loader;\n\n    public static function loadClassLoader($class)\n    {\n        if ('Composer\\Autoload\\ClassLoader' === $class) {\n            require __DIR__ . '/ClassLoader.php';\n        }\n    }\n\n    /**\n     * @return \\Composer\\Autoload\\ClassLoader\n     */\n    public static function getLoader()\n    {\n        if (null !== self::$loader) {\n            return self::$loader;\n        }\n\n        require __DIR__ . '/platform_check.php';\n\n        spl_autoload_register(array('ComposerAutoloaderInit69db1f271801e9da41f8ec97675be152', 'loadClassLoader'), true, true);\n        self::$loader = $loader = new \\Composer\\Autoload\\ClassLoader(\\dirname(__DIR__));\n        spl_autoload_unregister(array('ComposerAutoloaderInit69db1f271801e9da41f8ec97675be152', 'loadClassLoader'));\n\n        require __DIR__ . '/autoload_static.php';\n        call_user_func(\\Composer\\Autoload\\ComposerStaticInit69db1f271801e9da41f8ec97675be152::getInitializer($loader));\n\n        $loader->register(true);\n\n        return $loader;\n    }\n}\n"
  },
  {
    "path": "include/vendor/composer/autoload_static.php",
    "content": "<?php\n\n// autoload_static.php @generated by Composer\n\nnamespace Composer\\Autoload;\n\nclass ComposerStaticInit69db1f271801e9da41f8ec97675be152\n{\n    public static $prefixLengthsPsr4 = array (\n        'C' => \n        array (\n            'Composer\\\\CaBundle\\\\' => 18,\n        ),\n        'A' => \n        array (\n            'Abraham\\\\TwitterOAuth\\\\' => 21,\n        ),\n    );\n\n    public static $prefixDirsPsr4 = array (\n        'Composer\\\\CaBundle\\\\' => \n        array (\n            0 => __DIR__ . '/..' . '/composer/ca-bundle/src',\n        ),\n        'Abraham\\\\TwitterOAuth\\\\' => \n        array (\n            0 => __DIR__ . '/..' . '/abraham/twitteroauth/src',\n        ),\n    );\n\n    public static $prefixesPsr0 = array (\n        'P' => \n        array (\n            'Parsedown' => \n            array (\n                0 => __DIR__ . '/..' . '/erusev/parsedown',\n            ),\n        ),\n    );\n\n    public static $classMap = array (\n        'Composer\\\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',\n    );\n\n    public static function getInitializer(ClassLoader $loader)\n    {\n        return \\Closure::bind(function () use ($loader) {\n            $loader->prefixLengthsPsr4 = ComposerStaticInit69db1f271801e9da41f8ec97675be152::$prefixLengthsPsr4;\n            $loader->prefixDirsPsr4 = ComposerStaticInit69db1f271801e9da41f8ec97675be152::$prefixDirsPsr4;\n            $loader->prefixesPsr0 = ComposerStaticInit69db1f271801e9da41f8ec97675be152::$prefixesPsr0;\n            $loader->classMap = ComposerStaticInit69db1f271801e9da41f8ec97675be152::$classMap;\n\n        }, null, ClassLoader::class);\n    }\n}\n"
  },
  {
    "path": "include/vendor/composer/ca-bundle/LICENSE",
    "content": "Copyright (C) 2016 Composer\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "include/vendor/composer/ca-bundle/README.md",
    "content": "composer/ca-bundle\n==================\n\nSmall utility library that lets you find a path to the system CA bundle,\nand includes a fallback to the Mozilla CA bundle.\n\nOriginally written as part of [composer/composer](https://github.com/composer/composer),\nnow extracted and made available as a stand-alone library.\n\n\nInstallation\n------------\n\nInstall the latest version with:\n\n```bash\n$ composer require composer/ca-bundle\n```\n\n\nRequirements\n------------\n\n* PHP 5.3.2 is required but using the latest version of PHP is highly recommended.\n\n\nBasic usage\n-----------\n\n### `Composer\\CaBundle\\CaBundle`\n\n- `CaBundle::getSystemCaRootBundlePath()`: Returns the system CA bundle path, or a path to the bundled one as fallback\n- `CaBundle::getBundledCaBundlePath()`: Returns the path to the bundled CA file\n- `CaBundle::validateCaFile($filename)`: Validates a CA file using openssl_x509_parse only if it is safe to use\n- `CaBundle::isOpensslParseSafe()`: Test if it is safe to use the PHP function openssl_x509_parse()\n- `CaBundle::reset()`: Resets the static caches\n\n\n#### To use with curl\n\n```php\n$curl = curl_init(\"https://example.org/\");\n\n$caPathOrFile = \\Composer\\CaBundle\\CaBundle::getSystemCaRootBundlePath();\nif (is_dir($caPathOrFile)) {\n    curl_setopt($curl, CURLOPT_CAPATH, $caPathOrFile);\n} else {\n    curl_setopt($curl, CURLOPT_CAINFO, $caPathOrFile);\n}\n\n$result = curl_exec($curl);\n```\n\n#### To use with php streams\n\n```php\n$opts = array(\n    'http' => array(\n        'method' => \"GET\"\n    )\n);\n\n$caPathOrFile = \\Composer\\CaBundle\\CaBundle::getSystemCaRootBundlePath();\nif (is_dir($caPathOrFile)) {\n    $opts['ssl']['capath'] = $caPathOrFile;\n} else {\n    $opts['ssl']['cafile'] = $caPathOrFile;\n}\n\n$context = stream_context_create($opts);\n$result = file_get_contents('https://example.com', false, $context);\n```\n\n#### To use with Guzzle\n\n```php\n$client = new \\GuzzleHttp\\Client([\n    \\GuzzleHttp\\RequestOptions::VERIFY => \\Composer\\CaBundle\\CaBundle::getSystemCaRootBundlePath()\n]);\n```\n\nLicense\n-------\n\ncomposer/ca-bundle is licensed under the MIT License, see the LICENSE file for details.\n"
  },
  {
    "path": "include/vendor/composer/ca-bundle/composer.json",
    "content": "{\n    \"name\": \"composer/ca-bundle\",\n    \"description\": \"Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.\",\n    \"type\": \"library\",\n    \"license\": \"MIT\",\n    \"keywords\": [\n        \"cabundle\",\n        \"cacert\",\n        \"certificate\",\n        \"ssl\",\n        \"tls\"\n    ],\n    \"authors\": [\n        {\n            \"name\": \"Jordi Boggiano\",\n            \"email\": \"j.boggiano@seld.be\",\n            \"homepage\": \"http://seld.be\"\n        }\n    ],\n    \"support\": {\n        \"irc\": \"irc://irc.freenode.org/composer\",\n        \"issues\": \"https://github.com/composer/ca-bundle/issues\"\n    },\n    \"require\": {\n        \"ext-openssl\": \"*\",\n        \"ext-pcre\": \"*\",\n        \"php\": \"^7.2 || ^8.0\"\n    },\n    \"require-dev\": {\n        \"phpunit/phpunit\": \"^8 || ^9\",\n        \"phpstan/phpstan\": \"^1.10\",\n        \"psr/log\": \"^1.0 || ^2.0 || ^3.0\",\n        \"symfony/process\": \"^4.0 || ^5.0 || ^6.0 || ^7.0\"\n    },\n    \"autoload\": {\n        \"psr-4\": {\n            \"Composer\\\\CaBundle\\\\\": \"src\"\n        }\n    },\n    \"autoload-dev\": {\n        \"psr-4\": {\n            \"Composer\\\\CaBundle\\\\\": \"tests\"\n        }\n    },\n    \"extra\": {\n        \"branch-alias\": {\n            \"dev-main\": \"1.x-dev\"\n        }\n    },\n    \"scripts\": {\n        \"test\": \"@php phpunit\",\n        \"phpstan\": \"@php phpstan analyse\"\n    }\n}\n"
  },
  {
    "path": "include/vendor/composer/ca-bundle/res/cacert.pem",
    "content": "##\n## Bundle of CA Root Certificates\n##\n## Certificate data from Mozilla as of: Tue Dec 31 04:12:05 2024 GMT\n##\n## Find updated versions here: https://curl.se/docs/caextract.html\n##\n## This is a bundle of X.509 certificates of public Certificate Authorities\n## (CA). These were automatically extracted from Mozilla's root certificates\n## file (certdata.txt).  This file can be found in the mozilla source tree:\n## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt\n##\n## It contains the certificates in PEM format and therefore\n## can be directly used with curl / libcurl / php_curl, or with\n## an Apache+mod_ssl webserver for SSL client authentication.\n## Just configure this file as the SSLCACertificateFile.\n##\n## Conversion done with mk-ca-bundle.pl version 1.29.\n## SHA256: c99d6d3f8d3d4e47719ba2b648992f5b58b150128d3aca3c05c566d8dc98e116\n##\n\n\nGlobalSign Root CA\n==================\n-----BEGIN CERTIFICATE-----\nMIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx\nGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds\nb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV\nBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD\nVQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa\nDuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc\nTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb\nKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP\nc1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX\ngzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV\nHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF\nAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj\nY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG\nj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH\nhm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC\nX4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==\n-----END CERTIFICATE-----\n\nEntrust.net Premium 2048 Secure Server CA\n=========================================\n-----BEGIN CERTIFICATE-----\nMIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u\nZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp\nbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV\nBAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx\nNzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3\nd3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl\nMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u\nZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A\nMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL\nGp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr\nhRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW\nnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi\nVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E\nBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ\nKoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy\nT/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf\nzX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT\nJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e\nnNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE=\n-----END CERTIFICATE-----\n\nBaltimore CyberTrust Root\n=========================\n-----BEGIN CERTIFICATE-----\nMIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE\nChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li\nZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC\nSUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs\ndGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME\nuyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB\nUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C\nG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9\nXbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr\nl3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI\nVDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB\nBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh\ncL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5\nhbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa\nY71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H\nRCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp\n-----END CERTIFICATE-----\n\nEntrust Root Certification Authority\n====================================\n-----BEGIN CERTIFICATE-----\nMIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV\nBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw\nb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG\nA1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0\nMloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu\nMTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu\nY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v\ndCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\nALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz\nA9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww\nCj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68\nj6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN\nrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw\nDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1\nMzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH\nhmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA\nA4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM\nY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa\nv52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS\nW3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0\ntHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8\n-----END CERTIFICATE-----\n\nComodo AAA Services root\n========================\n-----BEGIN CERTIFICATE-----\nMIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS\nR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg\nTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw\nMFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl\nc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV\nBAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\nggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG\nC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs\ni14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW\nY19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH\nYpy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK\nIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f\nBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl\ncy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz\nLmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm\n7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz\nRt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z\n8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C\n12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==\n-----END CERTIFICATE-----\n\nQuoVadis Root CA 2\n==================\n-----BEGIN CERTIFICATE-----\nMIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT\nEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx\nODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM\naW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6\nXJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk\nlvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB\nlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy\nlZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt\n66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn\nwQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh\nD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy\nBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie\nJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud\nDgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU\na6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT\nElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv\nZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3\nUIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm\nVjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK\n+JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW\nIozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1\nWVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X\nf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II\n4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8\nVCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u\n-----END CERTIFICATE-----\n\nQuoVadis Root CA 3\n==================\n-----BEGIN CERTIFICATE-----\nMIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT\nEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx\nOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM\naW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg\nDhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij\nKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K\nDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv\nBNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp\np5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8\nnT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX\nMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM\nGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz\nuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT\nBgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj\nYXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0\naWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB\nBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD\nVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4\nywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE\nAxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV\nqyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s\nhvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z\nPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2\nPb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp\n8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC\nbjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu\ng/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p\nvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr\nqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=\n-----END CERTIFICATE-----\n\nXRamp Global CA Root\n====================\n-----BEGIN CERTIFICATE-----\nMIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE\nBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj\ndXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB\ndXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx\nHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg\nU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu\nIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx\nfoArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE\nzG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs\nAxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry\nxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud\nEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap\noCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC\nAQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc\n/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt\nqZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n\nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz\n8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=\n-----END CERTIFICATE-----\n\nGo Daddy Class 2 CA\n===================\n-----BEGIN CERTIFICATE-----\nMIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY\nVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp\nZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG\nA1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g\nRGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD\nggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv\n2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32\nqRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j\nYGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY\nvLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O\nBBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o\natTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu\nMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG\nA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim\nPQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt\nI3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ\nHmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI\nLs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b\nvZ8=\n-----END CERTIFICATE-----\n\nStarfield Class 2 CA\n====================\n-----BEGIN CERTIFICATE-----\nMIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc\nU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg\nQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo\nMQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG\nA1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG\nSIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY\nbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ\nJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm\nepsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN\nF4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF\nMIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f\nhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo\nbm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g\nQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs\nafPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM\nPUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl\nxy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD\nKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3\nQBFGmh95DmK/D5fs4C8fF5Q=\n-----END CERTIFICATE-----\n\nDigiCert Assured ID Root CA\n===========================\n-----BEGIN CERTIFICATE-----\nMIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG\nEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw\nIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx\nMTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL\nExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO\n9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy\nUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW\n/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy\noeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf\nGHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF\n66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq\nhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc\nEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn\nSbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i\n8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe\n+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==\n-----END CERTIFICATE-----\n\nDigiCert Global Root CA\n=======================\n-----BEGIN CERTIFICATE-----\nMIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG\nEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw\nHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw\nMDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3\ndy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq\nhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn\nTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5\nBmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H\n4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y\n7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB\no2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm\n8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF\nBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr\nEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt\ntep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886\nUAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\nCAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n-----END CERTIFICATE-----\n\nDigiCert High Assurance EV Root CA\n==================================\n-----BEGIN CERTIFICATE-----\nMIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG\nEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw\nKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw\nMFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ\nMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu\nY2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t\nMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS\nOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3\nMRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ\nNAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe\nh10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB\nAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY\nJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ\nV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp\nmyPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK\nmNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe\nvEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K\n-----END CERTIFICATE-----\n\nSwissSign Gold CA - G2\n======================\n-----BEGIN CERTIFICATE-----\nMIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw\nEwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN\nMDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp\nc3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B\nAQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq\nt2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C\njCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg\nvd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF\nylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR\nAiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend\njIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO\npeUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR\n7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi\nGqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw\nAwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64\nOfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov\nL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm\n5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr\n44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf\nMke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m\nGu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp\nmo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk\nvC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf\nKzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br\nNU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj\nviOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ\n-----END CERTIFICATE-----\n\nSwissSign Silver CA - G2\n========================\n-----BEGIN CERTIFICATE-----\nMIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT\nBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X\nDTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3\naXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG\n9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644\nN0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm\n+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH\n6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu\nMGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h\nqAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5\nFZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs\nROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc\ncelM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X\nCO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/\nBAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB\ntjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0\ncDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P\n4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F\nkWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L\n3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx\n/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa\nDGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP\ne97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu\nWxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ\nDIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub\nDgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u\n-----END CERTIFICATE-----\n\nSecureTrust CA\n==============\n-----BEGIN CERTIFICATE-----\nMIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG\nEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy\ndXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe\nBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC\nASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX\nOZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t\nDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH\nGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b\n01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH\nursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/\nBAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj\naHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ\nKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu\nSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf\nmbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ\nnMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR\n3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=\n-----END CERTIFICATE-----\n\nSecure Global CA\n================\n-----BEGIN CERTIFICATE-----\nMIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG\nEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH\nbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg\nMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg\nQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx\nYDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ\nbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g\n8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV\nHDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi\n0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud\nEwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn\noCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA\nMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+\nOYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn\nCDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5\n3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc\nf8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW\n-----END CERTIFICATE-----\n\nCOMODO Certification Authority\n==============================\n-----BEGIN CERTIFICATE-----\nMIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE\nBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG\nA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1\ndGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb\nMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD\nT01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH\n+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww\nxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV\n4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA\n1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI\nrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E\nBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k\nb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC\nAQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP\nOGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/\nRxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc\nIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN\n+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==\n-----END CERTIFICATE-----\n\nCOMODO ECC Certification Authority\n==================================\n-----BEGIN CERTIFICATE-----\nMIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC\nR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE\nChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB\ndXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix\nGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR\nQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo\nb3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X\n4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni\nwz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E\nBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG\nFAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA\nU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=\n-----END CERTIFICATE-----\n\nCertigna\n========\n-----BEGIN CERTIFICATE-----\nMIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw\nEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3\nMDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI\nQ2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q\nXOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH\nGxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p\nogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg\nDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf\nIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ\ntCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ\nBgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J\nSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA\nhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+\nImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu\nPBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY\n1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw\nWyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==\n-----END CERTIFICATE-----\n\nePKI Root Certification Authority\n=================================\n-----BEGIN CERTIFICATE-----\nMIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG\nEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg\nUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx\nMjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq\nMCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B\nAQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs\nIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi\nlTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv\nqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX\n12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O\nWQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+\nETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao\nlQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/\nvv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi\nZo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi\nMAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH\nClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0\n1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq\nKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV\nxrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP\nNXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r\nGNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE\nxJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx\ngMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy\nsP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD\nBCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw=\n-----END CERTIFICATE-----\n\ncertSIGN ROOT CA\n================\n-----BEGIN CERTIFICATE-----\nMIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD\nVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa\nFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE\nCxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I\nJUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH\nrfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2\nssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD\n0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943\nAAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B\nAf8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB\nAQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8\nSG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0\nx2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt\nvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz\nTogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD\n-----END CERTIFICATE-----\n\nNetLock Arany (Class Gold) Főtanúsítvány\n========================================\n-----BEGIN CERTIFICATE-----\nMIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G\nA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610\ndsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB\ncmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx\nMjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO\nZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv\nbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6\nc8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu\n0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw\n/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk\nH3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw\nfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1\nneWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB\nBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW\nqZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta\nYtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC\nbLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna\nNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu\ndZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=\n-----END CERTIFICATE-----\n\nMicrosec e-Szigno Root CA 2009\n==============================\n-----BEGIN CERTIFICATE-----\nMIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER\nMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv\nc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o\ndTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE\nBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt\nU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA\nfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG\n0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA\npxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm\n1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC\nAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf\nQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE\nFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o\nlZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX\nI/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775\ntyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02\nyULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi\nLXpUq3DDfSJlgnCW\n-----END CERTIFICATE-----\n\nGlobalSign Root CA - R3\n=======================\n-----BEGIN CERTIFICATE-----\nMIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv\nYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh\nbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT\naWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln\nbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt\niHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ\n0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3\nrHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl\nOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2\nxmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE\nFI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7\nlgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8\nEpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E\nbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18\nYIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r\nkpeDMdmztcpHWD9f\n-----END CERTIFICATE-----\n\nIzenpe.com\n==========\n-----BEGIN CERTIFICATE-----\nMIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG\nEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz\nMTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu\nQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ\n03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK\nClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU\n+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC\nPCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT\nOTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK\nF7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK\n0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+\n0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB\nleStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID\nAQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+\nSVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG\nNjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx\nMCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O\nBBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l\nFn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga\nkEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q\nhT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs\ng1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5\naTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5\nnXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC\nClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo\nQ0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z\nWrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==\n-----END CERTIFICATE-----\n\nGo Daddy Root Certificate Authority - G2\n========================================\n-----BEGIN CERTIFICATE-----\nMIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT\nB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu\nMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5\nMDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6\nb25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G\nA1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI\nhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq\n9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD\n+qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd\nfMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl\nNAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC\nMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9\nBUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac\nvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r\n5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV\nN8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO\nLPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1\n-----END CERTIFICATE-----\n\nStarfield Root Certificate Authority - G2\n=========================================\n-----BEGIN CERTIFICATE-----\nMIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT\nB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s\nb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0\neSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw\nDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg\nVGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB\ndXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv\nW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs\nbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk\nN3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf\nZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU\nJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC\nAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol\nTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx\n4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw\nF5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K\npL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ\nc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0\n-----END CERTIFICATE-----\n\nStarfield Services Root Certificate Authority - G2\n==================================================\n-----BEGIN CERTIFICATE-----\nMIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT\nB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s\nb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl\nIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV\nBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT\ndGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg\nUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2\nh/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa\nhHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP\nLJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB\nrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw\nAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG\nSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP\nE95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy\nxQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd\niEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza\nYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6\n-----END CERTIFICATE-----\n\nAffirmTrust Commercial\n======================\n-----BEGIN CERTIFICATE-----\nMIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS\nBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw\nMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly\nbVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF\nAAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb\nDuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV\nC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6\nBfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww\nMmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV\nHQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC\nAQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG\nhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi\nqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv\n0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh\nsUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=\n-----END CERTIFICATE-----\n\nAffirmTrust Networking\n======================\n-----BEGIN CERTIFICATE-----\nMIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS\nBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw\nMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly\nbVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF\nAAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE\nHi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI\ndIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24\n/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb\nh+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV\nHQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC\nAQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu\nUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6\n12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23\nWJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9\n/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=\n-----END CERTIFICATE-----\n\nAffirmTrust Premium\n===================\n-----BEGIN CERTIFICATE-----\nMIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS\nBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy\nOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy\ndXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A\nMIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn\nBKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV\n5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs\n+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd\nGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R\np9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI\nS+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04\n6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5\n/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo\n+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB\n/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv\nMiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg\nNt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC\n6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S\nL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK\n+4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV\nBtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg\nIxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60\ng2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb\nzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw==\n-----END CERTIFICATE-----\n\nAffirmTrust Premium ECC\n=======================\n-----BEGIN CERTIFICATE-----\nMIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV\nBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx\nMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U\ncnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA\nIgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ\nN8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW\nBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK\nBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X\n57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM\neQ==\n-----END CERTIFICATE-----\n\nCertum Trusted Network CA\n=========================\n-----BEGIN CERTIFICATE-----\nMIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK\nExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv\nbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy\nMTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU\nZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5\nMSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC\nAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC\nl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J\nJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4\nfOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0\ncvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB\nAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw\nDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj\njSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1\nmS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj\nZt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI\n03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=\n-----END CERTIFICATE-----\n\nTWCA Root Certification Authority\n=================================\n-----BEGIN CERTIFICATE-----\nMIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ\nVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh\ndGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG\nEwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB\nIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\nAoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx\nQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC\noi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP\n4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r\ny+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB\nBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG\n9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC\nmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW\nQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY\nT0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny\nYh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==\n-----END CERTIFICATE-----\n\nSecurity Communication RootCA2\n==============================\n-----BEGIN CERTIFICATE-----\nMIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc\nU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh\ndGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC\nSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy\naXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\nANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++\n+T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R\n3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV\nspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K\nEOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8\nQIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB\nCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj\nu/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk\n3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q\ntnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29\nmvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03\n-----END CERTIFICATE-----\n\nActalis Authentication Root CA\n==============================\n-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM\nBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE\nAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky\nMjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz\nIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290\nIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ\nwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa\nby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6\nzfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f\nYVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2\noxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l\nEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7\nhNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8\nEBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5\njF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY\niDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt\nifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI\nWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0\nJZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx\nK3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+\nXlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC\n4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo\n2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz\nlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem\nOR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9\nvwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==\n-----END CERTIFICATE-----\n\nBuypass Class 2 Root CA\n=======================\n-----BEGIN CERTIFICATE-----\nMIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU\nQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X\nDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1\neXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1\ng1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn\n9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b\n/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU\nCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff\nawrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI\nzRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn\nBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX\nUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs\nM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD\nVR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF\nAAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s\nA20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI\nosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S\naq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd\nDnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD\nLfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0\noyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC\nwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS\nCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN\nrJgWVqA=\n-----END CERTIFICATE-----\n\nBuypass Class 3 Root CA\n=======================\n-----BEGIN CERTIFICATE-----\nMIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU\nQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X\nDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1\neXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH\nsJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR\n5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh\n7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ\nZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH\n2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV\n/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ\nRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA\nXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq\nj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD\nVR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF\nAAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV\ncSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G\nuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG\nQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8\nZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2\nKSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz\n6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug\nUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe\neOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi\nCp/HuZc=\n-----END CERTIFICATE-----\n\nT-TeleSec GlobalRoot Class 3\n============================\n-----BEGIN CERTIFICATE-----\nMIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM\nIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU\ncnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx\nMDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz\ndGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD\nZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3\nDQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK\n9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU\nNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF\niP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W\n0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA\nMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr\nAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb\nfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT\nucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h\nP0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml\ne9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==\n-----END CERTIFICATE-----\n\nD-TRUST Root Class 3 CA 2 2009\n==============================\n-----BEGIN CERTIFICATE-----\nMIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK\nDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe\nFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE\nLVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD\nER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA\nBF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv\nKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z\np+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC\nAwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ\n4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y\neS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw\nMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G\nPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw\nOS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm\n2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0\no3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV\ndT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph\nX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I=\n-----END CERTIFICATE-----\n\nD-TRUST Root Class 3 CA 2 EV 2009\n=================================\n-----BEGIN CERTIFICATE-----\nMIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK\nDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw\nOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK\nDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw\nOTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS\negpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh\nzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T\n7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60\nsUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35\n11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv\ncop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v\nZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El\nMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp\nb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh\nc3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+\nPPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05\nnsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX\nANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA\nNCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv\nw9y4AyHqnxbxLFS1\n-----END CERTIFICATE-----\n\nCA Disig Root R2\n================\n-----BEGIN CERTIFICATE-----\nMIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw\nEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp\nZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx\nEzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp\nc2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC\nw3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia\nxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7\nA7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S\nGBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV\ng8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa\n5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE\nkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A\nAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i\nFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV\nHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u\nQu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM\ntCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV\nsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je\ndR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8\n1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx\nmHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01\nutI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0\nsorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg\nUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV\n7+ZtsH8tZ/3zbBt1RqPlShfppNcL\n-----END CERTIFICATE-----\n\nACCVRAIZ1\n=========\n-----BEGIN CERTIFICATE-----\nMIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB\nSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1\nMDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH\nUEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM\njmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0\nRGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD\naaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ\n0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG\nWuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7\n8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR\n5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J\n9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK\nQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw\nOi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu\nY3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2\nVuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM\nHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA\nQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh\nAO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA\nYwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj\nAHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA\nIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk\naHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0\ndHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2\nMV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI\nhvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E\nR9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN\nYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49\nnCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ\nTS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3\nsCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h\nI6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg\nNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd\n3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p\nEfbRD0tVNEYqi4Y7\n-----END CERTIFICATE-----\n\nTWCA Global Root CA\n===================\n-----BEGIN CERTIFICATE-----\nMIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT\nCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD\nQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK\nEwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg\nQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C\nnJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV\nr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR\nQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV\ntTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W\nKKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99\nsy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p\nyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn\nkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI\nzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC\nAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g\ncFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn\nLhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M\n8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg\n/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg\nlPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP\nA9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m\ni4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8\nEHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3\nzqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0=\n-----END CERTIFICATE-----\n\nTeliaSonera Root CA v1\n======================\n-----BEGIN CERTIFICATE-----\nMIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE\nCgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4\nMTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW\nVGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+\n6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA\n3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k\nB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn\nXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH\noLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3\nF0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ\noWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7\ngUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc\nTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB\nAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW\nDNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm\nzqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx\n0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW\npb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV\nG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc\nc41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT\nJsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2\nqReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6\nY2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems\nWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY=\n-----END CERTIFICATE-----\n\nT-TeleSec GlobalRoot Class 2\n============================\n-----BEGIN CERTIFICATE-----\nMIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM\nIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU\ncnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx\nMDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz\ndGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD\nZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3\nDQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ\nSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F\nvudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970\n2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV\nWOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA\nMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy\nYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4\nr6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf\nvNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR\n3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN\n9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg==\n-----END CERTIFICATE-----\n\nAtos TrustedRoot 2011\n=====================\n-----BEGIN CERTIFICATE-----\nMIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU\ncnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4\nMzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG\nA1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV\nhTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr\n54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+\nDgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320\nHLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR\nz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R\nl+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ\nbNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB\nCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h\nk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh\nTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9\n61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G\n3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed\n-----END CERTIFICATE-----\n\nQuoVadis Root CA 1 G3\n=====================\n-----BEGIN CERTIFICATE-----\nMIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG\nA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv\nb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN\nMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg\nRzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE\nPBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm\nPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6\nPser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN\nofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l\ng6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV\n7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX\n9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f\niyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg\nt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD\nAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI\nhvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC\nMTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3\nGPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct\nTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP\n+V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh\n3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa\nwx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6\nO0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0\nFU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV\nhMJKzRwuJIczYOXD\n-----END CERTIFICATE-----\n\nQuoVadis Root CA 2 G3\n=====================\n-----BEGIN CERTIFICATE-----\nMIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG\nA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv\nb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN\nMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg\nRzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh\nZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY\nNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t\noIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o\nMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l\nV0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo\nL1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ\nsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD\n6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh\nlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD\nAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI\nhvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66\nAarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K\npVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9\nx52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz\ndWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X\nU/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw\nmNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD\nzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN\nJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr\nO3jtZsSOeWmD3n+M\n-----END CERTIFICATE-----\n\nQuoVadis Root CA 3 G3\n=====================\n-----BEGIN CERTIFICATE-----\nMIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG\nA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv\nb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN\nMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg\nRzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286\nIxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL\nMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe\n6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3\nI4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U\nVDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7\n5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi\nMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM\ndyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt\nrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD\nAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI\nhvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px\nKGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS\nt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ\nTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du\nDcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib\nIh6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD\nhPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX\n0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW\ndSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2\nPpxxVJkES/1Y+Zj0\n-----END CERTIFICATE-----\n\nDigiCert Assured ID Root G2\n===========================\n-----BEGIN CERTIFICATE-----\nMIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG\nEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw\nIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw\nMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL\nExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH\n35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq\nbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw\nVWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP\nYLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn\nlTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO\nw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv\n0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz\nd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW\nhsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M\njomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo\nIhNzbM8m9Yop5w==\n-----END CERTIFICATE-----\n\nDigiCert Assured ID Root G3\n===========================\n-----BEGIN CERTIFICATE-----\nMIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV\nUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD\nVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1\nMTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\nd3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ\nBgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb\nRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs\nKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF\nUaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy\nYZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy\n1vUhZscv6pZjamVFkpUBtA==\n-----END CERTIFICATE-----\n\nDigiCert Global Root G2\n=======================\n-----BEGIN CERTIFICATE-----\nMIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG\nEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw\nHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx\nMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3\ndy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq\nhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ\nkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO\n3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV\nBJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM\nUNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB\no0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu\n5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr\nF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U\nWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH\nQRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/\niyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl\nMrY=\n-----END CERTIFICATE-----\n\nDigiCert Global Root G3\n=======================\n-----BEGIN CERTIFICATE-----\nMIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV\nUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD\nVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw\nMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k\naWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C\nAQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O\nYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP\nBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp\nYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y\n3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34\nVOKa5Vt8sycX\n-----END CERTIFICATE-----\n\nDigiCert Trusted Root G4\n========================\n-----BEGIN CERTIFICATE-----\nMIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG\nEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw\nHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1\nMTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\nd3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G\nCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp\npz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o\nk3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa\nvOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY\nQJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6\nMUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm\nmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7\nf/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH\ndL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8\noR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud\nDwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD\nggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY\nZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr\nyF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy\n7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah\nixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN\n5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb\n/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa\n5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK\nG48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP\n82Z+\n-----END CERTIFICATE-----\n\nCOMODO RSA Certification Authority\n==================================\n-----BEGIN CERTIFICATE-----\nMIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkGA1UE\nBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG\nA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv\nbiBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMC\nR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE\nChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBB\ndXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3Fz0Rn\ndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZ\nFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+\n5eNu/Nio5JIk2kNrYrhV/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pG\nx8cgoLEfZd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z+pUX\n2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7wqP/0uK3pN/u6uPQL\nOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZahSL0896+1DSJMwBGB7FY79tOi4lu3\nsgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVICu9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+C\nGCe01a60y1Dma/RMhnEw6abfFobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5\nWdYgGq/yapiqcrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E\nFgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w\nDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvlwFTPoCWOAvn9sKIN9SCYPBMt\nrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+\nnq6PK7o9mfjYcwlYRm6mnPTXJ9OV2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSg\ntZx8jb8uk2IntznaFxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwW\nsRqZCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiKboHGhfKp\npC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmckejkk9u+UJueBPSZI9FoJA\nzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yLS0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHq\nZJx64SIDqZxubw5lT2yHh17zbqD5daWbQOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk52\n7RH89elWsn2/x20Kk4yl0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7I\nLaZRfyHBNVOFBkpdn627G190\n-----END CERTIFICATE-----\n\nUSERTrust RSA Certification Authority\n=====================================\n-----BEGIN CERTIFICATE-----\nMIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UE\nBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK\nExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh\ndGlvbiBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UE\nBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK\nExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh\ndGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCAEmUXNg7D2wiz\n0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2j\nY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkYtJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFn\nRghRy4YUVD+8M/5+bJz/Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O\n+T23LLb2VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT79uq\n/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6c0Plfg6lZrEpfDKE\nY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmTYo61Zs8liM2EuLE/pDkP2QKe6xJM\nlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97lc6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8\nyexDJtC/QV9AqURE9JnnV4eeUB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+\neLf8ZxXhyVeEHg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd\nBgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF\nMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPFUp/L+M+ZBn8b2kMVn54CVVeW\nFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KOVWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ\n7l8wXEskEVX/JJpuXior7gtNn3/3ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQ\nEg9zKC7F4iRO/Fjs8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM\n8WcRiQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYzeSf7dNXGi\nFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZXHlKYC6SQK5MNyosycdi\nyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9c\nJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRBVXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGw\nsAvgnEzDHNb842m1R0aBL6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gx\nQ+6IHdfGjjxDah2nGN59PRbxYvnKkKj9\n-----END CERTIFICATE-----\n\nUSERTrust ECC Certification Authority\n=====================================\n-----BEGIN CERTIFICATE-----\nMIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC\nVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU\naGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv\nbiBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC\nVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU\naGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv\nbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2\n0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez\nnPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV\nHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB\nHU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu\n9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=\n-----END CERTIFICATE-----\n\nGlobalSign ECC Root CA - R5\n===========================\n-----BEGIN CERTIFICATE-----\nMIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb\nR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD\nEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb\nR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD\nEwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6\nSFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS\nh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd\nBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx\nuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7\nyFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3\n-----END CERTIFICATE-----\n\nIdenTrust Commercial Root CA 1\n==============================\n-----BEGIN CERTIFICATE-----\nMIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG\nEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS\nb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES\nMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB\nIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld\nhNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/\nmNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi\n1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C\nXZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl\n3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy\nNeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV\nWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg\nxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix\nuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC\nAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI\nhvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH\n6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg\nghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt\nozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV\nYjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX\nfeu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro\nkTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe\n2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz\nZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R\ncGzM7vRX+Bi6hG6H\n-----END CERTIFICATE-----\n\nIdenTrust Public Sector Root CA 1\n=================================\n-----BEGIN CERTIFICATE-----\nMIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG\nEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv\nciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV\nUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS\nb290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy\nP4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6\nHi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI\nrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf\nqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS\nmJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn\nol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh\nLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v\niDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL\n4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B\nAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw\nDQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj\nt2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A\nmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt\nGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt\nm6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx\nNRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4\nMhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI\najjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC\nZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ\n3Wl9af0AVqW3rLatt8o+Ae+c\n-----END CERTIFICATE-----\n\nEntrust Root Certification Authority - G2\n=========================================\n-----BEGIN CERTIFICATE-----\nMIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV\nBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy\nbXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug\nb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw\nHhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT\nDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx\nOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s\neTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi\nMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP\n/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz\nHHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU\ns/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y\nTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx\nAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6\n0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z\niXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ\nRkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi\nnWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+\nvGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO\ne4pIb4tF9g==\n-----END CERTIFICATE-----\n\nEntrust Root Certification Authority - EC1\n==========================================\n-----BEGIN CERTIFICATE-----\nMIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx\nFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn\nYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl\nZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5\nIC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw\nFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs\nLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg\ndXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt\nIEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy\nAsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef\n9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE\nFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h\nvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8\nkmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G\n-----END CERTIFICATE-----\n\nCFCA EV ROOT\n============\n-----BEGIN CERTIFICATE-----\nMIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE\nCgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB\nIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw\nMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD\nDAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV\nBU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD\n7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN\nuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW\nZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7\nxzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f\npy25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K\ngWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol\nhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ\ntqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf\nBgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB\n/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB\nACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q\necsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua\n4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG\nE5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX\nBDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn\naH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy\nPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX\nkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C\nekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su\n-----END CERTIFICATE-----\n\nOISTE WISeKey Global Root GB CA\n===============================\n-----BEGIN CERTIFICATE-----\nMIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG\nEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl\nZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw\nMzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD\nVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds\nb2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX\nscriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP\nrby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk\n9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o\nQnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg\nGUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB\n/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI\nhvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD\ndHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0\nVQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui\nHZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic\nNc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM=\n-----END CERTIFICATE-----\n\nSZAFIR ROOT CA2\n===============\n-----BEGIN CERTIFICATE-----\nMIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG\nA1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV\nBAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ\nBgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD\nVQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q\nqEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK\nDJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE\n2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ\nckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi\nieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P\nAQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC\nAQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5\nO/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67\noPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul\n4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6\n+/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw==\n-----END CERTIFICATE-----\n\nCertum Trusted Network CA 2\n===========================\n-----BEGIN CERTIFICATE-----\nMIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE\nBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1\nbSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y\nayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ\nTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl\ncnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB\nIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9\n7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o\nCgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b\nRr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p\nuTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130\nGO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ\n9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB\nRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye\nhizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM\nBhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD\nAQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI\nhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW\nAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA\nL55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo\nclm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM\npkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb\nw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo\nJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm\nypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX\nis7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7\nzAYspsbiDrW5viSP\n-----END CERTIFICATE-----\n\nHellenic Academic and Research Institutions RootCA 2015\n=======================================================\n-----BEGIN CERTIFICATE-----\nMIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT\nBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0\naW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl\nYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx\nMTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg\nQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV\nBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw\nMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv\nbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh\niGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+\n6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd\nFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr\ni5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F\nGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2\nfu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu\niNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc\nBw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD\nAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI\nhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+\nD1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM\nd/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y\nd+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn\n82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb\ndavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F\nJej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt\nJ94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa\nJI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q\np/UsQu0yrbYhnr68\n-----END CERTIFICATE-----\n\nHellenic Academic and Research Institutions ECC RootCA 2015\n===========================================================\n-----BEGIN CERTIFICATE-----\nMIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0\naGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u\ncyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj\naCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw\nMzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj\nIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD\nVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290\nQ0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP\ndJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK\nVlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O\nBBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA\nGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn\ndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR\n-----END CERTIFICATE-----\n\nISRG Root X1\n============\n-----BEGIN CERTIFICATE-----\nMIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UE\nBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQD\nEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQG\nEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMT\nDElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54r\nVygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj1\n3Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8K\nb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCN\nAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ\n4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf\n1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu\nhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQH\nusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/r\nOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4G\nA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY\n9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL\nubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV\n0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwt\nhDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJw\nTdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nx\ne5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZA\nJzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahD\nYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9n\nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJ\nm+kXQ99b21/+jh5Xos1AnX5iItreGCc=\n-----END CERTIFICATE-----\n\nAC RAIZ FNMT-RCM\n================\n-----BEGIN CERTIFICATE-----\nMIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT\nAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw\nMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD\nTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC\nggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf\nqQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr\nbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL\nj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou\n08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw\nWsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT\ntOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ\n47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC\nll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa\ni0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE\nFPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o\ndHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD\nnFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s\nD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ\nj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT\nQfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW\n+YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7\nIxjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d\n8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm\n5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG\nrp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM=\n-----END CERTIFICATE-----\n\nAmazon Root CA 1\n================\n-----BEGIN CERTIFICATE-----\nMIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD\nVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1\nMDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv\nbjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\nggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH\nFzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ\ngLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t\ndHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce\nVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB\n/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3\nDQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM\nCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy\n8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa\n2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2\nxJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5\n-----END CERTIFICATE-----\n\nAmazon Root CA 2\n================\n-----BEGIN CERTIFICATE-----\nMIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD\nVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1\nMDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv\nbjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC\nggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4\nkHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp\nN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9\nAElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd\nfLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx\nkv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS\nbtqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0\nQ5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN\nc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+\n3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw\nDPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA\nA7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY\n+gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE\nYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW\nxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ\ngj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW\naQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV\nYh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3\nKadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi\nJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw=\n-----END CERTIFICATE-----\n\nAmazon Root CA 3\n================\n-----BEGIN CERTIFICATE-----\nMIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG\nEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy\nNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ\nMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB\nf8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr\nZt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43\nrDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc\neGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw==\n-----END CERTIFICATE-----\n\nAmazon Root CA 4\n================\n-----BEGIN CERTIFICATE-----\nMIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG\nEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy\nNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ\nMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN\n/sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri\n83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV\nHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA\nMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1\nAE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA==\n-----END CERTIFICATE-----\n\nTUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1\n=============================================\n-----BEGIN CERTIFICATE-----\nMIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT\nD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr\nIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g\nTWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp\nZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD\nVQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt\nc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth\nbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11\nIFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A\nMIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8\n6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc\nwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0\n3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9\nWSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU\nZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ\nKoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh\nAHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc\nlNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R\ne37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j\nq5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM=\n-----END CERTIFICATE-----\n\nGDCA TrustAUTH R5 ROOT\n======================\n-----BEGIN CERTIFICATE-----\nMIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCQ04xMjAw\nBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8wHQYDVQQD\nDBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVow\nYjELMAkGA1UEBhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ\nIENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0B\nAQEFAAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJjDp6L3TQs\nAlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBjTnnEt1u9ol2x8kECK62p\nOqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+uKU49tm7srsHwJ5uu4/Ts765/94Y9cnrr\npftZTqfrlYwiOXnhLQiPzLyRuEH3FMEjqcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ\n9Cy5WmYqsBebnh52nUpmMUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQ\nxXABZG12ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloPzgsM\nR6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3GkL30SgLdTMEZeS1SZ\nD2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeCjGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4\noR24qoAATILnsn8JuLwwoC8N9VKejveSswoAHQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx\n9hoh49pwBiFYFIeFd3mqgnkCAwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlR\nMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg\np8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZmDRd9FBUb1Ov9\nH5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5COmSdI31R9KrO9b7eGZONn35\n6ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ryL3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd\n+PwyvzeG5LuOmCd+uh8W4XAR8gPfJWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQ\nHtZa37dG/OaG+svgIHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBD\nF8Io2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV09tL7ECQ\n8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQXR4EzzffHqhmsYzmIGrv\n/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrqT8p+ck0LcIymSLumoRT2+1hEmRSuqguT\naaApJUqlyyvdimYHFngVV3Eb7PVHhPOeMTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g==\n-----END CERTIFICATE-----\n\nSSL.com Root Certification Authority RSA\n========================================\n-----BEGIN CERTIFICATE-----\nMIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxDjAM\nBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24x\nMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYw\nMjEyMTczOTM5WhcNNDEwMjEyMTczOTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx\nEDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NM\nLmNvbSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcNAQEBBQAD\nggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2RxFdHaxh3a3by/ZPkPQ/C\nFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aXqhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8\nP2FI7bADFB0QDksZ4LtO7IZl/zbzXmcCC52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/ge\noeOy3ZExqysdBP+lSgQ36YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkp\nk8zruFvh/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrFYD3Z\nfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93EJNyAKoFBbZQ+yODJ\ngUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVcUS4cK38acijnALXRdMbX5J+tB5O2\nUzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi8\n1xtZPCvM8hnIk2snYxnP/Okm+Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4s\nbE6x/c+cCbqiM+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV\nHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4GA1UdDwEB/wQE\nAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGVcpNxJK1ok1iOMq8bs3AD/CUr\ndIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBcHadm47GUBwwyOabqG7B52B2ccETjit3E+ZUf\nijhDPwGFpUenPUayvOUiaPd7nNgsPgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAsl\nu1OJD7OAUN5F7kR/q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjq\nerQ0cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jra6x+3uxj\nMxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90IH37hVZkLId6Tngr75qNJ\nvTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/YK9f1JmzJBjSWFupwWRoyeXkLtoh/D1JI\nPb9s2KJELtFOt3JY04kTlf5Eq/jXixtunLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406y\nwKBjYZC6VWg3dGq2ktufoYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NI\nWuuA8ShYIc2wBlX7Jz9TkHCpBB5XJ7k=\n-----END CERTIFICATE-----\n\nSSL.com Root Certification Authority ECC\n========================================\n-----BEGIN CERTIFICATE-----\nMIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMCVVMxDjAMBgNV\nBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xMTAv\nBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEy\nMTgxNDAzWhcNNDEwMjEyMTgxNDAzWjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAO\nBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv\nbSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuBBAAiA2IA\nBEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI7Z4INcgn64mMU1jrYor+\n8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPgCemB+vNH06NjMGEwHQYDVR0OBBYEFILR\nhXMw5zUE044CkvvlpNHEIejNMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTT\njgKS++Wk0cQh6M0wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCW\ne+0F+S8Tkdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+gA0z\n5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl\n-----END CERTIFICATE-----\n\nSSL.com EV Root Certification Authority RSA R2\n==============================================\n-----BEGIN CERTIFICATE-----\nMIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYTAlVTMQ4w\nDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9u\nMTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy\nMB4XDTE3MDUzMTE4MTQzN1oXDTQyMDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQI\nDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYD\nVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMIICIjAN\nBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvqM0fNTPl9fb69LT3w23jh\nhqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssufOePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7w\ncXHswxzpY6IXFJ3vG2fThVUCAtZJycxa4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTO\nZw+oz12WGQvE43LrrdF9HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+\nB6KjBSYRaZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcAb9Zh\nCBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQGp8hLH94t2S42Oim\n9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQVPWKchjgGAGYS5Fl2WlPAApiiECto\nRHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMOpgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+Slm\nJuwgUHfbSguPvuUCYHBBXtSuUDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48\n+qvWBkofZ6aYMBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV\nHSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa49QaAJadz20Zp\nqJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBWs47LCp1Jjr+kxJG7ZhcFUZh1\n++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nx\nY/hoLVUE0fKNsKTPvDxeH3jnpaAgcLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2G\nguDKBAdRUNf/ktUM79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDz\nOFSz/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXtll9ldDz7\nCTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEmKf7GUmG6sXP/wwyc5Wxq\nlD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKKQbNmC1r7fSOl8hqw/96bg5Qu0T/fkreR\nrwU7ZcegbLHNYhLDkBvjJc40vG93drEQw/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1\nhlMYegouCRw2n5H9gooiS9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX\n9hwJ1C07mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w==\n-----END CERTIFICATE-----\n\nSSL.com EV Root Certification Authority ECC\n===========================================\n-----BEGIN CERTIFICATE-----\nMIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMCVVMxDjAMBgNV\nBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xNDAy\nBgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYw\nMjEyMTgxNTIzWhcNNDEwMjEyMTgxNTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx\nEDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NM\nLmNvbSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB\nBAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMAVIbc/R/fALhBYlzccBYy\n3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1KthkuWnBaBu2+8KGwytAJKaNjMGEwHQYDVR0O\nBBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe\n5d7SgarNqC1kUbbZcpuX5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJ\nN+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm\nm7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg==\n-----END CERTIFICATE-----\n\nGlobalSign Root CA - R6\n=======================\n-----BEGIN CERTIFICATE-----\nMIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEgMB4GA1UECxMX\nR2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds\nb2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQxMjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9i\nYWxTaWduIFJvb3QgQ0EgLSBSNjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFs\nU2lnbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQss\ngrRIxutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1kZguSgMpE\n3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxDaNc9PIrFsmbVkJq3MQbF\nvuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJwLnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqM\nPKq0pPbzlUoSB239jLKJz9CgYXfIWHSw1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+\nazayOeSsJDa38O+2HBNXk7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05O\nWgtH8wY2SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/hbguy\nCLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4nWUx2OVvq+aWh2IMP\n0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpYrZxCRXluDocZXFSxZba/jJvcE+kN\nb7gu3GduyYsRtYQUigAZcIN5kZeR1BonvzceMgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQE\nAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNV\nHSMEGDAWgBSubAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN\nnsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGtIxg93eFyRJa0\nlV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr6155wsTLxDKZmOMNOsIeDjHfrY\nBzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLjvUYAGm0CuiVdjaExUd1URhxN25mW7xocBFym\nFe944Hn+Xds+qkxV/ZoVqW/hpvvfcDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr\n3TsTjxKM4kEaSHpzoHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB1\n0jZpnOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfspA9MRf/T\nuTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+vJJUEeKgDu+6B5dpffItK\noZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+t\nJDfLRVpOoERIyNiwmcUVhAn21klJwGW45hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA=\n-----END CERTIFICATE-----\n\nOISTE WISeKey Global Root GC CA\n===============================\n-----BEGIN CERTIFICATE-----\nMIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJD\nSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEo\nMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRa\nFw00MjA1MDkwOTU4MzNaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQL\nExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh\nbCBSb290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4nieUqjFqdr\nVCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4Wp2OQ0jnUsYd4XxiWD1Ab\nNTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd\nBgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7TrYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0E\nAwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk\nAjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9\n-----END CERTIFICATE-----\n\nUCA Global G2 Root\n==================\n-----BEGIN CERTIFICATE-----\nMIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9MQswCQYDVQQG\nEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBHbG9iYWwgRzIgUm9vdDAeFw0x\nNjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0xCzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlU\ncnVzdDEbMBkGA1UEAwwSVUNBIEdsb2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A\nMIICCgKCAgEAxeYrb3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmT\noni9kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzmVHqUwCoV\n8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/RVogvGjqNO7uCEeBHANBS\nh6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDcC/Vkw85DvG1xudLeJ1uK6NjGruFZfc8o\nLTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIjtm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/\nR+zvWr9LesGtOxdQXGLYD0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBe\nKW4bHAyvj5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6DlNaBa\n4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6iIis7nCs+dwp4wwc\nOxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznPO6Q0ibd5Ei9Hxeepl2n8pndntd97\n8XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O\nBBYEFIHEjMz15DD/pQwIX4wVZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo\n5sOASD0Ee/ojL3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5\n1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl1qnN3e92mI0A\nDs0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oUb3n09tDh05S60FdRvScFDcH9\nyBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LVPtateJLbXDzz2K36uGt/xDYotgIVilQsnLAX\nc47QN6MUPJiVAAwpBVueSUmxX8fjy88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHo\njhJi6IjMtX9Gl8CbEGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZk\nbxqgDMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI+Vg7RE+x\nygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGyYiGqhkCyLmTTX8jjfhFn\nRR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bXUB+K+wb1whnw0A==\n-----END CERTIFICATE-----\n\nUCA Extended Validation Root\n============================\n-----BEGIN CERTIFICATE-----\nMIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQG\nEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9u\nIFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMxMDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8G\nA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIi\nMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrs\niWogD4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvSsPGP2KxF\nRv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aopO2z6+I9tTcg1367r3CTu\neUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dksHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR\n59mzLC52LqGj3n5qiAno8geK+LLNEOfic0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH\n0mK1lTnj8/FtDw5lhIpjVMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KR\nel7sFsLzKuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/TuDv\nB0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41Gsx2VYVdWf6/wFlth\nWG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs1+lvK9JKBZP8nm9rZ/+I8U6laUpS\nNwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQDfwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS\n3H5aBZ8eNJr34RQwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQEL\nBQADggIBADaNl8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR\nap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQVBcZEhrxH9cM\naVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5c6sq1WnIeJEmMX3ixzDx/BR4\ndxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb\n+7lsq+KePRXBOy5nAliRn+/4Qh8st2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOW\nF3sGPjLtx7dCvHaj2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwi\nGpWOvpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2CxR9GUeOc\nGMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmxcmtpzyKEC2IPrNkZAJSi\ndjzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbMfjKaiJUINlK73nZfdklJrX+9ZSCyycEr\ndhh2n1ax\n-----END CERTIFICATE-----\n\nCertigna Root CA\n================\n-----BEGIN CERTIFICATE-----\nMIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAwWjELMAkGA1UE\nBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAwMiA0ODE0NjMwODEwMDAzNjEZ\nMBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0xMzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjda\nMFoxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYz\nMDgxMDAwMzYxGTAXBgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sOty3tRQgX\nstmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9MCiBtnyN6tMbaLOQdLNyz\nKNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPuI9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8\nJXrJhFwLrN1CTivngqIkicuQstDuI7pmTLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16\nXdG+RCYyKfHx9WzMfgIhC59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq\n4NYKpkDfePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3YzIoej\nwpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWTCo/1VTp2lc5ZmIoJ\nlXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1kJWumIWmbat10TWuXekG9qxf5kBdI\njzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp/\n/TBt2dzhauH8XwIDAQABo4IBGjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw\nHQYDVR0OBBYEFBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of\n1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczovL3d3d3cuY2Vy\ndGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilodHRwOi8vY3JsLmNlcnRpZ25h\nLmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYraHR0cDovL2NybC5kaGlteW90aXMuY29tL2Nl\ncnRpZ25hcm9vdGNhLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOIt\nOoldaDgvUSILSo3L6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxP\nTGRGHVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH60BGM+RFq\n7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncBlA2c5uk5jR+mUYyZDDl3\n4bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdio2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd\n8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS\n6Cvu5zHbugRqh5jnxV/vfaci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaY\ntlu3zM63Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayhjWZS\naX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw3kAP+HwV96LOPNde\nE4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0=\n-----END CERTIFICATE-----\n\nemSign Root CA - G1\n===================\n-----BEGIN CERTIFICATE-----\nMIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYDVQQGEwJJTjET\nMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRl\nZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBHMTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgx\nODMwMDBaMGcxCzAJBgNVBAYTAklOMRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVk\naHJhIFRlY2hub2xvZ2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIB\nIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQzf2N4aLTN\nLnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO8oG0x5ZOrRkVUkr+PHB1\ncM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aqd7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHW\nDV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhMtTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ\n6DqS0hdW5TUaQBw+jSztOd9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrH\nhQIDAQABo0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQDAgEG\nMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31xPaOfG1vR2vjTnGs2\nvZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjMwiI/aTvFthUvozXGaCocV685743Q\nNcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6dGNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q\n+Mri/Tm3R7nrft8EI6/6nAYH6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeih\nU80Bv2noWgbyRQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx\niN66zB+Afko=\n-----END CERTIFICATE-----\n\nemSign ECC Root CA - G3\n=======================\n-----BEGIN CERTIFICATE-----\nMIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQGEwJJTjETMBEG\nA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEg\nMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4\nMTgzMDAwWjBrMQswCQYDVQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11\nZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g\nRzMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0WXTsuwYc\n58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xySfvalY8L1X44uT6EYGQIr\nMgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuBzhccLikenEhjQjAOBgNVHQ8BAf8EBAMC\nAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+D\nCBeQyh+KTOgNG3qxrdWBCUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7\njHvrZQnD+JbNR6iC8hZVdyR+EhCVBCyj\n-----END CERTIFICATE-----\n\nemSign Root CA - C1\n===================\n-----BEGIN CERTIFICATE-----\nMIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCVVMx\nEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNp\nZ24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UE\nBhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQD\nExNlbVNpZ24gUm9vdCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+up\nufGZBczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZHdPIWoU/\nXse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH3DspVpNqs8FqOp099cGX\nOFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvHGPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4V\nI5b2P/AgNBbeCsbEBEV5f6f9vtKppa+cxSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleooms\nlMuoaJuvimUnzYnu3Yy1aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+\nXJGFehiqTbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQAD\nggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87/kOXSTKZEhVb3xEp\n/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4kqNPEjE2NuLe/gDEo2APJ62gsIq1\nNnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrGYQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9\nwC68AivTxEDkigcxHpvOJpkT+xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQ\nBmIMMMAVSKeoWXzhriKi4gp6D/piq1JM4fHfyr6DDUI=\n-----END CERTIFICATE-----\n\nemSign ECC Root CA - C3\n=======================\n-----BEGIN CERTIFICATE-----\nMIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQGEwJVUzETMBEG\nA1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMxIDAeBgNVBAMTF2VtU2lnbiBF\nQ0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UE\nBhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQD\nExdlbVNpZ24gRUNDIFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd\n6bciMK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4OjavtisIGJAnB9\nSMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0OBBYEFPtaSNCAIEDyqOkA\nB2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gA\nMGUCMQC02C8Cif22TGK6Q04ThHK1rt0c3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwU\nZOR8loMRnLDRWmFLpg9J0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ==\n-----END CERTIFICATE-----\n\nHongkong Post Root CA 3\n=======================\n-----BEGIN CERTIFICATE-----\nMIIFzzCCA7egAwIBAgIUCBZfikyl7ADJk0DfxMauI7gcWqQwDQYJKoZIhvcNAQELBQAwbzELMAkG\nA1UEBhMCSEsxEjAQBgNVBAgTCUhvbmcgS29uZzESMBAGA1UEBxMJSG9uZyBLb25nMRYwFAYDVQQK\nEw1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25na29uZyBQb3N0IFJvb3QgQ0EgMzAeFw0xNzA2\nMDMwMjI5NDZaFw00MjA2MDMwMjI5NDZaMG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtv\nbmcxEjAQBgNVBAcTCUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMX\nSG9uZ2tvbmcgUG9zdCBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz\niNfqzg8gTr7m1gNt7ln8wlffKWihgw4+aMdoWJwcYEuJQwy51BWy7sFOdem1p+/l6TWZ5Mwc50tf\njTMwIDNT2aa71T4Tjukfh0mtUC1Qyhi+AViiE3CWu4mIVoBc+L0sPOFMV4i707mV78vH9toxdCim\n5lSJ9UExyuUmGs2C4HDaOym71QP1mbpV9WTRYA6ziUm4ii8F0oRFKHyPaFASePwLtVPLwpgchKOe\nsL4jpNrcyCse2m5FHomY2vkALgbpDDtw1VAliJnLzXNg99X/NWfFobxeq81KuEXryGgeDQ0URhLj\n0mRiikKYvLTGCAj4/ahMZJx2Ab0vqWwzD9g/KLg8aQFChn5pwckGyuV6RmXpwtZQQS4/t+TtbNe/\nJgERohYpSms0BpDsE9K2+2p20jzt8NYt3eEV7KObLyzJPivkaTv/ciWxNoZbx39ri1UbSsUgYT2u\ny1DhCDq+sI9jQVMwCFk8mB13umOResoQUGC/8Ne8lYePl8X+l2oBlKN8W4UdKjk60FSh0Tlxnf0h\n+bV78OLgAo9uliQlLKAeLKjEiafv7ZkGL7YKTE/bosw3Gq9HhS2KX8Q0NEwA/RiTZxPRN+ZItIsG\nxVd7GYYKecsAyVKvQv83j+GjHno9UKtjBucVtT+2RTeUN7F+8kjDf8V1/peNRY8apxpyKBpADwID\nAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQXnc0e\ni9Y5K3DTXNSguB+wAPzFYTAdBgNVHQ4EFgQUF53NHovWOStw01zUoLgfsAD8xWEwDQYJKoZIhvcN\nAQELBQADggIBAFbVe27mIgHSQpsY1Q7XZiNc4/6gx5LS6ZStS6LG7BJ8dNVI0lkUmcDrudHr9Egw\nW62nV3OZqdPlt9EuWSRY3GguLmLYauRwCy0gUCCkMpXRAJi70/33MvJJrsZ64Ee+bs7Lo3I6LWld\ny8joRTnU+kLBEUx3XZL7av9YROXrgZ6voJmtvqkBZss4HTzfQx/0TW60uhdG/H39h4F5ag0zD/ov\n+BS5gLNdTaqX4fnkGMX41TiMJjz98iji7lpJiCzfeT2OnpA8vUFKOt1b9pq0zj8lMH8yfaIDlNDc\neqFS3m6TjRgm/VWsvY+b0s+v54Ysyx8Jb6NvqYTUc79NoXQbTiNg8swOqn+knEwlqLJmOzj/2ZQw\n9nKEvmhVEA/GcywWaZMH/rFF7buiVWqw2rVKAiUnhde3t4ZEFolsgCs+l6mc1X5VTMbeRRAc6uk7\nnwNT7u56AQIWeNTowr5GdogTPyK7SBIdUgC0An4hGh6cJfTzPV4e0hz5sy229zdcxsshTrD3mUcY\nhcErulWuBurQB7Lcq9CClnXO0lD+mefPL5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB\n60PZ2Pierc+xYw5F9KBaLJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fq\ndBb9HxEGmpv0\n-----END CERTIFICATE-----\n\nMicrosoft ECC Root Certificate Authority 2017\n=============================================\n-----BEGIN CERTIFICATE-----\nMIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV\nUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQgRUND\nIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4\nMjMxNjA0WjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw\nNAYDVQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQ\nBgcqhkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZRogPZnZH6\nthaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYbhGBKia/teQ87zvH2RPUB\neMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIy5lycFIM\n+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlf\nXu5gKcs68tvWMoQZP3zVL8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaR\neNtUjGUBiudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M=\n-----END CERTIFICATE-----\n\nMicrosoft RSA Root Certificate Authority 2017\n=============================================\n-----BEGIN CERTIFICATE-----\nMIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBlMQswCQYDVQQG\nEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQg\nUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIw\nNzE4MjMwMDIzWjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u\nMTYwNAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcw\nggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZNt9GkMml\n7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0ZdDMbRnMlfl7rEqUrQ7e\nS0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw7\n1VdyvD/IybLeS2v4I2wDwAW9lcfNcztmgGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+\ndkC0zVJhUXAoP8XFWvLJjEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49F\nyGcohJUcaDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaGYaRS\nMLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6W6IYZVcSn2i51BVr\nlMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4KUGsTuqwPN1q3ErWQgR5WrlcihtnJ\n0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH+FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJ\nClTUFLkqqNfs+avNJVgyeY+QW5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYw\nDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC\nNxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZCLgLNFgVZJ8og\n6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OCgMNPOsduET/m4xaRhPtthH80\ndK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk\n+ONVFT24bcMKpBLBaYVu32TxU5nhSnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex\n/2kskZGT4d9Mozd2TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDy\nAmH3pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGRxpl/j8nW\nZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiAppGWSZI1b7rCoucL5mxAyE\n7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKT\nc0QWbej09+CVgI+WXTik9KveCjCHk9hNAHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D\n5KbvtwEwXlGjefVwaaZBRA+GsCyRxj3qrg+E\n-----END CERTIFICATE-----\n\ne-Szigno Root CA 2017\n=====================\n-----BEGIN CERTIFICATE-----\nMIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNVBAYTAkhVMREw\nDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUt\nMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJvb3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZa\nFw00MjA4MjIxMjA3MDZaMHExCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UE\nCgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3pp\nZ25vIFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtvxie+RJCx\ns1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+HWyx7xf58etqjYzBhMA8G\nA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSHERUI0arBeAyxr87GyZDv\nvzAEwDAfBgNVHSMEGDAWgBSHERUI0arBeAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEA\ntVfd14pVCzbhhkT61NlojbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxO\nsvxyqltZ+efcMQ==\n-----END CERTIFICATE-----\n\ncertSIGN Root CA G2\n===================\n-----BEGIN CERTIFICATE-----\nMIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNVBAYTAlJPMRQw\nEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjAeFw0xNzAy\nMDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJBgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lH\nTiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP\nADCCAgoCggIBAMDFdRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05\nN0IwvlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZuIt4Imfk\nabBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhpn+Sc8CnTXPnGFiWeI8Mg\nwT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKscpc/I1mbySKEwQdPzH/iV8oScLumZfNp\ndWO9lfsbl83kqK/20U6o2YpxJM02PbyWxPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91Qqh\nngLjYl/rNUssuHLoPj1PrCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732\njcZZroiFDsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fxDTvf\n95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgyLcsUDFDYg2WD7rlc\nz8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6CeWRgKRM+o/1Pcmqr4tTluCRVLERL\niohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1Ud\nDgQWBBSCIS1mxteg4BXrzkwJd8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOB\nywaK8SJJ6ejqkX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC\nb6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQlqiCA2ClV9+BB\n/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0OJD7uNGzcgbJceaBxXntC6Z5\n8hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+cNywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5\nBiKDUyUM/FHE5r7iOZULJK2v0ZXkltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklW\natKcsWMy5WHgUyIOpwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tU\nSxfj03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZkPuXaTH4M\nNMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE1LlSVHJ7liXMvGnjSG4N\n0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MXQRBdJ3NghVdJIgc=\n-----END CERTIFICATE-----\n\nTrustwave Global Certification Authority\n========================================\n-----BEGIN CERTIFICATE-----\nMIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJV\nUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2\nZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9u\nIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJV\nUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2\nZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9u\nIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALldUShLPDeS0YLOvR29\nzd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0XznswuvCAAJWX/NKSqIk4cXGIDtiLK0thAf\nLdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4Bq\nstTnoApTAbqOl5F2brz81Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9o\nWN0EACyW80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotPJqX+\nOsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1lRtzuzWniTY+HKE40\nCz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfwhI0Vcnyh78zyiGG69Gm7DIwLdVcE\nuE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10coos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm\n+9jaJXLE9gCxInm943xZYkqcBW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqj\nifLJS3tBEW1ntwiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud\nEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1UdDwEB/wQEAwIB\nBjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W0OhUKDtkLSGm+J1WE2pIPU/H\nPinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfeuyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0H\nZJDmHvUqoai7PF35owgLEQzxPy0QlG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla\n4gt5kNdXElE1GYhBaCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5R\nvbbEsLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPTMaCm/zjd\nzyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qequ5AvzSxnI9O4fKSTx+O\n856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxhVicGaeVyQYHTtgGJoC86cnn+OjC/QezH\nYj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8h6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu\n3R3y4G5OBVixwJAWKqQ9EEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP\n29FpHOTKyeC2nOnOcXHebD8WpHk=\n-----END CERTIFICATE-----\n\nTrustwave Global ECC P256 Certification Authority\n=================================================\n-----BEGIN CERTIFICATE-----\nMIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYDVQQGEwJVUzER\nMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI\nb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZp\nY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYD\nVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy\ndXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1\nNiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH77bOYj\n43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoNFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqm\nP62jQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt\n0UrrdaVKEJmzsaGLSvcwCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjz\nRM4q3wghDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7\n-----END CERTIFICATE-----\n\nTrustwave Global ECC P384 Certification Authority\n=================================================\n-----BEGIN CERTIFICATE-----\nMIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYDVQQGEwJVUzER\nMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI\nb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZp\nY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYD\nVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy\ndXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4\nNCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGvaDXU1CDFH\nBa5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr\n/TklZvFe/oyujUF5nQlgziip04pt89ZF1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNV\nHQ8BAf8EBQMDBwYAMB0GA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNn\nADBkAjA3AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsCMGcl\nCrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVuSw==\n-----END CERTIFICATE-----\n\nNAVER Global Root Certification Authority\n=========================================\n-----BEGIN CERTIFICATE-----\nMIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEMBQAwaTELMAkG\nA1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRGT1JNIENvcnAuMTIwMAYDVQQD\nDClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4\nNDJaFw0zNzA4MTgyMzU5NTlaMGkxCzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVT\nUyBQTEFURk9STSBDb3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlv\nbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVAiQqrDZBb\nUGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH38dq6SZeWYp34+hInDEW\n+j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lEHoSTGEq0n+USZGnQJoViAbbJAh2+g1G7\nXNr4rRVqmfeSVPc0W+m/6imBEtRTkZazkVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2\naacp+yPOiNgSnABIqKYPszuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4\nYb8ObtoqvC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHfnZ3z\nVHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaGYQ5fG8Ir4ozVu53B\nA0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo0es+nPxdGoMuK8u180SdOqcXYZai\ncdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3aCJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejy\nYhbLgGvtPe31HzClrkvJE+2KAQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNV\nHQ4EFgQU0p+I36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB\nAf8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoNqo0hV4/GPnrK\n21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatjcu3cvuzHV+YwIHHW1xDBE1UB\njCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm+LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bx\nhYTeodoS76TiEJd6eN4MUZeoIUCLhr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTg\nE34h5prCy8VCZLQelHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTH\nD8z7p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8piKCk5XQ\nA76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLRLBT/DShycpWbXgnbiUSY\nqqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oG\nI/hGoiLtk/bdmuYqh7GYVPEi92tF4+KOdh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmg\nkpzNNIaRkPpkUZ3+/uul9XXeifdy\n-----END CERTIFICATE-----\n\nAC RAIZ FNMT-RCM SERVIDORES SEGUROS\n===================================\n-----BEGIN CERTIFICATE-----\nMIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQswCQYDVQQGEwJF\nUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgwFgYDVQRhDA9WQVRFUy1RMjgy\nNjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1SQ00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4\nMTIyMDA5MzczM1oXDTQzMTIyMDA5MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQt\nUkNNMQ4wDAYDVQQLDAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNB\nQyBSQUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuBBAAiA2IA\nBPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LHsbI6GA60XYyzZl2hNPk2\nLEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oKUm8BA06Oi6NCMEAwDwYDVR0TAQH/BAUw\nAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqG\nSM49BAMDA2kAMGYCMQCuSuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoD\nzBOQn5ICMQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJyv+c=\n-----END CERTIFICATE-----\n\nGlobalSign Root R46\n===================\n-----BEGIN CERTIFICATE-----\nMIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUAMEYxCzAJBgNV\nBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJv\nb3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAX\nBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIi\nMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08Es\nCVeJOaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQGvGIFAha/\nr6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud316HCkD7rRlr+/fKYIje\n2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo0q3v84RLHIf8E6M6cqJaESvWJ3En7YEt\nbWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSEy132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvj\nK8Cd+RTyG/FWaha/LIWFzXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD4\n12lPFzYE+cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCNI/on\nccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzsx2sZy/N78CsHpdls\neVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqaByFrgY/bxFn63iLABJzjqls2k+g9\nvXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYD\nVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEM\nBQADggIBAHx47PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg\nJuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti2kM3S+LGteWy\ngxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIkpnnpHs6i58FZFZ8d4kuaPp92\nCC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRFFRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZm\nOUdkLG5NrmJ7v2B0GbhWrJKsFjLtrWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qq\nJZ4d16GLuc1CLgSkZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwye\nqiv5u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP4vkYxboz\nnxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6N3ec592kD3ZDZopD8p/7\nDEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3vouXsXgxT7PntgMTzlSdriVZzH81Xwj3\nQEUxeCp6\n-----END CERTIFICATE-----\n\nGlobalSign Root E46\n===================\n-----BEGIN CERTIFICATE-----\nMIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYxCzAJBgNVBAYT\nAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJvb3Qg\nRTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNV\nBAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcq\nhkjOPQIBBgUrgQQAIgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkB\njtjqR+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGddyXqBPCCj\nQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQxCpCPtsad0kRL\ngLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZk\nvLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+\nCAezNIm8BZ/3Hobui3A=\n-----END CERTIFICATE-----\n\nGLOBALTRUST 2020\n================\n-----BEGIN CERTIFICATE-----\nMIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkGA1UEBhMCQVQx\nIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVT\nVCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYxMDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAh\nBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAy\nMDIwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWi\nD59bRatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9ZYybNpyrO\nVPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3QWPKzv9pj2gOlTblzLmM\nCcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPwyJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCm\nfecqQjuCgGOlYx8ZzHyyZqjC0203b+J+BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKA\nA1GqtH6qRNdDYfOiaxaJSaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9OR\nJitHHmkHr96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj04KlG\nDfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9MedKZssCz3AwyIDMvU\nclOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIwq7ejMZdnrY8XD2zHc+0klGvIg5rQ\nmjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUw\nAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1Ud\nIwQYMBaAFNwuH9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA\nVC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJCXtzoRlgHNQIw\n4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd6IwPS3BD0IL/qMy/pJTAvoe9\niuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf+I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS\n8cE54+X1+NZK3TTN+2/BT+MAi1bikvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2\nHcqtbepBEX4tdJP7wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxS\nvTOBTI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6CMUO+1918\noa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn4rnvyOL2NSl6dPrFf4IF\nYqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+IaFvowdlxfv1k7/9nR4hYJS8+hge9+6jl\ngqispdNpQ80xiEmEU5LAsTkbOYMBMMTyqfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg==\n-----END CERTIFICATE-----\n\nANF Secure Server Root CA\n=========================\n-----BEGIN CERTIFICATE-----\nMIIF7zCCA9egAwIBAgIIDdPjvGz5a7EwDQYJKoZIhvcNAQELBQAwgYQxEjAQBgNVBAUTCUc2MzI4\nNzUxMDELMAkGA1UEBhMCRVMxJzAlBgNVBAoTHkFORiBBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lv\nbjEUMBIGA1UECxMLQU5GIENBIFJhaXoxIjAgBgNVBAMTGUFORiBTZWN1cmUgU2VydmVyIFJvb3Qg\nQ0EwHhcNMTkwOTA0MTAwMDM4WhcNMzkwODMwMTAwMDM4WjCBhDESMBAGA1UEBRMJRzYzMjg3NTEw\nMQswCQYDVQQGEwJFUzEnMCUGA1UEChMeQU5GIEF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uMRQw\nEgYDVQQLEwtBTkYgQ0EgUmFpejEiMCAGA1UEAxMZQU5GIFNlY3VyZSBTZXJ2ZXIgUm9vdCBDQTCC\nAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANvrayvmZFSVgpCjcqQZAZ2cC4Ffc0m6p6zz\nBE57lgvsEeBbphzOG9INgxwruJ4dfkUyYA8H6XdYfp9qyGFOtibBTI3/TO80sh9l2Ll49a2pcbnv\nT1gdpd50IJeh7WhM3pIXS7yr/2WanvtH2Vdy8wmhrnZEE26cLUQ5vPnHO6RYPUG9tMJJo8gN0pcv\nB2VSAKduyK9o7PQUlrZXH1bDOZ8rbeTzPvY1ZNoMHKGESy9LS+IsJJ1tk0DrtSOOMspvRdOoiXse\nzx76W0OLzc2oD2rKDF65nkeP8Nm2CgtYZRczuSPkdxl9y0oukntPLxB3sY0vaJxizOBQ+OyRp1RM\nVwnVdmPF6GUe7m1qzwmd+nxPrWAI/VaZDxUse6mAq4xhj0oHdkLePfTdsiQzW7i1o0TJrH93PB0j\n7IKppuLIBkwC/qxcmZkLLxCKpvR/1Yd0DVlJRfbwcVw5Kda/SiOL9V8BY9KHcyi1Swr1+KuCLH5z\nJTIdC2MKF4EA/7Z2Xue0sUDKIbvVgFHlSFJnLNJhiQcND85Cd8BEc5xEUKDbEAotlRyBr+Qc5RQe\n8TZBAQIvfXOn3kLMTOmJDVb3n5HUA8ZsyY/b2BzgQJhdZpmYgG4t/wHFzstGH6wCxkPmrqKEPMVO\nHj1tyRRM4y5Bu8o5vzY8KhmqQYdOpc5LMnndkEl/AgMBAAGjYzBhMB8GA1UdIwQYMBaAFJxf0Gxj\no1+TypOYCK2Mh6UsXME3MB0GA1UdDgQWBBScX9BsY6Nfk8qTmAitjIelLFzBNzAOBgNVHQ8BAf8E\nBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEATh65isagmD9uw2nAalxJ\nUqzLK114OMHVVISfk/CHGT0sZonrDUL8zPB1hT+L9IBdeeUXZ701guLyPI59WzbLWoAAKfLOKyzx\nj6ptBZNscsdW699QIyjlRRA96Gejrw5VD5AJYu9LWaL2U/HANeQvwSS9eS9OICI7/RogsKQOLHDt\ndD+4E5UGUcjohybKpFtqFiGS3XNgnhAY3jyB6ugYw3yJ8otQPr0R4hUDqDZ9MwFsSBXXiJCZBMXM\n5gf0vPSQ7RPi6ovDj6MzD8EpTBNO2hVWcXNyglD2mjN8orGoGjR0ZVzO0eurU+AagNjqOknkJjCb\n5RyKqKkVMoaZkgoQI1YS4PbOTOK7vtuNknMBZi9iPrJyJ0U27U1W45eZ/zo1PqVUSlJZS2Db7v54\nEX9K3BR5YLZrZAPbFYPhor72I5dQ8AkzNqdxliXzuUJ92zg/LFis6ELhDtjTO0wugumDLmsx2d1H\nhk9tl5EuT+IocTUW0fJz/iUrB0ckYyfI+PbZa/wSMVYIwFNCr5zQM378BvAxRAMU8Vjq8moNqRGy\ng77FGr8H6lnco4g175x2MjxNBiLOFeXdntiP2t7SxDnlF4HPOEfrf4htWRvfn0IUrn7PqLBmZdo3\nr5+qPeoott7VMVgWglvquxl1AnMaykgaIZOQCo6ThKd9OyMYkomgjaw=\n-----END CERTIFICATE-----\n\nCertum EC-384 CA\n================\n-----BEGIN CERTIFICATE-----\nMIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQswCQYDVQQGEwJQ\nTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2Vy\ndGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2\nMDcyNDU0WhcNNDMwMzI2MDcyNDU0WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERh\ndGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkx\nGTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATEKI6rGFtq\nvm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7TmFy8as10CW4kjPMIRBSqn\niBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68KjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD\nVR0OBBYEFI0GZnQkdjrzife81r1HfS+8EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNo\nADBlAjADVS2m5hjEfO/JUG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0\nQoSZ/6vnnvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k=\n-----END CERTIFICATE-----\n\nCertum Trusted Root CA\n======================\n-----BEGIN CERTIFICATE-----\nMIIFwDCCA6igAwIBAgIQHr9ZULjJgDdMBvfrVU+17TANBgkqhkiG9w0BAQ0FADB6MQswCQYDVQQG\nEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0g\nQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHzAdBgNVBAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0Ew\nHhcNMTgwMzE2MTIxMDEzWhcNNDMwMzE2MTIxMDEzWjB6MQswCQYDVQQGEwJQTDEhMB8GA1UEChMY\nQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBB\ndXRob3JpdHkxHzAdBgNVBAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEB\nAQUAA4ICDwAwggIKAoICAQDRLY67tzbqbTeRn06TpwXkKQMlzhyC93yZn0EGze2jusDbCSzBfN8p\nfktlL5On1AFrAygYo9idBcEq2EXxkd7fO9CAAozPOA/qp1x4EaTByIVcJdPTsuclzxFUl6s1wB52\nHO8AU5853BSlLCIls3Jy/I2z5T4IHhQqNwuIPMqw9MjCoa68wb4pZ1Xi/K1ZXP69VyywkI3C7Te2\nfJmItdUDmj0VDT06qKhF8JVOJVkdzZhpu9PMMsmN74H+rX2Ju7pgE8pllWeg8xn2A1bUatMn4qGt\ng/BKEiJ3HAVz4hlxQsDsdUaakFjgao4rpUYwBI4Zshfjvqm6f1bxJAPXsiEodg42MEx51UGamqi4\nNboMOvJEGyCI98Ul1z3G4z5D3Yf+xOr1Uz5MZf87Sst4WmsXXw3Hw09Omiqi7VdNIuJGmj8PkTQk\nfVXjjJU30xrwCSss0smNtA0Aq2cpKNgB9RkEth2+dv5yXMSFytKAQd8FqKPVhJBPC/PgP5sZ0jeJ\nP/J7UhyM9uH3PAeXjA6iWYEMspA90+NZRu0PqafegGtaqge2Gcu8V/OXIXoMsSt0Puvap2ctTMSY\nnjYJdmZm/Bo/6khUHL4wvYBQv3y1zgD2DGHZ5yQD4OMBgQ692IU0iL2yNqh7XAjlRICMb/gv1SHK\nHRzQ+8S1h9E6Tsd2tTVItQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSM+xx1\nvALTn04uSNn5YFSqxLNP+jAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQADggIBAEii1QAL\nLtA/vBzVtVRJHlpr9OTy4EA34MwUe7nJ+jW1dReTagVphZzNTxl4WxmB82M+w85bj/UvXgF2Ez8s\nALnNllI5SW0ETsXpD4YN4fqzX4IS8TrOZgYkNCvozMrnadyHncI013nR03e4qllY/p0m+jiGPp2K\nh2RX5Rc64vmNueMzeMGQ2Ljdt4NR5MTMI9UGfOZR0800McD2RrsLrfw9EAUqO0qRJe6M1ISHgCq8\nCYyqOhNf6DR5UMEQGfnTKB7U0VEwKbOukGfWHwpjscWpxkIxYxeU72nLL/qMFH3EQxiJ2fAyQOaA\n4kZf5ePBAFmo+eggvIksDkc0C+pXwlM2/KfUrzHN/gLldfq5Jwn58/U7yn2fqSLLiMmq0Uc9Nneo\nWWRrJ8/vJ8HjJLWG965+Mk2weWjROeiQWMODvA8s1pfrzgzhIMfatz7DP78v3DSk+yshzWePS/Tj\n6tQ/50+6uaWTRRxmHyH6ZF5v4HaUMst19W7l9o/HuKTMqJZ9ZPskWkoDbGs4xugDQ5r3V7mzKWmT\nOPQD8rv7gmsHINFSH5pkAnuYZttcTVoP0ISVoDwUQwbKytu4QTbaakRnh6+v40URFWkIsr4WOZck\nbxJF0WddCajJFdr60qZfE2Efv4WstK2tBZQIgx51F9NxO5NQI1mg7TyRVJ12AMXDuDjb\n-----END CERTIFICATE-----\n\nTunTrust Root CA\n================\n-----BEGIN CERTIFICATE-----\nMIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQELBQAwYTELMAkG\nA1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUgQ2VydGlmaWNhdGlvbiBFbGVj\ndHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJvb3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQw\nNDI2MDg1NzU2WjBhMQswCQYDVQQGEwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBD\nZXJ0aWZpY2F0aW9uIEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIw\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZn56eY+hz\n2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd2JQDoOw05TDENX37Jk0b\nbjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgFVwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7\nNegfJ7/Boce7SBbdVtfMTqDhuazb1YMZGoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAd\ngjH8KcwAWJeRTIAAHDOFli/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViW\nVSHbhlnUr8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2eY8f\nTpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIbMlEsPvLfe/ZdeikZ\njuXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISgjwBUFfyRbVinljvrS5YnzWuioYas\nDXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwS\nVXAkPcvCFDVDXSdOvsC9qnyW5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI\n04Y+oXNZtPdEITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0\n90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+zxiD2BkewhpMl\n0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYuQEkHDVneixCwSQXi/5E/S7fd\nAo74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRY\nYdZ2vyJ/0Adqp2RT8JeNnYA/u8EH22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJp\nadbGNjHh/PqAulxPxOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65x\nxBzndFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5Xc0yGYuP\njCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7bnV2UqL1g52KAdoGDDIzM\nMEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQCvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9z\nZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZHu/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3r\nAZ3r2OvEhJn7wAzMMujjd9qDRIueVSjAi1jTkD5OGwDxFa2DK5o=\n-----END CERTIFICATE-----\n\nHARICA TLS RSA Root CA 2021\n===========================\n-----BEGIN CERTIFICATE-----\nMIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBsMQswCQYDVQQG\nEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u\ncyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0EgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUz\nOFoXDTQ1MDIxMzEwNTUzN1owbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRl\nbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNB\nIFJvb3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569lmwVnlskN\nJLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE4VGC/6zStGndLuwRo0Xu\na2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uva9of08WRiFukiZLRgeaMOVig1mlDqa2Y\nUlhu2wr7a89o+uOkXjpFc5gH6l8Cct4MpbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K\n5FrZx40d/JiZ+yykgmvwKh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEv\ndmn8kN3bLW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcYAuUR\n0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqBAGMUuTNe3QvboEUH\nGjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYqE613TBoYm5EPWNgGVMWX+Ko/IIqm\nhaZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHrW2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQ\nCPxrvrNQKlr9qEgYRtaQQJKQCoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8G\nA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE\nAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAUX15QvWiWkKQU\nEapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3f5Z2EMVGpdAgS1D0NTsY9FVq\nQRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxajaH6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxD\nQpSbIPDRzbLrLFPCU3hKTwSUQZqPJzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcR\nj88YxeMn/ibvBZ3PzzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5\nvZStjBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0/L5H9MG0\nqPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pTBGIBnfHAT+7hOtSLIBD6\nAlfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79aPib8qXPMThcFarmlwDB31qlpzmq6YR/\nPFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YWxw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnn\nkf3/W9b3raYvAwtt41dU63ZTGI0RmLo=\n-----END CERTIFICATE-----\n\nHARICA TLS ECC Root CA 2021\n===========================\n-----BEGIN CERTIFICATE-----\nMIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQswCQYDVQQGEwJH\nUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBD\nQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoX\nDTQ1MDIxMzExMDEwOVowbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWlj\nIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJv\nb3QgQ0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7KKrxcm1l\nAEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9YSTHMmE5gEYd103KUkE+b\nECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW\n0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAi\nrcJRQO9gcS3ujwLEXQNwSaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/Qw\nCZ61IygNnxS2PFOiTAZpffpskcYqSUXm7LcT4Tps\n-----END CERTIFICATE-----\n\nAutoridad de Certificacion Firmaprofesional CIF A62634068\n=========================================================\n-----BEGIN CERTIFICATE-----\nMIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCRVMxQjBA\nBgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2\nMjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIw\nQAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB\nNjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD\nUtd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P\nB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY\n7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH\nECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI\nplD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX\nMbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX\nLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK\nbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU\nvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1Ud\nDgQWBBRlzeurNR4APn7VdMActHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4w\ngZswgZgGBFUdIAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j\nb20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABCAG8AbgBhAG4A\nbwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAwADEANzAOBgNVHQ8BAf8EBAMC\nAQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9miWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL\n4QjbEwj4KKE1soCzC1HA01aajTNFSa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDb\nLIpgD7dvlAceHabJhfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1il\nI45PVf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZEEAEeiGaP\ncjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV1aUsIC+nmCjuRfzxuIgA\nLI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2tCsvMo2ebKHTEm9caPARYpoKdrcd7b/+A\nlun4jWq9GJAd/0kakFI3ky88Al2CdgtR5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH\n9IBk9W6VULgRfhVwOEqwf9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpf\nNIbnYrX9ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNKGbqE\nZycPvEJdvSRUDewdcAZfpLz6IHxV\n-----END CERTIFICATE-----\n\nvTrus ECC Root CA\n=================\n-----BEGIN CERTIFICATE-----\nMIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMwRzELMAkGA1UE\nBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBS\nb290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDczMTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAa\nBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYw\nEAYHKoZIzj0CAQYFK4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+c\nToL0v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUde4BdS49n\nTPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYDVR0TAQH/BAUwAwEB/zAO\nBgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIwV53dVvHH4+m4SVBrm2nDb+zDfSXkV5UT\nQJtS0zvzQBm8JsctBp61ezaf9SXUY2sAAjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQL\nYgmRWAD5Tfs0aNoJrSEGGJTO\n-----END CERTIFICATE-----\n\nvTrus Root CA\n=============\n-----BEGIN CERTIFICATE-----\nMIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQELBQAwQzELMAkG\nA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xFjAUBgNVBAMTDXZUcnVzIFJv\nb3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMxMDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoG\nA1UEChMTaVRydXNDaGluYSBDby4sTHRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJ\nKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZots\nSKYcIrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykUAyyNJJrI\nZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+GrPSbcKvdmaVayqwlHeF\nXgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z98Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KA\nYPxMvDVTAWqXcoKv8R1w6Jz1717CbMdHflqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70\nkLJrxLT5ZOrpGgrIDajtJ8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2\nAXPKBlim0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZNpGvu\n/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQUqqzApVg+QxMaPnu\n1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHWOXSuTEGC2/KmSNGzm/MzqvOmwMVO\n9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMBAAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYg\nscasGrz2iTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOC\nAgEAKbqSSaet8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd\nnxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1jbhd47F18iMjr\njld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvMKar5CKXiNxTKsbhm7xqC5PD4\n8acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIivTDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJn\nxDHO2zTlJQNgJXtxmOTAGytfdELSS8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554Wg\nicEFOwE30z9J4nfrI8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4\nsEb9b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNBUvupLnKW\nnyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1PTi07NEPhmg4NpGaXutIc\nSkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929vensBxXVsFy6K2ir40zSbofitzmdHxghm+H\nl3s=\n-----END CERTIFICATE-----\n\nISRG Root X2\n============\n-----BEGIN CERTIFICATE-----\nMIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQswCQYDVQQGEwJV\nUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElT\nUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVT\nMSkwJwYDVQQKEyBJbnRlcm5ldCBTZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNS\nRyBSb290IFgyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0H\nttwW+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9ItgKbppb\nd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV\nHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZIzj0EAwMDaAAwZQIwe3lORlCEwkSHRhtF\ncP9Ymd70/aTSVaYgLXTWNLxBo1BfASdWtL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5\nU6VR5CmD1/iQMVtCnwr1/q4AaOeMSQ+2b1tbFfLn\n-----END CERTIFICATE-----\n\nHiPKI Root CA - G1\n==================\n-----BEGIN CERTIFICATE-----\nMIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQG\nEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xGzAZBgNVBAMMEkhpUEtJ\nIFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRaFw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYT\nAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kg\nUm9vdCBDQSAtIEcxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0\no9QwqNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twvVcg3Px+k\nwJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6lZgRZq2XNdZ1AYDgr/SE\nYYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnzQs7ZngyzsHeXZJzA9KMuH5UHsBffMNsA\nGJZMoYFL3QRtU6M9/Aes1MU3guvklQgZKILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfd\nhSi8MEyr48KxRURHH+CKFgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj\n1jOXTyFjHluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDry+K4\n9a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ/W3c1pzAtH2lsN0/\nVm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgMa/aOEmem8rJY5AIJEzypuxC00jBF\n8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYD\nVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQD\nAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi\n7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqcSE5XCV0vrPSl\ntJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6FzaZsT0pPBWGTMpWmWSBUdGSquE\nwx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9TcXzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07Q\nJNBAsNB1CI69aO4I1258EHBGG3zgiLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv\n5wiZqAxeJoBF1PhoL5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+Gpz\njLrFNe85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wrkkVbbiVg\nhUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+vhV4nYWBSipX3tUZQ9rb\nyltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQUYDksswBVLuT1sw5XxJFBAJw/6KXf6vb/\nyPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ==\n-----END CERTIFICATE-----\n\nGlobalSign ECC Root CA - R4\n===========================\n-----BEGIN CERTIFICATE-----\nMIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYDVQQLExtHbG9i\nYWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds\nb2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgwMTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9i\nYWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds\nb2JhbFNpZ24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkW\nymOxuYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNVHQ8BAf8E\nBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/+wpu+74zyTyjhNUwCgYI\nKoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147bmF0774BxL4YSFlhgjICICadVGNA3jdg\nUM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm\n-----END CERTIFICATE-----\n\nGTS Root R1\n===========\n-----BEGIN CERTIFICATE-----\nMIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV\nUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg\nUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE\nChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0G\nCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM\nf/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7raKb0\nxlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnWr4+w\nB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXW\nnOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk\n9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zq\nkUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92wO1A\nK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om3xPX\nV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDW\ncfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T\nAQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQAD\nggIBAJ+qQibbC5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe\nQkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuyh6f88/qBVRRi\nClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM47HLwEXWdyzRSjeZ2axfG34ar\nJ45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8JZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYci\nNuaCp+0KueIHoI17eko8cdLiA6EfMgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5me\nLMFrUKTX5hgUvYU/Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJF\nfbdT6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ0E6yove+\n7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm2tIMPNuzjsmhDYAPexZ3\nFL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bbbP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3\ngm3c\n-----END CERTIFICATE-----\n\nGTS Root R2\n===========\n-----BEGIN CERTIFICATE-----\nMIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV\nUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg\nUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE\nChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0G\nCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3Lv\nCvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo7JUl\ne3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWIm8Wb\na96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5GmdFrS\n+LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7M\nkogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJG\nr61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RWIr9q\nS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73VululycslaVNV\nJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy5okL\ndWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T\nAQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQAD\nggIBAB/Kzt3HvqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8\n0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyCB19m3H0Q/gxh\nswWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2uNmSRXbBoGOqKYcl3qJfEycel\n/FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMgyALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVn\njWQye+mew4K6Ki3pHrTgSAai/GevHyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y5\n9PYjJbigapordwj6xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M\n7YNRTOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924SgJPFI/2R8\n0L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV7LXTWtiBmelDGDfrs7vR\nWGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjW\nHYbL\n-----END CERTIFICATE-----\n\nGTS Root R3\n===========\n-----BEGIN CERTIFICATE-----\nMIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi\nMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMw\nHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ\nR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjO\nPQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout\n736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24CejQjBA\nMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP0/Eq\nEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azT\nL818+FsuVbu/3ZL3pAzcMeGiAjEA/JdmZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV\n11RZt+cRLInUue4X\n-----END CERTIFICATE-----\n\nGTS Root R4\n===========\n-----BEGIN CERTIFICATE-----\nMIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi\nMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQw\nHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ\nR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjO\nPQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu\nhXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqjQjBA\nMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV2Py1\nPsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/C\nr8deVl5c1RxYIigL9zC2L7F8AjEA8GE8p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh\n4rsUecrNIdSUtUlD\n-----END CERTIFICATE-----\n\nTelia Root CA v2\n================\n-----BEGIN CERTIFICATE-----\nMIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQxCzAJBgNVBAYT\nAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2\nMjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQK\nDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZI\nhvcNAQEBBQADggIPADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ7\n6zBqAMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9vVYiQJ3q\n9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9lRdU2HhE8Qx3FZLgmEKn\npNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTODn3WhUidhOPFZPY5Q4L15POdslv5e2QJl\ntI5c0BE0312/UqeBAMN/mUWZFdUXyApT7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW\n5olWK8jjfN7j/4nlNW4o6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNr\nRBH0pUPCTEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6WT0E\nBXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63RDolUK5X6wK0dmBR4\nM0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZIpEYslOqodmJHixBTB0hXbOKSTbau\nBcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGjYzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7W\nxy+G2CQ5MB0GA1UdDgQWBBRyrOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYD\nVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ\n8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi0f6X+J8wfBj5\ntFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMMA8iZGok1GTzTyVR8qPAs5m4H\neW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBSSRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+C\ny748fdHif64W1lZYudogsYMVoe+KTTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygC\nQMez2P2ccGrGKMOF6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15\nh2Er3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMtTy3EHD70\nsz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pTVmBds9hCG1xLEooc6+t9\nxnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAWysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQ\nraVplI/owd8k+BsHMYeB2F326CjYSlKArBPuUBQemMc=\n-----END CERTIFICATE-----\n\nD-TRUST BR Root CA 1 2020\n=========================\n-----BEGIN CERTIFICATE-----\nMIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE\nRTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEJSIFJvb3QgQ0EgMSAy\nMDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNV\nBAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAG\nByqGSM49AgEGBSuBBAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7\ndPYSzuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0QVK5buXu\nQqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/VbNafAkl1bK6CKBrqx9t\nMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu\nbmV0L2NybC9kLXRydXN0X2JyX3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj\ndG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP\nPUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD\nAwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFWwKrY7RjEsK70Pvom\nAjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHVdWNbFJWcHwHP2NVypw87\n-----END CERTIFICATE-----\n\nD-TRUST EV Root CA 1 2020\n=========================\n-----BEGIN CERTIFICATE-----\nMIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE\nRTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEVWIFJvb3QgQ0EgMSAy\nMDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNV\nBAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAG\nByqGSM49AgEGBSuBBAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8\nZRCC/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rDwpdhQntJ\nraOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3OqQo5FD4pPfsazK2/umL\nMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu\nbmV0L2NybC9kLXRydXN0X2V2X3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj\ndG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP\nPUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD\nAwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CAy/m0sRtW9XLS/BnR\nAjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJbgfM0agPnIjhQW+0ZT0MW\n-----END CERTIFICATE-----\n\nDigiCert TLS ECC P384 Root G5\n=============================\n-----BEGIN CERTIFICATE-----\nMIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQswCQYDVQQGEwJV\nUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURpZ2lDZXJ0IFRMUyBFQ0MgUDM4\nNCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMx\nFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQg\nUm9vdCBHNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1Tzvd\nlHJS7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp0zVozptj\nn4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICISB4CIfBFqMA4GA1UdDwEB\n/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQCJao1H5+z8blUD2Wds\nJk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQLgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIx\nAJSdYsiJvRmEFOml+wG4DXZDjC5Ty3zfDBeWUA==\n-----END CERTIFICATE-----\n\nDigiCert TLS RSA4096 Root G5\n============================\n-----BEGIN CERTIFICATE-----\nMIIFZjCCA06gAwIBAgIQCPm0eKj6ftpqMzeJ3nzPijANBgkqhkiG9w0BAQwFADBNMQswCQYDVQQG\nEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0\nMDk2IFJvb3QgRzUwHhcNMjEwMTE1MDAwMDAwWhcNNDYwMTE0MjM1OTU5WjBNMQswCQYDVQQGEwJV\nUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0MDk2\nIFJvb3QgRzUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz0PTJeRGd/fxmgefM1eS8\n7IE+ajWOLrfn3q/5B03PMJ3qCQuZvWxX2hhKuHisOjmopkisLnLlvevxGs3npAOpPxG02C+JFvuU\nAT27L/gTBaF4HI4o4EXgg/RZG5Wzrn4DReW+wkL+7vI8toUTmDKdFqgpwgscONyfMXdcvyej/Ces\ntyu9dJsXLfKB2l2w4SMXPohKEiPQ6s+d3gMXsUJKoBZMpG2T6T867jp8nVid9E6P/DsjyG244gXa\nzOvswzH016cpVIDPRFtMbzCe88zdH5RDnU1/cHAN1DrRN/BsnZvAFJNY781BOHW8EwOVfH/jXOnV\nDdXifBBiqmvwPXbzP6PosMH976pXTayGpxi0KcEsDr9kvimM2AItzVwv8n/vFfQMFawKsPHTDU9q\nTXeXAaDxZre3zu/O7Oyldcqs4+Fj97ihBMi8ez9dLRYiVu1ISf6nL3kwJZu6ay0/nTvEF+cdLvvy\nz6b84xQslpghjLSR6Rlgg/IwKwZzUNWYOwbpx4oMYIwo+FKbbuH2TbsGJJvXKyY//SovcfXWJL5/\nMZ4PbeiPT02jP/816t9JXkGPhvnxd3lLG7SjXi/7RgLQZhNeXoVPzthwiHvOAbWWl9fNff2C+MIk\nwcoBOU+NosEUQB+cZtUMCUbW8tDRSHZWOkPLtgoRObqME2wGtZ7P6wIDAQABo0IwQDAdBgNVHQ4E\nFgQUUTMc7TZArxfTJc1paPKvTiM+s0EwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8w\nDQYJKoZIhvcNAQEMBQADggIBAGCmr1tfV9qJ20tQqcQjNSH/0GEwhJG3PxDPJY7Jv0Y02cEhJhxw\nGXIeo8mH/qlDZJY6yFMECrZBu8RHANmfGBg7sg7zNOok992vIGCukihfNudd5N7HPNtQOa27PShN\nlnx2xlv0wdsUpasZYgcYQF+Xkdycx6u1UQ3maVNVzDl92sURVXLFO4uJ+DQtpBflF+aZfTCIITfN\nMBc9uPK8qHWgQ9w+iUuQrm0D4ByjoJYJu32jtyoQREtGBzRj7TG5BO6jm5qu5jF49OokYTurWGT/\nu4cnYiWB39yhL/btp/96j1EuMPikAdKFOV8BmZZvWltwGUb+hmA+rYAQCd05JS9Yf7vSdPD3Rh9G\nOUrYU9DzLjtxpdRv/PNn5AeP3SYZ4Y1b+qOTEZvpyDrDVWiakuFSdjjo4bq9+0/V77PnSIMx8IIh\n47a+p6tv75/fTM8BuGJqIz3nCU2AG3swpMPdB380vqQmsvZB6Akd4yCYqjdP//fx4ilwMUc/dNAU\nFvohigLVigmUdy7yWSiLfFCSCmZ4OIN1xLVaqBHG5cGdZlXPU8Sv13WFqUITVuwhd4GTWgzqltlJ\nyqEI8pc7bZsEGCREjnwB8twl2F6GmrE52/WRMmrRpnCKovfepEWFJqgejF0pW8hL2JpqA15w8oVP\nbEtoL8pU9ozaMv7Da4M/OMZ+\n-----END CERTIFICATE-----\n\nCertainly Root R1\n=================\n-----BEGIN CERTIFICATE-----\nMIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAwPTELMAkGA1UE\nBhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2VydGFpbmx5IFJvb3QgUjEwHhcN\nMjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9MQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2Vy\ndGFpbmx5MRowGAYDVQQDExFDZXJ0YWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIP\nADCCAgoCggIBANA21B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O\n5MQTvqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbedaFySpvXl\n8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b01C7jcvk2xusVtyWMOvwl\nDbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5r3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGI\nXsXwClTNSaa/ApzSRKft43jvRl5tcdF5cBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkN\nKPl6I7ENPT2a/Z2B7yyQwHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQ\nAjeZjOVJ6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA2Cnb\nrlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyHWyf5QBGenDPBt+U1\nVwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMReiFPCyEQtkA6qyI6BJyLm4SGcprS\np6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud\nDgQWBBTgqj8ljZ9EXME66C6ud0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAsz\nHQNTVfSVcOQrPbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d\n8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi1wrykXprOQ4v\nMMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrdrRT90+7iIgXr0PK3aBLXWopB\nGsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9ditaY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+\ngjwN/KUD+nsa2UUeYNrEjvn8K8l7lcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgH\nJBu6haEaBQmAupVjyTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7\nfpYnKx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLyyCwzk5Iw\nx06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5nwXARPbv0+Em34yaXOp/S\nX3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6OV+KmalBWQewLK8=\n-----END CERTIFICATE-----\n\nCertainly Root E1\n=================\n-----BEGIN CERTIFICATE-----\nMIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQswCQYDVQQGEwJV\nUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlubHkgUm9vdCBFMTAeFw0yMTA0\nMDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJBgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlu\nbHkxGjAYBgNVBAMTEUNlcnRhaW5seSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4\nfxzf7flHh4axpMCK+IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9\nYBk2QNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8EBAMCAQYw\nDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4hevIIgcwCgYIKoZIzj0E\nAwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozmut6Dacpps6kFtZaSF4fC0urQe87YQVt8\nrgIwRt7qy12a7DLCZRawTDBcMPPaTnOGBtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR\n-----END CERTIFICATE-----\n\nSecurity Communication ECC RootCA1\n==================================\n-----BEGIN CERTIFICATE-----\nMIICODCCAb6gAwIBAgIJANZdm7N4gS7rMAoGCCqGSM49BAMDMGExCzAJBgNVBAYTAkpQMSUwIwYD\nVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMSswKQYDVQQDEyJTZWN1cml0eSBDb21t\ndW5pY2F0aW9uIEVDQyBSb290Q0ExMB4XDTE2MDYxNjA1MTUyOFoXDTM4MDExODA1MTUyOFowYTEL\nMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKzApBgNV\nBAMTIlNlY3VyaXR5IENvbW11bmljYXRpb24gRUNDIFJvb3RDQTEwdjAQBgcqhkjOPQIBBgUrgQQA\nIgNiAASkpW9gAwPDvTH00xecK4R1rOX9PVdu12O/5gSJko6BnOPpR27KkBLIE+CnnfdldB9sELLo\n5OnvbYUymUSxXv3MdhDYW72ixvnWQuRXdtyQwjWpS4g8EkdtXP9JTxpKULGjQjBAMB0GA1UdDgQW\nBBSGHOf+LaVKiwj+KBH6vqNm+GBZLzAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAK\nBggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3L\nsnNdo4gIxwwCMQDAqy0Obe0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70e\nN9k=\n-----END CERTIFICATE-----\n\nBJCA Global Root CA1\n====================\n-----BEGIN CERTIFICATE-----\nMIIFdDCCA1ygAwIBAgIQVW9l47TZkGobCdFsPsBsIDANBgkqhkiG9w0BAQsFADBUMQswCQYDVQQG\nEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJVFkxHTAbBgNVBAMMFEJK\nQ0EgR2xvYmFsIFJvb3QgQ0ExMB4XDTE5MTIxOTAzMTYxN1oXDTQ0MTIxMjAzMTYxN1owVDELMAkG\nA1UEBhMCQ04xJjAkBgNVBAoMHUJFSUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQD\nDBRCSkNBIEdsb2JhbCBSb290IENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPFm\nCL3ZxRVhy4QEQaVpN3cdwbB7+sN3SJATcmTRuHyQNZ0YeYjjlwE8R4HyDqKYDZ4/N+AZspDyRhyS\nsTphzvq3Rp4Dhtczbu33RYx2N95ulpH3134rhxfVizXuhJFyV9xgw8O558dnJCNPYwpj9mZ9S1Wn\nP3hkSWkSl+BMDdMJoDIwOvqfwPKcxRIqLhy1BDPapDgRat7GGPZHOiJBhyL8xIkoVNiMpTAK+BcW\nyqw3/XmnkRd4OJmtWO2y3syJfQOcs4ll5+M7sSKGjwZteAf9kRJ/sGsciQ35uMt0WwfCyPQ10WRj\neulumijWML3mG90Vr4TqnMfK9Q7q8l0ph49pczm+LiRvRSGsxdRpJQaDrXpIhRMsDQa4bHlW/KNn\nMoH1V6XKV0Jp6VwkYe/iMBhORJhVb3rCk9gZtt58R4oRTklH2yiUAguUSiz5EtBP6DF+bHq/pj+b\nOT0CFqMYs2esWz8sgytnOYFcuX6U1WTdno9uruh8W7TXakdI136z1C2OVnZOz2nxbkRs1CTqjSSh\nGL+9V/6pmTW12xB3uD1IutbB5/EjPtffhZ0nPNRAvQoMvfXnjSXWgXSHRtQpdaJCbPdzied9v3pK\nH9MiyRVVz99vfFXQpIsHETdfg6YmV6YBW37+WGgHqel62bno/1Afq8K0wM7o6v0PvY1NuLxxAgMB\nAAGjQjBAMB0GA1UdDgQWBBTF7+3M2I0hxkjk49cULqcWk+WYATAPBgNVHRMBAf8EBTADAQH/MA4G\nA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAUoKsITQfI/Ki2Pm4rzc2IInRNwPWaZ+4\nYRC6ojGYWUfo0Q0lHhVBDOAqVdVXUsv45Mdpox1NcQJeXyFFYEhcCY5JEMEE3KliawLwQ8hOnThJ\ndMkycFRtwUf8jrQ2ntScvd0g1lPJGKm1Vrl2i5VnZu69mP6u775u+2D2/VnGKhs/I0qUJDAnyIm8\n60Qkmss9vk/Ves6OF8tiwdneHg56/0OGNFK8YT88X7vZdrRTvJez/opMEi4r89fO4aL/3Xtw+zuh\nTaRjAv04l5U/BXCga99igUOLtFkNSoxUnMW7gZ/NfaXvCyUeOiDbHPwfmGcCCtRzRBPbUYQaVQNW\n4AB+dAb/OMRyHdOoP2gxXdMJxy6MW2Pg6Nwe0uxhHvLe5e/2mXZgLR6UcnHGCyoyx5JO1UbXHfmp\nGQrI+pXObSOYqgs4rZpWDW+N8TEAiMEXnM0ZNjX+VVOg4DwzX5Ze4jLp3zO7Bkqp2IRzznfSxqxx\n4VyjHQy7Ct9f4qNx2No3WqB4K/TUfet27fJhcKVlmtOJNBir+3I+17Q9eVzYH6Eze9mCUAyTF6ps\n3MKCuwJXNq+YJyo5UOGwifUll35HaBC07HPKs5fRJNz2YqAo07WjuGS3iGJCz51TzZm+ZGiPTx4S\nSPfSKcOYKMryMguTjClPPGAyzQWWYezyr/6zcCwupvI=\n-----END CERTIFICATE-----\n\nBJCA Global Root CA2\n====================\n-----BEGIN CERTIFICATE-----\nMIICJTCCAaugAwIBAgIQLBcIfWQqwP6FGFkGz7RK6zAKBggqhkjOPQQDAzBUMQswCQYDVQQGEwJD\nTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJVFkxHTAbBgNVBAMMFEJKQ0Eg\nR2xvYmFsIFJvb3QgQ0EyMB4XDTE5MTIxOTAzMTgyMVoXDTQ0MTIxMjAzMTgyMVowVDELMAkGA1UE\nBhMCQ04xJjAkBgNVBAoMHUJFSUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRC\nSkNBIEdsb2JhbCBSb290IENBMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABJ3LgJGNU2e1uVCxA/jl\nSR9BIgmwUVJY1is0j8USRhTFiy8shP8sbqjV8QnjAyEUxEM9fMEsxEtqSs3ph+B99iK++kpRuDCK\n/eHeGBIK9ke35xe/J4rUQUyWPGCWwf0VHKNCMEAwHQYDVR0OBBYEFNJKsVF/BvDRgh9Obl+rg/xI\n1LCRMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2gAMGUCMBq8\nW9f+qdJUDkpd0m2xQNz0Q9XSSpkZElaA94M04TVOSG0ED1cxMDAtsaqdAzjbBgIxAMvMh1PLet8g\nUXOQwKhbYdDFUDn9hf7B43j4ptZLvZuHjw/l1lOWqzzIQNph91Oj9w==\n-----END CERTIFICATE-----\n\nSectigo Public Server Authentication Root E46\n=============================================\n-----BEGIN CERTIFICATE-----\nMIICOjCCAcGgAwIBAgIQQvLM2htpN0RfFf51KBC49DAKBggqhkjOPQQDAzBfMQswCQYDVQQGEwJH\nQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBTZXJ2\nZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwHhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5\nWjBfMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0\naWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUr\ngQQAIgNiAAR2+pmpbiDt+dd34wc7qNs9Xzjoq1WmVk/WSOrsfy2qw7LFeeyZYX8QeccCWvkEN/U0\nNSt3zn8gj1KjAIns1aeibVvjS5KToID1AZTc8GgHHs3u/iVStSBDHBv+6xnOQ6OjQjBAMB0GA1Ud\nDgQWBBTRItpMWfFLXyY4qp3W7usNw/upYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB\n/zAKBggqhkjOPQQDAwNnADBkAjAn7qRaqCG76UeXlImldCBteU/IvZNeWBj7LRoAasm4PdCkT0RH\nlAFWovgzJQxC36oCMB3q4S6ILuH5px0CMk7yn2xVdOOurvulGu7t0vzCAxHrRVxgED1cf5kDW21U\nSAGKcw==\n-----END CERTIFICATE-----\n\nSectigo Public Server Authentication Root R46\n=============================================\n-----BEGIN CERTIFICATE-----\nMIIFijCCA3KgAwIBAgIQdY39i658BwD6qSWn4cetFDANBgkqhkiG9w0BAQwFADBfMQswCQYDVQQG\nEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBT\nZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwHhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1\nOTU5WjBfMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1T\nZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwggIiMA0GCSqGSIb3\nDQEBAQUAA4ICDwAwggIKAoICAQCTvtU2UnXYASOgHEdCSe5jtrch/cSV1UgrJnwUUxDaef0rty2k\n1Cz66jLdScK5vQ9IPXtamFSvnl0xdE8H/FAh3aTPaE8bEmNtJZlMKpnzSDBh+oF8HqcIStw+Kxwf\nGExxqjWMrfhu6DtK2eWUAtaJhBOqbchPM8xQljeSM9xfiOefVNlI8JhD1mb9nxc4Q8UBUQvX4yMP\nFF1bFOdLvt30yNoDN9HWOaEhUTCDsG3XME6WW5HwcCSrv0WBZEMNvSE6Lzzpng3LILVCJ8zab5vu\nZDCQOc2TZYEhMbUjUDM3IuM47fgxMMxF/mL50V0yeUKH32rMVhlATc6qu/m1dkmU8Sf4kaWD5Qaz\nYw6A3OASVYCmO2a0OYctyPDQ0RTp5A1NDvZdV3LFOxxHVp3i1fuBYYzMTYCQNFu31xR13NgESJ/A\nwSiItOkcyqex8Va3e0lMWeUgFaiEAin6OJRpmkkGj80feRQXEgyDet4fsZfu+Zd4KKTIRJLpfSYF\nplhym3kT2BFfrsU4YjRosoYwjviQYZ4ybPUHNs2iTG7sijbt8uaZFURww3y8nDnAtOFr94MlI1fZ\nEoDlSfB1D++N6xybVCi0ITz8fAr/73trdf+LHaAZBav6+CuBQug4urv7qv094PPK306Xlynt8xhW\n6aWWrL3DkJiy4Pmi1KZHQ3xtzwIDAQABo0IwQDAdBgNVHQ4EFgQUVnNYZJX5khqwEioEYnmhQBWI\nIUkwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAC9c\nmTz8Bl6MlC5w6tIyMY208FHVvArzZJ8HXtXBc2hkeqK5Duj5XYUtqDdFqij0lgVQYKlJfp/imTYp\nE0RHap1VIDzYm/EDMrraQKFz6oOht0SmDpkBm+S8f74TlH7Kph52gDY9hAaLMyZlbcp+nv4fjFg4\nexqDsQ+8FxG75gbMY/qB8oFM2gsQa6H61SilzwZAFv97fRheORKkU55+MkIQpiGRqRxOF3yEvJ+M\n0ejf5lG5Nkc/kLnHvALcWxxPDkjBJYOcCj+esQMzEhonrPcibCTRAUH4WAP+JWgiH5paPHxsnnVI\n84HxZmduTILA7rpXDhjvLpr3Etiga+kFpaHpaPi8TD8SHkXoUsCjvxInebnMMTzD9joiFgOgyY9m\npFuiTdaBJQbpdqQACj7LzTWb4OE4y2BThihCQRxEV+ioratF4yUQvNs+ZUH7G6aXD+u5dHn5Hrwd\nVw1Hr8Mvn4dGp+smWg9WY7ViYG4A++MnESLn/pmPNPW56MORcr3Ywx65LvKRRFHQV80MNNVIIb/b\nE/FmJUNS0nAiNs2fxBx1IK1jcmMGDw4nztJqDby1ORrp0XZ60Vzk50lJLVU3aPAaOpg+VBeHVOmm\nJ1CJeyAvP/+/oYtKR5j/K3tJPsMpRmAYQqszKbrAKbkTidOIijlBO8n9pu0f9GBj39ItVQGL\n-----END CERTIFICATE-----\n\nSSL.com TLS RSA Root CA 2022\n============================\n-----BEGIN CERTIFICATE-----\nMIIFiTCCA3GgAwIBAgIQb77arXO9CEDii02+1PdbkTANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQG\nEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxTU0wuY29tIFRMUyBSU0Eg\nUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzQyMloXDTQ2MDgxOTE2MzQyMVowTjELMAkGA1UEBhMC\nVVMxGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgUlNBIFJv\nb3QgQ0EgMjAyMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANCkCXJPQIgSYT41I57u\n9nTPL3tYPc48DRAokC+X94xI2KDYJbFMsBFMF3NQ0CJKY7uB0ylu1bUJPiYYf7ISf5OYt6/wNr/y\n7hienDtSxUcZXXTzZGbVXcdotL8bHAajvI9AI7YexoS9UcQbOcGV0insS657Lb85/bRi3pZ7Qcac\noOAGcvvwB5cJOYF0r/c0WRFXCsJbwST0MXMwgsadugL3PnxEX4MN8/HdIGkWCVDi1FW24IBydm5M\nR7d1VVm0U3TZlMZBrViKMWYPHqIbKUBOL9975hYsLfy/7PO0+r4Y9ptJ1O4Fbtk085zx7AGL0SDG\nD6C1vBdOSHtRwvzpXGk3R2azaPgVKPC506QVzFpPulJwoxJF3ca6TvvC0PeoUidtbnm1jPx7jMEW\nTO6Af77wdr5BUxIzrlo4QqvXDz5BjXYHMtWrifZOZ9mxQnUjbvPNQrL8VfVThxc7wDNY8VLS+YCk\n8OjwO4s4zKTGkH8PnP2L0aPP2oOnaclQNtVcBdIKQXTbYxE3waWglksejBYSd66UNHsef8JmAOSq\ng+qKkK3ONkRN0VHpvB/zagX9wHQfJRlAUW7qglFA35u5CCoGAtUjHBPW6dvbxrB6y3snm/vg1UYk\n7RBLY0ulBY+6uB0rpvqR4pJSvezrZ5dtmi2fgTIFZzL7SAg/2SW4BCUvAgMBAAGjYzBhMA8GA1Ud\nEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU+y437uOEeicuzRk1sTN8/9REQrkwHQYDVR0OBBYEFPsu\nN+7jhHonLs0ZNbEzfP/UREK5MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAjYlt\nhEUY8U+zoO9opMAdrDC8Z2awms22qyIZZtM7QbUQnRC6cm4pJCAcAZli05bg4vsMQtfhWsSWTVTN\nj8pDU/0quOr4ZcoBwq1gaAafORpR2eCNJvkLTqVTJXojpBzOCBvfR4iyrT7gJ4eLSYwfqUdYe5by\niB0YrrPRpgqU+tvT5TgKa3kSM/tKWTcWQA673vWJDPFs0/dRa1419dvAJuoSc06pkZCmF8NsLzjU\no3KUQyxi4U5cMj29TH0ZR6LDSeeWP4+a0zvkEdiLA9z2tmBVGKaBUfPhqBVq6+AL8BQx1rmMRTqo\nENjwuSfr98t67wVylrXEj5ZzxOhWc5y8aVFjvO9nHEMaX3cZHxj4HCUp+UmZKbaSPaKDN7Egkaib\nMOlqbLQjk2UEqxHzDh1TJElTHaE/nUiSEeJ9DU/1172iWD54nR4fK/4huxoTtrEoZP2wAgDHbICi\nvRZQIA9ygV/MlP+7mea6kMvq+cYMwq7FGc4zoWtcu358NFcXrfA/rs3qr5nsLFR+jM4uElZI7xc7\nP0peYNLcdDa8pUNjyw9bowJWCZ4kLOGGgYz+qxcs+sjiMho6/4UIyYOf8kpIEFR3N+2ivEC+5BB0\n9+Rbu7nzifmPQdjH5FCQNYA+HLhNkNPU98OwoX6EyneSMSy4kLGCenROmxMmtNVQZlR4rmA=\n-----END CERTIFICATE-----\n\nSSL.com TLS ECC Root CA 2022\n============================\n-----BEGIN CERTIFICATE-----\nMIICOjCCAcCgAwIBAgIQFAP1q/s3ixdAW+JDsqXRxDAKBggqhkjOPQQDAzBOMQswCQYDVQQGEwJV\nUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxTU0wuY29tIFRMUyBFQ0MgUm9v\ndCBDQSAyMDIyMB4XDTIyMDgyNTE2MzM0OFoXDTQ2MDgxOTE2MzM0N1owTjELMAkGA1UEBhMCVVMx\nGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgRUNDIFJvb3Qg\nQ0EgMjAyMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABEUpNXP6wrgjzhR9qLFNoFs27iosU8NgCTWy\nJGYmacCzldZdkkAZDsalE3D07xJRKF3nzL35PIXBz5SQySvOkkJYWWf9lCcQZIxPBLFNSeR7T5v1\n5wj4A4j3p8OSSxlUgaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSJjy+j6CugFFR7\n81a4Jl9nOAuc0DAdBgNVHQ4EFgQUiY8vo+groBRUe/NWuCZfZzgLnNAwDgYDVR0PAQH/BAQDAgGG\nMAoGCCqGSM49BAMDA2gAMGUCMFXjIlbp15IkWE8elDIPDAI2wv2sdDJO4fscgIijzPvX6yv/N33w\n7deedWo1dlJF4AIxAMeNb0Igj762TVntd00pxCAgRWSGOlDGxK0tk/UYfXLtqc/ErFc2KAhl3zx5\nZn6g6g==\n-----END CERTIFICATE-----\n\nAtos TrustedRoot Root CA ECC TLS 2021\n=====================================\n-----BEGIN CERTIFICATE-----\nMIICFTCCAZugAwIBAgIQPZg7pmY9kGP3fiZXOATvADAKBggqhkjOPQQDAzBMMS4wLAYDVQQDDCVB\ndG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgRUNDIFRMUyAyMDIxMQ0wCwYDVQQKDARBdG9zMQswCQYD\nVQQGEwJERTAeFw0yMTA0MjIwOTI2MjNaFw00MTA0MTcwOTI2MjJaMEwxLjAsBgNVBAMMJUF0b3Mg\nVHJ1c3RlZFJvb3QgUm9vdCBDQSBFQ0MgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYT\nAkRFMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEloZYKDcKZ9Cg3iQZGeHkBQcfl+3oZIK59sRxUM6K\nDP/XtXa7oWyTbIOiaG6l2b4siJVBzV3dscqDY4PMwL502eCdpO5KTlbgmClBk1IQ1SQ4AjJn8ZQS\nb+/Xxd4u/RmAo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR2KCXWfeBmmnoJsmo7jjPX\nNtNPojAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwMDaAAwZQIwW5kp85wxtolrbNa9d+F851F+\nuDrNozZffPc8dz7kUK2o59JZDCaOMDtuCCrCp1rIAjEAmeMM56PDr9NJLkaCI2ZdyQAUEv049OGY\na3cpetskz2VAv9LcjBHo9H1/IISpQuQo\n-----END CERTIFICATE-----\n\nAtos TrustedRoot Root CA RSA TLS 2021\n=====================================\n-----BEGIN CERTIFICATE-----\nMIIFZDCCA0ygAwIBAgIQU9XP5hmTC/srBRLYwiqipDANBgkqhkiG9w0BAQwFADBMMS4wLAYDVQQD\nDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgUlNBIFRMUyAyMDIxMQ0wCwYDVQQKDARBdG9zMQsw\nCQYDVQQGEwJERTAeFw0yMTA0MjIwOTIxMTBaFw00MTA0MTcwOTIxMDlaMEwxLjAsBgNVBAMMJUF0\nb3MgVHJ1c3RlZFJvb3QgUm9vdCBDQSBSU0EgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNV\nBAYTAkRFMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtoAOxHm9BYx9sKOdTSJNy/BB\nl01Z4NH+VoyX8te9j2y3I49f1cTYQcvyAh5x5en2XssIKl4w8i1mx4QbZFc4nXUtVsYvYe+W/CBG\nvevUez8/fEc4BKkbqlLfEzfTFRVOvV98r61jx3ncCHvVoOX3W3WsgFWZkmGbzSoXfduP9LVq6hdK\nZChmFSlsAvFr1bqjM9xaZ6cF4r9lthawEO3NUDPJcFDsGY6wx/J0W2tExn2WuZgIWWbeKQGb9Cpt\n0xU6kGpn8bRrZtkh68rZYnxGEFzedUlnnkL5/nWpo63/dgpnQOPF943HhZpZnmKaau1Fh5hnstVK\nPNe0OwANwI8f4UDErmwh3El+fsqyjW22v5MvoVw+j8rtgI5Y4dtXz4U2OLJxpAmMkokIiEjxQGMY\nsluMWuPD0xeqqxmjLBvk1cbiZnrXghmmOxYsL3GHX0WelXOTwkKBIROW1527k2gV+p2kHYzygeBY\nBr3JtuP2iV2J+axEoctr+hbxx1A9JNr3w+SH1VbxT5Aw+kUJWdo0zuATHAR8ANSbhqRAvNncTFd+\nrrcztl524WWLZt+NyteYr842mIycg5kDcPOvdO3GDjbnvezBc6eUWsuSZIKmAMFwoW4sKeFYV+xa\nfJlrJaSQOoD0IJ2azsct+bJLKZWD6TWNp0lIpw9MGZHQ9b8Q4HECAwEAAaNCMEAwDwYDVR0TAQH/\nBAUwAwEB/zAdBgNVHQ4EFgQUdEmZ0f+0emhFdcN+tNzMzjkz2ggwDgYDVR0PAQH/BAQDAgGGMA0G\nCSqGSIb3DQEBDAUAA4ICAQAjQ1MkYlxt/T7Cz1UAbMVWiLkO3TriJQ2VSpfKgInuKs1l+NsW4AmS\n4BjHeJi78+xCUvuppILXTdiK/ORO/auQxDh1MoSf/7OwKwIzNsAQkG8dnK/haZPso0UvFJ/1TCpl\nQ3IM98P4lYsU84UgYt1UU90s3BiVaU+DR3BAM1h3Egyi61IxHkzJqM7F78PRreBrAwA0JrRUITWX\nAdxfG/F851X6LWh3e9NpzNMOa7pNdkTWwhWaJuywxfW70Xp0wmzNxbVe9kzmWy2B27O3Opee7c9G\nslA9hGCZcbUztVdF5kJHdWoOsAgMrr3e97sPWD2PAzHoPYJQyi9eDF20l74gNAf0xBLh7tew2Vkt\nafcxBPTy+av5EzH4AXcOPUIjJsyacmdRIXrMPIWo6iFqO9taPKU0nprALN+AnCng33eU0aKAQv9q\nTFsR0PXNor6uzFFcw9VUewyu1rkGd4Di7wcaaMxZUa1+XGdrudviB0JbuAEFWDlN5LuYo7Ey7Nmj\n1m+UI/87tyll5gfp77YZ6ufCOB0yiJA8EytuzO+rdwY0d4RPcuSBhPm5dDTedk+SKlOxJTnbPP/l\nPqYO5Wue/9vsL3SD3460s6neFE3/MaNFcyT6lSnMEpcEoji2jbDwN/zIIX8/syQbPYtuzE2wFg2W\nHYMfRsCbvUOZ58SWLs5fyQ==\n-----END CERTIFICATE-----\n\nTrustAsia Global Root CA G3\n===========================\n-----BEGIN CERTIFICATE-----\nMIIFpTCCA42gAwIBAgIUZPYOZXdhaqs7tOqFhLuxibhxkw8wDQYJKoZIhvcNAQEMBQAwWjELMAkG\nA1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dpZXMsIEluYy4xJDAiBgNVBAMM\nG1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHMzAeFw0yMTA1MjAwMjEwMTlaFw00NjA1MTkwMjEw\nMTlaMFoxCzAJBgNVBAYTAkNOMSUwIwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMu\nMSQwIgYDVQQDDBtUcnVzdEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzMwggIiMA0GCSqGSIb3DQEBAQUA\nA4ICDwAwggIKAoICAQDAMYJhkuSUGwoqZdC+BqmHO1ES6nBBruL7dOoKjbmzTNyPtxNST1QY4Sxz\nlZHFZjtqz6xjbYdT8PfxObegQ2OwxANdV6nnRM7EoYNl9lA+sX4WuDqKAtCWHwDNBSHvBm3dIZwZ\nQ0WhxeiAysKtQGIXBsaqvPPW5vxQfmZCHzyLpnl5hkA1nyDvP+uLRx+PjsXUjrYsyUQE49RDdT/V\nP68czH5GX6zfZBCK70bwkPAPLfSIC7Epqq+FqklYqL9joDiR5rPmd2jE+SoZhLsO4fWvieylL1Ag\ndB4SQXMeJNnKziyhWTXAyB1GJ2Faj/lN03J5Zh6fFZAhLf3ti1ZwA0pJPn9pMRJpxx5cynoTi+jm\n9WAPzJMshH/x/Gr8m0ed262IPfN2dTPXS6TIi/n1Q1hPy8gDVI+lhXgEGvNz8teHHUGf59gXzhqc\nD0r83ERoVGjiQTz+LISGNzzNPy+i2+f3VANfWdP3kXjHi3dqFuVJhZBFcnAvkV34PmVACxmZySYg\nWmjBNb9Pp1Hx2BErW+Canig7CjoKH8GB5S7wprlppYiU5msTf9FkPz2ccEblooV7WIQn3MSAPmea\nmseaMQ4w7OYXQJXZRe0Blqq/DPNL0WP3E1jAuPP6Z92bfW1K/zJMtSU7/xxnD4UiWQWRkUF3gdCF\nTIcQcf+eQxuulXUtgQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEDk5PIj\n7zjKsK5Xf/IhMBY027ySMB0GA1UdDgQWBBRA5OTyI+84yrCuV3/yITAWNNu8kjAOBgNVHQ8BAf8E\nBAMCAQYwDQYJKoZIhvcNAQEMBQADggIBACY7UeFNOPMyGLS0XuFlXsSUT9SnYaP4wM8zAQLpw6o1\nD/GUE3d3NZ4tVlFEbuHGLige/9rsR82XRBf34EzC4Xx8MnpmyFq2XFNFV1pF1AWZLy4jVe5jaN/T\nG3inEpQGAHUNcoTpLrxaatXeL1nHo+zSh2bbt1S1JKv0Q3jbSwTEb93mPmY+KfJLaHEih6D4sTNj\nduMNhXJEIlU/HHzp/LgV6FL6qj6jITk1dImmasI5+njPtqzn59ZW/yOSLlALqbUHM/Q4X6RJpstl\ncHboCoWASzY9M/eVVHUl2qzEc4Jl6VL1XP04lQJqaTDFHApXB64ipCz5xUG3uOyfT0gA+QEEVcys\n+TIxxHWVBqB/0Y0n3bOppHKH/lmLmnp0Ft0WpWIp6zqW3IunaFnT63eROfjXy9mPX1onAX1daBli\n2MjN9LdyR75bl87yraKZk62Uy5P2EgmVtqvXO9A/EcswFi55gORngS1d7XB4tmBZrOFdRWOPyN9y\naFvqHbgB8X7754qz41SgOAngPN5C8sLtLpvzHzW2NtjjgKGLzZlkD8Kqq7HK9W+eQ42EVJmzbsAS\nZthwEPEGNTNDqJwuuhQxzhB/HIbjj9LV+Hfsm6vxL2PZQl/gZ4FkkfGXL/xuJvYz+NO1+MRiqzFR\nJQJ6+N1rZdVtTTDIZbpoFGWsJwt0ivKH\n-----END CERTIFICATE-----\n\nTrustAsia Global Root CA G4\n===========================\n-----BEGIN CERTIFICATE-----\nMIICVTCCAdygAwIBAgIUTyNkuI6XY57GU4HBdk7LKnQV1tcwCgYIKoZIzj0EAwMwWjELMAkGA1UE\nBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dpZXMsIEluYy4xJDAiBgNVBAMMG1Ry\ndXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHNDAeFw0yMTA1MjAwMjEwMjJaFw00NjA1MTkwMjEwMjJa\nMFoxCzAJBgNVBAYTAkNOMSUwIwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQw\nIgYDVQQDDBtUcnVzdEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNi\nAATxs8045CVD5d4ZCbuBeaIVXxVjAd7Cq92zphtnS4CDr5nLrBfbK5bKfFJV4hrhPVbwLxYI+hW8\nm7tH5j/uqOFMjPXTNvk4XatwmkcN4oFBButJ+bAp3TPsUKV/eSm4IJijYzBhMA8GA1UdEwEB/wQF\nMAMBAf8wHwYDVR0jBBgwFoAUpbtKl86zK3+kMd6Xg1mDpm9xy94wHQYDVR0OBBYEFKW7SpfOsyt/\npDHel4NZg6ZvccveMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjBe8usGzEkxn0AA\nbbd+NvBNEU/zy4k6LHiRUKNbwMp1JvK/kF0LgoxgKJ/GcJpo5PECMFxYDlZ2z1jD1xCMuo6u47xk\ndUfFVZDj/bpV6wfEU6s3qe4hsiFbYI89MvHVI5TWWA==\n-----END CERTIFICATE-----\n\nCommScope Public Trust ECC Root-01\n==================================\n-----BEGIN CERTIFICATE-----\nMIICHTCCAaOgAwIBAgIUQ3CCd89NXTTxyq4yLzf39H91oJ4wCgYIKoZIzj0EAwMwTjELMAkGA1UE\nBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29tbVNjb3BlIFB1YmxpYyBUcnVz\ndCBFQ0MgUm9vdC0wMTAeFw0yMTA0MjgxNzM1NDNaFw00NjA0MjgxNzM1NDJaME4xCzAJBgNVBAYT\nAlVTMRIwEAYDVQQKDAlDb21tU2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3Qg\nRUNDIFJvb3QtMDEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARLNumuV16ocNfQj3Rid8NeeqrltqLx\neP0CflfdkXmcbLlSiFS8LwS+uM32ENEp7LXQoMPwiXAZu1FlxUOcw5tjnSCDPgYLpkJEhRGnSjot\n6dZoL0hOUysHP029uax3OVejQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G\nA1UdDgQWBBSOB2LAUN3GGQYARnQE9/OufXVNMDAKBggqhkjOPQQDAwNoADBlAjEAnDPfQeMjqEI2\nJpc1XHvr20v4qotzVRVcrHgpD7oh2MSg2NED3W3ROT3Ek2DS43KyAjB8xX6I01D1HiXo+k515liW\npDVfG2XqYZpwI7UNo5uSUm9poIyNStDuiw7LR47QjRE=\n-----END CERTIFICATE-----\n\nCommScope Public Trust ECC Root-02\n==================================\n-----BEGIN CERTIFICATE-----\nMIICHDCCAaOgAwIBAgIUKP2ZYEFHpgE6yhR7H+/5aAiDXX0wCgYIKoZIzj0EAwMwTjELMAkGA1UE\nBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29tbVNjb3BlIFB1YmxpYyBUcnVz\ndCBFQ0MgUm9vdC0wMjAeFw0yMTA0MjgxNzQ0NTRaFw00NjA0MjgxNzQ0NTNaME4xCzAJBgNVBAYT\nAlVTMRIwEAYDVQQKDAlDb21tU2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3Qg\nRUNDIFJvb3QtMDIwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAR4MIHoYx7l63FRD/cHB8o5mXxO1Q/M\nMDALj2aTPs+9xYa9+bG3tD60B8jzljHz7aRP+KNOjSkVWLjVb3/ubCK1sK9IRQq9qEmUv4RDsNuE\nSgMjGWdqb8FuvAY5N9GIIvejQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G\nA1UdDgQWBBTmGHX/72DehKT1RsfeSlXjMjZ59TAKBggqhkjOPQQDAwNnADBkAjAmc0l6tqvmSfR9\nUj/UQQSugEODZXW5hYA4O9Zv5JOGq4/nich/m35rChJVYaoR4HkCMHfoMXGsPHED1oQmHhS48zs7\n3u1Z/GtMMH9ZzkXpc2AVmkzw5l4lIhVtwodZ0LKOag==\n-----END CERTIFICATE-----\n\nCommScope Public Trust RSA Root-01\n==================================\n-----BEGIN CERTIFICATE-----\nMIIFbDCCA1SgAwIBAgIUPgNJgXUWdDGOTKvVxZAplsU5EN0wDQYJKoZIhvcNAQELBQAwTjELMAkG\nA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29tbVNjb3BlIFB1YmxpYyBU\ncnVzdCBSU0EgUm9vdC0wMTAeFw0yMTA0MjgxNjQ1NTRaFw00NjA0MjgxNjQ1NTNaME4xCzAJBgNV\nBAYTAlVTMRIwEAYDVQQKDAlDb21tU2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1\nc3QgUlNBIFJvb3QtMDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwSGWjDR1C45Ft\nnYSkYZYSwu3D2iM0GXb26v1VWvZVAVMP8syMl0+5UMuzAURWlv2bKOx7dAvnQmtVzslhsuitQDy6\nuUEKBU8bJoWPQ7VAtYXR1HHcg0Hz9kXHgKKEUJdGzqAMxGBWBB0HW0alDrJLpA6lfO741GIDuZNq\nihS4cPgugkY4Iw50x2tBt9Apo52AsH53k2NC+zSDO3OjWiE260f6GBfZumbCk6SP/F2krfxQapWs\nvCQz0b2If4b19bJzKo98rwjyGpg/qYFlP8GMicWWMJoKz/TUyDTtnS+8jTiGU+6Xn6myY5QXjQ/c\nZip8UlF1y5mO6D1cv547KI2DAg+pn3LiLCuz3GaXAEDQpFSOm117RTYm1nJD68/A6g3czhLmfTif\nBSeolz7pUcZsBSjBAg/pGG3svZwG1KdJ9FQFa2ww8esD1eo9anbCyxooSU1/ZOD6K9pzg4H/kQO9\nlLvkuI6cMmPNn7togbGEW682v3fuHX/3SZtS7NJ3Wn2RnU3COS3kuoL4b/JOHg9O5j9ZpSPcPYeo\nKFgo0fEbNttPxP/hjFtyjMcmAyejOQoBqsCyMWCDIqFPEgkBEa801M/XrmLTBQe0MXXgDW1XT2mH\n+VepuhX2yFJtocucH+X8eKg1mp9BFM6ltM6UCBwJrVbl2rZJmkrqYxhTnCwuwwIDAQABo0IwQDAP\nBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUN12mmnQywsL5x6YVEFm4\n5P3luG0wDQYJKoZIhvcNAQELBQADggIBAK+nz97/4L1CjU3lIpbfaOp9TSp90K09FlxD533Ahuh6\nNWPxzIHIxgvoLlI1pKZJkGNRrDSsBTtXAOnTYtPZKdVUvhwQkZyybf5Z/Xn36lbQnmhUQo8mUuJM\n3y+Xpi/SB5io82BdS5pYV4jvguX6r2yBS5KPQJqTRlnLX3gWsWc+QgvfKNmwrZggvkN80V4aCRck\njXtdlemrwWCrWxhkgPut4AZ9HcpZuPN4KWfGVh2vtrV0KnahP/t1MJ+UXjulYPPLXAziDslg+Mkf\nFoom3ecnf+slpoq9uC02EJqxWE2aaE9gVOX2RhOOiKy8IUISrcZKiX2bwdgt6ZYD9KJ0DLwAHb/W\nNyVntHKLr4W96ioDj8z7PEQkguIBpQtZtjSNMgsSDesnwv1B10A8ckYpwIzqug/xBpMu95yo9GA+\no/E4Xo4TwbM6l4c/ksp4qRyv0LAbJh6+cOx69TOY6lz/KwsETkPdY34Op054A5U+1C0wlREQKC6/\noAI+/15Z0wUOlV9TRe9rh9VIzRamloPh37MG88EU26fsHItdkJANclHnYfkUyq+Dj7+vsQpZXdxc\n1+SWrVtgHdqul7I52Qb1dgAT+GhMIbA1xNxVssnBQVocicCMb3SgazNNtQEo/a2tiRc7ppqEvOuM\n6sRxJKi6KfkIsidWNTJf6jn7MZrVGczw\n-----END CERTIFICATE-----\n\nCommScope Public Trust RSA Root-02\n==================================\n-----BEGIN CERTIFICATE-----\nMIIFbDCCA1SgAwIBAgIUVBa/O345lXGN0aoApYYNK496BU4wDQYJKoZIhvcNAQELBQAwTjELMAkG\nA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29tbVNjb3BlIFB1YmxpYyBU\ncnVzdCBSU0EgUm9vdC0wMjAeFw0yMTA0MjgxNzE2NDNaFw00NjA0MjgxNzE2NDJaME4xCzAJBgNV\nBAYTAlVTMRIwEAYDVQQKDAlDb21tU2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1\nc3QgUlNBIFJvb3QtMDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDh+g77aAASyE3V\nrCLENQE7xVTlWXZjpX/rwcRqmL0yjReA61260WI9JSMZNRTpf4mnG2I81lDnNJUDMrG0kyI9p+Kx\n7eZ7Ti6Hmw0zdQreqjXnfuU2mKKuJZ6VszKWpCtYHu8//mI0SFHRtI1CrWDaSWqVcN3SAOLMV2MC\ne5bdSZdbkk6V0/nLKR8YSvgBKtJjCW4k6YnS5cciTNxzhkcAqg2Ijq6FfUrpuzNPDlJwnZXjfG2W\nWy09X6GDRl224yW4fKcZgBzqZUPckXk2LHR88mcGyYnJ27/aaL8j7dxrrSiDeS/sOKUNNwFnJ5rp\nM9kzXzehxfCrPfp4sOcsn/Y+n2Dg70jpkEUeBVF4GiwSLFworA2iI540jwXmojPOEXcT1A6kHkIf\nhs1w/tkuFT0du7jyU1fbzMZ0KZwYszZ1OC4PVKH4kh+Jlk+71O6d6Ts2QrUKOyrUZHk2EOH5kQMr\neyBUzQ0ZGshBMjTRsJnhkB4BQDa1t/qp5Xd1pCKBXbCL5CcSD1SIxtuFdOa3wNemKfrb3vOTlycE\nVS8KbzfFPROvCgCpLIscgSjX74Yxqa7ybrjKaixUR9gqiC6vwQcQeKwRoi9C8DfF8rhW3Q5iLc4t\nVn5V8qdE9isy9COoR+jUKgF4z2rDN6ieZdIs5fq6M8EGRPbmz6UNp2YINIos8wIDAQABo0IwQDAP\nBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUR9DnsSL/nSz12Vdgs7Gx\ncJXvYXowDQYJKoZIhvcNAQELBQADggIBAIZpsU0v6Z9PIpNojuQhmaPORVMbc0RTAIFhzTHjCLqB\nKCh6krm2qMhDnscTJk3C2OVVnJJdUNjCK9v+5qiXz1I6JMNlZFxHMaNlNRPDk7n3+VGXu6TwYofF\n1gbTl4MgqX67tiHCpQ2EAOHyJxCDut0DgdXdaMNmEMjRdrSzbymeAPnCKfWxkxlSaRosTKCL4BWa\nMS/TiJVZbuXEs1DIFAhKm4sTg7GkcrI7djNB3NyqpgdvHSQSn8h2vS/ZjvQs7rfSOBAkNlEv41xd\ngSGn2rtO/+YHqP65DSdsu3BaVXoT6fEqSWnHX4dXTEN5bTpl6TBcQe7rd6VzEojov32u5cSoHw2O\nHG1QAk8mGEPej1WFsQs3BWDJVTkSBKEqz3EWnzZRSb9wO55nnPt7eck5HHisd5FUmrh1CoFSl+Nm\nYWvtPjgelmFV4ZFUjO2MJB+ByRCac5krFk5yAD9UG/iNuovnFNa2RU9g7Jauwy8CTl2dlklyALKr\ndVwPaFsdZcJfMw8eD/A7hvWwTruc9+olBdytoptLFwG+Qt81IR2tq670v64fG9PiO/yzcnMcmyiQ\niRM9HcEARwmWmjgb3bHPDcK0RPOWlc4yOo80nOAXx17Org3bhzjlP1v9mxnhMUF6cKojawHhRUzN\nlM47ni3niAIi9G7oyOzWPPO5std3eqx7\n-----END CERTIFICATE-----\n\nTelekom Security TLS ECC Root 2020\n==================================\n-----BEGIN CERTIFICATE-----\nMIICQjCCAcmgAwIBAgIQNjqWjMlcsljN0AFdxeVXADAKBggqhkjOPQQDAzBjMQswCQYDVQQGEwJE\nRTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0eSBHbWJIMSswKQYDVQQDDCJUZWxl\na29tIFNlY3VyaXR5IFRMUyBFQ0MgUm9vdCAyMDIwMB4XDTIwMDgyNTA3NDgyMFoXDTQ1MDgyNTIz\nNTk1OVowYzELMAkGA1UEBhMCREUxJzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkg\nR21iSDErMCkGA1UEAwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgRUNDIFJvb3QgMjAyMDB2MBAGByqG\nSM49AgEGBSuBBAAiA2IABM6//leov9Wq9xCazbzREaK9Z0LMkOsVGJDZos0MKiXrPk/OtdKPD/M1\n2kOLAoC+b1EkHQ9rK8qfwm9QMuU3ILYg/4gND21Ju9sGpIeQkpT0CdDPf8iAC8GXs7s1J8nCG6NC\nMEAwHQYDVR0OBBYEFONyzG6VmUex5rNhTNHLq+O6zd6fMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P\nAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cAMGQCMHVSi7ekEE+uShCLsoRbQuHmKjYC2qBuGT8lv9pZ\nMo7k+5Dck2TOrbRBR2Diz6fLHgIwN0GMZt9Ba9aDAEH9L1r3ULRn0SyocddDypwnJJGDSA3PzfdU\nga/sf+Rn27iQ7t0l\n-----END CERTIFICATE-----\n\nTelekom Security TLS RSA Root 2023\n==================================\n-----BEGIN CERTIFICATE-----\nMIIFszCCA5ugAwIBAgIQIZxULej27HF3+k7ow3BXlzANBgkqhkiG9w0BAQwFADBjMQswCQYDVQQG\nEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0eSBHbWJIMSswKQYDVQQDDCJU\nZWxla29tIFNlY3VyaXR5IFRMUyBSU0EgUm9vdCAyMDIzMB4XDTIzMDMyODEyMTY0NVoXDTQ4MDMy\nNzIzNTk1OVowYzELMAkGA1UEBhMCREUxJzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJp\ndHkgR21iSDErMCkGA1UEAwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgUlNBIFJvb3QgMjAyMzCCAiIw\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAO01oYGA88tKaVvC+1GDrib94W7zgRJ9cUD/h3VC\nKSHtgVIs3xLBGYSJwb3FKNXVS2xE1kzbB5ZKVXrKNoIENqil/Cf2SfHVcp6R+SPWcHu79ZvB7JPP\nGeplfohwoHP89v+1VmLhc2o0mD6CuKyVU/QBoCcHcqMAU6DksquDOFczJZSfvkgdmOGjup5czQRx\nUX11eKvzWarE4GC+j4NSuHUaQTXtvPM6Y+mpFEXX5lLRbtLevOP1Czvm4MS9Q2QTps70mDdsipWo\nl8hHD/BeEIvnHRz+sTugBTNoBUGCwQMrAcjnj02r6LX2zWtEtefdi+zqJbQAIldNsLGyMcEWzv/9\nFIS3R/qy8XDe24tsNlikfLMR0cN3f1+2JeANxdKz+bi4d9s3cXFH42AYTyS2dTd4uaNir73Jco4v\nzLuu2+QVUhkHM/tqty1LkCiCc/4YizWN26cEar7qwU02OxY2kTLvtkCJkUPg8qKrBC7m8kwOFjQg\nrIfBLX7JZkcXFBGk8/ehJImr2BrIoVyxo/eMbcgByU/J7MT8rFEz0ciD0cmfHdRHNCk+y7AO+oML\nKFjlKdw/fKifybYKu6boRhYPluV75Gp6SG12mAWl3G0eQh5C2hrgUve1g8Aae3g1LDj1H/1Joy7S\nWWO/gLCMk3PLNaaZlSJhZQNg+y+TS/qanIA7AgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAdBgNV\nHQ4EFgQUtqeXgj10hZv3PJ+TmpV5dVKMbUcwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS2\np5eCPXSFm/c8n5OalXl1UoxtRzANBgkqhkiG9w0BAQwFAAOCAgEAqMxhpr51nhVQpGv7qHBFfLp+\nsVr8WyP6Cnf4mHGCDG3gXkaqk/QeoMPhk9tLrbKmXauw1GLLXrtm9S3ul0A8Yute1hTWjOKWi0Fp\nkzXmuZlrYrShF2Y0pmtjxrlO8iLpWA1WQdH6DErwM807u20hOq6OcrXDSvvpfeWxm4bu4uB9tPcy\n/SKE8YXJN3nptT+/XOR0so8RYgDdGGah2XsjX/GO1WfoVNpbOms2b/mBsTNHM3dA+VKq3dSDz4V4\nmZqTuXNnQkYRIer+CqkbGmVps4+uFrb2S1ayLfmlyOw7YqPta9BO1UAJpB+Y1zqlklkg5LB9zVtz\naL1txKITDmcZuI1CfmwMmm6gJC3VRRvcxAIU/oVbZZfKTpBQCHpCNfnqwmbU+AGuHrS+w6jv/naa\noqYfRvaE7fzbzsQCzndILIyy7MMAo+wsVRjBfhnu4S/yrYObnqsZ38aKL4x35bcF7DvB7L6Gs4a8\nwPfc5+pbrrLMtTWGS9DiP7bY+A4A7l3j941Y/8+LN+ljX273CXE2whJdV/LItM3z7gLfEdxquVeE\nHVlNjM7IDiPCtyaaEBRx/pOyiriA8A4QntOoUAw3gi/q4Iqd4Sw5/7W0cwDk90imc6y/st53BIe0\no82bNSQ3+pCTE4FCxpgmdTdmQRCsu/WU48IxK63nI1bMNSWSs1A=\n-----END CERTIFICATE-----\n\nFIRMAPROFESIONAL CA ROOT-A WEB\n==============================\n-----BEGIN CERTIFICATE-----\nMIICejCCAgCgAwIBAgIQMZch7a+JQn81QYehZ1ZMbTAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJF\nUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UEYQwPVkFURVMtQTYyNjM0MDY4\nMScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENBIFJPT1QtQSBXRUIwHhcNMjIwNDA2MDkwMTM2\nWhcNNDcwMzMxMDkwMTM2WjBuMQswCQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25h\nbCBTQTEYMBYGA1UEYQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFM\nIENBIFJPT1QtQSBXRUIwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARHU+osEaR3xyrq89Zfe9MEkVz6\niMYiuYMQYneEMy3pA4jU4DP37XcsSmDq5G+tbbT4TIqk5B/K6k84Si6CcyvHZpsKjECcfIr28jlg\nst7L7Ljkb+qbXbdTkBgyVcUgt5SjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUk+FD\nY1w8ndYn81LsF7Kpryz3dvgwHQYDVR0OBBYEFJPhQ2NcPJ3WJ/NS7Beyqa8s93b4MA4GA1UdDwEB\n/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjAdfKR7w4l1M+E7qUW/Runpod3JIha3RxEL2Jq68cgL\ncFBTApFwhVmpHqTm6iMxoAACMQD94vizrxa5HnPEluPBMBnYfubDl94cT7iJLzPrSA8Z94dGXSaQ\npYXFuXqUPoeovQA=\n-----END CERTIFICATE-----\n\nTWCA CYBER Root CA\n==================\n-----BEGIN CERTIFICATE-----\nMIIFjTCCA3WgAwIBAgIQQAE0jMIAAAAAAAAAATzyxjANBgkqhkiG9w0BAQwFADBQMQswCQYDVQQG\nEwJUVzESMBAGA1UEChMJVEFJV0FOLUNBMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJUV0NB\nIENZQkVSIFJvb3QgQ0EwHhcNMjIxMTIyMDY1NDI5WhcNNDcxMTIyMTU1OTU5WjBQMQswCQYDVQQG\nEwJUVzESMBAGA1UEChMJVEFJV0FOLUNBMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJUV0NB\nIENZQkVSIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDG+Moe2Qkgfh1s\nTs6P40czRJzHyWmqOlt47nDSkvgEs1JSHWdyKKHfi12VCv7qze33Kc7wb3+szT3vsxxFavcokPFh\nV8UMxKNQXd7UtcsZyoC5dc4pztKFIuwCY8xEMCDa6pFbVuYdHNWdZsc/34bKS1PE2Y2yHer43CdT\no0fhYcx9tbD47nORxc5zb87uEB8aBs/pJ2DFTxnk684iJkXXYJndzk834H/nY62wuFm40AZoNWDT\nNq5xQwTxaWV4fPMf88oon1oglWa0zbfuj3ikRRjpJi+NmykosaS3Om251Bw4ckVYsV7r8Cibt4LK\n/c/WMw+f+5eesRycnupfXtuq3VTpMCEobY5583WSjCb+3MX2w7DfRFlDo7YDKPYIMKoNM+HvnKkH\nIuNZW0CP2oi3aQiotyMuRAlZN1vH4xfyIutuOVLF3lSnmMlLIJXcRolftBL5hSmO68gnFSDAS9TM\nfAxsNAwmmyYxpjyn9tnQS6Jk/zuZQXLB4HCX8SS7K8R0IrGsayIyJNN4KsDAoS/xUgXJP+92ZuJF\n2A09rZXIx4kmyA+upwMu+8Ff+iDhcK2wZSA3M2Cw1a/XDBzCkHDXShi8fgGwsOsVHkQGzaRP6AzR\nwyAQ4VRlnrZR0Bp2a0JaWHY06rc3Ga4udfmW5cFZ95RXKSWNOkyrTZpB0F8mAwIDAQABo2MwYTAO\nBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSdhWEUfMFib5do5E83\nQOGt4A1WNzAdBgNVHQ4EFgQUnYVhFHzBYm+XaORPN0DhreANVjcwDQYJKoZIhvcNAQEMBQADggIB\nAGSPesRiDrWIzLjHhg6hShbNcAu3p4ULs3a2D6f/CIsLJc+o1IN1KriWiLb73y0ttGlTITVX1olN\nc79pj3CjYcya2x6a4CD4bLubIp1dhDGaLIrdaqHXKGnK/nZVekZn68xDiBaiA9a5F/gZbG0jAn/x\nX9AKKSM70aoK7akXJlQKTcKlTfjF/biBzysseKNnTKkHmvPfXvt89YnNdJdhEGoHK4Fa0o635yDR\nIG4kqIQnoVesqlVYL9zZyvpoBJ7tRCT5dEA7IzOrg1oYJkK2bVS1FmAwbLGg+LhBoF1JSdJlBTrq\n/p1hvIbZv97Tujqxf36SNI7JAG7cmL3c7IAFrQI932XtCwP39xaEBDG6k5TY8hL4iuO/Qq+n1M0R\nFxbIQh0UqEL20kCGoE8jypZFVmAGzbdVAaYBlGX+bgUJurSkquLvWL69J1bY73NxW0Qz8ppy6rBe\nPm6pUlvscG21h483XjyMnM7k8M4MZ0HMzvaAq07MTFb1wWFZk7Q+ptq4NxKfKjLji7gh7MMrZQzv\nIt6IKTtM1/r+t+FHvpw+PoP7UV31aPcuIYXcv/Fa4nzXxeSDwWrruoBa3lwtcHb4yOWHh8qgnaHl\nIhInD0Q9HWzq1MKLL295q39QpsQZp6F6t5b5wR9iWqJDB0BeJsas7a5wFsWqynKKTbDPAYsDP27X\n-----END CERTIFICATE-----\n\nSecureSign Root CA12\n====================\n-----BEGIN CERTIFICATE-----\nMIIDcjCCAlqgAwIBAgIUZvnHwa/swlG07VOX5uaCwysckBYwDQYJKoZIhvcNAQELBQAwUTELMAkG\nA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBMdGQuMR0wGwYDVQQDExRT\nZWN1cmVTaWduIFJvb3QgQ0ExMjAeFw0yMDA0MDgwNTM2NDZaFw00MDA0MDgwNTM2NDZaMFExCzAJ\nBgNVBAYTAkpQMSMwIQYDVQQKExpDeWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMU\nU2VjdXJlU2lnbiBSb290IENBMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6OcE3\nemhFKxS06+QT61d1I02PJC0W6K6OyX2kVzsqdiUzg2zqMoqUm048luT9Ub+ZyZN+v/mtp7JIKwcc\nJ/VMvHASd6SFVLX9kHrko+RRWAPNEHl57muTH2SOa2SroxPjcf59q5zdJ1M3s6oYwlkm7Fsf0uZl\nfO+TvdhYXAvA42VvPMfKWeP+bl+sg779XSVOKik71gurFzJ4pOE+lEa+Ym6b3kaosRbnhW70CEBF\nEaCeVESE99g2zvVQR9wsMJvuwPWW0v4JhscGWa5Pro4RmHvzC1KqYiaqId+OJTN5lxZJjfU+1Uef\nNzFJM3IFTQy2VYzxV4+Kh9GtxRESOaCtAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P\nAQH/BAQDAgEGMB0GA1UdDgQWBBRXNPN0zwRL1SXm8UC2LEzZLemgrTANBgkqhkiG9w0BAQsFAAOC\nAQEAPrvbFxbS8hQBICw4g0utvsqFepq2m2um4fylOqyttCg6r9cBg0krY6LdmmQOmFxv3Y67ilQi\nLUoT865AQ9tPkbeGGuwAtEGBpE/6aouIs3YIcipJQMPTw4WJmBClnW8Zt7vPemVV2zfrPIpyMpce\nmik+rY3moxtt9XUa5rBouVui7mlHJzWhhpmA8zNL4WukJsPvdFlseqJkth5Ew1DgDzk9qTPxpfPS\nvWKErI4cqc1avTc7bgoitPQV55FYxTpE05Uo2cBl6XLK0A+9H7MV2anjpEcJnuDLN/v9vZfVvhga\naaI5gdka9at/yOPiZwud9AzqVN/Ssq+xIvEg37xEHA==\n-----END CERTIFICATE-----\n\nSecureSign Root CA14\n====================\n-----BEGIN CERTIFICATE-----\nMIIFcjCCA1qgAwIBAgIUZNtaDCBO6Ncpd8hQJ6JaJ90t8sswDQYJKoZIhvcNAQEMBQAwUTELMAkG\nA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBMdGQuMR0wGwYDVQQDExRT\nZWN1cmVTaWduIFJvb3QgQ0ExNDAeFw0yMDA0MDgwNzA2MTlaFw00NTA0MDgwNzA2MTlaMFExCzAJ\nBgNVBAYTAkpQMSMwIQYDVQQKExpDeWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMU\nU2VjdXJlU2lnbiBSb290IENBMTQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDF0nqh\n1oq/FjHQmNE6lPxauG4iwWL3pwon71D2LrGeaBLwbCRjOfHw3xDG3rdSINVSW0KZnvOgvlIfX8xn\nbacuUKLBl422+JX1sLrcneC+y9/3OPJH9aaakpUqYllQC6KxNedlsmGy6pJxaeQp8E+BgQQ8sqVb\n1MWoWWd7VRxJq3qdwudzTe/NCcLEVxLbAQ4jeQkHO6Lo/IrPj8BGJJw4J+CDnRugv3gVEOuGTgpa\n/d/aLIJ+7sr2KeH6caH3iGicnPCNvg9JkdjqOvn90Ghx2+m1K06Ckm9mH+Dw3EzsytHqunQG+bOE\nkJTRX45zGRBdAuVwpcAQ0BB8b8VYSbSwbprafZX1zNoCr7gsfXmPvkPx+SgojQlD+Ajda8iLLCSx\njVIHvXiby8posqTdDEx5YMaZ0ZPxMBoH064iwurO8YQJzOAUbn8/ftKChazcqRZOhaBgy/ac18iz\nju3Gm5h1DVXoX+WViwKkrkMpKBGk5hIwAUt1ax5mnXkvpXYvHUC0bcl9eQjs0Wq2XSqypWa9a4X0\ndFbD9ed1Uigspf9mR6XU/v6eVL9lfgHWMI+lNpyiUBzuOIABSMbHdPTGrMNASRZhdCyvjG817XsY\nAFs2PJxQDcqSMxDxJklt33UkN4Ii1+iW/RVLApY+B3KVfqs9TC7XyvDf4Fg/LS8EmjijAQIDAQAB\no0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUBpOjCl4oaTeq\nYR3r6/wtbyPk86AwDQYJKoZIhvcNAQEMBQADggIBAJaAcgkGfpzMkwQWu6A6jZJOtxEaCnFxEM0E\nrX+lRVAQZk5KQaID2RFPeje5S+LGjzJmdSX7684/AykmjbgWHfYfM25I5uj4V7Ibed87hwriZLoA\nymzvftAj63iP/2SbNDefNWWipAA9EiOWWF3KY4fGoweITedpdopTzfFP7ELyk+OZpDc8h7hi2/Ds\nHzc/N19DzFGdtfCXwreFamgLRB7lUe6TzktuhsHSDCRZNhqfLJGP4xjblJUK7ZGqDpncllPjYYPG\nFrojutzdfhrGe0K22VoF3Jpf1d+42kd92jjbrDnVHmtsKheMYc2xbXIBw8MgAGJoFjHVdqqGuw6q\nnsb58Nn4DSEC5MUoFlkRudlpcyqSeLiSV5sI8jrlL5WwWLdrIBRtFO8KvH7YVdiI2i/6GaX7i+B/\nOfVyK4XELKzvGUWSTLNhB9xNH27SgRNcmvMSZ4PPmz+Ln52kuaiWA3rF7iDeM9ovnhp6dB7h7sxa\nOgTdsxoEqBRjrLdHEoOabPXm6RUVkRqEGQ6UROcSjiVbgGcZ3GOTEAtlLor6CZpO2oYofaphNdgO\npygau1LgePhsumywbrmHXumZNTfxPWQrqaA0k89jL9WB365jJ6UeTo3cKXhZ+PmhIIynJkBugnLN\neLLIjzwec+fBH7/PzqUqm9tEZDKgu39cJRNItX+S\n-----END CERTIFICATE-----\n\nSecureSign Root CA15\n====================\n-----BEGIN CERTIFICATE-----\nMIICIzCCAamgAwIBAgIUFhXHw9hJp75pDIqI7fBw+d23PocwCgYIKoZIzj0EAwMwUTELMAkGA1UE\nBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBMdGQuMR0wGwYDVQQDExRTZWN1\ncmVTaWduIFJvb3QgQ0ExNTAeFw0yMDA0MDgwODMyNTZaFw00NTA0MDgwODMyNTZaMFExCzAJBgNV\nBAYTAkpQMSMwIQYDVQQKExpDeWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2Vj\ndXJlU2lnbiBSb290IENBMTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQLUHSNZDKZmbPSYAi4Io5G\ndCx4wCtELW1fHcmuS1Iggz24FG1Th2CeX2yF2wYUleDHKP+dX+Sq8bOLbe1PL0vJSpSRZHX+AezB\n2Ot6lHhWGENfa4HL9rzatAy2KZMIaY+jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD\nAgEGMB0GA1UdDgQWBBTrQciu/NWeUUj1vYv0hyCTQSvT9DAKBggqhkjOPQQDAwNoADBlAjEA2S6J\nfl5OpBEHvVnCB96rMjhTKkZEBhd6zlHp4P9mLQlO4E/0BdGF9jVg3PVys0Z9AjBEmEYagoUeYWmJ\nSwdLZrWeqrqgHkHZAXQ6bkU6iYAZezKYVWOr62Nuk22rGwlgMU4=\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "include/vendor/composer/ca-bundle/src/CaBundle.php",
    "content": "<?php\n\n/*\n * This file is part of composer/ca-bundle.\n *\n * (c) Composer <https://github.com/composer>\n *\n * For the full copyright and license information, please view\n * the LICENSE file that was distributed with this source code.\n */\n\nnamespace Composer\\CaBundle;\n\nuse Psr\\Log\\LoggerInterface;\nuse Symfony\\Component\\Process\\PhpProcess;\n\n/**\n * @author Chris Smith <chris@cs278.org>\n * @author Jordi Boggiano <j.boggiano@seld.be>\n */\nclass CaBundle\n{\n    /** @var string|null */\n    private static $caPath;\n    /** @var array<string, bool> */\n    private static $caFileValidity = array();\n\n    /**\n     * Returns the system CA bundle path, or a path to the bundled one\n     *\n     * This method was adapted from Sslurp.\n     * https://github.com/EvanDotPro/Sslurp\n     *\n     * (c) Evan Coury <me@evancoury.com>\n     *\n     * For the full copyright and license information, please see below:\n     *\n     * Copyright (c) 2013, Evan Coury\n     * All rights reserved.\n     *\n     * Redistribution and use in source and binary forms, with or without modification,\n     * are permitted provided that the following conditions are met:\n     *\n     *     * Redistributions of source code must retain the above copyright notice,\n     *       this list of conditions and the following disclaimer.\n     *\n     *     * Redistributions in binary form must reproduce the above copyright notice,\n     *       this list of conditions and the following disclaimer in the documentation\n     *       and/or other materials provided with the distribution.\n     *\n     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n     * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n     * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n     * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\n     * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n     * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n     * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n     * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n     * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n     * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n     *\n     * @param  LoggerInterface $logger optional logger for information about which CA files were loaded\n     * @return string          path to a CA bundle file or directory\n     */\n    public static function getSystemCaRootBundlePath(?LoggerInterface $logger = null)\n    {\n        if (self::$caPath !== null) {\n            return self::$caPath;\n        }\n        $caBundlePaths = array();\n\n        // If SSL_CERT_FILE env variable points to a valid certificate/bundle, use that.\n        // This mimics how OpenSSL uses the SSL_CERT_FILE env variable.\n        $caBundlePaths[] = self::getEnvVariable('SSL_CERT_FILE');\n\n        // If SSL_CERT_DIR env variable points to a valid certificate/bundle, use that.\n        // This mimics how OpenSSL uses the SSL_CERT_FILE env variable.\n        $caBundlePaths[] = self::getEnvVariable('SSL_CERT_DIR');\n\n        $caBundlePaths[] = ini_get('openssl.cafile');\n        $caBundlePaths[] = ini_get('openssl.capath');\n\n        $otherLocations = array(\n            '/etc/pki/tls/certs/ca-bundle.crt', // Fedora, RHEL, CentOS (ca-certificates package)\n            '/etc/ssl/certs/ca-certificates.crt', // Debian, Ubuntu, Gentoo, Arch Linux (ca-certificates package)\n            '/etc/ssl/ca-bundle.pem', // SUSE, openSUSE (ca-certificates package)\n            '/usr/ssl/certs/ca-bundle.crt', // Cygwin\n            '/opt/local/share/curl/curl-ca-bundle.crt', // OS X macports, curl-ca-bundle package\n            '/usr/local/share/curl/curl-ca-bundle.crt', // Default cURL CA bunde path (without --with-ca-bundle option)\n            '/usr/share/ssl/certs/ca-bundle.crt', // Really old RedHat?\n            '/etc/ssl/cert.pem', // OpenBSD\n            '/usr/local/etc/openssl/cert.pem', // OS X homebrew, openssl package\n            '/usr/local/etc/openssl@1.1/cert.pem', // OS X homebrew, openssl@1.1 package\n            '/opt/homebrew/etc/openssl@3/cert.pem', // macOS silicon homebrew, openssl@3 package\n            '/opt/homebrew/etc/openssl@1.1/cert.pem', // macOS silicon homebrew, openssl@1.1 package\n            '/etc/pki/tls/certs',\n            '/etc/ssl/certs', // FreeBSD\n        );\n\n        $caBundlePaths = array_merge($caBundlePaths, $otherLocations);\n\n        foreach ($caBundlePaths as $caBundle) {\n            if ($caBundle && self::caFileUsable($caBundle, $logger)) {\n                return self::$caPath = $caBundle;\n            }\n\n            if ($caBundle && self::caDirUsable($caBundle, $logger)) {\n                return self::$caPath = $caBundle;\n            }\n        }\n\n        return self::$caPath = static::getBundledCaBundlePath(); // Bundled CA file, last resort\n    }\n\n    /**\n     * Returns the path to the bundled CA file\n     *\n     * In case you don't want to trust the user or the system, you can use this directly\n     *\n     * @return string path to a CA bundle file\n     */\n    public static function getBundledCaBundlePath()\n    {\n        $caBundleFile = __DIR__.'/../res/cacert.pem';\n\n        // cURL does not understand 'phar://' paths\n        // see https://github.com/composer/ca-bundle/issues/10\n        if (0 === strpos($caBundleFile, 'phar://')) {\n            $tempCaBundleFile = tempnam(sys_get_temp_dir(), 'openssl-ca-bundle-');\n            if (false === $tempCaBundleFile) {\n                throw new \\RuntimeException('Could not create a temporary file to store the bundled CA file');\n            }\n\n            file_put_contents(\n                $tempCaBundleFile,\n                file_get_contents($caBundleFile)\n            );\n\n            register_shutdown_function(function() use ($tempCaBundleFile) {\n                @unlink($tempCaBundleFile);\n            });\n\n            $caBundleFile = $tempCaBundleFile;\n        }\n\n        return $caBundleFile;\n    }\n\n    /**\n     * Validates a CA file using opensl_x509_parse only if it is safe to use\n     *\n     * @param string          $filename\n     * @param LoggerInterface $logger   optional logger for information about which CA files were loaded\n     *\n     * @return bool\n     */\n    public static function validateCaFile($filename, ?LoggerInterface $logger = null)\n    {\n        static $warned = false;\n\n        if (isset(self::$caFileValidity[$filename])) {\n            return self::$caFileValidity[$filename];\n        }\n\n        $contents = file_get_contents($filename);\n\n        if (is_string($contents) && strlen($contents) > 0) {\n            $contents = preg_replace(\"/^(\\\\-+(?:BEGIN|END))\\\\s+TRUSTED\\\\s+(CERTIFICATE\\\\-+)\\$/m\", '$1 $2', $contents);\n            if (null === $contents) {\n                // regex extraction failed\n                $isValid = false;\n            } else {\n                $isValid = (bool) openssl_x509_parse($contents);\n            }\n        } else {\n            $isValid = false;\n        }\n\n        if ($logger) {\n            $logger->debug('Checked CA file '.realpath($filename).': '.($isValid ? 'valid' : 'invalid'));\n        }\n\n        return self::$caFileValidity[$filename] = $isValid;\n    }\n\n    /**\n     * Test if it is safe to use the PHP function openssl_x509_parse().\n     *\n     * This checks if OpenSSL extensions is vulnerable to remote code execution\n     * via the exploit documented as CVE-2013-6420.\n     *\n     * @return bool\n     */\n    public static function isOpensslParseSafe()\n    {\n        return true;\n    }\n\n    /**\n     * Resets the static caches\n     * @return void\n     */\n    public static function reset()\n    {\n        self::$caFileValidity = array();\n        self::$caPath = null;\n    }\n\n    /**\n     * @param  string $name\n     * @return string|false\n     */\n    private static function getEnvVariable($name)\n    {\n        if (isset($_SERVER[$name])) {\n            return (string) $_SERVER[$name];\n        }\n\n        if (PHP_SAPI === 'cli' && ($value = getenv($name)) !== false && $value !== null) {\n            return (string) $value;\n        }\n\n        return false;\n    }\n\n    /**\n     * @param  string|false $certFile\n     * @param  LoggerInterface|null $logger\n     * @return bool\n     */\n    private static function caFileUsable($certFile, ?LoggerInterface $logger = null)\n    {\n        return $certFile\n            && self::isFile($certFile, $logger)\n            && self::isReadable($certFile, $logger)\n            && self::validateCaFile($certFile, $logger);\n    }\n\n    /**\n     * @param  string|false $certDir\n     * @param  LoggerInterface|null $logger\n     * @return bool\n     */\n    private static function caDirUsable($certDir, ?LoggerInterface $logger = null)\n    {\n        return $certDir\n            && self::isDir($certDir, $logger)\n            && self::isReadable($certDir, $logger)\n            && self::glob($certDir . '/*', $logger);\n    }\n\n    /**\n     * @param  string $certFile\n     * @param  LoggerInterface|null $logger\n     * @return bool\n     */\n    private static function isFile($certFile, ?LoggerInterface $logger = null)\n    {\n        $isFile = @is_file($certFile);\n        if (!$isFile && $logger) {\n            $logger->debug(sprintf('Checked CA file %s does not exist or it is not a file.', $certFile));\n        }\n\n        return $isFile;\n    }\n\n    /**\n     * @param  string $certDir\n     * @param  LoggerInterface|null $logger\n     * @return bool\n     */\n    private static function isDir($certDir, ?LoggerInterface $logger = null)\n    {\n        $isDir = @is_dir($certDir);\n        if (!$isDir && $logger) {\n            $logger->debug(sprintf('Checked directory %s does not exist or it is not a directory.', $certDir));\n        }\n\n        return $isDir;\n    }\n\n    /**\n     * @param  string $certFileOrDir\n     * @param  LoggerInterface|null $logger\n     * @return bool\n     */\n    private static function isReadable($certFileOrDir, ?LoggerInterface $logger = null)\n    {\n        $isReadable = @is_readable($certFileOrDir);\n        if (!$isReadable && $logger) {\n            $logger->debug(sprintf('Checked file or directory %s is not readable.', $certFileOrDir));\n        }\n\n        return $isReadable;\n    }\n\n    /**\n     * @param  string $pattern\n     * @param  LoggerInterface|null $logger\n     * @return bool\n     */\n    private static function glob($pattern, ?LoggerInterface $logger = null)\n    {\n        $certs = glob($pattern);\n        if ($certs === false) {\n            if ($logger) {\n                $logger->debug(sprintf(\"An error occurred while trying to find certificates for pattern: %s\", $pattern));\n            }\n            return false;\n        }\n\n        if (count($certs) === 0) {\n            if ($logger) {\n                $logger->debug(sprintf(\"No CA files found for pattern: %s\", $pattern));\n            }\n            return false;\n        }\n\n        return true;\n    }\n}\n"
  },
  {
    "path": "include/vendor/composer/installed.json",
    "content": "{\n    \"packages\": [\n        {\n            \"name\": \"abraham/twitteroauth\",\n            \"version\": \"3.3.0\",\n            \"version_normalized\": \"3.3.0.0\",\n            \"source\": {\n                \"type\": \"git\",\n                \"url\": \"https://github.com/abraham/twitteroauth.git\",\n                \"reference\": \"2e640c1e8bb9b5dbcb2230703f97c89a852e30b5\"\n            },\n            \"dist\": {\n                \"type\": \"zip\",\n                \"url\": \"https://api.github.com/repos/abraham/twitteroauth/zipball/2e640c1e8bb9b5dbcb2230703f97c89a852e30b5\",\n                \"reference\": \"2e640c1e8bb9b5dbcb2230703f97c89a852e30b5\",\n                \"shasum\": \"\"\n            },\n            \"require\": {\n                \"composer/ca-bundle\": \"^1.2\",\n                \"ext-curl\": \"*\",\n                \"php\": \"^7.4 || ^8.0 || ^8.1\"\n            },\n            \"require-dev\": {\n                \"php-vcr/php-vcr\": \"^1\",\n                \"php-vcr/phpunit-testlistener-vcr\": \"dev-php-8\",\n                \"phpmd/phpmd\": \"^2\",\n                \"phpunit/phpunit\": \"^8 || ^9\",\n                \"squizlabs/php_codesniffer\": \"^3\"\n            },\n            \"time\": \"2022-01-19T01:10:09+00:00\",\n            \"type\": \"library\",\n            \"installation-source\": \"dist\",\n            \"autoload\": {\n                \"psr-4\": {\n                    \"Abraham\\\\TwitterOAuth\\\\\": \"src\"\n                }\n            },\n            \"notification-url\": \"https://packagist.org/downloads/\",\n            \"license\": [\n                \"MIT\"\n            ],\n            \"authors\": [\n                {\n                    \"name\": \"Abraham Williams\",\n                    \"email\": \"abraham@abrah.am\",\n                    \"homepage\": \"https://abrah.am\",\n                    \"role\": \"Developer\"\n                }\n            ],\n            \"description\": \"The most popular PHP library for use with the Twitter OAuth REST API.\",\n            \"homepage\": \"https://twitteroauth.com\",\n            \"keywords\": [\n                \"Twitter API\",\n                \"Twitter oAuth\",\n                \"api\",\n                \"oauth\",\n                \"rest\",\n                \"social\",\n                \"twitter\"\n            ],\n            \"support\": {\n                \"issues\": \"https://github.com/abraham/twitteroauth/issues\",\n                \"source\": \"https://github.com/abraham/twitteroauth\"\n            },\n            \"install-path\": \"../abraham/twitteroauth\"\n        },\n        {\n            \"name\": \"composer/ca-bundle\",\n            \"version\": \"1.5.5\",\n            \"version_normalized\": \"1.5.5.0\",\n            \"source\": {\n                \"type\": \"git\",\n                \"url\": \"https://github.com/composer/ca-bundle.git\",\n                \"reference\": \"08c50d5ec4c6ced7d0271d2862dec8c1033283e6\"\n            },\n            \"dist\": {\n                \"type\": \"zip\",\n                \"url\": \"https://api.github.com/repos/composer/ca-bundle/zipball/08c50d5ec4c6ced7d0271d2862dec8c1033283e6\",\n                \"reference\": \"08c50d5ec4c6ced7d0271d2862dec8c1033283e6\",\n                \"shasum\": \"\"\n            },\n            \"require\": {\n                \"ext-openssl\": \"*\",\n                \"ext-pcre\": \"*\",\n                \"php\": \"^7.2 || ^8.0\"\n            },\n            \"require-dev\": {\n                \"phpstan/phpstan\": \"^1.10\",\n                \"phpunit/phpunit\": \"^8 || ^9\",\n                \"psr/log\": \"^1.0 || ^2.0 || ^3.0\",\n                \"symfony/process\": \"^4.0 || ^5.0 || ^6.0 || ^7.0\"\n            },\n            \"time\": \"2025-01-08T16:17:16+00:00\",\n            \"type\": \"library\",\n            \"extra\": {\n                \"branch-alias\": {\n                    \"dev-main\": \"1.x-dev\"\n                }\n            },\n            \"installation-source\": \"dist\",\n            \"autoload\": {\n                \"psr-4\": {\n                    \"Composer\\\\CaBundle\\\\\": \"src\"\n                }\n            },\n            \"notification-url\": \"https://packagist.org/downloads/\",\n            \"license\": [\n                \"MIT\"\n            ],\n            \"authors\": [\n                {\n                    \"name\": \"Jordi Boggiano\",\n                    \"email\": \"j.boggiano@seld.be\",\n                    \"homepage\": \"http://seld.be\"\n                }\n            ],\n            \"description\": \"Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.\",\n            \"keywords\": [\n                \"cabundle\",\n                \"cacert\",\n                \"certificate\",\n                \"ssl\",\n                \"tls\"\n            ],\n            \"support\": {\n                \"irc\": \"irc://irc.freenode.org/composer\",\n                \"issues\": \"https://github.com/composer/ca-bundle/issues\",\n                \"source\": \"https://github.com/composer/ca-bundle/tree/1.5.5\"\n            },\n            \"funding\": [\n                {\n                    \"url\": \"https://packagist.com\",\n                    \"type\": \"custom\"\n                },\n                {\n                    \"url\": \"https://github.com/composer\",\n                    \"type\": \"github\"\n                },\n                {\n                    \"url\": \"https://tidelift.com/funding/github/packagist/composer/composer\",\n                    \"type\": \"tidelift\"\n                }\n            ],\n            \"install-path\": \"./ca-bundle\"\n        },\n        {\n            \"name\": \"erusev/parsedown\",\n            \"version\": \"1.7.4\",\n            \"version_normalized\": \"1.7.4.0\",\n            \"source\": {\n                \"type\": \"git\",\n                \"url\": \"https://github.com/erusev/parsedown.git\",\n                \"reference\": \"cb17b6477dfff935958ba01325f2e8a2bfa6dab3\"\n            },\n            \"dist\": {\n                \"type\": \"zip\",\n                \"url\": \"https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3\",\n                \"reference\": \"cb17b6477dfff935958ba01325f2e8a2bfa6dab3\",\n                \"shasum\": \"\"\n            },\n            \"require\": {\n                \"ext-mbstring\": \"*\",\n                \"php\": \">=5.3.0\"\n            },\n            \"require-dev\": {\n                \"phpunit/phpunit\": \"^4.8.35\"\n            },\n            \"time\": \"2019-12-30T22:54:17+00:00\",\n            \"type\": \"library\",\n            \"installation-source\": \"dist\",\n            \"autoload\": {\n                \"psr-0\": {\n                    \"Parsedown\": \"\"\n                }\n            },\n            \"notification-url\": \"https://packagist.org/downloads/\",\n            \"license\": [\n                \"MIT\"\n            ],\n            \"authors\": [\n                {\n                    \"name\": \"Emanuil Rusev\",\n                    \"email\": \"hello@erusev.com\",\n                    \"homepage\": \"http://erusev.com\"\n                }\n            ],\n            \"description\": \"Parser for Markdown.\",\n            \"homepage\": \"http://parsedown.org\",\n            \"keywords\": [\n                \"markdown\",\n                \"parser\"\n            ],\n            \"support\": {\n                \"issues\": \"https://github.com/erusev/parsedown/issues\",\n                \"source\": \"https://github.com/erusev/parsedown/tree/1.7.x\"\n            },\n            \"install-path\": \"../erusev/parsedown\"\n        }\n    ],\n    \"dev\": true,\n    \"dev-package-names\": []\n}\n"
  },
  {
    "path": "include/vendor/composer/installed.php",
    "content": "<?php return array(\n    'root' => array(\n        'name' => '__root__',\n        'pretty_version' => '250221.x-dev',\n        'version' => '250221.9999999.9999999.9999999-dev',\n        'reference' => '45006462ea70e151fcf628e1828024c8b5536e74',\n        'type' => 'library',\n        'install_path' => __DIR__ . '/../../',\n        'aliases' => array(),\n        'dev' => true,\n    ),\n    'versions' => array(\n        '__root__' => array(\n            'pretty_version' => '250221.x-dev',\n            'version' => '250221.9999999.9999999.9999999-dev',\n            'reference' => '45006462ea70e151fcf628e1828024c8b5536e74',\n            'type' => 'library',\n            'install_path' => __DIR__ . '/../../',\n            'aliases' => array(),\n            'dev_requirement' => false,\n        ),\n        'abraham/twitteroauth' => array(\n            'pretty_version' => '3.3.0',\n            'version' => '3.3.0.0',\n            'reference' => '2e640c1e8bb9b5dbcb2230703f97c89a852e30b5',\n            'type' => 'library',\n            'install_path' => __DIR__ . '/../abraham/twitteroauth',\n            'aliases' => array(),\n            'dev_requirement' => false,\n        ),\n        'composer/ca-bundle' => array(\n            'pretty_version' => '1.5.5',\n            'version' => '1.5.5.0',\n            'reference' => '08c50d5ec4c6ced7d0271d2862dec8c1033283e6',\n            'type' => 'library',\n            'install_path' => __DIR__ . '/./ca-bundle',\n            'aliases' => array(),\n            'dev_requirement' => false,\n        ),\n        'erusev/parsedown' => array(\n            'pretty_version' => '1.7.4',\n            'version' => '1.7.4.0',\n            'reference' => 'cb17b6477dfff935958ba01325f2e8a2bfa6dab3',\n            'type' => 'library',\n            'install_path' => __DIR__ . '/../erusev/parsedown',\n            'aliases' => array(),\n            'dev_requirement' => false,\n        ),\n    ),\n);\n"
  },
  {
    "path": "include/vendor/composer/platform_check.php",
    "content": "<?php\n\n// platform_check.php @generated by Composer\n\n$issues = array();\n\nif (!(PHP_VERSION_ID >= 70400)) {\n    $issues[] = 'Your Composer dependencies require a PHP version \">= 7.4.0\". You are running ' . PHP_VERSION . '.';\n}\n\nif ($issues) {\n    if (!headers_sent()) {\n        header('HTTP/1.1 500 Internal Server Error');\n    }\n    if (!ini_get('display_errors')) {\n        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {\n            fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);\n        } elseif (!headers_sent()) {\n            echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;\n        }\n    }\n    trigger_error(\n        'Composer detected issues in your platform: ' . implode(' ', $issues),\n        E_USER_ERROR\n    );\n}\n"
  },
  {
    "path": "include/vendor/erusev/parsedown/LICENSE.txt",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2013-2018 Emanuil Rusev, erusev.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "include/vendor/erusev/parsedown/Parsedown.php",
    "content": "<?php\n\n#\n#\n# Parsedown\n# http://parsedown.org\n#\n# (c) Emanuil Rusev\n# http://erusev.com\n#\n# For the full license information, view the LICENSE file that was distributed\n# with this source code.\n#\n#\n\nclass Parsedown\n{\n    # ~\n\n    const version = '1.7.4';\n\n    # ~\n\n    function text($text)\n    {\n        # make sure no definitions are set\n        $this->DefinitionData = array();\n\n        # standardize line breaks\n        $text = str_replace(array(\"\\r\\n\", \"\\r\"), \"\\n\", $text);\n\n        # remove surrounding line breaks\n        $text = trim($text, \"\\n\");\n\n        # split text into lines\n        $lines = explode(\"\\n\", $text);\n\n        # iterate through lines to identify blocks\n        $markup = $this->lines($lines);\n\n        # trim line breaks\n        $markup = trim($markup, \"\\n\");\n\n        return $markup;\n    }\n\n    #\n    # Setters\n    #\n\n    function setBreaksEnabled($breaksEnabled)\n    {\n        $this->breaksEnabled = $breaksEnabled;\n\n        return $this;\n    }\n\n    protected $breaksEnabled;\n\n    function setMarkupEscaped($markupEscaped)\n    {\n        $this->markupEscaped = $markupEscaped;\n\n        return $this;\n    }\n\n    protected $markupEscaped;\n\n    function setUrlsLinked($urlsLinked)\n    {\n        $this->urlsLinked = $urlsLinked;\n\n        return $this;\n    }\n\n    protected $urlsLinked = true;\n\n    function setSafeMode($safeMode)\n    {\n        $this->safeMode = (bool) $safeMode;\n\n        return $this;\n    }\n\n    protected $safeMode;\n\n    protected $safeLinksWhitelist = array(\n        'http://',\n        'https://',\n        'ftp://',\n        'ftps://',\n        'mailto:',\n        'data:image/png;base64,',\n        'data:image/gif;base64,',\n        'data:image/jpeg;base64,',\n        'irc:',\n        'ircs:',\n        'git:',\n        'ssh:',\n        'news:',\n        'steam:',\n    );\n\n    #\n    # Lines\n    #\n\n    protected $BlockTypes = array(\n        '#' => array('Header'),\n        '*' => array('Rule', 'List'),\n        '+' => array('List'),\n        '-' => array('SetextHeader', 'Table', 'Rule', 'List'),\n        '0' => array('List'),\n        '1' => array('List'),\n        '2' => array('List'),\n        '3' => array('List'),\n        '4' => array('List'),\n        '5' => array('List'),\n        '6' => array('List'),\n        '7' => array('List'),\n        '8' => array('List'),\n        '9' => array('List'),\n        ':' => array('Table'),\n        '<' => array('Comment', 'Markup'),\n        '=' => array('SetextHeader'),\n        '>' => array('Quote'),\n        '[' => array('Reference'),\n        '_' => array('Rule'),\n        '`' => array('FencedCode'),\n        '|' => array('Table'),\n        '~' => array('FencedCode'),\n    );\n\n    # ~\n\n    protected $unmarkedBlockTypes = array(\n        'Code',\n    );\n\n    #\n    # Blocks\n    #\n\n    protected function lines(array $lines)\n    {\n        $CurrentBlock = null;\n\n        foreach ($lines as $line)\n        {\n            if (chop($line) === '')\n            {\n                if (isset($CurrentBlock))\n                {\n                    $CurrentBlock['interrupted'] = true;\n                }\n\n                continue;\n            }\n\n            if (strpos($line, \"\\t\") !== false)\n            {\n                $parts = explode(\"\\t\", $line);\n\n                $line = $parts[0];\n\n                unset($parts[0]);\n\n                foreach ($parts as $part)\n                {\n                    $shortage = 4 - mb_strlen($line, 'utf-8') % 4;\n\n                    $line .= str_repeat(' ', $shortage);\n                    $line .= $part;\n                }\n            }\n\n            $indent = 0;\n\n            while (isset($line[$indent]) and $line[$indent] === ' ')\n            {\n                $indent ++;\n            }\n\n            $text = $indent > 0 ? substr($line, $indent) : $line;\n\n            # ~\n\n            $Line = array('body' => $line, 'indent' => $indent, 'text' => $text);\n\n            # ~\n\n            if (isset($CurrentBlock['continuable']))\n            {\n                $Block = $this->{'block'.$CurrentBlock['type'].'Continue'}($Line, $CurrentBlock);\n\n                if (isset($Block))\n                {\n                    $CurrentBlock = $Block;\n\n                    continue;\n                }\n                else\n                {\n                    if ($this->isBlockCompletable($CurrentBlock['type']))\n                    {\n                        $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock);\n                    }\n                }\n            }\n\n            # ~\n\n            $marker = $text[0];\n\n            # ~\n\n            $blockTypes = $this->unmarkedBlockTypes;\n\n            if (isset($this->BlockTypes[$marker]))\n            {\n                foreach ($this->BlockTypes[$marker] as $blockType)\n                {\n                    $blockTypes []= $blockType;\n                }\n            }\n\n            #\n            # ~\n\n            foreach ($blockTypes as $blockType)\n            {\n                $Block = $this->{'block'.$blockType}($Line, $CurrentBlock);\n\n                if (isset($Block))\n                {\n                    $Block['type'] = $blockType;\n\n                    if ( ! isset($Block['identified']))\n                    {\n                        $Blocks []= $CurrentBlock;\n\n                        $Block['identified'] = true;\n                    }\n\n                    if ($this->isBlockContinuable($blockType))\n                    {\n                        $Block['continuable'] = true;\n                    }\n\n                    $CurrentBlock = $Block;\n\n                    continue 2;\n                }\n            }\n\n            # ~\n\n            if (isset($CurrentBlock) and ! isset($CurrentBlock['type']) and ! isset($CurrentBlock['interrupted']))\n            {\n                $CurrentBlock['element']['text'] .= \"\\n\".$text;\n            }\n            else\n            {\n                $Blocks []= $CurrentBlock;\n\n                $CurrentBlock = $this->paragraph($Line);\n\n                $CurrentBlock['identified'] = true;\n            }\n        }\n\n        # ~\n\n        if (isset($CurrentBlock['continuable']) and $this->isBlockCompletable($CurrentBlock['type']))\n        {\n            $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock);\n        }\n\n        # ~\n\n        $Blocks []= $CurrentBlock;\n\n        unset($Blocks[0]);\n\n        # ~\n\n        $markup = '';\n\n        foreach ($Blocks as $Block)\n        {\n            if (isset($Block['hidden']))\n            {\n                continue;\n            }\n\n            $markup .= \"\\n\";\n            $markup .= isset($Block['markup']) ? $Block['markup'] : $this->element($Block['element']);\n        }\n\n        $markup .= \"\\n\";\n\n        # ~\n\n        return $markup;\n    }\n\n    protected function isBlockContinuable($Type)\n    {\n        return method_exists($this, 'block'.$Type.'Continue');\n    }\n\n    protected function isBlockCompletable($Type)\n    {\n        return method_exists($this, 'block'.$Type.'Complete');\n    }\n\n    #\n    # Code\n\n    protected function blockCode($Line, $Block = null)\n    {\n        if (isset($Block) and ! isset($Block['type']) and ! isset($Block['interrupted']))\n        {\n            return;\n        }\n\n        if ($Line['indent'] >= 4)\n        {\n            $text = substr($Line['body'], 4);\n\n            $Block = array(\n                'element' => array(\n                    'name' => 'pre',\n                    'handler' => 'element',\n                    'text' => array(\n                        'name' => 'code',\n                        'text' => $text,\n                    ),\n                ),\n            );\n\n            return $Block;\n        }\n    }\n\n    protected function blockCodeContinue($Line, $Block)\n    {\n        if ($Line['indent'] >= 4)\n        {\n            if (isset($Block['interrupted']))\n            {\n                $Block['element']['text']['text'] .= \"\\n\";\n\n                unset($Block['interrupted']);\n            }\n\n            $Block['element']['text']['text'] .= \"\\n\";\n\n            $text = substr($Line['body'], 4);\n\n            $Block['element']['text']['text'] .= $text;\n\n            return $Block;\n        }\n    }\n\n    protected function blockCodeComplete($Block)\n    {\n        $text = $Block['element']['text']['text'];\n\n        $Block['element']['text']['text'] = $text;\n\n        return $Block;\n    }\n\n    #\n    # Comment\n\n    protected function blockComment($Line)\n    {\n        if ($this->markupEscaped or $this->safeMode)\n        {\n            return;\n        }\n\n        if (isset($Line['text'][3]) and $Line['text'][3] === '-' and $Line['text'][2] === '-' and $Line['text'][1] === '!')\n        {\n            $Block = array(\n                'markup' => $Line['body'],\n            );\n\n            if (preg_match('/-->$/', $Line['text']))\n            {\n                $Block['closed'] = true;\n            }\n\n            return $Block;\n        }\n    }\n\n    protected function blockCommentContinue($Line, array $Block)\n    {\n        if (isset($Block['closed']))\n        {\n            return;\n        }\n\n        $Block['markup'] .= \"\\n\" . $Line['body'];\n\n        if (preg_match('/-->$/', $Line['text']))\n        {\n            $Block['closed'] = true;\n        }\n\n        return $Block;\n    }\n\n    #\n    # Fenced Code\n\n    protected function blockFencedCode($Line)\n    {\n        if (preg_match('/^['.$Line['text'][0].']{3,}[ ]*([^`]+)?[ ]*$/', $Line['text'], $matches))\n        {\n            $Element = array(\n                'name' => 'code',\n                'text' => '',\n            );\n\n            if (isset($matches[1]))\n            {\n                /**\n                 * https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#classes\n                 * Every HTML element may have a class attribute specified.\n                 * The attribute, if specified, must have a value that is a set\n                 * of space-separated tokens representing the various classes\n                 * that the element belongs to.\n                 * [...]\n                 * The space characters, for the purposes of this specification,\n                 * are U+0020 SPACE, U+0009 CHARACTER TABULATION (tab),\n                 * U+000A LINE FEED (LF), U+000C FORM FEED (FF), and\n                 * U+000D CARRIAGE RETURN (CR).\n                 */\n                $language = substr($matches[1], 0, strcspn($matches[1], \" \\t\\n\\f\\r\"));\n\n                $class = 'language-'.$language;\n\n                $Element['attributes'] = array(\n                    'class' => $class,\n                );\n            }\n\n            $Block = array(\n                'char' => $Line['text'][0],\n                'element' => array(\n                    'name' => 'pre',\n                    'handler' => 'element',\n                    'text' => $Element,\n                ),\n            );\n\n            return $Block;\n        }\n    }\n\n    protected function blockFencedCodeContinue($Line, $Block)\n    {\n        if (isset($Block['complete']))\n        {\n            return;\n        }\n\n        if (isset($Block['interrupted']))\n        {\n            $Block['element']['text']['text'] .= \"\\n\";\n\n            unset($Block['interrupted']);\n        }\n\n        if (preg_match('/^'.$Block['char'].'{3,}[ ]*$/', $Line['text']))\n        {\n            $Block['element']['text']['text'] = substr($Block['element']['text']['text'], 1);\n\n            $Block['complete'] = true;\n\n            return $Block;\n        }\n\n        $Block['element']['text']['text'] .= \"\\n\".$Line['body'];\n\n        return $Block;\n    }\n\n    protected function blockFencedCodeComplete($Block)\n    {\n        $text = $Block['element']['text']['text'];\n\n        $Block['element']['text']['text'] = $text;\n\n        return $Block;\n    }\n\n    #\n    # Header\n\n    protected function blockHeader($Line)\n    {\n        if (isset($Line['text'][1]))\n        {\n            $level = 1;\n\n            while (isset($Line['text'][$level]) and $Line['text'][$level] === '#')\n            {\n                $level ++;\n            }\n\n            if ($level > 6)\n            {\n                return;\n            }\n\n            $text = trim($Line['text'], '# ');\n\n            $Block = array(\n                'element' => array(\n                    'name' => 'h' . min(6, $level),\n                    'text' => $text,\n                    'handler' => 'line',\n                ),\n            );\n\n            return $Block;\n        }\n    }\n\n    #\n    # List\n\n    protected function blockList($Line)\n    {\n        list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]+[.]');\n\n        if (preg_match('/^('.$pattern.'[ ]+)(.*)/', $Line['text'], $matches))\n        {\n            $Block = array(\n                'indent' => $Line['indent'],\n                'pattern' => $pattern,\n                'element' => array(\n                    'name' => $name,\n                    'handler' => 'elements',\n                ),\n            );\n\n            if($name === 'ol')\n            {\n                $listStart = stristr($matches[0], '.', true);\n\n                if($listStart !== '1')\n                {\n                    $Block['element']['attributes'] = array('start' => $listStart);\n                }\n            }\n\n            $Block['li'] = array(\n                'name' => 'li',\n                'handler' => 'li',\n                'text' => array(\n                    $matches[2],\n                ),\n            );\n\n            $Block['element']['text'] []= & $Block['li'];\n\n            return $Block;\n        }\n    }\n\n    protected function blockListContinue($Line, array $Block)\n    {\n        if ($Block['indent'] === $Line['indent'] and preg_match('/^'.$Block['pattern'].'(?:[ ]+(.*)|$)/', $Line['text'], $matches))\n        {\n            if (isset($Block['interrupted']))\n            {\n                $Block['li']['text'] []= '';\n\n                $Block['loose'] = true;\n\n                unset($Block['interrupted']);\n            }\n\n            unset($Block['li']);\n\n            $text = isset($matches[1]) ? $matches[1] : '';\n\n            $Block['li'] = array(\n                'name' => 'li',\n                'handler' => 'li',\n                'text' => array(\n                    $text,\n                ),\n            );\n\n            $Block['element']['text'] []= & $Block['li'];\n\n            return $Block;\n        }\n\n        if ($Line['text'][0] === '[' and $this->blockReference($Line))\n        {\n            return $Block;\n        }\n\n        if ( ! isset($Block['interrupted']))\n        {\n            $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']);\n\n            $Block['li']['text'] []= $text;\n\n            return $Block;\n        }\n\n        if ($Line['indent'] > 0)\n        {\n            $Block['li']['text'] []= '';\n\n            $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']);\n\n            $Block['li']['text'] []= $text;\n\n            unset($Block['interrupted']);\n\n            return $Block;\n        }\n    }\n\n    protected function blockListComplete(array $Block)\n    {\n        if (isset($Block['loose']))\n        {\n            foreach ($Block['element']['text'] as &$li)\n            {\n                if (end($li['text']) !== '')\n                {\n                    $li['text'] []= '';\n                }\n            }\n        }\n\n        return $Block;\n    }\n\n    #\n    # Quote\n\n    protected function blockQuote($Line)\n    {\n        if (preg_match('/^>[ ]?(.*)/', $Line['text'], $matches))\n        {\n            $Block = array(\n                'element' => array(\n                    'name' => 'blockquote',\n                    'handler' => 'lines',\n                    'text' => (array) $matches[1],\n                ),\n            );\n\n            return $Block;\n        }\n    }\n\n    protected function blockQuoteContinue($Line, array $Block)\n    {\n        if ($Line['text'][0] === '>' and preg_match('/^>[ ]?(.*)/', $Line['text'], $matches))\n        {\n            if (isset($Block['interrupted']))\n            {\n                $Block['element']['text'] []= '';\n\n                unset($Block['interrupted']);\n            }\n\n            $Block['element']['text'] []= $matches[1];\n\n            return $Block;\n        }\n\n        if ( ! isset($Block['interrupted']))\n        {\n            $Block['element']['text'] []= $Line['text'];\n\n            return $Block;\n        }\n    }\n\n    #\n    # Rule\n\n    protected function blockRule($Line)\n    {\n        if (preg_match('/^(['.$Line['text'][0].'])([ ]*\\1){2,}[ ]*$/', $Line['text']))\n        {\n            $Block = array(\n                'element' => array(\n                    'name' => 'hr'\n                ),\n            );\n\n            return $Block;\n        }\n    }\n\n    #\n    # Setext\n\n    protected function blockSetextHeader($Line, array $Block)\n    {\n        if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted']))\n        {\n            return;\n        }\n\n        if (chop($Line['text'], $Line['text'][0]) === '')\n        {\n            $Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2';\n\n            return $Block;\n        }\n    }\n\n    #\n    # Markup\n\n    protected function blockMarkup($Line)\n    {\n        if ($this->markupEscaped or $this->safeMode)\n        {\n            return;\n        }\n\n        if (preg_match('/^<(\\w[\\w-]*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\\/)?>/', $Line['text'], $matches))\n        {\n            $element = strtolower($matches[1]);\n\n            if (in_array($element, $this->textLevelElements))\n            {\n                return;\n            }\n\n            $Block = array(\n                'name' => $matches[1],\n                'depth' => 0,\n                'markup' => $Line['text'],\n            );\n\n            $length = strlen($matches[0]);\n\n            $remainder = substr($Line['text'], $length);\n\n            if (trim($remainder) === '')\n            {\n                if (isset($matches[2]) or in_array($matches[1], $this->voidElements))\n                {\n                    $Block['closed'] = true;\n\n                    $Block['void'] = true;\n                }\n            }\n            else\n            {\n                if (isset($matches[2]) or in_array($matches[1], $this->voidElements))\n                {\n                    return;\n                }\n\n                if (preg_match('/<\\/'.$matches[1].'>[ ]*$/i', $remainder))\n                {\n                    $Block['closed'] = true;\n                }\n            }\n\n            return $Block;\n        }\n    }\n\n    protected function blockMarkupContinue($Line, array $Block)\n    {\n        if (isset($Block['closed']))\n        {\n            return;\n        }\n\n        if (preg_match('/^<'.$Block['name'].'(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*>/i', $Line['text'])) # open\n        {\n            $Block['depth'] ++;\n        }\n\n        if (preg_match('/(.*?)<\\/'.$Block['name'].'>[ ]*$/i', $Line['text'], $matches)) # close\n        {\n            if ($Block['depth'] > 0)\n            {\n                $Block['depth'] --;\n            }\n            else\n            {\n                $Block['closed'] = true;\n            }\n        }\n\n        if (isset($Block['interrupted']))\n        {\n            $Block['markup'] .= \"\\n\";\n\n            unset($Block['interrupted']);\n        }\n\n        $Block['markup'] .= \"\\n\".$Line['body'];\n\n        return $Block;\n    }\n\n    #\n    # Reference\n\n    protected function blockReference($Line)\n    {\n        if (preg_match('/^\\[(.+?)\\]:[ ]*<?(\\S+?)>?(?:[ ]+[\"\\'(](.+)[\"\\')])?[ ]*$/', $Line['text'], $matches))\n        {\n            $id = strtolower($matches[1]);\n\n            $Data = array(\n                'url' => $matches[2],\n                'title' => null,\n            );\n\n            if (isset($matches[3]))\n            {\n                $Data['title'] = $matches[3];\n            }\n\n            $this->DefinitionData['Reference'][$id] = $Data;\n\n            $Block = array(\n                'hidden' => true,\n            );\n\n            return $Block;\n        }\n    }\n\n    #\n    # Table\n\n    protected function blockTable($Line, array $Block)\n    {\n        if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted']))\n        {\n            return;\n        }\n\n        if (strpos($Block['element']['text'], '|') !== false and chop($Line['text'], ' -:|') === '')\n        {\n            $alignments = array();\n\n            $divider = $Line['text'];\n\n            $divider = trim($divider);\n            $divider = trim($divider, '|');\n\n            $dividerCells = explode('|', $divider);\n\n            foreach ($dividerCells as $dividerCell)\n            {\n                $dividerCell = trim($dividerCell);\n\n                if ($dividerCell === '')\n                {\n                    continue;\n                }\n\n                $alignment = null;\n\n                if ($dividerCell[0] === ':')\n                {\n                    $alignment = 'left';\n                }\n\n                if (substr($dividerCell, - 1) === ':')\n                {\n                    $alignment = $alignment === 'left' ? 'center' : 'right';\n                }\n\n                $alignments []= $alignment;\n            }\n\n            # ~\n\n            $HeaderElements = array();\n\n            $header = $Block['element']['text'];\n\n            $header = trim($header);\n            $header = trim($header, '|');\n\n            $headerCells = explode('|', $header);\n\n            foreach ($headerCells as $index => $headerCell)\n            {\n                $headerCell = trim($headerCell);\n\n                $HeaderElement = array(\n                    'name' => 'th',\n                    'text' => $headerCell,\n                    'handler' => 'line',\n                );\n\n                if (isset($alignments[$index]))\n                {\n                    $alignment = $alignments[$index];\n\n                    $HeaderElement['attributes'] = array(\n                        'style' => 'text-align: '.$alignment.';',\n                    );\n                }\n\n                $HeaderElements []= $HeaderElement;\n            }\n\n            # ~\n\n            $Block = array(\n                'alignments' => $alignments,\n                'identified' => true,\n                'element' => array(\n                    'name' => 'table',\n                    'handler' => 'elements',\n                ),\n            );\n\n            $Block['element']['text'] []= array(\n                'name' => 'thead',\n                'handler' => 'elements',\n            );\n\n            $Block['element']['text'] []= array(\n                'name' => 'tbody',\n                'handler' => 'elements',\n                'text' => array(),\n            );\n\n            $Block['element']['text'][0]['text'] []= array(\n                'name' => 'tr',\n                'handler' => 'elements',\n                'text' => $HeaderElements,\n            );\n\n            return $Block;\n        }\n    }\n\n    protected function blockTableContinue($Line, array $Block)\n    {\n        if (isset($Block['interrupted']))\n        {\n            return;\n        }\n\n        if ($Line['text'][0] === '|' or strpos($Line['text'], '|'))\n        {\n            $Elements = array();\n\n            $row = $Line['text'];\n\n            $row = trim($row);\n            $row = trim($row, '|');\n\n            preg_match_all('/(?:(\\\\\\\\[|])|[^|`]|`[^`]+`|`)+/', $row, $matches);\n\n            foreach ($matches[0] as $index => $cell)\n            {\n                $cell = trim($cell);\n\n                $Element = array(\n                    'name' => 'td',\n                    'handler' => 'line',\n                    'text' => $cell,\n                );\n\n                if (isset($Block['alignments'][$index]))\n                {\n                    $Element['attributes'] = array(\n                        'style' => 'text-align: '.$Block['alignments'][$index].';',\n                    );\n                }\n\n                $Elements []= $Element;\n            }\n\n            $Element = array(\n                'name' => 'tr',\n                'handler' => 'elements',\n                'text' => $Elements,\n            );\n\n            $Block['element']['text'][1]['text'] []= $Element;\n\n            return $Block;\n        }\n    }\n\n    #\n    # ~\n    #\n\n    protected function paragraph($Line)\n    {\n        $Block = array(\n            'element' => array(\n                'name' => 'p',\n                'text' => $Line['text'],\n                'handler' => 'line',\n            ),\n        );\n\n        return $Block;\n    }\n\n    #\n    # Inline Elements\n    #\n\n    protected $InlineTypes = array(\n        '\"' => array('SpecialCharacter'),\n        '!' => array('Image'),\n        '&' => array('SpecialCharacter'),\n        '*' => array('Emphasis'),\n        ':' => array('Url'),\n        '<' => array('UrlTag', 'EmailTag', 'Markup', 'SpecialCharacter'),\n        '>' => array('SpecialCharacter'),\n        '[' => array('Link'),\n        '_' => array('Emphasis'),\n        '`' => array('Code'),\n        '~' => array('Strikethrough'),\n        '\\\\' => array('EscapeSequence'),\n    );\n\n    # ~\n\n    protected $inlineMarkerList = '!\"*_&[:<>`~\\\\';\n\n    #\n    # ~\n    #\n\n    public function line($text, $nonNestables=array())\n    {\n        $markup = '';\n\n        # $excerpt is based on the first occurrence of a marker\n\n        while ($excerpt = strpbrk($text, $this->inlineMarkerList))\n        {\n            $marker = $excerpt[0];\n\n            $markerPosition = strpos($text, $marker);\n\n            $Excerpt = array('text' => $excerpt, 'context' => $text);\n\n            foreach ($this->InlineTypes[$marker] as $inlineType)\n            {\n                # check to see if the current inline type is nestable in the current context\n\n                if ( ! empty($nonNestables) and in_array($inlineType, $nonNestables))\n                {\n                    continue;\n                }\n\n                $Inline = $this->{'inline'.$inlineType}($Excerpt);\n\n                if ( ! isset($Inline))\n                {\n                    continue;\n                }\n\n                # makes sure that the inline belongs to \"our\" marker\n\n                if (isset($Inline['position']) and $Inline['position'] > $markerPosition)\n                {\n                    continue;\n                }\n\n                # sets a default inline position\n\n                if ( ! isset($Inline['position']))\n                {\n                    $Inline['position'] = $markerPosition;\n                }\n\n                # cause the new element to 'inherit' our non nestables\n\n                foreach ($nonNestables as $non_nestable)\n                {\n                    $Inline['element']['nonNestables'][] = $non_nestable;\n                }\n\n                # the text that comes before the inline\n                $unmarkedText = substr($text, 0, $Inline['position']);\n\n                # compile the unmarked text\n                $markup .= $this->unmarkedText($unmarkedText);\n\n                # compile the inline\n                $markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']);\n\n                # remove the examined text\n                $text = substr($text, $Inline['position'] + $Inline['extent']);\n\n                continue 2;\n            }\n\n            # the marker does not belong to an inline\n\n            $unmarkedText = substr($text, 0, $markerPosition + 1);\n\n            $markup .= $this->unmarkedText($unmarkedText);\n\n            $text = substr($text, $markerPosition + 1);\n        }\n\n        $markup .= $this->unmarkedText($text);\n\n        return $markup;\n    }\n\n    #\n    # ~\n    #\n\n    protected function inlineCode($Excerpt)\n    {\n        $marker = $Excerpt['text'][0];\n\n        if (preg_match('/^('.$marker.'+)[ ]*(.+?)[ ]*(?<!'.$marker.')\\1(?!'.$marker.')/s', $Excerpt['text'], $matches))\n        {\n            $text = $matches[2];\n            $text = preg_replace(\"/[ ]*\\n/\", ' ', $text);\n\n            return array(\n                'extent' => strlen($matches[0]),\n                'element' => array(\n                    'name' => 'code',\n                    'text' => $text,\n                ),\n            );\n        }\n    }\n\n    protected function inlineEmailTag($Excerpt)\n    {\n        if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<((mailto:)?\\S+?@\\S+?)>/i', $Excerpt['text'], $matches))\n        {\n            $url = $matches[1];\n\n            if ( ! isset($matches[2]))\n            {\n                $url = 'mailto:' . $url;\n            }\n\n            return array(\n                'extent' => strlen($matches[0]),\n                'element' => array(\n                    'name' => 'a',\n                    'text' => $matches[1],\n                    'attributes' => array(\n                        'href' => $url,\n                    ),\n                ),\n            );\n        }\n    }\n\n    protected function inlineEmphasis($Excerpt)\n    {\n        if ( ! isset($Excerpt['text'][1]))\n        {\n            return;\n        }\n\n        $marker = $Excerpt['text'][0];\n\n        if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches))\n        {\n            $emphasis = 'strong';\n        }\n        elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches))\n        {\n            $emphasis = 'em';\n        }\n        else\n        {\n            return;\n        }\n\n        return array(\n            'extent' => strlen($matches[0]),\n            'element' => array(\n                'name' => $emphasis,\n                'handler' => 'line',\n                'text' => $matches[1],\n            ),\n        );\n    }\n\n    protected function inlineEscapeSequence($Excerpt)\n    {\n        if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters))\n        {\n            return array(\n                'markup' => $Excerpt['text'][1],\n                'extent' => 2,\n            );\n        }\n    }\n\n    protected function inlineImage($Excerpt)\n    {\n        if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[')\n        {\n            return;\n        }\n\n        $Excerpt['text']= substr($Excerpt['text'], 1);\n\n        $Link = $this->inlineLink($Excerpt);\n\n        if ($Link === null)\n        {\n            return;\n        }\n\n        $Inline = array(\n            'extent' => $Link['extent'] + 1,\n            'element' => array(\n                'name' => 'img',\n                'attributes' => array(\n                    'src' => $Link['element']['attributes']['href'],\n                    'alt' => $Link['element']['text'],\n                ),\n            ),\n        );\n\n        $Inline['element']['attributes'] += $Link['element']['attributes'];\n\n        unset($Inline['element']['attributes']['href']);\n\n        return $Inline;\n    }\n\n    protected function inlineLink($Excerpt)\n    {\n        $Element = array(\n            'name' => 'a',\n            'handler' => 'line',\n            'nonNestables' => array('Url', 'Link'),\n            'text' => null,\n            'attributes' => array(\n                'href' => null,\n                'title' => null,\n            ),\n        );\n\n        $extent = 0;\n\n        $remainder = $Excerpt['text'];\n\n        if (preg_match('/\\[((?:[^][]++|(?R))*+)\\]/', $remainder, $matches))\n        {\n            $Element['text'] = $matches[1];\n\n            $extent += strlen($matches[0]);\n\n            $remainder = substr($remainder, $extent);\n        }\n        else\n        {\n            return;\n        }\n\n        if (preg_match('/^[(]\\s*+((?:[^ ()]++|[(][^ )]+[)])++)(?:[ ]+(\"[^\"]*\"|\\'[^\\']*\\'))?\\s*[)]/', $remainder, $matches))\n        {\n            $Element['attributes']['href'] = $matches[1];\n\n            if (isset($matches[2]))\n            {\n                $Element['attributes']['title'] = substr($matches[2], 1, - 1);\n            }\n\n            $extent += strlen($matches[0]);\n        }\n        else\n        {\n            if (preg_match('/^\\s*\\[(.*?)\\]/', $remainder, $matches))\n            {\n                $definition = strlen($matches[1]) ? $matches[1] : $Element['text'];\n                $definition = strtolower($definition);\n\n                $extent += strlen($matches[0]);\n            }\n            else\n            {\n                $definition = strtolower($Element['text']);\n            }\n\n            if ( ! isset($this->DefinitionData['Reference'][$definition]))\n            {\n                return;\n            }\n\n            $Definition = $this->DefinitionData['Reference'][$definition];\n\n            $Element['attributes']['href'] = $Definition['url'];\n            $Element['attributes']['title'] = $Definition['title'];\n        }\n\n        return array(\n            'extent' => $extent,\n            'element' => $Element,\n        );\n    }\n\n    protected function inlineMarkup($Excerpt)\n    {\n        if ($this->markupEscaped or $this->safeMode or strpos($Excerpt['text'], '>') === false)\n        {\n            return;\n        }\n\n        if ($Excerpt['text'][1] === '/' and preg_match('/^<\\/\\w[\\w-]*[ ]*>/s', $Excerpt['text'], $matches))\n        {\n            return array(\n                'markup' => $matches[0],\n                'extent' => strlen($matches[0]),\n            );\n        }\n\n        if ($Excerpt['text'][1] === '!' and preg_match('/^<!---?[^>-](?:-?[^-])*-->/s', $Excerpt['text'], $matches))\n        {\n            return array(\n                'markup' => $matches[0],\n                'extent' => strlen($matches[0]),\n            );\n        }\n\n        if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\\w[\\w-]*(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*\\/?>/s', $Excerpt['text'], $matches))\n        {\n            return array(\n                'markup' => $matches[0],\n                'extent' => strlen($matches[0]),\n            );\n        }\n    }\n\n    protected function inlineSpecialCharacter($Excerpt)\n    {\n        if ($Excerpt['text'][0] === '&' and ! preg_match('/^&#?\\w+;/', $Excerpt['text']))\n        {\n            return array(\n                'markup' => '&amp;',\n                'extent' => 1,\n            );\n        }\n\n        $SpecialCharacter = array('>' => 'gt', '<' => 'lt', '\"' => 'quot');\n\n        if (isset($SpecialCharacter[$Excerpt['text'][0]]))\n        {\n            return array(\n                'markup' => '&'.$SpecialCharacter[$Excerpt['text'][0]].';',\n                'extent' => 1,\n            );\n        }\n    }\n\n    protected function inlineStrikethrough($Excerpt)\n    {\n        if ( ! isset($Excerpt['text'][1]))\n        {\n            return;\n        }\n\n        if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\\S)(.+?)(?<=\\S)~~/', $Excerpt['text'], $matches))\n        {\n            return array(\n                'extent' => strlen($matches[0]),\n                'element' => array(\n                    'name' => 'del',\n                    'text' => $matches[1],\n                    'handler' => 'line',\n                ),\n            );\n        }\n    }\n\n    protected function inlineUrl($Excerpt)\n    {\n        if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/')\n        {\n            return;\n        }\n\n        if (preg_match('/\\bhttps?:[\\/]{2}[^\\s<]+\\b\\/*/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE))\n        {\n            $url = $matches[0][0];\n\n            $Inline = array(\n                'extent' => strlen($matches[0][0]),\n                'position' => $matches[0][1],\n                'element' => array(\n                    'name' => 'a',\n                    'text' => $url,\n                    'attributes' => array(\n                        'href' => $url,\n                    ),\n                ),\n            );\n\n            return $Inline;\n        }\n    }\n\n    protected function inlineUrlTag($Excerpt)\n    {\n        if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\\w+:\\/{2}[^ >]+)>/i', $Excerpt['text'], $matches))\n        {\n            $url = $matches[1];\n\n            return array(\n                'extent' => strlen($matches[0]),\n                'element' => array(\n                    'name' => 'a',\n                    'text' => $url,\n                    'attributes' => array(\n                        'href' => $url,\n                    ),\n                ),\n            );\n        }\n    }\n\n    # ~\n\n    protected function unmarkedText($text)\n    {\n        if ($this->breaksEnabled)\n        {\n            $text = preg_replace('/[ ]*\\n/', \"<br />\\n\", $text);\n        }\n        else\n        {\n            $text = preg_replace('/(?:[ ][ ]+|[ ]*\\\\\\\\)\\n/', \"<br />\\n\", $text);\n            $text = str_replace(\" \\n\", \"\\n\", $text);\n        }\n\n        return $text;\n    }\n\n    #\n    # Handlers\n    #\n\n    protected function element(array $Element)\n    {\n        if ($this->safeMode)\n        {\n            $Element = $this->sanitiseElement($Element);\n        }\n\n        $markup = '<'.$Element['name'];\n\n        if (isset($Element['attributes']))\n        {\n            foreach ($Element['attributes'] as $name => $value)\n            {\n                if ($value === null)\n                {\n                    continue;\n                }\n\n                $markup .= ' '.$name.'=\"'.self::escape($value).'\"';\n            }\n        }\n\n        $permitRawHtml = false;\n\n        if (isset($Element['text']))\n        {\n            $text = $Element['text'];\n        }\n        // very strongly consider an alternative if you're writing an\n        // extension\n        elseif (isset($Element['rawHtml']))\n        {\n            $text = $Element['rawHtml'];\n            $allowRawHtmlInSafeMode = isset($Element['allowRawHtmlInSafeMode']) && $Element['allowRawHtmlInSafeMode'];\n            $permitRawHtml = !$this->safeMode || $allowRawHtmlInSafeMode;\n        }\n\n        if (isset($text))\n        {\n            $markup .= '>';\n\n            if (!isset($Element['nonNestables']))\n            {\n                $Element['nonNestables'] = array();\n            }\n\n            if (isset($Element['handler']))\n            {\n                $markup .= $this->{$Element['handler']}($text, $Element['nonNestables']);\n            }\n            elseif (!$permitRawHtml)\n            {\n                $markup .= self::escape($text, true);\n            }\n            else\n            {\n                $markup .= $text;\n            }\n\n            $markup .= '</'.$Element['name'].'>';\n        }\n        else\n        {\n            $markup .= ' />';\n        }\n\n        return $markup;\n    }\n\n    protected function elements(array $Elements)\n    {\n        $markup = '';\n\n        foreach ($Elements as $Element)\n        {\n            $markup .= \"\\n\" . $this->element($Element);\n        }\n\n        $markup .= \"\\n\";\n\n        return $markup;\n    }\n\n    # ~\n\n    protected function li($lines)\n    {\n        $markup = $this->lines($lines);\n\n        $trimmedMarkup = trim($markup);\n\n        if ( ! in_array('', $lines) and substr($trimmedMarkup, 0, 3) === '<p>')\n        {\n            $markup = $trimmedMarkup;\n            $markup = substr($markup, 3);\n\n            $position = strpos($markup, \"</p>\");\n\n            $markup = substr_replace($markup, '', $position, 4);\n        }\n\n        return $markup;\n    }\n\n    #\n    # Deprecated Methods\n    #\n\n    function parse($text)\n    {\n        $markup = $this->text($text);\n\n        return $markup;\n    }\n\n    protected function sanitiseElement(array $Element)\n    {\n        static $goodAttribute = '/^[a-zA-Z0-9][a-zA-Z0-9-_]*+$/';\n        static $safeUrlNameToAtt  = array(\n            'a'   => 'href',\n            'img' => 'src',\n        );\n\n        if (isset($safeUrlNameToAtt[$Element['name']]))\n        {\n            $Element = $this->filterUnsafeUrlInAttribute($Element, $safeUrlNameToAtt[$Element['name']]);\n        }\n\n        if ( ! empty($Element['attributes']))\n        {\n            foreach ($Element['attributes'] as $att => $val)\n            {\n                # filter out badly parsed attribute\n                if ( ! preg_match($goodAttribute, $att))\n                {\n                    unset($Element['attributes'][$att]);\n                }\n                # dump onevent attribute\n                elseif (self::striAtStart($att, 'on'))\n                {\n                    unset($Element['attributes'][$att]);\n                }\n            }\n        }\n\n        return $Element;\n    }\n\n    protected function filterUnsafeUrlInAttribute(array $Element, $attribute)\n    {\n        foreach ($this->safeLinksWhitelist as $scheme)\n        {\n            if (self::striAtStart($Element['attributes'][$attribute], $scheme))\n            {\n                return $Element;\n            }\n        }\n\n        $Element['attributes'][$attribute] = str_replace(':', '%3A', $Element['attributes'][$attribute]);\n\n        return $Element;\n    }\n\n    #\n    # Static Methods\n    #\n\n    protected static function escape($text, $allowQuotes = false)\n    {\n        return htmlspecialchars($text, $allowQuotes ? ENT_NOQUOTES : ENT_QUOTES, 'UTF-8');\n    }\n\n    protected static function striAtStart($string, $needle)\n    {\n        $len = strlen($needle);\n\n        if ($len > strlen($string))\n        {\n            return false;\n        }\n        else\n        {\n            return strtolower(substr($string, 0, $len)) === strtolower($needle);\n        }\n    }\n\n    static function instance($name = 'default')\n    {\n        if (isset(self::$instances[$name]))\n        {\n            return self::$instances[$name];\n        }\n\n        $instance = new static();\n\n        self::$instances[$name] = $instance;\n\n        return $instance;\n    }\n\n    private static $instances = array();\n\n    #\n    # Fields\n    #\n\n    protected $DefinitionData;\n\n    #\n    # Read-Only\n\n    protected $specialCharacters = array(\n        '\\\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|',\n    );\n\n    protected $StrongRegex = array(\n        '*' => '/^[*]{2}((?:\\\\\\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s',\n        '_' => '/^__((?:\\\\\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us',\n    );\n\n    protected $EmRegex = array(\n        '*' => '/^[*]((?:\\\\\\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s',\n        '_' => '/^_((?:\\\\\\\\_|[^_]|__[^_]*__)+?)_(?!_)\\b/us',\n    );\n\n    protected $regexHtmlAttribute = '[a-zA-Z_:][\\w:.-]*(?:\\s*=\\s*(?:[^\"\\'=<>`\\s]+|\"[^\"]*\"|\\'[^\\']*\\'))?';\n\n    protected $voidElements = array(\n        'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source',\n    );\n\n    protected $textLevelElements = array(\n        'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont',\n        'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing',\n        'i', 'rp', 'del', 'code',          'strike', 'marquee',\n        'q', 'rt', 'ins', 'font',          'strong',\n        's', 'tt', 'kbd', 'mark',\n        'u', 'xm', 'sub', 'nobr',\n                   'sup', 'ruby',\n                   'var', 'span',\n                   'wbr', 'time',\n    );\n}\n"
  },
  {
    "path": "include/vendor/erusev/parsedown/README.md",
    "content": "> I also make [Caret](https://caret.io?ref=parsedown) - a Markdown editor for Mac and PC.\n\n## Parsedown\n\n[![Build Status](https://img.shields.io/travis/erusev/parsedown/master.svg?style=flat-square)](https://travis-ci.org/erusev/parsedown)\n<!--[![Total Downloads](http://img.shields.io/packagist/dt/erusev/parsedown.svg?style=flat-square)](https://packagist.org/packages/erusev/parsedown)-->\n\nBetter Markdown Parser in PHP\n\n[Demo](http://parsedown.org/demo) |\n[Benchmarks](http://parsedown.org/speed) |\n[Tests](http://parsedown.org/tests/) |\n[Documentation](https://github.com/erusev/parsedown/wiki/)\n\n### Features\n\n* One File\n* No Dependencies\n* Super Fast\n* Extensible\n* [GitHub flavored](https://help.github.com/articles/github-flavored-markdown)\n* Tested in 5.3 to 7.1 and in HHVM\n* [Markdown Extra extension](https://github.com/erusev/parsedown-extra)\n\n### Installation\n\nInclude `Parsedown.php` or install [the composer package](https://packagist.org/packages/erusev/parsedown).\n\n### Example\n\n``` php\n$Parsedown = new Parsedown();\n\necho $Parsedown->text('Hello _Parsedown_!'); # prints: <p>Hello <em>Parsedown</em>!</p>\n```\n\nMore examples in [the wiki](https://github.com/erusev/parsedown/wiki/) and in [this video tutorial](http://youtu.be/wYZBY8DEikI).\n\n### Security\n\nParsedown is capable of escaping user-input within the HTML that it generates. Additionally Parsedown will apply sanitisation to additional scripting vectors (such as scripting link destinations) that are introduced by the markdown syntax itself.\n\nTo tell Parsedown that it is processing untrusted user-input, use the following:\n```php\n$parsedown = new Parsedown;\n$parsedown->setSafeMode(true);\n```\n\nIf instead, you wish to allow HTML within untrusted user-input, but still want output to be free from XSS it is recommended that you make use of a HTML sanitiser that allows HTML tags to be whitelisted, like [HTML Purifier](http://htmlpurifier.org/).\n\nIn both cases you should strongly consider employing defence-in-depth measures, like [deploying a Content-Security-Policy](https://scotthelme.co.uk/content-security-policy-an-introduction/) (a browser security feature) so that your page is likely to be safe even if an attacker finds a vulnerability in one of the first lines of defence above.\n\n#### Security of Parsedown Extensions\n\nSafe mode does not necessarily yield safe results when using extensions to Parsedown. Extensions should be evaluated on their own to determine their specific safety against XSS.\n\n### Escaping HTML\n> ⚠️  **WARNING:** This method isn't safe from XSS!\n\nIf you wish to escape HTML **in trusted input**, you can use the following:\n```php\n$parsedown = new Parsedown;\n$parsedown->setMarkupEscaped(true);\n```\n\nBeware that this still allows users to insert unsafe scripting vectors, such as links like `[xss](javascript:alert%281%29)`.\n\n### Questions\n\n**How does Parsedown work?**\n\nIt tries to read Markdown like a human. First, it looks at the lines. It’s interested in how the lines start. This helps it recognise blocks. It knows, for example, that if a line starts with a `-` then perhaps it belongs to a list. Once it recognises the blocks, it continues to the content. As it reads, it watches out for special characters. This helps it recognise inline elements (or inlines).\n\nWe call this approach \"line based\". We believe that Parsedown is the first Markdown parser to use it. Since the release of Parsedown, other developers have used the same approach to develop other Markdown parsers in PHP and in other languages.\n\n**Is it compliant with CommonMark?**\n\nIt passes most of the CommonMark tests. Most of the tests that don't pass deal with cases that are quite uncommon. Still, as CommonMark matures, compliance should improve.\n\n**Who uses it?**\n\n[Laravel Framework](https://laravel.com/), [Bolt CMS](http://bolt.cm/), [Grav CMS](http://getgrav.org/), [Herbie CMS](http://www.getherbie.org/), [Kirby CMS](http://getkirby.com/), [October CMS](http://octobercms.com/), [Pico CMS](http://picocms.org), [Statamic CMS](http://www.statamic.com/), [phpDocumentor](http://www.phpdoc.org/), [RaspberryPi.org](http://www.raspberrypi.org/), [Symfony demo](https://github.com/symfony/symfony-demo) and [more](https://packagist.org/packages/erusev/parsedown/dependents).\n\n**How can I help?**\n\nUse it, star it, share it and if you feel generous, [donate](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=528P3NZQMP8N2).\n"
  },
  {
    "path": "include/vendor/erusev/parsedown/composer.json",
    "content": "{\n    \"name\": \"erusev/parsedown\",\n    \"description\": \"Parser for Markdown.\",\n    \"keywords\": [\"markdown\", \"parser\"],\n    \"homepage\": \"http://parsedown.org\",\n    \"type\": \"library\",\n    \"license\": \"MIT\",\n    \"authors\": [\n        {\n            \"name\": \"Emanuil Rusev\",\n            \"email\": \"hello@erusev.com\",\n            \"homepage\": \"http://erusev.com\"\n        }\n    ],\n    \"require\": {\n        \"php\": \">=5.3.0\",\n        \"ext-mbstring\": \"*\"\n    },\n    \"require-dev\": {\n        \"phpunit/phpunit\": \"^4.8.35\"\n    },\n    \"autoload\": {\n        \"psr-0\": {\"Parsedown\": \"\"}\n    },\n    \"autoload-dev\": {\n        \"psr-0\": {\n            \"TestParsedown\": \"test/\",\n            \"ParsedownTest\": \"test/\",\n            \"CommonMarkTest\": \"test/\",\n            \"CommonMarkTestWeak\": \"test/\"\n        }\n    }\n}\n"
  },
  {
    "path": "include/vendor/mapscript.php",
    "content": "<?php\n\n/* ----------------------------------------------------------------------------\n * This file was automatically generated by SWIG (http://www.swig.org).\n * Version 4.0.2\n *\n * This file is not intended to be easily readable and contains a number of\n * coding conventions designed to improve portability and efficiency. Do not make\n * changes to this file unless you know what you are doing--modify the SWIG\n * interface file instead.\n * ----------------------------------------------------------------------------- */\n\n// Try to load our extension if it's not already loaded.\nif (!extension_loaded('mapscript')) {\n  if (strtolower(substr(PHP_OS, 0, 3)) === 'win') {\n    if (!dl('php_mapscript.dll')) return;\n  } else {\n    // PHP_SHLIB_SUFFIX gives 'dylib' on MacOS X but modules are 'so'.\n    if (PHP_SHLIB_SUFFIX === 'dylib') {\n      if (!dl('mapscript.so')) return;\n    } else {\n      if (!dl('mapscript.'.PHP_SHLIB_SUFFIX)) return;\n    }\n  }\n}\n\n// Check if mapscript is already declared and return if so\nif (class_exists('mapscript', false)) return;\n\n\nabstract class mapscript {\n\tconst MAX_ERROR_LEN = MAX_ERROR_LEN;\n\n\tconst MS_TRUE = MS_TRUE;\n\n\tconst MS_FALSE = MS_FALSE;\n\n\tconst MS_UNKNOWN = MS_UNKNOWN;\n\n\tconst MS_ON = MS_ON;\n\n\tconst MS_OFF = MS_OFF;\n\n\tconst MS_DEFAULT = MS_DEFAULT;\n\n\tconst MS_EMBED = MS_EMBED;\n\n\tconst MS_DELETE = MS_DELETE;\n\n\tconst MS_YES = MS_YES;\n\n\tconst MS_NO = MS_NO;\n\n\tconst MS_LAYER_ALLOCSIZE = MS_LAYER_ALLOCSIZE;\n\n\tconst MS_CLASS_ALLOCSIZE = MS_CLASS_ALLOCSIZE;\n\n\tconst MS_STYLE_ALLOCSIZE = MS_STYLE_ALLOCSIZE;\n\n\tconst MS_LABEL_ALLOCSIZE = MS_LABEL_ALLOCSIZE;\n\n\tconst MS_MAX_LABEL_PRIORITY = MS_MAX_LABEL_PRIORITY;\n\n\tconst MS_MAX_LABEL_FONTS = MS_MAX_LABEL_FONTS;\n\n\tconst MS_DEFAULT_LABEL_PRIORITY = MS_DEFAULT_LABEL_PRIORITY;\n\n\tconst MS_LABEL_FORCE_GROUP = MS_LABEL_FORCE_GROUP;\n\n\tconst MS_RENDER_WITH_SWF = MS_RENDER_WITH_SWF;\n\n\tconst MS_RENDER_WITH_RAWDATA = MS_RENDER_WITH_RAWDATA;\n\n\tconst MS_RENDER_WITH_IMAGEMAP = MS_RENDER_WITH_IMAGEMAP;\n\n\tconst MS_RENDER_WITH_TEMPLATE = MS_RENDER_WITH_TEMPLATE;\n\n\tconst MS_RENDER_WITH_OGR = MS_RENDER_WITH_OGR;\n\n\tconst MS_RENDER_WITH_PLUGIN = MS_RENDER_WITH_PLUGIN;\n\n\tconst MS_RENDER_WITH_CAIRO_RASTER = MS_RENDER_WITH_CAIRO_RASTER;\n\n\tconst MS_RENDER_WITH_CAIRO_PDF = MS_RENDER_WITH_CAIRO_PDF;\n\n\tconst MS_RENDER_WITH_CAIRO_SVG = MS_RENDER_WITH_CAIRO_SVG;\n\n\tconst MS_RENDER_WITH_OGL = MS_RENDER_WITH_OGL;\n\n\tconst MS_RENDER_WITH_AGG = MS_RENDER_WITH_AGG;\n\n\tconst MS_RENDER_WITH_KML = MS_RENDER_WITH_KML;\n\n\tconst MS_RENDER_WITH_UTFGRID = MS_RENDER_WITH_UTFGRID;\n\n\tconst MS_RENDER_WITH_MVT = MS_RENDER_WITH_MVT;\n\n\tconst MS_NUM_CHECK_NONE = 0;\n\n\tconst MS_NUM_CHECK_RANGE = MS_NUM_CHECK_RANGE;\n\n\tconst MS_NUM_CHECK_GT = MS_NUM_CHECK_GT;\n\n\tconst MS_NUM_CHECK_GTE = MS_NUM_CHECK_GTE;\n\n\tconst MS_FILE_MAP = 0;\n\n\tconst MS_FILE_SYMBOL = MS_FILE_SYMBOL;\n\n\tconst MS_INCHES = 0;\n\n\tconst MS_FEET = MS_FEET;\n\n\tconst MS_MILES = MS_MILES;\n\n\tconst MS_METERS = MS_METERS;\n\n\tconst MS_KILOMETERS = MS_KILOMETERS;\n\n\tconst MS_DD = MS_DD;\n\n\tconst MS_PIXELS = MS_PIXELS;\n\n\tconst MS_PERCENTAGES = MS_PERCENTAGES;\n\n\tconst MS_NAUTICALMILES = MS_NAUTICALMILES;\n\n\tconst MS_INHERIT = -1;\n\n\tconst MS_SHAPE_POINT = 0;\n\n\tconst MS_SHAPE_LINE = MS_SHAPE_LINE;\n\n\tconst MS_SHAPE_POLYGON = MS_SHAPE_POLYGON;\n\n\tconst MS_SHAPE_NULL = MS_SHAPE_NULL;\n\n\tconst MS_LAYER_POINT = 0;\n\n\tconst MS_LAYER_LINE = MS_LAYER_LINE;\n\n\tconst MS_LAYER_POLYGON = MS_LAYER_POLYGON;\n\n\tconst MS_LAYER_RASTER = MS_LAYER_RASTER;\n\n\tconst MS_LAYER_ANNOTATION = MS_LAYER_ANNOTATION;\n\n\tconst MS_LAYER_QUERY = MS_LAYER_QUERY;\n\n\tconst MS_LAYER_CIRCLE = MS_LAYER_CIRCLE;\n\n\tconst MS_LAYER_TILEINDEX = MS_LAYER_TILEINDEX;\n\n\tconst MS_LAYER_CHART = MS_LAYER_CHART;\n\n\tconst MS_TRUETYPE = 0;\n\n\tconst MS_BITMAP = MS_BITMAP;\n\n\tconst MS_FIRST_MATCHING_CLASS = 0;\n\n\tconst MS_ALL_MATCHING_CLASSES = MS_ALL_MATCHING_CLASSES;\n\n\tconst MS_POSITIONS_LENGTH = MS_POSITIONS_LENGTH;\n\n\tconst MS_UL = 101;\n\n\tconst MS_LR = MS_LR;\n\n\tconst MS_UR = MS_UR;\n\n\tconst MS_LL = MS_LL;\n\n\tconst MS_CR = MS_CR;\n\n\tconst MS_CL = MS_CL;\n\n\tconst MS_UC = MS_UC;\n\n\tconst MS_LC = MS_LC;\n\n\tconst MS_CC = MS_CC;\n\n\tconst MS_AUTO = MS_AUTO;\n\n\tconst MS_XY = MS_XY;\n\n\tconst MS_NONE = MS_NONE;\n\n\tconst MS_AUTO2 = MS_AUTO2;\n\n\tconst MS_FOLLOW = MS_FOLLOW;\n\n\tconst MS_TINY = MS_TINY;\n\n\tconst MS_SMALL = MS_SMALL;\n\n\tconst MS_MEDIUM = MS_MEDIUM;\n\n\tconst MS_LARGE = MS_LARGE;\n\n\tconst MS_GIANT = MS_GIANT;\n\n\tconst MS_NORMAL = 0;\n\n\tconst MS_HILITE = MS_HILITE;\n\n\tconst MS_SELECTED = MS_SELECTED;\n\n\tconst MS_INLINE = 0;\n\n\tconst MS_SHAPEFILE = MS_SHAPEFILE;\n\n\tconst MS_TILED_SHAPEFILE = MS_TILED_SHAPEFILE;\n\n\tconst MS_UNUSED_2 = MS_UNUSED_2;\n\n\tconst MS_OGR = MS_OGR;\n\n\tconst MS_UNUSED_1 = MS_UNUSED_1;\n\n\tconst MS_POSTGIS = MS_POSTGIS;\n\n\tconst MS_WMS = MS_WMS;\n\n\tconst MS_ORACLESPATIAL = MS_ORACLESPATIAL;\n\n\tconst MS_WFS = MS_WFS;\n\n\tconst MS_GRATICULE = MS_GRATICULE;\n\n\tconst MS_MYSQL = MS_MYSQL;\n\n\tconst MS_RASTER = MS_RASTER;\n\n\tconst MS_PLUGIN = MS_PLUGIN;\n\n\tconst MS_UNION = MS_UNION;\n\n\tconst MS_UVRASTER = MS_UVRASTER;\n\n\tconst MS_CONTOUR = MS_CONTOUR;\n\n\tconst MS_KERNELDENSITY = MS_KERNELDENSITY;\n\n\tconst MS_IDW = MS_IDW;\n\n\tconst MS_FLATGEOBUF = MS_FLATGEOBUF;\n\n\tconst MS_RASTER_LABEL = MS_RASTER_LABEL;\n\n\tconst MS_DB_XBASE = 0;\n\n\tconst MS_DB_CSV = MS_DB_CSV;\n\n\tconst MS_DB_MYSQL = MS_DB_MYSQL;\n\n\tconst MS_DB_ORACLE = MS_DB_ORACLE;\n\n\tconst MS_DB_POSTGRES = MS_DB_POSTGRES;\n\n\tconst MS_JOIN_ONE_TO_ONE = 0;\n\n\tconst MS_JOIN_ONE_TO_MANY = MS_JOIN_ONE_TO_MANY;\n\n\tconst MS_SINGLE = MS_SINGLE;\n\n\tconst MS_MULTIPLE = MS_MULTIPLE;\n\n\tconst MS_QUERY_SINGLE = 0;\n\n\tconst MS_QUERY_MULTIPLE = MS_QUERY_MULTIPLE;\n\n\tconst MS_QUERY_IS_NULL = 0;\n\n\tconst MS_QUERY_BY_POINT = MS_QUERY_BY_POINT;\n\n\tconst MS_QUERY_BY_RECT = MS_QUERY_BY_RECT;\n\n\tconst MS_QUERY_BY_SHAPE = MS_QUERY_BY_SHAPE;\n\n\tconst MS_QUERY_BY_ATTRIBUTE = MS_QUERY_BY_ATTRIBUTE;\n\n\tconst MS_QUERY_BY_INDEX = MS_QUERY_BY_INDEX;\n\n\tconst MS_QUERY_BY_FILTER = MS_QUERY_BY_FILTER;\n\n\tconst MS_ALIGN_DEFAULT = 0;\n\n\tconst MS_ALIGN_LEFT = MS_ALIGN_LEFT;\n\n\tconst MS_ALIGN_CENTER = MS_ALIGN_CENTER;\n\n\tconst MS_ALIGN_RIGHT = MS_ALIGN_RIGHT;\n\n\tconst MS_CJC_NONE = 0;\n\n\tconst MS_CJC_BEVEL = MS_CJC_BEVEL;\n\n\tconst MS_CJC_BUTT = MS_CJC_BUTT;\n\n\tconst MS_CJC_MITER = MS_CJC_MITER;\n\n\tconst MS_CJC_ROUND = MS_CJC_ROUND;\n\n\tconst MS_CJC_SQUARE = MS_CJC_SQUARE;\n\n\tconst MS_CJC_TRIANGLE = MS_CJC_TRIANGLE;\n\n\tconst MS_CJC_DEFAULT_JOIN_MAXSIZE = MS_CJC_DEFAULT_JOIN_MAXSIZE;\n\n\tconst MS_SUCCESS = 0;\n\n\tconst MS_FAILURE = MS_FAILURE;\n\n\tconst MS_DONE = MS_DONE;\n\n\tconst MS_IMAGEMODE_PC256 = 0;\n\n\tconst MS_IMAGEMODE_RGB = MS_IMAGEMODE_RGB;\n\n\tconst MS_IMAGEMODE_RGBA = MS_IMAGEMODE_RGBA;\n\n\tconst MS_IMAGEMODE_INT16 = MS_IMAGEMODE_INT16;\n\n\tconst MS_IMAGEMODE_FLOAT32 = MS_IMAGEMODE_FLOAT32;\n\n\tconst MS_IMAGEMODE_BYTE = MS_IMAGEMODE_BYTE;\n\n\tconst MS_IMAGEMODE_FEATURE = MS_IMAGEMODE_FEATURE;\n\n\tconst MS_IMAGEMODE_NULL = MS_IMAGEMODE_NULL;\n\n\tconst MS_GEOS_EQUALS = 0;\n\n\tconst MS_GEOS_DISJOINT = MS_GEOS_DISJOINT;\n\n\tconst MS_GEOS_TOUCHES = MS_GEOS_TOUCHES;\n\n\tconst MS_GEOS_OVERLAPS = MS_GEOS_OVERLAPS;\n\n\tconst MS_GEOS_CROSSES = MS_GEOS_CROSSES;\n\n\tconst MS_GEOS_INTERSECTS = MS_GEOS_INTERSECTS;\n\n\tconst MS_GEOS_WITHIN = MS_GEOS_WITHIN;\n\n\tconst MS_GEOS_CONTAINS = MS_GEOS_CONTAINS;\n\n\tconst MS_GEOS_BEYOND = MS_GEOS_BEYOND;\n\n\tconst MS_GEOS_DWITHIN = MS_GEOS_DWITHIN;\n\n\tconst MS_TRANSFORM_NONE = 0;\n\n\tconst MS_TRANSFORM_ROUND = MS_TRANSFORM_ROUND;\n\n\tconst MS_TRANSFORM_SNAPTOGRID = MS_TRANSFORM_SNAPTOGRID;\n\n\tconst MS_TRANSFORM_FULLRESOLUTION = MS_TRANSFORM_FULLRESOLUTION;\n\n\tconst MS_TRANSFORM_SIMPLIFY = MS_TRANSFORM_SIMPLIFY;\n\n\tconst MS_COMPOP_CLEAR = 0;\n\n\tconst MS_COMPOP_SRC = MS_COMPOP_SRC;\n\n\tconst MS_COMPOP_DST = MS_COMPOP_DST;\n\n\tconst MS_COMPOP_SRC_OVER = MS_COMPOP_SRC_OVER;\n\n\tconst MS_COMPOP_DST_OVER = MS_COMPOP_DST_OVER;\n\n\tconst MS_COMPOP_SRC_IN = MS_COMPOP_SRC_IN;\n\n\tconst MS_COMPOP_DST_IN = MS_COMPOP_DST_IN;\n\n\tconst MS_COMPOP_SRC_OUT = MS_COMPOP_SRC_OUT;\n\n\tconst MS_COMPOP_DST_OUT = MS_COMPOP_DST_OUT;\n\n\tconst MS_COMPOP_SRC_ATOP = MS_COMPOP_SRC_ATOP;\n\n\tconst MS_COMPOP_DST_ATOP = MS_COMPOP_DST_ATOP;\n\n\tconst MS_COMPOP_XOR = MS_COMPOP_XOR;\n\n\tconst MS_COMPOP_PLUS = MS_COMPOP_PLUS;\n\n\tconst MS_COMPOP_MINUS = MS_COMPOP_MINUS;\n\n\tconst MS_COMPOP_MULTIPLY = MS_COMPOP_MULTIPLY;\n\n\tconst MS_COMPOP_SCREEN = MS_COMPOP_SCREEN;\n\n\tconst MS_COMPOP_OVERLAY = MS_COMPOP_OVERLAY;\n\n\tconst MS_COMPOP_DARKEN = MS_COMPOP_DARKEN;\n\n\tconst MS_COMPOP_LIGHTEN = MS_COMPOP_LIGHTEN;\n\n\tconst MS_COMPOP_COLOR_DODGE = MS_COMPOP_COLOR_DODGE;\n\n\tconst MS_COMPOP_COLOR_BURN = MS_COMPOP_COLOR_BURN;\n\n\tconst MS_COMPOP_HARD_LIGHT = MS_COMPOP_HARD_LIGHT;\n\n\tconst MS_COMPOP_SOFT_LIGHT = MS_COMPOP_SOFT_LIGHT;\n\n\tconst MS_COMPOP_DIFFERENCE = MS_COMPOP_DIFFERENCE;\n\n\tconst MS_COMPOP_EXCLUSION = MS_COMPOP_EXCLUSION;\n\n\tconst MS_COMPOP_CONTRAST = MS_COMPOP_CONTRAST;\n\n\tconst MS_COMPOP_INVERT = MS_COMPOP_INVERT;\n\n\tconst MS_COMPOP_INVERT_RGB = MS_COMPOP_INVERT_RGB;\n\n\tconst MS_COMPOP_HSL_HUE = MS_COMPOP_HSL_HUE;\n\n\tconst MS_COMPOP_HSL_LUMINOSITY = MS_COMPOP_HSL_LUMINOSITY;\n\n\tconst MS_COMPOP_HSL_SATURATION = MS_COMPOP_HSL_SATURATION;\n\n\tconst MS_COMPOP_HSL_COLOR = MS_COMPOP_HSL_COLOR;\n\n\tconst MS_STYLE_BINDING_LENGTH = MS_STYLE_BINDING_LENGTH;\n\n\tconst MS_STYLE_BINDING_SIZE = 0;\n\n\tconst MS_STYLE_BINDING_WIDTH = MS_STYLE_BINDING_WIDTH;\n\n\tconst MS_STYLE_BINDING_ANGLE = MS_STYLE_BINDING_ANGLE;\n\n\tconst MS_STYLE_BINDING_COLOR = MS_STYLE_BINDING_COLOR;\n\n\tconst MS_STYLE_BINDING_OUTLINECOLOR = MS_STYLE_BINDING_OUTLINECOLOR;\n\n\tconst MS_STYLE_BINDING_SYMBOL = MS_STYLE_BINDING_SYMBOL;\n\n\tconst MS_STYLE_BINDING_OUTLINEWIDTH = MS_STYLE_BINDING_OUTLINEWIDTH;\n\n\tconst MS_STYLE_BINDING_OPACITY = MS_STYLE_BINDING_OPACITY;\n\n\tconst MS_STYLE_BINDING_OFFSET_X = MS_STYLE_BINDING_OFFSET_X;\n\n\tconst MS_STYLE_BINDING_OFFSET_Y = MS_STYLE_BINDING_OFFSET_Y;\n\n\tconst MS_STYLE_BINDING_POLAROFFSET_PIXEL = MS_STYLE_BINDING_POLAROFFSET_PIXEL;\n\n\tconst MS_STYLE_BINDING_POLAROFFSET_ANGLE = MS_STYLE_BINDING_POLAROFFSET_ANGLE;\n\n\tconst MS_LABEL_BINDING_LENGTH = MS_LABEL_BINDING_LENGTH;\n\n\tconst MS_LABEL_BINDING_SIZE = 0;\n\n\tconst MS_LABEL_BINDING_ANGLE = MS_LABEL_BINDING_ANGLE;\n\n\tconst MS_LABEL_BINDING_COLOR = MS_LABEL_BINDING_COLOR;\n\n\tconst MS_LABEL_BINDING_OUTLINECOLOR = MS_LABEL_BINDING_OUTLINECOLOR;\n\n\tconst MS_LABEL_BINDING_FONT = MS_LABEL_BINDING_FONT;\n\n\tconst MS_LABEL_BINDING_PRIORITY = MS_LABEL_BINDING_PRIORITY;\n\n\tconst MS_LABEL_BINDING_POSITION = MS_LABEL_BINDING_POSITION;\n\n\tconst MS_LABEL_BINDING_SHADOWSIZEX = MS_LABEL_BINDING_SHADOWSIZEX;\n\n\tconst MS_LABEL_BINDING_SHADOWSIZEY = MS_LABEL_BINDING_SHADOWSIZEY;\n\n\tconst MS_LABEL_BINDING_OFFSET_X = MS_LABEL_BINDING_OFFSET_X;\n\n\tconst MS_LABEL_BINDING_OFFSET_Y = MS_LABEL_BINDING_OFFSET_Y;\n\n\tconst MS_LABEL_BINDING_ALIGN = MS_LABEL_BINDING_ALIGN;\n\n\tconst MS_TOKEN_LOGICAL_AND = 300;\n\n\tconst MS_TOKEN_LOGICAL_OR = MS_TOKEN_LOGICAL_OR;\n\n\tconst MS_TOKEN_LOGICAL_NOT = MS_TOKEN_LOGICAL_NOT;\n\n\tconst MS_TOKEN_LITERAL_NUMBER = 310;\n\n\tconst MS_TOKEN_LITERAL_STRING = MS_TOKEN_LITERAL_STRING;\n\n\tconst MS_TOKEN_LITERAL_TIME = MS_TOKEN_LITERAL_TIME;\n\n\tconst MS_TOKEN_LITERAL_SHAPE = MS_TOKEN_LITERAL_SHAPE;\n\n\tconst MS_TOKEN_LITERAL_BOOLEAN = MS_TOKEN_LITERAL_BOOLEAN;\n\n\tconst MS_TOKEN_COMPARISON_EQ = 320;\n\n\tconst MS_TOKEN_COMPARISON_NE = MS_TOKEN_COMPARISON_NE;\n\n\tconst MS_TOKEN_COMPARISON_GT = MS_TOKEN_COMPARISON_GT;\n\n\tconst MS_TOKEN_COMPARISON_LT = MS_TOKEN_COMPARISON_LT;\n\n\tconst MS_TOKEN_COMPARISON_LE = MS_TOKEN_COMPARISON_LE;\n\n\tconst MS_TOKEN_COMPARISON_GE = MS_TOKEN_COMPARISON_GE;\n\n\tconst MS_TOKEN_COMPARISON_IEQ = MS_TOKEN_COMPARISON_IEQ;\n\n\tconst MS_TOKEN_COMPARISON_RE = MS_TOKEN_COMPARISON_RE;\n\n\tconst MS_TOKEN_COMPARISON_IRE = MS_TOKEN_COMPARISON_IRE;\n\n\tconst MS_TOKEN_COMPARISON_IN = MS_TOKEN_COMPARISON_IN;\n\n\tconst MS_TOKEN_COMPARISON_LIKE = MS_TOKEN_COMPARISON_LIKE;\n\n\tconst MS_TOKEN_COMPARISON_INTERSECTS = MS_TOKEN_COMPARISON_INTERSECTS;\n\n\tconst MS_TOKEN_COMPARISON_DISJOINT = MS_TOKEN_COMPARISON_DISJOINT;\n\n\tconst MS_TOKEN_COMPARISON_TOUCHES = MS_TOKEN_COMPARISON_TOUCHES;\n\n\tconst MS_TOKEN_COMPARISON_OVERLAPS = MS_TOKEN_COMPARISON_OVERLAPS;\n\n\tconst MS_TOKEN_COMPARISON_CROSSES = MS_TOKEN_COMPARISON_CROSSES;\n\n\tconst MS_TOKEN_COMPARISON_WITHIN = MS_TOKEN_COMPARISON_WITHIN;\n\n\tconst MS_TOKEN_COMPARISON_CONTAINS = MS_TOKEN_COMPARISON_CONTAINS;\n\n\tconst MS_TOKEN_COMPARISON_EQUALS = MS_TOKEN_COMPARISON_EQUALS;\n\n\tconst MS_TOKEN_COMPARISON_BEYOND = MS_TOKEN_COMPARISON_BEYOND;\n\n\tconst MS_TOKEN_COMPARISON_DWITHIN = MS_TOKEN_COMPARISON_DWITHIN;\n\n\tconst MS_TOKEN_FUNCTION_LENGTH = 350;\n\n\tconst MS_TOKEN_FUNCTION_TOSTRING = MS_TOKEN_FUNCTION_TOSTRING;\n\n\tconst MS_TOKEN_FUNCTION_COMMIFY = MS_TOKEN_FUNCTION_COMMIFY;\n\n\tconst MS_TOKEN_FUNCTION_AREA = MS_TOKEN_FUNCTION_AREA;\n\n\tconst MS_TOKEN_FUNCTION_ROUND = MS_TOKEN_FUNCTION_ROUND;\n\n\tconst MS_TOKEN_FUNCTION_FROMTEXT = MS_TOKEN_FUNCTION_FROMTEXT;\n\n\tconst MS_TOKEN_FUNCTION_BUFFER = MS_TOKEN_FUNCTION_BUFFER;\n\n\tconst MS_TOKEN_FUNCTION_DIFFERENCE = MS_TOKEN_FUNCTION_DIFFERENCE;\n\n\tconst MS_TOKEN_FUNCTION_SIMPLIFY = MS_TOKEN_FUNCTION_SIMPLIFY;\n\n\tconst MS_TOKEN_FUNCTION_SIMPLIFYPT = MS_TOKEN_FUNCTION_SIMPLIFYPT;\n\n\tconst MS_TOKEN_FUNCTION_GENERALIZE = MS_TOKEN_FUNCTION_GENERALIZE;\n\n\tconst MS_TOKEN_FUNCTION_SMOOTHSIA = MS_TOKEN_FUNCTION_SMOOTHSIA;\n\n\tconst MS_TOKEN_FUNCTION_CENTERLINE = MS_TOKEN_FUNCTION_CENTERLINE;\n\n\tconst MS_TOKEN_FUNCTION_DENSIFY = MS_TOKEN_FUNCTION_DENSIFY;\n\n\tconst MS_TOKEN_FUNCTION_OUTER = MS_TOKEN_FUNCTION_OUTER;\n\n\tconst MS_TOKEN_FUNCTION_INNER = MS_TOKEN_FUNCTION_INNER;\n\n\tconst MS_TOKEN_FUNCTION_JAVASCRIPT = MS_TOKEN_FUNCTION_JAVASCRIPT;\n\n\tconst MS_TOKEN_FUNCTION_UPPER = MS_TOKEN_FUNCTION_UPPER;\n\n\tconst MS_TOKEN_FUNCTION_LOWER = MS_TOKEN_FUNCTION_LOWER;\n\n\tconst MS_TOKEN_FUNCTION_INITCAP = MS_TOKEN_FUNCTION_INITCAP;\n\n\tconst MS_TOKEN_FUNCTION_FIRSTCAP = MS_TOKEN_FUNCTION_FIRSTCAP;\n\n\tconst MS_TOKEN_BINDING_DOUBLE = 380;\n\n\tconst MS_TOKEN_BINDING_INTEGER = MS_TOKEN_BINDING_INTEGER;\n\n\tconst MS_TOKEN_BINDING_STRING = MS_TOKEN_BINDING_STRING;\n\n\tconst MS_TOKEN_BINDING_TIME = MS_TOKEN_BINDING_TIME;\n\n\tconst MS_TOKEN_BINDING_SHAPE = MS_TOKEN_BINDING_SHAPE;\n\n\tconst MS_TOKEN_BINDING_MAP_CELLSIZE = MS_TOKEN_BINDING_MAP_CELLSIZE;\n\n\tconst MS_TOKEN_BINDING_DATA_CELLSIZE = MS_TOKEN_BINDING_DATA_CELLSIZE;\n\n\tconst MS_PARSE_TYPE_BOOLEAN = 0;\n\n\tconst MS_PARSE_TYPE_STRING = MS_PARSE_TYPE_STRING;\n\n\tconst MS_PARSE_TYPE_SHAPE = MS_PARSE_TYPE_SHAPE;\n\n\tconst MS_PARSE_TYPE_SLD = MS_PARSE_TYPE_SLD;\n\n\tconst MS_NOOVERRIDE = MS_NOOVERRIDE;\n\n\tconst MS_STYLE_SINGLE_SIDED_OFFSET = MS_STYLE_SINGLE_SIDED_OFFSET;\n\n\tconst MS_STYLE_DOUBLE_SIDED_OFFSET = MS_STYLE_DOUBLE_SIDED_OFFSET;\n\n\tconst MS_LABEL_PERPENDICULAR_OFFSET = MS_LABEL_PERPENDICULAR_OFFSET;\n\n\tconst MS_LABEL_PERPENDICULAR_TOP_OFFSET = MS_LABEL_PERPENDICULAR_TOP_OFFSET;\n\n\tconst MS_SCALEBAR_INTERVALS_MIN = MS_SCALEBAR_INTERVALS_MIN;\n\n\tconst MS_SCALEBAR_INTERVALS_MAX = MS_SCALEBAR_INTERVALS_MAX;\n\n\tconst MS_SCALEBAR_WIDTH_MIN = MS_SCALEBAR_WIDTH_MIN;\n\n\tconst MS_SCALEBAR_WIDTH_MAX = MS_SCALEBAR_WIDTH_MAX;\n\n\tconst MS_SCALEBAR_HEIGHT_MIN = MS_SCALEBAR_HEIGHT_MIN;\n\n\tconst MS_SCALEBAR_HEIGHT_MAX = MS_SCALEBAR_HEIGHT_MAX;\n\n\tconst MS_SCALEBAR_OFFSET_MIN = MS_SCALEBAR_OFFSET_MIN;\n\n\tconst MS_SCALEBAR_OFFSET_MAX = MS_SCALEBAR_OFFSET_MAX;\n\n\tconst MS_LEGEND_KEYSIZE_MIN = MS_LEGEND_KEYSIZE_MIN;\n\n\tconst MS_LEGEND_KEYSIZE_MAX = MS_LEGEND_KEYSIZE_MAX;\n\n\tconst MS_LEGEND_KEYSPACING_MIN = MS_LEGEND_KEYSPACING_MIN;\n\n\tconst MS_LEGEND_KEYSPACING_MAX = MS_LEGEND_KEYSPACING_MAX;\n\n\tconst MS_RESOLUTION_MAX = MS_RESOLUTION_MAX;\n\n\tconst MS_RESOLUTION_MIN = MS_RESOLUTION_MIN;\n\n\tstatic function msSaveImage($map,$img,$filename) {\n\t\treturn msSaveImage($map,$img,$filename);\n\t}\n\n\tstatic function msFreeImage($img) {\n\t\tmsFreeImage($img);\n\t}\n\n\tstatic function msSetup() {\n\t\treturn msSetup();\n\t}\n\n\tstatic function msCleanup() {\n\t\tmsCleanup();\n\t}\n\n\tstatic function msLoadMapFromString($buffer,$new_mappath,$config) {\n\t\t$r=msLoadMapFromString($buffer,$new_mappath,$config);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new mapObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tconst MS_VERSION_MAJOR = MS_VERSION_MAJOR;\n\n\tconst MS_VERSION_MINOR = MS_VERSION_MINOR;\n\n\tconst MS_VERSION_REV = MS_VERSION_REV;\n\n\tconst MS_VERSION = MS_VERSION;\n\n\tconst MS_VERSION_NUM = MS_VERSION_NUM;\n\n\tconst MS_NOERR = MS_NOERR;\n\n\tconst MS_IOERR = MS_IOERR;\n\n\tconst MS_MEMERR = MS_MEMERR;\n\n\tconst MS_TYPEERR = MS_TYPEERR;\n\n\tconst MS_SYMERR = MS_SYMERR;\n\n\tconst MS_REGEXERR = MS_REGEXERR;\n\n\tconst MS_TTFERR = MS_TTFERR;\n\n\tconst MS_DBFERR = MS_DBFERR;\n\n\tconst MS_IDENTERR = MS_IDENTERR;\n\n\tconst MS_EOFERR = MS_EOFERR;\n\n\tconst MS_PROJERR = MS_PROJERR;\n\n\tconst MS_MISCERR = MS_MISCERR;\n\n\tconst MS_CGIERR = MS_CGIERR;\n\n\tconst MS_WEBERR = MS_WEBERR;\n\n\tconst MS_IMGERR = MS_IMGERR;\n\n\tconst MS_HASHERR = MS_HASHERR;\n\n\tconst MS_JOINERR = MS_JOINERR;\n\n\tconst MS_NOTFOUND = MS_NOTFOUND;\n\n\tconst MS_SHPERR = MS_SHPERR;\n\n\tconst MS_PARSEERR = MS_PARSEERR;\n\n\tconst MS_UNUSEDERR = MS_UNUSEDERR;\n\n\tconst MS_OGRERR = MS_OGRERR;\n\n\tconst MS_QUERYERR = MS_QUERYERR;\n\n\tconst MS_WMSERR = MS_WMSERR;\n\n\tconst MS_WMSCONNERR = MS_WMSCONNERR;\n\n\tconst MS_ORACLESPATIALERR = MS_ORACLESPATIALERR;\n\n\tconst MS_WFSERR = MS_WFSERR;\n\n\tconst MS_WFSCONNERR = MS_WFSCONNERR;\n\n\tconst MS_MAPCONTEXTERR = MS_MAPCONTEXTERR;\n\n\tconst MS_HTTPERR = MS_HTTPERR;\n\n\tconst MS_CHILDERR = MS_CHILDERR;\n\n\tconst MS_WCSERR = MS_WCSERR;\n\n\tconst MS_GEOSERR = MS_GEOSERR;\n\n\tconst MS_RECTERR = MS_RECTERR;\n\n\tconst MS_TIMEERR = MS_TIMEERR;\n\n\tconst MS_GMLERR = MS_GMLERR;\n\n\tconst MS_SOSERR = MS_SOSERR;\n\n\tconst MS_NULLPARENTERR = MS_NULLPARENTERR;\n\n\tconst MS_AGGERR = MS_AGGERR;\n\n\tconst MS_OWSERR = MS_OWSERR;\n\n\tconst MS_OGLERR = MS_OGLERR;\n\n\tconst MS_RENDERERERR = MS_RENDERERERR;\n\n\tconst MS_V8ERR = MS_V8ERR;\n\n\tconst MS_OGCAPIERR = MS_OGCAPIERR;\n\n\tconst MS_FGBERR = MS_FGBERR;\n\n\tconst MS_NUMERRORCODES = MS_NUMERRORCODES;\n\n\tconst MESSAGELENGTH = MESSAGELENGTH;\n\n\tconst ROUTINELENGTH = ROUTINELENGTH;\n\n\tconst HTTPSTATUSLENGTH = HTTPSTATUSLENGTH;\n\n\tconst MS_ERROR_LANGUAGE = MS_ERROR_LANGUAGE;\n\n\tconst MS_HTTP_400_BAD_REQUEST = MS_HTTP_400_BAD_REQUEST;\n\n\tconst MS_HTTP_500_INTERNAL_SERVER_ERROR = MS_HTTP_500_INTERNAL_SERVER_ERROR;\n\n\tstatic function msGetErrorObj() {\n\t\t$r=msGetErrorObj();\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new errorObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tstatic function msResetErrorList() {\n\t\tmsResetErrorList();\n\t}\n\n\tstatic function msGetVersion() {\n\t\treturn msGetVersion();\n\t}\n\n\tstatic function msGetVersionInt() {\n\t\treturn msGetVersionInt();\n\t}\n\n\tstatic function msGetErrorString($delimiter) {\n\t\treturn msGetErrorString($delimiter);\n\t}\n\n\tconst MS_DEBUGLEVEL_ERRORSONLY = 0;\n\n\tconst MS_DEBUGLEVEL_DEBUG = 1;\n\n\tconst MS_DEBUGLEVEL_TUNING = 2;\n\n\tconst MS_DEBUGLEVEL_V = 3;\n\n\tconst MS_DEBUGLEVEL_VV = 4;\n\n\tconst MS_DEBUGLEVEL_VVV = 5;\n\n\tconst MS_DEBUGLEVEL_DEVDEBUG = 20;\n\n\tconst SHX_BUFFER_PAGE = SHX_BUFFER_PAGE;\n\n\tconst MS_SHAPEFILE_POINT = MS_SHAPEFILE_POINT;\n\n\tconst MS_SHAPEFILE_ARC = MS_SHAPEFILE_ARC;\n\n\tconst MS_SHAPEFILE_POLYGON = MS_SHAPEFILE_POLYGON;\n\n\tconst MS_SHAPEFILE_MULTIPOINT = MS_SHAPEFILE_MULTIPOINT;\n\n\tconst MS_SHP_POINTZ = MS_SHP_POINTZ;\n\n\tconst MS_SHP_ARCZ = MS_SHP_ARCZ;\n\n\tconst MS_SHP_POLYGONZ = MS_SHP_POLYGONZ;\n\n\tconst MS_SHP_MULTIPOINTZ = MS_SHP_MULTIPOINTZ;\n\n\tconst MS_SHP_POINTM = MS_SHP_POINTM;\n\n\tconst MS_SHP_ARCM = MS_SHP_ARCM;\n\n\tconst MS_SHP_POLYGONM = MS_SHP_POLYGONM;\n\n\tconst MS_SHP_MULTIPOINTM = MS_SHP_MULTIPOINTM;\n\n\tconst FTString = 0;\n\n\tconst FTInteger = FTInteger;\n\n\tconst FTDouble = FTDouble;\n\n\tconst FTInvalid = FTInvalid;\n\n\tconst wkp_none = wkp_none;\n\n\tconst wkp_lonlat = wkp_lonlat;\n\n\tconst wkp_gmerc = wkp_gmerc;\n\n\tconst MS_SYMBOL_SIMPLE = 1000;\n\n\tconst MS_SYMBOL_VECTOR = MS_SYMBOL_VECTOR;\n\n\tconst MS_SYMBOL_ELLIPSE = MS_SYMBOL_ELLIPSE;\n\n\tconst MS_SYMBOL_PIXMAP = MS_SYMBOL_PIXMAP;\n\n\tconst MS_SYMBOL_TRUETYPE = MS_SYMBOL_TRUETYPE;\n\n\tconst MS_SYMBOL_HATCH = MS_SYMBOL_HATCH;\n\n\tconst MS_SYMBOL_SVG = MS_SYMBOL_SVG;\n\n\tconst MS_SYMBOL_ALLOCSIZE = MS_SYMBOL_ALLOCSIZE;\n\n\tconst MS_MAXVECTORPOINTS = MS_MAXVECTORPOINTS;\n\n\tconst MS_MAXPATTERNLENGTH = MS_MAXPATTERNLENGTH;\n\n\tconst MS_IMAGECACHESIZE = MS_IMAGECACHESIZE;\n\n\tconst MS_HASHSIZE = MS_HASHSIZE;\n\n\tconst MS_CONFIG_SECTION = 3000;\n\n\tconst MS_CONFIG_SECTION_ENV = MS_CONFIG_SECTION_ENV;\n\n\tconst MS_CONFIG_SECTION_MAPS = MS_CONFIG_SECTION_MAPS;\n\n\tconst MS_CONFIG_SECTION_PLUGINS = MS_CONFIG_SECTION_PLUGINS;\n\n\tstatic function msLoadConfig($ms_config_file) {\n\t\t$r=msLoadConfig($ms_config_file);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new configObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tstatic function msFreeConfig($config) {\n\t\tmsFreeConfig($config);\n\t}\n\n\tstatic function msConfigGetEnv($config,$key) {\n\t\treturn msConfigGetEnv($config,$key);\n\t}\n\n\tstatic function msConfigGetMap($config,$key) {\n\t\treturn msConfigGetMap($config,$key);\n\t}\n\n\tstatic function msConfigGetPlugin($config,$key) {\n\t\treturn msConfigGetPlugin($config,$key);\n\t}\n\n\tconst MS_DEFAULT_CGI_PARAMS = MS_DEFAULT_CGI_PARAMS;\n\n\tconst MS_GET_REQUEST = 0;\n\n\tconst MS_POST_REQUEST = MS_POST_REQUEST;\n\n\tstatic function msConnPoolCloseUnreferenced() {\n\t\tmsConnPoolCloseUnreferenced();\n\t}\n\n\tstatic function msIO_resetHandlers() {\n\t\tmsIO_resetHandlers();\n\t}\n\n\tstatic function msIO_installStdoutToBuffer() {\n\t\tmsIO_installStdoutToBuffer();\n\t}\n\n\tstatic function msIO_installStdinFromBuffer() {\n\t\tmsIO_installStdinFromBuffer();\n\t}\n\n\tstatic function msIO_stripStdoutBufferContentType() {\n\t\treturn msIO_stripStdoutBufferContentType();\n\t}\n\n\tstatic function msIO_stripStdoutBufferContentHeaders() {\n\t\tmsIO_stripStdoutBufferContentHeaders();\n\t}\n\n\tstatic function msIO_getStdoutBufferString() {\n\t\treturn msIO_getStdoutBufferString();\n\t}\n\n\tstatic function msIO_getStdoutBufferBytes() {\n\t\treturn msIO_getStdoutBufferBytes();\n\t}\n\n\tstatic function msIO_getAndStripStdoutBufferMimeHeaders() {\n\t\t$r=msIO_getAndStripStdoutBufferMimeHeaders();\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new hashTableObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n}\n\n/* PHP Proxy Classes */\nclass intarray {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($nelements) {\n\t\tif (is_resource($nelements) && get_resource_type($nelements) === '_p_intarray') {\n\t\t\t$this->_cPtr=$nelements;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_intarray($nelements);\n\t}\n\n\tfunction getitem($index) {\n\t\treturn intarray_getitem($this->_cPtr,$index);\n\t}\n\n\tfunction setitem($index,$value) {\n\t\tintarray_setitem($this->_cPtr,$index,$value);\n\t}\n\n\tfunction cast() {\n\t\treturn intarray_cast($this->_cPtr);\n\t}\n\n\tstatic function frompointer($t) {\n\t\t$r=intarray_frompointer($t);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new intarray($r);\n\t\t}\n\t\treturn $r;\n\t}\n}\n\nclass CompositingFilter {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'filter') return CompositingFilter_filter_set($this->_cPtr,$value);\n\t\tif ($var === 'next') return CompositingFilter_next_set($this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'next') return new CompositingFilter(CompositingFilter_next_get($this->_cPtr));\n\t\tif ($var === 'filter') return CompositingFilter_filter_get($this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('CompositingFilter_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p__CompositingFilter') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_CompositingFilter();\n\t}\n}\n\nclass LayerCompositer {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'LayerCompositer_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'filter') return new CompositingFilter(LayerCompositer_filter_get($this->_cPtr));\n\t\tif ($var === 'next') return new LayerCompositer(LayerCompositer_next_get($this->_cPtr));\n\t\tif ($var === 'comp_op') return LayerCompositer_comp_op_get($this->_cPtr);\n\t\tif ($var === 'opacity') return LayerCompositer_opacity_get($this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('LayerCompositer_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p__LayerCompositer') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_LayerCompositer();\n\t}\n}\n\nclass fontSetObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'fonts') return new hashTableObj(fontSetObj_fonts_get($this->_cPtr));\n\t\tif ($var === 'numfonts') return fontSetObj_numfonts_get($this->_cPtr);\n\t\tif ($var === 'filename') return fontSetObj_filename_get($this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('fontSetObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_fontSetObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_fontSetObj();\n\t}\n}\n\nclass clusterObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'clusterObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\t$func = 'clusterObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('clusterObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction updateFromString($snippet) {\n\t\treturn clusterObj_updateFromString($this->_cPtr,$snippet);\n\t}\n\n\tfunction convertToString() {\n\t\treturn clusterObj_convertToString($this->_cPtr);\n\t}\n\n\tfunction setGroup($group) {\n\t\treturn clusterObj_setGroup($this->_cPtr,$group);\n\t}\n\n\tfunction getGroupString() {\n\t\treturn clusterObj_getGroupString($this->_cPtr);\n\t}\n\n\tfunction setFilter($filter) {\n\t\treturn clusterObj_setFilter($this->_cPtr,$filter);\n\t}\n\n\tfunction getFilterString() {\n\t\treturn clusterObj_getFilterString($this->_cPtr);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_clusterObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_clusterObj();\n\t}\n}\n\nclass outputFormatObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'outputFormatObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\t$func = 'outputFormatObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('outputFormatObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($driver,$name=null) {\n\t\tif (is_resource($driver) && get_resource_type($driver) === '_p_outputFormatObj') {\n\t\t\t$this->_cPtr=$driver;\n\t\t\treturn;\n\t\t}\n\t\tswitch (func_num_args()) {\n\t\tcase 1: $this->_cPtr=new_outputFormatObj($driver); break;\n\t\tdefault: $this->_cPtr=new_outputFormatObj($driver,$name);\n\t\t}\n\t}\n\n\tfunction setExtension($extension) {\n\t\toutputFormatObj_setExtension($this->_cPtr,$extension);\n\t}\n\n\tfunction setMimetype($mimetype) {\n\t\toutputFormatObj_setMimetype($this->_cPtr,$mimetype);\n\t}\n\n\tfunction setOption($key,$value) {\n\t\toutputFormatObj_setOption($this->_cPtr,$key,$value);\n\t}\n\n\tfunction validate() {\n\t\treturn outputFormatObj_validate($this->_cPtr);\n\t}\n\n\tfunction getOption($key,$value=\"\") {\n\t\treturn outputFormatObj_getOption($this->_cPtr,$key,$value);\n\t}\n\n\tfunction getOptionAt($i) {\n\t\treturn outputFormatObj_getOptionAt($this->_cPtr,$i);\n\t}\n\n\tfunction attachDevice($device) {\n\t\toutputFormatObj_attachDevice($this->_cPtr,$device);\n\t}\n}\n\nclass queryMapObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'queryMapObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'color') return new colorObj(queryMapObj_color_get($this->_cPtr));\n\t\tif ($var === 'map') return new mapObj(queryMapObj_map_get($this->_cPtr));\n\t\t$func = 'queryMapObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('queryMapObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction updateFromString($snippet) {\n\t\treturn queryMapObj_updateFromString($this->_cPtr,$snippet);\n\t}\n\n\tfunction convertToString() {\n\t\treturn queryMapObj_convertToString($this->_cPtr);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_queryMapObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_queryMapObj();\n\t}\n}\n\nclass webObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'webObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'validation') return new hashTableObj(webObj_validation_get($this->_cPtr));\n\t\tif ($var === 'metadata') return new hashTableObj(webObj_metadata_get($this->_cPtr));\n\t\tif ($var === 'map') return new mapObj(webObj_map_get($this->_cPtr));\n\t\t$func = 'webObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('webObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_webObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_webObj();\n\t}\n\n\tfunction updateFromString($snippet) {\n\t\treturn webObj_updateFromString($this->_cPtr,$snippet);\n\t}\n\n\tfunction convertToString() {\n\t\treturn webObj_convertToString($this->_cPtr);\n\t}\n}\n\nclass styleObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'styleObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'maxcolor') return new colorObj(styleObj_maxcolor_get($this->_cPtr));\n\t\tif ($var === 'outlinecolor') return new colorObj(styleObj_outlinecolor_get($this->_cPtr));\n\t\tif ($var === 'color') return new colorObj(styleObj_color_get($this->_cPtr));\n\t\tif ($var === 'mincolor') return new colorObj(styleObj_mincolor_get($this->_cPtr));\n\t\t$func = 'styleObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('styleObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($parent_class=null) {\n\t\tif (is_resource($parent_class) && get_resource_type($parent_class) === '_p_styleObj') {\n\t\t\t$this->_cPtr=$parent_class;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_styleObj($parent_class);\n\t}\n\n\tfunction updateFromString($snippet) {\n\t\treturn styleObj_updateFromString($this->_cPtr,$snippet);\n\t}\n\n\tfunction convertToString() {\n\t\treturn styleObj_convertToString($this->_cPtr);\n\t}\n\n\tfunction cloneStyle() {\n\t\t$r=styleObj_cloneStyle($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new styleObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction setSymbolByName($map,$symbolname) {\n\t\treturn styleObj_setSymbolByName($this->_cPtr,$map,$symbolname);\n\t}\n\n\tfunction removeBinding($binding) {\n\t\treturn styleObj_removeBinding($this->_cPtr,$binding);\n\t}\n\n\tfunction setBinding($binding,$item) {\n\t\treturn styleObj_setBinding($this->_cPtr,$binding,$item);\n\t}\n\n\tfunction getBinding($binding) {\n\t\treturn styleObj_getBinding($this->_cPtr,$binding);\n\t}\n\n\tfunction getGeomTransform() {\n\t\treturn styleObj_getGeomTransform($this->_cPtr);\n\t}\n\n\tfunction setGeomTransform($transform) {\n\t\tstyleObj_setGeomTransform($this->_cPtr,$transform);\n\t}\n}\n\nclass labelLeaderObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'maxdistance') return labelLeaderObj_maxdistance_set($this->_cPtr,$value);\n\t\tif ($var === 'gridstep') return labelLeaderObj_gridstep_set($this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\t$func = 'labelLeaderObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('labelLeaderObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_labelLeaderObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_labelLeaderObj();\n\t}\n}\n\nclass labelObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'labelObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'outlinecolor') return new colorObj(labelObj_outlinecolor_get($this->_cPtr));\n\t\tif ($var === 'color') return new colorObj(labelObj_color_get($this->_cPtr));\n\t\tif ($var === 'shadowcolor') return new colorObj(labelObj_shadowcolor_get($this->_cPtr));\n\t\t$func = 'labelObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('labelObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_labelObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_labelObj();\n\t}\n\n\tfunction updateFromString($snippet) {\n\t\treturn labelObj_updateFromString($this->_cPtr,$snippet);\n\t}\n\n\tfunction convertToString() {\n\t\treturn labelObj_convertToString($this->_cPtr);\n\t}\n\n\tfunction removeBinding($binding) {\n\t\treturn labelObj_removeBinding($this->_cPtr,$binding);\n\t}\n\n\tfunction getBinding($binding) {\n\t\treturn labelObj_getBinding($this->_cPtr,$binding);\n\t}\n\n\tfunction setBinding($binding,$item) {\n\t\treturn labelObj_setBinding($this->_cPtr,$binding,$item);\n\t}\n\n\tfunction removeExpressionBinding($binding) {\n\t\treturn labelObj_removeExpressionBinding($this->_cPtr,$binding);\n\t}\n\n\tfunction getExpressionBinding($binding) {\n\t\treturn labelObj_getExpressionBinding($this->_cPtr,$binding);\n\t}\n\n\tfunction setExpressionBinding($binding,$text) {\n\t\treturn labelObj_setExpressionBinding($this->_cPtr,$binding,$text);\n\t}\n\n\tfunction setExpression($expression) {\n\t\treturn labelObj_setExpression($this->_cPtr,$expression);\n\t}\n\n\tfunction getExpressionString() {\n\t\treturn labelObj_getExpressionString($this->_cPtr);\n\t}\n\n\tfunction setText($text) {\n\t\treturn labelObj_setText($this->_cPtr,$text);\n\t}\n\n\tfunction getTextString() {\n\t\treturn labelObj_getTextString($this->_cPtr);\n\t}\n\n\tfunction getStyle($i) {\n\t\t$r=labelObj_getStyle($this->_cPtr,$i);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new styleObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction insertStyle($style,$index=-1) {\n\t\treturn labelObj_insertStyle($this->_cPtr,$style,$index);\n\t}\n\n\tfunction removeStyle($index) {\n\t\t$r=labelObj_removeStyle($this->_cPtr,$index);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new styleObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction moveStyleUp($index) {\n\t\treturn labelObj_moveStyleUp($this->_cPtr,$index);\n\t}\n\n\tfunction moveStyleDown($index) {\n\t\treturn labelObj_moveStyleDown($this->_cPtr,$index);\n\t}\n}\n\nclass classObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'classObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'validation') return new hashTableObj(classObj_validation_get($this->_cPtr));\n\t\tif ($var === 'layer') return new layerObj(classObj_layer_get($this->_cPtr));\n\t\tif ($var === 'metadata') return new hashTableObj(classObj_metadata_get($this->_cPtr));\n\t\tif ($var === 'leader') return new labelLeaderObj(classObj_leader_get($this->_cPtr));\n\t\t$func = 'classObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('classObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($layer=null) {\n\t\tif (is_resource($layer) && get_resource_type($layer) === '_p_classObj') {\n\t\t\t$this->_cPtr=$layer;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_classObj($layer);\n\t}\n\n\tfunction updateFromString($snippet) {\n\t\treturn classObj_updateFromString($this->_cPtr,$snippet);\n\t}\n\n\tfunction convertToString() {\n\t\treturn classObj_convertToString($this->_cPtr);\n\t}\n\n\tfunction cloneClass() {\n\t\t$r=classObj_cloneClass($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new classObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction setExpression($expression) {\n\t\treturn classObj_setExpression($this->_cPtr,$expression);\n\t}\n\n\tfunction getExpressionString() {\n\t\treturn classObj_getExpressionString($this->_cPtr);\n\t}\n\n\tfunction setText($text) {\n\t\treturn classObj_setText($this->_cPtr,$text);\n\t}\n\n\tfunction getTextString() {\n\t\treturn classObj_getTextString($this->_cPtr);\n\t}\n\n\tfunction drawLegendIcon($map,$layer,$width,$height,$dstImage,$dstX,$dstY) {\n\t\treturn classObj_drawLegendIcon($this->_cPtr,$map,$layer,$width,$height,$dstImage,$dstX,$dstY);\n\t}\n\n\tfunction createLegendIcon($map,$layer,$width,$height) {\n\t\t$r=classObj_createLegendIcon($this->_cPtr,$map,$layer,$width,$height);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new imageObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction getLabel($i) {\n\t\t$r=classObj_getLabel($this->_cPtr,$i);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new labelObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction addLabel($label) {\n\t\treturn classObj_addLabel($this->_cPtr,$label);\n\t}\n\n\tfunction removeLabel($index) {\n\t\t$r=classObj_removeLabel($this->_cPtr,$index);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new labelObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction getStyle($i) {\n\t\t$r=classObj_getStyle($this->_cPtr,$i);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new styleObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction insertStyle($style,$index=-1) {\n\t\treturn classObj_insertStyle($this->_cPtr,$style,$index);\n\t}\n\n\tfunction removeStyle($index) {\n\t\t$r=classObj_removeStyle($this->_cPtr,$index);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new styleObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction moveStyleUp($index) {\n\t\treturn classObj_moveStyleUp($this->_cPtr,$index);\n\t}\n\n\tfunction moveStyleDown($index) {\n\t\treturn classObj_moveStyleDown($this->_cPtr,$index);\n\t}\n}\n\nclass labelCacheMemberObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'point') return new pointObj(labelCacheMemberObj_point_get($this->_cPtr));\n\t\tif ($var === 'leaderbbox') return new rectObj(labelCacheMemberObj_leaderbbox_get($this->_cPtr));\n\t\tif ($var === 'leaderline') return new lineObj(labelCacheMemberObj_leaderline_get($this->_cPtr));\n\t\tif ($var === 'bbox') return new rectObj(labelCacheMemberObj_bbox_get($this->_cPtr));\n\t\t$func = 'labelCacheMemberObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('labelCacheMemberObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_labelCacheMemberObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_labelCacheMemberObj();\n\t}\n}\n\nclass markerCacheMemberObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'bounds') return new rectObj(markerCacheMemberObj_bounds_get($this->_cPtr));\n\t\tif ($var === 'id') return markerCacheMemberObj_id_get($this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('markerCacheMemberObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_markerCacheMemberObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_markerCacheMemberObj();\n\t}\n}\n\nclass labelCacheSlotObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'labels') return new labelCacheMemberObj(labelCacheSlotObj_labels_get($this->_cPtr));\n\t\tif ($var === 'markers') return new markerCacheMemberObj(labelCacheSlotObj_markers_get($this->_cPtr));\n\t\t$func = 'labelCacheSlotObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('labelCacheSlotObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_labelCacheSlotObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_labelCacheSlotObj();\n\t}\n}\n\nclass labelCacheObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'num_rendered_members') return labelCacheObj_num_rendered_members_get($this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('labelCacheObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction freeCache() {\n\t\tlabelCacheObj_freeCache($this->_cPtr);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_labelCacheObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_labelCacheObj();\n\t}\n}\n\nclass resultObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\t$func = 'resultObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('resultObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($shapeindex) {\n\t\tif (is_resource($shapeindex) && get_resource_type($shapeindex) === '_p_resultObj') {\n\t\t\t$this->_cPtr=$shapeindex;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_resultObj($shapeindex);\n\t}\n}\n\nclass resultCacheObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'bounds') return new rectObj(resultCacheObj_bounds_get($this->_cPtr));\n\t\tif ($var === 'numresults') return resultCacheObj_numresults_get($this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('resultCacheObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction getResult($i) {\n\t\t$r=resultCacheObj_getResult($this->_cPtr,$i);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new resultObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_resultCacheObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_resultCacheObj();\n\t}\n}\n\nclass symbolSetObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'filename') return symbolSetObj_filename_set($this->_cPtr,$value);\n\t\tif ($var === 'imagecachesize') return symbolSetObj_imagecachesize_set($this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\t$func = 'symbolSetObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('symbolSetObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($symbolfile=null) {\n\t\tif (is_resource($symbolfile) && get_resource_type($symbolfile) === '_p_symbolSetObj') {\n\t\t\t$this->_cPtr=$symbolfile;\n\t\t\treturn;\n\t\t}\n\t\tswitch (func_num_args()) {\n\t\tcase 0: $this->_cPtr=new_symbolSetObj(); break;\n\t\tdefault: $this->_cPtr=new_symbolSetObj($symbolfile);\n\t\t}\n\t}\n\n\tfunction getSymbol($i) {\n\t\t$r=symbolSetObj_getSymbol($this->_cPtr,$i);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new symbolObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction getSymbolByName($symbolname) {\n\t\t$r=symbolSetObj_getSymbolByName($this->_cPtr,$symbolname);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new symbolObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction index($symbolname) {\n\t\treturn symbolSetObj_index($this->_cPtr,$symbolname);\n\t}\n\n\tfunction appendSymbol($symbol) {\n\t\treturn symbolSetObj_appendSymbol($this->_cPtr,$symbol);\n\t}\n\n\tfunction removeSymbol($index) {\n\t\t$r=symbolSetObj_removeSymbol($this->_cPtr,$index);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new symbolObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction save($filename) {\n\t\treturn symbolSetObj_save($this->_cPtr,$filename);\n\t}\n}\n\nclass referenceMapObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'referenceMapObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'extent') return new rectObj(referenceMapObj_extent_get($this->_cPtr));\n\t\tif ($var === 'color') return new colorObj(referenceMapObj_color_get($this->_cPtr));\n\t\tif ($var === 'map') return new mapObj(referenceMapObj_map_get($this->_cPtr));\n\t\tif ($var === 'outlinecolor') return new colorObj(referenceMapObj_outlinecolor_get($this->_cPtr));\n\t\t$func = 'referenceMapObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('referenceMapObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction updateFromString($snippet) {\n\t\treturn referenceMapObj_updateFromString($this->_cPtr,$snippet);\n\t}\n\n\tfunction convertToString() {\n\t\treturn referenceMapObj_convertToString($this->_cPtr);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_referenceMapObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_referenceMapObj();\n\t}\n}\n\nclass scalebarObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'scalebarObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'color') return new colorObj(scalebarObj_color_get($this->_cPtr));\n\t\tif ($var === 'backgroundcolor') return new colorObj(scalebarObj_backgroundcolor_get($this->_cPtr));\n\t\tif ($var === 'outlinecolor') return new colorObj(scalebarObj_outlinecolor_get($this->_cPtr));\n\t\tif ($var === 'label') return new labelObj(scalebarObj_label_get($this->_cPtr));\n\t\tif ($var === 'imagecolor') return new colorObj(scalebarObj_imagecolor_get($this->_cPtr));\n\t\t$func = 'scalebarObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('scalebarObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction updateFromString($snippet) {\n\t\treturn scalebarObj_updateFromString($this->_cPtr,$snippet);\n\t}\n\n\tfunction convertToString() {\n\t\treturn scalebarObj_convertToString($this->_cPtr);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_scalebarObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_scalebarObj();\n\t}\n}\n\nclass legendObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'legendObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'outlinecolor') return new colorObj(legendObj_outlinecolor_get($this->_cPtr));\n\t\tif ($var === 'label') return new labelObj(legendObj_label_get($this->_cPtr));\n\t\tif ($var === 'imagecolor') return new colorObj(legendObj_imagecolor_get($this->_cPtr));\n\t\tif ($var === 'map') return new mapObj(legendObj_map_get($this->_cPtr));\n\t\t$func = 'legendObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('legendObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction updateFromString($snippet) {\n\t\treturn legendObj_updateFromString($this->_cPtr,$snippet);\n\t}\n\n\tfunction convertToString() {\n\t\treturn legendObj_convertToString($this->_cPtr);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_legendObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_legendObj();\n\t}\n}\n\nclass imageObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'format') return new outputFormatObj(imageObj_format_get($this->_cPtr));\n\t\t$func = 'imageObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('imageObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($width,$height=null,$input_format=null,$file=null,$resolution=null,$defresolution=null) {\n\t\tif (is_resource($width) && get_resource_type($width) === '_p_imageObj') {\n\t\t\t$this->_cPtr=$width;\n\t\t\treturn;\n\t\t}\n\t\tswitch (func_num_args()) {\n\t\tcase 2: case 3: $this->_cPtr=new_imageObj($width,$height,$input_format); break;\n\t\tcase 4: $this->_cPtr=new_imageObj($width,$height,$input_format,$file); break;\n\t\tcase 5: $this->_cPtr=new_imageObj($width,$height,$input_format,$file,$resolution); break;\n\t\tdefault: $this->_cPtr=new_imageObj($width,$height,$input_format,$file,$resolution,$defresolution);\n\t\t}\n\t}\n\n\tfunction save($filename,$map=null) {\n\t\timageObj_save($this->_cPtr,$filename,$map);\n\t}\n\n\tfunction write($file=null) {\n\t\treturn imageObj_write($this->_cPtr,$file);\n\t}\n\n\tfunction getBytes() {\n\t\treturn imageObj_getBytes($this->_cPtr);\n\t}\n\n\tfunction getSize() {\n\t\treturn imageObj_getSize($this->_cPtr);\n\t}\n\n\tfunction pasteImage($imageSrc,$opacity=1.0,$dstx=0,$dsty=0) {\n\t\treturn imageObj_pasteImage($this->_cPtr,$imageSrc,$opacity,$dstx,$dsty);\n\t}\n\n\tfunction saveWebImage() {\n\t\treturn imageObj_saveWebImage($this->_cPtr);\n\t}\n}\n\nclass scaleTokenEntryObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'scaleTokenEntryObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\t$func = 'scaleTokenEntryObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('scaleTokenEntryObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_scaleTokenEntryObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_scaleTokenEntryObj();\n\t}\n}\n\nclass scaleTokenObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'scaleTokenObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'tokens') return new scaleTokenEntryObj(scaleTokenObj_tokens_get($this->_cPtr));\n\t\tif ($var === 'name') return scaleTokenObj_name_get($this->_cPtr);\n\t\tif ($var === 'n_entries') return scaleTokenObj_n_entries_get($this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('scaleTokenObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_scaleTokenObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_scaleTokenObj();\n\t}\n}\n\nclass layerObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'layerObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'compositer') return new LayerCompositer(layerObj_compositer_get($this->_cPtr));\n\t\tif ($var === 'cluster') return new clusterObj(layerObj_cluster_get($this->_cPtr));\n\t\tif ($var === 'bindvals') return new hashTableObj(layerObj_bindvals_get($this->_cPtr));\n\t\tif ($var === 'map') return new mapObj(layerObj_map_get($this->_cPtr));\n\t\tif ($var === 'connectionoptions') return new hashTableObj(layerObj_connectionoptions_get($this->_cPtr));\n\t\tif ($var === 'extent') return new rectObj(layerObj_extent_get($this->_cPtr));\n\t\tif ($var === 'validation') return new hashTableObj(layerObj_validation_get($this->_cPtr));\n\t\tif ($var === 'offsite') return new colorObj(layerObj_offsite_get($this->_cPtr));\n\t\tif ($var === 'metadata') return new hashTableObj(layerObj_metadata_get($this->_cPtr));\n\t\t$func = 'layerObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('layerObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($map=null) {\n\t\tif (is_resource($map) && get_resource_type($map) === '_p_layerObj') {\n\t\t\t$this->_cPtr=$map;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_layerObj($map);\n\t}\n\n\tfunction setOpacity($opacity) {\n\t\tlayerObj_setOpacity($this->_cPtr,$opacity);\n\t}\n\n\tfunction getOpacity() {\n\t\treturn layerObj_getOpacity($this->_cPtr);\n\t}\n\n\tfunction cloneLayer() {\n\t\t$r=layerObj_cloneLayer($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new layerObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction updateFromString($snippet) {\n\t\treturn layerObj_updateFromString($this->_cPtr,$snippet);\n\t}\n\n\tfunction convertToString() {\n\t\treturn layerObj_convertToString($this->_cPtr);\n\t}\n\n\tfunction insertClass($classobj,$index=-1) {\n\t\treturn layerObj_insertClass($this->_cPtr,$classobj,$index);\n\t}\n\n\tfunction removeClass($index) {\n\t\t$r=layerObj_removeClass($this->_cPtr,$index);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new classObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction open() {\n\t\treturn layerObj_open($this->_cPtr);\n\t}\n\n\tfunction whichShapes($rect) {\n\t\treturn layerObj_whichShapes($this->_cPtr,$rect);\n\t}\n\n\tfunction nextShape() {\n\t\t$r=layerObj_nextShape($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new shapeObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction close() {\n\t\tlayerObj_close($this->_cPtr);\n\t}\n\n\tfunction getShape($record) {\n\t\t$r=layerObj_getShape($this->_cPtr,$record);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new shapeObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction getNumResults() {\n\t\treturn layerObj_getNumResults($this->_cPtr);\n\t}\n\n\tfunction getResultsBounds() {\n\t\t$r=layerObj_getResultsBounds($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new rectObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction getResult($i) {\n\t\t$r=layerObj_getResult($this->_cPtr,$i);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new resultObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction getClass($i) {\n\t\t$r=layerObj_getClass($this->_cPtr,$i);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new classObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction getItem($i) {\n\t\treturn layerObj_getItem($this->_cPtr,$i);\n\t}\n\n\tfunction setItems($items,$numitems) {\n\t\treturn layerObj_setItems($this->_cPtr,$items,$numitems);\n\t}\n\n\tfunction draw($map,$image) {\n\t\treturn layerObj_draw($this->_cPtr,$map,$image);\n\t}\n\n\tfunction drawQuery($map,$image) {\n\t\treturn layerObj_drawQuery($this->_cPtr,$map,$image);\n\t}\n\n\tfunction queryByFilter($map,$string) {\n\t\treturn layerObj_queryByFilter($this->_cPtr,$map,$string);\n\t}\n\n\tfunction queryByAttributes($map,$qitem,$qstring,$mode) {\n\t\treturn layerObj_queryByAttributes($this->_cPtr,$map,$qitem,$qstring,$mode);\n\t}\n\n\tfunction queryByPoint($map,$point,$mode,$buffer) {\n\t\treturn layerObj_queryByPoint($this->_cPtr,$map,$point,$mode,$buffer);\n\t}\n\n\tfunction queryByRect($map,$rect) {\n\t\treturn layerObj_queryByRect($this->_cPtr,$map,$rect);\n\t}\n\n\tfunction queryByFeatures($map,$slayer) {\n\t\treturn layerObj_queryByFeatures($this->_cPtr,$map,$slayer);\n\t}\n\n\tfunction queryByShape($map,$shape) {\n\t\treturn layerObj_queryByShape($this->_cPtr,$map,$shape);\n\t}\n\n\tfunction queryByIndex($map,$tileindex,$shapeindex,$bAddToQuery=0) {\n\t\treturn layerObj_queryByIndex($this->_cPtr,$map,$tileindex,$shapeindex,$bAddToQuery);\n\t}\n\n\tfunction getResults() {\n\t\t$r=layerObj_getResults($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new resultCacheObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction setFilter($filter) {\n\t\treturn layerObj_setFilter($this->_cPtr,$filter);\n\t}\n\n\tfunction getFilterString() {\n\t\treturn layerObj_getFilterString($this->_cPtr);\n\t}\n\n\tfunction setWKTProjection($wkt) {\n\t\treturn layerObj_setWKTProjection($this->_cPtr,$wkt);\n\t}\n\n\tfunction getProjection() {\n\t\treturn layerObj_getProjection($this->_cPtr);\n\t}\n\n\tfunction setProjection($proj4) {\n\t\treturn layerObj_setProjection($this->_cPtr,$proj4);\n\t}\n\n\tfunction addFeature($shape) {\n\t\treturn layerObj_addFeature($this->_cPtr,$shape);\n\t}\n\n\tfunction getNumFeatures() {\n\t\treturn layerObj_getNumFeatures($this->_cPtr);\n\t}\n\n\tfunction getExtent() {\n\t\t$r=layerObj_getExtent($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new rectObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction setExtent($minx=-1.0,$miny=-1.0,$maxx=-1.0,$maxy=-1.0) {\n\t\treturn layerObj_setExtent($this->_cPtr,$minx,$miny,$maxx,$maxy);\n\t}\n\n\tfunction getWMSFeatureInfoURL($map,$click_x,$click_y,$feature_count,$info_format) {\n\t\treturn layerObj_getWMSFeatureInfoURL($this->_cPtr,$map,$click_x,$click_y,$feature_count,$info_format);\n\t}\n\n\tfunction executeWFSGetFeature() {\n\t\treturn layerObj_executeWFSGetFeature($this->_cPtr);\n\t}\n\n\tfunction applySLD($sld,$stylelayer) {\n\t\treturn layerObj_applySLD($this->_cPtr,$sld,$stylelayer);\n\t}\n\n\tfunction applySLDURL($sld,$stylelayer) {\n\t\treturn layerObj_applySLDURL($this->_cPtr,$sld,$stylelayer);\n\t}\n\n\tfunction generateSLD() {\n\t\treturn layerObj_generateSLD($this->_cPtr);\n\t}\n\n\tfunction isVisible() {\n\t\treturn layerObj_isVisible($this->_cPtr);\n\t}\n\n\tfunction moveClassUp($index) {\n\t\treturn layerObj_moveClassUp($this->_cPtr,$index);\n\t}\n\n\tfunction moveClassDown($index) {\n\t\treturn layerObj_moveClassDown($this->_cPtr,$index);\n\t}\n\n\tfunction setProcessingKey($key,$value) {\n\t\tlayerObj_setProcessingKey($this->_cPtr,$key,$value);\n\t}\n\n\tfunction addProcessing($directive) {\n\t\tlayerObj_addProcessing($this->_cPtr,$directive);\n\t}\n\n\tfunction getNumProcessing() {\n\t\treturn layerObj_getNumProcessing($this->_cPtr);\n\t}\n\n\tfunction getProcessing($index) {\n\t\treturn layerObj_getProcessing($this->_cPtr,$index);\n\t}\n\n\tfunction getProcessingKey($key) {\n\t\treturn layerObj_getProcessingKey($this->_cPtr,$key);\n\t}\n\n\tfunction clearProcessing() {\n\t\treturn layerObj_clearProcessing($this->_cPtr);\n\t}\n\n\tfunction setConnectionType($connectiontype,$library_str) {\n\t\treturn layerObj_setConnectionType($this->_cPtr,$connectiontype,$library_str);\n\t}\n\n\tfunction getClassIndex($map,$shape,$classgroup=null,$numclasses=0) {\n\t\treturn layerObj_getClassIndex($this->_cPtr,$map,$shape,$classgroup,$numclasses);\n\t}\n\n\tfunction getGeomTransform() {\n\t\treturn layerObj_getGeomTransform($this->_cPtr);\n\t}\n\n\tfunction setGeomTransform($transform) {\n\t\tlayerObj_setGeomTransform($this->_cPtr,$transform);\n\t}\n\n\tfunction getItemType($i) {\n\t\treturn layerObj_getItemType($this->_cPtr,$i);\n\t}\n}\n\nclass mapObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'mapObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'imagecolor') return new colorObj(mapObj_imagecolor_get($this->_cPtr));\n\t\tif ($var === 'outputformat') return new outputFormatObj(mapObj_outputformat_get($this->_cPtr));\n\t\tif ($var === 'reference') return new referenceMapObj(mapObj_reference_get($this->_cPtr));\n\t\tif ($var === 'querymap') return new queryMapObj(mapObj_querymap_get($this->_cPtr));\n\t\tif ($var === 'web') return new webObj(mapObj_web_get($this->_cPtr));\n\t\tif ($var === 'symbolset') return new symbolSetObj(mapObj_symbolset_get($this->_cPtr));\n\t\tif ($var === 'configoptions') return new hashTableObj(mapObj_configoptions_get($this->_cPtr));\n\t\tif ($var === 'labelcache') return new labelCacheObj(mapObj_labelcache_get($this->_cPtr));\n\t\tif ($var === 'extent') return new rectObj(mapObj_extent_get($this->_cPtr));\n\t\tif ($var === 'config') return new configObj(mapObj_config_get($this->_cPtr));\n\t\tif ($var === 'fontset') return new fontSetObj(mapObj_fontset_get($this->_cPtr));\n\t\tif ($var === 'scalebar') return new scalebarObj(mapObj_scalebar_get($this->_cPtr));\n\t\tif ($var === 'legend') return new legendObj(mapObj_legend_get($this->_cPtr));\n\t\t$func = 'mapObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('mapObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($filename=\"\",$config=null) {\n\t\tif (is_resource($filename) && get_resource_type($filename) === '_p_mapObj') {\n\t\t\t$this->_cPtr=$filename;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_mapObj($filename,$config);\n\t}\n\n\tfunction cloneMap() {\n\t\t$r=mapObj_cloneMap($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new mapObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction insertLayer($layer,$index=-1) {\n\t\treturn mapObj_insertLayer($this->_cPtr,$layer,$index);\n\t}\n\n\tfunction removeLayer($index) {\n\t\t$r=mapObj_removeLayer($this->_cPtr,$index);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new layerObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction setExtent($minx,$miny,$maxx,$maxy) {\n\t\treturn mapObj_setExtent($this->_cPtr,$minx,$miny,$maxx,$maxy);\n\t}\n\n\tfunction offsetExtent($x,$y) {\n\t\treturn mapObj_offsetExtent($this->_cPtr,$x,$y);\n\t}\n\n\tfunction scaleExtent($zoomfactor,$minscaledenom,$maxscaledenom) {\n\t\treturn mapObj_scaleExtent($this->_cPtr,$zoomfactor,$minscaledenom,$maxscaledenom);\n\t}\n\n\tfunction setCenter($center) {\n\t\treturn mapObj_setCenter($this->_cPtr,$center);\n\t}\n\n\tfunction setSize($width,$height) {\n\t\treturn mapObj_setSize($this->_cPtr,$width,$height);\n\t}\n\n\tfunction pixelToGeoref($pixPosX,$pixPosY,$geoPos) {\n\t\tmapObj_pixelToGeoref($this->_cPtr,$pixPosX,$pixPosY,$geoPos);\n\t}\n\n\tfunction getRotation() {\n\t\treturn mapObj_getRotation($this->_cPtr);\n\t}\n\n\tfunction setRotation($rotation_angle) {\n\t\treturn mapObj_setRotation($this->_cPtr,$rotation_angle);\n\t}\n\n\tfunction getLayer($i) {\n\t\t$r=mapObj_getLayer($this->_cPtr,$i);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new layerObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction getLayerByName($name) {\n\t\t$r=mapObj_getLayerByName($this->_cPtr,$name);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new layerObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction getSymbolByName($name) {\n\t\treturn mapObj_getSymbolByName($this->_cPtr,$name);\n\t}\n\n\tfunction prepareQuery() {\n\t\tmapObj_prepareQuery($this->_cPtr);\n\t}\n\n\tfunction prepareImage() {\n\t\t$r=mapObj_prepareImage($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new imageObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction setImageType($imagetype) {\n\t\tmapObj_setImageType($this->_cPtr,$imagetype);\n\t}\n\n\tfunction selectOutputFormat($imagetype) {\n\t\tmapObj_selectOutputFormat($this->_cPtr,$imagetype);\n\t}\n\n\tfunction getOutputFormat($i) {\n\t\t$r=mapObj_getOutputFormat($this->_cPtr,$i);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new outputFormatObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction setOutputFormat($format) {\n\t\tmapObj_setOutputFormat($this->_cPtr,$format);\n\t}\n\n\tfunction draw() {\n\t\t$r=mapObj_draw($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new imageObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction drawQuery() {\n\t\t$r=mapObj_drawQuery($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new imageObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction drawLegend($scale_independent=0) {\n\t\t$r=mapObj_drawLegend($this->_cPtr,$scale_independent);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new imageObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction drawScalebar() {\n\t\t$r=mapObj_drawScalebar($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new imageObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction drawReferenceMap() {\n\t\t$r=mapObj_drawReferenceMap($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new imageObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction embedScalebar($image) {\n\t\treturn mapObj_embedScalebar($this->_cPtr,$image);\n\t}\n\n\tfunction embedLegend($image) {\n\t\treturn mapObj_embedLegend($this->_cPtr,$image);\n\t}\n\n\tfunction drawLabelCache($image) {\n\t\treturn mapObj_drawLabelCache($this->_cPtr,$image);\n\t}\n\n\tfunction queryByFilter($string) {\n\t\treturn mapObj_queryByFilter($this->_cPtr,$string);\n\t}\n\n\tfunction queryByPoint($point,$mode,$buffer) {\n\t\treturn mapObj_queryByPoint($this->_cPtr,$point,$mode,$buffer);\n\t}\n\n\tfunction queryByRect($rect) {\n\t\treturn mapObj_queryByRect($this->_cPtr,$rect);\n\t}\n\n\tfunction queryByFeatures($slayer) {\n\t\treturn mapObj_queryByFeatures($this->_cPtr,$slayer);\n\t}\n\n\tfunction queryByShape($shape) {\n\t\treturn mapObj_queryByShape($this->_cPtr,$shape);\n\t}\n\n\tfunction setWKTProjection($wkt) {\n\t\treturn mapObj_setWKTProjection($this->_cPtr,$wkt);\n\t}\n\n\tfunction getProjection() {\n\t\treturn mapObj_getProjection($this->_cPtr);\n\t}\n\n\tfunction setProjection($proj4) {\n\t\treturn mapObj_setProjection($this->_cPtr,$proj4);\n\t}\n\n\tfunction save($filename) {\n\t\treturn mapObj_save($this->_cPtr,$filename);\n\t}\n\n\tfunction saveQuery($filename,$results=0) {\n\t\treturn mapObj_saveQuery($this->_cPtr,$filename,$results);\n\t}\n\n\tfunction loadQuery($filename) {\n\t\treturn mapObj_loadQuery($this->_cPtr,$filename);\n\t}\n\n\tfunction freeQuery($qlayer=-1) {\n\t\tmapObj_freeQuery($this->_cPtr,$qlayer);\n\t}\n\n\tfunction saveQueryAsGML($filename,$ns=\"GOMF\") {\n\t\treturn mapObj_saveQueryAsGML($this->_cPtr,$filename,$ns);\n\t}\n\n\tfunction setSymbolSet($szFileName) {\n\t\treturn mapObj_setSymbolSet($this->_cPtr,$szFileName);\n\t}\n\n\tfunction getNumSymbols() {\n\t\treturn mapObj_getNumSymbols($this->_cPtr);\n\t}\n\n\tfunction setFontSet($filename) {\n\t\treturn mapObj_setFontSet($this->_cPtr,$filename);\n\t}\n\n\tfunction saveMapContext($szFileName) {\n\t\treturn mapObj_saveMapContext($this->_cPtr,$szFileName);\n\t}\n\n\tfunction loadMapContext($szFileName,$useUniqueNames=0) {\n\t\treturn mapObj_loadMapContext($this->_cPtr,$szFileName,$useUniqueNames);\n\t}\n\n\tfunction moveLayerUp($layerindex) {\n\t\treturn mapObj_moveLayerUp($this->_cPtr,$layerindex);\n\t}\n\n\tfunction moveLayerDown($layerindex) {\n\t\treturn mapObj_moveLayerDown($this->_cPtr,$layerindex);\n\t}\n\n\tfunction getLayersDrawingOrder() {\n\t\t$r=mapObj_getLayersDrawingOrder($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new intarray($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction setLayersDrawingOrder($panIndexes) {\n\t\treturn mapObj_setLayersDrawingOrder($this->_cPtr,$panIndexes);\n\t}\n\n\tfunction setConfigOption($key,$value) {\n\t\tmapObj_setConfigOption($this->_cPtr,$key,$value);\n\t}\n\n\tfunction getConfigOption($key) {\n\t\treturn mapObj_getConfigOption($this->_cPtr,$key);\n\t}\n\n\tfunction applyConfigOptions() {\n\t\tmapObj_applyConfigOptions($this->_cPtr);\n\t}\n\n\tfunction applySLD($sld) {\n\t\treturn mapObj_applySLD($this->_cPtr,$sld);\n\t}\n\n\tfunction applySLDURL($sld) {\n\t\treturn mapObj_applySLDURL($this->_cPtr,$sld);\n\t}\n\n\tfunction generateSLD($sldVersion=null) {\n\t\tswitch (func_num_args()) {\n\t\tcase 0: $r=mapObj_generateSLD($this->_cPtr); break;\n\t\tdefault: $r=mapObj_generateSLD($this->_cPtr,$sldVersion);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction processTemplate($bGenerateImages,$names,$values,$numentries) {\n\t\treturn mapObj_processTemplate($this->_cPtr,$bGenerateImages,$names,$values,$numentries);\n\t}\n\n\tfunction processLegendTemplate($names,$values,$numentries) {\n\t\treturn mapObj_processLegendTemplate($this->_cPtr,$names,$values,$numentries);\n\t}\n\n\tfunction processQueryTemplate($names,$values,$numentries) {\n\t\treturn mapObj_processQueryTemplate($this->_cPtr,$names,$values,$numentries);\n\t}\n\n\tfunction getOutputFormatByName($name) {\n\t\t$r=mapObj_getOutputFormatByName($this->_cPtr,$name);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new outputFormatObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction appendOutputFormat($format) {\n\t\treturn mapObj_appendOutputFormat($this->_cPtr,$format);\n\t}\n\n\tfunction removeOutputFormat($name) {\n\t\treturn mapObj_removeOutputFormat($this->_cPtr,$name);\n\t}\n\n\tfunction loadOWSParameters($request,$wmtver_string=\"1.1.1\") {\n\t\treturn mapObj_loadOWSParameters($this->_cPtr,$request,$wmtver_string);\n\t}\n\n\tfunction OWSDispatch($req) {\n\t\treturn mapObj_OWSDispatch($this->_cPtr,$req);\n\t}\n\n\tfunction convertToString() {\n\t\treturn mapObj_convertToString($this->_cPtr);\n\t}\n\n\tfunction applyDefaultSubstitutions() {\n\t\tmapObj_applyDefaultSubstitutions($this->_cPtr);\n\t}\n\n\tfunction applySubstitutions($names,$values,$npairs) {\n\t\tmapObj_applySubstitutions($this->_cPtr,$names,$values,$npairs);\n\t}\n\n\tfunction zoomPoint($zoomfactor,$poPixPos,$width,$height,$poGeorefExt,$poMaxGeorefExt) {\n\t\treturn mapObj_zoomPoint($this->_cPtr,$zoomfactor,$poPixPos,$width,$height,$poGeorefExt,$poMaxGeorefExt);\n\t}\n\n\tfunction zoomRectangle($poPixRect,$width,$height,$poGeorefExt,$poMaxGeorefExt) {\n\t\treturn mapObj_zoomRectangle($this->_cPtr,$poPixRect,$width,$height,$poGeorefExt,$poMaxGeorefExt);\n\t}\n\n\tfunction zoomScale($scale,$poPixPos,$width,$height,$poGeorefExt,$poMaxGeorefExt) {\n\t\treturn mapObj_zoomScale($this->_cPtr,$scale,$poPixPos,$width,$height,$poGeorefExt,$poMaxGeorefExt);\n\t}\n}\n\nclass rectObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'rectObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\t$func = 'rectObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('rectObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($minx=-1.0,$miny=-1.0,$maxx=-1.0,$maxy=-1.0,$imageunits=0) {\n\t\tif (is_resource($minx) && get_resource_type($minx) === '_p_rectObj') {\n\t\t\t$this->_cPtr=$minx;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_rectObj($minx,$miny,$maxx,$maxy,$imageunits);\n\t}\n\n\tfunction project($projin_or_reprojector,$projout=null) {\n\t\tswitch (func_num_args()) {\n\t\tcase 1: $r=rectObj_project($this->_cPtr,$projin_or_reprojector); break;\n\t\tdefault: $r=rectObj_project($this->_cPtr,$projin_or_reprojector,$projout);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction fit($width,$height) {\n\t\treturn rectObj_fit($this->_cPtr,$width,$height);\n\t}\n\n\tfunction draw($map,$layer,$image,$classindex,$text) {\n\t\treturn rectObj_draw($this->_cPtr,$map,$layer,$image,$classindex,$text);\n\t}\n\n\tfunction getCenter() {\n\t\t$r=rectObj_getCenter($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new pointObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction toPolygon() {\n\t\t$r=rectObj_toPolygon($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new shapeObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction toString() {\n\t\treturn rectObj_toString($this->_cPtr);\n\t}\n}\n\nclass pointObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'pointObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\t$func = 'pointObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('pointObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($x=0.0,$y=0.0,$z=0.0,$m=null) {\n\t\tif (is_resource($x) && get_resource_type($x) === '_p_pointObj') {\n\t\t\t$this->_cPtr=$x;\n\t\t\treturn;\n\t\t}\n\t\tswitch (func_num_args()) {\n\t\tcase 0: case 1: case 2: case 3: $this->_cPtr=new_pointObj($x,$y,$z); break;\n\t\tdefault: $this->_cPtr=new_pointObj($x,$y,$z,$m);\n\t\t}\n\t}\n\n\tfunction project($projin_or_reprojector,$projout=null) {\n\t\tswitch (func_num_args()) {\n\t\tcase 1: $r=pointObj_project($this->_cPtr,$projin_or_reprojector); break;\n\t\tdefault: $r=pointObj_project($this->_cPtr,$projin_or_reprojector,$projout);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction draw($map,$layer,$image,$classindex,$text) {\n\t\treturn pointObj_draw($this->_cPtr,$map,$layer,$image,$classindex,$text);\n\t}\n\n\tfunction distanceToPoint($point) {\n\t\treturn pointObj_distanceToPoint($this->_cPtr,$point);\n\t}\n\n\tfunction distanceToSegment($a,$b) {\n\t\treturn pointObj_distanceToSegment($this->_cPtr,$a,$b);\n\t}\n\n\tfunction distanceToShape($shape) {\n\t\treturn pointObj_distanceToShape($this->_cPtr,$shape);\n\t}\n\n\tfunction setXY($x,$y,$m=null) {\n\t\tswitch (func_num_args()) {\n\t\tcase 2: $r=pointObj_setXY($this->_cPtr,$x,$y); break;\n\t\tdefault: $r=pointObj_setXY($this->_cPtr,$x,$y,$m);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction setXYZ($x,$y,$z,$m=null) {\n\t\tswitch (func_num_args()) {\n\t\tcase 3: $r=pointObj_setXYZ($this->_cPtr,$x,$y,$z); break;\n\t\tdefault: $r=pointObj_setXYZ($this->_cPtr,$x,$y,$z,$m);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction setXYZM($x,$y,$z,$m) {\n\t\treturn pointObj_setXYZM($this->_cPtr,$x,$y,$z,$m);\n\t}\n\n\tfunction toString() {\n\t\treturn pointObj_toString($this->_cPtr);\n\t}\n\n\tfunction toShape() {\n\t\t$r=pointObj_toShape($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new shapeObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n}\n\nclass lineObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'numpoints') return lineObj_numpoints_get($this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('lineObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_lineObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_lineObj();\n\t}\n\n\tfunction project($projin_or_reprojector,$projout=null) {\n\t\tswitch (func_num_args()) {\n\t\tcase 1: $r=lineObj_project($this->_cPtr,$projin_or_reprojector); break;\n\t\tdefault: $r=lineObj_project($this->_cPtr,$projin_or_reprojector,$projout);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction get($i) {\n\t\t$r=lineObj_get($this->_cPtr,$i);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new pointObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction add($p) {\n\t\treturn lineObj_add($this->_cPtr,$p);\n\t}\n\n\tfunction set($i,$p) {\n\t\treturn lineObj_set($this->_cPtr,$i,$p);\n\t}\n}\n\nclass shapeObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'shapeObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'bounds') return new rectObj(shapeObj_bounds_get($this->_cPtr));\n\t\t$func = 'shapeObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('shapeObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($type=null) {\n\t\tif (is_resource($type) && get_resource_type($type) === '_p_shapeObj') {\n\t\t\t$this->_cPtr=$type;\n\t\t\treturn;\n\t\t}\n\t\tswitch (func_num_args()) {\n\t\tcase 0: $this->_cPtr=new_shapeObj(); break;\n\t\tdefault: $this->_cPtr=new_shapeObj($type);\n\t\t}\n\t}\n\n\tstatic function fromWKT($wkt) {\n\t\t$r=shapeObj_fromWKT($wkt);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new shapeObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction project($projin_or_reprojector,$projout=null) {\n\t\tswitch (func_num_args()) {\n\t\tcase 1: $r=shapeObj_project($this->_cPtr,$projin_or_reprojector); break;\n\t\tdefault: $r=shapeObj_project($this->_cPtr,$projin_or_reprojector,$projout);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction get($i) {\n\t\t$r=shapeObj_get($this->_cPtr,$i);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new lineObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction add($line) {\n\t\treturn shapeObj_add($this->_cPtr,$line);\n\t}\n\n\tfunction draw($map,$layer,$image) {\n\t\treturn shapeObj_draw($this->_cPtr,$map,$layer,$image);\n\t}\n\n\tfunction setBounds() {\n\t\tshapeObj_setBounds($this->_cPtr);\n\t}\n\n\tfunction cloneShape() {\n\t\t$r=shapeObj_cloneShape($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new shapeObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction copy($dest) {\n\t\treturn shapeObj_copy($this->_cPtr,$dest);\n\t}\n\n\tfunction toWKT() {\n\t\treturn shapeObj_toWKT($this->_cPtr);\n\t}\n\n\tfunction buffer($width) {\n\t\t$r=shapeObj_buffer($this->_cPtr,$width);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new shapeObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction simplify($tolerance) {\n\t\t$r=shapeObj_simplify($this->_cPtr,$tolerance);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new shapeObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction topologyPreservingSimplify($tolerance) {\n\t\t$r=shapeObj_topologyPreservingSimplify($this->_cPtr,$tolerance);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new shapeObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction convexHull() {\n\t\t$r=shapeObj_convexHull($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new shapeObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction boundary() {\n\t\t$r=shapeObj_boundary($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new shapeObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction getCentroid() {\n\t\t$r=shapeObj_getCentroid($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new pointObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction Union($shape) {\n\t\t$r=shapeObj_Union($this->_cPtr,$shape);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new shapeObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction intersection($shape) {\n\t\t$r=shapeObj_intersection($this->_cPtr,$shape);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new shapeObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction difference($shape) {\n\t\t$r=shapeObj_difference($this->_cPtr,$shape);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new shapeObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction symDifference($shape) {\n\t\t$r=shapeObj_symDifference($this->_cPtr,$shape);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new shapeObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction overlaps($shape) {\n\t\treturn shapeObj_overlaps($this->_cPtr,$shape);\n\t}\n\n\tfunction within($shape) {\n\t\treturn shapeObj_within($this->_cPtr,$shape);\n\t}\n\n\tfunction crosses($shape) {\n\t\treturn shapeObj_crosses($this->_cPtr,$shape);\n\t}\n\n\tfunction intersects($shape) {\n\t\treturn shapeObj_intersects($this->_cPtr,$shape);\n\t}\n\n\tfunction touches($shape) {\n\t\treturn shapeObj_touches($this->_cPtr,$shape);\n\t}\n\n\tfunction equals($shape) {\n\t\treturn shapeObj_equals($this->_cPtr,$shape);\n\t}\n\n\tfunction disjoint($shape) {\n\t\treturn shapeObj_disjoint($this->_cPtr,$shape);\n\t}\n\n\tfunction getArea() {\n\t\treturn shapeObj_getArea($this->_cPtr);\n\t}\n\n\tfunction getLength() {\n\t\treturn shapeObj_getLength($this->_cPtr);\n\t}\n\n\tfunction getValue($i) {\n\t\treturn shapeObj_getValue($this->_cPtr,$i);\n\t}\n\n\tfunction contains($shape_or_point) {\n\t\treturn shapeObj_contains($this->_cPtr,$shape_or_point);\n\t}\n\n\tfunction distanceToPoint($point) {\n\t\treturn shapeObj_distanceToPoint($this->_cPtr,$point);\n\t}\n\n\tfunction distanceToShape($shape) {\n\t\treturn shapeObj_distanceToShape($this->_cPtr,$shape);\n\t}\n\n\tfunction getLabelPoint() {\n\t\t$r=shapeObj_getLabelPoint($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new pointObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction setValue($i,$value) {\n\t\treturn shapeObj_setValue($this->_cPtr,$i,$value);\n\t}\n\n\tfunction initValues($numvalues) {\n\t\tshapeObj_initValues($this->_cPtr,$numvalues);\n\t}\n}\n\nclass errorObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'errorObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\t$func = 'errorObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('errorObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_errorObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_errorObj();\n\t}\n\n\tfunction next() {\n\t\t$r=errorObj_next($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new errorObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n}\n\nclass DBFInfo {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'nRecords') return DBFInfo_nRecords_get($this->_cPtr);\n\t\tif ($var === 'nFields') return DBFInfo_nFields_get($this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('DBFInfo_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction getFieldName($iField) {\n\t\treturn DBFInfo_getFieldName($this->_cPtr,$iField);\n\t}\n\n\tfunction getFieldWidth($iField) {\n\t\treturn DBFInfo_getFieldWidth($this->_cPtr,$iField);\n\t}\n\n\tfunction getFieldDecimals($iField) {\n\t\treturn DBFInfo_getFieldDecimals($this->_cPtr,$iField);\n\t}\n\n\tfunction getFieldType($iField) {\n\t\treturn DBFInfo_getFieldType($this->_cPtr,$iField);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_DBFInfo') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_DBFInfo();\n\t}\n}\n\nclass shapefileObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'bounds') return new rectObj(shapefileObj_bounds_get($this->_cPtr));\n\t\tif ($var === 'type') return shapefileObj_type_get($this->_cPtr);\n\t\tif ($var === 'numshapes') return shapefileObj_numshapes_get($this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('shapefileObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($filename,$type=-1) {\n\t\tif (is_resource($filename) && get_resource_type($filename) === '_p_shapefileObj') {\n\t\t\t$this->_cPtr=$filename;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_shapefileObj($filename,$type);\n\t}\n\n\tfunction get($i,$shape) {\n\t\treturn shapefileObj_get($this->_cPtr,$i,$shape);\n\t}\n\n\tfunction getShape($i) {\n\t\t$r=shapefileObj_getShape($this->_cPtr,$i);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new shapeObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction getPoint($i,$point) {\n\t\treturn shapefileObj_getPoint($this->_cPtr,$i,$point);\n\t}\n\n\tfunction getTransformed($map,$i,$shape) {\n\t\treturn shapefileObj_getTransformed($this->_cPtr,$map,$i,$shape);\n\t}\n\n\tfunction getExtent($i,$rect) {\n\t\tshapefileObj_getExtent($this->_cPtr,$i,$rect);\n\t}\n\n\tfunction add($shape) {\n\t\treturn shapefileObj_add($this->_cPtr,$shape);\n\t}\n\n\tfunction addPoint($point) {\n\t\treturn shapefileObj_addPoint($this->_cPtr,$point);\n\t}\n\n\tfunction getDBF() {\n\t\t$r=shapefileObj_getDBF($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new DBFInfo($r);\n\t\t}\n\t\treturn $r;\n\t}\n}\n\nclass projectionObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'wellknownprojection') return projectionObj_wellknownprojection_set($this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\t$func = 'projectionObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('projectionObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($proj4) {\n\t\tif (is_resource($proj4) && get_resource_type($proj4) === '_p_projectionObj') {\n\t\t\t$this->_cPtr=$proj4;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_projectionObj($proj4);\n\t}\n\n\tfunction setWKTProjection($wkt) {\n\t\treturn projectionObj_setWKTProjection($this->_cPtr,$wkt);\n\t}\n\n\tfunction getUnits() {\n\t\treturn projectionObj_getUnits($this->_cPtr);\n\t}\n}\n\nclass reprojectionObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'generation_number_in') return reprojectionObj_generation_number_in_set($this->_cPtr,$value);\n\t\tif ($var === 'generation_number_out') return reprojectionObj_generation_number_out_set($this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'generation_number_in') return reprojectionObj_generation_number_in_get($this->_cPtr);\n\t\tif ($var === 'generation_number_out') return reprojectionObj_generation_number_out_get($this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('reprojectionObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($in,$out=null) {\n\t\tif (is_resource($in) && get_resource_type($in) === '_p_reprojectionObj') {\n\t\t\t$this->_cPtr=$in;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_reprojectionObj($in,$out);\n\t}\n}\n\nclass colorObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'colorObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\t$func = 'colorObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('colorObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($red=0,$green=0,$blue=0,$alpha=255) {\n\t\tif (is_resource($red) && get_resource_type($red) === '_p_colorObj') {\n\t\t\t$this->_cPtr=$red;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_colorObj($red,$green,$blue,$alpha);\n\t}\n\n\tfunction setRGB($red,$green,$blue,$alpha=255) {\n\t\treturn colorObj_setRGB($this->_cPtr,$red,$green,$blue,$alpha);\n\t}\n\n\tfunction setHex($psHexColor) {\n\t\treturn colorObj_setHex($this->_cPtr,$psHexColor);\n\t}\n\n\tfunction toHex() {\n\t\treturn colorObj_toHex($this->_cPtr);\n\t}\n}\n\nclass symbolObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'symbolObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\t$func = 'symbolObj_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('symbolObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($symbolname,$imagefile=null) {\n\t\tif (is_resource($symbolname) && get_resource_type($symbolname) === '_p_symbolObj') {\n\t\t\t$this->_cPtr=$symbolname;\n\t\t\treturn;\n\t\t}\n\t\tswitch (func_num_args()) {\n\t\tcase 1: $this->_cPtr=new_symbolObj($symbolname); break;\n\t\tdefault: $this->_cPtr=new_symbolObj($symbolname,$imagefile);\n\t\t}\n\t}\n\n\tfunction setImagepath($imagefile) {\n\t\treturn symbolObj_setImagepath($this->_cPtr,$imagefile);\n\t}\n\n\tfunction setPoints($line) {\n\t\treturn symbolObj_setPoints($this->_cPtr,$line);\n\t}\n\n\tfunction getPoints() {\n\t\t$r=symbolObj_getPoints($this->_cPtr);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new lineObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction getImage($input_format) {\n\t\t$r=symbolObj_getImage($this->_cPtr,$input_format);\n\t\tif (is_resource($r)) {\n\t\t\t$c=substr(get_resource_type($r), (strpos(get_resource_type($r), '__') ? strpos(get_resource_type($r), '__') + 2 : 3));\n\t\t\tif (class_exists($c)) return new $c($r);\n\t\t\treturn new imageObj($r);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction setImage($image) {\n\t\treturn symbolObj_setImage($this->_cPtr,$image);\n\t}\n}\n\nclass hashTableObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'numitems') return hashTableObj_numitems_get($this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('hashTableObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_hashTableObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_hashTableObj();\n\t}\n\n\tfunction set($key,$value) {\n\t\treturn hashTableObj_set($this->_cPtr,$key,$value);\n\t}\n\n\tfunction get($key,$default_value=null) {\n\t\tswitch (func_num_args()) {\n\t\tcase 1: $r=hashTableObj_get($this->_cPtr,$key); break;\n\t\tdefault: $r=hashTableObj_get($this->_cPtr,$key,$default_value);\n\t\t}\n\t\treturn $r;\n\t}\n\n\tfunction remove($key) {\n\t\treturn hashTableObj_remove($this->_cPtr,$key);\n\t}\n\n\tfunction clear() {\n\t\thashTableObj_clear($this->_cPtr);\n\t}\n\n\tfunction nextKey($prevkey=null) {\n\t\tswitch (func_num_args()) {\n\t\tcase 0: $r=hashTableObj_nextKey($this->_cPtr); break;\n\t\tdefault: $r=hashTableObj_nextKey($this->_cPtr,$prevkey);\n\t\t}\n\t\treturn $r;\n\t}\n}\n\nclass configObj {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'configObj_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\tif ($var === 'plugins') return new hashTableObj(configObj_plugins_get($this->_cPtr));\n\t\tif ($var === 'env') return new hashTableObj(configObj_env_get($this->_cPtr));\n\t\tif ($var === 'maps') return new hashTableObj(configObj_maps_get($this->_cPtr));\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('configObj_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($filename=null) {\n\t\tif (is_resource($filename) && get_resource_type($filename) === '_p_configObj') {\n\t\t\t$this->_cPtr=$filename;\n\t\t\treturn;\n\t\t}\n\t\tswitch (func_num_args()) {\n\t\tcase 0: $this->_cPtr=new_configObj(); break;\n\t\tdefault: $this->_cPtr=new_configObj($filename);\n\t\t}\n\t}\n}\n\nclass OWSRequest {\n\tpublic $_cPtr=null;\n\tprotected $_pData=array();\n\n\tfunction __set($var,$value) {\n\t\t$func = 'OWSRequest_'.$var.'_set';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr,$value);\n\t\tif ($var === 'thisown') return swig_mapscript_alter_newobject($this->_cPtr,$value);\n\t\t$this->_pData[$var] = $value;\n\t}\n\n\tfunction __get($var) {\n\t\t$func = 'OWSRequest_'.$var.'_get';\n\t\tif (function_exists($func)) return call_user_func($func,$this->_cPtr);\n\t\tif ($var === 'thisown') return swig_mapscript_get_newobject($this->_cPtr);\n\t\treturn $this->_pData[$var];\n\t}\n\n\tfunction __isset($var) {\n\t\tif (function_exists('OWSRequest_'.$var.'_get')) return true;\n\t\tif ($var === 'thisown') return true;\n\t\treturn array_key_exists($var, $this->_pData);\n\t}\n\n\tfunction __construct($res=null) {\n\t\tif (is_resource($res) && get_resource_type($res) === '_p_cgiRequestObj') {\n\t\t\t$this->_cPtr=$res;\n\t\t\treturn;\n\t\t}\n\t\t$this->_cPtr=new_OWSRequest();\n\t}\n\n\tfunction loadParams() {\n\t\treturn OWSRequest_loadParams($this->_cPtr);\n\t}\n\n\tfunction loadParamsFromURL($url) {\n\t\treturn OWSRequest_loadParamsFromURL($this->_cPtr,$url);\n\t}\n\n\tfunction loadParamsFromPost($postData,$url) {\n\t\treturn OWSRequest_loadParamsFromPost($this->_cPtr,$postData,$url);\n\t}\n\n\tfunction setParameter($name,$value) {\n\t\tOWSRequest_setParameter($this->_cPtr,$name,$value);\n\t}\n\n\tfunction addParameter($name,$value) {\n\t\tOWSRequest_addParameter($this->_cPtr,$name,$value);\n\t}\n\n\tfunction getName($index) {\n\t\treturn OWSRequest_getName($this->_cPtr,$index);\n\t}\n\n\tfunction getValue($index) {\n\t\treturn OWSRequest_getValue($this->_cPtr,$index);\n\t}\n\n\tfunction getValueByName($name) {\n\t\treturn OWSRequest_getValueByName($this->_cPtr,$name);\n\t}\n}\n\n\n"
  },
  {
    "path": "include/warnings_plot.php",
    "content": "<?php\n/*\n * My logic defines a URL\n */\n$url = \"/GIS/radmap.php?\";\n\n/* Set us ahead to GMT and then back into the archive */\n$ts = $basets + $tzoff - ($imgi * 60 * $interval);\n$url .= sprintf(\n    \"ts=%s&width=%s&height=%s&tz=%s&\",\n    date(\"YmdHi\", $ts),\n    $width,\n    $height,\n    $tz\n);\n\nif (isset($x0)) {\n    $url .= sprintf(\"bbox=%.3f,%.3f,%.3f,%.3f&\", $x0, $y0, $x1, $y1);\n} else {\n    $lpad = $zoom / 100.0;\n    $url .= sprintf(\n        \"bbox=%.3f,%.3f,%.3f,%.3f&\",\n        $lon0 - $lpad,\n        $lat0 - $lpad,\n        $lon0 + $lpad,\n        $lat0 + $lpad\n    );\n    $x0 = $lon0 - $lpad;\n    $y0 = $lat0 - $lpad;\n    $x1 = $lon0 + $lpad;\n    $y1 = $lat0 + $lpad;\n}\nif (in_array(\"goes_vis\", $layers)) {\n    $url .= \"layers[]=goes&goes_product=VIS&\";\n}\nif (in_array(\"goes_wv\", $layers)) {\n    $url .= \"layers[]=goes&goes_product=WV&\";\n}\nif (in_array(\"goes_ir\", $layers)) {\n    $url .= \"layers[]=goes&goes_product=IR&\";\n}\n\nif (in_array(\"goes_east1V\", $layers)) {\n    $url .= \"layers[]=goes&goes_product=VIS&\";\n}\nif (in_array(\"goes_west1V\", $layers)) {\n    $url .= \"layers[]=goes&goes_product=VIS&\";\n}\n\nif (in_array(\"goes_west04I4\", $layers)) {\n    $url .= \"layers[]=goes&goes_product=IR&\";\n}\nif (in_array(\"goes_east04I4\", $layers)) {\n    $url .= \"layers[]=goes&goes_product=IR&\";\n}\n\nif (in_array(\"interstates\", $layers)) {\n    $url .= \"layers[]=interstates&\";\n}\nif (in_array(\"usdm\", $layers)) {\n    $url .= \"layers[]=usdm&\";\n}\nif (in_array(\"uscounties\", $layers)) {\n    $url .= \"layers[]=uscounties&\";\n}\nif (in_array(\"cwas\", $layers)) {\n    $url .= \"layers[]=cwas&\";\n}\nif (in_array(\"cwsu\", $layers)) {\n    $url .= \"layers[]=cwsu&\";\n}\nif (in_array(\"watches\", $layers)) {\n    $url .= \"layers[]=watches&\";\n}\nif (in_array(\"nexrad\", $layers)) {\n    $url .= \"layers[]=nexrad&\";\n} else if (in_array(\"prn0q\", $layers)) {\n    $url .= \"layers[]=prn0q&\";\n} else if (in_array(\"hin0q\", $layers)) {\n    $url .= \"layers[]=hin0q&\";\n} else if (in_array(\"akn0q\", $layers)) {\n    $url .= \"layers[]=akn0q&\";\n}\n\nif (in_array(\"warnings\", $layers)) {\n    if ($warngeo == \"both\" or $warngeo == \"county\") {\n        $url .= \"layers[]=county_warnings&\";\n    }\n    if ($warngeo == \"both\" or $warngeo == \"sbw\") {\n        $url .= \"layers[]=sbw&\";\n    }\n}\n\nif ($lsrwindow > 0) {\n    $lsr_etime = $ts + ($lsrwindow * 60);\n    $lsr_stime = $ts - ($lsrwindow * 60);\n    $url .= sprintf(\n        \"layers[]=lsrs&ts1=%s&ts2=%s\",\n        date(\"YmdHi\", $lsr_stime),\n        date(\"YmdHi\", $lsr_etime)\n    );\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"iem\",\n  \"version\": \"1.0.0\",\n  \"description\": \"If using this code causes your server to have kittens, it is your own fault.\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\",\n    \"lint\": \"eslint . --ext .js,.mjs\",\n    \"lint:fix\": \"eslint . --ext .js,.mjs --fix\",\n    \"format\": \"prettier --write \\\"htdocs/**/*.{js,mjs,css,html}\\\"\",\n    \"format:check\": \"prettier --check \\\"htdocs/**/*.{js,mjs,css,html}\\\"\",\n    \"type-check\": \"tsc --noEmit\",\n    \"dev\": \"npm run lint && npm run type-check\",\n    \"modernize\": \"echo 'Running jQuery to vanilla JS conversion checks'\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/akrherz/iem.git\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"bugs\": {\n    \"url\": \"https://github.com/akrherz/iem/issues\"\n  },\n  \"homepage\": \"https://github.com/akrherz/iem#readme\",\n  \"devDependencies\": {\n    \"@eslint/js\": \"^10.0.1\",\n    \"@types/ol\": \"^7.0.0\",\n    \"eslint\": \"^10.3.0\",\n    \"eslint-plugin-jsdoc\": \"^62.9.0\",\n    \"globals\": \"^17.6.0\",\n    \"prettier\": \"^3.8.1\",\n    \"typescript\": \"^6.0.2\"\n  },\n  \"engines\": {\n    \"node\": \">=16.0.0\",\n    \"npm\": \">=8.0.0\"\n  }\n}\n"
  },
  {
    "path": "pip_requirements.txt",
    "content": "git+https://github.com/akrherz/windrose.git@darylchanges\ngit+https://github.com/akrherz/pyIEM.git\ngit+https://github.com/akrherz/tilecache.git\n"
  },
  {
    "path": "pylib/iemweb/GIS/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/GIS/tiff/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/GIS/tiff/index.py",
    "content": "\"\"\".. title:: Create wall of links to the TIFF service\n\nUsage Examples\n--------------\n\nProvide a list of links for 9 Sep 2025 UTC\n\nhttps://mesonet.agron.iastate.edu/GIS/tiff/index.py?year=2025&month=9&day=9\n\nGet a RTMA grid as a GeoTIFF\n\nhttps://mesonet.agron.iastate.edu/GIS/tiff/index.py?\\\nservice=rtma&ts=202509090000\n\nReturn the most recent 5km FFG as a GeoTIFF\n\nhttps://mesonet.agron.iastate.edu/GIS/tiff/index.py?service=5kmffg\n\n\"\"\"\n\nimport logging\nimport subprocess\nimport tempfile\nfrom calendar import month_abbr\nfrom datetime import datetime, timedelta\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.htmlgen import make_select\nfrom pyiem.templates.iem import TEMPLATE\nfrom pyiem.util import archive_fetch, utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import DAY_OF_MONTH_FIELD, MONTH_FIELD\n\nLOG = logging.getLogger(__name__)\n\n\nclass MyModel(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    service: Annotated[\n        str | None,\n        Field(\n            title=\"Service to use\",\n            description=\"Service to use\",\n            pattern=\"^(5kmffg|rtma)$\",\n        ),\n    ] = None\n    ts: Annotated[\n        str | None,\n        Field(\n            title=\"Valid UTC Timestamp\",\n            description=\"Valid UTC Timestamp in YYYYMMDDHHMM format\",\n            pattern=\"^[0-9]{12}$\",\n        ),\n    ] = None\n    day: DAY_OF_MONTH_FIELD = utc().day\n    month: MONTH_FIELD = utc().month\n    year: Annotated[\n        int,\n        Field(\n            title=\"Year\",\n            description=\"Year\",\n        ),\n    ] = utc().year\n\n\nHEADER = \"\"\"\n<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb\">\n  <li class=\"breadcrumb-item\"><a href=\"/GIS/\">GIS Homepage</a></li>\n  <li class=\"breadcrumb-item active\" aria-current=\"page\">Download TIFFs</li>\n </ol>\n</nav>\n\n<h3>Grib to TIFF Service:</h3>\n\n<p>The IEM archives a lot of grib imagery, this service presents it for a\ngiven UTC date with links to download what is available.</p>\n\n<form name=\"ds\" class=\"d-inline-flex gap-2 align-items-center\">\n%(ys)s %(ms)s %(ds)s\n<button type=\"submit\" class=\"btn btn-primary btn-sm\"\n aria-label=\"Select date\">Select Date</button>\n</form>\n\"\"\"\nSOURCES = {\n    \"5kmffg\": {\n        \"label\": \"Flash Flood Guidance @5km (FFG)\",\n        \"re\": \"%Y/%m/%d/model/ffg/5kmffg_%Y%m%d%H.grib2\",\n        \"modulo\": 6,\n    },\n    \"rtma\": {\n        \"label\": \"Real-Time Mesoscale Analysis (RTMA)\",\n        \"re\": \"%Y/%m/%d/model/rtma/%H/rtma.t%Hz.awp2p5f000.grib2\",\n        \"modulo\": 1,\n    },\n}\n\n\ndef generate_ui(key, valid: datetime, res):\n    \"\"\"Make the UI for the given date.\"\"\"\n    meta = SOURCES[key]\n    res[\"content\"] += (\n        f\"<h3>{meta['label']}</h3>\"\n        f'<p>Real-time stable link: <a href=\"/GIS/tiff/?service={key}\">'\n        f\"/GIS/tiff/?service={key}</a></p>\"\n    )\n    found = False\n    for hr in range(0, 24, meta[\"modulo\"]):\n        ts = valid.replace(hour=hr)\n        ppath = ts.strftime(meta[\"re\"])\n        with archive_fetch(ppath, method=\"head\") as fn:\n            if fn is None:\n                continue\n            found = True\n            href = f\"/GIS/tiff/?service={key}&amp;ts={ts:%Y%m%d%H%M}\"\n            res[\"content\"] += (\n                f'<br />{ppath} <a href=\"{href}\">As GeoTIFF</a>, '\n                f'<a href=\"/archive/data/{ppath}\">As Grib</a>'\n            )\n    if not found:\n        res[\"content\"] += \"<p>Failed to find any archived files.</p>\"\n\n\ndef workflow(key, tmpdir, ts: datetime | None):\n    \"\"\"Go ts.\"\"\"\n    meta = SOURCES[key]\n    if ts is None:\n        # Go to 0z tomorrow and work backwards\n        valid = (utc() + timedelta(days=1)).replace(hour=0, minute=0)\n        for offset in range(0, 36, meta[\"modulo\"]):\n            ts = valid - timedelta(hours=offset)\n            ppath = ts.strftime(meta[\"re\"])\n            with archive_fetch(ppath, method=\"head\") as fn:\n                if fn is not None:\n                    valid = ts\n                    break\n    else:\n        try:\n            valid = datetime.strptime(ts, \"%Y%m%d%H%M\")\n        except Exception as exp:\n            raise IncompleteWebRequest(\"Invalid ts provided\") from exp\n    ppath = valid.strftime(meta[\"re\"])\n    with archive_fetch(ppath) as testfn:\n        if testfn is None:\n            raise FileNotFoundError(f\"Failed to find {ppath} for service.\")\n        with subprocess.Popen(\n            [\n                \"gdalwarp\",\n                testfn,\n                f\"{tmpdir}/test.tiff\",\n            ],\n            stdout=subprocess.PIPE,\n            stderr=subprocess.PIPE,\n        ) as cmd:\n            cmd.stdout.read()\n    with open(f\"{tmpdir}/test.tiff\", \"rb\") as fh:  # skipcq\n        return fh.read()\n\n\n@iemapp(help=__doc__, schema=MyModel)\ndef application(environ, start_response):\n    \"\"\"mod-wsgi handler.\"\"\"\n    service = environ.get(\"service\")\n    if service in SOURCES:\n        ts = environ[\"ts\"]\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\n                \"Content-Disposition\",\n                f\"attachment; filename={service}_\"\n                f\"{'latest' if ts is None else ts}.tiff\",\n            ),\n        ]\n        with tempfile.TemporaryDirectory() as tmpdir:\n            try:\n                res = workflow(service, tmpdir, ts)\n                start_response(\"200 OK\", headers)\n                return [res]\n            except FileNotFoundError as exp:\n                start_response(\n                    \"422 Unprocessable Entity\",\n                    [(\"Content-type\", \"text/plain\")],\n                )\n                return f\"File not found for service/ts combination: {exp}\"\n\n    valid = utc(environ[\"year\"], environ[\"month\"], environ[\"day\"])\n\n    headers = [(\"Content-type\", \"text/html\")]\n    res = {\n        \"IEM_APPID\": 33,\n        \"content\": HEADER\n        % {\n            \"ys\": make_select(\n                \"year\",\n                valid.year,\n                dict(\n                    zip(\n                        range(2000, utc().year + 1),\n                        range(2000, utc().year + 1),\n                        strict=True,\n                    )\n                ),\n                showvalue=False,\n            ),\n            \"ms\": make_select(\n                \"month\",\n                valid.month,\n                dict(zip(range(1, 13), month_abbr[1:], strict=True)),\n                showvalue=False,\n            ),\n            \"ds\": make_select(\n                \"day\",\n                valid.day,\n                dict(zip(range(1, 32), range(1, 32), strict=False)),\n                showvalue=False,\n            ),\n        },\n    }\n    for key in SOURCES:\n        generate_ui(key, valid, res)\n\n    start_response(\"200 OK\", headers)\n    return [TEMPLATE.render(res).encode(\"utf-8\")]\n"
  },
  {
    "path": "pylib/iemweb/__init__.py",
    "content": "\"\"\"IEM Website Python Library.\"\"\"\n\nimport sys\n\n__version__ = \"0.1.0\"\n\n\ndef error_log(environ: dict, msg: str) -> None:\n    \"\"\"Properly send an error log message.\n\n    Args:\n      environ (dict): The mod_wsgi environment\n      msg (str): The message to log\n    \"\"\"\n    # For whatever reason, when this error message is logged, Apache does not\n    # have the headers to include with the message, so we need to include them\n    # ourselves.\n    client_addr = environ.get(\n        \"HTTP_X_FORWARDED_FOR\", environ.get(\"REMOTE_ADDR\")\n    )\n    sys.stderr.write(f\"client: `{client_addr}` `{msg}`\\n\")\n"
  },
  {
    "path": "pylib/iemweb/afos/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/afos/retrieve.py",
    "content": "\"\"\".. title:: Retrieve NWS Text Products\n\nReturn to `API Services </api/>`_ or\n`NWS Text Products Interface </wx/afos/>`_.\n\nDocumentation for /cgi-bin/afos/retrieve.py\n-------------------------------------------\n\nThis service returns NWS Text Products from the IEM's database.  The database\nupdates in near real-time, so it should be considered a near real-time source\nwith minimal latency.\n\nChangelog\n~~~~~~~~~\n\n- 2026-05-07: The `center` parameter needs to be uppercase and four chars.\n- 2026-04-30: An internal service rewrite was done attempting to remove some\n  very slow edge query cases.  Please let me know of any variances you find.\n- 2026-04-21: Due to incessant requests made against this service, a 1 second\n  per remote IP address throttle is in place for DSM requests.\n- 2026-03-13: After gnashing of teeth about the METARs, a compromise was\n  reached to return only the latest non-MADISHF METAR when requesting just\n  one, but return anything available when requesting more than 1.  Will likely\n  regret this decision as well.\n- 2026-03-09: The METAR service was updated to not consider the IEM generated\n  METARs based on the MADIS HF feed.\n- 2026-01-29: This service is now protected by a query timeout of 60 seconds.\n  You will get a HTTP status of 503.\n\nExamples\n~~~~~~~~\n\nReturn all of the Daily Summary Messages for Des Moines from 1 Jan 2025 to 9\nJan 2025 in text format.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py?\\\nlimit=9999&pil=DSMDSM&fmt=text&sdate=2025-01-01&edate=2025-01-09\n\nReturn the last 5 Daily Summary Messages for Des Moines in text format.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py?\\\nlimit=5&pil=DSMDSM&fmt=text\n\nSame request, but in HTML format:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py?\\\nlimit=1&pil=DSMDSM&fmt=html\n\nReturn all TORnado warnings issued between 20 and 21 UTC on 27 Apr 2011 as\na zip file.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py?\\\nsdate=2011-04-27T20:00Z&edate=2011-04-27T21:00Z&pil=TOR&fmt=zip&limit=9999\n\nReturn the last Area Forecast Discussion from NWS Des Moines as text\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py?pil=AFDDMX\n\nRetrieve recent METAR observations for KDSM, note that this only works for\nrecent data, no archive support with this API.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py?pil=MTRDSM\n\nSame request, but in HTML format:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py?pil=MTRDSM&fmt=html\n\nUse the WAR pil shortcut to retrieve a number of Des Moines products\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py?pil=WARDMX\n\nReturn the last AFDDMX product in text format\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py?pil=AFDDMX&fmt=text\n\nSame request, but in HTML format:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py?pil=AFDDMX&fmt=html\n\nReturn a zip file of AFDDMX products during 2024\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py?pil=AFDDMX&fmt=zip&\\\nsdate=2024-01-01T00:00Z&edate=2024-12-31T23:59Z\n\nReturn the aviation section of the latest AFD from NWS Des Moines\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py?pil=AFDDMX&\\\naviation_afd=1\n\nSame request, but HTML format this time.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py?pil=AFDDMX&\\\naviation_afd=1&fmt=html\n\nReturn the LAV MOS for KATL by specifying that KATL should appear within the\nproduct text, so to not return the mos for PATL.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py?pil=LAVATL&\\\nmatches=KATL\n\nReturn the first AFDDMX during the 2024+2025 period\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py?pil=AFDDMX&\\\nfmt=text&sdate=2024-01-01T00:00Z&edate=2025-12-31T23:59Z&limit=1&order=asc\n\n\"\"\"\n\nimport re\nimport zipfile\nfrom datetime import datetime, timedelta, timezone\nfrom io import BytesIO, StringIO\nfrom typing import Annotated\n\nfrom pydantic import Field, field_validator, model_validator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import html_escape, utc\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\nfrom sqlalchemy.engine import Connection\nfrom sqlalchemy.exc import OperationalError\nfrom sqlalchemy.sql.expression import TextClause\n\nfrom iemweb import error_log\nfrom iemweb.util import get_ct\n\nWARPIL = \"FLS FFS AWW TOR SVR FFW SVS LSR SPS WSW FFA WCN NPW\".split()\nAVIATION_AFD = re.compile(r\"^\\.AVIATION[\\s\\.]\", re.IGNORECASE | re.MULTILINE)\nSTATEMENT_TIMEOUT: str = \"60s\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    aviation_afd: Annotated[\n        bool,\n        Field(\n            description=(\n                \"If set to 1, the returned data will be the 'Aviation' \"\n                \"section of an Area Forecast Discussion. This requires the \"\n                \"PIL to be an AFD product and a limit of 1 set.\"\n            ),\n        ),\n    ] = False\n    center: Annotated[\n        str,\n        Field(\n            description=(\n                \"The 4 character source iddentifier to limit the search to. \"\n                \"This is typically only used when a PIL is ambiguous like in \"\n                \"the case of Alaska three character ids conflicting with \"\n                \"CONUS.  This is not required.\"\n            ),\n            pattern=r\"^[A-Z]{4}$\",\n        ),\n    ] = \"\"\n    dl: Annotated[\n        bool,\n        Field(\n            description=(\n                \"If set to 1, the returned data will be downloaded as a file\"\n            ),\n        ),\n    ] = False\n    edate: Annotated[\n        datetime,\n        Field(\n            description=(\n                \"The ending timestamp in UTC to limit the database search. \"\n                \"This value is exclusive.\"\n            ),\n            default_factory=lambda: utc() + timedelta(days=1),\n        ),\n    ]\n    fmt: Annotated[\n        str,\n        Field(\n            description=(\n                \"The format of the returned data, either text, html, or zip. \"\n                \"The meaning of ``text`` is to return something that \"\n                \"resembles what would have been sent over the NWS NOAAPort \"\n                \"system. The ``html`` format is a bit more human readable. \"\n                \"The ``zip`` format will return a zip file containing the \"\n                \"text products, one file per product. The ``zip`` format is \"\n                \"not supported for the one-off ``MTR`` METAR service.\"\n            ),\n            pattern=\"^(text|html|zip)$\",\n        ),\n    ] = \"text\"\n    limit: Annotated[\n        int,\n        Field(\n            description=(\n                \"The number of products to return, default is 1. This number \"\n                \"is limited to 9999.\"\n            ),\n            ge=1,\n            le=9999,\n        ),\n    ] = 1\n    matches: Annotated[\n        str,\n        Field(\n            description=(\n                \"Attempt a simple substring search within candidate products \"\n                \"for the given exact string.  This is limited functionality \"\n                \"for now.\"\n            ),\n            max_length=4,\n            min_length=4,\n        ),\n    ] = None\n    pil: Annotated[\n        ListOrCSVType,\n        Field(\n            description=(\n                \"The 3 to 6 character AFOS ID / Product ID to query for. This \"\n                \"is typically the third line of a NWS Text Product.  A \"\n                f\"special case of ``WAR`` will return {', '.join(WARPIL)} \"\n                \"products. If you provide a single PIL that is 3 characters \"\n                \"in length, it will be used as a first three pil character \"\n                \"match.\"\n            ),\n        ),\n    ]\n    sdate: Annotated[\n        datetime,\n        Field(\n            description=(\n                \"The starting timestamp in UTC to limit the database search. \"\n                \"This value is inclusive.\"\n            ),\n        ),\n    ] = utc(1980)\n    order: Annotated[\n        str,\n        Field(\n            description=(\n                \"The order of the returned products, either 'asc' or 'desc'\"\n            ),\n            pattern=\"^(asc|desc)$\",\n        ),\n    ] = \"desc\"\n    ttaaii: Annotated[\n        str,\n        Field(\n            description=(\n                \"The 6 character WMO Header to limit the search to.  This is \"\n                \"typically only used when a PIL is ambiguous\"\n            ),\n            max_length=6,\n        ),\n    ] = \"\"\n\n    @field_validator(\"pil\", mode=\"after\")\n    @classmethod\n    def rectify_pils(cls, pils: list[str]):\n        \"\"\"Apply some sanitization.\"\"\"\n        pils = [val.strip().upper() for val in pils]\n        res = []\n        for pil in pils:\n            # The enclosing parenthesis here is a lame code smell\n            if not (3 <= len(pil) <= 6):  # skipcq\n                raise ValueError(f\"Invalid PIL length: {pil}\")\n            # Lame WAR alias\n            if pil.startswith(\"WAR\") and len(pil) == 6:\n                res.extend(f\"{q}{pil[3:6]}\" for q in WARPIL)\n                continue\n            res.append(pil)\n        return res\n\n    @field_validator(\"sdate\", \"edate\", mode=\"before\")\n    @classmethod\n    def rectify_datestr(cls, v: str):\n        \"\"\"pydantic can't seem to handle this.\"\"\"\n        # pydantic/pydantic/issues/9308\n        if 8 <= len(v) < 10:\n            # zero pad\n            return \"-\".join(f\"{int(v):02.0f}\" for v in v.split(\"-\"))\n        return v\n\n    @model_validator(mode=\"after\")\n    def rectify_model(self):\n        \"\"\"Apply some business logic to what the user provided..\"\"\"\n        self.sdate = (\n            self.sdate.replace(tzinfo=timezone.utc)\n            if self.sdate.tzinfo is None\n            else self.sdate.astimezone(timezone.utc)\n        )\n        self.edate = (\n            self.edate.replace(tzinfo=timezone.utc)\n            if self.edate.tzinfo is None\n            else self.edate.astimezone(timezone.utc)\n        )\n        if self.edate < self.sdate:\n            self.sdate, self.edate = self.edate, self.sdate\n        return self\n\n\ndef zip_handler(rows: list[tuple]) -> bytes:\n    \"\"\"Stream back a zipfile!\"\"\"\n    bio = BytesIO()\n    with zipfile.ZipFile(bio, \"w\") as zfp:\n        for row in rows:\n            zfp.writestr(f\"{row[1]}_{row[2]}.txt\", row[0])\n    bio.seek(0)\n    return bio.getvalue()\n\n\ndef special_metar_logic(conn: Connection, request: Schema):\n    \"\"\"Special METAR logic.\"\"\"\n    metar_id = request.pil[0][3:].strip()\n    params = {\"pil\": metar_id, \"limit\": request.limit}\n    extra = \"and strpos(raw, 'MADISHF') = 0\" if request.limit == 1 else \"\"\n    sql = sql_helper(\n        \"SELECT raw from current_log c JOIN stations t on \"\n        \"(t.iemid = c.iemid) WHERE raw != '' {extra} \"\n        \"and id = :pil \"\n        \"ORDER by valid {order} LIMIT :limit\",\n        order=request.order,\n        extra=extra,\n    )\n    res = conn.execute(sql, params)\n    sio = StringIO()\n    for row in res:\n        sio.write(\"<pre>\\n\" if request.fmt == \"html\" else \"\\001\\n\")\n        if request.fmt == \"html\":\n            sio.write(html_escape(row[0].replace(\"\\r\\r\\n\", \"\\n\")))\n        else:\n            sio.write(row[0].replace(\"\\r\\r\\n\", \"\\n\"))\n        if request.fmt == \"html\":\n            sio.write(\"</pre>\\n\")\n        else:\n            sio.write(\"\\003\\n\")\n    # Turns out that res.rowcount is not reliable\n    if sio.tell() == 0:\n        sio.write(f\"ERROR: METAR lookup for {metar_id} failed\")\n    return sio.getvalue()\n\n\ndef get_mckey(environ: dict) -> str | None:\n    \"\"\"Cache a specific request.\"\"\"\n    # Get reference to request\n    request: Schema = environ[\"_cgimodel_schema\"]\n    # limit=9999&pil=DSMDEN&fmt=text&sdate=2025-01-07&edate=2025-01-09\n    if request.pil[0].startswith(\"DSM\") and request.fmt == \"text\":\n        return (\n            f\"afos_retrieve.py_{request.pil[0]}_{request.sdate:%Y%m%d}_\"\n            f\"{request.edate:%Y%m%d}_{request.limit}\"\n        )\n    return None\n\n\ndef get_ip_throttle_secs(environ: dict) -> int:\n    \"\"\"Figure out what the throttle is.\"\"\"\n    query: Schema = environ[\"_cgimodel_schema\"]\n    if any(pil.startswith(\"DSM\") for pil in query.pil):\n        return 1\n    return 0\n\n\ndef chunk_dates(request: Schema) -> tuple[list[datetime], list[datetime]]:\n    \"\"\"Partition up the requested period into chunks to iterate through.\"\"\"\n    # Shortcut refs\n    sd = request.sdate\n    ed = request.edate\n    order = request.order\n    total_days = (ed - sd).days\n    # If the request is already inside 367 days, lets not bother\n    if total_days < 367:\n        return [sd], [ed]\n    sdates = []\n    edates = []\n    # time chunks to iterate through from the start to finish\n    now = sd if order == \"asc\" else ed\n    multiplier = 1\n    while sd <= now <= ed:\n        step = 31 if multiplier == 1 else 365\n        if order == \"asc\":\n            sdates.append(now)\n            now += timedelta(days=multiplier * step)\n            edates.append(min(now, ed))\n        else:\n            edates.append(now)\n            now -= timedelta(days=multiplier * step)\n            sdates.append(max(now, sd))\n        multiplier += 3\n\n    return sdates, edates\n\n\ndef do_query_work(\n    conn: Connection, request: Schema, sql: TextClause, params: dict\n) -> list[tuple]:\n    \"\"\"Do the database query and processing.\"\"\"\n    # Create a series of datetime chunks to iterate through\n    sdates, edates = chunk_dates(request)\n\n    # For better or worse, we are storing this in memory, but we limit to 9999\n    rows = []\n    for sdate, edate in zip(sdates, edates, strict=True):\n        params[\"sdate\"] = sdate\n        params[\"edate\"] = edate\n        cursor = conn.execute(sql, params)\n        rows.extend(cursor.fetchall())\n        if len(rows) >= request.limit:\n            rows = rows[: request.limit]\n            break\n\n    return rows\n\n\ndef html_handler(rows: list[tuple], afd_logic: bool) -> str:\n    \"\"\"Handle conversion to HTML.\"\"\"\n    sio = StringIO()\n    for row in rows:\n        sio.write(\n            f'<a href=\"/wx/afos/p.php?pil={row[1]}&e={row[2]}\">'\n            \"Permalink</a> for following product: \"\n        )\n        sio.write(\"<br /><pre>\\n\")\n        payload = row[0]\n        if afd_logic:\n            # Special case for AFD products, we only want the Aviation\n            # section\n            parts = payload.split(\"&&\")\n            for part in parts:\n                if AVIATION_AFD.search(part):\n                    payload = part\n                    break\n        # Remove control characters from the product as we are including\n        # them manually here...\n        sio.write(\n            html_escape(payload)\n            .replace(\"\\003\", \"\")\n            .replace(\"\\001\", \"\")\n            .replace(\"\\r\", \"\")\n        )\n        sio.write(\"</pre><hr>\\n\")\n    return sio.getvalue()\n\n\ndef text_handler(rows: list[tuple], afd_logic: bool) -> str:\n    \"\"\"Handle text output.\"\"\"\n    sio = StringIO()\n    for row in rows:\n        sio.write(\"\\001\\n\")\n        payload = row[0]\n        if afd_logic:\n            # Special case for AFD products, we only want the Aviation\n            # section\n            parts = payload.split(\"&&\")\n            for part in parts:\n                if AVIATION_AFD.search(part):\n                    payload = part\n                    break\n        sio.write(\n            payload.replace(\"\\003\", \"\").replace(\"\\001\", \"\").replace(\"\\r\", \"\")\n        )\n        sio.write(\"\\n\\003\\n\")\n    return sio.getvalue()\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcacheexpire=600,\n    memcachekey=get_mckey,\n    content_type=get_ct,\n    parse_times=False,\n    ip_throttle_secs=get_ip_throttle_secs,\n)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Process the request.\"\"\"\n    # Capture the client request params\n    request: Schema = environ[\"_cgimodel_schema\"]\n    headers = [\n        (\"X-Content-Type-Options\", \"nosniff\"),\n        (\"Content-type\", get_ct(environ)),\n    ]\n    if request.dl or request.fmt == \"zip\":\n        suffix = \"zip\" if request.fmt == \"zip\" else \"txt\"\n        headers.append(\n            (\"Content-disposition\", f\"attachment; filename=afos.{suffix}\")\n        )\n\n    if request.pil[0].startswith(\"MTR\"):\n        if request.fmt == \"zip\":\n            start_response(\n                \"422 Unprocessable Entity\",\n                [(\"Content-type\", \"text/plain\")],\n            )\n            return \"ERROR: The zip format is not supported for the MTR service\"\n        with get_sqlalchemy_conn(\"iem\") as conn:\n            start_response(\"200 OK\", headers)\n            return special_metar_logic(conn, request)\n\n    params = {\n        \"pils\": request.pil,\n        \"center\": request.center,\n        \"edate\": request.edate,\n        \"ttaaii\": request.ttaaii,\n        \"limit\": request.limit,\n        \"matches\": request.matches,\n    }\n    centerlimit = \"\" if request.center == \"\" else \" and source = :center \"\n    ttlimit = \"\" if request.ttaaii == \"\" else \" and wmo = :ttaaii \"\n    plimit = \" pil = ANY(:pils) \"\n    mlimit = \" and strpos(data, :matches) > 0 \" if request.matches else \"\"\n    if len(request.pil) == 1:\n        plimit = \" pil = :pil \"\n        params[\"pil\"] = request.pil[0]\n        if len(request.pil[0]) == 3:\n            # Serious perf issues here.  substr partial index confuses planner\n            # LIKE also triggers filtering, the goose here is to force a\n            # index\n            pil3 = request.pil[0]\n            # for example, pil3=AFD then next_char is E and we have `AFE`\n            next_char = chr(ord(pil3[2]) + 1)\n            params[\"pil2\"] = f\"{pil3[:2]}{next_char}\"\n            plimit = \" pil >= :pil and pil < :pil2 \"\n    sql = sql_helper(\n        \"SELECT data, pil, \"\n        \"to_char(entered at time zone 'UTC', 'YYYYMMDDHH24MI') as ts \"\n        \"from products WHERE {plimit} \"\n        \"and entered >= :sdate and entered < :edate {centerlimit} \"\n        \"{ttlimit} {mlimit} ORDER by entered {order} LIMIT :limit\",\n        plimit=plimit,\n        centerlimit=centerlimit,\n        ttlimit=ttlimit,\n        order=request.order,\n        mlimit=mlimit,\n    )\n    with get_sqlalchemy_conn(\"afos\") as conn:\n        # Prevent something from running away with resources\n        # Lovely situation here without parameter support for ``set``\n        conn.execute(\n            sql_helper(\n                \"SET statement_timeout = '{timeout}'\",\n                timeout=STATEMENT_TIMEOUT,\n            )\n        )\n        # So the below could time out\n        try:\n            rows = do_query_work(conn, request, sql, params)\n        except OperationalError as exp:\n            error_log(environ, str(exp))\n            start_response(\n                \"503 Service Unavailable\", [(\"Content-type\", \"text/plain\")]\n            )\n            return \"ERROR: Query took too long to complete\"\n\n    start_response(\"200 OK\", headers)\n\n    if request.fmt == \"zip\":\n        return zip_handler(rows)\n\n    if not rows:\n        return f\"ERROR: Could not Find: {','.join(request.pil)}\"\n\n    afd_logic = (\n        len(request.pil) == 1\n        and request.pil[0].startswith(\"AFD\")\n        and request.aviation_afd\n    )\n\n    if request.fmt == \"html\":\n        return html_handler(rows, afd_logic)\n\n    return text_handler(rows, afd_logic)\n"
  },
  {
    "path": "pylib/iemweb/agclimate/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/agclimate/ames_precip.py",
    "content": "\"\"\"Report on our second tipping bucket\"\"\"\n\nfrom io import StringIO\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.webutil import iemapp\n\n\n@iemapp()\ndef application(_environ, start_response):\n    \"\"\"Go Main Go\"\"\"\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        amsi4 = pd.read_sql(\n            sql_helper(\"\"\"\n        SELECT to_char(day + '16 hours'::interval,\n            'YYYY-MM-DD HH24:MI') as valid,\n        pday as coop, day\n        from summary s JOIN stations t on (s.iemid = t.iemid)\n        where t.id = 'AMSI4' and day > '2017-07-25' and pday >= 0\n        ORDER by day ASC\n        \"\"\"),\n            conn,\n            index_col=\"valid\",\n        )\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        SELECT to_char(valid, 'YYYY-MM-DD HH24:MI') as valid,\n        case when extract(hour from valid) > 16 then\n            date(valid + '8 hours'::interval) else date(valid) end\n            as coop_date,\n        rain_in_tot as bucket1_hourly,\n        coalesce(rain_in_2_tot, rain_in_2_tot) as bucket2_hourly\n        from sm_hourly where station = 'BOOI4'\n        and valid > '2017-07-25' and (rain_in_tot > 0 or rain_in_2_tot > 0)\n        ORDER by valid ASC\n        \"\"\"),\n            conn,\n            index_col=\"valid\",\n        )\n    aggobs = df.groupby(\"coop_date\").sum(numeric_only=True)\n    aggobs.columns = [\n        s.replace(\"_hourly\", \"\") + \"_total\" for s in aggobs.columns\n    ]\n    df = df.drop(columns=\"coop_date\")\n\n    df2 = amsi4.join(df, how=\"outer\")\n    df2 = df2.merge(aggobs, how=\"outer\", left_on=\"day\", right_index=True)\n    df2.index.name = \"valid\"\n    df2 = df2.drop(\"day\", axis=1)\n    df2 = df2.sort_index(ascending=True).reset_index()\n    df2[\"valid\"] = pd.to_datetime(df2[\"valid\"]).dt.strftime(\"%Y-%m-%d %-I %p\")\n    sio = StringIO()\n    if not df2.empty:\n        df2.to_html(\n            sio,\n            columns=[\n                \"valid\",\n                \"coop\",\n                \"bucket1_total\",\n                \"bucket2_total\",\n                \"bucket1_hourly\",\n                \"bucket2_hourly\",\n            ],\n            classes=\"table table-striped tableFixHead\",\n            na_rep=\"-\",\n            float_format=\"{:.2f}\".format,\n            index=False,\n        )\n    sio.seek(0)\n    headers = [(\"Content-type\", \"text/html\")]\n    start_response(\"200 OK\", headers)\n    return [sio.getvalue().encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/agclimate/isusm.py",
    "content": "\"\"\".. title:: Unknown ISUAG Plotting\n\nUnsure if this is used anymore, alas.\n\nUsage Examples\n--------------\n\nPlot dew point\n\nhttps://mesonet.agron.iastate.edu/agclimate/isusm.py?v=dwpf\n\n\"\"\"\n\nfrom io import BytesIO\n\nfrom pydantic import Field\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot import MapPlot\nfrom pyiem.util import c2f\nfrom pyiem.webutil import CGIModel, iemapp\n\nCTX = {\n    \"tmpf\": {\"title\": \"2m Air Temperature [°F]\"},\n    \"rh\": {\"title\": \"2m Air Humidity [%]\"},\n    \"high\": {\"title\": \"Today's High Temp [°F]\"},\n    \"dwpf\": {\"title\": \"2m Dew Point Temperature [°F]\"},\n}\n\n\nclass MyModel(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    v: str = Field(\"tmpf\", description=\"Variable to plot\")\n\n\ndef get_currents():\n    \"\"\"Return dict of current values\"\"\"\n    dbconn = get_dbconn(\"iem\")\n    cursor = dbconn.cursor()\n    dbconn2 = get_dbconn(\"isuag\")\n    cursor2 = dbconn2.cursor()\n    data = {}\n    cursor.execute(\n        \"\"\"\n    SELECT id, valid, tmpf, relh, dwpf from current c JOIN stations t on\n    (t.iemid = c.iemid) WHERE valid > now() - '3 hours'::interval and\n    t.network = 'ISUSM'\n    \"\"\"\n    )\n    valid = None\n    for row in cursor:\n        data[row[0]] = {\n            \"tmpf\": row[2],\n            \"rh\": row[3],\n            \"dwpf\": row[4],\n            \"valid\": row[1],\n            \"high\": None,\n        }\n        if valid is None:\n            valid = row[1]\n\n    # Go get daily values\n    if valid is not None:\n        cursor2.execute(\n            \"SELECT station, tair_c_max_qc from sm_daily where valid = %s\",\n            (valid.date(),),\n        )\n        for row in cursor2:\n            data[row[0]][\"high\"] = c2f(row[1])\n\n    cursor.close()\n    dbconn.close()\n    return data\n\n\ndef plot(data, v):\n    \"\"\"Actually plot this data\"\"\"\n    nt = NetworkTable(\"ISUSM\")\n    lats = []\n    lons = []\n    vals = []\n    valid = None\n    for sid in data.keys():\n        if data[sid][v] is None:\n            continue\n        lats.append(nt.sts[sid][\"lat\"])\n        lons.append(nt.sts[sid][\"lon\"])\n        vals.append(data[sid][v])\n        valid = data[sid][\"valid\"]\n\n    if valid is None:\n        mp = MapPlot(\n            sector=\"iowa\",\n            axisbg=\"white\",\n            title=f\"ISU Soil Moisture Network :: {CTX[v]['title']}\",\n            figsize=(8.0, 6.4),\n        )\n        mp.plot_values([-95], [41.99], [\"No Data Found\"], \"%s\", textsize=30)\n        return mp\n\n    mp = MapPlot(\n        sector=\"iowa\",\n        axisbg=\"white\",\n        title=f\"ISU Soil Moisture Network :: {CTX[v]['title']}\",\n        subtitle=f\"valid {valid:%-d %B %Y %I:%M %p}\",\n        figsize=(8.0, 6.4),\n    )\n    mp.plot_values(lons, lats, vals, \"%.1f\")\n    mp.drawcounties()\n    return mp\n\n\n@iemapp(help=__doc__, schema=MyModel)\ndef application(environ, start_response):\n    \"\"\"Go Main Go\"\"\"\n    v = environ[\"v\"]\n    data = get_currents()\n    mp = plot(data, v)\n    bio = BytesIO()\n    mp.fig.savefig(bio)\n\n    headers = [(\"Content-type\", \"image/png\")]\n    start_response(\"200 OK\", headers)\n    return [bio.getvalue()]\n"
  },
  {
    "path": "pylib/iemweb/agclimate/nmp_csv.py",
    "content": "\"\"\"Generation of National Mesonet Project CSV File.\n\nhttps://mesonet.agron.iastate.edu/agclimate/isusm.csv\n\"\"\"\n\nfrom io import StringIO\n\nimport numpy as np\nimport pandas as pd\nfrom metpy.units import units\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import convert_value, utc\nfrom pyiem.webutil import iemapp\n\nINVERSION = [\n    \"BOOI4\",\n    \"CAMI4\",\n    \"CRFI4\",\n]\n\n\ndef nan(val):\n    \"\"\"Convert to NaN, if necessary.\"\"\"\n    return np.nan if val is None else val\n\n\ndef p(val, prec, minv, maxv):\n    \"\"\"rounder\"\"\"\n    if pd.isna(val) or val < minv or val > maxv:\n        return \"\"\n    return str(round(val, prec))\n\n\ndef p3(val, prec, minv, maxv):\n    \"\"\"rounder\"\"\"\n    if pd.isna(val) or val < minv or val > maxv:\n        return \"\"\n    return str(round(val * 100.0, prec))\n\n\ndef p2(val, prec, minv, maxv):\n    \"\"\"rounder\"\"\"\n    if pd.isna(val) or val < minv or val > maxv:\n        return \"\"\n    return str(round(convert_value(val, \"degC\", \"degK\"), prec))\n\n\ndef do_temp_rh(sid, row):\n    \"\"\"Do air temp and RH%.\"\"\"\n    heights = [\n        \"2\",\n    ]\n    temps = [\n        p2(row[\"tair_c_avg_qc\"], 1, -90, 90),\n    ]\n    rhs = [\n        p(row[\"rh_avg_qc\"], 1, 0, 100),\n    ]\n    if sid in INVERSION:\n        with get_sqlalchemy_conn(\"isuag\") as conn:\n            df = pd.read_sql(\n                \"SELECT * from sm_inversion WHERE station = %s and \"\n                \"valid > %s - '4 hours'::interval ORDER by valid DESC LIMIT 1\",\n                conn,\n                params=(sid, row[\"valid\"]),\n            )\n        if not df.empty:\n            row2 = df.iloc[0]\n            for foot, col in [[1.5, \"15\"], [5, \"5\"], [10, \"10\"]]:\n                depth_mm = convert_value(foot * 12, \"inch\", \"meter\")\n                heights.append(f\"{depth_mm:.3f}\")\n                temps.append(p2(row2[f\"tair_{col}_c_avg_qc\"], 1, -90, 90))\n                rhs.append(\"\")\n\n    return \"%s#%s#%s\" % (\n        \";\".join(heights),\n        \";\".join(temps),\n        \";\".join(rhs),\n    )\n\n\ndef do_soil_moisture(row):\n    \"\"\"Do necessary conversions for soil moisture.\"\"\"\n    data = row.to_dict()\n    depths = []\n    temps = []\n    moisture = []\n    for depth in [2, 4, 6, 8, 12, 16, 20, 24, 30, 40]:\n        # CS655\n        t = data.get(f\"t{depth}_c_avg_qc\")\n        sv_t = data.get(f\"sv_t{depth}_qc\")\n        vwc = data.get(f\"vwc{depth}_qc\")\n        sv_vwc = data.get(f\"sv_vwc{depth}_qc\")\n        if pd.isna([t, sv_t, vwc, sv_vwc]).all():\n            continue\n        depth_mm = convert_value(depth, \"inch\", \"meter\")\n        for _t, _v in [[t, vwc], [sv_t, sv_vwc]]:\n            if pd.isna([_t, _v]).all():\n                continue\n            depths.append(f\"{depth_mm:.3f}\")\n            temps.append(p2(_t, 3, -90, 90))\n            moisture.append(p3(_v, 2, 0, 100))\n\n    if not depths:\n        return \"\"\n    return f\"{';'.join(depths)}#{';'.join(temps)}#{';'.join(moisture)}\"\n\n\ndef use_table(sio):\n    \"\"\"Process for the given table.\"\"\"\n    nt = NetworkTable(\"ISUSM\")\n    # NOTE: Careful to use the actual table with actual current data\n    table = f\"sm_minute_{utc():%Y}\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        obsdf = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            WITH latest as (\n                SELECT station, valid,\n                row_number() OVER (PARTITION by station ORDER by valid DESC)\n                from {table} WHERE valid > now() - '48 hours'::interval\n                and valid < now()\n            ), agg as (\n                select station, valid from latest where row_number = 1\n            )\n            select s.*, s.valid at time zone 'UTC' as utc_valid,\n            case when s.valid = a.valid then true else false end as is_last\n            from {table} s, agg a WHERE s.station = a.station\n            and s.valid > (a.valid - '1 hour'::interval) and s.valid <= a.valid\n            \"\"\",\n                table=table,\n            ),\n            conn,\n            index_col=None,\n        )\n    if not obsdf[obsdf[\"is_last\"]].empty:\n        lastob = obsdf[obsdf[\"is_last\"]].set_index(\"station\")\n        hrtotal = (\n            obsdf[[\"station\", \"rain_in_tot\", \"slrkj_tot\"]]\n            .groupby(\"station\")\n            .sum()\n        )\n        for sid, row in lastob.iterrows():\n            hr_row = hrtotal.loc[str(sid)]\n            sio.write(\n                (\"%s,%.4f,%.4f,%s,%.1f,%s,%s,%s,%s,3#%s#%s#%s\\n\")\n                % (\n                    sid,\n                    nt.sts[sid][\"lat\"],\n                    nt.sts[sid][\"lon\"],\n                    row[\"utc_valid\"].strftime(ISO8601),\n                    nt.sts[sid][\"elevation\"],\n                    do_soil_moisture(row),\n                    p(hr_row[\"slrkj_tot\"] * 1000.0 / 3600.0, 1, 0, 1600),\n                    do_temp_rh(sid, row),\n                    p(\n                        (nan(hr_row[\"rain_in_tot\"]) * units(\"inch\"))\n                        .to(units(\"cm\"))\n                        .m,\n                        2,\n                        0,\n                        100,\n                    ),\n                    p(\n                        (nan(row[\"ws_mph\"]) * units(\"mph\"))\n                        .to(units(\"meter / second\"))\n                        .m,\n                        2,\n                        0,\n                        100,\n                    ),\n                    p(\n                        (nan(row[\"ws_mph_max\"]) * units(\"mph\"))\n                        .to(units(\"meter / second\"))\n                        .m,\n                        2,\n                        0,\n                        100,\n                    ),\n                    p(row[\"winddir_d1_wvt\"], 2, 0, 360),\n                )\n            )\n\n\ndef do_output(sio):\n    \"\"\"Do as I say\"\"\"\n    sio.write(\n        \"station_id,LAT [degN],LON [degE],date_time,ELEV [m],\"\n        \"depth [m]#SOILT [K]#SOILMP [%],\"\n        \"GSRD[1]H [W/m^2],height [m]#T [K]#RH [%],\"\n        \"PCP[1]H [mm],\"\n        \"height [m]#FF[1]H [m/s]#FFMAX[1]H [m/s]#DD[1]H [degN]\\n\"\n    )\n\n    use_table(sio)\n    sio.write(\".EOO\\n\")\n\n\n@iemapp()\ndef application(_environ, start_response):\n    \"\"\"Do Something\"\"\"\n    headers = [(\"Content-type\", \"text/csv;header=present\")]\n    start_response(\"200 OK\", headers)\n    sio = StringIO()\n    do_output(sio)\n    return [sio.getvalue().encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/__init__.py",
    "content": "\"\"\"\nExamples of widget types\n\ndict(type='date', name='date2', default='2012/03/15', label='Bogus2:',\n     min=\"1893/01/01\"), # Comes back to python as yyyy-mm-dd\n\n>>> res = list(range(230))\n>>> for key in scripts.data:\n...   for entry in scripts.data[key]:\n...     for opt in entry['options']:\n...       if opt[\"id\"] in res:\n...         res.remove(opt[\"id\"])\n...\n>>> res\n\nNot listed due to having no PNG output\n111, 112, 114, 115, 117, 118, 121, 122, 123, 124, 141, 143\n\n\"\"\"\n\nimport importlib\n\nfrom pyiem.exceptions import BadWebRequest\n\nARG_IEMRE_DOMAIN = {\n    \"type\": \"select\",\n    \"name\": \"domain\",\n    \"default\": \"conus\",\n    \"label\": \"Select IEMRE Analysis Domain (China/Europe/SA not complete):\",\n    \"options\": {\n        \"conus\": \"Contiguous USA\",\n        \"china\": \"China\",\n        \"europe\": \"Europe\",\n        \"sa\": \"South America\",\n    },\n    \"alias\": {\n        \"\": \"conus\",\n    },\n}\nARG_STATION = {\n    \"type\": \"station\",\n    \"name\": \"station\",\n    \"default\": \"IATAME\",\n    \"label\": \"Select Station (STC000? are climate district, ST0000 state avg)\",\n    \"network\": \"IACLIMATE\",\n}\nARG_ZSTATION = {\n    \"type\": \"zstation\",\n    \"name\": \"zstation\",\n    \"default\": \"AMW\",\n    \"network\": \"IA_ASOS\",\n    \"label\": \"Select Station:\",\n}\nARG_FEMA = {\n    \"type\": \"fema\",\n    \"name\": \"fema\",\n    \"default\": \"7\",\n    \"label\": \"Select FEMA Region:\",\n}\nFEMA_REGIONS = {\n    \"1\": \"Region 1 {ME,NH,VT,MA,CT,RI}\",\n    \"2\": \"Region 2 {NY,NJ,PR,VI}\",\n    \"3\": \"Region 3 {MD,PA,WV,DC,DE,VA}\",\n    \"4\": \"Region 4 {NC,SC,GA,FL,AL,MS,TN,KY}\",\n    \"5\": \"Region 5 {IL,IN,OH,MI,WI,MN}\",\n    \"6\": \"Region 6 {NM,TX,OK,LA,AR}\",\n    \"7\": \"Region 7 {NE,IA,KS,MO}\",\n    \"8\": \"Region 8 {MT,ND,SD,WY,UT,CO}\",\n    \"9\": \"Region 9 {NV,AZ,CA,FSM,GU,HI,RMI,CNMI,AS}\",\n    \"10\": \"Region 10 {AK,WA,OR,ID}\",\n}\n\n\ndef fema_region2states(region: str) -> tuple:\n    \"\"\"Convert string region code to list of states.\"\"\"\n    label = FEMA_REGIONS[region]\n    return label.split(\"{\")[1][:-1].split(\",\")\n\n\ndef get_monofont():\n    \"\"\"Return the monospace font\"\"\"\n    from matplotlib.font_manager import FontProperties\n\n    return FontProperties(family=\"monospace\")\n\n\ndef import_script(p: int):\n    \"\"\"Import the script for the given product ID\"\"\"\n    s = \"\"\n    if p >= 200:\n        s = \"200\"\n    elif p >= 100:\n        s = \"100\"\n    # We used to reload the module here each time, but in local dev we are\n    # cycling the mod_wsgi process every request and in prod, \\_o_/\n    try:\n        return importlib.import_module(f\"iemweb.autoplot.scripts{s}.p{p}\")\n    except ModuleNotFoundError as exp:\n        raise BadWebRequest(\"Invalid autoplot id\") from exp\n\n\n# Association of plots\ndaily_opts = [\n    {\n        \"id\": 51,\n        \"label\": (\n            \"Accumulated Station Departures of Precip/GDD/SDD \"\n            \"(Automated Stations)\"\n        ),\n    },\n    {\n        \"id\": 108,\n        \"label\": (\n            \"Accumulated Station Departures of Precip/GDD/SDD \"\n            \"(Long Term Climate)\"\n        ),\n    },\n    {\n        \"id\": 172,\n        \"label\": (\n            \"Accumulated Year to Date / Period Precip / Snowfall \"\n            \"/ CDD / GDD / HDD\"\n        ),\n    },\n    {\n        \"id\": 149,\n        \"label\": \"Aridity Index (High Temperature minus Precip Departures)\",\n    },\n    {\n        \"id\": 11,\n        \"label\": (\n            \"ASOS Daily Min/Max Dew Point/Temp/Feels Like/RH for a Year\"\n        ),\n    },\n    {\"id\": 94, \"label\": \"Bias of 24 Hour High+Low Computation by Hour\"},\n    {\"id\": 96, \"label\": \"Bias of 24 Hour Precip Computation by Hour\"},\n    {\n        \"id\": 82,\n        \"label\": (\n            \"Calendar of Daily Observations from Automated or Climate Sites\"\n        ),\n    },\n    {\"id\": 218, \"label\": \"Daily NWS CLImate Report Infographic\"},\n    {\"id\": 180, \"label\": \"Daily Temperature/Precip/Snowfall Climatology\"},\n    {\n        \"id\": 32,\n        \"label\": \"Daily Departures / Percentiles / Ranges for One Year\",\n    },\n    {\n        \"id\": 21,\n        \"label\": \"Change in NCEI 1991-2020 Daily Climatology over X Days\",\n    },\n    {\"id\": 174, \"label\": \"Compare Daily High/Low Temps for ASOS Stations\"},\n    {\n        \"id\": 215,\n        \"label\": (\n            \"Compare Daily High/Low Temps Distributions \"\n            \"over Two Periods of Years\"\n        ),\n    },\n    {\n        \"id\": 91,\n        \"label\": \"Consecutive Day Statistics of High+Low Temps / Precip\",\n    },\n    {\n        \"id\": 66,\n        \"label\": (\n            \"Consecutive Days Frequency by DOY for High/Low/Precip \"\n            \"Above/Below Threshold\"\n        ),\n    },\n    {\n        \"id\": 216,\n        \"label\": (\n            \"Consecutive Days by Year with Daily Summary Variable \"\n            \"Above/Below Threshold\"\n        ),\n    },\n    {\n        \"id\": 9,\n        \"label\": (\n            \"Cooling/Growing/Heating/Stress Degree Day \"\n            \"Daily Values and Climatology\"\n        ),\n    },\n    {\n        \"id\": 49,\n        \"label\": (\n            \"Daily/Multi-Day Frequency of Some Threshold/Range \"\n            \"(snow, precip, temps)\"\n        ),\n    },\n    {\"id\": 113, \"label\": \"Daily Climatology\"},\n    {\"id\": 176, \"label\": \"Daily/Monthly/Yearly Records Beat Margin\"},\n    {\"id\": 5, \"label\": \"Daily Records for each month of year\"},\n    {\n        \"id\": 31,\n        \"label\": \"Extreme Jumps or Dips in High/Low Temperature over X days\",\n    },\n    {\n        \"id\": 147,\n        \"label\": \"Frequency of One Station Warmer/Wetter than Another\",\n    },\n    {\n        \"id\": 205,\n        \"label\": (\n            \"Frequency of Daily Summary Variables for Automated Stations\"\n        ),\n    },\n    {\n        \"id\": 252,\n        \"label\": (\n            \"Frequency of Daily Variable Above/Below Threshold over \"\n            \"period of days (map)\"\n        ),\n    },\n    {\n        \"id\": 7,\n        \"label\": \"Growing Degree Day Periods for One Year by Planting Date\",\n    },\n    {\n        \"id\": 240,\n        \"label\": \"Growing Degree Day Obs + Near Term Forecast\",\n    },\n    {\n        \"id\": 204,\n        \"label\": \"Heatmap of Daily / Trailing Daily Temperature / Precip\",\n    },\n    {\n        \"id\": 225,\n        \"label\": \"Heatmap of Distribution of Trailing Departures\",\n    },\n    {\n        \"id\": 61,\n        \"label\": (\n            \"High/Low Temp above/below avg OR dry streaks by NWS CLI Sites\"\n        ),\n    },\n    {\n        \"id\": 19,\n        \"label\": \"Histogram (weathergami) of Daily High/Low Temps + Ranges\",\n    },\n    {\"id\": 35, \"label\": \"Histogram of X Hour Temp/RH/Dew/Pressure Changes\"},\n    {\n        \"id\": 60,\n        \"label\": (\"Hourly Variable Frequencies/Min/Max by Week of Year\"),\n    },\n    {\"id\": 86, \"label\": \"IEMRE Daily Reanalysis Plots\"},\n    {\"id\": 249, \"label\": \"IEMRE Hourly Reanalysis Plots\"},\n    {\n        \"id\": 139,\n        \"label\": (\n            \"Largest / Smallest Local Calendar Day Temperature Differences\"\n        ),\n    },\n    {\"id\": 168, \"label\": \"Latest Date of Year for High Temperature\"},\n    {\"id\": 255, \"label\": \"Leaky Bucket Model for Daily Precip + Evaporation\"},\n    {\"id\": 229, \"label\": \"Lightning Stroke Density Maps\"},\n    {\n        \"id\": 262,\n        \"label\": (\n            \"Top 15 Events for Daily Variables after Offset Days of \"\n            \"certain event\"\n        ),\n    },\n    {\n        \"id\": 207,\n        \"label\": (\n            \"Local Storm Report + COOP Rainfall/Snowfall/Ice Analysis Maps\"\n        ),\n    },\n    {\"id\": 206, \"label\": \"Map of Daily Automated Station Summaries\"},\n    {\"id\": 97, \"label\": \"Map of Departures/Stats over One Period of Days\"},\n    {\n        \"id\": 34,\n        \"label\": (\n            \"Max Stretch of Days with High/Low Above/Below \"\n            \"Threshold or Climatology\"\n        ),\n    },\n    {\n        \"id\": 26,\n        \"label\": \"Min Daily Low after 1 July / Max Daily High for year\",\n    },\n    {\n        \"id\": 126,\n        \"label\": (\n            \"Mixing Ratio / Vapor Pressure Deficit Climatology \"\n            \"and Yearly Timeseries Plot\"\n        ),\n    },\n    {\n        \"id\": 84,\n        \"label\": (\n            \"MRMS / PRISM / Stage IV / IFC / IEM Reanalysis Estimated \"\n            \"Precip (multiday summaries/departures)\"\n        ),\n    },\n    {\n        \"id\": 185,\n        \"label\": (\"Number of Days to Accumulate an Amount of Precip (MRMS)\"),\n    },\n    {\n        \"id\": 256,\n        \"label\": (\n            \"NWS Regional Temperature and Precipitation (RTP) Reports by IEM\"\n        ),\n    },\n    {\n        \"id\": 164,\n        \"label\": (\n            \"Percentage of NWS CLI Sites Reporting Daily Above/Below \"\n            \"Temps or Precip/Snow\"\n        ),\n    },\n    {\n        \"id\": 22,\n        \"label\": (\n            \"Percentage of Years within Temperature Range from Averages\"\n        ),\n    },\n    {\n        \"id\": 83,\n        \"label\": (\n            \"Period Averages or Totals of X days around a \"\n            \"given day of the year\"\n        ),\n    },\n    {\n        \"id\": 140,\n        \"label\": (\n            \"Period Statistics of Temp/Precip/Wind for a date period \"\n            \"each year [ASOS/Automated Stations]\"\n        ),\n    },\n    {\n        \"id\": 107,\n        \"label\": (\n            \"Period Statistics of Temp/Precip for a date period \"\n            \"each year [COOP/Climate Sites]\"\n        ),\n    },\n    {\n        \"id\": 182,\n        \"label\": \"Precip (MRMS) Coverage Efficiency by State\",\n    },\n    {\n        \"id\": 110,\n        \"label\": \"Precip Frequency Bins by Climate Week (climodat)\",\n    },\n    {\n        \"id\": 241,\n        \"label\": \"Real-Time Mesoscale Analysis (RTMA) Max/Min Air Temperature\",\n    },\n    {\"id\": 43, \"label\": \"Recent (Past 2-3 Days) Timeseries (Meteogram)\"},\n    {\n        \"id\": 157,\n        \"label\": (\n            \"Relative Humidity, Feels Like, \"\n            \"Dew Point Climatology by Day of Year\"\n        ),\n    },\n    {\"id\": 62, \"label\": \"Snow Depth\"},\n    {\"id\": 199, \"label\": \"ISU Soil Moisture Network Daily Plots\"},\n    {\n        \"id\": 38,\n        \"label\": \"Solar Radiation Estimates ERA5Land, HRRR, MERRAv2, NARR\",\n    },\n    {\"id\": 25, \"label\": \"Spread of Daily High and Low Temperatures\"},\n    {\"id\": 137, \"label\": \"Start Date of Spring/Fall with Statistics\"},\n    {\n        \"id\": 4,\n        \"label\": \"State Areal Coverage of Precip Intensity over X Days\",\n    },\n    {\"id\": 89, \"label\": \"State Areal Coverage/Efficiency of Precip\"},\n    {\"id\": 81, \"label\": \"Standard Deviation of Daily Temperatures\"},\n    {\"id\": 28, \"label\": \"Trailing Number of Days Precip Total Rank\"},\n    {\n        \"id\": 228,\n        \"label\": \"Trailing Standardized Precip (SPI) + Drought Monitor\",\n    },\n    {\n        \"id\": 142,\n        \"label\": \"Trailing X Number of Days Temp/Precip Departures\",\n    },\n    {\"id\": 132, \"label\": \"Top 10 Precip/Temperature Values by Month/Season\"},\n    {\"id\": 190, \"label\": \"Year of Daily High/Low Temperature Record\"},\n]\nmonthly_opts = [\n    {\n        \"id\": 130,\n        \"label\": \"Average High/Low Temperature with/without Snowcover\",\n    },\n    {\"id\": 125, \"label\": \"Climatological Maps of Period Averages\"},\n    {\"id\": 1, \"label\": \"Comparison of Multi-Month Totals/Averages\"},\n    {\"id\": 55, \"label\": \"Daily Climatology Comparison\"},\n    {\"id\": 17, \"label\": \"Daily High/Low Temps or Precip with Climatology\"},\n    {\n        \"id\": 129,\n        \"label\": \"Daily Observation Percentiles/Frequencies by Month\",\n    },\n    {\"id\": 15, \"label\": \"Daily Temperature Change Frequencies by Month\"},\n    {\n        \"id\": 71,\n        \"label\": \"Daily Wind Speed, Gust, and Direction for Single Month\",\n    },\n    {\n        \"id\": 98,\n        \"label\": \"Day of Month Frequency of meeting temp/precip threshold\",\n    },\n    {\n        \"id\": 65,\n        \"label\": \"Day of the Month with the coldest/warmest temperature\",\n    },\n    {\"id\": 161, \"label\": \"Days per month/season above/below some threshold\"},\n    {\n        \"id\": 29,\n        \"label\": \"Frequency of Hourly Variable within Range by Month\",\n    },\n    {\"id\": 116, \"label\": (\"Cooling/Heating Degree Days monthly totals\")},\n    {\n        \"id\": 42,\n        \"label\": \"Consecutive Hours / Streaks Above/Below Threshold\",\n    },\n    {\"id\": 154, \"label\": \"Hourly Temperature Averages by Month\"},\n    {\"id\": 85, \"label\": \"Hourly Frequencies / Last Occurence by Month\"},\n    {\"id\": 20, \"label\": \"Hours of Precip by Month\"},\n    {\"id\": 177, \"label\": \"ISU Soil Moisture Network Timeseries Plots\"},\n    {\"id\": 115, \"label\": \"Monthly Heatmap of Summary Totals\"},\n    {\n        \"id\": 2,\n        \"label\": \"Month Precip vs Month Growing Degree Day Departures\",\n    },\n    {\n        \"id\": 223,\n        \"label\": \"Monthly/Seasonal Partition of Temperature/Precip Reports\",\n    },\n    {\n        \"id\": 57,\n        \"label\": \"Monthly Precip/Temperature Records or Climatology\",\n    },\n    {\n        \"id\": 95,\n        \"label\": (\n            \"Monthly Precip/Temperature with El Nino SOI Index Relationship\"\n        ),\n    },\n    {\n        \"id\": 24,\n        \"label\": (\n            \"Monthly Precip/Temperature \"\n            \"Climate District / Statewide Ranks/Aridity\"\n        ),\n    },\n    {\n        \"id\": 3,\n        \"label\": \"Monthly/Yearly Precip/Temperature Statistics by Year\",\n    },\n    {\"id\": 6, \"label\": \"Monthly Precip/Temperature Distributions\"},\n    {\"id\": 8, \"label\": \"Monthly Precip Reliability\"},\n    {\n        \"id\": 23,\n        \"label\": \"Monthly Station Departures + El Nino 3.4 Index Time Series\",\n    },\n    {\"id\": 36, \"label\": \"Month warmer/wetter than other Month for Year\"},\n    {\n        \"id\": 58,\n        \"label\": (\n            \"One Day's Precip Greater than X percentage of Monthly Total\"\n        ),\n    },\n    {\n        \"id\": 41,\n        \"label\": (\n            \"Quantile / Quantile Plot of Daily Temperatures \"\n            \"for Two Months/Periods\"\n        ),\n    },\n    {\"id\": 47, \"label\": \"Snowfall vs Precip Total for a Month\"},\n    {\n        \"id\": 39,\n        \"label\": \"Scenarios for this month besting some previous month\",\n    },\n    {\n        \"id\": 138,\n        \"label\": \"Wind Speed and Wind Direction Monthly Climatology\",\n    },\n    {\"id\": 173, \"label\": \"Wind Speed Hourly Climatology by Month or Period\"},\n]\nyearly_opts = [\n    {\n        \"id\": 135,\n        \"label\": \"Accumulated Days with High/Low Above/Below Threshold\",\n    },\n    {\n        \"id\": 246,\n        \"label\": \"Accumulated GDD/Precip Threshold Frequency by Day of Year\",\n    },\n    {\n        \"id\": 76,\n        \"label\": (\n            \"Dew Point / Vapor Pressure Deficit / RH Distributions \"\n            \"by Year or Season\"\n        ),\n    },\n    {\"id\": 125, \"label\": \"Climatological Maps of Annual/Monthly Averages\"},\n    {\n        \"id\": 151,\n        \"label\": (\n            \"Difference between two periods or single period of years [map]\"\n        ),\n    },\n    {\n        \"id\": 187,\n        \"label\": \"Compare one station yearly summary vs entire state\",\n    },\n    {\n        \"id\": 244,\n        \"label\": \"Compare NCEI Climdiv to IEM Climodat Statewide Values\",\n    },\n    {\n        \"id\": 128,\n        \"label\": \"Comparison of Yearly Summaries between two stations\",\n    },\n    {\"id\": 99, \"label\": \"Daily High + Low Temperatures with Departures\"},\n    {\n        \"id\": 12,\n        \"label\": (\n            \"Days per year and first/latest date above/below given threshold\"\n        ),\n    },\n    {\n        \"id\": 184,\n        \"label\": (\n            \"Days per year with High Temperature above temperature thresholds\"\n        ),\n    },\n    {\n        \"id\": 74,\n        \"label\": (\n            \"Days per year by season or year with temperature \"\n            \"above/below threshold\"\n        ),\n    },\n    {\n        \"id\": 181,\n        \"label\": (\"Days per year with temp/precip/snowfall within ranges\"),\n    },\n    {\n        \"id\": 13,\n        \"label\": \"End/Start Date of Summer (warmest 91 day period) per Year\",\n    },\n    {\n        \"id\": 27,\n        \"label\": \"First Fall Temp Below Threshold (First Freeze/Frost)\",\n    },\n    {\n        \"id\": 165,\n        \"label\": \"First / Last Date of Air/Soil Temperature Threshold [map]\",\n    },\n    {\n        \"id\": 119,\n        \"label\": \"Frequency of First/Last Fall High/Low Temp by Day of Year\",\n    },\n    {\n        \"id\": 120,\n        \"label\": (\n            \"Frequency of Last Spring High/Low Temperature by Day of Year\"\n        ),\n    },\n    {\"id\": 189, \"label\": (\"General yearly totals with trend line fitted\")},\n    {\"id\": 179, \"label\": (\"Growing Degree Day Scenarios For This Year\")},\n    {\n        \"id\": 152,\n        \"label\": (\"Growing Season Differences Map between Two Periods\"),\n    },\n    {\n        \"id\": 148,\n        \"label\": \"Holiday or Same Day Daily Weather Observations each year\",\n    },\n    {\n        \"id\": 53,\n        \"label\": \"Hourly Frequency of Variable within Certain Ranges\",\n    },\n    {\n        \"id\": 10,\n        \"label\": (\n            \"Last Spring and First Fall Date above/below given threshold\"\n        ),\n    },\n    {\"id\": 64, \"label\": \"Last or First Snowfall of Each Winter Season\"},\n    {\"id\": 33, \"label\": \"Maximum Low Temperature Drop\"},\n    {\n        \"id\": 188,\n        \"label\": (\n            \"Max/Min High/Low after first temperature exceedence of season\"\n        ),\n    },\n    {\"id\": 105, \"label\": \"Maximum Period between Precip Amounts\"},\n    {\"id\": 46, \"label\": \"Minimum Wind Chill / Max Heat Index Temperature\"},\n    {\"id\": 30, \"label\": \"Monthly Temperature Range\"},\n    {\"id\": 44, \"label\": \"NWS Office Accumulated SVR+TOR Warnings\"},\n    {\"id\": 69, \"label\": \"Percentage of Days each Year Above/Below Average\"},\n    {\n        \"id\": 77,\n        \"label\": \"Period between Last and First High Temperature for Year\",\n    },\n    {\n        \"id\": 134,\n        \"label\": \"Period each year that was warmest/coldest/wettest/driest\",\n    },\n    {\"id\": 75, \"label\": \"Precip Totals by Season/Year\"},\n    {\n        \"id\": 63,\n        \"label\": \"Records Set by Year (Max High / Min Low / Max Precip)\",\n    },\n    {\n        \"id\": 144,\n        \"label\": \"Soil Temperature Periods Above/Below Threshold in Spring\",\n    },\n    {\n        \"id\": 145,\n        \"label\": \"Soil Temperature / Moisture Daily Time Series by Year\",\n    },\n    {\n        \"id\": 175,\n        \"label\": \"Snow Coverage Percentage for State For One Winter\",\n    },\n    {\n        \"id\": 133,\n        \"label\": \"Snowfall Season Totals Split by Date within Season\",\n    },\n    {\n        \"id\": 103,\n        \"label\": \"Step Ups in High Temp / Step Downs in Low Temp by Year\",\n    },\n    {\"id\": 100, \"label\": \"Temperature / Precip Statistics by Year\"},\n    {\n        \"id\": 136,\n        \"label\": \"Time per Winter Season below Wind Chill Threshold\",\n    },\n    {\n        \"id\": 104,\n        \"label\": \"Trailing X day temp/precip departures (weather cycling)\",\n    },\n    {\n        \"id\": 14,\n        \"label\": \"Yearly Precip Contributions by Daily Totals\",\n    },\n]\nhopts = [\n    {\n        \"id\": 160,\n        \"label\": (\"River Gauge Obs and Forecasts from HML Products\"),\n    },\n    {\"id\": 178, \"label\": (\"NWS RFC Flash Flood Guidance Plots\")},\n    {\"id\": 183, \"label\": (\"US Drought Monitor Areal Coverage by State\")},\n    {\n        \"id\": 186,\n        \"label\": (\"US Drought Monitor Change in Areal Coverage by State\"),\n    },\n    {\n        \"id\": 194,\n        \"label\": (\"US Drought Monitor Time Duration over Period Maps\"),\n    },\n    {\n        \"id\": 193,\n        \"label\": (\n            \"US Drought Monitor + Weather Prediction Center (WPC) \"\n            \"Forecast Rain (QPF)\"\n        ),\n    },\n    {\n        \"id\": 231,\n        \"label\": (\"Weekly Statewide SPI Changes and Drought Classification\"),\n    },\n]\nmopts = [\n    {\n        \"id\": 78,\n        \"label\": (\n            \"Average Dew Point/RH% by Air Temperature \"\n            \"by Month or Season or Year\"\n        ),\n    },\n    {\n        \"id\": 40,\n        \"label\": (\n            \"Cloud Amount and Level Timeseries / Visibility for One Month\"\n        ),\n    },\n    {\"id\": 88, \"label\": \"Cloudiness Impact on Hourly Temperatures\"},\n    {\"id\": 214, \"label\": \"Combos of Hourly Observations Var Vs Var\"},\n    {\"id\": 59, \"label\": \"Daily u and vs Wind Component Climatologies\"},\n    {\n        \"id\": 79,\n        \"label\": (\n            \"Dew Point Distribution by Wind Direction \"\n            \"by Month or Season or Year\"\n        ),\n    },\n    {\n        \"id\": 54,\n        \"label\": (\n            \"Difference between morning low \"\n            \"or afternoon high temperature between two sites\"\n        ),\n    },\n    {\n        \"id\": 250,\n        \"label\": (\n            \"Difference between two ASOS/METAR stations \"\n            \"for a given hourly variable\"\n        ),\n    },\n    {\n        \"id\": 167,\n        \"label\": (\n            \"Flight / Aviation Condition (VFR, MVFR, IFR, LIFR) \"\n            \"hourly for one month\"\n        ),\n    },\n    {\n        \"id\": 87,\n        \"label\": (\n            \"Frequency of METAR Code (Thunder, etc) by week or day by hour\"\n        ),\n    },\n    {\n        \"id\": 131,\n        \"label\": (\n            \"Frequency of Overcast Clouds / Clear Skies \"\n            \"by Air Temperature by month/season\"\n        ),\n    },\n    {\n        \"id\": 93,\n        \"label\": (\n            \"Heat Index / Temperature / Dew Point / \"\n            \"Wind Chill Hourly Histogram\"\n        ),\n    },\n    {\"id\": 192, \"label\": \"Hourly Analysis Maps of ASOS/METAR Stations\"},\n    {\"id\": 153, \"label\": \"Hourly Extremes by Month/Season/Day Period/Year\"},\n    {\n        \"id\": 159,\n        \"label\": \"Hourly Frequency / Histogram by year and by hour of day\",\n    },\n    {\n        \"id\": 106,\n        \"label\": \"Hourly variable distributions on days exceeding threshold\",\n    },\n    {\n        \"id\": 202,\n        \"label\": \"Hourly variable comparison between two hours on one day\",\n    },\n    {\n        \"id\": 169,\n        \"label\": \"Largest Rise/Drop in Temp/Dew Point/Pressure over X Hours\",\n    },\n    {\"id\": 18, \"label\": \"Long term observation time series\"},\n    {\"id\": 45, \"label\": \"Monthly Frequency of Overcast Conditions\"},\n    {\n        \"id\": 170,\n        \"label\": \"Monthly Frequency of Present Weather Code in METAR Report\",\n    },\n    {\n        \"id\": 67,\n        \"label\": \"Monthly Frequency of Wind Speeds by Air Temperature\",\n    },\n    {\"id\": 37, \"label\": \"MOS Forecast Ranges + ASOS Observations\"},\n    {\"id\": 211, \"label\": \"One Minute Interval Plots\"},\n    {\"id\": 222, \"label\": \"One Minute Precip During Severe Weather\"},\n    {\n        \"id\": 162,\n        \"label\": \"Cloud Ceilings 2D Histogram (Level by Week)\",\n    },\n    {\n        \"id\": 213,\n        \"label\": (\n            \"Percentiles of Hourly ASOS Data by Day, Week, Month, or Year\"\n        ),\n    },\n    {\n        \"id\": 146,\n        \"label\": \"Temperature Frequency by Week During Precip\",\n    },\n    {\n        \"id\": 155,\n        \"label\": (\"Top 10 / Most Recent Hourly Reports from ASOS Stations\"),\n    },\n    {\"id\": 16, \"label\": \"Wind Rose when specified criterion is meet\"},\n]\nnsopts = [\n    {\"id\": 238, \"label\": \"NASS County Yield Maps\"},\n    {\"id\": 239, \"label\": \"NASS County Yields + Weather Station Summaries\"},\n    {\"id\": 156, \"label\": \"NASS Crop Condition by Year for Six States\"},\n    {\"id\": 127, \"label\": \"NASS Crop Progress by Year\"},\n    {\"id\": 197, \"label\": \"NASS Crop Progress State Average Map\"},\n    {\"id\": 209, \"label\": \"NASS Crop Progress Weekly Change\"},\n]\nnopts = [\n    {\n        \"id\": 196,\n        \"label\": (\n            \"ASOS/METAR Heat Index / Wind Chill Frequencies by \"\n            \"NWS Alert Headline\"\n        ),\n    },\n    {\n        \"id\": 232,\n        \"label\": (\n            \"ASOS/METAR Time Series during NWS Alert Headline \"\n            \"(Blizzard / Fire / Fog / Wind / Heat / Wind Chill)\"\n        ),\n    },\n    {\n        \"id\": 191,\n        \"label\": \"Calendar Plot of Watch/Warn/Adv Daily Counts\",\n    },\n    {\n        \"id\": 253,\n        \"label\": (\n            \"NWS Damage Assessment Toolkit (DAT) Tornado Tracks + Lead Time\"\n        ),\n    },\n    {\"id\": 92, \"label\": \"Days since Last Watch/Warning/Advisory by WFO\"},\n    {\n        \"id\": 72,\n        \"label\": \"Frequency of Watch/Warning/Advisories by Time of Day\",\n    },\n    {\n        \"id\": 50,\n        \"label\": (\n            \"Frequency of Hail/Wind Tags used in Severe TStorm Warnings\"\n        ),\n    },\n    {\n        \"id\": 52,\n        \"label\": \"Gantt Chart of Watch/Warning/Advisories by WFO or UGC\",\n    },\n    {\"id\": 245, \"label\": \"Local Storm Reports by Month/Year + Top 10 Daily\"},\n    {\"id\": 234, \"label\": \"Local Storm Reports Calendar Counts\"},\n    {\"id\": 163, \"label\": \"Local Storm Reports Issued by WFO/State [map]\"},\n    {\"id\": 102, \"label\": \"Local Storm Report Source Type Ranks by Year\"},\n    {\n        \"id\": 237,\n        \"label\": \"Map of WFO/CWSU Miscellaneous Event Counts (SPS/CWA)\",\n    },\n    {\n        \"id\": 260,\n        \"label\": \"Map of WFO Watch/Warning/Advisories over a Time Period\",\n    },\n    {\n        \"id\": 44,\n        \"label\": \"NWS Office Accumulated Watch/Warning/Advisories by Year\",\n    },\n    {\n        \"id\": 68,\n        \"label\": \"Number of Distinct Phenomena/Significance VTEC per Year\",\n    },\n    {\n        \"id\": 73,\n        \"label\": \"Number of Watch/Warning/Advisories Issued per Year\",\n    },\n    {\n        \"id\": 171,\n        \"label\": (\n            \"Number of Watch/Warning/Advisories Issued per Year per Month + \"\n            \"Top 10 Daily\"\n        ),\n    },\n    {\n        \"id\": 247,\n        \"label\": \"NWS Watch Warning Advisory (WaWa) Map + Population Stats\",\n    },\n    {\n        \"id\": 251,\n        \"label\": \"NWS Warning Load Time Series\",\n    },\n    {\n        \"id\": 70,\n        \"label\": \"Period between First and Last VTEC Product Each Year\",\n    },\n    {\n        \"id\": 248,\n        \"label\": \"Period between First and Last SPC/WPC Outlook each Year\",\n    },\n    {\n        \"id\": 224,\n        \"label\": \"Population/Area under NWS Watch/Warning/Advisory at Time\",\n    },\n    {\"id\": 203, \"label\": \"Storm Based Warning Polygon Visual Summary\"},\n    {\"id\": 195, \"label\": \"Storm Motion distribution based on NWS Warnings\"},\n    {\n        \"id\": 201,\n        \"label\": (\n            \"SPC Convective/Fire Wx or WPC Excessive Rainfall Outlook Calendar\"\n        ),\n    },\n    {\n        \"id\": 258,\n        \"label\": (\n            \"SPC Convective/Fire Wx or \"\n            \"WPC Excessive Rainfall Outlook Progression for Lat/Lon\"\n        ),\n    },\n    {\n        \"id\": 230,\n        \"label\": (\n            \"SPC Convective/Fire Wx or \"\n            \"WPC Excessive Rainfall Last Event Infographic\"\n        ),\n    },\n    {\"id\": 200, \"label\": \"SPC + WPC Outlook Heatmap\"},\n    {\n        \"id\": 143,\n        \"label\": (\n            \"Special Weather Statements (SPS) Polygon Count by Year by Month\"\n        ),\n    },\n    {\n        \"id\": 233,\n        \"label\": (\n            \"Special Weather Statements (SPS) Polygon Calendar of Daily Counts\"\n        ),\n    },\n    {\n        \"id\": 166,\n        \"label\": (\n            \"Storm Prediction Center (SPC) Watches per Year for a State\"\n        ),\n    },\n    {\"id\": 210, \"label\": \"Text Product Frequency Maps\"},\n    {\"id\": 235, \"label\": \"Text Product Issuance Counts by Month + Year\"},\n    {\"id\": 261, \"label\": \"Text Product Issuance Heatmap by Hour / Day\"},\n    {\"id\": 48, \"label\": \"Time of Day Frequency for Given Warning / UGC\"},\n    {\n        \"id\": 80,\n        \"label\": \"Time Duration of a Watch/Warning/Advisory for a UGC/WFO\",\n    },\n    {\"id\": 243, \"label\": \"Top 10 VTEC Event Days/Multi-Day by Year/Month\"},\n    {\"id\": 101, \"label\": \"Top 25 Most Frequent VTEC Products by Office/NWS\"},\n    {\"id\": 259, \"label\": \"UGC Geometry Change Diagnostic\"},\n    {\n        \"id\": 56,\n        \"label\": \"Weekly/Daily/Monthly Frequency of a Watch/Warning/Advisory\",\n    },\n    {\n        \"id\": 109,\n        \"label\": (\n            \"WFO / State VTEC Event Counts/Time Coverage Percent/Num Days \"\n            \"for a Given Period (map)\"\n        ),\n    },\n    {\"id\": 208, \"label\": (\"WFO VTEC Single Event Map Plot (map)\")},\n    {\n        \"id\": 90,\n        \"label\": (\n            \"UGC or Polygon SBW Statistics for \"\n            \"Watch/Warning/Advisory by state/wfo\"\n        ),\n    },\n]\ntopts = [{\"id\": 158, \"label\": \"Tall Towers - 1 Second Interval Time Series \"}]\nuopts = [\n    {\n        \"id\": 198,\n        \"label\": (\n            \"Monthly Max/Min/Avgs for Sounding Parameter \"\n            \"or Variable at Given Level\"\n        ),\n    },\n    {\n        \"id\": 150,\n        \"label\": (\"Single Sounding Mandatory Level Percentile Ranks\"),\n    },\n    {\"id\": 212, \"label\": \"Sounding Parameter / Variable Yearly Timeseries\"},\n]\nmisc = [\n    {\"id\": 226, \"label\": \"Center Weather Advisory (CWA) Map\"},\n    {\"id\": 257, \"label\": \"HRRR Comprehensive Climate Index (CCI)\"},\n    {\"id\": 221, \"label\": \"HRRR Time-Lagged Ensemble Reflectivity Plot\"},\n    {\"id\": 242, \"label\": \"Local Storm Report (LSR) Simple Map\"},\n    {\"id\": 254, \"label\": \"NEXRAD Level III Latency over NOAAPort\"},\n    {\"id\": 227, \"label\": \"NWEM / NWS Non-VTEC Products containing a polygon\"},\n    {\"id\": 236, \"label\": \"PIREP Daily Counts by ARTCC / Alaska Zone\"},\n    {\n        \"id\": 220,\n        \"label\": (\n            \"SPC Convective / Fire Weather / \"\n            \"WPC Excessive Rainfall Outlook Graphics\"\n        ),\n    },\n    {\"id\": 217, \"label\": \"SPS Special Weather Statement Maps\"},\n    {\"id\": 219, \"label\": \"Terminal Aerodome Forecast (TAF) Infographic\"},\n]\ndata: dict[str, list[dict]] = {\n    \"plots\": [\n        {\"label\": \"Daily\", \"options\": daily_opts},\n        {\"label\": \"Monthly\", \"options\": monthly_opts},\n        {\"label\": \"Yearly\", \"options\": yearly_opts},\n        {\"label\": \"Hydrology / Drought Monitor Plots\", \"options\": hopts},\n        {\"label\": \"METAR ASOS Special Plots\", \"options\": mopts},\n        {\"label\": \"NASS Quickstats (USDA Crop Statistics)\", \"options\": nsopts},\n        {\"label\": \"NWS Warning Plots\", \"options\": nopts},\n        {\"label\": \"Tall Towers Plots\", \"options\": topts},\n        {\"label\": \"Upper Air / RAOB Sounding Plots\", \"options\": uopts},\n        {\"label\": \"Miscellaneous\", \"options\": misc},\n    ]\n}\n"
  },
  {
    "path": "pylib/iemweb/autoplot/autoplot.py",
    "content": "\"\"\"Our mod_wsgi frontend to autoplot generation\"\"\"\n\nimport json\nimport os\nimport sys\nimport syslog\nimport tempfile\nimport traceback\nfrom datetime import timezone\nfrom io import BytesIO\nfrom zoneinfo import ZoneInfo\n\nimport matplotlib as mpl\nimport numpy as np\nimport pandas as pd\nimport rasterio\nfrom pandas.api.types import is_datetime64_any_dtype as isdt\nfrom PIL import Image\nfrom pyiem.autoplot import get_autoplot_context\nfrom pyiem.exceptions import (\n    BadWebRequest,\n    IncompleteWebRequest,\n    NoDataFound,\n    UnknownStationException,\n)\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import utc\nfrom pyiem.webutil import TELEMETRY, iemapp, write_telemetry\nfrom pymemcache.client import Client\n\nfrom iemweb import error_log\nfrom iemweb.autoplot import import_script\n\n# Attempt to stop hangs within mod_wsgi and numpy\nnp.seterr(all=\"ignore\")\n\n\nHTTP200 = \"200 OK\"\nHTTP400 = \"400 Bad Request\"\nHTTP422 = \"422 Unprocessable Entity\"\nHTTP500 = \"500 Internal Server Error\"\n\n\ndef format_geojson_response(gdf: pd.DataFrame, defaultcol: str) -> str:\n    \"\"\"Convert geodataframe into GeoJson.\"\"\"\n    # Avert your eyes children\n    jdict = json.loads(gdf.to_json(), parse_float=lambda x: round(float(x), 2))\n    jdict[\"meta\"] = {}\n    jdict[\"meta\"][\"propdefault\"] = defaultcol\n    jdict[\"meta\"][\"proporder\"] = [x for x in gdf.columns if x != \"geom\"]\n    return json.dumps(jdict)\n\n\ndef parser(cgistr: str) -> dict:\n    \"\"\"Convert a CGI string into a dict that gets passed to the plotting\n    routine\"\"\"\n    # want predictable / stable URIs, generally.\n    data = {}\n    # GIGO\n    if cgistr.find(\"::::\") > -1:\n        raise IncompleteWebRequest(\"Too many semicolons\")\n    for token in cgistr.replace(\":::\", \": ::\").split(\"::\"):\n        token2 = token.split(\":\")\n        if len(token2) != 2:\n            continue\n        if token2[1] == \" \":  # Undo hack above\n            token2[1] = \"\"\n        if token2[0] in data:\n            if isinstance(data[token2[0]], str):\n                data[token2[0]] = [data[token2[0]]]\n            data[token2[0]].append(token2[1])\n        else:\n            data[token2[0]] = token2[1]\n    return data\n\n\ndef get_response_headers(status, fmt):\n    \"\"\"Figure out some headers\"\"\"\n    extra = None\n    if fmt == \"png\":\n        ctype = \"image/png\"\n    elif fmt == \"js\":\n        ctype = \"application/javascript\"\n    elif fmt == \"geojson\":\n        ctype = \"application/vnd.geo+json\"\n    elif fmt == \"svg\":\n        ctype = \"image/svg+xml\"\n    elif fmt == \"pdf\":\n        ctype = \"application/pdf\"\n    elif fmt in [\"csv\", \"txt\"]:\n        ctype = \"text/plain\"\n    elif fmt == \"geotiff\":\n        # Can't handle writting error into this type\n        if status != HTTP200:\n            ctype = \"text/plain\"\n        else:\n            ctype = \"image/tiff\"\n            extra = [\n                (\"Content-Disposition\", \"attachment;Filename=autoplot.geotiff\")\n            ]\n    else:\n        if status != HTTP200:\n            ctype = \"text/plain\"\n        else:\n            ctype = \"application/vnd.ms-excel\"\n            extra = [(\"Content-Disposition\", \"attachment;Filename=iem.xlsx\")]\n    res = [(\"Content-type\", ctype)]\n    if extra:\n        res.extend(extra)\n    return res\n\n\ndef error_image(message, fmt):\n    \"\"\"Create an error image\"\"\"\n    fig = mpl.figure.Figure(figsize=(8, 6))\n    ax = fig.add_subplot(1, 1, 1)\n    cleantext = str(message).replace(\"\\t\", \"\")\n    msg = f\"IEM Autoplot generation resulted in an error\\n{cleantext}\"\n    ax.text(0.5, 0.5, msg, transform=ax.transAxes, ha=\"center\", va=\"center\")\n    ax.axis(\"off\")\n    ram = BytesIO()\n    fig.savefig(ram, format=fmt, dpi=100)\n    ram.seek(0)\n    fig.clear()\n    return ram.read()\n\n\ndef handle_error(exp, fmt, environ: dict):\n    \"\"\"Handle errors\"\"\"\n    exc_type, exc_value, exc_traceback = sys.exc_info()\n    tb = traceback.extract_tb(exc_traceback)[-1]\n    if not isinstance(exp, UnknownStationException):\n        error_log(\n            environ,\n            f\"URI:{environ['REQUEST_URI']} {exp.__class__.__name__} \"\n            f\"method:{tb[2]} lineno:{tb[1]} {exp}\",\n        )\n    if not isinstance(\n        exp,\n        IncompleteWebRequest | NoDataFound | UnknownStationException,\n    ):\n        traceback.print_exc()\n    del (exc_type, exc_value, exc_traceback, tb)\n    if fmt in [\"png\", \"svg\", \"pdf\"]:\n        return error_image(str(exp), fmt)\n    if fmt == \"js\":\n        return f\"alert('{exp}');\"\n    return str(exp)\n\n\ndef get_res_by_fmt(p, fmt, fdict):\n    \"\"\"Do the work of actually calling things\"\"\"\n    mod = import_script(p)\n\n    meta = mod.get_description()\n    # When _gallery is set, inspect meta to see if it has something hardcoded\n    if fdict.get(\"_gallery\") is not None and meta.get(\"gallery\") is not None:\n        fdict.update(meta[\"gallery\"])\n    # Allow returning of javascript as a string\n    ctx = get_autoplot_context(fdict, mod.get_description())\n    if fmt == \"js\":\n        # Need to pass the container name\n        ctx[\"_e\"] = fdict.get(\"_e\", \"ap_container\")\n        res = mod.get_highcharts(ctx)\n    elif fmt == \"geotiff\":\n        (img, imgaff, crs) = mod.get_raster(ctx)\n        ram = BytesIO()\n        with rasterio.open(\n            ram,\n            \"w\",\n            driver=\"GTiff\",\n            width=img.shape[1],\n            height=img.shape[0],\n            count=1,\n            dtype=img.dtype,\n            crs=crs,\n            transform=imgaff,\n        ) as dst:\n            dst.write(img, 1)\n        res = [ram.getvalue(), None, None]\n    elif fmt == \"geojson\":\n        res = format_geojson_response(*mod.geojson(ctx))\n    else:\n        res = mod.plotter(ctx)\n    # res should be either a 2 or 3 length tuple, rectify this otherwise\n    if not isinstance(res, list | tuple):\n        res = [res, None, None]\n    if len(res) == 2:\n        res = [res[0], res[1], None]\n    return res, meta\n\n\ndef plot_metadata(fig, start_time, p):\n    \"\"\"Place timestamp on the image\"\"\"\n    now = utc().astimezone(ZoneInfo(\"America/Chicago\"))\n    fig.text(\n        0.01,\n        0.005,\n        f\"Generated at {now:%-d %b %Y %-I:%M %p %Z} in \"\n        f\"{((utc() - start_time).total_seconds()):.2f}s\",\n        va=\"bottom\",\n        ha=\"left\",\n        fontsize=8,\n    )\n    fig.text(\n        0.99,\n        0.005,\n        f\"IEM Autoplot App #{p}\",\n        va=\"bottom\",\n        ha=\"right\",\n        fontsize=8,\n    )\n\n\ndef get_mckey(scriptnum, fdict: dict, fmt: str):\n    \"\"\"Figure out what our memcache key should be.\"\"\"\n    vals = []\n    for key in fdict:\n        # Internal app controls should not be used on the memcache key\n        # except when they should be, sigh\n        if not key.startswith(\"_\") or key in [\"_r\", \"_\"]:\n            vals.append(f\"{key}:{fdict[key]}\")  # noqa\n    mckey = (\n        f\"/plotting/auto/plot/{scriptnum}/{'::'.join(vals)}.{fmt}\"\n    ).replace(\" \", \"\")\n    # If the key does not decode to ascii, this is likely a naughty request\n    try:\n        mckey.encode(\"ascii\")\n    except UnicodeEncodeError as exp:\n        raise BadWebRequest(\"Memcache key is non-ASCII\") from exp\n\n    return mckey\n\n\ndef workflow(mc, environ: dict, fmt: str):\n    \"\"\"we need to return a status and content\"\"\"\n    # q is the full query string that was rewritten to use by apache\n    q = environ.get(\"q\", \"\")\n    fdict = parser(q)\n    # p=number is the python backend code called by this framework\n    scriptnum = int(environ[\"p\"])\n    fdict[\"dpi\"] = max(min([int(float(fdict.get(\"dpi\", 100))), 500]), 50)\n\n    # memcache keys can not have spaces\n    mckey = get_mckey(scriptnum, fdict, fmt)\n    if len(mckey) < 250:\n        # Don't fetch memcache when we have _cb set for an inbound CGI\n        res = mc.get(mckey) if fdict.get(\"_cb\") is None else None\n        if res:\n            return HTTP200, res\n    # memcache failed to save us work, so work we do!\n    start_time = utc()\n    # res should be a 3 length tuple\n    try:\n        res, meta = get_res_by_fmt(scriptnum, fmt, fdict)\n    except (IncompleteWebRequest, NoDataFound, UnknownStationException) as exp:\n        return HTTP400, handle_error(exp, fmt, environ)\n    except BadWebRequest as exp:\n        raise BadWebRequest(\"\") from exp\n    except Exception as exp:\n        # Log this so that my review scripts see it.\n        write_telemetry(\n            TELEMETRY(\n                (utc() - start_time).total_seconds(),\n                500,\n                environ.get(\"REMOTE_ADDR\", \"127.0.0.1\"),\n                environ.get(\"SCRIPT_NAME\"),\n                environ.get(\"REQUEST_URI\"),\n                environ.get(\"HTTP_HOST\"),\n            )\n        )\n        # Everything else should be considered fatal\n        return HTTP500, handle_error(exp, fmt, environ)\n\n    [mixedobj, df, report] = res\n    # Our output content\n    content = \"\"\n    if fmt == \"js\" and isinstance(mixedobj, dict):\n        content = f'Highcharts.chart(\"ap_container\", {json.dumps(mixedobj)});'\n    elif fmt in [\"js\", \"geojson\", \"geotiff\"]:\n        content = mixedobj\n    elif fmt in [\"svg\", \"png\", \"pdf\"]:\n        if isinstance(mixedobj, mpl.figure.Figure):\n            # if our content is a figure, then add some fancy metadata to plot\n            if meta.get(\"plotmetadata\", True):\n                plot_metadata(mixedobj, start_time, scriptnum)\n            ram = BytesIO()\n            mixedobj.savefig(ram, format=fmt, dpi=fdict[\"dpi\"])\n            mixedobj.clear()\n            ram.seek(0)\n            content = ram.read()\n        elif isinstance(mixedobj, Image.Image):\n            ram = BytesIO()\n            mixedobj.save(ram, fmt)\n            ram.seek(0)\n            content = ram.read()\n\n        elif mixedobj is None:\n            return (\n                HTTP400,\n                error_image(\n                    (\"plot requested but backend does not support plots\"), fmt\n                ),\n            )\n    elif fmt == \"txt\" and report is not None:\n        content = report\n    elif fmt in [\"csv\", \"txt\", \"xlsx\"] and df is not None:\n        # If the index is a datetime object, we need to convert it to a string\n        if isdt(df.index):\n            dtz = df.index.tz\n            # We could have timezone or zoneinfo :/\n            if dtz is not None and dtz in [\n                ZoneInfo(\"UTC\"),\n                timezone.utc,\n            ]:\n                df.index = df.index.strftime(ISO8601)\n            else:\n                df.index = df.index.strftime(\"%Y-%m-%dT%H:%M:%S\")\n        # Dragons: do timestamp conversion as pandas has many bugs\n        for column in df.columns:\n            if isdt(df[column]):\n                # Careful, only use ISO format when the timezone is UTC\n                dtz = df[column].dt.tz\n                # We could have timezone or zoneinfo :/\n                if dtz is not None and dtz in [\n                    ZoneInfo(\"UTC\"),\n                    timezone.utc,\n                ]:\n                    df[column] = df[column].dt.strftime(ISO8601)\n                else:\n                    df[column] = df[column].dt.strftime(\"%Y-%m-%dT%H:%M:%S\")\n\n        if fmt in [\"csv\", \"txt\"]:  # Meh on the txt here\n            content = df.to_csv(index=(df.index.name is not None), header=True)\n        elif fmt == \"xlsx\":\n            # Can't write to ram buffer yet, unimplmented upstream\n            (_, tmpfn) = tempfile.mkstemp()\n            df.index.name = None\n            # Need to set engine as xlsx/xls can't be inferred\n            with pd.ExcelWriter(tmpfn, engine=\"openpyxl\") as writer:\n                df.to_excel(writer, sheet_name=\"Sheet1\")\n            with open(tmpfn, \"rb\") as fh:\n                content = fh.read()\n            os.unlink(tmpfn)\n    else:\n        error_log(\n            environ,\n            f\"Undefined edge case: fmt: {fmt} \"\n            f\"uri: {environ.get('REQUEST_URI')}\",\n        )\n        return HTTP422, \"Undefined edge case encountered\"\n\n    dur = int(meta.get(\"cache\", 43200))\n    try:\n        # we have a 10 MB limit within memcache, so don't write objects bigger\n        if len(content) < 9.5 * 1024 * 1024:\n            # Default encoding is ascii for text\n            mc.set(\n                mckey.encode(\"ascii\"),\n                (\n                    content\n                    if isinstance(content, bytes)\n                    else content.encode(\"utf-8\")\n                ),\n                dur,\n            )\n        else:\n            error_log(\n                environ,\n                f\"Memcache object too large: {len(content)} \"\n                f\"uri: {environ.get('REQUEST_URI')}\",\n            )\n    except UnicodeEncodeError as exp:\n        raise BadWebRequest(\"Memcache key is non-ASCII\") from exp\n    except Exception as exp:\n        error_log(environ, f\"Exception while writting key: {mckey} {exp}\")\n    if isinstance(mixedobj, mpl.figure.Figure):\n        mixedobj.clear()\n    syslog.syslog(\n        syslog.LOG_LOCAL1 | syslog.LOG_INFO,\n        f\"Autoplot[{scriptnum:3.0f}] \"\n        f\"Timing: {(utc() - start_time).total_seconds():.3f}s \"\n        f\"Key: {mckey} Cache: {dur}[s]\",\n    )\n    return HTTP200, content\n\n\n@iemapp(parse_times=False, allowed_as_list=[\"ltype\"])\ndef application(environ, start_response):\n    \"\"\"Our Application!\"\"\"\n    if \"p\" not in environ:\n        raise IncompleteWebRequest(\"GET parameter p is missing.\")\n    # Parse the request that was sent our way\n    # HACK\n    qstr = environ.get(\"q\", \"\")\n    if qstr.find(\"network:WFO::wfo:PHEB\") > -1:\n        environ[\"q\"] = qstr.replace(\"network:WFO\", \"network:NWS\")\n    if qstr.find(\"network:WFO::wfo:NHC\") > -1:\n        environ[\"q\"] = qstr.replace(\"network:WFO\", \"network:NCEP\")\n    if qstr.find(\"network:WFO::wfo:PAAQ\") > -1:\n        environ[\"q\"] = qstr.replace(\"network:WFO\", \"network:NWS\")\n    if qstr.find(\"network:AWOS\") > -1:\n        environ[\"q\"] = qstr.replace(\"network:AWOS\", \"network:IA_ASOS\")\n    # Figure out the format that was requested from us, default to png\n    fmt = environ.get(\"fmt\", \"png\")[:7]\n    mc = Client(\"iem-memcached:11211\")\n    try:\n        # do the work!\n        status, output = workflow(mc, environ, fmt)\n    except BadWebRequest as exp:\n        raise BadWebRequest(\"\") from exp\n    except Exception as exp:\n        status = HTTP500\n        output = handle_error(exp, fmt, environ)\n    finally:\n        mc.close()\n    # Special case for when we are returning a javascript alert\n    if fmt == \"js\" and status == HTTP400:\n        start_response(HTTP200, get_response_headers(status, fmt))\n        return [output.encode(\"utf-8\")]\n    # Figure out what our response headers should be\n    start_response(status, get_response_headers(status, fmt))\n    if isinstance(output, str):\n        output = output.encode(\"UTF-8\")\n    return [output]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/barchart.py",
    "content": "\"\"\"An opinionated autoplot bar chart.\"\"\"\n\nfrom matplotlib.figure import Figure\nfrom matplotlib.table import table\nfrom pandas import DataFrame\n\n\ndef _gen_celltext(data, column, labelformat):\n    \"\"\"Generate the cell text for the top/bottom 10 tables.\"\"\"\n    cell_text = []\n    rank = 0\n    last_value = None\n    for idx, row in data.head(10).iterrows():\n        if row[column] != last_value:\n            rank += 1\n        vv = labelformat % (row[column],)\n        cell_text.append([f\"#{rank}\", f\"{idx}\", f\"{vv}\"])\n        last_value = row[column]\n    return cell_text\n\n\ndef barchart_with_top10(\n    fig: Figure,\n    data: DataFrame,\n    column: str,\n    **kwargs,\n):\n    \"\"\"Generates a bar chart with the top 10 values at the side and bling.\n\n    Args:\n        fig (Figure): matplotlib figure object\n        data (DataFrame): pandas dataframe with an index used as x-axis\n        column (str): column name to plot\n        **kwargs: additional keyword arguments\n            ax (matplotlib axis): axis to plot on\n            color (str or list-like): color of the bars\n            labelformat (str): format string for the labels\n            width (float): width of the bars, default 1.\n            table_col_title (str): Title for column or defaults to column\n\n    Returns:\n        ax: matplotlib axis object\n    \"\"\"\n    ax = kwargs.get(\"ax\")\n    if ax is None:\n        ax = fig.add_axes((0.1, 0.1, 0.7, 0.8))\n    ax.bar(\n        data.index,\n        data[column],\n        width=kwargs.get(\"width\", 1.0),\n        color=kwargs.get(\"color\", \"b\"),\n    )\n    try:\n        ax.ticklabel_format(useOffset=False)\n    except AttributeError:\n        pass\n    cell_text = _gen_celltext(\n        data.sort_values(column, ascending=False),\n        column,\n        kwargs.get(\"labelformat\", \"%.1f\"),\n    )\n\n    axpos = ax.get_position()\n    tableax = fig.add_axes(\n        [axpos.x1 + 0.02, axpos.y0, 0.96 - axpos.x1, axpos.y1 - axpos.y0],\n        frame_on=False,\n        xticks=[],\n        yticks=[],\n    )\n    tableax.axhspan(0.95, 1, color=\"black\", alpha=0.1)\n    tableax.text(0.5, 0.975, \"Top 10\", ha=\"center\", va=\"center\")\n    top10_table = table(\n        tableax,\n        cellText=cell_text,\n        colLabels=[\n            \"Rank\",\n            data.index.name,\n            kwargs.get(\"table_col_title\", column),\n        ],\n        bbox=[0, 0.5, 1, 0.45],\n        edges=\"horizontal\",\n    )\n    top10_table.auto_set_font_size(False)\n\n    cell_text = _gen_celltext(\n        data.sort_values(column, ascending=True),\n        column,\n        kwargs.get(\"labelformat\", \"%.1f\"),\n    )\n\n    tableax.axhspan(0.45, 0.5, color=\"black\", alpha=0.1)\n    tableax.text(0.5, 0.475, \"Bottom 10\", ha=\"center\", va=\"center\")\n    bottom10_table = table(\n        tableax,\n        cellText=cell_text,\n        colLabels=[\n            \"Rank\",\n            data.index.name,\n            kwargs.get(\"table_col_title\", column),\n        ],\n        bbox=[0, 0, 1, 0.45],\n        edges=\"horizontal\",\n    )\n    bottom10_table.auto_set_font_size(False)\n    tableax.set_xlim(0, 1)\n    tableax.set_ylim(0, 1)\n\n    return ax\n"
  },
  {
    "path": "pylib/iemweb/autoplot/gen_qrcode.py",
    "content": "\"\"\".. title:: QR Code Generator\n\nGenerate a QR code for a given query string.\n\nExample Usage\n-------------\n\nhttps://mesonet.agron.iastate.edu/plotting/auto/gen_qrcode.py?\\\nq=network:WFO::wfo:DMX::var:tmpf::year1:2023::month1:5::day1:1::hour1&p=1\n\n\"\"\"\n\nimport hashlib\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport qrcode\nfrom pydantic import Field\nfrom pyiem.webutil import CGIModel, iemapp\nfrom pymemcache.client import Client\n\nHTTP200 = \"200 OK\"\n\n\nclass MyModel(CGIModel):\n    p: Annotated[\n        str | None,\n        Field(\n            title=\"Plot Type\",\n            description=\"The plot type to use, if any\",\n        ),\n    ] = None\n    q: Annotated[\n        str,\n        Field(\n            title=\"Query String\",\n            description=\"The query string to encode in the QR code.\",\n            min_length=1,\n            max_length=2048,\n        ),\n    ]\n\n\ndef q2uri(qstr: str, pval: str):\n    \"\"\"Convert the query string to a URI.\"\"\"\n    if qstr.startswith(\"https://mesonet\"):\n        return qstr\n    uri = \"https://mesonet.agron.iastate.edu/plotting/auto/?\"\n    if pval is not None:\n        uri += f\"q={pval}&\"\n    for token in qstr.split(\"::\"):\n        token2 = token.split(\":\")\n        if len(token2) != 2:\n            continue\n        uri += f\"{token2[0]}={token2[1]}&\"\n    return uri[:-1]\n\n\n@iemapp(help=__doc__, schema=MyModel)\ndef application(environ: dict, start_response):\n    \"\"\"Our Application!\"\"\"\n    qstr = environ[\"q\"]\n    if qstr.find(\"network:WFO::wfo:PHEB\") > -1:\n        qstr = qstr.replace(\"network:WFO\", \"network:NWS\")\n    if qstr.find(\"network:WFO::wfo:PAAQ\") > -1:\n        qstr = qstr.replace(\"network:WFO\", \"network:NWS\")\n    uri = q2uri(qstr, environ[\"p\"])\n    mckey = hashlib.sha256(uri.encode(\"utf-8\")).hexdigest()\n    # Figure out what our response headers should be\n    response_headers = [(\"Content-type\", \"image/png\")]\n    mc = Client(\"iem-memcached:11211\")\n    res = mc.get(mckey)\n    if not res:\n        img = qrcode.make(uri)\n        bio = BytesIO()\n        img.save(bio, \"PNG\")\n        res = bio.getvalue()\n        bio.close()\n        mc.set(mckey, res, 0)\n    mc.close()\n    start_response(HTTP200, response_headers)\n    return [res]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/index.py",
    "content": "\"\"\"IEM Autoplot Frontend.\n\nIEM_APPID 92\n\"\"\"\n\nimport calendar\nimport os\nimport re\nfrom datetime import date, datetime, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport pandas as pd\nimport requests\nfrom paste.request import get_cookie_dict\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import BadWebRequest\nfrom pyiem.htmlgen import make_select, station_select\nfrom pyiem.nws.vtec import VTEC_PHENOMENA, VTEC_SIGNIFICANCE\nfrom pyiem.reference import SECTORS_NAME, state_names\nfrom pyiem.templates.iem import TEMPLATE\nfrom pyiem.util import LOG, html_escape, utc\nfrom pyiem.webutil import ensure_list, iemapp\n\nfrom iemweb.autoplot import FEMA_REGIONS\nfrom iemweb.autoplot import data as autoplot_data\nfrom iemweb.autoplot.meta import get_metadict\n\nsn_contig = state_names.copy()\nfor _sn in \"AK HI PR VI GU AS MP\".split():\n    sn_contig.pop(_sn, None)\nNETWORK_RE = re.compile(r\"^[A-Z0-9_\\-]+$\")\nDATE_RE = re.compile(r\"^(\\d{4})/(\\d{1,2})/(\\d{1,2})$\")\nSDAY_RE = re.compile(r\"^(\\d{2})(\\d{2})$\")\nDATETIME_RE = re.compile(r\"^(\\d{4})/(\\d{1,2})/(\\d{1,2}) (\\d{1,2})(\\d{2})$\")\nHIGHCHARTS = \"12.1.2\"\nOPENLAYERS = \"7.5.1\"\nCSECTORS = state_names.copy()\nCSECTORS.update(SECTORS_NAME)\nCMAPS = {\n    \"Perceptually Uniform Sequential\": [\n        \"viridis\",\n        \"plasma\",\n        \"inferno\",\n        \"magma\",\n        \"cividis\",\n    ],\n    \"Sequential\": [\n        \"Greys\",\n        \"Purples\",\n        \"Blues\",\n        \"Greens\",\n        \"Oranges\",\n        \"Reds\",\n        \"YlOrBr\",\n        \"YlOrRd\",\n        \"OrRd\",\n        \"PuRd\",\n        \"RdPu\",\n        \"BuPu\",\n        \"GnBu\",\n        \"PuBu\",\n        \"YlGnBu\",\n        \"PuBuGn\",\n        \"BuGn\",\n        \"YlGn\",\n    ],\n    \"Sequential (2)\": [\n        \"binary\",\n        \"gist_yarg\",\n        \"gist_gray\",\n        \"gray\",\n        \"bone\",\n        \"pink\",\n        \"spring\",\n        \"summer\",\n        \"autumn\",\n        \"winter\",\n        \"cool\",\n        \"Wistia\",\n        \"hot\",\n        \"afmhot\",\n        \"gist_heat\",\n        \"copper\",\n    ],\n    \"Diverging\": [\n        \"PiYG\",\n        \"PRGn\",\n        \"BrBG\",\n        \"PuOr\",\n        \"RdGy\",\n        \"RdBu\",\n        \"RdYlBu\",\n        \"RdYlGn\",\n        \"Spectral\",\n        \"coolwarm\",\n        \"bwr\",\n        \"seismic\",\n        \"berlin\",\n        \"managua\",\n        \"vanimo\",\n    ],\n    \"Cyclic\": [\n        \"twilight\",\n        \"twilight_shifted\",\n        \"hsv\",\n    ],\n    \"Qualitative\": [\n        \"Pastel1\",\n        \"Pastel2\",\n        \"Paired\",\n        \"Accent\",\n        \"Dark2\",\n        \"Set1\",\n        \"Set2\",\n        \"Set3\",\n        \"tab10\",\n        \"tab20\",\n        \"tab20b\",\n        \"tab20c\",\n    ],\n    \"Miscellaneous\": [\n        \"flag\",\n        \"prism\",\n        \"ocean\",\n        \"gist_earth\",\n        \"terrain\",\n        \"gist_stern\",\n        \"gnuplot\",\n        \"gnuplot2\",\n        \"CMRmap\",\n        \"cubehelix\",\n        \"brg\",\n        \"gist_rainbow\",\n        \"rainbow\",\n        \"jet\",\n        \"turbo\",\n        \"nipy_spectral\",\n        \"gist_ncar\",\n    ],\n}\n\n\ndef map_select_widget(network, name):\n    \"\"\"Generate the HTML for a wiz bang popup.\"\"\"\n    return f\"\"\"\n&nbsp; <button type=\"button\" id=\"button_{network}_{name}\" data-state=\"0\"\nonClick=\"mapFactory('{network}', '{name}');\"\naria-label=\"Show map for {network} {name}\">Show Map</button>\n<div style=\"display: none; width: 100%; height: 640px;\"\n id=\"map_{network}_{name}_wrap\">\n<br />Click dot to select in form above. <strong>Key</strong>\n<img src=\"/images/green_dot.svg\" style=\"height: 15px;\"> Online &nbsp;\n<img src=\"/images/red_dot.svg\" style=\"height: 15px;\"> Offline<br />\n<div style=\"width: 100%; height: 600px;\" id=\"map_{network}_{name}\"></div>\n</div>\n<div class=\"popup\" id=\"popup_{network}_{name}\" style=\"display: none;\"></div>\n\"\"\"\n\n\ndef filtervar_handler(fdict: dict, arg: dict, res: dict) -> str:\n    \"\"\"Handle the UI and processing for filtervar type.\"\"\"\n    form_name = arg[\"name\"]\n    value = fdict.get(form_name, arg[\"default\"])\n    comp_name = f\"{form_name}_comp\"\n    t_name = f\"{form_name}_t\"\n    comp_value = fdict.get(comp_name, arg.get(\"comp_default\", \"ge\"))\n    comp_opts = {\n        \"ge\": \"Greater than or equal to\",\n        \"gt\": \"Greater than\",\n        \"le\": \"Less than or equal to\",\n        \"lt\": \"Less than\",\n        \"eq\": \"Equal to\",\n        \"ne\": \"Not equal to\",\n    }\n    if comp_value not in comp_opts:\n        comp_value = arg.get(\"comp_default\", \"ge\")\n    t_value = float(fdict.get(t_name, arg.get(\"t_default\", 0)))\n    res[\"pltvars\"].append(f\"{comp_name}:{comp_value}\")\n    res[\"pltvars\"].append(f\"{t_name}:{t_value}\")\n\n    element1 = make_select(form_name, value, arg[\"options\"], showvalue=False)\n    element2 = make_select(comp_name, comp_value, comp_opts, showvalue=False)\n    element3 = f'<input type=\"text\" name=\"{t_name}\" value=\"{t_value}\" />'\n\n    return f\"{element1} {element2} {element3}\"\n\n\ndef networkselect_handler(value: str, arg: dict, res: dict) -> str:\n    \"\"\"Select a station from a given network.\"\"\"\n    if not isinstance(arg[\"network\"], list):\n        res[\"pltvars\"].append(f\"network:{arg['network']}\")\n    if not NETWORK_RE.match(value):\n        raise BadWebRequest(\"Invalid network provided\")\n    return station_select(\n        arg[\"network\"],\n        value,\n        arg[\"name\"],\n        select_all=arg.get(\"all\", False),\n    ) + map_select_widget(arg[\"network\"], arg[\"name\"])\n\n\ndef station_handler(value, arg: dict, fdict, res, typ: str):\n    \"\"\"Generate HTML.\"\"\"\n    networks = {}\n    netlim = \"\"\n    if typ == \"zstation\":\n        netlim = \"WHERE id ~* 'ASOS'\"\n    elif typ == \"station\":\n        netlim = \"WHERE id ~* 'CLIMATE'\"\n    elif typ == \"sid\" and not arg.get(\"include_climodat\", False):\n        netlim = \"WHERE id !~* 'CLIMATE'\"\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        dbres = conn.execute(\n            sql_helper(\n                \"SELECT id, name from networks {netlim} ORDER by name ASC\",\n                netlim=netlim,\n            )\n        )\n        for row in dbres:\n            networks[row[0]] = row[1]\n    # We could have two plus zstations\n    networkcgi = \"network\"\n    if arg[\"name\"][-1].isdigit():\n        networkcgi += arg[\"name\"][-1]\n    # get the default network set with this autoplot\n    network = arg.get(\"network\", \"IA_ASOS\")\n    network = html_escape(fdict.get(networkcgi, network))\n    if not NETWORK_RE.match(network):\n        raise BadWebRequest(\"Invalid network provided\")\n    netselect = make_select(\n        networkcgi, network, networks, jscallback=\"onNetworkChange\"\n    )\n    select = station_select(network, value, arg[\"name\"])\n    res[\"pltvars\"].append(f\"{networkcgi}:{network}\")\n    return netselect + \" \" + select + map_select_widget(network, arg[\"name\"])\n\n\ndef ugc_select(state: str, ugc: str) -> str:\n    \"\"\"Generate a select for a given state.\"\"\"\n    sql = \"\"\"\n    with data as (\n        select ugc, case when end_ts is not null then\n        to_char(begin_ts, 'YYYY-mm-dd') || '-' || to_char(end_ts, 'YYYY-mm-dd')\n        else null end as rng, name,\n        row_number() OVER (PARTITION by ugc ORDER by end_ts nulls first)\n        from ugcs where substr(ugc, 1, 2) = :state)\n    select ugc, name, rng from data where row_number = 1\n    order by name asc, ugc asc\n    \"\"\"\n    ar = {}\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        res = conn.execute(sql_helper(sql), {\"state\": state})\n        for row in res:\n            name = f\"{row[1]} {'(Zone)' if row[0][2] == 'Z' else ''}\"\n            if row[2] is not None:\n                name += f\" {row[2]}\"\n            ar[row[0]] = name\n    return make_select(\"ugc\", ugc, ar, cssclass=\"iemselect2\")\n\n\ndef ugc_handler(name, value, fdict):\n    \"\"\"Handle selection of UGCs.\"\"\"\n    privfield = f\"_{name}_state\"\n    state = fdict.get(privfield, \"IA\")[:2]\n    state_select = make_select(\n        privfield, state, state_names, jscallback=\"onNetworkChange\"\n    )\n    return state_select + \" \" + ugc_select(state, value)\n\n\ndef vtec_ps_handler(fdict, arg):\n    \"\"\"Handle VTEC Phenomena + Significance.\"\"\"\n    suffix = arg[\"name\"]\n    default_p, default_s = arg[\"default\"].split(\".\")\n    value = html_escape(fdict.get(f\"phenomena{suffix}\", default_p))\n    s = make_select(f\"phenomena{suffix}\", value, VTEC_PHENOMENA)\n    value = html_escape(fdict.get(f\"significance{suffix}\", default_s))\n    s += make_select(f\"significance{suffix}\", value, VTEC_SIGNIFICANCE)\n    return s\n\n\ndef cmap_handler(fdict: dict, value: str, arg: dict, res: dict) -> str:\n    \"\"\"Our fancy pants cmap handler.\"\"\"\n    reverse_on = fdict.get(f\"{arg['name']}_r\", \"off\") == \"on\"\n    if value.endswith(\"_r\"):\n        value = value.replace(\"_r\", \"\")\n        reverse_on = True\n    s = make_select(\n        arg[\"name\"],\n        value,\n        CMAPS,\n        cssclass=\"cmapselect form-control-lg\",\n        showvalue=False,\n    )\n    checked = ' checked=\"checked\"' if reverse_on else \"\"\n    s += (\n        f'&nbsp; <input type=\"checkbox\" name=\"{arg[\"name\"]}_r\" '\n        f'id=\"{arg[\"name\"]}_r\" value=\"on\"{checked}> '\n        f'<label for=\"{arg[\"name\"]}_r\">Reverse Colormap?</label>'\n    )\n    res[\"pltvars\"].append(f\"{arg['name']}:{value}{'_r' if reverse_on else ''}\")\n    return s\n\n\ndef datetypes_handler(arg, value):\n    \"\"\"Handle simple forms.\"\"\"\n    value = int(value)\n    if arg[\"type\"] == \"month\":\n        items = zip(range(1, 13), calendar.month_name[1:], strict=False)\n    elif arg[\"type\"] in [\"zhour\", \"hour\"]:\n        fmt = \"%I %p\" if arg[\"type\"] == \"hour\" else \"%H Z\"\n        items = zip(\n            range(24),\n            [utc(2000, 1, 1, hr).strftime(fmt) for hr in range(24)],\n            strict=True,\n        )\n    elif arg[\"type\"] == \"day\":\n        items = zip(range(1, 32), range(1, 32), strict=False)\n    else:\n        vmin = arg.get(\"min\", 1893)\n        vmax = arg.get(\"max\", utc().year)\n        if value > (vmax + 1) or value < vmin:\n            raise ValueError(\"Year value out of range\")\n        items = zip(range(vmin, vmax + 1), range(vmin, vmax + 1), strict=True)\n    return make_select(arg[\"name\"], value, dict(items), showvalue=False)\n\n\ndef sday_handler(value: str, arg: dict):\n    \"\"\"Handler for datetime instances.\"\"\"\n    dpname = f\"datepicker_{arg['name']}\"\n    vmin = arg.get(\"min\", \"0101\")\n    vmax = arg.get(\"max\", \"1231\")\n    # account for legacy URLs that had dates here\n    if value.find(\"/\") > -1:\n        value = f\"{value[5:7]}{value[8:10]}\"\n    if not SDAY_RE.match(value):\n        raise BadWebRequest(\"Invalid sdate format\")\n\n    return (\n        f'<input type=\"text\" id=\"{dpname}\" autocomplete=\"off\" class=\"apfp\" '\n        f'name=\"{arg[\"name\"]}\" '\n        f'data-defaultDate=\"{value}\" '\n        f'data-minDate=\"{vmin}\" '\n        f'data-maxDate=\"{vmax}\" '\n        'data-sday=\"true\" data-dateFormat=\"md\">(mmdd)'\n    )\n\n\ndef date_handler(value: str, arg: dict) -> str:\n    \"\"\"Handler for datetime instances.\"\"\"\n    dpname = f\"datepicker_{arg['name']}\"\n    vmin = arg.get(\"min\", \"1893/1/1\")\n    vmax = arg.get(\"max\", utc().strftime(\"%Y/%m/%d\"))\n\n    def _ymd(val: str):\n        rectified = val.replace(\"-\", \"/\")\n        if not DATE_RE.match(rectified):\n            raise BadWebRequest(\"Invalid date format\")\n        parts = [int(x) for x in rectified.split(\"/\")]\n        return f\"{parts[0]:04d}/{parts[1]:02d}/{parts[2]:02d}\"\n\n    return (\n        f'<input type=\"text\" name=\"{arg[\"name\"]}\" id=\"{dpname}\" '\n        'class=\"apfp\" data-dateFormat=\"Y/m/d\" '\n        f'data-defaultDate=\"{_ymd(value)}\" value=\"{_ymd(value)}\" '\n        f'data-minDate=\"{_ymd(vmin)}\" data-maxDate=\"{_ymd(vmax)}\" '\n        f'autocomplete=\"off\"> (YYYY/mm/dd)'\n    )\n\n\ndef datetime_handler(value: str, arg: dict) -> str:\n    \"\"\"Handler for datetime instances.\"\"\"\n    dpname = f\"fp_{arg['name']}\"\n    vmax = arg.get(\"max\", utc().strftime(\"%Y/%m/%d %H%M\"))\n    vmin = arg.get(\"min\", \"1893/01/01 0000\")\n\n    # Convert to flatpickr format: Y/m/d H:i\n    def _to_fp(val):\n        # Accepts 'YYYY/MM/DD HHmm' or 'YYYY-MM-DD HHmm'\n        if val is None or val == \"\":\n            raise BadWebRequest(\"Invalid datetime value\")\n        dt = val.replace(\"-\", \"/\").split()\n        datepart = dt[0]\n        timepart = dt[1] if len(dt) > 1 else \"0000\"\n        if not DATETIME_RE.match(f\"{datepart} {timepart}\"):\n            raise BadWebRequest(\"Invalid datetime format\")\n        y, m, d = [int(x) for x in datepart.split(\"/\")]\n        h, mi = int(timepart[:2]), int(timepart[2:])\n        return f\"{y:04d}-{m:02d}-{d:02d} {h:02d}{mi:02d}\"\n\n    return (\n        f'<input type=\"text\" name=\"{arg[\"name\"]}\" id=\"{dpname}\" class=\"apfp\" '\n        'data-enableTime=\"true\" data-dateFormat=\"Y/m/d Hi\" '\n        f'data-defaultDate=\"{_to_fp(value)}\" '\n        f'data-minDate=\"{_to_fp(vmin)}\" data-maxDate=\"{_to_fp(vmax)}\" '\n        'data-allowInput=\"true\" data-time24hr=\"true\" '\n        'autocomplete=\"off\"> (YYYY/mm/dd HH24MI)'\n    )\n\n\ndef add_to_plotvars(value, fdict, arg, res):\n    \"\"\"Add to our plotvars.\"\"\"\n    if value == \"\":\n        return\n    if arg[\"type\"] == \"vtec_ps\":\n        suffix = arg[\"name\"]\n        value = html_escape(fdict.get(f\"phenomena{suffix}\", \"SV\"))\n        res[\"pltvars\"].append(f\"phenomena{suffix}:{value}\")\n        value = html_escape(fdict.get(f\"significance{suffix}\", \"W\"))\n        res[\"pltvars\"].append(f\"significance{suffix}:{value}\")\n        return\n    if arg[\"type\"] == \"cmap\":\n        return\n    if isinstance(value, str | int | float):\n        res[\"pltvars\"].append(f\"{arg['name']}:{value}\")\n    elif isinstance(value, date):\n        res[\"pltvars\"].append(f\"{arg['name']}:{value.strftime('%Y-%m-%d')}\")\n    elif isinstance(value, datetime):\n        res[\"pltvars\"].append(\n            f\"{arg['name']}:{value.strftime('%Y-%m-%d %H%M')}\"\n        )\n    else:\n        for val in value:\n            res[\"pltvars\"].append(f\"{arg['name']}:{val}\")\n\n\ndef set_cookie_networkselect(cookies, headers, arg, value):\n    \"\"\"Set a cookie with special logic for how stations are handled.\"\"\"\n    network = arg.get(\"network\", \"\")\n    name = f\"{arg['name']}_{network}\"  # Important\n    if value == cookies.get(name):\n        return\n    headers.append(\n        (\n            \"Set-Cookie\",\n            f\"{name}={value}; Path=/plotting/auto/; Max-Age=8640000\",\n        )\n    )\n\n\ndef set_cookie(cookies, headers, name, value):\n    \"\"\"Optionally set a cookie in the response headers.\"\"\"\n    if value == cookies.get(name):\n        return\n    headers.append(\n        (\n            \"Set-Cookie\",\n            f\"{name}={value}; Path=/plotting/auto/; Max-Age=8640000\",\n        )\n    )\n\n\ndef get_cookie_value(arg, cookies):\n    \"\"\"Some custom cruft here.\"\"\"\n    if arg[\"type\"] in [\"state\", \"csector\"]:\n        return cookies.get(arg[\"name\"])\n    if arg[\"type\"] == \"networkselect\":\n        return cookies.get(f\"{arg['name']}_{arg['network']}\")\n    return None\n\n\ndef get_timing(apid):\n    \"\"\"Get a timing sample.\"\"\"\n    pgconn, cursor = get_dbconnc(\"mesosite\")\n    cursor.execute(\n        \"SELECT avg(timing)::int from autoplot_timing where appid = %s \"\n        \"and valid > (now() - '7 days'::interval)\",\n        (apid,),\n    )\n    timing = cursor.fetchone()[\"avg\"]\n    pgconn.close()\n    return timing if timing is not None else -1\n\n\ndef compute_dat_label(attribs: dict) -> str:\n    \"\"\"This is suboptimal.\"\"\"\n    event_id = attribs.get(\"event_id\", \"\")\n    wfo = attribs.get(\"wfo\", \"\")\n    efscale = attribs.get(\"efscale\", \"\")\n    try:\n        length = attribs.get(\"length\")\n    except ValueError:\n        length = 0\n    sts = pd.Timestamp(attribs.get(\"starttime\") / 1000, unit=\"s\", tz=\"UTC\")\n    return f\"{wfo} {efscale} {event_id} {sts:%H%M}Z {length:.0f} miles\"\n\n\ndef dat_handler(fdict: dict, res: dict) -> str:\n    \"\"\"Generate the Damage Assessment Tool form.\"\"\"\n    dt = fdict.get(\"dat\", \"2024/05/21\")\n    gid = fdict.get(\"datglobalid\", \"\")\n    # Ensure that gid looks like a guid\n    if len(gid) != 38:\n        gid = \"{495DE596-B299-41FE-9C90-13C87E43FE0B}\"\n    res[\"pltvars\"].append(f\"datglobalid:{gid}\")\n    # Query DAT for the list of events\n    ss = '<select name=\"datglobalid\">\\n'\n    try:\n        sts = datetime.strptime(\n            \"2024/05/21\" if dt == \"\" else dt, \"%Y/%m/%d\"\n        ).replace(tzinfo=ZoneInfo(\"UTC\"))\n    except ValueError as exp:\n        raise BadWebRequest(\"Invalid date format for dat\") from exp\n    ets = sts + timedelta(hours=36)\n    url = (\n        \"https://services.dat.noaa.gov/arcgis/rest/services/\"\n        \"nws_damageassessmenttoolkit/DamageViewer/FeatureServer/1/query?\"\n        \"f=json&returnGeometry=false&outFields=*&\"\n        \"geometryType=esriGeometryPolyline&\"\n        f\"time={sts:%s}000%2C{ets:%s}000\"\n    )\n    try:\n        with requests.Session() as client:\n            resp = client.get(url, timeout=30)\n            resp.raise_for_status()\n            datjson = resp.json()\n    except Exception as exp:\n        raise BadWebRequest(\"Unable to load DAT events.\") from exp\n    for feat in datjson.get(\"features\", []):\n        _globalid = feat[\"attributes\"][\"globalid\"]\n        ss += (\n            f'<option value=\"{_globalid}\" '\n            f\"{'selected=' if _globalid == gid else ''}>\"\n            f\"{compute_dat_label(feat['attributes'])} </option>\\n\"\n        )\n    ss += \"</select>\"\n    return (\n        f'<input type=\"text\" name=\"dat\" id=\"dat\" autocomplete=\"off\" '\n        f'value=\"{dt}\" '\n        'class=\"apfp\" data-enableTime=\"false\" data-dateFormat=\"Y/m/d\" '\n        'data-allowInput=\"true\" data-mindate=\"2001/01/01\" data-onc=\"true\" '\n        f'data-defaultDate=\"{dt}\" data-maxDate=\"{utc():%Y-%m-%d}\"> '\n        f\"(YYYY/mm/dd) &nbsp; {ss}\"\n    )\n\n\ndef generate_form(apid, fdict, headers, cookies):\n    \"\"\"Generate out the form, oh boy!\"\"\"\n    res = {\n        \"title\": \"IEM Autoplot\",\n        \"nassmsg\": \"\",\n        \"description\": \"\",\n        \"imguri\": f\"/plotting/auto/plot/{apid}/\",\n        \"pltvars\": [],\n        \"formhtml\": \"\",\n        \"image\": \"\",\n        \"extrascripts\": \"\",\n        \"headextra\": \"\",\n        \"dataextra\": \"\",\n        \"issues\": \"\",\n        \"frontend\": None,\n    }\n    if apid == 0:\n        return res\n    fmt = fdict.get(\"_fmt\")\n    # This should be instant, but the other end may be doing a thread\n    # restart, which takes a bit of time.\n    meta = get_metadict(int(apid))\n    res[\"title\"] = f\"{apid}. {meta['title']}\"\n    res[\"frontend\"] = meta.get(\"frontend\")\n    if meta.get(\"description\"):\n        res[\"description\"] = (\n            '<div class=\"alert alert-info\"><h4>Plot Description:</h4>'\n            f\"{meta['description']}</div>\"\n        )\n    if fmt is None:\n        if meta.get(\"highcharts\", False):\n            fmt = \"js\"\n        elif meta.get(\"report\", False) and meta.get(\"nopng\", False):\n            fmt = \"text\"\n        else:\n            fmt = \"png\"\n    if meta.get(\"nass\") is not None:\n        res[\"nassmsg\"] = \"\"\"\n<p><div class=\"alert alert-warning\">This data presentation utilizes the\n        <a href=\"http://quickstats.nass.usda.gov/\">USDA NASS Quickstats</a>.\n        This presentation is not endorsed nor certified by USDA.\n</div></p>\n        \"\"\"\n    form = \"\"\n    formhtml = \"\"\n    for arg in meta[\"arguments\"]:\n        value = fdict.get(arg[\"name\"], get_cookie_value(arg, cookies))\n        if arg.get(\"multiple\", False):\n            value = ensure_list(fdict, arg[\"name\"])\n        if isinstance(value, str):\n            value = html_escape(value)\n            # Avoid situation of the Cookie having _ALL set and this form\n            # entry not supporting _ALL\n            if value == \"_ALL\" and not arg.get(\"all\", False):\n                value = None\n        if value is None:\n            value = str(arg[\"default\"])\n        if arg[\"type\"] in [\"zstation\", \"sid\", \"station\"]:\n            form = station_handler(value, arg, fdict, res, arg[\"type\"])\n        elif arg[\"type\"] == \"ugc\":\n            form = ugc_handler(arg[\"name\"], value, fdict)\n        elif arg[\"type\"] == \"networkselect\":\n            set_cookie_networkselect(cookies, headers, arg, value)\n            form = networkselect_handler(value, arg, res)\n        elif arg[\"type\"] == \"filtervar\":\n            form = filtervar_handler(fdict, arg, res)\n        elif arg[\"type\"] == \"phenomena\":\n            form = make_select(arg[\"name\"], value, VTEC_PHENOMENA)\n        elif arg[\"type\"] == \"significance\":\n            form = make_select(arg[\"name\"], value, VTEC_SIGNIFICANCE)\n        elif arg[\"type\"] == \"vtec_ps\":\n            form = vtec_ps_handler(fdict, arg)\n        elif arg[\"type\"] == \"state\":\n            sn = state_names if arg.get(\"contiguous\") is None else sn_contig\n            if value not in sn:\n                value = \"IA\"\n            form = make_select(arg[\"name\"], value, sn)\n        elif arg[\"type\"] == \"csector\":\n            set_cookie(cookies, headers, arg[\"name\"], value)\n            form = make_select(arg[\"name\"], value, CSECTORS, showvalue=False)\n        elif arg[\"type\"] == \"cmap\":\n            form = cmap_handler(fdict, value, arg, res)\n        elif arg[\"type\"] == \"fema\":\n            form = make_select(arg[\"name\"], value, FEMA_REGIONS)\n        elif arg[\"type\"] in [\"text\", \"int\", \"float\"]:\n            form = (\n                f'<input type=\"text\" name=\"{arg[\"name\"]}\" size=\"60\" '\n                f'value=\"{value}\">'\n            )\n        elif arg[\"type\"] in [\"month\", \"zhour\", \"hour\", \"day\", \"year\"]:\n            try:\n                form = datetypes_handler(arg, int(value))\n            except ValueError as exp:\n                raise BadWebRequest(\"Invalid value provided\") from exp\n        elif arg[\"type\"] == \"select\":\n            form = make_select(\n                arg[\"name\"],\n                value,\n                arg[\"options\"],\n                multiple=arg.get(\"multiple\", False),\n                showvalue=arg.get(\"showvalue\", False),\n            )\n        elif arg[\"type\"] == \"datetime\":\n            form = datetime_handler(value, arg)\n        elif arg[\"type\"] == \"date\":\n            form = date_handler(value, arg)\n        elif arg[\"type\"] == \"sday\":\n            form = sday_handler(value, arg)\n        elif arg[\"type\"] == \"dat\":\n            form = dat_handler(fdict, res)\n        # Handle the fun that is having it be optional\n        if arg.get(\"optional\", False):\n            opton = fdict.get(f\"_opt_{arg['name']}\") == \"on\"\n            # prepend\n            form = (\n                '<input class=\"optcontrol\" '\n                f'{\"checked\" if opton else \"\"} type=\"checkbox\" '\n                f'value=\"on\" name=\"_opt_{arg[\"name\"]}\">'\n                f'<div id=\"_opt_{arg[\"name\"]}\" style=\"display: '\n                f'{\"block\" if opton else \"none\"};\">{form}</div>'\n            )\n            if opton:\n                add_to_plotvars(value, fdict, arg, res)\n        else:\n            add_to_plotvars(value, fdict, arg, res)\n        formhtml += (\n            f'<div class=\"row align-items-center apdiv\">'\n            f'<div class=\"col-sm-4\">'\n            f'<label class=\"form-label fw-semibold mb-0\">'\n            f\"{arg['label']}</label>\"\n            f\"</div>\"\n            f'<div class=\"col-sm-8\">'\n            f\"{form}\"\n            f\"</div></div>\"\n            \"\\n\"\n        )\n    if fdict.get(\"_cb\") == \"1\":\n        res[\"pltvars\"].append(\"_cb:1\")\n    res[\"imguri\"] += \"::\".join(res[\"pltvars\"]).replace(\"/\", \"-\")\n    if fdict.get(\"_wait\") != \"yes\":\n        if fmt == \"text\":\n            try:\n                resp = requests.get(\n                    f\"http://iem.local{res['imguri']}.txt\",\n                    timeout=300,\n                )\n                resp.raise_for_status()\n                content = resp.text\n            except Exception:\n                content = \"Exception encountered generating text\"\n            res[\"image\"] = f\"<pre>\\n{content}</pre>\"\n        elif fmt == \"js\":\n            res[\"image\"] = (\n                '<div id=\"ap_container\" style=\"width:100%s;height:400px;\">'\n                \"</div>\"\n                '<div id=\"ap_container_controls\"></div>'\n            )\n            res[\"extrascripts\"] += f\"\"\"\n<script src=\"/vendor/highcharts/{HIGHCHARTS}/highcharts.js\"></script>\n<script src=\"/vendor/highcharts/{HIGHCHARTS}/highcharts-more.js\"></script>\n<script src=\"/vendor/highcharts/{HIGHCHARTS}/modules/accessibility.js\">\n</script>\n<script src=\"/vendor/highcharts/{HIGHCHARTS}/modules/exporting.js\"></script>\n<script src=\"/vendor/highcharts/{HIGHCHARTS}/modules/heatmap.js\"></script>\n<script src=\"{res[\"imguri\"]}.js\"></script>\n            \"\"\"\n        elif fmt == \"maptable\":\n            res[\"image\"] = (\n                '<div class=\"iem-maptable row\" '\n                f'data-geojson-src=\"{res[\"imguri\"]}.geojson\"></div>'\n            )\n            res[\"headextra\"] += \"\"\"\n<link type=\"text/css\"\n href=\"https://unpkg.com/tabulator-tables@6.3.1/dist/css/tabulator_bootstrap5.min.css\"\n rel=\"stylesheet\" />\n            \"\"\"\n            res[\"extrascripts\"] += \"\"\"\n<script\n src='https://unpkg.com/tabulator-tables@6.3.1/dist/js/tabulator.min.js'>\n</script>\n<script src=\"/js/maptable.js?v=2\"></script>\n            \"\"\"\n        elif fmt in [\"png\", \"svg\"]:\n            timing_secs = get_timing(apid) + 1\n            res[\"image\"] = f\"\"\"\n<div class=\"card mb-4\">\n    <div class=\"card-header\">\n        <h4 class=\"card-title mb-0\">\n            <span class=\"badge bg-primary me-2\">3</span>\n            Generated Chart\n        </h4>\n    </div>\n    <div class=\"card-body\">\n        <div id=\"willload\" class=\"text-center p-4\"\n         data-timingsecs={timing_secs}>\n            <div class=\"mb-3\">\n    <i class=\"bi bi-graph-up\"\n    style=\"font-size:2rem;color:#6c757d;margin-bottom:0.5rem;\"\n    aria-hidden=\"true\"></i>\n                <p class=\"mb-2\">Based on recent timings, plot generation\n                averages {timing_secs} seconds. Please wait while your\n                chart is being generated...</p>\n            </div>\n            <div class=\"progress\" style=\"height: 8px;\">\n<div id=\"timingbar\"\n    class=\"progress-bar progress-bar-striped progress-bar-animated bg-warning\"\n    role=\"progressbar\" aria-valuenow=\"0\"\n    aria-valuemin=\"0\" aria-valuemax=\"{timing_secs}\"\n    style=\"width: 0%;\"></div>\n            </div>\n        </div>\n        <div class=\"text-center\">\n            <img src=\"{res[\"imguri\"]}.{fmt}\" class=\"img-fluid\"\n                 id=\"theimage\" alt=\"Generated chart\" />\n        </div>\n    </div>\n</div>\n            \"\"\"\n        elif fmt == \"pdf\":\n            res[\"image\"] = f\"\"\"\n<object id=\"windrose-plot\" src=\"{res[\"imguri\"]}.{fmt}\" width=\"700px\"\n height=\"700px\">\n    <embed src=\"{res[\"imguri\"]}.{fmt}\" width=\"700px\" height=\"700px\">\n    </embed>\n</object>\n            \"\"\"\n    opts = {\n        \"png\": \"Chart Image (.PNG)\",\n        \"svg\": \"Scalable Vector Graphic (.SVG)\",\n        \"pdf\": \"Portable Document Format (.PDF)\",\n    }\n    if meta.get(\"report\"):\n        opts[\"text\"] = \"Plain Text\"\n    if meta.get(\"highcharts\"):\n        opts[\"js\"] = \"Interactive Chart\"\n    if meta.get(\"maptable\"):\n        opts[\"maptable\"] = \"Interactive Map + Table\"\n    sel = make_select(\"_fmt\", fmt, opts, showvalue=False)\n    formhtml += (\n        '<div class=\"row align-items-center apdiv\">'\n        '<div class=\"col-sm-4\">'\n        '<label class=\"form-label fw-semibold mb-0\">'\n        \"Select Output Format:</label></div>\"\n        f'<div class=\"col-sm-8\">{sel}</div></div>'\n    )\n\n    res[\"formhtml\"] = f\"\"\"\n<div class=\"row\">\n    <div class=\"col-12\">\n        <div class=\"card mb-4\">\n            <div class=\"card-header\">\n                <h4 class=\"card-title mb-0\">\n                    <span class=\"badge bg-primary me-2\">2</span>\n                    Configure Chart Options\n                </h4>\n            </div>\n            <div class=\"card-body\">\n                <form method=\"GET\" name=\"s\" id=\"myForm\">\n                    <input type=\"hidden\" name=\"_wait\" value=\"no\" id=\"_wait\">\n                    <input type=\"hidden\" name=\"q\" value=\"{apid}\">\n                    <div class=\"apopts\">\n                        {formhtml}\n                    </div>\n                    <div class=\"mt-4 d-flex gap-2 flex-wrap\">\n                        <button type=\"submit\" class=\"btn btn-primary\"\n                        aria-label=\"Generate plot\">\n                                     <i class=\"bi bi-graph-up me-1\"\n                                         aria-hidden=\"true\"></i>\n                            Generate Plot\n                        </button>\n                        <button type=\"submit\" name=\"_cb\" value=\"1\"\n                                class=\"btn btn-outline-warning\"\n                                aria-label=\"Force update and bypass cache\">\n                                     <i class=\"bi bi-arrow-repeat me-1\"\n                                         aria-hidden=\"true\"></i>\n                            Force Update (bypass cache)\n                        </button>\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n</div>\n{res[\"nassmsg\"]}\n    \"\"\"\n    if meta.get(\"report\"):\n        res[\"dataextra\"] = f\"\"\"\n<div class=\"card mb-4\">\n    <div class=\"card-header\">\n        <h4 class=\"card-title mb-0\">\n            <span class=\"badge bg-success me-2\">4</span>\n            Download Options\n        </h4>\n    </div>\n    <div class=\"card-body\">\n        <div class=\"d-flex gap-2 flex-wrap\">\n            <a href=\"{res[\"imguri\"]}.txt\" class=\"btn btn-primary\"\n            aria-label=\"Download direct text link\">\n                <i class=\"bi bi-file-text me-1\" aria-hidden=\"true\"></i>\n                Direct Text Link\n            </a>\n        \"\"\"\n    if meta.get(\"data\"):\n        res[\"dataextra\"] += f\"\"\"\n            <a href=\"{res[\"imguri\"]}.csv\" class=\"btn btn-primary\"\n            aria-label=\"Download CSV data\">\n                <i class=\"bi bi-download me-1\" aria-hidden=\"true\"></i>\n                CSV Data\n            </a>\n            <a href=\"{res[\"imguri\"]}.xlsx\" class=\"btn btn-success\"\n            aria-label=\"Download Excel file\">\n                     <i class=\"bi bi-file-earmark-spreadsheet me-1\"\n                         aria-hidden=\"true\"></i>\n                     Excel Download\n            </a>\n        \"\"\"\n    if meta[\"maptable\"]:\n        res[\"dataextra\"] += f\"\"\"\n            <a href=\"{res[\"imguri\"]}.geojson\" class=\"btn btn-info\"\n            aria-label=\"Download GeoJSON file\">\n                <i class=\"bi bi-map me-1\" aria-hidden=\"true\"></i>\n                GeoJSON\n            </a>\n        \"\"\"\n    if meta.get(\"raster\"):\n        res[\"dataextra\"] += f\"\"\"\n            <a href=\"{res[\"imguri\"]}.geotiff\" class=\"btn btn-warning\"\n            aria-label=\"Download GeoTIFF file\">\n                <i class=\"bi bi-globe me-1\" aria-hidden=\"true\"></i>\n                GeoTIFF\n            </a>\n        \"\"\"\n\n    # Close the download options card if we have any data extras\n    if res[\"dataextra\"]:\n        res[\"dataextra\"] += \"\"\"\n        </div>\n    </div>\n</div>\n        \"\"\"\n    res[\"issues\"] = \"\"\"\n<div class=\"alert alert-info\">\n    <i class=\"bi bi-info-circle me-2\" aria-hidden=\"true\"></i>\n    If you notice plotting issues with the image above, please\n    <a class=\"alert-link\" href=\"/info/contacts.php\">contact us</a>\n    and provide the URL address currently shown by your web browser.\n</div>\n    \"\"\"\n    return res\n\n\ndef features_for_id(res, apid):\n    \"\"\"List out features for this given plotid.\"\"\"\n    if apid < 1:\n        return \"\"\n    s = \"\"\"\n<h3>IEM Daily Features using this plot</h3>\n<p>The IEM Daily Features found on this website often utilize plots found\non this application.  Here is a listing of features referencing this\nplot type.</p>\n<ul>\n    \"\"\"\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        extra = \"\"\n        params = {\"appurl\": f\"q={apid}(&|$)\"}\n        if res[\"frontend\"]:\n            extra = \" or strpos(appurl, :fe) = 1\"\n            params[\"fe\"] = res[\"frontend\"]\n        # careful here as we use US Central Time for dates\n        df = pd.read_sql(\n            sql_helper(\n                \"select date(valid at time zone 'America/Chicago') as dt, \"\n                \"title from feature \"\n                \"WHERE (substr(appurl, 1, 14) = '/plotting/auto' and \"\n                \" appurl ~* :appurl) {extra} and valid < now() \"\n                \"ORDER by valid DESC\",\n                extra=extra,\n            ),\n            conn,\n            params=params,\n            parse_dates=\"dt\",\n            index_col=\"dt\",\n        )\n    for dt, row in df.iterrows():\n        s += (\n            f'<li><strong><a href=\"/onsite/features/cat.php?'\n            f'day={dt:%Y-%m-%d}\">'\n            f\"{dt:%d %b %Y}</a></strong>: {row['title']}</li>\\n\"\n        )\n    s += \"</ul>\"\n    return s\n\n\ndef generate_autoplot_list(apid):\n    \"\"\"The select list of available autoplots.\"\"\"\n    s = (\n        '<select name=\"q\" class=\"iemselect2 form-control-lg\" '\n        'data-width=\"100%\">'\n        \"\\n\"\n    )\n    for entry in autoplot_data[\"plots\"]:\n        s += f'<optgroup label=\"{entry[\"label\"]}\">\\n'\n        for opt in entry[\"options\"]:\n            selected = ' selected=\"selected\"' if opt[\"id\"] == apid else \"\"\n            s += (\n                f'<option value=\"{opt[\"id\"]}\"{selected}>{opt[\"label\"]} '\n                f\"(#{opt['id']})</option>\\n\"\n            )\n        s += \"</optgroup>\\n\"\n\n    s += \"</select>\\n\"\n    return s\n\n\ndef generate_trending():\n    \"\"\"Build the trending list.\"\"\"\n    res = \"<h3>Trending Autoplots over Past 6 Hours</h3>\"\n    res += '<table class=\"table table-striped table-bordered\">\\n'\n    res += \"<tr><th>Plot</th><th>Requests</th></tr>\\n\"\n    try:\n        # This is external API, so no need for internal routing\n        data = requests.get(\n            (\n                \"http://mesonet.agron.iastate.edu\"\n                \"/api/1/iem/trending_autoplots.json\"\n            ),\n            timeout=5,\n        ).json()\n        for entry in data[\"data\"][:5]:\n            label = \"Unknown\"\n            for ap in autoplot_data[\"plots\"]:\n                if label != \"Unknown\":\n                    break\n                for opt in ap[\"options\"]:\n                    if opt[\"id\"] == entry[\"appid\"]:\n                        label = opt[\"label\"]\n                        break\n            res += (\n                f'<tr><td><a href=\"/plotting/auto/?q={entry[\"appid\"]}\">'\n                f\"#{entry['appid']}. {label}</a></td><td>{entry['count']:,}\"\n                \"</td></tr>\\n\"\n            )\n    except Exception as exp:\n        LOG.exception(exp)\n        res += '<tr><th colspan=\"2\">Failed to Load</th></tr>'\n    res += \"</table>\"\n    return res\n\n\ndef generate_overview(apid):\n    \"\"\"If we don't have an apid set (==0), then fill in the overview.\"\"\"\n    if apid > 0:\n        return \"\"\n    fn = \"/mesonet/share/pickup/autoplot/overview.html\"\n    if not os.path.isfile(fn):\n        LOG.warning(f\"{fn} is missing\")\n        return \"\"\n    with open(fn, encoding=\"utf8\") as fh:\n        content = fh.read()\n    return f\"\"\"\n<div class=\"row\">\n    <div class=\"col-md-6\">\n<h1>Visual Overview of All Autoplots</h1>\n<p>Below you will find an example resulting image from each of the autoplots\navailable.  Click on the image or title to navigate to that autoplot. These are\ngrouped into sections as they also appear grouped in the dropdown selection\nbox above.</p>\n    </div>\n    <div class=\"col-md-6\">\n    {generate_trending()}\n    </div>\n</div>\n\n\n    {content}\n    \"\"\"\n\n\ndef generate(fdict, headers, cookies):\n    \"\"\"Return a dict of things for the template engine.\"\"\"\n    try:\n        apid = int(fdict.get(\"q\", 0))\n    except ValueError:\n        apid = 0\n    if apid < 0 or apid > 1_000:  # arb\n        raise BadWebRequest(\"Invalid plot id\")\n    res = generate_form(apid, fdict, headers, cookies)\n    content = f\"\"\"\n<div class=\"row\">\n    <div class=\"col-12\">\n        <div class=\"card mb-4\">\n            <div class=\"card-header bg-primary text-white\">\n                <h3 class=\"card-title mb-0\">\n                    <i class=\"bi bi-graph-up me-2\" aria-hidden=\"true\"></i>\n                    Automated Data Plotter\n                </h3>\n            </div>\n            <div class=\"card-body\">\n                <p class=\"lead\">This application dynamically generates many\n                types of graphs derived from various IEM data sources.\n                Feel free to use these generated graphics in whatever way\n                you wish.</p>\n                <div class=\"d-flex gap-2 flex-wrap\">\n                          <a href=\"/plotting/auto/\"\n                              class=\"btn btn-outline-secondary btn-sm\"\n                              aria-label=\"Reset app\">\n                                <i class=\"bi bi-arrow-repeat me-1\"\n                                    aria-hidden=\"true\"></i>\n                        Reset App\n                    </a>\n                          <a href=\"/explorer/\"\n                              class=\"btn btn-outline-primary btn-sm\"\n                              aria-label=\"Open IEM Explorer (Simplified)\">\n                        <i class=\"bi bi-map me-1\" aria-hidden=\"true\"></i>\n                        IEM Explorer (Simplified)\n                    </a>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"row\">\n    <div class=\"col-12\">\n        <div class=\"card mb-4\">\n            <div class=\"card-header\">\n                <h4 class=\"card-title mb-0\">\n                    <span class=\"badge bg-primary me-2\">1</span>\n                    Select a Chart Type\n                </h4>\n            </div>\n            <div class=\"card-body\">\n                <form method=\"GET\" name=\"t\">\n                    <div class=\"row g-3 align-items-end\">\n                        <div class=\"col-12 col-lg-8\">\n                            <label for=\"chart-select\" class=\"form-label\">\n                                Choose from available chart types:\n                            </label>\n                            {generate_autoplot_list(apid)}\n                        </div>\n                        <div class=\"col-12 col-lg-4\">\n                            <button type=\"submit\"\n                                    class=\"btn btn-primary w-100\"\n                                    aria-label=\"Select plot type\">\n                                          <i class=\"bi bi-arrow-right me-1\"\n                                              aria-hidden=\"true\"></i>\n                                Select Plot Type\n                            </button>\n                        </div>\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n</div>\n\n{res[\"formhtml\"]}\n\n{res[\"description\"]}\n\n<div class=\"row\">\n    <div class=\"col-12\">\n        {res[\"image\"]}\n\n        {res[\"dataextra\"]}\n\n        {res[\"issues\"]}\n    </div>\n</div>\n\n{features_for_id(res, apid)}\n\n{generate_overview(apid)}\n\n    \"\"\"\n    return {\n        \"title\": res[\"title\"],\n        \"content\": content,\n        \"jsextra\": f\"\"\"\n<script src=\"/vendor/openlayers/{OPENLAYERS}/ol.js\" type=\"text/javascript\">\n</script>\n<script src='/vendor/openlayers/{OPENLAYERS}/ol-layerswitcher.js'></script>\n<!-- needed for main select -->\n<script\n src=\"https://cdn.jsdelivr.net/npm/tom-select@2.4.3/dist/js/tom-select.complete.min.js\">\n</script>\n{res[\"extrascripts\"]}\n<script src=\"js/mapselect.js?v=2\"></script>\n<script src=\"/js/select2.js?v=3\"></script>\n<script type=\"module\" src=\"/plotting/auto/index.module.js?v=2\"></script>\n        \"\"\",\n        \"headextra\": f\"\"\"\n <link rel=\"stylesheet\" type=\"text/css\"\n href=\"https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.css\" />\n<link\n href=\"https://cdn.jsdelivr.net/npm/tom-select@2.4.3/dist/css/tom-select.css\"\n rel=\"stylesheet\">\n<link\n href=\"https://cdn.jsdelivr.net/npm/tom-select@2.4.3/dist/css/tom-select.bootstrap5.css\"\n rel=\"stylesheet\">\n\n<link rel=\"stylesheet\"\n href=\"/vendor/openlayers/{OPENLAYERS}/ol.css\" type=\"text/css\">\n<link type=\"text/css\"\n href=\"/vendor/openlayers/{OPENLAYERS}/ol-layerswitcher.css\"\n rel=\"stylesheet\" />\n<link type=\"text/css\" href=\"/plotting/auto/index.css\" rel=\"stylesheet\" />\n {res[\"headextra\"]}\n        \"\"\",\n    }\n\n\ndef remove_all_cookies(headers, cookiestr):\n    \"\"\"Unset things that should have not gotten set.\"\"\"\n    for token in cookiestr.split(\";\"):\n        meat = token if token.find(\"=\") == -1 else token[: token.find(\"=\")]\n        headers.append(\n            (\n                \"Set-Cookie\",\n                f\"={meat.strip()}; Path=/plotting/auto/; Max-Age=-1\",\n            )\n        )\n\n\n@iemapp(parse_times=False, allowed_as_list=[\"ltype\"])\ndef application(environ: dict, start_response: callable) -> list[bytes]:\n    \"\"\"mod-wsgi handler.\"\"\"\n    cookies = get_cookie_dict(environ)\n    headers = [(\"Content-type\", \"text/html\")]\n    # invalid cookies may invalidate the entire cookie parsing\n    # https://bugs.python.org/issue41945\n    if not cookies and environ.get(\"HTTP_COOKIE\", \"\") != \"\":\n        remove_all_cookies(headers, environ[\"HTTP_COOKIE\"])\n    tdict = generate(environ, headers, cookies)\n    start_response(\"200 OK\", headers)\n    return [TEMPLATE.render(tdict).encode(\"utf-8\")]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/meta.py",
    "content": "\"\"\".. title:: Autoplot Meta Data\n\nThis service is used internally by IEM autoplotting to drive the user\ninterface.\n\n\"\"\"\n\nimport json\nfrom contextlib import suppress\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import FIGSIZES_NAMES\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.autoplot import data as autoplot_data\nfrom iemweb.autoplot import import_script\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    p: Annotated[\n        int, Field(description=\"The autoplot index\", ge=0, le=1000)\n    ] = 0\n\n\ndef get_timing(pidx: int) -> float:\n    \"\"\"Return an average plot generation time for this app\"\"\"\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"SELECT avg(timing) from autoplot_timing where appid = :id \"\n                \"and valid > (now() - '7 days'::interval)\"\n            ),\n            {\"id\": pidx},\n        )\n        timing = res.fetchone()[0]\n    return timing if timing is not None else -1\n\n\ndef find_title(pidx: int) -> str:\n    \"\"\"Figure out the title of this autoplot, le sigh.\"\"\"\n    for section in autoplot_data[\"plots\"]:\n        for option in section[\"options\"]:\n            if option[\"id\"] == pidx:\n                return option[\"label\"]\n    return \"Autoplot Title Unset?\"\n\n\ndef get_metadict(pidx: int) -> dict:\n    \"\"\"Do what needs to be done for JSON requests.\"\"\"\n    if pidx == 0:\n        data = autoplot_data\n    else:\n        timing = -1\n        with suppress(Exception):\n            timing = get_timing(pidx)\n        mod = import_script(pidx)\n        data = mod.get_description()\n        data[\"title\"] = find_title(pidx)\n        defaults = data.pop(\"defaults\", {\"_r\": \"t\", \"dpi\": \"100\"})\n        data[\"maptable\"] = hasattr(mod, \"geojson\")\n        data[\"highcharts\"] = hasattr(mod, \"get_highcharts\")\n        data[\"raster\"] = hasattr(mod, \"get_raster\")\n        data[\"timing[secs]\"] = timing\n\n        # Setting to None disables\n        if \"_r\" not in defaults or defaults[\"_r\"] is not None:\n            data[\"arguments\"].append(\n                dict(\n                    type=\"select\",\n                    options=FIGSIZES_NAMES,\n                    name=\"_r\",\n                    default=defaults.get(\"_r\", \"t\"),\n                    label=\"Image Pixel Size @100 DPI\",\n                )\n            )\n        data[\"arguments\"].append(\n            dict(\n                type=\"int\",\n                name=\"dpi\",\n                default=defaults.get(\"dpi\", \"100\"),\n                label=\"Image Resolution (DPI) (50 to 500)\",\n            )\n        )\n    return data\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=lambda x: f\"/autoplot/meta?p={x['p']}\",\n    memcacheexpire=300,\n)\ndef application(environ, start_response):\n    \"\"\"Our Application!\"\"\"\n    pidx = environ[\"p\"]\n    output = get_metadict(pidx)\n\n    start_response(\"200 OK\", [(\"Content-type\", \"application/json\")])\n    return json.dumps(output)\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p1.py",
    "content": "\"\"\"\nThis app allows the arbitrary comparison of months\nagainst other months.  When the period of months wraps around a new\nyear, the app attempts to keep this situation straight with Dec and Jan\nfollowing each other.  The periods are combined together based on the\nyear of the beginning month of each period. If there is a metric you\nwished to see added to this analysis, please\n<a href=\"/info/contacts.php\">let us know</a>!\n\n<p>The five years with the most extreme values are labelled on the chart.\n\"\"\"\n\nimport calendar\nfrom datetime import date, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom scipy import stats\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"total_precip\": \"Total Precipitation\",\n    \"avg_temp\": \"Average Temperature\",\n    \"max_high\": \"Maximum High Temperature\",\n    \"avg_high\": \"Average High Temperature\",\n    \"min_high\": \"Minimum High Temperature\",\n    \"max_low\": \"Maximum Low Temperature\",\n    \"avg_low\": \"Average Low Temperature\",\n    \"min_low\": \"Minimum Low Temperature\",\n    \"avg_range\": \"Average Daily Temperature Range\",\n    \"days_high_aoa\": \"Days with High At or Above\",\n    \"avg_rad\": \"Average Daily Solar Radiation\",\n    \"cdd65\": \"Cooling Degree Days (base 65)\",\n    \"hdd65\": \"Heating Degree Days (base 65)\",\n    \"gdd32\": \"Growing Degree Days (base 32)\",\n    \"gdd41\": \"Growing Degree Days (base 41)\",\n    \"gdd46\": \"Growing Degree Days (base 46)\",\n    \"gdd48\": \"Growing Degree Days (base 48)\",\n    \"gdd50\": \"Growing Degree Days (base 50)\",\n    \"gdd51\": \"Growing Degree Days (base 51)\",\n    \"gdd52\": \"Growing Degree Days (base 52)\",\n}\nPDICT2 = {\n    \"yes\": \"Truncate dataset to the start of current month\",\n    \"no\": \"Do not truncate dataset\",\n}\n# Default is to sum and then divide by number of months\nPDICT_AGG_MIN = [\"min_high\", \"min_low\"]\nPDICT_AGG_MAX = [\"max_high\", \"max_low\"]\nPDICT_AGG_SUM = [\n    \"total_precip\",\n    \"cdd65\",\n    \"hdd65\",\n    \"gdd32\",\n    \"gdd41\",\n    \"gdd46\",\n    \"gdd48\",\n    \"gdd50\",\n    \"gdd51\",\n    \"gdd52\",\n]\nPDICT_AGG_SUM_THEN_DIVIDE = [\n    \"avg_temp\",\n    \"avg_high\",\n    \"avg_low\",\n    \"avg_range\",\n    \"avg_rad\",\n]\n\n\nUNITS = {\n    \"total_precip\": \"inch\",\n    \"avg_temp\": \"°F\",\n    \"max_high\": \"°F\",\n    \"avg_high\": \"°F\",\n    \"min_high\": \"°F\",\n    \"max_low\": \"°F\",\n    \"avg_low\": \"°F\",\n    \"min_low\": \"°F\",\n    \"avg_range\": \"°F\",\n    \"days_high_aoa\": \"days\",\n    \"avg_rad\": \"MJ/d\",\n    \"cdd65\": \"°F\",\n    \"hdd65\": \"°F\",\n    \"gdd32\": \"°F\",\n    \"gdd41\": \"°F\",\n    \"gdd46\": \"°F\",\n    \"gdd48\": \"°F\",\n    \"gdd50\": \"°F\",\n    \"gdd51\": \"°F\",\n    \"gdd52\": \"°F\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    yesterday = today - timedelta(days=60)\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"int\",\n            name=\"threshold\",\n            default=\"93\",\n            label=\"Daily Temperature Threshold (when appropriate)\",\n        ),\n        dict(\n            type=\"month\",\n            name=\"month1\",\n            default=yesterday.month,\n            label=\"Month 1 for Comparison\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"num1\",\n            default=2,\n            label=\"Number of Additional Months for Comparison 1\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"total_precip\",\n            name=\"var1\",\n            label=\"Comparison 1 Variable\",\n        ),\n        dict(\n            type=\"month\",\n            name=\"month2\",\n            default=yesterday.month,\n            label=\"Month 2 for Comparison\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"num2\",\n            default=2,\n            label=\"Number of Additional Months for Comparison 2\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"avg_temp\",\n            name=\"var2\",\n            label=\"Comparison 2 Variable\",\n        ),\n        {\n            \"type\": \"year\",\n            \"default\": yesterday.year,\n            \"name\": \"year\",\n            \"label\": \"Year to Highlight on the Chart\",\n        },\n        {\n            \"type\": \"select\",\n            \"options\": PDICT2,\n            \"default\": \"yes\",\n            \"name\": \"truncate\",\n            \"label\": \"Truncate Dataset\",\n        },\n    ]\n    return desc\n\n\ndef compute_months_and_offsets(start: int, count: int) -> tuple[list, list]:\n    \"\"\"Figure out an array of values\"\"\"\n    months = [start]\n    offsets = [0]\n    for i in range(1, count):\n        nextval = start + i\n        if nextval > 12:\n            nextval -= 12\n            offsets.append(1)\n        else:\n            offsets.append(0)\n        months.append(nextval)\n\n    return months, offsets\n\n\ndef combine(df: pd.DataFrame, months: list, offsets: list) -> pd.DataFrame:\n    \"\"\"Combine the months in the way we need to get one value per year.\"\"\"\n\n    # We create the yearly dataframe\n    yearlydf = df[df[\"month\"] == months[0]].copy().set_index(\"year\")\n    for month, offset in zip(months[1:], offsets[1:], strict=True):\n        second = df[df[\"month\"] == month].copy()\n        if offset == 1:\n            second[\"year\"] = second[\"year\"] - 1\n        second = second.set_index(\"year\")\n        for col in PDICT_AGG_MAX:\n            yearlydf[col] = yearlydf[col].combine(second[col], np.maximum)\n        for col in PDICT_AGG_MIN:\n            yearlydf[col] = yearlydf[col].combine(second[col], np.minimum)\n        for col in PDICT_AGG_SUM:\n            yearlydf[col] = yearlydf[col] + second[col]\n        for col in PDICT_AGG_SUM_THEN_DIVIDE:\n            yearlydf[col] = yearlydf[col] + second[col]\n    if len(months) > 1:\n        for col in PDICT_AGG_SUM_THEN_DIVIDE:\n            yearlydf[col] = yearlydf[col] / float(len(months))\n    return yearlydf\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    today = date.today() + timedelta(days=1)\n    station = ctx[\"station\"]\n    threshold = ctx[\"threshold\"]\n    month1 = ctx[\"month1\"]\n    varname1 = ctx[\"var1\"]\n    num1 = min([12, ctx[\"num1\"]])\n    month2 = ctx[\"month2\"]\n    varname2 = ctx[\"var2\"]\n    num2 = min([12, ctx[\"num2\"]])\n    months1, offsets1 = compute_months_and_offsets(month1, num1)\n    months2, offsets2 = compute_months_and_offsets(month2, num2)\n    # Compute the monthly totals\n    endts = today.replace(day=1)\n    if ctx[\"truncate\"] == \"no\":\n        endts = today + timedelta(days=1)\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        SELECT year, month, avg((high+low)/2.) as avg_temp,\n        avg(high) as avg_high, min(high) as min_high,\n        avg(low) as avg_low, max(low) as max_low,\n        sum(precip) as total_precip, max(high) as max_high,\n        min(low) as min_low,\n        sum(case when high >= :threshold then 1 else 0 end) as days_high_aoa,\n        avg(coalesce(merra_srad, hrrr_srad)) as avg_rad,\n        avg(high - low) as avg_range,\n        sum(cdd(high, low, 65)) as cdd65,\n        sum(hdd(high, low, 65)) as hdd65,\n        sum(gddxx(32, 86, high, low)) as gdd32,\n        sum(gddxx(41, 86, high, low)) as gdd41,\n        sum(gddxx(46, 86, high, low)) as gdd46,\n        sum(gddxx(48, 86, high, low)) as gdd48,\n        sum(gddxx(50, 86, high, low)) as gdd50,\n        sum(gddxx(51, 86, high, low)) as gdd51,\n        sum(gddxx(52, 86, high, low)) as gdd52\n        from alldata WHERE station = :station and day < :sts\n        GROUP by year, month ORDER by year, month\n        \"\"\"),\n            conn,\n            params={\n                \"threshold\": threshold,\n                \"station\": station,\n                \"sts\": endts,\n            },\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"Database query resulted in no data found.\")\n\n    xdf = combine(df, months1, offsets1)\n    ydf = combine(df, months2, offsets2)\n\n    df = pd.DataFrame()\n    df[f\"{varname1}_1\"] = xdf[varname1]\n    df[f\"{varname2}_2\"] = ydf[varname2]\n    df = df.dropna()\n    xdata = df[f\"{varname1}_1\"]\n    ydata = df[f\"{varname2}_2\"]\n    if xdata.isna().all() or ydata.isna().all():\n        raise NoDataFound(\"No Data Found.\")\n    title = (\n        f\"{df.index.min()}-{df.index.max()} {ctx['_sname']}\\n\"\n        \"Comparison of Monthly Periods, Quadrant Frequency Labelled\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    ax.scatter(\n        xdata,\n        ydata,\n        marker=\"s\",\n        facecolor=\"b\",\n        edgecolor=\"b\",\n        label=None,\n        zorder=3,\n    )\n    ax.grid(True)\n\n    h_slope, intercept, r_value, _, _ = stats.linregress(\n        xdata.to_numpy(), ydata.to_numpy()\n    )\n    y = h_slope * np.arange(xdata.min(), xdata.max()) + intercept\n    ax.plot(\n        np.arange(xdata.min(), xdata.max()),\n        y,\n        lw=2,\n        color=\"r\",\n        label=f\"Slope={h_slope:.2f} R$^2$={r_value**2:.2f}\",\n    )\n    ax.legend(fontsize=10)\n    xmonths = \", \".join(str(calendar.month_abbr[x]) for x in months1)\n    ymonths = \", \".join(str(calendar.month_abbr[x]) for x in months2)\n    t1 = \"\" if varname1 != \"days_high_aoa\" else f\" {threshold:.0f}\"\n    t2 = \"\" if varname2 != \"days_high_aoa\" else f\" {threshold:.0f}\"\n    x = xdata.mean()\n    y = ydata.mean()\n    df[\"zscore\"] = ((xdata - x) ** 2 + (ydata - y) ** 2) ** 0.5\n    ax.set_xlabel(\n        f\"{xmonths}\\n{PDICT[varname1]}{t1} [{UNITS[varname1]}], Avg: {x:.1f}\",\n        fontsize=12,\n    )\n    ax.set_ylabel(\n        f\"{ymonths}\\n{PDICT[varname2]}{t2} [{UNITS[varname2]}], Avg: {y:.1f}\",\n        fontsize=12,\n    )\n\n    box = ax.get_position()\n    ax.set_position(\n        [box.x0, box.y0 + box.height * 0.05, box.width, box.height * 0.95]\n    )\n    ax.axhline(y, linestyle=\"--\", color=\"g\")\n    ax.axvline(x, linestyle=\"--\", color=\"g\")\n    ur = ((xdata >= x) & (ydata >= y)).sum()\n    val = ur / float(len(df.index)) * 100.0\n    ax.text(\n        0.95,\n        0.75,\n        f\"{ur} ({val:.1f}%)\",\n        color=\"tan\",\n        fontsize=24,\n        transform=ax.transAxes,\n        ha=\"right\",\n        zorder=2,\n    )\n    lr = ((xdata >= x) & (ydata < y)).sum()\n    val = lr / float(len(df.index)) * 100.0\n    ax.text(\n        0.95,\n        0.25,\n        f\"{lr} ({val:.1f}%)\",\n        color=\"tan\",\n        fontsize=24,\n        transform=ax.transAxes,\n        ha=\"right\",\n        zorder=2,\n    )\n    ll = ((xdata < x) & (ydata < y)).sum()\n    val = ll / float(len(df.index)) * 100.0\n    ax.text(\n        0.05,\n        0.25,\n        f\"{ll} ({val:.1f}%)\",\n        color=\"tan\",\n        fontsize=24,\n        transform=ax.transAxes,\n        ha=\"left\",\n        zorder=2,\n    )\n    ul = ((xdata < x) & (ydata >= y)).sum()\n    val = ul / float(len(df.index)) * 100.0\n    ax.text(\n        0.05,\n        0.75,\n        f\"{ul} ({val:.1f}%)\",\n        color=\"tan\",\n        fontsize=24,\n        transform=ax.transAxes,\n        ha=\"left\",\n        zorder=2,\n    )\n    for yr in df.sort_values(\"zscore\", ascending=False).head(5).index:\n        ax.text(xdata[yr], ydata[yr], f\" {yr}\")\n    if ctx[\"year\"] in df.index:\n        ax.text(xdata[ctx[\"year\"]], ydata[ctx[\"year\"]], f\" {ctx['year']}\")\n        ax.scatter(\n            xdata[ctx[\"year\"]],\n            ydata[ctx[\"year\"]],\n            marker=\"s\",\n            facecolor=\"r\",\n            edgecolor=\"r\",\n            label=None,\n            zorder=4,\n        )\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p10.py",
    "content": "\"\"\"\nThis plot presents the period between the first\nor last date for spring and fall season that the temperature was above or\nbelow some threshold.  The year is split into two seasons on 1 July. A\nsimple linear trend line is placed on both dates.\n\"\"\"\n\nimport calendar\nfrom datetime import date, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.axes import Axes\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom scipy import stats\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"above\": \"First Spring/Last Fall Temperature Above (>=) Threshold\",\n    \"above2\": \"Last Spring/First Fall Temperature Above (>=) Threshold\",\n    \"below\": \"Last Spring/First Fall Temperature Below Threshold\",\n}\nPDICT2 = {\n    \"high\": \"High Temperature\",\n    \"low\": \"Low Temperature\",\n    \"snow\": \"Snowfall\",\n    \"snowd\": \"Snow Cover Depth\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"report\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"direction\",\n            default=\"below\",\n            label=\"Threshold Direction\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"varname\",\n            default=\"low\",\n            label=\"Daily Variable to plot?\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"float\",\n            name=\"threshold\",\n            default=\"32\",\n            label=\"Enter Threshold (°F or Inches):\",\n        ),\n        dict(\n            type=\"year\", name=\"year\", default=1893, label=\"Start Year of Plot\"\n        ),\n    ]\n    return desc\n\n\ndef print_top10(ax: Axes, df: pd.DataFrame):\n    \"\"\"Print the top 10\"\"\"\n\n    text = \"Fall Season\\nEarliest    | Latest\\n\"\n    for season in [\"fall\", \"spring\"]:\n        earliest = []\n        sdaycol = f\"{season}_sday\"\n        datecol = f\"{season}_date\"\n        for _, row in (\n            df[df[datecol].notna()]\n            .sort_values(by=sdaycol, ascending=True)\n            .head(10)\n            .iterrows()\n        ):\n            earliest.append(f\"{row[datecol]:%Y-%b-%d}\")\n        latest = []\n        for _, row in (\n            df[df[datecol].notna()]\n            .sort_values(by=sdaycol, ascending=False)\n            .head(10)\n            .iterrows()\n        ):\n            latest.append(f\"{row[datecol]:%Y-%b-%d}\")\n        for early, late in zip(earliest, latest, strict=True):\n            text += f\"{early:10s} | {late:10s}\\n\"\n        if season == \"fall\":\n            text += \"\\n\\n\\nSpring Season\\nEarliest    | Latest\\n\"\n\n    ax.text(\n        1.1,\n        0.5,\n        text,\n        transform=ax.transAxes,\n        fontsize=10,\n        fontfamily=\"monospace\",\n        va=\"center\",\n        ha=\"left\",\n        bbox=dict(boxstyle=\"round\", fc=\"wheat\", ec=\"0.5\", alpha=0.7),\n    )\n\n\n@with_sqlalchemy_conn(\"coop\")\ndef plotter(ctx: dict, conn: Connection | None = None):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    threshold = ctx[\"threshold\"]\n    direction = ctx[\"direction\"]\n    varname = ctx[\"varname\"]\n    startyear = ctx[\"year\"]\n\n    if direction == \"below\":\n        sql = \"\"\"select year,\n        max(case when {varname}::numeric < :thres and month < 7\n            then extract(doy from day) else 0 end) as spring,\n        max(case when {varname}::numeric < :thres and month < 7\n            then day else null end) as spring_date,\n        min(case when {varname}::numeric < :thres and month > 6\n            then extract(doy from day) else 388 end) as fall,\n        min(case when {varname}::numeric < :thres and month > 6\n            then day else null end) as fall_date\n        from alldata where station = :station\n        GROUP by year ORDER by year ASC\"\"\"\n    elif direction == \"above\":\n        sql = \"\"\"select year,\n             min(case when {varname}::numeric >= :thres and month < 7\n                 then extract(doy from day) else 183 end) as spring,\n             min(case when {varname}::numeric >= :thres and month < 7\n                 then day else null end) as spring_date,\n             max(case when {varname}::numeric >= :thres and month > 6\n                 then extract(doy from day) else 183 end) as fall,\n             max(case when {varname}::numeric >= :thres and month > 6\n                 then day else null end) as fall_date\n            from alldata where station = :station\n            GROUP by year ORDER by year ASC\"\"\"\n    else:  # above2\n        sql = \"\"\"select year,\n             max(case when {varname}::numeric >= :thres and month < 7\n                 then extract(doy from day) else 0 end) as spring,\n             max(case when {varname}::numeric >= :thres and month < 7\n                 then day else null end) as spring_date,\n             min(case when {varname}::numeric >= :thres and month > 6\n                 then extract(doy from day) else 388 end) as fall,\n             min(case when {varname}::numeric >= :thres and month > 6\n                 then day else null end) as fall_date\n            from alldata where station = :station\n            GROUP by year ORDER by year ASC\"\"\"\n\n    res = conn.execute(\n        sql_helper(sql, varname=varname),\n        {\"thres\": threshold, \"station\": station},\n    )\n    if res.rowcount == 0:\n        raise NoDataFound(\"No Data Found.\")\n    rows = []\n    for row in res.mappings():\n        if row[\"year\"] < startyear:\n            continue\n        if row[\"fall\"] > 366:\n            continue\n        if row[\"fall\"] == 183 and row[\"spring\"] == 183:\n            continue\n        rows.append(\n            dict(\n                year=row[\"year\"],\n                spring=row[\"spring\"],\n                fall=row[\"fall\"],\n                spring_date=row[\"spring_date\"],\n                fall_date=row[\"fall_date\"],\n            )\n        )\n    df = pd.DataFrame(rows)\n    if df.empty:\n        raise NoDataFound(\"No data found for query.\")\n    for col in [\"spring_date\", \"fall_date\"]:\n        df[col] = pd.to_datetime(df[col])\n    df[\"season\"] = df[\"fall\"] - df[\"spring\"]\n    df[\"fall_sday\"] = df[\"fall_date\"].dt.strftime(\"%m%d\")\n    df[\"spring_sday\"] = df[\"spring_date\"].dt.strftime(\"%m%d\")\n    today = date.today()\n    res = (\n        \"# IEM Climodat https://mesonet.agron.iastate.edu/climodat/\\n\"\n        f\"# Report Generated: {today:%d %b %Y}\\n\"\n        f\"# Climate Record: {ctx['_nt'].sts[station]['archive_begin']} \"\n        f\"-> {today}\\n\"\n        f\"# Site Information: {ctx['_sname']}\\n\"\n        \"# Contact Information: Daryl Herzmann \"\n        \"akrherz@iastate.edu 515.294.5978\\n\"\n        f\"# LENGTH OF SEASON FOR STATION NUMBER  {station}   \"\n        f\"BASE TEMP={threshold}\\n\"\n        \"# LAST SPRING OCCURENCE FIRST FALL OCCURENCE\\n\"\n        \"   YEAR MONTH DAY DOY         MONTH DAY DOY   LENGTH OF SEASON\\n\"\n    )\n    for _, row in df.iterrows():\n        if row[\"spring_date\"] is None or row[\"fall_date\"] is None:\n            continue\n        res += (\n            f\"{row['year']:7.0f}{row['spring_date'].month:4.0f}\"\n            f\"{row['spring_date'].day:6.0f}{row['spring']:4.0f}        \"\n            f\"{row['fall_date'].month:4.0f}{row['fall_date'].day:6.0f}\"\n            f\"{row['fall']:4.0f}          {row['season']:.0f}\\n\"\n        )\n    sts = date(2000, 1, 1) + timedelta(days=df[\"spring\"].mean())\n    ets = date(2000, 1, 1) + timedelta(days=df[\"fall\"].mean())\n    res += (\n        f\"{'MEAN':7s}{sts.month:4.0f}{sts.day:6.0f}{df['spring'].mean():4.0f}\"\n        f\"        {ets.month:4.0f}{ets.day:6.0f}{df['fall'].mean():4.0f}\"\n        f\"          {df['season'].mean():.0f}\\n\"\n    )\n    years = np.array(df[\"year\"], dtype=int)\n    spring = np.array(df[\"spring\"], dtype=int)\n    fall = np.array(df[\"fall\"], dtype=int)\n\n    title = PDICT.get(direction, \"\").replace(\n        \"Temperature\", PDICT2.get(varname)\n    )\n    units = \"°F\" if not varname.startswith(\"snow\") else \"inch\"\n    (fig, ax) = figure_axes(\n        title=ctx[\"_sname\"], subtitle=f\"{title} {threshold}{units}\", apctx=ctx\n    )\n    ax.set_position([0.08, 0.1, 0.6, 0.8])\n    ax.bar(years, fall - spring, bottom=spring, ec=\"tan\", fc=\"tan\", zorder=1)\n    for _v in [fall, spring]:\n        avgv = int(np.average(_v))\n        ts = date(2000, 1, 1) + timedelta(days=avgv - 1)\n        ax.text(\n            years[-1] + 3,\n            avgv,\n            ts.strftime(\"Avg:\\n%-d %b\"),\n            ha=\"left\",\n            va=\"center\",\n        )\n        ax.axhline(avgv, color=\"k\")\n    days = np.average(fall - spring)\n    ax.text(\n        1.02,\n        0.5,\n        f\"<- {days:.1f} days ->\",\n        transform=ax.transAxes,\n        rotation=-90,\n    )\n    if len(years) > 3:\n        s_slp, s_int, s_r, _, _ = stats.linregress(years, spring)\n        ax.plot(\n            years,\n            years * s_slp + s_int,\n            lw=3,\n            zorder=2,\n            label=(\n                f\"{(s_slp * 100.0):.2f} \"\n                r\"$\\frac{days}{100y}$ R$^2$=\"\n                f\"{(s_r**2):.2f}\"\n            ),\n        )\n    ax.plot(\n        years,\n        df[\"spring\"].rolling(window=30).mean(),\n        color=\"purple\",\n        lw=3,\n        label=\"30yr\",\n    )\n    if len(years) > 3:\n        f_slp, f_int, f_r, _, _ = stats.linregress(years, fall)\n        ax.plot(\n            years,\n            years * f_slp + f_int,\n            lw=3,\n            zorder=2,\n            label=(\n                f\"{(f_slp * 100.0):.2f} \"\n                r\"$\\frac{days}{100y}$ R$^2$=\"\n                f\"{(f_r**2):.2f}\"\n            ),\n        )\n    ax.plot(\n        years,\n        df[\"fall\"].rolling(window=30).mean(),\n        color=\"r\",\n        lw=3,\n        label=\"30yr\",\n    )\n\n    ax.grid(True)\n    ax.legend(ncol=4, loc=(0.01, 0.91))\n    ax.set_yticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax.set_yticklabels(calendar.month_abbr[1:])\n    ax.set_ylim(min(spring) - 5, max(fall) + 30)\n    ax.set_xlim(min(years) - 1, max(years) + 1)\n\n    print_top10(ax, df)\n\n    return fig, df, res\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p11.py",
    "content": "\"\"\"\nThis plot presents the range between the min\nand maximum observation of your choice for a given station and a given\nyear.  Some of these values are only computed based on hourly reports,\nso they would be represent a true min and max of a continuously observed\nvariable.\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport matplotlib.dates as mdates\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nPDICT = {\n    \"below\": \"Daily Range Below Emphasis\",\n    \"atbelow\": \"Daily Range At or Below Emphasis\",\n    \"touches\": \"Daily Range Touches Emphasis\",\n    \"above\": \"Daily Range At or Above Emphasis\",\n}\n\nPDICT2 = {\n    \"tmpf\": \"Air Temperature\",\n    \"dwpf\": \"Dew Point Temperature\",\n    \"feel\": \"Feels Like Temperature\",\n    \"rh\": \"Relative Humidity\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = datetime.now()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"year\",\n            min=1900,\n            name=\"year\",\n            default=today.year,\n            label=\"Select Year:\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"emphasis\",\n            default=\"-99\",\n            label=(\n                \"Temperature(°F) or RH(%) Line of Emphasis (-99 disables):\"\n            ),\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            label=\"Which variable to plot?\",\n            default=\"dwpf\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            label=\"Option for Highlighting\",\n            default=\"touches\",\n            options=PDICT,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    year = ctx[\"year\"]\n    emphasis = ctx[\"emphasis\"]\n    opt = ctx[\"opt\"]\n    varname = ctx[\"var\"]\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            select day, max_{varname}, min_{varname}\n            from {table} s JOIN stations t on (s.iemid = t.iemid)\n            where t.id = :station and t.network = :network and\n            max_{varname} is not null and\n            min_{varname} is not null\n            ORDER by day ASC\n        \"\"\",\n                varname=varname,\n                table=f\"summary_{year}\",\n            ),\n            conn,\n            params={\"station\": station, \"network\": ctx[\"network\"]},\n            index_col=\"day\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found!\")\n    df[\"range\"] = df[f\"max_{varname}\"] - df[f\"min_{varname}\"]\n\n    minval = df[f\"min_{varname}\"].min()\n    maxval = df[f\"max_{varname}\"].max()\n    title = (\n        f\"{ctx['_sname']}:: {year} \"\n        f\"Daily Min/Max {PDICT2[varname]}\\n\"\n        f\"Period: {df.index.values[0]:%-d %B} to {df.index.values[-1]:%-d %B}\"\n        f\" , Min: {minval:.0f} Max: {maxval:.0f}\"\n    )\n    fig = figure(title=title, apctx=ctx)\n    ax = fig.add_axes((0.1, 0.15, 0.8, 0.75))\n    bars = ax.bar(\n        df.index.values,\n        df[\"range\"].values,\n        ec=\"g\",\n        fc=\"g\",\n        bottom=df[f\"min_{varname}\"].values,\n        zorder=1,\n    )\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%-d\\n%b\"))\n    hits = []\n    if emphasis > -99:\n        for i, mybar in enumerate(bars):\n            minval = mybar.get_y()\n            maxval = mybar.get_y() + mybar.get_height()\n            if (\n                (maxval >= emphasis >= minval and opt == \"touches\")\n                or (minval >= emphasis and opt == \"above\")\n                or (maxval < emphasis and opt == \"below\")\n                or (minval <= emphasis and opt == \"atbelow\")\n            ):\n                mybar.set_facecolor(\"r\")\n                mybar.set_edgecolor(\"r\")\n                hits.append(df.index.values[i])\n        ax.axhline(emphasis, lw=2, color=\"k\")\n        ax.text(\n            df.index.values[-1] + timedelta(days=2),\n            emphasis,\n            f\"{emphasis}\",\n            ha=\"left\",\n            va=\"center\",\n        )\n    ax.grid(True)\n    ll = \"°F\" if varname != \"rh\" else \"%\"\n    ax.set_ylabel(f\"{PDICT2[varname]} {ll}\")\n    ax.set_xlabel(\n        f\"Days meeting emphasis: {len(hits)}, \"\n        f\"first: {hits[0].strftime('%B %d') if hits else 'None'} \"\n        f\"last: {hits[-1].strftime('%B %d') if hits else 'None'}\"\n    )\n    delta = timedelta(days=1)\n    ax.set_xlim(df.index.values[0] - delta, df.index.values[-1] + delta)\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p12.py",
    "content": "\"\"\"\nThis plot presents the yearly first or last date\nof a given high or low temperature along with the number of days that\nyear above/below the threshold along with the cumulative distribution\nfunction for the first date!  When you select a low temperature option,\nthe season displayed in the chart and available download spreadsheet\nrepresents the start year of the winter season.  Rewording, the year 2016\nwould represent the period of 1 July 2016 to 30 Jun 2017.\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"last_high_above\": \"Last Date At or Above (High Temperature)\",\n    \"last_high_below\": \"Last Date Below (High Temperature)\",\n    \"first_high_above\": \"First Date At or Above (High Temperature)\",\n    \"first_high_below\": \"First Date Below (High Temperature)\",\n    \"first_low_above\": \"First Date At or Above (Low Temperature)\",\n    \"first_low_below\": \"First Date Below (Low Temperature)\",\n    \"last_low_above\": \"Last Date At or Above(Low Temperature)\",\n    \"last_low_below\": \"Last Date Below (Low Temperature)\",\n}\nPDICT2 = {\n    \"calendar\": \"Compute over Calendar Year\",\n    \"winter\": \"Compute over Winter Season\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    thisyear = date.today().year\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"int\",\n            name=\"threshold\",\n            default=90,\n            label=\"Enter Threshold:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"which\",\n            default=\"last_high_above\",\n            label=\"Date Option:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"season\",\n            default=\"calendar\",\n            label=\"How to split the year:\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=thisyear,\n            max=(thisyear + 1),\n            label=\"Year to Highlight in Chart:\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    threshold = ctx[\"threshold\"]\n    season = ctx[\"season\"]\n    (extrenum, varname, direction) = ctx[\"which\"].split(\"_\")\n    year = ctx[\"year\"]\n\n    op = \">=\" if direction == \"above\" else \"<\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            with data as (\n                SELECT extract(year from (day + :offset))\n                    as season,\n                high, low, day from alldata WHERE station = :station\n                and day >= '1893-01-01'),\n            agg1 as (\n                SELECT season - :soff as season,\n                count(*) as obs,\n                min(case when {varname} {op} :thresh then day else null end)\n                    as nday,\n                max(case when {varname} {op} :thresh then day else null end)\n                    as xday,\n                sum(case when {varname} {op} :thresh then 1 else 0 end)\n                    as count\n                from data GROUP by season)\n        SELECT season::int, count, obs, nday,\n        extract(doy from nday) as nday_doy,\n        xday, extract(doy from xday) as xday_doy from agg1\n        ORDER by season ASC\n        \"\"\",\n                op=op,\n                varname=varname,\n            ),\n            conn,\n            params={\n                \"offset\": timedelta(days=183) if season == \"winter\" else 0,\n                \"station\": station,\n                \"soff\": 1 if season == \"winter\" else 0,\n                \"thresh\": threshold,\n            },\n            index_col=\"season\",\n        )\n    # We need to do some magic to julian dates straight\n    if season == \"winter\":\n        # drop the first row\n        df = df.drop(df.index.values[0])\n        df.loc[df[\"nday_doy\"] < 183, \"nday_doy\"] += 365.0\n        df.loc[df[\"xday_doy\"] < 183, \"xday_doy\"] += 365.0\n    # Set NaN where we did not meet conditions\n    zeros = df[df[\"count\"] == 0].index.values\n    col = \"xday_doy\" if extrenum == \"last\" else \"nday_doy\"\n    df2 = df[df[\"count\"] > 0]\n    if df2.empty:\n        raise NoDataFound(\"No data found.\")\n    tl = PDICT[f\"{extrenum}_{varname}_{direction}\"]\n    title = (\n        f\"{ctx['_sname']} :: {extrenum.capitalize()} Date and Days\\n\"\n        f\"{tl} {threshold}\"\n        \"°F\"\n    )\n    fig = figure(title=title, apctx=ctx)\n    # Main plot gets 75% of vertical space\n    ax_box = fig.add_axes((0.1, 0.32, 0.65, 0.05), frameon=False)\n    ax = fig.add_axes((0.1, 0.37, 0.65, 0.53))\n    ax3 = fig.add_axes((0.1, 0.1, 0.65, 0.15))\n\n    # The present year value may be so low that it destorts the plot\n    lastval = df2.iloc[-1][\"count\"]\n    minval = df2[df2[\"count\"] > lastval][\"count\"].min()\n    pltdf = df2\n    if lastval < 10 and (minval - lastval) > 30:\n        pltdf = df2[df2[\"count\"] > lastval]\n    ax.scatter(pltdf[col], pltdf[\"count\"])\n\n    # Calculate y-axis limits first based on data\n    ymin = pltdf[\"count\"].min()\n    ymax = pltdf[\"count\"].max()\n    yrange = ymax - ymin\n\n    boxprops = dict(color=\"blue\", alpha=0.7)\n    whiskerprops = dict(color=\"blue\", alpha=0.7)\n    medianprops = dict(color=\"red\")\n\n    # Create boxplot at the bottom of the plot\n    ax_box.boxplot(\n        pltdf[col],\n        positions=[0.5],\n        widths=[0.5],\n        orientation=\"vertical\",\n        patch_artist=True,\n        boxprops=boxprops,\n        whiskerprops=whiskerprops,\n        medianprops=medianprops,\n        showfliers=False,\n        flierprops=dict(marker=\"o\", markerfacecolor=\"blue\", alpha=0.5),\n    )\n    ax_box.set_yticks([])\n    ax_box.set_ylim(0.2, 0.8)\n\n    ax.set_ylim(ymin - 3, ymax + yrange * 0.05)\n\n    # Add stats annotation using date formatting\n    q1_date = datetime(2000, 1, 1) + timedelta(\n        days=int(np.percentile(pltdf[col], 25))\n    )\n    med_date = datetime(2000, 1, 1) + timedelta(\n        days=int(np.percentile(pltdf[col], 50))\n    )\n    q3_date = datetime(2000, 1, 1) + timedelta(\n        days=int(np.percentile(pltdf[col], 75))\n    )\n\n    # Function to calculate text box height based on number of lines\n    def get_text_height(text):\n        return 0.04 + (text.count(\"\\n\") * 0.02)  # Base height + line spacing\n\n    # Start position for first box\n    current_y = 0.9\n    current_x = 0.78\n\n    # Place earliest dates at top\n    label = f\"Earliest {'Last' if extrenum == 'last' else 'First'} Dates\"\n    lcol = col.split(\"_\")[0]\n    for _, row in df.sort_values(col, ascending=True).head(10).iterrows():\n        if row[lcol] is None:\n            continue\n        label += f\"\\n{row[lcol]:%d %b %Y}\"\n    earliest_height = get_text_height(label)\n    fig.text(\n        current_x,\n        current_y,\n        label,\n        ha=\"left\",\n        va=\"top\",\n        bbox=dict(\n            facecolor=\"#F0F0F0\", edgecolor=\"gray\", boxstyle=\"round,pad=0.5\"\n        ),\n    )\n\n    # Calculate next position with padding\n    current_y -= earliest_height + 0.05  # Add padding between boxes\n\n    # Place statistics\n    stats_text = (\n        \"Distribution Statistics\\n\"\n        f\"Q1: {q1_date:%d %b}\\n\"\n        f\"Median: {med_date:%d %b}\\n\"\n        f\"Q3: {q3_date:%d %b}\"\n    )\n    stats_height = get_text_height(stats_text)\n    fig.text(\n        current_x,\n        current_y,\n        stats_text,\n        ha=\"left\",\n        va=\"top\",\n        bbox=dict(\n            facecolor=\"#F0F0F0\", edgecolor=\"gray\", boxstyle=\"round,pad=0.5\"\n        ),\n    )\n\n    # Calculate next position\n    current_y -= stats_height + 0.05\n\n    # Place threshold info\n    zeros_str = (\n        \"[\" + \",\".join(str(z) for z in zeros) + \"]\" if len(zeros) < 4 else \"\"\n    )\n    thresh_text = (\n        \"Threshold Statistics\\n\"\n        f\"{len(zeros)} year(s) failed threshold {zeros_str}\\n\"\n        f\"Avg Count: {df2['count'].mean():.1f} days\"\n    )\n    thresh_height = get_text_height(thresh_text)\n    fig.text(\n        current_x,\n        current_y,\n        thresh_text,\n        ha=\"left\",\n        va=\"top\",\n        bbox=dict(\n            facecolor=\"#F0F0F0\", edgecolor=\"gray\", boxstyle=\"round,pad=0.5\"\n        ),\n    )\n\n    # Calculate next position\n    current_y -= thresh_height + 0.05\n\n    # Place latest dates at bottom\n    label = f\"Latest {'Last' if extrenum == 'last' else 'First'} Dates\"\n    for _, row in df.sort_values(col, ascending=False).head(10).iterrows():\n        if row[lcol] is None:\n            continue\n        label += f\"\\n{row[lcol]:%d %b %Y}\"\n    fig.text(\n        current_x,\n        current_y,\n        label,\n        ha=\"left\",\n        va=\"top\",\n        bbox=dict(\n            facecolor=\"#F0F0F0\", edgecolor=\"gray\", boxstyle=\"round,pad=0.5\"\n        ),\n    )\n\n    ax.grid(True)\n    ax.grid(True, zorder=1, alpha=0.5)\n    ax.set_axisbelow(True)\n    ax_box.set_xlabel(\n        (\"Date of %s Occurrence%s\")\n        % (\n            extrenum.capitalize(),\n            (\n                \", Year of December for Winter Season\"\n                if season == \"winter\"\n                else \"\"\n            ),\n        )\n    )\n    ax.set_ylabel(\n        (\"Days with %s %s %s°F\")\n        % (\n            varname.capitalize(),\n            \"At or Above\" if direction == \"above\" else \"Below\",\n            threshold,\n        )\n    )\n\n    # Add the CDF plot in lower subplot\n    sortvals = np.sort(np.array(df2[col].values))\n    yvals = np.arange(len(sortvals)) / float(len(sortvals))\n    ax3.plot(sortvals, yvals * 100.0, color=\"r\")\n    ax3.set_ylabel(\"Accum. Freq [%]\", color=\"r\")\n    ax3.tick_params(axis=\"y\", colors=\"r\")\n\n    # Set up coordinated gridlines for CDF plot\n    ax3.set_yticks([0, 25, 50, 75, 100])\n    ax3.grid(True, axis=\"y\", linestyle=\"--\", alpha=0.3, color=\"red\")\n    ax3.grid(True, axis=\"x\", alpha=0.3)\n\n    # Align x-axis ticks between plots\n    xticks = []\n    xticklabels = []\n    for i in np.arange(df2[col].min() - 5, df2[col].max() + 5, 1):\n        ts = datetime(2000, 1, 1) + timedelta(days=i)\n        if ts.day == 1:\n            xticks.append(i)\n            xticklabels.append(ts.strftime(\"%-d %b\"))\n\n    for _ax in [ax, ax_box, ax3]:\n        _ax.set_xlim(df2[col].min() - 10, df2[col].max() + 10)\n        _ax.set_xticks(xticks)\n        _ax.set_xticklabels(xticklabels)\n    # hide the x-axis labels on the main ax plot\n    ax.set_xticklabels([])\n    ax3.set_ylim(-0.1, 100)\n\n    if year in df2.index:\n        df3 = df2.loc[year]\n        if df3[\"count\"] >= minval:\n            ax.scatter(df3[col], df3[\"count\"], zorder=5, color=\"r\")\n            ax.text(df3[col], df3[\"count\"] + 1, f\"{year}\", zorder=5, color=\"r\")\n            ax.axhline(df3[\"count\"])\n        else:\n            fig.text(\n                0.04,\n                0.05,\n                f\"{year} value of {df3['count']} day(s) not shown\",\n            )\n        ax.axvline(df3[col])\n        ax.annotate(\n            str(year),\n            (df3[col], 0.79),\n            xycoords=(\"data\", \"axes fraction\"),\n            color=\"b\",\n            rotation=90,\n            va=\"top\",\n        )\n\n    idx = df2[col].idxmax()\n    if idx != year:\n        ax.text(\n            df2.at[idx, col] + 1,\n            df2.at[idx, \"count\"],\n            f\"{idx}\",\n            ha=\"left\",\n        )\n    idx = df2[col].idxmin()\n    if idx != year:\n        ax.text(\n            df2.at[idx, col] - 1,\n            df2.at[idx, \"count\"],\n            f\"{idx}\",\n            va=\"bottom\",\n        )\n    idx = df2[\"count\"].idxmax()\n    if idx != year:\n        ax.text(\n            df2.at[idx, col] + 1,\n            df2.at[idx, \"count\"],\n            f\"{idx}\",\n            va=\"bottom\",\n        )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p13.py",
    "content": "\"\"\"\nThis chart presents the start or end date of the\nwarmest 91 day period each year.\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport pandas as pd\nfrom matplotlib import cm\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import centered_bins, figure_axes, get_cmap\nfrom scipy import stats\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\"end_summer\": \"End of Summer\", \"start_summer\": \"Start of Summer\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"which\",\n            default=\"end_summer\",\n            label=\"Which value to plot:\",\n            options=PDICT,\n        ),\n        {\n            \"type\": \"cmap\",\n            \"name\": \"cmap\",\n            \"default\": \"RdYlGn\",\n            \"label\": \"Color Ramp:\",\n        },\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    which = ctx[\"which\"]\n    station = ctx[\"station\"]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            with obs as (\n                select day, year, avg((high+low)/2.) OVER\n                (ORDER by day ASC rows 91 preceding) from alldata\n                where station = :sid and day > '1893-01-01'\n            ), agg as (\n                select day, year, avg,\n                rank() OVER (PARTITION by year ORDER by avg DESC, day DESC)\n                from obs\n            )\n            select year, extract(doy from day)::int as doy, avg from agg\n            where rank = 1 ORDER by year ASC\n        \"\"\"\n            ),\n            conn,\n            params={\"sid\": station},\n            index_col=\"year\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    today = date.today()\n    df[\"departure\"] = df[\"avg\"] - df[\"avg\"].mean()\n    df[\"plot_doy\"] = df[\"doy\"] - (0 if which == \"end_summer\" else 91)\n    if today.year in df.index and df.at[today.year, \"doy\"] < 270:\n        df = df.drop(today.year)\n\n    t1 = \"End\" if which == \"end_summer\" else \"Start\"\n    title = (\n        f\"{ctx['_sname']} :: {PDICT.get(which)}\\n\"\n        f\"{t1} Date of Warmest (Avg Temp) 91 Day Period\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n\n    cmap = get_cmap(ctx[\"cmap\"])\n    bins = centered_bins(df[\"departure\"].abs().max())\n    norm = mpcolors.BoundaryNorm(bins, cmap.N)\n    ax.scatter(\n        df.index, df[\"plot_doy\"], c=cmap(norm(df[\"departure\"].to_numpy()))\n    )\n    ax.grid(True)\n    ax.set_ylabel(f\"{t1} Date\")\n\n    sm = cm.ScalarMappable(norm, cmap)\n    sm.set_array(bins)\n    cb = fig.colorbar(sm, extend=\"neither\", ax=ax)\n    cb.set_label(\"Summer Avg Temperature Departure °F\")\n\n    yticks = []\n    yticklabels = []\n    for i in np.arange(df[\"plot_doy\"].min() - 5, df[\"plot_doy\"].max() + 5, 1):\n        ts = datetime(2000, 1, 1) + timedelta(days=int(i))\n        if ts.day in [1, 8, 15, 22, 29]:\n            yticks.append(i)\n            yticklabels.append(ts.strftime(\"%-d %b\"))\n    ax.set_yticks(yticks)\n    ax.set_yticklabels(yticklabels)\n\n    h_slope, intercept, r_value, _, _ = stats.linregress(\n        df.index.values, df[\"plot_doy\"].values\n    )\n    ax.plot(\n        df.index.values, h_slope * df.index.values + intercept, lw=2, color=\"r\"\n    )\n\n    avgd = datetime(2000, 1, 1) + timedelta(days=int(df[\"plot_doy\"].mean()))\n    ax.text(\n        0.1,\n        0.03,\n        (\n            f\"Avg Date: {avgd:%-d %b}, \"\n            f\"slope: {h_slope * 100.0:.2f} days/century, \"\n            f\"R$^2$={r_value**2:.2f}\"\n        ),\n        transform=ax.transAxes,\n        va=\"bottom\",\n    )\n    ax.set_xlim(df.index.values[0] - 1, df.index.values[-1] + 1)\n    ax.set_ylim(df[\"plot_doy\"].min() - 5, df[\"plot_doy\"].max() + 5)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p14.py",
    "content": "\"\"\"\nUsing long term data, five precipitation bins are\nconstructed such that each bin contributes 20% to the annual precipitation\ntotal.  Using these 5 bins, an individual year's worth of data is\ncompared.  With this comparison, you can say that one's years worth of\ndepartures can be explained by these differences in precipitation bins.\n\"\"\"\n\nfrom datetime import datetime\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=datetime.now().year,\n            label=\"Year to Highlight:\",\n        ),\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"coop\")\ndef plotter(ctx: dict, conn: Connection | None = None):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    today = datetime.now()\n    year = ctx[\"year\"]\n    jdaylimit = 367\n    if year == today.year:\n        jdaylimit = today.timetuple().tm_yday\n\n    endyear = int(datetime.now().year) + 1\n\n    res = conn.execute(\n        sql_helper(\"\"\"\n    with pop as (\n        select precip, sum(precip) OVER (ORDER by precip ASC) as rsum,\n        sum(precip) OVER () as tsum,\n        min(year) OVER () as minyear from alldata where\n        station = :station and precip > 0.009\n        and extract(doy from day) < :doy and\n        year < extract(year from now()) ORDER by precip ASC)\n    select distinct precip, rsum, tsum, minyear from pop order by precip ASC\n    \"\"\"),\n        {\"station\": station, \"doy\": jdaylimit},\n    )\n    if res.rowcount == 0:\n        raise NoDataFound(\"No Data Found.\")\n    total = None\n    base = None\n    bins = [0.01]\n    minyear = None\n    row = None\n    last_precip = None\n    for i, row in enumerate(res.mappings()):\n        if i == 0:\n            minyear = row[\"minyear\"]\n            total = row[\"tsum\"]\n            onefifth = total / 5.0\n            base = onefifth\n        last_precip = row[\"precip\"]\n        if row[\"rsum\"] > base:\n            bins.append(row[\"precip\"])\n            base += onefifth\n\n    if len(bins) != 5:\n        raise NoDataFound(\"Not enough data found.\")\n\n    normal = total / float(endyear - minyear - 1)\n    # A rounding edge case\n    if last_precip != bins[-1]:\n        bins.append(last_precip)\n    if len(bins) != 6:\n        raise NoDataFound(\"Not enough data found.\")\n\n    df = pd.DataFrame(\n        {\"bin\": range(1, len(bins)), \"lower\": bins[0:-1], \"upper\": bins[1:]},\n        index=range(1, len(bins)),\n    )\n\n    yearlybins = np.zeros((endyear - minyear, 5), \"f\")\n    yearlytotals = np.zeros((endyear - minyear, 5), \"f\")\n\n    res = conn.execute(\n        sql_helper(\"\"\"\n    SELECT year,\n    sum(case when precip >= :b0 and precip < :b1 then 1 else 0 end) as bin0,\n    sum(case when precip >= :b1 and precip < :b2 then 1 else 0 end) as bin1,\n    sum(case when precip >= :b2 and precip < :b3 then 1 else 0 end) as bin2,\n    sum(case when precip >= :b3 and precip < :b4 then 1 else 0 end) as bin3,\n    sum(case when precip >= :b4 and precip < :b5 then 1 else 0 end) as bin4,\n    sum(case when precip >= :b0 and precip < :b1 then precip else 0 end)\n                   as tot0,\n    sum(case when precip >= :b1 and precip < :b2 then precip else 0 end)\n                   as tot1,\n    sum(case when precip >= :b2 and precip < :b3 then precip else 0 end)\n                   as tot2,\n    sum(case when precip >= :b3 and precip < :b4 then precip else 0 end)\n                   as tot3,\n    sum(case when precip >= :b4 and precip < :b5 then precip else 0 end)\n                   as tot4\n    from alldata where extract(doy from day) < :doy and\n    station = :station and precip > 0 and year > 1879 GROUP by year\n    \"\"\"),\n        {\n            \"b0\": bins[0],\n            \"b1\": bins[1],\n            \"b2\": bins[2],\n            \"b3\": bins[3],\n            \"b4\": bins[4],\n            \"b5\": bins[5],\n            \"doy\": jdaylimit,\n            \"station\": station,\n        },\n    )\n    for row in res.mappings():\n        for i in range(5):\n            yearlybins[int(row[\"year\"]) - minyear, i] = row[f\"bin{i}\"]\n            yearlytotals[int(row[\"year\"]) - minyear, i] = row[f\"tot{i}\"]\n    avgs = np.average(yearlybins, 0)\n    df[\"avg_days\"] = avgs\n    dlast = yearlybins[year - minyear, :]\n    df[f\"days_{year}\"] = dlast\n    df[f\"precip_{year}\"] = yearlytotals[year - minyear, :]\n    df[f\"normal_{year}\"] = normal / 5.0\n\n    ybuffer = (max([max(avgs), max(dlast)]) + 2) * 0.05\n    addl = \"\"\n    if jdaylimit < 367:\n        addl = f\" thru {today:%-d %b}\"\n    title = (\n        f\"{ctx['_sname']} [{minyear}-{endyear - 1}]\\n\"\n        f\"Daily Precipitation Contributions{addl}\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n\n    bars = ax.bar(\n        np.arange(5) - 0.2,\n        avgs,\n        width=0.4,\n        fc=\"b\",\n        align=\"center\",\n        label=f'Average = {normal:.2f}\"',\n    )\n    for i, _bar in enumerate(bars):\n        ax.text(\n            _bar.get_x() + 0.2,\n            avgs[i] + ybuffer,\n            f\"{avgs[i]:.1f}\",\n            ha=\"center\",\n            zorder=2,\n        )\n        delta = yearlytotals[year - minyear, i] / normal * 100.0 - 20.0\n        ax.text(\n            i,\n            max(avgs[i], dlast[i]) + 2 * ybuffer,\n            f\"{'+' if delta > 0 else ''}{delta:.1f}%\",\n            ha=\"center\",\n            color=\"r\",\n            bbox=dict(pad=0, facecolor=\"white\", edgecolor=\"white\"),\n            fontsize=\"larger\",\n        )\n\n    bars = ax.bar(\n        np.arange(5) + 0.2,\n        dlast,\n        width=0.4,\n        fc=\"r\",\n        align=\"center\",\n        label=f'{year} = {np.sum(yearlytotals[year - minyear, :]):.2f}\"',\n    )\n    for i, _bar in enumerate(bars):\n        ax.text(\n            _bar.get_x() + 0.2,\n            dlast[i] + ybuffer,\n            f\"{dlast[i]:.0f}\",\n            ha=\"center\",\n            fontsize=\"larger\",\n        )\n\n    ax.text(\n        0.7,\n        0.8,\n        f\"Red text represents {year} bin total\\nprecip departure from average\",\n        transform=ax.transAxes,\n        color=\"r\",\n        ha=\"center\",\n        va=\"top\",\n        bbox={\"facecolor\": \"white\", \"edgecolor\": \"white\"},\n    )\n    ax.legend()\n    ax.grid(True)\n    ax.set_ylabel(\"Days\")\n    ax.text(\n        0.5,\n        -0.05,\n        \"Precipitation Bins [inch], split into equal 20%\"\n        f\" by precipitation volume ({(normal / 5.0):.2f}in) \"\n        \"over period of record\",\n        transform=ax.transAxes,\n        va=\"top\",\n        ha=\"center\",\n    )\n    ax.set_xticks(np.arange(0, 5))\n    xlabels = [f\"{bins[i]:.2f}-{bins[i + 1]:.2f}\" for i in range(5)]\n    ax.set_xticklabels(xlabels)\n    ax.set_ylim(top=ax.get_ylim()[1] * 1.1)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p15.py",
    "content": "\"\"\"\nThis plot displays the directional frequency of\nday to day changes in high or low temperature summarized by month.\n\"\"\"\n\nimport calendar\n\nimport matplotlib.patheffects as PathEffects\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom pyiem.util import utc\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\"high\": \"High Temperature\", \"low\": \"Low Temperature\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"varname\",\n            default=\"high\",\n            label=\"Which metric to plot?\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=utc().year,\n            label=\"Year to Highlight\",\n            min=1893,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"varname\"]\n    year = ctx[\"year\"]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        with obs as\n        (select month, year, high, lag(high) OVER (ORDER by day ASC) as lhigh,\n        low, lag(low) OVER (ORDER by day ASC) as llow\n        from alldata where station = :station)\n\n        SELECT year, month,\n        sum(case when high > lhigh then 1 else 0 end)::numeric as high_greater,\n        sum(case when high = lhigh then 1 else 0 end)::numeric as high_unch,\n        sum(case when high < lhigh then 1 else 0 end)::numeric as high_lower,\n        sum(case when low > llow then 1 else 0 end)::numeric as low_greater,\n        sum(case when low = llow then 1 else 0 end)::numeric as low_unch,\n        sum(case when low < llow then 1 else 0 end)::numeric as low_lower\n        from obs GROUP by year, month ORDER by year, month\n        \"\"\"),\n            conn,\n            params={\"station\": station},\n            index_col=None,\n        )\n    gdf = df.groupby(\"month\").sum()\n    gyear = df[df[\"year\"] == year].groupby(\"month\").sum()\n    if gyear.empty or gdf.empty:\n        raise NoDataFound(\"No data found.\")\n    increase = gdf[f\"{varname}_greater\"]\n    nochange = gdf[f\"{varname}_unch\"]\n    decrease = gdf[f\"{varname}_lower\"]\n    increase2 = gyear[f\"{varname}_greater\"]\n    nochange2 = gyear[f\"{varname}_unch\"]\n    decrease2 = gyear[f\"{varname}_lower\"]\n\n    title = f\"{ctx['_sname']}\\nDay to Day {varname.title()} Temperature Change\"\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n\n    total = decrease + nochange + increase\n    total2 = decrease2 + nochange2 + increase2\n\n    ax.bar(\n        total.index.values - 0.2,\n        decrease / total * 100.0,\n        fc=\"b\",\n        label=\"Decrease\",\n        width=0.4,\n        align=\"center\",\n    )\n    ax.bar(\n        total2.index.values + 0.2,\n        decrease2 / total2 * 100.0,\n        fc=\"lightblue\",\n        width=0.4,\n        label=f\"{year} Decrease\",\n        align=\"center\",\n    )\n    ax.bar(\n        total.index.values - 0.2,\n        nochange / total * 100.0,\n        bottom=(decrease / total * 100.0).values,\n        fc=\"g\",\n        label=\"No Change\",\n        width=0.4,\n        align=\"center\",\n    )\n    ax.bar(\n        total2.index.values + 0.2,\n        nochange2 / total2 * 100.0,\n        bottom=(decrease2 / total2 * 100.0).values,\n        fc=\"lightgreen\",\n        width=0.4,\n        label=f\"{year} No Change\",\n        align=\"center\",\n    )\n    ax.bar(\n        total.index.values - 0.2,\n        increase / total * 100.0,\n        bottom=((decrease + nochange) / total).values * 100.0,\n        fc=\"r\",\n        width=0.4,\n        label=\"Increase\",\n        align=\"center\",\n    )\n    ax.bar(\n        total2.index.values + 0.2,\n        increase2 / total2 * 100.0,\n        bottom=((decrease2 + nochange2) / total2).values * 100.0,\n        fc=\"pink\",\n        width=0.4,\n        label=f\"{year} Increase\",\n        align=\"center\",\n    )\n\n    offset = -0.2\n    for _df in [gdf, gyear]:\n        increase = _df[f\"{varname}_greater\"]\n        nochange = _df[f\"{varname}_unch\"]\n        decrease = _df[f\"{varname}_lower\"]\n        total = decrease + nochange + increase\n        for i, _ in _df.iterrows():\n            txt = ax.text(\n                i + offset,\n                decrease[i] / total[i] * 100.0 - 5,\n                f\"{(decrease[i] / total[i] * 100.0):.0f}\",\n                ha=\"center\",\n                fontsize=10,\n            )\n            txt.set_path_effects(\n                [PathEffects.withStroke(linewidth=2, foreground=\"white\")]\n            )\n            ymid = (decrease[i] + (nochange[i] / 2.0)) / total[i] * 100.0\n            txt = ax.text(\n                i + offset,\n                ymid,\n                f\"{(nochange[i] / total[i] * 100.0):.0f}\",\n                ha=\"center\",\n                va=\"center\",\n                fontsize=10,\n            )\n            txt.set_path_effects(\n                [PathEffects.withStroke(linewidth=2, foreground=\"white\")]\n            )\n            txt = ax.text(\n                i + offset,\n                (decrease[i] + nochange[i]) / total[i] * 100.0 + 2,\n                f\"{(increase[i] / total[i] * 100.0):.0f}\",\n                ha=\"center\",\n                fontsize=10,\n            )\n            txt.set_path_effects(\n                [PathEffects.withStroke(linewidth=2, foreground=\"white\")]\n            )\n        offset += 0.4\n\n    ax.set_xticks(np.arange(1, 13))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.legend(ncol=3, fontsize=12, loc=9, framealpha=1)\n    ax.set_xlim(0.5, 12.5)\n    ax.set_ylim(0, 100)\n    ax.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    ax.set_ylabel(\"Percentage of Days [%]\")\n    ax.set_xlabel(\n        f\"Dark Shades are long term averages, lighter are {year} actuals\"\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p16.py",
    "content": "\"\"\"\nThis application generates a wind rose for a given\ncriterion being meet. A wind rose plot is a convenient way of summarizing\nwind speed and direction.\n\n<p>You can select a year range to limit the considered data to, but the station\nmay not have data for the entire range you select.\n\"\"\"\n\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom metpy.units import units\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot.windrose import WindrosePlot, histogram\nfrom pyiem.util import drct2text\n\nfrom iemweb.util import month2months\n\nPDICT = {\n    \"ts\": \"Thunderstorm (TS) Reported\",\n    \"ra\": \"Rain (RA) Reported\",\n    \"sn\": \"Snow (SN) Reported\",\n    \"p01i\": \"Measurable Precipitation Reported\",\n    \"p01i_above\": \"Precipitation Above Threshold (inch)\",\n    \"tmpf_above\": \"Temperature At or Above Threshold (°F)\",\n    \"tmpf_below\": \"Temperature Below Threshold (°F)\",\n    \"dwpf_above\": \"Dew Point At or Above Threshold (°F)\",\n    \"dwpf_below\": \"Dew Point Below Threshold (°F)\",\n    \"relh_above\": \"Relative Humidity At or Above Threshold (%)\",\n    \"relh_below\": \"Relative Humidity Below Threshold (%)\",\n}\n\nMDICT = {\n    \"all\": \"No Month/Time Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\nRAMPS = {\n    \"20\": \"2, 5, 7, 10, 15, 20 MPH\",\n    \"40\": \"2, 5, 10, 20, 30, 40 MPH\",\n    \"60\": \"2, 10, 20, 30, 40, 60 MPH\",\n    \"80\": \"2, 10, 20, 40, 60, 80 MPH\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"defaults\": {\"_r\": \"88\"}}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n        {\n            \"type\": \"year\",\n            \"default\": 1900,\n            \"name\": \"syear\",\n            \"label\": \"Start Year Limit (inclusive):\",\n            \"min\": 1900,\n            \"max\": date.today().year,\n        },\n        {\n            \"type\": \"year\",\n            \"default\": date.today().year,\n            \"name\": \"eyear\",\n            \"label\": \"End Year Limit (inclusive):\",\n            \"min\": 1900,\n            \"max\": date.today().year,\n        },\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"ts\",\n            label=\"Which metric to plot?\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"float\",\n            name=\"threshold\",\n            default=80,\n            label=\"Threshold (when appropriate):\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"r\",\n            label=\"Select wind speed binning interval to use for plot\",\n            default=\"20\",\n            options=RAMPS,\n        ),\n    ]\n    return desc\n\n\ndef get_ramp(ctx):\n    \"\"\"np.array for the ramp.\"\"\"\n    label = RAMPS[ctx[\"r\"]].replace(\" MPH\", \"\")\n    arr = [int(v) for v in label.split(\",\")]\n    arr.insert(0, 0)\n    return np.array(arr)\n\n\ndef get_highcharts(ctx: dict) -> str:\n    \"\"\"Generate the highcharts variant\"\"\"\n    add_ctx(ctx)\n    bins = get_ramp(ctx)\n    _, dir_edges, table = histogram(\n        units(\"mile / hour\") * ctx[\"df\"][\"smph\"].values,\n        units(\"degree\") * ctx[\"df\"][\"drct\"].values,\n        units(\"mile / hour\") * bins[1:],\n        16,\n    )\n    table = table.m\n    dir_edges = dir_edges.m\n    arr = [drct2text(mydir) for mydir in dir_edges]\n    containername = ctx[\"_e\"]\n    return f\"\"\"\n    const arr = {arr};\n    Highcharts.chart(\"{containername}\", {{\n        series: [\n        {{\n            name: '{bins[1]} - {bins[2]}',\n            data: {[float(x) for x in table[:, 0]]},\n            pointInterval: 22.5,\n            _colorIndex: 0\n        }},\n        {{name: '{bins[2]} - {bins[3]}',\n        data: {[float(x) for x in table[:, 1]]},\n            pointInterval: 22.5,\n        _colorIndex: 1}},\n        {{name: '{bins[3]} - {bins[4]}',\n        data: {[float(x) for x in table[:, 2]]},\n            pointInterval: 22.5,\n        _colorIndex: 2}},\n        {{name: '{bins[4]} - {bins[5]}',\n        data: {[float(x) for x in table[:, 3]]},\n            pointInterval: 22.5,\n        _colorIndex: 3}},\n        {{name: '{bins[5]} - {bins[6]}',\n        data: {[float(x) for x in table[:, 4]]},\n            pointInterval: 22.5,\n        _colorIndex: 4}},\n        {{name: '{bins[6]} +',\n        data: {[float(x) for x in table[:, 5]]},\n            pointInterval: 22.5,\n        _colorIndex: 5}}\n        ],\n    chart: {{\n            polar: true,\n            type: 'column'\n    }},\n    title: {{\n            'text': '{ctx[\"title\"]}'\n    }},\n    subtitle: {{\n        'text': '{ctx[\"subtitle\"]}'\n    }},\n    pane: {{\n        startAngle: 0,\n        endAngle: 360,\n        'size': '85%'\n    }},\n    legend: {{\n        title: {{text: 'Wind Speed [MPH]'}},\n            verticalAlign: 'bottom',\n            layout: 'horizontal'\n    }},\n    xAxis: {{\n        tickInterval: 22.5,\n        min: 0,\n        max: 360\n    }},\n    yAxis: {{\n            'min': 0,\n            'endOnTick': false,\n            'showLastLabel': true,\n            'title': {{\n                'text': 'Frequency (%)'\n            }},\n            'reversedStacks': false\n        }},\n    tooltip: {{\n        positioner: function () {{\n                return {{ x: 10, y: 10 }};\n            }},\n            'valueSuffix': '%',\n            shared: true,\n            valueDecimals: 1,\n            formatter: function () {{\n            var s = '<b>' + arr[this.x] +\n                    ' ('+ this.points[0].total.toFixed(1)+'%)</b>';\n\n            $.each(this.points, function () {{\n                s += '<br/>' + this.series.name + ': ' +\n                    this.y.toFixed(1) + '%';\n            }});\n\n            return s;\n        }},\n    }},\n        plotOptions: {{\n            'series': {{\n                'stacking': 'normal',\n                'shadow': false,\n                'groupPadding': 0,\n                'pointPlacement': 'on'\n            }}\n        }}\n    }});\n    \"\"\"\n\n\ndef add_ctx(ctx):\n    \"\"\"Do the agnostic stuff\"\"\"\n    ctx[\"station\"] = ctx[\"zstation\"]\n    months = month2months(ctx[\"month\"])\n\n    limiter = \"array_to_string(wxcodes, '') ~* 'TS'\"\n    title = \"Thunderstorm (TS) contained in METAR\"\n    params = {\n        \"thres\": ctx[\"threshold\"],\n        \"station\": ctx[\"station\"],\n        \"months\": months,\n        \"sdate\": date(ctx[\"syear\"], 1, 1),\n        \"edate\": date(ctx[\"eyear\"] + 1, 1, 1),\n    }\n    if ctx[\"opt\"] == \"tmpf_above\":\n        limiter = \"round(tmpf::numeric,0) >= :thres\"\n        title = f\"Air Temp at or above {ctx['threshold']}°F\"\n    elif ctx[\"opt\"] == \"ra\":\n        limiter = \"array_to_string(wxcodes, '') ~* 'RA'\"\n        title = \"Rain (RA) contained in METAR\"\n    elif ctx[\"opt\"] == \"sn\":\n        limiter = \"array_to_string(wxcodes, '') ~* 'SN'\"\n        title = \"Snow (SN) contained in METAR\"\n    elif ctx[\"opt\"] == \"p01i\":\n        limiter = \"p01i > 0\"\n        title = \"Measurable Precipitation Reported\"\n    elif ctx[\"opt\"] == \"tmpf_below\":\n        limiter = \"round(tmpf::numeric,0) < :thres\"\n        title = f\"Air Temp below {ctx['threshold']}°F\"\n    elif ctx[\"opt\"] == \"dwpf_below\":\n        limiter = \"round(dwpf::numeric,0) < :thres\"\n        title = f\"Dew Point below {ctx['threshold']}°F\"\n    elif ctx[\"opt\"] == \"dwpf_above\":\n        limiter = \"round(dwpf::numeric,0) >= :thres\"\n        title = f\"Dew Point at or above {ctx['threshold']}°F\"\n    elif ctx[\"opt\"] == \"relh_above\":\n        limiter = \"relh >= :thres\"\n        title = f\"Relative Humidity at or above {ctx['threshold']}%\"\n    elif ctx[\"opt\"] == \"relh_below\":\n        limiter = \"relh < :thres\"\n        title = f\"Relative Humidity below {ctx['threshold']}%\"\n    elif ctx[\"opt\"] == \"p01i_above\":\n        limiter = \"p01i > :thres\"\n        title = f\"Precipitation Above {ctx['threshold']} inches\"\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        ctx[\"df\"] = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT valid at time zone 'UTC' as valid,\n            drct, sknt * 1.15 as smph from alldata\n            where station = :station and {limiter} and sknt > 0\n            and drct >= 0 and\n            drct <= 360 and extract(month from valid) = ANY(:months)\n            and valid >= :sdate and valid <= :edate\n            \"\"\",\n                limiter=limiter,\n            ),\n            conn,\n            params=params,\n            index_col=\"valid\",\n        )\n    if ctx[\"df\"].empty:\n        raise NoDataFound(\"No Data Found.\")\n    minvalid = ctx[\"df\"].index.min()\n    maxvalid = ctx[\"df\"].index.max()\n\n    ctx[\"plottitle\"] = (\n        f\"{minvalid.year}-{maxvalid.year} {ctx['station']} Wind Rose, \"\n        f\"month={ctx['month'].upper()}\"\n    )\n    ctx[\"title\"] = (\n        f\"{minvalid.year}-{maxvalid.year} {ctx['station']} Wind Rose, \"\n        f\"month={ctx['month'].upper()}\"\n    )\n    ctx[\"subtitle\"] = f\"{ctx['_sname']}, {title}\"\n    return ctx\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    add_ctx(ctx)\n\n    wr = WindrosePlot(\n        title=ctx[\"plottitle\"],\n        subtitle=ctx[\"subtitle\"],\n        rect=[0.08, 0.15, 0.86, 0.7],\n    )\n    bins = units(\"mile / hour\") * get_ramp(ctx)[1:]\n    wr.barplot(\n        units(\"degree\") * ctx[\"df\"][\"drct\"].values,\n        units(\"mile / hour\") * ctx[\"df\"][\"smph\"].values,\n        normed=True,\n        bins=bins,\n        opening=0.8,\n        edgecolor=\"white\",\n        nsector=16,\n    )\n\n    return wr.fig, ctx[\"df\"]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p17.py",
    "content": "\"\"\"\nDaily plot of observed daily summary variables\nalong with the daily climatology for the nearest (sometimes same) location.\nThe vertical highlighted stripes on the plot are just the weekend dates.\n\"\"\"\n\nimport warnings\nfrom datetime import date, timedelta\n\nimport matplotlib.patheffects as PathEffects\nimport numpy as np\nimport pandas as pd\nimport requests\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import BadWebRequest, NoDataFound\nfrom pyiem.plot import figure_axes\n\nwarnings.simplefilter(\"ignore\", UserWarning)\nPDICT = {\n    \"temps\": \"High/Low Temperature\",\n    \"dwpf\": \"Dew Point Temperature\",\n    \"feel\": \"Feels Like Temperature\",\n    \"precip\": \"Precipitation\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 300}\n    today = date.today()\n    mo = today.month\n    yr = today.year\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"station\",\n            default=\"AMW\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(type=\"month\", name=\"month\", default=mo, label=\"Select Month\"),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=yr,\n            label=\"Select Year\",\n            min=1850,\n            max=today.year,\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"temps\",\n            label=\"Select Plot Type:\",\n            name=\"p\",\n        ),\n    ]\n    return desc\n\n\ndef common(ctx: dict):\n    \"\"\"Do things common to both plots.\"\"\"\n    station = ctx[\"station\"]\n    year = ctx[\"year\"]\n    if not ctx[\"network\"].endswith(\"CLIMATE\") and year < 1900:\n        raise BadWebRequest(\"No data available for year before 1900.\")\n    month = ctx[\"month\"]\n\n    sts = date(year, month, 1)\n    ets = sts + timedelta(days=35)\n    ets = ets.replace(day=1)\n    days = int((ets - sts).days)\n    weekends = []\n    now = sts\n    while now < ets:\n        if now.weekday() in [5, 6]:\n            weekends.append(now.day)\n        now += timedelta(days=1)\n    try:\n        resp = requests.get(\n            \"http://mesonet.agron.iastate.edu/api/1/daily.json\",\n            params={\n                \"station\": station,\n                \"network\": ctx[\"network\"],\n                \"year\": year,\n                \"month\": month,\n            },\n            timeout=15,\n        )\n        resp.raise_for_status()\n    except Exception as exp:\n        raise NoDataFound(\"Unable to fetch data from API service.\") from exp\n    jsn = resp.json()\n    df = pd.DataFrame(jsn[\"data\"])\n    if not df.empty:\n        df[\"day_of_month\"] = pd.to_datetime(df[\"date\"]).dt.day\n        df[\"accum_pday\"] = df[\"precip\"].cumsum()\n        df = df.set_index(\"day_of_month\")\n    # Special case of climate districts and statewide avgs\n    table = \"ncei_climate91\"\n    clcol = \"ncei91\"\n    if ctx[\"network\"].endswith(\"CLIMATE\") and (\n        station.endswith(\"0000\") or station[2] == \"C\"\n    ):\n        table = \"climate\"\n        clcol = \"climate_site\"\n        subtitle = \"Climatology provided by period of record averages\"\n    else:\n        if ctx[\"_nt\"].sts[station][\"ncei91\"] is None:\n            subtitle = \"Daily climatology unavailable for site\"\n        else:\n            subtitle = (\n                \"NCEI 1991-2020 Climate Site: \"\n                f\"{ctx['_nt'].sts[station]['ncei91']}\"\n            )\n    if ctx[\"p\"] in (\"dwpf\", \"feel\"):\n        subtitle = \"Climatology is a simple 7 day smoothed POR average\"\n    # Get the normals\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        cdf = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    SELECT high as climo_high, low as climo_low,\n    extract(day from valid)::int as day_of_month,\n    precip as climo_precip from {table} where station = :station and\n    extract(month from valid) = :month ORDER by valid ASC\"\"\",\n                table=table,\n            ),\n            conn,\n            params={\"station\": ctx[\"_nt\"].sts[station][clcol], \"month\": month},\n            index_col=\"day_of_month\",\n        )\n    df = cdf.join(df, how=\"outer\")\n    df[\"accum_climo_precip\"] = df[\"climo_precip\"].cumsum()\n    if \"accum_pday\" not in df.columns:\n        df[\"accum_pday\"] = 0\n    df[\"depart_precip\"] = df[\"accum_pday\"] - df[\"accum_climo_precip\"]\n    title = f\"{ctx['_sname']} :: {PDICT[ctx['p']]} for {sts:%b %Y}\\n{subtitle}\"\n    (ctx[\"fig\"], ax) = figure_axes(title=title, apctx=ctx)\n    box = ax.get_position()\n    ax.set_position([box.x0, box.y0, box.width, box.height * 0.94])\n\n    for day in weekends:\n        rect = Rectangle(\n            [day - 0.5, -100], 1, 300, facecolor=\"#EEEEEE\", edgecolor=\"None\"\n        )\n        ax.add_patch(rect)\n    ax.set_xlim(0.5, days + 0.5)\n    ax.set_xticks(range(1, days + 1))\n    ax.set_xticklabels(np.arange(1, days + 1))\n    ax.set_xlabel(sts.strftime(\"%B %Y\"), fontsize=\"larger\")\n    ax.yaxis.grid(linestyle=\"-\")\n    ctx[\"df\"] = df\n\n\ndef do_precip_plot(ctx: dict) -> bool:\n    \"\"\"Make the precipitation plot.\"\"\"\n    hasdata = False\n    ax = ctx[\"fig\"].gca()\n    df = ctx[\"df\"]\n    ymax = 1\n    ymin = 0\n    if df[\"accum_climo_precip\"].max() > 0:\n        hasdata = True\n        ax.plot(\n            df.index.values,\n            df[\"accum_climo_precip\"].values,\n            zorder=3,\n            color=\"r\",\n            label=\"Accum Avg\",\n        )\n        ymax = df[\"accum_climo_precip\"].max() + 0.5\n    if df[\"depart_precip\"].notnull().any():\n        hasdata = True\n        ax.bar(\n            df.index.values - 0.2,\n            df[\"depart_precip\"].values,\n            width=0.4,\n            align=\"center\",\n            zorder=3,\n            color=\"r\",\n            label=\"Accum Diff\",\n        )\n        ymin = min([0, df[\"depart_precip\"].min() - 0.5])\n    if \"precip\" in df.columns and df[\"precip\"].notnull().any():\n        hasdata = True\n        ax.bar(\n            df.index.values + 0.2,\n            df[\"precip\"].values,\n            width=0.4,\n            align=\"center\",\n            zorder=3,\n            color=\"b\",\n            label=\"Daily Precip\",\n        )\n        ax.plot(\n            df.index.values,\n            df[\"accum_pday\"].values,\n            zorder=4,\n            color=\"b\",\n            label=\"Accum Obs\",\n        )\n        ymax = max([ymax, df[\"accum_pday\"].max() + 0.5])\n    ax.set_ylabel(\"Precipitation [inch]\", fontsize=\"large\")\n    ax.set_ylim(ymin, ymax)\n    return hasdata\n\n\ndef do_temperature_plot(ctx: dict) -> bool:\n    \"\"\"Make the temperature plot.\"\"\"\n    ax = ctx[\"fig\"].gca()\n    df = ctx[\"df\"]\n    hasdata = False\n    if df[\"climo_high\"].notnull().any():\n        hasdata = True\n        ax.plot(\n            df.index.values,\n            df[\"climo_high\"].values,\n            zorder=3,\n            marker=\"o\",\n            color=\"pink\",\n            label=\"Climate High\",\n        )\n        ax.plot(\n            df.index.values,\n            df[\"climo_low\"].values,\n            zorder=3,\n            marker=\"o\",\n            color=\"skyblue\",\n            label=\"Climate Low\",\n        )\n    if \"max_tmpf\" in df.columns and not all(pd.isnull(df[\"max_tmpf\"])):\n        hasdata = True\n        ax.bar(\n            df.index.values - 0.3,\n            df[\"max_tmpf\"].values,\n            fc=\"r\",\n            ec=\"k\",\n            width=0.3,\n            linewidth=0.6,\n            label=\"Ob High\",\n        )\n        if \"min_tmpf\" in df.columns and not all(pd.isnull(df[\"min_tmpf\"])):\n            ax.bar(\n                df.index.values,\n                df[\"min_tmpf\"].values,\n                fc=\"b\",\n                ec=\"k\",\n                width=0.3,\n                linewidth=0.6,\n                label=\"Ob Low\",\n            )\n    else:\n        ax.text(0.5, 0.5, \"No Data Found\", transform=ax.transAxes, ha=\"center\")\n        ax.set_ylim(0, 1)\n\n    i = 0\n    if \"max_tmpf\" in df.columns and not all(pd.isnull(df[\"max_tmpf\"])):\n        for _, row in df.iterrows():\n            if pd.isna(row[\"max_tmpf\"]) or pd.isna(row[\"min_tmpf\"]):\n                i += 1\n                continue\n            txt = ax.text(\n                i + 1 - 0.15,\n                row[\"max_tmpf\"] + 0.5,\n                f\"{row['max_tmpf']:.0f}\",\n                ha=\"center\",\n                va=\"bottom\",\n                color=\"k\",\n            )\n            txt.set_path_effects(\n                [PathEffects.withStroke(linewidth=2, foreground=\"w\")]\n            )\n            txt = ax.text(\n                i + 1 + 0.15,\n                row[\"min_tmpf\"] + 0.5,\n                f\"{row['min_tmpf']:.0f}\",\n                ha=\"center\",\n                va=\"bottom\",\n                color=\"k\",\n            )\n            txt.set_path_effects(\n                [PathEffects.withStroke(linewidth=2, foreground=\"w\")]\n            )\n            i += 1\n        if df[\"min_tmpf\"].notnull().any():\n            ax.set_ylim(\n                np.nanmin([df[\"climo_low\"].min(), df[\"min_tmpf\"].min()]) - 5,\n                np.nanmax([df[\"climo_high\"].max(), df[\"max_tmpf\"].max()]) + 5,\n            )\n    ax.set_ylabel(\"Temperature °F\")\n    return hasdata\n\n\ndef do_dwpf_plot(ctx: dict) -> bool:\n    \"\"\"Make the dew point temperature plot.\"\"\"\n    ax = ctx[\"fig\"].gca()\n    df = ctx[\"df\"]\n    hasdata = False\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        climodf = pd.read_sql(\n            sql_helper(\n                \"\"\"select extract(day from day) as day_of_month,\n                avg(max_dwpf) as climo_max_dwpf,\n                avg(min_dwpf) as climo_min_dwpf,\n                avg(max_feel) as climo_max_feel,\n                avg(min_feel) as climo_min_feel\n                from summary a JOIN stations t\n                on (a.iemid = t.iemid) where t.network = :network and\n                t.id = :station and extract(month from day) = :month\n                group by day_of_month order by day_of_month\"\"\",\n            ),\n            conn,\n            params={\n                \"network\": ctx[\"network\"],\n                \"station\": ctx[\"station\"],\n                \"month\": ctx[\"month\"],\n            },\n            index_col=\"day_of_month\",\n        )\n        if not climodf.empty:\n            # Smooth the data 7 days\n            climodf[f\"climo_max_{ctx['p']}\"] = (\n                climodf[f\"climo_max_{ctx['p']}\"]\n                .rolling(7, min_periods=1)\n                .mean()\n                .round(1)\n            )\n            climodf[f\"climo_min_{ctx['p']}\"] = (\n                climodf[f\"climo_min_{ctx['p']}\"]\n                .rolling(7, min_periods=1)\n                .mean()\n                .round(1)\n            )\n    if climodf[f\"climo_max_{ctx['p']}\"].notnull().any():\n        hasdata = True\n        ax.plot(\n            climodf.index.values,\n            climodf[f\"climo_max_{ctx['p']}\"].values,\n            zorder=3,\n            marker=\"o\",\n            color=\"pink\",\n            label=\"Climate High\",\n        )\n        ax.plot(\n            climodf.index.values,\n            climodf[f\"climo_min_{ctx['p']}\"].values,\n            zorder=3,\n            marker=\"o\",\n            color=\"skyblue\",\n            label=\"Climate Low\",\n        )\n    if f\"max_{ctx['p']}\" in df.columns and not all(\n        pd.isnull(df[f\"max_{ctx['p']}\"])\n    ):\n        hasdata = True\n        ax.bar(\n            df.index.values - 0.3,\n            df[f\"max_{ctx['p']}\"].values,\n            fc=\"r\",\n            ec=\"k\",\n            width=0.3,\n            linewidth=0.6,\n            label=\"Ob High\",\n        )\n        if f\"min_{ctx['p']}\" in df.columns and not all(\n            pd.isnull(df[f\"min_{ctx['p']}\"])\n        ):\n            ax.bar(\n                df.index.values,\n                df[f\"min_{ctx['p']}\"].values,\n                fc=\"b\",\n                ec=\"k\",\n                width=0.3,\n                linewidth=0.6,\n                label=\"Ob Low\",\n            )\n    else:\n        ax.text(0.5, 0.5, \"No Data Found\", transform=ax.transAxes, ha=\"center\")\n        ax.set_ylim(0, 1)\n\n    i = 0\n    if f\"max_{ctx['p']}\" in df.columns and not all(\n        pd.isnull(df[f\"max_{ctx['p']}\"])\n    ):\n        for _, row in df.iterrows():\n            if pd.isna(row[f\"max_{ctx['p']}\"]) or pd.isna(\n                row[f\"min_{ctx['p']}\"]\n            ):\n                i += 1\n                continue\n            col = row[f\"max_{ctx['p']}\"]\n            txt = ax.text(\n                i + 1 - 0.15,\n                col + 0.5,\n                f\"{col:.0f}\",\n                ha=\"center\",\n                va=\"bottom\",\n                color=\"k\",\n            )\n            txt.set_path_effects(\n                [PathEffects.withStroke(linewidth=2, foreground=\"w\")]\n            )\n            col = row[f\"min_{ctx['p']}\"]\n            txt = ax.text(\n                i + 1 + 0.15,\n                col + 0.5,\n                f\"{col:.0f}\",\n                ha=\"center\",\n                va=\"bottom\",\n                color=\"k\",\n            )\n            txt.set_path_effects(\n                [PathEffects.withStroke(linewidth=2, foreground=\"w\")]\n            )\n            i += 1\n        if df[f\"min_{ctx['p']}\"].notnull().any():\n            ax.set_ylim(\n                np.nanmin(\n                    [\n                        climodf[f\"climo_min_{ctx['p']}\"].min(),\n                        df[f\"min_{ctx['p']}\"].min(),\n                    ]\n                )\n                - 5,\n                np.nanmax(\n                    [\n                        climodf[f\"climo_max_{ctx['p']}\"].max(),\n                        df[f\"max_{ctx['p']}\"].max(),\n                    ]\n                )\n                + 5,\n            )\n    ax.set_ylabel(f\"{PDICT[ctx['p']]} °F\")\n    return hasdata\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    common(ctx)\n    if ctx[\"p\"] == \"precip\":\n        hasdata = do_precip_plot(ctx)\n    elif ctx[\"p\"] in (\"dwpf\", \"feel\"):\n        hasdata = do_dwpf_plot(ctx)\n    else:\n        hasdata = do_temperature_plot(ctx)\n    # Prevent matplotlib warning about no artists\n    if hasdata:\n        ctx[\"fig\"].gca().legend(\n            bbox_to_anchor=(0.0, 1.01, 1.0, 0.102),\n            loc=3,\n            ncol=4,\n            mode=\"expand\",\n            borderaxespad=0.0,\n        )\n    return ctx[\"fig\"], ctx[\"df\"]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p18.py",
    "content": "\"\"\"\nThis chart displays a simple time series of\nan observed variable for a location of your choice.  For sites in the\nUS, the daily high and low temperature climatology is presented as a\nfilled bar for each day plotted when Air Temperature is selected.\n\"\"\"\n\nfrom datetime import date, timedelta, timezone\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nMDICT = {\n    \"tmpf\": \"Air Temperature\",\n    \"dwpf\": \"Dew Point Temperature\",\n    \"feel\": \"Feels Like Temperature\",\n    \"alti\": \"Pressure Altimeter\",\n    \"relh\": \"Relative Humidity\",\n    \"mslp\": \"Sea Level Pressure\",\n}\nUNITS = {\n    \"tmpf\": \"°F\",\n    \"dwpf\": \"°F\",\n    \"alti\": \"inch\",\n    \"mslp\": \"mb\",\n    \"feel\": \"°F\",\n    \"relh\": \"%\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    ts = date.today() - timedelta(days=365)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=ts.strftime(\"%Y/%m/%d\"),\n            label=\"Start Date of Plot:\",\n            min=\"1951/01/01\",\n        ),\n        dict(type=\"int\", name=\"days\", default=\"365\", label=\"Days to Plot\"),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            options=MDICT,\n            default=\"tmpf\",\n            label=\"Variable to Plot\",\n        ),\n    ]\n    return desc\n\n\ndef get_highcharts(ctx: dict) -> dict:\n    \"\"\"Highcharts output\"\"\"\n    add_ctx(ctx)\n    ranges = []\n    now = ctx[\"sdate\"]\n    oneday = timedelta(days=1)\n    while ctx[\"climo\"] and (now - oneday) <= ctx[\"edate\"]:\n        ranges.append(\n            [\n                int(now.strftime(\"%s\")) * 1000.0,\n                ctx[\"climo\"][now.strftime(\"%m%d\")][\"low\"],\n                ctx[\"climo\"][now.strftime(\"%m%d\")][\"high\"],\n            ]\n        )\n        now += oneday\n\n    j = {}\n    j[\"title\"] = dict(text=f\"{ctx['_sname']} Time Series\")\n    j[\"xAxis\"] = dict(type=\"datetime\")\n    j[\"yAxis\"] = dict(\n        title=dict(text=\"%s %s\" % (MDICT[ctx[\"var\"]], UNITS[ctx[\"var\"]]))\n    )\n    j[\"tooltip\"] = {\n        \"crosshairs\": True,\n        \"shared\": True,\n        \"valueSuffix\": f\" {UNITS[ctx['var']]}\",\n    }\n    j[\"legend\"] = {}\n    j[\"time\"] = {\"useUTC\": False}\n    j[\"exporting\"] = {\"enabled\": True}\n    j[\"chart\"] = {\"zoomType\": \"x\"}\n    j[\"plotOptions\"] = {\"line\": {\"turboThreshold\": 0}}\n    j[\"series\"] = [\n        {\n            \"name\": MDICT[ctx[\"var\"]],\n            \"data\": list(\n                zip(\n                    ctx[\"df\"].ticks.values.tolist(),\n                    ctx[\"df\"].datum.values.tolist(),\n                    strict=True,\n                )\n            ),\n            \"zIndex\": 2,\n            \"color\": \"#FF0000\",\n            \"lineWidth\": 2,\n            \"marker\": {\"enabled\": False},\n            \"type\": \"line\",\n        }\n    ]\n    if ranges:\n        j[\"series\"].append(\n            {\n                \"name\": \"Climo Hi/Lo Range\",\n                \"data\": ranges,\n                \"type\": \"arearange\",\n                \"lineWidth\": 0,\n                \"color\": \"#ADD8E6\",\n                \"fillOpacity\": 0.3,\n                \"zIndex\": 0,\n            }\n        )\n    if ctx[\"var\"] in [\"tmpf\", \"dwpf\"]:\n        j[\"yAxis\"][\"plotLines\"] = [\n            {\n                \"value\": 32,\n                \"width\": 2,\n                \"zIndex\": 1,\n                \"color\": \"#000\",\n                \"label\": {\"text\": \"32°F\"},\n            }\n        ]\n\n    return j\n\n\ndef add_ctx(ctx: dict):\n    \"\"\"Get data common to both methods\"\"\"\n    ctx[\"station\"] = ctx[\"zstation\"]\n    sdate = ctx[\"sdate\"]\n    days = ctx[\"days\"]\n    ctx[\"edate\"] = sdate + timedelta(days=days)\n    today = date.today()\n    if ctx[\"edate\"] > today:\n        ctx[\"edate\"] = today\n        ctx[\"days\"] = (ctx[\"edate\"] - sdate).days\n\n    ctx[\"climo\"] = {}\n    if ctx[\"var\"] == \"tmpf\":\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            res = conn.execute(\n                sql_helper(\"\"\"\n    SELECT valid, high, low from ncei_climate91 where station = :station\n                           \"\"\"),\n                {\"station\": ctx[\"_nt\"].sts[ctx[\"station\"]][\"ncei91\"]},\n            )\n            for row in res.mappings():\n                ctx[\"climo\"][row[\"valid\"].strftime(\"%m%d\")] = dict(\n                    high=row[\"high\"], low=row[\"low\"]\n                )\n    col = \"tmpf::int\" if ctx[\"var\"] == \"tmpf\" else ctx[\"var\"]\n    col = \"dwpf::int\" if ctx[\"var\"] == \"dwpf\" else col\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        ctx[\"df\"] = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    SELECT valid at time zone 'UTC' as valid,\n    extract(epoch from valid) * 1000 as ticks, {col} as datum\n    from alldata WHERE station = :station and valid > :sts and valid < :ets\n    and {varname} is not null and report_type != 1\n    ORDER by valid ASC\"\"\",\n                col=col,\n                varname=ctx[\"var\"],\n            ),\n            conn,\n            params={\n                \"station\": ctx[\"station\"],\n                \"sts\": sdate,\n                \"ets\": sdate + timedelta(days=days),\n            },\n            index_col=\"valid\",\n        )\n    if ctx[\"df\"].empty:\n        raise NoDataFound(\"No data found.\")\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    add_ctx(ctx)\n    title = (\n        f\"{ctx['_sname']}\\n\"\n        f\"{MDICT[ctx['var']]} Timeseries {ctx['sdate']:%d %b %Y} - \"\n        f\"{ctx['edate']:%d %b %Y}\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n\n    xticks = []\n    xticklabels = []\n    now = ctx[\"sdate\"]\n    cdates = []\n    chighs = []\n    clows = []\n    oneday = timedelta(days=1)\n    while ctx[\"climo\"] and (now - oneday) <= ctx[\"edate\"]:\n        cdates.append(now)\n        chighs.append(ctx[\"climo\"][now.strftime(\"%m%d\")][\"high\"])\n        clows.append(ctx[\"climo\"][now.strftime(\"%m%d\")][\"low\"])\n        if now.day == 1 or (now.day % 12 == 0 and ctx[\"days\"] < 180):\n            xticks.append(now)\n            fmt = \"%-d\"\n            if now.day == 1:\n                fmt = \"%-d\\n%b\"\n            xticklabels.append(now.strftime(fmt))\n\n        now += oneday\n    while (now - oneday) <= ctx[\"edate\"]:\n        if now.day == 1 or (now.day % 12 == 0 and ctx[\"days\"] < 180):\n            xticks.append(now)\n            fmt = \"%-d\"\n            if now.day == 1:\n                fmt = \"%-d\\n%b\"\n            xticklabels.append(now.strftime(fmt))\n        now += oneday\n\n    if chighs:\n        chighs = np.array(chighs)\n        clows = np.array(clows)\n        ax.bar(\n            cdates,\n            chighs - clows,\n            bottom=clows,\n            width=1,\n            align=\"edge\",\n            fc=\"lightblue\",\n            ec=\"lightblue\",\n            label=\"Daily Climatology\",\n        )\n    # Construct a local timezone x axis\n    x = (\n        ctx[\"df\"]\n        .index.tz_localize(timezone.utc)\n        .tz_convert(ctx[\"_nt\"].sts[ctx[\"station\"]][\"tzname\"])\n        .tz_localize(None)\n    )\n    ax.plot(x.values, ctx[\"df\"][\"datum\"], color=\"r\", label=\"Hourly Obs\")\n    ax.set_ylabel(f\"{MDICT[ctx['var']]} {UNITS[ctx['var']]}\")\n    ax.set_xticks(xticks)\n    ax.set_xticklabels(xticklabels)\n    ax.set_xlim(ctx[\"sdate\"], ctx[\"edate\"] + oneday)\n    ax.set_ylim(top=ctx[\"df\"].datum.max() + 15.0)\n    ax.legend(loc=2, ncol=2)\n    ax.axhline(32, linestyle=\"-.\")\n    ax.grid(True)\n    return fig, ctx[\"df\"]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p19.py",
    "content": "\"\"\"\nThis chart displays a histogram of daily high\nand low temperatures for a station of your choice. If you optionally\nchoose to overlay a given year's data and select winter, the year of\nthe December is used for the plot. For example, the winter of 2017 is\nDec 2017 thru Feb 2018.  The plot details the temperature bin with the\nhighest frequency.\n\"\"\"\n\nfrom datetime import date, datetime\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure, get_cmap\n\nfrom iemweb.autoplot import ARG_STATION, get_monofont\nfrom iemweb.util import month2months\n\nMDICT = {\n    \"all\": \"No Month/Time Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"int\",\n            name=\"binsize\",\n            default=1,\n            label=\"Histogram Bin Size:\",\n        ),\n        {\n            \"type\": \"text\",\n            \"name\": \"x\",\n            \"default\": \"-60 130\",\n            \"label\": \"X-Axis Limits [min max] (optional):\",\n            \"optional\": True,\n        },\n        {\n            \"type\": \"text\",\n            \"name\": \"y\",\n            \"default\": \"-60 130\",\n            \"label\": \"Y-Axis Limits [min max] (optional):\",\n            \"optional\": True,\n        },\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"year\",\n            optional=True,\n            default=date.today().year,\n            label=\"Optional: Overlay Observations for given year\",\n            name=\"year\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"Blues\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    binsize = ctx[\"binsize\"]\n    month = ctx[\"month\"]\n    year = ctx.get(\"year\")\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        ddf = pd.read_sql(\n            sql_helper(\n                \"SELECT high, low, year, month from alldata \"\n                \"WHERE station = :station \"\n                \"and high >= low and month = ANY(:months) \"\n            ),\n            conn,\n            params={\"station\": station, \"months\": month2months(month)},\n            index_col=None,\n        )\n    if ddf.empty:\n        raise NoDataFound(\"No Data Found.\")\n    ddf[\"range\"] = ddf[\"high\"] - ddf[\"low\"]\n    xbins = np.arange(ddf[\"low\"].min() - 3, ddf[\"low\"].max() + 3, binsize)\n    ybins = np.arange(ddf[\"high\"].min() - 3, ddf[\"high\"].max() + 3, binsize)\n\n    hist, xedges, yedges = np.histogram2d(\n        ddf[\"low\"], ddf[\"high\"], [xbins, ybins]\n    )\n    rows = []\n    for i, xedge in enumerate(xedges[:-1]):\n        for j, yedge in enumerate(yedges[:-1]):\n            rows.append(dict(high=yedge, low=xedge, count=hist[i, j]))\n    df = pd.DataFrame(rows)\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    years = float(datetime.now().year - ab.year)\n    hist = np.ma.array(hist / years)\n    hist.mask = np.where(hist < (1.0 / years), True, False)\n    ar = np.argwhere(hist.max() == hist)\n\n    subtitle = (\n        \"Daily High vs Low Temperature Histogram + Range between Low + High \"\n        f\"(month={month.upper()})\"\n    )\n    title = (\n        f\"{ctx['_sname']} ({ddf['year'].min():.0f}-{ddf['year'].max():.0f})\"\n    )\n    fig = figure(title=title, subtitle=subtitle, apctx=ctx)\n    kax = fig.add_axes((0.65, 0.5, 0.3, 0.36))\n    kax.grid(True)\n    kax.text(\n        0.02,\n        1.02,\n        \"Daily Temperature Range Histogram + CDF\",\n        transform=kax.transAxes,\n        bbox=dict(color=\"tan\"),\n        va=\"bottom\",\n    )\n    kax.hist(ddf[\"range\"].values, density=True, color=\"lightgreen\")\n    kax.set_ylabel(\"Density\")\n    kax2 = kax.twinx()\n    kax2.set_ylabel(\"Cumulative Density\")\n    kax2.hist(\n        ddf[\"range\"].values,\n        density=True,\n        cumulative=100,\n        histtype=\"step\",\n        color=\"k\",\n    )\n    kax.set_xlim((kax.get_xlim()[0], ddf[\"range\"].max()))\n\n    # Table of Percentiles\n    ranks = ddf[\"range\"].quantile(np.arange(0, 1.0001, 0.0025))\n    xpos = 0.62\n    ypos = 0.37\n    fig.text(\n        0.65,\n        ypos + 0.03,\n        \"Daily Temperature Range Percentiles\",\n        bbox=dict(color=\"tan\"),\n    )\n    fig.text(xpos - 0.01, ypos - 0.01, \"Percentile   Value\")\n    ypos -= 0.01\n    monofont = get_monofont()\n    for q, val in ranks.items():\n        if 0.02 < q < 0.98 and (q * 100.0 % 10) != 0:\n            continue\n        if q > 0.1 and int(q * 100) in [20, 90]:\n            xpos += 0.13\n            ypos = 0.37\n            fig.text(xpos - 0.01, ypos - 0.01, \"Percentile   Value\")\n            ypos -= 0.01\n        ypos -= 0.025\n        label = f\"{q * 100:-6g} {val:-6.0f}\"\n        fig.text(xpos, ypos, label, fontproperties=monofont)\n\n    ax = fig.add_axes((0.07, 0.17, 0.5, 0.73))\n    res = ax.pcolormesh(xedges, yedges, hist.T, cmap=get_cmap(ctx[\"cmap\"]))\n    cax = fig.add_axes((0.07, 0.08, 0.5, 0.01))\n    fig.colorbar(res, label=\"Days per Year\", orientation=\"horizontal\", cax=cax)\n    ax.grid(True)\n    ax.set_ylabel(\"High Temperature °F\")\n    ax.set_xlabel(\"Low Temperature °F\")\n\n    xmax = ar[0][0]\n    ymax = ar[0][1]\n    if binsize == 1:\n        ax.text(\n            0.65,\n            0.15,\n            (\n                f\"Largest Frequency: {hist[xmax, ymax]:.1f} days\\n\"\n                f\"High: {yedges[ymax]:.0f} \"\n                f\"Low: {xedges[xmax]:.0f}\"\n            ),\n            ha=\"center\",\n            va=\"center\",\n            transform=ax.transAxes,\n            bbox=dict(color=\"white\"),\n        )\n    else:\n        ax.text(\n            0.65,\n            0.15,\n            (\n                f\"Largest Frequency: {hist[xmax, ymax]:.1f} days\\n\"\n                f\"High: {yedges[ymax]:.0f}-{yedges[ymax + 1]:.0f} \"\n                f\"Low: {xedges[xmax]:.0f}-{xedges[xmax + 1]:.0f}\"\n            ),\n            ha=\"center\",\n            va=\"center\",\n            transform=ax.transAxes,\n            bbox=dict(color=\"white\"),\n        )\n    if ddf[\"high\"].min() < 32:\n        ax.axhline(32, linestyle=\"-\", lw=1, color=\"k\")\n    ax.text(\n        ax.get_xlim()[1],\n        32,\n        \"32°F\",\n        va=\"center\",\n        ha=\"right\",\n        color=\"white\",\n        bbox=dict(color=\"k\"),\n        fontsize=8,\n    )\n    if ddf[\"low\"].min() < 32:\n        ax.axvline(32, linestyle=\"-\", lw=1, color=\"k\")\n    ax.text(\n        32,\n        ax.get_ylim()[1],\n        \"32°F\",\n        va=\"top\",\n        ha=\"center\",\n        color=\"white\",\n        bbox=dict(facecolor=\"k\", edgecolor=\"none\"),\n        fontsize=8,\n    )\n    if year:\n        label = str(year)\n        if month == \"winter\":\n            ddf[\"year\"] = (\n                ddf[((ddf[\"month\"] == 1) | (ddf[\"month\"] == 2))][\"year\"] - 1\n            )\n            label = f\"Dec {year} - Feb {year + 1}\"\n        ddf2 = ddf[ddf[\"year\"] == year]\n        ax.scatter(\n            ddf2[\"low\"],\n            ddf2[\"high\"],\n            marker=\"o\",\n            s=30,\n            label=label,\n            edgecolor=\"yellow\",\n            facecolor=\"red\",\n        )\n        ax.legend(loc=2)\n\n    if ctx.get(\"x\"):\n        ax.set_xlim(*[float(x) for x in ctx[\"x\"].split()])\n    if ctx.get(\"y\"):\n        ax.set_ylim(*[float(y) for y in ctx[\"y\"].split()])\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p2.py",
    "content": "\"\"\"\nThis plot compares the growing degree day vs\nprecipitation\ndeparture for a given month and station.  The departure is expressed in\nunits of standard deviation.  So a value of one would represent an one\nstandard deviation departure from long term mean.  The mean and standard\ndeviation is computed against the current / period of record climatology.\nThe circle represents a line of equal extremity as compared with the year\nof your choosing.  The dots greater than 2.5 sigma from center are\nlabelled with the year they represent.\n\"\"\"\n\nimport calendar\nfrom datetime import datetime\n\nimport pandas as pd\nfrom matplotlib.patches import Circle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom scipy import stats\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = datetime.now()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"station\",\n            name=\"station\",\n            default=\"IA0000\",\n            label=\"Select Station\",\n            network=\"IACLIMATE\",\n        ),\n        dict(type=\"month\", name=\"month\", default=today.month, label=\"Month\"),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=today.year,\n            label=\"Year to Highlight\",\n        ),\n        dict(\n            type=\"int\",\n            default=50,\n            name=\"gddbase\",\n            label=\"Growing Degree Day base (°F)\",\n        ),\n        dict(\n            type=\"int\",\n            default=86,\n            name=\"gddceil\",\n            label=\"Growing Degree Day ceiling (°F)\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    month = ctx[\"month\"]\n    year = ctx[\"year\"]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n    SELECT year, sum(precip) as total_precip,\n    sum(gddxx(:gddbase, :gddceil, high::numeric,low::numeric)) as gdd\n    from alldata WHERE station = :station and month = :month GROUP by year\n            \"\"\"),\n            conn,\n            params={\n                \"gddbase\": ctx[\"gddbase\"],\n                \"gddceil\": ctx[\"gddceil\"],\n                \"station\": station,\n                \"month\": month,\n            },\n            index_col=\"year\",\n        )\n    if len(df.index) < 3:\n        raise NoDataFound(\"ERROR: No Data Found\")\n\n    gstats = df[\"gdd\"].describe()\n    pstats = df[\"total_precip\"].describe()\n\n    df[\"precip_sigma\"] = (df[\"total_precip\"] - pstats[\"mean\"]) / pstats[\"std\"]\n    df[\"gdd_sigma\"] = (df[\"gdd\"] - gstats[\"mean\"]) / gstats[\"std\"]\n    df[\"distance\"] = (df[\"precip_sigma\"] ** 2 + df[\"gdd_sigma\"] ** 2) ** 0.5\n\n    h_slope, intercept, r_value, _, _ = stats.linregress(\n        df[\"gdd_sigma\"].to_numpy(), df[\"precip_sigma\"].to_numpy()\n    )\n\n    y1 = -4.0 * h_slope + intercept\n    y2 = 4.0 * h_slope + intercept\n    title = (\n        f\"{ctx['_sname']} :: For Month of \"\n        f\"{calendar.month_name[month]}\\n\"\n        f\"Growing Degree Day (base={ctx['gddbase']}, ceil={ctx['gddceil']}) \"\n        \"+ Precipitation Departure\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    ax.set_position([0.1, 0.12, 0.8, 0.78])\n\n    ax.scatter(df[\"gdd_sigma\"], df[\"precip_sigma\"], label=None)\n    ax.plot(\n        [-4, 4],\n        [y1, y2],\n        label=f\"Slope={h_slope:.2f} R$^2$={(r_value**2):.2f}\",\n    )\n    xmax = df[\"gdd_sigma\"].abs().max() + 0.25\n    ymax = df[\"precip_sigma\"].abs().max() + 0.25\n    ax.set_xlim(0 - xmax, xmax)\n    ax.set_ylim(0 - ymax, ymax)\n    events = df.query(f\"distance > 2.5 or year == {year:.0f}\")\n    for _year, row in events.iterrows():\n        ax.text(\n            row[\"gdd_sigma\"],\n            row[\"precip_sigma\"],\n            f\" {_year:.0f}\",\n            va=\"center\",\n            color=\"red\" if _year == year else \"b\",\n        )\n        if _year == year:\n            ax.scatter(\n                row[\"gdd_sigma\"],\n                row[\"precip_sigma\"],\n                color=\"red\",\n                zorder=3,\n            )\n\n    if year in df.index:\n        c = Circle((0, 0), radius=df.loc[year].distance, facecolor=\"none\")\n        ax.add_patch(c)\n    ax.set_xlabel(\n        f\"Growing Degree Day (base={ctx['gddbase']}, ceil={ctx['gddceil']}) \"\n        r\"Departure ($\\sigma$)\"\n    )\n    ax.set_ylabel(r\"Precipitation Departure ($\\sigma$)\")\n    ax.grid(True)\n    ax.legend(\n        loc=\"lower right\", bbox_to_anchor=(1.05, 0.01), ncol=2, fontsize=10\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p20.py",
    "content": "\"\"\"\nThis chart displays the number of hourly\nobservations each month that reported measurable precipitation.  Sites\nare able to report trace amounts, but those reports are not considered\nin hopes of making the long term climatology comparable.\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    ts = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(type=\"year\", name=\"year\", default=ts.year, label=\"Select Year:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    year = ctx[\"year\"]\n\n    # Oh, the pain of floating point comparison here.\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH obs as (\n            SELECT distinct date_trunc('hour', valid) as t from alldata\n            WHERE station = :station and p01i > 0.009\n        ), agg1 as (\n            SELECT extract(year from t) as year, extract(month from t)\n            as month, count(*) from obs GROUP by year, month\n        ), averages as (\n            SELECT month, avg(count), max(count) from agg1 GROUP by month\n        ), myyear as (\n            SELECT month, count from agg1 where year = :year\n        ), ranks as (\n            SELECT month, year,\n            rank() OVER (PARTITION by month ORDER by count DESC)\n            from agg1\n        ), top as (\n            SELECT month, max(year) as max_year from ranks\n            WHERE rank = 1 GROUP by month\n        ), agg2 as (\n            SELECT t.month, t.max_year, a.avg, a.max from top t JOIN averages a\n            on (t.month = a.month)\n        )\n        SELECT a.month, m.count as count, a.avg, a.max, a.max_year from\n        agg2 a LEFT JOIN myyear m\n        on (m.month = a.month) ORDER by a.month ASC\n        \"\"\"),\n            conn,\n            params={\"station\": station, \"year\": year},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Precipitation Data Found for Site\")\n    title = (\n        f\"{ctx['_sname']} :: Number of Hours with \"\n        \"*Measurable* Precipitation Reported\"\n    )\n    subtitle = (\n        \"Period of Record: \"\n        f\"{ctx['_nt'].sts[station]['archive_begin']:%-d %B %Y} -\"\n    )\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    monthly = df[\"avg\"].values.tolist()\n    bars = ax.bar(\n        df[\"month\"] - 0.2,\n        monthly,\n        fc=\"red\",\n        ec=\"red\",\n        width=0.4,\n        label=\"Climatology\",\n        align=\"center\",\n    )\n    for i, _ in enumerate(bars):\n        ax.text(i + 1 - 0.25, monthly[i] + 1, f\"{monthly[i]:.0f}\", ha=\"center\")\n    thisyear = df[\"count\"].to_numpy()\n    if not all(a is None for a in thisyear):\n        bars = ax.bar(\n            np.arange(1, 13) + 0.2,\n            thisyear,\n            fc=\"blue\",\n            ec=\"blue\",\n            width=0.4,\n            label=str(year),\n            align=\"center\",\n        )\n        for i, _ in enumerate(bars):\n            if not np.isnan(thisyear[i]):\n                ax.text(\n                    i + 1 + 0.25,\n                    thisyear[i] + 1,\n                    f\"{thisyear[i]:.0f}\",\n                    ha=\"center\",\n                )\n\n    ax.scatter(\n        df[\"month\"],\n        df[\"max\"],\n        marker=\"s\",\n        s=45,\n        label=\"Max\",\n        zorder=2,\n        color=\"g\",\n    )\n    for _, row in df.iterrows():\n        ax.text(\n            row[\"month\"],\n            row[\"max\"],\n            f\"{row['max_year']:.0f}\\n{row['max']:.0f} \",\n            ha=\"right\",\n        )\n    ax.set_xticks(range(13))\n    ax.set_xticklabels(calendar.month_abbr)\n    ax.set_xlim(0, 13)\n    maxval = df[\"count\"].max()\n    if not np.isnan(maxval):\n        ax.set_ylim(0, max([maxval, df[\"max\"].max()]) * 1.2)\n    maxval = df[\"max\"].max()\n    if not np.isnan(maxval):\n        ax.set_yticks(np.arange(0, maxval + 20, 12))\n    ax.set_ylabel(\"Hours with 0.01+ inch precip\")\n    today = date.today()\n    if today.year == year:\n        ax.set_xlabel(f\"For {year}, valid till {today:%-d %B}.\")\n    ax.grid(True)\n    ax.legend(ncol=3)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p21.py",
    "content": "\"\"\"\nThis autoplot intends to show the spatial distribution of the change in\ntemperature or precipitation climatology over a given period of days. The\nclimatology is based on the 1991-2020 period from NCEI.\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.plot import centered_bins, get_cmap\nfrom pyiem.plot.geoplot import MapPlot\n\nPDICT = {\n    \"high\": \"High temperature\",\n    \"low\": \"Low Temperature\",\n    \"precip\": \"Precipitation\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    threeweeks = today - timedelta(days=21)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"csector\",\n            default=\"conus\",\n            name=\"csector\",\n            label=\"Geographical extent to plot:\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"date1\",\n            default=threeweeks.strftime(\"%Y/%m/%d\"),\n            label=\"From Date (ignore year):\",\n            min=\"2014/01/01\",\n            max=f\"{today.year + 1}/12/31\",\n        ),  # Comes back to python as yyyy-mm-dd\n        dict(\n            type=\"date\",\n            name=\"date2\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"To Date (ignore year):\",\n            min=\"2014/01/01\",\n            max=f\"{today.year + 1}/12/31\",\n        ),  # Comes back to python as yyyy-mm-dd\n        dict(\n            type=\"select\",\n            name=\"varname\",\n            default=\"high\",\n            label=\"Which metric to plot?\",\n            options=PDICT,\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"RdBu_r\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    date1 = ctx[\"date1\"]\n    date2 = ctx[\"date2\"]\n    if date2 < date1:\n        days = int((date1 - date2).days)\n    else:\n        days = int((date2 - date1).days)\n    date1 = date1.replace(year=2000)\n    date2 = date2.replace(year=2000)\n\n    varname = ctx[\"varname\"]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH t2 as (\n            SELECT station, high, low, precip from ncei_climate91 WHERE\n            valid = :date2\n        ), t1 as (\n            SELECT station, high, low, precip from ncei_climate91 where\n            valid = :date1\n        ), data as (\n            SELECT t2.station, t1.high as t1_high, t2.high as t2_high,\n            t1.low as t1_low, t2.low as t2_low,\n            t1.precip as t1_precip, t2.precip as t2_precip\n            from t1 JOIN t2 on\n            (t1.station = t2.station)\n        )\n        SELECT d.station, ST_x(geom) as lon, ST_y(geom) as lat,\n        t2_high -  t1_high as high, t2_low - t1_low as low,\n        t2_precip - t1_precip as precip from data d JOIN\n        stations s on (s.id = d.station) where s.network = 'NCEI91'\n        \"\"\"),\n            conn,\n            params={\"date2\": date2, \"date1\": date1},\n            index_col=\"station\",\n        )\n    mp = MapPlot(\n        apctx=ctx,\n        title=(\n            f\"{days} Day Change in {PDICT[varname]} NCEI 1991-2020 Climatology\"\n        ),\n        subtitle=f\"from {date1:%-d %B} to {date2:%-d %B}\",\n        nocaption=True,\n    )\n    # Encapsulate most of the data\n    if not df.empty:\n        rng = df[varname].abs().describe(percentiles=[0.95])[\"95%\"]\n        if rng != 0:\n            mp.contourf(\n                df[\"lon\"].values,\n                df[\"lat\"].values,\n                df[varname].values,\n                centered_bins(rng, bins=10),\n                cmap=get_cmap(ctx[\"cmap\"]),\n                units=\"inch\" if varname == \"precip\" else \"°F\",\n            )\n\n    return mp.fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p22.py",
    "content": "\"\"\"\nThis plot displays the frequency of a daily high\nor low temperature being within a certain bounds of the long term NCEI\nclimatology for the location.\n\"\"\"\n\nimport calendar\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\"high\": \"High temperature\", \"low\": \"Low Temperature\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"int\",\n            name=\"min\",\n            default=\"-5\",\n            label=\"Lower Bound (F) of Temperature Range\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"max\",\n            default=\"5\",\n            label=\"Upper Bound (F) of Temperature Range\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    minv = ctx[\"min\"]\n    maxv = ctx[\"max\"]\n    if minv > maxv:\n        minv, maxv = maxv, minv\n    station = ctx[\"station\"]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH climate as (\n            SELECT to_char(valid, 'mmdd') as sday, high, low from\n            ncei_climate91 where station = :ncei\n        )\n        SELECT extract(doy from day) as doy, count(*),\n        SUM(case when a.high >= (c.high + :minv) and a.high < (c.high + :maxv)\n                then 1 else 0 end) as high_count,\n        SUM(case when a.low >= (c.low + :minv) and a.low < (c.low + :maxv)\n                then 1 else 0 end) as low_count\n        FROM alldata a JOIN climate c on (a.sday = c.sday)\n        WHERE a.sday != '0229' and station = :station\n        GROUP by doy ORDER by doy ASC\n        \"\"\"),\n            conn,\n            params={\n                \"ncei\": ctx[\"_nt\"].sts[station][\"ncei91\"],\n                \"minv\": minv,\n                \"maxv\": maxv,\n                \"station\": station,\n            },\n            index_col=\"doy\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    df[\"high_freq\"] = df[\"high_count\"] / df[\"count\"] * 100.0\n    df[\"low_freq\"] = df[\"low_count\"] / df[\"count\"] * 100.0\n    hvals = df[\"high_freq\"].rolling(7, min_periods=1).mean().values\n    lvals = df[\"low_freq\"].rolling(7, min_periods=1).mean().values\n    title = (\n        f\"{ctx['_sname']}\\nFreq of Temp between {minv}°F and {maxv}°F \"\n        \"of NCEI-81 Average\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n\n    ax.plot(df.index.values, hvals, color=\"r\", label=\"High\", zorder=1)\n    ax.plot(df.index.values, lvals, color=\"b\", label=\"Low\", zorder=1)\n    ax.axhline(50, lw=2, color=\"green\", zorder=2)\n    ax.set_ylabel(\"Percentage of Years [%]\")\n    ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.legend(loc=\"best\")\n    ax.set_xlabel(\"* seven day smoother applied\")\n    ax.set_xlim(1, 367)\n    ax.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    ax.set_ylim(0, 100)\n    ax.grid(True)\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p23.py",
    "content": "\"\"\"\nThis plot presents the combination of monthly\ntemperature or precipitation departures and El Nino index values.\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.lines import Line2D\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"avg_high\": \"Average High Temperature [°F]\",\n    \"avg_temp\": \"Average Temperature [°F]\",\n    \"avg_low\": \"Average Low Temperature [°F]\",\n    \"precip\": \"Total Precipitation [inch]\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    year = date.today().year - 7\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"year\",\n            name=\"syear\",\n            default=year,\n            label=\"Start Year of Plot\",\n            min=1950,\n        ),\n        dict(\n            type=\"int\",\n            name=\"years\",\n            default=\"8\",\n            label=\"Number of Years to Plot\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"avg_temp\",\n            label=\"Which Monthly Variable to plot?\",\n            options=PDICT,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    syear = ctx[\"syear\"]\n    years = ctx[\"years\"]\n    varname = ctx[\"var\"]\n\n    sts = datetime(syear, 1, 1)\n    ets = datetime(syear + years, 1, 1)\n    aend = date.today() + timedelta(days=1)\n    aend = aend.replace(day=1 if aend.day < 20 else aend.day)\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        ndf = pd.read_sql(\n            sql_helper(\"\"\"\n    SELECT anom_34, monthdate from elnino where monthdate >= :sts and\n    monthdate < :ets ORDER by monthdate ASC\"\"\"),\n            conn,\n            params={\"sts\": sts, \"ets\": ets},\n            index_col=\"monthdate\",\n        )\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH climo2 as (\n            SELECT year, month, avg((high+low)/2.), sum(precip),\n            avg(high) as avg_high, avg(low) as avg_low\n            from alldata where station = :station\n            and day < :archiveend GROUP by year, month),\n        climo as (\n            select month, avg(avg) as t, avg(sum) as p,\n            avg(avg_high) as high, avg(avg_low) as low from climo2\n            GROUP by month),\n        obs as (\n            SELECT year, month, avg((high+low)/2.), avg(high) as avg_high,\n            avg(low) as avg_low,\n            sum(precip) from alldata where station = :station\n            and day < :archiveend and year >= :syear and year < :eyear\n            GROUP by year, month)\n\n        SELECT obs.year, obs.month, obs.avg - climo.t as avg_temp,\n        obs.avg_high - climo.high as avg_high,\n        obs.avg_low - climo.low as avg_low,\n        obs.sum - climo.p as precip from\n        obs JOIN climo on (climo.month = obs.month)\n        ORDER by obs.year ASC, obs.month ASC\n        \"\"\"),\n            conn,\n            params={\n                \"station\": station,\n                \"archiveend\": aend,\n                \"syear\": sts.year,\n                \"eyear\": ets.year,\n            },\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df[\"date\"] = pd.to_datetime(\n        {\n            \"year\": df[\"year\"].to_numpy(),\n            \"month\": df[\"month\"].to_numpy(),\n            \"day\": np.ones(len(df.index)),\n        }\n    )\n    df = df.set_index(\"date\")\n    df[\"nino34\"] = ndf[\"anom_34\"]\n\n    title = (\n        f\"{ctx['_sname']}:: Monthly Departure of {PDICT.get(varname)} \"\n        \"+ Niño 3.4 Index\\n\"\n        \"Climatology computed from present day period of record\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n\n    xticks = []\n    xticklabels = []\n    for v in df.index:\n        if v.month not in [1, 7]:\n            continue\n        if years > 8 and v.month == 7:\n            continue\n        if v.month == 1:\n            fmt = \"%b\\n%Y\"\n        else:\n            fmt = \"%b\"\n        xticklabels.append(v.strftime(fmt))\n        xticks.append(v)\n    while len(xticks) > 9:\n        xticks = xticks[::2]\n        xticklabels = xticklabels[::2]\n\n    _a = \"pink\"\n    _b = \"skyblue\"\n    if varname == \"precip\":\n        _a, _b = _b, _a\n    bars = ax.bar(\n        df.index.date,\n        df[varname].values,\n        fc=_a,\n        ec=_a,\n        width=30,\n        align=\"center\",\n    )\n    for mybar in bars:\n        if mybar.get_height() < 0:\n            mybar.set_facecolor(_b)\n            mybar.set_edgecolor(_b)\n\n    ax2 = ax.twinx()\n\n    ax2.plot(\n        ndf.index.values, ndf[\"anom_34\"].values, zorder=2, color=\"k\", lw=2.0\n    )\n    ax2.set_ylabel(\"<-- La Niña :: Niño 3.4 Index (line) :: El Niño -->\")\n    ax2.set_ylim(-3, 3)\n\n    ax.set_ylabel(f\"{PDICT.get(varname)} Departure (bars)\")\n    ax.grid(True)\n    ax.set_xticks(xticks)\n    ax.set_xticklabels(xticklabels)\n    ax.set_xlim(sts, ets)\n    maxv = df[varname].abs().max() + 2\n    ax.set_ylim(0 - maxv, maxv)\n\n    ax.legend(\n        [\n            Rectangle((0, 0), 1, 1, fc=_a),\n            Rectangle((0, 0), 1, 1, fc=_b),\n            Line2D((0, 1), (0, 1), color=\"k\", lw=2),\n        ],\n        [f\"Above Normal {varname}\", f\"Below Normal {varname}\", \"Nino 3.5\"],\n        ncol=3,\n        loc=\"best\",\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p24.py",
    "content": "\"\"\"\nThe map presents IEM computed climate district or statewide\nvalues for a metric of your choice.  This map can be generated for a given\nmonth and year or period of dates.  If the period of days includes leap\nday, this day is included and unweighted against years without it.  If the\nperiod spans two years, the presented year on the map represents the\nsecond year in the selection.  For plotting period Option 2, the time\nperiod is limited to 1 year or less.\n\n<p>The data uses the current NWS COOP nomenclature of\nreporting each day at approximately 7 AM.  So for example, a plot of June\nprecipitation would stricly include the period of 7 AM 31 May\nto 7 AM 30 June. Data for the current date is available at approximately\nnoon central time each day.</p>\n\n<p><strong>Aridity Note</strong>: Presently, this autoplot can only plot the\nvalue and not departures nor ranks.  Hopefully, this can be implemented in\nthe near future.</p>\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot, centered_bins, get_cmap, pretty_bins\nfrom pyiem.reference import state_names\n\nPDICT = {\n    \"aridity\": \"Aridity Index\",\n    \"avgt\": \"Average Temperature\",\n    \"high\": \"Average High Temperature\",\n    \"low\": \"Average Low Temperature\",\n    \"sdd86\": \"Stress Degree Days (Base 86)\",\n    \"precip\": \"Total Precipitation\",\n}\n\nPDICT2 = {\n    \"month\": \"Plot by Month(s) [Option 1]\",\n    \"day\": \"Plot by Inclusive Date Period [Option 2]\",\n}\nPDICT3 = {\n    \"cd\": \"Climate District\",\n    \"st\": \"State\",\n}\nPDICT4 = {\n    \"rank\": \"Ranks\",\n    \"val\": \"Values\",\n    \"dep\": \"Departures\",\n}\n\nMDICT = {\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"1\": \"January\",\n    \"2\": \"February\",\n    \"3\": \"March\",\n    \"4\": \"April\",\n    \"5\": \"May\",\n    \"6\": \"June\",\n    \"7\": \"July\",\n    \"8\": \"August\",\n    \"9\": \"September\",\n    \"10\": \"October\",\n    \"11\": \"November\",\n    \"12\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    today = date.today()\n    lmonth = today - timedelta(days=28)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            options=PDICT3,\n            default=\"cd\",\n            name=\"which\",\n            label=\"Plot Climate Districts or States:\",\n        ),\n        dict(\n            type=\"csector\",\n            name=\"csector\",\n            default=\"midwest\",\n            label=\"Area to Plot:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"precip\",\n            label=\"Select Variable\",\n            options=PDICT,\n        ),\n        {\n            \"type\": \"select\",\n            \"options\": PDICT4,\n            \"default\": \"rank\",\n            \"name\": \"w\",\n            \"label\": \"Select aggregate to plot\",\n        },\n        dict(\n            type=\"select\",\n            name=\"p\",\n            default=\"month\",\n            label=\"Plotting Period\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=lmonth.year,\n            label=\"[Option 1] Select Year:\",\n            min=1893,\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=lmonth.month,\n            label=\"[Option 1] Month Limiter\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=lmonth.strftime(\"%Y/%m/%d\"),\n            label=\"[Option 2] Start Date\",\n            min=\"1893/01/01\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"edate\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"[Option 2] End Date (inclusive)\",\n            min=\"1893/01/01\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"BrBG_r\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef get_daily_data(ctx, sdate, edate):\n    \"\"\"Do the data work\"\"\"\n    edate = min([edate, date.today()])\n    if edate <= sdate:\n        raise NoDataFound(\n            f\"start date ({sdate}) after end date ({edate}), please correct\"\n        )\n    if (edate - sdate).days > 366:\n        raise NoDataFound(\n            \"Sorry, too long of period selected. < 1 year please\"\n        )\n    params = {\n        \"year\": edate.year,\n        \"sdate\": sdate.strftime(\"%m%d\"),\n        \"edate\": edate.strftime(\"%m%d\"),\n        \"csector\": ctx[\"csector\"],\n    }\n    yearcond = \"false\"\n    if edate.year != sdate.year:\n        yearcond = \"sday >= :sdate\"\n        sday = \" ( sday >= :sdate or sday <= :edate ) \"\n    else:\n        sday = \" sday >= :sdate and sday <= :edate \"\n\n    table = \"alldata\"\n    if len(ctx[\"csector\"]) == 2 and ctx[\"which\"] != \"st\":\n        table = f\"alldata_{ctx['csector'].lower()}\"\n    if ctx[\"which\"] == \"st\":\n        params[\"stations\"] = [f\"{st}0000\" for st in state_names]\n    else:\n        params[\"stations\"] = [\n            f\"{st}C{x:03.0f}\" for st in state_names for x in range(1, 11)\n        ]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        ctx[\"df\"] = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        with monthly as (\n            SELECT\n            case when {yearcond} then year + 1 else year end as myyear,\n            station,\n            sum(sdd86(high, low)) as sdd86,\n            sum(precip) as p,\n            avg((high+low)/2.) as avgt,\n            avg(low) as avglo,\n            avg(high) as avghi,\n            max(day) as max_date\n            from {table}\n            WHERE station = ANY(:stations) and {sday}\n            GROUP by myyear, station),\n        ranks as (\n            SELECT station, myyear as year,\n            max(max_date) OVER (PARTITION by station, myyear) as max_date,\n            avg(sdd86) OVER (PARTITION by station) as avg_sdd86,\n            sdd86 as sdd86,\n            avg(p) OVER (PARTITION by station) as avg_precip,\n            stddev(p) OVER (PARTITION by station) as std_precip,\n            p as precip,\n            avg(avghi) OVER (PARTITION by station) as avg_high,\n            stddev(avghi) OVER (PARTITION by station) as std_high,\n            avghi as high,\n            avg(avgt) OVER (PARTITION by station) as avg_avgt,\n            avgt,\n            avg(avglo) OVER (PARTITION by station) as avg_low,\n            avglo as low,\n            rank() OVER (PARTITION by station ORDER by p DESC) as precip_rank,\n            rank() OVER (PARTITION by station ORDER by avghi DESC)\n                as high_rank,\n            rank() OVER (PARTITION by station ORDER by avglo DESC) as low_rank,\n            rank() OVER (PARTITION by station ORDER by avgt DESC) as avgt_rank,\n            rank() OVER (PARTITION by station ORDER by sdd86 DESC)\n                as sdd86_rank\n            from monthly)\n\n        SELECT station,\n        high as high_val, low as low_val, precip as precip_val,\n        avgt as avgt_val, sdd86 as sdd86_val,\n        high - avg_high as high_dep, low - avg_low as low_dep,\n        precip - avg_precip as precip_dep, avgt - avg_avgt as avgt_dep,\n        sdd86 - avg_sdd86 as sdd86_dep,\n        precip_rank, avgt_rank, high_rank, low_rank, sdd86_rank,\n        ((high - avg_high) / std_high) - ((precip - avg_precip) / std_precip)\n        as aridity, max_date from ranks where year = :year\n        \"\"\",\n                table=table,\n                yearcond=yearcond,\n                sday=sday,\n            ),\n            conn,\n            params=params,\n            index_col=\"station\",\n        )\n    if ctx[\"df\"].empty:\n        raise NoDataFound(\"No data found\")\n    edate = ctx[\"df\"][\"max_date\"].max()\n    dl = (sdate - timedelta(days=1)).strftime(\"%-d %b %Y\")\n    ctx[\"label\"] = f\"{dl} ~7 AM till {edate:%-d %b %Y} ~7 AM\"\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    if ctx[\"p\"] == \"day\":\n        get_daily_data(ctx, ctx[\"sdate\"], ctx[\"edate\"])\n    else:\n        oneday = timedelta(days=1)\n        year = ctx[\"year\"]\n        month = ctx[\"month\"]\n        if month == \"fall\":\n            sts = date(year, 9, 1)\n            ets = date(year, 11, 30)\n        elif month == \"winter\":\n            sts = date(year, 12, 1)\n            ets = date(year + 1, 3, 1) - oneday\n        elif month == \"spring\":\n            sts = date(year, 3, 1)\n            ets = date(year, 5, 31)\n        elif month == \"summer\":\n            sts = date(year, 6, 1)\n            ets = date(year, 8, 31)\n        else:\n            sts = date(year, int(month), 1)\n            ets = (sts + timedelta(days=34)).replace(day=1) - oneday\n        if sts > date.today():\n            raise NoDataFound(\n                f\"start date ({sts}) in future, please decrement year.\"\n            )\n\n        get_daily_data(ctx, sts, ets)\n    ctx[\"lastyear\"] = date.today().year\n    ctx[\"years\"] = ctx[\"lastyear\"] - 1893 + 1\n\n    subtitle = \"Based on IEM Estimates\"\n    title = \"Ranks \"\n    units = \"\"\n    if ctx[\"var\"] == \"aridity\":\n        subtitle = \"Std Average High Temp Departure minus Std Precip Departure\"\n        title = \"\"\n        if ctx[\"w\"] == \"dep\":\n            raise NoDataFound(\"Aridity does not have departures\")\n    elif ctx[\"w\"] == \"dep\":\n        title = \"Departure \"\n        if ctx[\"var\"] in [\"high\", \"low\", \"avgt\", \"sdd86\"]:\n            units = \"degrees F\"\n        elif ctx[\"var\"] == \"precip\":\n            units = \"inch\"\n    elif ctx[\"w\"] == \"val\":\n        title = \"\"\n        if ctx[\"var\"] in [\"high\", \"low\", \"avgt\", \"sdd86\"]:\n            units = \"degrees F\"\n        elif ctx[\"var\"] == \"precip\":\n            units = \"inch\"\n    elif ctx[\"w\"] == \"rank\":\n        subtitle += (\n            \", 1 is \"\n            f\"{'wettest' if ctx['var'] == 'precip' else 'hottest'} out of \"\n            f\"{ctx['years']} total years (1893-{ctx['lastyear']})\"\n        )\n    if ctx[\"w\"] == \"rank\":\n        units = \"\"\n    mp = MapPlot(\n        apctx=ctx,\n        continentalcolor=\"white\",\n        title=(\n            f\"{ctx['label']} {PDICT[ctx['var']]} {title}\"\n            f\"by {PDICT3[ctx['which']]}\"\n        ),\n        subtitle=subtitle,\n        titlefontsize=14,\n        nocaption=True,\n    )\n    cmap = get_cmap(ctx[\"cmap\"])\n    pvar = f\"{ctx['var']}_{ctx['w']}\"\n    fmt = \"%.2f\"\n    if ctx[\"var\"] in [\"high\", \"low\", \"avgt\", \"sdd86\"]:\n        fmt = \"%.1f\"\n    if ctx[\"var\"] == \"aridity\":\n        bins = np.arange(-4, 4.1, 1)\n        pvar = ctx[\"var\"]\n        fmt = \"%.1f\"\n    elif ctx[\"w\"] == \"rank\":\n        bins = [\n            1,\n            5,\n            10,\n            25,\n            50,\n            75,\n            100,\n            ctx[\"years\"] - 10,\n            ctx[\"years\"] - 5,\n            ctx[\"years\"],\n        ]\n        fmt = \"%.0f\"\n    elif ctx[\"w\"] == \"val\":\n        bins = pretty_bins(ctx[\"df\"][pvar].min(), ctx[\"df\"][pvar].max())\n    else:  # dep\n        bins = centered_bins(ctx[\"df\"][pvar].abs().max())\n    pltargs = {\n        \"ilabel\": True,\n        \"plotmissing\": False,\n        \"lblformat\": fmt,\n        \"bins\": bins,\n        \"cmap\": cmap,\n        \"units\": units,\n        \"extend\": \"both\" if ctx[\"w\"] != \"rank\" else \"max\",\n    }\n    if ctx[\"which\"] == \"st\":\n        ctx[\"df\"].index = ctx[\"df\"].index.str.slice(0, 2)\n        mp.fill_states(\n            ctx[\"df\"][pvar],\n            **pltargs,\n        )\n    else:\n        mp.fill_climdiv(\n            ctx[\"df\"][pvar],\n            **pltargs,\n        )\n\n    return mp.fig, ctx[\"df\"]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p25.py",
    "content": "\"\"\"\nThis plot displays the distribution of observed\ndaily high and low temperatures for a given day and given state or station.\nThe\ndataset is fit with a simple normal distribution based on the simple\npopulation statistics.\n\"\"\"\n\nfrom datetime import datetime\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem import reference\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom scipy.stats import norm\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"state\": \"Plot for a Specific State\",\n    \"station\": \"Plot for a Specific Station\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"select\",\n            \"name\": \"opt\",\n            \"default\": \"state\",\n            \"label\": \"Plot all stations in state or single station:\",\n            \"options\": PDICT,\n        },\n        dict(type=\"state\", name=\"state\", default=\"IA\", label=\"Which state?\"),\n        ARG_STATION,\n        dict(type=\"month\", name=\"month\", default=\"10\", label=\"Select Month:\"),\n        dict(type=\"day\", name=\"day\", default=\"7\", label=\"Select Day:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    month = ctx[\"month\"]\n    day = ctx[\"day\"]\n    ts = datetime(2000, month, day)\n    if ctx[\"opt\"] == \"station\":\n        title = f\"{ctx['_sname']} {ts:%d %B} Temperature Distribution\"\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            df = pd.read_sql(\n                sql_helper(\"\"\"SELECT high, low from alldata\n                where station = :station and sday = :sday and high is not null\n                and low is not null\n                \"\"\"),\n                conn,\n                params={\n                    \"station\": ctx[\"station\"],\n                    \"sday\": f\"{month:02.0f}{day:02.0f}\",\n                },\n            )\n    else:\n        state = ctx[\"state\"][:2]\n        title = (\n            f\"{reference.state_names[state]} {ts:%d %B} \"\n            \"Temperature Distribution\"\n        )\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            df = pd.read_sql(\n                sql_helper(\n                    \"\"\"SELECT high, low from {table}\n                where sday = :sday and high is not null and low is not null and\n                substr(station, 3, 1) != 'T' and\n                substr(station, 3, 4) != '0000'\n                \"\"\",\n                    table=f\"alldata_{state.lower()}\",\n                ),\n                conn,\n                params={\"sday\": f\"{month:02.0f}{day:02.0f}\"},\n            )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    highs = df[\"high\"].to_numpy()\n    lows = df[\"low\"].to_numpy()\n\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n\n    n, bins, _ = ax.hist(\n        highs,\n        bins=(np.max(highs) - np.min(highs)),\n        histtype=\"step\",\n        density=True,\n        color=\"r\",\n        zorder=1,\n    )\n    high_freq = pd.Series(n, index=bins[:-1])\n    mu, std = norm.fit(highs)\n    xmin, xmax = ax.get_xlim()\n    x = np.linspace(xmin, xmax, 100)\n    p = norm.pdf(x, mu, std)\n    ax.plot(x, p, \"r--\", linewidth=2)\n    plotted32 = False\n    if xmin < 32 < xmax:\n        ax.axvline(x=32, color=\"g\", linestyle=\"--\")\n        plotted32 = True\n\n    ax.text(\n        0.8,\n        0.98,\n        \"\\n\".join(\n            [\n                \"High Temp\\n\" + rf\"$\\mu$ = {mu:.1f}°F\",\n                rf\"$\\sigma$ = {std:.2f}\",\n                rf\"$n$ = {len(highs)}\",\n            ]\n        ),\n        va=\"top\",\n        ha=\"left\",\n        color=\"r\",\n        transform=ax.transAxes,\n        bbox=dict(color=\"white\"),\n    )\n\n    n, bins, _ = ax.hist(\n        lows,\n        bins=(np.max(lows) - np.min(lows)),\n        histtype=\"step\",\n        density=True,\n        color=\"b\",\n        zorder=1,\n    )\n    low_freq = pd.Series(n, index=bins[:-1])\n    df = pd.DataFrame(dict(low_freq=low_freq, high_freq=high_freq))\n    df.index.name = \"tmpf\"\n    mu, std = norm.fit(lows)\n    xmin, xmax = ax.get_xlim()\n    x = np.linspace(xmin, xmax, 100)\n    p = norm.pdf(x, mu, std)\n    ax.plot(x, p, \"b--\", linewidth=2)\n    if xmin < 32 < xmax:\n        ax.axvline(x=32, color=\"g\", linestyle=\"--\")\n        plotted32 = True\n\n    ax.text(\n        0.02,\n        0.98,\n        \"\\n\".join(\n            [\n                \"Low Temp\\n\" + rf\"$\\mu$ = {mu:.1f}°F\",\n                rf\"$\\sigma$ = {std:.2f}\",\n                rf\"$n$ = {len(lows)}\",\n            ]\n        ),\n        va=\"top\",\n        ha=\"left\",\n        color=\"b\",\n        transform=ax.transAxes,\n        bbox=dict(color=\"white\"),\n    )\n    ax.grid(True)\n    extra = \"\"\n    if plotted32:\n        extra = \" (32°F highlighted in green)\"\n    ax.set_xlabel(f\"Temperature °F{extra}\")\n    ax.set_ylabel(\"Probability\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p26.py",
    "content": "\"\"\"\nThis plot presents the climatology and actual\nyear's progression of warmest to date or coldest to date temperature.\nThe simple average is presented along with the percentile intervals. When\nplotting the after 1 July period, the calendar year of the fall season\nis shown.  For example, 1 Jul 2019 to 30 Jun 2020 is 2019 for this plot.\n\"\"\"\n\nimport calendar\nfrom contextlib import suppress\nfrom datetime import date, datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"fall\": \"Minimum Temperature after 1 July\",\n    \"spring\": \"Maximum Temperature for Year to Date\",\n}\nPDICT2 = {\"high\": \"High Temperature\", \"low\": \"Low Temperature\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=datetime.now().year,\n            label=\"Year (of fall season) to highlight:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"half\",\n            default=\"fall\",\n            label=\"Option to Plot:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"low\",\n            label=\"Variable to Plot:\",\n            options=PDICT2,\n        ),\n        dict(type=\"int\", name=\"t\", label=\"Highlight Temperature\", default=32),\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"coop\")\ndef add_ctx(ctx, conn: Connection | None = None):\n    \"\"\"Get the raw infromations we need\"\"\"\n    today = date.today()\n    thisyear = today.year\n    year = ctx[\"year\"]\n    station = ctx[\"station\"]\n    varname = ctx[\"var\"]\n    half = ctx[\"half\"]\n\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    startyear = int(ab.year)\n    data = np.ma.ones((thisyear - startyear + 1, 366)) * 199\n    if half == \"fall\":\n        res = conn.execute(\n            sql_helper(\n                \"\"\"SELECT\n            day - (\n                (case when month > 6 then year else year - 1 end)::text ||\n                '-07-01')::date as dt,\n            case when month > 6 then year else year - 1 end as yr, {varname}\n            from alldata WHERE station = :station and low is not null and\n            high is not null and day >= :sday ORDER by day ASC\"\"\",\n                varname=varname,\n            ),\n            {\"station\": station, \"sday\": date(startyear, 7, 1)},\n        )\n    else:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"SELECT extract(doy from day) - 1 as dt,\n            year as yr, {varname} from\n            alldata WHERE station = :station and high is not null and\n            low is not null and year >= :syear ORDER by day ASC\"\"\",\n                varname=varname,\n            ),\n            {\"station\": station, \"syear\": startyear},\n        )\n    if res.rowcount == 0:\n        raise NoDataFound(\"No Data Found.\")\n    for row in res.mappings():\n        data[int(row[\"yr\"] - startyear), int(row[\"dt\"])] = row[varname]\n    data.mask = np.where(data == 199, True, False)\n\n    doys = []\n    avg = []\n    p25 = []\n    p2p5 = []\n    p75 = []\n    p97p5 = []\n    mins = []\n    maxs = []\n    dyear = []\n    idx = year - startyear\n    doys = list(range(1, 366))\n    f = np.ma.max if half == \"spring\" else np.ma.min\n    for doy in doys:\n        if not np.ma.is_masked(data[idx, doy]):\n            dyear.append(f(data[idx, : (doy + 1)]))\n        vals = f(data[:-1, :doy], 1)\n        avg.append(np.ma.average(vals))\n        mins.append(np.ma.min(vals))\n        maxs.append(np.ma.max(vals))\n        p = np.nanpercentile(np.ma.filled(vals, np.nan), [2.5, 25, 75, 97.5])\n        p2p5.append(p[0])\n        p25.append(p[1])\n        p75.append(p[2])\n        p97p5.append(p[3])\n    # http://stackoverflow.com/questions/19736080\n    d = dict(\n        doy=pd.Series(doys) + (1 if half == \"spring\" else 183),\n        mins=pd.Series(mins),\n        maxs=pd.Series(maxs),\n        p2p5=pd.Series(p2p5),\n        p97p5=pd.Series(p97p5),\n        p25=pd.Series(p25),\n        p75=pd.Series(p75),\n        avg=pd.Series(avg),\n        thisyear=pd.Series(dyear),\n    )\n    df = pd.DataFrame(d)\n    addval = int(df[\"doy\"].values[0] - 1)\n    sts = date(2000, 1, 1) + timedelta(days=addval)\n    df[\"dates\"] = pd.date_range(sts, periods=len(doys))\n    df = df.set_index(\"doy\")\n    ctx[\"df\"] = df\n    ctx[\"year\"] = year\n    ctx[\"half\"] = half\n    if ctx[\"half\"] == \"fall\":\n        title = \"Season to Date Minimum Daily %s Temperature after 1 July\"\n    else:\n        title = \"Year to Date Maximum Daily %s Temperature\"\n    title = title % (varname.capitalize(),)\n    ctx[\"ylabel\"] = title\n    ctx[\"title\"] = f\"{startyear}-{thisyear - 1} {ctx['_sname']}\\n{title}\"\n    return ctx\n\n\ndef get_highcharts(ctx: dict) -> str:\n    \"\"\"Do highcharts\"\"\"\n    add_ctx(ctx)\n    rng = ctx[\"df\"][[\"dates\", \"mins\", \"maxs\"]].to_json(\n        orient=\"values\", date_format=\"iso\"\n    )\n    p95 = ctx[\"df\"][[\"dates\", \"p2p5\", \"p97p5\"]].to_json(\n        orient=\"values\", date_format=\"iso\"\n    )\n    p50 = ctx[\"df\"][[\"dates\", \"p25\", \"p75\"]].to_json(\n        orient=\"values\", date_format=\"iso\"\n    )\n    mean = ctx[\"df\"][[\"dates\", \"avg\"]].to_json(\n        orient=\"values\", date_format=\"iso\"\n    )\n    thisyear = \"[]\"\n    with suppress(Exception):\n        thisyear = ctx[\"df\"][[\"dates\", \"thisyear\"]].to_json(\n            orient=\"values\", date_format=\"iso\"\n        )\n    containername = ctx[\"_e\"]\n    title = ctx[\"title\"].replace(\"\\n\", \" \")\n    return f\"\"\"\nHighcharts.chart('{containername}', {{\n    title: {{text: '{title}'}},\n    tooltip: {{shared: true,\n        xDateFormat: '%B %d'}},\n    xAxis: {{type: 'datetime',\n        dateTimeLabelFormats: {{\n            day: '%b %e',\n            week: '%b %e',\n            month: '%b %e'}}}},\n    yAxis: {{title: {{text: '{ctx[\"ylabel\"]}'}}}},\n    series: [{{\n        name: 'Range',\n        type: 'arearange',\n        color: 'pink',\n        tooltip: {{valueDecimals: 0}},\n        data: {rng}\n    }},{{\n        name: '95th',\n        type: 'arearange',\n        color: 'tan',\n        tooltip: {{valueDecimals: 2}},\n        data: {p95}\n    }},{{\n        name: '50th',\n        type: 'arearange',\n        color: 'gold',\n        tooltip: {{valueDecimals: 2}},\n        data: {p50}\n    }},{{\n        name: 'Average',\n        type: 'line',\n        color: 'black',\n        tooltip: {{valueDecimals: 2}},\n        data: {mean}\n    }},{{\n        name: '{ctx[\"year\"]}',\n        type: 'line',\n        color: 'blue',\n        tooltip: {{valueDecimals: 0}},\n        shadow: {{'color': 'white'}},\n        data: {thisyear}\n    }}]\n}});\n    \"\"\"\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    add_ctx(ctx)\n    df = ctx[\"df\"]\n\n    (fig, ax) = figure_axes(title=ctx[\"title\"], apctx=ctx)\n    doys = df.index.values\n    ax.fill_between(\n        doys, df[\"mins\"], df[\"maxs\"], color=\"pink\", zorder=1, label=\"Range\"\n    )\n    ax.fill_between(\n        doys, df[\"p2p5\"], df[\"p97p5\"], color=\"tan\", zorder=2, label=\"95 tile\"\n    )\n    ax.fill_between(\n        doys, df[\"p25\"], df[\"p75\"], color=\"gold\", zorder=3, label=\"50 tile\"\n    )\n    a = ax.plot(doys, df[\"avg\"], zorder=4, color=\"k\", lw=2, label=\"Average\")\n    series = df[\"thisyear\"].dropna()\n    ax.plot(\n        series.index.values, series.values, color=\"white\", lw=3.5, zorder=5\n    )\n    b = ax.plot(\n        series.index.values,\n        series.values,\n        color=\"b\",\n        lw=1.5,\n        zorder=6,\n        label=f\"{ctx['year']}\",\n    )\n    if ctx[\"half\"] == \"spring\":\n        ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n        ax.set_xticklabels(calendar.month_abbr[1:])\n    if ctx[\"half\"] == \"fall\":\n        ax.set_xticks(\n            np.array([1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335])\n            + 183\n        )\n        labels = calendar.month_abbr[7:]\n        labels.extend(calendar.month_abbr[1:7])\n        ax.set_xticklabels(labels)\n    ax.set_ylabel(f\"{ctx['ylabel']} °F\")\n    ax.axhline(ctx[\"t\"], linestyle=\"--\", lw=1, color=\"k\", zorder=6)\n    ax.text(\n        ax.get_xlim()[1],\n        ctx[\"t\"],\n        f\"{ctx['t']:.0f}°F\",\n        va=\"center\",\n    )\n    ax.grid(True)\n\n    r = Rectangle((0, 0), 1, 1, fc=\"pink\")\n    r2 = Rectangle((0, 0), 1, 1, fc=\"tan\")\n    r3 = Rectangle((0, 0), 1, 1, fc=\"gold\")\n\n    loc = 1 if ctx[\"half\"] == \"fall\" else 4\n    ax.legend(\n        [r, r2, r3, a[0], b[0]],\n        [\n            \"Range\",\n            \"95$^{th}$ %tile\",\n            \"50$^{th}$ %tile\",\n            \"Average\",\n            f\"{ctx['year']}\",\n        ],\n        loc=loc,\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p27.py",
    "content": "\"\"\"\nThis chart presents the date of the first fall\n(date after 1 July) temperature below threshold 1 and then the number of\ndays after that date until threshold 2 was reached. The slanted dashed\nlines are used to translate the dots to the date of occurrence for the\nsecond threshold.\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom scipy.stats import linregress\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"int\", name=\"t1\", default=32, label=\"Temperature Threshold 1:\"\n        ),\n        dict(\n            type=\"int\", name=\"t2\", default=29, label=\"Temperature Threshold 2:\"\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    t1 = ctx[\"t1\"]\n    t2 = ctx[\"t2\"]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            SELECT year,\n            min(low) as min_low,\n            min(case when low < %s then extract(doy from day)\n                else 999 end) as t1_doy,\n            min(case when low < %s then extract(doy from day)\n                else 999 end) as t2_doy\n            from alldata where station = %s and month > 6\n            GROUP by year ORDER by year ASC\n        \"\"\",\n            conn,\n            params=(t1, t2, station),\n            index_col=\"year\",\n        )\n    if not df.empty:\n        df = df[df[\"t2_doy\"] < 400]\n    if df.empty:\n        raise NoDataFound(\"No data was found after applying filter.\")\n\n    doy = np.array(df[\"t1_doy\"], \"i\")\n    doy2 = np.array(df[\"t2_doy\"], \"i\")\n\n    sts = datetime(2000, 1, 1)\n    xticks = []\n    xticklabels = []\n    for i in range(min(doy), max(doy2) + 1):\n        ts = sts + timedelta(days=i)\n        if ts.day in [1, 8, 15, 22]:\n            xticks.append(i)\n            fmt = \"%b %-d\" if ts.day == 1 else \"%-d\"\n            xticklabels.append(ts.strftime(fmt))\n\n    title = f\"{ctx['_sname']}\\nFirst Fall Temperature Occurences\"\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    ax.set_xticks(xticks)\n    ax.set_xticklabels(xticklabels)\n    ax.scatter(doy, doy2 - doy)\n\n    for x in xticks:\n        ax.plot((x - 100, x), (100, 0), \":\", c=\"#000000\")\n\n    h_slope, intercept, r_value, _, _ = linregress(\n        df[\"t1_doy\"].values, df[\"t2_doy\"].values - df[\"t1_doy\"].values\n    )\n    x = np.array(ax.get_xlim())\n    ax.plot(x, h_slope * x + intercept, lw=2, color=\"r\")\n    ax.text(\n        0.95,\n        0.91,\n        f\"slope: {h_slope:.2f} days/day, R$^2$={(r_value**2):.2f}\",\n        bbox=dict(color=\"white\"),\n        transform=ax.transAxes,\n        va=\"bottom\",\n        ha=\"right\",\n        color=\"r\",\n    )\n\n    ax.set_ylim(-1, max(doy2 - doy) + 4)\n    ax.set_xlim(min(doy) - 4, max(doy) + 4)\n    ax.set_ylabel(f\"Days until first sub {t2}°F\")\n    ax.set_xlabel(f\"First day of sub {t1}°F\")\n\n    ax.grid(True)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p28.py",
    "content": "\"\"\"\nThis plot presents trailing day precipitation\nmetrics.  Each point on the x-axis represents a period from that date to\nthe right-most date on the plot.  There are five options for units to\ndisplay the chart in, more specifically, the right hand axis on the\ninteractive chart version.\n<br />\n<ul>\n    <li><strong>Departure [inch]</strong>: the absolute amount of precip\n    above or below long term average.</li>\n    <li><strong>Percent of Average [%]</strong>: the departure from average\n    expressed in percent of average.</li>\n    <li><strong>Percentile (1=wettest)</strong>: The percentile rank for\n    this period's total versus all totals from the same period of days\n    over the period of record for the station.</li>\n    <li><strong>Rank (1=wettest)</strong>: The overall rank over the other\n    years for the period of record for the location.</li>\n    <li><strong>Standardized Precip Index [sigma]</strong>: This expresses\n    the precipitation departure in terms of standard deviations from\n    average.  The standard deviations and averages are based on period of\n    record data.</li>\n</ul>\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nimport requests\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"dep\": \"Departure [inch]\",\n    \"per\": \"Percent of Average [%]\",\n    \"ptile\": \"Percentile (1=wettest)\",\n    \"rank\": \"Rank (1=wettest)\",\n    \"spi\": \"Standardized Precip Index [sigma]\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"rank\",\n            options=PDICT,\n            label=\"Interative Chart Variable:\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"date\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"To Date:\",\n            min=\"1894/01/01\",\n        ),\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"coop\")\ndef add_ctx(ctx, conn=None):\n    \"\"\"Get the plotting context\"\"\"\n    station = ctx[\"station\"]\n    dt: date = ctx[\"date\"]\n    opt = ctx[\"opt\"]\n\n    res = conn.execute(\n        sql_helper(\"\"\"\n    SELECT year, extract(doy from day) as doy, precip from\n    alldata where station = :station and precip is not null\"\"\"),\n        {\"station\": station},\n    )\n    if res.rowcount == 0:\n        raise NoDataFound(\"No Data Found\")\n\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    baseyear = ab.year - 1\n    ctx[\"years\"] = (datetime.now().year - baseyear) + 1\n\n    data = np.zeros((ctx[\"years\"], 367 * 2))\n\n    for row in res.mappings():\n        # left hand\n        data[int(row[\"year\"] - baseyear), int(row[\"doy\"])] = row[\"precip\"]\n        # right hand\n        data[int(row[\"year\"] - baseyear - 1), int(row[\"doy\"]) + 366] = row[\n            \"precip\"\n        ]\n    sts = dt - timedelta(days=14)\n    try:\n        resp = requests.get(\n            \"http://mesonet.agron.iastate.edu/api/1/usdm_bypoint.json\",\n            params={\n                \"sdate\": sts.strftime(\"%Y-%m-%d\"),\n                \"edate\": dt.strftime(\"%Y-%m-%d\"),\n                \"lon\": ctx[\"_nt\"].sts[station][\"lon\"],\n                \"lat\": ctx[\"_nt\"].sts[station][\"lat\"],\n            },\n            timeout=30,\n        )\n        resp.raise_for_status()\n    except Exception as exp:\n        raise NoDataFound(\"Unable to fetch USDM data\") from exp\n    jdata = resp.json()\n    dclass = \"No Drought\"\n    if jdata[\"data\"]:\n        lastrow = jdata[\"data\"][-1]\n        cat = lastrow[\"category\"]\n        cat = \"No Drought\" if cat is None else f\"D{cat}\"\n        ts = datetime.strptime(lastrow[\"valid\"], \"%Y-%m-%d\")\n        dclass = f\"{cat} on {ts:%-d %b %Y}\"\n\n    _doy = dt.replace(year=2000).timetuple().tm_yday\n    xticks = []\n    xticklabels = []\n    for i in range(-360, 1, 60):\n        ts = dt + timedelta(days=i)\n        xticks.append(i)\n        xticklabels.append(ts.strftime(\"%b %-d\\n'%y\"))\n    ranks = []\n    departures = []\n    percentages = []\n    totals = []\n    maxes = []\n    avgs = []\n    spi = []\n    ptile = []\n    myyear = dt.year - baseyear - 1\n    for days in range(1, 366):\n        idx0 = _doy + 366 - days\n        idx1 = _doy + 366\n        sums = np.sum(data[:, idx0:idx1], 1)\n        thisyear = sums[myyear]\n        sums = np.sort(sums)\n        arr = np.digitize([thisyear], sums)\n        if thisyear == 0:\n            rank = ctx[\"years\"]\n        else:\n            rank = ctx[\"years\"] - arr[0] + 1\n        ranks.append(rank)\n        ptile.append(rank / float(len(sums)) * 100.0)\n        totals.append(thisyear)\n        maxes.append(sums[-1])\n        avgs.append(np.nanmean(sums))\n        departures.append(thisyear - avgs[-1])\n        percentages.append(thisyear / avgs[-1] * 100)\n        spi.append((thisyear - avgs[-1]) / np.nanstd(sums))\n\n    ctx[\"sdate\"] = dt - timedelta(days=360)\n    ctx[\"title\"] = f\"[{baseyear + 2}-{datetime.now().year}] {ctx['_sname']}\"\n    ctx[\"subtitle\"] = (\n        f\"{PDICT[opt]} from given x-axis date until {dt:%-d %b %Y}, \"\n        f\"US Drought Monitor: {dclass}\"\n    )\n    ctx[\"subtitle2\"] = (\n        f\"From given x-axis date until {dt:%-d %b %Y}, \"\n        f\"US Drought Monitor: {dclass}\"\n    )\n\n    ctx[\"ranks\"] = ranks\n    ctx[\"departures\"] = departures\n    ctx[\"percentages\"] = percentages\n    ctx[\"spi\"] = spi\n    ctx[\"percentiles\"] = ptile\n    if opt == \"per\":\n        ctx[\"y2\"] = ctx[\"percentages\"]\n    elif opt == \"dep\":\n        ctx[\"y2\"] = ctx[\"departures\"]\n    elif opt == \"spi\":\n        ctx[\"y2\"] = ctx[\"spi\"]\n    elif opt == \"ptile\":\n        ctx[\"y2\"] = ctx[\"percentiles\"]\n    else:\n        ctx[\"y2\"] = ctx[\"ranks\"]\n    ctx[\"totals\"] = totals\n    ctx[\"maxes\"] = maxes\n    ctx[\"avgs\"] = avgs\n    ctx[\"xticks\"] = xticks\n    ctx[\"xticklabels\"] = xticklabels\n    ctx[\"station\"] = station\n    ctx[\"y2label\"] = PDICT[opt]\n\n\ndef get_highcharts(ctx: dict) -> str:\n    \"\"\"Go\"\"\"\n    add_ctx(ctx)\n    dstart = \"Date.UTC(%s, %s, %s)\" % (\n        ctx[\"sdate\"].year,\n        ctx[\"sdate\"].month - 1,\n        ctx[\"sdate\"].day,\n    )\n    containername = ctx[\"_e\"]\n    return (\n        \"\"\"\nHighcharts.chart('\"\"\"\n        + containername\n        + \"\"\"', {\n    time: {useUTC: false},\n    title: {text: '\"\"\"\n        + ctx[\"title\"]\n        + \"\"\"'},\n    subtitle: {text: '\"\"\"\n        + ctx[\"subtitle\"]\n        + \"\"\"'},\n    chart: {zoomType: 'x'},\n    yAxis: [{\n            min: 0,\n            title: {\n                text: 'Precipitation [inch]'\n            }\n        }, {\n            title: {\n                text: '\"\"\"\n        + ctx[\"y2label\"]\n        + \"\"\"',\n                style: {\n                    color: Highcharts.getOptions().colors[0]\n                }\n            },\n            labels: {\n                style: {\n                    color: Highcharts.getOptions().colors[0]\n                }\n            },\n            opposite: true\n    }],\n    tooltip: {\n        shared: true,\n        xDateFormat: '%Y-%m-%d'\n    },\n    series : [{\n        name: '\"\"\"\n        + ctx[\"y2label\"]\n        + \"\"\" (right axis)',\n        tooltip: {valueDecimals: 2},\n        pointStart: \"\"\"\n        + dstart\n        + \"\"\",\n        pointInterval: 24 * 3600 * 1000, // one day\n        zIndex: 5,\n        shadow: true,\n        data: \"\"\"\n        + str([int(x) for x in ctx[\"y2\"][::-1]])\n        + \"\"\",\n        yAxis: 1\n    },{\n        name: 'This Period',\n        tooltip: {valueDecimals: 2},\n        pointStart: \"\"\"\n        + dstart\n        + \"\"\",\n        pointInterval: 24 * 3600 * 1000, // one day\n        zIndex: 3,\n        data: \"\"\"\n        + str([float(x) for x in ctx[\"totals\"][::-1]])\n        + \"\"\"\n    },{\n        name: 'Average',\n        tooltip: {valueDecimals: 2},\n        pointStart: \"\"\"\n        + dstart\n        + \"\"\",\n        pointInterval: 24 * 3600 * 1000, // one day\n        zIndex: 4,\n        data: \"\"\"\n        + str([float(x) for x in ctx[\"avgs\"][::-1]])\n        + \"\"\"\n    }, {\n        name: 'Maximum',\n        zIndex: 2,\n        tooltip: {valueDecimals: 2},\n        pointStart: \"\"\"\n        + dstart\n        + \"\"\",\n        pointInterval: 24 * 3600 * 1000, // one day\n        data: \"\"\"\n        + str([float(x) for x in ctx[\"maxes\"][::-1]])\n        + \"\"\"\n    }],\n    xAxis: {\n        type: 'datetime'\n    }\n\n});\n\n    \"\"\"\n    )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    add_ctx(ctx)\n\n    fig = figure(title=ctx[\"title\"], subtitle=ctx[\"subtitle2\"], apctx=ctx)\n    width = 0.26\n    height = 0.38\n    x0 = 0.07\n    y0 = 0.1\n    x1 = x0 + width + 0.06\n    y1 = y0 + height + 0.03\n    x2 = x1 + width + 0.06\n    axes = [\n        fig.add_axes((x0, y1, width, height)),\n        fig.add_axes((x0, y0, width, height)),\n        fig.add_axes((x1, y1, width, height)),\n        fig.add_axes((x1, y0, width, height)),\n        fig.add_axes((x2, y1, width, height)),\n        fig.add_axes((x2, y0, width, height)),\n    ]\n    for i, ax in enumerate(axes):\n        ax.grid(True)\n        ax.set_xticks(ctx[\"xticks\"])\n        if (i + 1) % 2 == 0:\n            ax.set_xticklabels(ctx[\"xticklabels\"])\n        else:\n            ax.set_xticklabels([])\n        ax.set_xlim(-367, 0.5)\n\n    xaxis = np.arange(-365, 0)\n    # Upper Left, simple accums\n    ax = axes[0]\n    ax.plot(\n        xaxis,\n        ctx[\"totals\"][::-1],\n        color=\"r\",\n        lw=2,\n        label=\"This Period\",\n    )\n    ax.plot(\n        xaxis,\n        ctx[\"avgs\"][::-1],\n        color=\"purple\",\n        lw=2,\n        label=\"Average\",\n    )\n    ax.plot(\n        xaxis,\n        ctx[\"maxes\"][::-1],\n        color=\"g\",\n        lw=2,\n        label=\"Maximum\",\n    )\n    ax.set_ylabel(\"Accum Precipitation [inch]\")\n    ax.legend(loc=1, ncol=1)\n    ax.set_ylim(bottom=0)\n\n    # Lower Left SPI\n    ax = axes[1]\n    ax.plot(xaxis, ctx[\"spi\"][::-1], zorder=6)\n    ax.set_ylabel(r\"Standardized Precip Index ($\\sigma$)\")\n    colors = [\"#ffff00\", \"#fcd37f\", \"#ffaa00\", \"#e60000\", \"#730000\"]\n    for i, spi in enumerate([-0.5, -0.8, -1.3, -1.6, -2]):\n        ax.axhline(spi, color=colors[i], lw=2, zorder=4)\n        ax.annotate(\n            f\"D{i}\",\n            (0.5, spi),\n            xycoords=(\"axes fraction\", \"data\"),\n            va=\"center\",\n            zorder=5,\n            color=\"k\" if i < 3 else \"white\",\n            bbox=dict(color=colors[i]),\n        )\n\n    # Middle Upper\n    ax = axes[2]\n    ax.set_ylabel(\"Rank (wettest=1)\")\n    ax.axhline(ctx[\"years\"], color=\"b\", linestyle=\"-.\")\n    ax.plot(xaxis, ctx[\"ranks\"][::-1], zorder=6)\n    ax.text(-180, ctx[\"years\"] + 2, \"Total Years\", ha=\"center\")\n    ax.set_ylim(1, ctx[\"years\"] + 10)\n\n    # Middle Lower\n    ax = axes[3]\n    ax.set_ylabel(\"Percentile (wettest=1)\")\n    ax.plot(xaxis, ctx[\"percentiles\"][::-1], zorder=6)\n    ax.set_ylim(1, 101)\n    ax.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n\n    # Upper Right\n    ax = axes[4]\n    ax.set_ylabel(\"Percent of Average [%]\")\n    ax.plot(xaxis, ctx[\"percentages\"][::-1], zorder=6)\n\n    # Lower Right\n    ax = axes[5]\n    ax.set_ylabel(\"Departure from Average [inch]\")\n    ax.plot(xaxis, ctx[\"departures\"][::-1], zorder=6)\n\n    df = pd.DataFrame(\n        {\n            \"day\": np.arange(-365, 0),\n            \"maxaccum\": ctx[\"maxes\"][::-1],\n            \"accum\": ctx[\"totals\"][::-1],\n            \"rank\": ctx[\"ranks\"][::-1],\n            \"spi\": ctx[\"spi\"][::-1],\n            \"percentages\": ctx[\"percentages\"][::-1],\n            \"departures\": ctx[\"departures\"][::-1],\n        }\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p29.py",
    "content": "\"\"\"\nThis plot presents the frequency of a given hourly\nvariable being between two inclusive thresholds. The\nhour is specified in UTC (Coordinated Universal Time) and observations\nare rounded forward in time such that an observation at :54 after the\nhour is moved to the top of the hour.  This autoplot attempts to consider only\none observation per hour.\n\"\"\"\n\nimport calendar\nfrom zoneinfo import ZoneInfo\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.util import utc\n\nPDICT = {\n    \"tmpf\": \"Air Temperature [°F]\",\n    \"alti\": \"Altimeter [inch]\",\n    \"dwpf\": \"Dew Point Temperature [°F]\",\n    \"feel\": \"Feels Like Temperature [°F]\",\n    \"relh\": \"Relative Humidity [%]\",\n    \"mslp\": \"Sea Level Pressure [mb]\",\n    \"vsby\": \"Visibility [miles]\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(type=\"zhour\", name=\"hour\", default=20, label=\"At Time (UTC):\"),\n        {\n            \"type\": \"select\",\n            \"name\": \"var\",\n            \"default\": \"tmpf\",\n            \"label\": \"Which Variable to Plot:\",\n            \"options\": PDICT,\n        },\n        dict(\n            type=\"float\",\n            name=\"t1\",\n            default=70,\n            label=\"Lower Bound [units of selected var] (inclusive):\",\n        ),\n        dict(\n            type=\"float\",\n            name=\"t2\",\n            default=79,\n            label=\"Upper Bound [units of selected var] (inclusive):\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    hour = ctx[\"hour\"]\n    t1 = ctx[\"t1\"]\n    t2 = ctx[\"t2\"]\n    params = {\n        \"station\": station,\n        \"hour\": hour,\n        \"t1\": t1,\n        \"t2\": t2,\n    }\n    varname = ctx[\"var\"]\n    varsql = {\n        \"tmpf\": \"round(tmpf::numeric, 0)\",\n        \"dwpf\": \"round(dwpf::numeric, 0)\",\n        \"feel\": \"round(feel::numeric, 0)\",\n    }\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH obs as (\n            SELECT (valid + '10 minutes'::interval) at time zone 'UTC' as vld,\n            {vname} as tmp from alldata\n            WHERE station = :station and report_type = 3 and\n            extract(hour from\n                (valid + '10 minutes'::interval) at time zone 'UTC') = :hour\n            and tmpf is not null\n        )\n        SELECT extract(month from vld) as month,\n        sum(case when tmp >= :t1 and tmp <= :t2 then 1 else 0 end)::int\n            as hits,\n        sum(case when tmp > :t2 then 1 else 0 end) as above,\n        sum(case when tmp < :t1 then 1 else 0 end) as below,\n        count(*), max(vld) as max_utcvalid, min(vld) as min_utcvalid\n        from obs GROUP by month ORDER by month ASC\n        \"\"\",\n                vname=varsql.get(varname, varname),\n            ),\n            conn,\n            params=params,\n            index_col=\"month\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df[\"freq\"] = df[\"hits\"] / df[\"count\"] * 100.0\n    df[\"above_freq\"] = df[\"above\"] / df[\"count\"] * 100.0\n    df[\"below_freq\"] = df[\"below\"] / df[\"count\"] * 100.0\n    ut = utc(2000, 1, 1, hour, 0)\n    localt = ut.astimezone(ZoneInfo(ctx[\"_nt\"].sts[station][\"tzname\"]))\n    title = (\n        f\"{ctx['_sname']} ({df['min_utcvalid'].min().year}-\"\n        f\"{df['max_utcvalid'].max().year})\"\n    )\n    subtitle = (\n        f\"Frequency of {hour} UTC ({localt:%-I %p} LST) \"\n        f\"{PDICT[varname]} between {t1} and {t2} (inclusive)\"\n    )\n    fig = figure(title=title, subtitle=subtitle, apctx=ctx)\n    ax = fig.add_axes((0.1, 0.23, 0.8, 0.67))\n    ax.scatter(\n        df.index.values,\n        df[\"below_freq\"],\n        marker=\"s\",\n        s=40,\n        label=f\"Below {t1}\",\n        color=\"b\",\n        zorder=3,\n    )\n    bars = ax.bar(\n        np.arange(1, 13),\n        df[\"freq\"],\n        fc=\"tan\",\n        label=f\"{t1} - {t2}\",\n        zorder=2,\n        align=\"center\",\n    )\n    ax.scatter(\n        df.index.values,\n        df[\"above_freq\"],\n        marker=\"s\",\n        s=40,\n        label=f\"Above {t2}\",\n        color=\"r\",\n        zorder=3,\n    )\n    for i, _bar in enumerate(bars):\n        value = df.loc[i + 1, \"hits\"]\n        label = f\"{_bar.get_height():.1f}%\"\n        if value == 0:\n            label = \"None\"\n        ax.text(\n            i + 1,\n            _bar.get_height() + 3,\n            label,\n            ha=\"center\",\n            fontsize=12,\n            zorder=4,\n        )\n    ax.set_xticks(range(13))\n    ax.set_xticklabels(calendar.month_abbr)\n    ax.grid(True)\n    ax.set_ylim(0, 100)\n    ax.set_yticks([0, 25, 50, 75, 100])\n    ax.set_ylabel(\"Frequency [%]\")\n    ax.set_xlim(0.5, 12.5)\n    ax.legend(loc=(0.05, -0.18), ncol=3, fontsize=14)\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p3.py",
    "content": "\"\"\"\nThis plot displays a single month's worth of data\nover all of the years in the period of record.  In most cases, you can\naccess the raw data for these plots\n<a href=\"/climodat/\" class=\"link link-info\">here.</a>  For the variables\ncomparing the daily temperatures against average, the average is taken\nfrom the NCEI current 1991-2020 climatology.\n\n<p>This page presents a number of statistical measures.  In general, these\ncan be summarized as:\n<ul>\n    <li><strong>Average:</strong> simple arithmetic mean</li>\n    <li><strong>Maximum:</strong> the largest single day value</li>\n    <li><strong>Standard Deviation:</strong> measure indicating the spread\n    within the population of daily values for each grouped period.  Lower\n    values indicate less variability within the month or period.</li>\n    <li><strong>Average Day to Day:</strong> this is computed by sequentially\n    ordering the daily observations with time, computing the absolute value\n    between the current day and previous day and then averaging those values.\n    This is another measure of variability during the month.</li>\n    </ul></p>\n\n<p>You can optionally summarize by decades.  For this plot and for example,\nthe decade of the 90s represents the inclusive years 1990 thru 1999.\nPlease use care to specify start and end years that make sense for this\npresentation.  For example, if the year is only 2020, the 2020 decade\nvalues would only have one year included!</p>\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"max-high\": \"Maximum High\",\n    \"avg-high\": \"Average High\",\n    \"std-high\": \"Standard Deviation High\",\n    \"delta-high\": \"Average Day to Day High Change\",\n    \"min-high\": \"Minimum High\",\n    \"max-low\": \"Maximum Low\",\n    \"avg-low\": \"Average Low\",\n    \"std-low\": \"Standard Deviation Low\",\n    \"delta-low\": \"Average Day to Day Low Change\",\n    \"min-low\": \"Minimum Low\",\n    \"avg-temp\": \"Average Temp\",\n    \"std-temp\": \"Standard Deviation of Average Temp\",\n    \"delta-temp\": \"Average Day to Day Avg Temp Change\",\n    \"range-avghi-avglo\": \"Range between Average High + Average Low\",\n    \"max-precip\": \"Maximum Daily Precip\",\n    \"sum-precip\": \"Total Precipitation\",\n    \"days-high-above\": (\n        \"Days with High Temp Greater Than or Equal To (threshold)\"\n    ),\n    \"days-high-below\": \"Days with High Temp Below (threshold)\",\n    \"days-high-above-avg\": (\n        \"Days with High Temp Greater Than or Equal To Average\"\n    ),\n    \"days-lows-above\": (\n        \"Days with Low Temp Greater Than or Equal To (threshold)\"\n    ),\n    \"days-lows-below\": \"Days with Low Temp Below (threshold)\",\n    \"days-lows-below-avg\": \"Days with Low Temp Below Average\",\n    \"days-precip-above\": \"Days with Precipitation Above (threshold)\",\n}\nPDICT2 = {\"no\": \"Plot Yearly Values\", \"yes\": \"Plot Decadal Values\"}\nMDICT = {\n    \"year\": \"Calendar Year\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"1\": \"January\",\n    \"2\": \"February\",\n    \"3\": \"March\",\n    \"4\": \"April\",\n    \"5\": \"May\",\n    \"6\": \"June\",\n    \"7\": \"July\",\n    \"8\": \"August\",\n    \"9\": \"September\",\n    \"10\": \"October\",\n    \"11\": \"November\",\n    \"12\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=today.month,\n            label=\"Month/Season\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"type\",\n            default=\"max-high\",\n            label=\"Which metric to plot?\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"float\",\n            name=\"threshold\",\n            default=\"-99\",\n            label=\"Threshold (optional, specify when appropriate):\",\n        ),\n        dict(\n            type=\"year\",\n            default=1850,\n            label=\"Potential Minimum Year (inclusive) to use in plot:\",\n            name=\"syear\",\n            min=1850,\n        ),\n        dict(\n            type=\"year\",\n            default=today.year,\n            label=\"Potential Maximum Year (inclusive) to use in plot:\",\n            name=\"eyear\",\n            min=1850,\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT2,\n            name=\"decadal\",\n            default=\"no\",\n            label=\"Aggregate plot by decades:\",\n        ),\n    ]\n    return desc\n\n\ndef get_highcharts(ctx: dict) -> str:\n    \"\"\"Go high charts\"\"\"\n    add_ctx(ctx)\n    ptinterval = \"10\" if ctx[\"decadal\"] else \"1\"\n    containername = ctx[\"_e\"]\n    return f\"\"\"\nHighcharts.chart('{containername}', {{\n    title: {{text: '{ctx[\"title\"]}'}},\n    subtitle: {{text: '{ctx[\"subtitle\"]}'}},\n    chart: {{zoomType: 'x'}},\n    tooltip: {{shared: true}},\n    xAxis: {{title: {{text: '{ctx[\"xlabel\"]}'}}}},\n    yAxis: {{title: {{text: '{ctx[\"ylabel\"]}'}}}},\n    series: [{{\n        name: '{ctx[\"ptype\"]}',\n        type: 'column',\n        width: 0.8,\n        pointStart: {ctx[\"df\"].index.min()},\n        pointInterval: {ptinterval},\n        tooltip: {{\n            valueDecimals: 2\n        }},\n        data: {ctx[\"data\"]},\n        threshold: null\n        }}, {{\n        tooltip: {{valueDecimals: 2}},\n        name: '30 Year Trailing Avg',\n    pointStart: {ctx[\"df\"].index.min() + (3 if ctx[\"decadal\"] else 30)},\n    pointInterval: {ptinterval},\n    width: 2,\n    data: {ctx[\"tavg\"][(3 if ctx[\"decadal\"] else 30) :]}\n        }},{{\n            tooltip: {{\n                valueDecimals: 2\n            }},\n            name: 'Average',\n            width: 2,\n            pointPadding: 0.1,\n            pointStart: {ctx[\"df\"].index.min()},\n            pointInterval: {ptinterval},\n            data: {[float(x) for x in [ctx[\"avgv\"]] * len(ctx[\"df\"].index)]}\n        }}]\n}});\n    \"\"\"\n\n\ndef add_ctx(ctx):\n    \"\"\"Get the context\"\"\"\n    ctx[\"decadal\"] = ctx.get(\"decadal\") == \"yes\"\n    # Lower the start year if decadal\n    if ctx[\"decadal\"]:\n        ctx[\"syear\"] -= ctx[\"syear\"] % 10\n    station = ctx[\"station\"]\n    month = ctx[\"month\"]\n    ptype = ctx[\"type\"]\n    threshold = ctx[\"threshold\"]\n\n    lag = \"0 days\"\n    if month == \"fall\":\n        months = [9, 10, 11]\n        label = \"Fall (SON)\"\n    elif month == \"winter\":\n        months = [12, 1, 2]\n        lag = \"31 days\"\n        label = \"Winter (DJF)\"\n    elif month == \"spring\":\n        months = [3, 4, 5]\n        label = \"Spring (MAM)\"\n    elif month == \"summer\":\n        months = [6, 7, 8]\n        label = \"Summer (JJA)\"\n    elif month == \"year\":\n        months = list(range(1, 13))\n        label = \"Calendar Year\"\n    else:\n        months = [int(month)]\n        label = calendar.month_name[int(month)]\n\n    decagg = 10 if ctx[\"decadal\"] else 1\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH climo as (\n            SELECT to_char(valid, 'mmdd') as sday,\n            high, low from ncei_climate91 WHERE station = :ncei),\n        day2day as (\n            SELECT\n            extract(year from day + '{lag}'::interval)::int / {decagg}\n                as myyear,\n            month,\n            abs(high - lag(high) OVER (ORDER by day ASC)) as dhigh,\n            abs(low - lag(low) OVER (ORDER by day ASC)) as dlow,\n            abs((high+low)/2. - lag((high+low)/2.)\n                OVER (ORDER by day ASC)) as dtemp\n            from alldata WHERE station = :station),\n        agg as (\n            SELECT myyear, avg(dhigh) as dhigh, avg(dlow) as dlow,\n            avg(dtemp) as dtemp from day2day\n            WHERE month = ANY(:months) GROUP by myyear),\n        agg2 as (\n            SELECT\n            extract(year from day + '{lag}'::interval)::int / {decagg}\n                as myyear,\n            max(o.year) - min(o.year) + 1 as years,\n            max(o.high) as \"max-high\",\n            min(o.high) as \"min-high\",\n            avg(o.high) as \"avg-high\",\n            stddev(o.high) as \"std-high\",\n            max(o.low) as \"max-low\",\n            min(o.low) as \"min-low\",\n            avg(o.low) as \"avg-low\",\n            stddev(o.low) as \"std-low\",\n            avg((o.high + o.low)/2.) as \"avg-temp\",\n            stddev((o.high + o.low)/2.) as \"std-temp\",\n            max(o.precip) as \"max-precip\",\n            sum(o.precip) as \"sum-precip\",\n            avg(o.high) - avg(o.low) as \"range-avghi-avglo\",\n            sum(case when o.high::numeric >= :t then 1 else 0 end)\n                as \"days-high-above\",\n            sum(case when o.high::numeric < :t then 1 else 0 end)\n                as \"days-high-below\",\n            sum(case when o.high::numeric >= c.high then 1 else 0 end)\n                as \"days-high-above-avg\",\n            sum(case when o.low::numeric >= :t then 1 else 0 end)\n                as \"days-lows-above\",\n            sum(case when o.low::numeric < c.low then 1 else 0 end)\n                as \"days-lows-below-avg\",\n            sum(case when o.low::numeric < :t then 1 else 0 end)\n                as \"days-lows-below\",\n            sum(case when o.precip::numeric >= :t then 1 else 0 end)\n                as \"days-precip-above\"\n            from alldata o JOIN climo c on (o.sday = c.sday)\n        where station = :station and month = ANY(:months) GROUP by myyear)\n\n        SELECT b.*, a.dhigh as \"delta-high\", a.dlow as \"delta-low\",\n        a.dtemp as \"delta-temp\" from agg a JOIN agg2 b\n        on (a.myyear = b.myyear) WHERE b.myyear * {decagg} >= :syear\n        and b.myyear * {decagg} <= :eyear\n        ORDER by b.myyear ASC\n        \"\"\",\n                lag=str(lag),  # ugly\n                decagg=str(decagg),\n            ),\n            conn,\n            params={\n                \"ncei\": ctx[\"_nt\"].sts[station][\"ncei91\"],\n                \"station\": station,\n                \"months\": months,\n                \"t\": threshold,\n                \"syear\": ctx[\"syear\"],\n                \"eyear\": ctx[\"eyear\"],\n            },\n            index_col=\"myyear\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No data was found for query\")\n    if ctx[\"decadal\"]:\n        df.index = df.index * 10\n        # Need to fix the sum() operations above\n        for colname in [\n            \"sum-precip\",\n            \"days-high-above\",\n            \"days-high-below\",\n            \"days-high-above-avg\",\n            \"days-lows-above\",\n            \"days-lows-below-avg\",\n            \"days-lows-below\",\n            \"days-precip-above\",\n        ]:\n            df[colname] = df[colname] / df[\"years\"]\n\n    # Figure out the max min values to add to the row\n    df2 = df[df[ptype] == df[ptype].max()]\n    if df2.empty:\n        raise NoDataFound(\"No data was found for query\")\n    df = df.dropna()\n    xx = \"+\" if len(df2.index) > 1 else \"\"\n    xlabel = f\"Year, Max: {df[ptype].max():.2f} {df2.index.values[0]}{xx}\"\n    df2 = df[df[ptype] == df[ptype].min()]\n    xx = \"+\" if len(df2.index) > 1 else \"\"\n    if not df2.empty:\n        xlabel += f\", Min: {df[ptype].min():.2f} {df2.index.values[0]}{xx}\"\n    ctx[\"xlabel\"] = xlabel\n    data = df[ptype].values\n    ctx[\"data\"] = data.tolist()\n    ctx[\"avgv\"] = df[ptype].mean()\n    ctx[\"df\"] = df\n    # Compute 30 year trailing average\n    tavg = [None] * 30\n    for i in range(30, len(data)):\n        tavg.append(float(np.average(data[i - 30 : i])))\n    if ctx[\"decadal\"]:\n        tavg = [None] * 3\n        for i in range(3, len(data)):\n            tavg.append(float(np.average(data[i - 3 : i])))\n\n    ctx[\"tavg\"] = tavg\n    # End interval is inclusive\n    ctx[\"a1991_2020\"] = df.loc[1991:2020, ptype].mean()\n    ctx[\"ptype\"] = ptype\n    ctx[\"station\"] = station\n    ctx[\"threshold\"] = threshold\n    ctx[\"month\"] = month\n    ctx[\"title\"] = f\"{ctx['_sname']} {df.index.min()}-{df.index.max()}\"\n    ctx[\"subtitle\"] = f\"{label} {PDICT[ptype]}\"\n    if ptype.find(\"days\") == 0 and ptype.find(\"avg\") == -1:\n        ctx[\"subtitle\"] += f\" ({threshold})\"\n\n    units = \"°F\"\n    if ctx[\"ptype\"].find(\"precip\") > 0:\n        units = \"inches\"\n    elif ctx[\"ptype\"].find(\"days\") > 0:\n        units = \"days\"\n    ctx[\"ylabel\"] = f\"{PDICT[ctx['ptype']]} [{units}]\"\n    return ctx\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    add_ctx(ctx)\n\n    (fig, ax) = figure_axes(\n        title=ctx[\"title\"],\n        subtitle=ctx[\"subtitle\"],\n        apctx=ctx,\n    )\n    ax.set_position([0.1, 0.1, 0.7, 0.8])\n\n    colorabove = \"tomato\"\n    colorbelow = \"dodgerblue\"\n    precision = \"%.1f\"\n    if ctx[\"ptype\"] in [\"max-precip\", \"sum-precip\", \"days-precip-above\"]:\n        colorabove = \"dodgerblue\"\n        colorbelow = \"tomato\"\n        precision = \"%.2f\"\n    bars = ax.bar(\n        ctx[\"df\"].index.values,\n        ctx[\"data\"],\n        color=colorabove,\n        align=\"edge\",\n        width=9 if ctx[\"decadal\"] else 1,\n    )\n    for i, mybar in enumerate(bars):\n        if ctx[\"data\"][i] < ctx[\"avgv\"]:\n            mybar.set_color(colorbelow)\n    lbl = \"Avg: \" + precision % (ctx[\"avgv\"],)\n    ax.axhline(ctx[\"avgv\"], lw=2, color=\"k\", zorder=2, label=lbl)\n    lbl = \"1991-2020: \" + precision % (ctx[\"a1991_2020\"],)\n    ax.axhline(ctx[\"a1991_2020\"], lw=2, color=\"brown\", zorder=2, label=lbl)\n    if len(ctx[\"tavg\"]) > 30:\n        ax.plot(\n            ctx[\"df\"].index.values,\n            ctx[\"tavg\"],\n            lw=1.5,\n            color=\"g\",\n            zorder=4,\n            label=\"Trailing 30yr\",\n        )\n        ax.plot(\n            ctx[\"df\"].index.values, ctx[\"tavg\"], lw=3, color=\"yellow\", zorder=3\n        )\n    ax.set_xlim(\n        ctx[\"df\"].index.min() - 1,\n        ctx[\"df\"].index.max() + (11 if ctx[\"decadal\"] else 1),\n    )\n    if ctx[\"ptype\"].find(\"precip\") == -1 and ctx[\"ptype\"].find(\"days\") == -1:\n        ax.set_ylim(min(ctx[\"data\"]) - 5, max(ctx[\"data\"]) + 5)\n\n    ax.set_xlabel(ctx[\"xlabel\"])\n    ax.set_ylabel(ctx[\"ylabel\"])\n    ax.grid(True)\n    ax.legend(ncol=3, loc=\"best\", fontsize=10)\n\n    # Print out the top 10 years and bottom 10 years\n    if not ctx[\"decadal\"]:\n        label = \"Top 10 Years\"\n        for idx, row in (\n            ctx[\"df\"]\n            .sort_values(ctx[\"ptype\"], ascending=False)\n            .head(10)\n            .iterrows()\n        ):\n            yr = f\"{idx - 1}-{idx}\" if ctx[\"month\"] == \"winter\" else f\"{idx}\"\n            label += f\"\\n{yr}: {precision % row[ctx['ptype']]}\"\n        fig.text(\n            0.81,\n            0.89,\n            label,\n            ha=\"left\",\n            va=\"top\",\n        )\n        label = \"Bottom 10 Years\"\n        for idx, row in (\n            ctx[\"df\"]\n            .sort_values(ctx[\"ptype\"], ascending=True)\n            .head(10)\n            .iterrows()\n        ):\n            yr = f\"{idx - 1}-{idx}\" if ctx[\"month\"] == \"winter\" else f\"{idx}\"\n            label += f\"\\n{yr}: {precision % row[ctx['ptype']]}\"\n        fig.text(\n            0.81,\n            0.49,\n            label,\n            ha=\"left\",\n            va=\"top\",\n        )\n\n    return fig, ctx[\"df\"]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p30.py",
    "content": "\"\"\"\nThis chart presents the range between the warmest\nhigh temperature and the coldest low temperature for a given month for\neach year.  The bottom panel displays the range between those two values.\nThe black lines represent the simple averages of the data.\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.axes import Axes\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\"monthly\": \"Plot Single Month\", \"yearly\": \"Plot Entire Year\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"defaults\"] = {\"_r\": \"96\"}\n    today = date.today()\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"monthly\",\n            options=PDICT,\n            label=\"Plot a Single Month or Entire Year?\",\n        ),\n        dict(\n            type=\"month\",\n            name=\"month\",\n            default=today.month,\n            label=\"Month to Plot:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=today.year,\n            label=\"Year to Highlight:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"eyear\",\n            default=today.year,\n            label=\"Last Year to Plot (inclusive):\",\n        ),\n    ]\n    return desc\n\n\ndef plot_trailing(ax: Axes, df: pd.DataFrame, colname: str):\n    \"\"\"Plot some things\"\"\"\n    vals = df[colname].to_numpy()\n    trail = [np.mean(vals[i - 30 : i]) for i in range(30, len(vals))]\n    ax.plot(df.index.values[30:], trail, lw=4, color=\"yellow\", zorder=4)\n    ax.plot(\n        df.index.values[30:],\n        trail,\n        lw=1.5,\n        color=\"red\",\n        zorder=5,\n        label=\"Trailing 30yr\",\n    )\n    ax.axhline(df[colname].mean(), lw=2, color=\"k\", zorder=2, label=\"Avg\")\n    ax.text(\n        df.index.values[-1] + 2,\n        df[colname].mean(),\n        f\"{df[colname].mean():.0f}\",\n        ha=\"left\",\n        va=\"center\",\n    )\n\n\n@with_sqlalchemy_conn(\"coop\")\ndef plotter(ctx: dict, conn: Connection | None = None):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    month = ctx[\"month\"]\n    year = ctx[\"year\"]\n    params = {\n        \"station\": station,\n        \"month\": month,\n        \"eyear\": ctx[\"eyear\"],\n    }\n\n    if ctx[\"opt\"] == \"monthly\":\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        SELECT year,  max(high) as max_high,  min(low) as min_low\n        from alldata where station = :station and month = :month and\n        high is not null and low is not null\n        and year <= :eyear GROUP by year\n        ORDER by year ASC\n        \"\"\"),\n            conn,\n            params=params,\n            index_col=\"year\",\n        )\n    else:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        SELECT year,  max(high) as max_high,  min(low) as min_low\n        from alldata where station = :station and\n        high is not null and low is not null\n        and year <= :eyear GROUP by year\n        ORDER by year ASC\n        \"\"\"),\n            conn,\n            params=params,\n            index_col=\"year\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df[\"rng\"] = df[\"max_high\"] - df[\"min_low\"]\n\n    tt = calendar.month_name[month] if ctx[\"opt\"] == \"monthly\" else \"Yearly\"\n    title = f\"{ctx['_sname']}\\n{tt} Temperature Range (Max High - Min Low)\"\n    fig = figure(title=title, apctx=ctx)\n    ax: list[Axes] = fig.subplots(3, 1, sharex=True)\n    ax[0].scatter(df.index.values, df[\"max_high\"].values)\n    if year in df.index:\n        ax[0].scatter(\n            year, df.at[year, \"max_high\"], marker=\"o\", color=\"r\", s=10\n        )\n    plot_trailing(ax[0], df, \"max_high\")\n    ax[0].grid(True)\n    ax[0].set_ylabel(\"Max Temp °F\")\n    ax[0].set_xlim(df.index.min() - 1.5, df.index.max() + 1.5)\n    ax[0].legend(ncol=2, loc=(0.0, -0.2))\n\n    ax[1].scatter(df.index.values, df[\"min_low\"])\n    if year in df.index:\n        ax[1].scatter(\n            year, df.at[year, \"min_low\"], marker=\"o\", color=\"r\", s=10\n        )\n    plot_trailing(ax[1], df, \"min_low\")\n    ax[1].grid(True)\n    ax[1].set_ylabel(\"Min Temp °F\")\n\n    ax[2].scatter(df.index.values, df[\"rng\"], zorder=1)\n    plot_trailing(ax[2], df, \"rng\")\n    if year in df.index:\n        ax[2].scatter(year, df.at[year, \"rng\"], marker=\"o\", color=\"r\", s=10)\n        ax[2].set_title(\n            f\"Year {year} [Hi: {df.at[year, 'max_high']} \"\n            f\"Lo: {df.at[year, 'min_low']} Rng: {df.at[year, 'rng']}] \"\n            \"Highlighted\",\n            color=\"r\",\n        )\n    ax[2].set_ylabel(\"Temperature Range °F\")\n    ax[2].grid(True)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p31.py",
    "content": "\"\"\"\nThis chart attempts to assess by now much the high temperature\ncan change between two or three periods of time.\nThese periods are defined by\nthe consecutive number of days you choose.  The tricky part is to\nexplain what exactly these periods are!  The middle period of days\nincludes 'today', which is where this metric is evaluated.  So a middle\nperiod of <code>1</code> days only includes 'today' and not 'tomorrow'.\nIf you summarize this plot by year, a simple linear trendline is\npresented as well.\n\n<p>A practical example here may be warranted.  Consider a period of\nfour days whereby the warmest high temperature was only 40 degrees F. Then\non the next day, the high temperature soars to 60 degrees.  For the plot\nsettings of <code>4</code> trailing days (Maxiumum)\nand <code>1</code> forward days (Whatever, does not matter for 1 day\naggregate),\nthis example evaluates to a jump of 20 degrees.\n\"\"\"\n\nimport calendar\nfrom datetime import date, datetime\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom scipy import stats\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"month\": \"Aggregate by Month\",\n    \"week\": \"Aggregate by Week of Year\",\n    \"year\": \"Aggregate by Year\",\n}\nPDICT2 = {\"min\": \"Minimum\", \"max\": \"Maximum\", \"avg\": \"Average\"}\nPDICT3 = {\"high\": \"High Temperature\", \"low\": \"Low Temperature\"}\nPDICT4 = {\n    \"two\": \"Just consider trailing and middle period\",\n    \"three\": \"Consider full cycle between trailing, middle, and forward\",\n}\nMDICT = {\n    \"year\": \"All Year\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"gs\": \"Growing Season (May-Sep)\",\n    \"1\": \"January\",\n    \"2\": \"February\",\n    \"3\": \"March\",\n    \"4\": \"April\",\n    \"5\": \"May\",\n    \"6\": \"June\",\n    \"7\": \"July\",\n    \"8\": \"August\",\n    \"9\": \"September\",\n    \"10\": \"October\",\n    \"11\": \"November\",\n    \"12\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"year\",\n            min=1893,\n            default=1893,\n            label=\"Start Year for Plot:\",\n            name=\"syear\",\n        ),\n        dict(\n            type=\"year\",\n            min=1893,\n            default=date.today().year,\n            label=\"End Year for Plot:\",\n            name=\"eyear\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"year\",\n            label=\"Month/Season\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"how\",\n            default=\"two\",\n            label=\"Analyze two or three periods?\",\n            options=PDICT4,\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"high\",\n            label=\"Which variable to analyze:\",\n            options=PDICT3,\n        ),\n        dict(\n            type=\"int\",\n            name=\"days\",\n            default=\"4\",\n            label=\"Number of Trailing Days (excludes 'today'):\",\n        ),\n        dict(\n            type=\"select\",\n            default=\"max\",\n            name=\"stat\",\n            options=PDICT2,\n            label=\"Trailing Days Aggregation Function:\",\n        ),\n        dict(\n            optional=True,\n            type=\"int\",\n            name=\"thres\",\n            label=\"Threshold temperature for trailing period (At or Above)\",\n            default=70,\n        ),\n        dict(\n            type=\"int\",\n            name=\"mdays\",\n            default=\"1\",\n            label=\"Number of Days in Middle Period (includes 'today'):\",\n        ),\n        dict(\n            type=\"select\",\n            default=\"min\",\n            name=\"mstat\",\n            options=PDICT2,\n            label=\"Middle Days Aggregation Function:\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"fdays\",\n            default=1,\n            label=\"Number of Days in Forward Period (following middle):\",\n            ge=1,\n            le=366,\n        ),\n        dict(\n            type=\"select\",\n            default=\"min\",\n            name=\"fstat\",\n            options=PDICT2,\n            label=\"Forward Days Aggregation Function:\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"week\",\n            name=\"agg\",\n            label=\"How to Aggregate the data?\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    days = int(ctx[\"days\"])\n    fdays = max(1, ctx[\"fdays\"])\n    mdays = int(ctx[\"mdays\"])\n    syear = int(ctx[\"syear\"])\n    eyear = int(ctx[\"eyear\"])\n    agg = ctx[\"agg\"]\n    # belt and suspenders\n    assert agg in PDICT\n    assert ctx[\"fstat\"] in PDICT2\n    assert ctx[\"mstat\"] in PDICT2\n    assert ctx[\"stat\"] in PDICT2\n    assert ctx[\"var\"] in PDICT3\n\n    month = ctx[\"month\"]\n    months = list(range(1, 13))\n    if month == \"fall\":\n        months = [9, 10, 11]\n    elif month == \"winter\":\n        months = [12, 1, 2]\n    elif month == \"spring\":\n        months = [3, 4, 5]\n    elif month == \"summer\":\n        months = [6, 7, 8]\n    elif month == \"gs\":\n        months = [5, 6, 7, 8, 9]\n    elif month != \"year\":\n        months = [int(month)]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        obs = pd.read_sql(\n            sql_helper(\n                \"\"\"WITH data as (\n        select day, extract(week from day) - 1 as week, year, month, sday,\n        {fstat}({varname}) OVER\n            (ORDER by day ASC rows between :f1 FOLLOWING and :f2 FOLLOWING)\n            as forward_stat, {mstat}({varname}) OVER\n            (ORDER by day ASC rows between CURRENT ROW and :f3 FOLLOWING)\n            as middle_stat, {stat}({varname}) OVER\n            (ORDER by day ASC rows between :days PRECEDING and 1 PRECEDING)\n            as trailing_stat\n        from alldata where station = :station)\n        SELECT * from data WHERE month = ANY(:months) and year >= :syear\n            and year <= :eyear ORDER by day ASC\n        \"\"\",\n                fstat=ctx[\"fstat\"],\n                mstat=ctx[\"mstat\"],\n                stat=ctx[\"stat\"],\n                varname=ctx[\"var\"],\n            ),\n            conn,\n            params={\n                \"f1\": fdays,\n                \"f2\": fdays + mdays - 1,\n                \"f3\": fdays - 1,\n                \"days\": days,\n                \"station\": station,\n                \"months\": months,\n                \"syear\": syear,\n                \"eyear\": eyear,\n            },\n        )\n    if obs.empty:\n        raise NoDataFound(\"No Data Found.\")\n    if ctx.get(\"thres\") is not None:\n        obs = obs[obs[\"trailing_stat\"] >= ctx[\"thres\"]]\n        if obs.empty:\n            raise NoDataFound(\"Failed to find events with trailing threshold\")\n    else:\n        ctx[\"thres\"] = None\n\n    # We have daily observations above in the form of obs\n    obs[\"two\"] = obs[\"middle_stat\"] - obs[\"trailing_stat\"]\n    obs[\"three\"] = obs[\"middle_stat\"] - obs[\"forward_stat\"]\n    if ctx[\"how\"] == \"three\":\n        up = obs[(obs[\"two\"] >= 0) & (obs[\"three\"] >= 0)]\n        obs[\"change\"] = up[[\"two\", \"three\"]].min(axis=1)\n        down = obs[(obs[\"two\"] < 0) & (obs[\"three\"] < 0)]\n        obs.loc[down.index, \"change\"] = down[[\"two\", \"three\"]].max(axis=1)\n    else:\n        obs[\"change\"] = obs[\"two\"]\n    weekly = obs[[agg, \"change\"]].groupby(agg).describe()\n    df = weekly[\"change\"]\n    if \"max\" not in df.columns:\n        raise NoDataFound(\"No Data Found after grouping by agg\")\n    extreme = max([df[\"max\"].max(), 0 - df[\"min\"].min()]) + 10\n    title = (\n        f\"Backward ({PDICT2[ctx['stat']]}) {days:.0f} Days and Forward \"\n        f\"({PDICT2[ctx['mstat']]}) {mdays:.0f} Inclusive Days\"\n    )\n    if ctx[\"how\"] == \"three\":\n        title = (\n            f\"Back ({PDICT2[ctx['stat']]}) {days:.0f}d, Middle \"\n            f\"({PDICT2[ctx['mstat']]}) {mdays:.0f}d, Forward \"\n            f\"({PDICT2[ctx['fstat']]}) {fdays:.0f}d\"\n        )\n    subtitle = (\n        \"\"\n        if ctx[\"thres\"] is None\n        else f\"\\nBack Threshold of at least {ctx['thres']:.0f} °F\"\n    )\n    tt = syear\n    if ctx[\"_nt\"].sts[station][\"archive_begin\"] is not None:\n        tt = max([ctx[\"_nt\"].sts[station][\"archive_begin\"].year, syear])\n    title = (\n        f\"{ctx['_sname']} ({tt:.0f}-{eyear:.0f}) Max Change in \"\n        f\"{PDICT3[ctx['var']].replace('Temperature', 'Temp')} \"\n        f\"{PDICT[agg].replace('Aggregate', 'Agg')} ({MDICT[month]})\\n\"\n        f\"{title}{subtitle}\"\n    )\n    fig, ax = figure_axes(title=title, apctx=ctx)\n    multiplier = 1\n    if agg == \"week\":\n        multiplier = 7\n        sts = datetime(2012, 1, 1)\n        xticks = []\n        for i in range(1, 13):\n            ts = sts.replace(month=i)\n            xticks.append(int(ts.strftime(\"%j\")))\n\n        ax.set_xticks(xticks)\n        ax.set_xticklabels(calendar.month_abbr[1:])\n        ax.set_xlim(0, 366)\n    elif agg == \"month\":\n        ax.set_xticks(range(1, 13))\n        ax.set_xticklabels(calendar.month_abbr[1:])\n        ax.set_xlim(0, 13)\n    elif agg == \"year\":\n        for col in [\"max\", \"min\"]:\n            h_slope, intercept, r_value, _, _ = stats.linregress(\n                df.index.values, df[col]\n            )\n            y = h_slope * df.index.values + intercept\n            ax.plot(df.index.values, y, lw=2, zorder=10, color=\"k\")\n            yloc = 0.55 if col == \"max\" else 0.45\n            color = \"white\" if yloc < 0 else \"k\"\n            ax.text(\n                0.9,\n                yloc,\n                r\"R^2=\" + f\"{(r_value**2):.02f}\",\n                color=color,\n                transform=ax.transAxes,\n                va=\"center\",\n                ha=\"right\",\n            )\n        ax.set_xlim(df.index.values[0] - 1, df.index.values[-1] + 1)\n    ax.bar(\n        df.index.values * multiplier,\n        df[\"max\"].values,\n        width=multiplier,\n        fc=\"pink\",\n        ec=\"pink\",\n    )\n    ax.bar(\n        df.index.values * multiplier,\n        df[\"min\"].values,\n        width=multiplier,\n        fc=\"lightblue\",\n        ec=\"lightblue\",\n    )\n    for col in [\"max\", \"min\"]:\n        c = \"red\" if col == \"max\" else \"blue\"\n        ax.axhline(df[col].mean(), lw=2, color=c)\n\n    ax.grid(True)\n    ax.set_ylabel(\"Temperature Change °F\")\n    ax.set_ylim(0 - extreme, extreme)\n    xloc = (ax.get_xlim()[1] + ax.get_xlim()[0]) / 2.0\n    ax.text(\n        xloc,\n        extreme - 5,\n        f\"Maximum Jump in {PDICT3[ctx['var']]} (avg: {df['max'].mean():.1f})\",\n        color=\"red\",\n        va=\"center\",\n        ha=\"center\",\n        bbox=dict(color=\"white\"),\n    )\n    ax.text(\n        xloc,\n        0 - extreme + 5,\n        f\"Maximum (Negative) Dip in {PDICT3[ctx['var']]} \"\n        f\"(avg: {df['min'].mean():.1f})\",\n        color=\"blue\",\n        va=\"center\",\n        ha=\"center\",\n        bbox=dict(color=\"white\"),\n    )\n\n    return fig, df.rename({\"datum\": agg})\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p32.py",
    "content": "\"\"\"\nThis plot presents a daily time series of variable of your choice.\nThe average temperature is simply the\naverage of the daily high and low.  The daily climatology is simply based\non the period of record observations for the site.\n\n<p><strong>Updated 30 Jan 2024:</strong> The returned data is now only for the\nvariable you selected for plotting.\n\"\"\"\n\nfrom datetime import date\n\nimport matplotlib.colors as mpcolors\nimport matplotlib.dates as mdates\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes, get_cmap\n\nfrom iemweb.autoplot import ARG_STATION\nfrom iemweb.autoplot.barchart import barchart_with_top10\n\nPDICT = {\n    \"avg\": \"Daily Average Temperature (F)\",\n    \"gdd\": \"Growing Degree Days (F)\",\n    \"high\": \"High Temperature (F)\",\n    \"low\": \"Low Temperature (F)\",\n    \"era5land_soilm4_avg\": \"ERA5-Land 0-7cm Soil Moisture (m3/m3)\",\n    \"era5land_soilm1m_avg\": \"ERA5-Land 0-1m Soil Moisture (m3/m3)\",\n    \"era5land_soilm1m_sw\": \"ERA5-Land 0-39inch Soil Water Depth (inch)\",\n    \"era5land_soilt4_avg\": \"ERA5-Land 0-7cm Soil Temperature (F)\",\n    \"era5land_srad\": \"ERA5-Land Solar Radiation (MJ/m2)\",\n    \"power_srad\": \"NASA POWER Solar Radiation (MJ/m2)\",\n}\nOPTDICT = {\n    \"diff\": \"Absolute Difference\",\n    \"sigma\": \"Difference in Standard Deviations\",\n    \"ptile\": \"Percentile\",\n    \"valrange\": \"Value within Observed Range\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=date.today().year,\n            label=\"Year to Plot:\",\n        ),\n        {\n            \"type\": \"sday\",\n            \"name\": \"sday\",\n            \"default\": \"0101\",\n            \"label\": \"Inclusive Start Day of Year to Plot:\",\n        },\n        {\n            \"type\": \"sday\",\n            \"name\": \"eday\",\n            \"default\": \"1231\",\n            \"label\": \"Inclusive End Day of Year to Plot:\",\n        },\n        {\n            \"type\": \"year\",\n            \"optional\": True,\n            \"name\": \"y2\",\n            \"default\": date.today().year - 1,\n            \"label\": \"Additional Year to Plot (supported for some plots):\",\n        },\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"high\",\n            options=PDICT,\n            label=\"Select Variable to Plot\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"gddbase\",\n            default=50,\n            label=\"Growing Degree Day Base (F)\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"gddceil\",\n            default=86,\n            label=\"Growing Degree Day Ceiling (F)\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"how\",\n            default=\"diff\",\n            options=OPTDICT,\n            label=\"How to express the difference\",\n        ),\n        dict(\n            type=\"cmap\",\n            name=\"cmap\",\n            default=\"jet\",\n            label=\"Color ramp to use for percentile plot\",\n        ),\n    ]\n    return desc\n\n\ndef plot_valrange(yeardf, year, varname, y2, ax, df):\n    ax.bar(\n        yeardf[year][\"day\"].values,\n        yeardf[year][f\"{varname}_range\"].values,\n        bottom=yeardf[year][f\"{varname}_min\"].values,\n        color=\"tan\",\n        width=1.0,\n        label=f\"Observed Range {df.iloc[0]['year']}-{df.iloc[-1]['year']}\",\n    )\n    ax.bar(\n        yeardf[year][\"day\"].values,\n        yeardf[year][f\"{varname}_std\"].values * 2.0,\n        bottom=(\n            yeardf[year][f\"{varname}_mean\"].values\n            - yeardf[year][f\"{varname}_std\"].values\n        ),\n        color=\"green\",\n        width=1.0,\n        label=\"+/- 1 Std Dev\",\n    )\n    ax.plot(\n        yeardf[year][\"day\"].values,\n        yeardf[year][varname].values,\n        color=\"k\",\n        label=str(year),\n    )\n    if y2 is not None:\n        ax.plot(\n            yeardf[y2][\"day\"].values,\n            yeardf[y2][varname].values,\n            color=\"b\",\n            label=str(y2),\n        )\n    ax.plot(\n        yeardf[year][\"day\"].values,\n        yeardf[year][f\"{varname}_mean\"].values,\n        color=\"r\",\n        label=\"Climatology\",\n    )\n    ax.legend(loc=\"best\", ncol=5)\n    ax.set_ylabel(PDICT[varname])\n\n\ndef plot_others(yeardf, year, varname, how, ctx, fig, ax):\n    \"\"\"Plot the other types of data.\"\"\"\n    values = yeardf[year][f\"{varname}_{how}\"].values\n    if how == \"ptile\" and \"cmap\" in ctx:\n        bins = range(0, 101, 10)\n        cmap = get_cmap(ctx[\"cmap\"])\n        norm = mpcolors.BoundaryNorm(bins, cmap.N)\n        colors = cmap(norm(values))\n        ax.bar(\n            yeardf[year][\"day\"].values,\n            values,\n            color=colors,\n            align=\"center\",\n        )\n        ax.set_yticks(bins)\n    else:\n        abovecolor = \"r\" if how == \"diff\" else \"b\"\n        belowcolor = \"b\" if how == \"diff\" else \"r\"\n        if varname.find(\"soilm\") > 0:\n            abovecolor = \"b\"\n            belowcolor = \"r\"\n        yeardf[year][\"color\"] = abovecolor\n        yeardf[year].loc[values < 0, \"color\"] = belowcolor\n        ax.set_position([0.1, 0.1, 0.7, 0.8])\n        ax = barchart_with_top10(\n            fig,\n            yeardf[year].rename(columns={f\"{varname}_{how}\": \"Diff\"}),\n            \"Diff\",\n            ax=ax,\n            color=yeardf[year][\"color\"].values,\n        )\n        meanval = yeardf[year][f\"{varname}_mean\"].mean()\n        ax.text(\n            0.99,\n            1.01,\n            f\"Mean: {meanval:.1f}\",\n            transform=ax.transAxes,\n            color=\"k\",\n            ha=\"right\",\n            va=\"bottom\",\n            bbox=dict(facecolor=\"white\", edgecolor=\"white\"),\n        )\n        ax.text(\n            0.9,\n            0.95,\n            f\"Days Above {(values > 0).sum()}\",\n            transform=ax.transAxes,\n            color=abovecolor,\n            ha=\"center\",\n            va=\"top\",\n            bbox=dict(facecolor=\"white\", edgecolor=\"white\"),\n        )\n        ax.text(\n            0.9,\n            0.05,\n            f\"Days Below {(values < 0).sum()}\",\n            transform=ax.transAxes,\n            color=belowcolor,\n            ha=\"center\",\n            va=\"top\",\n            bbox=dict(facecolor=\"white\", edgecolor=\"white\"),\n        )\n        if varname in [\"era5land_srad\", \"power_srad\"]:\n            ax.set_position([0.1, 0.4, 0.7, 0.5])\n            ax2 = fig.add_axes([0.1, 0.1, 0.7, 0.25])\n            ax2.plot(\n                yeardf[year][\"day\"].values,\n                yeardf[year][f\"{varname}_diff\"].cumsum().to_numpy(),\n                color=\"k\",\n            )\n            ax2.grid(True)\n            ax2.set_ylabel(\"Accum Departure (MJ)\")\n            ax2.xaxis.set_major_formatter(mdates.DateFormatter(\"%b\"))\n            ax2.xaxis.set_major_locator(mdates.DayLocator(1))\n    if how == \"diff\":\n        ax.set_ylabel(f\"{PDICT[varname]} Departure\")\n    elif how == \"ptile\":\n        ax.set_ylabel(f\"{PDICT[varname]} Percentile (100 highest)\")\n    else:\n        ax.set_ylabel(f\"{PDICT[varname]} Std Dev Departure\")\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    year = ctx[\"year\"]\n    varname = ctx[\"var\"]\n    how = ctx[\"how\"]\n    gddbase = ctx[\"gddbase\"]\n    gddceil = ctx[\"gddceil\"]\n\n    params = {\n        \"station\": station,\n        \"gddbase\": gddbase,\n        \"gddceil\": gddceil,\n        \"sday\": f\"{ctx['sday']:%m%d}\",\n        \"eday\": f\"{ctx['eday']:%m%d}\",\n    }\n    sqlvarname = \"high\" if varname in [\"avg\", \"gdd\"] else varname\n    if varname == \"era5land_soilm1m_sw\":\n        sqlvarname = \"era5land_soilm1m_avg\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            select day, year, sday,\n            (high+low)/2. as avg,\n            gddxx(:gddbase, :gddceil, high, low) as gdd, {sqlvarname}\n            from alldata where station = :station and\n            {sqlvarname} is not null and sday >= :sday and sday <= :eday\n            ORDER by day ASC\n        \"\"\",\n                sqlvarname=sqlvarname,\n            ),\n            conn,\n            params=params,\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    if varname == \"era5land_soilm1m_sw\":\n        df[varname] = df[\"era5land_soilm1m_avg\"] * 39.3701\n    # Compute the ranks of the daily values by sday\n    df[\"rank\"] = df.groupby(\"sday\")[varname].rank(method=\"min\")\n    yeardf = {}\n    climo = (\n        df[[\"sday\", varname]]\n        .groupby(\"sday\")\n        .agg([\"mean\", \"std\", \"min\", \"max\"])\n    )\n    climo.columns = climo.columns.droplevel()\n    y2 = ctx.get(\"y2\")\n    for yr in [year, y2]:\n        if yr is None:\n            continue\n        yeardf[yr] = (\n            df[df[\"year\"] == yr]\n            .set_index(\"sday\")\n            .copy()\n            .reindex(\n                pd.date_range(f\"{year}/1/1\", f\"{year}/12/31\").strftime(\"%m%d\")\n            )\n            .assign(\n                day=lambda _: (\n                    pd.date_range(f\"{year}/1/1\", f\"{year}/12/31\").values\n                )\n            )\n        )\n        if yeardf[yr][varname].isna().all():\n            raise NoDataFound(\"No Data Found.\")\n        yeardf[yr].index.name = \"MonDay\"\n        yeardf[yr][f\"{varname}_ptile\"] = (\n            yeardf[yr][\"rank\"] / df[\"rank\"].max() * 100.0\n        )\n        yeardf[yr][f\"{varname}_mean\"] = climo[\"mean\"]\n        yeardf[yr][f\"{varname}_min\"] = climo[\"min\"]\n        yeardf[yr][f\"{varname}_max\"] = climo[\"max\"]\n        yeardf[yr][f\"{varname}_std\"] = climo[\"std\"]\n        yeardf[yr][f\"{varname}_range\"] = climo[\"max\"] - climo[\"min\"]\n        yeardf[yr][f\"{varname}_diff\"] = yeardf[yr][varname] - climo[\"mean\"]\n        yeardf[yr][f\"{varname}_sigma\"] = (\n            yeardf[yr][f\"{varname}_diff\"] / climo[\"std\"]\n        )\n\n    tt = \"Departure\" if how != \"ptile\" else \"Percentile\"\n    if how == \"valrange\":\n        tt = \"\"\n    title = f\"{ctx['_sname']}:: Year {year} Daily {PDICT[varname]} {tt}\"\n    d2 = yeardf[year].loc[yeardf[year][varname].notna(), \"day\"]\n    subtitle = f\"{year} data till {d2.max():%-d %b %Y}\"\n    if varname.startswith(\"era5land_soilm\"):\n        slt = ctx[\"_nt\"].sts[station][\"attributes\"].get(\"ERA5LAND_SOILTYPE\")\n        subtitle += f\", ERA5-Land Soil Type: {slt}\"\n    (fig, ax) = figure_axes(apctx=ctx, title=title, subtitle=subtitle)\n    if how == \"valrange\":\n        plot_valrange(yeardf, year, varname, y2, ax, df)\n    else:\n        plot_others(yeardf, year, varname, how, ctx, fig, ax)\n    if varname == \"gdd\":\n        ax.set_xlabel(f\"Growing Degree Day Base: {gddbase} Ceiling: {gddceil}\")\n    ax.grid(True)\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%b\"))\n    ax.xaxis.set_major_locator(mdates.DayLocator(1))\n\n    return fig, yeardf[year]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p33.py",
    "content": "\"\"\"\nThis plot presents the largest drop in low\ntemperature during a period between 1 July and 30 June of the next year,\nbut not including the July data of that year. The drop compares the lowest\nlow previous to the date with the low for that date.  For example,\nif your coldest low to date was 40, you would not expect to see a\nlow temperature of 20 the next night without first setting colder\ndaily low temperatures. See also\n<a class=\"alert-link\" href=\"/plotting/auto/?q=103\">autoplot 103</a>\nfor more details.\n\"\"\"\n\nfrom calendar import month_abbr\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=date.today().year,\n            label=\"Year to Highlight\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    year = ctx[\"year\"]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        with obs as (\n        select day, (case when month < 7 then year - 1 else year end)\n            as myyear,\n        low, month from alldata where station = :station\n        ), obs2 as (\n            select day, myyear, low, month,\n            low - min(low) OVER\n            (PARTITION by myyear ORDER by day ASC ROWS between 400 PRECEDING\n            and 1 PRECEDING) as drop from obs\n        ), agg as (\n            select day, myyear, low, drop,\n            rank() OVER (PARTITION by myyear ORDER by drop ASC) as rank\n            from obs2 WHERE month != 7\n        )\n        select myyear as year, day, low, drop as largest_change\n        from agg where rank = 1\n        \"\"\"),\n            conn,\n            params={\"station\": station},\n            index_col=\"year\",\n            parse_dates=\"day\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df[\"largest_change\"] = df[\"largest_change\"] * -1\n    title = (\n        f\"{ctx['_sname']}\\n\"\n        \"Max 1 Aug till 30 Jun Low Temp Drop Exceeding \"\n        \"Previous Min Low for Season\"\n    )\n\n    fig = figure(title=title, apctx=ctx)\n    ax = fig.add_axes((0.1, 0.1, 0.4, 0.75))\n    df2 = df.groupby(\"year\").max()\n    ax.bar(\n        df2.index.values,\n        df2[\"largest_change\"],\n        fc=\"b\",\n        ec=\"b\",\n        zorder=1,\n    )\n    if year in df.index:\n        ax.bar(\n            year,\n            df.at[year, \"largest_change\"],\n            fc=\"red\",\n            ec=\"red\",\n            zorder=2,\n        )\n        ax.set_xlabel(f\"{year} value is {df.at[year, 'largest_change']}\")\n    mv = df[\"largest_change\"].mean()\n    ax.axhline(mv, lw=2, color=\"k\")\n    ax.grid(True)\n    ax.set_ylabel(f\"Largest Low Temp Drop °F, Avg: {mv:.1f}\")\n    ax.set_xlim(df.index.values.min() - 1, df.index.values.max() + 1)\n\n    ax = fig.add_axes((0.58, 0.12, 0.4, 0.32))\n    ax.scatter(\n        [int(x) for x in df[\"day\"].dt.strftime(\"%j\").values],\n        df[\"largest_change\"].values,\n    )\n    ax.set_xticks([1, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335])\n    ax.set_xticklabels(month_abbr[1:], rotation=45)\n    ax.set_ylabel(\"Drop °F\")\n    ax.set_xlabel(\"On Date\")\n    ax.grid(True)\n\n    ax = fig.add_axes((0.58, 0.56, 0.4, 0.32))\n    ax.scatter(\n        df[\"low\"].values,\n        df[\"largest_change\"].values,\n    )\n    ax.set_ylabel(\"Drop °F\")\n    ax.set_xlabel(\"At Temperature °F\")\n    ax.grid(True)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p34.py",
    "content": "\"\"\"\nThis plot displays the maximum number of consec\ndays above or below some threshold for high or low temperature.\n\"\"\"\n\nimport calendar\nfrom datetime import date, datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure, fitbox\n\nfrom iemweb.autoplot import ARG_STATION, get_monofont\n\nPDICT = {\n    \"high_over\": \"High Temperature At or Above\",\n    \"high_under\": \"High Temperature Below\",\n    \"avgt_over\": \"Daily Average Temperature At or Above\",\n    \"avgt_under\": \"Daily Average Temperature Below\",\n    \"low_over\": \"Low Temperature At or Above\",\n    \"low_under\": \"Low Temperature Below\",\n}\nTDICT = {\n    \"threshold\": \"Compare against prescribed threshold\",\n    \"average\": \"Compare against climatological average\",\n}\nADICT = {\n    \"por\": \"Period of Record\",\n    \"1951\": \"1951-present\",\n    \"ncei81\": \"NCEI 1981-2010 Climate Normals\",\n    \"ncei91\": \"NCEI 1991-2020 Climate Normals\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"high_under\",\n            label=\"Which Streak to Compute:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            options=TDICT,\n            default=\"threshold\",\n            name=\"which\",\n            label=\"Which baseline to compare against?\",\n        ),\n        dict(\n            type=\"select\",\n            options=ADICT,\n            default=\"por\",\n            label=\"For Climatology Comparison, which climatolog to use?\",\n            name=\"climo\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"threshold\",\n            default=32,\n            label=\"Temperature Threshold:\",\n        ),\n    ]\n    return desc\n\n\ndef greater_than_or_equal(one, two):\n    \"\"\"Helper.\"\"\"\n    return one >= two\n\n\ndef less_than(one, two):\n    \"\"\"Helper.\"\"\"\n    return one < two\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    threshold = ctx[\"threshold\"]\n    varname = ctx[\"var\"]\n\n    # Get averages\n    if ctx[\"climo\"] == \"por\":\n        cltable = \"climate\"\n        clstation = station\n    elif ctx[\"climo\"] == \"1951\":\n        cltable = \"climate51\"\n        clstation = station\n    elif ctx[\"climo\"] == \"ncei81\":\n        cltable = \"ncdc_climate81\"\n        clstation = ctx[\"_nt\"].sts[station][\"ncdc81\"]\n    else:  # ncei91\n        cltable = \"ncei_climate91\"\n        clstation = ctx[\"_nt\"].sts[station][\"ncei91\"]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        obs = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            WITH myclimo as (\n                select to_char(valid, 'mmdd') as sday, high, low,\n                (high + low) / 2. as avgt from\n                {table} WHERE station = :clstation\n            )\n            SELECT extract(doy from day)::int as d, o.high, o.low, o.day,\n            (o.high + o.low) / 2. as avgt,\n            c.high as climo_high, c.low as climo_low, c.avgt as climo_avgt\n            from alldata o JOIN myclimo c on (o.sday = c.sday)\n            where o.station = :st and o.high is not null ORDER by day ASC\n            \"\"\",\n                table=cltable,\n            ),\n            conn,\n            params={\"clstation\": clstation, \"st\": station},\n            index_col=\"day\",\n        )\n    if obs.empty:\n        raise NoDataFound(\"No observations found for given station.\")\n    obs[\"threshold\"] = threshold\n\n    maxperiod = [0] * 367\n    enddate = [\"\"] * 367\n    running = 0\n    col = varname.replace(\"_over\", \"\").replace(\"_under\", \"\")\n    myfunc = greater_than_or_equal if varname.find(\"over\") > 0 else less_than\n    compcol = \"threshold\"\n    if ctx[\"which\"] == \"average\":\n        compcol = f\"climo_{col}\"\n    streaks = []\n    running = 0\n    day = None\n    for day, row in obs.iterrows():\n        doy = int(row[\"d\"])\n        if myfunc(row[col], row[compcol]):\n            running += 1\n        else:\n            if running > 0:\n                streaks.append([running, day - timedelta(days=1)])\n            running = 0\n        if running > maxperiod[doy]:\n            maxperiod[doy] = running\n            enddate[doy] = str(day)\n    if running > 0:\n        streaks.append([running, day])\n\n    sts = datetime(2012, 1, 1)\n    xticks = []\n    for i in range(1, 13):\n        ts = sts.replace(month=i)\n        xticks.append(ts.timetuple().tm_yday)\n\n    sdf = pd.DataFrame(streaks, columns=[\"period\", \"enddate\"])\n    df = pd.DataFrame(\n        dict(\n            mmdd=pd.date_range(\"1/1/2000\", \"12/31/2000\").strftime(\"%m%d\"),\n            jdate=pd.Series(np.arange(1, 367)),\n            maxperiod=pd.Series(maxperiod[1:]),\n            enddate=pd.Series(enddate[1:]),\n        )\n    )\n    df[\"startdate\"] = df[\"enddate\"]\n    fig = figure(apctx=ctx)\n    ax = fig.add_axes((0.1, 0.1, 0.55, 0.8))\n    ax.bar(np.arange(1, 367), maxperiod[1:], fc=\"b\", ec=\"b\")\n    ax.grid(True)\n    ax.set_ylabel(\"Consecutive Days\")\n    ttitle = f\"{threshold}°F\"\n    if ctx[\"which\"] == \"average\":\n        ttitle = f\"Average ({ADICT[ctx['climo']]})\"\n    title = (\n        f\"{ctx['_sname']} ({obs.index.values[0]:%Y %b %d}-\"\n        f\"{obs.index.values[-1]:%Y %b %d})\\n\"\n        f\"Maximum Straight Days with {PDICT[varname]} {ttitle}\"\n    )\n    fitbox(fig, title, 0.1, 0.92, 0.9, 0.97)\n    ax.set_xticks(xticks)\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_xlim(0, 366)\n\n    # List top 20 periods\n    ypos = 0.8\n    fig.text(0.7, ypos, \"Top 20 Distinct Periods\\nDays - Inclusive Period\")\n    ypos -= 0.06\n    monofont = get_monofont()\n    today = date.today()\n    for idx, row in (\n        sdf.sort_values(\"period\", ascending=False).head(20).iterrows()\n    ):\n        d2 = row[\"enddate\"]\n        d1 = d2 - timedelta(days=row[\"period\"] - 1)\n        df.at[idx, \"startdate\"] = f\"{d1:%Y-%m-%d}\"\n        fig.text(\n            0.7,\n            ypos,\n            f\"{row['period']} - {d1:%Y %b %d} -> {d2:%Y %b %d}\",\n            color=\"red\" if d2.year == today.year else \"k\",\n            fontproperties=monofont,\n        )\n        ypos -= 0.03\n    fig.text(0.7, ypos, \"* Overlapping Periods Not Listed\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p35.py",
    "content": "\"\"\"\nThis plot presents a histogram of the change\nin some observed variable over a given number of hours.  The histogram is\nconstructed by computing the 99.9th percentile of the absolute value of the\nchange in the variable over the given number of hours.  This max value is\nthen used to create a histogram with bins of a given width.  The histogram\nis then normalized by the number of years of data available.\n\"\"\"\n\nimport calendar\nfrom datetime import datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nPDICT = {\n    \"tmpf\": \"Air Temp (F)\",\n    \"alti\": \"Altimeter (in)\",\n    \"dwpf\": \"Dew Point Temp (°F)\",\n    \"feel\": \"Feels Like Temp (°F)\",\n    \"mslp\": \"Mean Sea Level Pressure (mb)\",\n    \"relh\": \"Relative Humidity (%)\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 86400, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"tmpf\",\n            name=\"var\",\n            label=\"Select Variable\",\n        ),\n        dict(type=\"int\", name=\"hours\", default=24, label=\"Hours:\"),\n        dict(\n            type=\"float\",\n            name=\"interval\",\n            default=1,\n            label=\"Histogram Binning Width (unit of variable)\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    hours = ctx[\"hours\"]\n    interval = ctx[\"interval\"]\n    varname = ctx[\"var\"]\n    if interval > 10 or interval < 0.1:\n        raise NoDataFound(\n            \"Invalid interval provided, positive number less than 10\"\n        )\n\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        obs = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH one as (\n            select valid, {varname} as t from alldata where\n            station = :station and {varname} is not null and report_type = 3\n            ),\n            two as (SELECT valid + :hours as v, t from one\n            )\n\n        SELECT extract(week from one.valid) as week, two.t - one.t as delta,\n        valid\n        from one JOIN two on (one.valid = two.v)\n        \"\"\",\n                varname=varname,\n            ),\n            conn,\n            params={\n                \"station\": station,\n                \"hours\": timedelta(hours=hours),\n            },\n            parse_dates=\"valid\",\n        )\n    if obs.empty:\n        raise NoDataFound(\"No non-null data found\")\n\n    sts = datetime(2012, 1, 1)\n    xticks = []\n    for i in range(1, 13):\n        ts = sts.replace(month=i)\n        xticks.append(ts.timetuple().tm_yday)\n\n    # We want bins centered on zero\n    p99 = obs[\"delta\"].abs().quantile(0.999)\n    bins = np.arange(0 - p99, p99, interval)\n\n    hist, xedges, yedges = np.histogram2d(\n        obs[\"week\"].to_numpy(),\n        obs[\"delta\"].to_numpy(),\n        [np.arange(54), np.array(bins)],\n    )\n    # create a dataframe from this 2d histogram\n    x, y = np.meshgrid(xedges[:-1], yedges[:-1])\n    resultdf = pd.DataFrame(\n        {\n            \"week\": np.ravel(x),\n            \"delta\": np.ravel(y),\n            \"count\": np.ravel(hist),\n        }\n    )\n    years = obs[\"valid\"].dt.year.nunique()\n    hist = np.ma.array(hist / years)\n    hist.mask = np.where(hist < (1.0 / years / 7.0 / 24.0), True, False)\n\n    title = (\n        f\"{ctx['_sname']} ({obs['valid'].min():%Y}-\"\n        f\"{obs['valid'].max():%Y}):: Histogram\"\n    )\n    subtitle = (\n        f\"(bin={interval}) of {hours} Hour {PDICT[varname]} Change, \"\n        f\"99.9th percentile: {p99:.1f}, n={len(obs.index)}, years={years}\"\n    )\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    res = ax.pcolormesh((xedges - 1) * 7, yedges, hist.transpose())\n    fig.colorbar(res, label=\"Hours per Week\")\n    ax.grid(True)\n    ax.set_ylabel(f\"{PDICT[varname]} Change\")\n\n    ax.set_xticks(xticks)\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_xlim(0, 366)\n\n    ax.set_ylim(0 - p99, p99)\n\n    return fig, resultdf\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p36.py",
    "content": "\"\"\"\nThis plot summarizes the frequency of one month\nbeing warmer/wetter than another month for that calendar year.\n\"\"\"\n\nimport calendar\nfrom datetime import date, datetime\n\nimport matplotlib.patheffects as PathEffects\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"high\": \"High Temperature Warmer\",\n    \"low\": \"Low Temperature Warmer\",\n    \"avg\": \"Average Temperature Warmer\",\n    \"precip\": \"Total Precipitation Wetter\",\n}\nCOLSQL = {\n    \"high\": \"avg(high)\",\n    \"low\": \"avg(low)\",\n    \"avg\": \"avg((high+low)/2.)\",\n    \"precip\": \"sum(precip)\",\n}\nPDICT2 = {\n    \"no\": \"Don't include current month\",\n    \"yes\": \"Include current month\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        {\n            \"type\": \"select\",\n            \"name\": \"var\",\n            \"default\": \"avg\",\n            \"options\": PDICT,\n            \"label\": \"Which Variable to Compare\",\n        },\n        {\n            \"type\": \"select\",\n            \"name\": \"inc\",\n            \"default\": \"no\",\n            \"options\": PDICT2,\n            \"label\": \"Include Current Month?\",\n        },\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"coop\")\ndef plotter(ctx: dict, conn: Connection = None):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n\n    varname = ctx[\"var\"]\n    last_date = date.today().replace(day=1)\n    if ctx[\"inc\"] == \"yes\":\n        last_date = date.today()\n\n    res = conn.execute(\n        sql_helper(\n            \"\"\"\n        SELECT year, month, {cols} from alldata WHERE\n        station = :station and day < :ets\n        GROUP by year, month ORDER by year ASC\n        \"\"\",\n            cols=COLSQL[varname],\n        ),\n        {\"station\": station, \"ets\": last_date},\n    )\n    if res.rowcount == 0:\n        raise NoDataFound(\"No results found for query\")\n\n    baseyear = None\n    for row in res:\n        if baseyear is None:\n            baseyear = row[0]\n            avgs = np.ones((datetime.now().year - baseyear + 1, 12)) * -99.0\n        avgs[row[0] - baseyear, row[1] - 1] = row[2]\n\n    matrix = np.zeros((12, 12))\n    lastyear = np.zeros((12, 12))\n    rows = []\n    for i in range(12):\n        for j in range(12):\n            # How many years was i warmer than j\n            t = np.where(\n                np.logical_and(\n                    avgs[:, j] > -99,\n                    np.logical_and(avgs[:, i] > avgs[:, j], avgs[:, i] > -99),\n                ),\n                1,\n                0,\n            )\n            matrix[i, j] = np.sum(t)\n            lastyear[i, j] = datetime.now().year - np.argmax(t[::-1])\n            lyear = lastyear[i, j] if matrix[i, j] > 0 else None\n            rows.append(\n                dict(\n                    month1=(i + 1),\n                    month2=(j + 1),\n                    years=matrix[i, j],\n                    lastyear=lyear,\n                )\n            )\n    df = pd.DataFrame(rows)\n\n    subtitle = f\"{ctx['_sname']} [{baseyear}-]\"\n    title = f\"Years that Month with {PDICT[varname]} than other Month\"\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    x, y = np.meshgrid(np.arange(-0.5, 12.5, 1), np.arange(-0.5, 12.5, 1))\n    res = ax.pcolormesh(x, y, np.transpose(matrix))\n    for i in range(12):\n        for j in range(12):\n            txt = ax.text(\n                i,\n                j,\n                \"%s\" % (\"%.0f\" % (matrix[i, j],) if i != j else \"-\"),\n                va=\"center\",\n                ha=\"center\",\n                color=\"white\",\n            )\n            txt.set_path_effects(\n                [PathEffects.withStroke(linewidth=2, foreground=\"k\")]\n            )\n            if matrix[i, j] > 0 and matrix[i, j] < 10:\n                txt = ax.text(\n                    i,\n                    j - 0.5,\n                    f\"{lastyear[i, j]:.0f}\",\n                    fontsize=9,\n                    va=\"bottom\",\n                    ha=\"center\",\n                    color=\"white\",\n                )\n                txt.set_path_effects(\n                    [PathEffects.withStroke(linewidth=2, foreground=\"k\")]\n                )\n\n    ax.set_xticks(range(12))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_yticks(range(12))\n    ax.set_yticklabels(calendar.month_abbr[1:])\n    ax.set_xlim(-0.5, 11.5)\n    ax.set_ylim(-0.5, 11.5)\n    fig.colorbar(res)\n    ax.set_xlabel(\n        f\"This Month was {'Warmer' if varname != 'precip' else 'Wetter'} \"\n        \"than...\"\n    )\n    ax.set_ylabel(\"...this month for same year\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p37.py",
    "content": "\"\"\"\nThis chart displays the combination of\nModel Output Statistics (MOS) forecasts and actual observations\nby the automated station the MOS forecast is for.\n\n<p>The case of ~Daily Max/Min Air Temperature is difficult to explain.  The\nNBS/NBE values are slightly different periods than the GFS/NAM values.  Some\ncare is taken to attempt to properly align the MOS values to the observations\nand consider METAR 6-hour max/min temperatures when appropriate.</p>\n\n<p>The bars represent the ensemble of previously made forecasts valid for the\ngiven time.\n\n<p>The IEM <a href=\"/mos/\">MOS Mainpage</a> has more details and services\nfor this dataset.</p>\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport matplotlib.dates as mdates\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.ticker import AutoMinorLocator, MaxNLocator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nPDICT = {\n    \"NAM\": \"NAM (9 Dec 2008 - current)\",\n    \"GFS\": \"GFS (16 Dec 2003 - current)\",\n    \"LAV\": \"GFS LAMP (23 Jul 2020 - current)\",\n    \"MEX\": \"GFS Extended (12 Jul 2020 - current)\",\n    \"NBE\": \"NBE (23 Jul 2020 - current)\",\n    \"NBS\": \"NBS (23 Jul 2020 - current)\",\n    \"ETA\": \"ETA (24 Feb 2002 - 9 Dec 2008)\",\n    \"AVN\": \"AVN (1 Jun 2000 - 16 Dec 2003)\",\n}\nPDICT2 = {\n    \"t\": \"~Daily Max/Min Air Temperature [°F]\",\n    \"tmp\": \"Air Temperature [°F]\",\n    \"dpt\": \"Dew Point Temperature [°F]\",\n    \"wsp\": \"10 meter Wind Speed [kts]\",\n}\nLOOKUP = {\n    \"dpt\": \"dwpf\",\n    \"tmp\": \"tmpf\",\n    \"wsp\": \"sknt\",\n}\n# TODO this is hackishly letting my CDT/CST database get the dates right\nT_SQL = \"\"\"\n    SELECT date(ftime),\n    min(case when\n        extract(hour from ftime at time zone 'UTC') = 12\n        then coalesce(n_x, txn) else null end) as morning_min,\n    max(case when\n        extract(hour from ftime at time zone 'UTC') = 12\n        then coalesce(n_x, txn) else null end) as morning_max,\n    min(case when\n        extract(hour from ftime at time zone 'UTC') = 0\n        then coalesce(n_x, txn) else null end) as afternoon_min,\n    max(case when\n        extract(hour from ftime at time zone 'UTC') = 0\n        then coalesce(n_x, txn) else null end) as afternoon_max\n    from alldata WHERE station = :station and runtime BETWEEN :sts and :ets\n    and model = :model and (txn is null or txn > -98) GROUP by date\n    \"\"\"\nSQL = \"\"\"\n    SELECT ftime at time zone 'UTC' as date, min(RPL) as morning_min,\n    max(RPL) as afternoon_max\n    from alldata WHERE station = :station and runtime BETWEEN :sts and :ets\n    and model = :model GROUP by ftime ORDER by ftime\n    \"\"\"\nT_SQL_OB = \"\"\"\n    SELECT date(valid),\n    min(case when extract(hour from valid at time zone 'UTC') between 0 and 12\n        then tmpf else null end) as morning_min,\n    max(case when extract(hour from valid at time zone 'UTC') between 12 and 24\n        then tmpf else null end) as afternoon_max\n    from alldata WHERE station = :station and valid between :sts and :ets\n    GROUP by date\n    \"\"\"\n# Tricky business here\n# TODO Guam\n# Min is 0-18z reported at 12z\n# Max is 12-6z next day reported at 0z\n# NOTE: 7 hour to pull date back\nNBM_TXN_OB_SQL = \"\"\"\n    WITH obs as (\n        SELECT\n        date_trunc('hour',\n            (valid + '10 minutes'::interval) at time zone 'UTC') as utc_valid,\n        tmpf, max_tmpf_6hr, min_tmpf_6hr from alldata WHERE station = :station\n        and valid between :sts and :ets and (extract(minute from valid) >= 50\n        or extract(minute from valid) < 10) and report_type in (3, 4)\n    ), highs as (\n        select date(utc_valid - '7 hours'::interval),\n        max(greatest(tmpf,\n            case when extract(hour from utc_valid) in (18, 0, 6)\n            then max_tmpf_6hr else null end)) as high_0z\n        from obs WHERE extract(hour from utc_valid) > 12 or\n        extract(hour from utc_valid) <= 6 GROUP by date\n    ), lows as (\n        select date(utc_valid),\n        min(least(tmpf,\n            case when extract(hour from utc_valid) in (6, 12, 18)\n            then min_tmpf_6hr else null end)) as low_12z\n        from obs WHERE extract(hour from utc_valid) <= 18 GROUP by date\n    )\n    select h.date, l.low_12z, h.high_0z from highs h JOIN lows l on\n    (h.date = l.date) ORDER by date asc\n\n\"\"\"\nSQL_OB = \"\"\"\n    select date_trunc('hour',\n    valid at time zone 'UTC' + '10 minutes'::interval) as datum,\n    RPL from alldata where station = :station and valid between :sts and :ets\n    and (extract(minute from valid) >= 50 or\n         extract(minute from valid) < 10) and RPL is not null\n    and report_type in (3, 4)\n    \"\"\"\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 3600}\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"month\",\n            name=\"month\",\n            label=\"Select Month:\",\n            default=today.month,\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            label=\"Select Year:\",\n            default=today.year,\n            min=2000,\n        ),\n        dict(\n            type=\"select\",\n            name=\"model\",\n            default=\"NAM\",\n            label=\"Select MOS Model:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT2,\n            default=\"t\",\n            label=\"Which MOS variable to plot:\",\n            name=\"var\",\n        ),\n    ]\n    return desc\n\n\ndef plot_others(varname, ax, mosdata, month1, month, obs):\n    \"\"\"Non-Temp logic\"\"\"\n    top = []\n    bottom = []\n    _obs = []\n    x = []\n    now = datetime(month1.year, month1.month, month1.day)\n    while now.month == month:\n        x.append(now)\n        bottom.append(mosdata.get(now, [np.nan, np.nan])[0])\n        top.append(mosdata.get(now, [np.nan, np.nan])[1])\n        _obs.append(obs.get(now, np.nan))\n        now += timedelta(hours=6)\n    df = pd.DataFrame(\n        {\n            \"valid\": pd.to_datetime(x),\n            f\"mos_min_{varname}\": bottom,\n            f\"mos_max_{varname}\": top,\n            f\"ob_{varname}\": _obs,\n        }\n    )\n    df[\"mos_delta\"] = df[f\"mos_max_{varname}\"] - df[f\"mos_min_{varname}\"]\n    # TODO do mos_delta=0 get visibly plotted?\n    if df[f\"mos_min_{varname}\"].isna().all():\n        raise NoDataFound(\"No MOS data found for query.\")\n\n    combos = df[df[\"mos_delta\"].notna()]\n\n    ax.bar(\n        combos[\"valid\"].to_numpy(),\n        combos[\"mos_delta\"].to_numpy(),\n        facecolor=\"pink\",\n        width=0.25,\n        bottom=combos[f\"mos_min_{varname}\"].to_numpy(),\n        label=\"Range\",\n        zorder=1,\n        alpha=0.5,\n        align=\"center\",\n    )\n    ax.scatter(\n        combos[\"valid\"].to_numpy(),\n        combos[f\"ob_{varname}\"].to_numpy(),\n        zorder=2,\n        s=40,\n        c=\"red\",\n        label=\"Actual\",\n    )\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%-d\"))\n    ax.set_ylabel(PDICT2[varname])\n\n    return df\n\n\ndef plot_temps(ax, mosdata, month1, month, obs, model):\n    \"\"\"Temp logic\"\"\"\n    htop = []\n    hbottom = []\n    ltop = []\n    lbottom = []\n    hobs = []\n    lobs = []\n    now = month1.date()\n    valid = []\n    while now.month == month:\n        valid.append(now)\n        lbottom.append(\n            mosdata.get(now, {}).get(\"morning\", [np.nan, np.nan])[0]\n        )\n        ltop.append(mosdata.get(now, {}).get(\"morning\", [np.nan, np.nan])[1])\n\n        hbottom.append(\n            mosdata.get(now, {}).get(\"afternoon\", [np.nan, np.nan])[0]\n        )\n        htop.append(mosdata.get(now, {}).get(\"afternoon\", [np.nan, np.nan])[1])\n\n        hobs.append(obs.get(now, {}).get(\"max\", np.nan))\n        lobs.append(obs.get(now, {}).get(\"min\", np.nan))\n        now += timedelta(days=1)\n    df = pd.DataFrame(\n        {\n            \"valid\": pd.to_datetime(valid),\n            \"low_min\": lbottom,\n            \"low_max\": ltop,\n            \"high_min\": hbottom,\n            \"high_max\": htop,\n            \"high\": hobs,\n            \"low\": lobs,\n        }\n    )\n    df[\"high_delta\"] = df[\"high_max\"] - df[\"high_min\"]\n    df[\"low_delta\"] = df[\"low_max\"] - df[\"low_min\"]\n    label = \"Daytime High\"\n    if model in [\"NBE\", \"NBS\"]:\n        label = \"12z-6z High\"\n    ax.bar(\n        df[\"valid\"].dt.day + 0.1,\n        df[\"high_delta\"],\n        facecolor=\"pink\",\n        width=0.7,\n        bottom=df[\"high_min\"],\n        zorder=1,\n        alpha=0.5,\n        label=label,\n        align=\"center\",\n    )\n    label = \"Morning Low\"\n    if model in [\"NBE\", \"NBS\"]:\n        label = \"0z-18z Low\"\n    ax.bar(\n        df[\"valid\"].dt.day - 0.1,\n        df[\"low_delta\"],\n        facecolor=\"blue\",\n        width=0.7,\n        bottom=df[\"low_min\"],\n        zorder=1,\n        alpha=0.3,\n        label=label,\n        align=\"center\",\n    )\n\n    ax.scatter(\n        df[\"valid\"].dt.day + 0.1,\n        df[\"high\"],\n        zorder=2,\n        s=40,\n        c=\"red\",\n        label=\"Actual High\",\n    )\n    ax.scatter(\n        df[\"valid\"].dt.day - 0.1,\n        df[\"low\"],\n        zorder=2,\n        s=40,\n        c=\"blue\",\n        label=\"Actual Low\",\n    )\n\n    next1 = now.replace(day=1)\n    days = (next1 - month1.date()).days\n    ax.set_xlim(0, days + 0.5)\n    ax.set_xticks(range(1, days + 1, 2))\n\n    ax.set_ylabel(\"Temperature °F\")\n\n    return df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    year = ctx[\"year\"]\n    month = ctx[\"month\"]\n    model = ctx[\"model\"]\n\n    # Extract the range of forecasts for each day for approximately\n    # the given month\n    month1 = datetime(year, month, 1)\n    sts = month1 - timedelta(days=10)\n    ets = month1 + timedelta(days=32)\n    station4 = f\"K{station}\" if len(station) == 3 else station\n    is_temp = ctx[\"var\"] == \"t\"\n    params = {\"station\": station4, \"sts\": sts, \"ets\": ets, \"model\": model}\n    mosdata = {}\n    with get_sqlalchemy_conn(\"mos\") as conn:\n        res = conn.execute(\n            sql_helper(T_SQL if is_temp else SQL.replace(\"RPL\", ctx[\"var\"])),\n            params,\n        )\n        for row in res.mappings():\n            if is_temp:\n                mosdata[row[\"date\"]] = {\n                    \"morning\": [\n                        row[\"morning_min\"]\n                        if row[\"morning_min\"] is not None\n                        else np.nan,\n                        row[\"morning_max\"]\n                        if row[\"morning_max\"] is not None\n                        else np.nan,\n                    ],\n                    \"afternoon\": [\n                        row[\"afternoon_min\"]\n                        if row[\"afternoon_min\"] is not None\n                        else np.nan,\n                        row[\"afternoon_max\"]\n                        if row[\"afternoon_max\"] is not None\n                        else np.nan,\n                    ],\n                }\n            else:\n                mosdata[row[\"date\"]] = [\n                    row[\"morning_min\"],\n                    row[\"afternoon_max\"],\n                ]\n    # Go and figure out what the observations where for this month, tricky!\n    params[\"station\"] = station\n    obs = {}\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        if model in [\"NBE\", \"NBS\"] and is_temp:\n            res = conn.execute(sql_helper(NBM_TXN_OB_SQL), params)\n        else:\n            res = conn.execute(\n                sql_helper(\n                    T_SQL_OB\n                    if is_temp\n                    else SQL_OB.replace(\"RPL\", LOOKUP[ctx[\"var\"]])\n                ),\n                params,\n            )\n        for row in res:\n            if is_temp:\n                obs[row[0]] = {\n                    \"min\": row[1] if row[1] is not None else np.nan,\n                    \"max\": row[2] if row[2] is not None else np.nan,\n                }\n            else:\n                obs[row[0]] = row[1]\n\n    mlabel = PDICT[model][: PDICT[model].find(\" (\")]\n    title = (\n        f\"{ctx['_sname']} :: {PDICT2[ctx['var']]}\\n\"\n        f\"{mlabel} Forecast MOS Range for {month1:%B %Y}\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n\n    if is_temp:\n        df = plot_temps(ax, mosdata, month1, month, obs, model)\n    else:\n        df = plot_others(ctx[\"var\"], ax, mosdata, month1, month, obs)\n    ax.set_xlabel(f\"Day of {month1:%B %Y}\")\n\n    # Shrink current axis's height by 10% on the bottom\n    box = ax.get_position()\n    ax.set_position(\n        [box.x0, box.y0 + box.height * 0.1, box.width, box.height * 0.9]\n    )\n\n    # Put a legend below current axis\n    ax.legend(\n        loc=\"upper center\",\n        bbox_to_anchor=(0.5, -0.1),\n        fancybox=True,\n        shadow=True,\n        ncol=4,\n        scatterpoints=1,\n        fontsize=12,\n    )\n    ax.grid()\n    ax.yaxis.set_major_locator(MaxNLocator(integer=True))\n    ticks = ax.yaxis.get_majorticklocs()\n    if len(ticks) > 2:\n        delta = ticks[1] - ticks[0]\n        interval = delta if delta < 6 else int(delta / 2)\n        ax.yaxis.set_minor_locator(AutoMinorLocator(interval))\n        ax.tick_params(which=\"minor\", color=\"tan\")\n        ax.grid(which=\"minor\", axis=\"y\", color=\"tan\", linestyle=\":\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p38.py",
    "content": "\"\"\"\nThis plot presents daily estimates of solar radiation for a given year\nfor the 'climodat' stations tracked by the IEM.  These\nstations only report temperature, precipitation, and snowfall, but many\nusers are interested in solar radiation data as well.  So estimates\nare pulled from various reanalysis and forecast model analyses to generate\nthe numbers presented.  There are four sources of solar radiation made\navailable for this plot.  The HRRR data is the only one in 'real-time',\nthe MERRAv2/NARR lag by about a month, and the ERA5 Land lags by 8-9 days.\n\"\"\"\n\nimport calendar\nimport itertools\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"best\": \"Use ERA5 Land, then HRRR\",\n    \"era5land_srad\": \"ERA5 Land (1951-)\",\n    \"hrrr_srad\": \"HRRR (2013-)\",\n    \"merra_srad\": \"MERRA v2 (1980-)\",\n    \"narr_srad\": \"NARR (1979-)\",\n}\nPDICT2 = {\n    \"era5land_srad\": \"ERA5 Land (1951-)\",\n    \"hrrr_srad\": \"HRRR (2013-)\",\n    \"merra_srad\": \"MERRA v2 (1980-)\",\n    \"narr_srad\": \"NARR (1979-)\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"best\",\n            name=\"var\",\n            label=\"Select Radiation Source for Timeseries\",\n        ),\n        {\n            \"type\": \"select\",\n            \"options\": PDICT2,\n            \"default\": \"era5land_srad\",\n            \"name\": \"climo\",\n            \"label\": \"Select Radiation Source for Climatology\",\n        },\n        {\n            \"type\": \"year\",\n            \"name\": \"year\",\n            \"default\": date.today().year,\n            \"min\": 1951,\n            \"label\": \"Select Year to Plot:\",\n        },\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    year = ctx[\"year\"]\n    varname = ctx[\"var\"]\n    climo = ctx[\"climo\"]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            f\"\"\"\n            WITH agg as (\n                SELECT sday,\n                max({climo}),\n                min({climo}),\n                avg({climo})\n                from alldata where\n                station = %s and {climo} is not null\n                GROUP by sday),\n            obs as (\n                SELECT sday, day, era5land_srad, narr_srad, merra_srad,\n                hrrr_srad\n                from alldata WHERE station = %s and year = %s)\n            SELECT a.sday, a.max as max_{climo}, a.min as min_{climo},\n            a.avg as avg_{climo}, o.day, o.narr_srad, o.merra_srad,\n            o.hrrr_srad, o.era5land_srad\n            from agg a LEFT JOIN obs o on (a.sday = o.sday)\n            ORDER by a.sday ASC\n        \"\"\",\n            conn,\n            params=(station, station, year),\n            index_col=\"sday\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    for col in [\"max\", \"min\", \"avg\"]:\n        df[f\"{col}_{climo}_smooth\"] = (\n            df[f\"{col}_{climo}\"]\n            .rolling(window=7, min_periods=1, center=True)\n            .mean()\n        )\n    df[\"best\"] = df[\"era5land_srad\"].fillna(df[\"hrrr_srad\"])\n    # hack for leap day here\n    if \"0229\" in df[\"best\"].index and df[\"best\"].loc[\"0229\"] is None:\n        df = df.drop(\"0229\")\n\n    title = (\n        f\"{ctx['_sname']}:: {year} Daily Solar Radiation\\n\"\n        f\"{PDICT2[climo]} Climatology\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.add_axes((0.07, 0.1, 0.45, 0.8))\n\n    xaxis = np.arange(1, len(df.index) + 1)\n    ax.fill_between(\n        xaxis,\n        df[f\"min_{climo}\"],\n        df[f\"max_{climo}\"],\n        color=\"tan\",\n        label=f\"{climo.split('_')[0]} Range\",\n    )\n    ax.plot(\n        xaxis,\n        df[f\"avg_{climo}_smooth\"],\n        color=\"k\",\n        label=f\"{climo.split('_')[0]} Average\",\n    )\n    if not np.isnan(df[varname].max()):\n        ax.scatter(\n            xaxis,\n            df[varname],\n            color=\"g\",\n            label=f\"{year} {varname.split('_')[0]}\",\n        )\n    ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_xlim(0, 366)\n    ax.legend()\n    ax.grid(True)\n    ax.set_ylabel(\"Shortwave Solar Radiation $MJ$ $d^{-1}$\")\n    ax.set_xlabel(\"* Climatology has 7 day smooth applied\")\n\n    # Do the x,y scatter plots\n    opts = [\"narr_srad\", \"merra_srad\", \"era5land_srad\", \"hrrr_srad\"]\n    for i, combo in enumerate(itertools.combinations(opts, 2)):\n        row = i % 3\n        col = i // 3\n        ax3 = fig.add_axes((0.6 + (0.22 * col), 0.1 + (0.3 * row), 0.15, 0.19))\n        df2 = df[df[combo[0]].notna() & df[combo[1]].notna()]\n\n        xmax = df2[combo[0]].max()\n        xlabel = combo[0].replace(\"_srad\", \"\").upper()\n        ylabel = combo[1].replace(\"_srad\", \"\").upper()\n        ymax = df2[combo[1]].max()\n        if np.isnan(xmax) or np.isnan(ymax):\n            ax3.text(\n                0.5,\n                0.5,\n                f\"{xlabel} or {ylabel}\\nis missing\",\n                ha=\"center\",\n                va=\"center\",\n            )\n            ax3.get_xaxis().set_visible(False)\n            ax3.get_yaxis().set_visible(False)\n            continue\n        c = df2[[combo[0], combo[1]]].corr()\n        ax3.text(\n            0.5,\n            1.01,\n            f\"Pearson Corr: {c.iat[1, 0]:.2f}\",\n            fontsize=10,\n            ha=\"center\",\n            transform=ax3.transAxes,\n        )\n        ax3.scatter(\n            df2[combo[0]], df2[combo[1]], edgecolor=\"None\", facecolor=\"green\"\n        )\n        maxv = max([ax3.get_ylim()[1], ax3.get_xlim()[1]])\n        ax3.set_ylim(0, maxv)\n        ax3.set_xlim(0, maxv)\n        ax3.plot([0, maxv], [0, maxv], color=\"k\")\n        ax3.set_xlabel(\n            f\"{xlabel} \" + r\"$\\mu$=\" + f\"{df2[combo[0]].mean():.1f}\",\n            labelpad=0,\n            fontsize=12,\n        )\n        ax3.set_ylabel(\n            f\"{ylabel} \" + r\"$\\mu$=\" + f\"{df2[combo[1]].mean():.1f}\",\n            fontsize=12,\n        )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p39.py",
    "content": "\"\"\"\nThis plot compares the month to date average\ntemperature of this month against any previous month of your choice.\nThe plot then contains this month's to date average temperature along\nwith the scenarios of the remaining days for this month from each of\nthe past years.  These scenarios provide a good approximation of what is\npossible for the remainder of the month.\n\"\"\"\n\nimport calendar\nfrom datetime import date, timedelta\n\nimport numpy as np\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"manual\": \"Select comparison month manually\",\n    \"high\": \"Based on effective date, find warmest same month on record\",\n    \"low\": \"Based on effective date, find coldest same month on record\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__}\n    today = date.today()\n    lastmonth = (today.replace(day=1)) - timedelta(days=25)\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        {\n            \"type\": \"select\",\n            \"name\": \"compare\",\n            \"default\": \"manual\",\n            \"label\": \"How to compare?\",\n            \"options\": PDICT,\n        },\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=lastmonth.year,\n            min=1800,\n            label=\"Select Year to Compare With:\",\n        ),\n        dict(\n            type=\"month\",\n            name=\"month\",\n            default=lastmonth.month,\n            label=\"Select Month to Compare With:\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"date\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            min=\"1893/01/01\",\n            label=\"Effective Date\",\n        ),\n    ]\n    return desc\n\n\ndef compute_compare_month(ctx, cursor):\n    \"\"\"Figure out what the user wants.\"\"\"\n    year = ctx[\"year\"]\n    month = ctx[\"month\"]\n    compare = ctx[\"compare\"]\n    if compare == \"manual\":\n        return year, month\n    station = ctx[\"station\"]\n    effective_date = ctx[\"date\"]\n    res = cursor.execute(\n        sql_helper(\n            \"\"\"\n        select year, avg((high+low)/2) from alldata\n        where station = :station and month = :month and year != :year\n        and high is not null and low is not null\n        GROUP by year\n        ORDER by avg {mydir} LIMIT 1\n        \"\"\",\n            mydir=\"desc\" if compare == \"high\" else \"asc\",\n        ),\n        {\n            \"station\": station,\n            \"month\": effective_date.month,\n            \"year\": effective_date.year,\n        },\n    )\n    return res.fetchone()[0], effective_date.month\n\n\n@with_sqlalchemy_conn(\"coop\")\ndef plotter(ctx: dict, conn: Connection | None = None):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    effective_date = ctx[\"date\"]\n    year, month = compute_compare_month(ctx, conn)\n\n    oldmonth = date(year, month, 1)\n    sts = date(effective_date.year, effective_date.month, 1)\n    ets = (sts + timedelta(days=35)).replace(day=1)\n    days = int((ets - sts).days)\n\n    # beat month\n    res = conn.execute(\n        sql_helper(\n            \"SELECT extract(day from day), (high+low)/2. as t from \"\n            \"alldata WHERE station = :station and year = :year and \"\n            \"month = :month ORDER by day ASC\"\n        ),\n        {\"station\": station, \"year\": year, \"month\": month},\n    )\n    if res.rowcount == 0:\n        raise NoDataFound(\"No Data Found.\")\n\n    prevmonth = [float(row[\"t\"]) for row in res.mappings()]\n\n    # build history\n    res = conn.execute(\n        sql_helper(\n            \"SELECT year, day, (high+low)/2. as t from alldata \"\n            \"WHERE station = :station and month = :month and \"\n            \"extract(day from day) <= :days \"\n            \"and day < :ets ORDER by day ASC\"\n        ),\n        {\n            \"station\": station,\n            \"month\": effective_date.month,\n            \"days\": days,\n            \"ets\": ets,\n        },\n    )\n\n    for i, row in enumerate(res.mappings()):\n        if i == 0:\n            baseyear = row[\"year\"]\n            data = (\n                np.ma.ones((effective_date.year - row[\"year\"] + 1, days)) * -99\n            )\n        data[row[\"year\"] - baseyear, row[\"day\"].day - 1] = row[\"t\"]\n    # Do we have data for the effective_date ?\n    pos = (\n        effective_date.day\n        if data[-1, effective_date.day - 1] > -99\n        else (effective_date.day - 1)\n    )\n    # overwrite our current month's data\n    currentdata = data[-1, :pos]\n    data[:-1, :pos] = currentdata\n    data.mask = data < -98\n    avgs = np.ma.zeros(np.shape(data))\n    prevavg = []\n    for i in range(days):\n        avgs[:, i] = np.nanmean(data[:, : i + 1], 1)\n        prevavg.append(np.nanmean(prevmonth[: i + 1]))\n    avgs.mask = data.mask\n    # duplicate the last day for each year, if the value is missing\n    for yr in range(np.shape(data)[0] - 1):\n        if np.ma.is_masked(avgs[yr, -1]):\n            avgs[yr, -1] = avgs[yr, -2]\n\n    beats = 0\n    for yr in range(np.shape(data)[0] - 1):\n        if avgs[yr, -1] > prevavg[-1]:\n            beats += 1\n    title = f\"{ctx['_sname']} scenarios for {effective_date:%b %Y}\"\n    subtitle = \"1-%s [%s] + %s-%s [%s-%s] beats %s %s %s/%s (%.1f%%)\" % (\n        effective_date.day,\n        effective_date.year,\n        effective_date.day + 1,\n        days,\n        baseyear,\n        effective_date.year - 1,\n        calendar.month_abbr[oldmonth.month],\n        oldmonth.year,\n        beats,\n        np.shape(data)[0] - 1,\n        beats / float(np.shape(data)[0] - 1) * 100.0,\n    )\n\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n\n    for yr in range(np.shape(data)[0] - 1):\n        ax.plot(np.arange(1, days + 1), avgs[yr, :], zorder=1, color=\"tan\")\n\n    lv = avgs[-1, pos - 1]\n    if np.ma.is_masked(lv):\n        lv = avgs[-1, pos - 2]\n    ax.plot(\n        np.arange(1, pos + 1),\n        avgs[-1, :pos],\n        zorder=3,\n        lw=2,\n        color=\"brown\",\n        label=(\n            f\"{calendar.month_abbr[effective_date.month]} \"\n            f\"{effective_date:%Y}, {lv:.2f}°F\"\n        ),\n    )\n    # For historical, we can additionally plot the month values\n    today = date.today().replace(day=1)\n    if effective_date < today:\n        ax.plot(\n            np.arange(1, days + 1),\n            avgs[-1, :],\n            lw=2,\n            color=\"brown\",\n            linestyle=\"-.\",\n            zorder=2,\n            label=\"%s %s Final, %.2f°F\"\n            % (\n                calendar.month_abbr[effective_date.month],\n                effective_date.year,\n                avgs[-1, -1],\n            ),\n        )\n    ax.plot(\n        np.arange(1, len(prevavg) + 1),\n        prevavg,\n        lw=2,\n        color=\"k\",\n        zorder=3,\n        label=(\n            f\"{calendar.month_abbr[oldmonth.month]} {oldmonth.year}, \"\n            f\"{prevavg[-1]:.2f}\"\n            \"°F\"\n        ),\n    )\n\n    ax.set_xlim(1, days)\n    ax.set_ylabel(\"Month to Date Average Temp °F\")\n    ax.set_xlabel(\"Day of Month\")\n    ax.grid(True)\n    ax.legend(loc=\"best\", fontsize=10)\n\n    return fig\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p4.py",
    "content": "\"\"\"\nUsing the gridded IEM ReAnalysis of daily\nprecipitation.  This chart presents the areal coverage of some trailing\nnumber of days precipitation for a state of your choice.  This application\ndoes not properly account for the trailing period of precipitation during\nthe first few days of January.  This application only works for contiguous\nstates.\n\"\"\"\n\nimport os\nfrom datetime import date, timedelta\n\nimport geopandas as gpd\nimport matplotlib.dates as mdates\nimport numpy as np\nimport pandas as pd\nfrom pyiem import reference\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.grid.zs import CachingZonalStats\nfrom pyiem.iemre import daily_offset, get_daily_ncname\nfrom pyiem.plot import figure_axes\nfrom pyiem.util import ncopen\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=today.year,\n            label=\"Select Year\",\n            min=1893,\n        ),\n        dict(\n            type=\"float\",\n            name=\"threshold\",\n            default=\"1.0\",\n            label=\"Precipitation Threshold [inch]\",\n        ),\n        dict(\n            type=\"int\", name=\"period\", default=\"7\", label=\"Over Period of Days\"\n        ),\n        {\n            \"type\": \"state\",\n            \"name\": \"state\",\n            \"default\": \"IA\",\n            \"label\": \"For Contiguous US State Only:\",\n            \"contiguous\": True,\n        },\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    year = ctx[\"year\"]\n    threshold = ctx[\"threshold\"]\n    period = ctx[\"period\"]\n    state = ctx[\"state\"]\n\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        states = gpd.read_postgis(\n            sql_helper(\n                \"SELECT the_geom, state_abbr from states \"\n                \"where state_abbr = :abbr\"\n            ),\n            conn,\n            params={\"abbr\": state},\n            index_col=\"state_abbr\",\n            geom_col=\"the_geom\",\n        )  # type: ignore\n\n    ncfn = get_daily_ncname(year)\n    if not os.path.isfile(ncfn):\n        raise NoDataFound(\"Data not available for year\")\n    with ncopen(ncfn) as nc:\n        precip = nc.variables[\"p01d\"]\n        czs = CachingZonalStats(get_nav(\"IEMRE\", \"CONUS\").affine_image)\n        hasdata = np.zeros(\n            (nc.dimensions[\"lat\"].size, nc.dimensions[\"lon\"].size)\n        )\n        czs.gen_stats(hasdata, states[\"the_geom\"])\n        for gnav in czs.gridnav:\n            if gnav is None:\n                continue\n            grid = np.ones((gnav.ysz, gnav.xsz))\n            grid[gnav.mask] = 0.0\n            jslice = slice(gnav.y0, gnav.y0 + gnav.ysz)\n            islice = slice(gnav.x0, gnav.x0 + gnav.xsz)\n            hasdata[jslice, islice] = np.where(\n                grid > 0, 1, hasdata[jslice, islice]\n            )\n        hasdata = np.flipud(hasdata)\n        datapts = np.sum(np.where(hasdata > 0, 1, 0))\n        if datapts == 0:\n            raise NoDataFound(\"Application does not work for non-CONUS.\")\n\n        now = date(year, 1, 1)\n        now += timedelta(days=period - 1)\n        ets = min(date.today(), date(year, 12, 31))\n        days = []\n        coverage = []\n        while now <= ets:\n            idx = daily_offset(now)\n            sevenday = np.sum(precip[(idx - period) : idx, :, :], 0)\n            pday = np.where(hasdata > 0, sevenday[:, :], -1)\n            tots = np.sum(np.where(pday >= (threshold * 25.4), 1, 0))\n            days.append(now)\n            coverage.append(tots / float(datapts) * 100.0)\n\n            now += timedelta(days=1)\n    if not days:\n        raise NoDataFound(\"No data found for requested year/range\")\n    df = pd.DataFrame(\n        {\"day\": pd.Series(days), \"coverage\": pd.Series(coverage)}\n    )\n\n    title = (\n        f\"{year} IEM Estimated Areal \"\n        f\"Coverage Percentage of {reference.state_names[state]}\"\n    )\n    subtitle = (\n        f\"Receiving {threshold:.2f} inches of precip over \"\n        f\"trailing {period} day period from {days[0]} to {days[-1]}\"\n    )\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    ax.bar(days, coverage, fc=\"g\", ec=\"g\", align=\"center\")\n    ax.set_xlim(days[0] - timedelta(days=1), days[-1] + timedelta(days=1))\n    ax.set_ylabel(\"Areal Coverage [%]\")\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%b\\n%-d\"))\n    ax.set_yticks(range(0, 101, 25))\n    ax.grid(True)\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p40.py",
    "content": "\"\"\"\nThis chart is an attempted illustration of the\namount of cloudiness that existed at a METAR site for a given month.\nThe chart combines reports of cloud amount and level to provide a visual\nrepresentation of the cloudiness.  Once the METAR site hits a cloud level\nof overcast, it can no longer sense clouds above that level.  So while the\nchart will indicate cloudiness up to the top, it may not have been like\nthat in reality.\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure, get_cmap\nfrom pyiem.util import utc\n\nPDICT = {\"sky\": \"Sky Coverage + Visibility\", \"vsby\": \"Just Visibility\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 3600}\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"month\",\n            name=\"month\",\n            label=\"Select Month:\",\n            default=today.month,\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            name=\"ptype\",\n            default=\"sky\",\n            label=\"Available Plot Types\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            label=\"Select Year:\",\n            default=today.year,\n            min=1970,\n        ),\n    ]\n    return desc\n\n\ndef plot_sky(days, vsby, data, ctx, sts):\n    \"\"\"Sky plot variant.\"\"\"\n    fig = figure(apctx=ctx)\n    # vsby plot\n    ax = fig.add_axes((0.1, 0.08, 0.8, 0.03))\n    ax.set_xticks(np.arange(0, int(days * 24) - 1, 24))\n    ax.set_xticklabels(np.arange(1, days + 1))\n    ax.set_yticks([])\n    cmap = get_cmap(\"gray\")\n    cmap.set_bad(\"white\")\n    res = ax.imshow(\n        vsby,\n        aspect=\"auto\",\n        extent=[0, days * 24, 0, 1],\n        vmin=0,\n        cmap=cmap,\n        vmax=10,\n    )\n    cax = fig.add_axes((0.915, 0.08, 0.035, 0.2))\n    fig.colorbar(res, cax=cax)\n    fig.text(0.02, 0.09, \"Visibility\\n[miles]\", va=\"center\")\n\n    # clouds\n    ax = fig.add_axes((0.1, 0.16, 0.8, 0.7))\n    ax.set_facecolor(\"skyblue\")\n    ax.set_xticks(np.arange(0, int(days * 24) - 1, 24))\n    ax.set_xticklabels(np.arange(1, days + 1))\n\n    fig.text(\n        0.5,\n        0.935,\n        f\"{ctx['_sname']}:: {sts:%b %Y} \"\n        \"Clouds & Visibility\\nbased on ASOS METAR Cloud Amount \",\n        ha=\"center\",\n        fontsize=14,\n    )\n\n    cmap = get_cmap(\"gray_r\")\n    cmap.set_bad(\"white\")\n    cmap.set_under(\"skyblue\")\n    ax.imshow(\n        np.flipud(data),\n        aspect=\"auto\",\n        extent=[0, days * 24, 0, 250],\n        cmap=cmap,\n        vmin=1,\n    )\n    ax.set_yticks(range(0, 260, 50))\n    ax.set_yticklabels(range(0, 26, 5))\n    ax.set_ylabel(\"Cloud Levels [1000s feet]\")\n    fig.text(0.45, 0.02, f\"Day of {sts:%b %Y} (UTC Timezone)\")\n\n    r1 = Rectangle((0, 0), 1, 1, fc=\"skyblue\")\n    r2 = Rectangle((0, 0), 1, 1, fc=\"white\")\n    r3 = Rectangle((0, 0), 1, 1, fc=\"k\")\n    r4 = Rectangle((0, 0), 1, 1, fc=\"#EEEEEE\")\n\n    ax.grid(True)\n\n    ax.legend(\n        [r1, r4, r2, r3],\n        [\"Clear\", \"Some\", \"Unknown\", \"Obscured by Overcast\"],\n        loc=\"lower center\",\n        fontsize=14,\n        bbox_to_anchor=(0.5, 0.99),\n        fancybox=True,\n        shadow=True,\n        ncol=4,\n    )\n    return fig\n\n\ndef plot_vsby(days, vsby, ctx, sts):\n    \"\"\"Sky plot variant.\"\"\"\n    fig = figure(apctx=ctx)\n\n    # need to convert vsby to 2-d\n    data = np.ones((100, days * 24)) * -3\n    for i in range(days * 24):\n        val = vsby[0, i]\n        if np.ma.is_masked(val):\n            continue\n        val = min([int(val * 10), 100])\n        data[val:, i] = val / 10.0\n        data[:val, i] = -1\n    data = np.ma.array(data, mask=np.where(data < -1, True, False))\n\n    # clouds\n    ax = fig.add_axes((0.1, 0.1, 0.8, 0.8))\n    ax.set_facecolor(\"skyblue\")\n    ax.set_xticks(np.arange(1, days * 24 + 1, 24))\n    ax.set_xticklabels(np.arange(1, days + 1))\n\n    fig.text(\n        0.5,\n        0.935,\n        f\"{ctx['_sname']}:: {sts:%b %Y} \"\n        \"Visibility\\nbased on hourly ASOS METAR Visibility Reports\",\n        ha=\"center\",\n        fontsize=14,\n    )\n\n    cmap = get_cmap(\"gray\")\n    cmap.set_bad(\"white\")\n    cmap.set_under(\"skyblue\")\n    res = ax.imshow(\n        np.flipud(data),\n        aspect=\"auto\",\n        extent=[0, days * 24, 0, 100],\n        cmap=cmap,\n        vmin=0,\n        vmax=10,\n    )\n    cax = fig.add_axes((0.915, 0.08, 0.035, 0.2))\n    fig.colorbar(res, cax=cax)\n    ax.set_yticks(range(0, 101, 10))\n    ax.set_yticklabels(range(0, 11, 1))\n    ax.set_ylabel(\"Visibility [miles]\")\n    fig.text(0.45, 0.02, f\"Day of {sts:%b %Y} (UTC Timezone)\")\n\n    ax.grid(True)\n\n    return fig\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    year = ctx[\"year\"]\n    month = ctx[\"month\"]\n    ptype = ctx[\"ptype\"]\n\n    # Extract the range of forecasts for each day for approximately\n    # the given month\n    sts = utc(year, month, 1, 0, 0)\n    ets = (sts + timedelta(days=35)).replace(day=1)\n    days = (ets - sts).days\n    data = np.ones((250, days * 24)) * -1\n    vsby = np.ones((1, days * 24)) * -1\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                SELECT valid at time zone 'UTC' as valid,\n                skyc1, skyc2, skyc3, skyc4, skyl1, skyl2, skyl3, skyl4, vsby,\n                extract(epoch from (valid - :sts))/3600. as hours\n            from alldata where station = :station\n            and valid BETWEEN :sts and :ets\n            and report_type = 3 ORDER by valid ASC\n        \"\"\"\n            ),\n            conn,\n            params={\"sts\": sts, \"ets\": ets, \"station\": station},\n            index_col=None,\n        )\n\n    lookup = {\"CLR\": 0, \"FEW\": 25, \"SCT\": 50, \"BKN\": 75, \"OVC\": 100}\n\n    if df.empty:\n        raise NoDataFound(\"No database entries found for station, sorry!\")\n\n    for _, row in df.iterrows():\n        delta = int(row[\"hours\"] - 1)\n        data[:, delta] = 0\n        if pd.notna(row[\"vsby\"]):\n            vsby[0, delta] = row[\"vsby\"]\n        for i in range(1, 5):\n            a = lookup.get(row[f\"skyc{i}\"], -1)\n            if a >= 0:\n                skyl = row[f\"skyl{i}\"]\n                if skyl is not None and skyl > 0:\n                    skyl = int(skyl / 100)\n                    if skyl >= 250:\n                        continue\n                    data[skyl : skyl + 4, delta] = a\n                    data[skyl + 3 :, delta] = min(a, 75)\n\n    data = np.ma.array(data, mask=np.where(data < 0, True, False))\n    vsby = np.ma.array(vsby, mask=np.where(vsby < 0, True, False))\n    if vsby.mask.all():\n        raise NoDataFound(\"No Visibility Data Found for station, sorry!\")\n\n    if ptype == \"vsby\":\n        fig = plot_vsby(days, vsby, ctx, sts)\n    else:\n        fig = plot_sky(days, vsby, data, ctx, sts)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p41.py",
    "content": "\"\"\"\nThis plot compares the distribution of daily\ntemperatures for two months or periods for a single station of your choice.\nThe left hand plot depicts a quantile - quantile plot, which simply plots\nthe montly percentile values against each other.  You could think of this\nplot as comparable frequencies.  The right hand plot depicts the\ndistribution of each month's temperatures expressed as a violin plot. These\ntype of plots are useful to see the shape of the distribution.  These plots\nalso contain the mean and extremes of the distributions.\n\n<br />There is an additional bit of functionality allowing for the\ncomputation of metrics over a number of trailing days.  When this\ntrailing day window period is set to a value larger than 1 day, you will\nwant to also set the computation method over that window.  The options\nare:\n<ul>\n    <li>Max: Take the day with the highest value</li>\n    <li>Avg: Take the average of all days in the window</li>\n    <li>Min: Take the lowest value over the window</li>\n</ul>\n<br />Clever combinations of the above allow for assessment of strength\nand duration of stretches of hot or cold weather.\n\"\"\"\n\nfrom datetime import timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom scipy import stats\n\nfrom iemweb.autoplot import ARG_STATION, get_monofont\nfrom iemweb.util import month2months\n\nODICT = {\"max\": \"Maximum\", \"min\": \"Minimum\", \"avg\": \"Average\"}\nPDICT = {\n    \"high\": \"Daily High Temperature\",\n    \"low\": \"Daily Low Temperature\",\n    \"avg\": \"Daily Average Temperature\",\n}\nMDICT = {\n    \"year\": \"Calendar Year\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"1\": \"January\",\n    \"2\": \"February\",\n    \"3\": \"March\",\n    \"4\": \"April\",\n    \"5\": \"May\",\n    \"6\": \"June\",\n    \"7\": \"July\",\n    \"8\": \"August\",\n    \"9\": \"September\",\n    \"10\": \"October\",\n    \"11\": \"November\",\n    \"12\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"data\": True, \"description\": __doc__}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"month1\",\n            default=\"12\",\n            options=MDICT,\n            label=\"Select Month for x-axis:\",\n        ),\n        dict(\n            type=\"text\",\n            default=\"1893-1950\",\n            name=\"p1\",\n            optional=True,\n            label=\"Inclusive Period of Years for x-axis (Optional)\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"month2\",\n            default=\"7\",\n            options=MDICT,\n            label=\"Select Month for y-axis:\",\n        ),\n        dict(\n            type=\"text\",\n            default=\"1950-2017\",\n            name=\"p2\",\n            optional=True,\n            label=\"Inclusive Period of Years for y-axis (Optional)\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"high\",\n            label=\"Variable to Compare\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"float\",\n            label=\"x-axis Value to Highlight\",\n            default=55,\n            name=\"highlight\",\n        ),\n        dict(\n            type=\"int\",\n            default=\"1\",\n            name=\"days\",\n            label=\"Evaluate over X number of days\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            options=ODICT,\n            default=\"max\",\n            label=\"When evaluation over multiple days, how to compute:\",\n        ),\n    ]\n    return desc\n\n\ndef get_data(station, month, period, varname, days, opt):\n    \"\"\"Get Data please\"\"\"\n    params = {\n        \"station\": station,\n        \"months\": month2months(month),\n        \"doffset\": timedelta(days=0),\n    }\n    mlimiter = \"and month = ANY(:months)\"\n    if month == \"winter\":\n        params[\"doffset\"] = timedelta(days=31)\n    ylimiter = \"\"\n    if period is not None:\n        (y1, y2) = [int(x) for x in period.split(\"-\")]\n        params[\"y1\"] = y1\n        params[\"y2\"] = y2\n        ylimiter = \"WHERE myyear >= :y1 and myyear <= :y2\"\n    if days == 1:\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            df = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n            WITH data as (\n                SELECT\n                extract(year from day + :doffset)::int\n                as myyear,\n                high, low, (high+low)/2. as avg from alldata\n                WHERE station = :station and high is not null\n                and low is not null {mlimiter})\n            SELECT * from data {ylimiter}\n            \"\"\",\n                    mlimiter=mlimiter,\n                    ylimiter=ylimiter,\n                ),\n                conn,\n                params=params,\n                index_col=None,\n            )\n    else:\n        res = (\n            f\"{opt}({varname}) OVER (ORDER by day ASC ROWS \"\n            f\"BETWEEN {days - 1} PRECEDING AND CURRENT ROW) \"\n        )\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            df = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n            WITH data as (\n                SELECT\n                extract(year from day + :doffset)::int\n                as myyear,\n                high, low, (high+low)/2. as avg, day, month from alldata\n                WHERE station = :station\n                and high is not null and low is not null),\n            agg1 as (\n                SELECT myyear, month, {res} as {varname}\n                from data WHERE 1 = 1 {mlimiter})\n            SELECT * from agg1 {ylimiter}\n            \"\"\",\n                    mlimiter=mlimiter,\n                    ylimiter=ylimiter,\n                    res=res,\n                    varname=varname,\n                ),\n                conn,\n                params=params,\n                index_col=None,\n            )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    mdata = df[varname].values\n    if period is None:\n        y1 = df[\"myyear\"].min()\n        y2 = df[\"myyear\"].max()\n    return mdata, y1, y2\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    month1 = ctx[\"month1\"]\n    month2 = ctx[\"month2\"]\n    highlight = ctx[\"highlight\"]\n    varname = ctx[\"var\"]\n    p1 = ctx.get(\"p1\")\n    p2 = ctx.get(\"p2\")\n    days = ctx[\"days\"]\n    opt = ctx[\"opt\"]\n\n    m1data, y1, y2 = get_data(station, month1, p1, varname, days, opt)\n    m2data, y3, y4 = get_data(station, month2, p2, varname, days, opt)\n\n    pc1 = np.percentile(m1data, range(0, 101, 1))\n    pc2 = np.percentile(m2data, range(0, 101, 1))\n    df = pd.DataFrame(\n        {\n            f\"{MDICT[month1]}_{varname}_{y1}_{y2}\": pd.Series(pc1),\n            f\"{MDICT[month2]}_{varname}_{y3}_{y4}\": pd.Series(pc2),\n            \"quantile\": pd.Series(range(0, 101, 5)),\n        }\n    )\n    s_slp, s_int, s_r, _, _ = stats.linregress(pc1, pc2)\n\n    fig = figure(apctx=ctx)\n    ax = fig.add_axes((0.1, 0.11, 0.4, 0.76))\n    ax.scatter(pc1[::5], pc2[::5], s=40, marker=\"s\", color=\"b\", zorder=3)\n    ax.plot(\n        pc1,\n        pc1 * s_slp + s_int,\n        lw=3,\n        color=\"r\",\n        zorder=2,\n        label=r\"Fit R$^2$=\" + f\"{s_r**2:.2f}\",\n    )\n    ax.axvline(highlight, zorder=1, color=\"k\")\n    y = highlight * s_slp + s_int\n    ax.axhline(y, zorder=1, color=\"k\")\n    ax.text(\n        pc1[0],\n        y,\n        f\"{y:.0f} °F\",\n        va=\"center\",\n        bbox=dict(color=\"white\"),\n    )\n    ax.text(\n        highlight,\n        pc2[0],\n        f\"{highlight:.0f} °F\",\n        ha=\"center\",\n        rotation=90,\n        bbox=dict(color=\"white\"),\n    )\n    t2 = PDICT[varname]\n    if days > 1:\n        t2 = f\"{ODICT[opt]} {PDICT[varname]} over {days} days\"\n    fig.suptitle(\n        f\"{ctx['_sname']}\\n\"\n        f\"{MDICT[month2]} ({y1}-{y2}) vs {MDICT[month1]} ({y3}-{y4})\\n{t2}\"\n    )\n    ax.set_xlabel(f\"{MDICT[month1]} ({y1}-{y2}) {PDICT[varname]} °F\")\n    ax.set_ylabel(f\"{MDICT[month2]} ({y3}-{y4}) {PDICT[varname]} °F\")\n    ax.text(\n        0.5,\n        1.01,\n        \"Quantile - Quantile Plot\",\n        transform=ax.transAxes,\n        ha=\"center\",\n    )\n    ax.grid(True)\n    ax.legend(loc=2)\n\n    # Second\n    ax = fig.add_axes((0.56, 0.18, 0.26, 0.68))\n    ax.set_title(\"Distribution\")\n    v1 = ax.violinplot(m1data, positions=[0], showextrema=True, showmeans=True)\n    b = v1[\"bodies\"][0]\n    m = np.mean(b.get_paths()[0].vertices[:, 0])\n    b.get_paths()[0].vertices[:, 0] = np.clip(\n        b.get_paths()[0].vertices[:, 0], -np.inf, m\n    )\n    b.set_color(\"r\")\n    for lbl in [\"cmins\", \"cmeans\", \"cmaxes\"]:\n        v1[lbl].set_color(\"r\")\n\n    v1 = ax.violinplot(m2data, positions=[0], showextrema=True, showmeans=True)\n    b = v1[\"bodies\"][0]\n    m = np.mean(b.get_paths()[0].vertices[:, 0])\n    b.get_paths()[0].vertices[:, 0] = np.clip(\n        b.get_paths()[0].vertices[:, 0], m, np.inf\n    )\n    b.set_color(\"b\")\n    for lbl in [\"cmins\", \"cmeans\", \"cmaxes\"]:\n        v1[lbl].set_color(\"b\")\n\n    pr0 = Rectangle((0, 0), 1, 1, fc=\"r\")\n    pr1 = Rectangle((0, 0), 1, 1, fc=\"b\")\n    ax.legend(\n        (pr0, pr1),\n        (\n            f\"{MDICT[month1]} ({y1}-{y2}),\"\n            r\" $\\mu$\"\n            f\"={np.mean(m1data):.1f}\",\n            f\"{MDICT[month2]} ({y3}-{y4}),\"\n            r\" $\\mu$\"\n            f\"={np.mean(m2data):.1f}\",\n        ),\n        ncol=1,\n        loc=(0.1, -0.2),\n    )\n    ax.set_ylabel(f\"{PDICT[varname]} °F\")\n    ax.grid()\n\n    # Third\n    monofont = get_monofont()\n    y = 0.86\n    x = 0.83\n    col1 = f\"{MDICT[month1]}_{varname}_{y1}_{y2}\"\n    col2 = f\"{MDICT[month2]}_{varname}_{y3}_{y4}\"\n    fig.text(x, y + 0.04, \"Percentile Data    Diff\")\n    pt = [100, 99, 98, 97, 96, 95, 92, 90, 75, 50, 25, 10, 8, 5, 4, 3, 2, 1]\n    for percentile in pt:\n        row = df.loc[percentile]\n        fig.text(x, y, f\"{percentile:3.0f}\", fontproperties=monofont)\n        fig.text(\n            x + 0.025,\n            y,\n            f\"{row[col1]:5.1f}\",\n            fontproperties=monofont,\n            color=\"r\",\n        )\n        fig.text(\n            x + 0.07,\n            y,\n            f\"{row[col2]:5.1f}\",\n            fontproperties=monofont,\n            color=\"b\",\n        )\n        fig.text(\n            x + 0.11,\n            y,\n            f\"{(row[col2] - row[col1]):5.1f}\",\n            fontproperties=monofont,\n        )\n        y -= 0.04\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p42.py",
    "content": "\"\"\"\nBased on hourly or better METAR reports, this\nplot displays the longest periods above or below a given temperature\nthreshold.  There are plenty of caveats to this plot, including missing\ndata periods and data during the 1960s that only has\nreports every three hours. This\nplot also stops any computed streak when it encounters a data gap greater\nthan three hours.\n\n<p>You can additionally set a secondary threshold which then makes this\nautoplot compute streaks within a range of values.</p>\n\n<p><strong>Updated 16 Jan 2024:</strong> The option to control the minimum\nnumber of hours was removed.  This option did not add much value as folks\ngenerally wish to see the top 10 longest streaks.</p>\n\"\"\"\n\nimport operator\nfrom datetime import date, datetime, timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport pandas as pd\nfrom matplotlib.axes import Axes\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.util import month2months\n\nPDICT = {\n    \"above\": \"At or Above Threshold...\",\n    \"below\": \"Below Threshold...\",\n    \"aob\": \"At or Below Threshold...\",\n}\nPDICT2 = {\n    \"tmpf\": \"Air Temperature\",\n    \"feel\": \"Feels Like Temperature\",\n    \"dwpf\": \"Dew Point Temperature\",\n    \"mslp\": \"Sea Level Pressure\",\n    \"vsby\": \"Visibility\",\n}\nMDICT = {\n    \"all\": \"Calendar Year\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"octmar\": \"October thru March\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 86400, \"data\": True}\n    year_range = f\"1900-{date.today().year}\"\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"m\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n            oldname=\"month\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"yrange\",\n            default=year_range,\n            optional=True,\n            label=\"Inclusive Range of Years to Include (optional)\",\n            pattern=r\"^\\d{4}\\s*-\\s*\\d{4}$\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"dir\",\n            default=\"above\",\n            label=\"Threshold Direction:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"tmpf\",\n            label=\"Which variable\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"float\",\n            name=\"threshold\",\n            default=50,\n            label=\"Temperature (F) / Pressure (mb) / Vis (mi) Threshold:\",\n        ),\n        dict(\n            optional=True,\n            type=\"float\",\n            name=\"t2\",\n            default=60,\n            label=(\n                \"Secondary Temperature (F) / Pressure (mb) / Vis (mi) \"\n                \"Threshold (for range queries)\"\n            ),\n        ),\n    ]\n    return desc\n\n\ndef plot(ax, xbase, valid: list, tmpf, lines: list, tzinfo) -> bool:\n    \"\"\"Our plotting function\"\"\"\n    if len(valid) < 2:\n        return True\n    interval = timedelta(hours=1)\n    # lines are sorted from shortest to longest, so the first one is the\n    # minimum length when we are full\n    if len(lines) == 10:\n        interval = lines[0].interval\n\n    thisinterval = valid[-1] - valid[0]\n    if thisinterval < interval:\n        return True\n    # Figure out the position that this line should be inserted into\n    pos = None\n    for i, line in enumerate(lines):\n        if thisinterval < line.interval:\n            pos = i\n            break\n    if pos is None:\n        pos = len(lines)\n\n    delta = (valid[-1] - valid[0]).total_seconds()\n    mylbl = (\n        f\"{valid[0].year} \"\n        f\"{int(delta / 86400):.0f}d{((delta % 86400) / 3600.0):.0f}h \"\n        f\"({delta / 3600.0:.1f} hrs)\\n\"\n        f\"{valid[0].astimezone(tzinfo).strftime('%Y-%m-%d %I:%M %p')} \"\n        f\"{valid[-1].astimezone(tzinfo).strftime('%Y-%m-%d %I:%M %p')}\"\n    )\n    seconds = [(v - xbase).total_seconds() for v in valid]\n    line = ax.plot(seconds, tmpf, lw=2, label=mylbl.replace(\"\\n\", \" \"))[0]\n    line.hours = round((valid[-1] - valid[0]).seconds / 3600.0, 2)\n    line.days = (valid[-1] - valid[0]).days\n    line.mylbl = mylbl\n    line.period_start = valid[0]\n    line.period_end = valid[-1]\n    line.interval = thisinterval\n    line.labelx = seconds[tmpf.index(min(tmpf))]\n    line.labely = min(tmpf)\n    lines.insert(pos, line)\n    if len(lines) > 10:\n        lines.pop(0).remove()\n    return True\n\n\ndef plot_text(ax: Axes, lines: list):\n    \"\"\"Add text to ax\"\"\"\n    ypos = 0.92\n    interval = None\n    for line in lines[::-1]:\n        if interval is None:\n            rank = 1\n        elif line.interval < interval:\n            rank += 1\n        interval = line.interval\n        ax.annotate(\n            f\"#{rank}. {line.mylbl}\",\n            xy=(line.labelx, line.labely),\n            xytext=(1.03, ypos),  # Point to SW corner\n            textcoords=\"axes fraction\",\n            ha=\"left\",\n            va=\"bottom\",\n            bbox={\"color\": line.get_color()},\n            color=\"white\",\n            arrowprops=dict(\n                arrowstyle=\"->\",\n                relpos=(0, 0),\n                color=line.get_color(),\n            ),\n            annotation_clip=False,\n        )\n        ypos -= 0.1\n\n\ndef compute_xlabels(ax, xbase):\n    \"\"\"Figure out how to make pretty xaxis labels\"\"\"\n    # values are in seconds\n    xlim = ax.get_xlim()\n    x0 = xbase + timedelta(seconds=xlim[0])\n    x0 = x0.replace(hour=0, minute=0)\n    x1 = xbase + timedelta(seconds=xlim[1])\n    x1 = x1.replace(hour=0, minute=0) + timedelta(days=1)\n    xticks = []\n    xticklabels = []\n    # Pick a number of days so that we end up with 8 labels\n    delta = int((xlim[1] - xlim[0]) / 86400.0 / 7)\n    if delta == 0:\n        delta = 1\n    for x in range(\n        int((x0 - xbase).total_seconds()),\n        int((x1 - xbase).total_seconds()),\n        86400 * delta,\n    ):\n        xticks.append(x)\n        ts = xbase + timedelta(seconds=x)\n        xticklabels.append(ts.strftime(\"%-d\\n%b\"))\n    ax.set_xticks(xticks)\n    ax.set_xticklabels(xticklabels)\n\n\n@with_sqlalchemy_conn(\"asos\")\ndef plotter(ctx: dict, conn: Connection | None = None):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    threshold = ctx[\"threshold\"]\n    mydir = ctx[\"dir\"]\n    varname = ctx[\"var\"]\n    month = ctx[\"m\"]\n\n    months = month2months(month)\n\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    tzname = ctx[\"_nt\"].sts[station][\"tzname\"]\n    tzinfo = ZoneInfo(tzname)\n    params = {\n        \"rnd\": 0 if varname not in [\"mslp\", \"vsby\"] else 2,\n        \"station\": station,\n        \"tzname\": tzname,\n        \"months\": months,\n    }\n    year_limiter = \"\"\n    y1, y2 = None, None\n    if \"yrange\" in ctx:\n        y1, y2 = ctx[\"yrange\"].split(\"-\")\n        year_limiter = \" and valid >= :yr1 and valid < :yr2 \"\n        params[\"yr1\"] = date(int(y1), 1, 1)\n        params[\"yr2\"] = date(int(y2) + 1, 1, 1)\n    res = conn.execute(\n        sql_helper(\n            \"\"\"\n        SELECT valid at time zone 'UTC' as utc_valid,\n        round({varname}::numeric, :rnd) as d\n        from alldata where station = :station {year_limiter}\n        and {varname} is not null and\n        extract(month from valid at time zone :tzname) = ANY(:months)\n        ORDER by valid ASC\n        \"\"\",\n            varname=varname,\n            year_limiter=year_limiter,\n        ),\n        params,\n    )\n    units = \"°F\"\n    if varname == \"mslp\":\n        units = \"mb\"\n    elif varname == \"vsby\":\n        units = \"mile\"\n    title = (\n        f\"{y1 if y1 is not None else ab.year}-\"\n        f\"{y2 if y2 is not None else datetime.now().year} \"\n        f\"{ctx['_sname']}\"\n    )\n\n    valids = []\n    tmpf = []\n    lines = []\n    # Figure out bounds check values\n    lower = threshold\n    upper = 9999\n    if ctx.get(\"t2\") is None:\n        if mydir in [\"below\", \"aob\"]:\n            lower = -9999\n            upper = threshold\n        label = f\"{mydir} {threshold}\"\n    else:\n        upper = ctx[\"t2\"]\n        if mydir in [\"below\", \"aob\"]:\n            lower, upper = upper, lower\n        label = (\n            f\"within range {lower} <= x\"\n            f\" {'<' if mydir == 'below' else '<='} {upper}\"\n        )\n    subtitle = (\n        f\"{MDICT.get(month)} :: Streaks {PDICT2[varname]} {label} {units}\"\n    )\n    fig = figure(title=title, subtitle=subtitle, apctx=ctx)\n    ax = fig.add_axes((0.07, 0.1, 0.5, 0.8))\n\n    threshold = timedelta(hours=3)\n    reset_valid = datetime(1900, 1, 1, tzinfo=tzinfo)\n    xbase = reset_valid\n\n    op2 = operator.lt if mydir == \"below\" else operator.le\n    for row in res.mappings():\n        valid: datetime = row[\"utc_valid\"].replace(tzinfo=timezone.utc)\n        # This is tricky, we need to resolve when time resets.\n        if valid > reset_valid:\n            if valids:\n                if not plot(ax, xbase, valids, tmpf, lines, tzinfo):\n                    break\n                valids = []\n                tmpf = []\n            _tmp = (\n                datetime(valid.year, months[-1], 1) + timedelta(days=32)\n            ).replace(day=1)\n            if month in [\"winter\", \"octmar\"]:\n                _tmp = _tmp.replace(year=valid.year + 1)\n            reset_valid = datetime(_tmp.year, _tmp.month, 1, tzinfo=tzinfo)\n            xbase = datetime(valid.year, valid.month, 1, tzinfo=tzinfo)\n        if valids and ((valid - valids[-1]) > threshold):\n            if not plot(ax, xbase, valids, tmpf, lines, tzinfo):\n                break\n            valids = []\n            tmpf = []\n        if operator.ge(row[\"d\"], lower) and op2(row[\"d\"], upper):\n            valids.append(valid)\n            tmpf.append(row[\"d\"])\n        else:\n            valids.append(valid)\n            tmpf.append(row[\"d\"])\n            if not plot(ax, xbase, valids, tmpf, lines, tzinfo):\n                break\n            valids = []\n            tmpf = []\n\n    plot(ax, xbase, valids, tmpf, lines, tzinfo)\n    compute_xlabels(ax, xbase)\n    rows = []\n    for line in lines:\n        # Ensure we don't send datetimes to pandas\n        rows.append(  # noqa\n            dict(\n                start_utc=line.period_start.strftime(\"%Y-%m-%d %H:%M+00\"),\n                end_utc=line.period_end.strftime(\"%Y-%m-%d %H:%M+00\"),\n                hours=line.hours,\n                days=line.days,\n            )\n        )\n    df = pd.DataFrame(rows)\n\n    ax.grid(True)\n    ax.set_ylabel(f\"{PDICT2.get(varname)} {units}\")\n    ax.set_xlabel(\n        \"* Due to timezones and leapday, there is some ambiguity\"\n        \" with the plotted dates\"\n    )\n    plot_text(ax, lines)\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p43.py",
    "content": "\"\"\"\nThis plot presents a time series of\nobservations.  Please note the colors and axes labels used to denote\nwhich variable is which in the combination plots.\n\"\"\"\n\nfrom datetime import date, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport matplotlib.dates as mdates\nimport numpy as np\nimport pandas as pd\nfrom matplotlib import ticker\nfrom matplotlib.artist import setp\nfrom matplotlib.axes import Axes\nfrom matplotlib.figure import Figure\nfrom metpy.units import units\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.util import utc\n\nPDICT = {\n    \"default\": \"Temperatures | Winds | Clouds + Vis\",\n    \"two\": \"Temperatures | Winds | Pressure\",\n}\n\n\ndef date_ticker(ax: Axes, mytz):\n    \"\"\"Timestamp formatter\"\"\"\n    (xmin, xmax) = ax.get_xlim()\n    if xmin < 1:\n        return\n    xmin = mdates.num2date(xmin)\n    xmax = mdates.num2date(xmax)\n    xmin = xmin.replace(minute=0)\n    xmax = (xmax + timedelta(minutes=59)).replace(minute=0)\n    now = xmin\n    xticks = []\n    xticklabels = []\n    while now <= xmax:\n        lts = now.astimezone(mytz)\n        if lts.hour % 6 == 0:\n            fmt = \"%-I %p\\n%-d %b\" if lts.hour == 0 else \"%-I %p\"\n            xticks.append(now)\n            xticklabels.append(lts.strftime(fmt))\n        if len(xticks) > 100:\n            break\n        now += timedelta(hours=1)\n\n    ax.set_xticks(xticks)\n    ax.set_xticklabels(xticklabels)\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 360}\n    desc[\"defaults\"] = {\"_r\": \"88\"}\n    d3 = date.today() - timedelta(days=2)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"sid\",\n            label=\"Select IEM Tracked Station\",\n            name=\"station\",\n            default=\"AMW\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"date\",\n            default=d3.strftime(\"%Y/%m/%d\"),\n            name=\"sdate\",\n            label=\"Start Date of Plot: (optional)\",\n            optional=True,\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"default\",\n            label=\"Plot Type\",\n            name=\"p\",\n        ),\n    ]\n    return desc\n\n\ndef get_data(network: str, station, tzname, sdate) -> pd.DataFrame:\n    \"\"\"retrieve the data frame we want\"\"\"\n    if sdate is None:\n        with get_sqlalchemy_conn(\"iem\") as conn:\n            df = pd.read_sql(\n                sql_helper(\"\"\"\n                SELECT tmpf, dwpf, sknt, gust, drct, skyc1, skyc2, skyc3,\n                skyc4, skyl1, skyl2, skyl3, skyl4, vsby, alti,\n                valid at time zone 'UTC' as utc_valid\n                from current_log c JOIN stations t ON (t.iemid = c.iemid)\n                WHERE t.network = :network and t.id = :station and\n                valid > now() - '4 days'::interval ORDER by valid ASC\n            \"\"\"),\n                conn,\n                params={\"network\": network, \"station\": station},\n                index_col=\"utc_valid\",\n            )\n        return df\n\n    sts = utc(2018)\n    sts = sts.astimezone(ZoneInfo(tzname))\n    sts = sts.replace(\n        year=sdate.year, month=sdate.month, day=sdate.day, hour=0, minute=0\n    )\n    ets = sts + timedelta(hours=72)\n    if network.endswith(\"ASOS\"):\n        with get_sqlalchemy_conn(\"asos\") as conn:\n            df = pd.read_sql(\n                sql_helper(\"\"\"\n                SELECT tmpf, dwpf, sknt, gust, drct, skyc1, skyc2, skyc3,\n                skyc4, skyl1, skyl2, skyl3, skyl4, vsby, alti,\n                valid at time zone 'UTC' as utc_valid\n                from alldata WHERE station = :station and\n                valid >= :sts and valid < :ets\n                ORDER by valid ASC\n            \"\"\"),\n                conn,\n                params={\"station\": station, \"sts\": sts, \"ets\": ets},\n                index_col=\"utc_valid\",\n            )\n        return df\n    raise NoDataFound(\"No data was found for this site.\")\n\n\ndef ceilingfunc(row: dict) -> float:\n    \"\"\"Our logic to compute a ceiling\"\"\"\n    c = [row[\"skyc1\"], row[\"skyc2\"], row[\"skyc3\"], row[\"skyc4\"]]\n    if \"OVC\" not in c:\n        return np.nan\n    pos = c.index(\"OVC\")\n    larr = [row[\"skyl1\"], row[\"skyl2\"], row[\"skyl3\"], row[\"skyl4\"]]\n    if pd.isnull(larr[pos]):\n        return None\n    return larr[pos] / 1000.0\n\n\ndef plot_df(ctx: dict, df: pd.DataFrame, tzname: str) -> Figure:\n    \"\"\"Do some plotting.\"\"\"\n    df[\"time_delta\"] = (\n        df[\"utc_valid\"] - df.shift(1)[\"utc_valid\"]\n    ).dt.total_seconds()\n    df = df.set_index(\"utc_valid\")\n\n    df[\"ceiling\"] = df.apply(ceilingfunc, axis=1)\n\n    title = (\n        f\"{ctx['_sname']}\\n\"\n        f\"Recent Time Series {pd.to_datetime(df.index.values[0]):%Y %b %-d} - \"\n        f\"{pd.to_datetime(df.index.values[-1]):%Y %b %-d}\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    xalign = 0.1\n    xwidth = 0.8\n    ax = fig.add_axes((xalign, 0.7, xwidth, 0.2))\n\n    xmin = df.index.min()\n    xmax = df.index.max()\n    # ____________PLOT 1___________________________\n    df2 = df[df[\"tmpf\"].notnull()]\n    ax.plot(\n        df2.index.values,\n        df2[\"tmpf\"],\n        lw=2,\n        label=\"Air Temp\",\n        color=\"#db6065\",\n        zorder=2,\n    )\n    df2 = df[df[\"dwpf\"].notnull()]\n    ax.plot(\n        df2.index.values,\n        df2[\"dwpf\"],\n        lw=2,\n        label=\"Dew Point\",\n        color=\"#346633\",\n        zorder=3,\n    )\n    ax.grid(True)\n    ax.text(\n        -0.1,\n        0,\n        \"Temperature [F]\",\n        rotation=90,\n        transform=ax.transAxes,\n        verticalalignment=\"bottom\",\n    )\n    if not df2.empty:\n        ax.set_ylim(bottom=df[\"dwpf\"].min() - 3)\n    setp(ax.get_xticklabels(), visible=True)\n    date_ticker(ax, ZoneInfo(tzname))\n    ax.set_xlim(xmin, xmax)\n    ax.legend(loc=\"best\", ncol=2)\n\n    # _____________PLOT 2____________________________\n    ax = fig.add_axes((xalign, 0.4, xwidth, 0.25))\n\n    ax2 = ax.twinx()\n    df2 = df[df[\"gust\"].notnull()]\n    if not df2.empty:\n        ax2.bar(\n            df2.index.values,\n            (df2[\"gust\"].values * units(\"knot\")).to(units(\"mile / hour\")).m,\n            width=df2[\"time_delta\"].values / 86400.0,\n            color=\"#9898ff\",\n            zorder=2,\n        )\n    df2 = df[df[\"sknt\"].notnull()]\n    if not df2.empty:\n        ax2.bar(\n            df2.index.values,\n            (df2[\"sknt\"].values * units(\"knot\")).to(units(\"mile / hour\")).m,\n            width=df2[\"time_delta\"].values / 86400.0,\n            color=\"#373698\",\n            zorder=3,\n        )\n    ax2.set_ylim(bottom=0)\n    ax.set_yticks(range(0, 361, 45))\n    ax.set_yticklabels([\"N\", \"NE\", \"E\", \"SE\", \"S\", \"SW\", \"W\", \"NW\", \"N\"])\n    ax.set_ylabel(\"Wind Direction\")\n    ax2.set_ylabel(\"Wind Speed [mph]\")\n    ax.set_ylim(0, 360.1)\n    date_ticker(ax, ZoneInfo(tzname))\n    ax.scatter(\n        df2.index.values,\n        df2[\"drct\"],\n        facecolor=\"None\",\n        edgecolor=\"#b8bc74\",\n        zorder=4,\n    )\n    ax.set_zorder(ax2.get_zorder() + 1)\n    ax.patch.set_visible(False)\n    ax.set_xlim(xmin, xmax)\n    ax2.yaxis.set_major_locator(ticker.LinearLocator(9))\n    ax.grid(True)\n\n    # _________ PLOT 3 ____\n    ax = fig.add_axes((xalign, 0.1, xwidth, 0.25))\n    if ctx[\"p\"] == \"default\":\n        ax2 = ax.twinx()\n        ax2.scatter(\n            df.index.values,\n            df[\"ceiling\"],\n            label=\"Visibility\",\n            marker=\"o\",\n            s=40,\n            color=\"g\",\n        )\n        ax2.set_ylabel(\"Overcast Ceiling [k ft]\", color=\"g\")\n        ax2.set_ylim(bottom=0)\n        ax.scatter(\n            df.index.values,\n            df[\"vsby\"],\n            label=\"Visibility\",\n            marker=\"*\",\n            s=40,\n            color=\"b\",\n        )\n        ax.set_ylabel(\"Visibility [miles]\")\n        ax.set_ylim(0, 14)\n    elif ctx[\"p\"] == \"two\":\n        df2 = df[(df[\"alti\"] > 20.0) & (df[\"alti\"] < 40.0)]\n        ax.grid(True)\n        if not df2.empty:\n            vals = (df2[\"alti\"].values * units(\"inch_Hg\")).to(units(\"hPa\")).m\n            ax.fill_between(df2.index.values, 0, vals, color=\"#a16334\")\n            ax.set_ylim(bottom=(vals.min() - 1), top=vals.max() + 1)\n            ax.set_ylabel(\"Pressure [mb]\")\n\n    ax.set_xlim(xmin, xmax)\n    date_ticker(ax, ZoneInfo(tzname))\n    ax.set_xlabel(f\"Plot Time Zone: {tzname}\")\n    ax.yaxis.set_major_locator(ticker.LinearLocator(9))\n    ax2.yaxis.set_major_locator(ticker.LinearLocator(9))\n    ax.grid(True)\n    return fig\n\n\ndef plotter(ctx: dict):\n    \"\"\"This autoplot gets hit a lot, so we attempt to always generate.\"\"\"\n    station = ctx[\"station\"]\n    sdate = ctx.get(\"sdate\")\n\n    fig = None\n    df = pd.DataFrame()\n    if ctx[\"network\"].find(\"COOP\") == -1:\n        tzname = ctx[\"_nt\"].sts[station][\"tzname\"] or \"America/Chicago\"\n        df = get_data(ctx[\"network\"], station, tzname, sdate).reset_index()\n        if not df.empty:\n            fig = plot_df(ctx, df, tzname)\n    if fig is None:\n        fig = figure(\n            title=f\"{ctx['_sname']} Recent Time Series\",\n            apctx=ctx,\n        )\n        fig.text(\n            0.5,\n            0.5,\n            \"No recent data available for this station.\",\n            ha=\"center\",\n            va=\"center\",\n        )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p44.py",
    "content": "\"\"\"\nThis plot displays an accumulated total of\noffice issued watch, warning, advisories.  These totals are not official\nand based on IEM processing of NWS text warning data.  The totals are for\nindividual warnings and not some combination of counties + warnings. The\narchive begin date varies depending on which phenomena you are interested\nin.\n\n<p>Generally, the archive starts in Fall 2005 for most types.  Event\ncounts do exist for Severe Thunderstorm, Tornado and Flash Flood warnings\nfor dates back to 1986.  Data quality prior to 2001 is not the greatest\nthough.</p>\n\n<p>If you want to use the \"cold season\" as the basis of a year, pick the\n\"July 1\" option below. The \"year\" label is then associated with the fall\nportion of the cold season (1 Jul 2021 - 30 Jun 2022 is 2021).</p>\n\n<p><strong>Updated 26 Jan 2023</strong> When selecting to limit to a year\nto date period, a more exact algorithm is now used to accumulate warnings\nthrough the end of the current date in central timezone.</p>\n\n<p><a href=\"/plotting/auto/?q=73\">Autoplot 73</a> is very similiar to this\nplot, but allows for a user defined period to be selected.</p>\n\"\"\"\n\nimport calendar\nimport math\nfrom datetime import date\nfrom typing import TYPE_CHECKING\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.ticker import MaxNLocator\nfrom pyiem import reference\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws import vtec\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_FEMA, fema_region2states\n\nif TYPE_CHECKING:\n    from matplotlib.text import Text\n\nPDICT = {\"yes\": \"Limit Plot to Year-to-Date\", \"no\": \"Plot Entire Year\"}\nPDICT2 = {\n    \"single\": \"Plot Single VTEC Phenomena + Significance\",\n    \"svrtor\": \"Plot Severe Thunderstorm + Tornado Warnings\",\n    \"winter\": (\n        \"Plot Winter Storm Warning, Winter Weather Advisory, Blizzard Warning\"\n    ),\n    \"all\": \"Plot All VTEC Events\",\n}\nPDICT3 = {\n    \"wfo\": \"Plot for Single/All WFO\",\n    \"state\": \"Plot for a Single State\",\n    \"fema\": \"Plot for a FEMA Region\",\n}\nPDICT4 = {\"line\": \"Accumulated line plot\", \"bar\": \"Single bar plot per year\"}\nPDICT5 = {\"jan1\": \"January 1\", \"jul1\": \"July 1\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 86400, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"plot\",\n            options=PDICT4,\n            default=\"line\",\n            label=\"Which plot type to produce?\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            options=PDICT3,\n            default=\"wfo\",\n            label=\"Plot for a WFO or a State?\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO (when appropriate):\",\n            all=True,\n        ),\n        dict(\n            type=\"state\",\n            default=\"IA\",\n            name=\"state\",\n            label=\"Select State (when appropriate):\",\n        ),\n        ARG_FEMA,\n        dict(\n            type=\"select\",\n            name=\"limit\",\n            default=\"no\",\n            label=\"End Date Limit to Plot:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"c\",\n            default=\"svrtor\",\n            label=\"Single or Combination of Products:\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"phenomena\",\n            name=\"phenomena\",\n            default=\"TO\",\n            label=\"Select Watch/Warning Phenomena Type:\",\n        ),\n        dict(\n            type=\"significance\",\n            name=\"significance\",\n            default=\"W\",\n            label=\"Select Watch/Warning Significance Level:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"syear\",\n            default=1986,\n            min=1986,\n            label=\"Inclusive Start Year (if data is available) for plot:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"eyear\",\n            default=date.today().year,\n            min=1986,\n            label=\"Inclusive End Year (if data is available) for plot:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"s\",\n            default=\"jan1\",\n            options=PDICT5,\n            label=\"Start date of the 'year' plotted\",\n        ),\n    ]\n    return desc\n\n\ndef plot_common(ctx, ax):\n    \"\"\"Common plot stuff.\"\"\"\n    ax.set_ylabel(\"Accumulated Count\")\n    ax.grid(True)\n    ax.set_xlabel(ctx[\"xlabel\"])\n\n\ndef make_barplot(ctx, df):\n    \"\"\"Create a bar plot.\"\"\"\n    fig = figure(title=ctx[\"title\"], apctx=ctx)\n    ax = fig.add_axes((0.1, 0.1, 0.8, 0.8))\n    df2 = (\n        df.groupby(\"year\")\n        .sum(numeric_only=True)\n        .reindex(range(ctx[\"syear\"], ctx[\"eyear\"] + 1))\n    )\n    df2 = df2.fillna(0)\n    ax.bar(df2.index.values, df2[\"count\"])\n    top = max(5, float(df2[\"count\"].max()) * 1.2)\n    for year, row in df2.iterrows():\n        ax.text(\n            year,\n            float(row[\"count\"]) + (top * 0.025),\n            f\"{row['count']:.0f}\",\n            rotation=90 if len(df2.index) > 17 else 0,\n            bbox={\"color\": \"white\", \"boxstyle\": \"square,pad=0\"},\n            ha=\"center\",\n        )\n    ax.set_xlim(ctx[\"syear\"] - 0.5, ctx[\"eyear\"] + 0.5)\n    ax.xaxis.set_major_locator(MaxNLocator(integer=True))\n    ax.set_ylim(top=top)\n    plot_common(ctx, ax)\n    return fig, df2\n\n\ndef munge_df(ctx, df: pd.DataFrame):\n    \"\"\"Rectify an x-axis.\"\"\"\n    # Create sday\n    df[\"sday\"] = df[\"date\"].dt.strftime(\"%m%d\")\n    df[\"year\"] = df[\"date\"].dt.year\n    df[\"month\"] = df[\"date\"].dt.month\n\n    # Rectify the year, if we are starting on jul1\n    if ctx[\"s\"] == \"jul1\":\n        df.loc[df[\"month\"] < 7, \"year\"] = df[\"year\"] - 1\n\n    # Create a baseline for a common xaxis\n    month = 7 if ctx[\"s\"] == \"jul1\" else 1\n    baseline = pd.to_datetime(\n        {\n            \"year\": df[\"year\"].to_numpy(),\n            \"month\": np.full(len(df.index), month),\n            \"day\": np.full(len(df.index), 1),\n        }\n    )\n    df[\"xaxis\"] = (df[\"date\"] - baseline).dt.days\n\n    # If not limiting, we are done\n    if ctx[\"limit\"] == \"no\":\n        return df\n\n    today_sday = date.today().strftime(\"%m%d\")\n    # If year starts on jan1, easy\n    if ctx[\"s\"] == \"jan1\":\n        return df[df[\"sday\"] <= today_sday]\n\n    if today_sday >= \"0701\":\n        return df[(df[\"sday\"] >= \"0701\") & (df[\"sday\"] <= today_sday)]\n\n    return df[(df[\"sday\"] <= today_sday) | (df[\"sday\"] >= \"0701\")]\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    combo = ctx[\"c\"]\n    phenomena = ctx[\"phenomena\"][:2]\n    significance = ctx[\"significance\"][:1]\n    if phenomena in [\"SV\", \"TO\", \"FF\"] and significance == \"W\":\n        pass\n    else:\n        ctx[\"syear\"] = max(ctx[\"syear\"], 2005)\n    opt = ctx[\"opt\"]\n    state = ctx[\"state\"][:2]\n    eyear = ctx[\"eyear\"]\n\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\"name\": \"All Offices\"}\n    if station not in ctx[\"_nt\"].sts:\n        raise NoDataFound(\"No Data Found.\")\n\n    params = {\"syear\": ctx[\"syear\"], \"eyear\": eyear}\n    wfolimiter = \" and wfo = :wfo \"\n    params[\"wfo\"] = station\n    if opt == \"state\":\n        wfolimiter = \" and substr(ugc, 1, 2) = :state \"\n        params[\"state\"] = state\n    elif opt == \"wfo\" and station == \"_ALL\":\n        wfolimiter = \"\"\n    elif opt == \"fema\":\n        wfolimiter = \" and substr(ugc, 1, 2) = ANY(:states) \"\n        params[\"states\"] = fema_region2states(ctx[\"fema\"])\n    eventlimiter = \"\"\n    if combo == \"svrtor\":\n        eventlimiter = \" or (phenomena = 'SV' and significance = 'W') \"\n        phenomena = \"TO\"\n        significance = \"W\"\n    elif combo == \"winter\":\n        eventlimiter = (\n            \" or (phenomena = 'BZ' and significance = 'W') \"\n            \" or (phenomena = 'WS' and significance = 'W') \"\n        )\n        phenomena = \"WW\"\n        significance = \"Y\"\n    if combo == \"all\":\n        pslimiter = \"\"\n    else:\n        pslimiter = \"(phenomena = :ph and significance = :sig)\"\n        params[\"ph\"] = phenomena\n        params[\"sig\"] = significance\n\n    limiter = \"\"\n    if pslimiter != \"\" or eventlimiter != \"\":\n        limiter = f\" ({pslimiter} {eventlimiter}) and \"\n    # Load up all data by default and then filter it later.\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH data as (\n            SELECT vtec_year,\n            issue, phenomena, significance, eventid, wfo from warnings WHERE\n            {limiter} vtec_year >= :syear and\n            vtec_year <= :eyear {wfolimiter}),\n        agg1 as (\n            SELECT vtec_year, min(issue) as min_issue, eventid, wfo, phenomena,\n            significance from data\n            GROUP by vtec_year, eventid, wfo, phenomena, significance)\n\n        SELECT date(min_issue) as date, count(*)\n        from agg1 GROUP by date ORDER by date ASC\n        \"\"\",\n                limiter=limiter,\n                wfolimiter=wfolimiter,\n            ),\n            conn,\n            params=params,\n            index_col=\"date\",\n            parse_dates=\"date\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df = (\n        df.reindex(\n            pd.date_range(df.index.values[0], date.today(), name=\"date\")\n        )\n        .reset_index()\n        .fillna(0)\n    )\n    df = munge_df(ctx, df)\n    # Compute cumsum\n    df[\"cumsum\"] = df[[\"year\", \"count\"]].groupby(\"year\").cumsum()\n\n    title = vtec.get_ps_string(phenomena, significance)\n    if combo == \"svrtor\":\n        title = \"Severe Thunderstorm + Tornado Warning\"\n    elif combo == \"winter\":\n        title = \"Winter Storm + Blizzard Warning & Winter Weather Advisory\"\n    elif combo == \"all\":\n        title = \"All VTEC Events\"\n    ptitle = f\"NWS WFO: {ctx['_nt'].sts[station]['name']} ({station})\"\n    if station == \"_ALL\":\n        ptitle = \"All NWS Offices\"\n    if opt == \"state\":\n        _p = \"Parishes\" if state == \"LA\" else \"Counties\"\n        ptitle = f\"NWS Issued for {_p} in {reference.state_names[state]}\"\n    if opt == \"fema\":\n        ptitle = f\"NWS Issued for FEMA Region {ctx['fema']}\"\n    ctx[\"xlabel\"] = \"all days plotted\"\n    if ctx[\"limit\"] == \"yes\":\n        mm = \"January 1\" if ctx[\"s\"] == \"jan1\" else \"July 1\"\n        ctx[\"xlabel\"] = f\"{mm} through {date.today():%B %-d}\"\n        ptitle = f\"{ptitle} [{ctx['xlabel']}]\"\n    if ctx[\"s\"] == \"jul1\":\n        ctx[\"xlabel\"] += \" (Year for July 1 shown)\"\n    ctx[\"title\"] = f\"{ptitle}\\n{title} Count\"\n\n    if ctx[\"plot\"] == \"bar\":\n        return make_barplot(ctx, df)\n    fig = figure(title=ctx[\"title\"], apctx=ctx)\n    ax = fig.add_axes((0.05, 0.1, 0.65, 0.8))\n    ann: list[Text] = []\n    for yr in range(ctx[\"syear\"], eyear + 1):\n        df2 = df[df[\"year\"] == yr]\n        if len(df2.index) < 2:\n            continue\n        xr = df2[\"xaxis\"]\n        maxval = df2[\"cumsum\"].max()\n        lp = ax.plot(\n            xr,\n            df2[\"cumsum\"],\n            lw=2,\n            label=f\"{yr} ({maxval:.0f})\",\n            drawstyle=\"steps-post\",\n        )\n        # First row where we hit the max\n        lrow = df2[df2[\"cumsum\"] == maxval].iloc[0]\n        ann.append(\n            ax.text(\n                lrow[\"xaxis\"] + 1,\n                maxval,\n                f\"{yr}\",\n                color=\"w\",\n                va=\"center\",\n                fontsize=10,\n                bbox=dict(\n                    facecolor=lp[0].get_color(), edgecolor=lp[0].get_color()\n                ),\n            )\n        )\n\n    mask = np.zeros(fig.canvas.get_width_height(), bool)\n    fig.canvas.draw()\n\n    attempts = 10\n    lastdoy = df[\"xaxis\"].max()\n    while ann and attempts > 0:\n        attempts -= 1\n        removals = []\n        for a in ann:\n            bbox = a.get_window_extent()\n            x0 = int(bbox.x0)\n            x1 = math.ceil(bbox.x1)\n            y0 = int(bbox.y0)\n            y1 = math.ceil(bbox.y1)\n\n            s = np.s_[x0 : x1 + 1, y0 : y1 + 1]\n            if np.any(mask[s]):\n                x, y = a.get_position()\n                a.set_position([x - int(lastdoy / 14), y])\n            else:\n                mask[s] = True\n                removals.append(a)\n        for rm in removals:\n            ann.remove(rm)\n\n    ax.legend(loc=(1.07, 0), ncol=2, fontsize=10)\n    ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    if ctx[\"s\"] == \"jan1\":\n        ax.set_xticklabels(calendar.month_abbr[1:])\n    else:\n        labels = calendar.month_abbr[7:] + calendar.month_abbr[1:7]\n        ax.set_xticklabels(labels)\n    plot_common(ctx, ax)\n    ax.set_ylim(bottom=0)\n    ax.set_xlim(0, lastdoy)\n\n    return fig, df.drop(columns=[\"xaxis\"])\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p45.py",
    "content": "\"\"\"\nComputes the frequency of having an overcast sky reported.  There\nare a number of caveats to this plot as sensors and observing techniques\nhave changed over the years!  The algorithm specifically looks for the\nOVC condition to be reported in the METAR observation.\n\"\"\"\n\nimport calendar\nfrom datetime import date, datetime\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nPDICT = {\n    \"single\": \"Compute for single hour of the day\",\n    \"all\": \"Compute over all hours of the day\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 86400, \"data\": True}\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        {\n            \"type\": \"select\",\n            \"name\": \"which\",\n            \"default\": \"single\",\n            \"label\": \"Plot Single or All Hours\",\n            \"options\": PDICT,\n        },\n        dict(\n            type=\"hour\", name=\"hour\", label=\"Select Hour of Day:\", default=12\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            label=\"Select Year to Compare by Month:\",\n            default=today.year,\n        ),\n        dict(\n            type=\"month\",\n            name=\"month\",\n            label=\"Select Month to Compare by Year:\",\n            default=today.month,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    hour = ctx[\"hour\"]\n    year = ctx[\"year\"]\n    month = ctx[\"month\"]\n    hr_limiter = (\n        \"and extract(hour from (valid at time zone :tzname) + \"\n        \"'10 minutes'::interval ) = :hour\"\n    )\n    tt = f\"at {datetime(2000, 1, 1, hour, 0):%-I %p}\"\n    if ctx[\"which\"] == \"all\":\n        hr_limiter = \"\"\n        tt = \"for all hours of day\"\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    SELECT extract(year from (valid at time zone :tzname))::int as year,\n    extract(month from (valid at time zone :tzname))::int as month,\n    SUM(case when (skyc1 = 'OVC' or skyc2 = 'OVC' or skyc3 = 'OVC'\n        or skyc4 = 'OVC') then 1 else 0 end) as hits, count(*)\n    from alldata where station = :station and valid > '1951-01-01'\n    {hr_limiter} and report_type = 3 GROUP by year, month order by year, month\n        \"\"\",\n                hr_limiter=hr_limiter,\n            ),\n            conn,\n            params={\n                \"station\": station,\n                \"tzname\": ctx[\"_nt\"].sts[station][\"tzname\"],\n                \"hour\": hour,\n            },\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df[\"freq\"] = df[\"hits\"] / df[\"count\"] * 100.0\n    climo = df.groupby(\"month\").sum()\n    climo[\"freq\"] = climo[\"hits\"] / climo[\"count\"] * 100.0\n\n    title = (\n        f\"({df['year'].min():.0f}-{datetime.now().year}) \"\n        f\"{ctx['_sname']}\\n\"\n        f\"Frequency of Overcast Cloud Observation {tt}\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.subplots(2, 1)\n    ax[0].bar(\n        climo.index.values - 0.2,\n        climo[\"freq\"].values,\n        fc=\"red\",\n        ec=\"red\",\n        width=0.4,\n        label=\"Climatology\",\n        align=\"center\",\n    )\n    for i, row in climo.iterrows():\n        ax[0].text(i - 0.2, row[\"freq\"] + 1, f\"{row['freq']:.0f}\", ha=\"center\")\n\n    thisyear = df[df[\"year\"] == year]\n    if not thisyear.empty:\n        ax[0].bar(\n            thisyear[\"month\"].values + 0.2,\n            thisyear[\"freq\"].values,\n            fc=\"blue\",\n            ec=\"blue\",\n            width=0.4,\n            label=str(year),\n            align=\"center\",\n        )\n    for _, row in thisyear.iterrows():\n        ax[0].text(\n            row[\"month\"] + 0.2,\n            row[\"freq\"] + 1,\n            \"%.0f\" % (row[\"freq\"],),\n            ha=\"center\",\n        )\n    ax[0].set_ylim(0, 100)\n    ax[0].set_xlim(0.5, 12.5)\n    ax[0].legend(ncol=2)\n    ax[0].set_yticks([0, 10, 25, 50, 75, 90, 100])\n    ax[0].set_xticks(range(1, 13))\n    ax[0].grid(True)\n    ax[0].set_xticklabels(calendar.month_abbr[1:])\n    ax[0].set_ylabel(\"Frequency [%]\")\n\n    # Plot second one now\n    obs = df[df[\"month\"] == month]\n    if not obs.empty:\n        ax[1].bar(\n            obs[\"year\"].values, obs[\"freq\"].values, fc=\"tan\", ec=\"orange\"\n        )\n        ax[1].set_ylim(0, 100)\n        ax[1].grid(True)\n        ax[1].set_yticks([0, 10, 25, 50, 75, 90, 100])\n        ax[1].axhline(obs[\"freq\"].mean())\n        ax[1].set_ylabel(f\"{calendar.month_abbr[month]} Frequency [%]\")\n        ax[1].set_xlim(obs[\"year\"].min() - 2, obs[\"year\"].max() + 2)\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p46.py",
    "content": "\"\"\"\nThis chart presents the frequency of observed\nminimum wind chill or maximum heat index over the period of\nrecord for the observation site.  Please note that this application\nrequires the feels like temperature to be additive, so heat index\ngreater than air temperature and wind chill less than air temperature.\n\"\"\"\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.util import month2months\n\nPDICT = {\n    \"wcht\": \"Minimum Wind Chill\",\n    \"heat\": \"Maximum Heat Index\",\n}\nMDICT = {\n    \"all\": \"No Month/Time Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"wcht\",\n            label=\"Which variable to analyze?\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Limit plot by month/season\",\n            options=MDICT,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    offset = 3 if ctx[\"month\"] in [\"all\", \"winter\"] else 0\n    months = month2months(ctx[\"month\"])\n\n    additive = \"feel < tmpf\" if ctx[\"var\"] == \"wcht\" else \"feel > tmpf\"\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT extract(year from valid + ':offset months'::interval)\n                as year,\n            min(feel) as min_feel, max(feel) as max_feel\n            from alldata WHERE station = :station and {additive}\n            and extract(month from valid) = ANY(:months)\n            GROUP by year ORDER by year ASC\n        \"\"\",\n                additive=additive,\n            ),\n            conn,\n            params={\n                \"offset\": offset,\n                \"station\": station,\n                \"months\": months,\n            },\n            index_col=\"year\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found.\")\n\n    ys = []\n    freq = []\n    sz = float(len(df.index))\n    if ctx[\"var\"] == \"wcht\":\n        col = \"min_feel\"\n        for lev in range(int(df[col].max()), int(df[col].min()) - 1, -1):\n            freq.append(len(df[df[col] < lev].index) / sz * 100.0)\n            ys.append(lev)\n    else:\n        col = \"max_feel\"\n        for lev in range(int(df[col].min()), int(df[col].max()) + 1):\n            freq.append(len(df[df[col] > lev].index) / sz * 100.0)\n            ys.append(lev)\n    ys = np.array(ys)\n\n    title = (\n        f\"{ctx['_sname']} ({df.index[0]:.0f}-{df.index[-1]:.0f})\\n\"\n        f\"Frequency of Observed {PDICT[ctx['var']]} over {MDICT[ctx['month']]}\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.subplots(2, 1)\n\n    color = \"b\" if ctx[\"var\"] == \"wcht\" else \"r\"\n    ax[0].barh(ys - 0.4, freq, ec=color, fc=color)\n    ax[0].set_ylabel(f\"{PDICT[ctx['var']]} °F\")\n    ax[0].set_xlabel(\"Frequency [%]\")\n    ax[0].set_xticks([0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95, 100])\n    ax[0].grid(True)\n\n    ax[1].bar(df.index.values, df[col], fc=color, ec=color)\n    ax[1].set_ylim(bottom=df[col].min() - 5)\n    ax[1].set_ylabel(f\"{PDICT[ctx['var']]} °F\")\n    ax[1].grid(True)\n    if offset > 0:\n        ax[1].set_xlabel(\"Year label for spring portion of season\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p47.py",
    "content": "\"\"\"\nThis chart displays the combination of liquid\nprecipitation with snowfall totals for a given month.  The liquid totals\ninclude the melted snow.  So this plot does <strong>not</strong> show\nthe combination of non-frozen vs frozen precipitation. For a given winter\nmonth, not all precipitation falls as snow, so you can not assume that\nthe liquid equivalent did not include some liquid rainfall.\n\"\"\"\n\nimport calendar\n\nimport pandas as pd\nimport seaborn as sns\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.util import utc\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"defaults\"] = {\"_r\": \"86\"}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        {\n            \"type\": \"month\",\n            \"name\": \"month\",\n            \"default\": \"12\",\n            \"label\": \"Select Month:\",\n        },\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=utc().year,\n            label=\"Select Year to Highlight:\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    month = ctx[\"month\"]\n    year = ctx[\"year\"]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        # beat month\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        SELECT year, sum(precip) as precip, sum(snow) as snow from\n        alldata WHERE station = :station and month = :month and\n        precip >= 0 and snow >= 0 GROUP by year ORDER by year ASC\n        \"\"\"),\n            conn,\n            params={\"station\": station, \"month\": month},\n            index_col=\"year\",\n        )\n    if df.empty:\n        raise NoDataFound(\"Failed to find any data for this month.\")\n\n    g = sns.jointplot(\n        x=\"precip\", y=\"snow\", data=df, s=50, color=\"tan\"\n    ).plot_joint(sns.kdeplot, n_levels=6)\n    title = (\n        f\"{ctx['_sname']} ({df.index.min()}-{df.index.max()})\\n\"\n        f\"{calendar.month_name[month]} Snowfall vs Precipitation Totals\"\n    )\n    figure(title=title, apctx=ctx, fig=g.figure)\n    g.figure.tight_layout()\n    g.figure.subplots_adjust(top=0.91)\n    if year in df.index:\n        row = df.loc[year]\n        g.ax_joint.scatter(\n            row[\"precip\"],\n            row[\"snow\"],\n            s=60,\n            marker=\"o\",\n            color=\"r\",\n            zorder=3,\n            label=str(year),\n        )\n    g.ax_joint.grid(True)\n    g.ax_joint.axhline(df[\"snow\"].mean(), lw=2, color=\"black\")\n    g.ax_joint.axvline(df[\"precip\"].mean(), lw=2, color=\"black\")\n\n    g.ax_joint.set_xlim(left=-0.1)\n    g.ax_joint.set_ylim(bottom=-0.3)\n    ylim = g.ax_joint.get_ylim()\n    g.ax_joint.text(\n        df[\"precip\"].mean(),\n        ylim[1],\n        f\"{df['precip'].mean():.2f}\",\n        va=\"top\",\n        ha=\"center\",\n        color=\"white\",\n        bbox=dict(color=\"black\"),\n    )\n    xlim = g.ax_joint.get_xlim()\n    g.ax_joint.text(\n        xlim[1],\n        df[\"snow\"].mean(),\n        f\"{df['snow'].mean():.1f}\",\n        va=\"center\",\n        ha=\"right\",\n        color=\"white\",\n        bbox=dict(color=\"black\"),\n    )\n    g.ax_joint.set_ylabel(\"Snowfall Total [inch]\")\n    g.ax_joint.set_xlabel(\"Precipitation Total (liquid + melted) [inch]\")\n    g.ax_joint.legend(loc=1, scatterpoints=1)\n    return g.figure, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p48.py",
    "content": "\"\"\"\nFor a given watch/warning/advisory type and forecast\nzone, what is the frequency by time of day that the product was valid.  The\ntotal number of events for the county/zone is used for the frequency. Due\nto how the NWS issues some products for counties and some products for\nzones, you may need to try twice to get the proper one selected.\n\n<p><a href=\"/plotting/auto/?q=72\">Autoplot 72</a> is similar to this, but\nplots for a single WFO at a time.\n\"\"\"\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws import vtec\nfrom pyiem.plot import figure_axes\nfrom sqlalchemy.engine import Connection\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"ugc\",\n            name=\"ugc\",\n            default=\"IAZ048\",\n            label=\"Select UGC Zone/County:\",\n        ),\n        dict(\n            type=\"phenomena\",\n            name=\"phenomena\",\n            default=\"WC\",\n            label=\"Select Watch/Warning Phenomena Type:\",\n        ),\n        dict(\n            type=\"significance\",\n            name=\"significance\",\n            default=\"W\",\n            label=\"Select Watch/Warning Significance Level:\",\n        ),\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"postgis\")\ndef plotter(ctx: dict, conn: Connection):\n    \"\"\"Go\"\"\"\n    ugc = ctx[\"ugc\"]\n    phenomena = ctx[\"phenomena\"]\n    significance = ctx[\"significance\"]\n\n    res = conn.execute(\n        sql_helper(\"\"\"\n    SELECT s.wfo, s.tzname, u.name from ugcs u JOIN stations s on\n    (u.wfo = s.id) where ugc = :ugc and end_ts is null and\n    s.network = 'WFO' LIMIT 1\"\"\"),\n        {\"ugc\": ugc},\n    )\n    wfo = None\n    tzname = None\n    name = \"\"\n    if res.rowcount == 1:\n        row = res.fetchone()\n        tzname = row[1]\n        wfo = row[0]\n        name = row[2]\n    params = {\n        \"tzname\": tzname,\n        \"ugc\": ugc,\n        \"phenomena\": phenomena,\n        \"significance\": significance,\n        \"wfo\": wfo,\n    }\n    res = conn.execute(\n        sql_helper(\"\"\"\n    SELECT count(*), min(issue at time zone :tzname),\n    max(issue at time zone :tzname)\n    from warnings WHERE ugc = :ugc and phenomena = :phenomena\n    and significance = :significance and wfo = :wfo\n    \"\"\"),\n        params,\n    )\n    row = res.fetchone()\n    cnt = row[0]\n    sts = row[1]\n    ets = row[2]\n    if sts is None:\n        raise NoDataFound(\"No Results Found, try flipping zone/county\")\n\n    res = conn.execute(\n        sql_helper(\"\"\"\n     WITH coverage as (\n        SELECT extract(year from issue) as yr, eventid,\n        generate_series(issue at time zone :tzname,\n                        expire at time zone :tzname, '1 minute'::interval) as s\n                        from warnings where\n        ugc = :ugc and phenomena = :phenomena and significance = :significance\n        and wfo = :wfo),\n      minutes as (SELECT distinct yr, eventid,\n        (extract(hour from s)::numeric * 60. +\n         extract(minute from s)::numeric) as m\n        from coverage)\n\n    SELECT minutes.m, count(*) from minutes GROUP by m\n          \"\"\"),\n        params,\n    )\n\n    data = np.zeros((1440,), \"f\")\n    for row in res:\n        data[int(row[0])] = row[1]\n\n    df = pd.DataFrame(\n        dict(minute=pd.Series(np.arange(1440)), events=pd.Series(data))\n    )\n\n    vals = data / float(cnt) * 100.0\n    title = (\n        f\"[{ugc}] {name} :: {vtec.get_ps_string(phenomena, significance)} \"\n        f\"({phenomena}.{significance})\\n\"\n        f\"{cnt} Events - {sts:%Y-%m-%d %I:%M %p} to {ets:%Y-%m-%d %I:%M %p}\"\n    )\n\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    ax.bar(np.arange(1440), vals, ec=\"b\", fc=\"b\")\n    if np.max(vals) > 50:\n        ax.set_ylim(0, 100)\n        ax.set_yticks([0, 10, 25, 50, 75, 90, 100])\n    ax.grid()\n    ax.set_xticks(range(0, 1441, 60))\n    ax.set_xticklabels(\n        [\n            \"Mid\",\n            \"\",\n            \"\",\n            \"3 AM\",\n            \"\",\n            \"\",\n            \"6 AM\",\n            \"\",\n            \"\",\n            \"9 AM\",\n            \"\",\n            \"\",\n            \"Noon\",\n            \"\",\n            \"\",\n            \"3 PM\",\n            \"\",\n            \"\",\n            \"6 PM\",\n            \"\",\n            \"\",\n            \"9 PM\",\n            \"\",\n            \"\",\n            \"Mid\",\n        ]\n    )\n    ax.set_xlabel(f\"Timezone: {tzname} (Daylight or Standard)\")\n    ax.set_ylabel(f\"Frequency [%] out of {cnt} Events\")\n    ax.set_xlim(0, 1441)\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p49.py",
    "content": "\"\"\"\nThis plot presents the observed frequency of\nsome daily event happening.  Leap day (Feb 29th) is excluded from the\nanalysis. If you download the data from this application, a placeholder\ndate during the year 2001 is used.</p>\n\n<p>You can specify a given number of forward days to look for the given\nthreshold to happen.  Please be sure to review the aggregate function that\nyou want used over this period of days.\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport matplotlib.dates as mdates\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"high\": \"High Temp (°F)\",\n    \"low\": \"Low Temp (°F)\",\n    \"precip\": \"Precip (inch)\",\n    \"snow\": \"Snowfall (inch)\",\n    \"snowd\": \"Snow Depth (inch)\",\n}\nPDICT2 = {\n    \"gte\": \"Greater than or equal to {threshold}\",\n    \"lt\": \"Less than {threshold}\",\n    \"rng\": \"Between Inclusive {threshold} and {threshold2}\",\n}\nXREF = {\"gte\": \">=\", \"lt\": \"<\"}\nPDICT3 = {\n    \"min\": \"Minimum\",\n    \"avg\": \"Average\",\n    \"max\": \"Maximum\",\n    \"sum\": \"Accumulated\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 86400, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"year\",\n            name=\"syear\",\n            default=1893,\n            min=1893,\n            label=\"Start year for plot\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"eyear\",\n            default=date.today().year,\n            min=1893,\n            label=\"End year (inclusive) for plot\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"snow\",\n            label=\"Select Variable:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"int\",\n            name=\"days\",\n            default=1,\n            gt=0,\n            label=\"Number of Days to Look:\",\n        ),\n        dict(\n            options=PDICT3,\n            type=\"select\",\n            name=\"f\",\n            default=\"avg\",\n            label=\"Statistical Aggregate Function over Number of Days\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"gte\",\n            label=\"Threshold Requirement:\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"float\", name=\"threshold\", default=\"0.1\", label=\"Threshold:\"\n        ),\n        {\n            \"type\": \"float\",\n            \"name\": \"threshold2\",\n            \"default\": 0.2,\n            \"label\": \"Threshold2 (when range is selected) (inclusive value)\",\n        },\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    params = {\"station\": station, \"syear\": ctx[\"syear\"], \"eyear\": ctx[\"eyear\"]}\n    threshold = ctx[\"threshold\"]\n    threshold2 = ctx[\"threshold2\"]\n    params[\"threshold\"] = threshold\n    varname = ctx[\"var\"]\n    if ctx[\"opt\"] == \"rng\":\n        if threshold > threshold2:\n            threshold, threshold2 = threshold2, threshold\n        params[\"threshold\"] = threshold\n        params[\"threshold2\"] = threshold2\n        sql = \"val >= :threshold and val <= :threshold2\"\n        vv = (\n            PDICT2[ctx[\"opt\"]]\n            .replace(\"{threshold}\", str(threshold))\n            .replace(\"{threshold2}\", str(threshold2))\n        )\n        subtitle = f\"Frequency of {PDICT[varname]} {vv}\"\n    else:\n        sql = f\"val::numeric {XREF[ctx['opt']]} :threshold\"\n        vv = PDICT2[ctx[\"opt\"]].replace(\"{threshold}\", str(threshold))\n        subtitle = f\"Frequency of {PDICT[varname]} {vv} \"\n    if varname in [\"high\", \"low\"]:\n        params[\"threshold\"] = int(threshold)\n        params[\"threshold2\"] = int(threshold2)\n    days = max(1, ctx[\"days\"])\n    func = \"avg\" if days == 1 else ctx[\"f\"]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                WITH data as (\n                SELECT sday, {func}({varname})\n                OVER (ORDER by day ASC ROWS between\n                CURRENT ROW and {days} FOLLOWING) as val, day from alldata\n                WHERE station = :station and {varname} is not null and\n                year >= :syear and year <= :eyear)\n                SELECT sday, sum(case when {sql2} then 1 else 0\n                end) as hits, count(*) as total,\n                min(day) as min_date, max(day) as max_date from data\n                WHERE sday != '0229' GROUP by sday ORDER by sday ASC\n            \"\"\",\n                varname=varname,\n                func=func,\n                days=str(days - 1),\n                sql2=sql,\n            ),\n            conn,\n            params=params,\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    # Covert sday into year 2001 date\n    df[\"date\"] = pd.to_datetime(df[\"sday\"] + \"2001\", format=\"%m%d%Y\")\n    df = df.set_index(\"date\")\n    # calculate the frequency\n    df[\"freq\"] = df[\"hits\"] / df[\"total\"] * 100.0\n\n    title = (\n        f\"{ctx['_sname']} \"\n        f\"({df['min_date'].min().year}-{df['max_date'].max().year})\"\n    )\n    if days > 1:\n        subtitle += f\" {PDICT3[func]} over inclusive forward {days} days\"\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    ax.bar(df.index.values, df[\"freq\"], ec=\"b\", fc=\"b\")\n    ax.set_xlim(\n        df.index.min() - timedelta(days=1),\n        df.index.max() + timedelta(days=1),\n    )\n    ax.xaxis.set_major_locator(mdates.MonthLocator())\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%b\"))\n    ax.grid(True)\n    ax.set_ylabel(\"Frequency [%]\")\n    df = df.drop(columns=[\"min_date\", \"max_date\"])\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p5.py",
    "content": "\"\"\"\nThis plot displays the dates with the monthly\nrecord of your choice displayed. In the case of ties, only the most\nrecent occurence is shown.\n\"\"\"\n\nimport calendar\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.util import utc\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"min_range\": \"Minimum Daily High to Low Temperature Range\",\n    \"max_range\": \"Maximum Daily High to Low Temperature Range\",\n    \"max_high\": \"Maximum Daily High Temperature\",\n    \"max_low\": \"Maximum Daily Low Temperature\",\n    \"min_high\": \"Minimum Daily High Temperature\",\n    \"min_low\": \"Minimum Daily Low Temperature\",\n    \"max_precip\": \"Maximum Daily Precipitation\",\n    \"max_snow\": \"Maximum Daily Snowfall\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"data\": True, \"description\": __doc__}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"min_range\",\n            label=\"Select Variable\",\n            options=PDICT,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"var\"]\n\n    tokens = varname.split(\"_\")\n    orderer = \"(high - low)\"\n    if tokens[1] != \"range\":\n        orderer = tokens[1]\n\n    if tokens[0] == \"min\":\n        orderer += \" ASC\"\n    else:\n        orderer += \" DESC\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH ranks as (\n            SELECT month, day, high, low, precip, snow, temp_estimated,\n            precip_estimated,\n            rank() OVER (\n                PARTITION by month ORDER by {orderer} NULLS LAST)\n            from alldata WHERE station = :station)\n\n        select month, day, to_char(day, 'Mon dd, YYYY') as dd, high, low,\n        precip, snow, (high - low) as range, temp_estimated, precip_estimated\n        from ranks\n        WHERE rank = 1 ORDER by month ASC, day DESC\n        \"\"\",\n                orderer=orderer,\n            ),\n            conn,\n            params={\"station\": station},\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    labels = []\n    ranges = []\n    months = []\n    estcol = (\n        \"precip_estimated\"\n        if tokens[1] in [\"precip\", \"snowfall\"]\n        else \"temp_estimated\"\n    )\n    for _, row in df.iterrows():\n        if row[\"month\"] in months:\n            if labels[-1].endswith(\"*\"):\n                continue\n            labels[-1] += \" *\"\n            continue\n        months.append(row[\"month\"])\n        est = \" (E)\" if row[estcol] else \"\"\n        if tokens[1] == \"range\":\n            labels.append(\n                f\"{row[tokens[1]]}{est} \"\n                f\"({row['high']}/{row['low']}) - {row['dd']}\"\n            )\n        else:\n            labels.append(f\"{row[tokens[1]]}{est} - {row['dd']}\")\n        ranges.append(row[tokens[1]])\n\n    syear = \"n/a\"\n    if ctx[\"_nt\"].sts[station][\"archive_begin\"] is not None:\n        syear = ctx[\"_nt\"].sts[station][\"archive_begin\"].year\n    eyear = utc().year\n    title = f\"{ctx['_sname']} ({syear}-{eyear})\\n{PDICT[varname]} by Month\"\n\n    fig = figure(title=title, apctx=ctx)\n\n    # Subplot showing the data\n    ax = fig.add_axes((0.12, 0.1, 0.5, 0.8))\n    ax.barh(np.arange(1, 13), ranges, align=\"center\")\n    ax.set_yticks(range(13))\n    ax.set_yticklabels(calendar.month_name)\n    ax.set_ylim(0, 13)\n    ax.set_xlabel(\n        \"Date most recently set/tied shown, * indicates ties are present\"\n        \", (E) indicates IEM estimated value\"\n    )\n    ax.grid(True)\n    for i, label in enumerate(labels, start=1):\n        ax.annotate(\n            label,\n            xy=(1.01, i),\n            xycoords=(\"axes fraction\", \"data\"),\n            va=\"bottom\",\n        )\n\n    # Create another axis for a cartoon for each month entry to denote the\n    # day of the month the record occurred with a carrot\n    ax = fig.add_axes((0.8, 0.1, 0.17, 0.8), frameon=False)\n    ax.set_xticks([])\n    ax.set_yticks([])\n    for i in range(1, 13):\n        for d in [8, 15, 22, 29]:\n            ax.plot([d, d], [i - 0.1, i + 0.1], lw=2, color=\"#EEE\", zorder=2)\n            if i == 1:\n                ax.text(d, 1 - 0.1, f\"{d}\", color=\"tan\", ha=\"center\", va=\"top\")\n        ax.plot([1, 31], [i, i], lw=2, color=\"tan\", zorder=3)\n        records = df[df[\"month\"] == i]\n        # likely zeros\n        if len(records) > 30:\n            continue\n        for _, row in records.iterrows():\n            ax.scatter(\n                row[\"day\"].day,\n                i + 0.06,\n                marker=\"v\",\n                color=\"red\",\n                s=20,\n                zorder=4,\n            )\n    ax.text(31, 12.5, \"Day of Month\\nRecord(s) Exist\", ha=\"right\", va=\"bottom\")\n    ax.set_ylim(0, 13)\n    ax.set_xlim(-1, 33)  # give some space\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p50.py",
    "content": "\"\"\"\nThis app produces a table of frequencies of\nwind and hail tags used in NWS Severe Thunderstorm Warnings. You have the\nchoice to only plot the issuance or use a computed max value over the\nwarning's lifecycle (including SVSs).  The maximum wind and hail tags\nare computed independently over the lifecycle of the Severe Thunderstorm\nWarning.  In the download, a value of 0 indicates that the tag was not\navailable.\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom pyiem.reference import state_names\n\nPDICT = {\"state\": \"Aggregate by State\", \"wfo\": \"Aggregate by WFO\"}\nPDICT2 = {\"percent\": \"Frequency [%]\", \"count\": \"Count\"}\nPDICT3 = {\n    \"issuance\": \"Only Issuance Considered\",\n    \"max\": \"Computed Max over SVR+SVS\",\n}\nFONTSIZE = 12\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 300}\n    today = datetime.today() + timedelta(days=1)\n\n    desc[\"arguments\"] = [\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"WFO\",\n            default=\"_ALL\",\n            label=\"Select WFO:\",\n            all=True,\n        ),\n        dict(type=\"state\", name=\"state\", default=\"IA\", label=\"Select State:\"),\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"wfo\",\n            label=\"Plot for WFO(all option) or State:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"p\",\n            default=\"percent\",\n            label=\"What to plot:\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT3,\n            default=\"issuance\",\n            label=\"How should SVS updates be considered?\",\n            name=\"agg\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"date1\",\n            optional=True,\n            default=\"2010/04/01\",\n            label=\"Start Date Bounds (optional):\",\n            min=\"2010/04/01\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"date2\",\n            optional=True,\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"End Date Bounds (optional):\",\n            min=\"2010/04/01\",\n            max=today.strftime(\"%Y/%m/%d\"),\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\"name\": \"All Offices\"}\n\n    opt = ctx[\"opt\"]\n    station = ctx[\"station\"]\n    state = ctx[\"state\"]\n    date1 = ctx.get(\"date1\", date(2010, 4, 1))\n    date2 = ctx.get(\"date2\", date.today() + timedelta(days=1))\n    params = {\n        \"sts\": date1,\n        \"ets\": date2,\n        \"wfo\": station if len(station) == 3 else station[1:],\n    }\n    wfo_limiter = \"and wfo = :wfo \"\n    if station == \"_ALL\":\n        wfo_limiter = \"\"\n    status_limiter = \"and status = 'NEW'\"\n    if ctx[\"agg\"] == \"max\":\n        status_limiter = \"\"\n    sql = \"\"\"\n    WITH data as (\n        SELECT wfo, eventid, vtec_year,\n        min(polygon_begin) as min_issue,\n        max(windtag) as max_windtag, max(hailtag) as max_hailtag\n        from sbw WHERE polygon_begin >= :sts and\n        polygon_begin <= :ets {wfo_limiter}\n        and (windtag > 0 or hailtag > 0) and phenomena = 'SV' and\n        significance = 'W' {status_limiter}\n        GROUP by wfo, eventid, vtec_year\n    )\n    select max_windtag as windtag, max_hailtag as hailtag,\n    min(min_issue at time zone 'UTC') as min_issue,\n    max(min_issue at time zone 'UTC') as max_issue, count(*)\n    from data GROUP by windtag, hailtag\n    \"\"\"\n    supextra = \"\"\n    if opt == \"wfo\" and station != \"_ALL\":\n        supextra = (\n            f\"For warnings issued by {station} \"\n            f\"{ctx['_nt'].sts[station]['name']}.\\n\"\n        )\n    if opt == \"state\":\n        supextra = (\n            \"For warnings that covered some portion of \"\n            f\"{state_names[state]}.\\n\"\n        )\n\n        sql = \"\"\"\n        WITH data as (\n            SELECT wfo, eventid, vtec_year,\n            min(polygon_begin) as min_issue,\n            max(windtag) as max_windtag, max(hailtag) as max_hailtag\n            from sbw w, states s\n            WHERE polygon_begin >= :sts and polygon_begin <= :ets and\n            s.state_abbr = :state and ST_Intersects(s.the_geom, w.geom)\n            and (windtag > 0 or hailtag > 0) and phenomena = 'SV' and\n            significance = 'W' {status_limiter}\n            GROUP by wfo, eventid, vtec_year\n        )\n        select max_windtag as windtag, max_hailtag as hailtag,\n        min(min_issue at time zone 'UTC') as min_issue,\n        max(min_issue at time zone 'UTC') as max_issue, count(*)\n        from data GROUP by windtag, hailtag\n        \"\"\"\n        params[\"state\"] = state\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                sql, status_limiter=status_limiter, wfo_limiter=wfo_limiter\n            ),\n            conn,\n            params=params,\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No data was found.\")\n    minvalid = df[\"min_issue\"].min()\n    maxvalid = df[\"max_issue\"].max()\n    df = df.fillna(0)\n    total = df[\"count\"].sum()\n    uniquehail = df[\"hailtag\"].unique().tolist()\n    uniquehail.sort()\n    uniquehail = uniquehail[::-1]\n    uniquewind = df[\"windtag\"].astype(int).unique().tolist()\n    uniquewind.sort()\n\n    gdf = df.set_index([\"hailtag\", \"windtag\"])\n\n    (fig, ax) = figure_axes(apctx=ctx)\n    for (hailtag, windtag), row in gdf.iterrows():\n        y = uniquehail.index(hailtag)\n        x = uniquewind.index(windtag)\n        val = row[\"count\"] / total * 100.0\n        ax.text(\n            x,\n            y,\n            f\"{val:.2f}\" if ctx[\"p\"] == \"percent\" else row[\"count\"],\n            ha=\"center\",\n            fontsize=FONTSIZE,\n            color=\"r\" if val >= 10 else \"k\",\n            va=\"center\",\n            bbox=dict(color=\"white\", boxstyle=\"square,pad=0\"),\n        )\n\n    for htag, row in df.groupby(\"hailtag\").sum(numeric_only=True).iterrows():\n        y = uniquehail.index(htag)\n        x = len(uniquewind)\n        val = row[\"count\"] / total * 100.0\n        ax.text(\n            x,\n            y,\n            f\"{val:.2f}\" if ctx[\"p\"] == \"percent\" else int(row[\"count\"]),\n            ha=\"center\",\n            fontsize=FONTSIZE,\n            color=\"r\" if val >= 10 else \"k\",\n            va=\"center\",\n            bbox=dict(color=\"white\", boxstyle=\"square,pad=0\"),\n        )\n\n    for wtag, row in df.groupby(\"windtag\").sum(numeric_only=True).iterrows():\n        y = -1\n        x = uniquewind.index(wtag)\n        val = row[\"count\"] / total * 100.0\n        ax.text(\n            x,\n            y,\n            f\"{val:.2f}\" if ctx[\"p\"] == \"percent\" else int(row[\"count\"]),\n            ha=\"center\",\n            fontsize=FONTSIZE,\n            color=\"r\" if val >= 10 else \"k\",\n            va=\"center\",\n            bbox=dict(color=\"white\", boxstyle=\"square,pad=0\"),\n        )\n\n    ax.set_xticks(range(len(uniquewind) + 1))\n    ax.set_yticks(range(-1, len(uniquehail)))\n    ax.set_xlim(-0.5, len(uniquewind) + 0.5)\n    ax.set_ylim(-1.5, len(uniquehail) - 0.5)\n\n    def zeros(arr):\n        for idx in [0, -1]:\n            if arr[idx] < 0.1:\n                arr[idx] = \"n/a\"\n        return arr\n\n    ax.set_xticklabels([*zeros(uniquewind), \"Total\"], fontsize=14)\n    ax.set_yticklabels([\"Total\", *uniquehail], fontsize=14)\n    ax.xaxis.tick_top()\n    ax.set_xlabel(\"Wind Speed [mph]\", fontsize=14)\n    ax.set_ylabel(\"Hail Size [inch]\", fontsize=14)\n    ax.xaxis.set_label_position(\"top\")\n    ax.tick_params(top=False, bottom=False, left=False, right=False)\n    fig.suptitle(\n        f\"{PDICT2[ctx['p']]} of NWS Wind/Hail Tags for Svr Tstorm Warn \"\n        f\"{PDICT3[ctx['agg']]}\\n\"\n        f\"{minvalid:%-d %b %Y} through {maxvalid:%-d %b %Y}, \"\n        f\"{df['count'].sum():.0f} warnings\\n{supextra}\"\n        \"Values larger than 10% in red\"\n    )\n    ax.set_position([0.12, 0.05, 0.86, 0.72])\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p51.py",
    "content": "\"\"\"\nThis plot presents accumulated totals and departures\nof growing degree days, precipitation and stress degree days. Leap days\nare not considered for this plot. The light blue area represents the\nrange of accumulated values based on the climatology for the site. The\nclimatology is based on the closest nearby long-term climate site.\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nPDICT = {\n    \"all\": \"Show GDD, Precipitation, and SDD\",\n    \"gdd\": \"Only plot Growing Degree Days\",\n    \"precip\": \"Only plot Precipitation\",\n    \"sdd\": \"Only plot Stress Degree Days\",\n    \"srad\": \"Only plot Solar Radiation\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    if today.month < 5:\n        today = today.replace(year=today.year - 1, month=10, day=1)\n    sts = today.replace(month=5, day=1)\n\n    desc[\"arguments\"] = [\n        dict(\n            type=\"sid\",\n            name=\"station\",\n            default=\"AEEI4\",\n            network=\"ISUSM\",\n            label=\"Select Station\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=sts.strftime(\"%Y/%m/%d\"),\n            label=\"Start Date (inclusive):\",\n            min=\"1893/01/01\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"edate\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"End Date (inclusive):\",\n            min=\"1893/01/01\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"base\",\n            default=\"50\",\n            label=\"Growing Degree Day Base (°F)\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"ceil\",\n            default=\"86\",\n            label=\"Growing Degree Day Ceiling (°F)\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year2\",\n            default=1893,\n            optional=True,\n            label=\"Compare with year (optional):\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year3\",\n            default=1893,\n            optional=True,\n            label=\"Compare with year (optional)\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year4\",\n            default=1893,\n            optional=True,\n            label=\"Compare with year (optional)\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"which\",\n            default=\"all\",\n            options=PDICT,\n            label=\"Which Charts to Show in Plot\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    sdate = ctx[\"sdate\"]\n    edate = ctx[\"edate\"]\n    if sdate > edate:\n        sdate, edate = edate, sdate\n    year2 = ctx.get(\"year2\", 0)\n    year3 = ctx.get(\"year3\", 0)\n    year4 = ctx.get(\"year4\", 0)\n    wantedyears = [sdate.year, year2, year3, year4]\n    yearcolors = [\"r\", \"g\", \"b\", \"purple\"]\n    gddbase = ctx[\"base\"]\n    gddceil = ctx[\"ceil\"]\n    whichplots = ctx[\"which\"]\n    glabel = f\"gdd{gddbase}{gddceil}\"\n\n    # Make sure we have climo info\n    if (\n        station not in ctx[\"_nt\"].sts\n        or ctx[\"_nt\"].sts[station][\"climate_site\"] is None\n    ):\n        raise NoDataFound(\"Unknown station metadata.\")\n\n    # build the climatology\n    climosite = ctx[\"_nt\"].sts[station][\"climate_site\"]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        climo = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT day, sday, gddxx(:gddbase, :gddceil, high, low) as {glabel},\n            sdd86(high, low) as sdd86, precip,\n            coalesce(era5land_srad, hrrr_srad) as srad\n            from alldata WHERE station = :station and\n            year >= 1951 ORDER by day ASC\n            \"\"\",\n                glabel=glabel,\n            ),\n            conn,\n            params={\n                \"gddbase\": gddbase,\n                \"gddceil\": gddceil,\n                \"station\": ctx[\"_nt\"].sts[station][\"climate_site\"],\n            },\n            index_col=\"day\",\n        )\n    if climo.empty:\n        raise NoDataFound(\"Failed to find climatology\")\n    baseyear = int(climo.index.values[0].year)\n    years = (datetime.now().year - baseyear) + 1\n    xlen = int((edate - sdate).days) + 1  # In case of leap day\n    acc = np.zeros((years, xlen))\n    acc[:] = np.nan\n    pacc = np.zeros((years, xlen))\n    pacc[:] = np.nan\n    sacc = np.zeros((years, xlen))\n    sacc[:] = np.nan\n    radacc = np.zeros((years, xlen))\n    radacc[:] = np.nan\n    for year in range(baseyear, datetime.now().year + 1):\n        sts = sdate.replace(year=year)\n        ets = sts + timedelta(days=xlen - 1)\n        x = climo.loc[sts:ets, glabel].cumsum()\n        if x.empty:\n            continue\n        acc[(year - baseyear), : len(x.index)] = x.to_numpy()\n        x = climo.loc[sts:ets, \"precip\"].cumsum()\n        pacc[(year - baseyear), : len(x.index)] = x.to_numpy()\n        x = climo.loc[sts:ets, \"sdd86\"].cumsum()\n        sacc[(year - baseyear), : len(x.index)] = x.to_numpy()\n        x = climo.loc[sts:ets, \"srad\"].cumsum()\n        radacc[(year - baseyear), : len(x.index)] = x.to_numpy()\n\n    sday_climo = climo.groupby(\"sday\").mean()\n    rows = []\n    for i in range(xlen):\n        dt = sdate + timedelta(days=i)\n        sday = dt.strftime(\"%m%d\")\n        rows.append(\n            {\n                \"sday\": sday,\n                f\"c{glabel}\": sday_climo.at[sday, glabel],\n                f\"c{glabel}_acc\": np.nanmean(acc[:, i]),\n                f\"c{glabel}_min_acc\": np.nanmin(acc[:, i]),\n                f\"c{glabel}_max_acc\": np.nanmax(acc[:, i]),\n                \"cprecip\": sday_climo.at[sday, \"precip\"],\n                \"cprecip_acc\": np.nanmean(pacc[:, i]),\n                \"cprecip_min_acc\": np.nanmin(pacc[:, i]),\n                \"cprecip_max_acc\": np.nanmax(pacc[:, i]),\n                \"csdd86\": sday_climo.at[sday, \"sdd86\"],\n                \"csdd86_acc\": np.nanmean(sacc[:, i]),\n                \"csdd86_min_acc\": np.nanmin(sacc[:, i]),\n                \"csdd86_max_acc\": np.nanmax(sacc[:, i]),\n                \"csrad\": sday_climo.at[sday, \"srad\"],\n                \"csrad_acc\": np.nanmean(radacc[:, i]),\n                \"csrad_min_acc\": np.nanmin(radacc[:, i]),\n                \"csrad_max_acc\": np.nanmax(radacc[:, i]),\n            }\n        )\n    climo = pd.DataFrame(rows)\n\n    # build the obs\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT day, to_char(day, 'mmdd') as sday,\n            gddxx(:gddbase, :gddceil, max_tmpf, min_tmpf)\n                as o{glabel},\n            coalesce(pday, 0) as oprecip,\n            sdd86(max_tmpf, min_tmpf) as osdd86,\n            srad_mj as osrad\n            from summary s JOIN stations t on (s.iemid = t.iemid)\n            WHERE id = :station and network = :network and\n            to_char(day, 'mmdd') != '0229'\n            ORDER by day ASC\"\"\",\n                glabel=glabel,\n            ),\n            conn,\n            params={\n                \"gddbase\": gddbase,\n                \"gddceil\": gddceil,\n                \"station\": station,\n                \"network\": ctx[\"network\"],\n            },\n            index_col=None,\n        )\n    # Now we need to join the frames\n    df = pd.merge(df, climo, on=\"sday\")\n    df = df.sort_values(\"day\", ascending=True)\n    df = df.set_index(\"day\")\n    df[\"precip_diff\"] = df[\"oprecip\"] - df[\"cprecip\"]\n    df[f\"{glabel}_diff\"] = df[f\"o{glabel}\"] - df[f\"c{glabel}\"]\n\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    fig = figure(apctx=ctx)\n    if whichplots == \"all\":\n        ax1 = fig.add_axes((0.1, 0.7, 0.8, 0.2))\n        ax2 = fig.add_axes(\n            (0.1, 0.6, 0.8, 0.1), sharex=ax1, facecolor=\"#EEEEEE\"\n        )\n        ax3 = fig.add_axes((0.1, 0.35, 0.8, 0.2), sharex=ax1)\n        ax4 = fig.add_axes((0.1, 0.1, 0.8, 0.2), sharex=ax1)\n        title = (\n            f\"GDD(base={gddbase:.0f},ceil={gddceil:.0f}), Precip, & \"\n            \"SDD(base=86)\"\n        )\n    elif whichplots == \"gdd\":\n        ax1 = fig.add_axes((0.14, 0.31, 0.8, 0.57))\n        ax2 = fig.add_axes(\n            [0.14, 0.11, 0.8, 0.2], sharex=ax1, facecolor=\"#EEEEEE\"\n        )\n        title = f\"GDD(base={gddbase:.0f},ceil={gddceil:.0f})\"\n    elif whichplots == \"precip\":\n        ax3 = fig.add_axes((0.1, 0.11, 0.8, 0.75))\n        ax1 = ax3\n        title = \"Precipitation\"\n    elif whichplots == \"srad\":\n        ax3 = fig.add_axes((0.1, 0.11, 0.8, 0.75))\n        ax1 = ax3\n        title = \"Solar Radiation (MJ/d)\"\n    else:  # sdd\n        ax4 = fig.add_axes((0.1, 0.1, 0.8, 0.8))\n        ax1 = ax4\n        title = \"Stress Degree Days (base=86)\"\n\n    ax1.set_title(\n        f\"Accumulated {title}\\n{ctx['_sname']}\",\n        fontsize=18 if whichplots == \"all\" else 14,\n    )\n\n    for year in wantedyears:\n        if year == 0:\n            continue\n        sts = sdate.replace(year=year)\n        ets = sts + timedelta(days=xlen - 1)\n        color = yearcolors[wantedyears.index(year)]\n        yearlabel = sts.year\n        x = df.loc[sts:ets]\n        if x.empty:\n            continue\n        if sts.year != ets.year:\n            yearlabel = f\"{sts.year}-{ets.year}\"\n        if whichplots in [\"gdd\", \"all\"]:\n            ax1.plot(\n                range(len(x.index)),\n                x[f\"o{glabel}\"].cumsum().values,\n                zorder=6,\n                color=color,\n                label=f\"{yearlabel}\",\n                lw=2,\n            )\n        # Get cumulated precip\n        p = x[\"oprecip\"].cumsum()\n        if whichplots in [\"all\", \"precip\"]:\n            ax3.plot(\n                range(len(p.index)),\n                p.values,\n                color=color,\n                lw=2,\n                zorder=6,\n                label=f\"{yearlabel}\",\n            )\n        p = x[\"osdd86\"].cumsum()\n        if whichplots in [\"all\", \"sdd\"]:\n            ax4.plot(\n                range(len(p.index)),\n                p.values,\n                color=color,\n                lw=2,\n                zorder=6,\n                label=f\"{yearlabel}\",\n            )\n\n        p = x[\"osrad\"].cumsum()\n        if whichplots == \"srad\":\n            ax3.plot(\n                range(len(p.index)),\n                p.values,\n                color=color,\n                lw=2,\n                zorder=6,\n                label=f\"{yearlabel}\",\n            )\n\n        # Plot Climatology\n        if wantedyears.index(year) == 0:\n            x = df.loc[sts:ets, \"c\" + glabel].cumsum()\n            if whichplots in [\"all\", \"gdd\"]:\n                ax1.plot(\n                    range(len(x.index)),\n                    x.values,\n                    color=\"k\",\n                    label=\"Climatology\",\n                    lw=2,\n                    zorder=5,\n                )\n            x = df.loc[sts:ets, \"cprecip\"].cumsum()\n            if whichplots in [\"all\", \"precip\"]:\n                ax3.plot(\n                    range(len(x.index)),\n                    x.values,\n                    color=\"k\",\n                    label=\"Climatology\",\n                    lw=2,\n                    zorder=5,\n                )\n            x = df.loc[sts:ets, \"csdd86\"].cumsum()\n            if whichplots in [\"all\", \"sdd\"]:\n                ax4.plot(\n                    range(len(x.index)),\n                    x.values,\n                    color=\"k\",\n                    label=\"Climatology\",\n                    lw=2,\n                    zorder=5,\n                )\n            x = df.loc[sts:ets, \"csrad\"].cumsum()\n            if whichplots == \"srad\":\n                ax3.plot(\n                    range(len(x.index)),\n                    x.values,\n                    color=\"k\",\n                    label=\"Climatology\",\n                    lw=2,\n                    zorder=5,\n                )\n\n        x = df.loc[sts:ets, glabel + \"_diff\"].cumsum()\n        if whichplots in [\"all\", \"gdd\"]:\n            ax2.plot(\n                range(len(x.index)),\n                x.values,\n                color=color,\n                linewidth=2,\n                linestyle=\"--\",\n            )\n\n    xmin = np.nanmin(acc, 0)\n    xmax = np.nanmax(acc, 0)\n    if whichplots in [\"all\", \"gdd\"]:\n        ax1.fill_between(range(len(xmin)), xmin, xmax, color=\"lightblue\")\n        ax1.grid(True)\n        ax2.grid(True)\n    xmin = np.nanmin(pacc, 0)\n    xmax = np.nanmax(pacc, 0)\n    if whichplots in [\"all\", \"precip\"]:\n        ax3.fill_between(range(len(xmin)), xmin, xmax, color=\"lightblue\")\n        ax3.set_ylabel(\"Precipitation [inch]\")\n        ax3.grid(True)\n    if whichplots == \"srad\":\n        xmin = np.nanmin(radacc, 0)\n        xmax = np.nanmax(radacc, 0)\n        ax3.fill_between(range(len(xmin)), xmin, xmax, color=\"lightblue\")\n        ax3.set_ylabel(\"Solar Radiation [MJ/d]\")\n        ax3.grid(True)\n    xmin = np.nanmin(sacc, 0)\n    xmax = np.nanmax(sacc, 0)\n    if whichplots in [\"all\", \"sdd\"]:\n        ax4.fill_between(range(len(xmin)), xmin, xmax, color=\"lightblue\")\n        ax4.set_ylabel(\"SDD Base 86 °F\")\n        ax4.grid(True)\n\n    if whichplots in [\"all\", \"gdd\"]:\n        ax1.set_ylabel(f\"GDD Base {gddbase:.0f} Ceil {gddceil:.0f} °F\")\n\n        ax1.text(\n            0.5,\n            0.9,\n            (\n                f\"{sdate.month}/{sdate.day} - {edate.month}/{edate.day}\\n\"\n                f\"Climatology {climosite} {baseyear:.0f}-\"\n                f\"{date.today().year:.0f}\"\n            ),\n            transform=ax1.transAxes,\n            ha=\"center\",\n            va=\"center\",\n        )\n\n        ylim = ax2.get_ylim()\n        spread = max([abs(ylim[0]), abs(ylim[1])]) * 1.1\n        ax2.set_ylim(0 - spread, spread)\n        ax2.text(\n            0.0,\n            1.0,\n            \"Accumulated Departure\",\n            transform=ax2.transAxes,\n            bbox=dict(facecolor=\"white\", ec=\"#EEEEEE\", alpha=0.5),\n            va=\"top\",\n            ha=\"left\",\n        )\n        ax2.yaxis.tick_right()\n\n    xticks = []\n    xticklabels = []\n    wanted = [1] if xlen > 31 else [1, 7, 15, 22, 29]\n    now = sdate\n    i = 0\n    while now <= edate:\n        if now.day in wanted:\n            xticks.append(i)\n            xticklabels.append(now.strftime(\"%-d %b\"))\n        now += timedelta(days=1)\n        i += 1\n    if whichplots in [\"all\", \"gdd\"]:\n        ax2.set_xticks(xticks)\n        ax2.set_xticklabels(xticklabels)\n        ax1.legend(loc=2, prop={\"size\": 12})\n        # Remove ticks on the top most plot\n        for label in ax1.get_xticklabels():\n            label.set_visible(False)\n\n        ax1.set_xlim(0, xlen + 1)\n    if whichplots in [\"all\", \"precip\"]:\n        ax3.set_xticks(xticks)\n        ax3.set_xticklabels(xticklabels)\n        ax3.legend(loc=2, prop={\"size\": 10})\n        ax3.set_xlim(0, xlen + 1)\n    if whichplots == \"srad\":\n        ax3.set_xticks(xticks)\n        ax3.set_xticklabels(xticklabels)\n        ax3.legend(loc=2, prop={\"size\": 10})\n        ax3.set_xlim(0, xlen + 1)\n    if whichplots in [\"all\", \"sdd\"]:\n        ax4.set_xticks(xticks)\n        ax4.set_xticklabels(xticklabels)\n        ax4.legend(loc=2, prop={\"size\": 10})\n        ax4.set_xlim(0, xlen + 1)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p52.py",
    "content": "\"\"\"\nGantt chart of watch, warning, and advisories (WaWa) issued\nby an NWS Forecast Office for a start date and number of days of your\nchoice.\n\n<p>The width of the bar is the duration of the event and is a bit difficult\nto explain for some WaWa types.  The color shaded area represents the maximum\nperiod at least one county/zone was included in the event.  The hallow area\nrepresents the period between when the NWS created the event to when it\nfirst hit its issuance time.  This is a quirk of how VTEC works with things\nlike winter storm watches going \"into effect\" at some time in the future. When\nthere is no hallow area, these are events that went into effect immediately\nat issuance.  For example, Severe Thunderstorm Warnings are all this way.\n\"\"\"\n\nfrom datetime import datetime, timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport matplotlib.dates as mdates\nimport pandas as pd\nfrom matplotlib import ticker\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws import vtec\nfrom pyiem.plot import figure\n\nPDICT = {\n    \"wfo\": \"NWS Forecast Office\",\n    \"ugc\": \"County/Zone\",\n}\nPDICT2 = {\n    \"yes\": \"Plot Event ID\",\n    \"no\": \"Do Not Plot Event ID\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 600, \"data\": True}\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"select\",\n            \"name\": \"for\",\n            \"default\": \"wfo\",\n            \"label\": \"Plot for:\",\n            \"options\": PDICT,\n        },\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO:\",\n        ),\n        {\n            \"type\": \"ugc\",\n            \"name\": \"ugc\",\n            \"label\": \"Select UGC Zone:\",\n            \"default\": \"IAC169\",\n        },\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=\"2015/01/01\",\n            label=\"Start Date:\",\n            min=\"2005/10/01\",\n        ),\n        dict(\n            type=\"int\", name=\"days\", default=10, label=\"Number of Days in Plot\"\n        ),\n        {\n            \"type\": \"select\",\n            \"name\": \"labele\",\n            \"default\": \"yes\",\n            \"label\": \"Label Event ID?\",\n            \"options\": PDICT2,\n        },\n    ]\n    return desc\n\n\ndef make_key(fig):\n    \"\"\"Make a cartoon in the lower right corner to illustrate bar.\"\"\"\n    ax = fig.add_axes([0, 0, 1, 1], frameon=False, zorder=-1)\n    ax.text(0.81, 0.16, \"Details of bar\", fontsize=10)\n    ax.add_patch(\n        Rectangle(\n            (0.80, 0.1),\n            0.15,\n            0.05,\n            fc=\"None\",\n            ec=\"k\",\n            zorder=5,\n        )\n    )\n    ax.text(0.84, 0.12, \"Event\\nCreated\", fontsize=8, ha=\"center\", va=\"center\")\n    ax.add_patch(\n        Rectangle(\n            (0.87, 0.1),\n            0.08,\n            0.05,\n            color=vtec.NWS_COLORS.get(\"WC.Y\"),\n            zorder=4,\n        )\n    )\n    ax.text(\n        0.91,\n        0.12,\n        \"Min Issue to\\nMax Expire\",\n        fontsize=8,\n        ha=\"center\",\n        va=\"center\",\n        zorder=6,\n    )\n\n\ndef make_url(row, state):\n    \"\"\"Turn it into a URL\"\"\"\n    wfo = f\"K{row['wfo']}\"\n    if state in [\"AK\", \"HI\", \"GU\"]:\n        wfo = f\"P{row['wfo']}\"\n    elif state == \"PR\":\n        wfo = f\"T{row['wfo']}\"\n    return (\n        f\"https://mesonet.agron.iastate.edu/vtec/f/{row['year']}-O-NEW-{wfo}-\"\n        f\"{row['phenomena']}-{row['significance']}-{row['eventid']:04d}\"\n    )\n\n\ndef compute_ugcs(ugc, valid):\n    \"\"\"Figure out UGCS that overlap this one in space and time.\"\"\"\n    ugcs = []\n    name = \"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n            with useme as (\n            SELECT geom, st_area(geom) from ugcs\n            where (end_ts > :valid or end_ts is null) and\n            begin_ts < :valid and ugc = :ugc LIMIT 1\n            )\n            select ugc, name from ugcs u, useme m where\n            st_area(st_intersection(u.geom, m.geom)) / m.st_area > 0.5\n            and (u.end_ts > :valid or u.end_ts is null) and\n            u.begin_ts < :valid\n        \"\"\"\n            ),\n            {\"valid\": valid, \"ugc\": ugc},\n        )\n        for row in res:\n            ugcs.append(row[0])\n            if row[0] == ugc:\n                name = row[1]\n    return list(set(ugcs)), name\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    sts = ctx[\"sdate\"]\n    if station not in ctx[\"_nt\"].sts:\n        raise NoDataFound(\"Invalid WFO provided.\")\n    tz = ZoneInfo(ctx[\"_nt\"].sts[station][\"tzname\"])\n    sts = datetime(sts.year, sts.month, sts.day, tzinfo=tz)\n    days = ctx[\"days\"]\n\n    ets = sts + timedelta(days=days)\n    params = {\n        \"wfo\": station if len(station) == 3 else station[1:],\n        \"sts\": sts,\n        \"ets\": ets,\n        \"ugcs\": [\n            ctx[\"ugc\"],\n        ],\n    }\n    title = f\"NWS {ctx['_nt'].sts[station]['name']} issued \"\n    limiter = \"wfo = :wfo\"\n    if ctx[\"for\"] == \"ugc\":\n        limiter = \"ugc = ANY(:ugcs)\"\n        params[\"ugcs\"], name = compute_ugcs(ctx[\"ugc\"], sts)\n        title = f\"NWS issued for {name} [{', '.join(params['ugcs'])}] \"\n    date_cols = [\"minproductissue\", \"minissue\", \"maxexpire\", \"maxinitexpire\"]\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT wfo, phenomena, significance, eventid,\n            min(product_issue at time zone 'UTC') as minproductissue,\n            min(issue at time zone 'UTC') as minissue,\n            max(expire at time zone 'UTC') as maxexpire,\n            max(coalesce(init_expire, expire) at time zone 'UTC')\n                as maxinitexpire,\n            extract(year from product_issue)::int as year\n            from warnings\n            WHERE {limiter} and issue > :sts and issue < :ets\n            GROUP by wfo, phenomena, significance, eventid, year\n            ORDER by minproductissue ASC\n        \"\"\",\n                limiter=limiter,\n            ),\n            conn,\n            params=params,\n            index_col=None,\n            parse_dates=date_cols,\n        )\n    if df.empty:\n        raise NoDataFound(\"No events were found for WFO and time period.\")\n    for col in date_cols:\n        df[col] = df[col].dt.tz_localize(timezone.utc)\n    df[\"endts\"] = df[[\"maxexpire\", \"maxinitexpire\"]].max(axis=1)\n    # Flood warnings, for example, could have an issuance until-further-notice\n    # which is not helpful for this plot, so don't allow a maxinitexpire\n    # to be 5 days greater than the maxexpire\n    df.loc[\n        (df[\"maxinitexpire\"] - df[\"maxexpire\"]).dt.total_seconds() > 432000,\n        \"endts\",\n    ] = df[\"maxexpire\"]\n    df[\"label\"] = df.apply(\n        lambda x: vtec.get_ps_string(x[\"phenomena\"], x[\"significance\"]),\n        axis=1,\n    )\n    df[\"duration_secs\"] = (\n        (df[\"endts\"] - df[\"minissue\"]).dt.total_seconds().astype(\"int\")\n    )\n    state = ctx[\"_nt\"].sts[station][\"state\"]\n    df[\"link\"] = df.apply(lambda x: make_url(x, state), axis=1)\n    # If we have lots of WWA, we need to expand vertically a bunch, lets\n    # assume we can plot 5 WAA per 100 pixels\n    title = (\n        f\"{title} Watch/Warning/Advisories\\n\"\n        f\"{sts:%-d %b %Y} through \"\n        f\"{(ets - timedelta(days=1)):%-d %b %Y}\"\n    )\n    fig = figure(title=title, apctx=ctx)\n    ax = fig.add_axes((0.07, 0.09, 0.71, 0.81))\n    fontsize = 8 if len(df.index) > 20 else 10\n\n    used = []\n\n    for i, row in df.iterrows():\n        phsig = f\"{row['phenomena']}.{row['significance']}\"\n        ax.barh(\n            i + 1,\n            row[\"duration_secs\"] / 86400.0,\n            left=row[\"minissue\"],\n            align=\"center\",\n            fc=vtec.NWS_COLORS.get(phsig, \"k\"),\n            ec=vtec.NWS_COLORS.get(phsig, \"k\"),\n            label=None if phsig in used else row[\"label\"],\n            zorder=3,\n        )\n        if row[\"minissue\"] != row[\"minproductissue\"]:\n            # Draw a empty bar with black outline\n            duration = (\n                row[\"endts\"] - row[\"minproductissue\"]\n            ).total_seconds() / 86400.0\n            ax.barh(\n                i + 1,\n                duration,\n                left=row[\"minproductissue\"],\n                align=\"center\",\n                fc=\"None\",\n                ec=\"k\",\n                label=None,\n                zorder=4,\n            )\n        used.append(phsig)\n        # Figure out where there is room for the label to go.\n        x1 = (row[\"endts\"] - sts).total_seconds() / (86400.0 * days)\n        # place to the right if end of bar is less than 70% of the way\n        if x1 < 0.7:\n            align = \"left\"\n            xpos = row[\"endts\"] + timedelta(minutes=90)\n        else:\n            align = \"right\"\n            xpos = row[\"minproductissue\"] - timedelta(minutes=90)\n        textcolor = vtec.NWS_COLORS.get(phsig if phsig != \"TO.A\" else \"X\", \"k\")\n        label = row[\"label\"].replace(\"Weather\", \"Wx\")\n        if ctx[\"labele\"] == \"yes\":\n            label = f\"{label} {row['eventid']}\"\n        ax.text(\n            xpos,\n            i + 1,\n            label,\n            color=textcolor,\n            ha=align,\n            va=\"center\",\n            bbox=dict(color=\"white\", boxstyle=\"square,pad=0\"),\n            fontsize=fontsize,\n        )\n\n    ax.set_ylabel(\"Sequential Product Issuance\")\n\n    ax.set_ylim(0, len(df.index) + 1)\n    ax.yaxis.set_major_locator(ticker.MaxNLocator(integer=True))\n    ax.xaxis.set_minor_locator(mdates.DayLocator(interval=1, tz=tz))\n    xinterval = int(days / 7) + 1\n    ax.xaxis.set_major_locator(mdates.DayLocator(interval=xinterval, tz=tz))\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%-d %b\", tz=tz))\n\n    ax.grid(True)\n\n    ax.set_xlim(sts, ets)\n    ax.set_xlabel(f\"Timezone: {ctx['_nt'].sts[station]['tzname']}\")\n\n    ax.legend(\n        loc=\"upper left\",\n        bbox_to_anchor=(1.0, 1.0),\n        fancybox=True,\n        shadow=True,\n        ncol=1,\n        scatterpoints=1,\n        fontsize=8,\n    )\n    make_key(fig)\n    # worried about breaking API\n    for col in date_cols:\n        df[col] = df[col].dt.strftime(\"%Y-%m-%dT%H:%M:%S\")\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p53.py",
    "content": "\"\"\"\nBased on hourly observations, this plot displays the frequency of a given\nvariable falling within a set of thresholds.  The thresholds are defined by\nthe user and must be in ascending order.  The plot is broken down by week\nof the year.  There is an option to control how hours are handled that do\nnot have the given variable reported.  This gets thorny with non-continuously\nmonitored / reported variables like wind gust. If you turn that setting off,\nthe weekly totals will add to 100%, but you should not assume that all hours\nare accounted for or that it represents a true frequency of time.\n\"\"\"\n\nimport calendar\nfrom datetime import datetime\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nPDICT = {\n    \"tmpf\": \"Air Temperature\",\n    \"dwpf\": \"Dew Point Temperature\",\n    \"feel\": \"Feels Like Temperature\",\n    \"sknt\": \"Wind Speed\",\n    \"gust\": \"Wind Gust\",\n    \"alti\": \"Pressure\",\n    \"p01i\": \"Precipitation\",\n    \"vsby\": \"Visibility\",\n    \"mslp\": \"Mean Sea Level Pressure\",\n}\nUNITS = {\n    \"tmpf\": \"°F\",\n    \"dwpf\": \"°F\",\n    \"feel\": \"°F\",\n    \"sknt\": \"knots\",\n    \"gust\": \"knots\",\n    \"alti\": \"inches\",\n    \"p01i\": \"inches\",\n    \"vsby\": \"miles\",\n    \"mslp\": \"millibars\",\n}\nCAST = {\n    \"tmpf\": \"int\",\n    \"dwpf\": \"int\",\n    \"feel\": \"int\",\n}\nMDICT = {\n    \"yes\": \"Yes, account for missing / no reports\",\n    \"no\": \"No, ignore missing / no reports\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 86400, \"data\": True}\n    tu = \"[F, inch, %, knots, mb]\"\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"tmpf\",\n            name=\"var\",\n            label=\"Select variable to plot:\",\n        ),\n        dict(\n            type=\"float\",\n            name=\"t1\",\n            default=0,\n            label=f\"Threshold #1 (lowest) {tu}\",\n        ),\n        dict(type=\"float\", name=\"t2\", default=32, label=f\"Threshold #2 {tu}\"),\n        dict(type=\"float\", name=\"t3\", default=50, label=f\"Threshold #3 {tu}\"),\n        dict(type=\"float\", name=\"t4\", default=70, label=f\"Threshold #4 {tu}\"),\n        dict(\n            type=\"float\",\n            name=\"t5\",\n            default=90,\n            label=f\"Threshold #5 (highest) {tu}\",\n        ),\n        {\n            \"type\": \"select\",\n            \"name\": \"missing\",\n            \"default\": \"yes\",\n            \"label\": \"Account for missing / no reports in totals?\",\n            \"options\": MDICT,\n        },\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    # Ensure that the thresholds are in order\n    arr = [ctx[\"t1\"], ctx[\"t2\"], ctx[\"t3\"], ctx[\"t4\"], ctx[\"t5\"]]\n    arr.sort()\n    if arr != [ctx[\"t1\"], ctx[\"t2\"], ctx[\"t3\"], ctx[\"t4\"], ctx[\"t5\"]]:\n        raise NoDataFound(\"Thresholds must be in ascending order\")\n    v = ctx[\"var\"]\n    cst = CAST.get(v, \"float\")\n    t1 = float(ctx[\"t1\"]) if cst == \"float\" else int(ctx[\"t1\"])\n    t2 = float(ctx[\"t2\"]) if cst == \"float\" else int(ctx[\"t2\"])\n    t3 = float(ctx[\"t3\"]) if cst == \"float\" else int(ctx[\"t3\"])\n    t4 = float(ctx[\"t4\"]) if cst == \"float\" else int(ctx[\"t4\"])\n    t5 = float(ctx[\"t5\"]) if cst == \"float\" else int(ctx[\"t5\"])\n    params = {\n        \"station\": ctx[\"zstation\"],\n        \"t1\": t1,\n        \"t2\": t2,\n        \"t3\": t3,\n        \"t4\": t4,\n        \"t5\": t5,\n    }\n    mlim = f\"and {v} is not null\" if ctx[\"missing\"] == \"no\" else \"\"\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    SELECT extract(week from valid) as week,\n    min(valid) as min_valid, max(valid) as max_valid,\n    sum(case when {v}::{cst} < :t1 then 1 else 0 end) as d1,\n    sum(case when {v}::{cst} < :t2 and {v}::{cst} >= :t1 then 1 else 0 end)\n    as d2,\n    sum(case when {v}::{cst} < :t3 and {v}::{cst} >= :t2 then 1 else 0 end)\n    as d3,\n    sum(case when {v}::{cst} < :t4 and {v}::{cst} >= :t3 then 1 else 0 end)\n    as d4,\n    sum(case when {v}::{cst} < :t5 and {v}::{cst} >= :t4 then 1 else 0 end)\n    as d5,\n    sum(case when {v}::{cst} >= :t5 then 1 else 0 end) as d6,\n    sum(case when {v} is null then 1 else 0 end) as dnull,\n    count(*)\n    from alldata where station = :station and report_type = 3 {mlim}\n    GROUP by week ORDER by week ASC\n        \"\"\",\n                v=v,\n                cst=cst,\n                mlim=mlim,\n            ),\n            conn,\n            params=params,\n            index_col=\"week\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No observations found for query.\")\n\n    for i in range(1, 7):\n        df[f\"p{i}\"] = df[f\"d{i}\"] / df[\"count\"] * 100.0\n    sts = datetime(2012, 1, 1)\n    xticks = []\n    for i in range(1, 13):\n        ts = sts.replace(month=i)\n        xticks.append(ts.timetuple().tm_yday / 7.0)\n\n    title = f\"Hourly {PDICT[v]} {UNITS[v]} Frequencies \"\n    subtitle = (\n        f\"{ctx['_sname']} \"\n        f\"({df.iloc[0]['min_valid'].year}-{df.iloc[0]['max_valid'].year})\"\n    )\n    if ctx[\"missing\"] == \"no\":\n        subtitle += \" [Missing/No Report Hours Ignored]\"\n    (fig, ax) = figure_axes(apctx=ctx, title=title, subtitle=subtitle)\n    x = df.index.values - 1\n    if ctx[\"missing\"] == \"yes\":\n        val = df[\"dnull\"].sum() / df[\"count\"].sum() * 100.0\n        ax.bar(\n            x,\n            df[\"dnull\"].values,\n            bottom=(\n                df[\"p6\"] + df[\"p5\"] + df[\"p4\"] + df[\"p3\"] + df[\"p2\"] + df[\"p1\"]\n            ).values,\n            width=1,\n            fc=\"white\",\n            ec=\"None\",\n            label=f\"Missing/No Report ({val:.2f}%)\",\n        )\n    val = df[\"d6\"].sum() / df[\"count\"].sum() * 100.0\n    ax.bar(\n        x,\n        df[\"p6\"].values,\n        bottom=(df[\"p5\"] + df[\"p4\"] + df[\"p3\"] + df[\"p2\"] + df[\"p1\"]).values,\n        width=1,\n        fc=\"red\",\n        ec=\"None\",\n        label=f\"Above {t5} ({val:.2f}%)\",\n    )\n    val = df[\"d5\"].sum() / df[\"count\"].sum() * 100.0\n    ax.bar(\n        x,\n        df[\"p5\"].values,\n        bottom=(df[\"p4\"] + df[\"p3\"] + df[\"p2\"] + df[\"p1\"]).values,\n        width=1,\n        fc=\"tan\",\n        ec=\"None\",\n        label=f\">={t4},<{t5} ({val:.2f}%)\",\n    )\n    val = df[\"d4\"].sum() / df[\"count\"].sum() * 100.0\n    ax.bar(\n        x,\n        df[\"p4\"].values,\n        bottom=(df[\"p3\"] + df[\"p2\"] + df[\"p1\"]).values,\n        width=1,\n        fc=\"yellow\",\n        ec=\"None\",\n        label=f\">={t3},<{t4} ({val:.2f}%)\",\n    )\n    val = df[\"d3\"].sum() / df[\"count\"].sum() * 100.0\n    ax.bar(\n        x,\n        df[\"p3\"].values,\n        width=1,\n        fc=\"green\",\n        bottom=(df[\"p2\"] + df[\"p1\"]).values,\n        ec=\"None\",\n        label=f\">={t2},<{t3} ({val:.2f}%)\",\n    )\n    val = df[\"d2\"].sum() / df[\"count\"].sum() * 100.0\n    ax.bar(\n        x,\n        df[\"p2\"].values,\n        bottom=df[\"p1\"].values,\n        width=1,\n        fc=\"blue\",\n        ec=\"None\",\n        label=f\">={t1},<{t2} ({val:.2f}%)\",\n    )\n    val = df[\"d1\"].sum() / df[\"count\"].sum() * 100.0\n    ax.bar(\n        x,\n        df[\"p1\"].values,\n        width=1,\n        fc=\"purple\",\n        ec=\"None\",\n        label=f\"Below {t1} ({val:.2f}%)\",\n    )\n\n    ax.grid(True, zorder=11)\n    ax.set_ylabel(\"Frequency [%]\")\n\n    ax.set_xticks(xticks)\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_xlim(0, 53)\n    ax.set_ylim(0, 100)\n    ax.set_yticks([0, 10, 25, 50, 75, 90, 100])\n\n    # Shrink current axis's height by 10% on the bottom\n    box = ax.get_position()\n    ax.set_position(\n        [box.x0, box.y0 + box.height * 0.2, box.width, box.height * 0.8]\n    )\n\n    ax.legend(\n        loc=\"upper center\",\n        bbox_to_anchor=(0.5, -0.1),\n        fancybox=True,\n        shadow=True,\n        ncol=3,\n        scatterpoints=1,\n        fontsize=12,\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p54.py",
    "content": "\"\"\"\nThis application plots the difference in morning\nlow or afternoon high temperature between two sites of your choice.\nThe morning is\ndefined as the period between midnight and 8 AM local time.  The afternoon\nhigh is defined as the period between noon and 8 PM.  If any difference\nis greater than 25 degrees, it is omitted from this analysis.  This app\nmay take a while to generate a plot, so please be patient!</p>\n\n<p><a href=\"/plotting/auto/?q=250\">Autoplot 250</a> generates a comparison\nof an hourly variable between two sites.</p>\n\"\"\"\n\nimport calendar\nfrom datetime import datetime\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure, get_cmap\n\nPDICT = {\n    \"low\": \"Morning Low (midnight to 8 AM)\",\n    \"high\": \"Afternoon High (noon to 8 PM)\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation1\",\n            default=\"ALO\",\n            network=\"IA_ASOS\",\n            label=\"Select Station 1:\",\n        ),\n        dict(\n            type=\"zstation\",\n            name=\"zstation2\",\n            default=\"OLZ\",\n            network=\"IA_ASOS\",\n            label=\"Select Station 2:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"varname\",\n            default=\"low\",\n            options=PDICT,\n            label=\"Select Comparison\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"Greens\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station1 = ctx[\"zstation1\"]\n    station2 = ctx[\"zstation2\"]\n    varname = ctx[\"varname\"]\n\n    aggfunc = \"min\"\n    tlimit = \"0 and 8\"\n    if varname == \"high\":\n        aggfunc = \"max\"\n        tlimit = \"12 and 20\"\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH one as (\n        SELECT date(valid), {aggfunc}(tmpf::int) as d, avg(sknt)\n        from alldata where station = :station1\n        and extract(hour from valid at time zone :tz1) between {tlimit}\n        and tmpf between -70 and 140  GROUP by date),\n\n        two as (\n        SELECT date(valid), {aggfunc}(tmpf::int) as d, avg(sknt)\n        from alldata where station = :station2\n        and extract(hour from valid at time zone :tz2) between {tlimit}\n        and tmpf between -70 and 140 GROUP by date)\n\n        SELECT one.date as day,\n        extract(week from one.date) as week,\n        one.d - two.d as delta,\n        one.avg as sknt,\n        two.avg as sknt2\n        from one JOIN two on (one.date = two.date) WHERE one.avg >= 0\n        and one.d - two.d between -25 and 25\n        \"\"\",\n                aggfunc=aggfunc,\n                tlimit=tlimit,\n            ),\n            conn,\n            params={\n                \"station1\": station1,\n                \"tz1\": ctx[\"_nt1\"].sts[station1][\"tzname\"],\n                \"station2\": station2,\n                \"tz2\": ctx[\"_nt2\"].sts[station2][\"tzname\"],\n            },\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    sts = datetime(2012, 1, 1)\n    xticks = []\n    for i in range(1, 13):\n        ts = sts.replace(month=i)\n        xticks.append(int(ts.strftime(\"%j\")))\n\n    fig = figure(apctx=ctx)\n    ax = fig.subplots(2, 1)\n\n    tt = \"Mid - 8 AM Low\" if varname == \"low\" else \"Noon - 8 PM High\"\n    ax[0].set_title(\n        f\"[{station1}] {ctx['_nt1'].sts[station1]['name']} minus \"\n        f\"[{station2}] {ctx['_nt2'].sts[station2]['name']}\\n\"\n        f\"{tt} Temp Difference Period: {df['day'].min()} - {df['day'].max()}\"\n    )\n\n    bins = np.arange(-20.5, 20.5, 1)\n    H, xedges, yedges = np.histogram2d(\n        df[\"week\"].to_numpy(),\n        df[\"delta\"].to_numpy(),\n        [np.arange(54), list(bins)],\n    )\n    H = np.ma.array(H)\n    H.mask = np.ma.where(H < 1, True, False)\n    ax[0].pcolormesh(\n        (xedges - 1) * 7, yedges, H.transpose(), cmap=get_cmap(ctx[\"cmap\"])\n    )\n    ax[0].set_xticks(xticks)\n    ax[0].set_xticklabels(calendar.month_abbr[1:])\n    ax[0].set_xlim(0, 366)\n\n    y = []\n    for i in range(np.shape(H)[0]):\n        y.append(np.ma.sum(H[i, :] * (bins[:-1] + 0.5)) / np.ma.sum(H[i, :]))  # noqa\n\n    ax[0].plot(xedges[:-1] * 7, y, zorder=3, lw=3, color=\"k\")\n    ax[0].plot(xedges[:-1] * 7, y, zorder=3, lw=1, color=\"w\")\n\n    rng = min([max([df[\"delta\"].max(), 0 - df[\"delta\"].min()]), 12])\n    ax[0].set_ylim(0 - rng - 2, rng + 2)\n    ax[0].grid(True)\n    ax[0].set_ylabel(f\"{'Low' if varname == 'low' else 'High'} Temp Diff °F\")\n    ax[0].text(\n        -0.01,\n        1.02,\n        f\"{station1}\\nWarmer\",\n        transform=ax[0].transAxes,\n        va=\"top\",\n        ha=\"right\",\n        fontsize=8,\n    )\n    ax[0].text(\n        -0.01,\n        -0.02,\n        f\"{station1}\\nColder\",\n        transform=ax[0].transAxes,\n        va=\"bottom\",\n        ha=\"right\",\n        fontsize=8,\n    )\n\n    H, xedges, yedges = np.histogram2d(\n        df[\"sknt\"].to_numpy(),\n        df[\"delta\"].to_numpy(),\n        [np.arange(31), list(bins)],\n    )\n    H = np.ma.array(H)\n    H.mask = np.where(H < 1, True, False)\n    ax[1].pcolormesh(\n        (xedges - 0.5), yedges, H.transpose(), cmap=get_cmap(ctx[\"cmap\"])\n    )\n\n    y = []\n    x = []\n    for i in range(np.shape(H)[0]):\n        _ = np.ma.sum(H[i, :] * (bins[:-1] + 0.5)) / np.ma.sum(H[i, :])\n        if not np.ma.is_masked(_):\n            x.append(xedges[i])\n            y.append(_)\n\n    ax[1].plot(x, y, zorder=3, lw=3, color=\"k\")\n    ax[1].plot(x, y, zorder=3, lw=1, color=\"w\")\n\n    ax[1].set_ylim(0 - rng - 2, rng + 2)\n    ax[1].grid(True)\n    ax[1].set_xlim(left=-0.25)\n    ax[1].set_xlabel(f\"Average Wind Speed [kts] for {station1}\")\n    ax[1].set_ylabel(f\"{'Low' if varname == 'low' else 'High'} Temp Diff °F\")\n    ax[1].text(\n        -0.01,\n        1.02,\n        f\"{station1}\\nWarmer\",\n        transform=ax[1].transAxes,\n        va=\"top\",\n        ha=\"right\",\n        fontsize=8,\n    )\n    ax[1].text(\n        -0.01,\n        -0.02,\n        f\"{station1}\\nColder\",\n        transform=ax[1].transAxes,\n        va=\"bottom\",\n        ha=\"right\",\n        fontsize=8,\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p55.py",
    "content": "\"\"\"\nThis plot displays a comparison of various daily\ntemperature climatologies.  The National Center for Environmental\nInformation (NCEI) releases a 30 year climatology every ten years.  This\ndata is smoothed to remove day to day variability.  The raw daily averages\nare shown computed from the daily observation archive maintained by the\nIEM.\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"month\",\n            name=\"month\",\n            default=date.today().month,\n            label=\"Select Month:\",\n        ),\n        dict(\n            type=\"year\",\n            min=1850,\n            label=\"Minimum Inclusive Year (if data exists) for IEM Average\",\n            name=\"syear\",\n            default=1850,\n        ),\n        dict(\n            type=\"year\",\n            min=1850,\n            label=\"Maximum Inclusive Year (if data exists) for IEM Average\",\n            name=\"eyear\",\n            default=date.today().year,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    month = ctx[\"month\"]\n\n    ncei91 = ctx[\"_nt\"].sts[station][\"ncei91\"]\n    ncei81 = ctx[\"_nt\"].sts[station][\"ncdc81\"]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        with obs as (\n            SELECT sday, avg(high) as avgh, avg(low) as avgl,\n            avg((high+low)/2.) as avgt, min(year) as min_year,\n            max(year) as max_year from alldata\n            WHERE station = :station and month = :month\n            and year >= :syear and year <= :eyear\n            GROUP by sday\n        ), c91 as (\n        SELECT to_char(valid, 'mmdd') as sday, high, low, (high+low)/2. as avgt\n        from ncei_climate91 where station = :ncei91\n        ), c81 as (\n        SELECT to_char(valid, 'mmdd') as sday, high, low, (high+low)/2. as avgt\n        from ncdc_climate81 where station = :ncei81\n        ), c71 as (\n        select to_char(valid, 'mmdd') as sday, high, low, (high+low)/2. as avgt\n        from ncdc_climate71 where station = :climate_site\n        )\n\n        SELECT o.sday, o.min_year, o.max_year,\n        o.avgh as iem_avgh,\n        c91.high as ncei91_avgh,\n        c81.high as ncei81_avgh,\n        c71.high as ncei71_avgh,\n        o.avgl as iem_avgl,\n        c91.low as ncei91_avgl,\n        c81.low as ncei81_avgl,\n        c71.low as ncei71_avgl,\n        o.avgt as iem_avgt,\n        c91.avgt as ncei91_avgt,\n        c81.avgt as ncei81_avgt,\n        c71.avgt as ncei71_avgt\n        from obs o LEFT JOIN c91 ON o.sday = c91.sday\n        LEFT JOIN c81 ON o.sday = c81.sday\n        LEFT JOIN c71 ON o.sday = c71.sday\n        ORDER by o.sday ASC\n        \"\"\"),\n            conn,\n            params={\n                \"station\": station,\n                \"month\": month,\n                \"syear\": ctx[\"syear\"],\n                \"eyear\": ctx[\"eyear\"],\n                \"ncei91\": ctx[\"_nt\"].sts[station][\"ncei91\"],\n                \"ncei81\": ctx[\"_nt\"].sts[station][\"ncdc81\"],\n                \"climate_site\": ctx[\"_nt\"].sts[station][\"climate_site\"],\n            },\n            index_col=\"sday\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    title = (\n        f\"{ctx['_sname']} :: Daily \"\n        f\"Climate Comparison for {calendar.month_name[month]}\"\n    )\n    fig = figure(\n        apctx=ctx,\n        title=title,\n        subtitle=(\n            f\"NCEI91 Station: {ncei91} NCEI81 Station: {ncei81} \"\n            f\"NCEI71 Station: {ctx['_nt'].sts[station]['climate_site']}\"\n        ),\n    )\n    height = 0.21\n    ax = [\n        fig.add_axes((0.1, 0.08 + height * 2 + 0.18, 0.85, height)),\n        fig.add_axes((0.1, 0.08 + height + 0.09, 0.85, height)),\n        fig.add_axes((0.1, 0.08, 0.85, height)),\n    ]\n    x = list(range(1, len(df.index) + 1))\n    for i, c in enumerate([\"avgh\", \"avgl\", \"avgt\"]):\n        ax[i].bar(\n            x,\n            df[f\"iem_{c}\"],\n            width=0.8,\n            fc=\"tan\",\n            align=\"center\",\n            label=(\n                f\"IEM {df['min_year'].min():.0f}-{df['max_year'].max():.0f} \"\n                \"Obs Avg\"\n            ),\n        )\n        for prefix, label, color in zip(\n            [\"ncei91\", \"ncei81\", \"ncei71\"],\n            [\"NCEI 1991-2020\", \"NCEI 1981-2010\", \"NCEI 1971-2000\"],\n            [\"red\", \"blue\", \"green\"],\n            strict=True,\n        ):\n            if df[f\"{prefix}_{c}\"].isna().all():\n                continue\n            ax[i].plot(\n                x,\n                df[f\"{prefix}_{c}\"],\n                lw=2,\n                zorder=2,\n                color=color,\n                label=label,\n            )\n        ax[i].grid(True)\n        ymin = (\n            df[[f\"iem_{c}\", f\"ncei91_{c}\", f\"ncei81_{c}\", f\"ncei71_{c}\"]]\n            .min()\n            .min()\n        )\n        ax[i].set_ylim(bottom=ymin - 2)\n\n    ax[0].set_ylabel(\"High Temp °F\")\n    ax[1].set_ylabel(\"Low Temp °F\")\n    ax[2].set_ylabel(\"Average Temp °F\")\n\n    ax[2].legend(\n        loc=\"lower center\",\n        bbox_to_anchor=(0.5, 1),\n        fancybox=True,\n        shadow=True,\n        ncol=4,\n        scatterpoints=1,\n        fontsize=10,\n    )\n\n    ax[2].set_xlabel(f\"Day of {calendar.month_name[month]}\")\n    ax[2].set_xlim(0.5, len(x) + 0.5)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p56.py",
    "content": "\"\"\"\nThis chart shows the time partitioned frequency of having\nat least one watch/warning/advisory (WWA) issued by the Weather Forecast\nOffice (top plot) and the overall number of WWA issued events\n(bottom plot). This plot hopefully\nanswers the question of which day/week/month of the year is most common\nto get a certain WWA type and which week has seen the most WWAs issued.\nThe plot\nonly considers issuance date. When plotting for a state, an event is\ndefined on a per forecast office basis.\n\n<p><strong>Updated 21 Nov 2023:</strong> An experimental attempt is now\nincluded on the plot to estimate the climatological favored period for the\ngiven event type.  This algorithm is experimental and attempts to make life\nchoices on if it thinks the climatology is bimodal or not.  Feedback welcome!\n\"\"\"\n\nimport calendar\n\nimport pandas as pd\nfrom pyiem import reference\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws import vtec\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_FEMA, FEMA_REGIONS, fema_region2states\nfrom iemweb.mlib import unrectify_wfo\n\nOPT = {\n    \"state\": \"Summarize by State\",\n    \"wfo\": \"Summarize by NWS Forecast Office\",\n    \"fema\": \"Summarize by FEMA Region\",\n}\nPDICT = {\n    \"doy\": \"Day of the Year\",\n    \"week\": \"Week of the Year\",\n    \"month\": \"Month of the Year\",\n}\nOFFSETS = {\n    \"doy\": 367,\n    \"week\": 53,\n    \"month\": 12,\n}\nPDICT2 = {\n    \"jan\": \"January 1\",\n    \"jul\": \"July 1\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"week\",\n            label=\"Partition By:\",\n            name=\"how\",\n        ),\n        {\n            \"type\": \"select\",\n            \"options\": PDICT2,\n            \"default\": \"jan\",\n            \"label\": \"Start plot on given date:\",\n            \"name\": \"start\",\n        },\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            options=OPT,\n            default=\"wfo\",\n            label=\"How to Spatially Group Statistics:\",\n        ),\n        dict(\n            type=\"state\",\n            name=\"state\",\n            default=\"IA\",\n            label=\"Select State (if appropriate):\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO (if appropriate):\",\n        ),\n        ARG_FEMA,\n        dict(\n            type=\"phenomena\",\n            name=\"phenomena\",\n            default=\"WC\",\n            label=\"Select Watch/Warning Phenomena Type:\",\n        ),\n        dict(\n            type=\"significance\",\n            name=\"significance\",\n            default=\"W\",\n            label=\"Select Watch/Warning Significance Level:\",\n        ),\n    ]\n    return desc\n\n\ndef compute_plot_climo(ax, df: pd.DataFrame):\n    \"\"\"Figure out the climatology.\"\"\"\n    # Our data frame is by week of the year\n    # Our test for bimodal is if the top 5 weeks have a intermediate\n    # value less than 50% of the top week\n    df2 = df.sort_values(by=\"count\", ascending=False).head(5)\n    df3 = df.loc[df2.index.min() : df2.index.max() + 1]\n    bimodal = df3[\"count\"].max() > (df3[\"count\"].min() * 2)\n\n    # Figure out the indicies that should contain our climos\n    idx1 = df2.index[0]\n    idx2 = None\n    if bimodal:\n        # pick the furthest week from the top week\n        maxdist = 0\n        for idx in df2.index:\n            dist = abs(idx - idx1)\n            if dist > maxdist:\n                maxdist = dist\n                idx2 = idx\n    # apply a 80/20 rule, attempting to minimize number of weeks to find\n    # 80% of the events\n    threshold = df[\"count\"].sum() * (0.3 if bimodal else 0.8)\n    ymax = df[\"count\"].max()\n    hits = 0\n    for weeks in range(4, 44):\n        rolsum = df[\"count\"].rolling(window=weeks, center=False).sum()\n        if rolsum.max() < threshold:\n            continue\n        df2 = df[rolsum == rolsum.max()]\n        # clear some space to plot the climo\n        ax.set_ylim(0, ymax * 1.3)\n        left = df2.index[0] - (weeks * 7)\n        if hits == 1 and bimodal and (left > idx2 or idx2 > df2.index[0]):\n            continue\n        if idx2 is not None and hits == 1 and left <= idx1 <= df2.index[0]:\n            return\n        ax.barh(\n            ymax * 1.1,\n            weeks * 7,\n            left=left,\n            height=(ymax * 0.12),\n            color=\"tan\",\n            label=None if hits > 0 else \"Favored Season\",\n        )\n        ax.text(\n            left + (weeks * 7) / 2.0,\n            ymax * 1.1,\n            f\"{weeks} Weeks\\n\"\n            f\"{rolsum.max() / df['count'].sum() * 100.0:.0f}% Events\",\n            ha=\"center\",\n            va=\"center\",\n        )\n        if hits == 0:\n            ax.legend(loc=(0.8, 1.01))\n        hits += 1\n        if not bimodal or hits == 2:\n            return\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    opt = ctx[\"opt\"]\n    state = ctx[\"state\"][:2]\n    phenomena = ctx[\"phenomena\"]\n    significance = ctx[\"significance\"]\n    station = ctx[\"station\"][:4]\n    params = {\n        \"ph\": phenomena,\n        \"sig\": significance,\n        \"wfo\": unrectify_wfo(station),\n    }\n    limiter = \" wfo = :wfo \"\n    if station not in ctx[\"_nt\"].sts:\n        raise NoDataFound(\"ERROR: Unknown WFO Identifier.\")\n    title = f\"[{station}] NWS {ctx['_nt'].sts[station]['name']}\"\n    if opt == \"state\":\n        title = f\"State of {reference.state_names[state]}\"\n        limiter = \" substr(ugc, 1, 2) = :state \"\n        params[\"state\"] = state\n    elif opt == \"fema\":\n        title = f\"FEMA {FEMA_REGIONS[ctx['fema']]}\"\n        limiter = \" substr(ugc, 1, 2) = ANY(:states) \"\n        params[\"states\"] = fema_region2states(ctx[\"fema\"])\n    agg = f\"extract({ctx['how']} from issue)\"\n    if ctx[\"how\"] == \"week\":\n        agg = \"(extract(doy from issue) / 7)::int\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        with obs as (\n            SELECT distinct vtec_year as yr,\n            {agg} as datum, wfo, eventid\n            from warnings WHERE\n            {limiter} and phenomena = :ph and significance = :sig\n        )\n        SELECT yr::int, datum, count(*) from obs GROUP by yr, datum\n        ORDER by yr ASC\n        \"\"\",\n                limiter=limiter,\n                agg=agg,\n            ),\n            conn,\n            params=params,\n            index_col=None,\n        )\n\n    if df.empty:\n        raise NoDataFound(\"ERROR: No Results Found!\")\n\n    # Top Panel: count\n    title = (\n        f\"{title}\\n\"\n        f\"{vtec.get_ps_string(phenomena, significance)} \"\n        f\"({phenomena}.{significance}) Events - {df['yr'].min():.0f} to \"\n        f\"{df['yr'].max():.0f}\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.subplots(2, 1, sharex=True)\n    gdf = (\n        df[[\"datum\", \"count\"]]\n        .groupby(\"datum\")\n        .agg(\n            years=pd.NamedAgg(column=\"count\", aggfunc=\"count\"),\n            count=pd.NamedAgg(column=\"count\", aggfunc=\"sum\"),\n        )\n        .copy()\n    )\n    # We need to fill in missing values\n    if ctx[\"how\"] == \"doy\":\n        gdf = gdf.reindex(range(1, 367), fill_value=0)\n    elif ctx[\"how\"] == \"week\":\n        gdf = gdf.reindex(range(53), fill_value=0)\n    elif ctx[\"how\"] == \"month\":\n        gdf = gdf.reindex(range(1, 13), fill_value=0)\n    # Duplicate gdf so that we can plot centered on 1 July\n    gdf2 = (\n        gdf.reset_index()\n        .assign(datum=lambda x: x[\"datum\"] + OFFSETS[ctx[\"how\"]])\n        .set_index(\"datum\")\n    )\n    gdf = pd.concat([gdf, gdf2])\n    df = df.rename(columns={\"datum\": ctx[\"how\"]})\n    width = 0.8\n    xticks = []\n    xticklabels = []\n    if ctx[\"how\"] == \"week\":\n        gdf.index = gdf.index.values * 7\n        width = 6.5\n    if ctx[\"how\"] in [\"doy\", \"week\"]:\n        for i, dt in enumerate(pd.date_range(\"2000/1/1\", \"2001/12/31\")):\n            if dt.day == 1:\n                xticks.append(i + 1)\n                xticklabels.append(dt.strftime(\"%b\"))\n    else:\n        xticks = range(1, 25)\n        xticklabels = calendar.month_abbr[1:] + calendar.month_abbr[1:]\n\n    if ctx[\"how\"] == \"week\":\n        if ctx[\"start\"] == \"jul\":\n            compute_plot_climo(ax[1], gdf.iloc[26:79])  # only send 1 year\n        else:\n            compute_plot_climo(ax[1], gdf.iloc[:53])  # only send 1 year\n    ax[0].bar(gdf.index.values, gdf[\"years\"], width=width)\n    ax[0].grid()\n    ax[0].set_ylabel(\"Years with 1+ Event\")\n\n    # Bottom Panel: events\n    ax[1].bar(gdf.index.values, gdf[\"count\"], width=width)\n    ax[1].set_ylabel(\"Total Event Count\")\n    ax[1].grid()\n    ax[1].set_xlabel(f\"Partitioned by {PDICT[ctx['how']]}\")\n    ax[1].set_xticks(xticks)\n    ax[1].set_xticklabels(xticklabels)\n    # sharex is on\n    if ctx[\"start\"] == \"jul\":\n        if ctx[\"how\"] in [\"doy\", \"week\"]:\n            ax[1].set_xlim(183, 183 + 365)\n        else:\n            ax[1].set_xlim(6.5, 18.5)\n    else:\n        ax[1].set_xlim(\n            0 if ctx[\"how\"] == \"month\" else -6.5,\n            13 if ctx[\"how\"] == \"month\" else 366,\n        )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p57.py",
    "content": "\"\"\"\nThis plot displays the monthly records or climatology for\na station of your choice.  The current month for the current day is not\nconsidered for the analysis, except for total precipitation.\n\"\"\"\n\nimport calendar\nfrom datetime import date, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"avg_temp\": \"Average Daily Temperature\",\n    \"avg_high_temp\": \"Average High Temperature\",\n    \"avg_low_temp\": \"Average Low Temperature\",\n    \"rain_days\": \"Days with Measurable Precipitation\",\n    \"total_precip\": \"Total Precipitation\",\n}\nPDICT2 = {\"min\": \"Minimum\", \"mean\": \"Climatology\", \"max\": \"Maximum\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            options=PDICT,\n            name=\"varname\",\n            default=\"avg_temp\",\n            label=\"Variable to Plot\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT2,\n            name=\"agg\",\n            default=\"max\",\n            label=\"Aggregate Option\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"varname\"]\n    agg = ctx[\"agg\"]\n\n    lastday = date.today()\n    if varname == \"total_precip\" and agg == \"max\":\n        lastday += timedelta(days=1)\n    else:\n        lastday = lastday.replace(day=1)\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"SELECT year, month, avg((high+low)/2.) as avg_temp,\n        avg(high) as avg_high_temp, avg(low) as avg_low_temp,\n        sum(precip) as total_precip,\n        sum(case when precip > 0.005 then 1 else 0 end) as rain_days\n        from alldata where station = :station and day < :lastday\n        GROUP by year, month\n        \"\"\"),\n            conn,\n            params={\"station\": station, \"lastday\": lastday},\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    resdf = pd.DataFrame(\n        dict(monthname=pd.Series(calendar.month_abbr[1:], index=range(1, 13))),\n        index=pd.Series(range(1, 13), name=\"month\"),\n    )\n    for _varname in PDICT:\n        for _agg in [\"min\", \"max\"]:\n            df2 = df[[_varname, \"month\", \"year\"]]\n            df2 = df2[\n                df[_varname] == df.groupby(\"month\")[_varname].transform(_agg)\n            ].copy()\n            df2 = df2.rename(\n                columns={\n                    \"year\": f\"{_agg}_{_varname}_year\",\n                    _varname: f\"{_agg}_{_varname}\",\n                },\n            ).set_index(\"month\")\n            resdf = resdf.join(df2)\n        # Special for mean operation\n        df2 = (\n            df[[_varname, \"month\"]]\n            .groupby(\"month\")\n            .mean()\n            .rename(columns={_varname: f\"mean_{_varname}\"})\n        )\n        resdf = resdf.join(df2)\n\n    # The above can end up with duplicates\n    resdf = resdf.groupby(level=0)\n    resdf = resdf.last()\n    col = f\"{agg}_{varname}\"\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown Station Metadata.\")\n    title = (\n        f\"{ctx['_sname']}\\n\"\n        f\"{PDICT2[agg]} {PDICT[varname]} [{ab.year}-{lastday.year}]\"\n    )\n    if col == \"mean_total_precip\":\n        title += (\n            f\" {resdf['mean_total_precip'].sum():.2f} inches over \"\n            f\"{resdf['mean_rain_days'].sum():.0f} days\"\n        )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n\n    offset = 0.2 if col == \"mean_total_precip\" else 0\n    ax.bar(\n        np.arange(1, 13) - offset,\n        resdf[col],\n        fc=\"pink\",\n        align=\"center\",\n        width=0.4 if col == \"mean_total_precip\" else 0.8,\n    )\n    for month, row in resdf.iterrows():\n        yearcol = f\"{col}_year\"\n        if np.isnan(row[col]):\n            continue\n        yearlabel = \"\" if yearcol not in resdf.columns else f\"\\n{row[yearcol]}\"\n        ax.text(\n            month - offset,\n            row[col],\n            f\"{row[col]:.2f}{yearlabel}\",\n            ha=\"center\",\n            va=\"bottom\",\n            bbox={\"color\": \"white\", \"boxstyle\": \"square,pad=0\"},\n        )\n    if col == \"mean_total_precip\":\n        ax2 = ax.twinx()\n        bars = ax2.bar(\n            np.arange(1, 13) + 0.2, resdf[\"mean_rain_days\"], width=0.4\n        )\n        for mybar in bars:\n            ax2.text(\n                mybar.get_x() + 0.2,\n                mybar.get_height() + 0.2,\n                f\"{mybar.get_height():.1f}\",\n                ha=\"center\",\n                bbox={\"color\": \"white\", \"boxstyle\": \"square,pad=0.1\"},\n            )\n        ax2.set_ylabel(\"Measurable Precip Days\")\n    ax.set_xlim(0.5, 12.5)\n    ax.set_ylim(top=resdf[col].max() * 1.2)\n    ylabel = \"Temperature °F\"\n    if varname == \"total_precip\":\n        ylabel = \"Precipitation [inch]\"\n    elif varname == \"rain_days\":\n        ylabel = \"Measurable Precipitation Days\"\n    ax.set_ylabel(ylabel)\n    ax.grid(True)\n    ax.set_xticks(np.arange(1, 13))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n\n    box = ax.get_position()\n    ax.set_position([box.x0, box.y0, box.width, box.height * 0.95])\n\n    return fig, resdf\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p58.py",
    "content": "\"\"\"\nDisplays the number of times that a single day's\nprecipitation was greater than some portion of the monthly total. The\ndefault settings provide the frequency of getting half of the month's\nprecipitation within one 24 hour period.\n\"\"\"\n\nimport calendar\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"text\",\n            name=\"threshold\",\n            default=50,\n            label=\"Percentage of Monthly Precipitation on One Day\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    threshold = float(ctx[\"threshold\"])\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            WITH monthly as (\n            SELECT year, month, max(precip), sum(precip)\n            from alldata\n            WHERE station = :station\n                       and precip is not null GROUP by year, month)\n\n            SELECT month,\n            sum(case when max > (sum * :thres) then 1 else 0 end) as hits,\n            max(case when max > (sum * :thres) then year else null end)\n                as last_year,\n            count(*) as years from monthly GROUP by month ORDER by month ASC\n            \"\"\"),\n            conn,\n            params={\"station\": station, \"thres\": threshold / 100.0},\n            index_col=\"month\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df[\"freq\"] = df[\"hits\"] / df[\"years\"] * 100.0\n\n    title = (\n        f\"{ctx['_sname']}\\n\"\n        f\"Frequency of one day having >= {threshold:.0f}% of that month's \"\n        \"precip total\"\n    )\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n\n    ax.bar(df.index, df[\"freq\"], align=\"center\")\n    for i, row in df.iterrows():\n        label = f\"{row['freq']:.1f}%\\n{row['last_year']:.0f}\"\n        if pd.isna(row[\"last_year\"]):\n            label = \"None\"\n        ax.text(\n            i,\n            row[\"freq\"] + 2,\n            label,\n            ha=\"center\",\n            bbox=dict(color=\"white\"),\n        )\n    ax.grid(True)\n    ax.set_xlim(0.5, 12.5)\n    ax.set_ylim(0, 100 if df[\"freq\"].max() < 90 else 115)\n    ax.set_ylabel(f\"Percentage of Years, out of {df['years'].max():.0f} total\")\n    ax.set_yticks([0, 10, 25, 50, 75, 90, 100])\n    ax.set_xticks(range(1, 13))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_xlabel(\"Year of last occurrence shown\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p59.py",
    "content": "\"\"\"\nThis plot presents a climatology of wind\nobservations.  The top panel presents the u (east/west) and v (north/south)\ncomponents.  The bottom panel is the simple average of the wind speed\nmagnitude.  The plotted information contains a seven day smoother.  If you\ndownload the raw data, it will not contain this smoothing.\n\"\"\"\n\nimport calendar\n\nimport numpy as np\nimport pandas as pd\nfrom metpy.calc import wind_components\nfrom metpy.units import units\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.util import utc\n\nPDICT = {\n    \"mps\": \"Meters per Second\",\n    \"kt\": \"Knots\",\n    \"kmh\": \"Kilometers per Hour\",\n    \"mph\": \"Miles per Hour\",\n}\nXREF_UNITS = {\n    \"mps\": units(\"meter / second\"),\n    \"kt\": units(\"knot\"),\n    \"kmh\": units(\"kilometer / hour\"),\n    \"mph\": units(\"mile / hour\"),\n}\n\n\ndef smooth(x):\n    \"\"\"Smooth the data\"\"\"\n    return pd.Series(x).rolling(7, min_periods=1).mean()\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"station\",\n            default=\"DSM\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"units\",\n            default=\"mph\",\n            label=\"Wind Speed Units:\",\n            options=PDICT,\n        ),\n    ]\n    return desc\n\n\ndef add_plot(ctx):\n    \"\"\"Do plotting.\"\"\"\n    title = (\n        f\"{ctx['_sname']} :: Daily Average Component Wind Speed\\n\"\n        f\"[{ctx['ab'].year}-{utc().year}] 7 day smooth \"\n        f\"filter applied, {len(ctx['df'].index):.0f} obs found\"\n    )\n    ctx[\"fig\"] = figure(apctx=ctx, title=title)\n    axes = ctx[\"fig\"].subplots(2, 1)\n    ax = axes[0]\n    ax.plot(\n        np.arange(1, len(ctx[\"u\"])),\n        smooth(ctx[\"u\"][:-1]),\n        color=\"r\",\n        label=\"u, West(+) : East(-) component\",\n        lw=2,\n    )\n    ax.plot(\n        np.arange(1, len(ctx[\"v\"])),\n        smooth(ctx[\"v\"][:-1]),\n        color=\"b\",\n        label=\"v, South(+) : North(-) component\",\n        lw=2,\n    )\n    ax.set_xticks([1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335])\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.legend(ncol=2, fontsize=11, loc=(0.0, -0.25))\n    ax.grid(True)\n    ax.set_xlim(0, 366)\n    ax.set_ylabel(f\"Average Wind Speed\\n{PDICT.get(ctx['units'])}\")\n\n    box = ax.get_position()\n    ax.set_position(\n        [box.x0, box.y0 + box.height * 0.1, box.width, box.height * 0.9]\n    )\n\n    ax = axes[1]\n    ax.plot(\n        np.arange(1, len(ctx[\"mag\"])),\n        smooth(ctx[\"mag\"][:-1]),\n        color=\"g\",\n        lw=2,\n        label=\"Speed Magnitude\",\n    )\n    ax.legend(loc=\"best\")\n    ax.set_xticks([1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335])\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_ylabel(f\"Average Wind Speed\\n{PDICT[ctx['units']]}\")\n    ax.grid(True)\n    ax.set_xlim(0, 366)\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    ctx[\"ab\"] = ctx[\"_nt\"].sts[ctx[\"station\"]][\"archive_begin\"]\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT extract(doy from valid) as doy, sknt, drct from alldata\n            where station = :station and sknt >= 0 and drct >= 0\n            and report_type = 3\"\"\"),\n            conn,\n            params={\"station\": ctx[\"station\"]},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No data Found.\")\n\n    # Compute components in MPS\n    u, v = wind_components(\n        (df[\"sknt\"].to_numpy() * units(\"knot\")).to(units(\"meter / second\")),\n        df[\"drct\"].to_numpy() * units(\"degree\"),\n    )\n    df[\"u\"] = u.m\n    df[\"v\"] = v.m\n    gdf = df.groupby(by=\"doy\").mean()\n    ctx[\"u\"] = (\n        (gdf[\"u\"].to_numpy() * units(\"meter / second\"))\n        .to(XREF_UNITS[ctx[\"units\"]])\n        .m\n    )\n    ctx[\"v\"] = (\n        (gdf[\"v\"].to_numpy() * units(\"meter / second\"))\n        .to(XREF_UNITS[ctx[\"units\"]])\n        .m\n    )\n    ctx[\"mag\"] = (\n        (gdf[\"sknt\"].to_numpy() * units(\"knot\")).to(XREF_UNITS[ctx[\"units\"]]).m\n    )\n\n    df2 = pd.DataFrame(\n        dict(\n            u=pd.Series(u),\n            v=pd.Series(v),\n            mag=pd.Series(ctx[\"mag\"]),\n            day_of_year=pd.Series(np.arange(1, 367)),\n        )\n    )\n    ctx[\"df\"] = df\n    add_plot(ctx)\n    return ctx[\"fig\"], df2\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p6.py",
    "content": "\"\"\"\nThis application plots out the distribution of\nsome monthly metric for single month for all tracked sites within one\nstate.  The plot presents the distribution and normalized frequency\nfor a specific year and for all years combined for the given month.\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem import reference\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom scipy.stats import norm\nfrom sqlalchemy.engine import Connection\n\nPDICT = {\n    \"sum-precip\": \"Total Precipitation [inch]\",\n    \"avg-high\": \"Average Daily High [°F]\",\n    \"avg-low\": \"Average Daily Low [°F]\",\n    \"avg-t\": \"Average Daily Temp [°F]\",\n    \"avg-era5land_srad\": \"Average Daily Solar Radiation (ERA5Land) [MJ m-2]\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(type=\"state\", name=\"state\", default=\"IA\", label=\"Select State:\"),\n        dict(\n            type=\"year\", name=\"year\", default=today.year, label=\"Select Year\"\n        ),\n        dict(\n            type=\"month\",\n            name=\"month\",\n            default=today.month,\n            label=\"Select Month\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"type\",\n            default=\"sum-precip\",\n            label=\"Which metric to plot?\",\n            options=PDICT,\n        ),\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"coop\")\ndef plotter(ctx: dict, conn: Connection) -> tuple:\n    \"\"\"Go\"\"\"\n    state = ctx[\"state\"]\n    year = ctx[\"year\"]\n    month = ctx[\"month\"]\n    ptype = ctx[\"type\"]\n    ptype_climo = ptype.split(\"-\")[1]\n\n    # Compute the bulk statistics for climatology\n    df = pd.read_sql(\n        sql_helper(\n            \"\"\"\n    WITH yearly as (\n        SELECT station, year, sum(precip) as sum_precip,\n        avg(high) as avg_high, avg(low) as avg_low,\n        avg(era5land_srad) as avg_era5land_srad,\n        avg((high+low)/2.) as avg_temp from {table}\n        WHERE month = :month GROUP by station, year)\n\n    SELECT avg(sum_precip) as avg_precip, stddev(sum_precip) as std_precip,\n    avg(avg_high) as avg_high, stddev(avg_high) as std_high,\n    avg(avg_temp) as avg_t, stddev(avg_high) as std_t,\n    avg(avg_low) as avg_low, stddev(avg_low) as std_low,\n    avg(avg_era5land_srad) as avg_era5land_srad,\n    stddev(avg_era5land_srad) as std_era5land_srad\n    from yearly\n    \"\"\",\n            table=f\"alldata_{state.lower()}\",\n        ),\n        conn,\n        params={\"month\": month},\n        index_col=None,\n    )\n    if df.empty:\n        raise NoDataFound(\"No Data Found\")\n    climo_avg = df.at[0, f\"avg_{ptype_climo}\"]\n    climo_std = df.at[0, f\"std_{ptype_climo}\"]\n    df = pd.read_sql(\n        sql_helper(\n            \"\"\"\n    WITH yearly as (\n        SELECT station, year, sum(precip) as sum_precip,\n        avg(high) as avg_high, avg(low) as avg_low,\n        avg(era5land_srad) as avg_era5land_srad,\n        avg((high+low)/2.) as avg_temp from {table}\n        WHERE month = :month GROUP by station, year),\n    agg1 as (\n        SELECT station, avg(sum_precip) as precip,\n        avg(avg_high) as high, avg(avg_low) as low,\n        avg(avg_era5land_srad) as era5land_srad,\n        avg(avg_temp) as temp from yearly GROUP by station),\n    thisyear as (\n        SELECT station, sum_precip, avg_high, avg_low, avg_temp,\n        avg_era5land_srad from yearly WHERE year = :year)\n\n    SELECT a.station, a.precip as climo_precip, a.high as climo_high,\n    a.low as climo_low, a.temp as climo_t,\n    t.sum_precip as \"sum-precip\", t.avg_high as \"avg-high\",\n    t.avg_low as \"avg-low\", t.avg_temp as \"avg-t\",\n    t.avg_era5land_srad as \"avg-era5land_srad\",\n    a.era5land_srad as \"climo_era5land_srad\"\n    FROM agg1 a JOIN thisyear t on (a.station = t.station)\n    \"\"\",\n            table=f\"alldata_{state.lower()}\",\n        ),\n        conn,\n        params={\"year\": year, \"month\": month},\n        index_col=\"station\",\n    )\n    if (\n        f\"{state}0000\" not in df.index\n        or pd.isna(climo_avg)\n        or pd.isna(climo_std)\n    ):\n        raise NoDataFound(\"No Data Found\")\n    stateavg = df.at[f\"{state}0000\", ptype]\n\n    title = (\n        f\"{reference.state_names[state]} {year} {calendar.month_name[month]} \"\n        f\"{PDICT[ptype]} Distribution\\nNumber of stations: {len(df.index)}\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    _, bins, _ = ax.hist(\n        df[ptype].dropna(), 20, fc=\"lightblue\", ec=\"lightblue\", density=1\n    )\n    y = norm.pdf(bins, df[ptype].mean(), df[ptype].std())\n    ax.plot(\n        bins,\n        y,\n        \"b--\",\n        lw=2,\n        label=(\n            f\"{year} Normal Dist. \"\n            r\"$\\sigma$=\"\n            f\"{df[ptype].std():.2f} \"\n            r\"$\\mu$=\"\n            f\"{df[ptype].mean():.2f}\"\n        ),\n    )\n\n    bins = np.linspace(\n        climo_avg - (climo_std * 3.0), climo_avg + (climo_std * 3.0), 30\n    )\n    y = norm.pdf(bins, climo_avg, climo_std)\n    ax.plot(\n        bins,\n        y,\n        \"g--\",\n        lw=2,\n        label=(\n            r\"Climo Normal Dist. $\\sigma$=\"\n            f\"{climo_std:.2f} \"\n            r\"$\\mu$=\"\n            f\"{climo_avg:.2f}\"\n        ),\n    )\n\n    if stateavg is not None:\n        ax.axvline(\n            stateavg,\n            label=f\"{year} Statewide Avg {stateavg:.2f}\",\n            color=\"b\",\n            lw=2,\n        )\n    stateavg = df.at[f\"{state}0000\", \"climo_\" + ptype_climo]\n    if stateavg is not None:\n        ax.axvline(\n            stateavg,\n            label=f\"Climo Statewide Avg {stateavg:.2f}\",\n            color=\"g\",\n            lw=2,\n        )\n    ax.set_xlabel(PDICT[ptype])\n    ax.set_ylabel(\"Normalized Frequency\")\n    ax.grid(True)\n    box = ax.get_position()\n    ax.set_position([box.x0, 0.26, box.width, 0.65])\n    ax.legend(ncol=2, fontsize=12, loc=(-0.05, -0.35))\n    if ptype == \"sum-precip\":\n        ax.set_xlim(left=0)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p60.py",
    "content": "\"\"\"\nThis plot presents hourly variable metrics from automated\nstations.  Values are\npartitioned by week of the year to smooth out some of the day to day\nvariation.\n\n<p><strong>Updated 28 Jun 2022</strong>: Partitioning by week is now\ndone by taking the day of the year divided by 7 instead of iso-week\ncalculation.  This hopefully makes the data presentation more straight\nforward.\n\"\"\"\n\nimport calendar\nfrom datetime import date, datetime\n\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes, get_cmap, pretty_bins\n\nPDICT = {\"above\": \"At or Above Threshold\", \"below\": \"Below Threshold\"}\nPDICT2 = {\n    \"tmpf\": \"Air Temperature\",\n    \"dwpf\": \"Dew Point Temp\",\n    \"feel\": \"Feels Like Temp\",\n    \"p01i\": \"Precipitation\",\n    \"relh\": \"Relative Humidity\",\n    \"vsby\": \"Visibility\",\n}\nUNITS = {\n    \"tmpf\": \"F\",\n    \"dwpf\": \"F\",\n    \"feel\": \"F\",\n    \"p01i\": \"inch\",\n    \"relh\": \"%\",\n    \"vsby\": \"miles\",\n}\nPDICT3 = {\n    \"freq\": \"Frequency\",\n    \"min_value\": \"Minimum Value\",\n    \"max_value\": \"Maximum Value\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"cache\"] = 86400\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"tmpf\",\n            options=PDICT2,\n            label=\"Which Variable:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"w\",\n            default=\"freq\",\n            label=\"Which statistic to plot:\",\n            options=PDICT3,\n        ),\n        dict(\n            type=\"float\",\n            name=\"threshold\",\n            default=32,\n            label=(\n                \"[For Frequency Option] Threshold \"\n                \"(Temperature in F, RH in %, precip in inch)\"\n            ),\n        ),\n        dict(\n            type=\"select\",\n            name=\"direction\",\n            default=\"below\",\n            label=\"[For Frequency Option] Threshold direction:\",\n            options=PDICT,\n        ),\n        dict(\n            optional=True,\n            type=\"date\",\n            name=\"sdate\",\n            default=\"1900/01/01\",\n            label=\"Inclusive Start Local Date (optional):\",\n        ),\n        dict(\n            optional=True,\n            type=\"date\",\n            name=\"edate\",\n            default=date.today().strftime(\"%Y/%m/%d\"),\n            label=\"Exclusive End Local Date (optional):\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"jet\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef get_df(ctx):\n    \"\"\"Get the dataframe with data.\"\"\"\n    station = ctx[\"zstation\"]\n    threshold = ctx[\"threshold\"]\n    direction = ctx[\"direction\"]\n    varname = ctx[\"var\"]\n    mydir = \"<\" if direction == \"below\" else \">=\"\n    timelimiter = \"\"\n    if station not in ctx[\"_nt\"].sts:\n        raise NoDataFound(\"Unknown station metadata.\")\n    tzname = ctx[\"_nt\"].sts[station][\"tzname\"]\n    if ctx.get(\"sdate\"):\n        timelimiter += (\n            f\" and valid at time zone '{tzname}' >= '{ctx['sdate']}'\"\n        )\n    if ctx.get(\"edate\"):\n        timelimiter += f\" and valid at time zone '{tzname}' < '{ctx['edate']}'\"\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            WITH data as (\n                SELECT date(valid at time zone :tzname),\n                date_trunc('hour', (valid + '10 minutes'::interval)\n                at time zone :tzname) as local_valid,\n                max({varname}) as d from alldata WHERE station = :station\n                and {varname} is not null {timelimiter}\n                and report_type != 1 GROUP by date, local_valid\n            )\n            SELECT (extract(doy from date) / 7)::int as week,\n            extract(hour from local_valid) as hour,\n            min(d) as min_value, max(d) as max_value,\n            sum(case when d {mydir} :thres then 1 else 0 end),\n            count(*),\n            min(local_valid)::date as min_valid,\n            max(local_valid)::date as max_valid\n            from data GROUP by week, hour\n            \"\"\",\n                mydir=mydir,\n                varname=varname,\n                timelimiter=timelimiter,\n            ),\n            conn,\n            params={\"tzname\": tzname, \"station\": station, \"thres\": threshold},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found for query\")\n    # Fill out the frame\n    df = (\n        df.set_index([\"week\", \"hour\"])\n        .reindex(\n            pd.MultiIndex.from_product(\n                [range(53), range(24)],\n                names=[\"week\", \"hour\"],\n            )\n        )\n        .reset_index()\n        .assign(\n            freq=lambda df_: (\n                (df_[\"sum\"] / df_[\"count\"] * 100.0).fillna(0).round(1)\n            )\n        )\n    )\n    units = \"°F\" if varname != \"relh\" else \"%\"\n    if varname == \"p01i\":\n        units = \"inch\"\n    elif varname == \"vsby\":\n        units = \"miles\"\n    df2 = df[~df[\"min_valid\"].isna()]\n    title = f\"{PDICT[direction]} {threshold}{units}\"\n    if ctx[\"w\"] != \"freq\":\n        title = PDICT3[ctx[\"w\"]]\n    ctx[\"title\"] = (\n        f\"{ctx['_sname']}\\n\"\n        f\"Hourly {PDICT2[varname]} {title} \"\n        f\"({df2['min_valid'].min():%-d %b %Y}-\"\n        f\"{df2['max_valid'].max():%-d %b %Y})\"\n    )\n    ctx[\"units\"] = \"%\" if ctx[\"w\"] == \"freq\" else UNITS[ctx[\"var\"]]\n    ctx[\"ylabel\"] = f\"{ctx['_nt'].sts[station]['tzname']} Timezone\"\n    return df\n\n\ndef get_highcharts(ctx: dict) -> str:\n    \"\"\"Do highcharts.\"\"\"\n    df = get_df(ctx)\n    data = df[[\"week\", \"hour\", ctx[\"w\"]]].values.tolist()\n    xlabels = [\n        f\"{dt:%b %-d}\"\n        for dt in pd.date_range(\"2000/1/1\", \"2000/12/31\", freq=\"7D\")\n    ]\n    ylabels = [\n        f\"{dt:%-I %p}\"\n        for dt in pd.date_range(\"2000/1/1\", \"2000/1/1 23:59\", freq=\"1h\")\n    ]\n    ylabels.append(\"\")  # shrug\n    title = ctx[\"title\"].replace(\"\\n\", \"<br />\")\n    containername = ctx[\"_e\"]\n\n    return f\"\"\"\n    var units = \"{ctx[\"units\"]}\";\n    function getPointCategoryName(point, dimension) {{\n        var series = point.series,\n        isY = dimension === 'y',\n        axis = series[isY ? 'yAxis' : 'xAxis'];\n        return axis.categories[point[isY ? 'y' : 'x']];\n    }}\n\n    Highcharts.chart(\"{containername}\", {{\n        chart: {{\n            type: 'heatmap',\n            zoomType: 'xy'\n        }},\n        xAxis: {{\n            categories: {xlabels}\n        }},\n        yAxis: {{\n            categories: {ylabels},\n            min: 0,\n            max: 23,\n            title: {{\n                text: \"{ctx[\"ylabel\"]}\"\n            }}\n        }},\n        title: {{\n            text: \"{title}\"\n        }},\n        accessibility: {{\n            point: {{\n                descriptionFormatter: function (point) {{\n                    var ix = point.index + 1,\n                        xName = getPointCategoryName(point, 'x'),\n                        yName = getPointCategoryName(point, 'y'),\n                        val = point.value;\n                    return ix + ' ' + xName + ' ' + yName + ', ' + val + '.';\n                }}\n            }}\n        }},\n        colorAxis: {{\n            min: 0,\n            max: {df[ctx[\"w\"]].max() + 1},\n            minColor: '#FFFFFF',\n            maxColor: Highcharts.getOptions().colors[0]\n        }},\n        legend: {{\n            align: 'right',\n            layout: 'vertical',\n            margin: 0,\n            verticalAlign: 'top',\n            y: 25,\n            symbolHeight: 280\n        }},\n        tooltip: {{\n            formatter: function () {{\n                return '<b>' + getPointCategoryName(this.point, 'x') +\n                ' @ ' + getPointCategoryName(this.point, 'y') + '</b> ' +\n                this.point.value +' '+ units;\n            }}\n        }},\n        series: [{{\n            name: 'Sales per employee',\n            borderWidth: 1,\n            data: {data}\n        }}]\n    }});\n    \"\"\"\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    data = np.ones((24, 53), \"f\") * -1\n    df = get_df(ctx)\n    if df[ctx[\"w\"]].max() == 0:\n        raise NoDataFound(\"No data found for query\")\n    for _, row in df.iterrows():\n        data[int(row[\"hour\"]), int(row[\"week\"])] = row[ctx[\"w\"]]\n    data = np.ma.masked_where(data <= 0, data)\n    sts = datetime(2012, 1, 1)\n    xticks = []\n    for i in range(1, 13):\n        ts = sts.replace(month=i)\n        xticks.append(ts.timetuple().tm_yday / 7.0)\n\n    (fig, ax) = figure_axes(title=ctx[\"title\"], apctx=ctx)\n    cmap = get_cmap(ctx[\"cmap\"])\n    cmap.set_bad(\"white\")\n    if ctx[\"w\"] != \"freq\" and ctx[\"var\"] == \"relh\":\n        bins = np.arange(0, 101, 5, dtype=\"f\")\n    elif df[ctx[\"w\"]].min() < 5 and df[ctx[\"w\"]].max() > 95:\n        bins = np.arange(0, 101, 10, dtype=\"f\")\n    else:\n        bins = pretty_bins(df[ctx[\"w\"]].min(), df[ctx[\"w\"]].max())\n    norm = mpcolors.BoundaryNorm(bins, cmap.N)\n    res = ax.imshow(\n        data,\n        interpolation=\"nearest\",\n        aspect=\"auto\",\n        extent=[0, 53, 24, 0],\n        cmap=cmap,\n        norm=norm,\n    )\n    fig.colorbar(res, label=ctx[\"units\"], extend=\"neither\")\n    ax.grid(True, zorder=11)\n    ax.set_xticks(xticks)\n    ax.set_ylabel(ctx[\"ylabel\"])\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_xlim(0, 53)\n    ax.set_ylim(0, 24)\n    ax.set_yticks([0, 4, 8, 12, 16, 20, 24])\n    ax.set_yticklabels(\n        [\"12 AM\", \"4 AM\", \"8 AM\", \"Noon\", \"4 PM\", \"8 PM\", \"Mid\"]\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p61.py",
    "content": "\"\"\"\nThis plot presents the current streak of days with\na high or low temperature above or at-below the daily average temperature.\nYou can also plot the number of days since last measurable precipitation\nevent (trace events are counted as dry).\nThis plot is based off of NWS CLI sites.\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport geopandas as gpd\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot.geoplot import MapPlot\nfrom pyiem.reference import SECTORS_NAME\n\nPDICT = {\n    \"precip\": \"Last Measurable Precipitation\",\n    \"low\": \"Low Temperature\",\n    \"high\": \"High Temperature\",\n}\nSECTORS = {\n    \"state\": \"Select a State\",\n    \"cwa\": \"Select a NWS Weather Forecast Office\",\n}\nSECTORS.update(SECTORS_NAME)\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__}\n    desc[\"data\"] = True\n    desc[\"cache\"] = 3600\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"high\",\n            label=\"Which parameter:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=date.today().strftime(\"%Y/%m/%d\"),\n            label=\"Start Date:\",\n            min=\"2010/01/01\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"sector\",\n            default=\"conus\",\n            options=SECTORS,\n            label=\"Select Map Extent\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"wfo\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO: (used when plotting wfo)\",\n        ),\n        dict(\n            type=\"state\",\n            name=\"state\",\n            default=\"IA\",\n            label=\"Select State: (used when plotting state)\",\n        ),\n    ]\n    return desc\n\n\ndef get_data(ctx):\n    \"\"\"Build out our data.\"\"\"\n    ctx[\"nt\"] = NetworkTable(\"NWSCLI\")\n    varname = ctx[\"var\"]\n\n    today = ctx[\"sdate\"]\n    yesterday = today - timedelta(days=1)\n    d180 = today - timedelta(days=180)\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        with obs as (\n        select station, valid,\n        (case when low > low_normal then 1 else 0 end) as low_hit,\n        (case when high > high_normal then 1 else 0 end) as high_hit,\n        (case when precip > 0.009 then 1 else 0 end) as precip_hit\n        from cli_data\n        where high is not null\n        and high_normal is not null and low is not null and\n        low_normal is not null and precip is not null\n        and valid > :d180 and valid <= :today),\n\n        totals as (\n        SELECT station,\n        max(case when low_hit = 0 then valid else :d180 end) as last_low_below,\n        max(case when low_hit = 1 then valid else :d180 end) as last_low_above,\n        max(case when high_hit = 0 then valid else :d180 end)\n            as last_high_below,\n        max(case when high_hit = 1 then valid else :d180 end)\n            as last_high_above,\n        max(case when precip_hit = 0 then valid else :d180 end) as last_dry,\n        max(case when precip_hit = 1 then valid else :d180 end) as last_wet,\n        count(*) as count from obs GROUP by station)\n\n        SELECT station, last_low_below, last_low_above, last_high_below,\n        last_high_above, last_dry, last_wet\n        from totals where count > 170\n        \"\"\"),\n            conn,\n            params={\n                \"d180\": d180,\n                \"today\": today,\n            },\n            index_col=\"station\",\n            parse_dates=[\n                \"last_dry\",\n                \"last_wet\",\n                \"last_low_below\",\n                \"last_low_above\",\n                \"last_high_below\",\n                \"last_high_above\",\n            ],\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    df[\"lat\"] = None\n    df[\"lon\"] = None\n    df[\"val\"] = None\n    df[\"color\"] = \"\"\n    df[\"label\"] = \"\"\n\n    df[\"precip_days\"] = (df[\"last_dry\"] - df[\"last_wet\"]).dt.days\n    df[\"low_days\"] = (df[\"last_low_above\"] - df[\"last_low_below\"]).dt.days\n    df[\"high_days\"] = (df[\"last_high_above\"] - df[\"last_high_below\"]).dt.days\n    # reorder the frame so that the largest values come first\n    df = df.reindex(\n        df[varname + \"_days\"].abs().sort_values(ascending=False).index\n    )\n\n    for station, row in df.iterrows():\n        if station not in ctx[\"nt\"].sts:\n            continue\n        df.at[station, \"lat\"] = ctx[\"nt\"].sts[station][\"lat\"]\n        df.at[station, \"lon\"] = ctx[\"nt\"].sts[station][\"lon\"]\n        if varname == \"precip\":\n            last_wet = row[\"last_wet\"]\n            days = 0 if last_wet in [today, yesterday] else row[\"precip_days\"]\n        else:\n            days = row[varname + \"_days\"]\n        df.at[station, \"val\"] = days\n        df.at[station, \"color\"] = \"#FF0000\" if days > 0 else \"#0000FF\"\n        df.at[station, \"label\"] = station[1:]\n    df = df[pd.notnull(df[\"lon\"])]\n    ctx[\"df\"] = gpd.GeoDataFrame(\n        df, geometry=gpd.points_from_xy(df[\"lon\"], df[\"lat\"])\n    )  # type: ignore\n    ctx[\"subtitle\"] = (\n        \"based on NWS CLI Sites, map approximately \"\n        f\"valid for {today:%-d %b %Y}\"\n    )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    get_data(ctx)\n\n    title = (\n        f\"Consecutive Days with {ctx['var'].capitalize()} \"\n        \"Temp above(+)/below(-) Average\"\n    )\n    if ctx[\"var\"] == \"precip\":\n        title = \"Days Since Last Measurable Precipitation\"\n    mp = MapPlot(\n        apctx=ctx,\n        sector=ctx[\"sector\"],\n        state=ctx[\"state\"],\n        cwa=(ctx[\"wfo\"] if len(ctx[\"wfo\"]) == 3 else ctx[\"wfo\"][1:]),\n        axisbg=\"tan\",\n        statecolor=\"#EEEEEE\",\n        title=title,\n        subtitle=ctx[\"subtitle\"],\n        nocaption=True,\n    )\n    df2 = ctx[\"df\"][pd.notnull(ctx[\"df\"][\"lon\"])]\n    mp.plot_values(\n        df2[\"lon\"].values,\n        df2[\"lat\"].values,\n        df2[\"val\"].values,\n        color=df2[\"color\"].values,\n        labels=df2[\"label\"].values,\n        labeltextsize=(8 if ctx[\"sector\"] != \"state\" else 12),\n        textsize=(12 if ctx[\"sector\"] != \"state\" else 16),\n        labelbuffer=10,\n    )\n\n    return mp.fig, ctx[\"df\"]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p62.py",
    "content": "\"\"\"\nThis chart presents the daily snow depth reports\nas a image.  Each box represents an individual day's report with the\ncolor denoting the amount.  Values in light gray are missing in the\ndatabase.\n\"\"\"\n\nimport copy\nfrom datetime import date, datetime\n\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.plot.colormaps import nwssnow\n\nfrom iemweb.autoplot import ARG_STATION\n\nLEVELS = [0.1, 1, 2, 3, 4, 6, 8, 12, 18, 24, 30, 36]\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = datetime.today()\n    lyear = today.year if today.month > 8 else (today.year - 1)\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"year\",\n            name=\"syear\",\n            default=1893,\n            min=1893,\n            label=\"Start Year (inclusive):\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"eyear\",\n            default=lyear,\n            min=1893,\n            label=\"End Year (inclusive):\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadatab.\")\n    syear = max([ctx[\"syear\"], ab.year])\n    eyear = ctx[\"eyear\"]\n    sts = date(syear, 11, 1)\n    ets = date(eyear + 1, 6, 1)\n\n    eyear = datetime.now().year\n    obs = np.ma.ones((eyear - syear + 1, 183), \"f\") * -1\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT year, extract(doy from day) as doy, snowd, day,\n            case when month < 6 then year - 1 else year end as winter_year\n            from alldata WHERE station = :station and\n            month in (11, 12, 1, 2, 3, 4) and snowd >= 0 and\n            day between :sts and :ets\n        \"\"\"),\n            conn,\n            params={\"station\": station, \"sts\": sts, \"ets\": ets},\n            index_col=\"day\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    minyear = df[\"year\"].min()\n    maxyear = df[\"year\"].max()\n    for _, row in df.iterrows():\n        doy = row[\"doy\"] if row[\"doy\"] < 180 else (row[\"doy\"] - 365)\n        obs[int(row[\"winter_year\"]) - syear, int(doy) + 61] = row[\"snowd\"]\n\n    obs.mask = np.where(obs < 0, True, False)\n\n    title = f\"{ctx['_sname']}\\nDaily Snow Depth ({minyear}-{eyear}) [inches]\"\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.add_axes((0.1, 0.1, 0.93, 0.8))\n    ax.set_xticks((0, 29, 60, 91, 120, 151, 181))\n    ax.set_xticklabels(\n        [\"Nov 1\", \"Dec 1\", \"Jan 1\", \"Feb 1\", \"Mar 1\", \"Apr 1\", \"May 1\"]\n    )\n    ax.set_ylabel(\"Year of Nov,Dec of Season Labeled\")\n    ax.set_xlabel(\"Date of Winter Season\")\n\n    cmap = copy.copy(nwssnow())\n    norm = mpcolors.BoundaryNorm(LEVELS, cmap.N)\n    cmap.set_bad(\"#EEEEEE\")\n    cmap.set_under(\"white\")\n    res = ax.imshow(\n        obs,\n        aspect=\"auto\",\n        rasterized=True,\n        norm=norm,\n        interpolation=\"nearest\",\n        cmap=cmap,\n        extent=[0, 182, eyear + 1 - 0.5, syear - 0.5],\n    )\n    fig.colorbar(res, spacing=\"proportional\", ticks=LEVELS, extend=\"max\")\n    ax.grid(True)\n    ax.set_ylim(maxyear + 0.5, minyear - 0.5)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p63.py",
    "content": "\"\"\"\nThis chart plots the number of daily maximum\nhigh temperatures, minimum low temperatures and precipitation records\nset by year.  Ties are not included.  The algorithm sets the records based\non the first year of data and then iterates over each sequential year\nand sets the new daily records.  A general model of the number of new\nrecords to be set each year would be 365 / (number of years).  So you would\nexpect to set 365 records the first year, 183 the second, and so on...\n\"\"\"\n\nfrom datetime import datetime\n\nimport pandas as pd\nfrom pyiem.database import get_dbconnc\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n\n    sts = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if sts is None:\n        raise NoDataFound(\"Station metadata unknown.\")\n    pgconn, cursor = get_dbconnc(\"coop\")\n    syear = sts.year if sts.month == 1 and sts.day == 1 else (sts.year + 1)\n    syear = max(syear, 1893)\n    eyear = datetime.now().year\n\n    cursor.execute(\n        \"\"\"\n        SELECT sday, year, high, low, precip, day from alldata\n        where station = %s and sday != '0229'\n        and year >= %s and high is not null and low is not null\n        and precip is not null ORDER by day ASC\n    \"\"\",\n        (station, syear),\n    )\n\n    hrecords = {}\n    hyears = [0] * (eyear - syear)\n    lrecords = {}\n    lyears = [0] * (eyear - syear)\n    precords = {}\n    pyears = [0] * (eyear - syear)\n    expect = [0.0] * (eyear - syear)\n\n    for row in cursor:\n        sday = row[\"sday\"]\n        year = row[\"year\"]\n        high = row[\"high\"]\n        low = row[\"low\"]\n        precip = row[\"precip\"]\n        if sday not in hrecords:\n            hrecords[sday] = high\n            lrecords[sday] = low\n            precords[sday] = precip\n            continue\n        if precip > precords[sday]:\n            precords[sday] = row[\"precip\"]\n            pyears[year - syear - 1] += 1\n        if high > hrecords[sday]:\n            hrecords[sday] = row[\"high\"]\n            hyears[year - syear - 1] += 1\n        if low < lrecords[sday]:\n            lrecords[sday] = low\n            lyears[year - syear - 1] += 1\n    pgconn.close()\n    years = range(syear + 1, eyear + 1)\n    for i, year in enumerate(years):\n        expect[i] = 365.0 / float(year - syear + 1)\n\n    df = pd.DataFrame(\n        dict(\n            expected=pd.Series(expect),\n            highs=pd.Series(hyears),\n            lows=pd.Series(lyears),\n            precip=pd.Series(pyears),\n            year=years,\n        )\n    )\n    title = (\n        f\"{ctx['_sname']}\\n\"\n        \"Daily Records Set Per Year \"\n        f\"{syear} sets record then accumulate ({syear + 1}-{eyear})\\n\"\n        \"events/year value is long term average, total events / \"\n        f\"{(eyear - syear - 1):.0f} years\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.subplots(3, 1, sharex=True, sharey=True)\n    rects = ax[0].bar(years, hyears, facecolor=\"b\", edgecolor=\"b\")\n    for i, rect in enumerate(rects):\n        if rect.get_height() > expect[i]:\n            rect.set_facecolor(\"r\")\n            rect.set_edgecolor(\"r\")\n    ax[0].plot(years, expect, color=\"black\", label=\"$365/n$\")\n    ax[0].set_ylim(0, 50)\n    ax[0].set_xlim(syear, eyear + 1)\n    ax[0].grid(True)\n    ax[0].legend()\n    ax[0].set_ylabel(\"Records set per year\")\n\n    rate = sum(hyears) / float(len(hyears))\n    ax[0].text(\n        eyear - 70,\n        32,\n        f\"Max High Temperature, {rate:.1f} events/year\",\n        bbox=dict(color=\"white\"),\n    )\n\n    rects = ax[1].bar(years, lyears, facecolor=\"r\", edgecolor=\"r\")\n    for i, rect in enumerate(rects):\n        if rect.get_height() > expect[i]:\n            rect.set_facecolor(\"b\")\n            rect.set_edgecolor(\"b\")\n    ax[1].plot(years, expect, color=\"black\", label=\"$365/n$\")\n    ax[1].grid(True)\n    ax[1].legend()\n    ax[1].set_ylabel(\"Records set per year\")\n    rate = sum(lyears) / float(len(lyears))\n    ax[1].text(\n        eyear - 70,\n        32,\n        f\"Min Low Temperature, {rate:.1f} events/year\",\n        bbox=dict(color=\"white\"),\n    )\n\n    rects = ax[2].bar(years, pyears, facecolor=\"r\", edgecolor=\"r\")\n    for i, rect in enumerate(rects):\n        if rect.get_height() > expect[i]:\n            rect.set_facecolor(\"b\")\n            rect.set_edgecolor(\"b\")\n    ax[2].plot(years, expect, color=\"black\", label=\"$365/n$\")\n    ax[2].grid(True)\n    ax[2].legend()\n    ax[2].set_ylabel(\"Records set per year\")\n    rate = sum(pyears) / float(len(pyears))\n    ax[2].text(\n        eyear - 50,\n        32,\n        f\"Precipitation, {rate:.1f} events/year\",\n        bbox=dict(color=\"white\"),\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p64.py",
    "content": "\"\"\"\nThis chart displays either the first or last date\nof the winter season with a snowfall of a given intensity.  The snowfall\nand snow depth data is not of great quality, so please be careful with\nthis plot.\n\n<p>For a `Trace` snowfall event to count, the coincident low temperature needs\nto be below 40°F. This is to help filter out hail events.</p>\n\"\"\"\n\nimport calendar\nfrom datetime import date, datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_dbconn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.reference import TRACE_VALUE\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"first\": \"First Snowfall after 1 July\",\n    \"last\": \"Last Snowfall before 1 July\",\n}\nXS = np.array([1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335])\nXS = np.concatenate([XS, XS + 366])\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"text\",\n            name=\"threshold\",\n            default=\"1\",\n            label=\"First Snowfall Threshold (T for trace)\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"dir\",\n            default=\"last\",\n            options=PDICT,\n            label=\"Which Variable to Plot?\",\n        ),\n    ]\n    return desc\n\n\ndef get_data(ctx):\n    \"\"\"Get some data please\"\"\"\n    pgconn = get_dbconn(\"coop\")\n    cursor = pgconn.cursor()\n    station = ctx[\"station\"]\n    threshold = ctx[\"threshold\"]\n    threshold = TRACE_VALUE if threshold in [\"T\", \"t\"] else float(threshold)\n\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"No Data Found.\")\n    syear = max(1893, ab.year)\n    eyear = datetime.now().year\n\n    snow = np.zeros((eyear - syear + 1, 366))\n    snowd = np.zeros((eyear - syear + 1, 366))\n    cursor.execute(\n        \"\"\"\n        SELECT extract(doy from day), year,\n        case when snow > 0 and snow < 0.09 and low >= 40 then 0 else snow end,\n        snowd from alldata where station = %s and year >= %s\n        \"\"\",\n        (station, syear),\n    )\n    for row in cursor:\n        # On non-leap year, duplicate our snowdepth on 31 Dec\n        if row[0] == 365 and not calendar.isleap(row[1]):\n            snowd[row[1] - syear, int(row[0])] = row[3]\n        snow[row[1] - syear, int(row[0] - 1)] = row[2]\n        snowd[row[1] - syear, int(row[0] - 1)] = row[3]\n    pgconn.close()\n    # reset any nan\n    snow = np.where(np.isnan(snow), 0, snow)\n    snowd = np.where(np.isnan(snowd), -1, snowd)\n\n    rows = []\n    for i, year in enumerate(range(syear, eyear)):\n        # Slap the years together so we cross over 1 Jan\n        snowfall = tuple(snow[i, 183:]) + tuple(snow[i + 1, :183])\n        snowdepth = tuple(snowd[i, 183:]) + tuple(snowd[i + 1, :183])\n        hits = np.where(np.array(snowfall) >= threshold)[0]\n        if hits.size == 0:\n            continue\n        idx = hits[0] if ctx[\"dir\"] == \"first\" else hits[-1]\n        # Check that we have snowd for this index, if not, DQ\n        if snowdepth[idx] < 0:\n            continue\n        # Compute how long this stuck around\n        sfree = idx + 1\n        for sfree in range(idx + 1, 366):\n            if snowdepth[sfree] <= 0.01:\n                break\n        days = sfree - idx\n        if days >= 30:\n            color = \"purple\"\n        elif days >= 11:\n            color = \"g\"\n        elif days >= 3:\n            color = \"b\"\n        else:\n            color = \"r\"\n        dt = date(year, 1, 1) + timedelta(days=int(idx) + 183 - 1)\n        rows.append(\n            dict(\n                year=year,\n                snow_date=dt,\n                snow_doy=(idx + 183),\n                color=color,\n                days=days,\n                snowfree_doy=(sfree + 183),\n                snowfall=snowfall[idx],\n            )\n        )\n\n    return pd.DataFrame(rows)\n\n\ndef plot_yearly_trend(fig, df):\n    \"\"\"Plot the yearly trend\"\"\"\n    ax = fig.add_axes([0.55, 0.15, 0.43, 0.75])\n    x = df[\"year\"].values\n    y = df[\"snow_doy\"].values\n    ax.scatter(x, y)\n    ax.set_xlim(df[\"year\"].min() - 1, df[\"year\"].max() + 1)\n    ax.set_ylabel(\"Date\")\n    ax.grid(True)\n    ax.set_yticks(XS)\n    ax.set_yticklabels(calendar.month_abbr[1:] + calendar.month_abbr[1:])\n    ax.set_ylim(df[\"snow_doy\"].min() - 5, df[\"snowfree_doy\"].max() + 5)\n    ax.set_xlabel(\"Year\")\n    # Add a moving 30 year average\n    ax.plot(\n        df[\"year\"].values,\n        df[\"snow_doy\"].rolling(window=30, center=False).mean(),\n        lw=2,\n        color=\"r\",\n        label=\"30 year trailing mean\",\n    )\n    # Add a trend line\n    xmean = np.mean(x)\n    ymean = np.mean(y)\n    xdiff = x - xmean\n    ydiff = y - ymean\n    slope = np.sum(xdiff * ydiff) / np.sum(xdiff * xdiff)\n    yint = ymean - slope * xmean\n    ax.plot(\n        x,\n        slope * x + yint,\n        lw=2,\n        color=\"k\",\n        label=f\"Trend: {(slope * 10):.2f} days / decade\",\n    )\n    ax.legend(loc=(0.0, -0.15), ncol=2)\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    df = get_data(ctx)\n    t1 = \"Last\" if ctx[\"dir\"] == \"last\" else \"First\"\n    t2 = (\n        \"Trace+\"\n        if ctx[\"threshold\"] in (\"T\", \"t\")\n        else f\"{float(ctx['threshold']):.2f}+ Inch\"\n    )\n    title = (\n        f\"{ctx['_sname']}:: {t1} {t2} Snowfall \"\n        f\"({df['year'].min()}-{df['year'].max()})\\n\"\n        \"(color is how long snow remained)\"\n    )\n    fig = figure(title=title, apctx=ctx)\n    plot_yearly_trend(fig, df)\n    ax = fig.add_axes((0.08, 0.11, 0.36, 0.79))\n\n    ax.scatter(\n        df[\"snow_doy\"],\n        df[\"snowfall\"],\n        facecolor=df[\"color\"],\n        edgecolor=df[\"color\"],\n        s=100,\n    )\n    for _, row in df.iterrows():\n        ax.scatter(\n            row[\"snowfree_doy\"],\n            row[\"snowfall\"],\n            marker=\"x\",\n            s=100,\n            color=row[\"color\"],\n        )\n        ax.plot(\n            [row[\"snow_doy\"], row[\"snowfree_doy\"]],\n            [row[\"snowfall\"], row[\"snowfall\"]],\n            lw=\"2\",\n            color=row[\"color\"],\n        )\n    ax.set_xticks(XS)\n    ax.set_xticklabels(calendar.month_abbr[1:] + calendar.month_abbr[1:])\n    ax.grid(True)\n    ax.set_ylim(bottom=0)\n    ax2 = ax.twinx()\n    ptile = np.percentile(df[\"snow_doy\"].to_numpy(), np.arange(100))\n    ax2.plot(ptile, np.arange(100), lw=2, color=\"k\")\n    ax2.set_ylabel(\n        (\"Frequency of %s Date (CDF) [%%] (black line)\")\n        % (\"Start\" if ctx[\"dir\"] == \"first\" else \"Last\",)\n    )\n    ax.set_ylabel(\"Snowfall [inch], Avg: %.1f inch\" % (df[\"snowfall\"].mean(),))\n    p0 = Rectangle((0, 0), 1, 1, fc=\"purple\")\n    p1 = Rectangle((0, 0), 1, 1, fc=\"g\")\n    p2 = Rectangle((0, 0), 1, 1, fc=\"b\")\n    p3 = Rectangle((0, 0), 1, 1, fc=\"r\")\n    ax.legend(\n        (p0, p1, p2, p3),\n        (\n            \"> 31 days [%s]\" % (len(df[df[\"color\"] == \"purple\"].index),),\n            \"10 - 31 [%s]\" % (len(df[df[\"color\"] == \"g\"].index),),\n            \"3 - 10 [%s]\" % (len(df[df[\"color\"] == \"b\"].index),),\n            \"< 3 days [%s]\" % (len(df[df[\"color\"] == \"r\"].index),),\n        ),\n        ncol=2,\n        fontsize=11,\n        loc=(0.0, -0.15),\n    )\n    ax.set_xlim(df[\"snow_doy\"].min() - 5, df[\"snowfree_doy\"].max() + 5)\n\n    box = ax.get_position()\n    ax.set_position(\n        [box.x0, box.y0 + box.height * 0.1, box.width, box.height * 0.9]\n    )\n    ax2.set_position(\n        [box.x0, box.y0 + box.height * 0.1, box.width, box.height * 0.9]\n    )\n    ax2.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    ax2.set_ylim(0, 101)\n    df = df.set_index(\"year\").drop(columns=[\"color\"])\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p65.py",
    "content": "\"\"\"\nThis plot displays the frequency of a given day\nin the month having the coldest high or low temperature of that month for\na year.\n\"\"\"\n\nimport calendar\nfrom datetime import date, datetime, timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\"cold\": \"Coldest Temperature\", \"hot\": \"Hottest Temperature\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"month\",\n            name=\"month\",\n            default=today.month,\n            label=\"Select Month:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"dir\",\n            default=\"cold\",\n            label=\"Select variable to plot:\",\n            options=PDICT,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    month = ctx[\"month\"]\n    mydir = ctx[\"dir\"]\n    ts = datetime(2000, month, 1)\n    ets = ts + timedelta(days=35)\n    ets = ets.replace(day=1)\n    days = int((ets - ts).days)\n\n    s = \"ASC\" if mydir == \"cold\" else \"DESC\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            with ranks as (\n                select day, high, low,\n        rank() OVER (PARTITION by year ORDER by high {s}) as high_rank,\n        rank() OVER (PARTITION by year ORDER by low {s}) as low_rank\n                from alldata where station = :station and month = :month),\n            highs as (\n                SELECT extract(day from day) as dom, count(*) from ranks\n                where high_rank = 1 GROUP by dom),\n            lows as (\n                SELECT extract(day from day) as dom, count(*) from ranks\n                where low_rank = 1 GROUP by dom)\n\n            select coalesce(h.dom, l.dom) as dom, h.count as high_count,\n            l.count as low_count from\n            highs h FULL OUTER JOIN lows l on (h.dom = l.dom) ORDER by h.dom\n        \"\"\",\n                s=s,\n            ),\n            conn,\n            params={\"station\": station, \"month\": month},\n        )\n\n    fig = figure(apctx=ctx)\n    ax = fig.subplots(2, 1, sharex=True)\n    lbl = \"Coldest\" if mydir == \"cold\" else \"Hottest\"\n    # match suptitle for plot2\n    ax[0].set_title(\n        (\n            f\"{ctx['_sname']}\\n\"\n            f\"Frequency of Day in {calendar.month_name[month]}\\n\"\n            f\"Having {lbl} High Temperature of {calendar.month_name[month]}\"\n        ),\n        fontsize=10,\n    )\n    ax[0].set_ylabel(\"Years (ties split)\")\n\n    ax[0].grid(True)\n    ax[0].bar(df[\"dom\"], df[\"high_count\"], align=\"center\")\n\n    ax[1].set_title(\n        f\"Having {lbl} Low Temperature of {calendar.month_name[month]}\",\n        fontsize=10,\n    )\n    ax[1].set_ylabel(\"Years (ties split)\")\n    ax[1].grid(True)\n    ax[1].set_xlabel(f\"Day of {calendar.month_name[month]}\")\n    ax[1].bar(df[\"dom\"], df[\"low_count\"], align=\"center\")\n    ax[1].set_xlim(0.5, days + 0.5)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p66.py",
    "content": "\"\"\"\nThis chart presents the daily frequency of the\ngiven date having the prescribed number of previous days above or below\nsome provided treshold. <a href=\"/plotting/auto/?q=216\">Autoplot 216</a>\nprovides actual streaks and yearly maximum values.\n\n<p>The accumulated precipitation metric is for an inclusive number of trailing\ndays evaluated at that given day, so there is not double accounting for days\nthat participate in a trailing day period that ended in the future.  Rewording,\nan example frequency of 25% of May 1 would indicate that on that date, it had\nan inclusive trailing number of days accumulation above or below the choosen\nthreshold.\n\n<p><strong>2 Oct 2023:</strong> The plotting logic was updated to plot\nthe frequency of a given day participating in a streak, rather than the\nfrequency of a streak ending on that day.  This should be a more useful\nmetric for the user.\n\"\"\"\n\nimport calendar\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"above\": \"At or Above (AOA) Threshold\",\n    \"below\": \"Below Threshold\",\n}\nPDICT2 = {\n    \"precip\": \"Accumulated Precipitation\",\n    \"low\": \"Low Temperature\",\n    \"high\": \"High Temperature\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"high\",\n            options=PDICT2,\n            label=\"Select which daily variable\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"dir\",\n            default=\"above\",\n            options=PDICT,\n            label=\"Select direction\",\n        ),\n        dict(\n            type=\"float\",\n            name=\"threshold\",\n            default=\"60\",\n            label=\"Threshold (F or inch):\",\n        ),\n        dict(type=\"int\", name=\"days\", default=\"7\", label=\"Number of Days:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    days = ctx[\"days\"]\n    threshold = ctx[\"threshold\"]\n    varname = ctx[\"var\"]\n    mydir = ctx[\"dir\"]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    select day, sday, {varname} from alldata where station = :station\n    ORDER by day ASC\"\"\",\n                varname=varname,\n            ),\n            conn,\n            params={\"station\": station},\n            index_col=\"day\",\n            parse_dates=\"day\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found for station / threshold.\")\n    df[\"hit\"] = False\n    syear = df.index[0].year\n    eyear = df.index[-1].year\n    years = eyear - syear + 1\n    if varname == \"precip\":\n        df[\"trail\"] = df[varname].rolling(window=f\"{days}D\").agg(\"sum\")\n    else:\n        df[\"trail\"] = (\n            df[varname]\n            .rolling(window=f\"{days}D\")\n            .agg(\"min\" if mydir == \"above\" else \"max\")\n        )\n    if mydir == \"above\":\n        hits = df[\"trail\"] >= threshold\n    else:\n        hits = df[\"trail\"] < threshold\n    if hits.sum() == 0:\n        raise NoDataFound(\"No events found for threshold.\")\n\n    # Need to compute if a given date participated in a streak\n    # shift hits back in time to match the days\n    for day in range(days):\n        df[\"hit\"] = df[\"hit\"] | hits.shift(0 - day)\n\n    freq = df[[\"sday\", \"hit\"]].groupby(\"sday\").sum() / years * 100.0\n    freq = freq.reindex(\n        pd.date_range(\"2000-01-01\", \"2000-12-31\").strftime(\"%m%d\")\n    ).fillna(0)\n\n    label = \"AOA\" if mydir == \"above\" else \"below\"\n    units = \"inch\" if varname == \"precip\" else \"°F\"\n    title = (\n        f\"{ctx['_sname']} [{syear}-{eyear}] ::\"\n        f\"Frequency of {days} Consec Days \"\n        f\"with {varname.capitalize()} {label} {threshold} {units}\"\n    )\n    fig, ax = figure_axes(apctx=ctx, title=title)\n    ax.set_position([0.1, 0.1, 0.7, 0.8])\n    ax.set_ylabel(\"Frequency of Streak Including Day of Year [%]\")\n    ax.set_ylim(0, 100)\n    ax.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    ax.grid(True)\n    ax.bar(range(366), freq[\"hit\"], width=1)\n\n    ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_xlim(0, 366)\n\n    df = df[hits].sort_values(\"sday\")\n    ypos = 0.85\n    xpos = 0.83\n    fig.text(xpos, ypos + 0.03, \"End Date of Streak\")\n    fig.text(xpos - 0.015, ypos, \"Earliest Dates   \", rotation=90, va=\"top\")\n    for day, _row in df.head(10).iterrows():\n        ypos -= 0.03\n        fig.text(xpos, ypos, f\"{day.strftime('%-2d %b %Y')}\")\n\n    ypos -= 0.1\n    fig.text(xpos - 0.015, ypos, \"Latest Dates   \", rotation=90, va=\"top\")\n    for day, _row in df.tail(10).iloc[::-1].iterrows():\n        ypos -= 0.03\n        fig.text(xpos, ypos, f\"{day.strftime('%-2d %b %Y')}\")\n\n    return fig, freq\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p67.py",
    "content": "\"\"\"\nThis plot displays the frequency of having a\nreported wind speed be above a given threshold by reported temperature\nand by month.\n\"\"\"\n\nimport calendar\nfrom datetime import datetime\n\nimport matplotlib.patheffects as PathEffects\nimport pandas as pd\nfrom pyiem.database import get_dbconn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"threshold\",\n            default=10,\n            label=\"Wind Speed Threshold (knots)\",\n        ),\n        dict(type=\"month\", name=\"month\", default=\"3\", label=\"Select Month:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    pgconn = get_dbconn(\"asos\")\n    cursor = pgconn.cursor()\n    station = ctx[\"zstation\"]\n    threshold = ctx[\"threshold\"]\n    month = ctx[\"month\"]\n\n    cursor.execute(\n        \"\"\"\n        WITH data as (\n            SELECT tmpf::int as t, sknt from alldata where station = %s\n            and extract(month from valid) = %s and tmpf is not null\n            and sknt >= 0\n        )\n\n        SELECT t, sum(case when sknt >= %s then 1 else 0 end), count(*)\n        from data GROUP by t ORDER by t ASC\n    \"\"\",\n        (station, month, threshold),\n    )\n    if cursor.rowcount == 0:\n        raise NoDataFound(\"No Data was Found.\")\n    tmpf = []\n    events = []\n    total = []\n    hits = 0\n    cnt = 0\n    for row in cursor:\n        if row[2] < 3:\n            continue\n        tmpf.append(row[0])\n        hits += row[1]\n        cnt += row[2]\n        events.append(row[1])\n        total.append(row[2])\n\n    df = pd.DataFrame(\n        dict(\n            tmpf=pd.Series(tmpf),\n            events=pd.Series(events),\n            total=pd.Series(total),\n        )\n    )\n\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    title = (\n        f\"{ctx['_sname']}\\n\"\n        f\"Frequency of {threshold}+ knot Wind Speeds by Temperature \"\n        f\"for {calendar.month_name[month]} \"\n        f\"({ab.year}-{datetime.now().year})\\n\"\n        \"(must have 3+ hourly observations at the given temperature)\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    ax.bar(\n        tmpf,\n        df[\"events\"] / df[\"total\"] * 100.0,\n        width=1.1,\n        ec=\"green\",\n        fc=\"green\",\n    )\n    avgval = hits / float(cnt) * 100.0\n    ax.axhline(avgval, lw=2, zorder=2)\n    txt = ax.text(\n        tmpf[10],\n        avgval + 1,\n        f\"Average: {avgval:.1f}%\",\n        va=\"bottom\",\n        zorder=2,\n        color=\"yellow\",\n        fontsize=14,\n    )\n    txt.set_path_effects([PathEffects.withStroke(linewidth=2, foreground=\"k\")])\n    ax.grid(zorder=11)\n    ax.set_ylabel(\"Frequency [%]\")\n    ax.set_ylim(0, 100)\n    ax.set_xlim(min(tmpf) - 3, max(tmpf) + 3)\n    ax.set_xlabel(\"Air Temperature °F\")\n    ax.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p68.py",
    "content": "\"\"\"\nThis chart shows the number of VTEC phenomena and\nsignificance combinations issued by a NWS Forecast Office for a given year.\nPlease note that not all current-day VTEC products were started in 2005,\nsome came a few years later.  So numbers in 2005 are not directly\ncomparable to 2015.  Here is a\n<a href=\"http://www.nws.noaa.gov/os/vtec/pdfs/VTEC_explanation6.pdf\">handy\nchart</a> with more details on VTEC and codes used in this graphic.\n\n<p>Due to the chart's oblong nature, there is no way to control the\nimage size at this time.\n\"\"\"\n\nimport pandas as pd\nfrom matplotlib.ticker import MaxNLocator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure, fitbox\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"defaults\"] = {\"_r\": None}  # disables\n    desc[\"arguments\"] = [\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO:\",\n            all=True,\n        )\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"][:4]\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\"name\": \"All Offices\"}\n\n    sqllim = \"wfo = :wfo and \" if station != \"_ALL\" else \"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT distinct extract(year from issue) as year,\n            phenomena, significance from warnings WHERE\n            {sqllim} phenomena is not null and significance is not null\n            and issue > '2005-01-01'\n            \"\"\",\n                sqllim=sqllim,\n            ),\n            conn,\n            params={\"wfo\": station},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No data was found.\")\n    df[\"wfo\"] = station\n    df[\"year\"] = df[\"year\"].astype(\"i\")\n    gdf = df.groupby(\"year\").count()\n\n    title = f\"[{station}] NWS {ctx['_nt'].sts[station]['name']}\"\n    subtitle = (\n        \"Count of Distinct VTEC Phenomena/Significance - \"\n        f\"{df['year'].min():.0f} to {df['year'].max():.0f}\"\n    )\n    fig = figure(figsize=(10, 14 if station != \"_ALL\" else 21), apctx=ctx)\n    fitbox(fig, title, 0.1, 0.97, 0.97, 0.99)\n    fitbox(fig, subtitle, 0.1, 0.97, 0.95, 0.97)\n    ax = [\n        fig.add_axes((0.05, 0.75, 0.93, 0.2)),\n        fig.add_axes((0.05, 0.03, 0.93, 0.68)),\n    ]\n\n    ax[0].bar(\n        gdf.index.values, gdf[\"wfo\"], width=0.8, fc=\"b\", ec=\"b\", align=\"center\"\n    )\n    yoff = gdf[\"wfo\"].max() * 0.05\n    for yr, row in gdf.iterrows():\n        ax[0].text(\n            yr,\n            row[\"wfo\"] + yoff,\n            row[\"wfo\"],\n            ha=\"center\",\n            bbox=dict(color=\"white\"),\n        )\n    ax[0].set_ylim(0, gdf[\"wfo\"].max() * 1.1)\n    ax[0].grid()\n    ax[0].set_ylabel(\"Count\")\n    ax[0].set_xlim(gdf.index.values.min() - 0.5, gdf.index.values.max() + 0.5)\n    ax[0].xaxis.set_major_locator(MaxNLocator(integer=True))\n\n    pos = {}\n    i = 1\n    df = df.sort_values([\"phenomena\", \"significance\"])\n    for _, row in df.iterrows():\n        key = f\"{row['phenomena']}.{row['significance']}\"\n        if key not in pos:\n            pos[key] = i\n            i += 1\n        ax[1].text(\n            row[\"year\"],\n            pos[key],\n            key,\n            ha=\"center\",\n            va=\"center\",\n            fontsize=10,\n        )\n\n    ax[1].set_title(\"VTEC <Phenomena.Significance> Issued by Year\")\n    ax[1].set_ylim(0, i)\n    ax[1].set_yticks([])\n    ax[1].grid(True)\n    ax[1].set_xlim(gdf.index.values.min() - 0.5, gdf.index.values.max() + 0.5)\n    ax[1].xaxis.set_major_locator(MaxNLocator(integer=True))\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p69.py",
    "content": "\"\"\"\nThe frequency of days per year that the temperature\nwas above/below average.  Data is shown for the current year as well, so\nyou should consider the representativity of that value when compared with\nother years with a full year's worth of data.\n\n<p>This app gets a bit tricky to understand the interplay between direction\nand magnitude.  For example, if you pick -5 degrees as the magnitude and then\nan above departure, you get the data domain of departures ranging from -5 to\npositive infinity.  If you pick the absolute value departure, then you can\ndo the combination of departures of both sides of average.</p>\n\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nfrom matplotlib.figure import Figure\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot.barchart import barchart_with_top10\nfrom iemweb.util import month2months\n\nPDICT = {\n    \"high\": \"High Temperature\",\n    \"low\": \"Low Temperature\",\n    \"avg\": \"Average Temperature\",\n}\nPDICT2 = {\n    \"degrees\": \"Degrees Fahrenheit\",\n    \"sigma\": \"Sigma (1 StdDev)\",\n}\nPDICT3 = {\n    \"above\": \"At or Above\",\n    \"below\": \"Below\",\n    \"abs_above\": \"Absolute Value At or Above\",\n    \"abs_below\": \"Absolute Value Below\",\n}\nPDICT4 = {\"percent\": \"Percentage\", \"number\": \"Number\"}\nMDICT = {\n    \"all\": \"No Month/Season Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"station\",\n            name=\"station\",\n            default=\"IA0000\",\n            label=\"Select Station\",\n            network=\"IACLIMATE\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            name=\"var\",\n            default=\"high\",\n            label=\"Which variable to plot?\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT3,\n            name=\"which\",\n            default=\"above\",\n            label=\"How to compare against average along with magnitude below:\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT2,\n            name=\"unit\",\n            default=\"degrees\",\n            label=\"How to measure departure from average:\",\n        ),\n        dict(\n            type=\"float\",\n            name=\"mag\",\n            default=0,\n            label=\"Magnitude of departure expressed with previous:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"percent\",\n            label=\"Express days as percentage or number of\",\n            options=PDICT4,\n        ),\n        {\n            \"type\": \"year\",\n            \"default\": date.today().year,\n            \"name\": \"year\",\n            \"label\": \"Year to highlight on chart\",\n        },\n    ]\n    return desc\n\n\ndef make_cartoon(fig: Figure, ctx: dict):\n    \"\"\"Draw a cartoon to show what data range is being plotted.\"\"\"\n    ax = fig.add_axes((0.1, 0.8, 0.7, 0.04), frameon=False, yticks=[])\n    ax.set_title(\"Green areas show values used in frequency\", fontsize=10)\n    ax.set_xticks([0, 0.25, 0.5, 0.75, 1])\n    unit = \"°F\" if ctx[\"unit\"] == \"degrees\" else \" Sigma\"\n    ax.set_xticklabels(\n        [\n            \"- Inf\",\n            f\"Avg -{abs(ctx['mag'])}{unit}\",\n            \"Average\",\n            f\"Avg +{abs(ctx['mag'])}{unit}\",\n            \"+ Inf\",\n        ]\n    )\n    box_colors = [\"#fff\", \"#fff\", \"#fff\", \"#fff\"]\n    # Yuck, but here we go...\n    if ctx[\"which\"] == \"above\":\n        box_colors[3] = \"#aaffaa\"\n        if ctx[\"mag\"] < 0:\n            box_colors[2] = \"#aaffaa\"\n            box_colors[1] = \"#aaffaa\"\n    elif ctx[\"which\"] == \"below\":\n        box_colors[0] = \"#aaffaa\"\n        if ctx[\"mag\"] > 0:\n            box_colors[1] = \"#aaffaa\"\n            box_colors[2] = \"#aaffaa\"\n    elif ctx[\"which\"] == \"abs_above\":\n        box_colors[0] = \"#aaffaa\"\n        box_colors[3] = \"#aaffaa\"\n    elif ctx[\"which\"] == \"abs_below\":\n        box_colors[1] = \"#aaffaa\"\n        box_colors[2] = \"#aaffaa\"\n    ax.set_xlim(0, 1)\n    ax.set_ylim(0, 1)\n    for i in range(4):\n        ax.add_patch(\n            Rectangle(\n                (0.25 * i, 0.0),\n                0.25,\n                1,\n                facecolor=box_colors[i],\n                edgecolor=\"k\",\n                lw=2,\n                zorder=1,\n            )\n        )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"var\"]\n    month = ctx[\"month\"]\n\n    yr = \"year as yr\"\n    months = month2months(month)\n    if month == \"winter\":\n        yr = \"case when month = 12 then year + 1 else year end as yr\"\n\n    comp = \">=\" if ctx[\"which\"] in (\"above\", \"abs_above\") else \"<\"\n\n    # The degrees case\n    high_sql = f\"high {comp} (avg_high + :mag)\"\n    low_sql = f\"low {comp} (avg_low + :mag)\"\n    avg_sql = f\"(high+low)/2. {comp} (avg_temp + :mag)\"\n    tt = f\"{comp} {ctx['mag']}°F of Average\"\n    # The sigma case\n    if ctx[\"unit\"] == \"sigma\":\n        high_sql = f\"high {comp} (avg_high + (stddev_high * :mag))\"\n        low_sql = f\"low {comp} (avg_low + (stddev_low * :mag))\"\n        avg_sql = f\"(high+low)/2. {comp} (avg_temp + (stddev_temp * :mag))\"\n        tt = f\"{comp} {ctx['mag']} Sigma of Average\"\n    if ctx[\"which\"].startswith(\"abs\"):\n        # Ensure magnitude makes sense in this case\n        ctx[\"mag\"] = abs(ctx[\"mag\"])\n        if ctx[\"unit\"] == \"sigma\":\n            high_sql = f\"abs(high - avg_high) {comp} (stddev_high * :mag)\"\n            low_sql = f\"abs(low - avg_low) {comp} (stddev_low * :mag)\"\n            avg_sql = (\n                f\"abs((high+low)/2. - avg_temp) {comp} (stddev_temp * :mag)\"\n            )\n            tt = f\"{comp} +/- {ctx['mag']} Sigma of Average\"\n        else:  # degrees\n            high_sql = f\"abs(high - avg_high) {comp} :mag\"\n            low_sql = f\"abs(low - avg_low) {comp} :mag\"\n            avg_sql = f\"abs((high+low)/2. - avg_temp) {comp} :mag\"\n            tt = f\"{comp} +/- {ctx['mag']}°F of Average\"\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH avgs as (\n            SELECT sday,\n            avg(high) as avg_high,\n            stddev(high) as stddev_high,\n            avg(low) as avg_low,\n            stddev(low) as stddev_low,\n            avg((high+low)/2.) as avg_temp,\n            stddev((high+low)/2.) as stddev_temp\n            from alldata WHERE\n            station = :station GROUP by sday)\n\n        SELECT {yr},\n        sum(case when {high_sql} then 1 else 0 end) as high_{which},\n        sum(case when {low_sql} then 1 else 0 end) as low_{which},\n        sum(case when {avg_sql} then 1 else 0 end) as avg_{which},\n        count(*) as days from alldata o, avgs a WHERE o.station = :station\n        and o.sday = a.sday and month = ANY(:months)\n        GROUP by yr ORDER by yr ASC\n        \"\"\",\n                yr=yr,\n                which=ctx[\"which\"],\n                high_sql=high_sql,\n                low_sql=low_sql,\n                avg_sql=avg_sql,\n            ),\n            conn,\n            params={\n                \"station\": station,\n                \"months\": months,\n                \"mag\": ctx[\"mag\"],\n            },\n            index_col=\"yr\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    df[\"high_freq\"] = (\n        df[f\"high_{ctx['which']}\"] / df[\"days\"].astype(\"f\") * 100.0\n    )\n    df[\"low_freq\"] = df[f\"low_{ctx['which']}\"] / df[\"days\"].astype(\"f\") * 100.0\n    df[\"avg_freq\"] = df[f\"avg_{ctx['which']}\"] / df[\"days\"].astype(\"f\") * 100.0\n\n    title = (\n        f\"{ctx['_sname']} \"\n        f\"({df.index.values.min()}-{df.index.values.max()}) \"\n        f\"{PDICT4[ctx['opt']]} of Days \"\n        f\"with {PDICT[varname]} {tt}\"\n    )\n    subtitle = (\n        f\"(month={month.upper()}) Using Period of Record Simple Climatology\"\n    )\n    fig = figure(title=title, subtitle=subtitle, apctx=ctx)\n    suffix = f\"_{ctx['which']}\" if ctx[\"opt\"] == \"number\" else \"_freq\"\n    avgv = df[varname + suffix].mean()\n\n    colorabove = \"r\"\n    colorbelow = \"b\"\n    if ctx[\"which\"] == \"below\":\n        colorabove, colorbelow = colorbelow, colorabove\n    df[\"color\"] = colorabove\n    df.loc[df[varname + suffix] < avgv, \"color\"] = colorbelow\n    if ctx[\"year\"] in df.index:\n        df.loc[ctx[\"year\"], \"color\"] = \"yellow\"\n    data = df[varname + suffix].values\n    ax = barchart_with_top10(\n        fig,\n        df,\n        f\"{varname}{suffix}\",\n        color=df[\"color\"],\n        table_col_title=\"Days\" if ctx[\"opt\"] == \"number\" else \"Freq (%)\",\n    )\n    pos = ax.get_position()\n    ax.set_position((pos.x0, pos.y0, pos.width, pos.height - 0.15))\n    make_cartoon(fig, ctx)\n    ax.axhline(avgv, lw=2, color=\"k\", zorder=2)\n    vv = f\"Avg: {avgv:.1f}{'' if ctx['opt'] == 'number' else '%'}\"\n    ax.set_ylim(bottom=0)\n    extra = \"\"\n    if ctx[\"year\"] in df.index:\n        extra = (\n            f\" (highlighted year {ctx['year']} with value: \"\n            f\"{data[df.index.get_loc(ctx['year'])]:.1f}\"\n            f\"{'' if ctx['opt'] == 'number' else '%'})\"\n        )\n    ax.set_xlabel(f\"Year{extra}, {vv}\")\n    ax.set_ylabel(\n        \"Frequency [%]\" if ctx[\"opt\"] == \"percent\" else \"Number of Days\"\n    )\n    ax.grid(True)\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p7.py",
    "content": "\"\"\"\nThis plot presents the period over which growing\ndegree days were accumulated between the two thresholds provided by\nthe user.  The colors represent the number of days for the period shown.\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport matplotlib.colors as mpcolors\nimport matplotlib.dates as mdates\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure, get_cmap\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    year = today.year if today.month > 5 else today.year - 1\n    desc[\"gallery\"] = {\n        \"year\": 2023,\n    }\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=year,\n            label=\"Select Year\",\n            min=1893,\n        ),\n        dict(\n            type=\"int\",\n            name=\"gdd1\",\n            default=\"1135\",\n            label=\"Growing Degree Day Start\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"gdd2\",\n            default=\"1660\",\n            label=\"Growing Degree Day End\",\n        ),\n        dict(\n            type=\"int\",\n            default=50,\n            name=\"gddbase\",\n            label=\"Growing Degree Day base (°F)\",\n        ),\n        dict(\n            type=\"int\",\n            default=86,\n            name=\"gddceil\",\n            label=\"Growing Degree Day ceiling (°F)\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"jet\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"coop\")\ndef plotter(ctx: dict, conn: Connection | None = None):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    year = ctx[\"year\"]\n    gdd1 = ctx[\"gdd1\"]\n    gdd2 = ctx[\"gdd2\"]\n\n    res = conn.execute(\n        sql_helper(\n            \"SELECT day, gddxx(:base, :ceil, high, low) as gdd \"\n            \"from alldata WHERE year = :year and station = :st \"\n            \"ORDER by day ASC\"\n        ),\n        {\n            \"base\": ctx[\"gddbase\"],\n            \"ceil\": ctx[\"gddceil\"],\n            \"year\": year,\n            \"st\": station,\n        },\n    )\n    days = []\n    gdds = []\n    for row in res:\n        gdds.append(float(row[1]))\n        days.append(row[0])\n    yticks = []\n    yticklabels = []\n    jan1 = datetime(year, 1, 1)\n    for i in range(110, 330):\n        ts = jan1 + timedelta(days=i)\n        if ts.day == 1 or ts.day % 12 == 1:\n            yticks.append(i)\n            yticklabels.append(ts.strftime(\"%-d %b\"))\n\n    gdds = np.array(gdds)\n    sts = datetime(year, 4, 1)\n    ets = datetime(year, 6, 10)\n    now = sts\n    sz = len(gdds)\n\n    days2 = []\n    starts = []\n    heights = []\n    success = []\n    rows = []\n    while now < ets:\n        idx = now.timetuple().tm_yday - 1\n        running = 0\n        while idx < sz and running < gdd1:\n            running += gdds[idx]\n            idx += 1\n        idx0 = idx\n        while idx < sz and running < gdd2:\n            running += gdds[idx]\n            idx += 1\n        success.append(running >= gdd2)\n        idx1 = idx\n        days2.append(now)\n        starts.append(idx0)\n        heights.append(idx1 - idx0)\n        rows.append(\n            dict(\n                plant_date=now,\n                start_doy=idx0,\n                end_doy=idx1,\n                success=success[-1],\n            )\n        )\n        now += timedelta(days=1)\n\n    if not any(success):\n        raise NoDataFound(\"No data, pick lower GDD values\")\n    df = pd.DataFrame(rows)\n    heights = np.array(heights)\n    success = np.array(success)\n    starts = np.array(starts)\n\n    cmap = get_cmap(ctx[\"cmap\"])\n    bmin = min(heights[success]) - 1\n    bmax = max(heights[success]) + 1\n    bins = np.arange(bmin, bmax + 1.1)\n    norm = mpcolors.BoundaryNorm(bins, cmap.N)\n\n    title = (\n        f\"{ctx['_sname']} :: {year} GDD \"\n        f\"[base={ctx['gddbase']},ceil={ctx['gddceil']}]\\n\"\n        f\"Period between GDD {gdd1} and {gdd2}, gray bars incomplete\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.add_axes((0.125, 0.125, 0.75, 0.75))\n    bars = ax.bar(days2, heights, bottom=starts, fc=\"#EEEEEE\")\n    for i, mybar in enumerate(bars):\n        if success[i]:\n            mybar.set_facecolor(cmap(norm([heights[i]])[0]))\n    ax.grid(True)\n    ax.set_yticks(yticks)\n    ax.set_yticklabels(yticklabels)\n\n    ax.set_ylim(min(starts) - 7, max(starts + heights) + 7)\n\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%-d\\n%b\"))\n    ax.set_xlabel(\"Planting Date\")\n\n    ax2 = fig.add_axes(\n        [0.92, 0.1, 0.07, 0.8], frameon=False, yticks=[], xticks=[]\n    )\n    ax2.set_xlabel(\"Days\")\n    for i, mybin in enumerate(bins[:-1]):\n        ax2.text(0.52, i, f\"{mybin:.0f}\", ha=\"left\", va=\"center\", color=\"k\")\n    ax2.barh(\n        np.arange(len(bins[:-1])),\n        [0.5] * len(bins[:-1]),\n        height=1,\n        color=cmap(norm(bins[:-1])),\n        ec=\"None\",\n    )\n    ax2.set_xlim(0, 1)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p70.py",
    "content": "\"\"\"\nThis chart attempts to display the period between the first and last VTEC\nenabled watch, warning or advisory <strong>issuance</strong> by year.  For\nsome long term products, like Flood Warnings, this plot does not attempt\nto show the time domain that those products were valid, only the issuance.\nThe right two plots display the total number of events and the total\nnumber of dates with at least one event.</p>\n\n<p>The left plot can be colorized by either coloring the event counts per\nday or the accumulated \"year/season to date\" total.</p>\n\n<p>For the purposes of this plot, an event is defined by a single VTEC\nevent identifier usage.  For example, a single Tornado Watch covering\n10 counties only counts as one event. The simple average is computed\nover the years excluding the first and last year.</p>\n\n<p>When you split this plot by 1 July, the year shown is for the year of\nthe second half of this period, ie 2020 is 1 Jul 2019 - 30 Jun 2020.</p>\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.artist import setp\nfrom matplotlib.colorbar import ColorbarBase\nfrom matplotlib.ticker import MaxNLocator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws import vtec\nfrom pyiem.plot import figure, get_cmap\nfrom pyiem.reference import state_names\n\nfrom iemweb.autoplot import ARG_FEMA, FEMA_REGIONS, fema_region2states\n\nPDICT = {\"jan1\": \"January 1\", \"jul1\": \"July 1\"}\nPDICT2 = {\n    \"wfo\": \"View by Single NWS Forecast Office\",\n    \"state\": \"View by State\",\n    \"fema\": \"View by FEMA Region\",\n}\nPDICT3 = {\n    \"daily\": \"Color bars with daily issuance totals\",\n    \"accum\": \"Color bars with accumulated year to date totals\",\n    \"none\": \"Bars should not be colored, please\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"wfo\",\n            options=PDICT2,\n            label=\"View by WFO or State?\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO:\",\n        ),\n        dict(type=\"state\", default=\"IA\", name=\"state\", label=\"Select State:\"),\n        ARG_FEMA,\n        dict(\n            type=\"phenomena\",\n            name=\"phenomena\",\n            default=\"SV\",\n            label=\"Select Watch/Warning Phenomena Type:\",\n        ),\n        dict(\n            type=\"significance\",\n            name=\"significance\",\n            default=\"W\",\n            label=\"Select Watch/Warning Significance Level:\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            label=\"Split the year on date:\",\n            default=\"jan1\",\n            name=\"split\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT3,\n            label=\"How to color bars for left plot:\",\n            default=\"daily\",\n            name=\"f\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"jet\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"][:4]\n    phenomena = ctx[\"phenomena\"]\n    significance = ctx[\"significance\"]\n    split = ctx[\"split\"]\n    opt = ctx[\"opt\"]\n    state = ctx[\"state\"]\n\n    params = {\n        \"phenomena\": phenomena,\n        \"significance\": significance,\n        \"state\": state,\n        \"station\": station,\n    }\n    wfolimiter = \" wfo = :station \"\n    if opt == \"state\":\n        wfolimiter = \" substr(ugc, 1, 2) = :state \"\n    elif opt == \"fema\":\n        wfolimiter = \" substr(ugc, 1, 2) = ANY(:states) \"\n        params[\"states\"] = fema_region2states(ctx[\"fema\"])\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"WITH data as (\n                SELECT eventid, wfo, vtec_year,\n                min(date(issue)) as date from warnings where {wfolimiter}\n                and phenomena = :phenomena and significance = :significance\n                GROUP by eventid, wfo, vtec_year)\n            SELECT vtec_year, date, count(*) from data GROUP by vtec_year, date\n            ORDER by vtec_year ASC, date ASC\n            \"\"\",\n                wfolimiter=wfolimiter,\n            ),\n            conn,\n            params=params,\n            index_col=None,\n            parse_dates=[\n                \"date\",\n            ],\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found for query\")\n\n    # We have an edge case of vtec_year != date.year, remove those rows\n    df = df[df[\"vtec_year\"] == df[\"date\"].dt.year]\n\n    # Since many VTEC events start in 2005, we should not trust any\n    # data that has its first year in 2005\n    if df[\"vtec_year\"].min() == 2005 and split == \"jan1\":\n        df = df[df[\"vtec_year\"] > 2005]\n    # Split the season at jul 1, if requested\n    if split == \"jul1\":\n        df[\"vtec_year\"] = df.apply(\n            lambda x: (\n                x[\"vtec_year\"] + 1 if x[\"date\"].month > 6 else x[\"vtec_year\"]\n            ),\n            axis=1,\n        )\n        df[\"doy\"] = df.apply(\n            lambda x: x[\"date\"] - pd.Timestamp(x[\"vtec_year\"] - 1, 7, 1),\n            axis=1,\n        )\n    else:\n        df[\"doy\"] = df.apply(\n            lambda x: x[\"date\"] - pd.Timestamp(x[\"vtec_year\"], 1, 1), axis=1\n        )\n    df[\"doy\"] = df[\"doy\"].dt.days\n\n    title = f\"[{station}] NWS {ctx['_nt'].sts[station]['name']}\"\n    if opt == \"state\":\n        title = f\"NWS Issued Alerts for State of {state_names[state]}\"\n    elif opt == \"fema\":\n        title = f\"NWS Issued Alerts for FEMA {FEMA_REGIONS[ctx['fema']]}\"\n    title += (\n        \"\\n\"\n        \"Period between First and Last \"\n        f\"{vtec.get_ps_string(phenomena, significance)} \"\n        f\"({phenomena}.{significance})\"\n    )\n\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.add_axes((0.12, 0.1, 0.61, 0.8))\n\n    # Create a color bar for the number of events per day\n    cmap = get_cmap(ctx[\"cmap\"])\n    cmap.set_under(\"tan\")\n    cmap.set_over(\"black\")\n    bins = [1, 2, 3, 4, 5, 7, 10, 15, 20, 25, 50]\n    if ctx[\"f\"] == \"accum\":\n        maxval = (\n            int(\n                df[[\"vtec_year\", \"count\"]]\n                .groupby(\"vtec_year\")\n                .sum()\n                .max()\n                .iloc[0]\n            )\n            + 1\n        )\n        if maxval < 11:\n            bins = np.arange(1, 11)\n        elif maxval < 21:\n            bins = np.arange(1, 21)\n        else:\n            bins = np.linspace(1, maxval, 20, dtype=\"i\")\n\n    norm = mpcolors.BoundaryNorm(bins, cmap.N)\n    if ctx[\"f\"] != \"none\":\n        cax = fig.add_axes(\n            [0.01, 0.12, 0.02, 0.6], frameon=False, yticks=[], xticks=[]\n        )\n        cb = ColorbarBase(\n            cax, norm=norm, cmap=cmap, extend=\"max\", spacing=\"proportional\"\n        )\n        cb.set_label(\n            \"Daily Count\" if ctx[\"f\"] == \"daily\" else \"Accum Count\",\n            loc=\"bottom\",\n        )\n\n    for year, gdf in df.groupby(\"vtec_year\"):\n        size = max(gdf[\"doy\"].max() - gdf[\"doy\"].min(), 1)\n        ax.barh(\n            year,\n            size,\n            left=gdf[\"doy\"].min(),\n            ec=\"brown\",\n            fc=\"tan\",\n            align=\"center\",\n        )\n        if ctx[\"f\"] == \"none\":\n            continue\n        if ctx[\"f\"] == \"daily\":\n            ax.barh(\n                gdf[\"vtec_year\"].values,\n                [1] * len(gdf.index),\n                left=gdf[\"doy\"].values,\n                align=\"center\",\n                zorder=3,\n                color=cmap(norm([gdf[\"count\"]]))[0],\n            )\n            continue\n        # Do the fancy pants accum\n        gdf[\"cumsum\"] = gdf[\"count\"].cumsum()\n        ax.barh(\n            gdf[\"vtec_year\"].values[::-1],\n            gdf[\"doy\"].values[::-1] - gdf[\"doy\"].values[0] + 1,\n            left=[gdf[\"doy\"].values[0]] * len(gdf.index),\n            zorder=3,\n            align=\"center\",\n            color=cmap(norm([gdf[\"cumsum\"].to_numpy()[::-1]]))[0],\n        )\n    gdf = df[[\"vtec_year\", \"doy\"]].groupby(\"vtec_year\").agg([\"min\", \"max\"])\n    if len(gdf.index) < 3:\n        raise NoDataFound(\"Not enough data to compute an average\")\n    # Exclude first and last year in the average\n    avg_start = np.average(gdf[\"doy\", \"min\"].to_numpy()[1:-1])\n    avg_end = np.average(gdf[\"doy\", \"max\"].to_numpy()[1:-1])\n    ax.axvline(avg_start, ls=\":\", lw=2, color=\"k\")\n    ax.axvline(avg_end, ls=\":\", lw=2, color=\"k\")\n    x0 = date(2000, 1 if split == \"jan1\" else 7, 1)\n    _1 = (x0 + timedelta(days=int(avg_start))).strftime(\"%-d %b\")\n    _2 = (x0 + timedelta(days=int(avg_end))).strftime(\"%-d %b\")\n    ax.set_xlabel(f\"Average Start Date: {_1}, End Date: {_2}\")\n    ax.grid()\n    xticks = []\n    xticklabels = []\n    for i in range(367):\n        dt = x0 + timedelta(days=i)\n        if dt.day == 1:\n            xticks.append(i)\n            xticklabels.append(dt.strftime(\"%b\"))\n    ax.set_xticks(xticks)\n    ax.set_xticklabels(xticklabels)\n    ax.set_xlim(df[\"doy\"].min() - 10, df[\"doy\"].max() + 10)\n    ax.set_ylabel(\"Year\")\n    ax.set_ylim(df[\"vtec_year\"].min() - 0.5, df[\"vtec_year\"].max() + 0.5)\n    ax.yaxis.set_major_locator(MaxNLocator(integer=True))\n\n    # ______________________________________________\n    ax = fig.add_axes((0.75, 0.1, 0.1, 0.8))\n    gdf = df[[\"vtec_year\", \"count\"]].groupby(\"vtec_year\").sum()\n    ax.barh(\n        gdf.index.values,\n        gdf[\"count\"].values,\n        color=\"blue\" if ctx[\"f\"] != \"accum\" else cmap(norm([gdf[\"count\"]]))[0],\n        align=\"center\",\n    )\n    ax.set_ylim(df[\"vtec_year\"].min() - 0.5, df[\"vtec_year\"].max() + 0.5)\n    setp(ax.get_yticklabels(), visible=False)\n    ax.grid(True)\n    ax.set_xlabel(\"# Events\")\n    xloc = MaxNLocator(3)\n    ax.xaxis.set_major_locator(xloc)\n    ax.yaxis.set_major_locator(MaxNLocator(integer=True))\n\n    # __________________________________________\n    ax = fig.add_axes((0.88, 0.1, 0.1, 0.8))\n    gdf = df[[\"vtec_year\", \"count\"]].groupby(\"vtec_year\").count()\n    ax.barh(gdf.index.values, gdf[\"count\"].values, fc=\"blue\", align=\"center\")\n    ax.set_ylim(df[\"vtec_year\"].min() - 0.5, df[\"vtec_year\"].max() + 0.5)\n    setp(ax.get_yticklabels(), visible=False)\n    ax.grid(True)\n    ax.set_xlabel(\"# Dates\")\n    xloc = MaxNLocator(3)\n    ax.xaxis.set_major_locator(xloc)\n    ax.yaxis.set_major_locator(MaxNLocator(integer=True))\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p71.py",
    "content": "\"\"\"\nThis plot displays daily average wind speeds for\na given year and month of your choice.  These values are computed by the\nIEM using available observations.  Some observation sites explicitly\nproduce an average wind speed, but that is not considered for this plot.\nYou can download daily summary data\n<a href=\"/request/daily.phtml\" class=\"alert-link\">here</a>.\nThe average wind direction\nis computed by vector averaging of the wind speed and direction reports.\n\"\"\"\n\nfrom datetime import date, datetime\n\nimport matplotlib.patheffects as PathEffects\nimport pandas as pd\nfrom matplotlib.axes import Axes\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.plot import figure\nfrom pyiem.util import convert_value, drct2text\n\nPDICT = {\n    \"KT\": \"knots\",\n    \"MPH\": \"miles per hour\",\n    \"MPS\": \"meters per second\",\n    \"KMH\": \"kilometers per hour\",\n}\nXREF_UNITS = {\n    \"MPS\": \"meter / second\",\n    \"KT\": \"knot\",\n    \"KMH\": \"kilometer / hour\",\n    \"MPH\": \"mile / hour\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"sid\",\n            name=\"zstation\",\n            default=\"DSM\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=datetime.now().year,\n            label=\"Select Year:\",\n        ),\n        dict(\n            type=\"month\",\n            name=\"month\",\n            default=datetime.now().month,\n            label=\"Select Month:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"units\",\n            default=\"MPH\",\n            label=\"Wind Speed Units:\",\n            options=PDICT,\n        ),\n    ]\n    return desc\n\n\ndef pprint(value: float) -> str:\n    \"\"\"Return a pretty printed value\"\"\"\n    if value is None or pd.isna(value):\n        return \"M\"\n    return f\"{value:.0f}\"\n\n\ndef arrow(ax: Axes, x: float, y: float, drct: float):\n    \"\"\"Draw a arrow.\"\"\"\n    angle_deg = 90 - drct + 180\n    ax.annotate(\n        \"→\",\n        xy=(x, y),\n        ha=\"center\",\n        va=\"center\",\n        fontsize=16,\n        rotation=angle_deg,\n        color=\"black\",\n    )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    plot_units = ctx[\"units\"]\n    year = ctx[\"year\"]\n    month = ctx[\"month\"]\n    sts = date(year, month, 1)\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n                SELECT extract(year from day) as year,\n                to_char(day, 'mmdd') as sday,\n                day, avg_sknt as sknt, vector_avg_drct as drct,\n                coalesce(max_gust, 0) as gust\n                from summary s WHERE iemid = :iemid and\n                extract(month from day) = :month and avg_sknt is not null\n                ORDER by day ASC\n        \"\"\"),\n            conn,\n            params={\"iemid\": ctx[\"_nt\"].sts[station][\"iemid\"], \"month\": month},\n            parse_dates=[\"day\"],\n        )\n    title = f\"{ctx['_sname']}\\n{sts:%b %Y} Daily Wind Speed and Direction\"\n    fig = figure(title=title, apctx=ctx)\n    ax = fig.add_axes((0.1, 0.2, 0.8, 0.7))\n\n    xlabels = []\n    xticks = []\n    if not df.empty:\n        # Convert speed to desired units\n        df[\"speed\"] = convert_value(df[\"sknt\"], \"knot\", XREF_UNITS[plot_units])\n        df[\"gust\"] = convert_value(df[\"gust\"], \"knot\", XREF_UNITS[plot_units])\n        # compute climatology\n        climo = (\n            df[[\"speed\", \"sday\"]]\n            .groupby(\"sday\")\n            .mean()\n            .rolling(window=7, center=True, min_periods=1)\n            .mean()\n            .reset_index()\n        )\n        climo[\"day_of_month\"] = climo[\"sday\"].apply(lambda x: int(x[-2:]))\n        label = (\n            f\"Smoothed Speed Climatology ({df['year'].min():.0f}-\"\n            f\"{df['year'].max():.0f})\"\n        )\n        # Get this year's data\n        df = df[df[\"year\"] == year]\n        if not df.empty:\n            ax.text(\n                0,\n                -0.02,\n                \"Day\\nSpeed\\nGust\",\n                ha=\"right\",\n                va=\"top\",\n                fontsize=8,\n                transform=ax.transAxes,\n            )\n            ax.bar(\n                df[\"day\"].dt.day.values,\n                df[\"gust\"].values,\n                color=\"red\",\n                align=\"center\",\n                label=\"Max Gust\",\n            )\n            ax.bar(\n                df[\"day\"].dt.day.values,\n                df[\"speed\"].values,\n                color=\"green\",\n                align=\"center\",\n                label=\"Average Speed\",\n            )\n            pos = max(df[\"speed\"].min() / 2.0, 0.5)\n            # Leave 15% room at the top\n            apos = max(df[\"speed\"].max() * 1.075, df[\"gust\"].max() * 1.075)\n            for _, row in df.iterrows():\n                x = row[\"day\"].day\n                xticks.append(x)\n                xlabels.append(\n                    \"\\n\".join(\n                        [str(x), pprint(row[\"speed\"]), pprint(row[\"gust\"])]\n                    )\n                )\n                if pd.notna(row[\"drct\"]):\n                    arrow(ax, x, apos, row[\"drct\"])\n                if pd.notna(row[\"drct\"]):\n                    ax.text(\n                        x,\n                        pos,\n                        drct2text(row[\"drct\"]),\n                        ha=\"center\",\n                        rotation=90,\n                        color=\"white\",\n                        va=\"center\",\n                    ).set_path_effects(\n                        [PathEffects.withStroke(linewidth=2, foreground=\"k\")]\n                    )\n            ax.set_ylim(0, apos * 1.05)\n            ax.plot(\n                climo[\"day_of_month\"],\n                climo[\"speed\"],\n                \"k-\",\n                lw=2,\n                label=label,\n            )\n            ax.legend(loc=(0.0, -0.2), ncol=3)\n        ax.grid(True, axis=\"y\", zorder=11)\n    else:\n        ax.text(\n            0.5,\n            0.5,\n            \"No Wind Speed Information For Site For Period.\",\n            transform=ax.transAxes,\n            ha=\"center\",\n            bbox={\"color\": \"white\"},\n        )\n    ax.set_xlim(0.5, 31.5)\n    if xlabels:\n        ax.set_xticks(xticks)\n        ax.set_xticklabels(xlabels, ha=\"center\", fontsize=8)\n\n    ax.set_ylabel(f\"Wind Speed [{PDICT[plot_units]}]\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p72.py",
    "content": "\"\"\"\nThis chart presents a histogram of the Watch,\nWarning, Advisory valid time.  This is the time period between the\nissuance and final expiration time of a given event.  An individual event\nis one Valid Time Event Code (VTEC) event identifier.  For example, a\nWinter Storm Watch for 30 counties would only count as one event in this\nanalysis.\n\n<p>If an individual event goes for more than 24 hours, the event is\ncapped at a 24 hour duration for the purposes of this analysis.  Events\nlike Flood Warnings are prime examples of this.\n\n<p><a href=\"/plotting/auto/?q=48\">Autoplot 48</a> is similar to this, but\nplots for a single county/zone/parish at a time.\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws import vtec\nfrom pyiem.plot import figure_axes\nfrom pyiem.util import utc\n\nMDICT = {\n    \"all\": \"No Month/Time Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"spring2\": \"Spring (AMJ)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    tomorrow = utc() + timedelta(days=1)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO:\",\n        ),\n        dict(\n            type=\"phenomena\",\n            name=\"phenomena\",\n            default=\"WC\",\n            label=\"Select Watch/Warning Phenomena Type:\",\n        ),\n        dict(\n            type=\"significance\",\n            name=\"significance\",\n            default=\"W\",\n            label=\"Select Watch/Warning Significance Level:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"season\",\n            default=\"all\",\n            label=\"Select Time Period:\",\n            options=MDICT,\n        ),\n        {\n            \"type\": \"date\",\n            \"default\": \"1986/01/01\",\n            \"min\": \"1986/01/01\",\n            \"name\": \"sdate\",\n            \"label\": \"Potential Start Date (@00 UTC) Limit, if data exists\",\n        },\n        {\n            \"type\": \"date\",\n            \"default\": f\"{tomorrow:%Y/%m/%d}\",\n            \"max\": f\"{tomorrow:%Y/%m/%d}\",\n            \"min\": \"1986/01/01\",\n            \"name\": \"edate\",\n            \"label\": \"Potential End Date (@00 UTC) Limit, if data exists\",\n        },\n    ]\n    return desc\n\n\ndef get_data(conn, params):\n    \"\"\"Fetch me the data.\"\"\"\n    monthlimiter = \"and extract(month from issue) = ANY(:months)\"\n    if params[\"months\"] is None:\n        monthlimiter = \"\"\n    df = pd.read_sql(\n        sql_helper(\n            \"\"\"\n    WITH data as (\n        SELECT vtec_year as yr, eventid,\n        min(issue at time zone :tzname) as minissue,\n        max(issue at time zone :tzname) as maxissue,\n        max(expire at time zone :tzname) as maxexpire from warnings WHERE\n        phenomena = :phenomena and significance = :significance\n        and wfo = :wfo {monthlimiter} and issue >= :sdate and issue < :edate\n        GROUP by yr, eventid),\n    events as (\n        select count(*), min(minissue) as min_issue,\n        max(maxissue) as max_issue from data),\n    timedomain as (\n        SELECT generate_series(minissue,\n            least(maxexpire, minissue + '24 hours'::interval)\n            , '1 minute'::interval)\n        as ts from data\n    ),\n    data2 as (\n        SELECT\n        extract(hour from ts)::int * 60 + extract(minute from ts)::int\n        as minute, count(*) from timedomain\n        GROUP by minute ORDER by minute ASC)\n    select d.minute, d.count, e.count as total, min_issue, max_issue\n    from data2 d, events e\n    \"\"\",\n            monthlimiter=monthlimiter,\n        ),\n        conn,\n        params=params,\n        index_col=\"minute\",\n    )\n    if not df.empty:\n        df = df.reindex(range(24 * 60))\n        df[\"frequency\"] = df[\"count\"] / df[\"total\"] * 100.0\n    else:\n        df[\"frequency\"] = 0\n    return df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    wfo = ctx[\"station\"]\n    phenomena = ctx[\"phenomena\"]\n    significance = ctx[\"significance\"]\n    if ctx[\"season\"] == \"all\":\n        months = list(range(1, 13))\n    elif ctx[\"season\"] == \"spring\":\n        months = [3, 4, 5]\n    elif ctx[\"season\"] == \"spring2\":\n        months = [4, 5, 6]\n    elif ctx[\"season\"] == \"fall\":\n        months = [9, 10, 11]\n    elif ctx[\"season\"] == \"summer\":\n        months = [6, 7, 8]\n    elif ctx[\"season\"] == \"winter\":\n        months = [12, 1, 2]\n    else:\n        ts = datetime.strptime(f\"2000-{ctx['season']}-01\", \"%Y-%b-%d\")\n        months = [ts.month]\n\n    tzname = ctx[\"_nt\"].sts[wfo][\"tzname\"]\n    dfseason = None\n    sfcol = f\"{ctx['season']}_frequency\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        dfall = get_data(\n            conn,\n            {\n                \"tzname\": tzname,\n                \"phenomena\": phenomena,\n                \"significance\": significance,\n                \"wfo\": wfo,\n                \"months\": None,\n                \"sdate\": ctx[\"sdate\"],\n                \"edate\": ctx[\"edate\"],\n            },\n        )\n        if dfall.empty:\n            raise NoDataFound(\"No Results Found\")\n        if ctx[\"season\"] != \"all\":\n            dfseason = get_data(\n                conn,\n                {\n                    \"tzname\": tzname,\n                    \"phenomena\": phenomena,\n                    \"significance\": significance,\n                    \"wfo\": wfo,\n                    \"months\": months,\n                    \"sdate\": ctx[\"sdate\"],\n                    \"edate\": ctx[\"edate\"],\n                },\n            )\n            dfall[sfcol] = dfseason[\"frequency\"]\n            subtitle = f\"All Year + {MDICT[ctx['season']]}\"\n        else:\n            dfall[sfcol] = -1\n            subtitle = \"All Year\"\n    title = (\n        f\"{ctx['_sname']} :: Time of Day Frequency of \"\n        f\"{vtec.get_ps_string(phenomena, significance)} \"\n        f\"({phenomena}.{significance})\"\n    )\n    subtitle = (\n        f\"{subtitle}, Period: \"\n        f\"{dfall['min_issue'].min():%d %b %Y} - \"\n        f\"{dfall['max_issue'].max():%d %b %Y}\"\n    )\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    ax.bar(\n        dfall.index.values,\n        dfall[\"frequency\"].values,\n        color=\"tan\",\n        align=\"center\",\n        label=\"All Year\",\n        width=1,\n    )\n    ax.grid()\n    if dfseason is not None:\n        ax.plot(\n            dfall.index.values,\n            dfall[sfcol].values,\n            drawstyle=\"steps-pre\",\n            label=MDICT[ctx[\"season\"]],\n            lw=2,\n            color=\"b\",\n        )\n        ax.legend(loc=\"best\")\n    if max(dfall[\"frequency\"].max(), dfall[sfcol].max()) > 70:\n        ax.set_ylim(0, 101)\n    ax.set_xticks(range(0, 25 * 60, 60))\n    ax.set_xlim(-0.5, 24 * 60 + 1)\n    ax.set_xticklabels(\n        [\n            \"Mid\",\n            \"\",\n            \"\",\n            \"3 AM\",\n            \"\",\n            \"\",\n            \"6 AM\",\n            \"\",\n            \"\",\n            \"9 AM\",\n            \"\",\n            \"\",\n            \"Noon\",\n            \"\",\n            \"\",\n            \"3 PM\",\n            \"\",\n            \"\",\n            \"6 PM\",\n            \"\",\n            \"\",\n            \"9 PM\",\n            \"\",\n            \"\",\n            \"Mid\",\n        ]\n    )\n    ax.set_xlabel(f\"Timezone: {tzname} (Daylight or Standard)\")\n    ylabel = f\"{dfall['total'].max():.0f} Overall\"\n    if ctx[\"season\"] != \"all\":\n        ylabel += f\", {dfseason['total'].max()} {MDICT[ctx['season']]}\"\n    ax.set_ylabel(f\"Percentage [%] out of\\n{ylabel} Events\")\n\n    return fig, dfall.drop(columns=[\"min_issue\", \"max_issue\"])\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p73.py",
    "content": "\"\"\"\nThis chart displays the number of products issued\nby a NWS Office  or state by year for a given watch, warning,\nor advisory of your choice.  These numbers are based on IEM archives and\nare not official!  The counting is summing up distinct events.  If one\ntornado watch covered 40 counties, this would only count as 1 for this\nplot.\n\n<p>Since the year 2005 and 2008 are common start years for VTEC tracking of\nvarious phenomena, when this app encounters those years as the starting\npoint of the plot, they are droppped from the display.\n\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nfrom matplotlib.ticker import MaxNLocator\nfrom pyiem.database import (\n    get_sqlalchemy_conn,\n    sql_helper,\n    with_sqlalchemy_conn,\n)\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws import vtec\nfrom pyiem.plot import figure_axes\nfrom pyiem.reference import state_names\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.autoplot import ARG_FEMA, FEMA_REGIONS, fema_region2states\n\nPDICT = {\n    \"yes\": \"Limit Plot to Year-to-Date\",\n    \"no\": \"Plot Entire Year\",\n    \"udf\": \"User Defined Period\",\n}\nPDICT2 = {\n    \"wfo\": \"View by Single NWS Forecast Office\",\n    \"state\": \"View by State\",\n    \"ugc\": \"NWS County/Forecast Zone\",\n    \"fema\": \"FEMA Zone\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"wfo\",\n            options=PDICT2,\n            label=\"What to summarize data by:\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO:\",\n            all=True,\n        ),\n        dict(type=\"state\", default=\"IA\", name=\"state\", label=\"Select State:\"),\n        ARG_FEMA,\n        dict(\n            type=\"ugc\",\n            name=\"ugc\",\n            default=\"IAC169\",\n            label=\"Select UGC Zone/County:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"limit\",\n            default=\"no\",\n            label=\"Date Limit to Plot:\",\n            options=PDICT,\n        ),\n        {\n            \"type\": \"sday\",\n            \"name\": \"sday\",\n            \"default\": \"0101\",\n            \"label\": \"Start Date (if User Defined Period) [inclusive]:\",\n        },\n        {\n            \"type\": \"sday\",\n            \"name\": \"eday\",\n            \"default\": \"1231\",\n            \"label\": \"End Date (if User Defined Period) [inclusive]:\",\n        },\n        dict(\n            type=\"phenomena\",\n            name=\"phenomena\",\n            default=\"FF\",\n            label=\"Select Watch/Warning Phenomena Type:\",\n        ),\n        dict(\n            type=\"significance\",\n            name=\"significance\",\n            default=\"W\",\n            label=\"Select Watch/Warning Significance Level:\",\n        ),\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"postgis\")\ndef get_ugc_name(ugc, defaultwfo, conn: Connection | None = None):\n    \"\"\"Return the WFO and county name.\"\"\"\n    res = conn.execute(\n        sql_helper(\n            \"SELECT name, wfo from ugcs where ugc = :ugc and end_ts is null\"\n        ),\n        {\"ugc\": ugc},\n    )\n    if res.rowcount == 0:\n        return \"Unknown\", defaultwfo\n    return res.fetchone()\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    limit = ctx[\"limit\"]\n    phenomena = ctx[\"phenomena\"]\n    significance = ctx[\"significance\"]\n    opt = ctx[\"opt\"]\n    state = ctx[\"state\"]\n\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\n        \"name\": \"All Offices\",\n        \"tzname\": \"America/Chicago\",\n    }\n    params = {}\n    tzname = \"America/Chicago\"\n    if opt == \"wfo\":\n        wfo_limiter = \" and wfo = :wfo \"\n        params[\"wfo\"] = station if len(station) == 3 else station[1:]\n        if station == \"_ALL\":\n            wfo_limiter = \"\"\n        title1 = f\"NWS {ctx['_nt'].sts[station]['name']}\"\n        tzname = ctx[\"_nt\"].sts[station][\"tzname\"]\n    elif opt == \"ugc\":\n        wfo_limiter = \" and ugc = :ugc \"\n        params[\"ugc\"] = ctx[\"ugc\"]\n        name, wfo = get_ugc_name(ctx[\"ugc\"], station)\n        wfo = wfo[:3]  # some have multiple WFOs\n        title1 = (\n            f\"NWS {ctx['_nt'].sts[wfo]['name']} Issued for [{ctx['ugc']}] \"\n            f\"{name}\"\n        )\n    elif opt == \"fema\":\n        wfo_limiter = \" and substr(ugc, 1, 2) = ANY(:states) \"\n        params[\"states\"] = fema_region2states(ctx[\"fema\"])\n        title1 = f\"FEMA Region {ctx['fema']} {FEMA_REGIONS[ctx['fema']]}\"\n    else:\n        wfo_limiter = \" and substr(ugc, 1, 2) = :state \"\n        params[\"state\"] = state\n        title1 = state_names[state]\n    doy_limiter = \"\"\n    title = \"Entire Year\"\n    if limit.lower() == \"yes\":\n        title = f\"thru ~{date.today():%-d %b}\"\n        doy_limiter = (\n            \" and extract(doy from issue at time zone :tzname) <= \"\n            \"extract(doy from 'TODAY'::date) \"\n        )\n    elif limit.lower() == \"udf\":\n        title = f\"{ctx['sday']:%-d %b} thru {ctx['eday']:%-d %b}\"\n        doy_limiter = (\n            \" and to_char(issue at time zone :tzname, 'mmdd') >= :sday \"\n            \" and to_char(issue at time zone :tzname, 'mmdd') <= :eday \"\n        )\n        params[\"sday\"] = f\"{ctx['sday']:%m%d}\"\n        params[\"eday\"] = f\"{ctx['eday']:%m%d}\"\n\n    desc = \"wfo, \"\n    if phenomena in [\"TR\", \"HU\"]:\n        desc = \"\"\n    if phenomena in [\"SV\", \"TO\"] and significance == \"A\":\n        desc = \"\"\n    params[\"sig\"] = significance\n    params[\"ph\"] = phenomena\n    params[\"tzname\"] = tzname\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            with data as (\n                SELECT distinct\n                extract(year from issue at time zone :tzname)::int as yr,\n                {desc} eventid\n                from warnings where phenomena = :ph and significance = :sig\n                {wfo_limiter} {doy_limiter})\n\n            SELECT yr, count(*) from data GROUP by yr ORDER by yr ASC\n        \"\"\",\n                desc=desc,\n                wfo_limiter=wfo_limiter,\n                doy_limiter=doy_limiter,\n            ),\n            conn,\n            params=params,\n        )\n    if df.empty:\n        if opt == \"ugc\":\n            raise NoDataFound(\n                \"No events were found for this UGC + VTEC Phenomena\\n\"\n                \"combination, try flipping between county/zone\"\n            )\n        raise NoDataFound(\"Sorry, no data found!\")\n\n    # Drop 2005 or 2008 if they are start years\n    if df[\"yr\"].min() == 2005:\n        df = df[df[\"yr\"] > 2005]\n    elif df[\"yr\"].min() == 2008:\n        df = df[df[\"yr\"] > 2008]\n    if df.empty:\n        raise NoDataFound(\"No data found after filtering, adjust years\")\n    title = f\"{title1} [{title}]\"\n    subtitle = (\n        f\"{vtec.get_ps_string(phenomena, significance)} \"\n        f\"({phenomena}.{significance}) Count\"\n    )\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    ax.bar(df[\"yr\"], df[\"count\"], align=\"center\")\n    ax.set_xlim(df[\"yr\"].min() - 0.5, df[\"yr\"].max() + 0.5)\n    ymax = df[\"count\"].max()\n    ax.set_ylim(top=ymax * 1.2)\n    for _, row in df.iterrows():\n        ax.text(\n            row[\"yr\"],\n            row[\"count\"] + (ymax * 0.05),\n            str(row[\"count\"]),\n            rotation=90,\n            ha=\"center\",\n        )\n    ax.grid(True)\n    ax.set_ylabel(\"Yearly Count\")\n    xx = \"\" if limit == \"yes\" else date.today().year\n    xlabel = \"\"\n    if limit != \"udf\":\n        xlabel = f\"{xx} thru approximately {date.today():%-d %b}.\"\n    ax.set_xlabel(f\"{xlabel} Timezone: {tzname}\")\n    ax.xaxis.set_major_locator(MaxNLocator(integer=True))\n    ax.yaxis.set_major_locator(MaxNLocator(integer=True))\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p74.py",
    "content": "\"\"\"\nThe number of days for a given season that are\neither above or below some temperature threshold.\n\"\"\"\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom scipy import stats\n\nfrom iemweb.autoplot import ARG_STATION\nfrom iemweb.autoplot.barchart import barchart_with_top10\n\nPDICT = {\"above\": \"At or Above Threshold\", \"below\": \"Below Threshold\"}\nPDICT2 = {\n    \"winter\": \"Winter (Dec, Jan, Feb)\",\n    \"spring\": \"Spring (Mar, Apr, May)\",\n    \"summer\": \"Summer (Jun, Jul, Aug)\",\n    \"fall\": \"Fall (Sep, Oct, Nov)\",\n    \"all\": \"Entire Year\",\n}\nPDICT3 = {\n    \"high\": \"High Temperature\",\n    \"low\": \"Low Temperature\",\n    \"precip\": \"Precipitation\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"season\",\n            default=\"winter\",\n            label=\"Select Season:\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"select\",\n            name=\"dir\",\n            default=\"below\",\n            label=\"Threshold Direction:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"low\",\n            label=\"Which Daily Variable:\",\n            options=PDICT3,\n        ),\n        dict(\n            type=\"float\",\n            name=\"threshold\",\n            default=0,\n            label=\"Temperature (F) or Precip (in) Threshold:\",\n        ),\n        dict(\n            type=\"year\", name=\"year\", default=1893, label=\"Start Year of Plot\"\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    season = ctx[\"season\"]\n    direction = ctx[\"dir\"]\n    varname = ctx[\"var\"]\n    threshold = ctx[\"threshold\"]\n    startyear = ctx[\"year\"]\n\n    b = f\"{varname} {'>=' if direction == 'above' else '<'} {threshold}\"\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            f\"\"\"\n        SELECT extract(year from day + '%s month'::interval)::int as yr,\n        sum(case when month in (12, 1, 2) and {b}\n        then 1 else 0 end) as winter,\n        sum(case when month in (3, 4, 5) and {b}\n        then 1 else 0 end) as spring,\n        sum(case when month in (6, 7, 8) and {b}\n        then 1 else 0 end) as summer,\n        sum(case when month in (9, 10, 11) and {b}\n        then 1 else 0 end) as fall,\n        sum(case when {b} then 1 else 0 end) as all\n        from alldata WHERE station = %s and year >= %s\n        GROUP by yr ORDER by yr ASC\n        \"\"\",\n            conn,\n            params=(1 if season != \"all\" else 0, station, startyear),\n            index_col=\"yr\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found for query\")\n    df.index.name = \"year\"\n    tt = \"°F\" if varname != \"precip\" else \"inch\"\n    title = (\n        f\"{ctx['_sname']} {df.index.min():.0f}-{df.index.max():.0f} \"\n        \"Number of Days\\n\"\n        f\"[{PDICT2[season]}] with {PDICT3[varname]} {PDICT[direction]} \"\n        f\"{threshold}{tt}\"\n    )\n    fig = figure(title=title, apctx=ctx)\n    avgv = df[season].mean()\n\n    colorabove = \"r\"\n    colorbelow = \"b\"\n    if direction == \"below\":\n        colorabove = \"b\"\n        colorbelow = \"r\"\n    df[\"color\"] = np.where(df[season] < avgv, colorbelow, colorabove)\n\n    ax = barchart_with_top10(\n        fig,\n        df,\n        season,\n        color=df[\"color\"].to_list(),\n        labelformat=\"%.0f\",\n        table_col_title=\"Days\",\n    )\n    ax.axhline(avgv, lw=2, color=\"k\", zorder=2, label=\"Average\")\n    h_slope, intercept, r_value, _, _ = stats.linregress(\n        df.index.values, df[season]\n    )\n    ax.plot(\n        df.index.values,\n        h_slope * df.index.values + intercept,\n        \"--\",\n        lw=2,\n        color=\"k\",\n        label=\"Trend\",\n    )\n    ax.text(\n        0.01,\n        0.99,\n        f\"Avg: {avgv:.1f}, slope: {h_slope * 100.0:.2f} days/century, \"\n        f\"R$^2$={r_value**2:.2f}\",\n        transform=ax.transAxes,\n        va=\"top\",\n        bbox=dict(color=\"white\"),\n    )\n    ax.set_xlabel(\"Year\")\n    ax.set_xlim(df.index.min() - 1, df.index.max() + 1)\n    ax.set_ylim(0, max([df[season].max() + df[season].max() / 7.0, 3]))\n    ax.set_ylabel(\"Number of Days\")\n    ax.grid(True)\n    ax.legend(ncol=1)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p75.py",
    "content": "\"\"\"\nSimple plot of seasonal/yearly precipitation totals.\n\"\"\"\n\nfrom datetime import datetime\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_dbconnc\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom scipy import stats\n\nfrom iemweb.autoplot import ARG_STATION\nfrom iemweb.autoplot.barchart import barchart_with_top10\n\nPDICT2 = {\n    \"winter\": \"Winter (Dec, Jan, Feb)\",\n    \"fma\": \"FMA (Feb, Mar, Apr)\",\n    \"spring\": \"Spring (Mar, Apr, May)\",\n    \"amj\": \"AMJ (Apr, May, Jun)\",\n    \"summer\": \"Summer (Jun, Jul, Aug)\",\n    \"fall\": \"Fall (Sep, Oct, Nov)\",\n    \"all\": \"Entire Year\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"season\",\n            default=\"winter\",\n            label=\"Select Season:\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"year\", name=\"year\", default=1893, label=\"Start Year of Plot\"\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    pgconn, cursor = get_dbconnc(\"coop\")\n    station = ctx[\"station\"]\n    season = ctx[\"season\"]\n    _ = PDICT2[season]\n    startyear = ctx[\"year\"]\n\n    cursor.execute(\n        \"\"\"\n      SELECT extract(year from day + '%s month'::interval) as yr,\n      sum(case when month in (12, 1, 2)\n      then precip else 0 end) as winter,\n      sum(case when month in (2, 3, 4)\n      then precip else 0 end) as fma,\n      sum(case when month in (3, 4, 5)\n      then precip else 0 end) as spring,\n      sum(case when month in (4, 5, 6)\n      then precip else 0 end) as amj,\n      sum(case when month in (6, 7, 8)\n      then precip else 0 end) as summer,\n      sum(case when month in (9, 10, 11)\n      then precip else 0 end) as fall,\n      sum(precip) as all\n      from alldata WHERE station = %s GROUP by yr ORDER by yr ASC\n    \"\"\",\n        (1 if season != \"all\" else 0, station),\n    )\n    if cursor.rowcount == 0:\n        pgconn.close()\n        raise NoDataFound(\"No Data Found.\")\n\n    today = datetime.now()\n    thisyear = today.year\n    if season == \"spring\" and today.month > 5:\n        thisyear += 1\n    rows = []\n    for row in cursor:\n        if row[\"yr\"] < startyear:\n            continue\n        if row[season] is not None:\n            rows.append(dict(year=int(row[\"yr\"]), value=float(row[season])))\n    cursor.close()\n    pgconn.close()\n    if not rows:\n        raise NoDataFound(\"No Data Found.\")\n    df = pd.DataFrame(rows).set_index(\"year\")\n\n    title = (\n        f\"{ctx['_sname']} {df.index[0]:.0f}-{df.index[-1]:.0f} :: \"\n        f\"Precipitation [{PDICT2[season]}] \"\n    )\n    fig = figure(title=title, apctx=ctx)\n    avgv = df[\"value\"].mean()\n\n    colorabove = \"seagreen\"\n    colorbelow = \"lightsalmon\"\n    df[\"color\"] = np.where(df[\"value\"] < avgv, colorbelow, colorabove)\n    ax = barchart_with_top10(\n        fig, df, \"value\", color=df[\"color\"].to_list(), labelformat=\"%.2f\"\n    )\n    ax.axhline(avgv, lw=2, color=\"k\", zorder=2, label=\"Average\")\n    h_slope, intercept, r_value, _, _ = stats.linregress(\n        df.index.values, df[\"value\"].values\n    )\n    ax.plot(\n        df.index.values,\n        h_slope * df.index.values + intercept,\n        \"--\",\n        lw=2,\n        color=\"k\",\n        label=\"Trend\",\n    )\n    ax.text(\n        0.01,\n        0.99,\n        f\"Avg: {avgv:.2f}, slope: {(h_slope * 100.0):.2f} inch/century, \"\n        f\"R$^2$={(r_value**2):.2f}\",\n        transform=ax.transAxes,\n        va=\"top\",\n        bbox=dict(color=\"white\"),\n    )\n    ax.set_xlabel(\"Year\")\n    ax.set_xlim(df.index[0] - 1, df.index[-1] + 1)\n    ax.set_ylim(0, df[\"value\"].max() + df[\"value\"].max() / 10.0)\n    ax.set_ylabel(\"Precipitation [inches]\")\n    ax.grid(True)\n    ax.legend(ncol=2, fontsize=10)\n\n    return fig, df.drop(columns=\"color\")\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p76.py",
    "content": "\"\"\"\nSimple plot of yearly average dew points by year,\nseason, or month.\nThis calculation was done by computing the mixing ratio, then averaging\nthe mixing ratios by year, and then converting that average to a dew point.\nThis was done due to the non-linear nature of dew point when expressed in\nunits of temperature.  If you plot the 'winter' season, the year shown is\nof the Jan/Feb portion of the season. If you plot the 'Water Year', the\nyear shown is the September 30th of the period.\n\n<p>You can optionally restrict the local hours of the day to consider for\nthe plot.  These hours are expressed as a range of hours using a 24 hour\nclock.  For example, '8-16' would indicate a period between 8 AM and 4 PM\ninclusive.  If you want to plot one hour, just set the start and end hour\nto the same value.</p>\n\"\"\"\n\nfrom datetime import datetime\n\nimport metpy.calc as mcalc\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.ticker import MaxNLocator\nfrom metpy.units import units\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom pyiem.util import utc\nfrom scipy import stats\n\nfrom iemweb.util import month2months\n\nMDICT = {\n    \"all\": \"No Month/Time Limit\",\n    \"water_year\": \"Water Year\",\n    \"spring\": \"Spring (MAM)\",\n    \"spring2\": \"Spring (AMJ)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\nPDICT = {\n    \"tmpf\": \"Air Temperature\",\n    \"dwpf\": \"Dew Point Temperature\",\n    \"feel\": \"Feels Like Temperature\",\n    \"relh\": \"Relative Humidity\",\n    \"vpd\": \"Vapor Pressure Deficit\",\n}\nUNITS = {\n    \"tmpf\": \"°F\",\n    \"dwpf\": \"°F\",\n    \"feel\": \"°F\",\n    \"relh\": \"%\",\n    \"vpd\": \"hPa\",\n}\nPDICT2 = {\n    \"bar\": \"Bar Plot\",\n    \"violin\": \"Violin Plot\",\n}\nPDICT3 = {\n    \"min\": \"Minimum\",\n    \"mean\": \"Mean\",\n    \"max\": \"Maximum\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"station\",\n            default=\"DSM\",\n            label=\"Select Station\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"season\",\n            default=\"winter\",\n            label=\"Select Time Period:\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"varname\",\n            default=\"dwpf\",\n            label=\"Metric to Plot:\",\n            options=PDICT,\n        ),\n        {\n            \"type\": \"select\",\n            \"options\": PDICT3,\n            \"default\": \"mean\",\n            \"label\": \"Daily aggregate to use in yearly statistics\",\n            \"name\": \"agg\",\n        },\n        dict(\n            type=\"year\", name=\"year\", default=1893, label=\"Start Year of Plot\"\n        ),\n        dict(\n            type=\"select\",\n            name=\"w\",\n            default=\"violin\",\n            label=\"Select plot type\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"text\",\n            name=\"hours\",\n            optional=True,\n            default=\"0-23\",\n            label=(\n                \"Inclusive Local Hours (24-hour clock) \"\n                \"to Limit Analysis (0 thru 23) (optional)\"\n            ),\n        ),\n    ]\n    return desc\n\n\ndef run_calcs(df, ctx):\n    \"\"\"Do our maths.\"\"\"\n    # Convert sea level pressure to station pressure\n    df[\"pressure\"] = (\n        mcalc.add_height_to_pressure(\n            df[\"slp\"].values * units(\"millibars\"),\n            ctx[\"_nt\"].sts[ctx[\"station\"]][\"elevation\"] * units(\"m\"),\n        )\n        .to(units(\"millibar\"))\n        .m\n    )\n    # Compute the mixing ratio\n    df[\"mixingratio\"] = mcalc.mixing_ratio_from_relative_humidity(\n        df[\"pressure\"].values * units(\"millibars\"),\n        df[\"tmpf\"].values * units(\"degF\"),\n        df[\"relh\"].values * units(\"percent\"),\n    ).m\n    # Compute the saturation mixing ratio\n    df[\"saturation_mixingratio\"] = mcalc.saturation_mixing_ratio(\n        df[\"pressure\"].values * units(\"millibars\"),\n        df[\"tmpf\"].values * units(\"degF\"),\n    ).m\n    df[\"vapor_pressure\"] = (\n        mcalc.vapor_pressure(\n            df[\"pressure\"].values * units(\"millibars\"),\n            df[\"mixingratio\"].values * units(\"kg/kg\"),\n        )\n        .to(units(\"hPa\"))\n        .m\n    )\n    df[\"saturation_vapor_pressure\"] = (\n        mcalc.vapor_pressure(\n            df[\"pressure\"].values * units(\"millibars\"),\n            df[\"saturation_mixingratio\"].values * units(\"kg/kg\"),\n        )\n        .to(units(\"hPa\"))\n        .m\n    )\n    df[\"vpd\"] = df[\"saturation_vapor_pressure\"] - df[\"vapor_pressure\"]\n    # remove any NaN rows\n    df = df.dropna()\n    return df\n\n\ndef get_data(ctx, startyear):\n    \"\"\"Get data\"\"\"\n    today = datetime.now()\n    lastyear = today.year\n    deltadays = 0\n    months = month2months(ctx[\"season\"])\n    if ctx[\"season\"] == \"water_year\":\n        deltadays = 92\n        lastyear += 1\n    elif ctx[\"season\"] == \"spring\":\n        if today.month > 5:\n            lastyear += 1\n    elif ctx[\"season\"] == \"spring2\":\n        if today.month > 6:\n            lastyear += 1\n    elif ctx[\"season\"] == \"fall\":\n        if today.month > 11:\n            lastyear += 1\n    elif ctx[\"season\"] == \"summer\":\n        if today.month > 8:\n            lastyear += 1\n    elif ctx[\"season\"] == \"winter\":\n        deltadays = 33\n        if today.month > 2:\n            lastyear += 1\n    else:\n        lastyear += 1\n    if startyear >= lastyear:\n        raise NoDataFound(\"Start year should be less than end year.\")\n    hours = list(range(24))\n    if ctx.get(\"hours\"):\n        try:\n            tokens = [int(i.strip()) for i in ctx[\"hours\"].split(\"-\")]\n            hours = list(range(max(0, tokens[0]), min(23, tokens[1] + 1)))\n        except ValueError as exp:\n            raise Exception(\"malformed hour limiter, sorry.\") from exp\n        ctx[\"hour_limiter\"] = (\n            f\"[{utc(2017, 1, 1, hours[0]):%-I %p}-\"\n            f\"{utc(2017, 1, 1, hours[-1]):%-I %p}]\"\n        )\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            WITH obs as (\n                SELECT valid at time zone :tzname as valid, tmpf, dwpf, relh,\n                coalesce(mslp, alti * 33.8639, 1013.25) as slp,\n                coalesce(feel, tmpf) as feel\n                from alldata WHERE station = :station and dwpf > -90\n                and dwpf < 100 and tmpf >= dwpf and\n                extract(month from valid) = ANY(:months) and\n                extract(hour from valid at time zone :tzname) = ANY(:hours)\n                and report_type = 3\n            )\n        SELECT valid,\n        date(valid at time zone :tzname),\n        extract(year from valid + ':days days'::interval)::int as year,\n        tmpf, dwpf, slp, relh, feel from obs\n        \"\"\"\n            ),\n            conn,\n            params={\n                \"tzname\": ctx[\"_nt\"].sts[ctx[\"station\"]][\"tzname\"],\n                \"station\": ctx[\"station\"],\n                \"months\": months,\n                \"hours\": hours,\n                \"days\": deltadays,\n            },\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found.\")\n    df = df[(df[\"year\"] >= startyear) & (df[\"year\"] < lastyear)]\n    return df\n\n\ndef make_plot(df: pd.DataFrame, ctx: dict):\n    \"\"\"Do the plotting\"\"\"\n\n    means = (\n        df.groupby(\"date\")\n        .agg(ctx[\"agg\"], numeric_only=True)\n        .reset_index()\n        .groupby(\"year\")\n        .mean(numeric_only=True)\n    )\n    # Special case of computing means of non-linear dew point\n    means[\"dwpf\"] = (\n        mcalc.dewpoint(means[\"vapor_pressure\"].values * units(\"hPa\"))\n        .to(units(\"degF\"))\n        .m\n    )\n    if means.empty:\n        raise NoDataFound(\"No data found.\")\n\n    season = ctx[\"season\"]\n    varname = ctx[\"varname\"]\n    h_slope, intercept, r_value, _, _ = stats.linregress(\n        means.index.values, means[varname].values\n    )\n    avgv = means[varname].mean()\n    tt = \"Distribution\" if ctx[\"w\"] == \"violin\" else \"Averages\"\n    title = (\n        f\"{ctx['_sname']} ({means.index.min():.0f}-{means.index.max():.0f})\\n\"\n        f\"{PDICT3[ctx['agg']]} Daily {PDICT[varname]} {tt} [{MDICT[season]}] \"\n        f\"{ctx.get('hour_limiter', '')} Avg: {avgv:.1f}, \"\n        f\"slope: {(h_slope * 100.0):.2f} {UNITS[varname]}/century, \"\n        f\"R$^2$={(r_value**2):.2f}\"\n    )\n\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n\n    ar = [\"tmpf\", \"relh\", \"dwpf\", \"feel\"]\n    colorabove = \"seagreen\" if varname in ar else \"lightsalmon\"\n    colorbelow = \"lightsalmon\" if varname in ar else \"seagreen\"\n    if ctx[\"w\"] == \"bar\":\n        cols = ax.bar(\n            means.index.values,\n            means[varname].values,\n            fc=colorabove,\n            ec=colorabove,\n            align=\"center\",\n        )\n        for i, col in enumerate(cols):\n            if means.iloc[i][varname] < avgv:\n                col.set_facecolor(colorbelow)\n                col.set_edgecolor(colorbelow)\n        ax.set_ylim(\n            0 if varname == \"vpd\" else (means[varname].min() - 5),\n            means[varname].max() + means[varname].max() / 10.0,\n        )\n    else:\n        data = (\n            df.groupby(\"date\")\n            .agg(ctx[\"agg\"], numeric_only=True)\n            .reset_index()\n            .groupby(\"year\")[varname]\n            .apply(list)\n        )\n        v1 = ax.violinplot(\n            data.values,\n            positions=list(data.index),\n            showextrema=True,\n            showmeans=True,\n            widths=1.5,\n        )\n        for i, b in enumerate(v1[\"bodies\"]):\n            m = np.mean(b.get_paths()[0].vertices[:, 0])\n            # modify the paths to not go further left than the center\n            b.get_paths()[0].vertices[:, 0] = np.clip(\n                b.get_paths()[0].vertices[:, 0], m, np.inf\n            )\n            if means.iloc[i][varname] < avgv:\n                b.set_color(colorbelow)\n            else:\n                b.set_color(colorabove)\n    ax.axhline(avgv, lw=2, color=\"k\", zorder=2, label=\"Average\")\n    ax.plot(\n        means.index.values,\n        h_slope * means.index.values + intercept,\n        \"--\",\n        lw=2,\n        color=\"k\",\n        label=\"Trend\",\n    )\n    ax.set_xlabel(\"Year\")\n    ax.set_xlim(means.index.min() - 1, means.index.max() + 1)\n    ax.xaxis.set_major_locator(MaxNLocator(integer=True))\n    ax.set_ylabel(f\"{PDICT[varname]} [{UNITS[varname]}]\")\n    ax.grid(True)\n    ax.legend(ncol=2)\n    return fig, means\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    startyear = ctx[\"year\"]\n\n    df = get_data(ctx, startyear)\n    df = run_calcs(df, ctx)\n    fig, means = make_plot(df, ctx)\n\n    return fig, means\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p77.py",
    "content": "\"\"\"\nFor each year, the average first and last date of\na given temperature is computed.  The values are then averaged and plotted\nto represent the period between these occurences and also the number of\ndays represented by the period.\n\"\"\"\n\nimport calendar\nfrom datetime import datetime\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [ARG_STATION]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n\n    today = datetime.now()\n    thisyear = today.year\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        with data as (\n            select year, month, extract(doy from day) as doy,\n            generate_series(32, high) as t from alldata\n            where station = :station and year < :thisyear),\n        agger as (\n            SELECT year, t, min(doy), max(doy) from data GROUP by year, t)\n\n        SELECT t as tmpf, avg(min) as min_jday,\n        avg(max) as max_jday from agger GROUP by t ORDER by t ASC\n        \"\"\"),\n            conn,\n            params={\"station\": station, \"thisyear\": thisyear},\n            index_col=\"tmpf\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    title = (\n        f\"{ctx['_sname']} :: Period Between\\n\"\n        \"Average Last and First High Temperature of Year\"\n    )\n    fig = figure(title=title, apctx=ctx)\n    ax = fig.add_axes((0.1, 0.1, 0.7, 0.8))\n    ax2 = fig.add_axes((0.81, 0.1, 0.15, 0.8))\n    height = df[\"min_jday\"][:] + 365.0 - df[\"max_jday\"]\n    ax2.plot(height, df.index.values)\n    ax2.set_xticks([30, 90, 180, 365])\n    for y in ax2.get_yticklabels():\n        y.set_visible(False)\n    ax2.set_ylim(32, df.index.values.max() + 5)\n    ax2.grid(True)\n    ax2.text(\n        0.96,\n        0.02,\n        \"Days\",\n        transform=ax2.transAxes,\n        bbox=dict(color=\"white\"),\n        ha=\"right\",\n    )\n    ax.text(\n        0.96,\n        0.02,\n        \"Period\",\n        transform=ax.transAxes,\n        bbox=dict(color=\"white\"),\n        ha=\"right\",\n    )\n    ax.set_ylim(32, df.index.values.max() + 5)\n\n    ax.barh(\n        df.index.values - 0.5,\n        height,\n        left=df[\"max_jday\"].values,\n        ec=\"tan\",\n        fc=\"tan\",\n        height=1.1,\n    )\n    days = np.array([1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335])\n    days = np.concatenate([days, days + 365])\n    ax.set_xticks(days)\n    months = calendar.month_abbr[1:] + calendar.month_abbr[1:]\n    ax.set_xticklabels(months)\n\n    ax.set_ylabel(\"High Temperature °F\")\n    ax.set_xlim(min(df[\"max_jday\"]) - 1, max(df[\"max_jday\"] + height) + 1)\n    ax.grid(True)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p78.py",
    "content": "\"\"\"\nThis plot displays the average dew point at\na given air temperature along with the envelope between the 5th and 95th\npercentile.  The average dew point is computed by taking the\nobservations of mixing ratio, averaging those, and then back computing\nthe dew point temperature.  With that averaged dew point temperature a\nrelative humidity value is computed.\n\"\"\"\n\nfrom datetime import date, datetime\n\nimport metpy.calc as mcalc\nimport pandas as pd\nfrom metpy.units import units\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.util import month2months\n\nMDICT = {\n    \"all\": \"No Month/Time Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"date\",\n            name=\"date\",\n            optional=True,\n            label=\"Plot Obs for A Single Calendar Date (optional)\",\n            default=date.today().strftime(\"%Y/%m/%d\"),\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    month = ctx[\"month\"]\n\n    months = month2months(month)\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT tmpf::int as tmpf, dwpf, relh,\n            coalesce(mslp, alti * 33.8639, 1013.25) as slp,\n            date(valid at time zone :tzname) as local_date\n            from alldata where station = :station\n            and drct is not null and dwpf is not null and dwpf <= tmpf\n            and relh is not null\n            and extract(month from valid) = ANY(:months)\n            and report_type = 3\n        \"\"\"\n            ),\n            conn,\n            params={\n                \"station\": station,\n                \"months\": months,\n                \"tzname\": ctx[\"_nt\"].sts[station][\"tzname\"],\n            },\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    # Cull any low ob count data points\n    counts = df.groupby(\"tmpf\").count()\n    drops = []\n    for tmpf, row in counts.iterrows():\n        if row[\"slp\"] < 6:\n            drops.append(tmpf)\n    # Convert sea level pressure to station pressure\n    df[\"pressure\"] = (\n        mcalc.add_height_to_pressure(\n            df[\"slp\"].values * units(\"millibars\"),\n            ctx[\"_nt\"].sts[station][\"elevation\"] * units(\"m\"),\n        )\n        .to(units(\"millibar\"))\n        .m\n    )\n    # compute mixing ratio\n    df[\"mixingratio\"] = mcalc.mixing_ratio_from_relative_humidity(\n        df[\"pressure\"].values * units(\"millibars\"),\n        df[\"tmpf\"].values * units(\"degF\"),\n        df[\"relh\"].values * units(\"percent\"),\n    ).m\n    # compute pressure\n    df[\"vapor_pressure\"] = (\n        mcalc.vapor_pressure(\n            df[\"pressure\"].values * units(\"millibars\"),\n            df[\"mixingratio\"].values * units(\"kg/kg\"),\n        )\n        .to(units(\"kPa\"))\n        .m\n    )\n\n    qtiles = (\n        df.drop(columns=\"local_date\")\n        .groupby(\"tmpf\")\n        .quantile([0.05, 0.25, 0.5, 0.75, 0.95])\n        .copy()\n        .reset_index()\n    )\n    # Remove low counts\n    qtiles = qtiles[~qtiles[\"tmpf\"].isin(drops)]\n    # compute dewpoint now\n    qtiles[\"dwpf\"] = (\n        mcalc.dewpoint(qtiles[\"vapor_pressure\"].values * units(\"kPa\"))\n        .to(units(\"degF\"))\n        .m\n    )\n    # compute RH again\n    qtiles[\"relh\"] = (\n        mcalc.relative_humidity_from_dewpoint(\n            qtiles[\"tmpf\"].values * units(\"degF\"),\n            qtiles[\"dwpf\"].values * units(\"degF\"),\n        )\n        * 100.0\n    ).m\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    title = (\n        f\"{ctx['_sname']}:: Dew Point Distribution by Air Temp \"\n        f\"(month={month.upper()}) ({ab.year}-{datetime.now().year}), \"\n        f\"n={len(df.index):.0f}\"\n    )\n    subtitle = \"(must have 6+ hourly observations at the given temperature)\"\n\n    (fig, ax) = figure_axes(apctx=ctx, title=title, subtitle=subtitle)\n    means = qtiles[qtiles[\"level_1\"] == 0.5]\n    for l0, l1, color in zip(\n        [0.05, 0.25], [0.95, 0.75], [\"lightgreen\", \"violet\"], strict=False\n    ):\n        ax.fill_between(\n            qtiles[qtiles[\"level_1\"] == l0][\"tmpf\"].values,\n            qtiles[qtiles[\"level_1\"] == l0][\"dwpf\"].values,\n            qtiles[qtiles[\"level_1\"] == l1][\"dwpf\"].values,\n            color=color,\n            label=f\"{(l0 * 100):.0f}-{(l1 * 100):.0f} %tile\",\n        )\n    ax.plot(\n        means[\"tmpf\"].values, means[\"dwpf\"].values, c=\"blue\", lw=3, label=\"Avg\"\n    )\n    ax.grid(True, zorder=11)\n\n    xmin, xmax = means[\"tmpf\"].min() - 2, means[\"tmpf\"].max() + 2\n    ax.plot([xmin, xmax], [xmin, xmax], color=\"tan\", lw=1.5)\n    ax.set_ylabel(\"Dew Point [F]\")\n    y2 = ax.twinx()\n    y2.plot(means[\"tmpf\"].values, means[\"relh\"].values, color=\"k\")\n    y2.set_ylabel(\"Mean Relative Humidity [%] (black line)\")\n    y2.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    y2.set_ylim(0, 100)\n    if xmax > xmin:\n        ax.set_ylim(xmin, xmax)\n        ax.set_xlim(xmin, xmax)\n    ax.set_xlabel(\"Air Temperature °F\")\n\n    if ctx.get(\"date\"):\n        df2 = df[df[\"local_date\"] == ctx[\"date\"]]\n        if not df2.empty:\n            lbl = ctx[\"date\"].strftime(\"%Y-%m-%d\")\n            ax.scatter(df2[\"tmpf\"], df2[\"dwpf\"], c=\"k\", s=50, label=lbl)\n\n    ax.legend(loc=4, ncol=4)\n\n    return fig, means[[\"tmpf\", \"dwpf\", \"relh\"]]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p79.py",
    "content": "\"\"\"\nThis plot displays the average dew point at\na given wind direction.  The average dew point is computed by taking the\nobservations of mixing ratio, averaging those, and then back computing\nthe dew point temperature.  With that averaged dew point temperature a\nrelative humidity value is computed.\n\"\"\"\n\nfrom datetime import date, datetime\n\nimport matplotlib.ticker as mticker\nimport metpy.calc as mcalc\nimport pandas as pd\nfrom metpy.units import units\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.util import month2months\n\nMDICT = {\n    \"all\": \"No Month/Time Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n        {\n            \"type\": \"date\",\n            \"name\": \"on\",\n            \"optional\": True,\n            \"label\": \"Overlay observations on given calendar date\",\n            \"default\": date.today().strftime(\"%Y/%m/%d\"),\n        },\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    month = ctx[\"month\"]\n    months = month2months(month)\n    on_date: date | None = ctx.get(\"on\")\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT drct::int as t, dwpf, tmpf, relh,\n            coalesce(mslp, alti * 33.8639, 1013.25) as slp,\n            date(valid at time zone :tzname) as date\n            from alldata where station = :station\n            and drct is not null and dwpf is not null and dwpf <= tmpf\n            and sknt >= 3 and drct::int % 10 = 0\n            and extract(month from valid at time zone :tzname) = ANY(:months)\n            and report_type = 3\n        \"\"\"\n            ),\n            conn,\n            params={\n                \"station\": station,\n                \"months\": months,\n                \"tzname\": ctx[\"_nt\"].sts[station][\"tzname\"],\n            },\n            parse_dates=[\n                \"date\",\n            ],\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    # Convert sea level pressure to station pressure\n    df[\"pressure\"] = (\n        mcalc.add_height_to_pressure(\n            df[\"slp\"].values * units(\"millibars\"),\n            ctx[\"_nt\"].sts[station][\"elevation\"] * units(\"m\"),\n        )\n        .to(units(\"millibar\"))\n        .m\n    )\n    # compute mixing ratio\n    df[\"mixingratio\"] = mcalc.mixing_ratio_from_relative_humidity(\n        df[\"pressure\"].values * units(\"millibars\"),\n        df[\"tmpf\"].values * units(\"degF\"),\n        df[\"relh\"].values * units(\"percent\"),\n    ).m\n    # compute pressure\n    df[\"vapor_pressure\"] = (\n        mcalc.vapor_pressure(\n            df[\"pressure\"].values * units(\"millibars\"),\n            df[\"mixingratio\"].values * units(\"kg/kg\"),\n        )\n        .to(units(\"kPa\"))\n        .m\n    )\n\n    ptiles = (\n        df[[\"dwpf\", \"t\"]]\n        .groupby(\"t\")\n        .quantile([0, 0.05, 0.25, 0.75, 0.95, 1])\n        .reset_index()\n        .rename(columns={\"level_1\": \"ptile\"})\n    )\n    means = df[[\"vapor_pressure\", \"t\"]].groupby(\"t\").mean().copy()\n    # compute dewpoint now\n    means[\"dwpf\"] = (\n        mcalc.dewpoint(means[\"vapor_pressure\"].values * units(\"kPa\"))\n        .to(units(\"degF\"))\n        .m\n    )\n\n    (fig, ax) = figure_axes(apctx=ctx)\n    ymax = ptiles[ptiles[\"ptile\"] == 1]\n    ymin = ptiles[ptiles[\"ptile\"] == 0]\n    ax.fill_between(\n        ymin[\"t\"].values,\n        ymin[\"dwpf\"].values,\n        ymax[\"dwpf\"].values,\n        ec=\"brown\",\n        fc=\"tan\",\n        label=\"Range\",\n        step=\"mid\",\n    )\n    ymax2 = ptiles[ptiles[\"ptile\"] == 0.95]\n    ymin2 = ptiles[ptiles[\"ptile\"] == 0.05]\n    ax.fill_between(\n        ymin2[\"t\"].values,\n        ymin2[\"dwpf\"].values,\n        ymax2[\"dwpf\"].values,\n        ec=\"blue\",\n        fc=\"lightblue\",\n        label=\"5th - 95th\",\n        step=\"mid\",\n    )\n    ymax2 = ptiles[ptiles[\"ptile\"] == 0.75]\n    ymin2 = ptiles[ptiles[\"ptile\"] == 0.25]\n    ax.fill_between(\n        ymin2[\"t\"].values,\n        ymin2[\"dwpf\"].values,\n        ymax2[\"dwpf\"].values,\n        label=\"25th - 75th\",\n        ec=\"red\",\n        fc=\"pink\",\n        step=\"mid\",\n    )\n    ax.plot(\n        means.index.values,\n        means[\"dwpf\"].values,\n        color=\"k\",\n        lw=3,\n        label=\"Mean\",\n        drawstyle=\"steps-mid\",\n    )\n    if on_date is not None:\n        series = df[df[\"date\"] == pd.Timestamp(on_date)]\n        if not series.empty:\n            ax.scatter(\n                series[\"t\"].to_numpy(),\n                series[\"dwpf\"].to_numpy(),\n                color=\"k\",\n                s=50,\n                zorder=6,\n                label=f\"{on_date:%Y-%m-%d}\",\n            )\n    ax.legend(ncol=5)\n    ax.grid(True, zorder=11)\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    titles = [\n        f\"{ctx['_sname']}:: \",\n        f\"Average Dew Point by Wind Direction (month={month.upper()}) \"\n        f\"({max([1973, ab.year])}-{datetime.now().year})\",\n        \"(must have 3+ hourly obs >= 3 knots at given direction)\",\n    ]\n    ax.set_title(\"\\n\".join(titles), size=10)\n\n    ax.set_ylabel(\"Dew Point [°F]\")\n    ax.set_ylim(ymin[\"dwpf\"].min() - 10, ymax[\"dwpf\"].max() + 10)\n    ax.yaxis.set_major_locator(mticker.MultipleLocator(5))\n    ax.set_xlim(-5, 365)\n    ax.set_xticks([0, 45, 90, 135, 180, 225, 270, 315, 360])\n    ax.set_xticklabels([\"N\", \"NE\", \"E\", \"SE\", \"S\", \"SW\", \"W\", \"NW\", \"N\"])\n    ax.set_xlabel(\"Wind Direction\")\n\n    return fig, means\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p8.py",
    "content": "\"\"\"\nThis plot presents the frequency of having\na month's preciptation at or above some threshold.  This threshold\nis compared against the long term climatology for the site and month. This\nplot is designed to answer the question about reliability of monthly\nprecipitation for a period of your choice.\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    y2 = date.today().year\n    y1 = y2 - 20\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(type=\"year\", name=\"syear\", default=y1, label=\"Enter Start Year:\"),\n        dict(\n            type=\"year\",\n            name=\"eyear\",\n            default=y2,\n            label=\"Enter End Year (inclusive):\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"threshold\",\n            default=\"80\",\n            label=\"Threshold Percentage [%]:\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    syear = ctx[\"syear\"]\n    eyear = ctx[\"eyear\"]\n    threshold = ctx[\"threshold\"]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    with months as (\n      select year, month, p, avg(p) OVER (PARTITION by month) from (\n        select year, month, sum(precip) as p from alldata\n        where station = :station and year < extract(year from now())\n        GROUP by year, month) as foo)\n\n    SELECT month, sum(case when p > (avg * :thres / 100.0) then 1 else 0 end)\n        as hits, count(*) as total\n    from months WHERE year >= :sy and year < :ey\n    GROUP by month ORDER by month ASC\n    \"\"\"\n            ),\n            conn,\n            params={\n                \"station\": station,\n                \"thres\": threshold,\n                \"sy\": syear,\n                \"ey\": eyear,\n            },\n            index_col=\"month\",\n        )\n    if df.empty:\n        raise NoDataFound(\"Failed to find any data.\")\n    df[\"freq\"] = df[\"hits\"] / df[\"total\"] * 100.0\n\n    title = (\n        f\"{ctx['_sname']} :: Monthly Precipitation Reliability\\n\"\n        f\"Period: {syear}-{eyear}, % of Months above {threshold}% \"\n        \"of Long Term Avg\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n\n    ax.bar(df.index.values, df[\"freq\"].values, align=\"center\")\n    for month, row in df.iterrows():\n        ax.text(\n            month,\n            row[\"freq\"] + 2,\n            f\"{row['freq']:.1f}%\",\n            bbox={\"color\": \"white\"},\n            ha=\"center\",\n        )\n    ax.set_xticks(np.arange(1, 13))\n    ax.set_ylim(0, 100)\n    ax.set_yticks(np.arange(0, 101, 10))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.grid(True)\n    ax.set_xlim(0.5, 12.5)\n    ax.set_ylabel(f\"Percentage of Months, n={df['total'].max():.0f} years\")\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p80.py",
    "content": "\"\"\"\nThis plot presents the accumulated frequency of duration for a given\nNWS VTEC Watch, Warning, Advisory product.  The complication with this\ntool is that some alerts are issued for zones and others are for\ncounties.  If you do not find results for one, try switching to the\nother.</p>\n\n<p>When you plot by a WFO, this tool will treat each individual combination\nof a VTEC event and UGC has an individual event.</p>\n\n<p>There's a second major complication and that is the case of watches\nand how VTEC handles issuance and expiration time.  Some watches are\nissued for time periods well into the future and are either cancelled\nor upgraded prior to the VTEC issuance time.  In those cases, this app\nconsiders the wall clock issuance time of the watch as the start time\nand the wall clock time when the watch was either cancelled or upgraded.\nIn this case, both lines are presented as equal.\n\"\"\"\n\nimport numpy as np\nimport pandas as pd\nimport pyiem.nws.vtec as vtec\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import get_monofont\n\nPDICT = {\n    \"wfo\": \"Summarize by NWS Forecast Office\",\n    \"ugc\": \"Summarize by UGC Zone/County\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"select\",\n            \"name\": \"which\",\n            \"default\": \"ugc\",\n            \"label\": \"Summarize By:\",\n            \"options\": PDICT,\n        },\n        {\n            \"type\": \"networkselect\",\n            \"name\": \"wfo\",\n            \"default\": \"DMX\",\n            \"network\": \"WFO\",\n            \"label\": \"Select NWS Forecast Office:\",\n        },\n        dict(\n            type=\"ugc\",\n            name=\"ugc\",\n            default=\"IAC153\",\n            label=\"Select UGC Zone/County:\",\n        ),\n        dict(\n            type=\"phenomena\",\n            name=\"phenomena\",\n            default=\"TO\",\n            label=\"Select Watch/Warning Phenomena Type:\",\n        ),\n        dict(\n            type=\"significance\",\n            name=\"significance\",\n            default=\"A\",\n            label=\"Select Watch/Warning Significance Level:\",\n        ),\n    ]\n    return desc\n\n\ndef print_top(fig, events: pd.DataFrame):\n    \"\"\"Add some bling.\"\"\"\n    x = 0.77\n    y = 0.85\n    font = get_monofont()\n    uts = \"Mins\"\n    if events[\"max\"].max() > 120:\n        uts = \"Hours\"\n    for typ, bpoint in zip([\"Longest\", \"Shortest\"], [0.5, 0.1], strict=False):\n        fig.text(\n            x,\n            y,\n            f\"Date[ETN]: {typ} ({uts})\",\n            ha=\"left\",\n            fontproperties=font,\n        )\n        done = []\n        asc = typ == \"Shortest\"\n        col = \"max\" if typ == \"Longest\" else \"min\"\n        for row in events.sort_values(by=col, ascending=asc).itertuples():\n            key = f\"{row.year}_{row.eventid}\"\n            if key in done:\n                continue\n            done.append(key)\n            y -= 0.035\n            val = getattr(row, col)\n            lbl = f\"{val:.0f}\" if uts == \"Mins\" else f\"{val / 60:.1f}\"\n            fig.text(\n                x,\n                y,\n                f\"{row.issue:%Y-%m-%d}[{row.eventid:4.0f}]: {lbl}\",\n                ha=\"left\",\n                fontproperties=font,\n            )\n            if y < bpoint:\n                break\n        y -= 0.05\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    ugc = ctx[\"ugc\"]\n    phenomena = ctx[\"phenomena\"]\n    significance = ctx[\"significance\"]\n    params = {\n        \"phenomena\": phenomena,\n        \"significance\": significance,\n        \"wfo\": ctx[\"wfo\"],\n        \"ugc\": ugc,\n        \"tzname\": \"America/Chicago\",\n    }\n    lid = ugc\n    name = \"\"\n    ugclimiter = \"\"\n    if ctx[\"which\"] == \"ugc\":\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            res = conn.execute(\n                sql_helper(\"\"\"\n                    SELECT s.wfo, s.tzname, u.name from ugcs u JOIN stations s\n                    on (u.wfo = s.id) where ugc = :ugc and end_ts is null and\n                    s.network = 'WFO' LIMIT 1\n                     \"\"\"),\n                params,\n            )\n            if res.rowcount == 1:\n                row = res.fetchone()\n                params[\"wfo\"] = row[0]\n                params[\"tzname\"] = row[1]\n                name = row[2]\n        ugclimiter = \" ugc = :ugc and \"\n    else:\n        lid = f\"NWS {ctx['wfo']}\"\n        name = ctx[\"_nt\"].sts[ctx[\"wfo\"]][\"name\"]\n        params[\"tzname\"] = ctx[\"_nt\"].sts[ctx[\"wfo\"]][\"tzname\"]\n\n    issuecol = \"issue\"\n    expirecol = \"expire\"\n    expirecol2 = \"init_expire\"\n    if significance == \"A\" and phenomena not in [\"SV\", \"TO\"]:\n        issuecol = \"product_issue\"\n        expirecol = \"issue\"\n        expirecol2 = \"issue\"\n\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        events = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                SELECT {expirecol} - {issuecol} as final,\n                {expirecol2} - {issuecol} as initial,\n                issue at time zone :tzname as issue, ugc, eventid,\n                vtec_year as year\n                from warnings WHERE {ugclimiter} phenomena = :phenomena\n                and significance = :significance and wfo = :wfo\n                 \"\"\",\n                expirecol=expirecol,\n                issuecol=issuecol,\n                expirecol2=expirecol2,\n                ugclimiter=ugclimiter,\n            ),\n            conn,\n            params=params,\n        )\n    if len(events.index) < 2:\n        raise NoDataFound(\"No Results Found, try flipping zone/county\")\n    for col in [\"final\", \"initial\"]:\n        events[col] = events[col].dt.total_seconds() / 60.0\n        # Don't allow negative durations (GIGO)\n        events = events[events[col] >= 0]\n\n    events[\"max\"] = events[[\"final\", \"initial\"]].max(axis=1)\n    events[\"min\"] = events[[\"final\", \"initial\"]].min(axis=1)\n\n    title = (\n        f\"[{lid}] {name} :: {vtec.get_ps_string(phenomena, significance)} \"\n        f\"({phenomena}.{significance})\\n\"\n        \"Distribution of Event Time Duration \"\n        f\"{events['issue'].min():%-d %b %Y}-{events['issue'].max():%-d %b %Y}\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    ax.set_position([0.1, 0.1, 0.65, 0.8])\n    print_top(fig, events)\n\n    titles = {\"initial\": \"Initial Issuance\", \"final\": \"Final Duration\"}\n    for col in [\"final\", \"initial\"]:\n        sortd = events.sort_values(by=col)\n        x = []\n        y = []\n        i = 0\n        for _, row in sortd.iterrows():\n            i += 1\n            if i == 1:\n                x.append(row[col])\n                y.append(i)\n                continue\n            if x[-1] == row[col]:\n                y[-1] = i\n                continue\n            y.append(i)\n            x.append(row[col])\n\n        ax.plot(x, np.array(y) / float(y[-1]) * 100.0, lw=2, label=titles[col])\n    ax.grid()\n    ax.legend(loc=2, ncol=2, fontsize=12)\n    ax.set_ylim(0, 100)\n    ax.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    xmax = events[\"max\"].max()\n    if xmax < 120:\n        xmax = xmax + 10 - (xmax % 10)\n        ax.set_xlim(0, xmax)\n        ax.set_xticks(np.arange(0, xmax + 1, 10))\n        ax.set_xlabel(\"Duration [minutes]\")\n    else:\n        xmax = xmax + 60 - (xmax % 60)\n        ax.set_xlim(0, xmax)\n        xticks = np.arange(0, xmax + 1, 60)\n        while len(xticks) > 20:\n            xticks = xticks[::2]\n        ax.set_xticks(xticks)\n        ax.set_xticklabels([int(i / 60) for i in xticks])\n        ax.set_xlabel(\"Duration [hours]\")\n    ax.set_ylabel(f\"Frequency [%] out of {y[-1]} Events\")\n\n    return fig, events.drop(columns=[\"max\", \"min\"])\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p81.py",
    "content": "\"\"\"\nThis chart presents two measures of temperature\nvariability.  The first is the standard deviation of the period of\nrecord for a given day of the year.  The second is the standard deviation\nof the day to day changes in temperature.\n\"\"\"\n\nimport calendar\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\"high\": \"High Temperature\", \"low\": \"Low Temperature\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"high\",\n            label=\"Which Daily Variable:\",\n            options=PDICT,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"var\"][:10]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        with data as (\n            select extract(doy from day) as doy,\n            day, {varname} as v from alldata WHERE\n            station = :station),\n        doyagg as (\n            SELECT doy, stddev(v) from data GROUP by doy),\n        deltas as (\n            SELECT doy, (v - lag(v) OVER (ORDER by day ASC)) as d from data),\n        deltaagg as (\n            SELECT doy, stddev(d) from deltas GROUP by doy)\n\n        SELECT d.doy, d.stddev as d2d_stddev,\n        y.stddev as doy_stddev from deltaagg d JOIN doyagg y ON\n        (y.doy = d.doy) WHERE d.doy < 366 ORDER by d.doy ASC\n        \"\"\",\n                varname=varname,\n            ),\n            conn,\n            params={\"station\": station},\n            index_col=\"doy\",\n        )\n\n    title = (\n        f\"{ctx['_sname']} :: Daily {PDICT.get(varname)} Standard Deviations\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.subplots(2, 1, sharex=True)\n    ax[0].plot(\n        df.index.values, df[\"doy_stddev\"], lw=2, color=\"r\", label=\"Single Day\"\n    )\n    ax[0].plot(\n        df.index.values, df[\"d2d_stddev\"], lw=2, color=\"b\", label=\"Day to Day\"\n    )\n    ax[0].legend(loc=\"best\", fontsize=10, ncol=2)\n\n    ax[0].set_ylabel(\"Temperature Std. Deviation °F\")\n    ax[0].grid(True)\n\n    ax[1].plot(\n        df.index.values, df[\"doy_stddev\"] / df[\"d2d_stddev\"], lw=2, color=\"g\"\n    )\n    ax[1].set_ylabel(\"Ratio SingleDay/Day2Day\")\n    ax[1].grid(True)\n    ax[1].set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax[1].set_xticklabels(calendar.month_abbr[1:])\n    ax[1].set_xlim(0, 366)\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p82.py",
    "content": "\"\"\"\nThis chart presents a series of daily summary data\nas a calendar.  The daily totals should be valid for the local day of the\nweather station.  The climatology is based on the nearest NCEI 1991-2020\nclimate station, which in most cases is the same station.  Climatology\nvalues are rounded to the nearest whole degree Fahrenheit and then compared\nagainst the observed value to compute a departure.\n\n<p>A current limitation is that no more than 12 months of data can be plotted\nat a single time.  The image shape of the column plot is also hard coded as\nwell.\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.cm import ScalarMappable\nfrom matplotlib.colors import BoundaryNorm\nfrom matplotlib.figure import Figure\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import calendar_plot, figure, get_cmap\nfrom pyiem.reference import TRACE_VALUE, Z_OVERLAY2, Z_OVERLAY2_LABEL\nfrom pyiem.util import convert_value\n\nPDICT = {\n    \"max_tmpf\": \"High Temperature (°F)\",\n    \"high_departure\": \"High Temperature Departure (°F)\",\n    \"min_tmpf\": \"Low Temperature (°F)\",\n    \"low_departure\": \"Low Temperature Departure (°F)\",\n    \"avg_tmpf\": \"Average Temperature (°F)\",\n    \"avg_departure\": \"Average Temperature Departure (°F)\",\n    \"max_dwpf\": \"Highest Dew Point Temperature (°F)\",\n    \"min_dwpf\": \"Lowest Dew Point Temperature (°F)\",\n    \"max_feel\": \"Maximum Feels Like Temperature (°F)\",\n    \"min_feel\": \"Minimum Feels Like Temperature (°F)\",\n    \"avg_smph\": \"Average Wind Speed [mph]\",\n    \"max_smph\": \"Maximum Wind Speed/Gust [mph]\",\n    \"pday\": \"Precipitation [inch]\",\n    \"max_rstage\": \"Maximum Water Stage [ft]\",\n}\nBINS = {\n    \"max_tmpf\": [-40, 121, 10],\n    \"high_departure\": [-50, 51, 5],\n    \"min_tmpf\": [-40, 91, 10],\n    \"low_departure\": [-50, 51, 5],\n    \"avg_tmpf\": [-20, 101, 5],\n    \"avg_departure\": [-30, 31, 3],\n    \"max_dwpf\": [-40, 91, 10],\n    \"min_dwpf\": [-40, 91, 10],\n    \"max_feel\": [-40, 121, 10],\n    \"min_feel\": [-40, 121, 10],\n    \"avg_smph\": [0, 51, 5],\n    \"max_smph\": [0, 71, 5],\n    \"pday\": [0, 3, 0.25],\n    \"max_rstage\": [0, 51, 5],\n}\nLAYOUT = {\n    \"calendar\": \"Calendar Layout\",\n    \"column\": \"Months as Columns Layout\",\n}\nCOLORIZE = {\n    \"yes\": \"Yes, colorize cells based on values\",\n    \"no\": \"No, do not colorize cells\",\n}\nSTAGES = \"action flood moderate major\".split()\nCOLORS = \"white #ffff72 #ffc672 #ff7272 #e28eff\".split()\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 600}\n    today = date.today()\n    m90 = today - timedelta(days=90)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"sid\",\n            name=\"station\",\n            default=\"DSM\",\n            network=\"IA_ASOS\",\n            label=\"Select Station\",\n            include_climodat=True,\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"pday\",\n            label=\"Which Daily Variable:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=m90.strftime(\"%Y/%m/%d\"),\n            label=\"Start Date:\",\n            min=\"1900/01/01\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"edate\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"End Date:\",\n            min=\"1900/01/01\",\n        ),\n        {\n            \"type\": \"select\",\n            \"options\": LAYOUT,\n            \"default\": \"calendar\",\n            \"label\": \"Select calendar layout\",\n            \"name\": \"layout\",\n        },\n        {\n            \"type\": \"select\",\n            \"options\": COLORIZE,\n            \"default\": \"yes\",\n            \"label\": \"Colorize cells?\",\n            \"name\": \"colorize\",\n        },\n        {\n            \"type\": \"cmap\",\n            \"default\": \"jet\",\n            \"name\": \"cmap\",\n            \"label\": \"Select color ramp:\",\n        },\n        {\n            \"type\": \"text\",\n            \"label\": (\n                \"Specify minimum, maximum, interval for color ramp bins \"\n                \"as comma separated values (e.g. 0,101,10)\"\n            ),\n            \"default\": \"0,101,10\",\n            \"optional\": True,\n            \"name\": \"interval\",\n        },\n    ]\n    return desc\n\n\ndef column_plot(fig: Figure, sdate: date, edate: date, data: dict[date, dict]):\n    \"\"\"Create a specialized figure.\"\"\"\n    # Create an axes object to manually plot things onto\n    ax = fig.add_axes((0.1, 0.1, 0.75, 0.8), frameon=False)\n    ax.set_xlim(-0.5, 11.5)\n    ax.set_xticks([])\n    ax.set_yticks(np.arange(1, 32, 1))\n    ax.set_yticklabels(np.arange(1, 32, 1))\n    ax.set_ylim(31.5, -0.5)  # Invert y axis\n    ax.set_ylabel(\"Day of Month\")\n    xpos = -1\n    current_xmonth = -1\n    for pdt in pd.date_range(sdate, edate):\n        dt = pdt.date()\n        if dt.month != current_xmonth:\n            xpos += 1\n            current_xmonth = dt.month\n            ax.add_patch(\n                Rectangle(\n                    (xpos - 0.5, -0.5),\n                    1,\n                    1,\n                    facecolor=\"white\",\n                    edgecolor=\"k\",\n                    lw=2,\n                    zorder=Z_OVERLAY2_LABEL,  # Put overtop the days\n                )\n            )\n            ax.annotate(\n                dt.strftime(\"%b\"),\n                xy=(xpos, 0),\n                ha=\"center\",\n                va=\"center\",\n                fontsize=12,\n                zorder=Z_OVERLAY2_LABEL,\n            )\n        if dt not in data:\n            continue\n        val = data[dt][\"val\"]\n        color = data[dt].get(\"color\", \"k\")\n        cellcolor = data[dt].get(\"cellcolor\", \"white\")\n        ax.add_patch(\n            Rectangle(\n                (xpos - 0.5, dt.day - 0.5),\n                1,\n                1,\n                facecolor=cellcolor,\n                edgecolor=\"lightgray\",\n                zorder=Z_OVERLAY2,\n            )\n        )\n        ax.annotate(\n            val,\n            (xpos, dt.day),\n            color=color,\n            ha=\"center\",\n            va=\"center\",\n            fontsize=12,\n            zorder=Z_OVERLAY2_LABEL,\n        )\n\n\ndef safe(row, varname):\n    \"\"\"Safe conversion of value for printing as a string\"\"\"\n    val = row[varname]\n    if val is None:\n        return \"M\"\n    if varname == \"pday\":\n        if val == TRACE_VALUE:\n            return \"T\"\n        if val == 0:\n            return \"0\"\n        return f\"{val:.2f}\"\n    if varname == \"max_rstage\":\n        return f\"{val:.2f}\"\n    # prevent -0 values\n    return f\"{int(val):.0f}\"\n\n\ndef diff(val, climo):\n    \"\"\"Safe subtraction.\"\"\"\n    if val is None or climo is None:\n        return 0\n    return float(val) - climo\n\n\ndef add_stages_legend(fig, stagevals):\n    \"\"\"Add a stages legend.\"\"\"\n    handles = []\n    labels = []\n    for i, val in enumerate(stagevals[:-1]):\n        if val is None:\n            continue\n        rect = Rectangle((0, 0), 1, 1, fc=COLORS[i + 1])\n        handles.append(rect)\n        labels.append(f\"{STAGES[i]} {val}\")\n    if handles:\n        fig.legend(handles, labels, ncol=4, loc=(0.4, 0.915))\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"var\"]\n    sdate = ctx[\"sdate\"]\n    edate = ctx[\"edate\"]\n    # Check for more than 12 months of data\n    if pd.date_range(sdate, edate).strftime(\"%Y%m\").nunique() > 12:\n        raise NoDataFound(\"Date range cannot exceed 12 months.\")\n\n    # Get Climatology\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        cdf = pd.read_sql(\n            sql_helper(\"\"\"SELECT to_char(valid, 'mmdd') as sday,\n            round(high::numeric, 0) as high,\n            round(low::numeric, 0) as low,\n            round(((high + low) / 2.)::numeric, 0) as avg,\n            precip from ncei_climate91 WHERE station = :ncei\n            ORDER by sday ASC\n            \"\"\"),\n            conn,\n            params={\"ncei\": ctx[\"_nt\"].sts[station][\"ncei91\"]},\n            index_col=\"sday\",\n        )\n    if cdf.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    if ctx[\"network\"].find(\"CLIMATE\") > -1:\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            res = conn.execute(\n                sql_helper(\"\"\"\n                SELECT\n                day,\n                high as max_tmpf,\n                low as min_tmpf,\n                null as max_dwpf,\n                null as min_dwpf,\n                null as max_feel,\n                null as min_feel,\n                (high + low) / 2. as avg_tmpf,\n                precip as pday,\n                null as avg_sknt, null as peak_wind,\n                null as max_rstage\n                from alldata\n                WHERE day >= :sdate and day <= :edate and\n                station = :station ORDER by day ASC\n            \"\"\"),\n                {\"sdate\": sdate, \"edate\": edate, \"station\": station},\n            )\n    else:\n        with get_sqlalchemy_conn(\"iem\") as conn:\n            res = conn.execute(\n                sql_helper(\"\"\"\n                SELECT day, max_tmpf, min_tmpf, max_dwpf, min_dwpf,\n                (max_tmpf + min_tmpf) / 2. as avg_tmpf,\n                pday, avg_sknt, coalesce(max_gust, max_sknt) as peak_wind,\n                max_rstage, max_feel, min_feel\n            from summary s JOIN stations t\n            on (t.iemid = s.iemid) WHERE s.day >= :sdate and s.day <= :edate\n            and\n            t.id = :station and t.network = :network ORDER by day ASC\n        \"\"\"),\n                {\n                    \"sdate\": sdate,\n                    \"edate\": edate,\n                    \"station\": station,\n                    \"network\": ctx[\"network\"],\n                },\n            )\n    stagevals = []\n    rows = []\n    data = {}\n    cmap = get_cmap(ctx[\"cmap\"])\n    if ctx.get(\"interval\", \"\") != \"\":\n        tokens = ctx[\"interval\"].split(\",\")\n        if len(tokens) != 3:\n            raise NoDataFound(\"Invalid interval specified.\")\n        minv, maxv, interval = map(float, tokens)\n        # Prevent naughty requests\n        if (\n            maxv <= minv\n            or (maxv - minv) / interval > 500\n            or (maxv - minv) < interval\n        ):\n            raise NoDataFound(\"Invalid min,max,interval specified.\")\n        norm = BoundaryNorm(\n            np.arange(minv, maxv, interval),\n            cmap.N,\n        )\n    else:\n        norm = BoundaryNorm(\n            np.arange(*BINS[varname]),\n            cmap.N,\n        )\n    for row in res.mappings():\n        hd = diff(row[\"max_tmpf\"], cdf.at[row[\"day\"].strftime(\"%m%d\"), \"high\"])\n        ld = diff(row[\"min_tmpf\"], cdf.at[row[\"day\"].strftime(\"%m%d\"), \"low\"])\n        ad = diff(row[\"avg_tmpf\"], cdf.at[row[\"day\"].strftime(\"%m%d\"), \"avg\"])\n        avg_sknt = row[\"avg_sknt\"]\n        if avg_sknt is None:\n            if varname == \"avg_smph\":\n                continue\n            avg_sknt = 0\n        peak_wind = row[\"peak_wind\"]\n        if peak_wind is None:\n            if varname == \"max_smph\":\n                continue\n            peak_wind = 0\n        rows.append(\n            dict(\n                day=row[\"day\"],\n                max_tmpf=row[\"max_tmpf\"],\n                avg_smph=convert_value(avg_sknt, \"knot\", \"mile / hour\"),\n                max_smph=convert_value(peak_wind, \"knot\", \"mile / hour\"),\n                min_dwpf=row[\"min_dwpf\"],\n                max_dwpf=row[\"max_dwpf\"],\n                high_departure=hd,\n                low_departure=ld,\n                avg_departure=ad,\n                min_tmpf=row[\"min_tmpf\"],\n                avg_tmpf=row[\"avg_tmpf\"],\n                min_feel=row[\"min_feel\"],\n                max_feel=row[\"max_feel\"],\n                pday=row[\"pday\"],\n                max_rstage=row[\"max_rstage\"],\n            )\n        )\n        data[row[\"day\"]] = {\"val\": safe(rows[-1], varname)}\n        if data[row[\"day\"]][\"val\"] == \"0\":\n            data[row[\"day\"]][\"color\"] = \"k\"\n        elif varname == \"high_departure\":\n            data[row[\"day\"]][\"color\"] = \"b\" if hd < 0 else \"r\"\n        elif varname == \"low_departure\":\n            data[row[\"day\"]][\"color\"] = \"b\" if ld < 0 else \"r\"\n        elif varname == \"avg_departure\":\n            data[row[\"day\"]][\"color\"] = \"b\" if ad < 0 else \"r\"\n        elif varname == \"max_rstage\":\n            if not stagevals:\n                meta = ctx[\"_nt\"].sts[station]\n                stagevals = [meta[f\"sigstage_{x}\"] for x in STAGES]\n                stagevals.append(1e9)\n            if not pd.isna(row[\"max_rstage\"]):\n                idx = np.digitize(row[\"max_rstage\"], stagevals)\n                data[row[\"day\"]][\"cellcolor\"] = COLORS[idx]\n        if ctx[\"colorize\"] == \"yes\":\n            rawval = rows[-1][varname]\n            if rawval is not None:\n                color = cmap(norm([rawval]))[0]\n                hexcolor = (\n                    f\"#{int(color[0] * 255):02x}{int(color[1] * 255):02x}\"\n                    f\"{int(color[2] * 255):02x}\"\n                )\n                data[row[\"day\"]][\"cellcolor\"] = hexcolor\n                # The text now needs to be in an opposite color, so to read!\n                brightness = (\n                    0.299 * color[0] + 0.587 * color[1] + 0.114 * color[2]\n                )\n                data[row[\"day\"]][\"color\"] = \"k\" if brightness > 0.5 else \"w\"\n\n    df = pd.DataFrame(rows)\n\n    title = (\n        f\"[{station}] {ctx['_nt'].sts[station]['name']} \"\n        f\"Daily {PDICT.get(varname)}\"\n    )\n    subtitle = f\"{sdate:%-d %b %Y} thru {edate:%-d %b %Y}\"\n\n    if ctx[\"layout\"] == \"calendar\":\n        fig = calendar_plot(\n            sdate,\n            edate,\n            data,\n            title=title,\n            subtitle=subtitle,\n            apctx=ctx,\n        )\n        if varname == \"max_rstage\":\n            add_stages_legend(fig, stagevals)\n    else:\n        fig = figure(\n            title=title,\n            subtitle=subtitle,\n            figsize=(8, 8),\n        )\n        column_plot(fig, sdate, edate, data)\n        if ctx[\"colorize\"] == \"yes\":\n            # Create a ScalarMappable for the colorbar\n            sm = ScalarMappable(cmap=cmap, norm=norm)\n            sm.set_array([])  # Required for ScalarMappable\n            cax = fig.add_axes((0.9, 0.15, 0.02, 0.7))\n            fig.colorbar(\n                sm,\n                cax=cax,\n                orientation=\"vertical\",\n                label=PDICT.get(varname),\n            )\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p83.py",
    "content": "\"\"\"\nThis plot compares a period of days prior to\na specified date to the same number of days after a date.  The specified\ndate is not used in either statistical value.  If you select a period that\nincludes leap day, there is likely some small ambiguity with the resulting\nplot labels.\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom scipy import stats\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"high\": \"Average High Temperature\",\n    \"low\": \"Average Low Temperature\",\n    \"precip\": \"Total Precipitation\",\n}\nUNITS = {\"high\": \"°F\", \"low\": \"°F\", \"precip\": \"inch\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"high\",\n            label=\"Which Variable:\",\n            options=PDICT,\n        ),\n        dict(type=\"int\", name=\"days\", default=45, label=\"How many days:\"),\n        dict(type=\"month\", name=\"month\", default=\"7\", label=\"Select Month:\"),\n        dict(type=\"day\", name=\"day\", default=\"15\", label=\"Select Day:\"),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=date.today().year,\n            label=\"Year to Highlight in Chart\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"var\"]\n    month = ctx[\"month\"]\n    day = ctx[\"day\"]\n    dt = date(2000, month, day)\n    days = ctx[\"days\"]\n    year = ctx[\"year\"]\n    ctx[\"before_period\"] = \"%s-%s\" % (\n        (dt - timedelta(days=days)).strftime(\"%-d %b\"),\n        (dt - timedelta(days=1)).strftime(\"%-d %b\"),\n    )\n    ctx[\"after_period\"] = \"%s-%s\" % (\n        (dt + timedelta(days=1)).strftime(\"%-d %b\"),\n        (dt + timedelta(days=days)).strftime(\"%-d %b\"),\n    )\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        with data as (\n            SELECT day, year,\n            count(*) OVER\n                (ORDER by day ASC ROWS BETWEEN :days PRECEDING AND 1 PRECEDING)\n                as cb,\n            avg(high) OVER\n                (ORDER by day ASC ROWS BETWEEN :days PRECEDING AND 1 PRECEDING)\n                as hb,\n            avg(low) OVER\n                (ORDER by day ASC ROWS BETWEEN :days PRECEDING AND 1 PRECEDING)\n                as lb,\n            sum(precip) OVER\n                (ORDER by day ASC ROWS BETWEEN :days PRECEDING AND 1 PRECEDING)\n                as pb,\n            count(*) OVER\n                (ORDER by day ASC ROWS BETWEEN 1 FOLLOWING AND :days FOLLOWING)\n                as ca,\n            avg(high) OVER\n                (ORDER by day ASC ROWS BETWEEN 1 FOLLOWING AND :days FOLLOWING)\n                as ha,\n            avg(low)OVER\n                (ORDER by day ASC ROWS BETWEEN 1 FOLLOWING AND :days FOLLOWING)\n                as la,\n            sum(precip) OVER\n                (ORDER by day ASC ROWS BETWEEN 1 FOLLOWING AND :days FOLLOWING)\n                as pa\n            from alldata WHERE station = :station)\n\n        SELECT year, hb as high_before, lb as low_before, pb as precip_before,\n        ha as high_after, la as low_after, pa as precip_after from\n        data where cb = ca and\n        cb = :days and extract(month from day) = :month\n        and extract(day from day) = :day\n        \"\"\"),\n            conn,\n            params={\n                \"days\": days,\n                \"station\": station,\n                \"month\": month,\n                \"day\": day,\n            },\n            index_col=\"year\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    xvals = df[f\"{varname}_before\"].values\n    yvals = df[f\"{varname}_after\"].values\n    fig, ax = figure_axes(\n        title=f\"{ctx['_sname']} :: {PDICT.get(varname)} over\",\n        subtitle=f\"{days} days prior to and after {dt:%-d %B}\",\n        apctx=ctx,\n    )\n    ax.scatter(xvals, yvals, zorder=2)\n    if year in df.index:\n        row = df.loc[year]\n        ax.scatter(\n            row[f\"{varname}_before\"],\n            row[f\"{varname}_after\"],\n            color=\"r\",\n            zorder=3,\n        )\n        ax.text(\n            row[f\"{varname}_before\"],\n            row[f\"{varname}_after\"],\n            f\"{year}\",\n            ha=\"right\",\n            va=\"bottom\",\n            color=\"r\",\n        )\n    minv = min([min(xvals), min(yvals)])\n    maxv = max([max(xvals), max(yvals)])\n    buffer = 0.1 * (maxv - minv)\n    minv = (minv - buffer) if varname != \"precip\" else 0 - buffer\n    ax.plot(\n        [minv, maxv + buffer], [minv, maxv + buffer], label=\"x=y\", color=\"b\"\n    )\n    yavg = np.average(np.array(yvals))\n    xavg = np.average(np.array(xvals))\n    ax.axhline(yavg, label=f\"After Avg: {yavg:.2f}\", color=\"r\", lw=2)\n    ax.axvline(xavg, label=f\"Before Avg: {xavg:.2f}\", color=\"g\", lw=2)\n    df2 = df[np.logical_and(xvals >= xavg, yvals >= yavg)]\n    ax.text(\n        0.98,\n        0.98,\n        \"I: %.1f%%\" % (len(df2) / float(len(xvals)) * 100.0,),\n        transform=ax.transAxes,\n        bbox=dict(edgecolor=\"tan\", facecolor=\"white\"),\n        va=\"top\",\n        ha=\"right\",\n        zorder=3,\n    )\n\n    df2 = df[np.logical_and(xvals < xavg, yvals < yavg)]\n    ax.text(\n        0.02,\n        0.02,\n        \"III: %.1f%%\" % (len(df2) / float(len(xvals)) * 100.0,),\n        transform=ax.transAxes,\n        bbox=dict(edgecolor=\"tan\", facecolor=\"white\"),\n        zorder=3,\n    )\n\n    df2 = df[np.logical_and(xvals >= xavg, yvals < yavg)]\n    ax.text(\n        0.98,\n        0.02,\n        \"IV: %.1f%%\" % (len(df2) / float(len(xvals)) * 100.0,),\n        transform=ax.transAxes,\n        bbox=dict(edgecolor=\"tan\", facecolor=\"white\"),\n        va=\"bottom\",\n        ha=\"right\",\n        zorder=3,\n    )\n\n    df2 = df[np.logical_and(xvals < xavg, yvals >= yavg)]\n    ax.text(\n        0.02,\n        0.98,\n        \"II: %.1f%%\" % (len(df2) / float(len(xvals)) * 100.0,),\n        transform=ax.transAxes,\n        bbox=dict(edgecolor=\"tan\", facecolor=\"white\"),\n        va=\"top\",\n        zorder=3,\n    )\n\n    ax.set_xlabel(\n        \"%s %s, Period: %s\"\n        % (PDICT.get(varname), UNITS.get(varname), ctx[\"before_period\"])\n    )\n    ax.set_ylabel(\n        \"%s %s, Period: %s\"\n        % (PDICT.get(varname), UNITS.get(varname), ctx[\"after_period\"])\n    )\n    ax.grid(True)\n    ax.set_xlim(minv, maxv + buffer)\n    ax.set_ylim(minv, maxv + buffer)\n\n    _, _, r_value, _, _ = stats.linregress(xvals, yvals)\n    ax.text(\n        0.65,\n        0.02,\n        \"R$^2$=%.2f bias=%.2f\" % (r_value**2, yavg - xavg),\n        ha=\"right\",\n        transform=ax.transAxes,\n        bbox=dict(color=\"white\"),\n    )\n\n    # Shrink current axis's height by 10% on the bottom\n    box = ax.get_position()\n    ax.set_position(\n        [box.x0, box.y0 + box.height * 0.15, box.width, box.height * 0.85]\n    )\n\n    ax.legend(\n        loc=\"upper center\",\n        bbox_to_anchor=(0.5, -0.1),\n        fancybox=True,\n        shadow=True,\n        ncol=3,\n        scatterpoints=1,\n        fontsize=12,\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p84.py",
    "content": "\"\"\"\nThis application generates maps of precipitation\ndaily or multi-day totals.  There are currently three backend data sources\nmade available to this plotting application:\n<ul>\n    <li><a href=\"/iemre/\">IEM Reanalysis</a>\n    <br />A crude gridding of available COOP data and long term climate data\n    processed by the IEM. The plotted totals represent periods typical to\n    COOP data reporting, which is roughly 12 UTC (7 AM local) each day.</li>\n    <li><a href=\"https://www.nssl.noaa.gov/projects/mrms/\">NOAA MRMS</a>\n    <br />A state of the art gridded analysis of RADAR data using\n    observations and model data to help in the processing.</li>\n    <li><a href=\"https://prism.oregonstate.edu\">Oregon State PRISM</a>\n    <br />The PRISM data is credit Oregon State University,\n    created 4 Feb 2004.  This information arrives with a few day lag. The\n    plotted totals represent periods typical to COOP data reporting, so\n    12 UTC (7 AM local) each day.</li>\n    <li>Stage IV is a legacy NOAA precipitation product that gets quality\n    controlled by the River Forecast Centers. This page presents\n    24 hours totals at 12 UTC each day.</li>\n    <li>Iowa Flood Center is an analysis produced by the U of Iowa IIHR.</li>\n</ul>\n\n<p>The concept of dates within this application is a little bit tricky. For\nMRMS and IFC, the dates are approximately a US Central time calendar day. For\nthe others, they are generally something close to 12 UTC to 12 UTC. The end\ndate you select is inclusive, but represents a 24 hour period ending at about\n12 UTC on that date.\n\"\"\"\n\nimport os\nfrom datetime import datetime, timedelta\n\nimport numpy as np\nfrom affine import Affine\nfrom metpy.units import masked_array, units\nfrom pyiem import iemre, util\nfrom pyiem.database import get_dbconnc\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.grid.nav import IFC, MRMS_IEMRE, PRISM, STAGE4, get_nav\nfrom pyiem.plot import get_cmap, pretty_bins\nfrom pyiem.plot.geoplot import MapPlot\nfrom pyiem.reference import LATLON\nfrom pyiem.util import get_properties\nfrom pyproj import Proj\n\nPDICT2 = {\"c\": \"Contour Plot\", \"g\": \"Grid Cell Mesh\"}\nSRCDICT = {\n    \"iemre\": \"IEM Reanalysis (since 1 Jan 1893)\",\n    \"ifc\": \"Iowa Flood Center (since 1 Jan 2016) [Iowa-Only]\",\n    \"mrms\": \"NOAA MRMS (since 1 Jan 2001)\",\n    \"prism\": \"OSU PRISM (since 1 Jan 1981)\",\n    \"stage4\": \"Stage IV (since 1 Apr 1998)\",\n}\nNAV_XREF = {\n    \"iemre\": get_nav(\"IEMRE\", \"conus\"),\n    \"ifc\": IFC,\n    \"mrms\": MRMS_IEMRE,\n    \"prism\": PRISM,\n    \"stage4\": STAGE4,\n}\nPDICT3 = {\n    \"acc\": \"Accumulation\",\n    \"dep\": \"Departure from Average [inch]\",\n    \"per\": \"Percent of Average [%]\",\n}\nPDICT4 = {\n    \"yes\": \"Yes, overlay Drought Monitor (valid near end date)\",\n    \"yesb\": \"Yes, overlay Drought Monitor (valid near begin date)\",\n    \"no\": \"No, do not overlay Drought Monitor\",\n}\nPDICT5 = {\n    \"yes\": \"Mask the plot to the contiguous United States\",\n    \"no\": \"Do not mask the plot\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": False}\n    desc[\"cache\"] = 3600  # Things like MRMS update hourly\n    today = datetime.today() - timedelta(days=1)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"csector\", name=\"sector\", default=\"IA\", label=\"Select Sector:\"\n        ),\n        dict(\n            type=\"ugc\",\n            name=\"ugc\",\n            default=\"IAC153\",\n            label=\"Plot zoomed in on given County/Parish/Forecast Zone:\",\n            optional=True,\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"cwa\",\n            default=\"DMX\",\n            label=\"Plot for CONUS NWS WFO\",\n            optional=True,\n            network=\"WFO\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"src\",\n            default=\"mrms\",\n            label=\"Select Source:\",\n            options=SRCDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"acc\",\n            label=\"Plot Precipitation As:\",\n            options=PDICT3,\n        ),\n        dict(\n            type=\"select\",\n            name=\"usdm\",\n            default=\"no\",\n            label=\"Overlay Drought Monitor\",\n            options=PDICT4,\n        ),\n        dict(\n            type=\"select\",\n            name=\"ptype\",\n            default=\"g\",\n            label=\"Select Plot Type:\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"Start Date:\",\n            min=\"1893/01/01\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"edate\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"End Date (inclusive):\",\n            min=\"1893/01/01\",\n            max=f\"{datetime.today():%Y/%m/%d}\",\n        ),\n        {\n            \"type\": \"select\",\n            \"name\": \"clip\",\n            \"default\": \"yes\",\n            \"label\": \"Clip Data to CONUS?\",\n            \"options\": PDICT5,\n        },\n        dict(type=\"cmap\", name=\"cmap\", default=\"YlGnBu\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef mm2inch(val):\n    \"\"\"Helper.\"\"\"\n    return masked_array(val, units(\"mm\")).to(units(\"inch\")).m\n\n\ndef compute_title(src, sdate, edate):\n    \"\"\"Figure out how to label this fun.\"\"\"\n    if src in [\"mrms\", \"ifc\"]:\n        # This is generally closer to 'daily\n        if sdate == edate:\n            title = sdate.strftime(\"%-d %B %Y\")\n        else:\n            title = (\n                f\"{sdate:%-d %b} to {edate:%-d %b %Y} (US Central, inclusive)\"\n            )\n    else:\n        # This is 12z to 12z totals.\n        title = (\n            f\"{(sdate - timedelta(days=1)):%-d %B %Y} ~12z to \"\n            f\"{edate:%-d %B %Y} ~12z\"\n        )\n    return title\n\n\ndef get_ugc_bounds(ctx, sector):\n    \"\"\"Do custom bounds stuff.\"\"\"\n    if ctx.get(\"ugc\") is None:\n        return sector, \"\", 0, 0, 0, 0\n    conn, cursor = get_dbconnc(\"postgis\")\n    cursor.execute(\n        \"SELECT st_xmin(geom), st_xmax(geom), st_ymin(geom), st_ymax(geom), \"\n        \"name from ugcs WHERE ugc = %s and end_ts is null\",\n        (ctx[\"ugc\"],),\n    )\n    if cursor.rowcount == 0:\n        return sector, \"\", 0, 0, 0, 0\n    row = cursor.fetchone()\n    conn.close()\n    b = 0.15  # arb\n    return (\n        \"custom\",\n        row[\"name\"],\n        row[\"st_xmin\"] - b,\n        row[\"st_ymax\"] + b,\n        row[\"st_xmax\"] + b,\n        row[\"st_ymin\"] - b,\n    )\n\n\ndef set_ncinfo(ctx):\n    \"\"\"Define the netcdf stuff we need.\"\"\"\n    if ctx[\"sdate\"] > ctx[\"edate\"]:\n        ctx[\"sdate\"], ctx[\"edate\"] = ctx[\"edate\"], ctx[\"sdate\"]\n    if ctx[\"sdate\"].year != ctx[\"edate\"].year:\n        raise NoDataFound(\"Sorry, do not support multi-year plots yet!\")\n\n    clncvar = \"p01d\"\n    if ctx[\"src\"] == \"mrms\":\n        ncfn = iemre.get_daily_mrms_ncname(ctx[\"sdate\"].year)\n        clncfn = iemre.get_dailyc_mrms_ncname()\n        ncvar = \"p01d\"\n        source = \"MRMS Q3\"\n        subtitle = \"NOAA MRMS Project, MultiSensorPass2 and RadarOnly\"\n    elif ctx[\"src\"] == \"iemre\":\n        ncfn = iemre.get_daily_ncname(ctx[\"sdate\"].year)\n        clncfn = iemre.get_dailyc_ncname(\"\")\n        ncvar = \"p01d_12z\"\n        clncvar = \"p01d\"\n        source = \"IEM Reanalysis\"\n        subtitle = \"IEM Reanalysis is derived from various NOAA datasets\"\n    elif ctx[\"src\"] == \"ifc\":\n        ncfn = f\"/mesonet/data/iemre/{ctx['sdate'].year}_ifc_daily.nc\"\n        clncfn = \"/mesonet/data/iemre/ifc_dailyc.nc\"\n        ncvar = \"p01d\"\n        source = \"Iowa Flood Center (Iowa Only)\"\n        subtitle = \"IFC analysis courtesy of U of Iowa IIHR\"\n    elif ctx[\"src\"] == \"stage4\":\n        ncfn = f\"/mesonet/data/stage4/{ctx['sdate'].year}_stage4_daily.nc\"\n        clncfn = \"/mesonet/data/stage4/stage4_dailyc.nc\"\n        ncvar = \"p01d_12z\"\n        clncvar = \"p01d_12z\"\n        source = \"NOAA StageIV\"\n        subtitle = \"NOAA/NWS River Forecast Centers\"\n    else:\n        # Threshold edate\n        archive_end = datetime.strptime(\n            get_properties().get(\"prism.archive_end\", \"1980-01-01\"),\n            \"%Y-%m-%d\",\n        ).date()\n        ctx[\"edate\"] = min([archive_end, ctx[\"edate\"]])\n        ctx[\"sdate\"] = min([ctx[\"edate\"], ctx[\"sdate\"]])\n        ncfn = f\"/mesonet/data/prism/{ctx['sdate'].year}_daily.nc\"\n        clncfn = \"/mesonet/data/prism/prism_dailyc.nc\"\n        ncvar = \"ppt\"\n        clncvar = \"ppt\"\n        source = \"OSU PRISM\"\n        subtitle = (\n            \"PRISM Climate Group, Oregon State Univ., \"\n            \"http://prism.oregonstate.edu, created 4 Feb 2004.\"\n        )\n    ctx[\"ncfn\"] = ncfn\n    ctx[\"clncfn\"] = clncfn\n    ctx[\"ncvar\"] = ncvar\n    ctx[\"clncvar\"] = clncvar\n    ctx[\"source\"] = source\n    ctx[\"subtitle\"] = subtitle\n\n\ndef set_gridinfo(ctx):\n    \"\"\"Do the grid info work.\"\"\"\n    idx0 = iemre.daily_offset(ctx[\"sdate\"])\n    idx1 = iemre.daily_offset(ctx[\"edate\"]) + 1\n    if not os.path.isfile(ctx[\"ncfn\"]):\n        raise NoDataFound(\"No data found.\")\n    affin = NAV_XREF[ctx[\"src\"]].affine\n    with util.ncopen(ctx[\"ncfn\"]) as nc:\n        x0, y0, x1, y1 = util.grid_bounds(\n            nc.variables[\"lon\"][:],\n            nc.variables[\"lat\"][:],\n            [ctx[\"west\"], ctx[\"south\"], ctx[\"east\"], ctx[\"north\"]],\n        )\n        if ctx[\"sector\"] == \"conus\":\n            x0, y0, x1, y1 = 0, 0, -1, -1\n        # Figure out what the new affine is\n        ctx[\"affine\"] = Affine(\n            affin.a,\n            affin.b,\n            affin.c + x0 * affin.a,\n            affin.d,\n            affin.e,\n            affin.f + y0 * affin.e,\n        )\n        if ctx[\"sdate\"] == ctx[\"edate\"]:\n            p01d = mm2inch(nc.variables[ctx[\"ncvar\"]][idx0, y0:y1, x0:x1])\n        elif (idx1 - idx0) < 32:\n            p01d = mm2inch(\n                np.nansum(\n                    nc.variables[ctx[\"ncvar\"]][idx0:idx1, y0:y1, x0:x1], 0\n                )\n            )\n        else:\n            # Too much data can overwhelm this app, need to chunk it\n            for i in range(idx0, idx1, 10):\n                i2 = min([i + 10, idx1])\n                if idx0 == i:\n                    p01d = mm2inch(\n                        np.nansum(\n                            nc.variables[ctx[\"ncvar\"]][i:i2, y0:y1, x0:x1], 0\n                        )\n                    )\n                else:\n                    p01d += mm2inch(\n                        np.nansum(\n                            nc.variables[ctx[\"ncvar\"]][i:i2, y0:y1, x0:x1], 0\n                        )\n                    )\n    ctx[\"p01d\"] = p01d\n    ctx[\"idx0\"] = idx0\n    ctx[\"idx1\"] = idx1\n    ctx[\"x0\"] = x0\n    ctx[\"y0\"] = y0\n    ctx[\"x1\"] = x1\n    ctx[\"y1\"] = y1\n\n\ndef set_data(ctx):\n    \"\"\"Do the data work.\"\"\"\n    if 0 in ctx[\"p01d\"].shape:\n        raise NoDataFound(\"No data found for this period\")\n    if np.ma.is_masked(np.max(ctx[\"p01d\"])):\n        raise NoDataFound(\"Data was found, but all missing\")\n    p01d = ctx[\"p01d\"].filled(np.nan)\n    plot_units = \"inches\"\n    cmap = get_cmap(ctx[\"cmap\"])\n    cmap.set_bad(\"white\")\n    tslice = slice(ctx[\"idx0\"], ctx[\"idx1\"])\n    yslice = slice(ctx[\"y0\"], ctx[\"y1\"])\n    xslice = slice(ctx[\"x0\"], ctx[\"x1\"])\n    if ctx[\"opt\"] == \"dep\":\n        # Do departure work now\n        with util.ncopen(ctx[\"clncfn\"]) as nc:\n            climo = mm2inch(\n                np.sum(nc.variables[ctx[\"clncvar\"]][tslice, yslice, xslice], 0)\n            )\n        p01d = p01d - climo\n        [maxv] = np.nanpercentile(np.abs(p01d), [99])\n        clevs = np.around(np.linspace(0 - maxv, maxv, 11), decimals=2)\n    elif ctx[\"opt\"] == \"per\":\n        with util.ncopen(ctx[\"clncfn\"]) as nc:\n            climo = mm2inch(\n                np.sum(nc.variables[ctx[\"clncvar\"]][tslice, yslice, xslice], 0)\n            )\n        p01d = p01d / climo * 100.0\n        clevs = [1, 10, 25, 50, 75, 100, 125, 150, 200, 300, 500]\n        plot_units = \"percent\"\n    else:\n        p01d = np.where(p01d < 0.001, np.nan, p01d)\n        cmap.set_under(\"white\")\n        # Dynamic Range based on min/max grid value, since we restrict plot\n        maxval = np.ceil(np.nanpercentile(p01d, [99])[0])\n        if np.isnan(maxval) or maxval < 1:\n            clevs = np.arange(0, 1.01, 0.1)\n        else:\n            clevs = pretty_bins(0, maxval)\n        clevs[0] = 0.01\n\n    ctx[\"clevs\"] = clevs\n    ctx[\"p01d\"] = p01d\n    ctx[\"plot_units\"] = plot_units\n    ctx[\"cmap\"] = cmap\n\n\ndef set_mapplot(ctx):\n    \"\"\"Setup the mapplot instance.\"\"\"\n    state = None\n    sector = ctx[\"sector\"]\n    if len(ctx[\"sector\"]) == 2:\n        state = ctx[\"sector\"]\n        sector = \"state\"\n    if ctx.get(\"cwa\") is not None:\n        sector = \"cwa\"\n    ctx[\"sector\"], name, west, north, east, south = get_ugc_bounds(ctx, sector)\n    if ctx[\"sector\"] == \"iowa\":\n        ctx[\"sector\"] = \"state\"\n        state = \"IA\"\n    if ctx.get(\"ugc\") is not None:\n        ctx[\"subtitle\"] += f\", zoomed on [{ctx['ugc']}] {name}\"\n    title = compute_title(ctx[\"src\"], ctx[\"sdate\"], ctx[\"edate\"])\n    ctx[\"mp\"] = MapPlot(\n        sector=ctx[\"sector\"],\n        cwa=ctx.get(\"cwa\"),\n        state=state,\n        north=north,\n        east=east,\n        south=south,\n        west=west,\n        axisbg=\"white\",\n        nocaption=True,\n        title=f\"{ctx['source']}:: {title} Precip {PDICT3[ctx['opt']]}\",\n        subtitle=f\"Data from {ctx['subtitle']}\",\n        titlefontsize=14,\n        apctx=ctx,\n    )\n    ctx[\"west\"], ctx[\"east\"], ctx[\"south\"], ctx[\"north\"] = (\n        ctx[\"mp\"].panels[0].get_extent(LATLON)\n    )\n\n\ndef finalize_map(ctx):\n    \"\"\"Finish it.\"\"\"\n    affine = ctx[\"affine\"]\n    if ctx[\"ptype\"] == \"c\":\n        shp = ctx[\"p01d\"].shape\n        xpts = np.arange(shp[1]) * affine.a + (affine.c + affine.a / 2.0)\n        ypts = np.arange(shp[0]) * affine.e + (affine.f + affine.e / 2.0)\n        # Compute the lat/lon grid\n        if ctx[\"src\"] == \"stage4\":\n            xi, yi = np.meshgrid(xpts, ypts)\n            lons, lats = Proj(STAGE4.crs)(xi, yi)\n        else:\n            lons, lats = np.meshgrid(xpts, ypts)\n\n        ctx[\"mp\"].contourf(\n            lons,\n            lats,\n            ctx[\"p01d\"],\n            ctx[\"clevs\"],\n            cmap=ctx[\"cmap\"],\n            units=ctx[\"plot_units\"],\n            iline=False,\n            clip_on=False,\n        )\n    else:\n        if np.ma.is_masked(ctx[\"p01d\"]) and ctx[\"p01d\"].mask.all():\n            raise NoDataFound(\"Data was found, but all missing\")\n        ctx[\"mp\"].imshow(\n            ctx[\"p01d\"],\n            affine,\n            NAV_XREF[ctx[\"src\"]].crs,\n            clevs=ctx[\"clevs\"],\n            cmap=ctx[\"cmap\"],\n            units=ctx[\"plot_units\"],\n            clip_on=False,\n        )\n    if (ctx[\"east\"] - ctx[\"west\"]) < 14:\n        ctx[\"mp\"].drawcounties()\n        ctx[\"mp\"].drawcities(minpop=500 if ctx[\"sector\"] == \"custom\" else 5000)\n    if ctx[\"usdm\"].startswith(\"yes\"):\n        ctx[\"mp\"].draw_usdm(\n            ctx[\"edate\"] if ctx[\"usdm\"] == \"yes\" else ctx[\"sdate\"],\n            filled=False,\n            hatched=True,\n        )\n    if ctx.get(\"cwa\") is not None:\n        ctx[\"mp\"].draw_cwas()\n    if ctx[\"clip\"] == \"yes\":\n        ctx[\"mp\"].draw_mask(\"conus\")\n\n\ndef get_raster(ctx: dict):\n    \"\"\"Return the grid for delivery as GeoTIFF, etc.\"\"\"\n    set_ncinfo(ctx)\n    set_mapplot(ctx)  # need this for the affine\n    set_gridinfo(ctx)\n    set_data(ctx)\n    return ctx[\"p01d\"], ctx[\"affine\"], NAV_XREF[ctx[\"src\"]].crs\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    set_ncinfo(ctx)\n    set_mapplot(ctx)\n    set_gridinfo(ctx)\n    set_data(ctx)\n    finalize_map(ctx)\n\n    return ctx[\"mp\"].fig\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p85.py",
    "content": "\"\"\"\nBased on IEM archives of METAR reports, this\napplication produces the hourly frequency of a given variable at or\nabove or below a threshold.  This application tries to only\nconsider the top of the hour reports.\n\"\"\"\n\nimport calendar\nfrom datetime import datetime\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_ZSTATION\n\nPDICT = {\n    \"above\": \"At or Above\",\n    \"below\": \"Below\",\n}\nPDICT2 = {\n    \"100\": \"Scale x-axis to 100%\",\n    \"data\": \"Scale x-axis to Data\",\n}\nPDICT3 = {\n    \"alti\": \"Altimeter\",\n    \"dwpf\": \"Dew Point\",\n    \"feel\": \"Feels Like\",\n    \"p01i\": \"Precipitation\",\n    \"mslp\": \"Pressure\",\n    \"relh\": \"Relative Humidity\",\n    \"tmpf\": \"Temperature\",\n    \"vsby\": \"Visibility\",\n    \"sknt\": \"Wind Speed\",\n    \"gust\": \"Wind Gust\",\n}\nUNITS = {\n    \"alti\": \"inches\",\n    \"dwpf\": \"°F\",\n    \"feel\": \"°F\",\n    \"p01i\": \"inches\",\n    \"mslp\": \"mb\",\n    \"relh\": \"%\",\n    \"tmpf\": \"°F\",\n    \"vsby\": \"miles\",\n    \"sknt\": \"knots\",\n    \"gust\": \"knots\",\n}\nCASTS = {\n    \"tmpf\": \"int\",\n    \"dwpf\": \"int\",\n    \"feel\": \"int\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_ZSTATION,\n        dict(type=\"month\", name=\"month\", default=7, label=\"Month:\"),\n        {\n            \"type\": \"select\",\n            \"name\": \"varname\",\n            \"default\": \"tmpf\",\n            \"label\": \"Variable to Plot:\",\n            \"options\": PDICT3,\n        },\n        dict(\n            type=\"float\",\n            name=\"t\",\n            default=80,\n            label=\"Threshold (units of variable):\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"dir\",\n            default=\"above\",\n            label=\"Threshold Option:\",\n            options=PDICT,\n        ),\n        {\n            \"type\": \"select\",\n            \"name\": \"scale\",\n            \"default\": \"100\",\n            \"label\": \"Scale X-Axis:\",\n            \"options\": PDICT2,\n        },\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    month = int(ctx[\"month\"])\n    thres = ctx[\"t\"]\n    mydir = ctx[\"dir\"]\n    varname = ctx[\"varname\"]\n\n    tzname = ctx[\"_nt\"].sts[station][\"tzname\"]\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH data as (\n            SELECT valid at time zone :tzname  + '10 minutes'::interval as v,\n            {varname}::{cst} as datum\n            from alldata where station = :station and {varname} is not null\n            and extract(month from valid) = :month and report_type = 3)\n\n        SELECT extract(hour from v) as hour,\n        min(v) as min_valid,\n        max(v) as max_valid,\n        max(case when datum < :thres THEN v ELSE null END)\n            as last_below_valid,\n        max(case when datum >= :thres THEN v ELSE null END)\n            as last_above_valid,\n        sum(case when datum < :thres THEN 1 ELSE 0 END) as below,\n        sum(case when datum >= :thres THEN 1 ELSE 0 END) as above,\n        count(*) from data\n        GROUP by hour ORDER by hour ASC\n        \"\"\",\n                varname=varname,\n                cst=CASTS.get(varname, \"numeric\"),\n            ),\n            conn,\n            params={\n                \"station\": station,\n                \"month\": month,\n                \"thres\": thres if varname not in CASTS else int(thres),\n                \"tzname\": tzname,\n            },\n            index_col=\"hour\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found.\")\n\n    df[\"below_freq\"] = df[\"below\"].values.astype(\"f\") / df[\"count\"] * 100.0\n    df[\"above_freq\"] = df[\"above\"].values.astype(\"f\") / df[\"count\"] * 100.0\n\n    freq = df[mydir + \"_freq\"].values\n    hours = df.index.values\n    title = (\n        f\"({df['min_valid'].min().year} - {df['max_valid'].max().year}) \"\n        f\"{ctx['_sname']}\\n\"\n        f\"Frequency of {calendar.month_name[month]} Hour, \"\n        f\"{PDICT3[varname]} {PDICT[mydir]}: \"\n        f\"{thres} {UNITS[varname]}\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.add_axes((0.45, 0.08, 0.5, 0.75))\n    # Add a table of stats\n    ax.text(\n        0,\n        1.02,\n        f\"Hour | Last {mydir:5s} | Count | Total | Freq\",\n        ha=\"right\",\n        va=\"bottom\",\n        transform=ax.transAxes,\n    )\n    labels = []\n    for i, row in df.iterrows():\n        dt = row[f\"last_{mydir}_valid\"]\n        dt = \"N/A\" if pd.isna(dt) else dt.strftime(\"%d %b %Y\")\n        hr = datetime(2000, 1, 1, int(i)).strftime(\"%-I %p\")\n        labels.append(\n            f\"{hr:5s} | {dt} | {row[mydir]:,} | \"\n            f\"{row['count']:,} | \"\n            f\"{row[mydir + '_freq']:.1f}%\\n\"\n        )\n\n    ax.barh(hours, freq, fc=\"blue\", align=\"center\")\n    ax.set_yticks(range(len(labels)))\n    ax.set_yticklabels(labels)\n    ax.grid(True)\n    if ctx[\"scale\"] == \"100\":\n        ax.set_xlim(0, 100)\n        ax.set_xticks([0, 5, 25, 50, 75, 95, 100])\n    ax.set_xlabel(f\"Frequency [%] (Hour Timezone: {tzname})\")\n    ax.set_ylim(-0.5, 23.5)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p86.py",
    "content": "\"\"\"\nThis map presents a daily <a href=\"/iemre/\">IEM ReAnalysis</a> variable\nof your choice.  The concept of a day within this dataset is a period\nbetween 6 UTC to 6 UTC, which is Central Standard Time all year round.</p>\n\n<p><a href=\"/plotting/auto/?q=249\">Autoplot 249</a> is the hourly\nvariant of this plot.\n\"\"\"\n\nimport os\nfrom datetime import datetime, timedelta\n\nimport numpy as np\nfrom metpy.units import masked_array, units\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import daily_offset, get_daily_ncname\nfrom pyiem.plot import MapPlot, get_cmap, pretty_bins\nfrom pyiem.util import ncopen\n\nfrom iemweb.autoplot import ARG_IEMRE_DOMAIN\n\nPDICT = {\n    \"p01d_12z\": \"24 Hour Precipitation at 12 UTC\",\n    \"p01d\": \"Calendar Day Precipitation\",\n    \"range_tmpk\": \"Range between Min and Max Temp\",\n    \"range_tmpk_12z\": \"Range between Min and Max Temp at 12 UTC\",\n    \"low_tmpk\": \"Minimum Temperature\",\n    \"low_tmpk_12z\": \"Minimum Temperature at 12 UTC\",\n    \"high_tmpk\": \"Maximum Temperature\",\n    \"high_tmpk_12z\": \"Maximum Temperature at 12 UTC\",\n    \"high_soil4t\": \"Maximum 4 Inch Soil Temperature\",\n    \"low_soil4t\": \"Minimum 4 Inch Soil Temperature\",\n    \"min_rh\": \"Minimum Relative Humidity\",\n    \"max_rh\": \"Maximum Relative Humidity\",\n    \"power_swdn\": \"NASA POWER :: Incident Shortwave Down\",\n    \"rsds\": \"Solar Radiation\",\n    \"avg_dwpk\": \"Average Dew Point\",\n    \"wind_speed\": \"Average Wind Speed\",\n    \"snow_12z\": \"Experimental 24-Hour Snowfall at 12 UTC\",\n    \"snowd_12z\": \"Experimental 24-Hour Snow Depth at 12 UTC\",\n}\nPDICT2 = {\"c\": \"Contour Plot\", \"g\": \"Grid Cell Mesh\"}\nPDICT3 = {\n    \"yes\": \"Mask Data Outside Plot Geography\",\n    \"no\": \"Do Not Mask Data Outside Plot Geography\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__}\n    today = datetime.today() - timedelta(days=1)\n    desc[\"arguments\"] = [\n        ARG_IEMRE_DOMAIN,\n        dict(\n            type=\"csector\",\n            name=\"csector\",\n            default=\"midwest\",\n            label=\"Select state/sector to plot\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"rsds\",\n            label=\"Select Plot Variable:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"ptype\",\n            default=\"c\",\n            label=\"Select Plot Type:\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"date\",\n            name=\"date\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"Date:\",\n            min=\"1893/01/01\",\n        ),\n        {\n            \"type\": \"select\",\n            \"name\": \"clip\",\n            \"default\": \"yes\",\n            \"label\": \"Clip Data Outside Plot Geography:\",\n            \"options\": PDICT3,\n        },\n        dict(type=\"cmap\", name=\"cmap\", default=\"magma\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef unit_convert(nc, varname, idx0):\n    \"\"\"Convert units.\"\"\"\n    data = None\n    if not varname.startswith(\"range\"):\n        data = nc.variables[varname][idx0]\n    if varname in [\"min_rh\", \"max_rh\"]:\n        pass\n    elif varname in [\"rsds\", \"power_swdn\"]:\n        # Value is in W m**-2, we want MJ\n        multi = (86400.0 / 1000000.0) if varname == \"rsds\" else 1\n        data = data * multi\n    elif varname == \"wind_speed\":\n        data = (\n            masked_array(\n                data,\n                units(\"meter / second\"),\n            )\n            .to(units(\"mile / hour\"))\n            .m\n        )\n    elif varname in [\"p01d\", \"p01d_12z\", \"snow_12z\", \"snowd_12z\"]:\n        # Value is in W m**-2, we want MJ\n        data = masked_array(data, units(\"mm\")).to(units(\"inch\")).m\n    elif varname in [\n        \"high_tmpk\",\n        \"low_tmpk\",\n        \"high_tmpk_12z\",\n        \"low_tmpk_12z\",\n        \"avg_dwpk\",\n        \"high_soil4t\",\n        \"low_soil4t\",\n    ]:\n        data = masked_array(data, units(\"degK\")).to(units(\"degF\")).m\n    else:  # range_tmpk range_tmpk_12z\n        vname2 = f\"low_tmpk{'_12z' if varname == 'range_tmpk_12z' else ''}\"\n        vname1 = vname2.replace(\"low\", \"high\")\n        d1 = nc.variables[vname1][idx0]\n        d2 = nc.variables[vname2][idx0]\n        data = (\n            masked_array(d1, units(\"degK\")).to(units(\"degF\")).m\n            - masked_array(d2, units(\"degK\")).to(units(\"degF\")).m\n        )\n    return data\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    domain = ctx[\"domain\"]\n    gridnav = get_nav(\"iemre\", domain)\n    ptype = ctx[\"ptype\"]\n    dt = ctx[\"date\"]\n    varname = ctx[\"var\"]\n    mpargs = {\n        \"title\": f\"IEM Reanalysis of {PDICT.get(varname)} for {dt:%-d %b %Y}\",\n        \"subtitle\": \"Data derived from various NOAA datasets\",\n        \"axisbg\": \"white\",\n        \"nocaption\": True,\n        \"apctx\": ctx,\n    }\n    if domain != \"conus\":\n        ctx[\"csector\"] = \"custom\"\n        mpargs[\"west\"] = gridnav.left_edge\n        mpargs[\"east\"] = gridnav.right_edge\n        mpargs[\"south\"] = gridnav.bottom_edge\n        mpargs[\"north\"] = gridnav.top_edge\n\n    mp = MapPlot(**mpargs)\n\n    plot_units = \"\"\n    idx0 = daily_offset(dt)\n    ncfn = get_daily_ncname(dt.year, domain=domain)\n    if not os.path.isfile(ncfn):\n        raise NoDataFound(\"No Data Found.\")\n    with ncopen(ncfn) as nc:\n        cmap = get_cmap(ctx[\"cmap\"])\n        data = unit_convert(nc, varname, idx0)\n        if np.ma.is_masked(data) and data.mask.all():\n            raise NoDataFound(\"All data is missing.\")\n        ptiles = np.nanpercentile(data.filled(np.nan), [5, 95, 99.9])\n        if varname in [\"rsds\", \"power_swdn\"]:\n            plot_units = \"MJ d-1\"\n            clevs = pretty_bins(0, ptiles[1])\n            clevs[0] = 0.01\n            cmap.set_under(\"white\")\n        elif varname == \"wind_speed\":\n            plot_units = \"mph\"\n            clevs = pretty_bins(0, ptiles[1])\n            clevs[0] = 0.01\n        elif varname in [\"min_rh\", \"max_rh\"]:\n            plot_units = \"%\"\n            clevs = pretty_bins(0, 100)\n        elif varname in [\"p01d\", \"p01d_12z\", \"snow_12z\", \"snowd_12z\"]:\n            plot_units = \"inch\"\n            if ptiles[2] < 1:\n                clevs = np.arange(0, 1.01, 0.1)\n            else:\n                clevs = pretty_bins(0, ptiles[2])\n            clevs[0] = 0.01\n            cmap.set_under(\"white\")\n        elif varname in [\n            \"high_tmpk\",\n            \"low_tmpk\",\n            \"high_tmpk_12z\",\n            \"low_tmpk_12z\",\n            \"avg_dwpk\",\n            \"high_soil4t\",\n            \"low_soil4t\",\n            \"range_tmpk\",\n            \"range_tmpk_12z\",\n        ]:\n            plot_units = \"F\"\n            clevs = pretty_bins(ptiles[0], ptiles[1])\n\n    if ptype == \"c\":\n        x, y = np.meshgrid(gridnav.x_points, gridnav.y_points)\n        mp.contourf(\n            x,\n            y,\n            data,\n            clevs,\n            units=plot_units,\n            ilabel=True,\n            labelfmt=\"%.0f\",\n            cmap=cmap,\n            clip_on=ctx[\"clip\"] == \"yes\",\n        )\n    else:\n        mp.imshow(\n            data,\n            gridnav.affine,\n            gridnav.crs,\n            clevs=clevs,\n            cmap=cmap,\n            units=plot_units,\n            clip_on=ctx[\"clip\"] == \"yes\",\n        )\n\n    return mp.fig\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p87.py",
    "content": "\"\"\"\nFrequency plot partitioned by hour and\nday or week of the\nyear for a given METAR code to appear in the present weather. If your\nfavorite METAR code is not available in the listing, please let us know!\nIf multiple reports occurred within the same hour during one day/week,\nit would only count as one in this analysis.\n\nThe plot title will contain the time period found with the given present\nweather code present.\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.artist import setp\nfrom matplotlib.ticker import MaxNLocator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nPDICT = {\n    \"BLSN\": \"Blowing Snow (BLSN)\",\n    \"BLDU\": \"Blowing Dust (BLDU)\",\n    \"DS\": \"Duststorm (DS)\",\n    \"FG\": \"Fog (FG)\",\n    \"FU\": \"Smoke (FU)\",\n    \"HZ\": \"Haze (HZ)\",\n    \"FZFG\": \"Freezing Fog (FZFG)\",\n    \"FZRA\": \"Freezing Rain (FZRA)\",\n    \"PSN\": \"Heavy Snow (+SN)\",  # +SN causes CGI issues\n    \"-SN\": \"Light Snow (-SN)\",\n    \"TS\": \"Thunder (TS)\",\n    \"TSSN\": \"Thundersnow (TSSN)\",\n}\nPDICT2 = {\"week\": \"group by week of year\", \"doy\": \"group by day of year\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"code\",\n            default=\"TS\",\n            options=PDICT,\n            label=\"Code appearing in present weather:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"groupby\",\n            default=\"week\",\n            options=PDICT2,\n            label=\"How to group the results:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"syear\",\n            default=1971,\n            label=\"Start Year of Analysis (inclusive):\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"eyear\",\n            default=date.today().year,\n            label=\"End Year of Analysis (inclusive):\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    syear = ctx[\"syear\"]\n    eyear = ctx[\"eyear\"]\n    groupby = ctx[\"groupby\"]\n    sts = date(syear, 1, 1)\n    ets = date(eyear + 1, 1, 1)\n    code = ctx[\"code\"]\n    if code == \"PSN\":\n        code = \"+SN\"\n        PDICT[\"+SN\"] = PDICT[\"PSN\"]\n\n    if groupby == \"week\":\n        data = np.ma.zeros((24, 52), \"f\")\n        with get_sqlalchemy_conn(\"asos\") as conn:\n            df = pd.read_sql(\n                sql_helper(\"\"\"\n            WITH data as (\n                SELECT valid at time zone :tzname + '10 minutes'::interval as v\n                from alldata where\n                station = :station and\n                array_to_string(wxcodes, '|') LIKE :wxcode\n                and valid > :sts and valid < :ets),\n            agg as (\n                SELECT distinct extract(week from v)::int as week,\n                extract(doy from v)::int as doy,\n                extract(year from v)::int as year,\n                extract(hour from v)::int as hour\n                from data)\n            SELECT week, year, hour, count(*) from agg\n            WHERE week < 53\n            GROUP by week, year, hour\n            \"\"\"),\n                conn,\n                params={\n                    \"tzname\": ctx[\"_nt\"].sts[station][\"tzname\"],\n                    \"station\": station,\n                    \"sts\": sts,\n                    \"ets\": ets,\n                    \"wxcode\": f\"%{code}%\",\n                },\n                index_col=None,\n            )\n    else:\n        data = np.ma.zeros((24, 366), \"f\")\n        with get_sqlalchemy_conn(\"asos\") as conn:\n            df = pd.read_sql(\n                sql_helper(\"\"\"\n            WITH data as (\n                SELECT valid at time zone :tzname + '10 minutes'::interval as v\n                from alldata where\n                station = :station and\n                array_to_string(wxcodes, '|') LIKE :wxcode\n                and valid > :sts and valid < :ets),\n            agg as (\n                SELECT distinct\n                extract(doy from v)::int as doy,\n                extract(year from v)::int as year,\n                extract(hour from v)::int as hour\n                from data)\n            SELECT doy, year, hour, count(*) from agg\n            GROUP by doy, year, hour\n            \"\"\"),\n                conn,\n                params={\n                    \"tzname\": ctx[\"_nt\"].sts[station][\"tzname\"],\n                    \"station\": station,\n                    \"sts\": sts,\n                    \"ets\": ets,\n                    \"wxcode\": f\"%{code}%\",\n                },\n                index_col=None,\n            )\n    if df.empty:\n        raise NoDataFound(\"No data was found, sorry!\")\n\n    minyear = df[\"year\"].min()\n    maxyear = df[\"year\"].max()\n    for _, row in df.iterrows():\n        data[row[\"hour\"], row[groupby] - 1] += 1\n\n    data.mask = np.where(data == 0, True, False)\n    title = (\n        f\"{ctx['_sname']}:: {PDICT[code]} Reports\\n\"\n        f\"[{minyear:.0f} - {maxyear:.0f}] by hour and \"\n        f\"{PDICT2[groupby].replace('group ', '')}\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.add_axes((0.11, 0.25, 0.7, 0.65))\n    cax = fig.add_axes((0.82, 0.04, 0.02, 0.15))\n\n    res = ax.imshow(\n        data, aspect=\"auto\", rasterized=True, interpolation=\"nearest\"\n    )\n    fig.colorbar(res, cax=cax)\n    xloc = MaxNLocator(4)\n    cax.yaxis.set_major_locator(xloc)\n    cax.set_ylabel(\"Count\")\n    ax.set_ylim(-0.5, 23.5)\n    ax.set_yticks((0, 4, 8, 12, 16, 20))\n    ax.set_ylabel(f\"Local Time, {ctx['_nt'].sts[station]['tzname']}\")\n    ax.set_yticklabels((\"Mid\", \"4 AM\", \"8 AM\", \"Noon\", \"4 PM\", \"8 PM\"))\n    ax.grid(True)\n    lax = fig.add_axes((0.11, 0.1, 0.7, 0.15))\n    if groupby == \"week\":\n        ax.set_xticks(np.arange(0, 55, 7))\n        lax.bar(\n            np.arange(0, 52), np.ma.sum(data, 0).filled(0), facecolor=\"tan\"\n        )\n        lax.set_xlim(-0.5, 51.5)\n        lax.set_xticks(np.arange(0, 55, 7))\n        lax.set_xticklabels(\n            \"Jan 1,Feb 19,Apr 8,May 27,Jul 15,Sep 2,Oct 21,Dec 9\".split(\",\")\n        )\n    else:\n        ax.set_xticks(\n            [1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 365]\n        )\n        lax.bar(np.arange(0, 366), np.ma.sum(data, 0), facecolor=\"tan\")\n        lax.set_xlim(-0.5, 365.5)\n        lax.set_xticks([1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335])\n        lax.set_xticklabels(calendar.month_abbr[1:])\n    setp(ax.get_xticklabels(), visible=False)\n\n    # Bottom grid\n    lax.grid(True)\n    yloc = MaxNLocator(3)\n    lax.yaxis.set_major_locator(yloc)\n    lax.yaxis.get_major_ticks()[-1].label1.set_visible(False)\n\n    # Right grid\n    rax = fig.add_axes((0.81, 0.25, 0.15, 0.65))\n    rax.barh(np.arange(0, 24) - 0.4, np.ma.sum(data, 1), facecolor=\"tan\")\n    rax.set_ylim(-0.5, 23.5)\n    rax.set_yticks([])\n    xloc = MaxNLocator(3)\n    rax.xaxis.set_major_locator(xloc)\n    rax.xaxis.get_major_ticks()[0].label1.set_visible(False)\n    rax.grid(True)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p88.py",
    "content": "\"\"\"\nThis plot attempts to show the impact of cloudiness\non temperatures.  The plot shows a simple difference between the average\ntemperature during cloudy/mostly cloudy conditions and the average\ntemperature by hour and by week of the year.  The input data for this\nchart is limited to post 1973 as cloud cover data since then is more\nreliable/comparable.\n\"\"\"\n\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes, get_cmap\n\nPDICT = {\n    \"clear\": \"clear\",\n    \"cloudy\": \"mostly cloudy\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"which\",\n            default=\"cloudy\",\n            options=PDICT,\n            label=\"Compute differences based on:\",\n        ),\n        dict(\n            type=\"cmap\", name=\"cmap\", default=\"RdYlGn_r\", label=\"Color Ramp:\"\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    which = ctx[\"which\"]\n\n    data = np.zeros((24, 52), \"f\")\n\n    sql = \"in ('BKN','OVC')\" if which == \"cloudy\" else \"= 'CLR'\"\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH data as (\n        SELECT valid at time zone :tzname + '10 minutes'::interval as v,\n        tmpf, skyc1, skyc2, skyc3, skyc4 from alldata WHERE station = :station\n        and valid > '1973-01-01'\n        and tmpf is not null and tmpf > -99 and tmpf < 150),\n\n\n        climo as (\n        select extract(week from v) as w,\n        extract(hour from v) as hr,\n        avg(tmpf) from data GROUP by w, hr),\n\n        cloudy as (\n        select extract(week from v) as w,\n        extract(hour from v) as hr,\n        avg(tmpf) from data WHERE skyc1 {op} or skyc2 {op} or\n        skyc3 {op} or skyc4 {op} GROUP by w, hr)\n\n        SELECT l.w as week, l.hr as hour, l.avg - c.avg as difference\n        from cloudy l JOIN climo c on\n        (l.w = c.w and l.hr = c.hr)\n        \"\"\",\n                op=sql,\n            ),\n            conn,\n            params={\n                \"tzname\": ctx[\"_nt\"].sts[station][\"tzname\"],\n                \"station\": station,\n            },\n        )\n\n    for _, row in df.iterrows():\n        if row[\"week\"] > 52:\n            continue\n        data[int(row[\"hour\"]), int(row[\"week\"]) - 1] = row[\"difference\"]\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    title = (\n        f\"{ctx['_sname']} \"\n        f\"({max([ab.year, 1973])}-{date.today().year})\\n\"\n        f\"Hourly Temp Departure (skies were {PDICT[ctx['which']]} vs all)\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n\n    maxv = np.ceil(max([np.max(data), 0 - np.min(data)])) + 0.2\n    cs = ax.imshow(\n        data,\n        aspect=\"auto\",\n        interpolation=\"nearest\",\n        vmin=(0 - maxv),\n        vmax=maxv,\n        cmap=get_cmap(ctx[\"cmap\"]),\n    )\n    a = fig.colorbar(cs)\n    a.ax.set_ylabel(\"Temperature Departure °F\")\n    ax.grid(True)\n    ax.set_ylim(-0.5, 23.5)\n    ax.set_ylabel(f\"Local Hour of Day, {ctx['_nt'].sts[station]['tzname']}\")\n    ax.set_yticks((0, 4, 8, 12, 16, 20))\n    ax.set_xticks(range(0, 55, 7))\n    ax.set_xticklabels(\n        \"Jan 1|Feb 19|Apr 8|May 27|Jul 15|Sep 2|Oct 21|Dec 9\".split(\"|\")\n    )\n    ax.set_yticklabels((\"Mid\", \"4 AM\", \"8 AM\", \"Noon\", \"4 PM\", \"8 PM\"))\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p89.py",
    "content": "\"\"\"\nThis is a complex plot to describe!  For each\n24 hour period (roughly ending 7 AM), the IEM computes a gridded\nprecipitation estimate.  This chart displays the daily coverage of a\nspecified intensity for that day.  The chart also compares this coverage\nagainst the portion of the state that was below a second given threshold\nover X number of days.  This provides some insight into if the\nprecipitation fell over locations that needed it.\n\"\"\"\n\nimport os\nfrom datetime import date, datetime, timedelta\n\nimport geopandas as gpd\nimport matplotlib.dates as mdates\nimport numpy as np\nimport pandas as pd\nfrom metpy.units import units\nfrom pyiem import reference\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.grid import nav\nfrom pyiem.grid.zs import CachingZonalStats\nfrom pyiem.iemre import daily_offset, get_daily_ncname\nfrom pyiem.plot import figure\nfrom pyiem.util import ncopen\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=today.year,\n            label=\"Select Year (1893-)\",\n        ),\n        dict(\n            type=\"float\",\n            name=\"daythres\",\n            default=\"0.50\",\n            label=\"1 Day Precipitation Threshold [inch]\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"period\",\n            default=\"7\",\n            label=\"Over Period of Trailing Days\",\n        ),\n        dict(\n            type=\"float\",\n            name=\"trailthres\",\n            default=\"0.50\",\n            label=\"Trailing Day Precipitation Threshold [inch]\",\n        ),\n        dict(type=\"state\", name=\"state\", default=\"IA\", label=\"For State\"),\n    ]\n    return desc\n\n\ndef do_date(ctx, now: datetime, precip, daythres, trailthres):\n    \"\"\"Do the local date and return a dict\"\"\"\n    idx = daily_offset(now)\n    ctx[\"days\"].append(now)\n    sevenday = np.sum(precip[(idx - ctx[\"period\"]) : idx, :, :], 0)\n    ptrail = np.where(ctx[\"iowa\"] > 0, sevenday, -1)\n    pday = np.where(ctx[\"iowa\"] > 0, precip[idx, :, :], -1)\n    tots = np.sum(np.where(pday >= daythres, 1, 0))\n    need = np.sum(\n        np.where(np.logical_and(ptrail < trailthres, ptrail >= 0), 1, 0)\n    )\n    htot = np.sum(\n        np.where(np.logical_and(ptrail < trailthres, pday >= daythres), 1, 0)\n    )\n    return dict(\n        day=now.strftime(\"%Y-%m-%d\"),\n        coverage=(tots / ctx[\"iowapts\"] * 100.0),\n        hits=(htot / ctx[\"iowapts\"] * 100.0),\n        efficiency=(htot / need * 100.0),\n        needed=(need / ctx[\"iowapts\"] * 100.0),\n    )\n\n\ndef get_data(ctx):\n    \"\"\"Do the processing work, please\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        states = gpd.GeoDataFrame.from_postgis(\n            sql_helper(\n                \"SELECT the_geom, state_abbr from states \"\n                \"where state_abbr = :stabbr\"\n            ),\n            conn,\n            params={\"stabbr\": ctx[\"state\"]},\n            index_col=\"state_abbr\",\n            geom_col=\"the_geom\",\n        )\n    if states.empty:\n        raise NoDataFound(\"No data was found.\")\n\n    ncfn = get_daily_ncname(ctx[\"year\"])\n    if not os.path.isfile(ncfn):\n        raise NoDataFound(f\"Missing {ncfn}\")\n    with ncopen(ncfn) as nc:\n        precip = nc.variables[\"p01d\"]\n        czs = CachingZonalStats(nav.IEMRE.affine_image)\n        hasdata = np.zeros(\n            (nc.dimensions[\"lat\"].size, nc.dimensions[\"lon\"].size)\n        )\n        czs.gen_stats(hasdata, states[\"the_geom\"])\n        for gnav in czs.gridnav:\n            grid = np.ones((gnav.ysz, gnav.xsz))\n            grid[gnav.mask] = 0.0\n            jslice = slice(gnav.y0, gnav.y0 + gnav.ysz)\n            islice = slice(gnav.x0, gnav.x0 + gnav.xsz)\n            hasdata[jslice, islice] = np.where(\n                grid > 0, 1, hasdata[jslice, islice]\n            )\n        ctx[\"iowa\"] = np.flipud(hasdata)\n        ctx[\"iowapts\"] = float(np.sum(np.where(hasdata > 0, 1, 0)))\n\n        now = datetime(ctx[\"year\"], 1, 1)\n        now += timedelta(days=ctx[\"period\"] - 1)\n        ets = datetime(ctx[\"year\"], 12, 31)\n        today = datetime.now()\n        if ets > today:\n            ets = today - timedelta(days=1)\n        ctx[\"days\"] = []\n        rows = []\n        trailthres = (\n            (ctx[\"trailthres\"] * units(\"inch\")).to(units(\"mm\")).magnitude\n        )\n        daythres = (ctx[\"daythres\"] * units(\"inch\")).to(units(\"mm\")).magnitude\n        while now < ets:\n            row = do_date(ctx, now, precip, daythres, trailthres)\n            if row:\n                rows.append(row)\n            now += timedelta(days=1)\n\n    return pd.DataFrame(rows)\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    daythres = ctx[\"daythres\"]\n    trailthres = ctx[\"trailthres\"]\n    period = ctx[\"period\"]\n    state = ctx[\"state\"][:2]\n    df = get_data(ctx)\n    if df.empty:\n        raise NoDataFound(\"No data found for query.\")\n\n    fig = figure(apctx=ctx)\n    ax = fig.subplots(2, 1, sharex=True)\n    ax[0].bar(\n        ctx[\"days\"],\n        df[\"coverage\"],\n        fc=\"g\",\n        ec=\"g\",\n        zorder=1,\n        label=f\"Daily {daythres:.2f}in\",\n    )\n    ax[0].bar(\n        ctx[\"days\"],\n        df[\"hits\"],\n        fc=\"b\",\n        ec=\"b\",\n        zorder=2,\n        label='Over \"Dry\" Areas',\n    )\n    ax[0].legend(loc=2, ncol=2, fontsize=10)\n    ax[0].set_title(\n        \"IEM Estimated Areal Coverage Percent of \"\n        f\"{reference.state_names[state]}\\n\"\n        f\" receiving daily {daythres:.2f}in vs trailing {period} \"\n        f\"day {trailthres:.2f}in\"\n    )\n    ax[0].set_ylabel(\"Areal Coverage [%]\")\n    ax[0].grid(True)\n\n    ax[1].bar(ctx[\"days\"], df[\"needed\"], fc=\"tan\", ec=\"tan\", zorder=1)\n    ax[1].bar(ctx[\"days\"], df[\"efficiency\"], fc=\"b\", ec=\"b\", zorder=2)\n    ax[1].xaxis.set_major_formatter(mdates.DateFormatter(\"%-d %b\\n%Y\"))\n    ax[1].grid(True)\n    ax[1].set_ylabel(\"Areal Coverage [%]\")\n    ax[1].set_title(\n        f\"Percentage of Dry Area (tan) below ({trailthres:.2f}in \"\n        f\"over {period} days)\"\n        f\" got {daythres:.2f}in precip (blue) that day\",\n        fontsize=12,\n    )\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p9.py",
    "content": "\"\"\"\nThis chart produces the daily climatology of\nDegree Days for a location of your choice. Please note that\nFeb 29 is not considered for this analysis.\n\"\"\"\n\nfrom datetime import date, datetime\n\nimport matplotlib.dates as mdates\nimport pandas as pd\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"cdd\": \"Cooling Degree Days\",\n    \"gdd\": \"Growing Degree Days\",\n    \"hdd\": \"Heating Degree Days\",\n    \"sdd\": \"Stress Degree Days\",\n}\nPDICT2 = {\n    \"daily\": \"Daily Accumulated\",\n    \"ytd\": \"Year to Date Accumulation\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    thisyear = date.today().year\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=thisyear,\n            min=1893,\n            label=\"Select Year:\",\n        ),\n        {\n            \"type\": \"sday\",\n            \"default\": \"0101\",\n            \"name\": \"sday\",\n            \"label\": \"Start Day of the Year for Plot\",\n        },\n        {\n            \"type\": \"sday\",\n            \"default\": \"1231\",\n            \"name\": \"eday\",\n            \"label\": \"Inclusive End Day of the Year for Plot\",\n        },\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"gdd\",\n            name=\"var\",\n            label=\"Which variable to plot:\",\n        ),\n        {\n            \"type\": \"select\",\n            \"options\": PDICT2,\n            \"label\": \"Plot Daily or YTD Accumulated?\",\n            \"name\": \"w\",\n            \"default\": \"daily\",\n        },\n        dict(\n            type=\"int\",\n            name=\"base\",\n            default=\"50\",\n            label=\"Enter CDD/GDD/HDD Base (F):\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"ceiling\",\n            default=\"86\",\n            label=\"Enter GDD Ceiling / SDD Base (F):\",\n        ),\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"coop\")\ndef get_df(ctx: dict, conn: Connection | None = None) -> pd.DataFrame:\n    \"\"\"Compute things.\"\"\"\n    varname = ctx[\"var\"]\n    base = ctx[\"base\"]\n    ceiling = ctx[\"ceiling\"]\n    year = ctx[\"year\"]\n    glabel = f\"{varname}{base}{ceiling}\"\n\n    gfunc = \"gddxx(:base, :ceil, high, low)\"\n    if varname in [\"hdd\", \"cdd\"]:\n        gfunc = f\"{varname}(high, low, :base)\"\n    elif varname == \"sdd\":\n        gfunc = \"case when high > :ceil then high - :ceil else 0 end\"\n\n    obsdf = pd.read_sql(\n        sql_helper(\n            \"\"\"SELECT year, sday, {gfunc} as {glabel} from alldata WHERE\n        station = :sid and year > 1892 and sday != '0229'\n        and sday >= :sday and sday <= :eday ORDER by day ASC\n        \"\"\",\n            gfunc=gfunc,\n            glabel=glabel,\n        ),\n        conn,\n        params={\n            \"sid\": ctx[\"station\"],\n            \"sday\": f\"{ctx['sday']:%m%d}\",\n            \"eday\": f\"{ctx['eday']:%m%d}\",\n            \"base\": ctx[\"base\"],\n            \"ceil\": ctx[\"ceiling\"],\n        },\n    )\n    if obsdf.empty:\n        raise NoDataFound(\"No data Found.\")\n    if ctx[\"w\"] == \"ytd\":\n        obsdf[\"accum\"] = obsdf[[\"year\", glabel]].groupby(\"year\").cumsum()\n        glabel = \"accum\"\n\n    sdaydf = (\n        obsdf[[\"sday\", glabel]]\n        .groupby(\"sday\")\n        .describe(percentiles=[0.05, 0.25, 0.75, 0.95])\n    ).unstack(level=-1)\n\n    # collapse the multi-index for columns\n    retdf = sdaydf.reset_index().pivot(\n        index=\"sday\", columns=\"level_1\", values=0\n    )\n    retdf[f\"{year}{glabel}\"] = obsdf[obsdf[\"year\"] == year].set_index(\"sday\")[\n        glabel\n    ]\n    return retdf\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    thisyear = datetime.now().year\n    year = ctx[\"year\"]\n    base = ctx[\"base\"]\n    ceiling = ctx[\"ceiling\"]\n    varname = ctx[\"var\"]\n    glabel = f\"{varname}{base}{ceiling}\"\n    retdf = get_df(ctx)\n\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown Station Metadata.\")\n    syear = max(ab.year, 1893)\n\n    title = f\"base={base}/ceil={ceiling}\"\n    if varname in [\"hdd\", \"cdd\"]:\n        title = f\"base={base}\"\n    elif varname == \"sdd\":\n        title = f\"base={ceiling}\"\n\n    if ctx[\"w\"] == \"ytd\":\n        glabel = \"accum\"\n    tt = f\"{ctx['sday']:%-d %b} thru {ctx['eday']:%-d %b}\"\n    title = (\n        f\"({syear}-{thisyear}) [{tt}] {ctx['_sname']}\\n\"\n        f\"{year} {PDICT[varname]} ({title})\"\n    )\n    # avoid leap year\n    xaxis = pd.to_datetime(\n        \"2001\" + retdf.reset_index()[\"sday\"], format=\"%Y%m%d\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    ax.plot(\n        xaxis,\n        retdf[\"mean\"],\n        color=\"r\",\n        zorder=2,\n        lw=2.0,\n        label=\"Average\",\n    )\n    ax.scatter(\n        pd.to_datetime(\"2001\" + retdf.index, format=\"%Y%m%d\"),\n        retdf[f\"{year}{glabel}\"],\n        color=\"b\",\n        zorder=2,\n        label=f\"{year}\",\n    )\n    ax.bar(\n        xaxis,\n        retdf[\"95%\"] - retdf[\"5%\"],\n        bottom=retdf[\"5%\"],\n        ec=\"tan\",\n        fc=\"tan\",\n        zorder=1,\n        label=\"5-95 Percentile\",\n    )\n    ax.bar(\n        xaxis,\n        retdf[\"75%\"] - retdf[\"25%\"],\n        bottom=retdf[\"25%\"],\n        ec=\"lightblue\",\n        fc=\"lightblue\",\n        zorder=1,\n        label=\"25-75 Percentile\",\n    )\n    ax.set_xlim(xaxis.values[0], xaxis.values[-1])\n    if varname == \"gdd\" and ctx[\"w\"] == \"daily\":\n        ax.set_ylim(-0.25, 40)\n    ax.grid(True)\n    ax.set_ylabel(f\"{PDICT2[ctx['w']]} °F\")\n    ax.xaxis.set_major_formatter(\n        mdates.DateFormatter(\"%-d %b\"),\n    )\n    ax.legend(ncol=2)\n\n    return fig, retdf\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p90.py",
    "content": "\"\"\"\nThis application has a considerable and likely\nconfusing amount of configuration options.  The biggest source of the\nconfusion is the interplay between the statistic chosen and the dates/times\nprovided.  This table summarizes that interplay.<br />\n\n<div class=\"table-responsive\">\n<table class=\"table table-striped table-bordered\">\n<thead class=\"table-dark\">\n<tr><th>Statistic</th><th>Uses</th><th>Application</th></tr>\n</thead>\n<tbody>\n<tr>\n<td>Days Since</td>\n<td>Start/End Date Time</td>\n<td>This plots the number of \"days\" since the last issuance of a given\nheadline between the start and end date times that you provide.  The\nconcept of \"days\" is 24 hour periods.</td>\n</tr>\n\n<tr>\n<td>Days With 1+ Events</td>\n<td>Start/End Date Time</td>\n<td>For a central time zone calendar date, this totals the days with at least\none <strong>issuance</strong> event.</td>\n</tr>\n\n<tr>\n<td>Last Year</td>\n<td>Start/End Date Time</td>\n<td>This plots the most recent year of issuance for a given warning type.\n</td>\n</tr>\n\n<tr>\n<td>Most Frequent Hour</td>\n<td>Start/End Date Time</td>\n<td>This plots only works for UGC summarization. It attempts to plot the\nhour of the day with the most frequent number of events issued. Not that\nfor long-fuse warnings, these type of plot is likely ill-defined.</td>\n</tr>\n\n<tr>\n<td>Total Count</td>\n<td>Start/End Date Time</td>\n<td>This plots the total number of events between the start and end\ndate time.</td>\n</tr>\n\n<tr>\n<td>Year Average</td>\n<td>Start/End Year</td>\n<td>This plots the average number of events between the inclusive start\nand end year. The caveat is that it uses the actual found time domain\nof warnings within those years to compute a yearly average. So if you\npick a year period between 2005 to 2010 and no warnings were issued in\n2005, it would then use 2006 to 2010 to compute the yearly average.</td>\n</tr>\n\n<tr>\n<td>Year Count</td>\n<td>Start Year</td>\n<td>This plots the number of events for a given year.  A year is defined\nas the calendar year in US Central Time.</td>\n</tr>\n\n<tr>\n<td>Yearly Min/Avg/Max Count bounded...</td>\n<td>Start/End Date Time<br />Start/End Year</td>\n<td>This plots the min/avg/max number of events per year between the\ngiven dates.  For example, you could produce a plot of the average\nnumber of Tornado Warnings during June.  Please note that only the\naverage plot works when summarizing by polygons.</td>\n</tr>\n\n</tbody>\n</table>\n</div>\n\n<p>In general, it will produce\na map of either a single NWS Weather Forecast Office (WFO) or for a\nspecified state.  For warning types that are issued with polygons, you\ncan optionally plot heatmaps of these products.  Please be careful when\nselecting start and end dates to ensure you are getting the plot you\nwant.  There are likely some combinations here that will produce a\nbroken image symbol.  If you find such a case, please email us the link\nto this page that shows the broken image!</p>\n\n<p>Storm Based Warning polygons were not official until 1 October 2007,\nso if you generate plots for years prior to this date, you may notice\npolygons well outside the County Warning Area bounds.  There was no\nenforcement of these unofficial polygons to stay within CWA bounds.</p>\n\n<p><a href=\"/plotting/auto/?q=260\">Autoplot 260</a> is a similar application,\nbut generates simple maps plotting events over a period of time.</p>\n\n<p><strong>This app can be very slow</strong>, so please let it grind\naway as sometimes it will take 3-5 minutes to generate a map :(\n\"\"\"\n\nfrom datetime import date, datetime, timedelta, timezone\n\nimport geopandas as gpd\nimport numpy as np\nimport pandas as pd\nfrom affine import Affine\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws import vtec\nfrom pyiem.plot import get_cmap\nfrom pyiem.plot.geoplot import MapPlot\nfrom pyiem.reference import (\n    fema_region_bounds,\n    state_bounds,\n    state_names,\n    wfo_bounds,\n)\nfrom pyiem.util import utc\nfrom rasterstats import zonal_stats\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.autoplot import ARG_FEMA, fema_region2states\n\nPDICT = {\n    \"cwa\": \"Plot by NWS Forecast Office\",\n    \"state\": \"Plot by State\",\n    \"fema\": \"Plot by FEMA Region\",\n    \"conus\": \"Plot for Contiguous US\",\n}\nPDICT2 = {\n    \"yearcount\": \"Count of Events for Given Year\",\n    \"days\": \"Days Since Last Issuance\",\n    \"events\": \"Days with 1+ Issuances\",\n    \"hour\": \"Most Frequent Issuance Hour of Day\",\n    \"total\": \"Total Count between Start and End Date\",\n    \"lastyear\": \"Year of Last Issuance\",\n    \"yearavg\": \"Yearly Average Count between Start and End Year\",\n    \"periodavg\": (\n        \"Yearly Average Count between Start and End DateTime Bounded by Years\"\n    ),\n    \"periodmin\": (\n        \"Yearly Minimum Count between Start and End DateTime Bounded by Years\"\n    ),\n    \"periodmax\": (\n        \"Yearly Maximum Count between Start and End DateTime Bounded by Years\"\n    ),\n}\nPDICT3 = {\n    \"yes\": \"YES: Label Counties/Zones\",\n    \"no\": \"NO: Do not Label Counties/Zones\",\n}\nPDICT4 = {\n    \"ugc\": \"Summarize/Plot by UGC (Counties/Parishes/Zones)\",\n    \"polygon\": \"Summarize/Plot by Polygon (Storm Based Warnings)\",\n}\nPDICT5 = {\n    \"yes\": \"YES: Draw Counties/Parishes\",\n    \"no\": \"NO: Do Not Draw Counties/Parishes\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    today = date.today()\n    tom = today + timedelta(days=3)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"t\",\n            default=\"state\",\n            options=PDICT,\n            label=\"Select plot extent type:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"v\",\n            default=\"lastyear\",\n            options=PDICT2,\n            label=\"Select statistic to plot:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"ilabel\",\n            default=\"yes\",\n            options=PDICT3,\n            label=\"Overlay values on map?\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"geo\",\n            default=\"ugc\",\n            options=PDICT4,\n            label=\"Plot by UGC (Counties/Parishes/Zones) or Polygons?\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"drawc\",\n            default=\"yes\",\n            options=PDICT5,\n            label=\"Plot County/Parish borders on polygon summary maps?\",\n        ),\n        dict(\n            type=\"year\",\n            min=1986,\n            name=\"year\",\n            default=today.year,\n            label=\"Select start year (only for year count/average):\",\n        ),\n        dict(\n            type=\"year\",\n            min=1986,\n            name=\"year2\",\n            default=today.year,\n            label=\"Select end year (only for year count/average) (inclusive):\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"sdate\",\n            default=\"2006/01/01 0000\",\n            label=\"Start DateTime UTC:\",\n            min=\"1986/01/01 0000\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"edate\",\n            default=tom.strftime(\"%Y/%m/%d 0000\"),\n            label=\"End DateTime UTC:\",\n            min=\"1986/01/01 0000\",\n            max=tom.strftime(\"%Y/%m/%d 0000\"),\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO: (when appropriate)\",\n        ),\n        dict(\n            type=\"state\",\n            name=\"state\",\n            default=\"IA\",\n            label=\"Select State: (when appropriate)\",\n        ),\n        ARG_FEMA,\n        dict(\n            type=\"phenomena\",\n            name=\"phenomena\",\n            default=\"TO\",\n            label=\"Select Watch/Warning Phenomena Type:\",\n        ),\n        dict(\n            type=\"significance\",\n            name=\"significance\",\n            default=\"A\",\n            label=\"Select Watch/Warning Significance Level:\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"jet\", label=\"Color Ramp:\"),\n        dict(\n            optional=True,\n            name=\"interval\",\n            type=\"float\",\n            default=1,\n            label=(\n                \"Specify an interval for the colorbar to use instead of \"\n                \"dynamic. (optional)\"\n            ),\n        ),\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"postgis\")\ndef get_raster(ctx: dict, conn: Connection | None = None):\n    \"\"\"polygon workflow\"\"\"\n    if ctx[\"geo\"] == \"ugc\":\n        raise NoDataFound(\"Sorry, GeoTIFF only works for polygon summaries.\")\n    ctx[\"sdate\"] = ctx[\"sdate\"].replace(tzinfo=timezone.utc)\n    ctx[\"edate\"] = ctx[\"edate\"].replace(tzinfo=timezone.utc)\n    varname = ctx[\"v\"]\n    if varname == \"events\":\n        raise NoDataFound(\"Sorry, not implemented for polygon summaries.\")\n    station = ctx[\"station\"][:4]\n    state = ctx[\"state\"]\n    phenomena = ctx[\"phenomena\"]\n    significance = ctx[\"significance\"]\n    t = ctx[\"t\"]\n    sdate = ctx[\"sdate\"]\n    if sdate.year < 2001:\n        ctx[\"sdate\"] = utc(2001, 1, 1)\n        sdate = ctx[\"sdate\"]\n    edate = ctx[\"edate\"]\n    year = ctx[\"year\"]\n    year2 = ctx[\"year2\"]\n    # figure out the start and end timestamps\n    if varname in [\"total\", \"days\", \"lastyear\"]:\n        sts = sdate\n        ets = edate\n    elif varname == \"hour\":\n        raise NoDataFound(\"Sorry, not implemented for polygon summaries.\")\n    elif varname == \"yearcount\":\n        sts = utc(year, 1, 1)\n        ets = utc(year, 12, 31, 23, 59)\n    else:\n        sts = utc(year, 1, 1)\n        ets = utc(year2, 12, 31, 23, 59)\n    daylimiter = \"\"\n    if varname.startswith(\"period\"):\n        if sdate.strftime(\"%m%d\") > edate.strftime(\"%m%d\"):\n            daylimiter = (\n                \"(to_char(issue, 'mmdd') >= :sdate or \"\n                \"to_char(issue, 'mmdd') < :edate) and \"\n            )\n            (sdate, edate) = (edate, sdate)\n        else:\n            daylimiter = (\n                \"to_char(issue, 'mmdd') >= :sdate and \"\n                \"to_char(issue, 'mmdd') < :edate and \"\n            )\n    # We need to figure out how to get the warnings either by state or by wfo\n    if t == \"cwa\":\n        (west, south, east, north) = wfo_bounds[station[-3:]]\n    elif t == \"fema\":\n        (west, south, east, north) = fema_region_bounds[int(ctx[\"fema\"])]\n    elif t == \"conus\":\n        (west, south, east, north) = (-125, 24, -66.5, 49)\n    else:\n        (west, south, east, north) = state_bounds[state]\n    # buffer by 2 degrees so to hopefully get all polys\n    (west, south) = [x - 2 for x in (west, south)]\n    (east, north) = [x + 2 for x in (east, north)]\n    # create grids\n    griddelta = 0.01\n    if (east - west) > 10:\n        griddelta = 0.02\n    lons = np.arange(west, east, griddelta)\n    lats = np.arange(south, north, griddelta)\n    YSZ = len(lats)\n    XSZ = len(lons)\n    lons, lats = np.meshgrid(lons, lats)\n    # lons and lats are the center of the grid cells, so the affine needs\n    # to be adjusted to the upper left corner\n    affine = Affine(\n        griddelta,\n        0.0,\n        west - griddelta / 2.0,\n        0.0,\n        0 - griddelta,\n        north + griddelta / 2.0,\n    )\n    ones = np.ones((YSZ, XSZ))\n    counts = np.zeros((YSZ, XSZ))\n    wfolimiter = \"\"\n    if ctx[\"t\"] == \"cwa\":\n        wfolimiter = \" wfo = :wfo and \"\n    params = {\n        \"sdate\": f\"{sdate:%m%d}\",\n        \"edate\": f\"{edate:%m%d}\",\n        \"wfo\": station,\n        \"ph\": phenomena,\n        \"sig\": significance,\n        \"west\": west,\n        \"south\": south,\n        \"east\": east,\n        \"north\": north,\n        \"sts\": sts,\n        \"ets\": ets,\n    }\n    df: pd.DataFrame = gpd.read_postgis(\n        sql_helper(\n            \"\"\"\n    SELECT ST_Forcerhr(ST_Buffer(geom, 0.0005)) as geom, issue, expire,\n    extract(epoch from :ets - issue) / 86400. as days\n    from sbw where {wfolimiter} {daylimiter}\n    phenomena = :ph and status = 'NEW'\n    and significance = :sig\n    and ST_Within(geom,\n        ST_MakeEnvelope(:west, :south, :east, :north, 4326))\n    and ST_IsValid(geom)\n    and issue >= :sts and issue <= :ets ORDER by issue ASC\n    \"\"\",\n            wfolimiter=wfolimiter,\n            daylimiter=daylimiter,\n        ),\n        conn,\n        params=params,\n        geom_col=\"geom\",\n        index_col=None,\n    )  # type: ignore\n    if df.empty:\n        raise NoDataFound(\"No data found for query.\")\n    zs = zonal_stats(\n        df[\"geom\"],\n        ones,\n        affine=affine,\n        nodata=-1,\n        all_touched=True,\n        raster_out=True,\n    )\n    for i, z in enumerate(zs):\n        aff = z[\"mini_raster_affine\"]\n        mywest = aff.c\n        mynorth = aff.f\n        raster = z[\"mini_raster_array\"]\n        x0 = int((mywest - west) / griddelta)\n        y0 = int((north - mynorth) / griddelta)\n        ny, nx = np.shape(raster)\n        x1 = x0 + nx\n        y1 = y0 + ny\n        if x0 < 0 or x1 >= XSZ or y0 < 0 or y1 >= YSZ:\n            # Hmmmmm\n            continue\n        if varname == \"lastyear\":\n            counts[y0:y1, x0:x1] = np.where(\n                raster.mask, counts[y0:y1, x0:x1], df.iloc[i][\"issue\"].year\n            )\n        elif varname == \"days\":\n            counts[y0:y1, x0:x1] = np.where(\n                raster.mask, counts[y0:y1, x0:x1], df.iloc[i][\"days\"]\n            )\n        else:\n            counts[y0:y1, x0:x1] += np.where(raster.mask, 0, 1)\n    if np.max(counts) == 0:\n        raise NoDataFound(\"Sorry, no data found for query!\")\n    # construct the df\n    ctx[\"df\"] = pd.DataFrame(\n        {\n            \"lat\": lats.ravel(),\n            \"lon\": lons.ravel(),\n            \"val\": np.flipud(counts).ravel(),\n        }\n    )\n    minv = df[\"issue\"].min()\n    maxv = df[\"issue\"].max()\n    if varname == \"lastyear\":\n        ctx[\"title\"] = \"Year of Last\"\n        if (maxv.year - minv.year) < 3:\n            bins = range(int(minv.year) - 4, int(maxv.year) + 2)\n        else:\n            bins = range(int(minv.year), int(maxv.year) + 2)\n        ctx[\"units\"] = \"year\"\n        ctx[\"subtitle\"] = (\n            f\" between {sdate:%d %b %Y %H%M} and {edate:%d %b %Y %H%M} UTC\"\n        )\n    elif varname in \"days\":\n        ctx[\"title\"] = PDICT2[varname]\n        daymin = max(df[\"days\"].min(), 1)\n        bins = np.linspace(daymin, df[\"days\"].max() + 7, 12, dtype=\"i\")\n        counts = np.where(counts < 0.0001, -1, counts)\n        ctx[\"subtitle\"] = (\n            f\" between {sdate:%d %b %Y %H%M} and {edate:%d %b %Y %H%M} UTC\"\n        )\n        ctx[\"units\"] = \"days\"\n        ctx[\"extend\"] = \"neither\"\n    elif varname == \"yearcount\":\n        ctx[\"title\"] = f\"Count for {year}\"\n        ctx[\"units\"] = \"count\"\n    elif varname == \"total\":\n        ctx[\"title\"] = \"Total\"\n        ctx[\"subtitle\"] = (\n            f\" between {sdate:%d %b %Y %H%M} and {edate:%d %b %Y %H%M} UTC\"\n        )\n        ctx[\"units\"] = \"count\"\n    elif varname == \"yearavg\":\n        ctx[\"title\"] = f\"Yearly Avg: {minv:%d %b %Y} and {maxv:%d %b %Y}\"\n        years = (maxv.year - minv.year) + 1\n        counts = counts / years\n        ctx[\"units\"] = \"count per year\"\n    elif varname == \"periodavg\":\n        ctx[\"title\"] = (\n            f\"Yearly {varname.replace('period', '')} between {edate:%d %b} \"\n            f\"and {edate:%d %b} [{year}-{year2}]\"\n        )\n        years = (maxv.year - minv.year) + 1\n        counts = counts / years\n        ctx[\"units\"] = \"count per year\"\n    else:\n        raise NoDataFound(\n            \"Sorry, your select combination is too complex for me!\"\n        )\n\n    maxv = np.max(counts)\n    if varname not in [\"lastyear\", \"days\"]:\n        if ctx.get(\"interval\") is not None:\n            interval = float(ctx[\"interval\"])\n            bins = np.arange(0, interval * 10.1, interval)\n            bins[0] = 0.01\n        elif varname in [\"total\", \"yearcount\"]:\n            counts = np.where(counts < 1, np.nan, counts)\n            ctx[\"extend\"] = \"neither\"\n            if maxv < 8:\n                bins = np.arange(1, 8, 1)\n            else:\n                bins = np.linspace(1, maxv + 3, 10, dtype=\"i\")\n        else:\n            for delta in [500, 50, 5, 1, 0.5, 0.25, 0.10, 0.05]:\n                bins = np.arange(0, (maxv + 1.0) * 1.05, delta)\n                if len(bins) > 8:\n                    break\n            bins[0] = 0.01\n    ctx[\"bins\"] = bins\n    return counts, affine, \"EPSG:4326\"\n\n\n@with_sqlalchemy_conn(\"postgis\")\ndef do_ugc(ctx: dict, conn: Connection | None = None):\n    \"\"\"Do UGC based logic.\"\"\"\n    varname = ctx[\"v\"]\n    station = ctx[\"station\"][:4]\n    state = ctx[\"state\"]\n    phenomena = ctx[\"phenomena\"]\n    significance = ctx[\"significance\"]\n    t = ctx[\"t\"]\n    sdate: date = ctx[\"sdate\"]\n    edate: date = ctx[\"edate\"]\n    year = ctx[\"year\"]\n    year2 = ctx[\"year2\"]\n    df = None\n    states = [state]\n    if t == \"fema\":\n        states = fema_region2states(ctx[\"fema\"])\n    sqlfilter = \"\"\n    if t == \"cwa\":\n        sqlfilter = \"wfo = :wfo and \"\n    elif t in [\"state\", \"fema\"]:\n        sqlfilter = \"substr(ugc, 1, 2) = ANY(:states) and \"\n    query_params = {\n        \"wfo\": station if len(station) == 3 else station[1:],\n        \"states\": states,\n        \"ph\": phenomena,\n        \"sig\": significance,\n        \"sdate\": sdate,\n        \"edate\": edate,\n        \"year\": year,\n    }\n    if varname in [\"lastyear\", \"days\"]:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n        select ugc, max(issue at time zone 'UTC') from warnings\n        WHERE {sqlfilter} phenomena = :ph and significance = :sig and\n        issue >= :sdate and issue < :edate\n        GROUP by ugc\n        \"\"\",\n                sqlfilter=sqlfilter,\n            ),\n            query_params,\n        )\n        rows = []\n        data = {}\n        for row in res:\n            days = int(\n                (edate - row[1].replace(tzinfo=timezone.utc)).total_seconds()\n                / 86400.0\n            )\n            rows.append(\n                dict(days=days, valid=row[1], year=row[1].year, ugc=row[0])\n            )\n            data[row[0]] = row[1].year if varname == \"lastyear\" else days\n        ctx[\"lblformat\"] = \"%.0f\"\n        tt = \"Year of Last\" if varname == \"lastyear\" else PDICT2[varname]\n        ctx[\"title\"] = f\"{sdate:%-d %b %Y}-{edate:%-d %b %Y} {tt}\"\n        datavar = \"year\" if varname == \"lastyear\" else \"days\"\n    elif varname == \"yearcount\":\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n        select ugc, count(*) from warnings\n        WHERE {sqlfilter} vtec_year = :year and phenomena = :ph\n        and significance = :sig GROUP by ugc\n        \"\"\",\n                sqlfilter=sqlfilter,\n            ),\n            query_params,\n        )\n        rows = []\n        data = {}\n        for row in res:\n            rows.append(dict(count=row[1], year=year, ugc=row[0]))\n            data[row[0]] = row[1]\n        ctx[\"title\"] = f\"Count for {year}\"\n        ctx[\"lblformat\"] = \"%.0f\"\n        datavar = \"count\"\n    elif varname == \"events\":\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n        with data as (\n            select distinct ugc, date(issue) from warnings\n            WHERE {sqlfilter} phenomena = :ph and significance = :sig\n            and issue >= :sdate and issue < :edate\n        )\n        SELECT ugc, count(*) from data GROUP by ugc\n        \"\"\",\n                sqlfilter=sqlfilter,\n            ),\n            query_params,\n        )\n        rows = []\n        data = {}\n        for row in res:\n            rows.append(dict(count=row[1], year=year, ugc=row[0]))\n            data[row[0]] = row[1]\n        ctx[\"title\"] = (\n            f\"{sdate:%-d %b %Y}-{edate:%-d %b %Y} Days with 1+ Events of\"\n        )\n        ctx[\"lblformat\"] = \"%.0f\"\n        datavar = \"count\"\n    elif varname == \"total\":\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n            select ugc, count(*), min(issue at time zone 'UTC'),\n            max(issue at time zone 'UTC') from warnings\n            WHERE {sqlfilter} phenomena = :ph and significance = :sig\n            and issue >= :sdate and issue <= :edate\n            GROUP by ugc\n            \"\"\",\n                sqlfilter=sqlfilter,\n            ),\n            query_params,\n        )\n        rows = []\n        data = {}\n        for row in res:\n            rows.append(\n                dict(\n                    count=row[1],\n                    year=year,\n                    ugc=row[0],\n                    minissue=row[2],\n                    maxissue=row[3],\n                )\n            )\n            data[row[0]] = row[1]\n        ctx[\"title\"] = \"Total\"\n        ctx[\"subtitle\"] = (\n            f\" between {sdate:%d %b %Y %H%M} and {edate:%d %b %Y %H%M} UTC\"\n        )\n        ctx[\"lblformat\"] = \"%.0f\"\n        datavar = \"count\"\n    elif varname == \"hour\":\n        res = conn.execute(\n            sql_helper(\"\"\"\n        WITH data as (\n        SELECT ugc, issue at time zone tzname as v\n        from warnings w JOIN stations t\n        ON (w.wfo =\n            (case when length(t.id) = 4 then substr(t.id, 1, 3) else t.id end))\n        WHERE t.network = 'WFO' and\n        phenomena = :ph and significance = :sig and\n        issue >= :sdate and issue < :edate),\n        agg as (\n            SELECT ugc, extract(hour from v) as hr, count(*) from data\n            GROUP by ugc, hr),\n        ranks as (\n            SELECT ugc, hr, rank() OVER (PARTITION by ugc ORDER by count DESC)\n            from agg)\n\n        SELECT ugc, hr from ranks where rank = 1\n        \"\"\"),\n            query_params,\n        )\n        rows = []\n        data = {}\n        ctx[\"labels\"] = {}\n        midnight = datetime(2000, 1, 1)\n        for row in res:\n            rows.append(dict(hour=int(row[1]), ugc=row[0]))\n            data[row[0]] = row[1]\n            ctx[\"labels\"][row[0]] = (\n                midnight + timedelta(hours=int(row[1]))\n            ).strftime(\"%-I %p\")\n        ctx[\"title\"] = (\n            f\"Most Freq. Issue Hour: {sdate:%d %b %Y} and {edate:%d %b %Y}\"\n        )\n        datavar = \"hour\"\n    elif varname == \"yearavg\":\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n            select ugc, count(*), min(issue at time zone 'UTC'),\n            max(issue at time zone 'UTC') from warnings\n            WHERE {sqlfilter} phenomena = :ph and significance = :sig\n            and issue >= :sdate and issue <= :edate\n            GROUP by ugc\n            \"\"\",\n                sqlfilter=sqlfilter,\n            ),\n            query_params,\n        )\n        rows = []\n        data = {}\n        minv = datetime(2050, 1, 1)\n        maxv = datetime(1986, 1, 1)\n        for row in res:\n            if row[2] < minv:\n                minv = row[2]\n            if row[3] > maxv:\n                maxv = row[3]\n            rows.append(\n                dict(\n                    count=row[1],\n                    year=year,\n                    ugc=row[0],\n                    minissue=row[2],\n                    maxissue=row[3],\n                )\n            )\n            data[row[0]] = row[1]\n        ctx[\"title\"] = f\"Yearly Avg: {minv:%d %b %Y} and {maxv:%d %b %Y}\"\n        ctx[\"lblformat\"] = \"%.2f\"\n        datavar = \"count\"\n    else:  # period\n        if sdate.strftime(\"%m%d\") > edate.strftime(\"%m%d\"):\n            daylimiter = (\n                \"and (to_char(issue, 'mmdd') >= :sday \"\n                \"or to_char(issue, 'mmdd') < :eday) \"\n            )\n        else:\n            daylimiter = (\n                \"and to_char(issue, 'mmdd') >= :sday \"\n                \"and to_char(issue, 'mmdd') < :eday \"\n            )\n        aggstat = varname.replace(\"period\", \"\")\n        query_params[\"sts\"] = date(year, 1, 1)\n        query_params[\"ets\"] = date(year2 + 1, 1, 1)\n        query_params[\"sday\"] = sdate.strftime(\"%m%d\")\n        query_params[\"eday\"] = edate.strftime(\"%m%d\")\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"WITH data as (\n        select ugc, vtec_year as year,\n        count(*), min(issue at time zone 'UTC') as nv,\n        max(issue at time zone 'UTC') as mv from warnings\n        WHERE {sqlfilter} phenomena = :ph and\n        significance = :sig\n        and issue >= :sts and issue <= :ets {daylimiter}\n        GROUP by ugc, year\n        )\n        SELECT ugc, sum(count) as total, {aggstat}(count) as datum,\n        min(nv) as minvalid, max(mv) as maxvalid,\n        count(*)::int as years from data GROUP by ugc\n        \"\"\",\n                daylimiter=daylimiter,\n                aggstat=aggstat,\n                sqlfilter=sqlfilter,\n            ),\n            conn,\n            params=query_params,\n            index_col=\"ugc\",\n        )\n        if df.empty:\n            raise NoDataFound(\"No events found for query.\")\n        df[\"minvalid\"] = pd.to_datetime(df[\"minvalid\"])\n        df[\"maxvalid\"] = pd.to_datetime(df[\"maxvalid\"])\n        minv = df[\"minvalid\"].min()\n        maxv = df[\"maxvalid\"].max()\n        ctx[\"title\"] = (\n            f\"Yearly {aggstat} between {minv:%d %b} and {maxv:%d %b} \"\n            f\"[{minv.year}-{maxv.year}]\"\n        )\n        datavar = \"datum\"\n        if varname == \"periodavg\":\n            data = df[\"total\"].to_dict()\n            datavar = \"total\"\n        elif varname == \"periodmin\":\n            years = maxv.year - minv.year + 1\n            df.loc[df[\"years\"] != years, \"datum\"] = 0\n            data = df[\"datum\"].to_dict()\n        else:\n            data = df[\"datum\"].to_dict()\n\n    if df is None and not rows:\n        raise NoDataFound(\"Sorry, no data found for query!\")\n    if df is None:\n        df = pd.DataFrame(rows)\n    if varname in [\"yearavg\", \"periodavg\"]:\n        years = maxv.year - minv.year + 1\n        df[\"average\"] = df[datavar] / years\n        for key, item in data.items():\n            data[key] = round(item / float(years), 2)\n        maxv = df[\"average\"].max()\n        if ctx.get(\"interval\") is not None:\n            interval = float(ctx[\"interval\"])\n            bins = np.arange(0, interval * 10.1, interval)\n            bins[0] = 0.01\n        else:\n            for delta in [500, 50, 5, 1, 0.5, 0.05]:\n                bins = np.arange(0, (maxv + 1.0) * 1.05, delta)\n                if len(bins) > 8:\n                    break\n            if len(bins) > 8:\n                bins = bins[:: int(len(bins) / 8.0)]\n            bins[0] = 0.01\n        ctx[\"units\"] = \"count per year\"\n    elif varname == \"hour\":\n        bins = list(range(25))\n        ctx[\"units\"] = \"hour of day\"\n    else:\n        bins = list(\n            np.arange(np.min(df[datavar][:]), np.max(df[datavar][:]) + 2, 1)\n        )\n        if len(bins) < 3:\n            bins.append(bins[-1] + 1)\n        if len(bins) > 8:\n            bins = np.linspace(\n                np.min(df[datavar][:]),\n                np.max(df[datavar][:]) + 2,\n                8,\n                dtype=\"i\",\n            )\n        ctx[\"units\"] = \"count\"\n        ctx[\"extend\"] = \"neither\"\n    ctx[\"bins\"] = bins\n    ctx[\"data\"] = data\n    ctx[\"df\"] = df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    # Covert datetime to UTC\n    ctx[\"sdate\"] = ctx[\"sdate\"].replace(tzinfo=timezone.utc)\n    ctx[\"edate\"] = ctx[\"edate\"].replace(tzinfo=timezone.utc)\n    state = ctx[\"state\"]\n    phenomena = ctx[\"phenomena\"]\n    significance = ctx[\"significance\"]\n    station = ctx[\"station\"][:4]\n    t = ctx[\"t\"]\n    ilabel = ctx[\"ilabel\"] == \"yes\"\n    geo = ctx[\"geo\"]\n    grid = None\n    aff = None\n    crs = None\n    if geo == \"ugc\":\n        do_ugc(ctx)\n    elif geo == \"polygon\":\n        grid, aff, crs = get_raster(ctx)\n\n    subtitle = f\"based on IEM Archives {ctx.get('subtitle', '')}\"\n    if t == \"cwa\":\n        subtitle = (\n            f\"Plotted for {ctx['_nt'].sts[station]['name']} ({station}), \"\n            f\"{subtitle}\"\n        )\n    elif t == \"fema\":\n        subtitle = f\"Plotted for FEMA Region {ctx['fema']}, {subtitle}\"\n    elif t == \"conus\":\n        subtitle = f\"Plotted for Contiguous US, {subtitle}\"\n    else:\n        subtitle = f\"Plotted for {state_names[state]}, {subtitle}\"\n    title = (\n        f\"{ctx['title']} {vtec.get_ps_string(phenomena, significance)} \"\n        f\"({phenomena}.{significance})\"\n    )\n    mp = MapPlot(\n        apctx=ctx,\n        sector=ctx[\"t\"] if ctx[\"t\"] != \"fema\" else \"fema_region\",\n        state=state,\n        fema_region=int(ctx[\"fema\"]),\n        cwa=station if len(station) == 3 else station[1:],\n        axisbg=\"white\",\n        title=title,\n        subtitle=subtitle,\n        nocaption=True,\n        titlefontsize=16,\n    )\n    cmap = get_cmap(ctx[\"cmap\"])\n    cmap.set_under(\"white\")\n    if geo == \"ugc\":\n        if ctx[\"v\"] == \"hour\":\n            cl = [\n                \"Mid\",\n                \"\",\n                \"2 AM\",\n                \"\",\n                \"4 AM\",\n                \"\",\n                \"6 AM\",\n                \"\",\n                \"8 AM\",\n                \"\",\n                \"10 AM\",\n                \"\",\n                \"Noon\",\n                \"\",\n                \"2 PM\",\n                \"\",\n                \"4 PM\",\n                \"\",\n                \"6 PM\",\n                \"\",\n                \"8 PM\",\n                \"\",\n                \"10 PM\",\n                \"\",\n                \"\",\n            ]\n            mp.fill_ugcs(\n                ctx[\"data\"],\n                bins=ctx[\"bins\"],\n                cmap=cmap,\n                ilabel=ilabel,\n                labels=ctx[\"labels\"],\n                clevstride=2,\n                clevlabels=cl,\n                labelbuffer=1,  # Texas yall\n                extend=\"neither\",\n                discontinued=True,\n                is_firewx=(phenomena == \"FW\"),\n            )\n        else:\n            mp.fill_ugcs(\n                ctx[\"data\"],\n                bins=ctx[\"bins\"],\n                cmap=cmap,\n                ilabel=ilabel,\n                lblformat=ctx.get(\"lblformat\", \"%s\"),\n                labelbuffer=1,  # Texas yall\n                extend=ctx.get(\"extend\", \"both\"),\n                discontinued=True,\n                is_firewx=(phenomena == \"FW\"),\n            )\n    else:\n        mp.imshow(\n            grid,\n            aff,\n            crs,\n            clevs=ctx[\"bins\"],\n            cmap=cmap,\n            units=ctx[\"units\"],\n            extend=ctx.get(\"extend\", \"both\"),\n        )\n        if ctx[\"drawc\"] == \"yes\":\n            mp.drawcounties()\n\n    return mp.fig, ctx[\"df\"]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p91.py",
    "content": "\"\"\"\nThis plot produces statistics on min, max, and\naverage values of a variable over a window of days.  The labels get\na bit confusing, but we are looking for previous periods of time with\ntemperature\nabove or below a given threshold.  For precipitation, it is only a period\nwith each day above a given threshold and the average over that period.\n<a href=\"/plotting/auto/?q=216\">Autoplot 216</a>\nprovides actual streaks and yearly maximum values.\n\"\"\"\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.plot import figure_axes\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"high\": \"High Temperature\",\n    \"low\": \"Low Temperature\",\n    \"precip\": \"Precipitation\",\n    \"snow\": \"Snowfall\",\n    \"snowd\": \"Snow Depth\",\n}\n\nUNITS = {\n    \"precip\": \"inch\",\n    \"snow\": \"inch\",\n    \"snowd\": \"inch\",\n    \"high\": \"F\",\n    \"low\": \"F\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"precip\",\n            label=\"Which Variable:\",\n            options=PDICT,\n        ),\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"coop\")\ndef plotter(ctx: dict, conn: Connection | None = None):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"var\"]\n\n    rows = []\n    for dy in range(1, 32):\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n            with data as (\n            select day,\n            avg({varname}) OVER\n                (ORDER by day ASC rows between :d1 preceding and current row),\n            min({varname}) OVER\n                (ORDER by day ASC rows between :d1 preceding and current row),\n            max({varname}) OVER\n                (ORDER by day ASC rows between :d1 preceding and current row)\n            from alldata where station = :station)\n        SELECT max(avg), min(avg), max(min), min(min), max(max), min(max)\n        from data\n        \"\"\",\n                varname=varname,\n            ),\n            {\"d1\": dy - 1, \"station\": station},\n        )\n        row = res.fetchone()\n        rows.append(\n            dict(\n                days=dy,\n                highest_avg=row[0],\n                lowest_avg=row[1],\n                highest_min=row[2],\n                lowest_min=row[3],\n                highest_max=row[4],\n                lowest_max=row[5],\n            )\n        )\n    df = pd.DataFrame(rows)\n\n    title = (\n        f\"{ctx['_sname']} Statistics of {PDICT.get(varname)} \"\n        \"over 1-31 Consecutive Days\"\n    )\n    fig, ax = figure_axes(title=title, apctx=ctx)\n    if varname == \"precip\":\n        ax.plot(\n            np.arange(1, 32),\n            df[\"highest_avg\"],\n            color=\"b\",\n            label=\"Highest Average\",\n            lw=2,\n        )\n        ax.plot(\n            np.arange(1, 32),\n            df[\"highest_min\"],\n            color=\"g\",\n            label=\"Consec Days Over\",\n            lw=2,\n        )\n        ax.plot(\n            np.arange(1, 32),\n            df[\"lowest_min\"],\n            color=\"r\",\n            label=\"Consec Days Under\",\n            lw=2,\n        )\n    else:\n        ax.plot(\n            np.arange(1, 32), df[\"highest_avg\"], label=\"Highest Average\", lw=2\n        )\n        ax.plot(\n            np.arange(1, 32), df[\"lowest_avg\"], label=\"Lowest Average\", lw=2\n        )\n        ax.plot(\n            np.arange(1, 32), df[\"highest_min\"], label=\"Highest Above\", lw=2\n        )\n        ax.plot(np.arange(1, 32), df[\"lowest_max\"], label=\"Lowest Below\", lw=2)\n    ax.set_ylabel(f\"{PDICT.get(varname)} ({UNITS.get(varname)})\")\n    ax.set_xlabel(\"Consecutive Days\")\n    ax.grid(True)\n    ax.set_xlim(0.5, 31.5)\n\n    # Shrink current axis's height by 10% on the bottom\n    box = ax.get_position()\n    ax.set_position(\n        [box.x0, box.y0 + box.height * 0.15, box.width, box.height * 0.85]\n    )\n\n    ax.legend(\n        loc=\"upper center\",\n        bbox_to_anchor=(0.5, -0.1),\n        fancybox=True,\n        shadow=True,\n        ncol=3,\n        scatterpoints=1,\n        fontsize=12,\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p92.py",
    "content": "\"\"\"\nThis map depicts the number of days since a\nWeather Forecast Office has issued a given VTEC product.  You can\nset the plot to a retroactive date, which computes the number of number\nof days prior to that date.\n\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws import vtec\nfrom pyiem.plot.geoplot import MapPlot\nfrom pyiem.util import utc\n\nPDICT = {\n    \"yes\": \"Only Emergencies\",\n    \"all\": \"All Events\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 3600}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"phenomena\",\n            name=\"phenomena\",\n            default=\"TO\",\n            label=\"Select Watch/Warning Phenomena Type:\",\n        ),\n        dict(\n            type=\"significance\",\n            name=\"significance\",\n            default=\"W\",\n            label=\"Select Watch/Warning Significance Level:\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"all\",\n            label=\"For TOR/FFW Warnings, plot emergencies?\",\n            name=\"e\",\n        ),\n        dict(\n            type=\"date\",\n            default=date.today().strftime(\"%Y/%m/%d\"),\n            optional=True,\n            label=\"Retroactive Date of Plot:\",\n            name=\"edate\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    bins = [0, 1, 14, 31, 91, 182, 273, 365, 730, 1460, 2920, 3800]\n    phenomena = ctx[\"phenomena\"]\n    significance = ctx[\"significance\"]\n    edate = ctx.get(\"edate\")\n    emerg_extra = \" and is_emergency \" if ctx[\"e\"] == \"yes\" else \"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        if edate is not None:\n            edate = utc(edate.year, edate.month, edate.day, 0, 0)\n            res = conn.execute(\n                sql_helper(\n                    \"\"\"\n            select wfo,  extract(days from (date(:edate) - max(issue))) as m,\n            max(date(issue))\n            from warnings where significance = :sig and phenomena = :phenom\n            and issue < :edate {emerg_extra}\n            GROUP by wfo ORDER by m ASC\n            \"\"\",\n                    emerg_extra=emerg_extra,\n                ),\n                {\n                    \"sig\": significance,\n                    \"phenom\": phenomena,\n                    \"edate\": edate,\n                },\n            )\n        else:\n            res = conn.execute(\n                sql_helper(\n                    \"\"\"\n            select wfo,  extract(days from ('TODAY'::date - max(issue))) as m,\n            max(date(issue))\n            from warnings where significance = :sig and phenomena = :phenom\n            {emerg_extra} GROUP by wfo ORDER by m ASC\n            \"\"\",\n                    emerg_extra=emerg_extra,\n                ),\n                {\"sig\": significance, \"phenom\": phenomena},\n            )\n            edate = utc()\n\n        if res.rowcount == 0:\n            raise NoDataFound(\n                \"No Events Found for \"\n                f\"{vtec.get_ps_string(phenomena, significance)} \"\n                f\"({phenomena}.{significance})\"\n            )\n        data = {}\n        rows = []\n        for row in res:\n            rows.append(dict(wfo=row[0], days=row[1], date_central=row[2]))\n            data[row[0]] = max([row[1], 0])\n    df = pd.DataFrame(rows)\n    df = df.set_index(\"wfo\")\n\n    ee = \" (Emergency) \" if ctx[\"e\"] == \"yes\" else \"\"\n    mp = MapPlot(\n        sector=\"nws\",\n        axisbg=\"white\",\n        nocaption=True,\n        apctx=ctx,\n        title=(\n            f\"Days since Last {vtec.get_ps_string(phenomena, significance)}\"\n            f\"{ee} by NWS Office\"\n        ),\n        subtitle=f\"Valid {edate:%d %b %Y %H%M} UTC\",\n    )\n    mp.fill_cwas(\n        data,\n        bins=bins,\n        ilabel=True,\n        units=\"Days\",\n        lblformat=\"%.0f\",\n        labelbuffer=0,\n    )\n\n    return mp.fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p93.py",
    "content": "\"\"\"\nCaution: This plot takes a bit of time to\ngenerate. This plot displays a histogram of hourly observations.\n<strong>Only the routine hourly observations are considered</strong>,\nso specials or multiple observations per hour are not considered.\nThe connecting lines between the dots are to help readability. In the\ncase of wind chill, the year shown is for the winter season actual year\nwith December contained within.\n\n<p>This form provides an option for the case of wind chill and heat index\nto only include cases that are additive.  What this means is to only\ninclude observations where the wind chill temperature is colder than the\nair temperature or when the heat index temperature is warmer than the\nair temperature.</p>\n\n<p>This application only considers one observation per hour.  In the case\nof multiple observations within an hour, a simple average of the found\nvalues is used.  In the future, the hope is to limit the considered data\nto the \"synoptic\" observation at the top of the hour, but we are not there\nyet.</p>\n\"\"\"\n\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nPDICT = {\n    \"yes\": \"Yes, Include only Year to Date period each year\",\n    \"no\": \"No, Include all available data for each year\",\n    \"custom\": \"Specify a custom date range\",\n}\nVDICT = {\n    \"tmpf\": \"Air Temperature\",\n    \"tmpf_cold\": \"Air Temperature :: Cold Values\",\n    \"dwpf\": \"Dew Point Temperature\",\n    \"dwpf_cold\": \"Dew Point Temperature :: Cold Values\",\n    \"heatindex\": \"Heat Index\",\n    \"windchill\": \"Wind Chill Index\",\n    \"gust\": \"Wind Gust\",\n}\nLEVELS = {\n    \"tmpf\": np.arange(85, 115),\n    \"dwpf\": np.arange(60, 85),\n    \"heatindex\": np.arange(80, 121),\n    \"windchill\": np.arange(-50, 1),\n    \"gust\": np.arange(30, 71),\n}\nOPTDICT = {\n    \"no\": \"No, only include times when heatindex/windchill is additive\",\n    \"yes\": \"Yes, include all observations\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"year\",\n            min=1973,\n            default=1973,\n            name=\"syear\",\n            label=\"Start year (if data available) for plot:\",\n        ),\n        dict(\n            type=\"year\",\n            min=1973,\n            default=date.today().year,\n            name=\"eyear\",\n            label=\"End year (inclusive, if data available) for plot:\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            name=\"ytd\",\n            default=\"no\",\n            label=\"Include Only Year to Date Data?\",\n        ),\n        {\n            \"type\": \"sday\",\n            \"name\": \"sday\",\n            \"default\": \"0101\",\n            \"label\": \"Start Date for Custom Date Range:\",\n        },\n        {\n            \"type\": \"sday\",\n            \"name\": \"eday\",\n            \"default\": \"1231\",\n            \"label\": \"Inclusive End Date for Custom Date Range:\",\n        },\n        dict(\n            type=\"year\",\n            min=1973,\n            default=date.today().year,\n            name=\"year\",\n            label=\"Year to Highlight:\",\n        ),\n        dict(\n            type=\"select\",\n            options=VDICT,\n            name=\"var\",\n            default=\"heatindex\",\n            label=\"Select variable to plot:\",\n        ),\n        dict(\n            type=\"select\",\n            options=OPTDICT,\n            name=\"inc\",\n            default=\"no\",\n            label=(\n                \"Include cases where windchill or heatindex is not additive\"\n            ),\n        ),\n        {\n            \"type\": \"int\",\n            \"min\": 0,\n            \"max\": 99999,\n            \"name\": \"ylimit\",\n            \"default\": 0,\n            \"label\": \"Y Axis Hours Limit (0 for automatic):\",\n        },\n    ]\n    return desc\n\n\ndef get_doylimit(ytd: str, varname: str, ctx: dict):\n    \"\"\"Get the SQL limiter\"\"\"\n    if ytd == \"no\":\n        return \"\"\n    if ytd == \"custom\":\n        if ctx[\"sday\"] < ctx[\"eday\"]:\n            return (\n                \"and extract(doy from valid) >= extract(doy from :sday) \"\n                \"and extract(doy from valid) <= extract(doy from :eday) \"\n            )\n        return (\n            \"and (extract(doy from valid) >= extract(doy from :sday) \"\n            \"or extract(doy from valid) <= extract(doy from :eday)) \"\n        )\n    if varname not in [\"windchill\", \"tmpf_cold\", \"dwpf_cold\"]:\n        return \"and extract(doy from valid) < extract(doy from 'TODAY'::date)\"\n    if date.today().month > 7:\n        res = \"and extract(doy from valid) < extract(doy from 'TODAY'::date) \"\n        if varname in [\"windchill\", \"tmpf_cold\", \"dwpf_cold\"]:\n            res += \"and extract(month from valid) > 6\"\n        return res\n\n    return (\n        \"and (extract(doy from valid) < extract(doy from 'TODAY'::date) \"\n        \"or extract(month from valid) > 6)\"\n    )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    highlightyear = ctx[\"year\"]\n    sdate = date(ctx[\"syear\"], 1, 1)\n    edate = date(ctx[\"eyear\"] + 1, 1, 1)\n    ytd = ctx[\"ytd\"]\n    varname = ctx[\"var\"]\n    inc = ctx[\"inc\"]\n    doylimiter = get_doylimit(ytd, varname, ctx)\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(f\"\"\"\n            SELECT valid at time zone 'UTC' as valid,\n            tmpf::int as tmpf, gust * 1.15 as gust,\n            dwpf::int as dwpf, feel\n            from alldata WHERE station = :station\n            and dwpf <= tmpf and valid > :sdate and valid < :edate\n            and report_type = 3 {doylimiter}\"\"\"),\n            conn,\n            params={\n                \"sday\": ctx[\"sday\"],\n                \"eday\": ctx[\"eday\"],\n                \"station\": station,\n                \"sdate\": sdate,\n                \"edate\": edate,\n            },\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    bs = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if bs is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    df[\"year\"] = df[\"valid\"].dt.year\n\n    df2 = df\n    title2 = VDICT[varname]\n    compop = np.greater_equal\n    inctitle = \"\"\n    legloc = 1\n    if varname == \"heatindex\":\n        df[varname] = df[\"feel\"]\n        inctitle = \" [All Obs Included]\"\n        if inc == \"no\":\n            df2 = df[df[\"feel\"] > df[\"tmpf\"]]\n            inctitle = \" [Only Additive]\"\n        else:\n            df2 = df\n        if df2.empty:\n            raise NoDataFound(\"Failed to find any data after applying check\")\n        maxval = int(df2[\"feel\"].max() + 1)\n        LEVELS[varname] = np.arange(maxval - 31, maxval)\n    elif varname in [\"windchill\", \"tmpf_cold\", \"dwpf_cold\"]:\n        legloc = 2\n        if varname == \"windchill\":\n            df[varname] = df[\"feel\"]\n        else:\n            df[varname] = df[varname[:4]]\n        compop = np.less_equal\n        df[\"year\"] = df[\"valid\"].apply(\n            lambda x: (x.year - 1) if x.month < 7 else x.year\n        )\n        inctitle = \" [All Obs Included]\"\n        if varname == \"windchill\" and inc == \"no\":\n            df2 = df[df[\"feel\"] < df[\"tmpf\"]]\n            inctitle = \" [Only Additive]\"\n        else:\n            df2 = df\n        minval = int(df2[varname].min() - 1)\n        LEVELS[varname] = np.arange(minval, minval + 51)\n    elif varname == \"gust\":\n        pass\n    else:\n        maxval = int(df2[varname].max() + 1)\n        LEVELS[varname] = np.arange(maxval - 31, maxval)\n\n    minyear = df[\"year\"].min()\n    maxyear = df[\"year\"].max()\n    years = float((maxyear - minyear) + 1)\n    x = []\n    y = []\n    y2 = []\n    title = \"\"\n    if varname in [\"windchill\", \"tmpf_cold\", \"dwpf_cold\"]:\n        title = \"1 Jul \"\n    title = f\"{title}till {date.today():%-d %b}\"\n    title = \"Entire Year\" if ytd == \"no\" else title\n    if ytd == \"custom\":\n        title = f\"Custom Range: {ctx['sday']:%-d %b} thru {ctx['eday']:%-d %b}\"\n    title = (\n        f\"{ctx['_sname']} ({minyear}-{maxyear})\\n\"\n        f\"{title2.split('::')[0]} Histogram ({title}){inctitle}\"\n    )\n    fig, ax = figure_axes(title=title, apctx=ctx)\n    ax.set_position([0.08, 0.1, 0.62, 0.8])\n    yloc = 0.95\n    xloc = 1.13\n    yrlabel = (\n        f\"{highlightyear}\"\n        if varname not in [\"windchill\", \"tmpf_cold\", \"dwpf_cold\"]\n        else f\"{highlightyear}-{highlightyear + 1}\"\n    )\n    ax.text(\n        xloc + 0.08, yloc + 0.04, \"Avg:\", transform=ax.transAxes, color=\"b\"\n    )\n    ax.text(\n        xloc + 0.21, yloc + 0.04, yrlabel, transform=ax.transAxes, color=\"r\"\n    )\n    df3 = df2[df2[\"year\"] == highlightyear]\n    for level in LEVELS[varname]:\n        x.append(level)\n        y.append(len(df2[compop(df2[varname], level)].index) / years)\n        y2.append(len(df3[compop(df3[varname], level)].index))\n\n        if level % 2 == 0:\n            ax.text(xloc, yloc, f\"{level}\", transform=ax.transAxes)\n            ax.text(\n                xloc + 0.08,\n                yloc,\n                f\"{y[-1]:.1f}\",\n                transform=ax.transAxes,\n                color=\"b\",\n            )\n            ax.text(\n                xloc + 0.21,\n                yloc,\n                f\"{y2[-1]:.0f}\",\n                transform=ax.transAxes,\n                color=\"r\",\n            )\n            yloc -= 0.035\n    ax.text(xloc, yloc, f\"n={len(df2.index)}\", transform=ax.transAxes)\n    for x0, y0, y02 in zip(x, y, y2, strict=False):\n        ax.plot([x0, x0], [y0, y02], color=\"k\")\n    rdf = pd.DataFrame({\"level\": x, \"avg\": y, f\"d{highlightyear}\": y2})\n    x = np.array(x, dtype=np.float64)\n    ax.scatter(x, y, color=\"b\", label=\"Avg\")\n    ax.scatter(x, y2, color=\"r\", label=yrlabel)\n    ax.grid(True)\n    ymax = int(max([max(y), max(y2)]))\n    ax.set_xlim(x[0] - 0.5, x[-1] + 0.5)\n    dy = 24 * (int(ymax / 240) + 1)\n    ax.set_yticks(range(0, ymax, dy))\n    ax.set_ylim(-0.5, (ymax + 5) if ctx[\"ylimit\"] == 0 else ctx[\"ylimit\"])\n    ax2 = ax.twinx()\n    ax2.set_ylim(-0.5, ymax + 5)\n    ax2.set_yticks(range(0, ymax, dy))\n    ax2.set_yticklabels([f\"{s:.0f}\" for s in np.arange(0, ymax, dy) / 24])\n    ax2.set_ylabel(\"Expressed in 24 Hour Days\")\n    ax.set_ylabel(\"Hours Per Year\")\n    unit = \"°F\" if varname != \"gust\" else \"MPH\"\n    ax.set_xlabel(f\"{VDICT[varname].split('::')[0]} {unit}\")\n    ax.legend(loc=legloc, scatterpoints=1)\n    return fig, rdf\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p94.py",
    "content": "\"\"\"\nThis plot looks at the effect of splitting a 24\nhour period at different hours of the day.  Using the hourly temperature\nrecord, we can look at the bias of computing the daily high and low\ntemperature.  Confusing?  Assuming that the 'truth' is a daily high and\nlow computed at midnight, we can compare this value against 24 hour periods\ncomputed for each hour of the day. This plot is one of the main reasons\nthat comparing climate data for a station that changed hour of day\nobservation over the years is problematic.\n\"\"\"\n\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom sqlalchemy.engine import Connection\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        )\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"asos\")\ndef plotter(ctx: dict, conn: Connection | None = None):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n\n    res = conn.execute(\n        sql_helper(\"\"\"\n    WITH obs as (\n        select valid at time zone :tzname + '10 minutes'::interval as v,\n    tmpf from alldata\n    WHERE station = :station and tmpf >= -90 and tmpf < 150),\n    s as (SELECT generate_series(0, 23, 1) || ' hours' as series),\n    daily as (select s.series, v + s.series::interval as t, tmpf from obs, s),\n    sums as (select series, date(t), max(tmpf), min(tmpf) from daily\n    GROUP by series, date)\n\n    SELECT series, avg(max), avg(min) from sums GROUP by series\n    \"\"\"),\n        {\"tzname\": ctx[\"_nt\"].sts[station][\"tzname\"], \"station\": station},\n    )\n    rows = []\n    hrs = range(25)\n    highs = [None] * 25\n    lows = [None] * 25\n    for row in res:\n        i = int(row[0].split()[0])\n        highs[24 - i] = row[1]\n        lows[24 - i] = row[2]\n        rows.append(dict(offset=(24 - i), avg_high=row[1], avg_low=row[2]))\n    if not rows:\n        raise NoDataFound(\"No data found.\")\n    rows.append(dict(offset=0, avg_high=highs[24], avg_low=lows[24]))\n    highs[0] = highs[24]\n    lows[0] = lows[24]\n    df = pd.DataFrame(rows)\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    title = f\"{ctx['_sname']} ({ab.year}-{date.today().year})\"\n    subtitle = \"Bias of 24 Hour 'Day' Split for Average High + Low Temp\"\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    ax.plot(\n        hrs, np.array(highs) - highs[0], label=\"High Temp\", lw=2, color=\"r\"\n    )\n    ax.plot(hrs, np.array(lows) - lows[0], label=\"Low Temp\", lw=2, color=\"b\")\n    ax.set_ylabel(\"Average Temperature Difference °F\")\n    ax.set_xlim(0, 24)\n    ax.set_xticks((0, 4, 8, 12, 16, 20, 24))\n    ax.set_xticklabels((\"Mid\", \"4 AM\", \"8 AM\", \"Noon\", \"4 PM\", \"8 PM\", \"Mid\"))\n    ax.grid(True)\n    ax.set_xlabel(\"Hour Used for 24 Hour Summary\")\n\n    ax.legend(loc=\"best\")\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p95.py",
    "content": "\"\"\"\nThis chart displays the combination of average\ntemperature and total precipitation for one or more months of your choice.\nThe dots are colorized based on the Southern Oscillation Index (SOI) value\nfor a month of your choice.  Many times, users want to compare the SOI\nvalue with monthly totals for a period a few months after the validity of\nthe SOI value.  The thought is that there is some lag time for the impacts\nof a given SOI to be felt in the midwestern US.\n\"\"\"\n\nfrom datetime import date\n\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.cm import ScalarMappable\nfrom pyiem.database import get_dbconn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure, get_cmap\nfrom scipy import stats\n\nPDICT = {\"none\": \"Show all values\", \"hide\": 'Show \"strong\" events'}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"station\",\n            name=\"station\",\n            default=\"IA0000\",\n            label=\"Select Station\",\n            network=\"IACLIMATE\",\n        ),\n        dict(type=\"month\", name=\"month\", default=9, label=\"Start Month:\"),\n        dict(\n            type=\"int\",\n            name=\"months\",\n            default=2,\n            label=\"Number of Months to Average:\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"lag\",\n            default=-3,\n            label=\"Number of Months to Lag for SOI Value:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"h\",\n            default=\"none\",\n            options=PDICT,\n            label=\"Hide/Show week SOI events -0.5 to 0.5\",\n        ),\n        dict(\n            type=\"text\",\n            default=str(date.today().year),\n            name=\"year\",\n            label=\"Year(s) to Highlight in Chart (comma delimited)\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"RdYlGn\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef title(wanted):\n    \"\"\"Make a title\"\"\"\n    t1 = date(2000, wanted[0], 1)\n    t2 = date(2000, wanted[-1], 1)\n    return \"Avg Precip + Temp for %s%s\" % (\n        t1.strftime(\"%B\"),\n        \" thru %s\" % (t2.strftime(\"%B\"),) if wanted[0] != wanted[-1] else \"\",\n    )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    pgconn = get_dbconn(\"coop\")\n    ccursor = pgconn.cursor()\n    station = ctx[\"station\"]\n    lagmonths = ctx[\"lag\"]\n    months = ctx[\"months\"]\n    month = ctx[\"month\"]\n    highyears = [int(x) for x in ctx[\"year\"].split(\",\")]\n    h = ctx[\"h\"]\n\n    wantmonth = month + lagmonths\n    yearoffset = 0\n    if month + lagmonths < 1:\n        wantmonth = 12 + (month + lagmonths)\n        yearoffset = 1\n\n    wanted = []\n    deltas = []\n    for m in range(month, month + months):\n        if m < 13:\n            wanted.append(m)\n            deltas.append(0)\n        else:\n            wanted.append(m - 12)\n            deltas.append(-1)\n\n    elnino = {}\n    ccursor.execute(\"SELECT monthdate, soi_3m, anom_34 from elnino\")\n    for row in ccursor:\n        if row[0].month != wantmonth:\n            continue\n        elnino[row[0].year + yearoffset] = dict(soi_3m=row[1], anom_34=row[2])\n\n    ccursor.execute(\n        \"SELECT year, month, sum(precip), avg((high+low)/2.) \"\n        \"from alldata where station = %s and precip is not null and \"\n        \"high is not null and low is not null GROUP by year, month\",\n        (station,),\n    )\n    if ccursor.rowcount == 0:\n        raise NoDataFound(\"No Data Found.\")\n    yearly = {}\n    for row in ccursor:\n        (_year, _month, _precip, _temp) = row\n        if _month not in wanted:\n            continue\n        effectiveyear = _year + deltas[wanted.index(_month)]\n        nino = elnino.get(effectiveyear, {}).get(\"soi_3m\", None)\n        if nino is None:\n            continue\n        data = yearly.setdefault(\n            effectiveyear, dict(precip=0, temp=[], nino=nino)\n        )\n        data[\"precip\"] += _precip\n        data[\"temp\"].append(float(_temp))\n\n    title2 = f\"{ctx['_sname']} :: {title(wanted)}\"\n    subtitle = \"%s SOI (3 month average)\" % (\n        date(2000, wantmonth, 1).strftime(\"%B\"),\n    )\n    fig = figure(title=title2, subtitle=subtitle, apctx=ctx)\n    ax = fig.add_axes((0.07, 0.12, 0.53, 0.75))\n\n    cmap = get_cmap(ctx[\"cmap\"])\n    zdata = np.arange(-2.0, 2.1, 0.5)\n    norm = mpcolors.BoundaryNorm(zdata, cmap.N)\n    rows = []\n    xs = []\n    ys = []\n    for year, item in yearly.items():\n        x = item[\"precip\"]\n        y = np.average(item[\"temp\"])\n        xs.append(x)\n        ys.append(y)\n        val = yearly[year][\"nino\"]\n        c = cmap(norm([val])[0])\n        if h == \"hide\" and -0.5 < val < 0.5:\n            ax.scatter(\n                x,\n                y,\n                facecolor=\"#EEEEEE\",\n                edgecolor=\"#EEEEEE\",\n                s=30,\n                zorder=2,\n                marker=\"s\",\n            )\n        else:\n            ax.scatter(\n                x, y, facecolor=c, edgecolor=\"k\", s=60, zorder=3, marker=\"o\"\n            )\n        if year in highyears:\n            ax.text(x, y + 0.2, f\"{year}\", ha=\"center\", va=\"bottom\", zorder=5)\n        rows.append(dict(year=year, precip=x, tmpf=y, soi3m=val))\n\n    if not rows:\n        raise NoDataFound(\"Failed to find any data.\")\n    df = pd.DataFrame(rows)\n    ax.axhline(np.average(ys), lw=2, color=\"k\", linestyle=\"-.\", zorder=2)\n    ax.axvline(np.average(xs), lw=2, color=\"k\", linestyle=\"-.\", zorder=2)\n\n    sm = ScalarMappable(norm, cmap)\n    sm.set_array(zdata)\n    cb = fig.colorbar(sm, extend=\"both\", ax=ax)\n    cb.set_label(\"<-- El Nino :: SOI :: La Nina -->\")\n\n    ax.grid(True)\n    ax.set_xlim(left=-0.01)\n    ax.set_xlabel(\"Total Precipitation [inch], Avg: %.2f\" % (np.average(xs),))\n    ax.set_ylabel(f\"Average Temperature °F, Avg: {np.average(ys):.1f}\")\n    ax2 = fig.add_axes((0.67, 0.55, 0.28, 0.35))\n    ax2.scatter(df[\"soi3m\"].values, df[\"tmpf\"].values)\n    ax2.set_xlabel(\"<-- El Nino :: SOI :: La Nina -->\")\n    ax2.set_ylabel(\"Avg Temp °F\")\n    slp, intercept, r_value, _, _ = stats.linregress(\n        df[\"soi3m\"].values, df[\"tmpf\"].values\n    )\n    y1 = -2.0 * slp + intercept\n    y2 = 2.0 * slp + intercept\n    ax2.plot([-2, 2], [y1, y2])\n    ax2.text(\n        0.97,\n        0.9,\n        f\"R$^2$={r_value**2:.2f}\",\n        ha=\"right\",\n        transform=ax2.transAxes,\n        bbox=dict(color=\"white\"),\n    )\n    ax2.grid(True)\n\n    ax3 = fig.add_axes((0.67, 0.1, 0.28, 0.35))\n    ax3.scatter(df[\"soi3m\"].values, df[\"precip\"].values)\n    ax3.set_xlabel(\"<-- El Nino :: SOI :: La Nina -->\")\n    ax3.set_ylabel(\"Total Precip [inch]\")\n    slp, intercept, r_value, _, _ = stats.linregress(\n        df[\"soi3m\"].to_numpy(), df[\"precip\"].to_numpy()\n    )\n    y1 = -2.0 * slp + intercept\n    y2 = 2.0 * slp + intercept\n    ax3.plot([-2, 2], [y1, y2])\n    ax3.text(\n        0.97,\n        0.9,\n        f\"R$^2$={(r_value**2):.2f}\",\n        ha=\"right\",\n        transform=ax3.transAxes,\n        bbox=dict(color=\"white\"),\n    )\n    ax3.grid(True)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p96.py",
    "content": "\"\"\"\nThis plot looks at the bias associated with computing\n24 hour precipitation totals using a given hour of the day as the\ndelimiter. This plot will take a number of seconds to generate, so please\nbe patient.  This chart attempts to address the question of if computing\n24 hour precip totals at midnight or 7 AM biases the totals.  Such biases\nare commmon when computing this metric for high or low temperature.\n\"\"\"\n\nfrom datetime import date, timezone\nfrom zoneinfo import ZoneInfo\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom pyiem.util import utc\nfrom sqlalchemy.engine import Connection\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        )\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"iem\")\ndef plotter(ctx: dict, conn: Connection | None = None):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    ts1973 = utc(1973, 1, 1)\n    utcnow = utc()\n    rs = conn.execute(\n        sql_helper(\"\"\"\n    SELECT valid at time zone 'UTC', phour from hourly WHERE\n    iemid = :iemid and phour > 0.009 and valid >= :sts and valid < :ets\n    ORDER by valid ASC\n    \"\"\"),\n        {\n            \"iemid\": ctx[\"_nt\"].sts[station][\"iemid\"],\n            \"sts\": ts1973,\n            \"ets\": utcnow,\n        },\n    )\n    if rs.rowcount == 0:\n        raise NoDataFound(\"No Data Found.\")\n\n    # Create storage for the data\n    days = (utcnow.year - 1973 + 1) * 366\n    data = np.zeros((days * 24), \"f\")\n    minvalid = None\n    # make ts1973 naive\n    ts1973 = ts1973.replace(tzinfo=None)\n    for row in rs:\n        if minvalid is None:\n            minvalid = row[0]\n        data[(row[0] - ts1973).days * 24 + row[0].hour] = row[1]\n\n    lts = utcnow.astimezone(ZoneInfo(ctx[\"_nt\"].sts[station][\"tzname\"]))\n    lts = lts.replace(month=7, hour=0)\n    cnts = [0] * 24\n    avgv = [0] * 24\n    rows = []\n    for hr in range(24):\n        ts = lts.replace(hour=hr)\n        zhour = ts.astimezone(timezone.utc).hour\n        arr = np.reshape(data[zhour : (0 - 24 + zhour)], (days - 1, 24))\n        tots = np.sum(arr, 1)\n        cnts[hr] = np.sum(np.where(tots > 0, 1, 0))\n        avgv[hr] = np.average(tots[tots > 0])\n        rows.append(\n            dict(\n                average_precip=avgv[hr],\n                events=cnts[hr],\n                zhour=zhour,\n                localhour=hr,\n            )\n        )\n\n    df = pd.DataFrame(rows)\n    title = (\n        f\"{ctx['_sname']} ({minvalid.year}-{date.today().year})\\n\"\n        \"Bias of 24 Hour 'Day' Split for Precipitation\"\n    )\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n    acount = np.average(cnts)\n    years = utcnow.year - minvalid.year + 1\n    arc = (np.array(cnts) - acount) / float(years)\n    maxv = max([0 - np.min(arc), np.max(arc)])\n    line = ax.plot(range(24), arc, color=\"b\", label=\"Days Bias\")\n    ax.set_ylim(0 - maxv - 0.2, maxv + 0.2)\n\n    ax2 = ax.twinx()\n    aavg = np.average(avgv)\n    aavgv = np.array(avgv) - aavg\n    l2 = ax2.plot(range(24), aavgv, color=\"r\")\n    maxv = max([0 - np.min(aavgv), np.max(aavgv)])\n    ax2.set_ylim(0 - maxv - 0.01, maxv + 0.01)\n    ax2.set_ylabel(\"Bias with Average 24 Hour Precip [in/day]\", color=\"r\")\n    ax.set_ylabel(\"Bias of Days per Year with Precip\", color=\"b\")\n    ax.set_xlim(0, 24)\n    ax.set_xticks((0, 4, 8, 12, 16, 20, 24))\n    ax.set_xticklabels(\"Mid,4 AM,8 AM,Noon,4 PM,8 PM,Mid\".split(\",\"))\n    ax.grid(True)\n    ax.set_xlabel(\n        \"Hour Used for 24 Hour Summary, \"\n        f\"Timezone: {ctx['_nt'].sts[station]['tzname']}\"\n    )\n    box = ax.get_position()\n    ax.set_position([box.x0, box.y0, box.width * 0.95, box.height])\n    ax2.set_position([box.x0, box.y0, box.width * 0.95, box.height])\n    ax.legend(\n        [line[0], l2[0]],\n        [\"Days Bias\", \"Avg Precip Bias\"],\n        loc=\"best\",\n        fontsize=10,\n    )\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p97.py",
    "content": "\"\"\"\nThis application plots an analysis of station\ndata for a period of your choice.  Spatially aggregated values like those\nfor climate districts and statewide averages are not included.  The IEM\ncomputed climatologies are based on simple daily averages of observations.\n\n<p><strong>Updated 7 Feb 2024:</strong> When plotting snowfall, the application\nrequires a 90% observation coverage for the period of interest.  The issue is\nthat the IEM currently does not estimate snowfall, like it does for high, low,\nand precipitation.\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport geopandas as gpd\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot, centered_bins, get_cmap, pretty_bins\nfrom pyiem.reference import wfo_bounds\nfrom pyiem.util import LOG\n\nPDICT = {\n    \"sector\": \"Plot by Sector / State\",\n    \"wfo\": \"Plot by NWS Weather Forecast Office (WFO)\",\n}\nNCEI_BAD = (\n    \"cgdd_sum gdd_depart gdd_percent cdd65_depart hdd65_depart \"\n    \"csdd86_sum sdd86_depart sdd86_percent\"\n).split()\nPDICT2 = {\n    \"max_high_temp\": \"Maximum High Temperature\",\n    \"avg_high_temp\": \"Average High Temperature\",\n    \"avg_high_depart\": \"Average High Temperature Departure\",\n    \"avg_temp_depart\": \"Average Temperature Departure\",\n    \"avg_temp\": \"Average Temperature\",\n    \"min_low_temp\": \"Minimum Low Temperature\",\n    \"avg_low_temp\": \"Average Low Temperature\",\n    \"avg_low_depart\": \"Average Low Temperature Departure\",\n    \"gdd_sum\": \"Growing Degree Days ($base/$ceil) Total\",\n    \"cgdd_sum\": \"Growing Degree Days ($base/$ceil) Climatology\",\n    \"gdd_depart\": \"Growing Degree Days ($base/$ceil) Departure\",\n    \"gdd_percent\": \"Growing Degree Days ($base/$ceil) Percent of Average\",\n    \"cdd65_sum\": \"Cooling Degree Days (base 65)\",\n    \"cdd65_depart\": \"Cooling Degree Days Departure (base 65)\",\n    \"hdd65_sum\": \"Heating Degree Days (base 65)\",\n    \"hdd65_depart\": \"Heating Degree Days Departure (base 65)\",\n    \"precip_max\": \"Precipitation Daily Maximum\",\n    \"precip_depart\": \"Precipitation Departure\",\n    \"precip_percent\": \"Precipitation Percent of Average\",\n    \"precip_sum\": \"Precipitation Total\",\n    \"snow_depart\": \"Snowfall Departure\",\n    \"snow_percent\": \"Snowfall Percent of Average\",\n    \"snow_sum\": \"Snowfall Total\",\n    \"sdd86_sum\": \"Stress Degree Days (86F) Total\",\n    \"csdd86_sum\": \"Stress Degree Days (86F) Climatology\",\n    \"sdd86_depart\": \"Stress Degree Days (86F) Departure\",\n    \"sdd86_percent\": \"Stress Degree Days (86F) Percent of Average\",\n}\nPDICT4 = {\n    \"yes\": \"Yes, overlay Drought Monitor\",\n    \"no\": \"No, do not overlay Drought Monitor\",\n}\nUNITS = {\n    \"min_low_temp\": \"F\",\n    \"avg_low_temp\": \"F\",\n    \"avg_low_depart\": \"F\",\n    \"avg_high_temp\": \"F\",\n    \"avg_high_depart\": \"F\",\n    \"cgdd_sum\": \"F\",\n    \"gdd_depart\": \"F\",\n    \"gdd_percent\": \"%\",\n    \"gdd_sum\": \"F\",\n    \"csdd86_sum\": \"F\",\n    \"sdd86_depart\": \"F\",\n    \"sdd86_percent\": \"%\",\n    \"sdd86_sum\": \"F\",\n    \"cdd65_sum\": \"F\",\n    \"hdd65_sum\": \"F\",\n    \"cdd65_depart\": \"F\",\n    \"hdd65_depart\": \"F\",\n    \"avg_temp_depart\": \"F\",\n    \"avg_temp\": \"F\",\n    \"precip_max\": \"inch\",\n    \"precip_depart\": \"inch\",\n    \"precip_sum\": \"inch\",\n    \"precip_percent\": \"%\",\n    \"snow_depart\": \"inch\",\n    \"snow_sum\": \"inch\",\n    \"snow_percent\": \"%\",\n}\nPDICT3 = {\n    \"contour\": \"Contour the data\",\n    \"text\": \"Plot just values without contours\",\n}\nPDICT5 = {\"yes\": \"Label Station Values\", \"no\": \"Do Not Label Station Values\"}\nPDICT6 = {\n    \"climate\": \"IEM Climatology 1893-present\",\n    \"climate51\": \"IEM Climatology 1951-present\",\n    \"climate71\": \"IEM Climatology 1971-present\",\n    \"climate81\": \"IEM Climatology 1981-present\",\n    \"ncei_climate91\": \"NCEI Climatology 1991-2020\",\n}\nGDD_KNOWN_BASES = [32, 41, 46, 48, 50, 51, 52]\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = datetime.today() - timedelta(days=1)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"sector\",\n            label=\"Select spatial domain type to plot:\",\n            name=\"d\",\n        ),\n        dict(\n            type=\"csector\", name=\"sector\", default=\"IA\", label=\"Plot Sector:\"\n        ),\n        dict(\n            type=\"networkselect\",\n            default=\"DMX\",\n            network=\"WFO\",\n            label=\"NWS WFO to plot (when selected above for domain):\",\n            name=\"wfo\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"precip_depart\",\n            label=\"Which Variable to Plot:\",\n            options=PDICT2,\n        ),\n        {\n            \"type\": \"text\",\n            \"name\": \"bins\",\n            \"default\": \"0 0.25 0.5 0.75 1\",\n            \"optional\": True,\n            \"label\": \"Hard-code plot bins (space separated) [optional]:\",\n        },\n        dict(\n            type=\"int\",\n            default=50,\n            name=\"gddbase\",\n            label=(\n                \"Growing Degree Day base(F)<br />if you choose a sector \"\n                \"covering more than 10 states, you are limited to values of \"\n                \"32, 41, 46, 48, 50, 51, 52 (long story why)\"\n            ),\n        ),\n        dict(\n            type=\"int\",\n            default=86,\n            name=\"gddceil\",\n            label=(\n                \"Growing Degree Day ceiling(F)<br />if you choose a sector \"\n                \"covering more than 10 states, thist must be 86 \"\n                \"(long story why)\"\n            ),\n        ),\n        dict(\n            type=\"date\",\n            name=\"date1\",\n            default=(today - timedelta(days=30)).strftime(\"%Y/%m/%d\"),\n            label=\"Start Date:\",\n            min=\"1893/01/01\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"usdm\",\n            default=\"no\",\n            label=\"Overlay Drought Monitor\",\n            options=PDICT4,\n        ),\n        dict(\n            type=\"date\",\n            name=\"date2\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"End Date (inclusive):\",\n            min=\"1893/01/01\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"p\",\n            default=\"contour\",\n            label=\"Data Presentation Options\",\n            options=PDICT3,\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"RdYlBu\", label=\"Color Ramp:\"),\n        dict(\n            type=\"select\",\n            options=PDICT5,\n            default=\"yes\",\n            name=\"c\",\n            label=\"Label Values?\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT6,\n            label=(\n                \"Which Climatology to Use?<br />Note that NCEI 1991-2020 \"\n                \"climatology only works with some base plot variables.\"\n            ),\n            default=\"climate51\",\n            name=\"ct\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"cull\",\n            default=\"\",\n            label=(\n                \"Space or comma separated IEM stations ids (ST####) to cull \"\n                \"from the plot.\"\n            ),\n        ),\n    ]\n    return desc\n\n\ndef cull_to_list(vals: str):\n    \"\"\"Convert to a list for culling.\"\"\"\n    res = [\"ZZZZZZ\"]\n    res.extend(\n        val.upper()[:6] for val in vals.replace(\",\", \" \").strip().split()\n    )\n    return res\n\n\ndef compute_tables_wfo(wfo):\n    \"\"\"Figure out which WFOs we need.\"\"\"\n    xmin, ymin, xmax, ymax = wfo_bounds[wfo]\n    # buffer by a \"county\" or two\n    xmin -= 0.5\n    ymin -= 0.5\n    xmax += 0.5\n    ymax += 0.5\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        res = conn.execute(\n            sql_helper(\"\"\"\n    SELECT distinct substr(id, 1, 2) from stations where\n    network ~* 'CLIMATE' and ST_Contains(\n    ST_MakeEnvelope(:xmin, :ymin, :xmax, :ymax, 4326), geom)\"\"\"),\n            {\"xmin\": xmin, \"ymin\": ymin, \"xmax\": xmax, \"ymax\": ymax},\n        )\n        tables = [f\"alldata_{row[0].lower()}\" for row in res]\n    return tables, [xmin, ymin, xmax, ymax]\n\n\ndef replace_gdd_climo(ctx, df, table, date1, date2):\n    \"\"\"Here we are, incredible pain.\"\"\"\n    # Short circuit if we are not doing departures\n    if ctx[\"var\"] in [\"gdd_sum\", \"sdd_sum\"]:\n        return df\n    params = {\n        \"d1\": date1.strftime(\"%m%d\"),\n        \"d2\": date2.strftime(\"%m%d\"),\n        \"gddbase\": ctx[\"gddbase\"],\n        \"gddceil\": ctx[\"gddceil\"],\n    }\n    daylimit = \"sday >= :d1 and sday <= :d2\"\n    if params[\"d1\"] > params[\"d2\"]:\n        daylimit = \"sday >= :d2 or sday <= :d1\"\n    if (date2 - date1) > timedelta(days=365):\n        daylimit = \"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        climo = pd.read_sql(\n            sql_helper(\n                \"\"\"WITH obs as (\n                SELECT station, sday,\n                avg(gddxx(:gddbase, :gddceil, high, low)) as datum\n                from {table} GROUP by station, sday)\n            select station, sum(datum) as gdd from obs\n            WHERE {daylimit} GROUP by station ORDER by station\n            \"\"\",\n                table=table,\n                daylimit=daylimit,\n            ),\n            conn,\n            params=params,\n            index_col=\"station\",\n        )\n    climo.loc[climo[\"gdd\"] == 0, \"gdd\"] = 1\n    df[\"cgdd_sum\"] = climo[\"gdd\"]\n    df[\"gdd_percent\"] = df[\"gdd_sum\"] / df[\"cgdd_sum\"] * 100.0\n    df[\"gdd_depart\"] = df[\"gdd_sum\"] - df[\"cgdd_sum\"]\n    return df\n\n\ndef build_climate_sql(ctx, table):\n    \"\"\"figure out how to get climatology...\"\"\"\n    gddclimocol = \"0\"\n    if ctx[\"gddbase\"] in GDD_KNOWN_BASES:\n        gddclimocol = f\"gdd{ctx['gddbase']}\"\n    stjoin = \"id\"\n    if ctx[\"ct\"] == \"ncei_climate91\":\n        stjoin = \"ncei91\"\n    netlimiter = \"t.network ~* 'CLIMATE'\"\n    if table != \"alldata\":\n        netlimiter = f\"t.network = '{table[-2:].upper()}CLIMATE'\"\n\n    sql = f\"\"\"\n    SELECT t.id as station, to_char(valid, 'mmdd') as sday, precip, high,\n    low, {gddclimocol} as gdd, cdd65, hdd65, snow, sdd86\n    from {ctx[\"ct\"]} c, stations t WHERE c.station = t.{stjoin} and\n    {netlimiter} \"\"\"\n\n    return sql\n\n\ndef get_data(ctx: dict):\n    \"\"\"Compute the data needed for this app.\"\"\"\n    cull = cull_to_list(ctx[\"cull\"])\n    date1 = ctx[\"date1\"]\n    date2 = min([ctx[\"date2\"], date.today()])\n    sector = ctx[\"sector\"]\n    table = f\"alldata_{sector.lower()}\" if len(sector) == 2 else \"alldata\"\n    tables = [table]\n    dfs = []\n    wfo_limiter = \"\"\n    if sector == \"iailin\":\n        tables = [\"alldata_ia\", \"alldata_il\", \"alldata_in\"]\n    elif sector == \"midwest\":\n        tables = [\n            f\"alldata_{x}\"\n            for x in \"nd mn wi mi sd ne ia il in oh ks mo ky\".split()\n        ]\n    if ctx[\"d\"] == \"wfo\":\n        tables, bnds = compute_tables_wfo(ctx[\"wfo\"])\n        wfo_limiter = (\n            f\" and ST_Contains(St_MakeEnvelope({bnds[0]}, {bnds[1]}, \"\n            f\"{bnds[2]}, {bnds[3]}, 4326), geom) \"\n        )\n    if \"alldata\" in tables or len(tables) > 9:\n        if ctx[\"gddbase\"] not in GDD_KNOWN_BASES:\n            raise NoDataFound(\n                f\"GDD Base must be {','.join(str(s) for s in GDD_KNOWN_BASES)}\"\n            )\n        ctx[\"gddceil\"] = 86\n    params = {\n        \"gddbase\": ctx[\"gddbase\"],\n        \"gddceil\": ctx[\"gddceil\"],\n        \"date1\": date1,\n        \"date2\": date2,\n        \"cull\": cull,\n    }\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        for table in tables:\n            netlimiter = \"t.network ~* 'CLIMATE'\"\n            if table != \"alldata\":\n                netlimiter = \"t.network = :network\"\n                params[\"network\"] = f\"{table[-2:].upper()}CLIMATE\"\n            sql = sql_helper(\n                \"\"\"\n                WITH obs as (\n                    SELECT station,\n                    gddxx(:gddbase, :gddceil, high, low) as gdd,\n                    cdd(high, low, 65) as cdd65, hdd(high, low, 65) as hdd65,\n                    case when high > 86 then high - 86 else 0 end as sdd86,\n                    sday, high, low, precip, snow,\n                    (high + low)/2. as avg_temp\n                    from {table} WHERE\n                    day >= :date1 and day <= :date2 and\n                    substr(station, 3, 1) not in ('C', 'K', 'D') and\n                    substr(station, 3, 4) != '0000'\n                    and not (station = ANY(:cull))),\n                climo as ({climatesql}),\n                combo as (\n                    SELECT o.station, o.precip - c.precip as precip_diff,\n                    o.precip as precip, c.precip as cprecip,\n                    o.avg_temp, o.cdd65, o.hdd65,\n                    o.high - c.high as high_diff,\n                    o.low - c.low as low_diff,\n                    o.high, o.low, o.gdd, c.gdd as cgdd,\n                    o.sdd86, c.sdd86 as csdd86,\n                    o.gdd - c.gdd as gdd_diff,\n                    o.cdd65 - c.cdd65 as cdd65_diff,\n                    o.hdd65 - c.hdd65 as hdd65_diff,\n                    o.sdd86 - c.sdd86 as sdd86_diff,\n                    o.avg_temp - (c.high + c.low)/2. as temp_diff,\n                    o.snow as snow, c.snow as csnow,\n                    o.snow - c.snow as snow_diff\n                    from obs o JOIN climo c ON\n                    (o.station = c.station and o.sday = c.sday)),\n                agg as (\n                    SELECT station, count(*) as obs,\n                    avg(avg_temp) as avg_temp,\n                    max(precip) as precip_max,\n                    sum(precip_diff) as precip_depart,\n                    sum(precip) / greatest(sum(cprecip), 0.0001) * 100.\n                        as precip_percent,\n                    sum(snow_diff) as snow_depart,\n                    sum(snow) / greatest(sum(csnow), 0.0001) * 100.\n                        as snow_percent,\n                    sum(precip) as precip, sum(cprecip) as cprecip,\n                    sum(snow) as snow, sum(csnow) as csnow,\n                    avg(high) as avg_high_temp,\n                    avg(high_diff) as avg_high_depart,\n                    avg(low_diff) as avg_low_depart,\n                    avg(low) as avg_low_temp,\n                    max(high) as max_high_temp,\n                    min(low) as min_low_temp, sum(gdd_diff) as gdd_depart,\n                    sum(gdd) / greatest(1, sum(cgdd)) * 100. as gdd_percent,\n                    sum(sdd86_diff) as sdd86_depart,\n                    sum(sdd86) / greatest(1, sum(csdd86)) * 100.\n                        as sdd86_percent,\n                    avg(temp_diff) as avg_temp_depart, sum(gdd) as gdd_sum,\n                    sum(cgdd) as cgdd_sum,\n                    sum(sdd86) as sdd86_sum,\n                    sum(csdd86) as csdd86_sum,\n                    sum(cdd65) as cdd65_sum,\n                    sum(hdd65) as hdd65_sum,\n                    sum(cdd65_diff) as cdd65_depart,\n                    sum(hdd65_diff) as hdd65_depart,\n                    sum(case when snow is not null then 1 else 0 end)\n                        as snow_quorum\n                    from combo GROUP by station)\n\n                SELECT d.station, t.name, t.wfo,\n                avg_temp,\n                precip as precip_sum,\n                cprecip as cprecip_sum,\n                precip_max,\n                precip_depart,\n                precip_percent,\n                snow as snow_sum,\n                csnow as csnow_sum,\n                snow_depart,\n                snow_percent,\n                avg_high_depart,\n                avg_low_depart,\n                min_low_temp,\n                avg_temp_depart,\n                gdd_depart,\n                gdd_sum,\n                gdd_percent,\n                cgdd_sum,\n                sdd86_depart,\n                sdd86_sum,\n                sdd86_percent,\n                csdd86_sum,\n                max_high_temp,\n                avg_high_temp,\n                avg_low_temp,\n                cdd65_sum, hdd65_sum, cdd65_depart, hdd65_depart,\n                ST_x(t.geom) as lon, ST_y(t.geom) as lat,\n                t.geom, obs, snow_quorum\n                from agg d JOIN stations t on (d.station = t.id)\n                WHERE {netlimiter} and t.online {wfo_limiter}\n                \"\"\",\n                table=table,\n                netlimiter=netlimiter,\n                wfo_limiter=wfo_limiter,\n                climatesql=build_climate_sql(ctx, table),\n            )\n            LOG.info(\"Starting %s table query\", table)\n            df = gpd.read_postgis(\n                sql,\n                conn,\n                params=params,\n                index_col=\"station\",\n                geom_col=\"geom\",\n            )  # type: ignore\n            LOG.info(\"Finishing %s table query\", table)\n            if ctx[\"gddbase\"] not in GDD_KNOWN_BASES or ctx[\"gddceil\"] != 86:\n                # We need to compute our own GDD Climatology, Le Sigh\n                df = replace_gdd_climo(ctx, df, table, date1, date2)\n            if not df.empty:\n                dfs.append(df)\n    if not dfs:\n        raise NoDataFound(\"No Data Found.\")\n    df = pd.concat(dfs)\n    # Drop any entries with NaN\n    df = df[~pd.isna(df[ctx[\"var\"]])]\n    if df.empty:\n        raise NoDataFound(\"All data found to be missing.\")\n    # Attempt to ensure the column is numeric\n    df[ctx[\"var\"]] = pd.to_numeric(df[ctx[\"var\"]])\n    # Require 90% quorum\n    df = df[df[\"obs\"] > (df[\"obs\"].max() * 0.9)]\n    return df.reindex(df[ctx[\"var\"]].abs().sort_values(ascending=False).index)\n\n\ndef geojson(ctx: dict):\n    \"\"\"Generate a GeoDataFrame ready for geojson.\"\"\"\n    return (get_data(ctx).drop([\"lat\", \"lon\"], axis=1)), ctx[\"var\"]\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    if ctx[\"var\"] in NCEI_BAD and ctx[\"ct\"].startswith(\"ncei\"):\n        raise NoDataFound(\"Combo of NCEI Climatology + GDDs does not work!\")\n    df = get_data(ctx)\n    sector = ctx[\"sector\"]\n    date1 = ctx[\"date1\"]\n    date2 = min([ctx[\"date2\"], date.today()])\n    varname = ctx[\"var\"]\n\n    datefmt = \"%-d %b %Y\" if varname != \"cgdd_sum\" else \"%-d %b\"\n    subtitle = \"\"\n    if (\n        varname.find(\"gdd\") > -1\n        and (ctx[\"gddbase\"] not in GDD_KNOWN_BASES or ctx[\"gddceil\"] != 86)\n        and varname != \"gdd_sum\"\n    ):\n        subtitle = \"Period of Record Climatology is used for custom GDD\"\n    elif varname.find(\"depart\") > -1:\n        subtitle = (\n            f\"{date1.year} is compared with {PDICT6[ctx['ct']]}\"\n            \" to compute departures\"\n        )\n        if ctx[\"ct\"] == \"ncei_climate91\":\n            subtitle = (\n                f\"{date1.year} is compared with NCEI 1991-2020 Climatology to \"\n                \"compute departures\"\n            )\n    elif varname.startswith(\"c\"):\n        subtitle = (\n            \"Climatology is based on data from \"\n            f\"19{ctx['ct'][-2:]}-{date.today().year - 1}\"\n        )\n    if ctx[\"d\"] == \"sector\":\n        state = sector\n        sector = \"state\" if len(sector) == 2 else sector\n        cwa = None\n    else:\n        sector = \"cwa\"\n        cwa = ctx[\"wfo\"]\n        state = None\n    # This causes grief\n    ctx.pop(\"csector\", None)\n    _gt = (\n        PDICT2[varname]\n        .replace(\"$base\", str(ctx[\"gddbase\"]))\n        .replace(\"$ceil\", str(ctx[\"gddceil\"]))\n    )\n    mp = MapPlot(\n        apctx=ctx,\n        sector=sector,\n        state=state,\n        cwa=cwa,\n        axisbg=\"white\",\n        title=(\n            f\"{date1.strftime(datefmt)} thru {date2.strftime(datefmt)} {_gt} \"\n            f\"[{UNITS.get(varname)}]\"\n        ),\n        subtitle=subtitle,\n        nocaption=True,\n    )\n    fmt = \"%.2f\"\n    cmap = get_cmap(ctx[\"cmap\"])\n    extend = \"both\"\n    if varname in [\n        \"precip_depart\",\n        \"avg_temp_depart\",\n        \"gdd_depart\",\n        \"snow_depart\",\n    ]:\n        # encapsulte most of the data\n        rng = df[varname].abs().describe(percentiles=[0.95])[\"95%\"]\n        clevels = centered_bins(rng)\n        if varname == \"gdd_depart\":\n            fmt = \"%.0f\"\n    elif varname in [\"precip_max\", \"precip_sum\", \"snow_sum\"]:\n        ptiles = df[varname].abs().describe(percentiles=[0.05, 0.95])\n        minval = 0 if ptiles[\"5%\"] < 1 else ptiles[\"5%\"]\n        clevels = pretty_bins(minval, ptiles[\"95%\"])\n        extend = \"max\"\n        if varname == \"snow_sum\":\n            fmt = \"%.1f\"\n    elif varname.endswith(\"_percent\"):\n        clevels = np.array([10, 25, 50, 75, 100, 125, 150, 175, 200])\n        fmt = \"%.0f\"\n    else:\n        clevels = pretty_bins(df[varname].min(), df[varname].max())\n        fmt = \"%.0f\"\n        extend = \"neither\"\n    if ctx.get(\"bins\"):\n        try:\n            clevels = [float(x) for x in ctx[\"bins\"].split()]\n        except ValueError as exp:\n            msg = \"Invalid bins provided, should be space separated\"\n            raise NoDataFound(msg) from exp\n    cmap.set_bad(\"white\")\n    if ctx[\"p\"] == \"contour\" and len(clevels) > 1:\n        mp.contourf(\n            df[\"lon\"].values,\n            df[\"lat\"].values,\n            df[varname].values,\n            clevels,\n            cmap=cmap,\n            units=UNITS.get(varname),\n            extend=extend,\n        )\n\n    if ctx[\"c\"] == \"yes\":\n        df2 = df\n        if ctx[\"d\"] == \"wfo\":\n            df2 = df[df[\"wfo\"] == ctx[\"wfo\"]]\n        mp.plot_values(\n            df2[\"lon\"].values,\n            df2[\"lat\"].values,\n            df2[varname].values,\n            fmt=fmt,\n            labelbuffer=5,\n        )\n    if (\n        state is not None or sector == \"iailin\" or ctx[\"d\"] == \"wfo\"\n    ) and sector != \"conus\":\n        mp.drawcounties()\n    if ctx[\"usdm\"] == \"yes\":\n        mp.draw_usdm(date2, filled=False, hatched=True)\n\n    return mp.fig, df.round(2)\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p98.py",
    "content": "\"\"\"\nThis plot produces the daily frequency of\na given criterion being meet for a station and month of your choice. The\nnumber labeled above each bar is the actual number of years.\n\"\"\"\n\nimport calendar\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"precip\": \"Daily Precipitation\",\n    \"snow\": \"Daily Snowfall\",\n    \"snowd\": \"Daily Snow Depth\",\n    \"high\": \"High Temperature\",\n    \"low\": \"Low Temperature\",\n}\n\nPDICT2 = {\"above\": \"At or Above Threshold\", \"below\": \"Below Threshold\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(type=\"month\", name=\"month\", default=9, label=\"Which Month:\"),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"high\",\n            label=\"Which Variable:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"text\",\n            name=\"thres\",\n            default=\"90\",\n            label=\"Threshold (F or inch):\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"dir\",\n            default=\"above\",\n            label=\"Threshold Direction:\",\n            options=PDICT2,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"var\"]\n    month = ctx[\"month\"]\n    threshold = float(ctx[\"thres\"])\n    if PDICT.get(varname) is None:\n        raise NoDataFound(\"No Data Found.\")\n    drct = ctx[\"dir\"]\n    if PDICT2.get(drct) is None:\n        raise NoDataFound(\"No Data Found.\")\n    operator = \">=\" if drct == \"above\" else \"<\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT sday,\n            sum(case when {varname}::numeric {operator} :thres\n                then 1 else 0 end)\n            as hit,\n            count(*) as total\n            from alldata WHERE station = :station and month = :month\n            GROUP by sday ORDER by sday ASC\n            \"\"\",\n                varname=varname,\n                operator=operator,\n            ),\n            conn,\n            params={\"thres\": threshold, \"station\": station, \"month\": month},\n            index_col=\"sday\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df[\"freq\"] = df[\"hit\"] / df[\"total\"] * 100.0\n\n    vv = df[\"hit\"].sum() / float(df[\"total\"].sum()) * len(df.index)\n    title = (\n        f\"{ctx['_sname']} :: {PDICT.get(varname)} {PDICT2.get(drct)} \"\n        f\"{threshold}\\n\"\n        f\"during {calendar.month_name[month]} \"\n        f\"(Avg: {vv:.2f} days/year)\"\n    )\n    fig, ax = figure_axes(title=title, apctx=ctx)\n    bars = ax.bar(np.arange(1, len(df.index) + 1), df[\"freq\"])\n    for i, mybar in enumerate(bars):\n        ax.text(\n            i + 1,\n            mybar.get_height() + 0.3,\n            f\"{df['hit'].iloc[i]}\",\n            ha=\"center\",\n        )\n    ax.set_ylabel(\"Frequency (%)\")\n    ax.set_xlabel(\n        f\"Day of {calendar.month_name[month]}, number of years \"\n        f\"(out of {np.max(df['total'])}) meeting criteria labelled\"\n    )\n    ax.grid(True)\n    ax.set_xlim(0.5, 31.5)\n    ax.set_ylim(0, df[\"freq\"].max() + 5)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts/p99.py",
    "content": "\"\"\"\nThis plot produces a time series difference\nbetween daily high and low temperatures against climatology. Climatology is\nbased on the current official NCEI 1991-2020 dataset to compute the daily\naverage high and low temperature.  The period of record data is used to compute\nthe daily standard deviation departures.\n\"\"\"\n\nfrom datetime import date, timedelta\nfrom typing import TYPE_CHECKING\n\nimport matplotlib.dates as mdates\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\nif TYPE_CHECKING:\n    from matplotlib.axes import Axes\n\nPDICT = {\"abs\": \"Departure in degrees\", \"sigma\": \"Depature in sigma\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=date.today().year,\n            label=\"Which Year:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"delta\",\n            options=PDICT,\n            label=\"How to present the daily departures\",\n            default=\"abs\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    delta = ctx[\"delta\"]\n    year = ctx[\"year\"]\n    clstation = ctx[\"_nt\"].sts[station][\"ncei91\"]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            WITH days as (\n                select generate_series(:sts, :ets,\n                    '1 day'::interval)::date as day,\n                    to_char(generate_series(:sts, :ets,\n                    '1 day'::interval)::date, 'mmdd') as sday\n            ),\n            official as (\n                select to_char(valid, 'mmdd') as sday, high as avg_high,\n                low as avg_low from\n                ncei_climate91 where station = :clstation\n            ),\n            climo as (\n                SELECT sday, stddev(high) as stddev_high,\n                stddev(low) as stddev_low from alldata\n                WHERE station = :station GROUP by sday\n            ),\n            thisyear as (\n                SELECT day, sday, high, low from alldata\n                WHERE station = :station and year = :year\n            ),\n            thisyear2 as (\n                SELECT d.day, d.sday, t.high, t.low from days d LEFT JOIN\n                thisyear t on (d.sday = t.sday)\n            )\n            SELECT t.day, t.sday, t.high, t.low, o.avg_high, o.avg_low,\n            c.stddev_high, c.stddev_low from thisyear2 t, climo c, official o\n            WHERE c.sday = t.sday and t.sday = o.sday ORDER by t.day ASC\n        \"\"\"),\n            conn,\n            params={\n                \"clstation\": clstation,\n                \"sts\": date(year, 1, 1),\n                \"ets\": date(year, 12, 31),\n                \"station\": station,\n                \"year\": year,\n            },\n            index_col=\"day\",\n        )\n    if df.empty or df[\"high\"].isna().all():\n        raise NoDataFound(\"No Data Found.\")\n    df.index.name = \"Date\"\n    df[\"high_sigma\"] = (df[\"high\"] - df[\"avg_high\"]) / df[\"stddev_high\"]\n    df[\"low_sigma\"] = (df[\"low\"] - df[\"avg_low\"]) / df[\"stddev_low\"]\n\n    title = f\"{ctx['_sname']} :: Climatology & {year} Observations\"\n    fig = figure(\n        apctx=ctx,\n        title=title,\n        subtitle=f\"NCEI 1991-2020 Climatology Source: {clstation}\",\n    )\n    ax: list[Axes] = fig.subplots(2, 1, sharex=True)\n\n    ax[0].plot(\n        df.index.values,\n        df[\"avg_high\"].values,\n        color=\"r\",\n        linestyle=\"-\",\n        label=\"Climate High\",\n    )\n    ax[0].plot(\n        df.index.values, df[\"avg_low\"].values, color=\"b\", label=\"Climate Low\"\n    )\n    ax[0].set_ylabel(\"Temperature °F\")\n\n    ax[0].plot(\n        df.index.values,\n        df[\"high\"].values,\n        color=\"brown\",\n        label=f\"{year} High\",\n    )\n    ax[0].plot(\n        df.index.values,\n        df[\"low\"].values,\n        color=\"green\",\n        label=f\"{year} Low\",\n    )\n\n    if delta == \"abs\":\n        ax[1].plot(\n            df.index.values,\n            (df.high - df.avg_high).values,\n            color=\"r\",\n            label=f\"High Diff {year} - Climate\",\n        )\n        ax[1].plot(\n            df.index.values,\n            (df.low - df.avg_low).values,\n            color=\"b\",\n            label=\"Low Diff\",\n        )\n        ax[1].set_ylabel(\"Temp Difference °F\")\n    else:\n        ax[1].plot(\n            df.index.values,\n            df.high_sigma.values,\n            color=\"r\",\n            label=f\"High Diff {year} - Climate\",\n        )\n        ax[1].plot(\n            df.index.values, df.low_sigma.values, color=\"b\", label=\"Low Diff\"\n        )\n        ax[1].set_ylabel(r\"Temp Difference $\\sigma$\")\n        ymax = max([df.high_sigma.abs().max(), df.low_sigma.abs().max()]) + 1\n        ax[1].set_ylim(0 - ymax, ymax)\n    ax[1].legend(fontsize=10, ncol=2, loc=\"best\")\n    ax[1].grid(True)\n\n    ax[0].legend(fontsize=10, ncol=2, loc=8)\n    ax[0].grid()\n    ax[0].xaxis.set_major_locator(mdates.MonthLocator(interval=1))\n    ax[0].xaxis.set_major_formatter(mdates.DateFormatter(\"%-d\\n%b\"))\n    ax[0].set_xlim(\n        df.index.min() - timedelta(days=3),\n        df.index.max() + timedelta(days=3),\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/__init__.py",
    "content": "\"\"\"Placeholder so that directory can be loaded as a lib.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p100.py",
    "content": "\"\"\"\nThis plot displays a metric for each year.\nIn most cases, you can access the raw data for these plots\n<a href=\"/climodat/\" class=\"alert-link\">here.</a>\n\"\"\"\n\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"max-high\": \"Maximum High\",\n    \"avg-high\": \"Average High\",\n    \"min-high\": \"Minimum High\",\n    \"max-low\": \"Maximum Low\",\n    \"avg-low\": \"Average Low\",\n    \"min-low\": \"Minimum Low\",\n    \"max-precip\": \"Maximum Daily Precip\",\n    \"range-hilo\": \"Range between Min Low and Max High\",\n    \"sum-precip\": \"Total Precipitation\",\n    \"avg-precip\": \"Daily Average Precipitation\",\n    \"avg-precip2\": \"Daily Average Precipitation (on wet days)\",\n    \"days-precip\": \"Days with Precipitation Above (threshold)\",\n    \"days-high-above\": (\n        \"Days with High Temp Greater Than or Equal To (threshold)\"\n    ),\n    \"days-high-below\": \"Days with High Temp Below (threshold)\",\n    \"days-lows-above\": (\n        \"Days with Low Temp Greater Than or Equal To (threshold)\"\n    ),\n    \"days-lows-below\": \"Days with Low Temp Below (threshold)\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    eyear = date.today().year\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"type\",\n            default=\"max-high\",\n            label=\"Which metric to plot?\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"float\",\n            name=\"threshold\",\n            default=-99,\n            label=\"Threshold (optional, specify when appropriate):\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"syear\",\n            default=1893,\n            label=\"Start Year of Plot: (inclusive)\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"eyear\",\n            default=eyear,\n            label=\"End Year of Plot: (inclusive)\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    threshold = ctx[\"threshold\"]\n    ptype = ctx[\"type\"]\n    syear = ctx[\"syear\"]\n    eyear = ctx[\"eyear\"]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        SELECT year,\n        max(high) as \"max-high\",\n        min(high) as \"min-high\",\n        avg(high) as \"avg-high\",\n        max(low) as \"max-low\",\n        min(low) as \"min-low\",\n        avg(low) as \"avg-low\",\n        max(precip) as \"max-precip\",\n        sum(precip) as \"sum-precip\",\n        sum(case when high::numeric >= :t then 1 else 0 end)\n            as \"days-high-above\",\n        sum(case when high::numeric < :t then 1 else 0 end)\n            as \"days-high-below\",\n        sum(case when low::numeric >= :t then 1 else 0 end)\n            as \"days-lows-above\",\n        sum(case when low::numeric < :t then 1 else 0 end)\n            as \"days-lows-below\",\n        avg(precip) as \"avg-precip\",\n        avg(case when precip > 0.009 then precip else null end)\n            as \"avg-precip2\",\n        sum(case when precip >= :t then 1 else 0 end) as \"days-precip\"\n        from alldata\n        where station = :station and year >= :syear and year <= :eyear\n        GROUP by year ORDER by year ASC\n        \"\"\"),\n            conn,\n            params={\n                \"t\": threshold,\n                \"station\": station,\n                \"syear\": syear,\n                \"eyear\": eyear,\n            },\n            index_col=\"year\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df[\"range-hilo\"] = df[\"max-high\"] - df[\"min-low\"]\n\n    years = df.index.values\n    title = f\"{ctx['_sname']} :: {min(years)}-{max(years)}\\n{PDICT[ptype]}\"\n    if ptype.find(\"days\") == 0:\n        title += f\" ({threshold})\"\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    avgv = df[ptype].mean()\n    data = df[ptype]\n\n    # Compute 30 year trailing average\n    tavg = [None] * 30\n    for i in range(30, len(data)):\n        tavg.append(np.average(data.values[i - 30 : i]))\n\n    a1981_2010 = df.loc[1981:2011, ptype].mean()\n\n    colorabove = \"tomato\"\n    colorbelow = \"dodgerblue\"\n    precision = \"%.1f\"\n    if ptype in [\n        \"max-precip\",\n        \"sum-precip\",\n        \"avg-precip\",\n        \"avg-precip2\",\n        \"days-precip\",\n    ]:\n        colorabove = \"dodgerblue\"\n        colorbelow = \"tomato\"\n        precision = \"%.2f\"\n    bars = ax.bar(\n        np.array(years),\n        data.values,\n        fc=colorabove,\n        ec=colorabove,\n        align=\"center\",\n    )\n    for i, mybar in enumerate(bars):\n        if data.values[i] < avgv:\n            mybar.set_facecolor(colorbelow)\n            mybar.set_edgecolor(colorbelow)\n    lbl = \"Avg: \" + precision % (avgv,)\n    ax.axhline(avgv, lw=2, color=\"k\", zorder=2, label=lbl)\n    lbl = \"1981-2010: \" + precision % (a1981_2010,)\n    ax.axhline(a1981_2010, lw=2, color=\"brown\", zorder=2, label=lbl)\n    if len(years) == len(tavg):\n        ax.plot(\n            years, tavg, lw=1.5, color=\"g\", zorder=4, label=\"Trailing 30yr\"\n        )\n        ax.plot(years, tavg, lw=3, color=\"yellow\", zorder=3)\n    ax.set_xlim(years[0] - 1, years[-1] + 1)\n    if ptype.find(\"precip\") == -1 and ptype.find(\"days\") == -1:\n        ax.set_ylim(data.min() - 5, data.max() + 5)\n\n    ax.set_xlabel(\"Year\")\n    units = \"°F\"\n    if ptype.find(\"days\") > 0:\n        units = \"days\"\n    elif ptype.find(\"precip\") > 0:\n        units = \"inches\"\n    ax.set_ylabel(f\"{PDICT[ptype]} [{units}]\")\n    ax.grid(True)\n    ax.legend(ncol=3, loc=\"best\", fontsize=10)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p101.py",
    "content": "\"\"\"\nThis chart displays the relative frequency of\nVTEC products.  This is computed by taking the unique combination of\nevents and UGC county/zones.  Restating and for example, a single\nSevere Thunderstorm Warning covering portions of two counties would\ncount as two events in this summary. The values plotted are relative to the\nmost frequent product.\n\"\"\"\n\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws import vtec\nfrom pyiem.plot import figure_axes\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO:\",\n            all=True,\n        ),\n        dict(\n            type=\"year\",\n            name=\"syear\",\n            default=2009,\n            label=\"Start Year (inclusive):\",\n            min=2009,\n        ),\n        dict(\n            type=\"year\",\n            name=\"eyear\",\n            default=date.today().year,\n            label=\"End Year (inclusive):\",\n            min=2009,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    ctx[\"_nt\"].sts[\"_ALL\"] = dict(name=\"ALL WFOs\")\n    syear = ctx[\"syear\"]\n    eyear = ctx[\"eyear\"] + 1\n    station = ctx[\"station\"][:4]\n    sts = date(syear, 1, 1)\n    ets = date(eyear, 1, 1)\n    params = {\n        \"sts\": sts,\n        \"ets\": ets,\n        \"wfo\": station if len(station) == 3 else station[1:5],\n    }\n    wfo_limiter = \" and wfo = :wfo \"\n    if station == \"_ALL\":\n        wfo_limiter = \"\"\n\n    labels = []\n    vals = []\n    cnt = 1\n    rows = []\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n            select phenomena, significance, min(issue), count(*) from warnings\n            where ugc is not null and issue > :sts\n            and issue < :ets {wfo_limiter}\n            GROUP by phenomena, significance ORDER by count DESC\n        \"\"\",\n                wfo_limiter=wfo_limiter,\n            ),\n            params,\n        )\n        if res.rowcount == 0:\n            raise NoDataFound(\"No data found.\")\n        for row in res:\n            label = (\n                f\"{cnt}. \"\n                f\"{vtec.get_ps_string(row[0], row[1])} ({row[0]}.{row[1]})\"\n            )\n            if cnt < 26:\n                labels.append(label)\n                vals.append(row[3])\n            rows.append(\n                dict(\n                    phenomena=row[0],\n                    significance=row[1],\n                    count=row[3],\n                    wfo=station,\n                )\n            )\n            cnt += 1\n    df = pd.DataFrame(rows)\n    (fig, ax) = figure_axes(apctx=ctx)\n    vals = np.array(vals)\n\n    ax.barh(\n        np.arange(len(vals)), vals / float(vals[0]) * 100.0, align=\"center\"\n    )\n    for i in range(1, len(vals)):\n        y = vals[i] / float(vals[0]) * 100.0\n        ax.text(y + 1, i, f\"{y:.1f}%\", va=\"center\")\n    _tt = eyear - 1 if (eyear - 1 != syear) else \"\"\n    fig.text(\n        0.5,\n        0.95,\n        f\"{syear}-{_tt} NWS {ctx['_sname']} Watch/Warning/Advisory Totals\",\n        ha=\"center\",\n    )\n    fig.text(\n        0.5,\n        0.05,\n        f\"Event+County/Zone Count, Relative to #{labels[0]}\",\n        ha=\"center\",\n        fontsize=10,\n    )\n    ax.set_ylim(len(vals), -0.5)\n    ax.grid(True)\n    ax.set_yticks(np.arange(len(vals)))\n    ax.set_yticklabels(labels)\n    ax.set_position([0.5, 0.1, 0.45, 0.83])\n    ax.set_xticks([0, 10, 25, 50, 75, 90, 100])\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p102.py",
    "content": "\"\"\"\nThe National Weather Service issues Local Storm\nReports (LSRs) with a label associated with each report indicating the\nsource of the report.  This plot summarizes the number of reports\nreceived each year by each source type.  The values are the ranks for\nthat year with 1 indicating the largest.  The values following the LSR\nevent type in parenthesis are the raw LSR counts for that year. You need\nto graph at least two years worth of data to make this plot type work.\n\"\"\"\n\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom pyiem.reference import lsr_events\n\nMARKERS = [\"8\", \">\", \"<\", \"v\", \"o\", \"h\", \"*\"]\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 3600}\n    today = date.today()\n    ltypes = list(lsr_events.keys())\n    ltypes.sort()\n    ev = dict(zip(ltypes, ltypes, strict=False))\n    desc[\"arguments\"] = [\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO:\",\n            all=True,\n        ),\n        dict(\n            type=\"select\",\n            name=\"ltype\",\n            multiple=True,\n            optional=True,\n            options=ev,\n            default=\"TORNADO\",\n            label=\"Select LSR Event Types: (optional)\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            min=2006,\n            default=2006,\n            label=\"Start Year\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"eyear\",\n            min=2006,\n            default=today.year,\n            label=\"End Year (inclusive)\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    ctx[\"_nt\"].sts[\"_ALL\"] = dict(name=\"All WFOs\")\n    station = ctx[\"station\"][:4]\n    syear = ctx[\"year\"]\n    eyear = ctx[\"eyear\"]\n    if syear == eyear:\n        syear = eyear - 1\n    # optional parameter, this could return null\n    ltype = ctx.get(\"ltype\")\n    params = {\"wfo\": station if len(station) == 3 else station[1:]}\n    wfo_limiter = \" and wfo = :wfo \"\n    if station == \"_ALL\":\n        wfo_limiter = \"\"\n    typetext_limiter = \"\"\n    if ltype:\n        if len(ltype) == 1:\n            typetext_limiter = \" and typetext = :tt \"\n            params[\"tt\"] = ltype[0]\n        else:\n            typetext_limiter = \" and typetext = ANY(:tt)\"\n            params[\"tt\"] = ltype\n    params[\"sts\"] = date(syear, 1, 1)\n    params[\"ets\"] = date(eyear + 1, 1, 1)\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            select extract(year from valid)::int as yr, upper(source) as src,\n            count(*) from lsrs\n            where valid > :sts and\n            valid < :ets {wfo_limiter} {typetext_limiter}\n            GROUP by yr, src\n        \"\"\",\n                wfo_limiter=wfo_limiter,\n                typetext_limiter=typetext_limiter,\n            ),\n            conn,\n            params=params,\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found\")\n    # pivot the table so that we can fill out zeros\n    df = df.pivot(index=\"yr\", columns=\"src\", values=\"count\")\n    df = df.fillna(0).reset_index()\n    df = df.melt(id_vars=\"yr\", value_name=\"count\")\n    df[\"rank\"] = df.groupby([\"yr\"])[\"count\"].rank(\n        ascending=False, method=\"first\"\n    )\n    title = (\n        f\"NWS {ctx['_nt'].sts[station]['name']} \"\n        \"Local Storm Report Sources Ranks\"\n    )\n    if ltype:\n        label = f\"For LSR Types: {ltype}\"\n        if len(label) > 90:\n            label = f\"{label[:90]}...\"\n        title += f\"\\n{label}\"\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    # Do syear as left side\n    for year in range(syear, eyear):\n        dyear = df[df[\"yr\"] == year].sort_values(by=[\"rank\"], ascending=True)\n        if not dyear.empty:\n            break\n    i = 1\n    ylabels = []\n    leftsrcs = []\n    usedline = 0\n    for _, row in dyear.iterrows():\n        src = row[\"src\"]\n        leftsrcs.append(src)\n        ylabels.append(f\"{src} ({row['count']:.0f})\")\n        d = df[df[\"src\"] == src].sort_values(by=[\"yr\"])\n        ax.plot(\n            np.array(d[\"yr\"]),\n            np.array(d[\"rank\"]),\n            lw=2,\n            label=src,\n            marker=MARKERS[usedline % len(MARKERS)],\n        )\n        i += 1\n        usedline += 1\n        if i > 20:\n            break\n    ax.set_yticks(range(1, len(ylabels) + 1))\n    ax.set_yticklabels([f\"{s} {i + 1}\" for i, s in enumerate(ylabels)])\n    ax.set_ylim(0.5, 20.5)\n\n    ax2 = ax.twinx()\n    # Do last year as right side\n    dyear = df[df[\"yr\"] == eyear].sort_values(by=[\"rank\"], ascending=True)\n    i = 0\n    y2labels = []\n    for _, row in dyear.iterrows():\n        i += 1\n        if i > 20:\n            break\n        src = row[\"src\"]\n        y2labels.append(f\"{src} ({row['count']:.0f})\")\n        if src not in leftsrcs:\n            d = df[df[\"src\"] == src].sort_values(by=[\"yr\"])\n            ax.plot(\n                np.array(d[\"yr\"]),\n                np.array(d[\"rank\"]),\n                lw=2,\n                label=src,\n                marker=MARKERS[usedline % len(MARKERS)],\n            )\n            usedline += 1\n\n    ax2.set_yticks(range(1, len(y2labels) + 1))\n    ax2.set_yticklabels([f\"{i + 1} {s}\" for i, s in enumerate(y2labels)])\n    ax2.set_ylim(0.5, 20.5)\n\n    pos = [0.2, 0.13, 0.6, 0.75]\n    ax.set_position(pos)\n    ax2.set_position(pos)\n    ax.set_xticks(range(df[\"yr\"].min(), df[\"yr\"].max(), 2))\n    for tick in ax.get_xticklabels():\n        tick.set_rotation(90)\n    ax.grid()\n\n    fig.text(0.15, 0.88, f\"{syear}\", fontsize=14, ha=\"center\")\n    fig.text(0.85, 0.88, f\"{eyear}\", fontsize=14, ha=\"center\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p103.py",
    "content": "\"\"\"\nThis plot analyzes the number of steps down in\nlow temperature during the fall season and the number of steps up in\nhigh temperature during the spring season.  These steps are simply having\na newer colder low or warmer high for the season to date period.\n\"\"\"\n\nimport calendar\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\"spring\": \"1 January - 31 December\", \"fall\": \"1 July - 30 June\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"season\",\n            options=PDICT,\n            label=\"Select which half of year\",\n            default=\"fall\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    season = ctx[\"season\"]\n\n    year = (\n        \"case when month > 6 then year + 1 else year end\"\n        if season == \"fall\"\n        else \"year\"\n    )\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH obs as (\n            SELECT day, month, high, low, {year} as season\n            from alldata WHERE station = :station),\n        data as (\n            SELECT season, day,\n            max(high) OVER (PARTITION by season ORDER by day ASC\n                            ROWS BETWEEN 366 PRECEDING and CURRENT ROW) as mh,\n            min(low) OVER (PARTITION by season ORDER by day ASC\n                        ROWS BETWEEN 366 PRECEDING and CURRENT ROW) as ml\n            from obs),\n        lows as (\n            SELECT season, day, ml as level,\n            rank() OVER (PARTITION by season, ml ORDER by day ASC) from data),\n        highs as (\n            SELECT season, day, mh as level,\n            rank() OVER (PARTITION by season, mh ORDER by day ASC) from data)\n\n        (SELECT season as year, day, extract(doy from day) as doy,\n        level, 'fall' as typ from lows WHERE rank = 1) UNION\n        (SELECT season as year, day, extract(doy from day) as doy,\n        level, 'spring' as typ from highs WHERE rank = 1)\n        \"\"\",\n                year=year,\n            ),\n            conn,\n            params={\"station\": station},\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df2 = df[df[\"typ\"] == season]\n\n    tt = f\"{PDICT[season]} Steps {'Down' if season == 'fall' else 'Up'}\"\n    title = f\"{ctx['_sname']} :: {tt} in Temperature\"\n    fig = figure(title=title, apctx=ctx)\n    x = 0.1\n    ax = [\n        fig.add_axes((x, 0.7, 0.88, 0.2)),\n        fig.add_axes((x, 0.4, 0.88, 0.2)),\n        fig.add_axes((x, 0.1, 0.88, 0.2)),\n    ]\n    dyear = df2.groupby([\"year\"]).count()\n    ax[0].bar(\n        dyear.index,\n        dyear[\"level\"],\n        width=1.0,\n        facecolor=\"tan\",\n        edgecolor=\"tan\",\n    )\n    ax[0].axhline(dyear[\"level\"].mean(), lw=2)\n    ax[0].set_ylabel(f\"Yearly Events Avg: {dyear['level'].mean():.1f}\")\n    ax[0].set_xlim(dyear.index.min() - 1, dyear.index.max() + 1)\n    ax[0].grid(True)\n\n    ax[1].hist(\n        np.array(df2[\"level\"], \"f\"),\n        bins=np.arange(df2[\"level\"].min(), df2[\"level\"].max() + 1, 2),\n        density=True,\n        facecolor=\"tan\",\n    )\n    ax[1].set_ylabel(\"Probability Density\")\n    ax[1].axvline(32, lw=2)\n    ax[1].grid(True)\n    ax[1].set_xlabel(\"Temperature °F, 32 degrees highlighted\")\n\n    ax[2].hist(\n        np.array(df2[\"doy\"], \"f\"),\n        bins=np.arange(df2[\"doy\"].min(), df2[\"doy\"].max() + 1, 3),\n        density=True,\n        facecolor=\"tan\",\n    )\n    ax[2].set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax[2].set_xticklabels(calendar.month_abbr[1:])\n    ax[2].set_xlim(df2[\"doy\"].min() - 3, df2[\"doy\"].max() + 3)\n\n    ax[2].set_ylabel(\"Probability Density\")\n    ax[2].grid(True)\n    ax[2].set_xlabel(\"Day of Year, 3 Day Bins\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p104.py",
    "content": "\"\"\"\nThis plot presents the time series of trailing X\nnumber of day departures evaluated every Y days forward in time.  The\ndepartures are expressed in terms of standard deviation (sigma) by\ncomparing the current period against the same period of dates back through\nthe period of record.  The evaluation points are connected by arrows to\nexpress the evolution of the departures.  Since the plot is bounded by\nphysical processes, the plot tends to cycle.  In economics, a classic\ncomparable plot to this one is of suply vs demand.\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_dbconn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = datetime.today() - timedelta(days=1)\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"date\",\n            name=\"date1\",\n            default=(today - timedelta(days=90)).strftime(\"%Y/%m/%d\"),\n            label=\"Start Date:\",\n            min=\"1893/01/01\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"date2\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"End Date (inclusive):\",\n            min=\"1893/01/01\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"days\",\n            default=\"14\",\n            label=\"Number of Trailing Days to Use (X)\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"days2\",\n            default=\"7\",\n            label=\"Interval to Compute Trailing Statistics (Y)\",\n        ),\n    ]\n    return desc\n\n\ndef get_color(val, cat):\n    \"\"\"get color fpr category and val\"\"\"\n    if cat == \"t\":\n        if val > 0:\n            return \"r\"\n        return \"b\"\n    if val > 0:\n        return \"b\"\n    return \"r\"\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    pgconn = get_dbconn(\"coop\")\n    cursor = pgconn.cursor()\n\n    station = ctx[\"station\"]\n    days = ctx[\"days\"]\n    days2 = ctx[\"days2\"]\n    date1 = ctx[\"date1\"]\n    date2 = ctx[\"date2\"]\n\n    title = (\n        f\"{ctx['_sname']} ({date1:%d %b %Y} - {date2:%d %b %Y})\\n\"\n        f\"{days} Day Trailing Departures plotted every {days2} days\"\n    )\n\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n\n    interval = timedelta(days=days2)\n\n    lbls = []\n    lbls2 = []\n    psigma = []\n    tsigma = []\n    aligns = []\n    align = [\"top\", \"bottom\"]\n\n    now = date1\n    while now <= date2:\n        sdays = [\n            f\"{(now - timedelta(days=i)):%m%d}\" for i in range(0, 0 - days, -1)\n        ]\n        cursor.execute(\n            \"\"\"\n        SELECT avg(p), stddev(p), avg(t), stddev(t),\n        max(case when year = %s then p else -999 end),\n        max(case when year = %s then t else -999 end) from\n        (SELECT year, sum(precip) as p, avg((high+low)/2.) as t\n        from alldata\n        WHERE station = %s and sday = ANY(%s) GROUP by year) as foo\n        \"\"\",\n            (now.year, now.year, station, sdays),\n        )\n        row = cursor.fetchone()\n        if row[0] is None:\n            raise NoDataFound(\"No Data Found.\")\n        psigma.append((row[4] - row[0]) / row[1])\n        tsigma.append((row[5] - row[2]) / row[3])\n        lbls.append(now.strftime(\"%-m/%-d\"))\n        lbls2.append(now.strftime(\"%Y-%m-%d\"))\n        aligns.append(align[now.month % 2])\n\n        now += interval\n    pgconn.close()\n    df = pd.DataFrame(\n        dict(\n            psigma=pd.Series(psigma),\n            tsigma=pd.Series(tsigma),\n            sdate=pd.Series(lbls2),\n        )\n    )\n    tsigma = np.array(tsigma, \"f\")\n    psigma = np.array(psigma, \"f\")\n    ax.quiver(\n        tsigma[:-1],\n        psigma[:-1],\n        tsigma[1:] - tsigma[:-1],\n        psigma[1:] - psigma[:-1],\n        scale_units=\"xy\",\n        angles=\"xy\",\n        scale=1,\n        zorder=1,\n        color=\"tan\",\n    )\n    for lbl, t, p, a in zip(lbls, tsigma, psigma, aligns, strict=False):\n        ax.text(t, p, lbl, va=a, zorder=2)\n\n    tmax = max([abs(np.min(tsigma)), abs(np.max(tsigma))]) + 0.5\n    ax.set_xlim(0 - tmax, tmax)\n    pmax = max([abs(np.min(psigma)), abs(np.max(psigma))]) + 0.5\n    ax.set_ylim(0 - pmax, pmax)\n    ax.set_ylabel(r\"Precipitation Departure $\\sigma$\")\n    ax.set_xlabel(r\"Temperature Departure $\\sigma$\")\n    ax.grid(True)\n    ax.set_position([0.1, 0.1, 0.7, 0.8])\n    y = 0.96\n    pos = [1.01, 1.15, 1.22]\n    ax.text(pos[0], y + 0.04, \"Date\", transform=ax.transAxes, fontsize=10)\n    ax.text(\n        pos[1],\n        y + 0.04,\n        r\"T $\\sigma$\",\n        transform=ax.transAxes,\n        fontsize=10,\n        ha=\"right\",\n    )\n    ax.text(\n        pos[2],\n        y + 0.04,\n        r\"P $\\sigma$\",\n        transform=ax.transAxes,\n        fontsize=10,\n        ha=\"right\",\n    )\n    for lbl, t, p in zip(lbls, tsigma, psigma, strict=False):\n        ax.text(pos[0], y, f\"{lbl}\", transform=ax.transAxes, fontsize=10)\n        ax.text(\n            pos[1],\n            y,\n            f\"{t:.1f}\",\n            transform=ax.transAxes,\n            fontsize=10,\n            color=get_color(t, \"t\"),\n            ha=\"right\",\n        )\n        ax.text(\n            pos[2],\n            y,\n            f\"{p:.1f}\",\n            transform=ax.transAxes,\n            fontsize=10,\n            color=get_color(p, \"p\"),\n            ha=\"right\",\n        )\n        y -= 0.04\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p105.py",
    "content": "\"\"\"\nThis plot presents three precipitation metrics for\na site of your choice.  The upper plot displays the maximum period of days\nin between precip events of either greater than 0.01\" (labelled no rain)\nand then of a threshold of your choice.  The bottom plot provides the\nmaximum 24 hour period precip as reported by the once daily observatons\n\"\"\"\n\nimport calendar\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\"yes\": \"Yes, consider trace reports\", \"no\": \"No, omit trace reports\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"float\",\n            name=\"thres\",\n            default=\"0.10\",\n            label=\"Precipitation Threshold (inch)\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"trace\",\n            default=\"no\",\n            label='Include \"trace\" reports in the analysis?',\n            options=PDICT,\n        ),\n    ]\n    return desc\n\n\ndef get_color(val, cat):\n    \"\"\"Helper.\"\"\"\n    if cat == \"t\":\n        if val > 0:\n            return \"r\"\n        return \"b\"\n    if val > 0:\n        return \"b\"\n    return \"r\"\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    threshold = ctx[\"thres\"]\n    use_trace = ctx[\"trace\"] == \"yes\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        with data as (\n        select sday, day, precip from alldata\n        where station = :station),\n\n        rains as (\n        SELECT day from alldata WHERE station = :station and precip >= :t),\n\n        rains2 as (\n        SELECT day from alldata WHERE station = :station and precip >= :t2),\n\n        agg as (\n        SELECT d.sday, d.day, d.precip, r.day as rday\n        from data d LEFT JOIN rains r ON (d.day = r.day)),\n\n        agg2 as (\n        SELECT d.sday, d.day, d.precip, d.rday, r.day as rday2 from\n        agg d LEFT JOIN rains2 r ON (d.day = r.day)),\n\n        agg3 as (\n        SELECT sday, precip, day - max(rday) OVER (ORDER by day ASC) as diff,\n        day - max(rday2) OVER (ORDER by day ASC) as diff2 from agg2)\n\n        SELECT sday, max(precip) as maxp, max(diff) as d1, max(diff2) as d2\n        from agg3 WHERE sday != '0229'\n        GROUP by sday ORDER by sday ASC\n        \"\"\"),\n            conn,\n            params={\n                \"station\": station,\n                \"t\": 0.0001 if use_trace else 0.01,\n                \"t2\": threshold,\n            },\n            index_col=\"sday\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    fig = figure(title=f\"{ctx['_sname']} :: Precipitation Metrics\", apctx=ctx)\n    ax = fig.subplots(2, 1, sharex=True)\n\n    ax[0].plot(np.arange(1, 366), df[\"d1\"], c=\"r\", label=\"No Rain\")\n    ax[0].plot(\n        np.arange(1, 366),\n        df[\"d2\"],\n        c=\"b\",\n        label=f\"Below {threshold:.2f}in\",\n    )\n    ax[0].set_ylabel(\"Consec Days below threshold\")\n    ax[0].grid(True)\n    ax[0].legend(ncol=2, loc=(0.5, -0.13), fontsize=10)\n    ax[0].text(\n        0.05,\n        -0.09,\n        f\"Trace Reports {'Included' if use_trace else 'Excluded'}\",\n        transform=ax[0].transAxes,\n        ha=\"left\",\n    )\n\n    ax[1].bar(np.arange(1, 366), df[\"maxp\"], edgecolor=\"b\", facecolor=\"b\")\n    ax[1].set_ylabel(\"Max 24 Hour Precip [inch]\")\n    ax[1].set_xlim(0.5, 366.5)\n    ax[1].set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax[1].set_xticklabels(calendar.month_abbr[1:])\n    ax[1].grid(True)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p106.py",
    "content": "\"\"\"\nThis plot displays hourly variable distributions on dates that meet the\ncriterion for having at least one observation at the given threshold.  The\ndistributions are presented as \"violins\" with the width of the violin\nproviding some insight into the population density at the given hour.\n\"\"\"\n\nfrom datetime import date\n\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_ZSTATION\nfrom iemweb.util import month2months\n\nPDICT = {\n    \"tmpf_above\": \"Temperature At or Above Threshold (°F)\",\n    \"tmpf_below\": \"Temperature Below Threshold (°F)\",\n    \"dwpf_above\": \"Dew Point At or Above Threshold (°F)\",\n    \"dwpf_below\": \"Dew Point Below Threshold (°F)\",\n    \"feel_above\": \"Feels Like Temperature At or Above Threshold (°F)\",\n    \"feel_below\": \"Feels Like Temperature Below Threshold (°F)\",\n    \"relh_above\": \"Relative Humidity At or Above Threshold (%)\",\n    \"relh_below\": \"Relative Humidity Below Threshold (%)\",\n    \"sknt_above\": \"Wind Speed At or Above Threshold (kts)\",\n    \"sknt_below\": \"Wind Speed Below Threshold (kts)\",\n    \"alti_above\": \"Pressure Altimeter At or Above Threshold (in)\",\n    \"alti_below\": \"Pressure Altimeter Below Threshold (in)\",\n    \"vsby_above\": \"Visibility At or Above Threshold (mi)\",\n    \"vsby_below\": \"Visibility Below Threshold (mi)\",\n    \"p01i_above\": \"Hourly Precipitation At or Above Threshold (in)\",\n    \"p01i_below\": \"Hourly Precipitation Below Threshold (in)\",\n}\nPDICT2 = {\n    \"tmpf\": \"Air Temperature (°F)\",\n    \"dwpf\": \"Dew Point (°F)\",\n    \"feel\": \"Feels Like Temperature (°F)\",\n    \"relh\": \"Relative Humidity (%)\",\n    \"sknt\": \"Wind Speed (kts)\",\n    \"alti\": \"Pressure Altimeter (in)\",\n    \"vsby\": \"Visibility (mi)\",\n    \"p01i\": \"Hourly Precipitation (in)\",\n}\n\nMDICT = {\n    \"all\": \"No Month/Time Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__}\n    desc[\"arguments\"] = [\n        ARG_ZSTATION,\n        {\n            \"type\": \"select\",\n            \"name\": \"var\",\n            \"default\": \"tmpf\",\n            \"label\": \"Variable to Summarize by Hour\",\n            \"options\": PDICT2,\n        },\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"tmpf_above\",\n            label=\"Daily Criterion with at least one ob?\",\n            options=PDICT,\n        ),\n        {\n            \"optional\": True,\n            \"type\": \"date\",\n            \"default\": f\"{date.today():%Y/%m/%d}\",\n            \"label\": \"Plot observations for this calendar date\",\n            \"name\": \"date\",\n        },\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"float\",\n            name=\"threshold\",\n            default=\"80\",\n            label=\"Threshold (°F,knot,%,mile,inch):\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    threshold = ctx[\"threshold\"]\n    opt = ctx[\"opt\"]\n    dailyvar, dailydir = opt.split(\"_\")\n    hourlyvar = ctx[\"var\"]\n    if hourlyvar not in PDICT2:  # not possible, but alas\n        raise NoDataFound(f\"Invalid variable: {hourlyvar}\")\n    month = ctx[\"month\"]\n    mydate: date | None = ctx.get(\"date\")\n\n    months = month2months(month)\n\n    params = {\n        \"tzname\": ctx[\"_nt\"].sts[station][\"tzname\"],\n        \"station\": station,\n        \"threshold\": threshold,\n        \"months\": months,\n    }\n\n    mydate_obs = [[] for _ in range(24)]\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n            WITH events as (\n                SELECT distinct date(valid at time zone :tzname) from alldata\n                WHERE station = :station and\n                extract(month from valid at time zone :tzname) = ANY(:months)\n                and {dailyvar} {mydir} :threshold\n            )\n        SELECT valid at time zone :tzname + '10 minutes'::interval, {hourlyvar}\n        from alldata a, events e where\n        a.station = :station and\n    (date((a.valid + '10 minutes'::interval) at time zone :tzname) = e.date)\n        and report_type = 3 and {hourlyvar} is not null\n        \"\"\",\n                dailyvar=dailyvar,\n                mydir=\">=\" if dailydir == \"above\" else \"<\",\n                hourlyvar=hourlyvar,\n            ),\n            params,\n        )\n        data = [[] for _ in range(24)]\n        if res.rowcount == 0:\n            raise NoDataFound(\"Failed to find any data for station.\")\n        for row in res:\n            data[row[0].hour].append(row[1])\n            if mydate and row[0].date() == mydate:\n                mydate_obs[row[0].hour].append(row[1])\n\n    title = (\n        f\"{ctx['_sname']} :: Hourly {PDICT2[hourlyvar]} \"\n        f\"Distributions over ({month.capitalize()})\"\n    )\n    subtitle = f\"On Dates with at least one ob {PDICT[opt]} {threshold:.2f}\"\n    fig, ax = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    v1 = ax.violinplot(data, showextrema=True, showmeans=True, widths=0.7)\n    for lbl in [\"cmins\", \"cmeans\", \"cmaxes\"]:\n        v1[lbl].set_color(\"r\")\n\n    ax.grid(True)\n    ax.set_ylabel(PDICT2[hourlyvar])\n    ax.set_xlabel(\n        f\"Local Hour for Timezone: {ctx['_nt'].sts[station]['tzname']}\"\n    )\n    ax.set_xticks(range(1, 25, 3))\n    ax.set_xticklabels(\"Mid,3 AM,6 AM,9 AM,Noon,3 PM,6 PM,9 PM\".split(\",\"))\n    labeled = False\n    for hr, obs in enumerate(mydate_obs, start=1):\n        if obs:\n            ax.scatter(\n                [hr] * len(obs),\n                obs,\n                marker=\"o\",\n                color=\"k\",\n                zorder=10,\n                label=None if labeled else f\"{mydate:%Y-%m-%d}\",\n            )\n            labeled = True\n    if labeled:\n        ax.legend(loc=\"upper right\", fontsize=10, framealpha=0.8)\n    return fig\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p107.py",
    "content": "\"\"\"\nThis plot presents aggregate statistics by year for a date period\nof your choice.  You can either set an explicit date period or make\nthe end date based on the first date below a given low temperature\nthreshold. If your period crosses a year bounds,\nthe plotted year represents the year of the start date of the period.\n\n<br /><br />This autoplot is specific to data from COOP stations, a\nsimiliar autoplot <a href=\"/plotting/auto/?q=140\">#140</a> exists for\nautomated stations.\n\n<p>A quorum of at least 90% of the days within the choosen period must have\ndata in order to be included within the plot.\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.ticker import MaxNLocator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"avg_high_temp\": \"Average High Temperature\",\n    \"avg_low_temp\": \"Average Low Temperature\",\n    \"avg_temp\": \"Average Temperature\",\n    \"avg_range\": \"Average Daily Temperature Range\",\n    \"gdd\": \"Growing Degree Days\",\n    \"days-high-above\": (\n        \"Days with High Temp Greater Than or Equal To (threshold)\"\n    ),\n    \"days-high-below\": \"Days with High Temp Below (threshold)\",\n    \"days-lows-above\": (\n        \"Days with Low Temp Greater Than or Equal To (threshold)\"\n    ),\n    \"days-lows-below\": \"Days with Low Temp Below (threshold)\",\n    \"max_high\": \"Maximum High Temperature\",\n    \"min_high\": \"Minimum High Temperature\",\n    \"range_high\": \"Range of High Temperature\",\n    \"min_low\": \"Minimum Low Temperature\",\n    \"max_low\": \"Maximum Low Temperature\",\n    \"range_low\": \"Range of Low Temperature\",\n    \"avg_era5land_soilt4_avg\": \"Avg Daily Soil (0-7cm) Temp (ERA5-Land)\",\n    \"avg_era5land_soilm1m_avg\": \"Avg Daily Soil (0-1m) Moisture (ERA5-Land)\",\n    \"avg_era5land_srad\": \"Average Daily Solar Radiation (ERA5-Land)\",\n    \"max_era5land_srad\": \"Max Daily Solar Radiation (ERA5-Land)\",\n    \"min_era5land_srad\": \"Min Daily Solar Radiation (ERA5-Land)\",\n    \"avg_merra_srad\": \"Average Daily Solar Radiation (MERRAv2)\",\n    \"max_merra_srad\": \"Max Daily Solar Radiation (MERRAv2)\",\n    \"min_merra_srad\": \"Min Daily Solar Radiation (MERRAv2)\",\n    \"avg_narr_srad\": \"Average Daily Solar Radiation (NARR)\",\n    \"max_narr_srad\": \"Max Daily Solar Radiation (NARR)\",\n    \"min_narr_srad\": \"Min Daily Solar Radiation (NARR)\",\n    \"precip\": \"Total Precipitation\",\n    \"snow\": \"Total Snowfall\",\n    \"days-precip-above\": (\n        \"Days with Precipitation Greater Than or Equal To (threshold)\"\n    ),\n    \"days-snow-above\": (\n        \"Days with Snowfall Greater Than or Equal To (threshold)\"\n    ),\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = datetime.today() - timedelta(days=1)\n    sts = today - timedelta(days=14)\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        {\n            \"type\": \"sday\",\n            \"name\": \"sday\",\n            \"default\": f\"{sts:%m%d}\",\n            \"label\": \"Inclusive Start Date of the Year\",\n        },\n        {\n            \"type\": \"sday\",\n            \"name\": \"eday\",\n            \"default\": f\"{today:%m%d}\",\n            \"label\": \"Inclusise End Date of the Year\",\n        },\n        dict(\n            optional=True,\n            type=\"int\",\n            name=\"stop\",\n            default=\"32\",\n            label=(\n                \"Stop accumulation once daily low (after 1 July) \"\n                \"below threshold (F) [overrides number of days above]\"\n            ),\n        ),\n        dict(\n            type=\"select\",\n            name=\"varname\",\n            default=\"avg_temp\",\n            label=\"Variable to Compute:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"float\",\n            name=\"thres\",\n            default=-99,\n            label=\"Threshold (when appropriate):\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"base\",\n            default=50,\n            label=\"Growing Degree Day Base (F)\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"ceil\",\n            default=86,\n            label=\"Growing Degree Day Ceiling (F)\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=today.year,\n            label=\"Year to Highlight in Chart:\",\n        ),\n    ]\n    return desc\n\n\ndef crossesjan1(val):\n    \"\"\"Pretty print for a year.\"\"\"\n    return f\"{val:.0f}-{(val + 1):.0f}\"\n\n\ndef intfmt(val):\n    \"\"\"format int values\"\"\"\n    if val == \"M\":\n        return \"M\"\n    return f\"{val:.0f}\"\n\n\ndef nice(val):\n    \"\"\"nice printer\"\"\"\n    if val == \"M\":\n        return \"M\"\n    if 0 < val < 0.01:\n        return \"Trace\"\n    return f\"{val:.2f}\"\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    gddbase = ctx[\"base\"]\n    gddceil = ctx[\"ceil\"]\n    varname = ctx[\"varname\"]\n    year = ctx[\"year\"]\n    threshold = ctx[\"thres\"]\n    stop = ctx.get(\"stop\")\n    params = {\n        \"gddbase\": gddbase,\n        \"gddceil\": gddceil,\n        \"t\": threshold,\n        \"station\": station,\n        \"sday\": ctx[\"sday\"].strftime(\"%m%d\"),\n        \"eday\": ctx[\"eday\"].strftime(\"%m%d\"),\n    }\n    dtlimiter = \"(sday >= :sday and sday <= :eday)\"\n    doff = \"year\"\n    if ctx[\"eday\"] < ctx[\"sday\"]:\n        dtlimiter = \"(sday >= :sday or sday <= :eday)\"\n        doff = \"case when sday <= :eday then year - 1 else year end\"\n    if stop is not None:\n        dtlimiter = \"sday >= :sday\"\n        doff = \"year\"\n    culler = \"\"\n    if varname.find(\"snow\") > -1:\n        culler = \" and snow is not null\"\n    elif varname.find(\"era5land_srad\") > -1:\n        culler = \" and era5land_srad is not null\"\n    elif varname.find(\"era5land_soilt4\") > -1:\n        culler = \" and era5land_soilt4_avg is not null\"\n    elif varname.find(\"era5land_soilm1m\") > -1:\n        culler = \" and era5land_soilm1m_avg is not null\"\n    elif varname.find(\"merra\") > -1:\n        culler = \" and merra_srad is not null\"\n    elif varname.find(\"narr\") > -1:\n        culler = \" and narr_srad is not null\"\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        SELECT {doff} as yr,\n        day, high, low, precip, snow, (high + low) / 2. as avg_temp,\n        high - low as range,\n        gddxx(:gddbase, :gddceil, high, low) as gdd, era5land_srad,\n        era5land_soilt4_avg, era5land_soilm1m_avg,\n        merra_srad, narr_srad\n        from alldata WHERE station = :station and {dtlimiter}\n        {culler} ORDER by day ASC\n        \"\"\",\n                doff=doff,\n                dtlimiter=dtlimiter,\n                culler=culler,\n            ),\n            conn,\n            params=params,\n            index_col=None,\n            parse_dates=\"day\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    if stop is not None:\n        # Compute the first date each year with the low below stop treshold\n        # and truncate the dataframe to that date.\n        df = (\n            df.assign(\n                hit=lambda df_: (\n                    (df_[\"day\"].dt.month >= 7) & (df_[\"low\"] < stop)\n                )\n            )\n            .groupby(\"yr\")\n            .apply(\n                lambda g: (\n                    g\n                    if not g[\"hit\"].any()\n                    else g.loc[: g.low[g[\"hit\"]].index[0]]\n                ),\n                include_groups=False,\n            )\n            .reset_index()\n            .transform(lambda g: g)\n            .reset_index(drop=True)\n            .set_index(\"day\")\n        )\n\n    # Now we compute the aggregates for each year.\n    df = (\n        df.reset_index()\n        .groupby(\"yr\")\n        .agg(\n            avg_temp=(\"avg_temp\", \"mean\"),\n            avg_high_temp=(\"high\", \"mean\"),\n            avg_low_temp=(\"low\", \"mean\"),\n            avg_range=(\"range\", \"mean\"),\n            precip=(\"precip\", \"sum\"),\n            snow=(\"snow\", \"sum\"),\n            gdd=(\"gdd\", \"sum\"),\n            min_low=(\"low\", \"min\"),\n            max_low=(\"low\", \"max\"),\n            max_high=(\"high\", \"max\"),\n            min_high=(\"high\", \"min\"),\n            days_high_above=(\"high\", lambda x: (x >= threshold).sum()),\n            days_high_below=(\"high\", lambda x: (x < threshold).sum()),\n            days_lows_above=(\"low\", lambda x: (x >= threshold).sum()),\n            days_lows_below=(\"low\", lambda x: (x < threshold).sum()),\n            days_snow_above=(\"snow\", lambda x: (x >= threshold).sum()),\n            days_precip_above=(\"precip\", lambda x: (x >= threshold).sum()),\n            count=(\"high\", \"count\"),\n            min_day=(\"day\", \"min\"),\n            avg_era5land_soilt4_avg=(\"era5land_soilt4_avg\", \"mean\"),\n            avg_era5land_soilm1m_avg=(\"era5land_soilm1m_avg\", \"mean\"),\n            avg_era5land_srad=(\"era5land_srad\", \"mean\"),\n            min_era5land_srad=(\"era5land_srad\", \"min\"),\n            max_era5land_srad=(\"era5land_srad\", \"max\"),\n            avg_merra_srad=(\"merra_srad\", \"mean\"),\n            min_merra_srad=(\"merra_srad\", \"min\"),\n            max_merra_srad=(\"merra_srad\", \"max\"),\n            avg_narr_srad=(\"narr_srad\", \"mean\"),\n            min_narr_srad=(\"narr_srad\", \"min\"),\n            max_narr_srad=(\"narr_srad\", \"max\"),\n        )\n        .reset_index()\n        .rename(\n            columns={\n                \"days_high_above\": \"days-high-above\",\n                \"days_high_below\": \"days-high-below\",\n                \"days_lows_above\": \"days-lows-above\",\n                \"days_lows_below\": \"days-lows-below\",\n                \"days_snow_above\": \"days-snow-above\",\n                \"days_precip_above\": \"days-precip-above\",\n            }\n        )\n        .set_index(\"yr\")\n        .assign(\n            range_high=lambda df_: df_[\"max_high\"] - df_[\"min_high\"],\n            range_low=lambda df_: df_[\"max_low\"] - df_[\"min_low\"],\n        )\n    )\n\n    fmter = intfmt if varname.find(\"days\") > -1 else nice\n    if varname in [\"min_low\", \"max_low\", \"min_high\", \"max_high\"]:\n        fmter = intfmt\n    yrfmter = intfmt if ctx[\"eday\"] > ctx[\"sday\"] else crossesjan1\n    if stop is None:\n        # require at least 90% coverage\n        df = df[df[\"count\"] >= (df[\"count\"].max() * 0.9)]\n    else:\n        # Drop last row\n        df = df.iloc[:-1]\n        # drop any rows with a min date not equal to sts\n        mm = ctx[\"sday\"].strftime(\"%m%d\")\n        df = df[df[\"min_day\"].dt.strftime(\"%m%d\") == mm]\n    # require values , not nan\n    df2 = df[df[varname].notnull()].sort_values(varname, ascending=False)\n\n    title = PDICT[varname].replace(\"(threshold)\", str(threshold))\n    title = (\n        f\"[{station}] {ctx['_nt'].sts[station]['name']}\\n\"\n        f\"{title} from {ctx['sday']:%-d %B} \"\n    )\n    if stop is None:\n        title += f\"through {ctx['eday']:%-d %B}\"\n    else:\n        title += f\"until first day after 1 July w/ Low < {stop}F\"\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.subplots(2, 1)\n    # Move axes over to make some room for the top 10\n    ax[0].set_position([0.07, 0.53, 0.78, 0.36])\n    ax[1].set_position([0.07, 0.1, 0.78, 0.36])\n\n    # Print top 10\n    dy = 0.03\n    ypos = 0.88\n    fig.text(0.86, ypos, \"Top 10\")\n    for yr, row in df2.head(10).iterrows():\n        ypos -= dy\n        _fp = {\"weight\": \"bold\"} if yr == year else {}\n        fig.text(0.86, ypos, yrfmter(yr), font_properties=_fp)\n        fig.text(0.95, ypos, fmter(row[varname]), font_properties=_fp)\n\n    ypos -= 4 * dy\n    fig.text(0.86, ypos, \"Bottom 10\")\n    ypos = ypos - 10 * dy\n    for yr, row in df2.tail(10).iterrows():\n        _fp = {\"weight\": \"bold\"} if yr == year else {}\n        fig.text(0.86, ypos, yrfmter(yr), font_properties=_fp)\n        fig.text(0.95, ypos, fmter(row[varname]), font_properties=_fp)\n        ypos += dy\n\n    bars = ax[0].bar(df.index, df[varname], facecolor=\"r\", edgecolor=\"r\")\n    thisvalue = \"M\"\n    for mybar, x, y in zip(bars, df.index, df[varname], strict=False):\n        if x == year:\n            mybar.set_facecolor(\"g\")\n            mybar.set_edgecolor(\"g\")\n            thisvalue = y\n    # Meh\n    for yr in range(df.index[0], df.index[-1] + 1):\n        if yr not in df.index:\n            ax[0].axvspan(\n                yr - 0.5,\n                yr + 0.5,\n                facecolor=\"skyblue\",\n            )\n    ax[0].set_xlabel(\n        f\"Year, {yrfmter(year)} = {fmter(thisvalue)}, \"\n        \"years shaded blue are missing\"\n    )\n    ax[0].axhline(\n        df[varname].mean(), lw=2, label=f\"Avg: {df[varname].mean():.2f}\"\n    )\n    ylabel = \"Temperature °F\"\n    if varname == \"precip\":\n        ylabel = \"Precipitation [inch]\"\n    elif varname == \"snow\":\n        ylabel = \"Snowfall [inch]\"\n    elif varname.find(\"srad\") > -1:\n        vv = PDICT[varname].replace(\"Daily\", \"Daily\\n\")\n        ylabel = f\"{vv} [MJ/d]\"\n    elif varname.find(\"days\") > -1:\n        ylabel = \"Days\"\n    elif varname == \"gdd\":\n        ylabel = f\"Growing Degree Days ({gddbase},{gddceil}) °F\"\n    elif varname.find(\"soilm\") > -1:\n        ylabel = r\"Soil Moisture $kg/kg$\"\n    ax[0].set_ylabel(ylabel)\n    ax[0].grid(True)\n    ax[0].legend(ncol=2, fontsize=10)\n    ax[0].set_xlim(df.index[0] - 1, df.index[-1] + 1)\n    rng = df[varname].max() - df[varname].min()\n    if varname in [\"snow\", \"precip\"] or varname.startswith(\"days\"):\n        ax[0].set_ylim(-0.1, df[varname].max() + rng * 0.3)\n    else:\n        ax[0].set_ylim(\n            df[varname].min() - rng * 0.3, df[varname].max() + rng * 0.3\n        )\n    box = ax[0].get_position()\n    ax[0].set_position([box.x0, box.y0 + 0.02, box.width, box.height * 0.98])\n    # Ensure that the x-axis labels are integer values\n    ax[0].xaxis.set_major_locator(MaxNLocator(10, integer=True))\n\n    # Plot 2: CDF\n    df2 = df[df[varname].notnull()]\n    X2 = np.sort(df2[varname])\n    ptile = np.percentile(df2[varname], [0, 5, 50, 95, 100])\n    N = len(df2[varname])\n    F2 = np.array(range(N)) / float(N) * 100.0\n    ax[1].plot(X2, 100.0 - F2)\n    ax[1].set_xlabel(ylabel)\n    ax[1].set_ylabel(\"Observed Frequency [%]\")\n    ax[1].grid(True)\n    ax[1].set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    if thisvalue != \"M\":\n        ax[1].axvline(thisvalue, color=\"g\")\n    mysort = df.sort_values(by=varname, ascending=True)\n    info = (\n        f\"Min: {df2[varname].min():.2f} {yrfmter(mysort.index[0])}\\n\"\n        f\"95th: {ptile[1]:.2f}\\n\"\n        f\"Mean: {np.average(df2[varname]):.2f}\\n\"\n        f\"STD: {np.std(df2[varname]):.2f}\\n\"\n        f\"5th: {ptile[3]:.2f}\\n\"\n        f\"Max: {df2[varname].max():.2f} {yrfmter(mysort.index[-1])}\"\n    )\n    ax[1].text(\n        0.75,\n        0.95,\n        info,\n        transform=ax[1].transAxes,\n        va=\"top\",\n        bbox=dict(facecolor=\"white\", edgecolor=\"k\"),\n    )\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p108.py",
    "content": "\"\"\"\nThis plot presents accumulated totals and departures\nof growing degree days (GDD), precipitation and stress degree days (SDD).\nLeap days\nare not considered for this plot. The light blue area represents the\nrange of accumulated values based on the observation history at the\nsite.\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"all\": \"Show All Three Plots\",\n    \"gdd\": \"Show just Growing Degree Days\",\n    \"precip\": \"Show just Precipitation\",\n    \"sdd\": \"Show just Stress Degree Days\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    if today.month < 5:\n        today = today.replace(year=today.year - 1, month=10, day=1)\n    sts = today.replace(month=5, day=1)\n\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            max=f\"{date.today():%Y}/12/31\",  # careful\n            default=sts.strftime(\"%Y/%m/%d\"),\n            label=\"Start Date (inclusive):\",\n            min=\"1893/01/01\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"edate\",\n            default=f\"{today:%Y/%m/%d}\",\n            max=f\"{date.today():%Y}/12/31\",  # careful\n            label=(\n                \"End Date (inclusive): [Setting to future date will increase \"\n                \"the x-axis to show more climatology]\"\n            ),\n            min=\"1893/01/01\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"base\",\n            default=\"50\",\n            label=\"Growing Degree Day Base (°F)\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"ceil\",\n            default=\"86\",\n            label=\"Growing Degree Day Ceiling (°F)\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year2\",\n            default=1893,\n            optional=True,\n            label=\"Compare with year (optional):\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year3\",\n            default=1893,\n            optional=True,\n            label=\"Compare with year (optional)\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year4\",\n            default=1893,\n            optional=True,\n            label=\"Compare with year (optional)\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"which\",\n            default=\"all\",\n            options=PDICT,\n            label=\"Which Charts to Show in Plot\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    sdate: date = ctx[\"sdate\"]\n    edate: date = ctx[\"edate\"]\n    if edate < sdate:\n        sdate, edate = edate, sdate\n    if f\"{sdate:%m%d}\" == \"0229\":\n        sdate = sdate.replace(day=1)\n    year2 = ctx.get(\"year2\", 0)\n    year3 = ctx.get(\"year3\", 0)\n    year4 = ctx.get(\"year4\", 0)\n    wantedyears = [sdate.year, year2, year3, year4]\n    yearcolors = [\"r\", \"g\", \"b\", \"purple\"]\n    gddbase = ctx[\"base\"]\n    gddceil = ctx[\"ceil\"]\n    whichplots = ctx[\"which\"]\n    glabel = f\"gdd{gddbase}{gddceil}\"\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH avgs as (\n            SELECT sday, avg(gddxx(:gddbase, :gddceil, high, low))\n                as c{glabel},\n            avg(sdd86(high, low)) as csdd86, avg(precip) as cprecip\n            from alldata WHERE station = :station GROUP by sday\n        )\n        SELECT day, gddxx(:gddbase, :gddceil, high, low) as o{glabel},\n        c{glabel}, o.precip as oprecip, cprecip,\n        sdd86(o.high, o.low) as osdd86, csdd86 from alldata o\n        JOIN avgs a on (o.sday = a.sday)\n        WHERE station = :station and o.sday != '0229' ORDER by day ASC\n        \"\"\",\n                glabel=glabel,\n            ),\n            conn,\n            params={\n                \"station\": station,\n                \"gddbase\": gddbase,\n                \"gddceil\": gddceil,\n            },\n            parse_dates=\"day\",\n            index_col=\"day\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found for this station!\")\n    # Trim the first year, if it does not start on sdate\n    if df.index[0].strftime(\"%m%d\") != sdate.strftime(\"%m%d\"):\n        df = df[df.index.year > df.index[0].year]\n    df[\"precip_diff\"] = df[\"oprecip\"] - df[\"cprecip\"]\n    df[f\"{glabel}_diff\"] = df[f\"o{glabel}\"] - df[f\"c{glabel}\"]\n\n    xlen = int((edate - sdate).days) + 1  # In case of leap day\n    years = (datetime.now().year - ab.year) + 1\n    acc = np.zeros((years, xlen))\n    acc[:] = np.nan\n    pacc = np.zeros((years, xlen))\n    pacc[:] = np.nan\n    sacc = np.zeros((years, xlen))\n    sacc[:] = np.nan\n    if whichplots == \"all\":\n        fig = figure(figsize=(9, 12), apctx=ctx)\n        ax1 = fig.add_axes((0.1, 0.7, 0.8, 0.2))\n        ax2 = fig.add_axes(\n            [0.1, 0.6, 0.8, 0.1], sharex=ax1, facecolor=\"#EEEEEE\"\n        )\n        ax3 = fig.add_axes([0.1, 0.35, 0.8, 0.2], sharex=ax1)\n        ax4 = fig.add_axes([0.1, 0.1, 0.8, 0.2], sharex=ax1)\n        title = (\n            f\"GDD(base={gddbase:.0f},ceil={gddceil:.0f}), Precip, & \"\n            \"SDD(base=86)\"\n        )\n    elif whichplots == \"gdd\":\n        fig = figure(apctx=ctx)\n        ax1 = fig.add_axes((0.14, 0.31, 0.8, 0.57))\n        ax2 = fig.add_axes(\n            [0.14, 0.11, 0.8, 0.2], sharex=ax1, facecolor=\"#EEEEEE\"\n        )\n        title = f\"GDD(base={gddbase:.0f},ceil={gddceil:.0f})\"\n    elif whichplots == \"precip\":\n        fig = figure(apctx=ctx)\n        ax3 = fig.add_axes((0.1, 0.11, 0.8, 0.75))\n        ax1 = ax3\n        title = \"Precipitation\"\n    else:  # sdd\n        fig = figure(apctx=ctx)\n        ax4 = fig.add_axes((0.1, 0.1, 0.8, 0.8))\n        ax1 = ax4\n        title = \"Stress Degree Days (base=86)\"\n\n    ax1.set_title(\n        f\"Accumulated {title}\\n{station} {ctx['_nt'].sts[station]['name']}\",\n        fontsize=18 if whichplots == \"all\" else 14,\n    )\n\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    for year in range(ab.year, datetime.now().year + 1):\n        sts = sdate.replace(year=year)\n        ets = sts + timedelta(days=xlen - 1)\n        slc = slice(pd.Timestamp(sts), pd.Timestamp(ets))\n        x = df.loc[slc, f\"o{glabel}\"].cumsum()\n        if x.empty:\n            continue\n        acc[(year - sdate.year), : len(x.index)] = x.to_numpy()\n        x = df.loc[slc, \"oprecip\"].cumsum()\n        pacc[(year - sdate.year), : len(x.index)] = x.to_numpy()\n        x = df.loc[slc, \"osdd86\"].cumsum()\n        sacc[(year - sdate.year), : len(x.index)] = x.to_numpy()\n\n        if year not in wantedyears:\n            continue\n        color = yearcolors[wantedyears.index(year)]\n        yearlabel = sts.year\n        if sts.year != ets.year:\n            yearlabel = f\"{sts.year}-{ets.year}\"\n        if whichplots in [\"gdd\", \"all\"]:\n            ax1.plot(\n                range(len(x.index)),\n                df.loc[slc, f\"o{glabel}\"].cumsum().values,\n                zorder=6,\n                color=color,\n                label=f\"{yearlabel}\",\n                lw=2,\n            )\n        # Get cumulated precip\n        p = df.loc[slc, \"oprecip\"].cumsum()\n        if whichplots in [\"all\", \"precip\"]:\n            ax3.plot(\n                range(len(p.index)),\n                p.values,\n                color=color,\n                lw=2,\n                zorder=6,\n                label=f\"{yearlabel}\",\n            )\n        p = df.loc[slc, \"osdd86\"].cumsum()\n        if whichplots in [\"all\", \"sdd\"]:\n            ax4.plot(\n                range(len(p.index)),\n                p.values,\n                color=color,\n                lw=2,\n                zorder=6,\n                label=f\"{yearlabel}\",\n            )\n\n        if wantedyears.index(year) == 0:\n            # Plot climatology, but do a trick to plot a larger time domain\n            csts = sts.replace(year=df.index[0].year)\n            cets = ets.replace(year=df.index[0].year)\n            cslc = slice(pd.Timestamp(csts), pd.Timestamp(cets))\n            x = df.loc[cslc, f\"c{glabel}\"].cumsum()\n            if whichplots in [\"all\", \"gdd\"]:\n                ax1.plot(\n                    range(len(x.index)),\n                    x.values,\n                    color=\"k\",\n                    label=\"Climatology\",\n                    lw=2,\n                    zorder=5,\n                )\n            x = df.loc[cslc, \"cprecip\"].cumsum()\n            if whichplots in [\"all\", \"precip\"]:\n                ax3.plot(\n                    range(len(x.index)),\n                    x.values,\n                    color=\"k\",\n                    label=\"Climatology\",\n                    lw=2,\n                    zorder=5,\n                )\n            x = df.loc[cslc, \"csdd86\"].cumsum()\n            if whichplots in [\"all\", \"sdd\"]:\n                ax4.plot(\n                    range(len(x.index)),\n                    x.values,\n                    color=\"k\",\n                    label=\"Climatology\",\n                    lw=2,\n                    zorder=5,\n                )\n\n        x = df.loc[slc, glabel + \"_diff\"].cumsum()\n        if whichplots in [\"all\", \"gdd\"]:\n            ax2.plot(\n                range(len(x.index)),\n                x.values,\n                color=color,\n                linewidth=2,\n                linestyle=\"--\",\n            )\n\n    xmin = np.nanmin(acc, 0)\n    xmax = np.nanmax(acc, 0)\n    if whichplots in [\"all\", \"gdd\"]:\n        ax1.fill_between(range(len(xmin)), xmin, xmax, color=\"lightblue\")\n        ax1.grid(True)\n        ax2.grid(True)\n    xmin = np.nanmin(pacc, 0)\n    xmax = np.nanmax(pacc, 0)\n    if whichplots in [\"all\", \"precip\"]:\n        ax3.fill_between(range(len(xmin)), xmin, xmax, color=\"lightblue\")\n        ax3.set_ylabel(\"Precipitation [inch]\", fontsize=16)\n        ax3.grid(True)\n    xmin = np.nanmin(sacc, 0)\n    xmax = np.nanmax(sacc, 0)\n    if whichplots in [\"all\", \"sdd\"]:\n        ax4.fill_between(range(len(xmin)), xmin, xmax, color=\"lightblue\")\n        ax4.set_ylabel(\"SDD Base 86 °F\", fontsize=16)\n        ax4.grid(True)\n\n    if whichplots in [\"all\", \"gdd\"]:\n        ax1.set_ylabel(\n            f\"GDD Base {gddbase:.0f} Ceil {gddceil:.0f} °F\",\n            fontsize=16,\n        )\n\n        ax1.text(\n            0.5,\n            0.9,\n            f\"{sdate.month}/{sdate.day} - {edate.month}/{edate.day}\",\n            transform=ax1.transAxes,\n            ha=\"center\",\n        )\n\n        ylim = ax2.get_ylim()\n        spread = max([abs(ylim[0]), abs(ylim[1])]) * 1.1\n        ax2.set_ylim(0 - spread, spread)\n        ax2.text(\n            0.02,\n            0.1,\n            \" Accumulated Departure \",\n            transform=ax2.transAxes,\n            bbox=dict(facecolor=\"white\", ec=\"#EEEEEE\"),\n        )\n        ax2.yaxis.tick_right()\n\n    xticks = []\n    xticklabels = []\n    wanted = [1] if xlen > 60 else [1, 7, 15, 22, 29]\n    now = sdate\n    i = 0\n    while now <= edate:\n        if now.day in wanted:\n            xticks.append(i)\n            xticklabels.append(now.strftime(\"%-d\\n%b\"))\n        now += timedelta(days=1)\n        i += 1\n    if whichplots in [\"all\", \"gdd\"]:\n        ax2.set_xticks(xticks)\n        ax2.set_xticklabels(xticklabels)\n        ax1.legend(loc=2, prop={\"size\": 12})\n        # Remove ticks on the top most plot\n        for label in ax1.get_xticklabels():\n            label.set_visible(False)\n\n        ax1.set_xlim(0, xlen + 1)\n    if whichplots in [\"all\", \"precip\"]:\n        ax3.set_xticks(xticks)\n        ax3.set_xticklabels(xticklabels)\n        ax3.legend(loc=2, prop={\"size\": 10})\n        ax3.set_xlim(0, xlen + 1)\n    if whichplots in [\"all\", \"sdd\"]:\n        ax4.set_xticks(xticks)\n        ax4.set_xticklabels(xticklabels)\n        ax4.legend(loc=2, prop={\"size\": 10})\n        ax4.set_xlim(0, xlen + 1)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p109.py",
    "content": "\"\"\"\nThis application generates per WFO or state maps of VTEC\nevent counts.  The current three available metrics are:<br />\n<ul>\n    <li><strong>Event Count</strong>: The number of distinct VTEC events.\n    A distinct event is simply the usage of one VTEC event identifier.</li>\n    <li><strong>Days with 1+ Events</strong>: This is the number of days\n    within the period of interest that had at least one VTEC event. A day\n    is defined within the US Central Time Zone.  If one event crosses\n    midnight, this would count as two days.</li>\n    <li><strong>Percent of Time</strong>: This is the temporal coverage\n    percentage within the period of interest.  Rewording, what percentage\n    of the time was at least one event active.</li>\n    <li><strong>Rank of Event Count</strong>: The ranking from least to\n    greatest of the given period's event count vs period of record\n    climatology.</li>\n    <li><strong>Departure from Average of Event Count</strong>: The number\n    of events that the given period differs from the period of record\n    climatology.</li>\n    <li><strong>Mean of Event Count</strong>: The average number of events\n    for the given period.</li>\n    <li><strong>Standardized Departure from Average of Event Count</strong>:\n    The departure expressed in sigma units of this periods event total\n    vs the period of record climatology.</li>\n</ul></p>\n\n<p><strong>PLEASE USE CAUTION</strong> with the departure from average\nplots as they are not exactly straight forward to compute.  If you are\nplotting small periods of time, individual events will heavily skew the\naverages.  The exact start date of each event type is not an exact\nscience due to the implementation of some products and other complexities.\nFor Severe Thunderstorm, Tornado, Flash Flood, and Marine Warnings, the\nIEM has a special accounting of these back to 2002.  For other event\ntypes, the archive starts with the VTEC implementation, which varies by\nproduct.</p>\n\n<p>Note that various VTEC events have differenting start periods of record.\nMost products go back to October 2005.</p>\n\"\"\"\n\nfrom datetime import date, datetime, timedelta, timezone\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws import vtec\nfrom pyiem.plot import MapPlot, get_cmap\n\nPDICT = {\n    \"count\": \"Event Count\",\n    \"days\": \"Days with 1+ Events\",\n    \"tpercent\": \"Percent of Time\",\n    \"count_rank\": \"Rank of Event Count (1=lowest)\",\n    \"count_departure\": \"Departure from Average of Event Count\",\n    \"count_mean\": \"Mean of Event Count\",\n    \"count_standard\": \"Standardized Departure from Average of Event Count\",\n}\nPDICT2 = {\n    \"all\": \"Use All VTEC Events\",\n    \"set\": \"Use Requested VTEC Events From Form\",\n}\nPDICT3 = {\n    \"pds\": \"Only PDS\",\n    \"yes\": \"Only Emergencies\",\n    \"all\": \"All Events\",\n}\nPDICT4 = {\n    \"wfo\": \"by WFO\",\n    \"state\": \"by State\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__}\n    desc[\"data\"] = True\n    today = date.today()\n    jan1 = today.replace(month=1, day=1)\n    tomorrow = today + timedelta(days=1)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"by\",\n            options=PDICT4,\n            default=\"wfo\",\n            label=\"Aggregate Statistics:\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"sdate\",\n            default=jan1.strftime(\"%Y/%m/%d 0000\"),\n            label=\"Start Date / Time (UTC, inclusive):\",\n            min=\"2002/01/01 0000\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"edate\",\n            default=today.strftime(\"%Y/%m/%d 2359\"),\n            label=\"End Date / Time (UTC):\",\n            min=\"2002/01/01 0000\",\n            max=f\"{tomorrow:%Y/%m/%d} 2359\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"count\",\n            options=PDICT,\n            label=\"Which metric to plot:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"w\",\n            default=\"set\",\n            options=PDICT2,\n            label=\"Option to plot all or form set VTEC Events:\",\n        ),\n        dict(\n            type=\"vtec_ps\",\n            name=\"v1\",\n            default=\"SV.W\",\n            label=\"VTEC Phenomena and Significance 1\",\n        ),\n        dict(\n            type=\"vtec_ps\",\n            name=\"v2\",\n            default=\"SV.W\",\n            optional=True,\n            label=\"VTEC Phenomena and Significance 2\",\n        ),\n        dict(\n            type=\"vtec_ps\",\n            name=\"v3\",\n            default=\"SV.W\",\n            optional=True,\n            label=\"VTEC Phenomena and Significance 3\",\n        ),\n        dict(\n            type=\"vtec_ps\",\n            name=\"v4\",\n            default=\"SV.W\",\n            optional=True,\n            label=\"VTEC Phenomena and Significance 4\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"e\",\n            default=\"all\",\n            label=\"Only plot Emergencies / PDS ?\",\n            options=PDICT3,\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"jet\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef get_count_df(ctx, varname: str, pstr: str, sts: datetime, ets: datetime):\n    \"\"\"Oh boy, do complex things.\"\"\"\n    emerg_extra = \"\"\n    if ctx[\"e\"] == \"yes\":\n        emerg_extra = \" and is_emergency \"\n    elif ctx[\"e\"] == \"pds\":\n        emerg_extra = \" and is_pds \"\n    params = {}\n    # Careful here, we could come in with varname == \"count\"\n    if varname.startswith(\"count_\"):\n        if (ets - sts).days > 366:\n            raise NoDataFound(\"Can't compute over period > 366 days\")\n        params[\"sday\"] = f\"{sts:%m%d}\"\n        params[\"eday\"] = f\"{ets:%m%d}\"\n        slimiter = (\n            \" (to_char(issue, 'mmdd') >= :sday and \"\n            \"to_char(issue, 'mmdd') <= :eday ) \"\n        )\n        yearcol = \"vtec_year\"\n        if params[\"eday\"] <= params[\"sday\"]:\n            slimiter = slimiter.replace(\" and \", \" or \")\n            yearcol = (\n                \"case when to_char(issue, 'mmdd') <= :eday then \"\n                \"vtec_year - 1 else vtec_year end\"\n            )\n\n        # compute all the things.\n        params[\"sdate\"] = \"2002-01-01\"\n        if pstr == \" 1=1 \":\n            params[\"sdate\"] = \"2005-10-01\"\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            if ctx[\"by\"] == \"state\":\n                sql = \"\"\"\n                with events as (\n                    select distinct wfo, substr(ugc, 1, 2) as state,\n                    {yearcol} as year,\n                    phenomena, eventid from warnings where {pstr} and\n                    {slimiter} and issue > :sdate {emerg_extra})\n                select state as datum, year::int as year, count(*) from events\n                group by datum, year\n                \"\"\"\n            else:\n                sql = \"\"\"\n                with events as (\n                    select distinct wfo, {yearcol} as year,\n                    phenomena, eventid from warnings where {pstr} and\n                    {slimiter} and issue > :sdate {emerg_extra})\n                select wfo as datum, year::int as year, count(*) from events\n                group by datum, year\n                \"\"\"\n            df = pd.read_sql(\n                sql_helper(\n                    sql,\n                    yearcol=yearcol,\n                    slimiter=slimiter,\n                    pstr=pstr,\n                    emerg_extra=emerg_extra,\n                ),\n                conn,\n                params=params,\n                index_col=None,\n            )\n        # enlarge by wfo and year cartesian product\n        ctx[\"_subtitle\"] = (\n            \", Period of Record: \"\n            f\"{df['year'].min():.0f}-{df['year'].max():.0f}\"\n        )\n        idx = pd.MultiIndex.from_product(\n            [df[\"datum\"].unique(), df[\"year\"].unique()],\n            names=[\"datum\", \"year\"],\n        )\n        df = (\n            df.set_index([\"datum\", \"year\"])\n            .reindex(idx)\n            .fillna(0)\n            .reset_index()\n        )\n        df[\"rank\"] = df.groupby(\"datum\")[\"count\"].rank(\n            method=\"min\", ascending=True\n        )\n        thisyear = (\n            df[df[\"year\"] == sts.year].set_index(\"datum\").drop(\"year\", axis=1)\n        )\n        # Ready to construct final df.\n        df = (\n            df[[\"datum\", \"count\"]].groupby(\"datum\").agg([\"mean\", \"std\"]).copy()\n        )\n        df.columns = [\"_\".join(a) for a in df.columns.to_flat_index()]\n        df[[\"count\", \"count_rank\"]] = thisyear[[\"count\", \"rank\"]]\n        df[\"count_departure\"] = df[\"count\"] - df[\"count_mean\"]\n        df[\"count_standard\"] = df[\"count_departure\"] / df[\"count_std\"]\n    else:\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            if ctx[\"by\"] == \"state\":\n                sql = \"\"\"\n                with total as (\n                select distinct wfo, substr(ugc, 1, 2) as state,\n                extract(year from issue at time zone 'UTC') as year,\n                phenomena, significance, eventid from warnings\n                where {pstr} and issue >=:sts and issue < :ets {emerg_extra}\n                )\n\n                SELECT state as datum, count(*) from total\n                GROUP by datum\n                \"\"\"\n            else:\n                sql = \"\"\"\n                with total as (\n                select distinct wfo,\n                extract(year from issue at time zone 'UTC') as year,\n                phenomena, significance, eventid from warnings\n                where {pstr} and issue >= :sts and issue < :ets {emerg_extra}\n                )\n\n                SELECT wfo as datum, count(*) from total\n                GROUP by datum\n                \"\"\"\n            df = pd.read_sql(\n                sql_helper(sql, pstr=pstr, emerg_extra=emerg_extra),\n                conn,\n                params={\"sts\": sts, \"ets\": ets},\n                index_col=\"datum\",\n            )\n    return df\n\n\ndef get_count_bins(df, varname):\n    \"\"\"Figure out sensible bins.\"\"\"\n    minv = df[varname].min()\n    maxv = df[varname].max()\n    if pd.isna(maxv):\n        return np.arange(1, 10, 1)\n    if varname == \"count_rank\":\n        bins = np.arange(1, maxv + 2)\n    elif varname in [\"count\", \"count_mean\"]:\n        bins = [1, 2, 3, 5, 10, 15, 20, 25, 30, 40, 50, 75, 100, 200]\n        if maxv > 5000:\n            bins = [\n                1,\n                5,\n                10,\n                50,\n                100,\n                250,\n                500,\n                750,\n                1000,\n                1500,\n                2000,\n                3000,\n                5000,\n                7500,\n                10000,\n            ]\n        elif maxv > 1000:\n            bins = [\n                1,\n                5,\n                10,\n                50,\n                100,\n                150,\n                200,\n                250,\n                500,\n                750,\n                1000,\n                1250,\n                1500,\n                2000,\n            ]\n        elif maxv > 200:\n            bins = [\n                1,\n                3,\n                5,\n                10,\n                20,\n                35,\n                50,\n                75,\n                100,\n                150,\n                200,\n                250,\n                500,\n                750,\n                1000,\n            ]\n        elif maxv < 75:\n            bins = [1, 2, 3, 5, 10, 15, 20, 25, 30, 40, 50, 75]\n    elif max([abs(minv), abs(maxv)]) > 100:\n        bins = [-200, -150, -100, -50, -25, -10, 0, 10, 25, 50, 100, 150, 200]\n    elif max([abs(minv), abs(maxv)]) > 10:\n        bins = [-100, -50, -25, -10, -5, 0, 5, 10, 25, 50, 100]\n    else:\n        bins = np.arange(-3, 3.1, 0.5)\n    return bins\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    sts = ctx[\"sdate\"].replace(tzinfo=timezone.utc)\n    ets = ctx[\"edate\"].replace(tzinfo=timezone.utc)\n    p1 = ctx[\"phenomenav1\"]\n    p2 = ctx[\"phenomenav2\"]\n    p3 = ctx[\"phenomenav3\"]\n    p4 = ctx[\"phenomenav4\"]\n    varname = ctx[\"var\"]\n    phenomena = [p[:2] for p in [p1, p2, p3, p4] if p is not None]\n    s1 = ctx[\"significancev1\"]\n    s2 = ctx[\"significancev2\"]\n    s3 = ctx[\"significancev3\"]\n    s4 = ctx[\"significancev4\"]\n    significance = [s[0] for s in [s1, s2, s3, s4] if s is not None]\n\n    pstr = []\n    subtitle = \"\"\n    title = \"\"\n    for p, s in zip(phenomena, significance, strict=False):\n        pstr.append(f\"(phenomena = '{p}' and significance = '{s}')\")\n        subtitle += f\"{p}.{s} \"\n        title += vtec.get_ps_string(p, s)\n    if len(phenomena) > 1:\n        title = \"VTEC Unique Event\"\n    pstr = \" or \".join(pstr)\n    pstr = f\"({pstr})\"\n    if ctx[\"w\"] == \"all\":\n        pstr = \" 1=1 \"\n        subtitle = \"All\"\n        title = \"All VTEC Events\"\n    cmap = get_cmap(ctx[\"cmap\"])\n\n    extend = \"neither\"\n    emerg_extra = \"\"\n    if ctx[\"e\"] == \"yes\":\n        emerg_extra = \" and is_emergency \"\n        title += \" (Emergencies) \"\n    elif ctx[\"e\"] == \"pds\":\n        emerg_extra = \" and is_pds \"\n        title += \" (Particularly Dangerous Situation) \"\n    subtitle_extra = \"\"\n    if varname.startswith(\"count\"):\n        df = get_count_df(ctx, varname, pstr, sts, ets)\n\n        bins = get_count_bins(df, varname)\n        lformat = \"%.0f\"\n        units = \"Count\"\n        if varname in [\"count\", \"count_mean\"]:\n            extend = \"max\"\n            # Can't do state as events are double counted\n            if ctx[\"by\"] == \"wfo\":\n                subtitle_extra = (\n                    f\" {df['count'].sum():,.0f} Events over \"\n                    f\"{len(df.index):.0f} WFOs\"\n                )\n        elif varname == \"count_rank\":\n            extend = \"neither\"\n            units = \"Rank\"\n        else:\n            if varname == \"count_standard\":\n                lformat = \"%.1f\"\n                units = \"sigma\"\n            extend = \"both\"\n        df2 = df[varname]\n    elif varname == \"days\":\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            if ctx[\"by\"] == \"state\":\n                sql = \"\"\"\n            WITH data as (\n                SELECT distinct substr(ugc, 1, 2) as state,\n                generate_series(greatest(issue, :sts),\n                least(expire, :ets), '1 minute'::interval) as ts from warnings\n                WHERE issue > :sts and expire < :ets and {pstr} {emerg_extra}\n            ), agg as (\n                SELECT distinct state, date(ts) from data\n            )\n            select state as datum, count(*) as days from agg\n            GROUP by datum ORDER by days DESC\n            \"\"\"\n            else:\n                sql = \"\"\"\n            WITH data as (\n                SELECT distinct wfo, generate_series(greatest(issue, :sts),\n                least(expire, :ets), '1 minute'::interval) as ts from warnings\n                WHERE issue > :sts2 and expire < :ets2 and {pstr} {emerg_extra}\n            ), agg as (\n                SELECT distinct wfo, date(ts) from data\n            )\n            select wfo as datum, count(*) as days from agg\n            GROUP by datum ORDER by days DESC\n            \"\"\"\n            df = pd.read_sql(\n                sql_helper(sql, pstr=pstr, emerg_extra=emerg_extra),\n                conn,\n                params={\n                    \"sts\": sts,\n                    \"ets\": ets,\n                    \"sts2\": sts - timedelta(days=90),\n                    \"ets2\": ets + timedelta(days=90),\n                },\n                index_col=\"datum\",\n            )\n\n        df2 = df[\"days\"]\n        if df2.max() < 10:\n            bins = list(range(1, 11, 1))\n        else:\n            bins = np.linspace(1, df[\"days\"].max() + 11, 10, dtype=\"i\")\n        units = \"Days\"\n        lformat = \"%.0f\"\n        cmap.set_under(\"white\")\n        cmap.set_over(\"#EEEEEE\")\n    else:\n        total_minutes = (ets - sts).total_seconds() / 60.0\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            if ctx[\"by\"] == \"state\":\n                sql = \"\"\"\n            WITH data as (\n                SELECT distinct substr(ugc, 1, 2) as state,\n                generate_series(greatest(issue, :sts),\n                least(expire, :ets), '1 minute'::interval) as ts from warnings\n                WHERE issue > :sts2 and expire < :ets2 and {pstr} {emerg_extra}\n            )\n            select state as datum,\n            count(*) / cast(:mins as real) * 100. as tpercent\n            from data GROUP by datum ORDER by tpercent DESC\n            \"\"\"\n            else:\n                sql = \"\"\"\n            WITH data as (\n                SELECT distinct wfo, generate_series(greatest(issue, :sts),\n                least(expire, :ets), '1 minute'::interval) as ts from warnings\n                WHERE issue > :sts2 and expire < :ets2 and {pstr} {emerg_extra}\n            )\n            select wfo as datum,\n            count(*) / cast(:mins as real) * 100. as tpercent\n            from data GROUP by datum ORDER by tpercent DESC\n            \"\"\"\n            df = pd.read_sql(\n                sql_helper(sql, pstr=pstr, emerg_extra=emerg_extra),\n                conn,\n                params={\n                    \"sts\": sts,\n                    \"ets\": ets,\n                    \"sts2\": sts - timedelta(days=90),\n                    \"ets2\": ets + timedelta(days=90),\n                    \"mins\": total_minutes,\n                },\n                index_col=\"datum\",\n            )\n\n        df2 = df[\"tpercent\"]\n        bins = list(range(0, 101, 10))\n        if df2.max() < 5:\n            bins = np.arange(0, 5.1, 0.5)\n        elif df2.max() < 10:\n            bins = list(range(0, 11, 1))\n        units = \"Percent\"\n        lformat = \"%.1f\"\n\n    domain = f\"{sts:%d %b %Y %H:%M} - {ets:%d %b %Y %H:%M}\"\n    if varname == \"count_mean\":\n        domain = f\"{sts:%d %b %H:%M} - {ets:%d %b %H:%M}\"\n    mp = MapPlot(\n        apctx=ctx,\n        sector=\"nws\",\n        axisbg=\"white\",\n        nocaption=True,\n        title=f\"{title} {PDICT[varname]} {PDICT4[ctx['by']]}\",\n        subtitle=(\n            f\"Issued between {domain} UTC, \"\n            f\"based on VTEC: {subtitle} {ctx.get('_subtitle', '')}\"\n            f\"{subtitle_extra}\"\n        ),\n    )\n    func = mp.fill_cwas if ctx[\"by\"] == \"wfo\" else mp.fill_states\n    if df2.empty:\n        mp.fig.text(\n            0.5,\n            0.5,\n            \"No Events Found\",\n            ha=\"center\",\n            va=\"center\",\n            fontsize=\"large\",\n        )\n    else:\n        func(\n            df2,\n            bins=bins,\n            ilabel=True,\n            units=units,\n            lblformat=lformat,\n            cmap=cmap,\n            extend=extend,\n            labelbuffer=0,\n        )\n\n    return mp.fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p110.py",
    "content": "\"\"\"\nThis plot presents the weekly percentage of\nprecipitation events within a given rainfall bin.\n\"\"\"\n\nfrom calendar import month_abbr\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\nCWEEK = {\n    1: \"3/1-->3/7   \",\n    2: \"3/8-->3/14  \",\n    3: \"3/15-->3/21 \",\n    4: \"3/22-->3/28 \",\n    5: \"3/29-->4/4  \",\n    6: \"4/5-->4/11  \",\n    7: \"4/12-->4/18 \",\n    8: \"4/19-->4/25 \",\n    9: \"4/26-->5/2  \",\n    10: \"5/3-->5/9   \",\n    11: \"5/10-->5/16 \",\n    12: \"5/17-->5/23 \",\n    13: \"5/24-->5/30 \",\n    14: \"5/31-->6/6  \",\n    15: \"6/7-->6/13  \",\n    16: \"6/14-->6/20 \",\n    17: \"6/21-->6/27 \",\n    18: \"6/28-->7/4  \",\n    19: \"7/5-->7/11  \",\n    20: \"7/12-->7/18 \",\n    21: \"7/19-->7/25 \",\n    22: \"7/26-->8/1  \",\n    23: \"8/2-->8/8   \",\n    24: \"8/9-->8/15  \",\n    25: \"8/16-->8/22 \",\n    26: \"8/23-->8/29 \",\n    27: \"8/30-->9/5  \",\n    28: \"9/6-->9/12  \",\n    29: \"9/13-->9/19 \",\n    30: \"9/20-->9/26 \",\n    31: \"9/27-->10/3 \",\n    32: \"10/4-->10/10\",\n    33: \"10/11-->10/17\",\n    34: \"10/18-->10/24\",\n    35: \"10/25-->10/31\",\n    36: \"11/1-->11/7 \",\n    37: \"11/8-->11/14\",\n    38: \"11/15-->11/21\",\n    39: \"11/22-->11/28\",\n    40: \"11/29-->12/5\",\n    41: \"12/6-->12/12\",\n    42: \"12/13-->12/19\",\n    43: \"12/20-->12/26\",\n    44: \"12/27-->1/2 \",\n    45: \"1/3-->1/9   \",\n    46: \"1/10-->1/16 \",\n    47: \"1/17-->1/23 \",\n    48: \"1/24-->1/30 \",\n    49: \"1/31-->2/6  \",\n    50: \"2/7-->2/13  \",\n    51: \"2/14-->2/20 \",\n    52: \"2/21-->2/27 \",\n    53: \"2/28-->2/29 \",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"report\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n\n    table = f\"alldata_{station[:2].lower()}\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        with events as (\n            SELECT c.climoweek, a.precip, a.year from {table} a\n            JOIN climoweek c on (c.sday = a.sday) WHERE a.station = :station\n            and precip > 0.009),\n        ranks as (\n            SELECT climoweek, year,\n            rank() OVER (\n                PARTITION by climoweek ORDER by precip DESC, year DESC)\n            from events),\n        stats as (\n        SELECT climoweek, max(precip), avg(precip),\n        sum(case when precip > 0.009 and precip < 0.26 then 1 else 0 end)\n            as cat1,\n        sum(case when precip >= 0.26 and precip < 0.51 then 1 else 0 end)\n            as cat2,\n        sum(case when precip >= 0.51 and precip < 1.01 then 1 else 0 end)\n            as cat3,\n        sum(case when precip >= 1.01 and precip < 2.01 then 1 else 0 end)\n            as cat4,\n        sum(case when precip >= 2.01 then 1 else 0 end) as cat5,\n        sum(case when precip > 0.009 and precip < 0.26 then precip else 0 end)\n            as sum_cat1,\n        sum(case when precip >= 0.26 and precip < 0.51 then precip else 0 end)\n            as sum_cat2,\n        sum(case when precip >= 0.51 and precip < 1.01 then precip else 0 end)\n            as sum_cat3,\n        sum(case when precip >= 1.01 and precip < 2.01 then precip else 0 end)\n            as sum_cat4,\n        sum(case when precip >= 2.01 then precip else 0 end) as sum_cat5,\n        count(*) from events GROUP by climoweek)\n        SELECT e.*, r.year from\n        stats e JOIN ranks r on (r.climoweek = e.climoweek) WHERE r.rank = 1\n        ORDER by e.climoweek ASC\n        \"\"\",\n                table=table,\n            ),\n            conn,\n            params={\"station\": station},\n            index_col=\"climoweek\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    bins = {\n        1: \"0.01 - 0.25\",\n        2: \"0.26 - 0.50\",\n        3: \"0.51 - 1.00\",\n        4: \"1.01 - 2.00\",\n        5: \"2.01 +\",\n    }\n    today = date.today()\n    res = (\n        \"# IEM Climodat https://mesonet.agron.iastate.edu/climodat/\\n\"\n        f\"# Report Generated: {today:%d %b %Y}\\n\"\n        \"# Climate Record: \"\n        f\"{ctx['_nt'].sts[station]['archive_begin']} -> {today}\\n\"\n        f\"# Site Information: {ctx['_sname']}\\n\"\n        \"# Contact Information: \"\n        \"Daryl Herzmann akrherz@iastate.edu 515.294.5978\\n\"\n        \"# Based on climoweek periods, this report summarizes liquid \"\n        \"precipitation.\\n\"\n        \"#                                     Number of precip events - \"\n        \"(% of total)\\n\"\n        \" CL                MAX         MEAN   0.01-    0.26-    0.51-    \"\n        \"1.01-            TOTAL\\n\"\n        \" WK TIME PERIOD    VAL  YR     RAIN     0.25     0.50     1.00     \"\n        \"2.00    >2.01  DAYS\\n\"\n    )\n    title = f\"{ctx['_sname']}:: Precipitation Bin [inch] Frequency Histogram\"\n    fig = figure(title=title, apctx=ctx)\n    ax = fig.add_axes((0.1, 0.15, 0.8, 0.75))\n    df[\"total\"] = (\n        df[\"cat1\"] + df[\"cat2\"] + df[\"cat3\"] + df[\"cat4\"] + df[\"cat5\"]\n    )\n    for i in range(1, 6):\n        df[f\"cat{i}f\"] = df[f\"cat{i}\"] / df[\"total\"] * 100.0\n    cs = df[[\"cat1f\", \"cat2f\", \"cat3f\", \"cat4f\", \"cat5f\"]].cumsum(axis=1)\n    cs[\"cat0f\"] = 0\n    # Reset xaxis to make it prettier\n    cs = (\n        cs.assign(\n            x=lambda df_: np.where(\n                df_.index.values > 44,\n                df_.index.values - 45,\n                df_.index.values + 9,\n            ),\n            cat1=df[\"cat1f\"],\n            cat2=df[\"cat2f\"],\n            cat3=df[\"cat3f\"],\n            cat4=df[\"cat4f\"],\n            cat5=df[\"cat5f\"],\n        )\n        .sort_values(\"x\", ascending=True)\n        .drop(53, errors=\"ignore\")\n    )\n    for i in range(1, 6):\n        # We fake a x-axis to remove the weird start on Mar 1 thing\n        ax.bar(\n            np.arange(0, len(cs.index)) * 7,\n            cs[f\"cat{i}\"].values,\n            bottom=cs[f\"cat{i - 1}f\"].values,\n            label=bins[i],\n            width=7.0,\n        )\n    ax.grid(True)\n    ax.legend(ncol=5, loc=(0.1, -0.15))\n    ax.set_ylabel(\"Daily Frequency of Precip Bin by Climoweek [%]\")\n    ax.set_xlabel(\"Groupted by Climoweek of Year\")\n    ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax.set_xticklabels(month_abbr[1:])\n    ax.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    ax.set_xlim(-0.5, 358.5)\n\n    annEvents = 0\n    cat1t = 0\n    cat2t = 0\n    cat3t = 0\n    cat4t = 0\n    cat5t = 0\n    maxRain = 0\n    totRain = 0\n    for cw, row in df.iterrows():\n        cat1 = row[\"cat1\"]\n        cat2 = row[\"cat2\"]\n        cat3 = row[\"cat3\"]\n        cat4 = row[\"cat4\"]\n        cat5 = row[\"cat5\"]\n        cat1t += cat1\n        cat2t += cat2\n        cat3t += cat3\n        cat4t += cat4\n        cat5t += cat5\n        maxval = row[\"max\"]\n        if maxval > maxRain:\n            maxRain = maxval\n        meanval = row[\"avg\"]\n        annEvents += row[\"total\"]\n        totRain += row[\"total\"] * meanval\n\n        res += (\n            \"%3s %-13s %5.2f %i   %4.2f %4i(%2i) %4i(%2i) \"\n            \"%4i(%2i) %4i(%2i) %4i(%2i)   %4i\\n\"\n        ) % (\n            cw,\n            CWEEK[cw],\n            maxval,\n            row[\"year\"],\n            meanval,\n            cat1,\n            round((float(cat1) / float(row[\"total\"])) * 100.0),\n            cat2,\n            round((float(cat2) / float(row[\"total\"])) * 100.0),\n            cat3,\n            round((float(cat3) / float(row[\"total\"])) * 100.0),\n            cat4,\n            round((float(cat4) / float(row[\"total\"])) * 100.0),\n            cat5,\n            round((float(cat5) / float(row[\"total\"])) * 100.0),\n            row[\"total\"],\n        )\n\n    res += (\n        \"%-17s %5.2f        %4.2f %4i(%2i) %4i(%2i) \"\n        \"%4i(%2i) %4i(%2i) %4i(%2i)  %5i\\n\"\n    ) % (\n        \"ANNUAL TOTALS\",\n        maxRain,\n        totRain / float(annEvents),\n        cat1t,\n        (float(cat1t) / float(annEvents)) * 100,\n        cat2t,\n        (float(cat2t) / float(annEvents)) * 100,\n        cat3t,\n        (float(cat3t) / float(annEvents)) * 100,\n        cat4t,\n        (float(cat4t) / float(annEvents)) * 100,\n        cat5t,\n        (float(cat5t) / float(annEvents)) * 100,\n        annEvents,\n    )\n\n    return fig, df, res\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p111.py",
    "content": "\"\"\"Top 30 24-Hour Precipitation Events.\n\n<a href=\"/plotting/auto/?q=134\">Autoplot 134</a> is a more functional interface\nthan this legacy \"climodat\" based one.\n\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\n        \"description\": __doc__,\n        \"data\": True,\n        \"report\": True,\n        \"nopng\": True,\n    }\n    desc[\"arguments\"] = [\n        ARG_STATION,\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"SELECT day, precip from alldata WHERE \"\n                \"station = :station and precip is not null \"\n                \"ORDER by precip DESC LIMIT 30\"\n            ),\n            conn,\n            params={\"station\": station},\n            index_col=None,\n        )\n\n    res = (\n        \"# IEM Climodat https://mesonet.agron.iastate.edu/climodat/\\n\"\n        f\"# Report Generated: {date.today():%d %b %Y}\\n\"\n        f\"# Climate Record: {ctx['_nt'].sts[station]['archive_begin']} \"\n        f\"-> {date.today()}\\n\"\n        f\"# Site Information: {ctx['_sname']}\\n\"\n        \"# Contact Information: Daryl Herzmann \"\n        \"akrherz@iastate.edu 515.294.5978\\n\"\n        \"# Top 30 single day rainfalls\\n\"\n        \" MONTH  DAY  YEAR   AMOUNT\\n\"\n    )\n\n    for _, row in df.iterrows():\n        res += (\n            f\"{row['day'].month:4.0f}{row['day'].day:7.0f}\"\n            f\"{row['day'].year:6.0f}{row['precip']:9.2f}\\n\"\n        )\n\n    return None, df, res\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p112.py",
    "content": "\"\"\"\nThis application totals growing degree days by\nmonth and year.\n\"\"\"\n\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    return {\n        \"description\": __doc__,\n        \"data\": True,\n        \"report\": True,\n        \"nopng\": True,\n        \"arguments\": [\n            ARG_STATION,\n            dict(\n                type=\"int\",\n                name=\"base\",\n                default=\"52\",\n                label=\"Growing Degree Day Base (°F)\",\n            ),\n            dict(\n                type=\"int\",\n                name=\"ceil\",\n                default=\"86\",\n                label=\"Growing Degree Day Ceiling (°F)\",\n            ),\n        ],\n    }\n\n\ndef modMonth(\n    stationID, db, monthly, mo1, mo2, mt1, mt2, ctx, gddbase, gddceil\n):\n    \"\"\"modMonth.\"\"\"\n    res = (\n        \"\\n               %-12s                %-12s\\n\"\n        \"     ****************************  ***************************\\n\"\n        \" YEAR  40-86  48-86  50-86  %.0f-%.0f\"\n        \"   40-86  48-86  50-86  %.0f-%.0f\\n\"\n        \"     ****************************  *************************** \\n\"\n    ) % (mt1, mt2, gddbase, gddceil, gddbase, gddceil)\n    ab = ctx[\"_nt\"].sts[stationID][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    s = ab.year\n    e = date(date.today().year + 1, 1, 1)\n    for year in range(s, e.year):\n        now = date(year, 1, 1)\n        m1 = now.replace(month=mo1)\n        m2 = now.replace(month=mo2)\n        if m1 >= e or m1 not in db:\n            db[m1] = {\"40\": \"M\", \"48\": \"M\", \"50\": \"M\", \"XX\": \"M\"}\n        if m2 >= e or m2 not in db:\n            db[m2] = {\"40\": \"M\", \"48\": \"M\", \"50\": \"M\", \"XX\": \"M\"}\n        res += (\"%5i%7s%7s%7s%7s%7s%7s%7s%7s\\n\") % (\n            now.year,\n            db[m1][\"40\"],\n            db[m1][\"48\"],\n            db[m1][\"50\"],\n            db[m1][\"XX\"],\n            db[m2][\"40\"],\n            db[m2][\"48\"],\n            db[m2][\"50\"],\n            db[m2][\"XX\"],\n        )\n\n    res += \"     ****************************  ****************************\\n\"\n    res += (\" MEAN%7.1f%7.1f%7.1f%7.1f%7.1f%7.1f%7.1f%7.1f\\n\") % (\n        np.average(monthly[mo1][\"40\"]),\n        np.average(monthly[mo1][\"48\"]),\n        np.average(monthly[mo1][\"50\"]),\n        np.average(monthly[mo1][\"XX\"]),\n        np.average(monthly[mo2][\"40\"]),\n        np.average(monthly[mo2][\"48\"]),\n        np.average(monthly[mo2][\"50\"]),\n        np.average(monthly[mo2][\"XX\"]),\n    )\n    res += (\" STDV%7.1f%7.1f%7.1f%7.1f%7.1f%7.1f%7.1f%7.1f\\n\") % (\n        np.std(monthly[mo1][\"40\"]),\n        np.std(monthly[mo1][\"48\"]),\n        np.std(monthly[mo1][\"50\"]),\n        np.std(monthly[mo1][\"XX\"]),\n        np.std(monthly[mo2][\"40\"]),\n        np.std(monthly[mo2][\"48\"]),\n        np.std(monthly[mo2][\"50\"]),\n        np.std(monthly[mo2][\"XX\"]),\n    )\n    return res\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    gddbase = ctx[\"base\"]\n    gddceil = ctx[\"ceil\"]\n    varname = f\"gdd{gddbase}{gddceil}\"\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        SELECT year, month, sum(precip) as sum_precip,\n        avg(high) as avg_high,\n        avg(low) as avg_low,\n        sum(cdd(high,low,60)) as cdd60,\n        sum(cdd(high,low,65)) as cdd65,\n        sum(hdd(high,low,60)) as hdd60,\n        sum(hdd(high,low,65)) as hdd65,\n        sum(case when precip > 0.009 then 1 else 0 end) as rain_days,\n        sum(case when snow >= 0.1 then 1 else 0 end) as snow_days,\n        sum(gddxx(40,86,high,low)) as gdd40,\n        sum(gddxx(48,86,high,low)) as gdd48,\n        sum(gddxx(50,86,high,low)) as gdd50,\n        sum(gddxx(:gddbase, :gddceil, high, low)) as {varname}\n        from alldata WHERE station = :station GROUP by year, month\n        \"\"\",\n                varname=varname,\n            ),\n            conn,\n            params={\n                \"station\": station,\n                \"gddbase\": gddbase,\n                \"gddceil\": gddceil,\n            },\n            index_col=None,\n        )\n\n    bs = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if bs is None:\n        raise NoDataFound(\"No Data Found.\")\n    res = f\"\"\"\\\n# IEM Climodat https://mesonet.agron.iastate.edu/climodat/\n# Report Generated: {date.today().strftime(\"%d %b %Y\")}\n# Climate Record: {bs} -> {date.today()}\n# Site Information: {ctx[\"_sname\"]}\n# Contact Information: Daryl Herzmann akrherz@iastate.edu 515.294.5978\n# GROWING DEGREE DAYS FOR 4 BASE TEMPS FOR STATION ID {station}\n\"\"\"\n    monthly = [{\"40\": [], \"48\": [], \"50\": [], \"XX\": []}] * 13\n\n    db = {}\n    for _, row in df.iterrows():\n        ts = date(int(row[\"year\"]), int(row[\"month\"]), 1)\n        db[ts] = {\n            \"40\": float(row[\"gdd40\"]),\n            \"48\": float(row[\"gdd48\"]),\n            \"50\": float(row[\"gdd50\"]),\n            \"XX\": float(row[varname]),\n        }\n        monthly[ts.month][\"40\"].append(float(row[\"gdd40\"]))\n        monthly[ts.month][\"48\"].append(float(row[\"gdd48\"]))\n        monthly[ts.month][\"50\"].append(float(row[\"gdd50\"]))\n        monthly[ts.month][\"XX\"].append(float(row[varname]))\n\n    res += modMonth(\n        station,\n        db,\n        monthly,\n        1,\n        2,\n        \"JANUARY\",\n        \"FEBRUARY\",\n        ctx,\n        gddbase,\n        gddceil,\n    )\n    res += modMonth(\n        station, db, monthly, 3, 4, \"MARCH\", \"APRIL\", ctx, gddbase, gddceil\n    )\n    res += modMonth(\n        station, db, monthly, 5, 6, \"MAY\", \"JUNE\", ctx, gddbase, gddceil\n    )\n    res += modMonth(\n        station, db, monthly, 7, 8, \"JULY\", \"AUGUST\", ctx, gddbase, gddceil\n    )\n    res += modMonth(\n        station,\n        db,\n        monthly,\n        9,\n        10,\n        \"SEPTEMBER\",\n        \"OCTOBER\",\n        ctx,\n        gddbase,\n        gddceil,\n    )\n    res += modMonth(\n        station,\n        db,\n        monthly,\n        11,\n        12,\n        \"NOVEMBER\",\n        \"DECEMBER\",\n        ctx,\n        gddbase,\n        gddceil,\n    )\n\n    return None, df, res\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p113.py",
    "content": "\"\"\"\nPresents the simple daily climatology as computed by period of record data. If\nyou select a start date that is later than the end date, the plot will wrap\nover 1 January.  In such a case, if you select certain years to plot, the year\nwill be from the start of the two year period that crosses 1 January.\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport pandas as pd\nfrom matplotlib.dates import DateFormatter, DayLocator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\nfrom iemweb.json.climodat_stclimo import run as climodat_stclimo_run\n\nPDICT = {\n    \"maxmin\": \"Daily Maximum / Minimums\",\n    \"precip\": \"Daily Maximum Precipitation\",\n    \"range\": \"Daily Maximum Range between High and Low\",\n    \"means\": \"Daily Average High and Lows\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"report\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"maxmin\",\n            options=PDICT,\n            label=\"Which variable? (only Daily Max/Min is plottable attm)\",\n        ),\n        {\n            \"type\": \"year\",\n            \"optional\": True,\n            \"name\": \"year1\",\n            \"default\": date.today().year,\n            \"label\": \"Show observed values for year:\",\n        },\n        {\n            \"type\": \"year\",\n            \"optional\": True,\n            \"name\": \"year2\",\n            \"default\": date.today().year - 1,\n            \"label\": \"Show observed values for year:\",\n        },\n        {\n            \"type\": \"sday\",\n            \"default\": \"0101\",\n            \"name\": \"sday\",\n            \"label\": \"Start Plot on Day of Year:\",\n        },\n        {\n            \"type\": \"sday\",\n            \"default\": \"1231\",\n            \"name\": \"eday\",\n            \"label\": \"End Plot on Day of Year:\",\n        },\n    ]\n    return desc\n\n\ndef do_year_overlay(ctx, ax, pname, color, crosses_jan1):\n    \"\"\"Overlay the observed data for the given years.\"\"\"\n    year = ctx.get(pname)\n    if year is None:\n        return\n    sts = date(year, ctx[\"sday\"].month, ctx[\"sday\"].day)\n    ets = date(year, ctx[\"eday\"].month, ctx[\"eday\"].day)\n    if crosses_jan1:\n        ets = date(year + 1, ctx[\"eday\"].month, ctx[\"eday\"].day)\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        obs = pd.read_sql(\n            sql_helper(\n                \"\"\"select day, year, high, low from alldata\n            WHERE station = :station and day >= :sts and day <= :ets\n            and high is not null and low is not null\n            order by day ASC\"\"\"\n            ),\n            conn,\n            parse_dates=\"day\",\n            params={\"station\": ctx[\"station\"], \"sts\": sts, \"ets\": ets},\n        )\n    if obs.empty:\n        return\n    obs[\"day\"] = obs[\"day\"].dt.date\n    obs[\"day\"] = obs[\"day\"].map(lambda x: x.replace(year=2000))\n    if crosses_jan1:\n        obs.loc[obs[\"day\"] >= ctx[\"eday\"], \"day\"] = obs.loc[\n            obs[\"day\"] >= ctx[\"eday\"], \"day\"\n        ].map(lambda x: x.replace(year=1999))\n    lbl = f\"{year}-{year + 1}\" if crosses_jan1 else f\"{year}\"\n    ax.bar(\n        obs[\"day\"].values,\n        obs[\"high\"] - obs[\"low\"],\n        bottom=obs[\"low\"],\n        color=color,\n        align=\"center\",\n        label=f\"Observed {lbl}\",\n        width=0.8,\n        alpha=0.8,\n    )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"var\"]\n\n    bs = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if bs is None:\n        raise NoDataFound(\"No Metadata found.\")\n    be = ctx[\"_nt\"].sts[station][\"archive_end\"]\n    if be is None:\n        be = date.today()\n    res = (\n        \"# IEM Climodat https://mesonet.agron.iastate.edu/climodat/\\n\"\n        f\"# Report Generated: {date.today():%d %b %Y}\\n\"\n        f\"# Climate Record: {bs} -> {be}\\n\"\n        f\"# Site Information: [{station}] {ctx['_nt'].sts[station]['name']}\\n\"\n        \"# Contact Information: \"\n        \"Daryl Herzmann akrherz@iastate.edu 515.294.5978\\n\"\n    )\n    climo = climodat_stclimo_run(station, bs.year, be.year + 1)\n    df = pd.DataFrame(climo[\"climatology\"])\n    if df.empty:\n        raise NoDataFound(\"Climatology was not found.\")\n    df[\"valid\"] = pd.to_datetime(\n        {\"year\": 2000, \"month\": df[\"month\"], \"day\": df[\"day\"]}\n    )  # type: ignore\n    df = df.set_index(\"valid\")\n    for col in df.columns:\n        if col.find(\"_years\") == -1:\n            continue\n        df[col] = df[col].apply(lambda x: \" \".join([str(i) for i in x]))\n    if varname == \"maxmin\":\n        res += (\n            f\"# DAILY RECORD HIGHS AND LOWS OCCURRING DURING {bs.year}-\"\n            f\"{date.today().year} FOR \"\n            f\"STATION NUMBER  {station}\\n\"\n            \"     JAN     FEB     MAR     APR     MAY     JUN     JUL     \"\n            \"AUG     SEP     OCT     NOV     DEC\\n\"\n            \" DY  MX  MN  MX  MN  MX  MN  MX  MN  MX  MN  MX  MN  MX  MN  MX  \"\n            \"MN  MX  MN  MX  MN  MX  MN  MX  MN\\n\"\n        )\n    elif varname == \"means\":\n        res += (\n            f\"# DAILY MEAN HIGHS AND LOWS FOR STATION NUMBER  {station}\\n\"\n            \"     JAN     FEB     MAR     APR     MAY     JUN     JUL     \"\n            \"AUG     SEP     OCT     NOV     DEC\\n\"\n            \" DY  MX  MN  MX  MN  MX  MN  MX  MN  MX  MN  MX  MN  MX  MN  \"\n            \"MX  MN  MX  MN  MX  MN  MX  MN  MX  MN\\n\"\n        )\n    elif varname == \"range\":\n        res += (\n            \"# RECORD LARGEST AND SMALLEST DAILY RANGES (MAX-MIN) \"\n            f\"FOR STATION NUMBER  {station}\\n\"\n            \"     JAN     FEB     MAR     APR     MAY     JUN     JUL     \"\n            \"AUG     SEP     OCT     NOV     DEC\\n\"\n            \" DY  MX  MN  MX  MN  MX  MN  MX  MN  MX  MN  MX  MN  MX  MN  \"\n            \"MX  MN  MX  MN  MX  MN  MX  MN  MX  MN\\n\"\n        )\n    else:\n        res += (\n            f\"# DAILY MAXIMUM PRECIPITATION FOR STATION NUMBER {station}\\n\"\n            \"     JAN   FEB   MAR   APR   MAY   JUN   JUL   \"\n            \"AUG   SEP   OCT   NOV   DEC\\n\"\n        )\n\n    bad = \"  ****\" if varname == \"precip\" else \" *** ***\"\n    for day in range(1, 32):\n        res += f\"{day:3.0f}\"\n        for mo in range(1, 13):\n            try:\n                ts = datetime(2000, mo, day)\n                if ts not in df.index:\n                    res += bad\n                    continue\n            except Exception:\n                res += bad\n                continue\n            row = df.loc[ts]\n            if row[\"max_high\"] is None or row[\"min_low\"] is None:\n                res += bad\n                continue\n            if varname == \"maxmin\":\n                res += f\"{row['max_high']:4.0f}{row['min_low']:4.0f}\"\n            elif varname == \"range\":\n                res += f\"{row['max_range']:4.0f}{row['min_range']:4.0f}\"\n            elif varname == \"means\":\n                res += f\"{row['avg_high']:4.0f}{row['avg_low']:4.0f}\"\n            else:\n                res += f\"{row['max_precip']:6.2f}\"\n        res += \"\\n\"\n\n    title = f\"{ctx['_sname']}:: Daily High/Low Temperature Climatology\"\n    subtitle = f\"Simple climatology over {bs.year}-{be.year}.\"\n    if ctx.get(\"year1\") is not None:\n        subtitle += f\" Observed High/Low for {ctx['year1']}\"\n        if ctx.get(\"year2\") is not None:\n            subtitle += f\" and {ctx['year2']}\"\n    fig = figure(title=title, subtitle=subtitle, apctx=ctx)\n    ax = fig.add_axes((0.08, 0.1, 0.9, 0.8))\n    # Wants to cross 1 Jan on x-axis\n    crosses_jan1 = ctx[\"sday\"] > ctx[\"eday\"]\n    if crosses_jan1:\n        if ctx[\"eday\"].month == 2 and ctx[\"eday\"].day == 29:\n            ctx[\"eday\"] = date(ctx[\"eday\"].year, 2, 28)\n        dfnew = df.loc[pd.Timestamp(ctx[\"sday\"]) :].copy()\n        dfnew.index = dfnew.index.map(lambda x: x.replace(year=1999))\n        df = pd.concat([dfnew, df.loc[: pd.Timestamp(ctx[\"sday\"])]])\n        ctx[\"sday\"] = ctx[\"sday\"].replace(year=1999)\n\n    x = df.index.date\n    ax.fill_between(\n        x,\n        df[\"avg_high\"].values,\n        df[\"max_high\"].values,\n        color=\"#f2c2a7\",\n        step=\"mid\",\n    )\n    ax.fill_between(\n        x,\n        df[\"avg_low\"].values,\n        df[\"min_low\"].values,\n        color=\"#bbbbe2\",\n        step=\"mid\",\n    )\n    ax.fill_between(\n        x,\n        df[\"avg_low\"].values,\n        df[\"avg_high\"].values,\n        color=\"#b4dab3\",\n        step=\"mid\",\n        label=\"Range of Ave High/Low\",\n    )\n    ax.plot(\n        x,\n        df[\"max_high\"].values,\n        color=\"#dc300b\",\n        label=\"Record High\",\n        lw=1,\n        drawstyle=\"steps-mid\",\n    )\n    ax.plot(\n        x,\n        df[\"min_low\"].values,\n        color=\"#444e9f\",\n        label=\"Record Low\",\n        lw=1,\n        drawstyle=\"steps-mid\",\n    )\n\n    do_year_overlay(ctx, ax, \"year1\", \"#593700\", crosses_jan1)\n    do_year_overlay(ctx, ax, \"year2\", \"#49aaf0\", crosses_jan1)\n\n    ax.grid(True)\n    ax.legend(ncol=5)\n    ax.set_ylabel(\"Temperature °F\")\n    ax.set_xlim(ctx[\"sday\"], ctx[\"eday\"] + timedelta(days=1))\n    days = 1\n    if ctx[\"eday\"] - ctx[\"sday\"] < timedelta(days=71):\n        days = [1, 8, 15, 22, 29]\n    elif ctx[\"eday\"] - ctx[\"sday\"] < timedelta(days=121):\n        days = [1, 15]\n    ax.xaxis.set_major_locator(DayLocator(bymonthday=days))\n    ax.xaxis.set_major_formatter(DateFormatter(\"%b %-d\"))\n\n    return fig, df, res\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p114.py",
    "content": "\"\"\"Days per year\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\n        \"description\": __doc__,\n        \"data\": True,\n        \"report\": True,\n        \"nopng\": True,\n    }\n    desc[\"arguments\"] = [\n        ARG_STATION,\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"].upper()\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"SELECT year, count(low) from alldata \"\n                \"WHERE station = :station and low >= 32 and year < :year \"\n                \"GROUP by year ORDER by year ASC\"\n            ),\n            conn,\n            params={\"station\": station, \"year\": date.today().year},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    res = \"\"\"\\\n# IEM Climodat https://mesonet.agron.iastate.edu/climodat/\n# Report Generated: %s\n# Climate Record: %s -> %s\n# Site Information: %s\n# Contact Information: Daryl Herzmann akrherz@iastate.edu 515.294.5978\n# OF DAYS EACH YEAR WHERE MIN >=32 F\n\"\"\" % (\n        date.today().strftime(\"%d %b %Y\"),\n        ctx[\"_nt\"].sts[station][\"archive_begin\"],\n        date.today(),\n        ctx[\"_sname\"],\n    )\n\n    for _, row in df.iterrows():\n        res += \"%s %3i\\n\" % (row[\"year\"], row[\"count\"])\n\n    res += \"MEAN %3i\\n\" % (df[\"count\"].mean(),)\n\n    return None, df, res\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p115.py",
    "content": "\"\"\"\nThis reports presents simple monthy and yearly\nsummary statistics.  The <i>WYEAR</i> column denotes the 'Water Year'\ntotal, which is defined for the period between 1 Oct and 30 Sep. For\nexample, the 2009 <i>WYEAR</i> value represents the period between\n1 Oct 2008 and 30 Sep 2009, the 2009 water year.\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport pandas as pd\nimport seaborn as sns\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"precip\": \"Total Precipitation\",\n    \"snow\": \"Total Snowfall\",\n    \"avg_high\": \"Average High Temperature\",\n    \"avg_low\": \"Average Low Temperature\",\n    \"avg_temp\": \"Average Monthly Temperature\",\n}\nFMT = {\n    \"precip\": \".2f\",\n    \"snow\": \".1f\",\n    \"avg_high\": \".1f\",\n    \"avg_low\": \".1f\",\n    \"avg_temp\": \".1f\",\n}\n\nLABELS = {\n    \"precip\": \"Monthly Liquid Precip Totals [inches] (snow is melted)\",\n    \"snow\": \"Monthly Snow Fall [inches]\",\n    \"avg_high\": \"Monthly Average High Temperatures [°F]\",\n    \"avg_low\": \"Monthly Average Low Temperatures [°F]\",\n    \"avg_temp\": \"Monthly Average Temperatures [°F] (High + low)/2\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"report\": True}\n    y20 = date.today().year - 19\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"precip\",\n            label=\"Select variable:\",\n            options=PDICT,\n        ),\n        {\n            \"type\": \"year\",\n            \"name\": \"syear\",\n            \"default\": y20,\n            \"label\": \"For plotting, year to start 20 years of plot\",\n        },\n        dict(type=\"cmap\", name=\"cmap\", default=\"plasma\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef myformat(val, precision):\n    \"\"\"Nice\"\"\"\n    if val is None:\n        return \" ****\"\n    fmt = f\"%5.{precision}f\"\n    return fmt % val\n\n\ndef p(df, year, month, varname, precision):\n    \"\"\"Lazy request of data\"\"\"\n    try:\n        val = df.at[(year, month), varname]\n    except Exception:\n        return \" ****\"\n    if pd.isna(val):\n        return \" ****\"\n    fmt = f\"%5.{precision}f\"\n    return fmt % val\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"var\"]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        # Prevent trace values from accumulating\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT year, month,\n            case when month in (10, 11, 12) then year + 1 else year end\n            as water_year,\n            round(sum(precip)::numeric, 2) as precip,\n            round(sum(snow)::numeric, 2) as snow,\n            avg(high) as avg_high, avg(low) as avg_low,\n            avg((high+low)/2.) as avg_temp, max(day) as max_day from\n            alldata WHERE station = :station\n            GROUP by year, water_year, month ORDER by year ASC, month ASC\n        \"\"\"),\n            conn,\n            params={\"station\": station},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    res = (\n        \"# IEM Climodat https://mesonet.agron.iastate.edu/climodat/\\n\"\n        f\"# Report Generated: {date.today():%d %b %Y}\\n\"\n        f\"# Climate Record: {ctx['_nt'].sts[station]['archive_begin']} \"\n        f\"-> {df['max_day'].max()}, \"\n        \"WYEAR column is Water Year Oct 1 - Sep 30\\n\"\n        f\"# Site Information: {ctx['_sname']}\\n\"\n        \"# Contact Information: \"\n        \"Daryl Herzmann akrherz@iastate.edu 515.294.5978\\n\"\n        f\"# {LABELS[varname]}\\n\"\n        \"YEAR   JAN   FEB   MAR   APR   MAY   JUN   JUL   AUG   SEP   \"\n        \"OCT   NOV   DEC   ANN WYEAR\\n\"\n    )\n\n    years = df[\"year\"].unique()\n    years.sort()\n    grouped = df.set_index([\"year\", \"month\"])\n    yrsum = df.groupby(\"year\")[varname].sum()\n    wyrsum = df.groupby(\"water_year\")[varname].sum()\n    yrmean = df.groupby(\"year\")[varname].mean()\n    wyrmean = df.groupby(\"water_year\")[varname].mean()\n\n    prec = 2 if varname == \"precip\" else 0\n    if varname == \"snow\":\n        prec = 1\n    for year in years:\n        yrtot = yrsum[year]\n        wyrtot = wyrsum.get(year, 0)\n        if varname not in [\"precip\", \"snow\"]:\n            yrtot = yrmean[year]\n            wyrtot = wyrmean.get(year, 0)\n        res += (\"%s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s\\n\") % (\n            year,\n            p(grouped, year, 1, varname, prec),\n            p(grouped, year, 2, varname, prec),\n            p(grouped, year, 3, varname, prec),\n            p(grouped, year, 4, varname, prec),\n            p(grouped, year, 5, varname, prec),\n            p(grouped, year, 6, varname, prec),\n            p(grouped, year, 7, varname, prec),\n            p(grouped, year, 8, varname, prec),\n            p(grouped, year, 9, varname, prec),\n            p(grouped, year, 10, varname, prec),\n            p(grouped, year, 11, varname, prec),\n            p(grouped, year, 12, varname, prec),\n            myformat(yrtot, 2),\n            myformat(wyrtot, 2),\n        )\n    yrtot = (\n        yrmean.mean() if varname not in [\"precip\", \"snow\"] else yrsum.mean()\n    )\n    wyrtot = (\n        wyrmean.mean() if varname not in [\"precip\", \"snow\"] else wyrsum.mean()\n    )\n    res += (\n        \"MEAN%6.2f%6.2f%6.2f%6.2f%6.2f%6.2f%6.2f%6.2f%6.2f%6.2f\"\n        \"%6.2f%6.2f%6.2f%6.2f\\n\"\n    ) % (\n        df[df[\"month\"] == 1][varname].mean(),\n        df[df[\"month\"] == 2][varname].mean(),\n        df[df[\"month\"] == 3][varname].mean(),\n        df[df[\"month\"] == 4][varname].mean(),\n        df[df[\"month\"] == 5][varname].mean(),\n        df[df[\"month\"] == 6][varname].mean(),\n        df[df[\"month\"] == 7][varname].mean(),\n        df[df[\"month\"] == 8][varname].mean(),\n        df[df[\"month\"] == 9][varname].mean(),\n        df[df[\"month\"] == 10][varname].mean(),\n        df[df[\"month\"] == 11][varname].mean(),\n        df[df[\"month\"] == 12][varname].mean(),\n        yrtot,\n        wyrtot,\n    )\n\n    # create a better resulting dataframe\n    resdf = pd.DataFrame(index=years)\n    resdf.index.name = \"YEAR\"\n    for i, month_abbr in enumerate(calendar.month_abbr[1:], start=1):\n        col = month_abbr.upper()\n        resdf[col] = df[df[\"month\"] == i].set_index(\"year\")[varname]\n        resdf.at[\"MEAN\", col] = df[df[\"month\"] == i][varname].mean()\n    resdf[\"ANN\"] = yrmean if varname not in [\"precip\", \"snow\"] else yrsum\n    resdf.at[\"MEAN\", \"ANN\"] = resdf[\"ANN\"].mean()\n    resdf[\"WATER YEAR\"] = (\n        wyrmean if varname not in [\"precip\", \"snow\"] else wyrsum\n    )\n    resdf.at[\"MEAN\", \"WATER YEAR\"] = resdf[\"WATER YEAR\"].mean()\n    y1 = int(ctx.get(\"syear\", 1990))\n\n    fig, ax = figure_axes(\n        title=f\"{ctx['_sname']} {LABELS[varname]}\",\n        apctx=ctx,\n    )\n    filtered = df[(df[\"year\"] >= y1) & (df[\"year\"] <= (y1 + 20))]\n    if filtered.empty or filtered[varname].isnull().all():\n        raise NoDataFound(\"No data for specified period\")\n    df2 = filtered[[\"month\", \"year\", varname]].pivot(\n        index=\"year\", columns=\"month\", values=varname\n    )\n    df2 = pd.concat(\n        [df2, df[[\"month\", varname]].groupby(\"month\").mean().transpose()]\n    )\n    df2 = df2.rename(index={df2.index[-1]: \"MEAN\"})\n    ax = sns.heatmap(\n        df2,\n        annot=True,\n        fmt=FMT[varname],\n        linewidths=0.5,\n        ax=ax,\n        cmap=ctx[\"cmap\"],\n    )\n    ax.set_xticklabels(calendar.month_abbr[1:])\n\n    return fig, resdf, res\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p116.py",
    "content": "\"\"\"\nThis chart presents monthly cooling degree days\nor heating degree days for a 20 year period of your choice.  The 20 year\nlimit is for plot usability only, the data download has all available\nyears contained.\n\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nimport seaborn as sns\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\"cdd\": \"Cooling Degree Days\", \"hdd\": \"Heating Degree Days\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"report\": True}\n    y20 = date.today().year - 19\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"cdd\",\n            name=\"var\",\n            label=\"Select Variable\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"syear\",\n            default=y20,\n            label=\"For plotting, year to start 20 years of plot\",\n        ),\n        {\n            \"type\": \"int\",\n            \"name\": \"base\",\n            \"label\": \"CDD/HDD Base Temperature °F\",\n            \"default\": 60,\n        },\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"var\"]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT year, month, sum(precip) as sum_precip,\n            avg(high) as avg_high,\n            avg(low) as avg_low,\n            sum(cdd(high,low,:base)) as cdd,\n            sum(cdd(high,low,65)) as cdd65,\n            sum(hdd(high,low,:base)) as hdd,\n            sum(hdd(high,low,65)) as hdd65,\n            sum(case when precip > 0.009 then 1 else 0 end) as rain_days,\n            sum(case when snow >= 0.1 then 1 else 0 end) as snow_days\n            from alldata WHERE station = :station GROUP by year, month\n        \"\"\"),\n            conn,\n            params={\"station\": station, \"base\": ctx[\"base\"]},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df[\"monthdate\"] = df[[\"year\", \"month\"]].apply(\n        lambda x: date(x.iloc[0], x.iloc[1], 1), axis=1\n    )\n    df = df.set_index(\"monthdate\")\n\n    res = (\n        \"# IEM Climodat https://mesonet.agron.iastate.edu/climodat/\\n\"\n        f\"# Report Generated: {date.today():%d %b %Y}\\n\"\n        f\"# Climate Record: {ctx['_nt'].sts[station]['archive_begin']} \"\n        f\"-> {date.today()}\\n\"\n        f\"# Site Information: {ctx['_sname']}\\n\"\n        \"# Contact Information: Daryl Herzmann \"\n        \"akrherz@iastate.edu 515.294.5978\\n\"\n        f\"# THESE ARE THE MONTHLY {PDICT[varname].upper()} (base=65) \"\n        f\"FOR STATION {station}\\n\"\n        \"YEAR    JAN    FEB    MAR    APR    MAY    JUN    JUL    AUG    \"\n        \"SEP    OCT    NOV    DEC\\n\"\n    )\n\n    second = (\n        f\"# THESE ARE THE MONTHLY {PDICT[varname].upper()} \"\n        f\"(base={ctx['base']}) \"\n        f\"FOR STATION {station}\\n\"\n        \"YEAR    JAN    FEB    MAR    APR    MAY    JUN    JUL    AUG    \"\n        \"SEP    OCT    NOV    DEC\\n\"\n    )\n    minyear = df[\"year\"].min()\n    maxyear = df[\"year\"].max()\n    for yr in range(minyear, maxyear + 1):\n        res += f\"{yr:4.0f}\"\n        second += f\"{yr:4.0f}\"\n        for mo in range(1, 13):\n            ts = date(yr, mo, 1)\n            if ts not in df.index:\n                res += f\"{'M':>7s}\"\n                second += f\"{'M':>7s}\"\n                continue\n            row = df.loc[ts]\n            val = row[f\"{varname}65\"]\n            res += f\"{val:7.0f}\"\n            val = row[f\"{varname}\"]\n            second += f\"{val:7.0f}\"\n        res += \"\\n\"\n        second += \"\\n\"\n\n    res += \"MEAN\"\n    second += \"MEAN\"\n    for mo in range(1, 13):\n        df2 = df[df[\"month\"] == mo]\n        val = df2[f\"{varname}65\"].mean()\n        res += f\"{val:7.0f}\"\n        val = df2[varname].mean()\n        second += f\"{val:7.0f}\"\n    res += \"\\n\"\n    second += \"\\n\"\n    res += second\n\n    y1 = int(ctx.get(\"syear\", 1990))\n\n    title = f\"[{station}] {ctx['_nt'].sts[station]['name']} ({y1}-{y1 + 20})\"\n    fig, ax = figure_axes(\n        title=title,\n        subtitle=f\"{PDICT[varname]} base={ctx['base']}°F\",\n        apctx=ctx,\n    )\n    filtered = df[(df[\"year\"] >= y1) & (df[\"year\"] <= (y1 + 20))]\n    if filtered.empty:\n        raise NoDataFound(\"No data for specified period\")\n    df2 = filtered[[\"month\", \"year\", varname]].pivot(\n        index=\"year\", columns=\"month\", values=varname\n    )\n    sns.heatmap(df2, annot=True, fmt=\".0f\", linewidths=0.5, ax=ax)\n\n    return fig, df, res\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p117.py",
    "content": "\"\"\"Stress Degree Days.\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\n        \"description\": __doc__,\n        \"data\": True,\n        \"report\": True,\n        \"nopng\": True,\n    }\n    desc[\"arguments\"] = [\n        ARG_STATION,\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n\n    bs = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if bs is None:\n        raise NoDataFound(\"No Data Found.\")\n    res = (\n        \"# IEM Climodat https://mesonet.agron.iastate.edu/climodat/\\n\"\n        \"# Report Generated: %s\\n\"\n        \"# Climate Record: %s -> %s\\n\"\n        \"# Site Information: [%s] %s\\n\"\n        \"# Contact Information: Daryl Herzmann \"\n        \"akrherz@iastate.edu 515.294.5978\\n\"\n    ) % (\n        date.today().strftime(\"%d %b %Y\"),\n        bs,\n        date.today(),\n        station,\n        ctx[\"_nt\"].sts[station][\"name\"],\n    )\n    res += (\"# THESE ARE THE HEAT STRESS VARIABLES FOR STATION #  %s\\n\") % (\n        station,\n    )\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT year, month, sum(case when high > 86 then 1 else 0 end)\n            as days, sum(case when high > 86 then high - 86 else 0 end) as sdd\n            from alldata WHERE station = :station GROUP by year, month\n        \"\"\"),\n            conn,\n            params={\"station\": station},\n            index_col=None,\n        )\n    sdd = df.pivot(index=\"year\", columns=\"month\", values=\"sdd\")\n    days = df.pivot(index=\"year\", columns=\"month\", values=\"days\")\n    df = sdd.join(days, lsuffix=\"sdd\", rsuffix=\"days\")\n\n    res += (\n        \"             # OF DAYS MAXT >86                     \"\n        \"ACCUMULATED (MAXT - 86 )\\n\"\n        \" YEAR   MAY  JUNE  JULY   AUG  SEPT TOTAL      \"\n        \"MAY  JUNE  JULY   AUG  SEPT TOTAL\\n\"\n    )\n\n    yrCnt = 0\n    for yr in range(df.index.min(), df.index.max() + 1):\n        yrCnt += 1\n        res += \"%5s\" % (yr,)\n        total = 0\n        for mo in range(5, 10):\n            val = df.at[yr, f\"{mo}days\"]\n            if pd.isna(val):\n                res += \"%6s\" % (\"M\",)\n            else:\n                res += \"%6i\" % (val,)\n                total += val\n        res += \"%6i   \" % (total,)\n        total = 0\n        for mo in range(5, 10):\n            val = df.at[yr, f\"{mo}sdd\"]\n            if pd.isna(val):\n                res += \"%6s\" % (\"M\",)\n            else:\n                res += \"%6i\" % (val,)\n                total += val\n        res += \"%6i   \\n\" % (total,)\n\n    res += (\n        \" **************************************************************\"\n        \"************************\\n\"\n    )\n\n    res += \"MEANS\"\n    tot = 0\n    for mo in range(5, 10):\n        val = df[f\"{mo}days\"].mean()\n        tot += val\n        res += \"%6.1f\" % (val,)\n    res += \"%6.1f   \" % (tot,)\n    tot = 0\n    for mo in range(5, 10):\n        val = df[f\"{mo}sdd\"].mean()\n        tot += val\n        res += \"%6.1f\" % (val,)\n    res += \"%6.1f\\n\" % (tot,)\n\n    return None, df, res\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p118.py",
    "content": "\"\"\"precip days per month\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\"precip_days\": \"Precipitation Days\", \"snow_days\": \"Snowfall Days\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\n        \"description\": __doc__,\n        \"data\": True,\n        \"report\": True,\n        \"nopng\": True,\n    }\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"var\",\n            options=PDICT,\n            default=\"precip_days\",\n            label=\"Select Variable\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"var\"]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT year, month,\n            sum(case when precip > 0.009 then 1 else 0 end) as precip_days,\n            sum(case when snow > 0.009 then 1 else 0 end) as snow_days\n            from alldata WHERE station = :station\n            GROUP by year, month\n        \"\"\"),\n            conn,\n            params={\"station\": station},\n            index_col=[\"year\", \"month\"],\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    res = \"\"\"\\\n# IEM Climodat https://mesonet.agron.iastate.edu/climodat/\n# Report Generated: %s\n# Climate Record: %s -> %s\n# Site Information: [%s] %s\n# Contact Information: Daryl Herzmann akrherz@iastate.edu 515.294.5978\n# NUMBER OF DAYS WITH %s PER MONTH PER YEAR\n# Days with a trace accumulation are not included\nYEAR   JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ANN\n\"\"\" % (\n        date.today().strftime(\"%d %b %Y\"),\n        ctx[\"_nt\"].sts[station][\"archive_begin\"],\n        date.today(),\n        station,\n        ctx[\"_nt\"].sts[station][\"name\"],\n        \"PRECIPITATION\" if varname == \"precip_days\" else \"SNOW FALL\",\n    )\n\n    for year in df.index.levels[0]:\n        res += \"%4i  \" % (year,)\n        total = 0\n        for month in df.index.levels[1]:\n            try:\n                val = df.at[(year, month), varname]\n                total += val\n                res += \" %3i\" % (val,)\n            except Exception:\n                res += \"    \"\n        res += \" %3i\\n\" % (total,)\n    return None, df, res\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p119.py",
    "content": "\"\"\"\nThis chart presents the accumulated frequency of a temperature threshold being\nthe first time observed or last time observed during the fall season. There is\na complexitiy to the last time metric as it is somewhat undefined as to when\nthe fall season ends and the next spring/summer season beings.  So life choices\nare made here:</p>\n\n<p>For <strong>first below</strong>, the first date that the temperature\nhappens is considered between 1 August and 31 May of the next year. This is\ngenerally straight forward.</p>\n\n<p>For <strong>last above</strong>, the last date that the temperature happens\nis considered between 1 August and 31 December of the same year. This is\nnebulous for temperature thresholds that are common throughout the cold\nseason. Caveat emptor.</p>\n\n<p><a href=\"/plotting/auto/?q=120\">Autoplot 120</a> is closely related to this\nautoplot and presents the spring season values.</p>\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\nfrom typing import Any\n\nimport matplotlib.dates as mdates\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes, get_cmap\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"era5land_soilt4_avg\": \"ERA5Land 0-7cm Avg Soil Temp\",\n    \"low\": \"Low Temperature\",\n    \"high\": \"High Temperature\",\n}\nPDICT2 = {\n    \"first_below\": \"First Fall Temperature at or below Threshold\",\n    \"last_above\": \"Last Fall Temperature at or above Threshold\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"report\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        {\n            \"type\": \"select\",\n            \"name\": \"opt\",\n            \"default\": \"first_below\",\n            \"label\": \"Which metric to compute?\",\n            \"options\": PDICT2,\n        },\n        dict(\n            type=\"select\",\n            options=PDICT,\n            name=\"var\",\n            default=\"low\",\n            label=\"Select variable to summarize:\",\n        ),\n        dict(type=\"int\", name=\"t1\", default=32, label=\"First Threshold (F)\"),\n        dict(type=\"int\", name=\"t2\", default=28, label=\"Second Threshold (F)\"),\n        dict(type=\"int\", name=\"t3\", default=26, label=\"Third Threshold (F)\"),\n        dict(type=\"int\", name=\"t4\", default=22, label=\"Fourth Threshold (F)\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    opt = ctx[\"opt\"]\n    station = ctx[\"station\"]\n    bs = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if bs is None:\n        raise NoDataFound(\"Unknown metadata\")\n    thresholds = [ctx[\"t1\"], ctx[\"t2\"], ctx[\"t3\"], ctx[\"t4\"]]\n    # Ensure that thresholds are unique\n    if len(thresholds) != len(set(thresholds)):\n        raise NoDataFound(\"Thresholds need to be unique.\")\n\n    sz = 214 + 304\n    df = pd.DataFrame(\n        {\n            \"dates\": pd.date_range(\"2000/08/01\", \"2001/05/31\"),\n            f\"{thresholds[0]}cnts\": 0,\n            f\"{thresholds[1]}cnts\": 0,\n            f\"{thresholds[2]}cnts\": 0,\n            f\"{thresholds[3]}cnts\": 0,\n        },\n        index=range(214, sz),\n    )\n    df.index.name = \"doy\"\n\n    mindates = [None, None, None, None]\n    maxdates = [None, None, None, None]\n    comp = \"<=\" if opt == \"first_below\" else \">=\"\n    months = [8, 9, 10, 11, 12]\n    quorum = 150\n    if opt == \"first_below\":\n        months = [8, 9, 10, 11, 12, 1, 2, 3, 4, 5]\n        quorum = 300\n    sent = \"2099-01-01\" if opt == \"first_below\" else \"1800-01-01\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        for i, base in enumerate(thresholds):\n            # Find first dates by winter season\n            df2 = pd.read_sql(\n                f\"\"\"\n                select\n                case when month > 7 then year + 1 else year end as winter,\n                {\"min\" if opt == \"first_below\" else \"max\"}(\n                case when {ctx[\"var\"]} {comp}\n                %s then day else '{sent}'::date end) as date,\n                count(*) from alldata\n                WHERE station = %s and month = ANY(%s)\n                GROUP by winter\n            \"\"\",\n                conn,\n                params=(base, station, months),\n                index_col=None,\n            )\n            if df2.empty:\n                raise NoDataFound(\"No Data Found.\")\n            # Require quorum\n            df2 = df2[df2[\"count\"] > quorum]\n            if df2.empty:\n                raise NoDataFound(\"No Data Found.\")\n            df2[\"doy\"] = np.nan\n            for idx, row in df2.iterrows():\n                if row[\"date\"].year in [2099, 1800]:\n                    continue\n                jan1 = date(row[\"winter\"] - 1, 1, 1)\n                doy = (row[\"date\"] - jan1).days\n                df2.at[idx, \"doy\"] = doy\n                df.loc[doy:sz, f\"{base}cnts\"] += 1\n            mindates[i] = df2.sort_values(\n                \"doy\", ascending=True, na_position=\"last\"\n            ).iloc[0][\"date\"]\n            # Ensure that all doys are filled in\n            if df2[\"doy\"].notna().all():\n                maxdates[i] = df2.sort_values(\n                    \"doy\", ascending=False, na_position=\"last\"\n                ).iloc[0][\"date\"]\n\n            df[f\"{base}freq\"] = df[f\"{base}cnts\"] / len(df2.index) * 100.0\n    explainer = (\n        \"On a certain date, what is the observed frequency that a given\\n\"\n        \"temperature threshold has been first observed by the given date.\"\n    )\n    if opt == \"last_above\":\n        explainer = (\n            \"On a certain date, what is the observed frequency that a given\\n\"\n            \"temperature threshold has been observed for the last time.\"\n        )\n    res = (\n        \"# IEM Climodat https://mesonet.agron.iastate.edu/climodat/\\n\"\n        f\"# Report Generated: {date.today():%d %b %Y}\\n\"\n        f\"# Climate Record: {bs} -> {date.today()}\\n\"\n        f\"# Site Information: {ctx['_sname']}\\n\"\n        \"# Contact: Daryl Herzmann akrherz@iastate.edu 515.294.5978\\n\"\n        f\"# {PDICT[ctx['var']]} exceedence probabilities\\n\"\n        f\"# {explainer}\\n\"\n        f\" DOY Date    {comp}{thresholds[0]}  {comp}{thresholds[1]}  \"\n        f\"{comp}{thresholds[2]}  {comp}{thresholds[3]}\\n\"\n    )\n    fcols = [f\"{s}freq\" for s in thresholds]\n    mindate = None\n    maxdate = None\n    for doy, row in df.iterrows():\n        if doy % 2 != 0:\n            continue\n        if row[fcols[3]] >= 100:\n            if maxdate is None:\n                maxdate = row[\"dates\"] + timedelta(days=5)\n            continue\n        if row[fcols[0]] > 0 and mindate is None:\n            mindate = row[\"dates\"] - timedelta(days=5)\n        res += (\" %3s %s  %3i  %3i  %3i  %3i\\n\") % (\n            row[\"dates\"].strftime(\"%-j\"),\n            row[\"dates\"].strftime(\"%b %d\"),\n            row[fcols[0]],\n            row[fcols[1]],\n            row[fcols[2]],\n            row[fcols[3]],\n        )\n    if mindate is None:\n        raise NoDataFound(\"Error found, try different thresholds.\")\n    if maxdate is None:\n        maxdate = datetime(2001, 6, 1)\n\n    byear = bs.year\n    if ctx[\"var\"] == \"era5land_soilt4_avg\":\n        byear = max(1950, byear)\n    title = (\"Frequency of %s\\n%s %s (%s-%s)\") % (\n        PDICT2[opt].replace(\"Temperature\", PDICT[ctx[\"var\"]]),\n        station,\n        ctx[\"_nt\"].sts[station][\"name\"],\n        byear,\n        date.today().year,\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    # shrink the plot to make room for the table\n    ax.set_position([0.1, 0.1, 0.6, 0.8])\n    for base in thresholds:\n        ax.plot(\n            df[\"dates\"].values,\n            df[f\"{base}freq\"].values,\n            label=f\"{base}\",\n            lw=2,\n        )\n\n    ax.legend(loc=\"best\")\n    ax.set_xlim(mindate, maxdate)\n    days = (maxdate - mindate).days\n    dl = [1] if days > 120 else [1, 7, 14, 21]\n    ax.xaxis.set_major_locator(mdates.DayLocator(dl))\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%-d\\n%b\"))\n    ax.grid(True)\n    ax.set_yticks([0, 10, 25, 50, 75, 90, 100])\n    ax.set_ylabel(\"Accumulated to Date Frequency [%]\")\n\n    # Create the cell text as an enpty list of 4 columns by 11 rows\n    celltext = [[\"\"] * 4 for _ in range(11)]\n    cellcolors: list[list[Any]] = [[\"white\"] * 4 for _ in range(11)]\n    # create 12 jet colors to use to color the cells by month of the year\n    colors = get_cmap(\"jet\")(np.arange(12) / 12.0)\n    # set the alpha to 0.5\n    colors[:, -1] = 0.5\n\n    # compute the dates for each threshold having 10 thru 90% frequency\n    for i, base in enumerate(thresholds):\n        if df[f\"{base}freq\"].min() == 0:\n            celltext[0][i] = mindates[i].strftime(\"%b %d\\n%Y\")\n            cellcolors[0][i] = colors[mindates[i].month - 1]\n        if df[f\"{base}freq\"].max() >= 100 and maxdates[i] is not None:\n            celltext[-1][i] = maxdates[i].strftime(\"%b %d\\n%Y\")\n            cellcolors[-1][i] = colors[maxdates[i].month - 1]\n\n        for j, percent in enumerate(range(10, 100, 10), start=1):\n            df2 = df[df[f\"{base}freq\"] >= percent]\n            if df2.empty:\n                continue\n            row = df2.iloc[0]\n            celltext[j][i] = row[\"dates\"].strftime(\"%b %d\")\n            cellcolors[j][i] = colors[row[\"dates\"].month - 1]\n\n    ax2 = fig.add_axes((0.75, 0.1, 0.2, 0.75))\n    # remove all the splines, but show the ylabel\n    ax2.spines[\"top\"].set_visible(False)\n    ax2.spines[\"bottom\"].set_visible(False)\n    ax2.spines[\"left\"].set_visible(False)\n    ax2.spines[\"right\"].set_visible(False)\n    ax2.set_xticks([])\n    ax2.set_yticks([])\n    table = ax2.table(\n        celltext,\n        cellColours=cellcolors,\n        colLabels=[f\"{t} °F\" for t in thresholds],\n        rowLabels=[\"Min\", *list(range(10, 100, 10)), \"Max\"],\n        loc=\"center\",\n    )\n    # add some vertical padding to text in the table and keep the borders\n    for cell in table.properties()[\"celld\"].values():\n        cell.set_height(0.08)\n\n    fig.text(0.85, 0.85, \"Percentile Dates\", ha=\"center\")\n\n    return fig, df.reset_index(), res\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p120.py",
    "content": "\"\"\"\nThis chart presents the accumulated frequency of\nhaving the last spring temperature at or below a given threshold.\n\n<p><a href=\"/plotting/auto/?q=119\">Autoplot 119</a> is closely related to this\nautoplot and presents the fall season values.</p>\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport matplotlib.dates as mdates\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"report\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(type=\"int\", name=\"t1\", default=32, label=\"First Threshold (°F)\"),\n        dict(type=\"int\", name=\"t2\", default=28, label=\"Second Threshold (°F)\"),\n        dict(type=\"int\", name=\"t3\", default=26, label=\"Third Threshold (°F)\"),\n        dict(type=\"int\", name=\"t4\", default=22, label=\"Fourth Threshold (°F)\"),\n        dict(\n            type=\"year\",\n            name=\"syear\",\n            min=1880,\n            label=\"Potential (if data exists) minimum year\",\n            default=1880,\n        ),\n        dict(\n            type=\"year\",\n            name=\"eyear\",\n            min=1880,\n            label=\"Potential (if data exists) exclusive maximum year\",\n            default=date.today().year,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    thresholds = [ctx[\"t1\"], ctx[\"t2\"], ctx[\"t3\"], ctx[\"t4\"]]\n\n    df = pd.DataFrame(\n        {\n            \"dates\": pd.date_range(\"2000/01/29\", \"2000/06/30\"),\n            f\"{thresholds[0]}cnts\": 0,\n            f\"{thresholds[1]}cnts\": 0,\n            f\"{thresholds[2]}cnts\": 0,\n            f\"{thresholds[3]}cnts\": 0,\n        },\n        index=range(29, 183),\n    )\n    df.index.name = \"doy\"\n\n    for base in thresholds:\n        # Query Last doy for each year in archive\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            df2 = pd.read_sql(\n                \"\"\"\n                select year,\n                max(case when low <= %s then extract(doy from day)\n                    else 0 end) as doy from alldata\n                WHERE month < 7 and station = %s and year > %s and year < %s\n                GROUP by year\n            \"\"\",\n                conn,\n                params=(base, station, ctx[\"syear\"], ctx[\"eyear\"]),\n                index_col=None,\n            )\n        for _, row in df2.iterrows():\n            if row[\"doy\"] == 0:\n                continue\n            df.loc[0 : row[\"doy\"], \"%scnts\" % (base,)] += 1\n        df[\"%sfreq\" % (base,)] = (\n            df[\"%scnts\" % (base,)] / len(df2.index) * 100.0\n        )\n\n    bs = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if bs is None:\n        raise NoDataFound(\"No metadata found.\")\n    res = \"\"\"\\\n# IEM Climodat https://mesonet.agron.iastate.edu/climodat/\n# Report Generated: %s\n# Climate Record: %s -> %s\n# Site Information: %s\n# Contact Information: Daryl Herzmann akrherz@iastate.edu 515.294.5978\n# Low Temperature exceedence probabilities\n# (On a certain date, what is the chance a temperature below a certain\n# threshold would be observed again that spring season)\n DOY Date    <%s  <%s  <%s  <%s\n\"\"\" % (\n        date.today().strftime(\"%d %b %Y\"),\n        max([bs, date(ctx[\"syear\"], 1, 1)]),\n        min([date.today(), date(ctx[\"eyear\"] - 1, 12, 31)]),\n        ctx[\"_sname\"],\n        thresholds[0] + 1,\n        thresholds[1] + 1,\n        thresholds[2] + 1,\n        thresholds[3] + 1,\n    )\n    fcols = [\"%sfreq\" % (s,) for s in thresholds]\n    mindate = None\n    for doy, row in df.iterrows():\n        if doy % 2 != 0:\n            continue\n        if row[fcols[3]] < 100 and mindate is None:\n            mindate = row[\"dates\"] - timedelta(days=5)\n        res += (\" %3s %s  %3i  %3i  %3i  %3i\\n\") % (\n            row[\"dates\"].strftime(\"%-j\"),\n            row[\"dates\"].strftime(\"%b %d\"),\n            row[fcols[0]],\n            row[fcols[1]],\n            row[fcols[2]],\n            row[fcols[3]],\n        )\n\n    title = \"Frequency of Last Spring Temperature\"\n    subtitle = \"%s %s (%s-%s)\" % (\n        station,\n        ctx[\"_nt\"].sts[station][\"name\"],\n        max([bs, date(ctx[\"syear\"], 1, 1)]),\n        min([date.today(), date(ctx[\"eyear\"] - 1, 12, 31)]),\n    )\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    for base in thresholds:\n        ax.plot(\n            df[\"dates\"].values,\n            df[f\"{base}freq\"],\n            label=f\"{base}\",\n            lw=2,\n        )\n\n    ax.legend(loc=\"best\")\n    ax.set_xlim(mindate)\n    ax.xaxis.set_major_locator(mdates.DayLocator([1, 7, 14, 21]))\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%-d\\n%b\"))\n    ax.grid(True)\n    df = df.reset_index()\n    return fig, df, res\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p121.py",
    "content": "\"\"\"\nThis report displays the number of cycles between\ntwo temperature thresholds of your choice.  A cycle representing one\nround trip from below some threshold to above the second threshold.\n\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_dbconn\nfrom pyiem.exceptions import NoDataFound\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\n        \"description\": __doc__,\n        \"data\": True,\n        \"report\": True,\n        \"nopng\": True,\n    }\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"text\",\n            name=\"thres1\",\n            default=\"26-38\",\n            label=\"Threshold 1 (lower-upper) (F)\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"thres2\",\n            default=\"24-40\",\n            label=\"Threshold 2 (lower-upper) (F)\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"thres3\",\n            default=\"20-44\",\n            label=\"Threshold 3 (lower-upper) (F)\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"thres4\",\n            default=\"14-50\",\n            label=\"Threshold 4 (lower-upper) (F)\",\n        ),\n    ]\n    return desc\n\n\ndef make(val):\n    \"\"\"Convert into thresholds\"\"\"\n    return [int(a) for a in val.split(\"-\")]\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    pgconn = get_dbconn(\"coop\")\n    cursor = pgconn.cursor()\n    station = ctx[\"station\"]\n    thres1 = ctx[\"thres1\"]\n    thres2 = ctx[\"thres2\"]\n    thres3 = ctx[\"thres3\"]\n    thres4 = ctx[\"thres4\"]\n    thres = [thres1, thres2, thres3, thres4]\n\n    prs = [make(thres1), make(thres2), make(thres3), make(thres4)]\n\n    s = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    e = date.today()\n\n    if s is None:\n        raise NoDataFound(\"Unknown metadata.\")\n    res = \"\"\"\\\n# IEM Climodat https://mesonet.agron.iastate.edu/climodat/\n# Report Generated: %s\n# Climate Record: %s -> %s\n# Site Information: [%s] %s\n# Contact Information: Daryl Herzmann akrherz@iastate.edu 515.294.5978\n# seasonal temperature cycles per year, spring is Jan-Jun, fall is Jul-Dec\n# 1 CYCLE IS A TEMPERATURE VARIATION FROM A VALUE BELOW A THRESHOLD\n# TO A VALUE EXCEEDING A THRESHOLD.  THINK OF IT AS FREEZE/THAW CYCLES\n# FIRST DATA COLUMN WOULD BE FOR CYCLES EXCEEDING 26 AND 38 DEGREES F\nTHRES  %2.0f-%2.0f   %2.0f-%2.0f   %2.0f-%2.0f   %2.0f-%2.0f   \\\n%2.0f-%2.0f   %2.0f-%2.0f   %2.0f-%2.0f   %2.0f-%2.0f\nYEAR   SPRING  FALL    SPRING  FALL    SPRING  FALL    SPRING  FALL\n\"\"\" % (\n        e.strftime(\"%d %b %Y\"),\n        s,\n        e,\n        station,\n        ctx[\"_nt\"].sts[station][\"name\"],\n        prs[0][0],\n        prs[0][1],\n        prs[0][0],\n        prs[0][1],\n        prs[1][0],\n        prs[1][1],\n        prs[1][0],\n        prs[1][1],\n        prs[2][0],\n        prs[2][1],\n        prs[2][0],\n        prs[2][1],\n        prs[3][0],\n        prs[3][1],\n        prs[3][0],\n        prs[3][1],\n    )\n\n    df = pd.DataFrame(\n        {\n            thres1 + \"s\": 0.0,\n            thres1 + \"f\": 0.0,\n            thres2 + \"s\": 0.0,\n            thres2 + \"f\": 0.0,\n            thres3 + \"s\": 0.0,\n            thres3 + \"f\": 0.0,\n            thres4 + \"s\": 0.0,\n            thres4 + \"f\": 0.0,\n        },\n        index=pd.Series(range(s.year, e.year + 1), name=\"year\"),\n    )\n\n    cycle_pos = [-1, -1, -1, -1]\n\n    cursor.execute(\n        \"SELECT day, high, low from alldata WHERE station = %s and \"\n        \"high is not null and low is not null ORDER by day ASC\",\n        (station,),\n    )\n    for row in cursor:\n        ts = row[0]\n        high = row[1]\n        low = row[2]\n\n        for i, (lower, upper) in enumerate(prs):\n            ckey = thres[i] + (\"s\" if ts.month < 7 else \"f\")\n\n            # cycles lower\n            if cycle_pos[i] == 1 and low < lower:\n                cycle_pos[i] = -1\n                df.loc[ts.year, ckey] += 0.5\n\n            # cycled higher\n            if cycle_pos[i] == -1 and high > upper:\n                cycle_pos[i] = 1\n                df.loc[ts.year, ckey] += 0.5\n    cursor.close()\n    pgconn.close()\n    for yr, row in df.iterrows():\n        res += (\"%s   %-8i%-8i%-8i%-8i%-8i%-8i%-8i%-8i\\n\") % (\n            yr,\n            row[f\"{thres1}s\"],\n            row[f\"{thres1}f\"],\n            row[f\"{thres2}s\"],\n            row[f\"{thres2}f\"],\n            row[f\"{thres3}s\"],\n            row[f\"{thres3}f\"],\n            row[f\"{thres4}s\"],\n            row[f\"{thres4}f\"],\n        )\n\n    res += (\"AVG    %-8.1f%-8.1f%-8.1f%-8.1f%-8.1f%-8.1f%-8.1f%-8.1f\\n\") % (\n        df[thres1 + \"s\"].mean(),\n        df[thres1 + \"f\"].mean(),\n        df[thres2 + \"s\"].mean(),\n        df[thres2 + \"f\"].mean(),\n        df[thres3 + \"s\"].mean(),\n        df[thres3 + \"f\"].mean(),\n        df[thres4 + \"s\"].mean(),\n        df[thres4 + \"f\"].mean(),\n    )\n\n    return None, df, res\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p122.py",
    "content": "\"\"\"\nA simple accounting of the number of days with a low temperature below the\ngiven threshold or above the given threshold by year.\n\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\n        \"description\": __doc__,\n        \"data\": True,\n        \"report\": True,\n        \"nopng\": True,\n    }\n    desc[\"arguments\"] = [\n        ARG_STATION,\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n\n    bs = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if bs is None:\n        raise NoDataFound(\"No data Found.\")\n    res = (\n        \"# IEM Climodat https://mesonet.agron.iastate.edu/climodat/\\n\"\n        \"# Report Generated: %s\\n\"\n        \"# Climate Record: %s -> %s\\n\"\n        \"# Site Information: %s\\n\"\n        \"# Contact Information: Daryl Herzmann akrherz@iastate.edu \"\n        \"515.294.5978\\n\"\n        \"# Number of days exceeding given temperature thresholds\\n\"\n        \"# -20, -10, 0, 32 are days with low temperature at or below value\\n\"\n        \"# 50, 70, 80, 93, 100 are days with high temperature at or \"\n        \"above value\\n\"\n    ) % (\n        date.today().strftime(\"%d %b %Y\"),\n        bs,\n        date.today(),\n        ctx[\"_sname\"],\n    )\n    res += (\"YEAR %4s %4s %4s %4s %4s %4s %4s %4s %4s\\n\") % (\n        -20,\n        -10,\n        0,\n        32,\n        50,\n        70,\n        80,\n        93,\n        100,\n    )\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            \"\"\"SELECT year,\n        sum(case when low <= -20 THEN 1 ELSE 0 END) as m20,\n        sum(case when low <= -10 THEN 1 ELSE 0 END) as m10,\n        sum(case when low <=  0 THEN 1 ELSE 0 END) as m0,\n        sum(case when low <=  32 THEN 1 ELSE 0 END) as m32,\n        sum(case when high >= 50 THEN 1 ELSE 0 END) as e50,\n        sum(case when high >= 70 THEN 1 ELSE 0 END) as e70,\n        sum(case when high >= 80 THEN 1 ELSE 0 END) as e80,\n        sum(case when high >= 93 THEN 1 ELSE 0 END) as e93,\n        sum(case when high >= 100 THEN 1 ELSE 0 END) as e100\n        from alldata\n        WHERE station = %s GROUP by year ORDER by year ASC\n        \"\"\",\n            conn,\n            params=(station,),\n            index_col=None,\n        )\n\n    for _, row in df.iterrows():\n        res += (\n            \"%(year)4i %(m20)4i %(m10)4i %(m0)4i %(m32)4i %(e50)4i \"\n            \"%(e70)4i %(e80)4i %(e93)4i %(e100)4i\\n\"\n        ) % row\n\n    return None, df, res\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p123.py",
    "content": "\"\"\"Climodat consec days\"\"\"\n\nfrom datetime import date, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_dbconn\nfrom pyiem.exceptions import NoDataFound\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\n        \"description\": __doc__,\n        \"data\": True,\n        \"report\": True,\n        \"nopng\": True,\n    }\n    desc[\"arguments\"] = [\n        ARG_STATION,\n    ]\n    return desc\n\n\ndef wrap(cnt, s=None):\n    \"\"\"Helper.\"\"\"\n    if cnt > 0:\n        return s or cnt\n    return \"\"\n\n\ndef contiguous_regions(condition):\n    # http://stackoverflow.com/questions/4494404\n    \"\"\"Finds contiguous True regions of the boolean array \"condition\". Returns\n    a 2D array where the first column is the start index of the region and the\n    second column is the end index.\"\"\"\n\n    # Find the indicies of changes in \"condition\"\n    d = np.subtract(condition[1:], condition[:-1], dtype=float)\n    (idx,) = d.nonzero()\n\n    # We need to start things after the change in \"condition\". Therefore,\n    # we'll shift the index by 1 to the right.\n    idx += 1\n\n    if condition[0]:\n        # If the start of condition is True prepend a 0\n        idx = np.r_[0, idx]\n\n    if condition[-1]:\n        # If the end of condition is True, append the length of the array\n        idx = np.r_[idx, condition.size]  # Edit\n\n    # Reshape the result into two columns\n    idx.shape = (-1, 2)\n    return idx\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    pgconn = get_dbconn(\"coop\")\n    cursor = pgconn.cursor()\n    station = ctx[\"station\"]\n\n    bs = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if bs is None:\n        raise NoDataFound(\"No Data Found.\")\n    res = (\n        \"# IEM Climodat https://mesonet.agron.iastate.edu/climodat/\\n\"\n        \"# Report Generated: %s\\n\"\n        \"# Climate Record: %s -> %s\\n\"\n        \"# Site Information: %s\\n\"\n        \"# Contact Information: Daryl Herzmann akrherz@iastate.edu \"\n        \"515.294.5978\\n\"\n        \"# First occurance of record consecutive number of days\\n\"\n        \"# above or below a temperature threshold\\n\"\n    ) % (\n        date.today().strftime(\"%d %b %Y\"),\n        bs,\n        date.today(),\n        ctx[\"_sname\"],\n    )\n    res += \"#   %-27s %-27s  %-27s %-27s\\n\" % (\n        \" Low Cooler Than\",\n        \" Low Warmer Than\",\n        \" High Cooler Than\",\n        \" High Warmer Than\",\n    )\n    res += \"%3s %5s %10s %10s %5s %10s %10s  %5s %10s %10s %5s %10s %10s\\n\" % (\n        \"TMP\",\n        \"DAYS\",\n        \"BEGIN DATE\",\n        \"END DATE\",\n        \"DAYS\",\n        \"BEGIN DATE\",\n        \"END DATE\",\n        \"DAYS\",\n        \"BEGIN DATE\",\n        \"END DATE\",\n        \"DAYS\",\n        \"BEGIN DATE\",\n        \"END DATE\",\n    )\n\n    cursor.execute(\n        \"SELECT high, low from alldata WHERE station = %s and \"\n        \"day >= '1900-01-01' ORDER by day ASC\",\n        (station,),\n    )\n    highs = np.zeros((cursor.rowcount,), \"f\")\n    lows = np.zeros((cursor.rowcount,), \"f\")\n    for i, row in enumerate(cursor):\n        highs[i] = row[0]\n        lows[i] = row[1]\n\n    startyear = max([1900, bs.year])\n    rows = []\n    for thres in range(-20, 101, 2):\n        condition = lows < thres\n        max_bl = 0\n        max_bl_ts = date.today()\n        for start, stop in contiguous_regions(condition):\n            if (stop - start) > max_bl:\n                max_bl = int(stop - start)\n                max_bl_ts = date(startyear, 1, 1) + timedelta(days=int(stop))\n        condition = lows >= thres\n        max_al = 0\n        max_al_ts = date.today()\n        for start, stop in contiguous_regions(condition):\n            if (stop - start) > max_al:\n                max_al = int(stop - start)\n                max_al_ts = date(startyear, 1, 1) + timedelta(days=int(stop))\n        condition = highs < thres\n        max_bh = 0\n        max_bh_ts = date.today()\n        for start, stop in contiguous_regions(condition):\n            if (stop - start) > max_bh:\n                max_bh = int(stop - start)\n                max_bh_ts = date(startyear, 1, 1) + timedelta(days=int(stop))\n        condition = highs >= thres\n        max_ah = 0\n        max_ah_ts = date.today()\n        for start, stop in contiguous_regions(condition):\n            if (stop - start) > max_ah:\n                max_ah = int(stop - start)\n                max_ah_ts = date(startyear, 1, 1) + timedelta(days=int(stop))\n\n        max_bl_sdate = (max_bl_ts - timedelta(days=max_bl)).strftime(\n            \"%m/%d/%Y\"\n        )\n        max_bl_edate = max_bl_ts.strftime(\"%m/%d/%Y\")\n        max_bh_sdate = (max_bh_ts - timedelta(days=max_bh)).strftime(\n            \"%m/%d/%Y\"\n        )\n        max_bh_edate = max_bh_ts.strftime(\"%m/%d/%Y\")\n        max_al_sdate = (max_al_ts - timedelta(days=max_al)).strftime(\n            \"%m/%d/%Y\"\n        )\n        max_al_edate = max_al_ts.strftime(\"%m/%d/%Y\")\n        max_ah_sdate = (max_ah_ts - timedelta(days=max_ah)).strftime(\n            \"%m/%d/%Y\"\n        )\n        max_ah_edate = max_ah_ts.strftime(\"%m/%d/%Y\")\n        rows.append(\n            dict(\n                thres=thres,\n                max_low_below=max_bl,\n                max_high_below=max_bh,\n                max_low_above=max_al,\n                max_high_above=max_ah,\n                max_low_below_sdate=max_bl_sdate,\n                max_low_below_edate=max_bl_edate,\n                max_low_above_sdate=max_al_sdate,\n                max_low_above_edate=max_al_edate,\n                max_high_below_sdate=max_bh_sdate,\n                max_high_below_edate=max_bh_edate,\n                max_high_above_sdate=max_ah_sdate,\n                max_high_above__edate=max_ah_edate,\n            )\n        )\n        res += (\n            \"%3i %5s %10s %10s %5s %10s %10s  %5s %10s %10s %5s %10s %10s\\n\"\n        ) % (\n            thres,\n            wrap(max_bl),\n            wrap(max_bl, max_bl_sdate),\n            wrap(max_bl, max_bl_edate),\n            wrap(max_al),\n            wrap(max_al, max_al_sdate),\n            wrap(max_al, max_al_edate),\n            wrap(max_bh),\n            wrap(max_bh, max_bh_sdate),\n            wrap(max_bh, max_bh_edate),\n            wrap(max_ah),\n            wrap(max_ah, max_ah_sdate),\n            wrap(max_ah, max_ah_edate),\n        )\n\n    df = pd.DataFrame(rows)\n    df = df.set_index(\"thres\")\n    df.index.name = \"threshold\"\n    return None, df, res\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p124.py",
    "content": "\"\"\"text report of number of days with precip above threshold\"\"\"\n\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\n\nfrom iemweb.autoplot import ARG_STATION\n\nCATS = np.array([0.01, 0.5, 1.0, 2.0, 3.0, 4.0])\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\n        \"description\": __doc__,\n        \"data\": True,\n        \"report\": True,\n        \"nopng\": True,\n    }\n    desc[\"arguments\"] = [\n        ARG_STATION,\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n\n    bs = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if bs is None:\n        raise NoDataFound(\"No metadata found.\")\n    startyear = bs.year\n    # 0.01, 0.5, 1, 2, 3, 4\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT year, month,\n            sum(case when precip >= :cat1 then 1 else 0 end) as cat1,\n            sum(case when precip >= :cat2 then 1 else 0 end) as cat2,\n            sum(case when precip >= :cat3 then 1 else 0 end) as cat3,\n            sum(case when precip >= :cat4 then 1 else 0 end) as cat4,\n            sum(case when precip >= :cat5 then 1 else 0 end) as cat5,\n            sum(case when precip >= :cat6 then 1 else 0 end) as cat6\n            from alldata WHERE station = :station GROUP by year, month\n            ORDER by year, month\n        \"\"\"),\n            conn,\n            params={\n                \"cat1\": CATS[0],\n                \"cat2\": CATS[1],\n                \"cat3\": CATS[2],\n                \"cat4\": CATS[3],\n                \"cat5\": CATS[4],\n                \"cat6\": CATS[5],\n                \"station\": station,\n            },\n            index_col=[\"year\", \"month\"],\n        )\n\n    res = (\n        \"# IEM Climodat https://mesonet.agron.iastate.edu/climodat/\\n\"\n        f\"# Report Generated: {date.today():%d %b %Y}\\n\"\n        f\"# Climate Record: {bs} -> {date.today()}\\n\"\n        f\"# Site Information: {ctx['_sname']}\\n\"\n        \"# Contact Information: Daryl Herzmann akrherz@iastate.edu \"\n        \"515.294.5978\\n\"\n        \"# Number of days per year with precipitation at or \"\n        \"above threshold [inch]\\n\"\n        \"# Partitioned by month of the year, 'ANN' represents \"\n        \"the entire year\\n\"\n    )\n\n    for i, cat in enumerate(CATS):\n        col = f\"cat{i + 1}\"\n        res += (\n            \"YEAR %4.2f JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ANN\\n\"\n        ) % (cat,)\n        for yr in range(startyear, date.today().year + 1):\n            res += \"%s %4.2f \" % (yr, cat)\n            for mo in range(1, 13):\n                if (yr, mo) in df.index:\n                    res += \"%3.0f \" % (df.at[(yr, mo), col],)\n                else:\n                    res += \"  M \"\n            try:\n                res += \"%3.0f\\n\" % (df.loc[(yr, slice(1, 12)), col].sum(),)\n            except KeyError:\n                res += \"   M\\n\"\n\n    return None, df, res\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p125.py",
    "content": "\"\"\"\nThis application produces map analysis of\nclimatological averages.  The IEM maintains a number of different\nclimatologies based on period of record and source.  If you pick the NCEI\nClimatology, only basic temperature and precipitation variables are\navailable at this time.\n\n<p>If you select a period of dates with the end date prior to the start\ndate, the logic then has the period cross the 1 January boundary.  For\nexample, a period between Dec 15 and Jan 15 will be computed.</p>\n\"\"\"\n\nimport calendar\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot, get_cmap, pretty_bins\nfrom pyiem.reference import LATLON, SECTORS_NAME, Z_OVERLAY2\n\nfrom iemweb.util import month2months\n\nPDICT = {\n    \"state\": \"State Level Maps (select state)\",\n}\nPDICT.update(SECTORS_NAME)\nPDICT2 = {\n    \"both\": \"Show both contour and values\",\n    \"values\": \"Show just the values\",\n    \"contour\": \"Show just the filled contour\",\n}\nPDICT3 = {\n    \"avg_temp\": \"Average Temperature\",\n    \"avg_high\": \"Average High Temperature\",\n    \"avg_low\": \"Average Low Temperature\",\n    \"total_cdd65\": \"Total Cooling Degree Days (base=65)\",\n    \"total_gdd32\": \"Total Growing Degree Days (base=32)\",\n    \"total_gdd41\": \"Total Growing Degree Days (base=41)\",\n    \"total_gdd46\": \"Total Growing Degree Days (base=46)\",\n    \"total_gdd48\": \"Total Growing Degree Days (base=48)\",\n    \"total_gdd50\": \"Total Growing Degree Days (base=50)\",\n    \"total_gdd51\": \"Total Growing Degree Days (base=51)\",\n    \"total_gdd52\": \"Total Growing Degree Days (base=52)\",\n    \"total_hdd65\": \"Total Heating Degree Days (base=65)\",\n    \"total_sdd86\": \"Total Stress Degree Days (base=86)\",\n    \"total_precip\": \"Total Precipitation\",\n    \"total_snow\": \"Total Snowfall\",\n}\nPDICT5 = {\n    \"climate\": \"Period of Record Simple Climatology\",\n    \"climate51\": \"1951-Present Simple Climatology\",\n    \"climate71\": \"1971-Present Simple Climatology\",\n    \"climate81\": \"1981-Present Simple Climatology\",\n    \"ncdc_climate81\": \"NCEI 1981-2010 Climatology\",\n    \"ncei_climate91\": \"NCEI 1991-2020 Climatology\",\n}\nQUORUM = {\n    \"climate\": 60,\n    \"climate51\": 60,\n    \"climate71\": 40,\n    \"climate81\": 30,\n    \"ncdc_climate81\": 30,\n    \"ncei_climate91\": 30,\n}\nUNITS = {\"total_precip\": \"inch\", \"total_snow\": \"inch\"}\nPRECISION = {\n    \"total_precip\": 2,\n    \"total_snow\": 1,\n    \"total_gdd50\": 0,\n    \"total_gdd32\": 0,\n    \"total_gdd41\": 0,\n    \"total_gdd46\": 0,\n    \"total_gdd48\": 0,\n    \"total_gdd51\": 0,\n    \"total_gdd52\": 0,\n    \"total_cdd65\": 0,\n    \"total_hdd65\": 0,\n}\nMDICT = {\n    \"all\": \"No Month/Time Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"mjj\": \"May/June/July\",\n    \"gs\": \"May thru Sep\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"sday\",\n            default=\"0101\",\n            name=\"sdate\",\n            optional=True,\n            label=\"Start Date of Inclusive Period (optional)\",\n        ),\n        dict(\n            type=\"sday\",\n            default=\"1231\",\n            name=\"edate\",\n            optional=True,\n            label=\"End Date of Inclusive Period (optional)\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"sector\",\n            default=\"state\",\n            options=PDICT,\n            label=\"Select Map Region\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"src\",\n            default=\"ncei_climate91\",\n            options=PDICT5,\n            label=(\n                \"Select Climatology Source to Use (limits available variables)\"\n            ),\n        ),\n        dict(\n            type=\"state\",\n            name=\"state\",\n            default=\"IA\",\n            label=\"Select State to Plot (when appropriate)\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            options=PDICT2,\n            default=\"both\",\n            label=\"Map Plot/Contour View Option\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            options=PDICT3,\n            default=\"total_precip\",\n            label=\"Which Variable to Plot\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"jet\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    state = ctx[\"state\"][:2]\n    varname = ctx[\"var\"]\n    sector = ctx[\"sector\"]\n    opt = ctx[\"opt\"]\n    month = ctx[\"month\"]\n    months = month2months(month)\n\n    if len(months) == 1:\n        title = calendar.month_name[months[0]]\n    else:\n        title = MDICT[month]\n    params = {}\n    dtlimiter = \"extract(month from valid) = ANY(:months)\"\n    if ctx.get(\"sdate\") is not None and ctx.get(\"edate\") is not None:\n        if ctx[\"sdate\"] > ctx[\"edate\"]:\n            dtlimiter = \"(valid >= :sdate or valid <= :edate)\"\n        else:\n            dtlimiter = \"valid >= :sdate and valid <= :edate\"\n        params[\"sdate\"] = ctx[\"sdate\"]\n        params[\"edate\"] = ctx[\"edate\"]\n        title = f\"{ctx['sdate']:%b %-d} thru {ctx['edate']:%b %d}\"\n\n    mp = MapPlot(\n        apctx=ctx,\n        sector=sector,\n        state=state,\n        axisbg=\"white\",\n        title=f\"{PDICT5[ctx['src']]} {PDICT3[varname]} for {title}\",\n        nocaption=True,\n    )\n    bnds = mp.panels[0].get_extent(crs=LATLON)\n    params.update(\n        {\n            \"b1\": bnds[0],\n            \"b2\": bnds[2],\n            \"b3\": bnds[1],\n            \"b4\": bnds[3],\n            \"months\": months,\n        }\n    )\n\n    joincol = \"id\"\n    if ctx[\"src\"] == \"ncdc_climate81\":\n        joincol = \"ncdc81\"\n    elif ctx[\"src\"] == \"ncei_climate91\":\n        joincol = \"ncei91\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            WITH mystations as (\n                select {joincol} as myid, max(state) as state,\n                max(ST_x(geom)) as lon, max(ST_y(geom)) as lat from stations\n                where network ~* 'CLIMATE' and\n                ST_Contains(ST_MakeEnvelope(:b1, :b2, :b3, :b4, 4326), geom)\n                GROUP by myid\n            )\n            SELECT station, max(state) as state,\n            max(lon) as lon, min(lat) as lat,\n            max(years) as max_years,\n            sum(precip) as total_precip,\n            sum(snow) as total_snow,\n            avg(high) as avg_high,\n            avg(low) as avg_low,\n            avg((high+low)/2.) as avg_temp,\n            sum(sdd86) as total_sdd86,\n            sum(cdd65) as total_cdd65,\n            sum(hdd65) as total_hdd65,\n            sum(gdd32) as total_gdd32,\n            sum(gdd41) as total_gdd41,\n            sum(gdd46) as total_gdd46,\n            sum(gdd48) as total_gdd48,\n            sum(gdd50) as total_gdd50,\n            sum(gdd51) as total_gdd51,\n            sum(gdd52) as total_gdd52 from {table} c\n            JOIN mystations t on (c.station = t.myid)\n            WHERE {dtlimiter}\n            GROUP by station\n            \"\"\",\n                joincol=joincol,\n                dtlimiter=dtlimiter,\n                table=ctx[\"src\"],\n            ),\n            conn,\n            params=params,\n            index_col=\"station\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No data was found for query, sorry.\")\n    df = df[pd.notna(df[varname]) & (df[\"max_years\"] >= QUORUM[ctx[\"src\"]])]\n    if df.empty:\n        raise NoDataFound(\"No data was found for query, sorry.\")\n    # Total hack for snow\n    if varname == \"total_snow\":\n        thres = 0.5 if df[\"total_snow\"].mean() > 10 else 0.1\n        df = df[df[\"total_snow\"] > (df[\"total_snow\"].mean() * thres)]\n    if df.empty:\n        raise NoDataFound(\"No data was found after filters applied.\")\n    levels = pretty_bins(\n        df[varname].quantile(0.05), df[varname].quantile(0.95), 10\n    )\n    if opt in [\"both\", \"contour\"]:\n        mp.contourf(\n            df[\"lon\"].values,\n            df[\"lat\"].values,\n            df[varname].values,\n            levels,\n            units=UNITS.get(varname, \"F\"),\n            cmap=get_cmap(ctx[\"cmap\"]),\n            extend=\"both\",\n            clip_on=False,\n        )\n        # Manual clipping sector\n        mp.draw_mask(None if sector == \"state\" else \"conus\")\n    if sector == \"state\":\n        df = df[df[\"state\"] == state]\n        mp.drawcounties()\n    if opt in [\"both\", \"values\"]:\n        mp.plot_values(\n            df[\"lon\"].values,\n            df[\"lat\"].values,\n            df[varname].values,\n            fmt=f\"%.{PRECISION.get(varname, 1)}f\",\n            labelbuffer=5,\n            zorder=Z_OVERLAY2 + 3,\n        )\n\n    return mp.fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p126.py",
    "content": "\"\"\"\nThis plot presents one of two metrics indicating\ndaily humidity levels as reported by a surface weather station. The\nfirst being mixing ratio, which is a measure of the amount of water\nvapor in the air.  The second being vapor pressure deficit, which reports\nthe difference between vapor pressure and saturated vapor pressure.\nThe vapor pressure calculation shown here makes no accounting for\nleaf tempeature. The saturation vapor pressure is computed by the\nTetens formula (Buck, 1981).\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport metpy.calc as mcalc\nimport pandas as pd\nfrom metpy.units import units\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nPDICT = {\n    \"mixing_ratio\": \"Mixing Ratio [g/kg]\",\n    \"vpd\": \"Vapor Pressure Deficit [hPa]\",\n}\nPDICT2 = {\n    \"min\": \"Minimum\",\n    \"mean\": \"Mean\",\n    \"max\": \"Maximum\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=today.year,\n            label=\"Select Year to Plot\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"mixing_ratio\",\n            label=\"Which Humidity Variable to Compute?\",\n            options=PDICT,\n        ),\n        {\n            \"type\": \"select\",\n            \"options\": PDICT2,\n            \"default\": \"mean\",\n            \"label\": \"Which daily statistic to compute?\",\n            \"name\": \"agg\",\n        },\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    year = ctx[\"year\"]\n    varname = ctx[\"var\"]\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT extract(year from valid) as year,\n            coalesce(mslp, alti * 33.8639, 1013.25) as slp,\n            extract(doy from valid) as doy, tmpf, dwpf, relh from alldata\n            where station = :station and dwpf > -50 and dwpf < 90 and\n            tmpf > -50 and tmpf < 120 and valid > '1950-01-01'\n            and report_type = 3\n        \"\"\"),\n            conn,\n            params={\"station\": station},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data was found.\")\n    # saturation vapor pressure\n    # Convert sea level pressure to station pressure\n    df[\"pressure\"] = (\n        mcalc.add_height_to_pressure(\n            df[\"slp\"].to_numpy() * units(\"millibars\"),\n            ctx[\"_nt\"].sts[station][\"elevation\"] * units(\"m\"),\n        )\n        .to(units(\"millibar\"))\n        .m\n    )\n    # Compute the mixing ratio\n    df[\"mixing_ratio\"] = mcalc.mixing_ratio_from_relative_humidity(\n        df[\"pressure\"].to_numpy() * units(\"millibars\"),\n        df[\"tmpf\"].to_numpy() * units(\"degF\"),\n        df[\"relh\"].to_numpy() * units(\"percent\"),\n    ).m\n    # Compute the saturation mixing ratio\n    df[\"saturation_mixingratio\"] = mcalc.saturation_mixing_ratio(\n        df[\"pressure\"].to_numpy() * units(\"millibars\"),\n        df[\"tmpf\"].to_numpy() * units(\"degF\"),\n    ).m\n    df[\"vapor_pressure\"] = (\n        mcalc.vapor_pressure(\n            df[\"pressure\"].to_numpy() * units(\"millibars\"),\n            df[\"mixing_ratio\"].to_numpy() * units(\"kg/kg\"),\n        )\n        .to(units(\"kPa\"))\n        .m\n    )\n    df[\"saturation_vapor_pressure\"] = (\n        mcalc.vapor_pressure(\n            df[\"pressure\"].to_numpy() * units(\"millibars\"),\n            df[\"saturation_mixingratio\"].to_numpy() * units(\"kg/kg\"),\n        )\n        .to(units(\"kPa\"))\n        .m\n    )\n    df[\"vpd\"] = df[\"saturation_vapor_pressure\"] - df[\"vapor_pressure\"]\n\n    daily = (\n        df[[\"year\", \"doy\", varname]]\n        .groupby([\"year\", \"doy\"])\n        .agg(ctx[\"agg\"])\n        .reset_index()\n    )\n    if varname not in daily.columns:\n        raise NoDataFound(\"All data is missing.\")\n    df2 = daily[[\"doy\", varname]].groupby(\"doy\").describe()\n\n    dyear = df[df[\"year\"] == year]\n    df3 = dyear[[\"doy\", varname]].groupby(\"doy\").describe()\n    # tricky\n    df3[(varname, \"diff\")] = (\n        df3[(varname, ctx[\"agg\"])] - df2[(varname, \"mean\")]\n    )\n\n    title = (\n        f\"{ctx['_sname']}]:: Daily {PDICT2[ctx['agg']]} \"\n        f\"Surface {PDICT[varname]}\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.subplots(2, 1)\n    multiplier = 1000.0 if varname == \"mixing_ratio\" else 10.0\n\n    ax[0].fill_between(\n        df2[(varname, \"min\")].index.values,\n        df2[(varname, \"min\")].values * multiplier,\n        df2[(varname, \"max\")].values * multiplier,\n        color=\"gray\",\n    )\n\n    ax[0].plot(\n        df2[(varname, \"mean\")].index.values,\n        df2[(varname, \"mean\")].values * multiplier,\n        label=\"Climatology\",\n    )\n    ax[0].plot(\n        df3[(varname, ctx[\"agg\"])].index.values,\n        df3[(varname, ctx[\"agg\"])].values * multiplier,\n        color=\"r\",\n        label=f\"{year}\",\n    )\n\n    lbl = (\n        \"Mixing Ratio ($g/kg$)\"\n        if varname == \"mixing_ratio\"\n        else PDICT[varname]\n    )\n    ax[0].set_ylabel(lbl)\n    ax[0].set_xlim(0, 366)\n    ax[0].set_ylim(bottom=0)\n    ax[0].set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax[0].set_xticklabels(calendar.month_abbr[1:])\n    ax[0].grid(True)\n    ax[0].legend(loc=2, fontsize=10)\n\n    cabove = \"b\" if varname == \"mixing_ratio\" else \"r\"\n    cbelow = \"r\" if cabove == \"b\" else \"b\"\n    rects = ax[1].bar(\n        df3[(varname, \"diff\")].index.values,\n        df3[(varname, \"diff\")].values * multiplier,\n        facecolor=cabove,\n        edgecolor=cabove,\n    )\n    for rect in rects:\n        if rect.get_height() < 0.0:\n            rect.set_facecolor(cbelow)\n            rect.set_edgecolor(cbelow)\n\n    plunits = \"$g/kg$\" if varname == \"mixing_ratio\" else \"hPa\"\n    ax[1].set_ylabel(f\"{year:.0f} Departure ({plunits})\")\n    ax[1].set_xlim(0, 366)\n    ax[1].set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax[1].set_xticklabels(calendar.month_abbr[1:])\n    ax[1].grid(True)\n    return fig, df3\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p127.py",
    "content": "\"\"\"\nThis chart presents the crop progress by year.  Since the NASS data is weekly,\na linear interpolation is performed to estimate the daily values.  The chart\npresents a yearly trendline as well for a given threshold value.  Due to leap\ndays, the plotted day of year values are not an exact science.\n\"\"\"\n\nimport calendar\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib import ticker\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure, get_cmap\nfrom pyiem.reference import state_names\nfrom pyiem.util import utc\n\nPDICT = {\n    \"CPR\": \"CORN - PROGRESS, MEASURED IN PCT SEEDBED PREPARED\",\n    \"CP\": \"CORN - PROGRESS, MEASURED IN PCT PLANTED\",\n    \"CE\": \"CORN - PROGRESS, MEASURED IN PCT EMERGED\",\n    \"CS\": \"CORN - PROGRESS, MEASURED IN PCT SILKING\",\n    \"CMI\": \"CORN - PROGRESS, MEASURED IN PCT MILK\",\n    \"CD\": \"CORN - PROGRESS, MEASURED IN PCT DENTED\",\n    \"CDO\": \"CORN - PROGRESS, MEASURED IN PCT DOUGH\",\n    \"CMA\": \"CORN - PROGRESS, MEASURED IN PCT MATURE\",\n    \"CH\": \"CORN, GRAIN - PROGRESS, MEASURED IN PCT HARVESTED\",\n    \"CSH\": \"CORN, SILAGE - PROGRESS, MEASURED IN PCT HARVESTED\",\n    \"GC\": \"SORGHUM - PROGRESS, MEASURED IN PCT COLORING\",\n    \"GE\": \"SORGHUM - PROGRESS, MEASURED IN PCT EMERGED\",\n    \"GH\": \"SORGHUM - PROGRESS, MEASURED IN PCT HEADED\",\n    \"GM\": \"SORGHUM - PROGRESS, MEASURED IN PCT MATURE\",\n    \"GP\": \"SORGHUM - PROGRESS, MEASURED IN PCT PLANTED\",\n    \"GS\": \"SORGHUM - PROGRESS, MEASURED IN PCT SEEDBED PREPARED\",\n    \"GGH\": \"SORGHUM, GRAIN - PROGRESS, MEASURED IN PCT HARVESTED\",\n    \"SPR\": \"SOYBEANS - PROGRESS, MEASURED IN PCT SEEDBED PREPARED\",\n    \"SP\": \"SOYBEANS - PROGRESS, MEASURED IN PCT PLANTED\",\n    \"SE\": \"SOYBEANS - PROGRESS, MEASURED IN PCT EMERGED\",\n    \"SPO\": \"SOYBEANS - PROGRESS, MEASURED IN PCT FULLY PODDED\",\n    \"SB\": \"SOYBEANS - PROGRESS, MEASURED IN PCT BLOOMING\",\n    \"SM\": \"SOYBEANS - PROGRESS, MEASURED IN PCT MATURE\",\n    \"SL\": \"SOYBEANS - PROGRESS, MEASURED IN PCT DROPPING LEAVES\",\n    \"SS\": \"SOYBEANS - PROGRESS, MEASURED IN PCT SETTING PODS\",\n    \"SC\": \"SOYBEANS - PROGRESS, MEASURED IN PCT COLORING\",\n    \"SH\": \"SOYBEANS - PROGRESS, MEASURED IN PCT HARVESTED\",\n    \"FD\": \"FIELDWORK - DAYS SUITABLE, MEASURED IN DAYS / WEEK\",\n    \"WWB\": \"WHEAT, WINTER - PROGRESS, MEASURED IN PCT BOOTED\",\n    \"WWD\": \"WHEAT, WINTER - PROGRESS, MEASURED IN PCT BREAKING DORMANCY\",\n    \"WWC\": \"WHEAT, WINTER - PROGRESS, MEASURED IN PCT COLORING\",\n    \"WWE\": \"WHEAT, WINTER - PROGRESS, MEASURED IN PCT EMERGED\",\n    \"WWH\": \"WHEAT, WINTER - PROGRESS, MEASURED IN PCT HARVESTED\",\n    \"WHE\": \"WHEAT, WINTER - PROGRESS, MEASURED IN PCT HEADED\",\n    \"WWJ\": \"WHEAT, WINTER - PROGRESS, MEASURED IN PCT JOINTING\",\n    \"WWM\": \"WHEAT, WINTER - PROGRESS, MEASURED IN PCT MATURE\",\n    \"WWPP\": \"WHEAT, WINTER - PROGRESS, MEASURED IN PCT PASTURED\",\n    \"WWP\": \"WHEAT, WINTER - PROGRESS, MEASURED IN PCT PLANTED\",\n    \"WWSB\": \"WHEAT, WINTER - PROGRESS, MEASURED IN PCT SEEDBED PREPARED\",\n}\nPDICT2 = {\n    \"last\": \"Current value for the most recent week\",\n    \"thres\": \"Threshold value defined by user\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"nass\": True}\n    desc[\"arguments\"] = [\n        dict(type=\"state\", name=\"state\", default=\"IA\", label=\"Select State:\"),\n        dict(\n            type=\"select\",\n            name=\"short_desc\",\n            default=\"CH\",\n            options=PDICT,\n            label=\"Which Statistical Category?\",\n        ),\n        {\n            \"type\": \"select\",\n            \"name\": \"w\",\n            \"default\": \"last\",\n            \"options\": PDICT2,\n            \"label\": \"Plot trendline for given threshold value\",\n        },\n        {\n            \"type\": \"int\",\n            \"name\": \"threshold\",\n            \"default\": 50,\n            \"label\": \"Threshold Value [% or days] when set above:\",\n        },\n        dict(type=\"cmap\", name=\"cmap\", default=\"jet\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plot_trendline(fig, ctx, data, year0, lastyear):\n    \"\"\"Add the right hand side plot of trendline.\"\"\"\n    ax = fig.add_axes([0.55, 0.1, 0.4, 0.8])\n    threshold = ctx[\"threshold\"]\n    if ctx[\"w\"] == \"last\":\n        threshold = np.max(data[-1, :])\n    years = []\n    doys = []\n    for year in range(year0, lastyear):\n        try:\n            idx = np.digitize([threshold], data[year - year0, :], right=True)\n            years.append(year)\n            doys.append(idx[0])\n        except ValueError:\n            pass\n\n    ax.scatter(years, doys, s=40)\n    ax.set_xlim(year0 - 0.5, lastyear + 0.5)\n    ax.set_ylim(min(doys) - 5, max(doys) + 5)\n    ylabels = []\n    yticks = []\n    every = [1, 15] if max(doys) - min(doys) > 60 else [1, 8, 15, 22, 29]\n    for doy in range(min(doys) - 5, max(doys) + 5):\n        ts = pd.Timestamp(\"2000-01-01\") + pd.Timedelta(days=doy)\n        if ts.day in every:\n            ylabels.append(ts.strftime(\"%b %d\"))\n            yticks.append(doy)\n    ax.set_yticks(yticks)\n    ax.set_yticklabels(ylabels)\n    unit = \"% Progress\" if ctx[\"short_desc\"] != \"FD\" else \" days\"\n    ax.set_ylabel(f\"Date of {threshold:.0f}{unit}\")\n    ax.grid(True)\n\n    # fit a trendline with a R-squared denoted\n    x = np.array(years)\n    y = np.array(doys)\n    z = np.polyfit(x, y, 1)\n    p = np.poly1d(z)\n    ax.plot(x, p(x), \"r--\")\n    yhat = p(x)\n    ybar = np.sum(y) / len(y)\n    ssreg = np.sum((yhat - ybar) ** 2)\n    sstot = np.sum((y - ybar) ** 2)\n    r2 = ssreg / sstot\n    meany = np.mean(doys)\n    ax.axhline(meany, lw=2, color=\"k\")\n    dt = pd.Timestamp(\"2000-01-01\") + pd.Timedelta(days=int(meany))\n    ax.annotate(\n        f\"Mean: {dt.strftime('%b %d')}\",\n        xy=(0.9, meany),\n        xycoords=(\"axes fraction\", \"data\"),\n        va=\"top\",\n    )\n    ax.text(\n        0.9,\n        0.9,\n        f\"R2={r2:.2f}\",\n        transform=ax.transAxes,\n        ha=\"center\",\n    )\n\n\ndef fill100(df: pd.DataFrame) -> pd.DataFrame:\n    \"\"\"Need to account for a NASS quirk.\"\"\"\n    newrows = []\n    for year, maxrow in (\n        df[[\"year\", \"num_value\"]].groupby(\"year\").max().iterrows()\n    ):\n        if maxrow[\"num_value\"] > 99 or year == utc().year:\n            continue\n        lastrow = df[df[\"year\"] == year].iloc[-1]\n        filldate = lastrow[\"week_ending\"] + pd.Timedelta(days=7)\n        if filldate.year != year:\n            continue\n        newrows.append(\n            {\n                \"year\": year,\n                \"week_ending\": filldate,\n                \"num_value\": 100,\n                \"day_of_year\": lastrow[\"day_of_year\"] + 7,\n            }\n        )\n    if newrows:\n        df = pd.concat([df, pd.DataFrame(newrows)])\n    return df.sort_values(\"week_ending\", ascending=True)\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    state = ctx[\"state\"][:2]\n    short_desc = PDICT[ctx[\"short_desc\"].upper()]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            select distinct year, week_ending, num_value,\n            extract(doy from week_ending)::int as day_of_year\n            from nass_quickstats\n            where short_desc = :sd and state_alpha = :sa and\n            num_value is not null and week_ending is not null\n            and extract(year from week_ending) = year\n            ORDER by week_ending ASC\n        \"\"\"),\n            conn,\n            params={\"sd\": short_desc, \"sa\": state},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"ERROR: No data found!\")\n    if short_desc != \"FD\":\n        # Need to fill out trailing weeks with 100s\n        df = fill100(df)\n    df[\"yeari\"] = df[\"year\"] - df[\"year\"].min()\n    if ctx[\"short_desc\"] == \"FD\":\n        df[\"num_value\"] = df[[\"num_value\", \"year\"]].groupby(\"year\").cumsum()\n\n    year0 = int(df[\"year\"].min())\n    lastyear = int(df[\"year\"].max())\n    tt = (\n        f\"{short_desc} Progress\"\n        if ctx[\"short_desc\"] != \"FD\"\n        else \"Accumulated Days Suitable for Field Work\"\n    )\n    title = (\n        f\"{state_names[state]} {tt}\\n\"\n        f\"USDA NASS {year0:.0f}-{lastyear:.0f} -- \"\n        \"Daily Linear Interpolated Values Between Weekly Reports\"\n    )\n    fig = figure(title=title, apctx=ctx)\n    ax = fig.add_axes((0.05, 0.1, 0.35, 0.8))\n\n    data = np.ma.ones((df[\"yeari\"].max() + 1, 366), \"f\") * -1\n    data.mask = np.where(data == -1, True, False)\n\n    lastrow = None\n    for _, row in df.iterrows():\n        if lastrow is None:\n            lastrow = row\n            continue\n\n        dt = row[\"week_ending\"]\n        ldate = lastrow[\"week_ending\"]\n        val = int(row[\"num_value\"])\n        lval = int(lastrow[\"num_value\"])\n        d0 = ldate.timetuple().tm_yday\n        d1 = dt.timetuple().tm_yday\n        if ldate.year == dt.year:\n            delta = (val - lval) / float(d1 - d0)\n            for i, jday in enumerate(range(d0, d1 + 1)):\n                data[dt.year - year0, jday] = lval + i * delta\n        else:\n            data[ldate.year - year0, d0:] = np.max(data[ldate.year - year0, :])\n\n        lastrow = row\n\n    plot_trendline(fig, ctx, data, year0, lastyear)\n\n    dlast = np.max(data[-1, :])\n    if ctx[\"w\"] == \"thres\":\n        dlast = ctx[\"threshold\"]\n    for year in range(year0, lastyear):\n        try:\n            idx = np.digitize([dlast], data[year - year0, :], right=True)\n            ax.text(idx[0], year, \"X\", va=\"center\", zorder=2, color=\"white\")\n        except ValueError:\n            pass\n\n    cmap = get_cmap(ctx[\"cmap\"])\n    res = ax.imshow(\n        data,\n        extent=[1, 367, lastyear + 0.5, year0 - 0.5],\n        aspect=\"auto\",\n        interpolation=\"none\",\n        cmap=cmap,\n    )\n    cax = fig.add_axes((0.42, 0.1, 0.02, 0.8))\n    fig.colorbar(res, cax=cax)\n    ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    # We need to compute the domain of this plot\n    maxv = np.max(data, 0)\n    minv = np.min(data, 0)\n    if ctx[\"short_desc\"] == \"FD\":\n        ax.set_xlim(np.argmax(maxv > 0) - 7)\n    else:\n        ax.set_xlim(\n            np.nanargmax(maxv > 0) - 7,\n            np.nanargmax(minv >= np.nanmax(minv)) + 7,\n        )\n    ax.set_ylim(lastyear + 0.5, year0 - 0.5)\n    ax.yaxis.set_major_locator(ticker.MaxNLocator(integer=True))\n    ax.grid(True)\n    unit = \"%\" if ctx[\"short_desc\"] != \"FD\" else \" days\"\n    if ctx[\"w\"] == \"thres\":\n        ax.set_xlabel(f\"X denotes value of {dlast:.1f}{unit}\")\n    else:\n        lastweek = df[\"week_ending\"].max()\n        ax.set_xlabel(\n            f\"X denotes {lastweek:%d %b %Y} value of {dlast:.1f}{unit}\"\n        )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p128.py",
    "content": "\"\"\"\nThis chart compares yearly summaries between two long term climate sites. Only\nyears with similiar observation counts are used in this data presentation.\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot.barchart import barchart_with_top10\n\nPDICT = {\n    \"avg_high\": \"Average High Temperature\",\n    \"avg_low\": \"Average Low Temperature\",\n    \"avg_temp\": \"Average Temperature\",\n    \"max_high\": \"Maximum Daily High\",\n    \"min_high\": \"Minimum Daily High\",\n    \"max_low\": \"Maximum Daily Low\",\n    \"min_low\": \"Minimum Daily Low\",\n    \"total_precip\": \"Total Precipitation\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            options=PDICT,\n            name=\"var\",\n            label=\"Select Variable to Plot\",\n            default=\"avg_temp\",\n        ),\n        dict(\n            type=\"station\",\n            name=\"station1\",\n            default=\"IATDSM\",\n            label=\"Select First Station:\",\n            network=\"IACLIMATE\",\n        ),\n        dict(\n            type=\"station\",\n            name=\"station2\",\n            default=\"IATAME\",\n            label=\"Select Secont Station:\",\n            network=\"IACLIMATE\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station1 = ctx[\"station1\"].upper()\n    station2 = ctx[\"station2\"].upper()\n    varname = ctx[\"var\"]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            \"\"\"WITH one as (\n        SELECT year, sum(precip) as one_total_precip,\n        avg(high) as one_avg_high, avg(low) as one_avg_low,\n        avg((high+low)/2.) as one_avg_temp,\n        max(high) as one_max_high,\n        min(high) as one_min_high,\n        min(low) as one_min_low,\n        max(low) as one_max_low, count(*) as obs from alldata WHERE\n        station = %s GROUP by year),\n        two as (\n        SELECT year, sum(precip) as two_total_precip,\n        avg(high) as two_avg_high, avg(low) as two_avg_low,\n        avg((high+low)/2.) as two_avg_temp,\n        max(high) as two_max_high,\n        min(high) as two_min_high,\n        min(low) as two_min_low,\n        max(low) as two_max_low, count(*) as obs from alldata WHERE\n        station = %s GROUP by year\n        )\n\n        SELECT o.year, one_total_precip, one_avg_high, one_avg_low,\n        one_avg_temp, one_max_high, one_min_low, one_min_high, one_max_low,\n        two_total_precip, two_avg_high,\n        two_avg_low, two_avg_temp, two_max_high, two_min_low, two_min_high,\n        two_max_low from one o, two t\n        WHERE o.year = t.year and abs(o.obs - t.obs) < 5 ORDER by o.year ASC\n        \"\"\",\n            conn,\n            params=(station1, station2),\n            index_col=\"year\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df[\"one_station\"] = station1\n    df[\"two_station\"] = station2\n    for col in PDICT:\n        df[\"diff_\" + col] = df[\"one_\" + col] - df[\"two_\" + col]\n\n    title = f\"Yearly {PDICT[varname]} Difference\"\n    subtitle = (\n        f\"[{station1}] {ctx['_nt1'].sts[station1]['name']} minus \"\n        f\"[{station2}] {ctx['_nt2'].sts[station2]['name']}\"\n    )\n    fig = figure(title=title, subtitle=subtitle, apctx=ctx)\n    color_above = \"b\" if varname == \"total_precip\" else \"r\"\n    color_below = \"r\" if color_above == \"b\" else \"b\"\n    df[\"color\"] = color_above\n    df.loc[df[f\"diff_{varname}\"] < 0, \"color\"] = color_below\n\n    ax = barchart_with_top10(\n        fig,\n        df,\n        f\"diff_{varname}\",\n        color=df[\"color\"],\n        table_col_title=\"Diff\",\n        labelformat=\"%.2f\" if varname == \"total_precip\" else \"%.1f\",\n    )\n\n    units = \"inch\" if varname == \"total_precip\" else \"F\"\n    lbl = \"wetter\" if units == \"inch\" else \"warmer\"\n    wins = len(df[df[\"diff_\" + varname] > 0].index)\n    ax.text(\n        0.5,\n        0.95,\n        \"%s %s (%s/%s)\"\n        % (ctx[\"_nt1\"].sts[station1][\"name\"], lbl, wins, len(df.index)),\n        transform=ax.transAxes,\n        ha=\"center\",\n    )\n    wins = len(df[df[\"diff_\" + varname] < 0].index)\n    ax.text(\n        0.5,\n        0.05,\n        \"%s %s (%s/%s)\"\n        % (ctx[\"_nt2\"].sts[station2][\"name\"], lbl, wins, len(df.index)),\n        transform=ax.transAxes,\n        ha=\"center\",\n    )\n    ax.axhline(df[\"diff_\" + varname].mean(), lw=2, color=\"k\")\n    ax.set_ylabel(\n        \"%s [%s] Avg: %.2f\"\n        % (PDICT[varname], units, df[\"diff_\" + varname].mean())\n    )\n    ax.grid(True)\n    ax.set_xlim(df.index.min() - 1, df.index.max() + 1)\n    ymax = df[\"diff_\" + varname].abs().max() * 1.1\n    ax.set_ylim(0 - ymax, ymax)\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p129.py",
    "content": "\"\"\"\nThis chart plots the monthly percentiles that\na given daily value has.  For example, where would a daily 2 inch\nprecipitation rank for each month of the year.  Having a two inch event\nin December would certainly rank higher than one in May. Percentiles\nfor precipitation are computed with dry days omitted.\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"high\": \"High Temperature\",\n    \"low\": \"Low Temperature\",\n    \"precip\": \"Precipitation\",\n}\n\nPDICT2 = {\"above\": \"At or Above\", \"below\": \"Below\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            options=PDICT,\n            name=\"var\",\n            label=\"Select Variable to Plot\",\n            default=\"precip\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT2,\n            name=\"dir\",\n            label=\"Direction of Percentile\",\n            default=\"above\",\n        ),\n        dict(\n            type=\"float\",\n            name=\"level\",\n            default=\"2\",\n            label=\"Daily Variable Level (inch or degrees F):\",\n        ),\n        ARG_STATION,\n    ]\n    return desc\n\n\ndef add_ctx(ctx):\n    \"\"\"Get the context\"\"\"\n    station = ctx[\"station\"].upper()\n    varname = ctx[\"var\"]\n    level = ctx[\"level\"]\n    mydir = ctx[\"dir\"]\n    bs = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if bs is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n\n    plimit = \"\" if varname != \"precip\" else \" and precip > 0.009 \"\n    comp = \">=\" if mydir == \"above\" else \"<\"\n    if varname in [\"high\", \"low\"]:\n        level = int(level)\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        monthly = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        SELECT month, year,\n        sum(case when {varname} {comp} :level then 1 else 0 end) as hits,\n        count(*) from alldata WHERE station = :station {plimit}\n        and day < :day\n        GROUP by year, month ORDER by year desc, month ASC\n        \"\"\",\n                varname=varname,\n                comp=comp,\n                plimit=plimit,\n            ),\n            conn,\n            params={\n                \"level\": level,\n                \"station\": station,\n                \"day\": date.today().replace(day=1),\n            },\n            index_col=None,\n        )\n    if monthly.empty:\n        raise NoDataFound(\"Did not find any data.\")\n    quorum = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n    monthly[\"quorum\"] = monthly[\"month\"].apply(lambda x: quorum[x])\n    if varname != \"precip\":\n        monthly = monthly[monthly[\"count\"] >= monthly[\"quorum\"]]\n    years = monthly[\"month\"].value_counts()\n    df = monthly.groupby(\"month\").agg({\"hits\": \"sum\", \"count\": \"sum\"}).copy()\n    df[\"hits_max\"] = monthly.groupby(\"month\").agg({\"hits\": \"max\"})[\"hits\"]\n    df[\"hits_max_year\"] = monthly.loc[\n        monthly.groupby(\"month\").agg({\"hits\": \"idxmax\"})[\"hits\"]\n    ].set_index(\"month\")[\"year\"]\n    df[\"hits_min\"] = monthly.groupby(\"month\").agg({\"hits\": \"min\"})[\"hits\"]\n    df[\"hits_min_year\"] = monthly.loc[\n        monthly.groupby(\"month\").agg({\"hits\": \"idxmin\"})[\"hits\"]\n    ].set_index(\"month\")[\"year\"]\n    df[\"rank\"] = (df[\"count\"] - df[\"hits\"]) / df[\"count\"] * 100.0\n    df[\"avg_days\"] = df[\"hits\"] / years\n    ctx[\"df\"] = df\n    ctx[\"station\"] = station\n    ctx[\"mydir\"] = mydir\n    ctx[\"level\"] = level\n    ctx[\"varname\"] = varname\n    units = \"inch\" if varname == \"precip\" else \"F\"\n    ctx[\"title\"] = (\"Monthly Frequency of Daily %s %s %s+ %s\") % (\n        PDICT[varname],\n        PDICT2[mydir],\n        level,\n        units,\n    )\n    ctx[\"subtitle\"] = f\"for {ctx['_sname']} ({bs:%Y}-{date.today():%Y})\"\n    return ctx\n\n\ndef get_highcharts(ctx: dict) -> str:\n    \"\"\"Go\"\"\"\n    add_ctx(ctx)\n    containername = ctx[\"_e\"]\n\n    return f\"\"\"\nHighcharts.chart('{containername}', {{\n    title: {{text: '{ctx[\"title\"]}'}},\n    subtitle: {{text: '{ctx[\"subtitle\"]}'}},\n    yAxis: [{{\n            min: 0, max: 100,\n            title: {{\n                text: 'Percentile'\n            }}\n        }}, {{\n            min: 0,\n            title: {{\n                text: 'Avg Days per Month'\n            }},\n            opposite: true\n    }}],\n    tooltip: {{\n            shared: true,\n            formatter: function() {{\n                var s = '<b>' + this.x +'</b>';\n                s += '<br /><b>Percentile:</b> '+ this.points[0].y.toFixed(2);\ns += '<br /><b>Avg Days per Month:</b> '+ this.points[1].y.toFixed(2);\n                return s;\n            }}\n    }},\n    plotOptions: {{\n            column: {{\n                grouping: false,\n                shadow: false,\n                borderWidth: 0\n            }}\n    }},\n    series : [{{\n        name: 'Percentile',\n        data: {ctx[\"df\"][\"rank\"].values.tolist()},\n        pointPadding: 0.2,\n        pointPlacement: -0.2\n    }},{{\n        name: 'Avg Days per Month',\n        data: {ctx[\"df\"][\"avg_days\"].values.tolist()},\n        yAxis: 1,\n        pointPadding: 0.4,\n        pointPlacement: -0.2\n    }}],\n    chart: {{type: 'column'}},\n    xAxis: {{categories: {calendar.month_abbr[1:]}}}\n}});\n    \"\"\"\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    add_ctx(ctx)\n    (fig, ax) = figure_axes(\n        title=ctx[\"title\"], subtitle=ctx[\"subtitle\"], apctx=ctx\n    )\n    ax.set_position([0.1, 0.2, 0.8, 0.7])\n    df = ctx[\"df\"]\n\n    ax.bar(\n        df.index.values,\n        df[\"rank\"],\n        fc=\"tan\",\n        zorder=1,\n        ec=\"orange\",\n        align=\"edge\",\n        width=0.4,\n    )\n\n    ax.grid(True)\n    ax.set_ylabel(\"Percentile [%]\", color=\"tan\")\n    ax.set_ylim(0, 105)\n    ax2 = ax.twinx()\n    ax2.bar(\n        df.index.values,\n        df[\"avg_days\"],\n        width=-0.4,\n        align=\"edge\",\n        fc=\"blue\",\n        ec=\"k\",\n        zorder=1,\n    )\n    ax2.set_ylabel(\n        f\"Avg Days per Month ({df['avg_days'].sum():.2f} days per year)\",\n        color=\"b\",\n    )\n    ax2.set_ylim(0, 32)\n    ax.set_xticks(range(1, 13))\n    labels = []\n    for i in range(1, 13):\n        labels.append(  # noqa\n            f\"{calendar.month_abbr[i]}\\n\"\n            f\"{df.at[i, 'hits_min']:.0f}:{df.at[i, 'hits_min_year']:.0f}\\n\"\n            f\"{df.at[i, 'hits_max']:.0f}:{df.at[i, 'hits_max_year']:.0f}\"\n        )\n    ax.set_xticklabels(labels)\n    ax.set_xlabel(\"Month of the Year (min+min days for month and last year)\")\n    ax.set_xlim(0.5, 12.5)\n    for idx, row in df.iterrows():\n        ax.text(\n            idx,\n            row[\"rank\"],\n            f\"{row['rank']:.1f}\",\n            ha=\"left\",\n            color=\"k\",\n            zorder=5,\n            fontsize=11,\n        )\n        ax2.text(\n            idx,\n            row[\"avg_days\"],\n            f\"{row['avg_days']:.1f}\",\n            ha=\"right\",\n            color=\"k\",\n            zorder=5,\n            fontsize=11,\n        )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p130.py",
    "content": "\"\"\"\nThis chart presents violin plots of the distribution of daily\nhigh and low temperatures on dates with and without snow cover by month.\nA given month is plotted when at least 1% of the days on record for the\nmonth had snowcover.  There\nare a number of caveats due to the timing of the daily temperature and\nsnow cover report.  Also with the quality of the snow cover data.\n\"\"\"\n\nimport calendar\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"].upper()\n    # Load all available data\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"SELECT year, month, high, low, snowd from alldata \"\n                \"WHERE station = :station and snowd is not null\"\n            ),\n            conn,\n            params={\"station\": station},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found.\")\n\n    # Consider months that have at least 3% of days with snowcover\n    total = df.groupby(\"month\").count()\n    coverdf = df[df[\"snowd\"] > 0]\n    nocoverdf = df[df[\"snowd\"] == 0]\n    snowcover = coverdf.groupby(\"month\").count()\n    freq = snowcover[\"snowd\"] / total[\"snowd\"]\n    monthsall = freq[freq > 0.03].index.values.tolist()\n    # Sort the months to place fall first\n    months = [x for x in monthsall if x > 6]\n    months2 = [x for x in monthsall if x < 7]\n    months.extend(months2)\n    title = (\n        f\"{ctx['_sname']}\\n\"\n        \"Daily Temp Distributions by Month by Snow Cover \"\n        f\"({df['year'].min()}-{df['year'].max()})\"\n    )\n\n    fig = figure(apctx=ctx, title=title)\n    ax = [\n        fig.add_axes((0.12, 0.56, 0.83, 0.32)),\n        fig.add_axes((0.12, 0.1, 0.83, 0.32)),\n    ]\n    colors = [\"r\", \"b\"]\n    res = []\n    for i, lbl in enumerate([\"high\", \"low\"]):\n        for j, month in enumerate(months):\n            vopts = dict(\n                positions=[j], showmeans=False, showextrema=False, widths=0.8\n            )\n\n            # RHS\n            vals = coverdf[coverdf[\"month\"] == month][lbl]\n            v = ax[i].violinplot(vals, **vopts)\n            meanval2 = vals.mean()\n            ax[i].plot([j, j + 0.4], [meanval2, meanval2], c=colors[1])\n            ax[i].text(j, meanval2, f\"{meanval2:.0f}°\", c=colors[1], ha=\"left\")\n            b = v[\"bodies\"][0]\n            m = np.mean(b.get_paths()[0].vertices[:, 0])\n            b.get_paths()[0].vertices[:, 0] = np.clip(\n                b.get_paths()[0].vertices[:, 0], m, np.inf\n            )\n            b.set_color(colors[1])\n\n            # LHS\n            vals = nocoverdf[nocoverdf[\"month\"] == month][lbl]\n            meanval = vals.mean()\n            if not vals.empty:\n                v = ax[i].violinplot(vals, **vopts)\n                ax[i].plot([j - 0.4, j], [meanval, meanval], c=colors[0])\n                ax[i].text(\n                    j,\n                    meanval,\n                    f\"{meanval:.0f}°\",\n                    c=colors[0],\n                    ha=\"right\",\n                )\n                b = v[\"bodies\"][0]\n                paths = b.get_paths()\n                if paths:\n                    m = np.mean(paths[0].vertices[:, 0])\n                    paths[0].vertices[:, 0] = np.clip(\n                        paths[0].vertices[:, 0], -np.inf, m\n                    )\n                    b.set_color(colors[0])\n\n            res.append(\n                {\n                    \"month\": month,\n                    f\"{lbl}_withoutsnow\": meanval,\n                    f\"{lbl}_withsnow\": meanval2,\n                }\n            )\n\n        ax[i].set_xticks(range(len(months)))\n        ax[i].set_xticklabels([calendar.month_abbr[m] for m in months])\n        ax[i].grid(axis=\"y\")\n        ax[i].axhline(32, ls=\"--\", color=\"purple\", alpha=0.8, lw=0.5)\n        ax[i].text(len(months) - 0.3, 32, \"32°\", color=\"purple\")\n\n    pr0 = Rectangle((0, 0), 1, 1, fc=\"r\")\n    pr1 = Rectangle((0, 0), 1, 1, fc=\"b\")\n    ax[0].legend(\n        (pr0, pr1),\n        (\"Without Snow Cover\", \"With Snow Cover\"),\n        ncol=2,\n        loc=(0.1, -0.35),\n    )\n    ax[0].set_ylabel(\"Daily High Temp °F\")\n    ax[1].set_ylabel(\"Daily Low Temp °F\")\n\n    return fig, pd.DataFrame(res)\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p131.py",
    "content": "\"\"\"\nThis plot displays the frequency of having overcast or clear sky\nconditions reported by air temperature.  More specifically, this script\nlooks for the report of 'OVC' or 'CLR' within the METAR sky conditions.  Many\ncaveats apply with the reporting changes of this over the years.  For the\nobservation to be included, it must have a valid temperature and some sky\ncondition reported.\n\"\"\"\n\nfrom datetime import datetime\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.util import month2months\n\nPDICT = {\"CLR\": \"Clear (CLR)\", \"OVC\": \"Overcast (OVC)\"}\nMDICT = {\n    \"all\": \"No Month/Time Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"OVC\",\n            options=PDICT,\n            label=\"Overcast or Clear Sky Conditions?\",\n        ),\n        dict(\n            type=\"hour\",\n            name=\"hour\",\n            default=0,\n            optional=True,\n            label=\"Limit plot to local hour of day? (optional)\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    month = ctx[\"month\"]\n    varname = ctx[\"var\"]\n    hour = ctx.get(\"hour\")\n    months = month2months(month)\n\n    hour_limiter = \"\"\n    if hour is not None:\n        hour_limiter = (\n            \"and extract(hour from ((valid + \"\n            \"'10 minutes'::interval) at time zone :tzname)) = :hour \"\n        )\n\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT tmpf::int as t,\n            SUM(case when (skyc1 = :v or skyc2 = :v or skyc3 = :v\n                or skyc4 = :v) then 1 else 0 end) as hits,\n            min(valid) as min_valid, max(valid) as max_valid,\n            count(*)\n            from alldata where station = :station\n            and tmpf is not null and skyc1 is not null and\n            extract(month from valid) = ANY(:months)\n            {hour_limiter}\n            and report_type = 3\n            GROUP by t ORDER by t ASC\n            \"\"\",\n                hour_limiter=hour_limiter,\n            ),\n            conn,\n            params={\n                \"v\": varname,\n                \"station\": station,\n                \"months\": months,\n                \"tzname\": ctx[\"_nt\"].sts[station][\"tzname\"],\n                \"hour\": hour,\n            },\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No data was found.\")\n    df[\"freq\"] = df[\"hits\"] / df[\"count\"] * 100.0\n    df2 = df[df[\"count\"] > 9]\n    avg = df[\"hits\"].sum() / float(df[\"count\"].sum()) * 100.0\n\n    hrlabel = \"ALL\"\n    if hour is not None:\n        ts = datetime(2000, 1, 1, hour)\n        hrlabel = ts.strftime(\"%-I %p\")\n    tt = \"Overcast Clouds\" if varname == \"OVC\" else \"Clear Skies\"\n    title = (\n        f\"{ctx['_sname']}\\n\"\n        f\"Frequency of {tt} by Air Temp (month={month.upper()},hour={hrlabel})\"\n        f\" ({df['min_valid'].min().year}-{df['max_valid'].max().year})\\n\"\n        \"(must have 10+ hourly observations at the given temperature)\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    ax.bar(df2[\"t\"], df2[\"freq\"], ec=\"green\", fc=\"green\", width=1)\n    ax.grid(True, zorder=11)\n    ax.set_ylabel(f\"{PDICT[varname]} Frequency [%]\")\n    ax.set_ylim(0, 100)\n    ax.set_xlabel(\"Air Temperature °F\")\n    if df2[\"t\"].min() < 30:\n        ax.axvline(32, lw=2, color=\"k\")\n        ax.text(32, -4, \"32\", ha=\"center\")\n    ax.axhline(avg, lw=2, color=\"k\")\n    ax.text(df2[\"t\"].min() + 5, avg + 2, f\"Avg: {avg:.1f}%\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p132.py",
    "content": "\"\"\"\nThis plot displays the top ten events for a given\nsite and period of your choice. Here is a description of the labels\nshown in the 'Which Metric to Summarize' option:\n<ul>\n    <li><i>Total Precipitation</i>: Total precipitation over the specified\n    number of days.</li>\n    <li><i>Total Snowfall</i>: Total snowfall over the specified\n    number of days.</li>\n    <li><i>Max Least High</i>: The highest minimum high temperature over\n    the specified duration of days.</li>\n<li><i>Min Greatest Low</i>: The coldest maximum low temperature over\n    the specified duration of days. Example series) -15 -12 -14 -16 would\n    be -12</li>\n</ul>\n\"\"\"\n\nimport calendar\nfrom datetime import datetime, timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\nfrom iemweb.util import month2months\n\nMDICT = {\n    \"all\": \"Entire Year\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"octmar\": \"October thru March\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\nMETRICS = {\n    \"total_precip\": \"Total Precipitation\",\n    \"total_snowfall\": \"Total Snowfall\",\n    \"max_least_high\": \"Max Least High\",\n    \"min_greatest_low\": \"Min Greatest Low\",\n}\nTRANSLATION = {\n    \"total_precip\": \"Precipitation\",\n    \"total_snowfall\": \"Snowfall\",\n    \"max_least_high\": \"Max High Temperature\",\n    \"min_greatest_low\": \"Min Low Temperature\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"total_precip\",\n            label=\"Which Metric to Summarize\",\n            options=METRICS,\n        ),\n        dict(\n            type=\"int\",\n            name=\"days\",\n            default=1,\n            label=\"Over how many consecutive days\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    month = ctx[\"month\"]\n    varname = ctx[\"var\"]\n    days = ctx[\"days\"]\n\n    months = month2months(month)\n\n    sorder = \"ASC\" if varname == \"min_greatest_low\" else \"DESC\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"WITH data as (\n            SELECT month, day, day - ':days days'::interval as start_date,\n            count(*) OVER (ORDER by day ASC ROWS BETWEEN :days preceding and\n            current row) as count,\n            sum(precip) OVER (ORDER by day ASC ROWS BETWEEN :days preceding and\n            current row) as total_precip,\n            sum(snow) OVER (ORDER by day ASC ROWS BETWEEN :days preceding and\n            current row) as total_snowfall,\n            min(high) OVER (ORDER by day ASC ROWS BETWEEN :days preceding and\n            current row) as max_least_high,\n            max(low) OVER (ORDER by day ASC ROWS BETWEEN :days preceding and\n            current row) as min_greatest_low\n            from alldata WHERE station = :station)\n\n            SELECT day as end_date, start_date, {varname} from data WHERE\n            month = ANY(:months) and\n            extract(month from start_date) = ANY(:months) and count = :d2 and\n            {varname} is not null\n            ORDER by {varname} {sorder} LIMIT 10\n            \"\"\",\n                varname=varname,\n                sorder=sorder,\n            ),\n            conn,\n            params={\n                \"days\": days - 1,\n                \"station\": station,\n                \"months\": months,\n                \"d2\": days,\n            },\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"Error, no results returned!\")\n    ylabels = []\n    fmt = \"%.2f\" if varname == \"total_precip\" else \"%.0f\"\n    if varname == \"total_snowfall\":\n        fmt = \"%.1f\"\n    for _, row in df.iterrows():\n        # no strftime support for old days, so we hack at it\n        lbl = fmt % (row[varname],)\n        if days > 1:\n            sts = row[\"end_date\"] - timedelta(days=days - 1)\n            if sts.month == row[\"end_date\"].month:\n                lbl += \" -- %s %s-%s, %s\" % (\n                    calendar.month_abbr[sts.month],\n                    sts.day,\n                    row[\"end_date\"].day,\n                    sts.year,\n                )\n            else:\n                lbl += \" -- %s %s, %s to\\n          %s %s, %s\" % (\n                    calendar.month_abbr[sts.month],\n                    sts.day,\n                    sts.year,\n                    calendar.month_abbr[row[\"end_date\"].month],\n                    row[\"end_date\"].day,\n                    row[\"end_date\"].year,\n                )\n        else:\n            lbl += \" -- %s %s, %s\" % (\n                calendar.month_abbr[row[\"end_date\"].month],\n                row[\"end_date\"].day,\n                row[\"end_date\"].year,\n            )\n        ylabels.append(lbl)\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    tt = f\"{METRICS[varname]} [days={days}]\"\n    if days == 1:\n        tt = f\"Single Day {TRANSLATION[varname]}\"\n    title = (\n        f\"{ctx['_sname']}:: Top 10 Events\\n\"\n        f\"{tt} ({MDICT[month]}) ({ab.year}-{datetime.now().year})\"\n    )\n\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.add_axes((0.1, 0.1, 0.5, 0.8))\n    ax.barh(\n        range(10, 0, -1),\n        df[varname],\n        ec=\"green\",\n        fc=\"green\",\n        height=0.8,\n        align=\"center\",\n    )\n    ax2 = ax.twinx()\n    ax2.set_ylim(0.5, 10.5)\n    ax.set_ylim(0.5, 10.5)\n    ax2.set_yticks(range(1, 11))\n    ax.set_yticks(range(1, 11))\n    ax.set_yticklabels([\"#%s\" % (x,) for x in range(1, 11)][::-1])\n    ax2.set_yticklabels(ylabels[::-1])\n    ax.grid(True, zorder=11)\n    xlabel = \"Precipitation [inch]\"\n    if varname in [\"max_least_high\", \"min_greatest_low\"]:\n        xlabel = \"Temperature [°F]\"\n    elif varname == \"total_snowfall\":\n        xlabel = \"Snowfall [inch]\"\n    ax.set_xlabel(xlabel)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p133.py",
    "content": "\"\"\"\nThis plot displays the total reported snowfall for\na period prior to a given date and then after the date for the winter\nseason. The year convention is from July 1st through June 30th with the year\nvalue representing the starting year of the season.\n\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"date\",\n            name=\"date\",\n            default=\"2015/12/25\",\n            min=\"2015/01/01\",\n            label=\"Split Season by Date: (ignore the year)\",\n        ),\n        {\n            \"type\": \"year\",\n            \"name\": \"year\",\n            \"default\": date.today().year,\n            \"label\": \"Highlight given year on the chart:\",\n            \"min\": 1850,\n        },\n    ]\n    return desc\n\n\ndef get_data(ctx):\n    \"\"\"Get the data\"\"\"\n    station = ctx[\"station\"]\n    dt = ctx[\"date\"]\n    jul1 = date(dt.year if dt.month > 6 else dt.year - 1, 7, 1)\n    offset = int((dt - jul1).days)\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        with obs as (\n            select day,\n            day -\n            ((case when month > 6 then year else year - 1 end)||'-07-01')::date\n            as doy,\n            (case when month > 6 then year else year - 1 end) as eyear, snow\n            from alldata where station = :station)\n\n            SELECT eyear,\n            sum(case when doy < :offset then snow else 0 end) as before,\n            sum(case when doy >= :offset then snow else 0 end) as after,\n            sum(snow) as total from obs\n            GROUP by eyear ORDER by eyear ASC\n        \"\"\"),\n            conn,\n            params={\"station\": station, \"offset\": offset},\n            index_col=\"eyear\",\n        )\n    df = df[df[\"total\"] > 0]\n    return df\n\n\ndef get_highcharts(ctx: dict) -> dict:\n    \"\"\"Highcharts Output\"\"\"\n    dt = ctx[\"date\"]\n    df = get_data(ctx)\n\n    j = {}\n    j[\"title\"] = {\"text\": f\"{ctx['_sname']}:: Snowfall Totals\"}\n    j[\"subtitle\"] = {\"text\": f\"Before and After {dt:%-d %B}\"}\n    j[\"xAxis\"] = {\n        \"title\": {\"text\": f\"Snowfall Total [inch] before {dt:%-d %B}\"},\n        \"plotLines\": [\n            {\n                \"color\": \"red\",\n                \"value\": df[\"before\"].mean(),\n                \"width\": 1,\n                \"label\": {\"text\": \"%.1fin\" % (df[\"before\"].mean(),)},\n                \"zindex\": 2,\n            }\n        ],\n    }\n    j[\"yAxis\"] = {\n        \"title\": {\"text\": f\"Snowfall Total [inch] on or after {dt:%-d %B}\"},\n        \"plotLines\": [\n            {\n                \"color\": \"red\",\n                \"value\": df[\"after\"].mean(),\n                \"width\": 1,\n                \"label\": {\"text\": \"%.1fin\" % (df[\"after\"].mean(),)},\n                \"zindex\": 2,\n            }\n        ],\n    }\n    j[\"chart\"] = {\"zoomType\": \"xy\", \"type\": \"scatter\"}\n    rows = []\n    for yr, row in df.iterrows():\n        rows.append(\n            dict(\n                x=round(row[\"before\"], 2),\n                y=round(row[\"after\"], 2),\n                name=f\"{yr}-{yr + 1}\",\n            )\n        )\n    j[\"series\"] = [\n        {\n            \"data\": rows,\n            \"tooltip\": {\n                \"headerFormat\": \"\",\n                \"pointFormat\": (\n                    \"<b>Season:</b> {point.name}<br />\"\n                    \"Before: {point.x} inch<br />\"\n                    \"After: {point.y} inch\"\n                ),\n            },\n        }\n    ]\n    return j\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    dt = ctx[\"date\"]\n    df = get_data(ctx)\n    if df.empty:\n        raise NoDataFound(\"Error, no results returned!\")\n\n    title = (\n        f\"{ctx['_sname']}:: Snowfall Totals\\nPrior to and after: {dt:%-d %B}\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    ax.scatter(df[\"before\"].values, df[\"after\"].values)\n    ax.set_xlim(left=-0.1)\n    ax.set_ylim(bottom=-0.1)\n    ax.set_xlabel(f\"Snowfall Total [inch] Prior to {dt:%-d %b}\")\n    ax.set_ylabel(f\"Snowfall Total [inch] On and After {dt:%-d %b}\")\n    ax.grid(True)\n    ax.axvline(\n        df[\"before\"].mean(),\n        color=\"r\",\n        lw=2,\n        label=f\"Before Avg: {df['before'].mean():.1f}\",\n    )\n    ax.axhline(\n        df[\"after\"].mean(),\n        color=\"b\",\n        lw=2,\n        label=f\"After Avg: {df['after'].mean():.1f}\",\n    )\n    if ctx[\"year\"] in df.index:\n        ax.axvline(\n            df.at[ctx[\"year\"], \"before\"],\n            color=\"g\",\n            lw=2,\n            label=(\n                f\"{ctx['year']}-{ctx['year'] + 1} \"\n                f\"Before: {df.at[ctx['year'], 'before']:.1f}, \"\n                f\"After: {df.at[ctx['year'], 'after']:.1f}\"\n            ),\n        )\n        ax.axhline(\n            df.at[ctx[\"year\"], \"after\"],\n            color=\"g\",\n            lw=2,\n        )\n    ax.legend(ncol=2, fontsize=12)\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p134.py",
    "content": "\"\"\"\nThis plot displays the period of consecutive days\neach year with the extreme criterion meet. In the case of a tie, the\nfirst period of the season is used for the analysis. If you select any of the\nwarmest options, the year must have at least 200 days of data.\n\n<p>The dew point and feels like option only works for ASOS networks\nand does a simple arthimetic mean of dew point temperatures.</p>\n\n<p>Note that the coldest and warmest feels like temperature values are\naverages of the daily minimum or maximum values, not an average of an\naverage feels like temperature.  This is why we can't have nice things.</p>\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.colorbar import ColorbarBase\nfrom matplotlib.ticker import MaxNLocator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure, get_cmap, pretty_bins\n\nPDICT = {\n    \"coldest_temp\": \"Coldest Average Temperature\",\n    \"coldest_hitemp\": \"Coldest Average High Temperature\",\n    \"coldest_lotemp\": \"Coldest Average Low Temperature\",\n    \"coldest_lofeel\": \"Coldest Average Feels Like Temperature\",\n    \"coldest_lodwpf\": \"Coldest Average Daily Low Dew Point Temperature\",\n    \"warmest_temp\": \"Warmest Average Temperature\",\n    \"warmest_hitemp\": \"Warmest Average High Temperature\",\n    \"warmest_lotemp\": \"Warmest Average Low Temperature\",\n    \"warmest_hifeel\": \"Warmest Average Daily High Feels Like Temperature\",\n    \"warmest_hidwpf\": \"Warmest Average High Dew Point Temperature\",\n    \"wettest\": \"Highest Precipitation\",\n    \"driest\": \"Lowest Precipitation\",\n}\n# How to get plot variable from dataframe\nXREF = {\n    \"coldest_temp\": \"avg_temp\",\n    \"coldest_hitemp\": \"avg_hitemp\",\n    \"coldest_lotemp\": \"avg_lotemp\",\n    \"coldest_lofeel\": \"avg_lofeel\",\n    \"coldest_lodwpf\": \"avg_lodwpf\",\n    \"warmest_temp\": \"avg_temp\",\n    \"warmest_hitemp\": \"avg_hitemp\",\n    \"warmest_lotemp\": \"avg_lotemp\",\n    \"warmest_hifeel\": \"avg_hifeel\",\n    \"warmest_hidwpf\": \"avg_hidwpf\",\n    \"wettest\": \"sum_precip\",\n    \"driest\": \"sum_precip\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"data\": True, \"cache\": 86400, \"description\": __doc__}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"sid\",\n            include_climodat=True,\n            name=\"station\",\n            default=\"DSM\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"coldest_temp\",\n            label=\"Which Metric\",\n            options=PDICT,\n        ),\n        dict(type=\"int\", name=\"days\", default=7, label=\"Over How Many Days?\"),\n        dict(type=\"cmap\", name=\"cmap\", default=\"jet\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef get_data(ctx: dict) -> pd.DataFrame:\n    \"\"\"Get the data\"\"\"\n    days = ctx[\"days\"]\n    varname = ctx[\"var\"]\n    offset = 6 if varname.startswith(\"coldest\") else 0\n    if varname == \"driest\":\n        offset = 6\n    station = ctx[\"station\"]\n    if ctx[\"network\"].endswith(\"CLIMATE\"):\n        table = \"alldata\"\n        dbname = \"coop\"\n        highcol = \"high\"\n        lowcol = \"low\"\n        highdwpf = \"null::numeric\"\n        lowdwpf = \"null::numeric\"\n        highfeel = \"null::numeric\"\n        lowfeel = \"null::numeric\"\n        precipcol = \"precip\"\n        stationcol = \"station\"\n    else:\n        station = ctx[\"_nt\"].sts[station][\"iemid\"]\n        dbname = \"iem\"\n        highcol = \"max_tmpf\"\n        lowcol = \"min_tmpf\"\n        highdwpf = \"max_dwpf\"\n        lowdwpf = \"min_dwpf\"\n        highfeel = \"max_feel\"\n        lowfeel = \"min_feel\"\n        precipcol = \"pday\"\n        table = \"summary\"\n        stationcol = \"iemid\"\n    with get_sqlalchemy_conn(dbname) as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH data as (\n        SELECT day,\n        extract(year from day + ':offset months'::interval) as season,\n        avg(({highcol} + {lowcol})/2.)\n            OVER (ORDER by day ASC ROWS :days preceding) as avg_temp,\n        avg({highcol})\n            OVER (ORDER by day ASC ROWS :days preceding) as avg_hitemp,\n        avg({lowcol})\n            OVER (ORDER by day ASC ROWS :days preceding) as avg_lotemp,\n        avg({highfeel})\n            OVER (ORDER by day ASC ROWS :days preceding) as avg_hifeel,\n        avg({lowfeel})\n            OVER (ORDER by day ASC ROWS :days preceding) as avg_lofeel,\n        avg({highdwpf})\n            OVER (ORDER by day ASC ROWS :days preceding) as avg_hidwpf,\n        avg({lowdwpf})\n            OVER (ORDER by day ASC ROWS :days preceding) as avg_lodwpf,\n        sum({precipcol})\n            OVER (ORDER by day ASC ROWS :days preceding) as sum_precip\n        from {table} WHERE {stationcol} = :station and {highcol} is not null),\n        agg1 as (\n            SELECT season, day, avg_temp, avg_hitemp, avg_lotemp,\n            sum_precip, avg_hidwpf, avg_lodwpf, avg_lofeel, avg_hifeel,\n            row_number()\n                OVER (PARTITION by season ORDER by avg_temp ASC nulls last,\n                day ASC) as coldest_temp_rank,\n            row_number()\n                OVER (PARTITION by season ORDER by avg_hitemp ASC nulls last,\n                day ASC) as coldest_hitemp_rank,\n            row_number()\n                OVER (PARTITION by season ORDER by avg_lotemp ASC nulls last,\n                day ASC) as coldest_lotemp_rank,\n            row_number()\n                OVER (PARTITION by season ORDER by avg_lofeel ASC nulls last,\n                day ASC) as coldest_lofeel_rank,\n            row_number()\n                OVER (PARTITION by season ORDER by avg_hidwpf DESC nulls last,\n                day ASC) as warmest_hidwpf_rank,\n            row_number()\n                OVER (PARTITION by season ORDER by avg_temp DESC nulls last,\n                day ASC) as warmest_temp_rank,\n            row_number()\n                OVER (PARTITION by season ORDER by avg_hitemp DESC nulls last,\n                day ASC) as warmest_hitemp_rank,\n            row_number()\n                OVER (PARTITION by season ORDER by avg_hifeel DESC nulls last,\n                day ASC) as warmest_hifeel_rank,\n            row_number()\n                OVER (PARTITION by season ORDER by avg_lotemp DESC nulls last,\n                day ASC) as warmest_lotemp_rank,\n            row_number()\n                OVER (PARTITION by season ORDER by avg_lodwpf ASC nulls last,\n                day ASC) as coldest_lodwpf_rank,\n            row_number()\n                OVER (PARTITION by season ORDER by sum_precip DESC nulls last,\n                day ASC) as wettest_rank,\n            row_number()\n                OVER (PARTITION by season ORDER by sum_precip ASC nulls last,\n                day ASC) as driest_rank,\n            count(*) OVER (PARTITION by season)\n            from data)\n        SELECT season, day,\n        extract(doy from day - ':days days'::interval)::int as doy,\n        avg_temp, avg_hitemp, avg_lotemp, avg_hidwpf, avg_lodwpf,\n        avg_lofeel, avg_hifeel,\n        sum_precip from agg1 where {varname}_rank = 1 and count > :quorum\n        \"\"\",\n                highcol=highcol,\n                lowcol=lowcol,\n                highdwpf=highdwpf,\n                lowdwpf=lowdwpf,\n                highfeel=highfeel,\n                lowfeel=lowfeel,\n                precipcol=precipcol,\n                table=table,\n                stationcol=stationcol,\n                varname=varname,\n            ),\n            conn,\n            params={\n                \"days\": days - 1,\n                \"offset\": offset,\n                \"station\": station,\n                \"quorum\": 200 if varname.startswith(\"coldest\") else days,\n            },\n            index_col=\"season\",\n        )\n        if df.empty or df[XREF[varname]].isnull().all():\n            raise NoDataFound(\"Error, no results returned!\")\n\n    if varname.startswith(\"coldest\") or varname == \"driest\":\n        df.loc[df[\"doy\"] < 183, \"doy\"] += 365.0\n    return df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    days = ctx[\"days\"]\n    varname = ctx[\"var\"]\n    df = get_data(ctx)\n\n    # Don't plot zeros for precip\n    if varname == \"wettest\":\n        df = df[df[\"sum_precip\"] > 0]\n    title = ctx[\"_sname\"]\n    subtitle = PDICT.get(varname)\n    if days == 1:\n        subtitle = subtitle.replace(\"Average \", \"\")\n    subtitle = f\"{days} Day Period with {subtitle}\"\n    fig = figure(title=title, subtitle=subtitle, apctx=ctx)\n    ax = fig.add_axes((0.05, 0.3, 0.45, 0.54))\n    lax = fig.add_axes((0.05, 0.1, 0.45, 0.2))\n    cax = fig.add_axes((0.05, 0.875, 0.4, 0.02))\n    cmap = get_cmap(ctx[\"cmap\"])\n    minval = df[XREF[varname]].min() - 1.0\n    maxval = df[XREF[varname]].max() + 1.0\n    if pd.isnull(minval) or pd.isnull(maxval):\n        raise NoDataFound(\"No data found for this station!\")\n    if varname in [\"wettest\", \"driest\"]:\n        ramp = pretty_bins(max(0, minval), maxval)\n    else:\n        ramp = np.linspace(\n            minval, maxval, min([int(maxval - minval), 10]), dtype=\"i\"\n        )\n    norm = mpcolors.BoundaryNorm(ramp, cmap.N)\n    ColorbarBase(cax, norm=norm, cmap=cmap, orientation=\"horizontal\")\n    units = \"inch\" if varname in [\"wettest\", \"driest\"] else \"°F\"\n    fig.text(0.47, 0.88, units)\n    bboxprops = dict(color=\"tan\", alpha=0.5, boxstyle=\"round\")\n    ax.barh(\n        df.index.values,\n        [days] * len(df.index),\n        left=df[\"doy\"].values,\n        color=cmap(norm(df[XREF[varname]].to_numpy())),\n    )\n    ax.grid(True)\n    lax.grid(True)\n    xticks = []\n    xticklabels = []\n    for i in np.arange(df[\"doy\"].min() - 5, df[\"doy\"].max() + 5, 1):\n        ts = datetime(2000, 1, 1) + timedelta(days=int(i))\n        if ts.day == 1:\n            xticks.append(i)\n            xticklabels.append(ts.strftime(\"%-d %b\"))\n    ax.set_xticks(xticks)\n    lax.set_xticks(xticks)\n    lax.set_xticklabels(xticklabels)\n\n    counts = np.zeros(366 * 2)\n    for _, row in df.iterrows():\n        counts[int(row[\"doy\"]) : int(row[\"doy\"] + days)] += 1\n\n    lax.bar(np.arange(366 * 2), counts, edgecolor=\"blue\", facecolor=\"blue\")\n    lax.set_ylabel(\"Years\")\n    lax.set_xlabel(\"Frequency of day within period\")\n    ax.set_ylim(df.index.values.min() - 3, df.index.values.max() + 3)\n\n    ax.set_xlim(df[\"doy\"].min() - 10, df[\"doy\"].max() + 10)\n    lax.set_xlim(df[\"doy\"].min() - 10, df[\"doy\"].max() + 10)\n    ax.yaxis.set_major_locator(MaxNLocator(prune=\"lower\", integer=True))\n\n    # Plot per year\n    series = df[XREF[varname]]\n    ax = fig.add_axes((0.59, 0.5, 0.4, 0.4))\n    ax.bar(df.index.values, series.values, color=\"blue\", width=1)\n    minval = series.min() - 5\n    if varname == \"driest\":\n        minval = 0\n    ax.set_ylim(bottom=minval)\n    ax.text(\n        0.03,\n        1.01,\n        \"Value by Year\",\n        transform=ax.transAxes,\n        va=\"bottom\",\n        bbox=bboxprops,\n    )\n    ax.grid(True)\n\n    # CDF\n    ax = fig.add_axes((0.59, 0.1, 0.4, 0.3))\n    X2 = np.sort(series.to_numpy())\n    ptile = np.percentile(X2, [0, 5, 50, 95, 100])\n    N = len(series.values)\n    F2 = np.array(range(N)) / float(N) * 100.0\n    ax.plot(X2, 100.0 - F2)\n    ax.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    mysort = df.sort_values(by=XREF[varname], ascending=True)\n    info = (\n        f\"Min: {series.min():.2f} {mysort.index[0]:.0f}\\n\"\n        f\"95th: {ptile[1]:.2f}\\n\"\n        f\"Mean: {series.mean():.2f}\\n\"\n        f\"STD: {series.std():.2f}\\n\"\n        f\"5th: {ptile[3]:.2f}\\n\"\n        f\"Max: {series.max():.2f} {mysort.index[-1]:.0f}\"\n    )\n    ax.text(\n        0.75,\n        0.95,\n        info,\n        transform=ax.transAxes,\n        va=\"top\",\n        bbox=dict(facecolor=\"white\", edgecolor=\"k\"),\n    )\n    ax.text(\n        0.03,\n        1.01,\n        \"Cumulative Distribution Function\",\n        transform=ax.transAxes,\n        va=\"bottom\",\n        bbox=bboxprops,\n    )\n    ax.set_ylabel(\"Percentile\")\n    ax.grid(True)\n    ax.set_xlabel(units)\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p135.py",
    "content": "\"\"\"\nThis plot displays the accumulated number of days\nthat the high or low temperature was above or below some threshold.  This uses\nsomewhat sloppy day-of-year logic that does not necessarily align leap years.\n\n<p>If you split the year on 1 July, the plotted season represents the 1 July\nyear. ie 1 July 2023 - 30 Jun 2024 plots as 2023.</p>\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"high_above\": \"High Temperature At or Above\",\n    \"high_below\": \"High Temperature Below\",\n    \"low_above\": \"Low Temperature At or Above\",\n    \"low_below\": \"Low Temperature Below\",\n}\nPDICT2 = {\"jan1\": \"January 1\", \"jul1\": \"July 1\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"high_above\",\n            label=\"Which Metric\",\n            options=PDICT,\n        ),\n        dict(type=\"int\", name=\"threshold\", default=32, label=\"Threshold (F)\"),\n        dict(\n            type=\"select\",\n            name=\"split\",\n            default=\"jan1\",\n            options=PDICT2,\n            label=\"Where to split the year?\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=date.today().year,\n            label=\"Year to Highlight in Chart\",\n        ),\n    ]\n    return desc\n\n\ndef get_highcharts(ctx: dict) -> dict:\n    \"\"\"Highcharts Output\"\"\"\n    varname = ctx[\"var\"]\n    get_data(ctx)\n    df = ctx[\"df\"]\n\n    j = {}\n    j[\"tooltip\"] = {\n        \"shared\": True,\n        \"headerFormat\": (\n            '<span style=\"font-size: 10px\">{point.key: %b %e}</span><br/>'\n        ),\n    }\n    j[\"title\"] = {\n        \"text\": (\n            f\"{ctx['_sname']} {PDICT[varname]} {ctx.get('threshold', 32):.0f}F\"\n        )\n    }\n    j[\"yAxis\"] = {\"title\": {\"text\": \"Accumulated Days\"}, \"startOnTick\": False}\n    j[\"xAxis\"] = {\n        \"type\": \"datetime\",\n        \"dateTimeLabelFormats\": {  # don't display the dummy year\n            \"month\": \"%e. %b\",\n            \"year\": \"%b\",\n        },\n        \"title\": {\"text\": \"Date\"},\n    }\n    j[\"chart\"] = {\"zoomType\": \"xy\", \"type\": \"line\"}\n    avgs = []\n    ranges = []\n    thisyear = []\n    for doy, row in df.iterrows():\n        ts = date(2000, 1, 1) + timedelta(days=doy - 1)\n        ticks = (ts - date(1970, 1, 1)).total_seconds() * 1000.0\n        avgs.append([ticks, row[\"avg\"]])\n        ranges.append([ticks, row[\"min\"], row[\"max\"]])\n        if row[\"thisyear\"] is not None:\n            thisyear.append([ticks, row[\"thisyear\"]])\n    lbl = (\n        \"%s\" % (ctx.get(\"year\", 2015),)\n        if ctx.get(\"split\", \"jan1\") == \"jan1\"\n        else \"%s - %s\"\n        % (int(ctx.get(\"year\", 2015)) - 1, int(ctx.get(\"year\", 2015)))\n    )\n    j[\"series\"] = [\n        {\n            \"name\": ctx[\"mean_label\"],\n            \"data\": avgs,\n            \"zIndex\": 1,\n            \"tooltip\": {\"valueDecimals\": 2},\n            \"marker\": {\n                \"fillColor\": \"white\",\n                \"lineWidth\": 2,\n                \"lineColor\": \"red\",\n            },\n        },\n        {\n            \"name\": lbl,\n            \"data\": thisyear,\n            \"zIndex\": 1,\n            \"marker\": {\n                \"fillColor\": \"blue\",\n                \"lineWidth\": 2,\n                \"lineColor\": \"green\",\n            },\n        },\n        {\n            \"name\": \"Range\",\n            \"data\": ranges,\n            \"type\": \"arearange\",\n            \"lineWidth\": 0,\n            \"linkedTo\": \":previous\",\n            \"color\": \"tan\",\n            \"fillOpacity\": 0.3,\n            \"zIndex\": 0,\n        },\n    ]\n    return j\n\n\ndef get_data(ctx):\n    \"\"\"Get the data\"\"\"\n    station = ctx[\"station\"]\n    threshold = ctx[\"threshold\"]\n    varname = ctx[\"var\"]\n    year = ctx[\"year\"]\n    split = ctx[\"split\"]\n    opp = \" < \" if varname.find(\"_below\") > 0 else \" >= \"\n    col = \"high\" if varname.find(\"high\") == 0 else \"low\"\n    # We need to do some magic to compute the start date, since we don't want\n    # an incomplete year mucking things up\n    sts = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if sts is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    if sts.month > 1:\n        sts = sts + timedelta(days=365)\n        sts = sts.replace(month=1, day=1)\n    doylogic = \"extract(doy from day)\"\n    seasonlogic = \"extract(year from day)\"\n    if split == \"jul1\":\n        sts = sts.replace(month=7, day=1)\n        doylogic = \"doy_after_july1(day)\"\n        seasonlogic = \"case when month < 7 then year - 1 else year end\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        obs = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        with data as (\n            select {seasonlogic} as season,\n            {doylogic} as doy,\n            (case when {col} {opp} :thres then 1 else 0 end) as hit\n            from alldata where station = :sid and day >= :sts)\n        SELECT season, doy,\n        sum(hit) OVER (PARTITION by season ORDER by doy ASC) as hits from data\n        ORDER by season ASC, doy ASC\n        \"\"\",\n                seasonlogic=seasonlogic,\n                doylogic=doylogic,\n                opp=opp,\n                col=col,\n            ),\n            conn,\n            params={\n                \"sid\": station,\n                \"thres\": threshold,\n                \"sts\": sts,\n            },\n            index_col=None,\n        )\n    if obs.empty:\n        raise NoDataFound(\"No results returned!\")\n    # For all seasons that have 365 days, we need to add a 366th day by\n    # repeating the last day value\n    obs2 = []\n    for season, gdf in obs.groupby(\"season\"):\n        if len(gdf.index) == 365:\n            obs2.append(\n                {\"season\": season, \"doy\": 366, \"hits\": gdf.iloc[-1][\"hits\"]}\n            )\n    if obs2:\n        obs = pd.concat([obs, pd.DataFrame(obs2)], ignore_index=True)\n    df = obs[[\"doy\", \"hits\"]].groupby(\"doy\").agg([\"mean\", \"max\", \"min\"]).copy()\n    df.columns = [\"avg\", \"max\", \"min\"]\n    df[\"datestr\"] = df.index.map(\n        lambda x: (date(2001, 1, 1) + timedelta(days=x)).strftime(\"%-d %b\")\n    )\n    df[\"thisyear\"] = obs[obs[\"season\"] == year].set_index(\"doy\")[\"hits\"]\n    ctx[\"df\"] = df\n    ctx[\"mean_label\"] = f\"POR Average {df.iloc[-1]['avg']:.1f} days\"\n    ctx[\"obs\"] = obs\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    threshold = ctx[\"threshold\"]\n    varname = ctx[\"var\"]\n    year = ctx[\"year\"]\n    get_data(ctx)\n    df = ctx[\"df\"]\n    obs = ctx[\"obs\"]\n\n    title = f\"{ctx['_sname']}\\n{PDICT[varname]} {threshold:.0f}°F\"\n\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    ax.set_position([0.1, 0.1, 0.7, 0.8])\n    for _season, gdf in obs.groupby(\"season\"):\n        ax.plot(\n            gdf[\"doy\"],\n            gdf[\"hits\"],\n            zorder=2,\n            lw=1,\n            color=\"tan\",\n        )\n    ax.plot(\n        df.index.values,\n        df[\"avg\"],\n        c=\"k\",\n        lw=2,\n        zorder=3,\n        label=ctx[\"mean_label\"],\n    )\n    ax.plot(\n        df.index.values,\n        df[\"thisyear\"],\n        c=\"g\",\n        lw=2,\n        zorder=3,\n        label=f\"{year} ({df['thisyear'].max():.0f})\",\n    )\n    maxval = df[\"max\"].max()\n    my = obs[obs[\"hits\"] == maxval][\"season\"].unique()\n    df2 = obs[obs[\"season\"] == my[-1]]\n    ax.plot(\n        df2[\"doy\"],\n        df2[\"hits\"],\n        c=\"r\",\n        lw=2,\n        zorder=3,\n        label=f\"Most {my[-1]:.0f}{'+' if len(my) > 1 else ''} ({maxval:.0f})\",\n    )\n    df2 = obs[obs[\"doy\"] == 366]\n    minval = df2[\"hits\"].min()\n    my = df2[df2[\"hits\"] == minval][\"season\"].unique()\n    df2 = obs[obs[\"season\"] == my[-1]]\n    ax.plot(\n        df2[\"doy\"],\n        df2[\"hits\"],\n        c=\"b\",\n        lw=2,\n        zorder=3,\n        label=f\"Least {my[-1]:.0f}{'+' if len(my) > 1 else ''} ({minval:.0f})\",\n    )\n\n    ax.legend(ncol=1, loc=2)\n    xticks = []\n    xticklabels = []\n    for x in range(int(df.index.min()) - 1, int(df.index.max())):\n        ts = date(2000, 7 if ctx[\"split\"] == \"jul1\" else 1, 1) + timedelta(\n            days=x\n        )\n        if ts.day == 1:\n            xticks.append(x)\n            xticklabels.append(ts.strftime(\"%b\"))\n    ax.set_xticks(xticks)\n    ax.set_xticklabels(xticklabels)\n    ax.grid(True)\n    ax.set_xlim(int(df.index.min()) - 1, int(df.index.max()) + 1)\n    ax.set_ylim(bottom=-1)\n    ax.set_ylabel(\"Accumulated Days\")\n\n    ss = (\n        obs[[\"season\", \"hits\"]]\n        .groupby(\"season\")\n        .agg(\"max\")\n        .sort_values(by=\"hits\", ascending=False)\n    )\n    # ------------------------\n    txt = \"Top 10 (Full Year)   \\n\\n\"\n    for season, row in ss.head(10).iterrows():\n        txt += f\"{season:.0f} {row['hits']:.0f}\\n\"\n\n    # put text into a pretty rounded text box\n    fig.text(\n        0.83,\n        0.7,\n        txt[:-1],\n        bbox=dict(boxstyle=\"round\", facecolor=\"r\", alpha=0.4),\n        va=\"center\",\n        ha=\"left\",\n    )\n\n    # ------------------------\n    txt = \"Bottom 10 (Full Year)\\n\\n\"\n    for season, row in ss.iloc[::-1].head(10).iterrows():\n        txt += f\"{season:.0f} {row['hits']:.0f}\\n\"\n\n    # put text into a pretty rounded text box\n    fig.text(\n        0.83,\n        0.3,\n        txt[:-1],\n        bbox=dict(boxstyle=\"round\", facecolor=\"r\", alpha=0.4),\n        va=\"center\",\n        ha=\"left\",\n    )\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p136.py",
    "content": "\"\"\"\nThis plot displays the number of accumulated\nhours below a given wind chill temperature threshold by season. The\nlabeled season shown is for the year of January. So the season of 2016\nwould be from July 2015 to June 2016.  Hours with no wind are included\nin this analysis with the wind chill temperature being the air temperature\nin those instances.\n\"\"\"\n\nfrom datetime import date, datetime\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nPDICT = {\n    \"0\": \"Include calm observations\",\n    \"2\": \"Include only non-calm observations >= 2kt\",\n    \"5\": \"Include only non-calm observations >= 5kt\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    lyear = datetime.now().year\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"season\",\n            default=lyear if datetime.now().month < 6 else (lyear + 1),\n            max=lyear + 1,\n            label=\"Select Season to Highlight\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"wind\",\n            default=\"0\",\n            options=PDICT,\n            label=\"Include Calm Observations? (wind threshold)\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"todate\",\n            default=\"no\",\n            options={\"no\": \"No\", \"yes\": \"Yes\"},\n            label=\"Only consider season to date period?\",\n        ),\n    ]\n    return desc\n\n\ndef get_highcharts(ctx: dict) -> str:\n    \"\"\"Do highcharts\"\"\"\n    add_ctx(ctx)\n    season = \"\"\n    if \"season\" in ctx[\"lines\"]:\n        season = (\n            \"\"\"{\n        name: '\"\"\"\n            + str(ctx[\"season\"])\n            + \"\"\"',\n        type: 'line',\n        marker: {\n            lineWidth: 2,\n            lineColor: '\"\"\"\n            + ctx[\"lines\"][\"season\"][\"c\"]\n            + \"\"\"'\n        },\n        data: \"\"\"\n            + str(\n                [\n                    [float(a[0]), float(a[1])]\n                    for a in zip(\n                        ctx[\"lines\"][\"season\"][\"x\"],\n                        ctx[\"lines\"][\"season\"][\"y\"],\n                        strict=False,\n                    )\n                ]\n            )\n            + \"\"\"\n\n        },\"\"\"\n        )\n    d25 = [\n        [float(a[0]), float(a[1])]\n        for a in zip(\n            ctx[\"lines\"][\"25%\"][\"x\"], ctx[\"lines\"][\"25%\"][\"y\"], strict=True\n        )\n    ]\n    dmean = [\n        [float(a[0]), float(a[1])]\n        for a in zip(\n            ctx[\"lines\"][\"mean\"][\"x\"],\n            ctx[\"lines\"][\"mean\"][\"y\"],\n            strict=True,\n        )\n    ]\n    d75 = [\n        [float(a[0]), float(a[1])]\n        for a in zip(\n            ctx[\"lines\"][\"75%\"][\"x\"], ctx[\"lines\"][\"75%\"][\"y\"], strict=True\n        )\n    ]\n    dmax = [\n        [float(a[0]), float(a[1])]\n        for a in zip(\n            ctx[\"lines\"][\"max\"][\"x\"], ctx[\"lines\"][\"max\"][\"y\"], strict=True\n        )\n    ]\n    containername = ctx[\"_e\"]\n    res = (\n        \"\"\"\nHighcharts.chart('\"\"\"\n        + containername\n        + \"\"\"', {\n    title: {text: '\"\"\"\n        + ctx[\"title\"]\n        + \"\"\"'},\n    subtitle: {text: '\"\"\"\n        + ctx[\"subtitle\"]\n        + \"\"\"'},\n    chart: {zoomType: 'x'},\n    tooltip: {\n        shared: true,\n        valueDecimals: 2,\n        valueSuffix: ' days',\n        headerFormat: '<span style=\"font-size: 10px\">'+\n                      'Wind Chill &lt;= {point.key} F</span><br/>'\n    },\n    xAxis: {title: {text: 'Wind Chill Temperature (F)'}},\n    yAxis: {title: {text: 'Total Time Hours [expressed in days]'}},\n    series: [\"\"\"\n        + season\n    )\n    res += (\n        \"\"\"{\n        name: '25%',\n        type: 'line',\n        marker: {\n            lineWidth: 2,\n            lineColor: '\"\"\"\n        + ctx[\"lines\"][\"25%\"][\"c\"]\n        + \"\"\"'\n        },\n        data: \"\"\"\n        + str(d25)\n        + \"\"\"\n        },{\n        name: 'Avg',\n        type: 'line',\n        marker: {\n            lineWidth: 2,\n            lineColor: '\"\"\"\n        + ctx[\"lines\"][\"mean\"][\"c\"]\n        + \"\"\"'\n        },\n        data: \"\"\"\n        + str(dmean)\n        + \"\"\"\n        },{\n        name: '75%',\n        type: 'line',\n        marker: {\n            lineWidth: 2,\n            lineColor: '\"\"\"\n        + ctx[\"lines\"][\"75%\"][\"c\"]\n        + \"\"\"'\n        },\n        data: \"\"\"\n        + str(d75)\n        + \"\"\"\n        },{\n        name: 'Max',\n        type: 'line',\n        marker: {\n            lineWidth: 2,\n            lineColor: '\"\"\"\n        + ctx[\"lines\"][\"max\"][\"c\"]\n        + \"\"\"'\n        },\n        data: \"\"\"\n        + str(dmax)\n        + \"\"\"\n        }]\n});\n    \"\"\"\n    )\n    return res\n\n\ndef add_ctx(ctx):\n    \"\"\"Get the data\"\"\"\n    station = ctx[\"zstation\"]\n    sknt = ctx[\"wind\"]\n    today = date.today()\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH data as (\n            SELECT valid, lag(valid) OVER (ORDER by valid ASC),\n            extract(year from valid + '5 months'::interval) as season,\n            wcht(tmpf::numeric, (sknt * 1.15)::numeric) from alldata\n            WHERE station = :station and tmpf is not null and sknt is not null\n            and tmpf < 50 and sknt >= :sknt and report_type = 3 ORDER by valid)\n        SELECT case when (valid - lag) < '3 hours'::interval then (valid - lag)\n        else '3 hours'::interval end as timedelta, wcht,\n        season, to_char(valid, 'mmdd') as sday from data\n        \"\"\"),\n            conn,\n            params={\"station\": station, \"sknt\": sknt},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found for initial query.\")\n    textra = \"\"\n    if ctx[\"todate\"] == \"yes\":\n        sday = today.strftime(\"%m%d\")\n        textra = f\"till {today:%-d %b}\"\n        if sday < \"0801\":\n            df = df[(df[\"sday\"] < sday) | (df[\"sday\"] > \"0801\")]\n        else:\n            df = df[(df[\"sday\"] < sday) & (df[\"sday\"] > \"0801\")]\n\n    df2 = pd.DataFrame()\n    for i in range(32, -51, -1):\n        df2[i] = df[df[\"wcht\"] < i].groupby(\"season\")[\"timedelta\"].sum()\n    ctx[\"df\"] = df2\n    ctx[\"title\"] = (\n        f\"{ctx['_sname']}:: Wind Chill Hours {textra} \"\n        f\"({df['season'].min():.0f}-{df['season'].max():.0f})\"\n    )\n    ctx[\"subtitle\"] = f\"Hours below threshold by season (wind >= {sknt} kts)\"\n    ctx[\"dfdescribe\"] = df2.iloc[:-1].describe()\n    ctx[\"season\"] = int(ctx.get(\"season\", datetime.now().year))\n    ctx[\"lines\"] = {}\n\n    if ctx[\"season\"] in ctx[\"df\"].index.values:\n        s = ctx[\"df\"].loc[[ctx[\"season\"]]].transpose()\n        s = s.dropna().astype(\"timedelta64[s]\")\n        ctx[\"lines\"][\"season\"] = {\n            \"x\": s.index.values[::-1],\n            \"y\": s[ctx[\"season\"]].values[::-1].astype(int) / 24.0 / 3600.0,\n            \"c\": \"blue\",\n            \"label\": f\"{ctx['season']}\",\n        }\n    lbls = [\"25%\", \"mean\", \"75%\", \"max\"]\n    colors = [\"g\", \"k\", \"r\", \"orange\"]\n    for color, lbl in zip(colors, lbls, strict=False):\n        s = ctx[\"dfdescribe\"].loc[[lbl]].transpose()\n        if not s[lbl].isnull().all():\n            s = s.dropna().astype(\"timedelta64[s]\")\n            ctx[\"lines\"][lbl] = {\n                \"x\": s.index.values[::-1],\n                \"y\": s[lbl].values[::-1].astype(int) / 24.0 / 3600.0,\n                \"label\": lbl,\n                \"c\": color,\n            }\n    if not ctx[\"lines\"]:\n        raise NoDataFound(\"No data found for query.\")\n\n    return ctx\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    add_ctx(ctx)\n\n    (fig, ax) = figure_axes(\n        apctx=ctx,\n        title=f\"{ctx['title']}\\n{ctx['subtitle']}\",\n    )\n    for year in ctx[\"df\"].index.values:\n        s = ctx[\"df\"].loc[[year]].transpose()\n        s = s.dropna().astype(\"timedelta64[s]\")\n        ax.plot(s.index.values, s[year].values / 24.0 / 3600.0, c=\"tan\")\n    if \"season\" in ctx[\"lines\"]:\n        ax.plot(\n            ctx[\"lines\"][\"season\"][\"x\"],\n            ctx[\"lines\"][\"season\"][\"y\"],\n            c=ctx[\"lines\"][\"season\"][\"c\"],\n            zorder=5,\n            label=ctx[\"lines\"][\"season\"][\"label\"],\n            lw=3,\n        )\n    for lbl in [\"25%\", \"mean\", \"75%\"]:\n        if lbl not in ctx[\"lines\"]:\n            continue\n        ax.plot(\n            ctx[\"lines\"][lbl][\"x\"],\n            ctx[\"lines\"][lbl][\"y\"],\n            c=ctx[\"lines\"][lbl][\"c\"],\n            zorder=2,\n            label=ctx[\"lines\"][lbl][\"label\"],\n            lw=2,\n        )\n    ax.legend(loc=2)\n    ax.grid(True)\n    ax.set_xlim(-50, 32)\n    ax.set_xlabel(\"Wind Chill Temperature °F\")\n    ax.set_ylabel(\"Total Time Hours [expressed in days]\")\n    return fig, ctx[\"df\"]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p137.py",
    "content": "\"\"\"\nThis plot displays some metrics about the start\ndate and duration of the spring or fall season.\nThe definition of the season\nbeing the period between the coldest 91 day stretch and subsequent\nwarmest 91 day stretch.  91 days being approximately 1/4 of the year,\nassuming the four seasons are to be equal duration.  Of course, this is\narbitrary, but interesting to look at!\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport matplotlib.dates as mdates\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom scipy import stats\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\"spring\": \"Spring Season\", \"fall\": \"Fall Season\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"season\",\n            default=\"spring\",\n            options=PDICT,\n            label=\"Which Season to Highlight:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=(date.today().year - 2),\n            label=\"Select Start Year (3 years plotted) for Top Panel:\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    year = ctx[\"year\"]\n    season = ctx[\"season\"]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        # Have to do a redundant query to get the running values\n        obs = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH trail as (\n            SELECT day, year,\n            avg((high+low)/2.) OVER (ORDER by day ASC ROWS 91 PRECEDING)\n            as avgt from alldata WHERE station = :station)\n\n        SELECT day, avgt from trail WHERE year between :y1 and :y2\n        ORDER by day ASC\n        \"\"\"),\n            conn,\n            params={\"station\": station, \"y1\": year, \"y2\": year + 2},\n            index_col=\"day\",\n        )\n    if obs.empty:\n        raise NoDataFound(\"No Data Found.\")\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH trail as (\n            SELECT day, year,\n            avg((high+low)/2.) OVER (ORDER by day ASC ROWS 91 PRECEDING)\n            as avgt from alldata WHERE station = :station),\n        extremes as (\n            SELECT day, year, avgt,\n            rank() OVER (PARTITION by year ORDER by avgt ASC) as minrank,\n            rank() OVER (PARTITION by year ORDER by avgt DESC) as maxrank\n            from trail),\n        yearmax as (\n            SELECT year, min(day) as summer_end, min(avgt) as summer\n            from extremes where maxrank = 1 GROUP by year),\n        yearmin as (\n            SELECT year, min(day) as winter_end, min(avgt) as winter\n            from extremes where minrank = 1 GROUP by year)\n\n        SELECT x.year, winter_end, winter, summer_end, summer,\n        extract(doy from winter_end)::int as winter_end_doy,\n        extract(doy from summer_end)::int as summer_end_doy\n        from yearmax x JOIN yearmin n on (x.year = n.year) ORDER by x.year ASC\n        \"\"\"),\n            conn,\n            params={\"station\": station},\n            index_col=\"year\",\n        )\n    # Throw out spring of the first year\n    for col in [\"winter\", \"winter_end_doy\", \"winter_end\"]:\n        df.at[df.index.min(), col] = None\n\n    # Need to cull current year\n    if date.today().month < 8:\n        for col in [\"summer\", \"summer_end_doy\", \"summer_end\"]:\n            df.at[date.today().year, col] = None\n    if date.today().month < 2:\n        for col in [\"winter\", \"winter_end_doy\", \"winter_end\"]:\n            df.at[date.today().year, col] = None\n    df[\"spring_length\"] = df[\"summer_end_doy\"] - 91 - df[\"winter_end_doy\"]\n    # fall is a bit tricker\n    df[\"fall_length\"] = None\n    df.loc[df.index[:-1], \"fall_length\"] = (\n        (df[\"winter_end_doy\"].values[1:] + 365)\n        - 91\n        - df[\"summer_end_doy\"].values[:-1]\n    )\n\n    df[\"fall_length\"] = pd.to_numeric(df[\"fall_length\"])\n    fig = figure(apctx=ctx)\n    ax = fig.subplots(3, 1)\n\n    ax[0].plot(obs.index.values, obs[\"avgt\"].values)\n    ax[0].set_ylim(obs[\"avgt\"].min() - 8, obs[\"avgt\"].max() + 8)\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    ax[0].set_title(\n        f\"{ab.year}-{year + 3} {ctx['_sname']}\\n91 Day Average Temperatures\"\n    )\n    ax[0].set_ylabel(\"Trailing 91 Day Avg T °F\")\n    ax[0].xaxis.set_major_formatter(mdates.DateFormatter(\"%b\\n%Y\"))\n    ax[0].grid(True)\n\n    # Label the maxes and mins\n    for yr in range(year, year + 3):\n        if yr not in df.index:\n            continue\n        dt = df.at[yr, \"winter_end\"]\n        val = df.at[yr, \"winter\"]\n        if pd.notna(dt):\n            ax[0].text(\n                dt,\n                val - 1,\n                f\"{dt:%-d %b} {val:.1f}°F\",\n                ha=\"center\",\n                va=\"top\",\n                bbox=dict(color=\"white\", boxstyle=\"square,pad=0\"),\n            )\n        dt = df.at[yr, \"summer_end\"]\n        val = df.at[yr, \"summer\"]\n        if pd.notna(dt):\n            ax[0].text(\n                dt,\n                val + 1,\n                f\"{dt:%-d %b} {val:.1f}°F\",\n                ha=\"center\",\n                va=\"bottom\",\n                bbox=dict(color=\"white\", boxstyle=\"square,pad=0\"),\n            )\n\n    df2 = df.dropna()\n    p2col = \"winter_end_doy\" if season == \"spring\" else \"summer_end_doy\"\n    slp, intercept, r, _, _ = stats.linregress(\n        df2.index.values, df2[p2col].values\n    )\n    ax[1].scatter(df.index.values, df[p2col].values)\n    ax[1].grid(True)\n    # Do labelling\n    yticks = []\n    yticklabels = []\n    for doy in range(int(df[p2col].min()), int(df[p2col].max())):\n        dt = date(2000, 1, 1) + timedelta(days=doy - 1)\n        if dt.day in [1, 15]:\n            yticks.append(doy)\n            yticklabels.append(dt.strftime(\"%-d %b\"))\n    ax[1].set_yticks(yticks)\n    ax[1].set_yticklabels(yticklabels)\n    lbl = (\n        \"Date of Minimum (Spring Start)\"\n        if season == \"spring\"\n        else \"Date of Maximum (Fall Start)\"\n    )\n    ax[1].set_ylabel(lbl)\n    ax[1].set_xlim(df.index.min() - 1, df.index.max() + 1)\n    avgv = df[p2col].mean()\n    ax[1].axhline(avgv, color=\"r\")\n    ax[1].plot(df.index.values, intercept + (df.index.values * slp))\n    d = (date(2000, 1, 1) + timedelta(days=int(avgv))).strftime(\"%-d %b\")\n    ax[1].text(\n        0.02,\n        0.02,\n        r\"$\\frac{\\Delta days}{decade} = %.2f,R^2=%.2f, avg = %s$\"\n        % (slp * 10.0, r**2, d),\n        va=\"bottom\",\n        transform=ax[1].transAxes,\n    )\n    ax[1].set_ylim(bottom=ax[1].get_ylim()[0] - 10)\n\n    p3col = \"spring_length\" if season == \"spring\" else \"fall_length\"\n    slp, intercept, r, _, _ = stats.linregress(df2.index.values, df2[p3col])\n    ax[2].scatter(df.index.values, df[p3col])\n    ax[2].set_xlim(df.index.min() - 1, df.index.max() + 1)\n    ax[2].set_ylabel(\"Length of '%s' [days]\" % (season.capitalize(),))\n    ax[2].grid(True)\n    avgv = df[p3col].mean()\n    ax[2].axhline(avgv, color=\"r\")\n    ax[2].plot(df.index.values, intercept + (df.index.values * slp))\n    ax[2].text(\n        0.02,\n        0.02,\n        r\"$\\frac{\\Delta days}{decade} = %.2f,R^2=%.2f, avg = %.1fd$\"\n        % (slp * 10.0, r**2, avgv),\n        va=\"bottom\",\n        transform=ax[2].transAxes,\n    )\n    ax[2].set_ylim(bottom=ax[2].get_ylim()[0] - 15)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p138.py",
    "content": "\"\"\"\nThis graph presents monthly average wind speed\nvalues along with vector-averaged average wind direction.\n\"\"\"\n\nimport calendar\n\nimport pandas as pd\nfrom metpy.calc import wind_components, wind_direction\nfrom metpy.units import units as munits\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom pyiem.util import convert_value, drct2text\n\nUNITS = {\"mph\": \"miles per hour\", \"kt\": \"knots\", \"mps\": \"meters per second\"}\nUNITCONV = {\"mph\": \"miles / hour\", \"kt\": \"knot\", \"mps\": \"meter / second\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"units\",\n            default=\"mph\",\n            options=UNITS,\n            label=\"Units of Average Wind Speed\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    units = ctx[\"units\"]\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            select date_trunc('hour', valid at time zone 'UTC') as ts,\n            avg(sknt) as sknt, max(drct) as drct from alldata\n            WHERE station = %s and sknt is not null and drct is not null\n            and report_type = 3 GROUP by ts\n        \"\"\",\n            conn,\n            params=(station,),\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    sknt = munits(\"knot\") * df[\"sknt\"].values\n    drct = munits(\"degree\") * df[\"drct\"].values\n    df[\"u\"], df[\"v\"] = [\n        x.to(munits(\"meter / second\")).m for x in wind_components(sknt, drct)\n    ]\n    df[\"month\"] = df[\"ts\"].dt.month\n    grp = df[[\"month\", \"u\", \"v\", \"sknt\"]].groupby(\"month\").mean()\n    grp[f\"u_{units}\"] = convert_value(\n        grp[\"u\"].values, \"meter / second\", UNITCONV[units]\n    )\n    grp[f\"v_{units}\"] = convert_value(\n        grp[\"v\"].values, \"meter / second\", UNITCONV[units]\n    )\n    grp[f\"sped_{units}\"] = convert_value(\n        grp[\"sknt\"].values, \"knot\", UNITCONV[units]\n    )\n    grp[\"drct\"] = wind_direction(\n        munits(\"meter / second\") * grp[\"u\"].values,\n        munits(\"meter / second\") * grp[\"v\"].values,\n    ).m\n    maxval = grp[f\"sped_{units}\"].max()\n    title = (\n        f\"{ctx['_sname']} [{df['ts'].min().year}-{df['ts'].max().year}]\\n\"\n        \"Monthly Average Wind Speed and Vector Average Direction\"\n    )\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n    ax.barh(grp.index.values, grp[f\"sped_{units}\"].values, align=\"center\")\n    ax.set_xlabel(f\"Average Wind Speed [{UNITS[units]}]\")\n    ax.set_yticks(range(1, 13))\n    ax.set_yticklabels(calendar.month_abbr[1:])\n    ax.grid(True)\n    ax.set_xlim(0, maxval * 1.2)\n    for mon, row in grp.iterrows():\n        ax.text(\n            maxval * 1.1,\n            mon,\n            drct2text(row[\"drct\"]),\n            ha=\"center\",\n            va=\"center\",\n            bbox=dict(color=\"white\"),\n        )\n        val = row[f\"sped_{units}\"]\n        ax.text(\n            val * 0.98,\n            mon,\n            f\"{val:.1f}\",\n            ha=\"right\",\n            va=\"center\",\n            bbox=dict(color=\"white\", boxstyle=\"square,pad=0.03\"),\n        )\n    ax.set_ylim(12.5, 0.5)\n\n    return fig, grp\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p139.py",
    "content": "\"\"\"\nThis table presents the 10 largest or smallest differences\nbetween the lowest and highest air temperature for a local calendar\nday.  Some stations have auxillary products that provide 'daily' values\nover a date defined always in standard time.  This plot also presents\nsprites of the temperature time series starting at 12 hours before the\ndenoted date and ending at 12 hours after the date.  The sprite often\nquickly points out bad data points, sigh, but also easily shows if the\ntemperature change was an increase during the day or decrease.\n\n<p><a href=\"/plotting/auto/?q=169\">Autoplot 169</a> is similar to this\nplot, but computes the change over arbitrary time windows.</p>\n\"\"\"\n\nfrom datetime import date, datetime, timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import get_monofont\nfrom iemweb.util import month2months\n\nMDICT = {\n    \"all\": \"No Month/Time Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\nPDICT = {\"largest\": \"Largest\", \"smallest\": \"Smallest\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"v\",\n            default=\"largest\",\n            label=\"Show largest or smallest differences?\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n    ]\n    return desc\n\n\ndef plot_date(ax, i, dt: date, station, tz) -> bool:\n    \"\"\"plot date.\"\"\"\n    # request 36 hours\n    sts = datetime(dt.year, dt.month, dt.day, tzinfo=tz)\n    sts = sts - timedelta(hours=12)\n    ets = sts + timedelta(hours=48)\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        SELECT valid at time zone 'UTC' as valid, tmpf from alldata\n        where station = :station and valid >= :sts and valid <= :ets and\n        tmpf is not null ORDER by valid ASC\"\"\"),\n            conn,\n            params={\"station\": station, \"sts\": sts, \"ets\": ets},\n            index_col=None,\n        )\n    if df.empty:\n        return False\n    df[\"valid\"] = df[\"valid\"].dt.tz_localize(timezone.utc)\n    # Ensure that we have at least one ob within six hours to start and end\n    h6 = timedelta(hours=6)\n    dv = df[\"valid\"]\n    if df[(dv >= sts) & (dv < (sts + h6))].empty:\n        return False\n    h18 = timedelta(hours=18)\n    if df[(dv >= (sts + h18)) & (dv < (sts + h6 + h18))].empty:\n        return False\n    df[\"norm\"] = (df[\"tmpf\"] - df[\"tmpf\"].min()) / (\n        df[\"tmpf\"].max() - df[\"tmpf\"].min()\n    )\n    df[\"xnorm\"] = [\n        x.total_seconds() for x in (df[\"valid\"] - pd.Timestamp(sts))\n    ]\n\n    lp = ax.plot(df[\"xnorm\"], df[\"norm\"] + i)\n    ax.text(\n        df[\"xnorm\"].values[-1],\n        df[\"norm\"].values[-1] + i,\n        dt.strftime(\"%-d %b %Y\"),\n        va=\"bottom\" if df[\"norm\"].values[-1] < 0.5 else \"top\",\n        color=lp[0].get_color(),\n    )\n    return True\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    font0 = get_monofont()\n    font0.set_size(16)\n    station = ctx[\"zstation\"]\n    month = ctx[\"month\"]\n    months = month2months(month)\n\n    order = \"DESC\" if ctx[\"v\"] == \"largest\" else \"ASC\"\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        # Over-sample as we may get some DQ's due to lack of data\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT day as date, max_tmpf as max, min_tmpf as min,\n            max_tmpf::int - min_tmpf::int as difference\n            from summary s JOIN stations t on (s.iemid = t.iemid)\n            where t.id = :station and t.network = :network\n            and extract(month from day) = ANY(:months)\n            and max_tmpf is not null and min_tmpf is not null\n            ORDER by difference {order}, date DESC LIMIT 50\n        \"\"\",\n                order=order,\n            ),\n            conn,\n            params={\n                \"station\": station,\n                \"network\": ctx[\"network\"],\n                \"months\": months,\n            },\n            parse_dates=(\"date\",),\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found,\")\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    tz = ZoneInfo(ctx[\"_nt\"].sts[station][\"tzname\"] or \"America/Chicago\")\n    title = (\n        f\"{ctx['_sname']} ({ab.year}-{date.today().year})\\n\"\n        f\"Top 10 {PDICT[ctx['v']]} Local Calendar Day \"\n        f\"[{month.capitalize()}] Temperature Differences\"\n    )\n    fig = figure(title=title, apctx=ctx)\n    fig.text(\n        0.1, 0.81, \" #  Date         Diff   Low High\", fontproperties=font0\n    )\n    y = 0.74\n    ax = fig.add_axes((0.5, 0.1, 0.3, 0.69))\n    i = 10\n    hits = 0\n    rank = 0\n    rankval = 0.120\n    for _, row in df.iterrows():\n        if hits >= 10:\n            break\n        if not plot_date(ax, i, row[\"date\"], station, tz):\n            continue\n        if row[\"difference\"] != rankval:\n            rank += 1\n            rankval = row[\"difference\"]\n        hits += 1\n        fig.text(\n            0.1,\n            y,\n            (\n                f\"{rank:2.0f}  {row['date']:%d %b %Y}   \"\n                f\"{row['difference']:3.0f}   \"\n                f\"{row['min']:3.0f}  {row['max']:3.0f}\"\n            ),\n            fontproperties=font0,\n        )\n        y -= 0.07\n        i -= 1\n    ax.set_title(\"Hourly Temps On Date & +/-12 Hrs\")\n    ax.set_ylim(1, 11)\n    ax.axvline(12 * 3600, color=\"tan\")\n    ax.axvline(36 * 3600, color=\"tan\")\n    ax.axis(\"off\")\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p140.py",
    "content": "\"\"\"\nThis plot presents statistics for a period of\ndays each year provided your start date and number of days after that\ndate. If your period crosses a year bounds, the plotted year represents\nthe year of the start date of the period. <strong>Average Dew Point Temp\n</strong> is computed by averaging the daily max and min dew point values.\n\n<br /><br />This autoplot is specific to data from automated stations, a\nsimiliar autoplot <a href=\"/plotting/auto/?q=107\">#107</a> exists for\nlong term COOP data.\n\n<p><strong>Updated 27 Aug 2023:</strong> The API for this autoplot was changed\nto use a more user friendly start and end date.\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nLOOKUP = {\n    \"avg_high_temp\": \"max_tmpf\",\n    \"range_high_temp\": \"max_tmpf\",\n    \"avg_low_temp\": \"min_tmpf\",\n    \"range_low_temp\": \"min_tmpf\",\n    \"avg_temp\": \"(max_tmpf + min_tmpf)/2.\",\n    \"avg_dewp\": \"(max_dwpf + min_dwpf)/2.\",\n    \"avg_wind_speed\": \"avg_sknt * 1.15\",\n    \"avg_wind_gust\": \"coalesce(max_gust, max_sknt) * 1.15\",\n    \"max_wind_gust\": \"coalesce(max_gust, max_sknt) * 1.15\",\n    \"max_high\": \"max_tmpf\",\n    \"min_high\": \"max_tmpf\",\n    \"max_low\": \"min_tmpf\",\n    \"min_low\": \"min_tmpf\",\n    \"precip\": \"pday\",\n}\nPDICT = {\n    \"avg_high_temp\": \"Average High Temperature\",\n    \"range_high_temp\": \"Range of High Temperature\",\n    \"avg_low_temp\": \"Average Low Temperature\",\n    \"range_low_temp\": \"Range of Low Temperature\",\n    \"avg_temp\": \"Average Temperature\",\n    \"max_dwpf\": \"Maximum Dew Point Temp\",\n    \"avg_dewp\": \"Average Dew Point Temp\",\n    \"min_dwpf\": \"Minimum Dew Point Temp\",\n    \"avg_wind_speed\": \"Average Wind Speed\",\n    \"avg_wind_gust\": \"Average Wind Gust\",\n    \"max_wind_gust\": \"Maximum Wind Gust\",\n    \"max_high\": \"Maximum High Temperature\",\n    \"min_high\": \"Minimum High Temperature\",\n    \"max_low\": \"Maximum Low Temperature\",\n    \"min_low\": \"Minimum Low Temperature\",\n    \"max_feel\": \"Maximum Feels Like Temperature\",\n    \"min_feel\": \"Minimum Feels Like Temperature\",\n    \"max_rh\": \"Maximum Daily Average Relative Humidity\",\n    \"avg_rh\": \"Average Daily Average Relative Humidity\",\n    \"min_rh\": \"Minimum Daily Average Relative Humidity\",\n    \"precip\": \"Total Precipitation\",\n}\nPDICT2 = {\n    \"none\": \"Plot metric, not count of days\",\n    \"aoa\": \"Days At or Above Threshold\",\n    \"below\": \"Days Below Threshold\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = datetime.today() - timedelta(days=1)\n    sts = today - timedelta(days=14)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"station\",\n            default=\"DSM\",\n            label=\"Select Station\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"year\",\n            default=1900,\n            min=1900,\n            name=\"syear\",\n            label=\"Limit plot start year (if data exists) to:\",\n        ),\n        {\n            \"type\": \"year\",\n            \"default\": today.year,\n            \"min\": 1900,\n            \"name\": \"eyear\",\n            \"label\": \"Inclusive year to limit plot to (if data exists):\",\n            \"optional\": True,\n        },\n        {\n            \"type\": \"sday\",\n            \"name\": \"sday\",\n            \"default\": f\"{sts:%m%d}\",\n            \"label\": \"Inclusive Start Date of the Year\",\n        },\n        {\n            \"type\": \"sday\",\n            \"name\": \"eday\",\n            \"default\": f\"{today:%m%d}\",\n            \"label\": \"Inclusise End Date of the Year\",\n        },\n        dict(\n            type=\"select\",\n            name=\"varname\",\n            default=\"avg_temp\",\n            label=\"Variable to Compute:\",\n            options=PDICT,\n        ),\n        {\n            \"type\": \"select\",\n            \"options\": PDICT2,\n            \"name\": \"w\",\n            \"default\": \"none\",\n            \"label\": \"Use Threshold to Count Number of Days\",\n        },\n        {\n            \"type\": \"float\",\n            \"name\": \"thres\",\n            \"label\": \"Threshold (inch, F, MPH, %)\",\n            \"default\": \"1\",\n        },\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=sts.year,\n            label=\"Year to Highlight in Chart:\",\n        ),\n    ]\n    return desc\n\n\ndef nice(val):\n    \"\"\"pretty print\"\"\"\n    if val == \"M\":\n        return \"M\"\n    if 0 < val < 0.005:\n        return \"Trace\"\n    return f\"{val:.2f}\"\n\n\ndef crossesjan1(val):\n    \"\"\"Pretty print for a year.\"\"\"\n    return f\"{val:.0f}-{(val + 1):.0f}\"\n\n\ndef intfmt(val):\n    \"\"\"format int values\"\"\"\n    if val == \"M\":\n        return \"M\"\n    return f\"{val:.0f}\"\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"varname\"]\n    year = ctx[\"year\"]\n    dtlimiter = (\n        \"(to_char(day, 'mmdd') >= :sday and to_char(day, 'mmdd') <= :eday)\"\n    )\n    doff = \"extract(year from day)\"\n    if ctx[\"eday\"] < ctx[\"sday\"]:\n        dtlimiter = (\n            \"(to_char(day, 'mmdd') >= :sday or to_char(day, 'mmdd') <= :eday)\"\n        )\n        doff = (\n            \"case when to_char(day, 'mmdd') <= :eday then \"\n            \"(extract(year from day)::int - 1) else extract(year from day) end\"\n        )\n    threshold = ctx[\"thres\"]\n    mydir = \">=\" if ctx[\"w\"] == \"aoa\" else \"<\"\n    aggcol = LOOKUP.get(varname, varname)\n    dfcol = ctx[\"varname\"] if ctx[\"w\"] == \"none\" else \"count_days\"\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        SELECT {doff} as yr,\n        avg((max_tmpf+min_tmpf)/2.) as avg_temp,\n        avg(max_tmpf) as avg_high_temp,\n        avg(min_tmpf) as avg_low_temp,\n        sum(pday) as precip, avg(avg_sknt) * 1.15 as avg_wind_speed,\n        avg(coalesce(max_gust, max_sknt)) * 1.15 as avg_wind_gust,\n        max(coalesce(max_gust, max_sknt)) * 1.15 as max_wind_gust,\n        min(min_tmpf) as min_low,\n        max(min_tmpf) as max_low,\n        max(max_tmpf) as max_high,\n        min(max_tmpf) as min_high,\n        avg(max_rh) as max_rh,\n        avg(avg_rh) as avg_rh,\n        avg(min_rh) as min_rh,\n        max(max_dwpf) as max_dwpf,\n        avg((max_dwpf + min_dwpf)/2.) as avg_dewp,\n        min(min_dwpf) as min_dwpf,\n        max(max_feel) as max_feel, min(min_feel) as min_feel,\n        sum(case when {aggcol} {mydir} :threshold then 1 else 0 end) as\n            count_days\n        from summary s JOIN stations t on (s.iemid = t.iemid)\n        WHERE t.network = :network and t.id = :station\n        and {dtlimiter} and day >= :start and day <= :end\n        GROUP by yr ORDER by yr ASC\n        \"\"\",\n                doff=doff,\n                aggcol=aggcol,\n                mydir=mydir,\n                dtlimiter=dtlimiter,\n            ),\n            conn,\n            params={\n                \"network\": ctx[\"network\"],\n                \"station\": station,\n                \"sday\": f\"{ctx['sday']:%m%d}\",\n                \"eday\": f\"{ctx['eday']:%m%d}\",\n                \"start\": date(ctx[\"syear\"], 1, 1),\n                \"end\": date(ctx.get(\"eyear\", date.today().year), 12, 31),\n                \"threshold\": threshold,\n            },\n            index_col=\"yr\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No data was found.\")\n    df[\"range_high_temp\"] = df[\"max_high\"] - df[\"min_high\"]\n    df[\"range_low_temp\"] = df[\"max_low\"] - df[\"min_low\"]\n    # require values , not nan\n    df2 = df[df[dfcol].notnull()].sort_values(dfcol, ascending=False)\n\n    ylabel = \"Temperature °F\"\n    units = \"°F\"\n    if varname == \"precip\":\n        ylabel = \"Precipitation [inch]\"\n        units = \"[inch]\"\n    elif varname.find(\"wind\") > -1:\n        ylabel = \"Wind Speed [MPH]\"\n        if varname.find(\"gust\") > -1:\n            ylabel = \"Wind Gust [MPH]\"\n        units = \"[MPH]\"\n    elif varname.find(\"rh\") > -1:\n        ylabel = \"Relative Humidity [%]\"\n        units = \"[%]\"\n    if ctx[\"w\"] != \"none\":\n        ylabel = \"Days\"\n    title = (\n        f\"{ctx['_sname']}\\n\"\n        f\"{PDICT.get(varname)} from \"\n        f\"{ctx['sday']:%d %b} through {ctx['eday']:%d %b}\"\n    )\n    if ctx[\"w\"] != \"none\":\n        tt = PDICT2[ctx[\"w\"]].replace(\"Threshold\", f\"{ctx['thres']}\")\n        title = (\n            f\"{ctx['_sname']}\\n\"\n            f\"{tt} {units} for {PDICT.get(varname)} \"\n            f\"from {ctx['sday']:%d %b} through {ctx['eday']:%d %b}\"\n        )\n    if ctx[\"w\"] != \"none\":\n        title = title.replace(\"Average \", \"\")\n    fig = figure(apctx=ctx, title=title)\n    ax = [\n        fig.add_axes((0.07, 0.53, 0.78, 0.36)),\n        fig.add_axes((0.07, 0.1, 0.78, 0.36)),\n    ]\n\n    fmter = intfmt if ctx[\"w\"] != \"none\" else nice\n    yrfmter = intfmt if ctx[\"eday\"] > ctx[\"sday\"] else crossesjan1\n\n    # Print top 10\n    dy = 0.03\n    ypos = 0.9\n    fig.text(0.86, ypos, \"Top 10\")\n    for yr, row in df2.head(10).iterrows():\n        ypos -= dy\n        _fp = {\"weight\": \"bold\"} if yr == year else {}\n        fig.text(0.86, ypos, yrfmter(yr), font_properties=_fp)\n        fig.text(0.95, ypos, fmter(row[dfcol]), font_properties=_fp)\n\n    ypos -= 2 * dy\n    fig.text(0.86, ypos, \"Bottom 10\")\n    ypos = ypos - 10 * dy\n    for yr, row in df2.tail(10).iterrows():\n        _fp = {\"weight\": \"bold\"} if yr == year else {}\n        fig.text(0.86, ypos, yrfmter(yr), font_properties=_fp)\n        fig.text(0.95, ypos, fmter(row[dfcol]), font_properties=_fp)\n        ypos += dy\n    if df[dfcol].isnull().all():\n        raise NoDataFound(\"No data found for this station and year range.\")\n    bars = ax[0].bar(\n        df.index, df[dfcol], facecolor=\"r\", edgecolor=\"r\", align=\"center\"\n    )\n    thisvalue = \"M\"\n    for mybar, x, y in zip(bars, df.index.values, df[dfcol], strict=False):\n        if x == year:\n            mybar.set_facecolor(\"g\")\n            mybar.set_edgecolor(\"g\")\n            thisvalue = y\n    ax[0].set_xlabel(f\"Year, {year} = {nice(thisvalue)}\")\n    ax[0].axhline(\n        df[dfcol].mean(),\n        lw=2,\n        label=f\"Avg: {df[dfcol].mean():.2f}\",\n        color=\"b\",\n    )\n    trail = df[dfcol].rolling(30, min_periods=30, center=False).mean()\n    ax[0].plot(trail.index, trail.values, color=\"k\", label=\"30yr Avg\", lw=2)\n    ax[0].set_ylabel(ylabel)\n    ax[0].grid(True)\n    ax[0].legend(ncol=2, fontsize=10)\n    ax[0].set_xlim(df.index.values[0] - 1, df.index.values[-1] + 1)\n    dy = df[dfcol].max() - df[dfcol].min()\n    ax[0].set_ylim(df[dfcol].min() - dy * 0.2, df[dfcol].max() + dy * 0.25)\n    box = ax[0].get_position()\n    ax[0].set_position([box.x0, box.y0 + 0.02, box.width, box.height * 0.98])\n\n    # Plot 2: CDF\n    vals = df[pd.notnull(df[dfcol])][dfcol]\n    X2 = np.sort(vals)\n    ptile = np.percentile(vals, [0, 5, 50, 95, 100])\n    N = len(vals)\n    F2 = np.array(range(N)) / float(N) * 100.0\n    ax[1].plot(X2, 100.0 - F2)\n    ax[1].set_xlabel(f\"based on summarized hourly reports, {ylabel}\")\n    ax[1].set_ylabel(\"Observed Frequency [%]\")\n    ax[1].grid(True)\n    ax[1].set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    mysort = df.sort_values(by=dfcol, ascending=True)\n    info = (\n        f\"Min: {df[dfcol].min():.2f} {yrfmter(mysort.index[0])}\\n\"\n        f\"95th: {ptile[1]:.2f}\\n\"\n        f\"Mean: {df[dfcol].mean():.2f}\\n\"\n        f\"STD: {df[dfcol].std():.2f}\\n\"\n        f\"5th: {ptile[3]:.2f}\\n\"\n        f\"Max: {df[dfcol].max():.2f} {yrfmter(mysort.index[-1])}\"\n    )\n    if thisvalue != \"M\":\n        ax[1].axvline(thisvalue, lw=2, color=\"g\")\n    ax[1].text(\n        0.8,\n        0.95,\n        info,\n        transform=ax[1].transAxes,\n        va=\"top\",\n        bbox=dict(facecolor=\"white\", edgecolor=\"k\"),\n    )\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p141.py",
    "content": "\"\"\"yieldfx plot\"\"\"\n\nimport calendar\nimport os\nfrom datetime import date, datetime, timedelta\n\nimport pandas as pd\nfrom metpy.units import units\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.meteorology import gdd\nfrom pyiem.plot import figure_axes\nfrom pyiem.util import c2f, mm2inch\n\nSTATIONS = {\n    \"ames\": \"Central (Ames)\",\n    \"cobs\": \"Central (COBS)\",\n    \"crawfordsville\": \"Southeast (Crawfordsville)\",\n    \"kanawha\": \"Northern (Kanawha)\",\n    \"lewis\": \"Southwest (Lewis)\",\n    \"mcnay\": \"Southern (Chariton/McNay)\",\n    \"muscatine\": \"Southeast (Muscatine)\",\n    \"nashua\": \"Northeast (Nashua)\",\n    \"sutherland\": \"Northwest (Sutherland)\",\n}\n\nPLOTS = {\n    \"gdd\": \"Growing Degree Days [°F]\",\n    \"rain\": \"Precipitation [in]\",\n    \"maxt\": \"Daily Maximum Temperature [°F]\",\n    \"mint\": \"Daily Minimum Temperature [°F]\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"location\",\n            default=\"ames\",\n            label=\"Select Location:\",\n            options=STATIONS,\n        ),\n        dict(\n            type=\"select\",\n            name=\"ptype\",\n            default=\"gdd\",\n            label=\"Select Plot Type:\",\n            options=PLOTS,\n        ),\n        dict(type=\"text\", name=\"sdate\", default=\"mar15\", label=\"Start Date:\"),\n    ]\n    return desc\n\n\ndef load(dirname, location, sdate):\n    \"\"\"Read a file please\"\"\"\n    data = []\n    idx = []\n    mindoy = int(sdate.strftime(\"%j\"))\n    fn = f\"{dirname}/{location}.met\"\n    if not os.path.isfile(fn):\n        raise NoDataFound(\"Data file was not found.\")\n    with open(fn, encoding=\"utf8\") as fh:\n        for line in fh:\n            line = line.strip()  # noqa\n            if not line.startswith(\"19\") and not line.startswith(\"20\"):\n                continue\n            tokens = line.split()\n            if int(tokens[1]) < mindoy:\n                continue\n            data.append(tokens)\n            ts = date(int(tokens[0]), 1, 1) + timedelta(\n                days=int(tokens[1]) - 1\n            )\n            idx.append(ts)\n    if len(data[0]) < 10:\n        cols = [\"year\", \"doy\", \"radn\", \"maxt\", \"mint\", \"rain\"]\n    else:\n        cols = [\n            \"year\",\n            \"doy\",\n            \"radn\",\n            \"maxt\",\n            \"mint\",\n            \"rain\",\n            \"gdd\",\n            \"st4\",\n            \"st12\",\n            \"st24\",\n            \"st50\",\n            \"sm12\",\n            \"sm24\",\n            \"sm50\",\n        ]\n    df = pd.DataFrame(data, index=idx, columns=cols)\n    for col in cols:\n        df[col] = pd.to_numeric(df[col], errors=\"coerce\")\n    if len(data[0]) < 10:\n        df[\"gdd\"] = gdd(\n            units(\"degC\") * df[\"maxt\"].values,\n            units(\"degC\") * df[\"mint\"].values,\n        )\n    df[\"gddcum\"] = df.groupby([\"year\"])[\"gdd\"].apply(lambda x: x.cumsum())\n    df[\"raincum\"] = mm2inch(\n        df.groupby([\"year\"])[\"rain\"].apply(lambda x: x.cumsum())\n    )\n    return df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    location = ctx[\"location\"]\n    ptype = ctx[\"ptype\"]\n    sdate = datetime.strptime(f\"2000{ctx['sdate']}\", \"%Y%b%d\")\n    df = load(\"/mesonet/share/pickup/yieldfx\", location, sdate)\n    cdf = load(\"/opt/iem/scripts/yieldfx/baseline\", location, sdate)\n\n    today = date.today()\n    thisyear = (\n        df[df[\"year\"] == today.year].copy().reset_index().set_index(\"doy\")\n    )\n\n    # Drop extra day from cdf during non-leap year\n    if today.year % 4 != 0:\n        cdf = cdf[cdf[\"doy\"] < 366]\n        df = df[df[\"doy\"] < 366]\n\n    # Create a specialized result dataframe for CSV, Excel output options\n    resdf = pd.DataFrame(index=thisyear.index)\n    resdf.index.name = \"date\"\n    resdf[\"doy\"] = thisyear.index.values\n    resdf = resdf.reset_index().set_index(\"doy\")\n\n    # write current year data back to resdf\n    for _v, _u in zip([\"gddcum\", \"raincum\"], [\"F\", \"in\"], strict=False):\n        resdf[f\"{_v}[{_u}]\"] = thisyear[_v]\n    for _v in [\"mint\", \"maxt\"]:\n        resdf[f\"{_v}[F]\"] = c2f(thisyear[_v].values)\n    resdf[\"rain[in]\"] = mm2inch(thisyear[\"rain\"])\n    for _ptype, unit in zip([\"gdd\", \"rain\"], [\"F\", \"in\"], strict=False):\n        resdf[f\"{_ptype}cum_climo[{unit}]\"] = cdf.groupby(\"doy\")[\n            _ptype + \"cum\"\n        ].mean()\n        resdf[f\"{_ptype}cum_min[{unit}]\"] = df.groupby(\"doy\")[\n            _ptype + \"cum\"\n        ].min()\n        resdf[f\"{_ptype}cum_max[{unit}]\"] = df.groupby(\"doy\")[\n            _ptype + \"cum\"\n        ].max()\n    for _ptype in [\"maxt\", \"mint\"]:\n        resdf[_ptype + \"_climo[F]\"] = c2f(\n            cdf.groupby(\"doy\")[_ptype].mean().values\n        )\n        resdf[_ptype + \"_min[F]\"] = c2f(df.groupby(\"doy\")[_ptype].min().values)\n        resdf[_ptype + \"_max[F]\"] = c2f(df.groupby(\"doy\")[_ptype].max().values)\n\n    (fig, ax) = figure_axes(\n        apctx=ctx, title=f\"{STATIONS[location]} {PLOTS[ptype]}\"\n    )\n    if ptype in [\"gdd\", \"rain\"]:\n        ax.plot(\n            thisyear.index.values,\n            thisyear[f\"{ptype}cum\"],\n            zorder=4,\n            color=\"b\",\n            lw=2,\n            label=f\"{today.year} Obs + CFS Forecast\",\n        )\n        climo = cdf.groupby(\"doy\")[ptype + \"cum\"].mean()\n        ax.plot(\n            climo.index.values,\n            climo.values,\n            lw=2,\n            color=\"k\",\n            label=\"Climatology\",\n            zorder=3,\n        )\n        xrng = df.groupby(\"doy\")[ptype + \"cum\"].max()\n        nrng = df.groupby(\"doy\")[ptype + \"cum\"].min()\n        ax.fill_between(\n            xrng.index.values,\n            nrng.values,\n            xrng.values,\n            color=\"tan\",\n            label=\"Range\",\n            zorder=2,\n        )\n    else:\n        ax.plot(\n            thisyear.index.values,\n            c2f(thisyear[ptype]),\n            zorder=4,\n            color=\"b\",\n            lw=2,\n            label=f\"{today.year} Obs + CFS Forecast\",\n        )\n        climo = cdf.groupby(\"doy\")[ptype].mean()\n        ax.plot(\n            climo.index.values,\n            c2f(climo.values),\n            lw=2,\n            color=\"k\",\n            label=\"Climatology\",\n            zorder=3,\n        )\n        xrng = df.groupby(\"doy\")[ptype].max()\n        nrng = df.groupby(\"doy\")[ptype].min()\n        ax.fill_between(\n            xrng.index.values,\n            c2f(nrng.values),\n            c2f(xrng.values),\n            color=\"tan\",\n            label=\"Range\",\n            zorder=2,\n        )\n\n    ax.set_ylabel(PLOTS[ptype])\n    ax.legend(loc=(0.03, -0.16), ncol=3, fontsize=12)\n    ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.grid(True)\n    ax.set_xlim(\n        sdate.timetuple().tm_yday,\n        date(today.year, 12, 31).timetuple().tm_yday,\n    )\n    pos = ax.get_position()\n    ax.set_position([pos.x0, pos.y0 + 0.05, pos.width, pos.height * 0.95])\n\n    return fig, resdf\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p142.py",
    "content": "\"\"\"\nThis plot presents the trailing X number of days\ntemperature or precipitation departure from long term average. You can\nexpress this departure either in Absolute Departure or as a Standard\nDeviation.  The Standard Deviation option along with precipitation is\ntypically called the \"Standardized Precipitation Index\".\n\n<p>The plot also contains an underlay with the weekly US Drought Monitor\nthat is valid for the station location.  If you plot a climate district\nstation, you get the US Drought Monitor valid for the district centroid.\nIf you plot a statewide average, you get no USDM included.\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport matplotlib.dates as mdates\nimport pandas as pd\nimport requests\nfrom matplotlib.axes import Axes\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom pyiem.util import LOG\n\nUNITS = {\"precip\": \"inch\", \"avgt\": \"°F\", \"high\": \"°F\", \"low\": \"°F\"}\nPDICT = {\n    \"precip\": \"Precipitation\",\n    \"avgt\": \"Daily Average Temperature\",\n    \"high\": \"Daily High Temperature\",\n    \"low\": \"Daily Low Temperature\",\n}\nPDICT2 = {\"diff\": \"Absolute Departure\", \"sigma\": \"Standard Deviation\"}\nCOLORS = [\"#ffff00\", \"#fcd37f\", \"#ffaa00\", \"#e60000\", \"#730000\"]\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    today = date.today()\n    sts = today - timedelta(days=720)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"station\",\n            name=\"station\",\n            default=\"IATAME\",\n            label=\"Select Station:\",\n            network=\"IACLIMATE\",\n        ),\n        dict(\n            min=1,\n            type=\"int\",\n            name=\"p1\",\n            default=31,\n            label=\"First Period of Days\",\n        ),\n        dict(\n            min=1,\n            type=\"int\",\n            name=\"p2\",\n            default=91,\n            label=\"Second Period of Days\",\n        ),\n        dict(\n            min=1,\n            type=\"int\",\n            name=\"p3\",\n            default=365,\n            label=\"Third Period of Days\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=sts.strftime(\"%Y/%m/%d\"),\n            min=\"1893/01/01\",\n            label=\"Start Date of Plot\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"edate\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            min=\"1893/01/01\",\n            label=\"End Date of Plot\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"pvar\",\n            default=\"precip\",\n            options=PDICT,\n            label=\"Which variable to plot?\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"how\",\n            default=\"diff\",\n            options=PDICT2,\n            label=\"How to Express Departure?\",\n        ),\n    ]\n    return desc\n\n\ndef underlay_usdm(axis: Axes, sts, ets, lon, lat):\n    \"\"\"Underlay the USDM as pretty bars, somehow\"\"\"\n    if ets < date(2000, 1, 1):\n        axis.text(\n            0.0,\n            1.03,\n            \"No Drought Information Prior to 2000\",\n            transform=axis.transAxes,\n        )\n        return\n    rects = [Rectangle((0, 0), 1, 1, fc=color) for color in COLORS]\n    axis.text(\n        0.0, 1.03, \"Drought Category Underlain\", transform=axis.transAxes\n    )\n    axis.legend(\n        rects,\n        [f\"D{cat}\" for cat in range(5)],\n        ncol=5,\n        fontsize=11,\n        loc=(0.3, 1.01),\n    )\n    uri = (\n        \"http://mesonet.agron.iastate.edu/\"\n        f\"api/1/usdm_bypoint.json?sdate={sts:%Y-%m-%d}&edate={ets:%Y-%m-%d}\"\n        f\"&lon={lon}&lat={lat}\"\n    )\n    try:\n        resp = requests.get(uri, timeout=30)\n        resp.raise_for_status()\n        data = resp.json()\n    except Exception as exp:\n        LOG.info(\"usdm fetch failed: %s\", exp)\n        return\n    for row in data[\"data\"]:\n        if row[\"category\"] is None:\n            continue\n        ts = datetime.strptime(row[\"valid\"], \"%Y-%m-%d\")\n        dt = date(ts.year, ts.month, ts.day)\n        axis.axvspan(\n            dt,\n            dt + timedelta(days=7),\n            color=COLORS[row[\"category\"]],\n            zorder=-3,\n        )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    p1 = ctx[\"p1\"]\n    p2 = ctx[\"p2\"]\n    p3 = ctx[\"p3\"]\n    pvar = ctx[\"pvar\"]\n    sts = ctx[\"sdate\"]\n    ets = ctx[\"edate\"]\n    how = ctx[\"how\"]\n    maxdays = max([p1, p2, p3])\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        -- Get all period averages\n        with avgs as (\n            SELECT day, sday,\n            count(high) OVER (ORDER by day ASC ROWS :md1 PRECEDING) as counts,\n            avg(high) OVER (ORDER by day ASC ROWS :d1 PRECEDING) as p1_high,\n            avg(high) OVER (ORDER by day ASC ROWS :d2 PRECEDING) as p2_high,\n            avg(high) OVER (ORDER by day ASC ROWS :d3 PRECEDING) as p3_high,\n            avg(low) OVER (ORDER by day ASC ROWS :d1 PRECEDING) as p1_low,\n            avg(low) OVER (ORDER by day ASC ROWS :d2 PRECEDING) as p2_low,\n            avg(low) OVER (ORDER by day ASC ROWS :d3 PRECEDING) as p3_low,\n            avg((high+low)/2.)\n                OVER (ORDER by day ASC ROWS :d1 PRECEDING) as p1_avgt,\n            avg((high+low)/2.)\n                OVER (ORDER by day ASC ROWS :d2 PRECEDING) as p2_avgt,\n            avg((high+low)/2.)\n                OVER (ORDER by day ASC ROWS :d3 PRECEDING) as p3_avgt,\n    sum(precip) OVER (ORDER by day ASC ROWS :d1 PRECEDING) as p1_precip,\n    sum(precip) OVER (ORDER by day ASC ROWS :d2 PRECEDING) as p2_precip,\n    sum(precip) OVER (ORDER by day ASC ROWS :d3 PRECEDING) as p3_precip\n    from alldata WHERE station = :station\n        ),\n        -- Get sday composites\n        sdays as (\n            SELECT sday,\n            avg(p1_high) as p1_high_avg, stddev(p1_high) as p1_high_stddev,\n            avg(p2_high) as p2_high_avg, stddev(p2_high) as p2_high_stddev,\n            avg(p3_high) as p3_high_avg, stddev(p3_high) as p3_high_stddev,\n            avg(p1_low) as p1_low_avg, stddev(p1_low) as p1_low_stddev,\n            avg(p2_low) as p2_low_avg, stddev(p2_low) as p2_low_stddev,\n            avg(p3_low) as p3_low_avg, stddev(p3_low) as p3_low_stddev,\n            avg(p1_avgt) as p1_avgt_avg, stddev(p1_avgt) as p1_avgt_stddev,\n            avg(p2_avgt) as p2_avgt_avg, stddev(p2_avgt) as p2_avgt_stddev,\n            avg(p3_avgt) as p3_avgt_avg, stddev(p3_avgt) as p3_avgt_stddev,\n            avg(p1_precip) as p1_precip_avg,\n            stddev(p1_precip) as p1_precip_stddev,\n            avg(p2_precip) as p2_precip_avg,\n            stddev(p2_precip) as p2_precip_stddev,\n            avg(p3_precip) as p3_precip_avg,\n            stddev(p3_precip) as p3_precip_stddev\n            from avgs WHERE counts = :maxdays GROUP by sday\n        )\n        -- Now merge to get obs\n            SELECT day, s.sday,\n            p1_high - p1_high_avg as p1_high_diff,\n            p2_high - p2_high_avg as p2_high_diff,\n            p3_high - p3_high_avg as p3_high_diff,\n            p1_low - p1_low_avg as p1_low_diff,\n            p2_low - p2_low_avg as p2_low_diff,\n            p3_low - p3_low_avg as p3_low_diff,\n            p1_avgt - p1_avgt_avg as p1_avgt_diff,\n            p2_avgt - p2_avgt_avg as p2_avgt_diff,\n            p3_avgt - p3_avgt_avg as p3_avgt_diff,\n            p1_precip - p1_precip_avg as p1_precip_diff,\n            p2_precip - p2_precip_avg as p2_precip_diff,\n            p3_precip - p3_precip_avg as p3_precip_diff,\n            (p1_high - p1_high_avg) / p1_high_stddev as p1_high_sigma,\n            (p2_high - p2_high_avg) / p2_high_stddev as p2_high_sigma,\n            (p3_high - p3_high_avg) / p3_high_stddev as p3_high_sigma,\n            (p1_low - p1_low_avg) / p1_low_stddev as p1_low_sigma,\n            (p2_low - p2_low_avg) / p2_low_stddev as p2_low_sigma,\n            (p3_low - p3_low_avg) / p3_low_stddev as p3_low_sigma,\n            (p1_avgt - p1_avgt_avg) / p1_avgt_stddev as p1_avgt_sigma,\n            (p2_avgt - p2_avgt_avg) / p2_avgt_stddev as p2_avgt_sigma,\n            (p3_avgt - p3_avgt_avg) / p3_avgt_stddev as p3_avgt_sigma,\n            (p1_precip - p1_precip_avg) / p1_precip_stddev as p1_precip_sigma,\n            (p2_precip - p2_precip_avg) / p2_precip_stddev as p2_precip_sigma,\n            (p3_precip - p3_precip_avg) / p3_precip_stddev as p3_precip_sigma\n            from avgs a JOIN sdays s on (a.sday = s.sday) WHERE\n            day >= :sts and day <= :ets ORDER by day ASC\n        \"\"\"),\n            conn,\n            params={\n                \"md1\": maxdays - 1,\n                \"d1\": p1 - 1,\n                \"d2\": p2 - 1,\n                \"d3\": p3 - 1,\n                \"station\": station,\n                \"maxdays\": maxdays,\n                \"sts\": sts,\n                \"ets\": ets,\n            },\n            index_col=\"day\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    (fig, ax) = figure_axes(apctx=ctx)\n    ax.set_position([0.1, 0.14, 0.85, 0.71])\n\n    (l1,) = ax.plot(\n        df.index.values,\n        df[f\"p1_{pvar}_{how}\"],\n        lw=2,\n        label=f\"{p1} Day\",\n        zorder=5,\n    )\n    (l2,) = ax.plot(\n        df.index.values,\n        df[\"p2_\" + pvar + \"_\" + how],\n        lw=2,\n        label=f\"{p2} Day\",\n        zorder=5,\n    )\n    (l3,) = ax.plot(\n        df.index.values,\n        df[\"p3_\" + pvar + \"_\" + how],\n        lw=2,\n        label=f\"{p3} Day\",\n        zorder=5,\n    )\n    fig.text(\n        0.5,\n        0.93,\n        f\"{ctx['_sname']}\\n\"\n        f\"Trailing {p1}, {p2}, {p3} Day Departures & \"\n        \"US Drought Monitor\",\n        ha=\"center\",\n        fontsize=14,\n    )\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%b\\n%Y\"))\n    ax.set_ylabel(\n        (\"%s [%s] %s\")\n        % (\n            PDICT.get(pvar),\n            UNITS[pvar] if how == \"diff\" else r\"$\\sigma$\",\n            PDICT2[how],\n        )\n    )\n    ax.grid(True)\n    leg = ax.legend(\n        handles=[l1, l2, l3], ncol=3, fontsize=12, loc=\"lower left\"\n    )\n    ax.add_artist(leg)\n    ax.text(\n        1,\n        -0.14,\n        f\"{sts:%-d %b %Y} to {ets:%-d %b %Y}\",\n        va=\"bottom\",\n        ha=\"right\",\n        fontsize=12,\n        transform=ax.transAxes,\n    )\n    if station[2:] != \"0000\":\n        underlay_usdm(\n            ax,\n            sts,\n            ets,\n            ctx[\"_nt\"].sts[station][\"lon\"],\n            ctx[\"_nt\"].sts[station][\"lat\"],\n        )\n    offset = timedelta(days=2)\n    ax.set_xlim(df.index.min() - offset, df.index.max() + offset)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p143.py",
    "content": "\"\"\"\nThe NWS issues Special Weather Statements (SPS) products that often cover\nevents that are just below severe limits and/or not covered by other\nheadline products.  Sometimes these SPS products have polygons.  This\napp provides a monthly total of the number of such SPS products.\n\"\"\"\n\nimport calendar\n\nimport numpy as np\nimport pandas as pd\nimport seaborn as sns\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom pyiem.reference import state_names\n\nPDICT = {\n    \"wfo\": \"Select by NWS Forecast Office\",\n    \"state\": \"Select by State\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"wfo\",\n            options=PDICT,\n            label=\"How to summarize the data?\",\n        ),\n        {\n            \"type\": \"state\",\n            \"name\": \"state\",\n            \"default\": \"IA\",\n            \"label\": \"Select State:\",\n        },\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO:\",\n            all=True,\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"Greens\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\"name\": \"All Offices\"}\n\n    params = {}\n    limiter = \" and wfo = :wfo \"\n    params[\"wfo\"] = station if len(station) == 3 else station[1:]\n    if station == \"_ALL\":\n        limiter = \"\"\n        ctx[\"_sname\"] = \"All Offices\"\n    geo_table = \"\"\n    title = f\"NWS {ctx['_sname']} :: Polygon Special Weather Statements\"\n    if ctx[\"opt\"] == \"state\":\n        geo_table = \", states t\"\n        limiter = (\n            \" and ST_Intersects(t.the_geom, s.geom) and t.state_abbr = :state \"\n        )\n        params[\"state\"] = ctx[\"state\"]\n        title = (\n            \"NWS Polygon Special Weather Statements intersecting \"\n            f\"{state_names[ctx['state']]} \"\n        )\n\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                SELECT\n                extract(year from issue)::int as yr,\n                extract(month from issue)::int as mo, count(*)\n                from sps s {geo_table} WHERE not ST_IsEmpty(geom) {limiter}\n                GROUP by yr, mo ORDER by yr, mo ASC\n        \"\"\",\n                limiter=limiter,\n                geo_table=geo_table,\n            ),\n            conn,\n            params=params,\n            index_col=None,\n        )\n\n    if df.empty:\n        raise NoDataFound(\"Sorry, no data found!\")\n\n    df2 = df.pivot(index=\"yr\", columns=\"mo\", values=\"count\").reindex(\n        index=range(df[\"yr\"].min(), df[\"yr\"].max() + 1),\n        columns=range(1, 13),\n    )\n\n    subtitle = \"Number of issued products by year and month.\"\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    sns.heatmap(\n        df2,\n        annot=True,\n        fmt=\".0f\",\n        linewidths=0.5,\n        ax=ax,\n        vmin=1,\n        cmap=ctx[\"cmap\"],\n        zorder=2,\n    )\n    # Add sums to RHS\n    sumdf = df2.sum(axis=\"columns\").fillna(0)\n    for year, count in sumdf.items():\n        ax.text(12, year, f\"{count:.0f}\")\n    # Add some horizontal lines\n    for i, year in enumerate(range(df[\"yr\"].min(), df[\"yr\"].max() + 1)):\n        ax.text(\n            12 + 0.7, i + 0.5, f\"{sumdf[year]:4.0f}\", ha=\"right\", va=\"center\"\n        )\n        if year % 5 != 0:\n            continue\n        ax.axhline(i, zorder=3, lw=1, color=\"gray\")\n    ax.text(1.0, -0.02, \"Total\", transform=ax.transAxes)\n    # Add some vertical lines\n    for i in range(1, 12):\n        ax.axvline(i, zorder=3, lw=1, color=\"gray\")\n    ax.set_xticks(np.arange(12) + 0.5)\n    ax.set_xticklabels(calendar.month_abbr[1:], rotation=0)\n    ax.set_ylabel(\"Year\")\n    ax.set_xlabel(\"Month\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p144.py",
    "content": "\"\"\"\nThis plot uses hourly 4 inch depth soil\ntemperature observations from the ISU Soil Moisture Network.  It first\nplots the first period each year that the soil temperature was at or\nabove a threshold degrees for at least X number of hours.  It then plots any\nsubsequent periods below 50 degrees for that year.\n\"\"\"\n\nimport pandas as pd\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.network import Table as NetworkTable  # This is needed.\nfrom pyiem.plot import figure_axes\nfrom pyiem.util import convert_value, utc\n\nXREF = {\n    \"AEEI4\": \"A130209\",\n    \"AHDI4\": \"A130209\",\n    \"BOOI4\": \"A130209\",\n    \"CAMI4\": \"A138019\",\n    \"CHAI4\": \"A131559\",\n    \"CIRI4\": \"A131329\",\n    \"CNAI4\": \"A131299\",\n    \"CRFI4\": \"A131909\",\n    \"DONI4\": \"A138019\",\n    \"FRUI4\": \"A135849\",\n    \"GREI4\": \"A134759\",\n    \"KNAI4\": \"A134309\",\n    \"NASI4\": \"A135879\",\n    \"NWLI4\": \"A138019\",\n    \"OKLI4\": \"A134759\",\n    \"SBEI4\": \"A138019\",\n    \"WMNI4\": \"A135849\",\n    \"WTPI4\": \"A135849\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"ISUSM\",\n            default=\"BOOI4\",\n            label=\"Select Station:\",\n        ),\n        {\n            \"type\": \"int\",\n            \"name\": \"threshold\",\n            \"default\": 50,\n            \"label\": \"Threshold Temperature (F)\",\n        },\n        dict(\n            type=\"int\",\n            name=\"hours1\",\n            default=48,\n            label=\"Stretch of Hours Above Threshold\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"hours2\",\n            default=24,\n            label=\"Stretch of Hours Below Threshold\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    threshold = ctx[\"threshold\"]\n    threshold_c = convert_value(threshold, \"degF\", \"degC\")\n    hours1 = ctx[\"hours1\"]\n    hours2 = ctx[\"hours2\"]\n    station = ctx[\"station\"]\n    oldstation = XREF.get(station, \"A130209\")\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df2 = pd.read_sql(\n            sql_helper(\"\"\"\n        with obs as (\n            select valid, t4_c_avg_qc,\n            lag(t4_c_avg_qc) OVER (ORDER by valid ASC) from sm_hourly\n            where station = :station),\n        agg1 as (\n            select valid,\n            case when t4_c_avg_qc > :t and lag < :t then 1\n                when t4_c_avg_qc < :t and lag > :t then -1\n                else 0 end as t from obs),\n        agg2 as (\n            SELECT valid, t from agg1 where t != 0),\n        agg3 as (\n            select valid, lead(valid) OVER (ORDER by valid ASC),\n            t from agg2),\n        agg4 as (\n            select extract(year from valid) as yr, valid, lead,\n            rank() OVER (PARTITION by extract(year from valid)\n            ORDER by valid ASC)\n            from agg3 where t = 1\n            and (lead - valid) >= ':hrs hours'::interval),\n        agg5 as (\n            select extract(year from valid) as yr, valid, lead\n            from agg3 where t = -1)\n\n        select f.yr, f.valid as fup, f.lead as flead, d.valid as dup,\n        d.lead as dlead from agg4 f JOIN agg5 d ON (f.yr = d.yr)\n        where f.rank = 1 and d.valid > f.valid\n        ORDER by fup ASC\n        \"\"\"),\n            conn,\n            params={\n                \"station\": station,\n                \"t\": threshold_c,\n                \"hrs\": hours1,\n            },\n            index_col=None,\n        )\n        if df2.empty:\n            raise NoDataFound(\"No Data Found\")\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        with obs as (\n            select valid, c300, lag(c300) OVER (ORDER by valid ASC) from hourly\n            where station = :oldstation),\n        agg1 as (\n            select valid,\n            case when c300 > :thres and lag < :thres then 1\n                when c300 < :thres and lag > :thres then -1\n                else 0 end as t from obs),\n        agg2 as (\n            SELECT valid, t from agg1 where t != 0),\n        agg3 as (\n            select valid, lead(valid) OVER (ORDER by valid ASC),\n            t from agg2),\n        agg4 as (\n            select extract(year from valid) as yr, valid, lead,\n            rank() OVER (PARTITION by extract(year from valid)\n            ORDER by valid ASC)\n            from agg3 where t = 1\n            and (lead - valid) >= ':hours hours'::interval),\n        agg5 as (\n            select extract(year from valid) as yr, valid, lead\n            from agg3 where t = -1)\n\n        select f.yr, f.valid as fup, f.lead as flead, d.valid as dup,\n        d.lead as dlead from agg4 f JOIN agg5 d ON (f.yr = d.yr)\n        where f.rank = 1 and d.valid > f.valid\n        ORDER by fup ASC\n        \"\"\"),\n            conn,\n            params={\n                \"oldstation\": oldstation,\n                \"thres\": threshold,\n                \"hours\": hours1,\n            },\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found for legacy station\")\n\n    nt = NetworkTable(\"ISUSM\")\n    nt2 = NetworkTable(\"ISUAG\", only_online=False)\n    ab = nt.sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    title = (\n        f\"[{station}] {nt.sts[station]['name']} 4 Inch Soil Temps\\n\"\n        f\"[{oldstation}] {nt2.sts[oldstation]['name']} used for pre-{ab.year} \"\n        \"dates\"\n    )\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n\n    d2000 = utc(2000, 1, 1, 6)\n    for d in [df, df2]:\n        for _, row in d.iterrows():\n            if row[\"dlead\"] is None:\n                continue\n            f0 = (row[\"fup\"].replace(year=2000) - d2000).total_seconds()\n            f1 = (row[\"flead\"].replace(year=2000) - d2000).total_seconds()\n            d0 = (row[\"dup\"].replace(year=2000) - d2000).total_seconds()\n            d1 = (row[\"dlead\"].replace(year=2000) - d2000).total_seconds()\n            if d1 < d0:\n                continue\n            ax.barh(\n                row[\"fup\"].year,\n                (f1 - f0),\n                left=f0,\n                facecolor=\"r\",\n                align=\"center\",\n                edgecolor=\"r\",\n            )\n            color = \"lightblue\" if (d1 - d0) < (hours2 * 3600) else \"b\"\n            ax.barh(\n                row[\"fup\"].year,\n                (d1 - d0),\n                left=d0,\n                facecolor=color,\n                align=\"center\",\n                edgecolor=color,\n            )\n\n    xticks = []\n    xticklabels = []\n    for i in range(1, 13):\n        d2 = d2000.replace(month=i)\n        xticks.append((d2 - d2000).total_seconds())\n        xticklabels.append(d2.strftime(\"%-d %b\"))\n    ax.set_xticks(xticks)\n    ax.set_xticklabels(xticklabels)\n    ax.set_xlim(xticks[2], xticks[6])\n    ax.grid(True)\n\n    ax.set_ylim(df[\"yr\"].min() - 1, df2[\"yr\"].max() + 1)\n\n    p0 = Rectangle((0, 0), 1, 1, fc=\"r\")\n    p1 = Rectangle((0, 0), 1, 1, fc=\"lightblue\")\n    p2 = Rectangle((0, 0), 1, 1, fc=\"b\")\n    ax.legend(\n        (p0, p1, p2),\n        (\n            f\"First Period Above {threshold} for {hours1}+ Hours\",\n            f\"Below {threshold} for 1+ Hours\",\n            f\"Below {threshold} for {hours2}+ Hours\",\n        ),\n        ncol=2,\n        fontsize=11,\n        loc=(0.0, -0.2),\n    )\n    box = ax.get_position()\n    ax.set_position(\n        [box.x0, box.y0 + box.height * 0.1, box.width, box.height * 0.9]\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p145.py",
    "content": "\"\"\"\nThis chart presents daily timeseries of\nsoil temperature or moisture.  The dataset contains merged information\nfrom the legacy Iowa State Ag Climate Network and present-day Iowa State\nSoil Moisture Network.\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.network import Table as NetworkTable  # This is needed.\nfrom pyiem.plot import figure_axes\n\nVARS = {\n    \"tsoil\": \"4 inch Soil Temperature\",\n    \"vwc12\": \"12 inch Volumetric Water Content\",\n    \"vwc24\": \"24 inch Volumetric Water Content\",\n    \"vwc50\": \"50 inch Volumetric Water Content\",\n}\nXREF = {\n    \"AEEI4\": \"A130209\",\n    \"BOOI4\": \"A130209\",\n    \"CAMI4\": \"A138019\",\n    \"CHAI4\": \"A131559\",\n    \"CIRI4\": \"A131329\",\n    \"CNAI4\": \"A131299\",\n    \"CRFI4\": \"A131909\",\n    \"DONI4\": \"A138019\",\n    \"FRUI4\": \"A135849\",\n    \"GREI4\": \"A134759\",\n    \"KNAI4\": \"A134309\",\n    \"NASI4\": \"A135879\",\n    \"NWLI4\": \"A138019\",\n    \"OKLI4\": \"A134759\",\n    \"SBEI4\": \"A138019\",\n    \"WMNI4\": \"A135849\",\n    \"WTPI4\": \"A135849\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"ISUSM\",\n            default=\"BOOI4\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"select\",\n            options=VARS,\n            default=\"tsoil\",\n            name=\"var\",\n            label=\"Which variable to plot:\",\n        ),\n        dict(\n            type=\"year\",\n            default=today.year,\n            min=1988,\n            name=\"year\",\n            label=\"Year to Highlight\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    nt = NetworkTable(\"ISUSM\", only_online=False)\n    oldnt = NetworkTable(\"ISUAG\", only_online=False)\n    station = ctx[\"station\"]\n    highlightyear = ctx[\"year\"]\n    varname = ctx[\"var\"]\n    oldstation = XREF.get(station, \"A130209\")\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH legacy as (\n            SELECT valid, c30 as tsoil, 'L' as dtype\n            from daily where station = :oldstation\n            and c30 > -20 and c30 < 40 ORDER by valid ASC\n        ), present as (\n            SELECT valid, t4_c_avg_qc * 9./5. + 32. as tsoil,\n            'C' as dtype, vwc12_qc as vwc12, vwc24_qc as vwc24,\n            vwc50_qc as vwc50\n            from sm_daily\n            where station = :station and t4_c_avg_qc > -20 and t4_c_avg_qc < 40\n            ORDER by valid ASC\n        )\n        SELECT valid, tsoil, dtype, null as vwc12, null as vwc24, null as vwc50\n        from legacy UNION ALL select * from present\n        \"\"\"),\n            conn,\n            params={\"station\": station, \"oldstation\": oldstation},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df = df[df[varname].notnull()]\n    if df.empty:\n        raise NoDataFound(\"No Valid Data Found.\")\n    df[\"valid\"] = pd.to_datetime(df[\"valid\"])\n    df[\"doy\"] = pd.to_numeric(df[\"valid\"].dt.strftime(\"%j\"))\n    df[\"year\"] = df[\"valid\"].dt.year\n\n    title = (\n        f\"ISU AgClimate [{station}] {nt.sts[station]['name']} \"\n        f\"[{df['valid'].min().year}-]\\n\"\n        f\"Site {VARS[varname]} Yearly Timeseries\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n\n    gdf = df[[\"doy\", varname]].groupby(\"doy\").describe().reset_index()\n    # vertical bars for range\n    ax.bar(\n        gdf[\"doy\"].values,\n        gdf[(varname, \"max\")] - gdf[(varname, \"min\")],\n        bottom=gdf[(varname, \"min\")],\n        color=\"tan\",\n        label=\"Range\",\n        width=1.05,\n    )\n    # bands for 25-75% ptile\n    ax.bar(\n        gdf[\"doy\"].values,\n        gdf[(varname, \"75%\")] - gdf[(varname, \"25%\")],\n        bottom=gdf[(varname, \"25%\")],\n        color=\"lightgreen\",\n        label=\"25-75 Percentile\",\n        width=1.05,\n    )\n    # Mean\n    ax.plot(\n        gdf[\"doy\"].values,\n        gdf[(varname, \"mean\")].values,\n        color=\"k\",\n        label=\"Average\",\n    )\n\n    df2 = df[df[\"year\"] == highlightyear]\n    if not df2.empty:\n        ax.plot(\n            df2[\"doy\"].values,\n            df2[varname].values,\n            color=\"red\",\n            zorder=5,\n            label=f\"{highlightyear}\",\n            lw=2.0,\n        )\n\n    ax.grid(True)\n    if varname == \"tsoil\":\n        ax.set_ylabel(\"Daily Avg Temp [°F]\")\n        ax.set_xlabel(\n            \"* pre-2014 data provided by \"\n            f\"[{oldstation}] {oldnt.sts[oldstation]['name']}\"\n        )\n    else:\n        ax.set_ylabel(\"Daily Avg Volumetric Water Content [kg/kg]\")\n    ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_xlim(0, 367)\n    if varname != \"tsoil\":\n        ax.set_ylim(0, 0.6)\n    ax.axhline(32, lw=2, color=\"purple\", zorder=4)\n    ax.legend(loc=\"best\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p146.py",
    "content": "\"\"\"\nThis chart displays the frequency of having\nmeasurable precipitation reported by an ASOS site and the air temperature\nthat was reported at the same time.  This chart makes an assumption\nabout the two values being coincident, whereas in actuality they may not\nhave been.\n\"\"\"\n\nimport calendar\nfrom datetime import date, datetime\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes, get_cmap\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"jet\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            SELECT extract(week from valid) as week, tmpf from\n            alldata WHERE station = %s and p01i > 0.009 and tmpf is not null\n            and report_type = 3\n        \"\"\",\n            conn,\n            params=(station,),\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found.\")\n\n    sts = datetime(2012, 1, 1)\n    xticks = []\n    for i in range(1, 13):\n        ts = sts.replace(month=i)\n        xticks.append(int(ts.strftime(\"%j\")))\n\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    title = (\n        f\"{ctx['_sname']} \"\n        f\"({ab.year}-{date.today().year})\\n\"\n        \"Temperature Frequency During Precipitation by Week\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n\n    bins = np.arange(df[\"tmpf\"].min() - 5, df[\"tmpf\"].max() + 5, 2)\n    H, xedges, yedges = np.histogram2d(\n        df[\"week\"].to_numpy(), df[\"tmpf\"].to_numpy(), [range(54), bins]\n    )\n    rows = []\n    for i, x in enumerate(xedges[:-1]):\n        for j, y in enumerate(yedges[:-1]):\n            rows.append(dict(tmpf=y, week=x, count=H[i, j]))\n    resdf = pd.DataFrame(rows)\n\n    years = date.today().year - ab.year\n    H = np.ma.array(H) / float(years)\n    H.mask = np.ma.where(H < 0.1, True, False)\n    res = ax.pcolormesh(\n        (xedges - 1) * 7,\n        yedges,\n        H.transpose(),\n        cmap=get_cmap(ctx[\"cmap\"]),\n    )\n    fig.colorbar(res, label=\"Hours per week per year\")\n    ax.set_xticks(xticks)\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_xlim(0, 366)\n\n    y = []\n    for i in range(np.shape(H)[0]):\n        y.append(np.ma.sum(H[i, :] * (bins[:-1] + 0.5)) / np.ma.sum(H[i, :]))\n\n    if np.nanmin(y) < 40:\n        ax.axhline(32, ls=\"-.\", color=\"r\", lw=2)\n        ax.text(180, 32, \"32\", ha=\"center\", va=\"bottom\", fontsize=14)\n    ax.plot(xedges[:-1] * 7, y, zorder=3, lw=3, color=\"w\")\n    ax.plot(xedges[:-1] * 7, y, zorder=3, lw=1, color=\"k\", label=\"Average\")\n    ax.legend(loc=2)\n\n    ax.grid(True)\n    ax.set_ylabel(\"Temperature [°F]\")\n\n    return fig, resdf\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p147.py",
    "content": "\"\"\"\nThis plot presents the daily frequency of the\nfirst station having a higher value than the second station.\n\"\"\"\n\nimport calendar\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.plot import figure_axes\n\nPDICT = {\n    \"precip\": \"Precipitation\",\n    \"avgt\": \"Average Temperature\",\n    \"high\": \"High Temperature\",\n    \"low\": \"Low Temperature\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"station\",\n            name=\"station1\",\n            default=\"IATAME\",\n            label=\"Select Station #1:\",\n            network=\"IACLIMATE\",\n        ),\n        dict(\n            type=\"station\",\n            name=\"station2\",\n            default=\"IATDSM\",\n            label=\"Select Station #2:\",\n            network=\"IACLIMATE\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"pvar\",\n            default=\"high\",\n            options=PDICT,\n            label=\"Which variable to plot?\",\n        ),\n        dict(\n            type=\"float\",\n            name=\"mag\",\n            default=\"1\",\n            label=\"By how much warmer [F] or wetter [inch]\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station1 = ctx[\"station1\"]\n    station2 = ctx[\"station2\"]\n    mag = ctx[\"mag\"]\n    pvar = ctx[\"pvar\"]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH obs1 as (\n            SELECT day, high, low, precip, (high+low)/2. as avgt from\n            alldata WHERE station = :station1),\n        obs2 as (\n            SELECT day, high, low, precip, (high+low)/2. as avgt from\n            alldata WHERE station = :station2)\n\n        SELECT extract(doy from o.day) as doy, count(*),\n        sum(case when o.high >= (t.high::numeric + :mag) then 1 else 0 end)\n            as high_hits,\n        sum(case when o.low >= (t.low::numeric + :mag) then 1 else 0 end)\n            as low_hits,\n        sum(case when o.precip >= (t.precip + :mag) then 1 else 0 end)\n        as precip_hits,\n        sum(case when o.avgt >= (t.avgt::numeric + :mag) then 1 else 0 end)\n            as avgt_hits\n        from obs1 o JOIN obs2 t on (o.day = t.day) GROUP by doy\n        ORDER by doy ASC\n        \"\"\"),\n            conn,\n            params={\"station1\": station1, \"station2\": station2, \"mag\": mag},\n            index_col=\"doy\",\n        )\n    for _v in [\"high\", \"low\", \"avgt\", \"precip\"]:\n        df[f\"{_v}_freq[%]\"] = df[f\"{_v}_hits\"] / df[\"count\"] * 100.0\n\n    (fig, ax) = figure_axes(apctx=ctx)\n\n    ax.bar(df.index.values, df[pvar + \"_freq[%]\"], fc=\"r\", ec=\"r\")\n    ax.axhline(df[pvar + \"_freq[%]\"].mean())\n    ax.grid(True)\n    ax.set_ylabel(\n        (\"Percentage [%%], Ave: %.1f%%\") % (df[pvar + \"_freq[%]\"].mean(),)\n    )\n    v = int(mag) if pvar != \"precip\" else round(mag, 2)\n    units = \" inch\" if pvar == \"precip\" else \"°F\"\n    ax.set_title(\n        (\"%s [%s] Daily %s\\n%s+%s %s Than %s [%s]\")\n        % (\n            ctx[\"_nt1\"].sts[station1][\"name\"],\n            station1,\n            PDICT[pvar],\n            v,\n            units,\n            \"Warmer\" if pvar != \"precip\" else \"Wetter\",\n            ctx[\"_nt2\"].sts[station2][\"name\"],\n            station2,\n        )\n    )\n    ax.set_xlim(0, 366)\n    ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p148.py",
    "content": "\"\"\"\nThis plot presents a daily observation for a site\nand year on a given date / holiday date each year.  A large caveat to this\nchart is that much of the long term daily climate data is for a 24 hour\nperiod ending at around 7 AM.  This chart will also not plot for dates\nprior to the holiday's inception.\n\"\"\"\n\nimport calendar\nfrom datetime import date, datetime, timedelta\n\nimport pandas as pd\nfrom dateutil.easter import easter as get_easter\nfrom matplotlib.patches import Patch\nfrom matplotlib.ticker import MaxNLocator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\nfrom iemweb.autoplot.barchart import barchart_with_top10\n\nPDICT = {\n    \"easter\": \"Easter (Western Church Dates)\",\n    \"labor\": \"Labor Day\",\n    \"mlk\": \"Martin Luther King Day\",\n    \"memorial\": \"Memorial Day\",\n    \"mother\": \"Mothers Day\",\n    \"exact\": \"Same Date each Year\",\n    \"thanksgiving\": \"Thanksgiving\",\n}\nPDICT2 = {\n    \"high\": \"High Temperature [F]\",\n    \"low\": \"Low Temperature [F]\",\n    \"precip\": \"Precipitation [inch]\",\n    \"snow\": \"Snowfall [inch]\",\n    \"snowd\": \"Snow Depth [inch]\",\n}\nVARFORMAT = {\n    \"high\": \"%d\",\n    \"low\": \"%d\",\n    \"precip\": \"%.2f\",\n    \"snow\": \"%.1f\",\n    \"snowd\": \"%.1f\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"date\",\n            default=\"memorial\",\n            options=PDICT,\n            label=\"Which date/holiday to plot?\",\n        ),\n        dict(\n            type=\"sday\",\n            name=\"thedate\",\n            default=\"0101\",\n            label=\"Same date each year to plot (when selected above):\",\n        ),\n        dict(\n            type=\"int\",\n            optional=True,\n            name=\"offset\",\n            default=1,\n            label=\"Number of offset days from chosen date (minus is before)\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"high\",\n            label=\"Which variable to plot?\",\n            options=PDICT2,\n        ),\n        {\n            \"type\": \"year\",\n            \"default\": 1800,\n            \"min\": 1800,\n            \"name\": \"syear\",\n            \"label\": \"Start year of plot (if data exists):\",\n        },\n    ]\n    return desc\n\n\ndef mlk():\n    \"\"\"MLK Day\"\"\"\n    days = []\n    for year in range(1986, date.today().year + 1):\n        jan1 = date(year, 1, 1)\n        if jan1.weekday() == 0:  # If Jan 1 is a Monday\n            first_monday = jan1\n        else:\n            # Calculate the number of days until the next Monday\n            days_until_monday = 7 - jan1.weekday()\n            first_monday = jan1 + timedelta(days=days_until_monday)\n        # Add 14 days to the first Monday to get the third Monday\n        third_monday = first_monday + timedelta(days=14)\n        days.append(third_monday)\n    return days\n\n\ndef mothers_day():\n    \"\"\"Mother's Day\"\"\"\n    days = []\n    for year in range(1914, date.today().year + 1):\n        may1 = date(year, 5, 1)\n        days.append(date(year, 5, (14 - may1.weekday())))\n    return days\n\n\ndef easter():\n    \"\"\"Compute easter\"\"\"\n    return [get_easter(year) for year in range(1893, date.today().year + 1)]\n\n\ndef thanksgiving():\n    \"\"\"Thanksgiving please\"\"\"\n    days = []\n    # monday is 0\n    offsets = [3, 2, 1, 0, 6, 5, 4]\n    for year in range(1893, date.today().year + 1):\n        nov1 = datetime(year, 11, 1)\n        r1 = nov1 + timedelta(days=offsets[nov1.weekday()])\n        days.append(r1 + timedelta(days=21))\n    return days\n\n\ndef labor_days():\n    \"\"\"Labor Day Please\"\"\"\n    days = []\n    for year in range(1893, date.today().year + 1):\n        mycal = calendar.Calendar(0)\n        cal = mycal.monthdatescalendar(year, 9)\n        if cal[0][0].month == 9:\n            days.append(cal[0][0])\n        else:\n            days.append(cal[1][0])\n    return days\n\n\ndef memorial_days():\n    \"\"\"Memorial Day Please\"\"\"\n    days = []\n    for year in range(1971, date.today().year + 1):\n        mycal = calendar.Calendar(0)\n        cal = mycal.monthdatescalendar(year, 5)\n        if cal[-1][0].month == 5:\n            days.append(cal[-1][0])\n        else:\n            days.append(cal[-2][0])\n    return days\n\n\ndef add_context(ctx):\n    \"\"\"Do the dirty work\"\"\"\n    station = ctx[\"station\"]\n    ctx[\"varname\"] = ctx[\"var\"]\n    thedate = ctx[\"thedate\"]\n    dt = ctx[\"date\"]\n    offset = ctx.get(\"offset\")\n    dtoff = None\n    if offset is not None and -367 < offset < 367:\n        dtoff = timedelta(days=offset)\n        thedate = thedate + dtoff\n\n    if dt == \"exact\":\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            ctx[\"df\"] = pd.read_sql(\n                sql_helper(\"\"\"\n    SELECT year, high, low, day, precip, snow, snowd, temp_hour, precip_hour\n    from alldata WHERE station = :station and sday = :sday ORDER by year ASC\n                \"\"\"),\n                conn,\n                params={\"station\": station, \"sday\": thedate.strftime(\"%m%d\")},\n                index_col=\"year\",\n            )\n        ctx[\"subtitle\"] = thedate.strftime(\"%B %-d\")\n    else:\n        if dt == \"memorial\":\n            days = memorial_days()\n        elif dt == \"thanksgiving\":\n            days = thanksgiving()\n        elif dt == \"easter\":\n            days = easter()\n        elif dt == \"mother\":\n            days = mothers_day()\n        elif dt == \"mlk\":\n            days = mlk()\n        else:\n            days = labor_days()\n        ctx[\"subtitle\"] = PDICT[dt]\n        if dtoff:\n            ctx[\"subtitle\"] = (\n                f\"{abs(offset)} Days {'before' if offset < 0 else 'after'} \"\n                f\"{PDICT[dt]}\"\n            )\n            days = [day + dtoff for day in days]\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            ctx[\"df\"] = pd.read_sql(\n                sql_helper(\"\"\"\n    SELECT year, high, day, low, precip, snow, snowd, temp_hour, precip_hour\n    from alldata\n    WHERE station = :station and day = ANY(:days) ORDER by year ASC\n                \"\"\"),\n                conn,\n                params={\n                    \"station\": station,\n                    \"days\": days,\n                },\n                index_col=\"year\",\n            )\n    if ctx[\"df\"].empty:\n        raise NoDataFound(\"No Data Found.\")\n    ctx[\"title\"] = f\"{ctx['_sname']} :: Daily {PDICT2[ctx['varname']]}\"\n\n\ndef get_highcharts(ctx: dict) -> str:\n    \"\"\"Generate javascript (Highcharts) variant\"\"\"\n    add_context(ctx)\n    ctx[\"df\"] = ctx[\"df\"].reset_index()\n    v2 = ctx[\"df\"][[\"year\", ctx[\"varname\"]]].to_json(orient=\"values\")\n    avgval = ctx[\"df\"][ctx[\"varname\"]].mean()\n    avgvallbl = f\"{avgval:.2f}\"\n    series = f\"\"\"{{\n        name: '{ctx[\"varname\"]}',\n        data: {v2},\n        color: '#0000ff'\n    }}\n    \"\"\"\n\n    containername = ctx[\"_e\"]\n\n    return f\"\"\"\n    Highcharts.chart('{containername}', {{\n        chart: {{\n            type: 'column',\n            zoomType: 'x'\n        }},\n        yAxis: {{\n            title: {{text: '{PDICT2[ctx[\"varname\"]]}'}},\n            plotLines: [{{\n                value: {avgval},\n                color: 'green',\n                dashStyle: 'shortdash',\n                width: 2,\n                zIndex: 5,\n                label: {{\n                    text: 'Average {avgvallbl}'\n                }}\n            }}]\n        }},\n        title: {{text: '{ctx[\"title\"]}'}},\n        subtitle: {{text: 'On {ctx[\"subtitle\"]}'}},\n        series: [{series}]\n    }});\n    \"\"\"\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    add_context(ctx)\n\n    fig = figure(\n        title=ctx[\"title\"], subtitle=f\"on {ctx['subtitle']}\", apctx=ctx\n    )\n    ax = barchart_with_top10(\n        fig,\n        ctx[\"df\"],\n        ctx[\"varname\"],\n        labelformat=VARFORMAT[ctx[\"varname\"]],\n    )\n    mean = ctx[\"df\"][ctx[\"varname\"]].mean()\n    ax.axhline(mean)\n    ax.text(\n        ctx[\"df\"].index.values[-1] + 1,\n        mean,\n        f\"{mean:.2f}\",\n        ha=\"left\",\n        va=\"center\",\n    )\n    ax.grid(True)\n    xmin = max(ctx[\"syear\"], ctx[\"df\"].index.values.min() - 1)\n    ax.set_xlim(xmin, ctx[\"df\"].index.values.max() + 1)\n    ax.set_ylabel(PDICT2[ctx[\"varname\"]])\n    if ctx[\"varname\"] not in [\"precip\", \"snow\", \"snowd\"]:\n        ax.set_ylim(\n            ctx[\"df\"][ctx[\"varname\"]].min() - 5,\n            ctx[\"df\"][ctx[\"varname\"]].max() + 5,\n        )\n\n    # Denote contiguous years that have morning observations\n    hrcol = \"temp_hour\" if ctx[\"varname\"] in [\"high\", \"low\"] else \"precip_hour\"\n    morning_obs_years = ctx[\"df\"][ctx[\"df\"][hrcol].isin(range(2, 12))].index\n\n    # Group contiguous years\n    contiguous_groups = []\n    current_group = []\n\n    for year in morning_obs_years:\n        if not current_group or year == current_group[-1] + 1:\n            current_group.append(year)\n        else:\n            contiguous_groups.append(current_group)\n            current_group = [year]\n\n    if current_group:\n        contiguous_groups.append(current_group)\n\n    # Plot contiguous year spans\n    for group in contiguous_groups:\n        ax.axvspan(\n            group[0] - 0.49,\n            group[-1] + 0.49,\n            color=\"#0000ff\",\n            alpha=0.2,\n            zorder=2,\n        )\n    if contiguous_groups:\n        legend_elements = [\n            Patch(\n                facecolor=\"#0000ff\",\n                edgecolor=\"none\",\n                alpha=0.2,\n                label=\"Morning Observations\",\n            )\n        ]\n        ax.legend(handles=legend_elements, loc=\"upper left\")\n\n    if ctx[\"varname\"] == \"snowd\":\n        ax.yaxis.set_major_locator(MaxNLocator(integer=True))\n        nonnull = ctx[\"df\"][ctx[\"df\"][ctx[\"varname\"]].notnull()]\n        if nonnull.empty:\n            raise NoDataFound(\"No Snowdepth data for location.\")\n        oneinch = len(nonnull[nonnull[\"snowd\"] > 1])\n        percent = oneinch / len(nonnull) * 100.0\n        ax.text(\n            0.03,\n            0.98,\n            (\n                f\"{oneinch}/{len(nonnull)} ({percent:.1f}%) years \"\n                \"with snow depth >= 1 inch\"\n            ),\n            transform=ax.transAxes,\n            va=\"top\",\n            ha=\"left\",\n            bbox=dict(facecolor=\"white\", edgecolor=\"white\"),\n        )\n    return fig, ctx[\"df\"]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p149.py",
    "content": "\"\"\"\nThis plot presents a time series of Aridity Index.\nThis index computes the standardized high temperature departure subtracted\nby the standardized precipitation departure.  For the purposes of this\nplot, this index is computed daily over a trailing period of days of your\nchoice.  The climatology is based on the present period of record\nstatistics.  You can optionally plot this index for two other period of\ndays of your choice.  Entering '0' will disable additional lines appearing\non the plot.\n\n<br />You can also optionally generate this plot for the same period of\ndays over different years of your choice.  When plotted over multiple\nyears, only \"Number of Days #1' is considered.  An additional year is\nplotted representing the best root mean squared error fit to the selected\nyear's data.\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport matplotlib.dates as mdates\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest, NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    today = date.today()\n    sts = today - timedelta(days=180)\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(type=\"int\", name=\"days\", default=91, label=\"Number of Days #1\"),\n        dict(\n            type=\"int\",\n            name=\"days2\",\n            default=0,\n            label=\"Number of Days #2 (0 disables)\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"days3\",\n            default=0,\n            label=\"Number of Days #3 (0 disables)\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year2\",\n            default=2004,\n            optional=True,\n            label=\"Compare with year (optional):\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year3\",\n            default=2012,\n            optional=True,\n            label=\"Compare with year (optional)\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=sts.strftime(\"%Y/%m/%d\"),\n            min=\"1893/01/01\",\n            label=\"Start Date of Plot\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"edate\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            min=\"1893/01/01\",\n            label=\"End Date of Plot\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    days = ctx[\"days\"]\n    if days < 1:\n        raise IncompleteWebRequest(\"Days argument needs to be positive.\")\n    days2 = ctx[\"days2\"]\n    _days2 = days2 if days2 > 0 else 1\n    days3 = ctx[\"days3\"]\n    _days3 = days3 if days3 > 0 else 1\n    sts = ctx[\"sdate\"]\n    ets = ctx[\"edate\"]\n    if ets < sts:\n        sts, ets = ets, sts\n    yrrange = ets.year - sts.year\n    year2 = ctx.get(\"year2\")  # could be null!\n    year3 = ctx.get(\"year3\")  # could be null!\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH agg as (\n            SELECT o.day, o.sday,\n            avg(high) OVER (ORDER by day ASC ROWS :d1 PRECEDING) as avgt,\n            sum(precip) OVER (ORDER by day ASC ROWS :d1 PRECEDING) as sump,\n            count(*) OVER (ORDER by day ASC ROWS :d1 PRECEDING) as cnt,\n            avg(high) OVER (ORDER by day ASC ROWS :d2 PRECEDING) as avgt2,\n            sum(precip) OVER (ORDER by day ASC ROWS :d2 PRECEDING) as sump2,\n            count(*) OVER (ORDER by day ASC ROWS :d2 PRECEDING) as cnt2,\n            avg(high) OVER (ORDER by day ASC ROWS :d3 PRECEDING) as avgt3,\n            sum(precip) OVER (ORDER by day ASC ROWS :d3 PRECEDING) as sump3,\n            count(*) OVER (ORDER by day ASC ROWS :d3 PRECEDING) as cnt3\n            from alldata o WHERE station = :station),\n        agg2 as (\n            SELECT sday,\n            avg(avgt) as avg_avgt, stddev(avgt) as std_avgt,\n            avg(sump) as avg_sump, stddev(sump) as std_sump,\n            avg(avgt2) as avg_avgt2, stddev(avgt2) as std_avgt2,\n            avg(sump2) as avg_sump2, stddev(sump2) as std_sump2,\n            avg(avgt3) as avg_avgt3, stddev(avgt3) as std_avgt3,\n            avg(sump3) as avg_sump3, stddev(sump3) as std_sump3\n            from agg WHERE cnt = :cnt GROUP by sday)\n\n        SELECT day,\n        (a.avgt - b.avg_avgt) / b.std_avgt as t,\n        (a.sump - b.avg_sump) / greatest(b.std_sump, 0.01) as p,\n        (a.avgt2 - b.avg_avgt2) / b.std_avgt2 as t2,\n        (a.sump2 - b.avg_sump2) / greatest(b.std_sump2, 0.01) as p2,\n        (a.avgt3 - b.avg_avgt3) / b.std_avgt3 as t3,\n        (a.sump3 - b.avg_sump3) / greatest(b.std_sump3, 0.01) as p3\n        from agg a JOIN agg2 b on (a.sday = b.sday)\n        ORDER by day ASC\n        \"\"\"),\n            conn,\n            params={\n                \"d1\": days - 1,\n                \"d2\": _days2 - 1,\n                \"d3\": _days3 - 1,\n                \"station\": station,\n                \"cnt\": days,\n            },\n            index_col=\"day\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df[\"aridity\"] = df[\"t\"] - df[\"p\"]\n    df[\"aridity2\"] = df[\"t2\"] - df[\"p2\"]\n    df[\"aridity3\"] = df[\"t3\"] - df[\"p3\"]\n    title = \"\" if year2 is None else f\"{days} Day\"\n    title = (\n        f\"{ctx['_sname']} {title} Aridity Index\\n\"\n        \"Std. High Temp Departure minus Std. Precip Departure\"\n    )\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n\n    if year2 is None:\n        df2 = df.loc[sts:ets]\n        ax.plot(\n            df2.index.values,\n            df2[\"aridity\"],\n            color=\"r\",\n            lw=2,\n            label=f\"{days} days\",\n        )\n        maxval = df2[\"aridity\"].abs().max() + 0.25\n        if days2 > 0:\n            ax.plot(\n                df2.index.values,\n                df2[\"aridity2\"],\n                color=\"b\",\n                lw=2,\n                label=f\"{days2} days\",\n            )\n            maxval = max([maxval, df2[\"aridity2\"].abs().max() + 0.25])\n        if days3 > 0:\n            ax.plot(\n                df2.index.values,\n                df2[\"aridity3\"],\n                color=\"g\",\n                lw=2,\n                label=f\"{days3} days\",\n            )\n            maxval = max([maxval, df2[\"aridity3\"].abs().max() + 0.25])\n        ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%-d %b\\n%Y\"))\n    else:\n        df2 = df.loc[sts:ets]\n        ax.plot(\n            np.arange(len(df2.index)),\n            df2[\"aridity\"],\n            color=\"r\",\n            lw=2,\n            label=f\"{ets.year}\",\n        )\n        maxval = df2[\"aridity\"].abs().max() + 0.25\n        if year2 is not None:\n            sts2 = sts.replace(year=year2 - yrrange)\n            ets2 = ets.replace(year=year2)\n            xticks = []\n            xticklabels = []\n            now = sts2\n            i = 0\n            while now < ets2:\n                if now.day == 1:\n                    xticks.append(i)\n                    xticklabels.append(now.strftime(\"%b\"))\n                i += 1\n                now += timedelta(days=1)\n            ax.set_xticks(xticks)\n            ax.set_xticklabels(xticklabels)\n            df2 = df.loc[sts2:ets2]\n            ax.plot(\n                np.arange(len(df2.index)),\n                df2[\"aridity\"],\n                color=\"b\",\n                lw=2,\n                label=f\"{year2}\",\n            )\n            maxval = max([maxval, df2[\"aridity\"].abs().max() + 0.25])\n        if year3 is not None:\n            sts2 = sts.replace(year=year3 - yrrange)\n            ets2 = ets.replace(year=year3)\n            df2 = df.loc[sts2:ets2]\n            ax.plot(\n                np.arange(len(df2.index)),\n                df2[\"aridity\"],\n                color=\"g\",\n                lw=2,\n                label=f\"{year3}\",\n            )\n            maxval = max([maxval, df2[\"aridity\"].abs().max() + 0.25])\n\n        # Compute year of best fit\n        aridity = df.loc[sts:ets, \"aridity\"].values\n        mae = 100\n        useyear = None\n        for _year in range(1951, date.today().year + 1):\n            if _year == ets.year:\n                continue\n            sts2 = sts.replace(year=_year - yrrange)\n            ets2 = ets.replace(year=_year)\n            aridity2 = df.loc[sts2:ets2, \"aridity\"].values\n            sz = min([len(aridity2), len(aridity)])\n            error = (np.mean((aridity2[:sz] - aridity[:sz]) ** 2)) ** 0.5\n            if error < mae:\n                mae = error\n                useyear = _year\n        if useyear:\n            sts2 = sts.replace(year=useyear - yrrange)\n            ets2 = ets.replace(year=useyear)\n            df2 = df.loc[sts2:ets2]\n            ax.plot(\n                np.arange(len(df2.index)),\n                df2[\"aridity\"],\n                color=\"k\",\n                lw=2,\n                label=f\"{useyear} ({ets.year} best match)\",\n            )\n            maxval = max([maxval, df2[\"aridity\"].abs().max() + 0.25])\n        ax.set_xlabel(f\"{sts:%-d %b} to {ets:%-d %b}\")\n    ax.grid(True)\n\n    if not pd.isna(maxval):\n        ax.set_ylim(0 - maxval, maxval)\n    ax.set_ylabel(\"Aridity Index\")\n    ax.text(\n        1.01,\n        0.75,\n        \"<-- More Water Stress\",\n        ha=\"left\",\n        va=\"center\",\n        transform=ax.transAxes,\n        rotation=-90,\n    )\n    ax.text(\n        1.01,\n        0.25,\n        \"Less Water Stress -->\",\n        ha=\"left\",\n        va=\"center\",\n        transform=ax.transAxes,\n        rotation=-90,\n    )\n    ax.legend(ncol=4, loc=\"best\", fontsize=10)\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p150.py",
    "content": "\"\"\"\nThis plot presents percentiles of observations from\na given sounding profile against the long term record for the site. These\npercentiles are computed against all other soundings for the valid hour of\nthe profile of interest.  For example, a 00 UTC sounding is only compared\nagainst other 00 UTC soundings for the given month or for the period of\nrecord.\n\n<br /><br />The 'Select Station' option provides some 'virtual' stations\nthat are spliced together archives of close by stations.  For some\nlocations, the place that the sounding is made has moved over the years.\n\n<br /><br />A process runs at 3:10 and 15:10z each day to ingest the\ncurrent 0 and 12z soundings respectively.  You may not find the current\nday's sounding if running this application prior to those ingest times.\n\"\"\"\n\nimport calendar\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.util import utc\n\nPDICT = {\"00\": \"00 UTC\", \"12\": \"12 UTC\"}\nPDICT2 = {\n    \"none\": \"No Comparison Limit (All Soundings)\",\n    \"month\": \"Month of the Selected Profile\",\n}\nPDICT3 = {\n    \"tmpc\": \"Air Temperature (°C)\",\n    \"dwpc\": \"Dew Point (°C)\",\n    \"hght\": \"Height (m)\",\n    \"smps\": \"Wind Speed (mps)\",\n}\nPDICT4 = {\n    \"same\": \"Compare against soundings for same hour\",\n    \"all\": \"Compare against soundings at any hour\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    today = utc()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"RAOB\",\n            default=\"_OAX\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"date\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            min=\"1946/01/01\",\n            max=today.strftime(\"%Y/%m/%d\"),\n            label=\"Date of the Sounding:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"hour\",\n            default=\"00\",\n            options=PDICT,\n            label=\"Which Sounding from Above Date:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"which\",\n            default=\"month\",\n            options=PDICT2,\n            label=\"Compare this sounding against (dates):\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"h\",\n            default=\"same\",\n            options=PDICT4,\n            label=\"Compare this sounding against (hour):\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"tmpc\",\n            options=PDICT3,\n            label=\"Which Sounding Variable to Plot:\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    if station not in ctx[\"_nt\"].sts:  # This is needed.\n        raise NoDataFound(\"Unknown station metadata.\")\n    varname = ctx[\"var\"]\n    ts = ctx[\"date\"]\n    hour = int(ctx[\"hour\"])\n    ts = utc(ts.year, ts.month, ts.day, hour)\n    which = ctx[\"which\"]\n    stations = [station]\n    name = ctx[\"_nt\"].sts[station][\"name\"]\n    if station.startswith(\"_\"):\n        name = ctx[\"_nt\"].sts[station][\"name\"].split(\"--\")[0]\n        stations = (\n            ctx[\"_nt\"].sts[station][\"name\"].split(\"--\")[1].strip().split(\" \")\n        )\n    params = {\n        \"stations\": stations,\n        \"ts\": ts,\n    }\n    vlimit = \"\"\n    if which == \"month\":\n        vlimit = \" and extract(month from f.valid) = :month \"\n        params[\"month\"] = ts.month\n\n    hrlimit = \"and extract(hour from f.valid at time zone 'UTC') = :hour \"\n    params[\"hour\"] = hour\n    if ctx[\"h\"].upper() == \"ALL\":\n        hrlimit = \"\"\n    with get_sqlalchemy_conn(\"raob\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        with data as (\n            select f.valid,\n            p.pressure, count(*) OVER (PARTITION by p.pressure),\n            min(valid at time zone 'UTC') OVER () as min_valid,\n            max(valid at time zone 'UTC') OVER () as max_valid,\n            p.tmpc,\n            rank() OVER (PARTITION by p.pressure ORDER by p.tmpc ASC)\n                as tmpc_rank,\n            min(p.tmpc) OVER (PARTITION by p.pressure) as tmpc_min,\n            max(p.tmpc) OVER (PARTITION by p.pressure) as tmpc_max,\n            p.dwpc,\n            rank() OVER (PARTITION by p.pressure ORDER by p.dwpc ASC)\n                as dwpc_rank,\n            min(p.dwpc) OVER (PARTITION by p.pressure) as dwpc_min,\n            max(p.dwpc) OVER (PARTITION by p.pressure) as dwpc_max,\n            p.height as hght,\n            rank() OVER (\n                PARTITION by p.pressure ORDER by p.height ASC) as hght_rank,\n            min(p.height) OVER (PARTITION by p.pressure) as hght_min,\n            max(p.height) OVER (PARTITION by p.pressure) as hght_max,\n            p.smps,\n            rank() OVER (PARTITION by p.pressure ORDER by p.smps ASC)\n                as smps_rank,\n            min(p.smps) OVER (PARTITION by p.pressure) as smps_min,\n            max(p.smps) OVER (PARTITION by p.pressure) as smps_max\n            from raob_flights f JOIN raob_profile p on (f.fid = p.fid)\n            WHERE f.station = ANY(:stations) {hrlimit} {vlimit}\n            and p.pressure in (925, 850, 700, 500, 400, 300, 250, 200,\n            150, 100, 70, 50, 10)  and\n            {vname} is not null)\n\n        select * from data where valid = :ts ORDER by pressure DESC\n        \"\"\",\n                hrlimit=hrlimit,\n                vlimit=vlimit,\n                vname=varname if varname != \"hght\" else \"height\",\n            ),\n            conn,\n            params=params,\n            index_col=\"pressure\",\n        )\n    if df.empty:\n        raise NoDataFound(f\"Sounding for {ts:%Y-%m-%d %H:%M} was not found!\")\n    df = df.drop(\"valid\", axis=1)\n    for key in PDICT3:\n        df[key + \"_percentile\"] = df[key + \"_rank\"] / df[\"count\"] * 100.0\n        # manual hackery to get 0 and 100th percentile\n        df.loc[df[key] == df[f\"{key}_max\"], f\"{key}_percentile\"] = 100.0\n        df.loc[df[key] == df[f\"{key}_min\"], f\"{key}_percentile\"] = 0.0\n\n    title = f\"{station} {name} {ts:%Y/%m/%d %H} UTC Sounding\"\n    tt = \"All Year\" if which == \"none\" else calendar.month_name[ts.month]\n    uu = \"Any Hour\" if ctx[\"h\"] == \"all\" else f\"{hour} UTC\"\n    subtitle = (\n        f\"({pd.Timestamp(df.iloc[0]['min_valid']).year}-\"\n        f\"{pd.Timestamp(df.iloc[0]['max_valid']).year}) Percentile Ranks \"\n        f\"({tt}) for {PDICT3[varname]} at {uu}\"\n    )\n    fig = figure(title=title, subtitle=subtitle, apctx=ctx)\n    ax = fig.add_axes((0.1, 0.1, 0.75, 0.78))\n    bars = ax.barh(\n        range(len(df.index)), df[varname + \"_percentile\"], align=\"center\"\n    )\n    y2labels = []\n    fmt = \"%.1f\" if varname != \"hght\" else \"%.0f\"\n    for i, mybar in enumerate(bars):\n        ptile = mybar.get_width()\n        # Prevent 99.999 from showing up as 100.0\n        ptile = 99.9 if 99.94 < ptile < 100 else ptile\n        ax.text(\n            mybar.get_width() + 1,\n            i,\n            f\"{ptile:.1f}\",\n            va=\"center\",\n            bbox=dict(color=\"white\"),\n        )\n        y2labels.append(\n            (fmt + \" (\" + fmt + \" \" + fmt + \")\")\n            % (\n                df.iloc[i][varname],\n                df.iloc[i][f\"{varname}_min\"],\n                df.iloc[i][f\"{varname}_max\"],\n            )\n        )\n    ax.set_yticks(range(len(df.index)))\n    ax.set_yticklabels([f\"{a:.0f}\" for a in df.index.values])\n    ax.set_ylim(-0.5, len(df.index) - 0.5)\n    ax.set_xlabel(\"Percentile [100 = highest]\")\n    ax.set_ylabel(\"Mandatory Pressure Level (hPa)\")\n    ax.grid(True)\n    ax.set_xticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    ax.set_xlim(0, 110)\n    ax.text(1.02, 1, \"Ob  (Min  Max)\", transform=ax.transAxes)\n\n    ax2 = ax.twinx()\n    ax2.set_ylim(-0.5, len(df.index) - 0.5)\n    ax2.set_yticks(range(len(df.index)))\n    ax2.set_yticklabels(y2labels)\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p151.py",
    "content": "\"\"\"\nThis autoplot can either produce a plot of averages for a given period or\nannual over a period of years; or a difference between a second set of years.\n<a href=\"/plotting/auto/?q=97\">Autoplot 97</a> is a similar plot and perhaps\nmore useful for some users than this one.  <strong>This autoplot can be very\nslow when plotting more than a single state of data.</strong>\n\"\"\"\n\nfrom typing import TYPE_CHECKING\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot, centered_bins, get_cmap\nfrom pyiem.reference import SECTORS_NAME, Z_CLIP\n\nfrom iemweb.util import month2months\n\nif TYPE_CHECKING:\n    from datetime import date\n\nPDICT = {\n    \"state\": \"State Level Maps (select state)\",\n}\nPDICT.update(SECTORS_NAME)\n\nPDICT2 = {\n    \"both\": \"Show both contour and values\",\n    \"values\": \"Show just the values\",\n    \"contour\": \"Show just the contour\",\n}\nPDICT3 = {\n    \"total_precip\": \"Total Precipitation\",\n    \"gdd\": \"Growing Degree Days (base=50/86)\",\n    \"sdd\": \"Stress Degree Days (High > 86)\",\n    \"avg_temp\": \"Average Temperature\",\n    \"avg_high\": \"Average High Temperature\",\n    \"avg_low\": \"Average Low Temperature\",\n    \"days_high_above\": \"Days with High Temp At or Above [Threshold]\",\n    \"days_high_below\": \"Days with High Temp Below [Threshold]\",\n    \"days_low_above\": \"Days with Low Temp At or Above [Threshold]\",\n    \"days_low_below\": \"Days with Low Temp Below [Threshold]\",\n    \"days_precip_above\": \"Days with Precipitation At or Above [Threshold]\",\n}\nPDICT4 = {\n    \"english\": \"English\",\n    \"metric\": \"Metric\",\n}\nUNITS = {\n    \"total_precip\": \"inch\",\n    \"gdd\": \"°F\",\n    \"sdd\": \"°F\",\n    \"avg_temp\": \"°F\",\n    \"avg_high\": \"F\",\n    \"avg_low\": \"°F\",\n    \"days_high_above\": \"days\",\n    \"days_high_below\": \"days\",\n    \"days_low_above\": \"days\",\n    \"days_low_below\": \"days\",\n    \"days_precip_above\": \"days\",\n}\nMUNITS = {\n    \"total_precip\": \"mm\",\n    \"gdd\": \"°C\",\n    \"sdd\": \"°C\",\n    \"avg_temp\": \"°C\",\n    \"avg_high\": \"°C\",\n    \"avg_low\": \"°C\",\n    \"days_high_above\": \"days\",\n    \"days_high_below\": \"days\",\n    \"days_low_above\": \"days\",\n    \"days_low_below\": \"days\",\n    \"days_precip_above\": \"days\",\n}\nPRECISION = {\"total_precip\": 2}\nMDICT = {\n    \"all\": \"Annual\",\n    \"custom\": \"Custom Period (select below)\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"gs\": \"1 May to 30 Sep\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\nOPT1 = {\"diff\": \"Plot Difference\", \"p1\": \"Just Plot Period One Values\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            options=MDICT,\n            label=\"Show Monthly, Annual or Custom Defined Period Averages\",\n        ),\n        {\n            \"type\": \"sday\",\n            \"default\": \"0101\",\n            \"name\": \"sday\",\n            \"label\": \"Inclusive Start Day (select custom period above)\",\n        },\n        {\n            \"type\": \"sday\",\n            \"default\": \"1231\",\n            \"name\": \"eday\",\n            \"label\": \"Inclusive End Day (select custom period above)\",\n        },\n        dict(\n            type=\"select\",\n            name=\"sector\",\n            default=\"state\",\n            options=PDICT,\n            label=\"Select Map Region\",\n        ),\n        dict(\n            type=\"state\",\n            name=\"state\",\n            default=\"IA\",\n            label=\"Select State to Plot (when appropriate)\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            options=PDICT2,\n            default=\"both\",\n            label=\"Map Plot/Contour View Option\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            options=PDICT3,\n            default=\"total_precip\",\n            label=\"Which Variable to Plot\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"r\",\n            options=PDICT4,\n            default=\"english\",\n            label=\"Which Unit System to Use (GDD/SDD always english)\",\n        ),\n        dict(\n            type=\"float\",\n            name=\"threshold\",\n            default=-99,\n            label=\"Enter threshold (where appropriate)\",\n        ),\n        dict(\n            type=\"select\",\n            options=OPT1,\n            default=\"diff\",\n            name=\"opt1\",\n            label=\"Period plotting option\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"p1syear\",\n            default=1951,\n            label=\"Start Year (inclusive) of Period One:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"p1eyear\",\n            default=1980,\n            label=\"End Year (inclusive) of Period One:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"p2syear\",\n            default=1981,\n            label=\"Start Year (inclusive) of Period Two:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"p2eyear\",\n            default=2010,\n            label=\"End Year (inclusive) of Period Two:\",\n        ),\n        dict(\n            type=\"cmap\", name=\"cmap\", default=\"seismic_r\", label=\"Color Ramp:\"\n        ),\n    ]\n    return desc\n\n\ndef get_data(ctx):\n    \"\"\"Get the data, please.\"\"\"\n    state = ctx[\"state\"]\n    sector = ctx[\"sector\"]\n    threshold = ctx[\"threshold\"]\n    month = ctx[\"month\"]\n    sday: date = ctx[\"sday\"]\n    eday: date = ctx[\"eday\"]\n    p1syear = ctx[\"p1syear\"]\n    p1eyear = ctx[\"p1eyear\"]\n    p1years = p1eyear - p1syear + 1\n    p2syear = ctx[\"p2syear\"]\n    p2eyear = ctx[\"p2eyear\"]\n    p2years = p2eyear - p2syear + 1\n\n    datumsql = \"year\"\n    if month != \"custom\":\n        mlimiter = \"and month = ANY(:months)\" if month != \"all\" else \"\"\n        months = month2months(month)\n    else:\n        mlimiter = \"and sday >= :sday and sday <= :eday\"\n        if sday > eday:\n            mlimiter = \"and (sday >= :sday or sday <= :eday)\"\n            datumsql = \"case when sday >= :sday then year + 1 else year end\"\n        months = None\n    table = \"alldata\"\n    if sector == \"state\":\n        # optimization\n        table = f\"alldata_{state.lower()}\"\n    hcol = \"high\"\n    lcol = \"low\"\n    pcol = \"precip\"\n    if ctx[\"r\"] == \"metric\":\n        hcol = \"f2c(high)\"\n        lcol = \"f2c(low)\"\n        pcol = \"precip * 25.4\"\n\n    sqlopts = {\n        \"total_precip\": f\"sum({pcol})\",\n        \"gdd\": \"sum(gddxx(50, 86, high, low))\",\n        \"sdd\": \"sum(case when high > 86 then high - 86 else 0 end)\",\n        \"avg_temp\": f\"avg(({hcol}+{lcol})/2.0)\",\n        \"avg_high\": f\"avg({hcol})\",\n        \"avg_low\": f\"avg({lcol})\",\n        \"days_high_above\": (\n            f\"sum(case when {hcol}::numeric >= :t then 1 else 0 end)\"\n        ),\n        \"days_high_below\": (\n            f\"sum(case when {hcol}::numeric < :t then 1 else 0 end)\"\n        ),\n        \"days_low_above\": (\n            f\"sum(case when {lcol}::numeric >= :t then 1 else 0 end)\"\n        ),\n        \"days_low_below\": (\n            f\"sum(case when {lcol}::numeric < :t then 1 else 0 end)\"\n        ),\n        \"days_precip_above\": (\n            f\"sum(case when {pcol}::numeric >= :t then 1 else 0 end)\"\n        ),\n    }\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH period1 as (\n            SELECT station, {datumsql} as datum,\n            {sqlvar} as {varname}\n            from {table} WHERE year >= :syear1 and year <= :eyear1\n            {mlimiter} GROUP by station, datum),\n        period2 as (\n            SELECT station, {datumsql} as datum,\n            {sqlvar} as {varname}\n            from {table} WHERE year >= :syear2 and year <= :eyear2\n            {mlimiter} GROUP by station, datum),\n        p1agg as (\n            SELECT station,\n            avg({varname}) as {varname}, count(*) as count\n            from period1 GROUP by station),\n        p2agg as (\n            SELECT station,\n            avg({varname}) as {varname}, count(*) as count\n            from period2 GROUP by station),\n        agg as (\n            SELECT p2.station,\n            p2.{varname} as p2_{varname},\n            p1.{varname} as p1_{varname}\n            from p1agg p1 JOIN p2agg p2 on\n            (p1.station = p2.station)\n            WHERE p1.count >= :p1years and p2.count >= :p2years)\n\n        SELECT ST_X(geom) as lon, ST_Y(geom) as lat,\n        d.* from agg d JOIN stations t ON (d.station = t.id)\n        WHERE t.network ~* 'CLIMATE'\n        and substr(station, 3, 1) != 'C' and substr(station, 3, 4) != '0000'\n        \"\"\",\n                datumsql=datumsql,\n                varname=ctx[\"var\"],\n                sqlvar=sqlopts[ctx[\"var\"]],\n                table=table,\n                mlimiter=mlimiter,\n            ),\n            conn,\n            params={\n                \"t\": threshold,\n                \"syear1\": p1syear,\n                \"eyear1\": p1eyear,\n                \"months\": months,\n                \"sday\": f\"{sday:%m%d}\",\n                \"eday\": f\"{eday:%m%d}\",\n                \"syear2\": p2syear,\n                \"eyear2\": p2eyear,\n                \"p1years\": p1years,\n                \"p2years\": p2years,\n            },\n            index_col=\"station\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df[ctx[\"var\"]] = df[f\"p2_{ctx['var']}\"] - df[f\"p1_{ctx['var']}\"]\n    return df\n\n\ndef geojson(ctx: dict):\n    \"\"\"Handle GeoJSON output.\"\"\"\n    return (get_data(ctx).drop([\"lat\", \"lon\"], axis=1)), ctx[\"var\"]\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    df = get_data(ctx)\n    state = ctx[\"state\"]\n    varname = ctx[\"var\"]\n    sector = ctx[\"sector\"]\n    threshold = ctx[\"threshold\"]\n    opt = ctx[\"opt\"]\n    month = ctx[\"month\"]\n    p1syear = ctx[\"p1syear\"]\n    p1eyear = ctx[\"p1eyear\"]\n    p2syear = ctx[\"p2syear\"]\n    p2eyear = ctx[\"p2eyear\"]\n    opt1 = ctx[\"opt1\"]\n\n    column = varname\n    if month == \"custom\":\n        title = (\n            f\"({ctx['sday']:%-d %b} thru {ctx['eday']:%-d %b}) \"\n            f\"{PDICT3[varname]}\"\n        )\n    else:\n        title = f\"{MDICT[month]} {PDICT3[varname]}\"\n    title = title.replace(\"[Threshold]\", f\"{threshold:.1f}\")\n    # this works, for now\n    tvar = \"total_precip\" if \"precip\" in varname else \"avg_high\"\n    title += f\" {(MUNITS if ctx['r'] == 'metric' else UNITS)[tvar]}\"\n    if opt1 == \"p1\":\n        column = f\"p1_{varname}\"\n        title = f\"{p1syear:.0f}-{p1eyear:.0f} {title}\"\n    else:\n        tt = UNITS[varname] if ctx[\"r\"] == \"english\" else MUNITS[varname]\n        p1 = (\n            f\"{p1syear:.0f}-{p1eyear:.0f}\"\n            if p1syear != p1eyear\n            else f\"{p1syear:.0f}\"\n        )\n        p2 = (\n            f\"{p2syear:.0f}-{p2eyear:.0f}\"\n            if p2syear != p2eyear\n            else f\"{p2syear:.0f}\"\n        )\n        title = f\"{p2} minus {p1} {title} Difference ({tt})\"\n\n    # Reindex so that most extreme values are first\n    df = df.reindex(df[column].abs().sort_values(ascending=False).index)\n    # drop 5% most extreme events, too much?\n    df2 = df.iloc[int(len(df.index) * 0.05) :]\n\n    mp = MapPlot(\n        apctx=ctx,\n        sector=sector,\n        state=state,\n        axisbg=\"white\",\n        title=title,\n        subtitle=\"based on IEM Archives\",\n        titlefontsize=12,\n        nocaption=True,\n    )\n    if opt1 == \"diff\":\n        # Create 9 levels centered on zero\n        abval = df2[column].abs().max()\n        levels = centered_bins(abval)\n    else:\n        levels = [\n            round(v, PRECISION.get(varname, 1))\n            for v in np.percentile(df2[column].to_numpy(), range(0, 101, 10))\n        ]\n    if opt in [\"both\", \"contour\"]:\n        mp.contourf(\n            df2[\"lon\"].values,\n            df2[\"lat\"].values,\n            df2[column].values,\n            levels,\n            cmap=get_cmap(ctx[\"cmap\"]),\n            units=UNITS[varname] if ctx[\"r\"] == \"english\" else MUNITS[varname],\n        )\n    if sector == \"state\":\n        mp.drawcounties()\n    if opt in [\"both\", \"values\"]:\n        mp.plot_values(\n            df2[\"lon\"].values,\n            df2[\"lat\"].values,\n            df2[column].values,\n            fmt=f\"%.{PRECISION.get(varname, 1):.0f}f\",\n            labelbuffer=5,\n            zorder=Z_CLIP - 1,  # Lame workaround to keep labels inside mask\n        )\n\n    return mp.fig, df.round(2)\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p152.py",
    "content": "\"\"\"\nThis map produces an analysis of change in\nthe number of days for the growing season. This is defined by the period\nbetween the last spring low temperature below 32 degrees and the first fall\ndate below 32 degrees.  This analysis tends to be very noisy, so picking\nlonger periods of time for each period will help some.\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot, centered_bins, get_cmap\nfrom pyiem.reference import SECTORS_NAME\n\nPDICT = {\"state\": \"State Level Maps (select state)\"}\nPDICT.update(SECTORS_NAME)\nPDICT2 = {\n    \"both\": \"Show both contour and values\",\n    \"values\": \"Show just the values\",\n    \"contour\": \"Show just the contour\",\n}\nPDICT3 = {\n    \"season\": \"Number of Days in Growing Season\",\n    \"spring\": \"Date of Last Spring Freeze\",\n    \"fall\": \"Date of First Fall Freeze\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"sector\",\n            default=\"state\",\n            options=PDICT,\n            label=\"Select Map Region\",\n        ),\n        dict(\n            type=\"state\",\n            name=\"state\",\n            default=\"IA\",\n            label=\"Select State to Plot (when appropriate)\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            options=PDICT2,\n            default=\"both\",\n            label=\"Map Plot/Contour View Option\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            options=PDICT3,\n            default=\"season\",\n            label=\"Variable to Plot\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"p1syear\",\n            default=1951,\n            label=\"Start Year (inclusive) of Period One:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"p1eyear\",\n            default=1980,\n            label=\"End Year (inclusive) of Period One:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"p2syear\",\n            default=1981,\n            label=\"Start Year (inclusive) of Period Two:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"p2eyear\",\n            default=2010,\n            label=\"End Year (inclusive) of Period Two:\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"seismic\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    state = ctx[\"state\"][:2]\n    sector = ctx[\"sector\"]\n    opt = ctx[\"opt\"]\n    p1syear = ctx[\"p1syear\"]\n    p1eyear = ctx[\"p1eyear\"]\n    p2syear = ctx[\"p2syear\"]\n    p2eyear = ctx[\"p2eyear\"]\n    varname = ctx[\"var\"]\n\n    table = \"alldata\"\n    if sector == \"state\":\n        table = f\"alldata_{state.lower()}\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH season1 as (\n            SELECT station, year,\n            min(case when month > 7 and low < 32 then\n                extract(doy from day) else 366 end) as first_freeze,\n            max(case when month < 7 and low < 32 then\n                extract(doy from day) else 0 end) as last_freeze\n            from {table} WHERE\n            year >= :p1syear and year <= :p1eyear GROUP by station, year),\n        season2 as (\n            SELECT station, year,\n            min(case when month > 7 and low < 32 then\n                extract(doy from day) else 366 end) as first_freeze,\n            max(case when month < 7 and low < 32 then\n                extract(doy from day) else 0 end) as last_freeze\n            from {table} WHERE\n            year >= :p2syear and year <= :p2eyear GROUP by station, year),\n        agg1 as (\n            SELECT station as p1station, avg(first_freeze) as p1_first_fall,\n            avg(last_freeze) as p1_last_spring,\n            count(first_freeze) as p1_count\n            from season1 GROUP by station),\n        agg2 as (\n            SELECT station as p2station, avg(first_freeze) as p2_first_fall,\n            avg(last_freeze) as p2_last_spring,\n            count(first_freeze) as p2_count\n            from season2 GROUP by station),\n        agg as (\n            SELECT a.p1station as station, p1_first_fall, p1_last_spring,\n            p2_first_fall, p2_last_spring, p1_count, p2_count\n            from agg1 a JOIN agg2 b on (a.p1station = b.p2station) WHERE\n            p1_count > :p1quorum and p2_count > :p2quorum\n        )\n        SELECT ST_X(geom) as lon, ST_Y(geom) as lat,\n        d.* from agg d JOIN stations t ON (d.station = t.id)\n        WHERE t.network ~* 'CLIMATE'\n        and substr(station, 3, 1) not in ('C', 'D')\n        and substr(station, 3, 4) != '0000'\n        \"\"\",\n                table=table,\n            ),\n            conn,\n            params={\n                \"p1syear\": p1syear,\n                \"p1eyear\": p1eyear,\n                \"p2syear\": p2syear,\n                \"p2eyear\": p2eyear,\n                \"p1quorum\": (p1eyear - p1syear) - 2,\n                \"p2quorum\": (p2eyear - p2syear) - 2,\n            },\n            index_col=\"station\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found\")\n    df[\"p1_season\"] = df[\"p1_first_fall\"] - df[\"p1_last_spring\"]\n    df[\"p2_season\"] = df[\"p2_first_fall\"] - df[\"p2_last_spring\"]\n    df[\"season_delta\"] = df[\"p2_season\"] - df[\"p1_season\"]\n    df[\"spring_delta\"] = df[\"p2_last_spring\"] - df[\"p1_last_spring\"]\n    df[\"fall_delta\"] = df[\"p2_first_fall\"] - df[\"p1_first_fall\"]\n    # Reindex so that most extreme values are first\n    df = df.reindex(\n        df[f\"{varname}_delta\"].abs().sort_values(ascending=False).index\n    )\n\n    title = PDICT3[varname]\n    mp = MapPlot(\n        apctx=ctx,\n        sector=sector,\n        state=state,\n        axisbg=\"white\",\n        title=(\n            f\"{p2syear:.0f}-{p2eyear:.0f} minus {p1syear:.0f}-\"\n            f\"{p1eyear:.0f} {title} Difference\"\n        ),\n        subtitle=\"based on IEM Archives\",\n        titlefontsize=14,\n        nocaption=True,\n    )\n    # Create 9 levels centered on zero\n    abval = df[varname + \"_delta\"].abs().max()\n    levels = centered_bins(abval)\n    if opt in [\"both\", \"contour\"] and len(levels) > 1:\n        mp.contourf(\n            df[\"lon\"].values,\n            df[\"lat\"].values,\n            df[f\"{varname}_delta\"].values,\n            levels,\n            cmap=get_cmap(ctx[\"cmap\"]),\n            units=\"days\",\n        )\n    if sector == \"state\":\n        mp.drawcounties()\n    if opt in [\"both\", \"values\"]:\n        mp.plot_values(\n            df[\"lon\"].values,\n            df[\"lat\"].values,\n            df[f\"{varname}_delta\"].values,\n            fmt=\"%.1f\",\n            labelbuffer=5,\n        )\n\n    return mp.fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p153.py",
    "content": "\"\"\"\nThis table presents the extreme hourly value of\nsome variable of your choice based on available observations maintained\nby the IEM.  Sadly, this app will likely point out some bad data points\nas such points tend to be obvious at extremes.  If you contact us to\npoint out troubles, we'll certainly attempt to fix the archive to\nremove the bad data points.</p>\n\n<p>For non-precipitation reports, observations are arbitrarly bumped 10\nminutes into the future to place the near to top of the hour obs on\nthat hour.  For example, a 9:53 AM observation becomes the ob for 10 AM.\n\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nfrom matplotlib.font_manager import FontProperties\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import get_monofont\nfrom iemweb.util import month2months\n\nPDICT = {\n    \"max_dwpf\": \"Highest Dew Point Temperature\",\n    \"max_dd\": \"Largest Dew Point Depression\",\n    \"min_dwpf\": \"Lowest Dew Point Temperature\",\n    \"max_tmpf\": \"Highest Air Temperature\",\n    \"min_tmpf\": \"Lowest Air Temperature\",\n    \"max_relh\": \"Highest Relative Humidity\",\n    \"min_relh\": \"Lowest Relative Humidity\",\n    \"max_feel\": \"Highest Feels Like Temperature\",\n    \"min_feel\": \"Lowest Feels Like Temperature\",\n    \"max_p01i\": \"Maximum Hourly Precipitation\",\n    \"max_mslp\": \"Maximum Sea Level Pressure\",\n    \"min_mslp\": \"Minimum Sea Level Pressure\",\n    \"max_alti\": \"Maximum Pressure Altimeter\",\n    \"min_alti\": \"Minimum Pressure Altimeter\",\n}\nUNITS = {\n    \"max_dwpf\": \"°F\",\n    \"max_dd\": \"°F\",\n    \"max_tmpf\": \"°F\",\n    \"max_relh\": \"%\",\n    \"min_relh\": \"%\",\n    \"min_dwpf\": \"°F\",\n    \"min_tmpf\": \"°F\",\n    \"min_feel\": \"°F\",\n    \"max_feel\": \"°F\",\n    \"max_p01i\": \"in\",\n    \"max_mslp\": \"mb\",\n    \"min_mslp\": \"mb\",\n    \"max_alti\": \"in\",\n    \"min_alti\": \"in\",\n}\nMDICT = {\n    \"all\": \"No Month Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"gs\": \"1 May to 30 Sep\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            options=MDICT,\n            label=\"Select Month/Season/All\",\n        ),\n        dict(\n            type=\"sday\",\n            optional=True,\n            name=\"sday\",\n            label=\"Start Day of The Year (inclusive):\",\n            default=f\"{date.today():%m%d}\",\n        ),\n        dict(\n            type=\"sday\",\n            optional=True,\n            name=\"eday\",\n            label=\"End Day of The Year (inclusive):\",\n            default=\"1231\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            options=PDICT,\n            default=\"max_dwpf\",\n            label=\"Which Variable to Plot\",\n        ),\n    ]\n    return desc\n\n\ndef rounder(row: dict, varname: str) -> str:\n    \"\"\"Round based on variable name.\"\"\"\n    if varname in [\"max_p01i\", \"max_alti\", \"min_alti\"]:\n        return f\"{row[varname]:.2f}\"\n    return f\"{row[varname]:3.0f}\"\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    font0 = get_monofont()\n    font0.set_size(16)\n    font1 = FontProperties()\n    font1.set_size(16)\n\n    varname = ctx[\"var\"]\n    varname2 = varname.split(\"_\")[1]\n    if varname2 in [\"dwpf\", \"tmpf\", \"feel\", \"dd\"]:\n        varname2 = f\"i{varname2}\"\n    month = ctx[\"month\"]\n    station = ctx[\"zstation\"]\n    months = month2months(month)\n    params = {\n        \"tzname\": ctx[\"_nt\"].sts[station][\"tzname\"],\n        \"station\": station,\n        \"months\": months,\n    }\n    doylimiter = \"\"\n    monlimiter = \"\"\n    if \"sday\" in ctx and \"eday\" in ctx:\n        params[\"sday\"] = f\"{ctx['sday']:%m%d}\"\n        params[\"eday\"] = f\"{ctx['eday']:%m%d}\"\n        op = \"and\" if params[\"sday\"] < params[\"eday\"] else \"or\"\n        doylimiter = (\n            f\"and (to_char(valid at time zone :tzname, 'mmdd') >= :sday {op} \"\n            \"to_char(valid at time zone :tzname, 'mmdd') <= :eday)\"\n        )\n        over = f\"{ctx['sday']:%-d %b} thru {ctx['eday']:%-d %b}\"\n    else:\n        over = MDICT[month]\n        if len(months) < 12:\n            monlimiter = (\n                \"and extract(month from valid at time zone :tzname) \"\n                \"= ANY(:months)\"\n            )\n    delta = 10 if varname != \"max_p01i\" else -1\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH obs as (\n            SELECT (valid + '{delta} minutes'::interval)\n                at time zone :tzname as ts,\n            tmpf::int as itmpf, dwpf::int as idwpf,\n            tmpf::int - dwpf::int as idd,\n            feel::int as ifeel, mslp, alti, p01i, relh from alldata\n            where station = :station {doylimiter} {monlimiter}\n            ),\n        agg1 as (\n            SELECT extract(hour from ts) as hr,\n            max(idwpf) as max_dwpf,\n            max(idd) as max_dd,\n            max(itmpf) as max_tmpf,\n            min(idwpf) as min_dwpf,\n            min(itmpf) as min_tmpf,\n            min(ifeel) as min_feel,\n            max(ifeel) as max_feel,\n            max(alti) as max_alti,\n            min(alti) as min_alti,\n            max(mslp) as max_mslp,\n            min(mslp) as min_mslp,\n            max(p01i) as max_p01i,\n            max(relh) as max_relh,\n            min(relh) as min_relh\n            from obs GROUP by hr)\n        SELECT o.ts, a.hr::int as hr,\n            a.{varname} from agg1 a JOIN obs o on\n            (a.hr = extract(hour from o.ts)\n            and a.{varname} = o.{varname2})\n            ORDER by a.hr ASC, o.ts DESC\n        \"\"\",\n                delta=str(delta),\n                doylimiter=doylimiter,\n                monlimiter=monlimiter,\n                varname=varname,\n                varname2=varname2,\n            ),\n            conn,\n            params=params,\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data was found.\")\n    y0 = 0.1\n    yheight = 0.8\n    dy = yheight / 24.0\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata\")\n    title = (\n        f\"{ctx['_sname']} ({ab.year}-{date.today().year})\\n\"\n        f\"{PDICT[varname]} [{over}]\"\n    )\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n    ax.set_position([0.12, y0, 0.57, yheight])\n    ax.barh(df[\"hr\"], df[varname], align=\"center\")\n    ax.set_ylim(-0.5, 23.5)\n    ax.set_yticks([0, 4, 8, 12, 16, 20])\n    ax.set_yticklabels([\"Mid\", \"4 AM\", \"8 AM\", \"Noon\", \"4 PM\", \"8 PM\"])\n    ax.grid(True)\n    if varname == \"max_p01i\":\n        ax.set_xlim([0, df[varname].max() + 0.5])\n    else:\n        delta = 0.25 if varname.find(\"alti\") > -1 else 5\n        ax.set_xlim([df[varname].min() - delta, df[varname].max() + delta])\n    ax.set_ylabel(\n        f\"Local Time {ctx['_nt'].sts[station]['tzname']}\",\n        fontproperties=font1,\n    )\n\n    ypos = y0 + (dy / 2.0)\n    for hr in range(24):\n        sdf = df[df[\"hr\"] == hr]\n        if sdf.empty:\n            continue\n        row = sdf.iloc[0]\n        fig.text(\n            0.7,\n            ypos,\n            f\"{rounder(row, varname):3s}: {pd.Timestamp(row['ts']):%d %b %Y}\"\n            f\"{'*' if len(sdf.index) > 1 else ''}\",\n            fontproperties=font0,\n            va=\"center\",\n        )\n        ypos += dy\n    ax.set_xlabel(\n        f\"{PDICT[varname]} {UNITS[varname]}, * denotes ties\",\n        fontproperties=font1,\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p154.py",
    "content": "\"\"\"\nThis chart presents an average hourly value for\na given month or season over the years covering the period of record\nfor the site.  For the year to plot, at least 80% data availability needs\nto be obtained.\n\"\"\"\n\nfrom datetime import datetime\n\nimport pandas as pd\nfrom matplotlib.font_manager import FontProperties\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom scipy import stats\n\nfrom iemweb.util import month2months\n\nPDICT = {\"avg_tmpf\": \"Average Temperature\"}\nUNITS = {\"avg_tmpf\": \"F\"}\nMDICT = {\n    \"all\": \"No Month Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"gs\": \"1 May to 30 Sep\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            options=MDICT,\n            label=\"Select Month/Season/All\",\n        ),\n        dict(\n            type=\"hour\",\n            name=\"hour\",\n            default=20,\n            label=\"At Time (Local Timezone of Station):\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            options=PDICT,\n            default=\"avg_tmpf\",\n            label=\"Which Variable to Plot\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    font0 = FontProperties()\n    font0.set_family(\"monospace\")\n    font0.set_size(16)\n\n    varname = ctx[\"var\"]\n    month = ctx[\"month\"]\n    station = ctx[\"zstation\"]\n    hour = ctx[\"hour\"]\n    months = month2months(month)\n\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH obs as (\n            SELECT (valid + '10 minutes'::interval) at time zone :tzname as ts,\n            tmpf::int as itmpf, dwpf::int as idwpf from alldata\n            where station = :station and tmpf is not null\n            and dwpf is not null and\n            extract(month from valid at time zone :tzname) = ANY(:months)),\n        agg1 as (\n            SELECT date_trunc('hour', ts) as hts, avg(itmpf) as avg_itmpf,\n            avg(idwpf) as avg_idwpf from obs\n            WHERE extract(hour from ts) = :hour GROUP by hts)\n\n        SELECT extract(year from hts)::int as year, avg(avg_itmpf) as avg_tmpf,\n        count(*) as cnt\n        from agg1 GROUP by year ORDER by year ASC\n        \"\"\"\n            ),\n            conn,\n            params={\n                \"tzname\": ctx[\"_nt\"].sts[station][\"tzname\"],\n                \"station\": station,\n                \"months\": months,\n                \"hour\": hour,\n            },\n            index_col=\"year\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No data was found.\")\n    minfreq = len(months) * 30 * 0.8\n    df2 = df[df[\"cnt\"] > minfreq]\n    lts = datetime(2000, 1, 1, int(hour), 0)\n    title = (\n        f\"{ctx['_sname']}:: {lts:%-I %p} Local \"\n        f\"({df2.index.min()}-{df2.index.max()})\"\n    )\n    subtitle = f\"{PDICT[varname]} [{MDICT[month]}]\"\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    ax.bar(df2.index.values, df2[varname], align=\"center\", ec=\"b\", fc=\"b\")\n    m = df2[varname].mean()\n    ax.axhline(m, lw=2, zorder=5, color=\"k\")\n    slp, intercept, r, _, _ = stats.linregress(\n        df2.index.values, df2[varname].values\n    )\n    ax.plot(\n        df2.index.values,\n        intercept + (df2.index.values * slp),\n        color=\"r\",\n        lw=2,\n        zorder=6,\n    )\n    ax.text(\n        0.02,\n        0.92,\n        r\"$\\frac{°}{decade} = %.2f,R^2=%.2f, avg = %.1f$\"\n        % (slp * 10.0, r**2, m),\n        va=\"bottom\",\n        transform=ax.transAxes,\n        bbox=dict(color=\"white\"),\n    )\n\n    ax.set_ylim([df2[varname].min() - 5, df2[varname].max() + 5])\n    ax.grid(True)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p155.py",
    "content": "\"\"\"\nBased on available hourly observation reports\nby METAR stations, this application presents the top 10 events for a\ngiven metric of your choice.  Please note that this application often\nreveals bad data stored within the database.  Please do contact us when\nyou see suspicious reports and we'll clean up the database.</p>\n\n<p>You can optionally generate this plot for an explicit period of days,\nthe year is ignored with only the month and day portion used.  If you set\nthe start date to a date later than the end date, then the effect is to\nconsider the date period crossing 1 January.</p>\n\n<p>If you pick the same start and end date, you effectively get the\nextremes for that date.</p>\n\n<p>The CSV/Excel download option for this autoplot will return 100\nunfiltered events for further usage as you see fit.</p>\n\"\"\"\n\nfrom datetime import datetime\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.util import month2months\n\nMDICT = {\n    \"all\": \"Entire Year\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"octmar\": \"October thru March\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\nMETRICS = {\n    \"max_tmpf\": \"Max Air Temperature\",\n    \"min_tmpf\": \"Min Air Temperature\",\n    \"below_tmpf\": \"Air Temperature Below Threshold\",\n    \"above_tmpf\": \"Air Temperature At or Above Threshold\",\n    \"min_alti\": \"Min Pressure Altimeter\",\n    \"max_alti\": \"Max Pressure Altimeter\",\n    \"below_alti\": \"Altimeter Below Threshold\",\n    \"above_alti\": \"Altimeter At or Above Threshold\",\n    \"max_dwpf\": \"Max Dewpoint Temperature\",\n    \"min_dwpf\": \"Min Dewpoint Temperature\",\n    \"below_dwpf\": \"Dewpoint Temperature Below Threshold\",\n    \"above_dwpf\": \"Dewpoint Temperature At or Above Threshold\",\n    \"max_relh\": \"Max Relative Humidity\",\n    \"min_relh\": \"Min Relative Humidity\",\n    \"below_relh\": \"Relative Humidity Below Threshold\",\n    \"above_relh\": \"Relative Humidity At or Above Threshold\",\n    \"max_feel\": \"Max Feels Like Temperature\",\n    \"min_feel\": \"Min Feels Like Temperature\",\n    \"below_feel\": \"Feels Like Temperature Below Threshold\",\n    \"above_feel\": \"Feels Like Temperature At or Above Threshold\",\n    \"max_p01i\": \"Max Hourly Precipitation\",\n    \"above_p01i\": \"Precipitation At or Above Threshold\",\n    \"min_mslp\": \"Min Sea Level Pressure\",\n    \"max_mslp\": \"Max Sea Level Pressure\",\n    \"below_mslp\": \"Sea Level Pressure Below Threshold\",\n    \"above_mslp\": \"Sea Level Pressure At or Above Threshold\",\n    \"max_sknt\": \"Max Wind Speed Sustained\",\n    \"max_gust\": \"Max Wind Speed Gust\",\n}\nUNITS = {\n    \"tmpf\": \"F\",\n    \"dwpf\": \"F\",\n    \"feel\": \"F\",\n    \"relh\": \"%\",\n    \"p01i\": \"inch\",\n    \"mslp\": \"hPa\",\n    \"alti\": \"inch\",\n    \"sknt\": \"knots\",\n    \"gust\": \"knots\",\n}\nPDICT = {\n    \"all\": \"List all Reports\",\n    \"one\": \"List only 1 per Day\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"max_p01i\",\n            label=\"Which Metric to Summarize\",\n            options=METRICS,\n        ),\n        {\n            \"type\": \"select\",\n            \"options\": PDICT,\n            \"name\": \"w\",\n            \"default\": \"all\",\n            \"label\": \"List All or Filter 1/Day\",\n        },\n        dict(\n            type=\"float\",\n            name=\"threshold\",\n            default=100,\n            label=\"Set Threshold (where appropriate for metric above)\",\n        ),\n        dict(\n            type=\"hour\",\n            name=\"hour\",\n            optional=True,\n            label=\"Limit Analysis to Given Local Timezone Hour (optional)\",\n            default=12,\n        ),\n        dict(\n            type=\"sday\",\n            name=\"sdate\",\n            default=\"0101\",\n            optional=True,\n            label=(\n                \"Start date (inclusive) for explicit date period: (optional)\"\n            ),\n        ),\n        dict(\n            type=\"sday\",\n            name=\"edate\",\n            default=\"1231\",\n            optional=True,\n            label=\"End date (inclusive) for explicit date period: (optional)\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    month = ctx[\"month\"]\n    varname = ctx[\"var\"]\n    tzname = ctx[\"_nt\"].sts[station][\"tzname\"]\n    params = {}\n    params[\"station\"] = station\n    params[\"tzname\"] = tzname\n    if ctx.get(\"sdate\") and ctx.get(\"edate\"):\n        op = \"or\" if ctx[\"sdate\"] > ctx[\"edate\"] else \"and\"\n        date_limiter = (\n            \" and (to_char(valid at time zone :tzname, 'mmdd') >= :ssday \"\n            f\" {op} to_char(valid at time zone :tzname, 'mmdd') <= :esday)\"\n        )\n        params[\"ssday\"] = ctx[\"sdate\"].strftime(\"%m%d\")\n        params[\"esday\"] = ctx[\"edate\"].strftime(\"%m%d\")\n        title2 = f\"between {ctx['sdate']:%-d %b} and {ctx['edate']:%-d %b}\"\n        if ctx[\"sdate\"] == ctx[\"edate\"]:\n            date_limiter = (\n                \"and to_char(valid at time zone :tzname, 'mmdd') = :ssday \"\n            )\n            title2 = f\"on {ctx['sdate']:%-d %b}\"\n    else:\n        months = month2months(month)\n        date_limiter = (\n            \" and extract(month from valid at time zone :tzname)\"\n            \" = ANY(:months) \"\n        )\n        params[\"months\"] = months\n        title2 = MDICT[month]\n    if ctx.get(\"hour\") is not None:\n        date_limiter += (\n            \" and extract(hour from valid at time zone :tzname \"\n            \"+ '10 minutes'::interval) = :hour \"\n        )\n        params[\"hour\"] = ctx[\"hour\"]\n        dt = datetime(2000, 1, 1, ctx[\"hour\"])\n        title2 += f\" @{dt:%-I %p}\"\n    (agg, dbvar) = varname.split(\"_\")\n    # Special accounting for the peak_wind_gust column\n    if dbvar == \"gust\":\n        titlelabel = \"Top\"\n        with get_sqlalchemy_conn(\"asos\") as conn:\n            df = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n                WITH data as (\n                    SELECT\n                    case when\n                    coalesce(peak_wind_gust, 0) > coalesce(gust, 0) then\n                    coalesce(peak_wind_time, valid)\n                    else valid end as v,\n                    case when\n                    coalesce(peak_wind_gust, 0) > coalesce(gust, 0)\n                    then peak_wind_gust else gust end as speed from alldata\n                    WHERE station = :station {date_limiter})\n\n                SELECT distinct v at time zone :tzname as valid, speed as gust\n                from data WHERE speed is not null\n                ORDER by gust DESC, valid DESC LIMIT 100\n            \"\"\",\n                    date_limiter=date_limiter,\n                ),\n                conn,\n                params=params,\n                index_col=None,\n            )\n\n    elif agg in [\"max\", \"min\"]:\n        titlelabel = \"Top\"\n        sorder = \"DESC\" if agg == \"max\" else \"ASC\"\n        with get_sqlalchemy_conn(\"asos\") as conn:\n            df = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n                WITH data as (\n                    SELECT valid at time zone :tzname as v, {dbvar}\n                    from alldata WHERE station = :station {date_limiter})\n\n                SELECT v as valid, {dbvar} from data\n                ORDER by {dbvar} {sorder} NULLS LAST LIMIT 100\n            \"\"\",\n                    dbvar=dbvar,\n                    sorder=sorder,\n                    date_limiter=date_limiter,\n                ),\n                conn,\n                params=params,\n                index_col=None,\n            )\n    else:\n        titlelabel = \"Most Recent\"\n        op = \">=\" if agg == \"above\" else \"<\"\n        threshold = float(ctx.get(\"threshold\", 100))\n        with get_sqlalchemy_conn(\"asos\") as conn:\n            df = pd.read_sql(\n                sql_helper(\n                    \"SELECT valid at time zone :tzname as valid, \"\n                    \"{dbvar} from \"\n                    \"alldata WHERE station = :station {date_limiter} and \"\n                    \"{dbvar} {op} {threshold} \"\n                    \"ORDER by valid DESC LIMIT 100\",\n                    dbvar=dbvar,\n                    op=op,\n                    threshold=str(threshold),\n                    date_limiter=date_limiter,\n                ),\n                conn,\n                params=params,\n                index_col=None,\n            )\n    if df.empty:\n        raise NoDataFound(\"Error, no results returned!\")\n    ylabels = []\n    fmt = \"%.0f\" if dbvar in [\"tmpf\", \"dwpf\", \"sknt\", \"gust\"] else \"%.2f\"\n    hours = []\n    y = []\n    lastval = -99\n    ranks = []\n    currentrank = 0\n    dtfmt = \"%Y%m%d\" if ctx[\"w\"] == \"one\" else \"%Y%m%d%H\"\n    for _, row in df.iterrows():\n        key = row[\"valid\"].strftime(dtfmt)\n        if key in hours or pd.isnull(row[dbvar]):\n            continue\n        hours.append(key)\n        y.append(row[dbvar])\n        lbl1 = fmt % (row[dbvar],)\n        lbl = f\"{lbl1} -- {row['valid']:%b %d, %Y %-I:%M %p}\"\n        ylabels.append(lbl)\n        if lbl1 != lastval or agg in [\"above\", \"below\"]:\n            currentrank += 1\n        ranks.append(currentrank)\n        lastval = lbl1\n        if len(ylabels) == 10:\n            break\n    if not y:\n        raise NoDataFound(\"No data found.\")\n\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    title = f\"{ctx['_sname']} {titlelabel} 10 Events\"\n    if ctx[\"w\"] == \"one\":\n        title += \" (Only 1 Ob per Day Shown)\"\n    st = ctx.get(\"threshold\") if agg in [\"above\", \"below\"] else \"\"\n    subtitle = (\n        f\"{METRICS[varname]} {st} ({title2}) ({ab.year}-{datetime.now().year})\"\n    )\n    fig = figure(title=title, subtitle=subtitle, apctx=ctx)\n    ax = fig.add_axes((0.1, 0.1, 0.65, 0.8))\n    ax.barh(\n        range(len(y), 0, -1),\n        y,\n        ec=\"green\",\n        fc=\"green\",\n        height=0.8,\n        align=\"center\",\n    )\n    ax2 = ax.twinx()\n    ax2.set_ylim(0.5, 10.5)\n    ax.set_ylim(0.5, 10.5)\n    ax2.set_yticks(range(1, len(y) + 1))\n    ax.set_yticks(range(1, len(y) + 1))\n    ax.set_yticklabels([f\"#{x}\" for x in ranks][::-1])\n    ax2.set_yticklabels(ylabels[::-1])\n    ax.grid(True, zorder=11)\n    ax.set_xlabel(f\"{METRICS[varname]} {UNITS[dbvar]}\")\n    if min(y) > 100:\n        rng = max(y) - min(y)\n        ax.set_xlim(min(y) - 0.1 * rng, max(y) + 0.1 * rng)\n    fig.text(\n        0.98,\n        0.03,\n        f\"Timezone: {tzname}\",\n        ha=\"right\",\n        fontsize=14,\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p156.py",
    "content": "\"\"\"This chart presents crop condition reports from USDA/NASS.\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport pandas as pd\nfrom matplotlib.font_manager import FontProperties\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.reference import state_names\n\nNASS_CROP_PROGRESS = {\n    \"corn_poor_verypoor\": \"Percentage Corn Poor + Very Poor Condition\",\n    \"corn_good_excellent\": \"Percentage Corn Good + Excellent Condition\",\n    \"corn_harvest\": \"Percentage Corn Harvested (Grain) Acres\",\n    \"corn_planting\": \"Percentage Corn Planted Acres\",\n    \"corn_silking\": \"Percentage Corn Silking Acres\",\n    \"soybeans_poor_verypoor\": \"Percentage Soybean Poor + Very Poor Condition\",\n    \"soybeans_good_excellent\": \"Percentage Soybean Good + Excellent Condition\",\n    \"soybeans_planting\": \"Percentage Soybean Planted Acres\",\n    \"soybeans_harvest\": \"Percentage Soybean Harvested Acres\",\n    \"soil_short_veryshort\": \"Percentage Topsoil Moisture Short + Very Short\",\n}\n\nNASS_CROP_PROGRESS_LOOKUP = {\n    \"corn_planting\": \"CORN - PROGRESS, MEASURED IN PCT PLANTED\",\n    \"corn_harvest\": \"CORN, GRAIN - PROGRESS, MEASURED IN PCT HARVESTED\",\n    \"soybeans_planting\": \"SOYBEANS - PROGRESS, MEASURED IN PCT PLANTED\",\n    \"soybeans_harvest\": \"SOYBEANS - PROGRESS, MEASURED IN PCT HARVESTED\",\n    \"corn_silking\": \"CORN - PROGRESS, MEASURED IN PCT SILKING\",\n    \"corn_poor_verypoor\": [\n        \"CORN - CONDITION, MEASURED IN PCT POOR\",\n        \"CORN - CONDITION, MEASURED IN PCT VERY POOR\",\n    ],\n    \"corn_good_excellent\": [\n        \"CORN - CONDITION, MEASURED IN PCT GOOD\",\n        \"CORN - CONDITION, MEASURED IN PCT EXCELLENT\",\n    ],\n    \"soybeans_poor_verypoor\": [\n        \"SOYBEANS - CONDITION, MEASURED IN PCT POOR\",\n        \"SOYBEANS - CONDITION, MEASURED IN PCT VERY POOR\",\n    ],\n    \"soybeans_good_excellent\": [\n        \"SOYBEANS - CONDITION, MEASURED IN PCT GOOD\",\n        \"SOYBEANS - CONDITION, MEASURED IN PCT EXCELLENT\",\n    ],\n    \"soil_short_veryshort\": [\n        \"SOIL, TOPSOIL - MOISTURE, MEASURED IN PCT VERY SHORT\",\n        \"SOIL, TOPSOIL - MOISTURE, MEASURED IN PCT SHORT\",\n    ],\n}\nPDICT = {\n    \"six\": \"Plot all six states\",\n    \"one\": \"Plot just state #1\",\n    \"two\": \"Plot just state #1 and #2\",\n}\nPDICT2 = {\n    \"all\": \"Plot all available years\",\n    \"s\": \"Plot only selected years\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"nass\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"w\",\n            default=\"six\",\n            options=PDICT,\n            label=\"How many states to plot:\",\n        ),\n        dict(type=\"state\", name=\"st1\", default=\"IA\", label=\"Select State #1:\"),\n        dict(type=\"state\", name=\"st2\", default=\"IL\", label=\"Select State #2:\"),\n        dict(type=\"state\", name=\"st3\", default=\"MN\", label=\"Select State #3:\"),\n        dict(type=\"state\", name=\"st4\", default=\"WI\", label=\"Select State #4:\"),\n        dict(type=\"state\", name=\"st5\", default=\"MO\", label=\"Select State #5:\"),\n        dict(type=\"state\", name=\"st6\", default=\"IN\", label=\"Select State #6:\"),\n        dict(\n            type=\"select\",\n            name=\"y\",\n            default=\"all\",\n            options=PDICT2,\n            label=\"How many years to plot:\",\n        ),\n        dict(\n            type=\"year\",\n            min=1981,\n            name=\"y1\",\n            default=date.today().year,\n            label=\"Select Year #1\",\n        ),\n        dict(\n            type=\"year\",\n            min=1981,\n            name=\"y2\",\n            optional=True,\n            default=2012,\n            label=\"Select Year #2\",\n        ),\n        dict(\n            type=\"year\",\n            min=1981,\n            name=\"y3\",\n            optional=True,\n            default=2008,\n            label=\"Select Year #3\",\n        ),\n        dict(\n            type=\"year\",\n            min=1981,\n            name=\"y4\",\n            optional=True,\n            default=1993,\n            label=\"Select Year #4\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"corn_poor_verypoor\",\n            options=NASS_CROP_PROGRESS,\n            label=\"Which Crop Progress Report?\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    st1 = ctx[\"st1\"][:2]\n    st2 = ctx[\"st2\"][:2]\n    st3 = ctx[\"st3\"][:2]\n    st4 = ctx[\"st4\"][:2]\n    st5 = ctx[\"st5\"][:2]\n    st6 = ctx[\"st6\"][:2]\n    y1 = ctx[\"y1\"]\n    y2 = ctx.get(\"y2\")\n    y3 = ctx.get(\"y3\")\n    y4 = ctx.get(\"y4\")\n    years = [y1, y2, y3, y4]\n    states = [st1, st2, st3, st4, st5, st6]\n    varname = ctx[\"var\"]\n    desc = NASS_CROP_PROGRESS_LOOKUP[varname]\n    if not isinstance(desc, list):\n        desc = [\n            desc,\n        ]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                select extract(year from week_ending) as year, week_ending,\n                sum(num_value) as value, state_alpha\n                from nass_quickstats where short_desc = ANY(:desc) and\n                num_value is not null and state_alpha = ANY(:states)\n                GROUP by year, week_ending, state_alpha\n                ORDER by state_alpha, week_ending\"\"\"\n            ),\n            conn,\n            params={\n                \"states\": states,\n                \"desc\": desc,\n            },\n            index_col=None,\n            parse_dates=\"week_ending\",\n        )\n    if df.empty:\n        raise NoDataFound(\"ERROR: No data found!\")\n    df[\"doy\"] = pd.to_numeric(df[\"week_ending\"].dt.strftime(\"%j\"))\n    prop = FontProperties(size=10)\n\n    title = (\n        f\"{NASS_CROP_PROGRESS[varname]} \"\n        f\"({df['year'].min():.0f} till {df['week_ending'].max():%-d %b %Y})\"\n    )\n    fig = figure(\n        title=title,\n        subtitle=\"USDA/NASS Weekly Crop Condition Report\",\n        apctx=ctx,\n    )\n    width = 0.28\n    height = 0.32\n    x0 = 0.08\n    xpad = 0.03\n    y0 = 0.07\n    y1 = 0.51\n    if ctx[\"w\"] == \"one\":\n        axes = [\n            [fig.add_axes((x0, 0.12, 0.9, 0.75)), None, None],\n            [None, None, None],\n        ]\n    elif ctx[\"w\"] == \"two\":\n        axes = [\n            [\n                fig.add_axes((x0, 0.12, 0.42, 0.75)),\n                fig.add_axes((x0 + 0.47, 0.12, 0.42, 0.75)),\n                None,\n            ],\n            [None, None, None],\n        ]\n    else:\n        axes = [\n            [\n                fig.add_axes((x0, y1, width, height)),\n                fig.add_axes((x0 + width + xpad, y1, width, height)),\n                fig.add_axes((x0 + 2 * width + 2 * xpad, y1, width, height)),\n            ],\n            [\n                fig.add_axes((x0, y0, width, height)),\n                fig.add_axes((x0 + width + xpad, y0, width, height)),\n                fig.add_axes((x0 + 2 * width + 2 * xpad, y0, width, height)),\n            ],\n        ]\n\n    xticks = (1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335)\n    i = 0\n    for col in range(3):\n        for row in range(2):\n            ax = axes[row][col]\n            if ax is None:\n                continue\n            state = states[i]\n            df2 = df[df[\"state_alpha\"] == state]\n            if df2.empty:\n                continue\n            colors = [\"black\", \"green\", \"blue\", \"red\"]\n\n            for year, gdf in df2.groupby(\"year\"):\n                if ctx[\"y\"] != \"all\" and year not in years:\n                    continue\n                ax.plot(\n                    gdf[\"doy\"],\n                    gdf[\"value\"],\n                    c=\"tan\" if year not in years else colors.pop(),\n                    lw=3 if year in years else 1,\n                    zorder=5 if year in years else 3,\n                    label=f\"{year:.0f}\" if year in years else None,\n                )\n            if row == 0 and col == 0 and ctx[\"w\"] == \"one\":\n                ax.legend(ncol=5, loc=(0.35, -0.1), prop=prop)\n            if row == 0 and col == 1:\n                ax.legend(ncol=5, loc=(0.4, -0.25), prop=prop)\n            ax.set_xticks(xticks)\n            ax.set_xticklabels(calendar.month_abbr[1:])\n            ax.set_xlim(df[\"doy\"].min() - 5, df[\"doy\"].max() + 5)\n            ax.grid(True)\n            ax.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n            ax.set_ylim(0, 100)\n            if col == 0:\n                ax.set_ylabel(\"Coverage [%]\")\n            ax.text(\n                0,\n                1.0,\n                state_names[state],\n                ha=\"left\",\n                va=\"bottom\",\n                size=16,\n                transform=ax.transAxes,\n            )\n            i += 1\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p157.py",
    "content": "\"\"\"\nBased on available hourly or better observations, the IEM computes local\ncalendar day statistics for variables like relative humidity, dew point,\nand feels like (read: windchill or heat index) temperature.  This autoplot\ncomputes a simple climatology of these values with a smoothing to remove some\nof the day to day variability.\n\n<p>Note that the observations plotted can fall outside of the smoothed range of\nvalues, as the smoothing is applied to the climatology and not the individual\nobservations.\n\"\"\"\n\nimport calendar\nfrom datetime import datetime, timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nPDICT = {\"above\": \"Above Threshold\", \"below\": \"Below Threshold\"}\nPDICT2 = {\n    \"max_rh\": \"Daily Max RH\",\n    \"avg_rh\": \"Daily Avg RH\",\n    \"min_rh\": \"Daily Min RH\",\n    \"max_dwpf\": \"Daily Max Dew Point\",\n    \"min_dwpf\": \"Daily Min Dew Point\",\n    \"max_feel\": \"Daily Max Feels Like\",\n    \"avg_feel\": \"Daily Avg Feels Like\",\n    \"min_feel\": \"Daily Min Feels Like\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = datetime.today() - timedelta(days=1)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"station\",\n            default=\"DSM\",\n            label=\"Select Station\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=today.year,\n            label=\"Plot this year's observations:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            options=PDICT2,\n            default=\"max_rh\",\n            label=\"Which Variable\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"dir\",\n            options=PDICT,\n            default=\"above\",\n            label=\"Threshold Direction\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"thres\",\n            default=95,\n            label=\"Threshold [%] for Frequency\",\n        ),\n        {\n            \"type\": \"int\",\n            \"name\": \"smooth\",\n            \"default\": 7,\n            \"label\": \"Smoothing Window Size (days), 1 disables, max 60\",\n        },\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    year = ctx[\"year\"]\n    threshold = ctx[\"thres\"]\n    mydir = ctx[\"dir\"]\n    varname = ctx[\"var\"]\n    smooth = ctx[\"smooth\"]\n    if smooth < 1 or smooth > 60:\n        raise ValueError(\"Invalid smoothing window size, must be 1-60\")\n\n    op = \">=\" if mydir == \"above\" else \"<\"\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        obsdf = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT day, extract(doy from day) as doy, {varname},\n            case when {varname} {op} :threshold then 1 else 0 end\n            as threshold_exceed from summary s WHERE iemid = :iemid\n            and {varname} is not null ORDER by day ASC\n        \"\"\",\n                varname=varname,\n                op=op,\n            ),\n            conn,\n            params={\n                \"threshold\": threshold,\n                \"iemid\": ctx[\"_nt\"].sts[station][\"iemid\"],\n            },\n            index_col=\"day\",\n            parse_dates=\"day\",\n        )\n    if obsdf.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    thisyear = obsdf.loc[f\"{year}-01-01\" : f\"{year}-12-31\"]\n    bydoy = (\n        obsdf[[\"doy\", varname]]\n        .groupby(\"doy\")\n        .describe()\n        .rolling(window=smooth, center=True)\n        .mean()\n    )\n    bydoy.columns = bydoy.columns.droplevel(0)\n    bydoy.index.name = \"day_of_year\"\n    ttitle = \"\"\n    if smooth > 1:\n        ttitle = f\" {smooth} Day Centered Smooth Applied\"\n    title = (\n        f\"{ctx['_sname']} ({obsdf.index[0].year}-{obsdf.index[-1].year})\\n\"\n        f\"{PDICT2[varname]} Climatology {ttitle}\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.add_axes((0.1, 0.55, 0.8, 0.35))\n    ax.fill_between(\n        bydoy.index.values,\n        bydoy[\"min\"],\n        bydoy[\"max\"],\n        color=\"tan\",\n        label=\"Range\",\n    )\n    ax.fill_between(\n        bydoy.index.values,\n        bydoy[\"25%\"],\n        bydoy[\"75%\"],\n        color=\"lightblue\",\n        label=\"25-75 Percentile\",\n    )\n    ax.plot(bydoy.index.values, bydoy[\"mean\"], color=\"k\", lw=2, label=\"Mean\")\n    if not thisyear.empty:\n        ax.scatter(\n            thisyear[\"doy\"].values,\n            thisyear[varname].values,\n            color=\"b\",\n            label=f\"{year} Obs\",\n        )\n    ax.legend(ncol=4, loc=(0.05, -0.24), fontsize=12)\n    ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_xlim(1, 365)\n    ax.grid(True)\n    units = \"%\" if varname.find(\"rh\") > 0 else \"F\"\n    ax.set_ylabel(f\"{PDICT2[varname]} [{units}]\")\n\n    # Frequency\n    ax2 = fig.add_axes((0.1, 0.1, 0.8, 0.35))\n    probs = (\n        obsdf[[\"doy\", \"threshold_exceed\"]]\n        .groupby(\"doy\")\n        .mean()\n        .rolling(window=smooth, center=True)\n        .mean()\n    )\n    bydoy[\"threshold_exceed_freq\"] = probs[\"threshold_exceed\"]\n    ax2.plot(\n        probs.index.values, probs[\"threshold_exceed\"].values * 100.0, lw=2\n    )\n    ax2.set_ylabel(\n        f\"Daily Frequency [%]\\n{varname} {op} {threshold:.0f}{units}\",\n    )\n    ax2.set_ylim(0, 100)\n    ax2.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    ax2.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax2.set_xticklabels(calendar.month_abbr[1:])\n    ax2.set_xlim(1, 365)\n    ax2.grid(True)\n    return fig, bydoy\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p158.py",
    "content": "\"\"\"\nThis plot presents one second data from the\nIowa Atmospheric Observatory Tall-Towers sites overseen by Dr Gene Takle.\nThe plot limits the number of times plotted to approximately 1,000 so to\nprevent web browser crashes.  If you select a time period greater than\n20 minutes, you will get strided results.\n\"\"\"\n\nfrom datetime import timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport matplotlib.dates as mdates\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            default=\"ETTI4\",\n            label=\"Select Station\",\n            network=\"TALLTOWERS\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"dt\",\n            default=\"2016/09/15 2340\",\n            label=\"Start Time (UTC Time Zone):\",\n            min=\"2016/04/01 0000\",\n            max=\"2021/09/01 0000\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"minutes\",\n            default=10,\n            label=\"Number of Minutes to Plot\",\n        ),\n    ]\n    return desc\n\n\ndef add_context(ctx):\n    \"\"\"Get plot context\"\"\"\n    ctx[\"dt\"] = ctx[\"dt\"].replace(tzinfo=timezone.utc)\n    dt = ctx[\"dt\"]\n    station = ctx[\"station\"]\n    minutes = ctx[\"minutes\"]\n    # We can't deal with thousands of datapoints on the plot, so we stride\n    # appropriately with hopes of limiting to 1000 x points\n    size = minutes * 60.0\n    stride = 1 if size < 1000 else int((size / 1000) + 1)\n\n    towerid = ctx[\"_nt\"].sts[station][\"remote_id\"]\n    ctx[\"title\"] = f\"Tall Tower {ctx['_nt'].sts[station]['name']}\"\n    with get_sqlalchemy_conn(\"talltowers\") as conn:\n        ctx[\"df\"] = pd.read_sql(\n            \"\"\"\n            WITH data as (\n                SELECT *, row_number() OVER (ORDER by valid ASC)\n                from data_analog where tower = %s and\n                valid between %s and %s ORDER by valid ASC)\n            select * from data where row_number %% %s = 0\n        \"\"\",\n            conn,\n            params=(\n                towerid,\n                dt,\n                dt + timedelta(minutes=minutes),\n                stride,\n            ),\n            index_col=\"valid\",\n        )\n    if ctx[\"df\"].empty:\n        raise NoDataFound(\"Failed to find any data.\")\n\n\ndef get_highcharts(ctx: dict) -> str:\n    \"\"\"Do highcharts variant\"\"\"\n    add_context(ctx)\n    df = ctx[\"df\"]\n    df[\"ticks\"] = df.index.values.view(np.int64) // 1e3\n    lines = []\n    lines2 = []\n    lines3 = []\n    lines4 = []\n    for col in [\n        \"ws_5m_s\",\n        \"ws_5m_nw\",\n        \"ws_10m_s\",\n        \"ws_10m_nwht\",\n        \"ws_20m_s\",\n        \"ws_20m_nw\",\n        \"ws_40m_s\",\n        \"ws_40m_nwht\",\n        \"ws_80m_s\",\n        \"ws_80m_nw\",\n        \"ws_120m_s\",\n        \"ws_120m_nwht\",\n    ]:\n        vals = df[[\"ticks\", col]].to_json(orient=\"values\")\n        lines.append(\n            f\"\"\"{{\n            name: '{col}',\n            type: 'line',\n            tooltip: {{valueDecimal: 1}},\n            data: {vals}\n            }}\n        \"\"\"\n        )\n    for col in [\n        \"airtc_5m\",\n        \"airtc_10m\",\n        \"airtc_20m\",\n        \"airtc_40m\",\n        \"airtc_80m\",\n        \"airtc_120m_1\",\n        \"airtc_120m_2\",\n    ]:\n        vals = df[[\"ticks\", col]].to_json(orient=\"values\")\n        lines2.append(\n            f\"\"\"{{\n            name: '{col}',\n            type: 'line',\n            tooltip: {{valueDecimal: 1}},\n            data: {vals}\n        }}\n        \"\"\"\n        )\n    for col in [\n        \"rh_5m\",\n        \"rh_10m\",\n        \"rh_20m\",\n        \"rh_40m\",\n        \"rh_80m\",\n        \"rh_120m_1\",\n        \"rh_120m_2\",\n    ]:\n        vals = df[[\"ticks\", col]].to_json(orient=\"values\")\n        lines3.append(\n            f\"\"\"{{\n            name: '{col}',\n            type: 'line',\n            tooltip: {{valueDecimal: 1}},\n            data: {vals}\n        }}\n        \"\"\"\n        )\n    for col in [\n        \"winddir_5m_s\",\n        \"winddir_5m_nw\",\n        \"winddir_10m_s\",\n        \"winddir_10m_nw\",\n        \"winddir_20m_s\",\n        \"winddir_20m_nw\",\n        \"winddir_40m_s\",\n        \"winddir_40m_nw\",\n        \"winddir_80m_s\",\n        \"winddir_80m_nw\",\n        \"winddir_120m_s\",\n        \"winddir_120m_nw\",\n    ]:\n        vals = df[[\"ticks\", col]].to_json(orient=\"values\")\n        lines4.append(\n            f\"\"\"{{\n            name: '{col}',\n            type: 'line',\n            tooltip: {{valueDecimal: 1}},\n            data: {vals}\n        }}\n        \"\"\"\n        )\n\n    series = \",\".join(lines)\n    series2 = \",\".join(lines2)\n    series3 = \",\".join(lines3)\n    series4 = \",\".join(lines4)\n\n    return (\n        \"\"\"\n/**\n * In order to synchronize tooltips and crosshairs, override the\n * built-in events with handlers defined on the parent element.\n */\nvar charts = [],\n    options;\n\n/**\n * Synchronize zooming through the setExtremes event handler.\n */\nfunction syncExtremes(e) {\n    var thisChart = this.chart;\n\n    if (e.trigger !== 'syncExtremes') { // Prevent feedback loop\n        Highcharts.each(Highcharts.charts, function (chart) {\n            if (chart !== thisChart) {\n                if (chart.xAxis[0].setExtremes) { // It is null while updating\n                    chart.xAxis[0].setExtremes(e.min, e.max, undefined, false,\n                    { trigger: 'syncExtremes' });\n                }\n            }\n        });\n    }\n}\nfunction syncTooltip(container, p) {\n    Highcharts.each(Highcharts.charts, function (chart) {\n        if (container.id != chart.container.id) {\n            var d = [];\n            for (j=0; j < chart.series.length; j++){\n                d[j] = chart.series[j].data[p];\n            }\n            chart.tooltip.refresh(d[0]);\n        }\n    });\n}\noptions = {\n    time: {useUTC: false},\n    chart: {zoomType: 'x'},\n    legend: {enabled: true},\n    plotOptions: {\n        series: {\n            cursor: 'pointer',\n            allowPointSelect: true,\n            point: {\n                events: {\n                    mouseOver: function () {\n                        // Note, I converted this.x to this.index\n                        //syncTooltip(this.series.chart.container, this.index);\n                    }\n                }\n            }\n        }\n    },\n    tooltip: {\n        shared: true,\n        valueDecimals: 2,\n        crosshairs: true\n    },\n    xAxis: {\n        type: 'datetime',\n        crosshair: true,\n        events: {\n            setExtremes: syncExtremes\n        }\n    }\n};\nfunction createChart(containerId, title, series) {\n    const chartDiv = document.createElement('div');\n    chartDiv.className = 'chart';\n    document.getElementById(containerId).appendChild(chartDiv);\n    Highcharts.chart(chartDiv, {\n        plotOptions: options.plotOptions,\n        chart: {\n            zoomType: 'x',\n            marginLeft: 40, // Keep all charts left aligned\n            spacingTop: 20,\n            spacingBottom: 20\n        },\n        title: {\n            text: title,\n            align: 'left',\n            margin: 0,\n            x: 30\n        },\n        credits: {\n            enabled: false\n        },\n        legend: options.legend,\n        xAxis: {\n            type: 'datetime',\n            crosshair: true,\n            events: {\n                setExtremes: syncExtremes\n            }\n        },\n        yAxis: {\n            title: {\n                text: null\n            }\n        },\n        tooltip: options.tooltip,\n        series: series\n    });\n}\n\nconst apContainer = document.getElementById('ap_container');\napContainer.style.height = '800px';\napContainer.innerHTML =\n    '<div class=\"row\"><div id=\"hc1\" class=\"col-md-6\">' +\n    '</div><div id=\"hc2\" class=\"col-md-6\"></div></div>' +\n    '<div class=\"row\"><div id=\"hc3\" class=\"col-md-6\"></div>' +\n    '<div id=\"hc4\" class=\"col-md-6\"></div></div>';\ncreateChart('hc1', 'Wind Speed', [\"\"\"\n        + series\n        + \"\"\"]);\ncreateChart('hc2', 'Air Temp', [\"\"\"\n        + series2\n        + \"\"\"]);\ncreateChart('hc3', 'RH', [\"\"\"\n        + series3\n        + \"\"\"]);\ncreateChart('hc4', 'Wind Direction', [\"\"\"\n        + series4\n        + \"\"\"]);\n    \"\"\"\n    )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    add_context(ctx)\n\n    fig = figure(apctx=ctx)\n    [ax1, ax2, ax3, ax4] = fig.subplots(4, 1, sharex=True)\n    for height in [5, 10, 20, 40, 80, 120]:\n        x = \"_1\" if height == 120 else \"\"\n        ax1.plot(\n            ctx[\"df\"].index.values,\n            ctx[\"df\"][f\"airtc_{height}m{x}\"].values,\n            lw=2,\n            label=f\"{height}m\",\n        )\n        ax2.plot(\n            ctx[\"df\"].index.values,\n            ctx[\"df\"][f\"rh_{height}m{x}\"].values,\n            lw=2,\n            label=f\"{height}m\",\n        )\n        ax3.plot(\n            ctx[\"df\"].index.values,\n            ctx[\"df\"][f\"ws_{height}m_s\"].values,\n            lw=2,\n            label=f\"{height}m\",\n        )\n        ax4.plot(\n            ctx[\"df\"].index.values,\n            ctx[\"df\"][f\"winddir_{height}m_s\"].values,\n            lw=2,\n            label=f\"{height}m\",\n        )\n    ax1.legend(loc=(0.0, -0.15), ncol=6)\n    ax1.grid(True)\n    ax1.set_ylabel(\"Air Temp C\")\n    ax1.xaxis.set_major_formatter(\n        mdates.DateFormatter(\"%-I %p\\n%-d %b\", tz=ZoneInfo(\"America/Chicago\"))\n    )\n    ax1.set_title(ctx[\"title\"])\n    ax2.grid(True)\n    ax2.set_ylabel(\"RH %\")\n    ax3.grid(True)\n    ax3.set_ylabel(\"Wind Speed mps\")\n    ax4.grid(True)\n    ax4.set_ylabel(\"Wind Dir deg\")\n    # remove timezone since excel no likely\n    ctx[\"df\"].index = ctx[\"df\"].index.tz_localize(None)\n    return fig, ctx[\"df\"]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p159.py",
    "content": "\"\"\"\nBased on available hourly observation reports\nby METAR stations, this application presents the frequency of number\nof hours for a given month or season at a given threshold.\n\n<p>If you pick a custom day of the year period that crosses 1 January,\nthe year of the start date is used within the plot.</p>\n\n<p>The hourly averages are based on years with sufficient data coverage (\n&lt;20% missing). The blue bars indicate years with such amount of missing\ndata.</p>\n\n<p>Please note that <strong>wind gusts</strong> were not recorded prior to\nthe early 1970s for most stations</p>\n\"\"\"\n\nfrom datetime import date, datetime\n\nimport pandas as pd\nfrom matplotlib.ticker import MaxNLocator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot.barchart import barchart_with_top10\n\nMDICT = {\n    \"all\": \"No Month/Time Limit\",\n    \"custom\": \"Custom/Pick Start + End Date\",\n    \"ytd\": f\"Jan 1 through {date.today():%b %-d}\",\n    \"jul1\": \"Jul 1 - Jun 30\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\nMETRICS = {\n    \"tmpf\": \"Air Temp (°F)\",\n    \"dwpf\": \"Dew Point Temp (°F)\",\n    \"dd\": \"Dew Point Depression (°F)\",\n    \"feel\": \"Feels Like Temp (°F)\",\n    \"mslp\": \"Mean Sea Level Pressure (mb)\",\n    \"alti\": \"Pressure Altimeter (inHg)\",\n    \"relh\": \"Relative Humidity (%)\",\n    \"sped\": \"Wind Speed (mph)\",\n    \"gust\": \"Wind Gust (mph)\",\n    \"vsby\": \"Visibility (miles)\",\n}\nUNITS = {\n    \"tmpf\": \"°F\",\n    \"dwpf\": \"°F\",\n    \"dd\": \"°F\",\n    \"feel\": \"°F\",\n    \"relh\": \"%\",\n    \"sped\": \"mph\",\n    \"gust\": \"mph\",\n    \"vsby\": \"miles\",\n    \"mslp\": \"mb\",\n    \"alti\": \"inHg\",\n}\n\nDIRS = {\"aoa\": \"At or Above\", \"below\": \"Below\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"dwpf\",\n            label=\"Which Variable\",\n            options=METRICS,\n        ),\n        dict(\n            type=\"select\",\n            name=\"dir\",\n            default=\"aoa\",\n            label=\"Threshold Direction:\",\n            options=DIRS,\n        ),\n        dict(\n            type=\"float\",\n            name=\"thres\",\n            default=65,\n            label=\"Threshold (°F, %, mph, inHg, mb):\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Date Limiter\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"sday\",\n            name=\"sdate\",\n            default=\"0101\",\n            label=\"Inclusive Start Day of Year (when Date Limiter is custom):\",\n        ),\n        dict(\n            type=\"sday\",\n            name=\"edate\",\n            default=f\"{date.today():%m%d}\",\n            label=\"Inclusive End Day of Year (when Date Limiter is custom):\",\n        ),\n        dict(\n            type=\"year\",\n            min=1973,\n            default=date.today().year,\n            label=\"Year to Highlight\",\n            name=\"year\",\n        ),\n        {\n            \"type\": \"year\",\n            \"name\": \"syear\",\n            \"default\": 1920,\n            \"label\": \"Limit Data Analysis to inclusive start year:\",\n        },\n    ]\n    return desc\n\n\ndef set_df(ctx: dict):\n    \"\"\"Set the dataframe\"\"\"\n    offset = \"ts\"\n    ctx[\"mlabel\"] = (\n        MDICT[ctx[\"month\"]]\n        if ctx[\"month\"] != \"jul1\"\n        else \"Jul-Jun [year of Jul shown]\"\n    )\n    ctx[\"totaldays\"] = 0\n    months = list(range(1, 13))\n    doylimit = \"\"\n    if ctx[\"month\"] in [\"all\", \"jul1\", \"ytd\"]:\n        if ctx[\"month\"] == \"jul1\":\n            offset = \"ts - '6 months'::interval\"\n    elif ctx[\"month\"] == \"custom\":\n        doylimit = (\n            \" and to_char(ts, 'mmdd') >= :sdate and \"\n            \"to_char(ts, 'mmdd') <= :edate \"\n        )\n        ctx[\"totaldays\"] = (ctx[\"edate\"] - ctx[\"sdate\"]).days + 1\n        ctx[\"mlabel\"] = f\" {ctx['sdate']:%b %-d} thru {ctx['edate']:%b %-d}\"\n        if ctx[\"sdate\"] > ctx[\"edate\"]:\n            ctx[\"totaldays\"] = (\n                ctx[\"edate\"].replace(year=2001) - ctx[\"sdate\"]\n            ).days + 1\n            days = (ctx[\"edate\"] - date(2000, 1, 1)).days + 1\n            offset = f\"ts - '{days} days'::interval\"\n            doylimit = (\n                \" and (to_char(ts, 'mmdd') >= :sdate or \"\n                \"to_char(ts, 'mmdd') <= :edate) \"\n            )\n    elif ctx[\"month\"] == \"fall\":\n        months = [9, 10, 11]\n    elif ctx[\"month\"] == \"winter\":\n        months = [12, 1, 2]\n        offset = \"ts + '1 month'::interval\"\n    elif ctx[\"month\"] == \"spring\":\n        months = [3, 4, 5]\n    elif ctx[\"month\"] == \"summer\":\n        months = [6, 7, 8]\n    else:\n        ts = datetime.strptime(f\"2000-{ctx['month']}-01\", \"%Y-%b-%d\")\n        # make sure it is length two for the trick below in SQL\n        months = [ts.month]\n    ctx[\"months\"] = months\n    opp = \">=\" if ctx[\"dir\"] == \"aoa\" else \"<\"\n\n    dbvarname = ctx[\"var\"]\n    if ctx[\"var\"] == \"sped\":\n        dbvarname = \"(sknt * 1.15)\"\n    elif ctx[\"var\"] == \"gust\":\n        dbvarname = \"(gust * 1.15)\"\n    elif ctx[\"var\"] == \"dd\":\n        dbvarname = \"(tmpf - dwpf)\"\n    if ctx[\"month\"] == \"ytd\":\n        doylimit = \" and to_char(ts, 'mmdd') <= :sday \"\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        ctx[\"df\"] = pd.read_sql(\n            sql_helper(\n                \"\"\"WITH hourly as (\n            SELECT date_trunc('hour', valid + '10 minutes'::interval)\n            at time zone :tzname as ts,\n            case when {dbvarname} {opp} :t then 1 else 0 end as hit\n            from alldata where station = :station and report_type = 3 and\n            valid > :start)\n\n            SELECT extract(year from {offset})::int as year,\n            extract(hour from ts)::int as hour,\n            sum(hit) as hits, count(*) as obs from hourly\n            WHERE extract(month from ts) = ANY(:months) {doylimit}\n            GROUP by year, hour\n            \"\"\",\n                dbvarname=dbvarname,\n                opp=opp,\n                offset=offset,\n                doylimit=doylimit,\n            ),\n            conn,\n            params={\n                \"tzname\": ctx[\"_nt\"].sts[ctx[\"zstation\"]][\"tzname\"],\n                \"t\": ctx[\"thres\"],\n                \"station\": ctx[\"zstation\"],\n                \"months\": months,\n                \"sday\": date.today().strftime(\"%m%d\"),\n                \"sdate\": ctx[\"sdate\"].strftime(\"%m%d\"),\n                \"edate\": ctx[\"edate\"].strftime(\"%m%d\"),\n                \"start\": f\"{ctx['syear']}-01-01\",\n            },\n            index_col=None,\n        )\n    if ctx[\"df\"].empty:\n        raise NoDataFound(\"Error, no results returned!\")\n\n\ndef set_fig(ctx: dict):\n    \"\"\"Set the plot\"\"\"\n    ydf = ctx[\"df\"].groupby(\"year\").sum()\n    title = (\n        f\"({ctx['mlabel']}) {METRICS[ctx['var']]} Hours {DIRS[ctx['dir']]} \"\n        f\"{ctx['thres']}{UNITS[ctx['var']]}\\n\"\n        f\"{ctx['_sname']}:: ({ydf.index.min():.0f}-{ydf.index.max():.0f})\"\n    )\n    # Loop over plot years and background highlight any years with less than\n    # 80% data coverage\n    obscount = len(ctx[\"months\"]) * 30 * 24 * 0.8\n    if ctx[\"month\"] == \"ytd\":\n        obscount = int(f\"{date.today():%j}\") * 24 * 0.8\n    elif ctx[\"month\"] == \"custom\":\n        obscount = ctx[\"totaldays\"] * 24 * 0.8\n    ctx[\"fig\"] = figure(apctx=ctx, title=title)\n    quorum = ydf[ydf[\"obs\"] > obscount]\n    if quorum.empty:\n        raise NoDataFound(\"Error, no results returned!\")\n    ax = barchart_with_top10(\n        ctx[\"fig\"],\n        quorum,\n        \"hits\",\n        color=\"green\",\n        table_col_title=\"Hours\",\n    )\n    antiquorum = ydf[ydf[\"obs\"] < obscount]\n    if not antiquorum.empty:\n        ax.bar(\n            antiquorum.index.values,\n            antiquorum[\"hits\"],\n            width=1,\n            align=\"center\",\n            color=\"green\",\n        )\n    ax.set_position((0.07, 0.6, 0.68, 0.3))\n    for _year in range(ydf.index.values[0], ydf.index.values[-1] + 1):\n        if _year not in ydf.index or ydf.at[_year, \"obs\"] < obscount:\n            ax.axvspan(_year - 0.5, _year + 0.5, color=\"#cfebfd\", zorder=-3)\n    if ctx[\"year\"] in ydf.index.values:\n        val = ydf.loc[ctx[\"year\"]]\n        ax.bar(\n            ctx[\"year\"],\n            val[\"hits\"],\n            align=\"center\",\n            fc=\"orange\",\n            ec=\"orange\",\n            zorder=5,\n        )\n    ax.grid(True)\n    ax.set_ylabel(\"Hours\")\n    ax.set_xlim(ydf.index.min() - 0.5, ydf.index.max() + 0.5)\n    ax.xaxis.set_major_locator(MaxNLocator(integer=True))\n    ax.set_xlabel(\"Years with blue shading have more than 20% missing data\")\n    avgv = ydf[\"hits\"].mean()\n    ax.axhline(avgv, color=\"k\", zorder=10)\n    ax.text(ydf.index.max() + 0.7, avgv, f\"Avg\\n{avgv:.1f}\", va=\"center\")\n\n    df2 = ydf[ydf[\"obs\"] > obscount]\n    years = len(df2.index)\n    df2 = ctx[\"df\"][ctx[\"df\"][\"year\"].isin(df2.index.values)]\n    hdf = df2.groupby(\"hour\").sum() / years\n    ax1 = ctx[\"fig\"].add_axes((0.07, 0.1, 0.68, 0.4))\n    ax1.bar(\n        hdf.index.values,\n        hdf[\"hits\"],\n        align=\"center\",\n        fc=\"b\",\n        ec=\"b\",\n        label=\"Avg\",\n    )\n    thisyear = ctx[\"df\"][ctx[\"df\"][\"year\"] == ctx[\"year\"]]\n    if not thisyear.empty:\n        ax1.bar(\n            thisyear[\"hour\"].values,\n            thisyear[\"hits\"],\n            align=\"center\",\n            width=0.25,\n            zorder=5,\n            fc=\"orange\",\n            ec=\"orange\",\n            label=f\"{ctx['year']}\",\n        )\n    ax1.set_xlim(-0.5, 23.5)\n    ax1.grid(True)\n    ax1.legend(loc=(0.7, -0.22), ncol=2, fontsize=10)\n    ax1.set_ylabel(\"Days Per Period\")\n    ax1.set_xticks(range(0, 24, 4))\n    ax1.set_xticklabels([\"Mid\", \"4 AM\", \"8 AM\", \"Noon\", \"4 PM\", \"8 PM\"])\n    ax1.set_xlabel(\n        f\"Hour of Day ({ctx['_nt'].sts[ctx['zstation']]['tzname']})\",\n        ha=\"right\",\n    )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    set_df(ctx)\n    set_fig(ctx)\n\n    return ctx[\"fig\"], ctx[\"df\"]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p160.py",
    "content": "\"\"\"\nThis page presents a sphagetti plot of river stage\nand forecasts.  The plot is roughly centered on the date of your choice\nwith the plot showing any forecasts made three days prior to the date\nand for one day afterwards.  Sorry that you have to know the station ID\nprior to using this page (will fix at some point).  Presented timestamps\nare hopefully all in the local timezone of the reporting station.  If\nyou download the data, the timestamps are all in UTC.</p>\n\n<p>For the image format output options, you can optionally control if\nforecasts, observations, or both are plotted.  For the Interactive Chart\nversion, this is controlled by clicking on the legend items which will\nhide and show the various lines.</p>\n\n<p>A <a href=\"/request/hml.php\">Download Portal</a> is available to more\neasily download the raw data in bulk.</p>\n\"\"\"\n\nfrom datetime import timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport matplotlib.dates as mdates\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom pyiem.util import utc\n\n# Requested removal of bankfull\nSTAGES = \"low action flood moderate major record\".split()\nCOLORS = {\n    \"action\": \"#ffff72\",\n    \"flood\": \"#ffc672\",\n    \"moderate\": \"#ff7272\",\n    \"major\": \"#e28eff\",\n}\nMDICT = {\"primary\": \"Primary Field\", \"secondary\": \"Secondary Field\"}\nPDICT = {\n    \"both\": \"Plot both observations and forecasts\",\n    \"fx\": \"Just plot forecasts\",\n    \"obs\": \"Just plot observations\",\n}\nUTC = timezone.utc\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 3600}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"text\",\n            name=\"station\",\n            default=\"GTTI4\",\n            label=\"Enter 5 Char NWSLI Station Code (sorry):\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"dt\",\n            default=utc().strftime(\"%Y/%m/%d %H%M\"),\n            label=\"Time to center plot at (UTC Time Zone):\",\n            min=\"2013/01/01 0000\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            options=MDICT,\n            label=\"Which Variable to Plot:\",\n            default=\"primary\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"w\",\n            options=PDICT,\n            label=\"What all to plot:\",\n            default=\"both\",\n        ),\n    ]\n    return desc\n\n\ndef add_context(ctx: dict):\n    \"\"\"Do the common work\"\"\"\n\n    ctx[\"station\"] = ctx[\"station\"].upper()[:8]\n    station = ctx[\"station\"]\n    dt = ctx[\"dt\"]\n\n    # Attempt to get station information\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"SELECT * from stations where id = :station \"\n                \"and network ~* 'DCP'\"\n            ),\n            conn,\n            params={\"station\": station},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"Could not find metadata for station.\")\n    row = df.iloc[0]\n    cols = [\"name\", \"tzname\"]\n    cols.extend([f\"sigstage_{x}\" for x in STAGES])\n    for col in cols:\n        ctx[col] = row[col]\n\n    with get_sqlalchemy_conn(\"hml\") as conn:\n        ctx[\"fdf\"] = pd.read_sql(\n            sql_helper(\n                \"\"\"with fx as (\n            select id, issued, primaryname, primaryunits, secondaryname,\n            secondaryunits from hml_forecast where station = :station\n            and generationtime between :sts and :ets)\n        SELECT f.id,\n        f.issued at time zone 'UTC' as issued,\n        d.valid at time zone 'UTC' as valid,\n        d.primary_value, f.primaryname,\n        f.primaryunits, d.secondary_value, f.secondaryname,\n        f.secondaryunits from\n        {table} d JOIN fx f\n        on (d.hml_forecast_id = f.id) ORDER by f.id ASC, d.valid ASC\n        \"\"\",\n                table=f\"hml_forecast_data_{dt.year}\",\n            ),\n            conn,\n            params={\n                \"station\": station,\n                \"sts\": dt - timedelta(days=3),\n                \"ets\": dt + timedelta(days=1),\n            },\n            index_col=None,\n        )\n    if not ctx[\"fdf\"].empty:\n        ctx[\"fdf\"][\"valid\"] = ctx[\"fdf\"][\"valid\"].dt.tz_localize(UTC)\n        ctx[\"fdf\"][\"issued\"] = ctx[\"fdf\"][\"issued\"].dt.tz_localize(UTC)\n        for lbl in [\"primary\", \"secondary\"]:\n            ctx[lbl] = (\n                f\"{ctx['fdf'].iloc[0][lbl + 'name']}\"\n                f\"[{ctx['fdf'].iloc[0][lbl + 'units']}]\"\n            )\n\n        # get obs\n        mints = ctx[\"fdf\"][\"valid\"].min()\n        maxts = ctx[\"fdf\"][\"valid\"].max()\n    else:\n        mints = dt - timedelta(days=3)\n        maxts = dt + timedelta(days=3)\n    with get_sqlalchemy_conn(\"hml\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT valid at time zone 'UTC' as valid,\n            h.label, value from hml_observed_data d\n            JOIN hml_observed_keys h on (d.key = h.id)\n            WHERE station = :station and\n            valid between :mints and :maxts ORDER by valid ASC\n            \"\"\"),\n            conn,\n            params={\"station\": station, \"mints\": mints, \"maxts\": maxts},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df[\"valid\"] = df[\"valid\"].dt.tz_localize(UTC)\n    df = df.groupby([\"valid\", \"label\"]).first().reset_index()\n    ctx[\"odf\"] = df.pivot(index=\"valid\", columns=\"label\", values=\"value\")\n    if ctx[\"fdf\"].empty:\n        ctx[\"df\"] = ctx[\"odf\"].reset_index()\n    else:\n        ctx[\"fdf\"] = ctx[\"fdf\"].reset_index()\n        ctx[\"df\"] = pd.merge(\n            ctx[\"fdf\"],\n            ctx[\"odf\"],\n            left_on=\"valid\",\n            right_on=\"valid\",\n            how=\"left\",\n            sort=False,\n        )\n    ctx[\"title\"] = f\"[{ctx['station']}] {ctx['name']}\"\n    ldt = ctx[\"dt\"].replace(tzinfo=UTC).astimezone(ZoneInfo(ctx[\"tzname\"]))\n    ctx[\"subtitle\"] = f\"+/- 72 hours around {ldt:%d %b %Y %-I:%M %p %Z}\"\n\n\ndef get_highcharts(ctx: dict) -> str:\n    \"\"\"generate highcharts\"\"\"\n    add_context(ctx)\n    if \"df\" not in ctx:\n        raise NoDataFound(\"No Data Found.\")\n    df = ctx[\"df\"]\n    df[\"ticks\"] = df[\"valid\"].astype(np.int64) // 1e3\n    lines = []\n    if \"id\" in df.columns:\n        fxs = df[\"id\"].unique()\n        for fx in fxs:\n            df2 = df[df[\"id\"] == fx]\n            issued = (\n                df2.iloc[0][\"issued\"]\n                .tz_convert(ZoneInfo(ctx[\"tzname\"]))\n                .strftime(\"%-m/%-d %-I%p %Z\")\n            )\n            v = df2[[\"ticks\", f\"{ctx['var']}_value\"]].to_json(orient=\"values\")\n            lines.append(\n                f\"\"\"{{\n                name: '{issued}',\n                type: 'line',\n                tooltip: {{valueDecimal: 1}},\n                data: {v}\n                }}\n            \"\"\"\n            )\n    ctx[\"odf\"][\"ticks\"] = ctx[\"odf\"].index.values.view(np.int64) // 1e3\n    if ctx[\"var\"] in ctx:\n        v = ctx[\"odf\"][[\"ticks\", ctx[ctx[\"var\"]]]].to_json(orient=\"values\")\n        lines.append(\n            f\"\"\"{{\n                name: 'Obs',\n                type: 'line',\n                color: 'black',\n                lineWidth: 3,\n                tooltip: {{valueDecimal: 1}},\n                data: {v}\n                }}\n        \"\"\"\n        )\n    series = \",\".join(lines)\n    lines = []\n    scatter = []\n    if \"[ft]\" in ctx.get(ctx[\"var\"], \"\"):\n        for stage in STAGES:\n            val = ctx[f\"sigstage_{stage}\"]\n            if val is None:\n                continue\n            lines.append(\n                f\"{{value: {val}, color: '{COLORS.get(stage, 'black')}', \"\n                \"dashStyle: 'shortdash', \"\n                f\"width: 2, label: {{text: '{stage} {val}'}}}}\"\n            )\n            # Workaround for plotLines not appearing when out of range\n            scatter.append(\n                f\"\"\"\n    {{\n        type: 'scatter',\n        data: [[{df[\"ticks\"].values[0]}, {val}]],\n        showInLegend: false,\n        type: 'scatter',\n        marker: {{\n            enabled: false\n        }},\n        enableMouseTracking: false,\n        }}\n                \"\"\"\n            )\n    scatterentries = \",\".join(scatter)\n    if scatter:\n        scatterentries = f\",{scatterentries}\"\n    plotlines = \",\".join(lines)\n    containername = ctx[\"_e\"]\n    return f\"\"\"\nHighcharts.chart('{containername}', {{\n    time: {{\n        useUTC: false,\n        timezone: '{ctx[\"tzname\"]}'\n    }},\n    title: {{text: '{ctx[\"title\"]}'}},\n    subtitle: {{text: '{ctx[\"subtitle\"]}'}},\n    chart: {{zoomType: 'xy'}},\n    tooltip: {{\n        shared: true,\n        crosshairs: true,\n        xDateFormat: '%d %b %Y %I:%M %p'\n    }},\n    xAxis: {{\n        title: {{text: '{ctx[\"tzname\"]} Timezone'}},\n        type: 'datetime'\n    }},\n    yAxis: {{\n        title: {{text: '{ctx.get(ctx[\"var\"], \"primary\")}'}},\n        plotLines: [{plotlines}]\n    }},\n    series: [{series}{scatterentries}]\n}});\n// Add a checkbox after the chart that scales the y-axis to the series range\n$('<input type=\"checkbox\" id=\"scaleY\" checked=\"checked\"> '+\n '<label for=\"scaleY\">Scale to Flood Categories</label>')\n    .appendTo($('#{containername}_controls'))\n    .change(function() {{ // this\n        const chart = $('#{containername}').highcharts();\n        if (this.checked) {{\n            chart.yAxis[0].setExtremes(null, null);\n        }} else {{\n            chart.yAxis[0].setExtremes(\n                chart.series[0].dataMin, chart.series[0].dataMax, true, false);\n        }}\n    }});\n    \"\"\"\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    add_context(ctx)\n    if \"df\" not in ctx or (ctx[\"df\"].empty and ctx[\"odf\"].empty):\n        raise NoDataFound(\"No Data Found!\")\n    df = ctx[\"df\"]\n    title = \"\\n\".join([ctx[\"title\"], ctx[\"subtitle\"]])\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    if ctx[\"w\"] in [\"fx\", \"both\"] and \"id\" in df.columns:\n        fxs = df[\"id\"].unique()\n        for fx in fxs:\n            df2 = df[df[\"id\"] == fx]\n            issued = (\n                df2.iloc[0][\"issued\"]\n                .tz_convert(ZoneInfo(ctx[\"tzname\"]))\n                .strftime(\"%-m/%-d %-I%p %Z\")\n            )\n            ax.plot(\n                df2[\"valid\"],\n                df2[f\"{ctx['var']}_value\"],\n                zorder=2,\n                label=issued,\n            )\n    if (\n        ctx[\"w\"] in [\"obs\", \"both\"]\n        and not ctx[\"odf\"].empty\n        and ctx[\"var\"] in ctx\n        and ctx[ctx[\"var\"]] in ctx[\"odf\"].columns\n    ):\n        ax.plot(\n            ctx[\"odf\"].index.values,\n            ctx[\"odf\"][ctx[ctx[\"var\"]]],\n            lw=2,\n            color=\"k\",\n            label=\"Obs\",\n            zorder=4,\n        )\n        ax.set_ylabel(ctx[ctx[\"var\"]])\n    ylim = ax.get_ylim()\n    for stage in STAGES:\n        val = ctx[f\"sigstage_{stage}\"]\n        if val is None:\n            continue\n        ax.axhline(\n            val,\n            linestyle=\"-.\",\n            color=COLORS.get(stage, \"#000000\"),\n            label=f\"{stage} - {val}\",\n        )\n    ax.set_ylim(*ylim)\n    ax.xaxis.set_major_locator(\n        mdates.AutoDateLocator(tz=ZoneInfo(ctx[\"tzname\"]))\n    )\n    ax.xaxis.set_major_formatter(\n        mdates.DateFormatter(\"%-d %b\\n%Y\", tz=ZoneInfo(ctx[\"tzname\"]))\n    )\n    pos = ax.get_position()\n    ax.grid(True)\n    ax.set_position([pos.x0, pos.y0, 0.74, 0.8])\n    ax.set_xlabel(f\"Timestamps in {ctx['tzname']} Timezone\")\n    ax.legend(loc=(1.0, 0.0))\n    fmt = \"%Y-%m-%d %H:%M\"\n    if \"issued\" in df.columns:\n        df[\"issued\"] = df[\"issued\"].apply(lambda x: x.strftime(fmt))\n    df[\"valid\"] = df[\"valid\"].apply(lambda x: x.strftime(fmt))\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p161.py",
    "content": "\"\"\"\nThis application plots the number of days for a\ngiven month or period of months that a given variable was above or below\nsome threshold.  If you select the winter season, the year represents the\nyear of the December month included in the period.\n\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.util import month2months\n\nMDICT = {\n    \"all\": \"No Month/Time Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\nMETRICS = {\n    \"avg_sknt\": \"Avg Wind Speed (kts)\",\n    \"max_sknt\": \"Max Wind Speed (kts)\",\n    \"max_gust\": \"Max Wind Speed Gust (kts)\",\n    \"max_tmpf\": \"Max Air Temp (°F)\",\n    \"min_tmpf\": \"Min Air Temp (°F)\",\n    \"max_dwpf\": \"Max Dew Point Temp (°F)\",\n    \"min_dwpf\": \"Min Dew Point Temp (°F)\",\n    \"max_feel\": \"Max Feels Like Temperature (°F)\",\n    \"avg_feel\": \"Avg Feels Like Temperature (°F)\",\n    \"min_feel\": \"Min Feels Like Temperature (°F)\",\n    \"max_rh\": \"Max Relative Humidity (%)\",\n    \"avg_rh\": \"Avg Relative Humidity (%)\",\n    \"min_rh\": \"Min Relative Humidity (%)\",\n    \"pday\": \"Precipitation (inch)\",\n}\n\nDIRS = {\"aoa\": \"At or Above\", \"below\": \"Below\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"max_dwpf\",\n            label=\"Which Variable\",\n            options=METRICS,\n        ),\n        dict(\n            type=\"select\",\n            name=\"dir\",\n            default=\"aoa\",\n            label=\"Threshold Direction:\",\n            options=DIRS,\n        ),\n        dict(type=\"float\", name=\"thres\", default=65, label=\"Threshold\"),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"year\",\n            min=1900,\n            default=date.today().year,\n            label=\"Year to Highlight\",\n            name=\"year\",\n        ),\n    ]\n    return desc\n\n\ndef add_context(ctx):\n    \"\"\"Do the processing work\"\"\"\n\n    station = ctx[\"zstation\"]\n    month = ctx[\"month\"]\n    varname = ctx[\"var\"]\n    mydir = ctx[\"dir\"]\n    threshold = ctx[\"thres\"]\n\n    months = month2months(month)\n\n    opp = \">=\" if mydir == \"aoa\" else \"<\"\n    months_to_offset = [99]\n    ctx[\"xlabel\"] = \"Year\"\n    if month == \"winter\":\n        ctx[\"xlabel\"] = \"Year of December in (Dec-Jan-Feb)\"\n        months_to_offset = [1, 2]\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        ctx[\"df\"] = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT case when extract(month from day) = ANY(:moff)\n            then extract(year from day) - 1 else extract(year from day) end\n            as year,\n            sum(case when {varname} {opp} :t then 1 else 0 end) as count\n            from summary s JOIN stations t on (s.iemid = t.iemid)\n            WHERE t.id = :station and t.network = :network\n            and extract(month from day) = ANY(:months)\n            and {varname} is not null\n            GROUP by year ORDER by year ASC\n            \"\"\",\n                varname=varname,\n                opp=opp,\n            ),\n            conn,\n            params={\n                \"t\": threshold,\n                \"station\": station,\n                \"network\": ctx[\"network\"],\n                \"moff\": months_to_offset,\n                \"months\": months,\n            },\n            index_col=\"year\",\n        )\n    ctx[\"title\"] = \"(%s) %s %s %.0f\" % (\n        MDICT[ctx[\"month\"]],\n        METRICS[ctx[\"var\"]],\n        DIRS[ctx[\"dir\"]],\n        ctx[\"thres\"],\n    )\n    ctx[\"subtitle\"] = ctx[\"_sname\"]\n\n\ndef get_highcharts(ctx: dict) -> str:\n    \"\"\"Highcharts output\"\"\"\n    add_context(ctx)\n    ctx[\"df\"] = ctx[\"df\"].reset_index()\n    data = ctx[\"df\"][[\"year\", \"count\"]].to_json(orient=\"values\")\n    containername = ctx[\"_e\"]\n\n    return f\"\"\"\nHighcharts.chart('{containername}', {{\n        chart: {{\n            type: 'column'\n        }},\n        yAxis: {{title: {{text: 'Days'}}}},\n        xAxis: {{title: {{text: '{ctx[\"xlabel\"]}'}}}},\n        title: {{text: '{ctx[\"title\"]}'}},\n        subtitle: {{text: '{ctx[\"subtitle\"]}'}},\n        series: [{{\n            name: 'Days',\n            data: {data}\n        }}]\n    }});\n    \"\"\"\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    add_context(ctx)\n    df = ctx[\"df\"]\n    if df.empty:\n        raise NoDataFound(\"Database query found no data!\")\n\n    title = f\"{ctx['title']}\\n{ctx['subtitle']}\"\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n    ax.bar(\n        df.index.values, df[\"count\"], align=\"center\", fc=\"green\", ec=\"green\"\n    )\n    if ctx[\"year\"] in df.index:\n        ax.bar(\n            ctx[\"year\"],\n            df.at[ctx[\"year\"], \"count\"],\n            align=\"center\",\n            fc=\"red\",\n            ec=\"red\",\n            zorder=5,\n        )\n    ax.grid(True)\n    ax.set_ylabel(\"Days Per Period\")\n    ax.set_xlabel(ctx[\"xlabel\"])\n    ax.set_xlim(df.index.min() - 0.5, df.index.max() + 0.5)\n    avgv = df[\"count\"].mean()\n    ax.axhline(avgv)\n    ax.text(df.index.max() + 1, avgv, \"%.1f\" % (avgv,))\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p162.py",
    "content": "\"\"\"\nThis plot presents a 2-D histogram of reported cloud ceilings as inferred by\nthe METAR cloud amount reports of at least BKN (broken) or OVC (overcast)\nfrom the automated sensor.  Please note that the yaxis\nuses an irregular spacing.\n\"\"\"\n\nfrom datetime import date\n\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport numpy.ma as ma\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes, get_cmap\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"jet\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            select extract(doy from valid) as doy,\n            CASE\n                WHEN skyc1 in ('BKN', 'OVC') THEN skyl1\n                WHEN skyc2 in ('BKN', 'OVC') THEN skyl2\n                WHEN skyc3 in ('BKN', 'OVC') THEN skyl3\n                WHEN skyc4 in ('BKN', 'OVC') THEN skyl4\n            END as sky\n            from alldata\n            WHERE station = :station\n            and valid > '1973-01-01' and report_type = 3\n            and (skyc1 in ('BKN', 'OVC') or skyc2 in ('BKN', 'OVC')\n                 or skyc3 in ('BKN', 'OVC') or skyc4 in ('BKN', 'OVC'))\n        \"\"\"),\n            conn,\n            params={\"station\": station},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"Error, no results returned!\")\n\n    w = np.arange(1, 366, 7)\n    z = np.append(\n        np.arange(100, 5001, 100),\n        np.append(\n            np.arange(5500, 10001, 500),\n            np.arange(11000, 31001, 1000),\n        ),\n    )\n\n    H, xedges, yedges = np.histogram2d(\n        df[\"sky\"].to_numpy(), df[\"doy\"].to_numpy(), bins=(z, w)\n    )\n    rows = []\n    for i, x in enumerate(xedges[:-1]):\n        for j, y in enumerate(yedges[:-1]):\n            rows.append(dict(ceiling=x, doy=y, count=H[i, j]))\n    resdf = pd.DataFrame(rows)\n\n    H = ma.array(H)\n    H.mask = np.where(H < 1, True, False)\n\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    syear = max([1973, ab.year])\n\n    (fig, ax) = figure_axes(\n        title=f\"({syear}-{date.today().year}) {ctx['_sname']} Ceiling\",\n        subtitle=\"Frequency of first cloud level with BKN or OVC reported\",\n        apctx=ctx,\n    )\n\n    bounds = np.arange(0, 1.2, 0.1)\n    bounds = np.concatenate((bounds, np.arange(1.2, 2.2, 0.2)))\n    cmap = get_cmap(ctx[\"cmap\"])\n    cmap.set_under(\"#F9CCCC\")\n    # If the number of bounds is greater than the cmap colors, we need to\n    # adjust\n    if len(bounds) > cmap.N:\n        bounds = np.linspace(0, 2, cmap.N)\n    norm = mpcolors.BoundaryNorm(bounds, cmap.N)\n\n    years = date.today().year - syear + 1.0\n    c = ax.imshow(\n        H / years, aspect=\"auto\", interpolation=\"nearest\", norm=norm, cmap=cmap\n    )\n    ax.set_ylim(-0.5, len(z) - 0.5)\n    idx = [0, 4, 9, 19, 29, 39, 49, 54, 59, 64, 69, 74, 79]\n    ax.set_yticks(idx)\n    ax.set_yticklabels(z[idx])\n    ax.set_ylabel(\"Overcast/Broken Level [ft AGL], irregular scale\")\n    ax.set_xlabel(\"Week of the Year\")\n    ax.set_xticks(np.arange(1, 55, 7))\n    ax.set_xticklabels(\n        \"Jan 1,Feb 19,Apr 8,May 27,Jul 15,Sep 2,Oct 21,Dec 9\".split(\",\")\n    )\n    b = fig.colorbar(c)\n    b.set_label(\"Hourly Obs per week per year\")\n    return fig, resdf\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p163.py",
    "content": "\"\"\"\nThis application generates a map displaying the\nnumber of LSRs issued between a period of your choice. These\nare the preliminary reports and not official totals of events.</p>\n\n<p>For plots that compare against an \"average\" value, the period of record\nis used (since 2002).</p>\n\n<p><strong>NOTE:</strong> If you choose a period longer than one year,\nonly the \"count\" metric is available.  Sorry.</p>\n\n<p><strong>Caution while plotting by county:</strong> The raw NWS LSR\nproduct text only contains a free-text name and state.  The IEM attempts\nto use some heuristics to associate those with an actual political\nboundary.  This fails about one percent of the time.\n\"\"\"\n\nfrom datetime import timedelta, timezone\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot, get_cmap, pretty_bins\nfrom pyiem.util import utc\n\nMDICT = {\n    \"NONE\": \"All LSR Types\",\n    \"NRS\": \"All LSR Types except HEAVY RAIN + SNOW\",\n    \"H1\": \"One Inch and Larger Hail \",\n    \"H2\": \"Two Inch and Larger Hail \",\n    \"G58\": \"Thunderstorm Wind Gust >= 58 MPH \",\n    \"G75\": \"Thunderstorm Wind Gust >= 75 MPH \",\n    \"CON\": \"Convective LSRs (Tornado, TStorm Gst/Dmg, Hail)\",\n    \"AVALANCHE\": \"AVALANCHE\",\n    \"BLIZZARD\": \"BLIZZARD\",\n    \"COASTAL FLOOD\": \"COASTAL FLOOD\",\n    \"DEBRIS FLOW\": \"DEBRIS FLOW\",\n    \"DENSE FOG\": \"DENSE FOG\",\n    \"DOWNBURST\": \"DOWNBURST\",\n    \"DUST STORM\": \"DUST STORM\",\n    \"EXCESSIVE HEAT\": \"EXCESSIVE HEAT\",\n    \"EXTREME COLD\": \"EXTREME COLD\",\n    \"EXTR WIND CHILL\": \"EXTR WIND CHILL\",\n    \"FLASH FLOOD\": \"FLASH FLOOD\",\n    \"FLOOD\": \"FLOOD\",\n    \"FOG\": \"FOG\",\n    \"FREEZE\": \"FREEZE\",\n    \"FREEZING DRIZZLE\": \"FREEZING DRIZZLE\",\n    \"FREEZING RAIN\": \"FREEZING RAIN\",\n    \"FUNNEL CLOUD\": \"FUNNEL CLOUD\",\n    \"HAIL\": \"HAIL\",\n    \"HEAVY RAIN\": \"HEAVY RAIN\",\n    \"HEAVY SLEET\": \"HEAVY SLEET\",\n    \"HEAVY SNOW\": \"HEAVY SNOW\",\n    \"HIGH ASTR TIDES\": \"HIGH ASTR TIDES\",\n    \"HIGH SURF\": \"HIGH SURF\",\n    \"HIGH SUST WINDS\": \"HIGH SUST WINDS\",\n    \"HURRICANE\": \"HURRICANE\",\n    \"ICE STORM\": \"ICE STORM\",\n    \"LAKESHORE FLOOD\": \"LAKESHORE FLOOD\",\n    \"LIGHTNING\": \"LIGHTNING\",\n    \"LOW ASTR TIDES\": \"LOW ASTR TIDES\",\n    \"MARINE TSTM WIND\": \"MARINE TSTM WIND\",\n    \"NON-TSTM WND DMG\": \"NON-TSTM WND DMG\",\n    \"NON-TSTM WND GST\": \"NON-TSTM WND GST\",\n    \"RAIN\": \"RAIN\",\n    \"RIP CURRENTS\": \"RIP CURRENTS\",\n    \"SLEET\": \"SLEET\",\n    \"SNOW\": \"SNOW\",\n    \"STORM SURGE\": \"STORM SURGE\",\n    \"TORNADO\": \"TORNADO\",\n    \"TROPICAL STORM\": \"TROPICAL STORM\",\n    \"TSTM WND DMG\": \"TSTM WND DMG\",\n    \"TSTM WND GST\": \"TSTM WND GST\",\n    \"WALL CLOUD\": \"WALL CLOUD\",\n    \"WATER SPOUT\": \"WATER SPOUT\",\n    \"WILDFIRE\": \"WILDFIRE\",\n}\nPDICT = {\n    \"ugc\": \"By County\",\n    \"wfo\": \"By NWS Forecast Office\",\n    \"state\": \"By State\",\n}\nPDICT2 = {\n    \"count\": \"Event Count\",\n    \"days\": \"Days with 1+ Events\",\n    \"count_rank\": \"Rank of Event Count (1=lowest) Since 2003\",\n    \"count_mean\": \"Average Event Count Since 2003\",\n    \"count_departure\": \"Departure from Average of Event Count\",\n    \"count_standard\": \"Standardized Departure from Average of Event Count\",\n}\nPDICT3 = {\n    \"yes\": \"Label Values\",\n    \"no\": \"Hide Label Values\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = utc() + timedelta(days=1)\n    jan1 = today.replace(month=1, day=1)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"csector\",\n            default=\"conus\",\n            name=\"csector\",\n            label=\"Geographical extent to plot:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"count\",\n            options=PDICT2,\n            label=\"Which metric to plot:\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"sdate\",\n            default=jan1.strftime(\"%Y/%m/%d 0000\"),\n            label=\"Start Date / Time (UTC, inclusive):\",\n            min=\"2002/01/01 0000\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"edate\",\n            default=today.strftime(\"%Y/%m/%d 0000\"),\n            label=\"End Date / Time (UTC):\",\n            min=\"2002/01/01 0000\",\n            max=today.strftime(\"%Y/%m/%d 0000\"),\n        ),\n        dict(\n            type=\"select\",\n            name=\"filter\",\n            default=\"NONE\",\n            options=MDICT,\n            label=\"Local Storm Report Type Filter\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"by\",\n            default=\"wfo\",\n            label=\"Aggregate Option:\",\n            options=PDICT,\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"plasma\", label=\"Color Ramp:\"),\n        dict(\n            type=\"select\",\n            options=PDICT3,\n            default=\"yes\",\n            label=\"Label values on map?\",\n            name=\"lbl\",\n        ),\n    ]\n    return desc\n\n\ndef get_count_bins(df: pd.DataFrame, varname: str):\n    \"\"\"Figure out sensible bins.\"\"\"\n    minv = df[varname].min()\n    maxv = df[varname].max()\n    if varname == \"count_rank\":\n        bins = np.arange(1, maxv + 2)\n    elif varname == \"count_mean\":\n        bins = pretty_bins(minv, maxv)\n    elif max([abs(minv), abs(maxv)]) > 100:\n        bins = [-200, -150, -100, -50, -25, -10, 0, 10, 25, 50, 100, 150, 200]\n    elif max([abs(minv), abs(maxv)]) > 10:\n        bins = [-100, -50, -25, -10, -5, 0, 5, 10, 25, 50, 100]\n    else:\n        bins = np.arange(-3, 3.1, 0.5)\n    return bins\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    params = {\n        \"sts\": ctx[\"sdate\"].replace(tzinfo=timezone.utc),\n        \"ets\": ctx[\"edate\"].replace(tzinfo=timezone.utc),\n    }\n    varname = ctx[\"var\"]\n    by = ctx[\"by\"]\n    myfilter = ctx[\"filter\"]\n    if myfilter == \"NONE\":\n        tlimiter = \"\"\n    elif myfilter == \"NRS\":\n        tlimiter = \" and typetext not in ('HEAVY RAIN', 'SNOW', 'HEAVY SNOW') \"\n    elif myfilter == \"H1\":\n        tlimiter = \" and typetext = 'HAIL' and magnitude >= 1 \"\n    elif myfilter == \"H2\":\n        tlimiter = \" and typetext = 'HAIL' and magnitude >= 2 \"\n    elif myfilter == \"G58\":\n        tlimiter = \" and type = 'G' and magnitude >= 58 \"\n    elif myfilter == \"G75\":\n        tlimiter = \" and type = 'G' and magnitude >= 75 \"\n    elif myfilter == \"CON\":\n        tlimiter = (\n            \" and typetext in ('TORNADO', 'HAIL', 'TSTM WND GST', \"\n            \"'TSTM WND DMG') \"\n        )\n    else:\n        tlimiter = \" and typetext = :myfilter \"\n        params[\"myfilter\"] = myfilter\n    state_limiter = \"\"\n    if len(ctx[\"csector\"]) == 2:\n        state_limiter = \" and l.state = :state \"\n        params[\"state\"] = ctx[\"csector\"]\n    cmap = get_cmap(ctx[\"cmap\"])\n    extend = \"neither\"\n\n    if varname == \"days\":\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            if by != \"ugc\":\n                df = pd.read_sql(\n                    sql_helper(\n                        \"\"\"\n                WITH data as (\n                    SELECT distinct wfo, state, date(valid)\n                    from lsrs l where valid >= :sts and valid < :ets {tlimiter}\n                    {state_limiter}\n                )\n                SELECT {by}, count(*) from data GROUP by {by}\n                \"\"\",\n                        by=by,\n                        state_limiter=state_limiter,\n                        tlimiter=tlimiter,\n                    ),\n                    conn,\n                    params=params,\n                    index_col=by,\n                )\n            else:\n                df = pd.read_sql(\n                    sql_helper(\n                        \"\"\"\n                WITH data as (\n                    SELECT distinct ugc, date(valid)\n                    from lsrs l JOIN ugcs u on (l.gid = u.gid)\n                    where valid >= :sts and valid < :ets {tlimiter}\n                    {state_limiter}\n                )\n                SELECT ugc, count(*) from data GROUP by ugc\n                \"\"\",\n                        state_limiter=state_limiter,\n                        tlimiter=tlimiter,\n                    ),\n                    conn,\n                    params=params,\n                    index_col=by,\n                )\n        df2 = df[\"count\"]\n        if df2.max() < 10:\n            bins = list(range(1, 11, 1))\n        else:\n            bins = np.linspace(1, df2.max() + 11, 10, dtype=\"i\")\n        units = \"Days\"\n        lformat = \"%.0f\"\n        cmap.set_under(\"white\")\n        cmap.set_over(\"#EEEEEE\")\n    elif varname == \"count\":\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            if by != \"ugc\":\n                df = pd.read_sql(\n                    sql_helper(\n                        \"\"\"\n                WITH data as (\n                    SELECT distinct wfo, state, valid, type,\n                    magnitude, geom from lsrs l\n                    where valid >= :sts and valid < :ets {tlimiter}\n                    {state_limiter}\n                )\n                SELECT {by}, count(*) from data GROUP by {by}\n                \"\"\",\n                        by=by,\n                        state_limiter=state_limiter,\n                        tlimiter=tlimiter,\n                    ),\n                    conn,\n                    index_col=by,\n                    params=params,\n                )\n            else:\n                df = pd.read_sql(\n                    sql_helper(\n                        \"\"\"\n                WITH data as (\n                    SELECT distinct ugc, valid, type,\n                    magnitude, l.geom from\n                    lsrs l JOIN ugcs u on (l.gid = u.gid)\n                    where valid >= :sts and valid < :ets {tlimiter}\n                    {state_limiter}\n                )\n                SELECT ugc, count(*) from data GROUP by ugc\n                \"\"\",\n                        state_limiter=state_limiter,\n                        tlimiter=tlimiter,\n                    ),\n                    conn,\n                    index_col=by,\n                    params=params,\n                )\n        df2 = df[\"count\"]\n        if df2.max() < 10:\n            bins = list(range(1, 11, 1))\n        else:\n            bins = np.linspace(1, df2.max() + 11, 10, dtype=\"i\")\n        units = \"Count\"\n        lformat = \"%.0f\"\n        cmap.set_under(\"white\")\n        cmap.set_over(\"#EEEEEE\")\n        extend = \"max\"\n    else:\n        params[\"sday\"] = params[\"sts\"].strftime(\"%m%d\")\n        params[\"eday\"] = params[\"ets\"].strftime(\"%m%d\")\n        slimiter = (\n            \" (to_char(valid, 'mmdd') >= :sday and \"\n            \"to_char(valid, 'mmdd') <= :eday ) \"\n        )\n        yearcol = \"extract(year from valid)\"\n        if params[\"eday\"] <= params[\"sday\"]:\n            slimiter = slimiter.replace(\" and \", \" or \")\n            yearcol = (\n                \"case when to_char(valid, 'mmdd') <= :eday then \"\n                \"extract(year from valid)::int - 1 else \"\n                \"extract(year from valid) end\"\n            )\n        # Expensive\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            if by != \"ugc\":\n                df = pd.read_sql(\n                    sql_helper(\n                        \"\"\"\n                WITH data as (\n                    SELECT distinct wfo, {yearcol} as year, state, valid, type,\n                    magnitude, geom from lsrs l\n                    where {slimiter} {tlimiter} {state_limiter}\n                )\n                SELECT {by}, year, count(*) from data GROUP by {by}, year\n                \"\"\",\n                        yearcol=yearcol,\n                        slimiter=slimiter,\n                        by=by,\n                        tlimiter=tlimiter,\n                        state_limiter=state_limiter,\n                    ),\n                    conn,\n                    params=params,\n                    index_col=None,\n                )\n            else:\n                df = pd.read_sql(\n                    sql_helper(\n                        \"\"\"\n                WITH data as (\n                    SELECT distinct ugc, {yearcol} as year, valid, type,\n                    magnitude, l.geom\n                    from lsrs l JOIN ugcs u on (l.gid = u.gid)\n                    where {slimiter} {tlimiter} {state_limiter}\n                )\n                SELECT {by}, year, count(*) from data GROUP by {by}, year\n                \"\"\",\n                        by=by,\n                        yearcol=yearcol,\n                        slimiter=slimiter,\n                        tlimiter=tlimiter,\n                        state_limiter=state_limiter,\n                    ),\n                    conn,\n                    params=params,\n                    index_col=None,\n                )\n        # Fill out zeros\n        idx = pd.MultiIndex.from_product(\n            [df[by].unique(), df[\"year\"].unique()],\n            names=[by, \"year\"],\n        )\n        df = df.set_index([by, \"year\"]).reindex(idx).fillna(0).reset_index()\n        df[\"rank\"] = df.groupby(by)[\"count\"].rank(method=\"min\", ascending=True)\n        thisyear = (\n            df[df[\"year\"] == params[\"sts\"].year]\n            .set_index(by)\n            .drop(\"year\", axis=1)\n        )\n        # Ready to construct final df.\n        df = df[[by, \"count\"]].groupby(by).agg([\"mean\", \"std\"]).copy()\n        df.columns = [\"_\".join(a) for a in df.columns.to_flat_index()]\n        df[[\"count\", \"count_rank\"]] = thisyear[[\"count\", \"rank\"]]\n        df[\"count_departure\"] = df[\"count\"] - df[\"count_mean\"]\n        df[\"count_standard\"] = df[\"count_departure\"] / df[\"count_std\"]\n        if df[varname].isna().all():\n            raise NoDataFound(\"No data found.\")\n        bins = get_count_bins(df, varname)\n        lformat = \"%.0f\"\n        units = \"Count\"\n        if varname == \"count_rank\":\n            extend = \"neither\"\n            units = \"Rank\"\n        else:\n            if varname == \"count_standard\":\n                lformat = \"%.1f\"\n                units = \"sigma\"\n            extend = \"both\"\n        df2 = df[varname]\n    if df2.empty:\n        raise NoDataFound(\"No data found.\")\n    dtfmt = \"%d %b %Y %H:%M\"\n    if varname == \"count_mean\":\n        dtfmt = \"%d %b\"\n    mp = MapPlot(\n        apctx=ctx,\n        sector=\"nws\",\n        axisbg=\"white\",\n        title=(\n            f\"Preliminary/Unfiltered Local Storm Report {PDICT2[varname]} \"\n            f\"{PDICT[by]}\"\n        ),\n        subtitle=(\n            f\"Valid {params['sts'].strftime(dtfmt)} - \"\n            f\"{params['ets'].strftime(dtfmt)} UTC, \"\n            f\"type limiter: {MDICT.get(myfilter)}\"\n        ),\n        nocaption=True,\n    )\n    if by == \"wfo\":\n        mp.fill_cwas(\n            df2.to_dict(),\n            bins=bins,\n            lblformat=lformat,\n            cmap=cmap,\n            ilabel=ctx[\"lbl\"] == \"yes\",\n            units=units,\n            extend=extend,\n            labelbuffer=0,\n        )\n    elif by == \"ugc\":\n        # Grrr\n        df2 = df2.loc[df2.index.str.slice(2, 3) == \"C\"]\n        mp.fill_ugcs(\n            df2.to_dict(),\n            bins=bins,\n            lblformat=lformat,\n            cmap=cmap,\n            ilabel=ctx[\"lbl\"] == \"yes\",\n            units=units,\n            extend=extend,\n            labelbuffer=1,\n            is_firewx=False,\n        )\n    else:\n        mp.fill_states(\n            df2.to_dict(),\n            bins=bins,\n            lblformat=lformat,\n            cmap=cmap,\n            ilabel=ctx[\"lbl\"] == \"yes\",\n            units=units,\n            extend=extend,\n            labelbuffer=0,\n        )\n\n    return mp.fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p164.py",
    "content": "\"\"\"\nThis chart presents a simple accounting of the\npercentage of first order NWS climate sites that are either above or\nbelow average or reporting precipitation / snow each day.  Note that no\nspatial weighting is done, so one should not interpret this as an areal\ncoverage of some condition.  For temperature, sites with an average\ntemperature for that date are omitted.\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport pandas as pd\nfrom matplotlib.artist import setp\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nMDICT = {\n    \"high\": \"High Temperature\",\n    \"low\": \"Low Temperature\",\n    \"precip\": \"Reported Precip\",\n    \"snow\": \"Reported Snowfall\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    sts = date.today() - timedelta(days=45)\n    ets = date.today() - timedelta(days=1)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"date\",\n            name=\"sts\",\n            default=sts.strftime(\"%Y/%m/%d\"),\n            label=\"Select Start Date (inclusive)\",\n            min=\"2007/01/09\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"ets\",\n            default=ets.strftime(\"%Y/%m/%d\"),\n            label=\"Select End Date (inclusive)\",\n            min=\"2007/01/09\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"high\",\n            options=MDICT,\n            label=\"Which Metric to Plot\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    sts = ctx[\"sts\"]\n    ets = ctx[\"ets\"]\n    varname = ctx[\"var\"]\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n        WITH data as (\n            SELECT valid, high - high_normal as high_delta,\n            low - low_normal as low_delta, precip, snow\n            from cli_data where valid >= %s and valid <= %s\n            and substr(station, 1, 1) = 'K'\n        )\n        SELECT valid,\n        sum(case when high_delta > 0 then 1 else 0 end) as high_above,\n        sum(case when high_delta = 0 then 1 else 0 end) as high_equal,\n        sum(case when high_delta < 0 then 1 else 0 end) as high_below,\n        sum(case when low_delta > 0 then 1 else 0 end) as low_above,\n        sum(case when low_delta = 0 then 1 else 0 end) as low_equal,\n        sum(case when low_delta < 0 then 1 else 0 end) as low_below,\n        sum(case when precip > 0.005 then 1 else 0 end) as precip_above,\n        sum(case when precip < 0.005 then 1 else 0 end) as precip_below,\n        sum(case when snow > 0.005 then 1 else 0 end) as snow_above,\n        sum(case when snow < 0.005 then 1 else 0 end) as snow_below\n        from data GROUP by valid ORDER by valid ASC\n        \"\"\",\n            conn,\n            params=(sts, ets),\n            index_col=\"valid\",\n        )\n    if df.empty:\n        raise NoDataFound(\"Error, no results returned!\")\n    for v in [\"precip\", \"snow\"]:\n        if varname == v:\n            xlabel = (\n                f\"<-- No/Trace {v.capitalize()} %   |\"\n                f\"     Measurable {v.capitalize()}   % -->\"\n            )\n            colors = [\"r\", \"b\"]\n        df[f\"{v}_count\"] = df[f\"{v}_above\"] + df[f\"{v}_below\"]\n    for v in [\"high\", \"low\"]:\n        df[v + \"_count\"] = (\n            df[f\"{v}_above\"] + df[f\"{v}_below\"] + df[f\"{v}_equal\"]\n        )\n        if varname == v:\n            xlabel = \"<-- Below Average %    |    Above Average % -->\"\n            colors = [\"b\", \"r\"]\n    title = (\n        \"Percentage of CONUS NWS First Order CLImate Sites\\n\"\n        f\"({sts:%-d %b %Y} - {ets:%-d %b %Y}) {MDICT[varname]}\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    ax.barh(\n        df.index.values,\n        0 - (df[f\"{varname}_below\"] / df[f\"{varname}_count\"] * 100.0),\n        fc=colors[0],\n        ec=colors[0],\n        align=\"center\",\n    )\n    ax.barh(\n        df.index.values,\n        df[f\"{varname}_above\"] / df[f\"{varname}_count\"] * 100.0,\n        fc=colors[1],\n        ec=colors[1],\n        align=\"center\",\n    )\n    ax.set_xlim(-100, 100)\n    ax.grid(True)\n    ax.set_xlabel(xlabel)\n    ticks = [-100, -90, -75, -50, -25, -10, 0, 10, 25, 50, 75, 90, 100]\n    ax.set_xticks(ticks)\n    ax.set_xticklabels([abs(x) for x in ticks])\n    setp(ax.get_xticklabels(), rotation=30)\n    ax.set_position([0.1, 0.15, 0.85, 0.75])\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p165.py",
    "content": "\"\"\"\nThis app generates a map showing either an explicit year's first or last\ndate or the given percentile (observed\nfrequency) date over all available years of a given temperature threshold.\nSadly, this app can only plot one state's worth of data at a time.  If a\ngiven year failed to meet the given threshold, it is not included on the\nplot nor with the computed percentiles.\n\n<br /><br />\n<strong>Description of Observed Frequency:</strong> If requested, this\napp will generate a plot showing the date of a given percentile for the\nfirst/last temperature exceedance.  As a practical example of the 50th\npercentile, the date plotted means that 50% of the previous years on\nrecord experienced that temperature threshold by the given date.\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot.geoplot import MapPlot\n\nPDICT3 = {\"contour\": \"Contour + Plot Values\", \"values\": \"Plot Values Only\"}\nPDICT2 = {\n    \"spring_below\": \"Last Spring Date Below\",\n    \"high_above\": \"First Date of Year At or Above\",\n    \"fall_below\": \"First Fall Date Below\",\n}\nPDICT = {\n    \"air\": \"Air Temperature\",\n    \"soil\": \"0-10cm ERA5Land Avg Soil Temperature\",\n}\n\nMONTH_DOMAIN = {\n    \"spring_below\": list(range(1, 7)),\n    \"fall_below\": list(range(1, 13)),\n    \"high_above\": list(range(1, 13)),\n}\nSQLOPT = {\n    \"spring_below\": \" low < :t \",\n    \"high_above\": \" high >= :t \",\n    \"fall_below\": \" low < :t \",\n}\nYRGP = {\n    \"spring_below\": \"year\",\n    \"high_above\": \"year\",\n    \"fall_below\": \"winter_year\",\n}\nORDER = {\n    \"spring_below\": \"max\",\n    \"fall_below\": \"min\",\n    \"high_above\": \"min\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = datetime.today() - timedelta(days=1)\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"select\",\n            \"name\": \"w\",\n            \"default\": \"air\",\n            \"label\": \"Which Temperature:\",\n            \"options\": PDICT,\n        },\n        dict(type=\"state\", name=\"sector\", default=\"IA\", label=\"Select State:\"),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"spring_below\",\n            label=\"Select Plot Type:\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"select\",\n            name=\"popt\",\n            default=\"contour\",\n            label=\"Plot Display Options:\",\n            options=PDICT3,\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=today.year,\n            label=\"Year:\",\n            min=1893,\n        ),\n        dict(\n            type=\"int\",\n            name=\"threshold\",\n            default=32,\n            label=\"Temperature Threshold (F):\",\n        ),\n        dict(\n            type=\"int\",\n            default=50,\n            optional=True,\n            name=\"p\",\n            label=(\n                \"Plot date of given observed frequency / \"\n                \"percentiles (%): [optional]\"\n            ),\n        ),\n        dict(\n            optional=True,\n            type=\"sday\",\n            default=f\"{today:%m%d}\",\n            name=\"sday\",\n            label=\"Plot percentiles for a given date [optional]\",\n        ),\n        dict(\n            type=\"year\",\n            default=1893,\n            optional=True,\n            name=\"syear\",\n            label=\"Inclusive start year for percentiles: [optional]\",\n        ),\n        dict(\n            type=\"year\",\n            default=today.year,\n            optional=True,\n            name=\"eyear\",\n            label=\"Inclusive end year for percentiles: [optional]\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"BrBG\", label=\"Color Ramp:\"),\n        dict(\n            type=\"int\",\n            default=2,\n            name=\"cint\",\n            optional=True,\n            label=\"Contour interval in days (optional):\",\n        ),\n    ]\n    return desc\n\n\ndef th(val):\n    \"\"\"Figure out the proper ending.\"\"\"\n    v = val[-1]\n    if v in [\"0\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]:\n        return \"th\"\n    if v == \"1\":\n        return \"rst\"\n    if v == \"3\":\n        return \"rd\"\n    return \"nd\"\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    sector = ctx[\"sector\"]\n    if len(sector) != 2:\n        raise NoDataFound(\"Sorry, this app doesn't support multi-state plots.\")\n    varname: str = ctx[\"var\"]\n    year = ctx[\"year\"]\n    popt = ctx[\"popt\"]\n    threshold = ctx[\"threshold\"]\n    nt = NetworkTable(f\"{sector}CLIMATE\")\n    syear = ctx.get(\"syear\", 1893)\n    eyear = ctx.get(\"eyear\", date.today().year)\n    sql = SQLOPT[varname]\n    if ctx[\"w\"] == \"soil\":\n        sql = sql.replace(\"high\", \"soil\").replace(\"low\", \"soil\")\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            -- create virtual table with winter_year included\n            WITH events as (\n                SELECT station, day, year, high, low,\n                era5land_soilt4_avg as soil,\n                case when month < 7 then year - 1 else year end as winter_year,\n                extract(doy from day) as doy\n                from {table} WHERE month = ANY(:months) and\n                substr(station, 3, 4) != '0000'\n                and substr(station, 3, 1) not in ('C', 'D', 'T')\n            )\n            SELECT station, {ygrp},\n            {order}(\n                case when {ssql} then day else null end) as event,\n            count(*),\n            min(day) as min_day,\n            max(day) as max_day\n            from events\n            WHERE {ygrp} >= :syear and {ygrp} <= :eyear\n            GROUP by station, {ygrp}\n            \"\"\",\n                table=f\"alldata_{sector.lower()}\",\n                order=ORDER[varname],\n                ssql=sql,\n                ygrp=YRGP[varname],\n            ),\n            conn,\n            params={\n                \"months\": MONTH_DOMAIN[varname],\n                \"t\": threshold,\n                \"syear\": syear,\n                \"eyear\": eyear,\n            },\n            index_col=\"station\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found\")\n    df = df[df[\"event\"].notna()]\n    df[\"doy\"] = (df[\"event\"] - df[\"min_day\"]).apply(lambda x: x.days)\n\n    basedate = date(2000, 7 if varname.startswith(\"fall\") else 1, 1)\n    if ctx.get(\"p\") is not None:\n        # Remove low count stations\n        df2 = df[[\"doy\"]].groupby(\"station\").count()\n        df = df[~df.index.isin(df2[df2[\"doy\"] < 10].index.values)]\n        df2 = df[[\"doy\"]].groupby(\"station\").quantile(ctx[\"p\"] / 100.0).copy()\n        df2[\"pdate\"] = df2[\"doy\"].apply(\n            lambda x: (basedate + timedelta(days=int(x))).strftime(\"%-m/%-d\")\n        )\n        title = (\n            f\"{ctx['p']:.0f}{th(str(ctx['p']))} Percentile Date of \"\n            f\"{PDICT[ctx['w']]} {PDICT2[varname]} {threshold}°F\"\n        )\n        extra = (\n            \", period of record: \"\n            f\"{df[YRGP[varname]].min():.0f}-{df[YRGP[varname]].max():.0f}\"\n        )\n    elif ctx.get(\"sday\") is not None:\n        # Compute percentiles for the given date\n        df2 = df[[\"doy\"]].groupby(\"station\").count()\n        df = df[~df.index.isin(df2[df2[\"doy\"] < 10].index.values)]\n        doy = (ctx[\"sday\"] - basedate).days\n        hits = df[df[\"doy\"] <= doy][\"doy\"].groupby(\"station\").count()\n        # count again due to filtering above\n        df2 = df[[\"doy\"]].groupby(\"station\").count()\n        df2[\"percentile\"] = (hits / df2[\"doy\"] * 100).fillna(0)\n        title = (\n            f\"Percentile on {ctx['sday']:%-d %b} of {PDICT2[varname]} \"\n            f\"{threshold}°F\"\n        )\n        extra = (\n            \", period of record: \"\n            f\"{df[YRGP[varname]].min():.0f}-{df[YRGP[varname]].max():.0f}\"\n        )\n    else:\n        df2 = df[df[YRGP[varname]] == year].copy()\n        # Require sites have enough data\n        df2 = df2[df2[\"count\"] > (df2[\"count\"].max() * 0.9)]\n        title = f\"{year} {PDICT[ctx['w']]} {PDICT2[varname]} {threshold}°F\"\n        df2[\"pdate\"] = df2[\"event\"].apply(lambda x: x.strftime(\"%-m/%-d\"))\n        extra = \"\"\n    if df2.empty:\n        raise NoDataFound(\"No Data was found\")\n    for station in df2.index.values:\n        if station not in nt.sts:\n            continue\n        df2.at[station, \"lat\"] = nt.sts[station][\"lat\"]\n        df2.at[station, \"lon\"] = nt.sts[station][\"lon\"]\n    if \"lat\" not in df2.columns:\n        raise NoDataFound(\"No Data was found\")\n    df2 = df2[df2[\"lat\"].notna()]\n    subtitle = f\"based on NWS COOP and IEM Daily Estimates{extra}\"\n    if ctx[\"w\"] == \"soil\":\n        subtitle = \"based on ERA5 Land Grid Point Estimates\"\n    mp = MapPlot(\n        apctx=ctx,\n        sector=\"state\",\n        state=ctx[\"sector\"],\n        continental_color=\"white\",\n        title=title,\n        subtitle=subtitle,\n        nocaption=True,\n    )\n    if ctx.get(\"p\") is None and ctx.get(\"sday\") is not None:\n        mp.contourf(\n            df2[\"lon\"].to_numpy(),\n            df2[\"lat\"].to_numpy(),\n            df2[\"percentile\"].to_numpy(),\n            np.arange(0, 101, 10),\n            cmap=ctx[\"cmap\"],\n            extend=\"neither\",\n        )\n        mp.plot_values(\n            df2[\"lon\"].to_numpy(),\n            df2[\"lat\"].to_numpy(),\n            df2[\"percentile\"].to_numpy(),\n            fmt=\"%.0f\",\n            labelbuffer=5,\n        )\n    else:\n        levs = np.linspace(\n            df2[\"doy\"].min() - 1, df2[\"doy\"].max() + 1, 7, dtype=\"i\"\n        )\n        if \"cint\" in ctx:\n            levs = np.arange(\n                df2[\"doy\"].min() - 1,\n                df2[\"doy\"].max() + 1,\n                ctx[\"cint\"],\n                dtype=\"i\",\n            )\n        if popt == \"contour\" and (levs[-1] - levs[0]) > 5:\n\n            def f(val):\n                return (basedate + timedelta(days=int(val))).strftime(\"%b %-d\")\n\n            levlables = list(map(f, levs))\n            mp.contourf(\n                df2[\"lon\"],\n                df2[\"lat\"],\n                df2[\"doy\"],\n                levs,\n                clevlabels=levlables,\n                cmap=ctx[\"cmap\"],\n            )\n        mp.plot_values(\n            df2[\"lon\"], df2[\"lat\"], df2[\"pdate\"].values, labelbuffer=5\n        )\n    mp.drawcounties()\n\n    return mp.fig, df[[YRGP[varname], \"event\", \"doy\"]]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p166.py",
    "content": "\"\"\"\nThis plot presents a summary of the number of year\nto date watches issued by the Storm Prediction Center and the percentage\nof those watches that at least touched the given state, county warning area,\nor fema region.\n\"\"\"\n\nfrom datetime import date\n\nimport matplotlib.ticker as ticker\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.reference import state_names\n\nfrom iemweb.autoplot import ARG_FEMA\n\nPDICT = {\n    \"state\": \"View by State\",\n    \"cwa\": \"View by NWS WFO\",\n    \"fema\": \"View by FEMA Region\",\n}\nMDICT = {\n    \"ytd\": \"Limit Plot to Year to Date\",\n    \"year\": \"Plot Entire Year of Data\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"data\": True, \"description\": __doc__}\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"select\",\n            \"name\": \"w\",\n            \"default\": \"state\",\n            \"options\": PDICT,\n            \"label\": \"View by:\",\n        },\n        dict(type=\"state\", name=\"state\", default=\"IA\", label=\"Select State:\"),\n        dict(\n            type=\"networkselect\",\n            name=\"cwa\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO (when appropriate):\",\n            all=True,\n        ),\n        ARG_FEMA,\n        dict(\n            type=\"select\",\n            name=\"limit\",\n            default=\"ytd\",\n            options=MDICT,\n            label=\"Time Limit of Plot\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    state = ctx[\"state\"][:2].upper()\n    limit = ctx[\"limit\"]\n\n    sqllimit = \"\"\n    ets = \"31 December\"\n    if limit == \"ytd\":\n        ets = date.today().strftime(\"%-d %B\")\n        sqllimit = \"extract(doy from issued) <= extract(doy from now()) and \"\n\n    # Get total issued\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            Select extract(year from issued)::int as year,\n            count(*) as national_count from watches\n            where {sqllimit} num < 3000 GROUP by year ORDER by year ASC\n        \"\"\",\n                sqllimit=sqllimit,\n            ),\n            conn,\n            index_col=\"year\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No data was found.\")\n\n    params = {\n        \"state\": state,\n        \"fema\": ctx[\"fema\"],\n        \"wfo\": ctx[\"cwa\"],\n    }\n    if ctx[\"w\"] == \"state\":\n        geomcol = \"the_geom\"\n        table = \"states\"\n        abbrsql = \" s.state_abbr = :state \"\n        title = f\"State of {state_names[state]}\"\n    elif ctx[\"w\"] == \"cwa\":\n        geomcol = \"the_geom\"\n        table = \"cwa\"\n        abbrsql = \" s.cwa = :wfo \"\n        title = f\"NWS Weather Forecast Office {ctx['_sname']}\"\n    else:  # fema\n        geomcol = \"geom\"\n        table = \"fema_regions\"\n        abbrsql = \" s.region = :fema \"\n        title = f\"FEMA Region {ctx['fema']}\"\n    # Get total issued\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        odf = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            select extract(year from issued)::int as year,\n            count(*) as datum_count\n            from watches w, {table} s where w.geom && s.{geomcol} and\n            ST_Intersects(w.geom, s.{geomcol}) and {sqllimit} {abbrsql}\n            GROUP by year ORDER by year ASC\n        \"\"\",\n                table=table,\n                geomcol=geomcol,\n                sqllimit=sqllimit,\n                abbrsql=abbrsql,\n            ),\n            conn,\n            params=params,\n            index_col=\"year\",\n        )\n    df[\"datum_count\"] = odf[\"datum_count\"]\n    df[\"datum_percent\"] = df[\"datum_count\"] / df[\"national_count\"] * 100.0\n    df = df.fillna(0)\n\n    fig = figure(apctx=ctx)\n    ax = fig.subplots(3, 1, sharex=True)\n\n    ax[0].bar(df.index.values, df[\"national_count\"].values, align=\"center\")\n    for year, row in df.iterrows():\n        ax[0].text(\n            year,\n            row[\"national_count\"],\n            f\" {row['national_count']:.0f}\",\n            ha=\"center\",\n            rotation=90,\n            va=\"bottom\",\n            color=\"k\",\n        )\n    ax[0].grid(True)\n    ax[0].set_title(\n        \"Storm Prediction Center Issued Tornado / Svr T'Storm Watches\\n\"\n        f\"1 January to {ets}, Watch Outlines touching {title}\"\n    )\n    ax[0].set_ylabel(\"National Count\")\n    ax[0].set_ylim(0, df[\"national_count\"].max() * 1.3)\n\n    ax[1].bar(df.index.values, df[\"datum_count\"].values, align=\"center\")\n    for year, row in df.iterrows():\n        ax[1].text(\n            year,\n            row[\"datum_count\"],\n            f\" {row['datum_count']:.0f}\",\n            ha=\"center\",\n            rotation=90,\n            va=\"bottom\",\n            color=\"k\",\n        )\n    ax[1].grid(True)\n    ax[1].set_ylabel(\"Count\")\n    ax[1].set_ylim(0, df[\"datum_count\"].max() * 1.3)\n\n    ax[2].bar(df.index.values, df[\"datum_percent\"].values, align=\"center\")\n    for year, row in df.iterrows():\n        ax[2].text(\n            year,\n            row[\"datum_percent\"],\n            f\" {row['datum_percent']:.1f}%\",\n            ha=\"center\",\n            rotation=90,\n            va=\"bottom\",\n            color=\"k\",\n        )\n    ax[2].grid(True)\n    ax[2].set_ylabel(\"% Touching\")\n    ax[2].set_ylim(0, df[\"datum_percent\"].max() * 1.3)\n\n    ax[0].set_xlim(df.index.values[0] - 1, df.index.values[-1] + 1)\n    ax[0].xaxis.set_major_locator(ticker.MaxNLocator(integer=True))\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p167.py",
    "content": "\"\"\"\nThis chart summarizes Flight Category by hour\nand day of a given month.  In the case of multiple observations for a\ngiven hour, the worst category is plotted.\n\n<table class=\"table table-condensed table-bordered\">\n<thead><tr><th>code</th><th>Label</th><th>Description</th></tr></thead>\n<tbody>\n<tr><td>Unknown</td><td>Unknown</td><td>No report or missing visibility for\nthat hour</td></tr>\n<tr><td>VFR</td><td>Visual Flight Rules</td><td>\nCeiling &gt; 3000' AGL and visibility &gt; 5 statutes miles (green)</td></tr>\n<tr><td>MVFR</td><td>Marginal Visual Flight Rules</td><td>\n1000-3000' ceilings and/or 3-5 statute miles, inclusive (blue)</td></tr>\n<tr><td>IFR</td><td>Instrument Fight Rules</td><td>\n500 - &lt; 1000' ceilings and/or 1 to  &lt; 3 statute miles (red)</td></tr>\n<tr><td>LIFR</td><td>Low Instrument Flight Rules</td><td>\n&lt; 500' AGL ceilings and/or &lt; 1 mile (magenta)</td></tr>\n</tbody>\n</table>\n</tbody>\n</table>\n\"\"\"\n\nfrom datetime import date, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom pyiem.util import utc\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"month\",\n            name=\"month\",\n            label=\"Select Month:\",\n            default=today.month,\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            label=\"Select Year:\",\n            default=today.year,\n            min=1970,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    year = ctx[\"year\"]\n    month = ctx[\"month\"]\n\n    tzname = ctx[\"_nt\"].sts[station][\"tzname\"]\n    tzinfo = ZoneInfo(tzname)\n\n    # Figure out the 1rst and last of this month in the local time zone\n    sts = utc(year, month, 3)\n    sts = sts.astimezone(tzinfo).replace(day=1, hour=0, minute=0)\n    ets = (sts + timedelta(days=35)).replace(day=1)\n    days = (ets - sts).days\n    data = np.zeros((24, days))\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        SELECT valid at time zone :tzname as ts,\n        skyc1, skyc2, skyc3, skyc4, skyl1, skyl2, skyl3, skyl4, vsby\n        from alldata where station = :station\n        and valid >= :sts and valid < :ets\n        and vsby is not null and report_type = 3 ORDER by valid ASC\n        \"\"\"),\n            conn,\n            params={\n                \"tzname\": tzname,\n                \"station\": station,\n                \"sts\": sts,\n                \"ets\": ets,\n            },\n            index_col=None,\n        )\n\n    if df.empty:\n        raise NoDataFound(\"No database entries found for station, sorry!\")\n\n    # 0 Unknown\n    # 1 VFR: Ceiling >3000' AGL and visibility >5 statutes miles (green)\n    # 2 MVFR: 1000-3000' and/or 3-5 statute miles, inclusive (blue)\n    # 3 IFR: 500 - <1000' and/or 1 to <3 statute miles (red)\n    # 4 LIFR: < 500' AGL and/or < 1 mile (magenta)\n    lookup = {4: \"LIFR\", 3: \"IFR\", 2: \"MVFR\", 1: \"VFR\", 0: \"UNKNOWN\"}\n    conds = []\n    for _, row in df.iterrows():\n        x = row[\"ts\"].day - 1\n        y = row[\"ts\"].hour\n        level = 100000  # arb high number\n        coverages = [row[\"skyc1\"], row[\"skyc2\"], row[\"skyc3\"], row[\"skyc4\"]]\n        if \"OVC\" in coverages:\n            idx = coverages.index(\"OVC\")\n            level = [row[\"skyl1\"], row[\"skyl2\"], row[\"skyl3\"], row[\"skyl4\"]][\n                idx\n            ]\n        if \"BKN\" in coverages and level == 10000:\n            idx = coverages.index(\"BKN\")\n            level = [row[\"skyl1\"], row[\"skyl2\"], row[\"skyl3\"], row[\"skyl4\"]][\n                idx\n            ]\n        if row[\"vsby\"] > 5 and level > 3000:\n            val = 1\n        elif level < 500 or row[\"vsby\"] < 1:\n            val = 4\n        elif level < 1000 or row[\"vsby\"] < 3:\n            val = 3\n        elif level <= 3000 or row[\"vsby\"] <= 5:\n            val = 2\n        else:\n            val = 0\n        data[y, x] = max(data[y, x], val)\n        conds.append(lookup[val])\n\n    df[\"flstatus\"] = conds\n    title = (\n        f\"{ctx['_sname']}:: {sts:%b %Y} Flight Category\\n\"\n        \"based on Hourly METAR Cloud Amount/Level and Visibility Reports\"\n    )\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n\n    ax.set_facecolor(\"skyblue\")\n\n    colors = [\"#EEEEEE\", \"green\", \"blue\", \"red\", \"magenta\"]\n    cmap = mpcolors.ListedColormap(colors)\n    norm = mpcolors.BoundaryNorm(boundaries=range(6), ncolors=5)\n    ax.imshow(\n        np.flipud(data),\n        aspect=\"auto\",\n        extent=[0.5, days + 0.5, -0.5, 23.5],\n        cmap=cmap,\n        interpolation=\"nearest\",\n        norm=norm,\n    )\n    ax.set_yticks(range(0, 24, 3))\n    ax.set_yticklabels(\n        [\"Mid\", \"3 AM\", \"6 AM\", \"9 AM\", \"Noon\", \"3 PM\", \"6 PM\", \"9 PM\"]\n    )\n    ax.set_xticks(range(1, days + 1))\n    ax.set_ylabel(f\"Hour of Local Day ({tzname})\")\n    ax.set_xlabel(f\"Day of {sts:%b %Y}\")\n\n    rects = [Rectangle((0, 0), 1, 1, fc=color) for color in colors]\n\n    ax.grid(True)\n    # Shrink current axis's height by 10% on the bottom\n    box = ax.get_position()\n    ax.set_position(\n        [box.x0, box.y0 + box.height * 0.1, box.width, box.height * 0.9]\n    )\n\n    ax.legend(\n        rects,\n        [\"Unknown\", \"VFR\", \"MVFR\", \"IFR\", \"LIFR\"],\n        loc=\"upper center\",\n        fontsize=14,\n        bbox_to_anchor=(0.5, -0.09),\n        fancybox=True,\n        shadow=True,\n        ncol=5,\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p168.py",
    "content": "\"\"\"\nThis chart presents the last date of fall or first\ndate of spring that a given temperature threshold was last or first\nreached.  Note that leap day creates some ambiguity with an analysis like\nthis, so for example, the 15th of November is considered equal for each\nyear.  The plot truncates once you reach the 20th of December.  If you use\nthe downloaded file, please note that you need to consider the levels\nabove the given threshold as the latest date.  The downloaded file simply\nprovides the latest date at a given temperature.\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"data\": True, \"description\": __doc__}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n        with data as (\n            select day, high, year,\n            rank() OVER (PARTITION by high ORDER by sday DESC)\n            from alldata where station = %s)\n        SELECT day, year, high, rank from data WHERE rank = 1\n        ORDER by high DESC, day DESC\n        \"\"\",\n            conn,\n            params=(station,),\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found!\")\n\n    title = (\n        \"Most Recent & Latest Date of High Temperature\\n\"\n        f\"{ctx['_sname']} ({ab.year}-{date.today().year})\"\n    )\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n    current = {\n        \"d2000\": date(2000, 1, 1),\n        \"date\": date(2000, 1, 1),\n        \"ties\": False,\n    }\n    x = []\n    y = []\n    for level in np.arange(df[\"high\"].max(), 0, -1):\n        df2 = df[df[\"high\"] == level]\n        if df2.empty:\n            continue\n        row = df2.iloc[0]\n        if row[\"day\"].replace(year=2000) > current[\"d2000\"]:\n            current[\"d2000\"] = row[\"day\"].replace(year=2000)\n            current[\"date\"] = row[\"day\"]\n            current[\"ties\"] = len(df2.index) > 1\n        if current[\"date\"].month == 12 and current[\"date\"].day > 20:\n            break\n        y.append(level)\n        x.append(int(current[\"d2000\"].strftime(\"%j\")))\n        tt = \" **\" if current[\"ties\"] else \"\"\n        ax.text(\n            x[-1] + 3,\n            level,\n            (\n                f\"{level} -- {current['d2000']:%-d %b} \"\n                f\"{current['date'].year}{tt}\"\n            ),\n            va=\"center\",\n        )\n    ax.barh(y, x, align=\"center\")\n    ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_xlim(min(x) - 5, 400)\n    ax.set_ylim(y[-1] - 1, y[0] + 1)\n    ax.grid(True)\n    ax.set_ylabel(\"High Temperature °F\")\n    ax.set_xlabel(\"** denotes ties\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p169.py",
    "content": "\"\"\"\nThis chart presents the largest change in some observed variable\nover a given number of hours.  This is based on available\nreports.  There are two options for how to compute the\nchange over a given window.</p>\n\n<p><table class=\"table table-striped\">\n<thead><tr><th>Label</th><th>Description</th></tr></thead>\n<tbody>\n<tr><td>Compute at ends of time window</td><td>This requires an exact\nmatch between the starting timestamp and ending timestamp of the given\nwindow of time.  For example, computing a 12 hour change between exactly\n6:53 AM and 6:53 PM.</td></tr>\n<tr><td>Compute over time window</td><td>This is more forgiving and\nconsiders the observation at the start of the window and then any\nsubsequent observation over the window of time.  The end of the\nwindow is inclusive as well.</td></tr>\n</tbody>\n</table></p>\n\n<p><strong>Note:</strong>  This app is very effective at finding bad data\npoints as the spark-line plot of the data for the given period will look\nflakey.</p>\n\n<p><a href=\"/plotting/auto/?q=139\">Autoplot 139</a> is similar to this\nplot, but only considers a calendar day.</p>\n\"\"\"\n\nfrom datetime import datetime, timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.util import month2months\n\nMDICT = {\"warm\": \"Rise\", \"cool\": \"Drop\"}\nMDICT2 = {\n    \"all\": \"No Month/Time Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\nPDICT = {\n    \"exact\": \"Compute at ends of time window\",\n    \"over\": \"Compute over time window\",\n}\nPDICT2 = {\n    \"tmpf\": \"Air Temperature\",\n    \"dwpf\": \"Dew Point Temperature\",\n    \"feel\": \"Feels Like Temperature\",\n    \"alti\": \"Pressure Altimeter\",\n    \"mslp\": \"Sea Level Pressure\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        {\n            \"type\": \"select\",\n            \"options\": PDICT2,\n            \"default\": \"tmpf\",\n            \"label\": \"Select Variable\",\n            \"name\": \"v\",\n        },\n        dict(type=\"int\", name=\"hours\", label=\"Number of Hours:\", default=24),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT2,\n        ),\n        dict(\n            type=\"select\",\n            name=\"dir\",\n            default=\"warm\",\n            label=\"Direction:\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"how\",\n            default=\"exact\",\n            label=\"How to compute change over given time window:\",\n            options=PDICT,\n        ),\n        {\n            \"type\": \"year\",\n            \"name\": \"syear\",\n            \"default\": 1900,\n            \"min\": 1900,\n            \"label\": (\n                \"Exclude data prior to year (some sites have sus pre 1950)\"\n            ),\n        },\n    ]\n    return desc\n\n\ndef plot_event(ax, i, df, varname):\n    \"\"\"plot date.\"\"\"\n    df[\"norm\"] = (df[varname] - df[varname].min()) / (\n        df[varname].max() - df[varname].min()\n    )\n    sts = df.index[0].to_pydatetime()\n    df[\"xnorm\"] = [x.total_seconds() for x in (df.index.to_pydatetime() - sts)]\n\n    lp = ax.plot(df[\"xnorm\"], df[\"norm\"] + i)\n    ax.text(\n        df[\"xnorm\"].values[-1],\n        df[\"norm\"].values[-1] + i,\n        sts.strftime(\"%-d %b %Y\"),\n        va=\"center\",\n        color=lp[0].get_color(),\n    )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    hours = ctx[\"hours\"]\n    mydir = ctx[\"dir\"]\n    month = ctx[\"month\"]\n    varname = ctx[\"v\"]\n    if varname not in PDICT2:\n        raise NoDataFound(\"Invalid varname\")\n\n    months = month2months(month)\n\n    tzname = ctx[\"_nt\"].sts[station][\"tzname\"]\n\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT valid at time zone 'UTC' as utc_valid, {varname}\n            from alldata where station = :station\n            and {varname} is not null and valid >= :sts\n            ORDER by valid desc\n        \"\"\",\n                varname=varname,\n            ),\n            conn,\n            params={\n                \"station\": station,\n                \"sts\": datetime(ctx[\"syear\"], 1, 1),\n            },\n            index_col=\"utc_valid\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No database entries found for station, sorry!\")\n    # Filter if needed\n    if len(months) < 12:\n        df[\"month\"] = df.index.month\n        df = df[df[\"month\"].isin(months)]\n\n    # Create offset for exact aggregate\n    deltacol = f\"{varname}_max\" if ctx[\"dir\"] == \"warm\" else f\"{varname}_min\"\n    compcol = f\"{varname}_min\" if ctx[\"dir\"] == \"warm\" else f\"{varname}_max\"\n    if ctx[\"how\"] == \"exact\":\n        df = df.reset_index()\n        # Create timestamp to look for second tmpf value\n        df[\"end_valid\"] = df[\"utc_valid\"] + timedelta(hours=hours)\n        # Inner Join\n        df = (\n            df.merge(\n                df,\n                left_on=\"end_valid\",\n                right_on=\"utc_valid\",\n                how=\"left\",\n                suffixes=(\"\", \"2\"),\n            )\n            .drop(columns=[\"utc_valid2\", \"end_valid2\"])\n            .rename(columns={f\"{varname}2\": deltacol})\n            .set_index(\"utc_valid\")\n        )\n        # Careful here that our delta is the right sign\n        if ctx[\"dir\"] == \"warm\":\n            df[\"delta\"] = df[deltacol] - df[varname]\n        else:\n            df[\"delta\"] = df[varname] - df[deltacol]\n        events = df.sort_values(\"delta\", ascending=False).head(500).copy()\n    else:  # \"over\"\n        # Create aggregate\n        gdf = df.rolling(f\"{hours}h\", closed=\"both\").agg([\"max\", \"min\"])\n        gdf.columns = [\"_\".join(col) for col in gdf.columns.values]\n        df = df.join(gdf)\n        if df.index[0] < df.index[-1]:\n            df = df.iloc[::-1]\n        df[\"delta\"] = (df[varname] - df[deltacol]).abs()\n        # Only consider cases when current val equals extremum\n        events = (\n            df[df[varname] == df[compcol]]\n            .sort_values(\"delta\", ascending=False)\n            .head(100)\n            .copy()\n        )\n\n    hlabel = \"Over Exactly\" if ctx[\"how\"] == \"exact\" else \"Within\"\n    title = (\n        f\"{ctx['_sname']}:: Top 10 {PDICT2[varname]} {MDICT[mydir]}\\n\"\n        f\"{hlabel} {hours} Hour Period ({df.index[-1]:%Y-%m-%d}-\"\n        f\"{df.index[0]:%Y-%m-%d}) \"\n        f\"[{MDICT2[month]}]\"\n    )\n    fig = figure(title=title, apctx=ctx)\n    ax = fig.add_axes((0.35, 0.1, 0.25, 0.8))\n\n    sparkax = fig.add_axes((0.65, 0.1, 0.22, 0.8))\n\n    labels = []\n    used = []\n    events[\"use\"] = 0\n    # workaround dups from above\n    for valid, row in events.iterrows():\n        # Construct time period with data\n        sts = valid\n        ets = valid + timedelta(hours=hours) + timedelta(minutes=1)\n        # Ensure we have no used these before\n        hit = False\n        for use in used:\n            if use[0] <= ets and use[1] >= sts:\n                hit = True\n                break\n        if hit:\n            continue\n        used.append([sts, ets])\n        event = df.loc[ets:sts].iloc[::-1]\n        if ctx[\"how\"] == \"over\":\n            # Need to figure out first row with the ob we want\n            entry = event[event[varname] == row[deltacol]]\n            ets = entry.index[0].to_pydatetime()\n        else:\n            ets -= timedelta(minutes=1)\n        events.at[valid, \"use\"] = 1\n        events.at[valid, \"start_valid_utc\"] = sts\n        events.at[valid, \"end_valid_utc\"] = ets\n        # Allow the output to contain more data\n        if len(labels) >= 10:\n            continue\n        sts = sts.replace(tzinfo=timezone.utc).astimezone(ZoneInfo(tzname))\n        ets = ets.replace(tzinfo=timezone.utc).astimezone(ZoneInfo(tzname))\n        if varname in [\"alti\", \"mslp\"]:\n            lbl = (\n                f\"{row[varname]:.2f} to {row[deltacol]:.2f} -> \"\n                f\"{row['delta']:.2f}\\n\"\n                f\"{sts:%-d %b %Y %-I:%M %p} - {ets:%-d %b %Y %-I:%M %p}\"\n            )\n        else:\n            lbl = (\n                f\"{row[varname]:.0f} to {row[deltacol]:.0f} -> \"\n                f\"{row['delta']:.0f}\\n\"\n                f\"{sts:%-d %b %Y %-I:%M %p} - {ets:%-d %b %Y %-I:%M %p}\"\n            )\n        labels.append(lbl)\n        ax.barh(len(labels), row[\"delta\"], color=\"b\", align=\"center\")\n        plot_event(sparkax, 11 - len(labels), event.copy(), varname)\n\n    sparkax.set_ylim(1, 11)\n    sparkax.axis(\"off\")\n\n    ax.set_yticks(range(1, len(labels) + 1))\n    ax.set_yticklabels(labels)\n    ax.set_ylim(10.5, 0.5)\n    ax.grid(True)\n    units = {\n        \"tmpf\": \"Delta Degrees Fahrenheit\",\n        \"dwpf\": \"Delta Degrees Fahrenheit\",\n        \"feel\": \"Delta Degrees Fahrenheit\",\n        \"alti\": \"Altimeter Change [inch]\",\n        \"mslp\": \"Sea Level Pressure Change [mb]\",\n    }\n    ax.set_xlabel(units.get(varname))\n    return fig, (\n        events[events[\"use\"] == 1]\n        .reset_index()\n        .drop(columns=[\"utc_valid\", \"end_valid\", \"use\"], errors=\"ignore\")\n    )\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p170.py",
    "content": "\"\"\"\nThis chart totals the number of distinct calendar\ndays or hours per month that a given present weather condition is reported\nwithin the METAR data feed.  The calendar day is computed for the local time\nzone of the reporting station.\n\n<p>The reporting of present weather codes within METARs has changed over\nthe years and there is some non-standard nomenclature used by some sites.\nThe thunder (TS) reports are delineated into three categories here to\nhopefully allow more accurate statistics.\n<ul>\n    <li><strong>All Thunder Reports (TS)</strong> includes any\n    <code>TS</code> mention in any present weather code</li>\n    <li><strong>Thunder in Vicinity (VCTS)</strong> includes any\n    <code>VCTS</code> mention in any present weather code, for example,\n    <code>VCTSRA</code> would match.</li>\n    <li><strong>Thunder Reports (excluding VCTS)</strong> includes most\n    <code>TS</code> mentions, but not any including <code>VC</code></li>\n</ul></p>\n\n<p>This autoplot considers both routine and special hourly reports.\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nPDICT = {\n    \"TS\": \"All Thunder Reports (TS)\",\n    \"VCTS\": \"Thunder in Vicinity (VCTS)\",\n    \"1\": \"Thunder Reports (excluding VCTS)\",\n    \"-SN\": \"Light Snow (-SN)\",\n    \"PSN\": \"Heavy Snow (+SN)\",  # +SN causes CGI issues\n    \"SN\": \"Any Snow (*SN*)\",\n    \"TSPL\": \"Thunder and Ice Pellets (TSPL)\",\n    \"TSSN\": \"Thunder and Snow (TSSN)\",\n    \"FZFG\": \"Freezing Fog (FZFG)\",\n    \"FZRA\": \"Freezing Rain (FZRA)\",\n    \"TSFZRA\": \"Thunder and Freezing Rain (TSFZRA)\",\n    \"FG\": \"Fog (FG)\",\n    \"BLSN\": \"Blowing Snow (BLSN)\",\n    \"FU\": \"Smoke (FU)\",\n}\nPDICT2 = {\n    \"day\": \"Count Distinct Days per Month per Year\",\n    \"hour\": \"Count Distinct Hours per Month per Year\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            label=\"Year to Highlight:\",\n            default=date.today().year,\n            min=1973,\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"FG\",\n            label=\"Present Weather Option:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"w\",\n            default=\"day\",\n            label=\"How to aggregate the data:\",\n            options=PDICT2,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    year = ctx[\"year\"]\n    pweather = ctx[\"var\"]\n    if pweather == \"PSN\":\n        pweather = \"+SN\"\n        PDICT[\"+SN\"] = PDICT[\"PSN\"]\n\n    tzname = ctx[\"_nt\"].sts[station][\"tzname\"]\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    syear = max([1973, ab.year])\n    limiter = \"array_to_string(wxcodes, '') LIKE '%%\" + pweather + \"%%'\"\n    if pweather == \"1\":\n        # Special in the case of non-VCTS\n        limiter = (\n            \"ARRAY['TS'::varchar, '-TSRA'::varchar, 'TSRA'::varchar, \"\n            \"'-TS'::varchar, '+TSRA'::varchar, '+TSSN'::varchar,\"\n            \"'-TSSN'::varchar, '-TSDZ'::varchar] && wxcodes\"\n        )\n    trunc = \"day\" if ctx[\"w\"] == \"day\" else \"hour\"\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            f\"\"\"\n        WITH data as (\n            SELECT distinct date_trunc(%s,\n                valid at time zone %s + '10 minutes'::interval) as datum\n            from alldata where station = %s and {limiter}\n            and valid > '1973-01-01' and report_type != 1)\n\n        SELECT extract(year from datum)::int as year,\n        extract(month from datum)::int as month,\n        count(*) from data GROUP by year, month ORDER by year, month\n        \"\"\",\n            conn,\n            params=(trunc, tzname, station),\n            index_col=None,\n        )\n\n    if df.empty:\n        raise NoDataFound(\"No database entries found for station, sorry!\")\n    t1 = \"Calendar Dates\" if ctx[\"w\"] == \"day\" else \"Hourly Observations\"\n    t2 = pweather if pweather != \"1\" else \"TS\"\n    t3 = \" with at least one hourly report\" if ctx[\"w\"] == \"day\" else \"\"\n    title = (\n        f\"{ctx['_sname']}:: {PDICT[pweather]} \"\n        \"Events\\n\"\n        f\"({syear}-{date.today().year}) Distinct {t1} with \"\n        f\"'{t2}' Reported{t3}\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    df2 = df[df[\"year\"] == year]\n    if not df2.empty:\n        ax.bar(\n            df2[\"month\"].values - 0.2,\n            df2[\"count\"].values,\n            width=0.4,\n            fc=\"r\",\n            ec=\"r\",\n            label=f\"{year}\",\n        )\n        for x, y in zip(df2[\"month\"].values, df2[\"count\"].values, strict=True):\n            ax.text(x - 0.2, y + 0.2, f\"{y:.0f}\", ha=\"center\")\n    df2 = df.groupby(\"month\").sum()\n    years = (date.today().year - syear) + 1\n    yvals = df2[\"count\"] / years\n    ax.bar(\n        df2.index.values + 0.2, yvals, width=0.4, fc=\"b\", ec=\"b\", label=\"Avg\"\n    )\n    for x, y in zip(df2.index.values, yvals, strict=True):\n        ax.text(x + 0.2, y + 0.2, f\"{y:.1f}\", ha=\"center\")\n    ax.set_xlim(0.5, 12.5)\n    ax.set_xticks(range(1, 13))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    t1 = \"Days\" if ctx[\"w\"] == \"day\" else \"Hours\"\n    ax.set_ylabel(f\"{t1} Per Month\")\n    ax.set_ylim(top=ax.get_ylim()[1] + 2)\n    ax.legend(loc=\"best\")\n    ax.grid(True)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p171.py",
    "content": "\"\"\"\nThis chart displays the monthly number of distinct\nNWS Office issued watch / warning / advisory product. For example, a\nsingle watch for a dozen counties would only count 1 in this chart. These\nvalues are based on unofficial archives maintained by the IEM.\n\n<p>The chart summarizes by the month of issuance, so long fuse products like\nFlood Warnings that cover multiple months in time would only appear once for\nthe month of issuance.</p>\n\n<p>If you select the state wide or FEMA option,\nthe totaling is a bit different. A\nsingle watch issued by multiple WFOs would potentially count as more than\none event in this listing.  Sorry, tough issue to get around.  In the case\nof warnings and advisories, the totals should be good.</p>\n\n<p><a href=\"/plotting/auto/?q=243\">Autoplot 243</a> allows for more direct\nplotting of daily record totals.\n<a href=\"/plotting/auto/?q=245\">Autoplot 245</a> produces a similar plot to\nthis one, but with Local Storm Report (LSR) totals.\n<a href=\"/plotting/auto/?q=109\">Autoplot 109</a> produces maps in a similiar\nmanner to this plot.</p>\n\"\"\"\n\nimport calendar\n\nimport numpy as np\nimport pandas as pd\nimport pyiem.nws.vtec as vtec\nimport seaborn as sns\nfrom pyiem import reference\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_FEMA, fema_region2states\n\nPDICT = {\n    \"wfo\": \"Select by NWS Forecast Office\",\n    \"state\": \"Select by State\",\n    \"ugc\": \"Select by NWS County/Forecast Zone\",\n    \"fema\": \"Select by FEMA Region\",\n}\nPDICT2 = {\n    \"single\": \"Total for Single Selected Phenomena / Significance\",\n    \"svrtor\": \"Severe T'Storm + Tornado Warnings\",\n    \"svrtorffw\": \"Severe T'Storm + Tornado + Flash Flood Warnings\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"wfo\",\n            options=PDICT,\n            label=\"How to summarize the data?\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO:\",\n            all=True,\n        ),\n        dict(type=\"state\", name=\"state\", default=\"IA\", label=\"Select State:\"),\n        dict(\n            type=\"ugc\",\n            name=\"ugc\",\n            default=\"IAC169\",\n            label=\"Select UGC Zone/County:\",\n        ),\n        ARG_FEMA,\n        {\n            \"type\": \"select\",\n            \"options\": PDICT2,\n            \"name\": \"c\",\n            \"default\": \"single\",\n            \"label\": \"Total by Selected Phenomena/Significance or Combo\",\n        },\n        dict(\n            type=\"phenomena\",\n            name=\"phenomena\",\n            default=\"FF\",\n            label=\"Select Watch/Warning Phenomena Type:\",\n        ),\n        dict(\n            type=\"significance\",\n            name=\"significance\",\n            default=\"W\",\n            label=\"Select Watch/Warning Significance Level:\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"Greens\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef get_ugc_name(ugc):\n    \"\"\"Return the WFO and county name.\"\"\"\n    cursor = get_dbconn(\"postgis\").cursor()\n    cursor.execute(\n        \"SELECT name, wfo from ugcs where ugc = %s and end_ts is null\", (ugc,)\n    )\n    return cursor.fetchone()\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    phenomena = ctx[\"phenomena\"]\n    significance = ctx[\"significance\"]\n    opt = ctx[\"opt\"]\n    state = ctx[\"state\"]\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\n        \"name\": \"All Offices\",\n        \"tzname\": \"America/Chicago\",\n    }\n\n    params = {\n        \"ph\": [\n            phenomena,\n        ],\n        \"sig\": significance,\n        \"tzname\": ctx[\"_nt\"].sts[station][\"tzname\"],\n    }\n    wfo_limiter = \" and wfo = :wfo \"\n    params[\"wfo\"] = station if len(station) == 3 else station[1:]\n    if station == \"_ALL\":\n        wfo_limiter = \"\"\n        ctx[\"_sname\"] = \"All Offices\"\n    if opt == \"state\":\n        wfo_limiter = \" and substr(ugc, 1, 2) = :state \"\n        params[\"state\"] = state\n    elif opt == \"fema\":\n        wfo_limiter = \" and substr(ugc, 1, 2) = ANY(:states) \"\n        params[\"states\"] = fema_region2states(ctx[\"fema\"])\n    elif opt == \"ugc\":\n        wfo_limiter = \" and ugc = :ugc \"\n        params[\"ugc\"] = ctx[\"ugc\"]\n\n    subtitle = (\n        f\"{vtec.get_ps_string(phenomena, significance)} \"\n        f\"({phenomena}.{significance}) Issued by Year, Month\"\n    )\n    if ctx[\"c\"] == \"svrtor\":\n        params[\"ph\"] = [\"SV\", \"TO\"]\n        params[\"sig\"] = \"W\"\n        subtitle = \"Severe T'Storm + Tornado Warnings Issued by Year, Month\"\n    elif ctx[\"c\"] == \"svrtorffw\":\n        params[\"ph\"] = [\"SV\", \"TO\", \"FF\"]\n        params[\"sig\"] = \"W\"\n        subtitle = (\n            \"Svr T'Storm + Tornado + Flash Flood Warnings \"\n            \"Issued by Year, Month\"\n        )\n\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        # NB quasi hack here as we have some redundant ETNs for a given year\n        # so the groupby helps some.\n        # Don't use vtec_year as it is not right for events happening 31 Dec\n        daily = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                SELECT\n                extract(year from issue at time zone :tzname)::int as year,\n                extract(month from issue at time zone :tzname)::int as mo,\n                min(date(issue at time zone :tzname)) as min_date,\n                wfo,\n                phenomena, significance, eventid\n                from warnings where phenomena = ANY(:ph)\n                and significance = :sig\n                {wfo_limiter}\n                GROUP by year, mo, wfo, phenomena, significance, eventid\n                ORDER by year asc, mo asc\n        \"\"\",\n                wfo_limiter=wfo_limiter,\n            ),\n            conn,\n            params=params,\n            index_col=None,\n        )\n\n    if daily.empty:\n        if opt == \"ugc\":\n            raise NoDataFound(\n                \"No events were found for this UGC + VTEC Phenomena\\n\"\n                \"combination, try flipping between county/zone\"\n            )\n        raise NoDataFound(\"Sorry, no data found!\")\n    df = (\n        daily[[\"year\", \"mo\", \"eventid\"]]\n        .groupby([\"year\", \"mo\"])\n        .count()\n        .reset_index()\n        .rename(columns={\"eventid\": \"count\"})\n    )\n\n    df2 = df.pivot(index=\"year\", columns=\"mo\", values=\"count\").reindex(\n        index=range(df[\"year\"].min(), df[\"year\"].max() + 1),\n        columns=range(1, 13),\n    )\n\n    title = f\"NWS {ctx['_sname']}\"\n    if opt == \"state\":\n        title = (\n            \"NWS Issued for Counties/Zones for State of \"\n            f\"{reference.state_names[state]}\"\n        )\n    elif opt == \"ugc\":\n        name, wfo = get_ugc_name(ctx[\"ugc\"])\n        title = (\n            f\"NWS [{wfo}] {ctx['_nt'].sts[wfo]['name']} Issued for \"\n            f\"[{ctx['ugc']}] {name}\"\n        )\n    elif opt == \"fema\":\n        title = f\"NWS Issued for FEMA Region {ctx['fema']}\"\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    # Print the top 10 days\n    ypos = 0.9\n    fig.text(0.82, ypos, \"Top 10 Dates\")\n    ypos -= 0.04\n    fig.text(0.82, ypos, params[\"tzname\"])\n    gdf = (\n        daily.groupby(\"min_date\").count().sort_values(\"year\", ascending=False)\n    )\n    for dt, row in gdf.head(10).iterrows():\n        ypos -= 0.04\n        fig.text(0.82, ypos, f\"{dt} {row['year']:3.0f}\")\n    ax.set_position([0.1, 0.1, 0.75, 0.8])\n    sns.heatmap(\n        df2,\n        annot=True,\n        fmt=\".0f\",\n        linewidths=0.5,\n        ax=ax,\n        vmin=1,\n        cmap=ctx[\"cmap\"],\n        zorder=2,\n    )\n    # Add sums to RHS\n    sumdf = df2.sum(axis=\"columns\").fillna(0)\n    for year, count in sumdf.items():\n        ax.text(12, year, f\"{count:.0f}\")\n    # Add some horizontal lines\n    for i, year in enumerate(range(df[\"year\"].min(), df[\"year\"].max() + 1)):\n        ax.text(\n            12 + 0.7, i + 0.5, f\"{sumdf[year]:4.0f}\", ha=\"right\", va=\"center\"\n        )\n        if year % 5 != 0:\n            continue\n        ax.axhline(i, zorder=3, lw=1, color=\"gray\")\n    ax.text(1.0, -0.02, \"Total\", transform=ax.transAxes)\n    # Add some vertical lines\n    for i in range(1, 12):\n        ax.axvline(i, zorder=3, lw=1, color=\"gray\")\n    ax.set_xticks(np.arange(12) + 0.5)\n    ax.set_xticklabels(calendar.month_abbr[1:], rotation=0)\n    ax.set_ylabel(\"Year\")\n    ax.set_xlabel(f\"Month (Timezone: {params['tzname']})\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p172.py",
    "content": "\"\"\"\nThis chart presents year to date accumulated\nvariable for a station of your choice.  The year with the highest and\nlowest accumulation is shown along with the envelop of observations and\nlong term average.  You can optionally plot up to three additional years\nof your choice.</p>\n\n<p>You can specify the start date (ignore the year) for when to start\nthe 365 day accumulation of precipitation.  The year shown is the year\nfor the start of the accumulation period.  For example, if you accumulate\nafter 1 October, the year 2020 would represent the period from 1 Oct 2020\nto 30 Sep 2021.</p>\n\n<p>Accumulating snowfall data is frought with peril, but this app will let\nyou do it!  The app has a tight requirement of no less than 3 days of\nmissing data for the year to be considered in the plot.</p>\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"cdd\": \"Cooling Degree Days\",\n    \"gdd\": \"Growing Degree Days\",\n    \"hdd\": \"Heating Degree Days\",\n    \"precip\": \"Precipitation\",\n    \"snow\": \"Snow\",\n}\nSQLCOL = {\n    \"cdd\": \"cdd(high, low, :base)\",\n    \"gdd\": \"gddxx(:base, :ceil, high, low)\",\n    \"hdd\": \"hdd(high, low, :base)\",\n    \"precip\": \"precip\",\n    \"snow\": \"snow\",\n}\nTITLES = {\n    \"cdd\": \"Cooling Degree Days (base: %(base)s°F)\",\n    \"gdd\": \"Growing Degree Days (base: %(base)s°F, ceil: %(ceil)s°F)\",\n    \"hdd\": \"Heating Degree Days (base: %(base)s°F)\",\n    \"precip\": \"Precipitation [inch]\",\n    \"snow\": \"Snow [inch]\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    thisyear = today.year\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            options=PDICT,\n            name=\"var\",\n            default=\"precip\",\n            label=\"Variable to accumulate?\",\n        ),\n        {\n            \"type\": \"int\",\n            \"name\": \"base\",\n            \"default\": 50,\n            \"label\": \"CDD/GDD/HDD Base Temperature °F\",\n        },\n        {\n            \"type\": \"int\",\n            \"name\": \"ceil\",\n            \"default\": 86,\n            \"label\": \"GDD Ceiling Temperature °F\",\n        },\n        dict(\n            type=\"year\",\n            name=\"year1\",\n            default=thisyear,\n            label=\"Additional Year to Plot:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year2\",\n            optional=True,\n            default=(thisyear - 1),\n            label=\"Additional Year to Plot: (optional)\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year3\",\n            optional=True,\n            default=(thisyear - 2),\n            label=\"Additional Year to Plot: (optional)\",\n        ),\n        dict(\n            type=\"sday\",\n            name=\"sdate\",\n            default=\"0101\",\n            label=\"Start Day of Year for Plot:\",\n        ),\n        dict(\n            optional=True,\n            type=\"sday\",\n            name=\"edate\",\n            default=f\"{today:%m%d}\",\n            label=\"End Day of Year for Plot:\",\n        ),\n        dict(\n            type=\"int\",\n            default=3,\n            label=\"Number of missing days to allow before excluding year\",\n            name=\"m\",\n        ),\n    ]\n    return desc\n\n\ndef cull_missing(df: pd.DataFrame, dt: date, colname: str, missingdays: int):\n    \"\"\"Figure out which years need to go from the analysis.\"\"\"\n    incomplete_years = df.groupby(\"binyear\").first()[\"sday\"] != f\"{dt:%m%d}\"\n    incomplete_years = incomplete_years[incomplete_years].index.tolist()\n    if incomplete_years:\n        df = df[~df[\"binyear\"].isin(incomplete_years)]\n    df2 = df[[\"binyear\", colname]]\n    nancounts = df2.groupby(\"binyear\").agg(lambda x: x.isnull().sum())\n    # cull anything with more than 3 days NaN\n    df2 = nancounts[nancounts[colname] > missingdays]\n    years = []\n    if not df2.empty:\n        years = list(df2.index.values)\n    resdf = df[~df[\"binyear\"].isin(years)]\n    minyear = resdf[\"binyear\"].min()\n    # Prevent scary cullyears listing\n    return resdf, list(filter(lambda x: x > minyear, years))\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    year1 = ctx.get(\"year1\")\n    year2 = ctx.get(\"year2\")\n    year3 = ctx.get(\"year3\")\n    sdate = ctx[\"sdate\"]\n    # belt and suspenders\n    assert ctx[\"var\"] in PDICT\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        climo = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT to_char(valid, 'mmdd') as sday, precip as cprecip,\n            snow as csnow\n            from ncei_climate91 where station = :stid ORDER by sday\n            \"\"\"),\n            conn,\n            params={\"stid\": ctx[\"_nt\"].sts[station][\"ncei91\"]},\n            index_col=\"sday\",\n        )\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            with obs as (\n                SELECT day, {col} as {varname}, sday,\n                case when sday >= :sday then year else year - 1 end as binyear\n                from alldata WHERE station = :stid\n            )\n            SELECT day, binyear::int, {varname}, sday,\n            row_number() OVER (PARTITION by binyear ORDER by day ASC) as row,\n            sum({varname}) OVER (PARTITION by binyear ORDER by day ASC)\n                as accum\n            from obs ORDER by day ASC\n        \"\"\",\n                col=SQLCOL[ctx[\"var\"]],\n                varname=ctx[\"var\"],\n            ),\n            conn,\n            params={\n                \"sday\": sdate.strftime(\"%m%d\"),\n                \"base\": ctx[\"base\"],\n                \"ceil\": ctx[\"ceil\"],\n                \"stid\": station,\n            },\n            index_col=\"day\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found!\")\n    # Truncate plot\n    doy_trunc = 365\n    today = ctx.get(\"edate\", date.today())\n    if ctx.get(\"edate\") is not None:\n        today_doy = int(today.strftime(\"%j\"))\n        sdate_doy = int(sdate.strftime(\"%j\"))\n        offset = 0 if today_doy > sdate_doy else 365\n        doy_trunc = today_doy + offset - sdate_doy\n        df = df[df[\"row\"] <= doy_trunc]\n\n    df, cullyears = cull_missing(df, ctx[\"sdate\"], ctx[\"var\"], ctx[\"m\"])\n    if df.empty:\n        raise NoDataFound(\"No data found for variable.\")\n    if not climo.empty:\n        df = df.join(climo, how=\"left\", on=\"sday\")\n\n    extra = \"\" if doy_trunc == 365 else f\" through {today.strftime('%-d %B')}\"\n    tt = TITLES[ctx[\"var\"]] % ctx\n    title = f\"Accumulated {tt}{extra} after {sdate:%-d %B}\"\n    subtitle = f\"{ctx['_sname']} ({df['binyear'].min()}-{date.today().year})\"\n    if cullyears:\n        subtitle += (\n            f\", {len(cullyears)} years excluded due to \"\n            f\"missing > {ctx['m']} days\"\n        )\n\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    # Average\n    jday = df[[\"row\", \"accum\"]].groupby(\"row\").mean()\n    if jday.empty or len(jday.index) < 3:\n        raise NoDataFound(\"No data found for variable.\")\n    jday.loc[df.index[-1], \"accum\"] = jday.iloc[-2][\"accum\"]\n    if climo.empty:\n        ax.plot(\n            range(1, len(jday.index) + 1),\n            jday[\"accum\"],\n            lw=2,\n            zorder=5,\n            color=\"k\",\n            label=f\"Simple Average - {jday['accum'].iloc[-1]:.2f}\",\n        )\n\n    # Min and Max\n    jmin = df[[\"row\", \"accum\"]].groupby(\"row\").min()\n    jmax = df[[\"row\", \"accum\"]].groupby(\"row\").max()\n    ax.fill_between(\n        range(1, len(jmin.index) + 1),\n        jmin[\"accum\"],\n        jmax[\"accum\"],\n        zorder=2,\n        color=\"tan\",\n    )\n\n    # find max year\n    plotted = []\n    if doy_trunc not in df[\"row\"].values.tolist():\n        doy_trunc = df[\"row\"].max()\n    for year, color in zip(\n        [\n            df[\"binyear\"][df[\"accum\"].idxmax()],\n            df[\"binyear\"][df[df[\"row\"] == doy_trunc][\"accum\"].idxmin()],\n            year1,\n            year2,\n            year3,\n        ],\n        [\"b\", \"brown\", \"r\", \"g\", \"purple\"],\n        strict=False,\n    ):\n        if year is None or year in plotted:\n            continue\n        plotted.append(year)\n        df2 = df[df[\"binyear\"] == year]\n        if df2.empty:\n            continue\n        lastrow = df2.iloc[-1]\n        extra = \"\"\n        if (lastrow[\"row\"] + 2) < doy_trunc:\n            extra = f\" to {df2.index.values[-1].strftime('%-d %b')}\"\n        labelyear = year\n        if df2.index.values[0].year != df2.index.values[-1].year:\n            labelyear = (\n                f\"{df2.index.values[0].year}-{df2.index.values[-1].year}\"\n            )\n        ax.plot(\n            range(1, len(df2.index) + 1),\n            df2[\"accum\"],\n            label=f\"{labelyear} - {lastrow['accum']:.2f}{extra}\",\n            color=color,\n            lw=2,\n        )\n    # NCEI91 Climatology\n    if not climo.empty and ctx[\"var\"] in [\"precip\", \"snow\"]:\n        df2 = df[df[\"binyear\"] == 2000]\n        acc = df2[f\"c{ctx['var']}\"].cumsum()\n        maxval = acc.max()\n        ax.plot(\n            range(1, len(acc.index) + 1),\n            acc,\n            label=f\"NCEI91-20 - {maxval:.2f}\",\n            color=\"k\",\n            linestyle=\"--\",\n            lw=2,\n        )\n\n    ax.set_ylabel(tt)\n    ax.grid(True)\n    ax.legend(loc=2)\n    xticks = []\n    xticklabels = []\n    for i in range(doy_trunc + 1):\n        dt = sdate + timedelta(days=i)\n        if dt.day != 1:\n            continue\n        xticks.append(i)\n        xticklabels.append(dt.strftime(\"%b\"))\n    ax.set_xlim(0, doy_trunc + 1)\n    ax.set_ylim(bottom=-0.1)\n    ax.set_xticks(xticks)\n    ax.set_xticklabels(xticklabels)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p173.py",
    "content": "\"\"\"\nThis chart presents the hourly average wind speeds\nby month of the year or by custom periods.\nThe hours presented are valid in the local time zone\nof the reporting station.  For example in Iowa, 3 PM would represent\n3 PM CDT in the summer and 3 PM CST in the winter.  Please complain to us\nif this logic causes you heartburn!  The format of the date periods is\ntwo digit month followed by two digit day for both the start and end\ndate.\n\"\"\"\n\nimport calendar\nfrom datetime import date, datetime\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest, NoDataFound\nfrom pyiem.plot import figure_axes\nfrom pyiem.util import convert_value\n\nUNITS = {\"mph\": \"miles per hour\", \"kt\": \"knots\", \"mps\": \"meters per second\"}\nUNITCONV = {\"mph\": \"mile / hour\", \"kt\": \"knot\", \"mps\": \"meter / second\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"units\",\n            default=\"mph\",\n            options=UNITS,\n            label=\"Units of Average Wind Speed\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"p1\",\n            optional=True,\n            default=\"0501-0510\",\n            label=\"Optional. Average for inclusive period of days\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"p2\",\n            optional=True,\n            default=\"0511-0520\",\n            label=\"Optional. Average for inclusive period of days\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"p3\",\n            optional=True,\n            default=\"0521-0530\",\n            label=\"Optional. Average for inclusive period of days\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"p4\",\n            optional=True,\n            default=\"0601-0610\",\n            label=\"Optional. Average for inclusive period of days\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"p5\",\n            optional=True,\n            default=\"0611-0620\",\n            label=\"Optional. Average for inclusive period of days\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"p6\",\n            optional=True,\n            default=\"0621-0630\",\n            label=\"Optional. Average for inclusive period of days\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"y1\",\n            optional=True,\n            default=1973,\n            label=\"Optional. Limit Period of Record to inclusive start year\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"y2\",\n            optional=True,\n            default=today.year,\n            label=\"Optional. Limit Period of Record to inclusive end year\",\n        ),\n    ]\n    return desc\n\n\ndef add_context(ctx):\n    \"\"\"get context for both output types\"\"\"\n    station = ctx[\"zstation\"]\n    ctx[\"station\"] = station\n    units = ctx[\"units\"]\n    p1 = ctx.get(\"p1\")\n    p2 = ctx.get(\"p2\")\n    p3 = ctx.get(\"p3\")\n    p4 = ctx.get(\"p4\")\n    p5 = ctx.get(\"p5\")\n    p6 = ctx.get(\"p6\")\n    y1 = ctx.get(\"y1\")\n    y2 = ctx.get(\"y2\")\n\n    ylimiter = \"\"\n    if y1 is not None and y2 is not None:\n        ylimiter = (\n            f\" and extract(year from valid) >= {y1} and \"\n            f\"extract(year from valid) <= {y2} \"\n        )\n    else:\n        ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n        if ab is None:\n            raise NoDataFound(\"Unknown station metadata.\")\n        y1 = ab.year\n        y2 = date.today().year\n\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH obs as (\n            SELECT (valid + '10 minutes'::interval) at time zone :tzname as ts,\n            sknt from alldata where station = :station and sknt >= 0\n            and sknt < 150 and report_type = 3 {ylimiter})\n\n        select extract(month from ts)::int as month,\n        extract(hour from ts)::int as hour, extract(day from ts)::int as day,\n        avg(sknt) as avg_sknt from obs GROUP by month, day, hour\n        ORDER by month, day, hour\n            \"\"\",\n                ylimiter=ylimiter,\n            ),\n            conn,\n            params={\n                \"tzname\": ctx[\"_nt\"].sts[station][\"tzname\"],\n                \"station\": station,\n            },\n            index_col=None,\n        )\n    # Figure out which mode we are going to do\n    if all(a is None for a in [p1, p2, p3, p4, p5, p6]):\n        df = (\n            df.drop(columns=\"day\")\n            .groupby([\"month\", \"hour\"])\n            .mean()\n            .reset_index()\n        )\n        ctx[\"ncols\"] = 6\n        ctx[\"labels\"] = calendar.month_abbr\n        ctx[\"subtitle\"] = \"Monthly Average Wind Speed by Hour\"\n    else:\n        ctx[\"ncols\"] = 3\n        df[\"fake_date\"] = pd.to_datetime(\n            {\n                \"year\": np.ones(len(df.index)) * 2000,\n                \"month\": df[\"month\"].to_numpy(),\n                \"day\": df[\"day\"].to_numpy(),\n            }\n        )\n        df = df.set_index(\"fake_date\")\n        dfs = []\n        ctx[\"labels\"] = [None]\n        for p in [p1, p2, p3, p4, p5, p6]:\n            if p is None:\n                continue\n            tokens = p.split(\"-\")\n            if len(tokens) != 2 or len(tokens[0]) != 4 or len(tokens[1]) != 4:\n                raise IncompleteWebRequest(\"Invalid date period format.\")\n            sts = datetime.strptime(f\"2000{tokens[0].strip()}\", \"%Y%m%d\")\n            ets = datetime.strptime(f\"2000{tokens[1].strip()}\", \"%Y%m%d\")\n            ldf = (\n                df[[\"hour\", \"avg_sknt\"]]\n                .loc[pd.Timestamp(sts) : pd.Timestamp(ets)]\n                .groupby(\"hour\")\n                .mean()\n            )\n            ldf = ldf.reset_index()\n            ldf[\"month\"] = len(dfs) + 1\n            dfs.append(ldf)\n            ctx[\"labels\"].append(f\"{sts:%b%d}-{ets:%b%d}\")\n            ctx[\"subtitle\"] = \"Period Average Wind Speed by Hour\"\n        df = pd.concat(dfs)\n\n    df[f\"avg_{units}\"] = convert_value(\n        df[\"avg_sknt\"].values, \"knot\", UNITCONV[units]\n    )\n    ctx[\"df\"] = df\n    ctx[\"ylabel\"] = \"Average Wind Speed [%s]\" % (UNITS[units],)\n    ctx[\"xlabel\"] = (\"Hour of Day (timezone: %s)\") % (\n        ctx[\"_nt\"].sts[station][\"tzname\"],\n    )\n    ctx[\"title\"] = f\"{ctx['_sname']} [{y1}-{y2}]\"\n\n\ndef get_highcharts(ctx: dict) -> str:\n    \"\"\"highcharts output\"\"\"\n    add_context(ctx)\n    lines = []\n    dash_styles = [\"Solid\", \"ShortDash\"]\n    for month, df2 in ctx[\"df\"].groupby(\"month\"):\n        v = df2[[\"hour\", f\"avg_{ctx['units']}\"]].to_json(orient=\"values\")\n        lines.append(\n            f\"\"\"\n{{\n    name: '{ctx[\"labels\"][month]}',\n    type: 'line',\n    dashStyle: '{dash_styles[(month - 1) // 6]}',\n    tooltip: {{valueDecimals: 1}},\n    data: {v}\n}}\n        \"\"\"\n        )\n    series = \",\".join(lines)\n    containername = ctx[\"_e\"]\n    return f\"\"\"\nHighcharts.chart('{containername}', {{\n    chart: {{\n        type: 'column'\n    }},\n    xAxis: {{\n        categories: ['Mid', '1 AM', '2 AM', '3 AM', '4 AM', '5 AM',\n    '6 AM', '7 AM', '8 AM', '9 AM', '10 AM', '11 AM', 'Noon', '1 PM',\n    '2 PM', '3 PM', '4 PM', '5 PM', '6 PM', '7 PM', '8 PM', '9 PM',\n    '10 PM', '11 PM'],\n        title: {{text: '{ctx[\"xlabel\"]}'}}\n    }},\n    legend: {{\n        itemDistance: 50,\n        symbolWidth: 40,\n    }},\n    tooltip: {{shared: true}},\n    yAxis: {{\n        title: {{text: '{ctx[\"ylabel\"]}'}}\n    }},\n    title: {{text: '{ctx[\"title\"]}'}},\n    subtitle: {{text: '{ctx[\"subtitle\"]}'}},\n    series: [{series}]\n}});\n\"\"\"\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    add_context(ctx)\n    (fig, ax) = figure_axes(\n        apctx=ctx, title=ctx[\"title\"], subtitle=ctx[\"subtitle\"]\n    )\n    colors = [\n        None,\n        \"k\",\n        \"k\",\n        \"r\",\n        \"r\",\n        \"b\",\n        \"b\",\n        \"tan\",\n        \"tan\",\n        \"purple\",\n        \"purple\",\n        \"brown\",\n        \"brown\",\n    ]\n    styles = [\"-\", \"--\"]\n    for month, df2 in ctx[\"df\"].groupby(\"month\"):\n        ax.plot(\n            df2[\"hour\"].values,\n            df2[\"avg_%s\" % (ctx[\"units\"],)],\n            label=ctx[\"labels\"][month],\n            lw=2,\n            color=colors[month],\n            linestyle=styles[month % 2],\n        )\n    ax.set_ylabel(ctx[\"ylabel\"])\n    ax.grid(True)\n    ax.set_position([0.1, 0.25, 0.85, 0.65])\n    ax.legend(\n        ncol=ctx[\"ncols\"],\n        bbox_to_anchor=(0.5, -0.22),\n        fontsize=10,\n        loc=\"center\",\n    )\n    ax.set_xlabel(ctx[\"xlabel\"])\n    ax.set_xticks(range(0, 24, 4))\n    ax.set_xticklabels([\"Mid\", \"4 AM\", \"8 AM\", \"Noon\", \"4 PM\", \"8 PM\"])\n    ax.set_xlim(0, 23)\n\n    return fig, ctx[\"df\"]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p174.py",
    "content": "\"\"\"\nThis application generates a comparison of daily\nhigh and low temperatures between two automated ASOS sites of your\nchoosing.\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport matplotlib.dates as mdates\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nPDICT = {\n    \"temp\": \"High and Low Temperature\",\n    \"dewp\": \"High and Low Dew Point Temp\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    edate = date.today()\n    sdate = edate - timedelta(days=90)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation1\",\n            default=\"DSM\",\n            network=\"IA_ASOS\",\n            label=\"Select Station 1:\",\n        ),\n        dict(\n            type=\"zstation\",\n            name=\"zstation2\",\n            default=\"IKV\",\n            network=\"IA_ASOS\",\n            label=\"Select Station 2:\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            name=\"var\",\n            default=\"temp\",\n            label=\"Select variable to plot comparison of\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=sdate.strftime(\"%Y/%m/%d\"),\n            label=\"Start Date:\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"edate\",\n            default=edate.strftime(\"%Y/%m/%d\"),\n            label=\"End Date:\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station1 = ctx[\"zstation1\"]\n    station2 = ctx[\"zstation2\"]\n    sdate = ctx[\"sdate\"]\n    edate = ctx[\"edate\"]\n    varname = ctx[\"var\"]\n\n    d = \"tmpf\" if varname == \"temp\" else \"dwpf\"\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\nWITH one as (\n    SELECT day, max_{d}, min_{d} from summary s JOIN stations t on\n    (s.iemid = t.iemid) WHERE t.id = :station1 and t.network = :network1 and\n    s.day >= :sdate and s.day <= :edate),\n\ntwo as (\n    SELECT day, max_{d}, min_{d} from summary s JOIN stations t on\n    (s.iemid = t.iemid) WHERE t.id = :station2 and t.network = :network2 and\n    s.day >= :sdate and s.day <= :edate)\n\n        SELECT one.day as day,\n        one.max_{d} as one_high, one.min_{d} as one_low,\n        two.max_{d} as two_high, two.min_{d} as two_low\n        from one JOIN two on (one.day = two.day) ORDER by day ASC\n        \"\"\",\n                d=d,\n            ),\n            conn,\n            params={\n                \"station1\": station1,\n                \"network1\": ctx[\"network1\"],\n                \"sdate\": sdate,\n                \"edate\": edate,\n                \"station2\": station2,\n                \"network2\": ctx[\"network2\"],\n            },\n            index_col=\"day\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found for this comparison\")\n    df[\"high_diff\"] = df[\"one_high\"] - df[\"two_high\"]\n    df[\"low_diff\"] = df[\"one_low\"] - df[\"two_low\"]\n\n    fig = figure(\n        title=(\n            f\"[{station1}] {ctx['_nt1'].sts[station1]['name']} minus \"\n            f\"[{station2}] {ctx['_nt2'].sts[station2]['name']}\"\n        ),\n        subtitle=(\n            f\"{PDICT[varname]} Difference: \"\n            f\"{sdate:%-d %b %Y} - {edate:%-d %b %Y}\"\n        ),\n        apctx=ctx,\n    )\n    ax = fig.subplots(2, 1, sharex=True)\n\n    for i, vname in enumerate([\"high\", \"low\"]):\n        col = f\"{vname}_diff\"\n        df2 = df[df[col] > 0]\n        freq1 = len(df2.index) / float(len(df.index)) * 100.0\n        ax[i].bar(df2.index.values, df2[col].values, fc=\"r\", ec=\"r\")\n        df2 = df[df[col] < 0]\n        freq2 = len(df2.index) / float(len(df.index)) * 100.0\n        ax[i].bar(df2.index.values, df2[col].values, fc=\"b\", ec=\"b\")\n        ax[i].xaxis.set_major_formatter(mdates.DateFormatter(\"%-d %b\\n%Y\"))\n        ax[i].grid(True)\n        ax[i].text(\n            0.5,\n            0.95,\n            f\"{station1} Higher ({freq1:.1f}%)\",\n            transform=ax[i].transAxes,\n            va=\"top\",\n            ha=\"center\",\n            bbox={\"color\": \"w\"},\n            color=\"r\",\n            fontsize=8,\n        )\n        ax[i].text(\n            0.5,\n            0.01,\n            f\"{station2} Higher ({freq2:.1f}%)\",\n            transform=ax[i].transAxes,\n            va=\"bottom\",\n            ha=\"center\",\n            bbox={\"color\": \"w\"},\n            color=\"b\",\n            fontsize=8,\n        )\n        ax[i].text(\n            0.95,\n            0.99,\n            f\"Bias: {df[col].mean():.2f}\",\n            transform=ax[i].transAxes,\n            va=\"top\",\n            ha=\"right\",\n            color=\"k\",\n            bbox={\"color\": \"w\"},\n            fontsize=8,\n        )\n        ax[i].set_ylabel(\n            f\"{vname.capitalize()} {varname.capitalize()} Difference °F\"\n        )\n        rng = df[col].max() - df[col].min()\n        ax[i].set_ylim(df[col].min() - 0.2 * rng, df[col].max() + 0.2 * rng)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p175.py",
    "content": "\"\"\"\nThis chart displays estimated areal coverage of\nsnow cover for a single state.  This estimate is based on a 0.125x0.125\ndegree analysis of NWS COOP observations.  The date shown would represent\nsnow depth reported approximately at 7 AM.\n\"\"\"\n\nimport os\nfrom datetime import date, datetime, timedelta\n\nimport geopandas as gpd\nimport matplotlib.dates as mdates\nimport numpy as np\nimport pandas as pd\nfrom pyiem import reference\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.grid import nav\nfrom pyiem.grid.zs import CachingZonalStats\nfrom pyiem.iemre import daily_offset, get_daily_ncname\nfrom pyiem.plot import figure_axes\nfrom pyiem.util import convert_value, ncopen\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    today = date.today()\n    year = today.year if today.month > 9 else today.year - 1\n    desc[\"arguments\"] = [\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=year,\n            label=\"Year of December for Winter Season\",\n        ),\n        dict(\n            type=\"float\",\n            name=\"thres\",\n            default=\"1.0\",\n            label=\"Snow Cover Threshold [inch]\",\n        ),\n        dict(\n            contiguous=True,\n            type=\"state\",\n            name=\"state\",\n            default=\"IA\",\n            label=\"For State\",\n        ),\n    ]\n    return desc\n\n\ndef f(st, snowd, metric, stpts):\n    \"\"\"f is for Fancy.\"\"\"\n    v = (\n        np.ma.sum(\n            np.ma.where(np.ma.logical_and(st > 0, snowd >= metric), 1, 0)\n        )\n        / float(stpts)\n        * 100.0\n    )\n    return np.nan if v is np.ma.masked else v\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    year = ctx[\"year\"]\n    thres = ctx[\"thres\"]\n    metric = convert_value(thres, \"inch\", \"millimeter\")\n    state = ctx[\"state\"][:2]\n\n    sts = datetime(year, 10, 1, 12)\n    ets = datetime(year + 1, 5, 1, 12)\n    rows = []\n\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        states = gpd.read_postgis(\n            \"SELECT the_geom, state_abbr from states where state_abbr = %s\",\n            conn,\n            params=(state,),\n            index_col=\"state_abbr\",\n            geom_col=\"the_geom\",\n        )\n\n    sidx = daily_offset(sts)\n    ncfn = get_daily_ncname(sts.year)\n    if not os.path.isfile(ncfn):\n        raise NoDataFound(f\"Data for year {sts.year} not found\")\n    with ncopen(ncfn) as nc:\n        czs = CachingZonalStats(nav.IEMRE.affine_image)\n        hasdata = np.zeros(\n            (nc.dimensions[\"lat\"].size, nc.dimensions[\"lon\"].size)\n        )\n        czs.gen_stats(hasdata, states[\"the_geom\"])\n        for gnav in czs.gridnav:\n            grid = np.ones((gnav.ysz, gnav.xsz))\n            grid[gnav.mask] = 0.0\n            jslice = slice(gnav.y0, gnav.y0 + gnav.ysz)\n            islice = slice(gnav.x0, gnav.x0 + gnav.xsz)\n            hasdata[jslice, islice] = np.where(\n                grid > 0, 1, hasdata[jslice, islice]\n            )\n        st = np.flipud(hasdata)\n        stpts = np.sum(np.where(hasdata > 0, 1, 0))\n\n        snowd = nc.variables[\"snowd_12z\"][sidx:, :, :]\n    for i in range(snowd.shape[0]):\n        rows.append(  # noqa\n            {\n                \"valid\": sts + timedelta(days=i),\n                \"coverage\": f(st, snowd[i], metric, stpts),\n            }\n        )\n\n    eidx = daily_offset(ets)\n    ncfn = get_daily_ncname(ets.year)\n    if not os.path.isfile(ncfn):\n        raise NoDataFound(f\"Data for year {ets.year} not found\")\n    with ncopen(ncfn) as nc:\n        snowd = nc.variables[\"snowd_12z\"][:eidx, :, :]\n    for i in range(snowd.shape[0]):\n        rows.append(  # noqa\n            {\n                \"valid\": datetime(ets.year, 1, 1, 12) + timedelta(days=i),\n                \"coverage\": f(st, snowd[i], metric, stpts),\n            }\n        )\n    df = pd.DataFrame(rows)\n    df = df[np.isfinite(df[\"coverage\"])]\n    if df.empty:\n        raise NoDataFound(\"No data found for this date range\")\n    title = (\n        \"IEM Estimated Areal Snow Coverage over \"\n        f\"{reference.state_names[state]}\\n\"\n        f\"Percentage of state reporting at least {thres:.2f}in snow \"\n        f\"cover depth {df['valid'].min():%b %-d, %Y} - \"\n        f\"{df['valid'].max():%b %-d %Y}\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    ax.bar(\n        df[\"valid\"].values,\n        df[\"coverage\"].values,\n        fc=\"tan\",\n        ec=\"tan\",\n        align=\"center\",\n    )\n\n    ax.set_ylabel(\"Areal Coverage [%]\")\n    ax.xaxis.set_major_locator(mdates.DayLocator([1, 15]))\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%-d %b\\n%Y\"))\n    one = timedelta(days=1)\n    ax.set_xlim(df[\"valid\"].min() - one, df[\"valid\"].max() + one)\n    ax.set_yticks(range(0, 101, 25))\n    ax.grid(True)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p176.py",
    "content": "\"\"\"\nThis chart shows the margin by which a new daily high\nand low temperatures record beat the previously set record.  Ties are not\npresented on this plot.\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import get_dbconnc\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\"0\": \"Max Highs / Min Lows\", \"1\": \"Min Highs / Max Lows\"}\nPDICT2 = {\n    \"daily\": \"New Daily Record\",\n    \"monthly\": \"New Monthly Record\",\n    \"yearly\": \"New Yearly Record\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"0\",\n            options=PDICT,\n            label=\"Which metric to plot\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"w\",\n            default=\"daily\",\n            options=PDICT2,\n            label=\"Compute records over which time interval\",\n        ),\n    ]\n    return desc\n\n\ndef add_context(ctx):\n    \"\"\"Make the pandas Data Frame please\"\"\"\n    pgconn, cursor = get_dbconnc(\"coop\")\n    station = ctx[\"station\"]\n    opt = ctx[\"opt\"]\n    cursor.execute(\n        \"SELECT day, sday, high, low from alldata WHERE station = %s \"\n        \"and high is not null and low is not null ORDER by day ASC\",\n        (station,),\n    )\n    if cursor.rowcount == 0:\n        raise NoDataFound(\"No Data Found.\")\n    aggint = \"%m%d\"\n    if ctx[\"w\"] == \"monthly\":\n        aggint = \"%m\"\n    elif ctx[\"w\"] == \"yearly\":\n        aggint = \"1\"\n    dates = pd.date_range(\"2000/01/01\", \"2000/12/31\").strftime(aggint).unique()\n    if opt == \"0\":\n        records = pd.DataFrame(dict(high=-9999, low=9999), index=dates)\n        rows = []\n        for row in cursor:\n            key = row[\"day\"].strftime(aggint)\n            if row[\"high\"] > records.at[key, \"high\"]:\n                margin = row[\"high\"] - records.at[key, \"high\"]\n                records.at[key, \"high\"] = row[\"high\"]\n                if margin < 1000:\n                    rows.append(\n                        dict(margin=margin, date=row[\"day\"], val=row[\"high\"])\n                    )\n            if row[\"low\"] < records.at[key, \"low\"]:\n                margin = row[\"low\"] - records.at[key, \"low\"]\n                records.at[key, \"low\"] = row[\"low\"]\n                if margin > -1000:\n                    rows.append(\n                        dict(margin=margin, date=row[\"day\"], val=row[\"low\"])\n                    )\n    else:\n        records = pd.DataFrame(dict(high=9999, low=-9999), index=dates)\n        rows = []\n        for row in cursor:\n            key = row[\"day\"].strftime(aggint)\n            if row[\"high\"] < records.at[key, \"high\"]:\n                margin = row[\"high\"] - records.at[key, \"high\"]\n                records.at[key, \"high\"] = row[\"high\"]\n                if margin > -1000:\n                    rows.append(\n                        dict(margin=margin, date=row[\"day\"], val=row[\"high\"])\n                    )\n            if row[\"low\"] > records.at[key, \"low\"]:\n                margin = row[\"low\"] - records.at[key, \"low\"]\n                records.at[key, \"low\"] = row[\"low\"]\n                if margin < 1000:\n                    rows.append(\n                        dict(margin=margin, date=row[\"day\"], val=row[\"low\"])\n                    )\n    pgconn.close()\n    ctx[\"df\"] = pd.DataFrame(rows)\n    ctx[\"title\"] = f\"{ctx['_sname']} :: {PDICT2[ctx['w']]} Margin\"\n    ctx[\"subtitle\"] = (\n        f\"By how much did a new record beat the previous {PDICT[opt]}\"\n    )\n\n\ndef get_highcharts(ctx: dict) -> str:\n    \"\"\"Do highcharts option\"\"\"\n    add_context(ctx)\n    ctx[\"df\"][\"date\"] = pd.to_datetime(ctx[\"df\"][\"date\"])\n    df2 = ctx[\"df\"][ctx[\"df\"][\"margin\"] > 0]\n    cols = [\"date\", \"margin\", \"val\"]\n    rename = {\"date\": \"x\", \"margin\": \"y\"}\n    v = (\n        df2[cols]\n        .rename(columns=rename)\n        .to_json(orient=\"records\", date_format=\"iso\")\n    )\n    df2 = ctx[\"df\"][ctx[\"df\"][\"margin\"] < 0]\n    v2 = (\n        df2[cols]\n        .rename(columns=rename)\n        .to_json(orient=\"records\", date_format=\"iso\")\n    )\n    a = \"High\" if ctx[\"opt\"] == \"0\" else \"Low\"\n    b = \"High\" if ctx[\"opt\"] == \"1\" else \"Low\"\n    series = f\"\"\"{{\n        data: {v},\n        color: '#ff0000',\n        name: '{a} Temp Beat'\n    }},{{\n        data: {v2},\n        color: '#0000ff',\n        name: '{b} Temp Beat'\n    }}\n    \"\"\"\n    containername = ctx[\"_e\"]\n    return (\n        \"\"\"\nHighcharts.chart('\"\"\"\n        + containername\n        + \"\"\"', {\n        time: {useUTC: true}, // needed since we are using dates here :/\n        chart: {\n            type: 'scatter',\n            zoomType: 'x'\n        },\n        plotOptions: {\n            scatter: {\n                turboThreshold: 0\n            }\n        },\n        tooltip: {\n            valueDecimals: 0,\n            pointFormat: 'Date: <b>{point.x:%b %d, %Y}</b>' +\n                          '<br/>Margin: <b>{point.y}</b>' +\n                          '<br />Ob: <b>{point.val}</b>'},\n        yAxis: {title: {text: 'Temperature Beat Margin °F'}},\n        xAxis: {type: 'datetime'},\n        title: {text: '\"\"\"\n        + ctx[\"title\"]\n        + \"\"\"'},\n        subtitle: {text: '\"\"\"\n        + ctx[\"subtitle\"]\n        + \"\"\"'},\n        series: [\"\"\"\n        + series\n        + \"\"\"]\n    });\n\n    \"\"\"\n    )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    add_context(ctx)\n\n    (fig, ax) = figure_axes(\n        title=ctx[\"title\"], subtitle=ctx[\"subtitle\"], apctx=ctx\n    )\n    df2 = ctx[\"df\"][ctx[\"df\"][\"margin\"] > 0]\n    ax.scatter(df2[\"date\"].values, df2[\"margin\"].values, color=\"r\")\n\n    df2 = ctx[\"df\"][ctx[\"df\"][\"margin\"] < 0]\n    ax.scatter(df2[\"date\"].values, df2[\"margin\"].values, color=\"b\")\n    ax.set_ylim(-30, 30)\n    ax.grid(True)\n    ax.set_ylabel(\"Temperature Beat Margin °F\")\n\n    return fig, ctx[\"df\"]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p177.py",
    "content": "\"\"\"\nThis application generates time series charts using data from the\nISU Soil Moisture Network.\n\"\"\"\n\nimport re\nfrom datetime import datetime, timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport matplotlib.colors as mpcolors\nimport matplotlib.dates as mdates\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.axes import Axes\nfrom matplotlib.lines import Line2D\nfrom matplotlib.patches import Patch\nfrom metpy.calc import dewpoint_from_relative_humidity\nfrom metpy.units import units\nfrom pyiem import meteorology\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import get_hourly_ncname\nfrom pyiem.plot import figure, figure_axes, get_cmap\nfrom pyiem.util import (\n    c2f,\n    convert_value,\n    ncopen,\n    utc,\n)\n\nCENTRAL = ZoneInfo(\"America/Chicago\")\nPLOTTYPES = {\n    \"1\": \"3 Panel Plot\",\n    \"m\": \"Meteogram (Temperature, Dew Point, Wind)\",\n    \"8\": \"Battery Voltage\",\n    \"3\": \"Daily Max/Min 4 Inch Soil Temps\",\n    \"9\": \"Daily Rainfall, 4 inch Soil Temp, and RH\",\n    \"7\": \"Daily Soil Water + Change\",\n    \"4\": \"Daily Solar Radiation\",\n    \"5\": \"Daily Potential Evapotranspiration\",\n    \"encrh\": \"Enclosure Relative Humidity\",\n    \"6\": \"Histogram of Volumetric Soil Moisture\",\n    \"10\": \"Inversion Diagnostic Plot (BOOI4, CAMI4, CRFI4)\",\n    \"11\": \"Inversion Daily Timing (BOOI4, CAMI4, CRFI4)\",\n    \"2\": \"Just Soil Temps\",\n    \"4iemre\": \"Four inch soil temperature QC diagnostic\",\n    \"sm\": \"Just Soil Moisture\",\n    \"at\": \"One Minute Timeseries\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"frontend\"] = \"/agclimate/smts.php\"\n    ets = datetime.now().replace(minute=0)\n    sts = ets - timedelta(days=7)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            default=\"BOOI4\",\n            label=\"Select Station:\",\n            network=\"ISUSM\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"1\",\n            options=PLOTTYPES,\n            label=\"Select Plot Type:\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"sts\",\n            default=sts.strftime(\"%Y/%m/%d %H%M\"),\n            label=\"Start Time (Central Time):\",\n            min=\"2012/01/01 0000\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"ets\",\n            default=ets.strftime(\"%Y/%m/%d %H%M\"),\n            label=\"End Time (Central Time):\",\n            min=\"2012/01/01 0000\",\n        ),\n    ]\n    return desc\n\n\ndef make_inversion_timing(ctx):\n    \"\"\"Generate an inversion plot\"\"\"\n    # Rectify the start date to midnight\n    ctx[\"sts\"] = ctx[\"sts\"].replace(hour=0, minute=0)\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n    SELECT valid at time zone 'UTC' as utc_valid, tair_10_c_avg_qc,\n    tair_15_c_avg_qc from sm_inversion where station = :station and\n    valid >= :sts and valid < :ets and tair_10_c_avg_qc is not null and\n    tair_15_c_avg_qc is not null ORDER by valid ASC\n            \"\"\"),\n            conn,\n            params={\n                \"station\": ctx[\"station\"],\n                \"sts\": ctx[\"sts\"],\n                \"ets\": ctx[\"ets\"],\n            },\n        )\n    if df.empty:\n        raise NoDataFound(\"No inversion data found for station!\")\n    df = df.assign(\n        utc_valid=lambda df_: df_.utc_valid.dt.tz_localize(timezone.utc),\n        valid=lambda df_: df_.utc_valid.dt.tz_convert(CENTRAL),\n        delta=lambda df_: (\n            c2f(df_.tair_10_c_avg_qc) - c2f(df_.tair_15_c_avg_qc)\n        ),\n    )\n\n    grid = np.ones(((ctx[\"ets\"] - ctx[\"sts\"]).days + 1, 1440)) * np.nan\n    df[\"minute\"] = df[\"valid\"].dt.hour * 60 + df[\"valid\"].dt.minute\n    # F\n    df[\"day\"] = (df[\"valid\"] - df[\"valid\"].iloc[0]).dt.days\n    for _, row in df.iterrows():\n        grid[row[\"day\"], row[\"minute\"]] = float(row[\"delta\"])\n    title = f\"ISUSM Station: {ctx['_sname']} :: Inversion Timeseries\"\n    subtitle = \"10 Foot Air Temperature minus 1.5 Foot Air Temperature (F)\"\n    fig, ax = figure_axes(apctx=ctx, title=title, subtitle=subtitle)\n    clevs = np.arange(-2, 2.1, 0.2)\n    cmap = get_cmap(\"bwr\")\n    cmap.set_bad(\"tan\")\n    norm = mpcolors.BoundaryNorm(clevs, cmap.N)\n    res = ax.imshow(\n        grid, aspect=\"auto\", interpolation=\"none\", cmap=cmap, norm=norm\n    )\n    fig.colorbar(res).set_label(\n        \"<< Less Likely           Inversion            More Likely >>\"\n    )\n    ax.set_xticks(np.arange(0, 1441, 120))\n    # hours of the day\n    ax.set_xticklabels(\n        (\n            \"Mid|2 AM|4 AM|6 AM|8 AM|10 AM|Noon|2 PM|4 PM|6 PM|8 PM|10 PM|Mid\"\n        ).split(\"|\")\n    )\n    ax.grid(True)\n    ax.set_xlabel(f\"{ctx['sts'].year} Local Time (US Central)\")\n\n    def custom(x, _pos=None):\n        dt = ctx[\"sts\"] + timedelta(days=x)\n        return dt.strftime(\"%-d %b\")\n\n    ax.yaxis.set_major_formatter(custom)\n\n    return fig, df\n\n\ndef make_inversion_plot(ctx):\n    \"\"\"Generate an inversion plot\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        SELECT * from sm_inversion where station = :station and\n        valid >= :sts and valid < :ets ORDER by valid ASC\"\"\"),\n            conn,\n            params={\n                \"station\": ctx[\"station\"],\n                \"sts\": ctx[\"sts\"],\n                \"ets\": ctx[\"ets\"],\n            },\n        )\n    if df.empty:\n        raise NoDataFound(\"No inversion data found for station!\")\n\n    # stride the result to <=1000 rows\n    stride = max(1, int(len(df.index) / 1000.0))\n    df = df.iloc[::stride]\n\n    axwidth = 0.88\n    axheight = 0.25\n    fig = figure(apctx=ctx)\n    axes = fig.subplots(3, 1, sharex=True)\n    ax = axes[0]\n    ax.set_position([0.07, 0.7, axwidth, axheight])\n    ax.plot(df[\"valid\"], c2f(df[\"tair_15_c_avg_qc\"].values), label=\"1.5 feet\")\n    ax.plot(df[\"valid\"], c2f(df[\"tair_5_c_avg_qc\"].values), label=\"5 feet\")\n    ax.plot(df[\"valid\"], c2f(df[\"tair_10_c_avg_qc\"].values), label=\"10 feet\")\n    ax.grid(True)\n    ax.set_ylabel(\"Air Temperature °F\")\n    ax.set_title(f\"ISUSM Station: {ctx['_sname']} :: Inversion Timeseries\")\n    apply_xaxis_formatting(ax, ctx)\n    ax.legend(loc=\"best\", ncol=3, fontsize=10)\n\n    ax = axes[1]\n    ax.set_position([0.07, 0.4, axwidth, axheight])\n    ax.plot(\n        df[\"valid\"],\n        (\n            c2f(df[\"tair_10_c_avg_qc\"].values)\n            - c2f(df[\"tair_15_c_avg_qc\"].values)\n        ),\n    )\n    ax.grid(True)\n    ax.set_title(\"10 Foot Temperature minus 1.5 Foot Temperature\")\n    ax.set_ylabel(\"Air Temperature Diff °F\")\n    apply_xaxis_formatting(ax, ctx)\n\n    ax = axes[2]\n    ax.set_position([0.07, 0.1, axwidth, axheight])\n    ax.bar(\n        df[\"valid\"],\n        convert_value(\n            df[\"ws_ms_max_qc\"].values, \"meter / second\", \"mile / hour\"\n        ),\n        zorder=2,\n        color=\"red\",\n        width=stride / 1440.0,\n        label=\"5 Second Gust\",\n    )\n    ax.bar(\n        df[\"valid\"],\n        convert_value(\n            df[\"ws_ms_avg_qc\"].values, \"meter / second\", \"mile / hour\"\n        ),\n        zorder=3,\n        color=\"lightblue\",\n        label=\"1 Minute Speed\",\n        width=stride / 1440.0,\n    )\n    ax.set_title(\"10 Foot Wind Speed\")\n    ax.grid(True)\n    ax.set_ylabel(\"Wind Speed/Gust [MPH]\")\n    ax.legend(ncol=2)\n\n    return fig, df\n\n\ndef make_daily_pet_plot(ctx):\n    \"\"\"Generate a daily PET plot\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        res = conn.execute(\n            sql_helper(\"\"\"WITH climo as (\n            select to_char(valid, 'mmdd') as mmdd, avg(c70) as  et\n            from daily where station = 'A130209' GROUP by mmdd\n        ), obs as (\n            SELECT valid, dailyet_qc / 25.4 as et,\n            to_char(valid, 'mmdd') as mmdd\n            from sm_daily WHERE station = :station and valid >= :sts\n            and valid <= :ets\n        )\n\n        select o.valid, o.et, c.et from obs o\n        JOIN climo c on (c.mmdd = o.mmdd) ORDER by o.valid ASC\n        \"\"\"),\n            {\n                \"station\": ctx[\"station\"],\n                \"sts\": ctx[\"sts\"].date(),\n                \"ets\": ctx[\"ets\"].date(),\n            },\n        )\n        dates = []\n        o_dailyet = []\n        c_et = []\n        for row in res:\n            dates.append(row[0])\n            o_dailyet.append(row[1] if row[1] is not None else 0)\n            c_et.append(row[2])\n\n    df = pd.DataFrame(dict(dates=dates, dailyet=o_dailyet, climo_dailyet=c_et))\n    if df.empty:\n        raise NoDataFound(\"No Data Found!\")\n\n    title = (\n        f\"ISUSM Station: {ctx['_sname']} Timeseries\\n\"\n        \"Potential Evapotranspiration, Climatology from Ames 1986-2014\"\n    )\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n    ax.bar(\n        dates,\n        o_dailyet,\n        fc=\"brown\",\n        ec=\"brown\",\n        zorder=1,\n        align=\"center\",\n        label=\"Observed\",\n    )\n    ax.plot(dates, c_et, label=\"Climatology\", color=\"k\", lw=1.5, zorder=2)\n    ax.grid(True)\n    ax.set_ylabel(\"Potential Evapotranspiration [inch]\")\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%-d %b\\n%Y\"))\n    interval = int(len(dates) / 7.0 + 1)\n    ax.xaxis.set_major_locator(mdates.DayLocator(interval=interval))\n    ax.legend(loc=\"best\", ncol=1, fontsize=10)\n    return fig, df\n\n\ndef make_daily_rad_plot(ctx):\n    \"\"\"Generate a daily radiation plot\"\"\"\n    # Get clear sky theory\n    theory = meteorology.clearsky_shortwave_irradiance_year(\n        ctx[\"_nt\"].sts[ctx[\"station\"]][\"lat\"],\n        ctx[\"_nt\"].sts[ctx[\"station\"]][\"elevation\"],\n    )\n    maxes = pd.DataFrame({\"tmax\": theory, \"jday\": range(1, 366)})\n\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            SELECT valid, slrkj_tot_qc / 1000. as rad from sm_daily\n            where station = %s and valid >= %s and valid <= %s\n            ORDER by valid ASC\n            \"\"\",\n            conn,\n            params=(\n                ctx[\"station\"],\n                ctx[\"sts\"].strftime(\"%Y-%m-%d\"),\n                ctx[\"ets\"].strftime(\"%Y-%m-%d\"),\n            ),\n            parse_dates=\"valid\",\n            index_col=\"valid\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found, sorry\")\n    df = (\n        df.reindex(pd.date_range(df.index[0], df.index[-1], freq=\"1D\"))\n        .reset_index()\n        .rename(columns={\"index\": \"valid\"})\n    )\n    df[\"jday\"] = df[\"valid\"].dt.strftime(\"%j\").astype(int)\n    df = df.join(maxes, on=\"jday\", lsuffix=\"_\")\n\n    title = (\n        f\"ISUSM Station: {ctx['_sname']} Timeseries\\n Daily Solar Radiation\"\n    )\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n    ax.bar(\n        df[\"valid\"].values,\n        df[\"rad\"].values,\n        fc=\"tan\",\n        ec=\"brown\",\n        zorder=2,\n        align=\"center\",\n        label=\"Observed\",\n    )\n    ax.plot(\n        df[\"valid\"].values,\n        df[\"tmax\"].values,\n        label=r\"Modelled Max $\\tau$ =0.75\",\n        color=\"k\",\n        lw=1.5,\n    )\n    ax.grid(True)\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%-d %b\\n%Y\"))\n    interval = int(len(df.index) / 7.0 + 1)\n    ax.xaxis.set_major_locator(mdates.DayLocator(interval=interval))\n    ax.set_ylabel(\"Solar Radiation $MJ m^{-2}$\")\n    ax.set_ylim(0, 38)\n    ax.legend(loc=1, ncol=2, fontsize=10)\n    return fig, df\n\n\ndef make_daily_rainfall_soil_rh(ctx):\n    \"\"\"Give them what they want.\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT valid, rain_in_tot_qc, t4_c_avg_qc, rh_avg_qc\n            from sm_daily where station = :station and valid >= :sts\n            and valid <= :ets and t4_c_avg_qc is not null\n            ORDER by valid ASC\n            \"\"\"),\n            conn,\n            params={\n                \"station\": ctx[\"station\"],\n                \"sts\": ctx[\"sts\"].strftime(\"%Y-%m-%d\"),\n                \"ets\": ctx[\"ets\"].strftime(\"%Y-%m-%d\"),\n            },\n            index_col=\"valid\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found for Query\")\n\n    title = f\"ISUSM Station: {ctx['_sname']} Timeseries\"\n    subtitle = \"Daily Precipitation, 4 Inch Soil Temperature, and Avg RH\"\n\n    fig = figure(title=title, subtitle=subtitle, apctx=ctx)\n\n    def common(ax):\n        \"\"\"do common things.\"\"\"\n        ax.grid(True)\n        ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%-d %b\\n%Y\"))\n        interval = int(len(df.index) / 7.0 + 1)\n        ax.xaxis.set_major_locator(mdates.DayLocator(interval=interval))\n\n    ax = fig.add_axes((0.1, 0.7, 0.8, 0.2))\n    ax.bar(\n        df.index.values,\n        df[\"rain_in_tot_qc\"].values,\n        color=\"blue\",\n        align=\"center\",\n    )\n    ax.set_ylim(bottom=0)\n    ax.set_ylabel(\"Precipitation [inch]\")\n    common(ax)\n\n    ax = fig.add_axes((0.1, 0.4, 0.8, 0.2))\n    vals = c2f(df[\"t4_c_avg_qc\"].values)\n    ax.bar(\n        df.index.values,\n        vals,\n        color=\"brown\",\n        align=\"center\",\n    )\n    ax.set_ylim(np.min(vals) - 5, np.max(vals) + 5)\n    ax.set_ylabel(\"4 Inch Soil Temp [°F]\")\n    common(ax)\n\n    ax = fig.add_axes((0.1, 0.1, 0.8, 0.2))\n    if not pd.isna(df[\"rh_avg_qc\"]).all():\n        ax.bar(\n            df.index.values,\n            df[\"rh_avg_qc\"].values,\n            color=\"blue\",\n            align=\"center\",\n        )\n        ax.set_ylim(0, 100)\n        ax.set_ylabel(\"Average\\nRelative Humidity [%]\")\n    common(ax)\n\n    return fig, df\n\n\ndef make_daily_plot(ctx):\n    \"\"\"Generate a daily plot of max/min 4 inch soil temps\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            SELECT date(valid), min(t4_c_avg_qc),\n            max(t4_c_avg_qc), avg(t4_c_avg_qc) from sm_hourly\n            where station = %s and valid >= %s and valid < %s\n            and t4_c_avg is not null GROUP by date ORDER by date ASC\n        \"\"\",\n            conn,\n            params=(\n                ctx[\"station\"],\n                ctx[\"sts\"].strftime(\"%Y-%m-%d 00:00\"),\n                ctx[\"ets\"].strftime(\"%Y-%m-%d 23:59\"),\n            ),\n            index_col=\"date\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found for Query\")\n\n    mins = c2f(df[\"min\"].values)\n    maxs = c2f(df[\"max\"].values)\n    avgs = c2f(df[\"avg\"].values)\n    title = (\n        f\"ISUSM Station: {ctx['_sname']} Timeseries\\n\"\n        \"Daily Max/Min/Avg 4 inch Soil Temperatures\"\n    )\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n    ax.bar(\n        df.index.values,\n        maxs - mins,\n        bottom=mins,\n        fc=\"tan\",\n        ec=\"brown\",\n        zorder=2,\n        align=\"center\",\n        label=\"Max/Min\",\n    )\n    ax.scatter(\n        df.index.values,\n        avgs,\n        marker=\"*\",\n        s=30,\n        zorder=3,\n        color=\"brown\",\n        label=\"Hourly Avg\",\n    )\n    ax.axhline(50, lw=1.5, c=\"k\")\n    ax.grid(True)\n    ax.set_ylabel(\"4 inch Soil Temperature [°F]\")\n    apply_xaxis_formatting(ax, ctx)\n    ax.legend(loc=\"best\", ncol=2, fontsize=10)\n    return fig, df\n\n\ndef make_hourly_plot(ctx, vname):\n    \"\"\"Generate a plot of battery\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"SELECT valid, {vname} from sm_hourly\n    where station = :station and valid >= :sts and valid < :ets\n    and {vname} is not null ORDER by valid ASC\n            \"\"\",\n                vname=vname,\n            ),\n            conn,\n            params={\n                \"station\": ctx[\"station\"],\n                \"sts\": ctx[\"sts\"],\n                \"ets\": ctx[\"ets\"],\n            },\n        )\n    title = \"Battery Voltage\"\n    label = \"Battery Voltage [V]\"\n    if vname == \"encrh_avg\":\n        title = \"Enclosure Relative Humidity\"\n        label = \"Relative Humidity [%]\"\n    title = f\"ISUSM Station: {ctx['_sname']} Timeseries\\n{title}\"\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n    ax.plot(df[\"valid\"], df[vname])\n    ax.grid(True)\n    ax.set_ylabel(label)\n    apply_xaxis_formatting(ax, ctx)\n    return fig, df\n\n\ndef make_vsm_histogram_plot(ctx):\n    \"\"\"Option 6\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            SELECT\n            CASE WHEN t12_c_avg_qc > 1 then vwc12_qc else null end\n                as v12,\n            CASE WHEN t24_c_avg_qc > 1 then vwc24_qc else null end\n                as v24,\n            CASE WHEN t50_c_avg_qc > 1 then vwc50_qc else null end\n                as v50\n            from sm_hourly\n            where station = %s and valid >= %s and valid < %s\n        \"\"\",\n            conn,\n            params=(ctx[\"station\"], ctx[\"sts\"], ctx[\"ets\"]),\n            index_col=None,\n        )\n    title = (\n        f\"ISUSM Station: {ctx['_sname']} VWC Histogram\\n\"\n        f\"For un-frozen condition between {ctx['sts']:%-d %b %Y} \"\n        f\"and {ctx['ets']:%-d %b %Y}\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.subplots(3, 1, sharex=True)\n    for i, col in enumerate([\"v12\", \"v24\", \"v50\"]):\n        ax[i].hist(df[col] * 100.0, bins=50, range=(0, 50), density=True)\n        ax[i].set_ylabel(\"Frequency\")\n        ax[i].grid(True)\n        ax[i].text(\n            0.99,\n            0.99,\n            f\"{col[1:]} inches\",\n            transform=ax[i].transAxes,\n            ha=\"right\",\n            va=\"top\",\n        )\n        ax[i].set_yscale(\"log\")\n\n    ax[2].set_xlabel(\"Volumetric Water Content [%]\")\n    return fig, df\n\n\ndef make_daily_water_change_plot(ctx):\n    \"\"\"Option 7\"\"\"\n    # Get daily precip\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        pdf = pd.read_sql(\n            sql_helper(\"\"\"\n                SELECT valid, rain_in_tot_qc from sm_daily\n                where station = :station\n                and valid >= :sts and valid <= :ets ORDER by valid ASC\n                \"\"\"),\n            conn,\n            params={\n                \"station\": ctx[\"station\"],\n                \"sts\": ctx[\"sts\"].date(),\n                \"ets\": ctx[\"ets\"].date(),\n            },\n            index_col=\"valid\",\n            parse_dates=\"valid\",\n        )\n\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH obs as (\n            SELECT valid,\n            CASE WHEN coalesce(t12_c_avg_qc, sv_t12_qc, sv_t14_qc) > 1 then\n                coalesce(vwc12_qc, sv_vwc12_qc, sv_vwc14_qc) else null end\n            as v12,\n            CASE WHEN coalesce(t24_c_avg_qc, sv_t24_qc) > 1 then\n                coalesce(vwc24_qc, sv_vwc24_qc) else null end\n            as v24,\n            CASE WHEN coalesce(t50_c_avg_qc, sv_t52_qc) > 1 then\n                coalesce(vwc50_qc, sv_vwc52_qc) else null end\n            as v50\n            from sm_daily\n            where station = :station and valid >= :sts and valid < :ets)\n\n        SELECT valid,\n        v12, v12 - lag(v12) OVER (ORDER by valid ASC) as v12_delta,\n        v24, v24 - lag(v24) OVER (ORDER by valid ASC) as v24_delta,\n        v50, v50 - lag(v50) OVER (ORDER by valid ASC) as v50_delta\n        from obs ORDER by valid ASC\n        \"\"\"),\n            conn,\n            params={\n                \"station\": ctx[\"station\"],\n                \"sts\": ctx[\"sts\"],\n                \"ets\": ctx[\"ets\"],\n            },\n            index_col=None,\n            parse_dates=\"valid\",\n        )\n    if pdf.empty or df.empty:\n        raise NoDataFound(\"No Data Found for Query\")\n    # 12inch covers 6-18 inches, 24inch covers 18-30 inches, 50inch excluded\n    l1 = 12.0\n    l2 = 12.0\n    df[\"change\"] = df[\"v12_delta\"] * l1 + df[\"v24_delta\"] * l2\n    # Compute an estimate of available water capacity\n    # thresholds arbitrarily chosen at 10% and 45%\n    for lvl in [\"v12\", \"v12\"]:\n        df[lvl] = df[lvl].clip(lower=0.1, upper=0.45)\n    df[\"depth\"] = df[\"v12\"] * l1 + df[\"v24\"] * l2 - (l1 + l2) * 0.1\n\n    title = (\n        f'ISUSM Station: {ctx[\"_sname\"]} :: Daily Soil (6-30\") Water\\n'\n        f\"For un-frozen condition between {ctx['sts']:%-d %b %Y} and \"\n        f\"{ctx['ets']:%-d %b %Y}\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.subplots(2, 1, sharex=True)\n    if not df[\"depth\"].isnull().all():\n        df2 = df[df[\"depth\"] > 0]\n        ax[0].bar(\n            df2[\"valid\"].values,\n            df2[\"depth\"].to_numpy(),\n            color=\"b\",\n            width=1.1,\n        )\n    oneday = timedelta(days=1)\n    ax[0].grid(True)\n    ax[0].set_ylabel(\"Plant Available Soil Water [inch]\")\n    ax[0].set_ylim(bottom=0)\n\n    # Second plot\n    bars = ax[1].bar(df[\"valid\"].values, df[\"change\"].values, color=\"b\")\n    for mybar in bars:\n        mybar.set_color(\"r\" if mybar.get_y() < 0 else \"b\")\n    ax[1].set_ylabel(\"Soil Water Change [inch]\")\n    ax[1].xaxis.set_major_formatter(mdates.DateFormatter(\"%-d %b\\n%Y\"))\n    interval = int(len(df.index) / 7.0 + 1)\n    ax[1].xaxis.set_major_locator(mdates.DayLocator(interval=interval))\n    ax[1].grid(True)\n\n    if (ctx[\"ets\"] - ctx[\"sts\"]).total_seconds() < (60 * 86400):\n        ylim = ax[1].get_ylim()[1]\n        # Attempt to place precip text above this plot\n        pdf[\"pday\"] = pdf[\"rain_in_tot_qc\"].values\n        for valid, row in pdf.iterrows():\n            if row[\"pday\"] > 0:\n                ax[1].text(\n                    valid,\n                    ylim,\n                    f\"{row['pday']:.2f}\",\n                    rotation=90,\n                    va=\"bottom\",\n                    color=\"b\",\n                )\n        ax[1].text(\n            -0.01,\n            1.05,\n            \"Rain ->\",\n            ha=\"right\",\n            transform=ax[1].transAxes,\n            color=\"b\",\n        )\n    ax[0].set_xlim(df[\"valid\"].min() - oneday, df[\"valid\"].max() + oneday)\n    return fig, df\n\n\ndef plot_sm(ctx):\n    \"\"\"Just soil moisture.\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        # Find all columns in the sm_hourly table that have vwc in them\n        # and end with _qc\n        res = conn.execute(\n            sql_helper(\"\"\"\n            SELECT column_name from information_schema.columns\n            WHERE table_name = 'sm_hourly' and column_name ~* 'vwc'\n            and column_name ~* '_qc' ORDER by column_name ASC\n            \"\"\")\n        )\n        cols = [row[0] for row in res]\n\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    SELECT valid, {cols}\n    from sm_hourly WHERE station = :station and\n    valid BETWEEN :sts and :ets ORDER by valid ASC\"\"\",\n                cols=\", \".join(cols),\n            ),\n            conn,\n            params={\n                \"station\": ctx[\"station\"],\n                \"sts\": ctx[\"sts\"],\n                \"ets\": ctx[\"ets\"],\n            },\n            index_col=\"valid\",\n        )\n    valid = df.index.values\n\n    title = f\"ISUSM Station: {ctx['_sname']} :: Soil Moisture Timeseries\"\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n    ax.grid(True)\n    depth_re = re.compile(r\"(\\d+)\")\n    plotted = False\n    for col in cols:\n        if df[col].isnull().all():\n            continue\n        plotted = True\n        depth = depth_re.findall(col)[0]\n        ax.plot(valid, df[col].to_numpy(), linewidth=2, label=f\"{depth}in\")\n    if not plotted:\n        raise NoDataFound(\"No Soil Moisture Data for this station\")\n    box = ax.get_position()\n    ax.set_position([box.x0, box.y0, box.width, box.height * 0.94])\n    ax.legend(\n        bbox_to_anchor=(0.5, 1.0),\n        ncol=10,\n        loc=\"lower center\",\n        fontsize=9,\n    )\n    days = (ctx[\"ets\"] - ctx[\"sts\"]).days\n    if days >= 3:\n        interval = max(int(days / 7), 1)\n        ax.xaxis.set_major_locator(\n            mdates.DayLocator(interval=interval, tz=CENTRAL)\n        )\n        ax.xaxis.set_major_formatter(\n            mdates.DateFormatter(\"%-d %b\\n%Y\", tz=CENTRAL)\n        )\n    else:\n        ax.xaxis.set_major_locator(\n            mdates.AutoDateLocator(maxticks=10, tz=CENTRAL)\n        )\n        ax.xaxis.set_major_formatter(\n            mdates.DateFormatter(\"%-I %p\\n%d %b\", tz=CENTRAL)\n        )\n    ax.set_ylabel(r\"Volumetric Soil Moisture $m^3/m^3$\")\n    return fig, df\n\n\ndef plot4iemre(ctx: dict, lon: float, lat: float):\n    \"\"\"Four inch soil temperature diagnostic\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"SELECT valid, t4_c_avg, t4_c_avg_qc from sm_hourly \"\n                \"WHERE station = :station and \"\n                \"valid BETWEEN :sts and :ets ORDER by valid ASC\"\n            ),\n            conn,\n            params={\n                \"station\": ctx[\"station\"],\n                \"sts\": ctx[\"sts\"],\n                \"ets\": ctx[\"ets\"],\n            },\n            index_col=\"valid\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found for This Plot.\")\n\n    i, j = get_nav(\"IEMRE\", \"conus\").find_ij(lon, lat)\n    with ncopen(get_hourly_ncname(ctx[\"sts\"].year), timeout=300) as nc:\n        times = nc.variables[\"time\"][:]\n        time0 = utc(ctx[\"sts\"].year, 1, 1)\n        vtimes = [time0 + timedelta(hours=int(t)) for t in times]\n        t4 = convert_value(nc.variables[\"soil4t\"][:, j, i], \"degK\", \"degF\")\n\n    title = f\"ISUSM Station: {ctx['_sname']} :: Four inch soil temp diagnostic\"\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n\n    ax.plot(vtimes, t4, label=\"IEMRE Hourly\")\n    ax.plot(\n        df.index.to_pydatetime(),\n        c2f(df[\"t4_c_avg_qc\"].values),\n        label=\"ISUSM QC\",\n    )\n    ax.plot(\n        df.index.to_pydatetime(),\n        c2f(df[\"t4_c_avg\"].values),\n        label=\"ISUSM Obs\",\n    )\n\n    apply_xaxis_formatting(ax, ctx)\n    if ax.get_ylim()[0] < 40:\n        ax.axhline(32, linestyle=\"--\", lw=2, color=\"tan\")\n    ax.set_ylabel(\"Temperature [°F]\")\n    ax.set_xlim(ctx[\"sts\"], ctx[\"ets\"])\n    ax.legend(ncol=3)\n    ax.grid(True)\n\n    return fig, df\n\n\ndef plot2(ctx):\n    \"\"\"Just soil temps\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            \"SELECT * from sm_hourly WHERE station = %s and \"\n            \"valid BETWEEN %s and %s ORDER by valid ASC\",\n            conn,\n            params=(ctx[\"station\"], ctx[\"sts\"], ctx[\"ets\"]),\n            index_col=\"valid\",\n        )\n    d12t = df[\"t12_c_avg_qc\"]\n    d24t = df[\"t24_c_avg_qc\"]\n    d50t = df[\"t50_c_avg_qc\"]\n    d04t = df[\"t4_c_avg_qc\"]\n    valid = df.index.values\n\n    title = f\"ISUSM Station: {ctx['_sname']} :: Soil Temperature Timeseries\"\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n    ax.grid(True)\n    svplotted = False\n    for depth in [2, 4, 8, 12, 14, 16, 20, 24, 28, 30, 32, 36, 40, 42, 52]:\n        series = df[f\"sv_t{depth}_qc\"]\n        if series.isnull().all():\n            continue\n        ax.plot(valid, c2f(series), linewidth=2, label=f\"{depth}in\")\n        svplotted = True\n\n    if not svplotted and not d04t.isnull().all():\n        ax.plot(valid, c2f(d04t), linewidth=2, color=\"brown\", label=\"4 inch\")\n    if not svplotted and not d12t.isnull().all():\n        ax.plot(valid, c2f(d12t), linewidth=2, color=\"r\", label=\"12 inch\")\n    if not svplotted and not d24t.isnull().all():\n        ax.plot(valid, c2f(d24t), linewidth=2, color=\"purple\", label=\"24 inch\")\n    if not svplotted and not d50t.isnull().all():\n        ax.plot(valid, c2f(d50t), linewidth=2, color=\"black\", label=\"50 inch\")\n    box = ax.get_position()\n    ax.set_position([box.x0, box.y0, box.width, box.height * 0.94])\n    ax.legend(\n        bbox_to_anchor=(0.5, 1.0),\n        ncol=10,\n        loc=\"lower center\",\n        fontsize=9 if svplotted else 12,\n    )\n    apply_xaxis_formatting(ax, ctx)\n    if ax.get_ylim()[0] < 40:\n        ax.axhline(32, linestyle=\"--\", lw=2, color=\"tan\")\n    ax.set_ylabel(\"Temperature [°F]\")\n    return fig, df\n\n\ndef plot_at(ctx):\n    \"\"\"One minute temperatures.\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT valid, tair_c_avg_qc, rh_avg_qc, slrkj_tot_qc,\n            ws_mph_qc, ws_mph_max_qc from sm_minute WHERE\n            station = :station and valid BETWEEN :sts and :ets\n            ORDER by valid ASC\n            \"\"\"),\n            conn,\n            params={\n                \"station\": ctx[\"station\"],\n                \"sts\": ctx[\"sts\"],\n                \"ets\": ctx[\"ets\"],\n            },\n            index_col=\"valid\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found for This Plot.\")\n\n    fig = figure(\n        apctx=ctx,\n        title=f\"{ctx['_sname']}:: One Minute Interval Plot\",\n        subtitle=(\n            f\"Valid between {ctx['sts']:%-d %b %Y %-I:%M %p} and \"\n            f\"{ctx['ets']:%-d %b %Y %-I:%M %p} Central Time\"\n        ),\n    )\n    if df[\"ws_mph_max_qc\"].max() > 0.1:\n        ax = fig.subplots(2, 1, sharex=True)\n    else:\n        ax = [fig.add_axes((0.1, 0.1, 0.8, 0.8))]\n    ax[0].plot(df.index, c2f(df[\"tair_c_avg_qc\"]), color=\"r\", label=\"Air Temp\")\n    ax[0].set_ylabel(\"Temperature [°F]\")\n    dwpf = dewpoint_from_relative_humidity(\n        units(\"degC\") * df[\"tair_c_avg_qc\"].values,\n        units(\"percent\") * df[\"rh_avg_qc\"].values,\n    )\n    ax[0].plot(df.index, dwpf.to(units(\"degF\")), color=\"g\", label=\"Dew Point\")\n\n    ax[0].grid(True)\n    if ax[0].get_ylim()[0] < 40:\n        ax[0].axhline(32, linestyle=\"--\", lw=2, color=\"tan\")\n    ax[0].legend(loc=\"best\")\n\n    ax2 = ax[0].twinx()\n    if not pd.isna(df[\"slrkj_tot_qc\"]).all():\n        ax2.plot(df.index, df[\"slrkj_tot_qc\"].values / 60.0 * 1000, color=\"k\")\n        ax2.set_ylabel(\"Solar Radiation [$W m^{-2}$]\")\n    apply_xaxis_formatting(ax[0], ctx)\n\n    if df[\"ws_mph_max_qc\"].max() > 0.1:\n        ax[1].bar(\n            df.index,\n            df[\"ws_mph_max_qc\"],\n            width=1 / 1440.0,\n            zorder=3,\n            color=\"r\",\n            label=\"Gust\",\n        )\n        ax[1].bar(\n            df.index,\n            df[\"ws_mph_qc\"],\n            width=1 / 1440.0,\n            zorder=4,\n            color=\"b\",\n            label=\"Avg\",\n        )\n        ax[1].grid(True)\n        ax[1].set_ylabel(\"Wind Speed [MPH]\")\n        ax[1].legend(loc=\"best\", ncol=2)\n\n    return fig, df\n\n\ndef plot_meteogram(ctx):\n    \"\"\"Do main plotting logic\"\"\"\n    table = \"sm_minute\"\n    barwidth = 1 / 1440.0\n    if (ctx[\"ets\"] - ctx[\"sts\"]) > timedelta(days=5):\n        table = \"sm_hourly\"\n        barwidth = 1 / 24.0\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT * from {table} WHERE\n            station = :station and valid BETWEEN :sts and :ets\n            ORDER by valid ASC\"\"\",\n                table=table,\n            ),\n            conn,\n            params={\n                \"station\": ctx[\"station\"],\n                \"sts\": ctx[\"sts\"],\n                \"ets\": ctx[\"ets\"],\n            },\n            index_col=\"valid\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found for This Plot.\")\n    fig = figure(\n        title=f\"ISUSM Station: {ctx['_sname']} Timeseries\",\n        apctx=ctx,\n    )\n    axes = fig.subplots(2, 1, sharex=True)\n    ax = axes[0]\n    df2 = df[df[\"tair_c_avg_qc\"] > -30]\n    if not df2.empty:\n        ax.plot(\n            df2.index.values, c2f(df2[\"tair_c_avg_qc\"]), color=\"r\", label=\"Air\"\n        )\n        dwpf = (\n            dewpoint_from_relative_humidity(\n                units(\"degC\") * df2[\"tair_c_avg_qc\"].values,\n                units(\"percent\") * df2[\"rh_avg_qc\"].values,\n            )\n            .to(units(\"degF\"))\n            .m\n        )\n        ax.plot(df2.index.values, dwpf, color=\"g\", label=\"Dew Point\")\n    ax.grid(True)\n    ax.set_ylabel(\"Temperature [°F]\")\n    ax.legend(loc=\"best\", ncol=2)\n\n    # ----------------\n    ax = axes[1]\n    ax.bar(df.index.values, df[\"ws_mph_max_qc\"], width=barwidth, color=\"r\")\n    ax.bar(df.index.values, df[\"ws_mph_qc\"], width=barwidth, color=\"b\")\n    ax.grid(True)\n    ax.set_ylabel(\"Wind Speed [MPH]\")\n\n    ax2 = ax.twinx()\n    ax2.scatter(df.index.values, df[\"winddir_d1_wvt_qc\"], color=\"g\")\n    ax2.set_ylabel(\"Wind Direction [deg]\")\n    ax2.set_ylim(-1, 361)\n    ax2.set_yticks(range(0, 361, 45))\n    ax2.set_yticklabels([\"N\", \"NE\", \"E\", \"SE\", \"S\", \"SW\", \"W\", \"NW\", \"N\"])\n\n    handles = [\n        Line2D([0], [0], color=\"r\", lw=2, label=\"Max Gust\"),\n        Line2D([0], [0], color=\"b\", lw=2, label=\"Avg Wind\"),\n        Line2D([0], [0], color=\"g\", lw=2, label=\"Wind Dir\"),\n    ]\n    ax.legend(\n        handles=handles,\n        loc=(0.5, 1.04),\n        ncol=3,\n        fontsize=10,\n    )\n\n    apply_xaxis_formatting(ax, ctx)\n    return fig, df\n\n\ndef plot1(ctx):\n    \"\"\"Do main plotting logic\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            \"SELECT * from sm_hourly WHERE \"\n            \"station = %s and valid BETWEEN %s and %s ORDER by valid ASC\",\n            conn,\n            params=(ctx[\"station\"], ctx[\"sts\"], ctx[\"ets\"]),\n            index_col=\"valid\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found for This Plot.\")\n    solar_wm2 = df[\"slrkj_tot_qc\"] / 3600.0 * 1000.0\n    d12sm = df[\"vwc12_qc\"]\n    d12t = df[\"t12_c_avg_qc\"]\n    d24t = df[\"t24_c_avg_qc\"]\n    d50t = df[\"t50_c_avg_qc\"]\n    d24sm = df[\"vwc24_qc\"]\n    d50sm = df[\"vwc50_qc\"]\n    rain = df[\"rain_in_tot_qc\"]\n    tair = df[\"tair_c_avg_qc\"]\n    d04t = df[\"t4_c_avg_qc\"]\n    valid = df.index\n\n    fig = figure(\n        title=f\"ISUSM Station: {ctx['_sname']} Timeseries\",\n        apctx=ctx,\n    )\n    ax = fig.subplots(3, 1, sharex=True)\n    ax[0].grid(True)\n    ax2 = ax[0].twinx()\n    ax[0].set_zorder(ax2.get_zorder() + 1)\n    ax[0].patch.set_visible(False)\n    # arange leads to funky values\n    ax2.set_yticks([-0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0])\n    ax2.set_yticklabels([0.6, 0.5, 0.4, 0.3, 0.2, 0.1, 0])\n    ax2.set_ylim(-0.6, 0)\n    ax2.set_ylabel(\"Hourly Precipitation [inch]\")\n    ax2.bar(valid, 0 - rain, width=0.04, fc=\"b\", ec=\"b\", zorder=4)\n\n    if not d12sm.isnull().all():\n        ax[0].plot(valid, d12sm * 100.0, linewidth=2, color=\"r\", zorder=5)\n    if not d24sm.isnull().all():\n        ax[0].plot(valid, d24sm * 100.0, linewidth=2, color=\"purple\", zorder=5)\n    if not d50sm.isnull().all():\n        ax[0].plot(valid, d50sm * 100.0, linewidth=2, color=\"black\", zorder=5)\n    ax[0].set_ylabel(\"Volumetric\\nSoil Water Content [%]\")\n\n    box = ax[0].get_position()\n    ax[0].set_position(\n        [box.x0, box.y0 + box.height * 0.05, box.width, box.height * 0.95]\n    )\n    box = ax2.get_position()\n    ax2.set_position(\n        [box.x0, box.y0 + box.height * 0.05, box.width, box.height * 0.95]\n    )\n    handles = [\n        Line2D([0], [0], color=\"r\", lw=3, label=\"12 inch\"),\n        Line2D([0], [0], color=\"purple\", lw=3, label=\"24 inch\"),\n        Line2D([0], [0], color=\"black\", lw=3, label=\"50 inch\"),\n        Patch(facecolor=\"b\", edgecolor=\"b\", label=\"Hourly Precip\"),\n    ]\n    ax[0].legend(\n        handles=handles,\n        bbox_to_anchor=(0.5, -0.15),\n        ncol=4,\n        loc=\"center\",\n        fontsize=12,\n    )\n\n    # ----------------------------------------\n    if not d12t.isnull().all():\n        ax[1].plot(valid, c2f(d12t), linewidth=2, color=\"r\", label=\"12in\")\n    if not d24t.isnull().all():\n        ax[1].plot(valid, c2f(d24t), linewidth=2, color=\"purple\", label=\"24in\")\n    if not d50t.isnull().all():\n        ax[1].plot(valid, c2f(d50t), linewidth=2, color=\"black\", label=\"50in\")\n    ax[1].grid(True)\n    ax[1].set_ylabel(\"Soil Temperature [°F]\")\n    box = ax[1].get_position()\n    ax[1].set_position(\n        [box.x0, box.y0 + box.height * 0.05, box.width, box.height * 0.95]\n    )\n\n    # ------------------------------------------------------\n\n    ax2 = ax[2].twinx()\n    (l3,) = ax2.plot(valid, solar_wm2, color=\"g\", zorder=1, lw=2)\n    ax2.set_ylabel(\"Solar Radiation [W/m^2]\", color=\"g\")\n\n    handles = []\n    labels = []\n    if not tair.isnull().all():\n        (l1,) = ax[2].plot(\n            valid, c2f(tair), linewidth=2, color=\"blue\", zorder=2\n        )\n        handles.append(l1)\n        labels.append(\"Air\")\n    if not d04t.isnull().all():\n        (l2,) = ax[2].plot(\n            valid, c2f(d04t), linewidth=2, color=\"brown\", zorder=2\n        )\n        handles.append(l2)\n        labels.append('4\" Soil')\n    handles.append(l3)\n    labels.append(\"Solar Radiation\")\n    ax[2].grid(True)\n    ax[2].legend(\n        handles,\n        labels,\n        bbox_to_anchor=(0.5, 1.1),\n        loc=\"center\",\n        ncol=3,\n    )\n    ax[2].set_ylabel(\"Temperature [°F]\")\n\n    ax[2].set_zorder(ax2.get_zorder() + 1)\n    ax[2].patch.set_visible(False)\n    ax[2].set_xlim(df.index.min(), df.index.max())\n    apply_xaxis_formatting(ax[2], ctx)\n\n    return fig, df\n\n\ndef apply_xaxis_formatting(ax: Axes, ctx: dict) -> None:\n    \"\"\"Apply consistent x-axis formatting based on the time range.\"\"\"\n    days = (ctx[\"ets\"] - ctx[\"sts\"]).days\n    if days >= 3:\n        interval = max(int(days / 7), 1)\n        ax.xaxis.set_major_locator(\n            mdates.DayLocator(interval=interval, tz=CENTRAL)\n        )\n        ax.xaxis.set_major_formatter(\n            mdates.DateFormatter(\"%-d %b\\n%Y\", tz=CENTRAL)\n        )\n    else:\n        ax.xaxis.set_major_locator(\n            mdates.AutoDateLocator(maxticks=10, tz=CENTRAL)\n        )\n        ax.xaxis.set_major_formatter(\n            mdates.DateFormatter(\"%-I:%M %p\\n%-d %b\", tz=CENTRAL)\n        )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    if ctx[\"opt\"] == \"1\":\n        fig, df = plot1(ctx)\n    elif ctx[\"opt\"] == \"m\":\n        fig, df = plot_meteogram(ctx)\n    elif ctx[\"opt\"] == \"2\":\n        fig, df = plot2(ctx)\n    elif ctx[\"opt\"] == \"4iemre\":\n        lon = ctx[\"_nt\"].sts[ctx[\"station\"]][\"lon\"]\n        lat = ctx[\"_nt\"].sts[ctx[\"station\"]][\"lat\"]\n        fig, df = plot4iemre(ctx, lon, lat)\n    elif ctx[\"opt\"] == \"at\":\n        fig, df = plot_at(ctx)\n    elif ctx[\"opt\"] == \"sm\":\n        fig, df = plot_sm(ctx)\n    elif ctx[\"opt\"] == \"3\":\n        fig, df = make_daily_plot(ctx)\n    elif ctx[\"opt\"] == \"4\":\n        fig, df = make_daily_rad_plot(ctx)\n    elif ctx[\"opt\"] == \"5\":\n        fig, df = make_daily_pet_plot(ctx)\n    elif ctx[\"opt\"] == \"6\":\n        fig, df = make_vsm_histogram_plot(ctx)\n    elif ctx[\"opt\"] == \"7\":\n        fig, df = make_daily_water_change_plot(ctx)\n    elif ctx[\"opt\"] == \"8\":\n        fig, df = make_hourly_plot(ctx, \"battv_min_qc\")\n    elif ctx[\"opt\"] == \"encrh\":\n        fig, df = make_hourly_plot(ctx, \"encrh_avg\")\n    elif ctx[\"opt\"] == \"9\":\n        fig, df = make_daily_rainfall_soil_rh(ctx)\n    elif ctx[\"opt\"] == \"10\":\n        fig, df = make_inversion_plot(ctx)\n    else:  # 11\n        fig, df = make_inversion_timing(ctx)\n\n    # removal of timestamps, sigh\n    df = df.reset_index()\n    for col in [\n        \"valid\",\n        \"ws_mph_tmx\",\n        \"valid\",\n        \"ws_mph_tmx_qc\",\n        \"tair_c_tmn\",\n        \"tair_c_tmx\",\n        \"tair_c_tmx_qc\",\n        \"tair_c_tmn_qc\",\n    ]:\n        if col in df.columns:\n            df[col] = df[col].apply(\n                lambda x: (\n                    x\n                    if isinstance(x, str) or pd.isnull(x)\n                    else x.strftime(\"%Y-%m-%d %H:%M\")\n                )\n            )\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p178.py",
    "content": "\"\"\"\nThis application plots Flash Flood Guidance for\na time of your choice.  The time is used to query a 24 hour trailing window\nto find the most recent FFG issuance.\n\n<p>For dates after 1 Jan 2019, a gridded 5km analysis product is used as\nthe county guidance was discontinued. The raw data download option does\nnot work for that data either.  You can find the raw Grib files on the\nIEM Archives, for example\n<a href=\"https://mesonet.agron.iastate.edu/archive/data/2019/04/25/model/ffg/\">\nhere</a>.\n</p>\n\n<p>Additionally, there is a <a\nhref=\"/api/1/docs#/default/ffg_bypoint_service_ffg_bypoint_json_get\">\nFFG by Point</a>\nweb service that provides the raw values.</p>\n\n<p>For dates before 1 Jan 2019, this dataset is based on IEM processing\nof county/zone based FFG guidance found in the FFG text products.\n\"\"\"\n\nfrom datetime import datetime, timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport pandas as pd\nimport pygrib\nfrom metpy.units import masked_array, units\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot, get_cmap\nfrom pyiem.reference import SECTORS_NAME\nfrom pyiem.util import archive_fetch\n\nHOURS = {\n    \"1\": \"One Hour\",\n    \"3\": \"Three Hour\",\n    \"6\": \"Six Hour\",\n    \"12\": \"Twelve Hour\",\n    \"24\": \"Twenty Four Hour\",\n}\nPDICT = {\n    \"cwa\": \"Plot by NWS Forecast Office\",\n    \"state\": \"Plot by State\",\n}\nPDICT.update(SECTORS_NAME)\nPDICT3 = {\n    \"yes\": \"YES: Label/Plot Counties/Zones\",\n    \"no\": \"NO: Do not Label Counties/Zones\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    now = datetime.now(timezone.utc)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"t\",\n            default=\"state\",\n            options=PDICT,\n            label=\"Select plot extent type:\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"wfo\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO: (ignored if plotting state)\",\n        ),\n        dict(\n            type=\"state\",\n            name=\"state\",\n            default=\"IA\",\n            label=\"Select State: (ignored if plotting wfo)\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"hour\",\n            default=\"1\",\n            options=HOURS,\n            label=\"Guidance Period:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"ilabel\",\n            default=\"yes\",\n            options=PDICT3,\n            label=\"Overlay values / plot counties on map?\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"ts\",\n            default=now.strftime(\"%Y/%m/%d %H%M\"),\n            label=\"Valid Time (UTC Timezone):\",\n            min=\"2003/01/01 0000\",\n        ),\n        dict(\n            type=\"cmap\",\n            name=\"cmap\",\n            default=\"gist_rainbow\",\n            label=\"Color Ramp:\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    ts = ctx[\"ts\"].replace(tzinfo=ZoneInfo(\"UTC\"))\n    hour = int(ctx[\"hour\"])\n    ilabel = ctx[\"ilabel\"] == \"yes\"\n    plot = MapPlot(\n        apctx=ctx,\n        sector=ctx[\"t\"],\n        continentalcolor=\"white\",\n        state=ctx[\"state\"],\n        cwa=ctx[\"wfo\"],\n        title=(\n            f\"NWS RFC {hour} Hour Flash Flood Guidance \"\n            f\"on {ts:%-d %b %Y %H} UTC\"\n        ),\n        subtitle=(\n            f\"Estimated amount of {HOURS[ctx['hour']]} Rainfall \"\n            \"needed for non-urban Flash Flooding to commence\"\n        ),\n        nocaption=True,\n    )\n    cmap = get_cmap(ctx[\"cmap\"])\n    bins = [\n        0.01,\n        0.6,\n        0.8,\n        1.0,\n        1.2,\n        1.4,\n        1.6,\n        1.8,\n        2.0,\n        2.25,\n        2.5,\n        2.75,\n        3.0,\n        3.5,\n        4.0,\n        5.0,\n    ]\n    if ts.year < 2019:\n        column = \"hour%02i\" % (hour,)\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            df = pd.read_sql(\n                \"\"\"\n            WITH data as (\n                SELECT ugc, rank() OVER (PARTITION by ugc ORDER by valid DESC),\n                hour01, hour03, hour06, hour12, hour24\n                from ffg WHERE valid >= %s and valid <= %s)\n            SELECT *, substr(ugc, 3, 1) as ztype from data where rank = 1\n            \"\"\",\n                conn,\n                params=(ts - timedelta(hours=24), ts),\n                index_col=\"ugc\",\n            )\n        if not df.empty:\n            df2 = df[df[\"ztype\"] == \"C\"]\n            plot.fill_ugcs(\n                df2[column].to_dict(),\n                bins=bins,\n                cmap=cmap,\n                plotmissing=False,\n                ilabel=ilabel,\n            )\n            df2 = df[df[\"ztype\"] == \"Z\"]\n            plot.fill_ugcs(\n                df2[column].to_dict(),\n                bins=bins,\n                cmap=cmap,\n                plotmissing=False,\n                units=\"inches\",\n                ilabel=ilabel,\n            )\n    else:\n        # use grib data\n        ts -= timedelta(hours=ts.hour % 6)\n        ts = ts.replace(minute=0)\n        lats = None\n        for offset in range(0, 24, 4):\n            ts2 = ts - timedelta(hours=offset)\n            with archive_fetch(\n                ts2.strftime(\"%Y/%m/%d/model/ffg/5kmffg_%Y%m%d%H.grib2\")\n            ) as testfn:\n                if testfn is not None:\n                    grbs = pygrib.index(testfn, \"stepRange\")\n                    grb = grbs.select(stepRange=f\"0-{hour}\")[0]\n                    lats, lons = grb.latlons()\n                    break\n\n        if lats is None:\n            raise NoDataFound(\"No valid grib data found!\")\n        data = (\n            masked_array(grb.values, data_units=units(\"mm\"))\n            .to(units(\"inch\"))\n            .m\n        )\n        plot.pcolormesh(lons, lats, data, bins, cmap=cmap)\n        if ilabel:\n            plot.drawcounties()\n        df = pd.DataFrame()\n    return plot.fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p179.py",
    "content": "\"\"\"\nThis application creates two 2-D histograms of\nGDD accumulation frequencies. These frequencies are based on historical\ndata for the specificed site and base the end of each year's growing\nseason on the first sub freezing temperature of the fall.  The left hand\nplot shows the overall frequency based on each year's data.  The right\nhand plot does a scenario using the combination of year to date data for\nthis year and then each previous year afterwards is appended to this\nyear's data to provide frequencies.  The right hand plot is meant to\nprovide current frequencies / probabilities of what could potentially\nhappen this year.\n\"\"\"\n\nfrom datetime import date, datetime\n\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure, get_cmap\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"int\",\n            name=\"gddbase\",\n            default=2300,\n            label=\"Growing Degree Days to Accumulate:\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"base\",\n            default=\"50\",\n            label=\"Growing Degree Day Base (F)\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"ceil\",\n            default=\"86\",\n            label=\"Growing Degree Day Ceiling (F)\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"date\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"Retroactive Date:\",\n            min=\"1893/01/01\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"jet\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"coop\")\ndef plotter(ctx: dict, conn: Connection | None = None):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    gddbase = ctx[\"gddbase\"]\n    base = ctx[\"base\"]\n    ceil = ctx[\"ceil\"]\n    today: date = ctx[\"date\"]\n    bs = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if bs is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    byear = bs.year\n    eyear = today.year + 1\n    res = conn.execute(\n        sql_helper(\"\"\"\n        SELECT year, extract(doy from day), gddxx(:base, :ceil, high,low), low\n        from alldata where station = :station and year > :byear and\n        day < :today and high is not null and low is not null\n        \"\"\"),\n        {\n            \"base\": base,\n            \"ceil\": ceil,\n            \"station\": station,\n            \"byear\": byear,\n            \"today\": today,\n        },\n    )\n\n    gdd = np.zeros((eyear - byear, 366), \"f\")\n    freezes = np.zeros((eyear - byear), \"f\")\n    freezes[:] = 400.0\n\n    for row in res:\n        gdd[int(row[0]) - byear, int(row[1]) - 1] = row[2]\n        if row[1] > 180 and row[3] < 32 and row[1] < freezes[row[0] - byear]:\n            freezes[int(row[0]) - byear] = row[1]\n\n    for i, freeze in enumerate(freezes):\n        gdd[i, int(freeze) :] = 0.0\n\n    idx = today.timetuple().tm_yday - 1\n    apr1 = datetime(2000, 4, 1).timetuple().tm_yday - 1\n    jun30 = datetime(2000, 6, 30).timetuple().tm_yday - 1\n    sep1 = datetime(2000, 9, 1).timetuple().tm_yday - 1\n    oct31 = datetime(2000, 10, 31).timetuple().tm_yday - 1\n\n    # Replace all years with the last year's data\n    scenario_gdd = gdd * 1\n    scenario_gdd[:-1, :idx] = gdd[-1, :idx]\n\n    # store our probs\n    probs = np.zeros((oct31 - sep1, jun30 - apr1), \"f\")\n    scenario_probs = np.zeros((oct31 - sep1, jun30 - apr1), \"f\")\n\n    rows = []\n    for x in range(apr1, jun30):\n        for y in range(sep1, oct31):\n            sums = np.where(np.sum(gdd[:-1, x:y], 1) >= gddbase, 1, 0)\n            probs[y - sep1, x - apr1] = sum(sums) / float(len(sums)) * 100.0\n            sums = np.where(np.sum(scenario_gdd[:-1, x:y], 1) >= gddbase, 1, 0)\n            scenario_probs[y - sep1, x - apr1] = (\n                sum(sums) / float(len(sums)) * 100.0\n            )\n            rows.append(\n                dict(\n                    x=x,\n                    y=y,\n                    prob=probs[y - sep1, x - apr1],\n                    scenario_probs=scenario_probs[y - sep1, x - apr1],\n                )\n            )\n    df = pd.DataFrame(rows)\n\n    probs = np.where(probs < 0.1, -1, probs)\n    scenario_probs = np.where(scenario_probs < 0.1, -1, scenario_probs)\n    title = (\n        f\"({byear}-{eyear - 1}) {ctx['_sname']}:: GDDs\\n\"\n        f\"Frequency [%] of reaching {gddbase:.0f} GDDs \"\n        f\"({base:.0f}/{ceil:.0f}) prior to first freeze\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    ax = fig.subplots(1, 2, sharey=True)\n\n    cmap = get_cmap(ctx[\"cmap\"])\n    cmap.set_under(\"white\")\n    norm = mpcolors.BoundaryNorm(np.arange(0, 101, 5), cmap.N)\n\n    ax[0].imshow(\n        np.flipud(probs),\n        aspect=\"auto\",\n        extent=[apr1, jun30, sep1, oct31],\n        interpolation=\"nearest\",\n        cmap=cmap,\n        norm=norm,\n    )\n    ax[0].grid(True)\n    ax[0].set_title(\"Overall Frequencies\")\n    ax[0].set_xticks((91, 106, 121, 136, 152, 167))\n    ax[0].set_ylabel(\"Growing Season End Date\")\n    ax[0].set_xlabel(\"Growing Season Begin Date\")\n    ax[0].set_xticklabels((\"Apr 1\", \"15\", \"May 1\", \"15\", \"Jun 1\", \"15\"))\n    ax[0].set_yticks((244, 251, 258, 265, 274, 281, 288, 295, 305))\n    ax[0].set_yticklabels(\n        \"Sep 1,Sep 8,Sep 15,Sep 22,Oct 1,Oct 8,Oct 15,Oct 22,Nov\".split(\",\")\n    )\n\n    res = ax[1].imshow(\n        np.flipud(scenario_probs),\n        aspect=\"auto\",\n        extent=[apr1, jun30, sep1, oct31],\n        interpolation=\"nearest\",\n        cmap=cmap,\n        norm=norm,\n    )\n    ax[1].grid(True)\n    ax[1].set_title(f\"Scenario after {today:%-d %B %Y}\")\n    ax[1].set_xticks((91, 106, 121, 136, 152, 167))\n    ax[1].set_xticklabels((\"Apr 1\", \"15\", \"May 1\", \"15\", \"Jun 1\", \"15\"))\n    ax[1].set_xlabel(\"Growing Season Begin Date\")\n\n    fig.subplots_adjust(bottom=0.20, top=0.85)\n    cbar_ax = fig.add_axes((0.05, 0.06, 0.85, 0.05))\n    fig.colorbar(res, cax=cbar_ax, orientation=\"horizontal\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p180.py",
    "content": "\"\"\"\nThis application plots daily climatology for\na location or two of your choice.  You can pick which climatology to use\nand effectively build a difference plot when picking the same station,\nbut using a different climatology.\n\"\"\"\n\nimport calendar\n\nimport matplotlib.dates as mdates\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure, fitbox\n\nPDICT = {\n    \"por\": \"Period of Record (por) Climatology\",\n    \"1951\": \"1951-present Climatology\",\n    \"ncei81\": \"NCEI 1981-2010 Climatology\",\n    \"ncei91\": \"NCEI 1991-2020 Climatology\",\n    \"custom\": \"Custom Climatology (pick years)\",\n}\nPDICT2 = {\n    \"0\": \"No Smoothing Applied\",\n    \"7\": \"Seven Day Centered Smooth\",\n    \"14\": \"Fourteen Day Centered Smooth\",\n}\nPDICT3 = {\n    \"temps\": \"Plot High and Low Temperatures\",\n    \"precip\": \"Precipitation\",\n    \"snow\": \"Snowfall\",\n}\nLABELS = {\n    \"temps\": \"Temperature [°F]\",\n    \"precip\": \"Precipitation [inch/day]\",\n    \"snow\": \"Snowfall [inch/day]\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__}\n    desc[\"data\"] = True\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            options=PDICT3,\n            default=\"temps\",\n            name=\"v\",\n            label=\"Which Variable(s) to Plot\",\n        ),\n        dict(\n            type=\"station\",\n            name=\"station1\",\n            default=\"IATDSM\",\n            label=\"Select First Station:\",\n            network=\"IACLIMATE\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"c1\",\n            label=\"Climatology Source for First Station:\",\n            default=\"1951\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"station\",\n            name=\"station2\",\n            default=\"IATDSM\",\n            optional=True,\n            label=\"Select Second Station (Optional):\",\n            network=\"IACLIMATE\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"c2\",\n            label=\"Climatology Source for Second Station:\",\n            default=\"1951\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"s\",\n            label=\"For difference plot, should smoother be applied:\",\n            default=\"0\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"year\",\n            min=1880,\n            name=\"sy1\",\n            default=1991,\n            label=\"Inclusive Start Year for First Station Period of Years:\",\n        ),\n        dict(\n            type=\"year\",\n            min=1880,\n            name=\"ey1\",\n            default=2020,\n            label=\"Inclusive End Year for First Station Period of Years:\",\n        ),\n        dict(\n            type=\"year\",\n            min=1880,\n            name=\"sy2\",\n            default=1981,\n            label=\"Inclusive Start Year for Second Station Period of Years:\",\n        ),\n        dict(\n            type=\"year\",\n            min=1880,\n            name=\"ey2\",\n            default=2010,\n            label=\"Inclusive End Year for Second Station Period of Years:\",\n        ),\n    ]\n    return desc\n\n\ndef pick_climate(ctx, idx):\n    \"\"\"Figure out what we need to use.\"\"\"\n    climo = ctx.get(f\"c{idx}\", \"1951\")\n    cltable = \"climate\"\n    clstation = ctx.get(f\"station{idx}\")\n    if climo == \"1951\":\n        cltable = \"climate51\"\n        clstation = ctx.get(f\"station{idx}\")\n    elif climo == \"ncei81\":\n        cltable = \"ncdc_climate81\"\n        if clstation in ctx[f\"_nt{idx}\"].sts:\n            clstation = ctx[f\"_nt{idx}\"].sts[clstation][\"ncdc81\"]\n    elif climo == \"ncei91\":\n        cltable = \"ncei_climate91\"\n        if clstation in ctx[f\"_nt{idx}\"].sts:\n            clstation = ctx[f\"_nt{idx}\"].sts[clstation][\"ncei91\"]\n    return cltable, clstation\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    varname = ctx[\"v\"]\n    station1 = ctx[\"station1\"]\n    station2 = ctx.get(\"station2\")\n    c1 = ctx[\"c1\"]\n    c2 = ctx.get(\"c2\")\n\n    cltable1, clstation1 = pick_climate(ctx, \"1\")\n\n    if c1 == \"custom\":\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            df = pd.read_sql(\n                sql_helper(\"\"\"\n                     SELECT sday, station, avg(high) as high, avg(low) as low,\n                avg(precip) as precip, avg(snow) as snow\n                from alldata WHERE\n                station = :station and sday != '0229' and year >= :sy1 and\n                year <= :ey1 and high is not null and\n                low is not null GROUP by sday, station ORDER by sday ASC\n                     \"\"\"),\n                conn,\n                params={\n                    \"station\": station1,\n                    \"sy1\": ctx[\"sy1\"],\n                    \"ey1\": ctx[\"ey1\"],\n                },\n                index_col=None,\n            )\n        df[\"valid\"] = pd.to_datetime(df[\"sday\"] + \"2000\", format=\"%m%d%Y\")\n        df = df.set_index(\"valid\")\n    else:\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            df = pd.read_sql(\n                sql_helper(\n                    \"\"\"SELECT valid, station, high, low, precip, snow from\n                {table} WHERE station = :station and valid != '2000-02-29'\n                ORDER by valid ASC\"\"\",\n                    table=cltable1,\n                ),\n                conn,\n                params={\"station\": clstation1},\n                parse_dates=\"valid\",\n                index_col=\"valid\",\n            )\n    if df.empty:\n        raise NoDataFound(\"Failed to find data for station1\")\n    if station2:\n        cltable2, clstation2 = pick_climate(ctx, \"2\")\n        if c2 == \"custom\":\n            with get_sqlalchemy_conn(\"coop\") as conn:\n                df2 = pd.read_sql(\n                    sql_helper(\"\"\"\n                         SELECT sday, station, avg(high) as high,\n                    avg(low) as low, avg(precip) as precip,\n                    avg(snow) as snow from alldata WHERE\n                    station = :station and sday != '0229' and year >= :sy2 and\n                    year <= :ey2 and high is not null and\n                    low is not null GROUP by sday, station ORDER by sday ASC\n                         \"\"\"),\n                    conn,\n                    params={\n                        \"station\": station2,\n                        \"sy2\": ctx[\"sy2\"],\n                        \"ey2\": ctx[\"ey2\"],\n                    },\n                    index_col=None,\n                )\n            df2[\"valid\"] = pd.to_datetime(\n                df2[\"sday\"] + \"2000\", format=\"%m%d%Y\"\n            )\n            df2 = df2.set_index(\"valid\")\n\n        else:\n            with get_sqlalchemy_conn(\"coop\") as conn:\n                df2 = pd.read_sql(\n                    sql_helper(\n                        \"\"\"\n                         SELECT valid, station, high, low, precip, snow from\n                    {table} WHERE station = :station\n                    and valid != '2000-02-29'\n                    ORDER by valid ASC\n                    \"\"\",\n                        table=cltable2,\n                    ),\n                    conn,\n                    params={\"station\": clstation2},\n                    parse_dates=\"valid\",\n                    index_col=\"valid\",\n                )\n        if df2.empty:\n            raise NoDataFound(\"Failed to find data for station2\")\n        df[\"station2\"] = station2\n        for v in [\"high\", \"low\", \"precip\", \"snow\"]:\n            df[f\"{v}2\"] = df2[v]\n            df[f\"{v}diff\"] = df[v] - df[f\"{v}2\"]\n\n    fig = figure(apctx=ctx)\n\n    ax1 = None\n    ax2 = None\n    if station2 is not None:\n        ax0 = fig.add_axes((0.05, 0.15, 0.43, 0.75))\n        ax1 = fig.add_axes((0.55, 0.55, 0.43, 0.35))\n        ax2 = fig.add_axes((0.55, 0.07, 0.43, 0.35))\n    else:\n        ax0 = fig.add_axes((0.12, 0.15, 0.8, 0.75))\n\n    c1label = c1\n    if c1 == \"custom\":\n        c1label = f\"[{ctx['sy1']}-{ctx['ey1']}]\"\n    c2label = c2\n    if c2 == \"custom\":\n        c2label = f\"[{ctx['sy2']}-{ctx['ey2']}]\"\n    var1 = \"high\" if varname == \"temps\" else varname\n    var2 = \"low\" if varname == \"temps\" else None\n    ax0.plot(\n        df.index.values,\n        df[var1],\n        color=\"r\",\n        linestyle=\"-\",\n        label=f\"{var1.capitalize()} {station1} ({c1label})\",\n    )\n    if var2 is not None:\n        ax0.plot(\n            df.index.values,\n            df[var2],\n            color=\"b\",\n            label=f\"Low {station1} ({c1label})\",\n        )\n    ax0.set_ylabel(LABELS[varname])\n    tt = PDICT[c1] if c1 != \"custom\" else c1label\n    title = (\n        f\"[{station1}] {ctx['_nt1'].sts[station1]['name']}:: \"\n        f\"{tt} Daily Averages\"\n    )\n    subtitle = None\n    if station2 is not None:\n        if station1 == station2:\n            title = (\n                f\"[{station1}] {ctx['_nt1'].sts[station1]['name']} \"\n                f\"{PDICT[c1] if c1 != 'custom' else c1label} vs \"\n                f\"{PDICT[c2] if c2 != 'custom' else c2label}\"\n            )\n            label = f\"{c1label} - {c2label}\"\n        else:\n            title = \"Daily Climatology Comparison\"\n            subtitle = (\n                f\"[{station1}] {ctx['_nt1'].sts[station1]['name']} \"\n                f\"{PDICT[ctx['c1']]} vs [{station2}] \"\n                f\"{ctx['_nt2'].sts[station2]['name']} {PDICT[ctx['c2']]}\"\n            )\n            label = f\"{station1} ({c1}) - {station2} ({c2})\"\n        ax0.plot(\n            df.index.values,\n            df[f\"{var1}2\"],\n            color=\"brown\" if var2 is not None else \"blue\",\n            label=f\"{var1.capitalize()} {station2} ({c2label})\",\n        )\n        if var2 is not None:\n            ax0.plot(\n                df.index.values,\n                df[f\"{var2}2\"],\n                color=\"green\",\n                label=f\"Low {station2} ({c2label})\",\n            )\n        delta = df[f\"{var1}diff\"]\n        if ctx[\"s\"] != \"0\":\n            ax1.text(\n                0.01,\n                0.99,\n                f\"** {int(ctx['s'])} Day Smoother Applied\",\n                transform=ax1.transAxes,\n                va=\"top\",\n            )\n            delta = delta.rolling(window=int(ctx[\"s\"])).mean()\n        ax1.plot(\n            df.index.values,\n            delta.values,\n            color=\"r\",\n            label=f\"{var1.capitalize()} Diff {label}\",\n        )\n        if var2 is not None:\n            delta = df[\"lowdiff\"]\n            if ctx[\"s\"] != \"0\":\n                delta = delta.rolling(window=int(ctx[\"s\"])).mean()\n            ax1.plot(\n                df.index.values, delta, color=\"b\", label=f\"Low Diff {label}\"\n            )\n        ax1.set_ylabel(f\"{LABELS[varname]} Difference\")\n        ax1.legend(ncol=1, loc=\"center\", bbox_to_anchor=(0.5, -0.2))\n        ax1.grid()\n        ax1.xaxis.set_major_locator(mdates.MonthLocator(interval=1))\n        ax1.xaxis.set_major_formatter(mdates.DateFormatter(\"%b\"))\n\n        # Compute monthly\n        gdf = df.groupby(df.index.month).mean(numeric_only=True)\n        ax2.text(\n            0.01,\n            1.0,\n            \"Monthly Average Difference\",\n            transform=ax2.transAxes,\n            va=\"bottom\",\n        )\n        ax2.bar(\n            gdf.index.values - (0.2 if var2 is not None else 0),\n            gdf[f\"{var1}diff\"],\n            width=0.4 if var2 is not None else 0.8,\n            color=\"r\",\n        )\n        if var2 is not None:\n            ax2.bar(\n                gdf.index.values + 0.2, gdf[\"lowdiff\"], width=0.4, color=\"b\"\n            )\n        ax2.set_ylabel(f\"{LABELS[varname]} Difference\")\n        ax2.set_xticks(range(1, 13))\n        ax2.set_xticklabels(calendar.month_abbr[1:])\n        ax2.grid()\n\n    fitbox(fig, title, 0.08, 0.94, 0.95, 0.99)\n    if subtitle is not None:\n        fitbox(fig, subtitle, 0.08, 0.95, 0.905, 0.935)\n    ax0.legend(fontsize=10, ncol=2, loc=\"center\", bbox_to_anchor=(0.5, -0.1))\n    ax0.grid()\n    ax0.xaxis.set_major_locator(mdates.MonthLocator(interval=1))\n    ax0.xaxis.set_major_formatter(mdates.DateFormatter(\"%b\"))\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p181.py",
    "content": "\"\"\"\nThis application plots frequencies of a variable\nof your choice for five bins of your choice.  These five bins represent\ninclusive ranges and may overlap, if so desired.  The range entries below\nare in units of inches or Fahrenheit where appropriate.  The date selection\nsets the year-to-date period used for each year.\n\n<p><strong>Updated 17 March 2021</strong>: The range parameters were\nupdated to be space delimited so to allow negative numbers to be used.\n\"\"\"\n\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"avgt\": \"Average Temperature\",\n    \"high\": \"High Temperature\",\n    \"low\": \"Low Temperature\",\n    \"precip\": \"Precipitation\",\n    \"snow\": \"Snowfall\",\n}\n\n\ndef parse_range(rng: str):\n    \"\"\"Convert this into bins\"\"\"\n    if rng.find(\" \") == -1:\n        raise NoDataFound(\"Invalid Range Provided\")\n    return [float(f) for f in rng.replace(\"to\", \"\").split()]\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"date\",\n            name=\"date\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"Select Year-to-Date End Date (inclusive):\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=(today.year - 1),\n            label=\"Additional Year to Compare:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            options=PDICT,\n            default=\"high\",\n            label=\"Variable to Plot:\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"r1\",\n            default=\"50 59\",\n            label=\"Range #1 (inclusive, space separated)\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"r2\",\n            default=\"60 69\",\n            label=\"Range #2 (inclusive, space separated)\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"r3\",\n            default=\"70 79\",\n            label=\"Range #3 (inclusive, space separated)\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"r4\",\n            default=\"80 89\",\n            label=\"Range #4 (inclusive, space separated)\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"r5\",\n            default=\"90 99\",\n            label=\"Range #5 (inclusive, space separated)\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    r1 = parse_range(ctx[\"r1\"])\n    r2 = parse_range(ctx[\"r2\"])\n    r3 = parse_range(ctx[\"r3\"])\n    r4 = parse_range(ctx[\"r4\"])\n    r5 = parse_range(ctx[\"r5\"])\n    dt = ctx[\"date\"]\n    year = ctx[\"year\"]\n    varname = ctx[\"var\"]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT year, day, high, low, precip, snow,\n            (high + low) / 2. as avgt from alldata WHERE station = :station and\n            extract(doy from day) <= extract(doy from :dt)\n        \"\"\"),\n            conn,\n            params={\"station\": station, \"dt\": dt},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    for i, rng in enumerate([r1, r2, r3, r4, r5]):\n        df[f\"cnt{i + 1}\"] = 0\n        df.loc[\n            ((df[varname] >= rng[0]) & (df[varname] <= rng[1])),\n            f\"cnt{i + 1}\",\n        ] = 1\n\n    gdf = (\n        df[[\"cnt1\", \"cnt2\", \"cnt3\", \"cnt4\", \"cnt5\", \"year\"]]\n        .groupby(\"year\")\n        .sum()\n    )\n\n    title = f\"{ctx['_sname']} :: Jan 1 - {dt:%b %-d} {PDICT[varname]} Days\"\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    bars = ax.bar(\n        np.arange(1, 6) - 0.25, gdf.mean().values, width=-0.25, label=\"Average\"\n    )\n    for mybar in bars:\n        ax.text(\n            mybar.get_x() - 0.125,\n            mybar.get_height() + 0.5,\n            f\"{mybar.get_height():.1f}\",\n            fontsize=14,\n            ha=\"center\",\n        )\n\n    if year in gdf.index:\n        bars = ax.bar(\n            range(1, 6), gdf.loc[year].values, width=0.25, label=str(year)\n        )\n        for mybar in bars:\n            ax.text(\n                mybar.get_x() + 0.125,\n                mybar.get_height() + 0.5,\n                f\"{mybar.get_height():.0f}\",\n                fontsize=14,\n                ha=\"center\",\n            )\n\n    if dt.year in gdf.index:\n        bars = ax.bar(\n            np.arange(1, 6) + 0.25,\n            gdf.loc[dt.year].values,\n            width=0.25,\n            label=str(dt.year),\n        )\n        for mybar in bars:\n            ax.text(\n                mybar.get_x() + 0.125,\n                mybar.get_height() + 0.5,\n                f\"{mybar.get_height():.0f}\",\n                fontsize=14,\n                ha=\"center\",\n            )\n    ax.grid(True)\n    ax.set_xticks(range(1, 6))\n    ax.set_xticklabels(\n        [\"%g thru %g\" % (one, two) for (one, two) in [r1, r2, r3, r4, r5]]\n    )\n    ax.legend(loc=\"best\")\n    ax.set_ylabel(\"Days\")\n    ax.set_ylim(top=ax.get_ylim()[1] + 1)\n    ax.set_xlabel(f\"{PDICT[varname]} (Ranges Inclusive)\")\n\n    return fig, gdf\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p182.py",
    "content": "\"\"\"\nThis application attempts to assess the\neffectiveness of a calendar day's rainfall based on where the rain fell\nin relation to a previous period of days departure from climatology. So\nfor a given date and state, the areal coverage of daily precipitation\nat some given threshold is compared against the departure from climatology\nover some given number of days.  The intention is to answer a question like\nhow much of the rain on a given day fell on an area that needed it!  The\nareal coverage percentages are relative to the given state.\n\"\"\"\n\nimport os\nfrom datetime import datetime, timedelta\n\nimport geopandas as gpd\nimport numpy as np\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.grid.nav import MRMS_IEMRE\nfrom pyiem.grid.zs import CachingZonalStats\nfrom pyiem.iemre import (\n    daily_offset,\n    get_daily_mrms_ncname,\n    get_dailyc_mrms_ncname,\n)\nfrom pyiem.plot import figure_axes\nfrom pyiem.reference import state_names\nfrom pyiem.util import mm2inch, ncopen\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__}\n    today = datetime.today() - timedelta(days=1)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"csector\", name=\"sector\", default=\"IA\", label=\"Select Sector:\"\n        ),\n        dict(\n            type=\"date\",\n            name=\"date\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"Date:\",\n            min=\"2011/01/01\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"trailing\",\n            default=31,\n            label=\"Over how many trailing days to compute departures?\",\n        ),\n        dict(\n            type=\"float\",\n            name=\"threshold\",\n            default=0.1,\n            label=\"Date Precipitation Threshold (inch)\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    dt = ctx[\"date\"]\n    sector = ctx[\"sector\"]\n    days = ctx[\"trailing\"]\n    threshold = ctx[\"threshold\"]\n    window_sts = dt - timedelta(days=days)\n    if window_sts.year != dt.year:\n        raise NoDataFound(\"Sorry, do not support multi-year plots yet!\")\n    if len(sector) != 2:\n        raise NoDataFound(\n            \"Sorry, this does not support multi-state plots yet.\"\n        )\n\n    idx0 = daily_offset(window_sts)\n    idx1 = daily_offset(dt)\n    ncfn = get_daily_mrms_ncname(dt.year)\n    ncvar = \"p01d\"\n    if not os.path.isfile(ncfn):\n        raise NoDataFound(\"No data for that year, sorry.\")\n    # Get the state weight\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = gpd.GeoDataFrame.from_postgis(\n            sql_helper(\"SELECT the_geom from states where state_abbr = :st\"),\n            conn,\n            params={\"st\": sector},\n            index_col=None,\n            geom_col=\"the_geom\",\n        )\n    czs = CachingZonalStats(MRMS_IEMRE.affine_image)\n    czs.gen_stats(\n        np.zeros((int(MRMS_IEMRE.ny), int(MRMS_IEMRE.nx))),\n        df[\"the_geom\"],\n    )\n    hasdata = None\n    jslice = None\n    islice = None\n    for nav in czs.gridnav:\n        hasdata = np.ones((nav.ysz, nav.xsz))\n        hasdata[nav.mask] = 0.0\n        # careful here as y is flipped in this context\n        jslice = slice(\n            MRMS_IEMRE.ny - (nav.y0 + nav.ysz),\n            MRMS_IEMRE.ny - nav.y0,\n        )\n        islice = slice(nav.x0, nav.x0 + nav.xsz)\n    if hasdata is not None:\n        hasdata = np.flipud(hasdata)\n    with ncopen(ncfn) as nc:\n        today = mm2inch(nc.variables[ncvar][idx1, jslice, islice])\n        if (idx1 - idx0) < 32:\n            p01d = mm2inch(\n                np.sum(nc.variables[ncvar][idx0:idx1, jslice, islice], 0)\n            )\n        else:\n            # Too much data can overwhelm this app, need to chunk it\n            for i in range(idx0, idx1, 10):\n                i2 = min([i + 10, idx1])\n                if idx0 == i:\n                    p01d = mm2inch(\n                        np.sum(nc.variables[ncvar][i:i2, jslice, islice], 0)\n                    )\n                else:\n                    p01d += mm2inch(\n                        np.sum(nc.variables[ncvar][i:i2, jslice, islice], 0)\n                    )\n\n    # Get climatology\n    ncfn = get_dailyc_mrms_ncname()\n    if not os.path.isfile(ncfn):\n        raise NoDataFound(f\"Missing {ncfn}\")\n    with ncopen(ncfn) as nc:\n        if (idx1 - idx0) < 32:\n            c_p01d = mm2inch(\n                np.sum(nc.variables[ncvar][idx0:idx1, jslice, islice], 0)\n            )\n        else:\n            # Too much data can overwhelm this app, need to chunk it\n            for i in range(idx0, idx1, 10):\n                i2 = min([i + 10, idx1])\n                if idx0 == i:\n                    c_p01d = mm2inch(\n                        np.sum(nc.variables[ncvar][i:i2, jslice, islice], 0)\n                    )\n                else:\n                    c_p01d += mm2inch(\n                        np.sum(nc.variables[ncvar][i:i2, jslice, islice], 0)\n                    )\n\n    # we actually don't care about weights at this fine of scale\n    cells = np.sum(hasdata > 0)\n    departure = p01d - c_p01d\n    # Update departure and today to values unconsidered below when out of state\n    departure = np.where(hasdata > 0, departure, -9999)\n    today = np.where(hasdata > 0, today, 0)\n    ranges = [\n        [-99, -3],\n        [-3, -2],\n        [-2, -1],\n        [-1, 0],\n        [0, 1],\n        [1, 2],\n        [2, 3],\n        [3, 99],\n    ]\n    x = []\n    x2 = []\n    labels = []\n    for minv, maxv in ranges:\n        labels.append(f\"{minv:.0f} to {maxv:.0f}\")\n        # How many departure cells in this range\n        hits = np.logical_and(departure < maxv, departure > minv)\n        hits2 = np.logical_and(hits, today > threshold)\n        x.append(np.sum(np.where(hits, 1, 0)) / float(cells) * 100.0)\n        x2.append(np.sum(np.where(hits2, 1, 0)) / float(cells) * 100.0)\n\n    title = (\n        f\"{state_names[sector]} NOAA MRMS {dt:%-d %b %Y} \"\n        f\"{threshold:.2f} inch Precip Coverage\"\n    )\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n    ax.bar(\n        np.arange(8) - 0.2,\n        x,\n        align=\"center\",\n        width=0.4,\n        label=f\"Trailing {days} Day Departure\",\n    )\n    ax.bar(\n        np.arange(8) + 0.2,\n        x2,\n        align=\"center\",\n        width=0.4,\n        label=f\"{dt:%-d %b %Y} Coverage ({sum(x2):.1f}% Tot)\",\n    )\n    for i, (_x1, _x2) in enumerate(zip(x, x2, strict=False)):\n        ax.text(i - 0.2, _x1 + 1, f\"{_x1:.1f}\", ha=\"center\")\n        ax.text(i + 0.2, _x2 + 1, f\"{_x2:.1f}\", ha=\"center\")\n    ax.set_xticks(np.arange(8))\n    ax.set_xticklabels(labels)\n    ax.set_xlabel(f\"Trailing {days} Day Precip Departure [in]\")\n    ax.set_position([0.1, 0.2, 0.8, 0.7])\n    ax.legend(loc=(0.0, -0.2), ncol=2)\n    ax.set_ylabel(f\"Areal Coverage of {state_names[sector]} [%]\")\n    ax.grid(True)\n    ax.set_xlim(-0.5, 7.5)\n    ax.set_ylim(0, max([max(x2), max(x)]) + 5)\n    return fig\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p183.py",
    "content": "\"\"\"\nThis plot presents a time series of areal coverage\nof United States Drought Monitor for a given state of your choice. This\nplot uses a JSON data service provided by the\n<a href=\"https://droughtmonitor.unl.edu\">Drought Monitor</a> website.\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport matplotlib.dates as mdates\nimport pandas as pd\nimport requests\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom pyiem.reference import state_fips, state_names\nfrom pyiem.util import LOG\n\nSERVICE = (\n    \"https://droughtmonitor.unl.edu\"\n    \"/DmData/DataTables.aspx/ReturnTabularDMAreaPercent_\"\n)\nCOLORS = [\"#ffff00\", \"#fcd37f\", \"#ffaa00\", \"#e60000\", \"#730000\"]\nPDICT = {\"state\": \"Plot Individual State\", \"national\": \"Plot CONUS\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = datetime.today()\n    sts = today - timedelta(days=720)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            default=\"state\",\n            name=\"s\",\n            options=PDICT,\n            label=\"Plot for state or CONUS:\",\n        ),\n        dict(type=\"state\", name=\"state\", default=\"IA\", label=\"Select State:\"),\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=sts.strftime(\"%Y/%m/%d\"),\n            label=\"Start Date:\",\n            min=\"2000/01/01\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"edate\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"End Date:\",\n            min=\"2000/01/01\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    sdate = ctx[\"sdate\"]\n    edate = ctx[\"edate\"]\n    state = ctx[\"state\"].upper()\n\n    fips = \"\"\n    for key, entry in state_fips.items():\n        if entry == state:\n            fips = f\"{key:02.0f}\"\n    if ctx[\"s\"] == \"state\":\n        payload = {\"area\": f\"'{fips}'\", \"statstype\": \"'2'\", \"diff\": \"'0'\"}\n        suffix = \"state\"\n    else:\n        payload = {\"area\": \"'conus'\", \"statstype\": \"'2'\", \"diff\": \"'0'\"}\n        suffix = \"national\"\n    headers = {}\n    headers[\"Accept\"] = \"application/json, text/javascript, */*; q=0.01\"\n    headers[\"Content-Type\"] = \"application/json; charset=UTF-8\"\n    try:\n        resp = requests.get(\n            SERVICE + suffix, params=payload, headers=headers, timeout=30\n        )\n        resp.raise_for_status()\n        jdata = resp.json()\n    except Exception as exp:\n        LOG.info(\"droughtmonitor failed: %s\", exp)\n        raise NoDataFound(\"API request to droughtmonitor failed...\") from exp\n    if not jdata.get(\"d\", []):\n        raise NoDataFound(\"No data Found.\")\n    df = pd.DataFrame(jdata[\"d\"])\n    for c in [\"0\", \"1\", \"2\", \"3\", \"4\"]:\n        df[f\"D{c}\"] = pd.to_numeric(df[f\"D{c}\"])\n    df[\"Date\"] = pd.to_datetime(df[\"Date\"], format=\"%Y-%m-%d\")\n    df = df[\n        (df[\"Date\"] >= pd.Timestamp(sdate))\n        & (df[\"Date\"] <= pd.Timestamp(edate))\n    ]\n    if df.empty:\n        raise NoDataFound(\"No data Found.\")\n    df = df.sort_values(\"Date\", ascending=True)\n    df[\"x\"] = df[\"Date\"] + timedelta(hours=3.5 * 24)\n    df = df.set_index(\"Date\")\n    df.index.name = \"Date\"\n\n    df = df.reset_index()\n    tt = state_names[state] if ctx[\"s\"] == \"state\" else \"CONUS\"\n    title = (\n        f\"Areal coverage of Drought for {tt}\\n\"\n        f\"from US Drought Monitor {df['Date'].min():%-d %B %Y} - \"\n        f\"{df['Date'].max():%-d %B %Y}\"\n    )\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n\n    # HACK to get a datetime64 to datetime so matplotlib works\n    xs = df[\"x\"].to_list()\n    bottom = (df[\"D4\"] + df[\"D3\"] + df[\"D2\"] + df[\"D1\"]).values\n    ax.bar(\n        xs,\n        df[\"D0\"].values,\n        width=7,\n        fc=COLORS[0],\n        ec=\"None\",\n        bottom=bottom,\n        label=\"D0 Abnormal\",\n    )\n    bottom = (df[\"D4\"] + df[\"D3\"] + df[\"D2\"]).values\n    ax.bar(\n        xs,\n        df[\"D1\"].values,\n        bottom=bottom,\n        width=7,\n        fc=COLORS[1],\n        ec=\"None\",\n        label=\"D1 Moderate\",\n    )\n    bottom = (df[\"D4\"] + df[\"D3\"]).values\n    ax.bar(\n        xs,\n        df[\"D2\"].values,\n        width=7,\n        fc=COLORS[2],\n        ec=\"None\",\n        bottom=bottom,\n        label=\"D2 Severe\",\n    )\n    bottom = df[\"D4\"].values\n    ax.bar(\n        xs,\n        df[\"D3\"].values,\n        width=7,\n        fc=COLORS[3],\n        ec=\"None\",\n        bottom=bottom,\n        label=\"D3 Extreme\",\n    )\n    ax.bar(\n        xs,\n        df[\"D4\"].values,\n        width=7,\n        fc=COLORS[4],\n        ec=\"None\",\n        label=\"D4 Exceptional\",\n    )\n\n    ax.set_ylim(0, 100)\n    ax.set_yticks([0, 10, 30, 50, 70, 90, 100])\n    ax.set_ylabel(\"Percentage of Area [%]\")\n    ax.grid(True)\n    ax.set_xlim(df[\"Date\"].min(), df[\"Date\"].max() + timedelta(days=7))\n    ax.legend(bbox_to_anchor=(0, -0.13, 1, 0), loc=\"center\", ncol=5)\n    ax.set_position([0.1, 0.15, 0.8, 0.75])\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%b\\n%Y\"))\n\n    return fig, df[[\"Date\", \"None\", \"D0\", \"D1\", \"D2\", \"D3\", \"D4\"]]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p184.py",
    "content": "\"\"\"\nThis plot shows the number of days with a high\ntemperature at or above a given threshold.  You can optionally generate\nthis plot for the year to date period.  The present year is not used for\nthe computation of the average nor minimum value.\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"full\": \"Show Full Year Totals\",\n    \"ytd\": \"Limit to Year to Date Period\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"year\",\n            name=\"year\",\n            default=today.year,\n            label=\"Year to Compare:\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"full\",\n            label=\"Day Period Limit:\",\n            name=\"limit\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    year = ctx[\"year\"]\n    limit = ctx[\"limit\"]\n    limitsql = \"\"\n    limittitle = \"\"\n    today = date.today() - timedelta(days=1)\n    params = {\"station\": station}\n    if limit == \"ytd\":\n        limittitle = f\"(Jan 1 - {today:%b %-d})\"\n        params[\"doy\"] = today.timetuple().tm_yday\n        limitsql = \" and extract(doy from day) <= :doy \"\n\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(f\"{station} has no archive_begin\")\n    params[\"sts\"] = ab.strftime(\"%Y-%m-%d\")\n    if ab.strftime(\"%m%d\") != \"0101\":\n        # Truncate up to the next year\n        params[\"sts\"] = f\"{ab.year + 1}-01-01\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"SELECT year, day, high from alldata WHERE \"\n                \"station = :station and day >= :sts and \"\n                \"high is not null {limitsql} ORDER by day ASC\",\n                limitsql=limitsql,\n            ),\n            conn,\n            params=params,\n            index_col=\"day\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    res = []\n    maxval2 = int(df[\"high\"].max())\n    years = df[\"year\"].unique()\n    for level in range(maxval2 - 30, maxval2 + 2):\n        gdf = (\n            df[df[\"high\"] >= level]\n            .groupby(\"year\")\n            .count()\n            .reindex(years)\n            .fillna(0)\n        )\n        maxval = gdf.max()[\"high\"]\n        if maxval == 0:\n            continue\n        label = \",\".join(\n            [str(s) for s in list(gdf[gdf[\"high\"] == maxval].index.values)]\n        )\n        thisyear = 0\n        if year in gdf.index.values:\n            thisyear = gdf.at[year, \"high\"]\n        res.append(\n            dict(\n                avgval=gdf.iloc[:-1].mean()[\"high\"],\n                minval=gdf.iloc[:-1].min()[\"high\"],\n                level=level,\n                label=label,\n                max=maxval,\n                thisyear=thisyear,\n            )\n        )\n\n    df = pd.DataFrame(res)\n    df = df.set_index(\"level\")\n\n    title = (\n        f\"{ctx['_sname']} :: Max Days per Year {limittitle}\\n\"\n        \"at or above given high temperature threshold\"\n    )\n\n    (fig, ax) = figure_axes(apctx=ctx, title=title)\n    ax.barh(df.index.values, df[\"max\"].values, label=\"Max\", zorder=2)\n    ax.barh(df.index.values, df[\"thisyear\"].values, label=f\"{year}\", zorder=3)\n    ax.scatter(\n        df[\"minval\"].values,\n        df.index.values,\n        label=\"Min\",\n        marker=\"^\",\n        zorder=4,\n        color=\"black\",\n    )\n    ax.scatter(\n        df[\"avgval\"].values,\n        df.index.values,\n        label=\"Avg\",\n        marker=\"o\",\n        zorder=5,\n        color=\"yellow\",\n    )\n    for level, row in df.iterrows():\n        ax.text(\n            row[\"max\"] + 1,\n            level,\n            f\"{row['max']:.0f} - {row['label']}\",\n            va=\"center\",\n        )\n\n    ax.grid(True, color=\"#EEEEEE\", linewidth=1)\n    ax.legend(loc=1)\n    ax.set_xlim(0, df[\"max\"].max() * 1.2)\n    ax.set_ylim(maxval2 - 31, maxval2 + 2)\n    ax.set_ylabel(\"High Temperature °F\")\n    if year == date.today().year:\n        ax.set_xlabel(f\"Days, {year} data till {today}\")\n    else:\n        ax.set_xlabel(\"Days\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p185.py",
    "content": "\"\"\"\nThis application will make a map with the number\nof days it takes to accumulate a given amount of precipitation.  This is\nbased on progressing daily back in time for up to 90 days to accumulate\nthe specified amount.  This plot will take some time to generate, so please\nbe patient with it!\n\"\"\"\n\nimport os\nfrom datetime import date, datetime, timedelta\nfrom typing import cast\n\nimport geopandas as gpd\nimport numpy as np\nfrom affine import Affine\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.grid.nav import MRMS_IEMRE\nfrom pyiem.grid.zs import CachingZonalStats\nfrom pyiem.iemre import daily_offset, get_daily_mrms_ncname\nfrom pyiem.plot import get_cmap\nfrom pyiem.plot.geoplot import MapPlot\nfrom pyiem.util import convert_value, ncopen\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": False}\n    today = datetime.today() - timedelta(days=1)\n    desc[\"arguments\"] = [\n        dict(type=\"state\", name=\"sector\", default=\"IA\", label=\"Select State:\"),\n        dict(\n            type=\"date\",\n            name=\"date\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"Date:\",\n            min=\"2011/01/01\",\n        ),\n        dict(\n            type=\"float\",\n            name=\"threshold\",\n            default=2.0,\n            label=\"Date Precipitation Threshold (inch)\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"terrain\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef get_raster(ctx: dict):\n    \"\"\"Do the RASTER work.\"\"\"\n    dt: date = ctx[\"date\"]\n    sector = ctx[\"sector\"]\n    threshold = ctx[\"threshold\"]\n    threshold_mm = convert_value(threshold, \"inch\", \"millimeter\")\n\n    idx1 = daily_offset(dt)\n    ncfn = get_daily_mrms_ncname(dt.year)\n    if not os.path.isfile(ncfn):\n        raise NoDataFound(\"No data found.\")\n    ncvar = \"p01d\"\n\n    # Get the state weight\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = gpd.GeoDataFrame.from_postgis(\n            \"SELECT the_geom from states where state_abbr = %s\",\n            conn,\n            params=(sector,),\n            index_col=None,\n            geom_col=\"the_geom\",\n        )\n    czs = CachingZonalStats(MRMS_IEMRE.affine_image)\n    steps = 0\n    czs.gen_stats(\n        np.zeros((cast(\"int\", MRMS_IEMRE.ny), cast(\"int\", MRMS_IEMRE.nx))),\n        df[\"the_geom\"],\n    )\n    jslice = None\n    islice = None\n    affine = None\n    for nav in czs.gridnav:\n        # careful here as y is flipped in this context\n        jslice = slice(\n            MRMS_IEMRE.ny - (nav.y0 + nav.ysz),\n            MRMS_IEMRE.ny - nav.y0,\n        )\n        islice = slice(nav.x0, nav.x0 + nav.xsz)\n        affine = Affine(\n            MRMS_IEMRE.dx,\n            0.0,\n            MRMS_IEMRE.left_edge + nav.x0 * MRMS_IEMRE.dx,\n            0.0,\n            MRMS_IEMRE.dy,\n            MRMS_IEMRE.bottom_edge + jslice.start * MRMS_IEMRE.dy,\n        )\n\n    grid = np.zeros((jslice.stop - jslice.start, islice.stop - islice.start))\n    total = np.zeros((jslice.stop - jslice.start, islice.stop - islice.start))\n    with ncopen(ncfn) as nc:\n        for idx in range(idx1, max(-1, idx1 - 91), -1):\n            total += nc.variables[ncvar][idx, jslice, islice].filled(0)\n            grid = np.where(\n                np.logical_and(grid == 0, total > threshold_mm), steps, grid\n            )\n            steps += 1\n    # Do we need to do a previous year?\n    if steps < 90:\n        ncfn = get_daily_mrms_ncname(dt.year - 1)\n        if not os.path.isfile(ncfn):\n            raise NoDataFound(\"No data found.\")\n        with ncopen(ncfn) as nc:\n            idx1 = daily_offset(date(dt.year - 1, 12, 31))\n            while steps < 91:\n                total += nc.variables[ncvar][idx, jslice, islice]\n                grid = np.where(\n                    np.logical_and(grid == 0, total > threshold_mm),\n                    steps,\n                    grid,\n                )\n                idx1 -= 1\n                steps += 1\n\n    return grid, affine, MRMS_IEMRE.crs\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    grid, affine, crs = get_raster(ctx)\n\n    mp = MapPlot(\n        apctx=ctx,\n        sector=\"state\",\n        state=ctx[\"sector\"],\n        titlefontsize=14,\n        subtitlefontsize=12,\n        title=(\n            \"NOAA MRMS: Number of Recent Days \"\n            f'till Accumulating {ctx[\"threshold\"]}\" of Precip'\n        ),\n        subtitle=(\n            f\"valid {ctx['date']:%-d %b %Y}: based on per calendar day \"\n            \"estimated preciptation, MultiSensorPass2 and \"\n            \"RadarOnly products\"\n        ),\n        nocaption=True,\n    )\n    cmap = get_cmap(ctx[\"cmap\"])\n    cmap.set_over(\"k\")\n    cmap.set_under(\"white\")\n    mp.imshow(\n        grid,\n        affine,\n        crs,\n        clevs=np.arange(0, 91, 15),\n        cmap=cmap,\n        units=\"days\",\n        extend=\"max\",\n    )\n    mp.drawcounties()\n    mp.drawcities()\n\n    return mp.fig\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p186.py",
    "content": "\"\"\"\nThis plot shows the weekly change in drought\nmonitor intensity expressed in terms of category change over the area\nof the selected state.  For example, an arrow of length one pointing\nup would indicate a one category improvement in drought over the area\nof the state. This\nplot uses a JSON data service provided by the\n<a href=\"https://droughtmonitor.unl.edu\">Drought Monitor</a> website.\n\n<p>In the case of plotting contiguous US values, the magnitude of the change\nvalues is multiplied by five as drought changes at that scale are slower than\nat the state scale when normalized by area.\n\"\"\"\n\nimport calendar\nfrom datetime import date, timedelta\n\nimport numpy as np\nimport pandas as pd\nimport requests\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.reference import state_fips, state_names\nfrom pyiem.util import LOG\nfrom scipy.interpolate import interp1d\n\nSERVICE = (\n    \"https://droughtmonitor.unl.edu\"\n    \"/DmData/DataTables.aspx/ReturnTabularDMAreaPercent_state\"\n)\nCOLORS = [\"#ffff00\", \"#fcd37f\", \"#ffaa00\", \"#e60000\", \"#730000\"]\nPDICT = {\n    \"state\": \"Summarize by State\",\n    \"conus\": \"Summarize for Contiguous US\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    thisyear = date.today().year\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"select\",\n            \"options\": PDICT,\n            \"default\": \"state\",\n            \"label\": \"How to Summarize\",\n            \"name\": \"w\",\n        },\n        dict(type=\"state\", name=\"state\", default=\"IA\", label=\"Select State:\"),\n        dict(\n            type=\"year\",\n            name=\"syear\",\n            min=2000,\n            default=2000,\n            label=\"Start year for plot\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"eyear\",\n            max=thisyear,\n            default=thisyear,\n            label=\"End year (inclusive) for plot\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    state = ctx[\"state\"]\n    syear = ctx[\"syear\"]\n    eyear = ctx[\"eyear\"]\n\n    url = SERVICE\n    if ctx[\"w\"] == \"state\":\n        fips = \"\"\n        for key, _state in state_fips.items():\n            if _state == state:\n                fips = key\n        payload = {\"area\": fips, \"statstype\": \"'2'\", \"diff\": \"'0'\"}\n    else:\n        url = url.replace(\"_state\", \"_national\")\n        payload = {\"area\": \"'conus'\", \"statstype\": \"'2'\", \"diff\": \"'0'\"}\n    headers = {}\n    headers[\"Accept\"] = \"application/json, text/javascript, */*; q=0.01\"\n    headers[\"Content-Type\"] = \"application/json; charset=UTF-8\"\n    headers[\"user-agent\"] = \"requests\"\n    try:\n        resp = requests.get(url, params=payload, headers=headers, timeout=30)\n        resp.raise_for_status()\n        jdata = resp.json()\n    except Exception as exp:\n        LOG.info(exp)\n        raise NoDataFound(\"Drought Web Service failed.\") from exp\n    if not jdata.get(\"d\"):\n        raise NoDataFound(\"Data Not Found.\")\n    df = pd.DataFrame(jdata[\"d\"])\n    for c in [\"0\", \"1\", \"2\", \"3\", \"4\"]:\n        df[f\"D{c}\"] = pd.to_numeric(df[f\"D{c}\"])\n    df[\"Date\"] = pd.to_datetime(df[\"Date\"], format=\"%Y-%m-%d\")\n    df = df.sort_values(\"Date\", ascending=True)\n    df[\"x\"] = df[\"Date\"] + timedelta(hours=3.5 * 24)\n    # accounting\n    df[\"score\"] = (\n        df[\"D4\"] * 5 + df[\"D3\"] * 4 + df[\"D2\"] * 3 + df[\"D1\"] * 2 + df[\"D0\"]\n    )\n    df[\"delta\"] = df[\"score\"].diff()\n    if ctx[\"w\"] == \"conus\":\n        df[\"delta\"] = df[\"delta\"] * 5\n    df.iat[0, df.columns.get_loc(\"delta\")] = 0\n\n    fig = figure(apctx=ctx)\n    ax = fig.add_axes((0.1, 0.1, 0.87, 0.84))\n    for year, gdf in df.groupby(df.Date.dt.year):\n        if year < syear or year > eyear:\n            continue\n        xs = []\n        ys = []\n        for _, row in gdf.iterrows():\n            xs.append(int(row[\"Date\"].strftime(\"%j\")))\n            ys.append(year + row[\"delta\"] / 100.0)\n        if len(xs) < 4:\n            continue\n        fcube = interp1d(xs, ys, kind=\"cubic\")\n        xnew = np.arange(xs[0], xs[-1])\n        yval = np.ones(len(xnew)) * year\n        ynew = fcube(xnew)\n        ax.fill_between(\n            xnew,\n            yval,\n            ynew,\n            where=(ynew < yval),\n            facecolor=\"blue\",\n            interpolate=True,\n        )\n        ax.fill_between(\n            xnew,\n            yval,\n            ynew,\n            where=(ynew >= yval),\n            facecolor=\"red\",\n            interpolate=True,\n        )\n\n    ax.set_ylim(eyear + 1, syear - 1)\n    ax.set_xlim(0, 366)\n    ax.set_xlabel(\n        \"curve height of 1 year is 1 effective drought category \"\n        \"change over area of \"\n        f\"{state_names[state] if ctx['w'] == 'state' else '1/5 Contiguous US'}\"\n    )\n    ax.set_ylabel(f\"Year, thru {df.Date.max():%d %b %Y}\")\n    ax.set_title(\n        f\"{syear:.0f}-{eyear:.0f} US Drought Monitor Weekly Change for \"\n        f\"{state_names[state] if ctx['w'] == 'state' else 'Contiguous US'}\\n\"\n        \"curve height represents change in intensity + coverage\"\n    )\n\n    ax.grid(True)\n    ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n\n    ax.set_yticks(\n        np.arange(ax.get_ylim()[0] - 1, ax.get_ylim()[1], -1, dtype=\"i\")\n    )\n    fig.text(\n        0.4,\n        0.01,\n        \"Blue areas are improving conditions\",\n        color=\"b\",\n        ha=\"center\",\n    )\n    fig.text(\n        0.7, 0.01, \"Red areas are degrading conditions\", color=\"r\", ha=\"center\"\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p187.py",
    "content": "\"\"\"\nThis chart presents the rank a station's yearly\nsummary value has against an unweighted population of available\nobservations in the state.  The green line is a simple average of the\nplot.\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot.barchart import barchart_with_top10\n\nPDICT = {\n    \"precip\": \"Total Precipitation\",\n    \"high\": \"Average High Temperature\",\n    \"low\": \"Average Low Temperature\",\n    \"temp\": \"Average Temperature\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"data\": True, \"description\": __doc__}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"station\",\n            name=\"station\",\n            default=\"IA0000\",\n            label=\"Select Station:\",\n            network=\"IACLIMATE\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"precip\",\n            label=\"Variable to Plot:\",\n            options=PDICT,\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"var\"]\n    assert varname in PDICT\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            f\"\"\"\n        with data as (\n            select station, year, sum(precip) as precip,\n            avg(high) as high, avg(low) as low,\n            avg((high+low)/2.) as temp, count(*) from alldata_{station[:2]}\n            WHERE year >= 1893 GROUP by station, year\n        ), counts as (\n            select year, max(count) as maxcnt from data GROUP by year\n        ), quorum as (\n            select d.* from data d JOIN counts a on (d.year = a.year) WHERE\n            d.count = a.maxcnt\n        ), stdata as (\n            select year, precip, high, low, temp from data where station = %s\n        ), agg as (\n            select station, year,\n            avg({varname}) OVER (PARTITION by year) as avgval,\n            rank() OVER (PARTITION by year ORDER by {varname} ASC) /\n            count(*) OVER (PARTITION by year)::float * 100. as percentile\n            from data)\n        select a.station, a.year, a.percentile, s.{varname}, a.avgval\n        from agg a JOIN stdata s on (a.year = s.year)\n        where a.station = %s ORDER by a.year ASC\n        \"\"\",\n            conn,\n            params=(station, station),\n            index_col=\"year\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    fig = figure(\n        title=ctx[\"_sname\"],\n        subtitle=(\n            f\"Yearly {PDICT[varname]} Percentile for all \"\n            f\"{station[:2]} stations\"\n        ),\n        apctx=ctx,\n    )\n    overcolor = \"b\" if varname == \"precip\" else \"r\"\n    undercolor = \"r\" if varname == \"precip\" else \"b\"\n    df[\"color\"] = overcolor\n    df.loc[df[\"percentile\"] < 50, \"color\"] = undercolor\n    ax = barchart_with_top10(\n        fig,\n        df,\n        \"percentile\",\n        color=df[\"color\"].tolist(),\n    )\n    current_pos = ax.get_position()\n    ax.set_position([current_pos.x0, 0.5, current_pos.width, 0.4])\n    meanval = df[\"percentile\"].mean()\n    ax.axhline(meanval, color=\"green\", lw=2, zorder=5)\n    ax.text(df.index.max() + 1, meanval, f\"{meanval:.1f}\", color=\"green\")\n    ax.set_xlim(df.index.min() - 1, df.index.max() + 1)\n    ax.set_ylim(0, 100)\n    ax.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    ax.set_ylabel(\"Percentile (no spatial weighting)\")\n    ax.grid(True)\n\n    # second plot\n    ax = fig.add_axes([current_pos.x0, 0.1, current_pos.width, 0.35])\n    ax.bar(df.index.values, df[varname] - df[\"avgval\"])\n    meanval = (df[varname] - df[\"avgval\"]).mean()\n    ax.axhline(meanval, color=\"green\", lw=2, zorder=5)\n    ax.text(df.index.max() + 1, meanval, f\"{meanval:.2f}\", color=\"green\")\n    ax.set_xlim(df.index.min() - 1, df.index.max() + 1)\n    ax.set_ylabel(\"Bias to State Arithmetic Mean\")\n    ax.grid(True)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p188.py",
    "content": "\"\"\"\nThis plot presents the yearly minimum temperature\nafter the first spring temperature above a given value or the maximum\ntemperature after the first fall temperature below a given value.  The\nterms spring and fall are simply representing the first half and second\nhalf of the year respectively.  So for example using the default plot\noptions, this chart displays the maximum high temperature after the first\nfall season sub 32 low temperature and then the number of days that the\nhigh reached 60+ degrees until the end of each year.\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nPDICT = {\n    \"spring\": \"Min Temp after first Spring Temp above\",\n    \"fall\": \"Max Temp after first Fall Temp below\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"data\": True, \"description\": __doc__}\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"station\",\n            name=\"station\",\n            default=\"IATAME\",\n            label=\"Select Station:\",\n            network=\"IACLIMATE\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"fall\",\n            label=\"Which metric to compute\",\n            name=\"var\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"thres\",\n            default=32,\n            label=\"Temperature Threshold (°F) for initial date of exceedence\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"thres2\",\n            default=60,\n            label=\"Temperature Threshold (°F) to count days above/below\",\n        ),\n        dict(\n            type=\"year\",\n            default=today.year,\n            name=\"year\",\n            label=\"Year to Highlight in Chart\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"var\"]\n    thres = ctx[\"thres\"]\n    thres2 = ctx[\"thres2\"]\n    if varname == \"fall\":\n        sql = \"\"\"\n        WITH doy as (\n            SELECT year, min(day) from alldata WHERE station = %s\n            and low < %s and month > 6 GROUP by year),\n        agg as (\n            SELECT a.year, max(high) as peak_value,\n            sum(case when high >= %s then 1 else 0 end) as count_days\n            from alldata a, doy d\n            WHERE a.station = %s and a.year = d.year and a.day > d.min\n            GROUP by a.year)\n\n        SELECT d.year, d.min as date, extract(doy from d.min) as day_of_year,\n        a.peak_value, a.count_days\n        from doy d JOIN agg a on (d.year = a.year) ORDER by d.year\"\"\"\n        title = (\"Max high after first sub %.0f low, days over %.0f\") % (\n            thres,\n            thres2,\n        )\n        ctx[\"ax1_ylabel\"] = \"Max High Temperature °F\"\n        ctx[\"ax2_xlabel\"] = \"Date of First Sub %.0f Low\" % (thres,)\n    else:\n        sql = \"\"\"\n        WITH doy as (\n            SELECT year, min(day) from alldata WHERE station = %s\n            and high >= %s and month < 6 GROUP by year),\n        agg as (\n            SELECT a.year, min(low) as peak_value,\n            sum(case when low < %s then 1 else 0 end) as count_days\n            from alldata a, doy d\n            WHERE a.station = %s and a.year = d.year and a.day > d.min\n            and a.month < 6\n            GROUP by a.year)\n\n        SELECT d.year, d.min as date, extract(doy from d.min) as day_of_year,\n        a.peak_value, a.count_days\n        from doy d JOIN agg a on (d.year = a.year) ORDER by d.year\"\"\"\n        title = (\n            f\"Min low after first {thres:.0f}+ high, \"\n            f\"days below {thres2:.0f} till 1 Jun\"\n        )\n        ctx[\"ax1_ylabel\"] = \"Min Low Temperature °F\"\n        ctx[\"ax2_xlabel\"] = f\"Date of First {thres:.0f} High\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql,\n            conn,\n            params=(station, thres, thres2, station),\n            index_col=\"year\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df2 = None\n    if ctx[\"year\"] in df.index:\n        df2 = df.loc[ctx[\"year\"]]\n    title = (\n        f\"{ctx['_sname']} :: {PDICT[varname]}\\n\"\n        f\"{title} ({df.index.min():.0f}-{df.index.max():.0f})\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    (ax, ax2, ax3) = fig.subplots(3, 1)\n    ax.set_position([0.1, 0.61, 0.85, 0.22])\n    ax2.set_position([0.1, 0.33, 0.85, 0.22])\n    ax3.set_position([0.1, 0.08, 0.85, 0.22])\n\n    ax.bar(df.index.values, df[\"peak_value\"], zorder=1)\n    if df2 is not None:\n        ax.bar(ctx[\"year\"], df2[\"peak_value\"], color=\"red\", zorder=2)\n    ax.grid(True)\n    ax.set_xlim(df.index.min() - 1, df.index.max() + 1)\n    ax.set_ylim(df[\"peak_value\"].min() - 5, df[\"peak_value\"].max() + 5)\n    ax.set_ylabel(ctx[\"ax1_ylabel\"])\n\n    ax2.scatter(df[\"day_of_year\"].values, df[\"peak_value\"], zorder=1)\n    if df2 is not None:\n        ax2.scatter(\n            df2[\"day_of_year\"], df2[\"peak_value\"], color=\"red\", zorder=2\n        )\n    ax2.grid(True)\n    ax2.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax2.set_xticklabels(calendar.month_abbr[1:])\n    ax2.set_xlim(df[\"day_of_year\"].min() - 10, df[\"day_of_year\"].max() + 10)\n    ax2.set_ylabel(ctx[\"ax1_ylabel\"])\n    ax2.set_xlabel(ctx[\"ax2_xlabel\"])\n\n    ax3.bar(df.index.values, df[\"count_days\"], zorder=1)\n    if df2 is not None:\n        ax3.bar(ctx[\"year\"], df2[\"count_days\"], zorder=2, color=\"red\")\n    ax3.grid(True)\n    tt = \"above\" if varname == \"fall\" else \"below\"\n    tt2 = \"High\" if varname == \"fall\" else \"low\"\n    ax3.set_ylabel(f\"Days {tt} {thres2:.0f}F for {tt2}\")\n    ax3.set_xlim(df.index.min() - 1, df.index.max() + 1)\n    ax3.axhline(df[\"count_days\"].mean())\n    ax3.text(\n        df.index.max() + 1,\n        df[\"count_days\"].mean(),\n        \"Avg:\\n%.1f\" % (df[\"count_days\"].mean(),),\n    )\n    val = f\"{df2['count_days']:.0f}\" if df2 is not None else \"M\"\n    ax3.set_xlabel(\n        f\"{len(df[df['count_days'] == 0].index):.0f} years with 0 days, \"\n        f\"{ctx['year']} = {val}\"\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p189.py",
    "content": "\"\"\"\nCreate plots of yearly totals and optionally fit\na linear trendline.  Here is a brief description of some of the\navailable metrics.\n<ul>\n    <li><strong>Frost Free Days</strong>: Number of days each year between\n    the last spring sub 32F temperature and first fall sub 32F temperature.\n    </li>\n</ul>\n\n<p>If you plot the DJF period, the year shown is the year of the\nDecember within the three year period.\n\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom scipy.stats import linregress\n\nBOOLS = {\n    \"yes\": \"Yes, fit linear regression\",\n    \"no\": \"No, do not plot regression\",\n}\nMETA = {\n    \"annual_sum_precip\": {\n        \"title\": \"Annual Precipitation (rain + melted snow)\",\n        \"ylabel\": \"Precipitation [inches]\",\n        \"xlabel\": \"Year\",\n        \"func\": \"sum(precip)\",\n        \"month_bounds\": \"\",\n        \"valid_offset\": \"\",\n    },\n    \"annual_avg_temp\": {\n        \"title\": \"Annual Average Temperature\",\n        \"ylabel\": \"Temperature [F]\",\n        \"xlabel\": \"Year\",\n        \"func\": \"avg((high+low)/2.)\",\n        \"month_bounds\": \"\",\n        \"valid_offset\": \"\",\n    },\n    \"annual_avg_high\": {\n        \"title\": \"Annual Average High Temperature\",\n        \"ylabel\": \"Temperature [F]\",\n        \"xlabel\": \"Year\",\n        \"func\": \"avg(high)\",\n        \"month_bounds\": \"\",\n        \"valid_offset\": \"\",\n    },\n    \"annual_avg_low\": {\n        \"title\": \"Annual Average Low Temperature\",\n        \"ylabel\": \"Temperature [F]\",\n        \"xlabel\": \"Year\",\n        \"func\": \"avg(low)\",\n        \"month_bounds\": \"\",\n        \"valid_offset\": \"\",\n    },\n    \"winter_avg_temp\": {\n        \"title\": \"Winter [DJF] Average Temperature\",\n        \"ylabel\": \"Temperature [F]\",\n        \"xlabel\": \"Year\",\n        \"func\": \"avg((high+low)/2.)\",\n        \"month_bounds\": \"and month in (12,1,2)\",\n        \"valid_offset\": \"- '2 month'::interval \",\n    },\n    \"winter_avg_low\": {\n        \"title\": \"Winter [DJF] Average Low Temperature\",\n        \"ylabel\": \"Temperature [F]\",\n        \"xlabel\": \"Year\",\n        \"func\": \"avg(low)\",\n        \"month_bounds\": \"and month in (12,1,2)\",\n        \"valid_offset\": \"- '2 month'::interval \",\n    },\n    \"winter_avg_high\": {\n        \"title\": \"Winter [DJF] Average High Temperature\",\n        \"ylabel\": \"Temperature [F]\",\n        \"xlabel\": \"Year\",\n        \"func\": \"avg(high)\",\n        \"month_bounds\": \"and month in (12,1,2)\",\n        \"valid_offset\": \"- '2 month'::interval \",\n    },\n    \"summer_avg_temp\": {\n        \"title\": \"Summer [JJA] Average Temperature\",\n        \"ylabel\": \"Temperature [F]\",\n        \"xlabel\": \"Year\",\n        \"func\": \"avg((high+low)/2.)\",\n        \"month_bounds\": \"and month in (6,7,8)\",\n        \"valid_offset\": \" \",\n    },\n    \"summer_avg_high\": {\n        \"title\": \"Summer [JJA] Average High Temperature\",\n        \"ylabel\": \"Temperature [F]\",\n        \"xlabel\": \"Year\",\n        \"func\": \"avg(high)\",\n        \"month_bounds\": \"and month in (6,7,8)\",\n        \"valid_offset\": \" \",\n    },\n    \"summer_avg_low\": {\n        \"title\": \"Summer [JJA] Average Low Temperature\",\n        \"ylabel\": \"Temperature [°F]\",\n        \"xlabel\": \"Year\",\n        \"func\": \"avg(low)\",\n        \"month_bounds\": \"and month in (6,7,8)\",\n        \"valid_offset\": \" \",\n    },\n    \"summer_avg_era5land_soilm1m_avg\": {\n        \"title\": \"Summer [JJA] Average ERA5-Land 0-1m Soil Moisture\",\n        \"ylabel\": \"Soil Moisture [m3/m3]\",\n        \"xlabel\": \"Year\",\n        \"func\": \"avg(era5land_soilm1m_avg)\",\n        \"month_bounds\": \"and month in (6,7,8)\",\n        \"valid_offset\": \" \",\n    },\n    \"spring_avg_temp\": {\n        \"title\": \"Spring [MAM] Average Temperature\",\n        \"ylabel\": \"Temperature [°F]\",\n        \"xlabel\": \"Year\",\n        \"func\": \"avg((high+low)/2.)\",\n        \"month_bounds\": \"and month in (3,4,5)\",\n        \"valid_offset\": \" \",\n    },\n    \"fall_avg_temp\": {\n        \"title\": \"Fall [SON] Average Temperature\",\n        \"ylabel\": \"Temperature [°F]\",\n        \"xlabel\": \"Year\",\n        \"func\": \"avg((high+low)/2.)\",\n        \"month_bounds\": \"and month in (9,10,11)\",\n        \"valid_offset\": \" \",\n    },\n    \"frost_free\": {\n        \"title\": \"Frost Free Days\",\n        \"ylabel\": \"Days\",\n        \"xlabel\": \"Year\",\n        \"month_bounds\": \"\",\n        \"func\": \"\",\n        \"valid_offset\": \"\",\n    },\n    \"gdd50\": {\n        \"title\": \"Growing Degree Days (1 May - 1 Oct) (base=50)\",\n        \"ylabel\": \"GDD Units [°F]\",\n        \"xlabel\": \"Year\",\n        \"func\": \"sum(gddxx(50, 86, high, low))\",\n        \"month_bounds\": \"and month in (5,6,7,8,9)\",\n        \"valid_offset\": \"\",\n    },\n    \"hdd65\": {\n        \"title\": \"Heating Degree Days (1 Oct - 1 May) (base=65)\",\n        \"ylabel\": \"HDD Units [°F]\",\n        \"xlabel\": \"Year\",\n        \"func\": \"sum(hdd65(high,low))\",\n        \"month_bounds\": \"and month in (10,11,12,1,2,3,4)\",\n        \"valid_offset\": \" - '6 months'::interval \",\n    },\n}\n\n\ndef yearly_plot(ctx):\n    \"\"\"\n    Make a yearly plot of something\n    \"\"\"\n    if ctx[\"plot_type\"] == \"frost_free\":\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            df = pd.read_sql(\n                sql_helper(\"\"\"\n            select fall.year as yr, fall.s - spring.s as data from\n            (select year, max(extract(doy from day)) as s\n            from alldata where station = :station and\n            month < 7 and low <= 32 and year >= :fyear and\n            year <= :lyear GROUP by year) as spring,\n            (select year, min(extract(doy from day)) as s\n            from alldata where station = :station and\n            month > 7 and low <= 32 and year >= :fyear and\n            year <= :lyear GROUP by year) as fall\n            WHERE spring.year = fall.year ORDER by fall.year ASC\n            \"\"\"),\n                conn,\n                params={\n                    \"station\": ctx[\"station\"],\n                    \"fyear\": ctx[\"first_year\"],\n                    \"lyear\": ctx[\"last_year\"],\n                },\n            )\n    else:\n        off = META[ctx[\"plot_type\"]][\"valid_offset\"]\n        func = META[ctx[\"plot_type\"]][\"func\"]\n        bnds = META[ctx[\"plot_type\"]][\"month_bounds\"]\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            df = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n    SELECT extract(year from (day {off})) as yr, {func} as data\n    from alldata WHERE station = :station {bnds}\n    GROUP by yr ORDER by yr ASC\"\"\",\n                    off=off,\n                    func=func,\n                    bnds=bnds,\n                ),\n                conn,\n                params={\"station\": ctx[\"station\"]},\n            )\n    df = df[(df[\"yr\"] >= ctx[\"first_year\"]) & (df[\"yr\"] <= ctx[\"last_year\"])]\n    if df.empty:\n        raise NoDataFound(\"no data found, sorry\")\n\n    title = (\n        f\"{ctx['_sname']}\\n\"\n        f\"{META[ctx['plot_type']].get('title', 'TITLE')} \"\n        f\"({df['yr'].min():.0f} - {df['yr'].max():.0f})\\n\"\n    )\n    fig, ax = figure_axes(title=title, apctx=ctx)\n    ax.plot(df[\"yr\"].values, df[\"data\"].values, \"bo-\")\n    ax.set_xlabel(META[ctx[\"plot_type\"]].get(\"xlabel\", \"XLABEL\"))\n    ax.set_ylabel(META[ctx[\"plot_type\"]].get(\"ylabel\", \"YLABEL\"))\n    ax.set_xlim(ctx[\"first_year\"] - 1, ctx[\"last_year\"] + 1)\n    miny = df[\"data\"].min()\n    maxy = df[\"data\"].max()\n    ax.set_ylim(miny - ((maxy - miny) / 10.0), maxy + ((maxy - miny) / 10.0))\n    ax.grid(True)\n\n    if ctx[\"linregress\"] == \"yes\":\n        (slope, intercept, r_value, _p_value, _std_err) = linregress(\n            df[\"yr\"].values, df[\"data\"].values\n        )\n        ax.plot(\n            df[\"yr\"].values,\n            slope * df[\"yr\"].values + intercept,\n            color=\"#CC6633\",\n        )\n        ax.text(\n            ctx[\"first_year\"],\n            maxy,\n            f\"$R^2$={(r_value**2):.2f}\",\n            color=\"#CC6633\",\n            bbox=dict(facecolor=\"white\"),\n        )\n\n    return fig, df\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    pdict = {}\n    for varname, item in META.items():\n        pdict[varname] = item[\"title\"]\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"station\",\n            name=\"station\",\n            default=\"IATAME\",\n            label=\"Select Station:\",\n            network=\"IACLIMATE\",\n        ),\n        dict(\n            type=\"select\",\n            options=pdict,\n            default=\"frost_free\",\n            label=\"Which metric to compute\",\n            name=\"plot_type\",\n        ),\n        dict(\n            type=\"year\",\n            default=1951,\n            name=\"first_year\",\n            label=\"First Year to Plot\",\n        ),\n        dict(\n            type=\"year\",\n            default=(today.year - 1),\n            name=\"last_year\",\n            label=\"Last Year to Plot\",\n        ),\n        dict(\n            type=\"select\",\n            options=BOOLS,\n            name=\"linregress\",\n            default=\"no\",\n            label=\"Plot Regression?\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    fig, df = yearly_plot(ctx)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p190.py",
    "content": "\"\"\"\nThis chart presents the year that the present day climatology record resides.\n\"\"\"\n\nimport calendar\n\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure, get_cmap\n\nfrom iemweb.autoplot import ARG_STATION\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(type=\"cmap\", name=\"cmap\", default=\"jet\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef magic(fig, ax, df, colname, title, ctx):\n    \"\"\"You can do magic\"\"\"\n    df2 = df[df[colname] == 1]\n\n    ax.text(0, 1.02, title, transform=ax.transAxes)\n    ax.set_xlim(0, 367)\n    ax.grid(True)\n    ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax.set_xticklabels(calendar.month_abbr[1:], rotation=45)\n\n    bbox = ax.get_position()\n    sideax = fig.add_axes([bbox.x1 + 0.002, bbox.y0, 0.04, 0.35])\n    ylim = [df[\"year\"].min() - 1, df[\"year\"].max() + 1]\n    year0 = ylim[0] - (ylim[0] % 10)\n    year1 = ylim[1] + (10 - ylim[1] % 10)\n    cmap = get_cmap(ctx[\"cmap\"])\n    norm = mpcolors.BoundaryNorm(np.arange(year0, year1 + 1, 10), cmap.N)\n    ax.scatter(df2[\"doy\"], df2[\"year\"], color=cmap(norm(df2[\"year\"].values)))\n    ax.set_yticks(np.arange(year0, year1, 20))\n    if colname.find(\"_high_\") == -1:\n        ax.set_yticklabels([])\n    ax.set_ylim(year0, year1)\n    cnts, edges = np.histogram(\n        df2[\"year\"].values, np.arange(year0, year1 + 1, 10)\n    )\n    sideax.barh(\n        edges[:-1], cnts, height=10, align=\"edge\", color=cmap(norm(edges[:-1]))\n    )\n    sideax.set_yticks(np.arange(year0, year1, 20))\n    sideax.set_yticklabels([])\n    sideax.set_ylim(year0, year1)\n    sideax.grid(True)\n    sideax.set_xlabel(\"Decade\\nCount\")\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH data as (\n            SELECT sday, day, year,\n            rank() OVER (PARTITION by sday ORDER by high DESC NULLS LAST)\n                as max_high_rank,\n            rank() OVER (PARTITION by sday ORDER by high ASC NULLS LAST)\n                as min_high_rank,\n            rank() OVER (PARTITION by sday ORDER by low DESC NULLS LAST)\n                as max_low_rank,\n            rank() OVER (PARTITION by sday ORDER by low ASC NULLS LAST)\n                as min_low_rank,\n            rank() OVER (PARTITION by sday ORDER by precip DESC NULLS LAST)\n                as max_precip_rank\n            from alldata WHERE station = :station)\n        SELECT *,\n        extract(doy from\n        ('2000-'||substr(sday, 1, 2)||'-'||substr(sday, 3, 2))::date) as doy\n        from data WHERE max_high_rank = 1 or min_high_rank = 1 or\n        max_low_rank = 1 or min_low_rank = 1 or max_precip_rank = 1\n        ORDER by day ASC\n        \"\"\"),\n            conn,\n            params={\"station\": station},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    title = f\"{ctx['_sname']} Year of Daily Records, ties included\"\n    fig = figure(apctx=ctx, title=title)\n    axwidth = 0.265\n    x0 = 0.04\n    ax = fig.add_axes((x0, 0.54, axwidth, 0.35))\n    magic(fig, ax, df, \"max_high_rank\", \"Maximum High (warm)\", ctx)\n    ax = fig.add_axes((x0, 0.09, axwidth, 0.35))\n    magic(fig, ax, df, \"min_high_rank\", \"Minimum High (cold)\", ctx)\n    ax = fig.add_axes((x0 + 0.32, 0.54, axwidth, 0.35))\n    magic(fig, ax, df, \"max_low_rank\", \"Maximum Low (warm)\", ctx)\n    ax = fig.add_axes((x0 + 0.32, 0.09, axwidth, 0.35))\n    magic(fig, ax, df, \"min_low_rank\", \"Minimum Low (cold)\", ctx)\n    ax = fig.add_axes((x0 + 0.64, 0.09, axwidth, 0.35))\n    magic(fig, ax, df, \"max_precip_rank\", \"Maximum Precipitation\", ctx)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p191.py",
    "content": "\"\"\"\nThis application presents a calendar of daily\ncounts of the number of watch, warning, advisories issued by day.  This\naccounting is based on the initial issuance date of a given VTEC phenomena\nand significance by event identifier.  So a single Winter Storm Watch\nfor 40 zones, would only count as 1 event for this chart. The concept of\na calendar date needs some explanation.  The calendar date is either\nUS Central Time or the time zone of the local NWS Office or a 12 UTC to\n12 UTC time period.  For the 12 UTC case, the date represents the start\nof that 24 hour period.\n\n<p>You can also generate this plot considering \"ALL\" NWS Offices, when\ndoing so the time zone used to compute the calendar dates is US Central.\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport pandas as pd\nfrom pyiem.database import (\n    get_sqlalchemy_conn,\n    sql_helper,\n    with_sqlalchemy_conn,\n)\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws import vtec\nfrom pyiem.plot import calendar_plot\nfrom pyiem.reference import state_names\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.autoplot import ARG_FEMA, fema_region2states\n\nPDICT = {\"yes\": \"Colorize Cells in Chart\", \"no\": \"Just plot values please\"}\nPDICT2 = {\n    \"wfo\": \"Summarize by Selected WFO\",\n    \"state\": \"Summarize by Selected State\",\n    \"ugc\": \"Summaryize by NWS County/Forecast Zone\",\n    \"fema\": \"Summarize by FEMA Region\",\n}\nPDICT3 = {\n    \"local\": \"Local Time Zone for WFO\",\n    \"central\": \"US Central Time Zone\",\n    \"12z\": \"12 UTC to 12 UTC Time Period\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    jan1 = today.replace(month=1, day=1)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=jan1.strftime(\"%Y/%m/%d\"),\n            label=\"Start Date (inclusive):\",\n            min=\"1986/01/01\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"edate\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"End Date (inclusive):\",\n            min=\"1986/01/01\",\n        ),\n        {\n            \"type\": \"select\",\n            \"name\": \"daytz\",\n            \"default\": \"local\",\n            \"label\": \"Calendar Date Time Zone / Period:\",\n            \"options\": PDICT3,\n        },\n        dict(\n            type=\"select\",\n            name=\"w\",\n            options=PDICT2,\n            default=\"wfo\",\n            label=\"How to summarize data:\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"wfo\",\n            network=\"WFO\",\n            all=True,\n            default=\"DMX\",\n            label=\"Select WFO (when appropriate):\",\n        ),\n        dict(\n            type=\"state\",\n            name=\"state\",\n            default=\"IA\",\n            label=\"Select State (when appropriate):\",\n        ),\n        ARG_FEMA,\n        dict(\n            type=\"ugc\",\n            name=\"ugc\",\n            default=\"IAC169\",\n            label=\"Select UGC Zone/County:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"heatmap\",\n            options=PDICT,\n            default=\"yes\",\n            label=\"Colorize calendar cells based on values?\",\n        ),\n        dict(\n            type=\"vtec_ps\",\n            name=\"v1\",\n            default=\"SV.W\",\n            label=\"VTEC Phenomena and Significance 1\",\n        ),\n        dict(\n            type=\"vtec_ps\",\n            name=\"v2\",\n            default=\"SV.W\",\n            optional=True,\n            label=\"VTEC Phenomena and Significance 2\",\n        ),\n        dict(\n            type=\"vtec_ps\",\n            name=\"v3\",\n            default=\"SV.W\",\n            optional=True,\n            label=\"VTEC Phenomena and Significance 3\",\n        ),\n        dict(\n            type=\"vtec_ps\",\n            name=\"v4\",\n            default=\"SV.W\",\n            optional=True,\n            label=\"VTEC Phenomena and Significance 4\",\n        ),\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"postgis\")\ndef get_ugc_name(ugc, conn: Connection | None = None) -> list[str, str]:\n    \"\"\"Return the WFO and county name.\"\"\"\n    res = conn.execute(\n        sql_helper(\n            \"SELECT name, wfo from ugcs where ugc = :ugc \"\n            \"ORDER by end_ts nulls first\"\n        ),\n        {\"ugc\": ugc},\n    )\n    return (\"\", \"\") if res.rowcount == 0 else list(res.fetchone())\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\n        \"name\": \"All Offices\",\n        \"tzname\": \"America/Chicago\",\n    }\n    sts = ctx[\"sdate\"]\n    ets = ctx[\"edate\"]\n    if (ets - sts).days > 366:\n        raise NoDataFound(\"Chart duration needs to be less than 1 year.\")\n    wfo = ctx[\"wfo\"]\n    p1 = ctx[\"phenomenav1\"]\n    p2 = ctx[\"phenomenav2\"]\n    p3 = ctx[\"phenomenav3\"]\n    p4 = ctx[\"phenomenav4\"]\n    phenomena = [p[:2] for p in [p1, p2, p3, p4] if p is not None]\n    s1 = ctx[\"significancev1\"]\n    s2 = ctx[\"significancev2\"]\n    s3 = ctx[\"significancev3\"]\n    s4 = ctx[\"significancev4\"]\n    significance = [s[0] for s in [s1, s2, s3, s4] if s is not None]\n\n    pstr = []\n    title = []\n    params = {\n        \"tzname\": ctx[\"_nt\"].sts[wfo][\"tzname\"],\n        \"offset\": \"\",\n    }\n    if ctx[\"daytz\"] == \"central\":\n        params[\"tzname\"] = \"America/Chicago\"\n    elif ctx[\"daytz\"] == \"12z\":\n        params[\"tzname\"] = \"UTC\"\n        params[\"offset\"] = \" - interval '12 hours' \"\n        ets += timedelta(hours=12)\n    params[\"sts\"] = sts - timedelta(days=2)\n    params[\"ets\"] = ets + timedelta(days=2)\n    for i, (p, s) in enumerate(zip(phenomena, significance, strict=False)):\n        pstr.append(f\"(phenomena = :ph{i} and significance = :sig{i})\")\n        params[f\"ph{i}\"] = p\n        params[f\"sig{i}\"] = s\n        if i == 2:\n            title[-1] += \"\\n\"\n        title.append(f\"{vtec.get_ps_string(p, s)} {p}.{s}\")\n    title = \", \".join(title)\n    pstr = \" or \".join(pstr)\n    pstr = f\"({pstr})\"\n\n    if ctx[\"w\"] == \"wfo\":\n        ctx[\"_nt\"].sts[\"_ALL\"] = {\n            \"name\": \"All Offices\",\n            \"tzname\": \"America/Chicago\",\n        }\n        if wfo not in ctx[\"_nt\"].sts:\n            raise NoDataFound(\"No Data Found.\")\n        wfo_limiter = \" and wfo = :wfo \"\n        params[\"wfo\"] = wfo if len(wfo) == 3 else wfo[1:]\n        if wfo == \"_ALL\":\n            wfo_limiter = \"\"\n        title2 = f\"NWS {ctx['_sname']}\"\n        if wfo == \"_ALL\":\n            title2 = \"All NWS Offices\"\n    elif ctx[\"w\"] == \"ugc\":\n        wfo_limiter = \" and ugc = :ugc \"\n        params[\"ugc\"] = ctx[\"ugc\"]\n        name, wfo = get_ugc_name(ctx[\"ugc\"])\n        title2 = f\"[{ctx['ugc']}] {name}\"\n    elif ctx[\"w\"] == \"fema\":\n        wfo_limiter = \" and substr(ugc, 1, 2) = ANY(:states) \"\n        params[\"states\"] = fema_region2states(ctx[\"fema\"])\n        title2 = f\"FEMA Region {ctx['fema']}\"\n    else:\n        wfo_limiter = \" and substr(ugc, 1, 2) = :state \"\n        params[\"state\"] = ctx[\"state\"]\n        title2 = state_names[ctx[\"state\"]]\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    with events as (\n    select wfo, min(issue at time zone :tzname) as localissue, vtec_year,\n    phenomena, significance, eventid from warnings\n    where {pstr} {wfo_limiter} and\n    issue >= :sts and issue < :ets\n    GROUP by wfo, vtec_year, phenomena, significance, eventid\n    )\n\n    SELECT date(localissue{offset}), count(*) from events\n    GROUP by date\n        \"\"\",\n                pstr=pstr,\n                wfo_limiter=wfo_limiter,\n                offset=params[\"offset\"],\n            ),\n            conn,\n            params=params,\n            index_col=\"date\",\n        )\n\n    data = {}\n    now = sts\n    while now <= ets:\n        data[now] = {\"val\": 0}\n        now += timedelta(days=1)\n    for dt, row in df.iterrows():\n        data[dt] = {\"val\": row[\"count\"]}\n    aa = \"VTEC Events\"\n    if len(significance) == 1:\n        aa = f\"{vtec.get_ps_string(phenomena[0], significance[0])} Count\"\n    dd = params[\"tzname\"]\n    if ctx[\"daytz\"] == \"12z\":\n        dd = \"12 UTC to 12 UTC\"\n    fig = calendar_plot(\n        sts,\n        ets,\n        data,\n        apctx=ctx,\n        heatmap=(ctx[\"heatmap\"] == \"yes\"),\n        title=f\"{aa} for {title2} by {dd} Date\",\n        subtitle=f\"Valid {sts:%d %b %Y} - {ets:%d %b %Y} for {title}\",\n    )\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p192.py",
    "content": "\"\"\"Generates analysis maps of ASOS station data.\"\"\"\n\nfrom datetime import timedelta, timezone\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.colors import ListedColormap, to_hex\nfrom metpy.calc import altimeter_to_station_pressure, wet_bulb_temperature\nfrom metpy.units import units\nfrom pyiem import reference\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot, get_cmap\nfrom pyiem.util import utc\n\nPDICT = {\n    \"cwa\": \"Plot by NWS Forecast Office\",\n    \"state\": \"Plot by State\",\n    \"conus\": \"Plot for Contiguous US\",\n}\nPDICT2 = {\n    \"vsby\": \"Visibility\",\n    \"feel\": \"Feels Like Temperature\",\n    \"tmpf\": \"Air Temperature\",\n    \"dwpf\": \"Dew Point Temperature\",\n    \"sknt\": \"Wind Speed\",\n    \"relh\": \"Relative Humidity\",\n    \"wetbulb\": \"Wet Bulb Temperature (You pick colors)\",\n    \"wetbulb_awips\": \"Wet Bulb Temperature (AWIPS Color Scale)\",\n}\nUNITS = {\n    \"vsby\": \"miles\",\n    \"feel\": \"°F\",\n    \"tmpf\": \"°F\",\n    \"dwpf\": \"°F\",\n    \"sknt\": \"kts\",\n    \"relh\": \"%\",\n    \"wetbulb\": \"°F\",\n    \"wetbulb_awips\": \"°F\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 600, \"data\": True}\n    utcnow = utc()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"t\",\n            default=\"state\",\n            options=PDICT,\n            label=\"Select plot extent type:\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"wfo\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO: (ignored if plotting state)\",\n        ),\n        dict(\n            type=\"state\",\n            name=\"state\",\n            default=\"IA\",\n            label=\"Select State: (ignored if plotting wfo)\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"v\",\n            default=\"vsby\",\n            options=PDICT2,\n            label=\"Select statistic to plot:\",\n        ),\n        dict(\n            type=\"float\",\n            name=\"above\",\n            optional=True,\n            default=9999,\n            label=\"Remove any plotted values above threshold:\",\n        ),\n        dict(\n            type=\"float\",\n            name=\"below\",\n            optional=True,\n            default=-9999,\n            label=\"Remove any plotted values below threshold:\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"valid\",\n            default=utcnow.strftime(\"%Y/%m/%d %H00\"),\n            label=\"Valid Analysis Time (UTC)\",\n            optional=True,\n            min=\"1986/01/01 0000\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"gray\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef get_df(ctx, bnds, buf=2.25):\n    \"\"\"Figure out what data we need to fetch here\"\"\"\n    if ctx.get(\"valid\"):\n        valid = ctx[\"valid\"].replace(tzinfo=timezone.utc)\n        with get_sqlalchemy_conn(\"asos\") as conn:\n            df = pd.read_sql(\n                sql_helper(\"\"\"\n            WITH mystation as (\n                select id, st_x(geom) as lon, st_y(geom) as lat,\n                state, wfo, elevation from stations\n                where network ~* 'ASOS' and\n                ST_contains(\n                    ST_MakeEnvelope(:west, :south, :east, :north, 4326),\n                    geom)\n            )\n            SELECT station, vsby, tmpf, dwpf, sknt, state, wfo, lat, lon, relh,\n            feel, elevation, alti,\n            abs(extract(epoch from (:valid - valid))) as tdiff from\n            alldata a JOIN mystation m on (a.station = m.id)\n            WHERE a.valid between :sts and :ets ORDER by tdiff ASC\n            \"\"\"),\n                conn,\n                params={\n                    \"west\": bnds[0] - buf,\n                    \"south\": bnds[1] - buf,\n                    \"east\": bnds[2] + buf,\n                    \"north\": bnds[3] + buf,\n                    \"valid\": valid,\n                    \"sts\": valid - timedelta(minutes=30),\n                    \"ets\": valid + timedelta(minutes=30),\n                },\n            )\n        df = df.groupby(\"station\").first()\n    else:\n        valid = utc()\n        with get_sqlalchemy_conn(\"iem\") as conn:\n            df = pd.read_sql(\n                sql_helper(\"\"\"\n                SELECT state, wfo, tmpf, dwpf, sknt, relh, feel,\n        id, network, vsby, ST_x(geom) as lon, ST_y(geom) as lat,\n        elevation, alti\n        FROM\n        current c JOIN stations s ON (s.iemid = c.iemid)\n        WHERE s.network ~* 'ASOS' and s.country = 'US' and\n        valid + '80 minutes'::interval > now() and\n        vsby >= 0 and vsby <= 10 and\n        ST_contains(\n            ST_MakeEnvelope(:west, :south, :east, :north, 4326), geom)\n            \"\"\"),\n                conn,\n                params={\n                    \"west\": bnds[0] - buf,\n                    \"south\": bnds[1] - buf,\n                    \"east\": bnds[2] + buf,\n                    \"north\": bnds[3] + buf,\n                },\n            )\n    if df.empty:\n        raise NoDataFound(\"Database query found no results.\")\n    if ctx[\"v\"].startswith(\"wetbulb\"):\n        # somewhat expensive, so we only do when necessary\n        df[ctx[\"v\"]] = (\n            wet_bulb_temperature(\n                altimeter_to_station_pressure(\n                    df[\"alti\"].values * units.inHg,\n                    df[\"elevation\"].values * units.meter,\n                ),\n                df[\"tmpf\"].values * units.degF,\n                df[\"dwpf\"].values * units.degF,\n            )\n            .to(units.degF)\n            .magnitude\n        )\n    return df.dropna(subset=[ctx[\"v\"]]), valid\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    varname = ctx[\"v\"]\n\n    if ctx[\"t\"] == \"state\":\n        bnds = reference.state_bounds[ctx[\"state\"]]\n        title = reference.state_names[ctx[\"state\"]]\n    elif ctx[\"t\"] == \"conus\":\n        bnds = reference.SECTORS[\"conus\"]\n        title = \"Contiguous United States\"\n    else:\n        bnds = reference.wfo_bounds[ctx[\"wfo\"]]\n        title = f\"NWS CWA {ctx['_sname']}\"\n    df, valid = get_df(ctx, bnds)\n    mp = MapPlot(\n        apctx=ctx,\n        sector=ctx[\"t\"],\n        state=ctx[\"state\"],\n        cwa=(ctx[\"wfo\"] if len(ctx[\"wfo\"]) == 3 else ctx[\"wfo\"][1:]),\n        axisbg=\"white\",\n        title=f\"{PDICT2[ctx['v']].split('(')[0]} for {title}\",\n        subtitle=f\"Map valid: {valid:%d %b %Y %H:%M} UTC\",\n        nocaption=True,\n        titlefontsize=16,\n    )\n    ramp = None\n    if varname == \"vsby\":\n        ramp = np.array([0.01, 0.1, 0.25, 0.5, 1, 2, 3, 5, 8, 9.9])\n    # Data QC, cough\n    if ctx.get(\"above\"):\n        df = df[df[varname] < ctx[\"above\"]]\n    if ctx.get(\"below\"):\n        df = df[df[varname] > ctx[\"below\"]]\n    if df.empty:\n        raise NoDataFound(\"No data found after applying thresholds\")\n    # with QC done, we compute ramps\n    if varname != \"vsby\":\n        ramp = np.linspace(\n            df[varname].min() - 5, df[varname].max() + 5, 10, dtype=\"i\"\n        )\n    cmap = get_cmap(ctx[\"cmap\"])\n    if varname == \"wetbulb_awips\":\n        # approximately what AWIPS is using\n        cmap_obj = get_cmap(\"jet\")\n        ramp = np.linspace(22, 56, 34 * 4 + 1)\n        pinks = [\"#ff99f5\", \"#ff7fff\", \"#f66bff\"]\n        pink_start = 33.2\n        pink_end = 35.2\n        n_pinks = len(pinks)\n        # Convert the colormap to a list of hex colors\n        color_list = [\n            to_hex(cmap_obj(i / (len(ramp) - 1))) for i in range(len(ramp))\n        ]\n        # Find indices in ramp that cover the pink range\n        idx_start = np.searchsorted(ramp, pink_start, side=\"left\")\n        idx_end = np.searchsorted(ramp, pink_end, side=\"right\")\n        n_indices = idx_end - idx_start\n        if n_indices > 0:\n            # Spread each pink over about a third of the pink range\n            seg_len = n_indices // n_pinks\n            for i in range(n_pinks):\n                seg_start = idx_start + i * seg_len\n                # Last segment takes the remainder\n                seg_end = (\n                    idx_start + (i + 1) * seg_len\n                    if i < n_pinks - 1\n                    else idx_end\n                )\n                for idx in range(seg_start, seg_end):\n                    color_list[idx] = pinks[i]\n        cmap = ListedColormap(color_list)\n        mp.contourf(\n            df[\"lon\"].values,\n            df[\"lat\"].values,\n            df[varname].values,\n            ramp,\n            units=UNITS[varname],\n            cmap=cmap,\n            clevstride=10,\n            iline=False,\n        )\n    else:\n        mp.contourf(\n            df[\"lon\"].values,\n            df[\"lat\"].values,\n            df[varname].values,\n            ramp,\n            units=UNITS[varname],\n            cmap=cmap,\n        )\n    if ctx[\"t\"] == \"state\":\n        df2 = df[df[\"state\"] == ctx[\"state\"]]\n    else:\n        df2 = df[df[\"wfo\"] == ctx[\"wfo\"]]\n\n    mp.plot_values(\n        df2[\"lon\"].values,\n        df2[\"lat\"].values,\n        df2[varname].values,\n        \"%.1f\",\n        labelbuffer=10,\n    )\n    if ctx[\"t\"] != \"conus\":\n        mp.drawcounties()\n    if ctx[\"t\"] == \"cwa\":\n        mp.draw_cwas()\n\n    return mp.fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p193.py",
    "content": "\"\"\"\nGenerates a map of WPC Quantitative Precipitation\nForecast (QPF) and most recent US Drought Monitor to the date choosen to\nplot the WPC forecast\n\"\"\"\n\nfrom datetime import timedelta\n\nimport numpy as np\nimport pygrib\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot, get_cmap, pretty_bins\nfrom pyiem.util import archive_fetch, mm2inch, utc\n\nPDICT = {\"120\": \"Five Day\", \"168\": \"Seven Day\"}\nPDICT2 = {\"0\": \"0z (7 PM CDT)\", \"12\": \"12z (7 AM CDT)\"}\nPDICT3 = {\n    \"both\": \"Plot both USDM + WPC Forecast\",\n    \"wpc\": \"Plot just WPC Forecast\",\n}\nPDICT4 = {\n    \"auto\": \"Auto-scale\",\n    \"10\": \"10 inch max\",\n    \"7\": \"7 inch max\",\n    \"3.5\": \"3.5 inch max\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"data\": False, \"cache\": 600, \"description\": __doc__}\n    utcnow = utc()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"csector\",\n            name=\"csector\",\n            default=\"IA\",\n            label=\"Select state/sector to plot\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"date\",\n            default=utcnow.strftime(\"%Y/%m/%d\"),\n            label=\"Select WPC Issuance Date:\",\n            min=\"2018/05/11\",\n            max=utcnow.strftime(\"%Y/%m/%d\"),\n        ),\n        dict(\n            type=\"select\",\n            name=\"z\",\n            default=\"0\",\n            options=PDICT2,\n            label=\"Select WPC Issuance Time\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"f\",\n            default=\"120\",\n            options=PDICT,\n            label=\"Select WPC Forecast Period:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"both\",\n            options=PDICT3,\n            label=\"Plotting Options:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"scale\",\n            default=\"auto\",\n            options=PDICT4,\n            label=\"WPC Plotting Max Value for Color Ramp:\",\n        ),\n        dict(\n            type=\"cmap\", name=\"cmap\", default=\"gist_ncar\", label=\"Color Ramp:\"\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    dt = ctx[\"date\"]\n    z = ctx[\"z\"]\n    period = ctx[\"f\"]\n    scale = ctx[\"scale\"]\n    valid = utc(dt.year, dt.month, dt.day, int(z))\n    with archive_fetch(\n        valid.strftime(f\"%Y/%m/%d/model/wpc/p{period}m_%Y%m%d%Hf{period}.grb\")\n    ) as gribfn:\n        if gribfn is None:\n            raise NoDataFound(f\"gribfn {gribfn} missing\")\n        with pygrib.open(gribfn) as grbs:\n            grb = grbs[1]\n            lats, lons = grb.latlons()\n            precip = mm2inch(grb.values)\n\n    title = (\n        f\"Weather Prediction Center {PDICT[period]} \"\n        \"Quantitative Precipitation Forecast\"\n    )\n    _t = \"US Drought Monitor Overlaid, \" if ctx[\"opt\"] == \"both\" else \"\"\n    subtitle = (\n        f\"{_t}WPC Forecast {valid:%d %b %Y %H} UTC to \"\n        f\"{(valid + timedelta(hours=int(period))):%d %b %Y %H} UTC\"\n    )\n    mp = MapPlot(\n        apctx=ctx,\n        title=title,\n        subtitle=subtitle,\n        continentalcolor=\"white\",\n        titlefontsize=16,\n        nocaption=True,\n    )\n    cmap = get_cmap(ctx[\"cmap\"])\n    cmap.set_under(\"#EEEEEE\")\n    cmap.set_over(\"black\")\n    if scale == \"auto\":\n        levs = pretty_bins(0, np.max(precip))\n        levs[0] = 0.01\n    elif scale == \"10\":\n        levs = np.arange(0, 10.1, 1.0)\n        levs[0] = 0.01\n    elif scale == \"7\":\n        levs = np.arange(0, 7.1, 0.5)\n        levs[0] = 0.01\n    elif scale == \"3.5\":\n        levs = np.arange(0, 3.6, 0.25)\n        levs[0] = 0.01\n    mp.pcolormesh(\n        lons,\n        lats,\n        precip,\n        levs,\n        cmap=cmap,\n        units=\"inch\",\n        clip_on=(ctx[\"csector\"] == \"iailin\"),\n    )\n    if ctx[\"opt\"] == \"both\":\n        mp.draw_usdm(valid=valid, filled=False, hatched=True)\n    if ctx[\"csector\"] == \"iailin\":\n        mp.drawcounties()\n\n    return mp.fig\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p194.py",
    "content": "\"\"\"\nThis application generates a heatmap of the\nfrequency of a given drought classification.  The classification is the\nminimal threshold, so if a location is in D3 classification drought, it\nwould count as D0, D1, D2, and D3 for this analysis.  The dates you\nspecify are rectified to the previous Tuesday on which the USDM analysis\nis valid for.\n\n<p><strong>Caution:</strong>  This is an unofficial depiction of time\nduration of Drought Monitor classfication and due to complexities with\nhow the grid analysis is done, the exact pixel location is nebulous.\nHaving said that, it should be close!\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport geopandas as gpd\nimport numpy as np\nimport pandas as pd\nfrom affine import Affine\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.grid.zs import CachingZonalStats\nfrom pyiem.plot import MapPlot\nfrom pyiem.plot.colormaps import stretch_cmap\nfrom pyiem.reference import LATLON\n\nPDICT = {\n    \"0\": \"D0: Abnormally Dry\",\n    \"1\": \"D1: Moderate Drought\",\n    \"2\": \"D2: Severe Drought\",\n    \"3\": \"D3: Extreme Drought\",\n    \"4\": \"D4: Exceptional Drought\",\n}\nPDICT2 = {\"weeks\": \"Number of Weeks\", \"percent\": \"Percentage of Weeks\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 600}\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"csector\",\n            name=\"csector\",\n            default=\"IA\",\n            label=\"Select state/sector to plot\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=f\"{today.year}/01/01\",\n            label=\"Start Date:\",\n            min=\"2000/01/04\",\n            max=today.strftime(\"%Y/%m/%d\"),\n        ),\n        dict(\n            type=\"date\",\n            name=\"edate\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"End Date:\",\n            min=\"2000/01/04\",\n            max=today.strftime(\"%Y/%m/%d\"),\n        ),\n        dict(\n            type=\"select\",\n            name=\"d\",\n            default=\"0\",\n            options=PDICT,\n            label=\"Select Drought Classification (at and above counted):\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"w\",\n            default=\"percent\",\n            options=PDICT2,\n            label=\"How to express time for plot:\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"plasma\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef make_tuesday(dt: date):\n    \"\"\"Make sure we back up to a tuesday\"\"\"\n    offset = (dt.weekday() - 1) % 7\n    tuesday = dt - timedelta(days=offset)\n    # Ensure that the database has this date\n    with get_dbconn(\"postgis\") as conn:\n        cursor = conn.cursor()\n        cursor.execute(\"SELECT max(valid) from usdm\")\n        maxdate = cursor.fetchone()[0]\n        if maxdate is not None:\n            tuesday = min([tuesday, maxdate])\n    return tuesday\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    csector = ctx[\"csector\"]\n    sdate = make_tuesday(ctx[\"sdate\"])\n    edate = make_tuesday(ctx[\"edate\"])\n    dlevel = ctx[\"d\"]\n\n    griddelta = 0.1\n    mp = MapPlot(\n        apctx=ctx,\n        title=(\n            f'{PDICT2[ctx[\"w\"]]} at or above \"{PDICT[dlevel]}\" '\n            f\"{sdate:%b %-d, %Y} - {edate:%b %-d, %Y}\"\n        ),\n        subtitle=(\n            f\"based on weekly US Drought Monitor Analysis, {griddelta:.2f}°\"\n            \" grid analysis\"\n        ),\n        continentalcolor=\"white\",\n        titlefontsize=14,\n        nocaption=True,\n    )\n\n    # compute the affine\n    (west, east, south, north) = mp.panels[0].get_extent(LATLON)\n    # HACK\n    if mp.sector == \"conus\":\n        west, east, south, north = (-126, -65, 23, 50)\n    raster = np.zeros(\n        (int((north - south) / griddelta), int((east - west) / griddelta))\n    )\n    lons = np.arange(raster.shape[1]) * griddelta + west\n    lats = np.arange(0, 0 - raster.shape[0], -1) * griddelta + north\n    lats = lats[::-1]\n    # The affine is the grid edge, which is different than the grid center\n    affine = Affine(\n        griddelta,\n        0.0,\n        west - griddelta / 2.0,\n        0.0,\n        0 - griddelta,\n        north + griddelta / 2.0,\n    )\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = gpd.read_postgis(\n            sql_helper(\"\"\"\n        with d as (\n            select valid, (ST_Dump(st_simplify(geom, 0.01))).geom from usdm\n            where valid >= :sdate and valid <= :edate and dm >= :dlevel and\n            ST_Intersects(geom,\n                ST_MakeEnvelope(:west, :south, :east, :north, 4326))\n        )\n        select valid, st_collect(geom) as the_geom from d GROUP by valid\n        \"\"\"),\n            conn,\n            params={\n                \"sdate\": sdate,\n                \"edate\": edate,\n                \"dlevel\": dlevel,\n                \"west\": west,\n                \"south\": south,\n                \"east\": east,\n                \"north\": north,\n            },\n            geom_col=\"the_geom\",\n        )  # type: ignore\n    if df.empty:\n        raise NoDataFound(\"No Data Found, sorry!\")\n    # loop over the cached stats\n    czs = CachingZonalStats(affine)\n    czs.compute_gridnav(df[\"the_geom\"], raster)\n    for nav in czs.gridnav:\n        if nav is None:\n            continue\n        grid = np.ones((nav.ysz, nav.xsz))\n        grid[nav.mask] = 0.0\n        jslice = slice(nav.y0, nav.y0 + nav.ysz)\n        islice = slice(nav.x0, nav.x0 + nav.xsz)\n        raster[jslice, islice] += grid\n\n    maxval = 10 if np.max(raster) < 11 else np.max(raster)\n    ramp = np.linspace(1, maxval + 1, 11, dtype=\"i\")\n    if ctx[\"w\"] == \"percent\":\n        ramp = np.arange(0, 101, 10, dtype=float)\n        ramp[0] = 0.01\n        ramp[-1] = 100.0\n        # we add one since we are rectified to tuesdays, so we have an extra\n        # week in there\n        raster = raster / ((edate - sdate).days / 7.0 + 1.0) * 100.0\n    # plot\n    cmap = stretch_cmap(ctx[\"cmap\"], ramp)\n    cmap.set_under(\"white\")\n    cmap.set_bad(\"white\")\n    lon_edges = np.concatenate(\n        [lons - griddelta / 2.0, [lons[-1] + griddelta / 2.0]]\n    )\n    lat_edges = np.concatenate(\n        [lats - griddelta / 2.0, [lats[-1] + griddelta / 2.0]]\n    )\n    xx, yy = np.meshgrid(lon_edges, lat_edges)\n    raster2 = np.flipud(raster)\n    mp.pcolormesh(\n        xx,\n        yy,\n        raster2,\n        ramp,\n        cmap=cmap,\n        units=\"count\" if ctx[\"w\"] == \"weeks\" else \"Percent\",\n        clip_on=False,\n    )\n    if len(csector) == 2:\n        mp.drawcounties()\n        mp.drawcities()\n\n    rows = []\n    for j in range(raster2.shape[0]):\n        for i in range(raster2.shape[1]):\n            rows.append(  # noqa\n                {\"lon\": lons[i], \"lat\": lats[j], \"value\": raster2[j, i]}\n            )\n\n    return mp.fig, pd.DataFrame(rows)\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p195.py",
    "content": "\"\"\"\nSome of the warnings that the National Weather\nService issues includes a storm motion vector.  This application\nplots the speed vs direction of the vector and includes a kernel density\nestimate (KDE) overlay.  You can optionally pick a date to highlight on the\nchart.  This date is a central time zone date.\n\"\"\"\n\nimport json\nfrom datetime import date\n\nimport pandas as pd\nimport seaborn as sns\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.util import convert_value\n\nPDICT = {\n    \"TO\": \"Tornado Warning\",\n    \"SV\": \"Severe Thunderstorm Warning\",\n    \"_A\": \"Severe Tstorm + Tornado Warning\",\n    \"EW\": \"Extreme Wind\",\n    \"FA\": \"Flood Advisory/Warning\",\n    \"FF\": \"Flash Flood Warning\",\n    \"MA\": \"Marine Warning\",\n    \"SQ\": \"Snow Squall\",\n}\nPDICT2 = {\n    \"NEW\": \"at Issuance\",\n    \"ANY\": \"at Issuance or Update\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 600}\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"date\",\n            name=\"date\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"Optional Date to Highlight on Map:\",\n            min=\"2007/07/16\",\n            max=today.strftime(\"%Y/%m/%d\"),\n            optional=True,\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"wfo\",\n            default=\"DMX\",\n            label=\"Select Forecast Office:\",\n            network=\"WFO\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"p\",\n            default=\"TO\",\n            options=PDICT,\n            label=\"Warning Type:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"limit\",\n            default=\"NEW\",\n            options=PDICT2,\n            label=\"Include only issuance or also updated (SVS, etc):\",\n        ),\n    ]\n    return desc\n\n\ndef get_data(ctx):\n    \"\"\"Do the data fetching portion of this autoplot's work.\"\"\"\n    statuslimit = \"status = 'NEW'\"\n    phenomena = ctx[\"p\"]\n    wfo = ctx[\"wfo\"]\n    title = \"at Issuance\"\n    if ctx[\"limit\"] == \"ANY\":\n        title = \"at Issuance or Update\"\n        statuslimit = \"status != 'CAN'\"\n    ps = [phenomena]\n    if phenomena == \"_A\":\n        ps = [\"TO\", \"SV\"]\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                SELECT polygon_begin at time zone 'America/Chicago'\n                as issue, to_char(polygon_begin at time zone 'UTC',\n                'YYYY-MM-DD HH24:MI') as utc_issue, eventid,\n                phenomena as ph, significance as s, tml_direction, tml_sknt\n                from sbw WHERE phenomena = ANY(:phenomena) and wfo = :wfo and\n                {statuslimit} and tml_direction is not null and\n                tml_sknt is not null ORDER by issue\n                \"\"\",\n                statuslimit=statuslimit,\n            ),\n            conn,\n            params={\"phenomena\": ps, \"wfo\": wfo},\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    df[\"tml_mph\"] = convert_value(df[\"tml_sknt\"], \"knot\", \"mile / hour\")\n    ctx[\"title\"] = (\n        f\"NWS {ctx['_nt'].sts[wfo]['name']}\\n\"\n        f\"{PDICT[phenomena]} Storm Motion {title}\\n\"\n        f\"{len(df.index)} events ploted between \"\n        f\"{df['issue'].min().date():%b %-d, %Y} and \"\n        f\"{df['issue'].max().date():%b %-d, %Y}\"\n    )\n    return df\n\n\ndef get_highcharts(ctx: dict) -> str:\n    \"\"\"Do the highcharts scatter plot of the data.\"\"\"\n    df = get_data(ctx)\n    df[\"datetxt\"] = df[\"issue\"].dt.strftime(\"%b %-d, %Y\")\n    dt = ctx.get(\"date\")\n    plotdf = df\n    if dt:\n        plotdf = df[df[\"issue\"].dt.date != dt]\n    cols = (\n        \"tml_direction tml_mph datetxt tml_sknt utc_issue ph s eventid\"\n    ).split()\n    series = [\n        dict(\n            name=\"All Events\",\n            data=(\n                plotdf[cols]\n                .rename(columns={\"tml_direction\": \"x\", \"tml_mph\": \"y\"})\n                .to_dict(orient=\"records\")\n            ),\n        )\n    ]\n    if dt:\n        series.append(\n            dict(\n                name=dt.strftime(\"%b %-d, %Y\"),\n                data=(\n                    df[df[\"issue\"].dt.date == dt][cols]\n                    .rename(columns={\"tml_direction\": \"x\", \"tml_mph\": \"y\"})\n                    .to_dict(orient=\"records\")\n                ),\n            )\n        )\n    containername = ctx[\"_e\"]\n    return (\n        \"\"\"\nHighcharts.chart('\"\"\"\n        + containername\n        + \"\"\"', {\n        chart: {\n            type: 'scatter',\n            zoomType: 'xy'\n        },\n        plotOptions: {\n            scatter: {\n                turboThreshold: 0\n            }\n        },\n        title: {\n            text: '%s'\n        },\n        xAxis: {\n            title: {\n                enabled: true,\n                text: 'Direction (degrees)'\n            },\n            startOnTick: true,\n            endOnTick: true,\n            showLastLabel: true\n        },\n        yAxis: {\n            title: {\n                text: 'Speed (MPH)'\n            }\n        },\n        tooltip: {\n            valueDecimals: 1,\n            formatter: function() {\n                return '<b>'+ this.point.datetxt +'</b><br /> '+\n                    this.point.tml_sknt +' KT ('+\n                    this.point.y.toFixed(1) +' MPH)<br />'+\n                    'From: '+ this.point.x +'°<br />'+\n                    'UTC: '+ this.point.utc_issue +'Z<br />'+\n                    'VTEC: '+ this.point.ph +'.'+ this.point.s +\n                    ' #'+ this.point.eventid\n                ;\n            }\n        },\n        series: %s\n    });\n    \"\"\"\n        % (\n            ctx[\"title\"].replace(\"\\n\", \"<br>\"),\n            json.dumps(series),\n        )\n    )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    dt = ctx.get(\"date\")\n    df = get_data(ctx)\n    plotdf = df\n    if dt is not None:\n        plotdf = df[df[\"issue\"].dt.date != dt]\n\n    g = sns.jointplot(\n        x=plotdf[\"tml_direction\"].values,\n        y=plotdf[\"tml_mph\"],\n        s=40,\n        zorder=1,\n        color=\"tan\",\n        xlim=(0, 360),\n    ).plot_joint(sns.kdeplot, n_levels=6)\n    figure(fig=g.figure, apctx=ctx, title=ctx[\"title\"])\n    g.ax_joint.set_xlabel(\"Storm Motion From Direction\")\n    g.ax_joint.set_ylabel(\"Storm Speed [MPH]\")\n    g.ax_joint.set_xticks(range(0, 361, 45))\n    g.ax_joint.set_xticklabels(\"N NE E SE S SW W NW N\".split())\n    if dt:\n        df2 = df[df[\"issue\"].dt.date == dt]\n        g.ax_joint.scatter(\n            df2[\"tml_direction\"],\n            df2[\"tml_mph\"],\n            marker=\"+\",\n            color=\"r\",\n            s=50,\n            label=dt.strftime(\"%b %-d, %Y\"),\n            zorder=2,\n        )\n        g.ax_joint.legend(loc=\"best\")\n    g.ax_joint.grid()\n    g.figure.subplots_adjust(top=0.9, bottom=0.1, left=0.1)\n    return g.figure, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p196.py",
    "content": "\"\"\"\nThis plot presents a frequency of having either a heat index\nor wind chill advisory/warning active for a given computed feels like\ntemperature.  The major caveat with this plot is that it does not address\nthe duration requirement that these alerts carry with them.  For example,\ninstantaneously dipping to a wind chill of -20 does not necessarily\nnecessitate a wind chill advisory be issued.  Another tunable knob to\nthis application is to only consider 'additive' cases.  That being when\nthe wind chill is colder than the air temperature and when the heat index\nis higher than the air temperature.  In the case of wind chill, a calm\nwind can lead to a nebulous wind chill.  Similiarly, a low humidity to\nwhat the computed heat index is.</p>\n\n<p>For the winter season of 2024-2025, the National Weather Service changed\nto issue Extreme Cold Warning and Cold Weather Advisory instead of\nWind Chill Advisories/Warnings.</p>\n\n<p>For the 2025 summer season, the National Weather Service changed\nto issue Extreme Heat Warning instead of an Excessive Heat Warning.</p>\n\n<p>The plot shows the NWS headline frequency for the forecast zone that\nthe automated weather station resides in.\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws.vtec import NWS_COLORS, get_ps_string\nfrom pyiem.plot import figure_axes\n\nPDICT = {\n    \"no\": \"Consider all Heat Index / Wind Chill Values\",\n    \"yes\": \"Only consider additive cases, with index worse than temperature\",\n}\nPDICT2 = {\n    \"heat\": \"Heat Index (pre 2025)\",\n    \"heat25\": \"Heat Index (2025 +)\",\n    \"chill\": \"Wind Chill (pre 2024/2025)\",\n    \"chill25\": \"Wind Chill (2024/2025 +)\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 3600}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"station\",\n            default=\"AMW\",\n            network=\"IA_ASOS\",\n            label=\"Select station:\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"no\",\n            name=\"opt\",\n            label=\"Should observations be limited?\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT2,\n            default=\"heat\",\n            name=\"var\",\n            label=\"Which feels like temperature to plot?\",\n        ),\n    ]\n    return desc\n\n\ndef get_df(ctx):\n    \"\"\"Figure out what data we need to fetch here\"\"\"\n    ctx[\"ugc\"] = ctx[\"_nt\"].sts[ctx[\"station\"]][\"ugc_zone\"]\n    ctx[\"s1\"] = \"Y\"\n    ctx[\"s2\"] = \"W\"\n    if ctx[\"var\"] == \"heat\":\n        ctx[\"p1\"] = \"HT\"\n        ctx[\"p2\"] = \"EH\"\n        tlimit = \" and issue < '2025-01-01' \"\n    elif ctx[\"var\"] == \"heat25\":\n        ctx[\"p1\"] = \"HT\"\n        ctx[\"p2\"] = \"XH\"\n        tlimit = \" and issue > '2025-01-01' \"\n    elif ctx[\"var\"] == \"chill\":\n        ctx[\"p1\"] = \"WC\"\n        ctx[\"p2\"] = \"WC\"\n        tlimit = \" and issue < '2024-09-01' \"\n    else:\n        ctx[\"p1\"] = \"CW\"\n        ctx[\"p2\"] = \"EC\"\n        tlimit = \" and issue > '2024-09-01' \"\n    # Thankfully, all the above are zone based\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        events = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT generate_series(issue, expire, '1 minute'::interval)\n            as valid,\n            (phenomena ||'.'|| significance) as vtec\n            from warnings WHERE ugc = :ugc and (\n                (phenomena = :p1 and significance = :s1) or\n                (phenomena = :p2 and significance = :s2) {tlimit}\n            ) ORDER by issue ASC\n        \"\"\",\n                tlimit=tlimit,\n            ),\n            conn,\n            params={\n                \"ugc\": ctx[\"ugc\"],\n                \"p1\": ctx[\"p1\"],\n                \"s1\": ctx[\"s1\"],\n                \"p2\": ctx[\"p2\"],\n                \"s2\": ctx[\"s2\"],\n            },\n            index_col=\"valid\",\n        )\n    if events.empty:\n        raise NoDataFound(f\"No Alerts were found for UGC: {ctx['ugc']}\")\n    thres = \"tmpf > 70\" if ctx[\"var\"].startswith(\"heat\") else \"tmpf < 40\"\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        obs = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    SELECT valid, tmpf::int as tmpf, feel from alldata where\n    station = :station and valid > :sts and {thres} and feel is not null\n    {tlimit}\n    ORDER by valid ASC\"\"\",\n                thres=thres,\n                tlimit=tlimit.replace(\"issue\", \"valid\"),\n            ),\n            conn,\n            params={\n                \"station\": ctx[\"station\"],\n                \"sts\": str(events.index.values[0]),\n            },\n            index_col=\"valid\",\n        )\n    if obs.empty:\n        raise NoDataFound(\"No Data Found.\")\n    ctx[\"title\"] = (\n        f\"{ctx['_sname']} ({str(events.index.values[0])[:10]} \"\n        f\"to {str(obs.index.values[-1])[:10]})\\n\"\n        f\"Frequency of NWS Headline for {ctx['ugc']} by {PDICT2[ctx['var']]}\"\n    )\n    if ctx[\"opt\"] == \"yes\":\n        if ctx[\"var\"] == \"heat\":\n            obs = obs[obs[\"feel\"] > obs[\"tmpf\"]]\n        else:\n            obs = obs[obs[\"feel\"] < obs[\"tmpf\"]]\n    obs[\"feel\"] = obs[\"feel\"].round(0)\n    res = obs.join(events).fillna(\"None\")\n    counts = res[[\"feel\", \"vtec\"]].groupby([\"feel\", \"vtec\"]).size()\n    df = pd.DataFrame(counts)\n    df.columns = [\"count\"]\n    ctx[\"df\"] = (\n        df.reset_index()\n        .pivot(index=\"feel\", columns=\"vtec\", values=\"count\")\n        .fillna(0)\n    )\n    ctx[\"df\"][\"Total\"] = ctx[\"df\"].sum(axis=1)\n    for vtec in [\n        f\"{ctx['p1']}.{ctx['s1']}\",\n        f\"{ctx['p2']}.{ctx['s2']}\",\n        \"None\",\n    ]:\n        if vtec not in ctx[\"df\"].columns:\n            ctx[\"df\"][vtec] = 0.0\n        ctx[\"df\"][f\"{vtec}%\"] = ctx[\"df\"][vtec] / ctx[\"df\"][\"Total\"] * 100.0\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    get_df(ctx)\n    (fig, ax) = figure_axes(apctx=ctx)\n\n    v1 = f\"{ctx['p1']}.{ctx['s1']}\"\n    hty = ctx[\"df\"][v1 + \"%\"]\n    ax.bar(\n        ctx[\"df\"].index.values,\n        hty,\n        label=get_ps_string(ctx[\"p1\"], ctx[\"s1\"]),\n        color=NWS_COLORS[v1],\n    )\n\n    v2 = f\"{ctx['p2']}.{ctx['s2']}\"\n    ehw = ctx[\"df\"][f\"{v2}%\"]\n    ax.bar(\n        ctx[\"df\"].index.values,\n        ehw.values,\n        bottom=hty.values,\n        label=get_ps_string(ctx[\"p2\"], ctx[\"s2\"]),\n        color=NWS_COLORS[v2],\n    )\n    non = ctx[\"df\"][\"None%\"]\n    ax.bar(\n        ctx[\"df\"].index.values,\n        non,\n        bottom=(hty + ehw).values,\n        label=\"No Headline\",\n        color=\"#EEEEEE\",\n    )\n    ax.legend(loc=(-0.03, -0.22), ncol=3)\n    ax.set_position([0.1, 0.2, 0.8, 0.7])\n    ax.grid(True)\n    _tt = \"All Obs Considered\" if ctx[\"opt\"] == \"no\" else \"Only Additive Obs\"\n    ax.set_xlabel(f\"Feels Like °F, {_tt}\")\n    ax.set_ylabel(\"Frequency [%]\")\n    ax.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    ax.set_title(ctx[\"title\"])\n\n    # Clip the plot in the case of wind chill\n    if ctx[\"var\"].startswith(\"chill\"):\n        vals = non[non < 100]\n        if len(vals.index) > 0:\n            ax.set_xlim(right=vals.index.values[-1] + 2)\n\n    return fig, ctx[\"df\"]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p197.py",
    "content": "\"\"\"\nThis generates a map showing USDA NASS weekly\nstatistics.  The date you select is rectified back to the latest available\ndate.  Historical data is linearly interpolated so that departures can be\ncomputed. A complication is that NASS data does not exist before the\nseason has started or ended. In this situation, hopefully the Right-Thing\nis done!\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import get_cmap\nfrom pyiem.plot.geoplot import MapPlot\n\nNASS_CROP_PROGRESS = {\n    \"corn_poor_verypoor\": \"Percentage Corn Poor + Very Poor Condition\",\n    \"corn_good_excellent\": \"Percentage Corn Good + Excellent Condition\",\n    \"corn_harvest\": \"Percentage Corn Harvested (Grain) Acres\",\n    \"corn_planting\": \"Percentage Corn Planted Acres\",\n    \"corn_silking\": \"Percentage Corn Silking Acres\",\n    \"soybeans_planting\": \"Percentage Soybean Planted Acres\",\n    \"soybeans_harvest\": \"Percentage Soybean Harvested Acres\",\n    \"soybeans_poor_verypoor\": \"Percentage Soybean Poor + Very Poor Condition\",\n    \"soybeans_good_excellent\": \"Percentage Soybean Good + Excellent Condition\",\n    \"soil_short_veryshort\": \"Percentage Topsoil Moisture Short + Very Short\",\n}\n\nNASS_CROP_PROGRESS_LOOKUP = {\n    \"corn_planting\": \"CORN - PROGRESS, MEASURED IN PCT PLANTED\",\n    \"corn_harvest\": \"CORN, GRAIN - PROGRESS, MEASURED IN PCT HARVESTED\",\n    \"soybeans_planting\": \"SOYBEANS - PROGRESS, MEASURED IN PCT PLANTED\",\n    \"soybeans_harvest\": \"SOYBEANS - PROGRESS, MEASURED IN PCT HARVESTED\",\n    \"corn_silking\": \"CORN - PROGRESS, MEASURED IN PCT SILKING\",\n    \"corn_poor_verypoor\": [\n        \"CORN - CONDITION, MEASURED IN PCT POOR\",\n        \"CORN - CONDITION, MEASURED IN PCT VERY POOR\",\n    ],\n    \"corn_good_excellent\": [\n        \"CORN - CONDITION, MEASURED IN PCT GOOD\",\n        \"CORN - CONDITION, MEASURED IN PCT EXCELLENT\",\n    ],\n    \"soybeans_poor_verypoor\": [\n        \"SOYBEANS - CONDITION, MEASURED IN PCT POOR\",\n        \"SOYBEANS - CONDITION, MEASURED IN PCT VERY POOR\",\n    ],\n    \"soybeans_good_excellent\": [\n        \"SOYBEANS - CONDITION, MEASURED IN PCT GOOD\",\n        \"SOYBEANS - CONDITION, MEASURED IN PCT EXCELLENT\",\n    ],\n    \"soil_short_veryshort\": [\n        \"SOIL, TOPSOIL - MOISTURE, MEASURED IN PCT VERY SHORT\",\n        \"SOIL, TOPSOIL - MOISTURE, MEASURED IN PCT SHORT\",\n    ],\n}\nPDICT2 = {\n    \"avg\": \"Compare against 10 year average for date\",\n    \"week\": \"Compare against given number of weeks ago\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"data\": True, \"cache\": 3600, \"description\": __doc__}\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"csector\",\n            name=\"csector\",\n            default=\"conus\",\n            label=\"Select Sector:\",\n        ),\n        dict(\n            type=\"select\",\n            options=NASS_CROP_PROGRESS,\n            default=\"corn_planting\",\n            name=\"var\",\n            label=\"Available variables to plot:\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT2,\n            default=\"avg\",\n            label=\"What to compare present number against?\",\n            name=\"w\",\n        ),\n        dict(\n            type=\"int\",\n            default=1,\n            label=\"Number of weeks ago to compare against (when appropriate):\",\n            name=\"weeks\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"date\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"Valid Date:\",\n            min=\"1981/01/01\",\n            max=today.strftime(\"%Y/%m/%d\"),\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"BrBG\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef get_df(ctx):\n    \"\"\"Figure out what data we need to fetch here\"\"\"\n    dt = ctx[\"date\"]\n    # Rectify to Sunday\n    if dt.isoweekday() < 7:\n        dt = dt - timedelta(days=dt.isoweekday())\n    varname = ctx[\"var\"]\n    params2 = NASS_CROP_PROGRESS_LOOKUP[varname]\n    params = {}\n    if isinstance(params2, list):\n        dlimit = \" short_desc = ANY(:dlimit) \"\n        params[\"dlimit\"] = params2\n    else:\n        dlimit = \" short_desc = :dlimit \"\n        params[\"dlimit\"] = params2\n    # NB aggregate here needed for the multiple parameter short_desc above\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"select year, week_ending, sum(num_value) as value, \"\n                \"state_alpha from nass_quickstats where {dlimit} and \"\n                \"num_value is not null \"\n                \"GROUP by year, week_ending, state_alpha \"\n                \"ORDER by state_alpha, week_ending\",\n                dlimit=dlimit,\n            ),\n            conn,\n            index_col=None,\n            params=params,\n            parse_dates=\"week_ending\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No NASS Data was found for query, sorry.\")\n    data = {}\n    # Average at least ten years\n    syear = max([1981, dt.year - 10])\n    eyear = syear + 10\n    week_ending_start = dt - timedelta(days=ctx[\"weeks\"] * 7)\n    for state, gdf in df.groupby(\"state_alpha\"):\n        sdf = gdf.copy().set_index(\"week_ending\")\n        # TOO DIFFICULT to know what to do in this case.\n        if dt.strftime(\"%Y-%m-%d\") not in sdf.index:\n            continue\n        thisval = sdf.loc[dt.strftime(\"%Y-%m-%d\")][\"value\"]\n        # linear interpolate data to get comparables\n        newdf = (\n            sdf[~sdf.index.duplicated(keep=\"first\")][[\"year\", \"value\"]]\n            .resample(\"D\")\n            .interpolate(method=\"linear\")\n        )\n        # get doy averages\n        y10 = newdf[(newdf[\"year\"] >= syear) & (newdf[\"year\"] < eyear)]\n        if y10.empty:\n            avgval = None\n        else:\n            doyavgs = y10.groupby(y10.index.strftime(\"%m%d\")).mean(\n                numeric_only=True\n            )\n            if dt.strftime(\"%m%d\") in doyavgs.index:\n                avgval = doyavgs.at[dt.strftime(\"%m%d\"), \"value\"]\n            else:\n                avgval = None\n        pval = None\n        if week_ending_start.strftime(\"%Y-%m-%d\") in sdf.index:\n            pval = sdf.loc[week_ending_start.strftime(\"%Y-%m-%d\")][\"value\"]\n        data[state] = {\n            \"avg\": avgval,\n            \"thisval\": thisval,\n            f\"week{ctx['weeks']}ago\": pval,\n        }\n    ctx[\"df\"] = pd.DataFrame.from_dict(data, orient=\"index\")\n    if ctx[\"df\"].empty:\n        raise NoDataFound(\"No Data Found.\")\n    ctx[\"df\"] = ctx[\"df\"].dropna(how=\"all\")\n    ctx[\"df\"].index.name = \"state\"\n    col = \"avg\" if ctx[\"w\"] == \"avg\" else f\"week{ctx['weeks']}ago\"\n    ctx[\"df\"][\"departure\"] = ctx[\"df\"][\"thisval\"] - ctx[\"df\"][col]\n    ctx[\"title\"] = f\"{dt:%-d %b %Y} USDA NASS {NASS_CROP_PROGRESS[varname]}\"\n    if ctx[\"w\"] == \"avg\":\n        ctx[\"subtitle\"] = (\n            f\"Top value is {dt.year} percentage, bottom value is \"\n            f\"departure from {syear}-{eyear - 1} avg\"\n        )\n    else:\n        ctx[\"subtitle\"] = (\n            f\"Top value is {dt.year} percentage, bottom value is \"\n            f\"precentage points change since {week_ending_start:%-d %b %Y}\"\n        )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    get_df(ctx)\n    labels = {}\n    data = {}\n    for state, row in ctx[\"df\"].iterrows():\n        val = row[\"departure\"]\n        data[state] = val\n        if pd.isna(val):\n            if pd.isna(row[\"avg\"]):\n                subscript = \"M\"\n            else:\n                subscript = f\"[-{row['avg']:.0f}]\"\n                data[state] = 0 - row[\"avg\"]\n        else:\n            subscript = f\"[{'+' if val > 0 else ''}{val:.0f}]\"\n            subscript = \"[0]\" if subscript in [\"[-0]\", \"[+0]\"] else subscript\n        tt = \"M\" if pd.isna(row[\"thisval\"]) else int(row[\"thisval\"])\n        labels[state] = f\"{tt}\\n{subscript}\"\n\n    mp = MapPlot(\n        apctx=ctx,\n        title=ctx[\"title\"],\n        subtitle=ctx[\"subtitle\"],\n        nocaption=True,\n    )\n    levels = range(-40, 41, 10)\n    cmap = get_cmap(ctx[\"cmap\"])\n    cmap.set_bad(\"white\")\n    mp.fill_states(\n        data,\n        ilabel=True,\n        labels=labels,\n        bins=levels,\n        cmap=cmap,\n        units=\"Percentage Points\",\n        labelfontsize=16,\n        labelbuffer=0,\n    )\n\n    return mp.fig, ctx[\"df\"]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p198.py",
    "content": "\"\"\"\nThis plot presents a simple average of a given\nsounding variable of your choice.  If the selected month period crosses\na calendar year, the year shown is for the January included in the period.\n\n<br /><br />The 'Select Station' option provides some 'virtual' stations\nthat are spliced together archives of close by stations.  For some\nlocations, the place that the sounding is made has moved over the years..\n\n<br /><br />\n<strong>Some derived parameters are a work-in-progress.</strong>\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.util import month2months\n\nPDICT = {\"00\": \"00 UTC\", \"12\": \"12 UTC\", \"ALL\": \"Any Hour\"}\nMDICT = {\n    \"all\": \"No Month/Time Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"mjj\": \"May/June/July\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\nPDICT3 = {\n    \"tmpc\": \"Air Temperature (°C)\",\n    \"dwpc\": \"Dew Point (°C)\",\n    \"el_agl_m\": \"Equalibrium Level (m AGL)\",\n    \"el_pressure_hpa\": \"Equalibrium Pressure (hPa)\",\n    \"el_tmpc\": \"Equalibrium Level Temperature (°C)\",\n    \"height\": \"Height (m)\",\n    \"lcl_agl_m\": \"Lifted Condensation Level (m AGL)\",\n    \"lcl_pressure_hpa\": \"Lifted Condensation Level (hPa)\",\n    \"lcl_tmpc\": \"Lifted Condensation Level Temperature (°C)\",\n    \"lfc_agl_m\": \"Lifted of Free Convection (m AGL)\",\n    \"lfc_pressure_hpa\": \"Lifted of Free Convection (hPa)\",\n    \"lfc_tmpc\": \"Lifted of Free Convection Temperature (°C)\",\n    \"mlcape_jkg\": \"Mixed Layer (100hPa) CAPE (J/kg)\",\n    \"mlcin_jkg\": \"Mixed Layer (100hPa) CIN (J/kg)\",\n    \"mucape_jkg\": \"Most Unstable CAPE (J/kg)\",\n    \"mucin_jkg\": \"Most Unstable CIN (J/kg)\",\n    \"pwater_mm\": \"Precipitable Water (mm)\",\n    \"shear_sfc_1km_smps\": \"Shear 0-1km AGL Magnitude (m/s)\",\n    \"shear_sfc_3km_smps\": \"Shear 0-3km AGL Magnitude (m/s)\",\n    \"shear_sfc_6km_smps\": \"Shear 0-6km AGL Magnitude (m/s)\",\n    \"srh_sfc_1km_neg\": \"Storm Relative Helicity Negative (0-1km) (m2/s2)\",\n    \"srh_sfc_1km_pos\": \"Storm Relative Helicity Positive (0-1km) (m2/s2)\",\n    \"srh_sfc_1km_total\": \"Storm Relative Helicity Total (0-1km) (m2/s2)\",\n    \"srh_sfc_3km_neg\": \"Storm Relative Helicity Negative (0-3km) (m2/s2)\",\n    \"srh_sfc_3km_pos\": \"Storm Relative Helicity Positive (0-3km) (m2/s2)\",\n    \"srh_sfc_3km_total\": \"Storm Relative Helicity Total (0-3km) (m2/s2)\",\n    \"sbcape_jkg\": \"Surface Based CAPE (J/kg)\",\n    \"sbcin_jkg\": \"Surface Based CIN (J/kg)\",\n    \"sweat_index\": \"Sweat Index\",\n    \"total_totals\": \"Total Totals (°C)\",\n    \"smps\": \"Wind Speed (mps)\",\n}\nPDICT4 = {\"min\": \"Minimum\", \"avg\": \"Average\", \"max\": \"Maximum\"}\nPDICT5 = {\n    \"no\": \"Plot All Available Data\",\n    \"yes\": \"Only Plot Years with ~75% Data Availability\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"RAOB\",\n            default=\"_OAX\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"hour\",\n            default=\"00\",\n            options=PDICT,\n            label=\"Which Routine Sounding:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"agg\",\n            default=\"avg\",\n            options=PDICT4,\n            label=\"Which Statistical Aggregate to Plot:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"tmpc\",\n            options=PDICT3,\n            label=\"Which Sounding Variable to Plot:\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"level\",\n            default=500,\n            label=\"Which Pressure (hPa) level:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"quorum\",\n            default=\"yes\",\n            options=PDICT5,\n            label=\"Should there be a quorum check before plotting?\",\n        ),\n    ]\n    return desc\n\n\ndef compute(dfin: pd.DataFrame, varname: str):\n    \"\"\"Compute our needed yearly aggregates.\"\"\"\n    if dfin.empty:\n        raise NoDataFound(\"No Data Found\")\n    # create final DataFrame holding our agg computations\n    df = dfin.groupby(\"year\").agg([\"min\", \"mean\", \"max\", \"count\"]).copy()\n    df.columns = df.columns.map(\"_\".join)\n    df = df.rename({f\"{varname}_mean\": f\"{varname}_avg\"}, axis=1)\n    for agg in [\"min\", \"max\"]:\n        df[f\"{varname}_{agg}_valid\"] = \"\"\n    # compute the min and max value timestamps\n    for year, df2 in dfin.groupby(\"year\"):\n        for agg in [\"min\", \"max\"]:\n            rows = df2[df2[varname] == df.at[year, f\"{varname}_{agg}\"]]\n            vals = []\n            for _i, row in rows.iterrows():\n                vals.append(row[\"utc_valid\"].strftime(\"%Y-%m-%d %H:%M\"))\n            extra = \"\" if len(vals) < 5 else f\";+ {len(vals) - 4} more\"\n            df.at[year, f\"{varname}_{agg}_valid\"] = \"; \".join(vals[:4]) + extra\n    return df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    if station not in ctx[\"_nt\"].sts:  # This is needed.\n        raise NoDataFound(\"Unknown station metadata.\")\n    varname = ctx[\"var\"]\n    hour = ctx[\"hour\"]\n    if hour != \"ALL\":\n        hour = int(hour)\n    month = ctx[\"month\"]\n    level = ctx[\"level\"]\n    agg = ctx[\"agg\"]\n    offset = 0\n    months = month2months(month)\n\n    name = ctx[\"_nt\"].sts[station][\"name\"]\n    stations = [station]\n    if station.startswith(\"_\"):\n        name = ctx[\"_nt\"].sts[station][\"name\"].split(\"--\")[0]\n        stations = (\n            ctx[\"_nt\"].sts[station][\"name\"].split(\"--\")[1].strip().split(\" \")\n        )\n\n    hrlimiter = f\" extract(hour from f.valid at time zone 'UTC') = {hour} and \"\n    if hour == \"ALL\":\n        hrlimiter = \"\"\n    yrcol = f\"extract(year from f.valid + '{offset:0d} days'::interval)::int\"\n    if varname in [\"tmpc\", \"dwpc\", \"height\", \"smps\"]:\n        leveltitle = f\" @ {level} hPa\"\n        with get_sqlalchemy_conn(\"raob\") as conn:\n            dfin = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n                select {yrcol} as year, {varname},\n                valid at time zone 'UTC' as utc_valid\n                from raob_profile p JOIN raob_flights f on (p.fid = f.fid)\n                WHERE f.station = ANY(:stations) and p.pressure = :level\n                and {hrlimiter} extract(month from f.valid) = ANY(:months)\n                and {varname} is not null\n            \"\"\",\n                    yrcol=yrcol,\n                    varname=varname,\n                    hrlimiter=hrlimiter,\n                ),\n                conn,\n                params={\n                    \"stations\": stations,\n                    \"level\": level,\n                    \"months\": months,\n                },\n            )\n    else:\n        leveltitle = \"\"\n        with get_sqlalchemy_conn(\"raob\") as conn:\n            dfin = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n                select {yrcol} as year, {varname}, valid at time zone 'UTC'\n                as utc_valid from raob_flights f WHERE\n                f.station = ANY(:stations)\n                and {hrlimiter} extract(month from f.valid) = ANY(:months) and\n                {varname} is not null\n            \"\"\",\n                    yrcol=yrcol,\n                    varname=varname,\n                    hrlimiter=hrlimiter,\n                ),\n                conn,\n                params={\n                    \"stations\": stations,\n                    \"months\": months,\n                },\n            )\n    df = compute(dfin, varname)\n    if ctx[\"quorum\"] == \"yes\":\n        # need quorums\n        df = df[df[f\"{varname}_count\"] > ((len(months) * 28) * 0.75)]\n    if df.empty:\n        raise NoDataFound(\"No data was found!\")\n    colname = f\"{varname}_{agg}\"\n    title = \"%s %s %s Sounding\" % (\n        station,\n        name,\n        f\"{hour:02d} UTC\" if hour != \"ALL\" else PDICT[hour],\n    )\n    subtitle = \"%s %s%s over %s\" % (\n        PDICT4[agg],\n        PDICT3[varname],\n        leveltitle,\n        MDICT[month],\n    )\n    fig, ax = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    avgv = df[colname].mean()\n    bars = ax.bar(df.index.values, df[colname], align=\"center\")\n    for i, _bar in enumerate(bars):\n        _bar.set_color(\"blue\" if df.iloc[i][colname] < avgv else \"red\")\n    ax.set_xlim(df.index.min() - 1, df.index.max() + 1)\n    rng = df[colname].max() - df[colname].min()\n    if rng > 0:\n        ax.set_ylim(\n            df[colname].min() - rng * 0.1, df[colname].max() + rng * 0.1\n        )\n    ax.axhline(avgv, color=\"k\")\n    ax.text(df.index.values[-1] + 2, avgv, f\"Avg:\\n{avgv:.1f}\")\n    ax.set_xlabel(\"Year\")\n    ax.set_ylabel(f\"{PDICT4[agg]} {PDICT3[varname]}{leveltitle}\")\n    ax.grid(True)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts100/p199.py",
    "content": "\"\"\"\nThis application generates maps of daily ISU\nSoil Moisture Network Data.\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport pandas as pd\nfrom metpy.units import units\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.network import Table as NetworkTable  # This is needed.\nfrom pyiem.plot.geoplot import MapPlot\nfrom pyiem.tracker import loadqc\nfrom pyiem.util import mm2inch\n\nPLOTTYPES = {\n    \"1\": \"Max/Min 4 Inch Soil Temps\",\n    \"2\": \"Max/Min Air Temperature\",\n    \"3\": \"Average 4 Inch Soil Temp\",\n    \"4\": \"Solar Radiation\",\n    \"5\": \"Potential Evapotranspiration\",\n    \"6\": \"Precipitation\",\n    \"7\": \"Peak Wind Gust\",\n    \"8\": \"Average Wind Speed\",\n    \"9\": \"Plant Available Soil Water (6-30 inches)\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    ets = datetime.now().replace(minute=0)\n    sts = ets - timedelta(days=1)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"1\",\n            options=PLOTTYPES,\n            label=\"Select Plot Type:\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"date\",\n            default=sts.strftime(\"%Y/%m/%d\"),\n            label=\"Select Date\",\n            min=\"2012/01/01\",\n        ),\n    ]\n    return desc\n\n\ndef plot1(ctx):\n    \"\"\"Daily four inch depth high/low temp.\"\"\"\n    dt = datetime(ctx[\"date\"].year, ctx[\"date\"].month, ctx[\"date\"].day)\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            SELECT station, max(t4_c_avg_qc) as max_tsoil_c,\n            min(t4_c_avg_qc) as min_tsoil_c from sm_hourly WHERE\n            valid BETWEEN %s and %s and t4_c_avg_qc is not null\n            GROUP by station\n        \"\"\",\n            conn,\n            params=(dt, dt + timedelta(hours=24)),\n            index_col=\"station\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found for This Plot.\")\n    df[\"max_tsoil_f\"] = (\n        (df[\"max_tsoil_c\"].values * units(\"degC\")).to(units(\"degF\")).m\n    )\n    df[\"min_tsoil_f\"] = (\n        (df[\"min_tsoil_c\"].values * units(\"degC\")).to(units(\"degF\")).m\n    )\n\n    data = []\n    for station, row in df.iterrows():\n        if ctx[\"qc\"].get(station, {}).get(\"soil4\", False):\n            continue\n        data.append(\n            {\n                \"lon\": ctx[\"nt\"].sts[station][\"lon\"],\n                \"lat\": ctx[\"nt\"].sts[station][\"lat\"],\n                \"tmpf\": row[\"max_tsoil_f\"],\n                \"dwpf\": row[\"min_tsoil_f\"],\n                \"id\": ctx[\"nt\"].sts[station][\"plot_name\"],\n                \"id_color\": \"k\",\n            }\n        )\n\n    return data, df\n\n\ndef plot2(ctx):\n    \"\"\"Daily air high/low temp.\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            SELECT station, tair_c_max_qc,\n            tair_c_min_qc from sm_daily WHERE\n            valid = %s and tair_c_max_qc is not null and\n            tair_c_min_qc is not null\n        \"\"\",\n            conn,\n            params=(ctx[\"date\"],),\n            index_col=\"station\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found for This Plot.\")\n    df[\"high_f\"] = (\n        (df[\"tair_c_max_qc\"].values * units(\"degC\")).to(units(\"degF\")).m\n    )\n    df[\"low_f\"] = (\n        (df[\"tair_c_min_qc\"].values * units(\"degC\")).to(units(\"degF\")).m\n    )\n\n    data = []\n    for station, row in df.iterrows():\n        data.append(\n            {\n                \"lon\": ctx[\"nt\"].sts[station][\"lon\"],\n                \"lat\": ctx[\"nt\"].sts[station][\"lat\"],\n                \"tmpf\": row[\"high_f\"],\n                \"dwpf\": row[\"low_f\"],\n                \"id\": ctx[\"nt\"].sts[station][\"plot_name\"],\n                \"id_color\": \"k\",\n            }\n        )\n\n    return data, df\n\n\ndef plot3(ctx):\n    \"\"\"Daily air high/low temp.\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            SELECT station, t4_c_avg_qc from sm_daily WHERE\n            valid = %s and t4_c_avg_qc is not null\n        \"\"\",\n            conn,\n            params=(ctx[\"date\"],),\n            index_col=\"station\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found for This Plot.\")\n    df[\"soil4_avg_f\"] = (\n        (df[\"t4_c_avg_qc\"].values * units(\"degC\")).to(units(\"degF\")).m\n    )\n\n    data = []\n    for station, row in df.iterrows():\n        data.append(\n            {\n                \"lon\": ctx[\"nt\"].sts[station][\"lon\"],\n                \"lat\": ctx[\"nt\"].sts[station][\"lat\"],\n                \"tmpf\": row[\"soil4_avg_f\"],\n                \"id\": ctx[\"nt\"].sts[station][\"plot_name\"],\n                \"id_color\": \"k\",\n            }\n        )\n\n    return data, df\n\n\ndef plot4(ctx):\n    \"\"\"Daily rad.\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            SELECT station, slrkj_tot_qc from sm_daily WHERE\n            valid = %s and slrkj_tot_qc is not null\n        \"\"\",\n            conn,\n            params=(ctx[\"date\"],),\n            index_col=\"station\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found for This Plot.\")\n\n    data = []\n    for station, row in df.iterrows():\n        data.append(\n            {\n                \"lon\": ctx[\"nt\"].sts[station][\"lon\"],\n                \"lat\": ctx[\"nt\"].sts[station][\"lat\"],\n                \"tmpf\": row[\"slrkj_tot_qc\"] / 1000.0,\n                \"id\": ctx[\"nt\"].sts[station][\"plot_name\"],\n                \"id_color\": \"k\",\n            }\n        )\n\n    return data, df\n\n\ndef plot5(ctx, col):\n    \"\"\"Daily ET.\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            f\"SELECT station, {col}_qc from sm_daily WHERE valid = %s and \"\n            f\"{col}_qc >= 0\",\n            conn,\n            params=(ctx[\"date\"],),\n            index_col=\"station\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found for This Plot.\")\n    if col == \"dailyet\":\n        df[\"data\"] = mm2inch(df[\"dailyet_qc\"].values)\n    else:\n        df[\"data\"] = df[col + \"_qc\"].values\n\n    data = []\n    for station, row in df.iterrows():\n        data.append(\n            {\n                \"lon\": ctx[\"nt\"].sts[station][\"lon\"],\n                \"lat\": ctx[\"nt\"].sts[station][\"lat\"],\n                \"tmpf\": row[\"data\"],\n                \"tmpf_format\": \"%.02f\",\n                \"id\": ctx[\"nt\"].sts[station][\"plot_name\"],\n                \"id_color\": \"k\",\n            }\n        )\n    return data, df\n\n\ndef plot7(ctx):\n    \"\"\"Daily peak wind.\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            SELECT station, ws_mph_max_qc, to_char(ws_mph_tmx, 'HH24MI')\n            as time from sm_daily WHERE\n            valid = %s and ws_mph_max_qc is not null\n        \"\"\",\n            conn,\n            params=(ctx[\"date\"],),\n            index_col=\"station\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found for This Plot.\")\n\n    data = []\n    for station, row in df.iterrows():\n        data.append(\n            {\n                \"lon\": ctx[\"nt\"].sts[station][\"lon\"],\n                \"lat\": ctx[\"nt\"].sts[station][\"lat\"],\n                \"tmpf\": row[\"ws_mph_max_qc\"],\n                #  'dwpf': row['time'],  backend bug plotting non-numbers\n                \"id\": ctx[\"nt\"].sts[station][\"plot_name\"],\n                \"id_color\": \"k\",\n            }\n        )\n\n    return data, df\n\n\ndef plot8(ctx):\n    \"\"\"Daily peak wind.\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            \"SELECT station, ws_mph_qc from sm_daily WHERE valid = %s and \"\n            \"ws_mph_qc is not null\",\n            conn,\n            params=(ctx[\"date\"],),\n            index_col=\"station\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found for This Plot.\")\n\n    data = []\n    for station, row in df.iterrows():\n        data.append(\n            {\n                \"lon\": ctx[\"nt\"].sts[station][\"lon\"],\n                \"lat\": ctx[\"nt\"].sts[station][\"lat\"],\n                \"tmpf\": row[\"ws_mph_qc\"],\n                #  'dwpf': row['time'],  backend bug plotting non-numbers\n                \"id\": ctx[\"nt\"].sts[station][\"plot_name\"],\n                \"id_color\": \"k\",\n            }\n        )\n\n    return data, df\n\n\ndef plot9(ctx):\n    \"\"\"Daily peak wind.\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            \"SELECT station, vwc12_qc, vwc24_qc from \"\n            \"sm_daily WHERE valid = %s and vwc24_qc is not null \"\n            \"and station != 'FRUI4'\",\n            conn,\n            params=(ctx[\"date\"],),\n            index_col=\"station\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found for This Plot.\")\n    df[\"vwc_12\"] = df[\"vwc12_qc\"].clip(0.1, 0.45)\n    df[\"vwc_24\"] = df[\"vwc24_qc\"].clip(0.1, 0.45)\n    df[\"val\"] = (df[\"vwc_12\"] * 12 + df[\"vwc_24\"] * 12) - (24 * 0.1)\n    df = df[~df[\"val\"].isna()]\n\n    data = []\n    for station, row in df.iterrows():\n        data.append(\n            {\n                \"lon\": ctx[\"nt\"].sts[station][\"lon\"],\n                \"lat\": ctx[\"nt\"].sts[station][\"lat\"],\n                \"tmpf\": row[\"val\"],\n                \"tmpf_format\": \"%.02f\",\n                \"id\": ctx[\"nt\"].sts[station][\"plot_name\"],\n                \"id_color\": \"k\",\n            }\n        )\n\n    return data, df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    ctx[\"qc\"] = loadqc(date=ctx[\"date\"])\n    ctx[\"nt\"] = NetworkTable(\"ISUSM\", only_online=False)\n    if not ctx[\"nt\"].sts:\n        raise NoDataFound(\"No station metadata found.\")\n    # Adjust stations to make some room\n    ctx[\"nt\"].sts[\"BOOI4\"][\"lon\"] -= 0.15\n    ctx[\"nt\"].sts[\"BOOI4\"][\"lat\"] -= 0.15\n    ctx[\"nt\"].sts[\"AHTI4\"][\"lon\"] += 0.25\n    ctx[\"nt\"].sts[\"AHTI4\"][\"lat\"] += 0.25\n\n    ctx[\"nt\"].sts[\"DONI4\"][\"lon\"] += 0.05\n    ctx[\"nt\"].sts[\"DONI4\"][\"lat\"] -= 0.2\n\n    if ctx[\"opt\"] == \"1\":\n        title = \"ISU Soil Moisture Max/Min 4 Inch Soil Temperature\"\n        subtitle = \"based on available hourly observations\"\n        data, df = plot1(ctx)\n    elif ctx[\"opt\"] == \"2\":\n        title = \"ISU Soil Moisture Max/Min Air Temperature\"\n        subtitle = \"based on available daily summary data\"\n        data, df = plot2(ctx)\n    elif ctx[\"opt\"] == \"3\":\n        title = \"ISU Soil Moisture Average 4 Inch Soil Temperature\"\n        subtitle = \"based on available daily summary data\"\n        data, df = plot3(ctx)\n    elif ctx[\"opt\"] == \"4\":\n        title = \"ISU Soil Moisture Solar Radiation [MJ]\"\n        subtitle = \"based on available daily summary data\"\n        data, df = plot4(ctx)\n    elif ctx[\"opt\"] == \"5\":\n        title = \"ISU Soil Moisture Potential Evapotranspiration [inch]\"\n        subtitle = \"based on available daily summary data\"\n        data, df = plot5(ctx, \"dailyet\")\n    elif ctx[\"opt\"] == \"6\":\n        title = \"ISU Soil Moisture Precipitation [inch]\"\n        subtitle = (\n            \"based on available daily summary data, liquid equiv of snow \"\n            \"estimated\"\n        )\n        data, df = plot5(ctx, \"rain_in_tot\")\n    elif ctx[\"opt\"] == \"7\":\n        title = \"ISU Soil Moisture Peak Wind Gust [MPH]\"\n        subtitle = \"based on available daily summary data\"\n        data, df = plot7(ctx)\n    elif ctx[\"opt\"] == \"8\":\n        title = \"ISU Soil Moisture Average Wind Speed [MPH]\"\n        subtitle = \"based on available daily summary data\"\n        data, df = plot8(ctx)\n    else:  # 9\n        title = (\n            \"ISU Soil Moisture Plant Available Soil Water (6-30 inch) [inch]\"\n        )\n        subtitle = (\n            'based on available daily summary data, 10.8\" theoretical max '\n            \"assuming 45% capacity\"\n        )\n        data, df = plot9(ctx)\n\n    tle = ctx[\"date\"].strftime(\"%b %-d, %Y\")\n    mp = MapPlot(\n        apctx=ctx,\n        sector=\"iowa\",\n        continentalcolor=\"white\",\n        nocaption=True,\n        title=f\"{tle} {title}\",\n        subtitle=subtitle,\n    )\n    mp.drawcounties(\"#EEEEEE\")\n    mp.plot_station(data, fontsize=12)\n\n    return mp.fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/__init__.py",
    "content": "\"\"\"So we can import.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p200.py",
    "content": "\"\"\"This application generates heatmaps of Storm Prediction Center\nconvective outlooks.\n\n<p>\n<strong>Statistical Consideration</strong>: It is not necessarily a straight\nforward statistic to compute the number of days that a given location was\nat a outlook threshold.  The near term outlooks are updated multiple times\nper day, so a given location could be under a moderate risk during the morning\nhours and then downgraded to general thunder for the evening hours after the\nstorm passes. The algorithm aggregates the selected threshold for each\nconvective day (outlooks end at 12 UTC), taking the union of whatever\ngeometries are present.  Additionally, the geometries are the area at or\nabove the given threshold.  For example, consider Iowa engulfed by a moderate\nrisk for the entire day.  If you plotted the enhanced threshold, this event\nwould count for that enhanced threshold statistic.  There is no one-right-way\nto do this.\n</p>\n\n<p><i class=\"bi bi-info-circle\" aria-hidden=\"true\"></i>\n<span class=\"visually-hidden\">Info</span>\nThis autoplot currently only considers\noutlooks since 2002. </p>\n\n<p><strong>Updated 31 Dec 2024</strong>: This autoplot will no longer emit\na hacky CSV/Excel file.  Instead, it will return a GeoTIFF with the analysis\ngrid.  If this causes you heartburn, please let me know.</p>\n\n<p>Autoplot <a href=\"/plotting/auto/?q=248\">248</a> is similar, but generates\nchart of days per year by WFO, state.</p>\n\"\"\"\n\nfrom datetime import timedelta\nfrom typing import TYPE_CHECKING\n\nimport geopandas as gpd\nimport numpy as np\nfrom affine import Affine\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.grid.zs import CachingZonalStats\nfrom pyiem.plot import get_cmap, pretty_bins\nfrom pyiem.plot.geoplot import MapPlot\nfrom pyiem.util import utc\n\nfrom iemweb.autoplot import ARG_FEMA\nfrom iemweb.util import month2months\n\nif TYPE_CHECKING:\n    import pandas as pd\n\nPDICT5 = {\n    \"yes\": \"YES: Draw Counties/Parishes\",\n    \"no\": \"NO: Do Not Draw Counties/Parishes\",\n}\n# Note the backwards order here that we care about in p258\nISSUANCE = {\n    \"1.C.A\": \"Day 1 Convective\",\n    \"1.C.1\": \"Day 1 Convective @1z\",\n    \"1.C.20\": \"Day 1 Convective @20z\",\n    \"1.C.16\": \"Day 1 Convective @16z\",\n    \"1.C.13\": \"Day 1 Convective @13z\",\n    \"1.C.6\": \"Day 1 Convective @6z\",\n    \"1.F.A\": \"Day 1 Fire Weather\",\n    \"1.F.17\": \"Day 1 Fire Weather @17z\",\n    \"1.F.7\": \"Day 1 Fire Weather @7z\",\n    \"1.E.A\": \"Day 1 Excessive Rainfall\",\n    \"1.E.1\": \"Day 1 Excessive Rainfall @1z\",\n    \"1.E.20\": \"Day 1 Excessive Rainfall @20z\",\n    \"1.E.16\": \"Day 1 Excessive Rainfall @16z\",\n    \"1.E.8\": \"Day 1 Excessive Rainfall @8z\",\n    \"2.C.A\": \"Day 2 Convective\",\n    \"2.C.17\": \"Day 2 Convective @17z\",\n    \"2.C.7\": \"Day 2 Convective @7z\",\n    \"2.F.A\": \"Day 2 Fire Weather\",\n    \"2.F.18\": \"Day 2 Fire Weather @18z\",\n    \"2.F.8\": \"Day 2 Fire Weather @8z\",\n    \"2.E.A\": \"Day 2 Excessive Rainfall\",\n    \"2.E.20\": \"Day 2 Excessive Rainfall @20z\",\n    \"2.E.8\": \"Day 2 Excessive Rainfall @8z\",\n    \"3.C.A\": \"Day 3 Convective\",\n    \"3.C.20\": \"Day 3 Convective @20z\",\n    \"3.C.8\": \"Day 3 Convective @8z\",\n    \"3.F.21\": \"Day 3 Fire Weather @21z\",\n    \"3.E.20\": \"Day 3 Excessive Rainfall @20z\",\n    \"3.E.8\": \"Day 3 Excessive Rainfall @8z\",\n    \"4.C.10\": \"Day 4 Convective @10z\",\n    \"4.E.20\": \"Day 4 Excessive Rainfall @20z\",\n    \"4.E.8\": \"Day 4 Excessive Rainfall @8z\",\n    \"4.F.21\": \"Day 4 Fire Weather @21z\",\n    \"5.C.10\": \"Day 5 Convective @10z\",\n    \"5.E.20\": \"Day 5 Excessive Rainfall @20z\",\n    \"5.E.8\": \"Day 5 Excessive Rainfall @8z\",\n    \"5.F.21\": \"Day 5 Fire Weather @21z\",\n    \"6.C.10\": \"Day 6 Convective @10z\",\n    \"6.F.21\": \"Day 6 Fire Weather @21z\",\n    \"7.C.10\": \"Day 7 Convective @10z\",\n    \"7.F.21\": \"Day 7 Fire Weather @21z\",\n    \"8.C.10\": \"Day 8 Convective @10z\",\n    \"8.F.21\": \"Day 8 Fire Weather @21z\",\n}\nOUTLOOKS = {\n    \"ANY SEVERE.0.02\": \"Any Severe 2% (Day 3+)\",\n    \"ANY SEVERE.0.05\": \"Any Severe 5% (Day 3+)\",\n    \"ANY SEVERE.0.15\": \"Any Severe 15% (Day 3+)\",\n    \"ANY SEVERE.0.25\": \"Any Severe 25% (Day 3+)\",\n    \"ANY SEVERE.0.30\": \"Any Severe 30% (Day 3+)\",\n    \"ANY SEVERE.0.35\": \"Any Severe 35% (Day 3+)\",\n    \"ANY SEVERE.0.45\": \"Any Severe 45% (Day 3+)\",\n    \"ANY SEVERE.0.60\": \"Any Severe 60% (Day 3+)\",\n    \"ANY SEVERE.SIGN\": \"Any Severe Significant (Day 3+)\",\n    \"ANY SEVERE.CIG1\": \"Any Severe CIG1 (Day 3+)\",\n    \"ANY SEVERE.CIG2\": \"Any Severe CIG2 (Day 3+)\",\n    \"ANY SEVERE.CIG3\": \"Any Severe CIG3 (Day 3+)\",\n    \"CATEGORICAL.TSTM\": \"Categorical Thunderstorm Risk (Days 1-3)\",\n    \"CATEGORICAL.MRGL\": \"Categorical Marginal Risk (2015+) (Days 1-3)\",\n    \"CATEGORICAL.SLGT\": \"Categorical Slight Risk (Days 1-3)\",\n    \"CATEGORICAL.ENH\": \"Categorical Enhanced Risk (2015+) (Days 1-3)\",\n    \"CATEGORICAL.MDT\": \"Categorical Moderate Risk (Days 1-3)\",\n    \"CATEGORICAL.HIGH\": \"Categorical High Risk (Days 1-3)\",\n    \"FIRE WEATHER CATEGORICAL.CRIT\": \"Categorical Critical Fire Wx (Days 1-2)\",\n    \"FIRE WEATHER CATEGORICAL.EXTM\": \"Categorical Extreme Fire Wx (Days 1-2)\",\n    \"CRITICAL FIRE WEATHER AREA.0.15\": (\n        \"Critical Fire Weather Area 15% (Days3-7)\"\n    ),\n    \"HAIL.0.05\": \"Hail 5% (Days 1+2)\",\n    \"HAIL.0.15\": \"Hail 15% (Days 1+2)\",\n    \"HAIL.0.25\": \"Hail 25% (Days 1+2)\",\n    \"HAIL.0.30\": \"Hail 30% (Days 1+2)\",\n    \"HAIL.0.35\": \"Hail 35% (Days 1+2)\",\n    \"HAIL.0.45\": \"Hail 45% (Days 1+2)\",\n    \"HAIL.0.60\": \"Hail 60% (Days 1+2)\",\n    \"HAIL.SIGN\": \"Hail Significant (Days 1+2)\",\n    \"HAIL.CIG1\": \"Hail CIG1 (Days 1+2)\",\n    \"HAIL.CIG2\": \"Hail CIG2 (Days 1+2)\",\n    \"HAIL.CIG3\": \"Hail CIG3 (Days 1+2)\",\n    \"TORNADO.0.02\": \"Tornado 2% (Days 1+2)\",\n    \"TORNADO.0.05\": \"Tornado 5% (Days 1+2)\",\n    \"TORNADO.0.10\": \"Tornado 10% (Days 1+2)\",\n    \"TORNADO.0.15\": \"Tornado 15% (Days 1+2)\",\n    \"TORNADO.0.25\": \"Tornado 25% (Days 1+2)\",\n    \"TORNADO.0.30\": \"Tornado 30% (Days 1+2)\",\n    \"TORNADO.0.35\": \"Tornado 35% (Days 1+2)\",\n    \"TORNADO.0.45\": \"Tornado 45% (Days 1+2)\",\n    \"TORNADO.0.60\": \"Tornado 60% (Days 1+2)\",\n    \"TORNADO.SIGN\": \"Tornado Significant (Days 1+2)\",\n    \"TORNADO.CIG1\": \"Tornado CIG1 (Days 1+2)\",\n    \"TORNADO.CIG2\": \"Tornado CIG2 (Days 1+2)\",\n    \"TORNADO.CIG3\": \"Tornado CIG3 (Days 1+2)\",\n    \"WIND.0.05\": \"Wind 5% (Days 1+2)\",\n    \"WIND.0.15\": \"Wind 15% (Days 1+2)\",\n    \"WIND.0.25\": \"Wind 25% (Days 1+2)\",\n    \"WIND.0.30\": \"Wind 30% (Days 1+2)\",\n    \"WIND.0.35\": \"Wind 35% (Days 1+2)\",\n    \"WIND.0.45\": \"Wind 45% (Days 1+2)\",\n    \"WIND.0.60\": \"Wind 60% (Days 1+2)\",\n    \"WIND.0.75\": \"Wind 75% (Days 1+2)\",\n    \"WIND.0.90\": \"Wind 90% (Days 1+2)\",\n    \"WIND.SIGN\": \"Wind Significant (Days 1+2)\",\n    \"WIND.CIG1\": \"Wind CIG1 (Days 1+2)\",\n    \"WIND.CIG2\": \"Wind CIG2 (Days 1+2)\",\n    \"WIND.CIG3\": \"Wind CIG3 (Days 1+2)\",\n}\nPDICT = {\n    \"cwa\": \"Plot by NWS Forecast Office\",\n    \"state\": \"Plot by State/Sector\",\n    \"fema\": \"Plot by FEMA Region\",\n}\nPDICT2 = {\n    \"avg\": \"Average Number of Days per Year\",\n    \"count\": \"Total Number of Days\",\n    \"lastyear\": \"Year of Last Issuance\",\n}\nUNITS = {\n    \"avg\": \"days per year\",\n    \"count\": \"days\",\n    \"lastyear\": \"year\",\n}\nMDICT = {\n    \"all\": \"Entire Year\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\nGRIDWEST = -139.2\nGRIDEAST = -55.1\nGRIDNORTH = 54.51\nGRIDSOUTH = 19.47\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"p\",\n            default=\"3.C.8\",  # day 1 is too slow to default to :(\n            options=ISSUANCE,\n            label=\"Select SPC Product Issuance\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"level\",\n            default=\"CATEGORICAL.SLGT\",\n            options=OUTLOOKS,\n            label=\"Select outlook level:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"t\",\n            default=\"state\",\n            options=PDICT,\n            label=\"Select plot extent type:\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO: (ignored if plotting state)\",\n        ),\n        dict(\n            type=\"csector\",\n            name=\"csector\",\n            default=\"conus\",\n            label=\"Select state/sector to plot\",\n        ),\n        ARG_FEMA,\n        dict(\n            type=\"select\",\n            name=\"drawc\",\n            default=\"no\",\n            options=PDICT5,\n            label=\"Plot County/Parish borders on maps?\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"w\",\n            default=\"avg\",\n            options=PDICT2,\n            label=\"Which metric to plot?\",\n        ),\n        {\n            \"type\": \"date\",\n            \"name\": \"sdate\",\n            \"label\": \"Limit plot to start date (2002 is start):\",\n            \"min\": \"2002/01/01\",\n            \"default\": \"2002/01/01\",\n        },\n        dict(\n            optional=True,\n            type=\"date\",\n            name=\"edate\",\n            label=\"Optionally limit plot to this end date:\",\n            min=\"2002/01/01\",\n            default=utc().strftime(\"%Y/%m/%d\"),\n        ),\n        {\n            \"type\": \"sday\",\n            \"default\": \"0101\",\n            \"optional\": True,\n            \"label\": (\n                \"Limit plot to the inclusive start day of the year.  If this \"\n                \"value is greater than end date, plot will run over winter / \"\n                \"Jan 1.\"\n            ),\n            \"name\": \"sday\",\n        },\n        {\n            \"type\": \"sday\",\n            \"default\": \"1231\",\n            \"optional\": True,\n            \"label\": (\n                \"Limit plot to the inclusive end day of the year.  If this \"\n                \"value is less than start date, plot will run over winter / \"\n                \"Jan 1.\"\n            ),\n            \"name\": \"eday\",\n        },\n        {\n            \"type\": \"float\",\n            \"default\": \"-1\",\n            \"label\": \"Hardcode max value for color ramp, -1 disables\",\n            \"name\": \"max\",\n        },\n        {\n            \"type\": \"cmap\",\n            \"name\": \"cmap\",\n            \"default\": \"jet\",\n            \"label\": \"Color Ramp:\",\n        },\n    ]\n    return desc\n\n\ndef get_raster(ctx: dict):\n    \"\"\"Compute the raster.\"\"\"\n    level = ctx[\"level\"]\n    p = ctx[\"p\"]\n    month = ctx[\"month\"]\n\n    months = month2months(month)\n\n    griddelta = 0.05\n    YSZ = int((GRIDNORTH - GRIDSOUTH) / griddelta)\n    XSZ = int((GRIDEAST - GRIDWEST) / griddelta)\n\n    raster = np.zeros((int(YSZ), int(XSZ)))\n\n    params = {\n        \"ot\": p.split(\".\")[1],\n        \"day\": p.split(\".\")[0],\n        \"t\": level.split(\".\", 1)[1],\n        \"cat\": level.split(\".\")[0],\n        \"months\": months,\n        \"sdate\": ctx[\"sdate\"],\n        \"edate\": ctx.get(\"edate\", utc() + timedelta(days=2)),\n        \"west\": GRIDWEST,\n        \"south\": GRIDSOUTH,\n        \"east\": GRIDEAST,\n        \"north\": GRIDNORTH,\n    }\n\n    hour = p.split(\".\")[2]\n    hour_limiter = \"\"\n    if hour != \"A\":\n        params[\"hour\"] = int(hour)\n        hour_limiter = \" and cycle = :hour \"\n    if ctx.get(\"sday\") and ctx.get(\"eday\"):\n        params[\"sday\"] = f\"{ctx['sday']:%m%d}\"\n        params[\"eday\"] = f\"{ctx['eday']:%m%d}\"\n        hour_limiter = (\n            \" and to_char(issue at time zone 'UTC', 'MMDD') >= :sday and \"\n            \"to_char(issue at time zone 'UTC', 'MMDD') <= :eday \"\n        )\n        if params[\"sday\"] > params[\"eday\"]:\n            hour_limiter = (\n                \" and (to_char(issue at time zone 'UTC', 'MMDD') >= :sday or \"\n                \"to_char(issue at time zone 'UTC', 'MMDD') <= :eday) \"\n            )\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df: pd.DataFrame = gpd.read_postgis(\n            sql_helper(\n                \"\"\"\n            select expire, min(issue) as min_issue,\n            st_union(geom_layers) as geom,\n            min(extract(year from issue at time zone 'UTC')) as year\n            from spc_outlooks where outlook_type = :ot and day = :day\n            {hour_limiter} and threshold = :t and category = :cat and\n            ST_Intersects(geom,\n                ST_MakeEnvelope(:west, :south, :east, :north, 4326))\n            and extract(month from issue) = ANY(:months)\n            and product_issue > :sdate and\n            product_issue < :edate\n            GROUP by expire ORDER by min_issue ASC\n        \"\"\",\n                hour_limiter=hour_limiter,\n            ),\n            conn,\n            params=params,\n            geom_col=\"geom\",\n            index_col=None,\n        )  # type: ignore\n    if df.empty:\n        raise NoDataFound(\"No results found for query\")\n    # The affine is the edge and not the analysis centers\n    affine = Affine(\n        griddelta,\n        0.0,\n        GRIDWEST,\n        0.0,\n        0 - griddelta,\n        GRIDNORTH,\n    )\n    czs = CachingZonalStats(affine)\n    czs.compute_gridnav(df[\"geom\"], raster)\n    for i, nav in enumerate(czs.gridnav):\n        if nav is None:\n            continue\n        grid = np.ones((nav.ysz, nav.xsz))\n        grid[nav.mask] = 0.0\n        jslice = slice(nav.y0, nav.y0 + nav.ysz)\n        islice = slice(nav.x0, nav.x0 + nav.xsz)\n        if ctx[\"w\"] == \"lastyear\":\n            raster[jslice, islice] = np.max(\n                [raster[jslice, islice], grid * df.loc[i][\"year\"]],\n                axis=0,\n            )\n        else:\n            raster[jslice, islice] += grid\n\n    years = (utc() - df[\"min_issue\"].min()).total_seconds() / 365.25 / 86400.0\n    if ctx[\"w\"] == \"avg\":\n        raster = raster / years\n\n    ctx[\"df\"] = df\n\n    return raster, affine, 4326\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    raster, affine, _crs = get_raster(ctx)\n    df: pd.DataFrame = ctx[\"df\"]\n    station = ctx[\"station\"][:4]\n    level = ctx[\"level\"]\n    t = ctx[\"t\"]\n    p = ctx[\"p\"]\n    month = ctx[\"month\"]\n    sday_extra = \"\"\n    if ctx.get(\"sday\") and ctx.get(\"eday\"):\n        sday_extra = f\" [{ctx['sday']:%b %-d} to {ctx['eday']:%b %-d} only]\"\n    subtitle = (\n        f\"Found {len(df.index)} events for CONUS \"\n        f\"between {df['min_issue'].min():%d %b %Y} and \"\n        f\"{df['min_issue'].max():%d %b %Y}{sday_extra}\"\n    )\n    csector = ctx.pop(\"csector\")\n    if t == \"cwa\":\n        sector = \"cwa\"\n        subtitle = (\n            f\"Plotted for {ctx['_nt'].sts[station]['name']} ({station}). \"\n            f\"{subtitle}\"\n        )\n    elif t == \"fema\":\n        sector = \"fema_region\"\n        subtitle = f\"Plotted for FEMA Region {ctx['fema']}. {subtitle}\"\n    else:\n        sector = \"state\" if len(csector) == 2 else csector\n\n    mp = MapPlot(\n        apctx=ctx,\n        sector=sector,\n        state=csector,\n        fema_region=ctx[\"fema\"],\n        cwa=(station if len(station) == 3 else station[1:]),\n        axisbg=\"white\",\n        title=(\n            f\"{'WPC' if p.split('.')[1] == 'E' else 'SPC'} {ISSUANCE[p]} \"\n            f\"Outlook [{MDICT[month]}] of at least \"\n            f\"{OUTLOOKS[level].split('(')[0].strip()}\"\n        ),\n        subtitle=f\"{PDICT2[ctx['w']]}, {subtitle}\",\n        nocaption=True,\n    )\n    if np.nanmax(raster) == 0:\n        raise NoDataFound(\"No Data Found\")\n    if ctx[\"w\"] == \"lastyear\":\n        if np.ma.max(raster) < 1:\n            raster = np.where(raster < 1, np.nan, raster)\n            rng = range(2022, 2024)\n        else:\n            raster = np.where(raster < 1, np.nan, raster)\n            rng = range(int(np.nanmin(raster)), int(np.nanmax(raster)) + 2)\n    elif ctx[\"w\"] == \"count\":\n        maxval = ctx[\"max\"] if ctx[\"max\"] > 0 else (np.nanmax(raster) + 1)\n        raster = np.where(raster < 1, np.nan, raster)\n        rng = np.unique(np.linspace(1, maxval, 10, dtype=int))\n    else:\n        maxval = max(\n            ctx[\"max\"] if ctx[\"max\"] > 0 else (np.nanmax(raster) + 1),\n            0.02,\n        )\n        rng = pretty_bins(0, maxval)\n        if rng[0] > 0.011:\n            rng[0] = 0.01\n\n    cmap = get_cmap(ctx[\"cmap\"])\n    cmap.set_bad(\"white\")\n    cmap.set_under(\"white\")\n    cmap.set_over(\"black\")\n    mp.imshow(\n        raster,\n        affine,\n        \"EPSG:4326\",\n        clevs=rng,\n        cmap=cmap,\n        clip_on=False,\n        units=UNITS[ctx[\"w\"]],\n        extend=\"both\" if ctx[\"w\"] != \"lastyear\" else \"neither\",  # dragons\n    )\n    if ctx[\"drawc\"] == \"yes\":\n        mp.drawcounties()\n\n    return mp.fig\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p201.py",
    "content": "\"\"\"\nThis application presents a calendar of Storm Prediction Center or Weather\nPrediction Center outlooks by state, WFO, or county. The GIS spatial operation\ndone is a simple touches.  So an individual outlook that just barely\nscrapes the selected area would count for this presentation.  Suggestions\nwould be welcome as to how this could be improved.\n\n<p>This app attempts to not double-count outlook days.  A SPC/WPC Outlook\ntechnically crosses two calendar days ending at 12 UTC (~7 AM). This\napplication considers the midnight to ~7 AM period to be for the\nprevious day, which is technically not accurate but the logic that most\npeople expect to see.</p>\n\n<p>When plotting hail, tornado, or wind probabilities, a \"H\" will appear on\ndays that had \"hatched\"/\"SIGNificant\" risk.  A \"C1\", \"C2\", or \"C3\" will appear\nfor days with those conditional risks. Note that this isn't an exact\nscience as the hatched and probability risk are not checked to see if they\nspatially/temporally overlap each other.</p>\n\n<p><strong>Updated 15 July 2025</strong>: An option was added to just plot\na single threshold.  This logic gets a bit tricky as consider an example of\nIowa being engulfed by a moderate risk, but you choose to only plot enhanced\nrisk days.  The plot would show an enhanced risk for that day eventhough\nit was a moderate.</p>\n\"\"\"\n\nimport calendar\nfrom datetime import date, timedelta\n\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.patches import Rectangle\nfrom matplotlib.ticker import MaxNLocator\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import calendar_plot, figure\nfrom pyiem.reference import state_names\n\nfrom iemweb.autoplot import ARG_FEMA\n\nPDICT = {\n    \"C\": \"Convective (Categorical)\",\n    \"H\": \"Convective (Hail)\",\n    \"T\": \"Convective (Tornado)\",\n    \"W\": \"Convective (Wind)\",\n    \"E\": \"Excessive Rainfall\",\n    \"F\": \"Fire Weather\",\n}\nPDICT2 = {\n    \"all\": \"Summarize for CONUS\",\n    \"ugc\": \"Summarize by Selected County/Zone/Parish\",\n    \"state\": \"Summarize by Selected State\",\n    \"wfo\": \"Summarize by Selected WFO\",\n    \"fema\": \"Summarize by FEMA Region\",\n}\nPDICT3 = {\"yes\": \"Yes\", \"no\": \"No\"}\nCOLORS = {\n    \"TSTM\": \"#c0e8c0\",\n    \"MRGL\": \"#66c57d\",\n    \"SLGT\": \"#f6f67b\",\n    \"ENH\": \"#edbf7c\",\n    \"MDT\": \"#f67a7d\",\n    \"HIGH\": \"#ff78ff\",\n    \"ELEV\": \"#ffbb7c\",\n    \"CRIT\": \"#ff787d\",\n    \"EXTM\": \"#ff78ff\",\n    \"0.02\": \"#008b00\",\n    \"0.05\": \"#8b4726\",\n    \"0.10\": \"#ffc800\",\n    \"0.15\": \"#ff0000\",\n    \"0.25\": \"#ff00aa\",\n    \"0.30\": \"#ff00ff\",\n    \"0.35\": \"#ff78ff\",\n    \"0.45\": \"#912cee\",\n    \"0.60\": \"#104e8b\",\n}\nDAYS = {\n    \"1\": \"Day 1\",\n    \"2\": \"Day 2\",\n    \"3\": \"Day 3\",\n    \"4\": \"Day 4\",\n    \"5\": \"Day 5\",\n    \"6\": \"Day 6\",\n    \"7\": \"Day 7\",\n    \"8\": \"Day 8\",\n}\nMDICT = {\n    \"cal\": \"Plot Calendar (limited <= 12 months)\",\n    \"heat\": \"Plot Heatmap (unlimited)\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    jan1 = today.replace(month=1, day=1)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"mode\",\n            default=\"cal\",\n            label=\"Plotting Mode:\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=jan1.strftime(\"%Y/%m/%d\"),\n            label=\"Start Date (inclusive):\",\n            min=\"1987/01/01\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"edate\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            max=(today + timedelta(days=8)).strftime(\"%Y/%m/%d\"),\n            label=\"End Date (inclusive):\",\n            min=\"1987/01/01\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"outlook_type\",\n            options=PDICT,\n            default=\"C\",\n            label=\"Select Outlook Type\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"day\",\n            options=DAYS,\n            default=\"1\",\n            label=\"Select Day Outlook\",\n        ),\n        {\n            \"type\": \"select\",\n            \"label\": \"Optionally only plot this threshold value:\",\n            \"name\": \"just\",\n            \"default\": \"\",\n            \"options\": {\n                \"\": \"All Thresholds\",\n                **{k: k for k in COLORS},\n            },\n        },\n        dict(\n            type=\"select\",\n            name=\"w\",\n            options=PDICT2,\n            default=\"wfo\",\n            label=\"How to summarize data:\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"wfo\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO (when appropriate):\",\n        ),\n        dict(\n            type=\"state\",\n            name=\"mystate\",\n            default=\"IA\",\n            label=\"Select State (when appropriate):\",\n        ),\n        dict(\n            type=\"ugc\",\n            name=\"ugc\",\n            default=\"IAZ048\",\n            label=\"Select UGC Zone/County (when appropriate):\",\n        ),\n        ARG_FEMA,\n        dict(\n            type=\"select\",\n            options=PDICT3,\n            default=\"yes\",\n            name=\"g\",\n            label=\"Include TSTM (general thunder) in generated calendar?\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    sts = ctx[\"sdate\"]\n    ets = ctx[\"edate\"]\n    if ets < sts:\n        sts, ets = ets, sts\n    wfo = ctx[\"wfo\"]\n    outlook_type = ctx[\"outlook_type\"]\n    day = int(ctx[\"day\"])\n    ugc = ctx[\"ugc\"]\n\n    sqllimiter = \"\"\n    category = \"CATEGORICAL\"\n    outlook_type_code = outlook_type\n    if day >= 4 and outlook_type == \"C\":\n        category = \"ANY SEVERE\"\n    elif day >= 3 and outlook_type == \"F\":\n        category = \"CRITICAL FIRE WEATHER AREA\"\n    elif outlook_type == \"F\":\n        category = \"FIRE WEATHER CATEGORICAL\"\n    elif outlook_type == \"H\":\n        outlook_type_code = \"C\"\n        category = \"HAIL\"\n    elif outlook_type == \"T\":\n        outlook_type_code = \"C\"\n        category = \"TORNADO\"\n    elif outlook_type == \"W\":\n        outlook_type_code = \"C\"\n        category = \"WIND\"\n    threshold_filter = \"\"\n    if ctx[\"just\"]:\n        threshold_filter = \" and d.threshold = :just \"\n    if ctx[\"w\"] == \"all\":\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            df = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n            with data as (\n                select outlook_date, threshold from spc_outlooks\n                WHERE category = :category and day = :day and\n                outlook_type = :ot and\n                outlook_date >= :sts and outlook_date <= :ets and\n                threshold not in ('IDRT', 'SDRT')),\n            hatched as (\n                select distinct outlook_date, threshold from data\n                where threshold = ANY(:cigs)\n            ),\n            agg as (\n                select outlook_date, d.threshold, priority,\n                rank() OVER (PARTITION by outlook_date ORDER by priority DESC)\n                from data d JOIN spc_outlook_thresholds t\n                on (d.threshold = t.threshold) WHERE\n                not (d.threshold = ANY(:cigs)) {threshold_filter})\n\n            SELECT distinct a.outlook_date as date, a.threshold,\n            case when h.threshold = ANY(:cigs) then true else false end as sign\n            from agg a LEFT JOIN hatched h on (a.outlook_date = h.outlook_date)\n            where rank = 1 ORDER by a.outlook_date ASC\n            \"\"\",\n                    threshold_filter=threshold_filter,\n                ),\n                conn,\n                params={\n                    \"category\": category,\n                    \"day\": day,\n                    \"ot\": outlook_type_code,\n                    \"sts\": sts,\n                    \"ets\": ets,\n                    \"just\": ctx[\"just\"],\n                    \"cigs\": [\"SIGN\", \"CIG1\", \"CIG2\", \"CIG3\"],\n                },\n                index_col=\"date\",\n                parse_dates=[\n                    \"date\",\n                ],\n            )\n        title2 = \"Contiguous US\"\n    else:\n        if ctx[\"w\"] == \"wfo\":\n            table = \"cwa\"\n            abbrcol = \"wfo\"\n            geoval = wfo\n            geomcol = \"the_geom\"\n            if wfo not in ctx[\"_nt\"].sts:\n                raise NoDataFound(\"Unknown station metadata.\")\n            title2 = f\"NWS {ctx['_nt'].sts[wfo]['name']} [{wfo}]\"\n        elif ctx[\"w\"] == \"ugc\":\n            table = \"ugcs\"\n            abbrcol = \"ugc\"\n            geomcol = \"simple_geom\"\n            geoval = ugc\n            sqllimiter = \" and t.end_ts is null \"\n            cursor = get_dbconn(\"postgis\").cursor()\n            cursor.execute(\n                \"SELECT name from ugcs where ugc = %s and end_ts is null \"\n                \"LIMIT 1\",\n                (ugc,),\n            )\n            name = \"Unknown\"\n            if cursor.rowcount == 1:\n                name = cursor.fetchone()[0]\n            title2 = f\"{'County' if ugc[2] == 'C' else 'Zone'} [{ugc}] {name}\"\n        elif ctx[\"w\"] == \"fema\":\n            table = \"fema_regions\"\n            abbrcol = \"region\"\n            geomcol = \"geom\"\n            geoval = ctx[\"fema\"]\n            title2 = f\"FEMA Region {ctx['fema']}\"\n        else:\n            table = \"states\"\n            geomcol = \"the_geom\"\n            abbrcol = \"state_abbr\"\n            geoval = ctx[\"mystate\"]\n            title2 = state_names[ctx[\"mystate\"]]\n\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            df = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n            with data as (\n                select outlook_date, threshold from\n                spc_outlooks o, {table} t\n                WHERE t.{abbrcol} = :geoval and category = :category\n                and ST_Intersects(st_buffer(o.geom, 0), t.{geomcol})\n                and o.day = :day and o.outlook_type = :ot and\n                outlook_date >= :sts\n                and outlook_date <= :ets {sqllimiter}),\n            hatched as (\n                select distinct outlook_date, threshold from data\n                where threshold = ANY(:cigs)\n            ),\n            agg as (\n                select outlook_date, d.threshold, priority,\n                rank() OVER (PARTITION by outlook_date ORDER by priority DESC)\n                from data d JOIN spc_outlook_thresholds t\n                on (d.threshold = t.threshold) WHERE\n                not (d.threshold = ANY(:cigs)) {threshold_filter})\n\n            SELECT distinct a.outlook_date as date, a.threshold,\n            case when h.threshold = ANY(:cigs) then true else false end as sign\n            from agg a LEFT JOIN hatched h on (a.outlook_date = h.outlook_date)\n            where rank = 1 ORDER by a.outlook_date ASC\n            \"\"\",\n                    table=table,\n                    sqllimiter=sqllimiter,\n                    geomcol=geomcol,\n                    abbrcol=abbrcol,\n                    threshold_filter=threshold_filter,\n                ),\n                conn,\n                params={\n                    \"geoval\": geoval,\n                    \"category\": category,\n                    \"day\": day,\n                    \"ot\": outlook_type_code,\n                    \"sts\": sts,\n                    \"ets\": ets,\n                    \"just\": ctx[\"just\"],\n                    \"cigs\": [\"SIGN\", \"CIG1\", \"CIG2\", \"CIG3\"],\n                },\n                index_col=\"date\",\n                parse_dates=\"date\",\n            )\n\n    data = {}\n    now = sts\n    while now <= ets:\n        data[now] = {\"val\": \" \"}\n        now += timedelta(days=1)\n    aggtxt = []\n    sumtxt = []\n    if not df.empty:\n        df2 = (\n            df.reset_index()\n            .groupby(\"threshold\")\n            .last()\n            .assign(\n                days=lambda df_: (pd.Timestamp(ets) - df_[\"date\"]).dt.days,\n            )\n        )\n        for thres, row in df2.iterrows():\n            if thres in COLORS:\n                aggtxt.append(f\"{thres} {row['days']}\")\n                sumtxt.append(f\"{thres} {len(df[df['threshold'] == thres])}\")\n    cigref = {\"SIGN\": \"H\", \"CIG1\": \"C1\", \"CIG2\": \"C2\", \"CIG3\": \"C3\"}\n    for dt, row in df.iterrows():\n        if row[\"threshold\"] == \"TSTM\" and ctx.get(\"g\", \"yes\") == \"no\":\n            continue\n        data[dt.to_pydatetime().date()] = {\n            \"val\": f\"{row['threshold']}{cigref.get(row['threshold'], '')}\",\n            \"cellcolor\": COLORS.get(row[\"threshold\"], \"#EEEEEE\"),\n        }\n    jj = f\"Only {ctx['just']}\" if ctx[\"just\"] else \"Highest\"\n    title = (\n        f\"{jj} {'WPC' if outlook_type == 'E' else 'SPC'} Day \"\n        f\"{day} {PDICT[outlook_type]} Outlook for {title2}\"\n    )\n    subtitle = (\n        f\"Valid {sts:%d %b %Y} - {ets:%d %b %Y}. \"\n        f\"Days since: {', '.join(aggtxt)}. Total Days: {', '.join(sumtxt)}\"\n    )\n    if outlook_type in [\"H\", \"W\", \"T\"]:\n        subtitle += \", H/C denotes SIGN/CIG\"\n    if ctx[\"mode\"] == \"cal\":\n        fig = calendar_plot(\n            sts,\n            ets,\n            data,\n            apctx=ctx,\n            title=title,\n            subtitle=subtitle,\n        )\n    else:\n        fig = figure(apctx=ctx, title=title, subtitle=subtitle)\n        ax = fig.add_axes((0.05, 0.15, 0.9, 0.75))\n        data = np.ones((ets.year - sts.year + 1, 366)) * -1\n        thresholds = list(COLORS.keys())\n        for dt, row in df.iterrows():\n            if dt > pd.Timestamp(ets):\n                continue\n            if row[\"threshold\"] == \"TSTM\" and ctx.get(\"g\", \"yes\") == \"no\":\n                continue\n            if row[\"threshold\"] in thresholds:\n                y = dt.year - sts.year\n                x = int(dt.strftime(\"%j\"))\n                data[y, x - 1] = thresholds.index(row[\"threshold\"])\n\n        cmap = mpcolors.ListedColormap(list(COLORS.values()))\n        cmap.set_under(\"#FFF\")\n        boundaries = np.arange(-0.5, len(COLORS), 1)\n        norm = mpcolors.BoundaryNorm(boundaries, cmap.N)\n        ax.imshow(\n            data,\n            aspect=\"auto\",\n            interpolation=\"None\",\n            extent=(0, 366, ets.year + 0.5, sts.year - 0.5),\n            cmap=cmap,\n            norm=norm,\n        )\n        rects = []\n        rlabels = []\n        uvals = df[\"threshold\"].unique().tolist()\n        for thres, color in COLORS.items():\n            if thres in uvals:\n                rlabels.append(thres)\n                rects.append(Rectangle((0, 0), 1, 1, fc=color))\n        ax.legend(\n            rects,\n            rlabels,\n            ncol=10,\n            loc=(0, -0.1),\n        )\n        ax.set_xticks([0, 30, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334])\n        ax.set_xticklabels(calendar.month_abbr[1:])\n        ax.grid()\n        ax.yaxis.set_major_locator(MaxNLocator(min_n_ticks=1, integer=True))\n\n    # Condition the dataframe\n    df = df.reindex(\n        pd.date_range(sts, ets, freq=\"D\", name=\"date\"), fill_value=\"NONE\"\n    ).reset_index()\n    df[\"date\"] = df[\"date\"].dt.strftime(\"%Y-%m-%d\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p202.py",
    "content": "\"\"\"\nThis application presents daily comparisons of an\nautomation station's hourly data.  You pick two hours of your choice and\nthe application will compute the difference between the two.  The hours\nselected are for the local time zone of the station.  The comparison is\nmade between the first hour and the subsequent second hour.  If the first\nhour is less than the second, the comparison is made on the same calendar\nday.  If the second hour is less than the first, then the second hour is\ntaken from the next day.\n\n<p>The chart displays a two dimensional histogram / heatmap underneath\nthe plotted lines covering the period of record data.\n\"\"\"\n\nimport calendar\nfrom datetime import date, datetime\n\nimport matplotlib.colors as mpcolors\nimport metpy.calc as mcalc\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.colorbar import ColorbarBase\nfrom metpy.units import units\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes, get_cmap, pretty_bins\n\nPDICT = {\n    \"tmpf\": \"Air Temperature [°F]\",\n    \"dwpf\": \"Dew Point Temperature [°F]\",\n    \"relh\": \"Relative Humidity [%]\",\n    \"q\": \"Specific Humidity [g/kg]\",\n}\nPDICT2 = {\n    \"no\": \"Plot Daily Differences\",\n    \"yes\": \"Accumulate the Daily Differences\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(type=\"hour\", name=\"h1\", default=6, label=\"First Hour:\"),\n        dict(\n            type=\"hour\",\n            name=\"h2\",\n            default=18,\n            label=\"Second (subsequent) Hour:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"y1\",\n            default=date.today().year,\n            label=\"Year to highlight in chart:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"y2\",\n            default=date.today().year,\n            label=\"Additional Year to plot (optional):\",\n            optional=True,\n        ),\n        dict(\n            type=\"year\",\n            name=\"y3\",\n            default=date.today().year,\n            label=\"Additional Year to plot (optional)\",\n            optional=True,\n        ),\n        dict(\n            type=\"year\",\n            name=\"y4\",\n            default=date.today().year,\n            label=\"Additional Year to plot (optional)\",\n            optional=True,\n        ),\n        dict(\n            type=\"select\",\n            name=\"v\",\n            default=\"tmpf\",\n            label=\"Variable to Compare:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"no\",\n            label=\"Accumulate the daily plot?\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"int\",\n            name=\"smooth\",\n            default=14,\n            label=\"Centered smooth of data over given days\",\n            ge=1,\n            le=60,\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"binary\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    h1 = int(ctx[\"h1\"])\n    h2 = int(ctx[\"h2\"])\n    varname = ctx[\"v\"]\n\n    tzname = ctx[\"_nt\"].sts[station][\"tzname\"]\n\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH data as (\n            SELECT valid at time zone :tzname + '10 minutes'::interval\n                as localvalid,\n            date_trunc(\n                'hour', valid at time zone :tzname  + '10 minutes'::interval)\n                as v,\n            tmpf, dwpf, sknt, drct, alti, relh, random() as r,\n            coalesce(mslp, alti * 33.8639, 1013.25) as slp\n            from alldata where station = :station and report_type = 3\n            and extract(hour from\n            valid at time zone :tzname + '10 minutes'::interval)\n            in (:h1, :h2)),\n        agg as (\n            select *, extract(hour from v) as hour,\n            rank() OVER (PARTITION by v ORDER by localvalid ASC, r ASC)\n            from data\n        )\n\n        SELECT *, date(\n            case when hour = :h3\n            then date(v - '1 day'::interval)\n            else date(v) end) from agg WHERE rank = 1\n        \"\"\"),\n            conn,\n            params={\n                \"tzname\": tzname,\n                \"station\": station,\n                \"h1\": h1,\n                \"h2\": h2,\n                \"h3\": h2 if h2 < h1 else -1,\n            },\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No data was found.\")\n    if varname == \"q\":\n        df[\"pressure\"] = mcalc.add_height_to_pressure(\n            df[\"slp\"].values * units(\"millibars\"),\n            ctx[\"_nt\"].sts[station][\"elevation\"] * units(\"m\"),\n        ).to(units(\"millibar\"))\n        # compute mixing ratio\n        df[\"q\"] = (\n            mcalc.mixing_ratio_from_relative_humidity(\n                df[\"pressure\"].values * units(\"millibars\"),\n                df[\"tmpf\"].values * units(\"degF\"),\n                df[\"relh\"].values * units(\"percent\"),\n            )\n            * 1000.0\n        )\n\n    # pivot\n    df = df.pivot(index=\"date\", columns=\"hour\", values=varname).reset_index()\n    df = df.dropna()\n    df[\"doy\"] = pd.to_datetime(df[\"date\"]).dt.dayofyear\n    df[\"year\"] = pd.to_datetime(df[\"date\"]).dt.year\n    df[\"week\"] = (df[\"doy\"] / 7).astype(int)\n    df[\"delta\"] = df[h2] - df[h1]\n\n    sts = datetime(2000, 6, 1, h1)\n    ets = datetime(2000, 6, 1, h2)\n    sd = \"same day\" if h2 > h1 else \"previous day\"\n    subtitle = f\"{ets:%-I %p} minus {sts:%-I %p} ({sd}) (timezone: {tzname})\"\n    total_years = df[\"year\"].max() - df[\"year\"].min()\n    title = (\n        f\"{ctx['_sname']}:: {PDICT[varname]} Difference \"\n        f\"({df['year'].min():.0f}-{df['year'].max():.0f})\"\n    )\n    (fig, ax) = figure_axes(apctx=ctx, title=title, subtitle=subtitle)\n    if ctx[\"opt\"] == \"no\":\n        ax.set_xlabel(\n            f\"Plotted lines are smoothed over {ctx['smooth']:.0f} days\"\n        )\n    ast = \"Accumulated Sum\" if ctx[\"opt\"] == \"yes\" else \"\"\n    ax.set_ylabel(f\"{PDICT[varname]} {ast} Difference\")\n\n    if ctx[\"opt\"] == \"no\":\n        # Find a reasonable ymin that gets most of the data\n        ymax = df[\"delta\"].abs().describe(percentiles=[0.95])[\"95%\"]\n        # Histogram\n        dy = 0.25 if ctx[\"v\"] == \"q\" else 1.0\n        H, xedges, yedges = np.histogram2d(\n            df[\"doy\"].to_numpy(),\n            df[\"delta\"].to_numpy(),\n            bins=(\n                np.arange(0, 366, 7),\n                np.arange(-ymax - 0.5, ymax + 0.5, dy),\n            ),\n        )\n        cmap = get_cmap(ctx[\"cmap\"])\n        cmap.set_under(\"tan\")\n        # Days per year / 7\n        data = H.transpose() / 7.0 / total_years\n        bins = pretty_bins(0, np.max(data))\n        norm = mpcolors.BoundaryNorm(bins, cmap.N)\n        ax.set_position([0.13, 0.1, 0.71, 0.78])\n        ax.pcolormesh(\n            xedges,\n            yedges,\n            np.where(data > 0, data, -1),\n            cmap=cmap,\n            norm=norm,\n            alpha=0.5,\n        )\n        ax.set_ylim(0 - ymax, 0 + ymax)\n        cax = fig.add_axes(\n            [0.86, 0.12, 0.03, 0.75], frameon=False, yticks=[], xticks=[]\n        )\n        cb = ColorbarBase(cax, norm=norm, cmap=cmap, extend=\"min\")\n        cb.set_label(\"Days/Year\")\n\n    # Plot an average line\n    gdf = (\n        df.groupby(\"doy\")\n        .mean(numeric_only=True)\n        .rolling(ctx[\"smooth\"], min_periods=1, center=True)\n        .mean()\n    )\n    y = gdf[\"delta\"] if ctx[\"opt\"] == \"no\" else gdf[\"delta\"].cumsum()\n    ax.plot(\n        gdf.index.values,\n        y,\n        label=\"Average\",\n        zorder=6,\n        lw=2,\n        color=\"k\",\n        linestyle=\"-.\",\n    )\n\n    # Plot selected year\n    for i in range(1, 5):\n        year = ctx.get(f\"y{i}\")\n        if year is None:\n            continue\n        df2 = df[df[\"year\"] == year]\n        if not df2.empty:\n            gdf = (\n                df2.groupby(\"doy\")\n                .mean(numeric_only=True)\n                .rolling(ctx[\"smooth\"], min_periods=1, center=True)\n                .mean()\n            )\n            y = gdf[\"delta\"] if ctx[\"opt\"] == \"no\" else gdf[\"delta\"].cumsum()\n            ax.plot(gdf.index.values, y, label=str(year), lw=2, zorder=10)\n\n    ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_xlim(1, 366)\n    ax.grid(True)\n    ax.legend(loc=\"best\", ncol=5)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p203.py",
    "content": "\"\"\"\nThis application generates a visual summary of polygons issued for a given\nUTC date.\n\n<p>Due to the plot's oblong nature, there is no present way to control the\nplot's resolution.\n\"\"\"\n\nimport os\nfrom datetime import date, timedelta\nfrom io import StringIO\n\nimport geopandas as gpd\nimport matplotlib.image as mpimage\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.nws.vtec import VTEC_PHENOMENA\nfrom pyiem.plot import figure\nfrom pyiem.plot.util import fitbox\nfrom pyiem.util import utc\n\nfrom iemweb.mlib import rectify_wfo\n\nPDICT = {\n    \"W\": \"By Issuance Center\",\n    \"S\": \"By Polygon Size\",\n    \"T\": \"By Issuance Time\",\n}\nPDICT2 = {\n    \"W\": \"Tornado + Severe Thunderstorm Warnings\",\n    \"F\": \"Flash Flood Warnings\",\n    \"M\": \"Marine Warnings\",\n}\nCOLORS = {\"SV\": \"#ffff00\", \"TO\": \"#ff0000\", \"FF\": \"#00ff00\", \"MA\": \"#00ff00\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\n        \"description\": __doc__,\n        \"data\": True,\n        \"text\": True,\n        \"defaults\": {\"_r\": None},\n        \"cache\": 600,\n        \"plotmetadata\": False,\n        \"gallery\": {\n            \"date\": \"2024-05-05\",  # pick a date with not too many\n        },\n    }\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            options=PDICT2,\n            default=\"W\",\n            name=\"typ\",\n            label=\"Which warning types to plot?\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"W\",\n            name=\"sort\",\n            label=\"How to sort plotted polygons:\",\n        ),\n        dict(\n            type=\"date\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            name=\"date\",\n            label=\"UTC Date to Plot Polygons for:\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    typ = ctx[\"typ\"]\n    sort = ctx[\"sort\"]\n    dt = ctx[\"date\"]\n\n    sts = utc(dt.year, dt.month, dt.day)\n    ets = sts + timedelta(hours=24)\n\n    opts = {\n        \"W\": {\n            \"fnadd\": \"-wfo\",\n            \"sortby\": \"wfo ASC, phenomena ASC, eventid ASC\",\n        },\n        \"S\": {\"fnadd\": \"\", \"sortby\": \"size DESC\"},\n        \"T\": {\"fnadd\": \"-time\", \"sortby\": \"issue ASC\"},\n    }\n    phenoms = {\"W\": [\"TO\", \"SV\"], \"F\": [\"FF\"], \"M\": [\"MA\"]}\n\n    # Defaults\n    thumbpx = 100\n    cols = 10\n    mybuffer = 10000\n    header = 35\n\n    params = {\n        \"year\": sts.year,\n        \"sts\": sts,\n        \"ets\": ets,\n        \"phenomena\": phenoms[typ],\n    }\n\n    # Find largest polygon either in height or width\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        gdf: pd.DataFrame = gpd.read_postgis(\n            sql_helper(\n                \"\"\"\n            SELECT wfo, phenomena, eventid, issue,\n            ST_area2d(ST_transform(geom,9311)) as size,\n            (ST_xmax(ST_transform(geom,9311)) +\n            ST_xmin(ST_transform(geom,9311))) /2.0 as xc,\n            (ST_ymax(ST_transform(geom,9311)) +\n            ST_ymin(ST_transform(geom,9311))) /2.0 as yc,\n            ST_transform(geom, 9311) as utmgeom,\n            (ST_xmax(ST_transform(geom,9311)) -\n            ST_xmin(ST_transform(geom,9311))) as width,\n            (ST_ymax(ST_transform(geom,9311)) -\n            ST_ymin(ST_transform(geom,9311))) as height\n            from sbw\n            WHERE vtec_year = :year and\n            status = 'NEW' and issue >= :sts and issue < :ets and\n            phenomena = ANY(:phenomena) and eventid is not null\n            ORDER by {sortby}\n        \"\"\",\n                sortby=opts[sort][\"sortby\"],\n            ),\n            conn,\n            params=params,\n            geom_col=\"utmgeom\",\n            index_col=None,\n        )  # type: ignore\n\n        # For size reduction work\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT w.wfo, phenomena, eventid,\n            sum(ST_area2d(ST_transform(u.geom,9311))) as county_size\n            from warnings w JOIN ugcs u on (u.gid = w.gid)\n            WHERE vtec_year = :year and issue >= :sts and issue < :ets and\n            significance = 'W' and phenomena = ANY(:phenomena)\n            GROUP by w.wfo, phenomena, eventid\n        \"\"\"\n            ),\n            conn,\n            params=params,\n            index_col=[\"wfo\", \"phenomena\", \"eventid\"],\n        )\n    # Join the columns\n    gdf = gdf.merge(df, on=[\"wfo\", \"phenomena\", \"eventid\"])\n    gdf[\"ratio\"] = (1.0 - (gdf[\"size\"] / gdf[\"county_size\"])) * 100.0\n\n    # Make mosaic image\n    events = len(df.index)\n    rows = int(events / cols) + 1\n    if events % cols == 0:\n        rows -= 1\n    if rows == 0:\n        rows = 1\n    ypixels = (rows * thumbpx) + header\n    fig = figure(figsize=(thumbpx * cols / 100.0, ypixels / 100.0), apctx=ctx)\n    fig.add_axes([0, 0, 1, 1], facecolor=\"black\")\n\n    imagemap = StringIO()\n    utcnow = utc()\n    imagemap.write(\n        \"<!-- %s %s -->\\n\" % (utcnow.strftime(\"%Y-%m-%d %H:%M:%S\"), sort)\n    )\n    imagemap.write(\"<map name='mymap'>\\n\")\n\n    # Write metadata to image\n    mydir = os.sep.join(\n        [\n            os.path.dirname(os.path.abspath(__file__)),\n            \"../../../../htdocs/images\",\n        ]\n    )\n    logo = mpimage.imread(f\"{mydir}/logo_reallysmall.png\")\n    y0 = fig.get_figheight() * 100.0 - logo.shape[0] - 5\n    fig.figimage(logo, 5, y0, zorder=3)\n\n    i = 0\n    # amount of NDC y space we have for axes plotting\n    ytop = 1 - header / float((rows * 100) + header)\n    dy = ytop / float(rows)\n    ybottom = ytop\n\n    # Sumarize totals\n    y = ytop\n    dy2 = (1.0 - ytop) / 2.0\n    for phenomena, df2 in gdf.groupby(\"phenomena\"):\n        car = (1.0 - df2[\"size\"].sum() / df2[\"county_size\"].sum()) * 100.0\n        fitbox(\n            fig,\n            (\"%i %s.W: Avg size %5.0f km^2 CAR: %.0f%%\")\n            % (len(df2.index), phenomena, df2[\"size\"].mean() / 1e6, car),\n            0.8,\n            0.99,\n            y,\n            y + dy2,\n            color=COLORS[phenomena],\n        )\n        y += dy2\n\n    fitbox(\n        fig,\n        \"NWS %s Storm Based Warnings issued %s UTC\"\n        % (\n            \" + \".join([VTEC_PHENOMENA[p] for p in phenoms[typ]]),\n            sts.strftime(\"%d %b %Y\"),\n        ),\n        0.05,\n        0.79,\n        ytop + dy2,\n        0.999,\n        color=\"white\",\n    )\n    fitbox(\n        fig,\n        \"Generated: %s UTC, IEM Autplot #203\"\n        % (utcnow.strftime(\"%d %b %Y %H:%M:%S\"),),\n        0.05,\n        0.79,\n        ytop,\n        0.999 - dy2,\n        color=\"white\",\n    )\n    # We want to reserve 14pts at the bottom and buffer the plot by 10km\n    # so we compute this in the y direction, since it limits us\n    max_dimension = max([gdf[\"width\"].max(), gdf[\"height\"].max()])\n    yspacing = max_dimension / 2.0 + mybuffer\n    xspacing = yspacing * 1.08  # approx\n\n    for _, row in gdf.iterrows():\n        # - Map each polygon\n        x0 = float(row[\"xc\"]) - xspacing\n        x1 = float(row[\"xc\"]) + xspacing\n        y0 = float(row[\"yc\"]) - yspacing - (yspacing * 0.14)\n        y1 = float(row[\"yc\"]) + yspacing - (yspacing * 0.14)\n\n        col = i % 10\n        if col == 0:\n            ybottom -= dy\n        ax = fig.add_axes(\n            [col * 0.1, ybottom, 0.1, dy],\n            facecolor=\"black\",\n            xticks=[],\n            yticks=[],\n            aspect=\"auto\",\n        )\n        for x in ax.spines:\n            ax.spines[x].set_visible(False)\n        ax.set_xlim(x0, x1)\n        ax.set_ylim(y0, y1)\n        for poly in row[\"utmgeom\"].geoms:\n            xs, ys = poly.exterior.xy\n            color = COLORS[row[\"phenomena\"]]\n            ax.plot(xs, ys, color=color, lw=2)\n\n        car = \"NA\"\n        carColor = \"white\"\n        if not pd.isnull(row[\"ratio\"]):\n            carf = row[\"ratio\"]\n            car = \"%.0f\" % (carf,)\n            if carf > 75:\n                carColor = \"green\"\n            if carf < 25:\n                carColor = \"red\"\n\n        # Draw Text!\n        issue = row[\"issue\"]\n        s = \"%s.%s.%s.%s\" % (\n            row[\"wfo\"],\n            row[\"phenomena\"],\n            row[\"eventid\"],\n            issue.strftime(\"%H%M\"),\n        )\n        ax.text(\n            0,\n            0,\n            s,\n            transform=ax.transAxes,\n            color=\"white\",\n            va=\"bottom\",\n            fontsize=7,\n        )\n        s = \"%.0f sq km %s%%\" % (row[\"size\"] / 1000000.0, car)\n        ax.text(\n            0,\n            0.1,\n            s,\n            transform=ax.transAxes,\n            color=carColor,\n            va=\"bottom\",\n            fontsize=7,\n        )\n\n        # Image map\n        url = (\n            \"/vtec/?year=%s&wfo=%s&phenomena=%s&significance=%s&eventid=%04i\"\n        ) % (\n            sts.year,\n            rectify_wfo(row[\"wfo\"]),\n            row[\"phenomena\"],\n            \"W\",\n            row[\"eventid\"],\n        )\n        altxt = \"Click for text/image\"\n        pos = ax.get_position()\n        mx0 = pos.x0 * 1000.0\n        my = (1.0 - pos.y1) * ypixels\n        imagemap.write(\n            (\n                '<area href=\"%s\" alt=\"%s\" title=\"%s\" '\n                'shape=\"rect\" coords=\"%.0f,%.0f,%.0f,%.0f\">\\n'\n            )\n            % (url, altxt, altxt, mx0, my, mx0 + thumbpx, my + thumbpx)\n        )\n        i += 1\n\n    faux = fig.add_axes([0, 0, 1, 1], facecolor=\"None\", zorder=100)\n    for i in range(1, rows):\n        faux.axhline(i * dy, lw=1.0, color=\"blue\")\n\n    imagemap.write(\"</map>\")\n    imagemap.seek(0)\n\n    if gdf.empty:\n        fitbox(fig, \"No warnings Found!\", 0.2, 0.8, 0.2, 0.5, color=\"white\")\n\n    return fig, gdf.drop(columns=[\"utmgeom\", \"issue\"]), imagemap.read()\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p204.py",
    "content": "\"\"\"\nThis app generates a heatmap-like presentation of daily climate data\nof your choice.  In the case of 'Trailing XX Days', you will want to set\na trailing number of days to evaluate the metric for.\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes, get_cmap\nfrom seaborn import heatmap\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"trail_precip_percent\": \"Trailing XX Days Precip Percent of Average\",\n    \"daily_high_depart\": \"Daily High Temperature Departure\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    today = date.today()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            options=PDICT,\n            default=\"trail_precip_percent\",\n            name=\"var\",\n            label=\"Available variables to plot:\",\n        ),\n        ARG_STATION,\n        dict(\n            type=\"int\",\n            name=\"days\",\n            default=\"31\",\n            label=\"Trailing Number of Days (when appropriate):\",\n        ),\n        dict(\n            type=\"year\",\n            default=(today.year - 20),\n            label=\"Start Year of Plot:\",\n            name=\"syear\",\n        ),\n        dict(\n            type=\"year\",\n            default=today.year,\n            label=\"End Year (inclusive) of Plot:\",\n            name=\"eyear\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"RdBu\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            select day, sday, precip, high,\n            extract(doy from day)::int as doy,\n            year from alldata WHERE station = :station ORDER by day ASC\n            \"\"\"),\n            conn,\n            params={\"station\": ctx[\"station\"]},\n            index_col=\"day\",\n            parse_dates=\"day\",\n        )\n    if df.empty:\n        raise NoDataFound(\"Did not find any data for station!\")\n    if ctx[\"var\"] == \"trail_precip_percent\":\n        climo = df[[\"precip\", \"sday\"]].groupby(\"sday\").mean()\n        df[\"precip_avg\"] = df.merge(\n            climo, left_on=\"sday\", right_index=True, suffixes=(\"\", \"_avg\")\n        )[\"precip_avg\"]\n        df[\"trail_precip_percent\"] = (\n            df[\"precip\"].rolling(ctx[\"days\"]).sum()\n            / df[\"precip_avg\"].rolling(ctx[\"days\"]).sum()\n            * 100.0\n        )\n        levels = [0, 25, 50, 75, 100, 150, 200, 250, 300]\n        label = \"Percent\"\n    else:  # daily_high_depart\n        climo = df[[\"high\", \"sday\"]].groupby(\"sday\").mean()\n        df[\"high_avg\"] = df.merge(\n            climo, left_on=\"sday\", right_index=True, suffixes=(\"\", \"_avg\")\n        )[\"high_avg\"]\n        df[\"daily_high_depart\"] = df[\"high\"] - df[\"high_avg\"]\n        levels = list(range(-20, 21, 4))\n        label = \"Temperature [°F] Departure\"\n\n    baseyear = max([df[\"year\"].min(), ctx[\"syear\"]])\n    endyear = min([df[\"year\"].max(), ctx[\"eyear\"]])\n    years = endyear - baseyear + 1\n    if years < 1:\n        raise NoDataFound(\"Station data does not exist for the period picked.\")\n    cmap = get_cmap(ctx[\"cmap\"])\n    norm = mpcolors.BoundaryNorm(levels, cmap.N)\n    data = np.full((years, 366), np.nan)\n    df2 = df[(df[\"year\"] >= baseyear) & (df[\"year\"] <= endyear)]\n    for day, row in df2.iterrows():\n        data[day.year - baseyear, row[\"doy\"] - 1] = row[ctx[\"var\"]]\n\n    title = (\n        f\"{ctx['_sname']} ({ctx['syear']}-{ctx['eyear']})\\n\"\n        f\"{PDICT[ctx['var']].replace('XX', str(ctx['days']))}\"\n    )\n    fig, ax = figure_axes(title=title, apctx=ctx)\n    heatmap(\n        data,\n        cmap=cmap,\n        norm=norm,\n        ax=ax,\n        cbar_kws={\"spacing\": \"proportional\", \"label\": label},\n    )\n    ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax.set_xticklabels(calendar.month_abbr[1:], rotation=0)\n    yticks = []\n    yticklabels = []\n    delta = 5 if (endyear - baseyear) < 30 else 10\n    for i, year in enumerate(range(baseyear, endyear + 1)):\n        if year % delta == 0:\n            yticks.append(i + 0.5)\n            yticklabels.append(year)\n    ax.set_yticks(yticks[::-1])\n    ax.set_yticklabels(yticklabels[::-1], rotation=0)\n    ax.xaxis.grid(True, color=\"k\")\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p205.py",
    "content": "\"\"\"\nThe IEM computes daily summaries of ASOS station\ndata based on available station summaries and computed summaries based\non available hourly data.  This chart presents the frequency combination\nof one or more variables.  Please let us know if you want additional\nfields added to this tool.\n\"\"\"\n\nimport calendar\nimport itertools\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"station\",\n            default=\"DSM\",\n            label=\"Select Station\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"max_tmpf_above\",\n            default=90,\n            optional=True,\n            label=\"Daily Max Temperature Above (threshold F): [optional]\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"min_tmpf_below\",\n            default=70,\n            optional=True,\n            label=\"Daily Min Temperature Below (threshold F): [optional]\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"max_feel_above\",\n            default=90,\n            optional=True,\n            label=\"Daily Max Feels Like Temp Above (threshold F): [optional]\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"min_feel_below\",\n            default=0,\n            optional=True,\n            label=\"Daily Min Feels Like Temp Below (threshold F): [optional]\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"max_dwpf_below\",\n            default=50,\n            optional=True,\n            label=\"Daily Maximum Dewpoint Below (threshold F): [optional]\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"max_dwpf_above\",\n            default=70,\n            optional=True,\n            label=\"Daily Maximum Dewpoint Above (threshold F): [optional]\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"max_rh_below\",\n            default=50,\n            optional=True,\n            label=\"Daily Maximum Relative Humidity Below (%): [optional]\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"avg_smph_below\",\n            default=10,\n            optional=True,\n            label=\"Daily Average Wind Speed Below (threshold MPH): [optional]\",\n        ),\n        {\n            \"type\": \"int\",\n            \"name\": \"max_gust_above\",\n            \"default\": 50,\n            \"optional\": True,\n            \"label\": \"Daily Max Wind Gust Above (threshold MPH): [optional]\",\n        },\n        dict(\n            type=\"text\",\n            name=\"max_tmpf_range\",\n            default=\"70 to 79\",\n            optional=True,\n            label=\"Daily Max Temperature Inclusive Range (deg F): [optional]\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    params = []\n    labels = {\"all_hit\": \"All Combined\"}\n    for ez in (\n        \"max_rh_below max_feel_above min_feel_below max_dwpf_below \"\n        \"max_tmpf_above max_dwpf_above min_tmpf_below\"\n    ).split():\n        val = ctx.get(ez)\n        if val is None:\n            continue\n        col, op = ez.rsplit(\"_\", 1)\n        units = \"%\" if col.endswith(\"rh\") else \"F\"\n        op = \">=\" if op == \"above\" else \"<\"\n        params.append(\n            f\"case when {col} {op} {val:.0f} then 1 else 0 end as {ez}_hit\"\n        )\n        labels[f\"{ez}_hit\"] = f\"{col} {op} {val:.0f} {units}\"\n    if ctx.get(\"max_tmpf_range\"):\n        tokens = [int(i) for i in ctx[\"max_tmpf_range\"].split(\"to\")]\n        params.append(\n            f\"case when max_tmpf::int >= {tokens[0]} and \"\n            f\"max_tmpf::int <= {tokens[1]} then 1 else 0 end as tmpf_hit\"\n        )\n        labels[\"tmpf_hit\"] = f\"High Temp {tokens[0]:.0f}F - {tokens[1]:.0f}F\"\n    if ctx.get(\"avg_smph_below\"):\n        params.append(\n            f\"case when avg_sknt * 1.15 < {ctx['avg_smph_below']:.0f} \"\n            \"then 1 else 0 end as smph_hit\"\n        )\n        labels[\"smph_hit\"] = f\"Avg Wind < {ctx['avg_smph_below']:.0f}MPH\"\n    if ctx.get(\"max_gust_above\"):\n        params.append(\n            f\"case when max_gust * 1.15 > {ctx['max_gust_above']:.0f} \"\n            \"then 1 else 0 end as gust_hit\"\n        )\n        labels[\"gust_hit\"] = f\"Wind Gust > {ctx['max_gust_above']:.0f}MPH\"\n    if not params:\n        raise NoDataFound(\"Please select some options for plotting.\")\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    SELECT {cols}, extract(doy from day) as doy from summary s JOIN stations t\n    ON (s.iemid = t.iemid) WHERE t.id = :station and t.network = :network\"\"\",\n                cols=\" , \".join(params),\n            ),\n            conn,\n            params={\"station\": station, \"network\": ctx[\"network\"]},\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    df[\"all_hit\"] = 1\n    for col in df.columns:\n        if col == \"doy\":\n            continue\n        df.loc[df[col] < 1, \"all_hit\"] = 0\n    gdf = df.groupby(\"doy\").mean()\n\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    ab = \"N/A\" if ab is None else ab\n    title = f\"{ctx['_sname']} ({ab.year}-)\\nDaily Observed Frequency\"\n    (fig, ax) = figure_axes(title=title, apctx=ctx)\n    colors = itertools.cycle([\"r\", \"g\", \"b\", \"c\", \"m\", \"y\"])\n    for col in df.columns:\n        if col == \"doy\":\n            continue\n        try:\n            color = \"k\" if col == \"all_hit\" else next(colors)\n        except StopIteration:\n            color = \"k\"\n        ax.plot(\n            gdf.index.values,\n            gdf[col].values * 100.0,\n            lw=2,\n            label=labels[col],\n            color=color,\n        )\n\n    ax.legend(ncol=3, loc=(-0.05, -0.21), fontsize=14)\n    ax.set_xticks((1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_position([0.1, 0.2, 0.75, 0.7])\n    ax.set_xlim(1, 365)\n    ax.set_ylim(-2, 102)\n    ax.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    ax.grid(True)\n    ax.set_ylabel(\"Daily Frequency [%]\")\n    ax2 = ax.twinx()\n    ax2.set_ylabel(\"Daily Frequency [%]\")\n    ax2.set_ylim(-2, 102)\n    ax2.set_position([0.1, 0.2, 0.75, 0.7])\n    ax2.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    return fig, gdf\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p206.py",
    "content": "\"\"\"Generates analysis maps of ASOS station data for a given date.\"\"\"\n\nfrom datetime import datetime\n\nimport geopandas as gpd\nimport numpy as np\nimport pandas as pd\nfrom pyiem import reference\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot, get_cmap\n\nfrom iemweb.autoplot import ARG_FEMA\n\nPDICT = {\n    \"cwa\": \"Plot by NWS Forecast Office\",\n    \"state\": \"Plot by State\",\n    \"conus\": \"Plot for contiguous US\",\n    \"fema\": \"Plot by FEMA Region\",\n}\nPDICT2 = {\n    \"max_tmpf\": \"Max Air Temperature [F]\",\n    \"min_tmpf\": \"Min Air Temperature [F]\",\n    \"max_dwpf\": \"Max Dew Point Temperature [F]\",\n    \"min_dwpf\": \"Min Dew Point Temperature [F]\",\n    \"max_feel\": \"Max Feels Like Temperature [F]\",\n    \"min_feel\": \"Min Feels Like Temperature [F]\",\n    \"max_rh\": \"Max Relative Humidity [%]\",\n    \"min_rh\": \"Min Relative Humidity [%]\",\n    \"max_gust\": \"Peak Wind Gust [MPH]\",\n    \"max_sknt\": \"Peak Sustained Wind [MPH]\",\n}\nVARUNITS = {\n    \"max_tmpf\": \"F\",\n    \"min_tmpf\": \"F\",\n    \"max_dwpf\": \"F\",\n    \"min_dwpf\": \"F\",\n    \"max_feel\": \"F\",\n    \"min_feel\": \"F\",\n    \"max_rh\": \"percent\",\n    \"min_rh\": \"percent\",\n    \"max_gust\": \"mph\",\n    \"max_sknt\": \"mph\",\n}\nPDICT3 = {\n    \"both\": \"Plot and Contour Values\",\n    \"plot\": \"Only Plot Values\",\n    \"plot2\": \"Plot Values with station IDs\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 600}\n    now = datetime.now()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"t\",\n            default=\"state\",\n            options=PDICT,\n            label=\"Select plot extent type:\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"wfo\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO: (ignored if plotting state)\",\n        ),\n        dict(\n            type=\"state\",\n            name=\"state\",\n            default=\"IA\",\n            label=\"Select State: (ignored if plotting wfo)\",\n        ),\n        ARG_FEMA,\n        dict(\n            type=\"select\",\n            name=\"v\",\n            default=\"max_gust\",\n            options=PDICT2,\n            label=\"Select statistic to plot:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"p\",\n            default=\"both\",\n            options=PDICT3,\n            label=\"Plot or Countour values (for non interactive map):\",\n        ),\n        dict(\n            type=\"float\",\n            name=\"above\",\n            optional=True,\n            default=9999,\n            label=\"Remove any plotted values above threshold:\",\n        ),\n        dict(\n            type=\"float\",\n            name=\"below\",\n            optional=True,\n            default=-9999,\n            label=\"Remove any plotted values below threshold:\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"day\",\n            default=now.strftime(\"%Y/%m/%d\"),\n            label=\"Date\",\n            min=\"1926/01/01\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"viridis\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef get_df(ctx, buf=2.25):\n    \"\"\"Figure out what data we need to fetch here\"\"\"\n    if ctx[\"t\"] == \"state\":\n        bnds = reference.state_bounds[ctx[\"state\"]]\n        ctx[\"title\"] = reference.state_names[ctx[\"state\"]]\n    elif ctx[\"t\"] == \"conus\":\n        bnds = [\n            reference.CONUS_WEST,\n            reference.CONUS_SOUTH,\n            reference.CONUS_EAST,\n            reference.CONUS_NORTH,\n        ]\n        ctx[\"title\"] = \"Contiguous US\"\n    elif ctx[\"t\"] == \"fema\":\n        bnds = reference.fema_region_bounds[int(ctx[\"fema\"])]\n        ctx[\"title\"] = f\"FEMA Region {ctx['fema']}\"\n    else:\n        bnds = reference.wfo_bounds[ctx[\"wfo\"]]\n        ctx[\"title\"] = f\"NWS CWA {ctx['_sname']}\"\n    params = {\n        \"dt\": ctx[\"day\"],\n        \"west\": bnds[0] - buf,\n        \"south\": bnds[1] - buf,\n        \"east\": bnds[2] + buf,\n        \"north\": bnds[3] + buf,\n    }\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df: pd.DataFrame = gpd.read_postgis(\n            sql_helper(\"\"\"\n            WITH mystation as (\n                select id, st_x(geom) as lon, st_y(geom) as lat,\n                state, wfo, iemid, country, geom from stations\n                where network ~* 'ASOS' and\n                ST_contains(\n                    ST_MakeEnvelope(:west, :south, :east, :north, 4326), geom)\n            )\n            SELECT s.day, s.max_tmpf, s.min_tmpf, s.max_dwpf, s.min_dwpf,\n            s.min_rh, s.max_rh, s.min_feel, s.max_feel,\n            max_sknt * 1.15 as max_sknt,\n            max_gust * 1.15 as max_gust, t.id as station, t.lat, t.lon,\n            t.wfo, t.state, t.country, t.geom from\n            summary s JOIN mystation t on (s.iemid = t.iemid)\n            WHERE s.day = :dt\n        \"\"\"),\n            conn,\n            params=params,\n            geom_col=\"geom\",\n        )  # type: ignore\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n\n    return df[pd.notnull(df[ctx[\"v\"]])]\n\n\ndef geojson(ctx: dict):\n    \"\"\"GeoJSON Content.\"\"\"\n    return (get_df(ctx).drop(columns=[\"lat\", \"lon\", \"day\"])), ctx[\"v\"]\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    varname = ctx[\"v\"]\n\n    df = get_df(ctx)\n    if df.empty:\n        raise NoDataFound(\"No data was found for your query\")\n    sector = \"state\" if ctx[\"t\"] == \"state\" else \"cwa\"\n    if ctx[\"t\"] == \"conus\":\n        sector = \"conus\"\n    elif ctx[\"t\"] == \"fema\":\n        sector = \"fema_region\"\n    mp = MapPlot(\n        apctx=ctx,\n        sector=sector,\n        state=ctx[\"state\"],\n        fema_region=ctx[\"fema\"],\n        cwa=(ctx[\"wfo\"] if len(ctx[\"wfo\"]) == 3 else ctx[\"wfo\"][1:]),\n        axisbg=\"white\",\n        title=f\"{PDICT2[ctx['v']]} for {ctx['title']} on {ctx['day']}\",\n        nocaption=True,\n        titlefontsize=16,\n    )\n    ramp = None\n    cmap = get_cmap(ctx[\"cmap\"])\n    extend = \"both\"\n    if varname in [\"max_gust\", \"max_sknt\"]:\n        extend = \"max\"\n        ramp = np.arange(0, 40, 4)\n        ramp = np.append(ramp, np.arange(40, 80, 10))\n        ramp = np.append(ramp, np.arange(80, 120, 20))\n    # Data QC, cough\n    if ctx.get(\"above\"):\n        df = df[df[varname] < ctx[\"above\"]]\n    if ctx.get(\"below\"):\n        df = df[df[varname] > ctx[\"below\"]]\n    if df.empty:\n        raise NoDataFound(\"No data was found for your query\")\n    # with QC done, we compute ramps\n    if ramp is None:\n        ramp = np.linspace(\n            df[varname].min() - 5, df[varname].max() + 5, 10, dtype=\"i\"\n        )\n\n    if ctx[\"p\"] == \"both\":\n        mp.contourf(\n            df[\"lon\"].values,\n            df[\"lat\"].values,\n            df[varname].values,\n            ramp,\n            units=VARUNITS[varname],\n            cmap=cmap,\n            spacing=\"proportional\",\n            extend=extend,\n        )\n    if ctx[\"t\"] == \"conus\":\n        df2 = df[df[\"country\"] == \"US\"]\n    elif ctx[\"t\"] == \"state\":\n        df2 = df[df[ctx[\"t\"]] == ctx[ctx[\"t\"]]]\n    elif ctx[\"t\"] == \"cwa\":\n        df2 = df[df[\"wfo\"] == ctx[\"wfo\"]]\n    else:  # FEMA\n        df2 = df\n\n    mp.plot_values(\n        df2[\"lon\"].values,\n        df2[\"lat\"].values,\n        df2[varname].values,\n        \"%.1f\" if varname in [\"max_gust\", \"max_sknt\"] else \"%.0f\",\n        labelbuffer=3,\n        labels=df2[\"station\"].values if ctx[\"p\"] == \"plot2\" else None,\n    )\n    if ctx[\"t\"] not in [\"conus\", \"fema\"]:\n        mp.drawcounties()\n    if ctx[\"t\"] == \"cwa\":\n        mp.draw_cwas()\n\n    return mp.fig, df.drop(\n        columns=[\n            \"geom\",\n        ]\n    )\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p207.py",
    "content": "\"\"\"\nGenerates an analysis map of rainfall, snowfall, or freezing rain data\nbased on NWS Local Storm Reports, NWS COOP Data, and CoCoRaHS.  This autoplot\npresents a number of tunables including:\n<ul>\n    <li>The window of hours to look before the specified valid time to\n    find Local Storm Reports (LSR).</li>\n    <li>The option to attempt to inject zeros into the observations prior\n    to doing an analysis.  Since the LSRs are all non-zero values, sometimes\n    it is good to attempt to add zeros in to keep the reports from bleeding\n    into areas that did not receive snow.</li>\n    <li>You can pick which\n    <a href=\"https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.Rbf.html\">SciPy.interpolate.Rbf</a>\n    function to use.  The radius in the function shown equals the grid cell\n    size used for the analysis.</li>\n    <li>You can optionally include any NWS COOP reports that were processed\n    by the IEM over the time period that you specified.</li>\n</ul>\n\n<br /><br />If you download the data for this analysis, there is a column\ncalled <code>used_for_analysis</code> which denotes if the report was used to\ncreate the grid analysis.  There is a primative quality control routine\nthat attempts to omit too low of reports.\n\n<br /><br />Having trouble with this app?  If so, please copy/paste the URL\nshowing the bad image and <a href=\"/info/contacts.php\">email it to us</a>!\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport geopandas as gpd\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot\nfrom pyiem.plot.colormaps import nwsice, nwssnow\nfrom pyiem.reference import EPSG\nfrom pyproj import Transformer\nfrom scipy.interpolate import Rbf\nfrom shapely.geometry import Point\n\nT4326_2163 = Transformer.from_proj(4326, 2163, always_xy=True)\nT2163_4326 = Transformer.from_proj(2163, 4326, always_xy=True)\nUSEME = \"used_for_analysis\"\nPDICT = {\n    \"cwa\": \"Plot by NWS Forecast Office\",\n    \"state\": \"Plot by State / Regional Sector / CONUS\",\n}\nPDICT2 = {\n    \"multiquadric\": \"multiquadraic sqrt((r/self.epsilon)**2 + 1)\",\n    \"inverse\": \"inverse 1.0/sqrt((r/self.epsilon)**2 + 1)\",\n    \"gaussian\": \"gaussian exp(-(r/self.epsilon)**2)\",\n    \"linear\": \"linear r\",\n    \"cubic\": \"cubic r**3\",\n    \"quintic\": \"quintic r**5\",\n    \"thin_plate\": \"thin_plate r**2 * log(r)\",\n}\nPDICT3 = {\n    \"both\": \"Plot and Contour Values\",\n    \"contour\": \"Only Contour Values\",\n    \"plot\": \"Only Plot Values\",\n}\nPDICT4 = {\n    \"no\": \"Do not attempt to inject zeros\",\n    \"yes\": \"Inject zeros where necessary\",\n    \"plot\": \"Inject zeros and show on plot as red 'Z'\",\n}\nPDICT5 = {\n    \"yes\": \"Include any reports, if possible.\",\n    \"no\": \"Do not include any reports.\",\n}\nPDICT6 = {\n    \"rain\": \"Rainfall\",\n    \"snow\": \"Snowfall\",\n    \"ss\": \"Snowfall & Sleet\",\n    \"sleet\": \"Sleet\",\n    \"ice\": \"Freezing Rain / Ice Storm (LSRs Only)\",\n}\nPDICT7 = {\n    \"yes\": \"Clip Display by Plotted Geography\",\n    \"no\": \"Allow sometimes extrapolation outside of plotted area\",\n}\nPDICT8 = {\n    \"yes\": \"Overlay cities\",\n    \"no\": \"Do not overlay cities\",\n}\nPDICT9 = {\n    \"yes\": \"Plot any reported zeros\",\n    \"no\": \"Do not plot any reported zeros\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 60}\n    now = datetime.now()\n    desc[\"gallery\"] = {\n        \"endts\": \"2024-01-10 1300\",\n        \"hours\": 24,\n    }\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"v\",\n            default=\"snow\",\n            label=\"Which variable to analyze?\",\n            options=PDICT6,\n        ),\n        dict(\n            type=\"select\",\n            name=\"t\",\n            default=\"state\",\n            options=PDICT,\n            label=\"Select plot extent type:\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"wfo\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO: (ignored if plotting state)\",\n        ),\n        dict(\n            type=\"csector\",\n            name=\"csector\",\n            default=\"IA\",\n            label=\"Select state/sector to plot\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"p\",\n            default=\"both\",\n            options=PDICT3,\n            label=\"Plot or Countour values (for non interactive map):\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"endts\",\n            default=now.strftime(\"%Y/%m/%d %H%M\"),\n            label=\"Date Time (central time zone)\",\n            min=\"2006/01/01 0000\",\n        ),\n        dict(\n            type=\"int\",\n            default=12,\n            label=\"Trailing Time Window (hours):\",\n            name=\"hours\",\n        ),\n        dict(\n            type=\"int\",\n            default=50,\n            label=\"Grid cell size for analysis [integer] &gt;=5 (km)\",\n            name=\"sz\",\n            min=5,\n            max=200,\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT2,\n            label=\"Which SciPy.interpolate.Rbf function to use? r=grid size\",\n            default=\"linear\",\n            name=\"f\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT4,\n            label=\"Shall algorithm attempt to insert zeros into analysis?\",\n            default=\"yes\",\n            name=\"z\",\n        ),\n        {\n            \"type\": \"int\",\n            \"default\": 3,\n            \"name\": \"zr\",\n            \"ge\": 1,\n            \"le\": 10,\n            \"label\": (\n                \"If attempting to insert zeros, how many grid cells away\"\n                \"should they be from an observed point? (integer)\",\n            ),\n        },\n        {\n            \"type\": \"select\",\n            \"name\": \"pz\",\n            \"default\": \"yes\",\n            \"label\": \"Should any observed zeros be plotted on the map?\",\n            \"options\": PDICT9,\n        },\n        dict(\n            type=\"select\",\n            options=PDICT5,\n            label=\"Include NWS COOP reports too?\",\n            default=\"no\",\n            name=\"coop\",\n        ),\n        {\n            \"type\": \"select\",\n            \"options\": PDICT5,\n            \"label\": \"Include CoCoRaHS reports too?\",\n            \"default\": \"yes\",\n            \"name\": \"cocorahs\",\n        },\n        dict(\n            type=\"select\",\n            options=PDICT7,\n            label=\"Clip display to plotted geography?\",\n            default=\"yes\",\n            name=\"c\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT8,\n            label=\"Plot cities on the map?\",\n            default=\"yes\",\n            name=\"ct\",\n        ),\n        dict(\n            type=\"float\",\n            default=1,\n            label=\"Contour line width (pixels) &lt; 10, 0 disables:\",\n            name=\"lw\",\n            min=0,\n            max=10,\n        ),\n        {\n            \"type\": \"cmap\",\n            \"label\": \"Select color map for precipitation\",\n            \"default\": \"jet\",\n            \"name\": \"cmap\",\n        },\n    ]\n    return desc\n\n\ndef load_data(ctx: dict, basets: datetime, endts: datetime):\n    \"\"\"Generate a dataframe with the data we want to analyze.\"\"\"\n    typs = {\n        \"rain\": [\"R\"],\n        \"snow\": [\"S\"],\n        \"ice\": [\"5\"],\n        \"sleet\": [\"s\"],\n        \"ss\": [\"S\", \"s\"],\n    }\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df: gpd.GeoDataFrame = gpd.read_postgis(\n            sql_helper(\n                \"\"\"SELECT state, wfo,\n            max(magnitude::real) as val, ST_x(geom) as lon, ST_y(geom) as lat,\n            ST_Transform(geom, 2163) as geo\n            from lsrs WHERE type = ANY(:typs) and magnitude >= 0 and\n            valid >= :basets and valid <= :endts\n            GROUP by state, wfo, lon, lat, geo\n            ORDER by val DESC\n            \"\"\"\n            ),\n            conn,\n            params={\n                \"typs\": typs[ctx[\"v\"]],\n                \"basets\": basets,\n                \"endts\": endts,\n            },\n            index_col=None,\n            geom_col=\"geo\",\n        )  # type: ignore\n    df[USEME] = True\n    df[\"nwsli\"] = df.index.values\n    df[\"plotme\"] = True\n    df[\"source\"] = \"LSR\"\n    # Figure out which days we need to look for COOP/CoCoRaHS data, we make\n    # some life choices here wanting a morning timestamp within the period\n    days = [\n        dt\n        for dt in pd.date_range(basets.date(), endts.date())\n        if basets < datetime(dt.year, dt.month, dt.day, 7) < endts\n    ]\n    if ctx[\"coop\"] == \"yes\" and ctx[\"v\"] not in [\"ice\", \"sleet\"]:\n        with get_sqlalchemy_conn(\"iem\") as conn:\n            coopdf: gpd.GeoDataFrame = gpd.read_postgis(\n                sql_helper(\n                    \"\"\"SELECT state, wfo, id as nwsli, count(*) as count,\n                sum({col}) as val, ST_x(geom) as lon, ST_y(geom) as lat,\n                ST_Transform(geom, 2163) as geo\n                from summary s JOIN stations t on (s.iemid = t.iemid)\n                WHERE s.day = ANY(:days)\n                and t.network ~* 'COOP' and {col} >= 0 and\n                coop_valid >= :basets and coop_valid <= :endts\n                GROUP by state, wfo, nwsli, lon, lat, geo\n                ORDER by val DESC\n                \"\"\",\n                    col=\"snow\" if ctx[\"v\"] in [\"snow\", \"ss\"] else \"pday\",\n                ),\n                conn,\n                params={\n                    \"days\": days,\n                    \"basets\": basets,\n                    \"endts\": endts,\n                },\n                index_col=None,\n                geom_col=\"geo\",\n            )  # type: ignore\n        if not coopdf.empty:\n            coopdf[USEME] = True\n            coopdf[\"plotme\"] = True\n            coopdf[\"source\"] = \"COOP\"\n            if df.empty:\n                df = coopdf\n            else:\n                df = pd.concat([df, coopdf], ignore_index=True, sort=False)\n    if ctx[\"cocorahs\"] == \"yes\" and ctx[\"v\"] not in [\"ice\", \"sleet\"]:\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            cocodf: gpd.GeoDataFrame = gpd.read_postgis(\n                sql_helper(\n                    \"\"\"SELECT state, wfo, id as nwsli, count(*) as count,\n                sum({col}) as val, ST_x(geom) as lon, ST_y(geom) as lat,\n                ST_Transform(geom, 2163) as geo\n                from alldata_cocorahs s JOIN stations t on (s.iemid = t.iemid)\n                WHERE s.day = ANY(:days)\n                and t.network ~* '_COCORAHS' and {col} >= 0 and\n                obvalid >= :basets and obvalid <= :endts and\n                ST_Contains(\n                    ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 2163),\n                    ST_transform(geom, 2163)\n                )\n                GROUP by state, wfo, nwsli, lon, lat, geo\n                ORDER by val DESC\n                \"\"\",\n                    col=\"snow\" if ctx[\"v\"] in [\"snow\", \"ss\"] else \"precip\",\n                ),\n                conn,\n                params={\n                    \"days\": days,\n                    \"basets\": basets,\n                    \"endts\": endts,\n                    \"minx\": ctx[\"bnds2163\"][0],\n                    \"miny\": ctx[\"bnds2163\"][1],\n                    \"maxx\": ctx[\"bnds2163\"][2],\n                    \"maxy\": ctx[\"bnds2163\"][3],\n                },\n                index_col=None,\n                geom_col=\"geo\",\n            )  # type: ignore\n        if not cocodf.empty:\n            cocodf[USEME] = True\n            cocodf[\"plotme\"] = True\n            cocodf[\"source\"] = \"COCORAHS\"\n            if df.empty:\n                df = cocodf\n            else:\n                df = pd.concat([df, cocodf], ignore_index=True, sort=False)\n    return df\n\n\ndef compute_grid_bounds(ctx, csector):\n    \"\"\"Figure out where to look.\"\"\"\n\n    # Lame, we create a temp Map object to get the bounds\n    if ctx[\"t\"] == \"cwa\":\n        sector = \"cwa\"\n    else:\n        sector = \"state\" if len(csector) == 2 else csector\n    mp = MapPlot(\n        apctx=ctx,\n        sector=sector,\n        nocaption=True,\n        state=csector,\n        cwa=(ctx[\"wfo\"] if len(ctx[\"wfo\"]) == 3 else ctx[\"wfo\"][1:]),\n        axisbg=\"white\",\n    )\n    [xmin, xmax, ymin, ymax] = mp.panels[0].get_extent(EPSG[2163])\n    mp.close()\n\n    buffer = 20000.0  # km\n    return [\n        xmin - buffer,  # minx\n        ymin - buffer,  # miny\n        xmax + buffer,  # maxx\n        ymax + buffer,  # maxy\n    ]\n\n\ndef add_zeros(df: pd.DataFrame, ctx: dict):\n    \"\"\"Add values of zero where we believe appropriate.\"\"\"\n    cellsize = ctx[\"sz\"] * 1000.0\n    if ctx[\"zr\"] < 1 or ctx[\"zr\"] > 10:\n        raise NoDataFound(\n            \"Invalid number of grid cells for zero insertion, \"\n            \"must be between 1 and 10\"\n        )\n    newrows = []\n    if ctx[\"z\"] in [\"yes\", \"plot\"]:\n        xvals = np.arange(\n            ctx[\"bnds2163\"][0], ctx[\"bnds2163\"][2], cellsize * ctx[\"zr\"]\n        )\n        yvals = np.arange(\n            ctx[\"bnds2163\"][1], ctx[\"bnds2163\"][3], cellsize * ctx[\"zr\"]\n        )\n        grid_points = [(x, y) for y in yvals for x in xvals]\n        if grid_points:\n            cands = pd.DataFrame(grid_points, columns=[\"x\", \"y\"])\n            cand_gdf = gpd.GeoDataFrame(\n                cands,\n                geometry=gpd.points_from_xy(cands[\"x\"], cands[\"y\"]),\n                crs=EPSG[2163],\n            )\n\n            has_obs = np.zeros(len(cand_gdf.index), dtype=bool)\n            if not df.empty:\n                point_gdf = gpd.GeoDataFrame(\n                    df[[\"geo\"]].copy(),\n                    geometry=\"geo\",\n                    crs=EPSG[2163],\n                )\n                joined = gpd.sjoin_nearest(\n                    cand_gdf,\n                    point_gdf,\n                    how=\"left\",\n                    max_distance=cellsize * 1.5,\n                )\n                has_obs = (\n                    joined.groupby(level=0)[\"index_right\"]\n                    .apply(lambda col: col.notna().any())\n                    .reindex(cand_gdf.index, fill_value=False)\n                    .to_numpy()\n                )\n\n            for _, row in cand_gdf.loc[~has_obs, [\"x\", \"y\"]].iterrows():\n                (lon, lat) = T2163_4326.transform(row[\"x\"], row[\"y\"])\n                newrows.append(\n                    {\n                        \"geo\": Point(row[\"x\"], row[\"y\"]),\n                        \"lon\": lon,\n                        \"lat\": lat,\n                        \"val\": 0,\n                        \"nwsli\": f\"Z{len(newrows) + 1}\",\n                        USEME: True,\n                        \"plotme\": False,\n                        \"state\": \"Z\",\n                    }\n                )\n    if newrows:\n        if not df.empty:\n            df = pd.concat(\n                (\n                    df,\n                    gpd.GeoDataFrame(newrows, geometry=\"geo\", crs=EPSG[2163]),  # type: ignore\n                ),\n                ignore_index=True,\n                sort=False,\n            )\n        else:\n            df = gpd.GeoDataFrame(newrows, geometry=\"geo\", crs=EPSG[2163])  # type: ignore\n        # Ensure we end up with val being float\n        df[\"val\"] = pd.to_numeric(df[\"val\"])  # type: ignore\n    # compute a cell index for each row\n    df[\"xcell\"] = ((df[\"geo\"].x - ctx[\"bnds2163\"][0]) / cellsize).astype(int)\n    df[\"ycell\"] = ((df[\"geo\"].y - ctx[\"bnds2163\"][1]) / cellsize).astype(int)\n\n    for _, gdf in df.groupby([\"xcell\", \"ycell\"]):\n        if len(gdf.index) == 1:\n            continue\n        # Find the max value in this cell\n        maxval = gdf[\"val\"].max()\n        df.loc[gdf[gdf[\"val\"] < (maxval * 0.8)].index, USEME] = False\n        df.loc[gdf[gdf[\"val\"] < (maxval * 0.8)].index, \"plotme\"] = False\n    return df\n\n\ndef do_analysis(df: pd.DataFrame, ctx: dict):\n    \"\"\"Do the analysis finally.\"\"\"\n    # cull dups to prevent gridding badness\n    df2 = (\n        df[[\"geo\", \"val\"]]\n        .groupby([df[\"geo\"].x, df[\"geo\"].y])\n        .first()\n        .reset_index()\n    )\n    if df2.empty:\n        raise NoDataFound(\"No Data Found.\")\n    sz = ctx[\"sz\"] * 1000.0\n    # Introduce some jitter\n    xi = np.arange(ctx[\"bnds2163\"][0], ctx[\"bnds2163\"][2] + sz, sz / 1.9)\n    yi = np.arange(ctx[\"bnds2163\"][1], ctx[\"bnds2163\"][3] + sz, sz / 1.9)\n    xi, yi = np.meshgrid(xi, yi)\n    lons, lats = T2163_4326.transform(xi, yi)\n    gridder = Rbf(\n        df2[\"level_0\"].values,\n        df2[\"level_1\"].values,\n        df2[\"val\"].values,\n        function=ctx[\"f\"],\n    )\n    vals = gridder(xi, yi)\n    vals[np.isnan(vals)] = 0\n    vals[vals < 0] = 0\n    # Apply a smoother\n    return lons, lats, vals\n\n\ndef prettyprint(val, decimals=1):\n    \"\"\"Make trace pretty.\"\"\"\n    if val == 0:\n        return \"0\"\n    if 0 < val < 0.1:\n        return \"T\"\n    return f\"{val:.1f}\" if decimals == 1 else f\"{val:.2f}\"\n\n\ndef prettyprint2(val):\n    \"\"\"Lazy.\"\"\"\n    return prettyprint(val, 2)\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    ctx[\"sz\"] = max(5, ctx[\"sz\"])\n    if ctx[\"hours\"] > 300:\n        ctx[\"hours\"] = 300\n    endts = ctx[\"endts\"]\n    basets = endts - timedelta(hours=ctx[\"hours\"])\n    # figure out our grid bounds\n    csector = ctx.pop(\"csector\")\n    if ctx[\"t\"] == \"state\" and len(csector) > 2:\n        ctx[\"sz\"] = max(50, ctx[\"sz\"])\n    ctx[\"bnds2163\"] = compute_grid_bounds(ctx, csector)\n    # Retrieve available obs\n    df = load_data(ctx, basets, endts)\n    # add zeros and QC\n    df = add_zeros(df, ctx)\n    df[\"label\"] = df[\"val\"].apply(\n        prettyprint2 if ctx[\"v\"] == \"ice\" else prettyprint\n    )\n    # do gridding\n    df2 = df[df[USEME]]\n    lons, lats, vals = do_analysis(df2, ctx)\n\n    rng = [0.01, 1, 2, 3, 4, 6, 8, 12, 18, 24, 30, 36]\n    cmap = nwssnow()\n    if ctx[\"v\"] == \"ice\":\n        rng = [0.01, 0.1, 0.25, 0.5, 0.75, 1, 2]\n        cmap = nwsice()\n    elif ctx[\"v\"] == \"rain\":\n        rng = [0.01, 0.1, 0.5, 1, 2, 3, 5, 10]\n        cmap = ctx[\"cmap\"]\n    if ctx[\"t\"] == \"cwa\":\n        sector = \"cwa\"\n    else:\n        sector = \"state\" if len(csector) == 2 else csector\n\n    _t = \" & COOP\" if ctx[\"coop\"] == \"yes\" else \"\"\n    _t += \" & CoCoRaHS\" if ctx[\"cocorahs\"] == \"yes\" else \"\"\n    title = f\"NWS Local Storm Report{_t} Snowfall Total Analysis\"\n    if ctx[\"v\"] == \"ice\":\n        title = \"NWS Local Storm Reports of Freezing Rain + Ice\"\n    elif ctx[\"v\"] == \"rain\":\n        title = f\"NWS Local Storm Report{_t} Rainfall Total Analysis\"\n    elif ctx[\"v\"] == \"sleet\":\n        title = \"NWS Local Storm Report Sleet Total Analysis\"\n    elif ctx[\"v\"] == \"ss\":\n        title = f\"NWS Local Storm Report{_t} Snowfall + Sleet Total Analysis\"\n    obcnt = len(df2[df2[\"state\"] != \"Z\"].index)\n    mp = MapPlot(\n        apctx=ctx,\n        sector=sector,\n        nocaption=True,\n        state=csector,\n        cwa=(ctx[\"wfo\"] if len(ctx[\"wfo\"]) == 3 else ctx[\"wfo\"][1:]),\n        axisbg=\"white\",\n        title=title,\n        subtitle=(\n            f\"{obcnt:.0f} reports over past {ctx['hours']:.0f} hours \"\n            f\"till {endts:%d %b %Y %I:%M %p}, \"\n            f\"grid size: {ctx['sz']:.0f}km, Rbf: {ctx['f']}\"\n        ),\n    )\n    if (\n        len(vals) > 1\n        and df2[\"val\"].max() > 0\n        and ctx[\"p\"] in [\"both\", \"contour\"]\n    ):\n        mp.contourf(\n            lons,\n            lats,\n            vals,\n            rng,\n            cmap=cmap,\n            clip_on=(ctx[\"c\"] == \"yes\"),\n            linewidths=ctx[\"lw\"],\n            spacing=\"proportional\",\n        )\n        # Allow analysis to bleed outside the CWA per request.\n        if ctx[\"t\"] == \"cwa\":\n            mp.draw_mask(sector=\"conus\")\n            mp.draw_cwas(linewidth=2)\n    if sector not in [\"conus\", \"midwest\"] and not (\n        ctx[\"t\"] == \"state\" and len(csector) > 2\n    ):\n        mp.drawcounties()\n    if ctx[\"ct\"] == \"yes\":\n        mp.drawcities(isolated=True, textoutlinewidth=0)\n    if not df.empty and ctx[\"p\"] in [\"both\", \"plot\"]:\n        df2 = df[df[\"plotme\"]]\n        if ctx[\"pz\"] == \"no\":\n            df2 = df2[df2[\"val\"] > 0]\n        if not df2.empty:\n            mp.plot_values(\n                df2[\"lon\"].values,\n                df2[\"lat\"].values,\n                df2[\"label\"].values,\n                fmt=\"%s\",\n                labelbuffer=2,\n            )\n    if ctx[\"z\"] == \"plot\":\n        df2 = df[df[\"state\"] == \"Z\"]\n        if not df2.empty:\n            mp.plot_values(\n                df2[\"lon\"].values,\n                df2[\"lat\"].values,\n                df2[\"state\"].values,\n                fmt=\"%s\",\n                color=\"#FF0000\",\n                labelbuffer=0,\n            )\n    return mp.fig, df.drop([\"geo\", \"plotme\"], axis=1)\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p208.py",
    "content": "\"\"\"\nThis application generates a map showing the coverage of a given\nVTEC alert.  The tricky part here is how time is handled\nfor events whereby zones/counties can be added / removed from the alert.\nIf you specific an exact time, you should get the proper extent of the\nalert at that time.  If you do not specify the time, you should get the\ntotal inclusion of any zones/counties that were added to the alert.\n\n<p>This plot can be run in three special modes, those are:\n<ul>\n    <li><strong>Single Event</strong>: Plots for a given WFO and event id.\n    </li>\n    <li><strong>Same Phen/Sig over multiple WFOs</strong>: The given single\n    event is expanded in space to cover any coincident events for the given\n    single event.</li>\n    <li><strong>Same Phen/Sig over multiple WFOs</strong>: In this case, the\n    event id is used to expand the plot.  This makes most sense for SVR + TOR\n    watches along with Tropical Alerts as the same event id is used over\n    multiple WFOs.</li>\n</ul>\n</p>\n\"\"\"\n\nfrom datetime import timezone\nfrom zoneinfo import ZoneInfo\n\nimport geopandas as gpd\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws import vtec\nfrom pyiem.plot.geoplot import MapPlot\nfrom pyiem.reference import LATLON, Z_FILL, Z_OVERLAY2, Z_OVERLAY2_LABEL\nfrom pyiem.util import utc\n\nTFORMAT = \"%b %-d %Y %-I:%M %p %Z\"\nPDICT = {\n    \"single\": \"Plot just this single VTEC Event\",\n    \"expand\": \"Plot same VTEC Phenom/Sig from any WFO coincident with event\",\n    \"etn\": \"Plot same VTEC Phenom/Sig + Event ID from any WFO\",\n}\nPDICT3 = {\n    \"on\": \"Overlay NEXRAD Mosaic\",\n    \"auto\": \"Let autoplot decide when to include NEXRAD overlay\",\n    \"off\": \"No NEXRAD Mosaic Please\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 300, \"data\": True}\n    desc[\"defaults\"] = {\"_r\": \"t\"}\n    now = utc()\n    desc[\"arguments\"] = [\n        dict(\n            optional=True,\n            type=\"datetime\",\n            name=\"valid\",\n            default=now.strftime(\"%Y/%m/%d %H%M\"),\n            label=\"UTC Timestamp (inclusive) to plot the given alert at:\",\n            min=\"1986/01/01 0000\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"wfo\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO:\",\n        ),\n        dict(type=\"year\", min=1986, default=2024, name=\"year\", label=\"Year\"),\n        dict(\n            type=\"vtec_ps\",\n            name=\"v\",\n            default=\"SV.W\",\n            label=\"VTEC Phenomena and Significance\",\n        ),\n        dict(\n            type=\"int\",\n            default=1,\n            label=\"VTEC Event Identifier / Sequence Number\",\n            name=\"etn\",\n        ),\n        dict(\n            type=\"select\",\n            default=\"single\",\n            name=\"opt\",\n            options=PDICT,\n            label=\"Special Plot Options / Modes\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT3,\n            default=\"auto\",\n            name=\"n\",\n            label=\"Should a NEXRAD Mosaic be overlain:\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    utcvalid = ctx.get(\"valid\")\n    wfo = ctx[\"wfo\"]\n    if wfo == \"_ALL\":\n        wfo = \"DMX\"\n    if wfo == \"NHC\":\n        ctx[\"opt\"] = \"expand\"\n    tzname = ctx[\"_nt\"].sts[wfo][\"tzname\"]\n    p1 = ctx[\"phenomenav\"][:2]\n    s1 = ctx[\"significancev\"][:1]\n    etn = int(ctx[\"etn\"])\n    year = int(ctx[\"year\"])\n    params = {\n        \"wfo\": wfo[-3:],\n        \"etn\": etn,\n        \"s1\": s1,\n        \"p1\": p1,\n        \"year\": year,\n    }\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        wfolim = \"w.wfo = :wfo and\" if wfo != \"NHC\" else \"\"\n        df = gpd.read_postgis(\n            sql_helper(\n                \"\"\"\n            SELECT w.ugc, simple_geom, u.name,\n            (case when issue > expire then product_issue else issue end)\n            at time zone 'UTC' as issue,\n            expire at time zone 'UTC' as expire,\n            init_expire at time zone 'UTC' as init_expire,\n            1 as val,\n            status, is_emergency, is_pds, w.wfo\n            from warnings w JOIN ugcs u on (w.gid = u.gid)\n            WHERE {wfolim} vtec_year = :year and eventid = :etn and\n            significance = :s1 and phenomena = :p1 ORDER by issue ASC\n        \"\"\",\n                wfolim=wfolim,\n            ),\n            conn,\n            params=params,\n            index_col=\"ugc\",\n            geom_col=\"simple_geom\",\n        )  # type: ignore\n    if df.empty:\n        raise NoDataFound(\"VTEC Event was not found, sorry.\")\n    if ctx[\"opt\"] == \"expand\":\n        # Get all phenomena coincident with the above alert\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            df: pd.DataFrame = gpd.read_postgis(\n                sql_helper(\"\"\"\n                SELECT w.ugc, simple_geom, u.name,\n                issue at time zone 'UTC' as issue,\n                expire at time zone 'UTC' as expire,\n                init_expire at time zone 'UTC' as init_expire,\n                status, is_emergency, is_pds, w.wfo\n                from warnings w JOIN ugcs u on (w.gid = u.gid)\n                WHERE vtec_year = :year and significance = :s1 and\n                phenomena = :p1 and issue < :expire and expire > :issue\n                ORDER by issue ASC\n            \"\"\"),\n                conn,\n                params={\n                    \"year\": year,\n                    \"s1\": s1,\n                    \"p1\": p1,\n                    \"expire\": df[\"expire\"].min(),\n                    \"issue\": df[\"issue\"].min(),\n                },\n                index_col=\"ugc\",\n                geom_col=\"simple_geom\",\n            )  # type: ignore\n    elif ctx[\"opt\"] == \"etn\":\n        # Get all phenomena coincident with the above alert\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            df: pd.DataFrame = gpd.read_postgis(\n                sql_helper(\"\"\"\n                SELECT w.ugc, simple_geom, u.name,\n                issue at time zone 'UTC' as issue,\n                expire at time zone 'UTC' as expire,\n                init_expire at time zone 'UTC' as init_expire,\n                status, is_emergency, is_pds, w.wfo\n                from warnings w JOIN ugcs u on (w.gid = u.gid)\n                WHERE vtec_year = :year and significance = :s1 and\n                phenomena = :p1 and eventid = :etn\n                ORDER by issue ASC\n            \"\"\"),\n                conn,\n                params=params,\n                index_col=\"ugc\",\n                geom_col=\"simple_geom\",\n            )  # type: ignore\n    if df.empty:\n        raise NoDataFound(\"VTEC Event was not found, sorry.\")\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        sbwdf = gpd.read_postgis(\n            sql_helper(\"\"\"\n            SELECT status, geom, wfo,\n            polygon_begin at time zone 'UTC' as polygon_begin,\n            polygon_end at time zone 'UTC' as polygon_end from sbw\n            WHERE vtec_year = :year and wfo = :wfo and eventid = :etn and\n            significance = :s1 and\n            phenomena = :p1 ORDER by polygon_begin ASC\n        \"\"\"),\n            conn,\n            params=params,\n            geom_col=\"geom\",\n        )  # type: ignore\n    if not sbwdf.empty and ctx[\"opt\"] == \"expand\":\n        # Get all phenomena coincident with the above alert\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            sbwdf = gpd.read_postgis(\n                sql_helper(\"\"\"\n                SELECT status, geom, wfo,\n                polygon_begin at time zone 'UTC' as polygon_begin,\n                polygon_end at time zone 'UTC' as polygon_end from sbw\n                WHERE vtec_year = :year and status = 'NEW' and\n                significance = :s1 and\n                phenomena = :p1 and issue < :expire and expire > :issue\n                ORDER by polygon_begin ASC\n            \"\"\"),\n                conn,\n                params={\n                    \"year\": year,\n                    \"s1\": s1,\n                    \"p1\": p1,\n                    \"expire\": df[\"expire\"].min(),\n                    \"issue\": df[\"issue\"].min(),\n                },\n                geom_col=\"geom\",\n            )  # type: ignore\n    elif not sbwdf.empty and ctx[\"opt\"] == \"etn\":\n        # Get all phenomena coincident with the above alert\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            sbwdf = gpd.read_postgis(\n                sql_helper(\"\"\"\n                SELECT status, geom, wfo,\n                polygon_begin at time zone 'UTC' as polygon_begin,\n                polygon_end at time zone 'UTC' as polygon_end from sbw\n                WHERE vtec_year = :year and status = 'NEW' and\n                significance = :s1 and phenomena = :p1 and eventid = :etn\n                ORDER by polygon_begin ASC\n            \"\"\"),\n                conn,\n                params=params,\n                geom_col=\"geom\",\n            )  # type: ignore\n\n    if utcvalid is None:\n        utcvalid = df[\"issue\"].max()\n    else:\n        # hack for an assumption below\n        utcvalid = pd.Timestamp(utcvalid.replace(tzinfo=None))\n\n    def m(valid):\n        \"\"\"Convert to our local timestamp.\"\"\"\n        return (\n            valid.tz_localize(ZoneInfo(\"UTC\"))\n            .astimezone(ZoneInfo(tzname))\n            .strftime(TFORMAT)\n        )\n\n    df[\"color\"] = vtec.NWS_COLORS.get(f\"{p1}.{s1}\", \"#FF0000\") + \"D0\"\n    if not sbwdf.empty:\n        df[\"color\"] = \"#D2B48CD0\"\n    if len(df.wfo.unique()) == 1:\n        bounds = df[\"simple_geom\"].total_bounds\n        if not sbwdf.empty:\n            bounds = sbwdf[\"geom\"].total_bounds\n    else:\n        df2 = df[~df[\"wfo\"].isin([\"AJK\", \"AFC\", \"AFG\", \"HFO\", \"JSJ\"])]\n        bounds = df2[\"simple_geom\"].total_bounds\n    # Check for dateline wrapping\n    if (bounds[2] - bounds[0]) > 180:\n        bounds = [-177, 32, -110, 72]\n    buffer = 0.4\n    _pds = \" (PDS) \" if True in df[\"is_pds\"].values else \"\"\n    lbl = vtec.get_ps_string(p1, s1)\n    if df[\"is_emergency\"].any():\n        lbl = f\"{vtec.VTEC_PHENOMENA.get(p1, p1)} Emergency\"\n    title = f\"{year} {wfo} {_pds} {lbl} ({p1}.{s1}) #{etn}\"\n    if ctx[\"opt\"] in [\"expand\", \"etn\"]:\n        title = (\n            f\"{year} NWS {vtec.VTEC_PHENOMENA.get(p1, p1)} \"\n            f\"{vtec.VTEC_SIGNIFICANCE.get(s1, s1)} ({p1}.{s1})\"\n        )\n        if ctx[\"opt\"] == \"etn\":\n            title += f\" #{etn}\"\n    mp = MapPlot(\n        apctx=ctx,\n        subtitle=(\n            f\"Map Valid: {m(utcvalid)}, Event: {m(df['issue'].min())} \"\n            f\"to {m(df['expire'].max())}\"\n        ),\n        title=title,\n        sector=\"spherical_mercator\",\n        west=bounds[0] - buffer,\n        south=bounds[1] - buffer,\n        east=bounds[2] + buffer,\n        north=bounds[3] + buffer,\n        nocaption=True,\n    )\n    if len(df.wfo.unique()) == 1 and wfo not in [\"PHEB\", \"PAAQ\"]:\n        mp.sector = \"cwa\"\n        mp.cwa = wfo[-3:]\n    # CAN statements come here with time == expire :/\n    if ctx[\"opt\"] == \"single\":\n        df2: gpd.GeoDataFrame = df[\n            (df[\"issue\"] <= utcvalid) & (df[\"expire\"] > utcvalid)\n        ]\n    else:\n        df2 = df\n    if df2.empty:\n        mp.ax.text(\n            0.5,\n            0.5,\n            \"Event No Longer Active\",\n            zorder=1000,\n            transform=mp.ax.transAxes,\n            fontsize=24,\n            bbox=dict(color=\"white\"),\n            ha=\"center\",\n        )\n    else:\n        # We have the geometries already, so can't we just use them?\n        # The issue is that pyiem doesn't really support zones changes\n        (\n            df2.to_crs(mp.panels[0].crs).plot(\n                ax=mp.panels[0].ax,\n                aspect=None,\n                ec=\"white\",\n                fc=df2[\"color\"].values,\n                zorder=Z_FILL,\n            )\n        )\n\n    if not sbwdf.empty:\n        color = vtec.NWS_COLORS.get(f\"{p1}.{s1}\", \"#FF0000\")\n        poly = sbwdf.iloc[0][\"geom\"]\n        df2 = sbwdf[\n            (sbwdf[\"polygon_begin\"] <= utcvalid)\n            & (sbwdf[\"polygon_end\"] > utcvalid)\n        ]\n        if not df2.empty:\n            # draw new\n            mp.panels[0].add_geometries(\n                [poly],\n                LATLON,\n                facecolor=\"None\",\n                edgecolor=\"k\",\n                zorder=Z_OVERLAY2,\n            )\n            poly = df2.iloc[0][\"geom\"]\n            mp.panels[0].add_geometries(\n                [poly],\n                LATLON,\n                facecolor=color,\n                alpha=0.5,\n                edgecolor=\"k\",\n                zorder=Z_OVERLAY2,\n            )\n    if ctx[\"n\"] != \"off\" and (\n        (p1 in [\"SV\", \"TO\", \"FF\", \"MA\"] and s1 == \"W\") or ctx[\"n\"] == \"on\"\n    ):\n        prod = \"N0Q\" if df[\"issue\"].iloc[0].year > 2010 else \"N0R\"\n        radval = mp.overlay_nexrad(\n            utcvalid.to_pydatetime().replace(tzinfo=timezone.utc),\n            product=prod,\n            caxpos=(0.02, 0.07, 0.3, 0.005),\n        )\n        if radval is not None:\n            tstamp = radval.astimezone(ZoneInfo(tzname)).strftime(\"%-I:%M %p\")\n            mp.ax.text(\n                0.01,\n                0.99,\n                f\"NEXRAD: {tstamp}\",\n                transform=mp.ax.transAxes,\n                bbox=dict(color=\"white\"),\n                va=\"top\",\n                zorder=Z_OVERLAY2_LABEL + 100,\n            )\n    mp.fill_cwas(\n        {\"HFO\": 0},\n        ec=\"green\",\n        fc=\"None\",\n        plotmissing=True,\n        draw_colorbar=False,\n        lw=2,\n    )\n    return mp.fig, df.drop(\"simple_geom\", axis=1)\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p209.py",
    "content": "\"\"\"\nThis plot presents the weekly change in a given USDA NASS Crop\nProgress report variable.  The units of the change are expressed as percentage\npoints and not a true percentage.  For example, if the first value was 30% and\nthe next value was 50%, the change in percentage points is 20.\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.colorbar import ColorbarBase\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes, get_cmap\nfrom pyiem.reference import state_names\n\nPDICT = {\n    \"PCT PLANTED\": \"Planting\",\n    \"PCT EMERGED\": \"Emerged\",\n    \"PCT DENTED\": \"Percent Dented\",\n    \"PCT COLORING\": \"Percent Coloring\",\n    \"PCT SETTING PODS\": \"Percent Setting Pods\",\n    \"PCT DROPPING LEAVES\": \"Percent Dropping Leaves\",\n    \"PCT HARVESTED\": \"Harvest (Grain)\",\n}\n\nPDICT2 = {\"CORN\": \"Corn\", \"SOYBEANS\": \"Soybean\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 3600, \"nass\": True, \"data\": True}\n    today = datetime.today()\n    desc[\"arguments\"] = [\n        dict(type=\"state\", name=\"state\", default=\"IA\", label=\"Select State:\"),\n        dict(\n            type=\"year\",\n            min=1979,\n            name=\"syear\",\n            default=1979,\n            label=\"Start Year for Plot:\",\n        ),\n        dict(\n            type=\"year\",\n            min=1979,\n            name=\"eyear\",\n            default=today.year,\n            label=\"End Year for Plot:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"unit_desc\",\n            default=\"PCT PLANTED\",\n            options=PDICT,\n            label=\"Which Operation?\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"commodity_desc\",\n            default=\"CORN\",\n            options=PDICT2,\n            label=\"Which Crop?\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"jet\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef get_data(ctx):\n    \"\"\"The data we want and the data we need\"\"\"\n    unit_desc = ctx[\"unit_desc\"].upper()\n    commodity_desc = ctx[\"commodity_desc\"].upper()\n\n    util_practice_desc = (\n        \"GRAIN\"\n        if (unit_desc == \"PCT HARVESTED\" and commodity_desc == \"CORN\")\n        else \"ALL UTILIZATION PRACTICES\"\n    )\n    params = {\n        \"cd\": commodity_desc,\n        \"ud\": unit_desc,\n        \"state\": ctx[\"state\"][:2],\n        \"upd\": util_practice_desc,\n        \"syear\": ctx[\"syear\"],\n        \"eyear\": ctx[\"eyear\"],\n    }\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            select year, week_ending, num_value, state_alpha\n            from nass_quickstats\n            where commodity_desc = :cd and statisticcat_desc = 'PROGRESS'\n            and unit_desc = :ud and state_alpha = :state and\n            util_practice_desc = :upd and year >= :syear and year <= :eyear\n            and num_value is not null\n            ORDER by state_alpha, week_ending\n        \"\"\"),\n            conn,\n            params=params,\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No results found for query!\")\n    df[\"week_ending\"] = pd.to_datetime(df[\"week_ending\"])\n    df[\"doy\"] = df[\"week_ending\"].dt.dayofyear\n    df = df.set_index(\"week_ending\")\n    df[\"delta\"] = df.groupby(\"year\")[\"num_value\"].diff().fillna(0)\n    return df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    df = get_data(ctx)\n\n    cmap = get_cmap(ctx[\"cmap\"])\n    maxval = df[\"delta\"].max()\n    if maxval > 50:\n        bins = np.arange(0, 101, 10)\n    elif maxval > 25:\n        bins = np.arange(0, 51, 5)\n    else:\n        bins = np.arange(0, 21, 2)\n    bins[0] = 0.01\n    norm = mpcolors.BoundaryNorm(bins, cmap.N)\n\n    title = (\n        f\"USDA NASS Weekly {ctx['unit_desc']} \"\n        f\"{PDICT2.get(ctx['commodity_desc'])} Progress for \"\n        f\"{state_names[ctx['state']]}, % {PDICT.get(ctx['unit_desc'])} over \"\n        \"weekly periods\"\n    )\n    subtitle = \"yearly max labelled on left hand side\"\n\n    (fig, ax) = figure_axes(apctx=ctx, title=title, subtitle=subtitle)\n\n    yearmax = df[[\"year\", \"delta\"]].groupby(\"year\").max()\n    for year, df2 in df.groupby(\"year\"):\n        for _, row in df2.iterrows():\n            # NOTE: minus 3.5 to center the 7 day bar\n            ax.bar(\n                row[\"doy\"] - 3.5,\n                1,\n                bottom=year - 0.5,\n                width=7,\n                ec=\"None\",\n                fc=cmap(norm([row[\"delta\"]]))[0],\n            )\n\n    sts = datetime(2000, 1, 1) + timedelta(days=int(df[\"doy\"].min()))\n    ets = datetime(2000, 1, 1) + timedelta(days=int(df[\"doy\"].max()))\n    now = sts\n    interval = timedelta(days=1)\n    jdays = []\n    labels = []\n    while now < ets:\n        if now.day in [1, 8, 15, 22]:\n            fmt = \"%-d\\n%b\" if now.day == 1 else \"%-d\"\n            jdays.append(int(now.strftime(\"%j\")))\n            labels.append(now.strftime(fmt))\n        now += interval\n\n    ax.set_xticks(jdays)\n    ax.set_xticklabels(labels)\n\n    minyear = df[\"year\"].min()\n    maxyear = df[\"year\"].max()\n    ylabels = []\n    yticks = []\n    for yr in range(minyear, maxyear + 1):\n        if yr in yearmax.index:\n            if yr % 5 == 0:\n                ylabels.append(f\"{yr} {yearmax.at[yr, 'delta']:.0f}\")\n            else:\n                ylabels.append(f\"{yearmax.at[yr, 'delta']:.0f}\")\n            yticks.append(yr)\n    ax.set_yticks(yticks)\n    ax.set_yticklabels(ylabels, fontsize=10)\n\n    ax.set_ylim(minyear - 0.5, maxyear + 0.5)\n    ax.set_xlim(min(jdays), max(jdays))\n    ax.grid(linestyle=\"-\", linewidth=\"0.5\", color=\"#EEEEEE\", alpha=0.7)\n\n    ax.set_position([0.13, 0.1, 0.71, 0.78])\n    cax = fig.add_axes(\n        [0.86, 0.12, 0.03, 0.75], frameon=False, yticks=[], xticks=[]\n    )\n    cb = ColorbarBase(cax, norm=norm, cmap=cmap)\n    cb.set_label(\"% Acres\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p210.py",
    "content": "\"\"\"\nThis application generates a map of the per WFO office usage of a\ngiven text product identifier based on unofficial IEM archives of NWS\nText Product data.  The three character IDs presented here are sometimes\ncalled the AWIPS ID or AFOS ID.</p>\n\n<p>If you pick the \"Year of First/Last Issuance\",\nplease be careful with the\nstart datetime setting as it will floor the time period that products\nare searched for.</p>\n\n<p>The IEM Archives are generally reliable back to 2001, so please note\nthat any 2001 values plotted on the map as the first year would be a false\npositive.</p>\n\n<p>Running a plot for multiple years of data will be somewhat slow\n(30+ seconds), so please be patient with it!</p>\n\n<p><a href=\"?q=235\">Autoplot 235</a> presents a monthly/yearly chart of\nissuance counts for a single Weather Forecast Offices.</p>\n\"\"\"\n\nfrom datetime import timedelta, timezone\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot.geoplot import MapPlot\nfrom pyiem.reference import prodDefinitions\nfrom pyiem.util import utc\n\nPDICT = {\n    \"count\": \"Issuance Count\",\n    \"last\": \"Year of Last Issuance\",\n    \"first\": \"Year of First Issuance\",\n}\nPDICT2 = {\n    \"cwsu\": \"Center Weather Service Unit (CWSU)\",\n    \"rfc\": \"River Forecast Center (RFC)\",\n    \"cwa\": \"Weather Forecast Office (WFO) / CWA\",\n}\n\n\ndef fix():\n    \"\"\"muck with the prodDefinitions to get the key included\"\"\"\n    for key, val in prodDefinitions.items():\n        if val.startswith(\"[\"):\n            continue\n        prodDefinitions[key] = f\"[{key}] {prodDefinitions[key]}\"\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    fix()\n    desc = {\"description\": __doc__, \"cache\": 300, \"data\": True}\n    now = utc() + timedelta(days=1)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"pil\",\n            default=\"AFD\",\n            label=\"Select 3 Character Product ID (AWIPS ID / AFOS)\",\n            options=prodDefinitions,\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            options=PDICT,\n            label=\"Statistic to Plot\",\n            default=\"count\",\n        ),\n        {\n            \"type\": \"select\",\n            \"name\": \"w\",\n            \"options\": PDICT2,\n            \"label\": \"Summarize by:\",\n            \"default\": \"cwa\",\n        },\n        dict(\n            type=\"datetime\",\n            name=\"sts\",\n            default=now.strftime(\"%Y/01/01 0000\"),\n            label=\"Search archive starting at (UTC Timestamp):\",\n            min=\"2001/01/01 0000\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"ets\",\n            default=now.strftime(\"%Y/%m/%d 0000\"),\n            label=\"Search archive ending at (UTC Timestamp):\",\n            min=\"2001/01/01 0000\",\n            max=now.strftime(\"%Y/%m/%d 2359\"),\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"jet\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    ctx[\"sts\"] = ctx[\"sts\"].replace(tzinfo=timezone.utc)\n    ctx[\"ets\"] = ctx[\"ets\"].replace(tzinfo=timezone.utc)\n    fix()\n    pil = ctx[\"pil\"][:3]\n    ctx[\"ets\"] = min(ctx[\"ets\"], utc())\n\n    with get_sqlalchemy_conn(\"afos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n    SELECT source, pil, min(entered at time zone 'UTC') as first,\n    max(entered at time zone 'UTC') as last, count(*) from products\n    WHERE substr(pil, 1, 3) = :pil and entered >= :sts and entered < :ets\n    GROUP by source, pil ORDER by source, pil ASC\"\"\"),\n            conn,\n            params={\"pil\": pil, \"sts\": ctx[\"sts\"], \"ets\": ctx[\"ets\"]},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No text products found for query, sorry.\")\n\n    data = {}\n    subtitle = \"\"\n    if ctx[\"var\"] == \"count\":\n        gdf = df.groupby(\"source\").sum(numeric_only=True)  # dt makes no sense\n        subtitle = f\"Total: {gdf['count'].sum():,.0f}\"\n    elif ctx[\"var\"] == \"last\":\n        gdf = df.groupby(\"source\").max()\n    else:  # first\n        gdf = df.groupby(\"source\").min()\n    minval = 1\n    maxval = gdf[\"count\"].max()\n    if ctx[\"var\"] in [\"last\", \"first\"]:\n        minval = gdf[ctx[\"var\"]].min().year\n        maxval = gdf[ctx[\"var\"]].max().year\n    if (maxval - minval) < 10:\n        bins = range(minval - 1, maxval + 2)\n    else:\n        bins = np.linspace(minval, maxval + 2, 10, dtype=\"i\")\n    for source, row in gdf.iterrows():\n        if source == \"PABR\":\n            continue\n        key = source[1:]\n        if ctx[\"var\"] == \"count\":\n            data[key] = row[\"count\"]\n        else:\n            data[key] = row[ctx[\"var\"]].year\n\n    mp = MapPlot(\n        apctx=ctx,\n        title=f\"NWS {PDICT[ctx['var']]} of {prodDefinitions.get(pil, pil)}\",\n        subtitle=(\n            f\"Plot valid between {ctx['sts']:%d %b %Y %H:%M} UTC \"\n            f\"and {ctx['ets']:%d %b %Y %H:%M} UTC, \"\n            f\"based on unofficial IEM Archives.{subtitle}\"\n        ),\n        sector=\"nws\",\n        nocaption=True,\n    )\n    func = {\n        \"cwa\": mp.fill_cwas,\n        \"cwsu\": mp.fill_cwsu,\n        \"rfc\": mp.fill_rfc,\n    }\n    func[ctx[\"w\"]](\n        data,\n        ilabel=True,\n        lblformat=\"%.0f\",\n        cmap=ctx[\"cmap\"],\n        extend=\"neither\",\n        bins=bins,\n        units=\"count\" if ctx[\"var\"] == \"count\" else \"year\",\n        labelbuffer=0,\n    )\n    return mp.fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p211.py",
    "content": "\"\"\"\nThis application generates charts of 1 minute interval ASOS data,\nwhere available.  It presently lists all ASOS sites without limiting them\nto which the IEM has data for, sorry.  You can only select up to 5 days\nworth of data at this time.  Any reported 1 minute precipitation value\nover 0.50 inches is omitted as bad data.\n\"\"\"\n\nfrom datetime import timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.dates import DateFormatter\nfrom metpy.units import masked_array, units\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure, figure_axes\nfrom pyiem.util import utc\n\nPDICT = {\n    \"meteo\": \"Meteogram Style (Temp/Wind/Pressure)\",\n    \"precip\": \"Precipitation Plot\",\n    \"wind\": \"Wind Speed + Direction Plot [MPH]\",\n    \"windkt\": \"Wind Speed + Direction Plot [KNOTS]\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"data\": True, \"description\": __doc__}\n    sts = utc() - timedelta(days=5)\n    desc[\"gallery\"] = {\n        \"sts\": \"2023-08-05 0600\",\n        \"ets\": \"2023-08-05 0930\",\n        \"zstation\": \"BRL\",\n        \"network\": \"IA_ASOS\",\n    }\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"ptype\",\n            options=PDICT,\n            default=\"precip\",\n            label=\"Available Plot Type:\",\n        ),\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"sts\",\n            default=sts.strftime(\"%Y/%m/%d 0000\"),\n            label=\"Search archive starting at (UTC Timestamp) (inclusive):\",\n            min=\"2000/01/01 0000\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"ets\",\n            default=sts.strftime(\"%Y/%m/%d 2359\"),\n            label=\"Search archive ending at (UTC Timestamp) (exclusive):\",\n            min=\"2000/01/01 0000\",\n        ),\n    ]\n    return desc\n\n\ndef get_data(ctx):\n    \"\"\"Fetch Data.\"\"\"\n    with get_sqlalchemy_conn(\"asos1min\") as conn:\n        df = pd.read_sql(\n            \"SELECT valid at time zone 'UTC' as valid, \"\n            \"case when precip > 0.49 then null else precip end as precip, \"\n            \"sknt, drct, gust_sknt, tmpf, dwpf, pres1 \"\n            \"from alldata_1minute WHERE station = %s \"\n            \"and valid >= %s and valid < %s ORDER by valid ASC\",\n            conn,\n            params=(ctx[\"zstation\"], ctx[\"sts\"], ctx[\"ets\"]),\n            index_col=\"valid\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No database entries found for station and dates.\")\n    # assign the UTC timezone to the index\n    df.index = df.index.tz_localize(timezone.utc)\n    # Complete the dataframe for the time period of interest\n    df = df.reindex(\n        pd.date_range(\n            ctx[\"sts\"], ctx[\"ets\"] - timedelta(minutes=1), freq=\"1min\"\n        )\n    )\n    df.index.name = \"utc_valid\"\n    df = df.reset_index()\n    # Create a local valid time column\n    ctx[\"tz\"] = ZoneInfo(ctx[\"_nt\"].sts[ctx[\"zstation\"]][\"tzname\"])\n    df[\"local_valid\"] = df[\"utc_valid\"].dt.tz_convert(ctx[\"tz\"])\n    df[\"oprecip\"] = df[\"precip\"]\n    df[\"precip\"] = df[\"precip\"].fillna(0)\n    return df\n\n\ndef do_xaxis(ctx, ax, show_label=True):\n    \"\"\"Make a sensible xaxis.\"\"\"\n    timerange = ctx[\"ets\"] - ctx[\"sts\"]\n    if timerange > timedelta(days=1):\n        fmt = \"%-m/%-d\\n%-I %p\"\n    else:\n        fmt = \"%-I:%M %p\"\n    ax.xaxis.set_major_formatter(DateFormatter(fmt, tz=ctx[\"tz\"]))\n    if show_label:\n        ax.set_xlabel(f\"Plot Timezone: {ctx['tz']}\")\n\n\ndef make_wind_plot(ctx, ptype):\n    \"\"\"Generate a wind plot, please.\"\"\"\n    df = ctx[\"df\"]\n    gust = pd.to_numeric(df[\"gust_sknt\"])\n    sknt = pd.to_numeric(df[\"sknt\"])\n    unit = \"kt\"\n    if ptype == \"wind\":\n        gust = masked_array(gust, units(\"knots\")).to(units(\"miles per hour\")).m\n        sknt = masked_array(sknt, units(\"knots\")).to(units(\"miles per hour\")).m\n        unit = \"mph\"\n    title = f\"{get_ttitle(df)} {ctx['_sname']}\"\n    subtitle = (\n        \"One Minute Interval Wind Speed + Direction, \"\n        f\"{df['sknt'].isna().sum()} missing minutes,\"\n        f\"Peak Speed: {np.nanmax(sknt):.1f} {unit} \"\n        f\"Peak Gust: {np.nanmax(gust):.1f} {unit}\"\n    )\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    ax.bar(\n        df[\"local_valid\"].values,\n        gust,\n        zorder=1,\n        width=1.0 / 1440.0,\n        label=\"Gust\",\n    )\n    ax.bar(\n        df[\"local_valid\"].values,\n        sknt,\n        zorder=2,\n        width=1.0 / 1440.0,\n        label=\"Speed\",\n    )\n    ax.set_ylabel(f\"Wind Speed / Gust [{unit}]\")\n    ax.grid(True)\n    ax.legend(loc=\"best\")\n    ax2 = ax.twinx()\n    ax2.scatter(df[\"local_valid\"].values, df[\"drct\"].values, c=\"k\")\n    ax2.set_ylabel(\"Wind Direction\")\n    ax2.set_yticks(np.arange(0, 361, 45))\n    ax2.set_yticklabels([\"N\", \"NE\", \"E\", \"SE\", \"S\", \"SW\", \"W\", \"NW\", \"N\"])\n    ax2.set_ylim(-1, 361)\n\n    do_xaxis(ctx, ax)\n    ax.set_xlim(df[\"local_valid\"].min(), df[\"local_valid\"].max())\n    return fig\n\n\ndef get_ttitle(df):\n    \"\"\"Helper.\"\"\"\n    lvmin, lvmax = df[\"local_valid\"].min(), df[\"local_valid\"].max()\n    title = lvmin.strftime(\"%-d %b %Y\")\n    if lvmin.date() != lvmax.date():\n        title = f\"{lvmin:%-d %b %Y} - {lvmax:%-d %b %Y}\"\n    return title\n\n\ndef make_precip_plot(ctx):\n    \"\"\"Generate a precip plot, please.\"\"\"\n    df = ctx[\"df\"]\n    # Accumulate the precipitation\n    df[\"precip_accum\"] = df[\"precip\"].cumsum()\n    df[\"precip_rate1\"] = df[\"precip\"] * 60.0\n    df[\"precip_rate15\"] = df[\"precip\"].rolling(window=15).sum() * 4.0\n    df[\"precip_rate60\"] = df[\"precip\"].rolling(window=60).sum()\n    subtitle = (\n        f\"{df['precip_accum'].max():.2f} inches total plotted, \"\n        f\"{df['oprecip'].isna().sum()} missing minutes\"\n    )\n    title = f\"{get_ttitle(df)} {ctx['_sname']} :: One Minute Rainfall\"\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    ax.set_position([0.06, 0.1, 0.81, 0.78])\n\n    ax.bar(\n        df[\"local_valid\"].values,\n        df[\"precip_rate1\"],\n        width=1.0 / 1440.0,\n        color=\"b\",\n        label=\"Hourly Rate over 1min\",\n        zorder=1,\n    )\n    ax.plot(\n        df[\"local_valid\"].values,\n        df[\"precip_rate15\"],\n        color=\"tan\",\n        label=\"Hourly Rate over 15min\",\n        linewidth=3.5,\n        zorder=3,\n    )\n    ax.plot(\n        df[\"local_valid\"].values,\n        df[\"precip_rate60\"],\n        color=\"r\",\n        label=\"Actual Hourly Rate\",\n        lw=3.5,\n        zorder=3,\n    )\n    ax.plot(\n        df[\"local_valid\"].values,\n        df[\"precip_accum\"],\n        color=\"k\",\n        label=\"Accumulation\",\n        lw=3.5,\n        zorder=3,\n    )\n\n    # Find max precip\n    df2 = df[df[\"precip\"] == df[\"precip\"].max()]\n    if not df2.empty:\n        idx = df2.index.values[0]\n        x = 1.02\n        y = 0.95\n        ax.text(\n            x,\n            y,\n            \"1 Minute Precip\\nNear Peak Rate\",\n            transform=ax.transAxes,\n            bbox=dict(fc=\"white\", ec=\"None\"),\n        )\n        y -= 0.06\n        for i in range(max([0, idx - 8]), idx + 8):\n            if i >= len(df.index):\n                break\n            row = df.iloc[i]\n            ax.text(\n                x,\n                y,\n                f\"{row['local_valid']:%-I:%M %p} {row['precip']:.2f}\",\n                transform=ax.transAxes,\n                fontsize=10,\n                bbox=dict(fc=\"white\", ec=\"None\"),\n            )\n            y -= 0.04\n\n    ax.set_ylabel(\"Precipitation Rate [inch/hour]\")\n    ax.grid(True)\n    ax.legend(loc=\"best\", ncol=1)\n    ymax = max([7, df[\"precip_accum\"].max(), df[\"precip_rate1\"].max()])\n    ax.set_ylim(0, int(ymax + 1))\n    ax.set_yticks(range(0, int(ymax + 1), 1))\n    do_xaxis(ctx, ax)\n    ax.set_xlim(df[\"local_valid\"].min(), df[\"local_valid\"].max())\n    return fig\n\n\ndef make_meteo_plot(ctx):\n    \"\"\"Generate a meteogram plot, please.\"\"\"\n    df = ctx[\"df\"]\n    title = f\"{get_ttitle(df)} {ctx['_sname']} :: One Minute Meteogram\"\n    fig = figure(apctx=ctx, title=title)\n\n    axheight = 0.22\n    # -----------------------------\n    ax = fig.add_axes((0.1, 0.69, 0.85, axheight))\n    ax.plot(\n        df[\"local_valid\"].values,\n        df[\"tmpf\"].values,\n        zorder=1,\n        label=\"Air Temp\",\n    )\n    ax.plot(\n        df[\"local_valid\"].values,\n        df[\"dwpf\"].values,\n        zorder=1,\n        label=\"Dew Point\",\n    )\n    ax.grid(True)\n    ax.set_ylabel(\"Temperature [°F]\")\n    do_xaxis(ctx, ax, False)\n\n    # -----------------------------\n\n    ax = fig.add_axes((0.1, 0.37, 0.85, axheight))\n    df[\"gust\"] = 0\n    if df[\"gust_sknt\"].notna().any():\n        df[\"gust\"] = (\n            masked_array(df[\"gust_sknt\"].to_numpy(), units(\"knots\"))\n            .to(units(\"miles per hour\"))\n            .m\n        )\n        df2 = df[df[\"gust\"].notna()]\n        ax.bar(\n            df2[\"local_valid\"].values,\n            df2[\"gust\"].values,\n            zorder=1,\n            width=1.0 / 1440.0,\n            label=\"Wind Gust\",\n        )\n    if df[\"sknt\"].notna().any():\n        df[\"sknt\"] = (\n            masked_array(df[\"sknt\"].to_numpy(), units(\"knots\"))\n            .to(units(\"miles per hour\"))\n            .m\n        )\n        df2 = df[df[\"sknt\"].notna()]\n        ax.bar(\n            df2[\"local_valid\"].values,\n            df2[\"sknt\"].values,\n            zorder=2,\n            width=1.0 / 1440.0,\n            label=\"Wind Speed\",\n        )\n    ax.legend(loc=(0, 1), ncol=3)\n    ax2 = ax.twinx()\n    ax2.scatter(\n        df[\"local_valid\"].values,\n        df[\"drct\"].values,\n        zorder=1,\n        edgecolor=\"k\",\n        facecolor=\"white\",\n    )\n    ax2.set_ylim(0, 360)\n    ax2.set_yticks(range(0, 361, 45))\n    ax2.set_yticklabels([\"N\", \"NE\", \"E\", \"SE\", \"S\", \"SW\", \"W\", \"NW\", \"N\"])\n    ax.grid(True)\n    ymax = max([7, df[\"gust\"].max(), df[\"sknt\"].max()])\n    for i in range(10):\n        if i * 8 > ymax:\n            ax.set_ylim(0, i * 8)\n            ax.set_yticks(range(0, i * 8 + 1, i))\n            break\n    ax.set_ylabel(\"Wind Speed [mph]\")\n    do_xaxis(ctx, ax, False)\n\n    # -----------------------------\n    ax = fig.add_axes((0.1, 0.09, 0.85, axheight))\n    ax.plot(\n        df[\"local_valid\"].values,\n        df[\"pres1\"].values,\n        zorder=1,\n    )\n    ax.grid(True)\n    ax.set_ylabel(\"Pressure [in Hg]\")\n    do_xaxis(ctx, ax)\n\n    return fig\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    if \"HAS1MIN\" not in ctx[\"_nt\"].sts[ctx[\"zstation\"]][\"attributes\"]:\n        raise NoDataFound(\"Sorry, the IEM has no one-minute data for station.\")\n    # Make timestamps tzaware\n    for col in [\"sts\", \"ets\"]:\n        ctx[col] = ctx[col].replace(tzinfo=timezone.utc)\n    if (ctx[\"ets\"] - ctx[\"sts\"]) > timedelta(days=5):\n        raise NoDataFound(\"Too much data requested, only < 5 days supported.\")\n    ctx[\"df\"] = get_data(ctx)\n\n    if ctx[\"ptype\"] == \"precip\":\n        fig = make_precip_plot(ctx)\n    elif ctx[\"ptype\"] == \"meteo\":\n        fig = make_meteo_plot(ctx)\n    else:  # wind windkt\n        fig = make_wind_plot(ctx, ctx[\"ptype\"])\n    # Need to drop timezone for excel output\n    for col in [\"utc_valid\", \"local_valid\"]:\n        ctx[\"df\"][col] = ctx[\"df\"][col].dt.tz_localize(None)\n    return fig, ctx[\"df\"]\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p212.py",
    "content": "\"\"\"\nThis plot presents the daily climatology range of a sounding\nvariable along with a given year's values.\n\n<p>The Storm Prediction Center website has a\n<a href=\"https://www.spc.noaa.gov/exper/soundingclimo/\">\nvery similiar tool</a> that you may want to check out.</p>\n\n<p>The max and min monthly values are labeled within the plot.</p>\n\n<p>If you select to plot both 00 and 12 UTC, the climatology is computed\nseperately at 00 and 12 UTC.  The chart gets more noisey when doing so.</p>\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport matplotlib.dates as mdates\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom pyiem.util import mm2inch\n\nPDICT = {\n    \"00\": \"00 UTC\",\n    \"12\": \"12 UTC\",\n    \"18\": \"18 UTC\",\n    \"afternoon\": \"18 + 00 UTC\",\n    \"both\": \"00 + 12 UTC\",\n}\nPDICT3 = {\n    \"tmpc\": \"Air Temperature (°C)\",\n    \"dwpc\": \"Dew Point (°C)\",\n    \"el_agl_m\": \"Equalibrium Level (m AGL)\",\n    \"el_pressure_hpa\": \"Equalibrium Pressure (hPa)\",\n    \"el_tmpc\": \"Equalibrium Level Temperature (°C)\",\n    \"height\": \"Height (m)\",\n    \"lcl_agl_m\": \"Lifted Condensation Level (m AGL)\",\n    \"lcl_pressure_hpa\": \"Lifted Condensation Level (hPa)\",\n    \"lcl_tmpc\": \"Lifted Condensation Level Temperature (°C)\",\n    \"lfc_agl_m\": \"Lifted of Free Convection (m AGL)\",\n    \"lfc_pressure_hpa\": \"Lifted of Free Convection (hPa)\",\n    \"lfc_tmpc\": \"Lifted of Free Convection Temperature (°C)\",\n    \"mlcape_jkg\": \"Mixed Layer (100hPa) CAPE (J/kg)\",\n    \"mlcin_jkg\": \"Mixed Layer (100hPa) CIN (J/kg)\",\n    \"mucape_jkg\": \"Most Unstable CAPE (J/kg)\",\n    \"mucin_jkg\": \"Most Unstable CIN (J/kg)\",\n    \"pwater_mm\": \"Precipitable Water (mm)\",\n    \"pwater_in\": \"Precipitable Water (inch)\",\n    \"shear_sfc_1km_smps\": \"Shear 0-1km AGL Magnitude (m/s)\",\n    \"shear_sfc_3km_smps\": \"Shear 0-3km AGL Magnitude (m/s)\",\n    \"shear_sfc_6km_smps\": \"Shear 0-6km AGL Magnitude (m/s)\",\n    \"srh_sfc_1km_neg\": \"Storm Relative Helicity Negative (0-1km) (m2/s2)\",\n    \"srh_sfc_1km_pos\": \"Storm Relative Helicity Positive (0-1km) (m2/s2)\",\n    \"srh_sfc_1km_total\": \"Storm Relative Helicity Total (0-1km) (m2/s2)\",\n    \"srh_sfc_3km_neg\": \"Storm Relative Helicity Negative (0-3km) (m2/s2)\",\n    \"srh_sfc_3km_pos\": \"Storm Relative Helicity Positive (0-3km) (m2/s2)\",\n    \"srh_sfc_3km_total\": \"Storm Relative Helicity Total (0-3km) (m2/s2)\",\n    \"sbcape_jkg\": \"Surface Based CAPE (J/kg)\",\n    \"sbcin_jkg\": \"Surface Based CIN (J/kg)\",\n    \"sweat_index\": \"Sweat Index\",\n    \"total_totals\": \"Total Totals (°C)\",\n    \"smps\": \"Wind Speed (mps)\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"highcharts\"] = True\n    desc[\"arguments\"] = [\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"RAOB\",\n            default=\"_OAX\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"year\",\n            min=1946,\n            default=date.today().year,\n            name=\"year\",\n            label=\"Year to Plot\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"hour\",\n            default=\"00\",\n            options=PDICT,\n            label=\"Which Routine Sounding:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"tmpc\",\n            options=PDICT3,\n            label=\"Which Sounding Variable to Plot:\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"level\",\n            default=500,\n            label=\"Which Pressure (hPa) level:\",\n        ),\n    ]\n    return desc\n\n\ndef get_data(ctx: dict):\n    \"\"\"Get the data for what was choosen.\"\"\"\n    station = ctx[\"station\"]\n    if station not in ctx[\"_nt\"].sts:  # This is needed.\n        raise NoDataFound(\"Unknown station metadata.\")\n    stations = [station]\n    name = ctx[\"_nt\"].sts[station][\"name\"]\n    if station.startswith(\"_\"):\n        name = ctx[\"_nt\"].sts[station][\"name\"].split(\"--\")[0]\n        stations = (\n            ctx[\"_nt\"].sts[station][\"name\"].split(\"--\")[1].strip().split(\" \")\n        )\n    varname = ctx[\"var\"]\n    varname_final = ctx[\"var\"]\n    if varname == \"pwater_in\":\n        varname = \"pwater_mm\"\n    level = ctx[\"level\"]\n    params = {\n        \"stations\": stations,\n        \"level\": level,\n    }\n    hour = ctx[\"hour\"]\n    if hour == \"both\":\n        params[\"hrs\"] = [0, 12]\n    elif hour == \"afternoon\":\n        params[\"hrs\"] = [18, 0]\n    else:\n        params[\"hrs\"] = [\n            int(hour),\n        ]\n    if varname in [\"tmpc\", \"dwpc\", \"height\", \"smps\"]:\n        ctx[\"leveltitle\"] = f\" @ {level} hPa\"\n        with get_sqlalchemy_conn(\"raob\") as conn:\n            dfin = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n    select extract(year from f.valid at time zone 'UTC')::int as year,\n    f.valid at time zone 'UTC' as utc_valid, {varname}\n    from raob_profile p JOIN raob_flights f on (p.fid = f.fid)\n    WHERE f.station = ANY(:stations)\n    and extract(hour from f.valid at time zone 'UTC') = any(:hrs)\n    and p.pressure = :level  and {varname} is not null ORDER by valid ASC\n                    \"\"\",\n                    varname=varname,\n                ),\n                conn,\n                params=params,\n                index_col=\"utc_valid\",\n            )\n    else:\n        ctx[\"leveltitle\"] = \"\"\n        with get_sqlalchemy_conn(\"raob\") as conn:\n            dfin = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n    select extract(year from valid at time zone 'UTC')::int as year,\n    valid at time zone 'UTC' as utc_valid, {varname}\n    from raob_flights f WHERE station = ANY(:stations) and\n    {varname} is not null\n    and extract(hour from f.valid at time zone 'UTC') = any(:hrs)\n    ORDER by valid ASC\"\"\",\n                    varname=varname,\n                ),\n                conn,\n                params=params,\n                index_col=\"utc_valid\",\n            )\n    if not dfin.empty:\n        # Drop duplicates :(\n        dfin = dfin.groupby(\"utc_valid\").first()\n    if dfin.empty:\n        raise NoDataFound(\"No Data Found.\")\n    if varname_final == \"pwater_in\":\n        dfin[\"pwater_in\"] = mm2inch(dfin[\"pwater_mm\"])\n    dfin[\"sday\"] = dfin.index.strftime(\"%m%d%H\")\n    # Drop leapday if this year does not have it.\n    try:\n        date(ctx[\"year\"], 2, 29)\n    except ValueError:\n        dfin = dfin[dfin[\"sday\"].str.slice(0, 4) != \"0229\"]\n    # create the climatology dataframe\n    df = dfin[[\"sday\", ctx[\"var\"]]].groupby(\"sday\").describe()\n    # Merge in this year's obs\n    df[f\"{ctx['var']}_{ctx['year']}\"] = dfin[\n        dfin[\"year\"] == ctx[\"year\"]\n    ].set_index(\"sday\")[ctx[\"var\"]]\n    # Merge in the year of max value\n    mx = (\n        dfin.sort_values(ctx[\"var\"], ascending=False)\n        .drop_duplicates(\"sday\")\n        .set_index(\"sday\")\n    )\n    df[f\"{ctx['var']}_max_year\"] = mx[\"year\"]\n    # Merge in the year of max value\n    mx = (\n        dfin.sort_values(ctx[\"var\"], ascending=True)\n        .drop_duplicates(\"sday\")\n        .set_index(\"sday\")\n    )\n    df[f\"{ctx['var']}_min_year\"] = mx[\"year\"]\n\n    # Create a utc_valid column for later usage\n    df[\"utc_valid\"] = pd.to_datetime(\n        str(ctx[\"year\"]) + df.index,\n        format=\"%Y%m%d%H\",\n    ).tz_localize(\"UTC\")\n    ctx[\"df\"] = df\n    ctx[\"dfin\"] = dfin\n\n    ctx[\"title\"] = (\n        f\"{station} {name} {PDICT[ctx['hour']]} Sounding \"\n        f\"({dfin['year'].index[0]:%Y-%m-%d %H}z - \"\n        f\"{dfin['year'].index[-1]:%Y-%m-%d %H}z)\\n\"\n        f\"{PDICT3[varname]} {ctx['leveltitle']}\"\n    )\n\n\ndef get_highcharts(ctx: dict) -> str:\n    \"\"\"Make highcharts output.\"\"\"\n    get_data(ctx)\n    df = ctx[\"df\"]\n    df[\"ticks\"] = df[\"utc_valid\"].astype(\"int64\") // 1e3\n    units = PDICT3[ctx[\"var\"]].split()[-1].replace(\"(\", \"\").replace(\")\", \"\")\n    myyearcol = f\"{ctx['var']}_{ctx['year']}\"\n    title = ctx[\"title\"].replace(\"\\n\", \"\\\\n\")\n    tc = (\"ticks\", \"\")\n    mx = df[f\"{ctx['var']}_max_year\"]\n    mn = df[f\"{ctx['var']}_min_year\"]\n    containername = ctx[\"_e\"]\n    res = f\"\"\"\n    var max_years = {mx.values.tolist()};\n    var min_years = {mn.values.tolist()};\n\nHighcharts.chart(\"{containername}\", {{\n        title: {{\n            text: \"{title}\"\n        }},\n        exporting: {{\n            enabled: true\n        }},\n        chart: {{\n            zoomType: 'x',\n        }},\n        plotOptions: {{\n            line: {{\n                turboThreshold: 0,\n            }}\n        }},\n        xAxis: {{\n            type: 'datetime',\n            labels: {{\n                format: '{{value:%b %d}}'\n            }},\n            dateTimeLabelFormats: {{\n                day: '%b %d',\n                week: '%b %d',\n                month: '%b %d',\n                year: '%b %d'\n            }}\n        }},\n        yAxis: {{\n            title: {{\n                text: \"{PDICT3[ctx[\"var\"]]}\"\n            }}\n        }},\n        tooltip: {{\n            crosshairs: true,\n            shared: true,\n            valueSuffix: ' {units}',\n            valueDecimals: 2\n        }},\n        series: [\n            {{\n                name: \"{\" \".join(PDICT3[ctx[\"var\"]].split()[:-1])}\",\n                data: {\n        df[[\"ticks\", myyearcol]].replace({np.nan: None}).values.tolist()\n    },\n                zIndex: 3,\n                color: \"#FF0000\",\n                lineWidth: 2,\n                marker: {{\n                    enabled: false\n                }},\n                type: 'line'\n            }}, {{\n                name: \"Average\",\n                data: {\n        df[[tc, (ctx[\"var\"], \"mean\")]].replace({np.nan: None}).values.tolist()\n    },\n                zIndex: 2,\n                color: \"#000000\",\n                lineWidth: 2,\n                marker: {{\n                    enabled: false\n                }},\n                type: 'line'\n            }}, {{\n                name: \"Range\",\n                data: {\n        df[[tc, (ctx[\"var\"], \"min\"), (ctx[\"var\"], \"max\")]]\n        .replace({np.nan: None})\n        .values.tolist()\n    },\n                type: \"arearange\",\n                lineWidth: 0,\n                linkedTo: \":previous\",\n                color: \"#ADD8E6\",\n                fillOpacity: 0.3,\n                zIndex: 0,\n                tooltip: {{\n                    pointFormatter: function() {{\n                        const low = Number.isFinite(this.low) ?\n                            this.low.toFixed(2) : this.low;\n                        const high = Number.isFinite(this.high) ?\n                            this.high.toFixed(2) : this.high;\n                        const s = '<span style=\"color:' + this.color +\n                            '\">\\u25cf</span> '+\n                            this.series.name + ': <b>' + low + ' (' +\n                            min_years[this.index] +') to ' + high + ' ('+\n                            max_years[this.index] +')</b><br/>';\n                        return s;\n                    }}\n                }}\n            }}, {{\n                name: \"25-75 %tile\",\n                data: {\n        df[[tc, (ctx[\"var\"], \"25%\"), (ctx[\"var\"], \"75%\")]]\n        .replace({np.nan: None})\n        .values.tolist()\n    },\n                type: \"arearange\",\n                lineWidth: 0,\n                linkedTo: \":previous\",\n                color: \"#D2B48C\",\n                fillOpacity: 0.3,\n                zIndex: 0\n            }}\n        ]\n    }});\n    \"\"\"\n    return res.replace(\"None\", \"null\")\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    get_data(ctx)\n    df = ctx[\"df\"]\n    fig, ax = figure_axes(apctx=ctx, title=ctx[\"title\"])\n    ax.set_position([0.1, 0.1, 0.88, 0.8])\n    colname = f\"{ctx['var']}_{ctx['year']}\"\n    x = df[\"utc_valid\"].values\n    ax.plot(x, df[colname].values, label=str(ctx[\"year\"]), zorder=4, color=\"r\")\n    ax.fill_between(\n        x,\n        df[ctx[\"var\"], \"min\"].values,\n        df[ctx[\"var\"], \"max\"].values,\n        zorder=1,\n        color=\"lightblue\",\n    )\n    ax.fill_between(\n        x,\n        df[ctx[\"var\"], \"25%\"].values,\n        df[ctx[\"var\"], \"75%\"].values,\n        zorder=2,\n        color=\"tan\",\n        label=\"25-75 %tile\",\n    )\n    ax.plot(x, df[ctx[\"var\"], \"mean\"].values, color=\"k\", zorder=3, label=\"Avg\")\n    # buffer out the yaxis some more\n    maxval = ctx[\"dfin\"][ctx[\"var\"]].max()\n    minval = ctx[\"dfin\"][ctx[\"var\"]].min()\n    drange = maxval - minval\n    if drange > 0:\n        ax.set_ylim(minval - drange * 0.1, maxval + drange * 0.1)\n    dy = max(drange * 0.01, 0.01)\n\n    minmax = (\n        ctx[\"dfin\"]\n        .loc[:, ctx[\"var\"]]\n        .groupby(lambda idx_: idx_.month)\n        .agg([\"max\", \"idxmax\", \"min\", \"idxmin\"])\n    )\n    for month, row in minmax.iterrows():\n        sts = date(ctx[\"year\"], int(month), 1)\n        ets = (sts + timedelta(days=35)).replace(day=1)\n        ax.plot([sts, ets], [row[\"max\"], row[\"max\"]], zorder=3, color=\"b\")\n        ax.text(\n            sts + timedelta(days=15),\n            row[\"max\"] + dy,\n            f\"{row['idxmax'].year}\\n\"\n            f\"{row['idxmax']:%-m/%-d %H}z\\n{row['max']:.2f}\",\n            ha=\"center\",\n            bbox=dict(color=\"white\", alpha=0.5),\n        )\n        # Values near zero are very likely irrelevant\n        if abs(row[\"min\"] - 0) < 0.001:\n            continue\n        ax.plot([sts, ets], [row[\"min\"], row[\"min\"]], zorder=3, color=\"b\")\n        ax.text(\n            sts + timedelta(days=15),\n            row[\"min\"] - dy,\n            f\"{row['idxmin'].year}\\n\"\n            f\"{row['idxmin']:%-m/%-d %H}z\\n{row['min']:.2f}\",\n            ha=\"center\",\n            va=\"top\",\n            bbox=dict(color=\"white\", alpha=0.5),\n        )\n    ax.legend()\n    ax.set_ylabel(PDICT3[ctx[\"var\"]])\n    ax.grid(True)\n    ax.xaxis.set_major_locator(mdates.MonthLocator())\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%b %-d\"))\n    ax.set_xlabel(f\"Day of {ctx['year']}\")\n    if x[0] != x[-1]:\n        ax.set_xlim(x[0], x[-1])\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p213.py",
    "content": "\"\"\"\nThis application generates percentiles based on available data\nfrom the selected station.  These types of applications are good at\nidentifying bad data :(.  The date you select is used to generate the\nbottom panel of explicit percentiles for the period of interest.  The\nweek is computed for the ISO-8601 week.\n\n<p>If you generate this plot with the \"year\" option selected, you may\nget an unexpected result.  The percentiles are computed over the entire\nyear which means that about everything during the summer is near the top\nand everything during winter is near the bottom.  More understandable\nresults are found with shorter time windows of time to compute the\npercentiles.\n\"\"\"\n\nfrom datetime import date, datetime\nfrom zoneinfo import ZoneInfo\n\nimport matplotlib.dates as mdates\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.colorbar import ColorbarBase\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure, get_cmap\nfrom pyiem.plot.util import fitbox\n\nfrom iemweb.autoplot import get_monofont\n\nPDICT = {\n    \"tmpf\": \"Air Temperature [F]\",\n    \"dwpf\": \"Dew Point Temperature [F]\",\n    \"feel\": \"Feels Like Temperature [F]\",\n    \"relh\": \"Relative Humidity [%]\",\n}\nPDICT2 = {\n    \"day\": \"Percentiles for Date:\",\n    \"week\": \"Percentiles for Week of Year Near:\",\n    \"month\": \"Percentiles for Month:\",\n    \"year\": \"Percentiles for Entire Year\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"AMW\",\n            network=\"IA_ASOS\",\n            label=\"Select Station:\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"date\",\n            default=date.today().strftime(\"%Y/%m/%d\"),\n            label=\"Date of Interest (used to select week, month, year):\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"v\",\n            default=\"tmpf\",\n            label=\"Variable to Compute Percentiles For:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"month\",\n            label=\"Date Range to Compute Percentiles For:\",\n            options=PDICT2,\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"hsv\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef print_table(fig, df: pd.DataFrame, varname):\n    \"\"\"Add a pretty table.\"\"\"\n    monofont = get_monofont()\n    ranks = df[varname].quantile(np.arange(0, 1.0001, 0.0025))\n    xpos = 0.72\n    ypos = 0.8\n    fitbox(\n        fig,\n        \"Raw Percentiles (All Hours)\",\n        0.7,\n        0.91,\n        ypos + 0.01,\n        ypos + 0.1,\n        ha=\"center\",\n        va=\"center\",\n    )\n    fig.text(xpos - 0.01, ypos - 0.01, \"Percentile   Value\")\n    for q, val in ranks.items():\n        if 0.02 < q < 0.98 and (q * 100.0 % 5) != 0:\n            continue\n        if abs(q - 0.5) < 0.001:\n            xpos = 0.85\n            ypos = 0.8\n            fig.text(xpos - 0.01, ypos - 0.01, \"Percentile   Value\")\n        ypos -= 0.035\n        label = f\"{q * 100:-6g} {val:-6.2f}\"\n        fig.text(xpos, ypos, label, fontproperties=monofont)\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"zstation\"]\n    dt: datetime = ctx[\"date\"]\n    opt = ctx[\"opt\"]\n    varname = ctx[\"v\"]\n\n    tzname = ctx[\"_nt\"].sts[station][\"tzname\"]\n    params = {\n        \"station\": station,\n        \"tzname\": tzname,\n        \"sday\": f\"{dt:%m%d}\",\n        \"week\": f\"{dt:%V}\",\n        \"month\": dt.month,\n    }\n\n    # Resolve how to limit the query data\n    limiter = \"\"\n    if opt == \"day\":\n        limiter = \" and to_char(valid at time zone :tzname, 'mmdd') = :sday \"\n        subtitle = (\n            f\"For Date of {dt:%-d %b}, {dt:%-d %b %Y} plotted in bottom panel\"\n        )\n        datefmt = \"%I %p\"\n    elif opt == \"week\":\n        limiter = \" and extract(week from valid) = :week \"\n        subtitle = (\n            f\"For ISO Week of {dt.strftime('%V')}, \"\n            f\"week of {dt.strftime('%-d %b %Y')} plotted in bottom panel\"\n        )\n        datefmt = \"%-d %b\"\n    elif opt == \"month\":\n        limiter = \" and extract(month from valid) = :month \"\n        subtitle = (\n            f\"For Month of {dt.strftime('%B')}, \"\n            f\"{dt.strftime('%b %Y')} plotted in bottom panel\"\n        )\n        datefmt = \"%-d %b\\n%-I %p\"\n    else:\n        subtitle = f\"All Year, {dt.year} plotted in bottom panel\"\n        datefmt = \"%-d %b\"\n\n    # Load up all the values, since we need pandas to do some heavy lifting\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        obsdf = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            select valid at time zone 'UTC' as utc_valid,\n            extract(year from valid at time zone :tzname)::int as year,\n            extract(hour from valid at time zone :tzname +\n                '10 minutes'::interval)::int as hr, {varname}\n            from alldata WHERE station = :station\n            and {varname} is not null {limiter}\n            and report_type = 3 ORDER by valid ASC\n        \"\"\",\n                varname=varname,\n                limiter=limiter,\n            ),\n            conn,\n            params=params,\n            index_col=None,\n        )\n    if obsdf.empty:\n        raise NoDataFound(\"No data was found.\")\n\n    # Assign percentiles\n    obsdf[\"quantile\"] = obsdf[[\"hr\", varname]].groupby(\"hr\").rank(pct=True)\n    # Compute actual percentiles\n    qtile = (\n        obsdf[[\"hr\", varname]]\n        .groupby(\"hr\")\n        .quantile(np.arange(0, 1.01, 0.05))\n        .reset_index()\n    )\n    qtile = qtile.rename(columns={\"level_1\": \"quantile\"})\n    title = (\n        f\"{station} {ctx['_nt'].sts[station]['name']} {PDICT[varname]} \"\n        f\"Percentiles ({obsdf['year'].min():.0f}-{obsdf['year'].max():.0f})\\n\"\n        f\"{subtitle}\"\n    )\n    fig = figure(apctx=ctx, title=title)\n    tp = fig.add_axes((0.1, 0.57, 0.5, 0.33))\n    bp = fig.add_axes((0.1, 0.13, 0.5, 0.35))\n    sidep = fig.add_axes((0.61, 0.13, 0.1, 0.35))\n    # Plot total percentiles on the figure\n    print_table(fig, obsdf, varname)\n    cmap = get_cmap(ctx[\"cmap\"])\n    for hr, gdf in qtile.groupby(\"hr\"):\n        tp.plot(\n            gdf[\"quantile\"].values * 100.0,\n            gdf[varname].values,\n            color=cmap(hr / 23.0),  # type: ignore\n            label=str(hr),\n        )\n    tp.set_xlim(0, 100)\n    tp.set_xticks([0, 10, 25, 50, 75, 90, 100])\n    tp.grid(True)\n    tp.set_ylabel(PDICT[varname])\n    tp.set_xlabel(\"Percentile\")\n    cax = fig.add_axes(\n        [0.613, 0.55, 0.01, 0.33], frameon=False, yticks=[], xticks=[]\n    )\n    cb = ColorbarBase(cax, cmap=cmap)\n    cb.set_ticks(np.arange(0, 1, 4.0 / 24.0))\n    cb.set_ticklabels([\"Mid\", \"4 AM\", \"8 AM\", \"Noon\", \"4 PM\", \"8 PM\"])\n    cb.set_label(\"Local Hour\")\n\n    thisyear = obsdf[obsdf[\"year\"] == dt.year]\n    if not thisyear.empty:\n        bp.plot(\n            thisyear[\"utc_valid\"].values, thisyear[\"quantile\"].values * 100.0\n        )\n        bp.grid(True)\n        bp.set_ylabel(\"Percentile\")\n        bp.set_yticks([0, 10, 25, 50, 75, 90, 100])\n        bp.set_ylim(-1, 101)\n        bp.xaxis.set_major_formatter(\n            mdates.DateFormatter(datefmt, tz=ZoneInfo(tzname))\n        )\n        if opt == \"day\":\n            bp.set_xlabel(f\"Timezone: {tzname}\")\n        # Add horizontal bar graph with a histogram of the percentiles\n        hist = np.histogram(\n            thisyear[\"quantile\"].values * 100.0,\n            bins=np.arange(0, 101, 10),\n        )\n        sidep.barh(\n            hist[1][:-1],\n            hist[0],\n            height=10,\n            align=\"edge\",\n        )\n        sidep.set_xlabel(\"Hours\")\n        sidep.set_yticks([])\n        sidep.set_ylim(-1, 101)\n        sidep.grid(True)\n        sidep.text(0.1, 1.01, \"Histogram\", transform=sidep.transAxes)\n\n    return fig, qtile\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p214.py",
    "content": "\"\"\"\nThis plot generates a comparison between two hourly ASOS\nobservation values. The interactive chart version and raw data download\nalso presents the most recent UTC timestamp for that given combination.\nApps like these are very good at quickly seeing bad-data outliers :(\nPlease review any results you find here to see if the values match\nwhat the reality may have been.  Additionally, for the case of mean\nvalues, the presented timestamp is not of much use.\n\"\"\"\n\nfrom datetime import date, datetime\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.util import month2months\n\nVDICT = {\n    \"dwpf\": \"Air Dew Point Temp [°F]\",\n    \"tmpf\": \"Air Temperature [°F]\",\n    \"feel\": \"Feels Like Temp [°F]\",\n    \"p01i\": \"Hourly Precipitation [inch]\",\n    \"alti\": \"Pressure Altimeter [in Hg]\",\n    \"mslp\": \"Pressure Mean Sea Level [mb]\",\n    \"relh\": \"Relative Humidity [%]\",\n    \"vsby\": \"Visibility [mile]\",\n    \"gust\": \"Wind Gust [kts]\",\n    \"sknt\": \"Wind Speed [kts]\",\n}\nADICT = {\"min\": \"Minimum\", \"avg\": \"Average\", \"max\": \"Maximum\"}\nMDICT = {\n    \"all\": \"Entire Year\",\n    \"spring\": \"Spring (MAM)\",\n    \"summer\": \"Summer (JJA)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"highcharts\"] = True\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            label=\"Select Station:\",\n            network=\"IA_ASOS\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"x\",\n            default=\"tmpf\",\n            label=\"X-Axis Categorical Variable\",\n            options=VDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"y\",\n            default=\"p01i\",\n            label=\"Y-Axis Variable to Summarize\",\n            options=VDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"agg\",\n            default=\"max\",\n            label=\"How to Summarize Y-axis Variable\",\n            options=ADICT,\n        ),\n        dict(\n            type=\"year\",\n            name=\"syear\",\n            default=1920,\n            minval=1920,\n            label=\"Limit to Potential Start Year for the plot:\",\n        ),\n    ]\n    return desc\n\n\ndef get_highcharts(ctx: dict) -> str:\n    \"\"\"Fancy plot.\"\"\"\n    add_data(ctx)\n    df = ctx[\"df\"]\n    ISO = \"%Y-%m-%d %H:%M Z\"\n    containername = ctx[\"_e\"]\n    return (\n        \"\"\"\nvar x = \"\"\"\n        + str(df[\"x\"].values.tolist())\n        + \"\"\";\nvar dates = \"\"\"\n        + str(df[\"utc_valid\"].dt.strftime(ISO).tolist())\n        + \"\"\";\nHighcharts.chart('\"\"\"\n        + containername\n        + \"\"\"', {\n    title: {text: '\"\"\"\n        + ctx[\"title\"]\n        + \"\"\"'},\n    subtitle: {text: '\"\"\"\n        + ctx[\"subtitle\"]\n        + \"\"\"'},\n    chart: {zoomType: 'x'},\n    tooltip: {\n        formatter: function() {\n            var idx = x.indexOf(this.x);\n            return \"X: \" + this.x + \" Y: \" + this.y + \" @ \" + dates[idx];\n        }\n    },\n    xAxis: {\n        categories: \"\"\"\n        + str(df[\"x\"].values.tolist())\n        + \"\"\",\n        title: {text: '\"\"\"\n        + ctx[\"xlabel\"]\n        + \"\"\"'}},\n    yAxis: {title: {text: '\"\"\"\n        + ctx[\"ylabel\"]\n        + \"\"\"'}},\n    series: [{\n        type: 'column',\n        width: 0.8,\n        tooltip: {\n            valueDecimals: 2\n        },\n        data: \"\"\"\n        + str(df[\"y\"].values.tolist())\n        + \"\"\"\n    }]\n});\n    \"\"\"\n    )\n\n\ndef add_data(ctx):\n    \"\"\"Build out the context.\"\"\"\n    station = ctx[\"zstation\"]\n    month = ctx[\"month\"]\n    agg = ctx[\"agg\"]\n    x = ctx[\"x\"]\n    y = ctx[\"y\"]\n    # belt and suspenders\n    assert x in VDICT\n    assert y in VDICT\n    assert agg in ADICT\n    months = month2months(month)\n\n    cast = \"int\" if x in [\"tmpf\", \"dwpf\", \"feel\"] else \"real\"\n    basets = date(ctx[\"syear\"], 1, 1)\n    direction = \"DESC\" if agg == \"max\" else \"ASC\"\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        ctx[\"df\"] = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            WITH data as (\n                SELECT {x}::{cast} as x, ({y}) as yv,\n                first_value(valid at time zone 'UTC') OVER (\n                    PARTITION by {x}::{cast}\n                    ORDER by {y} {direction}, valid DESC) as timestamp\n                from alldata where station = :station\n                and extract(month from valid) = ANY(:months)\n                and report_type = 3 and valid >= :basets\n                and {x} is not null and {y} is not null\n                ORDER by x ASC)\n            SELECT x, {agg}(yv) as y, max(timestamp) as utc_valid from data\n            GROUP by x ORDER by x ASC\n        \"\"\",\n                x=x,\n                cast=cast,\n                y=y,\n                agg=agg,\n                direction=direction,\n            ),\n            conn,\n            params={\n                \"station\": station,\n                \"months\": months,\n                \"basets\": basets,\n            },\n            index_col=None,\n        )\n    if ctx[\"df\"].empty:\n        raise NoDataFound(\"No Data Found.\")\n    ab = ctx[\"_nt\"].sts[station][\"archive_begin\"]\n    if ab is None:\n        raise NoDataFound(\"Unknown station metadata.\")\n    minyear = ctx[\"df\"][\"utc_valid\"].dt.year.min()\n    ctx[\"xlabel\"] = VDICT[ctx[\"x\"]]\n    ctx[\"ylabel\"] = ADICT[ctx[\"agg\"]] + \" \" + VDICT[ctx[\"y\"]]\n    ctx[\"title\"] = ctx[\"_sname\"]\n    ctx[\"subtitle\"] = (\"%s %s by %s (month=%s) (%s-%s)\") % (\n        ADICT[agg],\n        VDICT[y],\n        VDICT[x],\n        month.upper(),\n        minyear,\n        datetime.now().year,\n    )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    add_data(ctx)\n    df = ctx[\"df\"]\n    (fig, ax) = figure_axes(apctx=ctx)\n    ax.bar(df[\"x\"].values, df[\"y\"].values, color=\"blue\")\n    ax.grid(True)\n    ax.set_title(ctx[\"title\"] + \"\\n\" + ctx[\"subtitle\"])\n    ax.set_xlabel(ctx[\"xlabel\"])\n    ax.set_ylabel(ctx[\"ylabel\"])\n    df = df.rename({\"x\": VDICT[ctx[\"x\"]], \"y\": VDICT[ctx[\"y\"]]}, axis=1)\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p215.py",
    "content": "\"\"\"\nThis autoplot generates some metrics on the distribution of temps\nover a given period of years.  The plotted distribution in the upper panel\nis using a guassian kernel density estimate.\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.ticker import MaxNLocator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.plot.util import fitbox\nfrom scipy.stats import gaussian_kde\n\nfrom iemweb.autoplot import ARG_STATION\nfrom iemweb.util import month2months\n\nPDICT = {\n    \"high\": \"High Temperature [°F]\",\n    \"low\": \"Low Temperature [°F]\",\n    \"avgt\": \"Average Temperature [°F]\",\n}\nMDICT = {\n    \"all\": \"No Month/Time Limit\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 3600, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            options=PDICT,\n            name=\"v\",\n            default=\"high\",\n            label=\"Daily Variable to Plot:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"year\",\n            min=1880,\n            name=\"sy1\",\n            default=1981,\n            label=\"Inclusive Start Year for First Period of Years:\",\n        ),\n        dict(\n            type=\"year\",\n            min=1880,\n            name=\"ey1\",\n            default=2010,\n            label=\"Inclusive End Year for First Period of Years:\",\n        ),\n        dict(\n            type=\"year\",\n            min=1880,\n            name=\"sy2\",\n            default=1991,\n            label=\"Inclusive Start Year for Second Period of Years:\",\n        ),\n        dict(\n            type=\"year\",\n            min=1880,\n            name=\"ey2\",\n            default=2020,\n            label=\"Inclusive End Year for Second Period of Years:\",\n        ),\n    ]\n    return desc\n\n\ndef get_df(ctx, period):\n    \"\"\"Get our data.\"\"\"\n    month = ctx[\"month\"]\n    ctx[\"mlabel\"] = f\"{month.capitalize()} Season\"\n    months = month2months(month)\n    if month == \"all\":\n        ctx[\"mlabel\"] = \"All Year\"\n    elif len(months) == 1:\n        ctx[\"mlabel\"] = calendar.month_name[months[0]]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                SELECT high, low, (high+low)/2. as avgt from alldata WHERE\n                day >= :d1 and day <= :d2 and station = :station\n                and high is not null\n                and low is not null and month = ANY(:months)\n                \"\"\"\n            ),\n            conn,\n            params={\n                \"d1\": date(ctx[f\"sy{period}\"], 1, 1),\n                \"d2\": date(ctx[f\"ey{period}\"], 12, 31),\n                \"station\": ctx[\"station\"],\n                \"months\": months,\n            },\n        )\n    return df\n\n\ndef f2s(value):\n    \"\"\"HAAAAAAAAAAAAACK.\"\"\"\n    return (f\"{value:.5f}\").rstrip(\"0\").rstrip(\".\")\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    df1 = get_df(ctx, \"1\")\n    df2 = get_df(ctx, \"2\")\n    if df1.empty or df2.empty:\n        raise NoDataFound(\"Failed to find data for query!\")\n    kern1 = gaussian_kde(df1[ctx[\"v\"]])\n    kern2 = gaussian_kde(df2[ctx[\"v\"]])\n\n    xpos = np.arange(\n        min([df1[ctx[\"v\"]].min(), df2[ctx[\"v\"]].min()]),\n        max([df1[ctx[\"v\"]].max(), df2[ctx[\"v\"]].max()]) + 1,\n        dtype=\"i\",\n    )\n    period1 = f\"{ctx['sy1']}-{ctx['ey1']}\"\n    period2 = f\"{ctx['sy2']}-{ctx['ey2']}\"\n    label1 = f\"{period1} {ctx['v']}\"\n    label2 = f\"{period2} {ctx['v']}\"\n\n    df = pd.DataFrame({label1: kern1(xpos), label2: kern2(xpos)}, index=xpos)\n\n    fig = figure(apctx=ctx)\n    title = (\n        f\"{ctx['_sname']}:: {PDICT[ctx['v']]} Distribution\\n\"\n        f\"{period2} vs {period1} over {ctx['mlabel']}\"\n    )\n    fitbox(fig, title, 0.12, 0.9, 0.91, 0.99)\n\n    ax = fig.add_axes((0.12, 0.38, 0.75, 0.52))\n    C1 = \"blue\"\n    C2 = \"red\"\n    alpha = 0.4\n\n    ax.plot(\n        df.index.values,\n        df[label1],\n        lw=2,\n        c=C1,\n        label=rf\"{label1}: $\\mu$={df1[ctx['v']].mean():.2f}\",\n        zorder=4,\n    )\n    ax.fill_between(xpos, 0, df[label1], color=C1, alpha=alpha, zorder=3)\n    ax.axvline(df1[ctx[\"v\"]].mean(), color=C1)\n    ax.plot(\n        df.index.values,\n        df[label2],\n        lw=2,\n        c=C2,\n        label=rf\"{label2}: $\\mu$={df2[ctx['v']].mean():.2f}\",\n        zorder=4,\n    )\n    ax.fill_between(xpos, 0, df[label2], color=C2, alpha=alpha, zorder=3)\n    ax.axvline(df2[ctx[\"v\"]].mean(), color=C2)\n    ax.set_ylabel(\"Guassian Kernel Density Estimate\")\n    ax.legend(loc=\"best\")\n    ax.grid(True)\n    ax.xaxis.set_major_locator(MaxNLocator(20))\n\n    # Sub ax\n    ax2 = fig.add_axes((0.12, 0.1, 0.75, 0.22))\n    delta = df[label2] - df[label1]\n    ax2.plot(df.index.values, delta)\n    dam = delta.abs().max() * 1.1\n    ax2.set_ylim(0 - dam, dam)\n    ax2.set_xlabel(PDICT[ctx[\"v\"]])\n    ax2.set_ylabel(f\"{period2} minus\\n{period1}\")\n    ax2.grid(True)\n    ax2.fill_between(xpos, 0, delta, where=delta > 0, color=C2, alpha=alpha)\n    ax2.fill_between(xpos, 0, delta, where=delta < 0, color=C1, alpha=alpha)\n    ax2.axhline(0, ls=\"--\", lw=2, color=\"k\")\n    ax2.xaxis.set_major_locator(MaxNLocator(20))\n\n    # Percentiles\n    levels = [0.001, 0.005, 0.01, 0.05, 0.1, 0.25, 0.5, 0.75]\n    levels.extend([0.9, 0.95, 0.99, 0.995, 0.999])\n    p1 = df1[ctx[\"v\"]].describe(percentiles=levels)\n    p2 = df2[ctx[\"v\"]].describe(percentiles=levels)\n    y = 0.8\n    fig.text(0.88, y, \"Percentile\", rotation=70)\n    fig.text(0.91, y, period1, rotation=70)\n    fig.text(0.945, y, period2, rotation=70)\n    for ptile in levels:\n        y -= 0.03\n        val = f2s(ptile * 100.0)\n        fig.text(0.88, y, val)\n        v1 = p1[f\"{val}%\"]\n        v2 = p2[f\"{val}%\"]\n        fig.text(0.91, y, f\"{v1:.1f}\")\n        fig.text(0.95, y, f\"{v2:.1f}\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p216.py",
    "content": "\"\"\"\nThis chart presents the longest daily streaks of having some\nthreshold meet.  This tool presents a number of variables that may not be\nobserved by your station or network.  If you pick a below threshold, then the\nyear is split on 1 July and the year plotted is the year of the second half of\nthat period. <a href=\"/request/daily.phtml\">Daily Data Request Form</a>\nprovides the raw values for the automated stations.  The download portal for\nthe long term climate sites is <a href=\"/request/coop/fe.phtml\">here</a>.\n\"\"\"\n\nfrom datetime import timedelta\n\nimport matplotlib.ticker as mticker\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest, NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import get_monofont\n\nPDICT = {\n    \"above\": \"At or Above (AOA) Threshold\",\n    \"below\": \"Below Threshold\",\n}\nPDICT2 = {\n    \"high\": \"Daily High Temperature\",\n    \"low\": \"Daily Low Temperature\",\n    \"max_dwpf\": \"Daily Max Dew Point\",\n    \"min_dwpf\": \"Daily Min Dew Point\",\n    \"max_feel\": \"Daily Max Feels Like Temp\",\n    \"min_feel\": \"Daily Min Feels Like Temp\",\n    \"max_sknt\": \"Daily Max Sustained Wind Speed\",\n    \"max_gust\": \"Daily Max Wind Gust\",\n}\nUNITS = {\n    \"high\": \"°F\",\n    \"low\": \"°F\",\n    \"max_dwpf\": \"°F\",\n    \"min_dwpf\": \"°F\",\n    \"max_feel\": \"°F\",\n    \"min_feel\": \"°F\",\n    \"max_sknt\": \"kts\",\n    \"max_gust\": \"kts\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"sid\",\n            \"name\": \"station\",\n            \"default\": \"IATAME\",\n            \"label\": \"Select Station:\",\n            \"network\": \"IACLIMATE\",\n            \"include_climodat\": True,\n        },\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"high\",\n            options=PDICT2,\n            label=\"Select which daily variable\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"dir\",\n            default=\"below\",\n            options=PDICT,\n            label=\"Select temperature direction\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"threshold\",\n            default=\"32\",\n            label=\"hreshold (F or knots):\",\n        ),\n    ]\n    return desc\n\n\ndef get_data(ctx):\n    \"\"\"Get the data for this plot.\"\"\"\n    varname = ctx[\"var\"]\n    station = ctx[\"station\"]\n    if ctx[\"network\"].find(\"CLIMATE\") > 0:\n        if varname not in [\"high\", \"low\"]:\n            raise IncompleteWebRequest(\"Invalid variable for Climate network.\")\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            obsdf = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n                select day, {varname},\n                case when month > 6 then year + 1 else year end as season\n                from alldata where station = :station and {varname} is not null\n                ORDER by day ASC\n            \"\"\",\n                    varname=varname,\n                ),\n                conn,\n                params={\"station\": station},\n                parse_dates=\"day\",\n                index_col=\"day\",\n            )\n    else:\n        vin = varname\n        varname = {\"high\": \"max_tmpf\", \"low\": \"min_tmpf\"}.get(varname, varname)\n        with get_sqlalchemy_conn(\"iem\") as conn:\n            obsdf = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n                select day, {varname} as {vin},\n                case when extract(month from day) > 6 then\n                    extract(year from day) + 1 else extract(year from day)\n                    end as season\n                from summary where iemid = :iemid and {varname} is not null\n                ORDER by day ASC\n            \"\"\",\n                    varname=varname,\n                    vin=vin,\n                ),\n                conn,\n                params={\"iemid\": ctx[\"_nt\"].sts[station][\"iemid\"]},\n                parse_dates=\"day\",\n                index_col=\"day\",\n            )\n    return obsdf\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    threshold = ctx[\"threshold\"]\n    varname = ctx[\"var\"]\n    mydir = ctx[\"dir\"]\n\n    op = np.greater_equal if mydir == \"above\" else np.less\n    rows = []\n    startdate = None\n    running = 0\n    row = None\n    obsdf = get_data(ctx)\n    if obsdf.empty:\n        raise NoDataFound(\"Did not find any observations for station.\")\n    obsdf = obsdf.reindex(pd.date_range(obsdf.index.min(), obsdf.index.max()))\n    day = None\n    for day, row in obsdf.iterrows():\n        if op(row[varname], threshold):\n            if running == 0:\n                startdate = day\n            running += 1\n            continue\n        if running == 0:\n            continue\n        rows.append(\n            {\n                \"days\": running,\n                \"season\": day.year if mydir == \"above\" else row[\"season\"],\n                \"startdate\": startdate,\n                \"enddate\": day - timedelta(days=1),\n            }\n        )\n        running = 0\n    if running > 0:\n        rows.append(\n            {\n                \"days\": running,\n                \"season\": day.year if mydir == \"above\" else row[\"season\"],\n                \"startdate\": startdate,\n                \"enddate\": day,\n            }\n        )\n    if not rows:\n        raise NoDataFound(\"Failed to find any streaks for given threshold.\")\n    df = pd.DataFrame(rows)\n\n    label = \"at or above\" if mydir == \"above\" else \"below\"\n    label2 = \"Yearly\" if mydir == \"above\" else \"Seasonal\"\n    title = (\n        f\"{ctx['_sname']} \"\n        f\"[{obsdf.index[0]:%-d %b %Y}-{obsdf.index[-1]:%-d %b %Y}]:: \"\n        f\"{label2} Maximum Consecutive Days with\"\n    )\n    subtitle = f\"{PDICT2[varname]} {label} {threshold} {UNITS[varname]}\"\n    fig = figure(title=title, subtitle=subtitle, apctx=ctx)\n    ax = fig.add_axes((0.1, 0.1, 0.5, 0.8))\n    ax.set_ylabel(f\"Max Streak by {label2} [days]\")\n    ax.grid(True)\n    gdf = df.groupby(\"season\").max()\n    ax.bar(gdf.index.values, gdf[\"days\"].values, width=1)\n    val = gdf[\"days\"].mean()\n    ax.axhline(val, lw=2, color=\"r\")\n    ax.text(\n        gdf.index.values[-1] + 2,\n        val,\n        f\"Avg: {val:.1f}\",\n        color=\"r\",\n        bbox=dict(color=\"white\"),\n    )\n    ax.set_xlabel(label2)\n    ax.yaxis.set_major_locator(mticker.MaxNLocator(integer=True))\n\n    # List out longest\n    monofont = get_monofont()\n    monofont.set_size(14)\n    y = 0.84\n    fig.text(\n        0.65,\n        y,\n        \"Top 20 Events\\nStart Date  End Date     Days\",\n        fontproperties=monofont,\n    )\n    y -= 0.045\n    fmt = \"%b %-2d %Y\"\n    for _, row in (\n        df.sort_values(by=\"days\", ascending=False).head(20).iterrows()\n    ):\n        fig.text(\n            0.65,\n            y,\n            \"%s %s  %3i\"\n            % (\n                row[\"startdate\"].strftime(fmt),\n                row[\"enddate\"].strftime(fmt),\n                row[\"days\"],\n            ),\n            fontproperties=monofont,\n        )\n        y -= 0.034\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p217.py",
    "content": "\"\"\"\nThis plot is not meant for interactive use, but a backend for SPS plots. A more\napproachable frontend is to visit the <a href=\"/wx/afos/list.phtml\">NWS Text\nby WFO</a> page and click on the SPS product you are interested in.\n\"\"\"\n\nfrom zoneinfo import ZoneInfo\n\nimport geopandas as gpd\nimport requests\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot.geoplot import MapPlot\nfrom pyiem.reference import LATLON, Z_OVERLAY2\nfrom pyiem.util import LOG, utc\nfrom sqlalchemy.engine import Connection\n\nTFORMAT = \"%b %-d %Y %-I:%M %p %Z\"\nUNITS = {\n    \"max_hail_size\": \"inch\",\n    \"max_wind_gust\": \"MPH\",\n}\nWFOCONV = {\"JSJ\": \"SJU\"}\nPDICT3 = {\n    \"on\": \"Overlay NEXRAD Mosaic\",\n    \"auto\": \"Let autoplot decide when to include NEXRAD overlay\",\n    \"off\": \"No NEXRAD Mosaic Please\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 3600}\n    desc[\"defaults\"] = {\"_r\": \"t\"}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"text\",\n            name=\"pid\",\n            default=\"202012300005-KDVN-WWUS83-SPSDVN\",\n            label=\"IEM generated up to 35 char product identifier:\",\n        ),\n        dict(\n            type=\"int\",\n            default=0,\n            name=\"segnum\",\n            label=\"Product Segment Number (starts at 0):\",\n        ),\n        {\n            \"type\": \"select\",\n            \"name\": \"n\",\n            \"default\": \"auto\",\n            \"label\": \"Should a NEXRAD Mosaic by overlain:\",\n            \"options\": PDICT3,\n        },\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"postgis\")\ndef plotter(ctx: dict, conn: Connection | None = None):\n    \"\"\"Go\"\"\"\n    pid = ctx[\"pid\"][:35]\n    if len(pid) < 30 or any(not pid[x].isdigit() for x in range(4)):\n        raise NoDataFound(\"Invalid pid provided.\")\n    prodyear = int(pid[:4])\n    if prodyear < 1980 or prodyear > utc().year + 1:\n        raise NoDataFound(\"Invalid pid provided.\")\n    segnum = ctx[\"segnum\"]\n    nt = NetworkTable(\"WFO\")\n\n    # Compute a population estimate\n    popyear = min(max([prodyear - prodyear % 5, 2000]), 2020)\n    df = gpd.read_postgis(\n        sql_helper(\n            \"\"\"\n            with geopop as (\n                select sum(population) as pop from {spstable} s,\n                {gpwtable} g WHERE s.product_id = :pid and\n                ST_Contains(s.geom, g.geom) and segmentnum = :segnum\n            )\n            SELECT geom, ugcs, wfo, issue, expire, landspout, waterspout,\n            max_hail_size, max_wind_gust, segmentnum,\n            coalesce(pop, 0) as pop\n            from {spstable}, geopop where product_id = :pid\n            and segmentnum = :segnum\n            \"\"\",\n            gpwtable=f\"gpw{popyear}\",\n            spstable=f\"sps_{pid[:4]}\",\n        ),\n        conn,\n        params={\"pid\": pid, \"segnum\": segnum},\n        index_col=None,\n        geom_col=\"geom\",\n    )  # type: ignore\n    if df.empty:\n        raise NoDataFound(\"SPS Event was not found, sorry.\")\n    row = df.iloc[0]\n    wfo = row[\"wfo\"]\n    tzname = nt.sts.get(wfo, {}).get(\"tzname\")\n    if tzname is None:\n        tzname = nt.sts.get(f\"P{wfo}\", {}).get(\"tzname\")\n        if tzname is None:\n            tzname = \"UTC\"\n    tz = ZoneInfo(tzname)\n    expire = df[\"expire\"].dt.tz_convert(tz)[0]\n    is_fwx = False\n    if row[\"geom\"].is_empty:\n        # Need to go looking for UGCs to compute the bounds\n        # Can a SPS be issued for Fire Weather zones? source = 'fz'\n        for source in [\"z\", \"fz\", \"mz\"]:\n            ugcdf = gpd.read_postgis(\n                sql_helper(\n                    \"\"\"\n                    SELECT simple_geom, ugc, {gpwcol}\n                    as pop from ugcs where wfo = :wfo and ugc = ANY(:ugcs)\n                    and (end_ts is null or end_ts > :expire) and\n                    source = :source\n                    \"\"\",\n                    gpwcol=f\"gpw_population_{popyear}\",\n                ),\n                conn,\n                params={\n                    \"wfo\": WFOCONV.get(wfo, wfo),\n                    \"ugcs\": row[\"ugcs\"],\n                    \"expire\": expire,\n                    \"source\": source,\n                },\n                geom_col=\"simple_geom\",\n            )  # type: ignore\n            if not ugcdf.empty:\n                if source == \"fz\":\n                    is_fwx = True\n                break\n        if ugcdf.empty:\n            raise NoDataFound(\"No UGCs found for this SPS, sorry.\")\n        bounds = ugcdf[\"simple_geom\"].total_bounds\n        population = ugcdf[\"pop\"].sum()\n    else:\n        bounds = row[\"geom\"].bounds\n        population = row[\"pop\"]\n    pp = \"Missing\" if population <= 0 else f\"{population:,}\"\n    stextra = \" for Polygon\" if not row[\"geom\"].is_empty else \"\"\n    mp = MapPlot(\n        apctx=ctx,\n        title=(\n            f\"{wfo} Special Weather Statement (SPS) \"\n            f\"till {expire.strftime(TFORMAT)}\"\n        ),\n        subtitle=(f\"Estimated {popyear} Population{stextra}: {pp}\"),\n        sector=\"spherical_mercator\",\n        west=bounds[0] - 0.02,\n        south=bounds[1] - 0.3,\n        east=bounds[2] + (bounds[2] - bounds[0]) + 0.02,\n        north=bounds[3] + 0.3,\n        nocaption=True,\n    )\n    # Hackish\n    mp.sector = \"cwa\"\n    mp.cwa = wfo\n\n    # Plot text on the page, hehe\n    try:\n        resp = requests.get(\n            f\"http://mesonet.agron.iastate.edu/api/1/nwstext/{pid}\",\n            timeout=10,\n        )\n        resp.raise_for_status()\n        report = resp.text\n    except Exception as exp:\n        LOG.exception(exp)\n        report = \"\"\n    report = (\n        report.split(\"$$\")[segnum]\n        .replace(\"\\r\", \"\")\n        .replace(\"\\003\", \"\")\n        .replace(\"\\001\", \"\")\n        .replace(\"$$\", \"  \")\n    )\n    pos = report.find(\"...\")\n    if pos == -1:\n        pos = 0\n    report = report[pos : report.find(\"LAT...LON\")]\n    # Appears we have space for about 32 lines of text\n    if len(report.split(\"\\n\")) > 32:\n        report = (\n            \"\\n\".join(report.split(\"\\n\")[:32])\n            + \"\\n...Text truncated due to space constraints.\"\n        )\n    mp.fig.text(\n        0.5,\n        0.85,\n        report.strip(),\n        bbox=dict(fc=\"white\", ec=\"k\"),\n        va=\"top\",\n    )\n\n    # Tags\n    msg = []\n    for col in \"landspout waterspout max_hail_size max_wind_gust\".split():\n        val = row[col]\n        if val is None:\n            continue\n        msg.append(f\"{col.replace('_', ' ')}: {val} {UNITS.get(col)}\")\n    if msg:\n        mp.ax.text(\n            0.01,\n            0.95,\n            \"\\n\".join(msg),\n            transform=mp.ax.transAxes,\n            bbox=dict(color=\"white\"),\n            va=\"top\",\n            zorder=Z_OVERLAY2 + 100,\n        )\n\n    ugcs = dict.fromkeys(row[\"ugcs\"], 1)\n    if not row[\"geom\"].is_empty:\n        mp.panels[0].add_geometries(\n            [row[\"geom\"]],\n            LATLON,\n            facecolor=\"None\",\n            edgecolor=\"k\",\n            linewidth=4,\n            zorder=Z_OVERLAY2,\n        )\n    else:\n        # disable RADAR if auto and since we have no polygon\n        if ctx[\"n\"] == \"auto\":\n            ctx[\"n\"] = \"off\"\n        mp.fill_ugcs(\n            ugcs,\n            ec=\"r\",\n            fc=\"None\",\n            lw=2,\n            draw_colorbar=False,\n            plotmissing=False,\n            zorder=Z_OVERLAY2 - 1,\n            is_firewx=is_fwx,\n        )\n    if ctx[\"n\"] != \"off\":\n        prod = \"N0Q\" if df[\"issue\"].iloc[0].year > 2010 else \"N0R\"\n        radtime = mp.overlay_nexrad(\n            df[\"issue\"].iloc[0].to_pydatetime(), product=prod\n        )\n        if radtime is not None:\n            mp.fig.text(\n                0.65,\n                0.02,\n                f\"RADAR Valid: {radtime.astimezone(tz).strftime(TFORMAT)}\",\n                ha=\"center\",\n            )\n    mp.drawcounties()\n    return mp.fig, df.drop(columns=[\"geom\"])\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p218.py",
    "content": "\"\"\"\nThis produces an infographic with some of the information found\npresented in NWS CLI reports.\n\n<p>The high and low temperature gauges contain some extra statistical\ninformation based on the period of record observations for the site. Sometimes\nthis period of record information comes from a nearby weather station. This\ninformatiom also provides the coldest high temperature and warmest low\ntemperature, both of which are not found within the raw CLI text product.\n\"\"\"\n\nfrom dataclasses import dataclass\nfrom datetime import date, timedelta\nfrom math import pi\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.reference import TRACE_VALUE\n\nTFORMAT = \"%b %-d %Y %-I:%M %p %Z\"\n\nPDICT = {\n    \"set\": \"Use Provided Date.\",\n    \"current\": \"Use Most Recent Date with Data.\",\n}\n\n\n@dataclass\nclass GaugeParams:\n    \"\"\"Simple.\"\"\"\n\n    minval: float = None\n    maxval: float = None\n    avgval: float = None\n    stddev: float = None\n    ptiles: list = None\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 300}\n    desc[\"defaults\"] = {\"_r\": \"t\"}\n    yest = date.today() - timedelta(days=1)\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"select\",\n            \"name\": \"w\",\n            \"default\": \"set\",\n            \"label\": \"Date Selection Method:\",\n            \"options\": PDICT,\n        },\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            default=\"KDSM\",\n            label=\"Select Station:\",\n            network=\"NWSCLI\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"date\",\n            default=yest.strftime(\"%Y/%m/%d\"),\n            label=\"Select Date\",\n            min=\"2000/01/01\",\n        ),\n    ]\n    return desc\n\n\ndef miss(val):\n    \"\"\"Pretty.\"\"\"\n    if pd.isna(val):\n        return \"Missing\"\n    if np.allclose(val, TRACE_VALUE, 0.00001):\n        return \"Trace\"\n    return val\n\n\ndef gauge(ax, row, col, params):\n    \"\"\"Make the gauge plot.\"\"\"\n    if col == \"high\":\n        if pd.notna(row[\"high_record\"]):\n            params.maxval = row[\"high_record\"]\n        if pd.notna(row[\"high_normal\"]):\n            params.avgval = row[\"high_normal\"]\n    else:\n        if pd.notna(row[\"low_record\"]):\n            params.minval = float(row[\"low_record\"])\n        if pd.notna(row[\"low_normal\"]):\n            params.avgval = row[\"low_normal\"]\n\n    # Polar coordinates, so 0 is maxval and pi is minval\n    colors = [\"#BE0000\", \"#E48900\", \"#B6EB7A\", \"#0F4CBB\", \"#1B262C\"]\n    # Okay, the chart will go from maxval (rad=pi) to maxval (rad=0)\n    bar_ends = [\n        float(params.avgval + 2 * params.stddev),\n        float(params.avgval + params.stddev),\n        float(params.avgval - params.stddev),\n        float(params.avgval - 2 * params.stddev),\n        params.minval,\n    ]\n    labels = [r\"2$\\sigma$\", r\"$\\sigma$\", r\"-$\\sigma$\", r\"-2$\\sigma$\", \"\"]\n    pos = 0\n    positive_delta = float(params.maxval - params.avgval)\n    negative_delta = float(params.avgval - params.minval)\n    if positive_delta == 0:\n        positive_delta = 0.01\n    if negative_delta == 0:\n        negative_delta = 0.01\n    for val, color, label in zip(bar_ends, colors, labels, strict=False):\n        if val > params.avgval:\n            ha = \"left\"\n            if val > params.maxval:\n                continue\n            pos2 = (params.maxval - val) / positive_delta * pi / 2.0\n        else:\n            ha = \"right\"\n            if val < params.minval:\n                continue\n            pos2 = pi / 2.0 + (\n                (params.avgval - val) / negative_delta * pi / 2.0\n            )\n        ax.add_patch(Rectangle((pos, 1), pos2 - pos, 2, color=color))\n        if abs(val - params.minval) > 1 and abs(val - params.maxval) > 1:\n            ax.text(pos2, 3.1, f\"{val:.0f}\", ha=ha)\n        ax.text(\n            pos2,\n            0.8,\n            label,\n            va=\"center\",\n            ha=\"left\" if ha == \"right\" else \"right\",\n        )\n        pos = pos2\n    # manual placement of max/min\n    ax.text(\n        0 if col == \"low\" else pi,\n        3.1,\n        f\"{params.maxval:.0f}\" if col == \"low\" else f\"{params.minval:.0f}\",\n        ha=\"left\" if col == \"low\" else \"right\",\n    )\n\n    # Add ticks for percentiles 10 through 90\n    for val in params.ptiles:\n        if val > params.avgval:\n            pos = (params.maxval - val) / positive_delta * pi / 2.0\n        else:\n            pos = pi / 2.0 + (\n                (params.avgval - val) / negative_delta * pi / 2.0\n            )\n        ax.add_patch(Rectangle((pos, 1), 0.001, 2, color=\"white\"))\n\n    # Tick for params.avgval\n    ax.add_patch(Rectangle((pi / 2.0, 1), 0.001, 2, color=\"k\"))\n    # Median\n    val = params.ptiles[4]\n    if val > params.avgval:\n        pos = (params.maxval - val) / positive_delta * pi / 2.0\n    else:\n        pos = pi / 2.0 + ((params.avgval - val) / negative_delta * pi / 2.0)\n    ax.add_patch(Rectangle((pos, 1), 0.001, 2, color=\"r\"))\n\n    ax.grid(False)\n    ax.set_xlim(0, pi)\n    ax.set_xticks([])\n    if row[col] >= params.avgval:\n        theta = (params.maxval - row[col]) / positive_delta * (pi / 2.0)\n        theta = max([0, theta])\n    else:\n        theta = (pi / 2.0) + (params.avgval - row[col]) / negative_delta * (\n            pi / 2.0\n        )\n        theta = min([pi, theta])\n    ax.text(\n        -0.05 if col == \"high\" else pi + 0.05,\n        2,\n        f\"Record: \"\n        f\"{miss(row[col + '_record'])}°F\"\n        f\"\\n{', '.join([str(s) for s in row[col + '_record_years']])}\",\n        va=\"top\",\n        ha=\"left\" if col == \"high\" else \"right\",\n    )\n    ax.text(\n        pi / 2,\n        3.25,\n        \"Avg:\\n\" + f\"{miss(row[f'{col}_normal'])}°F\",\n        ha=\"center\",\n    )\n    ax.set_rorigin(-4.5)\n    ax.set_yticks([])\n    ax.arrow(\n        theta,\n        -4.5,\n        0,\n        5.5,\n        width=0.1,\n        head_width=0.2,\n        head_length=1,\n        fc=\"yellow\",\n        ec=\"k\",\n        clip_on=False,\n    )\n    ax.text(\n        theta,\n        -4.5,\n        f\"{row[col]}°F\\n@{row[col + '_time']} LST\",\n        ha=\"center\",\n        va=\"top\",\n        fontsize=14,\n    )\n\n\ndef precip(fig, row, col):\n    \"\"\"Do the precip part.\"\"\"\n    ax = fig.add_axes([0.47, 0.57 if col == \"precip\" else 0.12, 0.42, 0.23])\n    for side in [\"left\", \"top\", \"right\"]:\n        ax.spines[side].set_visible(False)\n    jan1 = \"jan1\" if col == \"precip\" else \"jul1\"\n    c1 = row[f\"{col}_record\"] or 0\n    c2 = max([row[f\"{col}_month\"] or 0, row[f\"{col}_month_normal\"] or 0, 0.01])\n    c3 = max(\n        [row[f\"{col}_{jan1}\"] or 0, row[f\"{col}_{jan1}_normal\"] or 0, 0.01]\n    )\n    ax.bar(\n        range(3),\n        [\n            c1 / max([c1, 0.01]),\n            (row[f\"{col}_month_normal\"] or 0) / c2,\n            (row[f\"{col}_{jan1}_normal\"] or 0) / c3,\n        ],\n        width=0.3,\n        color=\"tan\",\n        zorder=8,\n    )\n    vals = [\n        (row[col] or 0) / max([c1, 0.01]),\n        (row[f\"{col}_month\"] or 0) / c2,\n        (row[f\"{col}_{jan1}\"] or 0) / c3,\n    ]\n    ax.bar(\n        range(3),\n        vals,\n        width=0.2,\n        color=\"b\",\n        zorder=10,\n    )\n    ax.text(\n        0.2,\n        1,\n        f'Record: {miss(row[col + \"_record\"])}\"\\n'\n        f\"{', '.join([str(s) for s in row[col + '_record_years']])}\",\n        va=\"center\",\n        ha=\"left\",\n    )\n    if not pd.isna(row[col + \"_month_normal\"]):\n        ax.text(\n            1.2,\n            row[col + \"_month_normal\"] / c2,\n            f'Avg: {miss(row[col + \"_month_normal\"])}\"',\n            va=\"center\",\n            ha=\"left\",\n        )\n    if not pd.isna(row[col + \"_\" + jan1 + \"_normal\"]):\n        ax.text(\n            2.2,\n            row[col + \"_\" + jan1 + \"_normal\"] / c3,\n            f'Avg: {miss(row[col + \"_\" + jan1 + \"_normal\"])}\"',\n            va=\"center\",\n            ha=\"left\",\n            bbox=dict(color=\"white\"),\n        )\n    ax.set_xticks(range(3))\n    ax.set_xticklabels(\n        [\n            f'Day:\\n{miss(row[col])}\"',\n            f'Month:\\n{miss(row[col + \"_month\"])}\"',\n            f'Since {jan1.capitalize()}:\\n{miss(row[col + \"_\" + jan1])}\"',\n        ],\n        fontsize=14,\n    )\n    ax.set_ylim(0, 1)\n    ax.set_yticks([])\n\n\ndef build_params(clsite, dt):\n    \"\"\"Figure out some metrics\"\"\"\n    hp = GaugeParams()\n    lp = GaugeParams()\n    if clsite is not None:\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            df = pd.read_sql(\n                \"SELECT year, high, low from alldata WHERE \"\n                \"station = %s and sday = %s\",\n                conn,\n                params=(clsite, f\"{dt:%m%d}\"),\n                index_col=\"year\",\n            )\n        if not df.empty:\n            hp.minval = df[\"high\"].min()\n            hp.maxval = df[\"high\"].max()\n            hp.avgval = df[\"high\"].mean()\n            hp.stddev = df[\"high\"].std()\n            hp.ptiles = (\n                df[\"high\"].quantile(np.arange(0.1, 0.91, 0.1)).to_list()\n            )\n            lp.maxval = df[\"low\"].max()\n            lp.minval = df[\"low\"].min()\n            lp.avgval = df[\"low\"].mean()\n            lp.stddev = df[\"low\"].std()\n            lp.ptiles = df[\"low\"].quantile(np.arange(0.1, 0.91, 0.1)).to_list()\n\n    return hp, lp\n\n\ndef get_data(ctx):\n    \"\"\"Get the data.\"\"\"\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            \"SELECT * from cli_data where station = %s and valid = %s\",\n            conn,\n            params=(ctx[\"station\"], ctx[\"date\"]),\n            index_col=None,\n        )\n    return df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    if ctx[\"w\"] == \"current\":\n        ctx[\"date\"] = date.today()\n        df = get_data(ctx)\n        if df.empty:\n            ctx[\"date\"] -= timedelta(days=1)\n            df = get_data(ctx)\n            if df.empty:\n                raise NoDataFound(\"No CLI data found for date/station.\")\n    else:\n        df = get_data(ctx)\n    if df.empty:\n        raise NoDataFound(\"No CLI data found for date/station.\")\n    # Build temperature gauge params\n    highparams, lowparams = build_params(\n        ctx[\"_nt\"].sts[ctx[\"station\"]][\"climate_site\"],\n        ctx[\"date\"],\n    )\n    row = df.iloc[0]\n    title = (\n        f\"{ctx['date'].strftime('%-d %b %Y')} CLImate Report for \"\n        f\"{ctx['_sname']}\"\n    )\n    fig = figure(title=title, apctx=ctx)\n\n    # High Temp\n    fig.text(0.05, 0.85, \"High Temperature\", fontsize=24)\n    if not pd.isna(row[\"high\"]) and highparams.stddev is not None:\n        ax = fig.add_axes(\n            [0.05, 0.48, 0.3, 0.4],\n            projection=\"polar\",\n            anchor=\"SW\",\n            frame_on=False,\n        )\n        gauge(ax, row, \"high\", highparams)\n\n    # Low Temp\n    fig.text(0.05, 0.42, \"Low Temperature\", fontsize=24)\n    if not pd.isna(row[\"low\"]) and lowparams.stddev is not None:\n        ax = fig.add_axes(\n            [0.05, 0.05, 0.3, 0.4],\n            projection=\"polar\",\n            anchor=\"SW\",\n            frame_on=False,\n        )\n        gauge(ax, row, \"low\", lowparams)\n\n    fig.text(0.05, 0.05, \"Lines: Black=Avg, Red=Median, White=10th-90th Ptile\")\n\n    fig.text(0.5, 0.85, \"Precipitation\", fontsize=24)\n    precip(fig, row, \"precip\")\n\n    if row[\"snow\"] is not None or row[\"snow_month\"] is not None:\n        fig.text(0.5, 0.42, \"Snowfall\", fontsize=24)\n        precip(fig, row, \"snow\")\n\n    fig.text(0.3, 0.01, f\"Based on text: {row['product']}\")\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p219.py",
    "content": "\"\"\"\nThis app generates infographics for Terminal Aerodome Forecasts (TAF).\nYou need not provide an exact valid timestamp for the TAF issuance, the\napp will search backwards in time up to 24 hours to find the nearest\nissuance stored in the database.\n\"\"\"\n\nimport time\nfrom datetime import datetime, timedelta, timezone\n\nimport matplotlib.patheffects as PathEffects\nimport numpy as np\nimport pandas as pd\nimport requests\nfrom matplotlib.patches import Rectangle\nfrom metpy.calc import wind_components\nfrom metpy.units import units\nfrom pyiem.database import (\n    get_dbconn,\n    get_sqlalchemy_conn,\n    sql_helper,\n    with_sqlalchemy_conn,\n)\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.util import LOG, utc\nfrom sqlalchemy.engine import Connection\n\nVIS = \"visibility\"\nTEXTARGS = {\n    \"fontsize\": 12,\n    \"color\": \"k\",\n    \"ha\": \"center\",\n    \"va\": \"center\",\n    \"zorder\": 3,\n}\nPE = [PathEffects.withStroke(linewidth=5, foreground=\"white\")]\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"defaults\"] = {\"_r\": \"t\"}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"text\",\n            default=\"KDSM\",\n            name=\"station\",\n            label=\"Select station to plot:\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"valid\",\n            default=utc().strftime(\"%Y/%m/%d %H%M\"),\n            label=\"TAF Issuance/Valid Timestamp (UTC Timezone):\",\n            min=\"1995/01/01 0000\",\n        ),\n    ]\n    return desc\n\n\ndef get_text(product_id: str):\n    \"\"\"get the raw text.\"\"\"\n    text = \"Text Unavailable, Sorry.\"\n    uri = f\"https://mesonet.agron.iastate.edu/api/1/nwstext/{product_id}\"\n    # Allow for some time for the product to show up in AFOS\n    for attempt in range(2):\n        try:\n            resp = requests.get(uri, timeout=5)\n            resp.raise_for_status()\n            text = resp.content.decode(\"ascii\", \"ignore\").replace(\"\\001\", \"\")\n            text = \"\\n\".join(text.replace(\"\\r\", \"\").split(\"\\n\")[5:])\n            break\n        except Exception as exp:\n            if attempt > 0:\n                LOG.warning(exp)\n            time.sleep(10)\n\n    return text\n\n\n@with_sqlalchemy_conn(\"asos\")\ndef taf_search(station, valid, conn: Connection | None = None):\n    \"\"\"Go look for a nearest in time TAF.\"\"\"\n    res = conn.execute(\n        sql_helper(\n            \"SELECT valid at time zone 'UTC' from taf \"\n            \"WHERE station = :station and valid > :sts and \"\n            \"valid <= :ets ORDER by valid DESC\"\n        ),\n        {\"station\": station, \"sts\": valid - timedelta(hours=24), \"ets\": valid},\n    )\n    if res.rowcount == 0:\n        return None\n    return res.fetchone()[0].replace(tzinfo=timezone.utc)\n\n\ndef compute_flight_condition(row):\n    \"\"\"What's our status.\"\"\"\n    # TEMPO may not address sky or vis\n    if row[\"ftype\"] == 2 and (not row[\"skyc\"] or pd.isna(row[VIS])):\n        return None\n    level = 10000\n    if \"SKC\" in row[\"skyc\"]:\n        return \"VFR\"\n    if \"OVC\" in row[\"skyc\"]:\n        level = row[\"skyl\"][row[\"skyc\"].index(\"OVC\")]\n    if level == 10000 and \"BKN\" in row[\"skyc\"]:\n        level = row[\"skyl\"][row[\"skyc\"].index(\"BKN\")]\n    if row[VIS] > 5 and level > 3000:\n        return \"VFR\"\n    if level < 500 or row[VIS] < 1:\n        return \"LIFR\"\n    if level < 1000 or row[VIS] < 3:\n        return \"IFR\"\n    if level <= 3000 or row[VIS] <= 5:\n        return \"MVFR\"\n    return \"UNK\"\n\n\ndef fetch(station: str, ts: datetime) -> pd.DataFrame:\n    \"\"\"Getme data.\"\"\"\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n    SELECT f.*, t.product_id,\n    coalesce(t.is_amendment, false) as is_amendment\n    from taf t JOIN taf_forecast f on\n    (t.id = f.taf_id) WHERE t.station = :station and t.valid = :valid\n    and ftype in (0, 1, 2)\n    ORDER by f.valid ASC\"\"\"),\n            conn,\n            params={\"station\": station, \"valid\": ts},\n            index_col=\"valid\",\n        )\n    return df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    valid = ctx[\"valid\"].replace(tzinfo=timezone.utc)\n    df = fetch(ctx[\"station\"], valid)\n    if df.empty:\n        pgconn = get_dbconn(\"asos\")\n        valid = taf_search(ctx[\"station\"], valid)\n        pgconn.close()\n        if valid is None:\n            raise NoDataFound(\"TAF data was not found!\")\n        df = fetch(ctx[\"station\"], valid)\n    # prevent all nan from becoming an object\n    df = df.fillna(np.nan).infer_objects()\n    df[\"next_valid\"] = (\n        df.reset_index().shift(-1)[\"valid\"].values - df.index.values\n    )\n    product_id = df.iloc[0][\"product_id\"]\n    amd = \"Amended \" if df.iloc[0][\"is_amendment\"] else \"\"\n    title = (\n        f\"{ctx['station']} {amd}Terminal Aerodome Forecast by NWS \"\n        f\"{product_id[14:17]}\\n\"\n        f\"Valid: {valid.strftime('%-d %b %Y %H:%M UTC')}\"\n    )\n    text = get_text(product_id)\n    if len(text.split(\"\\n\")) > 10:\n        raise NoDataFound(f\"TAF text {product_id} is too long to plot!\")\n    fig = figure(title=title, apctx=ctx)\n\n    ###\n    res = fig.text(0.43, 0.02, text.strip(), va=\"bottom\", fontsize=12)\n    bbox = res.get_window_extent(fig.canvas.get_renderer())\n    figbbox = fig.get_window_extent()\n    # Figure out the width of this box and then side it to the right to make\n    # room for other plotting things\n    new_x0 = 0.98 - (bbox.x1 - bbox.x0) / figbbox.width\n    res.set_position((new_x0, 0.02))\n    # one-two line TAFs cause the legend to go off-screen\n    yndc = max([bbox.y1 / figbbox.y1, 0.13])\n    # Create the main axes that will hold all our hackery\n    ax = fig.add_axes((0.08, yndc + 0.05, 0.9, 0.9 - yndc - 0.05))\n    fig.text(0.015, 0.3, \"Cloud Coverage & Level\", rotation=90)\n\n    df[\"u\"], df[\"v\"] = [\n        x.m\n        for x in wind_components(\n            units(\"knot\") * df[\"sknt\"].values,\n            units(\"degree\") * df[\"drct\"].values,\n        )\n    ]\n    df[\"ws_u\"], df[\"ws_v\"] = [\n        x.m\n        for x in wind_components(\n            units(\"knot\") * df[\"ws_sknt\"].values,\n            units(\"degree\") * df[\"ws_drct\"].values,\n        )\n    ]\n    # Initialize a fcond with string type\n    df[\"fcond\"] = \"\"\n    sz = len(df.index)\n    clevels = []\n    clevelx = []\n    for valid0, row in df.iterrows():\n        valid = valid0\n        if not pd.isna(row[\"end_valid\"]):\n            valid = valid + (row[\"end_valid\"] - valid) / 2\n        # Between 1-3 plot the clouds\n        for j, skyc in enumerate(row[\"skyc\"]):\n            level = 3\n            if skyc != \"SKC\":\n                level = min([3200, row[\"skyl\"][j]]) / 1600 + 1\n                if j + 1 == len(row[\"skyc\"]):\n                    clevelx.append(valid)\n                    clevels.append(level)\n            ax.text(valid, level, skyc, **TEXTARGS).set_path_effects(PE)\n\n        # At 0.9 present weather\n        delta = row[\"next_valid\"]\n        rotation = 0\n        if not pd.isna(delta) and delta < timedelta(hours=2):\n            rotation = 45\n        ax.text(\n            valid,\n            0.9,\n            \"\\n\".join(row[\"presentwx\"]),\n            rotation=rotation,\n            **TEXTARGS,\n        ).set_path_effects(PE)\n        # Plot wind as text string\n        if pd.notna(row[\"ws_sknt\"]):\n            ax.text(\n                valid,\n                3.8 + 0.5,\n                f\"WS{row['ws_sknt']:.0f}\",\n                ha=\"center\",\n                fontsize=TEXTARGS[\"fontsize\"],\n                va=\"top\" if row[\"v\"] < 0 else \"bottom\",\n                color=\"r\",\n            ).set_path_effects(PE)\n        text = f\"{row['sknt']:.0f}\"\n        if not pd.isna(row[\"gust\"]) and row[\"gust\"] > 0:\n            text += f\"G{row['gust']:.0f}\"\n        if not pd.isna(row[\"sknt\"]):\n            ax.text(\n                valid,\n                3.8 + 0.35,\n                f\"{text}KT\",\n                ha=\"center\",\n                fontsize=TEXTARGS[\"fontsize\"],\n                color=TEXTARGS[\"color\"],\n                va=\"top\" if row[\"v\"] < 0 else \"bottom\",\n            ).set_path_effects(PE)\n        df.at[valid0, \"fcond\"] = compute_flight_condition(row)\n        # At 3.25 plot the visibility\n        if not pd.isna(row[VIS]):\n            pltval = f\"{row['visibility']:g}\"\n            if row[\"visibility\"] > 6:\n                pltval = \"6+\"\n            ax.text(valid, 3.25, pltval, **TEXTARGS).set_path_effects(PE)\n\n    if clevels:\n        ax.plot(clevelx, clevels, linestyle=\":\", zorder=2)\n\n    # Between 3.5-4.5 plot the wind arrows\n    ax.barbs(\n        df.index.values,\n        [3.8] * sz,\n        df[\"u\"].values,\n        df[\"v\"].values,\n        zorder=3,\n        color=\"k\",\n    )\n    ax.barbs(\n        df.index.values,\n        [3.8] * sz,\n        df[\"ws_u\"].values,\n        df[\"ws_v\"].values,\n        zorder=4,\n        color=\"r\",\n    )\n\n    padding = timedelta(minutes=60)\n    ax.set_xlim(df.index.min() - padding, df.index.max() + padding)\n    ax.set_yticks([0.9, 1.5, 2, 2.5, 3, 3.25, 3.8])\n    ax.set_yticklabels(\n        [\n            \"WX\",\n            \"800ft\",\n            \"1600ft\",\n            \"2400ft\",\n            \"3200+ft\",\n            \"Vis (mile)\",\n            \"Wind (KT)\",\n        ]\n    )\n    ax.set_ylim(0.8, 4.5)\n    for y in [1, 3.125, 3.375]:\n        ax.axhline(\n            y,\n            color=\"blue\",\n            lw=0.5,\n        )\n\n    colors = {\n        \"UNK\": \"#EEEEEE\",\n        \"VFR\": \"green\",\n        \"MVFR\": \"blue\",\n        \"IFR\": \"red\",\n        \"LIFR\": \"magenta\",\n    }\n    # Colorize things by flight condition\n    xs = df.index.to_list()\n    xs[0] = xs[0] - padding\n    xs.append(df.index.max() + padding)\n    previous = \"VFR\"\n    for i, val_in in enumerate(df[\"fcond\"].values):\n        val = previous if val_in is None else val_in\n        previous = val\n        ax.axvspan(\n            xs[i],\n            xs[i + 1],\n            fc=colors.get(val, \"white\"),\n            ec=\"None\",\n            alpha=0.5,\n            zorder=2,\n        )\n    rects = [\n        Rectangle((0, 0), 1, 1, fc=item, alpha=0.5) for item in colors.values()\n    ]\n    ax.legend(\n        rects,\n        colors.keys(),\n        ncol=3,\n        loc=\"upper left\",\n        fontsize=14,\n        bbox_to_anchor=(0.0, -0.04),\n        fancybox=True,\n        shadow=True,\n    )\n\n    # Need to get rid of timezones\n    df = df.reset_index()\n    for col in [\"valid\", \"end_valid\"]:\n        # some rows could be NaN\n        df[col] = df[pd.notna(df[col])][col].apply(\n            lambda x: x.strftime(\"%Y-%m-%d %H:%M\")\n        )\n    return fig, df.drop(\"next_valid\", axis=1)\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p220.py",
    "content": "\"\"\"\nThis app generates infographics for the Storm Prediction Center\nor Weather Prediction Center outlooks.\nThe trick here is how the valid time works.  The app will first\nattempt to match an issuance to that timestamp, if it fails, it then\nlooks backwards in time for the most recent issuance to that timestamp.\n\n<p>Another bit of ambiguity is which outlook you get between about\nmidnight and the 13z issuance of the Day 1 Outlook.  In this case and\nas the code stands now, you get the next day's outlook.\n\n<p>A <a href=\"/request/gis/outlooks.phtml\">GIS Shapefile</a> download\noption exists for downloading these outlooks in-bulk.</p>\n\"\"\"\n\nfrom datetime import timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport geopandas as gpd\nimport pandas as pd\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot\nfrom pyiem.reference import LATLON, Z_OVERLAY2_LABEL, Z_POLITICAL\nfrom pyiem.util import utc\n\nfrom iemweb.autoplot import ARG_FEMA\nfrom iemweb.autoplot.scripts200.p201 import COLORS\n\nCENTRALTZ = ZoneInfo(\"America/Chicago\")\nPDICT = {\n    \"cwa\": \"Plot by NWS Forecast Office\",\n    \"state\": \"Plot by State/Sector\",\n    \"fema\": \"Plot by FEMA Region\",\n}\nPDICT2 = {\n    \"1C\": \"Day 1 Convective\",\n    \"2C\": \"Day 2 Convective\",\n    \"3C\": \"Day 3 Convective\",\n    \"4C\": \"Day 4 Convective\",\n    \"5C\": \"Day 5 Convective\",\n    \"6C\": \"Day 6 Convective\",\n    \"7C\": \"Day 7 Convective\",\n    \"8C\": \"Day 8 Convective\",\n    \"0C\": \"Day 4-8 Convective\",\n    \"1F\": \"Day 1 Fire Weather\",\n    \"2F\": \"Day 2 Fire Weather\",\n    \"3F\": \"Day 3 Fire Weather\",\n    \"4F\": \"Day 4 Fire Weather\",\n    \"5F\": \"Day 5 Fire Weather\",\n    \"6F\": \"Day 6 Fire Weather\",\n    \"7F\": \"Day 7 Fire Weather\",\n    \"8F\": \"Day 8 Fire Weather\",\n    \"0F\": \"Day 3-8 Fire Weather\",\n    \"1E\": \"Day 1 Excessive Rainfall Outlook\",\n    \"2E\": \"Day 2 Excessive Rainfall Outlook\",\n    \"3E\": \"Day 3 Excessive Rainfall Outlook\",\n    \"4E\": \"Day 4 Excessive Rainfall Outlook\",\n    \"5E\": \"Day 5 Excessive Rainfall Outlook\",\n}\nPDICT3 = {\n    \"categorical\": \"Categorical (D1-3), Any Severe (D4-8)\",\n    \"hail\": \"Hail (D1-2)\",\n    \"tornado\": \"Tornado (D1-2)\",\n    \"wind\": \"Wind (D1-2)\",\n}\nTHRESHOLD_LEVELS = {\n    \"TSTM\": \"Thunderstorms\",\n    \"MRGL\": \"1. Marginal\",\n    \"SLGT\": \"2. Slight\",\n    \"ENH\": \"3. Enhanced\",\n    \"MDT\": \"4. Moderate\",\n    \"HIGH\": \"5. High\",\n}\n# Overrides the above\nWPC_THRESHOLD_LEVELS = {\n    \"MDT\": \"3. Moderate\",\n    \"HIGH\": \"4. High\",\n}\nDAY_COLORS = {\n    3: \"#ff00ff\",\n    4: \"#ff0000\",\n    5: \"#ffff00\",\n    6: \"#edbf7c\",\n    7: \"#f67a7d\",\n    8: \"#ff78ff\",\n}\nOUTLINE_COLORS = {\n    \"TSTM\": \"#566453\",\n    \"MRGL\": \"#437a43\",\n    \"SLGT\": \"#d8a31f\",\n    \"ENH\": \"#d9921c\",\n    \"MDT\": \"#a6160b\",\n    \"HIGH\": \"#d21fc3\",\n}\nISO = \"%Y-%m-%d %H:%M\"\nSQL = \"\"\"\nWITH data as (\n    SELECT o.*, g.* from spc_outlook o LEFT JOIN spc_outlook_geometries g\n    on (o.id = g.spc_outlook_id and g.category = :c) WHERE product_issue = :ts\n    and day = ANY(:days) and outlook_type = :ot)\n\nSELECT d.product_issue at time zone 'UTC' as product_issue,\nexpire at time zone 'UTC' as expire, d.geom,\nissue at time zone 'UTC' as issue, d.threshold,\nupdated at time zone 'UTC' as updated, d.product_id, d.day,\nd.cycle, d.outlook_type, t.priority from data d LEFT JOIN\nspc_outlook_thresholds t on (d.threshold = t.threshold)\nORDER by day ASC, priority ASC\n\"\"\"\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"defaults\"] = {\"_r\": \"t\"}\n    desc[\"cache\"] = 600\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            default=\"1C\",\n            name=\"which\",\n            options=PDICT2,\n            label=\"Select SPC/WPC Outlook Day and Type\",\n        ),\n        dict(\n            type=\"select\",\n            default=\"categorical\",\n            name=\"cat\",\n            options=PDICT3,\n            label=\"Select SPC/WPC Outlook Category\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"t\",\n            default=\"state\",\n            options=PDICT,\n            label=\"Select plot extent type:\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"wfo\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO: (when applicable)\",\n        ),\n        ARG_FEMA,\n        dict(\n            type=\"csector\",\n            name=\"csector\",\n            default=\"IA\",\n            label=\"Select state/sector to plot\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"valid\",\n            default=utc().strftime(\"%Y/%m/%d %H%M\"),\n            label=\"Outlook Issuance/Valid Timestamp (UTC Timezone):\",\n            min=\"1987/01/01 0000\",\n        ),\n    ]\n    return desc\n\n\ndef outlook_search(valid, days, outlook_type):\n    \"\"\"Find nearest outlook.\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        res = conn.execute(\n            sql_helper(\"\"\"\n                 SELECT product_issue at time zone 'UTC' from spc_outlook\n            WHERE day = ANY(:days) and outlook_type = :ot\n            and product_issue > :sts and\n            product_issue < :ets ORDER by product_issue DESC\n            \"\"\"),\n            {\n                \"days\": days,\n                \"ot\": outlook_type,\n                \"sts\": valid - timedelta(hours=24),\n                \"ets\": valid,\n            },\n        )\n        if res.rowcount == 0:\n            return None\n        return res.fetchone()[0].replace(tzinfo=timezone.utc)\n\n\ndef compute_datelabel(df):\n    \"\"\"Figure out something pretty.\"\"\"\n    # Woof\n    date1 = df[\"issue\"].min().to_pydatetime().astimezone(CENTRALTZ)\n    date2 = df[\"issue\"].max().to_pydatetime().astimezone(CENTRALTZ)\n    if date1 == date2:\n        return date1.strftime(\"%B %-d, %Y\")\n    if date1.month == date2.month:\n        return (\n            date1.strftime(\"%B %-d-\")\n            + date2.strftime(\"%-d \")\n            + str(date2.year)\n        )\n    return (\n        date1.strftime(\"%b %-d-\") + date2.strftime(\"%b %-d \") + str(date2.year)\n    )\n\n\ndef get_threshold_label(threshold, outlook_type) -> str:\n    \"\"\"Make it pretty.\"\"\"\n    if threshold in THRESHOLD_LEVELS:\n        if outlook_type == \"E\":\n            return WPC_THRESHOLD_LEVELS.get(\n                threshold,\n                THRESHOLD_LEVELS[threshold],\n            )\n        return THRESHOLD_LEVELS[threshold]\n    if threshold.startswith(\"0.\"):\n        return f\"{(float(threshold) * 100.0):.0f}%\"\n    return threshold\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    valid = ctx[\"valid\"].replace(tzinfo=timezone.utc)\n    day, outlook_type = int(ctx[\"which\"][0]), ctx[\"which\"][1]\n    category = ctx[\"cat\"].upper()\n    # Ensure we don't have an incompatable combo\n    if outlook_type == \"E\":\n        category = \"CATEGORICAL\"\n    elif outlook_type == \"F\":\n        category = \"FIRE WEATHER CATEGORICAL\"\n    if (day == 0 or day > 2) and outlook_type == \"F\":\n        category = \"CRITICAL FIRE WEATHER AREA\"\n    if (day == 0 or day > 3) and outlook_type == \"C\":\n        category = \"ANY SEVERE\"\n    days = [\n        day,\n    ]\n    if day == 0:\n        days = list(range(4, 9))\n        if outlook_type == \"F\":\n            days = list(range(3, 9))\n\n    def fetch(ts):\n        \"\"\"Getme data.\"\"\"\n        # NB careful here with the joins and not to use the view!\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            df = gpd.read_postgis(\n                sql_helper(SQL),\n                conn,\n                params={\n                    \"c\": category,\n                    \"ts\": ts,\n                    \"days\": days,\n                    \"ot\": outlook_type,\n                },\n                index_col=None,\n                geom_col=\"geom\",\n            )  # type: ignore\n        return df\n\n    df = fetch(valid)\n    if df.empty:\n        valid = outlook_search(valid, days, outlook_type)\n        if valid is None:\n            raise NoDataFound(\"SPC Outlook data was not found!\")\n        df = fetch(valid)\n    for col in [\"updated\", \"product_issue\", \"issue\", \"expire\"]:\n        df[col] = df[col].dt.tz_localize(timezone.utc)\n    csector = ctx.pop(\"csector\")\n    if ctx[\"t\"] == \"cwa\":\n        sector = \"cwa\"\n    elif ctx[\"t\"] == \"fema\":\n        sector = \"fema_region\"\n    else:\n        sector = \"state\" if len(csector) == 2 else csector\n    daylabel = day if day > 0 else f\"{days[0]}-{days[-1]}\"\n    datelabel = compute_datelabel(df)\n\n    catlabel = \" \".join([x.capitalize() for x in category.split()])\n    w = \"Weather\" if outlook_type == \"E\" else \"Storm\"\n    if outlook_type == \"E\":\n        catlabel = \"Excessive Rainfall\"\n    mp = MapPlot(\n        apctx=ctx,\n        title=(\n            f\"{datelabel} {w} Prediction Center Day {daylabel} \"\n            f\"{catlabel} Outlook\"\n        ),\n        subtitle=(\n            f\"Issued: {df.iloc[0]['product_issue'].strftime(ISO)} UTC \"\n            f\"| Valid: {df['issue'].min().strftime(ISO)} UTC \"\n            f\"| Expire: {df['expire'].max().strftime(ISO)} UTC\"\n        ),\n        sector=sector,\n        state=csector,\n        cwa=(ctx[\"wfo\"] if len(ctx[\"wfo\"]) == 3 else ctx[\"wfo\"][1:]),\n        fema_region=ctx[\"fema\"],\n        nocaption=True,\n        background=\"ne2\",\n    )\n    rects = []\n    rectlabels = []\n    hatching = {\"SIGN\": \"/\", \"CIG1\": \"/\", \"CIG2\": \"\\\\\", \"CIG3\": \"x\"}\n    for _idx, row in df[~pd.isna(df[\"threshold\"])].iterrows():\n        if row[\"threshold\"] in [\"SIGN\", \"CIG1\", \"CIG2\", \"CIG3\"]:\n            mp.panels[0].add_geometries(\n                [row[\"geom\"]],\n                LATLON,\n                facecolor=\"None\",\n                edgecolor=\"k\",\n                linewidth=2,\n                hatch=hatching[row[\"threshold\"]],\n                zorder=Z_POLITICAL - 1,\n            )\n            rect = Rectangle(\n                (0, 0), 1, 1, fc=\"None\", hatch=hatching[row[\"threshold\"]]\n            )\n        else:\n            fc = COLORS.get(row[\"threshold\"], \"red\")\n            ec = OUTLINE_COLORS.get(row[\"threshold\"], \"k\")\n            if day > 3 and row[\"threshold\"] in [\"0.15\", \"0.30\"]:\n                _xref = {\"0.15\": \"SLGT\", \"0.30\": \"ENH\"}\n                fc = COLORS[_xref[row[\"threshold\"]]]\n                ec = OUTLINE_COLORS[_xref[row[\"threshold\"]]]\n            if day == 0:\n                fc, ec = \"None\", DAY_COLORS[row[\"day\"]]\n                if row[\"threshold\"] == \"0.30\":\n                    fc = ec\n            mp.panels[0].add_geometries(\n                [row[\"geom\"]],\n                LATLON,\n                facecolor=fc,\n                edgecolor=ec,\n                linewidth=2,\n                zorder=Z_POLITICAL - 1,\n            )\n            rect = Rectangle((0, 0), 1, 1, fc=fc, ec=ec)\n        rects.append(rect)\n        label = get_threshold_label(row[\"threshold\"], outlook_type)\n        label = (\n            label.replace(\"Thunderstorms\", \"T'Storms\")\n            if ctx[\"_r\"] == \"86\"\n            else label\n        )\n        if day == 0:\n            label = f\"D{row['day']} {label}\"\n        rectlabels.append(label)\n    if rects:\n        mp.ax.legend(\n            rects,\n            rectlabels,\n            ncol=1,\n            loc=\"lower right\",\n            fontsize=12,\n            bbox_to_anchor=(1.08, 0.01),\n            fancybox=True,\n            framealpha=1,\n        ).set_zorder(Z_OVERLAY2_LABEL + 100)\n    else:\n        emptytext = \"Potential Too Low\"\n        if (\n            outlook_type == \"C\"\n            and day in [1, 2, 3]\n            and category == \"categorical\"\n        ):\n            emptytext = \"No Thunderstorms Forecast\"\n        mp.ax.text(\n            0.5,\n            0.5,\n            emptytext,\n            transform=mp.ax.transAxes,\n            fontsize=30,\n            ha=\"center\",\n            color=\"yellow\",\n            bbox=dict(color=\"black\", alpha=0.5),\n            zorder=Z_OVERLAY2_LABEL,\n        )\n\n    if sector == \"cwa\":\n        mp.draw_cwas(color=\"k\", linewidth=2.5)\n    if sector == \"fema_region\":\n        mp.draw_fema_regions()\n    if sector in [\"cwa\", \"state\"]:\n        mp.drawcounties()\n        mp.drawcities()\n\n    for col in [\"product_issue\", \"issue\", \"expire\", \"updated\"]:\n        # some rows could be NaN\n        df[col] = df[~pd.isna(df[col])][col].apply(lambda x: x.strftime(ISO))\n    return mp.fig, df.drop(\"geom\", axis=1)\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p221.py",
    "content": "\"\"\"\nThe NCEP deterministic HRRR model forecast produces a post\nprocessed field that is meant to resemble RADAR reflectivity.  The\nlowest 1km HRRR product is plotted along with the IEM mosaic NWS\nNEXRAD base reflectivity.\n\n<p><strong>Caution:</strong> This autoplot is very slow to generate,\nplease be patient!\n\"\"\"\n\nfrom datetime import datetime, timedelta, timezone\nfrom functools import partial\nfrom io import BytesIO\nfrom multiprocessing import Pool\n\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport pygrib\nimport pyproj\nfrom affine import Affine\nfrom PIL import Image\nfrom pyiem.plot import MapPlot, ramp2df\nfrom pyiem.util import LOG, archive_fetch, utc\n\nPDICT = {\n    \"sector\": \"Plot by State / Sector\",\n    \"cwa\": \"Plot by NWS CWA / WFO\",\n}\nFONTSIZE = 32\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"data\": False, \"description\": __doc__}\n    # Lame default to cut down on CI time :/\n    sts = utc() + timedelta(hours=10)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"w\",\n            default=\"sector\",\n            options=PDICT,\n            label=\"Plot for which domain type\",\n        ),\n        dict(\n            type=\"csector\",\n            name=\"sector\",\n            default=\"IA\",\n            label=\"Select state/sector\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"cwa\",\n            default=\"DMX\",\n            label=\"Select WFO / CWA:\",\n            network=\"WFO\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"valid\",\n            default=sts.strftime(\"%Y/%m/%d %H00\"),\n            max=sts.strftime(\"%Y/%m/%d %H00\"),\n            label=\"Plot Valid At (UTC Timestamp):\",\n            min=\"2014/01/01 0000\",\n        ),\n    ]\n    return desc\n\n\ndef mp_factory(ctx):\n    \"\"\"Make\"\"\"\n    if ctx[\"w\"] == \"sector\":\n        sector = \"state\" if len(ctx[\"sector\"]) == 2 else ctx[\"sector\"]\n        state = ctx[\"sector\"]\n        cwa = \"\"\n    else:\n        sector = \"cwa\"\n        state = \"\"\n        cwa = ctx[\"cwa\"]\n    return MapPlot(\n        apctx=ctx,\n        sector=sector,\n        nologo=True,\n        state=state,\n        cwa=cwa,\n        nocaption=True,\n    )\n\n\ndef forecast2image(\n    ctx: dict, valid: datetime, fhour: int\n) -> list[int, bytes | None]:\n    \"\"\"Overlay things.\"\"\"\n    ts = valid - timedelta(hours=fhour)\n    if ts >= utc():\n        return fhour, None\n    ppath = ts.strftime(\"%Y/%m/%d/model/hrrr/%H/hrrr.t%Hz.refd.grib2\")\n    with archive_fetch(ppath) as gribfn:\n        if gribfn is None:\n            return fhour, None\n        try:\n            with pygrib.open(gribfn) as grbs:\n                grb = grbs.select(\n                    shortName=\"refd\", level=1000, forecastTime=fhour * 60\n                )[0]\n                pparams = grb.projparams\n                lat1 = grb[\"latitudeOfFirstGridPointInDegrees\"]\n                lon1 = grb[\"longitudeOfFirstGridPointInDegrees\"]\n                llx, lly = pyproj.Proj(pparams)(lon1, lat1)\n                # The reprojected first grid cell is the centroid\n                # not the outer edge\n                aff = Affine(\n                    grb[\"DxInMetres\"],\n                    0.0,\n                    llx - grb[\"DxInMetres\"] / 2.0,\n                    0.0,\n                    -grb[\"DyInMetres\"],\n                    lly\n                    + grb[\"DyInMetres\"] * grb[\"Ny\"]\n                    + grb[\"DyInMetres\"] / 2.0,\n                )\n\n                ref = np.flipud(grb[\"values\"])\n        except Exception as exp:\n            LOG.exception(exp)\n            return fhour, None\n    ref = np.where(ref < -9, -100, ref)\n    # HRRR anything below -9 is missing\n    mp = mp_factory(ctx)\n    mp.fig.text(\n        0.1,\n        0.92,\n        f\"HRRR Init:{ts:%d/%H} Forecast Hour:{fhour}\",\n        fontsize=FONTSIZE,\n    )\n    mp.imshow(\n        ref,\n        affine=aff,\n        crs=pparams,\n        clevs=range(-30, 96, 4),\n        cmap=ctx[\"cmap\"],\n        clip_on=False,\n        clevstride=5,\n    )\n    if ctx[\"w\"] != \"sector\" and ctx[\"sector\"] != \"conus\":\n        mp.drawcounties()\n    buf = BytesIO()\n    mp.fig.savefig(buf, format=\"png\")\n    mp.close()\n    return fhour, buf.getvalue()\n\n\ndef add_obs(img, ctx, valid):\n    \"\"\"Plot the validation.\"\"\"\n    mp = mp_factory(ctx)\n    mp.fig.text(\n        0.05,\n        0.92,\n        f\"NEXRAD MOSAIC {valid:%Y-%m-%d %H:%M} UTC\",\n        fontsize=FONTSIZE,\n        bbox=dict(color=\"white\"),\n    )\n    mp.overlay_nexrad(valid)\n    if ctx[\"w\"] != \"sector\" and ctx[\"sector\"] != \"conus\":\n        mp.drawcounties()\n    buf = BytesIO()\n    mp.fig.savefig(buf, format=\"png\")\n    buf.seek(0)\n    with Image.open(buf).resize((512, 386)) as tmp:\n        img.paste(tmp, (0, 0))\n    buf.close()\n    mp.close()\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    valid = ctx[\"valid\"].replace(tzinfo=timezone.utc)\n    ramp = ramp2df(\"composite_n0q\")\n    ctx[\"cmap\"] = mpcolors.ListedColormap(\n        ramp[[\"r\", \"g\", \"b\"]].to_numpy() / 256,\n    )\n    ctx[\"cmap\"].set_under((0, 0, 0, 0))\n\n    width = 512\n    height = 386\n    img = Image.new(\"RGB\", (width * 4, height * 4))\n\n    add_obs(img, ctx, valid)\n    func = partial(forecast2image, ctx, valid)\n    # We are generally CPU bound here reading those nasty grib2 files :/\n    with Pool(4) as pool:\n        for fhour, buf in pool.imap_unordered(func, range(1, 16)):\n            if buf is None:\n                continue\n            x = (fhour % 4) * width\n            y = (fhour // 4) * height\n            bio = BytesIO(buf)\n            bio.seek(0)\n            with Image.open(bio).resize((512, 386)) as tmp:\n                img.paste(tmp, (x, y))\n\n    return img\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p222.py",
    "content": "\"\"\"\nUsing available one minute precipitation data from an ASOS, this\ndata is merged with an archive of polygon based warnings.\nPrecipitation totals are then computed during the warnings that spatially\ncover the observation point and within one hour of the warning.\n\n<p>This app is slow to load, please be patient!\n\"\"\"\n\nfrom datetime import timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom pyiem.util import utc\n\nPDICT = {\n    \"svrtor\": \"Severe Thunderstorm + Tornado Warnings\",\n    \"ffw\": \"Flash Flood Warnings\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation\",\n            default=\"DSM\",\n            network=\"IA_ASOS\",\n            label=\"Select Station (not all have 1 minute, sorry):\",\n        ),\n        dict(\n            type=\"select\",\n            options=PDICT,\n            name=\"w\",\n            label=\"Select warning type(s) to accumulate precipitation during\",\n            default=\"svrtor\",\n        ),\n    ]\n    return desc\n\n\ndef get_data(ctx, meta):\n    \"\"\"Fetch Data.\"\"\"\n    with get_sqlalchemy_conn(\"asos1min\") as conn:\n        obsdf = pd.read_sql(\n            sql_helper(\"\"\"\n    SELECT valid, precip, extract(year from valid)::int as year,\n    extract(doy from valid)::int as doy\n    from alldata_1minute where station = :station and valid > :valid and\n    precip > 0 and precip < 0.2 ORDER by valid ASC\n            \"\"\"),\n            conn,\n            params={\"station\": meta[\"id\"], \"valid\": utc(2002, 1, 1)},\n            index_col=\"valid\",\n        )\n    if obsdf.empty:\n        raise NoDataFound(\"Failed to find any one-minute data, sorry.\")\n    obsdf[\"inwarn\"] = False\n    obsdf[\"nearwarn\"] = False\n    phenomenas = [\"TO\", \"SV\"]\n    if ctx[\"w\"] == \"ffw\":\n        phenomenas = [\n            \"FF\",\n        ]\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        warndf = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT issue, expire from sbw WHERE issue > '2002-01-01' and\n            phenomena = ANY(:ph) and significance = 'W' and\n            status = 'NEW' and ST_Contains(geom,\n            ST_Point(:lon, :lat, 4326))\n            ORDER by issue ASC\n            \"\"\"\n            ),\n            conn,\n            params={\"ph\": phenomenas, \"lon\": meta[\"lon\"], \"lat\": meta[\"lat\"]},\n            index_col=None,\n        )\n    td = timedelta(hours=1)\n    for _, row in warndf.iterrows():\n        obsdf.loc[row[\"issue\"] : row[\"expire\"], \"inwarn\"] = True\n        obsdf.loc[row[\"issue\"] - td : row[\"expire\"] + td, \"nearwarn\"] = True\n\n    # Yearly precips\n    df = obsdf.groupby(\"year\").sum().copy()\n\n    # Warn only\n    df[\"in\"] = obsdf[obsdf[\"inwarn\"]].groupby(\"year\").sum()[\"precip\"]\n    # Near warn, but not in\n    df[\"near\"] = (\n        obsdf[(obsdf[\"nearwarn\"] & ~obsdf[\"inwarn\"])]\n        .groupby(\"year\")\n        .sum()[\"precip\"]\n    )\n    df = df.fillna(0)\n    df[\"out\"] = df[\"precip\"] - df[\"in\"] - df[\"near\"]\n    return obsdf, df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    meta = ctx[\"_nt\"].sts[ctx[\"zstation\"]]\n    if \"HAS1MIN\" not in meta[\"attributes\"]:\n        raise NoDataFound(\"Sorry, the IEM has no one-minute data for station.\")\n    obsdf, df = get_data(ctx, meta)\n    label = \"TOR or SVR\"\n    if ctx[\"w\"] == \"ffw\":\n        label = \"Flash Flood\"\n    title = (\n        f\"[{ctx['zstation']}] {meta['name']} Yearly \"\n        f\"Airport Precipitation [{df.index.min():.0f}-{df.index.max():.0f}]\\n\"\n        f\"Contribution during, near, and outside of {label} warning \"\n        \"using one minute interval precipitation\"\n    )\n    x = df.index.astype(int).tolist()\n\n    fig, ax = figure_axes(title=title, apctx=ctx)\n    width = 0.45\n    height = 0.36\n    ax.set_position([0.05, 0.54, width, height])\n    ax.set_ylabel(\"Yearly Precip [inch]\")\n    ax.bar(x, df[\"in\"], fc=\"r\")\n    ax.bar(x, df[\"near\"], bottom=df[\"in\"], fc=\"b\")\n    ax.bar(\n        x,\n        df[\"out\"],\n        bottom=(df[\"in\"] + df[\"near\"]),\n        fc=\"g\",\n    )\n    ax.set_xticks(range(df.index.min(), df.index.max() + 1, 4))\n    ax.grid(True)\n\n    ax = fig.add_axes((0.05, 0.09, width, height))\n    ax.set_ylabel(\"Percentage [%]\")\n    ax.set_ylim(0, 100)\n\n    df[\"in_per\"] = df[\"in\"] / df[\"precip\"] * 100.0\n    p = df[\"in\"].sum() / df[\"precip\"].sum() * 100.0\n    ax.bar(x, df[\"in_per\"], fc=\"r\", label=f\"During {p:.1f}%\")\n\n    df[\"near_per\"] = df[\"near\"] / df[\"precip\"] * 100.0\n    p = df[\"near\"].sum() / df[\"precip\"].sum() * 100.0\n    ax.bar(\n        x,\n        df[\"near_per\"],\n        bottom=df[\"in_per\"],\n        fc=\"b\",\n        label=f\"+/- 1 hour {p:.1f}%\",\n    )\n\n    df[\"out_per\"] = df[\"out\"] / df[\"precip\"] * 100.0\n    p = df[\"out\"].sum() / df[\"precip\"].sum() * 100.0\n    ax.bar(\n        x,\n        df[\"out_per\"],\n        bottom=(df[\"in_per\"] + df[\"near_per\"]),\n        fc=\"g\",\n        label=f\"Outside {p:.1f}%\",\n    )\n\n    ax.legend(ncol=3, loc=(0.03, 1.03))\n    ax.grid(True)\n    ax.set_xticks(range(df.index.min(), df.index.max() + 1, 4))\n    ax.set_xlabel(\"Yearly precip may have missing data\")\n\n    ax = fig.add_axes((0.58, 0.5, 0.37, 0.31))\n    idx = pd.MultiIndex.from_product([obsdf[\"precip\"].unique(), [True, False]])\n    gdf = (\n        obsdf[[\"precip\", \"inwarn\", \"year\"]]\n        .groupby([\"precip\", \"inwarn\"])\n        .count()\n        .reindex(idx)\n        .fillna(0)\n        .transpose()\n    )\n    x = []\n    y = []\n    for val in [0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10]:\n        if (val, True) in gdf.columns:\n            x.append(val)\n            hit = gdf[(val, True)].iloc[0]\n            miss = gdf[(val, False)].iloc[0]\n            freq = hit / float(hit + miss) * 100.0\n            y.append(freq)\n            ax.text(\n                val,\n                freq + 5,\n                f\"{freq:.0f}%\",\n                ha=\"center\",\n                bbox=dict(color=\"white\", boxstyle=\"square,pad=0\"),\n                va=\"bottom\",\n            )\n\n    ax.bar(x, y, width=0.01)\n    ax.set_ylim(0, 100)\n    ax.set_ylabel(\"Frequency [%]\")\n    ax.set_title(\n        \"Frequency that given minute precipitation total\\n\"\n        f\"coincided with {label} warning\"\n    )\n    ax.grid(True)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p223.py",
    "content": "\"\"\"\nThis chart presents the monthly/seasonal partition of how a daily\nobserved climate variable is observed.  Rewording, what percentage of\na given year's daily reports at the given threshold range occur within\nthe given month and season.\n\"\"\"\n\nimport calendar\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"month\": \"Grouped by Month\",\n    \"season\": \"Grouped by Season\",\n}\nPDICT2 = {\n    \"high\": \"High Temperature\",\n    \"low\": \"Low Temperature\",\n    \"precip\": \"Precipitation\",\n}\nPDICT3 = {\n    \"percent\": \"Express as Percentages\",\n    \"days\": \"Express as Days/Year\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"high\",\n            options=PDICT2,\n            label=\"Select which daily variable\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"w\",\n            default=\"month\",\n            options=PDICT,\n            label=\"How to group data\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"how\",\n            default=\"percent\",\n            options=PDICT3,\n            label=\"How to express data\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"syear\",\n            default=1893,\n            label=\"Inclusive Starting Year:\",\n        ),\n        dict(\n            type=\"year\",\n            name=\"eyear\",\n            default=date.today().year,\n            label=\"Inclusive Ending Year:\",\n        ),\n        dict(\n            type=\"text\",\n            name=\"rng\",\n            default=\"70-79\",\n            label=\"Inclusive (both sides) range of values (F or inch)\",\n        ),\n        dict(\n            name=\"ymax\",\n            optional=True,\n            type=\"float\",\n            default=5,\n            label=\"Y-Axis Maximum Value (optional)\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    if ctx[\"rng\"].find(\"-\") == -1:\n        raise NoDataFound(\"Invalid range provided.\")\n    low, high = [float(x) for x in ctx[\"rng\"].split(\"-\")]\n    varname = ctx[\"var\"]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    select month,\n    sum(case when {varname}::numeric >= :low and {varname}::numeric <= :high\n                then 1 else 0 end) as hits, count(*)\n    from alldata where station = :station and {varname} is not null\n    and year >= :syear and year <= :eyear GROUP by month ORDER by month ASC\n        \"\"\",\n                varname=varname,\n            ),\n            conn,\n            params={\n                \"low\": low,\n                \"high\": high,\n                \"station\": station,\n                \"syear\": ctx[\"syear\"],\n                \"eyear\": ctx[\"eyear\"],\n            },\n            index_col=\"month\",\n        )\n    if df.empty:\n        raise NoDataFound(\"Did not find any observations for station.\")\n\n    hits = df[\"hits\"].sum()\n    count = df[\"count\"].sum()\n    freq = hits / float(count) * 100.0\n    days_per_year = freq / 100.0 * 365.0\n    u = \"inch\" if varname == \"precip\" else \"F\"\n    title = (\n        f\"{ctx['_sname']}:: \"\n        f\"Daily {PDICT2[varname]} between {low} and {high} {u} (inclusive)\\n\"\n        f\"Partition of Observed ({hits}/{count} {freq:.1f}%) \"\n        f\"Days {PDICT[ctx['w']]} ({ctx['syear']}-{ctx['eyear']})\"\n    )\n\n    fig, ax = figure_axes(title=title, apctx=ctx)\n    if ctx[\"how\"] == \"percent\":\n        col = \"freq\"\n        yunit = \"%\"\n    else:\n        col = \"days\"\n        yunit = \"days\"\n    ax.set_ylabel(f\"Frequency [{yunit}]\")\n    ax.grid(True)\n    if ctx[\"w\"] == \"month\":\n        df[\"freq\"] = df[\"hits\"] / df[\"hits\"].sum() * 100.0\n        df[\"days\"] = df[\"freq\"] / 100 * days_per_year\n        bars = ax.bar(df.index.values, df[col].values, width=0.8)\n        ax.set_xticks(range(1, 13))\n        ax.set_xticklabels(calendar.month_abbr[1:])\n    else:\n        df[\"season\"] = \"winter (DJF)\"\n        df.loc[df.index.isin([3, 4, 5]), \"season\"] = \"spring (MAM)\"\n        df.loc[df.index.isin([6, 7, 8]), \"season\"] = \"summer (JJA)\"\n        df.loc[df.index.isin([9, 10, 11]), \"season\"] = \"fall (SON)\"\n        gdf = df.groupby(\"season\").sum().copy()\n        gdf[\"freq\"] = gdf[\"hits\"] / gdf[\"hits\"].sum() * 100\n        gdf[\"days\"] = gdf[\"freq\"] / 100 * days_per_year\n        bars = ax.bar(\n            range(1, 5),\n            [\n                gdf.at[\"winter (DJF)\", col],\n                gdf.at[\"spring (MAM)\", col],\n                gdf.at[\"summer (JJA)\", col],\n                gdf.at[\"fall (SON)\", col],\n            ],\n            align=\"center\",\n        )\n        ax.set_xticks(range(1, 5))\n        ax.set_xticklabels(\n            [\"Winter (DJF)\", \"Spring (MAM)\", \"Summer (JJA)\", \"Fall (SON)\"]\n        )\n    dy = ax.get_ylim()[1] - ax.get_ylim()[0]\n    for bb in bars:\n        ax.text(\n            bb.get_x() + 0.4,\n            bb.get_height() + dy * 0.05,\n            f\"{bb.get_height():.1f}{yunit[0]}\",\n            ha=\"center\",\n            fontsize=16,\n            bbox=dict(color=\"white\"),\n        )\n    ax.set_ylim(0, ctx.get(\"ymax\", ax.get_ylim()[1] * 1.1))\n    ax.set_xlabel(f\"Average {(days_per_year):.1f} Days per Year\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p224.py",
    "content": "\"\"\"\n<p>This autoplot attempts to estimate the number of people or area\nin the US\nunder a given NWS Watch/Warning/Advisory (WaWA).  Double-accounting is\nsomewhat a problem here in the case of overlapping polygons. For each\nWaWA type, if there are polygons associated with the event, the\npopulation of the polygon intersection with the 30 arc-second grid is\nused.</p>\n\n<p>While the graphic only displays the top 10, the data download provides\neverything available to be computed.</p>\n\n<p><strong>Footnote on \"Active\" WaWA</strong>: A more complex than it\nshould be nuance to explain here is the concept of what is \"active\" at\na given timestamp.  Let us consider a real world example.  On Monday\nafternoon, the NWS issues a Winter Storm Warning for an upcoming\nstorm that goes \"into effect\" at noon on Tuesday.  You request this\nplot for a timestamp of 6 PM on that Monday.  Is the Winter Storm\nWarning included in this metric at that time?\n<ul>\n<li>Yes, if you select the option to include any WaWA that have been\ncreated, but may have an VTEC start time in the future yet.</li>\n<li>No, if you select the option to only include WaWA that have an\nissuance time before the given timestamp.</li>\n</ul>\n<br />The default setting here is the first option, to include any events\nthat have been created, but not necessarily having an issuance time prior\nto the given timestamp.  This is why we can't have nice things!\n</p>\n\n<p><a href=\"/plotting/auto/?q=247\">Autoplot 247</a> is closely related to\nthis app and provides a map of WaWa + stats.</p>\n\"\"\"\n\nfrom datetime import timezone\nfrom zoneinfo import ZoneInfo\n\nimport pandas as pd\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws.vtec import NWS_COLORS, get_ps_string\nfrom pyiem.plot import figure\nfrom pyiem.util import utc\n\nPDICT = {\n    \"active\": \"Include WaWA that have been created or valid at the given time\",\n    \"within\": \"Include WaWA with VTEC issuance time before the given time\",\n}\nPDICT2 = {\n    \"pop\": \"Population\",\n    \"area\": \"Area\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 120}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            options=PDICT2,\n            name=\"which\",\n            default=\"pop\",\n            label=\"Aggregate Population or Area\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"valid\",\n            default=utc().strftime(\"%Y/%m/%d %H%M\"),\n            min=\"2005/10/01 0000\",\n            label=\"At Valid Timestamp:\",\n            optional=True,\n        ),\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"active\",\n            options=PDICT,\n            label=\"How to consider if an event is active [see footnote]\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    if \"valid\" not in ctx:\n        ctx[\"valid\"] = utc()\n    valid = ctx[\"valid\"].replace(tzinfo=timezone.utc)\n\n    isscol = \"issue\" if ctx[\"opt\"] == \"within\" else \"product_issue\"\n    popyear = min(int(valid.year - (valid.year % 5)), 2020)\n    col = \"final_pop\" if ctx[\"which\"] == \"pop\" else \"final_area_sqkm\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            with sbwpop as (\n                select phenomena ||'.'|| significance as key,\n                sum(population) as pop\n                from sbw w, {table} p\n                WHERE ST_Contains(w.geom, p.geom) and\n                polygon_begin <= :valid and polygon_end >= :valid\n                GROUP by key ORDER by pop DESC\n            ), sbwevents as (\n                select phenomena ||'.'|| significance as key,\n                count(*),\n                sum(st_area(w.geom::geography) / 1e6) as area from sbw w\n                WHERE polygon_begin <= :valid and polygon_end >= :valid\n                GROUP by key\n            ), sbwagg as (\n                select e.key, coalesce(p.pop, 0) as pop,\n                e.count as events, e.area\n                from sbwevents e LEFT JOIN sbwpop p on (e.key = p.key)\n            ), cbwpop as (\n                select phenomena ||'.'|| significance as key,\n                array_agg(distinct substr(w.ugc, 1, 2)) as states,\n                sum(area2163) as area,\n                sum({popcol}) as pop, count(*) as events\n                from warnings w JOIN ugcs u on (w.gid = u.gid)\n                WHERE {isscol} <= :valid and expire >= :valid\n                GROUP by key ORDER by pop DESC\n            )\n            select c.key, c.pop as zone_pop, s.pop as poly_pop, c.states,\n            c.area as zone_area_sqkm, s.area as poly_area_sqkm,\n            c.events as zone_events, coalesce(s.events, 0) as poly_events,\n            (case when s.pop is not null then s.pop else c.pop end)\n                as final_pop,\n            (case when s.area is not null then s.area else c.area end)\n                as final_area_sqkm\n            from cbwpop c LEFT JOIN sbwagg s\n            on (c.key = s.key) ORDER by {col} DESC\n                \"\"\",\n                table=f\"gpw{popyear}\",\n                popcol=f\"gpw_population_{popyear}\",\n                isscol=isscol,\n                col=col,\n            ),\n            conn,\n            params={\"valid\": valid},\n            index_col=\"key\",\n        )\n    df = df[df[col].notna()]\n    if df.empty:\n        raise NoDataFound(\"No WaWA data found at the given timestamp!\")\n    df[\"label\"] = df.index.to_series().apply(\n        lambda x: get_ps_string(*x.split(\".\"))\n    )\n    df[\"states\"] = df[\"states\"].apply(\" \".join)\n    dt = valid.astimezone(ZoneInfo(\"America/Chicago\")).strftime(\n        \"%Y-%m-%d %-I:%M %p %Z\"\n    )\n    qualifier = \"Active\" if ctx[\"opt\"] == \"within\" else \"Created/Active\"\n    title = (\n        f\"{PDICT2[ctx['which']]} under {qualifier} \"\n        f\"NWS Watch/Warning/Advisory @ {dt}\"\n    )\n    subtitle = \"Unofficial IEM Warning/Watch/Advisory data\"\n    if ctx[\"which\"] == \"pop\":\n        subtitle = f\"Based on GPW {popyear} Population and {subtitle}\"\n    else:\n        title = title.replace(\" under \", \"[sq km] under \")\n\n    fig = figure(title=title, subtitle=subtitle, apctx=ctx)\n    # add axes without any markups\n    ax = fig.add_axes((0.0, 0.0, 1, 1), frame_on=False)\n    ypos = 0.8\n    xbarstart = 0.26\n    xbarend = 0.85\n    maxval = max(df[col].max(), 1)\n\n    fig.text(xbarend + 0.03, ypos + 0.09, \"Cnty/Zone\\nEvents\", ha=\"center\")\n    fig.text(xbarend + 0.07, ypos + 0.09, \"Polygons\")\n\n    for key, row in df.head(10).iterrows():\n        # A box around the entry\n        rect = Rectangle((0.02, ypos - 0.001), 0.94, 0.08, ec=\"k\", fc=\"w\")\n        ax.add_patch(rect)\n        # Draw a rectange for each of the top 5\n        color = NWS_COLORS.get(str(key), \"#EEEEEE\")\n        # A simple abbrevation to start\n        fig.text(0.03, ypos + 0.01, key, color=color, fontsize=\"xx-large\")\n        # A lablel above the top\n        fig.text(0.03, ypos + 0.05, row[\"label\"], fontsize=\"large\")\n        # The population number with commas\n        fig.text(\n            0.25,\n            ypos + 0.01,\n            f\"{int(row[col]):,}\",\n            fontsize=\"x-large\",\n            ha=\"right\",\n        )\n        # A bar in the color of the event\n        xlen = row[col] / maxval * (xbarend - xbarstart)\n        rect = Rectangle((xbarstart, ypos + 0.01), xlen, 0.03, facecolor=color)\n        ax.add_patch(rect)\n\n        # The states affected\n        fig.text(\n            xbarstart,\n            ypos + 0.05,\n            row[\"states\"],\n        )\n\n        # Add columns for Zones\n        fig.text(\n            xbarend + 0.04,\n            ypos + 0.01,\n            f\"{int(row['zone_events']):,}\",\n            ha=\"right\",\n        )\n        fig.text(\n            xbarend + 0.09,\n            ypos + 0.01,\n            f\"{int(row['poly_events']):,}\",\n            ha=\"right\",\n        )\n\n        ypos -= 0.08\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p225.py",
    "content": "\"\"\"\nDeparture from climatology metrics have an annual signal that\nis a function of the climatology.  This plot shows the distribution of\ndeparture values.</p>\n\n<p><strong>SPI</strong> is the standardized precipitation index. This is\ncomputed by using the NCEI 1991-2020 climatology to provide the average\naccumulation and the observed data to provide the standard deviation.</p>\n\n<p>The <strong>Minimum Possible</strong> value presented is a function\nof the statistical metric being computed.  For example, if the climatology\naccumation is 2 inches, the max negative departure can only be two\ninches.</p>\n\"\"\"\n\nimport calendar\n\nimport pandas as pd\nimport seaborn as sns\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"spi\": \"Standardized Precipitation Index\",\n    \"pdep\": \"Precipitation Departure\",\n}\nPDICT2 = {\n    \"ncei91\": \"NCEI 1991-2020 Climatology\",\n    \"por\": \"Period of Record\",\n}\nXTICKS = [1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335]\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"spi\",\n            options=PDICT,\n            label=\"Select which metric to plot:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"c\",\n            default=\"ncei91\",\n            options=PDICT2,\n            label=\"Which climatology to use for averages:\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"days\",\n            default=90,\n            label=\"Over how many trailing days to compute the metric?\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    varname = ctx[\"var\"]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            WITH climo as (\n                select to_char(valid, 'mmdd') as sday, precip from\n                ncei_climate91 where station = :ncei\n            )\n            select a.day, a.sday, a.precip as ob_precip,\n            c.precip as climo_precip\n            from alldata a, climo c where a.station = :station\n            and a.sday = c.sday and a.precip is not null\n            ORDER by a.day ASC\n        \"\"\"\n            ),\n            conn,\n            params={\n                \"ncei\": ctx[\"_nt\"].sts[station][\"ncei91\"],\n                \"station\": station,\n            },\n            index_col=\"day\",\n        )\n    if df.empty:\n        raise NoDataFound(\"Did not find any observations for station.\")\n    days = ctx[\"days\"]\n    # If POR is selected, use it for the climatology\n    if ctx[\"c\"] == \"por\":\n        climo = (\n            df[[\"ob_precip\", \"sday\"]]\n            .groupby(\"sday\")\n            .mean()\n            .rename(columns={\"ob_precip\": \"climo_precip\"})\n        )\n        df = df.drop(columns=[\"climo_precip\"]).join(climo, on=\"sday\")\n    # Compute the climatology over the trailing days\n    climo = df[[\"ob_precip\", \"climo_precip\"]].rolling(days).sum()\n    df[\"ob_precip_accum\"] = climo[\"ob_precip\"]\n    df[\"climo_precip_accum\"] = climo[\"climo_precip\"]\n    # Compute the std deviation\n    std = (\n        df[[\"ob_precip_accum\", \"sday\"]]\n        .groupby(\"sday\")\n        .std()\n        .rename(columns={\"ob_precip_accum\": \"ob_precip_std\"})\n    )\n    df = df.join(std, on=\"sday\")\n    df[\"pdep\"] = df[\"ob_precip_accum\"] - df[\"climo_precip_accum\"]\n    df[\"spi\"] = df[\"pdep\"] / df[\"ob_precip_std\"]\n    # Create a day of the year int value\n    df[\"doy\"] = df.index.map(lambda x: x.timetuple().tm_yday)\n\n    title = (\n        f\"{ctx['_sname']}:: {days} Day {PDICT[varname]}\\n\"\n        \"Heatmap of values by day of year\\n\"\n        f\"Climatology: {PDICT2[ctx['c']]}\"\n    )\n\n    # Create the seaborn jointplot\n    g = sns.JointGrid(data=df, x=\"doy\", y=varname, height=6)\n    figure(fig=g.figure, apctx=ctx, title=title)\n    # Create an inset legend for the histogram colorbar\n    cax = g.figure.add_axes((0.8, 0.65, 0.02, 0.2))\n\n    # Add the joint and marginal histogram plots\n    g.plot_joint(\n        sns.histplot,\n        discrete=(True, False),\n        cmap=\"light:#03012d\",\n        pmax=0.8,\n        cbar=True,\n        cbar_ax=cax,\n    )\n    g.ax_joint.set_xticks(XTICKS)\n    g.ax_joint.set_xticklabels(calendar.month_abbr[1:])\n    g.ax_joint.set_xlim(0, 390)\n    g.ax_joint.axhline(0, color=\"k\")\n    g.ax_joint.set_ylabel(PDICT[varname])\n    g.ax_joint.set_xlabel(\"Day of Year\")\n    if varname == \"spi\":\n        colors = [\"#ffff00\", \"#fcd37f\", \"#ffaa00\", \"#e60000\", \"#730000\"]\n        for i, spi in enumerate([-0.5, -0.8, -1.3, -1.6, -2]):\n            g.ax_joint.axhline(spi, color=colors[i], lw=2, zorder=4)\n            g.ax_joint.annotate(\n                f\"D{i}\",\n                (0.97, spi),\n                xycoords=(\"axes fraction\", \"data\"),\n                va=\"center\",\n                zorder=5,\n                color=\"k\" if i < 3 else \"white\",\n                bbox=dict(color=colors[i]),\n            )\n    # Plot a max min line\n    ydf = 0 - df[[\"sday\", \"climo_precip_accum\"]].groupby(\"sday\").min()\n    if varname == \"spi\":\n        ydf[\"min\"] = ydf[\"climo_precip_accum\"] / std[\"ob_precip_std\"]\n    else:\n        ydf[\"min\"] = ydf[\"climo_precip_accum\"]\n    g.ax_joint.plot(\n        range(366), ydf[\"min\"], color=\"r\", lw=2, label=\"Minimum Possible\"\n    )\n    g.ax_joint.legend(loc=(0.5, 1.05))\n\n    g.plot_marginals(sns.histplot, element=\"step\", color=\"#03012d\")\n    g.ax_marg_x.remove()\n    return g.figure, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p226.py",
    "content": "\"\"\"\nThis plot is not meant for interactive use, but a backend for\nCWA plots.\n\"\"\"\n\nfrom datetime import timedelta, timezone\n\nimport geopandas as gpd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot.geoplot import MapPlot\nfrom pyiem.reference import Z_OVERLAY2\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 3600, \"data\": True}\n    desc[\"defaults\"] = {\"_r\": \"t\"}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"networkselect\",\n            network=\"CWSU\",\n            default=\"ZMA\",\n            name=\"cwsu\",\n            label=\"Select CWSU:\",\n        ),\n        dict(\n            type=\"int\",\n            default=207,\n            name=\"num\",\n            label=\"CWA Number:\",\n        ),\n        dict(\n            type=\"datetime\",\n            default=\"2023/02/03 1653\",\n            name=\"issue\",\n            label=(\n                \"UTC Timestamp of the CWA Issuance \"\n                \"(or will search backwards < 1 day):\"\n            ),\n            min=\"2015/12/31 0000\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    num = ctx[\"num\"]\n\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = gpd.read_postgis(\n            sql_helper(\"\"\"\n    select geom, expire at time zone 'UTC' as expire,\n    issue at time zone 'UTC' as issue, narrative from cwas\n    where center = :center and num = :num and\n    issue > :sts and issue <= :ets ORDER by issue DESC LIMIT 1\"\"\"),\n            conn,\n            params={\n                \"center\": ctx[\"cwsu\"],\n                \"num\": num,\n                \"sts\": ctx[\"issue\"] - timedelta(hours=24),\n                \"ets\": ctx[\"issue\"],\n            },\n            index_col=None,\n            geom_col=\"geom\",\n        )  # type: ignore\n    if df.empty:\n        raise NoDataFound(\"CWA Event was not found, sorry.\")\n    for col in [\"issue\", \"expire\"]:\n        df[col] = df[col].dt.tz_localize(timezone.utc)\n    bounds = df[\"geom\"].total_bounds\n    row = df.iloc[0]\n    mp = MapPlot(\n        apctx=ctx,\n        title=(\n            f\"{ctx['cwsu']} Center Weather Advisory (CWA) #{ctx['num']} \"\n            f\"till {row['expire']:%Y-%m-%d %H:%M} UTC\"\n        ),\n        subtitle=row[\"narrative\"],\n        sector=\"spherical_mercator\",\n        west=bounds[0] - 1.2,\n        south=bounds[1] - 1.2,\n        east=bounds[2] + 1.2,\n        north=bounds[3] + 1.2,\n        nocaption=True,\n    )\n    df.to_crs(mp.panels[0].crs).plot(\n        ax=mp.panels[0].ax,\n        aspect=None,\n        facecolor=\"None\",\n        edgecolor=\"k\",\n        linewidth=4,\n        zorder=Z_OVERLAY2,\n    )\n    mp.drawcounties()\n    radtime = mp.overlay_nexrad(\n        df[\"issue\"].iloc[0].to_pydatetime(),\n        product=\"N0Q\",\n        caxpos=[-0.6, 0.05, 0.35, 0.04],  # TODO make this appear nicer\n    )\n    if radtime is not None:\n        mp.fig.text(\n            0.65,\n            0.02,\n            f\"RADAR Valid: {radtime:%Y-%m-%d %H:%M} UTC\",\n            ha=\"center\",\n        )\n\n    return mp.fig, df.drop([\"geom\", \"issue\", \"expire\"], axis=1)\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p227.py",
    "content": "\"\"\"\nThis plot is not meant for interactive use, but a backend for\nNWEM plots.\n\"\"\"\n\nfrom zoneinfo import ZoneInfo\n\nimport geopandas as gpd\nimport requests\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot.geoplot import MapPlot\nfrom pyiem.reference import LATLON, Z_OVERLAY2, prodDefinitions\nfrom pyiem.util import LOG\n\nTFORMAT = \"%b %-d %Y %-I:%M %p %Z\"\nWFOCONV = {\"JSJ\": \"SJU\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 3600, \"data\": True}\n    desc[\"defaults\"] = {\"_r\": \"t\"}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"text\",\n            name=\"pid\",\n            default=\"202302031255-KLWX-FZUS71-MWSLWX-RRA\",\n            label=\"IEM generated up to 35 char product identifier:\",\n        ),\n        dict(\n            type=\"int\",\n            default=0,\n            name=\"segnum\",\n            label=\"Product Segment Number (starts at 0):\",\n        ),\n    ]\n    return desc\n\n\ndef get_text(product_id: str) -> str:\n    \"\"\"get the raw text.\"\"\"\n    res = \"Text Unavailable, Sorry.\"\n    uri = f\"https://mesonet.agron.iastate.edu/api/1/nwstext/{product_id}\"\n    try:\n        resp = requests.get(uri, timeout=5)\n        resp.raise_for_status()\n        res = resp.content.decode(\"ascii\", \"ignore\").replace(\"\\001\", \"\")\n        res = \"\\n\".join(res.replace(\"\\r\", \"\").split(\"\\n\")[5:])\n    except Exception as exp:\n        LOG.info(exp)\n\n    return res\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    pid = ctx[\"pid\"][:35]\n    segnum = ctx[\"segnum\"]\n    nt = NetworkTable(\"WFO\")\n\n    # Compute a population estimate\n    popyear = min(max([int(pid[:4]) - int(pid[:4]) % 5, 2000]), 2020)\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = gpd.read_postgis(\n            sql_helper(\n                \"\"\"\n                with geopop as (\n                    select sum(population) as pop from text_products s,\n                    {table} g WHERE s.product_id = :pid and\n                    ST_Contains(s.geom, g.geom)\n                )\n                SELECT geom, issue, expire,\n                coalesce(pop, 0) as pop\n                from text_products, geopop where product_id = :pid\n                \"\"\",\n                table=f\"gpw{popyear}\",\n            ),\n            conn,\n            params={\"pid\": pid, \"segnum\": segnum},\n            index_col=None,\n            geom_col=\"geom\",\n        )  # type: ignore\n    if df.empty:\n        raise NoDataFound(\"NWEM Event was not found, sorry.\")\n    row = df.iloc[0]\n    wfo = pid.split(\"-\")[1][1:]\n    tzname = nt.sts.get(wfo, {}).get(\"tzname\")\n    if tzname is None:\n        tzname = nt.sts.get(f\"P{wfo}\", {}).get(\"tzname\")\n        if tzname is None:\n            tzname = \"UTC\"\n    tz = ZoneInfo(tzname)\n    expire = df[\"expire\"].dt.tz_convert(tz)[0]\n\n    bounds = row[\"geom\"].bounds\n    population = row[\"pop\"]\n    stextra = \" for Polygon\" if not row[\"geom\"].is_empty else \"\"\n    pil = pid.split(\"-\")[3][:3]\n    label = prodDefinitions.get(pil, \"\")\n    mp = MapPlot(\n        apctx=ctx,\n        title=(f\"{wfo} {label} ({pil}) till {expire.strftime(TFORMAT)}\"),\n        subtitle=(f\"Estimated {popyear} Population{stextra}: {population:,}\"),\n        sector=\"spherical_mercator\",\n        west=bounds[0] - 0.02,\n        south=bounds[1] - 0.3,\n        east=bounds[2] + (bounds[2] - bounds[0]) + 0.02,\n        north=bounds[3] + 0.3,\n        nocaption=True,\n    )\n\n    # Plot text on the page, hehe\n    reports = get_text(pid).split(\"$$\")\n    if len(reports) <= segnum:\n        raise NoDataFound(\"Segment number was not found with report.\")\n    report = (\n        reports[segnum]\n        .replace(\"\\r\", \"\")\n        .replace(\"\\003\", \"\")\n        .replace(\"\\001\", \"\")\n        .replace(\"$$\", \"  \")\n    )\n    pos = report.find(\"...\")\n    if pos == -1:\n        pos = 0\n    report = report[pos : report.find(\"LAT...LON\")]\n    mp.fig.text(\n        0.5,\n        0.85,\n        report.strip(),\n        bbox=dict(fc=\"white\", ec=\"k\"),\n        va=\"top\",\n    )\n\n    if not row[\"geom\"].is_empty:\n        mp.panels[0].add_geometries(\n            [row[\"geom\"]],\n            LATLON,\n            facecolor=\"None\",\n            edgecolor=\"k\",\n            linewidth=4,\n            zorder=Z_OVERLAY2,\n        )\n\n    mp.drawcounties()\n    return mp.fig, df.drop(\"geom\", axis=1)\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p228.py",
    "content": "\"\"\"\nThis visualization mashes up the US Drought Monitor and three trailing\nday standardized precipitation index of your choice within a map\npresentation for a single state.  SPI is computed by the simple formula\nof <code>(accum - climatology) / standard deviation</code>.</p>\n\n<p>This autoplot is extremely slow to generate due to the on-the-fly\ncalculation of standard deviation. As such, an optimization is done to\nsub-sample from available stations since the resulting map can only display\na certain number of data points legibly. This means that the dataset you\ndownload from this page does not contain all available stations for a given\nstate :/\n\"\"\"\n\nimport sys\nfrom datetime import date, timedelta\n\nimport geopandas as gpd\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot import MapPlot\nfrom pyiem.reference import Z_OVERLAY2, state_bounds\nfrom tqdm import tqdm\n\nPDICT = {\n    \"normal\": \"Normal Mode / Plot by State\",\n    \"iadrought\": \"Special Iowa Drought Monitoring\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    dt = date.today() - timedelta(days=1)\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"select\",\n            \"name\": \"mode\",\n            \"default\": \"normal\",\n            \"label\": \"Application Mode:\",\n            \"options\": PDICT,\n        },\n        dict(\n            type=\"state\",\n            name=\"state\",\n            default=\"IA\",\n            label=\"Select State:\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"date\",\n            default=dt.strftime(\"%Y/%m/%d\"),\n            label=\"Retroactive Date of Plot\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"d1\",\n            default=30,\n            label=\"Over how many trailing days to compute the metric?\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"d2\",\n            default=60,\n            label=\"Over how many trailing days to compute the metric?\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"d3\",\n            default=90,\n            label=\"Over how many trailing days to compute the metric?\",\n        ),\n    ]\n    return desc\n\n\ndef overlay_drought_regions(mp):\n    \"\"\"Add an overlay.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        gdf = gpd.read_postgis(\n            \"\"\"\n            SELECT id, c.geom from climodat_regions c JOIN stations t on\n            (c.iemid = t.iemid) WHERE t.network = 'IACLIMATE' and\n            substr(id, 3, 1) = 'D'\n            \"\"\",\n            conn,\n            index_col=\"id\",\n            geom_col=\"geom\",\n        )\n    if gdf.empty:\n        return\n    gdf.to_crs(mp.panels[0].crs).plot(\n        ax=mp.panels[0].ax,\n        aspect=None,\n        lw=3,\n        ec=\"k\",\n        fc=\"None\",\n        zorder=Z_OVERLAY2,\n    )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    state = ctx[\"state\"]\n    d1 = ctx[\"d1\"]\n    d2 = ctx[\"d2\"]\n    d3 = ctx[\"d3\"]\n    dt = ctx[\"date\"]\n    params = {\n        \"d1\": d1 - 1,\n        \"d2\": d2 - 1,\n        \"d3\": d3 - 1,\n        \"date\": dt,\n        \"sday\": dt.strftime(\"%m%d\"),\n        \"network\": f\"{state}CLIMATE\",\n    }\n    dfs = []\n    nt = NetworkTable(f\"{state}CLIMATE\")\n    [xmin, ymin, xmax, ymax] = state_bounds[state]\n    GZ = 0.5\n    hits = np.zeros((int((ymax - ymin) / GZ) + 1, int((xmax - xmin) / GZ) + 1))\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        # A single shot query was taking moons to complete, so a brute force\n        # looper seems to be net faster.  We can also cull what gets\n        # processed\n        progress = tqdm(nt.sts.items(), disable=not sys.stdout.isatty())\n        for station, meta in progress:\n            if not meta[\"online\"]:\n                continue\n            if ctx[\"mode\"] == \"iadrought\":\n                if station[2] != \"D\":\n                    continue\n            else:\n                if station[2] in [\"C\", \"D\"] or station[2:] == \"0000\":\n                    continue\n            yidx = int((meta[\"lat\"] - ymin) / GZ)\n            xidx = int((meta[\"lon\"] - xmin) / GZ)\n            hits[yidx, xidx] += 1\n            if hits[yidx, xidx] > 1:\n                continue\n            progress.set_description(station)\n            params[\"station\"] = station\n            params[\"lat\"] = meta[\"lat\"]\n            params[\"lon\"] = meta[\"lon\"]\n            df = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n                WITH data as (\n                    SELECT sday, day,\n                    sum(precip) OVER (PARTITION by station ORDER by day ASC\n                    ROWS BETWEEN :d1 PRECEDING AND CURRENT ROW) as p1,\n                    sum(precip) OVER (PARTITION by station ORDER by day ASC\n                    ROWS BETWEEN :d2 PRECEDING AND CURRENT ROW) as p2,\n                    sum(precip) OVER (PARTITION by station ORDER by day ASC\n                    ROWS BETWEEN :d3 PRECEDING AND CURRENT ROW) as p3\n                    from alldata WHERE day <= :date and station = :station\n                ), stats as (\n                    SELECT avg(p1) as avg_p1, stddev(p1) as stddev_p1,\n                    avg(p2) as avg_p2, stddev(p2) as stddev_p2,\n                    avg(p3) as avg_p3, stddev(p3) as stddev_p3,\n                    count(*)\n                    from data WHERE sday = :sday\n                )\n                select s.avg_p1, s.stddev_p1, s.avg_p2, s.stddev_p2,\n                s.avg_p3, s.stddev_p3, d.p1, d.p2, d.p3,\n                (d.p1 - s.avg_p1) / s.stddev_p1 as z1,\n                (d.p2 - s.avg_p2) / s.stddev_p2 as z2,\n                (d.p3 - s.avg_p3) / s.stddev_p3 as z3, s.count,\n                :station as station, :lat as lat, :lon as lon\n                from data d, stats s WHERE d.day = :date\n            \"\"\"\n                ),\n                conn,\n                params=params,\n            )\n            if not df.empty:\n                dfs.append(df)\n    if not dfs:\n        raise NoDataFound(\"Did not find any data.\")\n    df = pd.concat(dfs)\n    # Lame roundabout for CI testing\n    if len(df.index) > 10:\n        df = df[df[\"count\"] >= 30]\n    if df.empty:\n        raise NoDataFound(\"Did not find any data after filter.\")\n    df = gpd.GeoDataFrame(\n        df, geometry=gpd.points_from_xy(df[\"lon\"], df[\"lat\"], crs=\"EPSG:4326\")\n    )\n    st = \"stations w/ 30+ years of data\"\n    if ctx[\"mode\"] == \"iadrought\":\n        st = \"Iowa Drought Monitoring Regions\"\n    mp = MapPlot(\n        title=\"Trailing Day Standardized Precipitation Index\",\n        subtitle=f\"Ending {dt:%B %-d %Y} computed for {st}\",\n        sector=\"state\",\n        state=state,\n        stateborderwidth=2,\n    )\n    mp.draw_usdm(dt, alpha=1)\n    mp.drawcounties()\n    levels = [-100, -2, -1.6, -1.3, -0.8, -0.5, 0.5, 0.8, 1.3, 1.6, 2, 100]\n    cmap = mpcolors.ListedColormap(\n        \"#730000 #e60000 #ffaa00 #fcd37f #ffff00 #ffffff \"\n        \"#b2ff00 #00b400 #008080 #0000ff #9600ff\".split()\n    )\n    norm = mpcolors.BoundaryNorm(levels, cmap.N)\n    df = df.assign(\n        color1=list(cmap(norm(df.z1))),\n        color2=list(cmap(norm(df.z2))),\n        color3=list(cmap(norm(df.z3))),\n    )\n    # Get the extent of the map\n    (x0, x1, y0, y1) = mp.panels[0].get_extent()\n    # Compute an offset\n    xoff = (x1 - x0) * 0.0075\n    yoff = (y1 - y0) * 0.0125\n    markersize = 60\n    if ctx[\"mode\"] == \"iadrought\":\n        markersize = 180\n        xoff *= 2\n        yoff *= 2\n    df.to_crs(mp.panels[0].crs).plot(\n        facecolor=df[\"color1\"],\n        edgecolor=\"#ffffff\",\n        aspect=None,\n        ax=mp.panels[0].ax,\n        zorder=Z_OVERLAY2 + 3,\n        markersize=markersize,\n    )\n    df.to_crs(mp.panels[0].crs).assign(\n        geometry=lambda x: x.geometry.translate(xoff, -yoff)\n    ).plot(\n        facecolor=df[\"color2\"],\n        edgecolor=\"#ffffff\",\n        aspect=None,\n        ax=mp.panels[0].ax,\n        zorder=Z_OVERLAY2 + 3,\n        markersize=markersize,\n    )\n    df.to_crs(mp.panels[0].crs).assign(\n        geometry=lambda x: x.geometry.translate(-xoff, -yoff)\n    ).plot(\n        facecolor=df[\"color3\"],\n        edgecolor=\"#ffffff\",\n        aspect=None,\n        ax=mp.panels[0].ax,\n        zorder=Z_OVERLAY2 + 3,\n        markersize=markersize,\n    )\n    if ctx[\"mode\"] == \"iadrought\":\n        overlay_drought_regions(mp)\n\n    # Add the legend\n    mp.fig.text(0.85, 0.95, \"Trailing Days\\nDot Legend\", ha=\"right\")\n    boxs = {\"boxstyle\": \"circle\", \"edgecolor\": \"k\", \"facecolor\": \"w\"}\n    mp.fig.text(0.88, 0.97, f\"{d1:3.0f}\", bbox=boxs)\n    mp.fig.text(0.90, 0.93, f\"{d2:3.0f}\", bbox=boxs)\n    mp.fig.text(0.86, 0.93, f\"{d3:3.0f}\", bbox=boxs)\n\n    clevlabels = [\"\", \"D4\", \"D3\", \"D2\", \"D1\", \"D0\"]\n    clevlabels.extend([\"W0\", \"W1\", \"W2\", \"W3\", \"W4\", \"\"])\n    mp.draw_colorbar(\n        levels,\n        cmap,\n        norm,\n        extend=\"neither\",\n        clevlabels=clevlabels,\n    )\n\n    return mp.fig, df.drop(columns=[\"geometry\"])\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p229.py",
    "content": "\"\"\"\nThis data is courtesy of <a href=\"{LL}\">Vaisala NLDN</a>.  The IEM\nprocesses a data stream by NLDN to construct this heatmap. The stroke\ndensity is computed over a two by two kilometer grid constructed using\na US National Atlas Albers (EPSG:9311) projection.  You are limited to plot\nless than 32 days worth of data at a time.</p>\n\n<p><strong>Note:</strong> Due to some lame reasons, it is difficult to\ndocument what data gaps exist within this dataset.  In general, the\ncoverage should be good outside of the major gap on 10 August 2020 due\nto the derecho power outage.</p>\n\"\"\"\n\nfrom datetime import timedelta, timezone\n\nimport geopandas as gpd\nimport matplotlib.colors as mpcolors\nimport numpy as np\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot, get_cmap, pretty_bins\nfrom pyiem.reference import EPSG, Z_CLIP2, state_bounds\nfrom pyiem.util import utc\n\nLL = (\n    \"https://www.vaisala.com/en/products/\"\n    \"national-lightning-detection-network-nldn\"\n)\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    t24 = utc() - timedelta(hours=24)\n    return {\n        \"data\": False,\n        \"description\": __doc__.replace(\"{LL}\", LL),\n        \"gallery\": {\n            \"sts\": \"2024-05-21 1600\",\n            \"ets\": \"2024-05-21 2300\",\n        },\n        \"arguments\": [\n            dict(\n                type=\"state\",\n                name=\"state\",\n                default=\"IA\",\n                label=\"Select CONUS-Only State:\",\n            ),\n            dict(\n                type=\"datetime\",\n                default=f\"{t24:%Y/%m/%d %H%M}\",\n                name=\"sts\",\n                label=\"Start Timestamp (UTC):\",\n                min=\"2016/10/12 0000\",\n            ),\n            dict(\n                type=\"datetime\",\n                default=f\"{utc():%Y/%m/%d %H%M}\",\n                name=\"ets\",\n                label=\"End Timestamp (UTC):\",\n                min=\"2016/10/12 0000\",\n            ),\n            dict(\n                type=\"cmap\",\n                name=\"cmap\",\n                default=\"inferno\",\n                label=\"Color Ramp:\",\n            ),\n        ],\n    }\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    state = ctx[\"state\"]\n    sts = ctx[\"sts\"].replace(tzinfo=timezone.utc)\n    ets = ctx[\"ets\"].replace(tzinfo=timezone.utc)\n    if (ets - sts).total_seconds() >= (32 * 86400):\n        raise NoDataFound(\"Must pick period less than 32 days long\")\n\n    bnds = state_bounds[state]\n    with get_sqlalchemy_conn(\"nldn\") as conn:\n        giswkt = f\"LINESTRING({bnds[0]} {bnds[1]}, {bnds[2]} {bnds[3]})\"\n        df = gpd.read_postgis(\n            sql_helper(\"\"\"\n            SELECT ST_Transform(geom, 9311) as geo\n            from nldn_all WHERE valid >= :sts and valid < :ets and\n            ST_Contains(\n                ST_SetSRID(ST_Envelope(:giswkt ::geometry),\n                4326), geom)\n            \"\"\"),\n            conn,\n            params={\"sts\": sts, \"ets\": ets, \"giswkt\": giswkt},\n            geom_col=\"geo\",\n        )  # type: ignore\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        statedf = gpd.read_postgis(\n            \"SELECT st_transform(the_geom, 9311) as geo from states \"\n            \"WHERE state_abbr = %s\",\n            conn,\n            params=(state,),\n            geom_col=\"geo\",\n        )\n    if not df.empty:\n        df = gpd.sjoin(df, statedf, predicate=\"within\")\n    [xmin, ymin, xmax, ymax] = statedf.total_bounds\n    buffer = 30_000\n    title = (\n        f\"{sts:%-d %b %Y %H%M}Z - {ets:%-d %b %Y %H%M}Z :: \"\n        f\"{len(df.index):,.0f} Lightning Strokes\"\n    )\n    mp = MapPlot(\n        state=state,\n        title=title,\n        subtitle=(\n            \"Data courtesy of National Lightning Detection Network by Vaisala,\"\n            \" processed by IEM\"\n        ),\n        west=xmin - buffer,\n        east=xmax + buffer,\n        south=ymin - buffer,\n        north=ymax + buffer,\n        projection=EPSG[2163],\n        continentalcolor=\"white\",\n    )\n    if not df.empty:\n        xaxis = np.arange(xmin, xmax, 2000.0)\n        yaxis = np.arange(ymin, ymax, 2000.0)\n        H, xedges, yedges = np.histogram2d(\n            df[\"geo\"].x,\n            df[\"geo\"].y,\n            bins=(xaxis, yaxis),\n        )\n        H = H.transpose()\n        bins = pretty_bins(0, np.max(H))\n        if bins[1] > 1:\n            bins[0] = 1\n        cmap = get_cmap(ctx[\"cmap\"])\n        cmap.set_under(\"white\")\n        norm = mpcolors.BoundaryNorm(bins, cmap.N)\n        xx, yy = np.meshgrid(xedges, yedges)\n        mp.panels[0].pcolormesh(\n            xx,\n            yy,\n            np.where(H > 0, H, np.nan),\n            norm=norm,\n            cmap=cmap,\n            zorder=Z_CLIP2,\n            crs=EPSG[2163],\n        )\n        mp.draw_colorbar(bins, cmap, norm, title=\"strokes per 2x2 km cell\")\n    else:\n        mp.fig.text(0.5, 0.5, \"No Strokes Found in Domain.\", ha=\"center\")\n    mp.draw_mask(\"state\")\n    mp.drawcounties()\n\n    return mp.fig, None\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p230.py",
    "content": "\"\"\"\nThis application presents an infographic showing the most recent\ndate of a given SPC outlook threshold as per IEM unofficial archives.\n\n<p>\nThis autoplot attempts to be cute and remove thresholds that are likely no\nlonger issued by SPC.  These thresholds are denoted in the plot subtitle, but\nare included in the raw data download for you to make your own life choices\nwith.\n</p>\n\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.reference import state_names\n\nfrom iemweb.autoplot import ARG_FEMA\nfrom iemweb.util import month2months\n\nMDICT = {\n    \"all\": \"Entire Year\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"octmar\": \"October thru March\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\n\nPDICT = {\n    \"C\": \"Convective Categorical\",\n    \"H\": \"Convective Hail Prob\",\n    \"T\": \"Convective Tornado Prob\",\n    \"W\": \"Convective Wind Prob\",\n    \"E\": \"Excessive Rainfall\",\n    \"F\": \"Fire Weather\",\n}\nPDICT2 = {\n    \"all\": \"Summarize for CONUS\",\n    \"ugc\": \"Summarize by Selected County/Zone/Parish\",\n    \"state\": \"Summarize by Selected State\",\n    \"wfo\": \"Summarize by Selected WFO\",\n    \"fema\": \"Summarize by FEMA Region\",\n}\nCOLORS = {\n    \"TSTM\": \"#c0e8c0\",\n    \"MRGL\": \"#66c57d\",\n    \"SLGT\": \"#f6f67b\",\n    \"ENH\": \"#edbf7c\",\n    \"MDT\": \"#f67a7d\",\n    \"HIGH\": \"#ff78ff\",\n    \"ELEV\": \"#ffbb7c\",\n    \"CRIT\": \"#ff787d\",\n    \"EXTM\": \"#ff78ff\",\n    \"0.30\": \"#f67a7d\",\n    \"0.15\": \"#edbf7c\",\n}\nDAYS = {\n    \"1\": \"Day 1\",\n    \"2\": \"Day 2\",\n    \"3\": \"Day 3\",\n    \"4\": \"Day 4\",\n    \"5\": \"Day 5\",\n    \"6\": \"Day 6\",\n    \"7\": \"Day 7\",\n    \"8\": \"Day 8\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"outlook_type\",\n            options=PDICT,\n            default=\"C\",\n            label=\"Select Outlook Type\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"day\",\n            options=DAYS,\n            default=\"1\",\n            label=\"Select Day Outlook\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"w\",\n            options=PDICT2,\n            default=\"wfo\",\n            label=\"How to summarize data:\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"wfo\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO (when appropriate):\",\n        ),\n        dict(\n            type=\"state\",\n            name=\"mystate\",\n            default=\"IA\",\n            label=\"Select State (when appropriate):\",\n        ),\n        ARG_FEMA,\n        dict(\n            type=\"ugc\",\n            name=\"ugc\",\n            default=\"IAZ048\",\n            label=\"Select UGC Zone/County (when appropriate):\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month(s) Limiter\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"date\",\n            name=\"date\",\n            label=\"Set retroactive date (exclude events on or after date):\",\n            optional=True,\n            default=f\"{date.today():%Y/%m/%d}\",\n        ),\n    ]\n    return desc\n\n\ndef clean_legacy(df: pd.DataFrame) -> pd.DataFrame:\n    \"\"\"Try to get cute with what should be removed from the dataframe.\"\"\"\n    # 1. Remove SIGN if CIG1 is present as a threshold.\n    if \"CIG1\" in df.index and \"SIGN\" in df.index:\n        df.at[\"SIGN\", \"plotted\"] = False\n    # 2. Detect thresholds that are likely discontinued by denoting\n    # non-monotonic day values\n    if \"days\" in df.columns:\n        lastday = None\n        for thres, row in df.iterrows():\n            if thres in [\"CIG1\", \"CIG2\", \"CIG3\", \"SIGN\"]:\n                continue\n            if lastday is not None and row[\"days\"] > lastday:\n                df.at[thres, \"plotted\"] = False\n            else:\n                lastday = row[\"days\"]\n    return df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    wfo = ctx[\"wfo\"]\n    outlook_type = ctx[\"outlook_type\"]\n    day = int(ctx[\"day\"])\n    ugc = ctx[\"ugc\"]\n\n    params = {\n        \"day\": day,\n        \"outlook_type\": outlook_type if outlook_type in [\"F\", \"E\"] else \"C\",\n    }\n    date_limiter = \"\"\n    if ctx.get(\"date\") is not None:\n        date_limiter = \" and outlook_date < :date \"\n        params[\"date\"] = ctx[\"date\"]\n    month = ctx[\"month\"]\n    months = month2months(month)\n    if month != \"all\":\n        date_limiter = (\n            f\" and extract(month from issue) = ANY(:months) {date_limiter}\"\n        )\n    params[\"months\"] = list(months)\n    title3 = \"\" if month == \"all\" else f\" [{MDICT[month]}]\"\n\n    sqllimiter = \"\"\n    category = \"CATEGORICAL\"\n    if day >= 4 and outlook_type == \"C\":\n        category = \"ANY SEVERE\"\n    elif day >= 3 and outlook_type == \"F\":\n        category = \"CRITICAL FIRE WEATHER AREA\"\n    elif outlook_type == \"F\":\n        category = \"FIRE WEATHER CATEGORICAL\"\n    elif outlook_type == \"H\":\n        category = \"HAIL\"\n    elif outlook_type == \"T\":\n        category = \"TORNADO\"\n    elif outlook_type == \"W\":\n        category = \"WIND\"\n    params[\"category\"] = category\n    if ctx[\"w\"] == \"all\":\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            df = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n                with data as (\n                select max(expire at time zone 'UTC') as max_expire,\n                threshold from spc_outlooks\n                WHERE category = :category and day = :day and\n                outlook_type = :outlook_type and\n                threshold not in ('IDRT', 'SDRT') {date_limiter}\n                GROUP by threshold\n                )\n                select d.* from data d JOIN spc_outlook_thresholds t\n                on (d.threshold = t.threshold) ORDER by t.priority desc\n            \"\"\",\n                    date_limiter=date_limiter,\n                ),\n                conn,\n                params=params,\n                index_col=\"threshold\",\n            )\n        title2 = \"Contiguous US\"\n    else:\n        if ctx[\"w\"] == \"wfo\":\n            table = \"cwa\"\n            abbrcol = \"wfo\"\n            geoval = wfo\n            geomcol = \"the_geom\"\n            if wfo not in ctx[\"_nt\"].sts:\n                raise NoDataFound(\"Unknown station metadata.\")\n            title2 = f\"NWS {ctx['_nt'].sts[wfo]['name']} [{wfo}]\"\n        elif ctx[\"w\"] == \"fema\":\n            table = \"fema_regions\"\n            abbrcol = \"region\"\n            geomcol = \"geom\"\n            geoval = ctx[\"fema\"]\n            title2 = f\"FEMA Region {geoval}\"\n        elif ctx[\"w\"] == \"ugc\":\n            table = \"ugcs\"\n            abbrcol = \"ugc\"\n            geomcol = \"simple_geom\"\n            geoval = ugc\n            sqllimiter = \" and t.end_ts is null \"\n            cursor = get_dbconn(\"postgis\").cursor()\n            cursor.execute(\n                \"SELECT name from ugcs where ugc = %s and end_ts is null \"\n                \"LIMIT 1\",\n                (ugc,),\n            )\n            name = \"Unknown\"\n            if cursor.rowcount == 1:\n                name = cursor.fetchone()[0]\n            title2 = f\"{'County' if ugc[2] == 'C' else 'Zone'} [{ugc}] {name}\"\n        else:\n            table = \"states\"\n            geomcol = \"the_geom\"\n            abbrcol = \"state_abbr\"\n            geoval = ctx[\"mystate\"]\n            title2 = state_names[ctx[\"mystate\"]]\n\n        params[\"geoval\"] = geoval\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            df = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n                    WITH data as (\n                select max(expire at time zone 'UTC') as max_expire,\n                threshold from\n                spc_outlooks o, {table} t\n                WHERE t.{abbrcol} = :geoval and category = :category\n                and ST_Intersects(st_buffer(o.geom, 0), t.{geomcol})\n                and o.day = :day and o.outlook_type = :outlook_type\n                {sqllimiter} {date_limiter} GROUP by threshold\n                )\n                select d.* from data d JOIN spc_outlook_thresholds t\n                on (d.threshold = t.threshold) ORDER by t.priority desc\n            \"\"\",\n                    table=table,\n                    abbrcol=abbrcol,\n                    geomcol=geomcol,\n                    sqllimiter=sqllimiter,\n                    date_limiter=date_limiter,\n                ),\n                conn,\n                params=params,\n                index_col=\"threshold\",\n            )\n    conn.close()\n    if df.empty:\n        raise NoDataFound(\"No Results For Query.\")\n    # Rectify the convective end time back to the previous day\n    df[\"date\"] = pd.to_datetime(\n        df[\"max_expire\"].dt.date - pd.Timedelta(days=1)\n    )\n    df[\"days\"] = (pd.Timestamp(date.today()) - df[\"date\"]).dt.days\n    df[\"plotted\"] = True\n    df = clean_legacy(df)\n    _ll = \"\"\n    if ctx.get(\"date\") is not None:\n        _ll = f\"Prior to {ctx['date']:%-d %b %Y}, \"\n    title = (\n        f\"{_ll}Most Recent {'WPC' if outlook_type == 'E' else 'SPC'} Day \"\n        f\"{day} {PDICT[outlook_type]} Outlook{title3} for {title2}\"\n    )\n    not_plotted = \"\"\n    if not df[\"plotted\"].all():\n        not_plotted = \"Thresholds excluded from plot: \" + \", \".join(\n            df.index[~df[\"plotted\"]]\n        )\n    fig = figure(\n        apctx=ctx,\n        title=title,\n        subtitle=f\"Based on Unofficial IEM Archives. {not_plotted}\",\n    )\n    ax = fig.add_axes([0.0, 0.0, 1, 1], frame_on=False)\n\n    ypos = 0.78\n    boxheight = 0.12\n    rowcount = len(df.index)\n    if rowcount > 6:\n        boxheight = 0.08\n    dmax = max(df.loc[df[\"plotted\"]][\"days\"].max(), 1)\n    for thres, row in df[df[\"plotted\"]].iterrows():\n        if outlook_type in [\"C\", \"F\", \"E\"]:\n            if thres not in COLORS:\n                continue\n            color = COLORS[thres]\n        else:\n            color = \"tan\"\n        # Outline\n        rect = Rectangle(\n            (0.02, ypos), 0.94, boxheight - 0.02, ec=\"k\", fc=\"white\"\n        )\n        ax.add_patch(rect)\n        # Box for Label\n        rect = Rectangle(\n            (0.03, ypos + 0.01), 0.2, boxheight - 0.04, color=color\n        )\n        ax.add_patch(rect)\n        # Overlay label\n        fig.text(\n            0.1,\n            ypos + (boxheight / 2) - 0.01,\n            thres,\n            fontsize=\"larger\",\n            va=\"center\",\n            bbox=dict(color=\"white\"),\n        )\n        # Crude semi-transparent bar underneath\n        width = 0.54 * row[\"days\"] / dmax\n        rect = Rectangle(\n            (0.4, ypos), width, boxheight - 0.02, color=color, alpha=0.3\n        )\n        ax.add_patch(rect)\n\n        # Days\n        fig.text(\n            0.3,\n            ypos + (boxheight / 2) - 0.01,\n            f\"{max(0, row['days']):,} Days\",\n            fontsize=\"larger\",\n            va=\"center\",\n        )\n\n        # Date\n        fig.text(\n            0.43,\n            ypos + (boxheight / 2) - 0.01,\n            row[\"date\"].strftime(\"%B %-d, %Y\"),\n            fontsize=\"larger\",\n            va=\"center\",\n        )\n        ypos -= boxheight\n\n    return fig, df.drop(columns=[\"max_expire\"])\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p231.py",
    "content": "\"\"\"\nThis autoplot produces an infographic for a given state with some\ndiagnostics on the weekly change in Standardized Precipitation Index (SPI)\nover a given day interval.  The purpose is to show how a state's SPI values\nhave changed over a seven day period.  Changes in SPI drought classfication\nare colorized as green for improvements and red for degradations.\n\n<p>Caution, this chart does take a number of seconds to generate.\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot\nfrom pyiem.reference import state_names\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today() - timedelta(days=1)\n    lastweek = today - timedelta(days=7)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"date\",\n            name=\"from\",\n            default=f\"{lastweek:%Y/%m/%d}\",\n            label=\"Evaluate change from this starting date:\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"on\",\n            default=f\"{today:%Y/%m/%d}\",\n            label=\"Evaluate change to this ending date:\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"days\",\n            default=60,\n            label=\"Compute SPI over how many trailing days\",\n        ),\n        dict(\n            type=\"state\",\n            name=\"state\",\n            default=\"IA\",\n            label=\"Select State:\",\n        ),\n    ]\n    return desc\n\n\ndef compute(state, sdate, edate, days):\n    \"\"\"Compute the statistic.\"\"\"\n    # Do we need magic 1 Jan logic?\n    table = f\"alldata_{state.lower()}\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            WITH obs as (\n                SELECT station, day, sday,\n                sum(precip) OVER (PARTITION by station ORDER by day ASC\n                ROWS between :days PRECEDING AND CURRENT ROW) from\n                {table} WHERE\n                substr(station, 3, 1) not in ('C', 'D', 'T')\n                and station != :statewide\n            ), datum as (\n                SELECT * from obs where sday = ANY(:sdays)\n                ORDER by station ASC, day ASC\n            ), agg as (\n                select station, sday, avg(sum) as avg_precip,\n                stddev(sum) as std_precip, count(*) from datum\n                GROUP by station, sday\n            ), agg2 as (\n                SELECT d.station, d.day, d.sday, d.sum, a.avg_precip,\n                a.std_precip from datum d, agg a WHERE d.station = a.station\n                and d.sday = a.sday and a.count >= 25 and d.day = ANY(:dates)\n                ORDER by d.station ASC, d.day ASC\n            )\n            select a.*, st_x(t.geom) as lon, st_y(t.geom) as lat\n            from agg2 a JOIN stations t on (a.station = t.id) WHERE\n            t.network = :network\n            \"\"\",\n                table=table,\n            ),\n            conn,\n            params={\n                \"statewide\": f\"{state}0000\",\n                \"network\": f\"{state}CLIMATE\",\n                \"days\": days - 1,\n                \"sdays\": [f\"{edate:%m%d}\", f\"{sdate:%m%d}\"],\n                \"dates\": [sdate, edate],\n            },\n            parse_dates=[\"day\"],\n        )\n    if df.empty:\n        raise NoDataFound(\"Failed to find any data for given date\")\n    df[\"depart\"] = df[\"sum\"] - df[\"avg_precip\"]\n    df[\"spi\"] = df[\"depart\"] / df[\"std_precip\"]\n    return df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    df = compute(ctx[\"state\"], ctx[\"from\"], ctx[\"on\"], ctx[\"days\"])\n    startdf = df[df[\"sday\"] == f\"{ctx['from']:%m%d}\"].set_index(\"station\")\n    enddf = df[df[\"sday\"] == f\"{ctx['on']:%m%d}\"].set_index(\"station\")\n    if startdf.empty or enddf.empty:\n        raise NoDataFound(\"No data available for given date.\")\n    df = startdf.join(enddf, how=\"inner\", lsuffix=\"_start\", rsuffix=\"_end\")\n    df = df.sort_values(\"spi_start\", ascending=True)\n    df[\"depart_change\"] = df[\"depart_end\"] - df[\"depart_start\"]\n    df[\"spi_change\"] = df[\"spi_end\"] - df[\"spi_start\"]\n    # D4\n    levels = [-100, -2, -1.6, -1.3, -0.8, -0.5, 0.5, 0.8, 1.3, 1.6, 2, 100]\n    dd = [-4, -3, -2, -1, -0.1, 0, 0.1, 1, 2, 3, 4]\n    dlabels = [\"D4\", \"D3\", \"D2\", \"D1\", \"D0\", \"-\", \"W0\", \"W1\", \"W2\", \"W3\", \"W4\"]\n    df[\"d_start\"] = pd.cut(df[\"spi_start\"], levels, labels=dd).astype(float)\n    df[\"d_end\"] = pd.cut(df[\"spi_end\"], levels, labels=dd).astype(float)\n    df[\"dclass_end\"] = pd.cut(df[\"spi_end\"], levels, labels=dlabels).astype(\n        str\n    )\n    df[\"dclass_start\"] = pd.cut(\n        df[\"spi_start\"], levels, labels=dlabels\n    ).astype(str)\n    celltext = (\n        df[[\"dclass_start\", \"dclass_end\", \"lat_start\"]]\n        .groupby([\"dclass_start\", \"dclass_end\"])\n        .count()\n        .reset_index()\n        .pivot(index=\"dclass_start\", columns=\"dclass_end\", values=\"lat_start\")\n        .reindex(index=dlabels, columns=dlabels)\n        .fillna(0)\n        .astype(int)\n        .astype(str)\n        .replace({\"0\": \"\"})\n        .values.tolist()\n    )\n    df[\"d_change\"] = df[\"d_end\"] - df[\"d_start\"]\n    df[\"color\"] = \"black\"\n    df.loc[df[\"d_change\"] > 0, \"color\"] = \"green\"\n    df.loc[df[\"d_change\"] < 0, \"color\"] = \"red\"\n    mp = MapPlot(\n        title=(\n            f\"{state_names[ctx['state']]} {ctx['days']} Day SPI Change \"\n            f\"from {ctx['from']:%-d %b %Y} to {ctx['on']:%-d %b %Y}\"\n        ),\n        subtitle=(\n            \"Map shows SPI drought classification on end date, \"\n            \"red degradation and green improvement\"\n        ),\n        continentalcolor=\"white\",\n        state=ctx[\"state\"],\n        axes_position=[0.02, 0.1, 0.6, 0.8],\n    )\n    mp.drawcounties()\n    mp.draw_usdm(ctx[\"on\"])\n    mp.plot_values(\n        df[\"lon_start\"],\n        df[\"lat_start\"],\n        df[\"dclass_end\"].values,\n        color=df[\"color\"].values,\n        labelbuffer=0,\n    )\n    mp.fig.text(0.7, 0.87, \"Change Vector\")\n    ax = mp.fig.add_axes([0.7, 0.45, 0.25, 0.40], yticks=[])\n    ax.set_xlabel(\"SPI\")\n    ax.set_ylabel(\"Sorted Station by Start SPI\")\n    yvals = pd.Series(range(len(df.index))) / len(df.index)\n    ax.quiver(\n        df[\"spi_start\"],\n        yvals,\n        df[\"spi_change\"],\n        [0] * len(df.index),\n        color=df[\"color\"],\n        scale_units=\"xy\",\n        angles=\"xy\",\n        scale=1,\n        zorder=10,\n    )\n    colors = [\"#ffff00\", \"#fcd37f\", \"#ffaa00\", \"#e60000\", \"#730000\"]\n    spis = [-0.5, -0.8, -1.3, -1.6, -2, -10]\n    for i, spi in enumerate(spis[:-1]):\n        ax.axvspan(spis[i + 1], spi, color=colors[i])\n    ax.set_xlim(\n        min([df[\"spi_start\"].min(), df[\"spi_end\"].min()]) - 0.1,\n        max([df[\"spi_start\"].max(), df[\"spi_end\"].max()]) + 0.1,\n    )\n    ax.set_ylim(-0.01, 1)\n\n    mp.fig.text(\n        0.7, 0.32, f\"Station Change Count\\nSPI on {ctx['on']:%-d %b %Y}\"\n    )\n    mp.fig.text(0.65, 0.1, f\"SPI on {ctx['from']:%-d %b %Y}\", rotation=90)\n    ax = mp.fig.add_axes(\n        [0.7, 0.31, 0.25, 0.1], xticks=[], yticks=[], facecolor=\"None\"\n    )\n    for x in ax.spines:\n        ax.spines[x].set_visible(False)\n    cellcolors = []\n    for i in range(11):\n        t = []\n        if i >= 1:\n            t.extend([(1, 0.8, 0.8)] * i)\n        t.append((1, 1, 1))\n        if i < 10:\n            t.extend([(0.5, 1, 0.5)] * (11 - i - 1))\n        cellcolors.append(t)\n\n    ax.table(\n        celltext,\n        cellColours=cellcolors,\n        rowLabels=dlabels,\n        colLabels=dlabels,\n    )\n\n    return mp.fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p232.py",
    "content": "\"\"\"\nThis app plots ASOS/METAR data during a period of your choice and overlays\nNWS Watch, Warning, and Advisory data.  The choice of NWS Headline type\nwill limit which potential headlines events are overlaid on the chart.\n\"\"\"\n\nfrom datetime import timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport matplotlib.dates as mdates\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.axes import Axes\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws.vtec import NWS_COLORS, get_ps_string\nfrom pyiem.plot import figure\n\nPDICT = {\n    \"BZ\": \"Blizzard Warning\",\n    \"FG\": \"Dense Fog Advisory\",\n    \"FW\": \"Fire Weather Warning\",\n    \"HT\": \"Heat Advisory / Extreme Heat Warning\",\n    \"WC\": \"Wind Chill Advisory/Warning / WinterWx\",\n    \"WI\": \"Wind Advisory / High Wind Warning\",\n}\nDOMAIN = {\n    \"BZ\": [\n        \"BZ.W\",\n    ],\n    \"FG\": [\"FG.Y\"],\n    \"FW\": [\"FW.W\"],\n    \"WC\": [\"WC.W\", \"WC.Y\", \"WW.Y\", \"WS.W\", \"BZ.W\", \"CW.Y\", \"EC.W\"],\n    \"HT\": [\"EH.W\", \"HT.Y\", \"XH.W\"],\n    \"WI\": [\"WI.Y\", \"HW.W\"],\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 600, \"data\": True}\n    desc[\"defaults\"] = {\"_r\": \"t\"}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"mode\",\n            default=\"BZ\",\n            label=\"Customize plot for given NWS Headline:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"zstation\",\n            default=\"MCW\",\n            network=\"IA_ASOS\",\n            name=\"station\",\n            label=\"Select station to plot:\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"valid\",\n            default=\"2022/12/21 1200\",\n            label=\"Start time of plot (UTC):\",\n            min=\"2007/01/01 0000\",\n        ),\n        dict(\n            type=\"int\",\n            name=\"hours\",\n            default=\"72\",\n            label=\"Number of hours to plot observations for:\",\n        ),\n    ]\n    return desc\n\n\ndef plot_column(ax: Axes, obs, col, ylabel):\n    \"\"\"Plot simple.\"\"\"\n    ax.scatter(obs.utc_valid, obs[col], marker=\"o\", s=40, color=\"b\", zorder=3)\n    ax.set_ylabel(ylabel, color=\"b\")\n\n\ndef plot_bz(ax: Axes, obs: pd.DataFrame):\n    \"\"\"Do the magic with plotting for BZ.\"\"\"\n    plot_column(ax, obs, \"vsby\", \"Visibility [miles]\")\n    ax2 = ax.twinx()\n    ax2.scatter(\n        obs.utc_valid, obs.max_wind, marker=\"o\", s=40, color=\"r\", zorder=2\n    )\n    ax2.set_ylabel(\"Wind Speed/Gust [mph]\", color=\"r\")\n    ax.set_ylim(0, 10.1)\n    ax2.set_ylim(0, 80)\n\n    ax.set_yticks(np.linspace(0, 10, 5))\n    ax2.set_yticks(np.linspace(0, 80, 5))\n    ax2.axhline(35, linestyle=\"-.\", color=\"r\")\n    ax.axhline(0.25, linestyle=\"-.\", color=\"b\")\n\n    hit = None\n    row = None\n    for j, row in obs.iterrows():\n        if j == 0:\n            continue\n        if row[\"vsby\"] <= 0.25 and row[\"max_wind\"] >= 35:\n            if hit is None:\n                hit = j - 1\n            continue\n        if hit is None:\n            continue\n        secs = (row[\"utc_valid\"] - obs.at[hit, \"utc_valid\"]).total_seconds()\n        color = \"#EEEEEE\" if secs < (3 * 3600.0) else \"lightblue\"\n        rect = Rectangle(\n            (obs.at[hit, \"utc_valid\"], 0),\n            timedelta(seconds=secs),\n            60,\n            fc=color,\n            zorder=1,\n            ec=\"None\",\n        )\n        ax.add_patch(rect)\n        hit = None\n    if hit in obs.index:\n        secs = (row[\"utc_valid\"] - obs.at[hit, \"utc_valid\"]).total_seconds()\n        color = \"#EEEEEE\" if secs < (3 * 3600.0) else \"lightblue\"\n        rect = Rectangle(\n            (obs.at[hit, \"utc_valid\"], 0),\n            timedelta(seconds=secs),\n            60,\n            fc=color,\n            zorder=1,\n            ec=\"None\",\n        )\n        ax.add_patch(rect)\n\n\ndef get_firewx_zone(lon: float, lat: float):\n    \"\"\"Sigh.\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n            SELECT ugc from ugcs where end_ts is null and\n            ST_Contains(geom, ST_Point(:lon, :lat, 4326))\n            and source = 'fz'\n            \"\"\"\n            ),\n            {\"lon\": lon, \"lat\": lat},\n        )\n        row = res.first()\n    return \"IAZ001\" if not row else row[0]\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    sts = ctx[\"valid\"].replace(tzinfo=timezone.utc)\n    station = ctx[\"station\"]\n    tzname = ctx[\"_nt\"].sts[station][\"tzname\"]\n    ets = sts + timedelta(hours=ctx[\"hours\"])\n\n    # Find WaWa\n    zone = ctx[\"_nt\"].sts[station][\"ugc_zone\"]\n    if ctx[\"mode\"] == \"FW\":\n        zone = get_firewx_zone(\n            ctx[\"_nt\"].sts[station][\"lon\"], ctx[\"_nt\"].sts[station][\"lat\"]\n        )\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        wwa = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT phenomena ||'.'|| significance as key,\n            issue at time zone 'UTC' as utc_issue,\n            expire at time zone 'UTC' as utc_expire, eventid\n            from warnings where ugc = ANY(:ugcs) and issue < :ets\n            and expire > :sts ORDER by issue ASC\"\"\"\n            ),\n            conn,\n            params={\n                \"ugcs\": [\n                    zone,\n                    ctx[\"_nt\"].sts[station][\"ugc_county\"],\n                ],\n                \"sts\": sts,\n                \"ets\": ets,\n            },\n            index_col=None,\n        )\n    if not wwa.empty:\n        wwa[\"utc_issue\"] = wwa[\"utc_issue\"].dt.tz_localize(timezone.utc)\n        wwa[\"utc_expire\"] = wwa[\"utc_expire\"].dt.tz_localize(timezone.utc)\n        wwa = wwa[wwa[\"key\"].isin(DOMAIN[ctx[\"mode\"]])].reset_index()\n    # Find Obs\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        obs = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT valid at time zone 'UTC' as utc_valid, tmpf, sknt, gust,\n            greatest(sknt, gust) * 1.15 as max_wind, feel, relh,\n            vsby from alldata where station = :station and\n            valid >= :sts and valid <= :ets and report_type in (3, 4)\n            ORDER by valid ASC\"\"\"\n            ),\n            conn,\n            params={\n                \"station\": station,\n                \"sts\": sts,\n                \"ets\": ets,\n            },\n            index_col=None,\n        )\n    if obs.empty:\n        raise NoDataFound(\"No observations found for the site/time\")\n\n    title = f\"{ctx['_sname']} :: Observations during NWS Headlines\"\n    subtitle = f\"Plot customized for {PDICT[ctx['mode']]}.\"\n    fig = figure(title=title, subtitle=subtitle, apctx=ctx)\n    box1 = (0.1, 0.15, 0.82, 0.65)\n    box2 = (0.1, 0.8, 0.82, 0.1)\n    if len(wwa.index) > 4:\n        box1 = (0.1, 0.15, 0.82, 0.55)\n        box2 = (0.1, 0.7, 0.82, 0.2)\n    ax = fig.add_axes(box1)\n    top_ax = fig.add_axes(box2, frame_on=False)\n    if ctx[\"mode\"] == \"BZ\":\n        obs = obs[\n            pd.notna(obs[\"max_wind\"]) & pd.notna(obs[\"vsby\"])\n        ].reset_index()\n        plot_bz(ax, obs)\n        fig.text(\n            0.5,\n            0.04,\n            (\n                \"Gray Shaded areas <=1/4 mile vis & \"\n                \"35+ MPH winds, Light Blue >= 3 Hours\"\n            ),\n            ha=\"center\",\n        )\n    elif ctx[\"mode\"] in [\"WC\", \"HT\"]:\n        obs = obs[pd.notna(obs[\"feel\"])].reset_index()\n        plot_column(ax, obs, \"feel\", \"Feels Like Temperature [°F]\")\n    elif ctx[\"mode\"] == \"FG\":\n        obs = obs[pd.notna(obs[\"vsby\"])].reset_index()\n        plot_column(ax, obs, \"vsby\", \"Visibility [miles]\")\n        ax.axhline(0.25, linestyle=\"-.\", color=\"b\")\n        ax.annotate(\n            \"0.25\",\n            xy=(1.01, 0.25),\n            xycoords=(\"axes fraction\", \"data\"),\n            ha=\"left\",\n            color=\"b\",\n        )\n    elif ctx[\"mode\"] in [\"FW\", \"WI\"]:\n        sknt = obs[pd.notna(obs[\"sknt\"])].reset_index()\n        ax.bar(\n            sknt[\"utc_valid\"],\n            sknt[\"max_wind\"],\n            width=1 / 24.0,\n            align=\"center\",\n            color=\"g\",\n        )\n        ax.bar(\n            sknt[\"utc_valid\"],\n            sknt[\"sknt\"],\n            width=1 / 24.0,\n            align=\"center\",\n            color=\"b\",\n        )\n        ax.set_ylabel(\"Sustained Winds + Gusts (Green) [MPH]\", color=\"b\")\n        if ctx[\"mode\"] == \"FW\":\n            ax2 = ax.twinx()\n            relh = obs[pd.notna(obs[\"relh\"])]\n            ax2.scatter(\n                relh[\"utc_valid\"],\n                relh[\"relh\"],\n                marker=\"o\",\n                s=40,\n                color=\"r\",\n            )\n            ax2.set_ylabel(\"Relative Humidity [%]\", color=\"r\")\n    for i, row in wwa.iterrows():\n        color = NWS_COLORS[row[\"key\"]]\n        ax.axvspan(\n            row[\"utc_issue\"],\n            row[\"utc_expire\"],\n            color=color,\n            zorder=1,\n            alpha=0.4,\n        )\n        ax.axvline(row[\"utc_issue\"], lw=2, zorder=2, color=color)\n        ax.axvline(row[\"utc_expire\"], lw=2, zorder=2, color=color)\n        delta = row[\"utc_expire\"] - row[\"utc_issue\"]\n        top_ax.plot(\n            [\n                row[\"utc_issue\"],\n                row[\"utc_issue\"],\n                row[\"utc_expire\"],\n                row[\"utc_expire\"],\n            ],\n            [0, i + 1, i + 1, 0],\n            lw=2,\n            c=color,\n        )\n        xloc = row[\"utc_issue\"] + delta / 2\n        ha = \"center\"\n        if xloc > ets:\n            xloc = row[\"utc_issue\"]\n            ha = \"left\"\n        top_ax.text(\n            xloc,\n            i + 0.5,\n            f\"{get_ps_string(*row['key'].split('.'))} #{row['eventid']}\",\n            va=\"center\",\n            ha=ha,\n            color=color,\n        )\n    ax.grid(True)\n    top_ax.set_ylim(0, len(wwa.index) + 1)\n    top_ax.set_xticks([])\n    top_ax.set_yticks([])\n    tzinfo = ZoneInfo(ctx[\"_nt\"].sts[station][\"tzname\"])\n    ax.xaxis.set_major_locator(mdates.DayLocator(interval=1, tz=tzinfo))\n    ax.xaxis.set_major_formatter(\n        mdates.DateFormatter(\"|\\n%d %b %Y\", tz=tzinfo)\n    )\n\n    byhour = (\n        [6, 12, 18]\n        if ctx[\"hours\"] < 73\n        else [\n            12,\n        ]\n    )\n    ax.xaxis.set_minor_locator(mdates.HourLocator(byhour=byhour, tz=tzinfo))\n    ax.xaxis.set_minor_formatter(mdates.DateFormatter(\"%I %p\", tz=tzinfo))\n    ax.set_xlabel(\n        f\"{sts.astimezone(tzinfo):%-d %b %Y %-H:%M %p} to \"\n        f\"{ets.astimezone(tzinfo):%-d %b %Y %-H:%M %p} [{tzname}]\"\n    )\n    ax.set_xlim(sts, ets + timedelta(minutes=5))\n    top_ax.set_xlim(sts, ets + timedelta(minutes=5))\n\n    return fig, obs\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p233.py",
    "content": "\"\"\"\nThis calendar presents the number of Special Weather Statements\nthat contain polygons issued per day.\n<a href=\"/plotting/auto/?q=143\">Autoplot 143</a> presents this same data,\nbut as yearly and monthly totals.\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import calendar_plot\n\nPDICT = {\"yes\": \"Colorize Cells in Chart\", \"no\": \"Just plot values please\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    jan1 = today.replace(month=1, day=1)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=jan1.strftime(\"%Y/%m/%d\"),\n            label=\"Start Date (inclusive):\",\n            min=\"1986/01/01\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"edate\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"End Date (inclusive):\",\n            min=\"1986/01/01\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"wfo\",\n            network=\"WFO\",\n            all=True,\n            default=\"DMX\",\n            label=\"Select WFO:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"heatmap\",\n            options=PDICT,\n            default=\"yes\",\n            label=\"Colorize calendar cells based on values?\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\n        \"name\": \"All Offices\",\n        \"tzname\": \"America/Chicago\",\n    }\n    sts = ctx[\"sdate\"]\n    ets = ctx[\"edate\"]\n    if (ets - sts).days > 366:\n        raise NoDataFound(\"Chart duration needs to be less than 1 year.\")\n    wfo = ctx[\"wfo\"]\n    params = {}\n    params[\"tzname\"] = ctx[\"_nt\"].sts[wfo][\"tzname\"]\n    params[\"sts\"] = sts - timedelta(days=2)\n    params[\"ets\"] = ets + timedelta(days=2)\n\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\n        \"name\": \"All Offices\",\n        \"tzname\": \"America/Chicago\",\n    }\n    if wfo not in ctx[\"_nt\"].sts:\n        raise NoDataFound(\"No Data Found.\")\n    wfo_limiter = \" and wfo = :wfo \"\n    params[\"wfo\"] = wfo if len(wfo) == 3 else wfo[1:]\n    if wfo == \"_ALL\":\n        wfo_limiter = \"\"\n    title2 = f\"NWS {ctx['_sname']}\"\n    if wfo == \"_ALL\":\n        title2 = \"All NWS Offices\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    select date(issue at time zone :tzname), count(*)\n    from sps\n    where not ST_IsEmpty(geom) {wfo_limiter} and\n    issue >= :sts and issue < :ets GROUP by date\n        \"\"\",\n                wfo_limiter=wfo_limiter,\n            ),\n            conn,\n            params=params,\n            index_col=\"date\",\n        )\n\n    data = {}\n    now = sts\n    while now <= ets:\n        data[now] = {\"val\": 0}\n        now += timedelta(days=1)\n    for dt, row in df.iterrows():\n        data[dt] = {\"val\": row[\"count\"]}\n    fig = calendar_plot(\n        sts,\n        ets,\n        data,\n        apctx=ctx,\n        heatmap=(ctx[\"heatmap\"] == \"yes\"),\n        title=f\"Number of SPS Polygons for {title2} by Local Calendar Date\",\n        subtitle=f\"Valid {sts:%d %b %Y} - {ets:%d %b %Y}\",\n    )\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p234.py",
    "content": "\"\"\"\nThis autoplot generates a calendar showing calendar day Local Storm\nReport totals by NWS Weather Forecast Office (WFO) or State.  The calendar\ndate is based on the local timezone of the WFO selected or you can select\na 12 UTC to 12 UTC period of which the plotted date represents the start\ndate of that 24 hour period.  The calendar plot\ntype only supports up to 12 months plotted at once.\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import calendar_plot\nfrom pyiem.reference import state_names\n\nPDICT = {\"yes\": \"Colorize Cells in Chart\", \"no\": \"Just plot values please\"}\nMDICT = {\n    \"NONE\": \"All LSR Types\",\n    \"NRS\": \"All LSR Types except HEAVY RAIN + SNOW\",\n    \"H1\": \"One Inch and Larger Hail \",\n    \"CON\": \"Convective LSRs (Tornado, TStorm Gst/Dmg, Hail)\",\n    \"AVALANCHE\": \"AVALANCHE\",\n    \"BLIZZARD\": \"BLIZZARD\",\n    \"COASTAL FLOOD\": \"COASTAL FLOOD\",\n    \"DEBRIS FLOW\": \"DEBRIS FLOW\",\n    \"DENSE FOG\": \"DENSE FOG\",\n    \"DOWNBURST\": \"DOWNBURST\",\n    \"DUST STORM\": \"DUST STORM\",\n    \"EXCESSIVE HEAT\": \"EXCESSIVE HEAT\",\n    \"EXTREME COLD\": \"EXTREME COLD\",\n    \"EXTR WIND CHILL\": \"EXTR WIND CHILL\",\n    \"FLASH FLOOD\": \"FLASH FLOOD\",\n    \"FLOOD\": \"FLOOD\",\n    \"FOG\": \"FOG\",\n    \"FREEZE\": \"FREEZE\",\n    \"FREEZING DRIZZLE\": \"FREEZING DRIZZLE\",\n    \"FREEZING RAIN\": \"FREEZING RAIN\",\n    \"FUNNEL CLOUD\": \"FUNNEL CLOUD\",\n    \"HAIL\": \"HAIL\",\n    \"HEAVY RAIN\": \"HEAVY RAIN\",\n    \"HEAVY SLEET\": \"HEAVY SLEET\",\n    \"HEAVY SNOW\": \"HEAVY SNOW\",\n    \"HIGH ASTR TIDES\": \"HIGH ASTR TIDES\",\n    \"HIGH SURF\": \"HIGH SURF\",\n    \"HIGH SUST WINDS\": \"HIGH SUST WINDS\",\n    \"HURRICANE\": \"HURRICANE\",\n    \"ICE STORM\": \"ICE STORM\",\n    \"LAKESHORE FLOOD\": \"LAKESHORE FLOOD\",\n    \"LIGHTNING\": \"LIGHTNING\",\n    \"LOW ASTR TIDES\": \"LOW ASTR TIDES\",\n    \"MARINE TSTM WIND\": \"MARINE TSTM WIND\",\n    \"NON-TSTM WND DMG\": \"NON-TSTM WND DMG\",\n    \"NON-TSTM WND GST\": \"NON-TSTM WND GST\",\n    \"RAIN\": \"RAIN\",\n    \"RIP CURRENTS\": \"RIP CURRENTS\",\n    \"SLEET\": \"SLEET\",\n    \"SNOW\": \"SNOW\",\n    \"STORM SURGE\": \"STORM SURGE\",\n    \"TORNADO\": \"TORNADO\",\n    \"TROPICAL STORM\": \"TROPICAL STORM\",\n    \"TSTM WND DMG\": \"TSTM WND DMG\",\n    \"TSTM WND GST\": \"TSTM WND GST\",\n    \"WALL CLOUD\": \"WALL CLOUD\",\n    \"WATER SPOUT\": \"WATER SPOUT\",\n    \"WILDFIRE\": \"WILDFIRE\",\n}\nPDICT2 = {\"cwa\": \"by NWS Forecast Office\", \"state\": \"by State\"}\nPDICT3 = {\n    \"local\": \"Local Time Zone for WFO\",\n    \"12z\": \"12 UTC to 12 UTC Time Period\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = date.today()\n    jan1 = today.replace(month=1, day=1)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=jan1.strftime(\"%Y/%m/%d\"),\n            label=\"Start Date (inclusive):\",\n            min=\"1986/01/01\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"edate\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"End Date (inclusive):\",\n            min=\"1986/01/01\",\n        ),\n        {\n            \"type\": \"select\",\n            \"name\": \"daytz\",\n            \"default\": \"local\",\n            \"label\": \"Calendar Date Time Zone / Period:\",\n            \"options\": PDICT3,\n        },\n        dict(\n            type=\"select\",\n            name=\"filter\",\n            default=\"NONE\",\n            options=MDICT,\n            label=\"Local Storm Report Type Filter\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"w\",\n            options=PDICT2,\n            default=\"cwa\",\n            label=\"Plot stats for:\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"wfo\",\n            network=\"WFO\",\n            all=True,\n            default=\"DMX\",\n            label=\"Select WFO (when appropriate):\",\n        ),\n        dict(\n            type=\"state\",\n            name=\"state\",\n            default=\"IA\",\n            label=\"Select State (when appropriate):\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"heatmap\",\n            options=PDICT,\n            default=\"yes\",\n            label=\"Colorize calendar cells based on values?\",\n        ),\n        {\n            \"type\": \"cmap\",\n            \"name\": \"cmap\",\n            \"label\": \"Color Ramp:\",\n            \"default\": \"viridis\",\n        },\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\n        \"name\": \"All Offices\",\n        \"tzname\": \"America/Chicago\",\n    }\n    sts = ctx[\"sdate\"]\n    ets = ctx[\"edate\"]\n    if (ets - sts).days > 366:\n        raise NoDataFound(\"Chart duration needs to be less than 1 year.\")\n    wfo = ctx[\"wfo\"]\n    state = ctx[\"state\"]\n    params = {\n        \"tzname\": ctx[\"_nt\"].sts[wfo][\"tzname\"],\n        \"sts\": sts - timedelta(days=2),\n        \"ets\": ets + timedelta(days=2),\n        \"offset\": \"\",\n    }\n    if ctx[\"daytz\"] == \"12z\":\n        params[\"offset\"] = \" - interval '12 hours' \"\n        params[\"tzname\"] = \"UTC\"\n\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\n        \"name\": \"All Offices\",\n        \"tzname\": \"America/Chicago\",\n    }\n    if wfo not in ctx[\"_nt\"].sts:\n        raise NoDataFound(\"No Data Found.\")\n    params[\"wfo\"] = wfo if len(wfo) == 3 else wfo[1:]\n    wfo_limiter = \"\"\n    if ctx[\"w\"] == \"cwa\":\n        wfo_limiter = \" and wfo = :wfo \"\n        if wfo == \"_ALL\":\n            wfo_limiter = \"\"\n        title2 = f\"NWS {ctx['_sname']}\"\n        if wfo == \"_ALL\":\n            title2 = \"All NWS Offices\"\n    else:\n        wfo_limiter = \" and state = :state \"\n        params[\"state\"] = state\n        title2 = f\"{state_names[state]}\"\n\n    myfilter = ctx[\"filter\"]\n    if myfilter == \"NONE\":\n        tlimiter = \"\"\n    elif myfilter == \"NRS\":\n        tlimiter = \" and typetext not in ('HEAVY RAIN', 'SNOW', 'HEAVY SNOW') \"\n    elif myfilter == \"H1\":\n        tlimiter = \" and typetext = 'HAIL' and magnitude >= 1 \"\n    elif myfilter == \"CON\":\n        tlimiter = (\n            \" and typetext in ('TORNADO', 'HAIL', 'TSTM WND GST', \"\n            \"'TSTM WND DMG') \"\n        )\n    else:\n        tlimiter = f\" and typetext = '{myfilter}' \"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                WITH data as (\n                    SELECT distinct wfo, state,\n                    valid at time zone :tzname as valid, magnitude, typetext,\n                    city\n                    from lsrs l where valid >= :sts and valid < :ets {tlimiter}\n                    {wfo_limiter}\n                )\n                SELECT date(valid{offset}), count(*) from data GROUP by date\n                ORDER by date ASC\n        \"\"\",\n                wfo_limiter=wfo_limiter,\n                tlimiter=tlimiter,\n                offset=params[\"offset\"],\n            ),\n            conn,\n            params=params,\n            index_col=\"date\",\n        )\n\n    data = {}\n    now = sts\n    while now <= ets:\n        data[now] = {\"val\": 0}\n        now += timedelta(days=1)\n    for dt, row in df.iterrows():\n        data[dt] = {\"val\": row[\"count\"]}\n    dd = params[\"tzname\"] if ctx[\"daytz\"] == \"local\" else \"12 UTC to 12 UTC\"\n    fig = calendar_plot(\n        sts,\n        ets,\n        data,\n        apctx=ctx,\n        cmap=ctx[\"cmap\"],\n        heatmap=(ctx[\"heatmap\"] == \"yes\"),\n        title=f\"{title2} :: Preliminary/Unfiltered Local Storm Reports\",\n        subtitle=(\n            f\"Valid {sts:%d %b %Y} - {ets:%d %b %Y} for {dd}. \"\n            f\"Type limiter: {MDICT.get(myfilter)}\"\n        ),\n    )\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p235.py",
    "content": "\"\"\"\nThis autoplot presents the total number of text products issued by UTC\nmonth and year.\n\n<p><a href=\"?q=210\">Autoplot 210</a> presents a map of issuance counts\nfor all Weather Forecast Offices.</p>\n\"\"\"\n\nimport calendar\n\nimport numpy as np\nimport pandas as pd\nimport seaborn as sns\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom pyiem.reference import prodDefinitions\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=[\"WFO\", \"NCEP\", \"RFC\", \"NWS\"],\n            default=\"DMX\",\n            label=\"Select Issuance Center:\",\n            all=True,\n        ),\n        dict(\n            type=\"select\",\n            name=\"pil\",\n            default=\"AFD\",\n            label=\"Select 3 Character Product ID (AWIPS ID / AFOS)\",\n            options=prodDefinitions,\n            showvalue=True,\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"Greens\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    pil = ctx[\"pil\"]\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\"name\": \"All Offices\"}\n    center = station\n    if len(station) == 3:\n        center = f\"K{station}\"\n\n    params = {\"center\": center, \"pil\": pil}\n    wfo_limiter = \" and source = :center \"\n    params[\"wfo\"] = station if len(station) == 3 else station[1:]\n    if station == \"_ALL\":\n        wfo_limiter = \"\"\n        ctx[\"_sname\"] = \"All Offices\"\n\n    with get_sqlalchemy_conn(\"afos\") as conn:\n        ss = \"pil = :pil\" if len(pil) > 3 else \"substr(pil, 1, 3) = :pil\"\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                SELECT\n                extract(year from entered at time zone 'UTC')::int as yr,\n                extract(month from entered at time zone 'UTC')::int as mo,\n                min(entered at time zone 'UTC') as min_entered,\n                max(entered at time zone 'UTC') as max_entered,\n                count(*)\n                from products WHERE {ss} {wfo_limiter}\n                GROUP by yr, mo ORDER by yr, mo ASC\n        \"\"\",\n                ss=ss,\n                wfo_limiter=wfo_limiter,\n            ),\n            conn,\n            params=params,\n            index_col=None,\n        )\n\n    if df.empty:\n        raise NoDataFound(\"Sorry, no data found!\")\n\n    df2 = df.pivot(index=\"yr\", columns=\"mo\", values=\"count\").reindex(\n        index=range(df[\"yr\"].min(), df[\"yr\"].max() + 1),\n        columns=range(1, 13),\n    )\n\n    title = f\"NWS {ctx['_sname']} :: {prodDefinitions[pil]} [{pil}]\"\n    subtitle = (\n        \"Number of issued text products by year and month. \"\n        f\"({df['min_entered'].min():%d %b %Y}-\"\n        f\"{df['max_entered'].max():%d %b %Y})\"\n    )\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    sns.heatmap(\n        df2,\n        annot=True,\n        fmt=\".0f\",\n        linewidths=0.5,\n        ax=ax,\n        vmin=1,\n        cmap=ctx[\"cmap\"],\n        zorder=2,\n    )\n    # Add sums to RHS\n    sumdf = df2.sum(axis=\"columns\").fillna(0)\n    for year, count in sumdf.items():\n        ax.text(12, year, f\"{count:.0f}\")\n    # Add some horizontal lines\n    for i, year in enumerate(range(df[\"yr\"].min(), df[\"yr\"].max() + 1)):\n        ax.text(\n            12 + 0.7, i + 0.5, f\"{sumdf[year]:4.0f}\", ha=\"right\", va=\"center\"\n        )\n        if year % 5 != 0:\n            continue\n        ax.axhline(i, zorder=3, lw=1, color=\"gray\")\n    ax.text(1.0, -0.02, \"Total\", transform=ax.transAxes)\n    # Add some vertical lines\n    for i in range(1, 12):\n        ax.axvline(i, zorder=3, lw=1, color=\"gray\")\n    ax.set_xticks(np.arange(12) + 0.5)\n    ax.set_xticklabels(calendar.month_abbr[1:], rotation=0)\n    ax.set_ylabel(\"Year\")\n    ax.set_xlabel(\"Month\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p236.py",
    "content": "\"\"\"\nThis autoplot presents a time series of UTC daily PIREP totals by ARTCC\nor Alaska Zone.  The chart presents daily totals for PIREPs that contain\nicing (/IC), turbulence (/TB), icing or turbulence and all reports.</p>\n\n<p>Each chart presents a simple average over the plot and a trailing\n30 day average.\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport matplotlib.dates as mdates\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.util import utc\n\n# select distinct '\"'||ident||'\": \"['||ident||'] '||name||'\",' from airspaces\n# where type_code in ('AKZONE', 'ARTCC');\nPDICT = {\n    \"AB\": \"[AB] Cook Inlet and Susitna Valley\",\n    \"AC\": \"[AC] Copper River Basin\",\n    \"AD\": \"[AD] Central Gulf Coast\",\n    \"AE\": \"[AE] Kodiak Island\",\n    \"AF\": \"[AF] Kuskokwim Valley\",\n    \"AG\": \"[AG] Yukon - Kuskokwim Delta\",\n    \"AH\": \"[AH] Bristol Bay\",\n    \"AI\": \"[AI] Alaska Peninsula\",\n    \"AJ\": \"[AJ] Unimak Pass to Adak\",\n    \"AK\": \"[AK] Adak to Attu\",\n    \"AL\": \"[AL] Pribilof Islands and Southeast Bering Sea\",\n    \"FB\": \"[FB] Upper Yukon Valley\",\n    \"FC\": \"[FC] Tanana Valley\",\n    \"FE\": \"[FE] Koyukuk and Upper Kobuk Valley\",\n    \"FF\": \"[FF] Lower Yukon Valley\",\n    \"FG\": \"[FG] Arctic Slope Coastal\",\n    \"FH\": \"[FH] North Slopes of the Brooks Range\",\n    \"FI\": \"[FI] Northern Seward Peninsula and Lower Kobuk Valley\",\n    \"FJ\": \"[FJ] Southern Seward Peninsula and Eastern Norton Sound\",\n    \"FK\": \"[FK] St. Lawrence Island and Western Norton Sound\",\n    \"JB\": \"[JB] Lynn Canal and Glacier Bay\",\n    \"JC\": \"[JC] Central Southeast Alaska\",\n    \"JD\": \"[JD] Southern Southeast Alaska\",\n    \"JE\": \"[JE] Eastern Gulf Coast\",\n    \"JF\": \"[JF] Southeast Alaska Coastal Waters\",\n    \"ZAB\": \"[ZAB] ALBUQUERQUE\",\n    \"ZAN\": \"[ZAN] ANCHORAGE\",\n    \"ZAU\": \"[ZAU] CHICAGO\",\n    \"ZBW\": \"[ZBW] BOSTON \",\n    \"ZDC\": \"[ZDC] WASHINGTON\",\n    \"ZDV\": \"[ZDV] DENVER\",\n    \"ZFW\": \"[ZFW] FORT WORTH\",\n    \"ZHU\": \"[ZHU] HOUSTON\",\n    \"ZID\": \"[ZID] INDIANAPOLIS\",\n    \"ZJX\": \"[ZJX] JACKSONVILLE\",\n    \"ZKC\": \"[ZKC] KANSAS CITY\",\n    \"ZLA\": \"[ZLA] LOS ANGELES\",\n    \"ZLC\": \"[ZLC] SALT LAKE CITY\",\n    \"ZMA\": \"[ZMA] MIAMI\",\n    \"ZME\": \"[ZME] MEMPHIS\",\n    \"ZMP\": \"[ZMP] MINNEAPOLIS\",\n    \"ZNY\": \"[ZNY] NEW YORK\",\n    \"ZOA\": \"[ZOA] OAKLAND\",\n    \"ZOB\": \"[ZOB] CLEVELAND \",\n    \"ZSE\": \"[ZSE] SEATTLE\",\n    \"ZTL\": \"[ZTL] ATLANTA\",\n    \"_ALL\": \"All PIREPS / No Spatial Limit\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"cache\": 86400, \"description\": __doc__, \"data\": True}\n    today = date.today() + timedelta(days=1)\n    t365 = today - timedelta(days=365)\n\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"ident\",\n            options=PDICT,\n            default=\"ZMP\",\n            label=\"Select ARTCC/Alaska Zone:\",\n            all=True,  # One-off problem with _ALL\n        ),\n        dict(\n            type=\"date\",\n            name=\"sdate\",\n            default=t365.strftime(\"%Y/%m/%d\"),\n            label=\"Start UTC Date (inclusive):\",\n            min=\"2003/03/01\",\n        ),\n        dict(\n            type=\"date\",\n            name=\"edate\",\n            default=today.strftime(\"%Y/%m/%d\"),\n            label=\"End UTC Date (inclusive):\",\n            min=\"2003/03/01\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    sdate = ctx[\"sdate\"]\n    edate = ctx[\"edate\"]\n    limiter = (\n        \", airspaces a WHERE ST_Intersects(p.geom, a.geom) and \"\n        \"a.ident = :ident and a.type_code in ('AKZONE', 'ARTCC') and \"\n    )\n    if ctx[\"ident\"] == \"_ALL\":\n        limiter = \" WHERE \"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT date(valid at time zone 'UTC') as date, count(*),\n            sum(case when substring(report, '/IC([^/]*)/') is not null then 1\n                else 0 end) as icing_count,\n            sum(case when substring(report, '/TB([^/]*)/') is not null then 1\n                else 0 end) as turbulence_count,\n            sum(case when\n                substring(report, '/IC([^/]*)/') is not null and\n                substring(report, '/TB([^/]*)/') is not null then 1\n                else 0 end) as ice_and_turb_count\n            from pireps p{limiter} valid >= :sts and valid <= :ets\n            GROUP by date ORDER by date ASC\n            \"\"\",\n                limiter=limiter,\n            ),\n            conn,\n            params={\n                \"ident\": ctx[\"ident\"],\n                \"sts\": utc(sdate.year, sdate.month, sdate.day),\n                \"ets\": utc(edate.year, edate.month, edate.day, 23, 59),\n            },\n            index_col=\"date\",\n            parse_dates=\"date\",\n        )\n    if df.empty:\n        raise NoDataFound(\"Failed to find any PIREPs for query.\")\n    df = df.reindex(pd.date_range(sdate, edate)).fillna(0)\n    tt = \"ARTCC\" if len(ctx[\"ident\"]) == 3 else \"Alaska\"\n    title = f\"{PDICT[ctx['ident']]} {tt}\"\n    if ctx[\"ident\"] == \"_ALL\":\n        title = \"All US + Canada\"\n    fig = figure(\n        title=(\n            f\"{title} PIREP UTC Daily Counts \"\n            f\"{sdate:%-d %b %Y} - {edate:%-d %b %Y}\"\n        ),\n        subtitle=\"Based on unofficial IEM archives of parsed NWS PIREPs\",\n        apctx=ctx,\n    )\n    height = 0.18\n    axes = [\n        fig.add_axes((0.1, 0.1, 0.8, height)),\n        fig.add_axes((0.1, 0.3, 0.8, height)),\n        fig.add_axes((0.1, 0.5, 0.8, height)),\n        fig.add_axes((0.1, 0.7, 0.8, height)),\n    ]\n\n    ylabels = [\n        \"All PIREPs\",\n        \"Icing + Turbulence\",\n        \"Turbulence Only\",\n        \"Icing Only\",\n    ]\n    cols = [\n        \"count\",\n        \"ice_and_turb_count\",\n        \"turbulence_count\",\n        \"icing_count\",\n    ]\n    colors = [\"orange\", \"green\", \"red\", \"blue\"]\n    for i, (ax, col) in enumerate(zip(axes, cols, strict=False)):\n        axes[i].bar(\n            df.index.values,\n            df[col],\n            color=colors[i],\n        )\n        axes[i].plot(\n            df.index.values,\n            df[col].rolling(30).mean(),\n            color=\"brown\",\n            lw=2,\n            label=\"30 Day Trail Ave\" if i == 3 else \"\",\n        )\n        avgv = df[col].mean()\n        axes[i].axhline(avgv, lw=2, color=\"k\", label=\"Ave\" if i == 3 else \"\")\n        axes[i].annotate(\n            f\"Ave: {avgv:.1f}\",\n            (1, avgv),\n            xycoords=(\"axes fraction\", \"data\"),\n            ha=\"left\",\n        )\n        axes[i].set_ylabel(ylabels[i])\n        ax.grid(True)\n        if i > 0:\n            ax.set_xticklabels([])\n        ax.set_xlim(sdate, edate + timedelta(days=1))\n\n    axes[3].legend(loc=(0.8, 1), ncol=2)\n    axes[0].xaxis.set_major_formatter(mdates.DateFormatter(\"%-d %b\\n%Y\"))\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p237.py",
    "content": "\"\"\"\nThis autoplot is a bit of a catch-all for mapping event counts at a WFO or\nCWSU map unit.  These are events that do not have VTEC.\n\"\"\"\n\nfrom datetime import timezone\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.plot import MapPlot, pretty_bins\nfrom pyiem.util import utc\n\nPDICT = {\n    \"sps\": \"Special Weather Statements (SPS) with polygons\",\n    \"cwa\": \"CWSU Center Weather Advisories (CWA)\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    today = utc()\n    jan1 = today.replace(month=1, day=1)\n    desc[\"arguments\"] = [\n        dict(\n            type=\"datetime\",\n            name=\"sts\",\n            default=jan1.strftime(\"%Y/%m/%d 0000\"),\n            label=\"Start Timestamp (UTC):\",\n            min=\"1986/01/01 0000\",\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"ets\",\n            default=today.strftime(\"%Y/%m/%d %H%M\"),\n            label=\"End Timestamp (UTC):\",\n            min=\"1986/01/01 0000\",\n            max=today.strftime(\"%Y/%m/%d 2359\"),\n        ),\n        {\n            \"type\": \"select\",\n            \"name\": \"w\",\n            \"options\": PDICT,\n            \"default\": \"sps\",\n            \"label\": \"Which Event Type to Total\",\n        },\n        dict(type=\"cmap\", name=\"cmap\", default=\"Greens\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    sts = ctx[\"sts\"].replace(tzinfo=timezone.utc)\n    ets = ctx[\"ets\"].replace(tzinfo=timezone.utc)\n    params = {}\n    params[\"sts\"] = sts\n    params[\"ets\"] = ets\n\n    title = f\"{PDICT[ctx['w']]} Event Count\"\n    subtitle = (\n        f\"For issuance between {sts:%Y-%m-%d %H:%M} UTC \"\n        f\"to {ets:%Y-%m-%d %H:%M} UTC\"\n    )\n    sql = \"\"\"\n    SELECT wfo as datum, count(*) from sps where issue >= :sts and issue < :ets\n    and not ST_IsEmpty(geom) GROUP by datum\n    \"\"\"\n    if ctx[\"w\"] == \"cwa\":\n        sql = \"\"\"\n        SELECT center as datum, count(*) from cwas\n        WHERE issue >= :sts and issue < :ets GROUP by datum\n        \"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(sql),\n            conn,\n            params=params,\n            index_col=\"datum\",\n        )\n    mp = MapPlot(\n        sector=\"nws\",\n        title=title,\n        subtitle=subtitle,\n    )\n    func = mp.fill_cwsu if ctx[\"w\"] == \"cwa\" else mp.fill_cwas\n    bins = list(range(0, 101, 10))\n    if not df.empty:\n        bins = pretty_bins(0, df[\"count\"].max())\n    func(\n        df[\"count\"],\n        cmap=ctx[\"cmap\"],\n        ilabel=True,\n        lblformat=\"%.0f\",\n        bins=bins,\n        extend=\"neither\",\n    )\n    return mp.fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p238.py",
    "content": "\"\"\"\nThis app generates maps of yearly USDA NASS county yield estimates.  It is a\nbit of a work in progress yet, but will be added to as interest is shown!\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot, centered_bins, pretty_bins\nfrom pyiem.util import utc\n\nPDICT = {\n    \"corn\": \"Corn Grain\",\n    \"soybeans\": \"Soybeans\",\n}\nPDICT2 = {\"yes\": \"Label counties with values\", \"no\": \"Don't show values \"}\nPDICT3 = {\n    \"departure\": \"Yield Departure from previous 10 year average\",\n    \"value\": \"Yield\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"nass\": True}\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"year\",\n            \"min\": 1981,\n            \"default\": utc().year - 1,\n            \"name\": \"year\",\n            \"label\": \"Select year to display\",\n        },\n        {\n            \"type\": \"csector\",\n            \"name\": \"csector\",\n            \"default\": \"IA\",\n            \"label\": \"Select state/sector\",\n        },\n        {\n            \"type\": \"select\",\n            \"options\": PDICT,\n            \"default\": \"corn\",\n            \"name\": \"crop\",\n            \"label\": \"Select Crop\",\n        },\n        {\n            \"type\": \"select\",\n            \"options\": PDICT3,\n            \"default\": \"departure\",\n            \"name\": \"var\",\n            \"label\": \"Select variable to plot\",\n        },\n        {\n            \"type\": \"select\",\n            \"label\": \"Label Values?\",\n            \"default\": \"yes\",\n            \"options\": PDICT2,\n            \"name\": \"ilabel\",\n        },\n        dict(type=\"cmap\", name=\"cmap\", default=\"BrBG\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    year1 = max(ctx[\"year\"] - 10, 1981)\n    params = {\"y1\": year1, \"year\": ctx[\"year\"], \"crop\": ctx[\"crop\"].upper()}\n    params[\"util\"] = \"GRAIN\"\n    if ctx[\"crop\"] == \"soybeans\":\n        params[\"util\"] = \"ALL UTILIZATION PRACTICES\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            with data as (\n                select year, state_alpha || 'C' || county_ansi as ugc,\n                avg(num_value) as num_value from\n                nass_quickstats where county_ansi is not null and\n                statisticcat_desc = 'YIELD' and commodity_desc = :crop and\n                util_practice_desc = :util and year >= :y1 and year <= :year\n                GROUP by year, ugc),\n            agg as (\n                select ugc, count(*), avg(num_value) from data\n                WHERE year != :year group by ugc),\n            y2022 as (\n                select * from data where year = :year)\n            select a.ugc, a.avg, a.count, y.num_value,\n            y.num_value - a.avg as delta from agg a JOIN y2022 y on\n            (a.ugc = y.ugc) ORDER by delta\n            \"\"\"\n            ),\n            conn,\n            params=params,\n            index_col=\"ugc\",\n        )\n    if df.empty:\n        raise NoDataFound(\"Could not find any data, sorry.\")\n    title = \"Yield\"\n    col = \"num_value\"\n    bins = pretty_bins(df[col].min(), df[col].max())\n    if ctx[\"var\"] == \"departure\":\n        title = f\"Yield Departure from {year1}-{ctx['year'] - 1} Average\"\n        col = \"delta\"\n        bins = centered_bins(max(df[col].abs().max(), 50))\n    mp = MapPlot(\n        apctx=ctx,\n        title=f\"USDA NASS {ctx['crop'].capitalize()} {ctx['year']} {title}\",\n        stateborderwidth=3,\n        nocaption=True,\n    )\n    mp.fill_ugcs(\n        df[col].to_dict(),\n        bins=bins,\n        cmap=ctx[\"cmap\"],\n        units=\"bu/ac\",\n        ilabel=ctx[\"ilabel\"] == \"yes\",\n        lblformat=\"%.1f\",\n        labelbuffer=1,\n    )\n\n    return mp.fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p239.py",
    "content": "\"\"\"\nThis autoplot combines the USDA NASS county yield estimates with\nsummarized weather variables from a single weather station.  The\ncounty that the weather station resides in is used for the comparison.\n\n<p>If you select a statewide areal averaged weather station, you will get the\nstatewide yield estimates and not an individual county.  Unfortunately, there\nis nothing analogous for the climate/crop district weather values as those\nvalues are mostly missing within USDA NASS.\n\"\"\"\n\nimport matplotlib.colors as mpcolors\nimport pandas as pd\nfrom matplotlib.colorbar import ColorbarBase\nfrom matplotlib.ticker import MaxNLocator\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure, get_cmap, pretty_bins\nfrom pyiem.reference import state_names\nfrom sklearn.linear_model import LinearRegression\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"corn\": \"Corn Grain\",\n    \"soybeans\": \"Soybeans\",\n}\nPDICT2 = {\n    \"trail10\": \"Trailing 10 year average\",\n    \"linear\": \"Linear Regression\",\n    \"mean\": \"Long Term Mean\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"nass\": True}\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"select\",\n            \"options\": PDICT,\n            \"default\": \"corn\",\n            \"name\": \"crop\",\n            \"label\": \"Select Crop\",\n        },\n        ARG_STATION,\n        {\n            \"type\": \"sday\",\n            \"default\": \"0501\",\n            \"name\": \"sdate\",\n            \"label\": \"Select inclusive start day of the year\",\n        },\n        {\n            \"type\": \"sday\",\n            \"default\": \"0930\",\n            \"name\": \"edate\",\n            \"label\": \"Select inclusive end day of the year\",\n        },\n        {\n            \"type\": \"select\",\n            \"options\": PDICT2,\n            \"label\": \"From which metric to compute yield departure.\",\n            \"default\": \"trail10\",\n            \"name\": \"how\",\n        },\n        {\n            \"type\": \"cmap\",\n            \"name\": \"cmap\",\n            \"default\": \"RdYlGn\",\n            \"label\": \"Color Ramp:\",\n        },\n    ]\n    return desc\n\n\ndef get_obsdf(ctx):\n    \"\"\"Figure out our observations.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                SELECT year, sum(precip) as sum_precip,\n                sum(gddxx(50, 86, high, low)) as gdd5086,\n                sum(sdd86(high, low)) as sdd86,\n                avg(low) as avg_low,\n                sum(case when low >= 70 then 1 else 0 end) as days_low_a70,\n                sum(case when low < 60 then 1 else 0 end) as days_low_b60,\n                avg(merra_srad) as avg_merra_srad,\n                sum(case when precip > 0.005 then 1 else 0 end) as precip_days\n                from alldata\n                WHERE station = :station and sday >= :sts and\n                sday <= :ets GROUP by year ORDER by year ASC\n            \"\"\"\n            ),\n            conn,\n            index_col=\"year\",\n            params={\n                \"station\": ctx[\"station\"],\n                \"sts\": ctx[\"sdate\"].strftime(\"%m%d\"),\n                \"ets\": ctx[\"edate\"].strftime(\"%m%d\"),\n            },\n        )\n    return df\n\n\ndef get_countyname(ugc):\n    \"\"\"Get name\"\"\"\n    conn = get_dbconn(\"postgis\")\n    cursor = conn.cursor()\n    cursor.execute(\n        \"SELECT name from ugcs where ugc = %s and end_ts is null\", (ugc,)\n    )\n    if cursor.rowcount == 0:\n        return f\"(({ugc}))\"\n    return cursor.fetchone()[0]\n\n\ndef bling(df, ax, col, dcol):\n    \"\"\"Bling.\"\"\"\n    for marker, gdf in df.groupby(\"symbol\"):\n        label = f\"{gdf.index.values[0]:.0f} [{gdf[dcol].values[0]:.1f}]\"\n        ax.scatter(\n            gdf[col].values,\n            gdf[dcol].values,\n            facecolor=gdf[\"color\"].values,\n            marker=marker,\n            edgecolor=\"None\" if len(gdf.index) > 1 else \"k\",\n            zorder=5 if marker != \"o\" else 3,\n            label=None if len(gdf.index) > 1 else label,\n        )\n    ax.grid(True)\n\n\ndef get_nass(ctx):\n    \"\"\"Get NASS.\"\"\"\n    county = ctx[\"_nt\"].sts[ctx[\"station\"]][\"ugc_county\"]\n    ccol = \"state_alpha || 'C' || county_ansi\"\n    agg_level_desc = \"COUNTY\"\n    if ctx[\"station\"].endswith(\"0000\"):\n        ccol = \"state_alpha\"\n        county = ctx[\"station\"][:2]\n        agg_level_desc = \"STATE\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        # sometimes we have dups :/\n        ut = {\"corn\": \"GRAIN\", \"soybeans\": \"ALL UTILIZATION PRACTICES\"}[\n            ctx[\"crop\"]\n        ]\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                select year, avg(num_value) as num_value from\n                nass_quickstats where {ccol} = :c\n                and statisticcat_desc = 'YIELD' and commodity_desc = :cr and\n                util_practice_desc = :ut and\n                agg_level_desc = :agl GROUP by year ORDER by year ASC\n            \"\"\",\n                ccol=ccol,\n            ),\n            conn,\n            params={\n                \"c\": county,\n                \"cr\": ctx[\"crop\"].upper(),\n                \"ut\": ut,\n                \"agl\": agg_level_desc,\n            },\n            index_col=\"year\",\n        )\n    if df.empty:\n        raise NoDataFound(\"Could not find any data, sorry.\")\n    return df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    county = ctx[\"_nt\"].sts[ctx[\"station\"]][\"ugc_county\"]\n    countyname = get_countyname(county)\n    if ctx[\"station\"].endswith(\"0000\"):\n        county = ctx[\"station\"][:2]\n        countyname = state_names[county]\n    obsdf = get_obsdf(ctx)\n    df = get_nass(ctx)\n\n    xaxis = df.index.values\n\n    df[\"trail10\"] = df[\"num_value\"].rolling(10, min_periods=1).mean()\n    linear_regressor = LinearRegression()\n    linear_regressor.fit(\n        xaxis.reshape(-1, 1), df[\"num_value\"].values.reshape(-1, 1)\n    )\n    df[\"linear\"] = linear_regressor.predict(xaxis.reshape(-1, 1))\n    df[\"mean\"] = df[\"num_value\"].mean()\n    for col in PDICT2:\n        df[f\"{col}_departure\"] = df[\"num_value\"] - df[col]\n    for col in obsdf.columns:\n        df[col] = obsdf[col]\n\n    dcol = f\"{ctx['how']}_departure\"\n    deltas = df[dcol].to_numpy()\n    extent = df[dcol].abs().max()\n    bins = pretty_bins(0 - extent, extent)\n    cmap = get_cmap(ctx[\"cmap\"])\n    norm = mpcolors.BoundaryNorm(bins, cmap.N)\n    df[\"color\"] = list(cmap(norm(deltas)))\n    colors = df[\"color\"].values\n    fig = figure(\n        title=f\"({ctx['sdate']:%-d %b}-{ctx['edate']:%-d %b}) {ctx['_sname']}\",\n        subtitle=(\n            f\"USDA NASS {PDICT[ctx['crop']]} \"\n            f\"Yield Estimates for {countyname} ({county}), \"\n            f\"Departures Against Trendline: {PDICT2[ctx['how']]}\"\n        ),\n    )\n    mainax_width = 0.4\n    mainax_height = 0.3\n    ax = fig.add_axes((0.06, 0.55, mainax_width, mainax_height))\n    ax.bar(xaxis, df[\"num_value\"].values, color=colors)\n    ax.plot(\n        xaxis, df[\"trail10\"].values, lw=2, color=\"k\", label=\"10y Trailing Ave\"\n    )\n    ax.plot(xaxis, df[\"mean\"].values, lw=2, color=\"b\", label=\"Mean\")\n    ax.plot(xaxis, df[\"linear\"].values, lw=2, color=\"r\", label=\"Linear\")\n    ax.set_ylabel(\"Yield [bu/ac]\")\n    ax.legend(ncol=3, loc=(0, 1))\n    ax.grid(True)\n\n    ax = fig.add_axes((0.06, 0.2, mainax_width, mainax_height))\n    ax.bar(xaxis, deltas, color=colors)\n    ax.set_ylabel(\"Departure [bu/ac]\")\n    ax.grid(True)\n\n    df[\"symbol\"] = \"o\"\n    sortdf = df.sort_values(dcol, ascending=True)\n    df.at[sortdf.index.values[0], \"symbol\"] = \"*\"\n    df.at[sortdf.index.values[1], \"symbol\"] = \">\"\n    df.at[sortdf.index.values[2], \"symbol\"] = \"<\"\n    df.at[sortdf.index.values[-1], \"symbol\"] = \"s\"\n    df.at[sortdf.index.values[-2], \"symbol\"] = \"v\"\n    df.at[sortdf.index.values[-3], \"symbol\"] = \"^\"\n\n    # Wx Comparisons\n    anchorx = 0.54\n    anchory = 0.08\n    width = 0.16\n    height = 0.12\n    pad = 0.05\n    xpad = 0.04\n    ax = fig.add_axes((anchorx, anchory, width, height))\n    bling(df, ax, \"sum_precip\", dcol)\n    ax.axvline(df[\"sum_precip\"].mean())\n    ax.set_ylabel(\"Departure [bu/ac]\")\n    ax.set_xlabel(\"Precipitation [inch]\")\n    ax.legend(ncol=3, loc=(-2.75, 0))\n    fig.text(0.46, 0.06, \"Legend for Top 3/Bottom 3 Years ->\", ha=\"right\")\n\n    ax = fig.add_axes((anchorx, anchory + height + 2 * pad, width, height))\n    bling(df, ax, \"gdd5086\", dcol)\n    ax.axvline(df[\"gdd5086\"].mean())\n    ax.set_ylabel(\"Departure [bu/ac]\")\n    ax.set_xlabel(\"GDD (50, 86) [F]\")\n\n    ax = fig.add_axes((anchorx + width + xpad, anchory, width, height))\n    bling(df, ax, \"sdd86\", dcol)\n    ax.axvline(df[\"sdd86\"].mean())\n    ax.set_xlabel(\"SDD (86) [F]\")\n\n    ax = fig.add_axes(\n        (anchorx + width + xpad, anchory + height + 2 * pad, width, height)\n    )\n    bling(df, ax, \"avg_low\", dcol)\n    ax.axvline(df[\"avg_low\"].mean())\n    ax.set_xlabel(\"Avg Daily Low [F]\")\n\n    ax = fig.add_axes((anchorx, anchory + 2 * height + 4 * pad, width, height))\n    bling(df, ax, \"days_low_a70\", dcol)\n    ax.axvline(df[\"days_low_a70\"].mean())\n    ax.set_xlabel(\"Days Low >= 70°F\")\n    ax.set_ylabel(\"Departure [bu/ac]\")\n\n    ax = fig.add_axes(\n        (anchorx + width + xpad, anchory + 2 * height + 4 * pad, width, height)\n    )\n    bling(df, ax, \"days_low_b60\", dcol)\n    ax.axvline(df[\"days_low_b60\"].mean())\n    ax.set_xlabel(\"Days Low < 60°F\")\n\n    ax = fig.add_axes((anchorx, anchory + 3 * height + 6 * pad, width, height))\n    bling(df, ax, \"avg_merra_srad\", dcol)\n    ax.axvline(df[\"avg_merra_srad\"].mean())\n    ax.set_xlabel(r\"Merra Solar Rad MJ$d^{-1}$\")\n    ax.set_ylabel(\"Departure [bu/ac]\")\n\n    ax = fig.add_axes(\n        (anchorx + width + xpad, anchory + 3 * height + 6 * pad, width, height)\n    )\n    bling(df, ax, \"precip_days\", dcol)\n    ax.axvline(df[\"precip_days\"].mean())\n    ax.set_xlabel(r\"Days Measurable Precip\")\n    ax.xaxis.set_major_locator(MaxNLocator(5, integer=True))\n\n    cax = fig.add_axes(\n        [0.93, 0.1, 0.01, 0.73], frameon=False, yticks=[], xticks=[]\n    )\n    cb = ColorbarBase(cax, norm=norm, cmap=cmap)\n    cb.set_ticks(bins)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p240.py",
    "content": "\"\"\"\nThis autoplot combines growing degree day observations along with a near\nterm forecast from the deterministic GFS and NWS NDFD models.\n\n<p>The primary source of observations for this plot is from the NWS COOP\nnetwork, but most of those observations are approximately 7 AM to 7 AM totals\nwhereas the forecast data is approximately a calendar date.  For sites that\nreport morning data, the observations are backed up one day to better align\nwith the forecast.  This then creates a problem when running the app in the\nlate afternoon/evening when the first forecast day is tomorrow and there\nis no observation for today yet. This is generally a thorny issue and\nwhy we can't have nice things.\n\n<p>This app uses <a href=\"/plotting/auto/?q=9\">Autoplot #9</a> to generate the\nGDD Climatology.\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport matplotlib.dates as mdates\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\nfrom iemweb.autoplot.scripts.p9 import get_df\nfrom iemweb.json.climodat_dd import run as climodat_dd_run\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        {\n            \"type\": \"date\",\n            \"default\": f\"{date.today() - timedelta(days=7):%Y/%m/%d}\",\n            \"name\": \"sdate\",\n            \"label\": \"Select start date to accumulate GDDs\",\n        },\n    ]\n    return desc\n\n\ndef get_obsdf(ctx):\n    \"\"\"Figure out our observations.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                SELECT day, gddxx(50, 86, high, low) as gdd, temp_hour\n                from alldata\n                WHERE station = :station and day >= :sts ORDER by day ASC\n            \"\"\"\n            ),\n            conn,\n            index_col=\"day\",\n            parse_dates=[\"day\"],\n            params={\n                \"station\": ctx[\"station\"],\n                \"sts\": ctx[\"sdate\"],\n            },\n        )\n    return df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    df = get_obsdf(ctx)\n    # Account for morning obs\n    is_morning = False\n    if not df.empty:\n        cnt = len(df[(df[\"temp_hour\"] > 1) & (df[\"temp_hour\"] < 12)].index)\n        if cnt / len(df.index) > 0.5:\n            is_morning = True\n    # Sub-optimal need to actually have data.\n    edate = ctx[\"sdate\"] + timedelta(days=7)\n    data = climodat_dd_run(\n        ctx[\"station\"],\n        ctx[\"sdate\"],\n        edate,\n        50,\n        86,\n    )\n    if \"gfs\" not in data or \"ndfd\" not in data:\n        raise NoDataFound(\"No GFS or NDFD data found!\")\n    gfsdf = pd.DataFrame(data[\"gfs\"])\n    gfsdf[\"date\"] = pd.to_datetime(gfsdf[\"date\"])\n    if is_morning:\n        if not df.empty and df.index.values[-1] == gfsdf[\"date\"].values[0]:\n            df[\"gdd\"] = df[\"gdd\"].shift(-1)\n        else:\n            is_morning = False\n    gfsdf = gfsdf.set_index(\"date\")\n    nwsdf = pd.DataFrame(data[\"ndfd\"])\n    nwsdf[\"date\"] = pd.to_datetime(nwsdf[\"date\"])\n    nwsdf = nwsdf.set_index(\"date\")\n    df = df.join(nwsdf, how=\"outer\", rsuffix=\"ndfd\")\n    df = df.join(gfsdf, how=\"outer\", rsuffix=\"gfs\")\n    if df.empty:\n        raise NoDataFound(\"No data found!\")\n    df[\"sday\"] = df.index.strftime(\"%m%d\")\n\n    climodf = get_df(\n        {\n            \"station\": ctx[\"station\"],\n            \"network\": f\"{ctx['station'][:2]}CLIMATE\",\n            \"year\": 2023,\n            \"sday\": df.index.to_pydatetime()[0],\n            \"eday\": df.index.to_pydatetime()[-1],\n            \"var\": \"gdd\",\n            \"base\": 50,\n            \"ceiling\": 86,\n            \"w\": \"ytd\",\n        }\n    )\n    df = df.merge(climodf, left_on=\"sday\", right_index=True)\n\n    xaxis = df.index.values\n\n    fig = figure(\n        title=(\n            f\"({df.index[0]:%-d %b %Y}-{df.index[-1]:%-d %b %Y}) \"\n            f\"{ctx['_sname']}:: Growing Degree Days (50/86)\"\n        ),\n        subtitle=(\n            \"Based on Observations, GFS Operational Forecast, \"\n            \"NWS NDFD Forecast\"\n        ),\n        apctx=ctx,\n    )\n    ax = fig.add_axes((0.06, 0.1, 0.85, 0.75))\n    ax.bar(xaxis, df[\"gdd\"].values, color=\"g\", label=\"Observed\")\n    ax.bar(xaxis, df[\"gddndfd\"].values, color=\"r\", label=\"NWS NDFD\", width=0.4)\n    ax.bar(\n        xaxis,\n        df[\"gddgfs\"].values,\n        color=\"b\",\n        label=\"GFS\",\n        width=0.4,\n        align=\"edge\",\n    )\n    avgval = df[\"mean\"] - df[\"mean\"].shift(1)\n    avgval.iloc[0] = df[\"mean\"].iloc[0]\n    ax.bar(\n        xaxis,\n        [0.1] * len(df.index),\n        bottom=(avgval - 0.1),\n        color=\"k\",\n        label=\"Climo\",\n    )\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%-d %b\"))\n    ax.grid(True)\n    ax.set_ylabel(\"Daily GDDs (bars)\")\n    ax.legend(loc=(0, 1.01), ncol=5)\n\n    ax2 = ax.twinx()\n    ax2.plot(\n        xaxis,\n        df[\"gddgfs\"].combine_first(df[\"gdd\"]).cumsum(),\n        color=\"white\",\n        zorder=4,\n        lw=4,\n    )\n    ax2.plot(\n        xaxis,\n        df[\"gddgfs\"].combine_first(df[\"gdd\"]).cumsum(),\n        color=\"b\",\n        zorder=5,\n        lw=2,\n    )\n\n    ax2.plot(\n        xaxis,\n        df[\"gddndfd\"].combine_first(df[\"gdd\"]).cumsum(),\n        color=\"white\",\n        zorder=4,\n        lw=4,\n    )\n    ax2.plot(\n        xaxis,\n        df[\"gddndfd\"].combine_first(df[\"gdd\"]).cumsum(),\n        color=\"r\",\n        zorder=5,\n        lw=2,\n    )\n    ax2.plot(xaxis, df[\"gdd\"].cumsum(), label=\"Obs\", color=\"g\", zorder=5)\n    ax2.plot(xaxis, df[\"mean\"].values, color=\"k\")\n    ax2.set_ylabel(\"Accumulated GDDs (lines)\")\n    if is_morning:\n        ax.set_xlabel(\"* Observations shifted one day due to morning reports\")\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p241.py",
    "content": "\"\"\"\nNCEP's Real-Time Mesoscale Analysis (RTMA) provides a fine scale hourly or in\nthe case of the RTMA Rapid-Update (RTMA-RU), 15 minute interval analysis of\na number of atmospheric variables.  The IEM archives a few grids for various\npurposes and this app allows the generation of a plot with either the max\nor min air temperature over some period of your choice.\n\n<p><strong>Caution</strong>: The max/min values are based on hourly or 15\nminute interval samples, so these will not fully capture the actual high nor\nlow temperature.  When the 15 minute data is available, it should certainly\ndo a better job than the hourly.\n\"\"\"\n\nfrom datetime import timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport pandas as pd\nimport pygrib\nimport pyproj\nfrom affine import Affine\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot, pretty_bins\nfrom pyiem.reference import LATLON\nfrom pyiem.util import (\n    LOG,\n    archive_fetch,\n    convert_value,\n    utc,\n)\n\nPDICT = {\n    \"max\": \"Maximum\",\n    \"min\": \"Minimum\",\n    \"delta\": \"Change\",\n}\nPDICT2 = {\n    \"user\": \"User Defined\",\n    \"fz\": \"Freezing Temps Mode\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__}\n    sts = utc() - timedelta(hours=6)  # Save some CI time\n    ets = utc() - timedelta(hours=2)\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"datetime\",\n            \"name\": \"sts\",\n            \"default\": sts.strftime(\"%Y/%m/%d %H00\"),\n            \"label\": \"Start Timestamp (UTC):\",\n            \"min\": \"1986/01/01 0000\",\n        },\n        {\n            \"type\": \"datetime\",\n            \"name\": \"ets\",\n            \"default\": ets.strftime(\"%Y/%m/%d %H00\"),\n            \"label\": (\n                \"End Timestamp [inclusive] (UTC), \"\n                \"interval must be less than 4 days\"\n            ),\n            \"min\": \"1986/01/01 0000\",\n        },\n        {\n            \"type\": \"select\",\n            \"options\": PDICT,\n            \"default\": \"min\",\n            \"name\": \"w\",\n            \"label\": \"Which statistic to compute\",\n        },\n        {\n            \"type\": \"csector\",\n            \"name\": \"csector\",\n            \"default\": \"IA\",\n            \"label\": \"Select state/sector\",\n        },\n        {\n            \"type\": \"select\",\n            \"options\": PDICT2,\n            \"default\": \"user\",\n            \"label\": \"Plotting mode (user defined color-ramp or freezing)\",\n            \"name\": \"mode\",\n        },\n        {\n            \"type\": \"cmap\",\n            \"name\": \"cmap\",\n            \"default\": \"gnuplot2\",\n            \"label\": \"Color Ramp:\",\n        },\n    ]\n    return desc\n\n\ndef add_gridnav(res: dict, grb: pygrib.gribmessage):\n    \"\"\"Add what we know.\"\"\"\n    if res[\"affine\"] is not None:\n        return\n    lat1 = grb[\"latitudeOfFirstGridPointInDegrees\"]\n    lon1 = grb[\"longitudeOfFirstGridPointInDegrees\"]\n    res[\"crs\"] = pyproj.Proj(grb.projparams)\n    llx, lly = res[\"crs\"](lon1, lat1)\n    res[\"affine\"] = Affine(\n        grb[\"DxInMetres\"],\n        0.0,\n        llx - grb[\"DxInMetres\"] / 2.0,\n        0.0,\n        -grb[\"DyInMetres\"],\n        lly + grb[\"DyInMetres\"] * grb[\"Ny\"] + grb[\"DyInMetres\"] / 2.0,\n    )\n\n\ndef get_data(ctx):\n    \"\"\"Do the computation!\"\"\"\n    if ctx[\"csector\"] in [\"AK\", \"HI\", \"PR\"]:\n        raise NoDataFound(\"Sector not available for this plot.\")\n    sts = ctx[\"sts\"]\n    ets = ctx[\"ets\"]\n    ppath = (\n        f\"{sts:%Y/%m/%d}/model/rtma/{sts:%H}/\"\n        f\"rtma2p5_ru.t{sts:%H%M}z.2dvaranl_ndfd.grb2\"\n    )\n    with archive_fetch(ppath) as testfn:\n        use_ru = testfn is not None\n    lons = None\n    lats = None\n    vals = None\n    func = np.minimum if ctx[\"w\"] == \"min\" else np.maximum\n    missing_count = 0\n    total = 0\n    mindt = None\n    maxdt = None\n    res = {\n        \"affine\": None,\n        \"crs\": None,\n    }\n    if ctx[\"w\"] == \"delta\":\n        mydir = f\"{sts:%Y/%m/%d}/model/rtma/{sts:%H}/\"\n        ppath = mydir + (\n            f\"rtma2p5_ru.t{sts:%H%M}z.2dvaranl_ndfd.grb2\"\n            if use_ru\n            else f\"rtma.t{sts:%H}z.awp2p5f000.grib2\"\n        )\n        with archive_fetch(ppath) as fn:\n            if fn is None:\n                raise NoDataFound(\"Failed to find RTMA for start time.\")\n            with pygrib.open(fn) as grbs:\n                grb = grbs.select(shortName=\"2t\")[0]\n                add_gridnav(res, grb)\n                lats, lons = grb.latlons()\n                first = grb.values\n        mydir = f\"{ets:%Y/%m/%d}/model/rtma/{ets:%H}/\"\n        ppath = mydir + (\n            f\"rtma2p5_ru.t{ets:%H%M}z.2dvaranl_ndfd.grb2\"\n            if use_ru\n            else f\"rtma.t{ets:%H}z.awp2p5f000.grib2\"\n        )\n        with archive_fetch(ppath) as fn:\n            if fn is None:\n                raise NoDataFound(\"Failed to find RTMA for start time.\")\n            with pygrib.open(fn) as grbs:\n                grb = grbs.select(shortName=\"2t\")[0]\n                second = grb.values\n        return {\n            \"affine\": res[\"affine\"],\n            \"crs\": res[\"crs\"],\n            \"mindt\": sts,\n            \"maxdt\": ets,\n            \"missing_count\": 0,\n            \"total\": 2,\n            \"use_ru\": use_ru,\n            \"lons\": lons,\n            \"lats\": lats,\n            \"vals\": convert_value(second, \"degK\", \"degF\")\n            - convert_value(first, \"degK\", \"degF\"),\n        }\n\n    for dt in pd.date_range(sts, ets, freq=\"900s\" if use_ru else \"1h\"):\n        total += 1\n        mydir = f\"{dt:%Y/%m/%d}/model/rtma/{dt:%H}/\"\n        ppath = mydir + (\n            f\"rtma2p5_ru.t{dt:%H%M}z.2dvaranl_ndfd.grb2\"\n            if use_ru\n            else f\"rtma.t{dt:%H}z.awp2p5f000.grib2\"\n        )\n        with archive_fetch(ppath) as fn:\n            if fn is None:\n                missing_count += 1\n                continue\n            try:\n                with pygrib.open(fn) as grbs:\n                    grb = grbs.select(shortName=\"2t\")[0]\n                    add_gridnav(res, grb)\n                    if lons is None:\n                        lats, lons = grb.latlons()\n                        vals = grb.values\n                    vals = func(vals, grb.values)  # type: ignore\n                if mindt is None:\n                    mindt = dt\n                maxdt = dt\n            except Exception as exp:\n                LOG.exception(exp)\n                continue\n    if vals is None:\n        raise NoDataFound(\"Failed to find any RTMA data, sorry.\")\n    return {\n        \"affine\": res[\"affine\"],\n        \"crs\": res[\"crs\"],\n        \"mindt\": mindt,\n        \"maxdt\": maxdt,\n        \"missing_count\": missing_count,\n        \"total\": total,\n        \"use_ru\": use_ru,\n        \"lons\": lons,\n        \"lats\": lats,\n        \"vals\": convert_value(vals, \"degK\", \"degF\"),\n    }\n\n\ndef rectify_dates(ctx: dict):\n    \"\"\"Work out some quirks.\"\"\"\n    ctx[\"sts\"] = ctx[\"sts\"].replace(tzinfo=timezone.utc)\n    ctx[\"ets\"] = ctx[\"ets\"].replace(tzinfo=timezone.utc)\n    if (ctx[\"ets\"] - ctx[\"sts\"]) > timedelta(days=4):\n        ctx[\"ets\"] = ctx[\"sts\"] + timedelta(days=4)\n\n\ndef get_raster(ctx: dict):\n    \"\"\"Generate what we need for a raster.\"\"\"\n    rectify_dates(ctx)\n    res = get_data(ctx)\n    return np.flipud(res[\"vals\"]), res[\"affine\"], res[\"crs\"].crs\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    rectify_dates(ctx)\n    res = get_data(ctx)\n    localmindt = res[\"mindt\"].astimezone(ZoneInfo(\"America/Chicago\"))\n    localmaxdt = res[\"maxdt\"].astimezone(ZoneInfo(\"America/Chicago\"))\n    subtitle = (\n        f\"{res['total'] - res['missing_count']}/{res['total']} grids \"\n        f\"found between {localmindt:%Y-%m-%d %-I:%M %p} and \"\n        f\"{localmaxdt:%Y-%m-%d %-I:%M %p}\"\n    )\n    if ctx[\"w\"] == \"delta\":\n        subtitle = (\n            f\"Change in Temperature from {localmindt:%Y-%m-%d %-I:%M %p} to \"\n            f\"{localmaxdt:%Y-%m-%d %-I:%M %p}\"\n        )\n    mp = MapPlot(\n        apctx=ctx,\n        title=(\n            f\"NCEP RTMA{'-RU' if res['use_ru'] else ''} {PDICT[ctx['w']]} \"\n            \"2m Air Temperature\"\n        ),\n        subtitle=subtitle,\n        stateborderwidth=3,\n        nocaption=True,\n    )\n    if ctx[\"mode\"] == \"fz\" and ctx[\"w\"] != \"delta\":\n        # https://colorbrewer2.org/#type=diverging&scheme=RdYlBu&n=8\n        # <26, 26-28, 28-30, 30-32, 32-34, 34-36, >36\n        colors = (\n            \"#f46d43 #fdae61 #fee090 #e0f3f8 #abd9e9 #74add1 #4575b4\"\n        ).split()[::-1]\n        cmap = mpcolors.ListedColormap(colors[1:-1])\n        cmap.set_under(colors[0])\n        cmap.set_over(colors[-1])\n        bins = np.arange(26, 37, 2)\n    else:\n        # xmin, xmax, ymin, ymax\n        bnds = mp.panels[0].get_extent(crs=LATLON)\n        dist = np.sqrt(\n            (res[\"lons\"] - bnds[0]) ** 2 + (res[\"lats\"] - bnds[2]) ** 2\n        )\n        (y1, x1) = np.unravel_index(dist.argmin(), dist.shape)  # skipcq\n        dist = np.sqrt(\n            (res[\"lons\"] - bnds[1]) ** 2 + (res[\"lats\"] - bnds[3]) ** 2\n        )\n        (y2, x2) = np.unravel_index(dist.argmin(), dist.shape)  # skipcq\n        domain = res[\"vals\"][y1:y2, x1:x2].filled(np.nan)\n        ptile = np.nanpercentile(domain, [5, 95])\n        bins = pretty_bins(ptile[0], ptile[1])\n        cmap = ctx[\"cmap\"]\n    mp.pcolormesh(\n        res[\"lons\"],\n        res[\"lats\"],\n        res[\"vals\"],\n        bins,\n        cmap=cmap,\n        clip_on=False,\n        units=\"°F\",\n        spacing=\"proportional\",\n        extend=\"both\",\n    )\n    if len(ctx[\"csector\"]) == 2:\n        mp.drawcounties()\n\n    return mp.fig\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p242.py",
    "content": "\"\"\"\nPresently, this autoplot is a backend for generating Local Storm Report\nsocial media graphics.  You have to know the associated NWS text product\nid for it to be of any usage. Perhaps this autoplot will become more useful\nin the future for interactive use!\n\"\"\"\n\nfrom textwrap import wrap\nfrom zoneinfo import ZoneInfo\n\nimport geopandas as gpd\nimport matplotlib.patheffects as PathEffects\nfrom matplotlib.image import imread\nfrom matplotlib.offsetbox import AnnotationBbox, OffsetImage\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot import MapPlot\nfrom pyiem.plot.geoplot import MAIN_AX_BOUNDS\nfrom pyiem.reference import Z_OVERLAY2\n\nICONS = {\n    \"0\": \"tropicalstorm.gif\",\n    \"1\": \"flood.png\",\n    \"2\": \"other.png\",\n    \"3\": \"other.png\",\n    \"4\": \"other.png\",\n    \"5\": \"ice.png\",\n    \"6\": \"cold.png\",\n    \"7\": \"cold.png\",\n    \"8\": \"fire.png\",\n    \"9\": \"other.png\",\n    \"a\": \"other.png\",\n    \"A\": \"wind.png\",\n    \"B\": \"downburst.png\",\n    \"C\": \"funnelcloud.png\",\n    \"D\": \"winddamage.png\",\n    \"E\": \"flood.png\",\n    \"F\": \"flood.png\",\n    \"v\": \"flood.png\",\n    \"G\": \"wind.png\",\n    \"h\": \"hail.png\",\n    \"H\": \"hail.png\",\n    \"I\": \"hot.png\",\n    \"J\": \"fog.png\",\n    \"K\": \"lightning.gif\",\n    \"L\": \"lightning.gif\",\n    \"M\": \"wind.png\",\n    \"N\": \"wind.png\",\n    \"O\": \"wind.png\",\n    \"P\": \"other.png\",\n    \"Q\": \"tropicalstorm.gif\",\n    \"q\": \"downburst.png\",\n    \"s\": \"sleet.png\",\n    \"T\": \"tornado.png\",\n    \"U\": \"fire.png\",\n    \"V\": \"avalanche.gif\",\n    \"W\": \"waterspout.png\",\n    \"X\": \"funnelcloud.png\",\n    \"x\": \"debrisflow.png\",\n    \"Z\": \"blizzard.png\",\n}\nPE = [PathEffects.withStroke(linewidth=5, foreground=\"white\")]\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"text\",\n            \"default\": \"202305080216-KDMX-NWUS53-LSRDMX\",\n            \"name\": \"pid\",\n            \"label\": \"Enter NWS Text Product Identifier\",\n        },\n    ]\n    return desc\n\n\ndef get_image(filename):\n    \"\"\"Get an image\"\"\"\n    fn = f\"/opt/iem/htdocs/lsr/icons/{filename}\"\n    return OffsetImage(imread(fn, format=filename[-3:]), zoom=0.7)\n\n\ndef overlay_info(fig, df: gpd.GeoDataFrame):\n    \"\"\"Add bling.\"\"\"\n    if len(df.index) > 1:\n        msg = \"\"\n        lines = 0\n        xpos = 0.5\n        for typetext, gdf in df.groupby(\"typetext\"):\n            msg += f\"_____ {typetext} _____\\n\"\n            for _, row in gdf.iterrows():\n                if lines > 30:\n                    fig.text(\n                        xpos,\n                        0.9,\n                        msg,\n                        bbox=dict(fc=\"white\", ec=\"k\"),\n                        va=\"top\",\n                        fontsize=10,\n                    )\n                    msg = f\"_____ {typetext} _____\\n\"\n                    xpos += 0.2\n                    lines = 1\n                msg += f\"{row['city']} {row['magnitude']}\\n\"\n                lines += 1\n        fig.text(\n            xpos,\n            0.9,\n            msg,\n            bbox=dict(fc=\"white\", ec=\"k\"),\n            va=\"top\",\n            fontsize=10,\n        )\n        return\n    row = df.iloc[0]\n    remark = \"\"\n    if row[\"remark\"] is not None:\n        remark = \"\\n\".join(wrap(row[\"remark\"].strip(), width=50))\n    remark = remark.replace(\"$\", \"--\")\n    msg = (\n        f\"Valid: {row['utc_valid']:%Y-%m-%d %H:%M} UTC\\n\"\n        f\"Local Valid: {row['local_valid']:%Y-%m-%d %-I:%M %p}\\n\"\n        f\"Location: {row['city']} [{row['county']}], {row['state']}\\n\"\n        f\"Source: {row['source']}\\n\"\n        f\"Event: {row['typetext']} {row['magnitude']} {row['unit']}\\n\"\n        f\"Remark: {remark}\"\n    )\n    fig.text(\n        0.5,\n        0.85,\n        msg,\n        bbox=dict(fc=\"white\", ec=\"k\"),\n        va=\"top\",\n    )\n\n\ndef get_df(table, product_id):\n    \"\"\"Find me data.\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = gpd.read_postgis(\n            sql_helper(\n                \"\"\"\n            SELECT *, null as local_valid,\n            valid at time zone 'UTC' as utc_valid\n            from {table} WHERE (product_id = :pid or product_id_summary = :pid)\n            ORDER by magnitude DESC NULLS LAST\n            \"\"\",\n                table=table,\n            ),\n            conn,\n            params={\"pid\": product_id},\n            geom_col=\"geom\",\n            parse_dates=[\n                \"utc_valid\",\n            ],\n        )  # type: ignore\n    if not df.empty:\n        df[\"utc_valid\"] = df[\"utc_valid\"].dt.tz_localize(ZoneInfo(\"UTC\"))\n        nt = NetworkTable(\"WFO\")\n        wfo = product_id[14:17]\n        if wfo not in nt.sts:\n            wfo = f\"P{wfo}\"\n        if wfo in nt.sts:\n            tzinfo = ZoneInfo(nt.sts[wfo][\"tzname\"])\n        else:\n            tzinfo = ZoneInfo(\"America/Chicago\")\n        df[\"local_valid\"] = df[\"utc_valid\"].dt.tz_convert(tzinfo)\n    return df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    product_id = ctx[\"pid\"]\n    if len(product_id) < 28:  # arb\n        raise NoDataFound(\"Invalid product identifier\")\n    # Can we find data?\n    df = get_df(f\"lsrs_{product_id[:4]}\", product_id)\n    if df.empty:\n        df = get_df(\"lsrs\", product_id)\n    if df.empty:\n        raise NoDataFound(\"Failed to find LSRs by given product identifier!\")\n    df[\"magnitude\"] = df[\"magnitude\"].fillna(\"\")\n    if len(df.index) == 1:\n        title = f\"LSR: {df.at[0, 'city']} {df.at[0, 'typetext']}\"\n        timeinfo = f\"@ {df.at[0, 'local_valid']:%-d %b %Y %-I:%M %p}\"\n        pos = MAIN_AX_BOUNDS\n    else:\n        title = \"Local Storm Reports\"\n        mindt = df[\"local_valid\"].min()\n        maxdt = df[\"local_valid\"].max()\n        d1 = f\"{mindt:%-d %b %Y %-I:%M %p}\"\n        d2 = f\"{maxdt:%-d %b %Y %-I:%M %p}\"\n        if mindt.date() == maxdt.date():\n            d2 = f\"{maxdt:%-I:%M %p}\"\n        timeinfo = f\"between {d1} and {d2}\"\n        pos = [0.01, 0.05, 0.5, 0.85]\n\n    bounds = df[\"geom\"].total_bounds\n    minext = min(bounds[3] - bounds[1], bounds[2] - bounds[0])\n    buffer = 0.2 if minext < 0.2 else 0\n\n    # Bias to the east, for overlay\n    mp = MapPlot(\n        title=f\"NWS {product_id[14:17]} {title} {timeinfo}\",\n        subtitle=f\"LSRs found in product_id: {product_id}\",\n        apctx=ctx,\n        sector=\"spherical_mercator\",\n        west=bounds[0] - buffer,\n        south=bounds[1] - buffer,\n        east=bounds[2] + buffer,\n        north=bounds[3] + buffer,\n        nocaption=True,\n        axes_position=pos,\n    )\n    for typ, gdf in df.to_crs(mp.panels[0].crs).groupby(\"type\"):\n        if typ in [\"R\", \"S\"]:\n            for _, row in gdf.iloc[::-1].iterrows():\n                mp.panels[0].ax.text(\n                    row[\"geom\"].x,\n                    row[\"geom\"].y,\n                    row[\"magnitude\"],\n                    color=\"k\",\n                    zorder=Z_OVERLAY2 + 1,\n                ).set_path_effects(PE)\n            continue\n        pngfn = ICONS.get(typ)\n        if pngfn is None:\n            mp.panels[0].ax.scatter(\n                gdf[\"geom\"].x,\n                gdf[\"geom\"].y,\n                marker=\"o\",\n                s=300,\n                zorder=Z_OVERLAY2,\n            )\n            continue\n        img = get_image(pngfn)\n        for _, row in gdf.iterrows():\n            ab = AnnotationBbox(\n                img,\n                (row[\"geom\"].x, row[\"geom\"].y),\n                frameon=False,\n                zorder=Z_OVERLAY2,\n            )\n            mp.panels[0].ax.add_artist(ab)\n\n    mp.draw_cwas(linewidth=2)\n    overlay_info(mp.fig, df)\n\n    return mp.fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p243.py",
    "content": "\"\"\"\nThis autoplot prints out the top 10 dates for number of VTEC events issued.\nNote that a warning covering multiple counties would only count as 1 in this\nsummary.  You can either produce top 10 totals for a given wfo/state or get the\ntop 10 totals per wfo/state over all wfos/states.\n\n<p>If you summarize by a 12z to 12z period, the date of the start of the period\nis shown. If you summarize over a multiple day period, the entire period must\nreside within any calendar date limit.</p>\n\n<p><a href=\"/plotting/auto/?q=171\">Autoplot 171</a> is similar to this app, but\nproduces monthly heatmaps.\n\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nimport pyiem.nws.vtec as vtec\nfrom pyiem import reference\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_FEMA, FEMA_REGIONS, fema_region2states\nfrom iemweb.util import month2months\n\nMDICT = {\n    \"all\": \"Entire Year\",\n    \"spring\": \"Spring (MAM)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"summer\": \"Summer (JJA)\",\n    \"octmar\": \"October thru March\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\nDDICT = {\n    \"cal\": \"Local Calendar Day for Office\",\n    \"12z\": \"12 UTC to 12 UTC Period\",\n}\nPDICT = {\n    \"wfo\": \"Select by NWS Forecast Office\",\n    \"state\": \"Select by State\",\n    \"fema\": \"Select by FEMA Region\",\n    \"all\": \"Show NWS Totals (all)\",\n    \"bywfo\": \"Show per NWS Office Totals\",\n    \"bystate\": \"Show per State Totals\",\n}\nPDICT2 = {\n    \"single\": \"Total for Single Selected Phenomena / Significance\",\n    \"svrtor\": \"Severe T'Storm + Tornado Warnings\",\n    \"svrtorffw\": \"Severe T'Storm + Tornado + Flash Flood Warnings\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"wfo\",\n            options=PDICT,\n            label=\"How to summarize the data?\",\n        ),\n        {\n            \"type\": \"select\",\n            \"options\": DDICT,\n            \"default\": \"cal\",\n            \"label\": \"Define what a day means\",\n            \"name\": \"day\",\n        },\n        {\n            \"type\": \"int\",\n            \"name\": \"days\",\n            \"default\": 1,\n            \"label\": \"Number of Days to Summarize (1-31)\",\n            \"gt\": 1,\n            \"lt\": 32,\n        },\n        dict(\n            type=\"select\",\n            name=\"month\",\n            default=\"all\",\n            label=\"Month(s) Limiter\",\n            options=MDICT,\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO:\",\n            all=True,\n        ),\n        dict(type=\"state\", name=\"state\", default=\"IA\", label=\"Select State:\"),\n        ARG_FEMA,\n        {\n            \"type\": \"select\",\n            \"options\": PDICT2,\n            \"name\": \"c\",\n            \"default\": \"single\",\n            \"label\": \"Total by Selected Phenomena/Significance or Combo\",\n        },\n        dict(\n            type=\"phenomena\",\n            name=\"phenomena\",\n            default=\"FF\",\n            label=\"Select Watch/Warning Phenomena Type:\",\n        ),\n        dict(\n            type=\"significance\",\n            name=\"significance\",\n            default=\"W\",\n            label=\"Select Watch/Warning Significance Level:\",\n        ),\n    ]\n    return desc\n\n\ndef compute_dates(months: list, dt: date, days: int):\n    \"\"\"Figure out how to represent this period, since the end may out.\"\"\"\n    start_dt = dt - pd.Timedelta(days=days - 1)\n    if start_dt.month in months and dt.month in months:\n        return f\"{start_dt:%d %b} - {dt:%d %b %Y}\"\n    sts = None\n    ets = None\n    for _dt in pd.date_range(start_dt, dt):\n        if _dt.month not in months:\n            continue\n        if sts is None:\n            sts = _dt\n        ets = _dt\n    return f\"{sts:%d %b} - {ets:%d %b %Y}\"\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    phenomena = ctx[\"phenomena\"]\n    significance = ctx[\"significance\"]\n    opt = ctx[\"opt\"]\n    if opt == \"all\":\n        opt = \"wfo\"\n        station = \"_ALL\"\n    state = ctx[\"state\"]\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\n        \"name\": \"All Offices\",\n        \"tzname\": \"America/Chicago\",\n    }\n    month = ctx[\"month\"]\n    months = month2months(month)\n    params = {\n        \"ph\": [\n            phenomena,\n        ],\n        \"sig\": significance,\n        \"tzname\": ctx[\"_nt\"].sts[station][\"tzname\"],\n    }\n    offset = \"\"\n    tt = \"by Calendar Date\"\n    if ctx[\"day\"] == \"12z\":\n        params[\"tzname\"] = \"UTC\"\n        offset = \" - '12 hours'::interval \"\n        tt = \"by 12z-12z Period\"\n    wfo_limiter = \" and wfo = :wfo \"\n    params[\"wfo\"] = station if len(station) == 3 else station[1:]\n    if station == \"_ALL\":\n        wfo_limiter = \"\"\n        ctx[\"_sname\"] = \"All Offices\"\n    if opt == \"state\":\n        wfo_limiter = \" and substr(ugc, 1, 2) = :state \"\n        params[\"state\"] = state\n    elif opt == \"fema\":\n        wfo_limiter = \" and substr(ugc, 1, 2) = ANY(:states) \"\n        params[\"states\"] = fema_region2states(ctx[\"fema\"])\n    if opt in [\"bystate\", \"bywfo\"]:\n        wfo_limiter = \"\"\n\n    subtitle = (\n        f\"{vtec.get_ps_string(phenomena, significance)} \"\n        f\"({phenomena}.{significance})\"\n    )\n    if ctx[\"c\"] == \"svrtor\":\n        params[\"ph\"] = [\"SV\", \"TO\"]\n        params[\"sig\"] = \"W\"\n        subtitle = \"Severe T'Storm + Tornado Warnings\"\n    elif ctx[\"c\"] == \"svrtorffw\":\n        params[\"ph\"] = [\"SV\", \"TO\", \"FF\"]\n        params[\"sig\"] = \"W\"\n        subtitle = \"Svr T'Storm + Tornado + Flash Flood Warnings\"\n\n    sql = \"\"\"\n        SELECT\n        vtec_year as yr,\n        extract(month from issue)::int as mo,\n        min(date(issue at time zone :tzname {offset})) as min_date,\n        wfo, phenomena, significance, eventid\n        from warnings where phenomena = ANY(:ph) and significance = :sig\n        {wfo_limiter}\n        GROUP by yr, mo, wfo, phenomena, significance, eventid\n        ORDER by yr asc, mo asc\n    \"\"\"\n    if opt == \"bystate\":\n        # Yes, double counting\n        sql = \"\"\"\n            SELECT\n            vtec_year as yr,\n            extract(month from issue)::int as mo,\n            min(date(issue at time zone :tzname {offset})) as min_date,\n            substr(ugc, 1, 2) as state,\n            wfo, phenomena, significance, eventid\n            from warnings where phenomena = ANY(:ph) and significance = :sig\n            GROUP by yr, mo, state, wfo, phenomena, significance, eventid\n            ORDER by yr asc, mo asc\n        \"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        # NB quasi hack here as we have some redundant ETNs for a given year\n        # so the groupby helps some.\n        daily = pd.read_sql(\n            sql_helper(sql, offset=offset, wfo_limiter=wfo_limiter),\n            conn,\n            params=params,\n            index_col=None,\n            parse_dates=\"min_date\",\n        )\n\n    if daily.empty:\n        raise NoDataFound(\"Sorry, no data found!\")\n    daily = daily[daily[\"mo\"].isin(months)].sort_values(\n        \"min_date\", ascending=True\n    )\n    if daily.empty:\n        raise NoDataFound(\"Sorry, no data found for given months.\")\n    if opt in [\"bystate\", \"bywfo\"]:\n        col = opt.replace(\"by\", \"\")\n        df = (\n            daily[[\"min_date\", \"eventid\", col]]\n            .groupby([col, \"min_date\"])\n            .count()\n            .reset_index()\n            .rename(columns={\"eventid\": \"count\"})\n            .sort_values([\"count\", \"min_date\"], ascending=False)\n            .copy()\n        )\n        if ctx[\"days\"] > 1:\n            # We need to fill out the dataframe to include all dates\n            # within the range of dates and all the states or offices\n            # that are in the data\n            df = (\n                df.set_index([\"min_date\", col])\n                .reindex(\n                    pd.MultiIndex.from_product(\n                        [\n                            pd.date_range(\n                                start=daily[\"min_date\"].min(),\n                                end=daily[\"min_date\"].max(),\n                                freq=\"D\",\n                                name=\"min_date\",\n                            ),\n                            df[col].unique(),\n                        ],\n                        names=[\"min_date\", col],\n                    )\n                )\n                .fillna(0)\n                .rolling(ctx[\"days\"], min_periods=1)\n                .sum()\n                .reset_index()\n                .sort_values([\"count\", \"min_date\"], ascending=False)\n            )\n    else:\n        df = (\n            daily[[\"min_date\", \"eventid\"]]\n            .groupby(\"min_date\")\n            .count()\n            .reset_index()\n            .rename(columns={\"eventid\": \"count\"})\n            .sort_values([\"count\", \"min_date\"], ascending=False)\n            .copy()\n        )\n        if ctx[\"days\"] > 1:\n            # We need to undo the sort and reindex to include all days\n            df = (\n                df.set_index(\"min_date\")\n                .reindex(\n                    pd.date_range(\n                        start=daily[\"min_date\"].min(),\n                        end=daily[\"min_date\"].max(),\n                        freq=\"D\",\n                        name=\"min_date\",\n                    )\n                )\n                .fillna(0)\n                .rolling(ctx[\"days\"], min_periods=1)\n                .sum()\n                .reset_index()\n                .sort_values([\"count\", \"min_date\"], ascending=False)\n            )\n\n    title = f\"NWS {ctx['_sname']}\"\n    if opt == \"state\":\n        title = (\n            \"NWS Issued for Counties/Zones for State of \"\n            f\"{reference.state_names[state]}\"\n        )\n    elif opt == \"bystate\":\n        title = \"NWS Issued by State\"\n    elif opt == \"bywfo\":\n        title = \"NWS Issued by WFO\"\n    elif opt == \"fema\":\n        title = f\"NWS Issued by FEMA {FEMA_REGIONS[ctx['fema']]}\"\n    if ctx[\"days\"] > 1:\n        title += f\" [{ctx['days']} Day Sum]\"\n    if month != \"all\":\n        title += f\" [{MDICT[month]}]\"\n    fig = figure(\n        title=title,\n        subtitle=(\n            f\"{subtitle} Events {tt} [{daily['min_date'].min():%d %b %Y}-\"\n            f\"{daily['min_date'].max():%d %b %Y}]\"\n        ),\n        apctx=ctx,\n    )\n    ax = fig.add_axes((0.3, 0.1, 0.5, 0.8))\n    ax.spines[\"top\"].set_visible(False)\n    ax.spines[\"right\"].set_visible(False)\n    ax.spines[\"left\"].set_visible(False)\n    df2 = df.iloc[:10]\n    ax.barh(\n        range(1, len(df2.index) + 1),\n        df2[\"count\"].values,\n    )\n    labels = []\n    rank = 0\n    lastval = -1\n    extra = \"\"\n    for _, row in df.head(10).iterrows():\n        if row[\"count\"] != lastval:\n            rank += 1\n        lastval = row[\"count\"]\n        md = f\"{row['min_date']:%d %b %Y}\"\n        if ctx[\"days\"] > 1:\n            # Life choices here about what happens when the period crosses\n            # a month boundary\n            md = compute_dates(months, row[\"min_date\"], ctx[\"days\"])\n        if opt in [\"bystate\", \"bywfo\"]:\n            extra = row[opt.replace(\"by\", \"\")]\n        labels.append(f\"#{rank} {extra} {md} :: {row['count']:.0f}\")\n    ax.set_yticks(range(1, len(df2.index) + 1))\n    ax.set_yticklabels(labels)\n    ax.set_ylim(len(df2.index) + 1, 0)\n    ax.set_xlabel(f\"Event Count by Date: {params['tzname']}\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p244.py",
    "content": "\"\"\"\nThe IEM attempts to create areal averaged climate values akin to what NCEI has\nwith its \"Climdiv\" dataset.  This autoplot creates comparisons between the two.\n\n<p>Variances shown are problems with IEM's database/processing, not NCEI!\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.util import get_properties\n\nfrom iemweb.util import month2months\n\nPDICT = {\n    \"sum_precip\": \"Total Precipitation\",\n    \"avg_high\": \"Average High Temperature\",\n    \"avg_low\": \"Average Low Temperature\",\n}\nMDICT = {\n    \"all\": \"Entire Year\",\n    \"spring\": \"Spring (MAM)\",\n    \"summer\": \"Summer (JJA)\",\n    \"fall\": \"Fall (SON)\",\n    \"winter\": \"Winter (DJF)\",\n    \"jan\": \"January\",\n    \"feb\": \"February\",\n    \"mar\": \"March\",\n    \"apr\": \"April\",\n    \"may\": \"May\",\n    \"jun\": \"June\",\n    \"jul\": \"July\",\n    \"aug\": \"August\",\n    \"sep\": \"September\",\n    \"oct\": \"October\",\n    \"nov\": \"November\",\n    \"dec\": \"December\",\n}\nSDICT = {}  # to be filled\n\n\ndef fill_sdict():\n    \"\"\"Ensure we have stations to select from!\"\"\"\n    conn = get_dbconn(\"mesosite\")\n    cursor = conn.cursor()\n    cursor.execute(\n        \"\"\"\n        SELECT id, name from stations where network ~* 'CLIMATE' and\n        (substr(id, 3, 4) = '0000' or substr(id, 3, 1) = 'C') ORDER by id ASC\n        \"\"\"\n    )\n    for row in cursor:\n        SDICT[row[0]] = f\"[{row[0]}] {row[1]}\"\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    fill_sdict()\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"select\",\n            \"options\": SDICT,\n            \"name\": \"station\",\n            \"default\": \"IA0000\",\n            \"label\": \"Select statewide/climate district to compare:\",\n        },\n        dict(\n            type=\"select\",\n            name=\"m\",\n            default=\"all\",\n            label=\"Month Limiter\",\n            options=MDICT,\n        ),\n        {\n            \"type\": \"select\",\n            \"options\": PDICT,\n            \"default\": \"sum_precip\",\n            \"label\": \"Which variable\",\n            \"name\": \"varname\",\n        },\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    fill_sdict()\n    procdate = get_properties().get(\"ncei.climdiv.procdate\", \"20230101\")\n\n    station = ctx[\"station\"]\n    varname = ctx[\"varname\"]\n    sql = \"\"\"\n        with iem as (\n            SELECT\n            year, month,\n            sum(precip) as iem_sum_precip, avg(high) as iem_avg_high,\n            avg(low) as iem_avg_low\n            from alldata WHERE station = :station\n            GROUP by year, month\n        ), ncei as (\n            SELECT\n            extract(year from day)::int as ncei_year,\n            extract(month from day)::int as ncei_month,\n            precip as ncei_sum_precip, high as ncei_avg_high,\n            low as ncei_avg_low\n            from ncei_climdiv WHERE station = :station\n        )\n        select n.*, i.* from ncei n JOIN iem i on\n        (n.ncei_year = i.year and n.ncei_month = i.month)\n        ORDER by i.year ASC, i.month ASC\n    \"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(sql),\n            conn,\n            params={\"station\": station},\n            index_col=\"year\",\n        )\n\n    if df.empty:\n        raise NoDataFound(\"Sorry, no data found!\")\n\n    month = ctx[\"m\"]\n    months = month2months(month)\n    if month == \"winter\":\n        df = df.reset_index()\n        df[\"year\"] = df.loc[df[\"month\"].isin([1, 2]), \"year\"] - 1\n        df = df.set_index(\"year\")\n\n    df = (\n        df.loc[df[\"month\"].isin(months)]\n        .groupby(\"year\")\n        .agg(\n            {\n                \"ncei_sum_precip\": \"sum\",\n                \"ncei_avg_high\": \"mean\",\n                \"ncei_avg_low\": \"mean\",\n                \"iem_sum_precip\": \"sum\",\n                \"iem_avg_high\": \"mean\",\n                \"iem_avg_low\": \"mean\",\n            }\n        )\n    )\n\n    fig = figure(\n        title=f\"{SDICT[station]}:: [{MDICT[month]}] Bias (IEM minus NCEI)\",\n        subtitle=f\"{PDICT[varname]}, NCEI processdate: {procdate}\",\n        apctx=ctx,\n    )\n    ax = fig.add_axes((0.1, 0.1, 0.6, 0.8))\n    df[\"iem_bias\"] = df[f\"iem_{varname}\"] - df[f\"ncei_{varname}\"]\n    bias = df[\"iem_bias\"].mean()\n    ax.bar(\n        df.index.values,\n        df[\"iem_bias\"].values,\n    )\n    ax.set_ylabel(\n        \"Precipitation Bias [inch]\"\n        if varname == \"sum_precip\"\n        else \"Temperature Bias [F]\"\n    )\n    ax.axhline(bias, lw=3, color=\"r\")\n    ax.text(\n        df.index.values[-1] + 5,\n        bias + 0.05,\n        f\"{bias:.2f}\",\n        color=\"r\",\n        ha=\"left\",\n    )\n    ax.grid()\n\n    y = 0.9\n    fig.text(0.75, y, \"Top 10 IEM > NCEI\")\n    y -= 0.035\n    sdf = df.sort_values(\"iem_bias\", ascending=False)\n    for year, row in sdf.head(10).iterrows():\n        iem = row[f\"iem_{varname}\"]\n        ncei = row[f\"ncei_{varname}\"]\n        fig.text(\n            0.75,\n            y,\n            f\"{year}  {iem:5.02f} {ncei:5.02f} {row['iem_bias']:5.02f}\",\n        )\n        y -= 0.035\n\n    y -= 0.035\n    fig.text(0.75, y, \"Top 10 IEM < NCEI\")\n    y -= 0.035\n\n    for year, row in sdf.iloc[::-1].head(10).iterrows():\n        iem = row[f\"iem_{varname}\"]\n        ncei = row[f\"ncei_{varname}\"]\n        fig.text(\n            0.75,\n            y,\n            f\"{year}  {iem:5.02f} {ncei:5.02f} {row['iem_bias']:5.02f}\",\n        )\n        y -= 0.035\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p245.py",
    "content": "\"\"\"\nThis chart presents the total number of Local Storm Reports disseminated by the\nNWS by month and year.\n\n<p><a href=\"/plotting/auto/?q=171\">Autoplot 171</a> produces a similar plot,\nbut contains totals of Watch, Warnings, and Advisories issued.</p>\n\"\"\"\n\nimport calendar\n\nimport numpy as np\nimport pandas as pd\nimport seaborn as sns\nfrom pyiem import reference\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\n\nMDICT = {\n    \"NONE\": \"All LSR Types\",\n    \"CMG\": \"Convective minus automated station gusts\",\n    \"DMG\": \"TSTM and NON-TSTM Wind Damage\",\n    \"NRS\": \"All LSR Types except HEAVY RAIN + SNOW\",\n    \"H1\": \"One Inch and Larger Hail \",\n    \"H2\": \"Two Inch and Larger Hail \",\n    \"H3\": \"Three Inch and Larger Hail \",\n    \"H4\": \"Four Inch and Larger Hail \",\n    \"G58\": \"Thunderstorm Wind Gust >= 58 MPH \",\n    \"G75\": \"Thunderstorm Wind Gust >= 75 MPH \",\n    \"G100\": \"Any Wind Gust >= 100 MPH \",\n    \"WP\": \"Winter Precipitation (Snow, Sleet, Freezing Rain)\",\n    \"TT\": \"Tornado + Waterspout + Funnel Cloud\",\n    \"CON\": \"Convective LSRs (Tornado, TStorm Gst/Dmg, Hail)\",\n    \"AVALANCHE\": \"AVALANCHE\",\n    \"BLIZZARD\": \"BLIZZARD\",\n    \"COASTAL FLOOD\": \"COASTAL FLOOD\",\n    \"DEBRIS FLOW\": \"DEBRIS FLOW\",\n    \"DENSE FOG\": \"DENSE FOG\",\n    \"DOWNBURST\": \"DOWNBURST\",\n    \"DUST STORM\": \"DUST STORM\",\n    \"EXCESSIVE HEAT\": \"EXCESSIVE HEAT\",\n    \"EXTREME COLD\": \"EXTREME COLD\",\n    \"EXTR WIND CHILL\": \"EXTR WIND CHILL\",\n    \"FLASH FLOOD\": \"FLASH FLOOD\",\n    \"FLOOD\": \"FLOOD\",\n    \"FOG\": \"FOG\",\n    \"FREEZE\": \"FREEZE\",\n    \"FREEZING DRIZZLE\": \"FREEZING DRIZZLE\",\n    \"FREEZING RAIN\": \"FREEZING RAIN\",\n    \"FUNNEL CLOUD\": \"FUNNEL CLOUD\",\n    \"HAIL\": \"HAIL\",\n    \"HEAVY RAIN\": \"HEAVY RAIN\",\n    \"HEAVY SLEET\": \"HEAVY SLEET\",\n    \"HEAVY SNOW\": \"HEAVY SNOW\",\n    \"HIGH ASTR TIDES\": \"HIGH ASTR TIDES\",\n    \"HIGH SURF\": \"HIGH SURF\",\n    \"HIGH SUST WINDS\": \"HIGH SUST WINDS\",\n    \"HURRICANE\": \"HURRICANE\",\n    \"ICE STORM\": \"ICE STORM\",\n    \"LAKESHORE FLOOD\": \"LAKESHORE FLOOD\",\n    \"LIGHTNING\": \"LIGHTNING\",\n    \"LOW ASTR TIDES\": \"LOW ASTR TIDES\",\n    \"MARINE TSTM WIND\": \"MARINE TSTM WIND\",\n    \"NON-TSTM WND DMG\": \"NON-TSTM WND DMG\",\n    \"NON-TSTM WND GST\": \"NON-TSTM WND GST\",\n    \"RAIN\": \"RAIN\",\n    \"RIP CURRENTS\": \"RIP CURRENTS\",\n    \"SLEET\": \"SLEET\",\n    \"SNOW\": \"SNOW\",\n    \"STORM SURGE\": \"STORM SURGE\",\n    \"TORNADO\": \"TORNADO\",\n    \"TROPICAL STORM\": \"TROPICAL STORM\",\n    \"TSTM WND DMG\": \"TSTM WND DMG\",\n    \"TSTM WND GST\": \"TSTM WND GST\",\n    \"WALL CLOUD\": \"WALL CLOUD\",\n    \"WATER SPOUT\": \"WATER SPOUT\",\n    \"WILDFIRE\": \"WILDFIRE\",\n}\nFILTERS = {\n    \"NONE\": \"\",\n    \"NRS\": \" and typetext not in ('HEAVY RAIN', 'SNOW', 'HEAVY SNOW') \",\n    \"H1\": \" and typetext = 'HAIL' and magnitude >= 1 \",\n    \"H2\": \" and typetext = 'HAIL' and magnitude >= 2 \",\n    \"H3\": \" and typetext = 'HAIL' and magnitude >= 3 \",\n    \"H4\": \" and typetext = 'HAIL' and magnitude >= 4 \",\n    \"G58\": \" and type = 'G' and magnitude >= 58 \",\n    \"G75\": \" and type = 'G' and magnitude >= 75 \",\n    \"G100\": (\n        \" and typetext in ('DOWNBURST', 'HIGH SUST WINDS', 'MARINE TSTM WIND',\"\n        \"'NON-TSTM WND GST', 'TSTM WND GST') and magnitude >= 100 \"\n    ),\n    \"CON\": (\n        \" and typetext in ('TORNADO', 'HAIL', 'TSTM WND GST', 'TSTM WND DMG') \"\n    ),\n    \"CMG\": (\n        \" and typetext in ('TORNADO', 'HAIL', 'TSTM WND GST', \"\n        \"'TSTM WND DMG') and upper(source) not in ('MESONET', 'ASOS') \"\n    ),\n    \"DMG\": \" and typetext in ('TSTM WND DMG', 'NON-TSTM WND DMG') \",\n    \"WP\": (\n        \" and typetext in ('SNOW', 'SLEET', 'FREEZING RAIN', 'HEAVY SNOW', \"\n        \"'BLIZZARD') \"\n    ),\n    \"TT\": \" and typetext in ('TORNADO', 'WATERSPOUT', 'FUNNEL CLOUD')\",\n}\nPDICT = {\n    \"wfo\": \"Select by NWS Forecast Office\",\n    \"state\": \"Select by State\",\n    \"ugc\": \"Select by NWS County/Forecast Zone\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    doc = str(__doc__)\n    doc += (\n        \"<p>This is how some of the LSR summary types map to database \"\n        \"queries, FWIW:</p>\"\n        \"<ul>\"\n    )\n    for key, val in FILTERS.items():\n        doc += f\"<li>{MDICT[key]} - <code>{val}</code></li>\\n\"\n    doc += \"</ul>\"\n    desc = {\"description\": doc, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"wfo\",\n            options=PDICT,\n            label=\"How to summarize the data?\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"station\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO:\",\n            all=True,\n        ),\n        dict(type=\"state\", name=\"state\", default=\"IA\", label=\"Select State:\"),\n        dict(\n            type=\"ugc\",\n            name=\"ugc\",\n            default=\"IAC169\",\n            label=\"Select UGC Zone/County:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"filter\",\n            default=\"NONE\",\n            options=MDICT,\n            label=\"Local Storm Report Type Filter\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"Greens\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef get_ugc_name(ugc):\n    \"\"\"Return the WFO and county name.\"\"\"\n    cursor = get_dbconn(\"postgis\").cursor()\n    cursor.execute(\n        \"SELECT name, wfo from ugcs where ugc = %s and end_ts is null\", (ugc,)\n    )\n    return cursor.fetchone()\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    station = ctx[\"station\"]\n    opt = ctx[\"opt\"]\n    state = ctx[\"state\"]\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\n        \"name\": \"All Offices\",\n        \"tzname\": \"America/Chicago\",\n    }\n    myfilter = ctx[\"filter\"]\n    tlimiter = FILTERS.get(myfilter, \" and typetext = :typetext \")\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\n        \"name\": \"All Offices\",\n        \"tzname\": \"America/Chicago\",\n    }\n    params = {\n        \"tzname\": ctx[\"_nt\"].sts[station][\"tzname\"],\n        \"typetext\": myfilter,\n    }\n    wfo_limiter = \" and wfo = :wfo \"\n    params[\"wfo\"] = station if len(station) == 3 else station[1:]\n    if station == \"_ALL\":\n        wfo_limiter = \"\"\n        ctx[\"_sname\"] = \"All Offices\"\n    if opt == \"state\":\n        wfo_limiter = \" and state = :state \"\n        params[\"state\"] = state\n    elif opt == \"ugc\":\n        wfo_limiter = \" and ugc = :ugc \"\n        params[\"ugc\"] = ctx[\"ugc\"]\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        if opt != \"ugc\":\n            daily = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n                     with data as (\n                SELECT distinct valid, geom, typetext, magnitude\n                from lsrs l where 1 = 1 {tlimiter} {wfo_limiter}\n                ) select date(valid at time zone :tzname),\n                count(*) from data GROUP by date ORDER by date\n            \"\"\",\n                    tlimiter=tlimiter,\n                    wfo_limiter=wfo_limiter,\n                ),\n                conn,\n                params=params,\n                index_col=None,\n                parse_dates=\"date\",\n            )\n        else:\n            daily = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n                with data as (\n                SELECT distinct valid, l.geom, typetext, magnitude\n                from lsrs l JOIN ugcs u on (l.gid = u.gid)\n                where 1 = 1 {tlimiter} {wfo_limiter}\n                )\n                select date(valid at time zone :tzname), count(*)\n                from data GROUP by date ORDER by date\n            \"\"\",\n                    tlimiter=tlimiter,\n                    wfo_limiter=wfo_limiter,\n                ),\n                conn,\n                index_col=None,\n                params=params,\n                parse_dates=\"date\",\n            )\n    if daily.empty:\n        raise NoDataFound(\"No data found for query.\")\n    daily[\"yr\"] = daily[\"date\"].dt.year\n    daily[\"mo\"] = daily[\"date\"].dt.month\n    df = daily[[\"yr\", \"mo\", \"count\"]].groupby([\"yr\", \"mo\"]).sum().reset_index()\n\n    df2 = df.pivot(index=\"yr\", columns=\"mo\", values=\"count\").reindex(\n        index=range(df[\"yr\"].min(), df[\"yr\"].max() + 1),\n        columns=range(1, 13),\n    )\n\n    title = f\"NWS {ctx['_sname']}\"\n    if opt == \"state\":\n        title = (\n            \"NWS Local Storm Reports for State of \"\n            f\"{reference.state_names[state]}\"\n        )\n    elif opt == \"ugc\":\n        name, wfo = get_ugc_name(ctx[\"ugc\"])\n        title = (\n            f\"NWS [{wfo}] {ctx['_nt'].sts[wfo]['name']} Reports for \"\n            f\"[{ctx['ugc']}] {name}\"\n        )\n    (fig, ax) = figure_axes(\n        title=title,\n        subtitle=f\"Local Storm Reports (LSRs): {MDICT[myfilter]}\",\n        apctx=ctx,\n    )\n    # Print the top 10 days\n    ypos = 0.9\n    fig.text(0.82, ypos, \"Top 10 Dates\")\n    ypos -= 0.04\n    fig.text(0.82, ypos, params[\"tzname\"])\n    for _, row in (\n        daily.sort_values(\"count\", ascending=False).head(10).iterrows()\n    ):\n        ypos -= 0.04\n        fig.text(0.82, ypos, f\"{row['date']:%Y-%m-%d} {row['count']:3.0f}\")\n    ax.set_position([0.1, 0.1, 0.75, 0.8])\n    g = sns.heatmap(\n        df2,\n        annot=True,\n        fmt=\".0f\",\n        linewidths=0.5,\n        ax=ax,\n        vmin=1,\n        cmap=ctx[\"cmap\"],\n        zorder=2,\n    )\n    g.set_yticklabels(g.get_yticklabels(), rotation=0)\n    # Add sums to RHS\n    sumdf = df2.sum(axis=\"columns\").fillna(0)\n    for year, count in sumdf.items():\n        ax.text(12, year, f\"{count:.0f}\")\n    # Add some horizontal lines\n    for i, year in enumerate(range(df[\"yr\"].min(), df[\"yr\"].max() + 1)):\n        ax.text(\n            12 + 0.7, i + 0.5, f\"{sumdf[year]:4.0f}\", ha=\"right\", va=\"center\"\n        )\n        if year % 5 != 0:\n            continue\n        ax.axhline(i, zorder=3, lw=1, color=\"gray\")\n    ax.text(1.0, -0.02, \"Total\", transform=ax.transAxes)\n    # Add some vertical lines\n    for i in range(1, 12):\n        ax.axvline(i, zorder=3, lw=1, color=\"gray\")\n    ax.set_xticks(np.arange(12) + 0.5)\n    ax.set_xticklabels(calendar.month_abbr[1:], rotation=0)\n    ax.set_ylabel(\"Year\")\n    ax.set_xlabel(\"Month\")\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p246.py",
    "content": "\"\"\"\nThis autoplot generates a probability of a specified accumulation threshold\nbeing reached by the given calendar date.  This is based on period of record\nobservations, so it is an observed frequency.\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"accum_gdd\": \"Growing Degree Days\",\n    \"accum_precip\": \"Precipitation\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        {\n            \"type\": \"sday\",\n            \"default\": \"0501\",\n            \"name\": \"sday\",\n            \"label\": \"Select start date to accumulate from:\",\n        },\n        {\n            \"type\": \"select\",\n            \"options\": PDICT,\n            \"default\": \"accum_gdd\",\n            \"name\": \"var\",\n            \"label\": \"Which variable to plot?\",\n        },\n        {\n            \"type\": \"int\",\n            \"default\": 50,\n            \"name\": \"gddbase\",\n            \"label\": \"Growing Degree Day Base Temperature:\",\n        },\n        {\n            \"type\": \"int\",\n            \"default\": 86,\n            \"name\": \"gddceil\",\n            \"label\": \"Growing Degree Day Ceiling Temperature:\",\n        },\n        {\n            \"type\": \"float\",\n            \"default\": 1100,\n            \"name\": \"threshold\",\n            \"label\": \"Accumulation Threshold (F or inch):\",\n        },\n    ]\n    return desc\n\n\ndef get_obsdf(ctx):\n    \"\"\"Figure out our observations.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                SELECT day, year,\n                extract(doy from day) as day_of_year,\n                sum(gddxx(:gddbase, :gddceil, high, low))\n                    OVER (PARTITION by year ORDER by day ASC) as accum_gdd,\n                sum(precip) OVER (PARTITION by year ORDER by day ASC)\n                    as accum_precip from alldata\n                WHERE station = :station and sday >= :sday ORDER by day ASC\n            \"\"\"\n            ),\n            conn,\n            index_col=\"day\",\n            parse_dates=[\"day\"],\n            params={\n                \"station\": ctx[\"station\"],\n                \"sday\": ctx[\"sday\"].strftime(\"%m%d\"),\n                \"gddbase\": ctx[\"gddbase\"],\n                \"gddceil\": ctx[\"gddceil\"],\n            },\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    # Check the first year to see if it starts on our sday\n    if df.index[0].strftime(\"%m%d\") != ctx[\"sday\"].strftime(\"%m%d\"):\n        df = df[df[\"year\"] > df.index[0].year]\n    # compute the accumulated frequency of accumulated value by day of year\n    # over the given threshold\n    df[\"over_threshold\"] = df[ctx[\"var\"]] > ctx[\"threshold\"]\n    # if the last year is not over threshold, chomp it off too\n    if not df.iloc[-1][\"over_threshold\"]:\n        df = df[df[\"year\"] < df.index.year.max()]\n    return df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    df = get_obsdf(ctx)\n\n    # Compute the climatology\n    df2 = (\n        df[[\"over_threshold\", \"day_of_year\"]].groupby(\"day_of_year\").mean()\n        * 100.0\n    )\n    title = PDICT[ctx[\"var\"]]\n    if ctx[\"var\"] == \"accum_gdd\":\n        title += f\" ({ctx['gddbase']}/{ctx['gddceil']})\"\n\n    units = \"inch\" if ctx[\"var\"] == \"accum_precip\" else \"GDD\"\n    fig = figure(\n        title=(\n            f\"({df.index[0].year}-{df.index[-1].year}) \"\n            f\"{ctx['_sname']}:: {title}\"\n        ),\n        subtitle=(\n            f\"Accumulation over {ctx['threshold']} {units} \"\n            f\"after {ctx['sday']:%b %-d}\"\n        ),\n        apctx=ctx,\n    )\n    ax = fig.add_axes((0.06, 0.1, 0.65, 0.78))\n    ax.plot(df2.index.values, df2[\"over_threshold\"].values, color=\"k\")\n\n    ax.set_ylim(0, 101)\n    ax.set_yticks([0, 5, 10, 25, 50, 75, 90, 95, 100])\n    ax.set_ylabel(\"Accumulated Frequency [%]\")\n\n    # Set xlim to something that covers the range of data\n    df3 = df2[(df2[\"over_threshold\"] > 0) & (df2[\"over_threshold\"] < 100)]\n    if df3.empty:\n        raise NoDataFound(\"No values found over threshold.\")\n    ax.set_xlim(df3.index.min() - 5, df3.index.max() + 5)\n    ax.grid(True)\n    xticks = []\n    xticklabels = []\n    # careful\n    mindoy = max(0, df3.index.min() - 5)\n    maxdoy = min(365, df3.index.max() + 5)\n    dt1 = pd.Timestamp(\"2000-01-01\") + pd.Timedelta(days=mindoy)\n    dt2 = pd.Timestamp(\"2000-01-01\") + pd.Timedelta(days=maxdoy)\n    every = [1, 8, 15, 22]\n    if dt2.dayofyear - dt1.dayofyear > 60:\n        every = [1, 15]\n    if dt2.dayofyear - dt1.dayofyear > 120:\n        every = [\n            1,\n        ]\n    for dt in pd.date_range(dt1, dt2):\n        if dt.day in every:\n            xticks.append(dt.dayofyear)\n            xticklabels.append(dt.strftime(\"%b %d\"))\n    ax.set_xticks(xticks)\n    ax.set_xticklabels(xticklabels)\n\n    # Print a table of percentile values\n    table = \"Date    Percentile\\n\"\n    thresh = 0\n    for i, row in df2.iterrows():\n        if row[\"over_threshold\"] > thresh:\n            dt = pd.Timestamp(\"2000-01-01\") + pd.Timedelta(days=i)\n            table += f\"{dt:%b %d}  {thresh:02d}\\n\"\n            thresh += 5 if thresh < 94 else 4\n    fig.text(\n        0.75,\n        0.75,\n        table,\n        va=\"top\",\n        ha=\"left\",\n        family=\"monospace\",\n        fontsize=12,\n    )\n\n    return fig, df2\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p247.py",
    "content": "\"\"\"\nThis autoplot generates a map of active NWS Watch, Warnings, and Advisories\nactive at the given timestamp.\n\n<p><strong>Footnote on \"Active\" WaWA</strong>: A more complex than it\nshould be nuance to explain here is the concept of what is \"active\" at\na given timestamp.  Let us consider a real world example.  On Monday\nafternoon, the NWS issues a Winter Storm Warning for an upcoming\nstorm that goes \"into effect\" at noon on Tuesday.  You request this\nplot for a timestamp of 6 PM on that Monday.  Is the Winter Storm\nWarning included in this metric at that time?\n<ul>\n<li>Yes, if you select the option to include any WaWA that have been\ncreated, but may have an VTEC start time in the future yet.</li>\n<li>No, if you select the option to only include WaWA that have an\nissuance time before the given timestamp.</li>\n</ul>\n<br />The default setting here is the first option, to include any events\nthat have been created, but not necessarily having an issuance time prior\nto the given timestamp.  This is why we can't have nice things!</p>\n\n<p>If you turn on statistics, the legend displays active events nationwide.\nCentral Region NWS maintains a\n<a href=\"https://www.weather.gov/images/crh/dhs/wwa_population.png\"\n>similar map</a>, but is near real-time only.</p>\n\n<p><a href=\"/plotting/auto/?q=224\">Autoplot 224</a> is closely related to\nthis app and provides a table of stats.</p>\n\"\"\"\n\nfrom datetime import timezone\nfrom io import StringIO\n\nimport geopandas as gpd\nimport pandas as pd\nimport requests\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws.vtec import NWS_COLORS, get_ps_string\nfrom pyiem.plot import MapPlot\nfrom pyiem.reference import SECTORS_NAME, Z_OVERLAY2, state_names\nfrom pyiem.util import utc\n\n# shared with 224\nPDICT = {\n    \"active\": \"Include WaWA that have been created or valid at the given time\",\n    \"within\": \"Include WaWA with VTEC issuance time before the given time\",\n}\nPDICT2 = {\n    \"none\": \"None\",\n    \"stats\": \"Include Population and Area Statistics\",\n}\nPDICT3 = {\n    \"yes\": \"Yes. Show counties\",\n    \"no\": \"No. Do not show counties\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__}\n    desc[\"defaults\"] = {\"_r\": None}  # disables\n    sectors = SECTORS_NAME.copy()\n    sectors[\"nws\"] = \"NWS All\"\n    sectors.update(state_names)\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"datetime\",\n            \"name\": \"valid\",\n            \"default\": utc().strftime(\"%Y/%m/%d %H00\"),\n            \"label\": \"Valid Timestamp (UTC):\",\n            \"min\": \"1986/01/01 0000\",\n        },\n        {\n            \"type\": \"select\",\n            \"options\": PDICT,\n            \"default\": \"active\",\n            \"name\": \"opt\",\n            \"label\": \"How to consider if an event is active [see footnote]\",\n        },\n        {\n            \"type\": \"select\",\n            \"options\": sectors,\n            \"name\": \"csector\",\n            \"default\": \"nws\",\n            \"label\": \"Select state/sector\",\n        },\n        {\n            \"type\": \"select\",\n            \"options\": PDICT2,\n            \"name\": \"add\",\n            \"default\": \"none\",\n            \"label\": \"Include Statistics in Legend (slows down plot)\",\n        },\n        {\n            \"type\": \"select\",\n            \"options\": PDICT3,\n            \"name\": \"sc\",\n            \"default\": \"yes\",\n            \"label\": \"Show Counties\",\n        },\n    ]\n    return desc\n\n\ndef plotsbw(mp, df):\n    \"\"\"Do sbw plotting.\"\"\"\n    df[\"color\"] = df[\"ps\"].apply(lambda x: NWS_COLORS.get(x, \"k\"))\n    for panel in mp.panels:\n        df2 = df.to_crs(panel.crs).cx[\n            slice(*panel.get_xlim()), slice(*panel.get_ylim())\n        ]\n\n        if df2.empty:\n            continue\n        df2.plot(\n            ax=panel.ax,\n            aspect=None,\n            edgecolor=df2[\"color\"],\n            facecolor=\"None\",\n            lw=2,\n            zorder=Z_OVERLAY2 + 3,\n        )\n\n\ndef get_ps(pstr):\n    \"\"\".\"\"\"\n    return (\n        get_ps_string(*pstr.split(\".\"))\n        .replace(\"Advisory\", \"Adv\")\n        .replace(\"Small Craft for\", \"SC\")\n    )\n\n\ndef make_legend(mp, df, statdf, year):\n    \"\"\"Do legend work.\"\"\"\n    if \"zone_pop\" not in statdf.columns:\n        # Build out an estimate of all combos\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            domain = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n                select distinct phenomena || '.' || significance as key from\n                warnings WHERE vtec_year = :year\n                \"\"\"\n                ),\n                conn,\n                params={\"year\": year},\n                index_col=\"key\",\n            )\n    else:\n        domain = statdf\n\n    combos = None\n    for panel in mp.panels:\n        df2 = df.to_crs(panel.crs).cx[\n            slice(*panel.get_xlim()), slice(*panel.get_ylim())\n        ]\n\n        if df2.empty:\n            continue\n        combos = df2[\"ps\"].unique().tolist()\n    if not combos or len(mp.panels) > 1:\n        combos = df[\"ps\"].unique().tolist()\n    handles = []\n    labels = []\n    alphas = []\n    for key in domain.index.values:\n        present = False\n        if key in combos:\n            present = True\n            combos.remove(key)\n        handles.append(\n            Rectangle(\n                (0, 0),\n                1,\n                1,\n                fc=NWS_COLORS.get(key, \"k\"),\n                alpha=1 if present else 0.2,\n            )\n        )\n        label = get_ps(key)\n        if \"zone_pop\" in statdf.columns:\n            label += (\n                f\"\\n{statdf.at[key, 'final_pop']:,.0f} ppl,\"\n                f\" {statdf.at[key, 'final_area_sqkm']:,.0f} km$^2$\"\n            )\n        labels.append(label)\n        alphas.append(1 if present else 0.2)\n    for key in combos:\n        handles.append(\n            Rectangle(\n                (0, 0),\n                1,\n                1,\n                fc=NWS_COLORS.get(key, \"k\"),\n            )\n        )\n        labels.append(get_ps(key))\n        alphas.append(1)\n    legend = mp.panels[0].ax.legend(\n        handles,\n        labels,\n        ncol=5,\n        bbox_to_anchor=(-0.03, -0.02),\n        loc=\"upper left\",\n        fontsize=9,\n    )\n    for i, txt in enumerate(legend.get_texts()):\n        txt.set_alpha(alphas[i])\n\n\ndef plotdf(mp, df: gpd.GeoDataFrame):\n    \"\"\"Do plotting.\"\"\"\n    for panel in mp.panels:\n        for sig in [\"S\", \"Y\", \"A\", \"W\"]:\n            df2 = (\n                df[df[\"significance\"] == sig]\n                .to_crs(panel.crs)\n                .cx[slice(*panel.get_xlim()), slice(*panel.get_ylim())]\n            )\n\n            if df2.empty:\n                continue\n            df2.plot(\n                ax=panel.ax,\n                aspect=None,\n                color=df2[\"color\"],\n                zorder=Z_OVERLAY2 + 2,\n            )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    valid = ctx[\"valid\"].replace(tzinfo=timezone.utc)\n    isscol = \"issue\" if ctx[\"opt\"] == \"within\" else \"product_issue\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        ugcdf = gpd.read_postgis(\n            sql_helper(\n                \"\"\"\n            select w.ugc, simple_geom, phenomena, significance,\n            phenomena || '.' || significance as ps,\n            w.wfo || eventid || phenomena || significance as key\n            from warnings w\n            JOIN ugcs u on (w.gid = u.gid)\n            WHERE {isscol} <= :valid and expire >= :valid\n            ORDER by phenomena asc\n            \"\"\",\n                isscol=isscol,\n            ),\n            conn,\n            params={\"valid\": valid},\n            geom_col=\"simple_geom\",\n        )  # type: ignore\n        sbwdf = gpd.read_postgis(\n            sql_helper(\n                \"\"\"\n            select geom, phenomena, significance,\n            phenomena || '.' || significance as ps,\n            wfo || eventid || phenomena || significance as key\n            from sbw\n            WHERE polygon_begin <= :valid and polygon_end > :valid\n            ORDER by phenomena asc\n            \"\"\"\n            ),\n            conn,\n            params={\"valid\": valid},\n            geom_col=\"geom\",\n        )  # type: ignore\n    mp = MapPlot(\n        apctx=ctx,\n        nocaption=True,\n        figsize=(12.00, 12.00),\n        axes_position=[0.03, 0.38, 0.94, 0.54],\n    )\n    # Le Sigh\n    mp.fig.text(\n        0.1, 0.965, \"NWS Watch, Warning, and Advisory Map\", fontsize=20\n    )\n    mp.fig.text(\n        0.1,\n        0.94,\n        (\n            \"Based on Unofficial IEM Archives, \"\n            f\"Map Valid: {valid:%d %b %Y %H:%M} UTC\"\n        ),\n        fontsize=14,\n    )\n\n    if not ugcdf.empty:\n        if ctx[\"add\"] == \"stats\" and valid > utc(2005, 10, 1):\n            uri = (\n                f\"http://iem.local/plotting/auto/plot/224/opt:{ctx['opt']}::\"\n                f\"valid:{valid:%Y-%m-%d%%20%H%M}.csv\"\n            )\n            with requests.Session() as client:\n                try:\n                    resp = client.get(uri, timeout=60)\n                    resp.raise_for_status()\n                except Exception as exp:\n                    raise NoDataFound(\"Failed to fetch data\") from exp\n                sio = StringIO(resp.text)\n                statsdf = pd.read_csv(sio).set_index(\"key\")\n        else:\n            statsdf = pd.DataFrame({\"key\": ugcdf[\"ps\"].unique()}).set_index(\n                \"key\"\n            )\n        make_legend(mp, ugcdf, statsdf, valid.year - 1)\n        ugcdf[\"color\"] = ugcdf[\"ps\"].apply(lambda x: NWS_COLORS.get(x, \"k\"))\n        if not sbwdf.empty:\n            # remove rows from ugcdf where key is in sbwdf\n            ugcdf = ugcdf[~ugcdf[\"key\"].isin(sbwdf[\"key\"])]\n        plotdf(mp, ugcdf)\n        if not sbwdf.empty:\n            plotsbw(mp, sbwdf)\n    if ctx[\"sc\"] == \"yes\":\n        mp.drawcounties()\n    return mp.fig\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p248.py",
    "content": "\"\"\"\nThis chart displays the period each year between the first and last SPC/WPC\noutlook type for a given NWS forecast office, state or county.\nThe dates presented\nare the commonly considered date of outlook being valid for.  Technically,\nthe outlooks end at 12 UTC of the following day.</p>\n\n<p>If you select the \"View by Contiguous US\" option, there is no spatial\noverlay check possible at this time.</p>\n\n<p>An option exists to threshold the amount of spatial overlap between the\noutlook geometry and the NWS forecast office or state.  This is useful for\nthe situation of avoiding sliver touches or overlaps that aren't of perhaps\nsignificance.  There is an \"engulfs\" option, that requires a 99% overlap. A\n100% overlap is difficult for certain situations and this may generally be\ndifficult for offices that have marine zones.</p>\n\n<p>Autoplot <a href=\"/plotting/auto/?q=200\">200</a> is similar, but generates\nspatial heatmaps.</p>\n\"\"\"\n\nimport calendar\nfrom datetime import date, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.artist import setp\nfrom matplotlib.ticker import MaxNLocator\nfrom pyiem import reference\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_FEMA, get_monofont\nfrom iemweb.autoplot.scripts200.p200 import OUTLOOKS\n\nPDICT = {\n    \"0\": \"At least touches\",\n    \"5\": \"At least 5% overlap\",\n    \"50\": \"At least 50% overlap\",\n    \"99\": \"Engulfs\",\n}\nPDICT2 = {\n    \"conus\": \"View by Contiguous US\",\n    \"wfo\": \"View by Single NWS Forecast Office\",\n    \"state\": \"View by State\",\n    \"ugc\": \"View by Selected County/Zone\",\n    \"fema\": \"View by FEMA Region\",\n}\nPDICT3 = {\n    \"C\": \"SPC Convective Outlook\",\n    \"F\": \"SPC Fire Weather Outlook\",\n    \"E\": \"WPC Excessive Rainfall Outlook\",\n}\nPDICT4 = {\n    \"1\": \"1\",\n    \"2\": \"2\",\n    \"3\": \"3\",\n    \"4\": \"4\",\n    \"5\": \"5\",\n    \"6\": \"6\",\n    \"7\": \"7\",\n    \"8\": \"8\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"year\",\n            \"name\": \"year\",\n            \"default\": 1986,\n            \"label\": \"Start Year of Plot:\",\n            \"min\": 1986,\n        },\n        {\n            \"type\": \"select\",\n            \"options\": PDICT3,\n            \"default\": \"C\",\n            \"label\": \"Select Outlook Type:\",\n            \"name\": \"outlook_type\",\n        },\n        {\n            \"type\": \"select\",\n            \"options\": OUTLOOKS,\n            \"default\": \"CATEGORICAL.SLGT\",\n            \"label\": \"Select Outlook Threshold:\",\n            \"name\": \"threshold\",\n        },\n        {\n            \"type\": \"select\",\n            \"options\": PDICT4,\n            \"default\": \"1\",\n            \"label\": \"Select Day:\",\n            \"name\": \"day\",\n        },\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"wfo\",\n            options=PDICT2,\n            label=\"View by WFO, State or Zone?\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"wfo\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO:\",\n        ),\n        ARG_FEMA,\n        dict(type=\"state\", default=\"IA\", name=\"state\", label=\"Select State:\"),\n        {\n            \"type\": \"ugc\",\n            \"name\": \"ugc\",\n            \"default\": \"IAZ048\",\n            \"label\": \"Select County/Zone:\",\n        },\n        {\n            \"type\": \"select\",\n            \"options\": PDICT,\n            \"default\": \"0\",\n            \"label\": (\n                \"Select Spatial Overlap Threshold:<br />\"\n                \"<i>Warning: overlap percentage adds 10s of \"\n                \"seconds to plot generation</i>\"\n            ),\n            \"name\": \"overlap\",\n        },\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    wfo = ctx[\"wfo\"][:4]\n    opt = ctx[\"opt\"]\n    overlap = ctx[\"overlap\"]\n    state = ctx[\"state\"]\n    ugc = ctx[\"ugc\"]\n    fema = ctx[\"fema\"]\n    (category, threshold) = ctx[\"threshold\"].split(\".\", 1)\n\n    params = {\n        \"wfo\": wfo,\n        \"state\": state,\n        \"fema\": fema,\n        \"overlap\": int(overlap) / 100.0,\n        \"threshold\": threshold,\n        \"category\": category,\n        \"day\": ctx[\"day\"],\n        \"ugc\": ugc,\n        \"sts\": date(ctx[\"year\"], 1, 1),\n        \"outlook_type\": ctx[\"outlook_type\"].upper(),\n    }\n    geomtable = \"cwa\"\n    limiter = \"g.wfo = :wfo\"\n    geomcol = \"the_geom\"\n    ugcname = \"\"\n    if opt == \"state\":\n        geomtable = \"states\"\n        limiter = \"g.state_abbr = :state\"\n    elif opt == \"fema\":\n        geomcol = \"geom\"\n        geomtable = \"fema_regions\"\n        limiter = \"g.region = :fema\"\n    elif opt == \"ugc\":\n        geomtable = \"ugcs\"\n        limiter = \"g.ugc = :ugc and end_ts is null\"\n        geomcol = \"geom\"\n        pgconn, cursor = get_dbconnc(\"postgis\")\n        cursor.execute(\n            \"select name from ugcs where ugc = %s and end_ts is null\",\n            (ugc,),\n        )\n        ugcname = cursor.fetchone()[\"name\"]\n        cursor.close()\n        pgconn.close()\n    overlapsql = \"\"\n    if overlap != \"0\":\n        overlapsql = (\n            f\"and ST_Area(ST_Intersection(o.geom, g.{geomcol})::geography) / \"\n            f\"(select ST_Area({geomcol}::geography) from {geomtable} g \"\n            f\"where {limiter} limit 1) > :overlap\"\n        )\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        if opt == \"conus\":\n            df = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n                select distinct date(expire - '12 hours'::interval) as date\n                from spc_outlooks o WHERE o.outlook_type = :outlook_type and\n                o.day = :day\n                and o.threshold = :threshold and o.category = :category and\n                o.expire > :sts\n                \"\"\"\n                ),\n                conn,\n                params=params,\n                index_col=None,\n                parse_dates=\"date\",\n            )\n\n        else:\n            df = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n                select distinct date(expire - '12 hours'::interval) as date\n                from spc_outlooks o, {table} g WHERE {limiter}\n                and o.outlook_type = :outlook_type and o.day = :day\n                and o.threshold = :threshold and o.category = :category and\n                ST_Intersects(o.geom, g.{geomcol}) {overlapsql} and\n                o.expire > :sts\n                \"\"\",\n                    table=geomtable,\n                    geomcol=geomcol,\n                    limiter=limiter,\n                    overlapsql=overlapsql,\n                ),\n                conn,\n                params=params,\n                index_col=None,\n                parse_dates=\"date\",\n            )\n    if df.empty:\n        raise NoDataFound(\"No data found for query\")\n    df[\"doy\"] = df[\"date\"].dt.dayofyear\n    df[\"year\"] = df[\"date\"].dt.year\n\n    tt = OUTLOOKS[ctx[\"threshold\"]].split(\"(\")[0].strip()\n    title = (\n        f\"{'WPC' if ctx['outlook_type'] == 'E' else 'SPC'} Day \"\n        f\"{ctx['day']} {tt} Outlook\"\n    )\n    verb = \"Intersects\" if overlap != \"99\" else \"Engulfs\"\n    subtitle = (\n        f\"Based on Unofficial IEM Archives, {verb} [{wfo}] \"\n        f\"NWS {ctx['_nt'].sts[wfo]['name']} CWA\"\n    )\n    if opt == \"state\":\n        subtitle = f\"{verb} State of {reference.state_names[state]}\"\n    elif opt == \"ugc\":\n        subtitle = f\"{verb} County/Zone {ugcname} [{ugc}]\"\n    elif opt == \"conus\":\n        subtitle = \"Based on Unofficial IEM Archives, Contiguous US\"\n    elif opt == \"fema\":\n        subtitle = f\"{verb} FEMA Region {fema}\"\n    if ctx[\"overlap\"] not in [\"0\", \"99\"]:\n        subtitle += f\" with >= {overlap}% overlap\"\n    fig = figure(apctx=ctx, title=title, subtitle=subtitle)\n    ax = fig.add_axes((0.08, 0.1, 0.58, 0.8))\n    monofont = get_monofont()\n    for year, gdf in df.groupby(\"year\"):\n        size = max(gdf[\"doy\"].max() - gdf[\"doy\"].min(), 1)\n        ax.barh(\n            year,\n            size,\n            left=gdf[\"doy\"].min(),\n            ec=\"brown\",\n            fc=\"tan\",\n            align=\"center\",\n        )\n        ax.barh(\n            gdf[\"year\"].values,\n            [1] * len(gdf.index),\n            left=gdf[\"doy\"].values,\n            zorder=3,\n            color=\"r\",\n        )\n        # Add a label for the year on the RHS of ax\n        ax.annotate(\n            f\"{gdf['date'].min():%b %d} - {gdf['date'].max():%b %d, %Y}\",\n            xy=(1.01, year),\n            xycoords=(\"axes fraction\", \"data\"),\n            va=\"center\",\n            ha=\"left\",\n            color=\"k\",\n            fontproperties=monofont,\n        )\n    gdf = df[[\"year\", \"doy\"]].groupby(\"year\").agg([\"min\", \"max\"])\n    if len(gdf.index) > 2:\n        # Exclude first and last year in the average\n        avg_start = np.average(gdf[\"doy\", \"min\"].to_numpy()[1:-1])\n        avg_end = np.average(gdf[\"doy\", \"max\"].to_numpy()[1:-1])\n        ax.axvline(avg_start, ls=\":\", lw=2, color=\"k\")\n        ax.axvline(avg_end, ls=\":\", lw=2, color=\"k\")\n        x0 = date(2000, 1, 1)\n        _1 = (x0 + timedelta(days=int(avg_start))).strftime(\"%-d %b\")\n        _2 = (x0 + timedelta(days=int(avg_end))).strftime(\"%-d %b\")\n        ax.set_xlabel(f\"Average Start Date: {_1}, End Date: {_2}\")\n    ax.grid()\n    xticks = [1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335]\n    ax.set_xticks(xticks)\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_xlim(1, 367)\n    ax.set_ylabel(\"Year\")\n    ax.set_ylim(df[\"year\"].min() - 0.5, df[\"year\"].max() + 0.5)\n    ax.yaxis.set_major_locator(MaxNLocator(integer=True))\n\n    # __________________________________________\n    ax = fig.add_axes((0.86, 0.1, 0.1, 0.8))\n    gdf = df[[\"year\", \"doy\"]].groupby(\"year\").count()\n    ax.barh(gdf.index.values, gdf[\"doy\"].values, fc=\"blue\", align=\"center\")\n    for year, val in zip(gdf.index.values, gdf[\"doy\"].values, strict=False):\n        ax.annotate(\n            f\"{val}\",\n            xy=(1.01, year),\n            xycoords=(\"axes fraction\", \"data\"),\n            va=\"center\",\n            ha=\"left\",\n            fontproperties=monofont,\n        )\n    ax.set_ylim(df[\"year\"].min() - 0.5, df[\"year\"].max() + 0.5)\n    setp(ax.get_yticklabels(), visible=False)\n    ax.grid(True)\n    ax.set_xlabel(\"# Days\")\n    ax.xaxis.set_major_locator(MaxNLocator(3, integer=True))\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p249.py",
    "content": "\"\"\"\nThis map presents an hourly <a href=\"/iemre/\">IEM ReAnalysis</a> variable\nof your choice. <a href=\"/plotting/auto/?q=86\">Autoplot 86</a> is the daily\nvariant of this plot.\n\"\"\"\n\nimport os\nfrom datetime import datetime, timezone\n\nimport numpy as np\nfrom metpy.units import masked_array, units\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import get_hourly_ncname, hourly_offset\nfrom pyiem.plot import MapPlot, get_cmap, pretty_bins\nfrom pyiem.util import ncopen\n\nfrom iemweb.autoplot import ARG_IEMRE_DOMAIN\n\nPDICT = {\n    \"tmpk\": \"2m Air Temperature\",\n    \"dwpk\": \"2m Dew Point Temperature\",\n    \"skyc\": \"Sky Coverage\",\n    \"wind_speed\": \"10m Wind Speed\",\n    \"p01m\": \"1 Hour Precipitation\",\n    \"soil4t\": \"~0-10cm Soil Temperature\",\n    \"rsds\": \"Hourly Solar Radiation\",\n}\nPDICT2 = {\"c\": \"Contour Plot\", \"g\": \"Grid Cell Mesh\"}\nPDICT3 = {\n    \"yes\": \"Yes, mask the plot when appropriate\",\n    \"no\": \"No, do not mask the plot\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__}\n    today = datetime.today()\n    desc[\"arguments\"] = [\n        ARG_IEMRE_DOMAIN,\n        dict(\n            type=\"csector\",\n            name=\"csector\",\n            default=\"midwest\",\n            label=\"Select state/sector to plot\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"var\",\n            default=\"tmpk\",\n            label=\"Select Plot Variable:\",\n            options=PDICT,\n        ),\n        dict(\n            type=\"select\",\n            name=\"ptype\",\n            default=\"c\",\n            label=\"Select Plot Type:\",\n            options=PDICT2,\n        ),\n        dict(\n            type=\"datetime\",\n            name=\"valid\",\n            default=today.strftime(\"%Y/%m/%d 0000\"),\n            label=\"UTC Timestamp:\",\n            min=\"1950/01/01 0000\",\n        ),\n        {\n            \"type\": \"select\",\n            \"name\": \"clip\",\n            \"default\": \"yes\",\n            \"label\": \"Mask Plot Data?\",\n            \"options\": PDICT3,\n        },\n        dict(type=\"cmap\", name=\"cmap\", default=\"magma\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef unit_convert(nc, varname, idx0):\n    \"\"\"Convert units.\"\"\"\n    if varname == \"wind_speed\":\n        data = (\n            nc.variables[\"uwnd\"][idx0] ** 2 + nc.variables[\"vwnd\"][idx0] ** 2\n        ) ** 0.5\n        data = (\n            masked_array(\n                data,\n                units(\"meter / second\"),\n            )\n            .to(units(\"mile / hour\"))\n            .m\n        )\n    else:\n        data = nc.variables[varname][idx0]\n    if varname == \"p01m\":\n        data = masked_array(data, units(\"mm\")).to(units(\"inch\")).m\n    elif varname in [\n        \"tmpk\",\n        \"dwpk\",\n        \"soil4t\",\n    ]:\n        data = masked_array(data, units(\"degK\")).to(units(\"degF\")).m\n    return data\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    domain = ctx[\"domain\"]\n    gridnav = get_nav(\"iemre\", domain)\n    ptype = ctx[\"ptype\"]\n    valid = ctx[\"valid\"].replace(tzinfo=timezone.utc)\n    varname = ctx[\"var\"]\n    title = valid.strftime(\"%-d %B %Y %H:%M UTC\")\n    mpargs = {\n        \"apctx\": ctx,\n        \"axisbg\": \"white\",\n        \"nocaption\": True,\n        \"title\": f\"IEM Reanalysis of {PDICT.get(varname)} for {title}\",\n        \"subtitle\": \"Sourced from various NOAA/ECMWF IFS/ERA5-Land datasets\",\n    }\n    if domain != \"conus\":\n        ctx[\"csector\"] = \"custom\"\n        mpargs[\"east\"] = gridnav.right_edge\n        mpargs[\"west\"] = gridnav.left_edge\n        mpargs[\"south\"] = gridnav.bottom_edge\n        mpargs[\"north\"] = gridnav.top_edge\n\n    mp = MapPlot(**mpargs)\n\n    plot_units = \"\"\n    idx0 = hourly_offset(valid)\n    ncfn = get_hourly_ncname(valid.year, domain=domain)\n    if not os.path.isfile(ncfn):\n        raise NoDataFound(\"No Data Found.\")\n    with ncopen(ncfn) as nc:\n        cmap = get_cmap(ctx[\"cmap\"])\n        # Set bad values to hallow\n        cmap.set_bad(\"#FFFFFF00\")\n        data = unit_convert(nc, varname, idx0)\n        if np.ma.is_masked(np.max(data)):\n            raise NoDataFound(\"Data Unavailable\")\n        ptiles = np.nanpercentile(data.filled(np.nan), [5, 95, 99.9])\n        if varname == \"wind_speed\":\n            plot_units = \"mph\"\n            clevs = pretty_bins(0, ptiles[1])\n            clevs[0] = 0.01\n        elif varname == \"p01m\":\n            # Value is in W m**-2, we want MJ\n            plot_units = \"inch\"\n            if ptiles[2] < 1:\n                clevs = np.arange(0, 1.01, 0.1)\n            else:\n                clevs = pretty_bins(0, ptiles[2])\n            clevs[0] = 0.01\n            cmap.set_under(\"white\")\n        elif varname in [\n            \"tmpk\",\n            \"dwpk\",\n            \"soil4t\",\n        ]:\n            plot_units = \"F\"\n            clevs = pretty_bins(ptiles[0], ptiles[1])\n        elif varname == \"rsds\":\n            plot_units = \"W m**-2\"\n            # Could be zero at night :/\n            clevs = pretty_bins(0, max(ptiles[1], 100))\n        elif varname == \"skyc\":\n            plot_units = \"%\"\n            clevs = np.arange(0, 101, 10)\n\n    if ptype == \"c\":\n        x, y = np.meshgrid(gridnav.x_points, gridnav.y_points)\n        # in the case of contour, use the centroids on the grids\n        mp.contourf(\n            x,\n            y,\n            data,\n            clevs,\n            units=plot_units,\n            ilabel=True,\n            labelfmt=\"%.0f\",\n            cmap=cmap,\n            clip_on=ctx[\"clip\"] == \"yes\",\n        )\n    else:\n        mp.imshow(\n            data,\n            gridnav.affine,\n            gridnav.crs,\n            clevs=clevs,\n            cmap=cmap,\n            units=plot_units,\n            clip_on=ctx[\"clip\"] == \"yes\",\n        )\n\n    return mp.fig\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p250.py",
    "content": "\"\"\"\nThis autoplot presents some metrics when comparing a single variable between\ntwo airport weather stations.  The time zone of the first station is used for\nthe various subplots.  The top left panel shows a time series difference over\nthe period you selected.  The lower left panel shows a yearly mean value and\na +/- one standard deviation.\nThe top right panel shows a heatmap of the frequency of\nthe first station having a value greater than the second station by a certain\nthreshold.  The bottom right panel shows a violin plot of the monthly\ndistribution of differences.\n\"\"\"\n\nimport calendar\nfrom datetime import date, timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.dates import DateFormatter\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.util import utc\n\nPDICT = {\n    \"tmpf\": \"Air Temperature (°F)\",\n    \"dwpf\": \"Dew Point (°F)\",\n    \"sknt\": \"Wind Speed (knots)\",\n    \"drct\": \"Wind Direction (degrees)\",\n    \"alti\": \"Pressure Altimeter (inches)\",\n    \"vsby\": \"Visibility (miles)\",\n    \"gust\": \"Wind Gust (knots)\",\n    \"feel\": \"Feels Like Temp (°F)\",\n    \"mslp\": \"Mean Sea Level Pressure (mb)\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    desc[\"arguments\"] = [\n        dict(\n            type=\"zstation\",\n            name=\"zstation1\",\n            default=\"AMW\",\n            network=\"IA_ASOS\",\n            label=\"Select Station 1:\",\n        ),\n        dict(\n            type=\"zstation\",\n            name=\"zstation2\",\n            default=\"DSM\",\n            network=\"IA_ASOS\",\n            label=\"Select Station 2:\",\n        ),\n        dict(\n            type=\"select\",\n            name=\"varname\",\n            default=\"tmpf\",\n            options=PDICT,\n            label=\"Variable for Comparison\",\n        ),\n        {\n            \"type\": \"datetime\",\n            \"name\": \"sts\",\n            \"default\": utc().strftime(\"%Y/%m/%d 0000\"),\n            \"label\": \"Start Time (UTC):\",\n            \"min\": \"1900/01/01 0000\",\n        },\n        {\n            \"type\": \"datetime\",\n            \"name\": \"ets\",\n            \"default\": utc().strftime(\"%Y/%m/%d 2300\"),\n            \"label\": \"End Time (UTC):\",\n            \"min\": \"1900/01/01 0000\",\n            \"max\": utc().strftime(\"%Y/%m/%d 2359\"),\n        },\n        {\n            \"type\": \"cmap\",\n            \"name\": \"cmap\",\n            \"default\": \"Greens\",\n            \"label\": \"Color Map\",\n        },\n        {\n            \"type\": \"float\",\n            \"name\": \"diff\",\n            \"default\": 0,\n            \"label\": \"Difference Threshold for frequency heatmap\",\n        },\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    sts = ctx[\"sts\"].replace(tzinfo=timezone.utc)\n    ets = ctx[\"ets\"].replace(tzinfo=timezone.utc)\n    station1 = ctx[\"zstation1\"]\n    station2 = ctx[\"zstation2\"]\n    varname = ctx[\"varname\"]\n\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        SELECT date_trunc('hour', valid + '10 minutes'::interval)\n            at time zone 'UTC' as utc_valid,\n        station, {varname} from alldata\n        WHERE station = ANY(:stids) and {varname} is not null\n        and report_type = 3\n        order by utc_valid asc\n        \"\"\",\n                varname=varname,\n            ),\n            conn,\n            params={\"stids\": [station1, station2]},\n            index_col=None,\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found with initial query.\")\n    df[\"utc_valid\"] = df[\"utc_valid\"].dt.tz_localize(timezone.utc)\n    tz = ZoneInfo(ctx[\"_nt1\"].sts[station1][\"tzname\"] or \"America/Chicago\")\n    df[\"local_valid\"] = df[\"utc_valid\"].dt.tz_convert(tz)\n    df = df.pivot_table(\n        index=\"local_valid\", columns=\"station\", values=varname, aggfunc=\"mean\"\n    )\n    # drop any rows with NaN in either column\n    df = df.dropna()\n    if df.empty or station1 not in df.columns or station2 not in df.columns:\n        raise NoDataFound(\"No data found after pivoting\")\n    df[\"diff\"] = df[station1] - df[station2]\n\n    fig = figure(\n        title=(\n            f\"[{station1}] {ctx['_nt1'].sts[station1]['name']} minus \"\n            f\"[{station2}] {ctx['_nt2'].sts[station2]['name']}\"\n        ),\n        subtitle=(\n            f\"Hourly {PDICT[varname]} Difference \"\n            f\"({sts.strftime('%-d %b %Y')} - {ets.strftime('%-d %b %Y')}) \"\n            f\"POR: {df.index[0].strftime('%-d %b %Y')} - \"\n            f\"{df.index[-1].strftime('%-d %b %Y')}\"\n        ),\n        apctx=ctx,\n    )\n    # Plot the specified data period\n    ax = fig.add_axes((0.08, 0.55, 0.5, 0.35))\n    df2 = df.loc[sts:ets]\n    if not df2.empty:\n        ax.plot(df2.index.values, df2[\"diff\"], label=\"Difference\", lw=2)\n        ax.set_ylabel(f\"{PDICT[varname]} Difference\")\n        ax.grid(True)\n        if ets - sts < timedelta(days=2):\n            fmt = \"%-I %p\\n%-d %b\"\n        else:\n            fmt = \"%-d %b\\n%Y\"\n        ax.xaxis.set_major_formatter(DateFormatter(fmt, tz=tz))\n\n    # Plot the yearly means and standard deviation\n    ax = fig.add_axes((0.08, 0.1, 0.5, 0.35))\n    yearly = df[\"diff\"].groupby(df.index.year).agg([\"mean\", \"std\"])\n    ax.fill_between(\n        yearly.index.values,\n        yearly[\"mean\"] - yearly[\"std\"],\n        yearly[\"mean\"] + yearly[\"std\"],\n        color=\"lightgrey\",\n        label=\"+/- 1 \\u03c3\",\n    )\n    ax.plot(yearly.index.values, yearly[\"mean\"], label=\"Mean\", lw=2)\n    ax.set_ylabel(f\"{PDICT[varname]} Difference\")\n    ax.set_xlabel(\"Year\")\n    ax.grid(True)\n    ax.legend(loc=\"best\", ncol=2)\n\n    # Plot the monthly distribution of differences as half violin plot\n    ax = fig.add_axes((0.65, 0.1, 0.32, 0.3))\n    monthly = df[\"diff\"].groupby(df.index.month).apply(np.array)\n    ax.violinplot(\n        monthly.values, showextrema=False, showmeans=True, widths=0.7\n    )\n    ax.set_ylabel(f\"{PDICT[varname]} Difference\")\n    ax.set_xticks(range(1, 13))\n    ax.set_xticklabels(calendar.month_abbr[1:])\n    ax.set_title(\"Monthly Distribution\")\n    ax.grid(True)\n    ptiles = df[\"diff\"].quantile([0.01, 0.99])\n    ax.set_ylim(ptiles.iloc[0], ptiles.iloc[1])\n\n    # Plot the frequency of differences by week of year and hour of day\n    df[\"hour\"] = df.index.hour\n    df[\"week\"] = df.index.dayofyear // 7\n    df[\"hit\"] = np.where(df[\"diff\"] >= ctx[\"diff\"], 1, 0)\n    freq = df[[\"week\", \"hour\", \"hit\"]].groupby([\"week\", \"hour\"]).mean()\n    freq = freq.unstack(level=\"hour\")\n    H = freq.values\n    ax = fig.add_axes((0.65, 0.53, 0.32, 0.32))\n    res = ax.imshow(\n        H * 100.0,\n        aspect=\"auto\",\n        interpolation=\"nearest\",\n        extent=[0, 53, 0, 23],\n        cmap=ctx[\"cmap\"],\n    )\n    fig.colorbar(res, ax=ax, label=\"Frequency [%]\")\n    units = PDICT[varname].split()[-1]\n    ax.set_title(f\"Freq {station1}-{station2} > {ctx['diff']:.2f}{units}\")\n    ax.set_ylabel(ctx[\"_nt1\"].sts[station1][\"tzname\"])\n    ax.set_xlabel(\"Week of Year\")\n    ax.set_xticks(range(0, 53, 5))\n    ax.set_yticks(range(0, 24, 3))\n    ax.set_yticklabels(\n        [\"Mid\", \"3 AM\", \"6 AM\", \"9 AM\", \"Noon\", \"3 PM\", \"6 PM\", \"9 PM\"]\n    )\n    # Label the x-axis with an approximate month\n    ax.set_xticklabels(\n        [\n            (date(2000, 1, 1) + timedelta(days=int(x * 7))).strftime(\"%-d\\n%b\")\n            for x in ax.get_xticks()\n        ]\n    )\n    ax.grid(True)\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p251.py",
    "content": "\"\"\"\nThe purpose of this autoplot is to generate a time series of NWS warning load\nwith time for short fuse warnings.\n\"\"\"\n\nfrom datetime import timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport matplotlib.dates as mdates\nimport matplotlib.ticker as mticker\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest, NoDataFound\nfrom pyiem.nws.vtec import NWS_COLORS\nfrom pyiem.plot import figure_axes\nfrom pyiem.util import utc\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 300}\n    utcnow = utc()\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"networkselect\",\n            \"name\": \"wfo\",\n            \"all\": True,\n            \"label\": \"Select WFO:\",\n            \"default\": \"_ALL\",\n            \"network\": \"WFO\",\n        },\n        {\n            \"type\": \"datetime\",\n            \"name\": \"sts\",\n            \"default\": f\"{utcnow - timedelta(days=1):%Y/%m/%d %H00}\",\n            \"label\": \"Start Time (UTC):\",\n            \"min\": \"1986/01/01 0000\",\n            \"max\": utc().strftime(\"%Y/%m/%d 2359\"),\n        },\n        {\n            \"type\": \"datetime\",\n            \"name\": \"ets\",\n            \"default\": f\"{utcnow:%Y/%m/%d %H%M}\",\n            \"label\": \"End Time (UTC) (period less than 96 hours):\",\n            \"min\": \"1986/01/01 0000\",\n            \"max\": utc().strftime(\"%Y/%m/%d 2359\"),\n        },\n    ]\n    return desc\n\n\ndef getp(conn, phenomena, wfo, sts, ets):\n    \"\"\"Do Query\"\"\"\n    wfolimiter = \"\" if wfo == \"_ALL\" else \" and wfo = :wfo \"\n    params = {\n        \"wfo\": wfo,\n        \"ssts\": sts - timedelta(hours=12),\n        \"sts\": sts,\n        \"ets\": ets,\n        \"phenomena\": phenomena,\n    }\n    res = conn.execute(\n        sql_helper(\n            \"\"\"\n     WITH data as (\n        select distinct vtec_year, wfo, eventid, phenomena,\n        generate_series(issue, expire, '1 minute'::interval) as t\n        from warnings where issue > :ssts and\n        issue < :ets and phenomena = :phenomena and significance = 'W'\n             {wfolimiter}),\n    agg as (\n        SELECT t, count(*) from data GROUP by t\n    ),\n     ts as (\n        select generate_series(:sts, :ets, '1 minute'::interval) as t\n    )\n\n     SELECT ts.t at time zone 'UTC' as utc_valid,\n     coalesce(agg.count, 0) as cnt from ts\n     LEFT JOIN agg on (ts.t = agg.t)\n     ORDER by ts.t ASC\n    \"\"\",\n            wfolimiter=wfolimiter,\n        ),\n        params,\n    )\n    times = []\n    counts = []\n    for row in res:\n        times.append(row[0])\n        counts.append(row[1])\n\n    return times, counts\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    wfo = ctx[\"wfo\"]\n    sts = ctx[\"sts\"].replace(tzinfo=timezone.utc)\n    ets = ctx[\"ets\"].replace(tzinfo=timezone.utc)\n    if (ets - sts) > timedelta(days=4):\n        raise IncompleteWebRequest(\"Sorry, period must be less than 96 hours.\")\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\n        \"name\": \"All Offices\",\n        \"tzname\": \"America/Chicago\",\n    }\n    tzinfo = ZoneInfo(ctx[\"_nt\"].sts[wfo][\"tzname\"])\n\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        to_t, to_c = getp(conn, \"TO\", wfo, sts, ets)\n        _, sv_c = getp(conn, \"SV\", wfo, sts, ets)\n        _, ff_c = getp(conn, \"FF\", wfo, sts, ets)\n    df = pd.DataFrame({\"valid\": to_t, \"tor\": to_c, \"svr\": sv_c, \"ffw\": ff_c})\n    if df.empty:\n        raise NoDataFound(\"Sorry, no data found.\")\n    df[\"valid\"] = df[\"valid\"].dt.tz_localize(ZoneInfo(\"UTC\"))\n    df = df.set_index(\"valid\")\n    df[\"tor_ffw\"] = df[\"tor\"] + df[\"ffw\"]\n    df[\"all\"] = df[\"tor\"] + df[\"ffw\"] + df[\"svr\"]\n    df[\"svr_tor\"] = df[\"svr\"] + df[\"tor\"]\n\n    lt0 = df.index[1].tz_convert(tzinfo)\n    lt1 = df.index[-5].tz_convert(tzinfo)\n    if lt0.day == lt1.day:\n        datetitle = lt0.strftime(\"%-d %b %Y\")\n    else:\n        datetitle = f\"{lt0.strftime('%-d %b')} to {lt1.strftime('%-d %b %Y')}\"\n\n    (fig, ax) = figure_axes(\n        title=(\n            f\"{datetitle} NWS {ctx['_nt'].sts[wfo]['name']}:: \"\n            \"Storm Based Warning Load\"\n        ),\n        subtitle=\"Unofficial IEM Archives, presented as a stacked bar chart\",\n        apctx=ctx,\n    )\n\n    ax.bar(\n        df.index,\n        df[\"all\"],\n        width=1 / 1440.0,\n        color=NWS_COLORS[\"SV.W\"],\n        label=\"Severe T'Storm\",\n    )\n    ax.bar(\n        df.index,\n        df[\"tor_ffw\"],\n        width=1 / 1440.0,\n        color=NWS_COLORS[\"TO.W\"],\n        label=\"Tornado\",\n    )\n    ax.bar(\n        df.index,\n        df[\"ffw\"],\n        width=1 / 1440.0,\n        color=\"g\",  # Eh\n        label=\"Flash Flood\",\n    )\n    if (ets - sts) < timedelta(days=2):\n        ax.plot(\n            df.index,\n            df[\"all\"],\n            color=\"k\",\n            drawstyle=\"steps-post\",\n        )\n        ax.plot(\n            df.index,\n            df[\"tor_ffw\"],\n            color=\"k\",\n            drawstyle=\"steps-post\",\n        )\n        ax.plot(\n            df.index,\n            df[\"ffw\"],\n            color=\"k\",\n            drawstyle=\"steps-post\",\n        )\n\n    ax.grid(True)\n    hours = range(0, 24, 3)\n    fmt = \"%-I %p\"\n    if (ets - sts) > timedelta(days=2):\n        hours = range(0, 24, 12)\n        fmt = \"%-I %p\\n%-d %b\"\n    elif (ets - sts) > timedelta(days=1):\n        hours = range(0, 24, 6)\n        fmt = \"%-I %p\\n%-d %b\"\n    ax.xaxis.set_major_locator(mdates.HourLocator(byhour=hours, tz=tzinfo))\n    ax.xaxis.set_major_formatter(mdates.DateFormatter(fmt, tz=tzinfo))\n\n    ax.set_ylabel(\"Total Warning Count (SVR+TOR+FFW)\")\n    ax.legend(loc=1, ncol=2)\n    ax.set_ylim(bottom=0.1, top=df[\"all\"].max() * 1.3)\n    ax.yaxis.set_major_locator(mticker.MaxNLocator(integer=True))\n    ax.set_xlim(sts, ets)\n    ax.set_xlabel(f\"Timezone: {ctx['_nt'].sts[wfo]['tzname']}\")\n\n    def ff(val):\n        \"\"\"Format\"\"\"\n        bah = fmt.replace(\"\\n\", \" \").replace(\"%-I\", \"%-I:%M\")\n        return val.astimezone(tzinfo).strftime(bah)\n\n    ax.annotate(\n        f\"TOR+SVR+FFW Max: {df['all'].max()} @{ff(df['all'].idxmax())}\"\n        f\"\\nTOR+SVR Max: {df['svr_tor'].max()} @{ff(df['svr_tor'].idxmax())}\"\n        f\"\\nTOR Max: {df['tor'].max()} @{ff(df['tor'].idxmax())}\"\n        f\"\\nSVR Max: {df['svr'].max()} @{ff(df['svr'].idxmax())}\"\n        f\"\\nFFW Max: {df['ffw'].max()} @{ff(df['ffw'].idxmax())}\",\n        xy=(0.01, 0.99),\n        xycoords=\"axes fraction\",\n        bbox=dict(facecolor=\"white\"),\n        ha=\"left\",\n        va=\"top\",\n    )\n\n    return fig, df.reset_index()\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p252.py",
    "content": "\"\"\"\nThis autoplot generates a map of the frequency of having at least one day\nat-or-above or below a given threshold between an inclusive period of days.\n\n<p>If you set the start date to a date greater than the end date, the effect\nis to search the period including 1 January.\n\"\"\"\n\nfrom datetime import date\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot.geoplot import MapPlot\n\nPDICT3 = {\"contour\": \"Contour + Plot Values\", \"values\": \"Plot Values Only\"}\nPDICT2 = {\n    \"aoa\": \"At or Above\",\n    \"below\": \"Below\",\n}\nPDICT = {\n    \"high\": \"High Temperature\",\n    \"low\": \"Low Temperature\",\n    \"precip\": \"Precipitation\",\n    \"snow\": \"Snowfall\",\n    \"era5land_soilt4_avg\": \"0-10cm ERA5Land Avg Soil Temperature\",\n}\nUNITS = {\n    \"high\": \"F\",\n    \"low\": \"F\",\n    \"precip\": \"inch\",\n    \"snow\": \"inch\",\n    \"era5land_soilt4_avg\": \"F\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"select\",\n            \"name\": \"var\",\n            \"default\": \"high\",\n            \"label\": \"Which variable to plot:\",\n            \"options\": PDICT,\n        },\n        {\n            \"type\": \"select\",\n            \"name\": \"w\",\n            \"default\": \"aoa\",\n            \"label\": \"Threshold Direction:\",\n            \"options\": PDICT2,\n        },\n        dict(type=\"state\", name=\"sector\", default=\"IA\", label=\"Select State:\"),\n        dict(\n            type=\"select\",\n            name=\"popt\",\n            default=\"contour\",\n            label=\"Plot Display Options:\",\n            options=PDICT3,\n        ),\n        {\n            \"type\": \"sday\",\n            \"name\": \"sday\",\n            \"default\": \"0101\",\n            \"label\": \"Start Day (inclusive):\",\n        },\n        {\n            \"type\": \"sday\",\n            \"name\": \"eday\",\n            \"default\": \"1231\",\n            \"label\": \"End Day (inclusive):\",\n        },\n        {\n            \"type\": \"float\",\n            \"name\": \"threshold\",\n            \"default\": 100,\n            \"label\": \"Threshold Value:\",\n        },\n        dict(\n            type=\"year\",\n            default=1893,\n            optional=True,\n            name=\"syear\",\n            label=\"Limit search to years after (inclusive):\",\n        ),\n        dict(\n            type=\"year\",\n            default=date.today().year,\n            optional=True,\n            name=\"eyear\",\n            label=\"Limit search to years before (inclusive):\",\n        ),\n        dict(type=\"cmap\", name=\"cmap\", default=\"BrBG\", label=\"Color Ramp:\"),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    sector = ctx[\"sector\"]\n    if len(sector) != 2:\n        raise NoDataFound(\"Sorry, this app doesn't support multi-state plots.\")\n    varname = ctx[\"var\"]\n    threshold = ctx[\"threshold\"]\n    if varname in [\"high\", \"low\"]:\n        threshold = int(threshold)\n    nt = NetworkTable(f\"{sector}CLIMATE\", only_online=False)\n    syear = ctx.get(\"syear\", 1893)\n    eyear = ctx.get(\"eyear\", date.today().year)\n    comp = \">=\" if ctx[\"w\"] == \"aoa\" else \"<\"\n    sday_limiter = \"sday >= :sday and sday <= :eday\"\n    if ctx[\"sday\"] > ctx[\"eday\"]:\n        sday_limiter = \"(sday >= :sday or sday <= :eday)\"\n    table = f\"alldata_{sector.lower()}\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            WITH events as (\n                SELECT station, year,\n                max(case when {varname} {comp} :t then 1 else 0 end) as hit\n                from {table} WHERE {sday_limiter} and\n                year >= :syear and year <= :eyear and\n                substr(station, 3, 4) != '0000'\n                and substr(station, 3, 1) not in ('C', 'D', 'T')\n                and {varname} is not null\n                GROUP by station, year\n            )\n            SELECT station, count(*) as count, sum(hit) as events\n            from events GROUP by station ORDER by station ASC\n            \"\"\",\n                table=table,\n                varname=varname,\n                comp=comp,\n                sday_limiter=sday_limiter,\n            ),\n            conn,\n            params={\n                \"t\": threshold,\n                \"sday\": ctx[\"sday\"].strftime(\"%m%d\"),\n                \"eday\": ctx[\"eday\"].strftime(\"%m%d\"),\n                \"syear\": syear,\n                \"eyear\": eyear,\n            },\n            index_col=\"station\",\n        )\n    if df.empty:\n        raise NoDataFound(\"No data found\")\n    # Require at least 50% of the years to have data\n    df = df[df[\"count\"] > (eyear - syear) / 2]\n    if df.empty:\n        raise NoDataFound(\"No data found\")\n\n    df[\"lat\"] = np.nan\n    df[\"lon\"] = np.nan\n    for station in df.index.values:\n        if station not in nt.sts:\n            continue\n        df.at[station, \"lat\"] = nt.sts[station][\"lat\"]\n        df.at[station, \"lon\"] = nt.sts[station][\"lon\"]\n\n    df = df[df[\"lat\"].notna()]\n    df[\"frequency\"] = df[\"events\"] / df[\"count\"] * 100.0\n    subtitle = \"based on NWS COOP and IEM Daily Estimates\"\n    if varname.startswith(\"era5land\"):\n        subtitle = \"based on ERA5 Land Grid Point Estimates\"\n    if \"syear\" in ctx:\n        subtitle += f\" [{syear}-{eyear}]\"\n    title = (\n        f\"Percent of Years with 1+ Days of {PDICT[varname]} \"\n        f\"{comp} {threshold} {UNITS[varname]} between \"\n        f\"{ctx['sday']:%-d %b} and {ctx['eday']:%-d %b}\"\n    )\n    mp = MapPlot(\n        apctx=ctx,\n        sector=\"state\",\n        state=ctx[\"sector\"],\n        continental_color=\"white\",\n        title=title,\n        subtitle=subtitle,\n        nocaption=True,\n    )\n    if ctx[\"popt\"] == \"contour\":\n        mp.contourf(\n            df[\"lon\"].to_numpy(),\n            df[\"lat\"].to_numpy(),\n            df[\"frequency\"].to_numpy(),\n            np.arange(0, 101, 10),\n            cmap=ctx[\"cmap\"],\n            extend=\"neither\",\n        )\n    mp.plot_values(\n        df[\"lon\"].to_numpy(),\n        df[\"lat\"].to_numpy(),\n        df[\"frequency\"].to_numpy(),\n        fmt=\"%.0f\",\n        labelbuffer=5,\n    )\n    mp.drawcounties()\n\n    return mp.fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p253.py",
    "content": "\"\"\"\nThis autoplot combines\n<a href=\"https://apps.dat.noaa.gov/stormdamage/damageviewer/\">\nNWS Damage Assessment Toolkit</a> (DAT) tornado tracks\n(lines) with Tornado Warning (polygons) to provide along track estimates of\nlead time.  This is all unofficial, of course, and makes assumptions about\nconstant travel speed of the tornado along the track.  The lead time is\nevaluated at 1 minute intervals and follows a method found in:\nStumpf 2024: <a\nhref=\"https://journals.ametsoc.org/view/journals/wefo/39/5/WAF-D-23-0153.1.xml\">\nA Geospatial Verification Method for Severe Convective Weather\nWarnings: Implications for Current and Future Warning Methods</a>. Points\nreceiving a warning after observation are assigned a negative lead time. Points\nreceiving no warning are assigned a no lead time and not considered in the\nlead time average.\n</p>\n\n<p>The data download option will provide the discritized points along the\ntornado track with the lead time in minutes.</p>\n\n\"\"\"\n\nfrom datetime import timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport geopandas as gpd\nimport matplotlib.colors as mpcolors\nimport matplotlib.dates as mpdates\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.colorbar import ColorbarBase\nfrom matplotlib.colors import rgb2hex\nfrom matplotlib.lines import Line2D\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot import get_cmap\nfrom pyiem.plot.geoplot import MAIN_AX_BOUNDS, MapPlot\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    return {\n        \"description\": __doc__,\n        \"data\": True,\n        \"cache\": 86400,\n        \"gallery\": {\n            \"dat\": \"2024-05-21\",\n            \"datglobalid\": \"{495DE596-B299-41FE-9C90-13C87E43FE0B}\",\n        },\n        \"arguments\": [\n            {\n                \"type\": \"dat\",\n                \"name\": \"dat\",\n                \"default\": \"2024-05-21\",\n                \"label\": \"Select Date + Tornado Track to plot:\",\n            },\n            {\n                \"type\": \"cmap\",\n                \"name\": \"cmap\",\n                \"default\": \"gist_rainbow\",\n                \"label\": \"Color Ramp:\",\n            },\n        ],\n    }\n\n\ndef plot_points(mp, pts):\n    \"\"\"Plot the discritized points.\"\"\"\n    pos = pts[pts[\"lead\"] >= 0]\n    if not pos.empty:\n        pos.to_crs(mp.panels[0].crs).plot(\n            ax=mp.panels[0].ax,\n            aspect=None,\n            fc=pos[\"color\"],\n            ec=\"k\",\n            zorder=11,\n        )\n    pos = pts[pts[\"lead\"] < 0]\n    if not pos.empty:\n        pos.to_crs(mp.panels[0].crs).plot(\n            ax=mp.panels[0].ax,\n            aspect=None,\n            c=\"k\",\n            marker=\"*\",\n            zorder=11,\n        )\n    pos = pts[pts[\"lead\"].isna()]\n    if not pos.empty:\n        pos.to_crs(mp.panels[0].crs).plot(\n            ax=mp.panels[0].ax,\n            aspect=None,\n            c=\"k\",\n            marker=\"x\",\n            zorder=11,\n        )\n\n\ndef plot_tow(tow, mp, tzinfo):\n    \"\"\"Plot the tornado warnings.\"\"\"\n    tow.to_crs(mp.panels[0].crs).plot(\n        ax=mp.panels[0].ax,\n        aspect=None,\n        facecolor=\"#ff000033\",\n        edgecolor=\"#ff0000ff\",\n        lw=1.5,\n        zorder=9,\n    )\n    bounds = mp.panels[0].ax.get_xlim() + mp.panels[0].ax.get_ylim()\n    # status positions for label placement\n    # LL, UR, UL, LR\n    status = [\n        (0.1, 0.1),\n        (0.3, 0.9),  # legend\n        (0.9, 0.9),\n        (0.9, 0.1),\n    ]\n    for _, row in tow.to_crs(mp.panels[0].crs).iterrows():\n        label = \"%s Tor Warning #%s\\n%s till %s\" % (\n            row[\"wfo\"],\n            row[\"eventid\"],\n            row[\"utc_issue\"].astimezone(tzinfo).strftime(\"%-I:%M %p\"),\n            row[\"utc_expire\"].astimezone(tzinfo).strftime(\"%-I:%M %p\"),\n        )\n        x_frac = (row[\"geom\"].centroid.x - bounds[0]) / (bounds[1] - bounds[0])\n        y_frac = (row[\"geom\"].centroid.y - bounds[2]) / (bounds[3] - bounds[2])\n        if x_frac < 0.5 and y_frac < 0.5:  # LL\n            pos = status[0]\n            status[0] = (status[0][0], status[0][1] + 0.1)\n        elif x_frac <= 0.5 <= y_frac:  # UL\n            pos = status[1]\n            status[1] = (status[1][0], status[1][1] - 0.1)\n        elif x_frac > 0.5 and y_frac >= 0.5:  # UR\n            pos = status[2]\n            status[2] = (status[2][0], status[2][1] - 0.1)\n        else:\n            pos = status[3]\n            status[3] = (status[3][0], status[3][1] + 0.1)\n        mp.panels[0].ax.annotate(\n            label,\n            xy=(max(min(0.98, x_frac), 0.02), max(min(0.98, y_frac), 0.02)),\n            xytext=pos,\n            xycoords=\"axes fraction\",\n            textcoords=\"axes fraction\",\n            arrowprops=dict(facecolor=\"black\", shrink=0.05, width=2),\n            bbox=dict(color=\"#f1bebe\", boxstyle=\"round,pad=0.1\"),\n            ha=\"center\",\n            color=\"k\",\n            zorder=12,\n        )\n\n\ndef plot_timeseries(mp, pts, tzinfo):\n    \"\"\"Show a time profile of the lead time.\"\"\"\n    ax = mp.fig.add_axes([0.4, 0.06, 0.35, 0.13])\n    ax.plot(pts[\"valid\"], pts[\"lead\"], lw=2, color=\"k\", zorder=1)\n    ax.scatter(pts[\"valid\"], pts[\"lead\"], c=pts[\"color\"], zorder=2)\n    ax.set_xlim(pts[\"valid\"].min(), pts[\"valid\"].max())\n    ax.set_yticks(range(0, 61, 15))\n    ax.xaxis.set_major_formatter(\n        mpdates.DateFormatter(\"%-I:%M\\n%p\", tz=tzinfo)\n    )\n    ax.grid(True)\n    ax.text(\n        0.01,\n        1.01,\n        f\"Lead Time Profile (minutes) [min: {pts['lead'].min():.0f} \"\n        f\"max: {pts['lead'].max():.0f}]\",\n        transform=ax.transAxes,\n        va=\"bottom\",\n        ha=\"left\",\n        bbox=dict(facecolor=\"white\", edgecolor=\"tan\", pad=1),\n    )\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    # Eh\n    datglobalid = ctx[\"datglobalid\"]\n    if datglobalid is None or datglobalid == \"\":\n        raise NoDataFound(\"No DAT globalid provided...\")\n\n    nt = NetworkTable(\"WFO\")\n    tzinfo = ZoneInfo(\"America/Chicago\")\n\n    # Get the track\n    trackgdf = gpd.read_file(\n        \"https://services.dat.noaa.gov/arcgis/rest/services/\"\n        \"nws_damageassessmenttoolkit/DamageViewer/FeatureServer/1/query?\"\n        f\"where=globalid%3D%27%7B{datglobalid[1:-1]}%7D%27&\"\n        \"geometryType=esriGeometryPolyline&outFields=*&\"\n        \"returnGeometry=true&f=geojson\"\n    )\n    if len(trackgdf.index) != 1:\n        raise NoDataFound(\"No track found for globalid provided, ask IEM...\")\n    wfo = trackgdf.iloc[0][\"wfo\"]\n    if wfo is not None and len(wfo) >= 3:\n        tzinfo = ZoneInfo(nt.sts[wfo[:3]][\"tzname\"])\n    # convert the starttime (java ticks) to a UTC datetime\n    for col in [\"starttime\", \"endtime\"]:\n        trackgdf[col] = pd.to_datetime(\n            trackgdf[col] / 1000,\n            unit=\"s\",\n        ).dt.tz_localize(timezone.utc)\n    track_sts = trackgdf.iloc[0][\"starttime\"]\n    track_ets = trackgdf.iloc[0][\"endtime\"]\n    # Get the warning polygons\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        tow = gpd.read_postgis(\n            sql_helper(\n                \"\"\"\n            SELECT wfo, eventid, phenomena, significance,\n            issue at time zone 'UTC' as utc_issue,\n            expire at time zone 'UTC' as utc_expire,\n            geom from sbw WHERE vtec_year = :year and phenomena = 'TO' and\n            significance = 'W'\n            and status = 'NEW' and issue <= :ets and expire >= :sts and\n            ST_Intersects(geom, ST_SetSRID(ST_GeomFromEWKT(:geom), 4326))\n            ORDER by utc_issue ASC\n            \"\"\"\n            ),\n            conn,\n            params={\n                \"year\": trackgdf.iloc[0][\"starttime\"].year,\n                \"sts\": track_sts,\n                \"ets\": track_ets,\n                \"geom\": trackgdf.iloc[0][\"geometry\"].wkt,\n            },\n            geom_col=\"geom\",\n        )  # type: ignore\n    if not tow.empty:\n        for col in [\"utc_issue\", \"utc_expire\"]:\n            tow[col] = tow[col].dt.tz_localize(timezone.utc)\n\n    minutes = int((track_ets - track_sts).total_seconds() / 60.0)\n    if minutes <= 0:\n        raise NoDataFound(\"Tornado track has no time duration in DAT!\")\n    # Do work in US Albers\n    utm_track = trackgdf.to_crs(epsg=2163).geometry[0]\n    speed = utm_track.length / minutes * 60.0  # km/hr\n    speed_mph = speed * 0.621371 / 1000.0\n    rows = []\n    for minute in range(minutes + 1):\n        # Compute the time of the segment\n        valid = track_sts + timedelta(minutes=minute)\n        # Compute the distance of the segment\n        pt = utm_track.interpolate(minute / minutes * utm_track.length)\n        rows.append({\"geom\": pt, \"valid\": valid})\n    cmap = get_cmap(ctx[\"cmap\"])\n    if cmap.N < 13:\n        bins = list(range(0, 61, 10))\n    else:\n        bins = list(range(0, 61, 5))\n    norm = mpcolors.BoundaryNorm(bins, cmap.N)\n\n    pts = gpd.GeoDataFrame(\n        rows, columns=[\"geom\", \"valid\"], geometry=\"geom\", crs=\"EPSG:2163\"\n    ).to_crs(\"EPSG:4326\")\n    pts[\"lat\"] = pts[\"geom\"].y\n    pts[\"lon\"] = pts[\"geom\"].x\n    pts[\"lead\"] = np.nan\n    for idx, row in pts.iterrows():\n        valid = row[\"valid\"]\n        # Find candidate warnings, these are sorted by issue time, so the\n        # first one is the one we care about\n        ol = tow[tow.intersects(row.geom)]\n        if ol.empty:\n            continue\n        # Find ones that overlap in time first\n        dol = ol[(ol[\"utc_issue\"] <= valid) & (ol[\"utc_expire\"] >= valid)]\n        if not dol.empty:\n            pts.at[idx, \"lead\"] = (\n                valid - dol.iloc[0].utc_issue\n            ).total_seconds() / 60.0\n            continue\n        # Look for the next warning after this time\n        dol = ol[ol[\"utc_issue\"] > valid]\n        if not dol.empty:\n            pts.at[idx, \"lead\"] = (\n                valid - dol.iloc[0].utc_issue\n            ).total_seconds() / 60.0\n    pts[\"color\"] = pts[\"lead\"].apply(\n        lambda x: rgb2hex(cmap(norm(x))) if x >= 0 else \"#000000\"\n    )\n    stats = pts[\"lead\"].describe()\n    bounds = trackgdf.total_bounds\n\n    buffer = 0.01\n    label = trackgdf.iloc[0][\"event_id\"]\n    if label is None or label == \"\":\n        label = (\n            f\"Unlabeled Tornado from {trackgdf.iloc[0]['wfo']} on \"\n            f\"{track_sts.astimezone(tzinfo).strftime('%-d %b %Y')}\"\n        )\n    ef = trackgdf.iloc[0][\"efscale\"]\n    if ef is None:\n        ef = \"\"\n    mp = MapPlot(\n        apctx=ctx,\n        continental_color=\"white\",\n        nocaption=True,\n        sector=\"spherical_mercator\",\n        title=(\"Estimated Tornado Warning Lead Time Along Tornado Track\"),\n        subtitle=(\n            f\"{ef} {label}. \"\n            f\"Assuming constant {speed_mph:.0f} MPH movement, \"\n            f\"Average Lead Time: {stats['mean']:.0f} minutes\"\n        ),\n        west=bounds[0] - buffer,\n        east=bounds[2] + buffer,\n        south=bounds[1] - buffer,\n        north=bounds[3] + buffer,\n        axes_position=[\n            MAIN_AX_BOUNDS[0],\n            MAIN_AX_BOUNDS[1] + 0.15,\n            MAIN_AX_BOUNDS[2],\n            MAIN_AX_BOUNDS[3] - 0.15,\n        ],\n    )\n    plot_timeseries(mp, pts, tzinfo)\n\n    trackgdf.to_crs(mp.panels[0].crs).plot(\n        ax=mp.panels[0].ax,\n        aspect=None,\n        lw=2,\n        alpha=0.2,\n        color=\"k\",\n        zorder=10,\n    )\n    plot_points(mp, pts)\n\n    mp.panels[0].ax.text(\n        0.01,\n        -0.02,\n        (\n            f\"Start: {track_sts.astimezone(tzinfo).strftime('%-I:%M %p %Z')}\\n\"\n            f\"End: {track_ets.astimezone(tzinfo).strftime('%-I:%M %p %Z')}\\n\"\n            f\"Duration: {minutes} minutes\\n\"\n        ),\n        va=\"top\",\n        transform=mp.panels[0].ax.transAxes,\n        ha=\"left\",\n    )\n    if not tow.empty:\n        plot_tow(tow, mp, tzinfo)\n    # Draw a color bar\n    ncb = ColorbarBase(\n        mp.cax,\n        norm=norm,\n        cmap=cmap,\n        extend=\"neither\",\n        spacing=\"uniform\",\n    )\n    ncb.ax.tick_params(labelsize=8)\n    ncb.set_label(\n        \"Lead Time (minutes)\",\n    )\n    # Create a legend for the warnings\n    lng = mp.panels[0].ax.legend(\n        [\n            Rectangle((0, 0), 1, 1, ec=\"r\", fc=\"r\", alpha=0.2),\n            Line2D(\n                [0],\n                [0],\n                marker=\"o\",\n                color=\"w\",\n                markerfacecolor=\"r\",\n                markersize=10,\n            ),\n            Line2D([0], [0], marker=\"x\", color=\"k\", linestyle=\"None\"),\n            Line2D([0], [0], marker=\"*\", color=\"k\", linestyle=\"None\"),\n        ],\n        [\n            \"Tornado Warning\",\n            \"Positive Lead Time\",\n            \"No Lead Time\",\n            \"Negative Lead Time\",\n        ],\n        loc=2,\n        framealpha=1,\n    )\n    lng.set_zorder(12)\n\n    return mp.fig, pts.drop(columns=[\"geom\"])\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p254.py",
    "content": "\"\"\"Map of NEXRAD Level III Latencies over NOAAPort or Realtime-ness.\n\n<p>This autoplot has two modes of operation attempting to address two distinct\ndata availability questions.</p>\n\n<ol>\n  <li><i>Realtime-ness:</i> This is a measure of the difference between a given\n  timestamp and the most receipt receipt of a Level III N0B product.  Due\n  to VCP timing, a value below 10 minutes doesn't have much meaning.</li>\n  <li><i>Latency:</i> This is a measure of the difference between a given\n  timestamp and the WMO header timestamp of the N0B product.</li>\n</ol>\n\n<p>The backend database only contains\nthree days worth of data, so this app only runs over a very small interval of\ntime.  In general, the precision of this estimate is +/- a minute or so.</p>\n\n<p>An intended usage of this autoplot is to embed it into a dashboard.  Here's\nthe HTML example to make this magic happen. The plot has 3 minutes of caching\nto keep from overloading the server with refresh requests.</p>\n\n<pre>\n&lt;img src=\"%BASE%/mode:realtime.png\" alt=\"Realtime-ness\" &gt;\n&lt;img src=\"%BASE%/mode:latency.png\" alt=\"Latency\" &gt;\n</pre>\n\n<p>Note: If a RADAR has been offline for 12 or more hours, it will not\nappear plotted on this map.\n\"\"\"\n\nfrom datetime import timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom matplotlib.colors import BoundaryNorm, ListedColormap\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot.geoplot import MapPlot\nfrom pyiem.util import utc\n\nPDICT = {\"realtime\": \"Realtime-ness\", \"latency\": \"Latency\"}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    uri = \"https://mesonet.agron.iastate.edu/plotting/auto/plot/254\"\n    return {\n        \"description\": __doc__.replace(\"%BASE%\", uri),\n        \"data\": True,\n        \"cache\": 180,\n        \"arguments\": [\n            {\n                \"type\": \"select\",\n                \"name\": \"mode\",\n                \"default\": \"latency\",\n                \"options\": PDICT,\n                \"label\": \"Select Plot Mode:\",\n            },\n            {\n                \"type\": \"int\",\n                \"name\": \"offset\",\n                \"default\": 0,\n                \"label\": (\n                    \"Prior number of minutes from now to produce map for \"\n                    \"(lt 1440*2 minutes)\"\n                ),\n            },\n        ],\n    }\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    ts = utc() - timedelta(minutes=ctx[\"offset\"])\n    nt = NetworkTable(\"NEXRAD\")\n    with get_sqlalchemy_conn(\"id3b\") as conn:\n        latency = pd.read_sql(\n            sql_helper(\"\"\"\n            with data as (\n            select substr(awips_id, 4, 3) as nexrad,\n            entered_at, wmo_valid_at, entered_at - wmo_valid_at as latency,\n            :ts - wmo_valid_at as realtime,\n            rank() OVER (PARTITION by substr(awips_id, 4, 3)\n                 ORDER by wmo_valid_at desc) from ldm_product_log where\n            valid_at < :ts and valid_at > :ts2 and\n            substr(awips_id, 1, 3) = 'N0B')\n            select * from data where rank = 1\n            \"\"\"),\n            conn,\n            params={\"ts\": ts, \"ts2\": ts - pd.Timedelta(\"12 hours\")},\n        )\n    if latency.empty:\n        raise NoDataFound(\"No Data Found.\")\n    latency = latency.drop(columns=[\"rank\"]).sort_values(\n        ctx[\"mode\"], ascending=True\n    )\n    latency[\"latency\"] = latency[\"latency\"].dt.total_seconds() / 60.0\n    latency[\"realtime\"] = latency[\"realtime\"].dt.total_seconds() / 60.0\n\n    def _get(val, col):\n        return nt.sts.get(val, {\"lon\": np.nan, \"lat\": np.nan})[col]\n\n    latency[\"lon\"] = latency[\"nexrad\"].apply(lambda x: _get(x, \"lon\"))\n    latency[\"lat\"] = latency[\"nexrad\"].apply(lambda x: _get(x, \"lat\"))\n    for col in [\"latency\", \"realtime\"]:\n        latency.loc[latency[col] < 0, col] = 0\n    mp = MapPlot(\n        sector=\"nws\",\n        title=f\"IEM Estimated NEXRAD III {PDICT[ctx['mode']]} over NOAAPort\",\n        subtitle=f\"{ts:%H%MZ %d %b %Y} Based on NOAAPort N0B receipt.\",\n        apctx=ctx,\n        nocaption=True,\n    )\n    colors = [\n        \"darkgreen\",\n        \"mediumseagreen\",\n        \"lightgreen\",\n        \"orange\",\n    ]\n    cmap = ListedColormap(colors)\n    cmap.set_under(\"white\")\n    cmap.set_over(\"red\")\n    levels = [0, 5, 15, 30, 60]\n    if ctx[\"mode\"] == \"realtime\":\n        levels = [0, 10, 15, 20, 60]\n    norm = BoundaryNorm(levels, cmap.N)\n    latency[\"color\"] = [cmap(norm(x)) for x in latency[ctx[\"mode\"]].values]\n\n    mp.plot_values(\n        latency[\"lon\"].to_list(),\n        latency[\"lat\"].to_list(),\n        latency[\"nexrad\"].to_list(),\n        fmt=\"%s\",\n        color=\"white\",\n        backgroundcolor=latency[\"color\"].to_list(),\n        textoutlinewidth=0,\n        labelbuffer=0,\n        textsize=10,\n    )\n    mp.draw_colorbar(\n        levels,\n        cmap,\n        norm,\n        spacing=\"proportional\",\n        title=f\"{PDICT[ctx['mode']]} Minutes\",\n        extend=\"max\",\n    )\n\n    return mp.fig, latency.drop(columns=[\"color\"])\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p255.py",
    "content": "\"\"\"\nThis autoplot implemments a simple model known as the leaky bucket model. You\nset the depth of the bucket and the assumed rate of loss.  Each day,\nthe depth of the bucket is calculated by adding the precipitation and\nsubstracting the loss and thresholding the result to a value between\nzero and the depth of a bucket.</p>\n\n<p>A life choice this model implementation makes is to evaluate the\nprecipitation and loss at the end of the day simultaneously.  This\nmeans that a given day's precipitation can be counted as much as the bucket's\ndepth and loss combined.</p>\n\n<p>If you set the end date to a day of the year before the start date, the\nyear of the data represents the start year of the period that crosses 1 Jan.\n\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\n\nfrom iemweb.autoplot import ARG_STATION\nfrom iemweb.autoplot.barchart import barchart_with_top10\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        {\n            \"type\": \"sday\",\n            \"default\": \"0501\",\n            \"name\": \"sday\",\n            \"label\": \"Select start date:\",\n        },\n        {\n            \"type\": \"sday\",\n            \"default\": f\"{date.today():%m%d}\",\n            \"name\": \"eday\",\n            \"label\": \"Select end date (inclusive):\",\n        },\n        {\n            \"type\": \"float\",\n            \"default\": 1.0,\n            \"name\": \"depth\",\n            \"label\": \"Depth of the bucket (inch):\",\n        },\n        {\n            \"type\": \"float\",\n            \"default\": 1.0,\n            \"name\": \"init\",\n            \"label\": (\n                \"Initial depth of the bucket (inch), must be less than depth \"\n                \"of bucket:\"\n            ),\n        },\n        {\n            \"type\": \"float\",\n            \"default\": 0.15,\n            \"name\": \"loss\",\n            \"label\": \"Daily rate of loss/leak (inch):\",\n        },\n        {\n            \"type\": \"year\",\n            \"default\": date.today().year,\n            \"name\": \"year\",\n            \"label\": \"Year to Highlight\",\n        },\n    ]\n    return desc\n\n\ndef get_obsdf(ctx):\n    \"\"\"Figure out our observations.\"\"\"\n    limiter = \"sday >= :sday and sday <= :eday\"\n    if ctx[\"eday\"] < ctx[\"sday\"]:\n        limiter = \"(sday >= :sday or sday <= :eday) \"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                SELECT day, year, precip, sday, 0.0 as bucket_depth\n                from alldata\n                WHERE station = :station and {limiter} ORDER by day ASC\n            \"\"\",\n                limiter=limiter,\n            ),\n            conn,\n            index_col=\"day\",\n            parse_dates=[\"day\"],\n            params={\n                \"station\": ctx[\"station\"],\n                \"sday\": ctx[\"sday\"].strftime(\"%m%d\"),\n                \"eday\": ctx[\"eday\"].strftime(\"%m%d\"),\n            },\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    # See if we are crossing 1 Jan\n    if ctx[\"eday\"] < ctx[\"sday\"]:\n        # Subtract 1 year from the year column where sday < eday\n        df.loc[df[\"sday\"] <= ctx[\"eday\"].strftime(\"%m%d\"), \"year\"] = (\n            df[\"year\"] - 1\n        )\n    # Check the first year to see if it starts on our sday\n    if df.index[0].strftime(\"%m%d\") != ctx[\"sday\"].strftime(\"%m%d\"):\n        df = df[df[\"year\"] > df.index[0].year]\n    if df.index[-1].strftime(\"%m%d\") != ctx[\"eday\"].strftime(\"%m%d\"):\n        df = df[df[\"year\"] < df.index[-1].year]\n    return df\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    df = get_obsdf(ctx)\n\n    depth = max(0, min(999, ctx[\"depth\"]))\n    loss = max(0, ctx[\"loss\"])\n    for _year, gdf in df.groupby(\"year\"):\n        bucket = min(ctx[\"init\"], depth)\n        for idx, row in gdf.iterrows():\n            bucket += row[\"precip\"] - loss\n            if bucket < 0:\n                bucket = 0\n            elif bucket > depth:\n                bucket = depth\n            df.at[idx, \"bucket_depth\"] = bucket\n\n    fig = figure(\n        title=(\n            f\"({df.index[0].year}-{df.index[-1].year}) \"\n            f\"[{ctx['sday'].strftime('%b %-d')}-\"\n            f\"{ctx['eday'].strftime('%b %-d')}] \"\n            f\"{ctx['_sname']}:: Leaky Bucket Model\"\n        ),\n        subtitle=(\n            f\"Bucket Depth: {depth:.2f} inches, \"\n            f\"Loss/Leak: {loss:.2f} inches/day\"\n        ),\n        apctx=ctx,\n    )\n    # Plot the bucket depth for year of interest\n    thisyear = df[df[\"year\"] == ctx[\"year\"]]\n    if thisyear.empty:\n        raise NoDataFound(\"No data found for year of interest.\")\n    # Plot the bucket depth\n    ax = fig.add_axes((0.1, 0.7, 0.7, 0.15))\n    ax.text(\n        0.01,\n        1.01,\n        f\"Year Daily Timeseries: {ctx['year']}\",\n        transform=ax.transAxes,\n        va=\"bottom\",\n        ha=\"left\",\n    )\n    ax.bar(\n        thisyear.index.values,\n        thisyear[\"bucket_depth\"],\n        color=\"blue\",\n        width=1.0,\n        align=\"center\",\n    )\n    ax.set_ylabel(\"Bucket\\nDepth [inch]\")\n    ax.grid(True)\n    ax.set_xlim(\n        thisyear.index[0] - pd.Timedelta(days=1),\n        thisyear.index[-1] + pd.Timedelta(days=1),\n    )\n\n    # Plot the number of days the bucket was empty\n    yearlyzeros = (\n        df[df[\"bucket_depth\"] == 0][[\"year\", \"precip\"]]\n        .groupby(\"year\")\n        .count()\n        .reindex(range(int(df[\"year\"].min()), int(df[\"year\"].max()) + 1))\n        .fillna(0)\n    )\n    ax = barchart_with_top10(\n        fig,\n        yearlyzeros,\n        \"precip\",\n        color=\"tan\",\n        labelformat=\"%i\",\n    )\n    ax.set_position([0.1, 0.1, 0.7, 0.5])\n    ax.set_ylabel(\"Number of Days\")\n    ax.grid(True)\n    ax.axhline(yearlyzeros[\"precip\"].mean(), color=\"r\", lw=2)\n    ax.text(\n        0.01,\n        1.01,\n        f\"Days Bucket Empty, mean={yearlyzeros['precip'].mean():.1f} days\",\n        transform=ax.transAxes,\n        va=\"bottom\",\n        ha=\"left\",\n    )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p256.py",
    "content": "\"\"\"\nDue to various software and support issues at the National Weather Service,\nthey generally stopped the generation of Regional Temperature and Precipitation\n(RTP) reports during 2024.  The IEM processes all of the raw SHEF encoded\nreports from the COOP networks and attempts robust accounting of Airport ASOS\nreports, so this autoplot attempts to generate a RTP report for others to\nuse.</p>\n\n<p>Since this tool is within the autoplot framework, you can automate the\ngeneration and download of the SHEF text reports. Here are some examples:</p>\n\n<p>Generate a RTPIA report for the morning of 10 June 2024. Note that\nwhen even requesting a state report, it is good to set the CWA so to get\na locally relevant timezone.</p>\n<pre>\n$ wget -O RTPIA.txt 'https://mesonet.agron.iastate.edu/plotting/auto/plot/\\\n256/date:2024-06-10::wfo:DMX::state:IA::by:state::report:12z.txt'\n$ cat RTPIA.txt | dcshef\n</pre>\n\n<p>Generate a RTPBOU report for the morning of 21 May 2024:</p>\n<pre>\n$ wget -O RTPBOU.txt 'https://mesonet.agron.iastate.edu/plotting/auto/plot/\\\n256/date:2024-05-21::wfo:BOU::by:wfo::report:12z.txt'\n$ cat RTPBOU.txt | dcshef\n</pre>\n\n<p><strong>Report Types:</strong>\n<ul>\n    <li><strong>12z:</strong> COOP Morning ~12 UTC reports made between 5 AM\n    and 11 AM local time.  Computed ASOS summaries for previous day and for\n    12 UTC to 12 UTC period.</li>\n</ul></p>\n\n<p><strong>Implementation Notes:</strong>\n<ol>\n    <li>The choice of a WFO governs the timezone used for the report.</li>\n    <li>The IEM has made a likely futile attempt to delineate ASOS from AWOS\n    stations. The two are separated in the report as the AWOS data quality,\n    particularly for precipitation is often suspect.  Also, the terms\n    ASOS and AWOS are vague, so alas.</li>\n</ol>\n</p>\n\n<p><strong>Work in progress, please report bugs!</strong> akrherz@iastate.edu\n</p>\n\"\"\"\n\nfrom zoneinfo import ZoneInfo\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import StationAttributes as SA\nfrom pyiem.util import utc\n\nPDICT = {\n    \"state\": \"By State\",\n    \"wfo\": \"By NWS Forecast Office\",\n}\nPDICT2 = {\n    \"12z\": \"Morning 12 UTC Report\",\n}\n# Unique timezones for WFOs\nMAPTZ2SHEFTZ = {\n    \"Pacific/Guam\": \"Z\",  # TODO\n    \"America/Phoenix\": \"P\",\n    \"America/New_York\": \"E\",\n    \"America/Boise\": \"M\",\n    \"America/Chicago\": \"C\",\n    \"America/Indiana/Indianapolis\": \"ES\",\n    \"America/Detroit\": \"E\",\n    \"Pacific/Honolulu\": \"Z\",  # TODO\n    \"America/Puerto_Rico\": \"E\",\n    \"America/Anchorage\": \"P\",  # TODO\n    \"America/Los_Angeles\": \"P\",\n    \"America/Juneau\": \"P\",  # TODO\n    \"America/Denver\": \"M\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    return {\n        \"description\": __doc__,\n        \"data\": True,\n        \"report\": True,\n        \"nopng\": True,\n        \"cache\": 120,\n        \"arguments\": [\n            {\n                \"type\": \"select\",\n                \"name\": \"by\",\n                \"default\": \"wfo\",\n                \"label\": \"Generate RTP for state or WFO:\",\n                \"options\": PDICT,\n            },\n            {\n                \"type\": \"state\",\n                \"name\": \"state\",\n                \"default\": \"IA\",\n                \"label\": \"Select State:\",\n            },\n            {\n                \"type\": \"networkselect\",\n                \"name\": \"wfo\",\n                \"default\": \"DMX\",\n                \"network\": \"WFO\",\n                \"label\": \"Select WFO (used to pick timezone for report):\",\n            },\n            {\n                \"type\": \"select\",\n                \"name\": \"report\",\n                \"default\": \"12z\",\n                \"label\": \"Select RTP Report Type:\",\n                \"options\": PDICT2,\n            },\n            {\n                \"type\": \"date\",\n                \"name\": \"date\",\n                \"default\": f\"{utc():%Y/%m/%d}\",\n                \"label\": \"Date of Interest:\",\n            },\n        ],\n    }\n\n\ndef get_asos(ctx: dict) -> pd.DataFrame:\n    \"\"\"Figure out the data.\"\"\"\n    params = {\n        \"date\": ctx[\"date\"],\n        \"wfo\": ctx[\"wfo\"],\n        \"state\": ctx[\"state\"],\n        \"attr\": SA.SHEF_6HR_SRC,\n    }\n    limiter = \" wfo = :wfo \"\n    if ctx[\"by\"] == \"state\":\n        limiter = \" state = :state \"\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        # Figure out which stations we care about\n        stations = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            with pop as (\n                select id, name, value as snow_src, null as snow,\n                null as snowd, null as cnt_6hr from stations s LEFT\n                JOIN station_attributes a on (s.iemid = a.iemid and\n                a.attr = :attr)\n                where network ~* 'ASOS' and {limiter} ORDER by id ASC\n            ), is_awos as (\n                select id, value::bool\n                from stations s JOIN station_attributes a on\n                (s.iemid = a.iemid) where network ~* 'ASOS' and {limiter}\n                and a.attr = 'IS_AWOS' and a.value = '1' ORDER by id ASC\n            )\n            select p.*, coalesce(i.value, false) as is_awos\n            from pop p LEFT JOIN\n            is_awos i on (p.id = i.id) ORDER by p.id ASC\n            \"\"\",\n                limiter=limiter,\n            ),\n            conn,\n            index_col=\"id\",\n            params=params,\n        )\n    # If we have any snow_src values, we should go fishing for that data\n    if stations[\"snow_src\"].notnull().any() and ctx[\"date\"].year >= 2002:\n        # 12z to 12z snow\n        ets = utc(ctx[\"date\"].year, ctx[\"date\"].month, ctx[\"date\"].day, 12)\n        sts = ets - pd.Timedelta(\"24 hours\")\n        with get_sqlalchemy_conn(\"hads\") as conn:\n            snowdf = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n                select station, valid, substr(key, 1, 3) as shefvar, value\n                from {table} WHERE\n                station = ANY(:stations) and\n                substr(key, 1, 3) in ('SFQ', 'SDI') and\n                valid > :sts and valid <= :ets and value is not null\n                and extract(hour from valid at time zone 'UTC')\n                in (0, 6, 12, 18)\n                ORDER by station asc, valid asc\n                \"\"\",\n                    table=f\"raw{ets:%Y}\",\n                ),\n                conn,\n                params={\n                    \"stations\": stations[\"snow_src\"].dropna().to_list(),\n                    \"sts\": sts,\n                    \"ets\": ets,\n                },\n            )\n            for snowsrc, gdf in snowdf.groupby(\"station\"):\n                asosid = stations[stations[\"snow_src\"] == snowsrc].index[0]\n                stations.at[asosid, \"cnt_6hr\"] = len(gdf[\"valid\"].unique())\n                snowfall = gdf[gdf[\"shefvar\"] == \"SFQ\"][\"value\"].sum()\n                stations.at[asosid, \"snow\"] = snowfall\n\n                qobs = gdf[gdf[\"shefvar\"] == \"SDI\"]\n                if qobs.empty:\n                    continue\n                if qobs.iloc[-1][\"valid\"].to_pydatetime() == ets:\n                    stations.at[asosid, \"snowd\"] = qobs[\"value\"].values[-1]\n\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        # 6z to 6z high\n        ets = utc(ctx[\"date\"].year, ctx[\"date\"].month, ctx[\"date\"].day, 6)\n        sts = ets - pd.Timedelta(\"24 hours\")\n        highsdf = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    select station,\n    max(coalesce(max_tmpf_6hr, tmpf)) as calc_max_tmpf from alldata\n    where valid >= :sts and valid < :ets and station = ANY(:stations)\n    GROUP by station ORDER by station ASC\n\"\"\"\n            ),\n            conn,\n            params={\n                \"stations\": stations.index.to_list(),\n                \"sts\": sts,\n                \"ets\": ets,\n            },\n            index_col=\"station\",\n        )\n        stations[\"high\"] = highsdf[\"calc_max_tmpf\"]\n        # 0z to 12z low\n        ets = utc(ctx[\"date\"].year, ctx[\"date\"].month, ctx[\"date\"].day, 12)\n        sts = utc(ctx[\"date\"].year, ctx[\"date\"].month, ctx[\"date\"].day, 0)\n        lowsdf = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    select station,\n    min(coalesce(min_tmpf_6hr, tmpf)) as calc_min_tmpf from alldata\n    where valid >= :sts and valid < :ets and station = ANY(:stations)\n    GROUP by station ORDER by station ASC\n\"\"\"\n            ),\n            conn,\n            index_col=\"station\",\n            params={\n                \"stations\": stations.index.to_list(),\n                \"sts\": sts,\n                \"ets\": ets,\n            },\n        )\n        stations[\"low\"] = lowsdf[\"calc_min_tmpf\"]\n        # 12z to 12z precip\n        ets = utc(ctx[\"date\"].year, ctx[\"date\"].month, ctx[\"date\"].day, 12)\n        sts = ets - pd.Timedelta(\"24 hours\")\n        precipdf = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    with obs as (\n    select station, date_trunc('hour', valid) as ts,\n    max(p01i) as precip from alldata\n    where valid >= :sts and valid < :ets and station = ANY(:stations)\n    GROUP by station, ts)\n    select station, sum(precip) as precip from obs\n    GROUP by station ORDER by station ASC\n\"\"\"\n            ),\n            conn,\n            params={\n                \"stations\": stations.index.to_list(),\n                \"sts\": sts,\n                \"ets\": ets,\n            },\n            index_col=\"station\",\n        )\n        stations[\"precip\"] = precipdf[\"precip\"]\n    # drop any rows with all missing data, except `name`\n    stations = stations.dropna(how=\"all\", subset=[\"high\", \"low\", \"precip\"])\n    return stations\n\n\ndef get_obsdf(ctx: dict) -> pd.DataFrame:\n    \"\"\"Figure out the data.\"\"\"\n    params = {\n        \"date\": ctx[\"date\"],\n        \"wfo\": ctx[\"wfo\"],\n        \"state\": ctx[\"state\"],\n    }\n    limiter = \" and t.wfo = :wfo \"\n    if ctx[\"by\"] == \"state\":\n        limiter = \" and t.state = :state \"\n    sql = sql_helper(\n        \"\"\"\n        select t.id, t.name, s.snow, s.snowd, s.pday, s.max_tmpf, s.min_tmpf,\n        s.coop_valid\n        from summary s JOIN stations t on (s.iemid = t.iemid)\n        WHERE s.day = :date {limiter} and t.network ~* 'COOP' and\n        coop_valid is not null\n        ORDER by t.id ASC\n    \"\"\",\n        limiter=limiter,\n    )\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        obs = pd.read_sql(sql, conn, params=params)\n    if not obs.empty:\n        obs[\"coop_local_valid\"] = obs[\"coop_valid\"].dt.tz_convert(\n            ctx[\"_nt\"].sts[ctx[\"wfo\"]][\"tzname\"],\n        )\n        if ctx[\"report\"] == \"12z\":\n            # Require obs to be between 5 and 10 AM local time\n            obs = obs[\n                (obs[\"coop_local_valid\"].dt.hour >= 5)\n                & (obs[\"coop_local_valid\"].dt.hour <= 10)\n            ]\n    return obs\n\n\ndef munge_cocorahs_id(sid: str) -> str:\n    \"\"\"CoCoRaHS IDs are poison to SHEF, so we have to munge them.\"\"\"\n    tokens = sid.split(\"-\")\n    try:\n        # Le Sigh MO-FSA-131B\n        # Ensure they don't look like NWSLI\n        munged = f\"{tokens[0]}{tokens[1]}{int(tokens[2]):03.0f}\"\n    except ValueError:\n        munged = sid.replace(\"-\", \"\")\n    return munged\n\n\ndef get_cocorahsdf(ctx: dict) -> pd.DataFrame:\n    \"\"\"Figure out the data.\"\"\"\n    params = {\n        \"date\": ctx[\"date\"],\n        \"wfo\": ctx[\"wfo\"],\n        \"state\": ctx[\"state\"],\n    }\n    limiter = \" and t.wfo = :wfo \"\n    if ctx[\"by\"] == \"state\":\n        limiter = \" and t.state = :state \"\n    sql = sql_helper(\n        \"\"\"\n        select t.id, t.name, s.snow, s.snowd, s.precip, s.obvalid, t.county,\n        t.state\n        from alldata_cocorahs s JOIN stations t on (s.iemid = t.iemid)\n        WHERE s.day = :date {limiter} and t.network ~* 'COCORAHS'\n        ORDER by t.id ASC\n    \"\"\",\n        limiter=limiter,\n    )\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        obs = pd.read_sql(sql, conn, params=params)\n    if not obs.empty:\n        # CoCoRaHS IDs are poison to SHEF, so we have to munge them\n        obs[\"id\"] = obs[\"id\"].apply(munge_cocorahs_id)\n        obs[\"cocorahs_local_valid\"] = obs[\"obvalid\"].dt.tz_convert(\n            ctx[\"_nt\"].sts[ctx[\"wfo\"]][\"tzname\"],\n        )\n        if ctx[\"report\"] == \"12z\":\n            # Require obs to be between 5 and 10 AM local time\n            obs = obs[\n                (obs[\"cocorahs_local_valid\"].dt.hour >= 5)\n                & (obs[\"cocorahs_local_valid\"].dt.hour <= 10)\n            ]\n    return obs\n\n\ndef pp(val, width, dec):\n    \"\"\"Format a value.\"\"\"\n    if pd.isna(val):\n        return \" \" * (width - 1) + \"M\"\n    if 0 < val < 0.01:\n        return \" \" * (width - 1) + \"T\"\n    return f\"{val:.{dec}f}\".rjust(width)\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    obsdf = get_obsdf(ctx)\n    asosdf = get_asos(ctx)\n    cocorahsdf = get_cocorahsdf(ctx)\n    wfo = ctx[\"wfo\"]\n    dt = ctx[\"date\"]\n    tzname = ctx[\"_nt\"].sts[wfo][\"tzname\"]\n    zc = MAPTZ2SHEFTZ[tzname]\n    lnow = utc().astimezone(ZoneInfo(tzname))\n    pil = wfo if ctx[\"by\"] == \"wfo\" else f\"{ctx['state']} \"\n    report = (\n        \"000 \\n\"\n        f\"ASUS63 XIEM {utc():%d%H%M}\\n\"\n        f\"RTP{pil}\\n\\n\"\n        \"IEM Generated Regional Temperature and Precipitation Report\\n\"\n        \"Iowa State University Ames IA\\n\"\n        f\"{lnow:%I%M %p %a %b %d %Y %Z}\\n\\n\"\n        \"COOP Reports\\n\\n\"\n        f\".BR {wfo} {dt:%Y%m%d} {zc} DH07/TAIRZX/TAIRZN/PPDRZZ/SFDRZZ/SDIRZZ\\n\"\n    )\n    for _, row in obsdf.iterrows():\n        report += (\n            f\"{row['id']:6s}:{row['name']:25.25s}: \"\n            f\"DH{row['coop_local_valid'].strftime('%H%M')}/ \"\n            f\"{pp(row['max_tmpf'], 4, 0)} /{pp(row['min_tmpf'], 4, 0)} /\"\n            f\"{pp(row['pday'], 5, 2)} /{pp(row['snow'], 5, 1)} /\"\n            f\"{pp(row['snowd'], 5, 1)}\\n\"\n        )\n    report += \".END\\n\\n\"\n\n    if asosdf[\"cnt_6hr\"].notnull().any():\n        report += (\n            \"ASOS Reports with 6 Hour Snowfall Supplemented\\n\\n\"\n            f\".BR {wfo} {dt:%Y%m%d} Z DH06/TAIRVX/DH12/TAIRVP/PPDRVZ/\"\n            \"SFDRZZ/SDIRZZ\\n\"\n            \": Station Name and Number of 6 Hour Reports\\n\"\n            \": 06Z YESTERDAY to 06Z HIGH TEMPERATURE\\n\"\n            \": 00Z TO 12Z TODAY LOW TEMPERATURE\\n\"\n            \": 12Z YESTERDAY TO 12Z TODAY PRECIPITATION\\n\"\n            \": 12Z YESTERDAY TO 12Z TODAY SNOWFALL\\n\"\n            \": 12Z TODAY SNOW DEPTH\\n\"\n        )\n        for sid, row in asosdf[asosdf[\"cnt_6hr\"].notna()].iterrows():\n            cnt = 0 if pd.isna(row[\"cnt_6hr\"]) else int(row[\"cnt_6hr\"])\n            quorum = f\"({cnt}/4)\"\n            report += (\n                f\"{sid:6s}:{row['name']:19.19s}{quorum}: \"\n                f\"{pp(row['high'], 4, 0)} /{pp(row['low'], 4, 0)} /\"\n                f\"{pp(row['precip'], 5, 2)} /\"\n                f\"{pp(row['snow'], 5, 1)} /\"\n                f\"{pp(row['snowd'], 5, 0)}\\n\"\n            )\n        report += \".END\\n\\n\"\n\n    report += (\n        \"CoCoRaHS Reports\\n\\n\"\n        f\".BR {wfo} {dt:%Y%m%d} {zc} DH07/PPDRZZ/SFDRZZ/SDIRZZ\\n\"\n    )\n    for (county, state), gdf in cocorahsdf.groupby([\"county\", \"state\"]):\n        cc = \"Parish\" if state == \"LA\" else \"County\"\n        report += f\": {county} ({cc}), {state}\\n\"\n        for _, row in gdf.iterrows():\n            report += (\n                f\"{row['id']:10s}:{row['name']:25.25s}: \"\n                f\"DH{row['cocorahs_local_valid'].strftime('%H%M')}/ \"\n                f\"{pp(row['precip'], 5, 2)} /{pp(row['snow'], 5, 1)} /\"\n                f\"{pp(row['snowd'], 5, 1)}\\n\"\n            )\n    report += \".END\\n\\n\"\n\n    for is_awos in [False, True]:\n        report += (\n            f\"{'AWOS' if is_awos else 'ASOS'} Reports\\n\\n\"\n            f\".BR {wfo} {dt:%Y%m%d} Z DH06/TAIRVX/DH12/TAIRVP/PPDRVZ\\n\"\n            \": 06Z YESTERDAY to 06Z HIGH TEMPERATURE\\n\"\n            \": 00Z TO 12Z TODAY LOW TEMPERATURE\\n\"\n            \": 12Z YESTERDAY TO 12Z TODAY PRECIPITATION\\n\"\n        )\n        filtered = asosdf[asosdf[\"is_awos\"] == is_awos]\n        for sid, row in filtered[filtered[\"cnt_6hr\"].isna()].iterrows():\n            report += (\n                f\"{sid:6s}:{row['name']:25.25s}: \"\n                f\"{pp(row['high'], 4, 0)} /{pp(row['low'], 4, 0)} /\"\n                f\"{pp(row['precip'], 5, 2)}\\n\"\n            )\n        report += \".END\\n\\n\"\n\n    return None, obsdf, report + \"$$\\n\"\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p257.py",
    "content": "\"\"\"\nThis tool plots the Comprehensive Climate Index (CCI) based on HRRR model\ndata.\n\"\"\"\n\nfrom datetime import datetime, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport pygrib\nfrom metpy.calc import relative_humidity_from_dewpoint, wind_speed\nfrom metpy.units import units\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import grb2iemre\nfrom pyiem.meteorology import comprehensive_climate_index\nfrom pyiem.plot import MapPlot, get_cmap\nfrom pyiem.util import LOG, archive_fetch, utc\n\nPDICT = {\n    \"no\": \"No Shade Effect\",\n    \"yes\": \"Shade Effect\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__}\n    now = utc() - timedelta(hours=3)\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"datetime\",\n            \"name\": \"valid\",\n            \"default\": now.strftime(\"%Y/%m/%d %H00\"),\n            \"label\": \"Timestamp (UTC):\",\n            \"min\": \"2014/10/11 0000\",\n        },\n        {\n            \"type\": \"select\",\n            \"name\": \"shade\",\n            \"default\": \"no\",\n            \"label\": \"Shade Effect:\",\n            \"options\": PDICT,\n        },\n        {\n            \"type\": \"csector\",\n            \"name\": \"csector\",\n            \"default\": \"IA\",\n            \"label\": \"Select state/sector\",\n        },\n        {\n            \"type\": \"cmap\",\n            \"name\": \"cmap\",\n            \"default\": \"afmhot_r\",\n            \"label\": \"Color Ramp:\",\n        },\n    ]\n    return desc\n\n\ndef do_processing(ctx: dict):\n    \"\"\"So to check for errors\"\"\"\n    valid: datetime = ctx[\"valid\"]\n    ppath_f00 = (\n        f\"{valid:%Y/%m/%d}/model/hrrr/{valid:%H}/\"\n        f\"hrrr.t{valid:%H}z.3kmf00.grib2\"\n    )\n    ppath_f01 = (\n        f\"{valid:%Y/%m/%d}/model/hrrr/{valid:%H}/\"\n        f\"hrrr.t{valid:%H}z.3kmf01.grib2\"\n    )\n    # Get solar radiation\n    with archive_fetch(ppath_f01) as testfn, pygrib.open(testfn) as grbs:\n        # Eh\n        srad = grb2iemre(\n            grbs.select(\n                name=\"Time-mean surface downward short-wave radiation flux\"\n            )[0]\n        )\n\n    with archive_fetch(ppath_f00) as testfn, pygrib.open(testfn) as grbs:\n        u = grb2iemre(grbs.select(name=\"10 metre U wind component\")[0])\n        v = grb2iemre(grbs.select(name=\"10 metre V wind component\")[0])\n        tmpk = grb2iemre(grbs.select(name=\"2 metre temperature\")[0])\n        dwpk = grb2iemre(grbs.select(name=\"2 metre dewpoint temperature\")[0])\n        rh = relative_humidity_from_dewpoint(\n            units.degK * tmpk, units.degK * dwpk\n        )\n\n    return comprehensive_climate_index(\n        units.degK * tmpk,\n        rh,\n        wind_speed(units(\"m/s\") * u, units(\"m/s\") * v),\n        units(\"W/m^2\") * srad,\n        shade_effect=ctx[\"shade\"] == \"yes\",\n    )\n\n\ndef get_raster(ctx: dict):\n    \"\"\"Do the computation!\"\"\"\n    if ctx[\"csector\"] in [\"AK\", \"HI\"]:\n        raise NoDataFound(\"Sector not available for this plot.\")\n    try:\n        cci = do_processing(ctx)\n    except Exception as exp:\n        LOG.exception(exp)\n        raise NoDataFound(\"No HRRR Data Found.\") from exp\n    return cci, get_nav(\"IEMRE\", \"conus\").affine, get_nav(\"IEMRE\", \"conus\").crs\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    ctx[\"valid\"] = ctx[\"valid\"].replace(tzinfo=ZoneInfo(\"UTC\"))\n    lvalid = ctx[\"valid\"].astimezone(ZoneInfo(\"America/Chicago\"))\n    try:\n        cci, aff, crs = get_raster(ctx)\n    except Exception as exp:\n        LOG.exception(exp)\n        raise NoDataFound(\"No HRRR Data Found.\") from exp\n\n    sse = \"With Shade\" if ctx[\"shade\"] == \"yes\" else \"No Shade\"\n    mp = MapPlot(\n        apctx=ctx,\n        title=f\"HRRR Derived Comprehensive Climate Index (CCI) [{sse}]\",\n        subtitle=f\"Valid: {lvalid:%-d %B %Y %I:%M %p %Z}\",\n        stateborderwidth=3,\n        nocaption=True,\n    )\n    cmap = get_cmap(ctx[\"cmap\"])\n    levels = list(range(25, 46, 5))\n    clabels = [\n        \"Mild\",\n        \"Mod\",\n        \"Sev\",\n        \"Extr\",\n        \"Extr\\nDng\",\n    ]\n    mp.imshow(\n        cci,\n        aff,\n        crs,\n        levels,\n        cmap=cmap,\n        clip_on=False,\n        clevlabels=clabels,\n        spacing=\"proportional\",\n        extend=\"both\",\n        units=\"CCI\",\n    )\n    if len(ctx[\"csector\"]) == 2:\n        mp.drawcounties()\n\n    return mp.fig\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p258.py",
    "content": "\"\"\"\nThis tool generates an info-graphic with the progression of outlooks for a\ngiven point and date.  This plot utilizes the\n<a href=\"/json/outlook_progression.py?help\">outlook progression</a> web\nservice.\n\"\"\"\n\nfrom datetime import date\n\nimport pandas as pd\nfrom matplotlib.patches import Rectangle\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.util import utc\n\nfrom iemweb.autoplot.scripts200.p200 import ISSUANCE\nfrom iemweb.autoplot.scripts200.p220 import COLORS\nfrom iemweb.json.outlook_progression import dowork\n\nPDICT = {\n    \"C\": \"Convective\",\n    \"E\": \"Excessive Rainfall\",\n    \"F\": \"Fire Weather\",\n}\nLABELS = {\n    \"C\": \"Storm Prediction Center Convective Outlook\",\n    \"E\": \"Weather Prediction Center Excessive Rainfall Outlook\",\n    \"F\": \"Storm Prediction Center Fire Weather Outlook\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    now = utc()\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"date\",\n            \"name\": \"valid\",\n            \"default\": now.strftime(\"%Y/%m/%d\"),\n            \"label\": \"Date:\",\n            \"min\": \"1990/01/01\",\n        },\n        {\n            \"type\": \"select\",\n            \"name\": \"outlook_type\",\n            \"default\": \"C\",\n            \"label\": \"Outlook Type:\",\n            \"options\": PDICT,\n        },\n        {\n            \"type\": \"float\",\n            \"name\": \"lat\",\n            \"default\": 42.0,\n            \"label\": \"Enter Latitude (deg N):\",\n        },\n        {\n            \"type\": \"float\",\n            \"name\": \"lon\",\n            \"default\": -95.0,\n            \"label\": \"Enter Longitude (deg E):\",\n        },\n    ]\n    return desc\n\n\ndef compute_slots(outlook_type: str, valid: date) -> list:\n    \"\"\"Figure out what slots we have\"\"\"\n    slots = []\n    for key in list(ISSUANCE.keys())[::-1]:\n        tokens = key.split(\".\")\n        if tokens[1] != outlook_type or tokens[2] == \"A\":\n            continue\n        slots.append(key)\n    if outlook_type == \"C\" and valid < date(2024, 8, 22):\n        slots.pop(slots.index(\"3.C.20\"))\n    return slots\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    outlooks = dowork(\n        ctx[\"outlook_type\"],\n        ctx[\"valid\"],\n        ctx[\"lon\"],\n        ctx[\"lat\"],\n    )\n    if outlooks.empty:\n        raise NoDataFound(\"No outlooks found for this point and date.\")\n\n    outlooks[\"product_issue\"] = pd.to_datetime(outlooks[\"product_issue\"])\n    fig = figure(\n        title=(f\"{LABELS[ctx['outlook_type']]} Progression\"),\n        subtitle=(\n            f\"Lon: {ctx['lon']:.02f}E Lat: {ctx['lat']:.02f}N for \"\n            f\"{ctx['valid']:%-d %B %Y}\"\n        ),\n    )\n    ax = fig.add_axes((0.2, 0.1, 0.75, 0.8))\n    y = 0\n    xloc = {\n        \"ANY SEVERE\": 1,\n        \"CATEGORICAL\": 2,\n        \"TORNADO\": 3,\n        \"HAIL\": 4,\n        \"WIND\": 5,\n    }\n    ylabels = []\n    ylocator = {}\n    slots = compute_slots(ctx[\"outlook_type\"], ctx[\"valid\"])\n    cigs = [\"SIGN\", \"CIG1\", \"CIG2\", \"CIG3\"]\n    cig_hatching = {\"SIGN\": \"/\", \"CIG1\": \"/\", \"CIG2\": \"\\\\\", \"CIG3\": \"x\"}\n    for (pissue, cat), df2 in outlooks.groupby([\"product_issue\", \"category\"]):\n        row0 = df2[~df2[\"threshold\"].isin(cigs)].iloc[0]\n        if row0[\"cycle\"] != -1:\n            # Consume up slots as necessary\n            slotkey = f\"{row0['day']}.{ctx['outlook_type']}.{row0['cycle']}\"\n            if slotkey in slots:\n                removeme = []\n                for index in range(slots.index(slotkey)):\n                    slot = slots[index]\n                    removeme.append(slot)\n                    ylabels.append(\n                        f\"Day {slot.split('.')[0]}@{slot.split('.')[2]}Z\"\n                    )\n                    y -= 1\n                for slot in removeme:\n                    slots.pop(slots.index(slot))\n            if slots and slotkey == slots[0]:\n                slots.pop(0)\n        hatched = any(df2[\"threshold\"].isin(cigs))\n        cycle = row0[\"cycle\"] if row0[\"cycle\"] > -1 else \"\"\n        key = f\"Day {row0['day']}@{cycle}Z\\nIssued:{pissue:%d/%H%M}Z\"\n        if key not in ylocator:\n            ylocator[key] = y\n            y -= 1\n            ylabels.append(key)\n        if pd.isna(row0[\"threshold\"]):\n            continue\n        thisy = ylocator[key]\n        x = xloc.get(cat, 1)\n        color = COLORS.get(row0[\"threshold\"], \"tan\")\n        rect = Rectangle(\n            (x - 0.4, thisy - 0.4),\n            0.8,\n            0.8,\n            color=color,\n            hatch=cig_hatching.get(row0[\"threshold\"]) if hatched else None,\n            zorder=3,\n        )\n        ax.add_patch(rect)\n        if hatched:\n            ax.add_patch(\n                Rectangle(\n                    (x - 0.4, thisy - 0.4),\n                    0.8,\n                    0.8,\n                    hatch=cig_hatching.get(row0[\"threshold\"])\n                    if hatched\n                    else None,\n                    fill=False,\n                    zorder=4,\n                )\n            )\n        pretty = row0[\"threshold\"]\n        if pretty.startswith(\"0.\"):\n            pretty = f\"{int(pretty[2:])}%\"\n        ax.text(\n            x,\n            thisy,\n            f\"{pretty} {cat}\",\n            ha=\"center\",\n            va=\"center\",\n            zorder=5,\n            color=\"w\",\n            bbox=dict(\n                facecolor=\"k\",\n                alpha=0.7,\n                edgecolor=\"none\",\n                pad=1,\n            ),\n        )\n    while slots:\n        slot = slots.pop(0)\n        ylabels.append(f\"Day {slot.split('.')[0]}@{slot.split('.')[2]}Z\")\n        y -= 1\n\n    ax.set_yticks(range(-len(ylabels) + 1, 1))\n    ax.set_yticklabels(ylabels[::-1])\n    ax.set_ylim(-len(ylabels), 0.6)\n    ax.set_xlim(0.5, 5.5)\n    ax.set_xticks([])\n    # Only show y-axis grid\n    ax.grid(axis=\"y\")\n    return fig, outlooks\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p259.py",
    "content": "\"\"\"\nThis tool generates a diagnostic plot of how a given NWS UGC geometry has\nchanged over time.  The NWS updates their UGC databases about every year and\nsome IEM processing attempts to keep track of all this.  This is not an easy\nnor exact science.\n\"\"\"\n\nimport geopandas as gpd\nfrom matplotlib.patches import Rectangle\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import MapPlot, get_cmap\nfrom pyiem.reference import Z_OVERLAY2\n\nPDICT = {\n    \"yes\": \"Show the Fire Weather variant\",\n    \"no\": \"Do not show the Fire Weather variant\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"ugc\",\n            \"name\": \"ugc\",\n            \"default\": \"IAC169\",\n            \"label\": \"Select the UGC:\",\n        },\n        {\n            \"type\": \"cmap\",\n            \"name\": \"cmap\",\n            \"default\": \"viridis\",\n            \"label\": \"Select a colormap\",\n        },\n        {\n            \"type\": \"select\",\n            \"name\": \"fire\",\n            \"default\": \"no\",\n            \"options\": PDICT,\n            \"label\": \"Show the Fire Weather variant?\",\n        },\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    sourceop = \"=\" if ctx[\"fire\"] == \"yes\" else \"!=\"\n    with get_sqlalchemy_conn(\"postgis\") as pgconn:\n        ugcdf = gpd.read_postgis(\n            sql_helper(\n                \"\"\"\n    select * from ugcs where ugc = :ugc and source {sourceop} 'fz'\n    ORDER by begin_ts ASC\n                       \"\"\",\n                sourceop=sourceop,\n            ),\n            pgconn,\n            params={\"ugc\": ctx[\"ugc\"]},\n            parse_dates=[\"begin_ts\", \"end_ts\"],\n            geom_col=\"geom\",\n        )  # type: ignore\n    if ugcdf.empty:\n        raise NoDataFound(\"No UGC data found.\")\n\n    ugcdf[\"begin_ts\"] = ugcdf[\"begin_ts\"].dt.strftime(\"%Y-%m-%d\")\n    ugcdf[\"end_ts\"] = ugcdf[\"end_ts\"].dt.strftime(\"%Y-%m-%d\")\n    ugcdf[\"label\"] = (\n        ugcdf[\"begin_ts\"]\n        + \" to \"\n        + ugcdf[\"end_ts\"].fillna(\"Now\")\n        + \" [\"\n        + ugcdf[\"wfo\"]\n        + \"]\"\n    )\n    cmap = get_cmap(ctx[\"cmap\"])\n    if len(ugcdf) == 1:\n        ugcdf[\"color\"] = [cmap(0.5)]\n    else:\n        ugcdf[\"color\"] = cmap(\n            (ugcdf.index - ugcdf.index.min())\n            / (ugcdf.index.max() - ugcdf.index.min())\n        ).tolist()\n    bnds = ugcdf.total_bounds\n    dx = bnds[2] - bnds[0]\n    dy = bnds[3] - bnds[1]\n    buffer = max(dx, dy) * 0.1\n    fxextra = \", Fire Weather variant shown\" if ctx[\"fire\"] == \"yes\" else \"\"\n    mp = MapPlot(\n        apctx=ctx,\n        sector=\"spherical_mercator\",\n        west=bnds[0] + dx * 0.2 - buffer,\n        south=bnds[1] - buffer,\n        east=bnds[2] - dx * 0.2 + buffer,\n        north=bnds[3] + buffer,\n        title=f\"UGC {ctx['ugc']} '{ugcdf.loc[0]['name']}'\",\n        subtitle=f\"Found {len(ugcdf)} changes{fxextra}\",\n        axes_position=(0.02, 0.04, 0.62, 0.83),\n        nocaption=True,\n        nostates=True,\n        background=\"World_Topo_Map\",\n    )\n\n    ugcdf.to_crs(mp.panels[0].crs).plot(\n        ax=mp.panels[0].ax,\n        aspect=None,\n        facecolor=\"None\",\n        edgecolor=ugcdf[\"color\"],\n        lw=2.5,\n        zorder=Z_OVERLAY2,\n    )\n\n    handles = []\n    for _i, row in ugcdf.iterrows():\n        handles.append(\n            Rectangle(\n                (0, 0),\n                1,\n                1,\n                fc=\"None\",\n                edgecolor=row[\"color\"],\n            )\n        )\n\n    legend = mp.panels[0].ax.legend(\n        handles,\n        ugcdf[\"label\"].to_list(),  # type: ignore\n        loc=\"upper left\",\n        fontsize=10,\n        framealpha=1,\n        bbox_to_anchor=(1.0, 0.95),\n    )\n    # update the legend z-index\n    legend.set_zorder(Z_OVERLAY2)\n\n    return mp.fig, ugcdf.drop(columns=\"geom\")\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p260.py",
    "content": "\"\"\"\nThis autoplot maps out the issued NWS Watch/Warning/Advisory events over a\ngiven time period of your choice.  The displayed events are <strong>only\nspatially filtered</strong> in the case of a per WFO or per State Map. The\nspatial filter for the state level isn't necessarily straight forward and\nan arbitrary choice was made to require 5% of the polygon area to reside\nwithin the state for it to count.</p>\n\n<p><a href=\"/plotting/auto/?q=90\">Autoplot 90</a> is similar to this app, but\nproduces heatmaps and other summary maps.</p>\n\"\"\"\n\nfrom datetime import timedelta, timezone\nfrom typing import TYPE_CHECKING\n\nimport geopandas as gpd\nimport pyiem.nws.vtec as vtec\nfrom matplotlib.patches import Rectangle\nfrom pyiem import reference\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.nws.vtec import NWS_COLORS\nfrom pyiem.plot import MapPlot\nfrom pyiem.reference import (\n    SECTORS,\n    SECTORS_NAME,\n    Z_OVERLAY2,\n    fema_region_bounds,\n    wfo_bounds,\n)\nfrom pyiem.util import load_geodf, utc\n\nfrom iemweb.autoplot import ARG_FEMA, FEMA_REGIONS\n\nif TYPE_CHECKING:\n    import pandas as pd\n\n\nPDICT = {\n    \"wfo\": \"Plot by NWS Forecast Office\",\n    \"csector\": \"Plot by State / Region / US\",\n    \"fema\": \"Plot by FEMA Region\",\n    \"data\": \"Plot to Data Domain (contiguous US only)\",\n}\nPDICT2 = {\n    \"single\": \"Plot Single Selected Phenomena / Significance\",\n    \"svrtor\": \"Severe T'Storm + Tornado Warnings\",\n    \"svrtorffw\": \"Severe T'Storm + Tornado + Flash Flood Warnings\",\n}\nPDICT3 = {\n    \"cbw\": \"County Based Warnings\",\n    \"sbw\": \"Storm Based Warnings\",\n}\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    sts = utc() - timedelta(days=1)\n    desc[\"arguments\"] = [\n        {\n            \"type\": \"select\",\n            \"options\": PDICT3,\n            \"name\": \"geo\",\n            \"default\": \"sbw\",\n            \"label\": \"Select Warning Type\",\n        },\n        dict(\n            type=\"select\",\n            name=\"opt\",\n            default=\"wfo\",\n            options=PDICT,\n            label=\"How to plot the data?\",\n        ),\n        {\n            \"type\": \"datetime\",\n            \"min\": \"1986/01/01 0000\",\n            \"default\": sts.strftime(\"%Y/%m/%d 0000\"),\n            \"label\": \"Start Time (UTC) of event issuance:\",\n            \"name\": \"sts\",\n        },\n        {\n            \"type\": \"datetime\",\n            \"min\": \"1986/01/01 0000\",\n            \"default\": utc().strftime(\"%Y/%m/%d 0000\"),\n            \"label\": \"End Time (UTC) of event issuance (period &gt; 32 days):\",\n            \"name\": \"ets\",\n        },\n        dict(\n            type=\"networkselect\",\n            name=\"wfo\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO:\",\n            all=True,\n        ),\n        dict(\n            type=\"csector\",\n            name=\"csector\",\n            default=\"conus\",\n            label=\"Select state/sector to plot\",\n        ),\n        ARG_FEMA,\n        {\n            \"type\": \"select\",\n            \"options\": PDICT2,\n            \"name\": \"c\",\n            \"default\": \"single\",\n            \"label\": \"Total by Selected Phenomena/Significance or Combo\",\n        },\n        dict(\n            type=\"phenomena\",\n            name=\"phenomena\",\n            default=\"FF\",\n            label=\"Select Watch/Warning Phenomena Type:\",\n        ),\n        dict(\n            type=\"significance\",\n            name=\"significance\",\n            default=\"W\",\n            label=\"Select Watch/Warning Significance Level:\",\n        ),\n    ]\n    return desc\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    wfo = ctx[\"wfo\"]\n    phenomena = ctx[\"phenomena\"]\n    significance = ctx[\"significance\"]\n    opt = ctx[\"opt\"]\n    if opt == \"all\":\n        opt = \"wfo\"\n        wfo = \"_ALL\"\n    csector = ctx.pop(\"csector\")  # prevent apctx usage\n    ctx[\"_nt\"].sts[\"_ALL\"] = {\n        \"name\": \"All Offices\",\n        \"tzname\": \"America/Chicago\",\n    }\n    if (ctx[\"ets\"] - ctx[\"sts\"]).days > 32:\n        raise NoDataFound(\"Sorry, period is too long!\")\n    params = {\n        \"sts\": ctx[\"sts\"].replace(tzinfo=timezone.utc),\n        \"ets\": ctx[\"ets\"].replace(tzinfo=timezone.utc),\n        \"ph\": [\n            phenomena,\n        ],\n        \"sig\": significance,\n    }\n    wfo_limiter = \"\"\n    if wfo == \"_ALL\":\n        wfo_limiter = \"\"\n        ctx[\"_sname\"] = \"All Offices\"\n\n    if opt == \"csector\":\n        # Filtering is done later for non-state sectors\n        if len(csector) == 2:\n            if ctx[\"geo\"] == \"sbw\":\n                gdf = load_geodf(\"us_states\")\n                # Require at least 5% of the area to be within the state\n                wfo_limiter = \"\"\"\n    and ST_Intersects(geom, ST_SetSRID(ST_GeomFromEWKT(:wkt), 4326)) and\n    (ST_area(st_intersection(geom, ST_SetSRID(ST_GeomFromEWKT(:wkt), 4326))) /\n     ST_area(geom)) > 0.05\n                \"\"\"\n                if not gdf.at[csector, \"geom\"].is_valid:\n                    gdf.at[csector, \"geom\"] = gdf.at[csector, \"geom\"].buffer(0)\n                params[\"wkt\"] = gdf.at[csector, \"geom\"].wkt\n            else:\n                wfo_limiter = \" and substr(w.ugc, 1, 2) = :state \"\n                params[\"state\"] = csector\n        else:\n            wfo_limiter = (\n                \" and ST_Intersects(geom, \"\n                \"ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326)) \"\n            )\n            params[\"minx\"] = SECTORS[csector][0]\n            params[\"maxx\"] = SECTORS[csector][1]\n            params[\"miny\"] = SECTORS[csector][2]\n            params[\"maxy\"] = SECTORS[csector][3]\n    elif opt == \"wfo\":\n        wfo_limiter = \" and w.wfo = :wfo \"\n        params[\"wfo\"] = wfo if len(wfo) == 3 else wfo[1:]\n    elif opt == \"data\":\n        wfo_limiter = \" and w.wfo not in ('AFC', 'AFG', 'GUM', 'JSJ', 'HFO') \"\n\n    if ctx[\"c\"] == \"svrtor\":\n        params[\"ph\"] = [\"SV\", \"TO\"]\n        params[\"sig\"] = \"W\"\n    elif ctx[\"c\"] == \"svrtorffw\":\n        params[\"ph\"] = [\"SV\", \"TO\", \"FF\"]\n        params[\"sig\"] = \"W\"\n\n    sql = \"\"\"\n            SELECT\n            geom, wfo, phenomena, significance, eventid\n            from sbw w where phenomena = ANY(:ph) and significance = :sig\n            and status = 'NEW' and issue >= :sts and issue < :ets\n            {wfo_limiter}\n        \"\"\"\n    if ctx[\"geo\"] == \"cbw\":\n        sql = \"\"\"\n        select simple_geom as geom, w.wfo, phenomena, significance, eventid\n        from warnings w JOIN ugcs u on (w.gid = u.gid)\n        WHERE phenomena = ANY(:ph) and significance = :sig\n        and issue >= :sts and issue < :ets {wfo_limiter}\n        \"\"\"\n\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        wwadf: pd.DataFrame = gpd.read_postgis(\n            sql_helper(sql, wfo_limiter=wfo_limiter),\n            conn,\n            params=params,\n            index_col=None,\n            geom_col=\"geom\",\n        )  # type: ignore\n\n    if wwadf.empty:\n        raise NoDataFound(\"Sorry, no data found!\")\n\n    subtitle = \"Counts: \"\n    st = []\n    legend_items = []\n    for (ph, sig), gdf in wwadf.groupby([\"phenomena\", \"significance\"]):\n        st.append(f\"{len(gdf)} {vtec.get_ps_string(ph, sig)} ({ph}.{sig})\")\n        legend_items.append(\n            Rectangle(\n                (0, 0),\n                1,\n                1,\n                fc=NWS_COLORS.get(f\"{ph}.{sig}\", \"k\"),\n                ec=\"k\",\n                lw=1,\n                label=vtec.get_ps_string(ph, sig),\n            )\n        )\n    subtitle += \", \".join(st)\n\n    title = (\n        f\"Issued between {ctx['sts']:%-d %b %Y %H:%M} and \"\n        f\"{ctx['ets']:%-d %b %Y %H:%M} UTC \"\n    )\n    bnds = wwadf.total_bounds\n    if opt == \"csector\":\n        if len(csector) == 2:\n            title += f\"for State of {reference.state_names[csector]}\"\n        else:\n            title += f\"for {SECTORS_NAME[csector]}\"\n    elif opt == \"wfo\":\n        title += f\"by {ctx['_sname']}\"\n        xref = {\"TJSJ\": \"SJU\"}\n        bnds = wfo_bounds[xref.get(wfo, wfo[-3:])]\n    elif opt == \"fema\":\n        title += f\"for FEMA {FEMA_REGIONS[ctx['fema']]}\"\n        bnds = fema_region_bounds[int(ctx[\"fema\"])]\n    elif opt == \"data\":\n        title += \"for Contiguous US\"\n\n    mp = MapPlot(\n        apctx=ctx,\n        title=title,\n        subtitle=subtitle,\n        sector=\"spherical_mercator\",\n        west=bnds[0],\n        east=bnds[2],\n        south=bnds[1],\n        north=bnds[3],\n        nocaption=True,\n    )\n    wwadf[\"edgecolor\"] = wwadf.apply(\n        lambda x: NWS_COLORS.get(f\"{x['phenomena']}.{x['significance']}\", \"k\"),\n        axis=1,\n    )\n    wwadf[\"facecolor\"] = wwadf[\"edgecolor\"] + \"40\"  # 25% opaque\n    wwadf.to_crs(mp.panels[0].crs).plot(  # type: ignore\n        ax=mp.ax,\n        facecolor=wwadf[\"facecolor\"].to_list(),\n        edgecolor=wwadf[\"edgecolor\"].to_list(),\n        lw=2,\n        aspect=None,\n        zorder=Z_OVERLAY2,\n    )\n    mp.ax.legend(\n        handles=legend_items,\n        loc=\"upper right\",\n        fontsize=8,\n    )\n\n    return mp.fig, wwadf.drop(columns=\"geom\")\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p261.py",
    "content": "\"\"\"\nThis chart presents a heatmap of the issuance hour of a given NWS Text\nProduct.  While data does exist back into the 1980s, the archive quality\nand numerous changes with various products make long term plots a bit\nproblematic.  Please do not conflate this plot to represent when the given\nproducts are active.  For example, a Flash Flood Watch issued at 9 AM and\nvalid for a period from 3 PM till 3 PM the next day will only count as one\nat 9 AM.  If you want statistics on when various alerts are active, try\n<a href=\"/plotting/auto/?p=48\">Autoplot 48</a>.\n\"\"\"\n\nfrom datetime import date, datetime\n\nimport numpy as np\nimport pandas as pd\nimport seaborn as sns\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure_axes\nfrom pyiem.reference import prodDefinitions\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.mlib import rectify_wfo\n\nPDICT = {\n    \"utc\": \"UTC\",\n    \"local\": \"Local Time for Forecast Office\",\n}\nPDICT2 = {\n    \"single\": \"Single Product\",\n    \"c1\": \"Combined (SVR + TOR + SVS + FFW + FFS)\",\n    \"c2\": \"Combined (SVR + TOR)\",\n    \"c3\": \"Combined (SVR + TOR + SVS)\",\n}\nLOOKUP = {\n    \"c1\": [\"SVR\", \"TOR\", \"SVS\", \"FFW\", \"FFS\"],\n    \"c2\": [\"SVR\", \"TOR\"],\n    \"c3\": [\"SVR\", \"TOR\", \"SVS\"],\n}\n\n\ndef ensure_prodDefinitions_keys_in_labels():\n    \"\"\"\n    Ensure each prodDefinitions label includes its key for clarity in UI.\n    If the label does not already start with '[', prepend '[key] ' to it.\n    This helps users distinguish similar product names in dropdowns.\n    \"\"\"\n    for key, val in prodDefinitions.items():\n        if not val.startswith(\"[\"):\n            prodDefinitions[key] = f\"[{key}] {val}\"\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True, \"cache\": 86400}\n    ensure_prodDefinitions_keys_in_labels()\n    desc[\"arguments\"] = [\n        dict(\n            type=\"select\",\n            name=\"tzwhich\",\n            default=\"local\",\n            options=PDICT,\n            label=\"Which timezone to use for summary?\",\n        ),\n        dict(\n            type=\"networkselect\",\n            name=\"wfo\",\n            network=\"WFO\",\n            default=\"DMX\",\n            label=\"Select WFO:\",\n        ),\n        {\n            \"type\": \"select\",\n            \"name\": \"agg\",\n            \"default\": \"single\",\n            \"label\": \"Plot single product or given combination:\",\n            \"options\": PDICT2,\n        },\n        {\n            \"type\": \"select\",\n            \"name\": \"pil\",\n            \"default\": \"SVR\",\n            \"label\": \"Select 3 Character Product Identifier (PIL):\",\n            \"options\": prodDefinitions,\n        },\n        {\n            \"type\": \"year\",\n            \"min\": 1980,\n            \"max\": date.today().year,\n            \"name\": \"syear\",\n            \"default\": 2002,\n            \"label\": \"Inclusive Start Year for Summary\",\n        },\n        {\n            \"type\": \"year\",\n            \"min\": 1980,\n            \"max\": date.today().year,\n            \"name\": \"eyear\",\n            \"default\": date.today().year,\n            \"label\": \"Inclusive End Year for Summary\",\n        },\n        {\n            \"type\": \"cmap\",\n            \"name\": \"cmap\",\n            \"default\": \"jet\",\n            \"label\": \"Color Ramp\",\n        },\n    ]\n    return desc\n\n\n@with_sqlalchemy_conn(\"afos\")\ndef plotter(ctx: dict, conn: Connection | None = None):\n    \"\"\"Go\"\"\"\n    wfo = ctx[\"wfo\"]\n    tzname = (\n        \"UTC\" if ctx[\"tzwhich\"] == \"utc\" else ctx[\"_nt\"].sts[wfo][\"tzname\"]\n    )\n\n    params = {\n        \"source\": rectify_wfo(wfo),\n        \"sts\": date(ctx[\"syear\"], 1, 1),\n        \"ets\": date(ctx[\"eyear\"], 12, 31),\n        \"tzname\": tzname,\n        \"pils\": LOOKUP.get(\n            ctx[\"agg\"],\n            [\n                ctx[\"pil\"],\n            ],\n        ),\n    }\n    countsdf = pd.read_sql(\n        sql_helper(\n            \"\"\"\n    select extract(week from entered) as week,\n    extract(hour from entered at time zone :tzname) as hour,\n    count(*) from products where substr(pil, 1, 3) = ANY(:pils) and\n    source = :source and entered >= :sts and entered <= :ets\n    group by week, hour order by week, hour\n    \"\"\"\n        ),\n        conn,\n        params=params,\n        index_col=None,\n    )\n    if countsdf.empty:\n        raise NoDataFound(\n            f\"No data found for {params['source']} {params['pils']} \"\n            f\"between {params['sts']} and {params['ets']}\"\n        )\n    # Reindex the DataFrame to fill out zeros\n    countsdf = countsdf.pivot(\n        index=\"hour\", columns=\"week\", values=\"count\"\n    ).reindex(range(24), columns=range(1, 54), fill_value=np.nan)\n\n    label = (\n        prodDefinitions[ctx[\"pil\"]]\n        if ctx[\"agg\"] == \"single\"\n        else PDICT2[ctx[\"agg\"]]\n    )\n    title = f\"Frequency of NWS {ctx['_nt'].sts[wfo]['name']} issued {label}\"\n    subtitle = (\n        f\"{params['sts']} to {params['ets']} in timezone {params['tzname']}\"\n    )\n\n    (fig, ax) = figure_axes(title=title, subtitle=subtitle, apctx=ctx)\n    # Add sums to RHS\n    sumdf = countsdf.sum(axis=\"columns\").fillna(0)\n    for hour, count in sumdf.items():\n        ax.text(54, hour + 0.5, f\"{count:.0f}\", va=\"center\")\n    sns.heatmap(\n        countsdf,\n        annot=False,\n        linewidths=0.5,\n        ax=ax,\n        vmin=1,\n        cmap=ctx[\"cmap\"],\n        zorder=2,\n        square=False,\n    )\n\n    # Fix the y-axis tick rotation angle\n    ax.tick_params(axis=\"y\", rotation=0)\n    ax.tick_params(axis=\"x\", rotation=0)\n    ax.set_ylim(0, 24)\n    ax.set_xlim(0.5, 56.5)\n    # Pretty up the y-axis label to be 0-12 AM/PM or 0-23 for UTC\n    if params[\"tzname\"] == \"UTC\":\n        ax.set_yticks(np.arange(24) + 0.5)\n    else:\n        ax.set_yticks(np.arange(0, 24, 2) + 0.5)\n        yticklabels = []\n        for hr in range(0, 24, 2):\n            dt = datetime(2000, 1, 1, hr)\n            yticklabels.append(f\"{dt:%-I %p}\")\n        ax.set_yticklabels(yticklabels)\n\n    ax.set_xlabel(\"Week of Year\")\n    # Pretty up the x-axis labels\n    xticks = []\n    for month in range(2, 13):\n        dt = datetime(2000, month, 1)\n        xticks.append(dt.isocalendar()[1])\n        ax.axvline(\n            x=dt.isocalendar()[1],\n            color=\"k\",\n            lw=0.5,\n            zorder=3,\n        )\n    ax.set_xticks(xticks)\n    ax.set_xticklabels(\n        [datetime(2000, month, 1).strftime(\"%b\") for month in range(2, 13)]\n    )\n\n    ax.set_ylabel(f\"Hour (Timezone: {params['tzname']})\")\n\n    return fig, countsdf\n"
  },
  {
    "path": "pylib/iemweb/autoplot/scripts200/p262.py",
    "content": "\"\"\"\nThis autoplot lists out daily climate observation extremes for a given\ncombination of variable threshold and day offset.  For example, you can\nask for days with measurable snow cover, what was the top 10 warmest and\ncoldest high temperatures on the day following.\n\nIf the second variable picked is precip, snow, or snow depth, the lowest\n15 values are not plotted as they are often zero and not as interesting\nto look at.\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.plot import figure\nfrom pyiem.reference import TRACE_VALUE\n\nfrom iemweb.autoplot import ARG_STATION\n\nPDICT = {\n    \"high\": \"High Temperature (°F)\",\n    \"low\": \"Low Temperature (°F)\",\n    \"precip\": \"Precipitation (inch)\",\n    \"snow\": \"Snowfall (inch)\",\n    \"snowd\": \"Snow Depth (inch)\",\n}\n\n\ndef format_value(varname, value):\n    \"\"\"Format values using precision appropriate for the selected variable.\"\"\"\n    if varname in [\"high\", \"low\"]:\n        return f\"{value:.0f}\"\n    if abs(value - TRACE_VALUE) < 1e-3:\n        return \"T\"\n    if varname == \"precip\":\n        return f\"{value:.2f}\"\n    return f\"{value:.1f}\"\n\n\ndef get_description():\n    \"\"\"Return a dict describing how to call this plotter\"\"\"\n    desc = {\"description\": __doc__, \"data\": True}\n    desc[\"arguments\"] = [\n        ARG_STATION,\n        {\n            \"type\": \"filtervar\",\n            \"options\": PDICT,\n            \"default\": \"snow\",\n            \"comp_default\": \"ge\",\n            \"t_default\": 0.1,\n            \"name\": \"var1\",\n            \"label\": (\n                \"Select dataset filter requirement.  The IEM database \"\n                f\"represents Trace values as {TRACE_VALUE}, so that is the \"\n                \"threshold you would want to use to account for those values. \"\n            ),\n        },\n        {\n            \"type\": \"int\",\n            \"ge\": -365,\n            \"le\": 365,\n            \"default\": 1,\n            \"name\": \"offset\",\n            \"label\": (\n                \"Select number of days offset from the filtered events \"\n                \"found with the previous setting (0 == same day):\"\n            ),\n        },\n        {\n            \"type\": \"select\",\n            \"default\": \"high\",\n            \"options\": PDICT,\n            \"name\": \"var2\",\n            \"label\": \"Variable after offset days to list top events for:\",\n        },\n    ]\n    return desc\n\n\ndef get_obsdf(ctx):\n    \"\"\"Figure out our observations.\"\"\"\n    comps = {\n        \"ge\": \">=\",\n        \"gt\": \">\",\n        \"le\": \"<=\",\n        \"lt\": \"<\",\n        \"eq\": \"==\",\n        \"ne\": \"!=\",\n    }\n    threshold = ctx[\"var1_t\"]\n    if ctx[\"var1\"] in [\"high\", \"low\"]:\n        threshold = int(threshold)\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    with first as (\n        select day, {var1} as var1 from alldata where station = :station\n        and {var1} is not null and {var1} {comp} :threshold\n    ), second as (\n        select day - '{offset} days'::interval as effective_day, day,\n        {var2} as var2\n        from alldata where station = :station and {var2} is not null\n    )\n    select f.day, f.var1, s.day as day2, s.var2 from first f JOIN second s\n    on (f.day = s.effective_day) ORDER by s.var2 DESC\n            \"\"\",\n                var1=ctx[\"var1\"],\n                var2=ctx[\"var2\"],\n                offset=str(ctx[\"offset\"]),\n                comp=comps[ctx[\"var1_comp\"]],\n            ),\n            conn,\n            index_col=\"day\",\n            parse_dates=[\"day\", \"day2\"],\n            params={\n                \"station\": ctx[\"station\"],\n                \"threshold\": threshold,\n            },\n        )\n    if df.empty:\n        raise NoDataFound(\"No Data Found.\")\n    return df\n\n\ndef make_table(ax, title, tabledf, var1: str, var2: str):\n    \"\"\"Render a compact table with consistent formatting.\"\"\"\n    ax.set_title(title, fontsize=13, loc=\"left\")\n    ax.axis(\"off\")\n    celltext = [\n        [\n            f\"{day:%Y %b %d}\",\n            format_value(var1, row[\"var1\"]),\n            f\"{row['day2']:%Y %b %d}\",\n            format_value(var2, row[\"var2\"]),\n        ]\n        for day, row in tabledf.iterrows()\n    ]\n    table = ax.table(\n        cellText=celltext,\n        colLabels=[\n            \"Date\",\n            var1.capitalize(),\n            \"Second Date\",\n            var2.capitalize(),\n        ],\n        cellLoc=\"left\",\n        colLoc=\"left\",\n        bbox=[0, 0, 1, 0.97],\n    )\n    table.auto_set_font_size(False)\n    table.set_fontsize(10)\n    table.scale(1, 1.25)\n    for (row, _col), cell in table.get_celld().items():\n        cell.set_edgecolor(\"0.8\")\n        if row == 0:\n            cell.set_facecolor(\"#d9eaf4\")\n            cell.set_text_props(weight=\"bold\")\n        elif row % 2 == 0:\n            cell.set_facecolor(\"#f6f6f6\")\n        else:\n            cell.set_facecolor(\"white\")\n    return table\n\n\ndef plotter(ctx: dict):\n    \"\"\"Go\"\"\"\n    df = get_obsdf(ctx)\n\n    fig = figure(\n        title=(f\"{ctx['_sname']}:: Top 15 Events for {PDICT[ctx['var2']]}\"),\n        subtitle=(\n            f\"on {ctx['offset']} day(s) from dates with {PDICT[ctx['var1']]} \"\n            f\"{ctx['var1_comp']} {ctx['var1_t']}\"\n        ),\n        apctx=ctx,\n    )\n    leftax = fig.add_axes((0.02, 0.09, 0.46, 0.76))\n    make_table(\n        leftax,\n        \"Top 15 Highest Values\",\n        df.head(15),\n        ctx[\"var1\"],\n        ctx[\"var2\"],\n    )\n\n    if ctx[\"var2\"] not in [\"precip\", \"snow\", \"snowd\"]:\n        rightax = fig.add_axes((0.52, 0.09, 0.46, 0.76))\n        make_table(\n            rightax,\n            \"Top 15 Lowest Values\",\n            df.sort_values(\"var2\", ascending=True).head(15),\n            ctx[\"var1\"],\n            ctx[\"var2\"],\n        )\n\n    return fig, df\n"
  },
  {
    "path": "pylib/iemweb/c/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/c/tile.py",
    "content": "\"\"\"mod-wsgi service.\"\"\"\n\nfrom pathlib import Path\n\nfrom TileCache.Service import Service\n\nfrom iemweb.util import tms_handler\n\ntheService = {\"app\": None}\n\n\ndef application(environ: dict, start_response: callable):\n    \"\"\"Go service.\"\"\"\n    if not theService[\"app\"]:\n        theService[\"app\"] = Service.load(\n            Path(__file__).parent / \"tilecache.cfg\"\n        )\n    return tms_handler(environ, start_response, theService[\"app\"])\n"
  },
  {
    "path": "pylib/iemweb/c/tilecache.cfg",
    "content": "# Memcached:\n[cache]\ntype=Memcached\nservers=iem-memcached1:11211,iem-memcached2:11211,iem-memcached3:11211\n\n[profit2015]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/profit.map&transparent=true&\nlayers=profit2015\nsrs=EPSG:3857\ndebug=no\n\n[profit2014]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/profit.map&transparent=true&\nlayers=profit2014\nsrs=EPSG:3857\ndebug=no\n\n[profit2013]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/profit.map&transparent=true&\nlayers=profit2013\nsrs=EPSG:3857\ndebug=no\n\n[profit2012]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/profit.map&transparent=true&\nlayers=profit2012\nsrs=EPSG:3857\ndebug=no\n\n[profit2011]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/profit.map&transparent=true&\nlayers=profit2011\nsrs=EPSG:3857\ndebug=no\n\n[profit2010]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/profit.map&transparent=true&\nlayers=profit2010\nsrs=EPSG:3857\ndebug=no\n\n[idep]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/idep.map&transparent=true&\nlayers=vsm\nsrs=EPSG:3857\ndebug=no\n\n[ridge-t]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/ridge.map&transparent=true&\nlayers=single-archive\nsrs=EPSG:3857\ndebug=no\n\n[ridge-single]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/ridge.map&transparent=true&\nlayers=single\nsrs=EPSG:3857\ndebug=no\n\n[ridge-composite-single]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/ridge.map&transparent=true&\nlayers=composite-single\nsrs=EPSG:3857\ndebug=no\n\n[ridge-composite-t]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/ridge.map&transparent=true&\nlayers=composite-archive\nsrs=EPSG:3857\ndebug=no\n\n[ridge-composite-t-n0r]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/ridge.map&transparent=true&\nlayers=composite-archive-uscomp-n0r\nsrs=EPSG:3857\ndebug=no\n\n# to remove\n[c]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/political.map&transparent=true\nlayers=uscounties\nsrs=EPSG:3857\ndebug=no\n\n[uscounties]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/political.map&transparent=true\nlayers=uscounties\nsrs=EPSG:3857\ndebug=no\n\n# to remove\n[iac]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/political.map&transparent=true\nlayers=iacounties\nsrs=EPSG:3857\ndebug=no\n\n[iacounties]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/political.map&transparent=true\nlayers=iacounties\nsrs=EPSG:3857\ndebug=no\n\n[fz]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/political.map&transparent=true\nlayers=fz\nsrs=EPSG:3857\ndebug=no\n\n# to remove\n[s]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/political.map&transparent=true\nlayers=usstates\nsrs=EPSG:3857\ndebug=no\n\n[usstates]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/political.map&transparent=true\nlayers=usstates\nsrs=EPSG:3857\ndebug=no\n\n\n[wfo]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/political.map&transparent=true\nlayers=wfo\nsrs=EPSG:3857\ndebug=no\n\n[rfc]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/political.map&transparent=true\nlayers=rfc\nsrs=EPSG:3857\ndebug=no\n\n[cwsu]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/political.map&transparent=true\nlayers=cwsu\nsrs=EPSG:3857\ndebug=no\n\n[tribal]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/political.map&transparent=true\nlayers=tribal\nsrs=EPSG:3857\ndebug=no\n\n[iahydrology]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/political.map&transparent=true\nlayers=iahydrology\nsrs=EPSG:3857\ndebug=no\n\n[iahshd]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/political.map&transparent=true\nlayers=iahshd\nsrs=EPSG:3857\ndebug=no\n\n[iaglu]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/political.map&transparent=true\nlayers=iaglu\nsrs=EPSG:3857\ndebug=no\n\n[depmask]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/idep.map&transparent=true\nlayers=depmask\nsrs=EPSG:3857\ndebug=no\n\n[huc8]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/idep.map&transparent=true\nlayers=huc8\nsrs=EPSG:3857\ndebug=no\n"
  },
  {
    "path": "pylib/iemweb/cache/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/cache/tile.py",
    "content": "\"\"\"mod-wsgi service.\"\"\"\n\nfrom pathlib import Path\n\nfrom TileCache.Service import Service\n\nfrom iemweb.util import tms_handler\n\ntheService = {\"app\": None}\n\n\ndef application(environ: dict, start_response: callable):\n    \"\"\"Go service.\"\"\"\n    if not theService[\"app\"]:\n        cfgfile = Path(__file__).parent / \"tilecache.cfg\"\n        theService[\"app\"] = Service.load(cfgfile)\n    return tms_handler(environ, start_response, theService[\"app\"])\n"
  },
  {
    "path": "pylib/iemweb/cache/tilecache.cfg",
    "content": "# Memcached:\n[cache]\ntype=Memcached\nservers=iem-memcached1:11211,iem-memcached2:11211,iem-memcached3:11211\ntimeout=300\n\n[goes_east]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes_east.map&transparent=true&\nlayers=conus_ch02\nsrs=EPSG:3857\ndebug=no\n\n[goes_west]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes_west.map&transparent=true&\nlayers=conus_ch02\nsrs=EPSG:3857\ndebug=no\n\n[hrrr-refd]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/model/hrrr_refd.map&transparent=true&\nlayers=refd_0000\nsrs=EPSG:3857\ndebug=no\n\n[hrrr-refd-t]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/model/hrrr_refd.map&transparent=true&\nlayers=refd-t\nsrs=EPSG:3857\ndebug=no\n\n[hrrr-refp]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/model/hrrr_refp.map&transparent=true&\nlayers=refp_0000\nsrs=EPSG:3857\ndebug=no\n\n[hrrr-refp-t]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/model/hrrr_refp.map&transparent=true&\nlayers=refp-t\nsrs=EPSG:3857\ndebug=no\n\n[mrms]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/q2.map&transparent=true&\nlayers=single\nsrs=EPSG:3857\ndebug=no\n\n[ridge]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/ridge.map&transparent=true&\nlayers=single\nsrs=EPSG:3857\ndebug=no\n\n[goes]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/goes.map&transparent=true&\nlayers=single\nsrs=EPSG:3857\ndebug=no\n\n[ridge-single]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/ridge.map&transparent=true&\nlayers=single\nsrs=EPSG:3857\ndebug=no\n\n[ridge-composite-single]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/ridge.map&transparent=true&\nlayers=composite-single\nsrs=EPSG:3857\ndebug=no\n\n[ridge-t]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/ridge.map&transparent=true&\nlayers=single-archive\nsrs=EPSG:3857\ndebug=no\n\n[mrms-t]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/q2.map&transparent=true&\nlayers=single-archive\nsrs=EPSG:3857\ndebug=no\n\n[goes-t]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/goes.map&transparent=true&\nlayers=single-archive\nsrs=EPSG:3857\ndebug=no\n\n[ridge-composite-t]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/ridge.map&transparent=true&\nlayers=composite-archive\nsrs=EPSG:3857\ndebug=no\n\n[ridge-composite-t-n0r]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/ridge.map&transparent=true&\nlayers=composite-archive-uscomp-n0r\nsrs=EPSG:3857\ndebug=no\n\n[q2-hsr]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/q2.map&transparent=true&\nlayers=q2_hsr\nsrs=EPSG:3857\ndebug=no\n\n[q2-n1p] \ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/q2.map&transparent=true&\nlayers=q2_n1p\nsrs=EPSG:3857\ndebug=no\n\n[q2-p24h] \ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/q2.map&transparent=true&\nlayers=q2_p24h\nsrs=EPSG:3857\ndebug=no\n\n[q2-p48h] \ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/q2.map&transparent=true&\nlayers=q2_p48h\nsrs=EPSG:3857\ndebug=no\n\n[q2-p72h] \ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/q2.map&transparent=true&\nlayers=q2_p72h\nsrs=EPSG:3857\ndebug=no\n\n[hawaii-vis]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/hawaii_vis.map&transparent=true&\nlayers=hawaii_vis\nsrs=EPSG:3857\ndebug=no\n\n[alaska-vis]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/alaska_vis.map&transparent=true&\nlayers=alaska_vis\nsrs=EPSG:3857\ndebug=no\n\n[alaska-wv]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/alaska_wv.map&transparent=true&\nlayers=alaska_wv\nsrs=EPSG:3857\ndebug=no\n\n[alaska-ir]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/alaska_ir.map&transparent=true&\nlayers=alaska_ir\nsrs=EPSG:3857\ndebug=no\n\n[goes-west-vis-1km]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/west_vis.map&transparent=true&\nlayers=west_vis_1km\nsrs=EPSG:3857\ndebug=no\n\n[goes-east-vis-1km]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/east_vis.map&transparent=true&\nlayers=east_vis_1km\nsrs=EPSG:3857\ndebug=no\n\n\n[goes-west-ir-4km]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/west_ir.map&transparent=true&\nlayers=west_ir_4km\nsrs=EPSG:3857\ndebug=no\n\n[goes-east-ir-4km]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/east_ir.map&transparent=true&\nlayers=east_ir_4km\nsrs=EPSG:3857\ndebug=no\n\n[goes-west-wv-4km]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/west_wv.map&transparent=true&\nlayers=west_wv_4km\nsrs=EPSG:3857\ndebug=no\n\n[goes-east-wv-4km]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/east_wv.map&transparent=true&\nlayers=east_wv_4km\nsrs=EPSG:3857\ndebug=no\n\n\n[goes-vis-1km]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/conus_vis.map&transparent=true&\nlayers=conus_vis_1km\nsrs=EPSG:3857\ndebug=no\n\n[goes-ir-4km]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/conus_ir.map&transparent=true&\nlayers=conus_ir_4km\nsrs=EPSG:3857\ndebug=no\n\n[goes-wv-4km]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/conus_wv.map&transparent=true&\nlayers=conus_wv_4km\nsrs=EPSG:3857\ndebug=no\n\n[conus-goes-vis-1km]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/conus_vis.map&transparent=true&\nlayers=conus_vis_1km\nsrs=EPSG:3857\ndebug=no\n\n[conus-goes-ir-4km]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/conus_ir.map&transparent=true&\nlayers=conus_ir_4km\nsrs=EPSG:3857\ndebug=no\n\n[conus-goes-wv-4km]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/goes/conus_wv.map&transparent=true&\nlayers=conus_wv_4km\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0r]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0r.map&transparent=true&\nlayers=nexrad-n0r-900913\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0q]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0q.map&transparent=true&\nlayers=nexrad-n0q-900913\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0q-m05m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0q.map&transparent=true&\nlayers=nexrad-n0q-900913-m05m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0q-m10m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0q.map&transparent=true&\nlayers=nexrad-n0q-900913-m10m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0q-m15m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0q.map&transparent=true&\nlayers=nexrad-n0q-900913-m15m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0q-m20m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0q.map&transparent=true&\nlayers=nexrad-n0q-900913-m20m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0q-m25m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0q.map&transparent=true&\nlayers=nexrad-n0q-900913-m25m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0q-m30m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0q.map&transparent=true&\nlayers=nexrad-n0q-900913-m30m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0q-m35m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0q.map&transparent=true&\nlayers=nexrad-n0q-900913-m35m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0q-m40m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0q.map&transparent=true&\nlayers=nexrad-n0q-900913-m40m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0q-m45m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0q.map&transparent=true&\nlayers=nexrad-n0q-900913-m45m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0q-m50m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0q.map&transparent=true&\nlayers=nexrad-n0q-900913-m50m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0q-m55m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0q.map&transparent=true&\nlayers=nexrad-n0q-900913-m55m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0r-m05m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0r.map&transparent=true&\nlayers=nexrad-n0r-900913-m05m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0r-m10m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0r.map&transparent=true&\nlayers=nexrad-n0r-900913-m10m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0r-m15m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0r.map&transparent=true&\nlayers=nexrad-n0r-900913-m15m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0r-m20m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0r.map&transparent=true&\nlayers=nexrad-n0r-900913-m20m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0r-m25m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0r.map&transparent=true&\nlayers=nexrad-n0r-900913-m25m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0r-m30m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0r.map&transparent=true&\nlayers=nexrad-n0r-900913-m30m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0r-m35m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0r.map&transparent=true&\nlayers=nexrad-n0r-900913-m35m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0r-m40m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0r.map&transparent=true&\nlayers=nexrad-n0r-900913-m40m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0r-m45m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0r.map&transparent=true&\nlayers=nexrad-n0r-900913-m45m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-n0r-m50m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/n0r.map&transparent=true&\nlayers=nexrad-n0r-900913-m50m\nsrs=EPSG:3857\ndebug=no\n\n[idep]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nmetadata_baseurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/idep.map&transparent=true&\nlayers=vsm\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-eet]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/eet.map&transparent=true&\nlayers=nexrad-eet-900913\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-eet-m05m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/eet.map&transparent=true&\nlayers=nexrad-eet-900913-m05m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-eet-m10m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/eet.map&transparent=true&\nlayers=nexrad-eet-900913-m10m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-eet-m15m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/eet.map&transparent=true&\nlayers=nexrad-eet-900913-m15m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-eet-m20m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/eet.map&transparent=true&\nlayers=nexrad-eet-900913-m20m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-eet-m25m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/eet.map&transparent=true&\nlayers=nexrad-eet-900913-m25m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-eet-m30m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/eet.map&transparent=true&\nlayers=nexrad-eet-900913-m30m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-eet-m35m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/eet.map&transparent=true&\nlayers=nexrad-eet-900913-m35m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-eet-m40m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/eet.map&transparent=true&\nlayers=nexrad-eet-900913-m40m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-eet-m45m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/eet.map&transparent=true&\nlayers=nexrad-eet-900913-m45m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-eet-m50m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/eet.map&transparent=true&\nlayers=nexrad-eet-900913-m50m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-eet-m55m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/eet.map&transparent=true&\nlayers=nexrad-eet-900913-m55m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-net]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/net.map&transparent=true&\nlayers=nexrad-net-900913\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-net-m05m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/net.map&transparent=true&\nlayers=nexrad-net-900913-m05m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-net-m10m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/net.map&transparent=true&\nlayers=nexrad-net-900913-m10m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-net-m15m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/net.map&transparent=true&\nlayers=nexrad-net-900913-m15m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-net-m20m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/net.map&transparent=true&\nlayers=nexrad-net-900913-m20m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-net-m25m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/net.map&transparent=true&\nlayers=nexrad-net-900913-m25m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-net-m30m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/net.map&transparent=true&\nlayers=nexrad-net-900913-m30m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-net-m35m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/net.map&transparent=true&\nlayers=nexrad-net-900913-m35m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-net-m40m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/net.map&transparent=true&\nlayers=nexrad-net-900913-m40m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-net-m45m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/net.map&transparent=true&\nlayers=nexrad-net-900913-m45m\nsrs=EPSG:3857\ndebug=no\n\n[nexrad-net-m50m]\ntype=WMS\nspherical_mercator=true\ntms_type=google\nurl=http://iem-backend.local/cgi-bin/mapserv/mapserv.fcgi?map=/opt/iem/data/wms/nexrad/net.map&transparent=true&\nlayers=nexrad-net-900913-m50m\nsrs=EPSG:3857\ndebug=no\n"
  },
  {
    "path": "pylib/iemweb/climate/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/climate/orc.py",
    "content": "\"\"\".. title:: One off summary for Orange City, Iowa\n\nChangelog\n---------\n\n- 2024-08-26: Initital documentation update\n\nExample Requests\n----------------\n\nGet the current month's report\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/climate/orc.py\n\n\"\"\"\n\nfrom datetime import datetime, timedelta\nfrom io import StringIO\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.webutil import iemapp\n\n\ndef averageTemp(db, hi=\"high\", lo=\"low\"):\n    \"\"\"Average Temp\"\"\"\n    highSum, lowSum = 0, 0\n    for day in db.keys():\n        highSum += db[day][hi]\n        lowSum += db[day][lo]\n\n    highAvg = highSum / float(len(db))\n    lowAvg = lowSum / float(len(db))\n\n    return highAvg, lowAvg\n\n\ndef hdd(db, hi=\"high\", lo=\"low\"):\n    \"\"\"Compute heating degree days\"\"\"\n    dd = 0\n    for day in db:\n        h = db[day][hi]\n        low = db[day][lo]\n        a = (h + low) / 2.00\n        if a < 65:\n            dd += 65.0 - a\n    return dd\n\n\ndef cdd(db, hi=\"high\", lo=\"low\"):\n    \"\"\"Cooling Degree Days\"\"\"\n    dd = 0\n    for day in db:\n        h = db[day][hi]\n        low = db[day][lo]\n        a = (h + low) / 2.00\n        if a > 65:\n            dd += a - 65.0\n    return dd\n\n\n@iemapp(help=__doc__)\ndef application(_environ: dict, start_response: callable):\n    \"\"\"Go Main Go\"\"\"\n    COOP = get_dbconn(\"coop\")\n    ccursor = COOP.cursor()\n    IEM = get_dbconn(\"iem\")\n    icursor = IEM.cursor()\n    ASOS = get_dbconn(\"asos\")\n    acursor = ASOS.cursor()\n\n    ADJUSTMENT = 0\n    now = datetime.now()\n    e = now.replace(day=17)\n    s = (e - timedelta(days=31)).replace(day=18)\n    db = {}\n    now = s\n    while now <= e:\n        db[now.strftime(\"%m%d\")] = {\n            \"high\": -99,\n            \"low\": -99,\n            \"avg_high\": -99,\n            \"avg_low\": -99,\n        }\n        now += timedelta(days=1)\n\n    # Get Sioux City data\n    icursor.execute(\n        \"\"\"SELECT day, max_tmpf, min_tmpf from\n        summary s JOIN stations t ON (t.iemid = s.iemid)\n        WHERE t.id = 'SUX' and day >= %s and\n        day <= %s and max_tmpf is not null and min_tmpf is not null\n        \"\"\",\n        (s.date(), e.date()),\n    )\n    for row in icursor:\n        db[row[0].strftime(\"%m%d\")][\"high\"] = row[1] + ADJUSTMENT\n        db[row[0].strftime(\"%m%d\")][\"low\"] = row[2] + ADJUSTMENT\n\n    # Lemars\n    ccursor.execute(\n        \"SELECT high, low, valid  from climate WHERE station = 'IA4735'\"\n    )\n    for row in ccursor:\n        if row[2].strftime(\"%m%d\") not in db:\n            continue\n        db[row[2].strftime(\"%m%d\")][\"avg_high\"] = row[0]\n        db[row[2].strftime(\"%m%d\")][\"avg_low\"] = row[1]\n\n    # Compute Average wind speed\n    acursor.execute(\n        \"\"\"\n      SELECT station, avg(sknt) from alldata where station in ('SHL', 'ORC')\n      and valid BETWEEN %s and %s and sknt >= 0\n      GROUP by station ORDER by station DESC\n      \"\"\",\n        (s, e),\n    )\n    awind = -99\n    if acursor.rowcount > 0:\n        row = acursor.fetchone()\n        awind = row[1]\n\n    headers = [(\"Content-type\", \"text/plain\")]\n    start_response(\"200 OK\", headers)\n    sio = StringIO()\n    sio.write(\"  Orange City Climate Summary\\n\")\n    sio.write(\"%15s %6s %6s\\n\" % (\"DATE\", \"HIGH\", \"LOW\"))\n    now = s\n    while now <= e:\n        sio.write(\n            (\"%15s %6i %6i %6i %6i\\n\")\n            % (\n                now.strftime(\"%Y-%m-%d\"),\n                db[now.strftime(\"%m%d\")][\"high\"],\n                db[now.strftime(\"%m%d\")][\"low\"],\n                db[now.strftime(\"%m%d\")][\"avg_high\"],\n                db[now.strftime(\"%m%d\")][\"avg_low\"],\n            )\n        )\n        now += timedelta(days=1)\n\n    h, low = averageTemp(db)\n    ch, cl = averageTemp(db, \"avg_high\", \"avg_low\")\n\n    l_hdd = hdd(db)\n    c_hdd = hdd(db, \"avg_high\", \"avg_low\")\n\n    l_cdd = cdd(db)\n    c_cdd = cdd(db, \"avg_high\", \"avg_low\")\n\n    sio.write(\n        \"\"\"\nSummary Information [%s - %s]\n-------------------\n              Observed     |  Climate  |  Diff\n    High        %4.1f           %4.1f       %4.1f\n    Low         %4.1f           %4.1f       %4.1f\n HDD(base65)    %4.0f           %4.0f       %4.0f\n CDD(base65)    %4.0f           %4.0f       %4.0f\n Wind[MPH]      %4.1f             M          M\n\"\"\"\n        % (\n            s.strftime(\"%d %B %Y\"),\n            e.strftime(\"%d %B %Y\"),\n            h,\n            ch,\n            h - ch,\n            low,\n            cl,\n            low - cl,\n            l_hdd,\n            c_hdd,\n            l_hdd - c_hdd,\n            l_cdd,\n            c_cdd,\n            l_cdd - c_cdd,\n            awind,\n        )\n    )\n    return [sio.getvalue().encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/current/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/current/live.py",
    "content": "\"\"\".. title:: A Live Webcam Image\n\nThis service is a proxy to get a current webcam image.  There is about 15\nseconds of caching to keep the remote webcam from getting runover.\n\nChangelog\n---------\n\n- 2025-08-28: Implement pydantic validation\n\n\"\"\"\n\nfrom datetime import datetime\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport httpx\nfrom PIL import Image, ImageDraw\nfrom pydantic import Field\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.util import LOG, get_properties\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy.engine import Connection\n\n\nclass MySchema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    id: Annotated[\n        str, Field(description=\"The ID of the webcam\", max_length=10)\n    ] = \"KCCI-027\"\n\n\n@with_sqlalchemy_conn(\"mesosite\")\ndef fetch(cid: str, conn: Connection | None = None):\n    \"\"\"Do work to get the content\"\"\"\n    # Get camera metadata\n    res = conn.execute(\n        sql_helper(\"\"\"\n    SELECT ip, fqdn, online, name, port, is_vapix, scrape_url, network\n    FROM webcams WHERE id = :cid\n    \"\"\"),\n        {\"cid\": cid},\n    )\n    meta = None\n    for row in res.mappings():\n        meta = row\n    if meta is None:\n        return None\n    if meta[\"scrape_url\"] is not None or not meta[\"online\"]:\n        return None\n    # Get IEM properties\n    iemprops = get_properties()\n    user = iemprops.get(f\"webcam.{meta['network'].lower()}.user\")\n    passwd = iemprops.get(f\"webcam.{meta['network'].lower()}.pass\")\n    # Construct URI\n    uribase = \"http://%s:%s/-wvhttp-01-/GetOneShot\"\n    if meta[\"is_vapix\"]:\n        uribase = \"http://%s:%s/axis-cgi/jpg/image.cgi\"\n    uri = uribase % (\n        meta[\"ip\"] if meta[\"ip\"] is not None else meta[\"fqdn\"],\n        meta[\"port\"],\n    )\n    ham = (\n        httpx.BasicAuth\n        if cid\n        in [\n            \"KCRG-010\",\n            \"KCCI-027\",\n        ]\n        else httpx.DigestAuth\n    )\n    try:\n        resp = httpx.get(uri, auth=ham(user, passwd), timeout=15)\n        resp.raise_for_status()\n    except Exception as exp:\n        LOG.info(\"fetch failed: %s %s\", uri, exp)\n        return None\n    image = Image.open(BytesIO(resp.content))\n    (width, height) = image.size\n    # Draw black box\n    draw = ImageDraw.Draw(image)\n    draw.rectangle([0, height - 12, width, height], fill=\"#000000\")\n    stamp = datetime.now().strftime(\"%d %b %Y %I:%M:%S %P\")\n    title = f\"{meta['name']} - {meta['network']} Webcam Live Image at {stamp}\"\n    draw.text((5, height - 12), title)\n    buf = BytesIO()\n    image.save(buf, format=\"JPEG\")\n    return buf.getvalue()\n\n\n@iemapp(\n    content_type=\"image/jpeg\",\n    memcachekey=lambda environ: f\"/current/live/{environ['id']}.jpg\",\n    memcacheexpire=15,\n    help=__doc__,\n    schema=MySchema,\n)\ndef application(environ, start_response):\n    \"\"\"Do Fun Things\"\"\"\n    imagedata = fetch(environ[\"id\"])\n    if imagedata is None:\n        image = Image.new(\"RGB\", (640, 480))\n        draw = ImageDraw.Draw(image)\n        draw.text((320, 240), \"Sorry, failed to generate image :(\")\n        buf = BytesIO()\n        image.save(buf, format=\"JPEG\")\n        imagedata = buf.getvalue()\n\n    start_response(\"200 OK\", [(\"Content-type\", \"image/jpeg\")])\n    return imagedata\n"
  },
  {
    "path": "pylib/iemweb/dispatch.py",
    "content": "\"\"\"Shared dispatch logic for /json and /geojson endpoints.\"\"\"\n\nimport re\nfrom importlib import import_module\nfrom urllib.parse import parse_qsl, urlencode\n\nSPECIAL_ROUTES = {\n    \"json\": [\n        (\n            re.compile(\n                r\"^/raob/(?P<ts>[0-9]{12})/(?P<station>[A-Z0-9]{3,4})$\"\n            ),\n            \"raob\",\n            lambda match, environ: add_query(\n                environ,\n                ts=match.group(\"ts\"),\n                station=match.group(\"station\"),\n            ),\n        ),\n        (\n            re.compile(\n                r\"^/stage4/(?P<lon>[-+]?([0-9]*[\\.])?[0-9]+)/\"\n                r\"(?P<lat>[-+]?([0-9]*[\\.])?[0-9]+)/\"\n                r\"(?P<date>[0-9\\-]+)$\"\n            ),\n            \"stage4\",\n            lambda match, environ: add_query(\n                environ,\n                lon=match.group(\"lon\"),\n                lat=match.group(\"lat\"),\n                valid=match.group(\"date\"),\n            ),\n        ),\n    ],\n    \"geojson\": [\n        (\n            re.compile(r\"^/7am\"),\n            \"seven_am\",\n            None,\n        ),\n        (\n            re.compile(r\"^/network/(?P<network>[^/]+)\\.geojson$\"),\n            \"network\",\n            lambda match, environ: add_query(\n                environ, network=match.group(\"network\")\n            ),\n        ),\n        (\n            re.compile(r\"^/nexrad_attr\\.csv$\"),\n            \"nexrad_attr\",\n            lambda _match, environ: add_query(environ, fmt=\"csv\"),\n        ),\n    ],\n}\n\nREDIRECTS = {\n    \"/network_obs.php\": \"/api/1/currents.geojson\",\n    \"/obhistory.py\": \"/api/\",  # Annoying LLMs\n}\n\nSUFFIXES = {\n    \"json\": (\".json\", \".php\", \".py\"),\n    \"geojson\": (\".geojson\", \".php\", \".py\"),\n}\n\nMODULE_PREFIXES = {\n    \"json\": \"iemweb.json\",\n    \"geojson\": \"iemweb.geojson\",\n}\n\n# Single-endpoint modules served directly without sub-path routing.\nDIRECT_ROUTES = {\n    \"search\": \"iemweb.search\",\n    \"agclimate/ames_precip.py\": \"iemweb.agclimate.ames_precip\",\n    \"agclimate/isusm.py\": \"iemweb.agclimate.isusm\",\n    \"agclimate/nmp_csv.py\": \"iemweb.agclimate.nmp_csv\",\n}\n\n\ndef add_query(environ: dict, **params) -> None:\n    \"\"\"Add content into environ before passing it along.\"\"\"\n    current = dict(\n        parse_qsl(environ.get(\"QUERY_STRING\", \"\"), keep_blank_values=True)\n    )\n    current.update(params)\n    environ[\"QUERY_STRING\"] = urlencode(current)\n\n\ndef not_found(start_response: callable) -> list[bytes]:\n    \"\"\"Redirect missing content to the API docs page.\"\"\"\n    start_response(\"301 Found\", [(\"Location\", \"/api/\")])\n    return []\n\n\ndef normalize_path(path: str, suffixes: tuple[str, ...]) -> str | None:\n    \"\"\"Clean the path attempting to figure out what to import.\"\"\"\n    if not path:\n        return None\n\n    value = path.lstrip(\"/\")\n    for suffix in suffixes:\n        if value.endswith(suffix):\n            value = value[: -len(suffix)]\n            break\n\n    if not re.fullmatch(r\"[a-z_0-9]+\", value):\n        return None\n    return value\n\n\ndef detect_namespace(environ: dict) -> str | None:\n    \"\"\"Determine which namespace or direct route should handle this request.\"\"\"\n    all_routes = {**MODULE_PREFIXES, **DIRECT_ROUTES}\n    script_name: str = environ.get(\"SCRIPT_NAME\", \"\")\n    for key in all_routes:\n        prefix = f\"/{key}\"\n        if script_name == prefix or script_name.endswith(prefix):\n            return key\n\n    path: str = environ.get(\"PATH_INFO\", \"\")\n    for key in all_routes:\n        prefix = f\"/{key}\"\n        if path == prefix:\n            environ[\"PATH_INFO\"] = \"\"\n            return key\n        if path.startswith(f\"{prefix}/\"):\n            environ[\"PATH_INFO\"] = path[len(prefix) :]\n            return key\n    return None\n\n\ndef dispatch_namespace(\n    namespace: str, environ: dict, start_response: callable\n):\n    \"\"\"Dispatch a request for one namespace.\"\"\"\n    path: str = environ.get(\"PATH_INFO\", \"\")\n    if path.startswith(\"/index\"):\n        return not_found(start_response)\n\n    for regex, module_name, transform in SPECIAL_ROUTES[namespace]:\n        match = regex.match(path)\n        if match:\n            if transform is not None:\n                transform(match, environ)\n            handler = import_module(\n                f\"{MODULE_PREFIXES[namespace]}.{module_name}\"\n            )\n            return handler.application(environ, start_response)\n\n    if path in REDIRECTS:\n        start_response(\n            \"302 Found\",\n            [\n                (\n                    \"Location\",\n                    f\"{REDIRECTS[path]}?{environ.get('QUERY_STRING', '')}\",\n                )\n            ],\n        )\n        return []\n\n    endpoint = normalize_path(path, SUFFIXES[namespace])\n    if endpoint is None:\n        return not_found(start_response)\n\n    try:\n        handler = import_module(f\"{MODULE_PREFIXES[namespace]}.{endpoint}\")\n    except ModuleNotFoundError:\n        return not_found(start_response)\n\n    return handler.application(environ, start_response)\n\n\ndef application(environ: dict, start_response: callable):\n    \"\"\"WSGI entry point for the consolidated dispatcher.\"\"\"\n    namespace = detect_namespace(environ)\n    if namespace is None:\n        return not_found(start_response)\n    if namespace in DIRECT_ROUTES:\n        handler = import_module(DIRECT_ROUTES[namespace])\n        return handler.application(environ, start_response)\n    return dispatch_namespace(namespace, environ, start_response)\n"
  },
  {
    "path": "pylib/iemweb/fields.py",
    "content": "\"\"\"Stanardized fields used as parameters in Models.\n\nSo we have a convoluted set of things to support here, depending on if the\nfield has a None default or not.  So we have three scenarios supported by\nthe two field combinations, i.e. FIELD and FIELD_OPTIONAL.\n\n    1. Parameter is always required -> `name: FIELD`\n    2. Parameter has a default of proper type -> `name: FIELD = \"good\"`\n    3. Parameter is not required and None by default\n       -> `name: FIELD_OPTIONAL = None`\n\n\"\"\"\n\nimport re\nfrom datetime import date\nfrom typing import Annotated\nfrom zoneinfo import ZoneInfo, ZoneInfoNotFoundError\n\nfrom pydantic import (\n    AfterValidator,\n    BeforeValidator,\n    Field,\n    WithJsonSchema,\n)\n\n\ndef _clean_strings(val: list[str], re_pattern: str) -> list[str]:\n    \"\"\"Clean up the list strings.\"\"\"\n    str_re = re.compile(re_pattern)\n    for v in val:\n        if not str_re.match(v.strip()):\n            raise ValueError(f\"Invalid parameter: {v}\")\n    return [v.strip().upper() for v in val if v.strip()]\n\n\n# --------------\n# Never required, so no optional variant\nCALLBACK_FIELD = Annotated[\n    str | None,\n    Field(\n        description=(\n            \"Legacy JSON-P style callback.  It is likely best to not \"\n            \"depend on this usage. The IEM website has a permissive CORS. \"\n        ),\n        pattern=r\"^[A-Za-z_$][0-9A-Za-z_$]*(?:\\.[A-Za-z_$][0-9A-Za-z_$]*)*$\",\n        max_length=64,\n    ),\n]\n\n# -------------\n_DOM = Field(\n    description=\"Day of the month\",\n    le=31,\n    ge=1,\n)\nDAY_OF_MONTH_FIELD = Annotated[int, _DOM]\nDAY_OF_MONTH_FIELD_OPTIONAL = Annotated[int | None, _DOM]\n\n# --------------\n_HF = Field(\n    description=\"Hour of the day, 24 hour clock\",\n    le=23,\n    ge=0,\n)\nHOUR_FIELD = Annotated[int, _HF]\nHOUR_FIELD_OPTIONAL = Annotated[int | None, _HF]\n\n# --------------\n_LATF = Field(\n    description=\"Latitude (decimal degrees) of point of interest\",\n    ge=-90,\n    le=90,\n)\nLATITUDE_FIELD = Annotated[float, _LATF]\nLATITUDE_FIELD_OPTIONAL = Annotated[float | None, _LATF]\n\n# --------------\n_LONF = Field(\n    description=\"Longitude (decimal degrees) of point of interest\",\n    ge=-180,\n    le=180,\n)\nLONGITUDE_FIELD = Annotated[float, _LONF]\nLONGITUDE_FIELD_OPTIONAL = Annotated[float | None, _LONF]\n\n# --------------\n_MNF = Field(\n    description=\"Minute of the hour\",\n    le=59,\n    ge=0,\n)\nMINUTE_FIELD = Annotated[int, _MNF]\nMINUTE_FIELD_OPTIONAL = Annotated[int | None, _MNF]\n\n# --------------\n_MF = Field(\n    description=\"Month of the year\",\n    le=12,\n    ge=1,\n)\nMONTH_FIELD = Annotated[int, _MF]\nMONTH_FIELD_OPTIONAL = Annotated[int | None, _MF]\n\n# --------------\n_NF = Field(\n    description=(\n        \"IEM network identifier.  Typically a combination of a US state \"\n        \"abbreviation and a network classification, ie IA_ASOS.\"\n    ),\n    pattern=r\"^[A-Z_0-9]+$\",\n    min_length=2,  # OT\n)\nNETWORK_FIELD = Annotated[str, _NF]\nNETWORK_FIELD_OPTIONAL = Annotated[str | None, _NF]\n\n# --------------\n_S8F = Field(\n    description=(\n        \"Either provide a single value, multiple parameters each with a \"\n        \"single value, or a comma-separated list of values.  The context here \"\n        \"is a list of state identifiers.  All lowercase letters are \"\n        \"converted to uppercase.\"\n    ),\n)\n\nSTATE_LIST_FIELD = Annotated[\n    list,\n    BeforeValidator(lambda v: v.split(\",\") if isinstance(v, str) else v),\n    AfterValidator(lambda v: _clean_strings(v, r\"^[A-Z]{2}$\")),\n    _S8F,\n    WithJsonSchema({\"type\": \"string\"}, mode=\"serialization\"),\n]\nSTATE_LIST_FIELD_OPTIONAL = Annotated[\n    list | None,\n    BeforeValidator(lambda v: v.split(\",\") if isinstance(v, str) else v),\n    AfterValidator(lambda v: _clean_strings(v, r\"^[A-Z]{2}$\")),\n    _S8F,\n    WithJsonSchema({\"type\": \"string\"}, mode=\"serialization\"),\n]\n\n\n# --------------\n_STF = Field(\n    description=(\n        \"Either provide a single value, multiple parameters each with a \"\n        \"single value, or a comma-separated list of values.  The context here \"\n        \"is a list of station identifiers.  All lowercase letters are \"\n        \"converted to uppercase.\"\n    ),\n)\n\nSTATION_LIST_FIELD = Annotated[\n    list,\n    BeforeValidator(lambda v: v.split(\",\") if isinstance(v, str) else v),\n    AfterValidator(lambda v: _clean_strings(v, r\"^[A-Za-z0-9_]+$\")),\n    _STF,\n    WithJsonSchema({\"type\": \"string\"}, mode=\"serialization\"),\n]\n\n# --------------\n_SF = Field(\n    description=\"Two letter (uppercase) United States code\",\n    pattern=\"^[A-Z]{2}$\",\n)\nSTATE_FIELD = Annotated[str, _SF]\nSTATE_FIELD_OPTIONAL = Annotated[str | None, _SF]\n\n# --------------\n_TZF = Field(\n    description=(\n        \"A time zone string specified by IANA.  Common examples include \"\n        \"'America/Chicago', 'UTC', and 'Etc/UTC'.  The code implementation \"\n        \"passes this provided string to the python ZoneInfo library.\"\n    )\n)\n\n\ndef _validate_tz(val: str):\n    \"\"\"Ensure we can use this.\"\"\"\n    # Opinionated, but we have historically accepted these two values as UTC\n    if val in [\"\", \"etc/utc\"]:\n        return \"UTC\"\n    try:\n        ZoneInfo(val)\n    except ZoneInfoNotFoundError as exp:\n        raise ValueError(f\"Unknown timezone: {val}\") from exp\n    return val\n\n\nTZ_FIELD = Annotated[\n    str,\n    BeforeValidator(_validate_tz),\n    _TZF,\n]\nTZ_FIELD_OPTIONAL = Annotated[\n    str | None,\n    BeforeValidator(_validate_tz),\n    _TZF,\n]\n\n# --------------\n_VE = Field(\n    description=\"VTEC Event ID\",\n    ge=1,\n    le=9999,\n)\nVTEC_ETN_FIELD = Annotated[int, _VE]\nVTEC_ETN_FIELD_OPTIONAL = Annotated[int | None, _VE]\n\n# --------------\n_VSF = Field(\n    description=(\"One character (uppercase) VTEC significance code.\"),\n    pattern=\"^[A-Z]$\",\n)\nVTEC_SIG_FIELD = Annotated[str, _VSF]\nVTEC_SIG_FIELD_OPTIONAL = Annotated[str | None, _VSF]\n\n# --------------\n_VPF = Field(\n    description=(\"Two character (uppercase) VTEC phenomena code.\"),\n    pattern=\"^[A-Z]{2}$\",\n)\nVTEC_PH_FIELD = Annotated[str, _VPF]\nVTEC_PH_FIELD_OPTIONAL = Annotated[str | None, _VPF]\n\n# --------------\n_VYF = Field(\n    description=(\n        \"Year between 1986 and the current year for which the IEM \"\n        \"database may have VTEC records.\"\n    ),\n    ge=1986,\n    le=date.today().year + 1,  # Forgive a bit\n)\nVTEC_YEAR_FIELD = Annotated[int, _VYF]\nVTEC_YEAR_FIELD_OPTIONAL = Annotated[int | None, _VYF]\n\n# -----------------\n_YF = Field(\n    description=(\"Year field.\"),\n    ge=1850,\n    le=date.today().year + 1,  # Forgive a bit\n)\nYEAR_FIELD = Annotated[int, _YF]\nYEAR_FIELD_OPTIONAL = Annotated[int | None, _YF]\n"
  },
  {
    "path": "pylib/iemweb/geocoder.py",
    "content": "\"\"\"..title :: Geocoder Service\n\nProxies to the US Census Geocoding API.\n\nExamples\n--------\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/geocoder.py\\\n?address=100%20Main%20St%20Ames%20Iowa\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/geocoder.py\\\n?street=100%20Main%20St&city=Ames%20Iowa\n\n\"\"\"\n\nfrom typing import Annotated\n\nimport requests\nfrom pydantic import Field, model_validator\nfrom pyiem.webutil import CGIModel, iemapp\n\nSERVICE = \"https://geocoding.geo.census.gov/geocoder/locations/onelineaddress\"\n\n\nclass MyModel(CGIModel):\n    address: Annotated[\n        str | None, Field(description=\"Street address to geocode\")\n    ] = None\n    city: Annotated[str | None, Field(description=\"City name to geocode\")] = (\n        None\n    )\n    street: Annotated[\n        str | None, Field(description=\"Street name to geocode\")\n    ] = None\n\n    @model_validator(mode=\"after\")\n    def validate_request(self):\n        if not (self.address or (self.street and self.city)):\n            raise ValueError(\n                \"Must provide either 'address' or both 'street' and 'city'\"\n            )\n        return self\n\n\ndef geocode(address: str) -> tuple[float | None, float | None]:\n    \"\"\"Return lat/lon tuple or None if not found.\"\"\"\n    params = {\n        \"address\": address,\n        \"benchmark\": \"Public_AR_Current\",\n        \"format\": \"json\",\n    }\n    try:\n        resp = requests.get(SERVICE, params=params, timeout=10)\n        resp.raise_for_status()\n        data = resp.json()\n        matches = data.get(\"result\", {}).get(\"addressMatches\", [])\n        if matches:\n            # Census uses coordinates {\"x\": lon, \"y\": lat}\n            lat = matches[0][\"coordinates\"][\"y\"]\n            lon = matches[0][\"coordinates\"][\"x\"]\n            return (lat, lon)\n    except Exception:  # pragma: no cover - defensive, return generic error\n        return (None, None)\n    return (None, None)\n\n\n@iemapp(help=__doc__, schema=MyModel)\ndef application(environ, start_response):\n    \"\"\"Go main go\"\"\"\n    if environ[\"address\"]:\n        address = environ[\"address\"].strip()\n    else:\n        address = f\"{environ['street']}, {environ['city']}\".strip()\n\n    lat, lon = geocode(address)\n    start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n    return f\"{lat},{lon}\" if lat is not None else \"ERROR\"\n"
  },
  {
    "path": "pylib/iemweb/geojson/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/geojson/agclimate.py",
    "content": "\"\"\".. title:: ISU Ag Climate GeoJSON Service\n\nReturn to `API Services </api/#json>`_\n\nThis service provides access to the ISU Ag Climate Network data in a GeoJSON\nformat.\n\nChangelog\n---------\n\n- 2026-02-21: A bug was corrected with the `inversion` parameter.  It is now\n  required to be set to something truthy or not set at all.\n\nExample Requests\n----------------\n\nProvide the data valid at 12 UTC on 24 July 2024:\n\nhttps://mesonet.agron.iastate.edu/geojson/agclimate.py?dt=2024-07-24T12:00Z\n\nProvide the inversion data valid at 12 UTC on 24 July 2024:\n\nhttps://mesonet.agron.iastate.edu/geojson/agclimate.py\\\n?dt=2024-07-24T12:00Z&inversion=1\n\n\"\"\"\n\nimport json\nfrom datetime import timedelta\nfrom typing import Annotated\n\nfrom metpy.units import units\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.meteorology import (\n    comprehensive_climate_index,\n    temperature_humidity_index,\n)\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.reference import ISO8601\nfrom pyiem.tracker import loadqc\nfrom pyiem.util import convert_value, drct2text, mm2inch, utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    dt: Annotated[\n        AwareDatetime | None, Field(description=\"Validity timestamp\")\n    ] = None\n    inversion: Annotated[\n        bool, Field(description=\"Set to 1 to get inversion data\")\n    ] = False\n\n\ndef thi(row):\n    \"\"\"Set to M if null.\"\"\"\n    if row[\"tair_c_avg\"] is None or row[\"rh\"] is None:\n        return \"M\"\n    return safe(\n        temperature_humidity_index(\n            units(\"degC\") * row[\"tair_c_avg\"], units(\"percent\") * row[\"rh\"]\n        ),\n        2,\n    )\n\n\ndef cci(row, shade_effect):\n    \"\"\"Set to zero if null.\"\"\"\n    if (\n        row[\"srad_wm2\"] is None\n        or row[\"ws_mph\"] is None\n        or row[\"rh\"] is None\n        or row[\"tair_c_avg\"] is None\n    ):\n        return \"M\"\n    return safe(\n        comprehensive_climate_index(\n            units(\"degC\") * row[\"tair_c_avg\"],\n            units(\"percent\") * row[\"rh\"],\n            units(\"miles per hour\") * row[\"ws_mph\"],\n            units(\"W m^-2\") * row[\"srad_wm2\"],\n            shade_effect=shade_effect,\n        ),\n        2,\n    )\n\n\ndef safe_t(val, _units=\"degC\"):\n    \"\"\"Safe value.\"\"\"\n    if val is None:\n        return \"M\"\n    return f\"{convert_value(val, _units, 'degF'):.1f}\"\n\n\ndef safe_p(val):\n    \"\"\"precipitation\"\"\"\n    if val is None or val < 0:\n        return \"M\"\n    return f\"{val:.2f}\"\n\n\ndef safe(val, precision):\n    \"\"\"safe precision formatter\"\"\"\n    if val is None or val < 0:\n        return \"M\"\n    return round(val, precision)\n\n\ndef safe_m(val):\n    \"\"\"Safe value.\"\"\"\n    if val is None or val < 0:\n        return \"M\"\n    return round(val * 100.0, 0)\n\n\ndef compute_plant_water(row):\n    \"\"\"Crude algo.\"\"\"\n    if row[\"vwc12_qc\"] is None or row[\"vwc24_qc\"] is None:\n        return \"M\"\n    if row[\"station\"] == \"FRUI4\":  # Problematic\n        return \"M\"\n    p12 = min([max([0.1, row[\"vwc12_qc\"]]), 0.45])\n    p24 = min([max([0.1, row[\"vwc24_qc\"]]), 0.45])\n    val = (p12 * 12 + p24 * 12) - (24 * 0.1)\n    return safe(val, 2)\n\n\ndef get_inversion_data(conn, ts):\n    \"\"\"Retrieve inversion data.\"\"\"\n    nt = NetworkTable(\"ISUSM\", only_online=False)\n    data = json_response_dict({\"type\": \"FeatureCollection\", \"features\": []})\n    res = conn.execute(\n        sql_helper(\n            \"select *, case when tair_10_c_avg > tair_15_c_avg then true else \"\n            \"false end as is_inversion from sm_inversion where valid = :ts\"\n        ),\n        {\"ts\": ts},\n    )\n    for row in res.mappings():\n        sid = row[\"station\"]\n        lon = nt.sts[sid][\"lon\"]\n        lat = nt.sts[sid][\"lat\"]\n        data[\"features\"].append(\n            {\n                \"type\": \"Feature\",\n                \"id\": sid,\n                \"properties\": {\n                    \"name\": nt.sts[sid][\"name\"],\n                    \"valid_utc\": ts.strftime(ISO8601),\n                    \"tmpf_15\": safe_t(row[\"tair_15_c_avg\"]),\n                    \"tmpf_5\": safe_t(row[\"tair_5_c_avg\"]),\n                    \"tmpf_10\": safe_t(row[\"tair_10_c_avg\"]),\n                    \"is_inversion\": row[\"is_inversion\"],\n                },\n                \"geometry\": {\"type\": \"Point\", \"coordinates\": [lon, lat]},\n            }\n        )\n    return json.dumps(data)\n\n\ndef get_data(conn, ts):\n    \"\"\"Get the data for this timestamp\"\"\"\n    qcdict = loadqc()\n    nt = NetworkTable(\"ISUSM\", only_online=False)\n    data = {\"type\": \"FeatureCollection\", \"features\": []}\n    midnight = ts.replace(hour=0, minute=0)\n    tophour = ts.replace(minute=0)\n    h24 = ts - timedelta(hours=24)\n    mon_ts0 = min([h24, ts.replace(day=1, hour=1)])\n    res = conn.execute(\n        sql_helper(\"\"\"\n        with calendar_day as (\n            select\n            h.station,\n            max(coalesce(h.tair_c_avg_qc, m.tair_c_avg_qc)) as max_tmpc,\n            min(coalesce(h.tair_c_avg_qc, m.tair_c_avg_qc)) as min_tmpc,\n            sum(coalesce(etalfalfa_qc, 0)) as dailyet,\n            sum(h.rain_in_tot_qc) as pday from\n            sm_minute m LEFT JOIN sm_hourly h on (m.station = h.station and\n            m.valid = h.valid) WHERE m.valid > :midnight and m.valid <= :ts\n            GROUP by h.station\n        ),\n        twentyfour_hour as (\n            select\n            station,\n            sum(case when valid > :h24 then rain_in_tot else 0 end) as p24m,\n            sum(rain_in_tot) as pmonth\n            from\n            sm_hourly WHERE valid > :monts0 and valid <= :ts\n            GROUP by station\n        ),\n        agg as (\n            SELECT h.station,\n            h.encrh_avg,\n            coalesce(m.rh_avg_qc, h.rh_avg_qc) as rh,\n            h.rain_in_tot,\n            coalesce(etalfalfa_qc, 0) as etalfalfa_qc,\n            battv_min,\n            coalesce(m.slrkj_tot_qc * 60 / 1000, h.slrkj_tot_qc / 1000.)\n                as slrmj_tot,\n            coalesce(\n                m.slrkj_tot_qc * 1000. / 60., h.slrkj_tot_qc * 1000. / 60.)\n                as srad_wm2,\n            coalesce(m.tair_c_avg_qc, h.tair_c_avg_qc) as tair_c_avg,\n            coalesce(m.t4_c_avg_qc, h.t4_c_avg_qc) as t4_c_avg_qc,\n            coalesce(\n                m.t12_c_avg_qc, h.t12_c_avg_qc, m.sv_t14_qc)\n                as t12_c_avg_qc,\n            coalesce(m.t24_c_avg_qc, h.t24_c_avg_qc) as t24_c_avg_qc,\n            coalesce(m.t50_c_avg_qc, h.t50_c_avg_qc) as t50_c_avg_qc,\n            coalesce(m.vwc12_qc, h.vwc12_qc, m.sv_vwc14_qc) as vwc12_qc,\n            coalesce(m.vwc24_qc, h.vwc24_qc) as vwc24_qc,\n            coalesce(m.vwc50_qc, h.vwc50_qc) as vwc50_qc,\n            coalesce(m.ws_mph_max, h.ws_mph_max) as ws_mph_max,\n            coalesce(m.winddir_d1_wvt, h.winddir_d1_wvt) as winddir_d1_wvt,\n            coalesce(m.ws_mph, coalesce(h.ws_mph, 0)) as ws_mph\n            from sm_hourly h LEFT JOIN sm_minute m on (\n                h.station = m.station and\n                h.valid = date_trunc('hour', m.valid))\n            where h.valid = :tophour and m.valid = :ts\n        )\n        SELECT a.*, c.max_tmpc, c.min_tmpc, c.pday, h.p24m, h.pmonth,\n        c.dailyet\n        from agg a LEFT JOIN calendar_day c on (a.station = c.station)\n        LEFT JOIN twentyfour_hour h on (a.station = h.station)\n    \"\"\"),\n        {\n            \"midnight\": midnight,\n            \"ts\": ts,\n            \"h24\": h24,\n            \"monts0\": mon_ts0,\n            \"tophour\": tophour,\n        },\n    )\n    for row in res.mappings():\n        sid = row[\"station\"]\n        if sid not in nt.sts:\n            continue\n        lon = nt.sts[sid][\"lon\"]\n        lat = nt.sts[sid][\"lat\"]\n        q = qcdict.get(sid, {})\n        data[\"features\"].append(\n            {\n                \"type\": \"Feature\",\n                \"id\": sid,\n                \"properties\": {\n                    \"valid_utc\": ts.strftime(ISO8601),\n                    \"plant_water_6_30\": compute_plant_water(row),\n                    \"encrh_avg\": (\n                        f\"{safe(row['encrh_avg'], 1)}%\"\n                        if row[\"encrh_avg\"] is not None\n                        and row[\"encrh_avg\"] > 0\n                        else \"M\"\n                    ),\n                    \"rh\": f\"{safe(row['rh'], 0)}%\",\n                    \"hrprecip\": (\n                        safe_p(row[\"rain_in_tot\"])\n                        if not q.get(\"precip\", False)\n                        else \"M\"\n                    ),\n                    \"et\": safe_p(mm2inch(row[\"etalfalfa_qc\"])),\n                    \"dailyet\": (\n                        safe_p(mm2inch(row[\"dailyet\"]))\n                        if row[\"dailyet\"] is not None\n                        else \"M\"\n                    ),\n                    \"bat\": safe(row[\"battv_min\"], 2),\n                    \"cci\": cci(row, False),\n                    \"cci_shade\": cci(row, True),\n                    \"thi\": thi(row),\n                    \"radmj\": safe(row[\"slrmj_tot\"], 2),\n                    \"srad_wm2\": safe(row[\"srad_wm2\"], 2),\n                    \"tmpf\": (\n                        safe_t(row[\"tair_c_avg\"])\n                        if not q.get(\"tmpf\", False)\n                        else \"M\"\n                    ),\n                    \"high\": safe_t(row[\"max_tmpc\"], \"degC\"),\n                    \"low\": safe_t(row[\"min_tmpc\"], \"degC\"),\n                    \"pday\": safe(row[\"pday\"], 2),\n                    \"p24i\": safe(row[\"p24m\"], 2),\n                    \"pmonth\": safe(row[\"pmonth\"], 2),\n                    \"soil04t\": (\n                        safe_t(row[\"t4_c_avg_qc\"])\n                        if not q.get(\"soil4\", False)\n                        else \"M\"\n                    ),\n                    \"soil12t\": (\n                        safe_t(row[\"t12_c_avg_qc\"])\n                        if not q.get(\"soil12\", False)\n                        else \"M\"\n                    ),\n                    \"soil24t\": (\n                        safe_t(row[\"t24_c_avg_qc\"])\n                        if not q.get(\"soil24\", False)\n                        else \"M\"\n                    ),\n                    \"soil50t\": (\n                        safe_t(row[\"t50_c_avg_qc\"])\n                        if not q.get(\"soil50\", False)\n                        else \"M\"\n                    ),\n                    \"soil12m\": (\n                        safe_m(row[\"vwc12_qc\"])\n                        if not q.get(\"soil12\", False)\n                        else \"M\"\n                    ),\n                    \"soil24m\": (\n                        safe_m(row[\"vwc24_qc\"])\n                        if not q.get(\"soil24\", False)\n                        else \"M\"\n                    ),\n                    \"soil50m\": (\n                        safe_m(row[\"vwc50_qc\"])\n                        if not q.get(\"soil50\", False)\n                        else \"M\"\n                    ),\n                    \"gust\": safe(row[\"ws_mph_max\"], 1),\n                    \"wind\": (\n                        f\"{drct2text(row['winddir_d1_wvt'])}@\"\n                        f\"{(row['ws_mph']):.0f}\"\n                    ),\n                    \"name\": nt.sts[sid][\"name\"],\n                },\n                \"geometry\": {\"type\": \"Point\", \"coordinates\": [lon, lat]},\n            }\n        )\n    return json.dumps(data)\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Compute the memcache key.\"\"\"\n    dt = environ[\"dt\"]\n    if dt is None:\n        dt = utc().replace(minute=0, second=0, microsecond=0)\n    inversion = environ[\"inversion\"]\n    return f\"geojson/agclimate/{dt:%Y%m%d%H%M}_{inversion}\"\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    content_type=\"application/vnd.geo+json\",\n    memcachekey=get_mckey,\n    memcacheexpire=300,\n)\ndef application(environ, start_response):\n    \"\"\"Go Main Go\"\"\"\n    headers = [(\"Content-type\", \"application/vnd.geo+json\")]\n    dt = environ[\"dt\"]\n    if dt is None:\n        dt = utc().replace(minute=0, second=0, microsecond=0)\n    func = get_data if not environ[\"inversion\"] else get_inversion_data\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        data = func(conn, dt)\n\n    start_response(\"200 OK\", headers)\n    return data\n"
  },
  {
    "path": "pylib/iemweb/geojson/cf6.py",
    "content": "\"\"\".. title:: CF6 Data as GeoJSON\n\nReturn to `API Services </api/#json>`_\n\nChangelog\n---------\n\n- 2024-08-15: Initial documentation release\n\nExample Usage\n-------------\n\nRequest CF6 data for January 1st, 2024:\n\nhttps://mesonet.agron.iastate.edu/geojson/cf6.py?dt=2024-01-01\n\nSame request, but JSON(P)\n\nhttps://mesonet.agron.iastate.edu/geojson/cf6.py?dt=2024-01-01&callback=foo\n\nSame request, but return as a comma delimited file\n\nhttps://mesonet.agron.iastate.edu/geojson/cf6.py?dt=2024-01-01&fmt=csv\n\n\"\"\"\n\nfrom datetime import date\nfrom typing import Annotated\n\nimport simplejson as json\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import TRACE_VALUE\nfrom pyiem.webutil import CGIModel, iemapp\nfrom simplejson import encoder\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import get_ct, json_response_dict\n\nencoder.FLOAT_REPR = lambda o: format(o, \".2f\")\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    dt: Annotated[date, Field(description=\"Date to query for\")] = date.today()\n    callback: CALLBACK_FIELD = None\n    fmt: Annotated[\n        str,\n        Field(\n            description=\"Format of output\",\n            pattern=r\"^(geojson|csv)$\",\n        ),\n    ] = \"geojson\"\n\n\ndef departure(ob, climo):\n    \"\"\"Compute a departure value\"\"\"\n    if ob is None or climo is None:\n        return \"M\"\n    return ob - climo\n\n\ndef int_sanitize(val):\n    \"\"\"convert to Ms\"\"\"\n    if val is None:\n        return \"M\"\n    if val == TRACE_VALUE:\n        return \"T\"\n    return int(val)\n\n\ndef f1_sanitize(val):\n    \"\"\"convert to Ms\"\"\"\n    if val is None:\n        return \"M\"\n    if val == TRACE_VALUE:\n        return \"T\"\n    return round(val, 1)\n\n\ndef f2_sanitize(val):\n    \"\"\"convert to Ms\"\"\"\n    if val is None:\n        return \"M\"\n    if val == TRACE_VALUE:\n        return \"T\"\n    return round(val, 2)\n\n\ndef get_data(conn, ts, fmt):\n    \"\"\"Get the data for this timestamp\"\"\"\n    data = json_response_dict(\n        {\n            \"type\": \"FeatureCollection\",\n            \"features\": [],\n        }\n    )\n    # Fetch the daily values\n    res = conn.execute(\n        sql_helper(\"\"\"\n    select station, name, product, state, wfo, valid,\n    round(st_x(geom)::numeric, 4)::float as st_x,\n    round(st_y(geom)::numeric, 4)::float as st_y,\n    high, low, avg_temp, dep_temp, hdd, cdd, precip, snow, snowd_12z,\n    avg_smph, max_smph, avg_drct, minutes_sunshine, possible_sunshine,\n    cloud_ss, wxcodes, gust_smph, gust_drct\n    from cf6_data c JOIN stations s on (c.station = s.id)\n    WHERE s.network = 'NWSCLI' and c.valid = :ts\n    \"\"\"),\n        {\"ts\": ts},\n    )\n    for i, row in enumerate(res.mappings()):\n        data[\"features\"].append(\n            {\n                \"type\": \"Feature\",\n                \"id\": i,\n                \"properties\": {\n                    \"station\": row[\"station\"],\n                    \"state\": row[\"state\"],\n                    \"valid\": row[\"valid\"].strftime(\"%Y-%m-%d\"),\n                    \"wfo\": row[\"wfo\"],\n                    \"link\": f\"/api/1/nwstext/{row['product']}\",\n                    \"product\": row[\"product\"],\n                    \"name\": row[\"name\"],\n                    \"high\": int_sanitize(row[\"high\"]),\n                    \"low\": int_sanitize(row[\"low\"]),\n                    \"avg_temp\": f1_sanitize(row[\"avg_temp\"]),\n                    \"dep_temp\": f1_sanitize(row[\"dep_temp\"]),\n                    \"hdd\": int_sanitize(row[\"hdd\"]),\n                    \"cdd\": int_sanitize(row[\"cdd\"]),\n                    \"precip\": f2_sanitize(row[\"precip\"]),\n                    \"snow\": f1_sanitize(row[\"snow\"]),\n                    \"snowd_12z\": f1_sanitize(row[\"snowd_12z\"]),\n                    \"avg_smph\": f1_sanitize(row[\"avg_smph\"]),\n                    \"max_smph\": f1_sanitize(row[\"max_smph\"]),\n                    \"avg_drct\": int_sanitize(row[\"avg_drct\"]),\n                    \"minutes_sunshine\": int_sanitize(row[\"minutes_sunshine\"]),\n                    \"possible_sunshine\": int_sanitize(\n                        row[\"possible_sunshine\"]\n                    ),\n                    \"cloud_ss\": f1_sanitize(row[\"cloud_ss\"]),\n                    \"wxcodes\": row[\"wxcodes\"],\n                    \"gust_smph\": f1_sanitize(row[\"gust_smph\"]),\n                    \"gust_drct\": int_sanitize(row[\"gust_drct\"]),\n                },\n                \"geometry\": {\n                    \"type\": \"Point\",\n                    \"coordinates\": [row[\"st_x\"], row[\"st_y\"]],\n                },\n            }\n        )\n    if fmt == \"geojson\":\n        return json.dumps(data, ensure_ascii=False)\n    cols = (\n        \"station,valid,name,state,wfo,high,low,avg_temp,dep_temp,hdd,cdd,\"\n        \"precip,snow,snowd_12z,avg_smph,max_smph,avg_drct,minutes_sunshine,\"\n        \"possible_sunshine,cloud_ss,wxcodes,gust_smph,gust_drct\"\n    )\n    res = cols + \"\\n\"\n    for feat in data[\"features\"]:\n        for col in cols.split(\",\"):\n            val = feat[\"properties\"][col]\n            if isinstance(val, list | tuple):\n                res += \"%s,\" % (\" \".join([str(s) for s in val]),)\n            else:\n                res += \"%s,\" % (val,)\n        res += \"\\n\"\n    return res\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Figure out our memcache key.\"\"\"\n    return f\"/geojson/cf6/{environ['dt']:%Y%m%d}?fmt={environ['fmt']}\"\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=get_mckey,\n    memcacheexpire=300,\n    content_type=get_ct,\n)\ndef application(environ, start_response):\n    \"\"\"see how we are called\"\"\"\n    dt = environ[\"dt\"]\n    fmt = environ[\"fmt\"]\n    headers = [(\"Content-type\", get_ct(environ))]\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        data = get_data(conn, dt, fmt)\n    start_response(\"200 OK\", headers)\n    return data.encode(\"utf-8\")\n"
  },
  {
    "path": "pylib/iemweb/geojson/cli.py",
    "content": "\"\"\".. title:: Daily CLImate Reports\n\nReturn to `API Services </api/#json>`_ |\nView `Map Frontend </nws/climap.php>`_\nor `Table Frontend </nws/clitable.php>`_\n\nDocumentation for /geojson/cli.py\n---------------------------------\n\nThis service emits atomic data for a given date of NWS CLImate reporting.  This\nis based on a parsing of the `CLI` product, which contains daily climate\nsummaries for mostly airport weather stations.  This service primarily is used\nto output GeoJSON, but there is a CSV option as well.\n\nChangelog\n---------\n\n- 2024-08-09: Initial documentation update\n\nExample Usage\n-------------\n\nProvide CLI data for 2024-07-01 in GeoJSON format:\n\nhttps://mesonet.agron.iastate.edu/geojson/cli.py?dt=2024-07-01&fmt=geojson\n\nSame data, but in CSV format:\n\nhttps://mesonet.agron.iastate.edu/geojson/cli.py?dt=2024-07-01&fmt=csv\n\nSame data, but in CSV format and force download:\n\nhttps://mesonet.agron.iastate.edu/geojson/cli.py?dt=2024-07-01&fmt=csv&dl=1\n\n\"\"\"\n\nimport csv\nimport io\nfrom datetime import date\nfrom typing import Annotated\n\nimport simplejson as json\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import TRACE_VALUE\nfrom pyiem.webutil import CGIModel, iemapp\nfrom simplejson import encoder\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import get_ct, json_response_dict\n\nencoder.FLOAT_REPR = lambda o: format(o, \".2f\")\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    dl: Annotated[bool, Field(description=\"Force download of CSV file.\")] = (\n        False\n    )\n    dt: Annotated[date, Field(description=\"Date of interest.\")] = date.today()\n    fmt: Annotated[\n        str,\n        Field(\n            description=\"The output format requested.\",\n            pattern=\"^(geojson|csv)$\",\n        ),\n    ] = \"geojson\"\n\n\ndef departure(ob, climo):\n    \"\"\"Compute a departure value\"\"\"\n    if ob is None or climo is None:\n        return \"M\"\n    return ob - climo\n\n\ndef int_sanitize(val):\n    \"\"\"convert to Ms\"\"\"\n    if val is None:\n        return \"M\"\n    if val == TRACE_VALUE:\n        return \"T\"\n    return int(val)\n\n\ndef f1_sanitize(val):\n    \"\"\"convert to Ms\"\"\"\n    if val is None:\n        return \"M\"\n    if val == TRACE_VALUE:\n        return \"T\"\n    return round(val, 1)\n\n\ndef f2_sanitize(val):\n    \"\"\"convert to Ms\"\"\"\n    if val is None:\n        return \"M\"\n    if val == TRACE_VALUE:\n        return \"T\"\n    return round(val, 2)\n\n\ndef get_data(conn, ts, fmt):\n    \"\"\"Get the data for this timestamp\"\"\"\n    data = json_response_dict(\n        {\n            \"type\": \"FeatureCollection\",\n            \"features\": [],\n        }\n    )\n    # Fetch the daily values\n    res = conn.execute(\n        sql_helper(\"\"\"\n    select station, name, product, state, wfo, valid,\n    round(st_x(geom)::numeric, 4)::float as lon,\n    round(st_y(geom)::numeric, 4)::float as lat,\n    high, high_normal, high_record, high_record_years, high_time,\n    low, low_normal, low_record, low_record_years, low_time,\n    precip, precip_normal, precip_month, precip_jan1, precip_jan1_normal,\n    precip_jul1, precip_dec1, precip_dec1_normal, precip_record,\n    precip_record_years, snow_normal,\n    precip_month_normal, snow, snow_month, snow_jun1, snow_jul1,\n    snow_dec1, snow_record, snow_jul1_normal,\n    snow_dec1_normal, snow_month_normal, snow_record_years,\n    precip_jun1, precip_jun1_normal,\n    round(((case when snow_jul1 < 0.1 then 0 else snow_jul1 end)\n        - snow_jul1_normal)::numeric, 2) as snow_jul1_depart,\n    round(((case when precip_jan1 < 0.1 then 0 else precip_jan1 end)\n        - precip_jan1_normal)::numeric, 2) as precip_jan1_depart,\n    average_sky_cover,\n    resultant_wind_speed, resultant_wind_direction,\n    highest_wind_speed, highest_wind_direction,\n    highest_gust_speed, highest_gust_direction,\n    average_wind_speed, snowdepth\n    from cli_data c JOIN stations s on (c.station = s.id)\n    WHERE s.network = 'NWSCLI' and c.valid = :ts\n    \"\"\"),\n        {\"ts\": ts},\n    )\n    for i, row in enumerate(res.mappings()):\n        data[\"features\"].append(\n            {\n                \"type\": \"Feature\",\n                \"id\": i,\n                \"properties\": {\n                    \"station\": row[\"station\"],\n                    \"state\": row[\"state\"],\n                    \"lon\": row[\"lon\"],\n                    \"lat\": row[\"lat\"],\n                    \"valid\": row[\"valid\"].strftime(\"%Y-%m-%d\"),\n                    \"wfo\": row[\"wfo\"],\n                    \"link\": f\"/api/1/nwstext/{row['product']}\",\n                    \"product\": row[\"product\"],\n                    \"name\": row[\"name\"],\n                    \"high\": int_sanitize(row[\"high\"]),\n                    \"high_record\": int_sanitize(row[\"high_record\"]),\n                    \"high_record_years\": row[\"high_record_years\"],\n                    \"high_normal\": int_sanitize(row[\"high_normal\"]),\n                    \"high_depart\": departure(row[\"high\"], row[\"high_normal\"]),\n                    \"high_time\": row[\"high_time\"],\n                    \"low\": int_sanitize(row[\"low\"]),\n                    \"low_record\": int_sanitize(row[\"low_record\"]),\n                    \"low_record_years\": row[\"low_record_years\"],\n                    \"low_normal\": int_sanitize(row[\"low_normal\"]),\n                    \"low_depart\": departure(row[\"low\"], row[\"low_normal\"]),\n                    \"low_time\": row[\"low_time\"],\n                    \"precip\": f2_sanitize(row[\"precip\"]),\n                    \"precip_normal\": f2_sanitize(row[\"precip_normal\"]),\n                    \"precip_month\": f2_sanitize(row[\"precip_month\"]),\n                    \"precip_month_normal\": f2_sanitize(\n                        row[\"precip_month_normal\"]\n                    ),\n                    \"precip_jan1\": f2_sanitize(row[\"precip_jan1\"]),\n                    \"precip_jan1_normal\": f2_sanitize(\n                        row[\"precip_jan1_normal\"]\n                    ),\n                    \"precip_jan1_depart\": f2_sanitize(\n                        row[\"precip_jan1_depart\"]\n                    ),\n                    \"precip_jun1\": f2_sanitize(row[\"precip_jun1\"]),\n                    \"precip_jun1_normal\": f2_sanitize(\n                        row[\"precip_jun1_normal\"]\n                    ),\n                    \"precip_jul1\": f2_sanitize(row[\"precip_jul1\"]),\n                    \"precip_dec1\": f2_sanitize(row[\"precip_dec1\"]),\n                    \"precip_dec1_normal\": f2_sanitize(\n                        row[\"precip_dec1_normal\"]\n                    ),\n                    \"precip_record\": f2_sanitize(row[\"precip_record\"]),\n                    \"precip_record_years\": row[\"precip_record_years\"],\n                    \"snow\": f1_sanitize(row[\"snow\"]),\n                    \"snowdepth\": f1_sanitize(row[\"snowdepth\"]),\n                    \"snow_normal\": f1_sanitize(row[\"snow_normal\"]),\n                    \"snow_month\": f1_sanitize(row[\"snow_month\"]),\n                    \"snow_jun1\": f1_sanitize(row[\"snow_jun1\"]),\n                    \"snow_jul1\": f1_sanitize(row[\"snow_jul1\"]),\n                    \"snow_dec1\": f1_sanitize(row[\"snow_dec1\"]),\n                    \"snow_record\": f1_sanitize(row[\"snow_record\"]),\n                    \"snow_record_years\": row[\"snow_record_years\"],\n                    \"snow_jul1_normal\": f1_sanitize(row[\"snow_jul1_normal\"]),\n                    \"snow_jul1_depart\": f1_sanitize(row[\"snow_jul1_depart\"]),\n                    \"snow_dec1_normal\": f1_sanitize(row[\"snow_dec1_normal\"]),\n                    \"snow_month_normal\": f1_sanitize(row[\"snow_month_normal\"]),\n                    \"average_sky_cover\": f1_sanitize(row[\"average_sky_cover\"]),\n                    \"resultant_wind_speed\": f1_sanitize(\n                        row[\"resultant_wind_speed\"]\n                    ),\n                    \"resultant_wind_direction\": int_sanitize(\n                        row[\"resultant_wind_direction\"]\n                    ),\n                    \"highest_wind_speed\": int_sanitize(\n                        row[\"highest_wind_speed\"]\n                    ),\n                    \"highest_wind_direction\": int_sanitize(\n                        row[\"highest_wind_direction\"]\n                    ),\n                    \"highest_gust_speed\": int_sanitize(\n                        row[\"highest_gust_speed\"]\n                    ),\n                    \"highest_gust_direction\": int_sanitize(\n                        row[\"highest_gust_direction\"]\n                    ),\n                    \"average_wind_speed\": f1_sanitize(\n                        row[\"average_wind_speed\"]\n                    ),\n                },\n                \"geometry\": {\n                    \"type\": \"Point\",\n                    \"coordinates\": [row[\"lon\"], row[\"lat\"]],\n                },\n            }\n        )\n    if fmt == \"geojson\":\n        # Ensure unicode is preserved; JSONP wrapping happens in application()\n        return json.dumps(data, ensure_ascii=False)\n    cols = (\n        \"station,lon,lat,valid,name,state,wfo,high,high_record,\"\n        \"high_record_years,\"\n        \"high_normal,high_time,low,low_record,low_record_years,low_normal,\"\n        \"low_time,precip,precip_normal,precip_month,precip_jan1,\"\n        \"precip_jan1_normal,precip_jul1,precip_dec1,precip_dec1_normal,\"\n        \"precip_record,precip_record_years,precip_jan1_depart,\"\n        \"snow,snowdepth,snow_normal,snow_month,snow_jun1,snow_jul1,snow_dec1,\"\n        \"snow_record,snow_record_years,snow_jul1_normal,snow_dec1_normal,\"\n        \"snow_month_normal,snow_jul1_depart,average_sky_cover\"\n    )\n    # Build CSV robustly with proper quoting\n    output = io.StringIO()\n    writer = csv.writer(output)\n    header = cols.split(\",\")\n    writer.writerow(header)\n    for feat in data[\"features\"]:\n        row = []\n        for col in header:\n            val = feat[\"properties\"][col]\n            if isinstance(val, list | tuple):\n                row.append(\" \".join(str(s) for s in val))\n            else:\n                row.append(val)\n        writer.writerow(row)\n    return output.getvalue()\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Figure out the memcache key.\"\"\"\n    return f\"/geojson/cli/{environ['dt']:%Y%m%d}?fmt={environ['fmt']}\"\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    content_type=get_ct,\n    memcachekey=get_mckey,\n    memcacheexpire=600,  # Excessive usage\n)\ndef application(environ, start_response):\n    \"\"\"see how we are called\"\"\"\n    fmt = environ[\"fmt\"]\n\n    # Derive content-type from shared utility\n    headers = [(\"Content-type\", get_ct(environ))]\n    # Add attachment header only when CSV download is requested\n    if fmt == \"csv\" and environ[\"dl\"]:\n        headers.append(\n            (\n                \"Content-disposition\",\n                f\"attachment; filename=cli{environ['dt']:%Y%m%d}.csv\",\n            )\n        )\n\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        data = get_data(conn, environ[\"dt\"], fmt)\n    start_response(\"200 OK\", headers)\n    # Use UTF-8 to support non-ASCII station names, etc.\n    return data.encode(\"utf-8\")\n"
  },
  {
    "path": "pylib/iemweb/geojson/climodat_dayclimo.py",
    "content": "\"\"\".. title:: Generate Climodat Day Climatology GeoJSON\n\nReturn to `API Services </api/#json>`_ or\n`Climodat Frontend </COOP/extremes.php>`_.\n\nDocumentation for /geojson/climodat_dayclimo.py\n-----------------------------------------------\n\nThis service returns a GeoJSON representation of the daily climatology\nfor a given day of the year.  The data is derived from the IEM's\n`climodat` database table.\n\nUsage Examples\n~~~~~~~~~~~~~~\n\nProvide Iowa's daily climatology for January 1st:\n\nhttps://mesonet.agron.iastate.edu/geojson/climodat_dayclimo.py\\\n?network=IACLIMATE&month=1&day=1\n\n\"\"\"\n\nimport json\nfrom datetime import datetime\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy import Connection\n\nfrom iemweb.fields import CALLBACK_FIELD, NETWORK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    day: Annotated[int, Field(ge=1, le=31)] = 1\n    month: Annotated[int, Field(ge=1, le=12)] = 1\n    syear: Annotated[int, Field(ge=1800, le=2050)] = 1800\n    eyear: Annotated[int, Field(ge=1800, le=2050)] = datetime.now().year + 1\n    network: NETWORK_FIELD = \"IACLIMATE\"\n\n\ndef run(conn: Connection, network, month, day, syear, eyear):\n    \"\"\"Do something\"\"\"\n\n    nt = NetworkTable(network)\n    sday = f\"{month:02.0f}{day:02.0f}\"\n    table = f\"alldata_{network[:2].lower()}\"\n    res = conn.execute(\n        sql_helper(\n            \"\"\"\n    WITH data as (\n      SELECT station, year, precip,\n      avg(precip) OVER (PARTITION by station) as avg_precip,\n      high, rank() OVER (PARTITION by station ORDER by high DESC nulls last)\n        as max_high,\n      avg(high) OVER (PARTITION by station) as avg_high,\n      rank() OVER (PARTITION by station ORDER by high ASC nulls last)\n        as min_high,\n      low, rank() OVER (PARTITION by station ORDER by low DESC nulls last)\n        as max_low,\n      avg(low) OVER (PARTITION by station) as avg_low,\n      rank() OVER (PARTITION by station ORDER by low ASC nulls last)\n        as min_low,\n      rank() OVER (PARTITION by station ORDER by precip DESC nulls last)\n        as max_precip\n      from {table} WHERE sday = :sday and year >= :syear and year < :eyear),\n\n    max_highs as (\n      SELECT station, high, array_agg(year) as years from data\n      where max_high = 1 GROUP by station, high),\n    min_highs as (\n      SELECT station, high, array_agg(year) as years from data\n      where min_high = 1 GROUP by station, high),\n\n    max_lows as (\n      SELECT station, low, array_agg(year) as years from data\n      where max_low = 1 GROUP by station, low),\n    min_lows as (\n      SELECT station, low, array_agg(year) as years from data\n      where min_low = 1 GROUP by station, low),\n\n    max_precip as (\n      SELECT station, precip, array_agg(year) as years from data\n      where max_precip = 1 GROUP by station, precip),\n\n    avgs as (\n      SELECT station, count(*) as cnt, max(avg_precip) as p,\n      max(avg_high) as h, max(avg_low) as l from data GROUP by station)\n\n    SELECT a.station, a.cnt, a.h, xh.high as xh_high, xh.years as xh_years,\n    nh.high as nh_high, nh.years as nh_years, a.l, xl.low as xl_low,\n    xl.years as xl_years,\n    nl.low as nl_low, nl.years as nl_years, a.p, mp.precip,\n    mp.years as mp_years\n    from avgs a, max_highs xh, min_highs nh, max_lows xl, min_lows nl,\n    max_precip mp\n    WHERE xh.station = a.station and xh.station = nh.station\n    and xh.station = xl.station and\n    xh.station = nl.station and xh.station = mp.station and\n    xh.high is not null and a.l is not null ORDER by station ASC\n    \"\"\",\n            table=table,\n        ),\n        {\"sday\": sday, \"syear\": syear, \"eyear\": eyear},\n    )\n    data = json_response_dict(\n        {\n            \"type\": \"FeatureCollection\",\n            \"month\": month,\n            \"day\": day,\n            \"network\": network,\n            \"features\": [],\n        }\n    )\n\n    for i, row in enumerate(res.mappings()):\n        if row[\"station\"] not in nt.sts:\n            continue\n        props = dict(\n            station=row[\"station\"],\n            name=nt.sts[row[\"station\"]][\"name\"],\n            years=row[\"cnt\"],\n            avg_high=float(row[\"h\"]),\n            max_high=row[\"xh_high\"],\n            max_high_years=row[\"xh_years\"],\n            min_high=row[\"nh_high\"],\n            min_high_years=row[\"nh_years\"],\n            avg_low=float(row[\"l\"]),\n            max_low=row[\"xl_low\"],\n            max_low_years=row[\"xl_years\"],\n            min_low=row[\"nl_low\"],\n            min_low_years=row[\"nl_years\"],\n            avg_precip=float(row[\"p\"]),\n            max_precip=row[\"precip\"],\n            max_precip_years=row[\"mp_years\"],\n        )\n        data[\"features\"].append(\n            {\n                \"type\": \"Feature\",\n                \"id\": i,\n                \"properties\": props,\n                \"geometry\": {\n                    \"type\": \"Point\",\n                    \"coordinates\": [\n                        nt.sts[row[\"station\"]][\"lon\"],\n                        nt.sts[row[\"station\"]][\"lat\"],\n                    ],\n                },\n            }\n        )\n\n    return json.dumps(data)\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Get the memcache key\"\"\"\n    return (\n        f\"/geojson/climodat_dayclimo/{environ['network']}/{environ['month']}/\"\n        f\"{environ['day']}/{environ['syear']}/{environ['eyear']}/v2\"\n    )\n\n\n@iemapp(\n    help=__doc__, memcacheexpire=7200, memcachekey=get_mckey, schema=Schema\n)\ndef application(environ, start_response):\n    \"\"\"Main()\"\"\"\n    headers = [(\"Content-type\", \"application/json\")]\n\n    network = environ[\"network\"]\n    month = environ[\"month\"]\n    day = environ[\"day\"]\n    syear = environ[\"syear\"]\n    eyear = environ[\"eyear\"]\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        res = run(conn, network, month, day, syear, eyear)\n\n    start_response(\"200 OK\", headers)\n    return res.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/geojson/convective_sigmet.py",
    "content": "\"\"\".. title:: Convective SIGMET GeoJSON\n\nReturn to `API Services </api/#json>`_\n\nThis service provides a GeoJSON representation of current Convective SIGMETs.\n\nChangelog\n---------\n\n- 2026-02-26: Top level metadata `generation_time` was renamed to\n  `generated_at` for better consistency across IEM services.\n- 2025-05-13: Added `sts` and `ets` parameters to filter SIGMETs by time,\n  must be less than 32 days in duration. Specifies the period of issuance.\n- 2025-05-13: Added `at` parameter to provide SIGMETs at a specific time.\n- 2024-08-14: Documentation Update\n\nExample Requests\n----------------\n\nGet the current Convective SIGMETs\n\nhttps://mesonet.agron.iastate.edu/geojson/convective_sigmet.geojson\n\nGet the SIGMETs valid at 6 UTC on 10 Aug 2024\n\nhttps://mesonet.agron.iastate.edu/geojson/convective_sigmet.geojson?\\\nat=2024-08-10T06:00:00Z\n\nGet the SIGMETs valid between 6 UTC and 12 UTC on 10 Aug 2024\n\nhttps://mesonet.agron.iastate.edu/geojson/convective_sigmet.geojson?\\\nsts=2024-08-10T06:00:00Z&ets=2024-08-10T12:00:00Z\n\n\"\"\"\n\nimport json\nfrom datetime import timedelta\nfrom typing import Annotated\n\nfrom pydantic import AwareDatetime, Field, model_validator\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    at: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=\"SIGMETs valid at given time, in ISO8601 format\",\n        ),\n    ] = None\n    ets: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=\"SIGMETs valid before time, in ISO8601 format\",\n        ),\n    ] = None\n    sts: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=\"SIGMETs valid after time, in ISO8601 format\",\n        ),\n    ] = None\n\n    @model_validator(mode=\"after\")\n    def validate_time(self):\n        \"\"\"Ensure we have things that make sense.\"\"\"\n        # Ensure that sts and ets are both set or neither\n        if self.sts and not self.ets:\n            raise ValueError(\"If you set sts, you must also set ets\")\n        if self.ets and not self.sts:\n            raise ValueError(\"If you set ets, you must also set sts\")\n        if (\n            self.sts\n            and self.ets\n            and ((self.ets - self.sts) > timedelta(days=32))\n        ):\n            raise ValueError(\"Time filter needs to be less than 32 days\")\n        return self\n\n\n@with_sqlalchemy_conn(\"postgis\")\ndef run(environ: dict, conn: Connection = None) -> str:\n    \"\"\"Actually do the hard work of getting the current SBW in geojson\"\"\"\n    # Database index only on issue, so we make a safe assumption\n    timefilter = (\n        \"issue > :valid - '4 days'::interval and issue <= :valid \"\n        \"and expire > :valid\"\n    )\n    if environ[\"sts\"]:\n        timefilter = \"issue >= :sts and issue < :ets\"\n    environ[\"valid\"] = environ[\"at\"] or utc()\n\n    res = conn.execute(\n        sql_helper(\n            \"\"\"\n        SELECT *, ST_asGeoJson(geom) as geojson,\n        issue at time zone 'UTC' as utc_issue,\n        expire at time zone 'UTC' as utc_expire,\n        label, product_id, narrative\n        FROM alldata_sigmets WHERE {timefilter} and sigmet_type = 'C'\n        \"\"\",\n            timefilter=timefilter,\n        ),\n        environ,\n    )\n\n    data = json_response_dict(\n        {\n            \"type\": \"FeatureCollection\",\n            \"features\": [],\n        }\n    )\n    for row in res.mappings():\n        data[\"features\"].append(\n            dict(\n                type=\"Feature\",\n                properties={\n                    \"issue\": row[\"utc_issue\"].strftime(ISO8601),\n                    \"expire\": row[\"utc_expire\"].strftime(ISO8601),\n                    \"label\": row[\"label\"],\n                    \"product_id\": row[\"product_id\"],\n                    \"narrative\": row[\"narrative\"],\n                },\n                geometry=json.loads(row[\"geojson\"]),\n            )\n        )\n    data[\"count\"] = len(data[\"features\"])\n    return json.dumps(data)\n\n\n@iemapp(\n    content_type=\"application/vnd.geo+json\",\n    help=__doc__,\n    schema=Schema,\n)\ndef application(environ, start_response):\n    \"\"\"Do Something\"\"\"\n    # Go Main Go\n    headers = [(\"Content-type\", \"application/vnd.geo+json\")]\n\n    res = run(environ)\n    start_response(\"200 OK\", headers)\n    return res.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/geojson/coopobs.py",
    "content": "\"\"\".. title:: GeoJSON of NWS COOP Reports for a given date\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /geojson/coopobs.py\n=====================================\n\nThis service emits a given date's COOP observations.\n\nChangelog\n---------\n\n- 2026-02-24: For IEM consistency, the `generation_time` root attribute was\n  renamed `generated_at`.\n- 2026-01-07: Initial Implementation\n\nExample Requests\n----------------\n\nReturn COOP reports valid 22 Oct 2024\n\nhttps://mesonet.agron.iastate.edu/geojson/coopobs.py?valid=2024-10-22\n\n\"\"\"\n\nimport json\nfrom datetime import date, timezone\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    valid: Annotated[\n        date,\n        Field(\n            description=\"Date to generate data for\",\n            ge=date(2000, 1, 1),\n            le=date(date.today().year, 12, 31),\n        ),\n    ] = date.today()\n\n\ndef p(val, precision=2):\n    \"\"\"see if we can round values better?\"\"\"\n    if val is None:\n        return None\n    if 0 < val < 0.001:\n        return \"T\"\n    return round(val, precision)\n\n\n@with_sqlalchemy_conn(\"iem\")\ndef run(dt: date, conn: Connection | None = None):\n    \"\"\"Actually do the hard work of getting the current SPS in geojson\"\"\"\n\n    res = conn.execute(\n        sql_helper(\n            \"\"\"\n        select id, ST_x(geom), ST_y(geom), coop_valid, pday, snow, snowd,\n        extract(hour from coop_valid at time zone t.tzname)::int as hour,\n        max_tmpf as high,\n        min_tmpf as low, coop_tmpf, name, network, coop_valid, report\n        from {table} s JOIN stations t ON (t.iemid = s.iemid)\n        WHERE s.day = :dt and t.network ~* 'COOP' and coop_valid is not null\n    \"\"\",\n            table=f\"summary_{dt:%Y}\",\n        ),\n        {\"dt\": dt},\n    )\n\n    data = json_response_dict(\n        {\n            \"type\": \"FeatureCollection\",\n            \"features\": [],\n        }\n    )\n    for row in res.mappings():\n        data[\"features\"].append(\n            dict(\n                type=\"Feature\",\n                id=row[\"id\"],\n                properties=dict(\n                    station=row[\"id\"],\n                    utc_valid=row[\"coop_valid\"]\n                    .astimezone(timezone.utc)\n                    .strftime(ISO8601),\n                    precip=p(row[\"pday\"]),\n                    snow=p(row[\"snow\"], 1),\n                    snowd=p(row[\"snowd\"], 1),\n                    name=row[\"name\"],\n                    hour=row[\"hour\"],\n                    high=row[\"high\"],\n                    low=row[\"low\"],\n                    coop_tmpf=row[\"coop_tmpf\"],\n                    network=row[\"network\"],\n                    report=row[\"report\"],\n                ),\n                geometry=dict(\n                    type=\"Point\", coordinates=[row[\"st_x\"], row[\"st_y\"]]\n                ),\n            )\n        )\n    data[\"count\"] = len(data[\"features\"])\n    return json.dumps(data)\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=lambda x: f\"/geojson/coopobs/{x['valid']}\",\n    memcacheexpire=300,\n    content_type=\"application/vnd.geo+json\",\n)\ndef application(environ, start_response):\n    \"\"\"Do Workflow\"\"\"\n    dt: date = environ[\"valid\"]\n\n    res = run(dt)\n    headers = [(\"Content-type\", \"application/vnd.geo+json\")]\n    start_response(\"200 OK\", headers)\n    return res\n"
  },
  {
    "path": "pylib/iemweb/geojson/lsr.py",
    "content": "\"\"\".. title:: Local Storm Reports GeoJSON and More\n\nReturn to `API Services </api/#json>`_\n\nThis service does a number of different things with Local Storm Reports.\n\nChangelog\n---------\n\n- 2025-05-21: Added `product_id` to output attributes.\n- 2024-12-22: Added `hours` parameter to allow for a set time window prior\n  to the `ets` parameter, which defaults to now.\n- 2024-10-24: Added crude spatial bounds based parameters of ``east``,\n  ``west``, ``north``, and ``south``.\n- 2024-09-23: Added `qualifier` to output attributes, this represents the\n  Measured, Estimated, or Unknonw qualifier for the report.\n\nExample Requests\n----------------\n\nProvide all Local Storm Reports valid within the past 72 hours for Illinois.\n\nhttps://mesonet.agron.iastate.edu/geojson/lsr.geojson?states=IL&hours=72\n\nProvide all Local Storm Reports for Wisconsin on 13 July 2024. Note that a\nUTC date period is specified that equates to the US Central date.\n\nhttps://mesonet.agron.iastate.edu/geojson/lsr.geojson?states=WI&\\\nsts=2024-07-13T05:00Z&ets=2024-07-14T05:00Z\n\nProvide the LSRs associated with Des Moines Tornado Warning 47 and include\nany coincident warnings with each LSR report.\n\nhttps://mesonet.agron.iastate.edu/geojson/lsr.geojson?phenomena=TO&\\\nsignificance=W&eventid=47&year=2024&wfo=DMX&inc_ap=1\n\nProvide LSRs from NWS Des Moines and Davenport for 21 May 2024 UTC\n\nhttps://mesonet.agron.iastate.edu/geojson/lsr.geojson?wfos=DMX,DVN&\\\nsts=2024-05-21T00:00Z&ets=2024-05-22T00:00Z\n\nProvide all 2024 LSRs for a bounding box approximately covering Iowa.\n\nhttps://mesonet.agron.iastate.edu/geojson/lsr.geojson?\\\nwest=-96.5&east=-90.5&north=43.5&south=40.5&\\\nsts=2024-01-01T00:00Z&ets=2024-12-31T23:59Z\n\n\"\"\"\n\nfrom datetime import datetime, timedelta, timezone\nfrom typing import Annotated\n\nimport geopandas as gpd\nfrom pydantic import Field, field_validator, model_validator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.nws.vtec import get_ps_string\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nfrom iemweb.fields import (\n    CALLBACK_FIELD,\n    LATITUDE_FIELD_OPTIONAL,\n    LONGITUDE_FIELD_OPTIONAL,\n    VTEC_PH_FIELD_OPTIONAL,\n    VTEC_SIG_FIELD,\n    VTEC_YEAR_FIELD,\n)\nfrom iemweb.mlib import rectify_wfo, unrectify_wfo\nfrom iemweb.util import get_ct\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    inc_ap: Annotated[\n        bool,\n        Field(\n            description=\"Include any associated warnings in the output.\",\n        ),\n    ] = False\n    eventid: Annotated[\n        int,\n        Field(\n            description=\"If provided, use the given eventid to find LSRs for.\",\n        ),\n    ] = 103\n    phenomena: VTEC_PH_FIELD_OPTIONAL = None\n    significance: VTEC_SIG_FIELD = \"W\"\n    states: Annotated[\n        ListOrCSVType | None,\n        Field(\n            description=\"If provided, use the given states to find LSRs for.\",\n        ),\n    ] = None\n    ets: Annotated[\n        datetime | None,\n        Field(\n            description=\"End timestamp.\",\n        ),\n    ] = None\n    sts: Annotated[\n        datetime | None,\n        Field(\n            description=\"Start Timestamp.\",\n        ),\n    ] = None\n    hours: Annotated[\n        int | None,\n        Field(\n            description=(\n                \"If provided, number of hours prior to `ets` \"\n                \"(default now) to provide LSRs for.\"\n            ),\n        ),\n    ] = None\n    wfo: Annotated[\n        str | None,\n        Field(\n            description=\"If provided, use the given WFO to find LSRs for.\",\n            max_length=4,\n        ),\n    ] = None\n    wfos: Annotated[\n        ListOrCSVType | None,\n        Field(\n            description=\"If provided, use the given WFOs to find LSRs for.\",\n        ),\n    ] = None\n    year: VTEC_YEAR_FIELD = 2006\n    east: LONGITUDE_FIELD_OPTIONAL = None\n    west: LONGITUDE_FIELD_OPTIONAL = None\n    north: LATITUDE_FIELD_OPTIONAL = None\n    south: LATITUDE_FIELD_OPTIONAL = None\n    fmt: Annotated[\n        str,\n        Field(\n            description=\"Output format (fixed to geojson).\",\n            pattern=r\"^geojson$\",\n        ),\n    ] = \"geojson\"\n\n    @model_validator(mode=\"after\")\n    def validate_spatial_bounds(self):\n        \"\"\"Ensure we have a valid spatial bounds.\"\"\"\n        # Ensure that if we have one field set, we have them all\n        vals = [self.east, self.west, self.north, self.south]\n        if any(x is not None for x in vals):\n            if not all(x is not None for x in vals):\n                raise ValueError(\"Incomplete spatial bounds provided\")\n            if self.east <= self.west:\n                raise ValueError(\"East is less than West\")\n            if self.north <= self.south:\n                raise ValueError(\"North is less than South\")\n        return self\n\n    @field_validator(\"ets\", \"sts\", mode=\"before\")\n    @classmethod\n    def parse_valid(cls, value, _info):\n        \"\"\"Ensure we have a valid time.\"\"\"\n        fmt = \"%Y%m%d%H%M\"\n        if value.find(\"T\") > 0 and len(value) >= 16:\n            fmt = \"%Y-%m-%dT%H:%M\"\n            value = value[:16]\n        return datetime.strptime(value, fmt).replace(tzinfo=timezone.utc)\n\n\ndef do_vtec(environ: dict) -> gpd.GeoDataFrame:\n    \"\"\"Actually do the hard work of getting the current SBW in geojson\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        lsrdf = gpd.read_postgis(\n            sql_helper(\n                \"\"\"\n            SELECT l.wfo, l.type,\n            l.magnitude as magf, l,county, l.typetext,\n            l.state, l.remark, l.city, l.source, l.unit, l.geom,\n            to_char(valid at time zone 'UTC', 'YYYY-MM-DDThh24:MI:SSZ')\n                as valid,\n            ST_x(l.geom) as lon, ST_y(l.geom) as lat, qualifier\n            from sbw w, lsrs l\n            WHERE w.vtec_year = :year and w.wfo = :wfo and\n            w.phenomena = :phenomena and\n            w.eventid = :eventid and w.significance = :significance\n            and w.geom && l.geom and l.valid BETWEEN w.issue and w.expire\n            and w.status = 'NEW'\n                \"\"\"\n            ),\n            conn,\n            params={\n                \"year\": environ[\"year\"],\n                \"wfo\": environ[\"wfo\"],\n                \"phenomena\": environ[\"phenomena\"],\n                \"eventid\": environ[\"eventid\"],\n                \"significance\": environ[\"significance\"],\n            },\n            geom_col=\"geom\",\n        )  # type: ignore\n    return lsrdf\n\n\ndef do_states(environ: dict) -> gpd.GeoDataFrame:\n    \"\"\"Actually do the hard work of getting the current SBW in geojson\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        lsrdf = gpd.read_postgis(\n            sql_helper(\n                \"\"\"\n            SELECT distinct l.wfo, l.type,\n            l.magnitude as magf, l,county, l.typetext,\n            l.state, l.remark, l.city, l.source, l.unit, l.geom,\n            to_char(valid at time zone 'UTC', 'YYYY-MM-DDThh24:MI:SSZ')\n                as valid,\n            ST_x(l.geom) as lon, ST_y(l.geom) as lat, qualifier,\n            coalesce(l.product_id_summary, l.product_id) as product_id\n            FROM lsrs l, states s WHERE\n            valid BETWEEN :sts and :ets and state_abbr = ANY(:states)\n            and ST_Intersects(l.geom, s.the_geom)\n            LIMIT 10000\n                \"\"\"\n            ),\n            conn,\n            params={\n                \"states\": environ[\"states\"],\n                \"ets\": environ[\"ets\"],\n                \"sts\": environ[\"sts\"],\n            },\n            geom_col=\"geom\",\n        )  # type: ignore\n    return lsrdf\n\n\ndef do_default(environ: dict) -> gpd.GeoDataFrame:\n    \"\"\"Actually do the hard work of getting the current SBW in geojson\"\"\"\n    wfo_limiter = \"\"\n    if environ[\"wfos\"]:\n        wfo_limiter = \" and wfo = ANY(:wfos) \"\n    if environ[\"west\"] is not None:\n        wfo_limiter = (\n            \" and ST_Contains(ST_MakeEnvelope(:west, :south, :east, :north, \"\n            \"4326), geom) \"\n        )\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        lsrdf = gpd.read_postgis(\n            sql_helper(\n                \"\"\"\n            SELECT distinct wfo, type, magnitude as magf,\n            county, typetext, state, remark, city, source, unit,\n            to_char(valid at time zone 'UTC', 'YYYY-MM-DDThh24:MI:SSZ')\n                as valid,\n            ST_x(geom) as lon, ST_y(geom) as lat, qualifier, geom,\n            coalesce(product_id_summary, product_id) as product_id\n            FROM lsrs WHERE\n            valid BETWEEN :sts and :ets {wfo_limiter}\n            LIMIT 10000\n                \"\"\",\n                wfo_limiter=wfo_limiter,\n            ),\n            conn,\n            params=environ,\n            geom_col=\"geom\",\n        )  # type: ignore\n    return lsrdf\n\n\ndef add_warnings(lsrdf: gpd.GeoDataFrame) -> None:\n    \"\"\"Add any associated warnings to the LSRs.\"\"\"\n    lsrdf[\"prodlinks\"] = \"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        for idx, row in lsrdf.iterrows():\n            res = conn.execute(\n                sql_helper(\"\"\"\n                SELECT distinct phenomena, significance, eventid, vtec_year\n                from sbw\n                WHERE vtec_year = :year and wfo = :wfo and issue <= :valid\n                and issue > :valid  - '7 days'::interval and expire > :valid\n                and ST_POINT(:lon, :lat, 4326) && geom\n                and ST_contains(geom, ST_POINT(:lon, :lat, 4326))\n                \"\"\"),\n                {\n                    \"year\": row[\"valid\"][:4],\n                    \"wfo\": row[\"wfo\"],\n                    \"valid\": row[\"valid\"],\n                    \"lon\": row[\"lon\"],\n                    \"lat\": row[\"lat\"],\n                },\n            )\n            products = \"\"\n            for row2 in res.mappings():\n                url = (\n                    f\"/vtec/?year={row2['vtec_year']}\"\n                    f\"&wfo={rectify_wfo(row['wfo'])}\"\n                    f\"&phenomena={row2['phenomena']}\"\n                    f\"&significance={row2['significance']}\"\n                    f\"&eventid={row2['eventid']:04.0f}\"\n                )\n                products += (\n                    f'<a href=\"{url}\">'\n                    f\"{get_ps_string(row2['phenomena'], row2['significance'])}\"\n                    f\" {row2['eventid']}</a><br />\"\n                )\n            if products == \"\":\n                products = \"No Warnings Found\"\n            lsrdf.at[idx, \"prodlinks\"] = products\n\n\ndef get_mckey(environ: dict) -> str | None:\n    \"\"\"Figure out the key for this request.\"\"\"\n    if environ[\"hours\"] is None or environ[\"ets\"] is not None:\n        return None\n    return (\n        f\"geojson_lsr_{environ['hours']}_{environ['states']}_{environ['wfo']}_\"\n        f\"{environ['inc_ap']}\"\n    ).replace(\" \", \"_\")\n\n\n@iemapp(\n    content_type=get_ct,\n    help=__doc__,\n    schema=Schema,\n    parse_times=False,\n    memcacheexpire=60,\n    memcachekey=get_mckey,\n)\ndef application(environ, start_response):\n    \"\"\"Do Something\"\"\"\n    # Quirk unhandled properly yet\n    if environ[\"wfos\"]:\n        environ[\"wfos\"] = list(\n            filter(lambda x: 2 < len(x) < 5, environ[\"wfos\"])\n        )\n        environ[\"wfos\"] = [unrectify_wfo(x) for x in environ[\"wfos\"]]\n    if environ[\"states\"]:\n        environ[\"states\"] = list(\n            filter(lambda x: len(x) == 2, environ[\"states\"])\n        )\n    if environ[\"hours\"] is not None:\n        if environ[\"ets\"] is None:\n            environ[\"ets\"] = utc()\n        environ[\"sts\"] = environ[\"ets\"] - timedelta(hours=environ[\"hours\"])\n    # Go Main Go\n    headers = [(\"Content-type\", get_ct(environ))]\n    if environ[\"phenomena\"] is not None:\n        lsrdf = do_vtec(environ)\n    elif environ[\"states\"]:\n        lsrdf = do_states(environ)\n    else:\n        lsrdf = do_default(environ)\n    if environ[\"inc_ap\"]:\n        add_warnings(lsrdf)\n    # legacy stuff\n    lsrdf[\"st\"] = lsrdf[\"state\"]\n    lsrdf = lsrdf.rename(\n        columns={\n            \"iso_valid\": \"valid\",\n        }\n    )\n    # Keep magnitude as a string\n    lsrdf[\"magnitude\"] = \"\"\n    lsrdf.loc[lsrdf[\"magf\"].isna(), \"magnitude\"] = \"\"\n    lsrdf.loc[lsrdf[\"magf\"].notna(), \"magnitude\"] = lsrdf[\"magf\"].astype(str)\n    # Trim any strings ending in .0\n    lsrdf[\"magnitude\"] = lsrdf[\"magnitude\"].str.replace(\n        r\"\\.0$\", \"\", regex=True\n    )\n    payload = lsrdf.to_json()\n    start_response(\"200 OK\", headers)\n    return payload.encode(\"utf-8\")\n"
  },
  {
    "path": "pylib/iemweb/geojson/network.py",
    "content": "\"\"\".. title:: GeoJSON of stations within a network\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /geojson/network.py\n-------------------------------------\n\nThis service provides a GeoJSON representation of stations within a given\nnetwork.\n\nChangelog\n---------\n\n- 2026-02-24: For IEM consistency, the `generation_time` root attribute was\n  renamed `generated_at`.\n- 2026-01-26: Added `has_attribute` parameter to allow a filtered result to\n  those stations with that attribute set.\n- 2024-11-25: Added `network` overload value of `HAS_HML` for sites with HML\n  data.\n- 2024-08-19: Initial documentation update\n\nExample Usage\n-------------\n\nProvide Iowa DCP sites with hourly precipitation available.\n\nhttps://mesonet.agron.iastate.edu/geojson/network.py?\\\nnetwork=IA_DCP&has_attribute=HAS_PHOUR\n\nProvide all sites with 1 minute ASOS data:\n\nhttps://mesonet.agron.iastate.edu/geojson/network.py?network=ASOS1MIN\n\nProvide all sites with TAF data:\n\nhttps://mesonet.agron.iastate.edu/geojson/network.py?network=TAF\n\nProvide sites that are online within ASOS class networks\n\nhttps://mesonet.agron.iastate.edu/geojson/network.py?network=AZOS&only_online=1\n\n\"\"\"\n\nimport json\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD, NETWORK_FIELD\nfrom iemweb.util import json_response_dict\n\nXREF = {\n    \"HAS_HML\": \"HAS_HML\",\n    \"ASOS1MIN\": \"HAS1MIN\",\n    \"TAF\": \"HASTAF\",\n}\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    has_attribute: Annotated[\n        str, Field(description=\"Station Attribute to filter on\")\n    ] = None\n    network: NETWORK_FIELD = \"IA_ASOS\"\n    only_online: Annotated[\n        bool, Field(description=\"Only include online stations\")\n    ] = False\n\n\ndef run(conn, network, only_online: bool, has_attribute: str | None):\n    \"\"\"Generate a GeoJSON dump of the provided network\"\"\"\n    params = {\n        \"network\": network,\n    }\n\n    # One off special\n    if network in XREF:\n        subselect = \"a.attr = :network\"\n        params[\"network\"] = XREF[network]\n    elif network == \"FPS\":\n        subselect = \"\"\"(network ~* 'ASOS' or (\n            network ~* 'CLIMATE'and archive_begin < '1990-01-01') or\n            network = 'ISUSM')\n        and country = 'US' and online\"\"\"\n    elif network == \"AZOS\":\n        subselect = \"network ~* 'ASOS' and online\"\n    else:\n        subselect = \"network = :network \"\n        subselect += \"and online\" if only_online else \"\"\n        if has_attribute:\n            subselect += \" and a.attr = :has_attribute\"\n            params[\"has_attribute\"] = has_attribute\n    cursor = conn.execute(\n        sql_helper(\n            \"\"\"\n    WITH attrs as (\n        SELECT t.iemid, string_agg(a.attr, '____') as attrs,\n        string_agg(a.value, '____') as attr_values\n        from stations t LEFT JOIN station_attributes a\n        on (t.iemid = a.iemid) WHERE {subselect}\n        GROUP by t.iemid)\n    SELECT t.*, ST_AsGeoJSON(t.geom, 4) as geojson,\n    coalesce(a.attrs, '') as attrs,\n    coalesce(a.attr_values, '') as attr_values from stations t JOIN attrs a on\n    (t.iemid = a.iemid) ORDER by t.id ASC\n            \"\"\",\n            subselect=subselect,\n        ),\n        params,\n    )\n\n    res = json_response_dict(\n        {\n            \"type\": \"FeatureCollection\",\n            \"features\": [],\n        }\n    )\n\n    for row in cursor.mappings():\n        ab = row[\"archive_begin\"]\n        ae = row[\"archive_end\"]\n        time_domain = (\n            f\"({'????' if ab is None else ab.year}-\"\n            f\"{'Now' if ae is None else ae.year})\"\n        )\n        res[\"features\"].append(\n            dict(\n                type=\"Feature\",\n                id=row[\"id\"],\n                properties=dict(\n                    elevation=row[\"elevation\"],\n                    sname=row[\"name\"],\n                    time_domain=time_domain,\n                    archive_begin=None if ab is None else f\"{ab:%Y-%m-%d}\",\n                    archive_end=None if ae is None else f\"{ae:%Y-%m-%d}\",\n                    state=row[\"state\"],\n                    country=row[\"country\"],\n                    climate_site=row[\"climate_site\"],\n                    wfo=row[\"wfo\"],\n                    tzname=row[\"tzname\"],\n                    ncdc81=row[\"ncdc81\"],\n                    ncei91=row[\"ncei91\"],\n                    ugc_county=row[\"ugc_county\"],\n                    ugc_zone=row[\"ugc_zone\"],\n                    county=row[\"county\"],\n                    sid=row[\"id\"],\n                    network=row[\"network\"],\n                    online=row[\"online\"],\n                    synop=row[\"synop\"],\n                    attributes=dict(\n                        zip(\n                            row[\"attrs\"].split(\"____\"),\n                            row[\"attr_values\"].split(\"____\"),\n                            strict=False,\n                        )\n                    ),\n                ),\n                geometry=json.loads(row[\"geojson\"]),\n            )\n        )\n    res[\"count\"] = len(res[\"features\"])\n    return json.dumps(res)\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Get the memcache key\"\"\"\n    return (\n        \"/geojson/network/\"\n        f\"{environ['network']}.geojson|{environ['only_online']}|\"\n        f\"{environ['has_attribute']}/v2\"\n    )\n\n\n@iemapp(\n    memcachekey=get_mckey,\n    memcacheexpire=3600,  # without cache invalidation, an hour is about right\n    content_type=\"application/vnd.geo+json\",\n    help=__doc__,\n    schema=Schema,\n)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Main Workflow\"\"\"\n    headers = [(\"Content-type\", \"application/vnd.geo+json\")]\n    query: Schema = environ[\"_cgimodel_schema\"]\n\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        res = run(conn, query.network, query.only_online, query.has_attribute)\n    start_response(\"200 OK\", headers)\n    return res\n"
  },
  {
    "path": "pylib/iemweb/geojson/networks.py",
    "content": "\"\"\".. title:: IEM Networks GeoJSON\n\nReturn to `API Services </api/#json>`_\n\nThis service provides a GeoJSON representation of the IEM Networks.\n\nChangelog\n---------\n\n- 2026-02-24: For IEM consistency, the `generation_time` root attribute was\n  renamed `generated_at`.\n- 2024-08-20: Initial documentation update\n\nExample Usage\n~~~~~~~~~~~~~\n\nRequest the GeoJSON representation of the IEM Networks:\n\nhttps://mesonet.agron.iastate.edu/geojson/networks.py\n\n\"\"\"\n\nimport json\n\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n\n\n@with_sqlalchemy_conn(\"mesosite\")\ndef run(conn: Connection = None):\n    \"\"\"Actually do the hard work of getting the current SBW in geojson\"\"\"\n    res = conn.execute(\n        sql_helper(\n            \"SELECT ST_asGeoJson(extent) as geojson, id, name \"\n            \"from networks WHERE extent is not null ORDER by id ASC\"\n        )\n    )\n\n    data = json_response_dict(\n        {\n            \"type\": \"FeatureCollection\",\n            \"features\": [],\n        }\n    )\n    for row in res.mappings():\n        data[\"features\"].append(\n            dict(\n                type=\"Feature\",\n                id=row[\"id\"],\n                properties=dict(name=row[\"name\"]),\n                geometry=json.loads(row[\"geojson\"]),\n            )\n        )\n    data[\"count\"] = len(data[\"features\"])\n    return json.dumps(data)\n\n\n@iemapp(\n    memcacheexpire=86400,\n    memcachekey=\"/geojson/network.geojson\",\n    content_type=\"application/vnd.geo+json\",\n    help=__doc__,\n    schema=Schema,\n)\ndef application(_environ, start_response):\n    \"\"\"Do Something\"\"\"\n    # Go Main Go\n    headers = [(\"Content-type\", \"application/vnd.geo+json\")]\n\n    res = run()\n    start_response(\"200 OK\", headers)\n    return res.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/geojson/nexrad_attr.py",
    "content": "\"\"\".. title:: Service for NEXRAD Attributes GeoJSON\n\nReturn to `API Services </api/#json>`_.\n\nDocumentation for /geojson/nexrad_attr.py\n-----------------------------------------\n\nThis service emits GeoJSON of NEXRAD attributes.  If no `valid` parameter is\nprovided, it provides the most recent storm attributes per NEXRAD that are\nvalid within the past 30 minutes.  If a `valid` parameter is provided, it will\nsearch for the nearest in time volume scan and provide attributes for that\ntime.\n\nChangelog\n---------\n\n- 2026-02-24: For IEM consistency, the root `generation_time` attribute was\n  renamed `generated_at`.\n- 2024-07-03: Initial documentation release.\n\nExample Usage\n-------------\n\nReturn the most recent NEXRAD attributes in GeoJSON format:\n\nhttps://mesonet.agron.iastate.edu/geojson/nexrad_attr.py\n\nReturn attributes around the time of 05:10UTC on 10 August 2024:\n\nhttps://mesonet.agron.iastate.edu/geojson/nexrad_attr.py?\\\nvalid=2024-08-10T05:10:00Z\n\nSame request, but return CSV\n\nhttps://mesonet.agron.iastate.edu/geojson/nexrad_attr.py?\\\nvalid=2024-08-10T05:10:00Z&fmt=csv\n\n\"\"\"\n\nimport json\nfrom datetime import datetime, timedelta\nfrom typing import Annotated\nfrom zoneinfo import ZoneInfo\n\nfrom pydantic import Field\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy import Connection\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import get_ct, json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    fmt: Annotated[\n        str,\n        Field(\n            description=\"The format of the output, geojson or csv\",\n            pattern=\"^(geojson|csv)$\",\n        ),\n    ] = \"geojson\"\n    valid: Annotated[\n        datetime | None,\n        Field(\n            description=\"The timestamp to request data for, in UTC.\",\n            ge=datetime(2000, 1, 1),\n        ),\n    ] = None\n\n\n@with_sqlalchemy_conn(\"radar\")\ndef run(valid, fmt, conn: Connection = None):\n    \"\"\"Actually do the hard work of getting the geojson\"\"\"\n\n    if valid is None:\n        res = conn.execute(\n            sql_helper(\"\"\"\n            SELECT ST_x(geom) as lon, ST_y(geom) as lat, *,\n            valid at time zone 'UTC' as utc_valid from\n            nexrad_attributes WHERE valid > now() - '30 minutes'::interval\n            \"\"\")\n        )\n    else:\n        valid = valid.replace(tzinfo=ZoneInfo(\"UTC\"))\n        tbl = f\"nexrad_attributes_{valid:%Y}\"\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n    with vcps as (\n        SELECT distinct nexrad, valid from {tbl}\n        where valid between :sts and :ets),\n    agg as (\n        select nexrad, valid,\n        row_number() OVER (PARTITION by nexrad\n            ORDER by (greatest(valid, :valid) - least(valid, :valid)) ASC)\n        as rank from vcps)\n    SELECT n.*, ST_x(geom) as lon, ST_y(geom) as lat,\n    n.valid at time zone 'UTC' as utc_valid\n    from {tbl} n, agg a WHERE\n    a.rank = 1 and a.nexrad = n.nexrad and a.valid = n.valid\n    ORDER by n.nexrad ASC\n    \"\"\",\n                tbl=tbl,\n            ),\n            {\n                \"sts\": valid - timedelta(minutes=10),\n                \"ets\": valid + timedelta(minutes=10),\n                \"valid\": valid,\n            },\n        )\n\n    if fmt == \"geojson\":\n        data = json_response_dict(\n            {\n                \"type\": \"FeatureCollection\",\n                \"features\": [],\n            }\n        )\n        for i, row in enumerate(res.mappings()):\n            data[\"features\"].append(\n                {\n                    \"type\": \"Feature\",\n                    \"id\": i,\n                    \"properties\": {\n                        \"nexrad\": row[\"nexrad\"],\n                        \"storm_id\": row[\"storm_id\"],\n                        \"azimuth\": row[\"azimuth\"],\n                        \"range\": row[\"range\"],\n                        \"tvs\": row[\"tvs\"],\n                        \"meso\": row[\"meso\"],\n                        \"posh\": row[\"posh\"],\n                        \"poh\": row[\"poh\"],\n                        \"max_size\": row[\"max_size\"],\n                        \"vil\": row[\"vil\"],\n                        \"max_dbz\": row[\"max_dbz\"],\n                        \"max_dbz_height\": row[\"max_dbz_height\"],\n                        \"top\": row[\"top\"],\n                        \"drct\": row[\"drct\"],\n                        \"sknt\": row[\"sknt\"],\n                        \"valid\": row[\"utc_valid\"].strftime(ISO8601),\n                    },\n                    \"geometry\": {\n                        \"type\": \"Point\",\n                        \"coordinates\": [row[\"lon\"], row[\"lat\"]],\n                    },\n                }\n            )\n        data[\"count\"] = len(data[\"features\"])\n        return json.dumps(data)\n    data = (\n        \"nexrad,storm_id,azimuth,range,tvs,meso,posh,poh,max_size,\"\n        \"vil,max_dbz,max_dbz_height,top,drct,sknt,valid\\n\"\n    )\n    for row in res.mappings():\n        data += \",\".join(\n            [\n                str(x)\n                for x in [\n                    row[\"nexrad\"],\n                    row[\"storm_id\"],\n                    row[\"azimuth\"],\n                    row[\"range\"],\n                    row[\"tvs\"],\n                    row[\"meso\"],\n                    row[\"posh\"],\n                    row[\"poh\"],\n                    row[\"max_size\"],\n                    row[\"vil\"],\n                    row[\"max_dbz\"],\n                    row[\"max_dbz_height\"],\n                    row[\"top\"],\n                    row[\"drct\"],\n                    row[\"sknt\"],\n                    row[\"utc_valid\"].strftime(ISO8601),\n                ]\n            ]\n        )\n        data += \"\\n\"\n    return data\n\n\ndef get_mckey(environ):\n    \"\"\"Figure out our memcache key.\"\"\"\n    valid = environ[\"valid\"]\n    if valid is None:\n        valid = utc()\n    return f\"/geojson/nexrad_attr.{environ['fmt']}|{valid:%Y%m%d%H%M%S}\"\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    content_type=get_ct,\n    memcachekey=get_mckey,\n    memcacheexpire=60,\n)\ndef application(environ, start_response):\n    \"\"\"Do Something\"\"\"\n    fmt = environ[\"fmt\"]\n    headers = [(\"Content-type\", get_ct(environ))]\n\n    res = run(environ[\"valid\"], fmt)\n    start_response(\"200 OK\", headers)\n    return res.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/geojson/recent_metar.py",
    "content": "\"\"\".. title:: Recent METAR GeoJSON\n\nReturn to `API Services </api/#json>`_\n\nService returns interesting METAR reports.\n\nChangelog\n---------\n\n- 2026-05-14: Added pwino option.\n- 2024-08-14: Documentation Update\n\nExample Requests\n----------------\n\nGet the most recent snow depth reports\n\nhttps://mesonet.agron.iastate.edu/geojson/recent_metar.py?q=snowdepth\n\nGet the recent ice accretion 1 hour reports\n\nhttps://mesonet.agron.iastate.edu/geojson/recent_metar.py?q=i1\n\nGet the recent ice accretion 3 hour reports\n\nhttps://mesonet.agron.iastate.edu/geojson/recent_metar.py?q=i3\n\nGet the recent ice accretion 6 hour reports\n\nhttps://mesonet.agron.iastate.edu/geojson/recent_metar.py?q=i6\n\nGet any recent funnel cloud / tornado reports\n\nhttps://mesonet.agron.iastate.edu/geojson/recent_metar.py?q=fc\n\nGet any recent 50 knot wind reports\n\nhttps://mesonet.agron.iastate.edu/geojson/recent_metar.py?q=50\n\nGet any recent reports with `PNO` in the METAR\n\nhttps://mesonet.agron.iastate.edu/geojson/recent_metar.py?q=pno\n\nReturn any recent METARs with the PWINO code included\n\nhttps://mesonet.agron.iastate.edu/geojson/recent_metar.py?q=pwino\n\"\"\"\n\nimport json\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import get_dbconnc\nfrom pyiem.reference import ISO8601, TRACE_VALUE\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import get_ct, json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    q: Annotated[\n        str,\n        Field(\n            description=(\n                \"The query to perform, one of snowdepth, \"\n                \"i1, i3, i6, fc, gr, pno, 50, 50A, pwino\"\n            ),\n            pattern=\"^(snowdepth|i1|i3|i6|fc|gr|pno|50|50A|pwino)$\",\n        ),\n    ] = \"snowdepth\"\n    fmt: Annotated[str, Field(description=\"Output format\")] = \"geojson\"\n\n\ndef trace(val):\n    \"\"\"Nice Print\"\"\"\n    if val == TRACE_VALUE:\n        return \"T\"\n    if isinstance(val, float):\n        return round(val, 2)\n    return val\n\n\ndef get_data(q):\n    \"\"\"Get the data for this query\"\"\"\n    pgconn, cursor = get_dbconnc(\"iem\")\n    data = json_response_dict({\"type\": \"FeatureCollection\", \"features\": []})\n\n    # Fetch the values\n    countrysql = \"\"\n    if q == \"snowdepth\":\n        datasql = \"substring(raw, ' 4/([0-9]{3})')::int\"\n        wheresql = \"raw ~* ' 4/'\"\n    elif q in [\"i1\", \"i3\", \"i6\"]:\n        i = int(q[1])\n        datasql = f\"ice_accretion_{i}hr\"\n        wheresql = f\"ice_accretion_{i}hr >= 0\"\n    elif q in [\"fc\", \"gr\"]:\n        datasql = \"''\"\n        wheresql = f\"'{q.upper()}' = ANY(wxcodes)\"\n    elif q == \"pno\":\n        datasql = \"''\"\n        wheresql = \"raw ~* ' PNO'\"\n    elif q in [\"50\", \"50A\"]:\n        datasql = \"greatest(sknt, gust)\"\n        wheresql = \"(sknt >= 50 or gust >= 50)\"\n        if q == \"50\":\n            countrysql = \"and country = 'US'\"\n    elif q == \"pwino\":\n        datasql = \"''\"\n        wheresql = \"raw ~* ' PWINO'\"\n    else:\n        return json.dumps(data, ensure_ascii=False)\n    cursor.execute(\n        f\"\"\"\n    select id, network, name, st_x(geom) as lon, st_y(geom) as lat,\n    valid at time zone 'UTC' as utc_valid, {datasql} as data, raw\n    from current_log c JOIN stations t on (c.iemid = t.iemid)\n    WHERE network ~* 'ASOS' {countrysql}\n    and {wheresql} ORDER by valid DESC\n    \"\"\"\n    )\n    for i, row in enumerate(cursor):\n        data[\"features\"].append(\n            {\n                \"type\": \"Feature\",\n                \"id\": i,\n                \"properties\": {\n                    \"station\": row[\"id\"],\n                    \"network\": row[\"network\"],\n                    \"name\": row[\"name\"],\n                    \"value\": trace(row[\"data\"]),\n                    \"metar\": row[\"raw\"],\n                    \"valid\": row[\"utc_valid\"].strftime(ISO8601),\n                },\n                \"geometry\": {\n                    \"type\": \"Point\",\n                    \"coordinates\": [row[\"lon\"], row[\"lat\"]],\n                },\n            }\n        )\n    pgconn.close()\n    return json.dumps(data)\n\n\n@iemapp(\n    content_type=get_ct,\n    memcachekey=lambda req: f\"/geojson/recent_metar?q={req['q']}\",\n    memcacheexpire=120,\n    help=__doc__,\n    schema=Schema,\n)\ndef application(environ, start_response):\n    \"\"\"see how we are called\"\"\"\n    headers = [(\"Content-type\", get_ct(environ))]\n    res = get_data(environ[\"q\"])\n    start_response(\"200 OK\", headers)\n    return res.encode(\"utf-8\")\n"
  },
  {
    "path": "pylib/iemweb/geojson/sbw.py",
    "content": "\"\"\".. title:: Service for Storm Based Warnings GeoJSON\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /geojson/sbw.geojson\n--------------------------------------\n\nThis service supports a number of legacy systems and implements a number of\ndifferent calling methods.  The `API <https://mesonet.agron.iastate.edu\n/api/1/docs#/vtec/service_vtec_sbw_interval__fmt__get>`_ service is recommended\nfor new applications.\n\nChangelog\n---------\n\n- 2026-04-10: Corrected bug with service not providing SBWs issued at the\n  requested timestamp when using the `ts` parameter.\n- 2026-02-24: For IEM consistency, the `generation_time` root attribute was\n  renamed `generated_at`.\n- 2025-05-29: Implemented a `states` parameter to limit results to a list of\n  given two-letter state identifiers.\n- 2024-12-31: Five additional metadata fields are added with lifetime max\n  values for windtag, hailtag, is_pds, is_emergency, and floodtag_damage. These\n  fields are prefixed with `max_`.\n- 2024-12-30: Parameters `sts` and `ets` can now be provided as ISO8601\n  formatted strings.  The legacy format of %Y%m%d%H%M is still supported, but\n  discouraged.\n- 2024-11-19: Trimmed caching time from 60s to 15s. Added `ps` attribute that\n  holds the VTEC Phenomena and Significance string.\n\nExamples\n--------\n\nProvide all SBW polygons active at a given timestamp:\n\nhttps://mesonet.agron.iastate.edu/geojson/sbw.geojson?ts=2024-05-26T20:00:00Z\n\nProvide all SBW polygons on 26 May 2024 CDT.\n\nhttps://mesonet.agron.iastate.edu/geojson/sbw.geojson\\\n?sts=2024-05-26T05:00:00Z&ets=2024-05-27T05:00:00Z\n\nProvide all SBW polygons on 26 May 2025 CDF for Iowa.\n\nhttps://mesonet.agron.iastate.edu/geojson/sbw.geojson\\\n?sts=2024-05-26T05:00:00Z&ets=2024-05-27T05:00:00Z&states=IA\n\n\"\"\"\n\nimport json\nfrom datetime import datetime, timedelta, timezone\nfrom typing import Annotated\n\nfrom pydantic import AwareDatetime, Field, field_validator, model_validator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.nws.vtec import get_ps_string\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD, STATE_LIST_FIELD_OPTIONAL\nfrom iemweb.mlib import rectify_wfo, unrectify_wfo\nfrom iemweb.util import get_ct, json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    ets: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=(\"UTC end timestamp parameter\"),\n            ge=utc(1986, 1, 1),\n        ),\n    ] = None\n    states: STATE_LIST_FIELD_OPTIONAL = None\n    sts: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=(\"UTC start timestamp parameter\"),\n            ge=utc(1986, 1, 1),\n        ),\n    ] = None\n    ts: AwareDatetime = Field(\n        default=None,\n        description=(\n            \"If sts and ets are not provided, this is the timestamp to \"\n            \"request data for.\"\n        ),\n        ge=utc(1986, 1, 1),\n    )\n    wfo: str = Field(\n        default=None,\n        description=\"Optional WFO identifier\",\n        max_length=3,\n        min_length=3,\n    )\n    wfos: ListOrCSVType = Field(\n        default=None,\n        description=\"Optional list of WFOs to limit the results to\",\n    )\n\n    @field_validator(\"sts\", \"ets\", mode=\"before\")\n    @classmethod\n    def legacy_timestamps(cls, value, _info):\n        \"\"\"Allow the junky old way to work.\"\"\"\n        if isinstance(value, list):\n            raise ValueError(\"Cannot be a list\")\n        fmt = \"%Y%m%d%H%M\"\n        if value.find(\"T\") > 0 and len(value) >= 16:\n            fmt = \"%Y-%m-%dT%H:%M\"\n            value = value[:16]\n        return datetime.strptime(value, fmt).replace(tzinfo=timezone.utc)\n\n    @model_validator(mode=\"after\")\n    def ensure_some_timestamp(self):\n        \"\"\"Ensure that we have some timestamp set.\"\"\"\n        if self.ts is None and self.sts is None and self.ets is None:\n            self.ts = utc()\n        if (self.sts is not None and self.ets is None) or (\n            self.sts is None and self.ets is not None\n        ):\n            raise ValueError(\"Both sts and ets must be provided\")\n        return self\n\n\ndef df(val: datetime | None):\n    \"\"\"Format a datetime object\"\"\"\n    return None if val is None else val.strftime(ISO8601)\n\n\ndef run(query: Schema):\n    \"\"\"Actually do the hard work of getting the current SBW in geojson\"\"\"\n    wfos = query.wfos\n    if wfos is not None and wfos[0] == \"\":\n        wfos = None\n    if wfos is None and query.wfo is not None:\n        wfos = [query.wfo]\n    if wfos:\n        wfos = [unrectify_wfo(wfo) for wfo in wfos]\n\n    params = {\n        \"wfos\": wfos,\n        \"ts\": query.ts,\n        \"sts\": query.sts,\n        \"ets\": query.ets,\n    }\n\n    res = json_response_dict(\n        {\n            \"type\": \"FeatureCollection\",\n            \"features\": [],\n        }\n    )\n\n    wfo_limiter = \"\"\n    if wfos:\n        wfo_limiter = \" and s.wfo = ANY(:wfos) \"\n    time_limiter = \" s.expire > :sts and s.issue < :ets \"\n    status_limiter = \" and s.status = 'NEW' \"\n    # Mode 2, ts is provided, so we get polygons valid at this time\n    if query.ts is not None:\n        time_limiter = (\n            \" s.polygon_begin <= :ts and s.polygon_end > :ts and \"\n            \" s.polygon_begin > :pastts \"\n        )\n        status_limiter = \"\"\n        params[\"pastts\"] = query.ts - timedelta(days=14)  # arb\n        params[\"sts\"] = query.ts\n        params[\"ets\"] = query.ts\n        res[\"valid_at\"] = query.ts.strftime(ISO8601)\n\n    ss1 = \"\"\n    ss2 = \"\"\n    if query.states is not None and query.states:\n        ss1 = \", states t \"\n        ss2 = (\n            \" and ST_Intersects(s.geom, t.the_geom) and \"\n            \" t.state_abbr = ANY(:states) \"\n        )\n        params[\"states\"] = query.states\n\n    # NOTE: we dropped checking for products valid in the future (FL.W)\n    # NOTE: we have an arb offset check for child table exclusion\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        rs = conn.execute(\n            sql_helper(\n                \"\"\"\n    with tagmaxes as (\n        select wfo, phenomena, vtec_year, eventid, significance,\n        max(windtag) as max_windtag,\n        max(hailtag) as max_hailtag,\n        bool_or(is_pds) as max_is_pds,\n        bool_or(is_emergency) as max_is_emergency,\n        bool_or(floodtag_damage = 'CATASTROPHIC')\n                as floodtag_damage_catastrophic,\n        bool_or(floodtag_damage = 'CONSIDERABLE')\n                as floodtag_damage_considerable\n        from sbw s {ss1} WHERE s.expire > :sts and s.issue <= :ets\n        {wfo_limiter} {ss2}\n        GROUP by wfo, phenomena, vtec_year, eventid, significance\n    )\n            SELECT ST_asGeoJson(geom) as geojson, s.phenomena, s.eventid,\n            s.wfo, s.significance,\n            s.polygon_end at time zone 'UTC' as utc_polygon_end,\n            s.polygon_begin at time zone 'UTC' as utc_polygon_begin,\n            s.status,\n            s.hvtec_nwsli, s.vtec_year, s.product_id,\n            s.issue at time zone 'UTC' as utc_issue,\n            s.expire at time zone 'UTC' as utc_expire, s.windtag, s.hailtag,\n            s.tornadotag, s.damagetag, s.waterspouttag, s.is_emergency,\n            s.is_pds, s.windthreat, s.hailthreat, s.product_signature,\n            s.floodtag_damage, s.squalltag,\n            t.max_windtag, t.max_hailtag, t.max_is_pds, t.max_is_emergency,\n            case when t.floodtag_damage_catastrophic then 'CATASTROPHIC'\n                    when t.floodtag_damage_considerable then 'CONSIDERABLE'\n                    else null end as max_floodtag_damage\n            from sbw s, tagmaxes t WHERE s.vtec_year = t.vtec_year and\n            s.wfo = t.wfo and s.phenomena = t.phenomena and\n            s.significance = t.significance and s.eventid = t.eventid and\n            {time_limiter} {status_limiter} {wfo_limiter}\n        \"\"\",\n                wfo_limiter=wfo_limiter,\n                time_limiter=time_limiter,\n                status_limiter=status_limiter,\n                ss1=ss1,\n                ss2=ss2,\n            ),\n            params,\n        )\n        for row in rs.mappings():\n            sid = (\n                f\"{row['wfo']}.{row['phenomena']}.{row['significance']}.\"\n                f\"{row['eventid']:04.0f}\"\n            )\n            ets = row[\"utc_polygon_end\"].strftime(ISO8601)\n            sts = row[\"utc_polygon_begin\"].strftime(ISO8601)\n            sid += \".\" + sts\n            href = (\n                \"https://mesonet.agron.iastate.edu/vtec/\"\n                f\"?year={row['vtec_year']}&wfo={rectify_wfo(row['wfo'])}&\"\n                f\"phenomena={row['phenomena']}\"\n                f\"&significance={row['significance']}&\"\n                f\"eventid={row['eventid']:04.0f}\"\n            )\n            label = get_ps_string(row[\"phenomena\"], row[\"significance\"])\n            link = f\"<a href='{href}'>{label} {row['eventid']}</a> &nbsp; \"\n            res[\"features\"].append(\n                dict(\n                    type=\"Feature\",\n                    id=sid,\n                    properties=dict(\n                        status=row[\"status\"],\n                        phenomena=row[\"phenomena\"],\n                        significance=row[\"significance\"],\n                        ps=label,\n                        wfo=row[\"wfo\"],\n                        eventid=row[\"eventid\"],\n                        polygon_begin=sts,\n                        polygon_end=ets,\n                        expire=df(row[\"utc_expire\"]),\n                        hvtec_nwsli=row[\"hvtec_nwsli\"],\n                        year=row[\"vtec_year\"],\n                        product_id=row[\"product_id\"],\n                        issue=df(row[\"utc_issue\"]),\n                        expire_utc=df(row[\"utc_expire\"]),\n                        href=href,\n                        link=link,\n                        windtag=row[\"windtag\"],\n                        hailtag=row[\"hailtag\"],\n                        tornadotag=row[\"tornadotag\"],\n                        damagetag=row[\"damagetag\"],\n                        waterspouttag=row[\"waterspouttag\"],\n                        is_emergency=row[\"is_emergency\"],\n                        is_pds=row[\"is_pds\"],\n                        windthreat=row[\"windthreat\"],\n                        hailthreat=row[\"hailthreat\"],\n                        product_signature=row[\"product_signature\"],\n                        floodtag_damage=row[\"floodtag_damage\"],\n                        squalltag=row[\"squalltag\"],\n                        max_windtag=row[\"max_windtag\"],\n                        max_hailtag=row[\"max_hailtag\"],\n                        max_is_pds=row[\"max_is_pds\"],\n                        max_is_emergency=row[\"max_is_emergency\"],\n                        max_floodtag_damage=row[\"max_floodtag_damage\"],\n                    ),\n                    geometry=json.loads(row[\"geojson\"]),\n                )\n            )\n    res[\"count\"] = len(res[\"features\"])\n    return json.dumps(res, ensure_ascii=False)\n\n\ndef get_mcexpire(environ: dict) -> int:\n    \"\"\"Compute the cache expiration time.\"\"\"\n    return 15 if environ[\"ts\"] is None else 600\n\n\ndef get_mckey(environ):\n    \"\"\"Compute the key.\"\"\"\n    wfos = environ[\"wfos\"]\n    if wfos is None and environ[\"wfo\"] is not None:\n        wfos = [environ[\"wfo\"]]\n    if wfos is None:\n        wfos = []\n    states = [] if environ[\"states\"] is None else environ[\"states\"]\n    if environ[\"sts\"] is not None:\n        ts = f\"{environ['sts']:%Y%m%d%H%M}_to_{environ['ets']:%Y%m%d%H%M}\"\n    else:\n        ts = f\"{environ['ts']:%Y%m%d%H%M}\"\n    return (\n        f\"/geojson/sbw.geojson|{ts}|{','.join(wfos)[:100]}|\"\n        f\"{','.join(states)[:100]}\"\n    )\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    content_type=get_ct,\n    memcachekey=get_mckey,\n    memcacheexpire=get_mcexpire,\n    parse_times=False,\n)\ndef application(environ, start_response):\n    \"\"\"Main Workflow\"\"\"\n    query: Schema = environ[\"_cgimodel_schema\"]\n    headers = [(\"Content-type\", get_ct(environ))]\n    res = run(query)\n    start_response(\"200 OK\", headers)\n    return res.encode(\"utf-8\")\n"
  },
  {
    "path": "pylib/iemweb/geojson/sbw_county_intersect.py",
    "content": "\"\"\".. title:: Storm Based Warning County Intersection\n\nReturn to `API Services </api/#json>`_. This service drives some of the\npresentation of the `VTEC Browser </vtec/>`_.\n\nThis service provides a GeoJSON for the intersection of the polygon border and\nany county/parish borders.  This is meant to describe the amount of the polygon\nborder that was influenced by the county border.\n\nChangelog\n---------\n\n- 2026-04-27: The VTEC eventid name was rectified to `etn` to match other\n  IEM services.\n- 2024-08-16: Initial documentation update\n\nExample Usage\n-------------\n\nShow the intersection of the polygon border for Des Moines Tornado Warning 49\nfrom 2024 with county borders.\n\nhttps://mesonet.agron.iastate.edu/geojson/sbw_county_intersect.py\\\n?wfo=KDMX&year=2024&phenomena=TO&significance=W&eventid=49\n\n\"\"\"\n\nfrom typing import Annotated\n\nimport geopandas as gpd\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import (\n    CALLBACK_FIELD,\n    VTEC_ETN_FIELD,\n    VTEC_PH_FIELD,\n    VTEC_SIG_FIELD,\n    VTEC_YEAR_FIELD,\n)\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    wfo: Annotated[\n        str, Field(description=\"3 or 4 character WFO Identifier\")\n    ] = \"MPX\"\n    year: VTEC_YEAR_FIELD = 2015\n    phenomena: VTEC_PH_FIELD = \"SV\"\n    significance: VTEC_SIG_FIELD = \"W\"\n    etn: VTEC_ETN_FIELD = 1\n\n\ndef run(wfo, year, phenomena, significance, etn: int):\n    \"\"\"Do great things\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        borderdf = gpd.read_postgis(\n            sql_helper(\"\"\"\n            WITH stormbased as (\n                SELECT geom from sbw where vtec_year = :year and wfo = :wfo\n                and eventid = :eventid and significance = :significance\n                and phenomena = :phenomena and status = 'NEW' limit 1),\n            countybased as (\n                SELECT ST_Union(u.geom) as geom from\n                warnings w JOIN ugcs u on (u.gid = w.gid)\n                WHERE w.vtec_year = :year and w.wfo = :wfo and\n                eventid = :eventid and significance = :significance\n                and phenomena = :phenomena),\n            foo as (\n                 SELECT ST_SetSRID(ST_intersection(\n          ST_buffer(ST_exteriorring(ST_geometryn(ST_multi(c.geom),1)),0.02),\n          ST_exteriorring(ST_geometryn(ST_multi(s.geom),1))\n            ), 4326) as geom from stormbased s, countybased c)\n\n            SELECT geom, ST_Length(ST_transform(geom,9311)) as sz from foo\n        \"\"\"),\n            conn,\n            params=dict(\n                year=year,\n                wfo=wfo,\n                phenomena=phenomena,\n                significance=significance,\n                eventid=etn,\n            ),\n            geom_col=\"geom\",\n        )  # type: ignore\n    return borderdf.to_json()\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Return the key.\"\"\"\n    return (\n        f\"/geojson/sbw_county_intersect/{environ['wfo']}/{environ['year']}/\"\n        f\"{environ['phenomena']}/{environ['significance']}/\"\n        f\"{environ['etn']}\"\n    )\n\n\n@iemapp(\n    schema=Schema,\n    help=__doc__,\n    content_type=\"application/vnd.geo+json\",\n    memcacheexpire=3600,\n    memcachekey=get_mckey,\n)\ndef application(environ, start_response):\n    \"\"\"Main()\"\"\"\n    headers = [(\"Content-type\", \"application/vnd.geo+json\")]\n\n    wfo = environ[\"wfo\"]\n    if len(wfo) == 4:\n        wfo = wfo[1:]\n\n    res = run(\n        wfo,\n        environ[\"year\"],\n        environ[\"phenomena\"],\n        environ[\"significance\"],\n        environ[\"etn\"],\n    )\n\n    start_response(\"200 OK\", headers)\n    return res.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/geojson/seven_am.py",
    "content": "\"\"\".. title:: Generate GeoJSON of 7 AM reports\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /geojson/7am.py\n=================================\n\nThis service returns some data valid around 7 AM for a given date. This\nis currently Iowa centric.\n\nChangelog\n---------\n\n- 2026-02-26: Top level metadata `generation_time` was renamed `generated_at`\n  for better consistency across IEM services.\n- 2024-08-14: Documentation Update\n\nExample Requests\n----------------\n\nGet reports for 7 AM on 1 July 2024\n\nhttps://mesonet.agron.iastate.edu/geojson/7am.py?dt=2024-07-01\n\nGet reports for 7 AM on 1 July 2024 for COOP stations\n\nhttps://mesonet.agron.iastate.edu/geojson/7am.py?dt=2024-07-01&group=coop\n\nGet the morning reports on that date for ASOS stations\n\nhttps://mesonet.agron.iastate.edu/geojson/7am.py?dt=2024-07-01&group=azos\n\nGet the reports on the same date, but for cocorahs this time\n\nhttps://mesonet.agron.iastate.edu/geojson/7am.py?dt=2024-07-01&group=cocorahs\n\n\"\"\"\n\nimport json\nfrom datetime import date, datetime, timedelta, timezone\nfrom typing import Annotated\nfrom zoneinfo import ZoneInfo\n\nfrom pydantic import Field\nfrom pyiem.database import get_dbconnc\nfrom pyiem.reference import ISO8601, TRACE_VALUE\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    group: Annotated[\n        str,\n        Field(\n            description=\"The group of stations to generate data for\",\n            pattern=r\"^(coop|azos|cocorahs)$\",\n        ),\n    ] = \"coop\"\n    dt: Annotated[\n        date,\n        Field(\n            default_factory=date.today,\n            description=\"Date to generate data for\",\n        ),\n    ]\n\n\ndef p(val, precision=2):\n    \"\"\"see if we can round values better?\"\"\"\n    if val is None:\n        return None\n    if 0 < val < 0.001:\n        return TRACE_VALUE\n    return round(val, precision)\n\n\ndef router(group, ts):\n    \"\"\"Figure out which report to generate\n\n    Args:\n      group (str): the switch string indicating group\n      ts (date): date we are interested in\n    \"\"\"\n    if group == \"coop\":\n        return run_coop(ts)\n    if group == \"azos\":\n        return run_azos(ts)\n    return run_cocorahs(ts)\n\n\ndef run_azos(ts: datetime):\n    \"\"\"Get the data please\"\"\"\n    pgconn, cursor = get_dbconnc(\"iem\")\n\n    # Now we have the tricky work of finding what 7 AM is\n    ts = ts.astimezone(ZoneInfo(\"America/Chicago\"))\n    ts1 = ts.replace(hour=7)\n    ts0 = ts1 - timedelta(hours=24)\n    cursor.execute(\n        \"\"\"\n        select t.id, t.name, t.network, sum(phour), st_x(geom), st_y(geom)\n        from hourly h JOIN stations t ON\n        (h.iemid = t.iemid) where t.network in ('IA_ASOS', 'SD_ASOS',\n        'NE_ASOS', 'KS_ASOS', 'MO_ASOS', 'IL_ASOS', 'WI_ASOS', 'MN_ASOS')\n        and valid >= %s and valid < %s GROUP by t.id, t.network, t.name, t.geom\n        \"\"\",\n        (ts0, ts1),\n    )\n\n    res = json_response_dict(\n        {\n            \"type\": \"FeatureCollection\",\n            \"features\": [],\n        }\n    )\n    tstamp = ts1.astimezone(timezone.utc).strftime(ISO8601)\n    for row in cursor:\n        res[\"features\"].append(\n            dict(\n                type=\"Feature\",\n                id=row[\"id\"],\n                properties=dict(\n                    hour=7,\n                    valid=tstamp,\n                    pday=p(row[\"sum\"]),\n                    snow=None,\n                    snowd=None,\n                    high=None,\n                    low=None,\n                    name=row[\"name\"],\n                    network=row[\"network\"],\n                    coop_tmpf=None,\n                ),\n                geometry=dict(\n                    type=\"Point\", coordinates=[row[\"st_x\"], row[\"st_y\"]]\n                ),\n            )\n        )\n    pgconn.close()\n    res[\"count\"] = len(res[\"features\"])\n    return json.dumps(res)\n\n\ndef run_coop(ts):\n    \"\"\"Actually do the hard work of getting the current SPS in geojson\"\"\"\n    pgconn, cursor = get_dbconnc(\"iem\")\n\n    cursor.execute(\n        \"\"\"\n        select id, ST_x(geom), ST_y(geom), coop_valid, pday, snow, snowd,\n        extract(hour from coop_valid)::int as hour, max_tmpf as high,\n        min_tmpf as low, coop_tmpf, name, network, coop_valid\n        from summary s JOIN stations t ON (t.iemid = s.iemid)\n        WHERE s.day = %s and t.network ~* 'COOP' and pday >= 0\n        and extract(hour from coop_valid) between 5 and 10\n    \"\"\",\n        (ts.date(),),\n    )\n\n    res = json_response_dict(\n        {\n            \"type\": \"FeatureCollection\",\n            \"features\": [],\n        }\n    )\n    for row in cursor:\n        res[\"features\"].append(\n            dict(\n                type=\"Feature\",\n                id=row[\"id\"],\n                properties=dict(\n                    valid=row[\"coop_valid\"]\n                    .astimezone(timezone.utc)\n                    .strftime(ISO8601),\n                    pday=p(row[\"pday\"]),\n                    snow=p(row[\"snow\"], 1),\n                    snowd=p(row[\"snowd\"], 1),\n                    name=row[\"name\"],\n                    hour=row[\"hour\"],\n                    high=row[\"high\"],\n                    low=row[\"low\"],\n                    coop_tmpf=row[\"coop_tmpf\"],\n                    network=row[\"network\"],\n                ),\n                geometry=dict(\n                    type=\"Point\", coordinates=[row[\"st_x\"], row[\"st_y\"]]\n                ),\n            )\n        )\n    pgconn.close()\n    res[\"count\"] = len(res[\"features\"])\n    return json.dumps(res)\n\n\ndef run_cocorahs(ts: datetime):\n    \"\"\"Actually do the hard work of getting the current SPS in geojson\"\"\"\n    pgconn, cursor = get_dbconnc(\"coop\")\n\n    cursor.execute(\n        \"\"\"\n        select id, ST_x(geom), ST_y(geom), obvalid, precip as pday,\n        snow, snowd,\n        extract(hour from obvalid)::int as hour, null as high,\n        null as low, null as coop_tmpf, name, network, obvalid\n        from alldata_cocorahs s JOIN stations t ON (t.iemid = s.iemid)\n        WHERE s.day = %s and t.network ~* '_COCORAHS' and precip >= 0\n        and extract(hour from obvalid) between 5 and 10\n    \"\"\",\n        (ts.date(),),\n    )\n\n    res = json_response_dict(\n        {\n            \"type\": \"FeatureCollection\",\n            \"features\": [],\n        }\n    )\n    for row in cursor:\n        res[\"features\"].append(\n            dict(\n                type=\"Feature\",\n                id=row[\"id\"],\n                properties=dict(\n                    valid=row[\"obvalid\"]\n                    .astimezone(timezone.utc)\n                    .strftime(ISO8601),\n                    pday=p(row[\"pday\"]),\n                    snow=p(row[\"snow\"], 1),\n                    snowd=p(row[\"snowd\"], 1),\n                    name=row[\"name\"],\n                    hour=row[\"hour\"],\n                    high=row[\"high\"],\n                    low=row[\"low\"],\n                    coop_tmpf=row[\"coop_tmpf\"],\n                    network=row[\"network\"],\n                ),\n                geometry=dict(\n                    type=\"Point\", coordinates=[row[\"st_x\"], row[\"st_y\"]]\n                ),\n            )\n        )\n    pgconn.close()\n    res[\"count\"] = len(res[\"features\"])\n    return json.dumps(res)\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=lambda x: f\"/geojson/7am/{x['dt']}/{x['group']}\",\n    memcacheexpire=120,\n    content_type=\"application/vnd.geo+json\",\n)\ndef application(environ, start_response):\n    \"\"\"Do Workflow\"\"\"\n    group = environ[\"group\"]\n    dt: datetime = environ[\"dt\"]\n    ts = utc(dt.year, dt.month, dt.day, 12)\n\n    res = router(group, ts)\n    headers = [(\"Content-type\", \"application/vnd.geo+json\")]\n    start_response(\"200 OK\", headers)\n    return res\n"
  },
  {
    "path": "pylib/iemweb/geojson/sps.py",
    "content": "\"\"\".. title:: Special Weather Statement (SPS) GeoJSON\n\nReturn to `API Services </api/#json>`_ listing.\n\nDocumentation for /geojson/sps.py\n---------------------------------\n\nThis service emits a geojson for a given valid time of NWS Special Weather\nStatements (SPS) that contain polygons.\n\nChangelog\n---------\n\n- 2025-05-02: Bring all available SPS attributes along for the ride.\n- 2024-06-30: Initial documentation release.\n\nExample Usage\n-------------\n\nReturn up to the moment SPSs with polygons.\n\nhttps://mesonet.agron.iastate.edu/geojson/sps.py\n\nReturn SPSs valid at 20 UTC on 10 August 2024\n\nhttps://mesonet.agron.iastate.edu/geojson/sps.py?valid=2024-08-10T20:00:00Z\n\n\"\"\"\n\nimport json\nfrom datetime import datetime\nfrom typing import Annotated\n\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    valid: Annotated[\n        AwareDatetime,\n        Field(\n            ge=utc(1980),\n            default_factory=utc,\n            description=\"Optional timestamp to request SPSs for.\",\n        ),\n    ]\n\n\ndef run(valid: datetime) -> str:\n    \"\"\"Actually do the hard work of getting the current SPS in geojson\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        res = conn.execute(\n            sql_helper(\"\"\"\n            SELECT ST_asGeoJson(geom) as geojson, product_id,\n            issue at time zone 'UTC' as utc_issue,\n            expire at time zone 'UTC' as utc_expire, landspout, waterspout,\n            max_hail_size, max_wind_gust, segmentnum, wfo\n            from sps WHERE issue <= :valid and expire > :valid\n            and not ST_IsEmpty(geom) and geom is not null\n        \"\"\"),\n            {\"valid\": valid},\n        )\n        data = json_response_dict(\n            {\n                \"type\": \"FeatureCollection\",\n                \"features\": [],\n                \"valid_at\": valid.strftime(ISO8601),\n            }\n        )\n\n        for row in res.mappings():\n            sts = row[\"utc_issue\"].strftime(ISO8601)\n            ets = row[\"utc_expire\"].strftime(ISO8601)\n            href = f\"/api/1/nwstext/{row['product_id']}\"\n            data[\"features\"].append(\n                dict(\n                    type=\"Feature\",\n                    id=row[\"product_id\"],\n                    properties={\n                        \"href\": href,\n                        \"issue\": sts,\n                        \"expire\": ets,\n                        \"landspout\": row[\"landspout\"],\n                        \"waterspout\": row[\"waterspout\"],\n                        \"max_hail_size\": row[\"max_hail_size\"],\n                        \"max_wind_gust\": row[\"max_wind_gust\"],\n                        \"segmentnum\": row[\"segmentnum\"],\n                        \"wfo\": row[\"wfo\"],\n                    },\n                    geometry=json.loads(row[\"geojson\"]),\n                )\n            )\n    data[\"count\"] = len(data[\"features\"])\n    return json.dumps(data)\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Return a memcache key.\"\"\"\n    return f\"/geojson/sps.geojson|{environ['valid']:%Y%m%d%H%M}\"\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=get_mckey,\n    memcacheexpire=15,\n    content_type=\"application/vnd.geo+json\",\n)\ndef application(environ: dict, start_response):\n    \"\"\"Do Main\"\"\"\n    headers = [(\"Content-type\", \"application/vnd.geo+json\")]\n\n    res = run(environ[\"valid\"])\n    start_response(\"200 OK\", headers)\n    return res\n"
  },
  {
    "path": "pylib/iemweb/geojson/station_neighbors.py",
    "content": "\"\"\".. title:: GeoJSON of station neighbors\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /geojson/station_neighbors.py\n-----------------------------------------------\n\nFor a given IEM tracked station, this service provides a GeoJSON representation\nof the stations that are within a certain distance of the provided station.\n\nChangelog\n---------\n\n- 2026-02-14: For IEM consistency, the root attribute `generation_time` was\n  renamed `generated_at`.\n- 2025-03-05: Initial implementation\n\nExample Usage\n-------------\n\nProvide neighbors within 25 kilometers of the Ames Airport station.\n\nhttps://mesonet.agron.iastate.edu/geojson/station_neighbors.py?\\\nstation=AMW&network=IA_ASOS&distance=25\n\n\"\"\"\n\nimport json\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD, NETWORK_FIELD\nfrom iemweb.util import get_ct, json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    network: NETWORK_FIELD\n    station: Annotated[\n        str, Field(description=\"IEM Station Identifier\", max_length=30)\n    ]\n    distance: Annotated[\n        float,\n        Field(\n            description=\"Distance in kilometers to search for neighbors\",\n            gt=0,\n            le=1000,\n        ),\n    ] = 25.0\n    only_online: Annotated[\n        bool, Field(description=\"Only include online stations\")\n    ] = False\n\n\ndef run(conn, environ: dict):\n    \"\"\"Generate a GeoJSON dump of the provided network\"\"\"\n    cursor = conn.execute(\n        sql_helper(\n            \"select st_x(geom), st_y(geom) from stations where id = :station \"\n            \"and network = :network\",\n        ),\n        environ,\n    )\n    if cursor.rowcount == 0:\n        raise IncompleteWebRequest(\"Station not found\")\n    environ[\"lon\"], environ[\"lat\"] = cursor.fetchone()\n    cursor = conn.execute(\n        sql_helper(\"\"\"\n    with neighbors as (\n        select ST_Distance(geom::geography, ST_Point(:lon, :lat, 4326))\n        as dist, iemid from stations where id != :station\n        and network != :network and ST_Distance(geom::geography,\n        ST_Point(:lon, :lat, 4326)) < :distance * 1000.\n    ), attrs as (\n        SELECT t.iemid, t.dist, string_agg(a.attr, '____') as attrs,\n        string_agg(a.value, '____') as attr_values\n        from neighbors t LEFT JOIN station_attributes a\n        on (t.iemid = a.iemid) GROUP by t.iemid, t.dist)\n    SELECT t.*, a.dist, ST_AsGeoJSON(t.geom, 4) as geojson,\n    coalesce(a.attrs, '') as attrs,\n    coalesce(a.attr_values, '') as attr_values from stations t JOIN attrs a on\n    (t.iemid = a.iemid) ORDER by dist ASC\n        \"\"\"),\n        environ,\n    )\n\n    res = json_response_dict(\n        {\n            \"type\": \"FeatureCollection\",\n            \"features\": [],\n        }\n    )\n\n    for row in cursor.mappings():\n        ab = row[\"archive_begin\"]\n        ae = row[\"archive_end\"]\n        time_domain = (\n            f\"({'????' if ab is None else ab.year}-\"\n            f\"{'Now' if ae is None else ae.year})\"\n        )\n        res[\"features\"].append(\n            dict(\n                type=\"Feature\",\n                id=row[\"id\"],\n                properties=dict(\n                    distance_km=int(row[\"dist\"] / 1_000.0),\n                    elevation=row[\"elevation\"],\n                    sname=row[\"name\"],\n                    time_domain=time_domain,\n                    archive_begin=None if ab is None else f\"{ab:%Y-%m-%d}\",\n                    archive_end=None if ae is None else f\"{ae:%Y-%m-%d}\",\n                    state=row[\"state\"],\n                    country=row[\"country\"],\n                    climate_site=row[\"climate_site\"],\n                    wfo=row[\"wfo\"],\n                    tzname=row[\"tzname\"],\n                    ncdc81=row[\"ncdc81\"],\n                    ncei91=row[\"ncei91\"],\n                    ugc_county=row[\"ugc_county\"],\n                    ugc_zone=row[\"ugc_zone\"],\n                    county=row[\"county\"],\n                    sid=row[\"id\"],\n                    network=row[\"network\"],\n                    online=row[\"online\"],\n                    synop=row[\"synop\"],\n                    attributes=dict(\n                        zip(\n                            row[\"attrs\"].split(\"____\"),\n                            row[\"attr_values\"].split(\"____\"),\n                            strict=False,\n                        )\n                    ),\n                ),\n                geometry=json.loads(row[\"geojson\"]),\n            )\n        )\n    res[\"count\"] = len(res[\"features\"])\n    return json.dumps(res, ensure_ascii=False)\n\n\ndef get_mckey(environ) -> str:\n    \"\"\"Get the memcache key\"\"\"\n    return (\n        f\"/geojson/sn/{environ['station']}/{environ['distance']}\"\n        f\"{environ['network']}/{environ['only_online']}\"\n    )\n\n\n@iemapp(\n    memcachekey=get_mckey,\n    memcacheexpire=86400,\n    content_type=get_ct,\n    help=__doc__,\n    schema=Schema,\n)\ndef application(environ: dict, start_response):\n    \"\"\"Main Workflow\"\"\"\n    headers = [(\"Content-type\", get_ct(environ))]\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        res = run(conn, environ)\n    start_response(\"200 OK\", headers)\n    return res.encode(\"utf-8\")\n"
  },
  {
    "path": "pylib/iemweb/geojson/usdm.py",
    "content": "\"\"\".. title:: US Drought Monitor GeoJSON\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /geojson/usdm.py\n----------------------------------\n\nThis service returns a GeoJSON representation of the US Drought Monitor\nfor a given date.  The date is specified in the `date` parameter, which\nshould be in the format of `YYYY-MM-DD`.  If no date is provided, the\nlatest valid USDM is returned.\n\nChangelog\n---------\n\n- 2026-02-14: Renamed top level metadata `generation_time` to `generated_at`\n  for better consistency across IEM services.\n- 2024-08-09: Initial documentation release\n\nExample Usage\n-------------\n\nFetch the latest USDM:\n\nhttps://mesonet.agron.iastate.edu/geojson/usdm.py\n\nFetch the USDM for closest date to 20 March 2024:\n\nhttps://mesonet.agron.iastate.edu/geojson/usdm.py?date=2024-03-20\n\n\"\"\"\n\nimport json\nfrom datetime import date as dateobj\nfrom datetime import timedelta\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    date: Annotated[\n        dateobj | None,\n        Field(\n            ge=dateobj(2000, 1, 1),\n            description=\"Date to query for, YYYY-MM-DD\",\n        ),\n    ] = None\n\n\ndef rectify_date(dt: dateobj):\n    \"\"\"Convert this tstamp into something we can actually use\n\n    if '', use max valid from database\n    if between tuesday and thursday at 8 AM, go back to last week\n    back to tuesday\n    \"\"\"\n    if dt is None:\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            # Go get the latest USDM stored in the database!\n            res = conn.execute(sql_helper(\"SELECT max(valid) from usdm\"))\n            res = res.fetchone()[0]\n        return res\n\n    offset = (dt.weekday() - 1) % 7\n    return dt - timedelta(days=offset)\n\n\ndef run(ts: dateobj):\n    \"\"\"Actually do the hard work of getting the USDM in geojson\"\"\"\n    data = json_response_dict(\n        {\n            \"type\": \"FeatureCollection\",\n            \"features\": [],\n        }\n    )\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"SELECT ST_asGeoJson(geom) as geojson, dm, valid \"\n                \"from usdm WHERE valid = :ts ORDER by dm ASC\"\n            ),\n            {\"ts\": ts},\n        )\n        if res.rowcount == 0:\n            # go back one week\n            res = conn.execute(\n                sql_helper(\n                    \"SELECT ST_asGeoJson(geom) as geojson, dm, valid \"\n                    \"from usdm WHERE valid = :ts ORDER by dm ASC\"\n                ),\n                {\"ts\": ts - timedelta(days=7)},\n            )\n\n        for row in res.mappings():\n            data[\"features\"].append(\n                dict(\n                    type=\"Feature\",\n                    id=row[\"dm\"],\n                    properties=dict(\n                        date=row[\"valid\"].strftime(\"%Y-%m-%d\"), dm=row[\"dm\"]\n                    ),\n                    geometry=json.loads(row[\"geojson\"]),\n                )\n            )\n    data[\"count\"] = len(data[\"features\"])\n    return json.dumps(data)\n\n\ndef get_mckey(environ):\n    \"\"\"Get the key.\"\"\"\n    return f\"/geojson/usdm.geojson|{environ['date']}\"\n\n\n@iemapp(\n    help=__doc__,\n    memcacheexpire=3600,\n    memcachekey=get_mckey,\n    schema=Schema,\n    content_type=\"application/vnd.geo+json\",\n)\ndef application(environ, start_response):\n    \"\"\"Main Workflow\"\"\"\n    headers = [(\"Content-type\", \"application/vnd.geo+json\")]\n\n    ts = rectify_date(environ[\"date\"])\n    if ts is None:\n        raise IncompleteWebRequest(\"No USDM data found.\")\n    res = run(ts)\n    start_response(\"200 OK\", headers)\n    return res\n"
  },
  {
    "path": "pylib/iemweb/geojson/vtec_event.py",
    "content": "\"\"\".. title:: VTEC Event GeoJSON Service\n\nReturn to `API Services </api/#json>`_. This service drives some of the data\nshown on the `VTEC Browser </vtec/>`_.\n\nDocumentation for /geojson/vtec_event.py\n----------------------------------------\n\nThis service emits a GeoJSON for a single VTEC event.  The payload can include\nsome additional requested metadata.\n\nChangelog\n---------\n\n- 2026-02-24: For IEM consistency, the root metadata `generation_time` was\n  renamed `generated_at`.\n- 2024-08-16: Initial documentation update\n\nExample Usage\n-------------\n\nReturn information about Des Moines Tornado Warning 49 from 2024\n\nhttps://mesonet.agron.iastate.edu/geojson/vtec_event.py\\\n?wfo=DMX&year=2024&phenomena=TO&significance=W&etn=49\n\nReturn Local Storm Reports associated with the above event\n\nhttps://mesonet.agron.iastate.edu/geojson/vtec_event.py\\\n?wfo=DMX&year=2024&phenomena=TO&significance=W&etn=49&lsrs=1\n\nReturn Local Storm Reports associated with the above event, but confined to\nthe Storm Based Warning polygon\n\nhttps://mesonet.agron.iastate.edu/geojson/vtec_event.py\\\n?wfo=DMX&year=2024&phenomena=TO&significance=W&etn=49&lsrs=1&sbw=1\n\nReturn Storm Based Warning polygons associated with the above event\n\nhttps://mesonet.agron.iastate.edu/geojson/vtec_event.py\\\n?wfo=DMX&year=2024&phenomena=TO&significance=W&etn=49&sbw=1\n\n\"\"\"\n\nfrom datetime import datetime, timezone\nfrom typing import Annotated\n\nimport simplejson as json\nfrom pydantic import Field\nfrom pyiem.database import get_dbconnc\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    wfo: Annotated[\n        str,\n        Field(\n            description=\"3 or 4 character WFO Identifier\",\n            min_length=3,\n            max_length=4,\n        ),\n    ] = \"MPX\"\n    year: Annotated[int, Field(description=\"Year of interest\")] = 2015\n    phenomena: Annotated[\n        str, Field(description=\"VTEC Phenomena\", max_length=2)\n    ] = \"SV\"\n    significance: Annotated[\n        str, Field(description=\"VTEC Significance\", max_length=1)\n    ] = \"W\"\n    etn: Annotated[int, Field(description=\"VTEC Event ID\", ge=1, le=9999)] = 1\n    sbw: Annotated[\n        bool,\n        Field(\n            description=(\n                \"Confine result to include the Storm Based Warning polygon\"\n            ),\n        ),\n    ] = False\n    lsrs: Annotated[\n        bool,\n        Field(\n            description=(\n                \"Provide Local Storm Reports either for the county or \"\n                \"SBW when sbw=1 is set\"\n            ),\n        ),\n    ] = False\n\n\ndef run_lsrs(wfo, year, phenomena, significance, etn, sbw):\n    \"\"\"Do great things\"\"\"\n    pgconn, cursor = get_dbconnc(\"postgis\")\n\n    if sbw == 1:\n        sql = \"\"\"\n            SELECT distinct l.*, valid at time zone 'UTC' as utc_valid,\n            ST_asGeoJson(l.geom) as geojson,\n            coalesce(l.product_id, l.product_id_summary) as product_id\n            from lsrs l, sbw w WHERE w.vtec_year = %s and\n            l.geom && w.geom and ST_contains(w.geom, l.geom)\n            and l.wfo = %s and\n            l.valid >= w.issue and l.valid <= w.expire and\n            w.wfo = %s and w.eventid = %s and\n            w.significance = %s and w.phenomena = %s\n            ORDER by l.valid ASC\n        \"\"\"\n        args = (year, wfo, wfo, etn, significance, phenomena)\n    else:\n        sql = \"\"\"\n            WITH countybased as (\n                SELECT min(issue) as issued, max(expire) as expired\n                from warnings w JOIN ugcs u on (u.gid = w.gid)\n                WHERE w.vtec_year = %s and w.wfo = %s and w.eventid = %s and\n                w.significance = %s\n                and w.phenomena = %s)\n\n            SELECT distinct l.*, valid at time zone 'UTC' as utc_valid,\n            ST_asGeoJson(l.geom) as geojson,\n            coalesce(l.product_id, l.product_id_summary) as product_id\n            from lsrs l, countybased c WHERE\n            l.valid >= c.issued and l.valid < c.expired and\n            l.wfo = %s ORDER by l.valid ASC\n        \"\"\"\n        args = (year, wfo, etn, significance, phenomena, wfo)\n    cursor.execute(sql, args)\n    res = json_response_dict(\n        {\n            \"type\": \"FeatureCollection\",\n            \"features\": [],\n        }\n    )\n    for row in cursor:\n        res[\"features\"].append(\n            dict(\n                type=\"Feature\",\n                properties=dict(\n                    utc_valid=row[\"utc_valid\"].strftime(ISO8601),\n                    event=row[\"typetext\"],\n                    type=row[\"type\"],\n                    magnitude=row[\"magnitude\"],\n                    city=row[\"city\"],\n                    county=row[\"county\"],\n                    remark=row[\"remark\"],\n                    product_id=row[\"product_id\"],\n                ),\n                geometry=json.loads(row[\"geojson\"]),\n            )\n        )\n    res[\"count\"] = len(res[\"features\"])\n    pgconn.close()\n    return json.dumps(res)\n\n\ndef run_sbw(wfo, year, phenomena, significance, etn):\n    \"\"\"Do great things\"\"\"\n    pgconn, cursor = get_dbconnc(\"postgis\")\n\n    cursor.execute(\n        \"\"\"\n    SELECT\n    ST_asGeoJson(geom) as geojson,\n    issue at time zone 'UTC' as utc_issue,\n    init_expire at time zone 'UTC' as utc_init_expire\n    from sbw WHERE vtec_year = %s and wfo = %s\n    and eventid = %s and phenomena = %s and significance = %s\n    and status = 'NEW'\n    \"\"\",\n        (year, wfo, etn, phenomena, significance),\n    )\n    res = {\n        \"type\": \"FeatureCollection\",\n        \"features\": [],\n        \"generated_at\": datetime.now(timezone.utc).strftime(ISO8601),\n        \"count\": cursor.rowcount,\n    }\n    for row in cursor:\n        res[\"features\"].append(\n            dict(\n                type=\"Feature\",\n                properties=dict(\n                    phenomena=phenomena, significance=significance, eventid=etn\n                ),\n                geometry=json.loads(row[\"geojson\"]),\n            )\n        )\n    pgconn.close()\n    return json.dumps(res)\n\n\ndef run(wfo, year, phenomena, significance, etn):\n    \"\"\"Do great things\"\"\"\n    pgconn, cursor = get_dbconnc(\"postgis\")\n\n    cursor.execute(\n        \"\"\"\n    SELECT\n    w.ugc,\n    ST_asGeoJson(u.geom) as geojson,\n    issue at time zone 'UTC' as utc_issue,\n    init_expire at time zone 'UTC' as utc_init_expire\n    from warnings w JOIN ugcs u on (w.gid = u.gid)\n    WHERE w.vtec_year = %s and w.wfo = %s and eventid = %s and\n    phenomena = %s and significance = %s\n    \"\"\",\n        (year, wfo, etn, phenomena, significance),\n    )\n    res = {\n        \"type\": \"FeatureCollection\",\n        \"features\": [],\n        \"generated_at\": utc().strftime(ISO8601),\n        \"count\": cursor.rowcount,\n    }\n    for row in cursor:\n        res[\"features\"].append(\n            dict(\n                type=\"Feature\",\n                id=row[\"ugc\"],\n                properties=dict(\n                    phenomena=phenomena, significance=significance, eventid=etn\n                ),\n                geometry=json.loads(row[\"geojson\"]),\n            )\n        )\n    pgconn.close()\n    return json.dumps(res)\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Return the key.\"\"\"\n    return (\n        f\"/geojson/vtec_event/{environ['wfo']}/{environ['year']}/\"\n        f\"{environ['phenomena']}/{environ['significance']}/\"\n        f\"{environ['etn']}/{environ['sbw']}/{environ['lsrs']}\"\n    )\n\n\n@iemapp(\n    schema=Schema,\n    help=__doc__,\n    content_type=\"application/vnd.geo+json\",\n    memcacheexpire=3600,\n    memcachekey=get_mckey,\n)\ndef application(environ, start_response):\n    \"\"\"Main()\"\"\"\n    headers = [(\"Content-type\", \"application/vnd.geo+json\")]\n\n    wfo = environ[\"wfo\"]\n    if len(wfo) == 4:\n        wfo = wfo[1:]\n\n    if environ[\"lsrs\"]:\n        res = run_lsrs(\n            wfo,\n            environ[\"year\"],\n            environ[\"phenomena\"],\n            environ[\"significance\"],\n            environ[\"etn\"],\n            environ[\"sbw\"],\n        )\n    else:\n        if environ[\"sbw\"]:\n            res = run_sbw(\n                wfo,\n                environ[\"year\"],\n                environ[\"phenomena\"],\n                environ[\"significance\"],\n                environ[\"etn\"],\n            )\n        else:\n            res = run(\n                wfo,\n                environ[\"year\"],\n                environ[\"phenomena\"],\n                environ[\"significance\"],\n                environ[\"etn\"],\n            )\n\n    start_response(\"200 OK\", headers)\n    return res.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/geojson/webcam.py",
    "content": "\"\"\".. title:: Webcam Metadata GeoJSON\n\nReturn to `API Services </api/#json>`_ listing.\n\nDocumentation for /geojson/webcam.py\n------------------------------------\n\nThis service emits a geojson with metadata for webcam information that is\nactive at the given timestamp/now.\n\nChangelog\n---------\n\n- 2025-06-02: Added property `utc_valid` and `imgurl` to align with other\n  services.\n- 2024-06-30: Initial documentation release. Parameter `valid` added for\n  consistency with other services.\n\nExample Usage\n-------------\n\nReturn current webcam information.\n\nhttps://mesonet.agron.iastate.edu/geojson/webcam.geojson\n\n\"\"\"\n\nimport json\nfrom datetime import timezone\n\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD, NETWORK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    network: NETWORK_FIELD = \"KCCI\"\n    ts: AwareDatetime = Field(\n        default=None,\n        description=\"Optional *legacy* timestamp to request webcams for.\",\n    )\n    valid: AwareDatetime = Field(\n        default=None,\n        description=\"Optional timestamp to request webcams for.\",\n    )\n\n\ndef run(valid, network):\n    \"\"\"Actually do the hard work of getting the current SPS in geojson\"\"\"\n    networks = [network]\n    if network == \"TV\":\n        networks = [\"KCRG\", \"KCCI\", \"KELO\", \"ISUC\", \"MCFC\"]\n    params = {\"networks\": networks, \"valid\": valid}\n    data = json_response_dict(\n        {\n            \"type\": \"FeatureCollection\",\n            \"features\": [],\n            \"valid_at\": (valid if valid is not None else utc()).strftime(\n                ISO8601\n            ),\n        }\n    )\n\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        if valid is None:\n            res = conn.execute(\n                sql_helper(\"\"\"\n                    SELECT *, ST_x(geom) as lon, ST_y(geom) as lat\n                    from camera_current c, webcams w\n                    WHERE valid > (now() - '15 minutes'::interval)\n                    and c.cam = w.id and\n                    w.network = ANY(:networks)\n                    ORDER by name ASC\n            \"\"\"),\n                params,\n            )\n        else:\n            res = conn.execute(\n                sql_helper(\"\"\"\n                    SELECT *, ST_x(geom) as lon, ST_y(geom) as lat\n                    from camera_log c, webcams w\n                    WHERE valid = :valid and c.cam = w.id\n                    and w.network = ANY(:networks) ORDER by name ASC\n            \"\"\"),\n                params,\n            )\n        for row in res.mappings():\n            cv = row[\"valid\"].astimezone(timezone.utc)\n            url = (\n                \"https://mesonet.agron.iastate.edu/archive/data/\"\n                f\"{cv:%Y/%m/%d}/camera/{row['cam']}/{row['cam']}_\"\n                f\"{cv:%Y%m%d%H%M}.jpg\"\n            )\n            data[\"features\"].append(\n                dict(\n                    type=\"Feature\",\n                    id=row[\"id\"],\n                    properties={\n                        \"valid\": cv.strftime(ISO8601),\n                        \"utc_valid\": cv.strftime(ISO8601),\n                        \"cid\": row[\"id\"],\n                        \"name\": row[\"name\"],\n                        \"county\": row[\"county\"],\n                        \"state\": row[\"state\"],\n                        \"angle\": row[\"drct\"],\n                        \"url\": url,\n                        \"imgurl\": url,\n                    },\n                    geometry={\n                        \"type\": \"Point\",\n                        \"coordinates\": [row[\"lon\"], row[\"lat\"]],\n                    },\n                )\n            )\n    data[\"count\"] = len(data[\"features\"])\n    return json.dumps(data)\n\n\ndef get_mckey(environ):\n    \"\"\"Return a memcache key.\"\"\"\n    stamp = environ[\"valid\"]\n    if stamp is None:\n        stamp = environ[\"ts\"]\n    if stamp is None:\n        return \"/geojson/webcam.geojson\"\n    return f\"/geojson/webcam.geojson|{stamp:%Y%m%d%H%M}\"\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=get_mckey,\n    memcacheexpire=15,\n    content_type=\"application/vnd.geo+json\",\n)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Do Main\"\"\"\n    headers = [(\"Content-type\", \"application/vnd.geo+json\")]\n\n    stamp = environ[\"valid\"]\n    if stamp is None:\n        stamp = environ[\"ts\"]\n    res = run(stamp, environ[\"network\"])\n    start_response(\"200 OK\", headers)\n    return res\n"
  },
  {
    "path": "pylib/iemweb/geojson/winter_roads.py",
    "content": "\"\"\".. title:: Winter Road Conditions GeoJSON\n\nReturn to `API Services </api/#json>`_\n\nExample Requests\n----------------\n\nGet the current winter road conditions:\n\nhttps://mesonet.agron.iastate.edu/geojson/winter_roads.geojson\n\n\"\"\"\n\nimport json\n\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n\n\n@with_sqlalchemy_conn(\"postgis\")\ndef run(conn: Connection | None = None) -> str:\n    \"\"\"Actually do the hard work of getting the current SBW in geojson\"\"\"\n\n    res = conn.execute(\n        sql_helper(\"\"\"\n        SELECT ST_asGeoJson(ST_Transform(simple_geom, 4326)) as geojson,\n        cond_code, c.segid from\n        roads_current c JOIN roads_base b on (c.segid = b.segid)\n        WHERE c.valid > now() - '1000 hours'::interval\n        and cond_code is not null\n    \"\"\")\n    )\n\n    data = json_response_dict(\n        {\n            \"type\": \"FeatureCollection\",\n            \"features\": [],\n        }\n    )\n    for row in res:\n        data[\"features\"].append(\n            dict(\n                type=\"Feature\",\n                id=row[2],\n                properties=dict(code=row[1]),\n                geometry=json.loads(row[0]),\n            )\n        )\n    data[\"count\"] = len(data[\"features\"])\n    return json.dumps(data)\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=\"/geojson/winter_roads.geojson\",\n    memcacheexpire=120,\n    content_type=\"application/vnd.geo+json\",\n)\ndef application(_environ, start_response):\n    \"\"\"Main Workflow\"\"\"\n    headers = [(\"Content-type\", \"application/vnd.geo+json\")]\n    res = run()\n    start_response(\"200 OK\", headers)\n    return res\n"
  },
  {
    "path": "pylib/iemweb/getweather.py",
    "content": "\"\"\".. title:: Ancient IEM webpage that lingers\n\nExample Usage\n-------------\n\nGet the Des Moines weather on 11 September 2001\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/onsite/birthday/getweather.py\\\n?city=IATDSM&year=2011&month=9&day=11\n\n\"\"\"\n\nfrom datetime import datetime, timedelta\nfrom io import StringIO\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import get_dbconn\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.templates.iem import TEMPLATE\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import DAY_OF_MONTH_FIELD, MONTH_FIELD, YEAR_FIELD\n\nnt = NetworkTable(\"IACLIMATE\", only_online=False)\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    city: Annotated[str, Field(description=\"City Code\")]\n    year: YEAR_FIELD\n    month: MONTH_FIELD\n    day: DAY_OF_MONTH_FIELD\n\n\ndef weather_logic(month, high, low, rain, snow):\n    \"\"\"Do Something.\"\"\"\n    deltaT = high - low\n\n    if 4 < month < 11:  # It is summer\n        if deltaT >= 30:\n            if rain == 0.00:\n                return \"Sunny!!\"\n            return \"Mostly sunny w/ Rain!!\"\n        if deltaT >= 15:\n            if rain == 0.00:\n                return \"Mostly Sunny!!\"\n            return \"Partly Sunny w/ Rain!!\"\n        if rain == 0.00:\n            return \"Cloudy!!\"\n        return \"Cloudy and rainy!!\"\n\n    if deltaT >= 20:\n        if rain == 0.00:\n            return \"Sunny!!\"\n        if rain > 0 and snow > 0:\n            return \"Snowy!!\"\n        return \"Mostly sunny w/ Rain!!\"\n\n    if deltaT >= 10:\n        if rain == 0.00:\n            return \"Mostly Sunny!!\"\n        if rain > 0 and snow > 0:\n            return \"Snowy!!\"\n        return \"Partly Sunny w/ Rain!!\"\n    if rain == 0.00:\n        return \"Cloudy!!\"\n    if rain > 0 and snow > 0:\n        return \"Snowy!!\"\n    return \"Cloudy and rainy!!\"\n\n\ndef get_values(city, dateStr):\n    \"\"\"Get values.\"\"\"\n    query_str = \"\"\"SELECT high, low, precip, snow from alldata_ia\n    WHERE station = %s and day = %s \"\"\"\n    args = (city, dateStr)\n    conn = get_dbconn(\"coop\")\n    ccursor = conn.cursor()\n    ccursor.execute(query_str, args)\n    if ccursor.rowcount == 0:\n        raise NoDataFound(\"No Data Found.\")\n    row = ccursor.fetchone()\n    rain = round(float(row[2]), 2)\n    try:\n        snow = round(float(row[3]), 2)\n    except Exception:\n        snow = 0\n\n    rain = max(rain, 0)\n    snow = max(snow, 0)\n\n    return row[0], row[1], str(rain), str(snow)\n\n\ndef get_day(sio, city, ts):\n    \"\"\"Yawn.\"\"\"\n    year = str(ts.year)\n    month = str(ts.month)\n    day = str(ts.day)\n    dateStr = year + \"-\" + month + \"-\" + day\n    high, low, rain, snow = get_values(city, dateStr)\n\n    cloud_type = weather_logic(\n        int(month),\n        int(high),\n        int(low),\n        round(float(rain), 2),\n        round(float(snow), 2),\n    )\n\n    sio.write('<div class=\"col-md-2\">')\n    sio.write(\n        f'<img src=\"/content/date.php?year={year}&month={month}'\n        f'&day={day}\"><br />'\n    )\n    sio.write(\"<TABLE>\")\n    sio.write(\"<TR><TH>HIGH </TH><TD> \" + str(high) + \"</TD></TR>\")\n    sio.write(\"<TR><TH>LOW  </TH><TD> \" + str(low) + \"</TD></TR>\")\n    sio.write(\"<TR><TH>RAIN </TH><TD> \" + str(rain) + \"</TD></TR>\")\n    sio.write(\"<TR><TH>SNOW </TH><TD> \" + str(snow) + \"</TD></TR>\")\n    sio.write(\n        \"<TR><TH colspan='2' NOWRAP><font color='blue'>\"\n        + cloud_type\n        + \"</font></TH></TR>\"\n    )\n    sio.write(\"</TABLE>\")\n    sio.write(\"</div>\")\n\n\ndef now_get_day(sio, city, ts):\n    \"\"\"Yawn.\"\"\"\n    year = str(ts.year)\n    month = str(ts.month)\n    day = str(ts.day)\n    dateStr = year + \"-\" + month + \"-\" + day\n    high, low, rain, snow = get_values(city, dateStr)\n    cloud_type = weather_logic(\n        int(month),\n        int(high),\n        int(low),\n        round(float(rain), 2),\n        round(float(snow), 2),\n    )\n\n    sio.write('<div class=\"col-md-3\">')\n    sio.write('<font color=\"BLUE\">HAPPY BIRTHDAY!!</font><BR><BR>')\n    sio.write(\n        f'<img src=\"/content/date.php?year={year}&month={month}'\n        f'&day={day}\"><br />'\n    )\n    sio.write(\"<TABLE>\")\n    sio.write(\"<TR><TH>HIGH </TH><TD> \" + str(high) + \"</TD></TR>\")\n    sio.write(\"<TR><TH>LOW  </TH><TD> \" + str(low) + \"</TD></TR>\")\n    sio.write(\"<TR><TH>RAIN </TH><TD> \" + str(rain) + \"</TD></TR>\")\n    sio.write(\"<TR><TH>SNOW </TH><TD> \" + str(snow) + \"</TD></TR>\")\n    sio.write(\n        \"<TR><TH colspan='2' NOWRAP><font color='blue'>\"\n        + cloud_type\n        + \"</font></TH></TR>\"\n    )\n    sio.write(\"</TABLE>\")\n    sio.write(\"</div>\")\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Go Main Go.\"\"\"\n    sio = StringIO()\n    sio.write('<a href=\"/onsite/birthday/\">Try another date or city</a><BR>')\n    start_response(\"200 OK\", [(\"Content-type\", \"text/html\")])\n    ctx = {\"title\": \"Weather on Your Birthday\"}\n\n    city = environ[\"city\"].upper()\n    if city not in nt.sts:\n        raise NoDataFound(\"Unknown City\")\n\n    cityName = nt.sts[city][\"name\"]\n    now = datetime(environ[\"year\"], environ[\"month\"], environ[\"day\"])\n    nowM2 = now + timedelta(days=-2)\n    nowM1 = now + timedelta(days=-1)\n    nowP1 = now + timedelta(days=1)\n    nowP2 = now + timedelta(days=2)\n\n    sio.write(f\"<BR><h4>Data valid for station: {cityName}, Iowa</h4><BR>\")\n\n    sio.write('<div class=\"row\">')\n\n    get_day(sio, city, nowM2)\n\n    get_day(sio, city, nowM1)\n\n    now_get_day(sio, city, now)\n\n    get_day(sio, city, nowP1)\n\n    get_day(sio, city, nowP2)\n\n    sio.write(\"</div>\")\n\n    sio.write(\n        \"\"\"\n    <BR><BR><P>The weather type listed for each day above in blue is\n    <B>not</b> official data.  A rather\n    subjective logic scheme is used to guess the weather purely\n    for entertainment purposes only.\n    \"\"\"\n    )\n    ctx[\"content\"] = sio.getvalue()\n    return [TEMPLATE.render(ctx).encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/iemre/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/iemre/daily.py",
    "content": "\"\"\".. title:: IEM Reanalysis Daily Data\n\nReturn to `API Services </api/#cgi>`_\n\nThis service provides access to the IEM Reanalysis daily data product. Some\nadditional information comes along for the ride.\n\nChangelog\n---------\n\n- 2025-12-17: Add the morning / 12 UTC snowfall variables to the output.\n- 2025-01-01: Implementation updated to use pydantic validation.\n- 2024-09-11: Initial documentation update\n\nExample Requests\n----------------\n\nProvide the daily data for a location in Iowa on 1 Jan 2024\n\nhttps://mesonet.agron.iastate.edu/iemre/daily.py\\\n?date=2024-01-01&lat=41.99&lon=-95.1\n\n\"\"\"\n\nimport json\nimport os\nfrom datetime import date as dateobj\nfrom typing import Annotated\n\nimport numpy as np\nfrom pydantic import Field\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import (\n    daily_offset,\n    get_daily_mrms_ncname,\n    get_daily_ncname,\n    get_dailyc_ncname,\n    get_domain,\n)\nfrom pyiem.util import convert_value, ncopen\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import LATITUDE_FIELD, LONGITUDE_FIELD\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    date: Annotated[\n        dateobj,\n        Field(\n            title=\"Date\",\n            description=\"Date of interest\",\n        ),\n    ] = dateobj(2019, 3, 1)\n    lat: LATITUDE_FIELD = -41.99\n    lon: LONGITUDE_FIELD = -95.1\n\n\ndef myrounder(val, precision):\n    \"\"\"round a float or give back None\"\"\"\n    if val is None or np.isnan(val) or np.ma.is_masked(val):\n        return None\n    return round(val, precision)\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Do Something Fun!\"\"\"\n    dt: dateobj = environ[\"date\"]\n    lat = environ[\"lat\"]\n    lon = environ[\"lon\"]\n    domain = get_domain(lon, lat)\n    if domain is None:\n        raise NoDataFound(\"Location is outside of IEMRE domains!\")\n    nav = get_nav(\"iemre\", domain)\n\n    i, j = nav.find_ij(lon, lat)\n    offset = daily_offset(dt)\n\n    res = {\"data\": []}\n\n    fn = get_daily_ncname(dt.year, domain=domain)\n\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n\n    if not os.path.isfile(fn):\n        return [json.dumps(res).encode(\"ascii\")]\n\n    prism_precip = None\n    if dt.year > 1980 and domain == \"conus\":\n        ncfn = f\"/mesonet/data/prism/{dt.year}_daily.nc\"\n        if os.path.isfile(ncfn):\n            i2, j2 = get_nav(\"prism\").find_ij(lon, lat)\n            with ncopen(ncfn) as nc:\n                prism_precip = nc.variables[\"ppt\"][offset, j2, i2] / 25.4\n\n    mrms_precip = None\n    if dt.year > 2000 and domain == \"conus\":\n        ncfn = get_daily_mrms_ncname(dt.year)\n        if os.path.isfile(ncfn):\n            i2, j2 = get_nav(\"mrms_iemre\").find_ij(lon, lat)\n            with ncopen(ncfn) as nc:\n                mrms_precip = nc.variables[\"p01d\"][offset, j2, i2] / 25.4\n\n    c2000 = dt.replace(year=2000)\n    coffset = daily_offset(c2000)\n\n    with ncopen(fn) as nc, ncopen(get_dailyc_ncname(domain)) as cnc:\n        res[\"data\"].append(\n            {\n                \"prism_precip_in\": myrounder(prism_precip, 2),\n                \"mrms_precip_in\": myrounder(mrms_precip, 2),\n                \"daily_high_f\": myrounder(\n                    convert_value(\n                        nc.variables[\"high_tmpk\"][offset, j, i],\n                        \"degK\",\n                        \"degF\",\n                    ),\n                    1,\n                ),\n                \"12z_high_f\": myrounder(\n                    convert_value(\n                        nc.variables[\"high_tmpk_12z\"][offset, j, i],\n                        \"degK\",\n                        \"degF\",\n                    ),\n                    1,\n                ),\n                \"climate_daily_high_f\": myrounder(\n                    convert_value(\n                        cnc.variables[\"high_tmpk\"][coffset, j, i],\n                        \"degK\",\n                        \"degF\",\n                    ),\n                    1,\n                ),\n                \"daily_low_f\": myrounder(\n                    convert_value(\n                        nc.variables[\"low_tmpk\"][offset, j, i],\n                        \"degK\",\n                        \"degF\",\n                    ),\n                    1,\n                ),\n                \"12z_low_f\": myrounder(\n                    convert_value(\n                        nc.variables[\"low_tmpk_12z\"][offset, j, i],\n                        \"degK\",\n                        \"degF\",\n                    ),\n                    1,\n                ),\n                \"soil4t_high_f\": myrounder(\n                    convert_value(\n                        nc.variables[\"high_soil4t\"][offset, j, i],\n                        \"degK\",\n                        \"degF\",\n                    ),\n                    1,\n                ),\n                \"soil4t_low_f\": myrounder(\n                    convert_value(\n                        nc.variables[\"low_soil4t\"][offset, j, i],\n                        \"degK\",\n                        \"degF\",\n                    ),\n                    1,\n                ),\n                \"avg_dewpoint_f\": myrounder(\n                    convert_value(\n                        nc.variables[\"avg_dwpk\"][offset, j, i],\n                        \"degK\",\n                        \"degF\",\n                    ),\n                    1,\n                ),\n                \"climate_daily_low_f\": myrounder(\n                    convert_value(\n                        cnc.variables[\"low_tmpk\"][coffset, j, i],\n                        \"degK\",\n                        \"degF\",\n                    ),\n                    1,\n                ),\n                \"daily_precip_in\": myrounder(\n                    nc.variables[\"p01d\"][offset, j, i] / 25.4, 2\n                ),\n                \"12z_precip_in\": myrounder(\n                    nc.variables[\"p01d_12z\"][offset, j, i] / 25.4, 2\n                ),\n                \"climate_daily_precip_in\": myrounder(\n                    cnc.variables[\"p01d\"][coffset, j, i] / 25.4, 2\n                ),\n                \"srad_mj\": myrounder(\n                    nc.variables[\"rsds\"][offset, j, i] * 86400.0 / 1000000.0,\n                    2,\n                ),\n                \"avg_windspeed_mps\": myrounder(\n                    nc.variables[\"wind_speed\"][offset, j, i], 2\n                ),\n                \"snow_12z_in\": myrounder(\n                    nc.variables[\"snow_12z\"][offset, j, i] / 25.4, 1\n                ),\n                \"snowd_12z_in\": myrounder(\n                    nc.variables[\"snowd_12z\"][offset, j, i] / 25.4, 1\n                ),\n            }\n        )\n    return [json.dumps(res).encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/iemre/hourly.py",
    "content": "\"\"\".. title:: IEMRE Hourly Data Service\n\nThis service emits point values from the IEMRE analysis grid.  You can only\nrequest 24 hours of data at a time.\n\nChangelog\n---------\n\n- 2026-02-11: Added `tz` parameter to control the timezone used for the\n  data response.\n- 2026-02-11: The ``generated_at`` metadata was updated to be ISO8601.\n- 2025-01-03: Initial implementation with pydantic validation.\n\n\"\"\"\n\nimport json\nimport os\nfrom datetime import date as datetype\nfrom datetime import datetime, timedelta, timezone\nfrom typing import Annotated\nfrom zoneinfo import ZoneInfo\n\nimport numpy as np\nfrom pydantic import Field, computed_field, model_validator\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import get_domain, get_hourly_ncname, hourly_offset\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import convert_value, ncopen, utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import LATITUDE_FIELD, LONGITUDE_FIELD, TZ_FIELD\n\nISO = \"%Y-%m-%dT%H:%MZ\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    @computed_field(repr=False)\n    def domain(self) -> str:\n        return get_domain(self.lon, self.lat)\n\n    @computed_field(repr=False)\n    def grid_i(self) -> int:\n        return get_nav(\"iemre\", self.domain).find_ij(self.lon, self.lat)[0]\n\n    @computed_field(repr=False)\n    def grid_j(self) -> int:\n        return get_nav(\"iemre\", self.domain).find_ij(self.lon, self.lat)[1]\n\n    date: Annotated[\n        datetype, Field(description=\"Date (for provided tz) to query data for\")\n    ]\n    lat: LATITUDE_FIELD\n    lon: LONGITUDE_FIELD\n    tz: TZ_FIELD = \"America/Chicago\"\n\n    @model_validator(mode=\"after\")\n    def ensure_domain(self):\n        \"\"\"Ensure the point is within a domain.\"\"\"\n        domain = get_domain(self.lon, self.lat)\n        if domain is None:\n            raise ValueError(\"Point is outside all IEMRE domains\")\n        return self\n\n\ndef myrounder(val, precision):\n    \"\"\"round a float or give back None\"\"\"\n    if val is None or np.isnan(val) or np.ma.is_masked(val):\n        return None\n    return round(float(val), precision)\n\n\ndef get_timerange(environ: dict) -> tuple[datetime, datetime]:\n    \"\"\"Figure out what period to get data for.\"\"\"\n    tzname = environ[\"tz\"]\n    dt = environ[\"date\"]\n    # Construct a local midnight to 11 PM period\n    ts = datetime(dt.year, dt.month, dt.day, 0, tzinfo=ZoneInfo(tzname))\n    return ts, ts.replace(hour=23)\n\n\ndef workflow(\n    sts: datetime, ets: datetime, i: int, j: int, domain: str\n) -> dict:\n    \"\"\"Return a dict of our data.\"\"\"\n    res = {\n        \"data\": [],\n        \"grid_i\": i,\n        \"grid_j\": j,\n        \"generated_at\": utc().strftime(ISO8601),\n    }\n\n    tidx0 = hourly_offset(sts)\n    tidx1 = hourly_offset(ets)\n    fns = [get_hourly_ncname(sts.astimezone(timezone.utc).year, domain)]\n    tslices = [slice(tidx0, tidx1 + 1)]\n    if tidx1 < tidx0:\n        # We are spanning years\n        fns.append(\n            get_hourly_ncname(ets.astimezone(timezone.utc).year, domain)\n        )\n        tslices.append(slice(0, tidx1 + 1))\n        tslices[0] = slice(tidx0, None)\n\n    now = sts\n    for fn, tslice in zip(fns, tslices, strict=False):\n        if not os.path.isfile(fn):\n            raise IncompleteWebRequest(\n                f\"File {fn} does not exist, please try again later\"\n            )\n        with ncopen(fn) as nc:\n            skyc = nc.variables[\"skyc\"][tslice, j, i]\n            dwpf = convert_value(\n                nc.variables[\"dwpk\"][tslice, j, i], \"degK\", \"degF\"\n            )\n            tmpf = convert_value(\n                nc.variables[\"tmpk\"][tslice, j, i], \"degK\", \"degF\"\n            )\n            soil4t = convert_value(\n                nc.variables[\"soil4t\"][tslice, j, i], \"degK\", \"degF\"\n            )\n            uwnd = nc.variables[\"uwnd\"][tslice, j, i]\n            vwnd = nc.variables[\"vwnd\"][tslice, j, i]\n            precip = nc.variables[\"p01m\"][tslice, j, i] / 25.4\n            for idx, _skyc in enumerate(skyc):\n                utcnow = now.astimezone(timezone.utc)\n                res[\"data\"].append(\n                    {\n                        \"valid_utc\": utcnow.strftime(ISO),\n                        \"valid_local\": now.strftime(ISO[:-1]),\n                        \"skyc_%\": myrounder(_skyc, 1),\n                        \"air_temp_f\": myrounder(tmpf[idx], 1),\n                        \"dew_point_f\": myrounder(dwpf[idx], 1),\n                        \"soil4t_f\": myrounder(soil4t[idx], 1),\n                        \"uwnd_mps\": myrounder(uwnd[idx], 2),\n                        \"vwnd_mps\": myrounder(vwnd[idx], 2),\n                        \"hourly_precip_in\": myrounder(precip[idx], 2),\n                    }\n                )\n                now += timedelta(hours=1)\n    return res\n\n\ndef get_mckey(environ: dict):\n    \"\"\"Figure out the memcache key.\"\"\"\n    model: Schema = environ[\"_cgimodel_schema\"]\n    return (\n        f\"iemre/hourly/{model.domain}/{environ['date']:%Y%m%d}\"\n        f\"/{model.grid_i}/{model.grid_j}/{environ['tz']}\"\n    )\n\n\n@iemapp(\n    help=__doc__, schema=Schema, memcachekey=get_mckey, memcacheexpire=3600\n)\ndef application(environ, start_response):\n    \"\"\"Do Something Fun!\"\"\"\n    model: Schema = environ[\"_cgimodel_schema\"]\n    sts, ets = get_timerange(environ)\n\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    res = workflow(sts, ets, model.grid_i, model.grid_j, model.domain)\n    return json.dumps(res)\n"
  },
  {
    "path": "pylib/iemweb/iemre/multiday.py",
    "content": "\"\"\".. title:: IEMRE Multi-Day Data\n\nReturn to `API Services </api/>`_\n\nDocumentation for /iemre/multiday.py\n------------------------------------\n\nThis application provides a JSON service for multi-day data from the IEM\nReanalysis project.\n\nChangelog\n---------\n\n- 2025-09-26: Added ``forecast`` option to include an IEM calculated daily\n  forecast from the GFS and NWS NDFD models.\n- 2025-09-26: Multi-year responses are supported with the caveat that MRMS\n  and PRISM data is all null in this case due to performance issues.\n- 2025-09-26: The date1 parameter is now sdate and date2 parameter is edate\n- 2025-01-02: Service cleanups\n\nExample Usage\n-------------\n\nGet 1-2 January 2024 data for Ames, IA:\n\nhttps://mesonet.agron.iastate.edu/iemre/multiday.py?sdate=2024-01-01&\\\nedate=2024-01-02&lat=42.0308&lon=-93.6319\n\n\"\"\"\n\nimport json\nimport warnings\nfrom datetime import date, timedelta\nfrom pathlib import Path\n\nimport numpy as np\nimport pandas as pd\nfrom pydantic import Field, PrivateAttr, model_validator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import (\n    daily_offset,\n    get_daily_mrms_ncname,\n    get_dailyc_ncname,\n    get_domain,\n    get_gid,\n)\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import convert_value, ncopen, utc\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.fields import LATITUDE_FIELD, LONGITUDE_FIELD\nfrom iemweb.json.climodat_dd import compute_taxis\n\nwarnings.simplefilter(\"ignore\", UserWarning)\n\n\n# Custom JSON encoder to handle NumPy types and format floats to 2 decimals\nclass NumpyEncoder(json.JSONEncoder):\n    def encode(self, obj):\n        if isinstance(obj, dict):\n            return super().encode(\n                {k: self._convert_item(v) for k, v in obj.items()}\n            )\n        if isinstance(obj, list):\n            return super().encode([self._convert_item(item) for item in obj])\n        return super().encode(self._convert_item(obj))\n\n    def _convert_item(self, obj):\n        if isinstance(obj, (np.floating, float)):\n            # Handle NaN and infinite values\n            if np.isnan(obj) or np.isinf(obj):\n                return None\n            return round(float(obj), 2)\n        if isinstance(obj, (np.integer, int)):\n            return int(obj)\n        if isinstance(obj, np.ndarray):\n            return obj.tolist()\n        if isinstance(obj, dict):\n            return {k: self._convert_item(v) for k, v in obj.items()}\n        if isinstance(obj, list):\n            return [self._convert_item(item) for item in obj]\n        return obj\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    _domain: str = PrivateAttr(default=None)\n    _gid: int = PrivateAttr(default=None)\n    _i: int = PrivateAttr(default=None)\n    _j: int = PrivateAttr(default=None)\n\n    callback: str = Field(\n        default=None, description=\"JSONP callback function name\"\n    )\n    forecast: bool = Field(\n        default=False,\n        description=(\n            \"Include GFS and NWS NDFD (for CONUS requests) IEM \"\n            \"computed daily forecasts.\"\n        ),\n    )\n    sdate: date = Field(\n        ..., description=\"Start date for the data request, YYYY-MM-DD\"\n    )\n    edate: date = Field(\n        default=date.today() - timedelta(days=1),\n        description=\"Inclusive end date for the data request, YYYY-MM-DD\",\n    )\n    lat: LATITUDE_FIELD\n    lon: LONGITUDE_FIELD\n\n    @property\n    def i(self):\n        \"\"\"Return the i index.\"\"\"\n        return self._i\n\n    @property\n    def j(self):\n        \"\"\"Return the j index.\"\"\"\n        return self._j\n\n    @property\n    def domain(self):\n        \"\"\"Return the model name.\"\"\"\n        return self._domain\n\n    @property\n    def gid(self):\n        \"\"\"Return the gid.\"\"\"\n        return self._gid\n\n    @model_validator(mode=\"after\")\n    def ensure_domain(self):\n        \"\"\"Ensure the point is within a domain.\"\"\"\n        domain = get_domain(self.lon, self.lat)\n        if domain is None:\n            raise ValueError(\"Point is outside all IEMRE domains\")\n        self._domain = domain\n        self._gid = get_gid(self.lon, self.lat, domain)\n        self._i, self._j = get_nav(\"iemre\", domain).find_ij(self.lon, self.lat)\n        return self\n\n\ndef get_iemre(\n    conn: Connection, ts1: date, ts2: date, model: Schema\n) -> pd.DataFrame:\n    \"\"\"Get IEMRE data from the database.\"\"\"\n    df = pd.read_sql(\n        sql_helper(\"\"\"\n    select *,\n    to_char(valid, 'YYYY-MM-DD') as date,\n    null as climate_daily_high_f,\n    null as climate_daily_low_f,\n    null as climate_daily_precip_in,\n    null as mrms_precip_in,\n    null as prism_precip_in,\n    null as avg_dewpoint_f\n    from iemre_daily\n    where gid = :gid and valid >= :sdate and valid <= :edate ORDER by valid asc\n        \"\"\"),\n        conn,\n        params={\"gid\": model.gid, \"sdate\": ts1, \"edate\": ts2},\n        index_col=\"valid\",\n    )\n\n    # Convert numeric columns with NULLs from object dtype to float64 with\n    # np.nan\n    numeric_columns = [\n        \"high_tmpk\",\n        \"low_tmpk\",\n        \"high_tmpk_12z\",\n        \"low_tmpk_12z\",\n        \"avg_dwpk\",\n        \"high_soil4t\",\n        \"low_soil4t\",\n        \"p01d\",\n        \"p01d_12z\",\n        \"rsds\",\n        \"climate_daily_high_f\",\n        \"climate_daily_low_f\",\n        \"climate_daily_precip_in\",\n        \"mrms_precip_in\",\n        \"prism_precip_in\",\n        \"avg_dewpoint_f\",\n    ]\n\n    for col in numeric_columns:\n        if col in df.columns and df[col].dtype == \"object\":\n            df[col] = pd.to_numeric(df[col], errors=\"coerce\")\n\n    return df\n\n\ndef add_forecast(res: dict, model: Schema):\n    \"\"\"Include forecast info into res.\"\"\"\n    for fxmodel in [\"gfs\", \"ndfd\"]:\n        if fxmodel == \"ndfd\" and model.domain != \"conus\":\n            continue\n        res[f\"{fxmodel}_forecast\"] = []\n        extra = \"\" if model.domain == \"conus\" else f\"_{model.domain}\"\n        ncfn = f\"/mesonet/data/iemre{extra}/{fxmodel}_current.nc\"\n        if not Path(ncfn).exists():\n            continue\n        with ncopen(ncfn) as nc:\n            taxis = compute_taxis(nc.variables[\"time\"])\n            highs = convert_value(\n                nc.variables[\"high_tmpk\"][:, model.j, model.i],\n                \"degK\",\n                \"degF\",\n            )\n            lows = convert_value(\n                nc.variables[\"low_tmpk\"][:, model.j, model.i],\n                \"degK\",\n                \"degF\",\n            )\n            for t, h, lo in zip(taxis, highs, lows, strict=True):\n                res[f\"{fxmodel}_forecast\"].append(\n                    {\"date\": f\"{t:%Y-%m-%d}\", \"high_f\": h, \"low_f\": lo}\n                )\n\n\ndef get_mckey(environ: dict):\n    \"\"\"Figure out the memcache key.\"\"\"\n    model: Schema = environ[\"_cgimodel_schema\"]\n    return (\n        f\"iemre/multiday/{model.domain}/{environ['sdate']:%Y%m%d}\"\n        f\"/{environ['edate']:%Y%m%d}/{model.i}/{model.j}\"\n        f\"/{environ['forecast']}\"\n    )\n\n\n@iemapp(\n    help=__doc__,\n    content_type=\"application/json\",\n    schema=Schema,\n    memcachekey=get_mckey,\n    memcacheexpire=3600,\n)\ndef application(environ: dict, start_response):\n    \"\"\"Go Main Go\"\"\"\n    begin_ts = utc()\n    model: Schema = environ[\"_cgimodel_schema\"]\n    ts1: date = environ[\"sdate\"]\n    ts2: date = environ[\"edate\"]\n    if ts1 > ts2:\n        (ts1, ts2) = (ts2, ts1)\n\n    is_single_year = ts1.year == ts2.year\n\n    res = {\n        \"generated_at\": utc().strftime(ISO8601),\n        \"iemre_domain\": model.domain,\n        \"iemre_i\": model.i,\n        \"iemre_j\": model.j,\n        \"data\": [],\n        \"timing_seconds\": 0,\n    }\n\n    extra = \"\" if model.domain == \"conus\" else f\"_{model.domain}\"\n    with get_sqlalchemy_conn(f\"iemre{extra}\") as conn:\n        iemredf = get_iemre(conn, ts1, ts2, model)\n\n    if iemredf.empty:\n        res[\"timing_seconds\"] = (utc() - begin_ts).total_seconds()\n        start_response(\"200 OK\", [(\"Content-type\", \"application/json\")])\n        return [json.dumps(res, cls=NumpyEncoder).encode(\"ascii\")]\n\n    # Ensure our arrays align, I hope\n    tslice = None\n    if is_single_year:\n        offset1 = daily_offset(iemredf.index[0])\n        offset2 = daily_offset(iemredf.index[-1]) + 1\n        tslice = slice(offset1, offset2)\n\n    iemredf[\"daily_high_f\"] = convert_value(\n        iemredf[\"high_tmpk\"].to_numpy(), \"degK\", \"degF\"\n    )\n    iemredf[\"12z_high_f\"] = convert_value(\n        iemredf[\"high_tmpk_12z\"].to_numpy(), \"degK\", \"degF\"\n    )\n    iemredf[\"daily_low_f\"] = convert_value(\n        iemredf[\"low_tmpk\"].to_numpy(), \"degK\", \"degF\"\n    )\n    iemredf[\"12z_low_f\"] = convert_value(\n        iemredf[\"low_tmpk_12z\"].to_numpy(), \"degK\", \"degF\"\n    )\n    iemredf[\"avg_dewpoint_f\"] = convert_value(\n        iemredf[\"avg_dwpk\"].to_numpy(), \"degK\", \"degF\"\n    )\n    iemredf[\"soil4t_high_f\"] = convert_value(\n        iemredf[\"high_soil4t\"].to_numpy(), \"degK\", \"degF\"\n    )\n    iemredf[\"soil4t_low_f\"] = convert_value(\n        iemredf[\"low_soil4t\"].to_numpy(), \"degK\", \"degF\"\n    )\n    iemredf[\"daily_precip_in\"] = convert_value(\n        iemredf[\"p01d\"].to_numpy(), \"mm\", \"in\"\n    )\n    iemredf[\"12z_precip_in\"] = convert_value(\n        iemredf[\"p01d_12z\"].to_numpy(),\n        \"mm\",\n        \"in\",\n    )\n    iemredf[\"solar_mj\"] = iemredf[\"rsds\"].to_numpy() / 1e6 * 86400.0\n\n    # Get our climatology vars\n    ncfn = Path(get_dailyc_ncname(domain=model.domain))\n    if ncfn.exists():\n        with ncopen(ncfn) as cnc:\n            chigh = convert_value(\n                cnc.variables[\"high_tmpk\"][:, model.j, model.i],\n                \"degK\",\n                \"degF\",\n            )\n            clow = convert_value(\n                cnc.variables[\"low_tmpk\"][:, model.j, model.i],\n                \"degK\",\n                \"degF\",\n            )\n            cprecip = convert_value(\n                cnc.variables[\"p01d\"][:, model.j, model.i], \"mm\", \"in\"\n            )\n            for dt in iemredf.index:\n                doy = dt.timetuple().tm_yday - 1\n                iemredf.at[dt, \"climate_daily_high_f\"] = chigh[doy]\n                iemredf.at[dt, \"climate_daily_low_f\"] = clow[doy]\n                iemredf.at[dt, \"climate_daily_precip_in\"] = cprecip[doy]\n\n    if is_single_year and ts1.year > 1980 and model.domain == \"conus\":\n        i2, j2 = get_nav(\"prism\").find_ij(environ[\"lon\"], environ[\"lat\"])\n        if i2 is not None and j2 is not None:\n            res[\"prism_grid_i\"] = i2\n            res[\"prism_grid_j\"] = j2\n            ncfn = Path(f\"/mesonet/data/prism/{ts1.year}_daily.nc\")\n            if ncfn.exists():\n                with ncopen(ncfn) as nc:\n                    iemredf[\"prism_precip_in\"] = convert_value(\n                        nc.variables[\"ppt\"][tslice, j2, i2], \"mm\", \"in\"\n                    )\n\n    if is_single_year and ts1.year > 2000 and model.domain == \"conus\":\n        i2, j2 = get_nav(\"mrms_iemre\").find_ij(environ[\"lon\"], environ[\"lat\"])\n        res[\"mrms_iemre_grid_i\"] = i2\n        res[\"mrms_iemre_grid_j\"] = j2\n        ncfn = Path(get_daily_mrms_ncname(ts1.year))\n        if ncfn.exists():\n            with ncopen(ncfn) as nc:\n                iemredf[\"mrms_precip_in\"] = convert_value(\n                    nc.variables[\"p01d\"][tslice, j2, i2], \"mm\", \"in\"\n                )\n\n    cols = (\n        \"date mrms_precip_in prism_precip_in daily_high_f 12z_high_f \"\n        \"climate_daily_high_f daily_low_f 12z_low_f avg_dewpoint_f \"\n        \"soil4t_high_f soil4t_low_f climate_daily_low_f daily_precip_in \"\n        \"12z_precip_in climate_daily_precip_in solar_mj\"\n    ).split()\n\n    res[\"data\"] = iemredf[cols].to_dict(orient=\"records\")\n    if environ[\"forecast\"]:\n        add_forecast(res, model)\n\n    res[\"timing_seconds\"] = (utc() - begin_ts).total_seconds()\n    start_response(\"200 OK\", [(\"Content-type\", \"application/json\")])\n    return json.dumps(res, cls=NumpyEncoder).encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/json/cf6.py",
    "content": "\"\"\".. title:: NWS CF6 JSON Service\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/cf6.py\n------------------------------\n\nThis service emits atomic parsed data from the NWS CF6 product.\n\nChangelog\n---------\n\n- 2024-08-14: Documentation update\n\nExample Requests\n----------------\n\nGet all daily climate data for Des Moines, IA during 2024\n\nhttps://mesonet.agron.iastate.edu/json/cf6.py?station=KDSM&year=2024\n\n\"\"\"\n\nfrom datetime import date\nfrom typing import Annotated\n\nimport simplejson as json\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import get_ct, json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    fmt: Annotated[\n        str,\n        Field(\n            description=\"The format of the output, either csv or json\",\n            pattern=\"^(json|csv)$\",\n        ),\n    ] = \"json\"\n    station: Annotated[\n        str,\n        Field(\n            description=\"The station identifier\",\n            pattern=\"^[A-Z0-9]{4}$\",\n            max_length=4,\n            min_length=4,\n        ),\n    ] = \"KDSM\"\n    year: Annotated[int, Field(description=\"The year of interest\")] = 2019\n\n\ndef departure(ob, climo):\n    \"\"\"Compute a departure value\"\"\"\n    if ob is None or climo is None:\n        return \"M\"\n    return ob - climo\n\n\ndef int_sanitize(val):\n    \"\"\"convert to Ms\"\"\"\n    if val is None:\n        return \"M\"\n    return int(val)\n\n\ndef f1_sanitize(val):\n    \"\"\"convert to Ms\"\"\"\n    if val is None:\n        return \"M\"\n    if 0 < val < 0.005:\n        return \"T\"\n    return round(val, 1)\n\n\ndef f2_sanitize(val):\n    \"\"\"convert to Ms\"\"\"\n    if val is None:\n        return \"M\"\n    if 0 < val < 0.005:\n        return \"T\"\n    return round(val, 2)\n\n\ndef get_data(conn, station, year, fmt):\n    \"\"\"Get the data for this timestamp\"\"\"\n    data = json_response_dict({\"results\": []})\n    # Fetch the daily values\n    res = conn.execute(\n        sql_helper(\"\"\"\n        select station, name, product, state, wfo, valid,\n        round(st_x(geom)::numeric, 4)::float as st_x,\n        round(st_y(geom)::numeric, 4)::float as st_y,\n        high, low, avg_temp, dep_temp, hdd, cdd, precip, snow, snowd_12z,\n        avg_smph, max_smph, avg_drct, minutes_sunshine, possible_sunshine,\n        cloud_ss, wxcodes, gust_smph, gust_drct\n        from cf6_data c JOIN stations s on (c.station = s.id)\n        WHERE s.network = 'NWSCLI' and c.station = :station\n        and c.valid >= :sts and c.valid <= :ets\n        ORDER by c.valid ASC\n    \"\"\"),\n        {\n            \"station\": station,\n            \"sts\": date(year, 1, 1),\n            \"ets\": date(year, 12, 31),\n        },\n    )\n    for row in res.mappings():\n        data[\"results\"].append(\n            {\n                \"station\": row[\"station\"],\n                \"valid\": row[\"valid\"].strftime(\"%Y-%m-%d\"),\n                \"state\": row[\"state\"],\n                \"wfo\": row[\"wfo\"],\n                \"link\": f\"/api/1/nwstext/{row['product']}\",\n                \"product\": row[\"product\"],\n                \"name\": row[\"name\"],\n                \"high\": int_sanitize(row[\"high\"]),\n                \"low\": int_sanitize(row[\"low\"]),\n                \"avg_temp\": f1_sanitize(row[\"avg_temp\"]),\n                \"dep_temp\": f1_sanitize(row[\"dep_temp\"]),\n                \"hdd\": int_sanitize(row[\"hdd\"]),\n                \"cdd\": int_sanitize(row[\"cdd\"]),\n                \"precip\": f2_sanitize(row[\"precip\"]),\n                \"snow\": f1_sanitize(row[\"snow\"]),\n                \"snowd_12z\": f1_sanitize(row[\"snowd_12z\"]),\n                \"avg_smph\": f1_sanitize(row[\"avg_smph\"]),\n                \"max_smph\": f1_sanitize(row[\"max_smph\"]),\n                \"avg_drct\": int_sanitize(row[\"avg_drct\"]),\n                \"minutes_sunshine\": int_sanitize(row[\"minutes_sunshine\"]),\n                \"possible_sunshine\": int_sanitize(row[\"possible_sunshine\"]),\n                \"cloud_ss\": f1_sanitize(row[\"cloud_ss\"]),\n                \"wxcodes\": row[\"wxcodes\"],\n                \"gust_smph\": f1_sanitize(row[\"gust_smph\"]),\n                \"gust_drct\": int_sanitize(row[\"gust_drct\"]),\n            }\n        )\n    if fmt == \"json\":\n        return json.dumps(data)\n    cols = (\n        \"station,valid,name,state,wfo,high,low,avg_temp,dep_temp,hdd,cdd,\"\n        \"precip,snow,snowd_12z,avg_smph,max_smph,avg_drct,minutes_sunshine,\"\n        \"possible_sunshine,cloud_ss,wxcodes,gust_smph,gust_drct\"\n    )\n    res = cols + \"\\n\"\n    for feat in data[\"results\"]:\n        for col in cols.split(\",\"):\n            val = feat[col]\n            if isinstance(val, list | tuple):\n                res += f\"{' '.join([str(s) for s in val])},\"\n            else:\n                res += f\"{val},\"\n        res += \"\\n\"\n    return res\n\n\ndef get_mckey(environ):\n    \"\"\"Generate the memcache key\"\"\"\n    return f\"/json/cf6/{environ['station']}/{environ['year']}/{environ['fmt']}\"\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=get_mckey,\n    memcacheexpire=60,\n    content_type=get_ct,\n)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    station = environ[\"station\"]\n    year = environ[\"year\"]\n\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        res = get_data(conn, station, year, environ[\"fmt\"])\n    headers = [(\"Content-type\", get_ct(environ))]\n    start_response(\"200 OK\", headers)\n    return res\n"
  },
  {
    "path": "pylib/iemweb/json/cli.py",
    "content": "\"\"\".. title:: NWS Daily CLImate Data\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/cli.py\n------------------------------\n\nThis service returns atomic daily climate data found in the NWS CLI text\nproducts.\n\nChangelog\n---------\n\n- 2025-01-30: Corrected bug in station validation\n- 2024-08-14: Documentation update\n\nExample Requests\n----------------\n\nGet all daily climate data for Des Moines, IA during 2024\n\nhttps://mesonet.agron.iastate.edu/json/cli.py?station=KDSM&year=2024&\\\ncallback=gotData\n\n\"\"\"\n\nfrom datetime import date\nfrom typing import Annotated\n\nimport simplejson as json\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.webutil import CGIModel, iemapp\nfrom simplejson import encoder\n\nfrom iemweb.fields import CALLBACK_FIELD, YEAR_FIELD\nfrom iemweb.util import get_ct, json_response_dict\n\nencoder.FLOAT_REPR = lambda o: format(o, \".2f\")\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    fmt: Annotated[\n        str, Field(description=\"The format of the output, either json or csv\")\n    ] = \"json\"\n    station: Annotated[\n        str,\n        Field(\n            description=\"The 4 character station identifier to query for\",\n            max_length=4,\n            pattern=\"^[A-Z0-9]{4}$\",\n        ),\n    ] = \"KDSM\"\n    year: YEAR_FIELD = 2019\n\n\ndef departure(ob, climo):\n    \"\"\"Compute a departure value\"\"\"\n    if ob is None or climo is None:\n        return \"M\"\n    return ob - climo\n\n\ndef int_sanitize(val):\n    \"\"\"convert to Ms\"\"\"\n    if val is None:\n        return \"M\"\n    return int(val)\n\n\ndef f1_sanitize(val):\n    \"\"\"convert to Ms\"\"\"\n    if val is None:\n        return \"M\"\n    if 0 < val < 0.005:\n        return \"T\"\n    return round(val, 1)\n\n\ndef f2_sanitize(val):\n    \"\"\"convert to Ms\"\"\"\n    if val is None:\n        return \"M\"\n    if 0 < val < 0.005:\n        return \"T\"\n    return round(val, 2)\n\n\ndef get_data(conn, station, year, fmt):\n    \"\"\"Get the data for this timestamp\"\"\"\n    data = json_response_dict({\"results\": []})\n    # Fetch the daily values\n    res = conn.execute(\n        sql_helper(\"\"\"\n        select station, name, product, state, wfo, valid,\n        round(st_x(geom)::numeric, 4)::float as st_x,\n        round(st_y(geom)::numeric, 4)::float as st_y,\n        high, high_normal, high_record, high_record_years, high_time,\n        low, low_normal, low_record, low_record_years, low_time,\n        precip, precip_month, precip_jan1, precip_jan1_normal,\n        precip_jul1, precip_dec1, precip_dec1_normal, precip_record,\n        precip_record_years, precip_normal, snow_normal,\n        precip_month_normal, snow, snow_month, snow_jun1, snow_jul1,\n        snow_dec1, snow_record, snow_jul1_normal, snow_record_years,\n        snow_dec1_normal, snow_month_normal, precip_jun1, precip_jun1_normal,\n        round(((case when snow_jul1 < 0.1 then 0 else snow_jul1 end)\n            - snow_jul1_normal)::numeric, 2) as snow_jul1_depart,\n        average_sky_cover,\n        resultant_wind_speed, resultant_wind_direction,\n        highest_wind_speed, highest_wind_direction,\n        highest_gust_speed, highest_gust_direction,\n        average_wind_speed, snowdepth\n        from cli_data c JOIN stations s on (c.station = s.id)\n        WHERE s.network = 'NWSCLI' and c.station = :station\n        and c.valid >= :sts and c.valid <= :ets\n        ORDER by c.valid ASC\n    \"\"\"),\n        {\n            \"station\": station,\n            \"sts\": date(year, 1, 1),\n            \"ets\": date(year, 12, 31),\n        },\n    )\n    for row in res.mappings():\n        data[\"results\"].append(\n            {\n                \"station\": row[\"station\"],\n                \"valid\": row[\"valid\"].strftime(\"%Y-%m-%d\"),\n                \"state\": row[\"state\"],\n                \"wfo\": row[\"wfo\"],\n                \"link\": f\"/api/1/nwstext/{row['product']}\",\n                \"product\": row[\"product\"],\n                \"name\": row[\"name\"],\n                \"high\": int_sanitize(row[\"high\"]),\n                \"high_record\": int_sanitize(row[\"high_record\"]),\n                \"high_record_years\": row[\"high_record_years\"],\n                \"high_normal\": int_sanitize(row[\"high_normal\"]),\n                \"high_depart\": departure(row[\"high\"], row[\"high_normal\"]),\n                \"high_time\": row[\"high_time\"],\n                \"low\": int_sanitize(row[\"low\"]),\n                \"low_record\": int_sanitize(row[\"low_record\"]),\n                \"low_record_years\": row[\"low_record_years\"],\n                \"low_normal\": int_sanitize(row[\"low_normal\"]),\n                \"low_depart\": departure(row[\"low\"], row[\"low_normal\"]),\n                \"low_time\": row[\"low_time\"],\n                \"precip\": f2_sanitize(row[\"precip\"]),\n                \"precip_normal\": f2_sanitize(row[\"precip_normal\"]),\n                \"precip_month\": f2_sanitize(row[\"precip_month\"]),\n                \"precip_month_normal\": f2_sanitize(row[\"precip_month_normal\"]),\n                \"precip_jan1\": f2_sanitize(row[\"precip_jan1\"]),\n                \"precip_jan1_normal\": f2_sanitize(row[\"precip_jan1_normal\"]),\n                \"precip_jun1\": f2_sanitize(row[\"precip_jun1\"]),\n                \"precip_jun1_normal\": f2_sanitize(row[\"precip_jun1_normal\"]),\n                \"precip_jul1\": f2_sanitize(row[\"precip_jul1\"]),\n                \"precip_dec1\": f2_sanitize(row[\"precip_dec1\"]),\n                \"precip_dec1_normal\": f2_sanitize(row[\"precip_dec1_normal\"]),\n                \"precip_record\": f2_sanitize(row[\"precip_record\"]),\n                \"precip_record_years\": row[\"precip_record_years\"],\n                \"snow\": f1_sanitize(row[\"snow\"]),\n                \"snowdepth\": f1_sanitize(row[\"snowdepth\"]),\n                \"snow_normal\": f1_sanitize(row[\"snow_normal\"]),\n                \"snow_month\": f1_sanitize(row[\"snow_month\"]),\n                \"snow_jun1\": f1_sanitize(row[\"snow_jun1\"]),\n                \"snow_jul1\": f1_sanitize(row[\"snow_jul1\"]),\n                \"snow_dec1\": f1_sanitize(row[\"snow_dec1\"]),\n                \"snow_record\": f1_sanitize(row[\"snow_record\"]),\n                \"snow_record_years\": row[\"snow_record_years\"],\n                \"snow_jul1_normal\": f1_sanitize(row[\"snow_jul1_normal\"]),\n                \"snow_jul1_depart\": f1_sanitize(row[\"snow_jul1_depart\"]),\n                \"snow_dec1_normal\": f1_sanitize(row[\"snow_dec1_normal\"]),\n                \"snow_month_normal\": f1_sanitize(row[\"snow_month_normal\"]),\n                \"average_sky_cover\": f1_sanitize(row[\"average_sky_cover\"]),\n                \"resultant_wind_speed\": f1_sanitize(\n                    row[\"resultant_wind_speed\"]\n                ),\n                \"resultant_wind_direction\": int_sanitize(\n                    row[\"resultant_wind_direction\"]\n                ),\n                \"highest_wind_speed\": int_sanitize(row[\"highest_wind_speed\"]),\n                \"highest_wind_direction\": int_sanitize(\n                    row[\"highest_wind_direction\"]\n                ),\n                \"highest_gust_speed\": int_sanitize(row[\"highest_gust_speed\"]),\n                \"highest_gust_direction\": int_sanitize(\n                    row[\"highest_gust_direction\"]\n                ),\n                \"average_wind_speed\": f1_sanitize(row[\"average_wind_speed\"]),\n            }\n        )\n    if fmt == \"json\":\n        return json.dumps(data)\n    cols = (\n        \"station,valid,name,state,wfo,high,high_record,high_record_years,\"\n        \"high_normal,high_time,low,low_record,low_record_years,low_normal,\"\n        \"low_time,precip,precip_normal,precip_month,precip_jan1,\"\n        \"precip_jan1_normal,precip_jul1,precip_dec1,precip_dec1_normal,\"\n        \"precip_record,precip_record_years,\"\n        \"snow,snowdepth,snow_normal,snow_month,snow_jun1,snow_jul1,snow_dec1,\"\n        \"snow_record,snow_record_years,snow_jul1_normal,snow_dec1_normal,\"\n        \"snow_month_normal,snow_jul1_depart,average_sky_cover\"\n    )\n    res = cols + \"\\n\"\n    for feat in data[\"results\"]:\n        for col in cols.split(\",\"):\n            val = feat[col]\n            if isinstance(val, list | tuple):\n                res += f\"{' '.join([str(s) for s in val])},\"\n            else:\n                res += f\"{val},\"\n        res += \"\\n\"\n    return res\n\n\ndef get_mckey(environ: dict):\n    \"\"\"Get the memcache key.\"\"\"\n    return f\"/json/cli/{environ['station']}/{environ['year']}/{environ['fmt']}\"\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    content_type=get_ct,\n    memcachekey=get_mckey,\n    memcacheexpire=300,\n)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    station = environ[\"station\"]\n    year = environ[\"year\"]\n    fmt = environ[\"fmt\"]\n\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        data = get_data(conn, station, year, fmt)\n    headers = [(\"Content-type\", get_ct(environ))]\n    start_response(\"200 OK\", headers)\n    return data.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/cli_audit.py",
    "content": "\"\"\".. title:: Audit of NWS CLI Data\n\nReturn to `API Services </api/#json>`_ or the\n`User Frontend </nws/cli-audit/>_`\n\nDocumentation for /json/cli_audit.py\n------------------------------------\n\nThis app intends to show how the sausage gets made for daily high and low\ntemperature reports from the major ASOS sites.\n\nChangelog\n---------\n\n- 2026-02-26: Updates to hopefully have full closure over potential changes\n  found with subsequent CLI and CF6 updates.  Previously, a 144 hour forward\n  time window was assumed.\n- 2026-02-25: Initial implementation\n\nExample Requests\n----------------\n\nAudit CLI for Des Moines on 25 Feb 2024\n\nhttps://mesonet.agron.iastate.edu/json/cli_audit.py\\\n?station=KDSM&date=2024-02-25\n\n\"\"\"\n\nfrom datetime import date as dateobj\nfrom datetime import datetime, timedelta\nfrom math import isfinite\nfrom typing import Annotated\nfrom zoneinfo import ZoneInfo\n\nimport simplejson as json\nfrom pydantic import BaseModel, Field\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.nws.products.cf6 import parser as cf6_parser\nfrom pyiem.nws.products.cli import parser as cli_parser\nfrom pyiem.nws.products.dsm import parser as dsm_parser\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\nfrom simplejson import encoder\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb import error_log\nfrom iemweb.util import get_ct, json_response_dict\n\nencoder.FLOAT_REPR = lambda o: format(o, \".2f\")\n\n\nclass Event(BaseModel):\n    \"\"\"Events that our logic generates and later materialized to response.\"\"\"\n\n    varname: Annotated[str, Field(description=\"The variable name\")]\n    source: Annotated[str, Field(description=\"Source of Event\")]\n    value: Annotated[\n        float,\n        Field(\n            description=\"The value of the event\",\n            allow_inf_nan=False,\n        ),\n    ]\n    utc_valid: Annotated[\n        datetime, Field(description=\"The UTC valid time of the event\")\n    ]\n    local_valid: Annotated[\n        datetime, Field(description=\"The local valid time of the event\")\n    ]\n    description: Annotated[\n        str, Field(description=\"A human readable description of the event\")\n    ]\n    link: Annotated[str, Field(\"Web Resource\")]\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    station: Annotated[\n        str,\n        Field(\n            description=\"The 4 character station identifier to query for\",\n            max_length=4,\n            pattern=\"^[A-Z0-9]{4}$\",\n        ),\n    ] = \"KDSM\"\n    date: Annotated[dateobj, Field(description=\"The date of interest\")]\n\n\ndef as_finite_float(value) -> float | None:\n    \"\"\"Convert value into finite float, return None when unavailable.\"\"\"\n    if value in (None, \"M\"):\n        return None\n    try:\n        fvalue = float(value)\n    except (TypeError, ValueError):\n        return None\n    return fvalue if isfinite(fvalue) else None\n\n\n@with_sqlalchemy_conn(\"iem\")\ndef find_last_product(\n    station: str,\n    dt: dateobj,\n    table: str,\n    conn: Connection | None = None,\n) -> str | None:\n    \"\"\"Figure out the last product ID for the given type.\"\"\"\n    res = conn.execute(\n        sql_helper(\n            \"\"\"\n        select product from {table} where valid = :valid and station = :station\n                                  \"\"\",\n            table=table,\n        ),\n        {\"valid\": dt, \"station\": station},\n    )\n    if res.rowcount == 0:\n        return None\n    return res.fetchone()[0]\n\n\n@with_sqlalchemy_conn(\"asos\")\ndef add_metar_events(\n    events: list[Event],\n    station: str,\n    dt: dateobj,\n    tzinfo: ZoneInfo,\n    conn: Connection | None = None,\n):\n    \"\"\"Compute events and add to the events list.\"\"\"\n    dbstation = (\n        station.removeprefix(\"K\") if station.startswith(\"K\") else station\n    )\n    # This is tricky. We need a period from 11:50 PM Standard (no DST)\n    # Till midnight standard the next day\n    midnight_local = datetime(dt.year, dt.month, dt.day, tzinfo=tzinfo)\n    if midnight_local.dst() != timedelta(0):\n        # We are in DST, so we need to shift back an hour\n        midnight_local = midnight_local - timedelta(hours=1)\n    sts = midnight_local - timedelta(minutes=10)\n    # Jump well into the next day and then set back to midnight\n    ets = (midnight_local + timedelta(hours=26)).replace(hour=0, minute=0)\n    res = conn.execute(\n        sql_helper(\"\"\"\n        select valid at time zone 'UTC' as utc_valid, tmpf, max_tmpf_6hr,\n        min_tmpf_6hr, metar from alldata where\n        station = :station and valid >= :sts and valid < :ets and\n        report_type in (3, 4) order by valid asc\n                                  \"\"\"),\n        {\n            \"station\": dbstation,\n            \"sts\": sts,\n            \"ets\": ets,\n        },\n    )\n    running_high = -999\n    running_low = 999\n    for row in res.mappings():\n        tmpf = as_finite_float(row[\"tmpf\"])\n        max_tmpf_6hr = as_finite_float(row[\"max_tmpf_6hr\"])\n        min_tmpf_6hr = as_finite_float(row[\"min_tmpf_6hr\"])\n        utc_valid = row[\"utc_valid\"].replace(tzinfo=ZoneInfo(\"UTC\"))\n        local_valid = utc_valid.astimezone(tzinfo)\n        offset = local_valid - sts\n        if (\n            max_tmpf_6hr is not None\n            and offset > timedelta(hours=3)\n            and max_tmpf_6hr > running_high\n        ):\n            events.append(\n                Event(\n                    source=\"METAR max 6hr\",\n                    varname=\"high\",\n                    value=max_tmpf_6hr,\n                    utc_valid=utc_valid,\n                    local_valid=local_valid,\n                    description=f\"{row['metar']}\",\n                    link=\"\",\n                )\n            )\n            running_high = max_tmpf_6hr\n        if (\n            min_tmpf_6hr is not None\n            and offset > timedelta(hours=3)\n            and min_tmpf_6hr < running_low\n        ):\n            events.append(\n                Event(\n                    varname=\"low\",\n                    source=\"METAR min 6hr\",\n                    value=min_tmpf_6hr,\n                    utc_valid=utc_valid,\n                    local_valid=local_valid,\n                    description=f\"{row['metar']}\",\n                    link=\"\",\n                )\n            )\n            running_low = min_tmpf_6hr\n        if tmpf is not None:\n            if tmpf > running_high:\n                events.append(\n                    Event(\n                        varname=\"high\",\n                        source=\"METAR\",\n                        value=tmpf,\n                        utc_valid=utc_valid,\n                        local_valid=local_valid,\n                        description=row[\"metar\"],\n                        link=\"\",\n                    )\n                )\n                running_high = tmpf\n            if tmpf < running_low:\n                events.append(\n                    Event(\n                        varname=\"low\",\n                        source=\"METAR\",\n                        value=tmpf,\n                        utc_valid=utc_valid,\n                        local_valid=local_valid,\n                        description=row[\"metar\"],\n                        link=\"\",\n                    )\n                )\n                running_low = tmpf\n\n\n@with_sqlalchemy_conn(\"mesosite\")\ndef get_timezone(station: str, conn: Connection | None = None):\n    \"\"\"Figure out something simple.\"\"\"\n    dbstation = (\n        station.removeprefix(\"K\") if station.startswith(\"K\") else station\n    )\n\n    res = conn.execute(\n        sql_helper(\"\"\"\n        SELECT tzname from stations where id = :station and network ~* 'ASOS'\n                                  \"\"\"),\n        {\"station\": dbstation},\n    )\n    row = res.fetchone()\n    if row is None:\n        return \"America/Chicago\"\n    return row[0]\n\n\n@with_sqlalchemy_conn(\"afos\")\ndef add_dsm_events(\n    events: list[Event],\n    environ: dict,\n    station: str,\n    dt: dateobj,\n    tzinfo: ZoneInfo,\n    conn: Connection | None = None,\n):\n    \"\"\"We now process DSMs\"\"\"\n    sts = utc(dt.year, dt.month, dt.day)\n    ets = sts + timedelta(hours=48)  # meh?\n    res = conn.execute(\n        sql_helper(\"\"\"\n        select entered at time zone 'UTC' as utc_entered, data, wmo, source,\n        pil\n        from products where\n        entered > :sts and entered < :ets and pil = :pil\n        order by entered asc\n                                  \"\"\"),\n        {\n            \"sts\": sts,\n            \"ets\": ets,\n            \"pil\": f\"DSM{station[1:]}\",\n        },\n    )\n    for row in res.mappings():\n        # Ugly, we need to convert this into a full noaaport product\n        text = f\"\"\"000\n{row[\"wmo\"]} {row[\"source\"]} {row[\"utc_entered\"]:%d%H%M}\n{row[\"pil\"]}\n{row[\"data\"]}\n\"\"\"\n        try:\n            utc_valid = row[\"utc_entered\"].replace(tzinfo=ZoneInfo(\"UTC\"))\n            local_valid = utc_valid.astimezone(tzinfo)\n            dsm = dsm_parser(\n                text,\n                utcnow=utc_valid,\n                ugc_provider={},\n            )\n            for dsmprod in dsm.data:\n                if dsmprod.date != dt or dsmprod.station != station:\n                    continue\n                high = dsmprod.groupdict.get(\"high\")\n                low = dsmprod.groupdict.get(\"low\")\n                high_value = as_finite_float(high)\n                low_value = as_finite_float(low)\n                clean_text = (\n                    row[\"data\"]\n                    .encode(\"ascii\", errors=\"ignore\")\n                    .decode(\"ascii\")\n                )\n                if high_value is not None:\n                    events.append(\n                        Event(\n                            varname=\"high\",\n                            source=\"DSM\",\n                            value=high_value,\n                            utc_valid=utc_valid,\n                            local_valid=local_valid,\n                            description=clean_text,\n                            link=(\n                                \"https://mesonet.agron.iastate.edu/\"\n                                f\"p.php?pid={dsm.get_product_id()}\"\n                            ),\n                        )\n                    )\n                if low_value is not None:\n                    events.append(\n                        Event(\n                            varname=\"low\",\n                            source=\"DSM\",\n                            value=low_value,\n                            utc_valid=utc_valid,\n                            local_valid=local_valid,\n                            description=clean_text,\n                            link=(\n                                \"https://mesonet.agron.iastate.edu/\"\n                                f\"p.php?pid={dsm.get_product_id()}\"\n                            ),\n                        )\n                    )\n\n        except Exception as exp:\n            error_log(environ, exp)\n            continue\n\n\n@with_sqlalchemy_conn(\"afos\")\ndef add_cli_events(\n    events: list[Event],\n    environ: dict,\n    station: str,\n    dt: dateobj,\n    tzinfo: ZoneInfo,\n    conn: Connection | None = None,\n):\n    \"\"\"We now process CLI events\"\"\"\n    last_cli = find_last_product(station, dt, \"cli_data\")\n    if last_cli is None:\n        return\n    sts = utc(dt.year, dt.month, dt.day)\n    ets = datetime.strptime(last_cli[:12], \"%Y%m%d%H%M\").replace(\n        tzinfo=ZoneInfo(\"UTC\")\n    ) + timedelta(minutes=1)\n    res = conn.execute(\n        sql_helper(\"\"\"\n        select entered at time zone 'UTC' as utc_entered, data\n        from products where\n        entered > :sts and entered < :ets and pil = :pil\n        order by entered asc\n                                  \"\"\"),\n        {\n            \"sts\": sts,\n            \"ets\": ets,\n            \"pil\": f\"CLI{station[1:]}\",\n        },\n    )\n    for row in res.mappings():\n        try:\n            cli = cli_parser(\n                row[\"data\"],\n                utcnow=row[\"utc_entered\"].replace(tzinfo=ZoneInfo(\"UTC\")),\n                ugc_provider={},\n            )\n            for entry in cli.data:\n                if entry[\"cli_valid\"] != dt or entry[\"db_station\"] != station:\n                    continue\n                high = entry[\"data\"].get(\"temperature_maximum\")\n                high_time = entry[\"data\"].get(\"temperature_maximum_time\")\n                low = entry[\"data\"].get(\"temperature_minimum\")\n                low_time = entry[\"data\"].get(\"temperature_minimum_time\")\n                high_value = as_finite_float(high)\n                low_value = as_finite_float(low)\n                if high_value is not None:\n                    events.append(\n                        Event(\n                            varname=\"high\",\n                            source=\"CLI\",\n                            value=high_value,\n                            utc_valid=cli.valid,\n                            local_valid=cli.valid.astimezone(tzinfo),\n                            description=f\"{high} at {high_time}\",\n                            link=(\n                                \"https://mesonet.agron.iastate.edu/\"\n                                f\"p.php?pid={cli.get_product_id()}\"\n                            ),\n                        )\n                    )\n                if low_value is not None:\n                    events.append(\n                        Event(\n                            varname=\"low\",\n                            source=\"CLI\",\n                            value=low_value,\n                            utc_valid=cli.valid,\n                            local_valid=cli.valid.astimezone(tzinfo),\n                            description=f\"{low} at {low_time}\",\n                            link=(\n                                \"https://mesonet.agron.iastate.edu/\"\n                                f\"p.php?pid={cli.get_product_id()}\"\n                            ),\n                        )\n                    )\n\n        except Exception as exp:\n            error_log(environ, exp)\n            continue\n\n\n@with_sqlalchemy_conn(\"afos\")\ndef add_cf6_events(\n    events: list[Event],\n    environ: dict,\n    station: str,\n    dt: dateobj,\n    tzinfo: ZoneInfo,\n    conn: Connection | None = None,\n):\n    \"\"\"We now process CLI events\"\"\"\n    last_cf6 = find_last_product(station, dt, \"cf6_data\")\n    if last_cf6 is None:\n        return\n    sts = utc(dt.year, dt.month, dt.day)\n    ets = datetime.strptime(last_cf6[:12], \"%Y%m%d%H%M\").replace(\n        tzinfo=ZoneInfo(\"UTC\")\n    ) + timedelta(minutes=1)\n    res = conn.execute(\n        sql_helper(\"\"\"\n        select entered at time zone 'UTC' as utc_entered, data\n        from products where\n        entered > :sts and entered < :ets and pil = :pil\n        order by entered asc\n                                  \"\"\"),\n        {\n            \"sts\": sts,\n            \"ets\": ets,\n            \"pil\": f\"CF6{station[1:]}\",\n        },\n    )\n    for row in res.mappings():\n        try:\n            cf6 = cf6_parser(\n                row[\"data\"],\n                utcnow=row[\"utc_entered\"].replace(tzinfo=ZoneInfo(\"UTC\")),\n                ugc_provider={},\n            )\n            for valid, entry in cf6.df.iterrows():\n                if valid != dt or cf6.station != station:\n                    continue\n                high = entry.get(\"max\")\n                low = entry.get(\"min\")\n                high_value = as_finite_float(high)\n                low_value = as_finite_float(low)\n                if high_value is not None:\n                    events.append(\n                        Event(\n                            varname=\"high\",\n                            source=\"CF6\",\n                            value=high_value,\n                            utc_valid=cf6.valid,\n                            local_valid=cf6.valid.astimezone(tzinfo),\n                            description=f\"{high}\",\n                            link=(\n                                \"https://mesonet.agron.iastate.edu/\"\n                                f\"p.php?pid={cf6.get_product_id()}\"\n                            ),\n                        )\n                    )\n                if low_value is not None:\n                    events.append(\n                        Event(\n                            varname=\"low\",\n                            source=\"CF6\",\n                            value=low_value,\n                            utc_valid=cf6.valid,\n                            local_valid=cf6.valid.astimezone(tzinfo),\n                            description=f\"{low}\",\n                            link=(\n                                \"https://mesonet.agron.iastate.edu/\"\n                                f\"p.php?pid={cf6.get_product_id()}\"\n                            ),\n                        )\n                    )\n\n        except Exception as exp:\n            error_log(environ, exp)\n            continue\n\n\ndef get_mckey(environ: dict):\n    \"\"\"Get the memcache key.\"\"\"\n    query: Schema = environ[\"_cgimodel_schema\"]\n    return f\"/json/cli_audit/{query.station}/{query.date}\"\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    content_type=get_ct,\n    memcachekey=get_mckey,\n    memcacheexpire=300,\n)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    query: Schema = environ[\"_cgimodel_schema\"]\n    # Create a dataframe to store events that we calculate, which then gets\n    # sorted and placed into the response objects\n    events: list[Event] = []\n    tzname = get_timezone(query.station)\n    tzinfo = ZoneInfo(tzname)\n    add_metar_events(events, query.station, query.date, tzinfo)\n    add_dsm_events(events, environ, query.station, query.date, tzinfo)\n    add_cli_events(events, environ, query.station, query.date, tzinfo)\n    add_cf6_events(events, environ, query.station, query.date, tzinfo)\n\n    high_events = [e for e in events if e.varname == \"high\"]\n    low_events = [e for e in events if e.varname == \"low\"]\n    high_events.sort(key=lambda x: x.utc_valid)\n    low_events.sort(key=lambda x: x.utc_valid)\n\n    response = json_response_dict(\n        {\n            \"station\": query.station,\n            \"date\": f\"{query.date:%Y-%m-%d}\",\n            \"tzname\": tzname,\n            \"high\": {\n                \"events\": [e.model_dump(mode=\"json\") for e in high_events],\n            },\n            \"low\": {\n                \"events\": [e.model_dump(mode=\"json\") for e in low_events],\n            },\n        }\n    )\n\n    headers = [(\"Content-type\", get_ct(environ))]\n    start_response(\"200 OK\", headers)\n    return json.dumps(response).encode(\"utf-8\")\n"
  },
  {
    "path": "pylib/iemweb/json/climodat_dd.py",
    "content": "\"\"\".. title:: Climodat Degree Days service with GFS/NDFD forecast\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/climodat_dd.py\n--------------------------------------\n\nThis service emits some degree day data along with forecast from the most\nrecent GFS and NDFD model runs.  Note that the model forecast data does not\nsupport archived usage.\n\nChangelog\n---------\n\n- 2024-08-10: Initial documentation release and pydantic validation\n\nExample Usage\n-------------\n\nGet the GDD data for Ames, Iowa from 2023-06-01 to 2023-06-10 with a base of\n50 and ceiling of 86 degrees Fahrenheit.\n\nhttps://mesonet.agron.iastate.edu/json/climodat_dd.py\\\n?station=IATAME&sdate=2023-06-01&edate=2023-06-10&gddbase=50&gddceil=86\n\n\"\"\"\n\nimport json\nimport os\nfrom datetime import date, datetime, timedelta\nfrom typing import Annotated\n\nimport numpy as np\nfrom metpy.units import units\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.meteorology import gdd as calc_gdd\nfrom pyiem.util import c2f, ncopen\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    edate: Annotated[\n        date,\n        Field(\n            description=\"The end date for the period of interest.\",\n        ),\n    ]\n    gddbase: Annotated[\n        int,\n        Field(\n            description=\"The base temperature for GDD computation.\",\n        ),\n    ] = 50\n    gddceil: Annotated[\n        int,\n        Field(\n            description=\"The ceiling temperature for GDD computation.\",\n        ),\n    ] = 86\n    sdate: Annotated[\n        date,\n        Field(\n            description=\"The start date for the period of interest.\",\n        ),\n    ]\n    station: Annotated[\n        str,\n        Field(\n            description=\"The station identifier to query.\",\n            max_length=6,\n            min_length=6,\n        ),\n    ]\n\n\ndef compute_taxis(ncvar):\n    \"\"\"Figure out our dates.\"\"\"\n    basets = datetime.strptime(ncvar.units[:21], \"Days since %Y-%m-%d\").date()\n    return [basets + timedelta(days=val) for val in ncvar[:]]\n\n\ndef compute(taxis, highs, lows, gddbase, gddceil):\n    \"\"\"Sensibly compute gdds.\"\"\"\n    res = []\n    total = 0\n    vals = calc_gdd(\n        units(\"degF\") * highs, units(\"degF\") * lows, gddbase, gddceil\n    )\n    for dt, val, high, low in zip(taxis, vals, highs, lows, strict=False):\n        if np.ma.is_masked(val):\n            continue\n        total += val\n        res.append(\n            {\"date\": f\"{dt:%Y-%m-%d}\", \"gdd\": val, \"high\": high, \"low\": low}\n        )\n    return res, total\n\n\ndef run(station, sdate, edate, gddbase, gddceil) -> dict:\n    \"\"\"Do something\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        res = conn.execute(\n            sql_helper(\"\"\"\n            WITH obs as (\n                select sum(gddxx(:gddbase, :gddceil, high, low)) from alldata\n                where station = :station and day >= :sdate and day <= :edate)\n            select o.sum, st_x(t.geom) as lon, st_y(t.geom) as lat\n            from obs o, stations t WHERE t.id = :station and sum is not null\n            \"\"\"),\n            {\n                \"station\": station,\n                \"sdate\": sdate,\n                \"edate\": edate,\n                \"gddbase\": gddbase,\n                \"gddceil\": gddceil,\n            },\n        )\n        if res.rowcount == 0:\n            raise IncompleteWebRequest(\"No Data Found.\")\n        accum, lon, lat = [float(x) for x in res.fetchone()]\n    data = json_response_dict(\n        {\n            \"station\": station,\n            \"sdate\": f\"{sdate:%Y-%m-%d}\",\n            \"edate\": f\"{edate:%Y-%m-%d}\",\n            \"gddbase\": gddbase,\n            \"gddceil\": gddceil,\n            \"accum\": accum,\n        }\n    )\n    idx, jdx = get_nav(\"IEMRE\", \"conus\").find_ij(lon, lat)\n    if idx is not None:\n        for model in [\"gfs\", \"ndfd\"]:\n            ncfn = f\"/mesonet/data/iemre/{model}_current.nc\"\n            if not os.path.isfile(ncfn):\n                continue\n            with ncopen(ncfn) as nc:\n                highs = c2f(nc.variables[\"high_tmpk\"][:, jdx, idx] - 273.15)\n                lows = c2f(nc.variables[\"low_tmpk\"][:, jdx, idx] - 273.15)\n                taxis = compute_taxis(nc.variables[\"time\"])\n                gdds, total = compute(taxis, highs, lows, gddbase, gddceil)\n                if gdds:\n                    data[model] = gdds\n                    data[f\"{model}_accum\"] = total\n                    data[f\"{model}_sdate\"] = f\"{gdds[0]['date']}\"\n                    data[f\"{model}_edate\"] = f\"{gdds[-1]['date']}\"\n\n    return data\n\n\ndef get_mckey(environ):\n    \"\"\"Get the memcache key.\"\"\"\n    return (\n        f\"/json/climodat_dd/{environ['station']}/{environ['sdate']}/\"\n        f\"{environ['edate']}/{environ['gddbase']}/{environ['gddceil']}\"\n    )\n\n\n@iemapp(\n    help=__doc__, schema=Schema, memcachekey=get_mckey, memcacheexpire=32200\n)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    station = environ[\"station\"]\n    sdate = environ[\"sdate\"]\n    edate = environ[\"edate\"]\n    if edate < sdate:\n        sdate, edate = edate, sdate\n    gddbase = environ[\"gddbase\"]\n    gddceil = environ[\"gddceil\"]\n\n    res = run(station, sdate, edate, gddbase, gddceil)\n\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return json.dumps(res)\n"
  },
  {
    "path": "pylib/iemweb/json/climodat_stclimo.py",
    "content": "\"\"\".. title:: Climodat Station Climatology\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/climodat_stclimo.py\n-------------------------------------------\n\nThis provides computed climatologies based on period of record data.\n\nChangelog\n---------\n\n- 2024-08-05: Initial documtation update\n\nExample Requests\n----------------\n\nProvide the computed climatology for Ames, IA\n\nhttps://mesonet.agron.iastate.edu/json/climodat_stclimo.py?station=IATAME\n\n\"\"\"\n\nimport json\nfrom datetime import datetime\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    eyear: Annotated[int, Field(description=\"End Year\")] = (\n        datetime.now().year + 1\n    )\n    station: Annotated[\n        str, Field(description=\"Station Identifier\", max_length=6)\n    ] = \"IA0200\"\n    syear: Annotated[int, Field(description=\"Start Year\")] = 1800\n\n\n@with_sqlalchemy_conn(\"coop\")\ndef run(\n    station: str, syear: int, eyear: int, conn: Connection | None = None\n) -> dict:\n    \"\"\"Generate the data. Note, we have API users of this...\"\"\"\n    res = conn.execute(\n        sql_helper(\"\"\"\n    WITH data as (\n      SELECT sday, year, precip,\n      avg(precip) OVER (PARTITION by sday) as avg_precip,\n      high, rank() OVER (PARTITION by sday ORDER by high DESC nulls last)\n        as max_high,\n      avg(high) OVER (PARTITION by sday) as avg_high,\n      rank() OVER (PARTITION by sday ORDER by high ASC nulls last)\n        as min_high,\n      low, rank() OVER (PARTITION by sday ORDER by low DESC nulls last)\n        as max_low,\n      avg(low) OVER (PARTITION by sday) as avg_low,\n      rank() OVER (PARTITION by sday ORDER by low ASC nulls last)\n        as min_low,\n      rank() OVER (PARTITION by sday ORDER by precip DESC nulls last)\n        as max_precip,\n      max(high - low) OVER (PARTITION by sday) as max_range,\n      min(high - low) OVER (PARTITION by sday) as min_range\n      from alldata\n    WHERE station = :station and year >= :syear and year < :eyear),\n\n    max_highs as (\n      SELECT sday, high, array_agg(year) as years from data\n      where max_high = 1 GROUP by sday, high),\n    min_highs as (\n      SELECT sday, high, array_agg(year) as years from data\n      where min_high = 1 GROUP by sday, high),\n\n    max_lows as (\n      SELECT sday, low, array_agg(year) as years from data\n      where max_low = 1 GROUP by sday, low),\n    min_lows as (\n      SELECT sday, low, array_agg(year) as years from data\n      where min_low = 1 GROUP by sday, low),\n\n    max_precip as (\n      SELECT sday, precip, array_agg(year) as years from data\n      where max_precip = 1 GROUP by sday, precip),\n\n    avgs as (\n      SELECT sday, count(*) as cnt, max(avg_precip) as p,\n      max(max_range) as max_range, min(min_range) as min_range,\n      max(avg_high) as h, max(avg_low) as l from data GROUP by sday)\n\n    SELECT a.sday, a.cnt,\n    a.h, xh.high as xh_high, xh.years as xh_years,\n    nh.high as nh_high, nh.years as nh_years,\n    a.l, xl.low as xl_low, xl.years as xl_years,\n    nl.low as nl_low, nl.years as nl_years,\n    a.p, mp.precip, mp.years as mp_years, a.max_range, a.min_range\n    from avgs a, max_highs xh, min_highs nh, max_lows xl, min_lows nl,\n    max_precip mp\n    WHERE xh.sday = a.sday and xh.sday = nh.sday and xh.sday = xl.sday and\n    xh.sday = nl.sday and xh.sday = mp.sday ORDER by sday ASC\n    \"\"\"),\n        {\"station\": station, \"syear\": syear, \"eyear\": eyear},\n    )\n    data = json_response_dict(\n        {\n            \"station\": station,\n            \"start_year\": syear,\n            \"end_year\": eyear,\n            \"climatology\": [],\n        }\n    )\n    for row in res.mappings():\n        data[\"climatology\"].append(\n            dict(\n                month=int(row[\"sday\"][:2]),\n                day=int(row[\"sday\"][2:]),\n                years=row[\"cnt\"],\n                avg_high=None if row[\"h\"] is None else float(row[\"h\"]),\n                max_high=row[\"xh_high\"],\n                max_high_years=row[\"xh_years\"],\n                min_high=row[\"nh_high\"],\n                min_high_years=row[\"nh_years\"],\n                avg_low=None if row[\"l\"] is None else float(row[\"l\"]),\n                max_low=row[\"xl_low\"],\n                max_low_years=row[\"xl_years\"],\n                min_low=row[\"nl_low\"],\n                min_low_years=row[\"nl_years\"],\n                avg_precip=None if row[\"p\"] is None else float(row[\"p\"]),\n                max_precip=row[\"precip\"],\n                max_precip_years=row[\"mp_years\"],\n                max_range=row[\"max_range\"],\n                min_range=row[\"min_range\"],\n            )\n        )\n    return data\n\n\ndef get_key(environ):\n    \"\"\"Figure out the cache key\"\"\"\n    return (\n        f\"/json/climodat_stclimo/{environ['station']}/\"\n        f\"{environ['syear']}/{environ['eyear']}\"\n    )\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=get_key,\n)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    query: Schema = environ[\"_cgimodel_schema\"]\n\n    res = run(query.station, query.syear, query.eyear)\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return json.dumps(res)\n"
  },
  {
    "path": "pylib/iemweb/json/current.py",
    "content": "\"\"\".. title:: Single station currents\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/current.py\n----------------------------------\n\nThis is a legacy service that emits the most recent observation for a given\nsite and network combination.\n\nChangelog\n---------\n\n- 2026-03-03: Please migrate usage of root attribute `server_gentime` to\n  `generated_at`.\n- 2024-08-01: Documentation update\n\nExample Requests\n----------------\n\nReturn the latest observation for the Ames Airport\n\nhttps://mesonet.agron.iastate.edu/json/current.py?station=AMW&network=IA_ASOS\n\n\"\"\"\n\nimport json\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy import Connection\n\nfrom iemweb.fields import CALLBACK_FIELD, NETWORK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    network: NETWORK_FIELD\n    station: Annotated[\n        str,\n        Field(\n            description=\"The station identifier, such as AMW\",\n            min_length=3,\n            max_length=64,\n            pattern=r\"^[A-Z0-9_\\-]+$\",\n        ),\n    ]\n\n\ndef run(conn: Connection, query: Schema):\n    \"\"\"Get last ob!\"\"\"\n    res = conn.execute(\n        sql_helper(\"\"\"\n    WITH mystation as (\n        SELECT iemid, tzname from stations where id = :id and network = :net\n    ), lastob as (\n        select c.*, m.iemid as miemid,\n        valid at time zone 'UTC' as utctime,\n        valid at time zone m.tzname as localtime\n        from current c JOIN mystation m on (c.iemid = m.iemid)\n    )\n    SELECT *, s.pday as s_pday from summary s JOIN lastob o\n    on (s.iemid = o.miemid and s.day = date(o.localtime))\n    \"\"\"),\n        {\"id\": query.station, \"net\": query.network},\n    )\n    if res.rowcount == 0:\n        return \"{}\"\n    row = res.mappings().fetchone()\n    data = json_response_dict({})\n    data[\"server_gentime\"] = utc().strftime(ISO8601)\n    data[\"id\"] = query.station\n    data[\"network\"] = query.network\n    ob = data.setdefault(\"last_ob\", {})\n    ob[\"local_valid\"] = row[\"localtime\"].strftime(\"%Y-%m-%d %H:%M\")\n    ob[\"utc_valid\"] = row[\"utctime\"].strftime(ISO8601)\n    ob[\"airtemp[F]\"] = row[\"tmpf\"]\n    ob[\"max_dayairtemp[F]\"] = row[\"max_tmpf\"]\n    ob[\"min_dayairtemp[F]\"] = row[\"min_tmpf\"]\n    ob[\"dewpointtemp[F]\"] = row[\"dwpf\"]\n    ob[\"windspeed[kt]\"] = row[\"sknt\"]\n    ob[\"winddirection[deg]\"] = row[\"drct\"]\n    ob[\"altimeter[in]\"] = row[\"alti\"]\n    ob[\"mslp[mb]\"] = row[\"mslp\"]\n    ob[\"skycover[code]\"] = [\n        row[\"skyc1\"],\n        row[\"skyc2\"],\n        row[\"skyc3\"],\n        row[\"skyc4\"],\n    ]\n    ob[\"skylevel[ft]\"] = [\n        row[\"skyl1\"],\n        row[\"skyl2\"],\n        row[\"skyl3\"],\n        row[\"skyl4\"],\n    ]\n    ob[\"visibility[mile]\"] = row[\"vsby\"]\n    ob[\"raw\"] = row[\"raw\"]\n    ob[\"presentwx\"] = [] if row[\"wxcodes\"] is None else row[\"wxcodes\"]\n    ob[\"precip_today[in]\"] = row[\"s_pday\"]\n    ob[\"c1tmpf[F]\"] = row[\"c1tmpf\"]\n    ob[\"srad_1h[J m-2]\"] = row[\"srad_1h_j\"]\n    for depth in [4, 8, 16, 20, 32, 40, 64, 128]:\n        ob[f\"tsoil[{depth}in][F]\"] = row[f\"tsoil_{depth}in_f\"]\n    return json.dumps(data)\n\n\n@iemapp(\n    memcachekey=lambda x: f\"/json/current/{x['network']}/{x['station']}\",\n    memcacheexpire=120,\n    content_type=\"application/json\",\n    help=__doc__,\n    schema=Schema,\n)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    query: Schema = environ[\"_cgimodel_schema\"]\n\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        res = run(conn, query)\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return res.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/dcp_vars.py",
    "content": "\"\"\".. title:: DCP Variables Metadata Service\n\nReturn to `API Services </api/#json>`.\n\nDocumentation for /json/dcp_vars.json\n-------------------------------------\n\nThe IEM attempts a robust processing of HADS/DCP data in SHEF format.  This\nSHEF format carries a huge number of potential variable names.  This service\nemits the variable names that are currently available\n(within the present month) for the provided station identifier.\n\nChangelog\n---------\n\n- 2024-08-01: Initial documentation update\n\nExample Requests\n----------------\n\nTurn the unique SHEF variables reported by AESI4\n\nhttps://mesonet.agron.iastate.edu/json/dcp_vars.py?station=AESI4\n\n\"\"\"\n\nimport json\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    station: Annotated[\n        str,\n        Field(\n            description=\"Station identifier to look for variables for.\",\n            max_length=8,\n            pattern=r\"^[A-Z0-9]+$\",\n        ),\n    ]\n\n\n@iemapp(\n    memcachekey=lambda e: f\"/json/dcp_vars|{e['station']}\",\n    content_type=\"application/json\",\n    help=__doc__,\n    schema=Schema,\n    memcacheexpire=3600,\n)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    data = json_response_dict(\n        {\n            \"vars\": [],\n        }\n    )\n    table = f\"raw{utc():%Y_%m}\"\n    with get_sqlalchemy_conn(\"hads\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"select distinct key from {table} where station = :station\",\n                table=table,\n            ),\n            {\n                \"station\": environ[\"station\"],\n            },\n        )\n        for row in res:\n            data[\"vars\"].append(\n                {\n                    \"id\": row[0],\n                }\n            )\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return json.dumps(data)\n"
  },
  {
    "path": "pylib/iemweb/json/ibw_tags.py",
    "content": "\"\"\".. title:: Impact Based Warning Tags by WFO/State and Year\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/ibw_tags.py\n-----------------------------------\n\nThis service returns a JSON representation of Impact Based Warning Tags\n(IBW) for a given year and WFO/State identifier.\n\nChangelog\n---------\n\n- 2026-03-03: Legacy `gentime` root attribute was removed.  Use the\n  `generated_at` parameter.\n- 2025-08-14: Added support to query by state\n\nUsage Examples\n--------------\n\nProvide all 2024 warnings from Omaha with the CONSIDERABLE damage tag.\n\nhttps://mesonet.agron.iastate.edu/json/ibw_tags.py?\\\nyear=2024&wfo=OAX&damagetag=CONSIDERABLE\n\nProvide all 2024 warnings for Iowa with the destructive damage tag.\n\nhttps://mesonet.agron.iastate.edu/json/ibw_tags.py?\\\nyear=2024&state=IA&damagetag=DESTRUCTIVE\n\n\"\"\"\n\nimport json\nfrom datetime import datetime\nfrom typing import Annotated\n\nfrom pydantic import Field, model_validator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.mlib import rectify_wfo\nfrom iemweb.util import json_response_dict\n\nDAMAGE_TAGS = \"CONSIDERABLE DESTRUCTIVE CATASTROPHIC\".split()\nIEM = \"https://mesonet.agron.iastate.edu\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    damagetag: Annotated[\n        str | None, Field(description=\"Damage Tag\", max_length=20)\n    ] = None\n    state: Annotated[\n        str | None,\n        Field(\n            description=\"State identifier is used first if wfo provided too\",\n            max_length=2,\n        ),\n    ] = None\n    wfo: Annotated[\n        str | None, Field(description=\"WFO Identifier\", max_length=4)\n    ] = None\n    year: Annotated[\n        int, Field(description=\"Year to query\", ge=2000, le=utc().year)\n    ]\n\n    @model_validator(mode=\"after\")\n    def validate_wfo_or_damagetag(self):\n        \"\"\"Ensure we have either a WFO or a damage tag\"\"\"\n        if self.wfo is None and self.damagetag is None and self.state is None:\n            raise ValueError(\n                \"Either a WFO, damage tag, or state must be provided\"\n            )\n        return self\n\n\ndef ptime(val: datetime | None) -> str | None:\n    \"\"\"Pretty print a timestamp\"\"\"\n    if val is None:\n        return val\n    return val.strftime(ISO8601)\n\n\ndef run(query: Schema) -> dict:\n    \"\"\"Actually generate output\"\"\"\n    params = {\n        \"wfo\": query.wfo,\n        \"state\": query.state,\n        \"year\": query.year,\n    }\n    sbw_wfolimiter = \" w.wfo = :wfo and \"\n    cbw_wfolimiter = \" w.wfo = :wfo and \"\n    damagelimiter = \"\"\n    if query.damagetag is not None:\n        damagetag = query.damagetag.upper()\n        assert damagetag in DAMAGE_TAGS\n        sbw_wfolimiter = \"\"\n        cbw_wfolimiter = \"\"\n        params[\"damagetag\"] = damagetag\n        damagelimiter = (\n            \" (damagetag = :damagetag or floodtag_damage = :damagetag) and \"\n        )\n    if query.state is not None:\n        cbw_wfolimiter = \" substr(w.ugc, 1, 2) = :state and \"\n        sbw_wfolimiter = \"\"  # Best we can do, the join cleans up our mess\n\n    res = json_response_dict(\n        {\n            \"year\": query.year,\n            \"wfo\": query.wfo,\n            \"state\": query.state,\n            \"results\": [],\n        }\n    )\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        cursor = conn.execute(\n            sql_helper(\n                \"\"\"\n    WITH stormbased as (\n     SELECT eventid, phenomena, issue at time zone 'UTC' as utc_issue,\n     expire at time zone 'UTC' as utc_expire,\n     polygon_begin at time zone 'UTC' as utc_polygon_begin,\n     polygon_end at time zone 'UTC' as utc_polygon_end,\n     status, windtag, hailtag, tornadotag, tml_sknt, damagetag, wfo,\n     floodtag_flashflood, floodtag_damage, floodtag_heavyrain,\n     floodtag_dam, floodtag_leeve, waterspouttag, product_id\n     from sbw w WHERE {damagelimiter} {sbw_wfolimiter}\n     phenomena in ('SV', 'TO', 'FF', 'MA')\n     and w.vtec_year = :year and significance = 'W' and status != 'EXP' and\n     status != 'CAN'\n ),\n\n countybased as (\n    select string_agg( u.name || ' ['||u.state||']', ', ') as locations,\n    eventid, phenomena, w.wfo from warnings w JOIN ugcs u\n    ON (u.gid = w.gid) WHERE {cbw_wfolimiter}\n    w.vtec_year = :year and significance = 'W' and\n    phenomena in ('SV', 'TO', 'FF', 'MA')\n    and eventid is not null GROUP by w.wfo, eventid, phenomena\n )\n\n SELECT c.eventid, c.locations, s.utc_issue, s.utc_expire,\n s.utc_polygon_begin, s.utc_polygon_end, s.status, s.windtag, s.hailtag,\n s.tornadotag, s.tml_sknt, s.damagetag, s.wfo, s.phenomena as ph,\n s.floodtag_flashflood, s.floodtag_damage, s.floodtag_heavyrain,\n s.floodtag_dam, s.floodtag_leeve, s.waterspouttag, product_id\n from countybased c JOIN stormbased s ON (c.eventid = s.eventid and\n c.phenomena = s.phenomena and c.wfo = s.wfo)\n ORDER by s.wfo ASC, eventid ASC, utc_polygon_begin ASC\n     \"\"\",\n                sbw_wfolimiter=sbw_wfolimiter,\n                cbw_wfolimiter=cbw_wfolimiter,\n                damagelimiter=damagelimiter,\n            ),\n            params,\n        )\n\n        for row in cursor.mappings():\n            href = (\n                f\"{IEM}/vtec/?year={query.year}&wfo={rectify_wfo(row['wfo'])}&\"\n                f\"phenomena={row['ph']}&significance=W&\"\n                f\"eventid={row['eventid']:04.0f}\"\n            )\n            data = dict(\n                eventid=row[\"eventid\"],\n                locations=row[\"locations\"],\n                issue=ptime(row[\"utc_issue\"]),\n                expire=ptime(row[\"utc_expire\"]),\n                polygon_begin=ptime(row[\"utc_polygon_begin\"]),\n                polygon_end=ptime(row[\"utc_polygon_end\"]),\n                status=row[\"status\"],\n                windtag=row[\"windtag\"],\n                hailtag=row[\"hailtag\"],\n                tornadotag=row[\"tornadotag\"],\n                tml_sknt=row[\"tml_sknt\"],\n                damagetag=row[\"damagetag\"],\n                tornadodamagetag=row[\"damagetag\"]\n                if row[\"ph\"] == \"TO\"\n                else None,\n                thunderstormdamagetag=row[\"damagetag\"]\n                if row[\"ph\"] == \"SV\"\n                else None,\n                href=href,\n                wfo=row[\"wfo\"],\n                phenomena=row[\"ph\"],\n                floodtag_flashflood=row[\"floodtag_flashflood\"],\n                floodtag_damage=row[\"floodtag_damage\"],\n                floodtag_heavyrain=row[\"floodtag_heavyrain\"],\n                floodtag_dam=row[\"floodtag_dam\"],\n                floodtag_leeve=row[\"floodtag_leeve\"],\n                waterspouttag=row[\"waterspouttag\"],\n                product_id=row[\"product_id\"],\n                product_href=f\"{IEM}/p.php?pid={row['product_id']}\",\n                product_text=f\"{IEM}/api/1/nwstext/{row['product_id']}\",\n            )\n            res[\"results\"].append(data)\n\n    return json.dumps(res)\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    query: Schema = environ[\"_cgimodel_schema\"]\n    res = run(query)\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return res\n"
  },
  {
    "path": "pylib/iemweb/json/mcd_bysize.py",
    "content": "\"\"\".. title:: Storm Prediction Center Mesoscale Convective Discussions by Size\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/mcd_bysize.py\n-------------------------------------\n\nSimple service that returns SPC's MCDs sorted by size.\n\nChangelog\n---------\n\n- 2025-03-12: Added new Most Probable Intensity fields.\n- 2024-07-29: Initital documentation release.\n\n\"\"\"\n\nimport json\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\nBASEURL = \"https://www.spc.noaa.gov/products/md\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    count: Annotated[\n        int,\n        Field(\n            description=\"Number of results to return.\",\n            ge=1,\n            le=1000,\n        ),\n    ] = 10\n    sort: Annotated[\n        str,\n        Field(\n            description=\"how to sort the results,\",\n            pattern=\"^(asc|desc|ASC|DESC)$\",\n        ),\n    ] = \"desc\"\n\n\ndef dowork(count, sort):\n    \"\"\"Actually do stuff\"\"\"\n\n    data = json_response_dict({\"mcds\": []})\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n            SELECT issue at time zone 'UTC' as i,\n            expire at time zone 'UTC' as e, num, product_id, year,\n            ST_Area(geom::geography) / 1000000. as area_sqkm,\n            concerning, most_prob_tornado, most_prob_hail, most_prob_gust\n            from mcd WHERE not ST_isEmpty(geom)\n            ORDER by area_sqkm {sort} LIMIT :cnt\n        \"\"\",\n                sort=sort,\n            ),\n            {\"cnt\": count},\n        )\n        for row in res:\n            url = f\"{BASEURL}/{row[4]}/md{row[2]:04.0f}.html\"\n            data[\"mcds\"].append(\n                dict(\n                    spcurl=url,\n                    year=row[4],\n                    utc_issue=row[0].strftime(ISO8601),\n                    utc_expire=row[1].strftime(ISO8601),\n                    product_num=row[2],\n                    product_id=row[3],\n                    area_sqkm=row[5],\n                    concerning=row[6],\n                    most_prob_tornado=row[7],\n                    most_prob_hail=row[8],\n                    most_prob_gust=row[9],\n                )\n            )\n\n    return json.dumps(data)\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Get the key.\"\"\"\n    return f\"/json/mcd_bysize.py?{environ['count']},{environ['sort']}\"\n\n\n@iemapp(help=__doc__, schema=Schema, memcacheexpire=600, memcachekey=get_mckey)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    query: Schema = environ[\"_cgimodel_schema\"]\n\n    return dowork(query.count, query.sort).encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/network.py",
    "content": "\"\"\".. title:: Legacy Network Metadata Service\n\nReturn to `API Services </api/#json>`_\n\nChangelog\n---------\n\n- 2024-07-26: Initial documentation release\n\nExample Requests\n----------------\n\nReturn metadata for the SCAN network:\n\nhttps://mesonet.agron.iastate.edu/json/network.py?network=SCAN\n\n\"\"\"\n\nimport json\n\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD, NETWORK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    network: NETWORK_FIELD = \"IA_ASOS\"\n\n\ndef get_mckey(environ):\n    \"\"\"Return the memcache key for this request.\"\"\"\n    return f\"json_network_{environ['network']}\"\n\n\n@iemapp(\n    memcachekey=get_mckey,\n    content_type=\"application/json\",\n    help=__doc__,\n    schema=Schema,\n    memcacheexpire=3600,\n)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    data = json_response_dict({\"stations\": []})\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n            select id, name, ST_x(geom) as lon, ST_y(geom) as lat\n            from stations where network = :network order by id asc\n        \"\"\"\n            ),\n            {\n                \"network\": environ[\"network\"],\n            },\n        )\n        for row in res.mappings():\n            data[\"stations\"].append(\n                {\n                    \"id\": row[\"id\"],\n                    \"combo\": f\"[{row['id']}] {row['name']}\",\n                    \"name\": row[\"name\"],\n                    \"lon\": row[\"lon\"],\n                    \"lat\": row[\"lat\"],\n                }\n            )\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return json.dumps(data)\n"
  },
  {
    "path": "pylib/iemweb/json/nwstext.py",
    "content": "\"\"\".. title:: Single Product NWS Text Product JSON Service\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/nwstext.py\n----------------------------------\n\nNote: This is a legacy service that should not be used for new development.\nThe `CGI version </cgi-bin/afos/retrieve.py?help>`_ is the preferred method\nat the moment.  This service does do a needed job of returning multiple\nproduct texts for a single product identifier, which is sadly still a thing\nin the world of NWS text products.\n\nThis service requires that you know the ``product_id`` ahead of time.  This is\nan identifier created by the IEM attempting to uniquely identify a text\nproduct.  This ``product_id`` is a dash delimited string seperating a\nUTC timestamp, WMO source, WMO TTAAII, AWIPS ID, and an optional BBB field.\n\nChangelog\n---------\n\n- 2026-05-08: Service updated to support the bbb field of a product identifier,\n  if not provided, the service does not use it in the database query.\n- 2024-07-26: Initial documentation Release\n\nExample Usage\n-------------\n\nReturn the Area Forecast Discussion for NWS Des Moines issued at 2024-07-16\n04:52 UTC:\n\nhttps://mesonet.agron.iastate.edu/json/nwstext.py?\\\nproduct_id=202407160452-KDMX-FXUS63-AFDDMX\n\n\"\"\"\n\nimport json\nfrom datetime import datetime, timezone\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import BadWebRequest\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    product_id: Annotated[\n        str,\n        Field(\n            description=\"Product Identifier to retrieve text for\",\n            max_length=36,\n            min_length=28,\n            pattern=(\n                r\"^\\d{12}-[A-Z0-9]{4}-[A-Z0-9]{6}-[A-Z0-9]{3,6}\"\n                r\"(?:-[A-Z0-9]{3})?$\"\n            ),\n        ),\n    ]\n\n\n@iemapp(\n    help=__doc__,\n    memcachekey=lambda x: f\"/json/nwstext|{x['product_id']}\",\n    memcacheexpire=300,\n    schema=Schema,\n)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    headers = [(\"Content-type\", \"application/json\")]\n\n    pid = environ[\"product_id\"]\n    tokens = pid.split(\"-\")\n    try:\n        utc = datetime.strptime(tokens[0], \"%Y%m%d%H%M\")\n    except ValueError as exp:\n        raise BadWebRequest(\"Invalid timestamp\") from exp\n    utc = utc.replace(tzinfo=timezone.utc)\n    root = json_response_dict({\"products\": []})\n\n    sql_bbb = \"\"\n    if len(tokens) > 4 and tokens[4] != \"\":\n        sql_bbb = \"and bbb is not distinct from :bbb\"\n    with get_sqlalchemy_conn(\"afos\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"SELECT data from products \"\n                \"where pil = :pil and entered = :entered\"\n                \" {sql_bbb}\",\n                sql_bbb=sql_bbb,\n            ),\n            {\n                \"pil\": tokens[3],\n                \"entered\": utc,\n                \"bbb\": tokens[4] if len(tokens) > 4 else None,\n            },\n        )\n        for row in res:\n            root[\"products\"].append({\"data\": row[0]})\n\n    data = json.dumps(root)\n    start_response(\"200 OK\", headers)\n    return data.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/nwstext_center_date.py",
    "content": "\"\"\".. title:: NWS Text Data by Center and Date\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/nwstext_center_date.py\n----------------------------------------------\n\nThis service returns NWS Text data for a given center and date.\n\nChangelog\n---------\n\n- 2024-07-26: Initial documentation release and pydantic validation\n\nExample Requests\n----------------\n\nReturn most all NWS Des Moines products for 2024-07-15:\n\nhttps://mesonet.agron.iastate.edu/json/nwstext_center_date.py?center=KDMX\\\n&date=2024-07-15&opt=1\n\nReturn products from NWS Des Moines for 2 day period:\n\nhttps://mesonet.agron.iastate.edu/json/nwstext_center_date.py?center=KDMX\\\n&sts=2024-07-15T00:00Z&ets=2024-07-17T00:00Z\n\n\"\"\"\n\nimport json\nfrom datetime import datetime, timedelta\nfrom typing import Annotated\n\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\nOPTPILS = (\n    \"AQA CFW DGT DSW FFA FFS FFW FLS FLW FWW HLS MWS MWW NPW NOW PNS PSH RER \"\n    \"RFW RWR RWS SMW SPS SRF SQW SVR SVS TCV TOR TSU WCN WSW\"\n).split()\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    date: Annotated[\n        str | None,\n        Field(\n            description=\"Optional date to limit the search to, YYYY-MM-DD\",\n            pattern=r\"\\d{4}-\\d{1,2}-\\d{1,2}\",\n        ),\n    ] = None\n    center: Annotated[\n        str,\n        Field(\n            description=\"NWS Center Identifier (4 character)\",\n            pattern=r\"^[A-Z]{4}$\",\n        ),\n    ] = \"KOKX\"\n    opt: Annotated[\n        bool,\n        Field(\n            description=(\n                \"Optional flag to limit to certain pil \"\n                f\"types {', '.join(OPTPILS)}\"\n            ),\n        ),\n    ] = False\n    sts: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=\"Optional start time for the search\",\n        ),\n    ] = None\n    ets: Annotated[\n        AwareDatetime,\n        Field(\n            description=\"Optional end time for the search\",\n        ),\n    ] = None\n\n\n@iemapp(help=__doc__, schema=Schema, default_tz=\"UTC\")\ndef application(environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    center = environ[\"center\"]\n    if environ[\"date\"] is not None:\n        date = datetime.strptime(environ[\"date\"], \"%Y-%m-%d\")\n        environ[\"sts\"] = utc(date.year, date.month, date.day)\n        environ[\"ets\"] = environ[\"sts\"] + timedelta(days=1)\n    else:\n        if environ[\"sts\"] is None or environ[\"ets\"] is None:\n            raise IncompleteWebRequest(\"No date information provided\")\n        if (environ[\"ets\"] - environ[\"sts\"]) > timedelta(days=14):\n            environ[\"ets\"] = environ[\"sts\"] + timedelta(days=14)\n\n    root = json_response_dict({\"products\": []})\n    pil_limiter = \"\"\n    params = {\n        \"center\": center,\n        \"sts\": environ[\"sts\"],\n        \"ets\": environ[\"ets\"],\n    }\n    if environ[\"opt\"]:\n        params[\"pils\"] = OPTPILS\n        pil_limiter = \"and substr(pil, 1, 3) = ANY(:pils) \"\n    with get_sqlalchemy_conn(\"afos\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n                SELECT data, to_char(entered at time zone 'UTC',\n                'YYYY-MM-DDThh24:MI:00Z') as e from products\n                where source = :center and entered >= :sts and entered < :ets\n                {pil_limiter} ORDER by entered ASC\n            \"\"\",\n                pil_limiter=pil_limiter,\n            ),\n            params,\n        )\n        for row in res:\n            root[\"products\"].append({\"data\": row.data, \"entered\": row.e})\n\n    data = json.dumps(root)\n\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return data.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/nwstext_search.py",
    "content": "\"\"\".. title:: Search for NWS Text Products over a time range\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/nwstext_search.py\n-----------------------------------------\n\nThis legacy service returns a JSON response of NWS Text Products over a time\nrange.\n\nChangelog\n---------\n\n- 2024-07-25: Initial documentation\n\nExample Usage\n-------------\n\nReturn all Des Moines Area Forecast Discussions for 2024\n\nhttps://mesonet.agron.iastate.edu/json/nwstext_search.py?awipsid=AFDDMX&\\\nsts=2024-01-01T00:00Z&ets=2025-01-01T00:00Z\n\nReturn all Severe Thunderstorm Warnings for 10 July 2024 UTC\n\nhttps://mesonet.agron.iastate.edu/json/nwstext_search.py?awipsid=SVR&\\\nsts=2024-07-10T00:00Z&ets=2024-07-11T00:00Z\n\n\"\"\"\n\nimport json\nfrom datetime import datetime\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    awipsid: Annotated[\n        str,\n        Field(\n            description=\"The AWIPS Identifier to search for\",\n            max_length=6,\n            min_length=3,\n        ),\n    ] = \"AFDDMX\"\n    sts: Annotated[\n        datetime,\n        Field(description=\"Start of the time period (UTC) to search for\"),\n    ]\n    ets: Annotated[\n        datetime,\n        Field(description=\"End of the time period (UTC) to search for\"),\n    ]\n\n\ndef run(sts, ets, awipsid):\n    \"\"\"Actually do some work!\"\"\"\n\n    data = json_response_dict({\"results\": []})\n    pillimit = \"pil\"\n    if len(awipsid) == 3:\n        pillimit = \"substr(pil, 1, 3) \"\n    with get_sqlalchemy_conn(\"afos\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n        SELECT data,\n        to_char(entered at time zone 'UTC', 'YYYY-MM-DDThh24:MIZ'),\n        source, wmo from products WHERE\n        entered >= :sts and entered < :ets and {pillimit} =:awipsid\n        ORDER by entered ASC\n        \"\"\",\n                pillimit=pillimit,\n            ),\n            {\"sts\": sts, \"ets\": ets, \"awipsid\": awipsid},\n        )\n        for row in res:\n            data[\"results\"].append(\n                dict(ttaaii=row[3], utcvalid=row[1], data=row[0], cccc=row[2])\n            )\n    return json.dumps(data)\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Get the key.\"\"\"\n    return (\n        f\"/json/nwstext_search/{environ['sts']:%Y%m%d%H%M}/\"\n        f\"{environ['ets']:%Y%m%d%H%M}/{environ['awipsid']}\"\n    ).strip()\n\n\n@iemapp(\n    help=__doc__,\n    memcachekey=get_mckey,\n    memcacheexpire=120,\n    schema=Schema,\n    default_tz=\"UTC\",\n)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    headers = [(\"Content-type\", \"application/json\")]\n\n    res = run(environ[\"sts\"], environ[\"ets\"], environ[\"awipsid\"])\n    start_response(\"200 OK\", headers)\n    return res.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/outlook_progression.py",
    "content": "\"\"\".. title:: SPC/WPC Outlook Progression by Point\n\nReturn to `API Services </api/#json>`_.\n\nDocumentation for /json/outlook_progression.py\n----------------------------------------------\n\nThis service requires a latitude and longitude point along with a date of\ninterest. The service will return the coincident SPC or WPC outlooks valid\nfor that date.\n\nImplementation Notes\n--------------------\n\n1. In the case of hatching, two entries are returned per outlook per category.\n2. Off cycle outlook updates are encoded as cycle=-1.\n3. An attempt is made at the null / no outlook situation, but it is not\n   perfect.\n\nChangelog\n---------\n\n- 2026-02-26: Renamed top level `generation_time` metadata to `generated_at`\n  for better IEM app consistency.\n- 2024-11-26: Initial implementation\n\nExample Usage\n-------------\n\nProvide the progression of convective outlooks for a point on 5 August 2024:\n\nhttps://mesonet.agron.iastate.edu/json/outlook_progression.py\\\n?lat=39.9&lon=-85.9&valid=2024-08-05&outlook_type=C\n\nSame request, but return an Excel file:\n\nhttps://mesonet.agron.iastate.edu/json/outlook_progression.py\\\n?lat=39.9&lon=-85.9&valid=2024-08-05&outlook_type=C&fmt=excel\n\nSame request, but return a CSV file:\n\nhttps://mesonet.agron.iastate.edu/json/outlook_progression.py\\\n?lat=39.9&lon=-85.9&valid=2024-08-05&outlook_type=C&fmt=csv\n\n\"\"\"\n\nimport json\nfrom datetime import date, timedelta\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport geopandas as gpd\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import (\n    CALLBACK_FIELD,\n    LATITUDE_FIELD,\n    LONGITUDE_FIELD,\n)\nfrom iemweb.util import get_ct, json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    fmt: Annotated[\n        str,\n        Field(\n            description=\"The format to return data in: json, excel, or csv\",\n            pattern=\"^(json|excel|csv)$\",\n        ),\n    ] = \"json\"\n    lat: LATITUDE_FIELD = 42.0\n    lon: LONGITUDE_FIELD = -95.0\n    outlook_type: Annotated[\n        str,\n        Field(\n            description=\"Outlook type (C)onvective, (F)ire, (E)xcessive Rain\",\n            pattern=\"^(C|F|E)$\",\n        ),\n    ] = \"C\"\n    valid: Annotated[\n        date, Field(description=\"Date of interest in YYYY-MM-DD format\")\n    ]\n\n\ndef dowork(\n    outlook_type: str,\n    valid: date,\n    lon: float,\n    lat: float,\n) -> pd.DataFrame:\n    \"\"\"Actually do stuff\"\"\"\n    params = {\n        \"outlook_type\": outlook_type,\n        \"sts\": valid,\n        \"ets\": valid + timedelta(days=1),\n        \"lon\": lon,\n        \"lat\": lat,\n    }\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        # Figure out the outlooks for this date\n        domain = pd.read_sql(\n            sql_helper(\"\"\"\n        select day, cycle, issue, expire, product_issue from spc_outlook\n        where issue > :sts and issue < :ets and outlook_type = :outlook_type\n        order by product_issue asc\n            \"\"\"),\n            conn,\n            params=params,\n        )\n        domain[\"category\"] = (\n            \"CATEGORICAL\"\n            if outlook_type != \"F\"\n            else \"FIRE WEATHER CATEGORICAL\"\n        )\n        # For reasons I can not figure out, postgresql would not pick the\n        # date index first, which would is orders of magnitude faster, so\n        # instead we do a CTE and OFFSET 0 to disable inlining.\n        outlooks = gpd.read_postgis(\n            sql_helper(\"\"\"\n        with data as (\n            select o.day, o.geom, o.cycle, o.category, o.issue, o.expire,\n            o.product_issue, o.threshold\n            from spc_outlooks o\n            where outlook_type = :outlook_type\n            and issue > :sts and issue < :ets\n            OFFSET 0\n        )\n        select * from data where st_contains(geom, ST_Point(:lon, :lat, 4326))\n        order by product_issue asc, category asc\n        \"\"\"),\n            conn,\n            params=params,\n            geom_col=\"geom\",\n        )  # type: ignore\n    if domain.empty:\n        return outlooks\n    # Now we need to merge the domain into the outlooks\n    rows = []\n    for _, row in domain.iterrows():\n        if outlooks[\n            (outlooks[\"product_issue\"] == row[\"product_issue\"])\n            & (outlooks[\"cycle\"] == row[\"cycle\"])\n        ].empty:\n            rows.append(row)\n    if rows and not outlooks.empty:\n        outlooks: pd.DataFrame = pd.concat(\n            [outlooks, pd.DataFrame(rows)], ignore_index=True\n        )\n    outlooks = outlooks.sort_values(by=\"product_issue\", ascending=True)\n    if not outlooks.empty:\n        for col in [\"issue\", \"expire\", \"product_issue\"]:\n            outlooks[col] = outlooks[col].dt.strftime(\"%Y-%m-%dT%H:%M:%SZ\")\n\n    return outlooks.drop(columns=[\"geom\"])\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    content_type=get_ct,\n)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    fmt = environ[\"fmt\"]\n    outlooks = dowork(\n        environ[\"outlook_type\"],\n        environ[\"valid\"],\n        environ[\"lon\"],\n        environ[\"lat\"],\n    )\n\n    if fmt == \"json\":\n        res = json_response_dict(\n            {\n                \"query_params\": {\n                    \"lon\": environ[\"lon\"],\n                    \"lat\": environ[\"lat\"],\n                    \"outlook_type\": environ[\"outlook_type\"],\n                    \"valid\": environ[\"valid\"].strftime(\"%Y-%m-%d\"),\n                },\n                \"outlooks\": outlooks.to_dict(orient=\"records\"),\n            }\n        )\n        headers = [(\"Content-type\", get_ct(environ))]\n        start_response(\"200 OK\", headers)\n        return json.dumps(res).replace(\"NaN\", \"null\")\n    if fmt == \"excel\":\n        headers = [\n            (\"Content-type\", get_ct(environ)),\n            (\"Content-Disposition\", \"attachment; filename=outlooks.xls\"),\n        ]\n        start_response(\"200 OK\", headers)\n        with BytesIO() as bio:\n            outlooks.to_excel(bio, index=False)\n            return bio.getvalue()\n\n    headers = [\n        (\"Content-type\", get_ct(environ)),\n        (\"Content-Disposition\", \"attachment; filename=outlooks.csv\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return outlooks.to_csv(index=False)\n"
  },
  {
    "path": "pylib/iemweb/json/prism.py",
    "content": "\"\"\".. title :: PRISM Data by Point\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/prism.py\n--------------------------------\n\nThis service emits a JSON response of PRISM data for a given point.\n\nChangelog\n---------\n\n- 2024-07-24: Initial documentation release and rectify the dates.\n\nExample Usage\n-------------\n\nRequest PRISM data for January 2024 at a point in Iowa:\n\nhttps://mesonet.agron.iastate.edu/json/prism.py?lat=41.9&lon=-92.0&\\\nsdate=2024-01-01&edate=2024-01-31\n\nRequest PRISM data for January 10th 2024 at a point in Iowa:\n\nhttps://mesonet.agron.iastate.edu/json/prism.py?lat=41.9&lon=-92.0&\\\nvalid=2024-01-10\n\n\"\"\"\n\nimport json\nimport os\nfrom datetime import date\nfrom typing import Annotated\n\nimport numpy as np\nimport pandas as pd\nfrom pydantic import Field, model_validator\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import daily_offset\nfrom pyiem.util import c2f, mm2inch, ncopen\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD, LATITUDE_FIELD, LONGITUDE_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    lat: LATITUDE_FIELD = 41.9\n    lon: LONGITUDE_FIELD = -92.0\n    valid: Annotated[\n        date | None,\n        Field(\n            description=\"Provide data valid for this date (~12 UTC)\",\n        ),\n    ] = None\n    sdate: Annotated[\n        date | None,\n        Field(\n            description=\"Inclusive start date for data request\",\n        ),\n    ] = None\n    edate: Annotated[\n        date | None,\n        Field(\n            description=\"Inclusive end date for data request\",\n        ),\n    ] = None\n\n    @model_validator(mode=\"after\")\n    def validate_dates(self):\n        \"\"\"Ensure we have valid dates.\"\"\"\n        if (\n            self.sdate is not None\n            and self.edate is not None\n            and self.sdate > self.edate\n        ):\n            raise ValueError(\"sdate must be before edate\")\n        return self\n\n\ndef myrounder(val, precision):\n    \"\"\"round a float or give back None\"\"\"\n    if val is None or np.isnan(val) or np.ma.is_masked(val):\n        return None\n    return round(val, precision)\n\n\ndef dowork(environ: dict):\n    \"\"\"Do work!\"\"\"\n    dates = []\n    if environ[\"valid\"] is not None:\n        dates.append(environ[\"valid\"])\n    elif environ[\"sdate\"] is not None and environ[\"edate\"] is not None:\n        dates = pd.date_range(environ[\"sdate\"], environ[\"edate\"]).tolist()\n    else:\n        raise IncompleteWebRequest(\"Need valid or sdate/edate\")\n\n    i, j = get_nav(\"prism\").find_ij(environ[\"lon\"], environ[\"lat\"])\n    if i is None or j is None:\n        raise IncompleteWebRequest(\"Coordinates outside of domain\")\n\n    res = json_response_dict(\n        {\n            \"gridi\": int(i),\n            \"gridj\": int(j),\n            \"data\": [],\n            \"disclaimer\": (\n                \"PRISM Climate Group, Oregon State University, \"\n                \"https://prism.oregonstate.edu, created 4 Feb 2004.\"\n            ),\n        }\n    )\n\n    sidx = daily_offset(dates[0])\n    eidx = daily_offset(dates[-1]) + 1\n\n    ncfn = f\"/mesonet/data/prism/{dates[0]:%Y}_daily.nc\"\n    if os.path.isfile(ncfn):\n        with ncopen(ncfn) as nc:\n            tmax = nc.variables[\"tmax\"][sidx:eidx, j, i]\n            tmin = nc.variables[\"tmin\"][sidx:eidx, j, i]\n            ppt = nc.variables[\"ppt\"][sidx:eidx, j, i]\n\n        for mt, nt, pt, valid in zip(tmax, tmin, ppt, dates, strict=False):\n            res[\"data\"].append(\n                {\n                    \"valid\": valid.strftime(\"%Y-%m-%dT12:00:00Z\"),\n                    \"high_f\": myrounder(c2f(mt), 1),\n                    \"low_f\": myrounder(c2f(nt), 1),\n                    \"precip_in\": myrounder(mm2inch(pt), 2),\n                }\n            )\n\n    return json.dumps(res)\n\n\ndef get_mckey(environ):\n    \"\"\"get key.\"\"\"\n    return (\n        f\"/json/prism/{environ['lon']:.2f}/\"\n        f\"{environ['lat']:.2f}/{environ['valid']}/{environ['sdate']}/\"\n        f\"{environ['edate']}\"\n    )\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=get_mckey,\n)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    res = dowork(environ)\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return res\n"
  },
  {
    "path": "pylib/iemweb/json/products.py",
    "content": "\"\"\".. title:: Website Products for IEM Time Machine\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/products.py\n-----------------------------------\n\nThis service emits a JSON response that drives the\n`IEM Time Machine <https://mesonet.agron.iastate.edu/timemachine/>`_.\n\nChangelog\n---------\n\n- 2024-07-24: Initital documentation release.\n\nExample Usage\n-------------\n\nNothing much to see here.\n\nhttps://mesonet.agron.iastate.edu/json/products.py\n\n\"\"\"\n\nimport json\n\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy import Connection\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n\n\ndef add_webcam(conn: Connection, data):\n    \"\"\"Append.\"\"\"\n    res = conn.execute(\n        sql_helper(\n            \"SELECT * from webcams WHERE network != 'IDOT' \"\n            \"and sts is not null ORDER by network, name\"\n        )\n    )\n    for row in res.mappings():\n        tpl = (\n            \"https://mesonet.agron.iastate.edu/archive/data/%Y/%m/%d/\"\n            f\"camera/{row['id']}/{row['id']}_%Y%m%d%H%i.jpg\"\n        )\n        data[\"products\"].append(\n            {\n                \"id\": row[\"id\"],\n                \"template\": tpl,\n                \"name\": row[\"name\"],\n                \"groupname\": f\"{row['network']} Webcams\",\n                \"interval\": 5,\n                \"time_offset\": 0,\n                \"avail_lag\": 0,\n                \"sts\": row[\"sts\"].strftime(\"%Y-%m-%d\"),\n            }\n        )\n\n\ndef add_archive_products(conn: Connection, data):\n    \"\"\"Append.\"\"\"\n    res = conn.execute(\n        sql_helper(\n            \"SELECT * from archive_products WHERE sts is not null \"\n            \"ORDER by groupname, name\"\n        )\n    )\n    for row in res.mappings():\n        data[\"products\"].append(\n            {\n                \"id\": row[\"id\"],\n                \"template\": row[\"template\"],\n                \"name\": row[\"name\"],\n                \"groupname\": row[\"groupname\"],\n                \"interval\": row[\"interval\"],\n                \"time_offset\": row[\"time_offset\"],\n                \"avail_lag\": row[\"avail_lag\"],\n                \"sts\": row[\"sts\"].strftime(\"%Y-%m-%d\"),\n            }\n        )\n\n\n@iemapp(\n    memcachekey=\"/json/products\",\n    content_type=\"application/json\",\n    help=__doc__,\n    schema=Schema,\n    memcacheexpire=3600,\n)\ndef application(_environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    data = json_response_dict({\"products\": []})\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        add_archive_products(conn, data)\n        add_webcam(conn, data)\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return json.dumps(data)\n"
  },
  {
    "path": "pylib/iemweb/json/radar.py",
    "content": "\"\"\".. title:: IEM Archived RADAR Metadata Service\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/radar.py\n--------------------------------\n\nThis service provides metadata about available NEXRAD RADAR data that the\nIEM has archived.  The data is stored in a directory structure that is\norganized by radar site and product type.  The data is stored in PNG format\nand is available for direct download.\n\nThe `IEM One <https://mesonet.agron.iastate.edu/one/>`_ makes heavy usage of\nthis API endpoint.\n\nChangelog\n---------\n\n- 2026-04-28: A bug was squashed with lat/lon always being enabled\n  for operation=available, which always limited the response to nearby RADARs\n  to that point.\n- 2024-07-24: Initial documentation release and pydantic validation\n\nExample Usage\n-------------\n\nProvide metadata for N0B products for YUX radar between 8 and 10 UTC on\nJuly 24th, 2024:\n\nhttps://mesonet.agron.iastate.edu/json/radar?operation=list&product=N0B\\\n&radar=YUX&start=2024-07-24T08:00Z&end=2024-07-24T10:00Z\n\nProvide available RADAR products for the USCOMP (IEM generated mosaic) around\nthe time 23:35 UTC on July 22nd, 2024:\n\nhttps://mesonet.agron.iastate.edu/json/radar?radar=USCOMP\\\n&start=2024-07-22T23:35:00Z&operation=products\n\nProvide an approximation of available RADARs at 26.14N and 80.48W valid at\n15:20 UTC on June 30th, 2024:\n\nhttps://mesonet.agron.iastate.edu/json/radar?lat=26.14&lon=-80.48&\\\nstart=2024-06-30T15:20:00Z&operation=available\n\n\"\"\"\n\nimport glob\nimport json\nimport os.path\nfrom datetime import datetime, timedelta\nfrom typing import Annotated\n\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import (\n    CALLBACK_FIELD,\n    LATITUDE_FIELD_OPTIONAL,\n    LONGITUDE_FIELD_OPTIONAL,\n)\nfrom iemweb.util import json_response_dict\n\nBASEDIR = \"/mesonet/ARCHIVE/data\"\nNIDS = {\n    \"N0B\": \"Base Reflectivity (Super Res)\",\n    \"N0Q\": \"Base Reflectivity (High Res)\",\n    \"N0U\": \"Base Radial Velocity (High Res)\",\n    \"N0S\": \"Storm Relative Radial Velocity\",\n    \"NET\": \"Echo Tops\",\n    \"N0R\": \"Base Reflectivity\",\n    \"N0V\": \"Base Radial Velocity\",\n    \"N0Z\": \"Base Reflectivity\",\n    \"TR0\": \"TDWR Base Reflectivity\",\n    \"TV0\": \"TDWR Radial Velocity\",\n    \"TZL\": \"TDWR Base Reflectivity\",\n}\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    end: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=\"End of time period to search for data\",\n        ),\n    ] = None\n    lat: LATITUDE_FIELD_OPTIONAL = None\n    lon: LONGITUDE_FIELD_OPTIONAL = None\n    operation: Annotated[\n        str,\n        Field(\n            description=\"The operation to perform, either list or available\",\n            pattern=\"^(list|available|products)$\",\n        ),\n    ] = \"list\"\n    product: Annotated[\n        str,\n        Field(\n            description=\"The NEXRAD product to search for data\",\n            max_length=3,\n        ),\n    ] = \"N0B\"\n    radar: Annotated[\n        str,\n        Field(\n            description=\"The RADAR site to search for data\",\n            max_length=10,\n        ),\n    ] = \"DMX\"\n    start: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=\"Find RADARs available at the given time, default now\",\n        ),\n    ] = None\n\n\ndef available_radars(query: Schema):\n    \"\"\"\n    Return available RADAR sites for the given location and date!\n    \"\"\"\n    lat = query.lat\n    lon = query.lon\n    start_gts = query.start\n    if start_gts is None:\n        start_gts = utc()\n    params = {\n        \"lat\": lat,\n        \"lon\": lon,\n        \"start\": start_gts,\n    }\n    root = json_response_dict({\"radars\": []})\n    if lat is None or lon is None:\n        sql = \"\"\"\n        select id, name,\n        ST_x(geom) as lon, ST_y(geom) as lat, network\n        from stations where network in ('NEXRAD','ASR4','ASR11','TWDR')\n        ORDER by id asc\"\"\"\n    else:\n        sql = \"\"\"\n        select id, name, ST_x(geom) as lon, ST_y(geom) as lat, network,\n        ST_Distance(geom, ST_POINT(:lon, :lat, 4326)) as dist\n        from stations where network in ('NEXRAD','ASR4','ASR11','TWDR')\n        and ST_Distance(geom, ST_POINT(:lon, :lat, 4326)) < 3\n        ORDER by dist asc\n        \"\"\"\n    root[\"radars\"].append(\n        {\n            \"id\": \"USCOMP\",\n            \"name\": \"National Composite\",\n            \"lat\": 42.5,\n            \"lon\": -95,\n            \"type\": \"COMPOSITE\",\n        }\n    )\n    with get_sqlalchemy_conn(\"mesosite\") as pgconn:\n        res = pgconn.execute(sql_helper(sql), params)\n        for row in res:\n            radar = row[0]\n            if not os.path.isdir(\n                start_gts.strftime(f\"{BASEDIR}/%Y/%m/%d/GIS/ridge/{radar}\")\n            ):\n                continue\n            root[\"radars\"].append(\n                {\n                    \"id\": radar,\n                    \"name\": row[1],\n                    \"lat\": row[3],\n                    \"lon\": row[2],\n                    \"type\": row[4],\n                }\n            )\n    return root\n\n\ndef find_scans(root: dict, radar, product, sts, ets):\n    \"\"\"Find scan times with data\n\n    Note that we currently have a 500 length hard coded limit, so if we are\n    interested in a long term time period, we should lengthen out our\n    interval to look for files\n\n    Args:\n      root (dict): where we write our findings to\n      radar (string): radar we are interested in\n      product (string): NEXRAD product of interest\n      sts (datetime): start time to look for data\n      ets (datetime): end time to look for data\n    \"\"\"\n    now = sts\n    times = []\n    if radar == \"USCOMP\":\n        # These are every 5 minutes, so 288 per day\n        now -= timedelta(minutes=now.minute % 5)\n        while now < ets:\n            if os.path.isfile(\n                now.strftime(\n                    f\"{BASEDIR}/%Y/%m/%d/GIS/uscomp/\"\n                    f\"{product.lower()}_%Y%m%d%H%M.png\"\n                )\n            ):\n                times.append({\"ts\": now.strftime(\"%Y-%m-%dT%H:%MZ\")})\n            now += timedelta(minutes=5)\n    else:\n        while now < ets:\n            if os.path.isfile(\n                now.strftime(\n                    f\"{BASEDIR}/%Y/%m/%d/GIS/ridge/\"\n                    f\"{radar}/{product}/{radar}_{product}\"\n                    \"_%Y%m%d%H%M.png\"\n                )\n            ):\n                times.append({\"ts\": now.strftime(\"%Y-%m-%dT%H:%MZ\")})\n            now += timedelta(minutes=1)\n    if len(times) > 500:\n        # Do some filtering\n        interval = int((len(times) / 500.0) + 1)\n        times = times[::interval]\n\n    root[\"scans\"] = times\n\n\ndef is_realtime(sts: datetime) -> bool:\n    \"\"\"\n    Check to see if this time is close to realtime...\n    \"\"\"\n    if (utc() - sts).total_seconds() > 3600:\n        return False\n    return True\n\n\ndef list_files(query: Schema):\n    \"\"\"\n    List available NEXRAD files based on the form request\n    \"\"\"\n    radar = query.radar\n    product = query.product\n    start_gts = query.start\n    if start_gts is None:\n        start_gts = utc()\n    end_gts = query.end\n    if end_gts is None:\n        end_gts = start_gts + timedelta(minutes=1)\n    # practical limit here of 10 days\n    if (start_gts + timedelta(days=10)) < end_gts:\n        end_gts = start_gts + timedelta(days=10)\n    root = json_response_dict({\"scans\": []})\n    find_scans(root, radar, product, start_gts, end_gts)\n    if not root[\"scans\"] and is_realtime(start_gts):\n        now = start_gts - timedelta(minutes=10)\n        find_scans(root, radar, product, now, end_gts)\n\n    return root\n\n\ndef list_products(query: Schema):\n    \"\"\"\n    List available NEXRAD products\n    \"\"\"\n    radar = query.radar\n    now = query.start\n    if now is None:\n        now = utc()\n    root = json_response_dict({\"products\": []})\n    if radar == \"USCOMP\":\n        for dirname in [\"N0Q\", \"N0R\"]:\n            testfp = now.strftime(\n                f\"{BASEDIR}/%Y/%m/%d/GIS/\"\n                f\"uscomp/{dirname.lower()}_%Y%m%d0000.png\"\n            )\n            if os.path.isfile(testfp):\n                root[\"products\"].append(\n                    {\"id\": dirname, \"name\": NIDS.get(dirname, dirname)}\n                )\n    else:\n        basedir = now.strftime(f\"{BASEDIR}/%Y/%m/%d/GIS/ridge/{radar}\")\n        if os.path.isdir(basedir):\n            for dirname in glob.glob(os.path.join(basedir, \"???\")):\n                product_id = os.path.basename(dirname)\n                root[\"products\"].append(\n                    {\n                        \"id\": product_id,\n                        \"name\": NIDS.get(product_id, product_id),\n                    }\n                )\n    return root\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Get the key.\"\"\"\n    return (\n        f\"/json/radar.py|{environ['operation']}|{environ['radar']}|\"\n        f\"{environ['product']}|{environ['start']}|{environ['end']}|\"\n        f\"{environ['lat']}|{environ['lon']}\"\n    ).replace(\" \", \"\")\n\n\ndef get_mcexpire(environ: dict) -> int:\n    \"\"\"Figure out the expiration time for this entry.\"\"\"\n    if environ[\"operation\"] == \"available\":\n        return 3600\n    if environ[\"operation\"] == \"products\":\n        return 3600\n    if (\n        environ[\"start\"] is not None\n        and environ[\"end\"] is not None\n        and environ[\"end\"] < utc()\n    ):\n        return 3600\n    return 60\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=get_mckey,\n    memcacheexpire=get_mcexpire,\n)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    query: Schema = environ[\"_cgimodel_schema\"]\n\n    data = \"\"\n    if query.operation == \"list\":\n        data = list_files(query)\n    elif query.operation == \"available\":\n        data = available_radars(query)\n    elif query.operation == \"products\":\n        data = list_products(query)\n\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return json.dumps(data).encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/raob.py",
    "content": "\"\"\".. title:: Sounding/RAOB JSON Service\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/raob.py\n-------------------------------\n\nThis service emits a JSON representating of sounding data.  You can approach\nthis service either with a sounding station and timestamp or just a timestamp.\n\nChangelog\n---------\n\n- 2024-07-24: Initial documentation\n\nExample Usage\n-------------\n\nProvide the Omaha sounding for 2024-07-24 00:00 UTC:\n\nhttps://mesonet.agron.iastate.edu/json/raob.py?\\\nstation=KOAX&ts=2024-07-24T00:00:00Z\n\nProvide all soundings for the morning of 2024-03-24 12Z, but only include 500\nhPa data:\n\nhttps://mesonet.agron.iastate.edu/json/raob.py?\\\nts=2024-03-24T12:00:00Z&pressure=500\n\n\"\"\"\n\nimport json\nfrom datetime import datetime, timezone\n\nimport numpy as np\nimport pandas as pd\nfrom pydantic import Field, field_validator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\njson.encoder.FLOAT_REPR = lambda o: format(o, \".2f\")\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    pressure: int = Field(-1, description=\"Pressure Level of Interest\")\n    station: str = Field(\n        default=None,\n        description=\"3(assuming K***) or 4 char Station Identifier\",\n        min_length=3,\n        max_length=4,\n        pattern=\"^[A-Z0-9_]{3,4}$\",\n    )\n    ts: datetime = Field(\n        ...,\n        description=\"Timestamp of Interest, ISO-8601 preferred\",\n    )\n\n    @field_validator(\"ts\", mode=\"before\")\n    @classmethod\n    def rectify_ts(cls, value):\n        \"\"\"Ensure we have a valid timestamp.\"\"\"\n        if value.find(\"T\") > 0:\n            # Assume ISO\n            dt = datetime.strptime(value[:16], \"%Y-%m-%dT%H:%M\")\n        else:\n            dt = datetime.strptime(value[:12], \"%Y%m%d%H%M\")\n\n        # Matches the archive range\n        if dt.year < 1946 or dt.year > utc().year:\n            raise ValueError(\"Timestamp out of archive bounds.\")\n\n        return dt.replace(tzinfo=timezone.utc)\n\n    @field_validator(\"station\", mode=\"before\")\n    @classmethod\n    def rectify_station(cls, value):\n        \"\"\"Ensure we have a valid station identifier.\"\"\"\n        return value if len(value) == 4 else f\"K{value}\"\n\n\ndef safe(val):\n    \"\"\"Be careful\"\"\"\n    if val is None or np.isnan(val):\n        return None\n    return float(val)\n\n\ndef run(ts, sid, pressure):\n    \"\"\"Actually do some work!\"\"\"\n    res = json_response_dict({\"profiles\": []})\n\n    stationlimiter = \"\"\n    params = {\"valid\": ts, \"pid\": pressure}\n    if sid is not None:\n        stationlimiter = \" f.station = :sid and \"\n        params[\"sid\"] = sid\n        if sid.startswith(\"_\"):\n            # Magic here\n            nt = NetworkTable(\"RAOB\", only_online=False)\n            ids = (\n                nt.sts.get(sid, {})\n                .get(\"name\", f\" -- {sid}\")\n                .split(\"--\")[1]\n                .strip()\n                .split()\n            )\n            if len(ids) > 1:\n                stationlimiter = \" f.station = ANY(:sid) and \"\n                params[\"sid\"] = ids\n    pressurelimiter = \"\"\n    if pressure > 0:\n        pressurelimiter = \" and p.pressure = :pid \"\n    table = f\"raob_profile_{ts:%Y}\"\n    with get_sqlalchemy_conn(\"raob\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT f.station, p.pressure, p.height,\n            round(p.tmpc::numeric,1) as tmpc,\n            round(p.dwpc::numeric,1) as dwpc, p.drct,\n            round((p.smps * 1.94384)::numeric,0) as sknt\n            from {table} p JOIN raob_flights f\n                on (p.fid = f.fid)\n            WHERE {stationlimiter} f.valid = :valid {pressurelimiter}\n            ORDER by f.station, p.pressure DESC\n            \"\"\",\n                table=table,\n                stationlimiter=stationlimiter,\n                pressurelimiter=pressurelimiter,\n            ),\n            conn,\n            params=params,\n            index_col=None,\n        )\n    for station, gdf in df.groupby(\"station\"):\n        profile = []\n        for _, row in gdf.iterrows():\n            profile.append(\n                dict(\n                    pres=safe(row[\"pressure\"]),\n                    hght=safe(row[\"height\"]),\n                    tmpc=safe(row[\"tmpc\"]),\n                    dwpc=safe(row[\"dwpc\"]),\n                    drct=safe(row[\"drct\"]),\n                    sknt=safe(row[\"sknt\"]),\n                )\n            )\n        res[\"profiles\"].append(\n            dict(\n                station=station,\n                valid=ts.strftime(ISO8601),\n                profile=profile,\n            )\n        )\n    return json.dumps(res)\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Figure out the key.\"\"\"\n    return (\n        f\"/json/raob/{environ['ts']:%Y%m%d%H%M}/{environ['station']}/\"\n        f\"{environ['pressure']}\"\n    )\n\n\n@iemapp(memcachekey=get_mckey, memcacheexpire=600, help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    data = run(environ[\"ts\"], environ[\"station\"], environ[\"pressure\"])\n\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return data.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/reference.py",
    "content": "\"\"\".. title:: IEM Reference Data from pyIEM python library\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/reference.py\n------------------------------------\n\nThis service simply exposes the reference data bundled within the\n`pyIEM <https://github.com/akrherz/pyiem>`_ python library.  Not all fields\nfrom the `pyiem.reference` namespace are exposed at the moment.\n\nChangelog\n---------\n\n- 2025-02-28: Added VTEC Action, Phenomena, Significance reference data\n- 2024-07-24: Initial documentation release\n\nExample Usage\n-------------\n\nReturn all reference data in JSON format.\n\nhttps://mesonet.agron.iastate.edu/json/reference.py\n\n\"\"\"\n\nimport json\n\nfrom pyiem import reference\nfrom pyiem.nws.vtec import VTEC_ACTION, VTEC_PHENOMENA, VTEC_SIGNIFICANCE\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n\n\n@iemapp(\n    memcachekey=\"/json/reference/v3\",\n    help=__doc__,\n    schema=Schema,\n    memcacheexpire=86_400,\n)\ndef application(_environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return json.dumps(\n        json_response_dict(\n            {\n                \"prodDefinitions\": reference.prodDefinitions,\n                \"vtec_action\": VTEC_ACTION,  # should have been status, sigh\n                \"vtec_phenomena\": VTEC_PHENOMENA,\n                \"vtec_significance\": VTEC_SIGNIFICANCE,\n            }\n        )\n    )\n"
  },
  {
    "path": "pylib/iemweb/json/ridge_current.py",
    "content": "\"\"\".. title:: IEM RIDGE Current Metadata\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/ridge_current.py\n----------------------------------------\n\nThe IEM processes a number of NWS Level III products into a geo-referenced\nPNG format.  This service provides a metadata overview of the most recent\nimages for a given product.\n\nChangelog\n---------\n\n- 2026-03-03: Root attribute `generation_time_utc` was renamed `generated_at`\n  so to match a common IEM nomenclature.\n\nExample Usage\n-------------\n\nProvide the most recent N0B product metadata:\n\nhttps://mesonet.agron.iastate.edu/json/ridge_current.py?product=N0B\n\n\"\"\"\n\nimport glob\nimport json\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.util import LOG\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    product: Annotated[\n        str, Field(description=\"Radar product to aggregate\", max_length=3)\n    ] = \"N0B\"\n\n\ndef run(product):\n    \"\"\"Actually run for this product\"\"\"\n\n    res = json_response_dict(\n        {\n            \"product\": product,\n            \"meta\": [],\n        }\n    )\n\n    for fn in glob.glob(\n        f\"/mesonet/ldmdata/gis/images/4326/ridge/???/{product}_0.json\"\n    ):\n        try:\n            with open(fn, encoding=\"utf-8\") as fh:\n                j = json.load(fh)\n            res[\"meta\"].append(j[\"meta\"])\n        except Exception as exp:\n            LOG.info(exp)\n\n    return json.dumps(res)\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=lambda x: f\"/json/ridge_current_{x['product']}.json\",\n    memcacheexpire=30,\n)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    product = environ[\"product\"].upper()\n\n    res = run(product)\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return res\n"
  },
  {
    "path": "pylib/iemweb/json/sbw_by_point.py",
    "content": "\"\"\".. title:: Storm Based Warnings by Latitude and Longitude Point\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/sbw_by_point.py\n---------------------------------------\n\nReturns NWS Storm Based Warnings for a provided latitude and longitude point.\n\nChangelog\n---------\n\n- 2026-02-26: Renamed top level metadata `generation_time` to `generated_at`\n  for better IEM app consistency.\n- 2024-10-16: Added ``buffer`` parameter to expand the search area around the\n  provided point.  The units are in decimal degrees with a range limited\n  between 0 and 1.\n- 2024-07-23: Initial documentation update and migration to pydantic.\n\nExamples\n--------\n\nReturn all storm based warnings that were active at a given time for a given\nlatitude and longitude point.\n\nhttps://mesonet.agron.iastate.edu/json/sbw_by_point.py?lat=41.99&lon=-92.0\\\n&valid=2024-07-23T12:00:00Z\n\nReturn all storm based warnings for a given latitude and longitude point valid\nduring 2023 in Excel format.\n\nhttps://mesonet.agron.iastate.edu/json/sbw_by_point.py?lat=41.99&lon=-92.0\\\n&sdate=2023-01-01&edate=2024-01-01&fmt=xlsx\n\nSame request, but in CSV format.\n\nhttps://mesonet.agron.iastate.edu/json/sbw_by_point.py?lat=41.99&lon=-92.0\\\n&sdate=2023-01-01&edate=2024-01-01&fmt=csv\n\nProvide all storm based warnings for a point in Iowa and buffer this point by\n0.5 degrees.\n\nhttps://mesonet.agron.iastate.edu/json/sbw_by_point.py?lat=41.99&lon=-92.0\\\n&buffer=0.5\n\n\"\"\"\n\nimport json\nfrom datetime import date, datetime\nfrom io import BytesIO, StringIO\n\nimport numpy as np\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field, field_validator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.nws.vtec import VTEC_PHENOMENA, VTEC_SIGNIFICANCE, get_ps_string\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import (\n    CALLBACK_FIELD,\n    LATITUDE_FIELD,\n    LONGITUDE_FIELD,\n)\nfrom iemweb.mlib import rectify_wfo\nfrom iemweb.util import json_response_dict\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    buffer: float = Field(\n        0.0,\n        description=\"Buffer in decimal degrees around point\",\n        ge=0,\n        le=1,\n    )\n    fmt: str = Field(\"json\", description=\"The format of the response\")\n    lat: LATITUDE_FIELD = 41.99\n    lon: LONGITUDE_FIELD = -92.0\n    sdate: date = Field(default=date(2002, 1, 1), description=\"Start Date\")\n    edate: date = Field(default=date(2099, 1, 1), description=\"End Date\")\n    valid: AwareDatetime = Field(\n        default=None,\n        description=\"If provided, only provide results valid at this time.\",\n    )\n\n    @field_validator(\"sdate\", \"edate\", mode=\"before\")\n    @classmethod\n    def check_dates(cls, value):\n        \"\"\"Forgive some things.\"\"\"\n        if value is None:\n            return None\n        return datetime.strptime(value.replace(\"/\", \"-\"), \"%Y-%m-%d\").date()\n\n\ndef make_url(row):\n    \"\"\"Build URL.\"\"\"\n    return (\n        f\"/vtec/?year={row['vtec_year']}&wfo={rectify_wfo(row['wfo'])}&\"\n        f\"phenomena={row['phenomena']}&significance={row['significance']}&\"\n        f\"eventid={row['eventid']:04.0f}\"\n    )\n\n\ndef get_events(environ: dict):\n    \"\"\"Get Events\"\"\"\n    data = json_response_dict(\n        {\n            \"sbws\": [],\n            \"lon\": environ[\"lon\"],\n            \"lat\": environ[\"lat\"],\n            \"buffer\": environ[\"buffer\"],\n            \"valid\": None,\n        }\n    )\n    valid_limiter = \"\"\n    params = {\n        \"lon\": environ[\"lon\"],\n        \"lat\": environ[\"lat\"],\n        \"buffer\": environ[\"buffer\"],\n        \"sdate\": environ[\"sdate\"],\n        \"edate\": environ[\"edate\"],\n        \"valid\": environ[\"valid\"],\n    }\n    if environ[\"valid\"] is not None:\n        valid_limiter = \" and issue <= :valid and expire > :valid \"\n        data[\"valid\"] = environ[\"valid\"].strftime(ISO8601)\n\n    ptsql = \"ST_Point(:lon, :lat, 4326)\"\n    if environ[\"buffer\"] > 0:\n        ptsql = \"ST_Buffer(ST_Point(:lon, :lat, 4326), :buffer)\"\n\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    select vtec_year, wfo, significance, phenomena,\n    to_char(issue at time zone 'UTC',\n                'YYYY-MM-DDThh24:MIZ') as iso_issued,\n        to_char(expire at time zone 'UTC',\n                'YYYY-MM-DDThh24:MIZ') as iso_expired,\n    to_char(issue at time zone 'UTC',\n                'YYYY-MM-DD hh24:MI') as issued,\n        to_char(expire at time zone 'UTC',\n                'YYYY-MM-DD hh24:MI') as expired,\n        eventid,\n    tml_direction, tml_sknt, hvtec_nwsli, windtag, hailtag, tornadotag,\n    damagetag from sbw where status = 'NEW' and\n    ST_Intersects(geom, {ptsql}) and issue > :sdate and expire < :edate\n    {valid_limiter} ORDER by issue ASC\n        \"\"\",\n                ptsql=ptsql,\n                valid_limiter=valid_limiter,\n            ),\n            conn,\n            params=params,\n        )\n    if df.empty:\n        return data, df\n    df = df.replace({np.nan: None})\n    df[\"name\"] = df[[\"phenomena\", \"significance\"]].apply(\n        lambda x: get_ps_string(x.iloc[0], x.iloc[1]), axis=1\n    )\n    df[\"ph_name\"] = df[\"phenomena\"].map(VTEC_PHENOMENA)\n    df[\"sig_name\"] = df[\"significance\"].map(VTEC_SIGNIFICANCE)\n    # Construct a URL\n    df[\"url\"] = df.apply(make_url, axis=1)\n    return data, df\n\n\ndef to_json(data, df):\n    \"\"\"Make JSON.\"\"\"\n    for _, row in df.iterrows():\n        data[\"sbws\"].append(\n            {\n                \"url\": row[\"url\"],\n                \"phenomena\": row[\"phenomena\"],\n                \"eventid\": row[\"eventid\"],\n                \"significance\": row[\"significance\"],\n                \"wfo\": row[\"wfo\"],\n                \"issue\": row[\"iso_issued\"],\n                \"expire\": row[\"iso_expired\"],\n                \"tml_direction\": row[\"tml_direction\"],\n                \"tml_sknt\": row[\"tml_sknt\"],\n                \"hvtec_nwsli\": row[\"hvtec_nwsli\"],\n                \"name\": row[\"name\"],\n                \"ph_name\": row[\"ph_name\"],\n                \"sig_name\": row[\"sig_name\"],\n                \"issue_windtag\": row[\"windtag\"],\n                \"issue_hailtag\": row[\"hailtag\"],\n                \"issue_tornadotag\": row[\"tornadotag\"],\n                \"issue_damagetag\": row[\"damagetag\"],\n                \"issue_tornadodamagetag\": (\n                    row[\"damagetag\"] if row[\"phenomena\"] == \"TO\" else None\n                ),\n                \"issue_thunderstormdamagetag\": (\n                    row[\"damagetag\"] if row[\"phenomena\"] == \"SV\" else None\n                ),\n            }\n        )\n    return data\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    parse_times=False,\n)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n\n    fmt = environ[\"fmt\"]\n    data, df = get_events(environ)\n    if fmt == \"xlsx\":\n        fn = f\"sbw_{environ['lat']:.4f}N_{0 - environ['lon']:.4f}W.xlsx\"\n        headers = [\n            (\"Content-type\", EXL),\n            (\"Content-disposition\", f\"attachment; Filename={fn}\"),\n        ]\n        start_response(\"200 OK\", headers)\n        bio = BytesIO()\n        df.to_excel(bio, index=False)\n        return [bio.getvalue()]\n    if fmt == \"csv\":\n        fn = f\"sbw_{environ['lat']:.4f}N_{0 - environ['lon']:.4f}W.csv\"\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-disposition\", f\"attachment; Filename={fn}\"),\n        ]\n        start_response(\"200 OK\", headers)\n        bio = StringIO()\n        df.to_csv(bio, index=False)\n        return [bio.getvalue().encode(\"utf-8\")]\n    res = to_json(data, df)\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return [json.dumps(res).encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/json/snowfall_observations_v2.py",
    "content": "\"\"\".. title:: NWS 6 Hour Snowfall Observations v2 service\n\nReturn to `API Services </api/#json>`_\n\nThis service intends to replicate a JSON file make available by NWS Chicago.\n\nChangelog\n---------\n\n- 2026-03-17: Added hack around WxCoder issue with 6z obs not coming\n  at the right time.  Also converted \"nan\" values to \"M\" in response.\n- 2025-11-17: Initial Release\n\nExample Requests\n----------------\n\nReturn current 48-hour snowfall totals for NWS Davenport\n\nhttps://mesonet.agron.iastate.edu/json/snowfall_observations_v2.py?wfo=DVN\n\nSame for NWS Miami (in case they ever get snow, hehe.)\n\nhttps://mesonet.agron.iastate.edu/json/snowfall_observations_v2.py?wfo=MFL\n\n\"\"\"\n\nfrom datetime import timedelta\nfrom typing import Annotated\nfrom zoneinfo import ZoneInfo\n\nimport httpx\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    wfo: Annotated[\n        str,\n        Field(\n            description=\"The WFO to return data for\",\n            pattern=\"^[A-Z]{3}$\",\n        ),\n    ] = \"DVN\"\n\n\ndef dowork(wfo: str) -> list:\n    \"\"\"Actually do stuff\"\"\"\n    nt = NetworkTable(\"WFO\")\n    if wfo not in nt.sts:\n        raise IncompleteWebRequest(\"Unknown WFO\")\n    tzinfo = ZoneInfo(nt.sts[wfo][\"tzname\"])\n    rows = []\n    time_columns = []  # Track column order\n\n    now = utc()\n    for _ in range(49):\n        if now.hour % 6 == 0:\n            localdt = now.astimezone(tzinfo)\n            tidx = f\"{localdt:%m/%d: %-I %p}\"\n            time_columns.append(tidx)  # Track insertion order\n            service = (\n                \"http://mesonet.agron.iastate.edu/\"\n                f\"api/1/nws/snowfall_6hour.json?valid={now:%Y-%m-%dT%H}:00\"\n                f\"&wfo={wfo}\"\n            )\n            try:\n                resp = httpx.get(service, timeout=15)\n                resp.raise_for_status()\n                jdata = resp.json()\n                if not jdata[\"data\"] and now.hour == 6:\n                    # Hack around WxCoder issue with 6z obs not coming at the\n                    # right time. Try 5 Z too\n                    m1 = now - timedelta(hours=1)\n                    service = (\n                        \"http://mesonet.agron.iastate.edu/\"\n                        \"api/1/nws/snowfall_6hour.json?\"\n                        f\"valid={m1:%Y-%m-%dT%H}:00&wfo={wfo}\"\n                    )\n                    resp = httpx.get(service, timeout=15)\n                    resp.raise_for_status()\n                    jdata = resp.json()\n            except Exception:\n                continue\n            rows.extend(\n                {\n                    \"Location\": entry[\"name\"],\n                    \"tidx\": tidx,\n                    \"value\": entry[\"value\"],\n                }\n                for entry in jdata[\"data\"]\n            )\n\n        now -= timedelta(hours=1)\n\n    if not rows:\n        return \"[]\"\n\n    obs = pd.DataFrame(rows).pivot(\n        index=\"Location\",\n        columns=\"tidx\",\n        values=\"value\",\n    )\n    # Reindex columns to preserve chronological order\n    obs = obs.reindex(columns=time_columns)\n    obs[\"Total 48 hr Snow\"] = obs.sum(axis=1)\n    obs.loc[\n        (obs[\"Total 48 hr Snow\"] > 0) & (obs[\"Total 48 hr Snow\"] < 0.1),\n        \"Total 48 hr Snow\",\n    ] = 0.0001\n    # Cleanup trace values\n    obs = obs.replace({0.0001: \"T\"})\n    # Represent all values as a string with at most 1 decimal\n    obs = obs.map(lambda x: f\"{x:.1f}\" if isinstance(x, float) else x)\n\n    return (\n        obs.reset_index()\n        .to_json(orient=\"records\", date_format=\"iso\")\n        .replace('\"nan\"', '\"M\"')\n    )\n\n\n@iemapp(\n    help=__doc__,\n    memcachekey=lambda env: f\"/snowfall_observations_v2/{env['wfo']}\",\n    memcacheexpire=300,\n    schema=Schema,\n)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    data = dowork(environ[\"wfo\"])\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return data\n"
  },
  {
    "path": "pylib/iemweb/json/spc_bysize.py",
    "content": "\"\"\".. title:: SPC Outlooks Sorted by Size\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/spc_bysize.py\n-------------------------------------\n\nThis service emits unofficial IEM accounting of SPC outlooks sorted by size.\nThis service is great at finding problems in the IEM archive :(  Attempts\nare made to generate links to the SPC website, to confirm the entries listed.\n\nChangelog\n---------\n\n- 2025-04-07: Added sort={asc|desc} to control sort order.\n- 2024-08-14: Documentation Update\n\nExample Requests\n----------------\n\nGet the largest day 3 slight risks since 2020\n\nhttps://mesonet.agron.iastate.edu/json/spc_bysize.py\\\n?day=3&threshold=SLGT&category=CATEGORICAL&syear=2020\n\n\"\"\"\n\nimport json\nimport time\nfrom datetime import date, timedelta\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.nws.products.spcpts import imgsrc_from_row\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    category: Annotated[str, Field(description=\"SPC outlook category\")] = (\n        \"CATEGORICAL\"\n    )\n    day: Annotated[\n        int, Field(description=\"SPC outlook day to query\", ge=1, le=8)\n    ]\n    sort: Annotated[\n        str,\n        Field(\n            description=\"how to sort the results,\",\n            pattern=\"^(asc|desc|ASC|DESC)$\",\n        ),\n    ] = \"desc\"\n    syear: Annotated[\n        int, Field(description=\"Inclusive start year to query\")\n    ] = 1987\n    threshold: Annotated[\n        str, Field(description=\"SPC outlook threshold to query\")\n    ]\n\n\n@with_sqlalchemy_conn(\"postgis\")\ndef dowork(environ, conn: Connection = None) -> str:\n    \"\"\"Actually do stuff\"\"\"\n\n    data = json_response_dict({\"outlooks\": []})\n    hits = []\n    sts = time.perf_counter()\n    res = conn.execute(\n        sql_helper(\n            \"\"\"\n        SELECT product_issue at time zone 'UTC' as i,\n        expire at time zone 'UTC' as e,\n        ST_Area(st_transform(geom, 9311)) / 1000000. as area_sqkm, cycle,\n        product_issue at time zone 'UTC' as product_issue, category, day\n        from spc_outlooks WHERE outlook_type = :ot and\n        day = :day and threshold = :threshold\n        and category = :cat and issue > :sdate and geom is not null\n        ORDER by area_sqkm {order} NULLS LAST LIMIT 100\n    \"\"\",\n            order=\"ASC\" if environ[\"sort\"].lower() == \"asc\" else \"DESC\",\n        ),\n        {\n            \"day\": environ[\"day\"],\n            \"threshold\": environ[\"threshold\"],\n            \"cat\": environ[\"category\"],\n            \"ot\": \"F\" if environ[\"category\"].startswith(\"F\") else \"C\",\n            \"sdate\": date(environ[\"syear\"], 1, 1),\n        },\n    )\n    data[\"query_time[s]\"] = round(time.perf_counter() - sts, 2)\n    for row in res.mappings():\n        key = f\"{row['e']:%Y%m%d}\"\n        if key in hits:\n            continue\n        hits.append(key)\n        data[\"outlooks\"].append(\n            {\n                \"date\": f\"{(row['e'] - timedelta(hours=13)):%Y-%m-%d}\",\n                \"issued\": row[\"i\"].strftime(ISO8601),\n                \"area_sqkm\": round(row[\"area_sqkm\"], 2),\n                \"imgsrc\": imgsrc_from_row(row),\n                \"cycle\": row[\"cycle\"],\n            }\n        )\n        if len(data[\"outlooks\"]) >= 10:\n            break\n    return json.dumps(data)\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Figure out the key for this request.\"\"\"\n    return (\n        f\"/json/spc_bysize.json|{environ['category']}|{environ['day']}|\"\n        f\"{environ['syear']}|{environ['threshold']}|{environ['sort']}\"\n    ).replace(\" \", \"\")\n\n\n@iemapp(help=__doc__, schema=Schema, memcachekey=get_mckey, memcacheexpire=300)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    res = dowork(environ)\n    return res.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/spcmcd.py",
    "content": "\"\"\".. title:: SPC MCD by Point\n\nReturn to `API Services </api/#json>`_\n\nThis service queries the archive of Storm Prediction Center (SPC) Mesoscale\nConvective Discussions (MCD) for a given lat/lon point.\n\nChangelog\n---------\n\n- 2026-03-10: Prevent NaN values in the response.\n- 2025-03-12: Added new Most Probable Intensity tags for MCDs\n- 2024-07-09: Add csv and excel output formats\n\nExample Requests\n----------------\n\nReturn MCDs issued for Ames, IA in JSON, then CSV, then Excel format.\n\nhttps://mesonet.agron.iastate.edu/json/spcmcd.py?lat=42.0&lon=-95.0\n\nhttps://mesonet.agron.iastate.edu/json/spcmcd.py?lat=42.0&lon=-95.0&fmt=csv\n\nhttps://mesonet.agron.iastate.edu/json/spcmcd.py?lat=42.0&lon=-95.0&fmt=excel\n\n\"\"\"\n\nimport json\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import (\n    CALLBACK_FIELD,\n    LATITUDE_FIELD,\n    LONGITUDE_FIELD,\n)\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    fmt: Annotated[\n        str,\n        Field(\n            description=\"The format to return, either json, excel, or csv\",\n            pattern=\"^(json|excel|csv)$\",\n        ),\n    ] = \"json\"\n    lat: LATITUDE_FIELD = 42.0\n    lon: LONGITUDE_FIELD = -95.0\n\n\ndef dowork(lon, lat) -> pd.DataFrame:\n    \"\"\"Actually do stuff\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        mcds = pd.read_sql(\n            sql_helper(\"\"\"\n        SELECT issue at time zone 'UTC' as i,\n        expire at time zone 'UTC' as e, watch_confidence,\n        num as product_num, product_id, year, concerning,\n        most_prob_tornado, most_prob_hail, most_prob_gust from mcd WHERE\n        ST_Contains(geom, ST_Point(:lon, :lat, 4326))\n        ORDER by product_id DESC\n    \"\"\"),\n            conn,\n            params={\"lon\": lon, \"lat\": lat},\n        )\n    if not mcds.empty:\n        mcds[\"spcurl\"] = (\n            \"https://www.spc.noaa.gov/products/md/\"\n            + mcds[\"year\"].astype(str)\n            + \"/md\"\n            + mcds[\"product_num\"].apply(lambda x: f\"{x:04.0f}\")\n            + \".html\"\n        )\n        mcds[\"utc_issue\"] = mcds[\"i\"].dt.strftime(ISO8601)\n        mcds[\"utc_expire\"] = mcds[\"e\"].dt.strftime(ISO8601)\n        mcds[\"product_href\"] = (\n            \"https://mesonet.agron.iastate.edu/p.php?pid=\" + mcds[\"product_id\"]\n        )\n    return mcds.drop(columns=[\"i\", \"e\"])\n\n\ndef clean(value):\n    \"\"\"Prevent NaN.\"\"\"\n    return None if pd.isna(value) else value\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    query: Schema = environ[\"_cgimodel_schema\"]\n\n    mcds = dowork(query.lon, query.lat)\n    if query.fmt == \"json\":\n        data = json_response_dict(\n            {\n                \"mcds\": [],\n                \"params\": {\n                    \"lon\": query.lon,\n                    \"lat\": query.lat,\n                },\n            }\n        )\n        for _, row in mcds.iterrows():\n            data[\"mcds\"].append(\n                dict(\n                    spcurl=row[\"spcurl\"],\n                    year=row[\"year\"],\n                    utc_issue=row[\"utc_issue\"],\n                    utc_expire=row[\"utc_expire\"],\n                    product_num=row[\"product_num\"],\n                    product_id=row[\"product_id\"],\n                    product_href=row[\"product_href\"],\n                    concerning=clean(row[\"concerning\"]),\n                    watch_confidence=clean(row[\"watch_confidence\"]),\n                    most_prob_tornado=clean(row[\"most_prob_tornado\"]),\n                    most_prob_hail=clean(row[\"most_prob_hail\"]),\n                    most_prob_gust=clean(row[\"most_prob_gust\"]),\n                )\n            )\n        headers = [(\"Content-type\", \"application/json\")]\n        start_response(\"200 OK\", headers)\n        return json.dumps(data).encode(\"ascii\")\n\n    if query.fmt == \"excel\":\n        headers = [\n            (\"Content-type\", \"application/vnd.ms-excel\"),\n            (\"Content-Disposition\", \"attachment; filename=spcmcd.xls\"),\n        ]\n        start_response(\"200 OK\", headers)\n        with BytesIO() as bio:\n            mcds.to_excel(bio, index=False)\n            return bio.getvalue()\n\n    headers = [\n        (\"Content-type\", \"text/csv\"),\n        (\"Content-Disposition\", \"attachment; filename=spcmcd.csv\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return mcds.to_csv(index=False).encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/spcoutlook.py",
    "content": "\"\"\".. title:: SPC Outlook Service\n\nReturn to `API Services </api/>`_.\n\nDocumentation for /json/spcoutlook.py\n-------------------------------------\n\nThis service provides access to the Storm Prediction Center's Convective\nOutlook products.  This service is a nasty bit of confusion for the three or\nfour different modes that it can be run in.  Those modes being:\n\n- Provide the current day X outlook for a given point (`current=1` param).\n- Provide all day X outlooks for a given point.\n- Provide the day X outlook for a given point and given valid time\n  (`time` param).\n- Provide the most recent X number of outlooks for each threshold level for\n  a given lat/lon point (`last` param).\n\nThere are examples below or feel free to yell at daryl for big a mess this is.\n\nChangelog\n---------\n\n- 2026-04-17: Correct returned threshold value to not include CIGs.\n- 2026-03-22: Add a new field to the JSON response called `conditional`,\n  which will indicate the CIG1-3 or legacy SIGN for current queries.\n- 2026-03-06: Sadly, the recently changed `time` parameter handling created\n  additional service ambiguity.  There is now an additional boolean\n  parameter called `current`, which when enabled causes the service to\n  ignore the `time` parameter and instead return the current outlook for the\n  given day.\n- 2026-03-03: The ill conceived support for time being `now` or `current`\n  was removed.\n- 2026-02-26: Renamed top level metadata `generation_time` to `generated_at`\n  for better consistency across IEM services.\n\nExample Usage\n-------------\n\nGet all the day 1 outlooks for Pierre, South Dakota.  First in JSON, then\nCSV, and finally Excel.\n\nhttps://mesonet.agron.iastate.edu/json/spcoutlook.py\\\n?lat=44.368&lon=-100.336&day=1\nhttps://mesonet.agron.iastate.edu/json/spcoutlook.py\\\n?lat=44.368&lon=-100.336&day=1&fmt=csv\nhttps://mesonet.agron.iastate.edu/json/spcoutlook.py\\\n?lat=44.368&lon=-100.336&day=1&fmt=excel\n\nProvide the day 1 outlook for Pierre, SD valid at 8 UTC on 3 Aug 2024\n\nhttps://mesonet.agron.iastate.edu/json/spcoutlook.py\\\n?lat=44.368&lon=-100.336&day=1&time=2024-08-03T08:00Z\n\nProvide the most recent outlook for each categorical threshold for day 2\nfor Washington, DC\n\nhttps://mesonet.agron.iastate.edu/json/spcoutlook.py\\\n?lat=38.907&lon=-77.037&day=2&last=1\n\nReturn the last outlook of each threshold for day 4 for Washington, DC\n\nhttps://mesonet.agron.iastate.edu/json/spcoutlook.py\\\n?lat=38.907&lon=-77.037&day=4&last=1&cat=ANY%20SEVERE\n\nProvide the current day 2 outlook for Washington, DC\n\nhttps://mesonet.agron.iastate.edu/json/spcoutlook.py\\\n?lat=38.907&lon=-77.037&day=2&current=1\n\nProvide the day 2 outlook that was valid at 20 UTC on 6 March 2026.  This is\nreturning the day 2 forecast made on 5 March 2026.\n\nhttps://mesonet.agron.iastate.edu/json/spcoutlook.py\\\n?lat=38.907&lon=-77.037&day=2&time=2026-03-06T20:00:00Z\n\n\"\"\"\n\nimport json\nfrom datetime import datetime, timedelta\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.nws.products.spcpts import THRESHOLD_ORDER\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD, LATITUDE_FIELD, LONGITUDE_FIELD\nfrom iemweb.util import json_response_dict\n\nVALID_CATS = [\n    \"ANY SEVERE\",\n    \"CATEGORICAL\",\n    \"CRITICAL FIRE WEATHER AREA\",\n    \"DRY THUNDERSTORM CRITICAL FIRE WEATHER AREA\",\n    \"FIRE WEATHER CATEGORICAL\",\n    \"HAIL\",\n    \"TORNADO\",\n    \"WIND\",\n]\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    current: Annotated[\n        bool,\n        Field(\n            description=(\n                \"Return the currently valid outlook for the given day and \"\n                \"category. The `time` parameter is ignored when this is \"\n                \"enabled.\"\n            )\n        ),\n    ] = False\n    fmt: Annotated[\n        str,\n        Field(\n            description=(\n                \"The format to return data in, either json, excel, or csv\"\n            ),\n            pattern=\"^(json|excel|csv)$\",\n        ),\n    ] = \"json\"\n    lat: LATITUDE_FIELD = 42.0\n    lon: LONGITUDE_FIELD = -95.0\n    last: Annotated[\n        int, Field(description=\"Limit to last N outlooks, 0 for all\", ge=0)\n    ] = 0\n    day: Annotated[\n        int, Field(ge=1, le=8, description=\"Day to query for, 1-8\")\n    ] = 1\n    time: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=(\n                \"Optional specification for a valid timestamp to query \"\n                \"outlooks for.\"\n            )\n        ),\n    ] = None\n    cat: Annotated[\n        str,\n        Field(\n            description=(\n                \"A label for the category of the outlook type. Valid values \"\n                f\"are: {', '.join(VALID_CATS)}\"\n            )\n        ),\n    ] = \"CATEGORICAL\"\n\n\ndef get_order(threshold):\n    \"\"\"Lookup a threshold and get its rank, higher is more extreme\"\"\"\n    if threshold not in THRESHOLD_ORDER:\n        return -1\n    return THRESHOLD_ORDER.index(threshold)\n\n\ndef process_df(outlooks: pd.DataFrame) -> pd.DataFrame:\n    \"\"\"Condition the dataframe.\"\"\"\n    if outlooks.empty:\n        return outlooks\n    outlooks[\"threshold_rank\"] = outlooks[\"threshold\"].apply(get_order)\n    return outlooks\n\n\ndef dotime(\n    ts: datetime, lon: float, lat: float, day: int, cat: str\n) -> tuple[pd.DataFrame, datetime]:\n    \"\"\"Query for Outlook based on some timestamp\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        outlooks = pd.read_sql(\n            sql_helper(\"\"\"\n        SELECT issue at time zone 'UTC' as i,\n        expire at time zone 'UTC' as e,\n        product_issue at time zone 'UTC' as v,\n        threshold, category from spc_outlooks where\n        product_issue = (\n            select product_issue from spc_outlook where\n            issue <= :ts and expire > :ts and day = :day\n            and outlook_type = 'C' ORDER by product_issue DESC LIMIT 1)\n        and ST_Contains(geom, ST_Point(:lon, :lat, 4326))\n        and day = :day and outlook_type = 'C' and category = :cat\n        \"\"\"),\n            conn,\n            params={\"lon\": lon, \"lat\": lat, \"day\": day, \"cat\": cat, \"ts\": ts},\n            index_col=None,\n        )\n    return process_df(outlooks), ts\n\n\ndef dowork(lon: float, lat: float, day: int, cat: str) -> pd.DataFrame:\n    \"\"\"Actually do stuff\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        # Need to compute SIGN seperately\n        outlooks = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH data as (\n            SELECT issue at time zone 'UTC' as i,\n            expire at time zone 'UTC' as e,\n            product_issue at time zone 'UTC' as v,\n            o.threshold, category, t.priority,\n            row_number() OVER (PARTITION by expire\n                ORDER by priority DESC NULLS last, issue ASC) as rank\n            from spc_outlooks o, spc_outlook_thresholds t\n            where o.threshold = t.threshold and\n            ST_Contains(geom, ST_Point(:lon, :lat, 4326))\n            and day = :day and outlook_type = 'C' and category = :cat\n            and o.threshold not in ('TSTM', 'SIGN', 'CIG1', 'CIG2', 'CIG3')\n            ORDER by issue DESC),\n        agg as (\n            select i, e, v, threshold, category from data where rank = 1),\n        sign as (\n            SELECT issue at time zone 'UTC' as i,\n            expire at time zone 'UTC' as e,\n            product_issue at time zone 'UTC' as v,\n            threshold, category from spc_outlooks\n            where ST_Contains(geom, ST_Point(:lon, :lat, 4326))\n            and day = :day and outlook_type = 'C' and category = :cat\n            and threshold in ('SIGN', 'CIG1', 'CIG2', 'CIG3')\n            ORDER by expire DESC, issue ASC LIMIT 1)\n\n        (SELECT i, e, v, threshold, category from agg\n        ORDER by e DESC, threshold desc) UNION ALL\n        (SELECT i, e, v, threshold, category from sign\n        ORDER by e DESC, threshold desc)\n        \"\"\"),\n            conn,\n            params={\"lon\": lon, \"lat\": lat, \"day\": day, \"cat\": cat},\n        )\n    return outlooks\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    time = environ[\"time\"]\n    cat = environ[\"cat\"].upper()\n    if cat not in VALID_CATS:\n        res = json_response_dict(\n            {\n                \"error\": f\"Invalid category specified, valid categories are: \"\n                f\"{', '.join(VALID_CATS)}\"\n            }\n        )\n        headers = [(\"Content-type\", \"application/json\")]\n        start_response(\"422 Unprocessable Entity\", headers)\n        return json.dumps(res)\n    fmt = environ[\"fmt\"]\n    lon = environ[\"lon\"]\n    lat = environ[\"lat\"]\n    last = environ[\"last\"]\n    day = environ[\"day\"]\n    ts = None\n    conditional = None\n    if time is not None or environ[\"current\"]:\n        if environ[\"current\"]:\n            # Goose the time by the given day offset\n            time = utc() + timedelta(hours=(day - 1) * 24)\n        outlooks, ts = dotime(time, lon, lat, day, cat)\n        if not outlooks.empty:\n            cigs = [\"CIG1\", \"CIG2\", \"CIG3\", \"SIGN\"]\n            # We need to look for SIGN, CIG1, CIG2, and CIG3\n            for _cig in cigs:\n                if _cig in outlooks[\"threshold\"].values:\n                    conditional = _cig\n                    break\n            # This will represent the max threshold, but...\n            outlooks = outlooks[~outlooks[\"threshold\"].isin(cigs)].iloc[[0]]\n    else:\n        outlooks = dowork(lon, lat, day, cat)\n\n    if fmt == \"json\" and time is not None:\n        res = json_response_dict(\n            {\n                \"query_params\": {\n                    \"time\": ts.strftime(ISO8601),\n                    \"lon\": lon,\n                    \"lat\": lat,\n                    \"cat\": cat,\n                    \"day\": day,\n                },\n                \"outlook\": {},\n            }\n        )\n        if not outlooks.empty:\n            row0 = outlooks.iloc[0]\n            res[\"outlook\"] = {\n                \"threshold\": row0[\"threshold\"],\n                \"conditional\": conditional,\n                \"utc_product_issue\": pd.Timestamp(row0[\"v\"]).strftime(ISO8601),\n                \"utc_issue\": pd.Timestamp(row0[\"i\"]).strftime(ISO8601),\n                \"utc_expire\": pd.Timestamp(row0[\"e\"]).strftime(ISO8601),\n            }\n        headers = [(\"Content-type\", \"application/json\")]\n        start_response(\"200 OK\", headers)\n        return json.dumps(res)\n    if fmt == \"json\":\n        running = {}\n        res = json_response_dict({\"outlooks\": []})\n        for _, row in outlooks.iterrows():\n            if last > 0:\n                running.setdefault(row[\"threshold\"], 0)\n                running[row[\"threshold\"]] += 1\n                if running[row[\"threshold\"]] > last:\n                    continue\n            res[\"outlooks\"].append(\n                dict(\n                    day=day,\n                    utc_issue=row[\"i\"].strftime(ISO8601),\n                    utc_expire=row[\"e\"].strftime(ISO8601),\n                    utc_product_issue=row[\"v\"].strftime(ISO8601),\n                    threshold=row[\"threshold\"],\n                    category=row[\"category\"],\n                )\n            )\n        headers = [(\"Content-type\", \"application/json\")]\n        start_response(\"200 OK\", headers)\n        return json.dumps(res)\n\n    outlooks = outlooks.rename(\n        columns={\n            \"i\": \"utc_issue\",\n            \"e\": \"utc_expire\",\n            \"v\": \"utc_product_issue\",\n        },\n    )\n    if fmt == \"excel\":\n        headers = [\n            (\"Content-type\", \"application/vnd.ms-excel\"),\n            (\"Content-Disposition\", \"attachment; filename=outlooks.xls\"),\n        ]\n        start_response(\"200 OK\", headers)\n        with BytesIO() as bio:\n            outlooks.to_excel(bio, index=False)\n            return bio.getvalue()\n\n    headers = [\n        (\"Content-type\", \"text/csv\"),\n        (\"Content-Disposition\", \"attachment; filename=outlooks.csv\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return outlooks.to_csv(index=False)\n"
  },
  {
    "path": "pylib/iemweb/json/spcwatch.py",
    "content": "\"\"\".. title:: SPC Watch GeoJSON Service\n\nReturn to `API Services </api/#json>`_.\n\nThis service provides information about Storm Prediction Center (SPC) watches\nfor a given latitude and longitude point.\n\nChangelog\n---------\n\n- 2024-07-09: Add csv and excel output formats\n\nExample Requests\n----------------\n\nReturn all watches that had a polygon coincident with the point at 41.9N, 93.6W\n\nhttps://mesonet.agron.iastate.edu/json/spcwatch.py?lat=41.9&lon=-93.6\n\nReturn all watches that were valid at 2024-08-01 00 UTC, sorry that this uses\na lame format, will update to ISO8601 soon.\n\nhttps://mesonet.agron.iastate.edu/json/spcwatch.py?ts=202408010000\n\nReturn the above, but in CSV format\n\nhttps://mesonet.agron.iastate.edu/json/spcwatch.py?ts=202408010000&fmt=csv\n\nAnd now excel\n\nhttps://mesonet.agron.iastate.edu/json/spcwatch.py?ts=202408010000&fmt=excel\n\n\"\"\"\n\nfrom datetime import datetime, timezone\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport geopandas as gpd\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import (\n    CALLBACK_FIELD,\n    LATITUDE_FIELD,\n    LONGITUDE_FIELD,\n)\nfrom iemweb.util import get_ct\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    fmt: Annotated[\n        str,\n        Field(\n            description=\"The format to return data in: geojson, excel, or csv\",\n            pattern=\"^(geojson|excel|csv)$\",\n        ),\n    ] = \"geojson\"\n    ts: Annotated[\n        str | None,\n        Field(description=\"The timestamp to query for\", pattern=\"^[0-9]{12}$\"),\n    ] = None\n    lat: LATITUDE_FIELD = None\n    lon: LONGITUDE_FIELD = None\n\n\ndef process_df(watches: gpd.GeoDataFrame) -> gpd.GeoDataFrame:\n    \"\"\"Common.\"\"\"\n    if not watches.empty:\n        watches[\"year\"] = watches[\"ii\"].dt.year\n        watches[\"spcurl\"] = (\n            \"https://www.spc.noaa.gov/products/watch/\"\n            + watches[\"year\"].astype(str)\n            + \"/ww\"\n            + watches[\"number\"].apply(lambda x: f\"{x:04.0f}\")\n            + \".html\"\n        )\n        watches[\"issue\"] = watches[\"ii\"].dt.strftime(ISO8601)\n        watches[\"expire\"] = watches[\"ee\"].dt.strftime(ISO8601)\n    return watches.drop(columns=[\"ii\", \"ee\"])\n\n\ndef pointquery(lon, lat) -> gpd.GeoDataFrame:\n    \"\"\"Do a query for stuff\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        watches = gpd.read_postgis(\n            sql_helper(\"\"\"\n        SELECT sel, issued at time zone 'UTC' as ii,\n        expired at time zone 'UTC' as ee, type, geom, num as number,\n        max_hail_size, max_wind_gust_knots, is_pds\n        from watches where ST_Contains(geom, ST_Point(:lon, :lat, 4326))\n        ORDER by issued DESC\n        \"\"\"),\n            conn,\n            params={\"lon\": lon, \"lat\": lat},\n            geom_col=\"geom\",\n        )  # type: ignore\n    return process_df(watches)\n\n\ndef dowork(valid) -> gpd.GeoDataFrame:\n    \"\"\"Actually do stuff\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        watches = gpd.read_postgis(\n            sql_helper(\"\"\"\n        SELECT sel, issued at time zone 'UTC' as ii,\n        expired at time zone 'UTC' as ee, type, geom, num as number,\n        max_hail_size, max_wind_gust_knots, is_pds\n        from watches where issued <= :valid and expired > :valid\n        \"\"\"),\n            conn,\n            params={\"valid\": valid},\n            geom_col=\"geom\",\n        )  # type: ignore\n    return process_df(watches)\n\n\n@iemapp(content_type=get_ct, help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    if environ[\"ts\"] is None:\n        ts = utc()\n    else:\n        ts = datetime.strptime(environ[\"ts\"], \"%Y%m%d%H%M\")\n    ts = ts.replace(tzinfo=timezone.utc)\n    fmt = environ[\"fmt\"]\n    if environ[\"lon\"] is not None and environ[\"lat\"] is not None:\n        watches = pointquery(environ[\"lon\"], environ[\"lat\"])\n    else:\n        watches = dowork(ts)\n\n    if fmt == \"geojson\":\n        headers = [(\"Content-type\", get_ct(environ))]\n        start_response(\"200 OK\", headers)\n        payload = watches.to_json()\n        return payload\n    if fmt == \"excel\":\n        headers = [\n            (\"Content-type\", get_ct(environ)),\n            (\"Content-Disposition\", \"attachment; filename=watches.xls\"),\n        ]\n        start_response(\"200 OK\", headers)\n        with BytesIO() as bio:\n            watches.drop(columns=\"geom\").to_excel(bio, index=False)\n            return bio.getvalue()\n\n    headers = [\n        (\"Content-type\", get_ct(environ)),\n        (\"Content-Disposition\", \"attachment; filename=watches.csv\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return watches.drop(columns=\"geom\").to_csv(index=False).encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/sps_by_point.py",
    "content": "\"\"\".. title:: Special Weather Statements (SPS) by Point\n\nReturn to `API Services </api/#json>`_\n\nThis service returns any Special Weather Statements (SPS) that included a\npolygon threat area.\n\nChangelog\n---------\n\n- 2026-02-26: Renamed top level metadata `generation_time` to `generated_at`\n  for better consistency across IEM services.\n- 2024-07-06: The `sdate` and `edate` parameters were rectified to be in the\n  format of `YYYY-mm-dd` instead of `YYYY/mm/dd`.\n\nExample Requests\n----------------\n\nProvide SPS metadata for those with a polygon that covered Newport, NC.\n\nhttps://mesonet.agron.iastate.edu/json/sps_by_point.py?lat=34.77&lon=-76.88\n\nReturn the same, in Excel format this time and only those valid at 6z on\n10 Aug 2024.\n\nhttps://mesonet.agron.iastate.edu/json/sps_by_point.py\\\n?lat=34.77&lon=-76.88&valid=2024-08-10T06:00:00Z&fmt=xlsx\n\nThe same, but CSV this time\n\nhttps://mesonet.agron.iastate.edu/json/sps_by_point.py\\\n?lat=34.77&lon=-76.88&valid=2024-08-10T06:00:00Z&fmt=csv\n\n\"\"\"\n\nimport json\nfrom datetime import date\nfrom io import BytesIO, StringIO\n\nimport numpy as np\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import (\n    CALLBACK_FIELD,\n    LATITUDE_FIELD,\n    LONGITUDE_FIELD,\n)\nfrom iemweb.util import json_response_dict\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    fmt: str = Field(\n        \"json\",\n        pattern=\"^(json|csv|xlsx)$\",\n        description=\"The format of the output, either json, csv, or xlsx\",\n    )\n    lat: LATITUDE_FIELD = 41.99\n    lon: LONGITUDE_FIELD = -92.0\n    sdate: date = Field(\n        default=date(2002, 1, 1),\n        description=\"Start date of search\",\n    )\n    edate: date = Field(\n        default=date(2099, 1, 1),\n        description=\"End date of search\",\n    )\n    valid: AwareDatetime = Field(\n        default=None,\n        description=\"If provided, only include events valid at this time.\",\n    )\n\n\ndef get_events(environ):\n    \"\"\"Get Events\"\"\"\n    data = json_response_dict(\n        {\n            \"data\": [],\n            \"lon\": environ[\"lon\"],\n            \"lat\": environ[\"lat\"],\n            \"valid\": environ[\"valid\"],\n        }\n    )\n    valid_limiter = \"\"\n    params = {\n        \"lon\": environ[\"lon\"],\n        \"lat\": environ[\"lat\"],\n        \"sdate\": environ[\"sdate\"],\n        \"edate\": environ[\"edate\"],\n        \"valid\": environ[\"valid\"],\n    }\n    if environ[\"valid\"] is not None:\n        valid_limiter = \" and issue <= :valid and expire > :valid \"\n        data[\"valid\"] = environ[\"valid\"].strftime(ISO8601)\n\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    select wfo, landspout, product_id, waterspout, max_hail_size,\n    max_wind_gust,\n    to_char(issue at time zone 'UTC', 'YYYY-MM-DDThh24:MIZ') as issue,\n    to_char(expire at time zone 'UTC', 'YYYY-MM-DDThh24:MIZ') as expire\n    from sps where\n    ST_Contains(geom, ST_Point(:lon, :lat, 4326)) and\n    issue > :sdate and expire < :edate\n    {valid_limiter} ORDER by issue ASC\n        \"\"\",\n                valid_limiter=valid_limiter,\n            ),\n            conn,\n            params=params,\n        )\n    if df.empty:\n        return data, df\n    df = df.replace({np.nan: None})\n    df[\"uri\"] = \"/p.php?pid=\" + df[\"product_id\"]\n    return data, df\n\n\ndef to_json(data, df):\n    \"\"\"Make JSON.\"\"\"\n    for _, row in df.iterrows():\n        data[\"data\"].append(\n            {\n                \"wfo\": row[\"wfo\"],\n                \"landspout\": row[\"landspout\"],\n                \"waterspout\": row[\"waterspout\"],\n                \"uri\": row[\"uri\"],\n                \"issue\": row[\"issue\"],\n                \"expire\": row[\"expire\"],\n                \"max_hail_size\": row[\"max_hail_size\"],\n                \"max_wind_gust\": row[\"max_wind_gust\"],\n            }\n        )\n    return data\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    fmt = environ.get(\"fmt\", \"json\")\n    data, df = get_events(environ)\n    if fmt == \"xlsx\":\n        fn = f\"sps_{environ['lat']:.4f}N_{(0 - environ['lon']):.4f}W.xlsx\"\n        headers = [\n            (\"Content-type\", EXL),\n            (\"Content-disposition\", f\"attachment; Filename={fn}\"),\n        ]\n        start_response(\"200 OK\", headers)\n        bio = BytesIO()\n        df.to_excel(bio, index=False)\n        return [bio.getvalue()]\n    if fmt == \"csv\":\n        fn = f\"sps_{environ['lat']:.4f}N_{(0 - environ['lon']):.4f}W.csv\"\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-disposition\", f\"attachment; Filename={fn}\"),\n        ]\n        start_response(\"200 OK\", headers)\n        bio = StringIO()\n        df.to_csv(bio, index=False)\n        return [bio.getvalue().encode(\"utf-8\")]\n    res = to_json(data, df)\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return [json.dumps(res).replace(\" NaN\", \" null\").encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/json/stage4.py",
    "content": "\"\"\".. title:: JSON Service for Stage IV Precipitation Data\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/stage4.py\n---------------------------------\n\nThis emits hourly precipitation data from the Stage IV precipitation dataset\nfor a given date, which defaults to UTC, but can be specified by the given\n`tz` parameter.  Please note that this is not a pure stage IV service, but\nincludes some bias correcting that the IEM does against PRISM.\n\nChangelog\n---------\n\n- 2024-08-19: Added support for tz parameter\n\nExample Usage\n-------------\n\nProvide hourly stage IV estimates for 13 August 2024 for 102.3W, 45.1N for\na date in US/Central timezone.\n\nhttps://mesonet.agron.iastate.edu/json/stage4.py\\\n?lon=-102.3&lat=45.1&valid=2024-08-13&tz=America/Chicago\n\n\"\"\"\n\nimport json\nimport os\nfrom datetime import date, datetime, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport numpy as np\nfrom pydantic import Field\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import hourly_offset\nfrom pyiem.util import mm2inch, ncopen\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import (\n    CALLBACK_FIELD,\n    LATITUDE_FIELD,\n    LONGITUDE_FIELD,\n    TZ_FIELD,\n)\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    lat: LATITUDE_FIELD\n    lon: LONGITUDE_FIELD\n    valid: date = Field(..., description=\"Valid date of data\")\n    tz: TZ_FIELD = \"UTC\"\n\n\ndef myrounder(val, precision):\n    \"\"\"round a float or give back None\"\"\"\n    if val is None or np.isnan(val) or np.ma.is_masked(val):\n        return None\n    return round(val, precision)\n\n\ndef dowork(environ):\n    \"\"\"Do work!\"\"\"\n    valid = environ[\"valid\"]\n    # We want data for the UTC date and timestamps are in the rears, so from\n    # 1z through 1z\n    sts = datetime(\n        valid.year, valid.month, valid.day, 1, tzinfo=ZoneInfo(environ[\"tz\"])\n    )\n    ets = sts + timedelta(hours=24)\n    sidx = hourly_offset(sts)\n    eidx = hourly_offset(ets)\n\n    ncfn = f\"/mesonet/data/stage4/{valid:%Y}_stage4_hourly.nc\"\n    res = json_response_dict(\n        {\n            \"gridi\": -1,\n            \"gridj\": -1,\n            \"for_date_in_timezone\": environ[\"tz\"],\n            \"data\": [],\n        }\n    )\n    if not os.path.isfile(ncfn):\n        return json.dumps(res)\n    i, j = get_nav(\"STAGE4\").find_ij(environ[\"lon\"], environ[\"lat\"])\n    if i is not None:\n        with ncopen(ncfn) as nc:\n            res[\"gridi\"] = i\n            res[\"gridj\"] = j\n\n            ppt = nc.variables[\"p01m\"][sidx:eidx, j, i]\n\n        for tx, pt in enumerate(ppt):\n            valid = sts + timedelta(hours=tx)\n            utcnow = valid.astimezone(ZoneInfo(\"UTC\"))\n            res[\"data\"].append(\n                {\n                    \"end_valid\": utcnow.strftime(\"%Y-%m-%dT%H:00:00Z\"),\n                    \"precip_in\": myrounder(mm2inch(pt), 2),\n                }\n            )\n\n    return json.dumps(res)\n\n\ndef get_mckey(environ):\n    \"\"\"Get the memcachekey.\"\"\"\n    return (\n        f\"/json/stage4/{environ['lon']:.2f}/{environ['lat']:.2f}/\"\n        f\"{environ['valid']}/{environ['tz']}\"\n    )\n\n\n@iemapp(\n    help=__doc__, schema=Schema, memcachekey=get_mckey, memcacheexpire=3600\n)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    res = dowork(environ)\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return res\n"
  },
  {
    "path": "pylib/iemweb/json/state_ugc.py",
    "content": "\"\"\".. title:: Return UGCs for a given state.\n\nReturn to `API Services </api/#json>`.\n\nDocumentation for /json/state_ugc.json\n--------------------------------------\n\nThis service returns a simple listing of NWS UGC codes associated with the\ngiven state code.  Presently, this only returns those codes that are presently\nvalid.\n\nChangelog\n---------\n\n- 2024-08-12: Initial documentation update\n\nExample Requests\n----------------\n\nReturn any zone codes associated with Lake Michigan (LM).\n\nhttps://mesonet.agron.iastate.edu/json/state_ugc.py?state=LM\n\n\"\"\"\n\nimport json\n\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD, STATE_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    state: STATE_FIELD = \"IA\"\n\n\n@iemapp(\n    memcachekey=lambda e: f\"/json/state_ugc|{e['state']}\",\n    content_type=\"application/json\",\n    help=__doc__,\n    schema=Schema,\n    memcacheexpire=0,\n)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    data = json_response_dict(\n        {\n            \"ugcs\": [],\n        }\n    )\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n            SELECT distinct ugc, name from ugcs WHERE substr(ugc,1,2) = :state\n            and ugc is not null and end_ts is null and name is not null\n            ORDER by name ASC\n        \"\"\"\n            ),\n            {\n                \"state\": environ[\"state\"],\n            },\n        )\n        for row in res.mappings():\n            data[\"ugcs\"].append(\n                {\n                    \"ugc\": row[\"ugc\"],\n                    \"name\": row[\"name\"],\n                }\n            )\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return json.dumps(data)\n"
  },
  {
    "path": "pylib/iemweb/json/stations.py",
    "content": "\"\"\".. title:: Recent IEM Station Metadata Changes\n\nReturn to `API Services </api/#json>`_\n\nThis service emits station metadata for those stations that have recently\nreceived updates by the IEM.  There is a 1000 result limit to what is returned.\n\nChangelog\n---------\n\n- 2024-08-12: Initial documentation update\n\nExample Requests\n----------------\n\nReturn the metadata for stations with a metadata change done today.\n\nhttps://mesonet.agron.iastate.edu/json/stations.py\n\n\"\"\"\n\nimport json\nfrom datetime import date as dateobj\n\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    date: dateobj = Field(\n        default=dateobj.today(),\n        description=\"Query metadata changes since this date.\",\n    )\n\n\ndef run(dt):\n    \"\"\"Actually run for this product\"\"\"\n\n    data = json_response_dict()\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        changed = pd.read_sql(\n            sql_helper(\n                \"select *, st_x(geom) as lon, st_y(geom) as lat from \"\n                \"stations where modified > :dt ORDER by modified DESC \"\n                \"limit 1000\"\n            ),\n            conn,\n            params={\"dt\": dt},\n            parse_dates=[\"modified\", \"archive_begin\", \"archive_end\"],\n        )\n    # Eh, ensure state is not null\n    changed[\"state\"] = changed[\"state\"].fillna(\"\")\n    # Convert timestamps to strings\n    changed[\"modified\"] = changed[\"modified\"].dt.strftime(ISO8601)\n    changed[\"archive_begin\"] = changed[\"archive_begin\"].dt.strftime(\"%Y-%m-%d\")\n    changed[\"archive_end\"] = changed[\"archive_end\"].dt.strftime(\"%Y-%m-%d\")\n    data[\"stations\"] = changed.drop(columns=\"geom\").to_dict(orient=\"records\")\n    return json.dumps(data).replace(\"NaN\", \"null\")\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    content_type=\"application/json\",\n    memcachekey=lambda x: f\"/json/stations.py|{x['date']}\",\n    memcacheexpire=300,\n)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    res = run(environ[\"date\"])\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return res\n"
  },
  {
    "path": "pylib/iemweb/json/tms.py",
    "content": "\"\"\".. title:  IEM Tile Map Service metadata\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/tms.json\n--------------------------------\n\nThis service provides a JSON response that describes the Tile Map Services\n(TMS) available from the IEM.\n\nChangelog\n---------\n\n- 2026-03-04: Renamed `generation_utc_time` to `generated_at` to provide better\n  IEM webservice consistency.\n- 2024-08-12: Initial documentation update.\n\nExample Usage\n-------------\n\nNothing much for configuration, just call the service.\n\nhttps://mesonet.agron.iastate.edu/json/tms.json\n\n\"\"\"\n\nimport json\nimport os\nfrom datetime import datetime\n\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n\n\ndef run():\n    \"\"\"Generate json response\"\"\"\n    res = json_response_dict(\n        {\n            \"services\": [],\n        }\n    )\n    fn = \"/mesonet/ldmdata/gis/images/4326/USCOMP/n0q_0.json\"\n    if not os.path.isfile(fn):\n        return \"ERROR\"\n    with open(fn, encoding=\"utf-8\") as fh:\n        j = json.load(fh)\n    vt = datetime.strptime(j[\"meta\"][\"valid\"], ISO8601)\n    res[\"services\"].append(\n        {\n            \"id\": \"ridge_uscomp_n0q\",\n            \"layername\": f\"ridge::USCOMP-N0Q-{vt:%Y%m%d%H%M}\",\n            \"utc_valid\": j[\"meta\"][\"valid\"],\n        }\n    )\n    fn = \"/mesonet/ldmdata/gis/images/4326/USCOMP/n0r_0.json\"\n    with open(fn, encoding=\"utf-8\") as fh:\n        j = json.load(fh)\n    vt = datetime.strptime(j[\"meta\"][\"valid\"], ISO8601)\n    res[\"services\"].append(\n        {\n            \"id\": \"ridge_uscomp_n0r\",\n            \"layername\": f\"ridge::USCOMP-N0R-{vt:%Y%m%d%H%M}\",\n            \"utc_valid\": j[\"meta\"][\"valid\"],\n        }\n    )\n\n    return json.dumps(res)\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=\"/json/tms.json\",\n    memcacheexpire=15,\n)\ndef application(_environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    res = run()\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return res\n"
  },
  {
    "path": "pylib/iemweb/json/vtec_emergencies.py",
    "content": "\"\"\".. title:: NWS Warnings with Emergency Significance\n\nReturn to `API Services </api/#json>`_\n\nChangelog\n---------\n\n- 2024-08-09: Initial documentation update\n\n\"\"\"\n\nimport json\n\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.mlib import rectify_wfo\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n\n\n@with_sqlalchemy_conn(\"postgis\")\ndef run(conn: Connection = None):\n    \"\"\"Generate data.\"\"\"\n    data = json_response_dict({\"events\": []})\n    res = conn.execute(\n        sql_helper(\"\"\"\n        SELECT vtec_year, wfo, eventid,\n        phenomena, significance,\n        min(product_issue at time zone 'UTC') as utc_product_issue,\n        min(init_expire at time zone 'UTC') as utc_init_expire,\n        min(issue at time zone 'UTC') as utc_issue,\n        max(expire at time zone 'UTC') as utc_expire,\n        array_to_string(array_agg(distinct substr(ugc, 1, 2)), ',')\n        as states\n        from warnings\n        WHERE phenomena in ('TO', 'FF') and significance = 'W'\n        and is_emergency\n        GROUP by vtec_year, wfo, eventid, phenomena, significance\n        ORDER by utc_issue ASC\n    \"\"\")\n    )\n    for row in res.mappings():\n        uri = (\n            f\"/vtec/?year={row['vtec_year']}&wfo={rectify_wfo(row['wfo'])}&\"\n            f\"phenomena={row['phenomena']}&significance={row['significance']}&\"\n            f\"eventid={row['eventid']:04.0f}\"\n        )\n        data[\"events\"].append(\n            dict(\n                year=row[\"vtec_year\"],\n                phenomena=row[\"phenomena\"],\n                significance=row[\"significance\"],\n                eventid=row[\"eventid\"],\n                issue=row[\"utc_issue\"].strftime(ISO8601),\n                product_issue=row[\"utc_product_issue\"].strftime(ISO8601),\n                expire=row[\"utc_expire\"].strftime(ISO8601),\n                init_expire=row[\"utc_init_expire\"].strftime(ISO8601),\n                uri=uri,\n                wfo=row[\"wfo\"],\n                states=row[\"states\"],\n            )\n        )\n    return json.dumps(data)\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=\"/json/vtec_emergencies\",\n    memcacheexpire=3600,\n)\ndef application(_environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return run()\n"
  },
  {
    "path": "pylib/iemweb/json/vtec_event.py",
    "content": "\"\"\".. title:: Metadata for a single VTEC event\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/vtec_event.py\n-------------------------------------\n\nThis metadata service drives what is shown on the IEM's `VTEC Event </vtec/>`_\npage.  This service requires that you already know the VTEC identifiers that\nreference the event.  By default, this service attempts to bundle the raw NWS\ntext within the resulting JSON response.  This can be disabled by setting the\n`include_text` parameter to something falsey.\n\nChangelog\n---------\n\n- 2026-02-26: Renamed top level metadata `generation_time` to `generated_at`\n  for better IEM service consistency.\n- 2024-11-12: Added boolean attribute ``event_exists`` to the response to\n  indicate if the event was found in the database.\n- 2024-07-31: Initial documentation release and pydantic validation\n\nExample Requests\n----------------\n\nProvide information about NWS Des Moines Severe Thunderstorm Warning 110\nduring 2024.\n\nhttps://mesonet.agron.iastate.edu/json/vtec_event.py\\\n?wfo=KDMX&phenomena=SV&significance=W&etn=110&year=2024\n\nProvide information about NWS Des Moines Tornado Warning 45 during 2024, but do\nnot include any of the raw product text.\n\nhttps://mesonet.agron.iastate.edu/json/vtec_event.py\\\n?wfo=KDMX&phenomena=TO&significance=W&etn=45&year=2024&include_text=0\n\n\"\"\"\n\nimport json\nfrom datetime import datetime\n\nimport httpx\nimport pandas as pd\nfrom pydantic import Field, field_validator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import LOG\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import (\n    CALLBACK_FIELD,\n    VTEC_PH_FIELD,\n    VTEC_SIG_FIELD,\n    VTEC_YEAR_FIELD,\n)\nfrom iemweb.mlib import unrectify_wfo\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    include_text: bool = Field(\n        default=True,\n        description=(\n            \"Include the raw NWS text in the response, default is True\"\n        ),\n    )\n    wfo: str = Field(\n        ...,\n        description=\"Three character WFO identifier\",\n        min_length=3,\n        max_length=4,\n        pattern=r\"^[A-Z]{3,4}$\",\n    )\n    year: VTEC_YEAR_FIELD\n    phenomena: VTEC_PH_FIELD\n    significance: VTEC_SIG_FIELD\n    etn: int = Field(..., description=\"Event Tracking Number\", ge=1, le=9999)\n\n    @field_validator(\"wfo\")\n    @classmethod\n    def validate_wfo(cls, v: str) -> str:\n        \"\"\"VTEC storage is 3 chars, so here we do the necessary evil.\"\"\"\n        return unrectify_wfo(v)\n\n\ndef run(environ: dict) -> str:\n    \"\"\"Do great things\"\"\"\n    wfo = environ[\"wfo\"]\n    phenomena = environ[\"phenomena\"]\n    significance = environ[\"significance\"]\n    etn = environ[\"etn\"]\n    year = environ[\"year\"]\n\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            select product_ids, name, status, hvtec_nwsli,\n            product_issue at time zone 'UTC' as utc_product_issue,\n            init_expire at time zone 'UTC' as utc_init_expire,\n            updated at time zone 'UTC' as utc_updated,\n            issue at time zone 'UTC' as utc_issue,\n            expire at time zone 'UTC' as utc_expire,\n            w.ugc from warnings w JOIN ugcs u on (w.gid = u.gid) where\n            vtec_year = :year and w.wfo = :wfo and eventid = :etn and\n            phenomena = :phenomena and significance = :significance\n            \"\"\"),\n            conn,\n            params={\n                \"year\": year,\n                \"wfo\": wfo,\n                \"etn\": etn,\n                \"phenomena\": phenomena,\n                \"significance\": significance,\n            },\n        )\n\n    res = json_response_dict(\n        {\n            \"event_exists\": not df.empty,\n            \"year\": year,\n            \"phenomena\": phenomena,\n            \"significance\": significance,\n            \"etn\": etn,\n            \"wfo\": wfo,\n            \"report\": {},\n            \"svs\": [],\n        }\n    )\n    if df.empty:\n        return json.dumps(res)\n\n    # Get a list of unique product_ids\n    product_ids = df[\"product_ids\"].explode().dropna().unique().tolist()\n    product_ids.sort()\n    if product_ids:\n        report = None\n        valid = datetime.strptime(product_ids[0][:12], \"%Y%m%d%H%M\").strftime(\n            ISO8601\n        )\n        if environ[\"include_text\"]:\n            try:\n                # This request is outside this repo, so no need for internal\n                # API routing\n                resp = httpx.get(\n                    (\n                        \"http://mesonet.agron.iastate.edu/\"\n                        f\"api/1/nwstext/{product_ids[0]}\"\n                    ),\n                    timeout=5,\n                )\n                resp.raise_for_status()\n                report = resp.text\n            except Exception as exp:\n                LOG.exception(exp)\n\n        res[\"report\"] = {\n            \"text\": report,\n            \"valid\": valid,\n            \"product_id\": product_ids[0],\n        }\n    for product_id in product_ids[1:]:\n        try:\n            valid = datetime.strptime(product_id[:12], \"%Y%m%d%H%M\").strftime(\n                ISO8601\n            )\n            report = \"\"\n            if environ[\"include_text\"]:\n                resp = httpx.get(\n                    f\"http://iem.local/api/1/nwstext/{product_id}\", timeout=5\n                )\n                resp.raise_for_status()\n                report = resp.text\n            res[\"svs\"].append(\n                {\"text\": report, \"valid\": valid, \"product_id\": product_id}\n            )\n        except Exception as exp:\n            LOG.exception(exp)\n\n    res[\"utc_issue\"] = df[\"utc_issue\"].min().strftime(ISO8601)\n    res[\"utc_expire\"] = df[\"utc_expire\"].max().strftime(ISO8601)\n\n    res[\"ugcs\"] = []\n    for _, row in df.iterrows():\n        res[\"ugcs\"].append(\n            {\n                \"ugc\": row[\"ugc\"],\n                \"name\": row[\"name\"],\n                \"status\": row[\"status\"],\n                \"hvtec_nwsli\": row[\"hvtec_nwsli\"],\n                \"utc_product_issue\": row[\"utc_product_issue\"].strftime(\n                    ISO8601\n                ),\n                \"utc_issue\": row[\"utc_issue\"].strftime(ISO8601),\n                \"utc_init_expire\": row[\"utc_init_expire\"].strftime(ISO8601),\n                \"utc_expire\": row[\"utc_expire\"].strftime(ISO8601),\n                \"utc_updated\": row[\"utc_updated\"].strftime(ISO8601),\n            }\n        )\n    return json.dumps(res)\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Compute the key.\"\"\"\n    return (\n        f\"/json/vtec_event/{environ['wfo']}/{environ['year']}/\"\n        f\"{environ['phenomena']}/{environ['significance']}/{environ['etn']}/\"\n        f\"{environ['include_text']}/v2\"\n    )\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=get_mckey,\n    memcacheexpire=15,  # Without cache invalidation, we have no choice\n)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    res = run(environ)\n\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return res.encode(\"utf-8\")\n"
  },
  {
    "path": "pylib/iemweb/json/vtec_events.py",
    "content": "\"\"\".. title:: VTEC Events by WFO and Year\n\nReturn to `API Services </api/>`_\n\nDocumentation for /json/vtec_events.py\n--------------------------------------\n\nThis provides metadata on VTEC events for a given WFO and year.\n\nChangelog\n---------\n\n- 2025-01-10: Support providing all events for a given year and wfo.\n- 2024-08-08: Migration to pydantic validation\n\nExample Usage\n-------------\n\nProvide all NWS Des Moines VTEC events for 2024.\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events.py?wfo=DMX&year=2024\n\nProvide all NWS Des Moines Tornado Warnings for 2024:\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events.py?wfo=DMX&year=2024\\\n&phenomena=TO&significance=W\n\nProvide all SV, TO, FF, MA events for NWS Des Moines in 2024 in csv format:\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events.py?wfo=DMX&year=2024\\\n&combo=1&fmt=csv\n\nProvide all 2024 tornado warnings for NWS Des Moines in xlsx format:\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events.py?wfo=DMX&year=2024\\\n&phenomena=TO&significance=W&fmt=xlsx\n\n\"\"\"\n\nimport json\nfrom io import BytesIO, StringIO\n\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.nws.vtec import VTEC_PHENOMENA, VTEC_SIGNIFICANCE\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy import Connection\n\nfrom iemweb.fields import (\n    CALLBACK_FIELD,\n    VTEC_PH_FIELD_OPTIONAL,\n    VTEC_SIG_FIELD_OPTIONAL,\n    VTEC_YEAR_FIELD,\n)\nfrom iemweb.mlib import rectify_wfo\nfrom iemweb.util import json_response_dict\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    combo: bool = Field(\n        default=False,\n        description=\"Special one-off to get all SV, TO, FF, MA events\",\n    )\n    fmt: str = Field(\n        default=\"json\",\n        description=\"Output format, json, csv, xlsx\",\n        pattern=\"^(json|csv|xlsx)$\",\n    )\n    phenomena: VTEC_PH_FIELD_OPTIONAL = None\n    significance: VTEC_SIG_FIELD_OPTIONAL = None\n    wfo: str = Field(\n        \"MPX\", description=\"3 character WFO identifier\", max_length=4\n    )\n    year: VTEC_YEAR_FIELD = 2015\n\n\ndef get_res(conn: Connection, wfo, year, phenomena, significance, combo):\n    \"\"\"Generate a report of VTEC ETNs used for a WFO and year\n\n    Args:\n      wfo (str): 3 character WFO identifier\n      year (int): year to run for\n      phenomena (str, optional): 2 character phenomena\n      significance (str, optional): 1 character VTEC significance\n      combo (int, optional): special one-offs\n    \"\"\"\n    params = {\n        \"year\": year,\n        \"wfo\": wfo,\n        \"phenomena\": phenomena,\n        \"significance\": significance,\n    }\n    limits = [\"phenomena is not null\", \"significance is not null\"]\n    orderby = \"u.phenomena ASC, u.significance ASC, u.utc_issue ASC\"\n    if phenomena is not None:\n        limits[0] = \"phenomena = :phenomena\"\n    if significance is not None:\n        limits[1] = \"significance = :significance\"\n    plimit = \" and \".join(limits)\n    if combo:\n        plimit = (\n            \"phenomena in ('SV', 'TO', 'FF', 'MA') and \"\n            \"significance in ('W', 'A')\"\n        )\n        orderby = \"u.utc_issue ASC\"\n    res = conn.execute(\n        sql_helper(\n            \"\"\"\n    WITH polyareas as (\n        SELECT phenomena, significance, eventid, round((ST_area(\n        ST_transform(geom,9311)) / 1000000.0)::numeric,0) as area\n        from sbw WHERE vtec_year = :year and wfo = :wfo\n        and eventid is not null and {plimit} and status = 'NEW'\n    ), ugcareas as (\n        SELECT\n        round(sum(ST_area(\n            ST_transform(u.geom,9311)) / 1000000.0)::numeric,0) as area,\n        string_agg(u.name || ' ['||u.state||']', ', ') as locations,\n        eventid, phenomena, significance,\n        min(issue) at time zone 'UTC' as utc_issue,\n        max(expire) at time zone 'UTC' as utc_expire,\n        min(product_issue) at time zone 'UTC' as utc_product_issue,\n        max(init_expire) at time zone 'UTC' as utc_init_expire,\n        max(hvtec_nwsli) as nwsli,\n        max(fcster) as fcster from warnings w JOIN ugcs u on (w.gid = u.gid)\n        WHERE vtec_year = :year and w.wfo = :wfo and eventid is not null\n        and {plimit}\n        GROUP by phenomena, significance, eventid)\n\n    SELECT u.*, coalesce(p.area, u.area) as myarea\n    from ugcareas u LEFT JOIN polyareas p on\n    (u.phenomena = p.phenomena and u.significance = p.significance\n     and u.eventid = p.eventid) ORDER by {orderby}\n    \"\"\",\n            plimit=plimit,\n            orderby=orderby,\n        ),\n        params,\n    )\n    data = json_response_dict(\n        {\n            \"wfo\": wfo,\n            \"year\": year,\n            \"events\": [],\n        }\n    )\n    for row in res.mappings():\n        uri = (\n            f\"/vtec/?year={year}&wfo={rectify_wfo(wfo)}&\"\n            f\"phenomena={row['phenomena']}&significance={row['significance']}&\"\n            f\"eventid={row['eventid']:04.0f}\"\n        )\n        data[\"events\"].append(\n            dict(\n                phenomena=row[\"phenomena\"],\n                significance=row[\"significance\"],\n                ph_name=VTEC_PHENOMENA.get(row[\"phenomena\"], \"Unknown\"),\n                sig_name=VTEC_SIGNIFICANCE.get(row[\"significance\"], \"Unknown\"),\n                eventid=row[\"eventid\"],\n                hvtec_nwsli=row[\"nwsli\"],\n                area=float(row[\"myarea\"]),\n                locations=row[\"locations\"],\n                issue=row[\"utc_issue\"].strftime(ISO8601),\n                product_issue=row[\"utc_product_issue\"].strftime(ISO8601),\n                expire=row[\"utc_expire\"].strftime(ISO8601),\n                init_expire=row[\"utc_init_expire\"].strftime(ISO8601),\n                uri=uri,\n                url=f\"https://mesonet.agron.iastate.edu{uri}\",\n                wfo=wfo,\n                fcster=row[\"fcster\"],\n            )\n        )\n    return data\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    wfo = environ[\"wfo\"]\n    if len(wfo) == 4:\n        wfo = wfo[1:]\n    year = environ[\"year\"]\n\n    phenomena = environ[\"phenomena\"]\n    significance = environ[\"significance\"]\n    combo = environ[\"combo\"]\n\n    fmt = environ[\"fmt\"]\n    with get_sqlalchemy_conn(\"postgis\") as pgconn:\n        res = get_res(\n            pgconn,\n            wfo,\n            year,\n            phenomena,\n            significance,\n            combo,\n        )\n\n    if fmt == \"xlsx\":\n        fn = f\"vtec_{wfo}_{year}_{phenomena}_{significance}.xlsx\"\n        headers = [\n            (\"Content-type\", EXL),\n            (\"Content-disposition\", f\"attachment; Filename={fn}\"),\n        ]\n        start_response(\"200 OK\", headers)\n        bio = BytesIO()\n        pd.DataFrame(res[\"events\"]).to_excel(bio, index=False)\n        return [bio.getvalue()]\n    if fmt == \"csv\":\n        fn = f\"vtec_{wfo}_{year}_{phenomena}_{significance}.csv\"\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-disposition\", f\"attachment; Filename={fn}\"),\n        ]\n        start_response(\"200 OK\", headers)\n        bio = StringIO()\n        pd.DataFrame(res[\"events\"]).to_csv(bio, index=False)\n        return [bio.getvalue().encode(\"utf-8\")]\n\n    res = json.dumps(res)\n\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return res.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/vtec_events_bypoint.py",
    "content": "\"\"\".. title:: VTEC Events by Point\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/vtec_events_bypoint.py\n----------------------------------------------\n\nThis service returns VTEC event metadata for a given latitude and longitude\npoint.  You can optionally pass an `at` parameter to specify a specific time\nto query for VTEC events.  The default is to query for all VTEC events that\nhave occurred at the provided point.\n\n**Important Note**: This service is providing events based on the UGCs\nassociated with the event. In the case of storm based warnings, the UGCs\nare not the official warning.  Use the\n`SBW By Point Service <sbw_by_point.py?help>`_ for the official warnings.\n\nChangelog\n---------\n\n- 2024-11-12: Added support for `at` parameter to query for VTEC events at a\n  specific time.\n- 2024-10-16: Added support for a ``buffer`` parameter.  The units are in\n  decimal degrees with a range limited between 0 and 1.  This buffer is used\n  to expand the search area around the provided point.\n- 2024-08-08: Initial documentation and use pydantic\n\nExample Usage\n-------------\n\nGet VTEC events for a point in Iowa\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events_bypoint.py?\\\nlat=41.99&lon=-93.61\n\nSame request, but in Excel format\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events_bypoint.py?\\\nlat=41.99&lon=-93.61&fmt=xlsx\n\nSame request, but in csv\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events_bypoint.py?\\\nlat=41.99&lon=-93.61&fmt=csv\n\nProvide VTEC events for the same point, but valid at 19 UTC on 26 Aug 2024\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events_bypoint.py?\\\nlat=41.99&lon=-93.61&at=2024-08-26T19:00:00Z\n\nProvide VTEC events for a point in Iowa and buffer this point by 0.5 degrees\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events_bypoint.py?\\\nlat=41.99&lon=-93.61&buffer=0.5\n\n\"\"\"\n\nimport json\nfrom datetime import date, datetime\nfrom io import BytesIO, StringIO\n\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.nws.vtec import VTEC_PHENOMENA, VTEC_SIGNIFICANCE, get_ps_string\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import (\n    CALLBACK_FIELD,\n    LATITUDE_FIELD,\n    LONGITUDE_FIELD,\n)\nfrom iemweb.mlib import rectify_wfo\nfrom iemweb.util import json_response_dict\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    at: AwareDatetime = Field(\n        None,\n        description=(\n            \"Specific time to query for VTEC events. In the case of long \"\n            \"fuse events, the at value is compared against the product \"\n            \"issuance time as well.\"\n        ),\n    )\n    fmt: str = Field(\n        default=\"json\",\n        description=\"The format to return the data in, either json or csv\",\n        pattern=\"^(json|csv|xlsx)$\",\n    )\n    buffer: float = Field(\n        0,\n        description=\"Buffer in decimal degrees around the provided point\",\n        ge=0,\n        le=1,\n    )\n    sdate: date = Field(date(1986, 1, 1), description=\"Start Date\")\n    edate: date = Field(date(2099, 1, 1), description=\"End Date\")\n    lat: LATITUDE_FIELD = 42.0\n    lon: LONGITUDE_FIELD = -93.0\n\n\ndef make_url(row):\n    \"\"\"Build URL.\"\"\"\n    return (\n        f\"/vtec/?year={row['vtec_year']}&wfo={rectify_wfo(row['wfo'])}&\"\n        f\"phenomena={row['phenomena']}&significance={row['significance']}&\"\n        f\"eventid={row['eventid']:04.0f}\"\n    )\n\n\ndef get_df(lon, lat, sdate, edate, buffer: float, at: datetime | None):\n    \"\"\"Generate a report of VTEC ETNs used for a WFO and year\n\n    Args:\n      wfo (str): 3 character WFO identifier\n      year (int): year to run for\n    \"\"\"\n    params = {\n        \"lon\": lon,\n        \"lat\": lat,\n        \"sdate\": sdate,\n        \"edate\": edate,\n        \"buffer\": buffer,\n        \"at\": at,\n    }\n    ptsql = \"ST_Point(:lon, :lat, 4326)\"\n    if buffer > 0:\n        ptsql = \"ST_Buffer(ST_Point(:lon, :lat, 4326), :buffer)\"\n    time_limiter = \"\"\n    if at is not None:\n        time_limiter = (\n            \"and (issue <= :at or product_issue <= :at) and expire >= :at\"\n        )\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH myugcs as (\n            select gid from ugcs where ST_Intersects(geom, {ptsql})\n        )\n        SELECT vtec_year,\n        to_char(issue at time zone 'UTC', 'YYYY-MM-DDThh24:MI:SSZ')\n            as iso_issued,\n        to_char(expire at time zone 'UTC', 'YYYY-MM-DDThh24:MI:SSZ')\n            as iso_expired,\n        to_char(issue at time zone 'UTC', 'YYYY-MM-DD hh24:MI') as issued,\n        to_char(expire at time zone 'UTC', 'YYYY-MM-DD hh24:MI') as expired,\n        eventid, phenomena, significance, wfo, hvtec_nwsli, w.ugc\n        from warnings w JOIN myugcs u on (w.gid = u.gid) WHERE\n        issue > :sdate and issue < :edate {time_limiter} ORDER by issue ASC\n        \"\"\",\n                ptsql=ptsql,\n                time_limiter=time_limiter,\n            ),\n            conn,\n            params=params,\n        )\n    if df.empty:\n        return df\n    df[\"name\"] = df[[\"phenomena\", \"significance\"]].apply(\n        lambda x: get_ps_string(x.iloc[0], x.iloc[1]), axis=1\n    )\n    df[\"ph_name\"] = df[\"phenomena\"].map(VTEC_PHENOMENA)\n    df[\"sig_name\"] = df[\"significance\"].map(VTEC_SIGNIFICANCE)\n    # Ugly hack for FW.A\n    df.loc[\n        (df[\"phenomena\"] == \"FW\") & (df[\"significance\"] == \"A\"), \"ph_name\"\n    ] = \"Fire Weather\"\n    # Construct a URL\n    df[\"url\"] = df.apply(make_url, axis=1)\n    return df\n\n\ndef to_json(df: pd.DataFrame) -> str:\n    \"\"\"Materialize as JSON.\"\"\"\n    res = json_response_dict({\"events\": []})\n    for _, row in df.iterrows():\n        res[\"events\"].append(\n            {\n                \"url\": row[\"url\"],\n                \"issue\": row[\"iso_issued\"],\n                \"expire\": row[\"iso_expired\"],\n                \"eventid\": row[\"eventid\"],\n                \"phenomena\": row[\"phenomena\"],\n                \"hvtec_nwsli\": row[\"hvtec_nwsli\"],\n                \"significance\": row[\"significance\"],\n                \"wfo\": row[\"wfo\"],\n                \"name\": row[\"name\"],\n                \"ph_name\": row[\"ph_name\"],\n                \"sig_name\": row[\"sig_name\"],\n                \"ugc\": row[\"ugc\"],\n            }\n        )\n\n    return json.dumps(res).replace(\" NaN\", \" null\")\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Construct the key.\"\"\"\n    at = \"null\" if environ[\"at\"] is None else f\"{environ['at']:%Y%m%d%H%M}\"\n    return (\n        f\"/json/vtec_events_bypoint.py?lat={environ['lat']:.2f}&\"\n        f\"lon={environ['lon']:.2f}&sdate={environ['sdate']:%Y-%m-%d}&\"\n        f\"edate={environ['edate']:%Y-%m-%d}&fmt={environ['fmt']}&\"\n        f\"buffer={environ['buffer']:.2f}&at={at}\"\n    )\n\n\n@iemapp(help=__doc__, schema=Schema, memcachekey=get_mckey, memcacheexpire=300)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    lat = environ[\"lat\"]\n    lon = environ[\"lon\"]\n    sdate = environ[\"sdate\"]\n    edate = environ[\"edate\"]\n    fmt = environ[\"fmt\"]\n\n    df = get_df(lon, lat, sdate, edate, environ[\"buffer\"], environ[\"at\"])\n    if fmt == \"xlsx\":\n        fn = (\n            f\"vtec_{(0 - lon):.4f}W_{lat:.4f}N_{sdate:%Y%m%d}_\"\n            f\"{edate:%Y%m%d}.xlsx\"\n        )\n        headers = [\n            (\"Content-type\", EXL),\n            (\"Content-disposition\", f\"attachment; Filename={fn}\"),\n        ]\n        start_response(\"200 OK\", headers)\n        bio = BytesIO()\n        df.to_excel(bio, index=False)\n        return [bio.getvalue()]\n    if fmt == \"csv\":\n        fn = (\n            f\"vtec_{(0 - lon):.4f}W_{lat:.4f}N_{sdate:%Y%m%d}_\"\n            f\"{edate:%Y%m%d}.csv\"\n        )\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-disposition\", f\"attachment; Filename={fn}\"),\n        ]\n        start_response(\"200 OK\", headers)\n        bio = StringIO()\n        df.to_csv(bio, index=False)\n        return [bio.getvalue().encode(\"utf-8\")]\n\n    res = to_json(df)\n\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return res.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/vtec_events_bystate.py",
    "content": "\"\"\".. title:: VTEC Events by State and Year\n\nReturn to `API Services </api/>`_\n\nChangelog\n---------\n\n- 2024-08-14: Initital documentation update and pydantic validation\n\nExample Requests\n----------------\n\nGet all Iowa events for 2024 in JSON, then CSV, then XLSX format.\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events_bystate.py\\\n?state=IA&year=2024\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events_bystate.py\\\n?state=IA&year=2024&fmt=csv\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events_bystate.py\\\n?state=IA&year=2024&fmt=xlsx\n\nGet all Tornado Warnings for Iowa during 2024.\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events_bystate.py\\\n?state=IA&year=2024&phenomena=TO&significance=W\n\n\"\"\"\n\nimport json\nfrom io import BytesIO, StringIO\nfrom typing import Annotated\n\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.nws.vtec import VTEC_PHENOMENA, VTEC_SIGNIFICANCE\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD, STATE_FIELD, VTEC_YEAR_FIELD\nfrom iemweb.mlib import rectify_wfo\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    fmt: Annotated[\n        str,\n        Field(\n            description=\"The format of the response, json, csv, or xlsx\",\n            pattern=\"^(json|csv|xlsx)$\",\n        ),\n    ] = \"json\"\n    phenomena: Annotated[\n        str,\n        Field(\n            description=\"2 character phenomena identifier\",\n            max_length=2,\n        ),\n    ] = \"__\"\n    significance: Annotated[\n        str,\n        Field(\n            description=\"1 character significance identifier\",\n            max_length=1,\n        ),\n    ] = \"_\"\n    state: STATE_FIELD\n    year: VTEC_YEAR_FIELD\n\n\ndef get_res(state, year, phenomena, significance):\n    \"\"\"Generate a report of VTEC ETNs used for a WFO and year\n\n    Args:\n      wfo (str): 3 character WFO identifier\n      year (int): year to run for\n    \"\"\"\n\n    limits = [\"phenomena is not null\", \"significance is not null\"]\n    if phenomena != \"__\":\n        limits[0] = \"phenomena = :ph\"\n    if significance != \"_\":\n        limits[1] = \"significance = :sig\"\n    plimit = \" and \".join(limits)\n    data = {\"state\": state, \"year\": year, \"events\": []}\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n    WITH polyareas as (\n        SELECT wfo, phenomena, significance, eventid, round((ST_area(\n        ST_transform(geom,9311)) / 1000000.0)::numeric,0) as area\n        from sbw s, states t WHERE\n        vtec_year = :year and ST_Overlaps(s.geom, t.the_geom) and\n        t.state_abbr = :st and eventid is not null and {plimit}\n        and status = 'NEW'\n    ), ugcareas as (\n        SELECT w.wfo,\n        round(sum(ST_area(\n            ST_transform(u.geom,9311)) / 1000000.0)::numeric,0) as area,\n        string_agg(u.name || ' ['||u.state||']', ', ') as locations,\n        eventid, phenomena, significance,\n        min(issue) at time zone 'UTC' as utc_issue,\n        max(expire) at time zone 'UTC' as utc_expire,\n        min(product_issue) at time zone 'UTC' as utc_product_issue,\n        max(init_expire) at time zone 'UTC' as utc_init_expire,\n        max(hvtec_nwsli) as nwsli,\n        max(fcster) as fcster from\n        warnings w JOIN ugcs u on (w.gid = u.gid)\n        WHERE vtec_year = :year and substr(u.ugc, 1, 2) = :st\n        and eventid is not null and {plimit}\n        GROUP by w.wfo, phenomena, significance, eventid)\n\n    SELECT u.*, coalesce(p.area, u.area) as myarea\n    from ugcareas u LEFT JOIN polyareas p on\n    (u.phenomena = p.phenomena and u.significance = p.significance\n     and u.eventid = p.eventid and u.wfo = p.wfo)\n        ORDER by u.phenomena ASC, u.significance ASC, u.utc_issue ASC\n    \"\"\",\n                plimit=plimit,\n            ),\n            {\"year\": year, \"st\": state, \"ph\": phenomena, \"sig\": significance},\n        )\n        for row in res.mappings():\n            uri = (\n                f\"/vtec/?year={year}&wfo={rectify_wfo(row['wfo'])}&\"\n                f\"phenomena={row['phenomena']}&\"\n                f\"significance={row['significance']}&\"\n                f\"eventid={row['eventid']:04.0f}\"\n            )\n            data[\"events\"].append(\n                dict(\n                    ph_name=VTEC_PHENOMENA.get(\n                        row[\"phenomena\"], row[\"phenomena\"]\n                    ),\n                    sig_name=VTEC_SIGNIFICANCE.get(\n                        row[\"significance\"], row[\"significance\"]\n                    ),\n                    phenomena=row[\"phenomena\"],\n                    significance=row[\"significance\"],\n                    eventid=row[\"eventid\"],\n                    hvtec_nwsli=row[\"nwsli\"],\n                    area=float(row[\"myarea\"]),\n                    locations=row[\"locations\"],\n                    issue=row[\"utc_issue\"].strftime(ISO8601),\n                    product_issue=row[\"utc_product_issue\"].strftime(ISO8601),\n                    expire=row[\"utc_expire\"].strftime(ISO8601),\n                    init_expire=row[\"utc_init_expire\"].strftime(ISO8601),\n                    uri=uri,\n                    wfo=row[\"wfo\"],\n                )\n            )\n    return data\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    state = environ[\"state\"]\n    year = environ[\"year\"]\n    phenomena = environ[\"phenomena\"]\n    significance = environ[\"significance\"]\n    fmt = environ[\"fmt\"]\n    res = get_res(state, year, phenomena, significance)\n\n    if fmt == \"xlsx\":\n        fn = f\"vtec_{state}_{year}_{phenomena}_{significance}.xlsx\"\n        headers = [\n            (\"Content-type\", EXL),\n            (\"Content-disposition\", f\"attachment; Filename={fn}\"),\n        ]\n        start_response(\"200 OK\", headers)\n        bio = BytesIO()\n        pd.DataFrame(res[\"events\"]).to_excel(bio, index=False)\n        return [bio.getvalue()]\n    if fmt == \"csv\":\n        fn = f\"vtec_{state}_{year}_{phenomena}_{significance}.csv\"\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-disposition\", f\"attachment; Filename={fn}\"),\n        ]\n        start_response(\"200 OK\", headers)\n        bio = StringIO()\n        pd.DataFrame(res[\"events\"]).to_csv(bio, index=False)\n        return [bio.getvalue().encode(\"utf-8\")]\n\n    res = json.dumps(res)\n\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return res.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/vtec_events_byugc.py",
    "content": "\"\"\".. title:: VTEC Events by UGC\n\nReturn to `API Services </api/#json>`_\n\nDocumentation for /json/vtec_events_byugc.py\n--------------------------------------------\n\nThis metadata service returns VTEC events for the given UGC.\n\nChangelog\n---------\n\n- 2025-01-20: Added explicit `sts` and `ets` parameters for a more explicit\n    datetime range.\n- 2024-07-18: Initial documentation release and migration to pydantic.\n\nExample Requests\n----------------\n\nGet all events for IAC169 during May 2024 UTC\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events_byugc.py\\\n?ugc=IAC169&sts=2024-05-01T00:00:00Z&ets=2024-06-01T00:00:00Z\n\nGet all events during 2024 for Story County, Iowa IAC169\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events_byugc.py\\\n?ugc=IAC169&sdate=2024-01-01&edate=2024-12-31\n\nSame request, but in CSV format\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events_byugc.py\\\n?ugc=IAC169&sdate=2024-01-01&edate=2024-12-31&fmt=csv\n\nSame request, but in Excel format\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events_byugc.py\\\n?ugc=IAC169&sdate=2024-01-01&edate=2024-12-31&fmt=xlsx\n\n\"\"\"\n\nimport json\nfrom datetime import datetime\nfrom io import BytesIO, StringIO\n\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.nws.vtec import VTEC_PHENOMENA, VTEC_SIGNIFICANCE, get_ps_string\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.mlib import rectify_wfo\nfrom iemweb.util import json_response_dict\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    fmt: str = Field(\n        default=\"json\",\n        description=\"Response format, either json, csv, or excel\",\n        pattern=\"^(csv|json|excel|xlsx)$\",\n    )\n    edate: str = Field(\n        default=f\"{utc().year}-12-31\",\n        description=\"End Date (midnight US Central) to end query for issuance\",\n    )\n    sdate: str = Field(\n        default=\"1986-01-01\",\n        description=(\n            \"Start Date (midnight US Central) to start query for issuance\"\n        ),\n    )\n    sts: AwareDatetime = Field(\n        default=None,\n        description=\"Start timestamp (overrides sdate) for event issuance\",\n    )\n    ets: AwareDatetime = Field(\n        default=None,\n        description=\"End timestamp (overrides edate) for event issuance\",\n    )\n    ugc: str = Field(\n        default=\"IAC001\",\n        description=\"6-character NWS Universal Geographic Code\",\n        pattern=r\"^[A-Z][A-Z][CZ]\\d\\d\\d$\",\n        max_length=6,\n        min_length=6,\n    )\n\n\ndef make_url(row):\n    \"\"\"Build URL.\"\"\"\n    return (\n        f\"/vtec/?year={row['vtec_year']}&wfo={rectify_wfo(row['wfo'])}&\"\n        f\"phenomena={row['phenomena']}&significance={row['significance']}&\"\n        f\"eventid={row['eventid']:04.0f}\"\n    )\n\n\ndef get_df(ugc, sts: datetime, ets: datetime):\n    \"\"\"Answer the request!\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT vtec_year,\n            to_char(issue at time zone 'UTC',\n                'YYYY-MM-DDThh24:MI:SSZ') as iso_issued,\n            to_char(issue at time zone 'UTC',\n                'YYYY-MM-DD hh24:MI') as issued,\n            to_char(expire at time zone 'UTC',\n                'YYYY-MM-DDThh24:MI:SSZ') as iso_expired,\n            to_char(expire at time zone 'UTC',\n                'YYYY-MM-DD hh24:MI') as expired,\n            eventid, phenomena, significance, hvtec_nwsli, wfo, ugc,\n            product_ids[1] as product_id\n            from warnings WHERE ugc = :ugc and issue >= :sts\n            and issue < :ets ORDER by issue ASC\n            \"\"\"),\n            conn,\n            params={\"ugc\": ugc, \"sts\": sts, \"ets\": ets},\n        )\n    if df.empty:\n        return df\n    df[\"name\"] = df[[\"phenomena\", \"significance\"]].apply(\n        lambda x: get_ps_string(x.iloc[0], x.iloc[1]), axis=1\n    )\n    df[\"ph_name\"] = df[\"phenomena\"].map(VTEC_PHENOMENA)\n    df[\"sig_name\"] = df[\"significance\"].map(VTEC_SIGNIFICANCE)\n    # Ugly hack for FW.A\n    df.loc[\n        (df[\"phenomena\"] == \"FW\") & (df[\"significance\"] == \"A\"), \"ph_name\"\n    ] = \"Fire Weather\"\n    # Construct a URL\n    df[\"url\"] = df.apply(make_url, axis=1)\n    return df\n\n\ndef as_json(df):\n    \"\"\"Materialize this df as JSON.\"\"\"\n    res = json_response_dict({\"events\": []})\n    for _, row in df.iterrows():\n        res[\"events\"].append(\n            {\n                \"url\": row[\"url\"],\n                \"issue\": row[\"iso_issued\"],\n                \"expire\": row[\"iso_expired\"],\n                \"eventid\": row[\"eventid\"],\n                \"phenomena\": row[\"phenomena\"],\n                \"hvtec_nwsli\": row[\"hvtec_nwsli\"],\n                \"significance\": row[\"significance\"],\n                \"wfo\": row[\"wfo\"],\n                \"name\": row[\"name\"],\n                \"ph_name\": row[\"ph_name\"],\n                \"sig_name\": row[\"sig_name\"],\n                \"ugc\": row[\"ugc\"],\n                \"product_id\": row[\"product_id\"],\n            }\n        )\n\n    return json.dumps(res).replace(\" NaN\", \" null\")\n\n\ndef parse_date(val):\n    \"\"\"convert string to date.\"\"\"\n    fmt = \"%Y/%m/%d\" if \"/\" in val else \"%Y-%m-%d\"\n    return datetime.strptime(val, fmt)\n\n\ndef get_mckey(environ):\n    \"\"\"Compute the key.\"\"\"\n    if environ[\"fmt\"] != \"json\":\n        return None\n    return (\n        f\"/json/vtec_events_byugc.json|{environ['ugc']}|\"\n        f\"{environ['sdate']}|{environ['edate']}\"\n    ).replace(\" \", \"_\")  # memcache key cannot have spaces\n\n\n@iemapp(help=__doc__, schema=Schema, memcachekey=get_mckey, memcacheexpire=600)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    ugc = environ[\"ugc\"]\n    try:\n        sts = parse_date(environ[\"sdate\"])\n        ets = parse_date(environ[\"edate\"])\n    except Exception as exp:\n        raise IncompleteWebRequest(str(exp)) from exp\n    if environ[\"sts\"]:\n        sts = environ[\"sts\"]\n    if environ[\"ets\"]:\n        ets = environ[\"ets\"]\n    fmt = environ[\"fmt\"]\n\n    df = get_df(ugc, sts, ets)\n    if fmt in [\"xlsx\", \"excel\"]:\n        fn = f\"vtec_{ugc}_{sts:%Y%m%d}_{ets:%Y%m%d}.xlsx\"\n        headers = [\n            (\"Content-type\", EXL),\n            (\"Content-disposition\", f\"attachment; Filename={fn}\"),\n        ]\n        start_response(\"200 OK\", headers)\n        bio = BytesIO()\n        df.to_excel(bio, index=False)\n        return [bio.getvalue()]\n    if fmt == \"csv\":\n        fn = f\"vtec_{ugc}_{sts:%Y%m%d}_{ets:%Y%m%d}.csv\"\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-disposition\", f\"attachment; Filename={fn}\"),\n        ]\n        start_response(\"200 OK\", headers)\n        bio = StringIO()\n        df.to_csv(bio, index=False)\n        return [bio.getvalue().encode(\"utf-8\")]\n\n    res = as_json(df)\n\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return res.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/vtec_events_bywfo.py",
    "content": "\"\"\".. title:: VTEC Events by WFO\n\nReturn to `API Services </api/#json>`_\n\nChangelog\n---------\n\n- 2024-08-14: Initial documentation and pydantic validation\n\nExample Requests\n----------------\n\nReturn all Des Moines Tornado Warnings for 2024\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events_bywfo.py?\\\nwfo=DMX&year=2024&phenomena=TO&significance=W\n\nSame request, csv format\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events_bywfo.py?\\\nwfo=DMX&year=2024&phenomena=TO&significance=W&fmt=csv\n\nSame request, xlsx format\n\nhttps://mesonet.agron.iastate.edu/json/vtec_events_bywfo.py?\\\nwfo=DMX&year=2024&phenomena=TO&significance=W&fmt=xlsx\n\n\"\"\"\n\nimport json\nfrom io import BytesIO, StringIO\n\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import (\n    CALLBACK_FIELD,\n    VTEC_PH_FIELD_OPTIONAL,\n    VTEC_SIG_FIELD_OPTIONAL,\n    VTEC_YEAR_FIELD,\n)\nfrom iemweb.mlib import rectify_wfo\nfrom iemweb.util import json_response_dict\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    fmt: str = Field(\n        default=\"json\",\n        description=\"The format of the response, either json or csv or xlsx\",\n        pattern=\"^(json|csv|xlsx)$\",\n    )\n    start: AwareDatetime = Field(\n        default=None,\n        description=\"Start of period of interest\",\n    )\n    end: AwareDatetime = Field(\n        default=None,\n        description=\"End of period of interest\",\n    )\n    phenomena: VTEC_PH_FIELD_OPTIONAL = None\n    significance: VTEC_SIG_FIELD_OPTIONAL = None\n    wfo: str = Field(\n        default=\"DMX\", description=\"3 character WFO identifier\", max_length=3\n    )\n    year: VTEC_YEAR_FIELD = utc().year\n\n\ndef make_url(row):\n    \"\"\"Build URL.\"\"\"\n    return (\n        f\"https://mesonet.agron.iastate.edu/vtec/?year={row['vtec_year']}&\"\n        f\"wfo={rectify_wfo(row['wfo'])}&\"\n        f\"phenomena={row['phenomena']}&\"\n        f\"significance={row['significance']}&\"\n        f\"eventid={row['eventid']:04.0f}\"\n    )\n\n\ndef get_df(wfo, start, end, phenomena, significance):\n    \"\"\"Answer the request!\"\"\"\n    params = {\n        \"wfo\": wfo,\n        \"start\": start,\n        \"end\": end,\n    }\n    plimiter = \"\"\n    if phenomena is not None:\n        params[\"phenomena\"] = phenomena\n        plimiter = \" and phenomena = :phenomena \"\n    if significance is not None:\n        params[\"significance\"] = significance\n        plimiter += \" and significance = :significance \"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT\n            to_char(product_issue at time zone 'UTC',\n                'YYYY-MM-DDThh24:MI:SSZ') as product_issued,\n            to_char(init_expire at time zone 'UTC',\n                'YYYY-MM-DDThh24:MI:SSZ') as init_expired,\n            to_char(issue at time zone 'UTC',\n                'YYYY-MM-DDThh24:MI:SSZ') as issued,\n            to_char(expire at time zone 'UTC',\n                'YYYY-MM-DDThh24:MI:SSZ') as expired,\n            to_char(updated at time zone 'UTC',\n                'YYYY-MM-DDThh24:MI:SSZ') as updated,\n            to_char(purge_time at time zone 'UTC',\n                'YYYY-MM-DDThh24:MI:SSZ') as purge_time,\n            eventid, phenomena, significance, hvtec_nwsli, wfo, ugc,\n            product_ids[1] as product_id,\n            vtec_year, product_ids[cardinality(product_ids)] as last_product_id\n            from warnings WHERE wfo = :wfo and issue < :end\n            and (expire > :start or init_expire > :start)\n            {plimiter} ORDER by issue ASC\n            \"\"\",\n                plimiter=plimiter,\n            ),\n            conn,\n            params=params,\n        )\n    if df.empty:\n        return df\n    # Construct a URL\n    df[\"url\"] = df.apply(make_url, axis=1)\n    return df\n\n\ndef as_json(df: pd.DataFrame) -> str:\n    \"\"\"Materialize this df as JSON.\"\"\"\n    res = json_response_dict({\"events\": []})\n    for _, row in df.iterrows():\n        res[\"events\"].append(\n            {\n                \"url\": row[\"url\"],\n                \"product_issued\": row[\"product_issued\"],\n                \"issue\": row[\"issued\"],\n                \"expire\": row[\"expired\"],\n                \"init_expired\": row[\"init_expired\"],\n                \"purge_time\": row[\"purge_time\"],\n                \"updated\": row[\"updated\"],\n                \"eventid\": row[\"eventid\"],\n                \"phenomena\": row[\"phenomena\"],\n                \"hvtec_nwsli\": row[\"hvtec_nwsli\"],\n                \"significance\": row[\"significance\"],\n                \"last_product_id\": row[\"last_product_id\"],\n                \"product_id\": row[\"product_id\"],\n                \"wfo\": row[\"wfo\"],\n                \"ugc\": row[\"ugc\"],\n            }\n        )\n\n    return json.dumps(res).replace(\" NaN\", \" null\")\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    wfo = environ[\"wfo\"]\n    year = environ[\"year\"]\n    start = environ[\"start\"]\n    end = environ[\"end\"]\n    if start is None or end is None:\n        start = utc(year)\n        end = utc(year + 1)\n    phenomena = environ[\"phenomena\"]\n    significance = environ[\"significance\"]\n    fmt = environ[\"fmt\"]\n\n    df = get_df(wfo, start, end, phenomena, significance)\n    if fmt == \"xlsx\":\n        fn = f\"vtec_{wfo}_{start:%Y%m%d%H%M}_{end:%Y%m%d%H%M}.xlsx\"\n        headers = [\n            (\"Content-type\", EXL),\n            (\"Content-disposition\", f\"attachment; Filename={fn}\"),\n        ]\n        start_response(\"200 OK\", headers)\n        bio = BytesIO()\n        df.to_excel(bio, index=False)\n        return [bio.getvalue()]\n    if fmt == \"csv\":\n        fn = f\"vtec_{wfo}_{start:%Y%m%d%H%M}_{end:%Y%m%d%H%M}.csv\"\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-disposition\", f\"attachment; Filename={fn}\"),\n        ]\n        start_response(\"200 OK\", headers)\n        bio = StringIO()\n        df.to_csv(bio, index=False)\n        return [bio.getvalue().encode(\"utf-8\")]\n\n    res = as_json(df)\n\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return res.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/vtec_max_etn.py",
    "content": "\"\"\".. title:: VTEC Max EventID by Year\n\nReturn to `API Services </api/>`_\n\nChangelog\n---------\n\n- 2024-08-05: Initial documtation update\n\nExample Requests\n----------------\n\nProvide all the max ETNs for 2024\n\nhttps://mesonet.agron.iastate.edu/json/vtec_max_etn.py?year=2024&format=json\n\nAnd as HTML\n\nhttps://mesonet.agron.iastate.edu/json/vtec_max_etn.py?year=2024&format=html\n\n\"\"\"\n\nimport json\nfrom typing import Annotated\n\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.database import get_dbconn\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import CALLBACK_FIELD, VTEC_YEAR_FIELD\nfrom iemweb.util import get_ct, json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    year: VTEC_YEAR_FIELD = 2015\n    format: Annotated[\n        str,\n        Field(\n            description=\"Format\",\n            pattern=\"json|html\",\n        ),\n    ] = \"json\"\n\n\ndef run(year, fmt):\n    \"\"\"Generate a report of max VTEC ETNs\n\n    Args:\n      year (int): year to run for\n    \"\"\"\n    pgconn = get_dbconn(\"postgis\")\n    cursor = pgconn.cursor()\n\n    cursor.execute(\n        \"\"\"\n    SELECT wfo, phenomena, significance, max(eventid),\n    '/vtec/?year='||max(vtec_year)||'&wfo='||\n    wfo||'&phenomena='||phenomena||'&significance='||significance||'&eventid='||\n    max(eventid)::text\n    from warnings WHERE vtec_year = %s and\n    wfo is not null and eventid is not null and\n    phenomena is not null and significance is not null\n    GROUP by wfo, phenomena, significance\n    ORDER by wfo ASC, phenomena ASC, significance ASC\n    \"\"\",\n        (year,),\n    )\n    res = json_response_dict(\n        {\n            \"count\": cursor.rowcount,\n            \"columns\": [\n                {\"name\": \"wfo\", \"type\": \"str\"},\n                {\"name\": \"phenomena\", \"type\": \"str\"},\n                {\"name\": \"significance\", \"type\": \"str\"},\n                {\"name\": \"max_eventid\", \"type\": \"int\"},\n                {\"name\": \"url\", \"type\": \"str\"},\n            ],\n            \"table\": cursor.fetchall(),\n        }\n    )\n    cursor.close()\n    pgconn.close()\n\n    if fmt == \"json\":\n        return json.dumps(res)\n    if not res[\"table\"]:\n        return \"NO DATA\"\n    # Make a hacky table\n    df = pd.DataFrame(\n        res[\"table\"], columns=[c[\"name\"] for c in res[\"columns\"]]\n    )\n    df[\"url\"] = (\n        '<a href=\"' + df[\"url\"] + '\">' + df[\"max_eventid\"].apply(str) + \"</a>\"\n    )\n    df = (\n        df.drop(\"max_eventid\", axis=1)\n        .pivot_table(\n            index=\"wfo\",\n            columns=[\"phenomena\", \"significance\"],\n            values=\"url\",\n            aggfunc=\" \".join,\n        )\n        .fillna(\"\")\n    )\n\n    cls = [\"table-bordered\", \"table-condensed\", \"table-striped\"]\n    html = (\n        f\"<p><strong>Table generated at: {res['generated_at']}</strong></p>\\n\"\n        f\"{df.to_html(classes=cls, escape=False)}\"\n    )\n    return html\n\n\ndef get_mckey(environ):\n    \"\"\"Figure out the key.\"\"\"\n    year = environ[\"year\"]\n    fmt = environ[\"format\"]\n    return f\"/json/vtec_max_etn/{year}/{fmt}\"\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    content_type=get_ct,\n    memcachekey=get_mckey,\n    memcacheexpire=300,\n)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n\n    year = environ[\"year\"]\n    fmt = environ[\"format\"]\n    headers = [(\"Content-type\", get_ct(environ))]\n\n    res = run(year, fmt)\n    start_response(\"200 OK\", headers)\n    return res\n"
  },
  {
    "path": "pylib/iemweb/json/vtec_pds.py",
    "content": "\"\"\".. title:: VTEC PDS Events\n\nReturn to `API Services </api/>`_\n\nChangelog\n---------\n\n- 2024-08-05: Initial documtation update\n\n\"\"\"\n\nimport json\n\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.mlib import rectify_wfo\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n\n\n@with_sqlalchemy_conn(\"postgis\")\ndef run(conn: Connection = None):\n    \"\"\"Generate data.\"\"\"\n    data = json_response_dict({\"events\": []})\n    res = conn.execute(\n        sql_helper(\"\"\"\n    SELECT vtec_year, wfo, eventid,\n    phenomena, significance,\n    min(product_issue at time zone 'UTC') as utc_product_issue,\n    min(init_expire at time zone 'UTC') as utc_init_expire,\n    min(issue at time zone 'UTC') as utc_issue,\n    max(expire at time zone 'UTC') as utc_expire,\n    array_to_string(array_agg(distinct substr(ugc, 1, 2)), ',') as states\n    from warnings\n    WHERE is_pds\n    GROUP by vtec_year, wfo, eventid, phenomena, significance\n    ORDER by utc_issue ASC\n\"\"\")\n    )\n    for row in res.mappings():\n        uri = (\n            f\"/vtec/?year={row['vtec_year']}&wfo=\"\n            f\"{rectify_wfo(row['wfo'])}&phenomena={row['phenomena']}&\"\n            f\"significance={row['significance']}&eventid={row['eventid']}\"\n        )\n        data[\"events\"].append(\n            dict(\n                year=row[\"vtec_year\"],\n                phenomena=row[\"phenomena\"],\n                significance=row[\"significance\"],\n                eventid=row[\"eventid\"],\n                issue=row[\"utc_issue\"].strftime(ISO8601),\n                product_issue=row[\"utc_product_issue\"].strftime(ISO8601),\n                expire=row[\"utc_expire\"].strftime(ISO8601),\n                init_expire=row[\"utc_init_expire\"].strftime(ISO8601),\n                uri=uri,\n                wfo=row[\"wfo\"],\n                states=row[\"states\"],\n            )\n        )\n    return json.dumps(data)\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcacheexpire=3600,\n    memcachekey=\"/json/vtec_pds\",\n)\ndef application(_environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return run()\n"
  },
  {
    "path": "pylib/iemweb/json/watches.py",
    "content": "\"\"\".. title: SPC Watches Service\n\nReturn to `API Services </api/>`_\n\nDocumentation for /json/watches.py\n----------------------------------\n\nThis service emits metadata for SPC issued convective watches.  You can request\none year's worth of data at a time.\n\nChangelog\n---------\n\n- 2024-08-05: Initial documentation update\n\nExample Requests\n----------------\n\nProvide all 2024 watches\n\nhttps://mesonet.agron.iastate.edu/json/watches.py?year=2024\n\nProvide all 2024 PDS watches\n\nhttps://mesonet.agron.iastate.edu/json/watches.py?year=2024&is_pds=1\n\n\"\"\"\n\nimport json\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy import Connection, text\n\nfrom iemweb.fields import CALLBACK_FIELD\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"see how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    is_pds: Annotated[bool, Field(description=\"Only PDS Watches\")] = False\n    year: Annotated[\n        int, Field(description=\"Year to return watches for.\", ge=1997)\n    ] = 2022\n\n\ndef run(conn: Connection, year: int, is_pds: bool) -> str:\n    \"\"\"Generate data.\"\"\"\n\n    if is_pds:\n        limiter = \"w.is_pds\"\n    else:\n        limiter = \"extract(year from w.issued at time zone 'UTC') = :year\"\n    res = conn.execute(\n        text(f\"\"\"\n        with data as (\n            select w.ctid,\n            string_agg(state_abbr, ',' order by state_abbr) as states\n            from watches w, states s where {limiter} and\n            st_intersects(w.geom, s.the_geom) and issued is not null\n            and expired is not null GROUP by w.ctid)\n        select extract(year from issued at time zone 'UTC')::int as year,\n        num, type,\n        issued at time zone 'UTC' as utc_issued,\n        expired at time zone 'UTC' as utc_expired,\n        product_id_sel, product_id_wwp, tornadoes_1m_strong,\n        hail_1m_2inch, max_hail_size, max_wind_gust_knots, states, is_pds\n        from data d JOIN watches w on (d.ctid = w.ctid) ORDER by issued ASC\n    \"\"\"),\n        {\"year\": year},\n    )\n    data = json_response_dict({\"events\": []})\n    for row in res.mappings():\n        data[\"events\"].append(\n            dict(\n                year=row[\"year\"],\n                num=row[\"num\"],\n                type=row[\"type\"],\n                issue=row[\"utc_issued\"].strftime(ISO8601),\n                expire=row[\"utc_expired\"].strftime(ISO8601),\n                product_id_sel=row[\"product_id_sel\"],\n                product_id_wwp=row[\"product_id_wwp\"],\n                tornadoes_1m_strong=row[\"tornadoes_1m_strong\"],\n                hail_1m_2inch=row[\"hail_1m_2inch\"],\n                max_hail_size=row[\"max_hail_size\"],\n                max_wind_gust_knots=row[\"max_wind_gust_knots\"],\n                states=row[\"states\"],\n                is_pds=row[\"is_pds\"],\n            )\n        )\n    return json.dumps(data)\n\n\ndef mckey(environ: dict) -> str:\n    \"\"\"Generate a cache key.\"\"\"\n    return f\"/json/watch/{environ['is_pds']}/{environ['year']}\"\n\n\n@iemapp(help=__doc__, schema=Schema, memcachekey=mckey, memcacheexpire=600)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        return run(conn, environ[\"year\"], environ[\"is_pds\"])\n"
  },
  {
    "path": "pylib/iemweb/json/webcam.py",
    "content": "\"\"\".. title:: JSON Webcam Data\n\nReturn to `API Services </api/>`_\n\nChangelog\n---------\n\n- 2024-08-05: Initial documtation update\n\n\"\"\"\n\nimport json\nfrom datetime import datetime, timedelta\nfrom typing import Annotated\nfrom zoneinfo import ZoneInfo\n\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    cid: Annotated[str, Field(description=\"Camera ID\")] = \"ISUC-006\"\n    date: Annotated[\n        str | None, Field(description=\"Date in YYYYMMDD format\")\n    ] = None\n    end_ts: Annotated[str, Field(description=\"End Timestamp in UTC\")] = (\n        \"202101012359\"\n    )\n    start_ts: Annotated[str, Field(description=\"Start Timestamp in UTC\")] = (\n        \"202101010000\"\n    )\n\n\ndef dance(cid, start_ts, end_ts):\n    \"\"\"Go get the dictionary of data we need and deserve\"\"\"\n    data = json_response_dict({\"images\": []})\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        res = conn.execute(\n            sql_helper(\"\"\"\n        SELECT valid at time zone 'UTC', drct from camera_log where\n        cam = :cid and valid >= :sts and valid < :ets\n    \"\"\"),\n            {\"cid\": cid, \"sts\": start_ts, \"ets\": end_ts},\n        )\n        for row in res:\n            uri = row[0].strftime(\n                \"https://mesonet.agron.iastate.edu/archive/\"\n                f\"data/%Y/%m/%d/camera/{cid}/{cid}_%Y%m%d%H%M.jpg\"\n            )\n            data[\"images\"].append(\n                {\n                    \"valid\": row[0].strftime(\"%Y-%m-%dT%H:%M:00Z\"),\n                    \"drct\": row[1],\n                    \"href\": uri,\n                }\n            )\n    return data\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    cid = environ[\"cid\"]\n    start_ts = environ[\"start_ts\"]\n    end_ts = environ[\"end_ts\"]\n    dt = environ[\"date\"]\n    if dt is not None:\n        start_ts = datetime.strptime(dt, \"%Y%m%d\")\n        start_ts = start_ts.replace(tzinfo=ZoneInfo(\"America/Chicago\"))\n        end_ts = start_ts + timedelta(days=1)\n    else:\n        if start_ts is None:\n            raise IncompleteWebRequest(\"GET start_ts= parameter missing\")\n        start_ts = datetime.strptime(start_ts, \"%Y%m%d%H%M\")\n        start_ts = start_ts.replace(tzinfo=ZoneInfo(\"UTC\"))\n        end_ts = datetime.strptime(end_ts, \"%Y%m%d%H%M\")\n        end_ts = end_ts.replace(tzinfo=ZoneInfo(\"UTC\"))\n\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return [json.dumps(dance(cid, start_ts, end_ts)).encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/json/webcams.py",
    "content": "\"\"\".. title:: Available Archived Webcams at given time\n\nReturn to `API Services </api/#json>`.\n\nDocumentation for /json/webcams.json\n-------------------------------------\n\nThis service provides a listing of available archived webcam images for a\ngiven time.  The first entry is to a crude overview map with the NEXRAD\noverlain at the given time.\n\nChangelog\n---------\n\n- 2024-08-14: Initial documentation update\n\nExample usage\n-------------\n\nReturn webcam images value at approximately 2020-08-10 17:00 UTC for the KCRG\nnetwork:\n\nhttps://mesonet.agron.iastate.edu/json/webcams.py\\\n?network=KCRG&ts=2020-08-10T16:00:00Z\n\nThe same request, but for the IDOT network:\n\nhttps://mesonet.agron.iastate.edu/json/webcams.py\\\n?network=IDOT&ts=2020-08-10T16:00:00Z\n\nGet current imagery from the MCFC network:\n\nhttps://mesonet.agron.iastate.edu/json/webcams.py?network=MCFC\n\n\"\"\"\n\nimport json\nfrom datetime import timedelta, timezone\nfrom typing import Annotated\nfrom zoneinfo import ZoneInfo\n\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy import Connection\n\nfrom iemweb.fields import CALLBACK_FIELD, NETWORK_FIELD\nfrom iemweb.util import json_response_dict\n\nUS_CENTRAL = ZoneInfo(\"America/Chicago\")\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    network: NETWORK_FIELD = \"KCRG\"\n    ts: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=(\n                \"Archived timestamp to look for imagery, \"\n                \"not providing implies realtime.\"\n            ),\n        ),\n    ] = None\n\n\ndef query_db(conn: Connection, environ):\n    \"\"\"Query the database.\"\"\"\n    network = environ[\"network\"]\n    ts = environ[\"ts\"]\n    params = {\n        \"network\": network,\n        \"ts\": ts,\n    }\n    if ts is not None and network != \"IDOT\":\n        sql = (\n            \"SELECT * from camera_log c, webcams w WHERE valid = :ts and \"\n            \"c.cam = w.id and w.network = :network ORDER by name ASC\"\n        )\n    elif ts is not None:\n        # RWIS are not exactly on the 5 minute boundary\n        sql = (\n            \"SELECT * from camera_log c, webcams w WHERE valid BETWEEN \"\n            \":sts and :ets and c.cam = w.id and w.network = :network \"\n            \"ORDER by name ASC, valid ASC\"\n        )\n        params[\"sts\"] = ts - timedelta(minutes=10)\n        params[\"ets\"] = ts + timedelta(minutes=10)\n    else:\n        sql = (\n            \"SELECT * from camera_current c, webcams w WHERE \"\n            \"valid > (now() - '30 minutes'::interval) and c.cam = w.id \"\n            \"and w.network = :network ORDER by name ASC\"\n        )\n    return conn.execute(sql_helper(sql), params)\n\n\n@iemapp(\n    content_type=\"application/json\",\n    help=__doc__,\n    schema=Schema,\n)\ndef application(environ, start_response):\n    \"\"\"Answer request.\"\"\"\n    data = json_response_dict({\"images\": []})\n    # Add the overview image, le sigh, it wants US Central Time\n    extra = (\n        \"\"\n        if environ[\"ts\"] is None\n        else f\"ts={environ['ts'].astimezone(US_CENTRAL):%Y%m%d%H%M}\"\n    )\n    data[\"images\"].append(\n        {\n            \"cid\": f\"{environ['network']}-000\",\n            \"name\": \"NEXRAD Overview\",\n            \"county\": \"\",\n            \"network\": \"\",\n            \"state\": \"\",\n            \"url\": (\n                \"https://mesonet.agron.iastate.edu/current/camrad.php?network=\"\n                f\"{environ['network']}&{extra}\"\n            ),\n        }\n    )\n    used = []\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        res = query_db(conn, environ)\n        for row in res.mappings():\n            if row[\"cam\"] in used:\n                continue\n            used.append(row[\"cam\"])\n            utcvalid = row[\"valid\"].astimezone(timezone.utc)\n            url = (\n                \"https://mesonet.agron.iastate.edu/archive/data/\"\n                f\"{utcvalid:%Y/%m/%d}/camera/\"\n                f\"{row['cam']}/{row['cam']}_{utcvalid:%Y%m%d%H%M}.jpg\"\n            )\n            data[\"images\"].append(\n                {\n                    \"cid\": row[\"id\"],\n                    \"name\": row[\"name\"],\n                    \"county\": row[\"county\"],\n                    \"network\": row[\"network\"],\n                    \"state\": row[\"state\"],\n                    \"url\": url,\n                }\n            )\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return json.dumps(data)\n"
  },
  {
    "path": "pylib/iemweb/json/wpcmpd.py",
    "content": "\"\"\".. title:: WPC MPD Service\n\nReturn to `API Services </api/#json>`_\n\nChangelog\n---------\n\n- 2025-06-29: Initial implementation of WPC MPD service.\n\nExample Requests\n----------------\n\nReturn MPDs issued for Ames, IA in JSON, then CSV, then Excel format.\n\nhttps://mesonet.agron.iastate.edu/json/wpcmpd.py?lat=42.0&lon=-95.0\n\nhttps://mesonet.agron.iastate.edu/json/wpcmpd.py?lat=42.0&lon=-95.0&fmt=csv\n\nhttps://mesonet.agron.iastate.edu/json/wpcmpd.py?lat=42.0&lon=-95.0&fmt=excel\n\n\"\"\"\n\nimport json\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.fields import (\n    CALLBACK_FIELD,\n    LATITUDE_FIELD,\n    LONGITUDE_FIELD,\n)\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    fmt: Annotated[\n        str,\n        Field(\n            description=(\n                \"The format to return data in, either json, excel, or csv\"\n            ),\n            pattern=\"^(json|excel|csv)$\",\n        ),\n    ] = \"json\"\n    lat: LATITUDE_FIELD = 42.0\n    lon: LONGITUDE_FIELD = -95.0\n\n\n@with_sqlalchemy_conn(\"postgis\")\ndef dowork(lon, lat, conn: Connection | None = None) -> pd.DataFrame:\n    \"\"\"Actually do stuff\"\"\"\n    mpds = pd.read_sql(\n        sql_helper(\"\"\"\n    SELECT issue at time zone 'UTC' as i,\n    expire at time zone 'UTC' as e, watch_confidence,\n    num as product_num, product_id, year, concerning,\n    most_prob_tornado, most_prob_hail, most_prob_gust from mpd WHERE\n    ST_Contains(geom, ST_Point(:lon, :lat, 4326))\n    ORDER by product_id DESC\n\"\"\"),\n        conn,\n        params={\"lon\": lon, \"lat\": lat},\n    )\n    if not mpds.empty:\n        mpds[\"utc_issue\"] = mpds[\"i\"].dt.strftime(ISO8601)\n        mpds[\"utc_expire\"] = mpds[\"e\"].dt.strftime(ISO8601)\n        mpds[\"product_href\"] = (\n            \"https://mesonet.agron.iastate.edu/p.php?pid=\" + mpds[\"product_id\"]\n        )\n    return mpds.drop(columns=[\"i\", \"e\"])\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    query: Schema = environ[\"_cgimodel_schema\"]\n\n    mpds = dowork(query.lon, query.lat)\n    if query.fmt == \"json\":\n        data = json_response_dict({\"mpds\": []})\n        for _, row in mpds.iterrows():\n            conf = (\n                None\n                if pd.isna(row[\"watch_confidence\"])\n                else row[\"watch_confidence\"]\n            )\n            data[\"mpds\"].append(\n                dict(\n                    year=row[\"year\"],\n                    utc_issue=row[\"utc_issue\"],\n                    utc_expire=row[\"utc_expire\"],\n                    product_num=row[\"product_num\"],\n                    product_id=row[\"product_id\"],\n                    product_href=row[\"product_href\"],\n                    concerning=row[\"concerning\"],\n                    watch_confidence=conf,\n                    most_prob_tornado=row[\"most_prob_tornado\"],\n                    most_prob_hail=row[\"most_prob_hail\"],\n                    most_prob_gust=row[\"most_prob_gust\"],\n                )\n            )\n        headers = [(\"Content-type\", \"application/json\")]\n        start_response(\"200 OK\", headers)\n        return json.dumps(data).encode(\"ascii\")\n\n    if query.fmt == \"excel\":\n        headers = [\n            (\"Content-type\", \"application/vnd.ms-excel\"),\n            (\"Content-Disposition\", \"attachment; filename=wpcmpd.xls\"),\n        ]\n        start_response(\"200 OK\", headers)\n        with BytesIO() as bio:\n            mpds.to_excel(bio, index=False)\n            return bio.getvalue()\n\n    headers = [\n        (\"Content-type\", \"text/csv\"),\n        (\"Content-Disposition\", \"attachment; filename=wpcmpd.csv\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return mpds.to_csv(index=False).encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/json/wpcoutlook.py",
    "content": "\"\"\".. title:: WPC Outlook Service\n\nReturn to `API Services </api/>`_.\n\nDocumentation for /json/wpcoutlook.py\n-------------------------------------\n\nThis service provides access to the Weather Prediction Center's Excessive\nRainfall Outlook products.\nThe service is designed to be called with a latitude and longitude point.\n\nChangelog\n---------\n\n- 2026-02-24: For IEM consistency, the `generation_time` root attribute was\n  renamed `generated_at`.\n- 2025-06-29: Initial implementation of WPC Outlook service.\n\nExample Usage\n-------------\n\nGet all the day 1 outlooks for Pierre, South Dakota.  First in JSON, then\nCSV, and finally Excel.\n\nhttps://mesonet.agron.iastate.edu/json/wpcoutlook.py\\\n?lat=44.368&lon=-100.336&day=1\nhttps://mesonet.agron.iastate.edu/json/wpcoutlook.py\\\n?lat=44.368&lon=-100.336&day=1&fmt=csv\nhttps://mesonet.agron.iastate.edu/json/wpcoutlook.py\\\n?lat=44.368&lon=-100.336&day=1&fmt=excel\n\nProvide the day 1 outlook for Pierre, SD valid at 8 UTC on 3 Aug 2024\n\nhttps://mesonet.agron.iastate.edu/json/wpcoutlook.py\\\n?lat=44.368&lon=-100.336&day=1&time=2024-08-03T08:00\n\nSame request, but for 8 AM CDT\n\nhttps://mesonet.agron.iastate.edu/json/wpcoutlook.py\\\n?lat=44.368&lon=-100.336&day=1&time=2024-08-03T08:00-05:00\n\n\nGet only the last day 2 outlook for Washington, DC\n\nhttps://mesonet.agron.iastate.edu/json/wpcoutlook.py\\\n?lat=38.907&lon=-77.037&day=2&last=1\n\n\"\"\"\n\nimport json\nfrom datetime import datetime, timedelta, timezone\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.nws.products.spcpts import THRESHOLD_ORDER\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import (\n    CALLBACK_FIELD,\n    LATITUDE_FIELD,\n    LONGITUDE_FIELD,\n)\nfrom iemweb.util import json_response_dict\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    callback: CALLBACK_FIELD = None\n    fmt: Annotated[\n        str,\n        Field(\n            description=\"The format to return data in, json, excel, or csv\",\n            pattern=\"^(json|excel|csv)$\",\n        ),\n    ] = \"json\"\n    lat: LATITUDE_FIELD = 42.0\n    lon: LONGITUDE_FIELD = -95.0\n    last: Annotated[\n        int, Field(description=\"Limit to last N outlooks, 0 for all\", ge=0)\n    ] = 0\n    day: Annotated[\n        int, Field(description=\"Day to query for, 1-8\", ge=1, le=8)\n    ] = 1\n    time: Annotated[\n        str | None,\n        Field(\n            description=(\n                \"Optional specification for a valid timestamp to query \"\n                \"outlooks for.  \"\n                \"This is either a ISO8601 timestamp or 'current' for now.\"\n            ),\n        ),\n    ] = None\n\n\ndef get_order(threshold):\n    \"\"\"Lookup a threshold and get its rank, higher is more extreme\"\"\"\n    if threshold not in THRESHOLD_ORDER:\n        return -1\n    return THRESHOLD_ORDER.index(threshold)\n\n\ndef process_df(outlooks: pd.DataFrame) -> pd.DataFrame:\n    \"\"\"Condition the dataframe.\"\"\"\n    if outlooks.empty:\n        return outlooks\n    outlooks[\"threshold_rank\"] = outlooks[\"threshold\"].apply(get_order)\n    return outlooks\n\n\ndef dotime(time: str, lon, lat, day) -> tuple[pd.DataFrame, datetime]:\n    \"\"\"Query for Outlook based on some timestamp\"\"\"\n    if time in [\"\", \"current\", \"now\"]:\n        ts = utc()\n        if day > 1:\n            ts += timedelta(days=day - 1)\n    else:\n        try:\n            ts = datetime.fromisoformat(time.replace(\"Z\", \"+00:00\"))\n        except ValueError as exp:\n            raise IncompleteWebRequest(\n                \"time must be a valid ISO8601 timestamp\"\n            ) from exp\n        if ts.tzinfo is None:\n            ts = ts.replace(tzinfo=timezone.utc)\n        else:\n            ts = ts.astimezone(timezone.utc)\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        outlooks = pd.read_sql(\n            sql_helper(\"\"\"\n        SELECT issue at time zone 'UTC' as i,\n        expire at time zone 'UTC' as e,\n        product_issue at time zone 'UTC' as v,\n        threshold, category from spc_outlooks where\n        product_issue = (\n            select product_issue from spc_outlook where\n            issue <= :ts and expire > :ts and day = :day\n            and outlook_type = 'E' ORDER by product_issue DESC LIMIT 1)\n        and ST_Contains(geom, ST_Point(:lon, :lat, 4326))\n        and day = :day and outlook_type = 'E' and category = 'CATEGORICAL'\n        \"\"\"),\n            conn,\n            params={\"lon\": lon, \"lat\": lat, \"day\": day, \"ts\": ts},\n            index_col=None,\n        )\n    return process_df(outlooks), ts\n\n\ndef dowork(lon, lat, day) -> pd.DataFrame:\n    \"\"\"Actually do stuff\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        # Need to compute SIGN seperately\n        outlooks = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH data as (\n            SELECT issue at time zone 'UTC' as i,\n            expire at time zone 'UTC' as e,\n            product_issue at time zone 'UTC' as v,\n            o.threshold, category, t.priority,\n            row_number() OVER (PARTITION by expire\n                ORDER by priority DESC NULLS last, issue ASC) as rank\n            from spc_outlooks o, spc_outlook_thresholds t\n            where o.threshold = t.threshold and\n            ST_Contains(geom, ST_Point(:lon, :lat, 4326))\n            and day = :day and outlook_type = 'E'\n            and o.threshold not in ('TSTM', 'SIGN') ORDER by issue DESC),\n        agg as (\n            select i, e, v, threshold, category from data where rank = 1),\n        sign as (\n            SELECT issue at time zone 'UTC' as i,\n            expire at time zone 'UTC' as e,\n            product_issue at time zone 'UTC' as v,\n            threshold, category from spc_outlooks\n            where ST_Contains(geom, ST_Point(:lon, :lat, 4326))\n            and day = :day and outlook_type = 'E'\n            and threshold = 'SIGN' ORDER by expire DESC, issue ASC LIMIT 1)\n\n        (SELECT i, e, v, threshold, category from agg\n        ORDER by e DESC, threshold desc) UNION ALL\n        (SELECT i, e, v, threshold, category from sign\n        ORDER by e DESC, threshold desc)\n        \"\"\"),\n            conn,\n            params={\"lon\": lon, \"lat\": lat, \"day\": day},\n        )\n    return outlooks\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Answer request.\"\"\"\n    time = environ.get(\"time\")\n    fmt = environ[\"fmt\"]\n    lon = environ[\"lon\"]\n    lat = environ[\"lat\"]\n    last = environ[\"last\"]\n    day = environ[\"day\"]\n    ts = None\n    if time is not None:\n        outlooks, ts = dotime(time, lon, lat, day)\n        if not outlooks.empty:\n            outlooks = outlooks.iloc[[0]]\n    else:\n        outlooks = dowork(lon, lat, day)\n\n    if fmt == \"json\" and time is not None:\n        res = json_response_dict(\n            {\n                \"query_params\": {\n                    \"time\": ts.strftime(ISO8601),\n                    \"lon\": lon,\n                    \"lat\": lat,\n                    \"day\": day,\n                },\n                \"outlook\": {},\n            }\n        )\n        if not outlooks.empty:\n            row0 = outlooks.iloc[0]\n            res[\"outlook\"] = {\n                \"threshold\": row0[\"threshold\"],\n                \"utc_product_issue\": pd.Timestamp(row0[\"v\"]).strftime(ISO8601),\n                \"utc_issue\": pd.Timestamp(row0[\"i\"]).strftime(ISO8601),\n                \"utc_expire\": pd.Timestamp(row0[\"e\"]).strftime(ISO8601),\n            }\n        headers = [(\"Content-type\", \"application/json\")]\n        start_response(\"200 OK\", headers)\n        return json.dumps(res)\n    if fmt == \"json\":\n        running = {}\n        res = {\"outlooks\": []}\n        for _, row in outlooks.iterrows():\n            if last > 0:\n                running.setdefault(row[\"threshold\"], 0)\n                running[row[\"threshold\"]] += 1\n                if running[row[\"threshold\"]] > last:\n                    continue\n            res[\"outlooks\"].append(\n                dict(\n                    day=day,\n                    utc_issue=row[\"i\"].strftime(ISO8601),\n                    utc_expire=row[\"e\"].strftime(ISO8601),\n                    utc_product_issue=row[\"v\"].strftime(ISO8601),\n                    threshold=row[\"threshold\"],\n                    category=row[\"category\"],\n                )\n            )\n        headers = [(\"Content-type\", \"application/json\")]\n        start_response(\"200 OK\", headers)\n        return json.dumps(res)\n\n    outlooks = outlooks.rename(\n        columns={\n            \"i\": \"utc_issue\",\n            \"e\": \"utc_expire\",\n            \"v\": \"utc_product_issue\",\n        },\n    )\n    if fmt == \"excel\":\n        headers = [\n            (\"Content-type\", \"application/vnd.ms-excel\"),\n            (\"Content-Disposition\", \"attachment; filename=outlooks.xls\"),\n        ]\n        start_response(\"200 OK\", headers)\n        with BytesIO() as bio:\n            outlooks.to_excel(bio, index=False)\n            return bio.getvalue()\n\n    headers = [\n        (\"Content-type\", \"text/csv\"),\n        (\"Content-Disposition\", \"attachment; filename=outlooks.csv\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return outlooks.to_csv(index=False)\n"
  },
  {
    "path": "pylib/iemweb/metadata/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/metadata/xml/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/metadata/xml/pl.py",
    "content": "\"\"\"..title:: Generate the Starfish Fungis XML.\n\nExample Requests\n----------------\n\nGenerate for the ISUSM site at the ISU Ag Farm\n\nhttps://mesonet.agron.iastate.edu/metadata/xml/pl.py?station=BOOI4\n\n\"\"\"\n\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import iemapp\n\n\n@iemapp(help=__doc__)\ndef application(environ, start_response):\n    \"\"\"Do Something\"\"\"\n    network = environ.get(\"network\", \"ISUSM\")\n    nt = NetworkTable(network, only_online=False)\n    station = environ.get(\"station\", \"QQQI4\")\n    if station not in nt.sts:\n        raise NoDataFound(\"No metadata found for station\")\n    xs = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sfl:Platform\nxmlns:xlink=\"http://www.w3.org/1999/xlink\"\nxmlns:sfl=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"\nxmlns:gml=\"http://www.opengis.net/gml/3.2\"\nxmlns:swe=\"http://www.opengis.net/swe/2.0\"\nxmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\nxmlns:gmd=\"http://www.isotc211.org/2005/gmd\"\nxmlns:nmpa=\"http://sawi.gst.com/nmpa/schema/metaExtension.xsd\"\nxsi:schemaLocation=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"\ngml:id=\"%(network)s_%(station)s\">\n\n<sfl:operator\n xlink:href=\"https://mesonet.agron.iastate.edu/metadata/xml/rp_IEM.xml\"/>\n<sfl:mobile>false</sfl:mobile>\n<sfl:deployedAt>\n  <sfl:PlatformDeployment gml:id=\"pd_%(network)s_%(station)s\">\n    <sfl:summary>\n      This file describes the Iowa State Soil Moisture Network (ISUSM) station\n      deployed at the %(name)s.\n    </sfl:summary>\n\n    <sfl:validTime>\n      <gml:description>This block describes the date and time for when the\n      platform was initially deployed during this instance.</gml:description>\n      <gml:metaDataProperty></gml:metaDataProperty>\n      <gml:name></gml:name>\n      <swe:constraint></swe:constraint>\n      <swe:quality></swe:quality>\n      <swe:uom xlink:href=\"urn:x-ogc:def:uom:OGC:iso8601\"/>\n      <swe:value>%(sts)s</swe:value>\n    </sfl:validTime>\n\n    <sfl:deployer\n     xlink:href=\"https://mesonet.agron.iastate.edu/metadata/xml/rp_IEM.xml\"/>\n\n    <sfl:deploymentLocation>\n      <gml:Point srsName=\"urn:ogc:def:crs:EPSG::4326\" srsDimension=\"3\">\n        <gml:pos>%(lat).4s %(lon).4s %(elev).1f</gml:pos>\n      </gml:Point>\n    </sfl:deploymentLocation>\n\n    <sfl:siteCharacteristic>\n      <nmpa:ExtendedMetadata>\n        <nmpa:Reference\n        xlink=\"http://sawi.gst.com/nmpa/MesoUS_Future_Metadata_04Apr2012.xlsx\"\n        />\n        <nmpa:MetadataElement id=\"Platform_Distribution_Restrictions\">\n                <nmpa:value>4</nmpa:value>\n        </nmpa:MetadataElement>\n        <nmpa:MetadataElement id=\"Platform_Transmission_Method\">\n                <nmpa:value>\"cellular\"</nmpa:value>\n        </nmpa:MetadataElement>\n        <nmpa:MetadataElement id=\"Platform_Data_Format\">\n                <nmpa:value></nmpa:value>\n        </nmpa:MetadataElement>\n        <nmpa:MetadataElement id=\"Platform_Transmission_Frequency\">\n                <nmpa:value>\"R/PT60M\"</nmpa:value>\n        </nmpa:MetadataElement>\n        <nmpa:MetadataElement id=\"Platform_Slope_Value\">\n                <nmpa:value></nmpa:value>\n        </nmpa:MetadataElement>\n        <nmpa:MetadataElement id=\"Platform_Soil_Characteristics\">\n                <nmpa:value></nmpa:value>\n        </nmpa:MetadataElement>\n      </nmpa:ExtendedMetadata>\n    </sfl:siteCharacteristic>\n\n  </sfl:PlatformDeployment>\n\n</sfl:deployedAt>\n<sfl:deployedSensor\n xlink:href=\"https://mesonet.agron.iastate.edu/metadata/xml/sd_%(network)s_%(station)s.xml\"/>\n</sfl:Platform>\"\"\" % dict(\n        network=network,\n        station=station,\n        name=nt.sts[station][\"name\"],\n        lat=nt.sts[station][\"lat\"],\n        elev=nt.sts[station][\"elevation\"],\n        lon=nt.sts[station][\"lon\"],\n        sts=nt.sts[station][\"archive_begin\"].strftime(ISO8601),\n    )\n\n    headers = [(\"Content-type\", \"text/xml\")]\n    start_response(\"200 OK\", headers)\n    return [xs.encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/metadata/xml/sd.py",
    "content": "\"\"\"..title:: Generate the Starfish Fungis XML\n\nExample Requests\n----------------\n\nGenerate the metadata XML for the ISUSM site at the ISU Ag Farm\n\nhttps://mesonet.agron.iastate.edu/metadata/xml/sd.py?station=BOOI4\n\n\"\"\"\n\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import iemapp\n\nIEM = \"https://mesonet.agron.iastate.edu/metadata/xml\"\n\n\n@iemapp(help=__doc__)\ndef application(environ, start_response):\n    \"\"\"Do Something\"\"\"\n    network = environ.get(\"network\", \"ISUSM\")\n    nt = NetworkTable(network, only_online=False)\n    station = environ.get(\"station\", \"QQQI4\")\n    if station not in nt.sts:\n        raise NoDataFound(\"No metadata found for station\")\n    xs = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sfl:SensorDeployment xmlns:xlink=\"http://www.w3.org/1999/xlink\"\nxmlns:sfl=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"\nxmlns:gml=\"http://www.opengis.net/gml/3.2\"\nxmlns:swe=\"http://www.opengis.net/swe/2.0\"\nxmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\nxsi:schemaLocation=\"http://sawi.gst.com/nmpa/schema/sfl.xsd\"\ngml:id=\"sd_%(network)s_%(station)s\">\n\n  <sfl:validTime>\n    <swe:TimeRange>\n      <swe:uom code=\"ISO8601\"/>\n      <swe:value>%(sts)s 9999-12-31T23:59</swe:value>\n    </swe:TimeRange>\n  </sfl:validTime>\n  <sfl:deployer xlink:href=\"%(iem)s/rp_IEM.xml\"/>\n  <sfl:deploymentLocation>\n    <gml:Point srsName=\"urn:ogc:def:derivedCRSType:OGC:1.0:engineering\">\n      <gml:pos dimension=\"3\" uomLabels=\"m m m\"> 0 0 13.1</gml:pos>\n    </gml:Point>\n  </sfl:deploymentLocation>\n\n  <sfl:mobile>false</sfl:mobile>\n\n  <sfl:deploys>\n\n    <!-- Wind -->\n    <sfl:Sensor gml:id=\"CS_03002\">\n      <sfl:serialNumber></sfl:serialNumber>\n      <sfl:characteristics xlink:href=\"%(iem)s/sc_CS_03002.xml\"/>\n      <sfl:senses>\n        <sfl:Sensing gml:id=\"CS_03002_1\">\n    <sfl:sensingProcedure xlink:href=\"%(iem)s/sp_CS_03002_WindSpeed.xml\" />\n          <sfl:unitOfMeasure uom=\"m/s\"/>\n          <sfl:active>true</sfl:active>\n        </sfl:Sensing>\n        <sfl:Sensing gml:id=\"CS_03002_2\">\n    <sfl:sensingProcedure xlink:href=\"%(iem)s/sp_CS_03002_WindDirection.xml\" />\n          <sfl:unitOfMeasure uom=\"deg\"/>\n          <sfl:active>true</sfl:active>\n        </sfl:Sensing>\n      </sfl:senses>\n    </sfl:Sensor>\n\n    <!-- Temp + RH -->\n    <sfl:Sensor gml:id=\"CS_CS215\">\n      <sfl:serialNumber></sfl:serialNumber>\n      <sfl:characteristics xlink:href=\"%(iem)s/sc_CS_CS215.xml\"/>\n      <sfl:senses>\n        <sfl:Sensing gml:id=\"CS_CS215_1\">\n          <sfl:sensingProcedure xlink:href=\"%(iem)s/sp_CS_CS215_Temp.xml\" />\n          <sfl:unitOfMeasure uom=\"C\"/>\n          <sfl:active>true</sfl:active>\n        </sfl:Sensing>\n        <sfl:Sensing gml:id=\"CS_CS215_2\">\n          <sfl:sensingProcedure xlink:href=\"%(iem)s/sp_CS_CS215_RH.xml\" />\n          <sfl:unitOfMeasure uom=\"%%\"/>\n          <sfl:active>true</sfl:active>\n        </sfl:Sensing>\n      </sfl:senses>\n    </sfl:Sensor>\n\n    <!-- Solar Rad-->\n    <sfl:Sensor gml:id=\"CS_CS300\">\n      <sfl:serialNumber></sfl:serialNumber>\n      <sfl:characteristics xlink:href=\"%(iem)s/sc_CS_CS300.xml\"/>\n      <sfl:senses>\n        <sfl:Sensing gml:id=\"CS_CS300_1\">\n          <sfl:sensingProcedure xlink:href=\"%(iem)s/sp_CS_CS300.xml\" />\n          <sfl:unitOfMeasure uom=\"J m-2 s-1\"/>\n          <sfl:active>true</sfl:active>\n        </sfl:Sensing>\n      </sfl:senses>\n    </sfl:Sensor>\n\n    <!-- Soil Moisture and Temp -->\n    <sfl:Sensor gml:id=\"CS_CS655\">\n      <sfl:serialNumber></sfl:serialNumber>\n      <sfl:characteristics xlink:href=\"%(iem)s/sc_CS_CS655.xml\"/>\n      <sfl:senses>\n        <sfl:Sensing gml:id=\"CS_CS655_1\">\n    <sfl:sensingProcedure xlink:href=\"%(iem)s/sp_CS_CS655_Temp.xml\" />\n          <sfl:unitOfMeasure uom=\"K\"/>\n          <sfl:active>true</sfl:active>\n        </sfl:Sensing>\n        <sfl:Sensing gml:id=\"CS_CS655_2\">\n    <sfl:sensingProcedure xlink:href=\"%(iem)s/sp_CS_CS655_Moisture.xml\" />\n          <sfl:unitOfMeasure uom=\"kg kg-1\"/>\n          <sfl:active>true</sfl:active>\n        </sfl:Sensing>\n      </sfl:senses>\n    </sfl:Sensor>\n\n    <!-- Precip -->\n    <sfl:Sensor gml:id=\"CS_TE525\">\n      <sfl:serialNumber></sfl:serialNumber>\n      <sfl:characteristics xlink:href=\"%(iem)s/sc_CS_TE525.xml\"/>\n      <sfl:senses>\n        <sfl:Sensing gml:id=\"CS_TE525_1\">\n          <sfl:sensingProcedure xlink:href=\"%(iem)s/sp_CS_TE525.xml\" />\n          <sfl:unitOfMeasure uom=\"mm\"/>\n          <sfl:active>true</sfl:active>\n        </sfl:Sensing>\n      </sfl:senses>\n    </sfl:Sensor>\n\n  </sfl:deploys>\n\n  <sfl:boundTo xlink:href=\"%(iem)s/pl_%(network)s_%(station)s.xml\" />\n\n</sfl:SensorDeployment>\n\"\"\" % dict(\n        network=network,\n        station=station,\n        name=nt.sts[station][\"name\"],\n        lat=nt.sts[station][\"lat\"],\n        iem=IEM,\n        lon=nt.sts[station][\"lon\"],\n        sts=nt.sts[station][\"archive_begin\"].strftime(ISO8601),\n    )\n\n    headers = [(\"Content-type\", \"text/xml\")]\n    start_response(\"200 OK\", headers)\n    return [xs.encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/mlib.py",
    "content": "\"\"\"Comparables to include/mlib.php\"\"\"\n\n\ndef rectify_wfo(wfo: str):\n    \"\"\"Convert three char to four char WFO.\"\"\"\n    if len(wfo) == 4:\n        return wfo\n    if wfo in [\"GUM\", \"HFO\", \"AFG\", \"AJK\", \"AFC\"]:\n        return f\"P{wfo}\"\n    if wfo in [\"JSJ\", \"SJU\"]:\n        return \"TJSJ\"\n    return f\"K{wfo}\"\n\n\ndef unrectify_wfo(wfo: str):\n    \"\"\"Convert four char to three char WFO.\"\"\"\n    if len(wfo) == 3:\n        return wfo\n    if wfo in [\"PGUM\", \"PHFO\", \"PAFG\", \"PAJK\", \"PAFC\"]:\n        return wfo[1:]\n    if wfo in [\"TJSJ\", \"TSJU\"]:\n        return \"JSJ\"\n    return wfo[1:]\n"
  },
  {
    "path": "pylib/iemweb/mywindrose.py",
    "content": "\"\"\".. title:: Windrose Plotting/Data Service\n\nDocumentation for /cgi-bin/windrose.py\n--------------------------------------\n\nThis service returns a windrose plot or data table.  There's a lot of options\nhere to consider, so perhaps some examples are in order.\n\nExample Usage\n-------------\n\nPlot a windrose for Ames, IA for the month of June 2021:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/mywindrose.py?\\\nstation=AMW&network=IA_ASOS&year1=2021&month1=6&day1=1&\\\nyear2=2021&month2=6&day2=30&hour2=23&fmt=png\n\nChangelog\n---------\n\n- **2024-03-25** The backend was migrated to use a pydantic schema, which will\n  generate more structured error messages when the user provides invalid input.\n- **2024-03-25** The `sts` and `ets` parameters were formalized and\n  are timezone aware.\n\n\"\"\"\n\nfrom datetime import timedelta\nfrom io import BytesIO\nfrom typing import Annotated\nfrom zoneinfo import ZoneInfo\n\nfrom matplotlib.figure import Figure\nfrom pydantic import AwareDatetime, Field, model_validator\nfrom pyiem.database import get_dbconn\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.webutil import CGIModel, iemapp\nfrom pyiem.windrose_utils import windrose\n\nfrom iemweb.fields import NETWORK_FIELD_OPTIONAL\n\n\nclass Schema(CGIModel):\n    bins: str = Field(\n        default=None, description=\"Wind Speed Bins separated by comma\"\n    )\n    conv: str = Field(\n        default=\"from\",\n        description=(\n            \"Wind Convention, either from (meteorology) or to (engineering)\"\n        ),\n    )\n    dpi: int = Field(\n        default=100, description=\"Image Dots per inch (DPI)\", ge=10, le=1000\n    )\n    ets: AwareDatetime = Field(\n        default=None,\n        description=(\n            \"End time with timezone included, otherwise \"\n            \"{year,month,day,hour,minute}2 values used\"\n        ),\n    )\n    fmt: str = Field(\n        default=\"png\",\n        description=\"Output image format, one of png, pdf, svg\",\n    )\n    hourlimit: bool = Field(\n        default=False,\n        description=\"Limit the data to the hour provided\",\n    )\n    hourrangelimit: bool = Field(\n        default=False,\n        description=\"Limit the data to the hour range provided\",\n    )\n    justdata: bool = Field(\n        default=False,\n        description=\"Return data table instead of plot\",\n    )\n    level: int = Field(\n        default=None,\n        description=\"In the case of RAOB data, the hPa level to use\",\n        ge=0,\n        le=1050,\n    )\n    limit_by_doy: bool = Field(\n        default=False,\n        description=\"Limit the data to the day of year range provided\",\n    )\n    monthlimit: Annotated[\n        bool,\n        Field(\n            description=\"Limit the data to the start month provided\",\n        ),\n    ] = False\n    network: NETWORK_FIELD_OPTIONAL = None\n    nsector: Annotated[\n        int,\n        Field(\n            description=\"Number of sectors to use for windrose plot\",\n            ge=4,\n            le=180,\n        ),\n    ] = 36\n    staticrange: Annotated[\n        int | None,\n        Field(\n            description=\"Static range for windrose plot\",\n            ge=1,\n            le=100,\n        ),\n    ] = None\n    station: str = Field(..., description=\"Station Identifier\")\n    sts: AwareDatetime = Field(\n        default=None,\n        description=(\n            \"Start time with timezone included, otherwise \"\n            \"{year,month,day,hour,minute}1 values used\"\n        ),\n    )\n    units: str = Field(\n        default=\"mph\",\n        description=\"Units to use for speed, one of mph, kts, mps, kph\",\n        pattern=\"^(mph|kts|mps|kph)$\",\n    )\n    year1: int = Field(\n        default=1900, description=\"Start Year, if sts not provided\"\n    )\n    month1: int = Field(\n        default=1, description=\"Start Month, if sts not provided\"\n    )\n    day1: int = Field(default=1, description=\"Start Day, if sts not provided\")\n    hour1: int = Field(\n        default=0, description=\"Start Hour, if sts not provided\"\n    )\n    minute1: int = Field(\n        default=0, description=\"Start Minute, if sts not provided\"\n    )\n    year2: int = Field(\n        default=2050, description=\"End Year, if ets not provided\"\n    )\n    month2: int = Field(\n        default=1, description=\"End Month, if ets not provided\"\n    )\n    day2: int = Field(default=1, description=\"End Day, if ets not provided\")\n    hour2: int = Field(default=0, description=\"End Hour, if ets not provided\")\n    minute2: int = Field(\n        default=0, description=\"End Minute, if ets not provided\"\n    )\n\n    @model_validator(mode=\"after\")\n    def validator_raob_request(self):\n        \"\"\"Ensure that level is set if the network is RAOB.\"\"\"\n        if (\n            self.network is not None\n            and self.network == \"RAOB\"\n            and self.level is None\n        ):\n            raise ValueError(\"level is required when network is RAOB\")\n        return self\n\n\ndef send_error(form, msg, start_response):\n    \"\"\"Abort, abort\"\"\"\n    fmt = form.get(\"fmt\", \"png\")\n    if fmt == \"png\":\n        ct = \"image/png\"\n    elif fmt == \"pdf\":\n        ct = \"application/pdf\"\n    elif fmt == \"svg\":\n        ct = \"image/svg+xml\"\n    else:\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return msg.encode(\"ascii\")\n\n    fig = Figure()\n    ax = fig.add_subplot(1, 1, 1)\n    ax.text(0.5, 0.5, msg, ha=\"center\")\n    start_response(\"200 OK\", [(\"Content-type\", ct)])\n    bio = BytesIO()\n    fig.savefig(bio, format=fmt)\n    return bio.getvalue()\n\n\ndef guess_network(station):\n    \"\"\"Guess the network identifier.\"\"\"\n    with get_dbconn(\"mesosite\") as dbconn:\n        cursor = dbconn.cursor()\n        cursor.execute(\n            \"SELECT network from stations where id = %s and not metasite\",\n            (station,),\n        )\n        if cursor.rowcount == 0:\n            raise IncompleteWebRequest(\n                \"Failed to guess network for given station. Please provide \"\n                \"explicit network= to service.\"\n            )\n        res = cursor.fetchone()[0]\n    return res\n\n\ndef get_station_info(environ: dict) -> tuple[str, str, str]:\n    \"\"\"Determine some metadata we need to process this form request.\"\"\"\n    station = environ[\"station\"].upper()\n    network = environ.get(\"network\")\n    if network is None:\n        network = guess_network(station)\n    dbname = \"asos\"\n    if network in (\"KCCI\", \"KELO\", \"KIMT\"):\n        dbname = \"snet\"\n    elif network.find(\"_RWIS\") > 0:\n        dbname = \"rwis\"\n    elif network in (\"ISUSM\", \"ISUAG\"):\n        dbname = \"isuag\"\n    elif network == \"RAOB\":\n        dbname = \"raob\"\n    elif network.find(\"_DCP\") > 0:\n        dbname = \"hads\"\n\n    return dbname, network, station\n\n\n@iemapp(help=__doc__, parse_times=True, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Query out the CGI variables\"\"\"\n    dbname, network, station = get_station_info(environ)\n    nt = NetworkTable(network, only_online=False)\n    if station not in nt.sts:\n        return [\n            send_error(environ, \"Unknown station identifier\", start_response)\n        ]\n    tzname = nt.sts[station][\"tzname\"] if network != \"RAOB\" else \"UTC\"\n    for key in [\"sts\", \"ets\"]:\n        if environ[key].tzinfo is None:\n            environ[key] = environ[key].replace(tzinfo=ZoneInfo(tzname))\n\n    if environ[\"hourlimit\"]:\n        hours = [environ[\"sts\"].hour]\n    elif environ[\"hourrangelimit\"]:\n        if environ[\"sts\"].hour > environ[\"ets\"].hour:  # over midnight\n            hours = list(range(environ[\"sts\"].hour, 24))\n            hours.extend(range(environ[\"ets\"].hour))\n        else:\n            if environ[\"sts\"].hour == environ[\"ets\"].hour:\n                environ[\"ets\"] += timedelta(hours=1)\n            hours = list(range(environ[\"sts\"].hour, environ[\"ets\"].hour))\n    else:\n        hours = list(range(24))\n\n    if environ[\"monthlimit\"]:\n        months = [environ[\"sts\"].month]\n    else:\n        months = list(range(1, 13))\n\n    bins = []\n    if environ[\"bins\"] is not None:\n        bins = [\n            float(v) for v in environ[\"bins\"].split(\",\") if v.strip() != \"\"\n        ]\n        # Ensure that the bins are in ascending order and unique\n        bins = sorted(set(bins))[:6]\n    res = windrose(\n        station,\n        database=dbname,\n        sts=environ[\"sts\"],\n        ets=environ[\"ets\"],\n        months=months,\n        hours=hours,\n        units=environ[\"units\"],\n        nsector=environ[\"nsector\"],\n        justdata=environ[\"justdata\"],\n        rmax=environ[\"staticrange\"],\n        sname=nt.sts[station][\"name\"],\n        tzname=tzname,\n        level=environ[\"level\"],\n        limit_by_doy=environ[\"limit_by_doy\"],\n        bins=bins,\n        plot_convention=environ[\"conv\"],\n    )\n    if environ[\"justdata\"]:\n        # We want text\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return [res.encode(\"utf-8\")]\n    fmt = environ[\"fmt\"]\n    if fmt == \"png\":\n        ct = \"image/png\"\n    elif fmt == \"pdf\":\n        ct = \"application/pdf\"\n    elif fmt == \"svg\":\n        ct = \"image/svg+xml\"\n    else:\n        return [send_error(environ, \"Invalid fmt set\", start_response)]\n    start_response(\"200 OK\", [(\"Content-type\", ct)])\n    bio = BytesIO()\n    res.savefig(bio, format=fmt, dpi=environ[\"dpi\"])\n    return [bio.getvalue()]\n"
  },
  {
    "path": "pylib/iemweb/nws/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/nws/debug_latlon/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/nws/debug_latlon/generate_plot.py",
    "content": "\"\"\"..title:: Tool to debug NWS LAT...LON polygons\n\nSimple tool to help debug NWS LAT...LON polygons.\n\nChangelog\n---------\n\n- 2025-11-10: Added option to specify that the given longitudes are east. This\n  is a painful NWS quirk for products from Guam.\n- 2025-01-03: Updated to use pydantic for input validation\n\nExample Requests\n----------------\n\nThe urlencoding here is a bit ugly, but alas.\n\nhttps://mesonet.agron.iastate.edu/nws/debug_latlon/generate_plot.py?\\\ntext=LAT...LON%203920%208402%203920%208400%203918%208400%203918%208402%20%0A\\\n&title=Test\n\nAnother example, but with east longitude enabled\n\nhttps://mesonet.agron.iastate.edu/nws/debug_latlon/generate_plot.py?\\\ntext=LAT...LON%203920%208402%203920%208400%203918%208400%203918%208402%20%0A\\\n&title=Test&east=1\n\n\"\"\"\n\nimport json\nimport os\nimport tempfile\nfrom typing import Annotated\n\nimport geopandas as gpd\nimport matplotlib.patheffects as PathEffects\nfrom pydantic import Field\nfrom pyiem.nws.product import str2polygon\nfrom pyiem.plot import fitbox\nfrom pyiem.plot.use_agg import figure\nfrom pyiem.reference import ISO8601, TWITTER_RESOLUTION_INCH\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\nfrom shapely.geometry import Polygon\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    east: Annotated[\n        bool,\n        Field(\n            description=\"Interpret given longitudes as East Longitudes (Guam)\"\n        ),\n    ] = False\n    text: Annotated[str, Field(description=\"The text to parse\", min_length=1)]\n    title: Annotated[\n        str | None, Field(description=\"Optional title for the plot\")\n    ] = None\n\n\ndef plot_poly(fig, poly, environ: dict):\n    \"\"\"Add to axes.\"\"\"\n    ax = fig.add_axes((0.15, 0.15, 0.7, 0.7))\n    title = environ[\"title\"] or \"No Title Provided\"\n    title = title[:120]\n    title += (\n        f\"\\npolygon.is_valid: {poly.is_valid} \"\n        f\"linearring.is_valid: {poly.exterior.is_valid}\"\n    )\n    fitbox(fig, title, 0.15, 0.9, 0.9, 0.95)\n\n    X, Y = poly.exterior.xy\n    for i in range(len(X) - 1):\n        ax.arrow(\n            X[i],\n            Y[i],\n            X[i + 1] - X[i],\n            Y[i + 1] - Y[i],\n            head_width=0.006,\n            width=0.001,\n            length_includes_head=True,\n            color=\"skyblue\",\n        )\n        txt = ax.text(\n            X[i],\n            Y[i],\n            str(i + 1),\n            va=\"center\",\n            ha=\"center\",\n            color=\"red\",\n            fontsize=20,\n        )\n        txt.set_path_effects(\n            [PathEffects.withStroke(linewidth=2, foreground=\"white\")]\n        )\n    ax.set_xlim(min(X) - 0.02, max(X) + 0.02)\n    ax.set_ylim(min(Y) - 0.02, max(Y) + 0.02)\n    ax.set_ylabel(\"Latitude [°N]\", fontsize=18)\n    ax.set_xlabel(\"Longitude [°E]\", fontsize=18)\n    ax.grid(True)\n    for tick in ax.get_xticklabels():\n        tick.set_rotation(45)\n\n\ndef process(environ: dict):\n    \"\"\"Make something pretty.\"\"\"\n    text = environ.get(\"text\")\n    text = text.replace(\"LAT...LON\", \"\").replace(\"\\n\", \" \")\n    # Add extra whitespace to account for upstream issues\n    poly = str2polygon(text + \" \\n\")\n    if environ[\"east\"]:\n        newpoints = [[0 - pt[0], pt[1]] for pt in poly.exterior.coords]\n        poly = Polygon(newpoints)\n    fig = figure(figsize=TWITTER_RESOLUTION_INCH)\n\n    res = {}\n    if poly is not None:\n        plot_poly(fig, poly, environ)\n        res[\"geojson\"] = gpd.GeoSeries([poly]).__geo_interface__\n\n    fig.text(0.01, 0.01, f\"Generated: {utc().strftime(ISO8601)}\")\n    with tempfile.NamedTemporaryFile() as tmpfd:\n        name = os.path.basename(tmpfd.name)\n        fig.savefig(f\"/var/webtmp/{name}.png\")\n    res[\"imgurl\"] = f\"/tmp/{name}.png\"\n    return res\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ: dict, start_response: callable):\n    \"\"\"The App.\"\"\"\n    res = process(environ)\n    headers = [(\"Content-type\", \"application/json\")]\n    start_response(\"200 OK\", headers)\n    return json.dumps(res)\n"
  },
  {
    "path": "pylib/iemweb/onsite/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/onsite/features/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/onsite/features/content.py",
    "content": "\"\"\"Frontend for Feature Content, such that we can make some magic happen\"\"\"\n\nimport os\nimport re\nfrom datetime import date\nfrom io import BytesIO\n\nfrom matplotlib.figure import Figure\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import iemapp\nfrom sqlalchemy.engine import Connection\n\nPATTERN = re.compile(\n    \"^/onsite/features/(?P<yyyy>[0-9]{4})/(?P<mm>[0-9]{2})/\"\n    \"(?P<yymmdd>[0-9]{6})(?P<extra>.*).\"\n    \"(?P<suffix>png|gif|jpg|xls|pdf|gnumeric|mp4)$\"\n)\n\n\ndef dblog(conn: Connection, yymmdd: str):\n    \"\"\"Log this request\"\"\"\n    dt = date(2000 + int(yymmdd[:2]), int(yymmdd[2:4]), int(yymmdd[4:6]))\n    conn.execute(\n        sql_helper(\n            \"UPDATE feature SET views = views + 1 WHERE date(valid) = :dt\"\n        ),\n        {\"dt\": dt},\n    )\n    conn.commit()\n\n\ndef get_content_type(val):\n    \"\"\"return the content-type header entry.\"\"\"\n    if val == \"text\":\n        ct = \"text/plain\"\n    elif val in [\"png\", \"gif\", \"jpg\"]:\n        ct = f\"image/{val}\"\n    elif val == \"mp4\":\n        ct = f\"video/{val}\"\n    elif val == \"pdf\":\n        ct = f\"application/{val}\"\n    else:\n        ct = \"text/plain\"\n    return (\"Content-type\", ct)\n\n\n@iemapp()\ndef application(environ: dict, start_response: callable):\n    \"\"\"Process this request\n\n    This should look something like \"/onsite/features/2016/11/161125.png\"\n    \"\"\"\n    headers = [(\"Accept-Ranges\", \"bytes\")]\n    uri = environ.get(\"REQUEST_URI\")\n    # Option 1, no URI is provided.\n    if uri is None:\n        raise IncompleteWebRequest(\"Missing parameters in request\")\n    match = PATTERN.match(uri)\n    # Option 2, the URI pattern is unknown.\n    if match is None:\n        raise IncompleteWebRequest(\"Missing parameters in request\")\n\n    data = match.groupdict()\n    fn = (\n        \"/mesonet/share/features/%(yyyy)s/%(mm)s/\"\n        \"%(yymmdd)s%(extra)s.%(suffix)s\"\n    ) % data\n    # Option 3, we have no file.\n    if not os.path.isfile(fn):\n        headers.append(get_content_type(\"png\"))\n        fig = Figure()\n        ax = fig.add_subplot(1, 1, 1)\n        ax.text(\n            0.5,\n            0.5,\n            \"Feature Image was not Found!\",\n            transform=ax.transAxes,\n            ha=\"center\",\n        )\n        ax.axis(\"off\")\n        ram = BytesIO()\n        fig.savefig(ram, format=\"png\")\n        ram.seek(0)\n        start_response(\"404 Not Found\", headers)\n        return [ram.read()]\n\n    # Option 4, we can support this request.\n    headers.append(get_content_type(data[\"suffix\"]))\n    rng = environ.get(\"HTTP_RANGE\", \"bytes=0-\")\n    tokens = rng.replace(\"bytes=\", \"\").split(\"-\", 1)\n    with open(fn, \"rb\") as fh:\n        resdata = fh.read()\n    totalsize = len(resdata)\n    stripe = slice(\n        int(tokens[0]),\n        totalsize if tokens[-1] == \"\" else (int(tokens[-1]) + 1),\n    )\n    status = \"200 OK\"\n    if totalsize != (stripe.stop - stripe.start):\n        status = \"206 Partial Content\"\n    headers.append((\"Content-Length\", \"%.0f\" % (stripe.stop - stripe.start,)))\n    if environ.get(\"HTTP_RANGE\") and stripe is not None:\n        secondval = (\n            \"\"\n            if environ.get(\"HTTP_RANGE\") == \"bytes=0-\"\n            else (stripe.stop - 1)\n        )\n        headers.append(\n            (\n                \"Content-Range\",\n                f\"bytes {stripe.start}-{secondval}/{totalsize}\",\n            )\n        )\n    try:\n        with get_sqlalchemy_conn(\"mesosite\", rw=True) as conn:\n            dblog(conn, data[\"yymmdd\"])\n    except Exception:\n        # swallow as uninteresting\n        pass\n    finally:\n        # Swallow exception\n        start_response(status, headers)\n    return [resdata[stripe]]\n"
  },
  {
    "path": "pylib/iemweb/onsite/features/vote.py",
    "content": "\"\"\"Feature Voting\"\"\"\n\nimport json\nfrom datetime import datetime, timedelta\nfrom http.cookies import SimpleCookie\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy.engine import Connection\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    vote: Annotated[\n        str | None,\n        Field(\n            description=\"The vote to cast\",\n            pattern=\"^(good|bad|abstain)$\",\n        ),\n    ] = None\n\n\n@with_sqlalchemy_conn(\"mesosite\")\ndef do(environ: dict, headers, vote, conn: Connection | None = None):\n    \"\"\"Do Something, yes do something\"\"\"\n    cookie = SimpleCookie(environ.get(\"HTTP_COOKIE\", \"\"))\n    myoid = 0\n    if \"foid\" in cookie:\n        myoid = int(cookie[\"foid\"].value)\n    res = conn.execute(\n        sql_helper(\n            \"SELECT to_char(valid, 'YYmmdd')::int as oid, good, bad, abstain \"\n            \"from feature WHERE valid < now() ORDER by valid DESC LIMIT 1\"\n        )\n    )\n    if res.rowcount == 0:\n        return {\"good\": 0, \"bad\": 0, \"abstain\": 0, \"can_vote\": False}\n    row = res.mappings().fetchone()\n    foid = row[\"oid\"]\n    d = {\n        \"good\": row[\"good\"],\n        \"bad\": row[\"bad\"],\n        \"abstain\": row[\"abstain\"],\n        \"can_vote\": True,\n    }\n    if myoid == foid:\n        d[\"can_vote\"] = False\n\n    if myoid < foid and vote in [\"good\", \"bad\", \"abstain\"]:\n        # Allow this vote\n        d[vote] += 1\n        for _ in range(10):\n            conn.execute(\n                sql_helper(\n                    \"\"\"\n    insert into weblog(uri, referer, http_status, client_addr)\n    values (:uri, :referer, :status, :host)\n    \"\"\"\n                ),\n                {\n                    \"uri\": environ.get(\"REQUEST_URI\", \"\"),\n                    \"referer\": environ.get(\"HTTP_REFERER\", \"\"),\n                    \"status\": 404,\n                    \"host\": environ.get(\"REMOTE_ADDR\"),\n                },\n            )\n        conn.execute(\n            sql_helper(\n                \"UPDATE feature SET {vote} = {vote} + 1 WHERE \"\n                \"to_char(valid, 'YYmmdd')::int = :oid\",\n                vote=vote,\n            ),\n            {\"oid\": foid},\n        )\n        # Now we set a cookie\n        expiration = datetime.now() + timedelta(days=4)\n        cookie = SimpleCookie()\n        cookie[\"foid\"] = foid\n        cookie[\"foid\"][\"path\"] = \"/onsite/features/\"\n        cookie[\"foid\"][\"expires\"] = expiration.strftime(\n            \"%a, %d-%b-%Y %H:%M:%S CST\"\n        )\n        headers.append((\"Set-Cookie\", cookie.output(header=\"\")))\n        conn.commit()\n        d[\"can_vote\"] = False\n    return d\n\n\n@iemapp(schema=Schema)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Process this request.\n\n    This should look something like \"/onsite/features/vote.json\"\n    or like \"/onsite/features/vote/abstain.json\".\n    \"\"\"\n    headers = [(\"Content-type\", \"application/json\")]\n    vote = environ[\"vote\"]\n    j = do(environ, headers, vote)\n    start_response(\"200 OK\", headers)\n    return json.dumps(j)\n"
  },
  {
    "path": "pylib/iemweb/precip/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/precip/catAZOS.py",
    "content": "\"\"\".. title:: Hourly precipitation Tables\n\nExample Usage\n-------------\n\nShow the table for 1 September 2024\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/precip/catAZOS.py?date=2024-09-01\n\n\"\"\"\n\nfrom datetime import datetime, timedelta\nfrom io import StringIO\n\nfrom pyiem.database import get_dbconnc\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.webutil import iemapp\n\nnt = NetworkTable(\"IA_ASOS\")\n\nrequireHrs = [0] * 25\nstData = {}\ntotp = {}\n\n\ndef doHeader(environ, start_response, sio):\n    \"\"\"get going.\"\"\"\n    start_response(\"200 OK\", [(\"Content-type\", \"text/html\")])\n    sio.write(\n        \"\"\"\n<html>\n<head>\n  <title>IEM | Hourly Precip Grid</title>\n</head>\n<body bgcolor=\"white\">\n<a href=\"/\">Iowa Mesonet</a> &gt;\n<a href=\"/climate/\">Climatology</a> &gt;\nHourly Precipitation [IA_ASOS]\n\n\"\"\"\n    )\n    sio.write('<h3 align=\"center\">Hourly Precip [inches] Grid</h3>')\n    try:\n        postDate = environ.get(\"date\")\n        myTime = datetime.strptime(postDate, \"%Y-%m-%d\")\n    except Exception:\n        myTime = datetime.now()\n\n    sio.write(\"<table border=1><tr>\")\n    sio.write(\n        '<td>Back: <a href=\"catAZOS.py?date='\n        + (myTime - timedelta(days=1)).strftime(\"%Y-%m-%d\")\n        + '\"> \\\n    '\n        + (myTime - timedelta(days=1)).strftime(\"%Y-%m-%d\")\n        + \"</a></td>\"\n    )\n\n    sio.write(\"<td>Shown: \" + myTime.strftime(\"%d %B %Y\") + \"</td>\")\n\n    sio.write(\n        '<td>Forward: <a href=\"catAZOS.py?date='\n        + (myTime + timedelta(days=1)).strftime(\"%Y-%m-%d\")\n        + '\"> \\\n    '\n        + (myTime + timedelta(days=1)).strftime(\"%Y-%m-%d\")\n        + \"</a></td>\"\n    )\n\n    sio.write(\n        \"\"\"\n<td>Pick: (yyyy-mm-dd)\n<form method=\"GET\" action=\"catAZOS.py\">\n<input type=\"text\" size=\"8\" name=\"date\">\n<input type=\"submit\" value=\"Submit Date\">\n</form></td></tr></table>\n\"\"\"\n    )\n    return myTime\n\n\ndef setupTable(sio):\n    \"\"\"make table.\"\"\"\n    sio.write(\n        \"\"\"\n<style language=\"css\">\ntd.style1{\n  background-color: #EEEEEE;\n}\ntd.style2{\n  background-color: #ffefe1;\n}\ntd.style0{\n  background-color: #c6e3ff;\n}\ntr.row1{\n  border-bottom: 4pt;\n  border-top: 4pt;\n  border-right: 4pt;\n  border-left: 4pt;\n  background-color: #dddddd;\n}\ntable.main{\n  font-size: 8pt;\n  font-face: arial sans-serif;\n}\n</style>\n<table width=\"100%\" class=\"main\">\n<tr>\n  <th rowspan=\"2\">Station</th>\n  <th colspan=\"11\">Morning (AM)</th>\n  <td></td>\n  <th colspan=\"12\">Afternoon/Evening (PM)</th>\n  <td></td>\n   <th rowspan=\"2\">Station</th>\n</tr>\n<tr>\n<td class=\"style1\">Mid</td> <td class=\"style2\">1</td><td class=\"style0\">2</td>\n<td class=\"style1\">3</td> <td class=\"style2\">4</td><td class=\"style0\">5</td>\n<td class=\"style1\">6</td> <td class=\"style2\">7</td><td class=\"style0\">8</td>\n<td class=\"style1\">9</td> <td class=\"style2\">10</td><td class=\"style0\">11</td>\n<td class=\"style1\">Noon</td><td class=\"style2\">1</td><td class=\"style0\">2</td>\n<td class=\"style1\">3</td> <td class=\"style2\">4</td> <td class=\"style0\">5</td>\n<td class=\"style1\">6</td> <td class=\"style2\">7</td> <td class=\"style0\">8</td>\n<td class=\"style1\">9</td> <td class=\"style2\">10</td> <td class=\"style0\">11</td>\n<th>Tot:</th>\n</tr>\n\"\"\"\n    )\n\n\ndef loadstations():\n    \"\"\"load stations\"\"\"\n    for station in nt.sts:\n        stData[station] = [\"M\"] * 24\n        totp[station] = 0\n\n\n@iemapp(help=__doc__)\ndef application(environ, start_response):\n    \"\"\"Go Main Go\"\"\"\n    sio = StringIO()\n    ts = doHeader(environ, start_response, sio)\n    loadstations()\n    setupTable(sio)\n    conn, icursor = get_dbconnc(\"iem\")\n    # skipcq\n    icursor.execute(\n        \"SELECT extract('hour' from valid) as vhour, t.id as station, \"\n        f\"valid, phour from hourly_{ts.year} h JOIN stations t on \"\n        \"(h.iemid = t.iemid) WHERE \"\n        \"valid >= %s and valid < %s and t.network = 'IA_ASOS'\",\n        (ts, ts + timedelta(hours=24)),\n    )\n    for row in icursor:\n        p01i = float(row[\"phour\"])\n        vhour = int(row[\"vhour\"])\n        if p01i > 0:  # We should require this timestep\n            requireHrs[vhour] = 1\n            try:\n                stData[row[\"station\"]][vhour] = round(p01i, 2)\n            except KeyError:\n                continue\n        else:\n            try:\n                stData[row[\"station\"]][vhour] = \"&nbsp;\"\n            except KeyError:\n                continue\n    conn.close()\n    j = 0\n    ids = list(nt.sts.keys())\n    ids.sort()\n    for station in ids:\n        j += 1\n        sio.write(f'<tr class=\"row{j % 5}\">')\n        sio.write(f\"<td>{station}</td>\")\n        for i in range(24):\n            sio.write('<td class=\"style' + str((i + 1) % 3) + '\">')\n            sio.write(f\"{stData[station][i]}</td>\")\n            try:\n                totp[station] = totp[station] + stData[station][i]\n            except Exception:\n                continue\n        sio.write(f\"<td>{totp[station]}</td>\")\n        sio.write(f\"<td>{station}</td>\")\n        sio.write(\"</tr>\")\n\n    sio.write(\n        \"\"\"\n</table>\n\n<p>Precipitation values are shown for the hour in which they are valid. For\nexample, the value in the 1AM column is precipitation accumulation from 1 AM\ntill 2 AM.\n\"\"\"\n    )\n    return [sio.getvalue().encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/precip/catSNET.py",
    "content": "\"\"\".. title:: SchoolNet Hourly Precipitation Grid\n\nVery much legacy stuff.\n\n\"\"\"\n\nfrom datetime import datetime, timedelta\nfrom io import StringIO\n\nfrom pyiem.database import get_dbconnc\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.webutil import iemapp\n\nnt = NetworkTable([\"KCCI\", \"KIMIT\", \"KELO\"], only_online=False)\n\nrequireHrs = [0] * 25\nstData = {}\ntotp = {}\n\n\n# Return the Date we will be looking for...\ndef doHeader(environ, start_response, sio):\n    \"\"\"header please\"\"\"\n    start_response(\"200 OK\", [(\"Content-type\", \"text/html\")])\n    sio.write(\n        \"\"\"\n<html>\n<head>\n  <title>IEM | Hourly Precip Grid</title>\n</head>\n<body bgcolor=\"white\">\n<a href=\"/index.php\">Iowa Mesonet</a> &gt;\n<a href=\"/schoolnet/\">School Net</a> &gt;\nHourly Precipitation [SNET]\n<br>This archive starts on 12 Feb 2002 for KCCI sites and 12 Sept 2002 for\nKELO sites. SchoolNet data stops on 3 May 2019.\n\n\"\"\"\n    )\n    sio.write('<h3 align=\"center\">Hourly Precip Grid</h3>')\n    try:\n        postDate = environ.get(\"date\")\n        myTime = datetime.strptime(postDate, \"%Y-%m-%d\")\n    except Exception:\n        myTime = datetime(2019, 5, 3)\n\n    sio.write(\"<table border=1><tr>\")\n    sio.write(\n        '<td>Back: <a href=\"catSNET.py?date='\n        + (myTime - timedelta(days=1)).strftime(\"%Y-%m-%d\")\n        + '\"> \\\n        '\n        + (myTime - timedelta(days=1)).strftime(\"%Y-%m-%d\")\n        + \"</a></td>\"\n    )\n\n    sio.write(\"<td>Shown: \" + myTime.strftime(\"%d %B %Y\") + \"</td>\")\n\n    sio.write(\n        '<td>Forward: <a href=\"catSNET.py?date='\n        + (myTime + timedelta(days=1)).strftime(\"%Y-%m-%d\")\n        + '\"> \\\n        '\n        + (myTime + timedelta(days=1)).strftime(\"%Y-%m-%d\")\n        + \"</a></td>\"\n    )\n\n    sio.write(\n        \"\"\"\n<td>Pick: (yyyy-mm-dd)\n<form method=\"GET\" action=\"catSNET.py\">\n<input type=\"text\" size=\"8\" name=\"date\">\n<input type=\"submit\" value=\"Submit Date\">\n</form></td></tr></table>\n\"\"\"\n    )\n    return myTime\n\n\ndef setupTable(sio):\n    \"\"\"Do\"\"\"\n    sio.write(\n        \"\"\"\n<style language=\"css\">\ntd.style1{\n  background-color: #EEEEEE;\n}\ntd.style2{\n  background-color: #ffefe1;\n}\ntd.style0{\n  background-color: #c6e3ff;\n}\ntr.row1{\n  border-bottom: 4pt;\n  border-top: 4pt;\n  border-right: 4pt;\n  border-left: 4pt;\n  background-color: #dddddd;\n}\ntable.main{\n  font-size: 8pt;\n  font-face: arial sans-serif;\n}\n</style>\n<table width=\"100%\" class=\"main\">\n<tr>\n  <th rowspan=\"2\">Station</th>\n  <th colspan=\"11\">Morning (AM)</th>\n  <td></td>\n  <th colspan=\"12\">Afternoon/Evening (PM)</th>\n  <td></td>\n   <th rowspan=\"2\">Station</th>\n</tr>\n<tr>\n  <td class=\"style0\">Mid</td>\n  <td class=\"style1\">1</td> <td class=\"style2\">2</td>\n  <td class=\"style0\">3</td>\n  <td class=\"style1\">4</td> <td class=\"style2\">5</td>\n  <td class=\"style0\">6</td>\n  <td class=\"style1\">7</td> <td class=\"style2\">8</td>\n  <td class=\"style0\">9</td>\n  <td class=\"style1\">10</td> <td class=\"style2\">11</td>\n  <td class=\"style0\">Noon</td>\n  <td class=\"style2\">1</td> <td class=\"style2\">2</td>\n  <td class=\"style0\">3</td>\n  <td class=\"style1\">4</td> <td class=\"style2\">5</td>\n  <td class=\"style0\">6</td>\n  <td class=\"style1\">7</td> <td class=\"style2\">8</td>\n  <td class=\"style0\">9</td>\n  <td class=\"style1\">10</td> <td class=\"style2\">11</td>\n  <th>Tot:</th>\n</tr>\n\"\"\"\n    )\n\n\ndef loadstations():\n    \"\"\"Bah\"\"\"\n    for station in nt.sts:\n        stData[station] = [\"M\"] * 25\n        totp[station] = 0\n\n\n@iemapp(help=__doc__)\ndef application(environ, start_response):\n    \"\"\"Go Main Go.\"\"\"\n    sio = StringIO()\n    ts = doHeader(environ, start_response, sio)\n    loadstations()\n    setupTable(sio)\n\n    td = ts.strftime(\"%Y-%m-%d\")\n    tm = (ts + timedelta(days=1)).strftime(\"%Y-%m-%d\")\n\n    sqlStr = \"\"\"\n        SELECT extract('hour' from valid) as vhour,\n        id as station, valid, phour from hourly h JOIN stations s on\n        (h.iemid = s.iemid) WHERE\n        valid > '%s 00:00' and valid <= '%s 00:00'\n        and network in ('KCCI','KIMT','KELO')\n    \"\"\" % (\n        td,\n        tm,\n    )\n    pgconn, icursor = get_dbconnc(\"iem\")\n\n    icursor.execute(sqlStr)\n\n    for row in icursor:\n        p01i = float(row[\"phour\"])\n        vhour = int(row[\"vhour\"])\n        if p01i >= 0:  # We should require this timestep\n            requireHrs[vhour] = 1\n            try:\n                stData[row[\"station\"]][vhour] = round(p01i, 2)\n            except KeyError:\n                continue\n        else:\n            try:\n                stData[row[\"station\"]][vhour] = \"&nbsp;\"\n            except KeyError:\n                continue\n    pgconn.close()\n\n    j = 0\n    ids = list(nt.sts.keys())\n    ids.sort()\n    for station in ids:\n        j += 1\n        sio.write(f'<tr class=\"row{j % 5}\">')\n        sio.write(\"%s%s%s\" % (\"<td>\", nt.sts[station][\"name\"], \"</td>\"))\n        for i in range(24):\n            sio.write('<td class=\"style' + str(i % 3) + '\">')\n            sio.write(\"%s%s \" % (stData[station][i], \"</td>\"))\n            try:\n                totp[station] = totp[station] + stData[station][i]\n            except Exception:\n                continue\n        sio.write(\"%s%s%s\" % (\"<td>\", totp[station], \"</td>\"))\n        sio.write(\"%s%s%s\" % (\"<td>\", station, \"</td>\"))\n        sio.write(\"</tr>\")\n\n    sio.write(\n        \"\"\"\n</table>\n\n<p>Precipitation values are shown for the hour in which they are valid.  For\nexample, the value in the 1AM column is precipitation accumulation from 1 AM\ntill 2 AM.\n\"\"\"\n    )\n    return [sio.getvalue().encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/projects/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/projects/iembot/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/projects/iembot/mastodon/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/projects/iembot/mastodon/index.py",
    "content": "\"\"\"\nConfigure iembot for mastodon, gasp.\n\"\"\"\n\nimport cryptocode\nimport mastodon\nimport requests\nfrom paste.request import get_cookie_dict\nfrom pyiem.database import get_dbconnc\nfrom pyiem.templates.iem import TEMPLATE\nfrom pyiem.util import get_properties\nfrom pyiem.webutil import iemapp\n\nPRIVKEY = get_properties().get(\"mod_wsgi.privkey\", \"\")\nAPP = \"https://mesonet.agron.iastate.edu/projects/iembot/mastodon\"\nHEADER = \"\"\"\n<ol class=\"breadcrumb\">\n <li><a href=\"/projects/iembot/\">IEMBot Homepage</a></li>\n <li class=\"active\">Mastodon Subscription</li>\n</ol>\n\n<h3>Highly Experimental IEMBot to Mastodon Configuration:</h3>\n\n<div class=\"alert alert-danger\">There are absolutely no warranties with this\nservice. Use at your own risk and peril!</div>\n\n\"\"\"\nENTER_HOST_FORM = \"\"\"\n<h3>Enter your Mastodon instance address</h3>\n<form method=\"GET\" action=\"/projects/iembot/mastodon/\" name=\"s\">\nhttps://<input type=\"text\" name=\"s\" size=\"60\">\n<input type=\"submit\">\n</form>\n\"\"\"\nTEST_MESSAGE = \"Hello, this is a test message from the IEMBot integration.\"\n\n\ndef get_mastodon_app(server):\n    \"\"\"Get or create an app.\"\"\"\n    redirect_uri = f\"{APP}/?s={server}\"\n    conn, cursor = get_dbconnc(\"iembot\")\n    cursor.execute(\n        \"\"\"\n        SELECT client_id, client_secret from iembot_mastodon_apps WHERE\n        server = %s\n        \"\"\",\n        (server,),\n    )\n    if cursor.rowcount == 1:\n        row = cursor.fetchone()\n        client_id = row[\"client_id\"]\n        client_secret = row[\"client_secret\"]\n    else:\n        api = mastodon.Mastodon(api_base_url=f\"https://{server}\")\n        (client_id, client_secret) = api.create_app(\n            \"iembot\",\n            api_base_url=f\"https://{server}\",\n            redirect_uris=[redirect_uri],\n        )\n        cursor.execute(\n            \"\"\"\n            insert into iembot_mastodon_apps(server, client_id, client_secret)\n            values(%s, %s, %s)\n            \"\"\",\n            (server, client_id, client_secret),\n        )\n        cursor.close()\n        conn.commit()\n    conn.close()\n    mapp = mastodon.Mastodon(\n        client_id=client_id,\n        client_secret=client_secret,\n        api_base_url=f\"https://{server}\",\n    )\n    return mapp, mapp.auth_request_url(redirect_uris=redirect_uri)\n\n\ndef get_app4user(cookies: dict):\n    \"\"\"Do we know who we have here?\"\"\"\n    mm = cookies.get(\"mm\")\n    if mm is None or mm == \"\":\n        return None\n    # Decrpyt this\n    try:\n        user_id = int(cryptocode.decrypt(mm, PRIVKEY))\n    except Exception:\n        return None\n    conn, cursor = get_dbconnc(\"iembot\")\n    cursor.execute(\n        \"\"\"\n        select access_token, server, iembot_account_id\n        from iembot_mastodon_oauth o,\n        iembot_mastodon_apps a where o.id = %s and o.appid = a.id\n        and access_token is not null\n        \"\"\",\n        (user_id,),\n    )\n    if cursor.rowcount != 1:\n        return None\n    row = cursor.fetchone()\n    mapp = mastodon.Mastodon(\n        access_token=row[\"access_token\"],\n        api_base_url=f\"https://{row['server']}\",\n    )\n    try:\n        mapp.me()\n    except Exception:\n        cursor.execute(\n            \"\"\"\n            update iembot_mastodon_oauth SET access_token = null,\n            updated = now() where id = %s\n            \"\"\",\n            (user_id,),\n        )\n        cursor.close()\n        conn.commit()\n        conn.close()\n        return None\n    conn.close()\n    # For better or likely worse, we tag along this attribute\n    mapp.iembot_account_id = user_id\n    mapp.iembot_account_id = row[\"iembot_account_id\"]\n    return mapp\n\n\ndef build_subui(mapp, fdict):\n    \"\"\"Show the subscriptions.\"\"\"\n    me = mapp.me()\n    res = f\"\"\"\n    <p>Hi <a href=\"{me[\"url\"]}\">@{me[\"username\"]}</a>\n    <img src=\"{me[\"avatar\"]}\" style=\"width:20px;\">!\n    This page configures your IEMBot channel subscriptions.</p>\n    \"\"\"\n    conn, cursor = get_dbconnc(\"iembot\")\n    log = []\n    if fdict.get(\"testmsg\") is not None:\n        try:\n            _res = mapp.status_post(status=TEST_MESSAGE)\n            log.append(\n                f'Test post to Mastodon is <a href=\"{_res[\"uri\"]}\">here</a>'\n            )\n        except Exception as exp:\n            log.append(f\"Posting test message resulted in error: {exp}\")\n    channel = fdict.get(\"add\")\n    if channel is not None and channel != \"\":\n        cursor.execute(\n            \"\"\"\n            insert into iembot_subscriptions(iembot_account_id, channel_id)\n            values (%s, (select get_or_create_iembot_channel_id(%s)))\n            \"\"\",\n            (mapp.iembot_account_id, channel.upper()),\n        )\n        log.append(f\"Added channel subscription for |{channel.upper()}\")\n        reload_bot()\n    channel = fdict.get(\"del\")\n    if channel is not None and channel != \"\":\n        cursor.execute(\n            \"\"\"\n            delete from iembot_subscriptions where iembot_account_id = %s\n            and channel_id = (\n            select id from iembot_channels where channel_name = %s)\n            \"\"\",\n            (mapp.iembot_account_id, channel.upper()),\n        )\n        log.append(f\"Deleted channel subscription for |{channel.upper()}\")\n        reload_bot()\n    cursor.execute(\n        \"\"\"\n        SELECT channel_name as channel from\n        iembot_channels c, iembot_subscriptions s\n        where s.iembot_account_id = %s and c.id = s.channel_id\n        ORDER by channel_name asc\n        \"\"\",\n        (mapp.iembot_account_id,),\n    )\n    logmsg = \"\" if not log else f\"<h3>Log Messages</h3> {'<br/>'.join(log)}\"\n    res += f\"\"\"\n{logmsg}\n\n<p><a href=\"/projects/iembot/mastodon/?testmsg\"\n class=\"btn btn-default\"\n aria-label=\"Post test message to Mastodon\">Post Test Message</a>\n\n<form method=\"GET\" name=\"sub\">\n<input type=\"text\" name=\"add\" size=\"10\">\n<input type=\"submit\" value=\"Add Channel\">\n</form>\n\n    <h3>Currently Subscribed Channels.</h3>\n    \"\"\"\n    for row in cursor:\n        du = f\"/projects/iembot/mastodon/?del={row['channel']}\"\n        res += (\n            f\"<p><strong>{row['channel']}</strong> \"\n            f'<a href=\"{du}\">Delete</a></p>'\n        )\n    cursor.close()\n    conn.commit()\n    conn.close()\n    return res\n\n\ndef sanitize_server(val):\n    \"\"\"Ensure we have something that is like a server.\"\"\"\n    if val is None or val == \"\":\n        return None\n    if val.startswith(\"https://\"):\n        return val[8:]\n    return val.split(\"@\")[-1].rstrip(\"/\").lower()\n\n\ndef save_code(mapp, server, code, headers):\n    \"\"\"Persist to database.\"\"\"\n    # Exchange the code for an access token\n    redirect_uri = f\"{APP}/?s={server}\"\n    access_token = mapp.log_in(\n        code=code,\n        redirect_uri=redirect_uri,\n    )\n    mapp = mastodon.Mastodon(\n        api_base_url=f\"https://{server}\",\n        access_token=access_token,\n    )\n    me = mapp.me()\n    conn, cursor = get_dbconnc(\"iembot\")\n    # Ensure we have no current entry\n    cursor.execute(\n        \"\"\"\n        select id from iembot_mastodon_oauth where screen_name = %s\n        and appid = (select id from iembot_mastodon_apps where server = %s)\n        \"\"\",\n        (me[\"username\"], server),\n    )\n    if cursor.rowcount == 0:\n        cursor.execute(\n            \"\"\"\n            insert into iembot_mastodon_oauth(appid, screen_name,\n                iembot_account_id)\n            values\n            (\n                (select id from iembot_mastodon_apps where server = %s),\n                %s,\n                (select create_iembot_account('mastodon'))\n            ) returning id\n            \"\"\",\n            (server, me[\"username\"]),\n        )\n    mapp.iembot_account_id = cursor.fetchone()[\"id\"]\n    cursor.execute(\n        \"\"\"\n        update iembot_mastodon_oauth SET access_token = %s,\n        updated = now() WHERE id = %s\n        \"\"\",\n        (access_token, mapp.iembot_account_id),\n    )\n    cursor.close()\n    conn.commit()\n    conn.close()\n    # Set a cookie\n    text = cryptocode.encrypt(str(mapp.iembot_account_id), PRIVKEY)\n    headers.append(\n        (\n            \"Set-Cookie\",\n            f\"mm={text}; Path=/projects/iembot/mastodon/; Max-Age=8640000\",\n        )\n    )\n    return mapp\n\n\ndef reload_bot():\n    \"\"\"Tell iembot to refresh.\"\"\"\n    requests.get(\"http://iembot:9003/reload\", timeout=5)\n\n\n@iemapp()\ndef application(environ: dict, start_response: callable):\n    \"\"\"mod-wsgi handler.\"\"\"\n    cookies = get_cookie_dict(environ)\n    headers = [(\"Content-type\", \"text/html\")]\n    res = {\"content\": HEADER}\n\n    # Inspect cookies to see if we have details on our Mastodon user here\n    mapp = get_app4user(cookies)\n    # If we have an app, we can show the subscriptions and be done.\n    if mapp is not None:\n        start_response(\"200 OK\", headers)\n        res[\"content\"] += build_subui(mapp, environ)\n        return [TEMPLATE.render(res).encode(\"utf-8\")]\n\n    # We should now have a server set, if not, we need to prompt for one.\n    server = sanitize_server(environ.get(\"s\"))\n    if server is None:\n        start_response(\"200 OK\", headers)\n        res[\"content\"] += ENTER_HOST_FORM\n        return [TEMPLATE.render(res).encode(\"utf-8\")]\n    # Get the app\n    mapp, redirect_uri = get_mastodon_app(server)\n    # oauth step\n    if environ.get(\"code\") is None:\n        headers = [(\"Location\", redirect_uri)]\n        start_response(\"307 Temporary redirect\", headers)\n        return [TEMPLATE.render(res).encode(\"utf-8\")]\n    # Also sets cookie\n    mapp = save_code(mapp, server, environ.get(\"code\"), headers)\n    res[\"content\"] += build_subui(mapp, environ)\n    start_response(\"200 OK\", headers)\n    return [TEMPLATE.render(res).encode(\"utf-8\")]\n"
  },
  {
    "path": "pylib/iemweb/proxy_error_handler.py",
    "content": "\"\"\"Handle Apache proxy errors.\"\"\"\n\nfrom http.client import responses as HTTP_RESPONSES\n\nfrom pyiem.webutil import TELEMETRY, write_telemetry\n\nfrom iemweb import error_log\n\n\ndef application(environ, start_response):\n    \"\"\"Handle Apache proxy errors.\"\"\"\n    status_code = int(environ.get(\"REDIRECT_STATUS\", 200))\n    error_log(environ, f\"{status_code} {environ.get('REQUEST_URI')}\")\n    ip = environ.get(\"REMOTE_ADDR\")\n    write_telemetry(\n        TELEMETRY(\n            0,\n            status_code,\n            ip,\n            environ.get(\"REDIRECT_SCRIPT_URL\"),\n            environ.get(\"REQUEST_URI\"),\n            environ.get(\"HTTP_HOST\"),\n        )\n    )\n\n    status = f\"{status_code} {HTTP_RESPONSES.get(status_code, 'Unknown')}\"\n    headers = [(\"Content-type\", \"text/plain\")]\n    start_response(status, headers)\n    return [b\"An error occurred, please try again later.\"]\n"
  },
  {
    "path": "pylib/iemweb/rainfall/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/rainfall/mrms2img.py",
    "content": "\"\"\".. title:: MRMS to ERDAS IMG\n\nThis service converts MRMS grib data into a ERDAS IMG file for use in GIS.\n\nChangelog\n---------\n\n- 2024-11-01: Migration to pydantic validation.\n\nExample Usage\n-------------\n\nConvert the 1 hour MRMS data ending at 18 UTC on 13 April 2016:\n\nhttps://mesonet.agron.iastate.edu/rainfall/mrms2img.py?\\\nyear=2016&month=4&day=13&hour=18&minute=0&period=1\n\n\"\"\"\n\nimport tempfile\nimport zipfile\nfrom typing import Annotated\n\nimport numpy as np\nfrom imageio.v2 import imread\nfrom osgeo import gdal, osr\nfrom pydantic import Field\nfrom pyiem.exceptions import NoDataFound\nfrom pyiem.util import archive_fetch, utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import (\n    DAY_OF_MONTH_FIELD,\n    HOUR_FIELD,\n    MINUTE_FIELD,\n    MONTH_FIELD,\n)\n\n# Workaround future\ngdal.UseExceptions()\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    year: Annotated[int, Field(description=\"Year of the data\")] = 2016\n    month: MONTH_FIELD = 4\n    day: DAY_OF_MONTH_FIELD = 13\n    hour: HOUR_FIELD = 18\n    minute: MINUTE_FIELD = 0\n    period: Annotated[\n        int, Field(description=\"Period of the data\", ge=1, le=1000)\n    ] = 1\n\n\ndef workflow(tmpdir, valid, period, start_response):\n    \"\"\"Actually do the work!\"\"\"\n    ppath = valid.strftime(f\"%Y/%m/%d/GIS/mrms/p{period}h_%Y%m%d%H%M.png\")\n    with archive_fetch(ppath) as fn:\n        if fn is None:\n            raise NoDataFound(f\"File not found: {ppath}\")\n        img = imread(fn, mode=\"P\")\n    size = np.shape(img)\n    # print 'A', np.max(img), np.min(img), img[0,0], img[-1,-1]\n    data = np.ones(size, np.uint16) * 65535\n\n    # 000 -> 099  0.25mm  000.00 to 024.75\n    # 100 -> 179  1.25mm  025.00 to 123.75\n    # 180 -> 254  5.00mm  125.00 to 495.00\n    # 254                 500.00+\n    # 255  MISSING/BAD DATA\n    data = np.where(\n        np.logical_and(img >= 180, img < 255),\n        (125.0 + (img - 180) * 5.0) * 10,\n        data,\n    )\n    data = np.where(\n        np.logical_and(img >= 100, img < 180),\n        (25.0 + (img - 100) * 1.25) * 10,\n        data,\n    )\n    data = np.where(\n        np.logical_and(img >= 0, img < 100), (img * 0.25) * 10, data\n    )\n\n    data = data.astype(np.uint16)\n\n    drv = gdal.GetDriverByName(\"HFA\")\n    basefn = f\"mrms_{period}h_{valid:%Y%m%d%H%M}\"\n    outfn = f\"{tmpdir}/{basefn}.img\"\n    proj = osr.SpatialReference()\n    proj.SetWellKnownGeogCS(\"EPSG:4326\")\n    with drv.Create(\n        outfn, size[1], size[0], 1, gdal.GDT_UInt16, options=[\"COMPRESS=YES\"]\n    ) as ds:\n        ds.SetProjection(proj.ExportToWkt())\n        ds.GetRasterBand(1).WriteArray(data)\n        ds.GetRasterBand(1).SetNoDataValue(65535)\n        ds.GetRasterBand(1).SetScale(0.1)\n        ds.GetRasterBand(1).SetUnitType(\"mm\")\n        title = valid.strftime(\"%s UTC %d %b %Y\")\n        ds.GetRasterBand(1).SetDescription(\n            f\"MRMS {period}HR Precip Ending {title}\"\n        )\n        # Optional, allows ArcGIS to auto show a legend\n        ds.GetRasterBand(1).ComputeStatistics(True)\n        # top left x, w-e pixel resolution, rotation,\n        # top left y, rotation, n-s pixel resolution\n        ds.SetGeoTransform([-130.0, 0.01, 0, 55.0, 0, -0.01])\n        ds.FlushCache()\n\n    zipfn = f\"{tmpdir}/{basefn}.zip\"\n    with zipfile.ZipFile(zipfn, \"w\", zipfile.ZIP_DEFLATED) as zfp:\n        zfp.write(outfn, f\"{basefn}.img\")\n        zfp.write(f\"{outfn}.aux.xml\", f\"{basefn}.img.aux.xml\")\n\n    # Send file back to client\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", f\"attachment; filename={basefn}.zip\"),\n    ]\n    start_response(\"200 OK\", headers)\n    with open(zipfn, \"rb\") as fh:\n        payload = fh.read()\n    return payload\n\n\n@iemapp(schema=Schema, help=__doc__)\ndef application(environ, start_response):\n    \"\"\"Do Something\"\"\"\n\n    valid = utc(\n        environ[\"year\"],\n        environ[\"month\"],\n        environ[\"day\"],\n        environ[\"hour\"],\n        environ[\"minute\"],\n    )\n\n    with tempfile.TemporaryDirectory() as tmpdir:\n        return [workflow(tmpdir, valid, environ[\"period\"], start_response)]\n"
  },
  {
    "path": "pylib/iemweb/request/__init__.py",
    "content": "\"\"\"Stuff at /cgi-bin/request/\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/request/asos.py",
    "content": "\"\"\".. title:: ASOS/METAR Backend Service\n\nReturn to `API Mainpage </api/#cgi>`_ or the\n`Download Portal </request/download.phtml>`_.\n\nDocumentation on /cgi-bin/request/asos.py\n-----------------------------------------\n\nThis cgi-bin script provides METAR/ASOS data.  It has a IP-based rate limit for\nrequests to prevent abuse.  A `503 Service Unavailable` response will be\nreturned if the server is under heavy load.\n\nChangelog:\n\n- 2026-04-21: Due to incessant requests against this service a 1 second\n  per-IP throttle is now in place.  There is literally no reason to hit this\n  service at a higher rate.  Just make an hourly request for all stations and\n  be done with it in one shot.\n- 2026-01-23: Added a practical limit of 1,000 station years worth of data\n  to be allowed with the request prior to the database query for the actual\n  data. You will get a HTTP 422 in this instance with a message to reduce size.\n- 2024-04-01: Fix recently introduced bug with time sort order.\n- 2024-03-29: This service had an intermediate bug whereby if the `tz` value\n  was not provided, it would default to `America/Chicago` instead of `UTC`.\n- 2024-03-29: Migrated to pydantic based request validation.  Will be\n  monitoring for any issues.\n\nExample Usage\n-------------\n\nGet the past 24 hours of air temperature and dew point for Des Moines and\nMason City, Iowa.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/asos.py\\\n?data=tmpf&data=dwpf&station=DSM&station=MCW&hours=24\n\nReturn all observations for the UTC date on 20 May 2020 for ASOS stations in\nIowa and Illinois.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/asos.py\\\n?data=all&network=IA_ASOS,IL_ASOS&sts=2020-05-20T00:00:00Z&\\\nets=2020-05-21T00:00:00Z\n\n\"\"\"\n\nimport re\nfrom datetime import datetime, timedelta\nfrom io import StringIO\nfrom typing import Annotated\nfrom zoneinfo import ZoneInfo\n\nfrom pydantic import AwareDatetime, Field, field_validator\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nfrom iemweb import error_log\nfrom iemweb.fields import TZ_FIELD\n\nNETWORK_RE = re.compile(r\"^[A-Z0-9_]{3,32}$\")\nSTATION_RE = re.compile(r\"^[A-Z0-9_]{3,4}$\")\nNULLS = {\"M\": \"M\", \"null\": \"null\", \"empty\": \"\"}\nTRACE_OPTS = {\"T\": \"T\", \"null\": \"null\", \"empty\": \"\", \"0.0001\": \"0.0001\"}\nAVAILABLE = [\n    \"tmpf\",\n    \"dwpf\",\n    \"relh\",\n    \"drct\",\n    \"sknt\",\n    \"p01i\",\n    \"alti\",\n    \"mslp\",\n    \"vsby\",\n    \"gust\",\n    \"skyc1\",\n    \"skyc2\",\n    \"skyc3\",\n    \"skyc4\",\n    \"skyl1\",\n    \"skyl2\",\n    \"skyl3\",\n    \"skyl4\",\n    \"wxcodes\",\n    \"ice_accretion_1hr\",\n    \"ice_accretion_3hr\",\n    \"ice_accretion_6hr\",\n    \"peak_wind_gust\",\n    \"peak_wind_drct\",\n    \"peak_wind_time\",\n    \"feel\",\n    \"metar\",\n    \"snowdepth\",\n]\n# inline is so much faster!\nCONV_COLS = {\n    \"tmpc\": \"f2c(tmpf) as tmpc\",\n    \"dwpc\": \"f2c(dwpf) as dwpc\",\n    \"p01m\": \"p01i * 25.4 as p01m\",\n    \"sped\": \"sknt * 1.15 as sped\",\n    \"gust_mph\": \"gust * 1.15 as gust_mph\",\n    \"peak_wind_gust_mph\": \"peak_wind_gust * 1.15 as peak_wind_gust_mph\",\n}\n\n\nclass MyModel(CGIModel):\n    \"\"\"Request Model.\"\"\"\n\n    data: Annotated[\n        ListOrCSVType | None,\n        Field(\n            description=(\n                \"The data columns to return, defaults to all.  The available \"\n                \"options are: tmpf, dwpf, relh, drct, sknt, p01i, alti, mslp, \"\n                \"vsby, gust, skyc1, skyc2, skyc3, skyc4, skyl1, skyl2, skyl3, \"\n                \"skyl4, wxcodes, ice_accretion_1hr, ice_accretion_3hr, \"\n                \"ice_accretion_6hr, peak_wind_gust, peak_wind_drct, \"\n                \"peak_wind_time, feel, metar, snowdepth\"\n            ),\n        ),\n    ] = None\n    direct: Annotated[\n        bool,\n        Field(\n            description=(\n                \"If set to 'yes', the data will be directly \"\n                \"downloaded as a file.\"\n            ),\n        ),\n    ] = False\n    elev: Annotated[\n        bool,\n        Field(\n            description=(\n                \"If set to 'yes', the elevation (m) of the station will be \"\n                \"included in the output.\"\n            ),\n        ),\n    ] = False\n    ets: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=(\"The end time of the data request.\"),\n        ),\n    ] = None\n    format: Annotated[\n        str,\n        Field(\n            description=(\n                \"The format of the data, defaults to onlycomma. \"\n                \"The available options are: onlycomma, tdf.\"\n            ),\n        ),\n    ] = \"onlycomma\"\n    hours: Annotated[\n        int | None,\n        Field(\n            description=(\n                \"The number of hours of data to return prior to the current \"\n                \"timestamp.  Can not be more than 24 if no stations are \"\n                \"specified.\"\n            ),\n        ),\n    ] = None\n    latlon: Annotated[\n        bool,\n        Field(\n            description=(\n                \"If set to 'yes', the latitude and longitude of the station \"\n                \"will be included in the output.\"\n            ),\n        ),\n    ] = False\n    missing: Annotated[\n        str,\n        Field(\n            description=(\n                \"How to represent missing values, defaults to M.  Other \"\n                \"options are 'null' and 'empty'.\"\n            ),\n            pattern=\"^(M|null|empty)$\",\n        ),\n    ] = \"M\"\n    nometa: Annotated[\n        bool,\n        Field(\n            description=(\n                \"If set to 'yes', the column headers will not be included \"\n                \"in the output.\"\n            ),\n        ),\n    ] = False\n    network: Annotated[\n        ListOrCSVType | None,\n        Field(\n            description=\"The network to query, defaults to all networks.\",\n        ),\n    ] = None\n    report_type: ListOrCSVType = Field(\n        default_factory=list,\n        description=(\n            \"The report type to query, defaults to all.  The available \"\n            \"options are: 1 (HFMETAR), 3 (Routine), 4 (Specials).\"\n        ),\n    )\n    station: Annotated[\n        ListOrCSVType | None,\n        Field(\n            description=(\n                \"The station identifier to query, defaults to all stations \"\n                \"and if you do not specify any stations, you can only \"\n                \"request 24 hours of data.\"\n            ),\n        ),\n    ] = None\n    sts: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=(\"The start time of the data request.\"),\n        ),\n    ] = None\n    trace: Annotated[\n        str,\n        Field(\n            description=(\n                \"How to represent trace values, defaults to 0.0001.  Other \"\n                \"options are 'null' and 'empty'.\"\n            ),\n            pattern=\"^(0.0001|null|empty|T)$\",\n        ),\n    ] = \"0.0001\"\n    tz: TZ_FIELD = \"UTC\"\n    year1: Annotated[\n        int | None,\n        Field(\n            description=(\n                \"The year of the start time, defaults to the time zone \"\n                \"provided by `tzname`. If `sts` is not provided.\"\n            ),\n        ),\n    ] = None\n    month1: Annotated[\n        int | None,\n        Field(\n            description=(\n                \"The month of the start time, defaults to the time zone \"\n                \"provided by `tzname`. If `sts` is not provided.\"\n            ),\n        ),\n    ] = None\n    day1: Annotated[\n        int | None,\n        Field(\n            description=(\n                \"The day of the start time, defaults to the time zone \"\n                \"provided by `tzname`. If `sts` is not provided.\"\n            ),\n        ),\n    ] = None\n    hour1: Annotated[\n        int,\n        Field(\n            description=(\n                \"The hour of the start time, defaults to the time zone \"\n                \"provided by `tzname`. If `sts` is not provided.\"\n            ),\n        ),\n    ] = 0\n    minute1: Annotated[\n        int,\n        Field(\n            description=(\n                \"The minute of the start time, defaults to the time zone \"\n                \"provided by `tzname`. If `sts` is not provided.\"\n            ),\n        ),\n    ] = 0\n    year2: Annotated[\n        int | None,\n        Field(\n            description=(\n                \"The year of the end time, defaults to the time zone \"\n                \"provided by `tzname`. If `ets` is not provided.\"\n            ),\n        ),\n    ] = None\n    month2: Annotated[\n        int | None,\n        Field(\n            description=(\n                \"The month of the end time, defaults to the time zone \"\n                \"provided by `tzname`. If `ets` is not provided.\"\n            ),\n        ),\n    ] = None\n    day2: Annotated[\n        int | None,\n        Field(\n            description=(\n                \"The day of the end time, defaults to the time zone \"\n                \"provided by `tzname`. If `ets` is not provided.\"\n            ),\n        ),\n    ] = None\n    hour2: Annotated[\n        int,\n        Field(\n            description=(\n                \"The hour of the end time, defaults to the time zone \"\n                \"provided by `tzname`. If `ets` is not provided.\"\n            ),\n        ),\n    ] = 0\n    minute2: Annotated[\n        int,\n        Field(\n            default=0,\n            description=(\n                \"The minute of the end time, defaults to the time zone \"\n                \"provided by `tzname`. If `ets` is not provided.\"\n            ),\n        ),\n    ] = 0\n\n    @field_validator(\"station\")\n    @classmethod\n    def station_validator(cls, value):\n        \"\"\"Ensure the station is valid.\"\"\"\n        for station in value:\n            if not STATION_RE.fullmatch(station):\n                raise ValueError(f\"Invalid station identifier: {station}\")\n        return value\n\n    @field_validator(\"network\")\n    @classmethod\n    def network_validator(cls, value):\n        \"\"\"Ensure the network is valid.\"\"\"\n        for network in value:\n            if not NETWORK_RE.fullmatch(network):\n                raise ValueError(f\"Invalid network identifier: {network}\")\n        return value\n\n    @field_validator(\"report_type\", mode=\"after\")\n    @classmethod\n    def ensure_ints(cls, value: list):\n        \"\"\"Ensure that each value is a valid integer.\"\"\"\n        _ = [int(v) for v in value]  # skipcq\n        return value\n\n\ndef fmt_time(val, missing, _trace, tzinfo):\n    \"\"\"Format timestamp.\"\"\"\n    if val is None:\n        return missing\n    return (val.astimezone(tzinfo)).strftime(\"%Y-%m-%d %H:%M\")\n\n\ndef fmt_trace(val, missing, trace, _tzinfo):\n    \"\"\"Format precip.\"\"\"\n    if val is None:\n        return missing\n    # careful with this comparison\n    if 0 < val < 0.009999:\n        return trace\n    return f\"{val:.2f}\"\n\n\ndef fmt_simple(val, missing, _trace, _tzinfo):\n    \"\"\"Format simplely.\"\"\"\n    if val is None:\n        return missing\n    return dance(val).replace(\",\", \" \").replace(\"\\n\", \" \")\n\n\ndef fmt_wxcodes(val, missing, _trace, _tzinfo):\n    \"\"\"Format weather codes.\"\"\"\n    if val is None:\n        return missing\n    return \" \".join(val)\n\n\ndef fmt_f2(val, missing, _trace, _tzinfo):\n    \"\"\"Simple 2 place formatter.\"\"\"\n    if val is None:\n        return missing\n    return f\"{val:.2f}\"\n\n\ndef fmt_f0(val, missing, _trace, _tzinfo):\n    \"\"\"Simple 0 place formatter.\"\"\"\n    if val is None:\n        return missing\n    return f\"{val:.0f}\"\n\n\ndef dance(val):\n    \"\"\"Force the val to ASCII.\"\"\"\n    return val.encode(\"ascii\", \"ignore\").decode(\"ascii\")\n\n\ndef overloaded(environ: dict):\n    \"\"\"Prevent automation from overwhelming the server\"\"\"\n\n    with get_dbconn(\"asos\") as pgconn:\n        cursor = pgconn.cursor()\n        cursor.execute(\"select one::float from system_loadavg\")\n        val = cursor.fetchone()[0]\n    if val > 40:  # Cut back on logging\n        error_log(environ, f\"/cgi-bin/request/asos.py over cpu thres: {val}\")\n    return val > 30\n\n\ndef get_stations(form):\n    \"\"\"Figure out the requested station\"\"\"\n    if not form[\"station\"]:\n        if form[\"network\"] is not None:\n            nt = NetworkTable(form[\"network\"], only_online=False)\n            return list(nt.sts.keys())\n        return []\n    stations = form[\"station\"]\n    if not stations:\n        return []\n    # allow folks to specify the ICAO codes for K*** sites\n    for i, station in enumerate(stations):\n        if len(station) == 4 and station[0] == \"K\":\n            stations[i] = station[1:]\n    return stations\n\n\ndef get_time_bounds(form, tzinfo):\n    \"\"\"Figure out the exact time bounds desired\"\"\"\n    if form[\"hours\"] is not None:\n        ets = utc()\n        sts = ets - timedelta(hours=int(form.get(\"hours\")))\n        return sts, ets\n    # Here lie dragons, so tricky to get a proper timestamp\n    try:\n\n        def _get(num):\n            return datetime(\n                form[f\"year{num}\"],\n                form[f\"month{num}\"],\n                form[f\"day{num}\"],\n                form[f\"hour{num}\"],\n                form[f\"minute{num}\"],\n            )\n\n        if form[\"sts\"] is None:\n            form[\"sts\"] = _get(\"1\").replace(tzinfo=tzinfo)\n        if form[\"ets\"] is None:\n            form[\"ets\"] = _get(\"2\").replace(tzinfo=tzinfo)\n    except Exception:\n        return None, None\n\n    if form[\"sts\"] == form[\"ets\"]:\n        form[\"ets\"] += timedelta(days=1)\n    if form[\"sts\"] > form[\"ets\"]:\n        form[\"sts\"], form[\"ets\"] = form[\"ets\"], form[\"sts\"]\n    return form[\"sts\"], form[\"ets\"]\n\n\ndef build_querycols(form):\n    \"\"\"Which database columns correspond to our query.\"\"\"\n    req = form[\"data\"]\n    if not req or \"all\" in req:\n        return AVAILABLE\n    res = []\n    for col in req:\n        if col == \"presentwx\":\n            res.append(\"wxcodes\")\n        elif col in AVAILABLE:\n            res.append(col)\n        elif col in CONV_COLS:\n            res.append(CONV_COLS[col])\n    if not res:\n        res.append(\"tmpf\")\n    return res\n\n\ndef toobusy(pgconn, environ, name):\n    \"\"\"Check internal logging...\"\"\"\n    cursor = pgconn.cursor()\n    cursor.execute(\n        \"SELECT pid from pg_stat_activity where query ~* %s\",\n        (name,),\n    )\n    over = cursor.rowcount > 6\n    if over and cursor.rowcount > 9:  # cut back on logging\n        error_log(environ, f\"asos.py cursors {cursor.rowcount}: {name}\")\n    cursor.close()\n    return over\n\n\n# NOTE This app can't be cached via iemapp since it is a generator\n@iemapp(\n    help=__doc__,\n    parse_times=False,\n    schema=MyModel,\n    ip_throttle_secs=1,\n)\ndef application(environ, start_response):\n    \"\"\"Go main\"\"\"\n    if environ[\"REQUEST_METHOD\"] == \"OPTIONS\":\n        start_response(\"400 Bad Request\", [(\"Content-type\", \"text/plain\")])\n        yield b\"Allow: GET,POST,OPTIONS\"\n        return\n    if overloaded(environ):\n        start_response(\n            \"503 Service Unavailable\", [(\"Content-type\", \"text/plain\")]\n        )\n        yield b\"ERROR: server over capacity, please try later\"\n        return\n    tzinfo = ZoneInfo(environ[\"tz\"])\n    pgconn = get_dbconn(\"asos\")\n    ip = environ.get(\"HTTP_X_FORWARDED_FOR\", environ.get(\"REMOTE_ADDR\"))\n    if ip is not None:\n        ip = ip.split(\",\")[0].strip()\n        # Run the check at the class C level, since the requests could be\n        # coming from a network of systems\n        ip = \".\".join(ip.split(\".\")[:2])\n    cursor_name = f\"mystream_{ip}\"\n    if toobusy(pgconn, environ, cursor_name):\n        pgconn.close()\n        start_response(\n            \"503 Service Unavailable\", [(\"Content-type\", \"text/plain\")]\n        )\n        yield b\"ERROR: server over capacity, please try later\"\n        return\n    acursor = pgconn.cursor(cursor_name, scrollable=False)\n    acursor.itersize = 20_000\n\n    report_types = [int(x) for x in environ[\"report_type\"]]\n    sts, ets = get_time_bounds(environ, tzinfo)\n    if sts is None:\n        pgconn.close()\n        start_response(\n            \"422 Unprocessable Entity\", [(\"Content-type\", \"text/plain\")]\n        )\n        yield b\"Invalid times provided.\"\n        return\n    stations = get_stations(environ)\n    if not stations:\n        # We are asking for all-data.  We limit the amount of data returned to\n        # one day or less\n        if (ets - sts) > timedelta(hours=24):\n            pgconn.close()\n            start_response(\"400 Bad Request\", [(\"Content-type\", \"text/plain\")])\n            yield b\"When requesting all-stations, must be less than 24 hours.\"\n            return\n    else:\n        # Limit to 1_000 station years of data\n        if (ets.year - sts.year) * len(stations) > 1_000:\n            pgconn.close()\n            start_response(\"400 Bad Request\", [(\"Content-type\", \"text/plain\")])\n            yield (\n                b\"Requested too much data, reduce stations or time period. \"\n                b\"Currently limited to 1,000 station_years worth of data.\"\n            )\n            return\n    delim = environ[\"format\"]\n    headers = []\n    if environ[\"direct\"]:\n        headers.append((\"Content-type\", \"application/octet-stream\"))\n        suffix = \"tsv\" if delim in [\"tdf\", \"onlytdf\"] else \"csv\"\n        if not stations or len(stations) > 1:\n            fn = f\"asos.{suffix}\"\n        else:\n            fn = f\"{stations[0]}.{suffix}\"\n        headers.append((\"Content-Disposition\", f\"attachment; filename={fn}\"))\n    else:\n        headers.append((\"Content-type\", \"text/plain\"))\n    start_response(\"200 OK\", headers)\n\n    # How should null values be represented\n    missing = NULLS[environ[\"missing\"]]\n    # How should trace values be represented\n    trace = TRACE_OPTS[environ[\"trace\"]]\n\n    querycols = build_querycols(environ)\n\n    if delim in [\"tdf\", \"onlytdf\"]:\n        rD = \"\\t\"\n    else:\n        rD = \",\"\n\n    gisextra = environ[\"latlon\"]\n    elev_extra = environ[\"elev\"]\n    table = \"alldata\"\n    metalimiter = \"\"\n    colextra = \"0 as lon, 0 as lat, 0 as elev, \"\n    if gisextra or elev_extra:\n        colextra = \"ST_X(geom) as lon, ST_Y(geom) as lat, elevation, \"\n        table = \"alldata a JOIN stations t on (a.station = t.id)\"\n        metalimiter = \"t.network ~* 'ASOS' and \"\n\n    rlimiter = \"\"\n    # Munge legacy report_type=2 into 2,3,4 see akrherz/iem#104\n    if 2 in report_types:\n        report_types.extend([3, 4])\n    if len(report_types) == 1:\n        rlimiter = f\" and report_type = {report_types[0]}\"\n    elif len(report_types) > 1:\n        rlimiter = f\" and report_type in {tuple(report_types)}\"\n    sqlcols = \",\".join(querycols)\n    sorder = \"DESC\" if environ[\"hours\"] is not None else \"ASC\"\n    if stations:\n        acursor.execute(\n            f\"SELECT station, valid, {colextra} {sqlcols} from {table} \"\n            f\"WHERE {metalimiter} valid >= %s and valid < %s and \"\n            f\"station = ANY(%s) {rlimiter} ORDER by valid {sorder}\",\n            (sts, ets, stations),\n        )\n    else:\n        acursor.execute(\n            f\"SELECT station, valid, {colextra} {sqlcols} from {table} \"\n            f\"WHERE {metalimiter} valid >= %s and valid < %s {rlimiter} \"\n            f\"ORDER by valid {sorder}\",\n            (sts, ets),\n        )\n    sio = StringIO()\n    if delim not in [\"onlytdf\", \"onlycomma\"]:\n        sio.write(f\"#DEBUG: Format Typ    -> {delim}\\n\")\n        sio.write(f\"#DEBUG: Time Period   -> {sts} {ets}\\n\")\n        sio.write(f\"#DEBUG: Time Zone     -> {tzinfo}\\n\")\n        sio.write(\n            \"#DEBUG: Data Contact   -> daryl herzmann \"\n            \"akrherz@iastate.edu 515-294-5978\\n\"\n        )\n        sio.write(f\"#DEBUG: Entries Found -> {acursor.rowcount}\\n\")\n    nometa = environ[\"nometa\"]\n    if not nometa:\n        sio.write(f\"station{rD}valid{rD}\")\n        if gisextra:\n            sio.write(f\"lon{rD}lat{rD}\")\n        if elev_extra:\n            sio.write(f\"elevation{rD}\")\n        # hack to convert tmpf as tmpc to tmpc\n        sio.write(\n            f\"{rD.join([c.rsplit(' as ', maxsplit=1)[-1] for c in querycols])}\"\n        )\n        sio.write(\"\\n\")\n\n    ff = {\n        \"wxcodes\": fmt_wxcodes,\n        \"metar\": fmt_simple,\n        \"skyc1\": fmt_simple,\n        \"skyc2\": fmt_simple,\n        \"skyc3\": fmt_simple,\n        \"skyc4\": fmt_simple,\n        \"p01i\": fmt_trace,\n        \"p01i * 25.4 as p01m\": fmt_trace,\n        \"ice_accretion_1hr\": fmt_trace,\n        \"ice_accretion_3hr\": fmt_trace,\n        \"ice_accretion_6hr\": fmt_trace,\n        \"peak_wind_time\": fmt_time,\n        \"snowdepth\": fmt_f0,\n    }\n    # The default is the %.2f formatter\n    formatters = [ff.get(col, fmt_f2) for col in querycols]\n\n    for rownum, row in enumerate(acursor):\n        if not nometa:\n            sio.write(row[0] + rD)\n            sio.write(\n                (row[1].astimezone(tzinfo)).strftime(\"%Y-%m-%d %H:%M\") + rD\n            )\n        if gisextra:\n            sio.write(f\"{row[2]:.4f}{rD}{row[3]:.4f}{rD}\")\n        if elev_extra:\n            sio.write(f\"{row[4]:.2f}{rD}\")\n        sio.write(\n            rD.join(\n                [\n                    func(val, missing, trace, tzinfo)\n                    for func, val in zip(formatters, row[5:], strict=False)\n                ]\n            )\n            + \"\\n\"\n        )\n        if rownum > 0 and rownum % 1000 == 0:\n            yield sio.getvalue().encode(\"ascii\", \"ignore\")\n            sio = StringIO()\n    acursor.close()\n    pgconn.close()\n    yield sio.getvalue().encode(\"ascii\", \"ignore\")\n"
  },
  {
    "path": "pylib/iemweb/request/asos1min.py",
    "content": "\"\"\".. title:: ASOS 1 Minute Data Request\n\nDocumentation for /cgi-bin/request/asos1min.py\n----------------------------------------------\n\nThis service provides the ASOS 1 minute data provided by NCEI and is not the\n\"one minute data\" via MADIS.  There is an availability delay of about 24 hours\ndue to the way NCEI collects the data from the ASOS sites.\n\nExamples\n--------\n\nRequest air temperature data for Ames IA KAMW for 2022, but only provide data\nat 1 hour intervals.  Provide timestamps in UTC timezone.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/asos1min.py?station=AMW\\\n&vars=tmpf&sts=2022-01-01T00:00Z&ets=2023-01-01T00:00Z&sample=1hour\\\n&what=download&tz=UTC\n\n\"\"\"\n\nfrom io import StringIO\n\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nfrom iemweb.fields import STATION_LIST_FIELD, TZ_FIELD\n\nSAMPLING = {\n    \"1min\": 1,\n    \"5min\": 5,\n    \"10min\": 10,\n    \"20min\": 20,\n    \"1hour\": 60,\n}\nDELIM = {\"space\": \" \", \"comma\": \",\", \"tab\": \"\\t\", \",\": \",\"}\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    delim: str = Field(\n        \"comma\",\n        description=\"Delimiter to use in output\",\n        pattern=\"^(comma|space|tab|,)$\",\n    )\n    ets: AwareDatetime = Field(None, description=\"End timestamp for data\")\n    gis: bool = Field(\n        False, description=\"Include Lat/Lon information in output\"\n    )\n    sample: str = Field(\n        \"1min\",\n        description=\"Sampling period for data\",\n        pattern=\"^(1min|5min|10min|20min|1hour)$\",\n    )\n    station: STATION_LIST_FIELD\n    sts: AwareDatetime = Field(None, description=\"Start timestamp for data\")\n    tz: TZ_FIELD = \"UTC\"\n    vars: ListOrCSVType = Field(\n        None, description=\"Variable(s) to request data for\"\n    )\n    what: str = Field(\n        \"dl\", description=\"Output format\", pattern=\"^(download|view)$\"\n    )\n    year1: int = Field(None, description=\"Start year for data\")\n    month1: int = Field(None, description=\"Start month for data\")\n    day1: int = Field(None, description=\"Start day for data\")\n    hour1: int = Field(0, description=\"Start hour for data\")\n    minute1: int = Field(0, description=\"Start minute for data\")\n    year2: int = Field(None, description=\"End year for data\")\n    month2: int = Field(None, description=\"End month for data\")\n    day2: int = Field(None, description=\"End day for data\")\n    hour2: int = Field(0, description=\"End hour for data\")\n    minute2: int = Field(0, description=\"End minute for data\")\n\n\ndef get_station_metadata(stations) -> dict:\n    \"\"\"build a dictionary.\"\"\"\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        res = conn.execute(\n            sql_helper(\"\"\"\n            SELECT id, name, round(ST_x(geom)::numeric, 4) as lon,\n            round(ST_y(geom)::numeric, 4) as lat from stations\n            where id = ANY(:stations) and network ~* 'ASOS'\n        \"\"\"),\n            {\"stations\": stations},\n        )\n        data = {}\n        for row in res.mappings():\n            data[row[\"id\"]] = dict(\n                name=row[\"name\"], lon=row[\"lon\"], lat=row[\"lat\"]\n            )\n    for station in stations:\n        if station not in data:\n            raise IncompleteWebRequest(f\"Unknown station provided: {station}\")\n    return data\n\n\ndef compute_prefixes(sio, environ, delim, stations, tz) -> dict:\n    \"\"\"\"\"\"\n    station_meta = get_station_metadata(stations)\n    prefixes = {}\n    if environ[\"gis\"]:\n        sio.write(\n            delim.join(\n                [\"station\", \"station_name\", \"lat\", \"lon\", f\"valid({tz})\", \"\"]\n            )\n        )\n        for station in stations:\n            prefixes[station] = (\n                delim.join(\n                    [\n                        station,\n                        station_meta[station][\"name\"].replace(delim, \"_\"),\n                        str(station_meta[station][\"lat\"]),\n                        str(station_meta[station][\"lon\"]),\n                    ]\n                )\n                + delim\n            )\n    else:\n        sio.write(delim.join([\"station\", \"station_name\", f\"valid({tz})\", \"\"]))\n        for station in stations:\n            prefixes[station] = (\n                delim.join(\n                    [\n                        station,\n                        station_meta[station][\"name\"].replace(delim, \"_\"),\n                    ]\n                )\n                + delim\n            )\n    return prefixes\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n)\ndef application(environ, start_response):\n    \"\"\"Handle mod_wsgi request.\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"Insufficient start timestamp variables.\")\n    # Ensure we have uppercase stations\n    stations = [s.upper() for s in environ[\"station\"]]\n    delim = DELIM[environ[\"delim\"]]\n    sample = SAMPLING[environ[\"sample\"]]\n    tz = environ[\"tz\"]\n    varnames = environ[\"vars\"]\n    if not varnames:\n        raise IncompleteWebRequest(\"No vars= was specified in request.\")\n    with get_sqlalchemy_conn(\"asos1min\") as conn:\n        # get a list of columns we have in the alldata_1minute table\n        res = conn.execute(\n            sql_helper(\n                \"select column_name from information_schema.columns where \"\n                \"table_name = 'alldata_1minute' ORDER by column_name\"\n            )\n        )\n        columns = [row[\"column_name\"] for row in res.mappings()]\n        # cross check varnames now\n        for varname in varnames:\n            if varname not in columns:\n                raise IncompleteWebRequest(\n                    f\"Unknown variable {varname} specified in request.\"\n                )\n        res = conn.execution_options(\n            stream_results=True, max_row_buffer=10_000\n        ).execute(\n            sql_helper(\"\"\"\n    select *,\n    to_char(valid at time zone :tz, 'YYYY-MM-DD hh24:MI') as local_valid\n    from alldata_1minute\n    where station = ANY(:stations) and valid >= :sts and valid < :ets and\n    extract(minute from valid) % :sample = 0 ORDER by station, valid\n            \"\"\"),\n            {\n                \"tz\": tz,\n                \"stations\": stations,\n                \"sts\": environ[\"sts\"],\n                \"ets\": environ[\"ets\"],\n                \"sample\": sample,\n            },\n        )\n        headers = []\n        if environ[\"what\"] == \"download\":\n            headers.append((\"Content-type\", \"application/octet-stream\"))\n            headers.append(\n                (\"Content-Disposition\", \"attachment; filename=changeme.txt\")\n            )\n        else:\n            headers.append((\"Content-type\", \"text/plain\"))\n\n        sio = StringIO()\n        prefixes = compute_prefixes(sio, environ, delim, stations, tz)\n\n        sio.write(delim.join(varnames) + \"\\n\")\n        rowfmt = delim.join([f\"%({var})s\" for var in varnames])\n        for row in res.mappings():\n            sio.write(prefixes[row[\"station\"]])\n            sio.write(f\"{row['local_valid']}{delim}\")\n            sio.write((rowfmt % row).replace(\"None\", \"M\"))\n            sio.write(\"\\n\")\n\n    start_response(\"200 OK\", headers)\n    return [sio.getvalue().encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/request/coop.py",
    "content": "\"\"\".. title:: IEM Climodat Data Export\n\nReturn to `API Services </api/#cgi>`_.  This service is the backend for the\n`Climodat Download </request/coop/fe.phtml>`_ frontend.\n\nDocumentation for /cgi-bin/request/coop.py\n------------------------------------------\n\nThis service is somewhat poorly named ``coop.py``, but is providing the IEM\nClimodat data, which is a combination of NWS COOP and NWS ASOS/AWOS data. There\nare a number of knobs here as this is one of the most popular datasets the IEM\nproduces.\n\nChangelog\n---------\n\n- 2024-06-22: Initital documentation and backend conversion to pydantic.\n\nExample Requests\n----------------\n\nProvide the Iowa areal average data for 2020 in Excel format\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/coop.py?\\\nstation=IA0000&network=IACLIMATE&year1=2020&year2=2020&what=excel\n\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\nfrom io import BytesIO, StringIO\nfrom typing import Annotated\nfrom zipfile import ZipFile\n\nimport pandas as pd\nfrom metpy.units import units\nfrom pydantic import Field\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.reference import state_names\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nfrom iemweb.fields import DAY_OF_MONTH_FIELD, NETWORK_FIELD\n\nDEGF = units.degF\nDEGC = units.degC\n\nDEGC = units.degC\nDEGF = units.degF\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    delim: Annotated[\n        str,\n        Field(\n            description=(\n                \"The delimiter to use in the output file.  \"\n                \"Options: comma, tab, space\"\n            ),\n            pattern=\"^(comma|tab|space)$\",\n        ),\n    ] = \"comma\"\n    gis: Annotated[\n        bool,\n        Field(\n            description=\"Include latitude and longitude cols in the output.\",\n        ),\n    ] = False\n    inclatlon: Annotated[\n        bool,\n        Field(\n            description=\"Include latitude and longitude cols in the output.\",\n        ),\n    ] = False\n    model: Annotated[\n        str | None,\n        Field(\n            description=(\n                \"The model to use for output.  Options: simple, apsim, \"\n                \"century, daycent, salus, dndc, swat.  Specifying this will \"\n                \"override the 'vars' option.\"\n            ),\n        ),\n    ] = None\n    network: NETWORK_FIELD = \"IACLIMATE\"\n    scenario: Annotated[\n        bool,\n        Field(\n            description=(\n                \"Should data from a previous year, specified by scenario_year \"\n                \"be used to fill out the present year.\"\n            ),\n        ),\n    ] = False\n    scenario_year: Annotated[\n        int,\n        Field(\n            description=(\n                \"The year to use as a scenario year, if scenario is true.\"\n            ),\n        ),\n    ] = 2020\n    station: ListOrCSVType = Field(\n        default_factory=list,\n        description=\"List of stations to include in the output.\",\n    )\n    stations: ListOrCSVType = Field(\n        default_factory=list,\n        description=(\n            \"List of stations to include in the output. Legacy variable name.\"\n        ),\n    )\n    vars: ListOrCSVType = Field(\n        default_factory=list,\n        description=\"List of variables to include in the output.\",\n    )\n    what: Annotated[\n        str, Field(description=\"The type of output to generate.\")\n    ] = \"view\"\n    with_header: Annotated[\n        bool, Field(description=\"Include a header row in the output.\")\n    ] = True\n    year1: Annotated[\n        int,\n        Field(\n            description=\"The starting year for the data request.\",\n        ),\n    ] = date.today().year\n    month1: Annotated[\n        int,\n        Field(\n            description=\"The starting month for the data request.\",\n        ),\n    ] = 1\n    day1: DAY_OF_MONTH_FIELD = 1\n    year2: Annotated[\n        int,\n        Field(\n            description=\"The ending year for the data request.\",\n        ),\n    ] = date.today().year\n    month2: Annotated[\n        int,\n        Field(\n            description=\"The ending month for the data request.\",\n        ),\n    ] = date.today().month\n    day2: DAY_OF_MONTH_FIELD = date.today().day\n\n\ndef get_scenario_period(ctx):\n    \"\"\"Compute the inclusive start and end dates to fetch scenario data for\n    Arguments:\n        ctx dictionary context this app was called with\n    \"\"\"\n    if ctx[\"ets\"].month == 2 and ctx[\"ets\"].day == 29:\n        sts = date(ctx[\"scenario_year\"], ctx[\"ets\"].month, 28)\n    else:\n        sts = date(ctx[\"scenario_year\"], ctx[\"ets\"].month, ctx[\"ets\"].day)\n    ets = date(ctx[\"scenario_year\"], 12, 31)\n    return sts, ets\n\n\ndef sane_date(year, month, day):\n    \"\"\"Attempt to account for usage of days outside of the bounds for\n    a given month\"\"\"\n    # Calculate the last date of the given month\n    nextmonth = date(year, month, 1) + timedelta(days=35)\n    lastday = nextmonth.replace(day=1) - timedelta(days=1)\n    return date(year, month, min(day, lastday.day))\n\n\ndef get_cgi_dates(environ):\n    \"\"\"Figure out which dates are requested via the form, we shall attempt\n    to account for invalid dates provided!\"\"\"\n\n    ets = min(\n        sane_date(environ[\"year2\"], environ[\"month2\"], environ[\"day2\"]),\n        date.today() - timedelta(days=1),\n    )\n\n    return [\n        sane_date(environ[\"year1\"], environ[\"month1\"], environ[\"day1\"]),\n        ets,\n    ]\n\n\ndef get_cgi_stations(environ):\n    \"\"\"Figure out which stations the user wants, return a list of them\"\"\"\n    reqlist = environ[\"station\"]\n    if not reqlist:\n        reqlist = environ[\"stations\"]\n    if not reqlist:\n        return []\n    if \"_ALL\" in reqlist:\n        network = environ[\"network\"]\n        nt = NetworkTable(network, only_online=False)\n        return list(nt.sts.keys())\n\n    return reqlist\n\n\ndef f2c(val):\n    \"\"\"Convert F to C.\"\"\"\n    return (val * DEGF).to(DEGC).m\n\n\ndef get_tablename(stations: list[str]):\n    \"\"\"Figure out the table that has the data for these stations\"\"\"\n    states = []\n    for sid in stations:\n        if sid[:2] not in states and sid[:2].lower() in state_names:\n            states.append(sid[:2])\n    if len(states) == 1:\n        return f\"alldata_{states[0]}\"\n    return \"alldata\"\n\n\ndef get_stationtable(stations):\n    \"\"\"Figure out our station table!\"\"\"\n    states = []\n    networks = []\n    for sid in stations:\n        if sid[:2] not in states:\n            states.append(sid[:2])\n            networks.append(f\"{sid[:2]}CLIMATE\")\n    return NetworkTable(networks, only_online=False)\n\n\ndef do_apsim(cursor, ctx):\n    \"\"\"\n    [weather.met.weather]\n    latitude = 42.1 (DECIMAL DEGREES)\n    tav = 9.325084 (oC) ! annual average ambient temperature\n    amp = 29.57153 (oC) ! annual amplitude in mean monthly temperature\n    year          day           radn          maxt          mint          rain\n    ()            ()            (MJ/m^2)      (oC)          (oC)          (mm)\n     1986          1             7.38585       0.8938889    -7.295556      0\n    \"\"\"\n    if len(ctx[\"stations\"]) > 1:\n        return (\n            \"ERROR: APSIM output is only permitted for one station at a time.\"\n        ).encode(\"ascii\")\n\n    station = ctx[\"stations\"][0]\n    network = f\"{station[:2]}CLIMATE\"\n    nt = NetworkTable(network, only_online=False)\n    if station not in nt.sts:\n        raise IncompleteWebRequest(\"Unknown station provided\")\n\n    thisyear = ctx[\"ets\"].year\n    extra = {}\n    if ctx[\"scenario\"]:\n        sts = datetime(int(ctx[\"scenario_year\"]), 1, 1)\n        ets = datetime(int(ctx[\"scenario_year\"]), 12, 31)\n        febtest = date(thisyear, 3, 1) - timedelta(days=1)\n        sdaylimit = \"\"\n        if febtest.day == 28:\n            sdaylimit = \" and sday != '0229'\"\n        cursor.execute(\n            f\"\"\"\n            SELECT day, high, low, precip, 1 as doy,\n            coalesce(era5land_srad, narr_srad, merra_srad, hrrr_srad) as srad\n            from alldata WHERE station = %s\n            and day >= %s and day <= %s {sdaylimit}\"\"\",\n            (ctx[\"stations\"][0], sts, ets),\n        )\n        for row in cursor:\n            ts = row[\"day\"].replace(year=thisyear)\n            extra[ts] = row\n            extra[ts][\"doy\"] = int(ts.strftime(\"%j\"))\n        if febtest not in extra:\n            feb28 = date(thisyear, 2, 28)\n            if feb28 in extra:\n                extra[febtest] = extra[feb28]\n\n    sio = StringIO()\n    sio.write(\"! Iowa Environmental Mesonet -- NWS Cooperative Data\\n\")\n    sio.write(f\"! Created: {utc():%d %b %Y %H:%M:%S} UTC\\n\")\n    sio.write(\"! Contact: daryl herzmann akrherz@iastate.edu 515-294-5978\\n\")\n    sio.write(f\"! Station: {station} {nt.sts[station]['name']}\\n\")\n    sio.write(f\"! Data Period: {ctx['sts']} - {ctx['ets']}\\n\")\n    if ctx[\"scenario\"]:\n        sio.write(\n            f\"! !SCENARIO DATA! inserted after: {ctx['ets']} \"\n            f\"replicating year: {ctx['scenario_year']}\\n\"\n        )\n\n    sio.write(\"[weather.met.weather]\\n\")\n    sio.write(f\"latitude = {nt.sts[station]['lat']:.1f} (DECIMAL DEGREES)\\n\")\n\n    # Compute average temperature!\n    cursor.execute(\n        \"SELECT avg((high+low)/2) as avgt from ncei_climate91 \"\n        \"WHERE station = %s\",\n        (nt.sts[station][\"ncei91\"],),\n    )\n    row = cursor.fetchone()\n    sio.write(\n        f\"tav = {f2c(-99 if row['avgt'] is None else row['avgt']):.3f} (oC) \"\n        \"! annual average ambient temperature\\n\"\n    )\n\n    # Compute the annual amplitude in temperature\n    cursor.execute(\n        \"\"\"\n        select max(avg) as h, min(avg) as l from\n            (SELECT extract(month from valid) as month, avg((high+low)/2.)\n             from ncei_climate91\n             WHERE station = %s GROUP by month) as foo\n             \"\"\",\n        (nt.sts[station][\"ncei91\"],),\n    )\n    row = cursor.fetchone()\n    if row[\"h\"] is not None:\n        sio.write(\n            f\"amp = {f2c(row['h']) - f2c(row['l']):.3f} (oC) ! \"\n            \"annual amplitude in mean monthly temperature\\n\"\n        )\n\n    sio.write(\n        \"\"\"year        day       radn       maxt       mint      rain\n  ()         ()   (MJ/m^2)       (oC)       (oC)       (mm)\\n\"\"\"\n    )\n\n    cursor.execute(\n        \"\"\"\n        SELECT day, high, low, precip,\n        extract(doy from day) as doy,\n        coalesce(era5land_srad, narr_srad, merra_srad, hrrr_srad) as srad\n        from alldata WHERE station = %s and\n        day >= %s and day <= %s and high is not null and\n        low is not null and precip is not null ORDER by day ASC\n        \"\"\",\n        (station, ctx[\"sts\"], ctx[\"ets\"]),\n    )\n    lastday = ctx[\"sts\"]\n    for row in cursor:\n        lastday = row[\"day\"]\n        srad = -99 if row[\"srad\"] is None else row[\"srad\"]\n        sio.write(\n            (\"%4s %10.0f %10.3f %10.1f %10.1f %10.2f\\n\")\n            % (\n                row[\"day\"].year,\n                int(row[\"doy\"]),\n                srad,\n                f2c(row[\"high\"]),\n                f2c(row[\"low\"]),\n                row[\"precip\"] * 25.4,\n            )\n        )\n\n    if extra:\n        dec31 = date(lastday.year, 12, 31)\n        now = lastday + timedelta(days=1)\n        while now <= dec31:\n            row = extra.get(now)\n            if row is None:\n                raise IncompleteWebRequest(\"Missing data for scenario year!\")\n            srad = -99 if row[\"srad\"] is None else row[\"srad\"]\n            sio.write(\n                (\"%4s %10.0f %10.3f %10.1f %10.1f %10.2f\\n\")\n                % (\n                    now.year,\n                    int(row[\"doy\"]),\n                    srad,\n                    f2c(row[\"high\"]),\n                    f2c(row[\"low\"]),\n                    row[\"precip\"] * 25.4,\n                )\n            )\n            now += timedelta(days=1)\n    return sio.getvalue().encode(\"ascii\")\n\n\ndef do_century(cursor, ctx):\n    \"\"\"Materialize the data in Century Format\n    * Century format  (precip cm, avg high C, avg low C)\n    prec  1980   2.60   6.40   0.90   1.00   0.70   0.00\n    tmin  1980  14.66  12.10   7.33  -0.89  -5.45  -7.29\n    tmax  1980  33.24  30.50  27.00  18.37  11.35   9.90\n    prec  1981  12.00   7.20   0.60   4.90   1.10   0.30\n    tmin  1981  14.32  12.48   8.17   0.92  -3.25  -8.90\n    tmax  1981  30.84  28.71  27.02  16.84  12.88   6.82\n    \"\"\"\n    if len(ctx[\"stations\"]) > 1:\n        return (\n            \"ERROR: Century output is only \"\n            \"permitted for one station at a time.\"\n        ).encode(\"ascii\")\n\n    station = ctx[\"stations\"][0]\n    nt = NetworkTable(f\"{station[:2]}CLIMATE\", only_online=False)\n    if station not in nt.sts:\n        raise IncompleteWebRequest(\"Unknown station provided\")\n\n    # Automatically set dates to start and end of year to make output clean\n    sts = date(ctx[\"sts\"].year, 1, 1)\n    ets = date(ctx[\"ets\"].year, 12, 31)\n    if ets >= date.today():\n        ets = date.today() - timedelta(days=1)\n\n    thisyear = datetime.now().year\n    cursor.execute(\n        f\"\"\"\n    WITH scenario as (\n        SELECT {thisyear}::int as year, month, high, low, precip\n        from alldata\n        WHERE station = %s and day > %s and day <= %s and sday != '0229'\n    ), obs as (\n      select year, month, high, low, precip from alldata\n      WHERE station = %s and day >= %s and day <= %s\n    ), data as (\n      SELECT * from obs UNION select * from scenario\n    )\n\n    SELECT year, month, avg(high) as tmax, avg(low) as tmin,\n    sum(precip) as prec from data where high is not null and low is not null\n    and precip is not null GROUP by year, month\n    \"\"\",\n        (station, ctx[\"scenario_sts\"], ctx[\"scenario_ets\"], station, sts, ets),\n    )\n    data = {}\n    for row in cursor:\n        if row[\"year\"] not in data:\n            data[row[\"year\"]] = {}\n            for mo in range(1, 13):\n                data[row[\"year\"]][mo] = {\"prec\": -99, \"tmin\": -99, \"tmax\": -99}\n\n        data[row[\"year\"]][row[\"month\"]] = {\n            \"prec\": (row[\"prec\"] * units(\"inch\")).to(units(\"mm\")).m,\n            \"tmin\": f2c(float(row[\"tmin\"])),\n            \"tmax\": f2c(float(row[\"tmax\"])),\n        }\n    sio = StringIO()\n    sio.write(\"# Iowa Environmental Mesonet -- NWS Cooperative Data\\n\")\n    sio.write(f\"# Created: {utc():%d %b %Y %H:%M:%S} UTC\\n\")\n    sio.write(\"# Contact: daryl herzmann akrherz@iastate.edu 515-294-5978\\n\")\n    sio.write(\"# Station: %s %s\\n\" % (station, nt.sts[station][\"name\"]))\n    sio.write(\"# Data Period: %s - %s\\n\" % (sts, ets))\n    if ctx[\"scenario\"]:\n        sio.write(\n            \"# !SCENARIO DATA! inserted after: %s replicating year: %s\\n\"\n            % (ctx[\"ets\"], ctx[\"scenario_year\"])\n        )\n    idxs = [\"prec\", \"tmin\", \"tmax\"]\n    for year in range(sts.year, ets.year + 1):\n        if year not in data:\n            continue\n        for idx in idxs:\n            sio.write(\n                (\n                    \"%s  %s%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f%7.2f\"\n                    \"%7.2f%7.2f%7.2f%7.2f%7.2f\\n\"\n                )\n                % (\n                    idx,\n                    year,\n                    data[year][1][idx],\n                    data[year][2][idx],\n                    data[year][3][idx],\n                    data[year][4][idx],\n                    data[year][5][idx],\n                    data[year][6][idx],\n                    data[year][7][idx],\n                    data[year][8][idx],\n                    data[year][9][idx],\n                    data[year][10][idx],\n                    data[year][11][idx],\n                    data[year][12][idx],\n                )\n            )\n    return sio.getvalue().encode(\"ascii\")\n\n\ndef do_daycent(cursor, ctx):\n    \"\"\"Materialize data for daycent\n\n    Daily Weather Data File (use extra weather drivers = 0):\n    > 1 1 1990 1 7.040 -10.300 0.000\n\n    NOTES:\n    Column 1 - Day of month, 1-31\n    Column 2 - Month of year, 1-12\n    Column 3 - Year\n    Column 4 - Day of the year, 1-366\n    Column 5 - Maximum temperature for day, degrees C\n    Column 6 - Minimum temperature for day, degrees C\n    Column 7 - Precipitation for day, centimeters\n    \"\"\"\n    if len(ctx[\"stations\"]) > 1:\n        return (\n            \"ERROR: Daycent output is only \"\n            \"permitted for one station at a time.\"\n        ).encode(\"ascii\")\n\n    extra = {}\n    thisyear = ctx[\"ets\"].year\n    if ctx[\"scenario\"]:\n        sts = datetime(int(ctx[\"scenario_year\"]), 1, 1)\n        ets = datetime(int(ctx[\"scenario_year\"]), 12, 31)\n        febtest = date(thisyear, 3, 1) - timedelta(days=1)\n        sdaylimit = \"\"\n        if febtest.day == 28:\n            sdaylimit = \" and sday != '0229'\"\n        cursor.execute(\n            f\"\"\"\n            SELECT day, high, low, precip\n            from alldata WHERE station = %s\n            and day >= %s and day <= %s {sdaylimit} and high is not null\n            and low is not null and precip is not null\n            \"\"\",\n            (ctx[\"stations\"][0], sts, ets),\n        )\n        for row in cursor:\n            ts = row[\"day\"].replace(year=thisyear)\n            extra[ts] = row\n        if febtest not in extra:\n            feb28 = date(thisyear, 2, 28)\n            if feb28 in extra:\n                extra[febtest] = extra[feb28]\n    cursor.execute(\n        \"\"\"\n        SELECT day, high, low, precip,\n        extract(doy from day) as doy\n        from alldata WHERE station = %s\n        and day >= %s and day <= %s and high is not null and low is not null\n        and precip is not null ORDER by day ASC\n    \"\"\",\n        (ctx[\"stations\"][0], ctx[\"sts\"], ctx[\"ets\"]),\n    )\n    sio = StringIO()\n    sio.write(\"Daily Weather Data File (use extra weather drivers = 0):\\n\\n\")\n    lastday = ctx[\"sts\"]\n    for row in cursor:\n        lastday = row[\"day\"]\n        sio.write(\n            (\"%s %s %s %s %.2f %.2f %.2f\\n\")\n            % (\n                row[\"day\"].day,\n                row[\"day\"].month,\n                row[\"day\"].year,\n                int(row[\"doy\"]),\n                f2c(row[\"high\"]),\n                f2c(row[\"low\"]),\n                (row[\"precip\"] * units(\"inch\")).to(units(\"cm\")).m,\n            )\n        )\n    if extra:\n        dec31 = date(lastday.year, 12, 31)\n        now = lastday + timedelta(days=1)\n        while now <= dec31:\n            row = extra[now]\n            sio.write(\n                (\"%s %s %s %s %.2f %.2f %.2f\\n\")\n                % (\n                    now.day,\n                    now.month,\n                    now.year,\n                    int(now.strftime(\"%j\")),\n                    f2c(row[\"high\"]),\n                    f2c(row[\"low\"]),\n                    (row[\"precip\"] * units(\"inch\")).to(units(\"cm\")).m,\n                )\n            )\n            now += timedelta(days=1)\n    return sio.getvalue().encode(\"ascii\")\n\n\ndef do_simple(cursor, ctx):\n    \"\"\"Generate Simple output\"\"\"\n\n    table = get_tablename(ctx[\"stations\"])\n\n    nt = get_stationtable(ctx[\"stations\"])\n    thisyear = ctx[\"ets\"].year\n\n    limitrowcount = \"LIMIT 1048000\" if ctx[\"what\"] == \"excel\" else \"\"\n    sql = f\"\"\"\n    WITH scenario as (\n        SELECT station, high, low, precip, snow, snowd, narr_srad,\n        era5land_srad, temp_estimated, precip_estimated, power_srad,\n        era5land_soilt4_avg, era5land_soilm4_avg, era5land_soilm1m_avg,\n        nldas_soilt4_avg, nldas_soilm4_avg, nldas_soilm1m_avg,\n        merra_srad, hrrr_srad,\n        to_char(('{thisyear}-'||month||'-'||extract(day from day))::date,\n        'YYYY/mm/dd') as day,\n        extract(doy from day) as doy,\n        gddxx(50, 86, high, low) as gdd_50_86,\n        gddxx(40, 86, high, low) as gdd_40_86,\n        round((5.0/9.0 * (high - 32.0))::numeric,1) as highc,\n        round((5.0/9.0 * (low - 32.0))::numeric,1) as lowc,\n        round((precip * 25.4)::numeric,1) as precipmm\n        from {table} WHERE\n        station = ANY(%s) and\n        day >= %s and day <= %s\n    ), obs as (\n        SELECT station, high, low, precip, snow, snowd, narr_srad,\n        era5land_srad, temp_estimated, precip_estimated, power_srad,\n        era5land_soilt4_avg, era5land_soilm4_avg, era5land_soilm1m_avg,\n        nldas_soilt4_avg, nldas_soilm4_avg, nldas_soilm1m_avg,\n        merra_srad, hrrr_srad,\n        to_char(day, 'YYYY/mm/dd') as day,\n        extract(doy from day) as doy,\n        gddxx(50, 86, high, low) as gdd_50_86,\n        gddxx(40, 86, high, low) as gdd_40_86,\n        round((5.0/9.0 * (high - 32.0))::numeric,1) as highc,\n        round((5.0/9.0 * (low - 32.0))::numeric,1) as lowc,\n        round((precip * 25.4)::numeric,1) as precipmm\n        from {table} WHERE station = ANY(%s) and\n        day >= %s and day <= %s\n    ), total as (\n        SELECT * from obs UNION SELECT * from scenario\n    )\n\n    SELECT * from total ORDER by day ASC {limitrowcount}\"\"\"\n    args = (\n        ctx[\"stations\"],\n        ctx[\"scenario_sts\"],\n        ctx[\"scenario_ets\"],\n        ctx[\"stations\"],\n        ctx[\"sts\"],\n        ctx[\"ets\"],\n    )\n\n    cols = [\"station\", \"station_name\", \"day\", \"doy\"]\n    if ctx[\"inclatlon\"]:\n        cols.insert(2, \"lat\")\n        cols.insert(3, \"lon\")\n\n    cols = cols + ctx[\"myvars\"]\n\n    if ctx[\"what\"] == \"excel\":\n        # Do the excel logic\n        with get_sqlalchemy_conn(\"coop\") as conn:\n            df = pd.read_sql(sql, conn, params=args)\n        # Convert day into a python date type\n        df[\"day\"] = pd.to_datetime(df[\"day\"]).dt.date\n\n        def _gs(x, y):\n            return nt.sts[x][y]\n\n        df[\"station_name\"] = [_gs(x, \"name\") for x in df[\"station\"]]\n        if \"lat\" in cols:\n            df[\"lat\"] = [_gs(x, \"lat\") for x in df[\"station\"]]\n            df[\"lon\"] = [_gs(x, \"lon\") for x in df[\"station\"]]\n        bio = BytesIO()\n        # Cull any cols not in the dataframe\n        cols = [c for c in cols if c in df.columns]\n        df.to_excel(bio, columns=cols, index=False, engine=\"openpyxl\")\n        return bio.getvalue()\n\n    cursor.execute(sql, args)\n    sio = StringIO()\n    if ctx[\"with_header\"]:\n        sio.write(\"# Iowa Environmental Mesonet -- NWS Cooperative Data\\n\")\n        sio.write(f\"# Created: {utc():%d %b %Y %H:%M:%S} UTC\\n\")\n        sio.write(\n            \"# Contact: daryl herzmann akrherz@iastate.edu 515-294-5978\\n\"\n        )\n        sio.write(f\"# Data Period: {ctx['sts']} - {ctx['ets']}\\n\")\n        if ctx[\"scenario\"]:\n            sio.write(\n                \"# !SCENARIO DATA! inserted after: %s replicating year: %s\\n\"\n                % (ctx[\"ets\"], ctx[\"scenario_year\"])\n            )\n\n    p = {\"comma\": \",\", \"tab\": \"\\t\", \"space\": \" \"}\n    d = p[ctx[\"delim\"]]\n    sio.write(d.join(cols) + \"\\r\\n\")\n\n    for row in cursor:\n        sid = row[\"station\"]\n        dc = row.copy()\n        dc[\"station_name\"] = nt.sts[sid][\"name\"]\n        dc[\"lat\"] = \"%.4f\" % (nt.sts[sid][\"lat\"],)\n        dc[\"lon\"] = \"%.4f\" % (nt.sts[sid][\"lon\"],)\n        dc[\"doy\"] = \"%.0f\" % (dc[\"doy\"],)\n        res = [str(dc[n]) for n in cols if n in dc]\n        sio.write((d.join(res)).replace(\"None\", \"M\") + \"\\r\\n\")\n    return sio.getvalue().encode(\"ascii\")\n\n\ndef do_salus(cursor, ctx):\n    \"\"\"Generate SALUS\n    StationID, Year, DOY, SRAD, Tmax, Tmin, Rain, DewP, Wind, Par, dbnum\n    CTRL, 1981, 1, 5.62203, 2.79032, -3.53361, 5.43766, NaN, NaN, NaN, 2\n    CTRL, 1981, 2, 3.1898, 1.59032, -6.83361, 1.38607, NaN, NaN, NaN, 3\n    \"\"\"\n    if len(ctx[\"stations\"]) > 1:\n        return (\n            \"ERROR: SALUS output is only permitted for one station at a time.\"\n        ).encode(\"ascii\")\n\n    scenario_year = 2030\n    asts = date(2030, 1, 1)\n    if ctx[\"scenario\"]:\n        # Tricky!\n        scenario_year = ctx[\"scenario_year\"]\n        today = date.today()\n        asts = date(scenario_year, today.month, today.day)\n\n    table = get_tablename(ctx[\"stations\"])\n    station = ctx[\"stations\"][0]\n    thisyear = datetime.now().year\n    cursor.execute(\n        f\"\"\"\n    WITH scenario as (\n        SELECT\n ('{thisyear}-'||month||'-'||extract(day from day))::date\n    as day,\n        high, low, precip, station,\n        coalesce(era5land_srad, narr_srad, merra_srad, hrrr_srad) as srad\n        from {table} WHERE station = %s and\n        day >= %s and year = %s\n    ), obs as (\n        SELECT day,\n        high, low, precip,  station,\n        coalesce(era5land_srad, narr_srad, merra_srad, hrrr_srad) as srad\n        from {table} WHERE station = %s and\n        day >= %s and day <= %s ORDER by day ASC\n    ), total as (\n        SELECT *, extract(doy from day) as doy from obs\n        UNION SELECT *, extract(doy from day) as doy from scenario\n    )\n\n    SELECT * from total where high is not null and low is not null and\n    precip is not null ORDER by day ASC\n    \"\"\",\n        (station, asts, scenario_year, station, ctx[\"sts\"], ctx[\"ets\"]),\n    )\n    sio = StringIO()\n    sio.write(\n        \"StationID, Year, DOY, SRAD, Tmax, Tmin, Rain, DewP, \"\n        \"Wind, Par, dbnum\\n\"\n    )\n    for i, row in enumerate(cursor):\n        srad = -99 if row[\"srad\"] is None else row[\"srad\"]\n        sio.write(\n            (\"%s, %s, %s, %.4f, %.2f, %.2f, %.2f, , , , %s\\n\")\n            % (\n                station[:4],\n                row[\"day\"].year,\n                int(row[\"doy\"]),\n                srad,\n                f2c(row[\"high\"]),\n                f2c(row[\"low\"]),\n                row[\"precip\"] * 25.4,\n                i + 2,\n            )\n        )\n    return sio.getvalue().encode(\"ascii\")\n\n\ndef do_dndc(cursor, ctx):\n    \"\"\"Process DNDC\n    * One file per year! named StationName / StationName_YYYY.txt\n    * julian day, tmax C , tmin C, precip cm seperated by space\n    \"\"\"\n\n    table = get_tablename(ctx[\"stations\"])\n\n    nt = get_stationtable(ctx[\"stations\"])\n\n    scenario_year = 2030\n    asts = date(2030, 1, 1)\n    if ctx[\"scenario\"]:\n        # Tricky!\n        scenario_year = ctx[\"scenario_year\"]\n        today = date.today()\n        asts = date(scenario_year, today.month, today.day)\n\n    thisyear = datetime.now().year\n    cursor.execute(\n        f\"\"\"\n        WITH scenario as (\n            SELECT\n    ('{thisyear}-'||month||'-'||extract(day from day))::date as day,\n            high, low, precip, station from {table}\n            WHERE station = ANY(%s) and day >= %s and year = %s),\n        obs as (\n            SELECT day, high, low, precip, station from {table}\n            WHERE station = ANY(%s) and day >= %s and day <= %s),\n        total as (\n            SELECT *, extract(doy from day) as doy from obs UNION\n            SELECT *, extract(doy from day) as doy from scenario\n        )\n        SELECT * from total where high is not null and low is not null\n        and precip is not null ORDER by day ASC\n    \"\"\",\n        (\n            ctx[\"stations\"],\n            asts,\n            scenario_year,\n            ctx[\"stations\"],\n            ctx[\"sts\"],\n            ctx[\"ets\"],\n        ),\n    )\n    zipfiles = {}\n    for row in cursor:\n        station = row[\"station\"]\n        sname = nt.sts[station][\"name\"].replace(\" \", \"_\")\n        fn = f\"{sname}/{sname}_{row['day'].year}.txt\"\n        if fn not in zipfiles:\n            zipfiles[fn] = \"\"\n        zipfiles[fn] += (\"%s %.2f %.2f %.2f\\n\") % (\n            int(row[\"doy\"]),\n            f2c(row[\"high\"]),\n            f2c(row[\"low\"]),\n            row[\"precip\"] * 2.54,\n        )\n\n    sio = BytesIO()\n    with ZipFile(sio, \"a\") as zf:\n        for fn, fp in zipfiles.items():\n            zf.writestr(fn, fp)\n    return sio.getvalue()\n\n\ndef do_swat(_cursor, ctx):\n    \"\"\"SWAT\n\n    Two files, one for precip [mm] and one for hi and low temperature [C]\n    \"\"\"\n    table = get_tablename(ctx[\"stations\"])\n\n    scenario_year = 2030\n    asts = date(2030, 1, 1)\n    if ctx[\"scenario\"]:\n        # Tricky!\n        scenario_year = ctx[\"scenario_year\"]\n        today = date.today()\n        asts = date(scenario_year, today.month, today.day)\n\n    thisyear = datetime.now().year\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            WITH scenario as (\n                SELECT\n                ('{thisyear}-'||month||'-'||extract(day from day))::date\n                    as day, high, low, precip, station from {table}\n                WHERE station = ANY(:sids) and\n                day >= :asts and year = :scenario_year and\n                high is not null and low is not null),\n            obs as (\n                SELECT day, high, low, precip, station from {table}\n                WHERE station = ANY(:sids) and day >= :sts and day <= :ets\n                and high is not null and low is not null),\n            total as (\n                SELECT *, extract(doy from day) as doy from obs UNION\n                SELECT *, extract(doy from day) as doy from scenario\n            )\n            SELECT * from total ORDER by day ASC\n        \"\"\",\n                thisyear=str(thisyear),\n                table=table,\n            ),\n            conn,\n            params={\n                \"sids\": ctx[\"stations\"],\n                \"asts\": asts,\n                \"scenario_year\": scenario_year,\n                \"sts\": ctx[\"sts\"],\n                \"ets\": ctx[\"ets\"],\n            },\n            index_col=None,\n        )\n    df[\"tmax\"] = f2c(df[\"high\"].values)\n    df[\"tmin\"] = f2c(df[\"low\"].values)\n    df[\"pcpn\"] = (df[\"precip\"].values * units(\"inch\")).to(units(\"mm\")).m\n    zipfiles = {}\n    for station, df2 in df.groupby(by=\"station\"):\n        pcpfn = f\"swatfiles/{station}.pcp\"\n        tmpfn = f\"swatfiles/{station}.tmp\"\n        zipfiles[pcpfn] = \"IEM COOP %s\\n\\n\\n\\n\" % (station,)\n        zipfiles[tmpfn] = \"IEM COOP %s\\n\\n\\n\\n\" % (station,)\n        for _i, row in df2.iterrows():\n            zipfiles[pcpfn] += \"%s%03i%5.1f\\n\" % (\n                row[\"day\"].year,\n                row[\"doy\"],\n                row[\"pcpn\"],\n            )\n            zipfiles[tmpfn] += (\"%s%03i%5.1f%5.1f\\n\") % (\n                row[\"day\"].year,\n                row[\"doy\"],\n                row[\"tmax\"],\n                row[\"tmin\"],\n            )\n    sio = BytesIO()\n    with ZipFile(sio, \"a\") as zf:\n        for fn, fp in zipfiles.items():\n            zf.writestr(fn, fp)\n    return sio.getvalue()\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"go main go\"\"\"\n    ctx = {}\n    ctx[\"stations\"] = get_cgi_stations(environ)\n    if not ctx[\"stations\"]:\n        raise IncompleteWebRequest(\"No stations were specified.\")\n    ctx[\"sts\"], ctx[\"ets\"] = get_cgi_dates(environ)\n    ctx[\"myvars\"] = environ[\"vars\"]\n    # Model specification trumps vars[]\n    if environ[\"model\"] is not None:\n        ctx[\"myvars\"] = [environ[\"model\"]]\n    ctx[\"what\"] = environ[\"what\"]\n    ctx[\"delim\"] = environ[\"delim\"]\n    ctx[\"inclatlon\"] = environ[\"gis\"]\n    ctx[\"scenario\"] = environ[\"scenario\"]\n    ctx[\"scenario_year\"] = 2099\n    if ctx[\"scenario\"]:\n        ctx[\"scenario_year\"] = environ[\"scenario_year\"]\n    ctx[\"scenario_sts\"], ctx[\"scenario_ets\"] = get_scenario_period(ctx)\n    ctx[\"with_header\"] = environ[\"with_header\"]\n\n    # TODO: this code stinks and is likely buggy\n    headers = []\n    if (\n        \"apsim\" in ctx[\"myvars\"]\n        or \"daycent\" in ctx[\"myvars\"]\n        or \"century\" in ctx[\"myvars\"]\n        or \"salus\" in ctx[\"myvars\"]\n    ):\n        if ctx[\"what\"] == \"download\":\n            headers.append((\"Content-type\", \"application/octet-stream\"))\n            headers.append(\n                (\"Content-Disposition\", \"attachment; filename=metdata.txt\")\n            )\n        else:\n            headers.append((\"Content-type\", \"text/plain\"))\n    elif \"dndc\" not in ctx[\"myvars\"] and ctx[\"what\"] != \"excel\":\n        if ctx[\"what\"] == \"download\":\n            headers.append((\"Content-type\", \"application/octet-stream\"))\n            dlfn = \"changeme.txt\"\n            if len(ctx[\"stations\"]) < 10:\n                dlfn = f\"{'_'.join(ctx['stations'])}.txt\"\n            headers.append(\n                (\"Content-Disposition\", f\"attachment; filename={dlfn}\")\n            )\n        else:\n            headers.append((\"Content-type\", \"text/plain\"))\n    elif \"dndc\" in ctx[\"myvars\"]:\n        headers.append((\"Content-type\", \"application/octet-stream\"))\n        headers.append(\n            (\"Content-Disposition\", \"attachment; filename=dndc.zip\")\n        )\n    elif \"swat\" in ctx[\"myvars\"]:\n        headers.append((\"Content-type\", \"application/octet-stream\"))\n        headers.append(\n            (\"Content-Disposition\", \"attachment; filename=swatfiles.zip\")\n        )\n    elif ctx[\"what\"] == \"excel\":\n        headers.append((\"Content-type\", EXL))\n        headers.append(\n            (\"Content-Disposition\", \"attachment; filename=nwscoop.xlsx\")\n        )\n\n    conn, cursor = get_dbconnc(\"coop\")\n    start_response(\"200 OK\", headers)\n    # OK, now we fret\n    if \"daycent\" in ctx[\"myvars\"]:\n        res = do_daycent(cursor, ctx)\n    elif \"century\" in ctx[\"myvars\"]:\n        res = do_century(cursor, ctx)\n    elif \"apsim\" in ctx[\"myvars\"]:\n        res = do_apsim(cursor, ctx)\n    elif \"dndc\" in ctx[\"myvars\"]:\n        res = do_dndc(cursor, ctx)\n    elif \"salus\" in ctx[\"myvars\"]:\n        res = do_salus(cursor, ctx)\n    elif \"swat\" in ctx[\"myvars\"]:\n        res = do_swat(None, ctx)\n    else:\n        res = do_simple(cursor, ctx)\n    cursor.close()\n    conn.close()\n    return [res]\n"
  },
  {
    "path": "pylib/iemweb/request/coopobs.py",
    "content": "\"\"\".. title:: NWS COOP Observations Download\n\nReturn to `API Services </api/#cgi>`_.  This service is the backend for the\n`COOP Obs Download </request/coop/obs-fe.phtml>`_ frontend.\n\nDocumentation for /cgi-bin/request/coopobs.py\n---------------------------------------------\n\nThis service emits the raw COOP observations without much IEM processing. If\nyou request `_ALL` stations for a state or more than 10 stations, you are\nlimited to one calendar year of data.\n\nChangelog\n---------\n\n- 2025-02-22: Initial implementation\n\nExample Usage\n-------------\n\nFetch the COOP observations for Iowa on 22 October 2024 in CSV format:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/coopobs.py?\\\nnetwork=IA_COOP&stations=_ALL&sts=2024-10-22\\\n&ets=2024-10-22&what=download&delim=comma\n\nSame request, but view the data instead of downloading it:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/coopobs.py?\\\nnetwork=IA_COOP&stations=_ALL&sts=2024-10-22\\\n&ets=2024-10-22&what=view&delim=comma\n\nDownload the COOP observations for Ames, IA on 22 October 2024 in CSV format:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/coopobs.py?\\\nnetwork=IA_COOP&stations=AESI4&sts=2024-10-22&ets=2024-10-22&what=download\\\n&delim=comma\n\n\"\"\"\n\nfrom datetime import date\nfrom io import StringIO\n\nfrom pydantic import Field\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import (\n    DAY_OF_MONTH_FIELD_OPTIONAL,\n    NETWORK_FIELD,\n    STATION_LIST_FIELD,\n)\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    delim: str = Field(\n        \"comma\",\n        description=(\n            \"The delimiter to use in the output file.  \"\n            \"Options: comma, tab, space\"\n        ),\n        pattern=\"^(comma|tab|space)$\",\n    )\n    network: NETWORK_FIELD\n    stations: STATION_LIST_FIELD\n    what: str = Field(\"view\", description=\"The type of output to generate.\")\n    sts: date = Field(\n        None,\n        description=\"The starting date for the data request.\",\n    )\n    ets: date = Field(\n        None,\n        description=\"The ending date for the data request.\",\n    )\n    year1: int = Field(\n        None,\n        description=\"The starting year for the data request.\",\n    )\n    month1: int = Field(\n        None,\n        description=\"The starting month for the data request.\",\n    )\n    day1: DAY_OF_MONTH_FIELD_OPTIONAL = None\n    year2: int = Field(\n        None,\n        description=\"The ending year for the data request.\",\n    )\n    month2: int = Field(\n        None,\n        description=\"The ending month for the data request.\",\n    )\n    day2: DAY_OF_MONTH_FIELD_OPTIONAL = None\n\n\ndef get_cgi_stations(environ):\n    \"\"\"Figure out which stations the user wants, return a list of them\"\"\"\n    reqlist = environ[\"stations\"]\n    if \"_ALL\" in reqlist:\n        nt = NetworkTable(environ[\"network\"], only_online=False)\n        return list(nt.sts.keys())\n\n    return reqlist\n\n\n@with_sqlalchemy_conn(\"iem\")\ndef do_simple(ctx, conn=None):\n    \"\"\"Generate Simple output\"\"\"\n    res = conn.execute(\n        sql_helper(\n            \"\"\"\n SELECT s.*,t.id, day,\n coalesce(to_char(coop_valid at time zone t.tzname, 'HH PM'), '') as cv\n from summary s JOIN stations t on (t.iemid = s.iemid)\n WHERE day >= :sts and day <= :ets\n and id = ANY(:stations) and network = :network ORDER by s.day ASC\"\"\"\n        ),\n        {\n            \"stations\": ctx[\"stations\"],\n            \"sts\": ctx[\"sts\"],\n            \"ets\": ctx[\"ets\"],\n            \"network\": ctx[\"network\"],\n        },\n    )\n    p = {\"comma\": \",\", \"tab\": \"\\t\", \"space\": \" \"}\n    d = p[ctx[\"delim\"]]\n    cols = [\n        \"nwsli\",\n        \"date\",\n        \"time\",\n        \"high_F\",\n        \"low_F\",\n        \"precip\",\n        \"snow_inch\",\n        \"snowd_inch\",\n    ]\n    with StringIO() as sio:\n        sio.write(d.join(cols) + \"\\n\")\n        for row in res.mappings():\n            sio.write(row[\"id\"] + d)\n            sio.write(row[\"day\"].strftime(\"%Y-%m-%d\") + d)\n            sio.write(row[\"cv\"] + d)\n            sio.write(f\"{row['max_tmpf']}{d}\")\n            sio.write(f\"{row['min_tmpf']}{d}\")\n            sio.write(f\"{row['pday']}{d}\")\n            sio.write(f\"{row['snow']}{d}\")\n            sio.write(f\"{row['snowd']}\\n\")\n        return sio.getvalue().replace(\"None\", \"\").encode(\"ascii\")\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"go main go\"\"\"\n    if environ[\"ets\"] is None or environ[\"sts\"] is None:\n        raise IncompleteWebRequest(\"Missing start or end date\")\n    environ[\"stations\"] = get_cgi_stations(environ)\n    if (\n        len(environ[\"stations\"]) > 10\n        and (environ[\"ets\"] - environ[\"sts\"]).days > 366\n    ):\n        raise IncompleteWebRequest(\n            \"Limited to less than 1 year when requesting 10+ stations.\"\n        )\n\n    headers = [(\"Content-type\", \"text/plain\")]\n    if environ[\"what\"] == \"download\":\n        headers.append(\n            (\"Content-Disposition\", \"attachment; filename=coop.txt\")\n        )\n\n    start_response(\"200 OK\", headers)\n    res = do_simple(environ)\n    return [res]\n"
  },
  {
    "path": "pylib/iemweb/request/daily.py",
    "content": "\"\"\".. title:: IEM Computed Daily Summaries\n\nReturn to `API Services </api/#cgi>`_\n\nDocumentation for /cgi-bin/request/daily.py\n-------------------------------------------\n\nThis data source contains a combination of IEM computed calendar day summaries\nand some more official totals with some sites reporting explicit values.  One\nshould also note that typically the airport stations are for a 24 hour period\nover standard time, which means 1 AM to 1 AM daylight time.\n\nChangelog\n---------\n\n- 2026-02-26: Address issue with non-ASCII characters breaking service (GIGO).\n\nExample Usage\n-------------\n\nRequest all high temperature data for Ames, IA (AMW) for the month of January\n2019:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/daily.py?\\\nsts=2019-01-01&ets=2019-01-31&network=IA_ASOS&stations=AMW&\\\nvar=max_temp_f&format=csv\n\n\nRequest daily precipitation and the climatology for all stations in Washington\nstate on 23 June 2023 in Excel format:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/daily.py?\\\nsts=2023-06-23&ets=2023-06-23&network=WA_ASOS&stations=_ALL&\\\nvar=precip_in,climo_precip_in&format=excel\n\n\"\"\"\n\nimport copy\nfrom datetime import datetime\nfrom io import BytesIO, StringIO\nfrom typing import Annotated\n\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nfrom iemweb import error_log\nfrom iemweb.fields import DAY_OF_MONTH_FIELD_OPTIONAL, NETWORK_FIELD\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\nDEFAULT_COLS = (\n    \"max_temp_f,min_temp_f,max_dewpoint_f,min_dewpoint_f,precip_in,\"\n    \"avg_wind_speed_kts,avg_wind_drct,min_rh,avg_rh,max_rh,\"\n    \"climo_high_f,climo_low_f,climo_precip_in,snow_in,snowd_in,\"\n    \"min_feel,avg_feel,max_feel,max_wind_speed_kts,max_wind_gust_kts,\"\n    \"srad_mj\"\n).split(\",\")\n\n\nclass MyCGI(CGIModel):\n    ets: Annotated[datetime | None, Field(description=\"End date to query\")] = (\n        None\n    )\n    format: Annotated[str, Field(description=\"The format of the output\")] = (\n        \"csv\"\n    )\n    na: Annotated[str, Field(description=\"The NA value to use\")] = \"None\"\n    network: NETWORK_FIELD\n    station: Annotated[\n        ListOrCSVType,\n        Field(\n            description=(\n                \"Comma delimited or multi-param station identifiers, _ALL \"\n                \"for all stations in network (deprecated)\"\n            ),\n            default_factory=list,\n        ),\n    ]\n    stations: Annotated[\n        ListOrCSVType,\n        Field(\n            description=(\n                \"Comma delimited or multi-param station identifiers, _ALL \"\n                \"for all stations in network\"\n            ),\n            default_factory=list,\n        ),\n    ]\n    sts: Annotated[\n        datetime | None, Field(description=\"Start date to query\")\n    ] = None\n    var: Annotated[\n        ListOrCSVType | None,\n        Field(\n            description=(\n                \"Comma delimited or multi-param variable names to include in \"\n                f\"output, columns are: {DEFAULT_COLS}\"\n            ),\n        ),\n    ] = None\n    year1: Annotated[\n        int | None, Field(description=\"Start year when sts is not provided\")\n    ] = None\n    month1: Annotated[\n        int | None, Field(description=\"Start month when sts is not provided\")\n    ] = None\n    day1: DAY_OF_MONTH_FIELD_OPTIONAL = None\n    year2: Annotated[\n        int | None, Field(description=\"End year when ets is not provided\")\n    ] = None\n    month2: Annotated[\n        int | None, Field(description=\"End month when ets is not provided\")\n    ] = None\n    day2: DAY_OF_MONTH_FIELD_OPTIONAL = None\n\n\ndef overloaded(environ: dict):\n    \"\"\"Prevent automation from overwhelming the server\"\"\"\n\n    with get_dbconn(\"iem\") as pgconn:\n        cursor = pgconn.cursor()\n        cursor.execute(\"select one::float from system_loadavg\")\n        val = cursor.fetchone()[0]\n    if val > 25:  # Cut back on logging\n        error_log(environ, f\"/cgi-bin/request/daily.py over cpu thres: {val}\")\n    return val > 20\n\n\ndef get_climate(network, stations):\n    \"\"\"Fetch the climatology for these stations\"\"\"\n    nt = NetworkTable(network, only_online=False)\n    if not nt.sts:\n        return \"ERROR: Invalid network specified\"\n    clisites = []\n    for station in stations:\n        if station == \"_ALL\":\n            for sid in nt.sts:\n                clid = nt.sts[sid][\"ncei91\"]\n                if clid not in clisites:\n                    clisites.append(clid)\n            break\n        if station not in nt.sts:\n            return f\"ERROR: station: {station} not found in network: {network}\"\n        clid = nt.sts[station][\"ncei91\"]\n        if clid not in clisites:\n            clisites.append(clid)\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT station, to_char(valid, 'mmdd') as sday,\n            high as climo_high_f, low as climo_low_f,\n            precip as climo_precip_in from ncei_climate91\n            where station = ANY(:clisites)\n            \"\"\"\n            ),\n            conn,\n            params={\"clisites\": clisites},\n        )\n    return df\n\n\ndef get_data(network, sts, ets, stations, cols, na, fmt):\n    \"\"\"Go fetch data please\"\"\"\n    if not cols:\n        cols = copy.deepcopy(DEFAULT_COLS)\n    cols.insert(0, \"day\")\n    cols.insert(0, \"station\")\n    climate = get_climate(network, stations)\n    if isinstance(climate, str):\n        return climate\n\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT id as station, day, max_tmpf as max_temp_f,\n            min_tmpf as min_temp_f, max_dwpf as max_dewpoint_f,\n            min_dwpf as min_dewpoint_f,\n            pday as precip_in,\n            avg_sknt as avg_wind_speed_kts,\n            vector_avg_drct as avg_wind_drct,\n            min_rh, avg_rh, max_rh,\n            snow as snow_in,\n            snowd as snowd_in,\n            min_feel, avg_feel, max_feel,\n            max_sknt as max_wind_speed_kts,\n            max_gust as max_wind_gust_kts,\n            srad_mj, ncei91, to_char(day, 'mmdd') as sday\n            from summary s JOIN stations t\n            on (t.iemid = s.iemid) WHERE\n            s.day >= :st and s.day <= :et and\n            t.network = :n and t.id = ANY(:ds)\n            ORDER by day ASC\"\"\"\n            ),\n            conn,\n            params={\"st\": sts, \"et\": ets, \"n\": network, \"ds\": stations},\n        )\n    # Join to climate data frame\n    df = df.merge(\n        climate,\n        how=\"left\",\n        left_on=[\"ncei91\", \"sday\"],\n        right_on=[\"station\", \"sday\"],\n        suffixes=(\"\", \"_r\"),\n    )\n    df = df[df.columns.intersection(cols)]\n    if na != \"blank\":\n        df = df.fillna(na)\n    if fmt == \"json\":\n        return df.to_json(orient=\"records\", date_format=\"iso\")\n    if fmt == \"excel\":\n        bio = BytesIO()\n        with pd.ExcelWriter(bio, engine=\"xlsxwriter\") as writer:\n            df.to_excel(writer, sheet_name=\"Data\", index=False)\n        return bio.getvalue()\n\n    sio = StringIO()\n    df.to_csv(sio, index=False)\n    return sio.getvalue()\n\n\n@iemapp(help=__doc__, schema=MyCGI, parse_times=True)\ndef application(environ, start_response):\n    \"\"\"See how we are called\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"Missing start and end times\")\n    sts, ets = environ[\"sts\"].date(), environ[\"ets\"].date()\n\n    if sts.year != ets.year and overloaded(environ):\n        start_response(\n            \"503 Service Unavailable\", [(\"Content-type\", \"text/plain\")]\n        )\n        return [b\"ERROR: server over capacity, please try later\"]\n\n    fmt = environ.get(\"format\", \"csv\")\n    stations = environ[\"stations\"]\n    if not stations:\n        stations = environ[\"station\"]\n    if not stations:\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return [b\"ERROR: No stations specified for request\"]\n    network = environ[\"network\"][:20]\n    if \"_ALL\" in stations:\n        if (ets - sts).days > 366:\n            raise IncompleteWebRequest(\n                \"Must request a year or less when requesting all stations\"\n            )\n        stations = list(NetworkTable(network, only_online=False).sts.keys())\n    cols = environ[\"var\"]\n    na = environ[\"na\"]\n    if na not in [\"M\", \"None\", \"blank\"]:\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return [b\"ERROR: Invalid `na` value provided. {M, None, blank}\"]\n    if fmt != \"excel\":\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return [\n            get_data(network, sts, ets, stations, cols, na, fmt).encode(\n                \"ascii\",\n                errors=\"ignore\",\n            )\n        ]\n    headers = [\n        (\"Content-type\", EXL),\n        (\"Content-disposition\", \"attachment; Filename=daily.xlsx\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return [get_data(network, sts, ets, stations, cols, na, fmt)]\n"
  },
  {
    "path": "pylib/iemweb/request/feel.py",
    "content": "\"\"\".. title:: ISU FEEL Data Download\n\nUnexciting service that emits data from the ISU FEEL site.\n\nChangelog\n---------\n\n- 2025-04-15: Initial implementation with pydantic validation.\n\nExample Requests\n----------------\n\nProvide the data for 14 April 2025.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/feel.py?\\\nyear1=2025&month1=4&day1=14&year2=2025&month2=4&day2=15\n\n\"\"\"\n\nfrom datetime import datetime\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy.engine import Connection\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    sts: Annotated[\n        datetime | None,\n        Field(\n            description=\"Start Time\",\n        ),\n    ] = None\n    ets: Annotated[\n        datetime | None,\n        Field(\n            description=\"End Time\",\n        ),\n    ] = None\n    year1: int = Field(\n        None,\n        ge=2013,\n        description=\"Start Year\",\n    )\n    month1: int = Field(\n        None,\n        ge=1,\n        le=12,\n        description=\"Start Month\",\n    )\n    day1: int = Field(\n        None,\n        ge=1,\n        le=31,\n        description=\"Start Day\",\n    )\n    year2: int = Field(\n        None,\n        ge=2013,\n        description=\"End Year\",\n    )\n    month2: int = Field(\n        None,\n        ge=1,\n        le=12,\n        description=\"End Month\",\n    )\n    day2: int = Field(\n        None,\n        ge=1,\n        le=31,\n        description=\"End Day\",\n    )\n\n\n@with_sqlalchemy_conn(\"other\")\ndef run(sts, ets, start_response, conn: Connection = None):\n    \"\"\"Get data!\"\"\"\n    params = {\"sts\": sts, \"ets\": ets}\n    sql = (\n        \"SELECT * from feel_data_daily where \"\n        \"valid >= :sts and valid < :ets ORDER by valid ASC\"\n    )\n    df = pd.read_sql(sql_helper(sql), conn, params=params)\n\n    sql = (\n        \"SELECT * from feel_data_hourly where \"\n        \"valid >= :sts and valid < :ets ORDER by valid ASC\"\n    )\n    df2 = pd.read_sql(sql_helper(sql), conn, params=params)\n\n    def fmt(val):\n        \"\"\"Lovely hack.\"\"\"\n        return val.strftime(\"%Y-%m-%d %H:%M\")\n\n    df2[\"valid\"] = df2[\"valid\"].apply(fmt)\n\n    bio = BytesIO()\n    with pd.ExcelWriter(bio, engine=\"openpyxl\") as writer:\n        df.to_excel(writer, sheet_name=\"Daily Data\", index=False)\n        df2.to_excel(writer, sheet_name=\"Hourly Data\", index=False)\n\n    headers = [\n        (\"Content-type\", EXL),\n        (\"Content-disposition\", \"attachment;Filename=feel.xlsx\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return bio.getvalue()\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Get stuff\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"GET parameters for start time missing\")\n\n    return [run(environ[\"sts\"], environ[\"ets\"], start_response)]\n"
  },
  {
    "path": "pylib/iemweb/request/gis/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/request/gis/awc_gairmets.py",
    "content": "\"\"\".. title:: AWC Graphical AIRMETs\n\nDocumentation for /cgi-bin/request/gis/awc_gairmets.py\n------------------------------------------------------\n\nThis service emits the archive of IEM's best attempt at processing graphical\nAIRMETs.\n\nExample Requests\n----------------\n\nProvide all AIRMETs for 10 Aug 2024 as a shapefile or a KML file.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/awc_gairmets.py\\\n?sts=2024-08-10T00:00Z&ets=2024-08-11T00:00Z\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/awc_gairmets.py\\\n?sts=2024-08-10T00:00Z&ets=2024-08-11T00:00Z&format=kml\n\n\"\"\"\n\nimport tempfile\nimport zipfile\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport fiona\nimport geopandas as gpd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, iemapp\n\nfiona.supported_drivers[\"KML\"] = \"rw\"\nPRJFILE = \"/opt/iem/data/gis/meta/4326.prj\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    format: Annotated[str, Field(description=\"Output Format\")] = \"shp\"\n    sts: Annotated[AwareDatetime | None, Field(description=\"Start Time\")] = (\n        None\n    )\n    ets: Annotated[AwareDatetime | None, Field(description=\"End Time\")] = None\n    year1: Annotated[\n        int | None, Field(description=\"Start Year in UTC, when sts not set.\")\n    ] = None\n    month1: Annotated[\n        int | None, Field(description=\"Start Month in UTC, when sts not set.\")\n    ] = None\n    day1: Annotated[\n        int | None, Field(description=\"Start Day in UTC, when sts not set.\")\n    ] = None\n    hour1: Annotated[\n        int | None, Field(description=\"Start Hour in UTC, when sts not set.\")\n    ] = 0\n    minute1: Annotated[\n        int | None, Field(description=\"Start Minute in UTC, when sts not set.\")\n    ] = 0\n    year2: Annotated[\n        int | None, Field(description=\"End Year in UTC, when ets not set.\")\n    ] = None\n    month2: Annotated[\n        int | None, Field(description=\"End Month in UTC, when ets not set.\")\n    ] = None\n    day2: Annotated[\n        int | None, Field(description=\"End Day in UTC, when ets not set.\")\n    ] = None\n    hour2: Annotated[\n        int | None, Field(description=\"End Hour in UTC, when ets not set.\")\n    ] = 0\n    minute2: Annotated[\n        int | None, Field(description=\"End Minute in UTC, when ets not set.\")\n    ] = 0\n\n\ndef run(ctx, start_response):\n    \"\"\"Do something!\"\"\"\n    common = \"at time zone 'UTC', 'YYYY-MM-DD\\\"T\\\"HH24:MI:00\\\"Z\\\"'\"\n    schema = {\n        \"geometry\": \"Polygon\",\n        \"properties\": {\n            \"NAME\": \"str:64\",\n            \"LABEL\": \"str:4\",\n            \"GML_ID\": \"str:32\",\n            \"VALID_AT\": \"str:20\",\n            \"VALID_FM\": \"str:20\",\n            \"VALID_TO\": \"str:20\",\n            \"ISSUTIME\": \"str:20\",\n            \"PROD_ID\": \"str:36\",\n            \"STATUS\": \"str:32\",\n            \"HZTYPE\": \"str:256\",\n            \"WXCOND\": \"str:256\",\n        },\n    }\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = gpd.read_postgis(\n            \"select label, gml_id, \"\n            f\"gml_id  || ' ' || to_char(valid_at {common}) as name, \"\n            f\"to_char(valid_at {common}) as valid_at, \"\n            f\"to_char(valid_from {common}) as valid_fm, \"\n            f\"to_char(valid_to {common}) as valid_to, \"\n            f\"to_char(issuetime {common}) as issutime, \"\n            \"product_id as prod_id, status, hazard_type as hztype, \"\n            \"array_to_string(weather_conditions, ',') as wxcond, geom \"\n            \"from airmets WHERE issuetime >= %s and \"\n            \"issuetime < %s ORDER by valid_at ASC\",\n            conn,\n            params=(\n                ctx[\"sts\"],\n                ctx[\"ets\"],\n            ),\n            geom_col=\"geom\",\n        )\n    if df.empty:\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return b\"ERROR: no results found for your query\"\n    df.columns = [s.upper() if s != \"geom\" else \"geom\" for s in df.columns]\n    fn = f\"airmets_{ctx['sts']:%Y%m%d%H%M}_{ctx['ets']:%Y%m%d%H%M}\"\n    if ctx[\"format\"] == \"kml\":\n        fp = BytesIO()\n        with fiona.Env():\n            df.to_file(fp, driver=\"KML\", NameField=\"NAME\", engine=\"fiona\")\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-Disposition\", f\"attachment; filename={fn}.kml\"),\n        ]\n        start_response(\"200 OK\", headers)\n        return fp.getvalue()\n\n    with tempfile.TemporaryDirectory() as tmpdir:\n        df.to_file(f\"{tmpdir}/{fn}.shp\", schema=schema, engine=\"fiona\")\n\n        zio = BytesIO()\n        with zipfile.ZipFile(\n            zio, mode=\"w\", compression=zipfile.ZIP_DEFLATED\n        ) as zf:\n            with open(PRJFILE, encoding=\"utf-8\") as fh:\n                zf.writestr(f\"{fn}.prj\", fh.read())\n            for suffix in [\"shp\", \"shx\", \"dbf\"]:\n                zf.write(f\"{tmpdir}/{fn}.{suffix}\", f\"{fn}.{suffix}\")\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", f\"attachment; filename={fn}.zip\"),\n    ]\n    start_response(\"200 OK\", headers)\n\n    return zio.getvalue()\n\n\n@iemapp(default_tz=\"UTC\", help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Do something fun!\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"Start and End Time are required!\")\n    return [run(environ, start_response)]\n"
  },
  {
    "path": "pylib/iemweb/request/gis/cwas.py",
    "content": "\"\"\".. title:: CWAS Data Service\n\nReturn to `user frontend </request/gis/cwas.phtml>`_ or\n`API Services </api/#cgi>`_\n\nDocumentation for /cgi-bin/request/gis/cwas.py\n----------------------------------------------\n\nThis service emits Center Weather Advisory (CWA) polygons in either KML or\nShapefile format.\n\nChangelog\n---------\n\n- 2024-10-07: Fix issue whereby `sts` or `ets` were not provided.\n- 2024-08-10: Initital documentation update and usage of pydantic validation.\n\nExample Requests\n----------------\n\nProvide all CWAs for 10 Aug 2024 as a shapefile or a KML file.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/cwas.py\\\n?sts=2024-08-10T00:00Z&ets=2024-08-11T00:00Z\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/cwas.py\\\n?sts=2024-08-10T00:00Z&ets=2024-08-11T00:00Z&format=kml\n\n\"\"\"\n\nimport tempfile\nimport zipfile\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport fiona\nimport geopandas as gpd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, iemapp\n\nfiona.supported_drivers[\"KML\"] = \"rw\"\nPRJFILE = \"/opt/iem/data/gis/meta/4326.prj\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    sts: Annotated[AwareDatetime | None, Field(description=\"Start Time\")] = (\n        None\n    )\n    ets: Annotated[AwareDatetime | None, Field(description=\"End Time\")] = None\n    format: Annotated[\n        str, Field(description=\"Output format, either kml or shp\")\n    ] = \"shp\"\n    year1: int = Field(\n        default=None, description=\"Start year when sts is not provided\"\n    )\n    month1: int = Field(\n        default=None, description=\"Start month when sts is not provided\"\n    )\n    day1: int = Field(\n        default=None, description=\"Start day when sts is not provided\"\n    )\n    hour1: int = Field(\n        default=None, description=\"Start hour when sts is not provided\"\n    )\n    minute1: int = Field(\n        default=None, description=\"Start minute when sts is not provided\"\n    )\n    year2: int = Field(\n        default=None, description=\"End year when ets is not provided\"\n    )\n    month2: int = Field(\n        default=None, description=\"End month when ets is not provided\"\n    )\n    day2: int = Field(\n        default=None, description=\"End day when ets is not provided\"\n    )\n    hour2: int = Field(\n        default=None, description=\"End hour when ets is not provided\"\n    )\n    minute2: int = Field(\n        default=None, description=\"End minute when ets is not provided\"\n    )\n\n\ndef run(query: Schema, start_response: callable):\n    \"\"\"Do something!\"\"\"\n    common = \"at time zone 'UTC', 'YYYY-MM-DD\\\"T\\\"HH24:MI:00\\\"Z\\\"'\"\n    schema = {\n        \"geometry\": \"Polygon\",\n        \"properties\": {\n            \"CENTER\": \"str:4\",\n            \"ISSUE\": \"str:20\",\n            \"EXPIRE\": \"str:20\",\n            \"PROD_ID\": \"str:36\",\n            \"NARRATIV\": \"str:256\",\n            \"NUMBER\": \"int\",\n        },\n    }\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = gpd.read_postgis(\n            sql_helper(\n                \"\"\"select center,\n            to_char(issue {common}) as issue,\n            to_char(expire {common}) as expire,\n            product_id as prod_id, narrative as narrativ, num as number,\n            geom from cwas WHERE issue >= :sts and\n            issue < :ets ORDER by issue ASC\n                       \"\"\",\n                common=common,\n            ),\n            conn,\n            params={\n                \"sts\": query.sts,\n                \"ets\": query.ets,\n            },\n            geom_col=\"geom\",\n        )  # type: ignore\n    if df.empty:\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return b\"ERROR: no results found for your query\"\n    df.columns = [s.upper() if s != \"geom\" else \"geom\" for s in df.columns]\n    fn = f\"cwas_{query.sts:%Y%m%d%H%M}_{query.ets:%Y%m%d%H%M}\"\n    if query.format == \"kml\":\n        fp = BytesIO()\n        with fiona.Env():\n            df.to_file(fp, driver=\"KML\")\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-Disposition\", f\"attachment; filename={fn}.kml\"),\n        ]\n        start_response(\"200 OK\", headers)\n        return fp.getvalue()\n\n    with tempfile.TemporaryDirectory() as tmpdir:\n        df.to_file(f\"{tmpdir}/{fn}.shp\", schema=schema, engine=\"fiona\")\n\n        zio = BytesIO()\n        with zipfile.ZipFile(\n            zio, mode=\"w\", compression=zipfile.ZIP_DEFLATED\n        ) as zf:\n            with open(PRJFILE, encoding=\"utf-8\") as fh:\n                zf.writestr(f\"{fn}.prj\", fh.read())\n            for suffix in [\"shp\", \"shx\", \"dbf\"]:\n                zf.write(f\"{tmpdir}/{fn}.{suffix}\", f\"{fn}.{suffix}\")\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", f\"attachment; filename={fn}.zip\"),\n    ]\n    start_response(\"200 OK\", headers)\n\n    return zio.getvalue()\n\n\n@iemapp(default_tz=\"UTC\", help=__doc__, schema=Schema)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Do something fun!\"\"\"\n    query: Schema = environ[\"_cgimodel_schema\"]\n    if query.sts is None or query.ets is None:\n        raise IncompleteWebRequest(\"GET start time parameters missing\")\n    return [run(query, start_response)]\n"
  },
  {
    "path": "pylib/iemweb/request/gis/lsr.py",
    "content": "\"\"\".. title:: Local Storm Report Data Service\n\nReturn to `API Services </api/#cgi>`_ or\n`User Frontend </request/gis/lsrs.phtml>`_.\n\nDocumentation for /cgi-bin/request/gis/lsr.py\n---------------------------------------------\n\nThis service emits NWS Local Storm Report (LSR) data in various formats. This\ndataset is as live as when you query it as reports are ingested in realtime.\n\nChangelog\n---------\n\n- 2026-03-19: A `magge` parameter was added, representing a filter for reports\n  with a magnitude greater than or equal to the given value.\n- 2024-10-24: Added bounding box parameters of ``north``, ``south``, ``east``,\n  and ``west`` to allow for spatial subsetting of the results.\n- 2024-09-23: Added `qualify` as the Estimated, Measured, or Unknown qualifier\n  of the magnitude value.  Perhaps fixed a problem with SHP output as well.\n- 2024-08-14: Correct bug with reports for Puerto Rico were not included.\n- 2024-07-18: Instead of returning a `No results found for query` when no\n  database entries are found, we return an empty result.\n- 2024-04-05: Initial documentation release and migration to pydantic.\n- 2024-04-05: The legacy usage of ``wfo[]`` for CGI arguments is still\n  supported, but migration to ``wfo`` is encouraged.\n\nExample Requests\n----------------\n\nProvide an Excel file of recent LSRs within the past 30 minutes.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/lsr.py\\\n?recent=1800&fmt=excel\n\nProvide all Iowa LSRs for 2024 in KML format and then shapefile format.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/lsr.py\\\n?sts=2024-01-01T00:00Z&ets=2025-01-01T00:00Z&state=IA&fmt=kml\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/lsr.py\\\n?sts=2024-01-01T00:00Z&ets=2025-01-01T00:00Z&state=IA&fmt=shp\n\nProvide any Iowa LSRs for 2024 with a magnitude of at least 2 (inch)\nfor HAIL reports.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/lsr.py\\\n?sts=2024-01-01T00:00Z&ets=2025-01-01T00:00Z&state=IA&type=HAIL&magge=2\n\nReturn all the LSRs issued by the Des Moines WFO in CSV format.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/lsr.py\\\n?wfo=DMX&sts=2024-01-01T00:00Z&ets=2025-01-01T00:00Z&fmt=csv\n\nProvide all LSRs for 2024 for a lat/lon bounding box approximating Iowa and\nreturn as a CSV file.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/lsr.py\\\n?sts=2024-01-01T00:00Z&ets=2025-01-01T00:00Z&north=43.5&south=40.0\\\n&east=-90.0&west=-96.5&fmt=csv\n\n\"\"\"\n\nimport zipfile\nfrom datetime import timedelta\nfrom io import BytesIO, StringIO\nfrom typing import Annotated\n\nimport fiona\nimport geopandas as gpd\nimport pandas as pd\nimport shapefile\nfrom pydantic import AwareDatetime, Field, model_validator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nfrom iemweb.fields import LATITUDE_FIELD_OPTIONAL, LONGITUDE_FIELD_OPTIONAL\nfrom iemweb.mlib import unrectify_wfo\n\nfiona.supported_drivers[\"KML\"] = \"rw\"\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\nISO8660 = \"%Y-%m-%dT%H:%M\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    magge: Annotated[\n        float | None,\n        Field(\n            description=(\n                \"Filter LSRs by the given magnitude threshold for events \"\n                \"with a magnitude greater than or equal to the given value. \"\n                \"This is a blunt force tool that does not work for reports \"\n                \"without a magnitude and things like Tornado reports that \"\n                \"don't have one either.\"\n            ),\n            ge=0,\n            le=1000,\n        ),\n    ] = None\n    ets: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=\"The end of the period you are interested in.\",\n        ),\n    ] = None\n    fmt: str = Field(\n        None,\n        description=\"The output format you desire.\",\n        pattern=\"^(csv|kml|excel|shp)$\",\n    )\n    justcsv: bool = Field(\n        False,\n        description=\"If set, only the CSV file is returned.\",\n    )\n    recent: Annotated[\n        int | None,\n        Field(\n            description=(\n                \"\"\"\n    For near realtime requests, the number of seconds to go back in\n    time.  The timestamp query is the time of the LSR report, not\n    the time it was disseminated by the NWS. Must be less than\n    1,000,000 seconds.\"\"\"\n            ),\n            ge=1,\n            le=1_000_000,\n        ),\n    ] = None\n    state: ListOrCSVType = Field(\n        None,\n        description=\"Limit results to these states.\",\n    )\n    sts: AwareDatetime = Field(\n        None,\n        description=\"The start of the period you are interested in.\",\n    )\n    type: ListOrCSVType = Field(\n        None,\n        description=\"Limit results to these event types.\",\n    )\n    wfo: ListOrCSVType = Field(\n        None,\n        description=\"Limit results to these WFOs.\",\n    )\n    year1: int = Field(\n        None,\n        description=\"If sts unset, the start year value in UTC.\",\n    )\n    month1: int = Field(\n        None,\n        description=\"If sts unset, the start month value in UTC.\",\n    )\n    day1: int = Field(\n        None,\n        description=\"If sts unset, the start day value in UTC.\",\n    )\n    hour1: int = Field(\n        0,\n        description=\"If sts unset, the start hour value in UTC.\",\n    )\n    minute1: int = Field(\n        0,\n        description=\"If sts unset, the start minute value in UTC.\",\n    )\n    year2: int = Field(\n        None,\n        description=\"If ets unset, the end year value in UTC.\",\n    )\n    month2: int = Field(\n        None,\n        description=\"If ets unset, the end month value in UTC.\",\n    )\n    day2: int = Field(\n        None,\n        description=\"If ets unset, the end day value in UTC.\",\n    )\n    hour2: int = Field(\n        0,\n        description=\"If ets unset, the end hour value in UTC.\",\n    )\n    minute2: int = Field(\n        0,\n        description=\"If ets unset, the end minute value in UTC.\",\n    )\n    east: LONGITUDE_FIELD_OPTIONAL = None\n    west: LONGITUDE_FIELD_OPTIONAL = None\n    north: LATITUDE_FIELD_OPTIONAL = None\n    south: LATITUDE_FIELD_OPTIONAL = None\n\n    @model_validator(mode=\"after\")\n    def validate_spatial_bounds(self):\n        \"\"\"Ensure we have a valid spatial bounds.\"\"\"\n        # Ensure that if we have one field set, we have them all\n        vals = [self.east, self.west, self.north, self.south]\n        if any(x is not None for x in vals):\n            if not all(x is not None for x in vals):\n                raise ValueError(\"Incomplete spatial bounds provided\")\n            if self.east <= self.west:\n                raise ValueError(\"East is less than West\")\n            if self.north <= self.south:\n                raise ValueError(\"North is less than South\")\n        return self\n\n\ndef get_time_domain(form: dict):\n    \"\"\"Figure out the start and end timestamps\"\"\"\n    if form[\"recent\"] is not None:\n        # Allow for specifying a recent number of seconds\n        ets = utc()\n        sts = ets - timedelta(seconds=form[\"recent\"])\n        return sts, ets\n    if form[\"sts\"] is None:\n        raise IncompleteWebRequest(\"GET start time parameters missing\")\n    if form[\"ets\"] is None:\n        form[\"ets\"] = utc()\n    return form[\"sts\"], form[\"ets\"]\n\n\ndef do_excel_kml(fmt, params, sql_filters):\n    \"\"\"Export as Excel or KML.\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df: gpd.GeoDataFrame = gpd.read_postgis(\n            sql_helper(\n                \"\"\"\n            WITH wfos as (\n                select case when length(id) = 4 then substr(id, 2, 3)\n                else id end as cwa, tzname from stations where network = 'WFO'\n            ), reports as (\n                select distinct l.wfo, valid, county, city, l.state, typetext,\n                magnitude, l.source, ST_y(l.geom) as lat, ST_x(l.geom) as lon,\n                coalesce(remark, '') as remark, u.ugc, u.name as ugcname,\n                l.geom, qualifier\n                from lsrs l LEFT JOIN ugcs u on (l.gid = u.gid) WHERE\n                valid >= :sts and valid < :ets {sql_filters}\n            )\n            SELECT l.wfo as office,\n            to_char(valid at time zone w.tzname,\n             'YYYY/MM/DD HH24:MI') as lvalid,\n            to_char(valid at time zone 'UTC',\n                'YYYY/MM/DD HH24:MI') as utcvalid,\n            county, city, state, typetext, magnitude, source, lat, lon,\n            remark, ugc, ugcname, geom, qualifier\n            from reports l JOIN wfos w on (l.wfo = w.cwa)\n            ORDER by utcvalid ASC\"\"\",\n                sql_filters=sql_filters,\n            ),\n            conn,\n            params=params,\n            geom_col=\"geom\",\n        )  # type: ignore\n    df = df.rename(\n        {\n            \"office\": \"Office\",\n            \"lvalid\": \"Report Time (Local WFO Timezone)\",\n            \"utcvalid\": \"Report Time (UTC Timezone)\",\n            \"county\": \"County\",\n            \"city\": \"Location\",\n            \"state\": \"ST\",\n            \"typetext\": \"Event Type\",\n            \"magnitude\": \"Mag.\",\n            \"source\": \"Source\",\n            \"lat\": \"Lat\",\n            \"lon\": \"Lon\",\n            \"qualifier\": \"Qualifier\",\n            \"remark\": \"Remark\",\n        },\n        axis=1,\n    )\n    if fmt == \"excel\":\n        if len(df.index) >= 1048576:\n            raise IncompleteWebRequest(\"Too many results for Excel export.\")\n        df = df.drop(columns=\"geom\")\n        bio = BytesIO()\n        writer = pd.ExcelWriter(bio, engine=\"xlsxwriter\")\n        df.to_excel(writer, sheet_name=\"Local Storm Reports\", index=False)\n        worksheet = writer.sheets[\"Local Storm Reports\"]\n        worksheet.set_column(\"B:C\", 36)\n        worksheet.set_column(\"D:E\", 24)\n        worksheet.set_column(\"G:G\", 24)\n        worksheet.set_column(\"I:I\", 24)\n        worksheet.set_column(\"L:L\", 100)\n        worksheet.freeze_panes(1, 0)\n        writer.close()\n        return bio.getvalue()\n    # KML\n    df[\"name\"] = df[\"Location\"] + \": \" + df[\"Event Type\"]\n    fp = BytesIO()\n    with fiona.Env():\n        df.to_file(fp, driver=\"KML\", NameField=\"name\", engine=\"fiona\")\n    return fp.getvalue()\n\n\n@iemapp(default_tz=\"UTC\", help=__doc__, schema=Schema)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Go Main Go\"\"\"\n    if environ[\"REQUEST_METHOD\"] == \"OPTIONS\":\n        start_response(\"400 Bad Request\", [(\"Content-type\", \"text/plain\")])\n        return [b\"Allow: GET,POST,OPTIONS\"]\n\n    params = {\n        \"wfos\": [],\n        \"magge\": environ[\"magge\"],\n    }\n    params[\"sts\"], params[\"ets\"] = get_time_domain(environ)\n    params[\"states\"] = environ[\"state\"]\n    if environ[\"wfo\"]:\n        params[\"wfos\"] = [unrectify_wfo(x) for x in environ[\"wfo\"]]\n    params[\"types\"] = environ[\"type\"]\n\n    sql_filters = \"\"\n    if environ[\"magge\"] is not None:\n        sql_filters += \" and magnitude >= :magge \"\n    if params[\"states\"] and \"_ALL\" not in params[\"states\"]:\n        sql_filters += \" and l.state = ANY(:states) \"\n    if params[\"wfos\"] and \"ALL\" not in params[\"wfos\"]:\n        sql_filters += \" and l.wfo = ANY(:wfos) \"\n    if params[\"types\"] and \"ALL\" not in params[\"types\"]:\n        sql_filters += \" and l.typetext = ANY(:types) \"\n    if environ[\"north\"] is not None:\n        sql_filters += (\n            \" and ST_Contains(ST_MakeEnvelope(:west, :south, :east, :north, \"\n            \"4326), l.geom) \"\n        )\n        params[\"north\"] = environ[\"north\"]\n        params[\"south\"] = environ[\"south\"]\n        params[\"east\"] = environ[\"east\"]\n        params[\"west\"] = environ[\"west\"]\n\n    fn = f\"lsr_{params['sts']:%Y%m%d%H%M}_{params['ets']:%Y%m%d%H%M}\"\n    if environ[\"fmt\"] == \"excel\":\n        headers = [\n            (\"Content-type\", EXL),\n            (\"Content-disposition\", f\"attachment; Filename={fn}.xlsx\"),\n        ]\n        start_response(\"200 OK\", headers)\n        return [do_excel_kml(\"excel\", params, sql_filters)]\n\n    if environ[\"fmt\"] == \"kml\":\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-disposition\", f\"attachment; Filename={fn}.kml\"),\n        ]\n        start_response(\"200 OK\", headers)\n        return [do_excel_kml(\"kml\", params, sql_filters)]\n\n    csv = StringIO()\n    csv.write(\n        \"VALID,VALID2,LAT,LON,MAG,WFO,TYPECODE,TYPETEXT,CITY,\"\n        \"COUNTY,STATE,SOURCE,REMARK,UGC,UGCNAME,QUALIFIER\\n\"\n    )\n\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n            SELECT distinct\n            to_char(valid at time zone 'UTC', 'YYYYMMDDHH24MI') as dvalid,\n            magnitude, l.wfo, type, typetext,\n            city, county, l.state, l.source,\n            substr(coalesce(remark, ''),0,200) as tremark,\n            ST_y(l.geom) as lat, ST_x(l.geom) as lon,\n            to_char(valid at time zone 'UTC', 'YYYY/MM/DD HH24:MI') as dvalid2,\n            u.ugc, u.name as ugcname, qualifier\n            from lsrs l LEFT JOIN ugcs u on (l.gid = u.gid) WHERE\n            valid >= :sts and valid < :ets {sql_filters}\n            ORDER by dvalid ASC\n            \"\"\",\n                sql_filters=sql_filters,\n            ),\n            params,\n        )\n\n        shpio = BytesIO()\n        shxio = BytesIO()\n        dbfio = BytesIO()\n\n        with shapefile.Writer(shp=shpio, shx=shxio, dbf=dbfio) as shp:\n            shp.field(\"VALID\", \"C\", 12)\n            shp.field(\"MAG\", \"F\", 5, 2)\n            shp.field(\"WFO\", \"C\", 3)\n            shp.field(\"TYPECODE\", \"C\", 1)\n            shp.field(\"TYPETEXT\", \"C\", 40)\n            shp.field(\"CITY\", \"C\", 40)\n            shp.field(\"COUNTY\", \"C\", 40)\n            shp.field(\"STATE\", \"C\", 2)\n            shp.field(\"SOURCE\", \"C\", 40)\n            shp.field(\"REMARK\", \"C\", 200)\n            shp.field(\"LAT\", \"F\", 7, 4)\n            shp.field(\"LON\", \"F\", 9, 4)\n            shp.field(\"UGC\", \"C\", 6)\n            shp.field(\"UGCNAME\", \"C\", 128)\n            shp.field(\"QUALIFY\", \"C\", 1)\n            for row in res.mappings():\n                tremark = \"\"\n                if row[\"tremark\"] is not None:\n                    tremark = (\n                        row[\"tremark\"]\n                        .encode(\"utf-8\", \"ignore\")\n                        .decode(\"ascii\", \"ignore\")\n                        .replace(\",\", \"_\")\n                    )\n                city = (\n                    row[\"city\"]\n                    .encode(\"utf-8\", \"ignore\")\n                    .decode(\"ascii\", \"ignore\")\n                )\n                record = {\n                    \"VALID\": row[\"dvalid\"],\n                    \"MAG\": row[\"magnitude\"],\n                    \"WFO\": row[\"wfo\"],\n                    \"TYPECODE\": row[\"type\"],\n                    \"TYPETEXT\": row[\"typetext\"],\n                    \"CITY\": row[\"city\"],\n                    \"COUNTY\": row[\"county\"],\n                    \"STATE\": row[\"state\"],\n                    \"SOURCE\": row[\"source\"],\n                    \"REMARK\": tremark,\n                    \"LAT\": row[\"lat\"],\n                    \"LON\": row[\"lon\"],\n                    \"UGC\": row[\"ugc\"],\n                    \"UGCNAME\": row[\"ugcname\"],\n                    \"QUALIFY\": row[\"qualifier\"],\n                }\n                shp.point(row[\"lon\"], row[\"lat\"])\n                shp.record(**record)\n                qualify = (\n                    row[\"qualifier\"] if row[\"qualifier\"] is not None else \"\"\n                )\n                csv.write(\n                    f\"{row['dvalid']},{row['dvalid2']},{row['lat']:.2f},\"\n                    f\"{row['lon']:.2f},{row['magnitude']},\"\n                    f\"{row['wfo']},{row['type']},{row['typetext']},{city},\"\n                    f\"{row['county']},{row['state']},\"\n                    f\"{row['source']},{tremark},{row['ugc']},{row['ugcname']},\"\n                    f\"{qualify}\\n\"\n                )\n\n    if environ[\"justcsv\"] or environ[\"fmt\"] == \"csv\":\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-Disposition\", f\"attachment; filename={fn}.csv\"),\n        ]\n        start_response(\"200 OK\", headers)\n        return [csv.getvalue().encode(\"ascii\", \"ignore\")]\n\n    zio = BytesIO()\n    with zipfile.ZipFile(\n        zio, mode=\"w\", compression=zipfile.ZIP_DEFLATED\n    ) as zf:\n        with open(\"/opt/iem/data/gis/meta/4326.prj\", encoding=\"utf-8\") as fh:\n            zf.writestr(f\"{fn}.prj\", fh.read())\n        zf.writestr(f\"{fn}.shp\", shpio.getvalue())\n        zf.writestr(f\"{fn}.shx\", shxio.getvalue())\n        zf.writestr(f\"{fn}.dbf\", dbfio.getvalue())\n        zf.writestr(f\"{fn}.csv\", csv.getvalue())\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", f\"attachment; filename={fn}.zip\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return [zio.getvalue()]\n"
  },
  {
    "path": "pylib/iemweb/request/gis/misc.py",
    "content": "\"\"\".. title:: NWS Miscellaneous Polygons\n\nReturn to `User Frontend </request/gis/misc.phtml>`_ or\n`IEM API Services </api/#cgi>`_.\n\nDocumentation for /cgi-bin/request/gis/misc.py\n-------------------------------------------------\n\nThis service emits polygons associated with miscellaneous NWS products, not\nincluding SPS or those with VTEC.  The output formats are Shapefile, KML,\nCSV, or Excel.  The default output format is Shapefile.\n\nChangelog\n---------\n\n- 2024-10-31: Initial implementation.\n\nExample Requests\n----------------\n\nProvide all miscellaneous polygons for October 2024 in shapefile and then KML\nand then CSV and then Excel.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/misc.py\\\n?sts=2024-10-01T00:00Z&ets=2024-11-01T00:00Z\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/misc.py\\\n?sts=2024-10-01T00:00Z&ets=2024-11-01T00:00Z&format=kml\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/misc.py\\\n?sts=2024-10-01T00:00Z&ets=2024-11-01T00:00Z&format=csv\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/misc.py\\\n?sts=2024-10-01T00:00Z&ets=2024-11-01T00:00Z&format=excel\n\n\"\"\"\n\nimport tempfile\nimport zipfile\nfrom io import BytesIO, StringIO\nfrom typing import Annotated\n\nimport fiona\nimport geopandas as gpd\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import HOUR_FIELD, MINUTE_FIELD\n\nfiona.supported_drivers[\"KML\"] = \"rw\"\nPRJFILE = \"/opt/iem/data/gis/meta/4326.prj\"\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    format: Annotated[\n        str,\n        Field(\n            description=\"Output format, either shp, kml, csv, or excel\",\n            pattern=\"^(shp|kml|csv|excel)$\",\n        ),\n    ] = \"shp\"\n    sts: AwareDatetime = Field(default=None, description=\"Start Time\")\n    ets: AwareDatetime = Field(default=None, description=\"End Time\")\n    year1: int = Field(default=None, description=\"Start Year, if sts not set\")\n    month1: int = Field(\n        default=None, description=\"Start Month, if sts not set\"\n    )\n    day1: int = Field(default=None, description=\"Start Day, if sts not set\")\n    hour1: HOUR_FIELD = 0\n    minute1: MINUTE_FIELD = 0\n    year2: int = Field(default=None, description=\"End Year, if ets not set\")\n    month2: int = Field(default=None, description=\"End Month, if ets not set\")\n    day2: int = Field(default=None, description=\"End Day, if ets not set\")\n    hour2: HOUR_FIELD = 0\n    minute2: MINUTE_FIELD = 0\n\n\ndef run(query: Schema, start_response: callable):\n    \"\"\"Do something!\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = gpd.read_postgis(\n            sql_helper(\"\"\"\n                select pil, geom,\n                issue at time zone 'UTC' as issue,\n                expire at time zone 'UTC' as expire,\n                product_id as PROD_ID\n                from text_products WHERE issue >= :sts and\n                issue < :ets ORDER by issue ASC\n                 \"\"\"),\n            conn,\n            params={\n                \"sts\": query.sts,\n                \"ets\": query.ets,\n            },\n            geom_col=\"geom\",\n        )  # type: ignore\n    if df.empty:\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return b\"ERROR: no results found for your query\"\n    for col in [\"issue\", \"expire\"]:\n        df[col] = df[col].dt.strftime(ISO8601)\n    df.columns = [s.upper() if s != \"geom\" else \"geom\" for s in df.columns]\n    fn = f\"misc_{query.sts:%Y%m%d%H%M}_{query.ets:%Y%m%d%H%M}\"\n    if query.format == \"kml\":\n        fp = BytesIO()\n        with fiona.Env():\n            df.to_file(fp, driver=\"KML\", NameField=\"NAME\", engine=\"fiona\")\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-Disposition\", f\"attachment; filename={fn}.kml\"),\n        ]\n        start_response(\"200 OK\", headers)\n        return fp.getvalue()\n    if query.format == \"csv\":\n        fp = StringIO()\n        df.drop(columns=\"geom\").to_csv(fp, index=False)\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-Disposition\", f\"attachment; filename={fn}.csv\"),\n        ]\n        start_response(\"200 OK\", headers)\n        return fp.getvalue().encode(\"ascii\")\n    if query.format == \"excel\":\n        fp = BytesIO()\n        with pd.ExcelWriter(fp) as writer:\n            df.drop(columns=\"geom\").to_excel(writer, index=False)\n        headers = [\n            (\"Content-type\", EXL),\n            (\"Content-Disposition\", f\"attachment; filename={fn}.xlsx\"),\n        ]\n        start_response(\"200 OK\", headers)\n        return fp.getvalue()\n\n    schema = {\n        \"geometry\": \"Polygon\",\n        \"properties\": {\n            \"PIL\": \"str:6\",\n            \"ISSUE\": \"str:20\",\n            \"EXPIRE\": \"str:20\",\n            \"PROD_ID\": \"str:36\",\n        },\n    }\n    with tempfile.TemporaryDirectory() as tmpdir:\n        df.to_file(f\"{tmpdir}/{fn}.shp\", schema=schema, engine=\"fiona\")\n\n        zio = BytesIO()\n        with zipfile.ZipFile(\n            zio, mode=\"w\", compression=zipfile.ZIP_DEFLATED\n        ) as zf:\n            with open(PRJFILE, encoding=\"utf-8\") as fh:\n                zf.writestr(f\"{fn}.prj\", fh.read())\n            for suffix in [\"shp\", \"shx\", \"dbf\"]:\n                zf.write(f\"{tmpdir}/{fn}.{suffix}\", f\"{fn}.{suffix}\")\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", f\"attachment; filename={fn}.zip\"),\n    ]\n    start_response(\"200 OK\", headers)\n\n    return zio.getvalue()\n\n\n@iemapp(default_tz=\"UTC\", help=__doc__, schema=Schema)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Do something fun!\"\"\"\n    query: Schema = environ[\"_cgimodel_schema\"]\n    if query.sts is None or query.ets is None:\n        raise IncompleteWebRequest(\"GET start or end time parameters missing\")\n    return [run(query, start_response)]\n"
  },
  {
    "path": "pylib/iemweb/request/gis/nexrad_storm_attrs.py",
    "content": "\"\"\".. title:: NEXRAD Storm Attributes Data Service\n\nReturn to `request form </request/gis/nexrad_storm_attrs.php>`_ or the\n`API mainpage </api/#cgi>`_.\n\nDocumentation for /cgi-bin/request/gis/nexrad_storm_attrs.py\n------------------------------------------------------------\n\nThis service provides IEM processed NWS NEXRAD Storm Attribute table data. This\narchive updates in real-time as level 3 NCR products are received.  If you\nrequest more than two radar sites, the time span is limited to 7 days.\n\nChangelog\n---------\n\n- 2025-04-16: Added `min_hail_size` filter parameter.\n- 2025-02-13: Requests are limited to 1000 (RADARs * days), which is\n  effectively all RADARs for about a week.\n- 2024-06-11: Initial documentation release\n\nExample Usage\n-------------\n\nProvide all attributes for Aug 10, 2024 UTC.  First as a shapefile, then as\na CSV file.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/nexrad_storm_attrs.py?\\\nfmt=shp&sts=2024-08-10T00:00:00Z&ets=2024-08-11T00:00:00Z\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/nexrad_storm_attrs.py?\\\nfmt=csv&sts=2024-08-10T00:00:00Z&ets=2024-08-11T00:00:00Z\n\nProvide all attributes for the Tallahassee, FL radar site for Aug 10, 2024 UTC.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/nexrad_storm_attrs.py?\\\nfmt=shp&sts=2024-08-10T00:00:00Z&ets=2024-08-11T00:00:00Z&radar=TLH\n\nReturn all attributes on 10 Aug 2024 with at least 0.5 inch hail.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/nexrad_storm_attrs.py?\\\nfmt=shp&sts=2024-08-10T00:00:00Z&ets=2024-08-11T00:00:00Z&min_hail_size=0.5\n\n\"\"\"\n\nimport zipfile\nfrom io import BytesIO, StringIO\n\nimport shapefile\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    ets: AwareDatetime = Field(None, description=\"End of Time for request\")\n    fmt: str = Field(\n        \"shp\", description=\"Format of output\", pattern=\"^(shp|csv)$\"\n    )\n    radar: ListOrCSVType = Field([], description=\"Radar Sites to include\")\n    sts: AwareDatetime = Field(None, description=\"Start of Time for request\")\n    year1: int = Field(\n        None, description=\"Year for start of time if sts not set\"\n    )\n    month1: int = Field(\n        None, description=\"Month for start of time if sts not set\"\n    )\n    day1: int = Field(None, description=\"Day for start of time if sts not set\")\n    hour1: int = Field(\n        None, description=\"Hour for start of time if sts not set\"\n    )\n    minute1: int = Field(\n        None, description=\"Minute for start of time if sts not set\"\n    )\n    year2: int = Field(None, description=\"Year for end of time if ets not set\")\n    month2: int = Field(\n        None, description=\"Month for end of time if ets not set\"\n    )\n    day2: int = Field(None, description=\"Day for end of time if ets not set\")\n    hour2: int = Field(None, description=\"Hour for end of time if ets not set\")\n    minute2: int = Field(\n        None, description=\"Minute for end of time if ets not set\"\n    )\n    min_hail_size: float = Field(\n        None,\n        description=\"Minimum hail size (inch) to include in the results.\",\n        ge=0,\n        le=10,\n    )\n\n\ndef run(environ, start_response):\n    \"\"\"Do something!\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"Missing start or end time parameters.\")\n    sio = StringIO()\n\n    # Need to limit what we are allowing them to request as the file would get\n    # massive.  So lets set arbitrary values of\n    # 1) If 2 or more RADARs, less than 7 days\n    radarlimit = \"\"\n    if environ[\"radar\"] and \"ALL\" not in environ[\"radar\"]:\n        radarlimit = \" and nexrad = ANY(:radar) \"\n    score = len(environ[\"radar\"]) if radarlimit != \"\" else 150\n    score *= (environ[\"ets\"] - environ[\"sts\"]).days\n    if score > 1_500:\n        raise IncompleteWebRequest(\n            \"Request is too large, please limit to (radars * days) < 1500\"\n        )\n    fn = f\"stormattr_{environ['sts']:%Y%m%d%H%M}_{environ['ets']:%Y%m%d%H%M}\"\n    filters = \"\"\n    if environ[\"min_hail_size\"] is not None:\n        filters = \" and max_size >= :min_hail_size \"\n\n    with get_sqlalchemy_conn(\"radar\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n            SELECT to_char(valid at time zone 'UTC', 'YYYYMMDDHH24MI')\n                as utctime,\n            storm_id, nexrad, azimuth, range, tvs, meso, posh, poh, max_size,\n            vil, max_dbz, max_dbz_height, top, drct, sknt,\n            ST_y(geom) as lat, ST_x(geom) as lon\n            from nexrad_attributes_log WHERE\n            valid >= :sts and valid < :ets {radarlimit} {filters}\n            ORDER by valid ASC\n            \"\"\",\n                radarlimit=radarlimit,\n                filters=filters,\n            ),\n            {\n                \"sts\": environ[\"sts\"],\n                \"ets\": environ[\"ets\"],\n                \"radar\": environ[\"radar\"],\n                \"min_hail_size\": environ[\"min_hail_size\"],\n            },\n        )\n        if res.rowcount == 0:\n            start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n            return b\"ERROR: no results found for your query\"\n\n        if environ[\"fmt\"] == \"csv\":\n            headers = [\n                (\"Content-type\", \"application/octet-stream\"),\n                (\"Content-Disposition\", f\"attachment; filename={fn}.csv\"),\n            ]\n            start_response(\"200 OK\", headers)\n            sio.write(\n                \"VALID,STORM_ID,NEXRAD,AZIMUTH,RANGE,TVS,MESO,POSH,\"\n                \"POH,MAX_SIZE,VIL,MAX_DBZ,MAZ_DBZ_H,TOP,DRCT,SKNT,LAT,LON\\n\"\n            )\n            for row in res:\n                sio.write(\",\".join([str(s) for s in row]) + \"\\n\")\n            return sio.getvalue().encode(\"ascii\", \"ignore\")\n\n        shpio = BytesIO()\n        shxio = BytesIO()\n        dbfio = BytesIO()\n\n        with shapefile.Writer(shp=shpio, shx=shxio, dbf=dbfio) as shp:\n            # C is ASCII characters\n            # N is a double precision integer limited to around 18 characters\n            #   length\n            # D is for dates in the YYYYMMDD format,\n            #   with no spaces or hyphens between the sections\n            # F is for floating point numbers with the same length limits as N\n            # L is for logical data which is stored in the shapefile's attr\n            #   table as a short integer as a 1 (true) or a 0 (false).\n            # The values it can receive are 1, 0, y, n, Y, N, T, F\n            # or the python builtins True and False\n            shp.field(\"VALID\", \"C\", 12)\n            shp.field(\"STORM_ID\", \"C\", 2)\n            shp.field(\"NEXRAD\", \"C\", 3)\n            shp.field(\"AZIMUTH\", \"N\", 3, 0)\n            shp.field(\"RANGE\", \"N\", 3, 0)\n            shp.field(\"TVS\", \"C\", 10)\n            shp.field(\"MESO\", \"C\", 10)\n            shp.field(\"POSH\", \"N\", 3, 0)\n            shp.field(\"POH\", \"N\", 3, 0)\n            shp.field(\"MAX_SIZE\", \"F\", 5, 2)\n            shp.field(\"VIL\", \"N\", 3, 0)\n            shp.field(\"MAX_DBZ\", \"N\", 3, 0)\n            shp.field(\"MAX_DBZ_H\", \"F\", 5, 2)\n            shp.field(\"TOP\", \"F\", 9, 2)\n            shp.field(\"DRCT\", \"N\", 3, 0)\n            shp.field(\"SKNT\", \"N\", 3, 0)\n            shp.field(\"LAT\", \"F\", 10, 4)\n            shp.field(\"LON\", \"F\", 10, 4)\n            for row in res:\n                shp.point(row[-1], row[-2])\n                shp.record(*row)\n\n    zio = BytesIO()\n    with zipfile.ZipFile(\n        zio, mode=\"w\", compression=zipfile.ZIP_DEFLATED\n    ) as zf:\n        with open(\"/opt/iem/data/gis/meta/4326.prj\", encoding=\"utf-8\") as fh:\n            zf.writestr(f\"{fn}.prj\", fh.read())\n        zf.writestr(f\"{fn}.shp\", shpio.getvalue())\n        zf.writestr(f\"{fn}.shx\", shxio.getvalue())\n        zf.writestr(f\"{fn}.dbf\", dbfio.getvalue())\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", f\"attachment; filename={fn}.zip\"),\n    ]\n    start_response(\"200 OK\", headers)\n\n    return zio.getvalue()\n\n\n@iemapp(default_tz=\"UTC\", help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Do something fun!\"\"\"\n    return [run(environ, start_response)]\n"
  },
  {
    "path": "pylib/iemweb/request/gis/pireps.py",
    "content": "\"\"\".. title:: Pilot Weather Report (PIREP) Data Service\n\nReturn to `API Services </api/#cgi>`_\n\nDocumentation for /cgi-bin/request/gis/pireps.py\n------------------------------------------------\n\nThis service emits processed and raw PIREP data.  At this time, you must\nrequest 120 days or less of data at one time if you do not filter the request.\n\nChangelog\n---------\n\n- 2025-01-09: Added `FL` field (Flight Level) to the output, units are `ft`.\n- 2024-06-28: Initital documentation release\n- 2024-07-31: A `product_id` field was added to the output, but only non-null\n  for PIREPs after about 18 UTC on 31 July 2024.  Someday, a backfill may\n  happen.\n\nExample Requests\n----------------\n\nProvide all PIREPs for 31 July 2024 UTC over Minneapolis ARTCC:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/pireps.py?\\\nsts=2024-07-31T00:00:00Z&ets=2024-08-01T00:00:00Z&artcc=ZMP&fmt=csv\n\nSame request, but return a shapefile:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/pireps.py?\\\nsts=2024-07-31T00:00:00Z&ets=2024-08-01T00:00:00Z&artcc=ZMP&fmt=shp\n\n\"\"\"\n\nimport zipfile\nfrom datetime import timedelta\nfrom io import BytesIO, StringIO\nfrom typing import Annotated\n\nimport shapefile\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nfrom iemweb.fields import LATITUDE_FIELD, LONGITUDE_FIELD\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    artcc: ListOrCSVType = Field(\n        default_factory=list,\n        description=\"The ARTCC to limit the query to, use _ALL for all\",\n    )\n    ets: Annotated[\n        AwareDatetime | None, Field(description=\"The end time of the query\")\n    ] = None\n    fmt: Annotated[str, Field(description=\"The format of the output file\")] = (\n        \"shp\"\n    )\n    sts: Annotated[\n        AwareDatetime | None, Field(description=\"The start time of the query\")\n    ] = None\n    year1: Annotated[\n        int | None,\n        Field(\n            description=\"The start year of the query, when sts not provided\",\n        ),\n    ] = None\n    month1: Annotated[\n        int | None,\n        Field(\n            description=\"The start month of the query, when sts not provided\",\n        ),\n    ] = None\n    day1: Annotated[\n        int | None,\n        Field(\n            description=\"The start day of the query, when sts is not provided\",\n        ),\n    ] = None\n    degrees: float = Field(\n        default=1.0,\n        description=\"The distance in degrees for a spatial filter\",\n        gt=0,\n        lt=90,\n    )\n    filter: bool = Field(\n        default=False,\n        description=\"Should we filter by distance from a point?\",\n    )\n    lat: LATITUDE_FIELD = 41.99\n    lon: LONGITUDE_FIELD = -91.99\n    hour1: int = Field(\n        default=0,\n        description=\"The start hour of the query, when sts is not provided\",\n    )\n    minute1: int = Field(\n        default=0,\n        description=\"The start minute of the query, when sts is not provided\",\n    )\n    year2: Annotated[\n        int | None,\n        Field(\n            description=\"The end year of the query, when ets is not provided\",\n        ),\n    ] = None\n    month2: Annotated[\n        int | None,\n        Field(\n            description=\"The end month of the query, when ets is not provided\",\n        ),\n    ] = None\n    day2: Annotated[\n        int | None,\n        Field(\n            description=\"The end day of the query, when ets is not provided\",\n        ),\n    ] = None\n    hour2: int = Field(\n        default=0,\n        description=\"The end hour of the query, when ets is not provided\",\n    )\n    minute2: int = Field(\n        default=0,\n        description=\"The end minute of the query, when ets is not provided\",\n    )\n\n\ndef run(query: Schema, start_response: callable):\n    \"\"\"Go run!\"\"\"\n    artcc_sql = \"\"\n    if \"_ALL\" not in query.artcc and query.artcc:\n        artcc_sql = \" artcc = ANY(:artcc) and \"\n    params = {\n        \"artcc\": query.artcc,\n        \"distance\": query.degrees,\n        \"lat\": query.lat,\n        \"lon\": query.lon,\n        \"sts\": query.sts,\n        \"ets\": query.ets,\n    }\n\n    spatialsql = \"\"\n    if query.filter:\n        spatialsql = (\n            \"ST_Distance(geom::geometry, ST_Point(:lon, :lat, 4326) \"\n            \") <= :distance and \"\n        )\n    else:\n        if (query.ets - query.sts).days > 120:\n            query.ets = query.sts + timedelta(days=120)\n    sql = \"\"\"\n        SELECT to_char(valid at time zone 'UTC', 'YYYYMMDDHH24MI') as utctime,\n        case when is_urgent then 'T' else 'F' end,\n        substr(replace(aircraft_type, ',', ' '), 0, 40),\n        substr(replace(report, ',', ' '), 0, 255),\n        substr(trim(substring(replace(report, ',', ' '),\n            '/IC([^/]*)/?')), 0, 255) as icing,\n        substr(trim(substring(replace(report, ',', ' '),\n            '/TB([^/]*)/?')), 0, 255) as turb,\n        artcc, product_id, flight_level,\n        ST_y(geom::geometry) as lat, ST_x(geom::geometry) as lon\n        from pireps WHERE {spatialsql} {artcc_sql}\n        valid >= :sts and valid < :ets ORDER by valid ASC\n        \"\"\"\n    fn = f\"pireps_{query.sts:%Y%m%d%H%M}_{query.ets:%Y%m%d%H%M}\"\n\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        res = conn.execute(\n            sql_helper(sql, spatialsql=spatialsql, artcc_sql=artcc_sql), params\n        )\n        if res.rowcount == 0:\n            start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n            return b\"ERROR: no results found for your query\"\n\n        if query.fmt == \"csv\":\n            sio = StringIO()\n            headers = [\n                (\"Content-type\", \"application/octet-stream\"),\n                (\"Content-Disposition\", f\"attachment; filename={fn}.csv\"),\n            ]\n            start_response(\"200 OK\", headers)\n            sio.write(\n                \"VALID,URGENT,AIRCRAFT,REPORT,ICING,TURBULENCE,ATRCC,\"\n                \"PRODUCT_ID,FL,LAT,LON\\n\"\n            )\n            for row in res:\n                sio.write(\",\".join([str(s) for s in row]) + \"\\n\")\n            return sio.getvalue().encode(\"ascii\", \"ignore\")\n\n        shpio = BytesIO()\n        shxio = BytesIO()\n        dbfio = BytesIO()\n\n        with shapefile.Writer(shx=shxio, dbf=dbfio, shp=shpio) as shp:\n            shp.field(\"VALID\", \"C\", 12)\n            shp.field(\"URGENT\", \"C\", 1)\n            shp.field(\"AIRCRAFT\", \"C\", 40)\n            shp.field(\"REPORT\", \"C\", 255)  # Max field size is 255\n            shp.field(\"ICING\", \"C\", 255)  # Max field size is 255\n            shp.field(\"TURB\", \"C\", 255)  # Max field size is 255\n            shp.field(\"ARTCC\", \"C\", 3)\n            shp.field(\"PROD_ID\", \"C\", 36)\n            shp.field(\"FL\", \"N\", 6, 0)\n            shp.field(\"LAT\", \"F\", 7, 4)\n            shp.field(\"LON\", \"F\", 9, 4)\n            for row in res:\n                # Can't support null geoms like other formats do.\n                if row[-1] is not None:\n                    shp.point(row[-1], row[-2])\n                    shp.record(*row)\n\n    zio = BytesIO()\n    with zipfile.ZipFile(\n        zio, mode=\"w\", compression=zipfile.ZIP_DEFLATED\n    ) as zf:\n        with open(\"/opt/iem/data/gis/meta/4326.prj\", encoding=\"ascii\") as fh:\n            zf.writestr(f\"{fn}.prj\", fh.read())\n        zf.writestr(f\"{fn}.shp\", shpio.getvalue())\n        zf.writestr(f\"{fn}.shx\", shxio.getvalue())\n        zf.writestr(f\"{fn}.dbf\", dbfio.getvalue())\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", f\"attachment; filename={fn}.zip\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return zio.getvalue()\n\n\n@iemapp(default_tz=\"UTC\", help=__doc__, schema=Schema)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Do something fun!\"\"\"\n    query: Schema = environ[\"_cgimodel_schema\"]\n    if query.sts is None or query.ets is None:\n        raise IncompleteWebRequest(\"GET start/end time parameters missing.\")\n    return [run(query, start_response)]\n"
  },
  {
    "path": "pylib/iemweb/request/gis/sigmets.py",
    "content": "\"\"\".. title:: SIGMET Data Service\n\nReturn to `User Frontend </request/gis/awc_sigmets.phtml>`_ or\n`IEM API Services </api/#cgi>`_.\n\nDocumentation for /cgi-bin/request/gis/sigmets.py\n-------------------------------------------------\n\nThis service emits SIGMET data for a given time period.\n\nChangelog\n---------\n\n- 2025-05-14: The raw SIGMET text was added to the outputs.\n- 2024-07-11: Migration to pydantic validation and added CSV,Excel format\n  options.\n\nExample Requests\n----------------\n\nProvide all SIGMETs for 10 Aug 2024 as a shapefile or a KML file.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/sigmets.py\\\n?sts=2024-08-10T00:00Z&ets=2024-08-11T00:00Z\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/sigmets.py\\\n?sts=2024-08-10T00:00Z&ets=2024-08-11T00:00Z&format=kml\n\n\"\"\"\n\nimport tempfile\nimport zipfile\nfrom io import BytesIO, StringIO\nfrom typing import Annotated\n\nimport fiona\nimport geopandas as gpd\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.reference import ISO8601\nfrom pyiem.webutil import CGIModel, iemapp\n\nfiona.supported_drivers[\"KML\"] = \"rw\"\nPRJFILE = \"/opt/iem/data/gis/meta/4326.prj\"\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    format: Annotated[\n        str,\n        Field(\n            description=\"Output format, either shp, kml, csv, or excel\",\n            pattern=\"^(shp|kml|csv|excel)$\",\n        ),\n    ] = \"shp\"\n    sts: AwareDatetime = Field(default=None, description=\"Start Time\")\n    ets: AwareDatetime = Field(default=None, description=\"End Time\")\n    year1: int = Field(default=None, description=\"Start Year, if sts not set\")\n    month1: int = Field(\n        default=None, description=\"Start Month, if sts not set\"\n    )\n    day1: int = Field(default=None, description=\"Start Day, if sts not set\")\n    hour1: int = Field(default=None, description=\"Start Hour, if sts not set\")\n    minute1: int = Field(\n        default=None, description=\"Start Minute, if sts not set\"\n    )\n    year2: int = Field(default=None, description=\"End Year, if ets not set\")\n    month2: int = Field(default=None, description=\"End Month, if ets not set\")\n    day2: int = Field(default=None, description=\"End Day, if ets not set\")\n    hour2: int = Field(default=None, description=\"End Hour, if ets not set\")\n    minute2: int = Field(\n        default=None, description=\"End Minute, if ets not set\"\n    )\n\n\ndef run(query: Schema, start_response: callable):\n    \"\"\"Do something!\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = gpd.read_postgis(\n            sql_helper(\"\"\"\n                select label  || ' ' || sigmet_type as name, label,\n                sigmet_type as type,\n                issue at time zone 'UTC' as issue,\n                expire at time zone 'UTC' as expire, geom,\n                product_id as PROD_ID, narrative as TEXT\n                from alldata_sigmets WHERE issue >= :sts and\n                issue < :ets ORDER by issue ASC\n                 \"\"\"),\n            conn,\n            params={\n                \"sts\": query.sts,\n                \"ets\": query.ets,\n            },\n            geom_col=\"geom\",\n        )  # type: ignore\n    if df.empty:\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return b\"ERROR: no results found for your query\"\n    for col in [\"issue\", \"expire\"]:\n        df[col] = df[col].dt.strftime(ISO8601)\n    df.columns = [s.upper() if s != \"geom\" else \"geom\" for s in df.columns]\n    fn = f\"sigmets_{query.sts:%Y%m%d%H%M}_{query.ets:%Y%m%d%H%M}\"\n    if query.format == \"kml\":\n        fp = BytesIO()\n        with fiona.Env():\n            df.to_file(fp, driver=\"KML\", NameField=\"NAME\", engine=\"fiona\")\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-Disposition\", f\"attachment; filename={fn}.kml\"),\n        ]\n        start_response(\"200 OK\", headers)\n        return fp.getvalue()\n    if query.format == \"csv\":\n        fp = StringIO()\n        df.drop(columns=\"geom\").to_csv(fp, index=False)\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-Disposition\", f\"attachment; filename={fn}.csv\"),\n        ]\n        start_response(\"200 OK\", headers)\n        return fp.getvalue().encode(\"ascii\")\n    if query.format == \"excel\":\n        fp = BytesIO()\n        with pd.ExcelWriter(fp) as writer:\n            df.drop(columns=\"geom\").to_excel(writer, index=False)\n        headers = [\n            (\"Content-type\", EXL),\n            (\"Content-Disposition\", f\"attachment; filename={fn}.xlsx\"),\n        ]\n        start_response(\"200 OK\", headers)\n        return fp.getvalue()\n\n    schema = {\n        \"geometry\": \"Polygon\",\n        \"properties\": {\n            \"NAME\": \"str:64\",\n            \"LABEL\": \"str:16\",\n            \"TYPE\": \"str:1\",\n            \"ISSUE\": \"str:20\",\n            \"EXPIRE\": \"str:20\",\n            \"PROD_ID\": \"str:36\",\n            \"TEXT\": \"str:255\",\n        },\n    }\n    with tempfile.TemporaryDirectory() as tmpdir:\n        df.to_file(f\"{tmpdir}/{fn}.shp\", schema=schema, engine=\"fiona\")\n\n        zio = BytesIO()\n        with zipfile.ZipFile(\n            zio, mode=\"w\", compression=zipfile.ZIP_DEFLATED\n        ) as zf:\n            with open(PRJFILE, encoding=\"utf-8\") as fh:\n                zf.writestr(f\"{fn}.prj\", fh.read())\n            for suffix in [\"shp\", \"shx\", \"dbf\"]:\n                zf.write(f\"{tmpdir}/{fn}.{suffix}\", f\"{fn}.{suffix}\")\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", f\"attachment; filename={fn}.zip\"),\n    ]\n    start_response(\"200 OK\", headers)\n\n    return zio.getvalue()\n\n\n@iemapp(default_tz=\"UTC\", help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Do something fun!\"\"\"\n    query: Schema = environ[\"_cgimodel_schema\"]\n    if query.sts is None or query.ets is None:\n        raise IncompleteWebRequest(\"GET start or end time parameters missing\")\n    return [run(query, start_response)]\n"
  },
  {
    "path": "pylib/iemweb/request/gis/spc_mcd.py",
    "content": "\"\"\".. title:: Storm Prediction Center Mesoscale Convective Discussion\n\nDocumentation for /cgi-bin/request/gis/spc_mcd.py\n-------------------------------------------------\n\nThe IEM archives Storm Prediction Center Mesoscale Convective Discussions (MCD)\nin real-time and makes them available for download via this service.  The\nraw product text is not emitted here, but the ``prod_id`` is included, which\nis a reference to the raw product text.\n\nChangelog\n---------\n\n- 2025-03-12: Added new Most Probable Intensity tags\n- 2024-05-29: Initial documentation\n\nExample Usage\n-------------\n\nReturn all MCDs for 2023\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/spc_mcd.py?\\\nsts=2023-01-01T00:00Z&ets=2024-01-01T00:00Z\n\n\"\"\"\n\nimport tempfile\nimport zipfile\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport geopandas as gpd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, iemapp\n\nPRJFILE = \"/opt/iem/data/gis/meta/4326.prj\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    sts: Annotated[AwareDatetime | None, Field(description=\"Start Time\")] = (\n        None\n    )\n    ets: Annotated[AwareDatetime | None, Field(description=\"End Time\")] = None\n    year1: int = Field(\n        None, description=\"Start UTC Year when sts is not provided\"\n    )\n    year2: int = Field(\n        None, description=\"End UTC Year when ets is not provided\"\n    )\n    month1: int = Field(\n        None, description=\"Start UTC Month when sts is not provided\"\n    )\n    month2: int = Field(\n        None, description=\"End UTC Month when ets is not provided\"\n    )\n    day1: int = Field(\n        None, description=\"Start UTC Day when sts is not provided\"\n    )\n    day2: int = Field(None, description=\"End UTC Day when ets is not provided\")\n    hour1: int = Field(\n        None, description=\"Start UTC Hour when sts is not provided\"\n    )\n    hour2: int = Field(\n        None, description=\"End UTC Hour when ets is not provided\"\n    )\n    minute1: int = Field(\n        None, description=\"Start UTC Minute when sts is not provided\"\n    )\n    minute2: int = Field(\n        None, description=\"End UTC Minute when ets is not provided\"\n    )\n\n\ndef run(query: Schema, start_response: callable):\n    \"\"\"Do something!\"\"\"\n    common = \"at time zone 'UTC', 'YYYYMMDDHH24MI'\"\n    schema = {\n        \"geometry\": \"Polygon\",\n        \"properties\": {\n            \"ISSUE\": \"str:12\",\n            \"EXPIRE\": \"str:12\",\n            \"PROD_ID\": \"str:35\",\n            \"YEAR\": \"int\",\n            \"NUM\": \"int\",\n            \"CONFIDEN\": \"int\",\n            \"CONCERN\": \"str:64\",\n            \"MP_TORN\": \"str:32\",\n            \"MP_HAIL\": \"str:32\",\n            \"MP_GUST\": \"str:32\",\n        },\n    }\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = gpd.read_postgis(\n            sql_helper(\n                \"\"\"select to_char(issue {common}) as issue,\n            to_char(expire {common}) as expire,\n            product_id as prod_id, year, num, watch_confidence as confiden,\n            concerning as concern, most_prob_tornado as mp_torn,\n            most_prob_hail as mp_hail, most_prob_gust as mp_gust, geom\n            from mcd WHERE issue >= :sts and\n            issue < :ets ORDER by issue ASC\"\"\",\n                common=common,\n            ),\n            conn,\n            params={\n                \"sts\": query.sts,\n                \"ets\": query.ets,\n            },\n            geom_col=\"geom\",\n        )  # type: ignore\n    if df.empty:\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return b\"ERROR: no results found for your query\"\n    df.columns = [s.upper() if s != \"geom\" else \"geom\" for s in df.columns]\n    fn = f\"mcd_{query.sts:%Y%m%d%H%M}_{query.ets:%Y%m%d%H%M}\"\n\n    with tempfile.TemporaryDirectory() as tmpdir:\n        df.to_file(f\"{tmpdir}/{fn}.shp\", schema=schema, engine=\"fiona\")\n\n        zio = BytesIO()\n        with zipfile.ZipFile(\n            zio, mode=\"w\", compression=zipfile.ZIP_DEFLATED\n        ) as zf:\n            with open(PRJFILE, encoding=\"utf-8\") as fh:\n                zf.writestr(f\"{fn}.prj\", fh.read())\n            for suffix in [\"shp\", \"shx\", \"dbf\"]:\n                zf.write(f\"{tmpdir}/{fn}.{suffix}\", f\"{fn}.{suffix}\")\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", f\"attachment; filename={fn}.zip\"),\n    ]\n    start_response(\"200 OK\", headers)\n\n    return zio.getvalue()\n\n\n@iemapp(default_tz=\"UTC\", help=__doc__, schema=Schema)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Do something fun!\"\"\"\n    query: Schema = environ[\"_cgimodel_schema\"]\n    if query.sts is None or query.ets is None:\n        raise IncompleteWebRequest(\"GET sts/ets parameter not provided\")\n    if query.sts > query.ets:\n        query.sts, query.ets = query.ets, query.sts\n    return [run(query, start_response)]\n"
  },
  {
    "path": "pylib/iemweb/request/gis/spc_outlooks.py",
    "content": "\"\"\".. title:: Download SPC Convective and Fire Weather or WPC ERO Outlooks\n\nReturn to `API Services </api/#cgi>`_ or\n`User Frontend </request/gis/spc_outlooks.phtml>`_\n\nDocumentation for /cgi-bin/request/gis/spc_outlooks.py\n------------------------------------------------------\n\nThis application allows for the download of SPC Convective and Fire Weather\nor WPC Excessive Rainfall Outlooks in shapefile format.\n\nChangelog\n---------\n\n- 2025-04-08: A limit was placed on the number of years and outlook types\n  that can be requested at one time.  This limit is currently 10.\n- 2024-06-14: Initial documentation of this backend\n\nExample Requests\n----------------\n\nProvide all of the day 2 convective outlooks for the year 2024:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/spc_outlooks.py?d=2&\\\ntype=C&sts=2024-01-01T00:00Z&ets=2025-01-01T00:00Z\n\n\"\"\"\n\nimport tempfile\nimport zipfile\nfrom io import BytesIO\n\nimport geopandas as gpd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nPRJFILE = \"/opt/iem/data/gis/meta/4326.prj\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    d: ListOrCSVType = Field(\n        [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\"], description=\"Days to include\"\n    )\n    ets: AwareDatetime = Field(\n        None, description=\"End of the period to include\"\n    )\n    geom: str = Field(\n        \"geom_layers\",\n        description=(\n            \"Express geometries either as layers or non-overlapping \"\n            \"geometries.\"\n        ),\n        pattern=\"geom_layers|geom\",\n    )\n    sts: AwareDatetime = Field(\n        None, description=\"Start of the period to include\"\n    )\n    type: ListOrCSVType = Field(\n        [\"C\", \"F\"], description=\"Outlook types to include\"\n    )\n    year1: int = Field(None, description=\"Start year when sts is not set.\")\n    month1: int = Field(None, description=\"Start month when sts is not set.\")\n    day1: int = Field(None, description=\"Start day when sts is not set.\")\n    hour1: int = Field(None, description=\"Start hour when sts is not set.\")\n    minute1: int = Field(None, description=\"Start minute when sts is not set.\")\n    year2: int = Field(None, description=\"End year when ets is not set.\")\n    month2: int = Field(None, description=\"End month when ets is not set.\")\n    day2: int = Field(None, description=\"End day when ets is not set.\")\n    hour2: int = Field(None, description=\"End hour when ets is not set.\")\n    minute2: int = Field(None, description=\"End minute when ets is not set.\")\n\n\ndef get_context(environ):\n    \"\"\"Figure out the CGI variables passed to this script\"\"\"\n    types = [x[0].upper() for x in environ[\"type\"]]\n    days = [int(x) for x in environ[\"d\"]]\n    return {\n        \"sts\": environ[\"sts\"],\n        \"ets\": environ[\"ets\"],\n        \"types\": types,\n        \"days\": days,\n        \"geom_col\": environ[\"geom\"],\n    }\n\n\ndef run(ctx, start_response):\n    \"\"\"Do something!\"\"\"\n    common = \"at time zone 'UTC', 'YYYYMMDDHH24MI'\"\n    schema = {\n        \"geometry\": \"MultiPolygon\",\n        \"properties\": {\n            \"ISSUE\": \"str:12\",\n            \"EXPIRE\": \"str:12\",\n            \"PRODISS\": \"str:12\",\n            \"TYPE\": \"str:1\",\n            \"DAY\": \"int\",\n            \"THRESHOLD\": \"str:4\",\n            \"CATEGORY\": \"str:48\",  # 43 as checked max, to save space\n            \"CYCLE\": \"int\",\n        },\n    }\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = gpd.read_postgis(\n            sql_helper(\n                \"\"\"select\n            to_char(issue {common}) as issue,\n            to_char(expire {common}) as expire,\n            to_char(product_issue {common}) as prodiss,\n            outlook_type as type, day, threshold, category, cycle,\n            {geocol} as geom\n            from spc_outlooks WHERE product_issue >= :sts and\n            product_issue < :ets and outlook_type = ANY(:types)\n            and day = ANY(:days)\n            ORDER by product_issue ASC\n            \"\"\",\n                common=common,\n                geocol=ctx[\"geom_col\"],\n            ),\n            conn,\n            params={\n                \"sts\": ctx[\"sts\"],\n                \"ets\": ctx[\"ets\"],\n                \"types\": ctx[\"types\"],\n                \"days\": ctx[\"days\"],\n            },\n            geom_col=\"geom\",\n        )  # type: ignore\n    if df.empty:\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return b\"ERROR: no results found for your query\"\n    df.columns = [s.upper() if s != \"geom\" else \"geom\" for s in df.columns]\n    fn = f\"outlooks_{ctx['sts']:%Y%m%d%H%M}_{ctx['ets']:%Y%m%d%H%M}\"\n\n    with tempfile.TemporaryDirectory() as tmpdir:\n        df.to_file(f\"{tmpdir}/{fn}.shp\", schema=schema, engine=\"fiona\")\n\n        zio = BytesIO()\n        with zipfile.ZipFile(\n            zio, mode=\"w\", compression=zipfile.ZIP_DEFLATED\n        ) as zf:\n            with open(PRJFILE, encoding=\"utf-8\") as fh:\n                zf.writestr(f\"{fn}.prj\", fh.read())\n            for suffix in [\"shp\", \"shx\", \"dbf\"]:\n                zf.write(f\"{tmpdir}/{fn}.{suffix}\", f\"{fn}.{suffix}\")\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", f\"attachment; filename={fn}.zip\"),\n    ]\n    start_response(\"200 OK\", headers)\n\n    return zio.getvalue()\n\n\n@iemapp(default_tz=\"UTC\", help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Do something fun!\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"GET start/end time parameters missing\")\n    if (environ[\"ets\"].year - environ[\"sts\"].year) * len(environ[\"type\"]) > 10:\n        raise IncompleteWebRequest(\n            \"Requests are limited to 10 outlook years at a time.\"\n        )\n    ctx = get_context(environ)\n    return [run(ctx, start_response)]\n"
  },
  {
    "path": "pylib/iemweb/request/gis/spc_watch.py",
    "content": "\"\"\".. title:: Download SPC Watch Polygons and Metadata\n\nDocumentation for /cgi-bin/request/gis/spc_watch.py\n---------------------------------------------------\n\nThe IEM archives the Storm Prediction Center (SPC) watch polygons and\nassociated metadata.  Please note that these polygons are no longer the\nofficial watch geography with watch-by-county being the official product.\nThese polygons are still generally useful and somewhat accurate to the actual\nwatch geographic extent.\n\nChangelog\n---------\n\n- 2024-06-27: Default `hour1`,`hour2`,`minute1`,`minute2` to 0, so they do not\n  need to be provided.\n- 2024-06-09: Initial Documentation\n\nExample Usage\n-------------\n\nReturn all watch polygons for UTC 2024 in GeoJSON.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/spc_watch.py?\\\nsts=2024-01-01T00:00:00Z&ets=2025-01-01T00:00:00Z&format=geojson\n\nSame as above, but in KML format.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/spc_watch.py?\\\nsts=2024-01-01T00:00:00Z&ets=2025-01-01T00:00:00Z&format=kml\n\nSame as above, but in CSV format.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/spc_watch.py?\\\nsts=2024-01-01T00:00:00Z&ets=2025-01-01T00:00:00Z&format=csv\n\nSame as above, but in Shapefile format.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/spc_watch.py?\\\nsts=2024-01-01T00:00:00Z&ets=2025-01-01T00:00:00Z&format=shp\n\n\"\"\"\n\nimport tempfile\nimport zipfile\nfrom io import BytesIO\n\nimport fiona\nimport geopandas as gpd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, iemapp\n\nfiona.supported_drivers[\"KML\"] = \"rw\"\nPRJFILE = \"/opt/iem/data/gis/meta/4326.prj\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    ets: AwareDatetime = Field(None, description=\"End Time\")\n    format: str = Field(\"shp\", description=\"Output format\")\n    sts: AwareDatetime = Field(None, description=\"Start Time\")\n    year1: int = Field(None, description=\"Start year when sts is not provided\")\n    year2: int = Field(None, description=\"End year when ets is not provided\")\n    month1: int = Field(\n        None, description=\"Start month when sts is not provided\"\n    )\n    month2: int = Field(None, description=\"End month when ets is not provided\")\n    day1: int = Field(None, description=\"Start day when sts is not provided\")\n    day2: int = Field(None, description=\"End day when ets is not provided\")\n    hour1: int = Field(0, description=\"Start hour when sts is not provided\")\n    hour2: int = Field(0, description=\"End hour when ets is not provided\")\n    minute1: int = Field(\n        0, description=\"Start minute when sts is not provided\"\n    )\n    minute2: int = Field(0, description=\"End minute when ets is not provided\")\n\n\ndef start_headers(start_response, ctx, fn):\n    \"\"\"Figure out the proper headers for the output\"\"\"\n    suffix = \"zip\" if ctx[\"format\"] == \"shp\" else ctx[\"format\"]\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", f\"attachment; filename={fn}.{suffix}\"),\n    ]\n    start_response(\"200 OK\", headers)\n\n\ndef run(environ, start_response):\n    \"\"\"Do something!\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"Missing start or end time\")\n    common = \"at time zone 'UTC', 'YYYYMMDDHH24MI'\"\n    schema = {\n        \"geometry\": \"MultiPolygon\",\n        \"properties\": {\n            \"ISSUE\": \"str:12\",\n            \"EXPIRE\": \"str:12\",\n            \"SEL\": \"str:5\",\n            \"TYPE\": \"str:3\",\n            \"NUM\": \"int\",\n            \"P_TORTWO\": \"int\",\n            \"P_TOREF2\": \"int\",\n            \"P_WIND10\": \"int\",\n            \"P_WIND65\": \"int\",\n            \"P_HAIL10\": \"int\",\n            \"P_HAIL2I\": \"int\",\n            \"P_HAILWND\": \"int\",\n            \"MAX_HAIL\": \"float\",\n            \"MAX_GUST\": \"int\",\n            \"MAX_TOPS\": \"int\",\n            \"MV_DRCT\": \"int\",\n            \"MV_SKNT\": \"int\",\n            \"IS_PDS\": \"bool\",\n        },\n    }\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = gpd.read_postgis(\n            sql_helper(\n                \"\"\"select\n            to_char(issued {common}) as issue,\n            to_char(expired {common}) as expire,\n            sel, type, num, geom,\n            tornadoes_2m as p_tortwo, tornadoes_1m_strong as p_toref2,\n            wind_10m as p_wind10, wind_1m_65kt as p_wind65,\n            hail_10m as p_hail10, hail_1m_2inch as p_hail2i,\n            hail_wind_6m as p_hailwnd, max_hail_size as max_hail,\n            max_wind_gust_knots as max_gust, max_tops_feet as max_tops,\n            storm_motion_drct as mv_drct, storm_motion_sknt as mv_sknt,\n            is_pds\n            from watches WHERE issued >= :sts and\n            issued < :ets ORDER by issued ASC\n            \"\"\",\n                common=common,\n            ),\n            conn,\n            params={\n                \"sts\": environ[\"sts\"],\n                \"ets\": environ[\"ets\"],\n            },\n            geom_col=\"geom\",\n        )  # type: ignore\n    if df.empty:\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return b\"ERROR: no results found for your query\"\n    df.columns = [s.upper() if s != \"geom\" else \"geom\" for s in df.columns]\n    fn = f\"watches_{environ['sts']:%Y%m%d%H%M}_{environ['ets']:%Y%m%d%H%M}\"\n    start_headers(start_response, environ, fn)\n    if environ[\"format\"] == \"csv\":\n        return df.to_csv(index=False).encode(\"utf-8\")\n    if environ[\"format\"] == \"geojson\":\n        with tempfile.NamedTemporaryFile(\"w\", delete=True) as tmp:\n            df.to_file(tmp.name, driver=\"GeoJSON\")\n            with open(tmp.name, encoding=\"utf8\") as fh:\n                res = fh.read()\n        return res.encode(\"utf-8\")\n    if environ[\"format\"] == \"kml\":\n        df[\"NAME\"] = (\n            df[\"ISSUE\"].str.slice(0, 4)\n            + \": \"\n            + df[\"TYPE\"]\n            + \" #\"\n            + df[\"NUM\"].apply(str)\n        )\n        fp = BytesIO()\n        with fiona.Env():\n            df.to_file(fp, driver=\"KML\", NameField=\"NAME\", engine=\"fiona\")\n        return fp.getvalue()\n\n    with tempfile.TemporaryDirectory() as tmpdir:\n        df.to_file(f\"{tmpdir}/{fn}.shp\", schema=schema, engine=\"fiona\")\n\n        zio = BytesIO()\n        with zipfile.ZipFile(\n            zio, mode=\"w\", compression=zipfile.ZIP_DEFLATED\n        ) as zf:\n            with open(PRJFILE, encoding=\"utf-8\") as fh:\n                zf.writestr(f\"{fn}.prj\", fh.read())\n            for suffix in [\"shp\", \"shx\", \"dbf\"]:\n                zf.write(f\"{tmpdir}/{fn}.{suffix}\", f\"{fn}.{suffix}\")\n\n    return zio.getvalue()\n\n\n@iemapp(default_tz=\"UTC\", help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Do something fun!\"\"\"\n    return [run(environ, start_response)]\n"
  },
  {
    "path": "pylib/iemweb/request/gis/sps.py",
    "content": "\"\"\".. title:: Special Weather Statement (SPS) Data Service\n\nReturn to `API Services </api/#cgi>`_ or\n`SPS Download Frontend </request/gis/sps.phtml>`_.\n\nDocumentation for /cgi-bin/request/gis/sps.py\n---------------------------------------------\n\nThis service emits a shapefile of Special Weather Statements (SPS) data.\n\nChangelog\n---------\n\n- 2024-09-23: Initial documentation release\n\nExample Requests\n----------------\n\nProvide a zip file of SPS data from August 2024\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/sps.py?\\\nsts=2024-08-01T00:00Z&ets=2024-09-01T00:00Z\n\n\"\"\"\n\nimport tempfile\nimport zipfile\nfrom io import BytesIO\n\nimport geopandas as gpd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, iemapp\n\nPRJFILE = \"/opt/iem/data/gis/meta/4326.prj\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    sts: AwareDatetime = Field(\n        None, description=\"Start timestamp for the data request\"\n    )\n    ets: AwareDatetime = Field(\n        None, description=\"End timestamp for the data request\"\n    )\n    year1: int = Field(\n        None, description=\"Start year, when sts is not provided\"\n    )\n    month1: int = Field(\n        None, description=\"Start month, when sts is not provided\"\n    )\n    day1: int = Field(None, description=\"Start day, when sts is not provided\")\n    hour1: int = Field(\n        None, description=\"Start hour, when sts is not provided\"\n    )\n    minute1: int = Field(\n        None, description=\"Start minute, when sts is not provided\"\n    )\n    year2: int = Field(None, description=\"End year, when ets is not provided\")\n    month2: int = Field(\n        None, description=\"End month, when ets is not provided\"\n    )\n    day2: int = Field(None, description=\"End day, when ets is not provided\")\n    hour2: int = Field(None, description=\"End hour, when ets is not provided\")\n    minute2: int = Field(\n        None, description=\"End minute, when ets is not provided\"\n    )\n\n\ndef run(ctx, start_response):\n    \"\"\"Do something!\"\"\"\n    common = \"at time zone 'UTC', 'YYYYMMDDHH24MI'\"\n    schema = {\n        \"geometry\": \"Polygon\",\n        \"properties\": {\n            \"ISSUE\": \"str:12\",\n            \"EXPIRE\": \"str:12\",\n            \"PROD_ID\": \"str:36\",\n            \"WFO\": \"str:3\",\n            \"LNDSPOUT\": \"str:64\",\n            \"WTRSPOUT\": \"str:64\",\n            \"MAX_HAIL\": \"str:16\",\n            \"MAX_WIND\": \"str:16\",\n            \"TML_VALD\": \"str:12\",\n            \"TML_DRCT\": \"int\",\n            \"TML_SKNT\": \"int\",\n        },\n    }\n    with get_sqlalchemy_conn(\"postgis\") as pgconn:\n        df = gpd.read_postgis(\n            sql_helper(\n                \"\"\"\n            select to_char(issue {common}) as issue,\n            to_char(expire {common}) as expire, product_id as prod_id,\n            wfo, landspout as lndspout, waterspout as wtrspout,\n            max_hail_size as max_hail, max_wind_gust as max_wind,\n            to_char(tml_valid {common}) as tml_vald,\n            tml_direction as tml_drct,\n            tml_sknt, geom from sps WHERE issue >= :sts and\n            issue < :ets and not ST_isempty(geom) ORDER by issue ASC\n            \"\"\",\n                common=common,\n            ),\n            pgconn,\n            params=ctx,\n            geom_col=\"geom\",\n        )  # type: ignore\n    if df.empty:\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return b\"ERROR: no results found for your query\"\n    df.columns = [s.upper() if s != \"geom\" else \"geom\" for s in df.columns]\n    fn = f\"sps_{ctx['sts']:%Y%m%d%H%M}_{ctx['ets']:%Y%m%d%H%M}\"\n\n    with tempfile.TemporaryDirectory() as tmpdir:\n        df.to_file(f\"{tmpdir}/{fn}.shp\", schema=schema, engine=\"fiona\")\n\n        zio = BytesIO()\n        with zipfile.ZipFile(\n            zio, mode=\"w\", compression=zipfile.ZIP_DEFLATED\n        ) as zf:\n            with open(PRJFILE, encoding=\"ascii\") as fp:\n                zf.writestr(f\"{fn}.prj\", fp.read())\n            for suffix in (\"shp\", \"shx\", \"dbf\"):\n                zf.write(f\"{tmpdir}/{fn}.{suffix}\", f\"{fn}.{suffix}\")\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", f\"attachment; filename={fn}.zip\"),\n    ]\n    start_response(\"200 OK\", headers)\n\n    return zio.getvalue()\n\n\n@iemapp(default_tz=\"UTC\", help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Do something fun!\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"GET start/end timestamp params missing\")\n    ctx = {\"sts\": environ[\"sts\"], \"ets\": environ[\"ets\"]}\n    return [run(ctx, start_response)]\n"
  },
  {
    "path": "pylib/iemweb/request/gis/watch_by_county.py",
    "content": "\"\"\"..title :: Watch By County Shapefile Export\n\nReturn to `API Services </api/#cgi>`_\n\nChangelog\n---------\n\n- 2026-01-01: A bug was fixed with the resulting download zip file name.\n\nExample Requests\n----------------\n\nReturn the watch by county shapefile for watch 275 at 17 UTC on 21 May 2024\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/watch_by_county.py?\\\netn=275&year=2024&month=5&day=21&hour=17&minute=0\n\n\"\"\"\n\nimport tempfile\nimport zipfile\nfrom io import BytesIO\n\nfrom osgeo import ogr\nfrom pydantic import Field\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nogr.UseExceptions()\nPROJFILE = \"/opt/iem/data/gis/meta/4326.prj\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    etn: int = Field(default=None, description=\"Event ID\")\n    year: int = Field(default=None, description=\"Year of valid timestamp\")\n    month: int = Field(default=None, description=\"Month of valid timestamp\")\n    day: int = Field(default=None, description=\"Day of valid timestamp\")\n    hour: int = Field(default=None, description=\"Hour of valid timestamp\")\n    minute: int = Field(default=None, description=\"Minute of valid timestamp\")\n\n\ndef get_ts_fn(environ):\n    \"\"\"Figure out what is requested.\"\"\"\n    # Get CGI vars\n    if environ[\"year\"] is not None:\n        ts = utc(\n            environ[\"year\"],\n            environ[\"month\"],\n            environ[\"day\"],\n            environ[\"hour\"],\n            environ[\"minute\"],\n        )\n        fn = f\"watch_by_county_{ts:%Y%m%d%H%M}\"\n    else:\n        ts = utc()\n        fn = \"watch_by_county\"\n    return ts, fn\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Go Main Go\"\"\"\n    try:\n        ts, fn = get_ts_fn(environ)\n    except Exception as exp:\n        raise IncompleteWebRequest(\"bad input provided\") from exp\n    if environ[\"etn\"] is not None:\n        etnLimiter = f\"and eventid = {int(environ.get('etn'))}\"\n    else:\n        etnLimiter = \"\"\n\n    with tempfile.TemporaryDirectory() as tmpdir:\n        table = f\"warnings_{ts.year}\"\n        source = ogr.Open(\n            \"PG:host=iemdb-postgis.local dbname=postgis \"\n            f\"user=nobody tables={table}(tgeom)\"\n        )\n\n        out_driver = ogr.GetDriverByName(\"ESRI Shapefile\")\n        out_ds = out_driver.CreateDataSource(f\"{tmpdir}/{fn}.shp\")\n        out_layer = out_ds.CreateLayer(\"polygon\", None, ogr.wkbPolygon)\n\n        fd = ogr.FieldDefn(\"ISSUED\", ogr.OFTString)\n        fd.SetWidth(12)\n        out_layer.CreateField(fd)\n\n        fd = ogr.FieldDefn(\"EXPIRED\", ogr.OFTString)\n        fd.SetWidth(12)\n        out_layer.CreateField(fd)\n\n        fd = ogr.FieldDefn(\"PHENOM\", ogr.OFTString)\n        fd.SetWidth(2)\n        out_layer.CreateField(fd)\n\n        fd = ogr.FieldDefn(\"SIG\", ogr.OFTString)\n        fd.SetWidth(1)\n        out_layer.CreateField(fd)\n\n        fd = ogr.FieldDefn(\"ETN\", ogr.OFTInteger)\n        out_layer.CreateField(fd)\n\n        tt = ts.strftime(\"%Y-%m-%d %H:%M+00\")\n        sql = f\"\"\"\n            select phenomena, eventid, ST_multi(ST_union(u.geom)) as tgeom,\n            max(to_char(expire at time zone 'UTC', 'YYYYMMDDHH24MI'))\n                as utcexpire,\n            min(to_char(issue at time zone 'UTC', 'YYYYMMDDHH24MI'))\n                as utcissue\n            from warnings w JOIN ugcs u on (u.gid = w.gid)\n            WHERE vtec_year = {ts.year} and\n            significance = 'A' and phenomena IN ('TO','SV')\n            and issue > '{tt}'::timestamp -'3 days':: interval\n            and issue <= '{tt}' and\n            expire > '{tt}' {etnLimiter}\n            GROUP by phenomena, eventid ORDER by phenomena ASC\n        \"\"\"\n\n        data = source.ExecuteSQL(sql)\n\n        while True:\n            feat = data.GetNextFeature()\n            if not feat:\n                break\n            geom = feat.GetGeometryRef()\n\n            featDef = ogr.Feature(out_layer.GetLayerDefn())\n            featDef.SetGeometry(geom)\n            featDef.SetField(\"PHENOM\", feat.GetField(\"phenomena\"))\n            featDef.SetField(\"SIG\", \"A\")\n            featDef.SetField(\"ETN\", feat.GetField(\"eventid\"))\n            featDef.SetField(\"ISSUED\", feat.GetField(\"utcissue\"))\n            featDef.SetField(\"EXPIRED\", feat.GetField(\"utcexpire\"))\n\n            out_layer.CreateFeature(featDef)\n            feat.Destroy()\n\n        source.Close()\n        out_ds.Close()\n\n        zio = BytesIO()\n        with zipfile.ZipFile(\n            zio, mode=\"w\", compression=zipfile.ZIP_DEFLATED\n        ) as zf:\n            with open(PROJFILE, encoding=\"ascii\") as fp:\n                zf.writestr(f\"{fn}.prj\", fp.read())\n            for suffix in (\"shp\", \"shx\", \"dbf\"):\n                zf.write(f\"{tmpdir}/{fn}.{suffix}\", f\"{fn}.{suffix}\")\n\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", f\"attachment; filename={fn}.zip\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return [zio.getvalue()]\n"
  },
  {
    "path": "pylib/iemweb/request/gis/watchwarn.py",
    "content": "\"\"\".. title:: NWS Watch/Warning/Advisory (WWA) Data Service\n\nReturn to `API Services </api/#cgi>`_ or\n`Download User Interface </request/gis/watchwarn.phtml>`_.\n\nDocumentation for /cgi-bin/request/gis/watchwarn.py\n---------------------------------------------------\n\nThis service emits shapefiles (with additional csv included),\nor even Excel files.  This service is\nrather blunt force and perhaps you should review the mountain of adhoc JSON/API\nservices found at\n`IEM API Homepage </api/>`_ or at\n`IEM API WebServices </api/1/docs>`_ .\n\nChangelog\n---------\n\n- 2026-04-24: KML output support was added via `accept=kml`. The KML include\n  \"TimeSpan\" information for KML clients that support it.\n- 2026-03-16: Boolean fields were improved to allow for more truthy inputs\n  than just `yes` and `no`.\n- 2025-12-17: Improved the error message when provided time information is\n  not sufficient.  Additionally, the hour values now default to 0 and minute\n  values to 0 as well.\n- 2025-07-12: Added ``fcster`` parameter to filter results by forecaster name\n  (case-insensitive matching).  This field is also added to the output.\n- 2025-05-09: Fixed issue with ``ETN`` DBF column allways being (null).\n- 2024-10-28: Optimize the zipfile response by streaming the result.\n- 2024-10-22: Fix and better document the ``at`` parameter for when\n  ``timeopt=2``.\n- 2024-07-03: Added a `accept=csv` option to allow for CSV output.\n- 2024-06-26: Added `limitpds` parameter to limit the request to only include\n  products that have a PDS (Particularly Dangerous Situation) tag or phrasing.\n- 2024-05-14: To mitigate against large requests that overwhelm the server, a\n  limit of one year's worth of data is now in place for requests that do not\n  limit the request by either state, phenomena, nor wfo.\n- 2024-05-09: Migrated to pydantic based CGI input validation.\n\nExample Usage\n-------------\n\nReturn all Areal Flood, Flash Flood, Severe Thunderstorm, and Tornado Watch\nand Warnings for the state of Mississippi during 2024.  Note how the phenomena\nand significance parameters are repeated so that each combination is present.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/watchwarn.py?\\\naccept=shapefile&sts=2024-01-01T00:00Z&ets=2025-01-01T00:00Z&\\\nlocation_group=states&states=MS&limitps=1&phenomena=FF,FA,SV,TO,FF,FA,SV,TO&\\\nsignificance=W,W,W,W,A,A,A,A\n\nReturn all Tornado Warnings for the Des Moines WFO in shapefile format during\n2023.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/watchwarn.py\\\n?accept=shapefile&sts=2023-01-01T00:00Z&ets=2024-01-01T00:00Z&wfo[]=DMX\\\n&limitps=1&phenomena=TO&significance=W\n\nProvide all Tornado Warnings valid at 2120 UTC on 21 May 2024\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/watchwarn.py\\\n?accept=shapefile&at=2024-05-21T21:20Z&timeopt=2&limitps=1&phenomena=TO\\\n&significance=W\n\nSame request, but return an excel file\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/watchwarn.py\\\n?accept=excel&at=2024-05-21T21:20Z&timeopt=2&limitps=1&phenomena=TO\\\n&significance=W\n\nSame request, but return csv\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/watchwarn.py\\\n?accept=csv&at=2024-05-21T21:20Z&timeopt=2&limitps=1&phenomena=TO\\\n&significance=W\n\nSame request, but return KML\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/watchwarn.py\\\n?accept=kml&at=2024-05-21T21:20Z&timeopt=2&limitps=1&phenomena=TO\\\n&significance=W\n\nSame request, but using the more verbose parameterization for the timestamp\nand also filtering the result by text products signed by john\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/watchwarn.py\\\n?accept=shapefile&year3=2024&month3=5&day3=21&hour3=21&minute3=20&timeopt=2\\\n&limitps=1&phenomena=TO&significance=W&fcster=john\n\n\"\"\"\n\nimport tempfile\nimport zlib\nfrom datetime import datetime, timedelta\nfrom io import BytesIO\nfrom stat import S_IFREG\nfrom typing import Annotated\nfrom xml.sax.saxutils import escape as xml_escape\n\nimport fiona\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field, model_validator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.nws.vtec import NWS_COLORS, get_ps_string\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\nfrom shapely.geometry import mapping\nfrom shapely.wkb import loads\nfrom sqlalchemy.engine import Connection\nfrom stream_zip import ZIP_32, stream_zip\n\nfrom iemweb.fields import VTEC_YEAR_FIELD_OPTIONAL\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    accept: Annotated[\n        str,\n        Field(\n            pattern=\"^(shapefile|excel|csv|kml)$\",\n            description=(\n                \"Materialize the data as the given format, either \"\n                \"shapefile, excel, csv, or kml.  Default is shapefile.\"\n            ),\n        ),\n    ] = \"shapefile\"\n    at: AwareDatetime = Field(\n        default=None,\n        description=(\n            \"The timestamp to use when ``timeopt=2``, which the service \"\n            \"provides events valid at the specified time.\"\n        ),\n    )\n    addsvs: Annotated[\n        bool,\n        Field(\n            description=(\n                \"Include polygons that were found within any followup \"\n                \"statements after issuance.\"\n            ),\n        ),\n    ] = False\n    ets: AwareDatetime = Field(\n        default=None,\n        description=\"The end timestamp in UTC. The format is ISO8601, e.g. \"\n        \"2010-06-01T00:00Z.\",\n        ge=utc(1986, 1, 1),\n    )\n    limit0: Annotated[\n        bool,\n        Field(\n            description=\"If true, only include Tornado, Severe Thunderstorm, \"\n            \"Flash Flood, and Marine Warnings.\",\n        ),\n    ] = False\n    limit1: Annotated[\n        bool,\n        Field(\n            description=\"If true, only include Storm Based Warnings.\",\n        ),\n    ] = False\n    limit2: Annotated[\n        bool,\n        Field(\n            description=\"If true, only include Emergency Warnings.\",\n        ),\n    ] = False\n    limitpds: Annotated[\n        bool,\n        Field(\n            description=(\n                \"If true, only include products that have a PDS \"\n                \"(Particularly Dangerous Situation) tag or phrasing.\"\n            ),\n        ),\n    ] = False\n    limitps: Annotated[\n        bool,\n        Field(\n            description=\"If true, only include the specified phenomena and \"\n            \"significance.\",\n        ),\n    ] = False\n    location_group: str = Field(\n        default=\"wfo\",\n        pattern=\"^(wfo|states)$\",\n        description=\"The location group to use, either wfo or states.\",\n    )\n    phenomena: ListOrCSVType = Field(\n        default=[\"TO\"],\n        description=\"The two character VTEC phenomena(s) to include. If you \"\n        \"provide more than one value, the length must correspond and align \"\n        \"with the ``significance`` parameter.\",\n    )\n    simple: Annotated[\n        bool,\n        Field(\n            description=\"If true, use a simplified geometry for the UGC \"\n            \"counties/zones.\",\n        ),\n    ] = True\n    significance: ListOrCSVType = Field(\n        default=[\"W\"],\n        description=\"The one character VTEC significance to include, if you \"\n        \"provide more than one value, the length must correspond \"\n        \"and align with the ``phenomena`` parameter.\",\n    )\n    states: ListOrCSVType = Field(\n        default=None, description=\"List of states to include data for.\"\n    )\n    sts: AwareDatetime = Field(\n        default=None,\n        description=\"The start timestamp in UTC. The format is ISO8601, e.g. \"\n        \"2010-06-01T00:00Z.\",\n        ge=utc(1986, 1, 1),\n    )\n    timeopt: int = Field(\n        default=1,\n        description=\"The time option to use, either 1 or 2, default is 1, \"\n        \"which uses the start and end timestamps to determine \"\n        \"which events to include. Option 2 uses the ``at`` timestamp \"\n        \"to determine which events to include.\",\n        ge=1,\n        le=2,\n    )\n    wfo: ListOrCSVType = Field(\n        default=None, description=\"List of WFOs to include data for.\"\n    )\n    wfos: ListOrCSVType = Field(\n        default=None, description=\"Legacy parameter, update to use ``wfo``.\"\n    )\n    year1: VTEC_YEAR_FIELD_OPTIONAL = None\n    year2: VTEC_YEAR_FIELD_OPTIONAL = None\n    year3: VTEC_YEAR_FIELD_OPTIONAL = None\n    month1: int = Field(\n        default=None,\n        description=\"The start timestamp components in UTC, if you specify a \"\n        \"sts parameter, these are ignored.\",\n        ge=1,\n        le=12,\n    )\n    month2: int = Field(\n        default=None,\n        description=\"The end timestamp components in UTC, if you specify a \"\n        \"ets parameter, these are ignored.\",\n        ge=1,\n        le=12,\n    )\n    month3: int = Field(\n        default=None,\n        description=(\n            \"The ``at`` timestamp components in UTC.  When timeopt is 2, \"\n            \"this is used to find all events that were valid at this \"\n            \"time.\"\n        ),\n        ge=1,\n        le=12,\n    )\n    day1: int = Field(\n        default=None,\n        description=\"The start timestamp components in UTC, if you specify a \"\n        \"sts parameter, these are ignored.\",\n        ge=1,\n        le=31,\n    )\n    day2: int = Field(\n        default=None,\n        description=\"The end timestamp components in UTC, if you specify a \"\n        \"ets parameter, these are ignored.\",\n        ge=1,\n        le=31,\n    )\n    day3: int = Field(\n        default=None,\n        description=(\n            \"The ``at`` timestamp components in UTC.  When timeopt is 2, \"\n            \"this is used to find all events that were valid at this \"\n            \"time.\"\n        ),\n        ge=1,\n        le=31,\n    )\n    hour1: int = Field(\n        default=0,\n        description=\"The start timestamp components in UTC, if you specify a \"\n        \"sts parameter, these are ignored.\",\n        ge=0,\n        le=23,\n    )\n    hour2: int = Field(\n        default=0,\n        description=\"The end timestamp components in UTC, if you specify a \"\n        \"ets parameter, these are ignored.\",\n        ge=0,\n        le=23,\n    )\n    hour3: int = Field(\n        default=0,\n        description=(\n            \"The ``at`` timestamp components in UTC.  When timeopt is 2, \"\n            \"this is used to find all events that were valid at this \"\n            \"time.\"\n        ),\n        ge=0,\n        le=23,\n    )\n    minute1: int = Field(\n        default=0,\n        description=\"The start timestamp components in UTC, if you specify a \"\n        \"sts parameter, these are ignored.\",\n        ge=0,\n        le=59,\n    )\n    minute2: int = Field(\n        default=0,\n        description=\"The end timestamp components in UTC, if you specify a \"\n        \"ets parameter, these are ignored.\",\n        ge=0,\n        le=59,\n    )\n    minute3: int = Field(\n        default=0,\n        description=(\n            \"The ``at`` timestamp components in UTC.  When timeopt is 2, \"\n            \"this is used to find all events that were valid at this \"\n            \"time.\"\n        ),\n        ge=0,\n        le=59,\n    )\n    fcster: str = Field(\n        default=None,\n        description=\"Optional forecaster filter to limit results to events \"\n        \"where the forecaster field matches this value (case-insensitive).\",\n        max_length=100,\n    )\n\n    @model_validator(mode=\"after\")\n    def validate_timeopt(self):\n        \"\"\"Ensure that timeopt and times jive.\"\"\"\n        if self.timeopt == 1:\n            if self.sts is None and (\n                self.year1 is None or self.month1 is None or self.day1 is None\n            ):\n                raise ValueError(\"Either sts or {year,month,day}1 needs set\")\n            if self.ets is None and (\n                self.year2 is None or self.month2 is None or self.day2 is None\n            ):\n                raise ValueError(\"Either ets or {year,month,day}2 needs set\")\n        elif self.timeopt == 2:\n            if self.at is None and (\n                self.year3 is None or self.month3 is None or self.day3 is None\n            ):\n                raise ValueError(\"Either at or {year,month,day}3 needs set\")\n        return self\n\n\ndef dfmt(txt):\n    \"\"\"Produce a prettier format for CSV.\"\"\"\n    if txt is None or len(txt) != 12:\n        return \"\"\n    return f\"{txt[:4]}-{txt[4:6]}-{txt[6:8]} {txt[8:10]}:{txt[10:12]}\"\n\n\ndef kml_stamp(txt: str | None) -> str:\n    \"\"\"Convert YYYYmmddHHMM into KML timestamp format.\"\"\"\n    if txt is None or len(txt) != 12:\n        return \"\"\n    return f\"{txt[:4]}-{txt[4:6]}-{txt[6:8]}T{txt[8:10]}:{txt[10:12]}:00Z\"\n\n\ndef kml_nice_date(txt: str | None) -> str:\n    \"\"\"Convert YYYYmmddHHMM into user-friendly UTC time text.\"\"\"\n    if txt is None or len(txt) != 12:\n        return \"Not available\"\n    return f\"{txt[:4]}-{txt[4:6]}-{txt[6:8]} {txt[8:10]}:{txt[10:12]} UTC\"\n\n\ndef get_kml_inline_style(\n    phenomena: str, significance: str\n) -> tuple[str, str, int]:\n    \"\"\"Return line color, polygon color, and line width for KML output.\n\n    KML colors are ABGR (alpha, blue, green, red).\n    Replace this default logic with your phenomena/significance color mapping.\n    \"\"\"\n    hexrgb = NWS_COLORS.get(f\"{phenomena}.{significance}\", \"#ffffff\")\n    hexbgr = hexrgb[5:7] + hexrgb[3:5] + hexrgb[1:3]\n    return (\"ff000000\", f\"7d{hexbgr}\", 1)\n\n\ndef char3(wfos):\n    \"\"\"Make sure we don't have any 4 char IDs.\"\"\"\n    res = []\n    for wfo in wfos:\n        res.append(wfo[1:] if len(wfo) == 4 else wfo)  # noqa\n    return res\n\n\ndef parse_wfo_location_group(environ, params):\n    \"\"\"Parse wfoLimiter\"\"\"\n    limiter = \"\"\n    wfos = environ[\"wfo\"]\n    if environ[\"wfos\"]:\n        wfos = environ[\"wfos\"]\n    if wfos is not None and \"ALL\" not in wfos:\n        if len(wfos) == 1:\n            wfo = wfos[0]\n            wfo = wfo[1:] if len(wfo) == 4 else wfo\n            limiter = \" and w.wfo = :wfo \"\n            params[\"wfo\"] = wfo\n        else:\n            limiter = \" and w.wfo = ANY(:wfos) \"\n            params[\"wfos\"] = char3(wfos)\n\n    return limiter\n\n\ndef build(environ: dict) -> tuple[str, str, dict]:\n    \"\"\"Build the SQL statement.\"\"\"\n    params = {}\n    sts = environ[\"sts\"]\n    ets = environ[\"ets\"]\n    table_extra = \"\"\n    if environ[\"location_group\"] == \"states\":\n        if environ[\"states\"]:\n            params[\"states\"] = [x[:2].upper() for x in environ[\"states\"]]\n            wfo_limiter = (\n                \" and ST_Intersects(s.the_geom, w.geom) \"\n                \"and s.state_abbr = ANY(:states) \"\n            )\n            wfo_limiter2 = \" and substr(w.ugc, 1, 2) = ANY(:states) \"\n            table_extra = \" , states s \"\n        else:\n            raise IncompleteWebRequest(\"No state specified\")\n    else:  # wfo\n        wfo_limiter = parse_wfo_location_group(environ, params)\n        wfo_limiter2 = wfo_limiter\n\n    if environ[\"timeopt\"] == 1:\n        # Keep size low\n        if wfo_limiter == \"\" and (ets - sts) > timedelta(days=366):\n            raise IncompleteWebRequest(\"Please shorten request to <1 year.\")\n        # Change to postgis db once we have the wfo list\n        fn = f\"wwa_{sts:%Y%m%d%H%M}_{ets:%Y%m%d%H%M}\"\n    else:\n        if environ[\"at\"] is None:\n            year3 = int(environ.get(\"year3\"))\n            month3 = int(environ.get(\"month3\"))\n            day3 = int(environ.get(\"day3\"))\n            hour3 = int(environ.get(\"hour3\"))\n            minute3 = int(environ.get(\"minute3\"))\n            sts = utc(year3, month3, day3, hour3, minute3)\n        else:\n            sts = environ[\"at\"]\n        ets = sts\n        environ[\"sts\"] = sts\n        environ[\"ets\"] = ets\n        fn = f\"wwa_{sts:%Y%m%d%H%M}\"\n\n    limiter = \"\"\n    if environ[\"limit0\"]:\n        limiter = (\n            \" and phenomena IN ('TO','SV','FF','MA') and significance = 'W' \"\n        )\n    if environ[\"limitps\"]:\n        phenom = environ[\"phenomena\"]\n        sig = environ[\"significance\"]\n        parts = []\n        for _i, (p, s) in enumerate(zip(phenom, sig, strict=False)):\n            parts.append(f\"(phenomena = :p{_i} and significance = :s{_i}) \")\n            params[f\"p{_i}\"] = p[:2]\n            params[f\"s{_i}\"] = s[:1]\n        limiter = f\" and ({' or '.join(parts)}) \"\n\n    sbwlimiter = \" WHERE gtype = 'P' \" if environ[\"limit1\"] else \"\"\n\n    elimiter = \" and is_emergency \" if environ[\"limit2\"] else \"\"\n    pdslimiter = \" and is_pds \" if environ[\"limitpds\"] else \"\"\n\n    # Forecaster filter\n    fcsterlimiter_warnings = \"\"\n    fcsterlimiter_sbw = \"\"\n    if environ[\"fcster\"]:\n        fcsterlimiter_warnings = \" and w.fcster ~* :fcster \"\n        fcsterlimiter_sbw = \" and w.product_signature ~* :fcster \"\n        params[\"fcster\"] = environ[\"fcster\"]\n\n    warnings_table = \"warnings\"\n    sbw_table = \"sbw\"\n    if sts.year == ets.year:\n        warnings_table = f\"warnings_{sts.year}\"\n        sbw_table = f\"sbw_{sts.year}\"\n\n    geomcol = \"geom\"\n    sbw_geosql = \"ST_AsBinary(w.geom)\"\n    if environ[\"simple\"]:\n        geomcol = \"simple_geom\"\n    cbw_geosql = f\"ST_AsBinary(u.{geomcol})\"\n    if environ[\"accept\"] == \"kml\":\n        sbw_geosql = \"ST_AsKML(w.geom)\"\n        cbw_geosql = f\"ST_AsKML(u.{geomcol})\"\n\n    cols = (\n        \"wfo, utc_issue, utc_expire, utc_prodissue, utc_init_expire, \"\n        \"phenomena, gtype, significance, eventid,  status, ugc, area2d, \"\n        \"utc_updated, hvtec_nwsli, hvtec_severity, hvtec_cause, hvtec_record, \"\n        \"is_emergency, utc_polygon_begin, utc_polygon_end, windtag, hailtag, \"\n        \"tornadotag, damagetag, product_id, fcster, vtec_year \"\n    )\n    if environ[\"accept\"] not in [\"excel\", \"csv\"]:\n        cols = f\"geo, {cols}\"\n\n    timelimit = f\"issue >= '{sts}' and issue < '{ets}'\"\n    if environ[\"timeopt\"] == 2:\n        timelimit = \"issue <= :sts and issue > :sts30 and expire > :sts\"\n        params[\"sts\"] = sts\n        params[\"sts30\"] = sts + timedelta(days=-30)\n    else:\n        if wfo_limiter == \"\" and limiter == \"\" and (ets - sts).days > 366:\n            raise IncompleteWebRequest(\n                \"You must limit your request to a year or less.\"\n            )\n    sbwtimelimit = timelimit\n    statuslimit = \" status = 'NEW' \"\n    if environ[\"addsvs\"]:\n        statuslimit = \" status != 'CAN' \"\n        sbwtimelimit = timelimit.replace(\n            \"issue\",\n            \"coalesce(issue, polygon_begin)\",\n        )\n    # NB: need distinct since state join could return multiple\n    return (\n        f\"\"\"\n    WITH stormbased as (\n     SELECT distinct {sbw_geosql} as geo, 'P'::text as gtype,\n     significance, wfo, status, eventid, ''::text as ugc,\n     phenomena,\n     ST_area( ST_transform(w.geom,9311) ) / 1000000.0 as area2d,\n     to_char(expire at time zone 'UTC', 'YYYYMMDDHH24MI') as utc_expire,\n     to_char(issue at time zone 'UTC', 'YYYYMMDDHH24MI') as utc_issue,\n     to_char(issue at time zone 'UTC', 'YYYYMMDDHH24MI') as utc_prodissue,\n     to_char(polygon_begin at time zone 'UTC', 'YYYYMMDDHH24MI')\n        as utc_polygon_begin,\n     to_char(polygon_end at time zone 'UTC', 'YYYYMMDDHH24MI')\n        as utc_polygon_end,\n     to_char(init_expire at time zone 'UTC',\n             'YYYYMMDDHH24MI') as utc_init_expire,\n     to_char(updated at time zone 'UTC',\n             'YYYYMMDDHH24MI') as utc_updated,\n     hvtec_nwsli, hvtec_severity, hvtec_cause, hvtec_record, is_emergency,\n     windtag, hailtag, tornadotag,\n     coalesce(damagetag, floodtag_damage) as damagetag,\n     product_id, product_signature as fcster, vtec_year\n     from {sbw_table} w {table_extra}\n     WHERE {statuslimit} and {sbwtimelimit}\n     {wfo_limiter} {limiter} {elimiter} {pdslimiter} {fcsterlimiter_sbw}\n    ),\n    countybased as (\n     SELECT {cbw_geosql} as geo, 'C'::text as gtype,\n     significance,\n     w.wfo, status, eventid, u.ugc, phenomena,\n     u.area2163 as area2d,\n     to_char(expire at time zone 'UTC', 'YYYYMMDDHH24MI') as utc_expire,\n     to_char(issue at time zone 'UTC', 'YYYYMMDDHH24MI') as utc_issue,\n     to_char(product_issue at time zone 'UTC',\n             'YYYYMMDDHH24MI') as utc_prodissue,\n     null as utc_polygon_begin,\n     null as utc_polygon_end,\n     to_char(init_expire at time zone 'UTC',\n             'YYYYMMDDHH24MI') as utc_init_expire,\n     to_char(updated at time zone 'UTC',\n             'YYYYMMDDHH24MI') as utc_updated,\n     hvtec_nwsli, hvtec_severity, hvtec_cause, hvtec_record, is_emergency,\n     null::real as windtag, null::real as hailtag, null::varchar as tornadotag,\n     null::varchar as damagetag,\n     product_ids[1] as product_id, fcster, vtec_year\n     from {warnings_table} w JOIN ugcs u on (u.gid = w.gid) WHERE\n     {timelimit} {wfo_limiter2} {limiter} {elimiter} {pdslimiter}\n     {fcsterlimiter_warnings}\n     )\n     SELECT {cols} from stormbased UNION ALL\n     SELECT {cols} from countybased {sbwlimiter}\n    \"\"\",\n        fn,\n        params,\n    )\n\n\ndef do_kml(sql: str, params: dict, conn: Connection) -> iter[bytes]:\n    \"\"\"Materialize as KML.\"\"\"\n    res = conn.execute(sql_helper(sql), params)\n    # Careful that the first byte is the XML\n    yield b\"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<kml xmlns=\"http://www.opengis.net/kml/2.2\">\n<Document>\n <name>IEM NWS WWA Export</name>\n <open>1</open>\n\"\"\"\n    for row in res.mappings():\n        if row[\"geo\"] is None:  # Is this possible?\n            continue\n        uri = (\n            f\"https://mesonet.agron.iastate.edu/vtec/?year={row['vtec_year']}&\"\n            f\"phenomena={row['phenomena']}&sig={row['significance']}&\"\n            f\"eventid={row['eventid']}&wfo={row['wfo']}\"\n        )\n        pname = (\n            f\"{row['wfo']}.{row['phenomena']}.{row['significance']}.\"\n            f\"{row['eventid']} \"\n            f\"{get_ps_string(row['phenomena'], row['significance'])}\"\n        )\n        pname_xml = xml_escape(pname)\n        issued = kml_stamp(row[\"utc_issue\"])\n        expired = kml_stamp(row[\"utc_expire\"])\n        status = row[\"status\"] or \"\"\n        gtype = row[\"gtype\"] or \"\"\n        area2d = row[\"area2d\"] if row[\"area2d\"] is not None else 0.0\n        utce = kml_nice_date(row[\"utc_expire\"])\n        line_color, poly_color, lw = get_kml_inline_style(\n            row[\"phenomena\"], row[\"significance\"]\n        )\n        yield (\n            f\"\"\"\n<Placemark>\n    <name>{pname_xml}</name>\n    <TimeSpan><begin>{issued}</begin><end>{expired}</end></TimeSpan>\n    <Style>\n      <LineStyle><width>{lw}</width><color>{line_color}</color></LineStyle>\n      <PolyStyle><color>{poly_color}</color></PolyStyle>\n    </Style>\n    <description>\n        <![CDATA[\n  <p>\n    <font color=\"red\"><i>Issued:</i></font> {kml_nice_date(row[\"utc_issue\"])}\n    <br /><font color=\"red\"><i>Expires:</i></font> {utce}\n    <br /><font color=\"red\"><i>Status:</i></font> {status}\n    <br /><font color=\"red\"><i>Geometry Type:</i></font> {gtype}\n    <br /><font color=\"red\"><i>Area:</i></font> {area2d:.2f} km^2\n    <br /><a href=\"{uri}\">IEM VTEC Browser Link</a>\n  </p>\n        ]]>\n    </description>\n    {row[\"geo\"]}\n</Placemark>\n\"\"\"\n        ).encode()\n    yield b\"</Document></kml>\"\n\n\ndef do_excel(sql, fmt, params):\n    \"\"\"Generate an Excel format response.\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(sql_helper(sql), conn, params=params, index_col=None)\n    if fmt == \"excel\" and len(df.index) >= 1048576:\n        raise IncompleteWebRequest(\"Result too large for Excel download\")\n    # Back-convert datetimes :/\n    for col in (\n        \"utc_issue utc_expire utc_prodissue utc_updated utc_polygon_begin \"\n        \"utc_polygon_end\"\n    ).split():\n        df[col] = pd.to_datetime(\n            df[col],\n            errors=\"coerce\",\n            format=\"%Y%m%d%H%M\",\n        ).dt.strftime(\"%Y-%m-%d %H:%M\")\n    if fmt == \"csv\":\n        return df.to_csv(index=False).encode(\"ascii\")\n    bio = BytesIO()\n    with pd.ExcelWriter(bio, engine=\"xlsxwriter\") as writer:\n        df.to_excel(writer, sheet_name=\"VTEC WaWA\", index=False)\n    return bio.getvalue()\n\n\ndef process_results_yield_records(cursor, csv):\n    \"\"\"Do something with the results.\"\"\"\n    # Filenames are racy, so we need to have a temp folder\n    csv.write(\n        \"WFO,ISSUED,EXPIRED,INIT_ISS,INIT_EXP,PHENOM,GTYPE,SIG,ETN,\"\n        \"STATUS,NWS_UGC,AREA_KM2,UPDATED,HVTEC_NWSLI,HVTEC_SEVERITY,\"\n        \"HVTEC_CAUSE,HVTEC_RECORD,IS_EMERGENCY,POLYBEGIN,POLYEND,\"\n        \"WINDTAG,HAILTAG,TORNADOTAG,DAMAGETAG,PRODUCT_ID,FCSTER,VTEC_YEAR\\n\"\n    )\n    for row in cursor.mappings():\n        if row[\"geo\"] is None:  # Is this possible?\n            continue\n        mp = loads(row[\"geo\"])\n        csv.write(\n            f\"{row['wfo']},{dfmt(row['utc_issue'])},\"\n            f\"{dfmt(row['utc_expire'])},\"\n            f\"{dfmt(row['utc_prodissue'])},\"\n            f\"{dfmt(row['utc_init_expire'])},\"\n            f\"{row['phenomena']},{row['gtype']},\"\n            f\"{row['significance']},{row['eventid']},\"\n            f\"{row['status']},\"\n            f\"{row['ugc']},{row['area2d']:.2f},\"\n            f\"{dfmt(row['utc_updated'])},\"\n            f\"{row['hvtec_nwsli']},{row['hvtec_severity']},\"\n            f\"{row['hvtec_cause']},{row['hvtec_record']},\"\n            f\"{row['is_emergency']},\"\n            f\"{dfmt(row['utc_polygon_begin'])},\"\n            f\"{dfmt(row['utc_polygon_end'])},{row['windtag']},\"\n            f\"{row['hailtag']},{row['tornadotag']},\"\n            f\"{row['damagetag']},{row['product_id']},\"\n            f\"{row['fcster']},{row['vtec_year']}\\n\"\n        )\n        yield {\n            \"properties\": {\n                \"WFO\": row[\"wfo\"],\n                \"ISSUED\": row[\"utc_issue\"],\n                \"EXPIRED\": row[\"utc_expire\"],\n                \"INIT_ISS\": row[\"utc_prodissue\"],\n                \"INIT_EXP\": row[\"utc_init_expire\"],\n                \"PHENOM\": row[\"phenomena\"],\n                \"GTYPE\": row[\"gtype\"],\n                \"SIG\": row[\"significance\"],\n                \"ETN\": row[\"eventid\"],\n                \"STATUS\": row[\"status\"],\n                \"NWS_UGC\": row[\"ugc\"],\n                \"AREA_KM2\": row[\"area2d\"],\n                \"UPDATED\": row[\"utc_updated\"],\n                \"HV_NWSLI\": row[\"hvtec_nwsli\"],\n                \"HV_SEV\": row[\"hvtec_severity\"],\n                \"HV_CAUSE\": row[\"hvtec_cause\"],\n                \"HV_REC\": row[\"hvtec_record\"],\n                \"EMERGENC\": row[\"is_emergency\"],\n                \"POLY_BEG\": row[\"utc_polygon_begin\"],\n                \"POLY_END\": row[\"utc_polygon_end\"],\n                \"WINDTAG\": row[\"windtag\"],\n                \"HAILTAG\": row[\"hailtag\"],\n                \"TORNTAG\": row[\"tornadotag\"],\n                \"DAMAGTAG\": row[\"damagetag\"],\n                \"PROD_ID\": row[\"product_id\"],\n                \"FCSTER\": row[\"fcster\"],\n                \"VTEC_YR\": row[\"vtec_year\"],\n            },\n            \"geometry\": mapping(mp),\n        }\n\n\ndef local_files(names):\n    \"\"\"Return a generator of local files.\"\"\"\n    now = datetime.now()\n\n    def contents(name: str):\n        \"\"\"Return a generator of file contents.\"\"\"\n        with open(name, \"rb\") as f:  # skipcq\n            while chunk := f.read(65536):\n                yield chunk\n\n    return (\n        (name.split(\"/\")[-1], now, S_IFREG | 0o644, ZIP_32, contents(name))\n        for name in names\n    )\n\n\n@iemapp(default_tz=\"UTC\", help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Go Main Go\"\"\"\n    try:\n        if environ[\"timeopt\"] != 2 and environ[\"sts\"] is None:\n            raise IncompleteWebRequest(\"Missing start time parameter\")\n        sql, fn, params = build(environ)\n    except (IncompleteWebRequest, ValueError) as exp:\n        start_response(\n            \"422 Unprocessable Content\", [(\"Content-type\", \"text/plain\")]\n        )\n        yield str(exp).encode(\"ascii\")\n        return\n    if environ[\"accept\"] == \"kml\":\n        start_response(\n            \"200 OK\",\n            [\n                (\"Content-type\", \"application/vnd.google-earth.kml+xml\"),\n                (\"Content-disposition\", f\"attachment; Filename={fn}.kml\"),\n            ],\n        )\n        with get_sqlalchemy_conn(\"postgis\") as conn:\n            yield from do_kml(sql, params, conn)\n        return\n\n    if environ[\"accept\"] == \"excel\":\n        headers = [\n            (\"Content-type\", EXL),\n            (\"Content-disposition\", f\"attachment; Filename={fn}.xlsx\"),\n        ]\n        start_response(\"200 OK\", headers)\n        yield do_excel(sql, environ[\"accept\"], params)\n        return\n    if environ[\"accept\"] == \"csv\":\n        headers = [\n            (\"Content-type\", \"text/csv\"),\n            (\"Content-disposition\", f\"attachment; Filename={fn}.csv\"),\n        ]\n        start_response(\"200 OK\", headers)\n        yield do_excel(sql, environ[\"accept\"], params)\n        return\n\n    with tempfile.TemporaryDirectory() as tmpdir:\n        with (\n            get_sqlalchemy_conn(\"postgis\") as conn,\n            fiona.open(\n                f\"{tmpdir}/{fn}.shp\",\n                \"w\",\n                crs=\"EPSG:4326\",\n                driver=\"ESRI Shapefile\",\n                schema={\n                    \"geometry\": \"MultiPolygon\",\n                    \"properties\": {\n                        \"WFO\": \"str:3\",\n                        \"ISSUED\": \"str:12\",\n                        \"EXPIRED\": \"str:12\",\n                        \"INIT_ISS\": \"str:12\",\n                        \"INIT_EXP\": \"str:12\",\n                        \"PHENOM\": \"str:2\",\n                        \"GTYPE\": \"str:1\",\n                        \"SIG\": \"str:1\",\n                        \"ETN\": \"int:4\",\n                        \"STATUS\": \"str:3\",\n                        \"NWS_UGC\": \"str:6\",\n                        \"AREA_KM2\": \"float\",\n                        \"UPDATED\": \"str:12\",\n                        \"HV_NWSLI\": \"str:5\",\n                        \"HV_SEV\": \"str:1\",\n                        \"HV_CAUSE\": \"str:2\",\n                        \"HV_REC\": \"str:2\",\n                        \"EMERGENC\": \"bool\",\n                        \"POLY_BEG\": \"str:12\",\n                        \"POLY_END\": \"str:12\",\n                        \"WINDTAG\": \"float\",\n                        \"HAILTAG\": \"float\",\n                        \"TORNTAG\": \"str:16\",\n                        \"DAMAGTAG\": \"str:16\",\n                        \"PROD_ID\": \"str:36\",\n                        \"FCSTER\": \"str:24\",\n                        \"VTEC_YR\": \"int:4\",\n                    },\n                },\n            ) as output,\n            open(f\"{tmpdir}/{fn}.csv\", \"w\", encoding=\"ascii\") as csv,\n            conn.execution_options(\n                stream_results=True, max_row_buffer=10000\n            ).execute(sql_helper(sql), params) as cursor,\n        ):\n            output.writerecords(process_results_yield_records(cursor, csv))\n\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-Disposition\", f\"attachment; filename={fn}.zip\"),\n        ]\n        start_response(\"200 OK\", headers)\n        zstream = stream_zip(\n            local_files(\n                (\n                    f\"{tmpdir}/{fn}.shp\",\n                    f\"{tmpdir}/{fn}.shx\",\n                    f\"{tmpdir}/{fn}.dbf\",\n                    f\"{tmpdir}/{fn}.prj\",\n                    f\"{tmpdir}/{fn}.cpg\",\n                    f\"{tmpdir}/{fn}.csv\",\n                )\n            ),\n            get_compressobj=lambda: zlib.compressobj(\n                wbits=-zlib.MAX_WBITS, level=1\n            ),\n        )\n        yield from zstream\n"
  },
  {
    "path": "pylib/iemweb/request/gis/wpc_mpd.py",
    "content": "\"\"\".. title:: WPC MPD Shapefile Download\n\nReturn to `User Frontend </request/gis/wpc_mpd.phtml>`_ or\n`API Services </api/#cgi>`_.\n\nDocumentation for /cgi-bin/request/gis/wpc_mpd.py\n-------------------------------------------------\n\nThis service provides a download of the WPC MPD shapefile data for a given\ntime period.\n\nChangelog\n---------\n\n- 2024-10-27: Documentation update\n\nExample Requests\n----------------\n\nProvide a shapefile of WPC MPDs for March 2026\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/gis/wpc_mpd.py?\\\nsts=2026-03-01T00:00Z&ets=2026-04-01T00:00Z\n\n\"\"\"\n\nimport tempfile\nimport zipfile\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport geopandas as gpd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, iemapp\n\nPRJFILE = \"/opt/iem/data/gis/meta/4326.prj\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    sts: Annotated[AwareDatetime | None, Field(description=\"Start Time\")] = (\n        None\n    )\n    ets: Annotated[AwareDatetime | None, Field(description=\"End Time\")] = None\n    year1: int = Field(None, description=\"Start Time Year\")\n    year2: int = Field(None, description=\"End Time Year\")\n    month1: int = Field(None, description=\"Start Time Month\")\n    month2: int = Field(None, description=\"End Time Month\")\n    day1: int = Field(None, description=\"Start Time Day\")\n    day2: int = Field(None, description=\"End Time Day\")\n    hour1: int = Field(0, description=\"Start Time Hour\")\n    hour2: int = Field(0, description=\"End Time Hour\")\n    minute1: int = Field(0, description=\"Start Time Minute\")\n    minute2: int = Field(0, description=\"End Time Minute\")\n\n\n@iemapp(default_tz=\"UTC\", help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Do something!\"\"\"\n    query: Schema = environ[\"_cgimodel_schema\"]\n    if query.sts is None or query.ets is None:\n        raise IncompleteWebRequest(\"Missing start time GET params\")\n    if query.sts > query.ets:\n        query.sts, query.ets = query.ets, query.sts\n    common = \"at time zone 'UTC', 'YYYYMMDDHH24MI'\"\n    schema = {\n        \"geometry\": \"Polygon\",\n        \"properties\": {\n            \"ISSUE\": \"str:12\",\n            \"EXPIRE\": \"str:12\",\n            \"PROD_ID\": \"str:35\",\n            \"YEAR\": \"int\",\n            \"NUM\": \"int\",\n            \"CONCERN\": \"str:64\",\n        },\n    }\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = gpd.read_postgis(\n            sql_helper(\n                \"\"\"\n    select to_char(issue {common}) as issue,\n    to_char(expire {common}) as expire,\n    product_id as prod_id, year, num,\n    concerning as concern, geom\n    from mpd WHERE issue >= :sts and\n    issue < :ets ORDER by issue ASC\"\"\",\n                common=common,\n            ),\n            conn,\n            params={\n                \"sts\": query.sts,\n                \"ets\": query.ets,\n            },\n            geom_col=\"geom\",\n        )  # type: ignore\n    if df.empty:\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return [b\"ERROR: no results found for your query\"]\n    df.columns = [s.upper() if s != \"geom\" else \"geom\" for s in df.columns]\n    fn = f\"mpd_{query.sts:%Y%m%d%H%M}_{query.ets:%Y%m%d%H%M}\"\n\n    with tempfile.TemporaryDirectory() as tmpdir:\n        df.to_file(f\"{tmpdir}/{fn}.shp\", schema=schema, engine=\"fiona\")\n\n        zio = BytesIO()\n        with zipfile.ZipFile(\n            zio, mode=\"w\", compression=zipfile.ZIP_DEFLATED\n        ) as zf:\n            with open(PRJFILE, encoding=\"utf-8\") as fh:\n                zf.writestr(f\"{fn}.prj\", fh.read())\n            for suffix in [\"shp\", \"shx\", \"dbf\"]:\n                zf.write(f\"{tmpdir}/{fn}.{suffix}\", f\"{fn}.{suffix}\")\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", f\"attachment; filename={fn}.zip\"),\n    ]\n    start_response(\"200 OK\", headers)\n\n    return [zio.getvalue()]\n"
  },
  {
    "path": "pylib/iemweb/request/grx/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/request/grx/iadot_trucks.py",
    "content": "\"\"\".. title:: Iowa DOT Trucks for GRLevelX\n\nThis script generates a GRLevelX compatible text file for the Iowa DOT Trucks\nservice.\n\nExample Requests:\n\nGet the current Iowa DOT Trucks data:\n\nhttps://mesonet.agron.iastate.edu/request/grx/iadot_trucks.txt\n\n\"\"\"\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import utc\nfrom pyiem.webutil import iemapp\n\nURLBASE = \"https://mesonet.agron.iastate.edu/data/camera/idot_trucks\"\nARROWS = \"https://mesonet.agron.iastate.edu/request/grx/arrows.png\"\n\n\ndef produce_content():\n    \"\"\"Generate content\"\"\"\n\n    res = f\"\"\"Title: Iowa DOT Trucks @{utc():%H%M}Z\nRefresh: 5\nColor: 200 200 255\nIconFile: 1, 15, 25, 8, 25, \"{ARROWS}\"\nFont: 1, 11, 1, \"Courier New\"\n\n\"\"\"\n    pgconn = get_dbconn(\"postgis\")\n    cursor = pgconn.cursor()\n\n    cursor.execute(\n        \"\"\"\n        SELECT valid, heading, velocity, roadtemp, airtemp,\n        solidmaterial, liquidmaterial, prewetmaterial, solidsetrate,\n        liquidsetrate, prewetsetrate, solid_spread_code, road_temp_code,\n        ST_x(geom), ST_y(geom), label from idot_snowplow_current\n        where valid > (now() - '1 hour'::interval) and\n        valid < (now() + '1 hour'::interval) ORDER by label ASC\n    \"\"\"\n    )\n\n    for row in cursor:\n        txt = (\n            \"%s @ %s\\\\nRoad Temp: %s\\\\nVelocity: %s MPH\\\\nAir Temp: %s\\\\n\"\n        ) % (\n            row[15],\n            row[0].strftime(\"%d %b %I:%M %p\"),\n            row[3],\n            row[2],\n            row[4],\n        )\n        res += \"Object: %.6f, %.6f\\n\" % (row[14], row[13])\n        res += \"Threshold: 999\\n\"\n        res += ('Icon: 0,0,%s,1,7,\"%s\"\\n') % (\n            0 if row[1] is None else int(row[1]),\n            txt,\n        )\n        res += \"End:\\n\\n\"\n\n    return res\n\n\n@iemapp(\n    help=__doc__,\n    content_type=\"text/plain\",\n    memcacheexpire=300,\n    memcachekey=\"/request/grx/iadot_trucks.txt\",\n)\ndef application(_environ, start_response):\n    \"\"\"Go Main Go\"\"\"\n    start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n    return produce_content()\n"
  },
  {
    "path": "pylib/iemweb/request/grx/l3attr.py",
    "content": "\"\"\".. title:: Generate IEM NEXRAD L3 Attributes Placefile\n\nChangelog\n---------\n\n- 2024-08-24: Update to pydantic validation and documentation release.\n\nExample Requests\n----------------\n\nGet the current attributes for AMX\n\nhttps://mesonet.agron.iastate.edu/request/grx/l3attr.txt?nexrad=AMX\n\nGet the attributes for a radar at -80.413 longitude\n\nhttps://mesonet.agron.iastate.edu/request/grx/l3attr.txt?lon=-80.413\n\nGet the current attributes with a Possibility of Hail greater than 10%\n\nhttps://mesonet.agron.iastate.edu/request/grx/l3attr.txt?poh=10\n\nSame request, but version 3.0\n\nhttps://mesonet.agron.iastate.edu/request/grx/l3attr.txt?poh=10&version=3.0\n\n\"\"\"\n\nimport math\n\nimport numpy as np\nimport pandas as pd\nimport pyproj\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import convert_value, utc\nfrom pyiem.webutil import CGIModel, iemapp\n\n# Do geo math in US National Atlas Equal Area\nP3857 = pyproj.Proj(\"EPSG:3857\")\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called\"\"\"\n\n    lon: str = Field(\n        default=None,\n        description=\"Longitude of radar site according to GR\",\n    )\n    max_size: float = Field(\n        default=0,\n        description=\"Minimum hail size to include\",\n    )\n    meso: float = Field(\n        default=-1,\n        description=\"Minimum MESO size to include\",\n    )\n    nexrad: str = Field(\n        default=None,\n        description=\"Three character NEXRAD Site Identifier\",\n        min_length=3,\n        max_length=3,\n    )\n    poh: int = Field(\n        default=0,\n        description=\"Probability of Hail threshold\",\n        ge=0,\n        le=100,\n    )\n    tvs: bool = Field(\n        default=False,\n        description=\"Include TVS in output\",\n    )\n    version: str = Field(\n        default=\"2\",\n        description=\"Version of Placefile to generate\",\n    )\n\n\nICONFILE = \"https://mesonet.agron.iastate.edu/request/grx/storm_attribute.png\"\nSECONDS = np.array([15 * 60, 30 * 60, 45 * 60, 60 * 60])\nRADARS = \"\"\"pabc,-161.876\npacg,-135.528\npahg,-151.351\npakc,-156.627\npaih,-146.301\npaec,-165.293\npapd,-147.501\nkbmx,-86.770\nkeox,-85.459\nkhtx,-86.084\nkmxx,-85.790\nkmob,-88.240\nksrx,-94.362\nklzk,-92.262\nkfsx,-111.198\nkiwa,-111.670\ntphx,-112.163\nkemx,-110.630\nkyux,-114.656\nkbbx,-121.632\nkeyx,-117.561\nkbhx,-124.292\nkvtx,-119.179\nkdax,-121.678\nknkx,-117.041\nkmux,-121.898\nkhnx,-119.632\nksox,-117.636\nkvbx,-120.398\nkftg,-104.546\nkgjx,-108.214\nkpux,-104.181\ntden,-104.526\nkdox,-75.440\nkevx,-85.922\nkjax,-81.702\nkbyx,-81.703\nkmlb,-80.654\nkamx,-80.413\ntfll,-80.344\ntmia,-80.491\ntmco,-81.326\nttpa,-82.518\ntpbi,-80.273\nktlh,-84.329\nktbw,-82.402\nkffc,-84.566\nkvax,-83.002\nkjgx,-83.351\ntatl,-84.262\npgua,144.811\nphki,-159.552\nphkm,-155.778\nphmo,-157.180\nphwa,-155.569\nkdmx,-93.723\nkdvn,-90.581\nkcbx,-116.236\nksfx,-112.686\nklot,-88.085\nkilx,-89.337\ntmdw,-87.730\ntord,-87.858\nkvwx,-87.724\nkiwx,-85.700\nkind,-86.280\ntids,-86.436\nkddc,-99.969\nkgld,-101.700\ntich,-97.437\nktwx,-96.232\nkict,-97.443\nkhpx,-87.285\nkjkl,-83.313\nklvx,-85.944\nkpah,-88.772\ntsdf,-85.610\nkpoe,-92.976\nklch,-93.216\nklix,-89.825\nkshv,-93.841\ntmsy,-90.403\nkbox,-71.137\ntbos,-70.933\ntadw,-76.845\ntbwi,-76.630\ntdca,-76.962\nkcbw,-67.806\nkgyx,-70.256\nkdtx,-83.472\nkapx,-84.720\nkgrr,-85.545\nkmqt,-87.548\ntdtw,-83.515\nkdlh,-92.210\nkmpx,-93.565\ntmsp,-92.933\nkeax,-94.264\nksgf,-93.400\nklsx,-90.683\ntmci,-94.742\ntstl,-90.489\nkgwx,-88.329\nkdgx,-89.984\nkblx,-108.607\nkggw,-106.625\nktfx,-111.385\nkmsx,-113.986\nkmhx,-76.876\nkrax,-78.490\ntclt,-80.885\ntrdu,-78.697\nkltx,-78.429\nkbis,-100.760\nkmvx,-97.325\nkmbx,-100.864\nkuex,-98.442\nklnx,-100.576\nkoax,-96.367\ntewr,-74.270\nkabx,-106.824\nkfdx,-103.619\nkhdx,-106.120\nklrx,-116.803\nkesx,-114.891\nkrgx,-119.462\ntlas,-115.007\nkenx,-74.064\nkbgm,-75.985\nkbuf,-78.737\nktyx,-75.680\ntjfk,-73.881\nkokx,-72.864\nkcle,-81.860\ntcvg,-84.580\ntlve,-82.008\ntcmh,-82.715\ntday,-84.123\nkiln,-83.822\nkfdr,-98.977\nktlx,-97.278\ntokc,-97.510\nttul,-95.827\nkinx,-95.564\nkvnx,-98.128\nkmax,-122.717\nkpdt,-118.853\nkrtx,-122.965\nkdix,-74.411\nkpbz,-80.218\nkccx,-78.004\ntphl,-75.069\ntpit,-80.486\ntjua,-66.078\ntsju,-66.179\nkclx,-81.042\nkcae,-81.119\nkgsp,-82.220\nkabr,-98.413\nkudx,-102.830\nkfsd,-96.729\nkmrx,-83.402\nknqa,-89.873\nkohx,-86.563\ntmem,-89.993\ntbna,-86.662\nkama,-101.709\nkbro,-97.419\nkgrk,-97.383\nkcrp,-97.511\nkfws,-97.303\nkdyx,-99.254\nkepz,-106.698\nkhgx,-95.079\nkdfx,-100.280\nklbb,-101.814\nkmaf,-102.189\nksjt,-100.492\nkewx,-98.029\ntdal,-96.968\ntdfw,-96.918\nthou,-95.242\ntiah,-95.567\nkicx,-112.862\nkmtx,-112.448\ntslc,-111.930\nkfcx,-80.274\nklwx,-77.487\ntiad,-77.529\nkakq,-77.008\nkcxx,-73.166\nklgx,-124.107\nkatx,-122.496\nkotx,-117.626\nkgrb,-88.111\nkarx,-91.191\nkmkx,-88.551\ntmke,-88.046\nkrlx,-81.723\nkcys,-104.806\nkhdc,-90.407\nkriw,-108.477\"\"\"\n\n\ndef rotate(x, y, rad):\n    \"\"\"rotate\"\"\"\n    return [\n        (x * math.cos(-rad) - y * math.sin(-rad)),\n        (x * math.sin(-rad) + y * math.cos(-rad)),\n    ]\n\n\ndef dir2ccwrot(mydir):\n    \"\"\"Convert to CCW\"\"\"\n    if 270 <= mydir <= 360:\n        return 0 - (mydir - 270)\n    if 180 <= mydir < 270:\n        return 270 - mydir\n    if 90 <= mydir < 180:\n        return 180 - (mydir - 90)\n    return 180 + (90 - mydir)\n\n\ndef rabbit_tracks(row, v3):\n    \"\"\"Generate a rabbit track for this attr\"\"\"\n    res = \"\"\n    if row[\"sknt\"] is None or row[\"sknt\"] <= 5 or row[\"drct\"] is None:\n        return res\n    # 5 carrots at six minutes to get 30 minutes?\n    lat0 = row[\"lat\"]\n    lon0 = row[\"lon\"]\n    drct = row[\"drct\"]\n    sknt = row[\"sknt\"]\n    x0, y0 = P3857(lon0, lat0)\n    smps = convert_value(sknt, \"knot\", \"meter / second\")\n    angle = dir2ccwrot(drct)\n    rotation = (drct + 180) % 360\n    rad = math.radians(angle)\n    x = x0 + math.cos(rad) * smps * SECONDS\n    y = y0 + math.sin(rad) * smps * SECONDS\n    # Draw white line out 30 minutes\n    lons, lats = P3857(x, y, inverse=True)\n    if v3:\n        res += (\n            \"Line {\\n\"\n            f\"Points = {{ {{ {lat0:.4f}, {lon0:.4f} }}, \"\n            f\"{{ {lats[-1]:.4f}, {lons[-1]:.4f} }} }}\\n\"\n            f'Hover = \"Cell [{row[\"storm_id\"]}]\"\\n'\n            \"}\\n\"\n        )\n    else:\n        res += (\n            f'Line: 1, 0, \"Cell [{row[\"storm_id\"]}]\"\\n'\n            f\"{lat0:.4f}, {lon0:.4f}\\n\"\n            f\"{lats[-1]:.4f}, {lons[-1]:.4f}\\n\"\n            \"END:\\n\"\n        )\n    for i in range(3):\n        if v3:\n            res += (\n                \"Icon {\\n\"\n                f\"Index = 10\\n\"\n                f\"Pos = {{{lats[i]:.4f},{lons[i]:.4f}}}\\n\"\n                'Sheet = \"1\"\\n'\n                f\"Azimith = {rotation:.0f}\\n\"\n                f'Hover = \"+{((i + 1) * 15):.0f} min\"\\n'\n                \"}\\n\"\n            )\n        else:\n            res += (\n                f\"Icon: {lats[i]:.4f},{lons[i]:.4f},{rotation:.0f},\"\n                f'1,10,\"+{((i + 1) * 15):.0f} min\"\\n'\n            )\n    return res\n\n\ndef get_df(nexrad, meso, tvs, poh, max_size):\n    \"\"\"return a dataframe\"\"\"\n    params = {\n        \"nexrad\": nexrad,\n        \"meso\": meso,\n        \"poh\": poh,\n        \"max_size\": max_size,\n    }\n    limiter = \"\"\n    meso_limiter = \"\"\n    if nexrad is not None:\n        limiter = \" and nexrad = :nexrad \"\n    if meso >= 0:\n        meso_limiter = \" and meso != 'NONE' \"\n        if meso > 1:\n            meso_limiter += \" and meso::float >= :meso \"\n    tvs_limiter = \"\"\n    if tvs:\n        tvs_limiter = \" and tvs = 'TVS' \"\n\n    with get_sqlalchemy_conn(\"radar\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                SELECT *, ST_x(geom) as lon, ST_y(geom) as lat,\n                valid at time zone 'UTC' as utc_valid\n                from nexrad_attributes WHERE\n                valid > now() - '15 minutes'::interval\n                {limiter} and poh >= :poh {meso_limiter} {tvs_limiter} and\n                max_size >= :max_size\n                 \"\"\",\n                limiter=limiter,\n                meso_limiter=meso_limiter,\n                tvs_limiter=tvs_limiter,\n            ),\n            conn,\n            params=params,\n        )\n    return df\n\n\ndef produce_content(nexrad, poh, meso, tvs, max_size, v3):\n    \"\"\"Do Stuff\"\"\"\n    threshold = 999\n    title = \"IEM NEXRAD L3 Attributes\"\n    if nexrad != \"\":\n        title = f\"IEM {nexrad} NEXRAD L3 Attributes\"\n        threshold = 45\n    titleadd = \"\"\n    if meso >= 0:\n        titleadd = \", all MESO\"\n        meso_limiter = \" and meso != 'NONE' \"\n        if meso > 1:\n            titleadd = f\", MESO >= {meso}\"\n            meso_limiter += f\" and meso::float >= {meso} \"\n    if poh > 0:\n        titleadd += f\", POH >= {poh}\"\n    if tvs:\n        titleadd += \", all TVS\"\n    if max_size > 0:\n        titleadd += f\", Max Size >= {max_size}\"\n    df = get_df(nexrad, meso, tvs, poh, max_size)\n    if v3:\n        return produce_content_v3(df, title, titleadd)\n    return produce_content_v2(df, threshold, title, titleadd)\n\n\ndef produce_content_v3(df: pd.DataFrame, title, titleadd):\n    \"\"\"v3 stuff.\"\"\"\n    res = (\n        \"Placefile {\\n\"\n        f'Title = \"{title}{titleadd} @{utc():%H%M}Z\"\\n'\n        \"Refresh = 180\\n\"\n        \"Define Iconsheet\\n\"\n        \"{\\n\"\n        'Handle = \"1\"\\n'\n        f'File = \"{ICONFILE}\"\\n'\n        \"nIcons = {4, 4}\\n\"\n        \"}\\n\"\n    )\n    for _, row in df.iterrows():\n        txt = (\n            f\"K{row['nexrad']} [{row['storm_id']}] {row['utc_valid']:%H:%M} \"\n            f\"Z\\\\nDrct: {row['drct']} Speed: {row['sknt']} kts\\\\n\"\n        )\n        icon = 9\n        if row[\"tvs\"] != \"NONE\" or row[\"meso\"] != \"NONE\":\n            txt += f\"TVS: {row['tvs']} MESO: {row['meso']}\\\\n\"\n        if row[\"poh\"] > 0 or row[\"posh\"] > 0:\n            txt += (\n                f\"POH: {row['poh']} POSH: {row['posh']} \"\n                f\"MaxSize: {row['max_size']}\\\\n\"\n            )\n            icon = 2\n        if row[\"meso\"] != \"NONE\":\n            meso = int(row[\"meso\"])\n            if meso < 4:\n                icon = 8\n            elif meso < 7:\n                icon = 7\n            else:\n                icon = 6\n        if row[\"tvs\"] != \"NONE\":\n            icon = 5\n        res += (\n            \"Icon {\\n\"\n            f\"Index = {icon}\\n\"\n            f\"Pos = {{{row['lat']:.4f}, {row['lon']:.4f}}}\\n\"\n            'Sheet = \"1\"'\n            \"\\n\"\n            f'Hover = \"{txt}\"'\n            \"\\n\"\n            \"}\\n\"\n        )\n        res += rabbit_tracks(row, True)\n    res += \"}\\n\"\n    return res\n\n\ndef produce_content_v2(df: pd.DataFrame, threshold, title, titleadd):\n    \"\"\"Make the content\"\"\"\n    res = (\n        \"Refresh: 3\\n\"\n        f\"Threshold: {threshold}\\n\"\n        f\"Title: {title}{titleadd}  @{utc():%H%M}Z\\n\"\n        f'IconFile: 1, 32, 32, 16, 16, \"{ICONFILE}\"\\n'\n        'Font: 1, 11, 1, \"Courier New\"\\n'\n    )\n    for _, row in df.iterrows():\n        txt = (\n            f\"K{row['nexrad']} [{row['storm_id']}] {row['utc_valid']:%H:%M} \"\n            f'Z\\\\n\" \"Drct: {row[\"drct\"]} Speed: {row[\"sknt\"]} kts\\\\n'\n        )\n        icon = 9\n        if row[\"tvs\"] != \"NONE\" or row[\"meso\"] != \"NONE\":\n            txt += f\"TVS: {row['tvs']} MESO: {row['meso']}\\\\n\"\n        if row[\"poh\"] > 0 or row[\"posh\"] > 0:\n            txt += (\n                f\"POH: {row['poh']} POSH: {row['posh']} \"\n                f\"MaxSize: {row['max_size']}\\\\n\"\n            )\n            icon = 2\n        if row[\"meso\"] != \"NONE\":\n            meso = int(row[\"meso\"])\n            if meso < 4:\n                icon = 8\n            elif meso < 7:\n                icon = 7\n            else:\n                icon = 6\n        if row[\"tvs\"] != \"NONE\":\n            icon = 5\n        res += (\n            f\"Object: {row['lat']:.4f},{row['lon']:.4f}\\n\"\n            \"Threshold: 999\\n\"\n            f'Icon: 0,0,0,1,{icon},\"{txt}\"\\n'\n            \"END:\\n\"\n        )\n        res += rabbit_tracks(row, False)\n    return res\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Figure out the memcache key\"\"\"\n    nexrad = compute_nexrad(environ)\n    poh = environ[\"poh\"]\n    meso = environ[\"meso\"]\n    tvs = environ[\"tvs\"]\n    max_size = environ[\"max_size\"]\n    v3 = environ[\"version\"].startswith(\"3.\")\n    return f\"/request/grx/i3attr|{nexrad}|{poh}|{meso}|{tvs}|{max_size}|{v3}\"\n\n\ndef compute_nexrad(environ: dict) -> str:\n    nexrad = environ[\"nexrad\"]\n    if nexrad is None:\n        lon = environ[\"lon\"]\n        if lon is not None:\n            for line in RADARS.split(\"\\n\"):\n                if line.find(lon) > 0:\n                    nexrad = line[1:4].upper()\n    return nexrad\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=get_mckey,\n    memcacheexpire=60,\n    content_type=\"text/plain\",\n)\ndef application(environ, start_response):\n    \"\"\"Go Main Go\"\"\"\n    nexrad = compute_nexrad(environ)\n\n    poh = environ[\"poh\"]\n    meso = environ[\"meso\"]\n    tvs = environ[\"tvs\"]\n    max_size = environ[\"max_size\"]\n    v3 = environ[\"version\"].startswith(\"3.\")\n    res = produce_content(nexrad, poh, meso, tvs, max_size, v3)\n    start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n    return res.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/request/grx/time_mot_loc.py",
    "content": "\"\"\".. title:: NWS TOR+SVR Warning Time-Mot-Loc\n\nReturn to `API Services </api/#cgi>`_\n\nChangelog\n---------\n\n- 2026-03-20: Ill-defined `all` parameter needs to be set to something\n  truthy and not just present.\n- 2024-08-25: Initial documentation and pydantic validation\n\nExample Requests\n----------------\n\nProvide values for a time on 21 May 2024\n\nhttps://mesonet.agron.iastate.edu/request/grx/time_mot_loc.txt\\\n?all=1&version=1.5&valid=2024-05-21T20:00:00Z\n\n\"\"\"\n\nimport math\nimport re\nfrom datetime import timedelta\nfrom io import StringIO\nfrom typing import Annotated\nfrom zoneinfo import ZoneInfo\n\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_dbconnc\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nLOLA = re.compile(r\"(?P<lon>[0-9\\.\\-]+) (?P<lat>[0-9\\.\\-]+)\")\nSQLISO = \"YYYY-MM-DDThh24:MI:SSZ\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    all: Annotated[\n        bool | None,\n        Field(\n            description=\"Include all warnings, not just Tornado\",\n        ),\n    ] = False\n    valid: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=\"The valid time to generate the product for.\",\n        ),\n    ] = None\n    version: Annotated[\n        float,\n        Field(\n            description=\"The version of the GR product to generate.\",\n        ),\n    ] = 1.0\n\n\ndef extrapolate(lon, lat, distance, drct):\n    \"\"\"Fun.\"\"\"\n    lon2 = lon + (\n        (distance * math.cos(math.radians(270.0 - drct)))\n        / (111325.0 * math.cos(math.radians(lat)))\n    )\n    lat2 = lat + ((distance * math.sin(math.radians(270.0 - drct))) / 111325.0)\n    return lon2, lat2\n\n\ndef gentext(sio, row, grversion):\n    \"\"\"Turn the database row into placefile worthy text.\"\"\"\n    smps = row[\"tml_sknt\"] * 0.5144\n    drct = row[\"tml_direction\"]\n    tml_valid = row[\"tml_valid\"].astimezone(ZoneInfo(\"UTC\"))\n    duration = (row[\"polygon_end\"] - row[\"tml_valid\"]).total_seconds()\n    distance = smps * duration\n    lats = []\n    lons = []\n    time_range = \"\"\n    if grversion >= 1.5:\n        time_range = f\"TimeRange: {row['iso_begin']} {row['iso_end']}\\n\"\n    if row[\"lat\"] is not None:\n        lons.append(row[\"lon\"])\n        lats.append(row[\"lat\"])\n        # Point events are represented by lines\n        lon2, lat2 = extrapolate(row[\"lon\"], row[\"lat\"], distance, drct)\n        sio.write(\n            f\"Color: 255 255 0\\n{time_range}\"\n            f'Line: 2,0,\"NWS Warning Track ({row[\"wfo\"]}-{row[\"phenomena\"]}'\n            f\"-{row['eventid']})\\\\n\"\n            f'{drct:.0f}/{row[\"tml_sknt\"]:.0f}\"\\n'\n            f\"{row['lat']:.4f},{row['lon']:.4f}\\n\"\n            f\"{lat2:.4f},{lon2:.4f}\\n\"\n            \"End:\\n\"\n        )\n    elif row[\"line\"] is not None:\n        # Lines are shown as three sets of lines.\n        for token in LOLA.findall(row[\"line\"]):\n            lons.append(float(token[0]))\n            lats.append(float(token[1]))\n        for seconds in [0, duration / 2.0, duration]:\n            valid = tml_valid + timedelta(seconds=seconds)\n            ts = valid.strftime(\"%H%Mz\")\n            sio.write(\n                f\"Color: 255 255 0\\n{time_range}\"\n                f'Line: 2,0,\"NWS Warning Track @{ts}'\n                f\"({row['wfo']}-{row['phenomena']}\"\n                f\"-{row['eventid']})\\\\n\"\n                f'{drct:.0f}/{row[\"tml_sknt\"]:.0f}\"\\n'\n            )\n            for lon, lat in zip(lons, lats, strict=False):\n                lon2, lat2 = extrapolate(lon, lat, seconds * smps, drct)\n                sio.write(f\"{lat2:.4f},{lon2:.4f}\\n\")\n            sio.write(\"End:\\n\")\n\n    # Now we place places along the track.\n    sio.write(\"Color: 255 255 255\\nThreshold:10\\n\\n\")\n    for lon, lat in zip(lons, lats, strict=False):\n        for minute in range(int(duration / 60.0) + 1):\n            valid = tml_valid + timedelta(minutes=minute)\n            ts = valid.strftime(\"%H%Mz\")\n            lon2, lat2 = extrapolate(lon, lat, smps * minute * 60, drct)\n            sio.write(f\"Place: {lat2:.4f},{lon2:.4f},{ts}\\n\")\n    sio.write(\"Threshold: 999\\n\")\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ: dict, start_response: callable):\n    \"\"\"Our WSGI service.\"\"\"\n    grversion = environ[\"version\"]\n    phenoms = [\"TO\", \"SV\"] if environ[\"all\"] is not None else [\"TO\"]\n    pgconn, cursor = get_dbconnc(\"postgis\")\n    valid = utc()\n    refresh = 60\n    if environ[\"valid\"]:\n        valid = environ[\"valid\"]\n        refresh = 86400\n    t1 = valid\n    t2 = valid\n    tmlabel = valid.strftime(\"%H%Mz\")\n    if grversion >= 1.5 or environ[\"valid\"]:\n        # Pull larger window of data to support TimeRange\n        t1 = valid - timedelta(hours=2)\n        t2 = valid + timedelta(hours=2)\n        tmlabel = valid.strftime(\"%b %d %Y %H%Mz\")\n    cursor.execute(\n        f\"\"\"SELECT ST_x(tml_geom) as lon, ST_y(tml_geom) as lat,\n        ST_AsText(tml_geom_line) as line,\n        tml_valid, tml_direction, tml_sknt,\n        polygon_begin, polygon_end, eventid, wfo, phenomena,\n        to_char(polygon_begin at time zone 'UTC', '{SQLISO}') as iso_begin,\n        to_char(polygon_end at time zone 'UTC', '{SQLISO}') as iso_end\n        from sbw WHERE vtec_year = %s and polygon_end > %s and\n        polygon_begin < %s and phenomena = ANY(%s)\n        and tml_direction is not null and status != 'CAN' and\n        polygon_end > polygon_begin\"\"\",\n        (valid.year, t1, t2, phenoms),\n    )\n    sio = StringIO()\n    label = \"TOR+SVR\" if environ[\"all\"] is not None else \"TOR\"\n    sio.write(\n        f\"RefreshSeconds: {refresh}\\n\"\n        \"Threshold: 999\\n\"\n        f\"Title: NWS {label} @{tmlabel} Warning Time-Mot-Loc\\n\"\n        'Font: 1, 11, 1, \"Courier New\"\\n\\n'\n    )\n    for row in cursor:\n        gentext(sio, row, grversion)\n    pgconn.close()\n    start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n    return [sio.getvalue().encode(\"utf-8\")]\n"
  },
  {
    "path": "pylib/iemweb/request/grx_rings.py",
    "content": "\"\"\".. title:: Generate a Placefile with Range Rings\n\nReturn to `Frontend </request/grx/>`_\n\nThis application generates a placefile with range rings around a specified\nlocation. The user can specify the location by entering the latitude and\nlongitude, the location name, and the filename to save the placefile as.\n\nAuthor: Zach Hiris\n\nChangelog\n---------\n\n- 2024-10-01: Initial documentation update and pydantic validation\n\nExample Requests\n----------------\n\nReturn a placefile for Solider Field in Chicago with 10, 20, and 30 mile rings.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/grx_rings.py\\\n?lat=41.8623&lon=-87.6167&loc=Soldier%20Field&m0=10&m1=20&m2=30\n\n\"\"\"\n\nimport math\nfrom html import escape\nfrom io import StringIO\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.util import html_escape\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import LATITUDE_FIELD, LONGITUDE_FIELD\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    fn: Annotated[str, Field(description=\"Filename to save as\")] = (\n        \"placefile_rings.txt\"\n    )\n    lat: LATITUDE_FIELD = 42.014004\n    lon: LONGITUDE_FIELD = -93.635773\n    loc: str = Field(default=\"Jack Trice Stadium\", description=\"Location name\")\n\n    m0: float = Field(\n        default=100, description=\"Distance of first ring in miles\", ge=0\n    )\n    r0: int = Field(\n        default=255, description=\"Red component of color for first ring\"\n    )\n    g0: int = Field(\n        default=255, description=\"Green component of color for first ring\"\n    )\n    b0: int = Field(\n        default=0, description=\"Blue component of color for first ring\"\n    )\n    a0: int = Field(\n        default=255, description=\"Alpha component of color for first ring\"\n    )\n    t0: str = Field(default=\"\", description=\"Text to display for first ring\")\n\n    m1: float = Field(\n        default=0, description=\"Distance of second ring in miles\", ge=0\n    )\n    r1: int = Field(\n        default=255, description=\"Red component of color for second ring\"\n    )\n    g1: int = Field(\n        default=255, description=\"Green component of color for second ring\"\n    )\n    b1: int = Field(\n        default=0, description=\"Blue component of color for second ring\"\n    )\n    a1: int = Field(\n        default=255, description=\"Alpha component of color for second ring\"\n    )\n    t1: str = Field(default=\"\", description=\"Text to display for second ring\")\n\n    m2: float = Field(\n        default=0, description=\"Distance of third ring in miles\", ge=0\n    )\n    r2: int = Field(\n        default=255, description=\"Red component of color for third ring\"\n    )\n    g2: int = Field(\n        default=255, description=\"Green component of color for third ring\"\n    )\n    b2: int = Field(\n        default=0, description=\"Blue component of color for third ring\"\n    )\n    a2: int = Field(\n        default=255, description=\"Alpha component of color for third ring\"\n    )\n    t2: str = Field(default=\"\", description=\"Text to display for third ring\")\n\n\ndef createCircleAroundWithRadius(lat, lon, radiusMiles):\n    \"\"\"Create circle.\"\"\"\n    latArray = []\n    lonArray = []\n\n    for brng in range(360):\n        lat2, lon2 = getLocation(lat, lon, brng, radiusMiles)\n        latArray.append(lat2)\n        lonArray.append(lon2)\n\n    return lonArray, latArray\n\n\ndef getLocation(lat1, lon1, brng, distanceMiles):\n    \"\"\"getLocation.\"\"\"\n    lat1 = lat1 * math.pi / 180.0\n    lon1 = lon1 * math.pi / 180.0\n\n    # earth radius - If ever needed to be in km vs. miles, change R\n    R = 3959\n    distanceMiles = distanceMiles / R\n\n    brng = (brng / 90) * math.pi / 2\n\n    lat2 = math.asin(\n        math.sin(lat1) * math.cos(distanceMiles)\n        + math.cos(lat1) * math.sin(distanceMiles) * math.cos(brng)\n    )\n    lon2 = lon1 + math.atan2(\n        math.sin(brng) * math.sin(distanceMiles) * math.cos(lat1),\n        math.cos(distanceMiles) - math.sin(lat1) * math.sin(lat2),\n    )\n    lon2 = 180.0 * lon2 / math.pi\n    lat2 = 180.0 * lat2 / math.pi\n\n    return lat2, lon2\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Go Main Go.\"\"\"\n    fn = escape(environ[\"fn\"])\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", f\"attachment; filename={fn}\"),\n    ]\n    start_response(\"200 OK\", headers)\n\n    # Things for the user to theoretically input:\n    loc = html_escape(environ[\"loc\"])\n    lat = environ[\"lat\"]\n    lon = environ[\"lon\"]\n    sio = StringIO()\n    sio.write(\n        f\"; This is a placefile to draw a range ring x miles from: {loc}\\n\"\n        \"; Created by Zach Hiris - 8/9/2019\\n\"\n        \"; Code adapted from Jonathan Scholtes (2016)\\n\\n\\n\"\n        \"Threshold: 999 \\n\"\n        f\"Title: Rings @ {loc}\\n\"\n    )\n\n    for i in range(3):\n        distanceInMiles = environ[f\"m{i}\"]\n        if distanceInMiles <= 0.00001:\n            continue\n        r = environ[f\"r{i}\"]\n        g = environ[f\"g{i}\"]\n        b = environ[f\"b{i}\"]\n        a = environ[f\"a{i}\"]\n        t = environ[f\"t{i}\"].replace(\"\\n\", \"\\\\n\")\n\n        # Create the lon/lat pairs\n        X, Y = createCircleAroundWithRadius(lat, lon, distanceInMiles)\n        ll = \"\\\\n\" if t != \"\" else \"\"\n        sio.write(\n            f\"Color: {r} {g} {b} {a}\\n\"\n            f'Line: 2, 0, \"{t}{ll}{distanceInMiles:.1f} miles from {loc}\" \\n'\n        )\n        for x, y in zip(X, Y, strict=False):\n            sio.write(f\" {y}, {x}\\n\")\n        sio.write(\"End:\\n\\n\")\n    return [sio.getvalue().encode(\"utf-8\")]\n"
  },
  {
    "path": "pylib/iemweb/request/hads.py",
    "content": "\"\"\".. title:: HADS Data Request\n\n`IEM API Mainpage </api/#cgi>`_\n\nDocumentation on /cgi-bin/request/hads.py\n-----------------------------------------\n\nThe backend database for this application has many billion rows of data, so\nrequests can be slow.\n\nChangelog\n---------\n\n- 2024-04-18: Allowed cross-year requests, but limited to 365 days when\n  requesting more than one station.\n- 2024-04-09: Migrated to pydantic based CGI field validation.\n- 2024-03-15: Initial documentation added\n\nExample Requests\n----------------\n\nRequest all Iowa DCP data, which is limited to a 24 hour period.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/hads.py?\\\nstations=_ALL&network=IA_DCP&sts=2023-11-10T00:00Z&ets=2023-11-11T00:00Z\\\n&what=dl\n\nProvide all DNKI4 data for the month of November 2023\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/hads.py?\\\nstations=DNKI4&sts=2023-11-01T00:00Z&ets=2023-12-01T00:00Z&what=txt\n\nSame request, but in HTML format\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/hads.py?\\\nstations=DNKI4&sts=2023-11-01T00:00Z&ets=2023-12-01T00:00Z&what=html\n\nSame request, but in Excel format\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/hads.py?\\\nstations=DNKI4&sts=2023-11-01T00:00Z&ets=2023-12-01T00:00Z&what=excel\n\nProvide all DSXI4 data for 1 Jan 2025\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/hads.py?\\\nstations=DSXI4&sts=2025-01-01T00:00Z&ets=2025-01-02T00:00Z&what=txt\n\nRun the threshold search for when HGIRG exceeds 10.81\nfor AESI4 in early Sep 2025\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/hads.py?\\\nstations=AESI4&sts=2025-09-01T00:00Z&ets=2025-09-03T00:00Z&what=txt&\\\nthreshold=10.81&thresholdvar=RG\n\n\"\"\"\n\nfrom datetime import timedelta\nfrom io import BytesIO, StringIO\n\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field, field_validator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nfrom iemweb.fields import NETWORK_FIELD_OPTIONAL\n\nDELIMITERS = {\"comma\": \",\", \"space\": \" \", \"tab\": \"\\t\"}\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    delim: str = Field(\n        \"comma\",\n        description=\"Delimiter for output\",\n        pattern=\"^(comma|space|tab)$\",\n    )\n    ets: AwareDatetime = Field(None, description=\"End Time for request\")\n    network: NETWORK_FIELD_OPTIONAL = None\n    stations: ListOrCSVType = Field(..., description=\"Station Identifier(s)\")\n    sts: AwareDatetime = Field(None, description=\"Start Time for request\")\n    threshold: float | None = Field(\n        None, description=\"Threshold Value for Searching\"\n    )\n    thresholdvar: str = Field(\n        None,\n        description=\"Threshold Variable for Searching\",\n        pattern=\"^(RG|PCP)$\",\n    )\n    what: str = Field(\n        \"dl\", description=\"Output format\", pattern=\"^(dl|txt|html|excel)$\"\n    )\n    year: int = Field(\n        None,\n        description=(\n            \"Legacy year value when this service only supported 1 year at a \"\n            \"time.\"\n        ),\n    )\n    year1: int | None = Field(\n        None,\n        description=\"Start year for request, when sts not set.\",\n    )\n    year2: int | None = Field(\n        None,\n        description=\"End year for request, when ets not set.\",\n    )\n    month1: int = Field(\n        None,\n        description=\"Start month for request, when sts not set.\",\n    )\n    month2: int = Field(\n        None,\n        description=\"End month for request, when ets not set.\",\n    )\n    day1: int = Field(\n        None,\n        description=\"Start day for request, when sts not set.\",\n    )\n    day2: int = Field(\n        None,\n        description=\"End day for request, when ets not set.\",\n    )\n    hour1: int = Field(\n        0,\n        description=\"Start hour for request, when sts not set.\",\n    )\n    hour2: int = Field(\n        0,\n        description=\"End hour for request, when ets not set.\",\n    )\n    minute1: int = Field(\n        0,\n        description=\"Start minute for request, when sts not set.\",\n    )\n    minute2: int = Field(\n        0,\n        description=\"End minute for request, when ets not set.\",\n    )\n\n    @field_validator(\"threshold\", mode=\"before\")\n    @classmethod\n    def check_threshold(cls, value):\n        \"\"\"Allow empty string.\"\"\"\n        return None if value == \"\" else value\n\n\ndef threshold_search(table: pd.DataFrame, threshold, thresholdvar: str):\n    \"\"\"Do the threshold searching magic\"\"\"\n    cols = table.columns.to_list()\n    searchfor = f\"HGI{thresholdvar.upper()}ZZ\"\n    if searchfor not in cols:\n        return pd.DataFrame()\n    above = False\n    maxrunning = -99\n    maxvalid = None\n    res = []\n    for (station, valid), row in table.iterrows():\n        val = row[searchfor]\n        if val > threshold and not above:\n            res.append(\n                dict(\n                    station=station,\n                    utc_valid=valid,\n                    event=\"START\",\n                    value=val,\n                    varname=searchfor,\n                )\n            )\n            above = True\n        if val > threshold and above and val > maxrunning:\n            maxrunning = val\n            maxvalid = valid\n        if val < threshold and above:\n            res.append(\n                dict(\n                    station=station,\n                    utc_valid=maxvalid,\n                    event=\"MAX\",\n                    value=maxrunning,\n                    varname=searchfor,\n                )\n            )\n            res.append(\n                dict(\n                    station=station,\n                    utc_valid=valid,\n                    event=\"END\",\n                    value=val,\n                    varname=searchfor,\n                )\n            )\n            above = False\n            maxrunning = -99\n            maxvalid = None\n\n    return pd.DataFrame(res)\n\n\n@iemapp(default_tz=\"UTC\", help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Go do something\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"Error, missing start or end time\")\n    delimiter = DELIMITERS[environ[\"delim\"]]\n    stations = environ[\"stations\"]\n    if \"_ALL\" in stations and environ[\"network\"] is not None:\n        stations = list(\n            NetworkTable(environ[\"network\"][:10], only_online=False).sts.keys()\n        )\n        environ[\"ets\"] = min(\n            environ[\"ets\"], environ[\"sts\"] + timedelta(hours=24)\n        )\n    if len(stations) > 1 and (environ[\"ets\"] - environ[\"sts\"]) > timedelta(\n        days=365\n    ):\n        raise IncompleteWebRequest(\n            \"Error, more than one station and more than 365 days requested\"\n        )\n    if not stations:\n        raise IncompleteWebRequest(\"Error, no stations specified!\")\n    sql = sql_helper(\n        \"\"\"\n        SELECT station, valid at time zone 'UTC' as utc_valid, key, value\n        from raw WHERE station = ANY(:ids) and\n        valid BETWEEN :sts and :ets and value > -999\n        ORDER by valid ASC\n        \"\"\"\n    )\n    params = {\"ids\": stations, \"sts\": environ[\"sts\"], \"ets\": environ[\"ets\"]}\n\n    with get_sqlalchemy_conn(\"hads\") as conn:\n        df = pd.read_sql(sql, conn, params=params)\n    if df.empty:\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return [b\"Error, no results found for query!\"]\n    table = df.pivot_table(\n        values=\"value\", columns=[\"key\"], index=[\"station\", \"utc_valid\"]\n    )\n    if (\n        environ[\"threshold\"] is not None\n        and environ[\"thresholdvar\"] is not None\n    ):\n        if len(stations) > 1:\n            start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n            return [b\"Can not do threshold search for more than one station\"]\n        table = threshold_search(\n            table, environ[\"threshold\"], environ[\"thresholdvar\"]\n        )\n\n    if environ[\"what\"] == \"html\":\n        headers = [(\"Content-type\", \"text/html\")]\n        start_response(\"200 OK\", headers)\n        sio = StringIO()\n        table.to_html(sio)\n        return [sio.getvalue().encode(\"utf-8\")]\n    if environ[\"what\"] == \"excel\":\n        bio = BytesIO()\n        with pd.ExcelWriter(bio, engine=\"openpyxl\") as writer:\n            table.to_excel(writer, sheet_name=\"Data\", index=True)\n\n        headers = [\n            (\"Content-type\", EXL),\n            (\"Content-Disposition\", \"attachment; filename=hads.xlsx\"),\n        ]\n        start_response(\"200 OK\", headers)\n        return [bio.getvalue()]\n    # The default for what = dl and txt\n    sio = StringIO()\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", \"attachment; filename=hads.txt\"),\n    ]\n    start_response(\"200 OK\", headers)\n    table.to_csv(sio, sep=delimiter)\n    return [sio.getvalue().encode(\"utf-8\")]\n"
  },
  {
    "path": "pylib/iemweb/request/hml.py",
    "content": "\"\"\".. title:: Hydrological Markup Language (HML) Data\n\nReturn to `API Services </api/#cgi>`_ or `HML Request </request/hml.php>`_.\n\nDocumentation for /cgi-bin/request/hml.py\n-----------------------------------------\n\nThis service provides the processed data from HML products.  This service\ndoes not emit the HML product itself, but rather the processed data. Due to\nlame reasons, you can only request forecast data within a single UTC year.\n\nChangelog\n---------\n\n- 2026-02-02: Added checks to ensure that dates are after 1 Jan 2012, which is\n  the start of the archive.\n- 2024-11-05: Initial implementation\n\nExample Usage\n~~~~~~~~~~~~~\n\nProvide all Guttenberg, IA GTTI4 observation data for 2024 in CSV format:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/hml.py\\\n?station=GTTI4&sts=2024-01-01T00:00Z&ets=2025-01-01T00:00Z&fmt=csv\\\n&kind=obs\n\nAnd then Excel\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/hml.py\\\n?station=GTTI4&sts=2024-01-01T00:00Z&ets=2025-01-01T00:00Z&fmt=excel\\\n&kind=obs\n\nProvide all Guttenberg, IA GTTI4 forecast data for 2024 in CSV\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/hml.py\\\n?station=GTTI4&sts=2024-01-01T00:00Z&ets=2025-01-01T00:00Z&fmt=csv\\\n&kind=forecasts&tz=UTC\n\nAnd then Excel\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/hml.py\\\n?station=GTTI4&sts=2024-01-01T00:00Z&ets=2025-01-01T00:00Z&fmt=excel\\\n&kind=forecasts\n\n\"\"\"\n\nfrom io import BytesIO\nfrom typing import Annotated\nfrom zoneinfo import ZoneInfo\n\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nfrom iemweb.fields import TZ_FIELD\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass MyModel(CGIModel):\n    \"\"\"Our model\"\"\"\n\n    kind: Annotated[\n        str,\n        Field(\n            description=(\n                \"The type of data to request, either 'obs' or 'forecasts'\"\n            ),\n            pattern=\"^(obs|forecasts)$\",\n        ),\n    ] = \"obs\"\n    fmt: Annotated[\n        str,\n        Field(\n            description=(\n                \"The format of the output file, either 'csv' or 'excel'\"\n            ),\n            pattern=\"^(csv|excel)$\",\n        ),\n    ] = \"csv\"\n    tz: TZ_FIELD = \"UTC\"\n    sts: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=\"The start timestamp for the data\", ge=utc(2012, 1, 1)\n        ),\n    ] = None\n    ets: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=\"The end timestamp for the data\", ge=utc(2012, 1, 1)\n        ),\n    ] = None\n    station: Annotated[\n        ListOrCSVType,\n        Field(\n            ...,\n            description=(\n                \"The station(s) to request data for, \"\n                \"either multi params or comma separated\"\n            ),\n        ),\n    ]\n    year1: Annotated[\n        int | None,\n        Field(description=\"The start year, if not using sts\", gt=2011),\n    ] = None\n    month1: Annotated[\n        int | None, Field(description=\"The start month, if not using sts\")\n    ] = None\n    day1: Annotated[\n        int | None, Field(description=\"The start day, if not using sts\")\n    ] = None\n    hour1: Annotated[\n        int, Field(description=\"The start hour, if not using sts\")\n    ] = 0\n    minute1: Annotated[\n        int, Field(description=\"The start minute, if not using sts\")\n    ] = 0\n    year2: Annotated[\n        int | None,\n        Field(description=\"The end year, if not using ets\", gt=2011),\n    ] = None\n    month2: Annotated[\n        int | None, Field(description=\"The end month, if not using ets\")\n    ] = None\n    day2: Annotated[\n        int | None, Field(description=\"The end day, if not using ets\")\n    ] = None\n    hour2: Annotated[\n        int, Field(description=\"The end hour, if not using ets\")\n    ] = 0\n    minute2: Annotated[\n        int, Field(description=\"The end minute, if not using ets\")\n    ] = 0\n\n\ndef get_obs(dbconn, environ: dict) -> pd.DataFrame:\n    \"\"\"Get data!\"\"\"\n    df = pd.read_sql(\n        sql_helper(\n            \"\"\"\n        select distinct d.station, d.valid, k.label, d.value\n        from hml_observed_data d JOIN\n        hml_observed_keys k on (d.key = k.id) WHERE\n        station = ANY(:stations) and valid >= :sts and valid < :ets\n        ORDER by valid ASC\n        \"\"\"\n        ),\n        dbconn,\n        params={\n            \"stations\": environ[\"station\"],\n            \"sts\": environ[\"sts\"],\n            \"ets\": environ[\"ets\"],\n        },\n    )\n    # muck the timezones\n    if not df.empty:\n        tzinfo = ZoneInfo(environ[\"tz\"])\n        df[\"valid\"] = (\n            df[\"valid\"].dt.tz_convert(tzinfo).dt.strftime(\"%Y-%m-%d %H:%M\")\n        )\n        df = df.pivot_table(\n            index=[\"station\", \"valid\"],\n            columns=\"label\",\n            values=\"value\",\n            aggfunc=\"first\",\n        ).reset_index()\n        df = df.rename(\n            columns={\n                \"valid\": f\"valid[{environ['tz']}]\",\n            }\n        )\n    return df\n\n\ndef get_forecasts(dbconn, environ: dict) -> pd.DataFrame:\n    \"\"\"Get data!\"\"\"\n    year = environ[\"sts\"].year\n    table = f\"hml_forecast_data_{year}\"\n    df = pd.read_sql(\n        sql_helper(\n            \"\"\"\n        select station, issued, primaryname, primaryunits,\n        secondaryname, secondaryunits, valid as forecast_valid,\n        primary_value, secondary_value from hml_forecast f,\n        {table} d WHERE\n        f.station = ANY(:stations) and f.issued >= :sts and f.issued < :ets\n        and f.id = d.hml_forecast_id ORDER by issued ASC, forecast_valid ASC\n        \"\"\",\n            table=table,\n        ),\n        dbconn,\n        params={\n            \"stations\": environ[\"station\"],\n            \"sts\": environ[\"sts\"],\n            \"ets\": environ[\"ets\"],\n        },\n    )\n    # muck the timezones\n    if not df.empty:\n        tzinfo = ZoneInfo(environ[\"tz\"])\n        for col in [\"forecast_valid\", \"issued\"]:\n            df[col] = (\n                df[col].dt.tz_convert(tzinfo).dt.strftime(\"%Y-%m-%d %H:%M\")\n            )\n        df = df.rename(\n            columns={\n                \"forecast_valid\": f\"forecast_valid[{environ['tz']}]\",\n                \"issued\": f\"issued[{environ['tz']}]\",\n            }\n        )\n    return df\n\n\ndef rect(station):\n    \"\"\"Cleanup.\"\"\"\n    station = station.upper()\n    return station[:5]\n\n\n@iemapp(help=__doc__, schema=MyModel)\ndef application(environ, start_response):\n    \"\"\"Get stuff\"\"\"\n    environ[\"station\"] = [rect(x) for x in environ[\"station\"]]\n    with get_sqlalchemy_conn(\"hml\") as dbconn:\n        if environ[\"kind\"] == \"obs\":\n            df = get_obs(dbconn, environ)\n        else:\n            df = get_forecasts(dbconn, environ)\n\n    bio = BytesIO()\n    if environ[\"fmt\"] == \"excel\":\n        with pd.ExcelWriter(bio, engine=\"openpyxl\") as writer:\n            df.to_excel(writer, sheet_name=\"HML Data\", index=False)\n        headers = [\n            (\"Content-type\", EXL),\n            (\"Content-disposition\", \"attachment;Filename=hml.xlsx\"),\n        ]\n    else:\n        df.to_csv(bio, index=False)\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-disposition\", \"attachment;Filename=hml.csv\"),\n        ]\n    start_response(\"200 OK\", headers)\n    return [bio.getvalue()]\n"
  },
  {
    "path": "pylib/iemweb/request/hourlyprecip.py",
    "content": "\"\"\".. title:: Hourly Precipitation Data Service\n\nReturn to `API Services </api/>`_\n\nDocumentation for /cgi-bin/request/hourlyprecip.py\n--------------------------------------------------\n\nThis service emits hourly precipitation data based on processed METAR\nobservations by the IEM.\n\nChangelog\n---------\n\n- 2024-09-04: Initial update and examples\n\nExample Usage\n-------------\n\nReturn the hourly precip for Ames, IA for the month of January 2024 with the\nstation's state and lat/lon included:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/hourlyprecip.py?\\\nstation=AMW&network=IA_ASOS&sts=2024-01-01T00:00:00Z&ets=2024-02-01T00:00:00Z\\\n&st=1&lalo=1&tz=America/Chicago\n\n\"\"\"\n\nfrom zoneinfo import ZoneInfo\n\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_dbconn\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nfrom iemweb.fields import NETWORK_FIELD, TZ_FIELD\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    ets: AwareDatetime = Field(\n        default=None, description=\"The end of the requested interval.\"\n    )\n    lalo: bool = Field(\n        default=False, description=\"Include the lat/lon in the output.\"\n    )\n    network: NETWORK_FIELD = \"IA_ASOS\"\n    st: bool = Field(False, description=\"Include the state in the output.\")\n    station: ListOrCSVType = Field(\n        default_factory=list, description=\"The station(s) to request data for.\"\n    )\n    sts: AwareDatetime = Field(\n        default=None, description=\"The start of the requested interval.\"\n    )\n    tz: TZ_FIELD = \"America/Chicago\"\n    year1: int = Field(\n        default=None, description=\"The start year, when sts is unset.\"\n    )\n    month1: int = Field(\n        default=None, description=\"The start month, when sts is unset.\"\n    )\n    day1: int = Field(\n        default=None, description=\"The start day, when sts is unset.\"\n    )\n    year2: int = Field(\n        default=None, description=\"The end year, when ets is unset.\"\n    )\n    month2: int = Field(\n        default=None, description=\"The end month, when ets is unset.\"\n    )\n    day2: int = Field(\n        default=None, description=\"The end day, when ets is unset.\"\n    )\n\n\ndef get_data(network, environ, tzinfo):\n    \"\"\"Go fetch data please\"\"\"\n    pgconn = get_dbconn(\"iem\")\n    cursor = pgconn.cursor()\n    res = \"station,network,valid,precip_in\"\n    sql = \"\"\n    if environ[\"lalo\"]:\n        res += \",lat,lon\"\n        sql += \" , st_y(geom) as lat, st_x(geom) as lon \"\n    if environ[\"st\"]:\n        res += \",st\"\n        sql += \", state \"\n    res += \"\\n\"\n    cursor.execute(\n        f\"\"\"\n        SELECT id, t.network, valid, phour {sql}\n        from hourly h JOIN stations t on\n        (h.iemid = t.iemid) WHERE\n        valid >= %s and valid < %s and t.network = %s and t.id = ANY(%s)\n        ORDER by valid ASC\n        \"\"\",\n        (environ[\"sts\"], environ[\"ets\"], network, environ[\"station\"]),\n    )\n    for row in cursor:\n        res += (\n            f\"{row[0]},{row[1]},{row[2].astimezone(tzinfo):%Y-%m-%d %H:%M},\"\n            f\"{','.join([str(x) for x in row[3:]])}\\n\"\n        )\n\n    return res.encode(\"ascii\", \"ignore\")\n\n\n@iemapp(help=__doc__, default_tz=\"America/Chicago\", schema=Schema)\ndef application(environ, start_response):\n    \"\"\"run rabbit run\"\"\"\n    tzinfo = ZoneInfo(environ[\"tz\"])\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"Missing start or end time.\")\n    if not environ[\"station\"]:\n        raise IncompleteWebRequest(\"No station= was specified.\")\n    start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n    network = environ[\"network\"]\n    return [get_data(network, environ, tzinfo)]\n"
  },
  {
    "path": "pylib/iemweb/request/isusm.py",
    "content": "\"\"\".. title:: ISU Soil Moisture Data Download Service\n\nThis service emits data from the ISU Soil Moisture Network.\n\nChangelog\n---------\n\n- 2026-03-06: Added comprehensive climate index (CCI) as a download option.\n  Either `cci` which does not include a shade effect or `cci_shade` which\n  does.\n- 2025-01-27: Added support for `qcflags` for the inclusion of the flag\n  values.\n- **2024-11-19** Initial update to use pydantic request validation.\n\nExample Requests\n----------------\n\nProvide an Excel file of the minute data for the Hinds Farm station on\n21 July 2024.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/isusm.py?station=AHDI4&\\\nmode=hourly&sts=2024-07-21T05:00Z&ets=2024-07-22T05:00Z&format=excel&\\\ntimeres=minute\n\nProvide all of the daily data for the Hinds Farm station for the month of\nJuly 2024 in a tab delimited format.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/isusm.py?station=AHDI4&\\\nmode=daily&sts=2024-07-01T00:00Z&ets=2024-08-01T00:00Z&format=tab\n\nProvide all of the hourly data for the Hinds Farm station for the month of\nJuly 2024 in a comma delimited format with timestampts in UTC and include\nany QC flags.  Also include the SoilVue 10 data.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/isusm.py?station=AHDI4&\\\nmode=hourly&sts=2024-07-01T00:00Z&ets=2024-08-01T00:00Z&format=comma&tz=UTC\\\n&qcflags=1&vars=sv\n\nSame request, but compute the comprehensive climate index (CCI) with and\nwithout shade effect and include those in the output as well.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/isusm.py?station=AHDI4&\\\nmode=hourly&sts=2024-07-01T00:00Z&ets=2024-08-01T00:00Z&format=comma&tz=UTC\\\n&qcflags=1&vars=cci,cci_shade\n\nSame as the last, but for daily data this time and solar radiation in MJ/m2\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/isusm.py?station=AHDI4&\\\nmode=daily&sts=2024-07-01T00:00Z&ets=2024-08-01T00:00Z&format=comma&tz=UTC\\\n&qcflags=1&vars=sv,solar_mj\n\n\"\"\"\n\nimport re\nimport warnings\nfrom datetime import timedelta\nfrom io import BytesIO, StringIO\n\nimport numpy as np\nimport pandas as pd\nfrom metpy.units import units\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.meteorology import comprehensive_climate_index\nfrom pyiem.util import convert_value\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nfrom iemweb.fields import STATION_LIST_FIELD, TZ_FIELD\n\n# Cull a fragmentation warning from pandas due to our hacky things\nwarnings.simplefilter(action=\"ignore\", category=pd.errors.PerformanceWarning)\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\nLEGACY_STS = re.compile(\"sts=[A-Z]\")\nMISSING = {\"\", \"M\", \"-99\"}\nSV_DEPTHS = [2, 4, 8, 12, 14, 16, 20, 24, 28, 30, 32, 36, 40, 42, 52]\nDELIMITERS = {\"comma\": \",\", \"tab\": \"\\t\"}\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called...\"\"\"\n\n    chillbase: float = Field(\n        default=32, description=\"Chill Hours Base Temperature [degF]\"\n    )\n    chillceil: float = Field(\n        default=45, description=\"Chill Hours Ceiling Temperature [degF]\"\n    )\n    delim: str = Field(\n        description=\"Delimiter\", default=\"comma\", pattern=\"comma|tab\"\n    )\n    ets: AwareDatetime = Field(default=None, description=\"End Time\")\n    format: str = Field(\n        default=\"csv\",\n        description=\"Output Format\",\n        pattern=\"csv|comma|excel|tab\",\n    )\n    missing: str = Field(\n        default=\"-99\",\n        description=\"Missing Value Indicator\",\n        pattern=\"^-99|M|$\",\n    )\n    qcflags: bool = Field(\n        default=False,\n        description=\"Include QC Flag Values\",\n    )\n    sts: AwareDatetime = Field(default=None, description=\"Start Time\")\n    mode: str = Field(\n        default=\"hourly\",\n        description=\"Data Mode\",\n        pattern=\"hourly|daily|inversion\",\n    )\n    station: STATION_LIST_FIELD\n    timeres: str = Field(\n        default=\"hourly\",\n        description=\"Time Resolution for hourly request\",\n        pattern=\"hourly|minute\",\n    )\n    todisk: str = Field(\n        default=\"no\", description=\"Download to Disk\", pattern=\"yes|no\"\n    )\n    tz: TZ_FIELD = \"America/Chicago\"\n    vars: ListOrCSVType = Field(\n        default=None, description=\"Variables to include in output\"\n    )\n    year1: int = Field(\n        default=None, description=\"Start year if sts is not provided\"\n    )\n    month1: int = Field(\n        default=None, description=\"Start month if sts is not provided\"\n    )\n    day1: int = Field(\n        default=None, description=\"Start day if sts is not provided\"\n    )\n    hour1: int = Field(\n        default=0, description=\"Start hour if sts is not provided\"\n    )\n    minute1: int = Field(\n        default=0, description=\"Start minute if sts is not provided\"\n    )\n    year2: int = Field(\n        default=None, description=\"End year if ets is not provided\"\n    )\n    month2: int = Field(\n        default=None, description=\"End month if ets is not provided\"\n    )\n    day2: int = Field(\n        default=None, description=\"End day if ets is not provided\"\n    )\n    hour2: int = Field(\n        default=0, description=\"End hour if ets is not provided\"\n    )\n    minute2: int = Field(\n        default=0, description=\"End minute if ets is not provided\"\n    )\n\n\ndef fetch_daily(environ: dict, cols: list):\n    \"\"\"Return a fetching of daily data\"\"\"\n    stations: list = environ[\"station\"]\n\n    if not cols:\n        cols = (\n            \"station valid high low rh_min rh rh_max gdd50 solar precip \"\n            \"speed gust et soil04t soil12t soil24t soil50t soil12vwc \"\n            \"soil24vwc soil50vwc\"\n        ).split()\n    else:\n        cols.insert(0, \"valid\")\n        cols.insert(0, \"station\")\n    if environ[\"qcflags\"]:\n        newcols = cols[:2]\n        for col in cols[2:]:\n            newcols.extend([col, f\"{col}_f\"])\n        cols = newcols\n\n    if \"sv\" in cols:\n        # SoilVue 10 data\n        for depth in SV_DEPTHS:\n            for c2 in [\"t\", \"vwc\"]:\n                cols.append(f\"sv_{c2}{depth}\")\n                if environ[\"qcflags\"]:\n                    cols.append(f\"sv_{c2}{depth}_f\")\n    else:\n        for col in list(cols):\n            if col.startswith(\"sv\") and len(col) > 2:\n                depth = int(col[2:])\n                for c2 in [\"t\", \"vwc\"]:\n                    cols.append(f\"sv_{c2}{depth}\")\n                    if environ[\"qcflags\"]:\n                        cols.append(f\"sv_{c2}{depth}_f\")\n\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    --- Get the Daily Max/Min soil values\n    WITH soils as (\n      SELECT station, date(valid) as date,\n      sum(\n      case when (tair_c_avg_qc >= :chillbase and tair_c_avg_qc <= :chillceil)\n        then 1 else 0 end) as chillhours,\n      max(tair_c_max_f) as chillhours_f,\n      min(rh_avg_qc) as rh_min,\n      max(rh_avg_f) as rh_min_f,\n      avg(rh_avg_qc) as rh,\n      max(rh_avg_f) as rh_f,\n      max(rh_avg_qc) as rh_max,\n      max(rh_avg_f) as rh_max_f,\n      min(t12_c_avg_qc) as soil12tn,\n      max(t12_c_avg_f) as soil12tn_f,\n      max(t12_c_avg_qc) as soil12tx,\n      max(t12_c_avg_qc) as soil12tx_f,\n      min(t24_c_avg_qc) as soil24tn,\n      max(t24_c_avg_f) as soil24tn_f,\n      max(t24_c_avg_qc) as soil24tx,\n      max(t24_c_avg_f) as soil24tx_f,\n      min(t50_c_avg_qc) as soil50tn,\n      max(t50_c_avg_f) as soil50tn_f,\n      max(t50_c_avg_qc) as soil50tx,\n      max(t50_c_avg_f) as soil50tx_f\n      from sm_hourly where\n      valid >= :sts and valid < :ets and station = ANY(:stations)\n      GROUP by station, date\n    ), daily as (\n      SELECT *,\n      t4_c_min_qc as soil04tn,\n      t4_c_min_f as soil04tn_f,\n      t4_c_max_qc as soil04tx,\n      t4_c_max_f as soil04tx_f,\n      round(gddxx(50, 86, c2f( tair_c_max_qc ),\n        c2f( tair_c_min_qc ))::numeric,1) as gdd50,\n     tair_c_min_f as gdd50_f\n     from sm_daily WHERE\n      valid >= :sts and valid < :ets and station = ANY(:stations)\n    )\n    SELECT d.*, s.rh_min, s.rh_min_f, s.rh, s.rh_f, s.rh_max, s.rh_max_f,\n    s.chillhours, s.chillhours_f,\n    s.soil12tn, s.soil12tn_f, s.soil12tx, s.soil12tx_f, s.soil24tn,\n    s.soil24tn_f, s.soil24tx, s.soil24tx_f, s.soil50tn, s.soil50tn_f,\n    s.soil50tx, s.soil50tx_f\n    FROM soils s JOIN daily d on (d.station = s.station and s.date = d.valid)\n    ORDER by d.valid ASC\n    \"\"\"\n            ),\n            conn,\n            params={\n                \"sts\": environ[\"sts\"].date(),\n                \"ets\": environ[\"ets\"].date(),\n                \"stations\": stations,\n                \"chillbase\": convert_value(\n                    environ[\"chillbase\"], \"degF\", \"degC\"\n                ),\n                \"chillceil\": convert_value(\n                    environ[\"chillceil\"], \"degF\", \"degC\"\n                ),\n            },\n            index_col=None,\n        )\n    if df.empty:\n        return df, []\n\n    df = df.fillna(np.nan).infer_objects()\n\n    # Direct copy / rename\n    xref = {\n        \"rh_avg_qc\": \"relh\",\n        \"rh_avg_f\": \"relh_f\",\n        \"rain_in_tot_qc\": \"precip\",\n        \"rain_in_tot_f\": \"precip_f\",\n        \"winddir_d1_wvt_qc\": \"drct\",\n        \"winddir_d1_wvt_f\": \"drct_f\",\n        \"vwc12_qc\": \"soil12vwc\",\n        \"vwc12_f\": \"soil12vwc_f\",\n        \"vwc24_qc\": \"soil24vwc\",\n        \"vwc24_f\": \"soil24vwc_f\",\n        \"vwc50_qc\": \"soil50vwc\",\n        \"vwc50_f\": \"soil50vwc_f\",\n        \"dailyet_qc\": \"et\",\n        \"dailyet_f\": \"et_f\",\n    }\n    df = df.rename(columns=xref, errors=\"ignore\")\n    # Mul by 100 for %\n    for depth in [12, 24, 50]:\n        df[f\"soil{depth}vwc\"] = df[f\"soil{depth}vwc\"] * 100.0\n    # Now we need to do some mass data conversion, sigh\n    tc = {\n        \"high\": \"tair_c_max_qc\",\n        \"low\": \"tair_c_min_qc\",\n        \"soil04t\": \"t4_c_avg_qc\",\n        \"soil04tn\": \"soil04tn\",\n        \"soil04tx\": \"soil04tx\",\n        \"soil12t\": \"t12_c_avg_qc\",\n        \"soil12tn\": \"soil12tn\",\n        \"soil12tx\": \"soil12tx\",\n        \"soil24t\": \"t24_c_avg_qc\",\n        \"soil24tn\": \"soil24tn\",\n        \"soil24tx\": \"soil24tx\",\n        \"soil50t\": \"t50_c_avg_qc\",\n        \"soil50tn\": \"soil50tn\",\n        \"soil50tx\": \"soil50tx\",\n    }\n    for key, col in tc.items():\n        if key not in cols:\n            continue\n        # Do the work\n        df[key] = convert_value(df[col].values, \"degC\", \"degF\")\n        df[f\"{key}_f\"] = df[f\"{col.replace('_qc', '')}_f\"]\n\n    if \"speed\" in cols:\n        df = df.rename(columns={\"ws_mph_qc\": \"speed\", \"ws_mph_f\": \"speed_f\"})\n    if \"gust\" in cols:\n        df = df.rename(\n            columns={\"ws_mph_max_qc\": \"gust\", \"ws_mph_max_f\": \"gust_f\"}\n        )\n    if \"sv\" in cols:\n        # SoilVue 10 data\n        for depth in SV_DEPTHS:\n            df[f\"sv_t{depth}\"] = convert_value(\n                df[f\"sv_t{depth}_qc\"].values, \"degC\", \"degF\"\n            )\n            # Copy\n            df[f\"sv_vwc{depth}\"] = df[f\"sv_vwc{depth}_qc\"]\n        # Remove the original\n        cols.remove(\"sv\")\n    else:\n        for col in list(cols):\n            if col.startswith(\"sv_r\"):\n                df[col] = convert_value(df[f\"{col}_qc\"].values, \"degC\", \"degF\")\n                cols.remove(col)\n            elif col.startswith(\"sv_vwc\"):\n                df[col] = df[f\"{col}_qc\"]\n                cols.remove(col)\n\n    # Convert solar radiation to J/m2\n    if \"solar\" in cols:\n        df[\"solar\"] = df[\"slrkj_tot_qc\"] * 1000.0\n        df[\"solar_f\"] = df[\"slrkj_tot_f\"]\n    if \"solar_mj\" in cols:\n        df[\"solar_mj\"] = df[\"slrkj_tot_qc\"] / 1000.0\n        df[\"solar_mj_f\"] = df[\"slrkj_tot_f\"]\n    if \"et\" in cols:\n        df[\"et\"] = convert_value(df[\"et\"], \"mm\", \"inch\")\n\n    overwrite = (\n        \"bp_mb lwmv_1 lwmv_2 lwmdry_1_tot lwmcon_1_tot lwmwet_1_tot \"\n        \"lwmdry_2_tot lwmcon_2_tot lwmwet_2_tot bpres_avg\"\n    ).split()\n    for col in overwrite:\n        if col in cols:\n            # Overwrite\n            df[col] = df[f\"{col}_qc\"]\n\n    return df, cols\n\n\ndef fetch_hourly(environ: dict, cols: list):\n    \"\"\"Process the request for hourly/minute data.\"\"\"\n    stations = environ[\"station\"]\n\n    if not cols:\n        cols = (\n            \"station valid tmpf relh solar precip speed drct et soil04t \"\n            \"soil12t soil24t soil50t soil12vwc soil24vwc soil50vwc\"\n        ).split()\n    else:\n        cols.insert(0, \"valid\")\n        cols.insert(0, \"station\")\n    if environ[\"qcflags\"]:\n        newcols = cols[:2]\n        for col in cols[2:]:\n            newcols.extend([col, f\"{col}_f\"])\n        cols = newcols\n\n    table = \"sm_hourly\"\n    sqlextra = \", null as bp_mb_qc, '' as bp_mb_f \"\n    if environ[\"timeres\"] == \"minute\":\n        table = \"sm_minute\"\n        sqlextra = \", null as etalfalfa_qc, '' as etalfalfa_f \"\n    if \"sv\" in cols:\n        # SoilVue 10 data\n        for depth in SV_DEPTHS:\n            for c2 in [\"t\", \"vwc\"]:\n                cols.append(f\"sv_{c2}{depth}\")\n                if environ[\"qcflags\"]:\n                    cols.append(f\"sv_{c2}{depth}_f\")\n    else:\n        for col in list(cols):\n            if col.startswith(\"sv\") and len(col) > 2:\n                depth = int(col[2:])\n                for c2 in [\"t\", \"vwc\"]:\n                    cols.append(f\"sv_{c2}{depth}\")\n                    if environ[\"qcflags\"]:\n                        cols.append(f\"sv_{c2}{depth}_f\")\n                # remove the proxy column\n                cols.remove(col)\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                SELECT *, valid at time zone 'UTC' as utc_valid {sqlextra}\n                from {table} WHERE valid >= :sts and valid < :ets and\n                station = ANY(:stations) ORDER by valid ASC\n                \"\"\",\n                table=table,\n                sqlextra=sqlextra,\n            ),\n            conn,\n            params={\n                \"sts\": environ[\"sts\"],\n                \"ets\": environ[\"ets\"],\n                \"stations\": stations,\n            },\n            index_col=None,\n        )\n    if df.empty:\n        return df, cols\n\n    # Muck with the timestamp column\n    if environ[\"tz\"] == \"UTC\":\n        df[\"valid\"] = df[\"utc_valid\"].dt.strftime(\"%Y-%m-%d %H:%M+00\")\n    else:\n        df[\"valid\"] = (\n            df[\"utc_valid\"]\n            .dt.tz_localize(\"UTC\")\n            .dt.tz_convert(environ[\"tz\"])\n            .dt.strftime(\"%Y-%m-%d %H:%M\")\n        )\n\n    df = df.fillna(np.nan).infer_objects()\n    # Direct copy / rename\n    xref = {\n        \"rh_avg_qc\": \"relh\",\n        \"rh_avg_f\": \"relh_f\",\n        \"rain_in_tot_qc\": \"precip\",\n        \"rain_in_tot_f\": \"precip_f\",\n        \"winddir_d1_wvt_qc\": \"drct\",\n        \"winddir_d1_wvt_f\": \"drct_f\",\n        \"vwc12_qc\": \"soil12vwc\",\n        \"vwc12_f\": \"soil12vwc_f\",\n        \"vwc24_qc\": \"soil24vwc\",\n        \"soil24_f\": \"soil24vwc_f\",\n        \"vwc50_qc\": \"soil50vwc\",\n        \"soil50_f\": \"soil50vwc_f\",\n    }\n    df = df.rename(columns=xref, errors=\"ignore\")\n    if \"cci\" in cols:\n        df[\"cci\"] = comprehensive_climate_index(\n            units.degC * df[\"tair_c_avg_qc\"].to_numpy(),\n            units.percent * df[\"relh\"].to_numpy(),\n            units.mps * df[\"ws_mph_qc\"].to_numpy(),\n            units.watts / units.meter**2 * df[\"slrkj_tot_qc\"].to_numpy(),\n            shade_effect=False,\n        )\n    if \"cci_shade\" in cols:\n        df[\"cci_shade\"] = comprehensive_climate_index(\n            units.degC * df[\"tair_c_avg_qc\"].to_numpy(),\n            units.percent * df[\"relh\"].to_numpy(),\n            units.mps * df[\"ws_mph_qc\"].to_numpy(),\n            units.watts / units.meter**2 * df[\"slrkj_tot_qc\"].to_numpy(),\n            shade_effect=True,\n        )\n    # Mul by 100 for %\n    for depth in [12, 24, 50]:\n        df[f\"soil{depth}vwc\"] = df[f\"soil{depth}vwc\"] * 100.0\n    # Now we need to do some mass data conversion, sigh\n    tc = {\n        \"tmpf\": \"tair_c_avg_qc\",\n        \"soil04t\": \"t4_c_avg_qc\",\n        \"soil12t\": \"t12_c_avg_qc\",\n        \"soil24t\": \"t24_c_avg_qc\",\n        \"soil50t\": \"t50_c_avg_qc\",\n    }\n    for key, col in tc.items():\n        if key not in cols:\n            continue\n        # Do the work\n        df[key] = convert_value(df[col].values, \"degC\", \"degF\")\n        df[f\"{key}_f\"] = df[f\"{col.replace('_qc', '')}_f\"]\n\n    if \"sv\" in cols:\n        # SoilVue 10 data\n        for depth in SV_DEPTHS:\n            df[f\"sv_t{depth}\"] = convert_value(\n                df[f\"sv_t{depth}_qc\"].values, \"degC\", \"degF\"\n            )\n            # Copy\n            df[f\"sv_vwc{depth}\"] = df[f\"sv_vwc{depth}_qc\"]\n        # Remove the original\n        cols.remove(\"sv\")\n    else:\n        for col in cols:\n            if col.startswith(\"sv_t\"):\n                df[col] = convert_value(df[f\"{col}_qc\"].values, \"degC\", \"degF\")\n            elif col.startswith(\"sv_vwc\"):\n                # Copy\n                df[col] = df[f\"{col}_qc\"]\n\n    # Convert solar radiation to J/m2\n    if \"solar\" in cols:\n        df[\"solar\"] = df[\"slrkj_tot_qc\"] * 1000.0\n\n    if \"speed\" in cols:\n        df[\"speed\"] = df[\"ws_mph_qc\"]\n\n    if \"et\" in cols:\n        df[\"et\"] = convert_value(df[\"etalfalfa_qc\"].values, \"mm\", \"inch\")\n\n    overwrite = (\n        \"bp_mb lwmv_1 lwmv_2 lwmdry_1_tot lwmcon_1_tot lwmwet_1_tot \"\n        \"lwmdry_2_tot lwmcon_2_tot lwmwet_2_tot bpres_avg\"\n    ).split()\n    for col in overwrite:\n        if col in cols:\n            # Overwrite\n            df[col] = df[f\"{col}_qc\"]\n\n    return df, cols\n\n\ndef fetch_inversion(environ: dict, cols: list):\n    \"\"\"Process the request for inversion data.\"\"\"\n    stations = environ[\"station\"]\n\n    cols = \"station valid tair_15 tair_5 tair_10 speed gust\".split()\n\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                SELECT station, valid at time zone 'UTC' as utc_valid,\n                tair_15_c_avg_qc,\n                tair_15_c_avg_f,\n                tair_5_c_avg_qc,\n                tair_5_c_avg_f,\n                tair_10_c_avg_qc,\n                tair_10_c_avg_f,\n                ws_ms_avg_qc,\n                ws_ms_avg_f,\n                ws_ms_max_qc,\n                ws_ms_max_f\n                from sm_inversion WHERE valid >= :sts and valid < :ets and\n                station = ANY(:stations) ORDER by valid ASC\n                \"\"\"\n            ),\n            conn,\n            params={\n                \"sts\": environ[\"sts\"],\n                \"ets\": environ[\"ets\"],\n                \"stations\": stations,\n            },\n            index_col=None,\n        )\n    if df.empty:\n        return df, cols\n\n    # Muck with the timestamp column\n    if environ[\"tz\"] == \"UTC\":\n        df[\"valid\"] = df[\"utc_valid\"].dt.strftime(\"%Y-%m-%d %H:%M+00\")\n    else:\n        df[\"valid\"] = (\n            df[\"utc_valid\"]\n            .dt.tz_localize(\"UTC\")\n            .dt.tz_convert(environ[\"tz\"])\n            .dt.strftime(\"%Y-%m-%d %H:%M\")\n        )\n\n    df = df.fillna(np.nan).infer_objects()\n    # Direct copy / rename\n    # Now we need to do some mass data conversion, sigh\n    tc = {\n        \"tair_15\": \"tair_15_c_avg_qc\",\n        \"tair_5\": \"tair_5_c_avg_qc\",\n        \"tair_10\": \"tair_10_c_avg_qc\",\n    }\n    for key, col in tc.items():\n        # Do the work\n        df[key] = convert_value(df[col].values, \"degC\", \"degF\")\n        df[f\"{key}_f\"] = df[f\"{col.replace('_qc', '')}_f\"]\n\n    df[\"speed\"] = convert_value(df[\"ws_ms_avg_qc\"].values, \"mps\", \"mph\")\n    df[\"speed_f\"] = df[\"ws_ms_avg_f\"]\n    df[\"gust\"] = convert_value(df[\"ws_ms_max_qc\"].values, \"mps\", \"mph\")\n    df[\"gust_f\"] = df[\"ws_ms_max_f\"]\n\n    return df, cols\n\n\ndef rewrite_cgi_params():\n    \"\"\"Rewrite the CGI parameters to be more sane\"\"\"\n\n    def _decorator(func):\n        def _wrapped(environ, start_response):\n            \"\"\"Rewrite the query string as necessary.\"\"\"\n            qs = environ.get(\"QUERY_STRING\", \"\")\n            # If sts=[A-Z] is present, we replace this with station\n            if LEGACY_STS.search(qs):\n                environ[\"QUERY_STRING\"] = qs.replace(\"sts=\", \"station=\")\n\n            return func(environ, start_response)\n\n        return _wrapped\n\n    return _decorator\n\n\n@rewrite_cgi_params()\n@iemapp(\n    help=__doc__, schema=Schema, default_tz=\"America/Chicago\", parse_times=True\n)\ndef application(environ, start_response):\n    \"\"\"Do things\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"Missing start/end time parameters\")\n    if environ[\"sts\"] >= environ[\"ets\"]:\n        environ[\"ets\"] = environ[\"sts\"] + timedelta(days=1)\n    mode = environ[\"mode\"]\n    cols = environ[\"vars\"]\n    if cols is None:\n        cols = []\n    fmt = environ[\"format\"]\n    todisk = environ[\"todisk\"] == \"yes\"\n    if mode == \"hourly\":\n        df, cols = fetch_hourly(environ, cols)\n    elif mode == \"inversion\":\n        df, cols = fetch_inversion(environ, cols)\n    else:\n        df, cols = fetch_daily(environ, cols)\n    miss = environ[\"missing\"]\n    df = df.replace({np.nan: miss})\n    # compute columns present in both cols and df.columns\n    # pandas intersection is not order preserving, so we do this\n    cols = [c for c in cols if c in df.columns]\n    if fmt == \"excel\":\n        bio = BytesIO()\n        if cols:\n            with pd.ExcelWriter(bio, engine=\"xlsxwriter\") as writer:\n                df.to_excel(\n                    writer, sheet_name=\"Data\", columns=cols, index=False\n                )\n        headers = [\n            (\"Content-type\", EXL),\n            (\"Content-disposition\", \"attachment; Filename=isusm.xlsx\"),\n        ]\n        start_response(\"200 OK\", headers)\n        return [bio.getvalue()]\n\n    delim = \",\" if fmt == \"comma\" else \"\\t\"\n    sio = StringIO()\n    # careful of precision here\n    df.to_csv(sio, index=False, columns=cols, sep=delim, float_format=\"%.4f\")\n\n    if todisk:\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-Disposition\", \"attachment; filename=isusm.txt\"),\n        ]\n    else:\n        headers = [(\"Content-type\", \"text/plain\")]\n    start_response(\"200 OK\", headers)\n    return [sio.getvalue().encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/request/maxcsv.py",
    "content": "\"\"\".. title:: CSV Service for MAX\n\n..\n    NODOCTEST\n\nThis service is designed to emit CSV format data for a specific usage case\nwithin a software system called MAX.  The primary interface for this service\nis accomplished via an Apache mod_rewrite rule, so you would not likely want\nto approach this service directly, but use the examples below to fire the\nrewrite.\n\nChangelog\n---------\n\n- 2024-07-24: Initial documentation release\n\nExample Requests\n----------------\n\nSummarize Cedar Rapids NWS CLI Reporting Site for January 2024\n\nhttps://mesonet.agron.iastate.edu/request/maxcsv/monthlysummary_KCID_2024_1.txt\n\nCompute the next moon rise and set for a given longitude and latitude.  Note\nthat the generated documentation link here is incomplete for lame reasons, just\ncopy/paste the entire string.\n\n``https://mesonet.agron.iastate.edu/request/maxcsv/moonphase_-95.44_41.99.txt``\n\nProvides the current UV Index data from\n`CPC <https://www.cpc.ncep.noaa.gov/products/stratosphere/uv_index/bulletin.txt>`_\n\nhttps://mesonet.agron.iastate.edu/request/maxcsv/uvi.txt\n\nProvides recent 24-hours worth of snowfall Local Storm Reports for a given\nstate.\n\nhttps://mesonet.agron.iastate.edu/request/maxcsv/lsrsnowfall_ia.txt\n\nProvides all recent 24-hours worth of snowfall Local Storm Reports\n\nhttps://mesonet.agron.iastate.edu/request/maxcsv/lsrsnowfall.txt\n\nKCRG-TV CityCam Telemetry\n\nhttps://mesonet.agron.iastate.edu/request/maxcsv/kcrgcitycam.txt\n\nIowa Airport data for today\n\nhttps://mesonet.agron.iastate.edu/request/maxcsv/iowatoday.txt\n\nIowa Airport data for yesterday\n\nhttps://mesonet.agron.iastate.edu/request/maxcsv/iowayesterday.txt\n\nIowa RWIS data\n\nhttps://mesonet.agron.iastate.edu/request/maxcsv/iarwis.txt\n\nIowa Winter Road Conditions\n\nhttps://mesonet.agron.iastate.edu/request/maxcsv/iaroadcond.txt\n\nIowa Soil Moisture Network Currents\n\nhttps://mesonet.agron.iastate.edu/request/maxcsv/isusm.txt\n\nAHPS Obs + Forecast for a given NWS Location Identifier\n\nhttps://mesonet.agron.iastate.edu/request/maxcsv/ahps_DEWI4.txt\n\nAHPS Forecast for a given NWS Location Identifier\n\nhttps://mesonet.agron.iastate.edu/request/maxcsv/ahpsfx_DEWI4.txt\n\nAHPS Obs for a given NWS Location Identifier\n\nhttps://mesonet.agron.iastate.edu/request/maxcsv/ahpsobs_DEWI4.txt\n\n\"\"\"\n\nimport re\nfrom datetime import date, timedelta, timezone\nfrom typing import Annotated\nfrom zoneinfo import ZoneInfo\n\nimport ephem\nimport httpx\nimport numpy as np\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    q: Annotated[str, Field(description=\"Apache mod_rewrite query string.\")]\n\n\ndef figure_phase(p1: float, p2: float) -> str:\n    \"\"\"Return a string of the moon phase!\"\"\"\n    if p2 < p1:  # Waning!\n        if p1 < 0.1:\n            return \"New Moon\"\n        if p1 < 0.4:\n            return \"Waning Crescent\"\n        if p1 < 0.6:\n            return \"Last Quarter\"\n        if p1 < 0.9:\n            return \"Waning Gibbous\"\n        return \"Full Moon\"\n\n    if p1 < 0.1:\n        return \"New Moon\"\n    if p1 < 0.4:\n        return \"Waxing Crescent\"\n    if p1 < 0.6:\n        return \"First Quarter\"\n    if p1 < 0.9:\n        return \"Waxing Gibbous\"\n    return \"Full Moon\"\n\n\ndef do_monthly_summary(station: str, year: int, month: int):\n    \"\"\"Compute some requested monthly summary stats.\"\"\"\n    if month < 1 or month > 12:\n        return \"ERROR, invalid month specified\"\n    sts = date(year, month, 1)\n    ets = (sts + timedelta(days=35)).replace(day=1)\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                select station as location_id, valid, high, low,\n                high - high_normal as high_dep,\n                low - low_normal as low_dep, precip, precip_month,\n                precip_month_normal\n                from cli_data where station = :station and\n                valid >= :sts and valid < :ets ORDER by valid ASC\n                \"\"\"\n            ),\n            conn,\n            params={\"station\": station, \"sts\": sts, \"ets\": ets},\n            index_col=None,\n        )\n    if df.empty:\n        return \"NO DATA\"\n    # running month average high and running monthly average low,\n    df[\"high_mtd_avg\"] = df[\"high\"].expanding().mean()\n    df[\"low_mtd_avg\"] = df[\"low\"].expanding().mean()\n    # avg high and low departures to date,\n    df[\"high_mtd_departure\"] = df[\"high_dep\"].expanding().mean()\n    df[\"low_mtd_departure\"] = df[\"low_dep\"].expanding().mean()\n    # total days above normal,\n    df[\"high_days_above\"] = np.where(df[\"high_dep\"] > 0, 1, 0).cumsum()\n    df[\"low_days_above\"] = np.where(df[\"low_dep\"] > 0, 1, 0).cumsum()\n    # total days near normal (+- 3 degrees if possible),\n    df[\"high_days_+-3\"] = np.where(\n        (df[\"high_dep\"] <= 3) & (df[\"high_dep\"] >= -3), 1, 0\n    ).cumsum()\n    df[\"low_days_+-3\"] = np.where(\n        (df[\"low_dep\"] <= 3) & (df[\"low_dep\"] >= -3), 1, 0\n    ).cumsum()\n    # total days below normal\n    df[\"high_days_below\"] = np.where(df[\"high_dep\"] < 0, 1, 0).cumsum()\n    df[\"low_days_below\"] = np.where(df[\"low_dep\"] < 0, 1, 0).cumsum()\n    # rain or snow data month to date\n    df[\"precip_departure\"] = df[\"precip_month\"] - df[\"precip_month_normal\"]\n    # return just the last row as a dataframe\n    return df.iloc[-1:]\n\n\ndef do_moonphase(lon, lat):\n    \"\"\"Get the next four phases of the moon.\"\"\"\n    obs = ephem.Observer()\n    obs.lat = str(lat)\n    obs.long = str(lon)\n    obs.date = utc().strftime(\"%Y/%m/%d %H:%M\")\n    series = pd.Series(\n        {\n            \"new_moon\": ephem.next_new_moon(utc())\n            .datetime()\n            .replace(tzinfo=timezone.utc),\n            \"full_moon\": ephem.next_full_moon(utc())\n            .datetime()\n            .replace(tzinfo=timezone.utc),\n            \"first_quarter\": ephem.next_first_quarter_moon(utc())\n            .datetime()\n            .replace(tzinfo=timezone.utc),\n            \"last_quarter\": ephem.next_last_quarter_moon(utc())\n            .datetime()\n            .replace(tzinfo=timezone.utc),\n        }\n    ).sort_values(ascending=True)\n    # Figure out the timezone\n    pgconn, cursor = get_dbconnc(\"mesosite\")\n    cursor.execute(\n        \"select tzid from tz_world WHERE \"\n        \"st_contains(geom, st_setsrid(ST_Point(%s, %s), 4326))\",\n        (lon, lat),\n    )\n    if cursor.rowcount == 0:\n        tzid = \"UTC\"\n    else:\n        tzid = cursor.fetchone()[\"tzid\"]\n    pgconn.close()\n    tz = ZoneInfo(tzid)\n\n    s = np.array(series)\n    return pd.DataFrame(\n        {\n            \"longitude\": lon,\n            \"latitude\": lat,\n            \"moon_phase1\": series.index[0],\n            \"moon_phase1_date\": s[0].astimezone(tz).strftime(\"%Y/%m/%d\"),\n            \"moon_phase1_time\": s[0].astimezone(tz).strftime(\"%-I:%M %P\"),\n            \"moon_phase2\": series.index[1],\n            \"moon_phase2_date\": s[1].astimezone(tz).strftime(\"%Y/%m/%d\"),\n            \"moon_phase2_time\": s[1].astimezone(tz).strftime(\"%-I:%M %P\"),\n            \"moon_phase3\": series.index[2],\n            \"moon_phase3_date\": s[2].astimezone(tz).strftime(\"%Y/%m/%d\"),\n            \"moon_phase3_time\": s[2].astimezone(tz).strftime(\"%-I:%M %P\"),\n            \"moon_phase4\": series.index[3],\n            \"moon_phase4_date\": s[3].astimezone(tz).strftime(\"%Y/%m/%d\"),\n            \"moon_phase4_time\": s[3].astimezone(tz).strftime(\"%-I:%M %P\"),\n        },\n        index=[0],\n    )\n\n\ndef do_moon(lon, lat):\n    \"\"\"Moon fun.\"\"\"\n    moon = ephem.Moon()\n    obs = ephem.Observer()\n    obs.lat = str(lat)\n    obs.long = str(lon)\n    obs.date = utc().strftime(\"%Y/%m/%d %H:%M\")\n    r1 = obs.next_rising(moon).datetime().replace(tzinfo=timezone.utc)\n    p1 = moon.moon_phase\n    obs.date = r1.strftime(\"%Y/%m/%d %H:%M\")\n    s1 = obs.next_setting(moon).datetime().replace(tzinfo=timezone.utc)\n    # Figure out the next rise time\n    obs.date = s1.strftime(\"%Y/%m/%d %H:%M\")\n    r2 = obs.next_rising(moon).datetime().replace(tzinfo=timezone.utc)\n    p2 = moon.moon_phase\n    obs.date = r2.strftime(\"%Y/%m/%d %H:%M\")\n    s2 = obs.next_setting(moon).datetime().replace(tzinfo=timezone.utc)\n    label = figure_phase(p1, p2)\n    # Figure out the timezone\n    pgconn, cursor = get_dbconnc(\"mesosite\")\n    cursor.execute(\n        \"select tzid from tz_world WHERE \"\n        \"st_contains(geom, st_setsrid(ST_Point(%s, %s), 4326))\",\n        (lon, lat),\n    )\n    if cursor.rowcount == 0:\n        tzid = \"UTC\"\n    else:\n        tzid = cursor.fetchone()[\"tzid\"]\n    pgconn.close()\n    tz = ZoneInfo(tzid)\n    return pd.DataFrame(\n        {\n            \"longitude\": lon,\n            \"latitude\": lat,\n            \"moon_rise_date\": r1.astimezone(tz).strftime(\"%Y/%m/%d\"),\n            \"moon_rise_time\": r1.astimezone(tz).strftime(\"%-I:%M %P\"),\n            \"moon_set_date\": s1.astimezone(tz).strftime(\"%Y/%m/%d\"),\n            \"moon_set_time\": s1.astimezone(tz).strftime(\"%-I:%M %P\"),\n            \"percent_illum_at_rise\": round(p1 * 100, 4),\n            \"phase\": label,\n            \"next_moon_rise_date\": r2.astimezone(tz).strftime(\"%Y/%m/%d\"),\n            \"next_moon_rise_time\": r2.astimezone(tz).strftime(\"%-I:%M %P\"),\n            \"next_moon_set_date\": s2.astimezone(tz).strftime(\"%Y/%m/%d\"),\n            \"next_moon_set_time\": s2.astimezone(tz).strftime(\"%-I:%M %P\"),\n            \"next_percent_illum_at_rise\": round(p2 * 100, 4),\n            \"timezone\": tzid,\n        },\n        index=[0],\n    )\n\n\ndef do_iaroadcond():\n    \"\"\"Iowa DOT Road Conditions as dots\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n        select b.idot_id as locationid,\n        replace(b.longname, ',', ' ') as locationname,\n        ST_y(ST_transform(ST_centroid(b.geom),4326)) as latitude,\n        ST_x(ST_transform(ST_centroid(b.geom),4326)) as longitude, cond_code\n        from roads_base b JOIN roads_current c on (c.segid = b.segid)\n        \"\"\",\n            conn,\n        )\n    return df\n\n\ndef do_isusm():\n    \"\"\"Iowa Soil Moisture Network\"\"\"\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n        select t.id as locationid,\n        replace(t.name, ',', ' ') as locationname,\n        ST_y(t.geom) as latitude,\n        ST_x(t.geom) as longitude, c1tmpf::int as tsoil4\n        from stations t JOIN current c on (t.iemid = c.iemid)\n        and t.network = 'ISUSM' and c.valid > (now() - '30 minutes'::interval)\n        and c1tmpf between -30 and 130\n        \"\"\",\n            conn,\n        )\n    return df\n\n\ndef do_webcams(network):\n    \"\"\"direction arrows\"\"\"\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        select cam as locationid, w.name as locationname,\n        st_y(geom) as latitude,\n        st_x(geom) as longitude, drct\n        from camera_current c JOIN webcams w on (c.cam = w.id)\n        WHERE c.valid > (now() - '30 minutes'::interval) and w.network = :net\n        \"\"\"\n            ),\n            conn,\n            params={\"net\": network},\n        )\n    return df\n\n\ndef do_iowa_azos(dt: date, itoday=False):\n    \"\"\"Dump high and lows for Iowa ASOS\"\"\"\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        select id as locationid, n.name as locationname,\n        st_y(geom) as latitude,\n        st_x(geom) as longitude, s.day, s.max_tmpf::int as high,\n        s.min_tmpf::int as low, coalesce(pday, 0) as precip\n        from stations n JOIN {table} s on (n.iemid = s.iemid)\n        WHERE n.network = 'IA_ASOS' and s.day = :dt\n        \"\"\",\n                table=f\"summary_{dt:%Y}\",\n            ),\n            conn,\n            params={\"dt\": dt},\n            index_col=\"locationid\",\n        )\n        if itoday:\n            # Additionally, piggy back rainfall totals\n            df2 = pd.read_sql(\n                sql_helper(\n                    \"\"\"\n            SELECT id as station,\n            sum(phour) as precip720,\n            sum(case when valid >= (now() - '168 hours'::interval)\n                then phour else 0 end) as precip168,\n            sum(case when valid >= (now() - '72 hours'::interval)\n                then phour else 0 end) as precip72,\n            sum(case when valid >= (now() - '48 hours'::interval)\n                then phour else 0 end) as precip48,\n            sum(case when valid >= (now() - '24 hours'::interval)\n                then phour else 0 end) as precip24\n            from hourly h JOIN stations t on (h.iemid = t.iemid)\n            where t.network = 'IA_ASOS' and\n            valid >= now() - '720 hours'::interval\n            and phour > 0.005 GROUP by id\n            \"\"\"\n                ),\n                conn,\n                index_col=\"station\",\n            )\n            if not df.empty:\n                for col in [\n                    \"precip24\",\n                    \"precip48\",\n                    \"precip72\",\n                    \"precip168\",\n                    \"precip720\",\n                ]:\n                    df[col] = df2[col].round(2)\n                    # make sure the new column is >= precip\n                    df.loc[df[col] < df[\"precip\"], col] = df[\"precip\"]\n    df = df.reset_index()\n    return df\n\n\ndef do_lsrsnowfall(state):\n    \"\"\"Dump Recent Local Storm Reports\"\"\"\n    statelimiter = \"\" if state is None else \" and state = :state \"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        select max(product_id) as locationid, city as locationname,\n        st_y(geom) as latitude,\n        st_x(geom) as longitude, magnitude as snowfall\n        from lsrs WHERE type = 'S' and valid > (now() - '1 days'::interval)\n        {statelimiter}\n        GROUP by locationname, st_y(geom), st_x(geom), magnitude\n        ORDER by locationid asc\n        \"\"\",\n                statelimiter=statelimiter,\n            ),\n            conn,\n            params={\"state\": state},\n        )\n    return df\n\n\ndef do_iarwis():\n    \"\"\"Dump RWIS data\"\"\"\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        select id as locationid, n.name as locationname,\n        st_y(geom) as latitude,\n        st_x(geom) as longitude, tsf0 as pavetmp1, tsf1 as pavetmp2,\n        tsf2 as pavetmp3, tsf3 as pavetmp4\n        from stations n JOIN current s on (n.iemid = s.iemid)\n        WHERE n.network in ('IA_RWIS', 'WI_RWIS', 'IL_RWIS') and\n        s.valid > (now() - '2 hours'::interval)\n        \"\"\"\n            ),\n            conn,\n        )\n    # Compute simple average in whole degree F\n    df[\"paveavg\"] = (\n        df[[\"pavetmp1\", \"pavetmp2\", \"pavetmp3\", \"pavetmp4\"]]\n        .mean(axis=1)\n        .map(lambda x: f\"{x:.0f}\" if not pd.isna(x) else \"\")\n    )\n    df = df[df[\"paveavg\"] != \"\"]\n\n    for col in range(1, 5):\n        df[f\"pavetmp{col}\"] = df[f\"pavetmp{col}\"].map(\n            lambda x: f\"{x:.0f}\" if not pd.isna(x) else \"\"\n        )\n    return df\n\n\ndef do_ahps_obs(nwsli):\n    \"\"\"Create a dataframe with AHPS river stage and CFS information\"\"\"\n    pgconn, cursor = get_dbconnc(\"hml\")\n    # Get metadata\n    cursor.execute(\n        \"\"\"\n        SELECT name, st_x(geom), st_y(geom), tzname from stations\n        where id = %s and network ~* 'DCP'\n    \"\"\",\n        (nwsli,),\n    )\n    if cursor.rowcount == 0:\n        return \"NO DATA\"\n    row = cursor.fetchone()\n    latitude = row[\"st_y\"]\n    longitude = row[\"st_x\"]\n    stationname = row[\"name\"]\n    tzinfo = ZoneInfo(row[\"tzname\"])\n    # Figure out which keys we have\n    cursor.execute(\n        \"\"\"\n    with obs as (\n        select distinct key from hml_observed_data where station = %s\n        and valid > now() - '3 days'::interval)\n    SELECT k.id, k.label from hml_observed_keys k JOIN obs o on (k.id = o.key)\n    \"\"\",\n        (nwsli,),\n    )\n    if cursor.rowcount != 2:\n        return \"NO DATA\"\n    plabel = cursor.fetchone()[\"label\"]\n    slabel = cursor.fetchone()[\"label\"]\n    pgconn.close()\n    with get_sqlalchemy_conn(\"hml\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH primaryv as (\n        SELECT valid, value from hml_observed_data WHERE station = :nwsli\n        and key = get_hml_observed_key(:plabel) and\n        valid > now() - '1 day'::interval\n        ), secondaryv as (\n        SELECT valid, value from hml_observed_data WHERE station = :nwsli\n        and key = get_hml_observed_key(:slabel) and\n        valid > now() - '1 day'::interval\n        )\n        SELECT p.valid at time zone 'UTC' as valid,\n        p.value as primary_value, s.value as secondary_value,\n        'O' as type\n        from primaryv p LEFT JOIN secondaryv s ON (p.valid = s.valid)\n        WHERE p.valid > (now() - '72 hours'::interval) and p.value is not null\n        and s.value is not null\n        ORDER by p.valid DESC\n        \"\"\"\n            ),\n            conn,\n            params={\"nwsli\": nwsli, \"plabel\": plabel, \"slabel\": slabel},\n            index_col=None,\n        )\n    if df.empty:\n        return \"NO DATA\"\n    df[\"locationid\"] = nwsli\n    df[\"locationname\"] = stationname\n    df[\"latitude\"] = latitude\n    df[\"longitude\"] = longitude\n    df[\"Time\"] = (\n        df[\"valid\"]\n        .dt.tz_localize(ZoneInfo(\"UTC\"))\n        .dt.tz_convert(tzinfo)\n        .dt.strftime(\"%m/%d/%Y %H:%M\")\n    )\n    df[plabel] = df[\"primary_value\"]\n    df[slabel] = df[\"secondary_value\"]\n    # we have to do the writing from here\n    res = \"Observed Data:,,\\n\"\n    res += \"|Date|,|Stage|,|--Flow-|\\n\"\n    odf = df[df[\"type\"] == \"O\"]\n    if \"Stage[ft]\" in odf.columns and \"Flow[kcfs]\" in odf.columns:\n        for _, row in odf.iterrows():\n            res += (\n                f\"{row['Time']},{row['Stage[ft]']:.2f}ft,\"\n                f\"{row['Flow[kcfs]']:.1f}kcfs\\n\"\n            )\n    return res\n\n\ndef do_ahps_fx(nwsli):\n    \"\"\"Create a dataframe with AHPS river stage and CFS information\"\"\"\n    pgconn, cursor = get_dbconnc(\"hml\")\n    # Get metadata\n    cursor.execute(\n        \"SELECT name, st_x(geom), st_y(geom), tzname from stations \"\n        \"where id = %s and network ~* 'DCP'\",\n        (nwsli,),\n    )\n    if cursor.rowcount == 0:\n        return \"NO DATA\"\n    row = cursor.fetchone()\n    latitude = row[\"st_y\"]\n    longitude = row[\"st_x\"]\n    stationname = row[\"name\"]\n    tzinfo = ZoneInfo(row[\"tzname\"])\n    # Get the last forecast\n    cursor.execute(\n        \"\"\"\n        select id, forecast_sts at time zone 'UTC' as fts,\n        generationtime at time zone 'UTC' as gts, primaryname, primaryunits,\n        secondaryname, secondaryunits\n        from hml_forecast where station = %s\n        and generationtime > now() - '7 days'::interval\n        ORDER by issued DESC LIMIT 1\n    \"\"\",\n        (nwsli,),\n    )\n    if cursor.rowcount == 0:\n        return \"NO DATA\"\n    row = cursor.fetchone()\n    primaryname = row[\"primaryname\"]\n    generationtime = row[\"gts\"]\n    primaryunits = row[\"primaryunits\"]\n    secondaryname = row[\"secondaryname\"]\n    secondaryunits = row[\"secondaryunits\"]\n    pgconn.close()\n    # Get the latest forecast\n    with get_sqlalchemy_conn(\"hml\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        SELECT valid at time zone 'UTC' as valid,\n        primary_value, secondary_value, 'F' as type from\n        {table} WHERE hml_forecast_id = :sid\n        ORDER by valid ASC\n        \"\"\",\n                table=f\"hml_forecast_data_{generationtime:%Y}\",\n            ),\n            conn,\n            params={\"sid\": row[\"id\"]},\n            index_col=None,\n        )\n    # Get the obs\n    plabel = f\"{primaryname}[{primaryunits}]\"\n    slabel = f\"{secondaryname}[{secondaryunits}]\"\n\n    df[\"locationid\"] = nwsli\n    df[\"locationname\"] = stationname\n    df[\"latitude\"] = latitude\n    df[\"longitude\"] = longitude\n    df[\"Time\"] = (\n        df[\"valid\"]\n        .dt.tz_localize(ZoneInfo(\"UTC\"))\n        .dt.tz_convert(tzinfo)\n        .dt.strftime(\"%m/%d/%Y %H:%M\")\n    )\n    df[plabel] = df[\"primary_value\"]\n    df[slabel] = df[\"secondary_value\"]\n    # we have to do the writing from here\n    res = f\"Forecast Data (Issued {generationtime:%m-%d-%Y %H:%M:%S} UTC):,\\n\"\n    res += \"|Date|,|Stage|,|--Flow-|\\n\"\n    odf = df[df[\"type\"] == \"F\"]\n    col = \"Stage[ft]\" if \"Stage[ft]\" in odf.columns else \"Tailwater[ft]\"\n    for _, row in odf.iterrows():\n        res += f\"{row['Time']},{row[col]:.2f}ft,{row['Flow[kcfs]']:.1f}kcfs\\n\"\n    return res\n\n\ndef feet(val, suffix=\"'\"):\n    \"\"\"Make feet indicator\"\"\"\n    if pd.isnull(val) or val == \"\":\n        return \"\"\n    return f\"{val:.1f}{suffix}\"\n\n\ndef do_ahps(nwsli):\n    \"\"\"Create a dataframe with AHPS river stage and CFS information\"\"\"\n    pgconn, cursor = get_dbconnc(\"hml\")\n    # Get metadata\n    cursor.execute(\n        \"SELECT name, st_x(geom), st_y(geom), tzname from stations \"\n        \"where id = %s and network ~* 'DCP'\",\n        (nwsli,),\n    )\n    if cursor.rowcount == 0:\n        return \"NO DATA\"\n    row = cursor.fetchone()\n    latitude = row[\"st_y\"]\n    longitude = row[\"st_x\"]\n    stationname = row[\"name\"].replace(\",\", \" \")\n    tzinfo = ZoneInfo(row[\"tzname\"])\n    # Get the last forecast\n    cursor.execute(\n        \"\"\"\n        select id, forecast_sts at time zone 'UTC' as fts,\n        generationtime at time zone 'UTC' as gts, primaryname, primaryunits,\n        secondaryname, secondaryunits\n        from hml_forecast where station = %s\n        and generationtime > now() - '3 days'::interval\n        ORDER by issued DESC LIMIT 1\n    \"\"\",\n        (nwsli,),\n    )\n    if cursor.rowcount == 0:\n        return \"NO DATA\"\n    row = cursor.fetchone()\n    generationtime = row[\"gts\"]\n    y = f\"{generationtime.year}\"\n    # Figure out which keys we have\n    cursor.execute(\n        \"\"\"\n    with obs as (\n        select distinct key from hml_observed_data where station = %s\n        and valid > now() - '3 days'::interval)\n    SELECT k.id, k.label from hml_observed_keys k JOIN obs o on (k.id = o.key)\n    \"\"\",\n        (nwsli,),\n    )\n    if cursor.rowcount == 0:\n        return \"NO DATA\"\n    lookupkey = 14\n    for _row in cursor:\n        if _row[\"label\"].find(\"[ft]\") > 0:\n            lookupkey = _row[\"id\"]\n            break\n    pgconn.close()\n    # get observations\n    with get_sqlalchemy_conn(\"hml\") as conn:\n        odf = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        SELECT valid at time zone 'UTC' as valid, null as obtime,\n        value from hml_observed_data WHERE station = :nwsli\n        and key = :lookupkey and valid > now() - '3 day'::interval\n        and extract(minute from valid) = 0\n        ORDER by valid DESC\n        \"\"\"\n            ),\n            conn,\n            params={\"nwsli\": nwsli, \"lookupkey\": lookupkey},\n            index_col=None,\n        )\n    # hoop jumping to get a timestamp in the local time of this sensor\n    # see akrherz/iem#187\n    if not odf.empty:\n        odf[\"obtime\"] = (\n            odf[\"valid\"]\n            .dt.tz_localize(ZoneInfo(\"UTC\"))\n            .dt.tz_convert(tzinfo)\n            .dt.strftime(\"%a. %-I %p\")\n        )\n    # Get the latest forecast\n    with get_sqlalchemy_conn(\"hml\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT valid at time zone 'UTC' as valid,\n            primary_value, secondary_value, 'F' as type from\n            {table} WHERE hml_forecast_id = :fid\n            ORDER by valid ASC\n        \"\"\",\n                table=f\"hml_forecast_data_{y}\",\n            ),\n            conn,\n            params={\"fid\": row[\"id\"]},\n            index_col=None,\n        )\n    # Get the obs\n    odf = odf.rename(columns={\"value\": \"obstage\"})\n    df = df.join(odf[[\"obtime\", \"obstage\"]], how=\"outer\")\n    # hoop jumping to get a timestamp in the local time of this sensor\n    # see akrherz/iem#187\n    df[\"forecasttime\"] = (\n        df[\"valid\"]\n        .dt.tz_localize(timezone.utc)\n        .dt.tz_convert(tzinfo)\n        .dt.strftime(\"%a. %-I %p\")\n    )\n    df[\"forecaststage\"] = df[\"primary_value\"]\n    # we have to do the writing from here\n    res = (\n        \"locationid,locationname,latitude,longitude,obtime,obstage,\"\n        \"obstage2,obstagetext,forecasttime,forecaststage,forecaststage1,\"\n        \"forecaststage2,forecaststage3,highestvalue,highestvalue2,\"\n        \"highestvaluedate\\n\"\n    )\n    res += \",,,,,,,,,,,,,,,\\n,,,,,,,,,,,,,,,\\n\"\n\n    maxrow = df.sort_values(\"forecaststage\", ascending=False).iloc[0]\n    for idx, row in df.iterrows():\n        fs = (\n            row[\"forecaststage\"] if not pd.isnull(row[\"forecaststage\"]) else \"\"\n        )\n        vals = [\n            nwsli if idx == 0 else \"\",\n            stationname if idx == 0 else \"\",\n            latitude if idx == 0 else \"\",\n            longitude if idx == 0 else \"\",\n            row[\"obtime\"],\n            row[\"obstage\"],\n            feet(row[\"obstage\"]),\n            \"Unknown\" if idx == 0 else \"\",\n            (row[\"forecasttime\"] if row[\"forecasttime\"] != \"NaT\" else \"\"),\n            feet(row[\"forecaststage\"], \"ft\"),\n            fs,\n            feet(row[\"forecaststage\"]),\n            fs,\n            \"\" if idx > 0 else maxrow[\"forecaststage\"],\n            \"\" if idx > 0 else feet(maxrow[\"forecaststage\"]),\n            \"\" if idx > 0 else maxrow[\"forecasttime\"],\n        ]\n        res += \",\".join(str(x) for x in vals) + \"\\n\"\n\n    return res\n\n\ndef do_uvi():\n    \"\"\"UVI index.\"\"\"\n    PATTERN = re.compile(\n        r\"(?P<c1>[A-Z\\s]+)\\s+(?P<s1>[A-Z][A-Z])\\s+(?P<u1>\\d+)\\s+\"\n        r\"(?P<c2>[A-Z\\s]+)\\s+(?P<s2>[A-Z][A-Z])\\s+(?P<u2>\\d+)\",\n    )\n    URL = (\n        \"https://mesonet.agron.iastate.edu/cgi-bin/afos/retrieve.py\"\n        \"?pil=UVICAC&fmt=text\"\n    )\n    resp = httpx.get(URL, timeout=20)\n    rows = []\n    for line in resp.content.decode(\"ascii\").split(\"\\n\"):\n        m = PATTERN.match(line)\n        if not m:\n            continue\n        data = m.groupdict()\n        for i in [\"1\", \"2\"]:\n            rows.append(  # noqa\n                {\n                    \"City\": data[f\"c{i}\"].strip(),\n                    \"State\": data[f\"s{i}\"].strip(),\n                    \"UVI\": data[f\"u{i}\"].strip(),\n                }\n            )\n    return pd.DataFrame(rows)\n\n\ndef router(appname):\n    \"\"\"Process and return dataframe\"\"\"\n    if appname.startswith(\"ahpsobs_\"):\n        df = do_ahps_obs(appname[8:].upper())  # we write ourselves and exit\n    elif appname.startswith(\"ahpsfx_\"):\n        df = do_ahps_fx(appname[7:].upper())  # we write ourselves and exit\n    elif appname.startswith(\"ahps_\"):\n        df = do_ahps(appname[5:].upper())  # we write ourselves and exit\n    elif appname == \"iaroadcond\":\n        df = do_iaroadcond()\n    elif appname == \"iarwis\":\n        df = do_iarwis()\n    elif appname == \"iowayesterday\":\n        df = do_iowa_azos(date.today() - timedelta(days=1))\n    elif appname == \"iowatoday\":\n        df = do_iowa_azos(date.today(), True)\n    elif appname == \"kcrgcitycam\":\n        df = do_webcams(\"KCRG\")\n    elif appname == \"uvi\":\n        df = do_uvi()\n    elif appname == \"isusm\":\n        df = do_isusm()\n    elif appname.startswith(\"lsrsnowfall\"):\n        tokens = appname.split(\"_\")\n        state = None\n        if len(tokens) == 2:\n            state = tokens[1][:2].upper()\n        df = do_lsrsnowfall(state)\n    elif appname.startswith(\"moonphase\"):\n        tokens = appname.replace(\".txt\", \"\").split(\"_\")\n        df = do_moonphase(float(tokens[1]), float(tokens[2]))\n    elif appname.startswith(\"moon\"):\n        tokens = appname.replace(\".txt\", \"\").split(\"_\")\n        df = do_moon(float(tokens[1]), float(tokens[2]))\n    elif appname.startswith(\"monthlysummary\"):\n        tokens = appname.replace(\".txt\", \"\").split(\"_\")\n        if len(tokens) != 4:\n            return \"ERROR, invalid monthly summary request\"\n        df = do_monthly_summary(tokens[1], int(tokens[2]), int(tokens[3]))\n    else:\n        df = \"ERROR, unknown report specified\"\n    return df\n\n\n@iemapp(\n    help=__doc__,\n    schema=Schema,\n    memcachekey=lambda x: f\"/request/maxcsv|{x['q']}\",\n    memcacheexpire=60,\n)\ndef application(environ, start_response):\n    \"\"\"Do Something\"\"\"\n    appname = environ[\"q\"]\n    res = router(appname)\n    start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n    if isinstance(res, pd.DataFrame):\n        return res.to_csv(None, index=False).encode(\"ascii\")\n    return res.encode(\"ascii\")\n"
  },
  {
    "path": "pylib/iemweb/request/metars.py",
    "content": "\"\"\".. title:: Request Hour's worth of METARs\n\nReturn to `IEM API Mainpage </api/#cgi>`_\n\nDocumentation for /cgi-bin/request/metars.py\n--------------------------------------------\n\nThis is a very simple service that intends on emitting a text file of METARs\nthat is ammenable to being ingested by other software.  Each METAR is on a\nsingle line and the file is sorted by the observation time.\n\nExample Usage:\n--------------\n\nRetrieve all METARs for the hour starting at 00 UTC on 1 January 2016:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/metars.py\\\n?valid=2016010100\n\n\"\"\"\n\nfrom datetime import datetime, timedelta, timezone\nfrom io import StringIO\n\nfrom pydantic import AwareDatetime, Field, field_validator\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb import error_log\n\nSIMULTANEOUS_REQUESTS: int = 30\n\n\nclass Schema(CGIModel):\n    \"\"\"Our schema for this request\"\"\"\n\n    valid: AwareDatetime = Field(\n        ...,\n        description=(\n            \"Hour truncated UTC timestamp to request data for. The \"\n            \"format is `YYYYMMDDHH`.\"\n        ),\n    )\n\n    @field_validator(\"valid\", mode=\"before\")\n    @classmethod\n    def parse_valid(cls, value):\n        \"\"\"Ensure valid is a valid datetime\"\"\"\n        return datetime.strptime(value, \"%Y%m%d%H\").replace(\n            tzinfo=timezone.utc\n        )\n\n\ndef check_load(conn, environ: dict):\n    \"\"\"A crude check that aborts this script if there is too much\n    demand at the moment\"\"\"\n    res = conn.execute(\n        sql_helper(\n            \"select pid from pg_stat_activity where query ~* 'FETCH' \"\n            \"and datname = 'asos'\"\n        )\n    )\n    load = len(res.fetchall())\n    if load > SIMULTANEOUS_REQUESTS:\n        error_log(environ, f\"/cgi-bin/request/metars.py over capacity: {load}\")\n        return False\n    return True\n\n\n@iemapp(schema=Schema, help=__doc__)\ndef application(environ, start_response):\n    \"\"\"Do Something\"\"\"\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        if not check_load(conn, environ):\n            start_response(\n                \"503 Service Unavailable\", [(\"Content-type\", \"text/plain\")]\n            )\n            return [b\"ERROR: server over capacity, please try later\"]\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        valid = environ[\"valid\"]\n        res = conn.execute(\n            sql_helper(\"\"\"\n            SELECT metar from alldata\n            WHERE valid >= :sts and valid < :ets and metar is not null\n            ORDER by valid ASC\n        \"\"\"),\n            {\"sts\": valid, \"ets\": valid + timedelta(hours=1)},\n        )\n        sio = StringIO()\n        for row in res:\n            sio.write(\"%s\\n\" % (row[0].replace(\"\\n\", \" \"),))\n    return [sio.getvalue().encode(\"ascii\", \"ignore\")]\n"
  },
  {
    "path": "pylib/iemweb/request/mos.py",
    "content": "\"\"\".. title:: Model Output Statistics (MOS) Data\n\nReturn to `API Services </api/#cgi>`_\n\nDocumentation for /cgi-bin/request/mos.py\n-----------------------------------------\n\nThis application provides access to the Model Output Statistics (MOS) data\nthat the IEM processes and archives.\n\nExample Usage\n~~~~~~~~~~~~~\n\nReturn all the NBS MOS data for KDSM for MOS runs made on 14 Dec 2023\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/mos.py?\\\nstation=KDSM&model=NBS&sts=2023-12-14T00:00Z&ets=2023-12-15T00:00Z&format=csv\n\nand in Excel format this time\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/mos.py?\\\nstation=KDSM&model=NBS&sts=2023-12-14T00:00Z&ets=2023-12-15T00:00Z&format=excel\n\nand in JSON format this time\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/mos.py?\\\nstation=KDSM&model=NBS&sts=2023-12-14T00:00Z&ets=2023-12-15T00:00Z&format=json\n\n\"\"\"\n\nfrom io import BytesIO, StringIO\n\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, iemapp\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass MyModel(CGIModel):\n    \"\"\"Our model\"\"\"\n\n    format: str = Field(\n        \"csv\",\n        description=\"The format of the data response. csv, json, or excel\",\n        pattern=r\"^(csv|json|excel)$\",\n    )\n    model: str = Field(\n        ...,\n        description=\"The model to query\",\n        pattern=r\"^(AVN|ETA|GFS|LAV|MEX|NAM|NBE|NBS)$\",\n    )\n    ets: AwareDatetime = Field(\n        None,\n        description=\"The end time for the data request\",\n    )\n    station: str = Field(..., description=\"The 4 character station identifier\")\n    sts: AwareDatetime = Field(\n        None,\n        description=\"The start time for the data request\",\n    )\n    year1: int = Field(\n        None,\n        description=\"The start year for the data request, when sts is not set\",\n    )\n    month1: int = Field(\n        None,\n        description=(\n            \"The start month for the data request, when sts is not set\"\n        ),\n    )\n    day1: int = Field(\n        None,\n        description=\"The start day for the data request, when sts is not set\",\n    )\n    hour1: int = Field(\n        None,\n        description=\"The start hour for the data request, when sts is not set\",\n    )\n    year2: int = Field(\n        None,\n        description=\"The end year for the data request, when ets is not set\",\n    )\n    month2: int = Field(\n        None,\n        description=\"The end month for the data request, when ets is not set\",\n    )\n    day2: int = Field(\n        None,\n        description=\"The end day for the data request, when ets is not set\",\n    )\n    hour2: int = Field(\n        None,\n        description=\"The end hour for the data request, when ets is not set\",\n    )\n\n\ndef get_data(sts, ets, station, model, fmt):\n    \"\"\"Go fetch data please\"\"\"\n    xref = {\"NAM\": \"ETA\", \"GFS\": \"AVN\"}\n    model2 = xref.get(model, model)\n    with get_sqlalchemy_conn(\"mos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            select\n            runtime at time zone 'UTC' as utc_runtime,\n            ftime at time zone 'UTC' as utc_ftime,\n            *, t06_1 ||'/'||t06_2 as t06,\n            t12_1 ||'/'|| t12_2 as t12  from alldata WHERE station = :station\n            and runtime >= :sts and runtime <= :ets and model = ANY(:models)\n            ORDER by runtime,ftime ASC\"\"\"\n            ),\n            conn,\n            params={\n                \"sts\": sts,\n                \"ets\": ets,\n                \"models\": [model, model2],\n                \"station\": station,\n            },\n        )\n    df = df.drop(columns=[\"runtime\", \"ftime\"]).rename(\n        columns={\"utc_runtime\": \"runtime\", \"utc_ftime\": \"ftime\"}\n    )\n    if not df.empty:\n        df = df.dropna(axis=1, how=\"all\")\n    if fmt == \"json\":\n        return df.to_json(orient=\"records\", date_format=\"iso\")\n    if fmt == \"excel\":\n        bio = BytesIO()\n        with pd.ExcelWriter(bio, engine=\"xlsxwriter\") as writer:\n            df.to_excel(writer, sheet_name=\"Data\", index=False)\n        return bio.getvalue()\n\n    sio = StringIO()\n    df.to_csv(sio, index=False)\n    return sio.getvalue()\n\n\n@iemapp(help=__doc__, schema=MyModel, default_tz=\"UTC\")\ndef application(environ, start_response):\n    \"\"\"See how we are called\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"Missing sts and/or ets\")\n    fmt = environ[\"format\"]\n    station = environ[\"station\"].upper()\n    model = environ[\"model\"]\n    if fmt != \"excel\":\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return [\n            get_data(\n                environ[\"sts\"], environ[\"ets\"], station, model, fmt\n            ).encode(\"ascii\")\n        ]\n    headers = [\n        (\"Content-type\", EXL),\n        (\"Content-disposition\", \"attachment; Filename=mos.xlsx\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return [get_data(environ[\"sts\"], environ[\"ets\"], station, model, fmt)]\n"
  },
  {
    "path": "pylib/iemweb/request/nass_iowa.py",
    "content": "\"\"\".. title:: Download NASS Iowa Data\n\nDocumentation for /cgi-bin/request/nass_iowa.py\n-----------------------------------------------\n\nThis service provides a download of the NASS Iowa data that is ingested into\nthe IEM database.  The data is available in Excel format.  There are no options\nto this service at this time.\n\nExample Usage\n-------------\n\nSimple Request.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/nass_iowa.py\n\n\"\"\"\n\nfrom io import BytesIO\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.webutil import iemapp\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\n@iemapp(help=__doc__)\ndef application(_environ, start_response):\n    \"\"\"Go Main Go\"\"\"\n    headers = [\n        (\"Content-type\", EXL),\n        (\"Content-disposition\", \"attachment; Filename=nass_iowa.xlsx\"),\n    ]\n    start_response(\"200 OK\", headers)\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            \"SELECT * from nass_iowa ORDER by valid ASC\",\n            conn,\n            parse_dates=\"load_time\",\n        )\n    df[\"load_time\"] = df[\"load_time\"].dt.strftime(\"%Y-%m-%d\")\n    bio = BytesIO()\n    df.to_excel(bio, index=False)\n    return [bio.getvalue()]\n"
  },
  {
    "path": "pylib/iemweb/request/nlaeflux.py",
    "content": "\"\"\".. title:: NLAE Flux Data Export\n\nReturn to `API Services </api/#cgi>`_\n\nExample Requests\n----------------\n\nReturn the flux data for station NSTL11 for 2024\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/nlaeflux.py?station=NSTL11&\\\nsyear=2024&smonth=1&sday=1&eyear=2024&emonth=12&eday=31\n\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import (\n    DAY_OF_MONTH_FIELD,\n    MONTH_FIELD,\n    STATION_LIST_FIELD,\n    YEAR_FIELD,\n)\n\n\nclass Schema(CGIModel):\n    \"\"\"Request arguments.\"\"\"\n\n    syear: YEAR_FIELD\n    smonth: MONTH_FIELD\n    sday: DAY_OF_MONTH_FIELD\n    eyear: YEAR_FIELD\n    emonth: MONTH_FIELD\n    eday: DAY_OF_MONTH_FIELD\n    station: STATION_LIST_FIELD\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Handle mod_wsgi request.\"\"\"\n    sts = utc(environ[\"syear\"], environ[\"smonth\"], environ[\"sday\"])\n    ets = utc(environ[\"eyear\"], environ[\"emonth\"], environ[\"eday\"])\n    stations = environ[\"station\"]\n    with get_sqlalchemy_conn(\"other\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            select *, valid at time zone 'UTC' as utc_valid\n            from flux_data where valid >= :sts and valid < :ets\n            and station = ANY(:stations)\n            \"\"\"\n            ),\n            conn,\n            params={\"stations\": stations, \"sts\": sts, \"ets\": ets},\n            parse_dates=[\"utc_valid\"],\n        )\n    df[\"valid\"] = df[\"utc_valid\"].dt.strftime(\"%Y-%m-%d %H:%M:%S\")\n    df = df.drop(columns=[\"utc_valid\"])\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-Disposition\", \"attachment; filename=fluxdata.txt\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return [df.to_csv(index=False).encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/request/normals.py",
    "content": "\"\"\".. title:: Climatology Data\n\nReturn to `API Services </api/#cgi>`_ or the\n`User Frontend </COOP/dl/normals.phml>`_.\n\nThis service emits the daily climatology, sometimes referred to as normals,\nbut normals is a poor name, but I digress.  You can either request entire\nstate's climatology values for a specific day or a single locations climatology\nfor the entire year.  Day values use the year 2000, but only imply the day\nof the year.\n\nChangelog\n---------\n\n- 2025-04-16: Added support for Microsoft Excel output and fixed csv download.\n- 2025-01-28: Initial implementation\n\nExample Requests\n----------------\n\nProvide the January 1 climatology for all stations in Iowa using the NCEI\n1991-2020 dataset.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/normals.py\\\n?mode=day&month=1&day=1&source=ncei_climate91\n\nProvide the IEM computed period of record climatology for Ames, IA in Excel\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/normals.py\\\n?mode=station&station=IATAME&source=climate&fmt=excel\n\nProvide the NCEI 1981-2010 climatology for Ames, IA in JSON, this has a source\nof ncdc_climate81 due to lame reasons.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/normals.py\\\n?mode=station&station=IATAME&source=ncdc_climate81&fmt=json\n\nSame request, but view \"online\" instead of downloading a file.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/normals.py\\\n?mode=station&station=IATAME&source=ncdc_climate81&fmt=online\n\nSame request, but as a JSON object.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/normals.py\\\n?mode=station&station=IATAME&source=ncdc_climate81&fmt=json\n\n\"\"\"\n\nfrom datetime import date\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.webutil import CGIModel, iemapp\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    day: int = Field(\n        default=1,\n        description=\"The day of the year, only used for day mode\",\n        ge=1,\n        le=31,\n    )\n    fmt: str = Field(\n        default=\"csv\",\n        description=\"The format of the output, either csv, json, excel\",\n        pattern=\"^(csv|cdf|json|excel|online)$\",\n    )\n    mode: str = Field(\n        default=\"station\",\n        description=\"The mode of request, either station or day\",\n        pattern=\"^(station|day)$\",\n    )\n    month: int = Field(\n        default=1,\n        description=\"The month of the year, only used for day mode\",\n        ge=1,\n        le=12,\n    )\n    source: str = Field(\n        default=\"ncei_climate91\",\n        description=\"The source of the data, defaults to ncei_climate91\",\n        pattern=r\"^(climate(51|71|81)?|ncdc_climate[78]1|ncei_climate91)$\",\n    )\n    station: Annotated[\n        str,\n        Field(\n            pattern=r\"^[A-Z0-9]{2,}$\",\n            description=\"The station identifier, only used for station mode\",\n        ),\n    ] = \"IA0000\"\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Go Main Go\"\"\"\n    source = environ[\"source\"]\n    st = environ[\"station\"][:2].upper()\n    network = f\"{st}CLIMATE\"\n    nt = NetworkTable(network, only_online=False)\n    params = {\n        \"station\": environ[\"station\"],\n        \"day\": date(2000, environ[\"month\"], environ[\"day\"]),\n        \"stations\": list(nt.sts.keys()),\n        \"network\": network,\n    }\n    if environ[\"mode\"] == \"station\":\n        limiter = \"station = :station\"\n    else:  # day\n        limiter = \"valid = :day and station = ANY(:stations)\"\n    if source.startswith(\"ncei\"):\n        col = \"ncdc81\" if source == \"ncei_climate81\" else \"ncei91\"\n        params[\"network\"] = col.upper()\n        if environ[\"mode\"] == \"station\":\n            with get_sqlalchemy_conn(\"mesosite\") as conn:\n                res = conn.execute(\n                    sql_helper(\n                        \"select {col} as station from stations \"\n                        \"where id = :station and network ~* 'CLIMATE'\",\n                        col=col,\n                    ),\n                    {\"station\": environ[\"station\"]},\n                )\n                if res.rowcount > 0:\n                    row = res.fetchone()\n                    params[\"station\"] = row[0]\n        else:\n            # Woof\n            params[\"stations\"] = [meta[col] for meta in nt.sts.values()]\n\n    with get_sqlalchemy_conn(\"coop\") as pgconn:\n        climodf = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        select c.*, st_x(geom) as lon, st_y(geom) as lat, name\n        from {table} c, stations t WHERE c.station = t.id\n        and t.network = :network and {limiter}\n        \"\"\",\n                table=source,\n                limiter=limiter,\n            ),\n            pgconn,\n            params=params,\n        )\n    if environ[\"fmt\"] == \"json\":\n        start_response(\"200 OK\", [(\"Content-type\", \"application/json\")])\n        return climodf.to_json(orient=\"records\", date_format=\"iso\")\n    if environ[\"fmt\"] == \"excel\":\n        start_response(\n            \"200 OK\",\n            [\n                (\"Content-type\", EXL),\n                (\n                    \"Content-Disposition\",\n                    \"attachment; filename=climatology.xlsx\",\n                ),\n            ],\n        )\n        bio = BytesIO()\n        climodf.to_excel(bio, index=False)\n        return bio.getvalue()\n    if environ[\"fmt\"] == \"online\":\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n    else:  # cdf or csv\n        start_response(\n            \"200 OK\",\n            [\n                (\"Content-type\", \"application/octet-stream\"),\n                (\n                    \"Content-Disposition\",\n                    \"attachment; filename=climatology.csv\",\n                ),\n            ],\n        )\n    return climodf.to_csv(index=False)\n"
  },
  {
    "path": "pylib/iemweb/request/other.py",
    "content": "\"\"\".. title:: IEM Request Handler for Other Data\n\nReturn to `API Services </api/#cgi>`_\n\nChangelog\n---------\n\n- 2025-01-03: Use pydantic for request validation\n\nExample Requests\n----------------\n\nProvide data for 1 Jan 2024\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/other.py?\\\nstation=DSM&sts=2024-01-01&ets=2024-01-02\n\n\"\"\"\n\nfrom datetime import date\nfrom io import StringIO\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import get_dbconnc\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import DAY_OF_MONTH_FIELD_OPTIONAL\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    station: Annotated[\n        str,\n        Field(description=\"Station Identifier\", max_length=10, min_length=3),\n    ]\n    ets: date = Field(None, description=\"End Time\")\n    sts: date = Field(None, description=\"Start Time\")\n    year1: int = Field(None, description=\"Year 1\")\n    month1: int = Field(None, description=\"Month 1\")\n    day1: DAY_OF_MONTH_FIELD_OPTIONAL = None\n    year2: int = Field(None, description=\"Year 2\")\n    month2: int = Field(None, description=\"Month 2\")\n    day2: DAY_OF_MONTH_FIELD_OPTIONAL = None\n\n\ndef fetcher(station: str, sts: date, ets: date):\n    \"\"\"\n    Fetch the data\n    \"\"\"\n    cols = [\n        \"station\",\n        \"valid\",\n        \"tmpf\",\n        \"dwpf\",\n        \"drct\",\n        \"sknt\",\n        \"gust\",\n        \"relh\",\n        \"alti\",\n        \"pcpncnt\",\n        \"pday\",\n        \"pmonth\",\n        \"srad\",\n    ]\n\n    pgconn, cursor = get_dbconnc(\"other\")\n    cursor.execute(\n        \"\"\"\n    SELECT * from alldata where station = %s and valid between %s and %s\n    ORDER by valid ASC\n    \"\"\",\n        (station, sts.strftime(\"%Y-%m-%d\"), ets.strftime(\"%Y-%m-%d\")),\n    )\n\n    sio = StringIO()\n    sio.write(\n        \"station,valid_CST_CDT,air_tmp_F,dew_point_F,\"\n        \"wind_dir_deg,wind_sped_kts,wind_gust_kts,relh_%,\"\n        \"alti_in,pcpncnt_in,precip_day_in,precip_month_in,\"\n        \"solar_rad_wms\\n\"\n    )\n\n    for row in cursor:\n        sio.write(\",\".join(f\"{row[col]}\" for col in cols))\n        sio.write(\"\\n\")\n    pgconn.close()\n    return sio.getvalue().encode(\"ascii\")\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"\n    Do something!\n    \"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"Missing start or end time\")\n    station = environ[\"station\"]\n    start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n    return [fetcher(station, environ[\"sts\"], environ[\"ets\"])]\n"
  },
  {
    "path": "pylib/iemweb/request/purpleair.py",
    "content": "\"\"\".. title:: Download PurpleAir Data\n\nExample Requests\n----------------\n\nProvide data for 10 August 2024\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/purpleair.py\\\n?sts=2024-08-10T00:00Z&ets=2024-08-11T00:00Z\n\nand in Excel format this time\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/purpleair.py\\\n?sts=2024-08-10T00:00Z&ets=2024-08-11T00:00Z&excel=1\n\n\"\"\"\n\nfrom datetime import datetime\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import (\n    DAY_OF_MONTH_FIELD_OPTIONAL,\n    HOUR_FIELD,\n    MINUTE_FIELD,\n    MONTH_FIELD_OPTIONAL,\n    YEAR_FIELD_OPTIONAL,\n)\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    excel: Annotated[\n        bool, Field(description=\"Return Excel file instead of CSV\")\n    ] = False\n    sts: Annotated[\n        datetime | None,\n        Field(description=\"Start time of data to query, in ISO format\"),\n    ] = None\n    ets: Annotated[\n        datetime | None,\n        Field(description=\"End time of data to query, in ISO format\"),\n    ] = None\n    year1: YEAR_FIELD_OPTIONAL = None\n    year2: YEAR_FIELD_OPTIONAL = None\n    month1: MONTH_FIELD_OPTIONAL = None\n    month2: MONTH_FIELD_OPTIONAL = None\n    day1: DAY_OF_MONTH_FIELD_OPTIONAL = None\n    day2: DAY_OF_MONTH_FIELD_OPTIONAL = None\n    hour1: HOUR_FIELD = 0\n    hour2: HOUR_FIELD = 0\n    minute1: MINUTE_FIELD = 0\n    minute2: MINUTE_FIELD = 0\n\n\ndef run(environ, start_response):\n    \"\"\"run()\"\"\"\n    sql = sql_helper(\n        \"\"\"\n    select * from purpleair where valid >= :sts and valid < :ets\n    ORDER by valid asc\n    \"\"\"\n    )\n    with get_sqlalchemy_conn(\"other\") as conn:\n        df = pd.read_sql(\n            sql, conn, params={\"sts\": environ[\"sts\"], \"ets\": environ[\"ets\"]}\n        )\n    if environ[\"excel\"]:\n        df[\"valid\"] = df[\"valid\"].dt.strftime(\"%Y-%m-%d %H:%M\")\n        start_response(\n            \"200 OK\",\n            [\n                (\"Content-type\", EXL),\n                (\"Content-Disposition\", \"attachment; filename=purpleair.xlsx\"),\n            ],\n        )\n        bio = BytesIO()\n        df.to_excel(bio, index=False, engine=\"openpyxl\")\n        return bio.getvalue()\n    start_response(\n        \"200 OK\",\n        [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-Disposition\", \"attachment; filename=purpleair.csv\"),\n        ],\n    )\n    return df.to_csv(None, index=False).encode(\"ascii\")\n\n\n@iemapp(schema=Schema, default_tz=\"America/Chicago\", help=__doc__)\ndef application(environ, start_response):\n    \"\"\"Go Main Go\"\"\"\n    if \"sts\" not in environ:\n        raise IncompleteWebRequest(\"GET start time parameters missing\")\n\n    return [run(environ, start_response)]\n"
  },
  {
    "path": "pylib/iemweb/request/raob.py",
    "content": "\"\"\".. title:: RAOB Data Service\n\nReturn to `API Services </api/#cgi>`_\n\nDocumentation for /cgi-bin/request/raob.py\n------------------------------------------\n\nEmits RAOB data in CSV format.\n\nChangelog\n---------\n\n- 2025-04-08: Migration to pydantic validation.\n\nExample Requests\n----------------\n\nProvide the KOAX sounding info for July 2024\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/raob.py?station=KOAX&\\\nsts=2024-07-01T00:00:00Z&ets=2024-08-01T00:00:00Z\n\n\"\"\"\n\nfrom datetime import datetime\nfrom io import StringIO\nfrom typing import Annotated\n\nfrom pydantic import Field\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import BadWebRequest\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy.engine import Connection\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    dl: Annotated[\n        bool,\n        Field(\n            description=\"Download CSV instead of displaying it\",\n        ),\n    ] = False\n    sts: Annotated[datetime, Field(description=\"Start time in UTC\")]\n    ets: Annotated[datetime, Field(description=\"End time in UTC\")]\n    station: Annotated[\n        str, Field(description=\"IEM Station Identifier\", max_length=4)\n    ] = \"KOAX\"\n\n\ndef m(val):\n    \"\"\"Helper\"\"\"\n    if val is None:\n        return \"M\"\n    return val\n\n\n@with_sqlalchemy_conn(\"raob\")\ndef fetcher(station, sts, ets, conn: Connection = None):\n    \"\"\"Do fetching\"\"\"\n    sio = StringIO()\n    stations = [station]\n    if station.startswith(\"_\"):\n        nt = NetworkTable(\"RAOB\", only_online=False)\n        if station not in nt.sts:\n            msg = f\"Unknown RAOB network station: {station}\"\n            raise BadWebRequest(msg)\n        stations = nt.sts[station][\"name\"].split(\"--\")[1].strip().split(\",\")\n\n    res = conn.execute(\n        sql_helper(\"\"\"\n    SELECT f.valid at time zone 'UTC', p.levelcode, p.pressure, p.height,\n    p.tmpc, p.dwpc, p.drct, round((p.smps * 1.94384)::numeric,0),\n    p.bearing, p.range_miles, f.station from\n    raob_profile p JOIN raob_flights f on\n    (f.fid = p.fid) WHERE f.station = ANY(:stations)\n    and valid >= :sts and valid < :ets\n    \"\"\"),\n        {\"stations\": stations, \"sts\": sts, \"ets\": ets},\n    )\n    sio.write(\n        \"station,validUTC,levelcode,pressure_mb,height_m,tmpc,\"\n        \"dwpc,drct,speed_kts,bearing,range_sm\\n\"\n    )\n    for row in res:\n        sio.write(\n            (\"%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\\n\")\n            % (\n                row[10],\n                m(row[0]),\n                m(row[1]),\n                m(row[2]),\n                m(row[3]),\n                m(row[4]),\n                m(row[5]),\n                m(row[6]),\n                m(row[7]),\n                m(row[8]),\n                m(row[9]),\n            )\n        )\n    return sio.getvalue().encode(\"ascii\", \"ignore\")\n\n\n@iemapp(help=__doc__, schema=Schema, default_tz=\"UTC\")\ndef application(environ, start_response):\n    \"\"\"Go Main Go\"\"\"\n    station = environ[\"station\"]\n    sts = environ[\"sts\"]\n    ets = environ[\"ets\"]\n    if environ[\"dl\"]:\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\n                \"Content-Disposition\",\n                \"attachment; \"\n                f\"filename={station}_{sts:%Y%m%d%H}_{ets:%Y%m%d%H}.txt\",\n            ),\n        ]\n    else:\n        headers = [(\"Content-type\", \"text/plain\")]\n    start_response(\"200 OK\", headers)\n    return [fetcher(station, sts, ets)]\n"
  },
  {
    "path": "pylib/iemweb/request/raster2netcdf.py",
    "content": "\"\"\".. title:: Raster to NetCDF Data Service\n\nDocumentation for /cgi-bin/request/raster2netcdf.py\n---------------------------------------------------\n\nThe IEM is perhaps more clever than its own good and stores some RASTER data\nas the color index value within 8-bit PNG files.  This service converts these\nto more conventional NetCDF files with the actual values.\n\nChangelog\n---------\n\n- 2025-09-09: Implemented a four process per web server node throttle, service\n  will return a 503 HTTP status code if the throttle is exceeded.\n- 2025-09-04: Updated docs and testing.\n- 2025-09-04: A request for a file resource that does not exist will now\n  return a 404 HTTP status code.\n\nExample Usage\n-------------\n\nGenerate a NetCDF file for the N0R product valid at 2017-10-25 12:00 UTC\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/raster2netcdf.py?\\\ndstr=201710251200&prod=composite_n0r\n\n\"\"\"\n\nimport os\nimport tempfile\nfrom datetime import datetime, timezone\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport netCDF4\nimport numpy as np\nfrom PIL import Image\nfrom pydantic import Field, field_validator\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.util import archive_fetch\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.util import acquire_slot, release_slot\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    dstr: Annotated[\n        str,\n        Field(\n            description=\"UTC Datetime (YYYYmmddHHMI) to request data for\",\n            max_length=12,\n            pattern=r\"^\\d{12}$\",\n        ),\n    ] = \"201710251200\"\n    prod: Annotated[\n        str, Field(description=\"Product to request\", max_length=100)\n    ]\n\n    @field_validator(\"dstr\", mode=\"before\")\n    @classmethod\n    def validate_dstr(cls, val):\n        \"\"\"Ensure this converts to a datetime.\"\"\"\n        # This will raise a ValueError anyway\n        datetime.strptime(val, \"%Y%m%d%H%M\")\n        return val\n\n\ndef get_gridinfo(ppath: str, xpoints, ypoints):\n    \"\"\"Figure out the grid navigation, sigh\"\"\"\n    with archive_fetch(f\"{ppath[:-4]}.wld\") as fn:\n        if fn is None:\n            raise IncompleteWebRequest(\"No world file found\")\n        with open(fn) as fh:\n            lines = fh.readlines()\n    dx = float(lines[0])\n    dy = float(lines[3])\n    west = float(lines[4])\n    north = float(lines[5])\n    south = north + dy * ypoints\n    lats = np.arange(0, ypoints) * (0 - dy) + south\n    lons = np.arange(0, xpoints) * dx + west\n    return lons, lats\n\n\n@with_sqlalchemy_conn(\"mesosite\")\ndef get_table(prod: str, conn: Connection | None = None):\n    \"\"\"Return our lookup table\"\"\"\n    res = conn.execute(\n        sql_helper(\"\"\"\n    SELECT id, filename_template, units, cf_long_name\n    from iemrasters where name = :prod and filename_template is not null\n        \"\"\"),\n        {\"prod\": prod},\n    )\n    rid = None\n    for row in res.mappings():\n        rid = row[\"id\"]\n        template = row[\"filename_template\"]\n        units = row[\"units\"]\n        long_name = row[\"cf_long_name\"]\n    if rid is None:\n        raise IncompleteWebRequest(\"Unknown prod\")\n    res = conn.execute(\n        sql_helper(\"\"\"\n        SELECT coloridx, value from iemrasters_lookup\n        WHERE iemraster_id = :rid and value is not null\n        ORDER by coloridx ASC\n    \"\"\"),\n        {\"rid\": rid},\n    )\n    xref = [1.0e20] * 256\n    for row in res:\n        xref[row[0]] = row[1]\n    return np.array(xref), template, units, long_name\n\n\ndef make_netcdf(xpoints, ypoints, lons, lats):\n    \"\"\"generate the netcdf file\"\"\"\n    tmpobj = tempfile.NamedTemporaryFile(suffix=\".nc\", delete=False)\n    with netCDF4.Dataset(tmpobj.name, \"w\") as nc:\n        nc.Conventions = \"CF-1.6\"\n        nc.createDimension(\"lat\", ypoints)\n        nc.createDimension(\"lon\", xpoints)\n        nclon = nc.createVariable(\"lon\", np.float32, (\"lon\",))\n        nclon.units = \"degree_east\"\n        nclon.long_name = \"longitude\"\n        nclon[:] = lons\n        nclat = nc.createVariable(\"lat\", np.float32, (\"lat\",))\n        nclat.units = \"degree_north\"\n        nclat.long_name = \"latitude\"\n        nclat[:] = lats\n    return tmpobj.name\n\n\ndef do_work(valid: datetime, prod: str, start_response):\n    \"\"\"Our workflow\"\"\"\n    # Get lookup table\n    xref, template, units, long_name = get_table(prod)\n    # Get RASTER\n    ppath = valid.strftime(template).replace(\"/mesonet/ARCHIVE/data\", \"\")\n    with archive_fetch(ppath) as fh:\n        if fh is None:\n            start_response(\n                \"404 File Not Found\", [(\"Content-type\", \"text/plain\")]\n            )\n            return b\"ERROR: The IEM Archives do not have this file available\"\n        with Image.open(fh) as img:\n            raster = np.flipud(np.array(img))\n    (ypoints, xpoints) = raster.shape\n    # build lat, lon arrays\n    lons, lats = get_gridinfo(ppath, xpoints, ypoints)\n    # create netcdf file\n    tmpname = make_netcdf(xpoints, ypoints, lons, lats)\n    with netCDF4.Dataset(tmpname, \"a\") as nc:\n        # write data\n        ncvar = nc.createVariable(\n            prod, float, (\"lat\", \"lon\"), zlib=True, fill_value=1.0e20\n        )\n        ncvar.units = units\n        ncvar.long_name = long_name\n        ncvar.coordinates = \"lon lat\"\n        # convert RASTER via lookup table\n        ncvar[:] = xref[raster]\n    # send data to user\n    headers = [\n        (\"Content-type\", \"application/octet-stream\"),\n        (\"Content-disposition\", \"attachment; filename=res.nc\"),\n    ]\n    start_response(\"200 OK\", headers)\n    bio = BytesIO()\n    with open(tmpname, \"rb\") as fh:\n        bio.write(fh.read())\n    # remove tmp netcdf file\n    os.unlink(tmpname)\n    return bio.getvalue()\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Do great things\"\"\"\n    slot_fd = acquire_slot(\"raster2netcdf\", 4)\n    if slot_fd is None:\n        start_response(\n            \"503 Service Temporarily Unavailable\",\n            [(\"Content-type\", \"text/plain\")],\n        )\n        return [b\"ERROR: Too many requests, throttled\"]\n\n    try:\n        dstr = environ[\"dstr\"]\n        prod = environ[\"prod\"]\n        valid = datetime.strptime(dstr, \"%Y%m%d%H%M\").replace(\n            tzinfo=timezone.utc\n        )\n        return [do_work(valid, prod, start_response)]\n    finally:\n        release_slot(slot_fd)\n"
  },
  {
    "path": "pylib/iemweb/request/rwis.py",
    "content": "\"\"\".. title:: RWIS Download\n\nReturn to `API Services </api/#cgi>`_ and\n`RWIS Download Portal </request/rwis/fe.phtml>`_\n\nDocumentation for /cgi-bin/request/rwis.py\n------------------------------------------\n\nThis service emits RWIS data.\n\nChangelog\n---------\n\n- 2026-03-17: When requesting text/csv output, you can request up to\n  500 station-years worth of data.  If you are requesting Excel or HTML\n  output, you are limited to 1 station-years to prevent this service from\n  exhausting resources.\n- 2025-02-26: Added variable support for `relh` and `feel`, but these\n  variables are not fully available yet over the archive.\n- 2024-09-19: Fix bug with no variables returned when ``vars`` is not set\n- 2024-08-01: Initital documentation release and pydantic validation\n\nExample Requests\n----------------\n\nProvide all Iowa RWIS data for 1 July 2024 in Excel format:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/rwis.py?network=IA_RWIS&\\\nstations=_ALL&tz=America%2FChicago&what=excel&src=atmos&\\\nsts=2024-07-01T00:00&ets=2024-07-02T00:00\n\nSame request, but add a latitude and longitude column\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/rwis.py?network=IA_RWIS&\\\nstations=_ALL&tz=America%2FChicago&what=excel&src=atmos&\\\nsts=2024-07-01T00:00&ets=2024-07-02T00:00&gis=true\n\nProvide all traffic data on 1 July 2024 for Iowa RWIS station RAVI4\nin CSV format:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/rwis.py?network=IA_RWIS&\\\nstations=RAVI4&tz=America%2FChicago&what=download&src=traffic&\\\nsts=2024-07-01T00:00&ets=2024-07-02T00:00\n\nProvide all soil data on 1 July 2024 for Iowa RWIS stations RAKI4 in a HTML\ntable:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/rwis.py?network=IA_RWIS&\\\nstations=RAKI4&tz=America%2FChicago&what=html&src=soil&\\\nsts=2024-07-01T00:00&ets=2024-07-02T00:00\n\nProvide air temp and relative humidity data on 1 July 2024 for Iowa RWIS\nstations RAKI4 in a text file:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/rwis.py?network=IA_RWIS&\\\nstations=RAKI4&tz=America%2FChicago&what=txt&src=atmos&\\\nsts=2024-07-01T00:00:00&ets=2024-07-02T00:00:00&vars=tmpf,relh\n\nProvide all atmospheric data for 31 July 2024 in UTC timezone for\nMinnesota RWIS stations:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/rwis.py?network=MN_RWIS&\\\nstations=_ALL&tz=UTC&what=download&src=atmos&\\\nsts=2024-07-31T00:00&ets=2024-08-01T00:00\n\n\"\"\"\n\nfrom datetime import datetime\nfrom io import BytesIO, StringIO\nfrom typing import Annotated\n\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\nfrom sqlalchemy import DateTime, String, bindparam\nfrom sqlalchemy.dialects.postgresql import ARRAY\n\nfrom iemweb.fields import (\n    DAY_OF_MONTH_FIELD_OPTIONAL,\n    HOUR_FIELD_OPTIONAL,\n    MINUTE_FIELD_OPTIONAL,\n    MONTH_FIELD_OPTIONAL,\n    NETWORK_FIELD,\n    STATION_LIST_FIELD,\n    TZ_FIELD_OPTIONAL,\n    YEAR_FIELD_OPTIONAL,\n)\n\nDELIMITERS = {\"comma\": \",\", \"space\": \" \", \"tab\": \"\\t\"}\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\nFIXED_COLUMNS = (\"station\", \"obtime\")\nGIS_COLUMNS = (\"longitude\", \"latitude\")\nEXCLUDED_DB_COLUMNS = (\"iemid\", \"valid\")\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    delim: Annotated[\n        str,\n        Field(\n            description=\"Delimiter to use in output file\",\n            pattern=\"^(comma|space|tab)$\",\n        ),\n    ] = \"comma\"\n    gis: Annotated[\n        bool,\n        Field(\n            description=\"Include latitude and longitude columns in output\",\n        ),\n    ] = False\n    vars: Annotated[\n        ListOrCSVType,\n        Field(\n            default_factory=list,\n            description=(\n                \"List of variables to include in output, if none are set, \"\n                \"then all variables are returned for the given ``src``\"\n            ),\n        ),\n    ]\n    what: Annotated[\n        str,\n        Field(\n            description=(\n                \"Controls the response format.  `dl` and `txt` provide data \"\n                \"in a delimited text file, `html` provides a HTML table, \"\n                \"`excel` provides the data in a Microsoft Excel format. \"\n            ),\n            pattern=\"^(dl|txt|html|excel|download)$\",\n        ),\n    ] = \"dl\"\n    tz: TZ_FIELD_OPTIONAL = \"UTC\"\n    src: Annotated[\n        str,\n        Field(\n            description=\"Data source to use\",\n            pattern=\"^(atmos|soil|traffic)$\",\n        ),\n    ] = \"atmos\"\n    stations: STATION_LIST_FIELD\n    network: NETWORK_FIELD = \"IA_RWIS\"\n    sts: Annotated[\n        datetime | None,\n        Field(\n            description=\"Start timestamp\",\n        ),\n    ] = None\n    ets: Annotated[\n        datetime | None,\n        Field(\n            description=\"End timestamp\",\n        ),\n    ] = None\n    year1: YEAR_FIELD_OPTIONAL = None\n    month1: MONTH_FIELD_OPTIONAL = None\n    day1: DAY_OF_MONTH_FIELD_OPTIONAL = None\n    hour1: HOUR_FIELD_OPTIONAL = None\n    minute1: MINUTE_FIELD_OPTIONAL = None\n    year2: YEAR_FIELD_OPTIONAL = None\n    month2: MONTH_FIELD_OPTIONAL = None\n    day2: DAY_OF_MONTH_FIELD_OPTIONAL = None\n    hour2: HOUR_FIELD_OPTIONAL = None\n    minute2: MINUTE_FIELD_OPTIONAL = None\n\n\ndef compute_output_columns(\n    available_columns: list[str],\n    requested_columns: list[str],\n    include_latlon: bool,\n) -> tuple[list[str], list[str]]:\n    \"\"\"Sanitize requested columns and derive SQL/output column lists.\"\"\"\n    available_set = set(available_columns)\n    data_columns = [\n        col\n        for col in available_columns\n        if col not in (*FIXED_COLUMNS, *GIS_COLUMNS, *EXCLUDED_DB_COLUMNS)\n    ]\n    if requested_columns:\n        query_columns = []\n        for col in requested_columns:\n            if col in data_columns and col not in query_columns:\n                query_columns.append(col)\n    else:\n        query_columns = data_columns\n\n    output_columns = list(FIXED_COLUMNS)\n    if include_latlon and all(col in available_set for col in GIS_COLUMNS):\n        output_columns.extend(GIS_COLUMNS)\n    output_columns.extend(\n        col for col in query_columns if col not in output_columns\n    )\n    return output_columns, query_columns\n\n\n@iemapp(default_tz=\"America/Chicago\", help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Go do something\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"Missing GET parameter sts or ets\")\n    include_latlon = environ[\"gis\"]\n    requested_columns = environ[\"vars\"]\n    delimiter = DELIMITERS[environ[\"delim\"]]\n    what = environ[\"what\"]\n    tzname = environ[\"tz\"]\n    src = environ[\"src\"]\n    stations = environ[\"stations\"]\n    if not stations:\n        raise IncompleteWebRequest(\"Missing GET parameter stations=\")\n\n    table = \"alldata\"\n    if src in [\"soil\", \"traffic\"]:\n        table = f\"alldata_{src}\"\n    network = environ[\"network\"]\n    if \"_ALL\" in stations:\n        nt = NetworkTable(network, only_online=False)\n        stations = list(nt.sts.keys())\n    size_limit = 500 if what in [\"txt\", \"download\", \"dl\"] else 1\n    this_size = len(stations) * (\n        (environ[\"ets\"] - environ[\"sts\"]).days / 366.0\n    )\n    if this_size > size_limit:\n        raise IncompleteWebRequest(\n            f\"Requested {this_size:.1f} station-years of data, which exceeds \"\n            f\"the limit of {size_limit} station-years for the requested \"\n            f\"format. Please reduce the number of stations or the time range.\"\n        )\n    params = {\n        \"tzname\": tzname,\n        \"ids\": stations,\n        \"sts\": environ[\"sts\"],\n        \"ets\": environ[\"ets\"],\n    }\n    available_select = [\n        \"t.id as station\",\n        \"valid at time zone :tzname as obtime\",\n    ]\n    if include_latlon:\n        available_select.extend(\n            [\"ST_X(geom) as longitude\", \"ST_Y(geom) as latitude\"]\n        )\n    available_select.append(\"a.*\")\n    # Generate a cheap query to figure out the columns and if data\n    # even exists.\n    sql = sql_helper(\n        \"\"\"SELECT {selectcols} from\n        {table} a JOIN stations t on (a.iemid = t.iemid)\n        WHERE t.id = any(:ids) and valid >= :sts and valid < :ets\n        limit 1\"\"\",\n        table=table,\n        selectcols=\", \".join(available_select),\n    )\n    with get_sqlalchemy_conn(\"rwis\") as conn:\n        df = pd.read_sql(sql, conn, params=params)\n    if df.empty:\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return [b\"Sorry, no results found for query!\"]\n    output_columns, query_columns = compute_output_columns(\n        df.columns.tolist(), requested_columns, include_latlon\n    )\n\n    select_columns = [\n        \"t.id as station\",\n        \"valid at time zone :tzname as obtime\",\n    ]\n    if include_latlon and all(col in output_columns for col in GIS_COLUMNS):\n        select_columns.extend(\n            [\"ST_X(geom) as longitude\", \"ST_Y(geom) as latitude\"]\n        )\n    select_columns.extend(query_columns)\n\n    sql = sql_helper(\n        \"\"\"\n        SELECT {selectcols} from\n        {table} a JOIN stations t on (a.iemid = t.iemid)\n        WHERE t.id = any(:ids) and valid >= :sts and valid < :ets\n        ORDER by valid ASC\n                \"\"\",\n        table=table,\n        selectcols=\", \".join(select_columns),\n    )\n\n    if what in [\"txt\", \"download\", \"dl\"]:\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-disposition\", \"attachment; filename=rwis.txt\"),\n        ]\n        start_response(\"200 OK\", headers)\n\n        def stream_copy():\n            with get_sqlalchemy_conn(\"rwis\") as conn:\n                compiled = sql.bindparams(\n                    bindparam(\"tzname\", value=tzname, type_=String()),\n                    bindparam(\"ids\", value=stations, type_=ARRAY(String())),\n                    bindparam(\"sts\", value=environ[\"sts\"], type_=DateTime()),\n                    bindparam(\"ets\", value=environ[\"ets\"], type_=DateTime()),\n                ).compile(\n                    conn,\n                    compile_kwargs={\n                        \"literal_binds\": True,\n                        \"render_postcompile\": True,\n                    },\n                )\n                copy_delimiter = \"','\"\n                if delimiter == \"\\t\":\n                    copy_delimiter = r\"E'\\t'\"\n                elif delimiter == \" \":\n                    copy_delimiter = \"' '\"\n                cursor = conn.connection.cursor()\n                with cursor.copy(\n                    \"COPY (\"\n                    f\"{compiled}\"\n                    \") TO STDOUT WITH (FORMAT CSV, HEADER TRUE, \"\n                    f\"DELIMITER {copy_delimiter})\"\n                ) as copy:\n                    for chunk in copy:\n                        yield bytes(chunk)\n\n        return stream_copy()\n\n    # Now we depend on pandas to do some magic\n    with get_sqlalchemy_conn(\"rwis\") as conn:\n        df = pd.read_sql(sql, conn, params=params)\n\n    if what == \"html\":\n        sio = StringIO()\n        start_response(\"200 OK\", [(\"Content-type\", \"text/html\")])\n        df.to_html(sio, index=False, columns=output_columns)\n        return [sio.getvalue().encode(\"ascii\")]\n\n    # We are left with Excel\n    if len(df.index) >= 1048576:\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return [b\"Dataset too large for excel format.\"]\n    bio = BytesIO()\n    with pd.ExcelWriter(bio) as writer:\n        df.to_excel(\n            writer, sheet_name=\"Data\", index=False, columns=output_columns\n        )\n\n    headers = [\n        (\"Content-type\", EXL),\n        (\"Content-disposition\", \"attachment; Filename=rwis.xlsx\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return [bio.getvalue()]\n"
  },
  {
    "path": "pylib/iemweb/request/scan.py",
    "content": "\"\"\".. title:: SCAN Data Request\n\nReturn to `Request frontend </request/scan/fe.phtml>`_ or\n`API Services </api/#cgi>`_\n\nDocumentation for /cgi-bin/request/scan.py\n------------------------------------------\n\nThis application provides a simple interface to download SCAN data for a\nspecified period of time.  The data is returned in a simple text format that\ncan be easily imported into a spreadsheet or other data analysis software.\n\nChangelog\n---------\n\n- 2025-02-23: Initial implementation\n\nExample Requests\n----------------\n\nGet all SCAN data for 2024\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/scan.py?\\\nstations=_ALL&sts=2024-01-01&ets=2025-01-01&&what=dl&delim=comma\n\n\"\"\"\n\nfrom datetime import datetime\nfrom io import StringIO\n\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nfrom iemweb.fields import DAY_OF_MONTH_FIELD_OPTIONAL, STATION_LIST_FIELD\n\nDELIMITERS = {\"comma\": \",\", \"space\": \" \", \"tab\": \"\\t\"}\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    stations: STATION_LIST_FIELD\n    vars: ListOrCSVType = Field(\n        [], description=\"List of variables to include in the output.\"\n    )\n    sts: datetime = Field(None, description=\"Start of the period of interest.\")\n    ets: datetime = Field(None, description=\"End of the period of interest.\")\n    delim: str = Field(\n        \"comma\",\n        description=\"Delimiter to use in the output file.\",\n        pattern=\"^(comma|space|tab)$\",\n    )\n    what: str = Field(\n        \"dl\",\n        description=\"Download or view.\",\n    )\n    year1: int = Field(\n        None,\n        description=\"Start year when sts is not provided.\",\n    )\n    month1: int = Field(\n        None,\n        description=\"Start month when sts is not provided.\",\n    )\n    day1: DAY_OF_MONTH_FIELD_OPTIONAL = None\n    hour1: int = Field(\n        None,\n        description=\"Start hour when sts is not provided.\",\n    )\n    year2: int = Field(\n        None,\n        description=\"End year when ets is not provided.\",\n    )\n    month2: int = Field(\n        None,\n        description=\"End month when ets is not provided.\",\n    )\n    day2: DAY_OF_MONTH_FIELD_OPTIONAL = None\n    hour2: int = Field(\n        None,\n        description=\"End hour when ets is not provided.\",\n    )\n\n\ndef get_cgi_stations(environ):\n    \"\"\"Figure out which stations the user wants, return a list of them\"\"\"\n    reqlist = environ[\"stations\"]\n    if \"_ALL\" in reqlist:\n        nt = NetworkTable(\"SCAN\", only_online=False)\n        return list(nt.sts.keys())\n\n    return reqlist\n\n\ndef get_df(environ: dict) -> pd.DataFrame:\n    \"\"\"Get what the database has!\"\"\"\n    with get_sqlalchemy_conn(\"scan\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"select * from alldata where station = ANY(:ids) and \"\n                \"valid >= :sts and valid < :ets \"\n                \"order by station asc, valid asc\"\n            ),\n            conn,\n            params={\n                \"ids\": environ[\"stations\"],\n                \"sts\": environ[\"sts\"],\n                \"ets\": environ[\"ets\"],\n            },\n        )\n    if not df.empty:\n        df[\"valid\"] = df[\"valid\"].dt.strftime(\"%Y-%m-%d %H:%M\")\n    return df\n\n\n@iemapp(help=__doc__, schema=Schema, default_tz=\"UTC\")\ndef application(environ, start_response):\n    \"\"\"\n    Do something!\n    \"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"both sts and ets are required.\")\n    environ[\"stations\"] = get_cgi_stations(environ)\n    if (\n        len(environ[\"stations\"]) > 9\n        and (environ[\"ets\"] - environ[\"sts\"]).days > 366\n    ):\n        raise IncompleteWebRequest(\n            \"You have requested too much data, please limit to 10 stations \"\n            \"and 1 year of data.\"\n        )\n    varnames: list = environ[\"vars\"]\n    varnames.insert(0, \"valid\")\n    varnames.insert(0, \"station\")\n    what = environ[\"what\"]\n    df = get_df(environ)\n    for varname in varnames:\n        if varname not in df.columns:\n            raise IncompleteWebRequest(f\"Unknown variable: `{varname}`\")\n    if what in [\"txt\", \"download\"]:\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-disposition\", \"attachment; filename=scan.txt\"),\n        ]\n    else:\n        headers = [(\"Content-type\", \"text/plain\")]\n    start_response(\"200 OK\", headers)\n    sio = StringIO()\n    df.to_csv(\n        sio, index=False, sep=DELIMITERS[environ[\"delim\"]], columns=varnames\n    )\n    return [sio.getvalue().encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/request/scp.py",
    "content": "\"\"\".. title:: Satellite Cloud Product (SCP) Request\n\nReturn to `API Services </api/#cgi>`_\n\nDocumentation for /cgi-bin/request/scp.py\n--------------------------------------------\n\nThis script is used to request Satellite Cloud Product (SCP) data from the\nIEM's ASOS database.\n\nExamples:\n---------\n\nDownload all 2023 data for KBUR\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/scp.py?\\\nstation=KBUR&sts=2023-01-01T00:00Z&ets=2024-01-01T00:00Z\n\n\"\"\"\n\nfrom io import StringIO\nfrom typing import Annotated\n\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\n\nclass Schema(CGIModel):\n    \"\"\"Our schema for this request\"\"\"\n\n    ets: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=(\n                \"End timestamp with timezone included to request data for.\"\n            ),\n        ),\n    ] = None\n    station: ListOrCSVType = Field(\n        None,\n        description=(\n            \"Four or Five character station identifier(s) to request data for.\"\n        ),\n    )\n    sts: AwareDatetime = Field(\n        None,\n        description=(\n            \"Start timestamp with timezone included to request data for.\"\n        ),\n    )\n    year1: int = Field(\n        None,\n        description=(\n            \"Year to request data for, this is an alternative to sts/ets.\"\n        ),\n    )\n    year2: int = Field(\n        None,\n        description=(\n            \"Year to request data for, this is an alternative to sts/ets.\"\n        ),\n    )\n    month1: int = Field(\n        None,\n        description=(\n            \"Month to request data for, this is an alternative to sts/ets.\"\n        ),\n    )\n    month2: int = Field(\n        None,\n        description=(\n            \"Month to request data for, this is an alternative to sts/ets.\"\n        ),\n    )\n    day1: int = Field(\n        None,\n        description=(\n            \"Day to request data for, this is an alternative to sts/ets.\"\n        ),\n    )\n    day2: int = Field(\n        None,\n        description=(\n            \"Day to request data for, this is an alternative to sts/ets.\"\n        ),\n    )\n    hour1: int = Field(0, description=\"Hour to request data for.\")\n    hour2: int = Field(0, description=\"Hour to request data for.\")\n    minute1: int = Field(0, description=\"Minute to request data for.\")\n    minute2: int = Field(0, description=\"Minute to request data for.\")\n\n\n@iemapp(schema=Schema, help=__doc__)\ndef application(environ, start_response):\n    \"\"\"Do Something\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"Both start and end time must be provided!\")\n    start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n    params = {\n        \"sts\": environ[\"sts\"],\n        \"ets\": environ[\"ets\"],\n        \"station\": environ[\"station\"],\n    }\n    slimiter = \"station = ANY(:station)\" if environ[\"station\"] else \"\"\n    sio = StringIO()\n    sio.write(\"station,utc_valid,mid,high,cldtop1,cldtop2,eca,source\\n\")\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n            SELECT station, valid at time zone 'UTC' as utc_valid, mid, high,\n            cldtop1, cldtop2, eca, source from scp_alldata\n            WHERE valid >= :sts and valid < :ets and {slimiter}\n            ORDER by valid ASC\n        \"\"\",\n                slimiter=slimiter,\n            ),\n            params,\n        )\n        for row in res:\n            sio.write(\n                (\"%s,%s,%s,%s,%s,%s,%s,%s\\n\")\n                % (\n                    row[0],\n                    row[1].strftime(\"%Y-%m-%d %H:%M:%S\"),\n                    row[2],\n                    row[3],\n                    row[4],\n                    row[5],\n                    row[6],\n                    row[7],\n                )\n            )\n    return [sio.getvalue().encode(\"ascii\", \"ignore\")]\n"
  },
  {
    "path": "pylib/iemweb/request/smos.py",
    "content": "\"\"\".. title:: SMOS Request\n\nReturn to `API Services </api/#cgi>`_\n\nDocumentation for /cgi-bin/request/smos.py\n------------------------------------------\n\nThis allows downloading of the IEM archived SMOS data for the midwest.\n\n\"\"\"\n\nfrom typing import Annotated\n\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest, NoDataFound\nfrom pyiem.webutil import CGIModel, iemapp\n\n\nclass Schema(CGIModel):\n    \"\"\"Our schema for this request\"\"\"\n\n    lat: Annotated[\n        float,\n        Field(\n            ...,\n            description=\"Latitude of point to request data for.\",\n            le=90,\n            ge=-90,\n        ),\n    ]\n    lon: Annotated[\n        float,\n        Field(\n            ...,\n            description=\"West longitude of point to request data for.\",\n            le=180,\n            ge=-180,\n        ),\n    ]\n    ets: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=(\n                \"End timestamp with timezone included to request data for.\"\n            ),\n        ),\n    ] = None\n    sts: Annotated[\n        AwareDatetime | None,\n        Field(\n            description=(\n                \"Start timestamp with timezone included to request data for.\"\n            ),\n        ),\n    ] = None\n    year1: Annotated[\n        int | None,\n        Field(\n            description=(\n                \"Year to request data for, this is an alternative to sts/ets.\"\n            ),\n        ),\n    ] = None\n    year2: Annotated[\n        int | None,\n        Field(\n            description=(\n                \"Year to request data for, this is an alternative to sts/ets.\"\n            ),\n        ),\n    ] = None\n    month1: Annotated[\n        int | None,\n        Field(\n            description=(\n                \"Month to request data for, this is an alternative to sts/ets.\"\n            ),\n        ),\n    ] = None\n    month2: Annotated[\n        int | None,\n        Field(\n            description=(\n                \"Month to request data for, this is an alternative to sts/ets.\"\n            ),\n        ),\n    ] = None\n    day1: Annotated[\n        int | None,\n        Field(\n            description=(\n                \"Day to request data for, this is an alternative to sts/ets.\"\n            ),\n        ),\n    ] = None\n    day2: Annotated[\n        int | None,\n        Field(\n            description=(\n                \"Day to request data for, this is an alternative to sts/ets.\"\n            ),\n        ),\n    ] = None\n    hour1: Annotated[\n        int,\n        Field(\n            description=\"Hour to request data for.\",\n            ge=0,\n            le=23,\n        ),\n    ] = 0\n    hour2: Annotated[\n        int,\n        Field(\n            description=\"Hour to request data for.\",\n            ge=0,\n            le=23,\n        ),\n    ] = 0\n    minute1: Annotated[\n        int,\n        Field(\n            description=\"Minute to request data for.\",\n            ge=0,\n            le=59,\n        ),\n    ] = 0\n    minute2: Annotated[\n        int,\n        Field(\n            description=\"Minute to request data for.\",\n            ge=0,\n            le=59,\n        ),\n    ] = 0\n\n\n@iemapp(schema=Schema, help=__doc__)\ndef application(environ, start_response):\n    \"\"\"Do Something\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"Both start and end time must be provided!\")\n\n    with get_sqlalchemy_conn(\"smos\") as conn:\n        res = conn.execute(\n            sql_helper(\"\"\"\n    select idx, st_distance(geom, ST_Point(:lon, :lat, 4326)) as dist\n    from grid ORDER by dist ASC LIMIT 1\n                       \"\"\"),\n            {\"lon\": environ[\"lon\"], \"lat\": environ[\"lat\"]},\n        )\n        row = res.first()\n        if row is None or row[1] > 1:\n            raise NoDataFound(\"Point too far away from our grid!\")\n        idx = row[0]\n\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n    SELECT valid at time zone 'UTC',\n    case when soil_moisture is null then 'M' else soil_moisture::text end\n    as sm,\n    case when optical_depth is null then 'M' else optical_depth::text end\n    as od from data where grid_idx = :idx and valid >= :sts and\n    valid <= :ets ORDER by valid ASC\n\"\"\"\n            ),\n            {\n                \"idx\": idx,\n                \"sts\": environ[\"sts\"],\n                \"ets\": environ[\"ets\"],\n            },\n        )\n\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        data = \"Timestamp,Longitude,Latitude,Soil_Moisture,Optical_Depth\\n\"\n        for row in res:\n            data += (\n                f\"{row[0]},\"\n                f\"{environ['lon']},{environ['lat']},\"\n                f\"{row[1]},{row[2]}\\n\"\n            )\n        return [data.encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/request/ss.py",
    "content": "\"\"\".. title:: Download Stuart Smith Data\n\nExample Requests\n----------------\n\nProvide data for all of 2012 and 2013\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/ss.py\\\n?sts=2012-01-01T00:00Z&ets=2014-01-01T00:00Z&opt=gage\n\nProvide data for all of 2012 and 2013 for a specific station\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/ss.py\\\n?sts=2012-01-01T00:00Z&ets=2014-01-01T00:00Z&opt=bubbler\n\n\"\"\"\n\nfrom io import BytesIO\n\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nLOOKUP = {\n    9100104: \"SSP #6\",\n    9100135: \"SSP #8\",\n    9100131: \"SSP #1\",\n    9100156: \"SSP #7\",\n}\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    excel: bool = Field(description=\"Return Excel File\", default=False)\n    opt: str = Field(description=\"bubbler or gage\", default=\"gage\")\n    station: ListOrCSVType = Field(\n        default_factory=list, description=\"Station ID to query\"\n    )\n    sts: AwareDatetime = Field(description=\"Start Time\", default=None)\n    ets: AwareDatetime = Field(description=\"End Time\", default=None)\n    year1: int = Field(\n        description=\"Start year, when sts is not set.\", default=None\n    )\n    month1: int = Field(\n        description=\"Start month, when sts is not set.\", default=None\n    )\n    day1: int = Field(\n        description=\"Start day, when sts is not set.\", default=None\n    )\n    year2: int = Field(\n        description=\"End year, when ets is not set.\", default=None\n    )\n    month2: int = Field(\n        description=\"End month, when ets is not set.\", default=None\n    )\n    day2: int = Field(\n        description=\"End day, when ets is not set.\", default=None\n    )\n\n\ndef gage_run(sts, ets, stations, excel, start_response):\n    \"\"\"run()\"\"\"\n    if not stations:\n        stations = list(LOOKUP.keys())\n\n    sql = \"\"\"\n    select date(valid) as date, to_char(valid, 'HH24:MI:SS') as time,\n    site_serial, ch1_data_p, ch2_data_p,\n    ch1_data_t, ch2_data_t, ch1_data_c\n    from ss_logger_data WHERE valid between :sts and :ets and\n    site_serial = ANY(:stations) ORDER by valid ASC\n    \"\"\"\n    with get_sqlalchemy_conn(\"other\") as conn:\n        df = pd.read_sql(\n            sql_helper(sql),\n            conn,\n            params={\"sts\": sts, \"ets\": ets, \"stations\": stations},\n        )\n    eheaders = [\n        \"date\",\n        \"time\",\n        \"site_serial\",\n        \"Levelogger Reading (ft)\",\n        \"Barologger Reading\",\n        \"Water Temp (C)\",\n        \"Barologger Air Temp (C)\",\n        \"Conductivity (micro-S)\",\n    ]\n\n    if excel:\n        headers = [\n            (\"Content-type\", EXL),\n            (\"Content-disposition\", \"attachment; Filename=stuartsmith.xlsx\"),\n        ]\n        start_response(\"200 OK\", headers)\n        bio = BytesIO()\n        df.to_excel(bio, header=eheaders, index=False, engine=\"openpyxl\")\n        return bio.getvalue()\n    start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n    return df.to_csv(None, index=False).encode(\"ascii\")\n\n\ndef bubbler_run(sts, ets, excel, start_response):\n    \"\"\"run()\"\"\"\n    sql = \"\"\"\n    WITH one as (SELECT valid, value from ss_bubbler WHERE\n    valid between :sts and :ets and field = 'Batt Voltage'),\n    two as (SELECT valid, value from ss_bubbler WHERE\n    valid between :sts and :ets and field = 'STAGE'),\n    three as (SELECT valid, value from ss_bubbler WHERE\n    valid between :sts and :ets and field = 'Water Temp')\n\n    SELECT date(coalesce(one.valid, two.valid, three.valid)) as date,\n    to_char(coalesce(one.valid, two.valid, three.valid), 'HH24:MI:SS') as time,\n    one.value as \"batt voltage\",\n    two.value as \"stage\",\n    three.value as \"water temp\"\n    from one FULL OUTER JOIN two on (one.valid = two.valid)\n        FULL OUTER JOIN three on (coalesce(two.valid,one.valid) = three.valid)\n    ORDER by date ASC, time ASC\n    \"\"\"\n    with get_sqlalchemy_conn(\"other\") as conn:\n        df = pd.read_sql(\n            sql_helper(sql), conn, params={\"sts\": sts, \"ets\": ets}\n        )\n    if excel:\n        headers = [\n            (\"Content-type\", \"application/vnd.ms-excel\"),\n            (\"Content-disposition\", \"attachment; Filename=stuartsmith.xls\"),\n        ]\n        start_response(\"200 OK\", headers)\n        bio = BytesIO()\n        df.to_excel(bio, index=False)\n        return bio.getvalue()\n    start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n    return df.to_csv(None, index=False).encode(\"ascii\")\n\n\n@iemapp(default_tz=\"America/Chicago\", help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Go Main Go\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"GET start time parameters missing\")\n    opt = environ[\"opt\"]\n\n    stations = environ[\"station\"]\n    if opt == \"bubbler\":\n        return [\n            bubbler_run(\n                environ[\"sts\"],\n                environ[\"ets\"],\n                environ[\"excel\"],\n                start_response,\n            )\n        ]\n    return [\n        gage_run(\n            environ[\"sts\"],\n            environ[\"ets\"],\n            stations,\n            environ[\"excel\"],\n            start_response,\n        )\n    ]\n"
  },
  {
    "path": "pylib/iemweb/request/taf.py",
    "content": "\"\"\".. title:: Terminal Aerodrome Forecast (TAF) Data\n\nReturn to `API Services </api/#cgi>`_ or `TAF Request </request/taf.php>`_.\n\nDocumentation for /cgi-bin/request/taf.py\n-----------------------------------------\n\nThis service provides access to Terminal Aerodrome Forecast (TAF) data for\nspecified stations and time ranges. The time range limits the TAF issuance\ntimestamps, not the forecast valid times.\n\nChangelog\n---------\n\n- 2026-03-05: An edge case was corrected where you request timestamps in\n  a given timezone, which are ambiguous during DST fall back. The field is\n  now set to null instead of erroring.\n- 2026-02-13: Added `is_amendment` to output to denote if the TAF is\n  amended or not.\n- 2025-08-12: The parser was improved to delineate forecast types, the\n  `is_tempo` field remains, but will be removed in the future.  See the `ftype`\n  column for the delineation.\n\nExample Usage\n~~~~~~~~~~~~~\n\nRequest all of Des Moines TAF for the month of August 2024 in CSV format and\nthen excel format:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/taf.py\\\n?station=DSM&sts=2024-08-01T00:00Z&ets=2024-09-01T00:00Z&fmt=csv\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/taf.py\\\n?station=DSM&sts=2024-08-01T00:00Z&ets=2024-09-01T00:00Z&fmt=excel\n\nRequest the past 240 hours of TAF data for Chicago O'Hare in Excel format:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/taf.py\\\n?station=ORD&hours=240&fmt=excel\n\nRequest the last TAF issuance for Des Moines valid prior to 00 UTC on 21 August\n2024 in CSV format:\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/taf.py\\\n?station=DSM&ets=2024-08-21T00:00Z&sts=2024-08-19T00:00Z&fmt=csv&last=1\n\n\"\"\"\n\nfrom datetime import timedelta\nfrom io import BytesIO\nfrom typing import Annotated\nfrom zoneinfo import ZoneInfo\n\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import utc\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import STATION_LIST_FIELD, TZ_FIELD\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass MyModel(CGIModel):\n    \"\"\"Our model\"\"\"\n\n    hours: Annotated[\n        int | None,\n        Field(\n            description=(\n                \"Request data for the time period from now until this \"\n                \"many hours in the past. Overrides any sts or ets values.\"\n            ),\n            le=2400,\n            gt=0,\n        ),\n    ] = None\n    fmt: Annotated[\n        str,\n        Field(\n            description=\"The format of the output file. 'csv' or 'excel'\",\n        ),\n    ] = \"csv\"\n    last: Annotated[\n        bool,\n        Field(\n            description=(\n                \"If True, the last TAF issuance for the station(s) is \"\n                \"returned, which is defined as last issuance prior to or \"\n                \"equal to the end timestamp.\"\n            ),\n        ),\n    ] = False\n    tz: TZ_FIELD = \"UTC\"\n    sts: Annotated[\n        AwareDatetime | None,\n        Field(description=\"The start timestamp for the data\"),\n    ] = None\n    ets: Annotated[\n        AwareDatetime | None,\n        Field(description=\"The end timestamp for the data\"),\n    ] = None\n    station: STATION_LIST_FIELD\n    year1: Annotated[\n        int | None, Field(description=\"The start year, if not using sts\")\n    ] = None\n    month1: Annotated[\n        int | None, Field(description=\"The start month, if not using sts\")\n    ] = None\n    day1: Annotated[\n        int | None, Field(description=\"The start day, if not using sts\")\n    ] = None\n    hour1: Annotated[\n        int, Field(description=\"The start hour, if not using sts\")\n    ] = 0\n    minute1: Annotated[\n        int, Field(description=\"The start minute, if not using sts\")\n    ] = 0\n    year2: Annotated[\n        int | None, Field(description=\"The end year, if not using ets\")\n    ] = None\n    month2: Annotated[\n        int | None, Field(description=\"The end month, if not using ets\")\n    ] = None\n    day2: Annotated[\n        int | None, Field(description=\"The end day, if not using ets\")\n    ] = None\n    hour2: Annotated[\n        int, Field(description=\"The end hour, if not using ets\")\n    ] = 0\n    minute2: Annotated[\n        int, Field(description=\"The end minute, if not using ets\")\n    ] = 0\n\n\ndef run(start_response, environ):\n    \"\"\"Get data!\"\"\"\n    with get_sqlalchemy_conn(\"asos\") as dbconn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            select t.station, t.valid at time zone 'UTC' as valid,\n            f.valid at time zone 'UTC' as fx_valid, raw,\n            case when f.ftype = 2 then true else false end as is_tempo,\n            end_valid at time zone 'UTC' as fx_valid_end,\n            sknt, drct, gust, visibility,\n            presentwx, skyc, skyl, ws_level, ws_drct, ws_sknt, product_id,\n            ft.label as ftype, t.is_amendment,\n            rank() OVER (PARTITION by t.station ORDER by t.valid DESC)\n            from taf t\n              JOIN taf_forecast f on (t.id = f.taf_id)\n              JOIN taf_ftype ft on (f.ftype = ft.ftype)\n            WHERE t.station = ANY(:stations) and t.valid >= :sts\n            and t.valid < :ets order by t.valid asc, f.valid asc\n            \"\"\"\n            ),\n            dbconn,\n            params={\n                \"stations\": environ[\"station\"],\n                \"sts\": environ[\"sts\"],\n                \"ets\": environ[\"ets\"],\n            },\n            parse_dates=[\"valid\", \"fx_valid\", \"fx_valid_end\"],\n        )\n    # muck the timezones\n    if not df.empty:\n        tzinfo = ZoneInfo(environ[\"tz\"])\n        for col in [\"valid\", \"fx_valid\", \"fx_valid_end\"]:\n            df[col] = (\n                df[col]\n                .dt.tz_localize(tzinfo, ambiguous=\"NaT\", nonexistent=\"NaT\")\n                .dt.strftime(\"%Y-%m-%d %H:%M\")\n            )\n    if environ[\"last\"]:\n        df = df[df[\"rank\"] == 1]\n    df = df.drop(columns=[\"rank\"])\n\n    bio = BytesIO()\n    if environ[\"fmt\"] == \"excel\":\n        with pd.ExcelWriter(bio, engine=\"openpyxl\") as writer:\n            df.to_excel(writer, sheet_name=\"TAF Data\", index=False)\n        headers = [\n            (\"Content-type\", EXL),\n            (\"Content-disposition\", \"attachment;Filename=taf.xlsx\"),\n        ]\n    else:\n        df.to_csv(bio, index=False)\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-disposition\", \"attachment;Filename=taf.csv\"),\n        ]\n    start_response(\"200 OK\", headers)\n    return bio.getvalue()\n\n\ndef rect(station):\n    \"\"\"Cleanup.\"\"\"\n    return station if len(station) == 4 else f\"K{station}\"\n\n\n@iemapp(help=__doc__, schema=MyModel)\ndef application(environ, start_response):\n    \"\"\"Get stuff\"\"\"\n    if environ[\"hours\"] is not None:\n        environ[\"ets\"] = utc()\n        environ[\"sts\"] = environ[\"ets\"] - timedelta(hours=environ[\"hours\"])\n    environ[\"station\"] = [rect(x.upper()) for x in environ[\"station\"]]\n    return [run(start_response, environ)]\n"
  },
  {
    "path": "pylib/iemweb/request/talltowers.py",
    "content": "\"\"\".. title:: Tall Towers Data Request\n\nReturn to `API Services </api/#cgi>`_ or\n`Download Frontend </projects/iao/analog_download.php>`_\n\nChangelog\n---------\n\n- 2024-09-02: Initial documentation update and pydantic validation\n\nExample Requests\n----------------\n\nProvide the hourly averaged data on 15 September 2016\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/talltowers.py?\\\nstation=ETTI4,MCAI4&var=ws_s&var=ws_nw&z=10&z=2&agg=avg\\\n&sts=2016-09-15T00:00Z&ets=2016-09-16T00:00Z&window=60&format=excel\n\nSame request, but return as a CSV file\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/talltowers.py?\\\nstation=ETTI4,MCAI4&var=ws_s&var=ws_nw&z=10&z=2&agg=avg\\\n&sts=2016-09-15T00:00Z&ets=2016-09-16T00:00Z&window=60&format=comma\n\n\"\"\"\n\nfrom datetime import timedelta\nfrom io import BytesIO, StringIO\n\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nfrom iemweb.fields import TZ_FIELD\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\nTOWERIDS = {0: \"ETTI4\", 1: \"MCAI4\"}\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    agg: ListOrCSVType = Field(\n        default=[\"avg\"],\n        description=\"Aggregation method to use\",\n    )\n    format: str = Field(\n        default=\"excel\",\n        description=\"The format of the response\",\n        pattern=\"^(excel|tdf|comma)$\",\n    )\n    ets: AwareDatetime = Field(\n        default=None,\n        description=\"End of the period of interest\",\n    )\n    sts: AwareDatetime = Field(\n        default=None,\n        description=\"Start of the period of interest\",\n    )\n    station: ListOrCSVType = Field(..., description=\"Station(s) to query\")\n    var: ListOrCSVType = Field(\n        ...,\n        description=\"Variable(s) to query\",\n    )\n    window: int = Field(\n        default=1,\n        description=\"Window size for aggregation\",\n        ge=1,\n        le=1440,\n    )\n    z: ListOrCSVType = Field(..., description=\"Height(s) to query\")\n    tz: TZ_FIELD = \"Etc/UTC\"\n    year1: int = Field(None, description=\"Start Year, if sts not provided\")\n    month1: int = Field(None, description=\"Start Month, if sts not provided\")\n    day1: int = Field(None, description=\"Start Day, if sts not provided\")\n    hour1: int = Field(None, description=\"Start Hour, if sts not provided\")\n    year2: int = Field(None, description=\"End Year, if ets not provided\")\n    month2: int = Field(None, description=\"End Month, if ets not provided\")\n    day2: int = Field(None, description=\"End Day, if ets not provided\")\n    hour2: int = Field(None, description=\"End Hour, if ets not provided\")\n\n\ndef get_stations(environ):\n    \"\"\"Figure out the requested station\"\"\"\n    towers = []\n    for tid, nwsli in TOWERIDS.items():\n        if nwsli in environ[\"station\"]:\n            towers.append(tid)\n\n    return towers\n\n\ndef get_columns(cursor):\n    \"\"\"What have we here.\"\"\"\n    cursor.execute(\n        \"SELECT column_name FROM information_schema.columns \"\n        \"WHERE table_schema = 'public' AND table_name   = 'data_analog'\"\n    )\n    res = [row[0] for row in cursor]\n    return res\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"Go main Go\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"Missing start/end time\")\n    pgconn = get_dbconn(\"talltowers\")\n    columns = get_columns(pgconn.cursor())\n    tzname = environ[\"tz\"]\n\n    stations = get_stations(environ)\n    if not stations:\n        raise IncompleteWebRequest(\"No stations\")\n    sts = environ[\"sts\"]\n    ets = environ[\"ets\"]\n    if (ets - sts) > timedelta(days=31):\n        ets = sts + timedelta(days=31)\n    fmt = environ[\"format\"]\n    # Build out our variable list\n    tokens = []\n    zz = environ[\"z\"]\n    varnames = environ[\"var\"]\n    aggs = environ[\"agg\"]\n    for z in zz:\n        for v in varnames:\n            v1 = v\n            v2 = \"\"\n            if v.find(\"_\") > -1:\n                v1, v2 = v.split(\"_\")\n                v2 = f\"_{v2}\"\n            colname = f\"{v1}_{z}m{v2}\"\n            if colname not in columns:\n                continue\n            for agg in aggs:\n                if agg not in [\"avg\", \"max\", \"min\", \"sum\", \"stddev\"]:\n                    raise IncompleteWebRequest(f\"Invalid agg {agg}\")\n                tokens.append(f\"{agg}({colname}) as {colname}_{agg}\")\n    if not tokens:\n        raise IncompleteWebRequest(\"No variables selected\")\n\n    tw = environ[\"window\"]\n\n    sql = f\"\"\"\n    SELECT tower,\n    (date_trunc('hour', valid) +\n    (((date_part('minute', valid)::integer / {tw}::integer) * {tw}::integer)\n     || ' minutes')::interval) at time zone :tz as ts,\n    {\",\".join(tokens)} from\n    data_analog where tower = ANY(:sids) and valid >= :sts and valid < :ets\n    GROUP by tower, ts ORDER by tower, ts\n    \"\"\"\n    with get_sqlalchemy_conn(\"talltowers\") as conn:\n        df = pd.read_sql(\n            sql_helper(sql),\n            conn,\n            params={\"tz\": tzname, \"sids\": stations, \"sts\": sts, \"ets\": ets},\n        )\n    df = df.rename(columns={\"ts\": \"valid\"})\n    df[\"tower\"] = df[\"tower\"].replace(TOWERIDS)\n    pgconn.close()\n    if fmt in [\"tdf\", \"comma\"]:\n        headers = [\n            (\"Content-type\", \"application/octet-stream\"),\n            (\"Content-disposition\", \"attachment; filename=talltowers.txt\"),\n        ]\n        start_response(\"200 OK\", headers)\n        sio = StringIO()\n        df.to_csv(sio, sep=\",\" if fmt == \"comma\" else \"\\t\", index=False)\n        return [sio.getvalue().encode(\"utf8\")]\n\n    # Excel\n    bio = BytesIO()\n    with pd.ExcelWriter(bio, engine=\"xlsxwriter\") as writer:\n        df.to_excel(writer, sheet_name=\"Data\", index=False)\n    headers = [\n        (\"Content-type\", EXL),\n        (\"Content-disposition\", \"attachment; Filename=talltowers.xlsx\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return [bio.getvalue()]\n"
  },
  {
    "path": "pylib/iemweb/request/tempwind_aloft.py",
    "content": "\"\"\".. title:: Temperature and Wind Aloft Data Service\n\nReturn to `User Frontend </request/tempwind_aloft.php>`_ or\n`IEM API Services </api/#cgi>`_.\n\nDocumentation for /cgi-bin/request/tempwind_aloft.py\n----------------------------------------------------\n\nThis service emits processed data from a temperature and winds aloft product.\n\nChangelog\n---------\n\n- 2024-10-07: While format=comma should have worked, it was not implemented.\n  The suggestion is to use format=csv instead.\n\nExample Usage\n~~~~~~~~~~~~~\n\nRequest all data for `KDSM` for 2023.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/tempwind_aloft.py?\\\nstation=KDSM&sts=2023-01-01T00:00Z&ets=2024-01-01T00:00Z\n\nRequest all data for `KDSM` for 2023 in JSON format.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/tempwind_aloft.py?\\\nstation=KDSM&sts=2023-01-01T00:00Z&ets=2024-01-01T00:00Z&format=json\n\nRequest all data for `KDSM` for 2023 in Excel format.\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/tempwind_aloft.py?\\\nstation=KDSM&sts=2023-01-01T00:00Z&ets=2024-01-01T00:00Z&format=excel\n\n\"\"\"\n\nfrom io import BytesIO, StringIO\n\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.fields import STATION_LIST_FIELD, TZ_FIELD_OPTIONAL\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    ets: AwareDatetime = Field(\n        None,\n        description=\"The end time of the data request\",\n    )\n    format: str = Field(\n        \"csv\",\n        description=\"The format of the output (csv json or excel)\",\n        pattern=\"^(comma|csv|json|excel)$\",\n    )\n    na: str = Field(\n        \"M\",\n        description=\"The value to use for missing data\",\n        pattern=\"^(M|None|blank)$\",\n    )\n    sts: AwareDatetime = Field(\n        None,\n        description=\"The start time of the data request\",\n    )\n    station: STATION_LIST_FIELD\n    tz: TZ_FIELD_OPTIONAL = \"UTC\"\n    year1: int = Field(\n        None,\n        description=\"The year for the start time, if sts is not provided\",\n    )\n    year2: int = Field(\n        None,\n        description=\"The year for the end time, if ets is not provided\",\n    )\n    month1: int = Field(\n        None,\n        description=\"The month for the start time, if sts is not provided\",\n    )\n    month2: int = Field(\n        None,\n        description=\"The month for the end time, if ets is not provided\",\n    )\n    day1: int = Field(\n        None,\n        description=\"The day for the start time, if sts is not provided\",\n    )\n    day2: int = Field(\n        None,\n        description=\"The day for the end time, if ets is not provided\",\n    )\n\n\ndef get_data(stations, sts, ets, tz, na, fmt):\n    \"\"\"Go fetch data please\"\"\"\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT *,\n            to_char(obtime at time zone :tz, 'YYYY/MM/DD HH24:MI')\n                as obtime2,\n            to_char(ftime at time zone :tz, 'YYYY/MM/DD HH24:MI')\n                as ftime2\n            from alldata_tempwind_aloft WHERE ftime >= :sts and\n            ftime <= :ets and station = ANY(:stations) ORDER by obtime, ftime\n            \"\"\"\n            ),\n            conn,\n            params={\"sts\": sts, \"ets\": ets, \"stations\": stations, \"tz\": tz},\n        )\n    df = df.drop(columns=[\"obtime\", \"ftime\"]).rename(\n        columns={\"obtime2\": \"obtime\", \"ftime2\": \"ftime\"}\n    )\n    cols = df.columns.values.tolist()\n    cols.remove(\"ftime\")\n    cols.remove(\"obtime\")\n    cols.insert(1, \"obtime\")\n    cols.insert(2, \"ftime\")\n    df = df[cols].dropna(axis=1, how=\"all\")\n    if na != \"blank\":\n        df = df.fillna(na)\n    if fmt == \"json\":\n        return df.to_json(orient=\"records\", date_format=\"iso\")\n    if fmt == \"excel\":\n        bio = BytesIO()\n        with pd.ExcelWriter(bio, engine=\"xlsxwriter\") as writer:\n            df.to_excel(writer, sheet_name=\"Data\", index=False)\n        return bio.getvalue()\n\n    sio = StringIO()\n    df.to_csv(sio, index=False)\n    return sio.getvalue()\n\n\n@iemapp(help=__doc__, schema=Schema)\ndef application(environ, start_response):\n    \"\"\"See how we are called\"\"\"\n\n    fmt = environ[\"format\"]\n    tz = environ[\"tz\"]\n    stations = environ[\"station\"]\n    na = environ[\"na\"]\n    if fmt != \"excel\":\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return [\n            get_data(\n                stations, environ[\"sts\"], environ[\"ets\"], tz, na, fmt\n            ).encode(\"ascii\")\n        ]\n    lll = \"stations\" if len(stations) > 1 else stations[0]\n    headers = [\n        (\"Content-type\", EXL),\n        (\"Content-disposition\", f\"attachment; Filename={lll}.xlsx\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return [get_data(stations, environ[\"sts\"], environ[\"ets\"], tz, na, fmt)]\n"
  },
  {
    "path": "pylib/iemweb/request/uscrn.py",
    "content": "\"\"\".. title:: USCRN Surface Data\n\nReturn to `API Services </api/#cgi>`_ or\n`User Frontend </request/uscrn.php>`_.\n\nDocumentation for /cgi-bin/request/uscrn.py\n-------------------------------------------\n\nThis application provides access to the IEM processed archives of stations\nreporting via the USCRN.\n\nChangelog\n---------\n\n- 2025-02-26: Initial implementation\n\nExample Requests\n----------------\n\nProvide the August 2020 data fo USCRN station 96404\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/uscrn.py?\\\nstations=96404&sts=2020-08-01T00:00Z&ets=2020-08-31T23:59Z\n\nSame request, but an Excel spreadsheet\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/uscrn.py?\\\nstations=96404&sts=2020-08-01T00:00Z&ets=2020-08-31T23:59Z&format=excel\n\nSame request, but JSON output\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/uscrn.py?\\\nstations=96404&sts=2020-08-01T00:00Z&ets=2020-08-31T23:59Z&format=json\n\n\"\"\"\n\nfrom io import BytesIO, StringIO\n\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass MyModel(CGIModel):\n    \"\"\"Our model\"\"\"\n\n    format: str = Field(\n        \"csv\",\n        description=\"The format of the data response. csv, json, or excel\",\n        pattern=r\"^(csv|json|excel)$\",\n    )\n    ets: AwareDatetime = Field(\n        None,\n        description=\"The end time for the data request\",\n    )\n    stations: ListOrCSVType = Field(..., description=\"The station identifiers\")\n    sts: AwareDatetime = Field(\n        None,\n        description=\"The start time for the data request\",\n    )\n    year1: int = Field(\n        None,\n        description=\"The start year for the data request, when sts is not set\",\n    )\n    month1: int = Field(\n        None,\n        description=(\n            \"The start month for the data request, when sts is not set\"\n        ),\n    )\n    day1: int = Field(\n        None,\n        description=\"The start day for the data request, when sts is not set\",\n    )\n    hour1: int = Field(\n        None,\n        description=\"The start hour for the data request, when sts is not set\",\n    )\n    year2: int = Field(\n        None,\n        description=\"The end year for the data request, when ets is not set\",\n    )\n    month2: int = Field(\n        None,\n        description=\"The end month for the data request, when ets is not set\",\n    )\n    day2: int = Field(\n        None,\n        description=\"The end day for the data request, when ets is not set\",\n    )\n    hour2: int = Field(\n        None,\n        description=\"The end hour for the data request, when ets is not set\",\n    )\n\n\ndef get_data(sts, ets, stations, fmt):\n    \"\"\"Go fetch data please\"\"\"\n    slimiter = \"\" if \"_ALL\" in stations else \"station = ANY(:stations) and \"\n    with get_sqlalchemy_conn(\"uscrn\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            select\n            valid at time zone 'UTC' as utc_valid, * from alldata\n            WHERE {slimiter} valid >= :sts and valid <= :ets\n            ORDER by valid, station ASC\"\"\",\n                slimiter=slimiter,\n            ),\n            conn,\n            params={\n                \"sts\": sts,\n                \"ets\": ets,\n                \"stations\": stations,\n            },\n        )\n    df = df.drop(columns=[\"valid\"])\n    if fmt == \"json\":\n        return df.to_json(orient=\"records\", date_format=\"iso\")\n    if fmt == \"excel\":\n        bio = BytesIO()\n        with pd.ExcelWriter(bio, engine=\"xlsxwriter\") as writer:\n            df.to_excel(writer, sheet_name=\"Data\", index=False)\n        return bio.getvalue()\n\n    sio = StringIO()\n    df.to_csv(sio, index=False)\n    return sio.getvalue()\n\n\n@iemapp(help=__doc__, schema=MyModel, default_tz=\"UTC\")\ndef application(environ, start_response):\n    \"\"\"See how we are called\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"Missing sts and/or ets\")\n    stations = environ[\"stations\"]\n    fmt = environ[\"format\"]\n    if fmt != \"excel\":\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return get_data(environ[\"sts\"], environ[\"ets\"], stations, fmt)\n    headers = [\n        (\"Content-type\", EXL),\n        (\"Content-disposition\", \"attachment; Filename=uscrn.xlsx\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return [get_data(environ[\"sts\"], environ[\"ets\"], stations, fmt)]\n"
  },
  {
    "path": "pylib/iemweb/request/wmo_bufr_srf.py",
    "content": "\"\"\".. title:: WMO BUFR Surface Data\n\nDocumentation for /cgi-bin/request/wmo_bufr_srf.py\n--------------------------------------------------\n\nThis application provides access to the IEM processed archives of stations\nreporting via the WMO BUFR Surface.\n\nExample Requests\n----------------\n\nReturn data for WIGOS station 0-756-1-456700 for 17 Sep 2025\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/wmo_bufr_srf.py?\\\nstations=0-756-1-456700&sts=2025-09-17T00:00Z&ets=2025-09-17T23:59Z&format=csv\n\nSame request, but Excel\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/wmo_bufr_srf.py?\\\nstations=0-756-1-456700&sts=2025-09-17T00:00Z&ets=2025-09-17T23:59Z&\\\nformat=excel\n\nSame request, but JSON\n\nhttps://mesonet.agron.iastate.edu/cgi-bin/request/wmo_bufr_srf.py?\\\nstations=0-756-1-456700&sts=2025-09-17T00:00Z&ets=2025-09-17T23:59Z&format=json\n\n\"\"\"\n\nfrom io import BytesIO, StringIO\n\nimport pandas as pd\nfrom pydantic import AwareDatetime, Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.webutil import CGIModel, ListOrCSVType, iemapp\n\nEXL = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n\n\nclass MyModel(CGIModel):\n    \"\"\"Our model\"\"\"\n\n    format: str = Field(\n        \"csv\",\n        description=\"The format of the data response. csv, json, or excel\",\n        pattern=r\"^(csv|json|excel)$\",\n    )\n    ets: AwareDatetime = Field(\n        None,\n        description=\"The end time for the data request\",\n    )\n    stations: ListOrCSVType = Field(..., description=\"The station identifiers\")\n    sts: AwareDatetime = Field(\n        None,\n        description=\"The start time for the data request\",\n    )\n    year1: int = Field(\n        None,\n        description=\"The start year for the data request, when sts is not set\",\n    )\n    month1: int = Field(\n        None,\n        description=(\n            \"The start month for the data request, when sts is not set\"\n        ),\n    )\n    day1: int = Field(\n        None,\n        description=\"The start day for the data request, when sts is not set\",\n    )\n    hour1: int = Field(\n        None,\n        description=\"The start hour for the data request, when sts is not set\",\n    )\n    year2: int = Field(\n        None,\n        description=\"The end year for the data request, when ets is not set\",\n    )\n    month2: int = Field(\n        None,\n        description=\"The end month for the data request, when ets is not set\",\n    )\n    day2: int = Field(\n        None,\n        description=\"The end day for the data request, when ets is not set\",\n    )\n    hour2: int = Field(\n        None,\n        description=\"The end hour for the data request, when ets is not set\",\n    )\n\n\ndef get_data(sts, ets, stations, fmt):\n    \"\"\"Go fetch data please\"\"\"\n    with get_sqlalchemy_conn(\"other\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            select\n            valid at time zone 'UTC' as utc_valid, * from alldata\n            WHERE station = ANY(:stations)\n            and valid >= :sts and valid <= :ets\n            ORDER by valid, station ASC\"\"\"\n            ),\n            conn,\n            params={\n                \"sts\": sts,\n                \"ets\": ets,\n                \"stations\": stations,\n            },\n        )\n    df = df.drop(columns=[\"valid\"])\n    if fmt == \"json\":\n        return df.to_json(orient=\"records\", date_format=\"iso\")\n    if fmt == \"excel\":\n        bio = BytesIO()\n        with pd.ExcelWriter(bio, engine=\"xlsxwriter\") as writer:\n            df.to_excel(writer, sheet_name=\"Data\", index=False)\n        return bio.getvalue()\n\n    sio = StringIO()\n    df.to_csv(sio, index=False)\n    return sio.getvalue()\n\n\n@iemapp(help=__doc__, schema=MyModel, default_tz=\"UTC\")\ndef application(environ, start_response):\n    \"\"\"See how we are called\"\"\"\n    if environ[\"sts\"] is None or environ[\"ets\"] is None:\n        raise IncompleteWebRequest(\"Missing sts and/or ets\")\n    stations = environ[\"stations\"]\n    fmt = environ[\"format\"]\n    if fmt != \"excel\":\n        start_response(\"200 OK\", [(\"Content-type\", \"text/plain\")])\n        return get_data(environ[\"sts\"], environ[\"ets\"], stations, fmt)\n    headers = [\n        (\"Content-type\", EXL),\n        (\"Content-disposition\", \"attachment; Filename=wmo_bufr_srf.xlsx\"),\n    ]\n    start_response(\"200 OK\", headers)\n    return [get_data(environ[\"sts\"], environ[\"ets\"], stations, fmt)]\n"
  },
  {
    "path": "pylib/iemweb/search.py",
    "content": "\"\"\".. title:: IEM Search Service\n\nThis service drives the search bar on the IEM website.\n\nChangelog\n---------\n\n- 2024-09-04: Initial documentation update\n\nExample Requests\n----------------\n\nSearch using a station identifier\n\nhttps://mesonet.agron.iastate.edu/search.py?q=DSM\n\nSearch using a four character station identifier\n\nhttps://mesonet.agron.iastate.edu/search.py?q=KPAH\n\nProvide an IEM AWIPS ID / AFOS identifier\n\nhttps://mesonet.agron.iastate.edu/search.py?q=202407101919-KDMX-FXUS63-AFDDMX\n\nSearch for a given NWS AFOS Product Identifier\n\nhttps://mesonet.agron.iastate.edu/search.py?q=AAABBB\n\nLink to a given autoplot number\n\nhttps://mesonet.agron.iastate.edu/search.py?q=ap100\n\nAuto forward to station closest to the given street address\n\nhttps://mesonet.agron.iastate.edu/search.py?q=100%20Main%20St%20Ames%20Iowa\n\n\"\"\"\n\nimport re\nfrom typing import Annotated\n\nimport pandas as pd\nfrom pydantic import Field\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.templates.iem import TEMPLATE\nfrom pyiem.webutil import CGIModel, iemapp\n\nfrom iemweb.geocoder import geocode\n\nAFOS_RE = re.compile(r\"^[A-Z0-9]{4,6}$\", re.IGNORECASE)\nSTATION_RE = re.compile(r\"^[A-Z0-9\\-]{3,32}$\", re.IGNORECASE)\nAUTOPLOT_RE = re.compile(r\"^(autoplot|ap)?\\s?(?P<n>\\d{1,3})$\", re.IGNORECASE)\nPRODID_RE = re.compile(r\"^[12]\\d{11}-[A-Z]{4}-\", re.IGNORECASE)\n\n# From CommonRegex\nSTREET_ADDRESS = re.compile(\n    r\"\\d{1,4} [\\w\\s]{1,20}(?:street|st|avenue|ave|road|rd|highway|hwy|\"\n    r\"square|sq|trail|trl|drive|dr|court|ct|parkway|pkwy|circle|cir|boulevard|\"\n    r\"blvd)\\W?(?=\\s|$)\",\n    re.IGNORECASE,\n)\n\n\nclass MyModel(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    q: Annotated[str, Field(title=\"Search Query\")]\n\n\ndef station_df_handler(df: pd.DataFrame) -> str:\n    \"\"\"Common.\"\"\"\n    if df.empty:\n        return \"/sites/locate.php\"\n    # Prioritize network values that contain ASOS\n    df2 = df[df[\"network\"].str.contains(\"ASOS\")]\n    if not df2.empty:\n        r1 = df2.iloc[0]\n    else:  # roullete\n        r1 = df.iloc[0]\n    return f\"/sites/site.php?station={r1['id']}&network={r1['network']}\"\n\n\ndef geocoder(q: str) -> str:\n    \"\"\"Attempt geocoding.\"\"\"\n    lat, lon = geocode(q)\n    if lat is None or lon is None:\n        return \"/sites/locate.php\"\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"SELECT id, network,\n            ST_Distance(geom, ST_Point(:lon, :lat, 4326)) as dist\n            from stations where ST_PointInsideCircle(geom, :lon, :lat, 1)\n            ORDER by dist ASC LIMIT 50\n            \"\"\"),\n            conn,\n            params={\"lat\": float(lat), \"lon\": float(lon)},\n        )\n    return station_df_handler(df)\n\n\ndef ap_handler(apid):\n    \"\"\"Forward to the appropriate autoplot page.\"\"\"\n    return f\"/plotting/auto/?q={apid}\"\n\n\ndef prodid_handler(pid):\n    \"\"\"Foreward to the product page.\"\"\"\n    return f\"/p.php?pid={pid}\"\n\n\ndef afos_handler(pil):\n    \"\"\"Forward to AFOS handler.\"\"\"\n    return f\"/wx/afos/p.php?pil={pil}\"\n\n\ndef station_handler(sid: str) -> str:\n    \"\"\"Attempt to find a station.\"\"\"\n    # convert KXXX to XXX\n    if sid.startswith(\"K\") and len(sid) == 4:\n        sid = sid[1:]\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        df = pd.read_sql(\n            \"SELECT id, network from stations where id = %s\",\n            conn,\n            params=(sid,),\n        )\n    return station_df_handler(df)\n\n\ndef has_station(sid):\n    \"\"\"Le Sigh.\"\"\"\n    # convert KXXX to XXX\n    if sid.startswith(\"K\") and len(sid) == 4:\n        sid = sid[1:]\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"SELECT id, network from stations where id = :sid\"),\n            conn,\n            params={\"sid\": sid},\n        )\n    return not df.empty\n\n\ndef find_handler(q, referer: str | None):\n    \"\"\"Do we have a handler for this request?\"\"\"\n    if q == \"\":\n        return None, None\n    m = PRODID_RE.match(q)\n    if m:\n        return prodid_handler, q\n    # Match autoplot first as ### will match STATION_RE\n    m = AUTOPLOT_RE.match(q)\n    if m:\n        d = m.groupdict()\n        return ap_handler, d[\"n\"]\n    # Can overlap with AFOS_RE\n    if STATION_RE.match(q):\n        q = q.upper()\n        if has_station(q):\n            return station_handler, q.upper()\n    if AFOS_RE.match(q):\n        return afos_handler, q.upper()\n    # Likely want to always do this one last, as it will catch things\n    c = STREET_ADDRESS.search(q)\n    if c and referer:\n        return geocoder, q\n    return None, None\n\n\ndef default_form():\n    \"\"\"Page when we don't know what to do.\"\"\"\n    ctx = {}\n    ctx[\"content\"] = \"\"\"\n<h3>IEM Awesome Search Failure</h3>\n\n<p>Sorry, I don't know how to handle your request. Here's a brief listing\nof supported search values.</p>\n\n<ul>\n    <li>A NWS AFOS/AWIPS Idenitifer (AFDDMX, SWODY1)</li>\n    <li>A station ID (KFWS, AMSI4, DSM, IA0200)</li>\n    <li>An autoplot identifier (ap1, ap2, autoplot 100)</li>\n    <li>An IEM Product ID for NWS Prods (201501010000-KDMX-NOUS43-PNSDMX)</li>\n    <li>The nearest station to a street address (123 Main St Ames Iowa)</li>\n</ul>\n\n<p>Wanna see something added? <a href=\"/info/contacts.php\">Contact us</a>!</p>\n    \"\"\"\n    return [TEMPLATE.render(ctx).encode(\"utf-8\")]\n\n\n@iemapp(help=__doc__, schema=MyModel)\ndef application(environ, start_response):\n    \"\"\"Here we are, answer with a redirect in most cases.\"\"\"\n    # Ensure we have only latin-1 characters per URL requirements\n    q = (\n        environ[\"q\"]\n        .strip()\n        .encode(\"latin-1\", \"replace\")\n        .decode(\"utf-8\", \"replace\")\n    )\n    handler, qclean = find_handler(q, environ.get(\"HTTP_REFERER\"))\n    if handler is None:\n        start_response(\"200 OK\", [(\"Content-type\", \"text/html\")])\n        return default_form()\n    redirect_to = handler(qclean)\n    start_response(\"302 Found\", [(\"Location\", redirect_to)])\n    return []\n"
  },
  {
    "path": "pylib/iemweb/sites/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/sites/test.py",
    "content": "\"\"\"placeholder for future work.\"\"\"\n\nfrom pyiem.webutil import iemapp\n\n\n@iemapp()\ndef application(environ: dict, start_response: callable):\n    \"\"\"dev.\"\"\"\n    # We'd want to enforce that this works, so we are getting called rightly\n    try:\n        (_, _, network, station, _) = environ[\"SCRIPT_URL\"].split(\"/\")\n    except Exception:\n        network = \"IA_ASOS\"\n        station = \"DSM\"\n    start_response(\"200 OK\", [(\"Content-Type\", \"text/html\")])\n    return [f\"Hello World {network} {station}\".encode(\"ascii\")]\n"
  },
  {
    "path": "pylib/iemweb/tilecache_dispatch.py",
    "content": "\"\"\"Minimal dispatcher for TileCache endpoints /c and /cache.\n\nThese are thread-safe and served by a dedicated Gunicorn backend for maximum\ntile throughput.\n\"\"\"\n\nfrom iemweb.c.tile import application as c_application\nfrom iemweb.cache.tile import application as cache_application\n\n# Keys are the full SCRIPT_NAME that Apache would normally set, i.e. the path\n# up to and including the .py script.  The dispatcher strips this prefix from\n# PATH_INFO and sets SCRIPT_NAME so TileCache's wsgiHandler sees the same\n# environ layout it gets when served directly by the main Apache.\n_ROUTES = {\n    \"/c/tile.py\": c_application,\n    \"/c/c.py\": c_application,\n    \"/cache/tile.py\": cache_application,\n}\n\n\ndef application(environ: dict, start_response: callable):\n    \"\"\"WSGI entry point for TileCache requests.\n\n    Injects `Cache-Control` and `Expires` headers for the `/c` and\n    `/cache` endpoints so Apache-level Expires configuration is mirrored\n    when served from the sidecar.\n    \"\"\"\n    import time\n    from wsgiref.handlers import format_date_time\n\n    path_info: str = environ.get(\"PATH_INFO\", \"\")\n    for script_name, handler in _ROUTES.items():\n        if path_info == script_name or path_info.startswith(f\"{script_name}/\"):\n            environ[\"SCRIPT_NAME\"] = script_name\n            environ[\"PATH_INFO\"] = path_info[len(script_name) :]\n\n            # Determine cache TTL based on the script namespace\n            ttl = 5 * 60  # 5 minutes\n            if (\n                script_name.startswith(\"/c/\")\n                or script_name == \"/c/tile.py\"\n                or script_name == \"/c/c.py\"\n            ):\n                ttl = 14 * 24 * 60 * 60  # 14 days\n\n            def header_wrapper(status, headers, exc_info=None, _ttl=ttl):\n                # Capture ttl in a default argument to avoid late-binding\n                # loop-variable issues flagged by linters.\n                hdr_names = {k.lower() for k, _ in headers}\n                if \"cache-control\" not in hdr_names:\n                    headers.append(\n                        (\"Cache-Control\", f\"public, max-age={_ttl}\")\n                    )\n                if \"expires\" not in hdr_names:\n                    expires = format_date_time(time.time() + _ttl)\n                    headers.append((\"Expires\", expires))\n                return start_response(status, headers, exc_info)\n\n            return handler(environ, header_wrapper)\n\n    # We will do something better, someday...\n    start_response(\"200 OK\", [(\"Content-Type\", \"text/plain\")])\n    return [b\"OK\\n\"]\n"
  },
  {
    "path": "pylib/iemweb/util.py",
    "content": "\"\"\"iemweb utility functions.\"\"\"\n\nimport fcntl\nimport os\nfrom pathlib import Path\n\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import utc\nfrom TileCache import InvalidTMSRequest\nfrom TileCache.Service import wsgiHandler\n\nfrom iemweb import error_log\n\nMONTH_LOOKUP = {\n    \"jan\": [1],\n    \"feb\": [2],\n    \"mar\": [3],\n    \"apr\": [4],\n    \"may\": [5],\n    \"jun\": [6],\n    \"jul\": [7],\n    \"aug\": [8],\n    \"sep\": [9],\n    \"oct\": [10],\n    \"nov\": [11],\n    \"dec\": [12],\n    \"all\": list(range(1, 13)),\n    \"water_year\": list(range(1, 13)),\n    \"fall\": [9, 10, 11],\n    \"winter\": [12, 1, 2],\n    \"octmar\": [10, 11, 12, 1, 2, 3],\n    \"spring\": [3, 4, 5],\n    \"spring2\": [4, 5, 6],\n    \"summer\": [6, 7, 8],\n    \"gs\": [5, 6, 7, 8, 9],\n    \"mjj\": [5, 6, 7],\n}\n\n\ndef json_response_dict(init_dict: dict | None = None) -> dict:\n    \"\"\"Supplement the response dict with a generated_at timestamp in ISO8601.\n\n    Example usage: json_response_dict({\"data\": []})\n    \"\"\"\n    gen_at = utc().strftime(ISO8601)\n    if init_dict is not None:\n        init_dict.setdefault(\"generated_at\", gen_at)\n        return init_dict\n    return {\"generated_at\": gen_at}\n\n\ndef acquire_slot(name: str, max_processes: int):\n    \"\"\"Try to acquire one of 4 processing slots using file locks.\"\"\"\n    lock_dir = Path(\"/tmp\") / name\n    lock_dir.mkdir(exist_ok=True)\n    for i in range(max_processes):\n        lock_file = lock_dir / f\"slot_{i}.lock\"\n        try:\n            fd = os.open(lock_file, os.O_CREAT | os.O_WRONLY | os.O_TRUNC)\n            fcntl.flock(fd, fcntl.LOCK_EX | fcntl.LOCK_NB)  # Non-blocking\n            return fd  # Successfully acquired slot i\n        except OSError:\n            # Slot is busy, try next one\n            try:\n                os.close(fd)\n            except Exception:\n                pass\n            continue\n    return None  # All slots busy\n\n\ndef release_slot(fd):\n    \"\"\"Release the processing slot.\"\"\"\n    if fd is not None:\n        try:\n            fcntl.flock(fd, fcntl.LOCK_UN)\n            os.close(fd)\n        except Exception:\n            pass\n\n\ndef get_ct(environ: dict) -> str:\n    \"\"\"Construct the content type based on our generalized patterns.\n\n    Supported fmt/format values: json, geojson, csv, html, excel, zip.\n    For json/geojson with a non-empty callback, return JavaScript for JSONP.\n    \"\"\"\n    fmt = environ.get(\"fmt\", environ.get(\"format\", \"json\"))\n    # If JSONP is requested, serve JavaScript\n    if fmt in (\"json\", \"geojson\") and environ.get(\"callback\"):\n        return \"application/javascript; charset=utf-8\"\n    if fmt == \"geojson\":\n        return \"application/vnd.geo+json; charset=utf-8\"\n    if fmt == \"json\":\n        return \"application/json; charset=utf-8\"\n    if fmt == \"csv\":\n        return \"text/csv; charset=utf-8\"\n    if fmt == \"html\":\n        return \"text/html\"\n    if fmt == \"excel\":\n        return \"application/vnd.ms-excel\"\n    if fmt == \"zip\":\n        return \"application/octet-stream\"\n    return \"text/plain\"\n\n\ndef tms_handler(environ: dict, start_response: callable, service: dict):\n    \"\"\"Handler for TMS requests and subsequent failures.\"\"\"\n    try:\n        return wsgiHandler(environ, start_response, service)\n    except InvalidTMSRequest:\n        # Previously, we would tee these requests up for app firewall\n        # now we just log them and send back a customized image\n        # indicating that the request was invalid.\n        error_log(\n            environ,\n            f\"InvalidTMS  \"\n            f\"'{environ.get('PATH_INFO')}' \"\n            f\"Ref: {environ.get('HTTP_REFERER')}\",\n        )\n        start_response(\"200 OK\", [(\"Content-Type\", \"image/png\")])\n        with open(\"/opt/iem/htdocs/images/tms_error.png\", \"rb\") as fh:\n            return [fh.read()]\n\n\ndef month2months(month: str) -> list[int]:\n    \"\"\"\n    Convert a month string to a list of months.\n\n    Args:\n        month (str): A month string commonly used by IEM apps\n\n    Returns:\n        list: A list of ints (months)\n    \"\"\"\n    month = month.lower().strip()\n    if month in MONTH_LOOKUP:\n        return MONTH_LOOKUP[month]\n    return [int(month)]\n"
  },
  {
    "path": "pylib/iemweb/vtec/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/vtec/f.py",
    "content": "\"\"\".. title:: VTEC Jump Page\n\nTBW.\n\"\"\"\n\nimport re\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom pyiem.nws import vtec\nfrom pyiem.util import html_escape, utc\nfrom pyiem.webutil import iemapp\n\n# sadly, I have a lot of links in the wild without a status?\nVTEC_RE = re.compile(\n    r\"^(?P<year>\\d+)-(?P<op>O)-(?P<status>[A-Z]{3})?-?(?P<wfo4>[A-Z]{4})-\"\n    r\"(?P<phenomena>[A-Z]{2})-(?P<significance>[A-Z])-(?P<eventid>\\d+)$\"\n)\nTIME_RE = re.compile(\n    r\"(?P<year>\\d+)-(?P<month>\\d+)-(?P<day>\\d+)T(?P<hour>\\d+):(?P<minute>\\d+)\"\n)\n\n\ndef get_data(ctx):\n    \"\"\"Get aux data from the database about this event.\"\"\"\n    pgconn = get_dbconn(\"postgis\")\n    cursor = pgconn.cursor()\n    cursor.execute(\n        \"\"\"\n    SELECT max(product_ids[cardinality(product_ids)]) as r,\n    sumtxt(name::text || ', ') as cnties,\n    max(case when is_emergency then 1 else 0 end),\n    max(case when is_pds then 1 else 0 end),\n    max(updated at time zone 'UTC') from\n    warnings w JOIN ugcs u on (w.gid = u.gid) WHERE vtec_year = %s\n    and w.wfo = %s and phenomena = %s and significance = %s\n    and eventid = %s\n        \"\"\",\n        (\n            ctx[\"year\"],\n            ctx[\"wfo4\"][-3:],\n            ctx[\"phenomena\"],\n            ctx[\"significance\"],\n            int(ctx[\"eventid\"]),\n        ),\n    )\n    row = cursor.fetchone()\n    ctx[\"report\"] = (\n        \"\" if row[0] is None else html_escape(row[0].replace(\"\\001\", \"\"))\n    )\n    ctx[\"desc\"] = \"\" if row[1] is None else html_escape(row[1][:-2])\n    ctx[\"is_emergency\"] = row[2] == 1\n    ctx[\"is_pds\"] = row[3] == 1\n    ctx[\"updated\"] = utc() if row[4] is None else row[4]\n    pgconn.close()\n\n\ndef as_html(ctx):\n    \"\"\"Generate the HTML page.\"\"\"\n    ctx[\"v\"] = (\n        \"year=%(year)s&wfo=%(wfo4)s\"\n        \"&phenomena=%(phenomena)s&\"\n        \"significance=%(significance)s&eventid=%(eventid)s\"\n    ) % ctx\n    ctx[\"ogtitle\"] = \"%s %s%s %s #%s\" % (\n        ctx[\"wfo4\"],\n        vtec.VTEC_PHENOMENA.get(ctx[\"phenomena\"]),\n        \" (Particularly Dangerous Situation) \" if ctx[\"is_pds\"] else \"\",\n        (\n            \"Emergency\"\n            if ctx[\"is_emergency\"]\n            else vtec.VTEC_SIGNIFICANCE.get(ctx[\"significance\"])\n        ),\n        int(ctx[\"eventid\"]),\n    )\n    ctx[\"ogurl\"] = (\"https://mesonet.agron.iastate.edu/vtec/f/%s\") % (\n        ctx[\"v\"],\n    )\n    ctx[\"ogimg\"] = (\n        \"https://mesonet.agron.iastate.edu/plotting/auto/plot/208/\"\n        \"network:WFO::wfo:%s::year:%s::phenomenav:%s::significancev:%s::\"\n        \"etn:%s\"\n    ) % (\n        ctx[\"wfo4\"] if ctx[\"wfo4\"].startswith(\"P\") else ctx[\"wfo4\"][-3:],\n        ctx[\"year\"],\n        ctx[\"phenomena\"],\n        ctx[\"significance\"],\n        ctx[\"eventid\"],\n    )\n    if ctx[\"valid\"] is not None:\n        ctx[\"ogurl\"] += \"_\" + ctx[\"valid\"].strftime(\"%Y-%m-%dT%H:%MZ\")\n        ctx[\"ogimg\"] += \"::valid:%s::_updated:%s\" % (\n            ctx[\"valid\"].strftime(\"%Y-%m-%d%%20%H%M\"),\n            ctx[\"updated\"].strftime(\"%Y-%m-%d%%20%H%M\"),\n        )\n    return (\n        \"\"\"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta http-equiv=\"refresh\" content=\"0; URL=/vtec/?%(v)s\">\n<title>%(ogtitle)s</title>\n<meta property=\"og:title\" content=\"%(ogtitle)s\">\n<meta property=\"og:description\" content=\"%(desc)s\">\n<meta property=\"og:image\" content=\"%(ogimg)s.png\">\n<meta property=\"og:url\" content=\"%(ogurl)s\">\n<meta name=\"twitter:card\" content=\"summary_large_image\">\n<meta name=\"twitter:site\" content=\"@akrherz\">\n<meta name=\"og:image:width\" content=\"1200\">\n<meta name=\"og:image:height\" content=\"628\">\n<meta name=\"og:site_name\" content=\"Iowa Environmental Mesonet\">\n<meta name=\"twitter:image:alt\" content=\"Visualization of the VTEC Product\">\n</head>\n<body>\n<pre>\n%(report)s\n</pre>\n\n</body>\n</html>\n\"\"\"\n        % ctx\n    )\n\n\ndef get_context(url):\n    \"\"\"Figure out how we were called.\"\"\"\n    # /vtec/f/2020-O-NEW-KLWX-SC-Y-0026\n    # /vtec/f/2020-O-NEW-KLWX-SC-Y-0026_2020-02-18T17:00Z\n    tokens = url.split(\"/\")[-1].split(\"_\")\n    m = VTEC_RE.match(tokens[0])\n    if m is None:\n        ctx = {\n            \"year\": \"2020\",\n            \"op\": \"O\",\n            \"status\": \"NEW\",\n            \"wfo4\": \"KLWX\",\n            \"phenomena\": \"SC\",\n            \"significance\": \"Y\",\n            \"eventid\": \"0026\",\n        }\n    else:\n        ctx = m.groupdict()\n    if ctx[\"status\"] is None:\n        ctx[\"status\"] = \"NEW\"\n    get_data(ctx)\n    ctx[\"valid\"] = None\n    if len(tokens) > 1:\n        m = TIME_RE.match(tokens[1])\n        if m:\n            d = m.groupdict()\n            ctx[\"valid\"] = utc(\n                int(d[\"year\"]),\n                int(d[\"month\"]),\n                int(d[\"day\"]),\n                int(d[\"hour\"]),\n                int(d[\"minute\"]),\n            )\n    return ctx\n\n\n@iemapp(help=__doc__)\ndef application(environ, start_response):\n    \"\"\"Answer the bell.\"\"\"\n    script_url = environ.get(\"SCRIPT_URI\")\n    if script_url is None:\n        raise IncompleteWebRequest(\"SCRIPT_URI is required\")\n    ctx = get_context(script_url)\n    if not ctx:\n        start_response(\"404 Not Found\", [(\"Content-type\", \"text/plain\")])\n        return [b\"Resource Not Found\"]\n    start_response(\"200 OK\", [(\"Content-type\", \"text/html\")])\n    return [as_html(ctx).encode(\"ascii\", errors=\"ignore\")]\n"
  },
  {
    "path": "pylib/iemweb/vtec/index.py",
    "content": "\"\"\".. title:: VTEC Browser\n\nThis is the front end for the IEM VTEC browser.  The implementation of the\napp is found at `Github iemvtec repo <https://github.com/akrherz/iemvtec>`_.\n\n\"\"\"\n\nimport json\nimport os\nimport re\n\nfrom pydantic import Field, field_validator\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.nws.vtec import VTEC_PHENOMENA, VTEC_SIGNIFICANCE\nfrom pyiem.templates.iem import TEMPLATE\nfrom pyiem.util import html_escape, utc\nfrom pyiem.webutil import CGIModel, iemapp\nfrom sqlalchemy.engine import Connection\n\nfrom iemweb.fields import VTEC_PH_FIELD, VTEC_SIG_FIELD, VTEC_YEAR_FIELD\nfrom iemweb.mlib import rectify_wfo\nfrom iemweb.util import error_log\n\n# sadly, I have a lot of links in the wild without a status?\nVTEC_FORM = (\n    r\"(?P<year>\\d+)-(?P<op>O)-(?P<status>[A-Z]{3})?-?(?P<wfo4>[A-Z]{4})-\"\n    r\"(?P<phenomena>[A-Z]{2})-(?P<significance>[A-Z])-(?P<eventid>\\d+)\"\n)\nVTEC_RE = re.compile(f\"^{VTEC_FORM}$\")\nLEGACY_URL_RE = re.compile(f\"/event/{VTEC_FORM}\")\n\n\nclass Schema(CGIModel):\n    \"\"\"See how we are called.\"\"\"\n\n    vtec: str = Field(None, description=\"VTEC String\", pattern=VTEC_RE)\n    wfo: str = Field(\n        \"DMX\",\n        description=\"WFO Identifier\",\n        pattern=r\"^[A-Z]{3,4}$\",\n        max_length=4,\n    )\n    eventid: int = Field(\n        45,\n        description=\"Event Identifier\",\n        ge=1,\n        le=9999,\n    )\n    phenomena: VTEC_PH_FIELD = \"TO\"\n    significance: VTEC_SIG_FIELD = \"W\"\n    year: VTEC_YEAR_FIELD = 2024\n\n    @field_validator(\"wfo\", mode=\"before\")\n    @classmethod\n    def rectify_wfo(cls, value: str) -> str:\n        \"\"\"Ensure WFO is 4 characters.\"\"\"\n        return rectify_wfo(value)\n\n\n@with_sqlalchemy_conn(\"postgis\")\ndef get_data(vtecinfo: dict, conn: Connection | None = None):\n    \"\"\"Get aux data from the database about this event.\"\"\"\n    res = conn.execute(\n        sql_helper(\n            \"\"\"\n    SELECT max(product_ids[cardinality(product_ids)]) as r,\n    sumtxt(name::text || ', ') as cnties,\n    max(case when is_emergency then 1 else 0 end),\n    max(case when is_pds then 1 else 0 end),\n    max(updated at time zone 'UTC') from\n    warnings w JOIN ugcs u on (w.gid = u.gid) WHERE vtec_year = :yr\n    and w.wfo = :wfo and phenomena = :ph and significance = :sig\n    and eventid = :eventid\"\"\"\n        ),\n        {\n            \"yr\": vtecinfo[\"year\"],\n            \"wfo\": vtecinfo[\"wfo\"][-3:],\n            \"ph\": vtecinfo[\"phenomena\"],\n            \"sig\": vtecinfo[\"significance\"],\n            \"eventid\": int(vtecinfo[\"eventid\"]),\n        },\n    )\n    row = res.fetchone()\n    vtecinfo[\"report\"] = (\n        \"\" if row[0] is None else html_escape(row[0].replace(\"\\001\", \"\"))\n    )\n    vtecinfo[\"desc\"] = \"\" if row[1] is None else html_escape(row[1][:-2])\n    vtecinfo[\"is_emergency\"] = row[2] == 1\n    vtecinfo[\"is_pds\"] = row[3] == 1\n    vtecinfo[\"updated\"] = utc() if row[4] is None else row[4]\n\n\ndef as_html(vtecinfo: dict):\n    \"\"\"Generate the HTML page.\"\"\"\n    vtecinfo[\"ogtitle\"] = \"%s %s%s %s #%s\" % (\n        vtecinfo[\"wfo\"],\n        VTEC_PHENOMENA.get(vtecinfo[\"phenomena\"]),\n        \" (Particularly Dangerous Situation) \" if vtecinfo[\"is_pds\"] else \"\",\n        (\n            \"Emergency\"\n            if vtecinfo[\"is_emergency\"]\n            else VTEC_SIGNIFICANCE.get(vtecinfo[\"significance\"])\n        ),\n        int(vtecinfo[\"eventid\"]),\n    )\n    vtecinfo[\"ogimg\"] = (\n        \"https://mesonet.agron.iastate.edu/plotting/auto/plot/208/\"\n        \"network:WFO::wfo:%s::year:%s::phenomenav:%s::significancev:%s::\"\n        \"etn:%s\"\n    ) % (\n        (\n            vtecinfo[\"wfo\"]\n            if vtecinfo[\"wfo\"].startswith(\"P\")\n            else vtecinfo[\"wfo\"][-3:]\n        ),\n        vtecinfo[\"year\"],\n        vtecinfo[\"phenomena\"],\n        vtecinfo[\"significance\"],\n        vtecinfo[\"eventid\"],\n    )\n    vtecinfo[\"ogurl\"] = (\n        f\"https://mesonet.agron.iastate.edu/vtec/?wfo={vtecinfo['wfo']}&amp;\"\n        f\"phenomena={vtecinfo['phenomena']}&amp;\"\n        f\"significance={vtecinfo['significance']}&amp;\"\n        f\"eventid={vtecinfo['eventid']}&amp;year={vtecinfo['year']}\"\n    )\n\n\ndef get_context(environ: dict) -> dict:\n    \"\"\"Figure out how we were called.\"\"\"\n    ctx = {\n        \"appmode\": True,  # causes no inclusion of default CSS/JS\n        \"title\": \"NWS Valid Time Event Code (VTEC) Browser\",\n        \"headextra\": \"\",\n        \"jsextra\": \"\",\n    }\n    assetfn = \"/opt/iem/htdocs/vtec/assets.json\"\n    if os.path.isfile(assetfn):\n        try:\n            with open(assetfn) as fh:\n                assets = json.load(fh)[\"content.js\"]\n            ctx[\"headextra\"] = f\"\"\"\n<link rel=\"stylesheet\" href=\"/vtec/{assets[\"css\"][0]}\">\n\"\"\"\n            ctx[\"jsextra\"] = f\"\"\"\n<script src=\"/vtec/{assets[\"file\"]}\" type=\"module\"></script>\n\"\"\"\n        except Exception as exp:\n            error_log(environ, f\"Failed to load assets.json: {exp}\")\n\n    get_data(environ)\n    as_html(environ)\n    ctx[\"title\"] = environ[\"ogtitle\"]\n    ctx[\"headextra\"] += f\"\"\"\n<meta property=\"og:title\" content=\"{environ[\"ogtitle\"]}\">\n<meta property=\"og:description\" content=\"{environ[\"desc\"]}\">\n<meta property=\"og:image\" content=\"{environ[\"ogimg\"]}.png\">\n<meta property=\"og:url\" content=\"{environ[\"ogurl\"]}\">\n<meta name=\"twitter:card\" content=\"summary_large_image\">\n<meta name=\"twitter:site\" content=\"@akrherz\">\n<meta name=\"og:image:width\" content=\"1200\">\n<meta name=\"og:image:height\" content=\"628\">\n<meta name=\"og:site_name\" content=\"Iowa Environmental Mesonet\">\n<meta name=\"twitter:image:alt\" content=\"Visualization of the VTEC Product\">\n\"\"\"\n\n    with open(\"/opt/iem/htdocs/vtec/_index_content.html\") as fh:\n        content = fh.read()\n        ctx[\"content\"] = content\n    return ctx\n\n\n@iemapp(schema=Schema, help=__doc__)\ndef application(environ, start_response):\n    \"\"\"Answer the bell.\"\"\"\n    # Force HTTPS as the openlayers map will be angry\n    if environ[\"wsgi.url_scheme\"] != \"https\":\n        url = f\"https://{environ['HTTP_HOST']}{environ['REQUEST_URI']}\"\n        start_response(\"301 Moved Permanently\", [(\"Location\", url)])\n        return [b\"Redirecting\"]\n    script_uri = environ.get(\"SCRIPT_URI\", \"\")\n    m = LEGACY_URL_RE.search(script_uri)\n    if m:\n        # Pivot to use URL Parameters\n        urlparams = {}\n        tokens = script_uri.split(\"/\")\n        for i, token in enumerate(tokens[:-1]):  # chomp last to prevent err\n            if token not in [\"event\", \"tab\", \"update\", \"radar\"]:\n                continue\n            value = tokens[i + 1]\n            if token == \"event\":\n                m = VTEC_RE.match(value)\n                if m is not None:\n                    vtec = m.groupdict()\n                    urlparams[\"wfo\"] = vtec[\"wfo4\"]\n                    urlparams[\"phenomena\"] = vtec[\"phenomena\"]\n                    urlparams[\"significance\"] = vtec[\"significance\"]\n                    urlparams[\"eventid\"] = vtec[\"eventid\"]\n                    urlparams[\"year\"] = vtec[\"year\"]\n            if token in [\"tab\", \"update\"]:\n                urlparams[token] = value\n            if token == \"radar\":\n                radtokens = value.split(\"-\")\n                if len(radtokens) == 3:\n                    urlparams[\"radar\"] = radtokens[0]\n                    urlparams[\"radar_product\"] = radtokens[1]\n                    urlparams[\"radar_time\"] = radtokens[2]\n\n        # Forward the request to the new URL\n        url = \"/vtec/?\" + \"&\".join(\n            f\"{k}={v}\" for k, v in urlparams.items() if v is not None\n        )\n        start_response(\"301 Moved Permanently\", [(\"Location\", url)])\n        return [b\"Redirecting\"]\n\n    # If vtec cgi param, redirect to /vtec/event/...\n    if environ[\"vtec\"] is not None:\n        url = f\"/vtec/event/{environ['vtec']}\"\n        start_response(\"301 Moved Permanently\", [(\"Location\", url)])\n        return [b\"Redirecting\"]\n    ctx = get_context(environ)\n    start_response(\"200 OK\", [(\"Content-type\", \"text/html\")])\n    return TEMPLATE.render(ctx).encode(\"utf-8\")\n"
  },
  {
    "path": "pylib/iemweb/wx/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/wx/afos/__init__.py",
    "content": "\"\"\"Importable.\"\"\"\n"
  },
  {
    "path": "pylib/iemweb/wx/afos/text2png.py",
    "content": "\"\"\"..title :: Convert a NWS Text Product into a PNG\n\nURLs like so: `/wx/afos/201612141916_ADMNFD.png` are rewritten to this app\nlike so: `text2png?e=201612141916&pil=ADMNFD`\n\nChangelog\n---------\n\n- 2025-06-10: Migration to pydantic validation\n\nExample Requests\n----------------\n\nView the Des Moines NWS Area Forecast Discussion as a PNG:\n\nhttps://mesonet.agron.iastate.edu/wx/afos/text2png.py\\\n?e=202407100904&pil=AFDDMX\n\n\"\"\"\n\nfrom datetime import datetime, timezone\nfrom io import BytesIO\nfrom typing import Annotated\n\nimport PIL.ImageDraw\nimport PIL.ImageFont\nimport PIL.ImageOps\nfrom pydantic import Field\nfrom pyiem.database import get_dbconn\nfrom pyiem.webutil import CGIModel, iemapp\n\n\nclass Schema(CGIModel):\n    \"\"\"Schema for the CGI app\"\"\"\n\n    e: Annotated[\n        str,\n        Field(\n            description=\"The valid time of the product in YYYYMMDDHHMM format\",\n            max_length=12,\n            min_length=12,\n            pattern=r\"^[12][90]\\d\\d[01]\\d[0-3]\\d[0-2]\\d[0-5]\\d$\",\n        ),\n    ] = \"201612141916\"\n    pil: Annotated[\n        str,\n        Field(\n            description=\"The AFOS Product Identifier, e.g., ADMNFD\",\n            max_length=6,\n        ),\n    ] = \"ADMNFD\"\n\n\ndef text_image(content):\n    \"\"\"\n    http://stackoverflow.com/questions/29760402\n    \"\"\"\n    grayscale = \"L\"\n    content = content.replace(\"\\r\", \"\").replace(\"\\001\", \"\")\n    lines = content.split(\"\\n\")\n    if len(lines) > 100:\n        msg = f\"...truncated {len(lines) - 100} lines...\"\n        lines = lines[:100]\n        lines.append(msg)\n\n    large_font = 20\n    font_path = \"/usr/share/fonts/liberation-mono/LiberationMono-Regular.ttf\"\n    font = PIL.ImageFont.truetype(font_path, size=large_font)\n\n    # make the background image based on the combination of font and lines\n    max_width_line = max(lines, key=font.getlength)\n    # max height is adjusted down because it's too large visually for spacing\n    test_string = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"\n    bbox = font.getbbox(test_string)\n    max_height = bbox[3] - bbox[1]\n    max_width = font.getlength(max_width_line)\n    height = (max_height + 2) * len(lines)  # perfect or a little oversized\n    width = round(max_width + 40)  # a little oversized\n    # A limit of PIL\n    if (height * width) > 90_000_000:\n        width, height = 1200, 1000\n    image = PIL.Image.new(grayscale, (width, height), color=255)\n    draw = PIL.ImageDraw.Draw(image)\n\n    # draw each line of text\n    vertical_position = 5\n    horizontal_position = 5\n    line_spacing = max_height + 2\n    for line in lines:\n        draw.text(\n            (horizontal_position, vertical_position), line, fill=0, font=font\n        )\n        vertical_position += line_spacing\n    # crop the text\n    c_box = PIL.ImageOps.invert(image).getbbox()\n    image = image.crop(c_box)\n    buf = BytesIO()\n    PIL.ImageOps.expand(image, border=5, fill=\"white\").save(buf, format=\"PNG\")\n    return buf.getvalue()\n\n\ndef make_image(e, pil):\n    \"\"\"Do as I say\"\"\"\n    pgconn = get_dbconn(\"afos\")\n    cursor = pgconn.cursor()\n    valid = datetime.strptime(e, \"%Y%m%d%H%M\").replace(tzinfo=timezone.utc)\n\n    cursor.execute(\n        \"SELECT data from products WHERE pil = %s and entered = %s\",\n        (pil, valid),\n    )\n    content = \"\"\n    if cursor.rowcount > 0:\n        content = cursor.fetchone()[0]\n    pgconn.close()\n    return text_image(content)\n\n\ndef get_mckey(environ: dict) -> str:\n    \"\"\"Return the memcached key for this request\"\"\"\n    e = environ[\"e\"]\n    pil = environ[\"pil\"].replace(\" \", \"\")\n    return f\"text2png_{e}_{pil}.png\"\n\n\n@iemapp(\n    schema=Schema,\n    help=__doc__,\n    memcachekey=get_mckey,\n    content_type=\"image/png\",\n)\ndef application(environ: dict, start_response):\n    \"\"\"Go Main Go\"\"\"\n    e = environ[\"e\"]\n    pil = environ[\"pil\"].replace(\" \", \"\")\n    res = make_image(e, pil)\n    start_response(\"200 OK\", [(\"Content-type\", \"image/png\")])\n    return res\n"
  },
  {
    "path": "pyproject.toml",
    "content": "[tool.pytest.ini_options]\nfilterwarnings = [\n    \"error::pandas.errors.ChainedAssignmentError\",\n    \"error::pandas.errors.Pandas4Warning\",\n    \"ignore:numpy.ndarray size changed:RuntimeWarning\",\n]\n\n[tool.ruff]\nline-length = 79\ntarget-version = \"py310\"\n\n[tool.ruff.lint]\nselect = [\n    \"A\",  # builtins\n    # \"ANN\",  # annotations\n    \"ARG\",  # unused args\n    \"ASYNC\",  # async\n    \"B\",  # bugbear\n    # \"BLE\",  # blind except\n    \"C4\",  # comprehensions\n    # \"C90\",  # mccabe\n    # \"COM\",  # commas\n    # \"DTZ\",  # datetime\n    \"E\",  # pycodestyle\n    # \"EM\",  # flake8-errmsg\n    \"ERA\",  # eradicate\n    \"EXE\",  # shebang\n    \"F\",  # pyflakes\n    \"FLY\",  # fly\n    \"G\",  # logging-format\n    # \"FBT\",  # flake8-boolean-trap\n    # \"FIX\",  # has fixme\n    \"FURB\",  # refurb\n    \"G\",  # logging-format\n    \"I\",  # isort\n    \"ICN\",  # implicit-conv\n    \"INT\",  # flake8-gettext\n    \"ISC\",  # implicit-str-concat\n    \"LOG\",  # logging\n    # \"N\",  # naming\n    \"NPY\",  # numpy\n    # \"PD\",  # pandas-vet\n    \"PIE\",  # flake8-pie\n    \"PERF\",  # performance\n    \"PLE\",  # pylint error\n    # \"PLR\",  # pylint refactoring\n    \"PLW\",  # pylint warning\n    \"PT\", # pytest style\n    # \"PTH\",  # pathlib\n    \"PYI\",  # pyi\n    \"Q\",  # flake8-quotes\n    # \"RET\",  # flake8-return\n    \"RSE\",  # raise\n    \"RUF\",  # ruff specific\n    # \"S\",  # bandit\n    # \"S608\",  # SQL injection\n    # \"SIM\",  # simplify\n    \"T20\",  # print\n    \"TC\",  # type checking\n    \"TID\",  # tidy imports\n    # \"TRY\",  # try-except-raise\n    \"UP\",  # pyupgrade\n    \"W\",  # pycodestyle\n    \"YTT\",  # flake8-2020\n]\nignore = [\n    \"C408\",  # dict comprehension\n    \"PERF203\",  # try,except within a loop\n    \"PLR2004\",  # magic numbers\n    \"UP031\",  # format specifiers\n]\n\n# complains about iemweb.json\n[tool.ruff.lint.flake8-builtins]\nbuiltins-strict-checking = false\n\n[tool.ruff.lint.per-file-ignores]\n\"{scripts,tests}/**/*.py\" = [\n    \"T20\",  # print\n]\n\"tests/**/*.py\" = [\n    \"S101\",  # assert\n]\n"
  },
  {
    "path": "scripts/00z/asos_high.py",
    "content": "\"\"\"Generate a map of the 00z high temperature.\n\nrun from RUN_0Z.sh\n\"\"\"\n\nfrom datetime import timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.plot import MapPlot\nfrom pyiem.util import logger, utc\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    now = utc().replace(hour=0, minute=0, second=0, microsecond=0)\n    sts = now - timedelta(hours=12)\n    with get_sqlalchemy_conn(\"iem\", rw=False) as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH highs as (\n        SELECT c.iemid,\n        max(tmpf) as calc_high,\n        max(max_tmpf_6hr) as reported_high\n        from current_log c JOIN stations s\n        ON (s.iemid = c.iemid)\n        WHERE valid >= :sts and valid < :ets\n        and s.network ~* 'ASOS'\n        and s.country = 'US' and s.state not in ('HI', 'AK') GROUP by c.iemid\n        )\n\n        select t.id, t.state, ST_x(t.geom) as lon, ST_y(t.geom) as lat,\n        greatest(l.calc_high, l.reported_high) as high from\n        highs l JOIN stations t on (t.iemid = l.iemid)\n        \"\"\"\n            ),\n            conn,\n            params={\"sts\": sts, \"ets\": now},\n            index_col=\"id\",\n        )\n    df = df[df[\"high\"].notnull()]\n    LOG.info(\"found %s observations for %s\", len(df.index), now)\n\n    for sector in [\"iowa\", \"midwest\", \"conus\"]:\n        mp = MapPlot(\n            sector=sector if len(sector) > 2 else \"state\",\n            state=sector if len(sector) == 2 else \"IA\",\n            title=f\"{sts:%-d %b %Y} ASOS 12-00 UTC High Temperature\",\n            subtitle=(\"includes available 18z and 0z 6-hr maxes\"),\n            axisbg=\"white\",\n        )\n        if sector == \"iowa\" or len(sector) == 2:\n            df2 = df[df[\"state\"] == (\"IA\" if len(sector) > 2 else sector)]\n            labels = df2.index.values\n            mp.drawcounties()\n            size = 14\n        else:\n            df2 = df\n            labels = None\n            size = 10\n        mp.plot_values(\n            df2[\"lon\"].values,\n            df2[\"lat\"].values,\n            df2[\"high\"].values,\n            fmt=\"%.0f\",\n            labels=labels,\n            labelbuffer=1,\n            textsize=size,\n        )\n        pqstr = (\n            f\"plot ac {sts:%Y%m%d%H%M} \"\n            f\"summary/{sector.lower()}_asos_0z_high.png \"\n            f\"{sector.lower()}_asos_0z_high.png png\"\n        )\n        LOG.info(pqstr)\n        mp.postprocess(pqstr=pqstr)\n        mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/00z/generate_rtp.py",
    "content": "\"\"\"Generate a First Guess RTP that the bureau can use for their product.\n\ncalled from RUN_10_AFTER.sh for 0, 1, and 2 UTC\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import date, timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.tracker import loadqc\nfrom pyiem.util import logger, utc\n\nLOG = logger()\nJOBS = [\n    {\n        \"wfo\": \"DMX\",\n        \"filename\": \"awos_rtp_00z.shef\",\n        \"networks\": [\"IA_ASOS\", \"ISUSM\", \"IA_DCP\", \"IA_RWIS\"],\n        \"precip_works\": [\"IA_ASOS\", \"IL_ASOS\", \"ISUSM\"],\n        \"limiter\": \"state = :state\",\n        \"filter\": [\"state\", \"IA\"],\n        \"state\": \"IA\",\n    },\n    {\n        \"filename\": \"awos_rtp_00z_dvn.shef\",\n        \"networks\": \"IL_ASOS IA_ASOS ISUSM IA_DCP IL_RWIS IA_RWIS\".split(),\n        \"precip_works\": [\"IA_ASOS\", \"IL_ASOS\", \"ISUSM\"],\n        \"limiter\": \"wfo = :wfo\",\n        \"filter\": [\"wfo\", \"DVN\"],\n        \"wfo\": \"DVN\",\n    },\n]\n\n\ndef pp(val, width, dec):\n    \"\"\"Pretty Print.\"\"\"\n    fmt = f\"%{width}s\"\n    if val is None or pd.isna(val):\n        return fmt % (\"M\",)\n    if 0 < val < 0.009:\n        return fmt % (\"T\",)\n    fmt = f\"%{width}.{dec}f\"\n    return fmt % (val,)\n\n\ndef do_dvn_coop(fh):\n    \"\"\"Special job for DVN.\"\"\"\n    today = date.today()\n    fh.write(\n        f\".BR DVN {today:%m%d} C DH18/TAIRZX/TAIRZN/PPDRZZ/SFDRZZ/SDIRZZ\\n\"\n        \": COOP Reports processed by IEM\\n\"\n    )\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n                select id, name, max_tmpf, min_tmpf, pday, snow, snowd,\n                coop_valid from\n                summary s JOIN stations t on (s.iemid = t.iemid)\n                WHERE t.network ~* 'COOP' and day = :dt and\n                extract(hour from s.coop_valid) between 16 and 19 and\n                t.wfo = 'DVN' and (max_tmpf is not null or min_tmpf is not null\n                or pday is not null or snow is not null or snowd is not null)\n                ORDER by id asc\n                \"\"\"\n            ),\n            {\"dt\": today},\n        )\n        for row in res.mappings():\n            fh.write(\n                f\"{row['id']:5.5s} :{row['name']:24.24s}:\"\n                f\"DH{row['coop_valid'].strftime('%H%M')}/\"\n                f\"{pp(row['max_tmpf'], 4, 0)}/{pp(row['min_tmpf'], 4, 0)}/\"\n                f\"{pp(row['pday'], 5, 2)}/{pp(row['snow'], 5, 1)}/\"\n                f\"{pp(row['snowd'], 5, 0)}\\n\"\n            )\n        fh.write(\".END\\n\\n\")\n\n\ndef fix_isusm(df, yesterday, today):\n    \"\"\"Manually correct this.\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        corrected = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT station, sum(rain_in_tot_qc) from sm_hourly where\n            valid > :yesterday and valid <= :today and\n            station = ANY(:stations) GROUP by station\n            \"\"\"\n            ),\n            conn,\n            params={\n                \"yesterday\": yesterday,\n                \"today\": today,\n                \"stations\": df.index.values.tolist(),\n            },\n            index_col=\"station\",\n        )\n    if corrected.empty:\n        return\n    df.loc[corrected.index, \"sum\"] = corrected[\"sum\"]\n\n\ndef main(job):\n    \"\"\"Go Main Go.\"\"\"\n    qdict = loadqc()\n\n    job[\"ets\"] = utc().replace(hour=0, minute=0, second=0, microsecond=0)\n    job[\"sts12z\"] = job[\"ets\"] + timedelta(hours=-12)\n    job[\"sts6z\"] = job[\"ets\"] + timedelta(hours=-18)\n    job[\"sts24h\"] = job[\"ets\"] + timedelta(days=-1)\n\n    asosfmt = \"%-6s:%-43s: %3s / %3s / %5s\\n\"\n    fmt = \"%-6s:%-43s: %3s / %3s\\n\"\n\n    job[\"badtemps\"] = [sid for sid in qdict if qdict[sid].get(\"tmpf\")]\n    job[\"badprecip\"] = [sid for sid in qdict if qdict[sid].get(\"precip\")]\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        # We get 18 hour highs\n        data = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        SELECT id, round(max(\n            greatest(max_tmpf_6hr, tmpf))::numeric,0) as max_tmpf,\n        count(tmpf) as obs FROM current_log c, stations t\n        WHERE t.iemid = c.iemid and t.network = ANY(:networks) and\n        valid >= :sts6z and valid < :ets and {limiter}\n        and tmpf > -99 and not id = ANY(:badtemps) GROUP by id\n                 \"\"\",\n                limiter=job[\"limiter\"],\n            ),\n            conn,\n            params=job,\n            index_col=\"id\",\n        )\n        # 18 hour low temperature\n        lows = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        SELECT id, round(min(\n            least(min_tmpf_6hr, tmpf))::numeric,0) as min_tmpf,\n        count(tmpf) as obs FROM\n        current_log c JOIN stations t on (t.iemid = c.iemid)\n        WHERE t.network = ANY(:networks) and valid >= :sts6z\n        and valid < :ets and tmpf > -99 and not\n        id = ANY(:badtemps) and {limiter} GROUP by id\n                \"\"\",\n                limiter=job[\"limiter\"],\n            ),\n            conn,\n            params=job,\n            index_col=\"id\",\n        )\n        data[\"min_tmpf\"] = lows[\"min_tmpf\"]\n\n        # 12z to 12z precip\n        pcpn = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        select id as station, sum(precip) from\n        (select id, extract(hour from valid) as hour,\n        max(phour) as precip from current_log c, stations t\n        WHERE t.network = ANY(:networks) and t.iemid = c.iemid\n        and valid >= :sts24h and valid < :ets\n        and not id = ANY(:badprecip) and {limiter}\n        GROUP by id, hour) as foo\n        GROUP by id\n    \"\"\",\n                limiter=job[\"limiter\"],\n            ),\n            conn,\n            params=job,\n            index_col=\"station\",\n        )\n        fix_isusm(pcpn, job[\"sts24h\"], job[\"ets\"])\n        pcpn = pcpn[pcpn[\"sum\"].notna()]\n        data[\"precip\"] = pcpn[\"sum\"]\n\n    with tempfile.NamedTemporaryFile(\"w\", delete=False) as fh:\n        fh.write(\"\\n\\n\\n\")\n        for netid in job[\"networks\"]:\n            nt = NetworkTable(netid)\n            ids = list(nt.sts.keys())\n            ids.sort()\n            for sid, meta in nt.sts.items():\n                if meta[job[\"filter\"][0]] != job[\"filter\"][1]:\n                    ids.remove(sid)\n            if not ids:\n                continue\n            networkname = netid.replace(\"ASOS\", \"AWOS\")\n            precip_on = netid in job[\"precip_works\"]\n            fh.write(\n                f\".BR {job['wfo']} {job['ets']:%m%d} Z DH00/TAIRVS/TAIRVI\"\n                f\"{'/PPDRVZ' if precip_on else ''}\\n\"\n                f\": {networkname} RTP FIRST GUESS PROCESSED BY THE IEM \"\n                f\"AT {utc():%H%M}UTC\\n\"\n                \":   06Z TO 00Z HIGH TEMPERATURE FOR \"\n                f\"{job['sts12z']:%d %b %Y}\\n\"\n                \":   06Z TO 00Z LOW TEMPERATURE FOR \"\n                f\"{job['sts12z']:%d %b %Y}\\n\"\n                \":   00Z YESTERDAY TO 00Z TODAY RAINFALL\\n\"\n                \":   ...BASED ON REPORTED OBS AND ANY 6 HR MAX MIN...\\n\"\n            )\n            for sid in ids:\n                if (\n                    netid == \"IA_ASOS\"\n                    and nt.sts[sid][\"attributes\"].get(\"IS_AWOS\") != \"1\"\n                ):\n                    continue\n                if netid == \"IA_DCP\" and nt.sts[sid][\"name\"].find(\"RAWS\") < 0:\n                    continue\n                my_high = \"M\"\n                my_low = \"M\"\n                my_precip = \"M\"\n                if sid in data.index:\n                    row = data.loc[sid]\n                    if not pd.isna(row[\"max_tmpf\"]):\n                        my_high = int(row[\"max_tmpf\"].round(0))\n                    if not pd.isna(row[\"min_tmpf\"]):\n                        my_low = int(row[\"min_tmpf\"].round(0))\n                    if not pd.isna(row[\"precip\"]):\n                        if 0 < row[\"precip\"] < 0.009:\n                            my_precip = \"T\"\n                        else:\n                            my_precip = f\"{row['precip']:.02f}\"\n                _fmt = asosfmt if precip_on else fmt\n                args = [\n                    sid,\n                    nt.sts[sid][\"name\"],\n                    my_high,\n                    my_low,\n                    my_precip,\n                ]\n                if not precip_on:\n                    args = args[:-1]\n                fh.write(_fmt % tuple(args))\n\n            fh.write(\".END\\n\\n\")\n        if job[\"wfo\"] == \"DVN\":\n            do_dvn_coop(fh)\n\n    cmd = [\n        \"pqinsert\",\n        \"-p\",\n        f\"plot ac {job['ets']:%Y%m%d}0000 {job['filename']} \"\n        f\"{job['filename']} shef\",\n        fh.name,\n    ]\n    LOG.info(\" \".join(cmd))\n    subprocess.call(cmd)\n    os.unlink(fh.name)\n\n\nif __name__ == \"__main__\":\n    for _job in JOBS:\n        main(_job)\n"
  },
  {
    "path": "scripts/12z/asos_low.py",
    "content": "\"\"\"Generate a map of the 12z UTC low temperature.\n\nrun from RUN_SUMMARY.sh\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.plot import MapPlot\nfrom pyiem.util import logger, utc\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    now = utc().replace(hour=0, minute=0, second=0, microsecond=0)\n\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH lows as (\n        SELECT c.iemid,\n        min(tmpf) as calc_low,\n        min(min_tmpf_6hr) as reported_low\n        from current_log c JOIN stations s\n        ON (s.iemid = c.iemid)\n        WHERE valid > :sts and valid < :ets\n        and s.network ~* 'ASOS'\n        and s.country = 'US' and s.state not in ('HI', 'AK') GROUP by c.iemid\n        )\n\n        select t.id, t.state, ST_x(t.geom) as lon, ST_y(t.geom) as lat,\n        least(l.calc_low, l.reported_low) as low from\n        lows l JOIN stations t on (t.iemid = l.iemid)\n        \"\"\"\n            ),\n            conn,\n            params={\"sts\": now, \"ets\": now.replace(hour=12)},\n            index_col=\"id\",\n        )\n    df = df[df[\"low\"].notnull()]\n    LOG.info(\"found %s observations for %s\", len(df.index), now)\n\n    for sector in [\n        \"iowa\",\n        \"midwest\",\n        \"conus\",\n        \"SD\",\n        \"NE\",\n        \"ND\",\n        \"KS\",\n        \"MN\",\n        \"MO\",\n        \"WI\",\n        \"IL\",\n    ]:\n        mp = MapPlot(\n            sector=sector if len(sector) > 2 else \"state\",\n            state=sector if len(sector) == 2 else \"IA\",\n            title=f\"{now:%-d %b %Y} ASOS 01-12 UTC Low Temperature\",\n            subtitle=(\n                \"includes available 6z and 12z 6-hr mins, \"\n                \"does not include 0z observation\"\n            ),\n            axisbg=\"white\",\n        )\n        if sector == \"iowa\" or len(sector) == 2:\n            df2 = df[df[\"state\"] == (\"IA\" if len(sector) > 2 else sector)]\n            labels = df2.index.values\n            mp.drawcounties()\n            size = 14\n        else:\n            df2 = df\n            labels = None\n            size = 10\n        mp.plot_values(\n            df2[\"lon\"].values,\n            df2[\"lat\"].values,\n            df2[\"low\"].values,\n            fmt=\"%.0f\",\n            labels=labels,\n            labelbuffer=1,\n            textsize=size,\n        )\n        pqstr = (\n            f\"plot ac {now:%Y%m%d%H%M} \"\n            f\"summary/{sector.lower()}_asos_12z_low.png \"\n            f\"{sector.lower()}_asos_12z_low.png png\"\n        )\n        LOG.info(pqstr)\n        mp.postprocess(pqstr=pqstr)\n        mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/12z/generate_rtp.py",
    "content": "\"\"\"\nGenerate a RTP product for the weather bureau.\n\nRun from RUN_10_AFTER.sh for 12, 13 and 14 UTC\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.tracker import loadqc\nfrom pyiem.util import utc\n\nJOBS = [\n    {\n        \"wfo\": \"DMX\",\n        \"filename\": \"awos_rtp.shef\",\n        \"networks\": [\"IA_ASOS\", \"ISUSM\", \"IA_DCP\", \"IA_RWIS\"],\n        \"precip_works\": [\"IA_ASOS\", \"IL_ASOS\", \"ISUSM\"],\n        \"limiter\": \"state = :state\",\n        \"filter\": [\"state\", \"IA\"],\n        \"state\": \"IA\",\n    },\n    {\n        \"filename\": \"awos_rtp_dvn.shef\",\n        \"networks\": \"IL_ASOS IA_ASOS ISUSM IA_DCP IL_RWIS IA_RWIS\".split(),\n        \"precip_works\": [\"IA_ASOS\", \"IL_ASOS\", \"ISUSM\"],\n        \"limiter\": \"wfo = :wfo\",\n        \"filter\": [\"wfo\", \"DVN\"],\n        \"wfo\": \"DVN\",\n    },\n]\n\n\ndef fix_isusm(df, yesterday, today):\n    \"\"\"Manually correct this.\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        corrected = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT station, sum(rain_in_tot_qc) from sm_hourly where\n            valid > :yesterday and valid <= :today and\n            station = ANY(:stations) GROUP by station\n            \"\"\"\n            ),\n            conn,\n            params={\n                \"yesterday\": yesterday,\n                \"today\": today,\n                \"stations\": df.index.values.tolist(),\n            },\n            index_col=\"station\",\n        )\n    if corrected.empty:\n        return\n    df.loc[corrected.index, \"sum\"] = corrected[\"sum\"]\n\n\ndef pp(val, width, dec):\n    \"\"\"Pretty Print.\"\"\"\n    fmt = f\"%{width}s\"\n    if val is None or pd.isna(val):\n        return fmt % (\"M\",)\n    if 0 < val < 0.009:\n        return fmt % (\"T\",)\n    fmt = f\"%{width}.{dec}f\"\n    return fmt % (val,)\n\n\ndef do_dvn_coop(fh):\n    \"\"\"Special job for DVN.\"\"\"\n    fh.write(\n        f\".BR DVN {utc():%m%d} C DH07/TAIRZX/TAIRZN/PPDRZZ/SFDRZZ/SDIRZZ\\n\"\n        \": COOP Reports processed by IEM\\n\"\n    )\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n                select id, name, max_tmpf, min_tmpf, pday, snow, snowd,\n                coop_valid from\n                summary s JOIN stations t on (s.iemid = t.iemid)\n                WHERE t.network ~* 'COOP' and day = :dt and\n                extract(hour from s.coop_valid) between 4 and 11 and\n                t.wfo = 'DVN' and (max_tmpf is not null or min_tmpf is not null\n                or pday is not null or snow is not null or snowd is not null)\n                ORDER by id asc\n                \"\"\"\n            ),\n            {\"dt\": utc().date()},\n        )\n        for row in res.mappings():\n            fh.write(\n                f\"{row['id']:5.5s} :{row['name']:24.24s}:\"\n                f\"DH{row['coop_valid'].strftime('%H%M')}/\"\n                f\"{pp(row['max_tmpf'], 4, 0)}/{pp(row['min_tmpf'], 4, 0)}/\"\n                f\"{pp(row['pday'], 5, 2)}/{pp(row['snow'], 5, 1)}/\"\n                f\"{pp(row['snowd'], 5, 0)}\\n\"\n            )\n        fh.write(\".END\\n\\n\")\n\n\ndef main(job):\n    \"\"\"Go Main Go\"\"\"\n    qdict = loadqc()\n\n    # We run at 12z\n    job[\"now12z\"] = utc().replace(hour=12, minute=0, second=0, microsecond=0)\n    job[\"today6z\"] = job[\"now12z\"].replace(hour=6)\n    job[\"today0z\"] = job[\"now12z\"].replace(hour=0)\n    job[\"yesterday6z\"] = job[\"today6z\"] - timedelta(days=1)\n    job[\"yesterday12z\"] = job[\"now12z\"] - timedelta(days=1)\n\n    asosfmt = \"%-6s:%-43s: %3s / %3s / %5s\\n\"\n    fmt = \"%-6s:%-43s: %3s / %3s\\n\"\n\n    job[\"badtemps\"] = [sid for sid in qdict if qdict[sid].get(\"tmpf\")]\n    job[\"badprecip\"] = [sid for sid in qdict if qdict[sid].get(\"precip\")]\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        # 6z to 6z high temperature\n        data = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        SELECT id, round(\n            max(greatest(max_tmpf_6hr, tmpf))::numeric,0) as max_tmpf,\n        count(tmpf) as obs FROM current_log c, stations t\n        WHERE t.iemid = c.iemid and t.network = ANY(:networks) and\n        valid >= :yesterday6z and valid < :today6z and {limiter}\n        and tmpf > -99 and not id = ANY(:badtemps)\n        GROUP by id\n                 \"\"\",\n                limiter=job[\"limiter\"],\n            ),\n            conn,\n            params=job,\n            index_col=\"id\",\n        )\n        # 0z to 12z low temperature\n        lows = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        SELECT id, round(\n            min(least(min_tmpf_6hr, tmpf))::numeric,0) as min_tmpf,\n        count(tmpf) as obs FROM\n        current_log c JOIN stations t on (t.iemid = c.iemid)\n        WHERE t.network = ANY(:networks) and valid >= :today0z\n        and valid < :now12z and tmpf > -99 and not\n        id = ANY(:badtemps) and {limiter} GROUP by id\n                \"\"\",\n                limiter=job[\"limiter\"],\n            ),\n            conn,\n            params=job,\n            index_col=\"id\",\n        )\n        data[\"min_tmpf\"] = lows[\"min_tmpf\"]\n\n        # 12z to 12z precip\n        pcpn = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        select id as station, sum(precip) from\n        (select id, extract(hour from valid) as hour,\n        max(phour) as precip from current_log c, stations t\n        WHERE t.network = ANY(:networks) and t.iemid = c.iemid\n        and valid >= :yesterday12z and valid < :now12z\n        and not id = ANY(:badprecip) and {limiter}\n        GROUP by id, hour) as foo\n        GROUP by id\n    \"\"\",\n                limiter=job[\"limiter\"],\n            ),\n            conn,\n            params=job,\n            index_col=\"station\",\n        )\n        # phour accounting for ISUSM is wrong, so we need to fix\n        fix_isusm(pcpn, job[\"yesterday12z\"], job[\"now12z\"])\n        pcpn = pcpn[pcpn[\"sum\"].notna()]\n        data[\"precip\"] = pcpn[\"sum\"]\n\n    tt = job[\"yesterday6z\"].strftime(\"%d %b %Y\").upper()\n    with tempfile.NamedTemporaryFile(\n        \"w\", encoding=\"utf-8\", delete=False\n    ) as fh:\n        fh.write(\"\\n\\n\\n\")\n        for netid in job[\"networks\"]:\n            nt = NetworkTable(netid)\n            ids = list(nt.sts.keys())\n            ids.sort()\n            for sid, meta in nt.sts.items():\n                if meta[job[\"filter\"][0]] != job[\"filter\"][1]:\n                    ids.remove(sid)\n            if not ids:\n                continue\n            networkname = netid.replace(\"ASOS\", \"AWOS\")\n            precip_on = netid in job[\"precip_works\"]\n            fh.write(\n                f\".BR {job['wfo']} {job['now12z']:%m%d} Z \"\n                \"DH06/TAIRVX/DH12/TAIRVP\"\n                f\"{'/PPDRVZ' if precip_on else ''}\\n\"\n                f\": {networkname} RTP FIRST GUESS \"\n                f\"PROCESSED BY THE IEM AT {utc():%H%M}UTC\\n\"\n                f\":   06Z to 06Z HIGH TEMPERATURE FOR {tt}\\n\"\n                \":   00Z TO 12Z TODAY LOW TEMPERATURE\\n\"\n                \":   12Z YESTERDAY TO 12Z TODAY RAINFALL\\n\"\n                \":   ...BASED ON REPORTED OBS AND ANY 6HR MAX MIN...\\n\"\n            )\n            for sid in ids:\n                if (\n                    netid == \"IA_ASOS\"\n                    and nt.sts[sid][\"attributes\"].get(\"IS_AWOS\") != \"1\"\n                ):\n                    continue\n                if netid == \"IA_DCP\" and nt.sts[sid][\"name\"].find(\"RAWS\") < 0:\n                    continue\n                my_high = \"M\"\n                my_low = \"M\"\n                my_precip = \"M\"\n                if sid in data.index:\n                    row = data.loc[sid]\n                    if not pd.isna(row[\"max_tmpf\"]):\n                        my_high = int(row[\"max_tmpf\"].round(0))\n                    if not pd.isna(row[\"min_tmpf\"]):\n                        my_low = int(row[\"min_tmpf\"].round(0))\n                    if not pd.isna(row[\"precip\"]):\n                        if 0 < row[\"precip\"] < 0.009:\n                            my_precip = \"T\"\n                        else:\n                            my_precip = f\"{row['precip']:.02f}\"\n                _fmt = asosfmt if precip_on else fmt\n                args = [\n                    sid,\n                    nt.sts[sid][\"name\"],\n                    my_high,\n                    my_low,\n                    my_precip,\n                ]\n                if not precip_on:\n                    args = args[:-1]\n                fh.write(_fmt % tuple(args))\n\n            fh.write(\".END\\n\\n\")\n        if job[\"wfo\"] == \"DVN\":\n            do_dvn_coop(fh)\n    pqstr = (\n        f\"plot ac {job['now12z']:%Y%m%d}0000 \"\n        f\"{job['filename']} {job['filename']} shef\"\n    )\n    subprocess.call([\"pqinsert\", \"-p\", pqstr, fh.name])\n    os.unlink(fh.name)\n\n\nif __name__ == \"__main__\":\n    for _job in JOBS:\n        main(_job)\n"
  },
  {
    "path": "scripts/GIS/24h_lsr.py",
    "content": "\"\"\"Dump 24 hour LSRs to a file.\n\nCalled from RUN_5MIN.sh\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nimport zipfile\nfrom datetime import timedelta\n\nimport geopandas as gpd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.util import logger, utc\n\nLOG = logger()\nFIELDS = {\n    \"VALID\": \"str:12\",\n    \"MAG\": \"float\",\n    \"WFO\": \"str:3\",\n    \"TYPECODE\": \"str:1\",\n    \"TYPETEXT\": \"str:40\",\n    \"CITY\": \"str:40\",\n    \"COUNTY\": \"str:40\",\n    \"STATE\": \"str:2\",\n    \"SOURCE\": \"str:40\",\n    \"REMARK\": \"str:200\",\n    \"LON\": \"float\",\n    \"LAT\": \"float\",\n    \"UGC\": \"str:6\",\n    \"UGCNAME\": \"str:128\",\n}\nSCHEMA = {\"geometry\": \"Point\", \"properties\": FIELDS}\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    # We set one minute into the future, so to get expiring warnings\n    # out of the shapefile\n    ets = utc() + timedelta(minutes=+1)\n    with get_sqlalchemy_conn(\"postgis\", rw=False) as conn:\n        df = gpd.read_postgis(\n            \"\"\"\n            SELECT distinct l.geom,\n            to_char(valid at time zone 'UTC', 'YYYYMMDDHH24MI') as VALID,\n            coalesce(magnitude, 0)::float as MAG,\n            l.wfo as WFO,\n            type as TYPECODE,\n            typetext as TYPETEXT,\n            city as CITY,\n            county as COUNTY,\n            l.state as STATE,\n            l.source as SOURCE,\n            substr(coalesce(remark, ''), 1, 200) as REMARK,\n            ST_x(l.geom) as LON,\n            ST_y(l.geom) as LAT,\n            u.ugc as UGC,\n            u.name as UGCNAME\n            from lsrs l LEFT JOIN ugcs u on (l.gid = u.gid)\n            WHERE valid > (now() -'1 day'::interval)\n        \"\"\",\n            conn,\n            index_col=None,\n            geom_col=\"geom\",\n        )\n        LOG.info(\"Got %s rows\", len(df.index))\n    if df.empty:\n        return\n    df.columns = [s.upper() if s != \"geom\" else \"geom\" for s in df.columns]\n    df.to_file(\"lsr_24hour.shp\", schema=SCHEMA, engine=\"fiona\")\n    df.to_file(\"lsr_24hour.geojson\", driver=\"GeoJSON\")\n    df.to_csv(\"lsr_24hour.csv\", index=False)\n\n    with zipfile.ZipFile(\"lsr_24hour.zip\", \"w\", zipfile.ZIP_DEFLATED) as zfh:\n        zfh.write(\"lsr_24hour.shp\")\n        zfh.write(\"lsr_24hour.shx\")\n        zfh.write(\"lsr_24hour.dbf\")\n        with open(\"/opt/iem/data/gis/meta/4326.prj\", encoding=\"ascii\") as fh:\n            zfh.writestr(\"lsr_24hour.prj\", fh.read())\n        zfh.getinfo(\"lsr_24hour.prj\").external_attr = 0o664\n\n    pstr = f\"zip c {ets:%Y%m%d%H%M} gis/shape/4326/us/lsr_24hour.zip bogus zip\"\n    LOG.info(pstr)\n    subprocess.call([\"pqinsert\", \"-i\", \"-p\", pstr, \"lsr_24hour.zip\"])\n    for suffix in [\"geojson\", \"csv\"]:\n        pstr = (\n            f\"data c {ets:%Y%m%d%H%M} \"\n            f\"gis/shape/4326/us/lsr_24hour.{suffix} bogus {suffix}\"\n        )\n        LOG.info(pstr)\n        subprocess.call([\"pqinsert\", \"-i\", \"-p\", pstr, f\"lsr_24hour.{suffix}\"])\n\n\nif __name__ == \"__main__\":\n    with tempfile.TemporaryDirectory() as _tmpdir:\n        os.chdir(_tmpdir)\n        main()\n"
  },
  {
    "path": "scripts/GIS/attribute2shape.py",
    "content": "\"\"\"Write current storm attributes to a shapefile...\n\nRun every minute from RUN_1MIN.sh\n\"\"\"\n\nimport os\nimport subprocess\nimport zipfile\nfrom datetime import timedelta\n\nimport shapefile\nfrom pyiem.database import get_dbconnc\nfrom pyiem.util import logger, utc\n\nLOG = logger()\nINFORMATION = \"\"\"\n   Iowa Environmental Mesonet\n   National Weather Service NEXRAD Storm Attributes Shapefile\n\n*** Warning: This information is provided without warranty and its future\n    availability is not guaranteed by Iowa State University ***\n\nThis file contains a current snapshot of NEXRAD storm attributes from the\nlast received volume scan from each NWS WSR-88D RADAR.  Any storm\nattribute from a volume scan 20+ minutes old is not included.\n\nThe DBF Columns are as follows.\n  - VALID    Timestamp of the NEXRAD Volume Scan YearMonthDayHourMinute\n  - NEXRAD   3 character identifier of the WSR-88D\n  - STORM_ID Local WSR-88D assigned storm attribute ID\n  - AZIMUTH  Direction from north of the attribute in relation to the\n             NEXRAD [degree] 90 == East, 180 == South\n  - RANGE    Distance away from RADAR in miles\n  - TVS      Tornado Vortex Signature, available values below\n             NONE - No TVS detected\n             TVS  - Low Level TVS detected\n             ETVS - Elevated TVS detected\n  - MESO     Mesocyclone, available values below\n             NONE - No MESO Detected\n             3DCO - 3 Dimensional Correlated Shear Detected\n             MESO - Mesocyclone Identified\n             UNCO - Uncorrelated 2-D Shear Detected\n             1-25 - A number between 1 and 25, not sure what this means yet\n  - POSH     Probability of Severe Hail (+0.75\" or larger)\n  - POH      Probability of Hail\n  - MAX_SIZE Maximum Hail Size in inches\n  - VIL      Vertically Integrated Liquid [inches]\n  - MAX_DBZ  Maximum dBZ value\n  - MAX_DBZ_ Height of Maximum dBZ in thousands of feet\n  - TOP      Storm Top in thousands of feet\n  - DRCT     Storm movement direction [degrees from north]\n  - SKNT     Storm movement velocity [knots]\n  - LAT      Convenience replication of the data in the SHP file [deg North]\n  - LON      Convenience replication of the data in the SHP file [deg East]\n\nContact Info:\n  Daryl Herzmann akrherz@iastate.edu 515-294-5978\n\"\"\"\n\n\ndef shpschema():\n    \"\"\"Create the schema\n\n    C is ASCII characters\n    N is a double precision integer limited to around 18 characters in length\n    D is for dates in the YYYYMMDD format,\n         with no spaces or hyphens between the sections\n    F is for floating point numbers with the same length limits as N\n    L is for logical data which is stored in the shapefile's attribute table\n        as a short integer as a 1 (true) or a 0 (false).\n        The values it can receive are 1, 0, y, n, Y, N, T, F\n        or the python builtins True and False\n    \"\"\"\n    shp = shapefile.Writer(\"current_nexattr\")\n    shp.field(\"VALID\", \"C\", 12, 0)\n    shp.field(\"STORM_ID\", \"C\", 2, 0)\n    shp.field(\"NEXRAD\", \"C\", 3, 0)\n    shp.field(\"AZIMUTH\", \"N\", 3, 0)\n    shp.field(\"RANGE\", \"N\", 3, 0)\n    shp.field(\"TVS\", \"C\", 10, 0)\n    shp.field(\"MESO\", \"C\", 10, 0)\n    shp.field(\"POSH\", \"N\", 3, 0)\n    shp.field(\"POH\", \"N\", 3, 0)\n    shp.field(\"MAX_SIZE\", \"F\", 5, 2)\n    shp.field(\"VIL\", \"N\", 3, 0)\n    shp.field(\"MAX_DBZ\", \"N\", 3, 0)\n    shp.field(\"MAX_DBZ_H\", \"F\", 5, 2)\n    shp.field(\"TOP\", \"F\", 9, 2)\n    shp.field(\"DRCT\", \"N\", 3, 0)\n    shp.field(\"SKNT\", \"N\", 3, 0)\n    shp.field(\"LAT\", \"F\", 10, 4)\n    shp.field(\"LON\", \"F\", 10, 4)\n    return shp\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    pgconn, pcursor = get_dbconnc(\"radar\")\n\n    os.chdir(\"/tmp\")\n\n    # Delete anything older than 20 minutes\n    now = utc()\n    ets = now - timedelta(minutes=20)\n\n    shp = shpschema()\n\n    # Less aggressively delete data\n    if now.minute % 10 == 0:\n        pcursor.execute(\n            \"DELETE from nexrad_attributes WHERE valid < %s\",\n            (ets,),\n        )\n    pcursor.execute(\n        \"\"\"\n        SELECT *, valid at time zone 'UTC' as utcvalid,\n        ST_x(geom) as lon, ST_y(geom) as lat from nexrad_attributes\n        WHERE valid > %s\n    \"\"\",\n        (ets,),\n    )\n    LOG.info(\"Found %s rows\", pcursor.rowcount)\n\n    for row in pcursor:\n        shp.point(row[\"lon\"], row[\"lat\"])\n        shp.record(\n            row[\"utcvalid\"].strftime(\"%Y%m%d%H%M\"),\n            row[\"storm_id\"],\n            row[\"nexrad\"],\n            row[\"azimuth\"],\n            row[\"range\"],\n            row[\"tvs\"],\n            row[\"meso\"],\n            row[\"posh\"],\n            row[\"poh\"],\n            row[\"max_size\"],\n            row[\"vil\"],\n            row[\"max_dbz\"],\n            row[\"max_dbz_height\"],\n            row[\"top\"],\n            row[\"drct\"],\n            row[\"sknt\"],\n            row[\"lat\"],\n            row[\"lon\"],\n        )\n\n    if pcursor.rowcount == 0:\n        if now.minute == 1:\n            LOG.warning(\"No NEXRAD attributes found, this may be bad!\")\n        shp.point(0.1, 0.1)\n        shp.record(\n            \"200000000000\",\n            \"XX\",\n            \"XXX\",\n            0,\n            0,\n            \"NONE\",\n            \"NONE\",\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n        )\n    pgconn.close()\n    shp.close()\n    with zipfile.ZipFile(\n        \"current_nexattr.zip\", \"w\", zipfile.ZIP_DEFLATED\n    ) as zfp:\n        zfp.write(\"current_nexattr.shp\")\n        zfp.write(\"current_nexattr.shx\")\n        zfp.write(\"current_nexattr.dbf\")\n        with open(\"/opt/iem/data/gis/meta/4326.prj\", encoding=\"ascii\") as fh:\n            zfp.writestr(\"current_nexattr.prj\", fh.read())\n        zfp.writestr(\"current_nexattr.txt\", INFORMATION)\n        zfp.getinfo(\"current_nexattr.txt\").external_attr = 0o664\n        zfp.getinfo(\"current_nexattr.prj\").external_attr = 0o664\n\n    pstr = (\n        f\"zip c {now:%Y%m%d%H%M} \"\n        \"gis/shape/4326/us/current_nexattr.zip bogus zip\"\n    )\n    subprocess.call([\"pqinsert\", \"-i\", \"-p\", pstr, \"current_nexattr.zip\"])\n\n    for suffix in [\"zip\", \"shp\", \"dbf\", \"shx\"]:\n        os.unlink(f\"current_nexattr.{suffix}\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/GIS/current_ww.shp.xml",
    "content": "<?xml version=\"1.0\"?>\r\n<!--<!DOCTYPE metadata SYSTEM \"http://www.esri.com/metadata/esriprof80.dtd\">-->\r\n<metadata xml:lang=\"en\"><Esri><MetaID>{FE96CD88-E2E3-4F1F-80D8-3DA8C64033D4}</MetaID><CreaDate>20080625</CreaDate><CreaTime>11070300</CreaTime><SyncOnce>FALSE</SyncOnce><SyncDate>20100422</SyncDate><SyncTime>07275900</SyncTime><ModDate>20100422</ModDate><ModTime>07425400</ModTime></Esri><idinfo><native>Red Hat Enterprise Linux 5; PostGIS</native><descript><langdata Sync=\"TRUE\">en</langdata><abstract>Shapefile of National Weather Service issued short and long fuse watch/warning/advisories.  This file is by no means complete, but covers most of the high impact weather statements. See https://mesonet.agron.iastate.edu/info/datasets/vtec.html</abstract><purpose>Provide GIS users with something usable without worry about parsing lots of nasty text formats :)</purpose></descript><citation><citeinfo><origin>REQUIRED: The name of an organization or individual that developed the data set.</origin><pubdate>REQUIRED: The date when the data set is published or otherwise made available for release.</pubdate><title>Current Watch Warnings</title><ftname Sync=\"TRUE\">current_ww</ftname><geoform Sync=\"TRUE\">vector digital data</geoform><onlink Sync=\"TRUE\">\\\\vmware-host\\Shared Folders\\tmp\\current_ww.shp</onlink></citeinfo></citation><timeperd><current>publication date</current><timeinfo><sngdate><caldate>unknown</caldate></sngdate></timeinfo></timeperd><status><progress>In work</progress><update>Continually</update></status><spdom><bounding><westbc Sync=\"TRUE\">-160.552076</westbc><eastbc Sync=\"TRUE\">-75.747459</eastbc><northbc Sync=\"TRUE\">48.493116</northbc><southbc Sync=\"TRUE\">18.250368</southbc></bounding><lboundng><leftbc Sync=\"TRUE\">-160.552076</leftbc><rightbc Sync=\"TRUE\">-75.747459</rightbc><bottombc Sync=\"TRUE\">18.250368</bottombc><topbc Sync=\"TRUE\">48.493116</topbc></lboundng></spdom><keywords><theme><themekt>unknown</themekt><themekey>warnings, nws</themekey></theme></keywords><accconst>None</accconst><useconst>None</useconst><natvform Sync=\"TRUE\">Shapefile</natvform><ptcontac><cntinfo><cntperp><cntper>Daryl Herzmann</cntper><cntorg>Iowa State University</cntorg></cntperp><cntpos>Assistant Scientist</cntpos><cntvoice>515 294 5978</cntvoice><cntemail>akrherz@iastate.edu</cntemail></cntinfo></ptcontac><datacred>National Weather Service</datacred><secinfo><secclass>Unclassified</secclass></secinfo></idinfo><dataIdInfo><envirDesc Sync=\"TRUE\">Microsoft Windows Vista Version 6.1 (Build 7600) ; ESRI ArcCatalog 9.3.1.3000</envirDesc><dataLang><languageCode Sync=\"TRUE\" value=\"en\"></languageCode></dataLang><idCitation><resTitle Sync=\"TRUE\">current_ww</resTitle><presForm><PresFormCd Sync=\"TRUE\" value=\"005\"></PresFormCd></presForm></idCitation><spatRpType><SpatRepTypCd Sync=\"TRUE\" value=\"001\"></SpatRepTypCd></spatRpType><dataExt><geoEle><GeoBndBox esriExtentType=\"native\"><westBL Sync=\"TRUE\">-160.552076</westBL><eastBL Sync=\"TRUE\">-75.747459</eastBL><northBL Sync=\"TRUE\">48.493116</northBL><southBL Sync=\"TRUE\">18.250368</southBL><exTypeCode Sync=\"TRUE\">1</exTypeCode></GeoBndBox></geoEle></dataExt><geoBox esriExtentType=\"decdegrees\"><westBL Sync=\"TRUE\">-160.552076</westBL><eastBL Sync=\"TRUE\">-75.747459</eastBL><northBL Sync=\"TRUE\">48.493116</northBL><southBL Sync=\"TRUE\">18.250368</southBL><exTypeCode Sync=\"TRUE\">1</exTypeCode></geoBox></dataIdInfo><metainfo><langmeta Sync=\"TRUE\">en</langmeta><metstdn Sync=\"TRUE\">FGDC Content Standards for Digital Geospatial Metadata</metstdn><metstdv Sync=\"TRUE\">FGDC-STD-001-1998</metstdv><mettc Sync=\"TRUE\">local time</mettc><metc><cntinfo><cntorgp><cntper>REQUIRED: The person responsible for the metadata information.</cntper><cntorg>REQUIRED: The organization responsible for the metadata information.</cntorg></cntorgp><cntaddr><addrtype>REQUIRED: The mailing and/or physical address for the organization or individual.</addrtype><city>REQUIRED: The city of the address.</city><state>REQUIRED: The state or province of the address.</state><postal>REQUIRED: The ZIP or other postal code of the address.</postal></cntaddr><cntvoice>REQUIRED: The telephone number by which individuals can speak to the organization or individual.</cntvoice></cntinfo></metc><metd Sync=\"TRUE\">20100422</metd><metextns><onlink Sync=\"TRUE\">http://www.esri.com/metadata/esriprof80.html</onlink><metprof Sync=\"TRUE\">ESRI Metadata Profile</metprof></metextns></metainfo><mdLang><languageCode Sync=\"TRUE\" value=\"en\"></languageCode></mdLang><mdStanName Sync=\"TRUE\">ISO 19115 Geographic Information - Metadata</mdStanName><mdStanVer Sync=\"TRUE\">DIS_ESRI1.0</mdStanVer><mdChar><CharSetCd Sync=\"TRUE\" value=\"004\"></CharSetCd></mdChar><mdHrLv><ScopeCd Sync=\"TRUE\" value=\"005\"></ScopeCd></mdHrLv><mdHrLvName Sync=\"TRUE\">dataset</mdHrLvName><distinfo><resdesc Sync=\"TRUE\">Downloadable Data</resdesc><stdorder><digform><digtinfo><transize Sync=\"TRUE\">1.532</transize><dssize Sync=\"TRUE\">1.532</dssize></digtinfo></digform></stdorder></distinfo><distInfo><distributor><distorTran><onLineSrc><orDesc Sync=\"TRUE\">002</orDesc><linkage Sync=\"TRUE\">file://\\\\vmware-host\\Shared Folders\\tmp\\current_ww.shp</linkage><protocol Sync=\"TRUE\">Local Area Network</protocol></onLineSrc><transSize Sync=\"TRUE\">1.532</transSize></distorTran><distorFormat><formatName Sync=\"TRUE\">Shapefile</formatName></distorFormat></distributor></distInfo><spdoinfo><direct Sync=\"TRUE\">Vector</direct><ptvctinf><esriterm Name=\"current_ww\"><efeatyp Sync=\"TRUE\">Simple</efeatyp><efeageom Sync=\"TRUE\">Polygon</efeageom><esritopo Sync=\"TRUE\">FALSE</esritopo><efeacnt Sync=\"TRUE\">365</efeacnt><spindex Sync=\"TRUE\">FALSE</spindex><linrefer Sync=\"TRUE\">FALSE</linrefer></esriterm><sdtsterm Name=\"current_ww\"><sdtstype Sync=\"TRUE\">G-polygon</sdtstype><ptvctcnt Sync=\"TRUE\">365</ptvctcnt></sdtsterm></ptvctinf></spdoinfo><spref><horizsys><cordsysn><geogcsn Sync=\"TRUE\">GCS_North_American_1983</geogcsn></cordsysn><geograph><geogunit Sync=\"TRUE\">Decimal degrees</geogunit><latres Sync=\"TRUE\">0.000000</latres><longres Sync=\"TRUE\">0.000000</longres></geograph><geodetic><horizdn Sync=\"TRUE\">North American Datum of 1983</horizdn><ellips Sync=\"TRUE\">Geodetic Reference System 80</ellips><semiaxis Sync=\"TRUE\">6378137.000000</semiaxis><denflat Sync=\"TRUE\">298.257222</denflat></geodetic></horizsys></spref><refSysInfo><RefSystem><refSysID><identCode Sync=\"TRUE\">GCS_North_American_1983</identCode></refSysID></RefSystem></refSysInfo><spatRepInfo><VectSpatRep><topLvl><TopoLevCd Sync=\"TRUE\" value=\"001\"></TopoLevCd></topLvl><geometObjs Name=\"current_ww\"><geoObjTyp><GeoObjTypCd Sync=\"TRUE\" value=\"001\"></GeoObjTypCd></geoObjTyp><geoObjCnt Sync=\"TRUE\">365</geoObjCnt></geometObjs></VectSpatRep></spatRepInfo><eainfo><detailed Name=\"current_ww\"><enttyp><enttypl Sync=\"TRUE\">current_ww</enttypl><enttypt Sync=\"TRUE\">Feature Class</enttypt><enttypc Sync=\"TRUE\">365</enttypc></enttyp><attr><attrlabl Sync=\"TRUE\">FID</attrlabl><attalias Sync=\"TRUE\">FID</attalias><attrtype Sync=\"TRUE\">OID</attrtype><attwidth Sync=\"TRUE\">4</attwidth><atprecis Sync=\"TRUE\">0</atprecis><attscale Sync=\"TRUE\">0</attscale><attrdef Sync=\"TRUE\">Internal feature number.</attrdef><attrdefs Sync=\"TRUE\">ESRI</attrdefs><attrdomv><udom Sync=\"TRUE\">Sequential unique whole numbers that are automatically generated.</udom></attrdomv></attr><attr><attrlabl Sync=\"TRUE\">Shape</attrlabl><attalias Sync=\"TRUE\">Shape</attalias><attrtype Sync=\"TRUE\">Geometry</attrtype><attwidth Sync=\"TRUE\">0</attwidth><atprecis Sync=\"TRUE\">0</atprecis><attscale Sync=\"TRUE\">0</attscale><attrdef Sync=\"TRUE\">Feature geometry.</attrdef><attrdefs Sync=\"TRUE\">ESRI</attrdefs><attrdomv><udom Sync=\"TRUE\">Coordinates defining the features.</udom></attrdomv></attr><attr><attrlabl Sync=\"TRUE\">ISSUED</attrlabl><attalias Sync=\"TRUE\">ISSUED</attalias><attrtype Sync=\"TRUE\">String</attrtype><attwidth Sync=\"TRUE\">12</attwidth></attr><attr><attrlabl Sync=\"TRUE\">EXPIRED</attrlabl><attalias Sync=\"TRUE\">EXPIRED</attalias><attrtype Sync=\"TRUE\">String</attrtype><attwidth Sync=\"TRUE\">12</attwidth></attr><attr><attrlabl Sync=\"TRUE\">TYPE</attrlabl><attalias Sync=\"TRUE\">TYPE</attalias><attrtype Sync=\"TRUE\">String</attrtype><attwidth Sync=\"TRUE\">2</attwidth><attrdomv><edom><edomv>SV</edomv><edomvd>Severe Thunderstorm</edomvd></edom><edom><edomv>TO</edomv><edomvd>Tornado</edomvd></edom><edom><edomv>MA</edomv><edomvd>Marine</edomvd></edom><edom><edomv>AF</edomv><edomvd>Ashfall</edomvd></edom><edom><edomv>AS</edomv><edomvd>Air Stagnation</edomvd></edom><edom><edomv>AV</edomv><edomvd>Avalanche</edomvd></edom><edom><edomv>BS</edomv><edomvd>Blowing Snow</edomvd></edom><edom><edomv>BW</edomv><edomvd>Brisk Wind</edomvd></edom><edom><edomv>BZ</edomv><edomvd>Blizzard</edomvd></edom><edom><edomv>CF</edomv><edomvd>Coastal Flood</edomvd></edom><edom><edomv>DU</edomv><edomvd>Blowing Dust</edomvd></edom><edom><edomv>DS</edomv><edomvd>Dust Storm</edomvd></edom><edom><edomv>EC</edomv><edomvd>Extreme Cold</edomvd></edom><edom><edomv>EH</edomv><edomvd>Excessive Heat</edomvd></edom><edom><edomv>EW</edomv><edomvd>Extreme Wind</edomvd></edom><edom><edomv>FA</edomv><edomvd>Flood</edomvd></edom><edom><edomv>FF</edomv><edomvd>Flash Flood</edomvd></edom><edom><edomv>FL</edomv><edomvd>Flood</edomvd></edom><edom><edomv>FR</edomv><edomvd>Frost</edomvd></edom><edom><edomv>FZ</edomv><edomvd>Freeze</edomvd></edom><edom><edomv>FG</edomv><edomvd>Dense Fog</edomvd></edom><edom><edomv>FW</edomv><edomvd>Red Flag</edomvd></edom><edom><edomv>GL</edomv><edomvd>Gale</edomvd></edom><edom><edomv>HF</edomv><edomvd>Hurricane Force Wind</edomvd></edom><edom><edomv>HI</edomv><edomvd>Inland Hurricane Wind</edomvd></edom><edom><edomv>HS</edomv><edomvd>Heavy Snow</edomvd></edom><edom><edomv>HP</edomv><edomvd>Heavy Sleet</edomvd></edom><edom><edomv>HT</edomv><edomvd>Heat</edomvd></edom><edom><edomv>HU</edomv><edomvd>Hurricane</edomvd></edom><edom><edomv>HW</edomv><edomvd>High Wind</edomvd></edom><edom><edomv>HY</edomv><edomvd>Hydrologic</edomvd></edom><edom><edomv>HZ</edomv><edomvd>Hard Freeze</edomvd></edom><edom><edomv>IS</edomv><edomvd>Ice Storm</edomvd></edom><edom><edomv>IP</edomv><edomvd>Sleet</edomvd></edom><edom><edomv>LB</edomv><edomvd>Lake Effect Snow and Blowing Snow</edomvd></edom><edom><edomv>LE</edomv><edomvd>Lake Effect Snow</edomvd></edom><edom><edomv>LO</edomv><edomvd>Low Water</edomvd></edom><edom><edomv>LS</edomv><edomvd>Lakeshore Flood</edomvd></edom><edom><edomv>LW</edomv><edomvd>Lake Wind</edomvd></edom><edom><edomv>MF</edomv><edomvd>Marine Dense Fog</edomvd></edom><edom><edomv>MS</edomv><edomvd>Marine Dense Smoke</edomvd></edom><edom><edomv>MH</edomv><edomvd>Marine Ashfall</edomvd></edom><edom><edomv>RB</edomv><edomvd>Small Craft for Rough Bar</edomvd></edom><edom><edomv>RH</edomv><edomvd>Radiological Hazard</edomvd></edom><edom><edomv>SB</edomv><edomvd>Snow and Blowing Snow</edomvd></edom><edom><edomv>SC</edomv><edomvd>Small Craft</edomvd></edom><edom><edomv>SE</edomv><edomvd>Hazardous Seas</edomvd></edom><edom><edomv>SI</edomv><edomvd>Small Craft for Winds</edomvd></edom><edom><edomv>SM</edomv><edomvd>Dense Smoke</edomvd></edom><edom><edomv>SN</edomv><edomvd>Snow</edomvd></edom><edom><edomv>SR</edomv><edomvd>Storm</edomvd></edom><edom><edomv>SU</edomv><edomvd>High Surf</edomvd></edom><edom><edomv>SW</edomv><edomvd>Small Craft for Hazardous Seas</edomvd></edom><edom><edomv>TI</edomv><edomvd>Inland Tropical Storm Wind</edomvd></edom><edom><edomv>TR</edomv><edomvd>Tropical Storm</edomvd></edom><edom><edomv>TS</edomv><edomvd>Tsunami</edomvd></edom><edom><edomv>TY</edomv><edomvd>Typhoon</edomvd></edom><edom><edomv>UP</edomv><edomvd>Ice Accretion</edomvd></edom><edom><edomv>VO</edomv><edomvd>Volcano</edomvd></edom><edom><edomv>WC</edomv><edomvd>Wind Chill</edomvd></edom><edom><edomv>WI</edomv><edomvd>Wind</edomvd></edom><edom><edomv>WS</edomv><edomvd>Winter Storm</edomvd></edom><edom><edomv>WW</edomv><edomvd>Winter Weather</edomvd></edom><edom><edomv>ZF</edomv><edomvd>Freezing Fog</edomvd></edom><edom><edomv>ZR</edomv><edomvd>Freezing Rain</edomvd></edom></attrdomv></attr><attr><attrlabl Sync=\"TRUE\">GTYPE</attrlabl><attalias Sync=\"TRUE\">GTYPE</attalias><attrtype Sync=\"TRUE\">String</attrtype><attwidth Sync=\"TRUE\">1</attwidth></attr><attr><attrlabl Sync=\"TRUE\">SIG</attrlabl><attalias Sync=\"TRUE\">SIG</attalias><attrtype Sync=\"TRUE\">String</attrtype><attwidth Sync=\"TRUE\">1</attwidth><attrdomv><edom><edomv>W</edomv><edomvd>Warning</edomvd></edom></attrdomv><attrdomv><edom><edomv>Y</edomv><edomvd>Advisory</edomvd></edom></attrdomv><attrdomv><edom><edomv>A</edomv><edomvd>Watch</edomvd></edom></attrdomv><attrdomv><edom><edomv>S</edomv><edomvd>Statement</edomvd></edom></attrdomv><attrdomv><edom><edomv>F</edomv><edomvd>Forecast</edomvd></edom></attrdomv><attrdomv><edom><edomv>O</edomv><edomvd>Outlook</edomvd></edom></attrdomv><attrdomv><edom><edomv>N</edomv><edomvd>Synopsis</edomvd></edom></attrdomv></attr></detailed></eainfo><mdDateSt Sync=\"TRUE\">20100422</mdDateSt></metadata>\r\n"
  },
  {
    "path": "scripts/GIS/wwa2shp.py",
    "content": "\"\"\"Something to dump current warnings to a shapefile.\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nimport zipfile\n\nfrom osgeo import ogr\nfrom pyiem.util import utc\n\nogr.UseExceptions()\nPRJFILE = \"/opt/iem/data/gis/meta/4326.prj\"\nXMLFILE = \"/opt/iem/scripts/GIS/current_ww.shp.xml\"\n\n\ndef workflow():\n    \"\"\"Do work.\"\"\"\n    utcnow = utc()\n    fp = \"current_ww\"\n    source = ogr.Open(\n        \"PG:host=iemdb-postgis.local dbname=postgis gssencmode=disable\"\n    )\n\n    out_driver = ogr.GetDriverByName(\"ESRI Shapefile\")\n    out_ds = out_driver.CreateDataSource(f\"{fp}.shp\")\n    out_layer = out_ds.CreateLayer(\"polygon\", None, ogr.wkbPolygon)\n\n    fd = ogr.FieldDefn(\"ISSUED\", ogr.OFTString)\n    fd.SetWidth(12)\n    out_layer.CreateField(fd)\n\n    fd = ogr.FieldDefn(\"EXPIRED\", ogr.OFTString)\n    fd.SetWidth(12)\n    out_layer.CreateField(fd)\n\n    fd = ogr.FieldDefn(\"UPDATED\", ogr.OFTString)\n    fd.SetWidth(12)\n    out_layer.CreateField(fd)\n\n    fd = ogr.FieldDefn(\"INIT_ISS\", ogr.OFTString)\n    fd.SetWidth(12)\n    out_layer.CreateField(fd)\n\n    fd = ogr.FieldDefn(\"INIT_EXP\", ogr.OFTString)\n    fd.SetWidth(12)\n    out_layer.CreateField(fd)\n\n    fd = ogr.FieldDefn(\"TYPE\", ogr.OFTString)\n    fd.SetWidth(2)\n    out_layer.CreateField(fd)\n\n    fd = ogr.FieldDefn(\"PHENOM\", ogr.OFTString)\n    fd.SetWidth(2)\n    out_layer.CreateField(fd)\n\n    fd = ogr.FieldDefn(\"GTYPE\", ogr.OFTString)\n    fd.SetWidth(1)\n    out_layer.CreateField(fd)\n\n    fd = ogr.FieldDefn(\"SIG\", ogr.OFTString)\n    fd.SetWidth(1)\n    out_layer.CreateField(fd)\n\n    fd = ogr.FieldDefn(\"WFO\", ogr.OFTString)\n    fd.SetWidth(3)\n    out_layer.CreateField(fd)\n\n    fd = ogr.FieldDefn(\"ETN\", ogr.OFTInteger)\n    out_layer.CreateField(fd)\n\n    fd = ogr.FieldDefn(\"STATUS\", ogr.OFTString)\n    fd.SetWidth(3)\n    out_layer.CreateField(fd)\n\n    fd = ogr.FieldDefn(\"NWS_UGC\", ogr.OFTString)\n    fd.SetWidth(6)\n    out_layer.CreateField(fd)\n\n    fd = ogr.FieldDefn(\"FL_NWSLI\", ogr.OFTString)\n    fd.SetWidth(5)\n    out_layer.CreateField(fd)\n\n    sql = f\"\"\"\n     SELECT geom, 'P' as gtype, significance, wfo, status, eventid,\n     null as ugc, phenomena,\n     to_char(expire at time zone 'UTC', 'YYYYMMDDHH24MI') as utcexpire,\n     to_char(issue at time zone 'UTC', 'YYYYMMDDHH24MI') as utcissue,\n     to_char(polygon_begin at time zone 'UTC', 'YYYYMMDDHH24MI') as utcupdated,\n     to_char(issue at time zone 'UTC', 'YYYYMMDDHH24MI') as utc_prodissue,\n     to_char(init_expire at time zone 'UTC', 'YYYYMMDDHH24MI')\n         as utc_init_expire,\n     hvtec_nwsli\n     from sbw_{utcnow.year} WHERE\n     polygon_begin <= '{utcnow}' and polygon_end > '{utcnow}'\n\n    UNION\n\n     SELECT u.simple_geom as geom, 'C' as gtype, significance, w.wfo, status,\n     eventid, u.ugc, phenomena,\n     to_char(expire at time zone 'UTC', 'YYYYMMDDHH24MI') as utcexpire,\n     to_char(issue at time zone 'UTC', 'YYYYMMDDHH24MI') as utcissue,\n     to_char(updated at time zone 'UTC', 'YYYYMMDDHH24MI') as utcupdated,\n     to_char(product_issue at time zone 'UTC', 'YYYYMMDDHH24MI')\n         as utc_prodissue,\n     to_char(init_expire at time zone 'UTC', 'YYYYMMDDHH24MI')\n         as utc_init_expire,\n     hvtec_nwsli\n     from warnings_{utcnow.year} w JOIN ugcs u on (u.gid = w.gid) WHERE\n     expire > '{utcnow}' and w.gid is not null\n    \"\"\"\n\n    data = source.ExecuteSQL(sql)\n\n    while True:\n        feat = data.GetNextFeature()\n        if not feat:\n            break\n        geom = feat.GetGeometryRef()\n        if geom is None:\n            continue\n        # at 0.001 we had marine zones disappear!\n        geom = geom.Simplify(0.0001)\n\n        featDef = ogr.Feature(out_layer.GetLayerDefn())\n        featDef.SetGeometry(geom)\n        featDef.SetField(\"GTYPE\", feat.GetField(\"gtype\"))\n        featDef.SetField(\"TYPE\", feat.GetField(\"phenomena\"))\n        featDef.SetField(\"PHENOM\", feat.GetField(\"phenomena\"))\n        featDef.SetField(\"ISSUED\", feat.GetField(\"utcissue\"))\n        featDef.SetField(\"EXPIRED\", feat.GetField(\"utcexpire\"))\n        featDef.SetField(\"UPDATED\", feat.GetField(\"utcupdated\"))\n        featDef.SetField(\"INIT_ISS\", feat.GetField(\"utc_prodissue\"))\n        featDef.SetField(\"INIT_EXP\", feat.GetField(\"utc_init_expire\"))\n        featDef.SetField(\"SIG\", feat.GetField(\"significance\"))\n        featDef.SetField(\"WFO\", feat.GetField(\"wfo\"))\n        featDef.SetField(\"STATUS\", feat.GetField(\"status\"))\n        featDef.SetField(\"ETN\", feat.GetField(\"eventid\"))\n        featDef.SetField(\"NWS_UGC\", feat.GetField(\"ugc\"))\n        featDef.SetField(\"FL_NWSLI\", feat.GetField(\"hvtec_nwsli\"))\n\n        out_layer.CreateFeature(featDef)\n        feat.Destroy()\n\n    source.Destroy()\n    out_ds.Destroy()\n\n    with zipfile.ZipFile(\"current_ww.zip\", \"w\", zipfile.ZIP_DEFLATED) as z:\n        z.write(\"current_ww.shp\")\n        with open(XMLFILE, encoding=\"ascii\") as fh:\n            z.writestr(\"current_ww.shp.xml\", fh.read())\n        z.write(\"current_ww.shx\")\n        z.write(\"current_ww.dbf\")\n        with open(PRJFILE, encoding=\"ascii\") as fh:\n            z.writestr(\"current_ww.prj\", fh.read())\n\n    cmd = [\n        \"pqinsert\",\n        \"-p\",\n        (\n            f\"zip c {utcnow:%Y%m%d%H%M} gis/shape/4326/us/current_ww.zip \"\n            \"bogus zip\"\n        ),\n        \"current_ww.zip\",\n    ]\n    subprocess.call(cmd)\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    with tempfile.TemporaryDirectory() as tempdir:\n        os.chdir(tempdir)\n        workflow()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/RUN_0Z.sh",
    "content": "# Ensure this is actually being run at 00z, since crontab is in CST/CDT\nHH=$(date -u +%H)\nif [ \"$HH\" -ne \"00\" ]\n    then\n        exit\nfi\n\npython dbutil/xcheck_SFQ.py\npython hads/assign_has_hml.py\n\ncd util\npython make_archive_baseline.py\n\ncd ../00z\n# Wait a bit, so that more obs can come in\nsleep 600\npython asos_high.py\n\ncd ../ncei\npython ingest_climdiv.py &\n\ncd ../iemre\n# need to run daily analysis for climodat estimator to then work\npython daily_analysis.py --date=$(date +'%Y-%m-%d') --domain=conus\npython daily_analysis.py --date=$(date --date='1 day ago' +'%Y-%m-%d') --domain=europe\n\ncd ../climodat\npython sync_coop_updates.py\npython daily_estimator.py --date=$(date +'%Y-%m-%d')\n\ncd ../asos\npython cf6_to_iemaccess.py\n\ncd ../ingestors\npython elnino.py\n\n# nexrad N0R and N0Q composites\ncd ../summary\npython max_reflect.py --valid=$(date -u --date '1 days ago' +'%Y-%m-%dT00:00:00')\n\ncd ../nldas\npython process_nldasv2_noah.py --date=$(date -u --date '5 days ago' +'%Y-%m-%d') &\n\ncd ../qc\npython check_n0q.py --date=$(date -u --date '1 days ago' +'%Y-%m-%d')\n\ncd ../climodat\npython nldas_extract.py --valid=$(date -u --date '6 days ago' +'%Y-%m-%d')\n\ncd ../iemre\n# We have hopefully gotten a refreshed 12z stage4 file, so we chunk it again\npython stage4_12z_adjust.py --date=$(date +'%Y-%m-%d')\n# Run precip ingest to copy this to IEMRE\npython precip_ingest.py --valid12z=$(date +'%Y-%m-%dT12:00:00')\n# grid rsds using ERA5Land for 8 days ago, to be safe\npython grid_rsds.py --date=$(date -u --date '8 days ago' +'%Y-%m-%d')\n"
  },
  {
    "path": "scripts/RUN_0Z_ERA5LAND.sh",
    "content": "# ERA5Land is very slow to download, so we need to isolate this processing\nHH=$(date -u +%H)\nif [ \"$HH\" -ne \"00\" ]\n    then\n        exit\nfi\nD6=$(date -u --date '6 days ago' +'%Y-%m-%d')\nD7=$(date -u --date '7 days ago' +'%Y-%m-%d')\n\ncd era5\npython fetch_era5.py --date=$D6\n\ncd ../climodat\npython era5land_extract.py --date=$D7\n\n# So fetch_era5 got files from six days ago from 1z on\ncd ../iemre\nfor domain in \"europe\" \"sa\" \"china\"; do\n    for hr in {0..23}; do\n        python precip_ingest.py --domain=$domain --valid=\"${D6}T${hr}:00:00\"\n    done\ndone\n\n# We are generally happy with rsds and soilt, so we need those reprocessed\nfor domain in \"conus\" \"europe\" \"sa\" \"china\"; do\n    for hr in {0..23}; do\n        python hourly_analysis.py --domain=$domain --valid=\"${D6}T${hr}:00:00\"\n    done\n    # D7 daily should be in good shape now for all domains?\n    python daily_analysis.py --domain=$domain --date=\"${D7}\"\ndone\n\ncd ../isusm\npython fix_soil4t.py --date=\"${D7}\"\n"
  },
  {
    "path": "scripts/RUN_10MIN.sh",
    "content": "# Run every 10 minutes please\n\ncd current\npython vsby.py\npython today_precip.py\npython today_gust.py\npython temperature.py\npython today_high.py\npython rwis_station.py\n\ncd ../hads\npython process_hads_inbound.py &\n\ncd ../dbutil\ntimeout -v 540 python asos2archive.py &\ntimeout -v 540 python rwis2archive.py &\n\ncd ../ingestors\npython dot_truckcams.py &\n\ncd dotcams\npython ingest_dot_webcams.py &\n\ncd ../../summary\npython update_dailyrain.py\n\ncd ../isusm\npython isusm2rr5.py\n\ncd ../outgoing\npython madis2csv.py\n"
  },
  {
    "path": "scripts/RUN_10_AFTER.sh",
    "content": "#\n# We are run at :10 after the hour, some of these processes are intensive\n#\nYYYY=$(date -u +'%Y')\nMM=$(date -u +'%m')\nDD=$(date -u +'%d')\nHH=$(date -u +'%H')\nHH=${HH#0}\nLHH=$(date +'%H')\n\npython cache/midwest_winter_roads.py &\npython dl/download_ndfd.py &\n\n# Run at 0, 1, and 2 UTC\nif [[ $HH -eq 0 || $HH -eq 1 || $HH -eq 2 ]]\nthen\n    python 00z/generate_rtp.py\nfi\n\n# Run at 12, 13, and 14 UTC\nif [[ $HH -eq 12 || $HH -eq 13 || $HH -eq 14 ]]\nthen\n    python 12z/generate_rtp.py\nfi\n\ncd mrms\n# MRMS hourly totals arrive shortly after the top of the hour\nif [ $LHH -eq \"00\" ]\nthen\n    python merge_mrms_q3.py\t--date=$(date --date '1 days ago' +'%Y-%m-%d')\nelse\n    python merge_mrms_q3.py --date=$(date +'%Y-%m-%d')\nfi\n# QC comes about an hour delayed, so rerun the previous day\nif [ $LHH -eq \"03\" ]\nthen\n    python merge_mrms_q3.py\t--date=$(date --date '1 days ago' +'%Y-%m-%d')\nfi\n# Special processing for DEP, to run at 5 PM, as DEP runs at 6 PM\nif [ $LHH -eq \"17\" ]\nthen\n    python merge_mrms_q3.py\t--date=$(date +'%Y-%m-%d') --for-dep\nfi\n\ncd ../ingestors/other\npython feel_ingest.py &\n\ncd ../../iemre\npython merge_ifc.py --date=$(date +'%Y-%m-%d')\nif [ $LHH -eq \"01\" ]\nthen\n    python merge_ifc.py --date=$(date --date '1 day ago' +'%Y-%m-%d')\nfi\n\nif [ $HH -eq 12 ]\nthen\n    cd ../current\n    python mrms_today_total.py --date=$(date --date '1 day ago' +'%Y-%m-%d')\nfi\n\n# We have troubles with IEMRE daily_analysis running timely at midnight, so\n# we run at 11 PM for today as well\nif [ $LHH -eq \"23\" ]\nthen\n    python daily_analysis.py --date=$(date +'%Y-%m-%d') --domain=conus\n    python grid_rsds.py\t--date=$(date +'%Y-%m-%d')\nfi\n\nif [ $LHH -eq \"05\" ]\nthen\n    cd ../coop\n    python cfs_extract.py &\nfi\n\ncd ../plots\n./RUN_PLOTS\n\ncd ../ingestors\npython flux_ingest.py\n\ncd ../nass\nif [ $LHH -eq \"15\" ]\nthen\n    python nass_quickstats.py &\nfi\n\ncd ../ingestors/rwis\npython process_traffic.py &\n\ncd ../../current\npython plot_hilo.py --date=$(date +'%Y-%m-%d')\npython ifc_today_total.py --date=$(date --date '60 minutes ago' +'%Y-%m-%d') --realtime\nif [ $LHH -eq \"01\" ]\nthen\n    python ifc_today_total.py --date=$(date --date '1 days ago' +'%Y-%m-%d')\nfi\npython today_min_windchill.py --date=$(date +'%Y-%m-%d') --realtime\n\ncd ../summary\npython hourly_precip.py\nif [ $LHH -eq \"06\" ]\nthen\n    python max_reflect.py --valid=$(date -u --date '1 days ago' +'%Y-%m-%dT06:00:00') &\nfi\n\ncd ../week\npython plot_obs.py\n\ncd ../iemplot\n./RUN.csh\n\ncd ../iemre\npython hourly_analysis.py --valid=$(date -u +'%Y-%m-%dT%H:00:00')\npython hourly_analysis.py --valid=$(date -u --date '2 hours ago' +'%Y-%m-%dT%H:00:00')\n\ncd ../mrms\npython make_mrms_rasters.py --valid=$(date -u +'%Y-%m-%dT%H:00:00')\n\ncd ../smos\npython ingest_smos.py\n\ncd ../qc\npython check_awos_online.py\n\ncd ../dbutil\npython mine_autoplot.py &\n\ncd ../current\npython q3_xhour.py --hours=6\npython q3_xhour.py --hours=3\npython q3_xhour.py --hours=1\npython mrms_today_total.py --date=$(date +'%Y-%m-%d')\n\ncd ../ua\nif [ $HH -eq 1 ]\nthen\n    python ingest_from_spc.py --valid=${YYYY}-${MM}-${DD}T00:00:00\n    python compute_params.py --year=$YYYY\nfi\nif [ $HH -eq 13 ]\nthen\n    python ingest_from_spc.py --valid=${YYYY}-${MM}-${DD}T12:00:00\n    python compute_params.py --year=$YYYY\nfi\nif [ $HH -eq 19 ]\nthen\n    python ingest_from_spc.py --valid=${YYYY}-${MM}-${DD}T18:00:00\n    python compute_params.py --year=$YYYY\nfi\n\ncd ../mos\npython current_bias.py --model=NAM\npython current_bias.py --model=GFS\npython current_bias.py --model=NBS\n\nif [ $HH -eq 1 ]\nthen\n    cd ../coop\n    python ndfd_extract.py &\n\n    cd ../ndfd\n    python ndfd2netcdf.py --date=$(date -u +'%Y-%m-%d')\n    python plot_temps.py --date=$(date -u +'%Y-%m-%d')\nfi\n\n# Additional hourly_analysis for a number of days ago, to pick up new data\ncd ../iemre\npython hourly_analysis.py --valid=$(date -u --date '1 days ago' +'%Y-%m-%dT%H:00:00')\npython hourly_analysis.py --valid=$(date -u --date '9 days ago' +'%Y-%m-%dT%H:00:00')\npython hourly_analysis.py --valid=$(date -u --date '9 days ago' +'%Y-%m-%dT%H:00:00') --domain=europe\npython hourly_analysis.py --valid=$(date -u --date '9 days ago' +'%Y-%m-%dT%H:00:00') --domain=china\npython hourly_analysis.py --valid=$(date -u --date '9 days ago' +'%Y-%m-%dT%H:00:00') --domain=sa\n"
  },
  {
    "path": "scripts/RUN_12Z.sh",
    "content": "# Ensure this is actually being run at 12z, since crontab is in CST/CDT\nDOW=$(date +%w)\nHH=$(date -u +%H)\nif [ \"$HH\" -ne \"12\" ]\n    then\n        exit\nfi\n\ncd asos\npython cf6_to_iemaccess.py\n\n# On Tuedays, fetch the Sunday update\nif [ \"$DOW\" -eq \"2\" ]\n    then\n        cd ../nass\n        python ingest_iowa_pdf.py --sunday=$(date --date '2 days ago' +'%Y-%m-%d')\nfi\n\ncd ../hads\npython compute_hads_pday.py --date=$(date -u --date '1 days ago' +'%Y-%m-%d')\n\n# Run this twice as to account for some timezones west of Hawaii\ncd ../summary\npython compute_daily.py --date=$(date -u --date '1 days ago' +'%Y-%m-%d')\npython compute_daily.py --date=$(date -u --date '2 days ago' +'%Y-%m-%d')\n\ncd ../dailyb\npython spammer.py\n\ncd ../uscrn\npython compute_uscrn_pday.py --date=$(date --date '1 days ago' +'%Y-%m-%d')\npython compute_uscrn_pday.py --date=$(date --date '7 days ago' +'%Y-%m-%d')\n\ncd ../yieldfx\npython yieldfx_workflow.py\npython dump_hybridmaize.py\n"
  },
  {
    "path": "scripts/RUN_1MIN.sh",
    "content": "# Run every minute!\nstamp=$(date -u --date '5 minutes ago' +'%Y-%m-%dT%H:%M:00')\n\ncd /opt/iem/scripts/sbw\npython raccoon_sbw_to_ppt.py &\n\ncd ../GIS\npython attribute2shape.py &\npython wwa2shp.py &\n\ncd ../ingestors\n\npython parse0002.py &\npython dot_plows.py &\n\ncd other\npython purpleair.py &\npython parse0006.py &\npython parse0010.py &\n\ncd ../../mrms\npython mrms_rainrate_comp.py --valid=${stamp}\npython mrms_lcref_comp.py\n"
  },
  {
    "path": "scripts/RUN_20MIN.sh",
    "content": "# Run every 20 minutes please\n\ncd ingestors/madis\npython to_iemaccess.py --valid=$(date -u --date '2 minutes ago' +'%Y-%m-%dT%H:%M:00')\npython extract_metar.py\n\ncd ../cocorahs\npython cocorahs_data_ingest.py\n\ncd ../../other\npython ot2archive.py\n"
  },
  {
    "path": "scripts/RUN_20_AFTER.sh",
    "content": "# Run at :20 after the hour\n\n# Jobs down below can be a bit slow, so we want these to run for the right\n# hour and so not to collide\ncd dl\npython download_gfs.py --valid=$(date -u --date '6 hours ago' +'%Y-%m-%dT%H'):00:00 &\n\n# Still boggling this timing\npython download_imerg.py --valid=$(date -u --date '4 hours ago' +'%Y-%m-%dT%H:00:00')\npython download_imerg.py --valid=$(date -u --date '4 hours ago' +'%Y-%m-%dT%H:30:00') --realtime\npython download_imerg.py --valid=$(date -u --date '6 hours ago' +'%Y-%m-%dT%H:00:00')\npython download_imerg.py --valid=$(date -u --date '6 hours ago' +'%Y-%m-%dT%H:30:00')\npython download_imerg.py --valid=$(date -u --date '27 hours ago' +'%Y-%m-%dT%H:00:00')\npython download_imerg.py --valid=$(date -u --date '27 hours ago' +'%Y-%m-%dT%H:30:00')\npython download_imerg.py --valid=$(date -u --date '35 hours ago' +'%Y-%m-%dT%H:00:00')\npython download_imerg.py --valid=$(date -u --date '35 hours ago' +'%Y-%m-%dT%H:30:00')\npython download_imerg.py --valid=$(date -u --date '6 months ago' +'%Y-%m-%dT%H:00:00')\npython download_imerg.py --valid=$(date -u --date '6 months ago' +'%Y-%m-%dT%H:30:00')\n\ncd ../plots\n./RUN_PLOTS\n\ncd ../ndfd\npython ndfd2iemre.py &\n\ncd ../isusm\npython agg_1minute.py\n\ncd ../hads\npython compute_hads_phour.py --valid=$(date -u --date '1 hour ago' +'%Y-%m-%dT%H:00:00')\npython compute_hads_pday.py --date=$(date '+%Y-%m-%d')\n\ncd ../ingestors\npython uscrn_ingest.py\n\ncd ../uscrn\npython compute_uscrn_pday.py --date=$(date '+%Y-%m-%d')\n\n# Run later to keep from conflicting with RUN_20MIN.sh to_iemaccess.py\ncd ../ingestors/madis\npython extract_hfmetar.py --hours=0\n\n# Reprocess day old HADS\ncd ../../hads\npython compute_hads_phour.py --valid=$(date -u --date '24 hours ago' +'%Y-%m-%dT%H:00:00')\n"
  },
  {
    "path": "scripts/RUN_2AM.sh",
    "content": "#!/bin/sh\nDD=$(date +%d)\n\ncd mrms\n# Meh, midnight seemed to be too early for this to run\npython copy_daily_24h.py --date=$(date +'%Y-%m-%d')\n\ncd ../isusm\nbash run_plots.sh\npython backfill_summary.py --date=$(date --date '1 days ago' +'%Y-%m-%d')\npython backfill_summary.py --date=$(date --date '2 days ago' +'%Y-%m-%d')\nif [ $DD -eq \"07\" ]\n    then\n        python nmp_monthly_email.py\nfi\npython fix_high_low.py --date=$(date --date '1 days ago' +'%Y-%m-%d')\npython fix_high_low.py --date=$(date --date '10 days ago' +'%Y-%m-%d')\n\ncd ../ua\n# Only run on Mondays to match upstream data availability\nif [ \"$(date +%u)\" -eq \"1\" ]\n    then\n    python igra2_ingest.py &\nfi\n\ncd ../swat\npython swat_realtime.py &\n\n# Run the climodat estimator to get sites that are valid at midnight\ncd ../climodat\npython daily_estimator.py --date=$(date --date '1 days ago' +'%Y-%m-%d')\npython compute_climate.py --date=$(date --date '1 days ago' +'%Y-%m-%d')\n\n# Look for stuff we missed with noaaport ingest\ncd ../rtma\npython rtma_backfill.py --date=$(date --date '3 days ago' +'%Y-%m-%d')\n\ncd ../climodat\nbash run.sh &\n\ncd ../coop\nif [ $DD -eq \"01\" ]\n    then\n    python first_guess_for_harry.py\nfi\n\ncd ../util\nif [ $DD -eq \"02\" ]\n    then\n        bash monthly.sh $(date --date '3 days ago' +'%y %m')\nfi\n\ncd ../dl\nif [ $DD -eq \"09\" ]\n    then\n         python download_narr.py --year=$(date --date '13 days ago' +%Y) --month=$(date --date '13 days ago' +%m) &\nfi\npython fetch_power.py --year=$(date --date '7 days ago' +'%Y') --domain=conus\npython fetch_power.py --year=$(date --date '7 days ago' +'%Y') --domain=china\npython fetch_power.py --year=$(date --date '7 days ago' +'%Y') --domain=europe\npython fetch_power.py --year=$(date --date '7 days ago' +'%Y') --domain=sa\ncd ../climodat\npython power_extract.py &\n\ncd ../cache\npython warn_cache.py &\n\ncd ../dbutil\npython clean_afos.py\npython clean_telemetry.py\npython clean_mos.py &\npython compute_hads_sts.py\npython clean_unknown_hads.py\npython unknown_stations.py\n\ncd ../ingestors/ncei\nif [ $DD -eq \"15\" ]\n    then\n    python ingest_fisherporter.py\nfi\n\ncd ../../windrose\npython daily_drive_network.py &\n\ncd ../yieldfx\npython psims_baseline.py --date=$(date --date '1 days ago' +'%Y-%m-%d')\npython psims_baseline.py --date=$(date --date '8 days ago' +'%Y-%m-%d')\n\ncd ../prism\npython ingest_prism.py --date=$(date --date '7 days ago' +'%Y-%m-%d')\npython ingest_prism.py --date=$(date --date '60 days ago' +'%Y-%m-%d')\npython ingest_prism.py --date=$(date --date '365 days ago' +'%Y-%m-%d')\n\ncd ../hads\npython sync_idpgis.py\n"
  },
  {
    "path": "scripts/RUN_40_AFTER.sh",
    "content": "# Run at 40 minutes after the hour, there are some expensive scripts here\n\nDT6=\"$(date -u --date '6 hours ago' +'%Y-%m-%dT%H'):00:00\"\nDT=\"$(date -u --date '1 hour' +'%Y-%m-%dT%H'):00:00\"\nDT12=\"$(date -u --date '12 hours ago' +'%Y-%m-%dT%H'):00:00\"\n\ncd dl\npython download_ffg.py &\n(python download_hrrr_rad.py ; python download_hrrr_tsoil.py) &\npython download_nam.py --valid=$(date -u --date '3 hours ago' +'%Y-%m-%dT%H'):00:00 &\n\ncd ../rtma\npython wind_power.py &\n\ncd ../iemre\npython use_ifs.py --valid=$DT\npython use_ifs.py --valid=$DT12 &\n\ncd ../qc\npython check_webcams.py\npython check_isusm_online.py\n\ncd ../iemplot\n./RUN.csh\n\ncd ../ingestors/squaw\npython ingest_squaw.py\n\npython /opt/iem/scripts/scan/scan_ingest.py &\n\ncd ../madis\npython extract_madis.py\npython extract_hfmetar.py --hours=0 &\n\ncd ../cocorahs\npython cocorahs_stations.py --newerthan=$(date --date '7 days ago' +'%Y-%m-%d')T00:00:00\n\ncd ../../plots\n./RUN_PLOTS\ncd black\n./surfaceContours.csh\n\ncd ../../model\n# set above incase this bleeds into the next hour\npython motherlode_ingest.py --valid=$DT6\n"
  },
  {
    "path": "scripts/RUN_50_AFTER.sh",
    "content": "# cronscript for 50 minutes after the hour\n\npython dl/download_rtma_ru.py --valid=$(date -u --date '1 hour ago' +'%Y-%m-%dT%H'):00:00 &\n\npython dl/download_ndfd.py &\n\ncd ingestors/madis\npython to_iemaccess.py --valid=$(date -u --date '1 hour ago' +'%Y-%m-%dT%H:%M:00')\npython to_iemaccess.py --valid=$(date -u --date '3 hours ago' +'%Y-%m-%dT%H:%M:00')\npython extract_hfmetar.py --hours=2 &\n\n\ncd ../../gfs\npython gfs2iemre.py --valid=$(date -u --date '7 hours ago' +'%Y-%m-%dT%H'):00:00 &\n\n# Run HRRR radiation ingest at 10 PM, so that we have this available\n# for ISUSM et al\nHH=$(date +%H)\nif [ \"$HH\" -eq \"22\" ]\n    then\n        cd ../climodat\n        python hrrr_solarrad.py --date=$(date +'%Y-%m-%d')\nfi\n\n# END\n"
  },
  {
    "path": "scripts/RUN_59_AFTER.sh",
    "content": "# Run at :59 after the hour, some stuff to get a jump on the next hour\ncd ingestors/madis\npython extract_hfmetar.py --hours=0 &\n\ncd ../../plots\ncsh MW_mesonet.csh\ncsh RUN_PLOTS\n\ncd ../iemplot\ncsh RUN.csh\n"
  },
  {
    "path": "scripts/RUN_5MIN.sh",
    "content": "# Run every 5 minutes...\nVALID=$(date -u +'%Y-%m-%dT%H:%M'):00\n\ncd cache\npython nws_wawa_archive.py &\n\ncd ../isusm\npython agg_precip.py &\npython csv2ldm.py &\n\ncd ../roads\npython archive_roadsplot.py --valid=$VALID &\npython ingest_roads_rest.py &\n\ncd ../ingestors/ifc\npython ingest_ifc_precip.py &\n\ncd ../../dl\npython radar_composite.py --valid=$VALID &\n\ncd ../GIS\npython 24h_lsr.py\n\ncd ../current\npython lsr_snow_mapper.py &\n\ncd ../ingestors/rwis\npython process_rwis.py &\npython process_soil.py\n\ncd ../../sbw\npython compute_shared_border_pct.py --year=$(date -u +%Y)\n"
  },
  {
    "path": "scripts/RUN_CLIMODAT_STATE.sh",
    "content": "# Pick a sequential state\nSTATE=$(python util/pick_state.py)\n# 1. Ensure database has entries between start and end dates\npython climodat/check_database.py --state=$STATE\n# 2. Recompute sts, ets\npython dbutil/compute_climate_sts.py --network=${STATE}CLIMATE\npython dbutil/compute_cocorahs_sts.py --network=${STATE}_COCORAHS\npython dbutil/compute_coop_sts.py --network=${STATE}_COOP\n# 3. Use ACIS\npython climodat/use_acis.py --state=$STATE\npython dbutil/compute_climate_sts.py --network=${STATE}CLIMATE\n# 4. Look for any gaps that need estimating\npython climodat/estimate_missing.py --state=$STATE\n# 5. Sync our COOP archives the same\npython coop/use_acis.py --state=$STATE\n# 6. Sync our IEMAccess (ASOS) archives\npython asos/use_acis.py --state=$STATE\n"
  },
  {
    "path": "scripts/RUN_COOP.sh",
    "content": "# COOP related scripts that are run at :10 after between 6-10 AM\n\ncd coop\nbash PREC.sh\npython plot_precip_12z.py --date=$(date +%Y-%m-%d)\npython year_precip.py\npython month_precip.py\npython day_precip.py\n"
  },
  {
    "path": "scripts/RUN_HRRR_REF.sh",
    "content": "# Run at 30 minutes after the hour\n\ncd hrrr\npython hrrr_jobs.py --valid=$(date -u --date '1 hours ago' +'%Y-%m-%dT%H'):00:00 --is-realtime\n# Reprocess 6 hours ago\npython hrrr_jobs.py --valid=$(date -u --date '6 hours ago' +'%Y-%m-%dT%H'):00:00\n"
  },
  {
    "path": "scripts/RUN_MIDNIGHT.sh",
    "content": "# Runs at Midnight CST/CDT\nDD=$(date -u +'%d')\nMM=$(date -u +'%m')\nYYYY=$(date -u +'%Y')\n\n# Need this done so that certain variables are there for DEP\ncd summary\npython compute_daily.py --date=$(date --date '1 day ago' +'%Y-%m-%d')\n\ncd ../other\npython update_daily_srad.py --date=$(date --date '1 day ago' +'%Y-%m-%d')\n\n# Need this done so that IEMRE daily grids are there for DEP\ncd ../iemre\npython daily_analysis.py --date=$(date --date '1 day ago' +'%Y-%m-%d')\npython daily_analysis.py --date=$(date --date '1 day ago' +'%Y-%m-%d') --domain=sa\n\ncd ../asos\npython adjust_report_type.py --date=$(date -u --date '1 day ago' +'%Y-%m-%d')\n\ncd ../smos\npython plot.py --valid=$(date --date '1 day ago' +'%Y-%m-%d')T12:00:00 --realtime\n\n# Wait a bit before doing this\nsleep 600\ncd ../qc\npython check_station_geom.py\npython check_vtec_eventids.py\npython check_afos.py --date=$(date --date '1 day ago' +'%Y-%m-%d')\n\ncd ../iemre\npython grid_rsds.py --date=$(date --date '1 day ago' +'%Y-%m-%d')\n\ncd ../dbutil\npython set_attribute_phour.py\n\ncd ../hads\npython dedup_hml_forecasts.py --date=$(date --date '1 day ago' +'%Y-%m-%d')\npython raw2obs.py --date=$(date --date '1 day ago' +'%Y-%m-%d')\n\ncd ../mrms\npython mrms_monthly_plot.py\n\n# Assume we have MERRA data by the 28th each month\nif [ $DD -eq \"28\" ]\nthen\n    cd ../dl\n    python fetch_merra.py\n    MM=$(date -u --date '1 month ago' +'%m')\n    YYYY=$(date -u --date '1 month ago' +'%Y')\n    cd ../climodat\n    python merra_solarrad.py --year=$YYYY --month=$MM\nfi\n"
  },
  {
    "path": "scripts/RUN_NOON.sh",
    "content": "###\n# Run at noon local time\n#\ncd smos\npython plot.py --valid=$(date +'%Y-%m-%d')T00:00:00 --realtime\n\ncd ../iemre\n# We hopefully have a 12z 24h file by now\npython stage4_12z_adjust.py --date=$(date +'%Y-%m-%d')\n# Copy the data to IEMRE hourly\npython precip_ingest.py --valid12z=$(date +'%Y-%m-%dT12:00:00')\npython ingest_nohrsc.py --date=$(date +'%Y-%m-%d')\n# Need 12z analyses done for climodat\npython daily_analysis.py --date=$(date +'%Y-%m-%d') --domain=conus\n# Already tomorrow and need ready for DEP china to run\npython daily_analysis.py --date=$(date +'%Y-%m-%d') --domain=china\n\ncd ../prism\n# 1 Dec 2025, we used to have data for yesterday by now, but not anymore\npython ingest_prism.py --date=$(date --date '2 days ago' +'%Y-%m-%d')\n\ncd ../iemre\n# adjusts stage IV hourly file to PRISM reality\npython prism_adjust_stage4.py --date=$(date --date '2 days ago' +'%Y-%m-%d')\n# Prepare for daily analysis update for t-10 days\npython prism_adjust_stage4.py --date=$(date --date '9 days ago' +'%Y-%m-%d')\n# Copies updated stage IV hourly into IEMRE hourly\npython precip_ingest.py --valid12z=$(date --date '2 days ago' +'%Y-%m-%dT12:00:00')\n\ncd ../climodat\npython daily_estimator.py --date=$(date +'%Y-%m-%d')\npython daily_estimator.py --date=$(date --date '2 days ago'  +'%Y-%m-%d')\n# Perhaps some more QC happened, that we now need to pick up\npython daily_estimator.py --date=$(date --date '7 days ago'  +'%Y-%m-%d')\npython compute4regions.py --date=$(date +'%Y-%m-%d')\npython hrrr_solarrad.py --date=$(date --date '2 days ago'  +'%Y-%m-%d')\n# Sync any coop data that may have updated over the past 24 hours\npython sync_coop_updates.py\n\ncd ../iemre\n# Since we have now adjusted the 12z precip 1 day ago, we should rerun\n# iemre for two days ago\npython ingest_nohrsc.py --date=$(date --date '2 days ago' +'%Y-%m-%d')\npython daily_analysis.py --date=$(date --date '2 days ago' +'%Y-%m-%d') --domain=conus\n# NOTE: Careful to align this date with DEP reprocessing at 8 PM\npython ingest_nohrsc.py --date=$(date --date '10 days ago' +'%Y-%m-%d')\n# Updated soil temperature data from ERA5\npython daily_analysis.py --date=$(date --date '10 days ago' +'%Y-%m-%d') --domain=conus\npython daily_analysis.py --date=$(date --date '10 days ago' +'%Y-%m-%d') --domain=sa\npython daily_analysis.py --date=$(date --date '10 days ago' +'%Y-%m-%d') --domain=china\npython daily_analysis.py --date=$(date --date '10 days ago' +'%Y-%m-%d') --domain=europe\n\n# and now recompute climodat statewide/climate from two days ago\ncd ../climodat\npython compute4regions.py --date=$(date --date '2 days ago' +'%Y-%m-%d')\n\n# CFS workflow, first two are for yesterday and we actually run for two\n# days ago\ncd ../cache\nbash download_cpc.sh\n\ncd ../dl\n# NB used for drydown\npython download_cfs.py --date=$(date --date '3 days ago' +'%Y-%m-%d')\npython download_cfs.py --date=$(date --date '4 days ago' +'%Y-%m-%d')\ncd ../yieldfx\npython cfs2iemre_netcdf.py\n"
  },
  {
    "path": "scripts/RUN_STAGE4.sh",
    "content": "# Run Stage IV processing\n# Appears we can run at :59 after and have data\nTSTAMP=$(date -u +'%Y-%m-%dT%H:00:00')\n\ncd dl\npython ncep_stage4.py\n\n# Give the stage IV data time to process thru LDM\nsleep 30\n\ncd ../current\npython stage4_hourly.py --valid=$TSTAMP\npython stage4_today_total.py --date=$(date --date '90 minutes ago' +'%Y-%m-%d') --realtime\npython stage4_xhour.py --valid=$TSTAMP --hours=24 --realtime\npython stage4_xhour.py --valid=$TSTAMP --hours=48 --realtime\n\ncd ../iemre\npython precip_ingest.py --valid=$TSTAMP\npython precip_ingest.py --valid=$(date -u --date '4 hours ago' +'%Y-%m-%dT%H:00:00')\npython precip_ingest.py --valid=$(date -u --date '1 day ago' +'%Y-%m-%dT%H:00:00')\n"
  },
  {
    "path": "scripts/RUN_SUMMARY.sh",
    "content": "\ncd current\npython plot_hilo.py --date=$(date --date '1 day ago' +'%Y-%m-%d')\n\ncd ../12z\npython asos_low.py\n\ncd ../climate\npython today_hilo.py\npython today_rec_hilo.py\n\ncd ../month\npython plot_gdd.py\npython obs_precip.py\npython obs_precip_coop.py\npython plot_avgt.py\npython plot_sdd.py\n\ncd ../season\npython plot_4month_stage4.py\npython plot_cli_jul1_snow.py\n\ncd ../year\npython plot_stage4.py\npython precip.py\npython plot_gdd.py --gddbase=50\npython plot_gdd.py --gddbase=52\npython plot_gdd.py --gddbase=48\n\ncd ../gs\npython plot_gdd.py\n"
  },
  {
    "path": "scripts/asos/adjust_report_type.py",
    "content": "\"\"\"Find some misssed report_type=3\n\nSometimes strange things happen with specials around the time of the routine\nreport type.  This script attempts to find those and fix em.\n\nRun from `RUN_MIDNIGHT.sh` for previous UTC date.\n\nsee akrherz/iem#104\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport click\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn\nfrom pyiem.util import logger, utc\n\nLOG = logger()\n\n\ndef arbpick(asosdb, year, station, gdf):\n    \"\"\"Just pick a date.\"\"\"\n    cursor = asosdb.cursor()\n    for _, row in gdf.iterrows():\n        cursor.execute(\n            f\"UPDATE t{year} SET report_type = 3 where station = %s and \"\n            \"valid = %s\",\n            (station, row[\"max_valid\"]),\n        )\n    cursor.close()\n    asosdb.commit()\n\n\n@click.command()\n@click.option(\n    \"--date\", \"dt\", type=click.DateTime(), required=True, help=\"UTC Date\"\n)\ndef main(dt: datetime):\n    \"\"\"Go.\"\"\"\n    sts = utc(dt.year, dt.month, dt.day)\n    ets = sts + timedelta(hours=24)\n    asosdb = get_dbconn(\"asos\")\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            \"SELECT station, date_trunc('hour', valid) as ts, \"\n            \"sum(case when report_type = 3 then 1 else 0 end) as rcount, \"\n            \"sum(case when report_type = 4 then 1 else 0 end) as scount, \"\n            \"min(valid) as min_valid, max(valid) as max_valid \"\n            \"from alldata where valid >= %s and valid < %s and \"\n            \"report_type in (3, 4) \"\n            \"GROUP by station, ts ORDER by station, ts\",\n            conn,\n            params=(sts, ets),\n        )\n    for station, gdf in df.groupby(\"station\"):\n        # Nothing to do\n        if gdf[\"rcount\"].min() == 1:\n            continue\n        # Happy Station Count\n        if gdf[\"rcount\"].max() == 1 and gdf[\"rcount\"].sum() == 24:\n            continue\n        # Life choices\n        if len(station) == 4 and gdf[\"rcount\"].sum() == 0:\n            arbpick(asosdb, sts.year, station, gdf)\n            continue\n        # Look for situation of having specials, but no routine\n        df2 = gdf[(gdf[\"rcount\"] == 0) & (gdf[\"scount\"] > 0)]\n        if not df2.empty:\n            arbpick(asosdb, sts.year, station, df2)\n            continue\n\n        print(\"Impossible Edge Case?\")\n        print(station)\n        print(gdf)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/asos/cf6_to_iemaccess.py",
    "content": "\"\"\"Merge the CF6 Processed Data.\n\nRun from RUN_12Z.sh, RUN_0Z.sh for past 48 hours of data\n\"\"\"\n\nfrom datetime import date\n\nimport click\nimport pandas as pd\nfrom metpy.units import units\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef comp(old, new):\n    \"\"\"Figure out if this value is new or not.\"\"\"\n    if pd.isnull(new) and pd.isnull(old):\n        return False\n    # If the new value is null, we want this as the value should be null\n    if pd.isnull(new) or pd.isnull(old):\n        return True\n    if old == new:\n        return False\n    if abs(new - old) < 0.01:\n        return False\n    return True\n\n\ndef get_data(dt: date | None) -> pd.DataFrame:\n    \"\"\"Figure out what data we want.\"\"\"\n    params = {}\n    lmt = \"updated > (now() - '48 hours'::interval)\"\n    if dt is not None:\n        lmt = \"valid = :valid\"\n        params[\"valid\"] = dt\n\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        cf6 = pd.read_sql(\n            sql_helper(\n                \"SELECT * from cf6_data where {lmt} ORDER by station ASC\",\n                lmt=lmt,\n            ),\n            conn,\n            params=params,\n        )\n    for col in [\"avg_smph\", \"max_smph\", \"gust_smph\"]:\n        cf6[col.replace(\"smph\", \"sknt\")] = (\n            (units(\"miles/hour\") * cf6[col].values).to(units(\"knots\")).m\n        )\n    LOG.info(\"Found %s CF6 entries for syncing\", len(cf6.index))\n    return cf6\n\n\ndef update_climodat(cf6df, xref, valid):\n    \"\"\"Update iemaccess.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        obs = pd.read_sql(\n            \"select station, high, low, precip from alldata WHERE day = %s\",\n            conn,\n            params=(valid,),\n            index_col=\"station\",\n        )\n    df = cf6df.join(xref, how=\"inner\")\n    if df.empty:\n        return\n    dbconn = get_dbconn(\"coop\")\n    cursor = dbconn.cursor()\n    uvals = 0\n    urows = 0\n    for _station, row in df.iterrows():\n        for clsid in [row[\"climodat_src\"], row[\"climodat_dest\"]]:\n            if clsid not in obs.index:\n                LOG.warning(\"No climodat data for %s[%s]?\", clsid, valid)\n                continue\n            current = obs.loc[clsid]\n            work = []\n            params = []\n            for col in [\"high\", \"low\", \"precip\"]:\n                if not comp(current[col], row[col]):\n                    continue\n                uvals += 1\n                work.append(f\"{col} = %s\")\n                if pd.isna(row[col]):\n                    params.append(None)\n                else:\n                    params.append(\n                        row[col] if col == \"precip\" else int(row[col])\n                    )\n                LOG.info(\"%s %s %s->%s\", clsid, col, current[col], row[col])\n            if not work:\n                continue\n            params.append(clsid)\n            params.append(valid)\n            urows += 1\n            cursor.execute(\n                f\"UPDATE alldata SET {','.join(work)} WHERE station = %s and \"\n                \"day = %s\",\n                params,\n            )\n\n    cursor.close()\n    dbconn.commit()\n    LOG.info(\"%s updated %s values over %s rows\", valid, uvals, urows)\n\n\ndef update_iemaccess(cf6df, valid):\n    \"\"\"Update iemaccess.\"\"\"\n    dbconn = get_dbconn(\"iem\")\n    table = f\"summary_{valid.year}\"\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        # NB: we should not have any of these station IDs in the COOP network\n        obs = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT s.*, t.network,\n            case when length(t.id) = 3 then 'K'||t.id else t.id end\n            as station from {table} s JOIN\n            stations t on (s.iemid = t.iemid) WHERE s.day = :valid and\n            (t.network ~* 'ASOS' or (t.network ~* 'DCP' and length(id) < 5))\n            ORDER by station ASC\n            \"\"\",\n                table=table,\n            ),\n            conn,\n            params={\"valid\": valid},\n            index_col=None,\n        )\n\n    df = cf6df.merge(\n        obs, left_index=True, right_on=\"station\", suffixes=(\"_cf6\", \"_ob\")\n    )\n    obscols = (\n        \"max_tmpf min_tmpf pday snow_ob snowd avg_sknt_ob max_sknt_ob \"\n        \"avg_drct max_gust max_drct\"\n    ).split()\n    cf6cols = (\n        \"high low precip snow_cf6 snowd_12z avg_sknt_cf6 max_sknt_cf6 \"\n        \"avg_drct gust_sknt gust_drct\"\n    ).split()\n    cursor = dbconn.cursor()\n    uvals = 0\n    urows = 0\n    for _id, row in df.iterrows():\n        if pd.isnull(row[\"iemid\"]):\n            # Lots of false positives here, like WFOs\n            LOG.info(\"Yikes, station %s has no iemid?\", row[\"station\"])\n            continue\n        work = []\n        params = []\n        for ocol, ccol in zip(obscols, cf6cols, strict=False):\n            if not comp(row[ocol], row[ccol]):\n                continue\n            uvals += 1\n            work.append(f\"{ocol.replace('_ob', '')} = %s\")\n            params.append(None if pd.isna(row[ccol]) else row[ccol])\n        if not work:\n            continue\n        params.append(int(row[\"iemid\"]))\n        params.append(valid)\n        urows += 1\n        cursor.execute(\n            f\"UPDATE {table} SET {','.join(work)} WHERE iemid = %s and \"\n            \"day = %s\",\n            params,\n        )\n\n    cursor.close()\n    dbconn.commit()\n    LOG.info(\"%s updated %s values over %s rows\", valid, uvals, urows)\n\n\ndef build_xref():\n    \"\"\"Build a cross reference\"\"\"\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            with data as (\n                select r.iemid, t.id as climodat_src,\n                t.iemid as climodat_src_iemid from station_threading r JOIN\n                stations t on (r.source_iemid = t.iemid)\n                WHERE end_date is null),\n            agg as (\n                select t.id as climodat_dest, climodat_src, climodat_src_iemid\n                from data d JOIN stations t on (d.iemid = t.iemid)),\n            agg2 as (\n                select climodat_src, climodat_dest,\n                split_part(value, '|', 1) as icao from\n                agg a JOIN station_attributes s on\n                (a.climodat_src_iemid = s.iemid) WHERE value ~* 'ASOS')\n            select climodat_src, climodat_dest,\n            case when length(icao) = 3 then 'K'||icao else icao end as station\n            from agg2\n            \"\"\",\n            conn,\n            index_col=\"station\",\n        )\n    return df\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), help=\"Specific date\")\ndef main(dt: date | None):\n    \"\"\"Go Main Go.\"\"\"\n    cf6 = get_data(dt)\n    xref = build_xref()\n\n    for valid, gdf in cf6.groupby(\"valid\"):\n        update_climodat(gdf.copy().set_index(\"station\"), xref, valid)\n        update_iemaccess(gdf.copy().set_index(\"station\"), valid)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/asos/iem_scraper_example.py",
    "content": "\"\"\"\nExample script that scrapes data from the IEM ASOS download service.\n\nMore help on CGI parameters is available at:\n\n    https://mesonet.agron.iastate.edu/cgi-bin/request/asos.py?help\n\nRequires: Python 3\n\"\"\"\n\nimport json\nimport os\nimport sys\nimport time\nfrom datetime import datetime, timedelta\nfrom urllib.request import urlopen\n\n# Number of attempts to download data\nMAX_ATTEMPTS = 6\n# HTTPS here can be problematic for installs that don't have Lets Encrypt CA\nSERVICE = \"http://mesonet.agron.iastate.edu/cgi-bin/request/asos.py?\"\n\n\ndef download_data(uri):\n    \"\"\"Fetch the data from the IEM\n\n    The IEM download service has some protections in place to keep the number\n    of inbound requests in check.  This function implements an exponential\n    backoff to keep individual downloads from erroring.\n\n    Args:\n      uri (string): URL to fetch\n\n    Returns:\n      string data\n    \"\"\"\n    attempt = 0\n    while attempt < MAX_ATTEMPTS:\n        try:\n            data = urlopen(uri, timeout=300).read().decode(\"utf-8\")\n            if data is not None and not data.startswith(\"ERROR\"):\n                return data\n        except Exception as exp:\n            print(f\"download_data({uri}) failed with {exp}\")\n            time.sleep(5)\n        attempt += 1\n\n    print(\"Exhausted attempts to download, returning empty data\")\n    return \"\"\n\n\ndef get_stations_from_filelist(filename):\n    \"\"\"Build a listing of stations from a simple file listing the stations.\n\n    The file should simply have one station per line.\n    \"\"\"\n    if not os.path.isfile(filename):\n        print(f\"Filename {filename} does not exist, aborting!\")\n        sys.exit()\n    with open(filename, encoding=\"ascii\") as fh:\n        stations = [line.strip() for line in fh]\n    return stations\n\n\ndef get_stations_from_networks():\n    \"\"\"Build a station list by using a bunch of IEM networks.\"\"\"\n    stations = []\n    states = (\n        \"AK AL AR AZ CA CO CT DE FL GA HI IA ID IL IN KS KY LA MA MD ME MI MN \"\n        \"MO MS MT NC ND NE NH NJ NM NV NY OH OK OR PA RI SC SD TN TX UT VA VT \"\n        \"WA WI WV WY\"\n    )\n    networks = [f\"{state}_ASOS\" for state in states.split()]\n\n    for network in networks:\n        # Get metadata\n        uri = (\n            \"https://mesonet.agron.iastate.edu/\"\n            f\"geojson/network/{network}.geojson\"\n        )\n        data = urlopen(uri)\n        jdict = json.load(data)\n        for site in jdict[\"features\"]:\n            stations.append(site[\"properties\"][\"sid\"])  # noqa\n    return stations\n\n\ndef download_alldata():\n    \"\"\"An alternative method that fetches all available data.\n\n    Service supports up to 24 hours worth of data at a time.\"\"\"\n    # timestamps in UTC to request data for\n    startts = datetime(2012, 8, 1)\n    endts = datetime(2012, 9, 1)\n    interval = timedelta(hours=24)\n\n    service = SERVICE + \"data=all&tz=Etc/UTC&format=comma&latlon=yes&\"\n\n    now = startts\n    while now < endts:\n        thisurl = service\n        thisurl += now.strftime(\"year1=%Y&month1=%m&day1=%d&\")\n        thisurl += (now + interval).strftime(\"year2=%Y&month2=%m&day2=%d&\")\n        print(f\"Downloading: {now}\")\n        data = download_data(thisurl)\n        outfn = f\"{now:%Y%m%d}.txt\"\n        with open(outfn, \"w\", encoding=\"ascii\") as fh:\n            fh.write(data)\n        now += interval\n\n\ndef main():\n    \"\"\"Our main method\"\"\"\n    # timestamps in UTC to request data for\n    startts = datetime(2012, 8, 1)\n    endts = datetime(2012, 9, 1)\n\n    service = SERVICE + \"data=all&tz=Etc/UTC&format=comma&latlon=yes&\"\n\n    service += startts.strftime(\"year1=%Y&month1=%m&day1=%d&\")\n    service += endts.strftime(\"year2=%Y&month2=%m&day2=%d&\")\n\n    stations = get_stations_from_networks()\n    for station in stations:\n        uri = f\"{service}&station={station}\"\n        print(f\"Downloading: {station}\")\n        data = download_data(uri)\n        outfn = f\"{station}_{startts:%Y%m%d%H%M}_{endts:%Y%m%d%H%M}.txt\"\n        with open(outfn, \"w\", encoding=\"ascii\") as fh:\n            fh.write(data)\n\n\nif __name__ == \"__main__\":\n    download_alldata()\n"
  },
  {
    "path": "scripts/asos/iem_scraper_example2.py",
    "content": "\"\"\"\nAn example script to sequentially download data from a bunch of long term\nASOS sites, for only a few specific variables, and save the result to\nindividual CSV files.\n\nMore help on CGI parameters is available at:\n\n    https://mesonet.agron.iastate.edu/cgi-bin/request/asos.py?help\n\nYou are free to use this however you want.\n\nAuthor: daryl herzmann akrherz@iastate.edu\n\"\"\"\n\nimport os\nfrom datetime import date, datetime, timedelta\n\nimport httpx\n\n\ndef fetch(station_id):\n    \"\"\"Download data we are interested in!\"\"\"\n    localfn = f\"{station_id}.csv\"\n    if os.path.isfile(localfn):\n        print(f\"- Cowardly refusing to over-write existing file: {localfn}\")\n        return\n    print(f\"+ Downloading for {station_id}\")\n    enddt = date.today() + timedelta(days=2)\n    uri = (\n        \"http://mesonet.agron.iastate.edu/cgi-bin/request/asos.py?\"\n        f\"station={station_id}&data=tmpc&year1=1928&month1=1&day1=1&\"\n        f\"year2={enddt.year}&month2={enddt.month}&day2={enddt.day}&\"\n        \"tz=Etc%2FUTC&format=onlycomma&latlon=no&elev=no&missing=M&trace=T&\"\n        \"direct=yes&report_type=3\"\n    )\n    resp = httpx.get(uri, timeout=300)\n    with open(localfn, \"w\", encoding=\"utf-8\") as fh:\n        fh.write(resp.text)\n\n\ndef main():\n    \"\"\"Main loop.\"\"\"\n    # Step 1: Fetch global METAR geojson metadata\n    # https://mesonet.agron.iastate.edu/sites/networks.php\n    resp = httpx.get(\n        \"http://mesonet.agron.iastate.edu/geojson/network/AZOS.geojson\",\n        timeout=60,\n    )\n    geojson = resp.json()\n    for feature in geojson[\"features\"]:\n        station_id = feature[\"id\"]\n        props = feature[\"properties\"]\n        # We want stations with data to today (archive_end is null)\n        if props[\"archive_end\"] is not None:\n            continue\n        # We want stations with data to at least 1943\n        if props[\"archive_begin\"] is None:\n            continue\n        archive_begin = datetime.strptime(props[\"archive_begin\"], \"%Y-%m-%d\")\n        if archive_begin.year > 1943:\n            continue\n        # Horray, fetch data\n        fetch(station_id)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/asos/use_acis.py",
    "content": "\"\"\"\nSync ACIS content to IEM Access for the ASOS sites.\n\"\"\"\n\nimport sys\nimport time\nfrom datetime import date, timedelta\n\nimport click\nimport httpx\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.reference import TRACE_VALUE\nfrom pyiem.util import exponential_backoff, logger\n\nLOG = logger()\nSERVICE = \"http://data.rcc-acis.org/StnData\"\n\n\ndef safe(val):\n    \"\"\"Hack\"\"\"\n    if pd.isnull(val):\n        return None\n    # Multi-day we can't support\n    if isinstance(val, str) and val.endswith(\"A\"):\n        return None\n    try:\n        return float(val)\n    except ValueError:\n        LOG.info(\"failed to convert %s to float, using None\", repr(val))\n    return None\n\n\ndef compare(row, colname):\n    \"\"\"Do we need to update this column?\"\"\"\n    oldval = safe(row[colname])\n    newval = safe(row[f\"a{colname}\"])\n    if newval is not None and colname in [\"high\", \"low\", \"precip\"]:\n        # If we have an estimated flag and ACIS is not None, do things.\n        if row[f\"{'precip' if colname == 'precip' else 'temp'}_estimated\"]:\n            return newval\n    if oldval is None and newval is not None:\n        return newval\n    if newval is not None and oldval != newval:\n        return newval\n    return None\n\n\ndef do(meta, acis_station, interactive):\n    \"\"\"Do the query and work\"\"\"\n    today = date.today()\n    fmt = \"%Y-%m-%d\"\n    payload = {\n        \"sid\": acis_station,\n        \"sdate\": meta[\"attributes\"].get(\n            \"FLOOR\", meta[\"archive_begin\"].strftime(\"%Y-%m-%d\")\n        ),\n        \"edate\": meta[\"attributes\"].get(\"CEILING\", today.strftime(fmt)),\n        \"elems\": [\n            {\"name\": \"maxt\", \"add\": \"t\"},\n            {\"name\": \"mint\"},\n            {\"name\": \"pcpn\", \"add\": \"t\"},\n        ],\n    }\n    if not interactive:\n        payload[\"sdate\"] = (today - timedelta(days=365)).strftime(fmt)\n    LOG.info(\n        \"Call ACIS for: %s[%s %s]\",\n        acis_station,\n        payload[\"sdate\"],\n        payload[\"edate\"],\n    )\n    req = exponential_backoff(httpx.post, SERVICE, json=payload, timeout=30)\n    if req is None:\n        LOG.warning(\"Total download failure for %s\", acis_station)\n        return 0\n    if req.status_code != 200:\n        LOG.warning(\"Got status_code %s for %s\", req.status_code, acis_station)\n        # Give server some time to recover from transient errors\n        time.sleep(60)\n        return 0\n    try:\n        j = req.json()\n    except Exception as exp:\n        LOG.exception(exp)\n        return 0\n    if \"data\" not in j:\n        LOG.info(\"No Data!, content=%s\", req.content)\n        return 0\n    acis = pd.DataFrame(\n        j[\"data\"],\n        columns=\"day amax_tmpf amin_tmpf apday\".split(),\n    )\n    for col in \"amax_tmpf apday\".split():\n        acis[[col, f\"{col}_hour\"]] = pd.DataFrame(\n            acis[col].tolist(),\n            index=acis.index,\n        )\n        # hour values of -1 are missing\n        acis.loc[acis[f\"{col}_hour\"] < 0, f\"{col}_hour\"] = pd.NA\n    # Rectify the name to match IEM database\n    acis = acis.rename(columns={\"amax_tmpf_hour\": \"atemp_hour\"}).replace(\n        {\"T\": TRACE_VALUE, \"M\": pd.NA, \"S\": pd.NA}\n    )\n\n    LOG.info(\"Loaded %s rows from ACIS\", len(acis.index))\n    acis[\"day\"] = pd.to_datetime(acis[\"day\"])\n    acis = acis.set_index(\"day\")\n    pgconn = get_dbconn(\"iem\")\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        obs = pd.read_sql(\n            \"\"\"\n            SELECT day, max_tmpf, min_tmpf, pday\n            from summary WHERE iemid = %s ORDER by day ASC\n            \"\"\",\n            conn,\n            params=(meta[\"iemid\"],),\n            index_col=\"day\",\n        )\n        obs[\"dbhas\"] = True\n    LOG.info(\"Loaded %s rows from IEM\", len(obs.index))\n    cursor = pgconn.cursor()\n    # join the tables\n    df = acis.join(obs, how=\"left\")\n    df[\"dbhas\"] = df[\"dbhas\"].fillna(False).astype(bool)\n    inserts = 0\n    updates = {}\n    minday = None\n    maxday = None\n    cols = \"max_tmpf min_tmpf pday\".split()\n    for col in cols:\n        updates[col] = 0\n    for day, row in df.iterrows():\n        work = []\n        args = []\n        for col in cols:\n            newval = compare(row, col)\n            if newval is None:\n                continue\n            work.append(f\"{col} = %s\")\n            args.append(newval)\n            if row[\"dbhas\"]:\n                updates[col] += 1\n        if not work:\n            continue\n        if minday is None:\n            minday = day\n        maxday = day\n        if not row[\"dbhas\"]:\n            inserts += 1\n            cursor.execute(\n                \"INSERT into summary (iemid, day) VALUES (%s, %s)\",\n                (meta[\"iemid\"], day),\n            )\n        cursor.execute(\n            f\"UPDATE summary_{day.year} SET {','.join(work)} \"\n            \"WHERE iemid = %s and day = %s\",\n            (*args, meta[\"iemid\"], day),\n        )\n\n    uu = [\n        updates[\"max_tmpf\"],\n        updates[\"min_tmpf\"],\n        updates[\"pday\"],\n    ]\n    if minday is not None:\n        LOG.warning(\n            \"%s[%s %s] New:%s Updates H:%s L:%s P:%s\",\n            acis_station,\n            minday.date(),\n            maxday.date(),\n            inserts,\n            *uu,\n        )\n    cursor.close()\n    pgconn.commit()\n    return max(uu)\n\n\n@click.command()\n@click.option(\"--state\", required=True, help=\"State to process\")\ndef main(state):\n    \"\"\"Do what is asked.\"\"\"\n    interactive = sys.stdout.isatty()\n    # Only run cron job for online sites\n    nt = NetworkTable(f\"{state}_ASOS\", only_online=not interactive)\n    if not nt.sts:\n        LOG.warning(\"No stations found for %s_ASOS\", state)\n        return\n\n    for sid in nt.sts:\n        if nt.sts[sid][\"archive_begin\"] is None:\n            continue\n        updates = do(nt.sts[sid], sid, interactive)\n        # If we found a lot of updates over the previous year, rerun for all\n        if not interactive and updates > 100:\n            do(nt.sts[sid], sid, True)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/cache/download_cpc.sh",
    "content": "#!/bin/bash\n# Cache the CPC's Soil Moisture maps\n# https://mesonet.agron.iastate.edu/timemachine/?product=87\n# https://mesonet.agron.iastate.edu/timemachine/?product=88\n# https://mesonet.agron.iastate.edu/timemachine/?product=89\n# set -x\n# called from RUN_NOON.sh\n\nDSTAMP=$(date --date '1 day ago' +'%Y%m%d%H%M')\n\nFNS=\"curr.w.full.daily curr.w.anom.daily curr.w.rank.daily\"\nfor prefix in $FNS; do\n    wget -q --timeout=60 -O /tmp/${prefix}_${DSTAMP}.gif https://www.cpc.ncep.noaa.gov/products/Soilmst_Monitoring/Figures/daily/${prefix}.gif\n    pqinsert -i -p \"plot a ${DSTAMP} bogus cpc/${prefix}.gif gif\" /tmp/${prefix}_${DSTAMP}.gif\n    rm -f /tmp/${prefix}_${DSTAMP}.gif >& /dev/null\ndone\n\nDSTAMP=$(date +'%Y%m%d%H%M')\n\nFNS=\"610temp.new 610prcp.new\"\nfor prefix in $FNS; do\n    wget -q --timeout=60 -O /tmp/${prefix}_${DSTAMP}.gif https://www.cpc.ncep.noaa.gov/products/predictions/610day/${prefix}.gif\n    pqinsert -i -p \"plot a ${DSTAMP} bogus cpc/${prefix}.gif gif\" /tmp/${prefix}_${DSTAMP}.gif\n    rm -f /tmp/${prefix}_${DSTAMP}.gif >& /dev/null\ndone\n"
  },
  {
    "path": "scripts/cache/midwest_winter_roads.py",
    "content": "\"\"\"Write a snapshot of the winter roads GeoJSON to disk.\n\nCalled from RUN_10_AFTER.sh\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\n\nimport httpx\nfrom pyiem.util import utc\n\n# This was found to be 14 MB and not include Iowa\nURL = (\n    \"https://services.arcgis.com/8lRhdTsQyJpO52F1/ArcGIS/rest/services/\"\n    \"Midwest_Winter_Road_Conditions_View/FeatureServer/0/query?\"\n    \"where=1%3D1&\"\n    \"outFields=ROUTE_NAME,REPORT_UPDATED,ROAD_CONDITION&\"\n    \"f=geojson&returnGeodetic=true&geometryPrecision=4\"\n)\n# This was found to be 5 MB and includes Iowa\nREAL_EARTH = \"https://realearth.ssec.wisc.edu/api/shapes?products=ROADS-IADOT\"\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    utcnow = utc().replace(minute=0)\n    with httpx.Client() as client, tempfile.TemporaryDirectory() as tmpdir:\n        os.chdir(tmpdir)\n        resp = client.get(REAL_EARTH, timeout=60)\n        resp.raise_for_status()\n        with open(\"temp.geojson\", \"w\") as fp:\n            fp.write(resp.text)\n        name = \"midwest_winter_roads\"\n        subprocess.call(\n            [\n                \"pqinsert\",\n                \"-i\",\n                \"-p\",\n                (\n                    f\"data ac {utcnow:%Y%m%d%H%M} \"\n                    f\"gis/geojson/{name}.geojson \"\n                    f\"GIS/{name}/{name}_{utcnow:%H%M}.geojson \"\n                    \"geojson\"\n                ),\n                \"temp.geojson\",\n            ]\n        )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/cache/nws_wawa_archive.py",
    "content": "\"\"\"Archive the NWS WaWA map.\n\nhttps://mesonet.agron.iastate.edu/timemachine/?product=59.0\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\n\nimport httpx\nfrom pyiem.util import exponential_backoff, logger, utc\n\nLOG = logger()\nSRC = \"https://forecast.weather.gov/wwamap/png/US.png\"\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    utcnow = utc()\n    resp = exponential_backoff(httpx.get, SRC, timeout=15)\n    if resp is None:\n        LOG.info(\"Failed to fetch %s\", SRC)\n        return\n    if resp.status_code != 200 or len(resp.content) == 0:\n        LOG.info(\n            \"Fail %s status_code: %s len(content): %s\",\n            SRC,\n            resp.status_code,\n            len(resp.content),\n        )\n        return\n    tmpfd = tempfile.NamedTemporaryFile(delete=False)\n    with open(tmpfd.name, \"wb\") as fh:\n        fh.write(resp.content)\n    dstamp = utcnow.strftime(\"%Y%m%d%H%M\")\n    pqstr = f\"plot a {dstamp} bogus wwa/wwa_{dstamp}.png png\"\n    LOG.info(pqstr)\n    subprocess.call([\"pqinsert\", \"-i\", \"-p\", pqstr, tmpfd.name])\n    os.unlink(tmpfd.name)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/cache/warn_cache.py",
    "content": "\"\"\"Cache yearly warning shapefiles\n\nSadly, it takes the system 6-10 minutes to generate these online, so best to\npre-generate them and allow folks to download.\n\nThis is a cron job from RUN_2AM.sh\n\"\"\"\n\nimport click\nimport httpx\nfrom pyiem.util import logger, utc\n\nLOG = logger()\nFINAL = \"/mesonet/share/pickup/wwa/\"\nURL = \"http://iem.local/cgi-bin/request/gis/watchwarn.py\"\n\n\ndef get_uri(uri: str, localfn: str):\n    \"\"\"Fetch the remote resource to a local file\"\"\"\n    req = httpx.get(uri, timeout=1200)\n    if req.status_code != 200:\n        LOG.warning(\n            \"warn_cache[%s] failed with status: %s\\n%s\",\n            req.status_code,\n            uri,\n            req.content,\n        )\n        return\n    with open(localfn, \"wb\") as fh:  # skipcq\n        fh.write(req.content)\n\n\ndef get_files(year):\n    \"\"\"Go get our files and then cache them!\"\"\"\n    myuri = (\n        f\"{URL}?simple=yes&year1={year}&month1=1&day1=1&hour1=0&minute1=0\"\n        f\"&year2={year}&month2=12&day2=31&hour2=23&minute2=59\"\n    )\n    get_uri(myuri, f\"{FINAL}/{year}_all.zip\")\n\n    # Now do SBW variant\n    myuri = f\"{myuri}&limit0=yes\"\n    get_uri(myuri, f\"{FINAL}/{year}_tsmf.zip\")\n\n    if year > 2001:\n        # Do SBW\n        myuri = f\"{myuri}&limit1=yes\"\n        get_uri(myuri, f\"{FINAL}/{year}_tsmf_sbw.zip\")\n\n\n@click.command()\n@click.option(\"--year\", default=utc().year, type=int, help=\"Year to process\")\ndef main(year: int):\n    \"\"\"Do Stuff\"\"\"\n    get_files(year)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climate/today_hilo.py",
    "content": "\"\"\"Generate a map of climatology.\n\nCalled from RUN_SUMMARY.sh\n\"\"\"\n\nfrom datetime import date\n\nfrom pyiem.database import get_dbconnc\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot import MapPlot\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    today = date.today()\n    now = today.replace(year=2000)\n    nt = NetworkTable(\"IACLIMATE\")\n    nt.sts[\"IA0200\"][\"lon\"] = -93.6\n    nt.sts[\"IA5992\"][\"lat\"] = 41.65\n    pgconn, cursor = get_dbconnc(\"coop\")\n\n    obs = []\n    cursor.execute(\n        \"SELECT station, high, low from climate WHERE valid = %s \"\n        \"and substr(station,0,3) = 'IA'\",\n        (now,),\n    )\n    for row in cursor:\n        sid = row[\"station\"]\n        if sid[2] == \"C\" or sid[2:] == \"0000\" or sid not in nt.sts:\n            continue\n        obs.append(\n            dict(\n                id=sid[2:],\n                lat=nt.sts[sid][\"lat\"],\n                lon=nt.sts[sid][\"lon\"],\n                tmpf=row[\"high\"],\n                dwpf=row[\"low\"],\n            )\n        )\n    pgconn.close()\n\n    mp = MapPlot(\n        title=f\"Average High + Low Temperature [F] (1893-{today:%Y})\",\n        subtitle=f\"For Date: {now:%-d %b}\",\n        axisbg=\"white\",\n    )\n    mp.drawcounties()\n    mp.plot_station(obs)\n    pqstr = (\n        f\"plot ac {today:%Y%m%d}0000 climate/iowa_today_avg_hilo_pt.png \"\n        \"coop_avg_temp.png png\"\n    )\n    mp.postprocess(view=False, pqstr=pqstr)\n    mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climate/today_rec_hilo.py",
    "content": "\"\"\"Generate a map of today's record high and low temperature\"\"\"\n\nfrom datetime import date\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot import MapPlot\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    today = date.today()\n    now = today.replace(year=2000)\n    nt = NetworkTable(\"IACLIMATE\")\n    nt.sts[\"IA0200\"][\"lon\"] = -93.6\n    nt.sts[\"IA5992\"][\"lat\"] = 41.65\n    coop = get_dbconn(\"coop\")\n\n    obs = []\n    cursor = coop.cursor()\n    cursor.execute(\n        \"SELECT station, max_high, min_low from climate WHERE valid = %s \"\n        \"and substr(station,0,3) = 'IA'\",\n        (now,),\n    )\n    for row in cursor:\n        sid = row[0]\n        if sid[2] == \"C\" or sid[2:] == \"0000\" or sid not in nt.sts:\n            continue\n        obs.append(\n            dict(\n                id=sid[2:],\n                lat=nt.sts[sid][\"lat\"],\n                lon=nt.sts[sid][\"lon\"],\n                tmpf=row[1],\n                dwpf=row[2],\n            )\n        )\n\n    mp = MapPlot(\n        title=f\"Record High + Low Temperature [F] (1893-{today:%Y})\",\n        subtitle=f\"For Date: {now:%d %b}\",\n        continentalcolor=\"white\",\n    )\n    mp.drawcounties()\n    mp.plot_station(obs)\n    pqstr = (\n        f\"plot ac {today:%Y%m%d}0000 climate/iowa_today_rec_hilo_pt.png \"\n        \"coop_rec_temp.png png\"\n    )\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/avg_temp.py",
    "content": "\"\"\"\nGenerate maps of Average Temperatures\n\ncalled from climodat/run.sh\n\"\"\"\n\nfrom datetime import datetime\n\nimport click\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot import MapPlot\n\n\n@click.command()\n@click.option(\"--year\", type=int, help=\"Year to plot\")\ndef main(year: int):\n    \"\"\"Hack\"\"\"\n    now = datetime.now()\n    nt = NetworkTable(\"IACLIMATE\")\n    nt.sts[\"IA0200\"][\"lon\"] = -93.4\n    nt.sts[\"IA5992\"][\"lat\"] = 41.65\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT station, avg(high) as avg_high, avg(low) as avg_low,\n            avg( (high+low)/2 ) as avg_tmp, max(day)\n            from alldata_ia WHERE year = :year and station != 'IA0000' and\n            high is not Null and low is not Null and substr(station,3,1) != 'C'\n            GROUP by station\n            \"\"\"),\n            conn,\n            params={\"year\": year},\n            index_col=\"station\",\n        )\n    # Plot Average Highs\n    lats = []\n    lons = []\n    vals = []\n    labels = []\n    for sid, row in df.iterrows():\n        if sid not in nt.sts:\n            continue\n        labels.append(sid[2:])\n        lats.append(nt.sts[sid][\"lat\"])\n        lons.append(nt.sts[sid][\"lon\"])\n        vals.append(row[\"avg_high\"])\n        maxday = row[\"max\"]\n\n    # ---------- Plot the points\n    mp = MapPlot(\n        title=f\"Average Daily High Temperature [F] ({year})\",\n        subtitle=\"1 January - %s\" % (maxday.strftime(\"%d %B\"),),\n        axisbg=\"white\",\n    )\n    mp.plot_values(\n        lons,\n        lats,\n        vals,\n        labels=labels,\n        labeltextsize=8,\n        labelcolor=\"tan\",\n        fmt=\"%.1f\",\n    )\n    pqstr = \"plot m %s bogus %s/summary/avg_high.png png\" % (\n        now.strftime(\"%Y%m%d%H%M\"),\n        year,\n    )\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n    # Plot Average Lows\n    lats = []\n    lons = []\n    vals = []\n    labels = []\n    for sid, row in df.iterrows():\n        if sid not in nt.sts:\n            continue\n        labels.append(sid[2:])\n        lats.append(nt.sts[sid][\"lat\"])\n        lons.append(nt.sts[sid][\"lon\"])\n        vals.append(row[\"avg_low\"])\n\n    # ---------- Plot the points\n    mp = MapPlot(\n        title=\"Average Daily Low Temperature [F] (%s)\" % (year,),\n        subtitle=f\"1 January - {maxday:%d %B}\",\n        axisbg=\"white\",\n    )\n    mp.plot_values(\n        lons,\n        lats,\n        vals,\n        labels=labels,\n        labeltextsize=8,\n        labelcolor=\"tan\",\n        fmt=\"%.1f\",\n    )\n    pqstr = \"plot m %s bogus %s/summary/avg_low.png png\" % (\n        now.strftime(\"%Y%m%d%H%M\"),\n        year,\n    )\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n    # Plot Average Highs\n    lats = []\n    lons = []\n    vals = []\n    labels = []\n    for sid, row in df.iterrows():\n        if sid not in nt.sts:\n            continue\n        labels.append(sid[2:])\n        lats.append(nt.sts[sid][\"lat\"])\n        lons.append(nt.sts[sid][\"lon\"])\n        vals.append(row[\"avg_tmp\"])\n\n    # ---------- Plot the points\n    mp = MapPlot(\n        title=\"Average Daily Temperature [F] (%s)\" % (year,),\n        subtitle=\"1 January - %s\" % (maxday.strftime(\"%d %B\"),),\n        axisbg=\"white\",\n    )\n    mp.plot_values(\n        lons,\n        lats,\n        vals,\n        labels=labels,\n        labeltextsize=8,\n        labelcolor=\"tan\",\n        fmt=\"%.1f\",\n    )\n    pqstr = f\"plot m {now:%Y%m%d%H%M} bogus {year}/summary/avg_temp.png png\"\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/check_database.py",
    "content": "\"\"\"\nRectify climodat database entries.\n\ncalled from RUN_CLIMODAT_STATE.sh\n\"\"\"\n\nfrom io import StringIO\n\nimport click\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\n@click.command()\n@click.option(\"--state\")\ndef main(state):\n    \"\"\"Go Main\"\"\"\n    nt = NetworkTable(f\"{state}CLIMATE\", only_online=False)\n    pgconn = get_dbconn(\"coop\")\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"SELECT station, year, day from {table} ORDER by station, day\",\n                table=f\"alldata_{state.lower()}\",\n            ),\n            conn,\n            index_col=None,\n        )\n\n    for station, gdf in df.groupby(\"station\"):\n        if station not in nt.sts:\n            LOG.warning(\n                \"station: %s is unknown to %sCLIMATE, skip\", station, state\n            )\n            continue\n        # Make sure that our data archive starts on the first of a month\n        minday = gdf[\"day\"].min().replace(day=1)\n        missing = pd.date_range(minday, gdf[\"day\"].max()).difference(\n            gdf[\"day\"]\n        )\n        if missing.empty:\n            continue\n        LOG.warning(\n            \"station: %s, missing: %s [%s - %s] has:%s days\",\n            station,\n            len(missing),\n            missing.min().date(),\n            missing.max().date(),\n            len(gdf.index),\n        )\n\n        sio = StringIO()\n        for day in missing:\n            sio.write(f\"{station},{day},{day:%m%d},{day:%Y},{day:%m}\\n\")\n        sio.seek(0)\n        cursor = pgconn.cursor()\n        sql = (\n            f\"copy alldata_{state.lower()}(station, day, sday, year, month) \"\n            \"from stdin with (delimiter ',')\"\n        )\n        with cursor.copy(sql) as copy:\n            copy.write(sio.read())\n        sio.close()\n        cursor.close()\n        pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/compute4regions.py",
    "content": "\"\"\"Compute the regional values.\n\nFor non-PRISM periods, we use the IEMRE analysis.  A crude check found PRISM\nto agree much better with the official data at NCEI than what my clunky routine\nwas doing.\n\nRun from RUN_NOON.sh\n\"\"\"\n\nfrom datetime import date, datetime\n\nimport click\nimport geopandas as gpd\nimport numpy as np\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn, sql_helper\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.grid.zs import CachingZonalStats\nfrom pyiem.iemre import daily_offset, get_daily_ncname\nfrom pyiem.util import convert_value, logger, mm2inch, ncopen\n\nLOG = logger()\n\n\ndef zero(val):\n    \"\"\"Make masked values a zero\"\"\"\n    if val is np.ma.masked:\n        return 0\n    return val\n\n\ndef update_database(cursor, stid, valid, row):\n    \"\"\"Update the database with these newly computed values!\"\"\"\n    if row[\"precip\"] is None:\n        LOG.info(\"Skipping %s as has missing data %s\", stid, row)\n        return\n    table = f\"alldata_{stid[:2]}\"\n    LOG.info(\n        \"%s hi:%3.0f lo:%3.0f precip:%.2f snow:%3.1f snowd:%3.1f\",\n        stid,\n        row[\"high\"],\n        row[\"low\"],\n        row[\"precip\"],\n        round(zero(row[\"snow\"]), 1),\n        round(zero(row[\"snowd\"]), 1),\n    )\n\n    def do_update(_row):\n        \"\"\"Do the database work, please.\"\"\"\n        cursor.execute(\n            f\"UPDATE {table} SET high = %s, low = %s, precip = %s, snow = %s, \"\n            \"snowd = %s, temp_hour = 7, precip_hour = 7 \"\n            \"WHERE station = %s and day = %s\",\n            (\n                int(round(_row[\"high\"], 0)),\n                int(round(_row[\"low\"], 0)),\n                round(zero(_row[\"precip\"]), 2),\n                round(zero(_row[\"snow\"]), 1),\n                round(zero(_row[\"snowd\"]), 1),\n                stid,\n                valid,\n            ),\n        )\n        return cursor.rowcount == 1\n\n    if not do_update(row):\n        cursor.execute(\n            f\"INSERT into {table} (station, day, temp_estimated, \"\n            \"precip_estimated, year, month, sday) VALUES \"\n            \"(%s, %s, 't', 't', %s, %s, %s)\",\n            (stid, valid, valid.year, valid.month, valid.strftime(\"%m%d\")),\n        )\n        do_update(row)\n\n\ndef do_day(cursor, valid: date):\n    \"\"\"Process a day please\"\"\"\n    idx = daily_offset(valid)\n    with ncopen(get_daily_ncname(valid.year), \"r\", timeout=300) as nc:\n        snow = mm2inch(nc.variables[\"snow_12z\"][idx])\n        snowd = mm2inch(nc.variables[\"snowd_12z\"][idx])\n    if valid.year < 1981 or (date.today() - valid).days < 4:\n        tp_nav = get_nav(\"iemre\")\n        ncfn = get_daily_ncname(valid.year)\n        with ncopen(ncfn) as nc:\n            high = convert_value(\n                nc.variables[\"high_tmpk_12z\"][idx], \"degK\", \"degF\"\n            )\n            low = convert_value(\n                nc.variables[\"low_tmpk_12z\"][idx], \"degK\", \"degF\"\n            )\n            precip = mm2inch(nc.variables[\"p01d_12z\"][idx])\n    else:\n        tp_nav = get_nav(\"PRISM\")\n        ncfn = f\"/mesonet/data/prism/{valid:%Y}_daily.nc\"\n        with ncopen(ncfn) as nc:\n            high = convert_value(nc.variables[\"tmax\"][idx], \"degC\", \"degF\")\n            low = convert_value(nc.variables[\"tmin\"][idx], \"degC\", \"degF\")\n            precip = mm2inch(nc.variables[\"ppt\"][idx])\n    LOG.info(\"Used %s for hi,lo,pcp\", ncfn)\n\n    # get the geometries and stations to update\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        gdf = gpd.read_postgis(\n            sql_helper(\"\"\"\n            SELECT t.id, c.geom from stations t JOIN climodat_regions c on\n            (t.iemid = c.iemid) ORDER by t.id ASC\n            \"\"\"),\n            conn,\n            index_col=\"id\",\n            geom_col=\"geom\",\n        )  # type: ignore\n    czs = CachingZonalStats(get_nav(\"iemre\").affine_image)\n    stsnow = czs.gen_stats(np.flipud(snow), gdf[\"geom\"])\n    stsnowd = czs.gen_stats(np.flipud(snowd), gdf[\"geom\"])\n    czs = CachingZonalStats(tp_nav.affine_image)\n    sthigh = czs.gen_stats(np.flipud(high), gdf[\"geom\"])\n    stlow = czs.gen_stats(np.flipud(low), gdf[\"geom\"])\n    stprecip = czs.gen_stats(np.flipud(precip), gdf[\"geom\"])\n\n    for i, sid in enumerate(gdf.index.values):\n        data = {\n            \"high\": sthigh[i],\n            \"low\": stlow[i],\n            \"precip\": stprecip[i],\n            \"snow\": stsnow[i],\n            \"snowd\": stsnowd[i],\n        }\n        update_database(cursor, sid, valid, data)\n\n\n@click.command()\n@click.option(\n    \"--date\",\n    \"dt\",\n    required=True,\n    type=click.DateTime(),\n    help=\"Date to process\",\n)\ndef main(dt: datetime):\n    \"\"\"Go Main Go\"\"\"\n    conn, cursor = get_dbconnc(\"coop\")\n    do_day(cursor, dt.date())\n    cursor.close()\n    conn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/compute_climate.py",
    "content": "\"\"\"Computes the Climatology and fills out the table!\n\nRun for a previous date from RUN_2AM.sh\n\"\"\"\n\nfrom datetime import date, datetime\n\nimport click\nfrom pyiem.database import get_dbconnc\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.reference import state_names\nfrom pyiem.util import logger\n\nLOG = logger()\n\nTHISYEAR = date.today().year\nMETA = {\n    \"climate51\": {\n        \"sts\": datetime(1951, 1, 1),\n        \"ets\": datetime(THISYEAR, 1, 1),\n    },\n    \"climate71\": {\n        \"sts\": datetime(1971, 1, 1),\n        \"ets\": datetime(2001, 1, 1),\n    },\n    \"climate\": {\n        \"sts\": datetime(1893, 1, 1),\n        \"ets\": datetime(THISYEAR, 1, 1),\n    },\n    \"climate81\": {\n        \"sts\": datetime(1981, 1, 1),\n        \"ets\": datetime(2011, 1, 1),\n    },\n}\n\n\ndef daily_averages(table, ts):\n    \"\"\"\n    Compute and Save the simple daily averages\n    \"\"\"\n    pgconn, cursor = get_dbconnc(\"coop\")\n    sday_limiter = \"\"\n    day_limiter = \"\"\n    if ts is not None:\n        sday_limiter = f\" and sday = '{ts:%m%d}' \"\n        day_limiter = f\" and valid = '2000-{ts:%m-%d}' \"\n    for st in state_names:\n        nt = NetworkTable(f\"{st}CLIMATE\")\n        if not nt.sts:\n            LOG.info(\"Skipping %s as it has no stations\", st)\n            continue\n        LOG.info(\"Computing Daily Averages for state: %s\", st)\n        cursor.execute(\n            f\"DELETE from {table} WHERE substr(station, 1, 2) = %s \"\n            f\"{day_limiter}\",\n            (st,),\n        )\n        LOG.info(\"    removed %s rows from %s\", cursor.rowcount, table)\n        cursor.execute(\n            f\"\"\"\n    INSERT into {table} (station, valid, high, low,\n        max_high, min_high,\n        max_low, min_low,\n        max_precip, precip,\n        snow, years,\n        gdd32, gdd41, gdd46, gdd48, gdd50, gdd51, gdd52,\n        sdd86, hdd65, cdd65, max_range,\n        min_range, srad)\n    (SELECT station, ('2000-'|| to_char(day, 'MM-DD'))::date as d,\n    avg(high) as avg_high, avg(low) as avg_low,\n    max(high) as max_high, min(high) as min_high,\n    max(low) as max_low, min(low) as min_low,\n    max(precip) as max_precip, avg(precip) as precip,\n    avg(snow) as snow, count(*) as years,\n    avg(gddxx(32, 86, high, low)) as gdd32,\n    avg(gddxx(41, 86, high, low)) as gdd41,\n    avg(gddxx(46, 86, high, low)) as gdd46,\n    avg(gddxx(48, 86, high, low)) as gdd48,\n    avg(gddxx(50, 86, high, low)) as gdd50,\n    avg(gddxx(51, 86, high, low)) as gdd51,\n    avg(gddxx(52, 86, high, low)) as gdd52,\n    avg( sdd86(high,low) ) as sdd86,\n    avg( hdd65(high,low) ) as hdd65,\n    avg(cdd65(high,low)) as cdd65,\n    max( high - low) as max_range, min(high - low) as min_range,\n    avg(merra_srad) as srad\n    from alldata_{st} WHERE day >= %s and day < %s and\n    precip is not null and high is not null and low is not null\n    and station = ANY(%s) {sday_limiter}\n    GROUP by d, station)\"\"\",\n            (\n                META[table][\"sts\"].strftime(\"%Y-%m-%d\"),\n                META[table][\"ets\"].strftime(\"%Y-%m-%d\"),\n                list(nt.sts.keys()),\n            ),\n        )\n        LOG.info(\"    added %s rows to %s\", cursor.rowcount, table)\n    cursor.close()\n    pgconn.commit()\n\n\ndef do_date(ccursor2, table, row, col, agg_col):\n    \"\"\"Process date\"\"\"\n    ccursor2.execute(\n        f\"\"\"\n        SELECT year from alldata_{row[\"station\"][:2]} where station = %s and\n        abs({col} - {row[agg_col]}) < 0.001 and\n        sday = %s and day >= %s and day < %s ORDER by year ASC\n    \"\"\",\n        (\n            row[\"station\"],\n            row[\"valid\"].strftime(\"%m%d\"),\n            META[table][\"sts\"],\n            META[table][\"ets\"],\n        ),\n    )\n    years = [row2[\"year\"] for row2 in ccursor2]\n    if not years:\n        LOG.info(\n            \"None %s %s %s %s %s\",\n            row[\"station\"],\n            row[\"valid\"],\n            row[agg_col],\n            col,\n            agg_col,\n        )\n    return years\n\n\ndef set_daily_extremes(table, ts):\n    \"\"\"Set the extremes on a given table\"\"\"\n    pgconn, cursor = get_dbconnc(\"coop\")\n    sday_limiter = \"\"\n    if ts is not None:\n        sday_limiter = f\" and valid = '2000-{ts:%m-%d}' \"\n    cursor.execute(\n        f\"\"\"\n        SELECT * from {table} WHERE max_high_yr is null and\n        max_high is not null\n        and min_high_yr is null and min_high is not null\n        and max_low_yr is null and max_low is not null\n        and min_low_yr is null and min_low is not null {sday_limiter}\n        \"\"\"\n    )\n    ccursor2 = pgconn.cursor()\n    cnt = 0\n    for row in cursor:\n        data = {}\n        data[\"max_high_yr\"] = do_date(ccursor2, table, row, \"high\", \"max_high\")\n        data[\"min_high_yr\"] = do_date(ccursor2, table, row, \"high\", \"min_high\")\n        data[\"max_low_yr\"] = do_date(ccursor2, table, row, \"low\", \"max_low\")\n        data[\"min_low_yr\"] = do_date(ccursor2, table, row, \"low\", \"min_low\")\n        data[\"max_precip_yr\"] = do_date(\n            ccursor2, table, row, \"precip\", \"max_precip\"\n        )\n        ccursor2.execute(\n            f\"\"\"\n            UPDATE {table} SET max_high_yr = %s, min_high_yr = %s,\n            max_low_yr = %s, min_low_yr = %s, max_precip_yr = %s\n            WHERE station = %s and valid = %s\n        \"\"\",\n            (\n                data[\"max_high_yr\"],\n                data[\"min_high_yr\"],\n                data[\"max_low_yr\"],\n                data[\"min_low_yr\"],\n                data[\"max_precip_yr\"],\n                row[\"station\"],\n                row[\"valid\"],\n            ),\n        )\n        cnt += 1\n        if cnt % 1000 == 0:\n            ccursor2.close()\n            pgconn.commit()\n            ccursor2 = pgconn.cursor()\n    ccursor2.close()\n    cursor.close()\n    pgconn.commit()\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", help=\"Date to process\", type=click.DateTime())\ndef main(dt):\n    \"\"\"Go Main Go\"\"\"\n    if dt is not None:\n        dt = dt.date()\n    for table in META:\n        daily_averages(table, dt)\n        set_daily_extremes(table, dt)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/daily_estimator.py",
    "content": "\"\"\"Climodat Daily Data Estimator.\n\nThis script has been a source of pain for many years.  The present idea is that\nthis script should not cleanup database problems that could be cleanly\nrectified by ``use_acis.py``.  The purpose of this script is to:\n\n1. Create database entries for stations that should be active.\n2. Copy observations based on the TRACKS_STATION metadata.\n3. Estimate high, low, precip (when necessary) based on IEMRE gridded data.\n\nRUN_NOON.sh - processes the current date, this skips any calendar day sites\nRUN_NOON.sh - processes yesterday, running all sites\nRUN_0Z.sh - processes the current date and gets the prelim calday sites data.\nRUN_2AM.sh - processes yesterday, which should run all sites\n\"\"\"\n\nfrom datetime import date, datetime\n\nimport click\nimport numpy as np\nimport pandas as pd\nimport xarray as xr\nfrom metpy.units import units\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import get_grids\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.reference import TRACE_VALUE, state_names\nfrom pyiem.util import logger, mm2inch\n\nLOG = logger()\nNON_CONUS = [\"AK\", \"HI\", \"PR\", \"VI\", \"GU\", \"AS\"]\n\n\ndef init_df(state, dt: date):\n    \"\"\"Build up a dataframe for further processing.\"\"\"\n    # NB: we need to load all stations and then later cull those that are\n    # not relevent for this given date\n    nt = NetworkTable(f\"{state}CLIMATE\", only_online=False)\n    rows = []\n    # Logic to determine if we can generate data for today's date or not\n    skip_calday_sites = dt == date.today() and datetime.now().hour < 18\n    threaded = {}\n    for sid, entry in nt.sts.items():\n        # handled by compute4regions\n        if sid[2:] == \"0000\" or sid[2] in [\"C\", \"D\"]:\n            continue\n        # clicken/egg status\n        ab = dt if entry[\"archive_begin\"] is None else entry[\"archive_begin\"]\n        ae = dt if entry[\"archive_end\"] is None else entry[\"archive_end\"]\n        # out of bounds\n        if dt < ab or dt > ae:\n            continue\n        if skip_calday_sites and entry[\"temp24_hour\"] not in range(3, 12):\n            continue\n        if entry[\"threading\"]:\n            threaded[sid] = nt.get_threading_id(sid, dt)\n        i, j = get_nav(\"iemre\").find_ij(entry[\"lon\"], entry[\"lat\"])\n        rows.append(\n            {\n                \"day\": dt,\n                \"sday\": f\"{dt:%m%d}\",\n                \"year\": dt.year,\n                \"month\": dt.month,\n                \"station\": sid,\n                \"gridi\": i,\n                \"gridj\": j,\n                \"state\": nt.sts[sid][\"state\"],\n                \"temp_hour_default\": nt.sts[sid][\"temp24_hour\"],\n                \"precip_hour_default\": nt.sts[sid][\"precip24_hour\"],\n                \"dbhas\": np.nan,  # so that combine_first works\n                \"tracks\": (nt.sts[sid][\"attributes\"].get(\"TRACKS_STATION\")),\n                \"high\": np.nan,\n                \"low\": np.nan,\n                \"precip\": np.nan,\n                \"snow\": np.nan,\n                \"snowd\": np.nan,\n                \"temp_hour\": np.nan,\n                \"precip_hour\": np.nan,\n                \"temp_estimated\": True,\n                \"precip_estimated\": True,\n            }\n        )\n    if not rows:\n        LOG.info(\"No applicable stations found for state: %s\", state)\n        return None, threaded\n    return pd.DataFrame(rows).set_index(\"station\"), threaded\n\n\ndef load_current(df: pd.DataFrame, state: str, dt: date):\n    \"\"\"load what our database currently has.\"\"\"\n    # Load up any available observations\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        obs = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                SELECT station, high, low, precip, snow, snowd, temp_hour,\n                precip_hour, temp_estimated, precip_estimated,\n                true as dbhas from {table} WHERE day = :date\n                and station = ANY(:stations)\n                \"\"\",\n                table=f\"alldata_{state.lower()}\",\n            ),\n            conn,\n            params={\"date\": dt, \"stations\": df.index.values.tolist()},\n            index_col=\"station\",\n        )\n    # combine this back into the main table\n    df = df.combine_first(obs)\n    # Update dbhas for those rows without entries\n    df[\"dbhas\"] = df[\"dbhas\"].fillna(False).astype(bool)\n    # Set the default on the estimated columns to True\n    for col in [\"temp_estimated\", \"precip_estimated\"]:\n        df[col] = df[col].fillna(True)\n    # Anything estimated needs to reset the hour to the default as the\n    # database may be wrong\n    df.loc[df[\"temp_estimated\"], \"temp_hour\"] = df[\"temp_hour_default\"]\n    df.loc[df[\"precip_estimated\"], \"precip_hour\"] = df[\"precip_hour_default\"]\n    # Fix any nulls\n    df.loc[pd.isna(df[\"temp_hour\"]), \"temp_hour\"] = df[\"temp_hour_default\"]\n    df.loc[pd.isna(df[\"precip_hour\"]), \"precip_hour\"] = df[\n        \"precip_hour_default\"\n    ]\n    return df\n\n\ndef estimate_precip(df, ds: xr.Dataset):\n    \"\"\"Estimate precipitation based on IEMRE\"\"\"\n    if ds[\"p01d_12z\"].isnull().all():\n        LOG.info(\"p01d_12z is all null, skipping\")\n        return df\n    grid12 = mm2inch(ds[\"p01d_12z\"].values)\n    grid00 = mm2inch(ds[\"p01d\"].values)\n\n    # We want the estimator to run anywhere that precip is estimated as\n    # estimates may improve with time.\n    idx = df[\"precip_estimated\"] | pd.isnull(df[\"precip\"])\n    for sid, row in df[idx].iterrows():\n        # ensure precip_etimated is set\n        df.at[sid, \"precip_estimated\"] = True\n        if row[\"precip_hour\"] in [0, 22, 23, 24]:\n            precip = grid00[row[\"gridj\"], row[\"gridi\"]]\n            precip_hour = 24\n        else:\n            precip = grid12[row[\"gridj\"], row[\"gridi\"]]\n            precip_hour = 7  # not precise\n        df.at[sid, \"precip_hour\"] = precip_hour\n        # denote trace\n        if 0 < precip < 0.01:\n            df.at[sid, \"precip\"] = TRACE_VALUE\n        elif precip < 0:\n            df.at[sid, \"precip\"] = 0\n        elif np.isnan(precip) or np.ma.is_masked(precip):\n            df.at[sid, \"precip\"] = 0\n        else:\n            df.at[sid, \"precip\"] = precip\n    return df\n\n\ndef k2f(val):\n    \"\"\"Converter.\"\"\"\n    return (val * units.degK).to(units.degF).m\n\n\ndef estimate_hilo(df, ds: xr.Dataset):\n    \"\"\"Estimate the High and Low Temperature based on gridded data\"\"\"\n    # Ensure that the grid is not all nan or masked\n    if ds[\"high_tmpk_12z\"].isnull().all():\n        LOG.info(\"high_tmpk_12z is all null, skipping\")\n        return df\n    highgrid12 = k2f(ds[\"high_tmpk_12z\"].values)\n    lowgrid12 = k2f(ds[\"low_tmpk_12z\"].values)\n    highgrid00 = k2f(ds[\"high_tmpk\"].values)\n    lowgrid00 = k2f(ds[\"low_tmpk\"].values)\n\n    # We want this to rerun for anything already estimated\n    idx = df[\"temp_estimated\"] | pd.isnull(df[\"high\"]) | pd.isnull(df[\"low\"])\n    for sid, row in df[idx].iterrows():\n        # ensure temp_etimated is set\n        df.at[sid, \"temp_estimated\"] = True\n        if row[\"temp_hour\"] in [0, 22, 23, 24]:\n            val = highgrid00[row[\"gridj\"], row[\"gridi\"]]\n            temp_hour = 24\n        else:\n            val = highgrid12[row[\"gridj\"], row[\"gridi\"]]\n            temp_hour = 7  # Not precise\n        if not np.ma.is_masked(val):\n            df.at[sid, \"temp_hour\"] = temp_hour\n            df.at[sid, \"high\"] = int(round(val, 0))\n        if row[\"temp_hour\"] in [0, 22, 23, 24]:\n            val = lowgrid00[row[\"gridj\"], row[\"gridi\"]]\n        else:\n            val = lowgrid12[row[\"gridj\"], row[\"gridi\"]]\n        if not np.ma.is_masked(val):\n            df.at[sid, \"low\"] = int(round(val, 0))\n    return df\n\n\ndef update_database(cursor, table: str, df: pd.DataFrame):\n    \"\"\"Inject into the database!\"\"\"\n    # Datatypes are important to the database update\n    df[\"high\"] = df[\"high\"].astype(\"Int64\")\n    df[\"low\"] = df[\"low\"].astype(\"Int64\")\n    # Sometimes we have a series with an object dtype\n    if df[\"precip\"].dtype != \"object\":\n        df.loc[df[\"precip\"] > 0.009, \"precip\"] = df[\"precip\"].round(2)\n    df[\"precip_hour\"] = df[\"precip_hour\"].astype(\"Int64\")\n    df[\"temp_hour\"] = df[\"temp_hour\"].astype(\"Int64\")\n\n    # Debug print a nice table of the data that gets inserted below\n    for row in df.itertuples(index=True):\n        if pd.notnull(row.low) and pd.notnull(row.high) and row.low > row.high:\n            LOG.warning(\n                \"Culling %s low: %s > high: %s\", row.Index, row.low, row.high\n            )\n            df.at[row.Index, \"low\"] = None\n            df.at[row.Index, \"temp_estimated\"] = True\n            df.at[row.Index, \"high\"] = None\n        LOG.info(\n            \"%s Hi[%s,%2s]=%3s Lo=%3s Pcp[%s,%2s]=%6s Snow=%6s Snowd=%6s\",\n            row.Index,\n            \"T\" if row.temp_estimated else \"F\",\n            row.temp_hour,\n            row.high,\n            row.low,\n            \"T\" if row.precip_estimated else \"F\",\n            row.precip_hour,\n            row.precip,\n            row.snow,\n            row.snowd,\n        )\n\n    # initialize any entries we need\n    cursor.executemany(\n        f\"INSERT INTO {table} (station, day, sday, year, month) \"\n        \"VALUES (%(station)s, %(day)s, %(sday)s, %(year)s, %(month)s)\",\n        df[~df[\"dbhas\"]].reset_index().to_dict(\"records\"),\n    )\n    # we can update now\n    cursor.executemany(\n        f\"\"\"\n        UPDATE {table} SET high = %(high)s, low = %(low)s, precip = %(precip)s,\n        snow = %(snow)s, snowd = %(snowd)s,\n        precip_estimated = %(precip_estimated)s, precip_hour = %(precip_hour)s,\n        temp_estimated = %(temp_estimated)s, temp_hour = %(temp_hour)s\n        WHERE station = %(station)s and day = %(day)s\n        \"\"\",\n        df.replace({np.nan: None}).reset_index().to_dict(\"records\"),\n    )\n\n\ndef merge_obs(df: pd.DataFrame, state, ts):\n    \"\"\"Merge data from observations.\"\"\"\n    networks = [f\"{state}_COOP\", f\"{state}_ASOS\", f\"{state}_DCP\"]\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        obs = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT t.id || '|' || t.network as tracks,\n            round(max_tmpf::numeric, 0) as high,\n            round(min_tmpf::numeric, 0) as low,\n            pday as precip, snow, snowd,\n            extract(hour from (coop_valid + '1 minute'::interval)\n            at time zone tzname)::int as temp_hour,\n            extract(hour from (coop_valid + '1 minute'::interval)\n            at time zone tzname)::int as precip_hour\n            from summary s JOIN stations t\n            on (t.iemid = s.iemid) WHERE t.network = ANY(:networks)\n            and s.day = :dt\n            \"\"\"\n            ),\n            conn,\n            params={\"networks\": networks, \"dt\": ts},\n            index_col=\"tracks\",\n        )\n    if obs.empty:\n        LOG.warning(\"loading obs for state %s yielded no data\", state)\n        return df\n    # Fill out obs with nan\n    obs = obs.fillna(np.nan).infer_objects()\n    # If a site has either a null high or low, we need to estimate both to\n    # avoid troubles with having only one estimated flag column :/\n    obs.loc[obs[[\"high\", \"low\"]].isna().any(axis=1), (\"high\", \"low\")] = np.nan\n    obs.loc[obs[\"high\"] <= obs[\"low\"], (\"high\", \"low\")] = np.nan\n    # Join the obs back onto the main dataframe\n    df = df.join(obs, how=\"left\", on=\"tracks\", rsuffix=\"_obs\")\n    # We do not estimate snow or snowd, so we can just copy over\n    for col in [\"snow\", \"snowd\"]:\n        take = df[f\"{col}_obs\"].notna() & (df[f\"{col}_obs\"] != df[col])\n        df.loc[take, col] = df.loc[take, f\"{col}_obs\"]\n\n    # Variables we can estimate\n    for col in [\"high\", \"low\", \"precip\"]:\n        estcol = \"precip_estimated\" if col == \"precip\" else \"temp_estimated\"\n        hourcol = \"precip_hour\" if col == \"precip\" else \"temp_hour\"\n        # I did the maths and there is only one contigency where we can\n        # do anything here, that's when we have obs data\n        take_obs = df[f\"{col}_obs\"].notna()\n        df.loc[take_obs, col] = df.loc[take_obs, f\"{col}_obs\"]\n        df.loc[take_obs, estcol] = False\n        df.loc[take_obs, hourcol] = df.loc[take_obs, f\"{hourcol}_obs\"]\n\n    for col in [\"precip_hour\", \"temp_hour\"]:\n        # Account for observations that have no hour set, use default\n        df[col] = df[col].fillna(df[f\"{col}_default\"])\n        # replace any 0s with 24\n        df[col] = df[col].replace(0, 24)\n\n    return df\n\n\ndef merge_threaded(df, threaded):\n    \"\"\"Duplicate some data for the threaded stations.\"\"\"\n    for sid in threaded:\n        copysid = threaded[sid]\n        if copysid in df.index:\n            # This gets tricky, but we need to retain the dbhas flag\n            dbhas = sid in df.index and df.at[sid, \"dbhas\"]\n            df.loc[sid] = df.loc[copysid]\n            df.at[sid, \"dbhas\"] = dbhas\n    return df\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", required=True, type=click.DateTime())\n@click.option(\"--state\", \"st\", default=None, help=\"Single state to process\")\ndef main(dt: datetime, st):\n    \"\"\"Go Main Go.\"\"\"\n    dt = dt.date()\n    ds = get_grids(\n        dt,\n        varnames=[\n            \"high_tmpk\",\n            \"low_tmpk\",\n            \"p01d\",\n            \"p01d_12z\",\n            \"high_tmpk_12z\",\n            \"low_tmpk_12z\",\n        ],\n    )\n    pgconn = get_dbconn(\"coop\")\n    states = state_names.keys() if st is None else [st]\n    for state in states:\n        # initialize our dataframe based on station table metadata\n        df, threaded = init_df(state, dt)\n        if df is None:\n            LOG.info(\"skipping state %s as load_table empty\", state)\n            continue\n        # Load what our database has for current obs\n        df = load_current(df, state, dt)\n        df = merge_obs(df, state, dt)\n        # IEMRE does not exist for these states, so we skip this\n        if state not in NON_CONUS:\n            df = estimate_hilo(df, ds)\n            df = estimate_precip(df, ds)\n            # Everything should be filled out.\n            missing = df[[\"high\", \"low\", \"precip\"]].isna().any(axis=1).sum()\n            if missing > 0:\n                LOG.info(\n                    \"state: %s date: %s missing: %s, skipping...\",\n                    state,\n                    dt.strftime(\"%Y-%m-%d\"),\n                    missing,\n                )\n                continue\n        if threaded:\n            df = merge_threaded(df, threaded)\n        cursor = pgconn.cursor()\n        update_database(cursor, f\"alldata_{state}\", df)\n        cursor.close()\n        pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/era5land_extract.py",
    "content": "\"\"\"\nGridcell sample the ERA5Land NetCDF files to save srad to climodat database.\n\nRun from RUN_0Z.sh for seven UTC days ago.\n\"\"\"\n\nfrom datetime import timedelta\n\nimport click\nimport geopandas as gpd\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn\nfrom pyiem.grid import nav\nfrom pyiem.grid.zs import CachingZonalStats\nfrom pyiem.iemre import hourly_offset\nfrom pyiem.util import convert_value, logger, ncopen, utc\n\nLOG = logger()\n\n\ndef compute_regions(data, varname, df):\n    \"\"\"Do the spatial averaging work.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        gdf = gpd.read_postgis(\n            \"\"\"\n            SELECT t.id, c.geom from stations t JOIN climodat_regions c on\n            (t.iemid = c.iemid) ORDER by t.id ASC\n            \"\"\",\n            conn,\n            index_col=\"id\",\n            geom_col=\"geom\",\n        )\n    czs = CachingZonalStats(nav.ERA5LAND_CONUS.affine_image)\n    data = czs.gen_stats(np.flipud(data), gdf[\"geom\"])\n    for i, sid in enumerate(gdf.index.values):\n        df.at[sid, varname] = data[i]\n\n\ndef build_stations(dt) -> pd.DataFrame:\n    \"\"\"Figure out what we need data for.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        # There's a lone VICLIMATE site at -65 :/\n        df = pd.read_sql(\n            \"\"\"\n            SELECT station, st_x(geom) as lon, st_y(geom) as lat, temp_hour\n            from alldata a JOIN stations t on (a.station = t.id) WHERE\n            t.network ~* 'CLIMATE' and a.day = %s and\n            st_x(geom) between -127 and -65.1\n            ORDER by station ASC\n            \"\"\",\n            conn,\n            params=(dt,),\n            index_col=\"station\",\n        )\n    for col in [\n        \"era5land_srad\",\n        \"era5land_soilt4_avg\",\n        \"era5land_soilm4_avg\",\n        \"era5land_soilm1m_avg\",\n    ]:\n        df[col] = np.nan\n    LOG.info(\"Found %s database entries\", len(df.index))\n    return df\n\n\ndef compute(df, sids, dt, do_regions=False):\n    \"\"\"Do the magic.\"\"\"\n    # Life choice is to run 6z to 6z\n    sts = utc(dt.year, dt.month, dt.day, 6)\n    ets = sts + timedelta(hours=24)\n\n    ncfn = f\"/mesonet/data/era5/{sts.year}_era5land_hourly.nc\"\n    idx0 = hourly_offset(sts)\n    idx1 = hourly_offset(ets)\n    # Wm-2 to MJ\n    factor = 3600.0 / 1_000_000.0\n    with ncopen(ncfn) as nc:\n        if f\"{dt:%m%d}\" == \"1231\":\n            rsds = np.sum(nc.variables[\"rsds\"][idx0:], 0) * factor\n            # Close enough\n            soilm = np.mean(nc.variables[\"soilm\"][idx0:, 0], 0)\n            soilm1m = (\n                np.mean(nc.variables[\"soilm\"][idx0:, 0], 0) * 7.0\n                + np.mean(nc.variables[\"soilm\"][idx0:, 1], 0) * 21.0\n                + np.mean(nc.variables[\"soilm\"][idx0:, 2], 0) * 72.0\n            ) / 100.0\n            soilt = np.mean(nc.variables[\"soilt\"][idx0:, 0], 0)\n            ncfn2 = f\"/mesonet/data/era5/{ets.year}_era5land_hourly.nc\"\n            with ncopen(ncfn2) as nc2:\n                rsds += np.sum(nc2.variables[\"rsds\"][:idx1], 0) * factor\n        else:\n            rsds = np.sum(nc.variables[\"rsds\"][idx0:idx1], 0) * factor\n            soilm = np.mean(nc.variables[\"soilm\"][idx0:idx1, 0], 0)\n            soilm1m = (\n                np.mean(nc.variables[\"soilm\"][idx0:idx1, 0], 0) * 7.0\n                + np.mean(nc.variables[\"soilm\"][idx0:idx1, 1], 0) * 21.0\n                + np.mean(nc.variables[\"soilm\"][idx0:idx1, 2], 0) * 72.0\n            ) / 100.0\n            soilt = np.mean(nc.variables[\"soilt\"][idx0:idx1, 0], 0)\n\n    rsds = rsds.filled(np.nan)\n    soilm = soilm.filled(np.nan)\n    soilm1m = soilm1m.filled(np.nan)\n    soilt = soilt.filled(np.nan)\n\n    for sid, row in df.loc[sids].iterrows():\n        i, j = nav.ERA5LAND_CONUS.find_ij(row[\"lon\"], row[\"lat\"])\n        if i is None:\n            continue\n        df.at[sid, \"era5land_srad\"] = rsds[j, i]\n        df.at[sid, \"era5land_soilt4_avg\"] = soilt[j, i]\n        df.at[sid, \"era5land_soilm4_avg\"] = soilm[j, i]\n        df.at[sid, \"era5land_soilm1m_avg\"] = soilm1m[j, i]\n\n    if do_regions:\n        compute_regions(rsds, \"era5land_srad\", df)\n        compute_regions(soilt, \"era5land_soilt4_avg\", df)\n        compute_regions(soilm, \"era5land_soilm4_avg\", df)\n        compute_regions(soilm1m, \"era5land_soilm1m_avg\", df)\n\n    LOG.info(\"IA0200 %s\", df.loc[\"IA0200\"])\n\n\ndef do(dt):\n    \"\"\"Process for a given date.\"\"\"\n    LOG.info(\"do(%s)\", dt)\n    df = build_stations(dt)\n    df[\"day\"] = dt\n    # We currently do two options\n    # 1. For morning sites 1-11 AM, they get yesterday's values\n    sids = df[(df[\"temp_hour\"] > 0) & (df[\"temp_hour\"] < 12)].index.values\n    compute(df, sids, dt - timedelta(days=1), True)\n    # 2. All other sites get today\n    sids = df[df[\"era5land_srad\"].isna()].index.values\n    compute(df, sids, dt)\n\n    df[\"station\"] = df.index.values\n    df[\"era5land_soilt4_avg\"] = convert_value(\n        df[\"era5land_soilt4_avg\"].values, \"degK\", \"degF\"\n    )\n\n    # prevent NaN from being inserted\n    df = df.replace({np.nan: None})\n    pgconn = get_dbconn(\"coop\")\n    cursor = pgconn.cursor()\n    cursor.executemany(\n        \"\"\"\n        UPDATE alldata set era5land_srad = %(era5land_srad)s,\n        era5land_soilt4_avg = %(era5land_soilt4_avg)s,\n        era5land_soilm4_avg = %(era5land_soilm4_avg)s,\n        era5land_soilm1m_avg = %(era5land_soilm1m_avg)s\n        where station = %(station)s and day = %(day)s\n        \"\"\",\n        df.to_dict(\"records\"),\n    )\n    cursor.close()\n    pgconn.commit()\n\n\n@click.command()\n@click.option(\"--date\", \"valid\", type=click.DateTime())\ndef main(valid):\n    \"\"\"Go Main Go\"\"\"\n    do(valid.date())\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/estimate_missing.py",
    "content": "\"\"\"Crude estimator of IEM Climate Stations\n\nThis is only run for the exceptions, when data is marked as missing for some\nreason.  The main data estimator is found at `daily_estimator.py`.\n\nThis script utilizes the IEMRE web service to provide data.\n\nCalled from RUN_CLIMODAT_STATE.sh\n\"\"\"\n\nimport click\nimport httpx\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\nURI = (\n    \"http://mesonet.agron.iastate.edu/iemre/multiday/\"\n    \"%(sdate)s/%(edate)s/%(lat)s/%(lon)s/json\"\n)\nNON_CONUS = [\"AK\", \"HI\", \"PR\", \"VI\", \"GU\", \"AS\"]\n\n\ndef process(cursor, station, df, meta):\n    \"\"\"do work for this station.\"\"\"\n    prefix = \"daily\" if meta[\"precip24_hour\"] not in range(4, 11) else \"12z\"\n    hour = 0 if meta[\"precip24_hour\"] not in range(4, 11) else 7\n    sdate = df[\"day\"].min()\n    edate = df[\"day\"].max()\n    wsuri = URI % {\n        \"sdate\": f\"{sdate:%Y-%m-%d}\",\n        \"edate\": f\"{edate:%Y-%m-%d}\",\n        \"lon\": meta[\"lon\"],\n        \"lat\": meta[\"lat\"],\n    }\n    try:\n        resp = httpx.get(wsuri, timeout=60)\n        resp.raise_for_status()\n        estimated = pd.DataFrame(resp.json()[\"data\"])\n    except Exception as exp:\n        LOG.warning(\n            \"\\n%s Failure:%s\\n%s\\nExp: %s\", station, resp.content, wsuri, exp\n        )\n        return\n    estimated[\"date\"] = pd.to_datetime(estimated[\"date\"]).dt.date\n    estimated = estimated.set_index(\"date\")\n\n    for _, row in df.iterrows():\n        newvals = row.to_dict()\n        for col in [\"high\", \"low\", \"precip\"]:\n            # If current ob is not null, don't replace it with an estimate!\n            if pd.notna(row[col]):\n                continue\n            if col in [\"high\", \"low\"]:\n                # We should take both values, can't have a mix\n                newvals[\"temp_estimated\"] = True\n                newvals[\"high\"] = estimated.loc[row[\"day\"]][f\"{prefix}_high_f\"]\n                newvals[\"low\"] = estimated.loc[row[\"day\"]][f\"{prefix}_low_f\"]\n                continue\n            newvals[\"precip_estimated\"] = True\n            if (\n                col == \"precip\"\n                and prefix == \"12z\"\n                and not pd.isna(estimated.loc[row[\"day\"]][\"prism_precip_in\"])\n            ):\n                newvals[\"precip\"] = estimated.loc[row[\"day\"]][\n                    \"prism_precip_in\"\n                ]\n            else:\n                newvals[col] = estimated.loc[row[\"day\"]][f\"{prefix}_{col}_in\"]\n        if None in newvals.values():\n            LOG.warning(\n                \"Skipping station: %s day: %s as there are missing values\",\n                station,\n                row[\"day\"],\n            )\n            continue\n        if newvals[\"low\"] > newvals[\"high\"]:\n            LOG.warning(\n                \"Error station: %s day: %s low: %.0f > high: %.0f\",\n                station,\n                row[\"day\"],\n                newvals[\"low\"],\n                newvals[\"high\"],\n            )\n            continue\n        LOG.info(\n            \"Set station: %s day: %s \"\n            \"high: %.0f(%s) low: %.0f(%s) precip: %.2f(%s)\",\n            station,\n            row[\"day\"],\n            newvals[\"high\"],\n            newvals[\"temp_estimated\"],\n            newvals[\"low\"],\n            newvals[\"temp_estimated\"],\n            newvals[\"precip\"],\n            newvals[\"precip_estimated\"],\n        )\n        sql = f\"\"\"\n            UPDATE alldata SET temp_estimated = {newvals[\"temp_estimated\"]},\n            precip_estimated = {newvals[\"precip_estimated\"]},\n            high = {newvals[\"high\"]:.0f}, low = {newvals[\"low\"]:.0f},\n            precip = {newvals[\"precip\"]:.2f},\n            temp_hour = coalesce(temp_hour, {hour}),\n            precip_hour = coalesce(precip_hour, {hour})\n            WHERE station = '{station}' and day = '{row[\"day\"]}'\n            \"\"\"\n        cursor.execute(sql.replace(\"nan\", \"null\"))\n\n\n@click.command()\n@click.option(\"--state\", required=True, help=\"State to process\")\ndef main(state: str):\n    \"\"\"Go Main Go\"\"\"\n    if state in NON_CONUS:\n        LOG.error(\"Exiting for non-CONUS sites (%s).\", state)\n        return\n    nt = NetworkTable(f\"{state}CLIMATE\", only_online=False)\n    pgconn = get_dbconn(\"coop\")\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            SELECT station, year, day, high, low, precip, temp_estimated,\n            precip_estimated from {table}\n            WHERE (high is null or low is null or precip is null)\n            and year >= 1893 and day < 'TODAY' ORDER by station, day\n            \"\"\",\n                table=f\"alldata_{state.lower()}\",\n            ),\n            conn,\n            index_col=None,\n        )\n    LOG.warning(\"Processing %s rows for %s\", len(df.index), state)\n    for (_year, station), gdf in df.groupby([\"year\", \"station\"]):\n        if station not in nt.sts:\n            LOG.warning(\"station %s is unknown, skipping...\", station)\n            continue\n        cursor = pgconn.cursor()\n        process(cursor, station, gdf, nt.sts[station])\n        cursor.close()\n        pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/hrrr_solarrad.py",
    "content": "\"\"\"Extract HRRR radiation data for storage with COOP data.\n\nRun once at 10 PM to snag calendar day stations. (RUN_50_AFTER.sh)\nRun again with RUN_NOON.sh when the regular estimator runs\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport click\nimport geopandas as gpd\nimport numpy as np\nimport pandas as pd\nimport pygrib\nimport pyproj\nfrom affine import Affine\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn\nfrom pyiem.grid.zs import CachingZonalStats\nfrom pyiem.util import archive_fetch, logger, utc\n\nLOG = logger()\nLCC = (\n    \"+proj=lcc +lon_0=-97.5 +y_0=0.0 +R=6367470. +x_0=0.0\"\n    \" +units=m +lat_2=38.5 +lat_1=38.5 +lat_0=38.5\"\n)\nCOL = \"hrrr_srad\"\n\n# NOTE: for unsure reasons, the old HRRR data prior to this timestamp gets\n# invalidly decoded by present day pygrib, so we just abort for now.\nSWITCH_DATE = utc(2014, 10, 10, 20)\nGRBNAME = \"Time-mean surface downward short-wave radiation flux\"\n\n\ndef compute_regions(affine: Affine, rsds, df):\n    \"\"\"Do the spatial averaging work.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        gdf = gpd.read_postgis(\n            \"\"\"\n            SELECT t.id, ST_Transform(c.geom, %s) as geo\n            from stations t JOIN climodat_regions c on\n            (t.iemid = c.iemid) ORDER by t.id ASC\n            \"\"\",\n            conn,\n            index_col=\"id\",\n            params=(LCC,),\n            geom_col=\"geo\",\n        )\n    czs = CachingZonalStats(affine)\n    data = czs.gen_stats(np.flipud(rsds), gdf[\"geo\"])\n    for i, sid in enumerate(gdf.index.values):\n        df.at[sid, COL] = data[i]\n\n\ndef build_stations(dt) -> pd.DataFrame:\n    \"\"\"Figure out what we need data for.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            SELECT station, st_x(ST_Transform(geom, %s)) as projx,\n            st_y(st_transform(geom, %s)) as projy, temp_hour\n            from alldata a JOIN stations t on (a.station = t.id) WHERE\n            t.network ~* 'CLIMATE' and a.day = %s and\n            st_x(geom) between -127 and -65 and state != 'PR'\n            ORDER by station ASC\n            \"\"\",\n            conn,\n            params=(LCC, LCC, dt),\n            index_col=\"station\",\n        )\n    df[COL] = np.nan\n    df[\"i\"] = np.nan\n    df[\"j\"] = np.nan\n    df[\"day\"] = dt\n    LOG.info(\"Found %s database entries\", len(df.index))\n    return df\n\n\ndef get_grid(grb):\n    \"\"\"Figure out the x-y coordinates.\"\"\"\n    pj = pyproj.Proj(grb.projparams)\n    # ll\n    lat1 = grb[\"latitudeOfFirstGridPointInDegrees\"]\n    lon1 = grb[\"longitudeOfFirstGridPointInDegrees\"]\n    llx, lly = pj(lon1, lat1)\n    xaxis = llx + grb[\"DxInMetres\"] * np.arange(grb[\"Nx\"])\n    yaxis = lly + grb[\"DyInMetres\"] * np.arange(grb[\"Ny\"])\n    return xaxis, yaxis\n\n\ndef compute(df: pd.DataFrame, sids, dt: datetime, do_regions=False):\n    \"\"\"Process data for this timestamp\"\"\"\n    # Life choice is to run 6z to 6z\n    sts = utc(dt.year, dt.month, dt.day, 6)\n    if sts < SWITCH_DATE:\n        LOG.warning(\"Aborting due to inability to process archive.\")\n        return\n    total = None\n    xaxis = None\n    yaxis = None\n    # date_range is inclusive\n    for now in pd.date_range(sts, sts + timedelta(hours=23), freq=\"1h\"):\n        # Try the newer f01 files, which have better data!\n        with archive_fetch(\n            now.strftime(\"%Y/%m/%d/model/hrrr/%H/hrrr.t%Hz.3kmf01.grib2\")\n        ) as fn:\n            if fn is not None:\n                grbs = pygrib.open(fn)\n                selgrbs = grbs.select(name=GRBNAME)\n                if len(selgrbs) == 4:\n                    # Goodie\n                    for g in selgrbs:\n                        if total is None:\n                            xaxis, yaxis = get_grid(g)\n                            # This is the outer edge, not center\n                            affine = Affine(\n                                g[\"DxInMetres\"],\n                                0,\n                                xaxis[0] - g[\"DxInMetres\"] / 2.0,\n                                0,\n                                0 - g[\"DyInMetres\"],\n                                yaxis[-1] + g[\"DyInMetres\"] / 2.0,\n                            )\n                            total = g.values * 900.0  # 15 min data\n                        else:\n                            total += g.values * 900.0\n                    continue\n        with archive_fetch(\n            now.strftime(\"%Y/%m/%d/model/hrrr/%H/hrrr.t%Hz.3kmf00.grib2\")\n        ) as fn:\n            if fn is None:\n                LOG.info(\"Missing %s\", now)\n                continue\n            grbs = pygrib.open(fn)\n            try:\n                if now >= SWITCH_DATE:\n                    grb = grbs.select(name=GRBNAME)\n                else:\n                    grb = grbs.select(parameterNumber=192)\n            except ValueError:\n                continue\n            g = grb[0]\n            if total is None:\n                xaxis, yaxis = get_grid(g)\n                # This is the outer edge, not center\n                affine = Affine(\n                    g[\"DxInMetres\"],\n                    0,\n                    xaxis[0] - g[\"DxInMetres\"] / 2.0,\n                    0,\n                    0 - g[\"DyInMetres\"],\n                    yaxis[-1] + g[\"DyInMetres\"] / 2.0,\n                )\n                total = g.values * 3600.0\n            else:\n                total += g.values * 3600.0\n\n    if total is None:\n        LOG.warning(\"No HRRR data for %s\", dt)\n        return\n\n    # Total is the sum of the hourly values\n    # We want MJ day-1 m-2\n    total = total / 1_000_000.0\n\n    if xaxis is not None and yaxis is not None:\n        df[\"i\"] = np.digitize(df[\"projx\"].to_numpy(), xaxis)\n        df[\"j\"] = np.digitize(df[\"projy\"].to_numpy(), yaxis)\n    for sid, row in df.loc[sids].iterrows():\n        df.at[sid, COL] = total[int(row[\"j\"]), int(row[\"i\"])]\n\n    if do_regions:\n        compute_regions(affine, total, df)\n\n    LOG.info(\"IA0200 %s\", df.at[\"IA0200\", COL])\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), help=\"UTC Valid Time\")\ndef main(dt: datetime):\n    \"\"\"Do Something\"\"\"\n    dt = dt.date()\n    df = build_stations(dt)\n    # We currently do two options\n    # 1. For morning sites 1-11 AM, they get yesterday's radiation\n    sids = df[(df[\"temp_hour\"] > 0) & (df[\"temp_hour\"] < 12)].index.values\n    compute(df, sids, dt - timedelta(days=1), True)\n    # 2. All other sites get today\n    sids = df[df[COL].isna()].index.values\n    compute(df, sids, dt)\n\n    pgconn, cursor = get_dbconnc(\"coop\")\n    cursor.executemany(\n        f\"UPDATE alldata set {COL} = %({COL})s \"  # skipcq\n        \"where station = %(station)s and day = %(day)s\",  # skipcq\n        df[df[COL].notna()].reset_index().to_dict(\"records\"),\n    )\n    cursor.close()\n    pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/ks_monthly.py",
    "content": "\"\"\"\nNeed something to generate a kitchen sink report of Climate Data\n\nCalled from climodat/run.sh\n\"\"\"\n\nimport os\nimport sys\nfrom datetime import datetime\n\nimport click\nimport numpy as np\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom tqdm import tqdm\n\nnt = NetworkTable(\"IACLIMATE\")\npgconn = get_dbconn(\"coop\")\ncursor = pgconn.cursor()\n\n\ndef metadata(sid, csv):\n    \"\"\"write metadata to csv file\"\"\"\n    entry = nt.sts[sid]\n    csv.write(f\"{sid},{entry['name']},{entry['lat']},{entry['lon']},\")\n\n\ndef fmt(val):\n    \"\"\"Prettier.\"\"\"\n    if val is None or val == \"M\":\n        return \"M\"\n    return f\"{val:.2f}\"\n\n\ndef process(sid, csv, yr):\n    \"\"\"Actually process a station for a csv file and year\"\"\"\n    ah = []\n    al = []\n    ap = []\n    agdd = []\n    asdd = []\n    oh = []\n    ol = []\n    op = []\n    ogdd = []\n    osdd = []\n    for i in range(1, 13):\n        cursor.execute(\n            \"\"\"\n        WITH yearly as (\n            SELECT year, avg(high) as ah, avg(low) as al,\n            sum(precip) as sp,\n            sum(gdd50(high, low)) as sgdd50,\n            sum(sdd86(high, low)) as ssdd86\n            from alldata WHERE station = %s and month = %s\n            and high is not null and low is not null and precip is not null\n            GROUP by year)\n\n        SELECT\n        avg(ah) as avg_high,\n        avg(al) as avg_low,\n        avg(sp) as avg_rain,\n        avg(sgdd50) as avg_gdd50,\n        avg(ssdd86) as avg_sdd86,\n        max(case when year = %s then ah else null end) as ob_high,\n        max(case when year = %s then al else null end) as ob_low,\n        max(case when year = %s then sp else null end) as ob_rain,\n        max(case when year = %s then sgdd50 else null end) as ob_gdd50,\n        max(case when year = %s then ssdd86 else null end) as ob_sdd86\n        from yearly\n            \"\"\",\n            (sid, i, yr, yr, yr, yr, yr),\n        )\n        row = cursor.fetchone()\n        avgHigh = row[0]\n        avgLow = row[1]\n        avgRain = row[2]\n        avgGDD = row[3]\n        avgSDD = row[4]\n        ah.append(float(avgHigh))\n        al.append(float(avgLow))\n        ap.append(float(avgRain))\n        agdd.append(float(avgGDD))\n        asdd.append(float(avgSDD))\n\n        obHigh = row[5]\n        obLow = row[6]\n        obRain = row[7]\n        obGDD = row[8]\n        obSDD = row[9]\n        if obHigh is not None:\n            oh.append(float(obHigh))\n            ol.append(float(obLow))\n            op.append(float(obRain))\n            ogdd.append(float(obGDD))\n            osdd.append(float(obSDD))\n\n        csv.write(\n            f\"{fmt(obLow)},{fmt(avgLow)},{fmt(obHigh)},{fmt(avgHigh)},\"\n            f\"{fmt(obRain)},{fmt(avgRain)},{fmt(obGDD)},{fmt(avgGDD)},\"\n            f\"{fmt(obSDD)},{fmt(avgSDD)},\"\n        )\n\n    low = np.average(ol)\n    high = np.average(oh)\n    rain = np.sum(op)\n    gdd = np.sum(ogdd)\n    sdd = np.sum(osdd)\n    avg_low = np.average(al)\n    avg_high = np.average(ah)\n    avg_rain = np.sum(ap)\n    avg_gdd = np.sum(agdd)\n    avg_sdd = np.sum(asdd)\n    csv.write(\n        f\"{fmt(low)},{fmt(avg_low)},{fmt(high)},{fmt(avg_high)},{fmt(rain)},\"\n        f\"{fmt(avg_rain)},{fmt(gdd)},{fmt(avg_gdd)},{fmt(sdd)},{fmt(avg_sdd)},\"\n    )\n\n    csv.write(\"\\n\")\n    csv.flush()\n\n\ndef main(yr):\n    \"\"\"main !\"\"\"\n    mydir = \"/mesonet/share/climodat/ks\"\n    if not os.path.isdir(mydir):\n        os.makedirs(mydir)\n    fn = f\"{mydir}/{yr}_monthly.csv\"\n    with open(fn, \"w\", encoding=\"utf-8\") as fh:  # skipcq\n        fh.write(\"stationID,stationName,Latitude,Longitude,\")\n        fh.writelines(\n            f\"{i:02.0f}_{v},C{i:02.0f}_{v},\"\n            for v in [\"MINT\", \"MAXT\", \"PREC\", \"GDD50\", \"SDD86\"]\n            for i in range(1, 13)\n        )\n        fh.write(\n            f\"{yr}_MINT,CYR_MINT,{yr}_MAXT,CYR_MAXT,{yr}_PREC,CYR_PREC,\"\n            f\"{yr}_GDD50,CYR_GDD50,{yr}_SDD86,CYR_SDD86\\n\"\n        )\n        progress = tqdm(nt.sts, disable=not sys.stdout.isatty())\n        for sid in progress:\n            progress.set_description(sid)\n            metadata(sid, fh)\n            process(sid, fh, yr)\n\n\n@click.command()\n@click.option(\n    \"--year\", default=datetime.now().year, type=int, help=\"Year to process\"\n)\ndef frontend(year: int):\n    \"\"\"A frontend to main.\"\"\"\n    main(year)\n    main(year - 1)\n\n\nif __name__ == \"__main__\":\n    frontend()\n"
  },
  {
    "path": "scripts/climodat/ks_yearly.py",
    "content": "\"\"\"Need something to generate a kitchen sink report of Climate Data\n\nCalled from climodat/run.sh\n\"\"\"\n\nfrom datetime import date\n\nfrom pyiem.database import get_dbconnc\nfrom pyiem.network import Table as NetworkTable\n\npgconn, cursor = get_dbconnc(\"coop\")\n\nENDYEAR = date.today().year\n\n\ndef metadata(nt, sid, csv):\n    \"\"\"write metadata\"\"\"\n    entry = nt.sts[sid]\n    csv.write(f\"{sid},{entry['name']},{entry['lat']},{entry['lon']},\")\n\n\ndef process(sid, csv):\n    \"\"\"Process\"\"\"\n    # Fetch Yearly Totals\n    cursor.execute(\n        \"\"\"\n        SELECT year, round(avg(high)::numeric,1) as avg_high,\n        round(avg(low)::numeric,1) as avg_low,\n        round(sum(precip)::numeric,2) as rain,\n        round(sum(gdd50(high, low))::numeric, 0) as gdd50,\n        round(sum(sdd86(high, low))::numeric, 0) as sdd86\n        from alldata\n        WHERE station = %s GROUP by year ORDER by year ASC\n    \"\"\",\n        (sid,),\n    )\n\n    data = {}\n    for row in cursor:\n        year = row[\"year\"]\n        data[year] = {\n            \"oHigh\": row[\"avg_high\"],\n            \"oLow\": row[\"avg_low\"],\n            \"oRain\": row[\"rain\"],\n            \"oGDD\": row[\"gdd50\"],\n            \"oSDD\": row[\"sdd86\"],\n        }\n    years = 0\n    for i in range(1893, ENDYEAR):\n        if i not in data:\n            data[i] = {\n                \"oHigh\": \"M\",\n                \"oLow\": \"M\",\n                \"oRain\": \"M\",\n                \"oGDD\": \"M\",\n                \"oSDD\": \"M\",\n            }\n        years += 1\n        entry = data[i]\n        csv.write(\n            f\"{entry['oLow']},{entry['oHigh']},{entry['oRain']},\"\n            f\"{entry['oGDD']},{entry['oSDD']},\"\n        )\n\n    # Need to do climate stuff\n    # Then climate\n    cursor.execute(\n        \"\"\"\n        SELECT round(avg(high)::numeric,1) as avg_high,\n        round(avg(low)::numeric,1) as avg_low,\n        sum(precip) as rain,\n        sum(gdd50(high, low)) as gdd50,\n        sum(sdd86(high, low)) as sdd86\n        from alldata WHERE station = %s\n    \"\"\",\n        (sid,),\n    )\n    row = cursor.fetchone()\n    aHigh = row[\"avg_high\"]\n    aLow = row[\"avg_low\"]\n    aRain = row[\"rain\"]\n    rr = float(aRain) / float(years)\n    gr = float(row[\"gdd50\"]) / float(years)\n    sr = float(row[\"sdd86\"]) / float(years)\n    csv.write(f\"{aLow},{aHigh},{rr:.2f},{gr:.2f},{sr:.2f},\")\n\n    csv.write(\"\\n\")\n    csv.flush()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    nt = NetworkTable(\"IACLIMATE\")\n    keys = list(nt.sts.keys())\n    keys.sort()\n    fn = \"/mesonet/share/climodat/ks/yearly.csv\"\n    with open(fn, \"w\", encoding=\"ascii\") as fp:\n        fp.write(\"stationID,stationName,Latitude,Longitude,\")\n        fp.writelines(\n            f\"{i:02.0f}_{v},\"\n            for i in range(1893, ENDYEAR)\n            for v in [\"MINT\", \"MAXT\", \"PREC\", \"GDD50\", \"SDD86\"]\n        )\n        fp.write(\"CYR_MINT,CYR_MAXT,CYR_PREC,CYR_GDD50,CYR_SDD86,\\n\")\n        for sid in keys:\n            metadata(nt, sid, fp)\n            process(sid, fp)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/merra_solarrad.py",
    "content": "\"\"\"\nSample the MERRA solar radiation analysis into estimated values for the\nCOOP point archive\n\n1 langley is 41840.00 J m-2 is 41840.00 W s m-2 is 11.622 W hr m-2\n\nSo 1000 W m-2 x 3600 is 3,600,000 W s m-2 is 86 langleys\n\nRUN_MIDNIGHT.sh every 28th of the month.\n\"\"\"\n\nimport os\nfrom datetime import datetime, timedelta\n\nimport click\nimport geopandas as gpd\nimport numpy as np\nimport pandas as pd\nfrom affine import Affine\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn\nfrom pyiem.grid.zs import CachingZonalStats\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\nCOL = \"merra_srad\"\n\n\ndef compute_regions(rsds, df):\n    \"\"\"Do the spatial averaging work.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        gdf = gpd.read_postgis(\n            \"\"\"\n            SELECT t.id, c.geom from stations t JOIN climodat_regions c on\n            (t.iemid = c.iemid) ORDER by t.id ASC\n            \"\"\",\n            conn,\n            index_col=\"id\",\n            geom_col=\"geom\",\n        )\n    # This may not be exactly right, but alas\n    affine = Affine(0.625, 0, -180.3125, 0, -0.5, 90.5)\n    czs = CachingZonalStats(affine)\n    data = czs.gen_stats(np.flipud(rsds), gdf[\"geom\"])\n    for i, sid in enumerate(gdf.index.values):\n        df.at[sid, COL] = data[i]\n\n\ndef get_gp(xc, yc, x, y):\n    \"\"\"Return the grid point closest to this point\"\"\"\n    distance = []\n    xidx = (np.abs(xc - x)).argmin()\n    yidx = (np.abs(yc - y)).argmin()\n    dx = x - xc[xidx]\n    dy = y - yc[yidx]\n    if abs(dx) > 1 or abs(dy) > 1:\n        return None, None, None\n    movex = -1\n    if dx >= 0:\n        movex = 1\n    movey = -1\n    if dy >= 0:\n        movey = 1\n    gridx = [xidx, xidx + movex, xidx + movex, xidx]\n    gridy = [yidx, yidx, yidx + movey, yidx + movey]\n    for myx, myy in zip(gridx, gridy, strict=False):\n        d = ((y - yc[myy]) ** 2 + (x - xc[myx]) ** 2) ** 0.5\n        distance.append(d)\n    return gridx, gridy, distance\n\n\ndef build_stations(dt) -> pd.DataFrame:\n    \"\"\"Figure out what we need data for.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        # There's a lone VICLIMATE site at -65 :/\n        df = pd.read_sql(\n            \"\"\"\n            SELECT station, st_x(geom) as lon, st_y(geom) as lat, temp_hour\n            from alldata a JOIN stations t on (a.station = t.id) WHERE\n            t.network ~* 'CLIMATE' and a.day = %s and\n            st_y(geom) > 0\n            ORDER by station ASC\n            \"\"\",\n            conn,\n            params=(dt,),\n            index_col=\"station\",\n        )\n    df[COL] = np.nan\n    LOG.info(\"Found %s database entries\", len(df.index))\n    return df\n\n\ndef compute(df, sids, dt, do_regions=False):\n    \"\"\"Compute things.\"\"\"\n    sts = dt.replace(hour=6)  # 6z\n    ets = sts + timedelta(days=1)\n    fn = sts.strftime(\"/mesonet/data/merra2/%Y/%Y%m%d.nc\")\n    fn2 = ets.strftime(\"/mesonet/data/merra2/%Y/%Y%m%d.nc\")\n    if not os.path.isfile(fn):\n        LOG.warning(\"%s miss[%s] -> fail\", sts.strftime(\"%Y%m%d\"), fn)\n        return\n    with ncopen(fn, timeout=300) as nc:\n        rad = np.sum(nc.variables[\"SWGDN\"][7:, :, :], 0)\n        xc = nc.variables[\"lon\"][:]\n        yc = nc.variables[\"lat\"][:]\n\n    if not os.path.isfile(fn2):\n        LOG.warning(\"%s miss[%s] -> zeros\", sts.strftime(\"%Y%m%d\"), fn2)\n        rad2 = 0\n    else:\n        with ncopen(fn2, timeout=300) as nc:\n            rad2 = np.sum(nc.variables[\"SWGDN\"][:7, :, :], 0)\n\n    # W m-2 -> J m-2 s-1 -> J m-2 dy-1 -> MJ m-2 dy-1\n    total = (rad + rad2) * 3600.0 / 1_000_000.0\n\n    for sid, row in df.loc[sids].iterrows():\n        (gridxs, gridys, distances) = get_gp(xc, yc, row[\"lon\"], row[\"lat\"])\n\n        z0 = total[gridys[0], gridxs[0]]\n        z1 = total[gridys[1], gridxs[1]]\n        z2 = total[gridys[2], gridxs[2]]\n        z3 = total[gridys[3], gridxs[3]]\n\n        val = (\n            z0 / distances[0]\n            + z1 / distances[1]\n            + z2 / distances[2]\n            + z3 / distances[3]\n        ) / (\n            1.0 / distances[0]\n            + 1.0 / distances[1]\n            + 1.0 / distances[2]\n            + 1.0 / distances[3]\n        )\n        # MJ m-2 dy-1\n        df.at[sid, COL] = float(val)\n    if do_regions:\n        compute_regions(total, df)\n\n\ndef do(dt: datetime):\n    \"\"\"Process for a given date.\"\"\"\n    LOG.info(\"do(%s)\", dt)\n    df = build_stations(dt)\n    # We currently do two options\n    # 1. For morning sites 1-11 AM, they get yesterday's radiation\n    sids = df[(df[\"temp_hour\"] > 0) & (df[\"temp_hour\"] < 12)].index.values\n    compute(df, sids, dt - timedelta(days=1), True)\n    # 2. All other sites get today\n    sids = df[df[COL].isna()].index.values\n    compute(df, sids, dt)\n\n    pgconn = get_dbconn(\"coop\")\n    cursor = pgconn.cursor()\n    for sid, row in df[df[COL].notna()].iterrows():\n        cursor.execute(\n            f\"UPDATE alldata set {COL} = %s where station = %s \"  # skipcq\n            \"and day = %s\",\n            (row[COL], sid, dt),\n        )\n\n    cursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), help=\"Date to process\")\n@click.option(\"--year\", type=int, help=\"Year to process\")\n@click.option(\"--month\", type=int, help=\"Month to process\")\ndef main(dt: datetime | None, year: int | None, month: int | None):\n    \"\"\"Go Main Go\"\"\"\n    queue = []\n    if dt is not None:\n        queue.append(dt)\n    else:\n        # Run for a given month!\n        sts = datetime(year, month, 1)\n        # run for last date of previous month as well\n        sts = sts - timedelta(days=1)\n        ets = sts + timedelta(days=45)\n        ets = ets.replace(day=1)\n        now = sts\n        while now < ets:\n            queue.append(now)\n            now += timedelta(days=1)\n    for _dt in queue:\n        do(_dt)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/narr_solarrad.py",
    "content": "\"\"\"\n Sample the NARR solar radiation analysis into estimated values for the\n COOP point archive\n\n 1 langley is 41840.00 J m-2 is 41840.00 W s m-2 is 11.622 W hr m-2\n\n So 1000 W m-2 x 3600 is 3,600,000 W s m-2 is 86 langleys\n\n Updated: to match other columns, we are storing in MJ/day/m2 now!\n\n 26 Jun 1988 is bad!\n\n http://rda.ucar.edu/dataset/ds608.0\n\nUpdates of NARR data from April 1, 2009 to January 31, 2015\nreleased by NCEP have been archived as \"rerun4\" version of ds608.0\ndataset in rda.ucar.edu in May 2015.  This update fixes the codes\nthat read Mexican precipitation data and a bug introduced when NCEP\nswitched the computer systems. The direct effects of these changes\nare in the precipitation and in the soil moisture fields.\n\nReview the following pdf file for details.\n    http://rda.ucar.edu/datasets/ds608.0/docs/rr4.pdf\n\nCalled from dl/download_narr.py\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport click\nimport geopandas as gpd\nimport numpy as np\nimport pandas as pd\nimport pygrib\nimport pyproj\nfrom affine import Affine\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.grid.zs import CachingZonalStats\nfrom pyiem.util import archive_fetch, logger, utc\n\nLOG = logger()\nLCC = (\n    \"+proj=lcc +lon_0=-107.0 +y_0=0.0 +R=6367470.21484 \"\n    \"+x_0=0.0 +units=m +lat_2=50.0 +lat_1=50.0 +lat_0=50.0\"\n)\nCOL = \"narr_srad\"\n\n\ndef get_grid(grb):\n    \"\"\"Figure out the x-y coordinates.\"\"\"\n    pj = pyproj.Proj(grb.projparams)\n    # ll\n    lat1 = grb[\"latitudeOfFirstGridPointInDegrees\"]\n    lon1 = grb[\"longitudeOfFirstGridPointInDegrees\"]\n    llx, lly = pj(lon1, lat1)\n    xaxis = llx + grb[\"DxInMetres\"] * np.arange(grb[\"Nx\"])\n    yaxis = lly + grb[\"DyInMetres\"] * np.arange(grb[\"Ny\"])\n    return xaxis, yaxis\n\n\ndef compute_regions(affine: Affine, rsds, df):\n    \"\"\"Do the spatial averaging work.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        gdf = gpd.read_postgis(\n            sql_helper(\"\"\"\n            SELECT t.id, ST_Transform(c.geom, :lcc) as geo\n            from stations t JOIN climodat_regions c on\n            (t.iemid = c.iemid) ORDER by t.id ASC\n            \"\"\"),\n            conn,\n            index_col=\"id\",\n            params={\"lcc\": LCC},\n            geom_col=\"geo\",\n        )\n    czs = CachingZonalStats(affine)\n    data = czs.gen_stats(np.flipud(rsds), gdf[\"geo\"])\n    for i, sid in enumerate(gdf.index.values):\n        df.at[sid, COL] = data[i]\n\n\ndef compute(df: pd.DataFrame, sids, dt: date, do_regions=False):\n    \"\"\"Process data for this timestamp\"\"\"\n    LOG.info(\"called dt: %s len(sids): %s\", dt, len(sids))\n    # Life choice is to run 6z to 6z\n    now = utc(dt.year, dt.month, dt.day, 6)\n    ets = now + timedelta(hours=24)\n    total = None\n    xaxis = None\n    yaxis = None\n    while now < ets:\n        # See if we have Grib data first\n        ppath = now.strftime(\"%Y/%m/%d/model/NARR/rad_%Y%m%d%H00.grib\")\n        now += timedelta(hours=3)\n        with archive_fetch(ppath) as fn:\n            if fn is None:\n                LOG.warning(\"Missing %s\", fn)\n                continue\n            with pygrib.open(fn) as grbs:\n                grb = grbs[1]\n            if total is None:\n                xaxis, yaxis = get_grid(grb)\n                # This is the outer edge, not grid center\n                affine = Affine(\n                    grb[\"DxInMetres\"],\n                    0,\n                    xaxis[0] - grb[\"DxInMetres\"] / 2.0,\n                    0,\n                    0 - grb[\"DyInMetres\"],\n                    yaxis[-1] + grb[\"DyInMetres\"] / 2.0,\n                )\n\n                # W/m2 over 3 hours J/m2 to MJ/m2\n                total = grb[\"values\"] * 10800.0 / 1_000_000.0\n            else:\n                total += grb[\"values\"] * 10800.0 / 1_000_000.0\n\n    if xaxis is not None and yaxis is not None:\n        df[\"i\"] = np.digitize(df[\"projx\"].to_numpy(), xaxis)\n        df[\"j\"] = np.digitize(df[\"projy\"].to_numpy(), yaxis)\n    for sid, row in df.loc[sids].iterrows():\n        df.at[sid, COL] = total[int(row[\"j\"]), int(row[\"i\"])]\n\n    if do_regions:\n        compute_regions(affine, total, df)\n\n    LOG.info(\"IA0200 %s\", df.at[\"IA0200\", COL])\n\n\ndef build_stations(dt) -> pd.DataFrame:\n    \"\"\"Figure out what we need data for.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT station, st_x(ST_Transform(geom, :lcc)) as projx,\n            st_y(st_transform(geom, :lcc)) as projy, temp_hour\n            from alldata a JOIN stations t on (a.station = t.id) WHERE\n            t.network ~* 'CLIMATE' and a.day = :dt and\n            state not in ('PR', 'HI', 'GU')\n            ORDER by station ASC\n            \"\"\"),\n            conn,\n            params={\"lcc\": LCC, \"dt\": dt},\n            index_col=\"station\",\n        )\n    df[COL] = np.nan\n    df[\"i\"] = np.nan\n    df[\"j\"] = np.nan\n    df[\"day\"] = dt\n    LOG.info(\"Found %s database entries\", len(df.index))\n    return df\n\n\ndef do(dt: date):\n    \"\"\"Process for a given date\n    6z file has 6z to 9z data\n    \"\"\"\n    df = build_stations(dt)\n    # We currently do two options\n    # 1. For morning sites 1-11 AM, they get yesterday's radiation\n    sids = df[(df[\"temp_hour\"] > 0) & (df[\"temp_hour\"] < 12)].index.values\n    compute(df, sids, dt - timedelta(days=1), True)\n    # 2. All other sites get today\n    sids = df[df[COL].isna()].index.values\n    compute(df, sids, dt)\n\n    pgconn = get_dbconn(\"coop\")\n    cursor = pgconn.cursor()\n\n    cursor.executemany(\n        \"UPDATE alldata set narr_srad = %(narr_srad)s where \"\n        \"station = %(station)s and day = %(day)s\",\n        df[df[COL].notna()].reset_index().to_dict(orient=\"records\"),\n    )\n\n    cursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\n@click.command()\n@click.option(\"--year\", type=int, default=None, help=\"Year to process\")\n@click.option(\"--month\", type=int, default=None, help=\"Month to process\")\n@click.option(\n    \"--date\", \"dt\", type=click.DateTime(), default=None, help=\"Date to process\"\n)\ndef main(year: int | None, month: int | None, dt: datetime | None):\n    \"\"\"Go Main Go\"\"\"\n    if dt is not None:\n        do(dt.date())\n        return\n    sts = datetime(year, month, 1)\n    ets = sts + timedelta(days=35)\n    ets = ets.replace(day=1)\n    now = sts\n    while now < ets:\n        do(now.date())\n        now += timedelta(days=1)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/nldas_extract.py",
    "content": "\"\"\"\nGridcell sample the NLDAS NetCDF files to save srad to climodat database.\n\nRun from RUN_0Z.sh for six UTC days ago.\n\"\"\"\n\nfrom datetime import timedelta\n\nimport click\nimport geopandas as gpd\nimport numpy as np\nimport pandas as pd\nfrom affine import Affine\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn\nfrom pyiem.grid.zs import CachingZonalStats\nfrom pyiem.iemre import hourly_offset\nfrom pyiem.util import convert_value, logger, ncopen, utc\n\nLOG = logger()\n\n\ndef compute_regions(data, varname, df):\n    \"\"\"Do the spatial averaging work.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        gdf = gpd.read_postgis(\n            \"\"\"\n            SELECT t.id, c.geom from stations t JOIN climodat_regions c on\n            (t.iemid = c.iemid) ORDER by t.id ASC\n            \"\"\",\n            conn,\n            index_col=\"id\",\n            geom_col=\"geom\",\n        )\n    affine = Affine(0.125, 0, -125.0, 0, -0.125, 53.0)\n    czs = CachingZonalStats(affine)\n    data = czs.gen_stats(np.flipud(data), gdf[\"geom\"])\n    for i, sid in enumerate(gdf.index.values):\n        df.at[sid, varname] = data[i]\n\n\ndef build_stations(dt) -> pd.DataFrame:\n    \"\"\"Figure out what we need data for.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        # NLDAS does not cover PR\n        df = pd.read_sql(\n            \"\"\"\n            SELECT station, st_x(geom) as lon, st_y(geom) as lat, temp_hour\n            from alldata a JOIN stations t on (a.station = t.id) WHERE\n            t.network ~* 'CLIMATE' and a.day = %s and\n            st_x(geom) between -127 and -68\n            ORDER by station ASC\n            \"\"\",\n            conn,\n            params=(dt,),\n            index_col=\"station\",\n        )\n    for col in [\"nldas_soilt4_avg\", \"nldas_soilm4_avg\", \"nldas_soilm1m_avg\"]:\n        df[col] = np.nan\n    df[\"i\"] = np.nan\n    df[\"j\"] = np.nan\n    LOG.info(\"Found %s database entries\", len(df.index))\n    return df\n\n\ndef compute(df, sids, dt, do_regions=False):\n    \"\"\"Do the magic.\"\"\"\n    # Life choice is to run 6z to 6z\n    sts = utc(dt.year, dt.month, dt.day, 6)\n    ets = sts + timedelta(hours=24)\n\n    ncfn = f\"/mesonet/data/nldas/{sts.year}_hourly.nc\"\n    idx0 = hourly_offset(sts)\n    idx1 = hourly_offset(ets)\n    with ncopen(ncfn) as nc:\n        lons = nc.variables[\"lon\"][:]\n        lats = nc.variables[\"lat\"][:]\n        tsel = slice(idx0, idx1)\n        if f\"{dt:%m%d}\" == \"1231\":\n            # Close enough\n            tsel = slice(idx0, None)\n        soilm = np.mean(nc.variables[\"soilm\"][tsel, 0], 0)\n        soilm1m = (\n            np.mean(nc.variables[\"soilm\"][tsel, 0], 0) * 10.0\n            + np.mean(nc.variables[\"soilm\"][tsel, 1], 0) * 30.0\n            + np.mean(nc.variables[\"soilm\"][tsel, 2], 0) * 60.0\n        ) / 100.0\n        soilt = np.mean(nc.variables[\"soilt\"][tsel, 0], 0)\n\n    df[\"i\"] = np.digitize(df[\"lon\"].values, lons)\n    df[\"j\"] = np.digitize(df[\"lat\"].values, lats)\n    soilm = soilm.filled(np.nan)\n    soilm1m = soilm1m.filled(np.nan)\n    soilt = soilt.filled(np.nan)\n\n    for sid, row in df.loc[sids].iterrows():\n        df.at[sid, \"nldas_soilt4_avg\"] = soilt[int(row[\"j\"]), int(row[\"i\"])]\n        df.at[sid, \"nldas_soilm4_avg\"] = soilm[int(row[\"j\"]), int(row[\"i\"])]\n        df.at[sid, \"nldas_soilm1m_avg\"] = soilm1m[int(row[\"j\"]), int(row[\"i\"])]\n\n    if do_regions:\n        compute_regions(soilt, \"nldas_soilt4_avg\", df)\n        compute_regions(soilm, \"nldas_soilm4_avg\", df)\n        compute_regions(soilm, \"nldas_soilm1m_avg\", df)\n\n    LOG.info(\"IA0200 %s\", df.loc[\"IA0200\"])\n\n\ndef do(dt):\n    \"\"\"Process for a given date.\"\"\"\n    LOG.info(\"do(%s)\", dt)\n    df = build_stations(dt)\n    df[\"day\"] = dt\n    # We currently do two options\n    # 1. For morning sites 1-11 AM, they get yesterday's values\n    sids = df[(df[\"temp_hour\"] > 0) & (df[\"temp_hour\"] < 12)].index.values\n    compute(df, sids, dt - timedelta(days=1), True)\n    # 2. All other sites get today\n    sids = df[df[\"nldas_soilt4_avg\"].isna()].index.values\n    compute(df, sids, dt)\n\n    df[\"station\"] = df.index.values\n    df[\"nldas_soilt4_avg\"] = convert_value(\n        df[\"nldas_soilt4_avg\"].values, \"degK\", \"degF\"\n    )\n\n    # prevent NaN from being inserted\n    df = df.replace({np.nan: None})\n    pgconn, cursor = get_dbconnc(\"coop\")\n    cursor.executemany(\n        \"\"\"\n        UPDATE alldata set\n        nldas_soilt4_avg = %(nldas_soilt4_avg)s,\n        nldas_soilm4_avg = %(nldas_soilm4_avg)s,\n        nldas_soilm1m_avg = %(nldas_soilm1m_avg)s\n        where station = %(station)s and day = %(day)s\n        \"\"\",\n        df.to_dict(\"records\"),\n    )\n    cursor.close()\n    pgconn.commit()\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime())\ndef main(valid):\n    \"\"\"Go Main Go\"\"\"\n    do(valid.date())\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/power_extract.py",
    "content": "\"\"\"\nExtract NASA POWER solar radiation for IEM Long Term Climate Sites.\n\nrefs akrherz/iem#385\n\nSince POWER data is courser than the IEMRE grid, we can just sample IEMRE.\n\nRun from RUN_2AM.sh looking for missing data to estimate.\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport click\nimport geopandas as gpd\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.grid.zs import CachingZonalStats\nfrom pyiem.iemre import AFFINE, daily_offset, get_daily_ncname\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\n\n\ndef compute_regions(data, varname, df):\n    \"\"\"Do the spatial averaging work.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        gdf = gpd.read_postgis(\n            \"\"\"\n            SELECT t.id, c.geom from stations t JOIN climodat_regions c on\n            (t.iemid = c.iemid) ORDER by t.id ASC\n            \"\"\",\n            conn,\n            index_col=\"id\",\n            geom_col=\"geom\",\n        )\n    czs = CachingZonalStats(AFFINE)\n    data = czs.gen_stats(np.flipud(data), gdf[\"geom\"])\n    for i, sid in enumerate(gdf.index.values):\n        df.at[sid, varname] = data[i]\n\n\ndef build_stations(dt) -> pd.DataFrame:\n    \"\"\"Figure out what we need data for.\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        # There's a lone VICLIMATE site at -65 :/\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT station, st_x(geom) as lon, st_y(geom) as lat, temp_hour\n            from alldata a JOIN stations t on (a.station = t.id) WHERE\n            t.network ~* 'CLIMATE' and a.day = :dt and\n            st_x(geom) between -127 and -65.1\n            ORDER by station ASC\n            \"\"\"),\n            conn,\n            params={\"dt\": dt},\n            index_col=\"station\",\n        )\n    df[\"power_srad\"] = np.nan\n    df[\"i\"] = np.nan\n    df[\"j\"] = np.nan\n    LOG.info(\"Found %s database entries\", len(df.index))\n    return df\n\n\ndef compute(df, sids, dt: date, do_regions=False):\n    \"\"\"Do the magic.\"\"\"\n    ncfn = get_daily_ncname(dt.year, domain=\"conus\")\n    tidx = daily_offset(dt)\n    with ncopen(ncfn) as nc:\n        lons = nc.variables[\"lon\"][:]\n        lats = nc.variables[\"lat\"][:]\n        power_srad = nc.variables[\"power_swdn\"][tidx].filled(np.nan)\n\n    df[\"i\"] = np.digitize(df[\"lon\"].values, lons) - 1\n    df[\"j\"] = np.digitize(df[\"lat\"].values, lats) - 1\n\n    for sid, row in df.loc[sids].iterrows():\n        df.at[sid, \"power_srad\"] = power_srad[int(row[\"j\"]), int(row[\"i\"])]\n\n    if do_regions:\n        compute_regions(power_srad, \"power_srad\", df)\n\n    LOG.info(\"IA0200 %s\", df.loc[\"IA0200\"])\n\n\ndef do(dt: date):\n    \"\"\"Process for a given date.\"\"\"\n    LOG.info(\"do(%s)\", dt)\n    df = build_stations(dt)\n    df[\"day\"] = dt\n    # We currently do two options\n    # 1. For morning sites 1-11 AM, they get yesterday's values\n    sids = df[(df[\"temp_hour\"] > 0) & (df[\"temp_hour\"] < 12)].index.values\n    compute(df, sids, dt - timedelta(days=1), True)\n    # 2. All other sites get today\n    sids = df[df[\"power_srad\"].isna()].index.values\n    compute(df, sids, dt)\n\n    df[\"station\"] = df.index.values\n    # prevent NaN from being inserted\n    df = df.replace({np.nan: None})\n    pgconn = get_dbconn(\"coop\")\n    cursor = pgconn.cursor()\n    cursor.executemany(\n        \"\"\"\n        UPDATE alldata set power_srad = %(power_srad)s\n        where station = %(station)s and day = %(day)s\n        \"\"\",\n        df.to_dict(\"records\"),\n    )\n    cursor.close()\n    pgconn.commit()\n\n\n@click.command()\n@click.option(\"--date\", \"valid\", type=click.DateTime())\ndef main(valid: datetime | None):\n    \"\"\"Go Main Go\"\"\"\n    if valid is not None:\n        do(valid.date())\n        return\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        days = pd.read_sql(\n            sql_helper(\"\"\"\n                SELECT distinct day from alldata_ia where power_srad is null\n                and day >= '1984-01-01'\n                ORDER by day ASC LIMIT 100\n            \"\"\"),\n            conn,\n            index_col=None,\n        )\n        if days.empty:\n            LOG.info(\"No days to process!\")\n            return\n        for _, row in days.iterrows():\n            do(row[\"day\"])\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/precip_days.py",
    "content": "\"\"\"\nGenerate a map of Number of days with precip\n\nCalled from climodat/run.sh\n\"\"\"\n\nfrom datetime import datetime\n\nimport click\nfrom pyiem.database import get_dbconnc\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot import MapPlot\n\n\n@click.command()\n@click.option(\"--year\", type=int, required=True)\ndef main(year: int):\n    \"\"\"Do as I say\"\"\"\n    # Grab the data\n    now = datetime.now()\n    nt = NetworkTable(\"IACLIMATE\")\n    nt.sts[\"IA0200\"][\"lon\"] = -93.4\n    nt.sts[\"IA5992\"][\"lat\"] = 41.65\n    pgconn, cursor = get_dbconnc(\"coop\")\n\n    lats = []\n    lons = []\n    vals = []\n    labels = []\n    cursor.execute(\n        \"\"\"\n        SELECT station,\n        sum(case when precip > 0.009 then 1 else 0 end) as days, max(day)\n        from alldata_ia WHERE year = %s and substr(station,3,1) != 'C'\n        and station != 'IA0000' GROUP by station\n    \"\"\",\n        (year,),\n    )\n    for row in cursor:\n        sid = row[\"station\"].upper()\n        if sid not in nt.sts:\n            continue\n        labels.append(sid[2:])\n        lats.append(nt.sts[sid][\"lat\"])\n        lons.append(nt.sts[sid][\"lon\"])\n        vals.append(row[\"days\"])\n        maxday = row[\"max\"]\n    pgconn.close()\n    mp = MapPlot(\n        title=\"Days with Measurable Precipitation (%s)\" % (year,),\n        subtitle=\"Map valid January 1 - %s\" % (maxday.strftime(\"%b %d\")),\n        axisbg=\"white\",\n    )\n    mp.plot_values(\n        lons,\n        lats,\n        vals,\n        fmt=\"%.0f\",\n        labels=labels,\n        labeltextsize=8,\n        labelcolor=\"tan\",\n    )\n    mp.drawcounties()\n    pqstr = \"plot m %s bogus %s/summary/precip_days.png png\" % (\n        now.strftime(\"%Y%m%d%H%M\"),\n        year,\n    )\n    mp.postprocess(pqstr=pqstr)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/run.sh",
    "content": "# Generate the reports, run from RUN_2AM.sh\n\nYYYY=$(date +%Y)\n\npython ks_yearly.py \npython ks_monthly.py\n\npython avg_temp.py --year=$YYYY\npython precip_days.py --year=$YYYY\npython yearly_precip.py --year=$YYYY\n"
  },
  {
    "path": "scripts/climodat/sync_coop_updates.py",
    "content": "\"\"\"COOP data gets corrected and whatnot.\n\nWe need to check the IEM Access database for any COOP sites with updated\ndata and then update the climodat database appropriately, ufff.\n\nrun from RUN_NOON.sh and RUN_0Z.sh\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef load_changes():\n    \"\"\"Find what has changed.\"\"\"\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT distinct id, c.iemid, network, tzname,\n            date(valid at time zone t.tzname) from current_log c JOIN\n            stations t on (c.iemid = t.iemid) WHERE t.network ~* 'COOP' and\n            updated > now() - '25 hours'::interval\n            \"\"\"),\n            conn,\n            index_col=None,\n        )\n    LOG.info(\"Found %s database changes\", len(df.index))\n    return df\n\n\ndef load_xref():\n    \"\"\"Figure out which stations below to whom.\"\"\"\n    dbconn, cursor = get_dbconnc(\"mesosite\")\n    cursor.execute(\n        \"SELECT id, value from stations t JOIN station_attributes a \"\n        \"on (t.iemid = a.iemid) WHERE t.network ~* 'CLIMATE' and \"\n        \"a.attr = 'TRACKS_STATION' and t.online\"\n    )\n    xref = {}\n    for row in cursor:\n        entry = xref.setdefault(row[\"value\"], [])\n        entry.append(row[\"id\"])\n    dbconn.close()\n    return xref\n\n\ndef compare_and_update(ccursor, currentob, newob):\n    \"\"\"Do we need to make updates?\"\"\"\n    if newob is None:\n        return 0\n    updates = []\n    messages = []\n    for col in [\"high\", \"low\", \"precip\", \"snow\", \"snowd\"]:\n        # If new ob is missing, nothing to do here\n        if newob[col] is None:\n            continue\n        # If obs are the same, nothing to do here\n        if newob[col] == currentob[col]:\n            continue\n        updates.append(f\"{col} = {newob[col]}\")\n        messages.append(f\"{col} {currentob[col]}->{newob[col]}\")\n        if col in [\"precip\", \"high\"]:\n            updates.append(\n                f\"{'temp' if col != 'precip' else 'precip'}_estimated = 'f'\"\n            )\n            chour = \"null\" if pd.isna(newob[\"chour\"]) else newob[\"chour\"]\n            # Rectify the hour\n            if chour == 0:\n                chour = 24\n            updates.append(\n                f\"{'temp' if col != 'precip' else 'precip'}_hour = {chour}\"\n            )\n    if not updates:\n        return 0\n    LOG.info(\n        \"%s %s %s\", currentob[\"station\"], currentob[\"day\"], \", \".join(messages)\n    )\n    ccursor.execute(\n        f\"UPDATE alldata_{currentob['station'][:2]} SET {', '.join(updates)} \"\n        \"WHERE station = %s and day = %s\",\n        (currentob[\"station\"], currentob[\"day\"]),\n    )\n    return ccursor.rowcount\n\n\ndef _fetch(ccursor, climostation, row, table):\n    ccursor.execute(\n        \"SELECT high, low, precip, snow, snowd, station, day from \"\n        f\"{table} WHERE station = %s and day = %s\",  # skipcq\n        (climostation, row[\"date\"]),\n    )\n    return ccursor.fetchone()\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    accessdb, acursor = get_dbconnc(\"iem\")\n    coopdb, ccursor = get_dbconnc(\"coop\")\n    df = load_changes()\n    xref = load_xref()\n    updates = 0\n    unused = 0\n    dups = 0\n    for _, row in df.iterrows():\n        key = f\"{row['id']}|{row['network']}\"\n        if key not in xref:\n            unused += 1\n            continue\n        # Load the changed data\n        acursor.execute(\n            \"SELECT max_tmpf::int as high, min_tmpf::int as low, \"\n            \"pday as precip, snow, snowd, \"\n            \"extract(hour from (coop_valid + '1 minute'::interval) at \"\n            \"time zone %s) as chour from summary \"\n            \"WHERE iemid = %s and day = %s\",\n            (row[\"tzname\"], row[\"iemid\"], row[\"date\"]),\n        )\n        newob = acursor.fetchone()\n        for climostation in xref[key]:\n            table = f\"alldata_{climostation[:2]}\"\n            # Load the current data for the station\n            currentob = _fetch(ccursor, climostation, row, table)\n            if currentob is None:\n                ccursor.execute(\n                    f\"INSERT into {table}(station, day, year, month, sday) \"\n                    \"VALUES (%s, %s, %s, %s, %s)\",\n                    (\n                        climostation,\n                        row[\"date\"],\n                        row[\"date\"].year,\n                        row[\"date\"].month,\n                        row[\"date\"].strftime(\"%m%d\"),\n                    ),\n                )\n                currentob = _fetch(ccursor, climostation, row, table)\n            updated = compare_and_update(ccursor, currentob, newob)\n            if updated == 0:\n                dups += 1\n                continue\n            updates += updated\n            if updates > 0 and updates % 100 == 0:\n                LOG.info(\"database commit after %s updates\", updates)\n                ccursor.close()\n                coopdb.commit()\n                ccursor = coopdb.cursor()\n\n    logl = LOG.warning if updates < 500 else LOG.info\n    logl(\"synced %s rows, %s unused, %s dups\", updates, unused, dups)\n    ccursor.close()\n    coopdb.commit()\n    accessdb.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/use_acis.py",
    "content": "\"\"\"Use data provided by ACIS to replace climodat data.\n\n# Implementation Notes\n\n- If either high or low temperature is missing in ACIS, we will not update\n  the database other than to ensure temp_estimated is set to True.\n\"\"\"\n\nimport time\nfrom datetime import date, datetime\n\nimport click\nimport httpx\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.reference import TRACE_VALUE, ncei_state_codes\nfrom pyiem.util import logger\n\nLOG = logger()\nSERVICE = \"https://data.rcc-acis.org/StnData\"\nMETASERVICE = \"https://data.rcc-acis.org/StnMeta\"\n\n\ndef compute_por(acis_station) -> tuple[date, date]:\n    \"\"\"Need to ask ACIS what the POR is based on variables, not SIDs.\n\n    Result payload looks like:\n     {\"meta\":[{\"valid_daterange\":[[\"1904-02-06\",\"2024-04-25\"],...]}]}\n    \"\"\"\n    payload = {\n        \"sids\": acis_station,\n        \"meta\": \"valid_daterange\",\n        \"elems\": \"maxt,mint,pcpn\",\n    }\n    with httpx.Client() as client:\n        meta = client.post(\n            f\"{METASERVICE}?sid={acis_station}\", json=payload, timeout=60\n        ).json()\n    dates = []\n    for pair in meta[\"meta\"][0][\"valid_daterange\"]:\n        for stamp in pair:\n            if stamp.startswith((\"0001\", \"9999\")):\n                continue\n            dates.append(datetime.strptime(stamp, \"%Y-%m-%d\").date())\n    return min(dates), max(dates)\n\n\ndef do(meta, station, acis_station) -> int:\n    \"\"\"Do the query and work\n\n    Args:\n      station (str): IEM Station identifier ie IA0200\n      acis_station (str): the ACIS identifier ie 130197\n    \"\"\"\n    table = f\"alldata_{station[:2]}\"\n    fmt = \"%Y-%m-%d\"\n    try:\n        meta_mindt, meta_maxdt = compute_por(acis_station)\n    except Exception as exp:\n        LOG.exception(exp)\n        return 0\n    # If this station is offline, we don't want to ask for data past the\n    # archive_end date.  The station could be a precip-only site...\n    edate = meta[\"attributes\"].get(\"CEILING\")\n    if edate is None:\n        if meta[\"online\"]:\n            edate = f\"{meta_maxdt:%Y-%m-%d}\"\n        else:\n            edate = meta[\"archive_end\"].strftime(fmt)\n    payload = {\n        \"sid\": acis_station,\n        \"sdate\": meta[\"attributes\"].get(\"FLOOR\", f\"{meta_mindt:%Y-%m-%d}\"),\n        \"edate\": meta[\"attributes\"].get(\"CEIL\", edate),\n        \"elems\": [\n            {\"name\": \"maxt\", \"add\": \"t\"},\n            {\"name\": \"mint\"},\n            {\"name\": \"pcpn\", \"add\": \"t\"},\n            {\"name\": \"snow\"},\n            {\"name\": \"snwd\"},\n        ],\n    }\n    LOG.info(\n        \"Call ACIS for: %s[%s %s] to update: %s\",\n        acis_station,\n        payload[\"sdate\"],\n        payload[\"edate\"],\n        station,\n    )\n    j = {}\n    for attempt in range(3):\n        try:\n            resp = httpx.post(SERVICE, json=payload, timeout=30)\n            resp.raise_for_status()\n            j = resp.json()\n            break\n        except Exception:\n            LOG.warning(\n                \"Failed to query ACIS for %s, sleeping 60 seconds\",\n                acis_station,\n            )\n            # Give server some time to recover from transient errors\n            time.sleep(60)\n        if attempt == 2:\n            LOG.error(\n                \"Failed to query ACIS for %s after 3 attempts, giving up\",\n                acis_station,\n            )\n            return 0\n    if \"data\" not in j:\n        LOG.info(\"No Data!, content=%s\", resp.content)\n        return 0\n    acis = pd.DataFrame(\n        j[\"data\"],\n        columns=\"day ahigh alow aprecip asnow asnowd\".split(),\n    )\n    for col in \"ahigh aprecip\".split():\n        acis[[col, f\"{col}_hour\"]] = pd.DataFrame(\n            acis[col].tolist(),\n            index=acis.index,\n        )\n        # hour values of -1 are missing\n        acis.loc[acis[f\"{col}_hour\"] < 0, f\"{col}_hour\"] = np.nan\n    # If either ahigh or alow is missing, set both to missing\n    acis.loc[\n        (acis[\"ahigh\"] == \"M\") | (acis[\"alow\"] == \"M\"),\n        [\"ahigh\", \"alow\", \"ahigh_hour\"],\n    ] = np.nan\n    # if either aprecip or asnow has a `A` character, set to missing\n    acis.loc[acis[\"aprecip\"].str.contains(\"A\"), \"aprecip\"] = np.nan\n    acis.loc[acis[\"asnow\"].str.contains(\"A\"), \"asnow\"] = np.nan\n    # Rectify the name to match IEM database\n    acis = acis.rename(columns={\"ahigh_hour\": \"atemp_hour\"}).replace(\n        {\"T\": TRACE_VALUE, \"M\": np.nan, \"S\": np.nan}\n    )\n    # fill out estimated flags\n    acis[\"atemp_estimated\"] = acis[\"ahigh\"].isna()\n    acis[\"aprecip_estimated\"] = acis[\"aprecip\"].isna()\n\n    LOG.info(\"Loaded %s rows from ACIS\", len(acis.index))\n    acis[\"day\"] = pd.to_datetime(acis[\"day\"])\n    acis = acis.set_index(\"day\")\n    pgconn = get_dbconn(\"coop\")\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        obs = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT day, high, low, precip, snow, snowd, temp_hour, precip_hour,\n            temp_estimated, precip_estimated, true as dbhas\n            from alldata WHERE station = :station ORDER by day ASC\n            \"\"\"),\n            conn,\n            params={\"station\": station},\n            index_col=\"day\",\n        )\n    LOG.info(\"Loaded %s rows from IEM\", len(obs.index))\n    cursor = pgconn.cursor()\n    # join the tables\n    df = acis.join(obs, how=\"left\")\n    df[\"temp_estimated\"] = df[\"temp_estimated\"].fillna(True)\n    df[\"precip_estimated\"] = df[\"precip_estimated\"].fillna(True)\n    df[\"dbhas\"] = df[\"dbhas\"].fillna(False)\n    # If the database does not have this, we need to update it\n    df[\"dirty\"] = ~df[\"dbhas\"]\n    for col in [\"high\", \"low\", \"temp_hour\", \"precip_hour\"]:\n        for prefix in [\"a\", \"\"]:\n            df[f\"{prefix}{col}\"] = df[f\"{prefix}{col}\"].astype(\n                \"Int64\", errors=\"raise\"\n            )\n    for col in [\"precip\", \"snow\", \"snowd\"]:\n        for prefix in [\"a\", \"\"]:\n            df[f\"{prefix}{col}\"] = (\n                df[f\"{prefix}{col}\"]\n                .fillna(np.nan)\n                .astype(\"float64\", errors=\"raise\")\n            )\n    for col in [\"temp_estimated\", \"precip_estimated\"]:\n        for prefix in [\"a\", \"\"]:\n            df[f\"{prefix}{col}\"] = (\n                df[f\"{prefix}{col}\"]\n                .fillna(True)\n                .astype(\"bool\", errors=\"raise\")\n            )\n    for col in [\"dbhas\", \"dirty\"]:\n        df[col] = df[col].astype(\"bool\", errors=\"raise\")\n\n    updates = {}\n    cols = \"high low precip snow snowd temp_hour precip_hour\".split()\n    for col in cols:\n        updates[col] = 0\n    # Ensure we have no columns of object dtype\n    if df.select_dtypes(include=\"object\").columns.any():\n        LOG.info(df.select_dtypes(include=\"object\").columns)\n        LOG.info(df.dtypes)\n        raise ValueError(\"We have object dtype columns\")\n    df[\"station\"] = station\n    # account for the case where we have a high or low, but not both\n    idx = df[\"ahigh\"].isna() | df[\"alow\"].isna()\n    if idx.any():\n        df.loc[idx, \"ahigh\"] = np.nan\n        df.loc[idx, \"alow\"] = np.nan\n    # find rows whereby we should be using ACIS\n    for col in [\"high\", \"low\", \"precip\"]:\n        ecol = \"precip\" if col == \"precip\" else \"temp\"\n        idx = (\n            (df[f\"a{col}\"].notna() & (df[f\"a{col}\"] != df[col]))\n            | (df[f\"a{col}\"].isna() & ~df[f\"{ecol}_estimated\"])\n            | (df[f\"{ecol}_estimated\"] & df[f\"a{col}\"].notna())\n        )\n        if idx.any():\n            df.loc[idx, col] = df.loc[idx, f\"a{col}\"]\n            df.loc[idx, f\"{ecol}_hour\"] = df.loc[idx, f\"a{ecol}_hour\"]\n            df.loc[idx, f\"{ecol}_estimated\"] = df.loc[\n                idx, f\"a{ecol}_estimated\"\n            ]\n            df.loc[idx, \"dirty\"] = True\n            updates[col] = idx.sum()\n\n    # for snow and snowd, it is simplier\n    for col in [\"snow\", \"snowd\", \"temp_hour\", \"precip_hour\"]:\n        idx = df[f\"a{col}\"].notna() & (df[f\"a{col}\"] != df[col])\n        if idx.any():\n            df.loc[idx, col] = df.loc[idx, f\"a{col}\"]\n            df.loc[idx, \"dirty\"] = True\n            updates[col] = idx.sum()\n\n    cursor.executemany(\n        f\"insert into {table} (station, day, sday, year, month) \"\n        \"values (%(station)s, %(day)s, \"\n        \"to_char(%(day)s::date, 'mmdd'), \"\n        \"extract(year from %(day)s::date), \"\n        \"extract(month from %(day)s::date)) \",\n        df[~df[\"dbhas\"]].reset_index().to_dict(\"records\"),\n    )\n    inserts = cursor.rowcount\n    cursor.executemany(\n        f\"update {table} SET high = %(high)s, low = %(low)s, \"\n        \"precip = %(precip)s, snow = %(snow)s, temp_hour = %(temp_hour)s, \"\n        \"precip_hour = %(precip_hour)s, snowd = %(snowd)s, \"\n        \"temp_estimated = %(temp_estimated)s, \"\n        \"precip_estimated = %(precip_estimated)s \"\n        \"WHERE station = %(station)s and day = %(day)s\",\n        df[df[\"dirty\"]].reset_index().to_dict(\"records\"),\n    )\n    uu = [\n        updates[\"high\"],\n        updates[\"temp_hour\"],\n        updates[\"low\"],\n        updates[\"precip\"],\n        updates[\"precip_hour\"],\n        updates[\"snow\"],\n        updates[\"snowd\"],\n    ]\n    if df[\"dirty\"].any() or inserts > 0:\n        LOG.warning(\n            \"%s New:%s Updates H:%s HH:%s L:%s P:%s PH:%s S:%s D:%s\",\n            station,\n            inserts,\n            *uu,\n        )\n    cursor.close()\n    pgconn.commit()\n    return max(uu)\n\n\n@click.command()\n@click.option(\"--state\", help=\"Two character state identifier\")\n@click.option(\"--station\", help=\"IEM Station Identifier\")\n@click.option(\"--acis_station\", help=\"ACIS Station Identifier\")\ndef main(state: str | None, station: str | None, acis_station: str | None):\n    \"\"\"Do what is asked.\"\"\"\n    # Only run cron job for online sites\n    nt = NetworkTable(\n        f\"{state if state is not None else station[:2]}CLIMATE\",\n        only_online=False,\n    )\n\n    def _worker(sid, acis_station):\n        \"\"\"Do work.\"\"\"\n        do(nt.sts[sid], sid, acis_station)\n\n    if state is not None:\n        for sid in nt.sts:\n            if sid[2] == \"C\" or sid[2:] == \"0000\":\n                continue\n            astation = ncei_state_codes[state] + sid[2:]\n            if sid[2] in [\"K\", \"P\"]:\n                astation = sid[2:]\n            if sid[2] == \"T\":\n                astation = f\"{sid[3:]}thr\"\n            LOG.info(\"Guessing ACIS station as: %s\", astation)\n            _worker(sid, astation)\n    elif station is not None and acis_station is None:\n        astation = ncei_state_codes[station[:2]] + station[2:]\n        if station[2] in [\"K\", \"P\"]:\n            astation = station[2:]\n        if station[2] == \"T\":\n            astation = f\"{station[3:]}thr\"\n        LOG.info(\"Guessing ACIS station as: %s\", astation)\n        _worker(station, astation)\n    else:\n        _worker(station, acis_station)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/climodat/yearly_precip.py",
    "content": "\"\"\"\nGenerate a map of Yearly Precipitation.\n\nCalled from climodat/run.sh\n\"\"\"\n\nimport click\nfrom pyiem.util import logger, web2ldm\n\nLOG = logger()\n\n\n@click.command()\n@click.option(\"--year\", type=int, required=True, help=\"Year to process\")\ndef main(year: int):\n    \"\"\"Do Work.\"\"\"\n    url = (\n        \"http://iem.local/plotting/auto/plot/97/d:sector::sector:IA::\"\n        f\"var:precip_sum::date1:{year}-01-01::usdm:no::\"\n        f\"date2:{year}-12-31::p:contour::cmap:YlGnBu::c:yes\"\n        \".png\"\n    )\n    pqstr = f\"plot m 000000000000 bogus {year}/summary/total_precip.png png\"\n    LOG.info(url)\n    LOG.info(pqstr)\n    res = web2ldm(url, pqstr)\n    if not res:\n        LOG.warning(\"failed for year: %s\", year)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/coop/PREC.sh",
    "content": "# Tasks\n\npython plot_coop.py\npython extract_coop_obs.py\npython today_precip.py\n"
  },
  {
    "path": "scripts/coop/cfs_extract.py",
    "content": "\"\"\"Extract data from CFS\n\nTotal precipitation\nMaximum temperature\nMinimum temperature\n\nRun at 5 AM local from RUN_10_AFTER.sh\n\"\"\"\n\nfrom datetime import timedelta\n\nimport numpy as np\nimport pygrib\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import archive_fetch, convert_value, logger, utc\n\nLOG = logger()\n\n\ndef do_agg(dkey, fname, ts, data):\n    \"\"\"Do aggregate\"\"\"\n    ppath = ts.strftime(\n        f\"%Y/%m/%d/model/cfs/%H/{fname}.01.%Y%m%d%H.daily.grib2\"\n    )\n    with archive_fetch(ppath) as fn:\n        if fn is None:\n            LOG.info(\"missing %s\", ppath)\n            return\n        # Precip\n        gribs = pygrib.open(fn)\n        for grib in gribs:\n            if data[\"x\"] is None:\n                lat, lon = grib.latlons()\n                data[\"y\"] = lat[:, 0]\n                data[\"x\"] = lon[0, :]\n            ftime = ts + timedelta(hours=grib.forecastTime)\n            cst = ftime - timedelta(hours=7)\n            key = cst.strftime(\"%Y-%m-%d\")\n            d = data[\"fx\"].setdefault(\n                key, dict(precip=None, high=None, low=None, srad=None)\n            )\n            LOG.info(\"Writting %s %s from ftime: %s\", dkey, key, ftime)\n            if d[dkey] is None:\n                d[dkey] = grib.values * 6 * 3600.0\n            else:\n                d[dkey] += grib.values * 6 * 3600.0\n\n\ndef do_temp(dkey, fname, func, ts, data):\n    \"\"\"Do Temperatures\"\"\"\n    ppath = ts.strftime(\n        f\"%Y/%m/%d/model/cfs/%H/{fname}.01.%Y%m%d%H.daily.grib2\"\n    )\n    with archive_fetch(ppath) as fn:\n        if fn is None:\n            LOG.info(\"missing %s\", ppath)\n            return\n        gribs = pygrib.open(fn)\n        for grib in gribs:\n            ftime = ts + timedelta(hours=grib.forecastTime)\n            cst = ftime - timedelta(hours=7)\n            key = cst.strftime(\"%Y-%m-%d\")\n            if key not in data[\"fx\"]:\n                continue\n            d = data[\"fx\"][key]\n            LOG.info(\"Writting %s %s from ftime: %s\", dkey, key, ftime)\n            if d[dkey] is None:\n                d[dkey] = grib.values\n            else:\n                d[dkey] = func(d[dkey], grib.values)\n\n\ndef process(ts):\n    \"\"\"Do Work\"\"\"\n    data = {\"x\": None, \"y\": None, \"proj\": None, \"fx\": {}}\n    do_agg(\"precip\", \"prate\", ts, data)\n    do_temp(\"high\", \"tmax\", np.maximum, ts, data)\n    do_temp(\"low\", \"tmin\", np.minimum, ts, data)\n    do_agg(\"srad\", \"dswsfc\", ts, data)\n\n    return data\n\n\ndef bnds(val, lower, upper):\n    \"\"\"Make sure a value is between the bounds, or else it is None\"\"\"\n    if val is None:\n        return None\n    if val < lower or val > upper:\n        return None\n    return val\n\n\ndef dbsave(ts, data):\n    \"\"\"Save the data!\"\"\"\n    if data[\"x\"] is None:\n        LOG.warning(\"No longitude info found, aborting\")\n        return\n\n    pgconn = get_dbconn(\"coop\", rw=True)\n    cursor = pgconn.cursor()\n    # Check to see if we already have data for this date\n    cursor.execute(\n        \"SELECT id from forecast_inventory \"\n        \"WHERE model = 'CFS' and modelts = %s\",\n        (ts,),\n    )\n    if cursor.rowcount > 0:\n        modelid = cursor.fetchone()[0]\n        cursor.execute(\n            \"DELETE from alldata_forecast where modelid = %s\", (modelid,)\n        )\n        if cursor.rowcount > 0:\n            LOG.warning(\"Removed %s previous entries\", cursor.rowcount)\n    else:\n        cursor.execute(\n            \"INSERT into forecast_inventory(model, modelts) \"\n            \"VALUES ('CFS', %s) RETURNING id\",\n            (ts,),\n        )\n        modelid = cursor.fetchone()[0]\n\n    for date in list(data[\"fx\"].keys()):\n        d = data[\"fx\"][date]\n        if (\n            d[\"high\"] is None\n            or d[\"low\"] is None\n            or d[\"precip\"] is None\n            or d[\"srad\"] is None\n        ):\n            LOG.warning(\"Missing data for date: %s\", date)\n            del data[\"fx\"][date]\n\n    nt = NetworkTable(\"IACLIMATE\")\n    for sid, entry in nt.sts.items():\n        # Skip virtual stations\n        if sid[2:] == \"0000\" or sid[2] in [\"C\", \"D\"]:\n            continue\n        # Careful here, lon is 0-360 for this file\n        i = np.digitize([entry[\"lon\"] + 360], data[\"x\"])[0]\n        j = np.digitize([entry[\"lat\"]], data[\"y\"])[0]\n        for date in data[\"fx\"]:\n            d = data[\"fx\"][date]\n            high = bnds(\n                convert_value(d[\"high\"][j, i], \"degK\", \"degF\"), -70, 140\n            )\n            low = bnds(convert_value(d[\"low\"][j, i], \"degK\", \"degF\"), -90, 120)\n            precip = bnds(round(float(d[\"precip\"][j, i] / 25.4), 2), 0, 30)\n            srad = bnds(d[\"srad\"][j, i] / 1000000.0, 0, 50)\n            if high is None or low is None or precip is None or srad is None:\n                continue\n            cursor.execute(\n                \"\"\"\n                INSERT into alldata_forecast(modelid,\n                station, day, high, low, precip, srad)\n                VALUES (%s, %s, %s, %s, %s, %s, %s)\n            \"\"\",\n                (modelid, sid, date, int(high), int(low), precip, srad),\n            )\n    cursor.close()\n    pgconn.commit()\n\n\ndef main():\n    \"\"\"Go!\"\"\"\n    # Extract 12 UTC Data\n    ts = utc() - timedelta(days=4)\n    ts = ts.replace(hour=12, minute=0, second=0, microsecond=0)\n    data = process(ts)\n    dbsave(ts, data)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/coop/data.desc",
    "content": "IEM PROCESSED NWS COOP DATA\n  Contact: daryl herzmann akrherz@iastate.edu @akrherz 515-294-5978\n\nAttributes:\n  SID        National Weather Service Station Identifier\n  SITE_NAME  Location name\n  YYYYMMDD   Date of the observation\n  HHMM       Time of the observation\n  HI_T_F     24 hour High Temperature [F]\n  LO_T_F     24 hour Low Temperature [F]\n  PREC       Liquid Precipitation (snow melted) [inches]\n  SNOW       Snowfall [inches]\n  SDEPTH     Snow Depth [inches]\n  PMONTH     IEM Calculated liquid precip for the month [inches]\n  SMONTH     IEM Calculated snowfall for the month [inches]\n\n"
  },
  {
    "path": "scripts/coop/day_precip.py",
    "content": "\"\"\"\nDaily precip something\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    nt = NetworkTable(\"IA_COOP\")\n    iem_dbconn = get_dbconn(\"iem\")\n    icursor = iem_dbconn.cursor()\n    coop_dbconn = get_dbconn(\"coop\")\n    ccursor = coop_dbconn.cursor()\n\n    tmpfd = tempfile.NamedTemporaryFile(delete=False, mode=\"w\")\n    tmpfd.write(\"IEMNWSDPR\\n\")\n    tmpfd.write(\"IOWA ENVIRONMENTAL MESONET\\n\")\n    tmpfd.write(\"   NWS COOP STATION DAY PRECIPITATION TOTALS\\n\")\n    tmpfd.write(\"   AS CALCULATED ON THE IEM SERVER\\n\")\n\n    now = datetime.now()\n\n    # Now we load climatology\n    mrain = {}\n    ccursor.execute(\n        \"select station, avg(precip) as rain from alldata_ia WHERE sday = %s \"\n        \"GROUP by station\",\n        (now.strftime(\"%m%d\"),),\n    )\n    for row in ccursor:\n        mrain[row[0]] = row[1]\n\n    dt = now.strftime(\"%d %b %Y\").upper()\n    tmpfd.write(f\"   VALID AT 7AM ON: {dt}\\n\\n\")\n    tmpfd.write(\n        f\"{'ID':6s}{'STATION':24s}{'PREC (IN)':10s}\"\n        f\"{'CLIMO4DATE':11s}{'DIFF':10s}\\n\"\n    )\n\n    queryStr = f\"\"\"\n        SELECT id,  pday  as prectot from summary_{now.year} s\n        JOIN stations t ON (t.iemid = s.iemid)\n        WHERE day = '{now:%Y-%m-%d}' and t.network = 'IA_COOP' and pday >= 0\n    \"\"\"\n\n    icursor.execute(queryStr)\n\n    d = {}\n    for row in icursor:\n        thisStation = row[0]\n        thisPrec = row[1]\n        if thisStation in nt.sts:\n            d[thisStation] = {\"prectot\": thisPrec}\n            d[thisStation][\"name\"] = nt.sts[thisStation][\"name\"]\n            d[thisStation][\"crain\"] = mrain[\n                nt.sts[thisStation][\"climate_site\"]\n            ]\n\n    keys = list(d.keys())\n    keys.sort()\n\n    for k in keys:\n        item = d[k]\n        diff = item[\"prectot\"] - item[\"crain\"]\n        tmpfd.write(\n            f\"{k:6s}{item['name']:24.24s}{item['prectot']:10.2f}\"\n            f\"{item['crain']:11.2f}{diff:10.2f}\\n\"\n        )\n\n    tmpfd.write(\".END\\n\")\n    tmpfd.close()\n    subprocess.call(\n        [\n            \"pqinsert\",\n            \"-p\",\n            \"data c 000000000000 text/IEMNWSDPR.txt bogus txt\",\n            tmpfd.name,\n        ]\n    )\n    os.unlink(tmpfd.name)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/coop/email_rr3_to_harry.py",
    "content": "\"\"\"Send a week's worth of RR3's to the SC.\n\ncalled from crontab\n\"\"\"\n\nimport os\nimport smtplib\nfrom datetime import datetime, timedelta\nfrom email import encoders\nfrom email.mime.base import MIMEBase\nfrom email.mime.multipart import MIMEMultipart\n\nfrom pyiem.database import get_dbconn\n\nWFOS = [\"KDMX\", \"KARX\", \"KDVN\", \"KFSD\", \"KOAX\"]\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    pgconn = get_dbconn(\"afos\")\n    acursor = pgconn.cursor()\n\n    now = datetime.now()\n    sts = now + timedelta(days=-7)\n    sts = sts.replace(hour=0)\n\n    acursor.execute(\n        \"SELECT data, source from products where \"\n        \"pil in ('RR3DMX','RR3DVN','RR3ARX','RR3FSD','RR3OAX','RR1FSD') \"\n        \"and entered > %s ORDER by entered ASC\",\n        (sts,),\n    )\n\n    for row in acursor:\n        with open(f\"/tmp/{row[1]}RR3.txt\", \"a\", encoding=\"ascii\") as fh:\n            fh.write(row[0].replace(\"\\001\", \"\"))\n            fh.write(\"\\n\")\n\n    msg = MIMEMultipart()\n    msg[\"Subject\"] = f\"NWS RR3 Data for {sts:%d %b %Y} - {now:%d %b %Y}\"\n    msg[\"From\"] = \"akrherz@iastate.edu\"\n    msg[\"To\"] = \"justin.glisan@iowaagriculture.gov\"\n    msg.preamble = \"RR3 Report\"\n\n    fn = f\"RR3-{sts:%Y%m%d}-{now:%Y%m%d}.txt\"\n\n    for wfo in WFOS:\n        b = MIMEBase(\"Text\", \"Plain\")\n        with open(f\"/tmp/{wfo}RR3.txt\", \"rb\") as fp:\n            b.set_payload(fp.read())\n        encoders.encode_base64(b)\n        b.add_header(\n            \"Content-Disposition\", f'attachment; filename=\"{wfo}-{fn}\"'\n        )\n        msg.attach(b)\n        os.unlink(f\"/tmp/{wfo}RR3.txt\")\n\n    # Send the email via our own SMTP server.\n    s = smtplib.SMTP(\"mailhub.iastate.edu\")\n    s.sendmail(msg[\"From\"], msg[\"To\"], msg.as_string())\n    s.quit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/coop/extract_coop_obs.py",
    "content": "\"\"\"Dump out obs from the database for use by other apps\n\ncalled from PREC.sh\n\"\"\"\n\nimport os\nimport subprocess\nimport zipfile\nfrom datetime import datetime\n\nimport shapefile\nfrom pyiem.database import get_dbconnc\n\n\ndef main():\n    \"\"\"Go main!\"\"\"\n    pgconn, icursor = get_dbconnc(\"iem\")\n\n    now = datetime.now()\n    ts = now.strftime(\"%Y%m%d\")\n    yyyy = now.strftime(\"%Y\")\n\n    cob = {}\n\n    icursor.execute(\n        f\"\"\"SELECT s.id, coalesce(c.pday, 0) as pday,\n        coalesce(c.snow,-99) as snow, coalesce(c.snowd,-99) as snowd,\n        coalesce(c.max_tmpf, -99) as max_tmpf,\n        coalesce(c.min_tmpf, -99) as min_tmpf,\n        ST_x(s.geom) as lon, ST_y(s.geom) as lat, s.name,\n        c2.valid at time zone 'UTC' as vvv, s.elevation\n        from summary_{yyyy} c, current c2, stations s WHERE\n        c.iemid = c2.iemid and s.iemid = c.iemid and\n        s.network ~* 'COOP' and min_tmpf > -99 and c2.valid > 'TODAY'\n        and day = 'TODAY'\"\"\"\n    )\n\n    for row in icursor:\n        thisStation = row[\"id\"]\n        cob[thisStation] = {}\n        thisPrec = row[\"pday\"]\n        thisSnow = row[\"snow\"]\n        thisSnowD = row[\"snowd\"]\n        thisHigh = row[\"max_tmpf\"]\n        thisLow = row[\"min_tmpf\"]\n\n        # First we update our cobs dictionary\n        cob[thisStation][\"TMPX\"] = int(thisHigh)\n        cob[thisStation][\"TMPN\"] = int(thisLow)\n        cob[thisStation][\"P24I\"] = round(float(thisPrec), 2)\n        cob[thisStation][\"SNOW\"] = float(thisSnow)\n        cob[thisStation][\"SNOD\"] = float(thisSnowD)\n        cob[thisStation][\"LAT\"] = row[\"lat\"]\n        cob[thisStation][\"LON\"] = row[\"lon\"]\n        cob[thisStation][\"NAME\"] = row[\"name\"]\n        cob[thisStation][\"ELEV_M\"] = row[\"elevation\"]\n        cob[thisStation][\"PMOI\"] = 0.0\n        cob[thisStation][\"SMOI\"] = 0.0\n        cob[thisStation][\"HHMM\"] = row[\"vvv\"].strftime(\"%H%M\")\n\n    icursor.execute(\n        f\"\"\"\n        SELECT t.id, sum(pday) as tprec,\n        sum( case when snow > 0 THEN snow ELSE 0 END) as tsnow\n        from summary_{now.year} s, stations t WHERE\n        date_part('month', day) = date_part('month', CURRENT_TIMESTAMP::date)\n        and date_part('year', day) = {now.year}\n        and pday >= 0.00 and t.network ~* 'COOP' and t.iemid = s.iemid\n        GROUP by id\n        \"\"\"\n    )\n\n    for row in icursor:\n        thisStation = row[\"id\"]\n        thisPrec = row[\"tprec\"]\n        thisSnow = row[\"tsnow\"]\n        if thisStation not in cob:\n            continue\n        cob[thisStation][\"PMOI\"] = round(float(thisPrec), 2)\n        cob[thisStation][\"SMOI\"] = round(float(thisSnow), 2)\n    pgconn.close()\n    with open(\"coop.csv\", \"w\", encoding=\"ascii\") as csv:\n        csv.write(\n            \"nwsli,site_name,longitude,latitude,date,time,high_f,low_f,\"\n            \"prec_in,snow_in,snow_depth_in,prec_mon_in,snow_mon_in,\"\n            \"elevation_m\\n\"\n        )\n\n        w = shapefile.Writer(f\"coop_{ts}\")\n        w.field(\"SID\", \"C\", 5, 0)\n        w.field(\"SITE_NAME\", \"C\", 64, 0)\n        w.field(\"ELEV_M\", \"F\", 10, 2)\n        w.field(\"YYYYMMDD\", \"C\", 8, 0)\n        w.field(\"HHMM\", \"C\", 4, 0)\n        w.field(\"HI_T_F\", \"N\", 10, 0)\n        w.field(\"LO_T_F\", \"N\", 10, 0)\n        w.field(\"PREC\", \"F\", 10, 2)\n        w.field(\"SNOW\", \"F\", 10, 2)\n        w.field(\"SDEPTH\", \"F\", 10, 2)\n        w.field(\"PMONTH\", \"F\", 10, 2)\n        w.field(\"SMONTH\", \"F\", 10, 2)\n        for sid, item in cob.items():\n            w.point(item[\"LON\"], item[\"LAT\"])\n            if item[\"P24I\"] < 0:\n                item[\"P24I\"] = -99.0\n            if item[\"SNOW\"] < 0:\n                item[\"SNOW\"] = -99.0\n            if item[\"SNOD\"] < 0:\n                item[\"SNOD\"] = -99.0\n            if item[\"PMOI\"] < 0:\n                item[\"PMOI\"] = -99.0\n            if item[\"SMOI\"] < 0:\n                item[\"SMOI\"] = -99.0\n            w.record(\n                sid,\n                item[\"NAME\"],\n                item[\"ELEV_M\"],\n                ts,\n                \"1200\",\n                item[\"TMPX\"],\n                item[\"TMPN\"],\n                item[\"P24I\"],\n                item[\"SNOW\"],\n                item[\"SNOD\"],\n                item[\"PMOI\"],\n                item[\"SMOI\"],\n            )\n\n            csv.write(\n                f\"{sid},{item['NAME'].replace(',', ' ')},{item['LON']:.4f},\"\n                f\"{item['LAT']:.4f},{ts},{item['HHMM']},{item['TMPX']},\"\n                f\"{item['TMPN']},{item['P24I']},{item['SNOW']},{item['SNOD']},\"\n                f\"{item['PMOI']},{item['SMOI']},{item['ELEV_M']:.1f}\\n\"\n            )\n\n        w.close()\n\n    pqstr = f\"plot c {now:%Y%m%d%H%M} csv/coop.csv bogus csv\"\n    subprocess.call([\"pqinsert\", \"-p\", pqstr, \"coop.csv\"])\n    os.unlink(\"coop.csv\")\n\n    with zipfile.ZipFile(f\"coop_{ts}.zip\", \"w\") as zfn:\n        with open(\"/opt/iem/data/gis/meta/4326.prj\", encoding=\"ascii\") as fh:\n            zfn.writestr(f\"coop_{ts}.prj\", fh.read())\n        with open(\"data.desc\", encoding=\"ascii\") as fh:\n            zfn.writestr(f\"coop_{ts}.txt\", fh.read())\n        for suffix in [\"shp\", \"shx\", \"dbf\"]:\n            zfn.write(f\"coop_{ts}.{suffix}\")\n\n    cmd = [\n        \"pqinsert\",\n        \"-p\",\n        (\n            f\"zip ac {now:%Y%m%d%H%M} gis/shape/4326/iem/coopobs.zip \"\n            f\"GIS/coop_{ts}.zip zip\"\n        ),\n        f\"coop_{ts}.zip\",\n    ]\n    subprocess.call(cmd)\n    for suffix in [\"shp\", \"shx\", \"dbf\", \"zip\"]:\n        os.unlink(f\"coop_{ts}.{suffix}\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/coop/extract_idhs.py",
    "content": "\"\"\"Extraction as requested by IA Public Health.\n\nRun yearly once I get an email asking for it :)\n\"\"\"\n\nimport click\nfrom pyiem.database import get_dbconn\n\n\n@click.command()\n@click.option(\"--year\", type=int, required=True)\ndef main(year):\n    \"\"\"Do Something\"\"\"\n    pgconn = get_dbconn(\"postgis\", rw=False)\n    cursor = pgconn.cursor()\n    cursor2 = pgconn.cursor()\n    pgconn2 = get_dbconn(\"coop\", rw=False)\n    cursor3 = pgconn2.cursor()\n    cursor.execute(\n        \"SELECT ugc, ST_X(centroid), ST_Y(centroid) \"\n        \"from ugcs where state = 'IA' and substr(ugc,3,1) = 'C' \"\n        \"and end_ts is null ORDER by ugc ASC\"\n    )\n    for row in cursor:\n        fips = row[0][3:]\n        # Get closest climodat site\n        cursor2.execute(\n            \"SELECT id, ST_Distance(geom, ST_POINT(%s, %s, 4326)) \"\n            \"from stations where network = 'IACLIMATE' and id != 'IA0000' \"\n            \"and substr(id,3,1) != 'C' and online \"\n            \"ORDER by st_distance ASC LIMIT 1\",\n            (row[1], row[2]),\n        )\n        sid = cursor2.fetchone()[0]\n\n        cursor3.execute(\n            \"SELECT year, month, max(high), min(low), avg((high+low)/2.), \"\n            \"sum(precip), sum(case when high >= 95 then 1 else 0 end), \"\n            \"sum(case when low >= 70 then 1 else 0 end) from alldata_ia WHERE \"\n            \"station = %s and year = %s GROUP by year, month\",\n            (sid, year),\n        )\n        for row2 in cursor3:\n            print(\n                \",\".join(\n                    [\n                        str(i)\n                        for i in [\n                            fips,\n                            row2[0],\n                            row2[1],\n                            row2[2],\n                            row2[3],\n                            row2[4],\n                            row2[5],\n                            row2[6],\n                            row2[7],\n                        ]\n                    ]\n                )\n            )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/coop/first_guess_for_harry.py",
    "content": "\"\"\"\n Generate a first guess file for Harry Hillaker to use for the monthly COOP\n QC, will hopefully save him some time...\n\nCalled from RUN_2AM.sh on Monday\n\"\"\"\n\nimport os\nimport smtplib\nfrom datetime import datetime, timedelta\nfrom email import encoders\nfrom email.mime.base import MIMEBase\nfrom email.mime.multipart import MIMEMultipart\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import logger\nfrom xlwt import Workbook\n\nLOG = logger()\nMESOSITE = get_dbconn(\"mesosite\")\nmcursor = MESOSITE.cursor()\nCOOP = get_dbconn(\"coop\")\nccursor = COOP.cursor()\nHADS = get_dbconn(\"hads\")\nhcursor = HADS.cursor()\n\nDATA = \"\"\"IA0112,ALBI4,A\nIA0133,ALGI4,B\nIA0157,ASNI4,C\nIA0200,AMSI4,F\nIA0203,AESI4,G\nIA0214,AMOI4,H\nIA0241,AKYI4,I\nIA0364,ATLI4,J\nIA0385,AUDI4,K\nIA0536,BCNI4,L\nIA0576,BEDI4,M\nIA0600,BLLI4,N\nIA0608,BLVI4,O\nIA0745,BLKI4,P\nIA0753,BLMI4,Q\nIA0807,BNWI4,R\nIA0910,BRII4,S\nIA0923,BTTI4,T\nIA0933,BRKI4,U\nIA1060,BLGI4,W\nIA1126,CMRI4,V\nIA1233,CINI4,Y\nIA1257,CASI4,Z\nIA1277,CSAI4,AA\nIA1319,CRPI4,AC\nIA1354,CNTI4,AD\nIA1394,CHRI4,AE\nIA1402,CIYI4,AF\nIA1442,CKPI4,AG\nIA1533,CLDI4,AH\nIA1541,CLII4,AI\nIA1635,CLNI4,AJ\nIA0149,ALRI4,AK\nIA1704,CLUI4,AL\nIA1705,CGGI4,AM\nIA0512,BTLI4,AO\nIA1833,CRNI4,AQ\nIA1954,CRCI4,AR\nIA1962,CRTI4,AS\nIA2041,DAKI4,CE\nIA2110,DCRI4,AU\nIA2171,DNSI4,AV\nIA2209,DMX,AX\nIA2235,DWTI4,AY\nIA2299,DNNI4,AZ\nIA2311,DORI4,BA\nIA2364,DLDI4,BB\nIA2573,ELDI4,BE\nIA2603,EKRI4,BF\nIA2638,ELMI4,BD\nIA2689,EMMI4,BG\nIA2724,ESTI4,BI\nIA7892,SNYI4,BJ\nIA2789,FRFI4,BK\nIA2864,FYTI4,BL\nIA2977,FSCI4,BM\nIA2999,WMTI4,BN\nIA3007,FTMI4,BO\nIA3120,GRWI4,BQ\nIA3288,GLNI4,BS\nIA3438,GRNI4,BT\nIA3473,GRII4,BU\nIA3487,GNDI4,BV\nIA3509,GTHI4,BW\nIA3517,GTTI4,BX\nIA3584,HPTI4,BY\nIA3632,HRLI4,CA\nIA3675,HSII4,CF\nIA3718,HAWI4,CB\nIA3909,HSTI4,CC\nIA4063,IDAI4,CH\nIA4094,IONI4,BZ\nIA4101,ICYI4,CI\nIA4142,IWAI4,CK\nIA4228,JFFI4,CL\nIA4244,JWLI4,CM\nIA4308,KANI4,CN\nIA4381,EOKI4,CP\nIA4389,KEQI4,CQ\nIA4502,KNXI4,CR\nIA4557,LMLI4,CS\nIA4585,3OI,CU\nIA4624,LSGI4,CW\nIA4705,LECI4,CX\nIA4735,LEMI4,CY\nIA4758,LENI4,CZ\nIA4874,LSXI4,CO\nIA4894,LOGI4,DA\nIA4926,LORI4,DB\nIA4963,LWDI4,DC\nIA5086,MHRI4,DD\nIA5123,MPTI4,DE\nIA5131,MKTI4,DF\nIA5198,MSHI4,DH\nIA5230,MCWI4,DJ\nIA5235,MCW,DK\nIA5250,MSNI4,DL\nIA5493,MFRI4,DM\nIA5650,MZUI4,DP\nIA5769,MTAI4,DQ\nIA5796,MPZI4,DR\nIA5837,MCTI4,DS\nIA5876,NHUI4,DN\nIA5952,NHPI4,DT\nIA5992,NWTI4,DU\nIA6103,NWDI4,DV\nIA6151,OAKI4,DW\nIA6160,OKMI4,DX\nIA6190,OCHI4,DY\nIA6199,OLNI4,DZ\nIA6243,ONAI4,EB\nIA6273,ORCI4,EG\nIA6305,OSAI4,EC\nIA6316,OSEI4,ED\nIA6327,OSKI4,EE\nIA6527,PEAI4,EH\nIA6566,PERI4,EI\nIA6719,POCI4,EJ\nIA6766,PSTI4,EL\nIA6800,PGHI4,EM\nIA6891,RANI4,EN\nIA6910,RADI4,EO\nIA6940,ROKI4,EP\nIA7147,RKRI4,EQ\nIA7152,RKVI4,ER\nIA7161,RKWI4,ES\nIA7312,SACI4,ET\nIA7326,SANI4,EK\nIA7386,SNBI4,EU\nIA7594,SHDI4,EV\nIA7613,SDHI4,EW\nIA7664,SIBI4,EX\nIA7669,SIDI4,EY\nIA7678,SGYI4,EZ\nIA7700,SIXI4,FA\nIA7859,SPRI4,FC\nIA7726,SXRI4,FE\nIA7844,3SE,FG\nIA7979,SLBI4,FI\nIA8009,SPTI4,FH\nIA8026,SWEI4,FJ\nIA8062,SWHI4,FK\nIA8296,TLDI4,FN\nIA8339,TRPI4,FO\nIA8568,VNTI4,FP\nIA8668,WAPI4,FR\nIA8688,WSHI4,FS\nIA8755,WAUI4,FV\nIA8806,WEBI4,FW\nIA9067,WLBI4,FY\nIA9132,WTRI4,FZ\nIA9750,ZRGI4,GA\nIA8410,UNDI4,GB\nIA8693,WHTI4,GC\"\"\"\n\nMETADATA = {}\nordering = []\nUNCONV_VARS = []\nfor line in DATA.split(\"\\n\"):\n    tokens = line.split(\",\")\n    METADATA[tokens[2].strip()] = {\"IEMRE\": tokens[0], \"NWSLI\": tokens[1]}\n    ordering.append(tokens[2].strip())\n\n\ndef good_value(val, bad):\n    \"\"\"Helper.\"\"\"\n    if val == bad:\n        return \"M\"\n    return val\n\n\ndef get_site(year, month, iemre, nwsli):\n    \"\"\"\n    do our work for this site\n    \"\"\"\n    # Create data dictionary to store our wares\n    data = [0]\n    sts = datetime(year, month, 1)\n    ets = sts + timedelta(days=35)\n    ets = ets.replace(day=1)\n    now = sts\n    while now < ets:\n        data.append(\n            {\n                \"coop\": {\n                    \"high\": \"\",\n                    \"low\": \"\",\n                    \"atob\": \"\",\n                    \"prec\": \"\",\n                    \"sf\": \"\",\n                    \"sog\": \"\",\n                    \"v\": \"\",\n                },\n                \"iemre\": {\n                    \"high\": \"\",\n                    \"low\": \"\",\n                    \"atob\": \"\",\n                    \"prec\": \"\",\n                    \"sf\": \"\",\n                    \"sog\": \"\",\n                },\n            }\n        )\n        now += timedelta(days=1)\n\n    table = f\"raw{year}\"\n    hcursor.execute(\n        f\"\"\"\n    SELECT valid, key, value from {table} WHERE station = %s\n    and valid > %s and valid <= %s\n    and value != -9999 and substr(key,3,1) not in ('H','Q') ORDER by valid ASC\n    \"\"\",\n        (\n            nwsli,\n            sts.strftime(\"%Y-%m-%d 00:00\"),\n            ets.strftime(\"%Y-%m-%d 00:00\"),\n        ),\n    )\n    for row in hcursor:\n        valid = row[0]\n        # Move midnight data back one minute\n        if valid.hour == 0 and valid.minute == 0:\n            valid = valid - timedelta(minutes=1)\n        idx = int(valid.day)\n        key = row[1]\n        if key == \"TAIRGZ\":\n            # This is automated station\n            continue\n        if key in [\"TAIRZXZ\", \"TAIRZX\"]:\n            data[idx][\"coop\"][\"high\"] = row[2]\n        elif key in [\"TAIRZNZ\", \"TAIRZN\"]:\n            data[idx][\"coop\"][\"low\"] = row[2]\n        elif key == \"TAIRZZ\":\n            data[idx][\"coop\"][\"atob\"] = row[2]\n        elif key == \"SFDRZZ\":\n            data[idx][\"coop\"][\"sf\"] = row[2]\n        elif key == \"SDIRZZ\":\n            data[idx][\"coop\"][\"sog\"] = row[2]\n        elif key == \"PPDRZZ\":\n            data[idx][\"coop\"][\"prec\"] = row[2]\n        elif key[:2] in [\"PP\", \"SF\"] and key[2] == \"V\":\n            data[idx][\"coop\"][\"v\"] += f\"{key}/{row[2]} \"\n        elif key[:2] in [\"PP\", \"SD\", \"SF\", \"TA\"]:\n            if key not in UNCONV_VARS:\n                LOG.warning(\"Unaccounted for %s %s %s\", nwsli, valid, key)\n                UNCONV_VARS.append(key)\n\n    ccursor.execute(\n        \"\"\"\n    select extract(day from day), high, low, snow, snowd, precip from\n    alldata_ia where station = %s and year = %s and month = %s\n    \"\"\",\n        (iemre, year, month),\n    )\n    for row in ccursor:\n        idx = int(row[0])\n        data[idx][\"iemre\"][\"high\"] = row[1]\n        data[idx][\"iemre\"][\"low\"] = row[2]\n        data[idx][\"iemre\"][\"sf\"] = row[3]\n        data[idx][\"iemre\"][\"sog\"] = row[4]\n        data[idx][\"iemre\"][\"prec\"] = row[5]\n\n    return data\n\n\ndef get_sitename(site):\n    \"\"\"Go.\"\"\"\n    mcursor.execute(\n        \"\"\"\n        SELECT name from stations where network = 'IACLIMATE'\n        and id = %s\n    \"\"\",\n        (site,),\n    )\n    if mcursor.rowcount == 0:\n        return site\n    return mcursor.fetchone()[0]\n\n\ndef print_data(year, month, iemre, nwsli, sheet, data):\n    \"\"\"\n    Print out our data file!\n    \"\"\"\n    row = sheet.row(0)\n    row.write(8, \"?\")\n    row.write(10, \"?\")\n    row.write(12, f\"{get_sitename(iemre)} {iemre} NWSLI: {nwsli}\")\n    row = sheet.row(1)\n    row.write(2, \"YR\")\n    row.write(3, \"MO\")\n    row.write(4, \"DA\")\n    row.write(6, \"MAX\")\n    row.write(8, \"MIN\")\n    row.write(10, \"ATOB\")\n    row.write(12, \"PREC\")\n    row.write(14, \"SF\")\n    row.write(16, \"SOG\")\n    row.write(17, \"F\")\n    row.write(18, \"I\")\n    row.write(19, \"G\")\n    row.write(20, \"T\")\n    row.write(21, \"H\")\n    row.write(22, \"W\")\n\n    sts = datetime(year, month, 1)\n    ets = sts + timedelta(days=35)\n    ets = ets.replace(day=1)\n    while sts < ets:\n        idx = int(sts.day)\n        row = sheet.row(idx + 1)\n        row.write(0, f\"{int(iemre[2:])}\")\n        row.write(2, year)\n        row.write(3, month)\n        row.write(4, sts.day)\n        row.write(5, data[idx][\"iemre\"][\"high\"])\n        row.write(6, data[idx][\"coop\"][\"high\"])\n        row.write(7, data[idx][\"iemre\"][\"low\"])\n        row.write(8, data[idx][\"coop\"][\"low\"])\n        row.write(10, data[idx][\"coop\"][\"atob\"])\n        row.write(11, data[idx][\"iemre\"][\"prec\"])\n        row.write(12, data[idx][\"coop\"][\"prec\"])\n        row.write(13, data[idx][\"iemre\"][\"sf\"])\n        row.write(14, data[idx][\"coop\"][\"sf\"])\n        row.write(15, data[idx][\"iemre\"][\"sog\"])\n        row.write(16, data[idx][\"coop\"][\"sog\"])\n        row.write(17, data[idx][\"coop\"][\"v\"])\n        sts += timedelta(days=1)\n\n\ndef runner(year, month):\n    \"\"\"\n    Actually generate a text file for the given month\n    @return the filename generated\n    \"\"\"\n    book = Workbook()\n    for label in ordering:\n        data = get_site(\n            year, month, METADATA[label][\"IEMRE\"], METADATA[label][\"NWSLI\"]\n        )\n        sheet = book.add_sheet(label)\n        sheet.col(0).width = 256 * 5\n        sheet.col(1).width = 256 * 2\n        sheet.col(2).width = 256 * 5\n        sheet.col(3).width = 256 * 4\n        sheet.col(4).width = 256 * 4\n        for col in range(5, 17):\n            sheet.col(col).width = 256 * 5\n        print_data(\n            year,\n            month,\n            METADATA[label][\"IEMRE\"],\n            METADATA[label][\"NWSLI\"],\n            sheet,\n            data,\n        )\n    fn = f\"/tmp/IEM{year}{month:02.0f}.xls\"\n    book.save(fn)\n    return fn\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    lastmonth = datetime.now() - timedelta(days=15)\n    fn = runner(lastmonth.year, lastmonth.month)\n    # Email this out!\n    msg = MIMEMultipart()\n    msg[\"Subject\"] = f\"IEM COOP Report for {lastmonth:%b %Y}\"\n    msg[\"From\"] = \"akrherz@iastate.edu\"\n    msg[\"To\"] = \"justin.glisan@iowaagriculture.gov\"\n    msg.preamble = \"COOP Report\"\n\n    b = MIMEBase(\"Application\", \"VND.MS-EXCEL\")\n    with open(fn, \"rb\") as fp:\n        b.set_payload(fp.read())\n    encoders.encode_base64(b)\n    b.add_header(\"Content-Disposition\", f'attachment; filename=\"{fn}\"')\n    msg.attach(b)\n\n    # Send the email via our own SMTP server.\n    s = smtplib.SMTP(\"localhost\")\n    s.sendmail(msg[\"From\"], msg[\"To\"], msg.as_string())\n    s.quit()\n    os.unlink(fn)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/coop/month_precip.py",
    "content": "\"\"\"\nMonthly precip something\n\"\"\"\n\nimport os\nimport subprocess\nfrom datetime import datetime\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef write_data(fp, ccursor, icursor):\n    \"\"\"Write data to fp.\"\"\"\n    nt = NetworkTable(\"IA_COOP\")\n    now = datetime.now()\n    fp.write(\"IEMNWSMPR\\n\")\n    fp.write(\"IOWA ENVIRONMENTAL MESONET\\n\")\n    fp.write(\"   NWS COOP STATION MONTH PRECIPITATION TOTALS\\n\")\n    fp.write(\"   AS CALCULATED ON THE IEM SERVER ...NOTE THE OBS COUNT...\\n\")\n\n    mrain = {}\n    for row in ccursor:\n        mrain[row[0]] = row[1]\n\n    fp.write(f\"   VALID FOR MONTH OF: {now:%d %B %Y}\\n\\n\")\n    fp.write(\n        f\"{'ID':6s}{'STATION':.24s}{'REPORTS':9s}{'PREC (IN)':10s}\"\n        f\"{'CLIMO2DATE':11s}{'DIFF':10s}\\n\"\n    )\n    d = {}\n    for row in icursor:\n        thisStation = row[0]\n        thisPrec = row[2]\n        thisCount = row[1]\n        if thisStation in nt.sts:\n            climate_site = nt.sts[thisStation][\"climate_site\"]\n            if climate_site not in mrain:\n                LOG.warning(\"climate_site has no data: %s\", climate_site)\n                continue\n            d[thisStation] = {\"prectot\": thisPrec, \"cnt\": thisCount}\n            d[thisStation][\"name\"] = nt.sts[thisStation][\"name\"]\n            d[thisStation][\"crain\"] = mrain[\n                nt.sts[thisStation][\"climate_site\"]\n            ]\n\n    keys = list(d.keys())\n    keys.sort()\n\n    for k in keys:\n        item = d[k]\n        diff = item[\"prectot\"] - item[\"crain\"]\n        fp.write(\n            f\"{k:6s}{item['name']:.24s}{item['cnt']:9.0f}\"\n            f\"{item['prectot']:10.2f}{item['crain']:11.2f}{diff:10.2f}\\n\"\n        )\n\n    fp.write(\".END\\n\")\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    iem_pgconn = get_dbconn(\"iem\")\n    icursor = iem_pgconn.cursor()\n    coop_pgconn = get_dbconn(\"coop\")\n    ccursor = coop_pgconn.cursor()\n    now = datetime.now()\n    ccursor.execute(\n        \"\"\"\n        select station, sum(precip) as rain from climate WHERE\n        extract(month from valid) = %s and extract(day from valid) <= %s\n        GROUP by station\n    \"\"\",\n        (now.month, now.day),\n    )\n    icursor.execute(\n        f\"\"\"\n        SELECT id, count(id) as cnt,\n        sum(CASE WHEN pday >= 0 THEN pday ELSE 0 END) as prectot\n        from summary_{now.year} s JOIN stations t on (t.iemid = s.iemid)\n        WHERE date_part('month', day) =\n            date_part('month', CURRENT_TIMESTAMP::date)\n        and pday >= 0 and t.network = 'IA_COOP' GROUP by id\n        \"\"\"\n    )\n\n    with open(\"IEMNWSMPR.txt\", \"w\", encoding=\"ascii\") as fp:\n        write_data(fp, ccursor, icursor)\n    subprocess.call(\n        [\n            \"pqinsert\",\n            \"-p\",\n            \"plot c 000000000000 text/IEMNWSMPR.txt bogus txt\",\n            \"IEMNWSMPR.txt\",\n        ]\n    )\n\n    os.unlink(\"IEMNWSMPR.txt\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/coop/ndfd_extract.py",
    "content": "\"\"\"Extract data from gridded NDFD, seven days of data\n\nTotal precipitation\nMaximum temperature\nMinimum temperature\n\nAttempt to derive climodat data from the NDFD database, we will use the 00 UTC\nfiles.\n\nRun from RUN_10_AFTER.sh at 1z\n\"\"\"\n\nfrom datetime import timedelta, timezone\n\nimport click\nimport numpy as np\nimport pygrib\nimport pyproj\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import archive_fetch, convert_value, logger, utc\n\nLOG = logger()\nnt = NetworkTable(\"IACLIMATE\")\n\n\ndef do_precip(gribs, ftime, data):\n    \"\"\"Precip\"\"\"\n    try:\n        sel = gribs.select(parameterName=\"Total precipitation\")\n    except Exception:\n        LOG.info(\"No precip found at %s\", ftime)\n        return\n    if data[\"x\"] is None:\n        data[\"proj\"] = pyproj.Proj(sel[0].projparams)\n        llcrnrx, llcrnry = data[\"proj\"](\n            sel[0][\"longitudeOfFirstGridPointInDegrees\"],\n            sel[0][\"latitudeOfFirstGridPointInDegrees\"],\n        )\n        nx = sel[0][\"Nx\"]\n        ny = sel[0][\"Ny\"]\n        dx = sel[0][\"DxInMetres\"]\n        dy = sel[0][\"DyInMetres\"]\n        data[\"x\"] = llcrnrx + dx * np.arange(nx)\n        data[\"y\"] = llcrnry + dy * np.arange(ny)\n    cst = ftime - timedelta(hours=6)\n    key = cst.strftime(\"%Y-%m-%d\")\n    d = data[\"fx\"].setdefault(key, dict(precip=None, high=None, low=None))\n    LOG.info(\"Writting precip %s from ftime: %s\", key, ftime)\n    if d[\"precip\"] is None:\n        d[\"precip\"] = sel[0].values\n    else:\n        d[\"precip\"] += sel[0].values\n\n\ndef do_temp(name, dkey, gribs, ftime, data):\n    \"\"\"Temp\"\"\"\n    try:\n        sel = gribs.select(parameterName=name)\n    except Exception:\n        return\n    cst = ftime - timedelta(hours=6)\n    key = cst.strftime(\"%Y-%m-%d\")\n    d = data[\"fx\"].setdefault(key, dict(precip=None, high=None, low=None))\n    LOG.info(\"Writting %s %s from ftime: %s\", name, key, ftime)\n    d[dkey] = convert_value(sel[0].values, \"degK\", \"degF\")\n\n\ndef process(ts):\n    \"\"\"Do Work\"\"\"\n    data = {\"x\": None, \"y\": None, \"proj\": None, \"fx\": {}}\n    # Only have data out 168 hours\n    for fhour in range(1, 169):\n        # Hourly data only goes out 36 hours\n        if (36 < fhour < 72) and fhour % 3 != 0:\n            continue\n        if fhour > 72 and fhour % 6 != 0:\n            continue\n        ftime = ts + timedelta(hours=fhour)\n        ppath = (\n            f\"{ts:%Y/%m/%d}/model/ndfd/{ts:%H}/\"\n            f\"ndfd.t{ts:%H}z.awp2p5f{fhour:03.0f}.grib2\"\n        )\n        with archive_fetch(ppath) as fn:\n            if fn is None:\n                LOG.warning(\"missing: %s\", ppath)\n                continue\n            LOG.info(\"-> %s\", fn)\n            gribs = pygrib.open(fn)\n            do_precip(gribs, ftime, data)\n            do_temp(\"Maximum temperature\", \"high\", gribs, ftime, data)\n            do_temp(\"Minimum temperature\", \"low\", gribs, ftime, data)\n\n    return data\n\n\ndef bnds(val, lower, upper):\n    \"\"\"Make sure a value is between the bounds, or else it is None\"\"\"\n    if val is None:\n        return None\n    if val < lower or val > upper:\n        return None\n    return val\n\n\ndef dbsave(ts, data):\n    \"\"\"Save the data!\"\"\"\n    pgconn = get_dbconn(\"coop\")\n    cursor = pgconn.cursor()\n    # Check to see if we already have data for this date\n    cursor.execute(\n        \"SELECT id from forecast_inventory WHERE model = 'NDFD' and \"\n        \"modelts = %s\",\n        (ts,),\n    )\n    if cursor.rowcount > 0:\n        modelid = cursor.fetchone()[0]\n        cursor.execute(\n            \"DELETE from alldata_forecast where modelid = %s\",\n            (modelid,),\n        )\n        if cursor.rowcount > 0:\n            LOG.warning(\"Removed %s previous entries\", cursor.rowcount)\n    else:\n        cursor.execute(\n            \"INSERT into forecast_inventory(model, modelts) VALUES \"\n            \"('NDFD', %s) RETURNING id\",\n            (ts,),\n        )\n        modelid = cursor.fetchone()[0]\n\n    for date in list(data[\"fx\"].keys()):\n        d = data[\"fx\"][date]\n        if d[\"high\"] is None or d[\"low\"] is None or d[\"precip\"] is None:\n            del data[\"fx\"][date]\n\n    found_data = False\n    for sid, entry in nt.sts.items():\n        # Skip virtual stations\n        if sid[2:] == \"0000\" or sid[2] == \"C\":\n            continue\n        x, y = data[\"proj\"](entry[\"lon\"], entry[\"lat\"])\n        i = np.digitize([x], data[\"x\"])[0]\n        j = np.digitize([y], data[\"y\"])[0]\n        for date in data[\"fx\"]:\n            d = data[\"fx\"][date]\n            high = bnds(float(d[\"high\"][j, i]), -70, 140)\n            low = bnds(float(d[\"low\"][j, i]), -90, 100)\n            precip = bnds(float(d[\"precip\"][j, i] / 25.4), 0, 30)\n            if high is None or low is None or precip is None:\n                continue\n            cursor.execute(\n                \"INSERT into alldata_forecast(modelid, station, day, high, \"\n                \"low, precip) VALUES (%s, %s, %s, %s, %s, %s)\",\n                (modelid, sid, date, int(high), int(low), round(precip, 2)),\n            )\n            found_data = True\n    cursor.close()\n    # Don't commit the cursor when there is no good data found!\n    if found_data:\n        pgconn.commit()\n\n\n@click.command()\n@click.option(\"--date\", \"ts\", help=\"Date to process\")\ndef main(ts):\n    \"\"\"Go!\"\"\"\n    # Extract 00 UTC Data\n    if ts is not None:\n        ts = ts.replace(tzinfo=timezone.utc)\n    else:\n        ts = utc().replace(hour=0, minute=0, second=0, microsecond=0)\n    data = process(ts)\n    if data[\"proj\"] is None:\n        LOG.warning(\"ERROR: found no data!\")\n    else:\n        dbsave(ts, data)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/coop/plot_coop.py",
    "content": "\"\"\"Plot of Precip reports\"\"\"\n\nfrom datetime import datetime, timedelta\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.plot import MapPlot\nfrom pyiem.reference import TRACE_VALUE\n\n\ndef pretty(val, precision=2):\n    \"\"\"Make a value into a prettier string\n\n    Args:\n      val (float): value to convert to a string\n      precision (int): number of places\n    \"\"\"\n    if val == 0:\n        return \"0\"\n    if val == TRACE_VALUE:\n        return \"T\"\n    return (\"%.\" + str(precision) + \"f\") % (val,)\n\n\ndef plot_hilo(valid):\n    \"\"\"Go Main Go\n\n    Args:\n      valid (datetime): The timestamp we are interested in!\n    \"\"\"\n    pgconn = get_dbconn(\"iem\")\n    cursor = pgconn.cursor()\n\n    cursor.execute(\n        \"\"\"SELECT max_tmpf, min_tmpf, id, st_x(geom), st_y(geom)\n    from summary s JOIN stations t on\n    (t.iemid = s.iemid) WHERE s.day = %s\n    and t.network in ('IA_COOP', 'NE_COOP', 'MO_COOP', 'IL_COOP', 'WI_COOP',\n    'MN_COOP')\n    and max_tmpf is not null and max_tmpf >= -30 and\n    min_tmpf is not null and min_tmpf < 99 and\n    extract(hour from coop_valid) between 5 and 10\"\"\",\n        (valid.date(),),\n    )\n    data = []\n    for row in cursor:\n        data.append(  # noqa\n            dict(lat=row[4], lon=row[3], tmpf=row[0], dwpf=row[1], id=row[2])\n        )\n\n    mp = MapPlot(\n        title=f\"{valid:%-d %b %Y} NWS COOP 24 Hour High/Low Temperature [°F]\",\n        subtitle=\"Reports valid between 6 and 9 AM\",\n        axisbg=\"white\",\n        figsize=(10.24, 7.68),\n    )\n    mp.plot_station(data)\n    mp.drawcounties()\n\n    pqstr = f\"plot ac {valid:%Y%m%d}0000 coopHighLow.gif coopHighLow.gif gif\"\n\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n    pgconn.close()\n\n\ndef plot_snowdepth(valid):\n    \"\"\"Go Main Go\n\n    Args:\n      valid (datetime): The timestamp we are interested in!\n    \"\"\"\n    pgconn = get_dbconn(\"iem\")\n    cursor = pgconn.cursor()\n\n    cursor.execute(\n        \"\"\"SELECT snowd, id, st_x(geom), st_y(geom)\n    from summary s JOIN stations t on\n    (t.iemid = s.iemid) WHERE s.day = %s\n    and t.network in ('IA_COOP', 'NE_COOP', 'MO_COOP', 'IL_COOP', 'WI_COOP',\n    'MN_COOP')\n    and snowd is not null and snowd >= 0 and\n    extract(hour from coop_valid) between 5 and 10\"\"\",\n        (valid.date(),),\n    )\n    labels = []\n    vals = []\n    lats = []\n    lons = []\n    for row in cursor:\n        labels.append(row[1])\n        vals.append(pretty(row[0], precision=0))\n        lats.append(row[3])\n        lons.append(row[2])\n\n    mp = MapPlot(\n        title=\"%s NWS COOP Snowfall Depth Reports [inch]\"\n        % (valid.strftime(\"%-d %b %Y\"),),\n        subtitle=\"Reports valid between 6 and 9 AM\",\n        axisbg=\"white\",\n        figsize=(10.24, 7.68),\n    )\n    mp.plot_values(lons, lats, vals, fmt=\"%s\", labels=labels, labelcolor=\"tan\")\n    mp.drawcounties()\n\n    pqstr = \"plot ac %s0000 coopSnowDepth.gif coopSnowDepth.gif gif\" % (\n        valid.strftime(\"%Y%m%d\"),\n    )\n\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n    pgconn.close()\n\n\ndef plot_snow(valid):\n    \"\"\"Go Main Go\n\n    Args:\n      valid (datetime): The timestamp we are interested in!\n    \"\"\"\n    pgconn = get_dbconn(\"iem\")\n    cursor = pgconn.cursor()\n\n    cursor.execute(\n        \"\"\"SELECT snow, id, st_x(geom), st_y(geom)\n    from summary s JOIN stations t on\n    (t.iemid = s.iemid) WHERE s.day = %s\n    and t.network in ('IA_COOP', 'NE_COOP', 'MO_COOP', 'IL_COOP', 'WI_COOP',\n    'MN_COOP')\n    and snow is not null and snow >= 0 and\n    extract(hour from coop_valid) between 5 and 10\"\"\",\n        (valid.date(),),\n    )\n    labels = []\n    vals = []\n    lats = []\n    lons = []\n    for row in cursor:\n        labels.append(row[1])\n        vals.append(pretty(row[0]))\n        lats.append(row[3])\n        lons.append(row[2])\n\n    mp = MapPlot(\n        title=\"%s NWS COOP 24 Hour Snowfall Reports [inch]\"\n        % (valid.strftime(\"%-d %b %Y\"),),\n        subtitle=\"Reports valid between 6 and 9 AM\",\n        axisbg=\"white\",\n        figsize=(10.24, 7.68),\n    )\n    mp.plot_values(lons, lats, vals, fmt=\"%s\", labels=labels, labelcolor=\"tan\")\n    mp.drawcounties()\n\n    pqstr = \"plot ac %s0000 coopSnowPlot.gif coopSnowPlot.gif gif\" % (\n        valid.strftime(\"%Y%m%d\"),\n    )\n\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n    pgconn.close()\n\n\ndef plot_snow_month(valid):\n    \"\"\"Go Main Go\n\n    Args:\n      valid (datetime): The timestamp we are interested in!\n    \"\"\"\n    pgconn = get_dbconn(\"iem\")\n    cursor = pgconn.cursor()\n\n    d1 = valid.replace(day=1)\n    d2 = d1 + timedelta(days=35)\n    d2 = d2.replace(day=1)\n\n    cursor.execute(\n        \"\"\"SELECT sum(snow), id, st_x(geom), st_y(geom)\n    from summary s JOIN stations t on\n    (t.iemid = s.iemid) WHERE s.day >= %s and s.day < %s\n    and t.network in ('IA_COOP', 'NE_COOP', 'MO_COOP', 'IL_COOP', 'WI_COOP',\n    'MN_COOP')\n    and snow is not null and snow >= 0 and\n    extract(hour from coop_valid) between 5 and 10\n    GROUP by id, st_x, st_y\"\"\",\n        (d1.date(), d2.date()),\n    )\n    labels = []\n    vals = []\n    lats = []\n    lons = []\n    for row in cursor:\n        labels.append(row[1])\n        vals.append(pretty(row[0], 0))\n        lats.append(row[3])\n        lons.append(row[2])\n\n    mp = MapPlot(\n        title=\"%s NWS COOP Month Snowfall Totals [inch]\"\n        % (valid.strftime(\"%-d %b %Y\"),),\n        subtitle=\"Reports valid between 6 and 9 AM\",\n        axisbg=\"white\",\n        figsize=(10.24, 7.68),\n    )\n    mp.plot_values(lons, lats, vals, fmt=\"%s\", labels=labels, labelcolor=\"tan\")\n    mp.drawcounties()\n\n    pqstr = \"plot ac %s0000 coopMonthSPlot.gif coopMonthSPlot.gif gif\" % (\n        valid.strftime(\"%Y%m%d\"),\n    )\n\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n    pgconn.close()\n\n\ndef plot_precip_month(valid):\n    \"\"\"Go Main Go\n\n    Args:\n      valid (datetime): The timestamp we are interested in!\n    \"\"\"\n    pgconn = get_dbconn(\"iem\")\n    cursor = pgconn.cursor()\n\n    d1 = valid.replace(day=1)\n    d2 = d1 + timedelta(days=35)\n    d2 = d2.replace(day=1)\n\n    cursor.execute(\n        \"\"\"SELECT sum(pday), id, st_x(geom), st_y(geom)\n    from summary s JOIN stations t on\n    (t.iemid = s.iemid) WHERE s.day >= %s and s.day < %s\n    and t.network in ('IA_COOP', 'NE_COOP', 'MO_COOP', 'IL_COOP', 'WI_COOP',\n    'MN_COOP')\n    and pday is not null and pday >= 0 and\n    extract(hour from coop_valid) between 5 and 10\n    GROUP by id, st_x, st_y\"\"\",\n        (d1.date(), d2.date()),\n    )\n    labels = []\n    vals = []\n    lats = []\n    lons = []\n    for row in cursor:\n        labels.append(row[1])\n        vals.append(pretty(row[0]))\n        lats.append(row[3])\n        lons.append(row[2])\n\n    mp = MapPlot(\n        title=\"%s NWS COOP Month Precipitation Totals [inch]\"\n        % (valid.strftime(\"%-d %b %Y\"),),\n        subtitle=\"Reports valid between 6 and 9 AM\",\n        axisbg=\"white\",\n        figsize=(10.24, 7.68),\n    )\n    mp.plot_values(lons, lats, vals, fmt=\"%s\", labels=labels, labelcolor=\"tan\")\n    mp.drawcounties()\n\n    pqstr = \"plot ac %s0000 coopMonthPlot.gif coopMonthPlot.gif gif\" % (\n        valid.strftime(\"%Y%m%d\"),\n    )\n\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n    pgconn.close()\n\n\ndef plot_precip(valid):\n    \"\"\"Go Main Go\n\n    Args:\n      valid (datetime): The timestamp we are interested in!\n    \"\"\"\n    pgconn = get_dbconn(\"iem\")\n    cursor = pgconn.cursor()\n\n    cursor.execute(\n        \"\"\"SELECT pday, id, st_x(geom), st_y(geom)\n    from summary s JOIN stations t on\n    (t.iemid = s.iemid) WHERE s.day = %s\n    and t.network in ('IA_COOP', 'NE_COOP', 'MO_COOP', 'IL_COOP', 'WI_COOP',\n    'MN_COOP')\n    and pday is not null and pday >= 0 and\n    extract(hour from coop_valid) between 5 and 10\"\"\",\n        (valid.date(),),\n    )\n    labels = []\n    vals = []\n    lats = []\n    lons = []\n    for row in cursor:\n        labels.append(row[1])\n        vals.append(pretty(row[0]))\n        lats.append(row[3])\n        lons.append(row[2])\n\n    mp = MapPlot(\n        title=\"%s NWS COOP 24 Hour Precipitation Reports [inch]\"\n        % (valid.strftime(\"%-d %b %Y\"),),\n        subtitle=\"Reports valid between 6 and 9 AM\",\n        axisbg=\"white\",\n        figsize=(10.24, 7.68),\n    )\n    mp.plot_values(lons, lats, vals, fmt=\"%s\", labels=labels, labelcolor=\"tan\")\n    mp.drawcounties()\n\n    pqstr = \"plot ac %s0000 coopPrecPlot.gif coopPrecPlot.gif gif\" % (\n        valid.strftime(\"%Y%m%d\"),\n    )\n\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n    pgconn.close()\n\n\ndef main():\n    \"\"\"Go Main.\"\"\"\n    plot_precip(datetime.now())\n    plot_snow(datetime.now())\n    plot_snowdepth(datetime.now())\n    plot_hilo(datetime.now())\n    plot_precip_month(datetime.now())\n    plot_snow_month(datetime.now())\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/coop/plot_precip_12z.py",
    "content": "\"\"\"\nGenerate simple plots of 12z COOP preciptiation\n\nCalled from RUN_COOP.sh\n\"\"\"\n\nimport warnings\nfrom datetime import date, datetime\n\nimport click\nfrom psycopg import Connection\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot import MapPlot\n\nwarnings.simplefilter(\"ignore\", UserWarning)\n\n\ndef doit(conn: Connection, dt: date) -> None:\n    \"\"\"\n    Generate some plots for the COOP data!\n    \"\"\"\n    st = NetworkTable(\n        (\n            \"IA_COOP MO_COOP KS_COOP NE_COOP SD_COOP ND_ASOS\"\n            \"MN_COOP WI_COOP IL_COOP IN_COOP OH_COOP MI_COOP\"\n        ).split()\n    )\n\n    clevs = [0, 0.01, 0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.75, 1, 2, 3, 4, 5, 10]\n    # We'll assume all COOP data is 12z, sigh for now\n    table = f\"summary_{dt:%Y}\"\n    res = conn.execute(\n        sql_helper(\n            \"\"\"SELECT id, pday, network\n           from {table} s JOIN stations t ON (t.iemid = s.iemid)\n           WHERE day = :dt and\n           t.network ~* 'COOP' and pday >= 0\"\"\",\n            table=table,\n        ),\n        {\"dt\": dt},\n    )\n\n    lats = []\n    lons = []\n    vals = []\n    iamax = 0.0\n    for row in res:\n        sid = row[0]\n        if sid not in st.sts:\n            continue\n        lats.append(st.sts[sid][\"lat\"])\n        lons.append(st.sts[sid][\"lon\"])\n        vals.append(row[1])\n        if row[2] == \"IA_COOP\" and row[1] > iamax:\n            iamax = row[1]\n\n    # Plot Iowa\n    mp = MapPlot(\n        sector=\"iowa\",\n        title=\"24 Hour NWS COOP Precipitation [inch]\",\n        subtitle=f\"Ending {dt:%d %B %Y} at roughly 12 UTC\",\n    )\n\n    mp.contourf(lons, lats, vals, clevs, units=\"inch\")\n\n    pqstr = (\n        f\"plot ac {dt:%Y%m%d}0000 iowa_coop_12z_precip.png \"\n        \"iowa_coop_12z_precip.png png\"\n    )\n    mp.drawcounties()\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n    mp = MapPlot(\n        sector=\"midwest\",\n        title=\"24 Hour NWS COOP Precipitation [inch]\",\n        subtitle=f\"Ending {dt:%d %B %Y} at roughly 12 UTC\",\n    )\n\n    mp.contourf(lons, lats, vals, clevs, units=\"inch\")\n\n    pqstr = (\n        f\"plot ac {dt:%Y%m%d}0000 midwest_coop_12z_precip.png \"\n        \"midwest_coop_12z_precip.png png\"\n    )\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n\n@click.command()\n@click.option(\n    \"--date\",\n    \"dt\",\n    required=True,\n    type=click.DateTime(),\n    help=\"Date to process\",\n)\ndef main(dt: datetime):\n    \"\"\"Go Main Go\"\"\"\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        doit(conn, dt.date())\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/coop/today_precip.py",
    "content": "\"\"\"Plot the COOP Precipitation Reports, don't use lame-o x100\n\ncalled from PREC.sh\n\"\"\"\n\nfrom datetime import datetime\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.plot import MapPlot\nfrom pyiem.reference import TRACE_VALUE\n\n\ndef n(val):\n    \"\"\"pretty\"\"\"\n    if val == TRACE_VALUE:\n        return \"T\"\n    if val == 0:\n        return \"0\"\n    return f\"{val:.2f}\"\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        obs = pd.read_sql(\n            sql_helper(\"\"\"\n        select id, ST_x(s.geom) as lon, ST_y(s.geom) as lat, pday\n        from summary c, stations s\n        WHERE day = 'TODAY' and pday >= 0 and pday < 20\n        and s.network = 'IA_COOP' and s.iemid = c.iemid\n    \"\"\"),\n            conn,\n            index_col=None,\n        )\n\n    mp = MapPlot(\n        title=\"Iowa COOP 24 Hour Precipitation\",\n        axisbg=\"white\",\n        subtitle=f\"ending approximately {datetime.now():%-d %b %Y} 7 AM\",\n    )\n    mp.plot_values(obs[\"lon\"], obs[\"lat\"], obs[\"pday\"].apply(n))\n    pqstr = (\n        f\"plot ac {datetime.now():%Y%m%d%H%M} iowa_coop_precip.png \"\n        \"iowa_coop_precip.png png\"\n    )\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/coop/use_acis.py",
    "content": "\"\"\"Use data provided by ACIS to replace IEM COOP data.\"\"\"\n\nimport sys\nfrom datetime import date, datetime, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport httpx\nimport pandas as pd\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.observation import Observation\nfrom pyiem.reference import TRACE_VALUE\nfrom pyiem.util import logger\nfrom tqdm import tqdm\n\nLOG = logger()\nSERVICE = \"http://data.rcc-acis.org/StnData\"\n\n\ndef safe(val):\n    \"\"\"Hack\"\"\"\n    if val.endswith(\"A\"):  # unsure\n        return None\n    if val in [\"M\", \"S\"]:\n        return None\n    if val == \"T\":\n        return TRACE_VALUE\n    # Multi-day we can't support\n    if isinstance(val, str) and val.endswith(\"A\"):\n        return None\n    try:\n        return float(val)\n    except Exception as exp:\n        LOG.warning(\n            \"%s failed to convert %s to float, using None\", exp, repr(val)\n        )\n    return None\n\n\ndef is_new(newval, oldval):\n    \"\"\"Is this new value new?\"\"\"\n    if pd.isna(newval):\n        return False\n    if pd.isna(oldval):\n        return True\n    if newval == oldval:\n        return False\n    return True\n\n\n@click.command()\n@click.option(\"--state\")\n@click.option(\"--station\", default=None)\ndef main(state, station):\n    \"\"\"Run for a given state.\"\"\"\n    network = f\"{state}_COOP\"\n    # We are only asking for the last 720 days of data, so might as well only\n    # do stations that are currently known to be `online`\n    nt = NetworkTable(network, only_online=station is None)\n    ets = date.today() - timedelta(days=1)\n    sts = ets - timedelta(days=720)\n    pgconn, cursor = get_dbconnc(\"iem\")\n    # Lame for now\n    cursor.close()\n    ids = nt.sts.keys() if station is None else [station]\n    progress = tqdm(ids, total=len(ids), disable=not sys.stdout.isatty())\n    for nwsli in progress:\n        progress.set_description(nwsli)\n        tz = ZoneInfo(nt.sts[nwsli][\"tzname\"])\n        with get_sqlalchemy_conn(\"iem\") as conn:\n            obsdf = pd.read_sql(\n                \"SELECT day, max_tmpf as maxt, min_tmpf as mint, \"\n                \"pday as pcpn, snow, snowd as snwd, coop_tmpf as obst \"\n                \"from summary WHERE iemid = %s and day >= %s and day <= %s \"\n                \"ORDER by day ASC\",\n                conn,\n                params=(nt.sts[nwsli][\"iemid\"], sts, ets),\n                index_col=\"day\",\n            )\n        obsdf = obsdf.reindex(pd.date_range(sts, ets))\n        payload = {\n            \"sid\": nwsli,\n            \"sdate\": sts.strftime(\"%Y-%m-%d\"),\n            \"edate\": ets.strftime(\"%Y-%m-%d\"),\n            \"elems\": [\n                {\"name\": \"obst\", \"add\": \"t\"},\n                {\"name\": \"maxt\", \"add\": \"t\"},\n                {\"name\": \"mint\", \"add\": \"t\"},\n                {\"name\": \"pcpn\", \"add\": \"t\"},\n                {\"name\": \"snow\", \"add\": \"t\"},\n                {\"name\": \"snwd\", \"add\": \"t\"},\n            ],\n        }\n        try:\n            resp = httpx.post(SERVICE, json=payload, timeout=30)\n            resp.raise_for_status()\n            j = resp.json()\n        except Exception as exp:\n            LOG.warning(\"download and processing failed for %s\", nwsli)\n            LOG.exception(exp)\n            continue\n        cursor = pgconn.cursor()\n        if \"data\" not in j:\n            LOG.warning(\"Did not get data for %s ACIS request\", nwsli)\n            continue\n        updates = 0\n        for row in j[\"data\"]:\n            dt = datetime.strptime(row[0], \"%Y-%m-%d\")\n            data = {}\n            hour = None\n            current = obsdf.loc[dt]\n            for i, col in enumerate(\"obst maxt mint pcpn snow snwd\".split()):\n                val = safe(row[i + 1][0])\n                if not is_new(val, current[col]):\n                    continue\n                data[col] = val\n                if hour is None:\n                    hour = row[i + 1][1]\n            if not data or hour < 0:\n                continue\n            valid = datetime(\n                dt.year,\n                dt.month,\n                dt.day,\n                hour if hour < 24 else 23,\n                0 if hour < 24 else 59,\n                tzinfo=tz,\n            )\n            ob = Observation(nwsli, network, valid)\n            ob.data[\"coop_valid\"] = valid\n            if \"maxt\" in data:\n                ob.data[\"max_tmpf\"] = data[\"maxt\"]\n            if \"mint\" in data:\n                ob.data[\"min_tmpf\"] = data[\"mint\"]\n            if \"obst\" in data:\n                ob.data[\"coop_tmpf\"] = data[\"obst\"]\n            if \"pcpn\" in data:\n                ob.data[\"pday\"] = data[\"pcpn\"]\n            if \"snow\" in data:\n                ob.data[\"snow\"] = data[\"snow\"]\n            if \"snwd\" in data:\n                ob.data[\"snowd\"] = data[\"snwd\"]\n            ob.save(cursor, skip_current=True)\n            updates += 1\n        if updates > 0:\n            LOG.warning(\"Updated %s rows for %s\", updates, nwsli)\n        cursor.close()\n        pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/coop/year_precip.py",
    "content": "\"\"\"Yearly precip something\"\"\"\n\nimport os\nimport subprocess\nfrom datetime import datetime\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    nt = NetworkTable(\"IA_COOP\")\n    iem_pgconn = get_dbconn(\"iem\")\n    icursor = iem_pgconn.cursor()\n    coop_pgconn = get_dbconn(\"coop\")\n    ccursor = coop_pgconn.cursor()\n\n    with open(\"IEMNWSYPR.txt\", \"w\", encoding=\"ascii\") as fp:\n        fp.write(\"IEMNWSYPR\\n\")\n        fp.write(\"IOWA ENVIRONMENTAL MESONET\\n\")\n        fp.write(\"   NWS COOP STATION YEAR PRECIPITATION TOTALS\\n\")\n        fp.write(\"   AS CALCULATED ON THE IEM SERVER\\n\")\n\n        now = datetime.now()\n        jdays = now.strftime(\"%j\")\n\n        mrain = {}\n        ccursor.execute(\n            f\"\"\"\n            select station, sum(precip) as rain from climate WHERE\n            valid <= '2000-{now:%m-%d}'\n            GROUP by station\n        \"\"\"\n        )\n        for row in ccursor:\n            mrain[row[0]] = row[1]\n\n        fp.write(f\"   TOTAL REPORTS POSSIBLE: {jdays}\\n\")\n\n        fp.write(f\"   VALID FOR YEAR THRU: {now:%d %B %Y}\\n\\n\")\n        fp.write(\n            f\"{'ID':<6s}{'STATION':<24.24s}{'REPORTS':9s}\"\n            f\"{'PREC (IN)':10s}{'CLIMO2DATE':11s}{'DIFF':10s}\\n\"\n        )\n\n        icursor.execute(\n            f\"\"\"\n            SELECT id, count(id) as cnt,\n            sum(CASE WHEN pday > 0 THEN pday ELSE 0 END) as prectot\n            from summary_{now.year} s JOIN stations t ON (s.iemid = t.iemid)\n            WHERE t.network = 'IA_COOP' and pday >= 0\n            GROUP by id\"\"\"\n        )\n\n        data = {}\n        for row in icursor:\n            station = row[0]\n            prec = row[2]\n            count = row[1]\n            if station in nt.sts:\n                clstation = nt.sts[station][\"climate_site\"]\n                if clstation not in mrain:\n                    continue\n                data[station] = {\"prectot\": prec, \"cnt\": count}\n                data[station][\"name\"] = nt.sts[station][\"name\"]\n                data[station][\"crain\"] = mrain[clstation]\n\n        keys = list(data.keys())\n        keys.sort()\n\n        for k in keys:\n            item = data[k]\n            diff = item[\"prectot\"] - item[\"crain\"]\n            fp.write(\n                f\"{k:<6s}{item['name']:<24.24s}{item['cnt']:9.0f}\"\n                f\"{item['prectot']:10.2f}{item['crain']:11.2f}\"\n                f\"{diff:10.2f}\\n\"\n            )\n\n        fp.write(\".END\\n\")\n\n    subprocess.call(\n        [\n            \"pqinsert\",\n            \"-p\",\n            \"plot c 000000000000 text/IEMNWSYPR.txt bogus txt\",\n            \"IEMNWSYPR.txt\",\n        ]\n    )\n\n    os.unlink(\"IEMNWSYPR.txt\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/crontab",
    "content": "# Dumpster fire of crontab entries that I have running all over the place.\nBASH_ENV=/home/mesonet/.bashrc\nSHELL=/bin/bash\nS=/opt/iem/scripts\n\n# Datateam additions\n0 6 * * * sh /opt/datateam/scripts/RUN_6AM.sh\n\n#\n0 18,19 * * * cd $S; sh RUN_0Z.sh\n1 18,19 * * * cd $S; sh RUN_0Z_ERA5LAND.sh\n0 0 * * * cd $S; sh RUN_MIDNIGHT.sh\n30 4 * * * cd $S; sh RUN_CLIMODAT_STATE.sh\n0 12 * * * cd $S; sh RUN_NOON.sh\n# Run at 1:51 to avoid issue with 2AM on DST switch\n51 1 * * * cd $S; sh RUN_2AM.sh\n10 6,7 * * * cd $S; sh RUN_12Z.sh\n\n10 * * * * cd $S; sh RUN_10_AFTER.sh \n20 * * * * cd $S; sh RUN_20_AFTER.sh \n40 * * * * cd $S; sh RUN_40_AFTER.sh \n50 * * * * cd $S; sh RUN_50_AFTER.sh \n59 * * * * cd $S; sh RUN_59_AFTER.sh \n59 * * * * cd $S; sh RUN_STAGE4.sh \n\n1 1,7 * * * cd $S; sh RUN_SUMMARY.sh\n10 6,7,8,9,10 * * * cd $S; sh RUN_COOP.sh\n\n*/20 * * * * cd $S; sh RUN_20MIN.sh\n1,11,21,31,41,51 * * * * cd $S; sh RUN_10MIN.sh\n*/5 * * * * cd $S; sh RUN_5MIN.sh\n* * * * * cd $S; sh RUN_1MIN.sh\n\n# Drought Monitor\n30 8 * * 4 cd /opt/iem/scripts/usdm; python process_usdm.py\n\n# Email Harry RR3 data\n14 14 * * 5 cd $S/coop; python email_rr3_to_harry.py\n\n# Process last month's asos 1 min\n4 4 9 * * cd $S/ingestors/asos_1minute; python parse_ncei_asos1minute.py --year=$(date --date '11 days ago' +'\\%Y') --month=$(date --date '11 days ago' +'\\%m')\n# Process RT asos 1 min\n6 15 * * * cd $S/ingestors/asos_1minute; python parse_ncei_asos1minute.py --date=$(date +'\\%Y-\\%m-\\%d')\n\n03,13,24 * * * * cd $S/plots; ./HOURLY_PLOTS\n\n# webalizer\n0 0 * * * cd $S/webalizer; sh processlogs.sh\n\n# Run 36h runs dont finish until 50 after\n55 * * * * cd $S; sh RUN_40_AFTER_2.sh\n\n*/2 * * * * cd $S/mrms; sleep 40; timeout 60 python mesh_contours.py --minutes=2 --datetime $(date -u --date '2 minutes ago' +'\\%Y-\\%m-\\%dT\\%H:\\%M'):00\n*/2 * * * * cd $S/mrms; timeout 240 python mesh_contours.py -minutes=30 --valid=$(date -u --date '2 minutes ago' +'\\%Y-\\%m-\\%dT\\%H:\\%M'):00\n0 * * * * cd $S/mrms; sleep 10; python mesh_contours.py --minutes=60 --valid=$(date -u --date '2 minutes ago' +'\\%Y-\\%m-\\%dT\\%H:\\%M'):00\n0 * * * * cd $S/mrms; sleep 15; python mesh_contours.py --minutes=1440 --valid=$(date -u --date '2 minutes ago' +'\\%Y-\\%m-\\%dT\\%H:\\%M'):00\n\n# Archive ISUSM data\n26 6 * * * cd $S/isusm; python archiver.py\n"
  },
  {
    "path": "scripts/current/ifc_today_total.py",
    "content": "\"\"\"\nCreate a plot of today's IFC estimated precip\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport click\nimport numpy as np\nfrom pyiem.iemre import daily_offset\nfrom pyiem.plot import MapPlot, nwsprecip\nfrom pyiem.util import mm2inch, ncopen\n\n\ndef doday(ts, realtime):\n    \"\"\"\n    Create a plot of precipitation IFC estimates for some day\n    \"\"\"\n    idx = daily_offset(ts)\n    with ncopen(\n        f\"/mesonet/data/iemre/{ts.year}_ifc_daily.nc\", timeout=300\n    ) as nc:\n        xaxis = nc.variables[\"lon\"][:]\n        yaxis = nc.variables[\"lat\"][:]\n        total = nc.variables[\"p01d\"][idx, :, :]\n    lastts = datetime(ts.year, ts.month, ts.day, 23, 59)\n    if realtime:\n        now = datetime.now() - timedelta(minutes=60)\n        lastts = now.replace(minute=59)\n    subtitle = f\"Total between 12:00 AM and {lastts:%I:%M %p}\"\n    routes = \"ac\"\n    if not realtime:\n        routes = \"a\"\n\n    clevs = [\n        0.01,\n        0.1,\n        0.25,\n        0.5,\n        0.75,\n        1,\n        1.5,\n        2,\n        2.5,\n        3,\n        3.5,\n        4,\n        5,\n        6,\n        8,\n        10,\n    ]\n\n    pqstr = (\n        f\"plot {routes} {ts:%Y%m%d%H}00 iowa_ifc_1d.png iowa_ifc_1d.png png\"\n    )\n    mp = MapPlot(\n        title=f\"{ts:%-d %b %Y} Iowa Flood Center Today's Precipitation\",\n        subtitle=subtitle,\n        sector=\"custom\",\n        west=xaxis[0],\n        east=xaxis[-1],\n        south=yaxis[0],\n        north=yaxis[-1],\n    )\n\n    (lons, lats) = np.meshgrid(xaxis, yaxis)\n\n    mp.pcolormesh(\n        lons, lats, mm2inch(total), clevs, cmap=nwsprecip(), units=\"inch\"\n    )\n    mp.drawcounties()\n    mp.postprocess(pqstr=pqstr, view=False)\n    mp.close()\n\n\n@click.command()\n@click.option(\n    \"--date\",\n    \"dt\",\n    type=click.DateTime(),\n    help=\"Date to process\",\n    required=True,\n)\n@click.option(\"--realtime\", is_flag=True, help=\"Operate in realtime mode\")\ndef main(dt: datetime, realtime: bool):\n    \"\"\"Go Main Go\"\"\"\n    doday(dt.date(), realtime)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/current/lsr_snow_mapper.py",
    "content": "\"\"\"Create an analysis of LSR snowfall reports\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\n\nimport httpx\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import (\n    get_properties,\n    logger,\n    set_property,\n    utc,\n)\n\nLOG = logger()\n\n\ndef website_enable_check():\n    \"\"\"See if we should turn on the homepage graphic.\"\"\"\n    # See what our current status is\n    status = get_properties().get(\"homepage.lsrmap.on\") == \"true\"\n    # See if we have any recent LSRs\n    postgis = get_dbconn(\"postgis\")\n    cursor = postgis.cursor()\n    cursor.execute(\n        \"SELECT valid from lsrs WHERE valid > now() - '12 hours'::interval \"\n        \"and state = 'IA' and type = 'S'\"\n    )\n    has_lsrs = cursor.rowcount > 0\n    cursor.close()\n    postgis.close()\n    if status == has_lsrs:\n        return\n    LOG.warning(\"Setting homepage.lsrmap.on to %s\", has_lsrs)\n    set_property(\"homepage.lsrmap.on\", \"true\" if has_lsrs else \"false\")\n\n\ndef do(url, fn):\n    \"\"\"Do the work.\"\"\"\n    try:\n        resp = httpx.get(url, timeout=30)\n        resp.raise_for_status()\n    except Exception as exp:\n        LOG.info(\"failure %s for %s\", exp, url)\n        return\n    with tempfile.NamedTemporaryFile(delete=False) as tmpfd:\n        tmpfd.write(resp.content)\n    pqstr = f\"plot c {utc():%Y%m%d%H%M} {fn} bogus{utc().second} png\"\n    subprocess.call([\"pqinsert\", \"-i\", \"-p\", pqstr, tmpfd.name])\n    os.unlink(tmpfd.name)\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    ap207 = \"http://iem.local/plotting/auto/plot/207\"\n    url = f\"{ap207}/t:state::csector:IA::p:both::hours:12::sz:25.png\"\n    do(url, \"lsr_snowfall.png\")\n\n    url = f\"{ap207}/t:state::csector:IA::p:contour::hours:12::sz:25.png\"\n    do(url, \"lsr_snowfall_nv.png\")\n\n    # -----------------\n    url = f\"{ap207}/t:state::csector:midwest::p:contour::hours:12::sz:25.png\"\n    do(url, \"mw_lsr_snowfall.png\")\n\n    website_enable_check()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/current/mrms_today_total.py",
    "content": "\"\"\"\nCreate a plot of today's estimated precipitation based on the MRMS data.\n\nCalled from RUN_10_AFTER.sh\n\"\"\"\n\nimport os\nfrom datetime import date, datetime, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport numpy as np\nimport pyiem.iemre as iemre\nfrom pyiem.plot import MapPlot, nwsprecip\nfrom pyiem.util import logger, mm2inch, ncopen, utc\n\nLOG = logger()\n\n\ndef doday(ts, realtime):\n    \"\"\"\n    Create a plot of precipitation MRMS estimates for some day\n    \"\"\"\n    lts = utc(ts.year, ts.month, ts.day, 12)\n    lts = lts.astimezone(ZoneInfo(\"America/Chicago\"))\n    # make assumptions about the last valid MRMS data\n    if realtime:\n        # Up until :59 after of the last hour\n        lts = (datetime.now() - timedelta(hours=1)).replace(minute=59)\n    else:\n        lts = lts.replace(\n            year=ts.year, month=ts.month, day=ts.day, hour=23, minute=59\n        )\n\n    idx = iemre.daily_offset(ts)\n    ncfn = iemre.get_daily_mrms_ncname(ts.year)\n    if not os.path.isfile(ncfn):\n        LOG.info(\"File %s missing, abort.\", ncfn)\n        return\n    with ncopen(ncfn, timeout=300) as nc:\n        precip = nc.variables[\"p01d\"][idx, :, :]\n        lats = nc.variables[\"lat\"][:]\n        lons = nc.variables[\"lon\"][:]\n    subtitle = f\"Total between 12:00 AM and {lts:%I:%M %p %Z}\"\n    routes = \"ac\"\n    if not realtime:\n        routes = \"a\"\n    clevs = [\n        0.01,\n        0.1,\n        0.25,\n        0.5,\n        0.75,\n        1,\n        1.5,\n        2,\n        2.5,\n        3,\n        3.5,\n        4,\n        5,\n        6,\n        8,\n        10,\n    ]\n\n    (xx, yy) = np.meshgrid(lons, lats)\n    for sector in [\"iowa\", \"midwest\"]:\n        pqstr = (\n            f\"plot {routes} {ts:%Y%m%d%H}00 {sector}_q2_1d.png \"\n            f\"{sector}_q2_1d.png png\"\n        )\n        mp = MapPlot(\n            title=f\"{ts:%-d %b %Y} NCEP MRMS Today's Precipitation\",\n            subtitle=subtitle,\n            sector=sector,\n        )\n\n        mp.pcolormesh(\n            xx, yy, mm2inch(precip), clevs, cmap=nwsprecip(), units=\"inch\"\n        )\n        if sector == \"iowa\":\n            mp.drawcounties()\n        mp.postprocess(pqstr=pqstr, view=False)\n        mp.close()\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", required=True, type=click.DateTime())\ndef main(dt: datetime):\n    \"\"\"Main Method\"\"\"\n    dt = dt.date()\n    doday(dt, dt == date.today())\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/current/plot_hilo.py",
    "content": "\"\"\"Plot the High + Low Temperatures.\n\nCalled from RUN_10_AFTER.sh and RUN_SUMMARY.sh\n\"\"\"\n\nfrom datetime import datetime\n\nimport click\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.plot import MapPlot\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), required=True)\ndef main(dt: datetime):\n    \"\"\"Go Main Go\"\"\"\n    now = dt.today()\n    routes = \"ac\" if now == dt.today() else \"a\"\n\n    table = f\"summary_{now:%Y}\"\n\n    # Compute normal from the climate database\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        obs = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    SELECT\n      s.id, max_tmpf as tmpf, min_tmpf as dwpf,\n      ST_x(s.geom) as lon, ST_y(s.geom) as lat\n    FROM\n      {table} c JOIN stations s on (c.iemid = s.iemid)\n    WHERE\n      s.network = 'IA_ASOS' and day = :dt\n      and max_tmpf is not null and min_tmpf is not null\n    \"\"\",\n                table=table,\n            ),\n            conn,\n            params={\"dt\": now},\n        )\n\n    mp = MapPlot(\n        title=\"Iowa High & Low Air Temperature\",\n        axisbg=\"white\",\n        subtitle=now.strftime(\"%d %b %Y\"),\n    )\n    mp.plot_station(obs.to_dict(\"records\"))\n    mp.drawcounties()\n    pqstr = f\"plot {routes} {now:%Y%m%d}0000 bogus hilow.gif png\"\n    mp.postprocess(view=False, pqstr=pqstr)\n    mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/current/q3_xhour.py",
    "content": "\"\"\"Create a plot of the X Hour interval precipitation.\n\nRun from RUN_10_AFTER.sh for 1,3 and 6 hours ago\n\"\"\"\n\nimport gzip\nimport os\nimport tempfile\nfrom datetime import datetime, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport numpy as np\nimport pygrib\nfrom pyiem import mrms\nfrom pyiem.plot import MapPlot, nwsprecip\nfrom pyiem.util import logger, mm2inch, utc\n\nLOG = logger()\nTMP = \"/mesonet/tmp\"\n\n\ndef doit(ts, hours):\n    \"\"\"\n    Create a plot of precipitation MRMS estimates for some day\n    \"\"\"\n    # Start at 1 AM\n    ts = ts.replace(minute=0, second=0, microsecond=0)\n    now = ts - timedelta(hours=hours - 1)\n    interval = timedelta(hours=1)\n    ets = utc()\n    total = None\n    while now < ets:\n        gmt = now.astimezone(ZoneInfo(\"UTC\"))\n        gribfn = None\n        for prefix in [\"MultiSensor_QPE_01H_Pass2\", \"RadarOnly_QPE_01H\"]:\n            gribfn = mrms.fetch(prefix, gmt)\n            if gribfn is None:\n                continue\n            break\n        if gribfn is None:\n            LOG.info(\"%s MISSING %s\", hours, now)\n            now += interval\n            continue\n        with (\n            gzip.GzipFile(gribfn, \"rb\") as gzfp,\n            tempfile.NamedTemporaryFile(delete=False) as fp,\n        ):\n            fp.write(gzfp.read())\n        grbs = pygrib.open(fp.name)\n        grb = grbs[1]\n        grbs.close()\n        os.unlink(fp.name)\n        # careful here, how we deal with the two missing values!\n        if total is None:\n            total = grb[\"values\"]\n        else:\n            maxgrid = np.maximum(grb[\"values\"], total)\n            total = np.where(\n                np.logical_and(grb[\"values\"] >= 0, total >= 0),\n                grb[\"values\"] + total,\n                maxgrid,\n            )\n        now += interval\n        os.unlink(gribfn)\n\n    if total is None:\n        LOG.info(\"no data ts: %s hours: %s\", ts, hours)\n        return\n\n    # Scale factor is 10\n    routes = \"c\"\n    if ts.minute == 0:\n        routes = \"ac\"\n    pqstr = (\n        f\"plot {routes} {ts:%Y%m%d%H%M} iowa_q2_{hours}h.png \"\n        f\"q2/iowa_q2_{hours}h_{ts:%H}00.png png\"\n    )\n\n    lts = ts.astimezone(ZoneInfo(\"America/Chicago\"))\n    subtitle = f\"Total up to {lts:%d %B %Y %I:%M %p %Z}\"\n    mp = MapPlot(\n        title=f\"NCEP MRMS (RADAR Only) {hours} Hour Precipitation [inch]\",\n        subtitle=subtitle,\n    )\n\n    clevs = [0.01, 0.1, 0.3, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 5, 6, 8, 10]\n\n    x, y = np.meshgrid(mrms.XAXIS, mrms.YAXIS)\n    mp.contourf(\n        x,\n        y,\n        mm2inch(np.flipud(total)),\n        clevs,\n        cmap=nwsprecip(),\n    )\n    mp.drawcounties()\n    mp.postprocess(pqstr=pqstr, view=False)\n    mp.close()\n\n\n@click.command()\n@click.option(\"--hours\", type=int, default=1, help=\"Number of hours to accum\")\n@click.option(\"--valid\", type=click.DateTime(), help=\"UTC Timestamp\")\ndef main(hours: int, valid: datetime):\n    \"\"\"Go main\"\"\"\n    valid = utc()\n    if valid is not None:\n        valid = valid.replace(tzinfo=ZoneInfo(\"UTC\"))\n    doit(valid, hours)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/current/rwis_station.py",
    "content": "\"\"\"Iowa RWIS station plot!\"\"\"\n\nfrom datetime import datetime\n\nfrom pyiem.database import get_dbconnc\nfrom pyiem.plot import MapPlot\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    now = datetime.now()\n    pgconn, icursor = get_dbconnc(\"iem\")\n\n    # Compute normal from the climate database\n    icursor.execute(\n        \"\"\"\n    SELECT\n      s.id, tmpf, dwpf, sknt, drct,  ST_x(s.geom) as lon, ST_y(s.geom) as lat\n    FROM\n      current c, stations s\n    WHERE\n      s.network IN ('IA_RWIS') and c.iemid = s.iemid and\n      valid + '20 minutes'::interval > now() and\n      tmpf > -50 and dwpf > -50 and drct is not null\n    \"\"\"\n    )\n    data = icursor.fetchall()\n    pgconn.close()\n\n    mp = MapPlot(\n        axisbg=\"white\",\n        title=\"Iowa DOT RWIS Mesoplot\",\n        subtitle=f\"plot valid {now:%-d %b %Y %H:%M %P}\",\n    )\n    mp.plot_station(data)\n    mp.drawcounties(color=\"#EEEEEE\")\n    pqstr = \"plot c 000000000000 iowa_rwis.png bogus png\"\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/current/stage4_hourly.py",
    "content": "\"\"\"\nPlot the hourly stage IV precip data\n\"\"\"\n\nfrom datetime import timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport pygrib\nfrom pyiem.plot import MapPlot, get_cmap\nfrom pyiem.util import archive_fetch, logger, mm2inch, utc\n\nLOG = logger()\n\n\ndef doit(ts):\n    \"\"\"\n    Generate hourly plot of stage4 data\n    \"\"\"\n    gmtnow = utc()\n    routes = \"a\"\n    if ((gmtnow - ts).days * 86400.0 + (gmtnow - ts).seconds) < 7200:\n        routes = \"ac\"\n\n    ppath = f\"{ts:%Y/%m/%d}/stage4/ST4.{ts:%Y%m%d%H}.01h.grib\"\n    with archive_fetch(ppath) as fn:\n        if fn is None:\n            LOG.info(\"Missing stage4 %s\", ppath)\n            return\n        try:\n            grbs = pygrib.open(fn)\n            grib = grbs[1]\n        except Exception:\n            LOG.warning(\"Read %s failure\", fn)\n            return\n        lats, lons = grib.latlons()\n        vals = mm2inch(grib.values)\n\n    cmap = get_cmap(\"jet\")\n    cmap.set_under(\"white\")\n    cmap.set_over(\"black\")\n    clevs = [\n        0.01,\n        0.05,\n        0.1,\n        0.2,\n        0.3,\n        0.4,\n        0.5,\n        0.6,\n        0.7,\n        0.8,\n        0.9,\n        1,\n        1.5,\n        2,\n        3,\n    ]\n    localtime = ts.astimezone(ZoneInfo(\"America/Chicago\"))\n\n    for sector in [\"iowa\", \"midwest\", \"conus\"]:\n        mp = MapPlot(\n            sector=sector,\n            title=\"Stage IV One Hour Precipitation\",\n            subtitle=\"Hour Ending %s\"\n            % (localtime.strftime(\"%d %B %Y %I %p %Z\"),),\n        )\n        mp.pcolormesh(lons, lats, vals, clevs, units=\"inch\")\n        pqstr = \"plot %s %s00 %s_stage4_1h.png %s_stage4_1h_%s.png png\" % (\n            routes,\n            ts.strftime(\"%Y%m%d%H\"),\n            sector,\n            sector,\n            ts.strftime(\"%H\"),\n        )\n        if sector == \"iowa\":\n            mp.drawcounties()\n        mp.postprocess(view=False, pqstr=pqstr)\n        mp.close()\n\n\n@click.command()\n@click.option(\"--valid\", \"ts\", type=click.DateTime(), help=\"UTC Timestamp\")\ndef main(ts):\n    \"\"\"Go main Go\"\"\"\n    if ts is not None:\n        ts = ts.replace(tzinfo=timezone.utc)\n        doit(ts)\n    else:\n        ts = utc()\n        doit(ts)\n        doit(ts - timedelta(hours=24))\n        doit(ts - timedelta(hours=48))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/current/stage4_today_total.py",
    "content": "\"\"\"\nSum up the hourly precipitation from NCEP stage IV and produce maps\n\ncalled from RUN_STAGE4.sh\n\"\"\"\n\nfrom datetime import datetime, timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport pygrib\nfrom metpy.units import masked_array, units\nfrom pyiem.plot import MapPlot, nwsprecip\nfrom pyiem.util import archive_fetch, logger, utc\n\nLOG = logger()\n\n\ndef doday(ts, realtime):\n    \"\"\"\n    Create a plot of precipitation stage4 estimates for some day\n\n    We should total files from 1 AM to midnight local time\n    \"\"\"\n    LOG.info(\"Running for %s realtime: %s\", ts, realtime)\n    sts = ts.replace(hour=1)\n    ets = min(sts + timedelta(hours=24), utc())\n    interval = timedelta(hours=1)\n    now = sts\n    total = None\n    lts = None\n    while now < ets:\n        gmt = now.astimezone(timezone.utc)\n        ppath = gmt.strftime(\"%Y/%m/%d/stage4/ST4.%Y%m%d%H.01h.grib\")\n        with archive_fetch(ppath) as fn:\n            if fn is not None:\n                lts = now\n                grbs = pygrib.open(fn)\n                if total is None:\n                    total = grbs[1][\"values\"]\n                    lats, lons = grbs[1].latlons()\n                else:\n                    total += grbs[1][\"values\"]\n                grbs.close()\n        now += interval\n\n    if lts is None:\n        if ts.hour > 1:\n            LOG.info(\"found no data for date: %s\", ts)\n        return\n    lts = lts - timedelta(minutes=1)\n    subtitle = \"Total between 12:00 AM and %s\" % (lts.strftime(\"%I:%M %p %Z\"),)\n    routes = \"ac\"\n    if not realtime:\n        routes = \"a\"\n    total = masked_array(total, units(\"mm\")).to(units(\"inch\")).m\n    for sector in [\"iowa\", \"midwest\", \"conus\"]:\n        pqstr = (\n            f\"plot {routes} {ts:%Y%m%d%H}00 {sector}_stage4_1d.png \"\n            f\"{sector}_stage4_1d.png png\"\n        )\n\n        mp = MapPlot(\n            sector=sector,\n            title=f\"{ts:%-d %b %Y} NCEP Stage IV Today's Precipitation\",\n            subtitle=subtitle,\n        )\n\n        clevs = [0.01, 0.1, 0.3, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 5, 6, 8, 10]\n        mp.pcolormesh(lons, lats, total, clevs, cmap=nwsprecip(), units=\"inch\")\n\n        if sector == \"iowa\":\n            mp.drawcounties()\n        mp.postprocess(pqstr=pqstr)\n        mp.close()\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", required=True, type=click.DateTime())\n@click.option(\"--realtime\", is_flag=True, default=False)\ndef main(dt: datetime, realtime: bool):\n    \"\"\"Go Main Go\n\n    So the past hour's stage IV is available by about 50 after, so we should\n    run for a day that is 90 minutes in the past by default\n\n    \"\"\"\n    dt = dt.replace(hour=12, tzinfo=ZoneInfo(\"America/Chicago\"))\n    doday(dt, realtime)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/current/stage4_xhour.py",
    "content": "\"\"\"\nCreate a variable X hour plot of stage IV estimates\n\nCalled from RUN_STAGE4.sh\n\"\"\"\n\nfrom datetime import datetime, timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport pygrib\nfrom pyiem.plot import MapPlot, get_cmap\nfrom pyiem.util import archive_fetch, logger, mm2inch\n\nLOG = logger()\n\n\ndef do(ts: datetime, hours: int, realtime: bool):\n    \"\"\"\n    Create a plot of precipitation stage4 estimates for some day\n    \"\"\"\n    ts = ts.replace(minute=0)\n    sts = ts - timedelta(hours=hours)\n    ets = ts\n    interval = timedelta(hours=1)\n    now = sts\n    total = None\n    lts = None\n    while now < ets:\n        ppath = f\"{now:%Y/%m/%d}/stage4/ST4.{now:%Y%m%d%H}.01h.grib\"\n        with archive_fetch(ppath) as fn:\n            if fn is not None:\n                lts = now\n                with pygrib.open(fn) as grbs:\n                    if total is None:\n                        g = grbs[1]\n                        total = g[\"values\"].filled(0)\n                        lats, lons = g.latlons()\n                    else:\n                        total += grbs[1][\"values\"].filled(0)\n        now += interval\n\n    if lts is None and ts.hour > 1:\n        LOG.info(\"Missing StageIV data!\")\n    if lts is None:\n        return\n\n    cmap = get_cmap(\"jet\")\n    cmap.set_under(\"white\")\n    cmap.set_over(\"black\")\n    clevs = [0.01, 0.1, 0.25, 0.5, 1, 2, 3, 5, 8, 9.9]\n    localtime = (ts - timedelta(minutes=1)).astimezone(\n        ZoneInfo(\"America/Chicago\")\n    )\n\n    for sector in [\"iowa\", \"midwest\", \"conus\"]:\n        mp = MapPlot(\n            sector=sector,\n            title=f\"NCEP Stage IV {hours} Hour Precipitation\",\n            subtitle=f\"Total up to {localtime:%d %B %Y %I %p %Z}\",\n        )\n        mp.pcolormesh(lons, lats, mm2inch(total), clevs, units=\"inch\")\n        pqstr = (\n            f\"plot {'ac' if realtime else 'a'} {ts:%Y%m%d%H}00 \"\n            f\"{sector}_stage4_{hours}h.png \"\n            f\"{sector}_stage4_{hours}h_{ts:%H}.png png\"\n        )\n        if sector == \"iowa\":\n            mp.drawcounties()\n        LOG.info(\"Sending %s\", pqstr)\n        mp.postprocess(pqstr=pqstr)\n        mp.close()\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), required=True)\n@click.option(\"--hours\", type=int, required=True)\n@click.option(\"--realtime\", is_flag=True, default=False)\ndef main(valid: datetime, hours: int, realtime: bool):\n    \"\"\"Go Main Go\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    do(valid, hours, realtime)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/current/temperature.py",
    "content": "\"\"\"Generate current plot of Temperature\"\"\"\n\nfrom pyiem.util import utc, web2ldm\n\n\ndef main():\n    \"\"\"GO!\"\"\"\n    for sector in [\"iowa\", \"conus\"]:\n        for varname in [\"tmpf\", \"wetbulb\"]:\n            pqstr = (\n                f\"plot ac {utc():%Y%m%d%H}00 {sector}_{varname}.png \"\n                f\"{sector}_{varname}_{utc():%H}.png png\"\n            )\n            ss = \"state\" if sector == \"iowa\" else sector\n            web2ldm(\n                f\"https://mesonet.agron.iastate.edu/plotting/auto/plot/192/\"\n                f\"t:{ss}::state:IA::v:{varname}::cmap:jet::_cb:1.png\",\n                pqstr,\n            )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/current/today_gust.py",
    "content": "\"\"\"Generate analysis of Peak Wind Gust.\n\nCalled from RUN_10MIN.sh\n\"\"\"\n\nfrom datetime import datetime\n\nfrom pyiem.util import web2ldm\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    now = datetime.now()\n\n    service = (\n        \"http://iem.local/plotting/auto/plot/206/t:state::network:WFO\"\n        f\"::wfo:DMX::state:IA::v:max_gust::p:both::day:{now:%Y-%m-%d}::\"\n        \"cmap:gist_stern_r::_cb:1.png\"\n    )\n    pqstr = (\n        f\"plot ac {now:%Y%m%d%H%M} summary/today_gust.png \"\n        \"iowa_wind_gust.png png\"\n    )\n    web2ldm(service, pqstr, md5_from_name=True)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/current/today_high.py",
    "content": "\"\"\"High Temperature.\n\nRUN_10MIN.sh\n\"\"\"\n\nfrom datetime import date\n\nimport click\nfrom pyiem.util import web2ldm\n\n\n@click.command()\n@click.option(\n    \"--date\", \"dt\", type=click.DateTime(), default=None, help=\"Date to plot\"\n)\ndef main(dt: date | None):\n    \"\"\"Go Main Go\"\"\"\n    if dt is None:\n        dt = date.today()\n        mode = \"ac\"\n    else:\n        dt = dt.date()\n        mode = \"a\"\n\n    url = (\n        \"http://iem.local/plotting/auto/plot/206/t:state::state:IA::\"\n        f\"v:max_tmpf::p:both::day:{dt:%Y-%m-%d}::cmap:jet::_r:43::_cb:1.png\"\n    )\n    pqstr = (\n        f\"plot {mode} {dt:%Y%m%d0000} summary/iowa_asos_high.png \"\n        \"iowa_asos_high.png png\"\n    )\n    web2ldm(url, pqstr)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/current/today_min_windchill.py",
    "content": "\"\"\"\nCreate a plot of minimum wind chill\n\nRun from RUN_10_AFTER.sh\n\"\"\"\n\nfrom datetime import datetime\n\nimport click\nfrom pyiem.util import web2ldm\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), required=True)\n@click.option(\"--realtime\", is_flag=True, default=False)\ndef main(dt: datetime, realtime: bool):\n    \"\"\"Main Method\"\"\"\n    routes = \"ac\" if realtime else \"a\"\n    pqstr = (\n        f\"plot {routes} {dt:%Y%m%d%H}00 summary/iowa_min_windchill.png \"\n        \"summary/iowa_min_windchill.png png\"\n    )\n    web2ldm(\n        (\n            \"https://mesonet.agron.iastate.edu/plotting/auto/plot/206/t:state\"\n            f\"::state:IA::v:min_feel::p:plot2::day:{dt:%Y-%m-%d}::_r:43::\"\n            \"_cb:1.png\"\n        ),\n        pqstr,\n    )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/current/today_precip.py",
    "content": "\"\"\"\nGenerate analysis of precipitation\n\"\"\"\n\nfrom datetime import datetime\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.plot import MapPlot\nfrom pyiem.reference import TRACE_VALUE\n\n\ndef t(value):\n    \"\"\"Convert into something nice\"\"\"\n    if value == TRACE_VALUE:\n        return \"T\"\n    return value\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    now = datetime.now()\n    pgconn = get_dbconn(\"iem\")\n    icursor = pgconn.cursor()\n\n    # Compute normal from the climate database\n    sql = \"\"\"\n    select s.id, s.network,\n      ST_x(s.geom) as lon, ST_y(s.geom) as lat,\n      (case when c.pday < 0 or c.day is null then 0\n          else c.pday end) as rainfall\n     from summary_%s c, current c2, stations s\n     WHERE s.iemid = c2.iemid and c2.iemid = c.iemid and\n     c2.valid > (now() - '2 hours'::interval)\n     and c.day = 'TODAY'\n     and s.country = 'US' and s.network ~* 'ASOS'\n     and s.state in ('IA','MN','WI','IL','MO','NE','KS','SD','ND')\n    \"\"\" % (now.year,)\n\n    lats = []\n    lons = []\n    vals = []\n    iavals = []\n    valmask = []\n    icursor.execute(sql)\n    for row in icursor:\n        lats.append(row[3])\n        lons.append(row[2])\n        vals.append(t(row[4]))\n        iowa = row[1] == \"IA_ASOS\"\n        valmask.append(iowa)\n        if iowa:\n            iavals.append(row[4])\n\n    if len(lats) < 3:\n        return\n\n    mp = MapPlot(\n        title=\"Iowa ASOS Rainfall Reports\",\n        axisbg=\"white\",\n        subtitle=\"%s\" % (now.strftime(\"%d %b %Y\"),),\n    )\n    mp.drawcounties()\n    mp.plot_values(lons, lats, vals)\n    pqstr = \"plot c 000000000000 summary/today_prec.png bogus png\"\n    mp.postprocess(view=False, pqstr=pqstr)\n    mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/current/vsby.py",
    "content": "\"\"\"Generate analysis of visibility.\"\"\"\n\nfrom datetime import datetime, timezone\n\nimport click\nfrom pyiem.util import logger, utc, web2ldm\n\nLOG = logger()\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), help=\"UTC valid time\")\ndef main(valid: datetime | None):\n    \"\"\"GO!\"\"\"\n    if valid is not None:\n        valid = valid.replace(tzinfo=timezone.utc)\n        routes = \"a\"\n    else:\n        valid = utc()\n        routes = \"ac\"\n    pqstr = (\n        f\"plot {routes} {valid:%Y%m%d%H}00 iowa_vsby.png \"\n        f\"vsby_contour_{valid:%H}00.png png\"\n    )\n    url = (\n        \"https://mesonet.agron.iastate.edu/plotting/auto/plot/192/\"\n        f\"valid:{valid:%Y-%m-%d%%20%H}00::\"\n        \"t:state::state:IA::v:vsby::cmap:gray::_cb:1.png\"\n    )\n    LOG.info(\"%s -> %s\", url, pqstr)\n    web2ldm(url, pqstr)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dailyb/spammer.py",
    "content": "\"\"\"\nGenerate the dailyb spam, run from RUN_12Z.sh\n\"\"\"\n\nimport os\nimport re\nimport smtplib\nimport subprocess\nfrom datetime import datetime, timedelta, timezone\nfrom email.mime.multipart import MIMEMultipart\nfrom email.mime.text import MIMEText\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport httpx\nimport wwa\nfrom pyiem.database import get_dbconnc, sql_helper, with_sqlalchemy_conn\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import exponential_backoff, logger, utc\nfrom sqlalchemy.engine import Connection\n\nLOG = logger()\nREPOS = (\n    \"iem pyiem iemone iemlsr iemvtec pywwa iem-database iem-web-services\"\n).split()\nGITHUB_API_BASE = \"https://api.github.com/repos/akrherz\"\nURLS = re.compile(r\"(https?://[\\w\\d:#@%/;$()~_?\\+-=\\\\\\.&]*)\", re.MULTILINE)\n\n\ndef mywrap(text):\n    \"\"\"Make text pretty, my friends\"\"\"\n    text = text.replace(\"\\n\\n\", \"\\n\").replace(\"\\n\", \"\\n    \").rstrip()\n    return text\n\n\ndef htmlize(msg):\n    \"\"\"Convert things into html.\"\"\"\n    for token in URLS.findall(msg):\n        msg = msg.replace(token, f'<a href=\"{token}\">{token}</a>')\n    return msg\n\n\ndef get_github_commits():\n    \"\"\"Get the recent day's worth of github code commits\n\n    Returns:\n      txt (str): text variant result\n      html (str): html variant result\n    \"\"\"\n    utcnow = utc()\n    yesterday = utcnow - timedelta(hours=24)\n    yesterday = yesterday.replace(hour=12, minute=0, second=0)\n    iso = yesterday.strftime(ISO8601)\n\n    txt = [\"> IEM Code Pushes <repo,branch> on Github\\n\"]\n    html = \"\"\"\n<h3 style=\"font-family: Arial, sans-serif; color: #333;\">\nIEM Code Pushes &lt;repo,branch&gt; on Github</h3>\n\n<table style=\"width: 100%; border-collapse: collapse;\">\n<thead><tr style=\"background-color: #f2f2f2;\">\n<th style=\"border: 1px solid #ddd; padding: 8px;\">Timestamp</th>\n<th style=\"border: 1px solid #ddd; padding: 8px;\">Repository</th>\n<th style=\"border: 1px solid #ddd; padding: 8px;\">Message</th>\n<th style=\"border: 1px solid #ddd; padding: 8px;\">Link</th>\n</tr></thead>\n<tbody>\n    \"\"\"\n\n    links = []\n    for repo in REPOS:\n        uri = f\"{GITHUB_API_BASE}/{repo}/commits?since={iso}&sha=main\"\n        try:\n            resp = httpx.get(uri, timeout=30)\n            resp.raise_for_status()\n            commits = resp.json()[::-1]\n        except Exception as exp:\n            LOG.info(\"Exception fetching %s\", uri)\n            LOG.exception(exp)\n        # commits are in reverse order\n        for commit in commits:\n            if commit[\"commit\"][\"message\"].startswith(\"Merge\"):\n                LOG.info(\"Skipping merge commit %s\", commit[\"sha\"])\n                continue\n            if commit[\"commit\"][\"author\"][\"name\"].startswith(\"dependabot\"):\n                LOG.info(\"Skipping dependabot commit %s\", commit[\"sha\"])\n                continue\n            timestring = commit[\"commit\"][\"author\"][\"date\"]\n            utcvalid = datetime.strptime(timestring, ISO8601)\n            valid = utcvalid.replace(tzinfo=timezone.utc).astimezone(\n                ZoneInfo(\"America/Chicago\")\n            )\n            data = {\n                \"stamp\": valid.strftime(\"%b %-d %-2I:%M %p\"),\n                \"msg\": commit[\"commit\"][\"message\"],\n                \"htmlmsg\": htmlize(commit[\"commit\"][\"message\"])\n                .replace(\"\\n\\n\", \"\\n\")\n                .replace(\"\\n\", \"<br />\\n\"),\n                \"branch\": \"main\",\n                \"url\": commit[\"html_url\"][:-20],  # chomp to make shorter\n                \"i\": len(links) + 1,\n                \"repo\": repo,\n            }\n            links.append(\"[%(i)s] %(url)s\" % data)\n            txt.append(\n                mywrap(\n                    \"  %(stamp)s[%(i)s] <%(repo)s,%(branch)s> %(msg)s\" % data\n                )\n            )\n            html += (\n                \"\"\"\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">%(stamp)s</td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">\n<a href=\"https://github.com/akrherz/%(repo)s\"\n style=\"color: #007bff; text-decoration: none;\">%(repo)s,main</a></td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">%(htmlmsg)s</td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">\n<a href=\"%(url)s\" style=\"color: #007bff; text-decoration: none;\">Link</a></td>\n</tr>\"\"\"\n                % data\n            )\n\n    if len(txt) == 1:\n        txt = txt[0] + \"    No code commits found in previous 24 Hours\"\n        html += \"\"\"\n<tr>\n<td colspan=\"4\"\n style=\"border: 1px solid #ddd; padding: 8px; text-align: center;\">\n<strong>No code commits found in previous 24 Hours</strong>\n</td>\n</tr>\n        \"\"\"\n    else:\n        txt = \"\\n\".join(txt) + \"\\n\\n\" + \"\\n\".join(links)\n    html += \"</tbody></table>\"\n\n    return f\"{txt}\\n\\n\", f\"{html}<br /><br />\"\n\n\ndef cowreport():\n    \"\"\"Generate something from the Cow, moooo!\"\"\"\n    central = ZoneInfo(\"America/Chicago\")\n    yesterday = (utc() - timedelta(days=1)).astimezone(central)\n    midnight = yesterday.replace(hour=0, minute=0)\n    midutc = midnight.astimezone(ZoneInfo(\"UTC\"))\n    begints = midutc.strftime(\"%Y-%m-%dT%H:%M\")\n    endts = (midutc + timedelta(hours=24)).strftime(\"%Y-%m-%dT%H:%M\")\n    api = (\n        f\"http://iem.local/api/1/cow.json?begints={begints}&endts={endts}&\"\n        \"phenomena=SV&phenomena=TO&lsrtype=SV&lsrtype=TO\"\n    )\n    data = httpx.get(api, timeout=60).json()\n    st = data[\"stats\"]\n    if st[\"events_total\"] == 0:\n        text = \"No SVR+TOR Warnings Issued.\"\n        html = f\"<h3>IEM Cow Report</h3><pre>{text}</pre>\"\n        txt = f\"> IEM Cow Report\\n{text}\\n\"\n        return txt, html\n\n    vp = st[\"events_verified\"] / float(st[\"events_total\"]) * 100.0\n    text = (\n        f\"SVR+TOR Warnings Issued: {st['events_total']:3.0f} \"\n        f\"Verified: {st['events_verified']:3.0f} [{vp:.1f}%]\\n\"\n        \"Polygon Size Versus County Size            \"\n        f\"[{st['size_poly_vs_county[%]']:.1f}%]\\n\"\n        \"Average Perimeter Ratio                    \"\n        f\"[{st['shared_border[%]']:.1f}%]\\n\"\n        \"Percentage of Warned Area Verified (15km)  \"\n        f\"[{st['area_verify[%]']:.1f}%]\\n\"\n        \"Average Storm Based Warning Size           \"\n        f\"[{st['avg_size[sq km]']:.0f} sq km]\\n\"\n        f\"Probability of Detection(higher is better) [{st['POD[1]']:.2f}]\\n\"\n        f\"False Alarm Ratio (lower is better)        [{st['FAR[1]']:.2f}]\\n\"\n        f\"Critical Success Index (higher is better)  [{st['CSI[1]']:.2f}]\\n\"\n    )\n\n    html = f\"<h3>IEM Cow Report</h3><pre>{text}</pre>\"\n    txt = f\"> IEM Cow Report\\n{text}\\n\"\n\n    return txt, html\n\n\ndef feature():\n    \"\"\"Print the feature for yesterday\"\"\"\n    mesosite, mcursor = get_dbconnc(\"mesosite\")\n    lastts = datetime.now() + timedelta(days=-1)\n    # Query\n    mcursor.execute(\n        \"SELECT *, to_char(valid, 'DD Mon HH:MI AM') as nicedate \"\n        \"from feature WHERE date(valid) = 'YESTERDAY'\"\n    )\n    textfmt = \"\"\"\n +----------------------------------------------\n%(link)s\n | Title : %(title)s\n | Date  : %(nicedate)s\n | Votes : Good: %(good)s   Bad: %(bad)s   Abstain: %(abstain)s\n +---------------------------------------------------------------\n\n%(story)s\n\"\"\"\n    htmlfmt = \"\"\"\n<p><a href=\"%(link)s\">%(title)s</a>\n<br /><strong>Date:</strong> %(nicedate)s\n<br /><strong>Votes:</strong> Good: %(good)s &nbsp;\nBad: %(bad)s  Abstain: %(abstain)s\n<br />%(mediamarkup)s\n\n<p>%(story)s</p>\n\"\"\"\n    txt = \"> Daily Feature\\n\"\n    html = \"<h3>Daily Feature</h3>\"\n\n    for row in mcursor:\n        row2 = row.copy()\n        row2[\"link\"] = (\n            \"https://mesonet.agron.iastate.edu/onsite/features/\"\n            f\"cat.php?day={lastts:%Y-%m-%d}\"\n        )\n        imgurl = (\n            \"https://mesonet.agron.iastate.edu/onsite/features/\"\n            f\"{row['valid']:%Y/%m/%y%m%d}.{row['mediasuffix']}\"\n        )\n        if row[\"mediasuffix\"] == \"mp4\":\n            row2[\"mediamarkup\"] = (\n                f'<video controls><source src=\"{imgurl}\" type=\"video/mp4\">'\n                \"Your email client does not support videos, please follow \"\n                \"the link from the title of this feature to view.</video>\"\n            )\n        else:\n            row2[\"mediamarkup\"] = f'<img src=\"{imgurl}\">'\n        if row2[\"appurl\"] is not None:\n            if not row2[\"appurl\"].startswith(\"http\"):\n                row2[\"appurl\"] = (\n                    \"https://mesonet.agron.iastate.edu\" + row2[\"appurl\"]\n                )\n            textfmt += (\n                \"\\n\\nThe featured media can be generated here: %(appurl)s\"\n            )\n            htmlfmt += (\n                \"<p>The featured media can be generated on-demand \"\n                '<a href=\"%(appurl)s\">here</a></p>.'\n            )\n        txt += textfmt % row2\n        html += htmlfmt % row2\n    if mcursor.rowcount == 0:\n        txt += \"\\n    No feature posted\\n\\n\"\n        html += \"<strong>No feature posted</strong>\"\n\n    mesosite.close()\n    return txt, html\n\n\ndef news():\n    \"\"\"Print the news that is fit to print\"\"\"\n    mesosite, mcursor = get_dbconnc(\"mesosite\")\n    # Last dailyb delivery\n    lastts = datetime.now() + timedelta(days=-1)\n    mcursor.execute(\n        \"SELECT *, to_char(entered, 'DD Mon HH:MI AM') as nicedate \"\n        \"from news WHERE entered > %s ORDER by entered DESC\",\n        (lastts,),\n    )\n\n    textfmt = \"\"\"\n +----------------------------------------------\n | Title : %(title)s\n | Date  : %(nicedate)s\n | Author: %(author)s\n | URL   : %(url)s\n +----------------------------------------------\n\n%(body)s\n\n\"\"\"\n    htmlfmt = (\n        \"<hr />\\n\"\n        \"<br /><strong>Title:</strong>\\n\"\n        '<a href=\"https://mesonet.agron.iastate.edu/'\n        'onsite/news.phtml?id=%(id)s\">%(title)s</a>\\n'\n        \"<br /><strong>Date:</strong> %(nicedate)s\\n\"\n        \"<br /><strong>Author:</strong> %(author)s\\n\"\n        '<br /><a href=\"%(url)s\">link</a>\\n\\n'\n        \"<p>%(body)s\\n\"\n    )\n    txt = \"> News\\n\"\n    html = \"<h3>News</h3>\"\n\n    for row in mcursor:\n        txt += textfmt % row\n        html += htmlfmt % row\n    if mcursor.rowcount == 0:\n        txt += \"\\n    No news is good news\\n\\n\"\n        html += \"<strong>No news is good news</strong>\"\n\n    mesosite.close()\n    return txt, html\n\n\ndef send_email(msg):\n    \"\"\"Send emails\"\"\"\n    smtp = smtplib.SMTP(\"mailhub.iastate.edu\")\n    smtp.sendmail(msg[\"From\"], [msg[\"To\"]], msg.as_string())\n    smtp.quit()\n\n\n@with_sqlalchemy_conn(\"iembot\")\ndef iembot_report(conn: Connection | None = None) -> list[str, str]:\n    \"\"\"Return on IEMBot stats.\"\"\"\n    txt = \"\"\"\n> IEMBot Social Media Posts\n\nIEMBot can be configured to post messages to a number of social media services.\nMore details: https://mesonet.agron.iastate.edu/projects/iembot/\n\nPosts yesterday per supported service:\n\n\"\"\"\n    html = \"\"\"\n<h3>IEMBot Social Media Posts</h3>\n\n<p>\nIEMBot can be configured to post messages to a number of social media\nservices. More details:\n<a href=\"https://mesonet.agron.iastate.edu/projects/iembot/\">\nIEMBot Homepage</a>.\n</p>\n\n<p>Posts yesterday per supported service:</p>\n<ul>\n\"\"\"\n    res = conn.execute(\n        sql_helper(\"\"\"\n    select service, count(*) from iembot_social_log l JOIN iembot_accounts a\n    on (l.iembot_account_id = a.id) where valid > 'YESTERDAY'\n    and valid < 'TODAY' group by service order by service\n                   \"\"\")\n    )\n    labels = {\n        \"slack\": \"Slack\",\n        \"xmpp\": \"Weather.IM Jabber Chatrooms\",\n        \"webhook\": \"HTTP Webhooks\",\n        \"atmosphere\": \"ATMosphere (bluesky only attm)\",\n        \"mastodon\": \"Mastodon / Fediverse\",\n        \"twitter\": \"Twitter/X\",\n    }\n    for row in res.mappings():\n        label = labels.get(row[\"service\"], row[\"service\"])\n        txt += f\"  {label}: {row['count']:,}\\n\"\n        html += f\"<li><strong>{label}:</strong> {row['count']:,}</li>\\n\"\n\n    html += \"</ul>\"\n    return txt, html\n\n\n@click.command()\n@click.option(\"--dryrun\", is_flag=True, help=\"Do not send email, just print\")\ndef main(dryrun: bool):\n    \"\"\"Go Main!\"\"\"\n    msg = MIMEMultipart(\"alternative\")\n    now = datetime.now()\n    msg[\"Subject\"] = f\"IEM Daily Bulletin for {now:%b %-d %Y}\"\n    msg[\"From\"] = \"daryl herzmann <akrherz@iastate.edu>\"\n    if os.environ[\"USER\"] == \"akrherz2\":\n        msg[\"To\"] = \"akrherz@iastate.edu\"\n    else:\n        msg[\"To\"] = \"iem-dailyb@googlegroups.com\"\n\n    text = f\"Iowa Environmental Mesonet Daily Bulletin for {now:%d %B %Y}\\n\\n\"\n    html = (\n        f\"<h3>Iowa Environmental Mesonet Daily Bulletin for {now:%d %B %Y}\"\n        \"</h3>\\n\"\n    )\n\n    t, h = news()\n    text += t\n    html += h\n    try:\n        t, h = get_github_commits()\n        text += t\n        html += h\n    except Exception as exp:\n        LOG.info(\"get_github_commits failed with %s\", exp)\n        text += \"\\n(script failure fetching github activity\\n\"\n        html += \"<br />(script failure fetching github activity<br />\"\n    t, h = feature()\n    text += t\n    html += h\n    t, h = wwa.run()\n    text += t\n    html += h\n    try:\n        t, h = cowreport()\n        text += t\n        html += h\n    except Exception as exp:\n        LOG.exception(exp)\n\n    # IEMBot stats\n    t, h = iembot_report()\n    text += t\n    html += h\n\n    part1 = MIMEText(text, \"plain\")\n    part2 = MIMEText(html, \"html\")\n    msg.attach(part1)\n    msg.attach(part2)\n\n    if not dryrun:\n        LOG.info(\"Sending email to %s\", msg[\"To\"])\n        exponential_backoff(send_email, msg)\n\n    # Send forth LDM\n    with open(\"tmp.txt\", \"w\", encoding=\"utf-8\") as fh:\n        fh.write(text)\n    subprocess.call(\n        [\n            \"pqinsert\",\n            \"-p\",\n            \"plot c 000000000000 iemdb.txt bogus txt\",\n            \"tmp.txt\",\n        ]\n    )\n    with open(\"tmp.html\", \"w\", encoding=\"utf-8\") as fh:\n        fh.write(html)\n    subprocess.call(\n        [\n            \"pqinsert\",\n            \"-p\",\n            \"plot c 000000000000 iemdb.html bogus txt\",\n            \"tmp.html\",\n        ]\n    )\n    if not dryrun:\n        for suffix in [\"txt\", \"html\"]:\n            os.unlink(f\"tmp.{suffix}\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dailyb/wwa.py",
    "content": "\"\"\"Some simple summary stats for the IEM Daily Bulletin...\"\"\"\n\nfrom datetime import timedelta\nfrom zoneinfo import ZoneInfo\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import utc\n\nPOSTGIS = get_dbconn(\"postgis\")\ncursor = POSTGIS.cursor()\n\ntextfmt = (\n    \"             Summary +_________ By WFO ____________+  Watches\\n\"\n    \"Type         US   IA | ARX   DVN   DMX   OAX   FSD |  US\\n\"\n    \"Tornado     %(TOu)3s  %(TOi)3s | %(TOARX)3s   %(TODVN)3s   \"\n    \"%(TODMX)3s   %(TOOAX)3s   %(TOFSD)3s | %(TORw)3s\\n\"\n    \"Svr Tstorm  %(SVu)3s  %(SVi)3s | %(SVARX)3s   %(SVDVN)3s   \"\n    \"%(SVDMX)3s   %(SVOAX)3s   %(SVFSD)3s | %(SVRw)3s\\n\"\n    \"Flash Flood %(FFu)3s  %(FFi)3s | %(FFARX)3s   %(FFDVN)3s   \"\n    \"%(FFDMX)3s   %(FFOAX)3s   %(FFFSD)3s | N/A\\n\"\n    \"\\n\"\n    \"ARX = LaCrosse, WI  DVN = Davenport, IA    DMX = Des Moines, IA\\n\"\n    \"OAX = Omaha, NE     FSD = Sioux Falls, SD\\n\"\n    \"\\n\"\n)\n\nhtmlfmt = \"\"\"\n<table cellpadding=\"3\" cellspacing=\"0\" border=\"1\">\n<tr>\n <td></td>\n <th colspan=\"2\">Summary</th>\n <th colspan=\"5\">By WFO</th>\n <th>Watches</th></tr>\n<tr>\n <th>Type</th>\n <th>US</th><th>IA</th>\n <th>ARX</th><th>DVN</th><th>DMX</th><th>OAX</th><th>FSD</th>\n <th>US</th></tr>\n<tr>\n <th>Tornado</th>\n <td>%(TOu)3s</td><td>%(TOi)3s</td>\n <td>%(TOARX)3s</td><td>%(TODVN)3s</td><td>%(TODMX)3s</td>\n   <td>%(TOOAX)3s</td><td>%(TOFSD)3s</td>\n <td>%(TORw)3s</td></tr>\n<tr>\n <th>Svr Tstorm</th>\n <td>%(SVu)3s</td><td>%(SVi)3s</td>\n <td>%(SVARX)3s</td><td>%(SVDVN)3s</td><td>%(SVDMX)3s</td>\n <td>%(SVOAX)3s</td><td>%(SVFSD)3s</td>\n <td>%(SVRw)3s</td></tr>\n<tr>\n <th>Flash Flood</th>\n <td>%(FFu)3s</td><td>%(FFi)3s</td>\n <td>%(FFARX)3s</td><td>%(FFDVN)3s</td><td>%(FFDMX)3s</td>\n <td>%(FFOAX)3s</td><td>%(FFFSD)3s</td><td>---</td></tr>\n</table>\n\n<p>ARX = LaCrosse, WI  DVN = Davenport, IA    DMX = Des Moines, IA\nOAX = Omaha, NE     FSD = Sioux Falls, SD\n\n\"\"\"\n\n\ndef run(sts=None, ets=None):\n    \"\"\"Generate listing of warning counts\"\"\"\n    # default for CST yesterday\n    if sts is None or ets is None:\n        yest = utc() - timedelta(hours=24)\n        yest = yest.replace(second=0, microsecond=0, minute=0)\n        ts = yest.astimezone(ZoneInfo(\"America/Chicago\"))\n        sts = ts.replace(hour=0)\n        ets = sts + timedelta(hours=24)\n\n    d = {}\n\n    # Get US states\n    d[\"TOu\"] = 0\n    d[\"SVu\"] = 0\n    d[\"FFu\"] = 0\n    cursor.execute(\n        f\"select phenomena, count(*) from sbw_{sts.year} \"\n        \"WHERE status = 'NEW' and issue >= %s and issue < %s \"\n        \"and phenomena IN ('TO','SV','FF') GROUP by phenomena\",\n        (sts, ets),\n    )\n    for row in cursor:\n        d[\"%su\" % (row[0],)] = row[1]\n\n    # Get Iowa\n    d[\"TOi\"] = 0\n    d[\"SVi\"] = 0\n    d[\"FFi\"] = 0\n    cursor.execute(\n        f\"select phenomena, count(*) as count from sbw_{sts.year} w, states s \"\n        \"WHERE ST_intersects(s.the_geom, w.geom) and s.state_abbr = 'IA' \"\n        \"and issue >= %s and issue < %s and status = 'NEW' \"\n        \"and phenomena IN ('TO','SV','FF') GROUP by phenomena\",\n        (sts, ets),\n    )\n    for row in cursor:\n        d[\"%si\" % (row[0],)] = row[1]\n\n    # Get per WFO\n    for wfo in [\"DMX\", \"DVN\", \"ARX\", \"FSD\", \"OAX\"]:\n        d[\"TO%s\" % (wfo,)] = 0\n        d[\"SV%s\" % (wfo,)] = 0\n        d[\"FF%s\" % (wfo,)] = 0\n    cursor.execute(\n        f\"SELECT phenomena, wfo, count(*) as count from sbw_{sts.year} WHERE \"\n        \"issue >= %s and issue < %s and status = 'NEW' \"\n        \"and phenomena IN ('TO','SV','FF') and \"\n        \"wfo in ('DMX','FSD','ARX','DVN','OAX') GROUP by wfo, phenomena\",\n        (sts, ets),\n    )\n    for row in cursor:\n        d[\"%s%s\" % (row[0], row[1])] = row[2]\n\n    # SPC Watches\n    d[\"TORw\"] = 0\n    d[\"SVRw\"] = 0\n\n    cursor.execute(\n        \"SELECT type, count(*) as count from watches WHERE \"\n        \"issued >= %s and issued < %s GROUP by type\",\n        (sts, ets),\n    )\n    for row in cursor:\n        d[\"%sw\" % (row[0],)] = row[1]\n\n    label = \"%s - %s\" % (\n        sts.strftime(\"%-I %p %-d %b %Y\"),\n        ets.strftime(\"%-I %p %-d %b %Y %Z\"),\n    )\n\n    txt = \"> NWS Watch/Warning Summary for %s\\n\" % (label,)\n    html = \"<h3>NWS Watch/Warning Summary for %s</h3>\" % (label,)\n\n    txt += textfmt % d\n    html += htmlfmt % d\n\n    return txt, html\n\n\ndef main():\n    \"\"\"Lets actually do something\"\"\"\n    sts = utc(2015, 5, 4, 0)\n    sts = sts.astimezone(ZoneInfo(\"America/Chicago\"))\n    sts = sts.replace(hour=0)\n    ets = sts + timedelta(hours=24)\n    txt, html = run(sts, ets)\n    print(txt)\n    print(html)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/SYNC_STATIONS.sh",
    "content": "# Manually run workflow that syncs station metadata\n\npython set_elevation.py\npython set_county.py\npython set_climate.py\npython set_wfo.py\npython set_timezone.py\npython sync_stations.py\npython add_iem_data_entry.py\n"
  },
  {
    "path": "scripts/dbutil/add_iem_data_entry.py",
    "content": "\"\"\"\nMain script that adds a site into the appropriate tables\ncalled from SYNC_STATIONS.sh\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nfrom pyiem.database import get_dbconnc\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef add_summary(cursor, date, iemid):\n    \"\"\"Add a summary entry for the given date.\"\"\"\n    cursor.execute(\n        \"SELECT iemid from summary WHERE day = %s and iemid = %s\",\n        (date, iemid),\n    )\n    if cursor.rowcount == 1:\n        LOG.info(\"Entry already exists for date %s\", date)\n        return\n    cursor.execute(\n        \"INSERT into summary (day, iemid) values (%s, %s)\", (date, iemid)\n    )\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    pgconn, icursor = get_dbconnc(\"iem\")\n    icursor2 = pgconn.cursor()\n\n    # Find sites that are online and not metasites that are not in the current\n    # table!\n    icursor.execute(\n        \"select s.iemid, id, network from stations s LEFT JOIN current c \"\n        \"ON c.iemid = s.iemid where c.iemid is null and s.online and \"\n        \"not s.metasite\"\n    )\n\n    now = datetime.now()\n\n    for row in icursor:\n        LOG.info(\n            \"Add iemdb current: ID: %10s NETWORK: %s\",\n            row[\"id\"],\n            row[\"network\"],\n        )\n\n        for valid in [now, now - timedelta(days=1)]:\n            add_summary(icursor2, valid.date(), row[\"iemid\"])\n        icursor2.execute(\n            \"INSERT into current (valid, iemid) VALUES ('1980-01-01', %s)\",\n            (row[\"iemid\"],),\n        )\n\n    icursor2.close()\n    pgconn.commit()\n    pgconn.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/asos2archive.py",
    "content": "\"\"\"\nDump ASOS observations into the long term archive...\n\nThis script copies from the iem->current_log database table to the asos\ndatabase.  This data is a result of the pyWWA/metar_parser.py process.\n\nThe script looks for any updated rows since the last time it ran, this is\ntracked in the properties table.\n\nRun from RUN_10MIN.sh\n\"\"\"\n\nimport sys\nfrom datetime import datetime, timedelta, timezone\n\nfrom pyiem.database import get_dbconnc\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import get_properties, logger, set_property, utc\n\nLOG = logger()\nPROPERTY_NAME = \"asos2archive_last\"\nRMTHRES = utc(1996, 7, 1)\n\n\ndef build_reset_times() -> dict:\n    \"\"\"Return dictionary with known reset minutes.\"\"\"\n    pgconn, cursor = get_dbconnc(\"mesosite\")\n    cursor.execute(\n        \"SELECT id, value from stations t JOIN station_attributes a on \"\n        \"t.iemid = a.iemid where a.attr = 'METAR_RESET_MINUTE'\"\n    )\n    res = {}\n    for row in cursor:\n        res[row[\"id\"]] = int(row[\"value\"])\n    pgconn.close()\n    return res\n\n\ndef get_first_updated():\n    \"\"\"Figure out which is the last updated timestamp we ran for.\"\"\"\n    props = get_properties()\n    propvalue = props.get(PROPERTY_NAME)\n    if propvalue is None:\n        LOG.warning(\"iem property %s is not set, abort!\", PROPERTY_NAME)\n        sys.exit()\n\n    dt = datetime.strptime(propvalue, ISO8601)\n    return dt.replace(tzinfo=timezone.utc)\n\n\ndef compute_time(argv):\n    \"\"\"Figure out the proper start and end time\"\"\"\n    utcnow = utc()\n    utcnow = utcnow.replace(minute=0, second=0, microsecond=0)\n\n    if len(argv) == 1:  # noargs\n        yesterday = utcnow - timedelta(hours=24)\n        sts = yesterday.replace(hour=0)\n        ets = sts.replace(hour=23, minute=59)\n    elif len(argv) == 4:\n        sts = utc(int(argv[1]), int(argv[2]), int(argv[3]))\n        ets = sts.replace(hour=23, minute=59)\n    else:\n        lasthour = utcnow - timedelta(minutes=60)\n        sts = lasthour.replace(minute=0)\n        ets = lasthour.replace(minute=59)\n    return sts, ets\n\n\ndef do_insert(source_cursor, reset_times, madis):\n    \"\"\"Insert the rows into the archive.\"\"\"\n    pgconn, cursor = get_dbconnc(\"asos\")\n\n    (inserts, skips, locked, deletes) = (0, 0, 0, 0)\n    for row in source_cursor:\n        report_type = 4  # specials\n        if madis:\n            report_type = 1\n        else:\n            if row[\"valid\"] < RMTHRES and row[\"valid\"].minute == 0:\n                report_type = 3\n            elif reset_times.get(row[\"id\"]) == row[\"valid\"].minute:\n                report_type = 3\n\n        # While the `alldata` table works, it is slow, so alas\n        table = f\"t{row['valid'].astimezone(timezone.utc):%Y}\"\n\n        # Look for previous entries\n        cursor.execute(\n            f\"SELECT metar, editable from {table} where station = %s and \"\n            f\"valid = %s and report_type {'=' if madis else '!='} 1\",\n            (row[\"id\"], row[\"valid\"]),\n        )\n        if cursor.rowcount > 0:\n            (metar, editable) = cursor.fetchone()\n            if not editable:\n                locked += 1\n                continue\n            if metar == row[\"raw\"]:\n                skips += 1\n                continue\n            # Skip if old metar is longer and new metar is not a COR\n            # and old METAR is not from DS3505\n            if (\n                metar is not None\n                and len(metar) > len(row[\"raw\"])\n                and row[\"raw\"].find(\" COR \") == -1\n                and metar.find(\"IEM_DS3505\") == -1\n            ):\n                skips += 1\n                continue\n            cursor.execute(\n                \"DELETE from alldata where station = %s and valid = %s \"\n                f\"and report_type {'=' if madis else '!='} 1\",\n                (row[\"id\"], row[\"valid\"]),\n            )\n            deletes += cursor.rowcount\n\n        sql = f\"\"\"\n        INSERT into {table} (station, valid, tmpf,\n        dwpf, drct, sknt,  alti, p01i, gust, vsby, skyc1, skyc2, skyc3, skyc4,\n        skyl1, skyl2, skyl3, skyl4, metar, p03i, p06i, p24i, max_tmpf_6hr,\n        min_tmpf_6hr, max_tmpf_24hr, min_tmpf_24hr, mslp, wxcodes,\n        ice_accretion_1hr, ice_accretion_3hr, ice_accretion_6hr,\n        report_type, feel, relh, peak_wind_gust, peak_wind_drct,\n        peak_wind_time, snowdepth)\n        values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,\n        %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s::numeric)\n        \"\"\"\n        args = (\n            row[\"id\"],\n            row[\"valid\"],\n            row[\"tmpf\"],\n            row[\"dwpf\"],\n            row[\"drct\"],\n            row[\"sknt\"],\n            row[\"alti\"],\n            row[\"phour\"],\n            row[\"gust\"],\n            row[\"vsby\"],\n            row[\"skyc1\"],\n            row[\"skyc2\"],\n            row[\"skyc3\"],\n            row[\"skyc4\"],\n            row[\"skyl1\"],\n            row[\"skyl2\"],\n            row[\"skyl3\"],\n            row[\"skyl4\"],\n            row[\"raw\"],\n            row[\"p03i\"],\n            row[\"p06i\"],\n            row[\"p24i\"],\n            row[\"max_tmpf_6hr\"],\n            row[\"min_tmpf_6hr\"],\n            row[\"max_tmpf_24hr\"],\n            row[\"min_tmpf_24hr\"],\n            row[\"mslp\"],\n            row[\"wxcodes\"],\n            row[\"ice_accretion_1hr\"],\n            row[\"ice_accretion_3hr\"],\n            row[\"ice_accretion_6hr\"],\n            report_type,\n            row[\"feel\"],\n            row[\"relh\"],\n            row[\"peak_wind_gust\"],\n            row[\"peak_wind_drct\"],\n            row[\"peak_wind_time\"],\n            row[\"snowdepth\"],\n        )\n\n        cursor.execute(sql, args)\n        inserts += 1\n        if inserts % 1000 == 0:\n            cursor.close()\n            pgconn.commit()\n            cursor = pgconn.cursor()\n\n    LOG.info(\n        \"insert %s, skip %s, locked %s, delete %s rows\",\n        inserts,\n        skips,\n        locked,\n        deletes,\n    )\n    cursor.close()\n    pgconn.commit()\n\n\ndef main():\n    \"\"\"Do Something Good\"\"\"\n    last_updated = utc()\n    reset_times = build_reset_times()\n    first_updated = get_first_updated()\n    iempgconn, icursor = get_dbconnc(\"iem\")\n\n    LOG.info(\n        \"Processing %s thru %s\",\n        first_updated.strftime(ISO8601),\n        last_updated.strftime(ISO8601),\n    )\n\n    for madis in [False, True]:\n        limiter = \"~*\" if madis else \"!~*\"\n        # Get obs from access, prioritize observations by if they are a\n        # CORrection or not and then their length :?\n        # see @akrherz/iem#104 as an enhancement to differentiate rtype\n        icursor.execute(\n            f\"\"\"\n            WITH data as (\n                SELECT c.*, t.network, t.id, row_number() OVER\n                (PARTITION by c.iemid, valid\n                ORDER by\n                (case when strpos(raw, ' COR ') > 0 then 1 else 0 end) DESC,\n                length(raw) DESC) from\n                current_log c JOIN stations t on (t.iemid = c.iemid) WHERE\n                updated >= %s and updated <= %s and raw {limiter} 'MADISHF'\n                and network ~* 'ASOS')\n            SELECT * from data where row_number = 1\n            \"\"\",\n            (first_updated, last_updated),\n        )\n        LOG.info(\"processing %s rows for madis: %s\", icursor.rowcount, madis)\n        if icursor.rowcount > 0:\n            do_insert(icursor, reset_times, madis)\n\n        if icursor.rowcount == 0 and not madis:\n            LOG.warning(\n                \"%s - %s Nothing done?\",\n                first_updated.strftime(\"%Y-%m-%dT%H:%M\"),\n                last_updated.strftime(\"%Y-%m-%dT%H:%M\"),\n            )\n    icursor.close()\n    iempgconn.close()\n    set_property(PROPERTY_NAME, last_updated)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/clean_afos.py",
    "content": "\"\"\"Clean up some tables that contain bloaty NWS Text Data\n\ncalled from RUN_2AM.sh\n\"\"\"\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.reference import state_names\nfrom pyiem.util import logger\n\nLOG = logger()\n\n# reflect changes to docs/datasets/afos.md\nPIL3_IGNORE = (\n    \"RR1 RR2 RR3 RR4 RR5 RR6 RR7 RR8 RR9 RRA RRS RRZ LAV \"\n    \"LEV MAV MET MTR MEX NBE NBH NBP NBS NBX OSO RSD RWR STO HML WRK \"\n    \"SCV LLL GSM\"\n).split()\nPIL_IGNORE = (\n    \"HPTNCF WTSNCF TSTNCF HD3RSA XF03DY XOBUS SYNBOU MISWTM MISWTX \"\n    \"MISMA1 MISAM1 XF07DY\"\n).split()\nfor abbr in state_names:\n    # SCNWSH, le sigh\n    PIL_IGNORE.append(f\"SCN{abbr}\")\n\n\ndef main():\n    \"\"\"Clean AFOS and friends\"\"\"\n    pgconn = get_dbconn(\"afos\")\n    acursor = pgconn.cursor()\n\n    acursor.execute(\n        \"\"\"\n        delete from products WHERE\n        entered < ('YESTERDAY'::date - '7 days'::interval) and\n        entered > ('YESTERDAY'::date - '31 days'::interval) and\n        (substr(pil, 1, 3) = ANY(%s) or pil = ANY(%s))\n        \"\"\",\n        (PIL3_IGNORE, PIL_IGNORE),\n    )\n    LOG.info(\"deleted %s rows\", acursor.rowcount)\n    if acursor.rowcount == 0:\n        LOG.warning(\"Found no products to delete between 7-31 days\")\n    acursor.close()\n    pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/clean_mos.py",
    "content": "\"\"\"Clean out MOS.\n\nRun from `RUN_2AM.sh` script.\n\"\"\"\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    pgconn = get_dbconn(\"mos\")\n    cursor = pgconn.cursor()\n    cursor.execute(\n        \"DELETE from alldata where model = 'LAV' and \"\n        \"extract(hour from runtime at time zone 'UTC') not in (0, 6, 12, 18) \"\n        \"and runtime > now() - '31 days'::interval and \"\n        \"runtime < now() - '7 days'::interval\"\n    )\n    if cursor.rowcount == 0:\n        LOG.warning(\"Zero LAV rows deleted from MOS database?\")\n    cursor.close()\n    pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/clean_telemetry.py",
    "content": "\"\"\"Cull old website_telemetry data\n\ncalled from RUN_2AM.sh\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nfrom pyiem.database import get_dbconnc\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Clean AFOS and friends\"\"\"\n    pgconn, cursor = get_dbconnc(\"mesosite\")\n    # yesterday at 12 AM Central\n    sts = datetime.now() - timedelta(days=1)\n    sts = sts.replace(hour=0, minute=0, second=0, microsecond=0)\n    cursor.execute(\"DELETE from website_telemetry WHERE valid < %s\", (sts,))\n    if cursor.rowcount == 0:\n        LOG.warning(\"Found no website_telemetry entries to delete\")\n    LOG.info(\"deleted %s rows\", cursor.rowcount)\n    cursor.close()\n    pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/clean_unknown_hads.py",
    "content": "\"\"\"\nI look at the unknown HADS table and see if any of these stations exist\nin the mesosite database, if so, then I set online to true!\n\nRun from RUN_2AM.sh\n\"\"\"\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    hads = get_dbconn(\"hads\")\n    mesosite = get_dbconn(\"mesosite\")\n    hcursor = hads.cursor()\n    hcursor2 = hads.cursor()\n    mcursor = mesosite.cursor()\n\n    # look for unknown\n    hcursor.execute(\n        \"SELECT nwsli, network, max(product) from unknown \"\n        \"WHERE length(nwsli) = 5 GROUP by nwsli, network ORDER by nwsli ASC\"\n    )\n    for row in hcursor:\n        nwsli = row[0]\n        network = row[1]\n        mcursor.execute(\"SELECT online from stations where id = %s\", (nwsli,))\n        row2 = mcursor.fetchone()\n        if row2 is None:\n            continue\n        if not row2[0]:\n            print(\n                f\"Site {nwsli} [{network}] {row[2]} was unknown, \"\n                \"but is in mesosite\"\n            )\n            mcursor.execute(\n                \"update stations SET online = 't' where id = %s \"\n                \"and online = 'f'\",\n                (nwsli,),\n            )\n        elif row[2].startswith(\"1970\"):\n            # Ignoring one-off that needs manual update\n            pass\n        else:\n            print(\n                f\"Site {nwsli} [{network}] {row[2]} was unknown, \"\n                \"but online in DB?\"\n            )\n        hcursor2.execute(\"DELETE from unknown where nwsli = %s\", (nwsli,))\n\n    hcursor2.close()\n    hads.commit()\n    mcursor.close()\n    mesosite.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/compute_alldata_sts.py",
    "content": "\"\"\"Generalized mesosite archive_{begin,end} computation\n\nFor unknown reasons, direct calculation over alldata was yielding a horrible\nquery plan.  So we iterate over t<year> tables.\n\ncalled from daily_drive_network.py for {asos,rwis}\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport click\nfrom pyiem.database import get_dbconnc\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\nALLDATA = {}\nSTART_YEAR = {\n    \"rwis\": 1994,\n    \"asos\": 1900,\n    \"other\": 2003,\n    \"scan\": 1987,\n    \"uscrn\": 2001,\n}\nTODAY = date.today()\n\n\ndef get_minvalid(cursor, station, start_year):\n    \"\"\" \"Do sid\"\"\"\n    for yr in range(start_year, TODAY.year + 1):\n        cursor.execute(\n            f\"SELECT min(date(valid)) from t{yr} WHERE station = %s\",\n            (station,),\n        )\n        minv = cursor.fetchone()[\"min\"]\n        if minv is not None:\n            return minv\n    return None\n\n\ndef get_maxvalid(cursor, station, start_year):\n    \"\"\" \"Do sid\"\"\"\n    for yr in range(TODAY.year, start_year - 1, -1):\n        cursor.execute(\n            f\"SELECT max(date(valid)) from t{yr} WHERE station = %s\",\n            (station,),\n        )\n        val = cursor.fetchone()[\"max\"]\n        if val is not None:\n            return val\n    return None\n\n\n@click.command()\n@click.option(\"--dbname\", required=True)\n@click.option(\"--network\", required=True)\ndef main(dbname: str, network: str) -> None:\n    \"\"\"Go Main\"\"\"\n    basets = date.today() - timedelta(days=365)\n\n    pgconn, rcursor = get_dbconnc(dbname)\n    mesosite, mcursor = get_dbconnc(\"mesosite\")\n\n    nt = NetworkTable(network, only_online=False)\n    ids = list(nt.sts.keys())\n    ids.sort()\n\n    for station in ids:\n        sts = get_minvalid(rcursor, station, START_YEAR[dbname])\n        if sts is None:\n            LOG.info(\"No alldata found for %s\", station)\n            continue\n        ets = get_maxvalid(rcursor, station, START_YEAR[dbname])\n        online = ets > basets\n        if online:\n            ets = None\n        osts = nt.sts[station][\"archive_begin\"]\n        oets = nt.sts[station][\"archive_end\"]\n        oonline = nt.sts[station][\"online\"]\n        noop = (sts == osts) and (ets == oets) and (online == oonline)\n        loglevel = LOG.info if noop else LOG.warning\n        loglevel(\n            \"%s%s %s->%s %s->%s OL:%s->%s\",\n            \"\" if noop else \"----> \",\n            station,\n            osts,\n            sts,\n            oets,\n            ets,\n            oonline,\n            online,\n        )\n        if noop:\n            continue\n        mcursor.execute(\n            \"UPDATE stations SET archive_begin = %s, archive_end = %s, \"\n            \"online = %s WHERE iemid = %s\",\n            (sts, ets, online, nt.sts[station][\"iemid\"]),\n        )\n        mcursor.close()\n        mesosite.commit()\n        mcursor = mesosite.cursor()\n    pgconn.close()\n    mesosite.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/compute_climate_sts.py",
    "content": "\"\"\"Determine when a CLIMATE track site started...\n\nCalled from RUN_CLIMODAT_STATE.sh\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport click\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\n@click.command()\n@click.option(\"--network\", required=True)\ndef main(network: str):\n    \"\"\"Go Main Go\"\"\"\n    asos = get_dbconn(\"coop\")\n    acursor = asos.cursor()\n    mesosite = get_dbconn(\"mesosite\")\n    mcursor = mesosite.cursor()\n    floor = date.today() - timedelta(days=7)\n\n    nt = NetworkTable(network, only_online=False)\n\n    acursor.execute(\n        f\"SELECT station, min(day), max(day) from alldata_{network[:2]} \"\n        \"GROUP by station ORDER by min ASC\"\n    )\n    for row in acursor:\n        station = row[0]\n        if station not in nt.sts:\n            LOG.info(\"%s is unknown in mesosite table\", station)\n            continue\n        sts = row[1]\n        ets = row[2]\n        if ets >= floor:\n            ets = None\n        osts = nt.sts[station][\"archive_begin\"]\n        oets = nt.sts[station][\"archive_end\"]\n        oonline = nt.sts[station][\"online\"]\n        online = ets is None\n        noop = osts == sts and oets == ets and oonline == online\n        loglvl = LOG.info if noop else LOG.warning\n        loglvl(\n            \"%s%s [%s] sts:%s->%s ets:%s->%s OL:%s->%s\",\n            \"  --> \" if not noop else \"\",\n            station,\n            network,\n            osts,\n            sts,\n            oets,\n            ets,\n            oonline,\n            online,\n        )\n        if noop:\n            continue\n        mcursor.execute(\n            \"\"\"\n            UPDATE stations SET archive_begin = %s, archive_end = %s,\n            online = %s WHERE iemid = %s\n            \"\"\",\n            (sts, ets, ets is None, nt.sts[station][\"iemid\"]),\n        )\n    mcursor.close()\n    mesosite.commit()\n    mesosite.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/compute_cocorahs_sts.py",
    "content": "\"\"\"Lamely needed due to CoCoRaHS one-off\n\nCalled from RUN_CLIMODAT_STATE.sh\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport click\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\n@click.command()\n@click.option(\"--network\", required=True)\ndef main(network: str):\n    \"\"\"Go Main Go\"\"\"\n    asos = get_dbconn(\"coop\")\n    acursor = asos.cursor()\n    mesosite = get_dbconn(\"mesosite\")\n    mcursor = mesosite.cursor()\n    floor = date.today() - timedelta(days=365)\n\n    nt = NetworkTable(network, only_online=False)\n\n    acursor.execute(\n        \"\"\"\n        SELECT s.id, min(day), max(day) from alldata_cocorahs c JOIN\n        stations s on (c.iemid = s.iemid) WHERE s.network = %s\n        GROUP by s.id ORDER by min ASC\n        \"\"\",\n        (network,),\n    )\n    for row in acursor:\n        station = row[0]\n        if station not in nt.sts:\n            LOG.info(\"%s is unknown in mesosite table\", station)\n            continue\n        sts = row[1]\n        ets = row[2]\n        if ets >= floor:\n            ets = None\n        osts = nt.sts[station][\"archive_begin\"]\n        oets = nt.sts[station][\"archive_end\"]\n        oonline = nt.sts[station][\"online\"]\n        online = ets is None\n        noop = osts == sts and oets == ets and oonline == online\n        loglvl = LOG.info if noop else LOG.warning\n        loglvl(\n            \"%s%s [%s] sts:%s->%s ets:%s->%s OL:%s->%s\",\n            \"  --> \" if not noop else \"\",\n            station,\n            network,\n            osts,\n            sts,\n            oets,\n            ets,\n            oonline,\n            online,\n        )\n        if noop:\n            continue\n        mcursor.execute(\n            \"\"\"\n            UPDATE stations SET archive_begin = %s, archive_end = %s,\n            online = %s WHERE iemid = %s\n            \"\"\",\n            (sts, ets, ets is None, nt.sts[station][\"iemid\"]),\n        )\n    mcursor.close()\n    mesosite.commit()\n    mesosite.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/compute_coop_sts.py",
    "content": "\"\"\"Compute archive_start / archive_end logic for COOP network sites.\n\ncalled from RUN_CLIMODAT_STATE.sh\n\"\"\"\n\nfrom datetime import date\n\nimport click\nfrom psycopg import Connection\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\nTODAY = date.today()\n\n\ndef do_network(conn: Connection, network: str):\n    \"\"\"Do network\"\"\"\n    nt = NetworkTable(network, only_online=False)\n    for sid in nt.sts:\n        res = conn.execute(\n            sql_helper(\"\"\"\n        select min(day), max(day) from summary WHERE iemid = :iemid and\n        (max_tmpf is not null or min_tmpf is not null or pday is not null)\n            \"\"\"),\n            {\"iemid\": nt.sts[sid][\"iemid\"]},\n        )\n        row = res.fetchone()\n        sts = row[0]\n        ets = row[1]\n        if sts is None:\n            LOG.warning(\"sid: %s has no iemaccess data?\", sid)\n            continue\n        if ets.year >= (TODAY.year - 1):\n            ets = None\n        osts = nt.sts[sid][\"archive_begin\"]\n        oets = nt.sts[sid][\"archive_end\"]\n        oonline = nt.sts[sid][\"online\"]\n        online = ets is None\n        noop = osts == sts and oets == ets and oonline == online\n        loglvl = LOG.info if noop else LOG.warning\n        loglvl(\n            \"%s%s [%s] sts:%s->%s ets:%s->%s OL:%s->%s\",\n            \"  --> \" if not noop else \"\",\n            sid,\n            network,\n            osts,\n            sts,\n            oets,\n            ets,\n            oonline,\n            online,\n        )\n        if noop:\n            continue\n        mconn, mcursor = get_dbconnc(\"mesosite\")\n        mcursor.execute(\n            \"\"\"\n            UPDATE stations SET archive_begin = %s, archive_end = %s,\n            online = %s WHERE iemid = %s\n            \"\"\",\n            (sts, ets, ets is None, nt.sts[sid][\"iemid\"]),\n        )\n        mcursor.close()\n        mconn.commit()\n        mconn.close()\n\n\n@click.command()\n@click.option(\"--network\", required=True)\ndef main(network: str):\n    \"\"\"Go main Go\"\"\"\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        do_network(conn, network)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/compute_hads_sts.py",
    "content": "\"\"\"Compute the archive start time of a HADS/DCP network.\n\ncalled from windrose/daily_drive_network.py\n\"\"\"\n\nfrom datetime import date\n\nimport click\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\nTODAY = date.today()\nHADSDB = get_dbconn(\"hads\")\nMESOSITEDB = get_dbconn(\"mesosite\")\n\n\ndef get_minvalid(sid):\n    \"\"\" \"Do sid\"\"\"\n    cursor = HADSDB.cursor()\n    for yr in range(2002, TODAY.year + 1):\n        cursor.execute(\n            f\"SELECT min(date(valid)) from raw{yr} WHERE station = %s\", (sid,)\n        )\n        minv = cursor.fetchone()[0]\n        if minv is not None:\n            return minv\n    return None\n\n\ndef get_maxvalid(sid):\n    \"\"\" \"Do sid\"\"\"\n    cursor = HADSDB.cursor()\n    for yr in range(TODAY.year, 2001, -1):\n        cursor.execute(\n            f\"SELECT max(date(valid)) from raw{yr} WHERE station = %s\", (sid,)\n        )\n        val = cursor.fetchone()[0]\n        if val is not None:\n            return val\n    return None\n\n\ndef do_network(network: str):\n    \"\"\"Do network\"\"\"\n    nt = NetworkTable(network, only_online=False)\n    for sid in nt.sts:\n        osts = nt.sts[sid][\"archive_begin\"]\n        oets = nt.sts[sid][\"archive_end\"]\n        sts = get_minvalid(sid)\n        ets = get_maxvalid(sid)\n        if ets is not None and ets.year >= (TODAY.year - 1):\n            ets = None\n        oonline = nt.sts[sid][\"online\"]\n        online = ets is None\n        noop = osts == sts and oets == ets and oonline == online\n        loglvl = LOG.info if noop else LOG.warning\n        loglvl(\n            \"%s%s [%s] sts:%s->%s ets:%s->%s OL:%s->%s\",\n            \"  --> \" if not noop else \"\",\n            sid,\n            network,\n            osts,\n            sts,\n            oets,\n            ets,\n            oonline,\n            online,\n        )\n        if noop:\n            continue\n        cursor = MESOSITEDB.cursor()\n        cursor.execute(\n            \"\"\"\n            UPDATE stations SET archive_begin = %s, archive_end = %s,\n            online = %s WHERE iemid = %s\n            \"\"\",\n            (sts, ets, ets is None, nt.sts[sid][\"iemid\"]),\n        )\n        cursor.close()\n        MESOSITEDB.commit()\n\n\n@click.command()\n@click.option(\"--network\", required=False)\ndef main(network: str | None):\n    \"\"\"Go main Go\"\"\"\n    if network is None:\n        # If we run without args, we pick a \"random\" DCP network!\n        # COOP networks can't reliably use this script's logic\n        cursor = MESOSITEDB.cursor()\n        cursor.execute(\n            \"SELECT id from networks where id ~* 'DCP' ORDER by id ASC\"\n        )\n        networks = [row[0] for row in cursor]\n        jday = int(date.today().strftime(\"%j\"))\n        network = networks[jday % len(networks)]\n        LOG.info(\"auto-picked %s\", network)\n    do_network(network)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/compute_isusm_sts.py",
    "content": "\"\"\"Figure out when the ISUSM data started...\"\"\"\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main\"\"\"\n    isuag = get_dbconn(\"isuag\")\n    icursor = isuag.cursor()\n    mesosite = get_dbconn(\"mesosite\")\n    mcursor = mesosite.cursor()\n\n    table = NetworkTable(\"ISUSM\", only_online=False)\n\n    icursor.execute(\n        \"SELECT station, min(date(valid)), max(date(valid)) from sm_hourly \"\n        \"GROUP by station ORDER by min ASC\"\n    )\n    for row in icursor:\n        station = row[0]\n        if station not in table.sts:\n            LOG.warning(\n                \"Whoa station: %s does not exist in metadatabase?\",\n                station,\n            )\n            continue\n        if table.sts[station][\"archive_begin\"] != row[1]:\n            LOG.warning(\n                \"Updated %s STS WAS: %s NOW: %s\",\n                station,\n                table.sts[station][\"archive_begin\"],\n                row[1],\n            )\n\n        mcursor.execute(\n            \"UPDATE stations SET archive_begin = %s \"\n            \"WHERE id = %s and network = %s\",\n            (row[1], station, \"ISUSM\"),\n        )\n        if mcursor.rowcount == 0:\n            LOG.warning(\"ERROR: No rows updated for %s\", station)\n\n    mcursor.close()\n    mesosite.commit()\n    mesosite.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/compute_network_extent.py",
    "content": "\"\"\"Compute the spatial extent of a network\"\"\"\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    pgconn = get_dbconn(\"mesosite\")\n    cursor = pgconn.cursor()\n\n    # Buffer point a bit so that 1 station networks are not points\n    cursor.execute(\n        \"\"\"WITH extents as (\n        SELECT network,\n        ST_SetSRID(ST_Extent(ST_Buffer(geom, 0.1))::geometry, 4326) as ste\n        from stations GROUP by network)\n\n        UPDATE networks SET extent = e.ste FROM extents e\n        WHERE e.network = networks.id and\n        (extent is null or not ST_Equals(e.ste, extent))\n        RETURNING id, st_xmin(extent), st_ymin(extent), st_xmax(extent),\n        st_ymax(extent)\"\"\"\n    )\n\n    if cursor.rowcount > 0:\n        LOG.info(\"updated %s rows\", cursor.rowcount)\n    if cursor.rowcount < 50:\n        for row in cursor:\n            LOG.info(\"   %s -> %.4f %.4f %.4f %.4f\", *row)\n\n    cursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/compute_rwis_sts.py",
    "content": "\"\"\"Lamely needed due to RWIS one-off.\"\"\"\n\nfrom datetime import date, timedelta\n\nimport click\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\n@click.command()\n@click.option(\"--network\", required=True)\ndef main(network: str):\n    \"\"\"Go Main Go\"\"\"\n    asos = get_dbconn(\"rwis\")\n    acursor = asos.cursor()\n    mesosite = get_dbconn(\"mesosite\")\n    mcursor = mesosite.cursor()\n    floor = date.today() - timedelta(days=365)\n\n    nt = NetworkTable(network, only_online=False)\n\n    acursor.execute(\n        \"\"\"\n        SELECT s.id, min(date(valid)), max(date(valid)) from alldata c JOIN\n        stations s on (c.iemid = s.iemid) WHERE s.network = %s\n        GROUP by s.id ORDER by min ASC\n        \"\"\",\n        (network,),\n    )\n    for row in acursor:\n        station = row[0]\n        if station not in nt.sts:\n            LOG.info(\"%s is unknown in mesosite table\", station)\n            continue\n        sts = row[1]\n        ets = row[2]\n        if ets >= floor:\n            ets = None\n        osts = nt.sts[station][\"archive_begin\"]\n        oets = nt.sts[station][\"archive_end\"]\n        oonline = nt.sts[station][\"online\"]\n        online = ets is None\n        noop = osts == sts and oets == ets and oonline == online\n        loglvl = LOG.info if noop else LOG.warning\n        loglvl(\n            \"%s%s [%s] sts:%s->%s ets:%s->%s OL:%s->%s\",\n            \"  --> \" if not noop else \"\",\n            station,\n            network,\n            osts,\n            sts,\n            oets,\n            ets,\n            oonline,\n            online,\n        )\n        if noop:\n            continue\n        mcursor.execute(\n            \"\"\"\n            UPDATE stations SET archive_begin = %s, archive_end = %s,\n            online = %s WHERE iemid = %s\n            \"\"\",\n            (sts, ets, ets is None, nt.sts[station][\"iemid\"]),\n        )\n    mcursor.close()\n    mesosite.commit()\n    mesosite.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/delete_station.py",
    "content": "\"\"\"Delete a station and all references to it!\"\"\"\n\nimport click\nfrom pyiem.database import get_dbconn\n\n\ndef delete_logic(icursor, mcursor, network, station):\n    \"\"\"Do the work\"\"\"\n    for table in [\"current\", \"summary\", \"hourly\"]:\n        icursor.execute(\n            f\"DELETE from {table} where iemid = (select iemid from stations \"\n            \"where id = %s and network = %s)\",\n            (station, network),\n        )\n        print(\n            f\"  Removed {icursor.rowcount} rows from IEMAccess table {table}\"\n        )\n\n    mcursor.execute(\n        \"DELETE from station_attributes where iemid = ( \"\n        \"SELECT iemid from stations where id = %s and network = %s)\",\n        (station, network),\n    )\n    mcursor.execute(\n        \"DELETE from stations where id = %s and network = %s\",\n        (station, network),\n    )\n    print(f\"Deleted {mcursor.rowcount} row(s) from mesosite stations table\")\n\n\n@click.command()\n@click.option(\"--network\", required=True, help=\"Network Identifier\")\n@click.option(\"--station\", required=True, help=\"Station Identifier\")\ndef main(network: str, station: str):\n    \"\"\"Go Main Go\"\"\"\n    iem_pgconn = get_dbconn(\"iem\")\n    icursor = iem_pgconn.cursor()\n    mesosite_pgconn = get_dbconn(\"mesosite\")\n    mcursor = mesosite_pgconn.cursor()\n    delete_logic(icursor, mcursor, network, station)\n    icursor.close()\n    iem_pgconn.commit()\n    mcursor.close()\n    mesosite_pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/hads_delete_dups.py",
    "content": "\"\"\"\nOur HADS database gets loaded up with duplicates, this cleans it up.\n\nNOTE: This is currently not used as process inbound dedups already, hopefully.\nsee akrherz/pyWWA#316\n\"\"\"\n\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef query(sql, args=None):\n    \"\"\"\n    Do a query and make it atomic\n    \"\"\"\n    pgconn = get_dbconn(\"hads\")\n    hcursor = pgconn.cursor()\n    sts = datetime.now()\n    hcursor.execute(\"set work_mem='16GB'\")\n    hcursor.execute(sql, args if args is not None else [])\n    ets = datetime.now()\n    LOG.info(\n        \"%7s [%8.4fs] %s\", hcursor.rowcount, (ets - sts).total_seconds(), sql\n    )\n    hcursor.close()\n    pgconn.commit()\n\n\ndef workflow(valid):\n    \"\"\"Do the work for this date, which is set to 00 UTC\"\"\"\n    tbl = f\"raw{valid:%Y_%m}\"\n\n    # make sure our tmp table does not exist\n    query(\"DROP TABLE IF EXISTS tmp\")\n    # Extract unique obs to special table\n    sql = (\n        f\"CREATE table tmp as select distinct * from {tbl} \"\n        \"WHERE valid BETWEEN %s and %s\"\n    )\n    args = (valid, valid + timedelta(hours=24))\n    query(sql, args)\n\n    # Delete them all!\n    sql = f\"delete from {tbl} WHERE valid BETWEEN %s and %s\"\n    query(sql, args)\n\n    # Insert from special table\n    sql = f\"INSERT into {tbl} SELECT * from tmp\"\n    query(sql)\n\n    sql = \"DROP TABLE IF EXISTS tmp\"\n    query(sql)\n\n\n@click.command()\n@click.option(\n    \"--date\", \"dt\", type=click.DateTime(), required=True, help=\"Specific date\"\n)\ndef main(dt: datetime):\n    \"\"\"Go Main Go\"\"\"\n    valid = dt.replace(tzinfo=timezone.utc)\n    workflow(valid)\n\n\nif __name__ == \"__main__\":\n    # See how we are called\n    main()\n"
  },
  {
    "path": "scripts/dbutil/mine_autoplot.py",
    "content": "\"\"\"Database found apache log entries of autoplot generation timing\n\nRun from RUN_10_AFTER.sh\n\"\"\"\n\nimport re\nfrom datetime import datetime, timedelta\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import logger\n\nLOG = logger()\nLOGRE = re.compile(r\"Autoplot\\[\\s*(\\d+)\\] Timing:\\s*(\\d+\\.\\d+)s Key: ([^\\s]*)\")\nLOGFN = \"/var/log/app/autoplot_log\"\n\n\ndef archive(cursor):\n    \"\"\"Move data out of the way.\"\"\"\n    cursor.execute(\n        \"insert into autoplot_timing_archive select * from autoplot_timing \"\n        \"WHERE valid < now() - '10 days'::interval\"\n    )\n    cursor.execute(\n        \"DELETE from autoplot_timing where valid < now() - '10 days'::interval\"\n    )\n    LOG.info(\"Archived %s rows\", cursor.rowcount)\n\n\ndef get_dbendts(cursor):\n    \"\"\"Figure out when we have data until\"\"\"\n    cursor.execute(\"SELECT max(valid) from autoplot_timing\")\n    ts = cursor.fetchone()[0]\n    if ts is None:\n        ts = datetime.now() - timedelta(days=1)\n    else:\n        ts = ts.replace(tzinfo=None)\n    return ts\n\n\ndef find_and_save(cursor, dbendts):\n    \"\"\"Do work please\"\"\"\n    now = datetime.now()\n    thisyear = now.year\n    inserts = 0\n    with open(LOGFN, \"rb\") as fh:\n        for line_in in fh:\n            line = line_in.decode(\"utf-8\", \"ignore\")\n            tokens = LOGRE.findall(line)\n            if len(tokens) != 1:\n                continue\n            (appid, timing, uri) = tokens[0]\n            try:\n                valid = datetime.strptime(\n                    f\"{thisyear} {line[:15]}\", \"%Y %b %d %H:%M:%S\"\n                )\n            except ValueError as exp:\n                LOG.info(line)\n                LOG.error(exp)\n                continue\n            if valid > now or valid <= dbendts:\n                continue\n            hostname = line.split()[3]\n            cursor.execute(\n                \"INSERT into autoplot_timing \"\n                \"(appid, valid, timing, uri, hostname) \"\n                \"VALUES (%s, %s, %s, %s, %s)\",\n                (appid, valid, timing, uri, hostname),\n            )\n            inserts += 1\n    # Don't complain during the early morning hours\n    if inserts == 0 and now.hour > 5:\n        LOG.warning(\n            \"mine_autoplot: no new entries found for databasing since %s\",\n            dbendts,\n        )\n    else:\n        LOG.info(\"Inserted %s records\", inserts)\n\n\ndef main():\n    \"\"\"Go Main Go!\"\"\"\n    mesosite = get_dbconn(\"mesosite\")\n    cursor = mesosite.cursor()\n    dbendts = get_dbendts(cursor)\n    find_and_save(cursor, dbendts)\n    archive(cursor)\n    cursor.close()\n    mesosite.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/network_timezone.py",
    "content": "\"\"\"\nNeed something to set the time zone of networks\n\"\"\"\n\nfrom pyiem.database import get_dbconn\n\n\ndef main():\n    \"\"\"Go!\"\"\"\n    pgconn = get_dbconn(\"mesosite\")\n    mcursor = pgconn.cursor()\n    mcursor2 = pgconn.cursor()\n\n    mcursor.execute(\"SELECT id, name from networks where tzname is null\")\n\n    for row in mcursor:\n        netid = row[0]\n\n        mcursor2.execute(\n            \"SELECT tzname, count(*) from stations where network = %s and \"\n            \"tzname is not null GROUP by tzname ORDER by count DESC\",\n            (netid,),\n        )\n        row2 = mcursor2.fetchone()\n        if row2 is None or row2[0] == \"uninhabited\":\n            print(f\"--> MISSING ID: {netid}\")\n        else:\n            print(f\"ID: {netid} TIMEZONE: {row2[0]}\")\n            mcursor2.execute(\n                \"UPDATE networks SET tzname = %s WHERE id = %s\",\n                (row2[0], netid),\n            )\n\n    mcursor2.close()\n    pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/rwis2archive.py",
    "content": "\"\"\"\nCopy RWIS data from iem database to its final resting home in 'rwis'\n\ncalled from RUN_10MIN.sh with 9 minute process timeout\n\"\"\"\n\nimport sys\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import get_properties, logger, set_property, utc\n\nLOG = logger()\nPROPERTY_NAME = \"rwis2archive_last\"\n\n\ndef get_first_updated():\n    \"\"\"Figure out which is the last updated timestamp we ran for.\"\"\"\n    props = get_properties()\n    propvalue = props.get(PROPERTY_NAME)\n    if propvalue is None:\n        LOG.warning(\"iem property %s is not set, abort!\", PROPERTY_NAME)\n        sys.exit()\n\n    dt = datetime.strptime(propvalue, ISO8601)\n    return dt.replace(tzinfo=timezone.utc)\n\n\ndef process_traffic(first_updated, last_updated):\n    \"\"\"Process what traffic has.\"\"\"\n    ipgconn, icursor = get_dbconnc(\"iem\")\n    rpgconn, rcursor = get_dbconnc(\"rwis\")\n    icursor.execute(\n        \"\"\"\n    SELECT t.iemid, s.lane_id::int as lane_id, d.* from\n    rwis_traffic_data_log d, rwis_locations l, rwis_traffic_sensors s,\n    stations t\n    WHERE t.id = l.nwsli and t.network = 'IA_RWIS' and\n    s.id = d.sensor_id and updated >= %s and updated < %s\n    and s.location_id = l.id\"\"\",\n        (first_updated, last_updated),\n    )\n    deleted = 0\n    inserts = 0\n    for row in icursor:\n        rcursor.execute(\n            \"delete from alldata_traffic where iemid = %s and valid = %s\",\n            (row[\"iemid\"], row[\"valid\"]),\n        )\n        deleted += rcursor.rowcount\n        rcursor.execute(\n            \"\"\"INSERT into alldata_traffic (iemid, valid,\n            lane_id, avg_speed, avg_headway, normal_vol, long_vol, occupancy)\n            VALUES (%(iemid)s,%(valid)s,\n            %(lane_id)s, %(avg_speed)s, %(avg_headway)s, %(normal_vol)s,\n            %(long_vol)s, %(occupancy)s)\n            \"\"\",\n            row,\n        )\n        inserts += 1\n    icursor.execute(\n        \"delete from rwis_traffic_data_log where \"\n        \"updated >= %s and updated < %s\",\n        (first_updated, last_updated),\n    )\n    rcursor.close()\n    rpgconn.commit()\n    rpgconn.close()\n    icursor.close()\n    ipgconn.commit()\n    ipgconn.close()\n    LOG.info(\"access: %s rows, rwis: %s dels\", inserts, deleted)\n\n\ndef process_soil(first_updated, last_updated):\n    \"\"\"Do the soil work.\"\"\"\n    ipgconn, icursor = get_dbconnc(\"iem\")\n    rpgconn, rcursor = get_dbconnc(\"rwis\")\n\n    icursor.execute(\n        \"\"\"SELECT t.iemid, d.valid,\n         max(case when sensor_id = 1 then temp else null end) as tmpf_1in,\n         max(case when sensor_id = 3 then temp else null end) as tmpf_3in,\n         max(case when sensor_id = 6 then temp else null end) as tmpf_6in,\n         max(case when sensor_id = 9 then temp else null end) as tmpf_9in,\n         max(case when sensor_id = 12 then temp else null end) as tmpf_12in,\n         max(case when sensor_id = 18 then temp else null end) as tmpf_18in,\n         max(case when sensor_id = 24 then temp else null end) as tmpf_24in,\n         max(case when sensor_id = 30 then temp else null end) as tmpf_30in,\n         max(case when sensor_id = 36 then temp else null end) as tmpf_36in,\n         max(case when sensor_id = 42 then temp else null end) as tmpf_42in,\n         max(case when sensor_id = 48 then temp else null end) as tmpf_48in,\n         max(case when sensor_id = 54 then temp else null end) as tmpf_54in,\n         max(case when sensor_id = 60 then temp else null end) as tmpf_60in,\n         max(case when sensor_id = 66 then temp else null end) as tmpf_66in,\n         max(case when sensor_id = 72 then temp else null end) as tmpf_72in\n         from rwis_soil_data_log d, rwis_locations l, stations t\n         WHERE l.nwsli = t.id and t.network = 'IA_RWIS' and\n         updated >= %s and updated < %s and d.location_id = l.id\n         GROUP by iemid, valid\"\"\",\n        (first_updated, last_updated),\n    )\n    deleted = 0\n    inserts = 0\n    for row in icursor:\n        rcursor.execute(\n            \"delete from alldata_soil where iemid = %s and valid = %s\",\n            (row[\"iemid\"], row[\"valid\"]),\n        )\n        deleted += rcursor.rowcount\n        rcursor.execute(\n            \"\"\"INSERT into alldata_soil\n            (iemid, valid,\n            tmpf_1in, tmpf_3in, tmpf_6in, tmpf_9in, tmpf_12in, tmpf_18in,\n            tmpf_24in, tmpf_30in, tmpf_36in, tmpf_42in, tmpf_48in, tmpf_54in,\n            tmpf_60in, tmpf_66in, tmpf_72in) VALUES (\n            %(iemid)s,%(valid)s,\n            %(tmpf_1in)s, %(tmpf_3in)s, %(tmpf_6in)s, %(tmpf_9in)s,\n            %(tmpf_12in)s,\n            %(tmpf_18in)s, %(tmpf_24in)s, %(tmpf_30in)s, %(tmpf_36in)s,\n            %(tmpf_42in)s, %(tmpf_48in)s, %(tmpf_54in)s, %(tmpf_60in)s,\n            %(tmpf_66in)s, %(tmpf_72in)s)\n            \"\"\",\n            row,\n        )\n        inserts += 1\n    icursor.execute(\n        \"delete from rwis_soil_data_log where updated >= %s and updated < %s\",\n        (first_updated, last_updated),\n    )\n    rcursor.close()\n    rpgconn.commit()\n    rpgconn.close()\n    icursor.close()\n    ipgconn.commit()\n    ipgconn.close()\n    LOG.info(\"access: %s rows, rwis: %s dels\", inserts, deleted)\n\n\ndef do_ob_work(iconn, rconn, first_updated, last_updated):\n    \"\"\"Do the obs work.\"\"\"\n    res = iconn.execute(\n        sql_helper(\"\"\"\n        SELECT c.*, t.iemid, valid at time zone 'UTC' as utc_valid,\n        t.iemid || '_' || to_char(valid at time zone 'UTC', 'YYYYMMDDHH24MI')\n        as chunk_key\n        from current_log c, stations t\n        WHERE updated >= :sts and updated < :ets\n          and t.network ~* 'RWIS' and t.iemid = c.iemid\n        ORDER by valid ASC\n                    \"\"\"),\n        {\"sts\": first_updated, \"ets\": last_updated},\n    )\n    LOG.info(\n        \"Processing %s IEMAccess rows, updated %s to %s\",\n        res.rowcount,\n        first_updated,\n        last_updated,\n    )\n    # This is expensive, so we are going to try to be cute and do some\n    # hour based chunking.\n    chunk_valid = None\n    dbhas = []\n    dupes = 0\n    inserts = 0\n    for i, row in enumerate(res.mappings()):\n        utc_valid = row[\"utc_valid\"].replace(tzinfo=timezone.utc)\n        if chunk_valid is None or utc_valid >= chunk_valid:\n            res2 = rconn.execute(\n                sql_helper(\"\"\"\n    select iemid || '_' ||\n    to_char(valid at time zone 'UTC', 'YYYYMMDDHH24MI')\n    as chunk_key from alldata where valid >= :valid and\n    valid < (:valid + '1 hour'::interval) ORDER by valid ASC\n                           \"\"\"),\n                {\"valid\": utc_valid},\n            )\n            chunk_valid = utc_valid + timedelta(hours=1)\n            LOG.info(\n                \"Found %s existing rows for chunk %s to %s\",\n                res2.rowcount,\n                utc_valid,\n                chunk_valid,\n            )\n            dbhas = [row2[0] for row2 in res2]\n        if row[\"chunk_key\"] in dbhas:\n            dupes += 1\n            continue\n        # While updating alldata works, it is very slow, so we do this\n        table = f\"t{utc_valid.year}\"\n        rconn.execute(\n            sql_helper(\n                \"\"\"INSERT into {table} (iemid, valid, tmpf,\n            dwpf, drct, sknt, tfs0, tfs1, tfs2, tfs3, subf, gust, tfs0_text,\n            tfs1_text, tfs2_text, tfs3_text, pcpn, vsby, feel, relh)\n            VALUES (:iemid,:valid,:tmpf,:dwpf,round(:drct, 0),\n            :sknt,\n            :tsf0,:tsf1,:tsf2,:tsf3,:rwis_subf,:gust,\n            :scond0,:scond1,:scond2,:scond3,\n            :pday,:vsby,:feel,:relh)\"\"\",\n                table=table,\n            ),\n            row,\n        )\n        inserts += 1\n        if i > 0 and i % 1000 == 0:\n            LOG.info(\"Processed %s rows\", i)\n            rconn.commit()\n    rconn.commit()\n    LOG.info(\n        \"Processed %s rows with inserts %s dupes %s\",\n        res.rowcount,\n        inserts,\n        dupes,\n    )\n\n\ndef process_obs(first_updated, last_updated):\n    \"\"\"Take obs.\"\"\"\n    with (\n        get_sqlalchemy_conn(\"iem\") as iconn,\n        get_sqlalchemy_conn(\"rwis\") as rconn,\n    ):\n        do_ob_work(iconn, rconn, first_updated, last_updated)\n\n\n@click.command()\n@click.option(\"--minutes\", type=int, help=\"Specify the size of the window\")\ndef main(minutes: int | None):\n    \"\"\"Go main\"\"\"\n    first_updated = get_first_updated()\n    if minutes is not None:\n        last_updated = min(first_updated + timedelta(minutes=minutes), utc())\n    else:\n        last_updated = utc()\n\n    process_traffic(first_updated, last_updated)\n    process_soil(first_updated, last_updated)\n    process_obs(first_updated, last_updated)\n\n    set_property(PROPERTY_NAME, last_updated)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/set_attribute_phour.py",
    "content": "\"\"\"Assign station attribute for those stations with hourly precip.\n\nRun from RUN_MIDNIGHT.sh\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.reference import StationAttributes as SA\nfrom pyiem.util import logger\nfrom sqlalchemy.engine import Connection\n\nLOG = logger()\n\n\n@with_sqlalchemy_conn(\"mesosite\")\ndef load_sites(conn: Connection | None = None) -> pd.DataFrame:\n    \"\"\"Figure out what we have.\"\"\"\n    df = pd.read_sql(\n        sql_helper(\"\"\"\n    SELECT s.iemid from stations s JOIN station_attributes a ON\n    (s.iemid = a.iemid) WHERE a.attr = :attr\n        \"\"\"),\n        conn,\n        params={\"attr\": SA.HAS_PHOUR},\n        index_col=\"iemid\",\n    )\n    LOG.info(\"Found %s stations with HAS_PHOUR attribute\", len(df.index))\n    return df\n\n\n@with_sqlalchemy_conn(\"iem\")\ndef load_obs(conn: Connection | None = None) -> pd.DataFrame:\n    \"\"\"Figure out who has HML data.\"\"\"\n    df = pd.read_sql(\n        sql_helper(\"\"\"\n    select distinct iemid from hourly where valid >= 'TODAY' and\n    valid < 'TOMORROW'\n                 \"\"\"),\n        conn,\n        index_col=\"iemid\",\n    )\n    LOG.info(\"Found %s stations reporting precip over past day\", len(df.index))\n    return df\n\n\n@with_sqlalchemy_conn(\"mesosite\")\ndef update_mesosite(iemids: list[int], conn: Connection | None = None) -> None:\n    \"\"\"Set the metadata!\"\"\"\n    for iemid in iemids:\n        conn.execute(\n            sql_helper(\"\"\"\n        INSERT into station_attributes (iemid, attr, value)\n        VALUES (:iemid, :attr, '1')\n            \"\"\"),\n            {\"iemid\": iemid, \"attr\": SA.HAS_PHOUR},\n        )\n    conn.commit()\n\n\ndef main():\n    \"\"\"Go.\"\"\"\n    currentdf = load_sites()\n    obsdf = load_obs()\n    LOG.info(\"hml has %s sites with HML data\", len(obsdf.index))\n    # Find the difference\n    addsites = obsdf.index.difference(currentdf.index)\n    if addsites.empty:\n        return\n    LOG.warning(\"Adding %s for %s sites\", SA.HAS_PHOUR, len(addsites))\n    update_mesosite(addsites.to_list())\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/set_climate.py",
    "content": "\"\"\"\nAssign a climate site to each site in the mesosite database, within reason\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.util import logger\nfrom sqlalchemy.engine import Connection\n\nLOG = logger()\n\n\n@with_sqlalchemy_conn(\"mesosite\")\ndef workflow(col: str, conn: Connection | None = None):\n    \"\"\"Query out all sites with a null climate_site\"\"\"\n    sl = (\n        \"state is not null\"\n        if col != \"climate_site\"\n        else \"state != ANY(:states)\"\n    )\n    updates = pd.read_sql(\n        sql_helper(\n            \"\"\"\n        SELECT id, geom, state, iemid, network,\n        ST_x(geom) as lon, ST_y(geom) as lat\n        from stations WHERE {col}\n        IS NULL and country = 'US' and {sl}\n        \"\"\",\n            col=col,\n            sl=sl,\n        ),\n        conn,\n        params={\n            \"states\": \"PU P1 P2 P3 P4 P5\".split(),\n        },\n        index_col=\"iemid\",\n    )\n    LOG.info(\"Found %s stations needing update for %s\", len(updates), col)\n    for iemid, row in updates.iterrows():\n        params = {\n            \"lon\": row[\"lon\"],\n            \"lat\": row[\"lat\"],\n            \"clnetwork\": \"NCDC81\" if col == \"ncdc81\" else \"NCEI91\",\n        }\n        # Find the closest site\n        if col == \"climate_site\":\n            # Find the closest site that we have data in ncdc_climate71\n            # which implies a valid climate_site entry already, chicken/egg\n            sql = sql_helper(\"\"\"\n                select id,\n                ST_Distance(geom, ST_Point(:lon, :lat, 4326)) as dist\n                from stations where\n                id in (select distinct climate_site from stations)\n                ORDER by dist asc\n                \"\"\")\n        else:\n            sql = sql_helper(\n                \"select id from stations WHERE network = :clnetwork \"\n                \"ORDER by ST_distance(geom, ST_Point(:lon, :lat, 4326)) \"\n                \"ASC LIMIT 1\"\n            )\n        res = conn.execute(sql, params)\n        if res.rowcount == 0:\n            LOG.info(\"Could not find any %s sites for: %s\", col, iemid)\n            continue\n        row2 = res.mappings().fetchone()\n        conn.execute(\n            sql_helper(\n                \"UPDATE stations SET {col} = :id WHERE iemid = :iemid\", col=col\n            ),\n            {\"id\": row2[\"id\"], \"iemid\": iemid},\n        )\n        LOG.info(\n            \"Set %s: %s for ID: %s[%s]\",\n            col,\n            row2[\"id\"],\n            row[\"id\"],\n            row[\"network\"],\n        )\n    conn.commit()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    workflow(\"climate_site\")\n    workflow(\"ncdc81\")\n    workflow(\"ncei91\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/set_county.py",
    "content": "\"\"\"Need to set station metadata for county name for a given site.\"\"\"\n\nfrom pyiem.database import get_dbconn\n\n\ndef set_county(mcursor2, iemid, ugc, ugcname):\n    \"\"\"set the county\"\"\"\n    mcursor2.execute(\n        \"UPDATE stations SET county = %s, ugc_county = %s WHERE iemid = %s\",\n        (ugcname, ugc, iemid),\n    )\n\n\ndef set_zone(mcursor2, iemid, ugc):\n    \"\"\"set the zone\"\"\"\n    mcursor2.execute(\n        \"UPDATE stations SET ugc_zone = %s WHERE iemid = %s\", (ugc, iemid)\n    )\n\n\ndef logic(\n    pcursor, mcursor2, ugccode, iemid, station, network, lon, lat, state\n):\n    \"\"\"Our logic\"\"\"\n    giswkt = f\"Point({lon} {lat})\"\n    pcursor.execute(\n        \"\"\"\n        SELECT ugc, name from ugcs WHERE\n        ST_Contains(geom, ST_GeomFromText(%s,4326))\n        and substr(ugc,1,3) = %s and end_ts is null\n    \"\"\",\n        (giswkt, state + ugccode),\n    )\n\n    result = False\n    if pcursor.rowcount != 1:\n        # Okay, so perhaps this site is offshore slightly, lets look for the\n        # nearest county\n        pcursor.execute(\n            \"\"\"\n            SELECT ugc, name,\n            ST_Distance(geom, ST_GeomFromText(%s,4326)) as d\n            from ugcs WHERE substr(ugc,1,3) = %s and end_ts is null and\n            ST_Distance(geom, ST_GeomFromText(%s,4326)) < 2\n            ORDER by d ASC LIMIT 1\n        \"\"\",\n            (giswkt, state + ugccode, giswkt),\n        )\n        if pcursor.rowcount == 1:\n            (ugc, ugcname, dist) = pcursor.fetchone()\n            print(\n                (\"OK set_county[%s] ID: %s Net: %s: St: %s UGC: %s Dist: %.2f\")\n                % (ugccode, station, network, state, ugc, dist)\n            )\n            if ugccode == \"C\":\n                set_county(mcursor2, iemid, ugc, ugcname)\n            else:\n                set_zone(mcursor2, iemid, ugc)\n            result = True\n        else:\n            print(\n                (\n                    \"FAIL set_county[%s] ID:%s Net:%s St:%s \"\n                    \"Lon:%.4f Lat:%.4f\\n\"\n                    \"https://mesonet.agron.iastate.edu/sites/\"\n                    \"site.php?station=%s&network=%s\"\n                    \"\"\n                )\n                % (\n                    ugccode,\n                    station,\n                    network,\n                    state,\n                    lon,\n                    lat,\n                    station,\n                    network,\n                )\n            )\n            result = False\n\n    else:\n        (ugc, ugcname) = pcursor.fetchone()\n        print(\n            (\"OK %s IEMID: %s SID: %s Network: %s to: %s [%s]\")\n            % (ugccode, iemid, station, network, ugcname, ugc)\n        )\n        if ugccode == \"C\":\n            set_county(mcursor2, iemid, ugc, ugcname)\n        else:\n            set_zone(mcursor2, iemid, ugc)\n        result = True\n    return result\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    # Get listing of stations without a county set\n    mesosite = get_dbconn(\"mesosite\")\n    postgis = get_dbconn(\"postgis\")\n    mcursor = mesosite.cursor()\n    mcursor2 = mesosite.cursor()\n    pcursor = postgis.cursor()\n    mcursor.execute(\n        \"\"\"\n        SELECT iemid, id, name, network, ST_x(geom), ST_y(geom),\n        state from stations WHERE (county is null or ugc_county is null\n        or ugc_zone is null) and country = 'US' and state is not null\n        and state not in ('PR', 'DC', 'GU', 'PU', 'P1', 'P2', 'P3', 'P4', 'P5')\n        ORDER by modified DESC\n        \"\"\"\n    )\n\n    failures = 0\n    for row in mcursor:\n        iemid = row[0]\n        station = row[1]\n        network = row[3]\n        lon = row[4]\n        lat = row[5]\n        state = row[6]\n        if not logic(\n            pcursor, mcursor2, \"C\", iemid, station, network, lon, lat, state\n        ):\n            failures += 1\n        if not logic(\n            pcursor, mcursor2, \"Z\", iemid, station, network, lon, lat, state\n        ):\n            failures += 1\n\n        if failures > 10:\n            break\n\n    mcursor.close()\n    mcursor2.close()\n    pcursor.close()\n    mesosite.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/set_elevation.py",
    "content": "\"\"\"Hit up elevation REST service to compute a station elevation.\n\nCalled from SYNC_STATIONS.sh\n\"\"\"\n\nimport time\n\nimport click\nimport httpx\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef get_elevation(lon: float, lat: float) -> float | None:\n    \"\"\"Use arcgisonline\"\"\"\n    resp = httpx.get(\n        f\"https://api.opentopodata.org/v1/mapzen?locations={lat},{lon}\",\n        timeout=30,\n    )\n    if resp.status_code != 200:\n        LOG.info(\"ERROR: %s\", resp.status_code)\n        return None\n    return resp.json()[\"results\"][0][\"elevation\"]\n\n\ndef workflow():\n    \"\"\"Our work\"\"\"\n    pgconn = get_dbconn(\"mesosite\")\n    mcursor = pgconn.cursor()\n    mcursor2 = pgconn.cursor()\n    mcursor.execute(\n        \"SELECT network, ST_x(geom) as lon, ST_y(geom) as lat, elevation, id \"\n        \"from stations WHERE (elevation < -990 or elevation is null)\"\n    )\n\n    for row in mcursor:\n        elev = row[3]\n        lat = row[2]\n        lon = row[1]\n        sid = row[4]\n        network = row[0]\n        newelev = get_elevation(lon, lat)\n        if newelev is None:\n            print(f\"Got None for {sid} {network}\")\n            continue\n\n        print(f\"{sid:7s} {network} OLD: {elev} NEW: {newelev:.3f}\")\n        mcursor2.execute(\n            \"UPDATE stations SET elevation = %s WHERE id = %s \"\n            \"and network = %s\",\n            (newelev, sid, network),\n        )\n        time.sleep(2)\n\n    mcursor2.close()\n    pgconn.commit()\n\n\n@click.command()\n@click.option(\"--lon\", type=float, help=\"Longitude\")\n@click.option(\"--lat\", type=float, help=\"Latitude\")\ndef main(lon: float | None, lat: float | None):\n    \"\"\"Go Main Go\"\"\"\n    if lon is not None and lat is not None:\n        print(get_elevation(lon, lat))\n        return\n    workflow()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/set_timezone.py",
    "content": "\"\"\"\nSet time zones of stations using the shapefile found here:\n\nhttp://efele.net/maps/tz/world/\n\"\"\"\n\nfrom pyiem.database import get_dbconnc\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main\"\"\"\n    pgconn, mcursor = get_dbconnc(\"mesosite\")\n    mcursor2 = pgconn.cursor()\n\n    mcursor.execute(\n        \"SELECT id, network, ST_x(geom) as lon, ST_y(geom) as lat \"\n        \"from stations WHERE tzname is null\"\n    )\n\n    for row in mcursor:\n        lat = row[\"lat\"]\n        lon = row[\"lon\"]\n        sid = row[\"id\"]\n        network = row[\"network\"]\n\n        mcursor2.execute(\n            \"\"\"\n        select tzid from tz_world where ST_Intersects(geom,\n        ST_Point(%s, %s, 4326));\n          \"\"\",\n            (lon, lat),\n        )\n        row2 = mcursor2.fetchone()\n        if row2 is None or row2[\"tzid\"] == \"uninhabited\":\n            LOG.info(\n                \"MISSING TZ ID: %s NETWORK: %s LAT: %.2f LON: %.2f\",\n                sid,\n                network,\n                lat,\n                lon,\n            )\n            mcursor2.execute(\n                \"\"\"\n                SELECT ST_Distance(geom, ST_Point(%s, %s, 4326)) as d,\n                id, tzname from stations WHERE network = %s\n                and tzname is not null ORDER by d ASC LIMIT 1\n            \"\"\",\n                (lon, lat, network),\n            )\n            row3 = mcursor2.fetchone()\n            if row3 is not None:\n                LOG.info(\n                    \"FORCING tz to its neighbor: %s Tzname: %s Dist: %.5f\",\n                    row3[\"id\"],\n                    row3[\"tzname\"],\n                    row3[\"d\"],\n                )\n                mcursor2.execute(\n                    \"\"\"\n                    UPDATE stations SET tzname = %s\n                    WHERE id = %s and network = %s\n                \"\"\",\n                    (row3[\"tzname\"], sid, network),\n                )\n            else:\n                mcursor2.execute(\n                    \"SELECT tzname from networks where id = %s\", (network,)\n                )\n                if mcursor2.rowcount == 1:\n                    tzname = mcursor2.fetchone()[\"tzname\"]\n                    LOG.info(\"%s using network default of %s\", sid, tzname)\n                    mcursor2.execute(\n                        \"\"\"\n                        UPDATE stations SET tzname = %s\n                        WHERE id = %s and network = %s\n                    \"\"\",\n                        (tzname, sid, network),\n                    )\n        else:\n            LOG.info(\n                \"ID: %s NETWORK: %s TIMEZONE: %s\", sid, network, row2[\"tzid\"]\n            )\n            mcursor2.execute(\n                \"UPDATE stations SET tzname = %s \"\n                \"WHERE id = %s and network = %s\",\n                (row2[\"tzid\"], sid, network),\n            )\n\n    mcursor2.close()\n    pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/set_wfo.py",
    "content": "\"\"\"Assign a WFO to sites in the metadata tables that have no WFO set.\"\"\"\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main\"\"\"\n    mesosite = get_dbconn(\"mesosite\")\n    postgis = get_dbconn(\"postgis\")\n    mcursor = mesosite.cursor()\n    mcursor2 = mesosite.cursor()\n    pcursor = postgis.cursor()\n\n    # Find sites we need to check on\n    mcursor.execute(\n        \"\"\"\n        select s.id, s.iemid, s.network, st_x(geom) as lon,\n        st_y(geom) as lat from stations s WHERE\n        (s.wfo IS NULL or s.wfo = '') and s.country = 'US'\n        \"\"\"\n    )\n\n    for row in mcursor:\n        sid = row[0]\n        iemid = row[1]\n        network = row[2]\n        # Look for WFO that\n        giswkt = f\"POINT({row[3]} {row[4]})\"\n        pcursor.execute(\n            \"select wfo from cwa WHERE \"\n            \"ST_Contains(the_geom, \"\n            \"  ST_SetSrid(ST_GeomFromEWKT(%s), 4326)) \",\n            (giswkt,),\n        )\n        if pcursor.rowcount == 0:\n            LOG.info(\n                \"IEMID: %s ID: %s NETWORK: %s not within CWAs, calc dist\",\n                iemid,\n                sid,\n                network,\n            )\n            pcursor.execute(\n                \"SELECT wfo, ST_Distance(the_geom, \"\n                \"  ST_SetSrid(ST_GeomFromEWKT(%s), 4326)) as dist \"\n                \"from cwa ORDER by dist ASC LIMIT 1\",\n                (giswkt,),\n            )\n            wfo, dist = pcursor.fetchone()\n            if dist > 3:\n                LOG.info(\n                    \"    closest CWA %s found >3 degrees away %.2f\",\n                    wfo,\n                    dist,\n                )\n                continue\n        else:\n            row2 = pcursor.fetchone()\n            wfo = row2[0][:3]\n        LOG.info(\n            \"Assinging WFO: %s to IEMID: %s ID: %s NETWORK: %s\",\n            wfo,\n            iemid,\n            sid,\n            network,\n        )\n        mcursor2.execute(\n            \"UPDATE stations SET wfo = %s WHERE iemid = %s\", (wfo, iemid)\n        )\n\n    mcursor.close()\n    mcursor2.close()\n    mesosite.commit()\n    mesosite.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/sync_stations.py",
    "content": "\"\"\"\nMy purpose in life is to sync the mesosite stations table to other\ndatabases.  This will hopefully remove some hackery\n\"\"\"\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn\nfrom pyiem.util import logger, utc\n\nLOG = logger()\n\n\ndef sync(df, dbname):\n    \"\"\"\n    Actually do the syncing, please\n    \"\"\"\n    # connect to synced database\n    dbconn, dbcursor = get_dbconnc(dbname)\n    # Figure out our latest revision\n    dbcursor.execute(\n        \"SELECT max(modified) as mm, max(iemid) as mi from stations\"\n    )\n    row = dbcursor.fetchone()\n    maxts = row[\"mm\"] or utc(1980, 1, 1)\n    maxid = row[\"mi\"] or -1\n    # Check for stations that were removed from mesosite\n    with get_sqlalchemy_conn(dbname) as conn:\n        localdf = pd.read_sql(\n            \"SELECT iemid, modified from stations ORDER by iemid ASC\",\n            conn,\n            index_col=\"iemid\",\n        )\n    localdf[\"iemid\"] = localdf.index.values\n    todelete = localdf.index.difference(df.index)\n    if not todelete.empty:\n        for iemid in todelete.values:\n            dbcursor.execute(\n                \"DELETE from stations where iemid = %s\",\n                (iemid,),\n            )\n        dbcursor.close()\n        dbconn.commit()\n        dbcursor = dbconn.cursor()\n\n    changes = df[(df[\"iemid\"] > maxid) | (df[\"modified\"] > maxts)]\n    for _iemid, row in changes.iterrows():\n        prow = row.replace({np.nan: None}).to_dict()\n        if prow[\"iemid\"] not in localdf.index:\n            dbcursor.execute(\n                \"INSERT into stations(iemid, network, id) VALUES(%s, %s, %s)\",\n                (prow[\"iemid\"], prow[\"network\"], prow[\"id\"]),\n            )\n\n        # insert queried stations\n        dbcursor.execute(\n            \"\"\"\n            UPDATE stations SET name = %(name)s,\n            state = %(state)s, elevation = %(elevation)s, online = %(online)s,\n            geom = %(geom)s, params = %(params)s, county = %(county)s,\n            plot_name = %(plot_name)s, climate_site = %(climate_site)s,\n            wfo = %(wfo)s, archive_begin = %(archive_begin)s,\n            archive_end = %(archive_end)s, remote_id = %(remote_id)s,\n            tzname = %(tzname)s, country = %(country)s,\n            modified = %(modified)s, network = %(network)s,\n            metasite = %(metasite)s,\n            sigstage_low = %(sigstage_low)s,\n            sigstage_action = %(sigstage_action)s,\n            sigstage_bankfull = %(sigstage_bankfull)s,\n            sigstage_flood = %(sigstage_flood)s,\n            sigstage_moderate = %(sigstage_moderate)s,\n            sigstage_major = %(sigstage_major)s,\n            sigstage_record = %(sigstage_record)s, ugc_county = %(ugc_county)s,\n            ugc_zone = %(ugc_zone)s, id = %(id)s, ncdc81 = %(ncdc81)s,\n            ncei91 = %(ncei91)s,\n            temp24_hour = %(temp24_hour)s, precip24_hour = %(precip24_hour)s,\n            wigos = %(wigos)s, synop = %(synop)s\n            WHERE iemid = %(iemid)s\n       \"\"\",\n            prow,\n        )\n    LOG.warning(\n        \"DB: %-7s Del %3s Mod %4s rows TS: %s IEMID: %s\",\n        dbname,\n        len(todelete),\n        len(changes.index),\n        maxts.strftime(\"%Y/%m/%d %H:%M\"),\n        maxid,\n    )\n    dbcursor.close()\n    dbconn.commit()\n    # close connection\n    dbconn.close()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    subscribers = (\n        \"iem isuag coop hads hml asos asos1min postgis raob rwis other\"\n    ).split()\n\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        df = pd.read_sql(\n            \"SELECT * from stations ORDER by iemid ASC\",\n            conn,\n            index_col=\"iemid\",\n        )\n    df[\"iemid\"] = df.index.values\n    # fix dtype\n    for col in [\"temp24_hour\", \"precip24_hour\", \"remote_id\", \"synop\"]:\n        df[col] = df[col].astype(\"Int64\")\n    for sub in subscribers:\n        sync(df, sub)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/unknown_stations.py",
    "content": "\"\"\"\n Squawk to daryl about unknown sites\n\nRun from RUN_2AM.sh\n\"\"\"\n\nfrom pyiem.database import get_dbconn, get_dbconnc\n\n\ndef do_asos():\n    \"\"\"Print out METAR ingest unknown stations\"\"\"\n    asos = get_dbconn(\"asos\")\n    acursor = asos.cursor()\n    acursor2 = asos.cursor()\n\n    print(\"----- Unknown IDs from METAR sites -----\")\n    acursor.execute(\n        \"select id, count(*), max(valid) from unknown GROUP by id \"\n        \"ORDER by count DESC\"\n    )\n    for row in acursor:\n        print(\"ASOS %7s %5s %s\" % (row[0], row[1], row[2]))\n        acursor2.execute(\"DELETE from unknown where id = %s\", (row[0],))\n\n    asos.commit()\n\n\ndef check_asos_in_coop_network():\n    \"\"\"We don't want this situation for convoluted reasons.\"\"\"\n    pgconn, cursor = get_dbconnc(\"mesosite\")\n    cursor.execute(\n        \"\"\"\n        with data as (\n            select id,\n            max(case when network ~* 'COOP' then 1 else 0 end) as is_coop,\n            max(case when network ~* 'ASOS' then 1 else 0 end) as is_asos,\n            max(case when network ~* 'DCP' then 1 else 0 end) as is_dcp\n            from stations GROUP by id)\n        select id from data where is_coop > 0 and is_asos > 0\"\"\"\n    )\n    if cursor.rowcount > 0:\n        print(\"------ ASOS in COOP Network ------\")\n        for row in cursor:\n            print(f\"ASOS Site in COOP, not DCP: {row['id']}\")\n    cursor.close()\n    pgconn.close()\n\n\ndef print_blank_sname():\n    \"\"\"Make sure stations have names\"\"\"\n    pgconn = get_dbconn(\"mesosite\")\n    cursor = pgconn.cursor()\n    cursor.execute(\n        \"SELECT id, network from stations \"\n        \"WHERE name is null or name = '' ORDER by iemid ASC LIMIT 5\"\n    )\n    if cursor.rowcount > 0:\n        print(\"------ Sites with empty station names ------\")\n    for row in cursor:\n        print(\"%10s %s\" % (row[0], row[1]))\n\n\ndef do_hads():\n    \"\"\"Print out the hads stuff.\"\"\"\n    hads = get_dbconn(\"hads\")\n    access = get_dbconn(\"iem\")\n    hcursor = hads.cursor()\n    acursor = access.cursor()\n\n    print(\"----- Unknown NWSLIs from SHEF Ingest -----\")\n    hcursor.execute(\n        \"\"\"\n        select nwsli, count(*) as tot, max(product) as maxp,\n        count(distinct substr(product,1,8)),\n        count(distinct product),\n        max(case when substr(nwsli,4,2) = 'I4' then 2\n        when substr(product, 14, 4) = 'KWOH' then 1\n        else 0 end) as priority\n        from unknown\n        where nwsli ~ '^[A-Z]{4}[0-9]$' and\n        substr(product, 1, 6) = to_char(now(), 'YYYYmm')\n        GROUP by nwsli ORDER by priority DESC, tot DESC LIMIT 50\n    \"\"\"\n    )\n    for row in hcursor:\n        print(\n            (\"%7s Tot:%4s Days:%2s Products: %s %s\")\n            % (row[0], row[1], row[3], row[4], row[2])\n        )\n        # Get vars reported for this site\n        acursor.execute(\n            \"SELECT valid, physical_code || duration || source || \"\n            \"extremum || probability as p, value from current_shef \"\n            \"WHERE station = %s ORDER by p ASC\",\n            (row[0],),\n        )\n        for row2 in acursor:\n            print(f\"    {row2[0]} {row2[1]} {row2[2]}\")\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    do_asos()\n    do_hads()\n    print_blank_sname()\n    check_asos_in_coop_network()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/uscrn.py",
    "content": "\"\"\"Process the USCRN station table\n\nhttps://www.ncei.noaa.gov/pub/data/uscrn/products/stations.tsv\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import get_dbconn\n\n\ndef main():\n    \"\"\"Go\"\"\"\n    pgconn = get_dbconn(\"mesosite\")\n    cursor = pgconn.cursor()\n    df = pd.read_csv(\"stations.tsv\", sep=r\"\\t\", engine=\"python\")\n    df[\"stname\"] = df[\"LOCATION\"] + \" \" + df[\"VECTOR\"]\n    for _, row in df.iterrows():\n        station = row[\"WBAN\"]\n        if station == \"UN\" or pd.isnull(station):\n            continue\n        cursor.execute(\n            \"SELECT * from stations where id = %s and network = 'USCRN'\",\n            (station,),\n        )\n        if cursor.rowcount == 0:\n            cursor.execute(\n                \"INSERT into stations (id, network) VALUES (%s, 'USCRN')\",\n                (station,),\n            )\n        cursor.execute(\n            \"\"\"\n        UPDATE stations\n        SET geom = ST_POINT(%(LONGITUDE)s, %(LATITUDE)s, 4326),\n        country = %(COUNTRY)s, state = %(STATE)s,\n        name = %(stname)s, elevation = %(ELEVATION)s,\n        online = 't', metasite = 'f'\n        WHERE id = %(WBAN)s and network = 'USCRN'\n        \"\"\",\n            row,\n        )\n\n    cursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/xcheck_SFQ.py",
    "content": "\"\"\"Cross SHEF sites reporting SFQ and not assigned to a ASOS/WFO.\n\nRun from RUN_0Z.sh\n\"\"\"\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import StationAttributes as SA\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef load_sites() -> pd.DataFrame:\n    \"\"\"Figure out what we have.\"\"\"\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n    SELECT id, value as snow_src from stations s JOIN station_attributes a ON\n    (s.iemid = a.iemid) WHERE a.attr = :attr\n            \"\"\"),\n            conn,\n            params={\"attr\": SA.SHEF_6HR_SRC},\n            index_col=\"id\",\n        )\n    return df\n\n\ndef load_obs() -> pd.DataFrame:\n    \"\"\"Figure out who has HML data.\"\"\"\n    with get_sqlalchemy_conn(\"hads\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n    select distinct station from raw where\n    valid > now() - '7 days'::interval and substr(key, 1, 3) = 'SFQ'\n                 \"\"\"),\n            conn,\n            index_col=\"station\",\n        )\n    return df\n\n\ndef main():\n    \"\"\"Go.\"\"\"\n    currentdf = load_sites()\n    LOG.info(\n        \"mesosite has %s sites with %s\", len(currentdf.index), SA.SHEF_6HR_SRC\n    )\n    obsdf = load_obs()\n    LOG.info(\"hml has %s sites with HML data\", len(obsdf.index))\n    # Find the difference\n    addsites = obsdf.index.difference(currentdf[\"snow_src\"])\n    if addsites.empty:\n        return\n    LOG.warning(\"Found %s SFQ sites without metadata.\", len(addsites))\n    print(addsites.to_list())\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dbutil/xcheck_madis.py",
    "content": "\"\"\"See if MADIS knows any station metadata.\"\"\"\n\nimport os\nimport warnings\nfrom datetime import timedelta\n\nimport pandas as pd\nfrom netCDF4 import chartostring\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import ncopen, utc\n\nwarnings.filterwarnings(\"ignore\", category=DeprecationWarning)\n\n\ndef main():\n    \"\"\"Go Main Go!\"\"\"\n    with get_sqlalchemy_conn(\"hads\") as conn:\n        udf = pd.read_sql(\n            sql_helper(\"\"\"\n            SELECT distinct nwsli, 1 as col from unknown\n            WHERE length(nwsli) = 5 ORDER by nwsli\n        \"\"\"),\n            conn,\n            index_col=\"nwsli\",\n        )\n    print(f\"Found {len(udf.index)} unknown entries\")\n    # Find latest MADIS netcdf\n    now = utc()\n    i = 0\n    while i < 10:\n        now -= timedelta(hours=1)\n        testfn = now.strftime(\"/mesonet/data/madis/mesonet1/%Y%m%d_%H00_10.nc\")\n        if os.path.isfile(testfn):\n            break\n        i += 1\n    with ncopen(testfn) as nc:\n        stations = chartostring(nc.variables[\"stationId\"][:]).tolist()\n        names = chartostring(nc.variables[\"stationName\"][:])\n        providers = chartostring(nc.variables[\"dataProvider\"][:])\n        lats = nc.variables[\"latitude\"][:]\n        lons = nc.variables[\"longitude\"][:]\n    for sid in udf.index.values:\n        if sid not in stations:\n            continue\n        idx = stations.index(sid)\n        print(f\"{sid} {names[idx]} {providers[idx]} {lats[idx]} {lons[idx]}\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dl/archive_composite.py",
    "content": "\"\"\"Regenerate composites to fulfill various reasons.\n\nNot called from anywhere, but often manually run :/\n\"\"\"\n\nimport subprocess\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\n@click.command()\n@click.option(\"--sts\", required=True, help=\"Start Time\", type=click.DateTime())\n@click.option(\"--ets\", required=True, help=\"End Time\", type=click.DateTime())\ndef main(sts: datetime, ets: datetime):\n    \"\"\"Go Main Go\"\"\"\n    sts = sts.replace(tzinfo=timezone.utc)\n    ets = ets.replace(tzinfo=timezone.utc)\n    interval = timedelta(minutes=5)\n    now = sts\n    while now < ets:\n        cmd = [\n            \"python\",\n            \"radar_composite.py\",\n            f\"--valid={now:%Y-%m-%dT%H:%M}:00\",\n        ]\n        LOG.info(\" \".join(cmd))\n        subprocess.call(cmd)\n        now += interval\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dl/download_cfs.py",
    "content": "\"\"\"Download and archive the CFS data\n\nRun from RUN_NOON.sh for 3 and 4 days ago\n\ntmax\ntmin\nprate\ndswsfc\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\n\nimport click\nimport httpx\nimport pygrib\nfrom pyiem.util import archive_fetch, exponential_backoff, logger, utc\n\nLOG = logger()\n# Should have at least 9 months of data, so roughtly\nREQUIRED_MSGS = 9 * 30 * 4\n\n\ndef check(now, varname, scenario) -> bool:\n    \"\"\"See what the IEM already has.\"\"\"\n    ppath = (\n        f\"{now:%Y/%m/%d}/model/cfs/{now:%H}/\"\n        f\"{varname}.{scenario:02d}.{now:%Y%m%d%H}.daily.grib2\"\n    )\n    with archive_fetch(ppath) as fn:\n        if fn is None:\n            return False\n        grbs = pygrib.open(fn)\n        messages = grbs.messages\n        grbs.close()\n    LOG.info(\"Found %s with %s messages\", fn, messages)\n    return messages > REQUIRED_MSGS\n\n\ndef dl(now, varname, scenario):\n    \"\"\"get the files\"\"\"\n    s2 = f\"{scenario:02d}\"\n    uri = (\n        \"https://nomads.ncep.noaa.gov/pub/data/nccf/com/cfs/prod/\"\n        f\"cfs.{now:%Y%m%d/%H}/time_grib_{s2}/{varname}.{s2}\"\n        f\".{now:%Y%m%d%H}.daily.grb2\"\n    )\n    LOG.info(\"fetching %s\", uri)\n    response = exponential_backoff(httpx.get, uri, timeout=60)\n    if response is None or response.status_code != 200:\n        LOG.warning(\"dl %s failed\", uri)\n        return\n    with tempfile.NamedTemporaryFile(delete=False) as tmpfd:\n        tmpfd.write(response.content)\n    # Check out this file to see how much data we actually have, it had\n    # better be a big number\n    grb = pygrib.open(tmpfd.name)\n    if grb.messages < REQUIRED_MSGS:\n        LOG.warning(\n            \"[%s] %s %s has only %s messages, need %s+\",\n            scenario,\n            now,\n            varname,\n            grb.messages,\n            REQUIRED_MSGS,\n        )\n    else:\n        # Inject into LDM\n        cmd = [\n            \"pqinsert\",\n            \"-p\",\n            f\"data a {now:%Y%m%d%H%M} blah \"\n            f\"model/cfs/{now:%H}/{varname}.{s2}.{now:%Y%m%d%H}.daily.grib2 \"\n            \"grib\",\n            tmpfd.name,\n        ]\n        LOG.info(\"Running: %s\", \" \".join(cmd))\n        subprocess.call(cmd)\n\n    os.remove(tmpfd.name)\n\n\n@click.command()\n@click.option(\"--date\", \"valid\", type=click.DateTime(), help=\"UTC date\")\ndef main(valid):\n    \"\"\"Do main\"\"\"\n    now = utc(valid.year, valid.month, valid.day)\n    for hour in [0, 6, 12, 18]:\n        now = now.replace(hour=hour)\n        for varname in [\"tmax\", \"tmin\", \"prate\", \"dswsfc\"]:\n            # Control member 1 is the only one out 9 months\n            if not check(now, varname, 1):\n                dl(now, varname, 1)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dl/download_ffg.py",
    "content": "\"\"\"Download the 5km FFG product.\n\nRun from RUN_40_AFTER.sh\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport httpx\nfrom pyiem.util import archive_fetch, exponential_backoff, logger, utc\n\nLOG = logger()\n\n\ndef do(ts):\n    \"\"\"Run for a given date!\"\"\"\n    ppath = ts.strftime(\"%Y/%m/%d/model/ffg/5kmffg_%Y%d%m%H.grib2\")\n    with archive_fetch(ppath) as fn:\n        if fn is not None:\n            LOG.info(\"Already have %s\", ppath)\n            return\n    remotefn = ts.strftime(\"5kmffg_%Y%m%d%H.grb2\")\n    url = f\"https://ftp-wpc.ncep.noaa.gov/workoff/ffg/{remotefn}\"\n    LOG.info(\"fetching %s\", url)\n    req = exponential_backoff(httpx.get, url, timeout=20)\n    if req is None or req.status_code != 200:\n        LOG.warning(\"Download of %s failed\", url)\n        return\n    tmpfd, tmpfn = tempfile.mkstemp()\n    os.write(tmpfd, req.content)\n    os.close(tmpfd)\n    cmd = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        f\"data a {ts:%Y%m%d%H%M} bogus model/ffg/{remotefn[:-5]}.grib2 grib2\",\n        tmpfn,\n    ]\n    LOG.info(cmd)\n    subprocess.call(cmd)\n\n    os.remove(tmpfn)\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), help=\"Specify UTC valid time\")\ndef main(valid: datetime | None):\n    \"\"\"Go Main Go\"\"\"\n    if valid is None:\n        # Run for the last hour, when we are modulus 6\n        ts = utc() - timedelta(hours=1)\n        ts = ts.replace(minute=0)\n        if ts.hour % 6 > 0:\n            LOG.info(\"Aborting as timestamp %s is not modulus 6\", ts)\n            return\n    else:\n        ts = valid.replace(tzinfo=timezone.utc)\n    # NOTE website no longer has 3 days worth of data, but two\n    for offset in [0, 24, 36]:\n        do(ts - timedelta(hours=offset))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dl/download_gfs.py",
    "content": "\"\"\"Get grids from the GFS that we care about.\n\nAt 2GB per run, we don't have capacity to archive this all.  So we save 1-2\ndays worth of data into /mesonet/tmp/gfs/\n\nRUN from RUN_20_AFTER.sh\n\"\"\"\n\nimport os\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport requests\nfrom pyiem.util import exponential_backoff, logger\n\nLOG = logger()\nBASEDIR = \"/mesonet/tmp/gfs\"\n\n\ndef cull(valid):\n    \"\"\"Cull old content.\"\"\"\n    mydir = os.path.join(BASEDIR, valid.strftime(\"%Y%m%d%H\"))\n    if os.path.isdir(mydir):\n        for fn in os.listdir(mydir):\n            os.unlink(os.path.join(mydir, fn))\n        # now remove the directory as well\n        os.rmdir(mydir)\n\n\ndef need_to_run(valid, hr):\n    \"\"\"Check for a need to run for this forecast.\"\"\"\n    mydir = os.path.join(BASEDIR, valid.strftime(\"%Y%m%d%H\"))\n    if not os.path.isdir(mydir):\n        os.makedirs(mydir, exist_ok=True)\n    gribfn = valid.strftime(f\"{mydir}/gfs.t%Hz.sfluxgrbf{hr:03.0f}.grib2\")\n    return not os.path.isfile(gribfn)\n\n\ndef fetch(valid, hr):\n    \"\"\"Fetch the data for this timestamp\"\"\"\n    baseurl = \"https://s3.amazonaws.com/noaa-gfs-bdp-pds/\"\n    uri = valid.strftime(\n        f\"{baseurl}gfs.%Y%m%d/%H/atmos/gfs.t%Hz.sfluxgrbf{hr:03.0f}.grib2.idx\"\n    )\n    req = exponential_backoff(requests.get, uri, timeout=30)\n    if req is None or req.status_code != 200:\n        LOG.info(\"failed to get idx: %s\", uri)\n        return\n\n    offsets = []\n    neednext = False\n    for line in req.content.decode(\"utf-8\").split(\"\\n\"):\n        tokens = line.split(\":\")\n        if len(tokens) < 3:\n            continue\n        if neednext:\n            offsets[-1].append(int(tokens[1]))\n            neednext = False\n        # Precip and high/low temp\n        if tokens[3] in [\"PRATE\", \"TMAX\", \"TMIN\"]:\n            offsets.append([int(tokens[1])])\n            neednext = True\n        elif tokens[3] in [\"ULWRF\", \"DSWRF\"]:\n            if tokens[4] == \"surface\" and tokens[5].find(\"ave fcst\") > 0:\n                offsets.append([int(tokens[1])])\n                neednext = True\n        # Save soil temp and water at surface, 10cm and 40cm\n        elif tokens[3] in [\"TSOIL\", \"SOILW\"]:\n            if tokens[4] in [\n                \"0-0.1 m below ground\",\n                \"0.1-0.4 m below ground\",\n                \"0.4-1 m below ground\",\n                \"1-2 m below ground\",\n            ]:\n                offsets.append([int(tokens[1])])\n                neednext = True\n\n    fn = valid.strftime(\n        f\"{BASEDIR}/%Y%m%d%H/gfs.t%Hz.sfluxgrbf{hr:03.0f}.grib2\"\n    )\n    LOG.info(\"writing %s\", fn)\n    if len(offsets) != 13 and hr > 0:\n        LOG.warning(\"found %s gribs for %s[%s]\", len(offsets), valid, hr)\n    for pr in offsets:\n        headers = {\"Range\": f\"bytes={pr[0]}-{pr[1]}\"}\n        req = exponential_backoff(\n            requests.get, uri[:-4], headers=headers, timeout=30\n        )\n        if req is None:\n            LOG.warning(\"failure for uri: %s\", uri)\n            continue\n        with open(fn, \"ab\") as fh:\n            fh.write(req.content)\n\n\n@click.command()\n@click.option(\n    \"--valid\", type=click.DateTime(), help=\"Valid UTC Timestamp\", required=True\n)\ndef main(valid: datetime):\n    \"\"\"Go Main Go\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    # script is called every hour, just short circuit the un-needed hours\n    if valid.hour % 6 != 0:\n        return\n    times = [valid, valid - timedelta(hours=6)]\n    for ts in times:\n        for hr in range(0, 385, 6):\n            if need_to_run(ts, hr):\n                fetch(ts, hr)\n    # now cull old content\n    for hr in range(72, 97, 6):\n        cull(valid - timedelta(hours=hr))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dl/download_hrrr_rad.py",
    "content": "\"\"\"\n Since the NOAAPort feed of HRRR data does not have radiation, we should\n download this manually from NCEP\n\nRun at 40 AFTER for the previous hour\n\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport httpx\nimport pygrib\nfrom pyiem.util import archive_fetch, exponential_backoff, logger, utc\n\nLOG = logger()\n\n\ndef need_to_run(valid) -> bool:\n    \"\"\"Check to see if we already have the radiation data we need\"\"\"\n    ppath = valid.strftime(\"%Y/%m/%d/model/hrrr/%H/hrrr.t%Hz.3kmf01.grib2\")\n    with archive_fetch(ppath) as fn:\n        if fn is None:\n            return True\n        # Look for our grids please.\n        with pygrib.open(fn) as grbs:\n            hits = 0\n            for grb in grbs:\n                if grb.shortName in [\"dswrf\", \"msdwswrf\"]:\n                    hits += 1\n    LOG.info(\"Found %s dswrf fields in %s\", hits, ppath)\n    return hits != 4\n\n\ndef fetch(valid):\n    \"\"\"Fetch the radiation data for this timestamp\n    22:23684154:d=2023041000:DSWRF:surface:0-15 min ave fcst:\n    \"\"\"\n    baseuri = \"https://nomads.ncep.noaa.gov/pub/data/nccf/com/hrrr/prod\"\n    if valid < utc() - timedelta(days=1):\n        baseuri = \"https://noaa-hrrr-bdp-pds.s3.amazonaws.com\"\n    uri = valid.strftime(\n        f\"{baseuri}/hrrr.%Y%m%d/conus/hrrr.t%Hz.wrfsubhf01.grib2.idx\"\n    )\n    req = exponential_backoff(httpx.get, uri, timeout=30)\n    if req is None or req.status_code != 200:\n        LOG.warning(\"failed to get idx %s\", uri)\n        return\n\n    offsets = []\n    neednext = False\n    for line in req.content.decode(\"utf-8\").split(\"\\n\"):\n        tokens = line.split(\":\")\n        if len(tokens) < 3:\n            continue\n        if neednext:\n            offsets[-1].append(int(tokens[1]))\n            neednext = False\n        if tokens[3] == \"DSWRF\" and tokens[5].find(\"ave fcst\") > -1:\n            offsets.append([int(tokens[1])])\n            neednext = True\n\n    if len(offsets) != 4:\n        LOG.warning(\"warning, found %s gribs for %s\", len(offsets), valid)\n    # Force overwrite first\n    routes = \"a\"\n    for pr in offsets:\n        pqstr = valid.strftime(\n            f\"data {routes} %Y%m%d%H00 bogus \"\n            \"model/hrrr/%H/hrrr.t%Hz.3kmf01.grib2 grib2\"\n        )\n        routes = \"u\"\n        headers = {\"Range\": f\"bytes={pr[0]}-{pr[1]}\"}\n        req = exponential_backoff(\n            httpx.get, uri[:-4], headers=headers, timeout=30\n        )\n        if req is None:\n            LOG.info(\"failure for uri: %s\", uri)\n            continue\n        with tempfile.NamedTemporaryFile(delete=False) as tmpfd:\n            tmpfd.write(req.content)\n        subprocess.call([\"pqinsert\", \"-p\", pqstr, tmpfd.name])\n        os.unlink(tmpfd.name)\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), help=\"Specify UTC valid time\")\ndef main(valid: datetime | None):\n    \"\"\"Go Main Go\"\"\"\n    times = []\n    if valid is not None:\n        times.append(valid.replace(tzinfo=timezone.utc))\n    else:\n        times.append(utc() - timedelta(hours=1))\n        times.append(utc() - timedelta(hours=6))\n        times.append(utc() - timedelta(hours=24))\n    for ts in times:\n        if not need_to_run(ts):\n            continue\n        LOG.info(\"running for %s\", ts)\n        fetch(ts)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dl/download_hrrr_tsoil.py",
    "content": "\"\"\"\nSince the NOAAPort feed of HRRR data does not have radiation, we should\ndownload this manually from NCEP\n\nRun at 40 AFTER for the previous hour.\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport httpx\nimport pygrib\nfrom pyiem.util import archive_fetch, exponential_backoff, logger, utc\n\nLOG = logger()\n\n\ndef need_to_run(valid: datetime) -> bool:\n    \"\"\"Check to see if we already have the radiation data we need\"\"\"\n    ppath = valid.strftime(\"%Y/%m/%d/model/hrrr/%H/hrrr.t%Hz.3kmf00.grib2\")\n    with archive_fetch(ppath) as fn:\n        if fn is None:\n            return True\n        # Look for our grids please.\n        with pygrib.open(fn) as grbs:\n            hits = 0\n            for grb in grbs:\n                if grb.shortName in [\"soilw\", \"st\"]:\n                    hits += 1\n    LOG.info(\"Found %s soil fields in %s\", hits, ppath)\n    return hits != 10\n\n\ndef fetch(valid):\n    \"\"\"Fetch the radiation data for this timestamp\n    80:54371554:d=2014101002:ULWRF:top of atmosphere:anl:\n    81:56146124:d=2014101002:DSWRF:surface:anl:\n    \"\"\"\n    baseuri = \"https://nomads.ncep.noaa.gov/pub/data/nccf/com/hrrr/prod\"\n    if valid < utc() - timedelta(days=1):\n        baseuri = \"https://noaa-hrrr-bdp-pds.s3.amazonaws.com\"\n    uri = valid.strftime(\n        f\"{baseuri}/hrrr.%Y%m%d/conus/hrrr.t%Hz.wrfprsf00.grib2.idx\"\n    )\n    req = exponential_backoff(httpx.get, uri, timeout=30)\n    if req is None or req.status_code != 200:\n        LOG.info(\"failed to get idx %s\", uri)\n        return\n\n    offsets = []\n    neednext = False\n    for line in req.content.decode(\"utf-8\").split(\"\\n\"):\n        tokens = line.split(\":\")\n        if len(tokens) < 3:\n            continue\n        if neednext:\n            offsets[-1].append(int(tokens[1]))\n            neednext = False\n        # Save soil temp and water at surface, 10cm and 40cm\n        if tokens[3] in [\"TSOIL\", \"SOILW\"] and tokens[4] in [\n            \"0-0 m below ground\",\n            \"0.1-0.1 m below ground\",\n            \"0.3-0.3 m below ground\",\n            \"0.6-0.6 m below ground\",\n            \"1-1 m below ground\",\n        ]:\n            offsets.append([int(tokens[1])])\n            neednext = True\n\n    pqstr = valid.strftime(\n        \"data u %Y%m%d%H00 bogus model/hrrr/%H/hrrr.t%Hz.3kmf00.grib2 grib2\"\n    )\n\n    if len(offsets) != 10:\n        LOG.warning(\"warning, found %s gribs for %s\", len(offsets), valid)\n    for pr in offsets:\n        headers = {\"Range\": f\"bytes={pr[0]}-{pr[1]}\"}\n        req = exponential_backoff(\n            httpx.get, uri[:-4], headers=headers, timeout=30\n        )\n        if req is None:\n            LOG.info(\"failure for uri: %s\", uri)\n            continue\n        tmpfd = tempfile.NamedTemporaryFile(delete=False)\n        tmpfd.write(req.content)\n        tmpfd.close()\n        subprocess.call([\"pqinsert\", \"-p\", pqstr, tmpfd.name])\n        os.unlink(tmpfd.name)\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), help=\"Specify UTC valid time\")\ndef main(valid: datetime | None):\n    \"\"\"Go Main Go\"\"\"\n    times = []\n    if valid is not None:\n        times.append(valid.replace(tzinfo=timezone.utc))\n    else:\n        times.append(utc() - timedelta(hours=1))\n        times.append(utc() - timedelta(hours=6))\n        times.append(utc() - timedelta(hours=24))\n    for ts in times:\n        if not need_to_run(ts):\n            continue\n        LOG.info(\"running for %s\", ts)\n        fetch(ts)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dl/download_imerg.py",
    "content": "\"\"\"Fetch NASA GPM data.\n\nIMERG-Early has at most 4 hour latency.\n\nIMERG-Late has about 14 hours.\n\nReplace HHE with HHL\n\nIMERG-Final is many months delayed\n\nDrop L in the above.\n\n2001-today\n\nRUN from RUN_20_AFTER.sh for 5 hours ago.\n\"\"\"\n\nimport json\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport httpx\nimport numpy as np\nimport rasterio\nfrom PIL import Image\nfrom pyiem import mrms\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import logger, ncopen, utc\n\nLOG = logger()\n\n\ndef get_geotiff(valid: datetime, source: str) -> np.ndarray | None:\n    \"\"\"Do the GeoTIFF workflow.\"\"\"\n    endts = valid + timedelta(minutes=29, seconds=59)\n    minutes = valid.hour * 60 + valid.minute\n    pp = \"early\" if source == \"E\" else f\"{valid:%Y/%m}\"\n    url = (\n        f\"https://jsimpsonhttps.pps.eosdis.nasa.gov/imerg/gis/{pp}/\"\n        f\"3B-HHR-{source}.MS.MRG.3IMERG.{valid:%Y%m%d}-S{valid:%H%M%S}-\"\n        f\"E{endts:%H%M%S}.{minutes:04.0f}.V07C.30min.tif\"\n    )\n    auth = httpx.NetRCAuth()\n    with httpx.Client(auth=auth, follow_redirects=False) as client:\n        LOG.info(\"Fetching %s\", url)\n        try:\n            resp = client.get(url, timeout=10)\n            resp.raise_for_status()\n        except Exception as exp:\n            LOG.info(\"Error fetching %s: %s\", url, exp)\n            return None\n        with open(\"pps.tif\", \"wb\") as f:\n            f.write(resp.content)\n        with rasterio.open(\"pps.tif\") as src:\n            pmm = src.read(1) / 10.0\n            # Life choice, set anything above 300mm to zero\n            pmm = np.where(pmm > 300, 0, pmm)\n    return pmm\n\n\ndef get_netcdf(valid, source) -> np.ndarray | None:\n    \"\"\"The NetCDF workflow\"\"\"\n    url = valid.strftime(\n        \"https://gpm1.gesdisc.eosdis.nasa.gov/thredds/ncss/grid/aggregation/\"\n        f\"GPM_3IMERGHH{source}.07/%Y/GPM_3IMERGHH{source}\"\n        \".07_Aggregation_%Y%03j.ncml.ncml?\"\n        \"var=precipitation&time=%Y-%m-%dT%H%%3A%M%%3A00Z&\"\n        \"accept=netcdf4-classic\"\n    )\n    auth = httpx.NetRCAuth()\n    with httpx.Client(auth=auth, follow_redirects=False) as client:\n        try:\n            resp = client.get(url, timeout=10)\n            if resp.status_code in (301, 302, 303, 307, 308):\n                url = resp.headers[\"Location\"]\n                LOG.info(\"Redirected to %s\", url)\n                resp = client.get(url, timeout=120, follow_redirects=True)\n                if resp.status_code in (400, 404):  # Out of time bounds or nd\n                    LOG.info(\"Got %d, no data for %s\", resp.status_code, valid)\n                    return None\n            resp.raise_for_status()\n        except Exception as exp:\n            LOG.info(\"Got exception %s for %s\", exp, url)\n            return None\n    # Check content-type return header\n    ct = resp.headers.get(\"content-type\", \"\")\n    if not ct.startswith(\"application/x-netcdf\"):\n        LOG.warning(\"Unexpected content-type for %s: %s\", url, ct)\n        return None\n    with open(\"imerg.nc\", \"wb\") as tmp:\n        tmp.write(resp.content)\n    with ncopen(\"imerg.nc\") as nc:\n        # x, y\n        pmm = nc.variables[\"precipitation\"][0, :, :] / 2.0  # mmhr to 30min\n        pmm = np.flipud(pmm)\n    return pmm\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), help=\"UTC Valid Time\")\n@click.option(\"--realtime\", is_flag=True, default=False)\ndef main(valid: datetime, realtime: bool):\n    \"\"\"Go Main Go.\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    routes = \"ac\" if realtime else \"a\"\n    # If we are within 30 days of the valid time\n    if (utc() - valid).total_seconds() < (3_600 * 24 * 30):\n        for source in (\"L\", \"E\"):\n            pmm = get_geotiff(valid, source)\n            if pmm is not None:\n                break\n    else:\n        source = \"F\"\n        pmm = get_netcdf(valid, \"\")\n    if pmm is None:\n        LOG.info(\"No data for %s\", valid)\n        return\n\n    if np.max(pmm) > 102:\n        LOG.warning(\"overflow with max(%s) value > 102\", np.max(pmm))\n    # idx: 0-200 0.25mm  -> 50 mm\n    # idx: 201-253 1mm -> 50-102 mm\n    img = np.where(pmm >= 102, 254, 0)\n    img = np.where(\n        np.logical_and(pmm >= 50, pmm < 102),\n        201 + (pmm - 50) / 1.0,\n        img,\n    )\n    img = np.where(np.logical_and(pmm > 0, pmm < 50), pmm / 0.25, img)\n    img = np.where(pmm < 0, 255, img)\n\n    png = Image.fromarray(img.astype(\"u1\"))\n    png.putpalette(mrms.make_colorramp())\n    png.save(\"imerg.png\")\n\n    metadata = {\n        \"start_valid\": (valid - timedelta(minutes=15)).strftime(ISO8601),\n        \"end_valid\": (valid + timedelta(minutes=15)).strftime(ISO8601),\n        \"units\": \"mm\",\n        \"source\": \"F\" if source == \"\" else source,  # E, L, F\n        \"generated_at\": utc().strftime(ISO8601),\n    }\n    with open(\"imerg.json\", \"w\", encoding=\"utf8\") as fp:\n        json.dump(metadata, fp)\n    cmd = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        f\"plot {routes} {valid:%Y%m%d%H%M} gis/images/4326/imerg/p30m.json \"\n        f\"GIS/imerg/p30m_{valid:%Y%m%d%H%M}.json json\",\n        \"imerg.json\",\n    ]\n    subprocess.call(cmd)\n\n    with open(\"imerg.wld\", \"w\", encoding=\"utf8\") as fp:\n        fp.write(\"0.1\\n0.0\\n0.0\\n-0.1\\n-179.95\\n89.95\")\n    cmd = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        f\"plot {routes} {valid:%Y%m%d%H%M} gis/images/4326/imerg/p30m.wld \"\n        f\"GIS/imerg/p30m_{valid:%Y%m%d%H%M}.wld wld\",\n        \"imerg.wld\",\n    ]\n    subprocess.call(cmd)\n\n    cmd = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        f\"plot {routes} {valid:%Y%m%d%H%M} gis/images/4326/imerg/p30m.png \"\n        f\"GIS/imerg/p30m_{valid:%Y%m%d%H%M}.png png\",\n        \"imerg.png\",\n    ]\n    subprocess.call(cmd)\n\n\nif __name__ == \"__main__\":\n    with tempfile.TemporaryDirectory() as _tmpdir:\n        os.chdir(_tmpdir)\n        main()\n"
  },
  {
    "path": "scripts/dl/download_nam.py",
    "content": "\"\"\"Get some soil grids from the NAM.\n\nRun from RUN_40_AFTER.sh for a UTC timestamp 3 hours ago.\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport httpx\nimport pygrib\nfrom pyiem.util import archive_fetch, exponential_backoff, logger\n\nLOG = logger()\n\n\ndef need_to_run(valid: datetime, hr) -> bool:\n    \"\"\"Check to see if we already have the radiation data we need\"\"\"\n    ppath = valid.strftime(\n        f\"%Y/%m/%d/model/nam/%H/nam.t%Hz.conusnest.hiresf0{hr}.tm00.grib2\"\n    )\n    with archive_fetch(ppath) as fn:\n        if fn is None:\n            return True\n        try:\n            with pygrib.open(fn) as grbs:\n                if grbs.messages < 5:\n                    LOG.info(\n                        \"gribfn %s has %s/5 messages\", ppath, grbs.messages\n                    )\n                    return True\n        except Exception as exp:\n            LOG.exception(exp)\n            return True\n    return False\n\n\ndef fetch(valid, hr):\n    \"\"\"Fetch the data for this timestamp\"\"\"\n    uri = valid.strftime(\n        \"https://noaa-nam-pds.s3.amazonaws.com/\"\n        f\"nam.%Y%m%d/nam.t%Hz.conusnest.hiresf0{hr}.tm00.grib2.idx\"\n    )\n    req = exponential_backoff(httpx.get, uri, timeout=30)\n    if req is None or req.status_code != 200:\n        LOG.warning(\"failed to get idx: %s\", uri)\n        return\n\n    offsets = []\n    neednext = False\n    for line in req.content.decode(\"utf-8\").split(\"\\n\"):\n        tokens = line.split(\":\")\n        if len(tokens) < 3:\n            continue\n        if neednext:\n            offsets[-1].append(int(tokens[1]))\n            neednext = False\n        if (\n            tokens[3] in [\"ULWRF\", \"DSWRF\"]\n            and tokens[4] == \"surface\"\n            and tokens[5].find(\"ave fcst\") > 0\n        ):\n            offsets.append([int(tokens[1])])\n            neednext = True\n        # Save soil temp and water at surface, 10cm and 40cm\n        if tokens[3] in [\"TSOIL\", \"SOILW\"] and tokens[4] in [\n            \"0-0.1 m below ground\",\n            \"0.1-0.4 m below ground\",\n            \"0.4-1 m below ground\",\n        ]:\n            offsets.append([int(tokens[1])])\n            neednext = True\n\n    pqstr = valid.strftime(\n        \"data u %Y%m%d%H00 bogus model/nam/\"\n        f\"%H/nam.t%Hz.conusnest.hiresf0{hr}.tm00.grib2 grib2\"\n    )\n\n    if len(offsets) != 8:\n        LOG.info(\"warning, found %s gribs for %s[%s]\", len(offsets), valid, hr)\n    for pr in offsets:\n        headers = {\"Range\": f\"bytes={pr[0]}-{pr[1]}\"}\n        req = exponential_backoff(\n            httpx.get, uri[:-4], headers=headers, timeout=30\n        )\n        if req is None:\n            LOG.info(\"failure for uri: %s\", uri)\n            continue\n        with tempfile.NamedTemporaryFile(delete=False) as tmpfd:\n            tmpfd.write(req.content)\n        subprocess.call([\"pqinsert\", \"-p\", pqstr, tmpfd.name])\n        os.unlink(tmpfd.name)\n\n\n@click.command()\n@click.option(\"--valid\", required=True, type=click.DateTime(), help=\"UTC Time\")\ndef main(valid: datetime):\n    \"\"\"Go Main Go\"\"\"\n    ts = valid.replace(tzinfo=timezone.utc)\n    # script is called every hour, just short circuit the un-needed hours\n    if ts.hour % 6 != 0:\n        LOG.info(\"Aborting as time %s is not modulo 6\", ts)\n        return\n    times = [\n        ts,\n        ts - timedelta(hours=6),\n        ts - timedelta(hours=24),\n    ]\n    for ts in times:\n        for hr in range(6):\n            if not need_to_run(ts, hr):\n                continue\n            LOG.info(\"Running for ts: %s hr: %s\", ts, hr)\n            fetch(ts, hr)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dl/download_narr.py",
    "content": "\"\"\"Fetch me the NARR\n\nAppears that data for the previous month is available by the 9th of current mon\n\ncalled from RUN_2AM.sh\n\"\"\"\n\nimport glob\nimport os\nimport subprocess\nfrom datetime import date, datetime, timedelta\nfrom pathlib import Path\n\nimport click\nimport httpx\nimport pygrib\nfrom pyiem.util import logger\n\nLOG = logger()\nTMP = \"/mesonet/tmp\"\n\n\ndef process(tarfn):\n    \"\"\"Process this tarfn\"\"\"\n    os.chdir(TMP)\n    subprocess.call([\"tar\", \"-xf\", tarfn])\n    for grbfn in glob.glob(\"merged_AWIP32*sfc\"):\n        grbs = pygrib.open(grbfn)\n        # NB: this sfc file has two DSWRF fields, one is a 3 hour average and\n        # the other is a instantaneous forecast, we want the average!\n        radgrb = grbs.select(parameterName=\"204\", stepType=\"avg\")[0]\n        pcpgrb = grbs.select(parameterName=\"61\")[0]\n\n        dt = radgrb[\"dataDate\"]\n        hr = int(radgrb[\"dataTime\"]) / 100.0\n        ts = datetime.strptime(f\"{dt} {hr:.0f}\", \"%Y%m%d %H\")\n        for prefix, grb in zip([\"rad\", \"apcp\"], [radgrb, pcpgrb], strict=True):\n            fn = f\"{prefix}_{ts:%Y%m%d%H%M}.grib\"\n            with open(fn, \"wb\") as fh:\n                fh.write(grb.tostring())\n            pqstr = (\n                f\"data a {ts:%Y%m%d%H%M} bogus \"\n                f\"model/NARR/{prefix}_{ts:%Y%m%d%H%M}.grib grib\"\n            )\n            subprocess.call([\"pqinsert\", \"-p\", pqstr, fn])\n            LOG.info(\"grbfn: %s fn: %s\", grbfn, fn)\n            os.remove(fn)\n        os.remove(grbfn)\n\n\ndef fetch_gdex(year, month):\n    \"\"\"Get data please from GDEX\"\"\"\n    days = [\"0109\", \"1019\"]\n    lastday = (date(year, month, 1) + timedelta(days=35)).replace(\n        day=1\n    ) - timedelta(days=1)\n    days.append(f\"20{lastday.day}\")\n    for day in days:\n        uri = (\n            \"https://data.gdex.ucar.edu/ds608.0/3HRLY/\"\n            f\"{year}/NARRsfc_{year}{month:02.0f}_{day}.tar\"\n        )\n        tmpfn = f\"{TMP}/narr.tar\"\n        with (\n            httpx.stream(\"GET\", uri, timeout=30) as resp,\n            open(tmpfn, \"wb\") as fh,\n        ):\n            if resp.status_code != 200:\n                LOG.warning(\n                    \"Fetching %s returned %s, aborting\", uri, resp.status_code\n                )\n                return\n            for chunk in resp.iter_bytes(chunk_size=1024):\n                if chunk:\n                    fh.write(chunk)\n        process(tmpfn)\n        os.unlink(tmpfn)\n\n    # Now call coop script\n    subprocess.call(\n        [\n            \"python\",\n            Path(__file__).parent.parent / \"climodat\" / \"narr_solarrad.py\",\n            f\"--year={year}\",\n            f\"--month={month}\",\n        ]\n    )\n    subprocess.call(\n        [\n            \"python\",\n            Path(__file__).parent.parent / \"iemre\" / \"merge_narr.py\",\n            f\"--year={year}\",\n            f\"--month={month}\",\n        ]\n    )\n\n\n@click.command()\n@click.option(\"--year\", type=int, required=True)\n@click.option(\"--month\", type=int, required=True)\ndef main(year: int, month: int):\n    \"\"\"Go Main Go\"\"\"\n    fetch_gdex(year, month)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dl/download_ndfd.py",
    "content": "\"\"\"Fetch the NDFD from the NWS server as CONDUIT is down again.\n\nCurrently, the CONDUIT writer does:\n\nTMPK|DWPK|SPED|DRCT|APCP06|P06M|TMXK12|TMNK12|WBGT\n\nRun from RUN_50_AFTER and RUN_10_AFTER\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timedelta, timezone\n\nimport httpx\nimport pygrib\nfrom pyiem.util import archive_fetch, logger\n\nLOG = logger()\nSERVER = (\n    \"https://tgftp.nws.noaa.gov/SL.us008001/ST.opnl/DF.gr2/DC.ndfd/AR.conus\"\n)\n\n\ndef process_grib(grb):\n    \"\"\"Figure out if we need to save this or not.\"\"\"\n    dlname = str(grb)\n    tokens = dlname.strip().split(\":\")\n    fstr = tokens[-2].split()[2].split()[0]\n    LOG.info(\"Processing `%s` fstr: %s\", dlname, fstr)\n    if fstr.find(\"-\") > -1:\n        f1, f2 = fstr.split(\"-\")\n    else:\n        f1 = \"0\"\n        f2 = fstr\n    runtime = datetime.strptime(tokens[-1][-12:], \"%Y%m%d%H%M\").replace(\n        tzinfo=timezone.utc\n    )\n    if runtime.minute != 0:\n        LOG.info(\"Skipping %s as it is not a top of the hour\", dlname)\n        return\n    if f1.endswith(\"m\"):\n        f1 = runtime + timedelta(minutes=int(f1[:-1]))\n    else:\n        f1 = runtime + timedelta(hours=int(f1))\n    if f2.endswith(\"m\"):\n        f2 = runtime + timedelta(minutes=int(f2[:-1]))\n    else:\n        f2 = runtime + timedelta(hours=int(f2))\n    LOG.info(\"Found %s -> %s %s\", str(grb), f1, f2)\n    # compute the archive filename\n    fhour = int((f2 - runtime).total_seconds() / 3600)\n    ppath = (\n        f\"{runtime:%Y/%m/%d}/model/ndfd/{runtime:%H}/ndfd.t{runtime:%H}z.\"\n        f\"awp2p5f{fhour:03.0f}.grib2\"\n    )\n    with archive_fetch(ppath) as fn:\n        if fn is not None:\n            with pygrib.open(fn) as grbs:\n                for grb2 in grbs:\n                    if grb2.parameterName == grb.parameterName:\n                        LOG.info(\n                            \"Skipping %s as we have it in archive already\",\n                            str(grb),\n                        )\n                        return\n    with open(\"sendme.grb\", \"wb\") as fh:\n        fh.write(grb.tostring())\n    pqstr = f\"data u {runtime:%Y%m%d%H%M} bogus {ppath[11:]} grib2\"\n    cmd = [\n        \"pqinsert\",\n        \"-p\",\n        pqstr,\n        \"sendme.grb\",\n    ]\n    LOG.info(\"Running: %s\", \" \".join(cmd))\n    subprocess.call(cmd)\n\n\ndef workflow(url):\n    \"\"\"Fetch the URL, see what we have.\"\"\"\n    try:\n        with httpx.stream(\"GET\", url) as resp, open(\"data.bin\", \"wb\") as fh:\n            fh.writelines(resp.iter_bytes())\n    except Exception as exp:\n        LOG.info(\"download_ndfd failed to fetch %s: %s\", url, exp)\n        return\n    with pygrib.open(\"data.bin\") as grbs:\n        for grb in grbs:\n            process_grib(grb)\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    with tempfile.TemporaryDirectory() as tmpdir:\n        os.chdir(tmpdir)\n        for period in [\"001-003\", \"004-007\"]:\n            for vname in \"maxt mint wbgt temp td wdir qpf wspd\".split():\n                if vname == \"qpf\" and period == \"004-007\":\n                    continue\n                url = f\"{SERVER}/VP.{period}/ds.{vname}.bin\"\n                workflow(url)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dl/download_rtma_ru.py",
    "content": "\"\"\"\nDownload RTMA Rapid Updates grids\n\nRun from RUN_50_AFTER.sh for previous hour\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport httpx\nimport pygrib\nfrom pyiem.util import archive_fetch, exponential_backoff, logger, utc\n\nLOG = logger()\nARCHIVE_THRES = utc() - timedelta(days=3)\n\n\ndef fetch_aws(dt: datetime):\n    \"\"\"Get the data via AWS PDS.\"\"\"\n    ppath = (\n        f\"{dt:%Y/%m/%d}/model/rtma/{dt:%H}/\"\n        f\"rtma2p5_ru.t{dt:%H%M}z.2dvaranl_ndfd.grb2\"\n    )\n    with archive_fetch(ppath) as fn:\n        if fn is not None:\n            LOG.info(\"Skipping as we have data %s\", ppath)\n            return\n\n    b = \"_\" if dt > utc(2021, 9, 10) else \"-\"\n    url = (\n        f\"https://s3.amazonaws.com/noaa-rtma-pds/rtma2p5{b}ru.{dt:%Y%m%d}/\"\n        f\"rtma2p5_ru.t{dt:%H%M}z.2dvarges_ndfd.grb2\"\n    )\n    req = exponential_backoff(httpx.get, url, timeout=30)\n    if req is None or req.status_code != 200:\n        LOG.info(\"failed to get idx: %s\", url)\n        return\n    with tempfile.NamedTemporaryFile(\"wb\", delete=False) as tmpfp:\n        tmpfp.write(req.content)\n    grbs = pygrib.open(tmpfp.name)\n    with tempfile.NamedTemporaryFile(\"wb\", delete=False) as tmpfp2:\n        tmpfp2.write(grbs.select(name=\"2 metre temperature\")[0].tostring())\n        grbs.seek(0)\n        tmpfp2.write(\n            grbs.select(name=\"2 metre dewpoint temperature\")[0].tostring()\n        )\n    cmd = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        (\n            f\"data a {dt:%Y%m%d%H%M} bogus model/rtma/\"\n            f\"{dt:%H}/{ppath.split('/')[-1]} grib2\"\n        ),\n        tmpfp2.name,\n    ]\n    LOG.info(\" \".join(cmd))\n    subprocess.call(cmd)\n\n    os.unlink(tmpfp.name)\n    os.unlink(tmpfp2.name)\n\n\ndef fetch(dt):\n    \"\"\"Fetch the data for this timestamp\"\"\"\n    ppath = (\n        f\"{dt:%Y/%m/%d}/model/rtma/{dt:%H}/\"\n        f\"rtma2p5_ru.t{dt:%H%M}z.2dvaranl_ndfd.grb2\"\n    )\n    with archive_fetch(ppath) as fn:\n        if fn is not None:\n            LOG.info(\"Skipping as we have data %s\", ppath)\n            return\n    uri = (\n        \"https://nomads.ncep.noaa.gov/pub/data/nccf/com/rtma/prod/\"\n        f\"rtma2p5_ru.{dt:%Y%m%d}/rtma2p5_ru.t{dt:%H%M}z.2dvaranl_ndfd.grb2.idx\"\n    )\n    req = exponential_backoff(httpx.get, uri, timeout=30)\n    if req is None or req.status_code != 200:\n        LOG.info(\"failed to get idx: %s\", uri)\n        return\n\n    offsets = []\n    neednext = False\n    for line in req.content.decode(\"utf-8\").split(\"\\n\"):\n        tokens = line.split(\":\")\n        if len(tokens) < 3:\n            continue\n        if neednext:\n            offsets[-1].append(int(tokens[1]))\n            neednext = False\n        # Precip and high/low temp\n        if tokens[3] in [\"TMP\", \"DPT\"]:\n            offsets.append([int(tokens[1])])\n            neednext = True\n\n    if len(offsets) != 2:\n        LOG.info(\"Failed to find required gribs\")\n        return\n\n    with tempfile.NamedTemporaryFile(mode=\"wb\", delete=False) as tmpfp:\n        for pr in offsets:\n            headers = {\"Range\": f\"bytes={pr[0]}-{pr[1]}\"}\n            req = exponential_backoff(\n                httpx.get, uri[:-4], headers=headers, timeout=30\n            )\n            if req is None:\n                LOG.warning(\"failure for uri: %s\", uri)\n                continue\n            tmpfp.write(req.content)\n    cmd = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        (\n            f\"data a {dt:%Y%m%d%H%M} bogus model/rtma/\"\n            f\"{dt:%H}/{ppath.split('/')[-1]} grib2\"\n        ),\n        tmpfp.name,\n    ]\n    LOG.info(\" \".join(cmd))\n    subprocess.call(cmd)\n    os.unlink(tmpfp.name)\n\n\n@click.command()\n@click.option(\"--valid\", required=True, type=click.DateTime(), help=\"UTC\")\ndef main(valid: datetime):\n    \"\"\"Go Main Go\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n\n    # Backfilling mode\n    for hroffset in [0, 6, 12, 24]:\n        for minute in [0, 15, 30, 45]:\n            ts = (valid - timedelta(hours=hroffset)).replace(minute=minute)\n            (fetch if ts > ARCHIVE_THRES else fetch_aws)(ts)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dl/fetch_merra.py",
    "content": "\"\"\"\nMonthly download of the MERRA data, website suggests that the previous\nmonth is available around the 2-3 week of the next month, so this is run\nfrom RUN_MIDNIGHT.sh, but only on the 28th of each month\n\nMERRA2 Variables we want to process\n-----------------------------------\nhttp://goldsmr4.sci.gsfc.nasa.gov/data/MERRA2_MONTHLY/M2TMNXLND.5.12.4/doc/\nMERRA2.README.pdf\n\n(M2T1NXRAD)\nSWGDNCLR    surface incoming shortwave flux assuming clear sky\nSWTDN       toa incoming shortwave flux\nSWGDN       surface incoming shortwave flux\nSWGDNCLR    surface incoming shortwave flux assuming clear sky\n\n\"\"\"\n\nimport os\nimport subprocess\nfrom datetime import datetime, timedelta\n\nimport click\nimport netCDF4\nfrom pyiem.util import get_properties, logger\n\nLOG = logger()\nPROPS = get_properties()\n\n\ndef trans(now):\n    \"\"\"Get the reprocessing level.  Check MERRA docs for changelog.\"\"\"\n    if now.year < 1992:\n        return \"100\"\n    if now.year < 2001:\n        return \"200\"\n    if now.year < 2011:\n        return \"300\"\n    return \"400\"\n\n\ndef do_month(sts):\n    \"\"\"Run for a given month\"\"\"\n\n    ets = sts + timedelta(days=35)\n    ets = ets.replace(day=1)\n\n    interval = timedelta(days=1)\n    now = sts\n    while now < ets:\n        # We only fetch the northern hemisphere, for better or worse\n        uri = now.strftime(\n            \"http://goldsmr4.gesdisc.eosdis.nasa.gov/daac-bin/OTF/\"\n            \"HTTP_services.cgi?FILENAME=/data/s4pa/MERRA2\"\n            f\"/M2T1NXRAD.5.12.4/%Y/%m/MERRA2_{trans(now)}.tavg1_2d_rad_\"\n            \"Nx.%Y%m%d.nc4&FORMAT=bmM0Lw&\"\n            \"BBOX=0,-180,90,180&\"\n            f\"LABEL=MERRA2_{trans(now)}.tavg1_2d_rad_Nx.%Y%m%d.SUB.nc\"\n            \"&FLAGS=&SHORTNAME=M2T1NXRAD&SERVICE=L34RS_MERRA2&\"\n            \"LAYERS=&VERSION=1.02&VARIABLES=swgdn,swgdnclr,swtdn\"\n        )\n        dirname = now.strftime(\"/mesonet/data/merra2/%Y\")\n        if not os.path.isdir(dirname):\n            os.makedirs(dirname)\n        localfn = now.strftime(\"/mesonet/data/merra2/%Y/%Y%m%d.nc\")\n        cmd = [\n            \"curl\",\n            \"-n\",\n            \"-c\",\n            \"~/.urscookies\",\n            \"-b\",\n            \"~/.urscookies\",\n            \"-L\",\n            \"--url\",\n            uri,\n            \"-o\",\n            localfn,\n        ]\n        LOG.info(\" \".join(cmd))\n        with subprocess.Popen(\n            cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE\n        ) as proc:\n            proc.stderr.read()\n        # Check that the netcdf file is valid\n        try:\n            nc = netCDF4.Dataset(localfn)\n            nc.close()\n        except Exception:\n            LOG.warning(\"ncopen %s failed, deleting.\", localfn)\n            os.unlink(localfn)\n        now += interval\n\n\n@click.command()\n@click.option(\"--year\", type=int, help=\"Year to process\")\n@click.option(\"--month\", type=int, help=\"Month to process\")\ndef main(year: int | None, month: int | None):\n    \"\"\"Run for last month month\"\"\"\n    now = datetime.now()\n    if year and month:\n        now = datetime(year, month, 1)\n    else:\n        now = now - timedelta(days=35)\n        now = now.replace(day=1)\n    do_month(now)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dl/fetch_power.py",
    "content": "\"\"\"Fetch the NASA POWER Dataset.\n\nFor now, we just run each Monday for the current year RUN_2AM.sh\n\"\"\"\n\nimport subprocess\nimport sys\nimport time\nfrom datetime import date, datetime, timedelta\n\nimport click\nimport httpx\nimport numpy as np\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import get_grids, set_grids\nfrom pyiem.util import exponential_backoff, logger, ncopen\nfrom tqdm import tqdm\n\nLOG = logger()\n\n\n@click.command()\n@click.option(\"--year\", type=int, help=\"Year to Process\")\n@click.option(\"--date\", \"dt\", type=click.DateTime(), help=\"Date to fetch\")\n@click.option(\"--domain\", default=\"conus\", type=str, help=\"IEMRE Domain\")\n@click.option(\"--force\", is_flag=True, help=\"Force a re-download of data\")\ndef main(year: int | None, dt: datetime | None, domain: str, force: bool):\n    \"\"\"Go Main Go.\"\"\"\n    gridnav = get_nav(\"iemre\", domain)\n    if dt is not None:\n        sts = dt.date()\n        ets = sts\n    else:\n        sts = date(year, 1, 1)\n        ets = min([date(year, 12, 31), date.today()])\n    current = {}\n    now = ets\n    while now >= sts:\n        ds = get_grids(now, varnames=\"power_swdn\", domain=domain)\n        maxval = ds[\"power_swdn\"].values.max()\n        if force or np.isnan(maxval) or maxval < 0:\n            LOG.info(\"adding %s as currently empty or forced: %s\", now, force)\n            current[now] = {\"data\": ds, \"dirty\": False}\n        now -= timedelta(days=1)\n    if not current:\n        LOG.info(\"Nothing to be done...\")\n        return\n    sts = min(list(current.keys()))\n    ets = max(list(current.keys()))\n    LOG.info(\"running between %s and %s\", sts, ets)\n\n    queue = []\n    # 10x10 degree chunk is the max request size...\n    for x0 in np.arange(gridnav.left, gridnav.right, 10.0):\n        for y0 in np.arange(gridnav.bottom, gridnav.top, 10.0):\n            queue.append([x0, y0])  # noqa\n    prev_meanval = None\n    for x0, y0 in tqdm(queue, disable=not sys.stdout.isatty()):\n        url = (\n            \"https://power.larc.nasa.gov/api/temporal/daily/regional?\"\n            f\"latitude-min={y0}&latitude-max={y0 + 9.9}&\"\n            f\"longitude-min={x0}&\"\n            f\"longitude-max={x0 + 9.9}&parameters=ALLSKY_SFC_SW_DWN&\"\n            f\"community=SB&start={sts:%Y%m%d}&end={ets:%Y%m%d}&format=netcdf\"\n        )\n        resp = exponential_backoff(httpx.get, url, timeout=60)\n        # Can't find docs on how many requests/sec are allowed...\n        if resp is not None and resp.status_code == 429:\n            LOG.info(\"Got 429 (too-many-requests), sleeping 60\")\n            time.sleep(60)\n            resp = exponential_backoff(httpx.get, url, timeout=60)\n        if resp is None or resp.status_code != 200:\n            LOG.warning(\n                \"failed to download %s with %s %s\",\n                url,\n                \"resp is none\" if resp is None else resp.status_code,\n                \"resp is none\" if resp is None else resp.text,\n            )\n            continue\n        ncfn = f\"/tmp/power{year}_{domain}.nc\"\n        with open(ncfn, \"wb\") as fh:\n            for chunk in resp.iter_bytes(chunk_size=1024):\n                if chunk:\n                    fh.write(chunk)\n        with ncopen(ncfn) as nc:\n            for day, _ in enumerate(nc.variables[\"time\"][:]):\n                dt = sts + timedelta(days=day)\n                if dt not in current:\n                    continue\n                # W/m2 to MJ/d 86400 / 1e6\n                data = nc.variables[\"ALLSKY_SFC_SW_DWN\"][day] * 0.0864\n                # Sometimes there are missing values?\n                if np.ma.is_masked(data):\n                    if data.mask.all():\n                        LOG.info(\n                            \"All values masked for %s at %s, assigning %s\",\n                            dt,\n                            (x0, y0),\n                            prev_meanval,\n                        )\n                        if prev_meanval is None:\n                            continue\n                        data = data.filled(prev_meanval)\n                    else:\n                        meanval = np.mean(data)\n                        LOG.info(\n                            \"Replacing masked values with mean %.2f for %s %s\",\n                            meanval,\n                            dt,\n                            (x0, y0),\n                        )\n                        data = data.filled(meanval)\n                prev_meanval = np.mean(data)\n                i, j = gridnav.find_ij(x0, y0)\n                # NASA Power is 1 degree for Solar, so repeat 8x\n                data = np.repeat(np.repeat(data, 8, axis=0), 8, axis=1)\n                data = np.where(data < 0, np.nan, data)\n                shp = np.shape(data)\n                jslice = slice(j, min([j + shp[0], gridnav.ny]))\n                islice = slice(i, min([i + shp[1], gridnav.nx]))\n                # align grids\n                data = data[\n                    slice(0, jslice.stop - jslice.start),\n                    slice(0, islice.stop - islice.start),\n                ]\n                # get currentdata\n                present = current[dt][\"data\"][\"power_swdn\"].values[\n                    jslice, islice\n                ]\n                if present.mean() == data.mean():\n                    continue\n                current[dt][\"data\"][\"power_swdn\"].values[jslice, islice] = data\n                current[dt][\"dirty\"] = True\n    for _dt, item in current.items():\n        if not item[\"dirty\"]:\n            continue\n        LOG.info(\"saving %s\", _dt)\n        set_grids(_dt, item[\"data\"], domain=domain)\n        subprocess.call(\n            [\n                \"python\",\n                \"../iemre/db_to_netcdf.py\",\n                f\"--date={_dt:%Y-%m-%d}\",\n                f\"--domain={domain}\",\n                \"--varname=power_swdn\",\n            ]\n        )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dl/ncep_stage4.py",
    "content": "\"\"\"\n Script to download the NCEP stage4 data and then inject into LDM for\n sweet archival action\n\nrun from RUN_STAGE4.sh\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nimport time\nfrom datetime import datetime, timedelta\n\nimport httpx\nfrom pyiem.util import logger, utc\n\nLOG = logger()\n\n\ndef download(now: datetime, offset: int):\n    \"\"\"\n    Download a given timestamp from NCEP and inject into LDM\n    Example:  pub/data/nccf/com/hourly/prod/\n              nam_pcpn_anal.20090916/ST4.2009091618.01h.gz\n    \"\"\"\n    hours = [1]\n    if now.hour % 6 == 0 and offset > 24:\n        hours.append(6)\n    if now.hour == 12:\n        hours.append(24)\n    for hr in hours:\n        upath = (\n            \"/data/nccf/com/pcpanl/\"\n            f\"prod/pcpanl.{now:%Y%m%d}/st4_conus.{now:%Y%m%d%H}.\"\n            f\"{hr:02.0f}h.grb2\"\n        )\n        response = None\n        for _ in range(3):\n            try:\n                url = f\"https://nomads.ncep.noaa.gov/pub{upath}\"\n                LOG.info(\"fetching %s\", url)\n                response = httpx.get(url, timeout=60)\n                response.raise_for_status()\n                break\n            except httpx.HTTPError as exp:\n                lvl = LOG.info if offset < 24 else LOG.warning\n                lvl(\"dl %s failed: %s\", url, exp)\n                if offset == 0:\n                    # Wait a bit and try again\n                    lvl(\"waiting 120 seconds and trying again\")\n                    time.sleep(120)\n        if response is None or response.status_code != 200:\n            LOG.warning(\"Full fail for %s\", url)\n            continue\n        # Same temp file\n        with open(\"tmp.grib\", \"wb\") as fh:\n            fh.write(response.content)\n        # Inject into LDM\n        cmd = [\n            \"pqinsert\",\n            \"-p\",\n            (\n                f\"data a {now:%Y%m%d%H%M} blah stage4/ST4.{now:%Y%m%d%H}.\"\n                f\"{hr:02.0f}h.grib grib\"\n            ),\n            \"tmp.grib\",\n        ]\n        LOG.info(\" \".join(cmd))\n        subprocess.call(cmd)\n\n\ndef main():\n    \"\"\"Do something\"\"\"\n    # We want this hour UTC\n    utcnow = utc().replace(minute=0, second=0, microsecond=0)\n    # Website review seems to show updates ~8 days later :/\n    for offset in [0, 240, 8 * 24, 9, 3]:\n        with tempfile.TemporaryDirectory() as tempdir:\n            os.chdir(tempdir)\n            download(utcnow - timedelta(hours=offset), offset)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/dl/radar_composite.py",
    "content": "\"\"\"Write NEXRAD composite sector views to archive.\n\nrun from RUN_5MIN.sh\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport httpx\nfrom pyiem.database import get_dbconnc\nfrom pyiem.util import archive_fetch, exponential_backoff, logger, utc\n\nLOG = logger()\nN0QBASE = utc(2010, 11, 14)\nIEM = \"http://mesonet.agron.iastate.edu\"\n\n\ndef save(sectorName, file_name, dir_name, ts, routes, bbox=None):\n    \"\"\"Get an image and write it back to LDM for archiving\"\"\"\n    tstamp = ts.strftime(\"%Y%m%d%H%M\")\n    nexrad = \"nexrad\" if ts < N0QBASE else \"n0q\"\n    layers = (\n        f\"layers[]={nexrad}&layers[]=watch_by_county&layers[]=sbw&\"\n        \"layers[]=uscounties\"\n    )\n    if sectorName == \"conus\":\n        layers = f\"layers[]={nexrad}&layers[]=watch_by_county\"\n    uri = f\"{IEM}/GIS/radmap.php?sector={sectorName}&ts={tstamp}&{layers}\"\n    if bbox is not None:\n        uri = f\"{IEM}/GIS/radmap.php?bbox={bbox}&ts={tstamp}&{layers}\"\n    req = exponential_backoff(httpx.get, uri, timeout=60)\n    if req is None or req.status_code != 200:\n        LOG.warning(\"%s failure\", uri)\n        return\n\n    with tempfile.NamedTemporaryFile(delete=False) as tmpfd:\n        tmpfd.write(req.content)\n\n    extra = [] if ts.year == utc().year else [\"-i\"]\n    cmd = [\n        \"pqinsert\",\n        *extra,  # avoid duplicated sectors causing md5 collisions\n        \"-p\",\n        f\"plot {routes} {tstamp} {file_name} \"\n        f\"{dir_name}/n0r_{tstamp[:8]}_{tstamp[8:]}.png png\",\n        tmpfd.name,\n    ]\n    subprocess.call(cmd)\n    os.unlink(tmpfd.name)\n\n\ndef runtime(ts: datetime, routes: str):\n    \"\"\"Actually run for a time\"\"\"\n    pgconn, pcursor = get_dbconnc(\"postgis\")\n\n    save(\"conus\", \"uscomp.png\", \"usrad\", ts, routes)\n    save(\"iem\", \"mwcomp.png\", \"comprad\", ts, routes)\n    for i in [\"lot\", \"ict\", \"sd\", \"hun\"]:\n        save(i, f\"{i}comp.png\", f\"{i}rad\", ts, routes)\n\n    # SEL starts in about 2007\n    if ts.year < 2007:\n        return\n\n    # Now, we query for watches.\n    pcursor.execute(\n        \"\"\"\n        with data as (\n            select sel, rank() OVER (PARTITION by sel ORDER by issued DESC),\n            ST_xmax(geom), ST_xmin(geom), ST_ymax(geom), ST_ymin(geom)\n            from watches where issued <= %s and sel is not null)\n        select sel as ss, st_xmax, st_xmin, st_ymax, st_ymin from data\n        where rank = 1\n        \"\"\",\n        (ts,),\n    )\n    for row in pcursor:\n        xmin = float(row[\"st_xmin\"]) - 0.75\n        ymin = float(row[\"st_ymin\"]) - 0.75\n        xmax = float(row[\"st_xmax\"]) + 0.75\n        ymax = float(row[\"st_ymax\"]) + 1.5\n        bbox = f\"{xmin},{ymin},{xmax},{ymax}\"\n        sel = row[\"ss\"].lower()\n        save(\"custom\", f\"{sel}comp.png\", f\"{sel}rad\", ts, routes, bbox)\n    pgconn.close()\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), required=True)\ndef main(valid: datetime):\n    \"\"\"Go Main Go\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    LOG.info(\"Running for %s\", valid)\n    # If we are near real-time, also check various archive points\n    if (utc() - valid).total_seconds() > 1000:\n        runtime(valid, \"a\")\n        return\n    runtime(valid, \"ac\")\n    for hroff in [1, 3, 7, 12, 24]:\n        valid = valid - timedelta(hours=hroff)\n        ppath = (\n            f\"{valid:%Y}/{valid:%m}/{valid:%d}/\"\n            f\"comprad/n0r_{valid:%Y%m%d}_{valid:%H%M}.png\"\n        )\n        with archive_fetch(ppath) as fh:\n            if fh is None:\n                LOG.warning(\"Missing %s\", ppath)\n                runtime(valid, \"a\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/era5/fetch_era5.py",
    "content": "\"\"\"Download an hour worth of ERA5.\n\nRun from RUN_0Z_ERA5LAND.sh for 5 days ago.\n\"\"\"\n\nimport os\nimport subprocess\nimport sys\nimport tempfile\nimport warnings\nfrom datetime import datetime, timedelta\n\nimport cdsapi\nimport click\nimport httpx\nimport numpy as np\nfrom netCDF4 import Dataset\nfrom pyiem.iemre import DOMAINS, hourly_offset\nfrom pyiem.util import logger, ncopen, utc\n\nLOG = logger()\nCDSVARS = (\n    \"10m_u_component_of_wind 10m_v_component_of_wind 2m_dewpoint_temperature \"\n    \"2m_temperature soil_temperature_level_1 soil_temperature_level_2 \"\n    \"soil_temperature_level_3 soil_temperature_level_4 \"\n    \"surface_solar_radiation_downwards total_evaporation total_precipitation \"\n    \"volumetric_soil_water_layer_1 volumetric_soil_water_layer_2 \"\n    \"volumetric_soil_water_layer_3 volumetric_soil_water_layer_4\"\n).split()\nVERBATIM = {\n    \"u10\": \"uwnd\",\n    \"v10\": \"vwnd\",\n    \"d2m\": \"dwpk\",\n    \"t2m\": \"tmpk\",\n}\n# unavoidable\nwarnings.simplefilter(\"ignore\", RuntimeWarning)\n\n\ndef ingest(ncin: Dataset, nc: Dataset, valid: datetime, domain: str):\n    \"\"\"Consume this grib file.\"\"\"\n    # The grid delta and grid points are hopefully the same, we just need to\n    # figure out where they are.\n    # ncin is also top/down sigh.  90 to -90 , 0 to 359.9\n    lon = nc.variables[\"lon\"][0]\n    if lon < 0:\n        lon += 360.0  # convert to match in\n    lat = nc.variables[\"lat\"][0]\n    delta = 0.1\n    # Find the grid points\n    ll_j = int((90 - lat) / delta)\n    ul_j = ll_j - nc.dimensions[\"lat\"].size\n    jslice = slice(ul_j, ll_j)\n    ll_i = int(lon / delta)\n    ur_i = ll_i + nc.dimensions[\"lon\"].size\n    islice = slice(ll_i, ur_i)\n\n    # Of course, our Europe domain crosses the 0/360 boundary, so we have\n    # pain here\n    islices = [islice]\n    islices_out = [slice(None, None)]\n    if domain == \"europe\":\n        # NCIN starts at 0 and ends at 359.9\n        lon2 = nc.variables[\"lon\"][-1]\n        # plus 2 since we include zero and the end cell\n        islices = [slice(ll_i, 3599), slice(0, int(lon2 / delta) + 1)]\n        i0 = islices[0].stop - islices[0].start\n        islices_out = [slice(0, i0), slice(i0 + 1, None)]\n\n    tidx = hourly_offset(valid)\n    dd = \"\" if domain == \"conus\" else f\"_{domain}\"\n\n    LOG.info(\n        \"domain: %s islices[%s]: %s jslice[%s]: %s tidx: %s\",\n        domain,\n        lon,\n        islices,\n        lat,\n        jslice,\n        tidx,\n    )\n\n    for islice_in, islice_out in zip(islices, islices_out, strict=False):\n        for ekey, key in VERBATIM.items():\n            nc.variables[key][tidx, :, islice_out] = np.flipud(\n                ncin.variables[ekey][0, jslice, islice_in]\n            )\n\n        nc.variables[\"soilt\"][tidx, 0, :, islice_out] = np.flipud(\n            ncin.variables[\"stl1\"][0, jslice, islice_in]\n        )\n        nc.variables[\"soilt\"][tidx, 1, :, islice_out] = np.flipud(\n            ncin.variables[\"stl2\"][0, jslice, islice_in]\n        )\n        nc.variables[\"soilt\"][tidx, 2, :, islice_out] = np.flipud(\n            ncin.variables[\"stl3\"][0, jslice, islice_in]\n        )\n        nc.variables[\"soilt\"][tidx, 3, :, islice_out] = np.flipud(\n            ncin.variables[\"stl4\"][0, jslice, islice_in]\n        )\n\n        nc.variables[\"soilm\"][tidx, 0, :, islice_out] = np.flipud(\n            ncin.variables[\"swvl1\"][0, jslice, islice_in]\n        )\n        nc.variables[\"soilm\"][tidx, 1, :, islice_out] = np.flipud(\n            ncin.variables[\"swvl2\"][0, jslice, islice_in]\n        )\n        nc.variables[\"soilm\"][tidx, 2, :, islice_out] = np.flipud(\n            ncin.variables[\"swvl3\"][0, jslice, islice_in]\n        )\n        nc.variables[\"soilm\"][tidx, 3, :, islice_out] = np.flipud(\n            ncin.variables[\"swvl4\"][0, jslice, islice_in]\n        )\n\n        # -- these vars are accumulated since 0z, so 0z is the 24hr sum\n        rsds = nc.variables[\"rsds\"]\n        p01m = nc.variables[\"p01m\"]\n        evap = nc.variables[\"evap\"]\n        if valid.hour == 0:\n            tidx0 = hourly_offset(valid - timedelta(hours=24))\n            # Special 1 Jan consideration\n            if valid.month == 1 and valid.day == 1 and valid.year > 1950:\n                LOG.warning(\"Running jan1 special tidx0: %s\", tidx0)\n                with ncopen(\n                    f\"/mesonet/data/era5{dd}/\"\n                    f\"{valid.year - 1}_era5land_hourly.nc\"\n                ) as nc2:\n                    tsolar = (\n                        np.sum(\n                            nc2.variables[\"rsds\"][\n                                (tidx0 + 1) :, :, islice_out\n                            ],\n                            0,\n                        )\n                        * 3600.0\n                    )\n                    tp01m = np.sum(\n                        nc2.variables[\"p01m\"][(tidx0 + 1) :, :, islice_out], 0\n                    )\n                    tevap = np.sum(\n                        nc2.variables[\"evap\"][(tidx0 + 1) :, :, islice_out], 0\n                    )\n            else:\n                tsolar = (\n                    np.sum(rsds[(tidx0 + 1) : tidx, :, islice_out], 0) * 3600.0\n                )\n                tp01m = np.sum(p01m[(tidx0 + 1) : tidx, :, islice_out], 0)\n                tevap = np.sum(evap[(tidx0 + 1) : tidx, :, islice_out], 0)\n        elif valid.hour > 1:\n            tidx0 = hourly_offset(valid.replace(hour=1))\n            tsolar = np.sum(rsds[tidx0:tidx, :, islice_out], 0) * 3600.0\n            tp01m = np.sum(p01m[tidx0:tidx, :, islice_out], 0)\n            tevap = np.sum(evap[tidx0:tidx, :, islice_out], 0)\n        else:\n            tsolar = np.zeros(\n                ncin.variables[\"t2m\"][0, jslice, islice_in].shape\n            )\n            tp01m = np.zeros(ncin.variables[\"t2m\"][0, jslice, islice_in].shape)\n            tevap = np.zeros(ncin.variables[\"t2m\"][0, jslice, islice_in].shape)\n        # J m-2 to W/m2\n        val = np.flipud(ncin.variables[\"ssrd\"][0, jslice, islice_in])\n        newval = (val - tsolar) / 3600.0\n        rsds[tidx, :, islice_out] = np.ma.where(newval < 0, 0, newval)\n        # m to mm\n        val = np.flipud(ncin.variables[\"e\"][0, jslice, islice_in])\n        newval = (val * 1000.0) - tevap\n        evap[tidx, :, islice_out] = np.ma.where(newval < 0, 0, newval)\n        # m to mm\n        val = np.flipud(ncin.variables[\"tp\"][0, jslice, islice_in])\n        newval = (val * 1000.0) - tp01m\n        p01m[tidx, :, islice_out] = np.ma.where(newval < 0, 0, newval)\n\n\ndef fetch(valid: datetime, checkcache: bool):\n    \"\"\"Get the data from the CDS.\"\"\"\n    if checkcache:\n        url = (\n            f\"https://mtarchive.geol.iastate.edu/era5land/{valid:%Y/%m}/\"\n            f\"era5land_{valid:%Y%m%d%H}.nc\"\n        )\n        try:\n            resp = httpx.head(url, follow_redirects=True, timeout=30)\n            resp.raise_for_status()\n            if resp.headers.get(\"Content-Length\", \"0\") != \"0\":\n                LOG.info(\"Using cached %s\", url)\n                resp = httpx.get(url, follow_redirects=True, timeout=30)\n                with open(\"data_0.nc\", \"wb\") as fh:\n                    fh.write(resp.content)\n                return\n        except Exception as exp:\n            LOG.info(\"Failed webfetch %s: %s\", url, exp)\n\n    zipfn = \"data_0.nc.zip\"\n    cds = cdsapi.Client(quiet=True, progress=sys.stdout.isatty())\n    cds.retrieve(\n        \"reanalysis-era5-land\",\n        {\n            \"variable\": CDSVARS,\n            \"year\": f\"{valid.year}\",\n            \"month\": f\"{valid:%m}\",\n            \"day\": [f\"{valid:%d}\"],\n            \"time\": [f\"{valid:%H}:00\"],\n            \"data_format\": \"netcdf\",\n            \"download_format\": \"zip\",\n        },\n        zipfn,\n    )\n    # unzip\n    subprocess.call([\"unzip\", \"-q\", zipfn])\n    os.unlink(zipfn)\n\n\ndef archive(fn: str, valid: datetime):\n    \"\"\"Copy file to the long term archive.\"\"\"\n    remotepath = f\"/mnt/era5land/{valid:%Y/%m}\"\n    cmd = [\n        \"/usr/bin/rsync\",\n        \"--rsync-path\",\n        f\"mkdir -p {remotepath} && rsync\",\n        \"-a\",\n        fn,\n        f\"mesonet@metvm5-dc:{remotepath}/era5land_{valid:%Y%m%d%H}.nc\",\n    ]\n    LOG.info(\"command `%s`\", \" \".join(cmd))\n    if subprocess.call(cmd) != 0:\n        LOG.error(\"Failed to copy %s to remote\", fn)\n\n\ndef run(valid: datetime, justdomain: str | None, checkcache: bool):\n    \"\"\"Run for the given valid time.\"\"\"\n    fetch(valid, checkcache)\n    for domain in DOMAINS if justdomain is None else [justdomain]:\n        dd = \"\" if domain == \"conus\" else f\"_{domain}\"\n        ncoutfn = f\"/mesonet/data/era5{dd}/{valid.year}_era5land_hourly.nc\"\n        LOG.info(\"Running for %s[domain=%s] %s\", valid, domain, ncoutfn)\n        with ncopen(\"data_0.nc\") as ncin, ncopen(ncoutfn, \"a\") as nc:\n            ingest(ncin, nc, valid, domain)\n    archive(\"data_0.nc\", valid)\n    os.unlink(\"data_0.nc\")\n\n\n@click.command()\n@click.option(\"--date\", \"valid\", required=True, type=click.DateTime())\n@click.option(\"--domain\")\n@click.option(\"--checkcache\", is_flag=True, default=False)\ndef main(valid: datetime, domain: str | None, checkcache: bool):\n    \"\"\"Go!\"\"\"\n    valid = utc(valid.year, valid.month, valid.day)\n    with tempfile.TemporaryDirectory() as tmpdir:\n        os.chdir(tmpdir)\n        for offset in range(1, 25):\n            run(valid + timedelta(hours=offset), domain, checkcache)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/era5/init_hourly.py",
    "content": "\"\"\"Generate the ERA5 hourly analysis file for a year\"\"\"\n\nimport os\nfrom datetime import datetime\n\nimport click\nimport numpy as np\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\n\n\ndef init_year(ts: datetime, domain: str):\n    \"\"\"\n    Create a new NetCDF file for a year of our specification!\n    \"\"\"\n    gridnav = get_nav(\"era5land\", domain)\n    dd = \"\" if domain == \"conus\" else f\"_{domain}\"\n    ncfn = f\"/mesonet/data/era5{dd}/{ts.year}_era5land_hourly.nc\"\n    if os.path.isfile(ncfn):\n        LOG.info(\"Cowardly refusing to overwrite: %s\", ncfn)\n        return\n    nc = ncopen(ncfn, \"w\")\n    nc.title = f\"ERA5 Hourly Reanalysis {ts.year}\"\n    nc.platform = \"Grided Observations\"\n    nc.description = \"ERA5 hourly analysis\"\n    nc.institution = \"Iowa State University, Ames, IA, USA\"\n    nc.source = \"Iowa Environmental Mesonet\"\n    nc.project_id = \"IEM\"\n    nc.realization = 1\n    nc.Conventions = \"CF-1.0\"\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = f\"{datetime.now():%d %B %Y} Generated\"\n    nc.comment = \"No Comment at this time\"\n\n    nc.createDimension(\"lat\", gridnav.ny)\n    nc.createDimension(\"lon\", gridnav.nx)\n    nc.createDimension(\"nv\", 2)\n    ts2 = datetime(ts.year + 1, 1, 1)\n    days = (ts2 - ts).days\n    LOG.info(\"Year %s has %s days\", ts.year, days)\n    nc.createDimension(\"time\", int(days) * 24)\n    nc.createDimension(\"soil_level\", 4)\n\n    ncv = nc.createVariable(\"soil_level\", float, (\"soil_level\",))\n    ncv.units = \"m\"\n    # midpoints\n    ncv[:] = [0.03, 0.14, 0.64, 1.94]\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"lat\",))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.axis = \"Y\"\n    lat.bounds = \"lat_bnds\"\n    lat[:] = gridnav.y_points\n\n    lat_bnds = nc.createVariable(\"lat_bnds\", float, (\"lat\", \"nv\"))\n    lat_bnds[:, 0] = gridnav.y_edges[:-1]\n    lat_bnds[:, 1] = gridnav.y_edges[1:]\n\n    lon = nc.createVariable(\"lon\", float, (\"lon\",))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.axis = \"X\"\n    lon.bounds = \"lon_bnds\"\n    lon[:] = gridnav.x_points\n\n    lon_bnds = nc.createVariable(\"lon_bnds\", float, (\"lon\", \"nv\"))\n    lon_bnds[:, 0] = gridnav.x_edges[:-1]\n    lon_bnds[:, 1] = gridnav.x_edges[1:]\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = f\"Hours since {ts.year}-01-01 00:00:0.0\"\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm[:] = np.arange(0, int(days) * 24)\n\n    # 0->65535\n    tmpk = nc.createVariable(\n        \"tmpk\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    tmpk.units = \"K\"\n    tmpk.scale_factor = 0.01\n    tmpk.long_name = \"2m Air Temperature\"\n    tmpk.standard_name = \"2m Air Temperature\"\n    tmpk.coordinates = \"lon lat\"\n\n    # 0->65535  0 to 655.35\n    dwpk = nc.createVariable(\n        \"dwpk\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65335\n    )\n    dwpk.units = \"K\"\n    dwpk.scale_factor = 0.01\n    dwpk.long_name = \"2m Air Dew Point Temperature\"\n    dwpk.standard_name = \"2m Air Dew Point Temperature\"\n    dwpk.coordinates = \"lon lat\"\n\n    # NOTE: we need to store negative numbers here, gasp\n    # -32768 to 32767 so -98 to 98 mps\n    uwnd = nc.createVariable(\n        \"uwnd\", np.int16, (\"time\", \"lat\", \"lon\"), fill_value=32767\n    )\n    uwnd.scale_factor = 0.003\n    uwnd.units = \"meters per second\"\n    uwnd.long_name = \"U component of the wind\"\n    uwnd.standard_name = \"U component of the wind\"\n    uwnd.coordinates = \"lon lat\"\n\n    # NOTE: we need to store negative numbers here, gasp\n    # -32768 to 32767 so -98 to 98 mps\n    vwnd = nc.createVariable(\n        \"vwnd\", np.int16, (\"time\", \"lat\", \"lon\"), fill_value=32767\n    )\n    vwnd.scale_factor = 0.003\n    vwnd.units = \"meters per second\"\n    vwnd.long_name = \"V component of the wind\"\n    vwnd.standard_name = \"V component of the wind\"\n    vwnd.coordinates = \"lon lat\"\n\n    # 0->65535  0 to 327.675\n    p01m = nc.createVariable(\n        \"p01m\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    p01m.units = \"mm\"\n    p01m.scale_factor = 0.005\n    p01m.long_name = \"Precipitation\"\n    p01m.standard_name = \"Precipitation\"\n    p01m.coordinates = \"lon lat\"\n    p01m.description = \"Precipitation accumulation for the hour valid time\"\n\n    # NOTE: Condensation is + and Evapration is -\n    # -128 to 127 for -25 to 25\n    ncv = nc.createVariable(\n        \"evap\", np.int8, (\"time\", \"lat\", \"lon\"), fill_value=127\n    )\n    ncv.units = \"mm\"\n    ncv.scale_factor = 0.4\n    ncv.long_name = \"Evaporation\"\n    ncv.standard_name = \"Evaporation\"\n    ncv.coordinates = \"lon lat\"\n    ncv.description = \"Evaporation for the hour valid time\"\n\n    # 0 -> 65535 so 0 to 1966\n    ncv = nc.createVariable(\n        \"rsds\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    ncv.units = \"W m-2\"\n    ncv.scale_factor = 0.03\n    ncv.long_name = \"surface_downwelling_shortwave_flux_in_air\"\n    ncv.standard_name = \"surface_downwelling_shortwave_flux_in_air\"\n    ncv.coordinates = \"lon lat\"\n    ncv.description = \"Global Shortwave Irradiance\"\n\n    # 0->255 [213 333]\n    ncv = nc.createVariable(\n        \"soilt\",\n        np.uint8,\n        (\"time\", \"soil_level\", \"lat\", \"lon\"),\n        fill_value=255,\n    )\n    ncv.units = \"K\"\n    ncv.add_offset = 213.0\n    ncv.scale_factor = 0.5\n    ncv.long_name = \"Soil Temperature\"\n    ncv.standard_name = \"Soil Temperature\"\n    ncv.coordinates = \"lon lat\"\n\n    # 0->255 [0 0.8] Hope this works?\n    ncv = nc.createVariable(\n        \"soilm\",\n        np.uint8,\n        (\"time\", \"soil_level\", \"lat\", \"lon\"),\n        fill_value=255,\n    )\n    ncv.units = \"m^3 m^-3\"\n    ncv.scale_factor = 0.0031\n    ncv.long_name = \"Volumetric Soil Moisture\"\n    ncv.standard_name = \"Volumetric Soil Moisture\"\n    ncv.coordinates = \"lon lat\"\n\n    nc.close()\n\n\n@click.command()\n@click.option(\"--year\", type=int, required=True, help=\"Year to initialize\")\n@click.option(\"--domain\", default=\"conus\", help=\"IEMRE Domain\")\ndef main(year, domain):\n    \"\"\"Go Main Go\"\"\"\n    init_year(datetime(year, 1, 1), domain)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/gfs/gfs2csv.py",
    "content": "\"\"\"Export the current forecast as a CSV for downstream usage.\"\"\"\n\nimport numpy as np\nfrom pyiem.util import ncopen\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    with (\n        ncopen(\"/mesonet/data/iemre/gfs_current.nc\") as nc,\n        open(\"gfs.csv\", \"w\") as fh,\n    ):\n        fh.write(\n            \"latitude,longitude,\"\n            \"day1_soil_moisture_depth_i,\"\n            \"day1_soil_temperature_depth_i,\"\n            \"day1_air_temperature_max,day1_air_temperature_min,\"\n            \"day1_precipitation,\"\n            \"day2_soil_moisture_depth_i,\"\n            \"day2_soil_temperature_depth_i,\"\n            \"day2_air_temperature_max,day2_air_temperature_min,\"\n            \"day2_precipitation,source,depth\\n\"\n            \"\"\n        )\n        sm = nc.variables[\"soil_moisture\"]\n        st = nc.variables[\"tsoil\"]  # K\n        maxt = nc.variables[\"high_tmpk\"]\n        mint = nc.variables[\"low_tmpk\"]\n        precip = nc.variables[\"p01d\"]  # mm\n        for j in range(nc.dimensions[\"lat\"].size):\n            lat = nc.variables[\"lat\"][j]\n            if lat < 32 or lat > 45:\n                continue\n            for i in range(nc.dimensions[\"lon\"].size):\n                lon = nc.variables[\"lon\"][i]\n                if lon < -100 or lon > -80:\n                    continue\n                smval = sm[1, j, i]\n                stval = st[1, j, i]\n                if np.ma.is_masked(smval) or np.ma.is_masked(stval):\n                    continue\n                fh.write(\n                    f\"{lat:.2f},\"\n                    f\"{lon:.2f},\"\n                    f\"{smval:.2f},\"\n                    f\"{(st[1, j, i] - 273.15):.2f},\"\n                    f\"{(maxt[1, j, i] - 273.15):.2f},\"\n                    f\"{(mint[1, j, i] - 273.15):.2f},\"\n                    f\"{(precip[1, j, i] / 10.0):.2f},\"\n                    f\"{sm[2, j, i]:.2f},\"\n                    f\"{(st[2, j, i] - 273.15):.2f},\"\n                    f\"{(maxt[2, j, i] - 273.15):.2f},\"\n                    f\"{(mint[2, j, i] - 273.15):.2f},\"\n                    f\"{(precip[2, j, i] / 10.0):.2f},\"\n                    f\"GFS,0-10cm\\n\"\n                )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/gfs/gfs2iemre.py",
    "content": "\"\"\"Copy GFS grib data to IEMRE grid...\n\nRun from RUN_50_AFTER.sh\n\"\"\"\n\nimport shutil\nimport subprocess\nimport warnings\nfrom datetime import datetime, timedelta, timezone\nfrom pathlib import Path\n\nimport click\nimport numpy as np\nimport pygrib\nfrom affine import Affine\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import DOMAINS as IEMRE_DOMAINS\nfrom pyiem.iemre import reproject2iemre\nfrom pyiem.reference import EPSG, ISO8601\nfrom pyiem.util import logger, ncopen, utc\n\nLOG = logger()\nwarnings.simplefilter(\"ignore\", RuntimeWarning)\n\n\ndef create(ts: datetime, domain: str, dom: dict) -> str:\n    \"\"\"\n    Create a new NetCDF file for a year of our specification!\n    \"\"\"\n    dd = \"\" if domain == \"conus\" else f\"_{domain}\"\n    gridnav = get_nav(\"iemre\", domain)\n    fn = f\"/mesonet/data/iemre{dd}/gfs_current{dd}_new.nc\"\n    if Path(fn).exists():\n        LOG.warning(\"File %s already exists, clobbering\", fn)\n        Path(fn).unlink()\n    with ncopen(fn, \"w\") as nc:\n        nc.title = (\n            f\"GFS on IEMRE Grid for Domain: {domain}. Approximating a date \"\n            f\"for {dom['tzinfo']}.\"\n        )\n        nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n        nc.gfs_forecast = ts.strftime(ISO8601)\n        nc.history = f\"{utc():%Y-%m-%dT%H:%M:%S} UTC Generated\"\n\n        # Setup Dimensions\n        nc.createDimension(\"lat\", dom[\"ny\"])\n        nc.createDimension(\"lon\", dom[\"nx\"])\n        # store 20 days worth, to be safe of future changes\n        nc.createDimension(\"time\", 20)\n        nc.createDimension(\"nv\", 2)\n\n        # Setup Coordinate Variables\n        lat = nc.createVariable(\"lat\", float, (\"lat\"))\n        lat.units = \"degrees_north\"\n        lat.long_name = \"Latitude\"\n        lat.standard_name = \"latitude\"\n        lat.bounds = \"lat_bnds\"\n        lat.axis = \"Y\"\n        lat[:] = gridnav.y_points\n\n        lat_bnds = nc.createVariable(\"lat_bnds\", float, (\"lat\", \"nv\"))\n        lat_bnds[:, 0] = gridnav.y_edges[:-1]\n        lat_bnds[:, 1] = gridnav.y_edges[1:]\n\n        lon = nc.createVariable(\"lon\", float, (\"lon\"))\n        lon.units = \"degrees_east\"\n        lon.long_name = \"Longitude\"\n        lon.standard_name = \"longitude\"\n        lon.bounds = \"lon_bnds\"\n        lon.axis = \"X\"\n        lon[:] = gridnav.x_points\n\n        lon_bnds = nc.createVariable(\"lon_bnds\", float, (\"lon\", \"nv\"))\n        lon_bnds[:, 0] = gridnav.x_edges[:-1]\n        lon_bnds[:, 1] = gridnav.x_edges[1:]\n\n        tm = nc.createVariable(\"time\", float, (\"time\",))\n        tm.units = f\"Days since {ts:%Y-%m-%d} 00:00:0.0\"\n        tm.long_name = \"Time\"\n        tm.standard_name = \"time\"\n        tm.axis = \"T\"\n        tm.calendar = \"gregorian\"\n        # Placeholder\n        tm[:] = np.arange(0, 20)\n\n        high = nc.createVariable(\n            \"high_tmpk\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n        )\n        high.units = \"K\"\n        high.scale_factor = 0.01\n        high.long_name = \"2m Air Temperature 12 Hour High\"\n        high.standard_name = \"2m Air Temperature\"\n        high.coordinates = \"lon lat\"\n\n        low = nc.createVariable(\n            \"low_tmpk\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n        )\n        low.units = \"K\"\n        low.scale_factor = 0.01\n        low.long_name = \"2m Air Temperature 12 Hour Low\"\n        low.standard_name = \"2m Air Temperature\"\n        low.coordinates = \"lon lat\"\n\n        # Soil Temperature\n        ncvar = nc.createVariable(\n            \"tsoil\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n        )\n        ncvar.units = \"K\"\n        ncvar.scale_factor = 0.01\n        ncvar.long_name = \"0-10 cm Average Soil Temperature\"\n        ncvar.standard_name = \"0-10 cm Average Soil Temperature\"\n        ncvar.coordinates = \"lon lat\"\n\n        # Soil Moisture, 255 levels, 0.25 resolution, so 0 to 63.75 mm\n        ncvar = nc.createVariable(\n            \"soil_moisture\", np.uint8, (\"time\", \"lat\", \"lon\"), fill_value=255\n        )\n        ncvar.units = \"mm\"\n        ncvar.scale_factor = 0.25\n        ncvar.long_name = \"0-10 cm Average Soil Moisture\"\n        ncvar.standard_name = \"0-10 cm Average Soil Moisture\"\n        ncvar.coordinates = \"lon lat\"\n\n        ncvar = nc.createVariable(\n            \"p01d\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n        )\n        ncvar.units = \"mm\"\n        ncvar.scale_factor = 0.01\n        ncvar.long_name = \"Precipitation Accumulation\"\n        ncvar.standard_name = \"precipitation_amount\"\n        ncvar.coordinates = \"lon lat\"\n\n        ncvar = nc.createVariable(\n            \"srad\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n        )\n        ncvar.scale_factor = 0.001\n        ncvar.units = \"MJ d-1\"\n        ncvar.long_name = \"Solar Radiation\"\n        ncvar.standard_name = \"surface_downwelling_shortwave_flux_in_air\"\n        ncvar.coordinates = \"lon lat\"\n        ncvar.description = \"from NASA POWER\"\n\n    return fn\n\n\ndef merge_grib(nc, now, domain: str, dom: dict):\n    \"\"\"Merge what grib data we can find into the netcdf file.\"\"\"\n    # Tricky here for how to compute a valid date\n    # iemre US 2024-08-05 -> 2024-08-06  6 UTC\n    # sa      2024-08-05 -> 2024-08-06  6 UTC  Don't have hourly\n    # europe   2024-08-05 -> 2024-08-06  0 UTC\n    # china    2024-08-05 -> 2024-08-05 18 UTC\n    write_hour = {\n        \"conus\": 6,\n        \"sa\": 6,\n        \"europe\": 0,\n        \"china\": 18,\n    }\n\n    tmaxgrid = None\n    tmingrid = None\n    tsoilgrid = None\n    smgrid = None\n    pgrid = None\n    plast = None\n    ptotal = None\n    srad = None\n    hits = 0\n    affine = None\n    for fhour in range(6, 385, 6):\n        fxtime = now + timedelta(hours=fhour)\n        grbfn = now.strftime(\n            f\"/mesonet/tmp/gfs/%Y%m%d%H/gfs.t%Hz.sfluxgrbf{fhour:03.0f}.grib2\"\n        )\n        grbs = pygrib.open(grbfn)\n        for grb in grbs:\n            if affine is None:\n                dx = grb[\"iDirectionIncrementInDegrees\"]\n                # the grib data is top down\n                affine = Affine(\n                    dx,\n                    0.0,\n                    0 - dx / 2.0,\n                    0.0,\n                    -dx,\n                    min(\n                        grb[\"latitudeOfFirstGridPointInDegrees\"] + dx / 2.0,\n                        89.99,\n                    ),\n                )\n            name = grb.shortName.lower()\n            # Chris Farley no-idea, otherwise get no-data stripe at 0° Lon\n            if dom == \"europe\":\n                values = grb.values\n            else:\n                values = grb.values[:-1, :-1]\n            if name == \"tmax\":\n                if tmaxgrid is None:\n                    tmaxgrid = values\n                else:\n                    tmaxgrid = np.where(values > tmaxgrid, values, tmaxgrid)\n            elif name in [\"dswrf\", \"sdswrf\"]:\n                if srad is None:\n                    # Average 6 hour flux in W/m^2 to MJ/day\n                    srad = values * 6.0 * 3600.0 / 1_000_000.0\n                else:\n                    srad = srad + (values * 6.0 * 3600.0 / 1_000_000.0)\n            elif name == \"tmin\":\n                if tmingrid is None:\n                    tmingrid = values\n                else:\n                    tmingrid = np.where(values < tmingrid, values, tmingrid)\n            elif name == \"prate\":\n                hits += 1\n                # kg/m^2/s over six hours\n                ptotal = values * 6.0 * 3600.0\n                if plast is None:\n                    plast = 0\n                if pgrid is None:\n                    pgrid = 0\n                pgrid = pgrid + (ptotal - plast)\n                plast = ptotal\n            # Hacky\n            elif name == \"st\" and str(grb).find(\"0.0-0.1 m\") > -1:\n                if tsoilgrid is None:\n                    tsoilgrid = values\n                else:\n                    tsoilgrid += values\n            elif name == \"soilw\" and str(grb).find(\"0.0-0.1 m\") > -1:\n                # Values of 1 are common/water, which overflows our storage\n                # convert to mm depth\n                values = np.where(values == 1, np.nan, values * 100.0)\n                if smgrid is None:\n                    smgrid = values\n                else:\n                    smgrid += values\n\n        grbs.close()\n\n        # Write out the data at the reset time\n        if fxtime.hour == write_hour[domain]:\n            approxlocal = (fxtime - timedelta(hours=6)).astimezone(\n                dom[\"tzinfo\"]\n            )\n            days = (approxlocal.date() - now.date()).days\n            if hits == 4:\n                nc.variables[\"high_tmpk\"][days] = reproject2iemre(\n                    tmaxgrid, affine, EPSG[4326], domain=domain\n                )\n                nc.variables[\"low_tmpk\"][days] = reproject2iemre(\n                    tmingrid, affine, EPSG[4326], domain=domain\n                )\n                nc.variables[\"p01d\"][days] = reproject2iemre(\n                    pgrid, affine, EPSG[4326], domain=domain\n                )\n                pout = np.ma.array(nc.variables[\"p01d\"][days])\n                nc.variables[\"tsoil\"][days] = reproject2iemre(\n                    tsoilgrid / 4.0, affine, EPSG[4326], domain=domain\n                )\n                nc.variables[\"soil_moisture\"][days] = reproject2iemre(\n                    smgrid / 4.0, affine, EPSG[4326], domain=domain\n                )\n                nc.variables[\"srad\"][days] = reproject2iemre(\n                    srad, affine, EPSG[4326], domain=domain\n                )\n                sout = np.ma.array(nc.variables[\"srad\"][days])\n                LOG.info(\n                    \"Writing %s[localdate:%s], day=%s, domain=%s \"\n                    \"srad:%.1f->%.1f pgrid:%.2f->%.2f\",\n                    fxtime,\n                    approxlocal.date(),\n                    days,\n                    domain,\n                    -1 if srad is None else np.nanmean(srad),  # appease linter\n                    np.ma.mean(sout),\n                    -1 if pgrid is None else np.nanmean(pgrid),\n                    np.ma.mean(pout),\n                )\n            tmingrid = None\n            tmaxgrid = None\n            tsoilgrid = None\n            smgrid = None\n            srad = None\n            hits = 0\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), help=\"Specify UTC valid time\")\n@click.option(\"--domain\", default=\"\", help=\"Run just for domain\")\ndef main(valid: datetime, domain: str):\n    \"\"\"Do the work.\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    # Run every hour, filter those we don't run\n    if valid.hour % 6 != 0:\n        return\n    for thisdomain, dom in IEMRE_DOMAINS.items():\n        if domain not in (\"\", thisdomain):\n            LOG.info(\"Skipping %s domain due to CLI args\", thisdomain)\n            continue\n        ncfn = create(valid, thisdomain, dom)\n        with ncopen(ncfn, \"a\") as nc:\n            merge_grib(nc, valid, thisdomain, dom)\n        dd = \"\" if thisdomain == \"conus\" else f\"_{thisdomain}\"\n        # Archive this as we need it for various projects\n        cmd = [\n            \"pqinsert\",\n            \"-p\",\n            (\n                f\"data a {valid:%Y%m%d%H%M} bogus \"\n                f\"model/gfs/gfs_{valid:%Y%m%d%H}_iemre{dd}.nc nc\"\n            ),\n            ncfn,\n        ]\n        subprocess.call(cmd)\n        shutil.move(ncfn, ncfn.replace(\"_new\", \"\"))\n\n    # Generate 4inch plots based on 6z GFS\n    if valid.hour == 6 and (utc() - valid).days < 2:\n        subprocess.call([\"python\", \"gfs_4inch.py\"])\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/gfs/gfs_4inch.py",
    "content": "\"\"\"Forecast GFS ~4 inch temperatures, gasp?\n\nCalled from gfs2iemre.py for just the 6z run.\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.plot import MapPlot, get_cmap\nfrom pyiem.util import convert_value, logger, ncopen\n\nLOG = logger()\n\n\ndef get_idx(lons, lats, lon, lat) -> tuple[int, int]:\n    \"\"\"Return the grid points closest to this point\"\"\"\n    dist = ((lons - lon) ** 2 + (lats - lat) ** 2) ** 0.5\n    return np.unravel_index(dist.argmin(), dist.shape)\n\n\ndef sampler(xaxis, yaxis, vals, x, y):\n    \"\"\"This is a hack\"\"\"\n    i = 0\n    while xaxis[i] < x:\n        i += 1\n    j = 0\n    while yaxis[j] < y:\n        j += 1\n    return vals[i, j]\n\n\ndef gen_plot(cdf, dt, day, soilt, lons, lats, fx):\n    \"\"\"Make a plot.\"\"\"\n    mp = MapPlot(\n        sector=\"iowa\",\n        title=(\n            \"GFS Forecast Average ~4 inch Depth Soil \"\n            f\"Temperatures for {dt:%b %d, %Y}\"\n        ),\n        subtitle=(\n            \"Caution: Raw output average of 4 (6-hour) forecasts (6z-6z) \"\n            f\"valid for 0-10 cm depth. ({fx})\"\n        ),\n    )\n    mp.pcolormesh(\n        lons,\n        lats,\n        soilt,\n        np.arange(10, 101, 5),\n        cmap=get_cmap(\"jet\"),\n        units=\"°F\",\n    )\n    mp.plot_values(\n        cdf[\"lon\"],\n        cdf[\"lat\"],\n        cdf[\"gfs\"].values,\n        fmt=\"%.0f\",\n        textsize=11,\n        labelbuffer=5,\n    )\n    mp.drawcounties()\n    pqstr = (\n        f\"plot c {dt:%Y%m%d}0000 forecast/gfs_soilt_day_f{day}.png \"\n        f\"forecast/gfs_soilt_day_f{day}.png png\"\n    )\n    LOG.info(pqstr)\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        cdf = pd.read_sql(\n            sql_helper(\"\"\"SELECT ST_x(ST_centroid(the_geom)) as lon,\n            ST_y(ST_centroid(the_geom)) as lat\n            from uscounties WHERE state_name = 'Iowa'\n        \"\"\"),\n            conn,\n            index_col=None,\n        )\n    with ncopen(\"/mesonet/data/iemre/gfs_current.nc\") as nc:\n        lons = nc.variables[\"lon\"][:]\n        lats = nc.variables[\"lat\"][:]\n        lons, lats = np.meshgrid(lons, lats)\n        fx = nc.gfs_forecast\n        basedt = datetime.strptime(\n            nc.variables[\"time\"].units.split()[2],\n            \"%Y-%m-%d\",\n        )\n        for day in range(20):\n            dt = basedt + timedelta(days=day)\n            soilk = nc.variables[\"tsoil\"][day, :, :]\n            if np.ma.is_masked(np.ma.max(soilk)):\n                continue\n            soilt = convert_value(soilk, \"degK\", \"degF\")\n            for i, row in cdf.iterrows():\n                x, y = get_idx(lons, lats, row[\"lon\"], row[\"lat\"])  # skipcq\n                cdf.at[i, \"gfs\"] = soilt[x, y]\n\n            gen_plot(cdf, dt, day, soilt, lons, lats, fx)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/gs/plot_gdd.py",
    "content": "\"\"\"Generate a plot of GDD.\n\nCalled from RUN_SUMMARY.sh\n\"\"\"\n\nfrom datetime import datetime\n\nfrom pyiem.util import logger, web2ldm\n\nLOG = logger()\n\n\ndef run(gddbase, now, fn):\n    \"\"\"Generate the plot\"\"\"\n    url = (\n        \"http://iem.local/plotting/auto/plot/97/d:sector::sector:IA::\"\n        f\"var:gdd_sum::gddbase:{gddbase}::gddceil:86::\"\n        f\"date1:{now.strftime('%Y-05-01')}::usdm:no::\"\n        f\"date2:{now.strftime('%Y-%m-%d')}::p:contour::cmap:RdBu_r::c:yes\"\n        \".png\"\n    )\n    pqstr = f\"plot c 000000000000 summary/{fn}.png bogus png\"\n    LOG.info(url)\n    LOG.info(pqstr)\n    res = web2ldm(url, pqstr, md5_from_name=True)\n    if not res:\n        LOG.warning(\"[gs] failed for gddbase: %s url: %s\", gddbase, url)\n\n\ndef main():\n    \"\"\"Main()\"\"\"\n    today = datetime.now()\n    if today.month < 5:\n        today = today.replace(year=(today.year - 1), month=11, day=1)\n    run(50, today, \"gdd_may1\")\n    run(60, today, \"gdd_may1_6086\")\n    run(65, today, \"gdd_may1_6586\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/hads/assign_has_hml.py",
    "content": "\"\"\"Update metadata to assign HAS_HML property to DCP sites with HML data.\n\nRun from RUN_0Z.sh\n\"\"\"\n\nimport httpx\nimport pandas as pd\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.util import logger\nfrom sqlalchemy.engine import Connection\n\nLOG = logger()\n\n\n@with_sqlalchemy_conn(\"mesosite\")\ndef deal_with_unknown(station: str, conn: Connection = None):\n    \"\"\"Figure out what to do.\"\"\"\n    LOG.info(\"Unknown station %s logic is running\", station)\n    # 1. Is this site a COOP?\n    res = conn.execute(\n        sql_helper(\"\"\"\n        SELECT iemid, network from stations where id = :station\n        and network ~* 'COOP'\n    \"\"\"),\n        {\"station\": station},\n    )\n    if res.rowcount == 1:\n        LOG.warning(\"Station %s is a COOP only?\", station)\n        return\n    # 2. Does this site exist upstream\n    try:\n        resp = httpx.get(\n            f\"https://api.water.noaa.gov/nwps/v1/gauges/{station}\"\n        )\n        resp.raise_for_status()\n    except Exception:\n        LOG.warning(\"Station %s does not exist in NWPS\", station)\n        return\n    meta = resp.json()\n    if -3 < meta[\"longitude\"] < 3:\n        LOG.warning(\n            \"Station %s has lon: %s lat: %s, skipping\",\n            station,\n            meta[\"longitude\"],\n            meta[\"latitude\"],\n        )\n        return\n    state = meta[\"state\"][\"abbreviation\"]\n    res = conn.execute(\n        sql_helper(\"\"\"\n        insert into stations\n        (id, name, state, country, network, online, metasite,\n        plot_name, geom)\n        values (:station, :name, :state, 'US', :network, 't', 'f', :name,\n        ST_Point(:lon, :lat, 4326)) returning iemid\n        \"\"\"),\n        {\n            \"station\": station,\n            \"name\": meta[\"name\"].replace(\",\", \" \")[:64],\n            \"state\": state,\n            \"network\": f\"{state}_DCP\",\n            \"lon\": meta[\"longitude\"],\n            \"lat\": meta[\"latitude\"],\n        },\n    )\n    iemid = res.first()[0]\n    LOG.warning(\"Adding mesosite entry %s for %s\", iemid, station)\n    conn.execute(\n        sql_helper(\"\"\"\n        INSERT into station_attributes(iemid, attr, value)\n        VALUES (:iemid, 'HAS_HML', '1')\n        \"\"\"),\n        {\"iemid\": iemid},\n    )\n    conn.commit()\n\n\n@with_sqlalchemy_conn(\"mesosite\")\ndef load_sites(conn: Connection = None) -> pd.DataFrame:\n    \"\"\"Figure out what we have.\"\"\"\n    return pd.read_sql(\n        sql_helper(\"\"\"\nSELECT id, network from stations s JOIN station_attributes a ON\n(s.iemid = a.iemid) WHERE a.attr = 'HAS_HML'\n        \"\"\"),\n        conn,\n        index_col=\"id\",\n    )\n\n\n@with_sqlalchemy_conn(\"hml\")\ndef load_obs(conn: Connection = None) -> pd.DataFrame:\n    \"\"\"Figure out who has HML data.\"\"\"\n    return pd.read_sql(\n        sql_helper(\"\"\"\n    select distinct station from hml_observed_data where\n    valid > now() - '7 days'::interval\n                 \"\"\"),\n        conn,\n        index_col=\"station\",\n    )\n\n\n@with_sqlalchemy_conn(\"mesosite\")\ndef main(conn: Connection = None):\n    \"\"\"Go.\"\"\"\n    currentdf = load_sites()\n    LOG.info(\"mesosite has %s sites with HAS_HML\", len(currentdf.index))\n    obsdf = load_obs()\n    LOG.info(\"hml has %s sites with HML data\", len(obsdf.index))\n    # Find the difference\n    addsites = obsdf.index.difference(currentdf.index)\n    LOG.info(\"Adding %s sites to mesosite\", len(addsites))\n    if addsites.empty:\n        return\n    for station in addsites:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n        INSERT into station_attributes(iemid, attr, value)\n        SELECT iemid, 'HAS_HML', '1' from stations where id = :station\n        and network ~* 'DCP' returning iemid\n        \"\"\"\n            ),\n            {\"station\": station},\n        )\n        if res.rowcount == 0:\n            deal_with_unknown(station)\n        else:\n            LOG.warning(\"Added HAS_HML for %s to mesosite\", station)\n    conn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/hads/compute_hads_pday.py",
    "content": "\"\"\"Attempt at totalling up DCP data\n\nRun from `RUN_12Z.sh` for previous day\nRun from `RUN_20_AFTER.sh` for current day\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import logger, utc\n\nLOG = logger()\n\n\ndef workflow(dt: date):\n    \"\"\"Do the necessary work for this date\"\"\"\n    iem_pgconn = get_dbconn(\"iem\")\n    icursor = iem_pgconn.cursor()\n    # load up the current obs\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        accessdf = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        WITH dcp as (\n            SELECT id, iemid, tzname from stations where network ~* 'DCP'\n            and tzname is not null\n        ), obs as (\n            SELECT iemid, pday from {table} WHERE day = :dt)\n        SELECT d.iemid, d.tzname, coalesce(o.pday, 0) as pday from\n        dcp d LEFT JOIN obs o on (d.iemid = o.iemid)\n        \"\"\",\n                table=f\"summary_{dt:%Y}\",\n            ),\n            conn,\n            params={\"dt\": dt},\n            index_col=\"iemid\",\n        )\n    bases = {}\n    ts = utc(dt.year, dt.month, dt.day, 12)\n    for tzname in accessdf[\"tzname\"].unique():\n        base = ts.astimezone(ZoneInfo(tzname))\n        bases[tzname] = base.replace(hour=0)\n    # retrieve data that is within 12 hours of our bounds\n    sts = datetime(dt.year, dt.month, dt.day) - timedelta(hours=12)\n    ets = sts + timedelta(hours=48)\n    # This brings other networks along for the ride, so be careful\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        obsdf = pd.read_sql(\n            sql_helper(\n                \"\"\"\n        SELECT iemid, valid at time zone 'UTC' as utc_valid, phour\n        from hourly WHERE valid between :sts and :ets and phour >= 0\n        order by iemid\n        \"\"\"\n            ),\n            conn,\n            params={\"sts\": sts, \"ets\": ets},\n            index_col=None,\n        )\n    if obsdf.empty:\n        LOG.warning(\"%s found no phour access data\", dt)\n        return\n    obsdf[\"utc_valid\"] = obsdf[\"utc_valid\"].dt.tz_localize(ZoneInfo(\"UTC\"))\n    counts = {\n        \"skips\": 0,\n        \"updates\": 0,\n        \"inserts\": 0,\n    }\n    for iemid, gdf in obsdf.groupby(\"iemid\"):\n        if iemid not in accessdf.index:\n            continue\n        tz = accessdf.at[iemid, \"tzname\"]\n        # obsdf stores data for the actual timestamp hour, so we want 0 to 23\n        sts = bases[tz]\n        ets = sts.replace(hour=23)\n        current_pday = accessdf.at[iemid, \"pday\"]\n        phour_total = gdf[\n            (gdf[\"utc_valid\"] >= sts) & (gdf[\"utc_valid\"] <= ets)\n        ][\"phour\"].sum()\n        if phour_total > 50 or np.allclose([phour_total], [current_pday]):\n            counts[\"skips\"] += 1\n            continue\n        icursor.execute(\n            f\"UPDATE summary_{dt:%Y} \"\n            \"SET pday = %s WHERE iemid = %s and day = %s\",\n            (phour_total, iemid, dt),\n        )\n        counts[\"updates\"] += 1\n        if icursor.rowcount == 0:\n            LOG.info(\"Adding record %s for day %s\", iemid, dt)\n            icursor.execute(\n                f\"INSERT into summary_{dt:%Y} (iemid, day) VALUES (%s, %s)\",\n                (iemid, dt),\n            )\n            counts[\"inserts\"] += 1\n            icursor.execute(\n                f\"UPDATE summary_{dt:%Y} \"\n                \"SET pday = %s WHERE iemid = %s and day = %s \"\n                \"and %s > coalesce(pday, 0)\",\n                (phour_total, iemid, dt, phour_total),\n            )\n    icursor.close()\n    iem_pgconn.commit()\n    LOG.info(\"Counts %s\", counts)\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), required=True)\ndef main(dt: datetime):\n    \"\"\"Do Something\"\"\"\n    workflow(dt.date())\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/hads/compute_hads_phour.py",
    "content": "\"\"\"Compute hourly precip totals from the HADS/DCP sites.\n\nhads=# select key, count(*), max(value) from raw2026_01\nwhere substr(key, 1, 2) in ('PP', 'PC', 'PR') group by key order by count desc;\n\n   key   |  count   |   max\n PCIRGZZ | 13575120 |  129400  Instantaneous accumulation, ~easy\n PPHRGZZ |  4179366 |  114636  Explcity hourly, good too\n PCIRRZZ |  2039035 |     723  Instantaneous accumulation, ~easy\n PPERGZZ |  1302182 |  1194.6  5 minute precip total, can we avoid?\n PPURRZZ |   658408 | 1121.61  1 minute, can we avoid?\n PPHR3ZZ |   641496 |  394.12  Explcit hourly\n PPHRZZZ |   629107 |    10.9\n\n---> The database storage is for the hour the precip fell!\n\nRun from RUN_20_AFTER.sh for previous hour and 24 hours ago\n\"\"\"\n\nimport re\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import (\n    sql_helper,\n    with_sqlalchemy_conn,\n)\nfrom pyiem.util import logger\nfrom sqlalchemy.engine import Connection\n\nLOG = logger()\nNWSLI_RE = re.compile(r\"^[A-Z]{4}[0-9]{1}$\")\n\n\n@with_sqlalchemy_conn(\"mesosite\")\ndef build_metadata(conn: Connection | None = None) -> pd.DataFrame:\n    \"\"\"Create the necessary metadata to do our work.\"\"\"\n    return pd.read_sql(\n        sql_helper(\n            \"\"\"\n        select iemid, id, tzname from stations where network ~* 'DCP'\n        and tzname is not null order by id asc\n        \"\"\"\n        ),\n        conn,\n        index_col=\"iemid\",\n    )\n\n\n@with_sqlalchemy_conn(\"hads\")\ndef insert_unknown_station(\n    station: str, conn: Connection | None = None\n) -> None:\n    \"\"\"Allow for other processing to happen.\"\"\"\n    conn.execute(\n        sql_helper(\n            \"insert into unknown(nwsli, product, network) \"\n            \"values (:station, '197001010000-KISU-NOUS99-NOTREA', 'DCP')\"\n        ),\n        {\"station\": station},\n    )\n    conn.commit()\n\n\n@with_sqlalchemy_conn(\"hads\")\ndef build_obs(valid: datetime, conn: Connection | None = None) -> pd.DataFrame:\n    \"\"\"Figure out the obs that we have!\"\"\"\n    # We don't want PPH values valid at the valid time, that is the previous hr\n    # Some stations have seconds values, le sigh\n    # Some stations have multiple sensors\n    return pd.read_sql(\n        sql_helper(\n            \"\"\"\n        select distinct station, valid, key, value, substr(key, 1, 3) as key3,\n        extract(minute from valid) as minute,\n        substr(key, 4, 2) as sensor\n        from {table} WHERE\n        (\n         (substr(key, 1, 3) = 'PPH' and valid > :sts and valid <= :ets) or\n         (substr(key, 1, 3) = 'PCI' and valid >= :sts and valid <= :ets)\n        ) and value >= 0 and unit_convention = 'E'\n        ORDER by station asc, valid asc\n        \"\"\",\n            table=f\"raw{valid:%Y}\",\n        ),\n        conn,\n        params={\"sts\": valid, \"ets\": valid + timedelta(minutes=61)},\n        index_col=None,\n    )\n\n\ndef set_value(\n    conn: Connection,\n    valid: datetime,\n    hourlydf: pd.DataFrame,\n    iemid: int,\n    value: float,\n):\n    \"\"\"Set the database value, maybe.\"\"\"\n    # Sanity check\n    if value < 0 or value > 10:\n        return\n    params = {\"iemid\": iemid, \"value\": value, \"valid\": valid}\n    if iemid in hourlydf.index:\n        prev = float(hourlydf.at[iemid, \"phour\"])\n        if np.isclose(prev, value):\n            return\n        LOG.info(\"Updating iemid %s from %.2f to %.2f\", iemid, prev, value)\n        conn.execute(\n            sql_helper(\n                \"\"\"\n            UPDATE {table} SET phour = :value\n            WHERE iemid = :iemid AND valid = :valid\n            \"\"\",\n                table=f\"hourly_{valid:%Y}\",\n            ),\n            params,\n        )\n        return\n    conn.execute(\n        sql_helper(\n            \"\"\"\n        insert into {table} (iemid, valid, phour)\n        values (:iemid, :valid, :value)\n        \"\"\",\n            table=f\"hourly_{valid:%Y}\",\n        ),\n        params,\n    )\n    conn.commit()\n\n\n@with_sqlalchemy_conn(\"iem\")\ndef workflow(valid: datetime, conn: Connection | None = None):\n    \"\"\"Do the necessary work for this date\"\"\"\n    metadf = build_metadata()\n    LOG.info(\"Found %s DCP stations with valid tzname\", len(metadf.index))\n\n    # IMPORTANT valid is the hour of data we are processing for\n    obsdf = build_obs(valid)\n    LOG.info(\"Found %s HADS obs for %s\", len(obsdf.index), valid)\n\n    table = f\"hourly_{valid:%Y}\"\n    hourlydf = pd.read_sql(\n        sql_helper(\n            \"select iemid, phour from {table} where valid = :valid\",\n            table=table,\n        ),\n        conn,\n        params={\"valid\": valid},\n        index_col=\"iemid\",\n    )\n\n    # Iterate over stations found\n    counts = {\n        \"unknown_station\": 0,\n        \"has_pph\": 0,\n        \"has_pci\": 0,\n        \"only_one_pci\": 0,\n        \"multiple_sensors\": 0,\n        \"unaccounted\": 0,\n    }\n    for station, gdf in obsdf.groupby(\"station\"):\n        if station not in metadf[\"id\"].values:\n            counts[\"unknown_station\"] += 1\n            if NWSLI_RE.match(str(station)):\n                insert_unknown_station(station)\n            continue\n        iemid = metadf.index[metadf[\"id\"] == station][0]\n        # Scenario 1, 1 entry of PPH, easy\n        filtered = gdf[gdf[\"key3\"] == \"PPH\"]\n        if not filtered.empty:\n            counts[\"has_pph\"] += 1\n            set_value(\n                conn, valid, hourlydf, iemid, filtered[\"value\"].values[0]\n            )\n            continue\n        # Scenario 2, 2 entries of PCI at top of the hour\n        filtered = gdf[(gdf[\"key3\"] == \"PCI\") & (gdf[\"minute\"] == 0)]\n        if len(filtered.index) == 2:\n            counts[\"has_pci\"] += 1\n            set_value(\n                conn,\n                valid,\n                hourlydf,\n                iemid,\n                filtered[\"value\"].values[-1] - filtered[\"value\"].values[0],\n            )\n            continue\n        # Scenario 3, only 1 PCI\n        filtered = gdf[gdf[\"key3\"] == \"PCI\"]\n        if len(filtered.index) == 1:\n            counts[\"only_one_pci\"] += 1\n            continue\n        # Scenario 4, more than one sensor\n        if gdf[\"sensor\"].nunique() > 1:\n            counts[\"multiple_sensors\"] += 1\n            continue\n        counts[\"unaccounted\"] += 1\n        LOG.info(\"Unaccounted for scenario\\n%s\", gdf.to_markdown())\n    LOG.info(\"Scenario counts: %s\", counts)\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), required=True)\ndef main(valid: datetime):\n    \"\"\"Do Something\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    workflow(valid)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/hads/dedup_hml_forecasts.py",
    "content": "\"\"\"Cut down the number of HML forecasts stored\n\nSuspicion is that do to retrans, etc, there are lots of dups in the HML\ndatabase.  So this attempts to de-dup them.\n\nRun from RUN_MIDNIGHT.sh for previous UTC date\n\"\"\"\n\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef workflow(ts: datetime):\n    \"\"\"Deduplicate this timestep\"\"\"\n    pgconn = get_dbconn(\"hml\")\n    cursor = pgconn.cursor()\n    table = f\"hml_forecast_data_{ts:%Y}\"\n    cursor.execute(\n        f\"\"\"\n    with data as (\n        select id, station, generationtime, issued,\n    rank() OVER (PARTITION by station, issued ORDER by generationtime DESC),\n        forecast_sts, forecast_ets from hml_forecast where\n        issued >= %s and issued < %s)\n    DELETE from {table} where hml_forecast_id in\n        (select id from data where rank > 1)\n        \"\"\",\n        (ts, ts + timedelta(days=1)),\n    )\n    LOG.info(\n        \"removed %s rows on %s for %s\",\n        cursor.rowcount,\n        table,\n        ts.strftime(\"%Y-%m-%d\"),\n    )\n    cursor.execute(\n        \"\"\"\n    with data as (\n        select id, station, generationtime, issued,\n    rank() OVER (PARTITION by station, issued ORDER by generationtime DESC),\n        forecast_sts, forecast_ets from hml_forecast where\n        issued >= %s and issued < %s)\n    DELETE from hml_forecast where id in\n        (select id from data where rank > 1)\n    \"\"\",\n        (ts, ts + timedelta(days=1)),\n    )\n    LOG.info(\n        \"dedup_hml_forecasts removed %s rows on %s for %s\",\n        cursor.rowcount,\n        \"hml_forecast\",\n        ts.strftime(\"%Y-%m-%d\"),\n    )\n    cursor.close()\n    pgconn.commit()\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), required=True)\ndef main(dt: datetime):\n    \"\"\"Go Main Go\"\"\"\n    dt = dt.replace(tzinfo=timezone.utc)\n    workflow(dt)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/hads/process_hads_inbound.py",
    "content": "\"\"\"Moved staged SHEF data into long term tables.\n\nNote, we do not want to do TRUNCATE here to do ugly locking that happens and\nwhich can jam things up badly when we are doing upgrades, etc.\n\nWe want to over-write previous entries so to allow for corrections to work.\nWe assume that newer data is better :/\n\ncalled from RUN_10MIN.sh\n\"\"\"\n\nimport sys\nfrom datetime import datetime, timezone\n\nimport pandas as pd\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import get_properties, logger, set_property, utc\nfrom sqlalchemy.engine import Connection\nfrom tqdm import tqdm\n\nLOG = logger()\nPROPERTY_NAME = \"hads2archive_last\"\n\n\n@with_sqlalchemy_conn(\"hads\")\ndef main(conn: Connection | None = None):\n    \"\"\"Do things\"\"\"\n    updated_start = datetime.strptime(\n        get_properties().get(PROPERTY_NAME, \"2002-01-01T00:00:00Z\"),\n        ISO8601,\n    ).replace(tzinfo=timezone.utc)\n    updated_end = utc()\n    set_property(PROPERTY_NAME, updated_end.strftime(ISO8601))\n    nt = NetworkTable(\"ISUSM\", only_online=False)\n    # Sometimes we get old data that should not be in the database.\n    obs = pd.read_sql(\n        sql_helper(\"\"\"\n        SELECT station, valid at time zone 'UTC' as v, key, value, depth,\n        unit_convention, qualifier, dv_interval from raw_inbound\n        WHERE valid > '2002-01-01' and updated >= :sts and updated < :ets\n        and not (station = Any(:stations))\n        order by station asc, updated asc\n    \"\"\"),\n        conn,\n        index_col=None,\n        parse_dates=\"v\",\n        params={\n            \"sts\": updated_start,\n            \"ets\": updated_end,\n            \"stations\": list(nt.sts.keys()),\n        },\n    )\n    LOG.info(\n        \"processing %s rows updated %s->%s\",\n        len(obs.index),\n        updated_start,\n        updated_end,\n    )\n    obs[\"v\"] = obs[\"v\"].dt.tz_localize(timezone.utc)\n    obs[\"dv_interval\"] = pd.to_timedelta(obs[\"dv_interval\"])\n    updates = 0\n    inserts = 0\n    duplicates = 0\n    deletes = 0\n    quiet = not sys.stdout.isatty()\n    progress = tqdm(\n        obs.itertuples(index=False),\n        total=obs.shape[0],\n        disable=quiet,\n    )\n    for row in progress:\n        progress.set_description(\n            f\"Upd: {updates} Ins: {inserts} Dups: {duplicates} Del: {deletes}\"\n        )\n        table = f\"raw{row.v:%Y_%m}\"\n        dv_interval = None if pd.isna(row.dv_interval) else row.dv_interval\n        depth = None if pd.isna(row.depth) else int(row.depth)\n        value = None if pd.isna(row.value) else row.value\n        # Sigh, we are doing so much dup data that we want to avoid\n        # needless MVCC database updates\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n    select value, ctid,\n    (\n        (CAST(:value AS double precision) is null and value is null)\n        or (\n            CAST(:value AS double precision) is not null\n            and value is not null\n            and abs(value - CAST(:value AS double precision)) < 1e-3\n        )\n    ) as is_duplicate\n    from {table}  where\n    station = :station and valid = :valid and key = :key\n    and (depth IS NOT DISTINCT FROM :depth)\n    and (unit_convention IS NOT DISTINCT FROM :unit_convention)\n    and (qualifier IS NOT DISTINCT FROM :qualifier)\n    and (dv_interval IS NOT DISTINCT FROM :dv_interval)\n                \"\"\",\n                table=table,\n            ),\n            {\n                \"station\": row.station,\n                \"valid\": row.v,\n                \"value\": value,\n                \"key\": row.key,\n                \"depth\": depth,\n                \"unit_convention\": row.unit_convention,\n                \"qualifier\": row.qualifier,\n                \"dv_interval\": dv_interval,\n            },\n        )\n        if res.rowcount == 1 and res.fetchone()[2]:\n            # No change needed\n            duplicates += 1\n            continue\n\n        # Does this row already exist and careful about null comparisons\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n    update {table} SET value = :value where\n    station = :station and valid = :valid and key = :key\n    and (depth IS NOT DISTINCT FROM :depth)\n    and (unit_convention IS NOT DISTINCT FROM :unit_convention)\n    and (qualifier IS NOT DISTINCT FROM :qualifier)\n    and (dv_interval IS NOT DISTINCT FROM :dv_interval) returning ctid\n                \"\"\",\n                table=table,\n            ),\n            {\n                \"station\": row.station,\n                \"valid\": row.v,\n                \"value\": value,\n                \"key\": row.key,\n                \"depth\": depth,\n                \"unit_convention\": row.unit_convention,\n                \"qualifier\": row.qualifier,\n                \"dv_interval\": dv_interval,\n            },\n        )\n        if res.rowcount > 0:\n            if res.rowcount > 1:\n                if not quiet:\n                    progress.write(f\"del {res.rowcount} dup entries {row}\")\n                # Delete 'em, except the last one :/\n                ctids = [r[0] for r in res.fetchall()]\n                # Let index help with query perf\n                res = conn.execute(\n                    sql_helper(\n                        \"\"\"\n    DELETE FROM {table} where station = :station and valid = :valid and\n    ctid = ANY(:ctids)\"\"\",\n                        table=table,\n                    ),\n                    {\n                        \"ctids\": ctids[:-1],\n                        \"station\": row.station,\n                        \"valid\": row.v,\n                    },\n                )\n                deletes += res.rowcount\n            updates += 1\n            if updates % 1_000 == 0:\n                conn.commit()\n            continue\n        inserts += 1\n        if inserts % 1_000 == 0:\n            conn.commit()\n        conn.execute(\n            sql_helper(\n                \"\"\"\n    INSERT into {table}(station, valid, key, value, depth, unit_convention,\n    qualifier, dv_interval) VALUES (:station, :valid, :key, :value,\n    :depth, :unit_convention, :qualifier, :dv_interval)\n                \"\"\",\n                table=table,\n            ),\n            {\n                \"station\": row.station,\n                \"valid\": row.v,\n                \"key\": row.key,\n                \"value\": value,\n                \"depth\": depth,\n                \"unit_convention\": row.unit_convention,\n                \"qualifier\": row.qualifier,\n                \"dv_interval\": dv_interval,\n            },\n        )\n    lglvl = LOG.warning if 0 in [updates, inserts] else LOG.info\n    lglvl(\n        \"Updated %s rows, inserted %s row, %s dbdups, %s deletes\",\n        updates,\n        inserts,\n        duplicates,\n        deletes,\n    )\n    res = conn.execute(\n        sql_helper(\n            \"delete from raw_inbound where updated >= :sts and updated < :ets\"\n        ),\n        {\"sts\": updated_start, \"ets\": updated_end},\n    )\n    LOG.info(\"removed %s inbound rows\", res.rowcount)\n    conn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/hads/process_nwps_stages.py",
    "content": "\"\"\"Sync NWPS entries for flood stages!\n\nCalled from windrose/daily_drive_network.py\n\"\"\"\n\nimport click\nimport httpx\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef process_site(mcursor, nwsli, meta):\n    \"\"\"Do our processing work\"\"\"\n\n    url = f\"https://api.water.noaa.gov/nwps/v1/gauges/{nwsli}\"\n\n    try:\n        res = httpx.get(url, timeout=30)\n        if res.status_code != 200:\n            LOG.info(\"Failed to fetch %s, got %s\", url, res.status_code)\n            return\n        res = res.json()\n        if res.get(\"code\") == 5:\n            LOG.info(\"No data found for %s\", nwsli)\n            return\n    except Exception as exp:\n        LOG.exception(exp)\n        return\n\n    msg = \"\"\n    for name, entry in res.get(\"flood\", {}).get(\"categories\", {}).items():\n        key = f\"sigstage_{name}\"\n        val = entry[\"stage\"]\n        if val < 0:\n            continue\n        # is this updated info?\n        current = meta.get(key)\n        if current is None or abs(current - val) > 0.01:\n            msg += f\"{name}: {current}->{val} \"\n        meta[key] = val\n    if msg == \"\":\n        return\n\n    LOG.info(\"updating %s with %s\", nwsli, msg)\n    mcursor.execute(\n        \"\"\"\n        UPDATE stations SET sigstage_low = %s,\n        sigstage_action = %s,\n        sigstage_bankfull = %s,\n        sigstage_flood = %s,\n        sigstage_moderate = %s,\n        sigstage_major = %s,\n        sigstage_record = %s\n        WHERE iemid = %s\n    \"\"\",\n        (\n            meta.get(\"sigstage_low\"),\n            meta.get(\"sigstage_action\"),\n            meta.get(\"sigstage_bankfull\"),\n            meta.get(\"sigstage_flood\"),\n            meta.get(\"sigstage_moderate\"),\n            meta.get(\"sigstage_major\"),\n            meta.get(\"sigstage_record\"),\n            meta[\"iemid\"],\n        ),\n    )\n\n\n@click.command()\n@click.option(\"--network\", required=True, help=\"IEM Network Identifier\")\ndef main(network):\n    \"\"\"Go Main Go\"\"\"\n    nt = NetworkTable(network)\n    with get_dbconn(\"mesosite\") as dbconn:\n        for sid, meta in nt.sts.items():\n            mcursor = dbconn.cursor()\n            process_site(mcursor, sid, meta)\n            mcursor.close()\n            dbconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/hads/raw2obs.py",
    "content": "\"\"\"Convert the raw table data into something faster for website to use.\n\ncalled from RUN_MIDNIGHT.sh\n\"\"\"\n\nfrom datetime import date, datetime, timedelta, timezone\nfrom io import StringIO\n\nimport click\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import convert_value, logger\n\nLOG = logger()\n\n\ndef v(val):\n    \"\"\"lame\"\"\"\n    if pd.isnull(val):\n        return \"null\"\n    return val\n\n\ndef do(ts: date):\n    \"\"\"Do a UTC date's worth of data\"\"\"\n    pgconn = get_dbconn(\"hads\")\n    table = ts.strftime(\"raw%Y_%m\")\n    sts = datetime(ts.year, ts.month, ts.day, tzinfo=timezone.utc)\n    ets = sts + timedelta(hours=24)\n    with get_sqlalchemy_conn(\"hads\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                f\"\"\"\n            SELECT station, valid, substr(key, 1, 3) as vname, value\n            from {table} WHERE valid >= :sts and valid < :ets and\n            substr(key, 1, 3) in ('USI', 'UDI', 'TAI', 'TDI')\n            and value > -999\n        \"\"\",\n                table=table,\n            ),\n            conn,\n            params={\"sts\": sts, \"ets\": ets},\n            index_col=None,\n        )\n    if df.empty:\n        LOG.info(\"No data found for date: %s\", ts)\n        return\n\n    pdf = pd.pivot_table(\n        df, values=\"value\", index=[\"station\", \"valid\"], columns=\"vname\"\n    )\n    if \"USI\" in pdf.columns:\n        pdf[\"sknt\"] = convert_value(pdf[\"USI\"].values, \"mile / hour\", \"knot\")\n\n    table = ts.strftime(\"t%Y\")\n    data = StringIO()\n    for (station, valid), row in pdf.iterrows():\n        data.write(\n            (\"%s\\t%s\\t%s\\t%s\\t%s\\t%s\\n\")\n            % (\n                station,\n                valid.strftime(\"%Y-%m-%d %H:%M:%S+00\"),\n                v(row.get(\"TAI\")),\n                v(row.get(\"TDI\")),\n                v(row.get(\"UDI\")),\n                v(row.get(\"sknt\")),\n            )\n        )\n    cursor = pgconn.cursor()\n    cursor.execute(\n        f\"DELETE from {table} WHERE \"  # skipcq\n        \"valid between %s and %s\",\n        (sts, ets),\n    )\n    data.seek(0)\n    sql = (\n        f\"copy {table}(station, valid, tmpf, dwpf, drct, sknt) from stdin \"\n        \"with (delimiter E'\\\\t', null 'null')\"\n    )\n    with cursor.copy(sql) as copy:\n        copy.write(data.read())\n    cursor.close()\n    pgconn.commit()\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", required=True, type=click.DateTime())\ndef main(dt: datetime):\n    \"\"\"Go Main Go\"\"\"\n    do(dt.date())\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/hads/sync_idpgis.py",
    "content": "\"\"\"See what metadata IDPGIS has to offer.\n\nRun daily from RUN_2AM.sh\n\"\"\"\n\nimport os\nimport subprocess\n\nimport httpx\nfrom pyiem.database import get_dbconn\nfrom pyiem.reference import nwsli2state\nfrom pyiem.util import logger\n\nLOG = logger()\nSERVICE = (\n    \"https://mapservices.weather.noaa.gov/eventdriven/rest/services/water/\"\n    \"ahps_riv_gauges/MapServer/0/query?where=1%3D1&\"\n    \"geometryType=esriGeometryPoint&\"\n    \"outFields=PEDTS%2CGaugeLID%2CLocation%2CState&returnGeometry=true&f=json\"\n)\n\n\ndef get_current(dbconn):\n    \"\"\"Get what we have.\"\"\"\n    current = {}\n    cursor = dbconn.cursor()\n    cursor.execute(\n        \"SELECT id, s.iemid, value from \"\n        \"stations s LEFT JOIN station_attributes a \"\n        \"on (s.iemid = a.iemid and a.attr = 'PEDTS') \"\n        \"WHERE s.network ~* 'DCP'\"\n    )\n    for row in cursor:\n        current[row[0]] = {\"pedts\": row[2], \"iemid\": row[1]}\n    cursor.close()\n    return current\n\n\ndef get_idp() -> dict:\n    \"\"\"See what AHPS has.\"\"\"\n    LOG.info(\"Fetching %s\", SERVICE)\n    req = httpx.get(SERVICE, timeout=60)\n    if req.status_code != 200:\n        LOG.info(\"Got %s fetching %s\", req.status_code, SERVICE)\n        return {}\n    jobj = req.json()\n    idp = {}\n    for feat in jobj.get(\"features\", []):\n        attrs = feat[\"attributes\"]\n        attrs[\"lon\"] = feat[\"geometry\"][\"x\"]\n        attrs[\"lat\"] = feat[\"geometry\"][\"y\"]\n        idp[attrs[\"gaugelid\"]] = attrs\n    return idp\n\n\ndef add_station(dbconn, nwsli, attrs):\n    \"\"\"Add the station.\"\"\"\n    if len(nwsli) != 5 or nwsli2state.get(nwsli[-2:]) != attrs[\"state\"]:\n        LOG.info(\"Skipping %s as un-rectified metadata\", nwsli)\n        return None\n    cursor = dbconn.cursor()\n    cursor.execute(\n        \"INSERT into stations(id, name, plot_name, state, country, geom, \"\n        \"network, online, metasite) VALUES \"\n        \"(%s, %s, %s, %s, 'US', ST_POINT(%s, %s, 4326), \"\n        \"%s, %s, %s) RETURNING iemid\",\n        (\n            nwsli,\n            attrs[\"location\"],\n            attrs[\"location\"],\n            attrs[\"state\"],\n            attrs[\"lon\"],\n            attrs[\"lat\"],\n            f\"{attrs['state']}_DCP\",\n            True,\n            False,\n        ),\n    )\n    iemid = cursor.fetchone()[0]\n    cursor.close()\n    dbconn.commit()\n    return iemid\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    idp = get_idp()\n    added = 0\n    with get_dbconn(\"mesosite\") as dbconn:\n        current = get_current(dbconn)\n        for nwsli, attrs in idp.items():\n            if nwsli not in current:\n                iemid = add_station(dbconn, nwsli, attrs)\n                if iemid is None:\n                    continue\n                added += 1\n                LOG.warning(\"Adding station %s[%s]\", nwsli, iemid)\n                current[nwsli] = {\"pedts\": \"\", \"iemid\": iemid}\n            currentval = current[nwsli][\"pedts\"]\n            if attrs[\"pedts\"] is None or attrs[\"pedts\"] == \"N/A\":\n                continue\n            if currentval == attrs[\"pedts\"]:\n                continue\n            cursor = dbconn.cursor()\n            if currentval is None:\n                cursor.execute(\n                    \"INSERT into station_attributes(iemid, attr, value) \"\n                    \"VALUES (%s, %s, %s)\",\n                    (current[nwsli][\"iemid\"], \"PEDTS\", attrs[\"pedts\"]),\n                )\n            else:\n                cursor.execute(\n                    \"UPDATE station_attributes SET value = %s WHERE \"\n                    \"iemid = %s and attr = 'PEDTS'\",\n                    (attrs[\"pedts\"], current[nwsli][\"iemid\"]),\n                )\n            LOG.info(\"%s PEDTS %s -> %s\", nwsli, currentval, attrs[\"pedts\"])\n            cursor.close()\n            dbconn.commit()\n\n    if added > 0:\n        LOG.warning(\"Added %s stations, syncing stations table\", added)\n        os.chdir(\"/opt/iem/scripts/dbutil\")\n        subprocess.call([\"sh\", \"SYNC_STATIONS.sh\"])\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/hrrr/dl_hrrrref.py",
    "content": "\"\"\"Download and archive 1km reflectivity from the NCEP HRRR.\n\nThis **replaces** the presently downloaded file.\n\nRun from hrrr_jobs.py\n\"\"\"\n\nimport os\nimport subprocess\nimport sys\nimport tempfile\nimport time\nfrom datetime import datetime, timezone\n\nimport click\nimport httpx\nimport pygrib\nfrom pyiem.util import archive_fetch, exponential_backoff, logger, utc\n\nAWS = \"https://noaa-hrrr-bdp-pds.s3.amazonaws.com/\"\nLOG = logger()\n# HRRR model hours available\nHOURS = [18] * 24\nfor _hr in range(0, 24, 6):\n    HOURS[_hr] = 48\n\n\ndef is_archive_complete(valid: datetime):\n    \"\"\"Ensure we have the right file and is the right size.\"\"\"\n    # 15 minute data out 18 hours (ref + 4 ptype fields)\n    answer = 18 * 4 * 5\n    # Extended hours, when possible, have hourly data\n    answer += (HOURS[valid.hour] - 18) * 5\n    # The first timestamp\n    answer += 5\n    ppath = valid.strftime(\"%Y/%m/%d/model/hrrr/%H/hrrr.t%Hz.refd.grib2\")\n    with archive_fetch(ppath) as gribfn:\n        if gribfn is None:\n            return False\n        # See how many grib messages we have\n        try:\n            with pygrib.open(gribfn) as grbs:\n                LOG.info(\n                    \"Found %s messages for %s, want %s\",\n                    grbs.messages,\n                    ppath,\n                    answer,\n                )\n                return grbs.messages == answer\n        except Exception as exp:\n            LOG.debug(exp)\n    LOG.warning(\"Archive file %s is corrupt? Aborting...\", ppath)\n    sys.exit(1)\n\n\ndef wait_for_upstream(valid: datetime) -> None:\n    \"\"\"Wait for upstream availability.\"\"\"\n    lasthour = HOURS[valid.hour]\n    if lasthour == 18:\n        uri = valid.strftime(\n            f\"{AWS}hrrr.%Y%m%d/conus/hrrr.t%Hz.wrfsubhf{lasthour}.grib2.idx\"\n        )\n    else:\n        uri = valid.strftime(\n            f\"{AWS}hrrr.%Y%m%d/conus/hrrr.t%Hz.wrfsfcf{lasthour}.grib2.idx\"\n        )\n    # Wait for at most 45 minutes for the upstream to be available\n    for _ in range(45):\n        try:\n            resp = httpx.get(uri, timeout=30)\n            resp.raise_for_status()\n            if resp.status_code == 200:\n                return\n        except Exception as exp:\n            LOG.info(\"Failed to fetch %s: %s, waiting 60s\", uri, exp)\n        time.sleep(60)\n    # Cloud availability is noisy, so reduce some emails by not complaining\n    # about near realtime failures\n    archived = (utc() - valid).total_seconds() > 43200\n    lglvl = LOG.warning if archived else LOG.info\n    lglvl(\"Failed to find upstream file %s, aborting\", uri)\n    sys.exit(1)\n\n\ndef run(tmpfp: tempfile._TemporaryFileWrapper, valid: datetime):\n    \"\"\"run for this valid time!\"\"\"\n    for hr in range(HOURS[valid.hour] + 1):\n        shr = f\"{hr:02.0f}\"\n        if hr <= 18:\n            uri = valid.strftime(\n                f\"{AWS}hrrr.%Y%m%d/conus/hrrr.t%Hz.wrfsubhf{shr}.grib2.idx\"\n            )\n        else:\n            uri = valid.strftime(\n                f\"{AWS}hrrr.%Y%m%d/conus/hrrr.t%Hz.wrfsfcf{shr}.grib2.idx\"\n            )\n        LOG.info(uri)\n        req = exponential_backoff(httpx.get, uri, timeout=30)\n        if req is None or req.status_code != 200:\n            LOG.info(\"failed to fetch %s\", uri)\n            if hr > 18:\n                continue\n            LOG.info(\"ABORT\")\n            return\n        data = req.text\n\n        offsets = []\n        neednext = False\n        for line in data.split(\"\\n\"):\n            if line.strip() == \"\":\n                continue\n            tokens = line.split(\":\")\n            if neednext:\n                offsets[-1].append(int(tokens[1]))\n                neednext = False\n            if tokens[3] not in [\"REFD\", \"CSNOW\", \"CICEP\", \"CFRZR\", \"CRAIN\"]:\n                continue\n            if tokens[3] == \"REFD\" and tokens[4] != \"1000 m above ground\":\n                continue\n            offsets.append([int(tokens[1])])\n            neednext = True\n\n        answer = 20 if (0 < hr < 19) else 5\n        if len(offsets) != answer:\n            LOG.warning(\n                \"[%s] hr: %s offsets: %s wanted: %s\",\n                valid.strftime(\"%Y%m%d%H\"),\n                hr,\n                offsets,\n                answer,\n            )\n        for pr in offsets:\n            headers = {\"Range\": f\"bytes={pr[0]}-{pr[1]}\"}\n            req = exponential_backoff(\n                httpx.get,\n                uri[:-4],\n                headers=headers,\n                timeout=30,\n            )\n            if req is None:\n                LOG.info(\"FAIL %s %s\", uri[:-4], headers)\n                continue\n            tmpfp.write(req.content)\n\n    tmpfp.close()\n    # insert into LDM Please\n    pqstr = (\n        f\"data a {valid:%Y%m%d%H%M} bogus model/hrrr/{valid.hour:02.0f}/\"\n        f\"hrrr.t{valid.hour:02.0f}z.refd.grib2 grib2\"\n    )\n    with subprocess.Popen(\n        [\"pqinsert\", \"-p\", pqstr, tmpfp.name],\n        stderr=subprocess.PIPE,\n        stdout=subprocess.PIPE,\n    ) as proc:\n        stdout, stderr = proc.communicate()\n        if proc.returncode != 0:\n            LOG.info(\"pqinsert failed: %s %s\", stdout, stderr)\n            sys.exit(1)\n    os.unlink(tmpfp.name)\n\n\n@click.command(\n    context_settings={\"ignore_unknown_options\": True, \"allow_extra_args\": True}\n)\n@click.option(\"--valid\", type=click.DateTime(), required=True)\n@click.option(\n    \"--skip-recheck\",\n    \"skiprecheck\",\n    is_flag=True,\n    help=\"Skip recheck of archive\",\n)\ndef main(valid: datetime, skiprecheck: bool):\n    \"\"\"Go Main Go\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    if is_archive_complete(valid):\n        return\n    wait_for_upstream(valid)\n    with tempfile.NamedTemporaryFile(\"wb\", delete=False) as tmpfp:\n        run(tmpfp, valid)\n    if skiprecheck:\n        return\n    # We are waiting for the archive file to be in place, so that we can\n    # proceed with the next steps from hrrr_jobs.py\n    for _ in range(10):\n        time.sleep(60)\n        if is_archive_complete(valid):\n            return\n        LOG.info(\"Waiting 60s for archive file to be complete\")\n    LOG.warning(\"Failed to find archive file for %s, aborting\", valid)\n    sys.exit(1)\n\n\nif __name__ == \"__main__\":\n    # do main\n    main()\n"
  },
  {
    "path": "scripts/hrrr/hrrr_jobs.py",
    "content": "\"\"\"HRRR Reflectivity Jobs.\n\nRUN from RUN_HRRR_REF.sh for previous hour and six hours ago\n\"\"\"\n\nimport subprocess\nfrom datetime import datetime\n\nimport click\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), required=True)\n@click.option(\"--is-realtime\", \"rt\", is_flag=True)\ndef main(valid: datetime, rt: bool):\n    \"\"\"Stuff\"\"\"\n    tstring = f\"--valid={valid:%Y-%m-%dT%H:%M:%S}\"\n    for py in [\"dl_hrrrref.py\", \"plot_ref.py\", \"hrrr_ref2raster.py\"]:\n        cmd = [\"python\", py, tstring]\n        if rt:\n            cmd.append(\"--is-realtime\")\n        subprocess.call(cmd)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/hrrr/hrrr_ref2raster.py",
    "content": "\"\"\"Convert HRRR Grib Reflectivity to RASTERS matching ramp used with N0Q\"\"\"\n\nimport json\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timezone\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport numpy as np\nimport pandas as pd\nimport pyproj\nimport xarray as xr\nfrom affine import Affine\nfrom matplotlib.colors import hex2color\nfrom PIL import Image\nfrom pyiem.plot.colormaps import radar_ptype\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import archive_fetch, logger\nfrom rasterio.warp import reproject\n\nLOG = logger()\nwith open(\"/mesonet/ldmdata/gis/images/4326/USCOMP/n0q_0.png\", \"rb\") as fh:\n    PALETTE = Image.open(fh).getpalette()\n\n\ndef do_step(\n    ds: xr.Dataset,\n    step: int,\n    toffset: np.timedelta64,\n    routes: str,\n    ptype: bool,\n):\n    \"\"\"Process the timestep.\"\"\"\n    valid = (\n        pd.Timestamp(ds.time.values)\n        .to_pydatetime()\n        .replace(tzinfo=ZoneInfo(\"UTC\"))\n    )\n    fxvalid = (\n        pd.Timestamp(ds.time.values + toffset)\n        .to_pydatetime()\n        .replace(tzinfo=ZoneInfo(\"UTC\"))\n    )\n    fxminutes = toffset / np.timedelta64(1, \"m\")\n    LOG.info(\"Processing %s %s %s\", valid, fxvalid, fxminutes)\n\n    if ptype:\n        raw = np.ma.masked_where(ds.refd[step] < 5, ds.refd[step])\n        # Cap values at 55 dBz and we can't have 55 either\n        raw = np.ma.where(raw > 54.9, 54.9, raw)\n        label = \"refp\"\n    else:\n        raw = ds.refd[step]\n        label = \"refd\"\n    pstep = max(step, 1)\n\n    pngtemp = tempfile.NamedTemporaryFile(suffix=\".png\")\n    projparams = {\n        \"proj\": \"lcc\",\n        \"lat_1\": ds.refd.GRIB_Latin1InDegrees,\n        \"lat_2\": ds.refd.GRIB_Latin2InDegrees,\n        \"lat_0\": ds.refd.GRIB_LaDInDegrees,\n        \"lon_0\": ds.refd.GRIB_LoVInDegrees,\n    }\n    lat1 = ds.refd.GRIB_latitudeOfFirstGridPointInDegrees\n    lon1 = ds.refd.GRIB_longitudeOfFirstGridPointInDegrees\n    llx, lly = pyproj.Proj(projparams)(lon1, lat1)\n    # This is the edge and not the corner\n    hrrr_aff = Affine(\n        ds.refd.GRIB_DxInMetres,\n        0.0,\n        llx - ds.refd.GRIB_DxInMetres / 2.0,\n        0.0,\n        ds.refd.GRIB_DyInMetres,\n        lly + ds.refd.GRIB_DyInMetres / 2.0,\n    )\n    # This defines the grid edge, so we need to adjust for the center\n    dest_aff = Affine(0.02, 0.0, -126.01, 0.0, -0.02, 50.01)\n    if ptype:\n        refidx = np.zeros(raw.shape)\n        color_ramps = radar_ptype()\n        colors = [\"#000000\"]\n        color_index_start = 1\n        for typ in [\"rain\", \"snow\", \"frzr\", \"icep\"]:\n            colors.extend(color_ramps[typ])\n            # Each ramp colors from 0 to 55 by 2.5 dbz\n            refidx = np.ma.where(\n                ds[f\"c{typ}\"][pstep] > 0.01,\n                raw / 2.5 + color_index_start,\n                refidx,\n            )\n            color_index_start += len(color_ramps[typ])\n        raw = refidx\n    refd = np.zeros((1340, 3050))\n    reproject(\n        raw,\n        refd,\n        src_transform=hrrr_aff,\n        src_crs=projparams,\n        dst_transform=dest_aff,\n        dst_crs=\"EPSG:4326\",\n        dst_nodata=-99,\n    )\n    if not ptype:\n        # anything -10 or lower is zero\n        refd = np.where(refd < -9, -99, refd)\n        # rasterize from index 1 as -32 by 0.5\n        raster = (refd + 32.0) * 2.0 + 1\n        raster = np.where(\n            np.logical_or(raster < 1, raster > 255), 0, raster\n        ).astype(np.uint8)\n        palette = PALETTE\n    else:\n        raster = refd.astype(np.uint8)\n        palette = []\n        for c in colors:\n            (r, g, b) = hex2color(c)\n            palette.extend([int(r * 255), int(g * 255), int(b * 255)])\n    png = Image.fromarray(raster)\n    png.putpalette(palette)\n    png.save(pngtemp)\n    cmd = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        (\n            f\"plot {routes} {valid:%Y%m%d%H%M} gis/images/4326/hrrr/\"\n            f\"{label}_{fxminutes:04.0f}.png GIS/hrrr/{valid:%H}/\"\n            f\"{label}_{fxminutes:04.0f}.png png\"\n        ),\n        pngtemp.name,\n    ]\n    subprocess.call(cmd)\n    # This defines the center of the upper left pixel, so it jives with above\n    with tempfile.NamedTemporaryFile(delete=False, mode=\"w\") as wldtmp:\n        wldtmp.write(\"0.02\\n0.0\\n0.0\\n-0.02\\n-126.0\\n50.0\")\n    cmd = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        (\n            f\"plot {routes} {valid:%Y%m%d%H%M} gis/images/4326/hrrr/\"\n            f\"{label}_{fxminutes:04.0f}.wld GIS/hrrr/{valid:%H}/\"\n            f\"{label}_{fxminutes:04.0f}.wld wld\"\n        ),\n        wldtmp.name,\n    ]\n    subprocess.call(cmd)\n    # Do json metadata\n    jdict = {\n        \"model_init_utc\": valid.strftime(ISO8601),\n        \"forecast_minute\": fxminutes,\n        \"model_forecast_utc\": fxvalid.strftime(ISO8601),\n    }\n    with tempfile.NamedTemporaryFile(delete=False, mode=\"w\") as jsontmp:\n        json.dump(jdict, jsontmp)\n    # No need to archive this JSON file, it provides nothing new\n    cmd = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        (\n            f\"plot c {valid:%Y%m%d%H%M} gis/images/4326/hrrr/\"\n            f\"{label}_{fxminutes:04.0f}.json bogus json\"\n        ),\n        jsontmp.name,\n    ]\n    if routes == \"ac\":\n        subprocess.call(cmd)\n    os.unlink(wldtmp.name)\n    os.unlink(jsontmp.name)\n\n\ndef workflow(valid: datetime, routes: str):\n    \"\"\"Process this time's data\"\"\"\n    ppath = valid.strftime(\"%Y/%m/%d/model/hrrr/%H/hrrr.t%Hz.refd.grib2\")\n    with archive_fetch(ppath) as fn:\n        if fn is None:\n            LOG.warning(\"missing %s\", ppath)\n            return\n        # prevent idx file creation\n        ds = xr.open_dataset(\n            fn, decode_timedelta=True, backend_kwargs={\"indexpath\": \"\"}\n        )\n        for step, toffset in enumerate(ds.step.values):\n            do_step(ds, step, toffset, routes, False)\n            do_step(ds, step, toffset, routes, True)\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), required=True)\n@click.option(\"--is-realtime\", \"rt\", is_flag=True)\n@click.option(\"--force\", default=False, is_flag=True)\ndef main(valid: datetime, rt: bool, force: bool):\n    \"\"\"So Something great\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    LOG.info(\"valid: %s realtime: %s\", valid, rt)\n    routes = \"ac\" if rt else \"a\"\n    # See if we already have output\n    ppath = valid.strftime(\"%Y/%m/%d/GIS/hrrr/%H/refd_0000.png\")\n    with archive_fetch(ppath) as fn:\n        if fn is not None and not force:\n            return\n    workflow(valid, routes)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/hrrr/plot_ref.py",
    "content": "\"\"\"\nGenerate an animated GIF of HRRR forecasted 1km reflectivity\n\nRun from hrrr_jobs.py\n\"\"\"\n\nimport glob\nimport subprocess\nimport tempfile\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport matplotlib.colors as mpcolors\nimport numpy as np\nimport pandas as pd\nimport xarray as xr\nfrom pyiem.plot import MapPlot, ramp2df\nfrom pyiem.plot.colormaps import radar_ptype\nfrom pyiem.reference import Z_FILL\nfrom pyiem.util import archive_fetch, logger\n\nLOG = logger()\nHOURS = [18] * 24\nfor _hr in range(0, 24, 6):\n    HOURS[_hr] = 48\n\n\ndef run(tmpdir, valid, routes):\n    \"\"\"Generate the plot for the given UTC time\"\"\"\n    lats = None\n    lons = None\n    frame = 0\n    rampdf = ramp2df(\"composite_n0q\")\n    cmap = mpcolors.ListedColormap(rampdf[[\"r\", \"g\", \"b\"]].to_numpy() / 256)\n    cmap.set_under(\"white\")\n\n    colors = radar_ptype()\n    norm = mpcolors.BoundaryNorm(np.arange(0, 56, 2.5), len(colors[\"rain\"]))\n    ppath = valid.strftime(\"%Y/%m/%d/model/hrrr/%H/hrrr.t%Hz.refd.grib2\")\n    with archive_fetch(ppath) as fn:\n        if fn is None:\n            LOG.warning(\"missing %s, aborting GIF generation\", fn)\n            return\n        # prevent idx file creation\n        ds = xr.open_dataset(\n            fn, decode_timedelta=True, backend_kwargs={\"indexpath\": \"\"}\n        )\n\n        for step, toffset in enumerate(ds.step.values):\n            now = (\n                pd.Timestamp(ds.time.values + toffset)\n                .to_pydatetime()\n                .replace(tzinfo=ZoneInfo(\"UTC\"))\n                .astimezone(ZoneInfo(\"America/Chicago\"))\n            )\n            if lats is None:\n                lats = ds.latitude.values\n                lons = ds.longitude.values\n            mp = MapPlot(\n                sector=\"midwest\",\n                axisbg=\"tan\",\n                title=(\n                    f\"{valid:%-d %b %Y %H} UTC NCEP HRRR 1 km AGL Reflectivity\"\n                ),\n                subtitle=f\"valid: {now:%-d %b %Y %I:%M %p %Z}\",\n            )\n            refd = np.ma.masked_where(ds.refd[step] < 5, ds.refd[step])\n            LOG.info(\"Plotting %s with max: %s\", now, np.ma.max(refd))\n            # ptype is all missing at step 0\n            pstep = max(step, 1)\n            for typ in [\"rain\", \"snow\", \"frzr\", \"icep\"]:\n                cmap = mpcolors.ListedColormap(colors[typ])\n                ref = np.ma.masked_where(ds[f\"c{typ}\"][pstep] < 0.01, refd)\n                mp.panels[0].pcolormesh(\n                    lons,\n                    lats,\n                    ref[:-1, :-1],  # hack around pcolormesh grid size demands\n                    norm=norm,\n                    cmap=cmap,\n                    zorder=Z_FILL,\n                )\n            mp.draw_radar_ptype_legend()\n            pngfn = f\"{tmpdir}/hrrr_ref_{frame:03.0f}.png\"\n            mp.postprocess(filename=pngfn)\n            mp.close()\n            subprocess.call([\"magick\", pngfn, f\"{pngfn[:-4]}.gif\"])\n\n            frame += 1\n\n    # Generate anim GIF\n    gifs = glob.glob(f\"{tmpdir}/hrrr_ref_???.gif\")\n    gifs.sort()\n    subprocess.call(\n        [\n            \"gifsicle\",\n            \"--loopcount=0\",\n            \"--delay=50\",\n            \"-o\",\n            f\"{tmpdir}/hrrr_ref.gif\",\n            *gifs,\n        ],\n        stderr=subprocess.PIPE,\n        stdout=subprocess.PIPE,\n    )\n\n    pqstr = (\n        f\"plot {routes} {valid:%Y%m%d%H%M} model/hrrr/hrrr_1km_ref.gif \"\n        f\"model/hrrr/hrrr_1km_ref_{valid.hour:02.0f}.gif gif\"\n    )\n    subprocess.call(\n        [\"pqinsert\", \"-p\", pqstr, f\"{tmpdir}/hrrr_ref.gif\"],\n        stderr=subprocess.PIPE,\n        stdout=subprocess.PIPE,\n    )\n\n\n@click.command()\n@click.option(\"--valid\", required=True, type=click.DateTime())\n@click.option(\"--is-realtime\", default=False, is_flag=True)\n@click.option(\"--force\", default=False, is_flag=True)\ndef main(valid, is_realtime, force: bool):\n    \"\"\"Go Main\"\"\"\n    valid = valid.replace(tzinfo=ZoneInfo(\"UTC\"))\n    routes = \"ac\" if is_realtime else \"a\"\n    LOG.info(\"valid: %s routes: %s\", valid, routes)\n\n    # See if we already have output\n    fn = valid.strftime(\"%Y/%m/%d/model/hrrr/hrrr_1km_ref_%H.gif\")\n    with archive_fetch(fn) as res:\n        if res is None or force:\n            LOG.info(\"archive GIF missing %s, running\", fn)\n            with tempfile.TemporaryDirectory() as tmpdir:\n                run(tmpdir, valid, routes)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemplot/IAMESONET_plot.csh",
    "content": "#!/bin/csh\n#\t\tIAMESONET_plot.csh\n# Finally, the script that plots all of this good data\n# Daryl Herzmann 10 November 2000\n# 19 Jun 2001:  Modified for use on the new mesonet box\n#\t\tChanged Smoothing of Pressure Field\n# 02 Jul 2001:  Now we only have 1 GEMPAK file, yeah!\n# 30 Jul 2001:\tLets Archive this plot, Eh?\n# 31 Oct 2001:\tUse 25x25 grid for Surface Contour\n# 09 Nov 2001:\tPlot ALTM instead of PMSL and use 50x50 grid\n# 25 Feb 2002:\tPlace nicer timestamp on Plot\n# 17 Feb 2003:\tUse new GIF driver\n# 23 Mar 2004\tLets filter more obs\n####################################################\n\nsource /mesonet/nawips/Gemenviron\n\nsetenv GEMCOLTBL coltbl.xwp\nsetenv DISPLAY localhost:1\n\nset yy=`date -u --date '1 minute' +'%y'`\nset mm=`date -u --date '1 minute' +'%m'`\nset dd=`date -u --date '1 minute' +'%d'`\nset date=${yy}${mm}${dd}\nset hh=`date -u --date '1 minute' +'%H'`\nset timestamp=`date -u --date '1 minute' +'%Y%m%d%H00'`\n\nset nicetime=`date -d \"20${1}-${2}-${3} ${4}:00\" +\"%b %d %I %p\"`\nset generated=`date +\"%b %d %I:%M %p\"`\nrm mesonet.gif* >& /dev/null\n\nset DEVICE=\"GIF|mesonet.gif|900;700\"\nset AREA=\"40.15;-97.1;43.85;-89.9\"\n\n# Now we plot\nsfmap << EOF > /dev/null\n\tAREA    = ${AREA}\n\tGAREA    = ${AREA}\n \tSATFIL   =  \n\tRADFIL   =  \n\tSFPARM   =  skyc:.6;tmpf<120;wsym:1.2:2;alti;;dwpf<120;;;;brbk:1:1:231\n\tCOLORS   =  32;2;32;0;4;32\n \tDATTIM   =  ${date}/${hh}\n \tSFFILE   =  /mesonet/data/gempak/meso/${date}_meso.gem\n \tLATLON   =  0\n        TITLE    =  32/-1/GMT: ~ Generated: $generated IEM Plot\n        CLEAR    =  yes\n        PANEL    =  0\n        DEVICE   = ${DEVICE}\n        PROJ     =  LCC\n        FILTER   =  .5\n        TEXT     =  1/1//hw\n        LUTFIL   =\n        STNPLT   =\n\tMAP\t= 25 + 25//2\n\t\\$MAPFIL = HICNUS.NWS + hipowo.cia\n\tlist\n\trun\n\n\texit\nEOF\n\n\ngdcntr << EOF > /tmp/IAMESONETplot_gdcntr.out\n\tGAREA    = ${AREA}\n\tGDATTIM  = ${date}/${hh}00F001\n\tGLEVEL   = 0\n\tGVCORD   = NONE\n\tGFUNC    = SM9S(MMSL)\n\tGDFILE   = /mesonet/data/iemplot/grid_25_25.grd\n\tCINT     = 1\n\tLINE     = 4\n\tMAP      = 0\n\tTEXT     = 1\n\tDEVICE   = ${DEVICE}\n\tSATFIL   =  \n\tRADFIL   =  \n\tPROJ     = LCC\n\tCLEAR    = no\n\tPANEL\t= 0\n\tTITLE\t= 32/-2/LOCAL: ${nicetime}\n\tSCALE    = 0\n\tLATLON   = 0\n\tHILO     =  \n\tHLSYM    =  \n\tCLRBAR   = 1\n\tCONTUR   = 3/3\n\tSKIP     = 0\n\tFINT     = 0\n\tFLINE    = 10-20\n\tCTYPE    = C\n\tLUTFIL   =  \n\tSTNPLT   =  \n\tlist\n\trun\n\n\texit\nEOF\n\ngpend\n\nif (-e mesonet.gif) then\n\tpqinsert -p \"plot ac ${timestamp} mesonet.gif mesonet_${hh}00.gif gif\" mesonet.gif\n\trm -f mesonet.gif\nendif\n"
  },
  {
    "path": "scripts/iemplot/RUN.csh",
    "content": "#!/bin/csh\n#set echo\n# We want one minute into the future!\nset yy=`date --date '1 minute' +%y`\nset mm=`date --date '1 minute' +%m`\nset dd=`date --date '1 minute' +%d`\nset hh=`date --date '1 minute' +%H`\n\ncsh oa.csh $yy $mm $dd $hh\ncsh IAMESONET_plot.csh $yy $mm $dd $hh\ncsh pres_plot.csh $yy $mm $dd $hh\n"
  },
  {
    "path": "scripts/iemplot/coltbl.xwp",
    "content": "! COLTBL.XWP\n!\n! Default XWP and XW color table \n!\n!Color name    Abrev   Red  Green   Blue  X color name\nWHITE           WHI    255    255    255  white\nVANILLA         VAN    255    228    220  bisque1\nRED             RED    255      0      0  red\nGREEN           GRE      0    255      0  green\nBLUE            BLU      0      0    255  blue\nYELLOW          YEL    255    255      0  yellow\nCYAN            CYA      0    255    255  cyan\nMAGENTA         MAG    255      0    255  magenta\nBROWN           BRO    139     71     38  sienna3\nCORAL           COR    255    130     71  sienna1\nAPRICOT         APR    255    165     79  tan1\nPINK            PIN    255    174    185  LightPink1\nDKPINK          DKP    255    106    106  IndianRed1\nMDVIOLET        MDV    238     44     44  firebrick2\nMAROON          MAR    139      0      0  red4\nFIREBRIC        FIR    205      0      0  red3\nORRED           ORR    238     64      0  OrangeRed2\nORANGE          ORA    255    127      0  DarkOrange1\nDKORANGE        DKO    205    133      0  orange3\nGOLD            GOL    255    215      0  gold1\nDKYELLOW        DKY    238    238      0  yellow2\nLWNGREEN        LWN    127    255      0  chartreuse1\nMDGREEN         MDG      0    205      0  green3\nDKGREEN         DKG      0    139      0  green4\nGRPBLUE         GRP     16     78    139  DodgerBlue4\nLTBLUE          LTB    190    190    190  DodgerBlue1\nSKY             SKY      0    178    238  DeepSkyBlue2\nMDCYAN          MDC      0    238    238  cyan2\nVIOLET          VIO    137    104    205  MediumPurple3\nPURPLE          PUR    145     44    238  purple2\nPLUM            PLU    139      0    139  magenta4\nWHITE           WHI    255    255    255  white\nBLACK           BLA      0      0      0  black\n"
  },
  {
    "path": "scripts/iemplot/dump_altm.py",
    "content": "\"\"\"Dumping altimeter data so that GEMPAK can analyze it.\"\"\"\n\nimport pandas as pd\nfrom metpy.units import units\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.util import utc\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    ts = utc().strftime(\"%y%m%d/%H00\")\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            SELECT t.id, alti from current c JOIN stations t on\n            (t.iemid = c.iemid)\n            WHERE alti > 0 and valid > (now() - '60 minutes'::interval)\n            and t.state in ('IA','MO','IL','WI','IN','OH','KY','MI','SD','ND',\n            'NE', 'KS') and network ~* 'ASOS'\n        \"\"\",\n            conn,\n            index_col=\"id\",\n        )\n    df[\"altm\"] = (df[\"alti\"].values * units(\"inHg\")).to(units(\"hPa\")).m\n\n    with open(\"/mesonet/data/iemplot/altm.txt\", \"w\") as fh:\n        fh.write(\" PARM = ALTM\\n\\n    STN    YYMMDD/HHMM      ALTM\\n\")\n\n        fh.writelines(\n            f\"   {sid:4s}    {ts}  {row['altm']:8.2f}\\n\"\n            for sid, row in df.iterrows()\n        )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemplot/oa.csh",
    "content": "#!/bin/csh\n# 16 Jun 2003\tGeorge is getting upset, use local surface file so we can\n#\t\tQC by hand\n#  5 Jul 2003\tUse the new grid generated by kcci.mesonet\n#  7 Jul 2004\tUse RUC252 grid\n\nsource /mesonet/nawips/Gemenviron\n\n\nset yy=`date -u --date '1 minute' +'%y'`\nset mm=`date -u --date '1 minute' +'%m'`\nset dd=`date -u --date '1 minute' +'%d'`\nset hh=`date -u --date '1 minute' +'%H'`\nset yymmdd=\"$yy$mm$dd\"\nset yyyymmddhh_1h=\"`date -u --date '1 hour ago' +'%Y%m%d%H'`\"\nset gtime=\"`date -u --date '1 hour ago' +'%y%m%d/%H00'`\"\n\nif (! -e /mesonet/data/iemplot/grid_25_25.grd) then\n\techo \"Missing grid_25_25.grd, copying template over...\"\n\tcp templates/grid_25_25.grd /mesonet/data/iemplot/\nendif\n\nif (! -e /mesonet/data/iemplot/surface.gem) then\n\techo \"Missing surface.gem, copying template over...\"\n\tcp templates/surface.gem /mesonet/data/iemplot/\nendif\n\n\ngddelt << EOF > /tmp/oa_gddelt.out\nGDFILE = /mesonet/data/iemplot/grid_25_25.grd\n GDATTIM = ALL\n GLEVEL = ALL\n GVCORD = ALL\n GFUNC = ALL\n list\n run\n\n\n\n\nexit\nEOF\n\nset gdfile=\"/mesonet/data/gempak/model/rap/${yyyymmddhh_1h}_rap252.gem\"\nif (! -e ${gdfile}) then\nset gdfile=\"/mesonet/data/gempak/model/rap/${yyyymmddhh_1h}_rap130.gem\"\nendif\n\ngdbiint << EOF > /tmp/oa_gdbiint.out\n GDFILE   = $gdfile\nGDOUTF   = /mesonet/data/iemplot/grid_oa.grd\n GFUNC    = MUL(0.01,MSLMA)\n GLEVEL   = 0\n GVCORD   = NONE\n GDATTIM  = F001\n GDNUM    = \n list\n run\n\nexit\nEOF\n\ngddiag << EOF > /tmp/oa_gddiag.out\n GDFILE = /mesonet/data/iemplot/grid_oa.grd\n GDOUTF = /mesonet/data/iemplot/grid_oa.grd\n GFUNC  = MMSL\n GDATTIM = F001\n GLEVEL  = 0\n GVCORD = NONE\n GRDNAM = ALTM\n GPACK =\n list\n run\n\nexit\nEOF\n\nsfdelt << EOF > /tmp/oa_sfdelt.out\n SFFILE = /mesonet/data/iemplot/surface.gem\n DATTIM = ALL\n AREA   = DSET\n list\n run\n\nexit\nEOF\n\npython dump_altm.py\n\nsfedit << EOF > /tmp/oa_sfedit.out\nSFEFIL   = /mesonet/data/iemplot/altm.txt\n SFFILE   = /mesonet/data/iemplot/surface.gem\n list\n run\n\nexit\nEOF\n\noabsfc << EOF > /tmp/oa_oabsfc.out\n SFFILE = /mesonet/data/iemplot/surface.gem\n GDFILE   = /mesonet/data/iemplot/grid_25_25.grd\n SFPARM   = ALTM\n DATTIM   = /${hh}\n DTAAREA  = ia\n GUESS    =\n GUESFUN = \n GAMMA    = .3\n SEARCH   = 10/EX\n NPASS    = 2\n QCNTL    = 3\n list\n run\n\nexit\nEOF\n\ngpend\n"
  },
  {
    "path": "scripts/iemplot/pres_plot.csh",
    "content": "#!/bin/csh\n#####################################################\n\nsource /mesonet/nawips/Gemenviron\n\nsetenv GEMCOLTBL coltbl.xwp\nsetenv DISPLAY localhost:1\n\nset yy=`date -u --date '1 minute' +'%y'`\nset mm=`date -u --date '1 minute' +'%m'`\nset dd=`date -u --date '1 minute' +'%d'`\nset hh=`date -u --date '1 minute' +'%H'`\nset date=${yy}${mm}${dd}\nset timestamp=`date -u --date '1 minute' +'%Y%m%d%H00'`\n\nset nicetime=`date -d \"20${1}-${2}-${3} ${4}:00\" +\"%b %d %I %p\"`\n\nrm mesonet_altm.gif* >& /dev/null\n\nset DEVICE=\"GIF|mesonet_altm.gif|900;700\"\nset AREA=\"40.15;-97.1;43.85;-89.9\"\n#set AREA=\"38.15;-99.1;45.85;-87.9\"\n\n# Now we plot\nsfmap << EOF > /tmp/pres_plot_sfmap.out\n\tAREA    = ${AREA}\n\tGAREA    = ${AREA}\n \tSATFIL   =  \n\tRADFIL   =  \n\tSFPARM   =  STID;;;altm>100;;;;;;;brbk:1:1:231\n\tCOLORS   =  2;32\n \tDATTIM   =  ${date}/${hh}\n \tSFFILE   =  /mesonet/data/gempak/meso/${date}_meso.gem\n \tLATLON   =  0\n        TITLE    =  32/-1/GMT: ~ Iowa Mesonet Altimeter Plot\n        CLEAR    =  yes\n        PANEL    =  0\n        DEVICE   = ${DEVICE}\n        PROJ     =  LCC\n        FILTER   =  .3\n        TEXT     =  1/1//hw\n        LUTFIL   =\n        STNPLT   =\n\tMAP\t= 25 + 25//2\n\t\\$MAPFIL = HICNUS.NWS + hipowo.cia\n\tlist\n\trun\n\n\texit\nEOF\n\n\ngdcntr << EOF > /tmp/pres_plot_gdcntr.out\n\tGAREA    = ${AREA}\n\tGDATTIM  = ${date}/${hh}\n\tGLEVEL   = 0\n\tGVCORD   = NONE\n\tGFUNC    = SM9S(ALTM)\n\tGDFILE   = /mesonet/data/iemplot/grid_oa.grd\n\tCINT     = 1\n\tLINE     = 4\n\tMAP      = 0\n\tTEXT     = 1\n\tDEVICE   = ${DEVICE}\n\tSATFIL   =  \n\tRADFIL   =  \n\tPROJ     = LCC\n\tCLEAR    = no\n\tPANEL\t= 0\n\tTITLE\t= 32/-2/LOCAL: ${nicetime}\n\tSCALE    = 0\n\tLATLON   = 0\n\tHILO     =  \n\tHLSYM    =  \n\tCLRBAR   = 1\n\tCONTUR   = 3/3\n\tSKIP     = 0\n\tFINT     = 0\n\tFLINE    = 10-20\n\tCTYPE    = C\n\tLUTFIL   =  \n\tSTNPLT   =  \n\tlist\n\trun\n\n\texit\nEOF\n\ngpend\n\n\nif (-e mesonet_altm.gif) then\n    pqinsert -p \"plot ac ${timestamp} mesonet_altm.gif mesonet_altm_${hh}00.gif gif\" mesonet_altm.gif >& /dev/null\n\trm -f mesonet_altm.gif\nendif\n"
  },
  {
    "path": "scripts/iemplot/templates/createFile.csh",
    "content": "#!/bin/csh\n\nsource /mesonet/nawips/Gemenviron\n\n# PROJ     = LCC/40;-90;44\nrm grid_25_25.grd \nwhich gdcfil\ngdcfil << EOF\n GDOUTF   = grid_25_25.grd\n PROJ     = LCC/42;-95;45\n GRDAREA  = IA\n KXKY     = 25;25\n MAXGRD   = 20\n CPYFIL   =  \n ANLYSS   = 0.5\n list\n run\n\n exit\nEOF\n\ngpend\n\ncp grid_25_25.grd grid_oa.grd\n"
  },
  {
    "path": "scripts/iemplot/templates/sf.pack",
    "content": "ALTM   900.0   1100.0  0.01\n"
  },
  {
    "path": "scripts/iemplot/templates/use.stns",
    "content": "# [IA_ASOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:44.09\nALO       72548 WATERLOO                         IA US  4255  -9240  268   \nAMW       99999 AMES                             IA US  4199  -9362  280   \nBRL       99999 BURLINGTON                       IA US  4078  -9113  213   \nCID       72545 CEDAR RAPIDS                     IA US  4188  -9170  265   \nCWI       99999 CLINTON                          IA US  4183  -9033  216   \nDBQ       72547 DUBUQUE                          IA US  4240  -9070  329   \nDSM       72546 DES MOINES                       IA US  4153  -9365  294   \nDVN       74455 QUAD CITIES                      IA US  4161  -9057  229   \nEST       99999 ESTHERVILLE                      IA US  4340  -9475  401   \nFOD       72549 FORT DODGE                       IA US  4255  -9418  355   \nIOW       99999 IOWA CITY                        IA US  4163  -9155  204   \nLWD       99999 LAMONI                           IA US  4062  -9395  342   \nMCW       99999 MASON CITY                       IA US  4315  -9333  370   \nMIW       99999 MARSHALLTOWN                     IA US  4211  -9291  297   \nOTM       99999 OTTUMWA                          IA US  4110  -9245  258   \nSPW       99999 SPENCER                          IA US  4317  -9521  403   \nSUX       72557 SIOUX CITY                       IA US  4240  -9638  336   \n# [AWOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:44.16\nADU       99999 AUDUBON                          IA US  4171  -9492  399   \nAIO       99999 ATLANTIC                         IA US  4141  -9505  351   \nAWG       99999 WASHINGTON                       IA US  4128  -9167  228   \nAXA       99999 ALGONA                           IA US  4308  -9427  368   \nBNW       99999 BOONE MUNI                       IA US  4205  -9385  349   \nCAV       99999 CLARION                          IA US  4274  -9376  350   \nCBF       99999 COUNCIL BLUFFS                   IA US  4126  -9576  378   \nCCY       99999 CHARLES CITY                     IA US  4307  -9261  340   \nCIN       99999 CARROLL                          IA US  4205  -9479  365   \nCKP       99999 Cherokee                         IA US  4273  -9556  373   \nCNC       99999 CHARITON                         IA US  4102  -9336  319   \nCSQ       99999 CRESTON                          IA US  4101  -9435  393   \nDEH       99999 DECORAH                          IA US  4328  -9174  352   \nDNS       99999 DENISON                          IA US  4198  -9538  381   \nEBS       99999 WEBSTER CITY                     IA US  4244  -9387  337   \nEOK       99999 KEOKUK MUNI                      IA US  4046  -9143  204   \nFFL       99999 FAIRFIELD                        IA US  4105  -9198  242   \nFSW       99999 FORT MADISON                     IA US  4066  -9133  220   \nGGI        9999 Grinnell                         IA US  4171  -9273  307   \nHNR       99999 HARLAN                           IA US  4158  -9534  364   \nICL       99999 CLARINDA                         IA US  4071  -9502  298   \nIFA        9999 Iowa Falls                       IA US  4247  -9327  346   \nIIB       99999 INDEPENDENCE                     IA US  4245  -9195  294   \nIKV       99999 ANKENY                           IA US  4168  -9357  270   \nLRJ       99999 LE MARS                          IA US  4278  -9619  362   \nMPZ       99999 MOUNT PLEASANT                   IA US  4095  -9151  222   \nMUT       99999 MUSCATINE                        IA US  4137  -9114  165   \nMXO       99999 MONTICELLO MUNI                  IA US  4223  -9116  254   \nOLZ       99999 OELWEIN                          IA US  4268  -9198  328   \nOOA       99999 Oskaloosa                        IA US  4123  -9249  256   \nORC       99999 ORANGE CITY                      IA US  4299  -9607  429   \nOXV       99999 KNOXVILLE                        IA US  4130  -9311  281   \nPEA       99999 PELLA                            IA US  4140  -9294  265   \nPRO        9999 Perry                            IA US  4183  -9416  309   \nRDK       99999 RED OAK                          IA US  4101  -9526  317   \nSDA       99999 SHENANDOAH MUNI                  IA US  4075  -9541  296   \nSHL       99999 SHELDON                          IA US  4321  -9583  432   \nSLB       99999 STORM LAKE                       IA US  4260  -9524  449   \nTNU       99999 NEWTON MUNI                      IA US  4167  -9302  287   \nTVK        9999 Centerville                      IA US  4068  -9290  313   \nVTI       99999 VINTON                           IA US  4222  -9202  255   \n# [MN_ASOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:44.25\nAXN       99999 ALEXANDRIA                       MN US  4587  -9540  433   \nBDE       99999 BAUDETTE                         MN US  4873  -9462  329   \nBRD       99999 BRAINERD                         MN US  4640  -9413  372   \nDLH       99999 DULUTH                           MN US  4685  -9220  435   \nFCM       99999 MNPLS/FLYING CLD                 MN US  4483  -9347  280   \nHIB       99999 HIBBING                          MN US  4738  -9283  412   \nINL       99999 INTERNTNL FALLS                  MN US  4857  -9340  360   \nMIC       99999 MNPLS/CRYSTAL                    MN US  4507  -9335  265   \nMSP       99999 MINNEAPOLIS                      MN US  4488  -9323  265   \nPKD       99999 PARK RAPIDS                      MN US  4690  -9507  442   \nRST       99999 ROCHESTER                        MN US  4390  -9250  403   \nRWF       99999 REDWOOD FALL                     MN US  4455  -9508  311   \nSTC       99999 ST. CLOUD                        MN US  4555  -9405  314   \nSTP       99999 ST. PAUL                         MN US  4493  -9305  219   \n# [WI_ASOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:44.33\nASX       99999 ASHLAND                          WI US  4655  -9092  251   \nAUW       99999 WAUSAU                           WI US  4493  -8962  362   \nEAU       99999 EAU CLAIRE                       WI US  4487  -9147  276   \nENW       99999 KENOSHA                          WI US  4260  -8793  219   \nFLD       99999 FOND DU LAC                      WI US  4377  -8848  240   \nGRB       99999 ASHWAUGENON                      WI US  4448  -8813  208   \nHYR       99999 HAYWARD                          WI US  4602  -9145  370   \nISW       99999 WISCONSIN RAPIDS                 WI US  4437  -8983  307   \nLNR       99999 LONE ROCK                        WI US  4322  -9018  217   \nLSE       99999 LA CROSSE                        WI US  4388  -9125  199   \nMFI       99999 MARSHFIELD                       WI US  4463  -9018  379   \nMKE       99999 MILWAUKEE                        WI US  4295  -8790  206   \nMSN       99999 MADISON                          WI US  4313  -8935  261   \nOSH       99999 OSHKOSH                          WI US  4397  -8855  248   \nOVS       99999 BOSCOBEL                         WI US  4315  -9068  202   \nRAC       99999 RACINE                           WI US  4277  -8782  203   \nRHI       99999 RHINELANDER                      WI US  4563  -8948  485   \nSBM       99999 SHEBOYGAN                        WI US  4378  -8785  232   \nY50        9999 Wautoma                          WI US  4404  -8930  261   \n# [IL_ASOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:44.39\nARR       99999 CHICAGO/AURORA                   IL US  4177  -8848  215   \nCMI       99999 CHAMPAIGN/URBANA                 IL US  4003  -8827  228   \nCPS       99999 CAHOKIA/ST LOUIS                 IL US  3857  -9015  126   \nDEC       99999 DECATUR                          IL US  3983  -8885  207   \nDPA       99999 CHICAGO/DUPAGE                   IL US  4192  -8825  231   \nLWV       99999 LAWRENCEVILLE                    IL US  3877  -8760  131   \nMDH       99999 CARBONDALE/MURPH                 IL US  3778  -8925  130   \nMDW       99999 CHICAGO                          IL US  4178  -8775  188   \nMLI        9999 Moline                           IL US  4145  -9050  181   \nMTO       99999 MATTOON/CHARLEST                 IL US  3947  -8827  214   \nORD       99999 CHICAGO O HARE                   IL US  4198  -8793  200   \nPIA       99999 PEORIA                           IL US  4067  -8968  205   \nPWK       99999 PALWAUKEE                        IL US  4212  -8790  203   \nRFD       99999 ROCKFORD                         IL US  4220  -8910  221   \nSPI       99999 SPRINGFIELD                      IL US  3985  -8968  181   \nUGN       99999 WAUKEGAN                         IL US  4242  -8787  222   \nUIN       99999 QUINCY                           IL US  3994  -9119  234   \n# [MO_ASOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:44.47\nBLM       99999 BLOOMFIELD PROFI                 MO US  3687  -8997  130   \nCDJ       99999 CHILLICOTHE                      MO US  3982  -9358  234   \nCGI       99999 CAPE GIRARDEAU                   MO US  3723  -8958  102   \nCOU       99999 COLUMBIA                         MO US  3882  -9222  271   \nDMO       99999 SEDALIA                          MO US  3872  -9317  274   \nGVW       99999 GRANDVIEW                        MO US  3883  -9457  337   \nIRK       99999 KIRKSVILLE                       MO US  4010  -9255  293   \nJEF       99999 JEFFERSON CITY                   MO US  3860  -9215  168   \nJLN       99999 JOPLIN                           MO US  3715  -9450  299   \nLXT        9999 Lee,s Summit                     MO US  3896  -9437  306   \nMCI       99999 KANSAS CITY/INTL                 MO US  3930  -9473  320   \nMKC       99999 KANSAS CITY/DNTN                 MO US  3912  -9460  227   \nP02       99999 POPLAR BLUFF                     MO US  3677  -9047  146   \nP35       99999 SPICKARD                         MO US  4025  -9372  270   \nPOF       99999 POPULAR BLUFF                    MO US  3677  -9032   99   \nRCM        9999 Warrensburg                      MO US  3878  -9380  243   \nSET       99999 ST. CHARLES                      MO US  3893  -9043  134   \nSGF       99999 SPRINGFIELD                      MO US  3723  -9338  390   \nSTJ       99999 ST. JOSEPH                       MO US  3977  -9492  247   \nSTL       99999 ST. LOUIS                        MO US  3875  -9037  171   \nSUS       99999 ST. LOUIS/SPIRIT                 MO US  3865  -9065  141   \nSZL       99999 WHITEMAN AFB                     MO US  3872  -9353  265   \nTBN       99999 FORT LEONARD WOO                 MO US  3772  -9212  353   \nUNO       99999 WEST PLAINS                      MO US  3688  -9190  372   \nVIH       99999 VICHY/ROLLA                      MO US  3813  -9177  333   \n# [KS_ASOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:44.53\nAAO      724504 WICHITA (AAO)                    KS US  3775  -9722  433   \nCFV      999999 COFFEYVILLE                      KS US  3708  -9557  226   \nCNK      724580 CONCORDIA                        KS US  3955  -9765  452   \nCNU      724507 CHANUTE                          KS US  3767  -9548  305   \nDDC      724510 DODGE_CITY                       KS US  3777  -9997  790   \nEHA      724604 ELKHART                          KS US  3700 -10190 1099   \nEMP      724556 EMPORIA                          KS US  3833  -9618  368   \nEWK      724509 NEWTON                           KS US  3805  -9728  467   \nFOE      724565 TOPEKA (FOE)                     KS US  3895  -9567  329   \nFSK        9999 Fort Scott                       KS US  3780  -9477  279   \nGBD      724517 GREAT_BEND                       KS US  3835  -9887  575   \nGCK      724515 GARDEN_CITY                      KS US  3793 -10072  881   \nGLD      724650 GOODLAND                         KS US  3937 -10170 1124   \nHLC      724655 HILL_CITY                        KS US  3938  -9983  678   \nHUT      724506 HUTCHINSON                       KS US  3807  -9787  470   \nHYS      724518 HAYS_MUNI                        KS US  3885  -9927  609   \nIAB      724505 MCCONNELL_AFB                    KS US  3762  -9727  418   \nICT      724500 WICHITA                          KS US  3765  -9743  408   \nIXD      724475 OLATHE (IXD)                     KS US  3882  -9489  343   \nLBL      724516 LIBERAL_MUNI                     KS US  3705 -10097  879   \nLWC      999999 LAWRENCE                         KS US  3902  -9522  253   \nMHK      724555 MANHATTAN                        KS US  3913  -9667  322   \nOJC      724468 OLATHE (OJC)                     KS US  3885  -9473  334   \nP28      724520 MEDICINE_LODGE                   KS US  3730  -9858  468   \nPPF      999999 PARSONS                          KS US  3733  -9552  274   \nPTT        9999 Pratt                            KS US  3770  -9875  595   \nRSL      724585 RUSSELL                          KS US  3887  -9882  568   \nSLN      724586 SALINA                           KS US  3880  -9765  388   \nTOP      724560 TOPEKA (TOP)                     KS US  3907  -9562  270   \nUKL       99999 Burlington                       KS US  3830  -9572  357   \nWLD      999999 WINFIELD                         KS US  3717  -9703  351   \n# [NE_ASOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:44.59\nAFK       99999 NEBRASKA CITY                    NE US  4060  -9587  354   \nAIA       99999 ALLIANCE                         NE US  4205 -10280  119   \nBBW       99999 BROKEN BOW MUNI                  NE US  4142  -9965  776   \nBFF       99999 SCOTTSBLUFF                      NE US  4187 -10358  120   \nBVN       99999 Albion                           NE US  4173  -9806  551   \nCDR       99999 CHADRON                          NE US  4283 -10310  101   \nCZD       99999 COZAD                            NE US  4087 -10000   80   \nFNB       99999 FALLS CITY/BRENN                 NE US  4007  -9558  300   \nGRI       99999 GRAND ISLAND                     NE US  4097  -9832  561   \nHJH        9999 Hebron                           NE US  4015  -9759  447   \nHSI       99999 HASTINGS                         NE US  4060  -9843  591   \nIML       99999 IMPERIAL MUNICIP                 NE US  4052 -10162   99   \nK46        9999 Blair                            NE US  4142  -9611  404   \nLBF       99999 NORTH PLATTE                     NE US  4112 -10067   84   \nLCG        9999 Wayne                            NE US  4224  -9698  436   \nLNK       99999 LINCOLN                          NE US  4083  -9677  364   \nMCK       99999 MCCOOK                           NE US  4020 -10058   78   \nODX       99999 ORD/SHARP FIELD                  NE US  4162  -9895  631   \nOFF       99999 OFFUTT AFB/BELLE                 NE US  4112  -9592  319   \nOFK       99999 NORFOLK                          NE US  4198  -9743  470   \nOMA       99999 OMAHA/EPPLEY                     NE US  4132  -9590  312   \nOVN       99999 NORTH OMAHA                      NE US  4137  -9602  406   \nPMV        9999 Plattsmouth                      NE US  4095  -9592  366   \nSNY       99999 SIDNEY                           NE US  4110 -10298  130   \nTIF       99999 Thedford                         NE US  4196 -10057  892   \nTQE       99999 TEKAMAH                          NE US  4177  -9618  312   \nVTN       99999 VALENTINE                        NE US  4287 -10055   78   \n# [SD_ASOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:44.67\n2WX       99999 BUFFALO                          SD US  4560 -10355   91   \n8D3       99999 SISSETON                         SD US  4567  -9698  354   \n9V9       99999 CHAMBERLAIN                      SD US  4377  -9932  519   \nABR       99999 ABERDEEN                         SD US  4545  -9842  397   \nATY       99999 WATERTOWN                        SD US  4490  -9715  532   \nCUT       99999 CUSTER                           SD US  4373 -10362  172   \nD07       99999 FAITH                            SD US  4503 -10202   78   \nEFC       99999 BELLE FOURCHE                    SD US  4472 -10387   98   \nFSD       99999 SIOUX FALLS                      SD US  4358  -9675  436   \nHON       99999 HURON                            SD US  4438  -9823  390   \nICR       99999 WINNER                           SD US  4338  -9985  621   \nIEN       99999 PINE RIDGE                       SD US  4303 -10252   99   \nMBG       99999 MOBRIDGE                         SD US  4555 -10042   51   \nPHP       99999 PHILIP                           SD US  4405 -10160   67   \nPIR       99999 PIERRE                           SD US  4438 -10028   52   \nRAP       99999 RAPID CITY                       SD US  4405 -10305   96   \nRCA       99999 ELLSWORTH AFB                    SD US  4413 -10308   99   \nSL0       99999 SHERIDAN LAKE RD                 SD US  4403 -10343  147   \n# [ND_ASOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:44.74\nBIS      727640 BISMARCK                         ND US  4677 -10075  506   \nBPP        9999 Bowman                           ND US  4619 -10343  901   \nBWP        9999 Wahpeton                         ND US  4624  -9661  294   \nDIK      727645 DICKINSON                        ND US  4680 -10280  789   \nDVL      727573 DEVILS_LAKE                      ND US  4812  -9892  443   \nFAR      727530 FARGO                            ND US  4690  -9680  274   \nGFK      727576 GRAND_FORKS                      ND US  4795  -9718  257   \nHEI      999999 HETTINGER                        ND US  4600 -10265  828   \nISN      727670 WILLISTON                        ND US  4818 -10363  581   \nJMS      727535 JAMESTOWN                        ND US  4693  -9868  457   \nMIB      727675 MINOT_AFB                        ND US  4842 -10135  508   \nMOT      727676 MINOT_INTL                       ND US  4827 -10128  523   \nN60      727677 GARRISON                         ND US  4765 -10143  587   \nRDR      727575 GRAND_FORKS_AFB                  ND US  4797  -9740  278   \n# [IN_ASOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:44.80\nASW       99999 WARSAW MUNI                      IN US  4127  -8583  259   \nBAK       99999 COLUMBUS/BALKALA                 IN US  3927  -8590  200   \nEKM       99999 ELKHART MUNICIPA                 IN US  4172  -8600  237   \nEVV       99999 EVANSVILLE                       IN US  3805  -8752  117   \nEYE       99999 INDIANAPOLIS                     IN US  3983  -8630  248   \nFWA       99999 FORT WAYNE                       IN US  4097  -8520  248   \nGEZ       99999 SHELBYVILLE                      IN US  3958  -8580  245   \nGSH       99999 GOSHEN                           IN US  4153  -8578  252   \nGUS       99999 GRISSOM AFB/PERU                 IN US  4063  -8615  247   \nGYY       99999 GARY REGIONAL                    IN US  4162  -8742  180   \nHNB       99999 HUNTINGBURG                      IN US  3825  -8695  161   \nHUF       99999 TERRE HAUTE                      IN US  3945  -8733  179   \nIND       99999 INDIANAPOLIS                     IN US  3972  -8628  241   \nLAF       99999 LAFAYETTE                        IN US  4042  -8695  182   \nMIE       99999 MUNCIE                           IN US  4023  -8540  285   \nOKK       99999 KOKOMO                           IN US  4053  -8607  253   \nSBN       99999 SOUTH BEND                       IN US  4170  -8632  237   \nVPZ       99999 VALPARAISO                       IN US  4145  -8700  231   \n# [OH_ASOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:44.86\nAOH       99999 LIMA                             OH US  4070  -8402  296   \nAPE       99999 APPLETON                         OH US  4015  -8258  453   \nBJJ       99999 WOOSTER                          OH US  4087  -8188  343   \nBKL       99999 CLEVELAND                        OH US  4153  -8167  184   \nCGF       99999 CLEVLND/CUYAHOGA                 OH US  4157  -8147  268   \nCLE       99999 CLEVELAND                        OH US  4142  -8185  233   \nCMH       99999 COLUMBUS                         OH US  4000  -8288  247   \nDAY       99999 DAYTON                           OH US  3990  -8422  305   \nDFI       99999 DEFIANCE                         OH US  4133  -8443  219   \nFDY       99999 FINDLAY                          OH US  4102  -8367  247   \nFFO       99999 WRIGHT PATERSON                  OH US  3982  -8403  251   \nHAO       99999 HAMILTON                         OH US  3937  -8452  188   \nHZY       99999 ASHTABULA                        OH US  4178  -8070  276   \nILN       99999 WILMINGTON                       OH US  3943  -8380  322   \nLCK       99999 RICKENBACKER ANG                 OH US  3982  -8292  227   \nLHQ       99999 LANCASTER                        OH US  3975  -8267  260   \nLNN       99999 WILLOUGHBY                       OH US  4167  -8137  191   \nLPR       99999 LORAIN/ELYRIA                    OH US  4135  -8218  241   \nLUK       99999 CINCINNAT/LUNKEN                 OH US  3910  -8442  155   \nMFD       99999 MANSFIELD                        OH US  4082  -8252  395   \nMGY       99999 DAYTON                           OH US  3960  -8423  289   \nMNN       99999 MARION                           OH US  4062  -8307  301   \nOSU       99999 COLUMBUS/ST UNIV                 OH US  4008  -8308  280   \nPHD       99999 NEW PHILADELPHIA                 OH US  4047  -8142  272   \nSGH        9999 Springfield                      OH US  3984  -8384  320   \nTDZ       99999 TOLEDO                           OH US  4157  -8348  189   \nTOL       99999 TOLEDO                           OH US  4158  -8380  210   \nTZR       99999 BOLTON FIELD AIR                 OH US  3988  -8313  276   \nUNI        9999 Albany                           OH US  3921  -8223  233   \nVTA       99999 NEWARK                           OH US  4002  -8247  268   \nYNG       99999 YOUNGSTOWN                       OH US  4125  -8067  360   \nZOB       99999 CLEVELAND/ARTCC                  OH US  4128  -8230  241   \nZZV       99999 ZANESVILLE                       OH US  3995  -8190  268   \n# [MI_ASOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:44.93\nACB       99999 BELLAIRE                         MI US  4498  -8520  190   \nANJ       99999 SAULT STE MARIE                  MI US  4647  -8437  218   \nAPN       99999 ALPENA                           MI US  4507  -8357  210   \nARB       99999 ANN ARBOR                        MI US  4222  -8373  251   \nAZO       99999 KALAMAZOO                        MI US  4223  -8555  272   \nBAX       99999 BAD AXE                          MI US  4378  -8298  234   \nBEH       99999 BENTON HARBOR                    MI US  4213  -8642  191   \nBIV       99999 HOLLAND                          MI US  4275  -8610  208   \nBTL       99999 BATTLE CREEK                     MI US  4232  -8523  290   \nCAD       99999 CADILLAC/WEXFORD                 MI US  4427  -8542  398   \nCFS       99999 Caro                             MI US  4346  -8345  214   \nCIU       99999 CHIPPEWA INTL                    MI US  4625  -8447  244   \nCMX       99999 HANCOCK                          MI US  4717  -8848  326   \nCVX       99999 CHARLEVOIX                       MI US  4530  -8527  204   \nDET       99999 DETROIT/CITY AIR                 MI US  4240  -8302  190   \nDRM        9999 Drummond Island                  MI US  4601  -8374  203   \nDTW       99999 DETROIT/WAYNE                    MI US  4223  -8333  195   \nDUH       99999 LAMBERTVILLE                     MI US  4173  -8365  204   \nERY       99999 NEWBERRY                         MI US  4630  -8545  265   \nESC       99999 ESCANABA                         MI US  4575  -8702  187   \nFKS       99999 Frankfort                        MI US  4463  -8620  193   \nFNT       99999 FLINT                            MI US  4297  -8375  233   \nFPK       99999 CHARLOTTE                        MI US  4257  -8482  272   \nGLR       99999 GAYLORD                          MI US  4502  -8468  407   \nGOV       99999 GRAYLING AF                      MI US  4468  -8473  353   \nGRR       99999 GRAND RAPIDS                     MI US  4288  -8552  237   \nHAI        9999 Three Rivers                     MI US  4196  -8559  251   \nHTL       99999 HOUGHTON LAKE                    MI US  4435  -8467  351   \nHYX       99999 SAGINAW/BROWNE                   MI US  4343  -8387  183   \nIMT       99999 IRON MOUNTAIN                    MI US  4582  -8812  349   \nIRS       99999 STURGIS/KIRSCH                   MI US  4180  -8543  282   \nISQ       99999 MANISTIQUE                       MI US  4597  -8617  209   \nIWD       99999 IRONWOOD                         MI US  4652  -9012  375   \nJXN       99999 JACKSON/REYNOLDS                 MI US  4227  -8447  305   \nJYM       99999 HILLSDALE                        MI US  4192  -8458  360   \nLAN       99999 LANSING                          MI US  4278  -8458  264   \nLDM       99999 LUDINGTON/MASON                  MI US  4397  -8640  197   \nLWA       99999 South Haven                      MI US  4235  -8626  203   \nMBL       99999 MANISTEE                         MI US  4427  -8625  189   \nMBS       99999 SAGINAW                          MI US  4353  -8408  202   \nMCD       99999 MACKINAC ISLAND                  MI US  4585  -8463  226   \nMGN       99999 HARBOR SPRINGS                   MI US  4543  -8492  209   \nMKG       99999 MUSKEGON                         MI US  4317  -8623  191   \nMNM       99999 MENOMINEE                        MI US  4512  -8762  191   \nMOP       99999 MOUNT PLEASANT                   MI US  4362  -8473  230   \nMTC       99999 SELFRIDGE ANGB                   MI US  4262  -8282  177   \nOEB       99999 COLDWATER                        MI US  4192  -8503  292   \nONZ       99999 DETROIT/GROSSE I                 MI US  4210  -8315  180   \nOSC       99999 OSCODA/WURTSMITH                 MI US  4445  -8340  193   \nOZW       99999 HOWELL                           MI US  4262  -8397  293   \nP53       99999 Munising                         MI US  4640  -8665  187   \nP58       99999 PORT HOPE                        MI US  4402  -8280  179   \nP59       99999 COPPER HARBOR                    MI US  4747  -8788  190   \nP75       99999 MANISTIQUE                       MI US  4595  -8623  178   \nPHN       99999 PORT HURON                       MI US  4292  -8252  198   \nPLN       99999 PELLSTON                         MI US  4557  -8480  217   \nPTK       99999 PONTIAC                          MI US  4267  -8342  299   \nPZQ       99999 Rogers City                      MI US  4541  -8381  204   \nRMY       99999 MARSHALL                         MI US  4223  -8495  287   \nRNP       99999 Owosso                           MI US  4299  -8414  224   \nRQB       99999 BIG RAPIDS                       MI US  4372  -8550  302   \nSAW       99999 GWINN/SAWYER AFB                 MI US  4635  -8740  372   \nSJX       99999 BEAVER ISLAND                    MI US  4570  -8557  204   \nSLH       99999 CHEBOYGAN                        MI US  4565  -8452  195   \nSVM       99999 SALEM (LANSING)                  MI US  4242  -8360  290   \nTEW       99999 MASON                            MI US  4257  -8442  280   \nTTF       99999 MONROE                           MI US  4193  -8342  188   \nTVC       99999 TRAVERSE CIT                     MI US  4473  -8557  190   \nVLL       99999 Troy                             MI US  4254  -8318  222   \nYIP       99999 DETROIT/WILLOW                   MI US  4223  -8353  215   \n# [MN_AWOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:45.00\n60Y        9999 Slayton                          MN US  4399  -9578  495   \nACQ       99999 WASECA (AWOS)                    MN US  4404  -9333  343   \nADC       99999 WADENA MUNI                      MN US  4645  -9522  418   \nAEL       99999 ALBERT LEA                       MN US  4367  -9337  383   \nAIT       99999 AITKIN NDB                       MN US  4653  -9367  367   \nANE       99999 MINNEAPLS/BLAINE                 MN US  4513  -9322  278   \nAQP       99999 APPLETON MUNICIP                 MN US  4522  -9600  311   \nAUM       99999 AUSTIN MUNI                      MN US  4367  -9292  375   \nBBB       99999 BENSON MUNI                      MN US  4532  -9565  317   \nBFW       99999 SILVER BAY                       MN US  4720  -9140  331   \nBJI       99999 BEMIDJI                          MN US  4750  -9492  420   \nCBG       99999 CAMBRIDGE MUNI                   MN US  4557  -9327  287   \nCDD       99999 CRANE LAKE                       MN US  4827  -9257  350   \nCFE       99999 Buffalo                          MN US  4516  -9384  295   \nCKC       99999 GRAND MARAIS/COO                 MN US  4783  -9037  548   \nCKN       99999 CROOKSTON MUNI                   MN US  4785  -9662  273   \nCNB        9999 Canby                            MN US  4473  -9626  363   \nCOQ       99999 CLOQUET                          MN US  4670  -9250  390   \nCQM       99999 COOK MUNI AIRPOR                 MN US  4782  -9268  404   \nDTL       99999 DETROIT LAKES                    MN US  4682  -9587  426   \nDVP        9999 Slayton                          MN US  4399  -9578  495   \nDXX       99999 MADISON                          MN US  4498  -9617  330   \nDYT       99999 DULUTH (SKY HARB                 MN US  4672  -9203  186   \nELO       99999 ELY MUNI                         MN US  4782  -9182  443   \nETH       99999 WHEATON NDB                      MN US  4570  -9650  313   \nEVM       99999 EVELETH MUNI                     MN US  4738  -9250  421   \nFBL       99999 FARIBAULT MUNI                   MN US  4432  -9332  322   \nFFM       99999 FERGUS FALLS                     MN US  4627  -9615  361   \nFGN       99999 FLAG ISLAND                      MN US  4932  -9487  328   \nFKA       99999 PRESTON (AWOS)                   MN US  4368  -9218  389   \nFOZ       99999 BIGFORK                          MN US  4777  -9365  411   \nFRM       99999 FAIRMONT MUNI                    MN US  4363  -9442  354   \nFSE       99999 FOSSTON                          MN US  4758  -9577  389   \nGDB       99999 Granite Falls                    MN US  4475  -9556  319   \nGHW       99999 GLENWOOD                         MN US  4563  -9532  425   \nGNA       99999 GRAND MARAIS                     MN US  4775  -9035  185   \nGPZ       99999 GRAND RAPIDS                     MN US  4722  -9352  413   \nGYL       99999 GLENCOE                          MN US  4475  -9408  302   \nHCD       99999 HUTCHINSON                       MN US  4487  -9437  323   \nHCO       99999 HALLOCK                          MN US  4875  -9693  250   \nHZX       99999 McGregor                         MN US  4662  -9331  374   \nILL       99999 WILLMAR/RICE                     MN US  4512  -9507  344   \nJKJ       99999 MOORHEAD MUNI                    MN US  4683  -9667  280   \nJMR       99999 MORA                             MN US  4588  -9327  309   \nJYG       99999 ST. JAMES                        MN US  4398  -9455  325   \nLJF       99999 LITCHFIELD                       MN US  4510  -9450  348   \nLVN       99999 MNPLS/AIRLAKE                    MN US  4462  -9322  293   \nLXL       99999 LITTLE FALLS                     MN US  4595  -9433  342   \nLYV       99999 Luverne                          MN US  4362  -9622  436   \nMGG       99999 MAPLE LAKE                       MN US  4523  -9398  313   \nMJQ       99999 JACKSON MUNI                     MN US  4363  -9497  441   \nMKT       99999 MANKATO                          MN US  4422  -9392  311   \nMML       99999 MARSHALL/RYAN                    MN US  4445  -9582  359   \nMOX       99999 MORRIS MUNI                      MN US  4557  -9597  344   \nMVE       99999 MONTEVIDEO                       MN US  4497  -9572  315   \nMWM       99999 WINDOM MUNI AIRP                 MN US  4390  -9510  430   \nMZH       99999 MOOSE LAKE                       MN US  4642  -9280  328   \nONA       99999 WINONA MUNI                      MN US  4407  -9170  200   \nORB       99999 ORR                              MN US  4802  -9287  397   \nOTG       99999 WORTHINGTON                      MN US  4363  -9557  480   \nOVL       99999 OLIVIA                           MN US  4478  -9503  328   \nOWA       99999 OWATONNA                         MN US  4412  -9325  350   \nPEX        9999 Paynesville                      MN US  4537  -9475  360   \nPNM       99999 PRINCETON MUNI                   MN US  4555  -9360  298   \nPQN       99999 PIPESTONE                        MN US  4397  -9632  529   \nPWC       99999 PINE RIVER REGIO                 MN US  4672  -9437  395   \nRAD       99999 WARROAD                          MN US  4893  -9533  327   \nRGK       99999 RED WING                         MN US  4457  -9247  239   \nROS       99999 RUSH CITY                        MN US  4570  -9295  281   \nROX       99999 ROSEAU MUNI                      MN US  4885  -9570  323   \nRRT       99999 WARROAD                          MN US  4893  -9533  327   \nSAZ       99999 STAPLES                          MN US  4637  -9480  392   \nSGS       99999 SOUTH ST PAUL                    MN US  4485  -9315  250   \nSYN        9999 Stanton                          MN US  4448  -9302  280   \nTKC       99999 Tracy                            MN US  4425  -9561  408 99\nTOB       99999 DODGE CENTER                     MN US  4402  -9282  398   \nTVF       99999 THIEF RIVER                      MN US  4807  -9617  340   \nTWM       99999 TWO HARBORS                      MN US  4703  -9175  328   \nULM       99999 NEW ULM MUNI                     MN US  4432  -9450  308   \nVVV       99999 ORTONVILLE                       MN US  4530  -9642  335   \nVWU       99999 WASKISH MUNI                     MN US  4815  -9452  360   \nXVG       99999 LONGVILLE                        MN US  4698  -9420  407   \n# [WI_AWOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:45.08\nAIG       99999 ANTIGO                           WI US  4502  -8913  464   \nARV       99999 MINOCQUA/WOODRUF                 WI US  4592  -8972  496   \nATW       99999 APPLETON/OUTAGAM                 WI US  4425  -8852  280   \nBUU       99999 BURLINGTON                       WI US  4268  -8830  237   \nCLI       99999 CLINTONVILLE                     WI US  4460  -8872  250   \nCMY       99999 SPARTA/MCCOY AAF                 WI US  4397  -9073  256   \nCWA       99999 MOSINEE/CENTRAL                  WI US  4477  -8967  389   \nDLL       99999 DELLS/BARABOO                    WI US  4330  -8945  298   \nEFT       99999 MONROE                           WI US  4260  -8958  331   \nEGV       99999 EAGLE RIVER                      WI US  4592  -8927  500   \nETB       99999 WEST BEND                        WI US  4342  -8813  270   \nJVL       99999 JANESVILLE/ROCK                  WI US  4262  -8902  246   \nLNL      999999 Land O Lakes                     WI US  4615  -8921  519   \nLUM       99999 Menomonie                        WI US  4489  -9187  273   \nMDZ       99999 MEDFORD                          WI US  4510  -9028  448   \nMRJ       99999 MINERAL POINT                    WI US  4288  -9022  359   \nMTW       99999 MANITOWAC MUNI                   WI US  4412  -8767  198   \nMWC       99999 MILWAUKEE/LAWREN                 WI US  4312  -8802  227   \nOEO       99999 OSCEOLA                          WI US  4531  -9269  275   \nPBH       99999 PHILLIPS/PRICE                   WI US  4570  -9040  449   \nPCZ       99999 Waupaca                          WI US  4433  -8902  251 99\nPDC       99999 PRAIRIE DU CHIEN                 WI US  4302  -9112  201   \nRCX        9999 Ladysmith                        WI US  4550  -9100  377   \nRNH       99999 NEW RICHMOND MUN                 WI US  4515  -9253  304   \nRPD       99999 RICE LAKE                        WI US  4547  -9172  347   \nRRL       99999 MERRILL                          WI US  4520  -8972  401   \nRYV       99999 WATERTOWN                        WI US  4317  -8872  254   \nRZN       99999 SIREN                            WI US  4582  -9237  301   \nSTE       99999 STEVENS POINT                    WI US  4453  -8952  338   \nSUE       99999 STURGEON BAY                     WI US  4485  -8742  221   \nSUW       99999 SUPERIOR                         WI US  4640  -9205  206   \nT08        9999 Tomahawk                         WI US  4547  -8981  453   \nTKV        9999 Tomahawk                         WI US  4547  -8981  453   \nUES       99999 WAUKESHA CNTY                    WI US  4302  -8813  285   \nUNU       99999 JUNEAU                           WI US  4342  -8870  285   \nVOK       99999 VOLK/CAMP DOUGLA                 WI US  4392  -9027  277   \n# [IL_AWOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:45.15\n1H2       99999 EFFINGHAM                        IL US  3907  -8853  179   \n3LF       99999 Litchfield                       IL US  3916  -8967  210   \nAJG       99999 Mount Carmel                     IL US  3861  -8773  131   \nALN       99999 ALTON/ST LOUIS R                 IL US  3888  -9003  166   \nBLV       99999 SCOTT AFB/BELLEV                 IL US  3853  -8983  138   \nBMI       99999 BLOOMINGTON/NORM                 IL US  4047  -8892  267   \nC09       99999 MORRIS-WASHBURN                  IL US  4143  -8842  178   \nC75       99999 LACON                            IL US  4102  -8938  173   \nCGX       99999 CHICAGO/MEIGS                    IL US  4187  -8758  181   \nCIR       99999 Cairo                            IL US  3706  -8922   97 99\nCUL       99999 Carmi                            IL US  3809  -8812  118   \nDKB       99999 DE KALB                          IL US  4193  -8870  279   \nDNV       99999 DANVILLE                         IL US  4020  -8760  212   \nENL       99999 CENTRALIA                        IL US  3852  -8910  163   \nFEP       99999 FREEPORT                         IL US  4225  -8958  262   \nFOA       99999 FLORA                            IL US  3867  -8845  144   \nFWC       99999 FAIRFIELD                        IL US  3838  -8842  133   \nGBG       99999 GALESBURG                        IL US  4093  -9043  245   \nHSB       99999 HARRISBURG                       IL US  3782  -8855  121   \nIGQ       99999 CHICAGO/LANSING                  IL US  4153  -8753  188   \nIJX       99999 JACKSONVILLE                     IL US  3977  -9023  190   \nIKK       99999 KANKAKEE                         IL US  4107  -8785  192   \nJOT       99999 JOLIET                           IL US  4152  -8817  177   \nLOT       99999 ROMEOVILLE/CHI                   IL US  4162  -8810  205   \nM30       99999 Metropolis                       IL US  3719  -8875  384   \nMMO       99999 MARSEILLES                       IL US  4137  -8867  225   \nMQB       99999 MACOMB MUNI                      IL US  4052  -9065  215   \nMVN       99999 MOUNT VERNON                     IL US  3832  -8887  146   \nMWA       99999 MARION REGIONAL                  IL US  3775  -8902  144   \nOLY       99999 OLNEY-NOBLE                      IL US  3872  -8818  147   \nPNT       99999 PONTIAC                          IL US  4092  -8863  201   \nPPQ       99999 PITTSFIELD                       IL US  3963  -9078  216   \nPRG       99999 PARIS                            IL US  3970  -8767  199   \nRSV       99999 Robinson                         IL US  3902  -8765  141   \nSAR       99999 SPARTA                           IL US  3815  -8970  164   \nSFY       99999 Savanna                          IL US  4205  -9011  188   \nSLO       99999 SALEM/LECKRONE                   IL US  3865  -8897  175   \nSQI       99999 STERLING ROCKFAL                 IL US  4175  -8967  197   \nTAZ       99999 TAYLORVILLE                      IL US  3953  -8933  190   \nVYS       99999 PERU                             IL US  4135  -8915  199   \n# [MO_AWOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:45.21\nAIZ       99999 KAISER MEM                       MO US  3810  -9253  265   \nFAM       99999 FARMINGTON                       MO US  3777  -9042  288   \n# [KS_AWOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:45.27\n# [NE_AWOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:45.34\nANW       99999 AINSWORTH MUNICI                 NE US  4257 -10000   78   \nAUH       99999 AURORA                           NE US  4088  -9800  550   \nBIE       99999 BEATRICE MUNICIP                 NE US  4028  -9675  403   \nEAR       99999 KEARNEY MUNI                     NE US  4072  -9900  649   \nFET       99999 FREMONT MUNI ARP                 NE US  4145  -9652  367   \nHDE       99999 HOLDREGE/BREWSTR                 NE US  4045  -9932  705   \nLXN       99999 LEXINGTON                        NE US  4078  -9977  734   \nMLE       99999 MILLARD                          NE US  4120  -9612  320   \nOGA       99999 OGALLALA                         NE US  4103 -10178   99   \nOLU       99999 COLUMBUS MUNI                    NE US  4145  -9732  440   \nONL       99999 O NEILL                          NE US  4247  -9867  619   \n# [SD_AWOS] Generated by fromMESOSITE.py on 2007-11-02 14:50:45.40\nBKX       99999 BROOKINGS                        SD US  4428  -9682  502   \nMHE       99999 MITCHELL                         SD US  4377  -9802  397   \nYKN       99999 YANKTON                          SD US  4292  -9737  398   \n"
  },
  {
    "path": "scripts/iemre/README.md",
    "content": "# IEM Reanalysis\n\ndaryl can't keep the code logic of all these straight, so I had better document\nthis for myself!  There is also some chicken/egg stuff that goes on here, so we\nshall clarify that as well.  Additionally, there are `china` and `europe` domains\nat play here, so there is no hope.\n\n## Yearly NetCDF storage\n\nThe basic storage unit of IEMRE are yearly netCDF files. You can find most of these files at  [onsite/iemre](https://mesonet.agron.iastate.edu/onsite/iemre/).  For yearly file storage, there are\n\n| Filename | Description |\n| ---- | --- |\n| ${YEAR}_iemre_daily.nc | 12z and calendar day totals |\n| ${YEAR}_iemre_hourly.nc | Hourly analyses |\n\n## Daily Analysis Variable Sourcing\n\n### high_tmpk_12z low_tmpk_12z snow_12z snowd_12z\n\nThis is done by `daily_analysis.py`. If the year is 2009+, we look to see what COOP data the IEM has archived for the date and so a simple griding of it.  Otherwise, we look to see what all observations we already have in the COOP database and grid those out.\n\n### p01d_12z\n\n`daily_analysis.py` sums up the hourly iemre precipitation data. For pre-1997 dates, we are gridding out whatever climodat station observations we have for the date.\n\n### high_tmpk low_tmpk avg_dwpk wind_speed\n\nIf the year is greater than 1927, `daily_analysis.py` looks at the IEM Access database and grids out whatever observations it can find.\n\n### p01d\n\n`daily_analysis.py` looks at the hourly grids and constructs a midnight CST/CDT analysis.\n\n### rsds\n\n`grid_rsds.py` uses HRRR for 2014+ dates and grids out sampled COOP data points that can from a script in `../coop/narr_solarrad.py` and `../coop/merra_solarrad.py`.  The COOP database storage never uses this variable to drive its \"daily\" values, but uses the grid sampling done by the above scripts.\n"
  },
  {
    "path": "scripts/iemre/daily_analysis.py",
    "content": "\"\"\"Grid the daily/24H data onto a grid for IEMRE\n\nThis is tricky as some variables we can compute sooner than others.\n\n    RUN_MIDNIGHT.sh\n    RUN_NOON.sh\n    RUN_0Z.sh\n    RUN_10_AFTER.sh\n\"\"\"\n\nimport subprocess\nimport warnings\nfrom datetime import date, datetime, timedelta, timezone\nfrom typing import cast\n\nimport click\nimport numpy as np\nimport pandas as pd\nimport xarray as xr\nfrom metpy.calc import relative_humidity_from_dewpoint\nfrom metpy.interpolate import inverse_distance_to_grid\nfrom metpy.units import units\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.grid.util import grid_smear\nfrom pyiem.iemre import (\n    DOMAINS,\n    get_grids,\n    get_hourly_ncname,\n    hourly_offset,\n    set_grids,\n)\nfrom pyiem.util import convert_value, logger, ncopen, utc\nfrom scipy.stats import zscore\n\nLOG = logger()\n# How much data is enough, this is a hack to figure out if we have too much\n# missing data over land, ie the ASOS interpolator got used instead of model\n# ERA5Land is the limiting constraint here\nQUORUM_THRESHOLDS = {\n    \"conus\": 90,\n    \"china\": 79,\n    \"europe\": 77,\n    \"sa\": 51,\n}\n\n\ndef generic_gridder(df, idx, domain: str = \"conus\"):\n    \"\"\"\n    Generic gridding algorithm for easy variables\n    \"\"\"\n    gridnav = get_nav(\"iemre\", domain)\n    if not idx.startswith(\"precip\"):\n        window = 2.0\n        f1 = df[df[idx].notnull()]\n        for lat in np.arange(gridnav.bottom, gridnav.top, window):\n            for lon in np.arange(gridnav.left, gridnav.right, window):\n                (west, east, south, north) = (\n                    lon,\n                    lon + window,\n                    lat,\n                    lat + window,\n                )\n                box = f1[\n                    (f1[\"lat\"] >= south)\n                    & (f1[\"lat\"] < north)\n                    & (f1[\"lon\"] >= west)\n                    & (f1[\"lon\"] < east)\n                ]\n                # can't QC data that is all equal\n                if len(box.index) < 4 or box[idx].min() == box[idx].max():\n                    continue\n                z = np.abs(cast(\"np.ndarray\", zscore(box[idx])))\n                # Compute where the standard dev is +/- 2std\n                bad = box[z > 1.5]\n                df.loc[bad.index, idx] = np.nan\n\n    df2 = df[df[idx].notnull()]\n    if len(df2.index) < 4:\n        LOG.info(\"Not enough data %s\", idx)\n        return None\n    xi, yi = np.meshgrid(gridnav.x_points, gridnav.y_points)\n    res = np.ones(xi.shape) * np.nan\n    # do our gridding\n    grid = inverse_distance_to_grid(\n        df2[\"lon\"].values, df2[\"lat\"].values, df2[idx].values, xi, yi, 1.5\n    )\n    # replace nan values in res with whatever now is in grid\n    res = np.where(np.isnan(res), grid, res)\n    # Do we still have missing values?\n    if np.isnan(res).any():\n        # very aggressive with search radius\n        grid = inverse_distance_to_grid(\n            df2[\"lon\"].values, df2[\"lat\"].values, df2[idx].values, xi, yi, 5.5\n        )\n        # replace nan values in res with whatever now is in grid\n        res = np.where(np.isnan(res), grid, res)\n    # replace sentinel back to np.nan\n    res = np.where(res == -9999, np.nan, res)\n    return np.ma.array(res, mask=np.isnan(res))\n\n\ndef compute_daily_pairs(\n    dt: date, domain: str, is_12z: bool\n) -> list[tuple[datetime, datetime]]:\n    \"\"\"Figure out the pairs.\n\n    The 12z variant is a bit different and will include the end timestamp\n    \"\"\"\n    # Compute a timestamp at noon within the local calendar date\n    noon_local = datetime(\n        dt.year, dt.month, dt.day, 12, tzinfo=DOMAINS[domain][\"tzinfo\"]\n    )\n    if is_12z:\n        ets = noon_local.replace(hour=7)\n        sts = ets - timedelta(hours=23)\n    else:\n        sts = noon_local.replace(hour=1 if noon_local.dst() else 0)\n        ets = sts + timedelta(hours=23)\n    # Logic below needs UTC\n    sts = sts.astimezone(timezone.utc)\n    ets = ets.astimezone(timezone.utc)\n    LOG.info(\"Using %s to %s for %s[is_12z: %s]\", sts, ets, domain, is_12z)\n    pairs = [(sts, ets)]\n    if sts.year != ets.year:\n        # These are inclusive\n        pairs = [\n            (sts, sts.replace(hour=23)),\n            (ets.replace(hour=0), ets),\n        ]\n    return pairs\n\n\ndef copy_iemre_hourly(ts: date, ds: xr.Dataset, domain: str):\n    \"\"\"Lots of work to do here...\"\"\"\n    pairs = compute_daily_pairs(ts, domain, is_12z=False)\n    pairs12z = compute_daily_pairs(ts, domain, is_12z=True)\n\n    # One Off\n    for vname in [\"min_rh\", \"max_rh\"]:\n        aggfunc = np.ma.max if vname == \"max_rh\" else np.ma.min\n        res = None\n        for pair in pairs:\n            ncfn = get_hourly_ncname(pair[0].year, domain)\n            tidx1 = hourly_offset(pair[0])\n            tidx2 = hourly_offset(pair[1])\n            with ncopen(ncfn, timeout=600) as nc:\n                tmpk = nc.variables[\"tmpk\"]\n                dwpk = nc.variables[\"dwpk\"]\n                for offset in range(tidx1, tidx2 + 1):\n                    with warnings.catch_warnings(\n                        category=RuntimeWarning, action=\"ignore\"\n                    ):\n                        rh = (\n                            relative_humidity_from_dewpoint(\n                                units(\"degK\") * tmpk[offset],\n                                units(\"degK\") * dwpk[offset],\n                            ).m\n                            * 100.0\n                        )\n                    if res is None:\n                        res = rh\n                    else:\n                        res = aggfunc([res, rh], axis=0)\n        ds[vname].values = res\n\n    # One off\n    hours = 0\n    runningsum = None\n    for pair in pairs:\n        ncfn = get_hourly_ncname(pair[0].year, domain)\n        tidx1 = hourly_offset(pair[0])\n        tidx2 = hourly_offset(pair[1])\n        with ncopen(ncfn, timeout=600) as nc:\n            uwnd = nc.variables[\"uwnd\"]\n            vwnd = nc.variables[\"vwnd\"]\n            for offset in range(tidx1, tidx2 + 1):\n                val = np.hypot(uwnd[offset], vwnd[offset])\n                quorum_pct = 100.0 - np.ma.count_masked(val) / val.size * 100.0\n                if quorum_pct < QUORUM_THRESHOLDS[domain]:\n                    dt = utc(pair[0].year) + timedelta(hours=offset)\n                    LOG.info(\n                        \"Skipping wind at offset %s[%s] %.2f<%.2f required\",\n                        offset,\n                        f\"{dt:%Y-%m-%d %H}\",\n                        quorum_pct,\n                        QUORUM_THRESHOLDS[domain],\n                    )\n                    continue\n                if runningsum is None:\n                    runningsum = val\n                else:\n                    runningsum += val\n                hours += 1\n    if hours > 0:\n        ds[\"wind_speed\"].values = runningsum / hours\n    # -----------------------------------------------------------------\n    aggfuncs = {\n        \"high_tmpk\": np.ma.max,\n        \"low_tmpk\": np.ma.min,\n        \"p01d\": np.ma.sum,\n        \"high_soil4t\": np.ma.max,\n        \"avg_dwpk\": np.ma.mean,\n        \"rsds\": np.ma.sum,\n        \"low_soil4t\": np.ma.min,\n        \"high_tmpk_12z\": np.ma.max,\n        \"low_tmpk_12z\": np.ma.min,\n        \"p01d_12z\": np.ma.sum,\n    }\n    for vname in (\n        \"high_tmpk low_tmpk p01d high_soil4t avg_dwpk rsds \"\n        \"low_soil4t high_tmpk_12z low_tmpk_12z p01d_12z\"\n    ).split():\n        if vname == \"rsds\" and domain == \"conus\":\n            # Done via other means\n            continue\n        res = None\n        aggfunc = aggfuncs[vname]\n        ncvarname = (\n            vname.replace(\"high_\", \"\")\n            .replace(\"low_\", \"\")\n            .replace(\"_12z\", \"\")\n            .replace(\"avg_\", \"\")\n        )\n        ncvarname = \"p01m\" if ncvarname == \"p01d\" else ncvarname\n        for pair in pairs12z if vname.endswith(\"12z\") else pairs:\n            ncfn = get_hourly_ncname(pair[0].year, domain)\n            tidx1 = hourly_offset(pair[0])\n            tidx2 = hourly_offset(pair[1])\n            tslice = slice(tidx1, tidx2 + 1)\n            if vname.startswith(\"p01d\"):\n                # Caution: precip is stored arrears, so we have ugliness\n                tslice = slice(0 if tidx1 == 0 else tidx1 + 1, tidx2 + 2)\n            LOG.info(\"Using %s[%s] for %s\", ncfn, tslice, vname)\n            with ncopen(ncfn, timeout=600) as nc:\n                ncvar = nc.variables[ncvarname]\n                ncval = aggfunc(ncvar[tslice], axis=0)\n                if res is None:\n                    res = ncval\n                else:\n                    res = aggfunc([res, ncval], axis=0)\n        # NB: these are crude bias offsets involved when using hourly data\n        if vname in [\"high_tmpk\", \"high_tmpk_12z\"]:\n            res += 0.8\n        if vname in [\"low_tmpk\", \"low_tmpk_12z\"]:\n            res -= 0.8\n        if vname == \"rsds\":\n            # Convert from Wm-2\n            res = res / 24.0\n        ds[vname].values = res\n\n\ndef use_climodat_12z(ts, ds):\n    \"\"\"Look at what we have in climodat.\"\"\"\n    mybuf = 2\n    gridnav = get_nav(\"iemre\")\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH mystations as (\n            SELECT id, ST_X(geom) as lon, ST_Y(geom) as lat, state, name\n            from stations where ST_Contains(\n            ST_MakeEnvelope(:west, :south, :east, :north, 4326), geom) and\n            network ~* 'CLIMATE' and substr(id, 3, 1) not in ('C', 'D', 'T')\n            and substr(id, 3, 4) != '0000'\n        )\n        SELECT m.lon, m.lat, m.state, m.id as station, m.name as name,\n        case when (precip_estimated or precip_hour is null or\n            precip_hour < 4 or precip_hour > 11) then null\n            else precip end as precipdata,\n        snow as snowdata, snowd as snowddata,\n        case when temp_estimated then null else high end as highdata_all,\n        case when temp_estimated then null else low end as lowdata_all\n        from alldata a JOIN mystations m\n        ON (a.station = m.id) WHERE a.day = :ts\n        \"\"\"),\n            conn,\n            params={\n                \"west\": gridnav.left - mybuf,\n                \"south\": gridnav.bottom - mybuf,\n                \"east\": gridnav.right + mybuf,\n                \"north\": gridnav.top + mybuf,\n                \"ts\": ts,\n            },\n        )\n    LOG.info(\"loaded %s rows from climodat database\", len(df.index))\n    if len(df.index) < 50:\n        if ts != date.today():\n            LOG.warning(\"Failed quorum\")\n        return\n    if ts.year < 1951:\n        res = generic_gridder(df, \"highdata_all\")\n        ds[\"high_tmpk_12z\"].values = convert_value(res, \"degF\", \"degK\")\n\n        res = generic_gridder(df, \"lowdata_all\")\n        ds[\"low_tmpk_12z\"].values = convert_value(res, \"degF\", \"degK\")\n\n    res = generic_gridder(df, \"snowdata\")\n    if res is not None and ts < date(2008, 10, 1):  # NOHRSC covers\n        ds[\"snow_12z\"].values = convert_value(res, \"inch\", \"millimeter\")\n\n    res = generic_gridder(df, \"snowddata\")\n    if res is not None:\n        ds[\"snowd_12z\"].values = convert_value(res, \"inch\", \"millimeter\")\n\n\ndef use_asos_daily(ts, ds, domain):\n    \"\"\"Grid out available ASOS data.\"\"\"\n    mybuf = 2.0\n    gridnav = get_nav(\"iemre\", domain)\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n           SELECT ST_x(s.geom) as lon, ST_y(s.geom) as lat, s.state,\n           s.name, s.id as station,\n           (CASE WHEN pday >= 0 then pday else null end) as precipdata,\n           (CASE WHEN max_tmpf > -50 and max_tmpf < 130\n               then max_tmpf else null end) as highdata,\n           (CASE WHEN min_tmpf > -50 and min_tmpf < 95\n               then min_tmpf else null end) as lowdata,\n           (CASE WHEN max_dwpf > -50 and max_dwpf < 130\n               then max_dwpf else null end) as highdwpf,\n           (CASE WHEN min_dwpf > -50 and min_dwpf < 95\n               then min_dwpf else null end) as lowdwpf,\n            (CASE WHEN min_rh > 0 and min_rh < 101\n             then min_rh else null end) as minrh,\n            (CASE WHEN max_rh > 0 and max_rh < 101\n             then max_rh else null end) as maxrh\n           from {table} c, stations s WHERE day = :ts and\n           ST_Contains(ST_MakeEnvelope(:west, :south, :east, :north, 4326),\n           geom) and s.network ~* 'ASOS'\n           and c.iemid = s.iemid\n            \"\"\",\n                table=f\"summary_{ts:%Y}\",\n            ),\n            conn,\n            params={\n                \"west\": gridnav.left - mybuf,\n                \"south\": gridnav.bottom - mybuf,\n                \"east\": gridnav.right + mybuf,\n                \"north\": gridnav.top + mybuf,\n                \"ts\": ts,\n            },\n        )\n    if len(df.index) < 4:\n        LOG.warning(\"Failed data quorum\")\n        return\n    if len(df.index) > 300:\n        LOG.info(\"Using ASOS for high/low\")\n        res = generic_gridder(df, \"highdata\", domain)\n        ds[\"high_tmpk\"].values = convert_value(res, \"degF\", \"degK\")\n        res = generic_gridder(df, \"lowdata\", domain)\n        ds[\"low_tmpk\"].values = convert_value(res, \"degF\", \"degK\")\n\n    # We have alternative\n    hres = generic_gridder(df, \"highdwpf\", domain)\n    lres = generic_gridder(df, \"lowdwpf\", domain)\n    if hres is not None and lres is not None:\n        ds[\"avg_dwpk\"].values = convert_value(\n            (hres + lres) / 2.0, \"degF\", \"degK\"\n        )\n    res = generic_gridder(df, \"minrh\", domain)\n    if res is not None:\n        ds[\"min_rh\"].values = res\n    res = generic_gridder(df, \"maxrh\", domain)\n    if res is not None:\n        ds[\"max_rh\"].values = res\n\n\ndef use_climodat_daily(ts: date, ds):\n    \"\"\"Do our gridding\"\"\"\n    mybuf = 2.0\n    gridnav = get_nav(\"iemre\")\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n        WITH mystations as (\n            SELECT id, ST_X(geom) as lon, ST_Y(geom) as lat, state, name\n            from stations where ST_Contains(\n            ST_MakeEnvelope(:west, :south, :east, :north, 4326), geom) and\n            network ~* 'CLIMATE' and substr(id, 3, 1) not in ('C', 'D', 'T')\n            and substr(id, 3, 4) != '0000'\n        )\n        SELECT m.lon, m.lat, m.state, m.id as station, m.name as name,\n        case when not temp_estimated then high else null end as highdata_all,\n        case when not temp_estimated then low else null end as lowdata_all,\n        case when not precip_estimated then precip else null end as\n            precipdata_all,\n        case when temp_estimated or temp_hour is null or high < -50 or\n            high > 130 or (temp_hour > 4 and temp_hour < 13) then null\n            else high end as highdata,\n        case when temp_estimated or temp_hour is null or low < -90 or low > 90\n            or (temp_hour > 4 and temp_hour < 13) then null else low end\n            as lowdata,\n        case when precip_estimated or precip_hour is null or\n        (precip_hour > 4 and precip_hour < 13) then null else precip end\n            as precipdata\n        from alldata a JOIN mystations m\n        ON (a.station = m.id) WHERE a.day = :ts\n        \"\"\"),\n            conn,\n            params={\n                \"west\": gridnav.left - mybuf,\n                \"south\": gridnav.bottom - mybuf,\n                \"east\": gridnav.right + mybuf,\n                \"north\": gridnav.top + mybuf,\n                \"ts\": ts,\n            },\n        )\n    if len(df.index) < 4:\n        if ts != date.today():\n            LOG.warning(\"Failed quorum\")\n        return\n    suffix = \"_all\" if ts.year < 1951 else \"\"\n    res = generic_gridder(df, f\"highdata{suffix}\")\n    if res is not None:\n        ds[\"high_tmpk\"].values = convert_value(res, \"degF\", \"degK\")\n    res = generic_gridder(df, f\"lowdata{suffix}\")\n    if res is not None:\n        ds[\"low_tmpk\"].values = convert_value(res, \"degF\", \"degK\")\n    res = generic_gridder(df, f\"precipdata{suffix}\")\n    if res is not None:\n        ds[\"p01d\"].values = convert_value(res, \"inch\", \"mm\")\n\n\ndef workflow(ts: date, domain: str):\n    \"\"\"Do Work\"\"\"\n    # load up our current data\n    ds = get_grids(ts, domain=domain)\n    LOG.info(\"loaded %s variables from IEMRE database\", len(ds))\n\n    # rsds -> grid_rsds.py\n    # power_swdn -> TODO\n\n    # high_tmpk, low_tmpk, p01d, wind_speed, min_rh, max_rh, high_soil4t,\n    # low_soil4t, high_tmpk_12z low_tmpk_12z p01d_12z\n    if ts.year > 1949:\n        copy_iemre_hourly(ts, ds, domain)\n    else:\n        # While data does exist, we have practical availability issues\n        if ts.year > 1940:\n            LOG.info(\"Using ASOS for daily summary variables\")\n            use_asos_daily(ts, ds, domain)\n        if domain == \"conus\":\n            use_climodat_daily(ts, ds)\n\n    if domain == \"conus\":\n        # snow_12z snowd_12z\n        use_climodat_12z(ts, ds)\n\n    for vname in list(ds.keys()):\n        # Some grids are too tight to the land boundary, so we smear as a hack\n        vals = ds[vname].to_masked_array()\n        vals = grid_smear(vals, shift=4)\n        ds[vname].values = vals\n        # Compute the precentage of points within vals that are missing/NaN\n        pct_missing = 100.0 * vals.mask.sum() / vals.size\n        msg = (\n            f\"{vname:14s} {ds[vname].min():6.2f} {ds[vname].max():6.2f} \"\n            f\"{pct_missing:6.2f}% missing\"\n        )\n        LOG.info(msg)\n    set_grids(ts, ds, domain=domain)\n    subprocess.call(\n        [\n            \"python\",\n            \"db_to_netcdf.py\",\n            f\"--date={ts:%Y-%m-%d}\",\n            f\"--domain={domain}\",\n        ]\n    )\n\n\n@click.command()\n@click.option(\n    \"--date\", \"valid\", type=click.DateTime(), help=\"Date\", required=True\n)\n@click.option(\"--domain\", default=\"conus\", help=\"Domain to process\", type=str)\ndef main(valid: datetime, domain: str):\n    \"\"\"Go Main Go\"\"\"\n    dt = valid.date()\n    LOG.info(\"Run %s for domain: '%s'\", dt, domain)\n    workflow(dt, domain)\n    LOG.info(\"Done.\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/db_to_netcdf.py",
    "content": "\"\"\"Copy database grids to netcdf.\n\n    Example: python db_to_netcdf.py <year> <month> <day> <utchour>\n\nIf hour and minute are omitted, this is a daily copy, otherwise hourly.\n\nsee: akrherz/iem#199\n\"\"\"\n\nimport warnings\nfrom datetime import datetime\n\nimport click\nimport numpy as np\nfrom pyiem import iemre\nfrom pyiem.util import logger, ncopen\n\n# We are going from float64 to uint16, so this appears to be unavoidable\nwarnings.simplefilter(\"ignore\", RuntimeWarning)\nLOG = logger()\n\n\n@click.command()\n@click.option(\n    \"--date\",\n    \"dt\",\n    required=True,\n    type=click.DateTime(),\n    help=\"Valid timestamp\",\n)\n@click.option(\"--domain\", default=\"conus\", help=\"Domain to process\")\n@click.option(\"--varname\", default=None, help=\"Variable to process\")\ndef main(dt: datetime, domain: str, varname: str | None) -> None:\n    \"\"\"Go Main Go.\"\"\"\n    dt = dt.date()\n    ncfn = iemre.get_daily_ncname(dt.year, domain=domain)\n    idx = iemre.daily_offset(dt)\n    ds = iemre.get_grids(dt, domain=domain, varnames=varname)\n    with ncopen(ncfn, \"a\", timeout=600) as nc:\n        for vname in ds:\n            if vname not in nc.variables:\n                LOG.warning(\"Variable %s not in netcdf file, skipping\", vname)\n                continue\n            # Careful here, ds could contain NaN values\n            nc.variables[vname][idx] = np.ma.array(\n                ds[vname].values, mask=np.isnan(ds[vname].values)\n            )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/grid_climate.py",
    "content": "\"\"\"Grid climate for netcdf usage\"\"\"\n\nfrom datetime import datetime\n\nimport click\nimport numpy as np\nimport pandas as pd\nfrom pyiem import iemre\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import convert_value, logger, ncopen\nfrom scipy.interpolate import NearestNDInterpolator\n\nLOG = logger()\n\n\ndef generic_gridder(nc, df, idx):\n    \"\"\"\n    Generic gridding algorithm for easy variables\n    \"\"\"\n    xi, yi = np.meshgrid(nc.variables[\"lon\"][:], nc.variables[\"lat\"][:])\n    nn = NearestNDInterpolator(\n        (df[\"lon\"].values, df[\"lat\"].values), df[idx].values\n    )\n    grid = nn(xi, yi)\n    LOG.info(\n        \"%s %s %.3f %.3f\",\n        len(df.index),\n        idx,\n        np.max(grid),\n        np.min(grid),\n    )\n    if grid is not None:\n        return grid\n    return None\n\n\ndef grid_solar(nc, ts):\n    \"\"\"Special Solar Ops.\"\"\"\n    offset = iemre.daily_offset(ts)\n    if ts.day == 29 and ts.month == 2:\n        ts = datetime(2000, 3, 1)\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        # Look for stations with data back to 1979 for merra\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            with data as (\n                select station, count(*), avg(merra_srad) from alldata\n                where sday = :sday and merra_srad is not null\n                GROUP by station\n            )\n            SELECT d.avg as rad, st_x(t.geom) as lon, st_y(t.geom) as lat,\n            station from data d JOIN stations t ON (d.station = t.id)\n            WHERE count >= :minyears\n        \"\"\"\n            ),\n            conn,\n            params={\n                \"sday\": ts.strftime(\"%m%d\"),\n                \"minyears\": (2020 - 1979),  # approx\n            },\n            index_col=\"station\",\n        )\n    # Database storage is MJ, so is our netcdf\n    nc.variables[\"swdn\"][offset] = generic_gridder(nc, df, \"rad\")\n\n\ndef grid_day(nc, ts):\n    \"\"\"Grid things.\"\"\"\n    offset = iemre.daily_offset(ts)\n    if ts.day == 29 and ts.month == 2:\n        ts = datetime(2000, 3, 1)\n\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            SELECT c.*, st_x(t.geom) as lon, st_y(t.geom) as lat\n            from ncei_climate91 c JOIN stations t ON (c.station = t.id)\n            WHERE valid = %s\n        \"\"\",\n            conn,\n            params=(ts,),\n            index_col=\"station\",\n        )\n    if \"high_tmpk\" in nc.variables:\n        res = generic_gridder(nc, df, \"high\")\n        if res is not None:\n            nc.variables[\"high_tmpk\"][offset] = convert_value(\n                res, \"degF\", \"degK\"\n            )\n        res = generic_gridder(nc, df, \"low\")\n        if res is not None:\n            nc.variables[\"low_tmpk\"][offset] = convert_value(\n                res, \"degF\", \"degK\"\n            )\n    res = generic_gridder(nc, df, \"precip\")\n    if res is not None:\n        nc.variables[\"p01d\"][offset] = convert_value(res, \"inch\", \"millimeter\")\n\n\ndef workflow(ts):\n    \"\"\"Do Work\"\"\"\n\n    # Load up our netcdf file!\n    with ncopen(\n        iemre.get_dailyc_ncname(domain=\"conus\"), \"a\", timeout=300\n    ) as nc:\n        grid_day(nc, ts)\n        grid_solar(nc, ts)\n\n    with ncopen(iemre.get_dailyc_mrms_ncname(), \"a\", timeout=300) as nc:\n        grid_day(nc, ts)\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), help=\"Specific date\")\ndef main(dt: datetime | None):\n    \"\"\"Go Main!\"\"\"\n    if dt:\n        workflow(dt)\n    else:\n        for ts in pd.date_range(\"2000/1/1\", \"2000/12/31\"):\n            LOG.info(ts)\n            workflow(ts)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/grid_climate_ifc.py",
    "content": "\"\"\"Grid climate for netcdf usage\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem import iemre\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.util import convert_value, logger, ncopen\nfrom scipy.interpolate import NearestNDInterpolator\n\nLOG = logger()\n\n\ndef generic_gridder(nc, df, idx):\n    \"\"\"\n    Generic gridding algorithm for easy variables\n    \"\"\"\n    xi, yi = np.meshgrid(nc.variables[\"lon\"][:], nc.variables[\"lat\"][:])\n    nn = NearestNDInterpolator(\n        (df[\"lon\"].values, df[\"lat\"].values),\n        df[\"precip\"].values,\n    )\n    grid = nn(xi, yi)\n    LOG.info(\n        \"%s %s grid:%.3f->%.3f obs:%.2f->%.2f\",\n        len(df.index),\n        idx,\n        np.min(grid),\n        np.max(grid),\n        df[idx].min(),\n        df[idx].max(),\n    )\n    if grid is not None:\n        return grid\n    return None\n\n\ndef grid_day(nc, ts):\n    \"\"\"\n    I proctor the gridding of data on an hourly basis\n    @param ts Timestamp of the analysis, we'll consider a 20 minute window\n    \"\"\"\n    offset = iemre.daily_offset(ts)\n    if ts.day == 29 and ts.month == 2:\n        ts = datetime(2000, 3, 1)\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            \"select station, st_x(geom) as lon, st_y(geom) as lat, precip \"\n            \"from ncei_climate91 c JOIN stations t on (c.station = t.id) \"\n            \"WHERE t.network = 'NCEI91' and c.valid = %s\",\n            conn,\n            params=(ts.strftime(\"%Y-%m-%d\"),),\n            index_col=\"station\",\n        )\n    if len(df.index) > 4:\n        res = generic_gridder(nc, df, \"precip\")\n        if res is not None:\n            nc.variables[\"p01d\"][offset] = convert_value(\n                res, \"inch\", \"millimeter\"\n            )\n    else:\n        print(\n            (\"%s has %02i entries, FAIL\")\n            % (ts.strftime(\"%Y-%m-%d\"), len(df.index))\n        )\n\n\ndef workflow(ts):\n    \"\"\"our workflow\"\"\"\n    # Load up our netcdf file!\n    with ncopen(\"/mesonet/data/iemre/ifc_dailyc.nc\", \"a\") as nc:\n        grid_day(nc, ts)\n\n\ndef main():\n    \"\"\"Go Main!\"\"\"\n    sts = datetime(2000, 1, 1)\n    ets = datetime(2001, 1, 1)\n    interval = timedelta(days=1)\n    now = sts\n    while now < ets:\n        print(now)\n        workflow(now)\n        now += interval\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/grid_climate_stage4.py",
    "content": "\"\"\"Grid climate for netcdf usage\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem import iemre\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import convert_value, logger, ncopen\nfrom scipy.interpolate import NearestNDInterpolator\n\nLOG = logger()\n\n\ndef generic_gridder(nc, df, idx):\n    \"\"\"\n    Generic gridding algorithm for easy variables\n    \"\"\"\n    xi = nc.variables[\"lon\"][:]\n    yi = nc.variables[\"lat\"][:]\n    nn = NearestNDInterpolator(\n        (df[\"lon\"].values, df[\"lat\"].values),\n        df[\"precip\"].values,\n    )\n    grid = nn(xi, yi)\n    LOG.info(\n        \"%s %s grid:%.3f->%.3f obs:%.2f->%.2f\",\n        len(df.index),\n        idx,\n        np.min(grid),\n        np.max(grid),\n        df[idx].min(),\n        df[idx].max(),\n    )\n    if grid is not None:\n        return grid\n    return None\n\n\ndef grid_day(nc, ts):\n    \"\"\"\n    I proctor the gridding of data on an hourly basis\n    @param ts Timestamp of the analysis, we'll consider a 20 minute window\n    \"\"\"\n    offset = iemre.daily_offset(ts)\n    if ts.day == 29 and ts.month == 2:\n        ts = datetime(2000, 3, 1)\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n    select station, st_x(geom) as lon, st_y(geom) as lat, precip\n    from ncei_climate91 c JOIN stations t on (c.station = t.id)\n    WHERE t.network = 'NCEI91' and c.valid = :dt\n\"\"\"),\n            conn,\n            params={\"dt\": ts.date()},\n            index_col=\"station\",\n        )\n    if len(df.index) > 4:\n        res = generic_gridder(nc, df, \"precip\")\n        if res is not None:\n            nc.variables[\"p01d_12z\"][offset] = convert_value(\n                res, \"inch\", \"millimeter\"\n            )\n    else:\n        LOG.warning(\n            \"%s has %02i entries, FAIL\",\n            ts.strftime(\"%Y-%m-%d\"),\n            len(df.index),\n        )\n\n\ndef workflow(ts):\n    \"\"\"our workflow\"\"\"\n    # Load up a station table we are interested in\n\n    # Load up our netcdf file!\n    with ncopen(\"/mesonet/data/stage4/stage4_dailyc.nc\", \"a\") as nc:\n        grid_day(nc, ts)\n\n\ndef main():\n    \"\"\"Go Main!\"\"\"\n    sts = datetime(2000, 1, 1)\n    ets = datetime(2001, 1, 1)\n    interval = timedelta(days=1)\n    now = sts\n    while now < ets:\n        LOG.warning(now)\n        workflow(now)\n        now += interval\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/grid_rsds.py",
    "content": "\"\"\"Do the gridding of Solar Radiation Data\n\nThis used to use MERRAv2 for non-realtime data, but a crude assessment found\nERA5land to produce better results.\n\nCalled from:\n - RUN_MIDNIGHT.sh for previous day\n - RUN_0Z.sh for 8 days ago\n - RUN_10_AFTER.sh at 11 PM for the current day\n\"\"\"\n\nimport subprocess\nfrom datetime import datetime, timedelta\nfrom pathlib import Path\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport numpy as np\nimport pygrib\nimport pyproj\nimport xarray as xr\nfrom affine import Affine\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.grid.util import grid_smear\nfrom pyiem.iemre import DOMAINS as IEMRE_DOMAINS\nfrom pyiem.iemre import hourly_offset, reproject2iemre, set_grids\nfrom pyiem.util import archive_fetch, logger, ncopen, utc\n\nLOG = logger()\nP4326 = pyproj.Proj(\"EPSG:4326\")\nSWITCH_DATE = utc(2014, 10, 10, 20)\n\n\ndef try_era5land(ts: datetime, domain: str) -> np.ndarray | None:\n    \"\"\"Attempt to use ERA5Land data.\"\"\"\n    dd = \"\" if domain == \"conus\" else f\"_{domain}\"\n    # inbound `ts` represents noon local time, we want values from 1 AM\n    # till midnight\n    one_am = ts.replace(hour=1).astimezone(ZoneInfo(\"UTC\"))\n    midnight = (\n        (ts + timedelta(days=1)).replace(hour=0).astimezone(ZoneInfo(\"UTC\"))\n    )\n    # If years are equal, we don't have to span files\n    idx0 = hourly_offset(one_am)\n    idx1 = hourly_offset(midnight) + 1\n    ncfn = f\"/mesonet/data/era5{dd}/{one_am.year}_era5land_hourly.nc\"\n    if not Path(ncfn).is_file():\n        LOG.info(\"Missing %s\", ncfn)\n        return None\n    if one_am.year == midnight.year:\n        with ncopen(ncfn) as nc:\n            total = np.ma.sum(nc.variables[\"rsds\"][idx0:idx1, :, :], axis=0)\n    else:\n        with ncopen(ncfn) as nc:\n            total = np.ma.sum(nc.variables[\"rsds\"][idx0:, :, :], axis=0)\n        ncfn = f\"/mesonet/data/era5{dd}/{midnight.year}_era5land_hourly.nc\"\n        with ncopen(ncfn) as nc:\n            total += np.ma.sum(nc.variables[\"rsds\"][:idx1, :, :], axis=0)\n\n    # If total is all missing, then we have no data\n    if total.mask.all():\n        return None\n    # We wanna store as W m-2, so we just average out the data by hour\n    total = total / 24.0\n\n    # The affine defines the edges of the grid\n    aff = get_nav(\"era5land\", domain).affine\n    vals = reproject2iemre(total, aff, P4326.crs, domain=domain)\n\n    # ERA5Land is too tight to the coast, so we need to jitter the grid\n    # 7 and 4 was found to be enough to appease DEP's needs\n    # NOTE: HRRR and GFS do not need this\n    vals = grid_smear(vals, shift=7)\n    vals = grid_smear(vals, shift=4)\n\n    return vals\n\n\ndef do_gfs(ts: datetime, domain: str) -> np.ndarray | None:\n    \"\"\"Attempt to use the GFS.\"\"\"\n    # Major complications with GFS 6 hour data being averaged and which\n    # time period to use to get a \"daily\" value.\n    # For europe, use 6z through 0z(tomorrow)\n    # For china, use 0z through 18z\n    dd = \"\" if domain == \"conus\" else f\"_{domain}\"\n\n    # Rectify now back to hour modulo 6\n    utcnow = ts.astimezone(ZoneInfo(\"UTC\"))\n    utcnow = utcnow.replace(\n        hour=(utcnow.hour // 6) * 6, minute=0, second=0, microsecond=0\n    ) - timedelta(hours=12)\n    attempt = 4\n    while attempt > 0:\n        ppath = (\n            f\"{utcnow:%Y/%m/%d}/model/gfs/gfs_{utcnow:%Y%m%d%H}_iemre{dd}.nc\"\n        )\n        with archive_fetch(ppath) as fn:\n            if fn is None:\n                attempt -= 1\n                utcnow -= timedelta(hours=6)\n                continue\n            tidx = (ts.date() - utcnow.date()).days\n            LOG.info(\"Using GFS %s for day index:%s\", utcnow, tidx)\n            with ncopen(fn) as nc:\n                # convert MJ/d to W/m^2\n                srad = nc.variables[\"srad\"][tidx] * 1e6 / 86400.0\n            return srad\n    return None\n\n\ndef do_hrrr(ts: datetime) -> np.ndarray | None:\n    \"\"\"Convert the hourly HRRR data to IEMRE grid\"\"\"\n    LCC = pyproj.Proj(\n        \"+lon_0=-97.5 +y_0=0.0 +R=6367470. +proj=lcc +x_0=0.0 \"\n        \"+units=m +lat_2=38.5 +lat_1=38.5 +lat_0=38.5\"\n    )\n    total = None\n    # So IEMRE is storing data from coast to coast, so we should be\n    # aggressive about running for an entire calendar date\n    for hr in range(24):\n        utcnow = ts.replace(hour=hr).astimezone(ZoneInfo(\"UTC\"))\n        LOG.info(\"Considering timestamp %s\", utcnow)\n        # Try the newer f01 files, which have better data!\n        ppath = (utcnow - timedelta(hours=1)).strftime(\n            \"%Y/%m/%d/model/hrrr/%H/hrrr.t%Hz.3kmf01.grib2\"\n        )\n        grbname = \"Time-mean surface downward short-wave radiation flux\"\n        with archive_fetch(ppath) as fn:\n            if fn is not None:\n                try:\n                    grbs = pygrib.open(fn)\n                    selgrbs = grbs.select(name=grbname)\n                except Exception:\n                    LOG.warning(\"Read of %s failed\", fn)\n                    continue\n                # sometimes we have multiple grids :/\n                if len(selgrbs) >= 4:\n                    LOG.info(\"Using %s\", fn)\n                    # Goodie\n                    subtotal = None\n                    for g in selgrbs:\n                        if total is None:\n                            lat1 = g[\"latitudeOfFirstGridPointInDegrees\"]\n                            lon1 = g[\"longitudeOfFirstGridPointInDegrees\"]\n                            llcrnrx, llcrnry = LCC(lon1, lat1)\n                            dx = g[\"DxInMetres\"]\n                            dy = g[\"DyInMetres\"]\n                        if subtotal is None:\n                            subtotal = g.values\n                        else:\n                            subtotal += g.values\n                    if total is None:\n                        total = subtotal / float(len(selgrbs))\n                    else:\n                        total += subtotal / float(len(selgrbs))\n                    continue\n\n        ppath = utcnow.strftime(\n            \"%Y/%m/%d/model/hrrr/%H/hrrr.t%Hz.3kmf00.grib2\"\n        )\n        with archive_fetch(ppath) as fn:\n            if fn is None:\n                continue\n            grbs = pygrib.open(fn)\n            try:\n                if utcnow >= SWITCH_DATE:\n                    grb = grbs.select(\n                        name=\"Downward short-wave radiation flux\"\n                    )\n                else:\n                    grb = grbs.select(parameterNumber=192)\n            except ValueError:\n                # don't complain about late evening no-solar\n                if utcnow.hour > 10 and utcnow.hour < 24:\n                    LOG.info(\" %s had no solar rad\", fn)\n                continue\n            if not grb:\n                LOG.info(\"Could not find SWDOWN in HRR %s\", fn)\n                continue\n            LOG.info(\"Using %s\", fn)\n            g = grb[0]\n            if total is None:\n                total = g.values\n                lat1 = g[\"latitudeOfFirstGridPointInDegrees\"]\n                lon1 = g[\"longitudeOfFirstGridPointInDegrees\"]\n                llcrnrx, llcrnry = LCC(lon1, lat1)\n                dx = g[\"DxInMetres\"]\n                dy = g[\"DyInMetres\"]\n            else:\n                total += g.values\n\n    if total is None:\n        LOG.info(\"found no HRRR data for %s\", ts.strftime(\"%d %b %Y\"))\n        return None\n\n    # We wanna store as W m-2, so we just average out the data by hour\n    total = total / 24.0\n    # This is the edge and not the center of the UL pixel\n    affine_in = Affine(\n        dx, 0.0, llcrnrx - dx / 2.0, 0.0, dy, llcrnry + dy / 2.0\n    )\n\n    srad = reproject2iemre(total, affine_in, LCC.crs)\n    return srad\n\n\ndef postprocess(srad: np.ndarray, ts: datetime, domain: str) -> bool:\n    \"\"\"Do the necessary work.\"\"\"\n    avgval = np.ma.mean(srad)\n    # 50 was found to be too high in Europe\n    if avgval < 10:\n        LOG.warning(\"Average value is %.2f and below 10, skipping\", avgval)\n        return False\n\n    ds = xr.Dataset(\n        {\n            \"rsds\": xr.DataArray(\n                srad,\n                dims=(\"y\", \"x\"),\n            )\n        }\n    )\n    set_grids(ts.date(), ds, domain=domain)\n    subprocess.call(\n        [\n            \"python\",\n            \"db_to_netcdf.py\",\n            f\"--date={ts:%Y-%m-%d}\",\n            f\"--domain={domain}\",\n            \"--varname=rsds\",\n        ]\n    )\n\n    return True\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", required=False, type=click.DateTime())\n@click.option(\"--year\", required=False, type=int, help=\"Run for Year,month\")\n@click.option(\"--month\", required=False, type=int, help=\"Run for Year,month\")\n@click.option(\"--domain\", default=\"\", help=\"Run for specific domain\")\ndef main(dt: datetime | None, year, month, domain: str):\n    \"\"\"Go Main Go\"\"\"\n    queue = []\n    if year is not None and month is not None:\n        now = datetime(year, month, 1, 12)\n        while now.month == month:\n            queue.append(now)\n            now += timedelta(days=1)\n    else:\n        queue.append(dt.replace(hour=12))\n    for sts_in in queue:\n        for thisdomain, dom in IEMRE_DOMAINS.items():\n            if domain not in (\"\", thisdomain):\n                LOG.info(\"Skipping %s domain due to CLI args\", thisdomain)\n                continue\n            sts = sts_in.replace(tzinfo=dom[\"tzinfo\"])\n            srad = try_era5land(sts, thisdomain)\n            if srad is not None and postprocess(srad, sts, thisdomain):\n                continue\n            LOG.info(\"try_era5land failed to find data\")\n            if thisdomain == \"conus\":\n                srad = do_hrrr(sts)\n                if srad is not None and postprocess(srad, sts, thisdomain):\n                    continue\n                LOG.info(\"do_hrrr failed to find data\")\n            srad = do_gfs(sts, thisdomain)\n            if srad is None:\n                LOG.info(\"do_gfs failed to find data\")\n                continue\n            postprocess(srad, sts, thisdomain)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/hourly_analysis.py",
    "content": "\"\"\"I produce the hourly analysis used by IEMRE.\n\nRun from RUN_10_AFTER.sh\n\"\"\"\n\nimport os\nimport warnings\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport numpy as np\nimport pandas as pd\nimport pint\nimport pygrib\nfrom metpy.calc import wind_components\nfrom metpy.interpolate import inverse_distance_to_grid\nfrom metpy.units import masked_array, units\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.grid.util import grid_smear\nfrom pyiem.iemre import (\n    DOMAINS,\n    get_hourly_ncname,\n    grb2iemre,\n    hourly_offset,\n    reproject2iemre,\n)\nfrom pyiem.util import archive_fetch, logger, ncopen\n\n# Prevent invalid value encountered in cast\nwarnings.simplefilter(\"ignore\", RuntimeWarning)\nLOG = logger()\nMEMORY = {\"ts\": datetime.now()}\nSAMPLES = {\n    \"conus\": {\"name\": \"Ames\", \"lat\": 42.022, \"lon\": -93.617},\n    \"china\": {\"name\": \"Bejing\", \"lat\": 39.904, \"lon\": 116.407},\n    \"europe\": {\"name\": \"Berlin\", \"lat\": 52.520, \"lon\": 13.405},\n    \"sa\": {\"name\": \"Sao Paulo\", \"lat\": -23.550, \"lon\": -46.633},\n}\n\n\ndef use_era5land(ts, kind, domain: str):\n    \"\"\"Use the ERA5Land dataset.\"\"\"\n    tasks = {\n        \"wind\": [\"uwnd\", \"vwnd\"],\n    }\n    dd = \"\" if domain == \"conus\" else f\"_{domain}\"\n    ncfn = f\"/mesonet/data/era5{dd}/{ts:%Y}_era5land_hourly.nc\"\n    if not os.path.isfile(ncfn):\n        LOG.warning(\"Failed to find %s\", ncfn)\n        return None\n    tidx = hourly_offset(ts)\n    aff = get_nav(\"era5land\", domain).affine\n    try:\n        with ncopen(ncfn) as nc:\n            res = []\n            for task in tasks.get(kind, [kind]):\n                if task == \"soilt\":\n                    vals = nc.variables[task][tidx, 0, :, :]\n                else:\n                    vals = nc.variables[task][tidx, :, :]\n                if vals.mask.all():\n                    continue\n                # OK, ERA5Land is tight to land and when we interpolate\n                # we end up with slivers of no data.  So we goose things\n                # to smear data to the borders.\n                vals = grid_smear(vals, shift=4)\n                res.append(\n                    reproject2iemre(\n                        vals.filled(np.nan), aff, \"epsg:4326\", domain=domain\n                    )\n                )\n        if res:\n            LOG.info(\"found %s\", kind)\n            return res[0] if len(res) == 1 else res\n\n    except Exception as exp:\n        LOG.warning(\"%s exp:%s\", ncfn, exp)\n    LOG.info(\"returning None for %s\", kind)\n    return None\n\n\ndef use_hrrr_soilt(ts):\n    \"\"\"Verbatim copy HRRR, if it exists.\"\"\"\n    # We may be running close to real-time, so it makes some sense to take\n    # files from the recent past.\n    for offset in range(5):\n        fn = (ts - timedelta(hours=offset)).strftime(\n            \"%Y/%m/%d/model/hrrr/%H/hrrr.t%Hz.3kmf00.grib2\"\n        )\n        with archive_fetch(fn) as fn:\n            if fn is None:\n                continue\n            try:\n                grbs = pygrib.open(fn)\n                for grb in grbs:\n                    if (\n                        grb.shortName != \"st\"\n                        or str(grb).find(\"level 0.1 m\") == -1\n                    ):\n                        continue\n                    return grb2iemre(grb)\n                grbs.close()\n            except Exception as exp:\n                LOG.info(\"%s exp:%s\", fn, exp)\n    return None\n\n\ndef use_rtma(ts, kind):\n    \"\"\"Verbatim copy RTMA, if it exists.\"\"\"\n    if ts.year < 2011:\n        return None\n    ppath = ts.strftime(\"%Y/%m/%d/model/rtma/%H/rtma.t%Hz.awp2p5f000.grib2\")\n    with archive_fetch(ppath) as fn:\n        if fn is None:\n            return None\n        tasks = {\n            \"wind\": [\n                \"10u\",\n                \"10v\",\n            ],\n            \"tmp\": [\n                \"2t\",\n            ],\n            \"dwp\": [\n                \"2d\",\n            ],\n        }\n        res = []\n        try:\n            grbs = pygrib.open(fn)\n            for task in tasks[kind]:\n                grb = grbs.select(shortName=task, typeOfGeneratingProcess=0)[0]\n                res.append(grb2iemre(grb))\n            return res[0] if len(res) == 1 else res\n        except Exception as exp:\n            LOG.info(\"%s exp:%s for %s\", fn, exp, kind)\n        finally:\n            grbs.close()\n    return None\n\n\ndef grid_wind(df, domain):\n    \"\"\"\n    Grid winds based on u and v components\n    @return uwnd, vwnd\n    \"\"\"\n    # compute components\n    u = []\n    v = []\n    for _station, row in df.iterrows():\n        (_u, _v) = wind_components(\n            units(\"knot\") * row[\"sknt\"], units(\"degree\") * row[\"drct\"]\n        )\n        u.append(_u.to(\"meter / second\").m)\n        v.append(_v.to(\"meter / second\").m)\n    df[\"u\"] = u\n    df[\"v\"] = v\n    ugrid = generic_gridder(df, \"u\", domain)\n    vgrid = generic_gridder(df, \"v\", domain)\n    return ugrid, vgrid\n\n\ndef grid_skyc(df, domain):\n    \"\"\"Take the max sky coverage value.\"\"\"\n    cols = [\"max_skyc1\", \"max_skyc2\", \"max_skyc3\", \"max_skyc4\"]\n    df[\"skyc\"] = df[cols].max(axis=\"columns\")\n    return generic_gridder(df, \"skyc\", domain)\n\n\ndef generic_gridder(df, idx, domain):\n    \"\"\"Generic gridding algorithm for easy variables\"\"\"\n    gridnav = get_nav(\"iemre\", domain)\n    df2 = df[pd.notnull(df[idx])]\n    xi, yi = np.meshgrid(gridnav.x_points, gridnav.y_points)\n    res = np.ones(xi.shape) * np.nan\n    # do our gridding\n    grid = inverse_distance_to_grid(\n        df2[\"lon\"].values, df2[\"lat\"].values, df2[idx].values, xi, yi, 1.5\n    )\n    # replace nan values in res with whatever now is in grid\n    res = np.where(np.isnan(res), grid, res)\n    # Do we still have missing values?\n    if np.isnan(res).any():\n        # very aggressive with search radius\n        grid = inverse_distance_to_grid(\n            df2[\"lon\"].values, df2[\"lat\"].values, df2[idx].values, xi, yi, 5.5\n        )\n        # replace nan values in res with whatever now is in grid\n        res = np.where(np.isnan(res), grid, res)\n    # replace sentinel back to np.nan\n    # replace sentinel back to np.nan\n    res = np.where(res == -9999, np.nan, res)\n    return np.ma.array(res, mask=np.isnan(res))\n\n\ndef grid_hour(ts: datetime, domain: str):\n    \"\"\"\n    I proctor the gridding of data on an hourly basis\n    @param ts Timestamp of the analysis, we'll consider a 20 minute window\n    \"\"\"\n    LOG.info(\"Processing %s\", ts)\n    ts0 = ts - timedelta(minutes=10)\n    ts1 = ts + timedelta(minutes=10)\n\n    mybuf = 2.0\n    gridnav = get_nav(\"iemre\", domain)\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"SELECT station, ST_x(geom) as lon, st_y(geom) as lat,\n    max(case when tmpf > -60 and tmpf < 130 THEN tmpf else null end)\n        as max_tmpf,\n    max(case when sknt > 0 and sknt < 100 then sknt else 0 end) as max_sknt,\n    max(getskyc(skyc1)) as max_skyc1,\n    max(getskyc(skyc2)) as max_skyc2,\n    max(getskyc(skyc3)) as max_skyc3,\n    max(getskyc(skyc4)) as max_skyc4,\n    max(case when p01i > 0 and p01i < 1000 then p01i else 0 end) as phour,\n    max(case when dwpf > -60 and dwpf < 100 THEN dwpf else null end)\n        as max_dwpf,\n    max(case when sknt >= 0 then sknt else 0 end) as sknt,\n    max(case when sknt >= 0 then drct else 0 end) as drct\n    from alldata a JOIN stations t on (a.station = t.id) WHERE\n    ST_Contains(ST_MakeEnvelope(:west, :south, :east, :north, 4326), geom)\n    and t.network ~* 'ASOS' and\n    valid >= :ts0 and valid < :ts1 and report_type != 1\n    GROUP by station, lon, lat\"\"\"),\n            conn,\n            params={\n                \"west\": gridnav.left - mybuf,\n                \"south\": gridnav.bottom - mybuf,\n                \"east\": gridnav.right + mybuf,\n                \"north\": gridnav.top + mybuf,\n                \"ts0\": ts0,\n                \"ts1\": ts1,\n            },\n            index_col=\"station\",\n        )\n\n    # RSDS\n    res = use_era5land(ts, \"rsds\", domain)\n    if res is not None:\n        write_grid(ts, \"rsds\", res, domain)\n\n    # Soil Temperature, try ERA5Land\n    res = use_era5land(ts, \"soilt\", domain)\n    if res is None and domain == \"conus\":\n        # Use HRRR\n        res = use_hrrr_soilt(ts)\n    if res is not None:\n        write_grid(ts, \"soil4t\", res, domain)\n\n    # try first to use RTMA\n    res = None\n    if domain == \"conus\":\n        res = use_rtma(ts, \"wind\")\n    if res is None:\n        # try ERA5Land\n        res = use_era5land(ts, \"wind\", domain)\n    if res is not None:\n        ures, vres = res\n    else:\n        if df.empty:\n            LOG.warning(\"%s has no entries, FAIL\", ts)\n            return\n        ures, vres = grid_wind(df, domain)\n    if ures is None:\n        LOG.warning(\"Failure for uwnd at %s\", ts)\n    else:\n        write_grid(ts, \"uwnd\", ures, domain)\n        write_grid(ts, \"vwnd\", vres, domain)\n\n    # try first to use RTMA\n    res = None\n    if domain == \"conus\":\n        res = use_rtma(ts, \"tmp\")\n    tmp_used_rtma = res is not None\n    if res is None:\n        # try ERA5Land\n        res = use_era5land(ts, \"tmpk\", domain)\n    did_gridding = False\n    if res is not None:\n        tmpf = masked_array(res, data_units=\"degK\").to(\"degF\").m\n    else:\n        if df.empty:\n            LOG.warning(\"%s has no entries, FAIL\", ts)\n            return\n        did_gridding = True\n        tmpf = generic_gridder(df, \"max_tmpf\", domain)\n\n    # only use RTMA if tmp worked\n    res = None\n    if tmp_used_rtma:\n        res = use_rtma(ts, \"dwp\")\n    if res is None:\n        # try ERA5Land\n        res = use_era5land(ts, \"dwpk\", domain)\n        if res is not None and tmp_used_rtma:\n            LOG.info(\"Forcing ERA5Land temperature, since dewpoint used it\")\n            tmpf = (\n                masked_array(\n                    use_era5land(ts, \"tmpk\", domain), data_units=\"degK\"\n                )\n                .to(\"degF\")\n                .m\n            )\n    # Ensure we have RTMA temps available\n    if not did_gridding and res is not None:\n        dwpf = masked_array(res, data_units=\"degK\").to(\"degF\").m\n    else:\n        if df.empty:\n            LOG.warning(\"%s has no entries, FAIL\", ts)\n            return\n        dwpf = generic_gridder(df, \"max_dwpf\", domain)\n\n    # Only keep cases when tmpf >= dwpf and they are both not masked\n    # Note some truncation issues here, so our comparison is not perfect\n    idx = (tmpf >= (dwpf - 1)) & (~tmpf.mask) & (~dwpf.mask)\n    dwpf[~idx] = np.nan\n    tmpf[~idx] = np.nan\n\n    write_grid(\n        ts, \"tmpk\", masked_array(tmpf, data_units=\"degF\").to(\"degK\"), domain\n    )\n    write_grid(\n        ts, \"dwpk\", masked_array(dwpf, data_units=\"degF\").to(\"degK\"), domain\n    )\n    res = grid_skyc(df, domain)\n    if res is None:\n        LOG.warning(\"No obs for skyc at %s\", ts)\n    else:\n        write_grid(ts, \"skyc\", res, domain)\n\n\ndef write_grid(valid, vname, grid, domain: str):\n    \"\"\"Atomic write of data to our netcdf storage\n\n    This is isolated so that we don't 'lock' up our file while intensive\n    work is done\n    \"\"\"\n    if isinstance(grid, pint.Quantity):\n        grid = grid.m\n    offset = hourly_offset(valid)\n    meta = SAMPLES[domain]\n    i, j = get_nav(\"iemre\", domain).find_ij(meta[\"lon\"], meta[\"lat\"])\n    with ncopen(get_hourly_ncname(valid.year, domain), \"a\", timeout=300) as nc:\n        LOG.info(\n            \"offset: %s writing %s with min: %s max: %s %s[%s,%s]: %s\",\n            offset,\n            vname,\n            np.nanmin(grid),\n            np.nanmax(grid),\n            meta[\"name\"],\n            j,\n            i,\n            grid[j, i],\n        )\n        nc.variables[vname][offset] = grid\n\n\n@click.command()\n@click.option(\"--valid\", required=True, type=click.DateTime(), help=\"UTC\")\n@click.option(\n    \"--domain\",\n    default=\"conus\",\n    type=click.Choice(DOMAINS.keys()),\n    help=\"Domain to process\",\n)\ndef main(valid: datetime, domain):\n    \"\"\"Go Main\"\"\"\n    grid_hour(valid.replace(tzinfo=timezone.utc), domain)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/ingest_nohrsc.py",
    "content": "\"\"\"Ingest the NOHRSC snow analysis data into the IEMRE database.\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\n\nimport click\nimport httpx\nfrom affine import Affine\nfrom pyiem.iemre import get_grids, reproject2iemre, set_grids\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\n\n\n@click.command()\n@click.option(\"--date\", \"valid\", type=click.DateTime(), help=\"Date to process\")\ndef main(valid):\n    \"\"\"Verbatim copy to snow_12z\"\"\"\n    url = valid.strftime(\n        \"https://www.nohrsc.noaa.gov/snowfall/data/%Y%m/\"\n        \"sfav2_CONUS_24h_%Y%m%d12.nc\"\n    )\n    try:\n        resp = httpx.get(url, timeout=60)\n        resp.raise_for_status()\n        with tempfile.NamedTemporaryFile(delete=False) as tmp:\n            tmp.write(resp.content)\n    except Exception as exp:\n        LOG.warning(\"download failed: %s %s\", url, exp)\n        return\n    with ncopen(tmp.name) as nc:\n        lats = nc.variables[\"lat\"][:]\n        lons = nc.variables[\"lon\"][:]\n        snow = nc.variables[\"Data\"][:] * 1_000.0  # m to mm\n    dx = lons[1] - lons[0]\n    dy = lats[1] - lats[0]\n    # This is the SW edge, not the center\n    aff_in = Affine(dx, 0.0, lons[0] - dx / 2.0, 0.0, dy, lats[0] - dy / 2.0)\n    snow12z = reproject2iemre(snow, aff_in, \"EPSG:4326\")\n    ds = get_grids(valid.date(), varnames=[\"snow_12z\"])\n    ds.variables[\"snow_12z\"][:] = snow12z\n    set_grids(valid.date(), ds)\n    subprocess.call(\n        [\n            \"python\",\n            \"db_to_netcdf.py\",\n            f\"--date={valid:%Y-%m-%d}\",\n            \"--varname=snow_12z\",\n            \"--domain=conus\",\n        ]\n    )\n\n    os.unlink(tmp.name)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/init_daily.py",
    "content": "\"\"\"Generate the IEMRE daily analysis file for a year\"\"\"\n\nimport os\nimport sys\nfrom datetime import datetime\n\nimport click\nimport numpy as np\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import get_daily_ncname\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\n\n\ndef init_year(ts, domain, ci: bool):\n    \"\"\"\n    Create a new NetCDF file for a year of our specification!\n    \"\"\"\n    gridnav = get_nav(\"iemre\", domain)\n    fn = get_daily_ncname(ts.year, domain)\n    os.makedirs(os.path.dirname(fn), exist_ok=True)\n    if os.path.isfile(fn):\n        LOG.info(\"cowardly refusing to overwrite: %s\", fn)\n        sys.exit()\n    nc = ncopen(fn, \"w\")\n    nc.title = f\"IEM Daily Reanalysis {ts.year}\"\n    nc.platform = \"Grided Observations\"\n    nc.description = f\"IEM daily analysis on a {gridnav.dx} degree grid\"\n    nc.institution = \"Iowa State University, Ames, IA, USA\"\n    nc.source = \"Iowa Environmental Mesonet\"\n    nc.project_id = \"IEM\"\n    nc.realization = 1\n    nc.Conventions = \"CF-1.0\"\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = f\"{datetime.now():%d %B %Y} Generated\"\n    nc.comment = \"No Comment at this time\"\n\n    # Setup Dimensions\n    nc.createDimension(\"lat\", gridnav.ny)\n    nc.createDimension(\"lon\", gridnav.nx)\n    nc.createDimension(\"nv\", 2)\n    days = 2 if ci else ((ts.replace(year=ts.year + 1)) - ts).days\n    nc.createDimension(\"time\", int(days))\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"lat\",))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.axis = \"Y\"\n    lat.bounds = \"lat_bnds\"\n    # These are the grid centers\n    lat[:] = gridnav.y_points\n    lat_bnds = nc.createVariable(\"lat_bnds\", float, (\"lat\", \"nv\"))\n    lat_bnds[:, 0] = gridnav.y_edges[:-1]\n    lat_bnds[:, 1] = gridnav.y_edges[1:]\n\n    lon = nc.createVariable(\"lon\", float, (\"lon\",))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.axis = \"X\"\n    lon.bounds = \"lon_bnds\"\n    # These are the grid centers\n    lon[:] = gridnav.x_points\n\n    lon_bnds = nc.createVariable(\"lon_bnds\", float, (\"lon\", \"nv\"))\n    lon_bnds[:, 0] = gridnav.x_edges[:-1]\n    lon_bnds[:, 1] = gridnav.x_edges[1:]\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = f\"Days since {ts.year}-01-01 00:00:0.0\"\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm[:] = np.arange(0, int(days))\n\n    # Tracked variables\n    hasdata = nc.createVariable(\"hasdata\", np.int8, (\"lat\", \"lon\"))\n    hasdata.units = \"1\"\n    hasdata.long_name = \"Analysis Available for Grid Cell\"\n    hasdata.coordinates = \"lon lat\"\n    hasdata[:] = 0\n\n    high = nc.createVariable(\n        \"high_tmpk\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    high.units = \"K\"\n    high.scale_factor = 0.01\n    high.long_name = \"2m Air Temperature Daily High\"\n    high.standard_name = \"2m Air Temperature\"\n    high.coordinates = \"lon lat\"\n\n    low = nc.createVariable(\n        \"low_tmpk\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    low.units = \"K\"\n    low.scale_factor = 0.01\n    low.long_name = \"2m Air Temperature Daily Low\"\n    low.standard_name = \"2m Air Temperature\"\n    low.coordinates = \"lon lat\"\n\n    high12 = nc.createVariable(\n        \"high_tmpk_12z\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    high12.units = \"K\"\n    high12.scale_factor = 0.01\n    high12.long_name = \"2m Air Temperature 24 Hour Max at 12 UTC\"\n    high12.standard_name = \"2m Air Temperature\"\n    high12.coordinates = \"lon lat\"\n\n    low12 = nc.createVariable(\n        \"low_tmpk_12z\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    low12.units = \"K\"\n    low12.scale_factor = 0.01\n    low12.long_name = \"2m Air Temperature 12 Hour Min at 12 UTC\"\n    low12.standard_name = \"2m Air Temperature\"\n    low12.coordinates = \"lon lat\"\n\n    p01d = nc.createVariable(\n        \"p01d\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    p01d.units = \"mm\"\n    p01d.scale_factor = 0.01\n    p01d.long_name = \"Precipitation\"\n    p01d.standard_name = \"Precipitation\"\n    p01d.coordinates = \"lon lat\"\n    p01d.description = \"Precipitation accumulation for the day\"\n\n    p01d12 = nc.createVariable(\n        \"p01d_12z\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    p01d12.units = \"mm\"\n    p01d12.scale_factor = 0.01\n    p01d12.long_name = \"Precipitation\"\n    p01d12.standard_name = \"Precipitation\"\n    p01d12.coordinates = \"lon lat\"\n    p01d12.description = \"24 Hour Precipitation Ending 12 UTC\"\n\n    # 0 -> 65535  so 0 to 6553.5\n    rsds = nc.createVariable(\n        \"rsds\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    rsds.units = \"W m-2\"\n    rsds.scale_factor = 0.1\n    rsds.long_name = \"surface_downwelling_shortwave_flux_in_air\"\n    rsds.standard_name = \"surface_downwelling_shortwave_flux_in_air\"\n    rsds.coordinates = \"lon lat\"\n    rsds.description = \"Global Shortwave Irradiance\"\n\n    snow = nc.createVariable(\n        \"snow_12z\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    snow.units = \"mm\"\n    snow.scale_factor = 0.01\n    snow.long_name = \"Snowfall\"\n    snow.standard_name = \"Snowfall\"\n    snow.coordinates = \"lon lat\"\n    snow.description = \"Snowfall accumulation for the day\"\n\n    # 0 to 6553.5\n    snowd = nc.createVariable(\n        \"snowd_12z\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    snowd.units = \"mm\"\n    snowd.scale_factor = 0.1\n    snowd.long_name = \"Snow Depth\"\n    snowd.standard_name = \"Snow Depth\"\n    snowd.coordinates = \"lon lat\"\n    snowd.description = \"Snow depth at time of observation\"\n\n    v1 = nc.createVariable(\n        \"avg_dwpk\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    v1.units = \"K\"\n    v1.scale_factor = 0.01\n    v1.long_name = \"2m Average Dew Point Temperature\"\n    v1.standard_name = \"Dewpoint\"\n    v1.coordinates = \"lon lat\"\n    v1.description = \"Dew Point average computed by averaging mixing ratios\"\n\n    v2 = nc.createVariable(\n        \"wind_speed\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    v2.units = \"m s-1\"\n    v2.scale_factor = 0.001\n    v2.long_name = \"Wind Speed\"\n    v2.standard_name = \"Wind Speed\"\n    v2.coordinates = \"lon lat\"\n    v2.description = \"Daily averaged wind speed magnitude\"\n\n    # 0 to 65535 so 0 to 65.535\n    v1 = nc.createVariable(\n        \"power_swdn\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    v1.scale_factor = 0.001\n    v1.units = \"MJ d-1\"\n    v1.long_name = \"All Sky Insolation Incident on a Horizontal Surface\"\n    v1.standard_name = \"All Sky Insolation Incident on a Horizontal Surface\"\n    v1.coordinates = \"lon lat\"\n    v1.description = \"from NASA POWER\"\n\n    v1 = nc.createVariable(\n        \"high_soil4t\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    v1.units = \"K\"\n    v1.scale_factor = 0.01\n    v1.long_name = \"4inch Soil Temperature Daily High\"\n    v1.standard_name = \"4inch Soil Temperature\"\n    v1.coordinates = \"lon lat\"\n\n    v1 = nc.createVariable(\n        \"low_soil4t\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    v1.units = \"K\"\n    v1.scale_factor = 0.01\n    v1.long_name = \"4inch Soil Temperature Daily Low\"\n    v1.standard_name = \"4inch Soil Temperature\"\n    v1.coordinates = \"lon lat\"\n\n    v1 = nc.createVariable(\n        \"min_rh\", np.ubyte, (\"time\", \"lat\", \"lon\"), fill_value=255\n    )\n    v1.units = \"%\"\n    v1.scale_factor = 0.5\n    v1.long_name = \"Minimum Relative Humidity\"\n    v1.standard_name = \"Minimum Relative Humidity\"\n    v1.coordinates = \"lon lat\"\n\n    v1 = nc.createVariable(\n        \"max_rh\", np.ubyte, (\"time\", \"lat\", \"lon\"), fill_value=255\n    )\n    v1.units = \"%\"\n    v1.scale_factor = 0.5\n    v1.long_name = \"Maximum Relative Humidity\"\n    v1.standard_name = \"Maximum Relative Humidity\"\n    v1.coordinates = \"lon lat\"\n\n    nc.close()\n\n\n@click.command()\n@click.option(\"--year\", type=int, required=True, help=\"Year to initialize\")\n@click.option(\"--domain\", default=\"conus\", help=\"IEMRE Domain to run for\")\n@click.option(\"--ci\", is_flag=True, help=\"Run in CI mode\")\ndef main(year: int, domain: str, ci: bool):\n    \"\"\"Go Main Go\"\"\"\n    init_year(datetime(year, 1, 1), domain, ci)\n    if ci:\n        with ncopen(get_daily_ncname(year, domain), \"a\") as nc:\n            for vname in \"p01d p01d_12z snow_12z snowd_12z\".split():\n                nc.variables[vname][:] = 0\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/init_daily_ifc.py",
    "content": "\"\"\"Generate the storage netcdf file for Iowa Flood Center Precip\"\"\"\n\nimport os\nimport sys\nfrom datetime import datetime\n\nimport click\nimport numpy as np\nfrom pyiem.grid.nav import IFC\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\n\n\ndef init_year(ts: datetime, ci: bool):\n    \"\"\"\n    Create a new NetCDF file for a year of our specification!\n    \"\"\"\n\n    fp = f\"/mesonet/data/iemre/{ts.year}_ifc_daily.nc\"\n    if os.path.isfile(fp):\n        LOG.warning(\"Cowardly refusing to overwrite file %s.\", fp)\n        sys.exit()\n    nc = ncopen(fp, \"w\")\n    nc.title = f\"IFC Daily Precipitation {ts:%Y}\"\n    nc.platform = \"Grided Estimates\"\n    nc.description = \"Iowa Flood Center ~0.004 degree grid\"\n    nc.institution = \"Iowa State University, Ames, IA, USA\"\n    nc.source = \"Iowa Environmental Mesonet\"\n    nc.project_id = \"IEM\"\n    nc.realization = 1\n    nc.Conventions = \"CF-1.0\"\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = f\"{datetime.now():%d %B %Y} Generated\"\n    nc.comment = \"No Comment at this time\"\n\n    # Setup Dimensions\n    nc.createDimension(\"lat\", 1057)\n    nc.createDimension(\"lon\", 1741)\n    days = 2 if ci else ((ts.replace(year=ts.year + 1)) - ts).days\n    nc.createDimension(\"time\", int(days))\n    nc.createDimension(\"nv\", 2)\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"lat\",))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.bounds = \"lat_bnds\"\n    lat.axis = \"Y\"\n    # Grid centers\n    lat[:] = IFC.y_points\n\n    lat_bnds = nc.createVariable(\"lat_bnds\", float, (\"lat\", \"nv\"))\n    lat_bnds[:, 0] = IFC.y_edges[:-1]\n    lat_bnds[:, 1] = IFC.y_edges[1:]\n\n    lon = nc.createVariable(\"lon\", float, (\"lon\",))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.bounds = \"lon_bnds\"\n    lon.axis = \"X\"\n    lon[:] = IFC.x_points\n\n    lon_bnds = nc.createVariable(\"lon_bnds\", float, (\"lon\", \"nv\"))\n    lon_bnds[:, 0] = IFC.x_edges[:-1]\n    lon_bnds[:, 1] = IFC.x_edges[1:]\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = f\"Days since {ts:%Y}-01-01 00:00:0.0\"\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm[:] = np.arange(0, int(days))\n\n    p01d = nc.createVariable(\n        \"p01d\", float, (\"time\", \"lat\", \"lon\"), fill_value=1.0e20\n    )\n    p01d.units = \"mm\"\n    p01d.long_name = \"Precipitation\"\n    p01d.standard_name = \"Precipitation\"\n    p01d.coordinates = \"lon lat\"\n    p01d.description = \"Precipitation accumulation for the day\"\n\n    nc.close()\n\n\n@click.command()\n@click.option(\"--year\", required=True, type=int, help=\"Year to initialize\")\n@click.option(\"--ci\", is_flag=True, help=\"Run in CI Mode\")\ndef main(year: int, ci: bool) -> None:\n    \"\"\"Go Main Go\"\"\"\n    init_year(datetime(year, 1, 1), ci)\n    if ci:\n        with ncopen(f\"/mesonet/data/iemre/{year}_ifc_daily.nc\", \"a\") as nc:\n            nc.variables[\"p01d\"][0, :, :] = 0\n            nc.variables[\"p01d\"][1, :, :] = 0\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/init_dailyc.py",
    "content": "\"\"\"Generate the IEMRE climatology file, hmmm\"\"\"\n\nimport os\nimport sys\nfrom datetime import datetime\n\nimport numpy as np\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import DOMAINS, get_dailyc_ncname\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\n\n\ndef init_year(domain: str, ts: datetime):\n    \"\"\"\n    Create a new NetCDF file for a year of our specification!\n    \"\"\"\n    gridnav = get_nav(\"iemre\", domain)\n    fn = get_dailyc_ncname(domain)\n    if os.path.isfile(fn):\n        LOG.warning(\"Cowardly refusing to create file: %s\", fn)\n        return\n    os.makedirs(os.path.dirname(fn), exist_ok=True)\n    nc = ncopen(fn, \"w\")\n    if nc is None:\n        LOG.warning(\"ncopen None for fn:`%s` domain:`%s`\", fn, domain)\n        sys.exit(3)\n    nc.title = f\"IEM Daily Reanalysis Climatology {ts:%Y}\"\n    nc.platform = \"Grided Climatology\"\n    nc.description = \"IEM daily analysis on a 0.125 degree grid\"\n    nc.institution = \"Iowa State University, Ames, IA, USA\"\n    nc.source = \"Iowa Environmental Mesonet\"\n    nc.project_id = \"IEM\"\n    nc.realization = 1\n    nc.Conventions = \"CF-1.0\"  # *cough*\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = f\"{datetime.now():%d %B %Y} Generated\"\n    nc.comment = \"No Comment at this time\"\n\n    # Setup Dimensions\n    nc.createDimension(\"lat\", gridnav.ny)\n    nc.createDimension(\"lon\", gridnav.nx)\n    nc.createDimension(\"nv\", 2)\n    ts2 = datetime(ts.year + 1, 1, 1)\n    days = (ts2 - ts).days\n    nc.createDimension(\"time\", int(days))\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"lat\",))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.axis = \"Y\"\n    lat.bounds = \"lat_bnds\"\n    # These are the grid centers\n    lat[:] = gridnav.y_points\n    lat_bnds = nc.createVariable(\"lat_bnds\", float, (\"lat\", \"nv\"))\n    lat_bnds[:, 0] = gridnav.y_edges[:-1]\n    lat_bnds[:, 1] = gridnav.y_edges[1:]\n\n    lon = nc.createVariable(\"lon\", float, (\"lon\",))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.axis = \"X\"\n    lon.bounds = \"lon_bnds\"\n    # These are the grid centers\n    lon[:] = gridnav.x_points\n\n    lon_bnds = nc.createVariable(\"lon_bnds\", float, (\"lon\", \"nv\"))\n    lon_bnds[:, 0] = gridnav.x_edges[:-1]\n    lon_bnds[:, 1] = gridnav.x_edges[1:]\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = f\"Days since {ts:%Y}-01-01 00:00:0.0\"\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm[:] = np.arange(0, int(days))\n\n    # Tracked variables\n    hasdata = nc.createVariable(\"hasdata\", np.int8, (\"lat\", \"lon\"))\n    hasdata.units = \"1\"\n    hasdata.long_name = \"Analysis Available for Grid Cell\"\n    hasdata.coordinates = \"lon lat\"\n    hasdata[:] = 0\n\n    high = nc.createVariable(\n        \"high_tmpk\", float, (\"time\", \"lat\", \"lon\"), fill_value=1.0e20\n    )\n    high.units = \"K\"\n    high.long_name = \"2m Air Temperature Daily High\"\n    high.standard_name = \"2m Air Temperature\"\n    high.coordinates = \"lon lat\"\n\n    low = nc.createVariable(\n        \"low_tmpk\", float, (\"time\", \"lat\", \"lon\"), fill_value=1.0e20\n    )\n    low.units = \"K\"\n    low.long_name = \"2m Air Temperature Daily Low\"\n    low.standard_name = \"2m Air Temperature\"\n    low.coordinates = \"lon lat\"\n\n    p01d = nc.createVariable(\n        \"p01d\", float, (\"time\", \"lat\", \"lon\"), fill_value=1.0e20\n    )\n    p01d.units = \"mm\"\n    p01d.long_name = \"Precipitation\"\n    p01d.standard_name = \"Precipitation\"\n    p01d.coordinates = \"lon lat\"\n    p01d.description = \"Precipitation accumulation for the day\"\n\n    swdn = nc.createVariable(\n        \"swdn\", float, (\"time\", \"lat\", \"lon\"), fill_value=1.0e20\n    )\n    swdn.units = \"MJ d-1\"\n    swdn.long_name = \"All Sky Insolation Incident on a Horizontal Surface\"\n    swdn.standard_name = \"All Sky Insolation Incident on a Horizontal Surface\"\n    swdn.coordinates = \"lon lat\"\n    swdn.description = \"Solar Radiation\"\n\n    nc.close()\n\n\ndef main():\n    \"\"\"Go Main\"\"\"\n    for domain in DOMAINS:\n        init_year(domain, datetime(2000, 1, 1))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/init_hourly.py",
    "content": "\"\"\"Generate the IEMRE hourly analysis file for a year\"\"\"\n\nimport os\nfrom datetime import datetime\n\nimport click\nimport numpy as np\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import DOMAINS, get_hourly_ncname\nfrom pyiem.util import logger, ncopen, utc\n\nLOG = logger()\n\n\ndef init_year(ts: datetime, domain: str, ci: bool) -> None:\n    \"\"\"\n    Create a new NetCDF file for a year of our specification!\n    \"\"\"\n    gridnav = get_nav(\"iemre\", domain)\n    fn = get_hourly_ncname(ts.year, domain)\n    os.makedirs(os.path.dirname(fn), exist_ok=True)\n    if os.path.isfile(fn):\n        LOG.info(\"Cowardly refusing to overwrite: %s\", fn)\n        return\n    nc = ncopen(fn, \"w\")\n    nc.title = f\"IEM Hourly Reanalysis {ts.year} for domain: {domain}\"\n    nc.platform = \"Grided Observations\"\n    nc.description = \"IEM hourly analysis on a 0.125 degree grid\"\n    nc.institution = \"Iowa State University, Ames, IA, USA\"\n    nc.source = \"Iowa Environmental Mesonet\"\n    nc.project_id = \"IEM\"\n    nc.realization = 1\n    nc.Conventions = \"CF-1.0\"\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = f\"{utc():%d %B %Y} Generated\"\n    nc.comment = \"No Comment at this time\"\n\n    # Setup Dimensions\n    nc.createDimension(\"lat\", gridnav.ny)\n    nc.createDimension(\"lon\", gridnav.nx)\n    nc.createDimension(\"nv\", 2)\n    ts2 = datetime(ts.year + 1, 1, 1)\n    days = 1 if ci else (ts2 - ts).days\n    LOG.info(\"Year %s has %s days\", ts.year, days)\n    nc.createDimension(\"time\", int(days) * 24)\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"lat\",))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.axis = \"Y\"\n    lat.bounds = \"lat_bnds\"\n    # These are the grid centers\n    lat[:] = gridnav.y_points\n\n    lat_bnds = nc.createVariable(\"lat_bnds\", float, (\"lat\", \"nv\"))\n    lat_bnds[:, 0] = gridnav.y_edges[:-1]\n    lat_bnds[:, 1] = gridnav.y_edges[1:]\n\n    lon = nc.createVariable(\"lon\", float, (\"lon\",))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.axis = \"X\"\n    lon.bounds = \"lon_bnds\"\n    # These are the grid centers\n    lon[:] = gridnav.x_points\n\n    lon_bnds = nc.createVariable(\"lon_bnds\", float, (\"lon\", \"nv\"))\n    lon_bnds[:, 0] = gridnav.x_edges[:-1]\n    lon_bnds[:, 1] = gridnav.x_edges[1:]\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = f\"Hours since {ts.year}-01-01 00:00:0.0\"\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm[:] = np.arange(0, int(days) * 24)\n\n    # Tracked variables\n    hasdata = nc.createVariable(\"hasdata\", np.int8, (\"lat\", \"lon\"))\n    hasdata.units = \"1\"\n    hasdata.long_name = \"Analysis Available for Grid Cell\"\n    hasdata.coordinates = \"lon lat\"\n    hasdata[:] = 0 if domain == \"conus\" else 1\n\n    # can storage -128->127 actual values are 0 to 100\n    skyc = nc.createVariable(\n        \"skyc\", np.int8, (\"time\", \"lat\", \"lon\"), fill_value=-128\n    )\n    skyc.long_name = \"ASOS Sky Coverage\"\n    skyc.stanard_name = \"ASOS Sky Coverage\"\n    skyc.units = \"%\"\n    skyc.valid_range = [0, 100]\n    skyc.coordinates = \"lon lat\"\n\n    # 0->65535\n    tmpk = nc.createVariable(\n        \"tmpk\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    tmpk.units = \"K\"\n    tmpk.scale_factor = 0.01\n    tmpk.long_name = \"2m Air Temperature\"\n    tmpk.standard_name = \"2m Air Temperature\"\n    tmpk.coordinates = \"lon lat\"\n\n    # 0->65535  0 to 655.35\n    dwpk = nc.createVariable(\n        \"dwpk\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65335\n    )\n    dwpk.units = \"K\"\n    dwpk.scale_factor = 0.01\n    dwpk.long_name = \"2m Air Dew Point Temperature\"\n    dwpk.standard_name = \"2m Air Dew Point Temperature\"\n    dwpk.coordinates = \"lon lat\"\n\n    # NOTE: we need to store negative numbers here, gasp\n    # -32768 to 32767 so -65.5 to 65.5 mps\n    uwnd = nc.createVariable(\n        \"uwnd\", np.int16, (\"time\", \"lat\", \"lon\"), fill_value=32767\n    )\n    uwnd.scale_factor = 0.002\n    uwnd.units = \"meters per second\"\n    uwnd.long_name = \"U component of the wind\"\n    uwnd.standard_name = \"U component of the wind\"\n    uwnd.coordinates = \"lon lat\"\n\n    # NOTE: we need to store negative numbers here, gasp\n    # -32768 to 32767 so -65.5 to 65.5 mps\n    vwnd = nc.createVariable(\n        \"vwnd\", np.int16, (\"time\", \"lat\", \"lon\"), fill_value=32767\n    )\n    vwnd.scale_factor = 0.002\n    vwnd.units = \"meters per second\"\n    vwnd.long_name = \"V component of the wind\"\n    vwnd.standard_name = \"V component of the wind\"\n    vwnd.coordinates = \"lon lat\"\n\n    # 0->65535  0 to 655.35\n    p01m = nc.createVariable(\n        \"p01m\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    p01m.units = \"mm\"\n    p01m.scale_factor = 0.01\n    p01m.long_name = \"Precipitation\"\n    p01m.standard_name = \"Precipitation\"\n    p01m.coordinates = \"lon lat\"\n    p01m.description = \"Precipitation accumulation for the hour valid time\"\n\n    v1 = nc.createVariable(\n        \"soil4t\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    v1.units = \"K\"\n    v1.scale_factor = 0.01\n    v1.long_name = \"4inch Soil Temperature\"\n    v1.standard_name = \"4inch Soil Temperature\"\n    v1.coordinates = \"lon lat\"\n\n    # Instantaneous solar radiation, so 0 to 1966 W/m^2\n    rsds = nc.createVariable(\n        \"rsds\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    rsds.units = \"W m-2\"\n    rsds.scale_factor = 0.03\n    rsds.long_name = \"Downward Solar Radiation Flux\"\n    rsds.standard_name = \"Downward Solar Radiation Flux at Surface\"\n    rsds.coordinates = \"lon lat\"\n\n    nc.close()\n\n\n@click.command()\n@click.option(\"--year\", type=int, required=True, help=\"Year to initialize\")\n@click.option(\"--ci\", is_flag=True, help=\"Run in CI mode\")\ndef main(year: int, ci: bool) -> None:\n    \"\"\"Go Main Go\"\"\"\n    for domain in DOMAINS:\n        init_year(datetime(year, 1, 1), domain, ci)\n        if ci:\n            with ncopen(get_hourly_ncname(year, domain), \"a\") as nc:\n                nc.variables[\"rsds\"][0] = 400\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/init_ifc_dailyc.py",
    "content": "\"\"\"Generate the IFC climatology file.\"\"\"\n\nimport os\nfrom datetime import datetime\n\nimport numpy as np\nfrom pyiem.grid.nav import IFC\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\nBASEDIR = \"/mesonet/data/iemre\"\n\n\ndef init_year(ts: datetime):\n    \"\"\"Create a new NetCDF file for a year of our specification!\"\"\"\n    fn = f\"{BASEDIR}/ifc_dailyc.nc\"\n    if os.path.isfile(fn):\n        LOG.info(\"Cowardly refusing to overwrite %s\", fn)\n        return\n    nc = ncopen(fn, \"w\")\n    nc.title = f\"IFC Climatology {ts:%Y}\"\n    nc.platform = \"Grided Climatology\"\n    nc.description = \"IFC\"\n    nc.institution = \"Iowa State University, Ames, IA, USA\"\n    nc.source = \"Iowa Environmental Mesonet\"\n    nc.project_id = \"IEM\"\n    nc.realization = 1\n    nc.Conventions = \"CF-1.0\"  # *cough*\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = f\"{datetime.now():%d %b %Y} Generated\"\n    nc.comment = \"No Comment at this time\"\n\n    # Setup Dimensions\n    nc.createDimension(\"lat\", 1057)\n    nc.createDimension(\"lon\", 1741)\n    ts2 = datetime(ts.year + 1, 1, 1)\n    days = (ts2 - ts).days\n    nc.createDimension(\"time\", int(days))\n    nc.createDimension(\"nv\", 2)\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"lat\",))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.axis = \"Y\"\n    # Grid centers\n    # Grid centers\n    lat[:] = IFC.y_points\n\n    lat_bnds = nc.createVariable(\"lat_bnds\", float, (\"lat\", \"nv\"))\n    lat_bnds[:, 0] = IFC.y_edges[:-1]\n    lat_bnds[:, 1] = IFC.y_edges[1:]\n\n    lon = nc.createVariable(\"lon\", float, (\"lon\",))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.axis = \"X\"\n    lon[:] = IFC.x_points\n\n    lon_bnds = nc.createVariable(\"lon_bnds\", float, (\"lon\", \"nv\"))\n    lon_bnds[:, 0] = IFC.x_edges[:-1]\n    lon_bnds[:, 1] = IFC.x_edges[1:]\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = \"Days since %s-01-01 00:00:0.0\" % (ts.year,)\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm[:] = np.arange(0, int(days))\n\n    p01d = nc.createVariable(\n        \"p01d\", float, (\"time\", \"lat\", \"lon\"), fill_value=1.0e20\n    )\n    p01d.units = \"mm\"\n    p01d.long_name = \"Precipitation\"\n    p01d.standard_name = \"Precipitation\"\n    p01d.coordinates = \"lon lat\"\n    p01d.description = \"Precipitation accumulation for the day\"\n\n    nc.close()\n\n\ndef main():\n    \"\"\"Go Main\"\"\"\n    init_year(datetime(2000, 1, 1))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/init_narr.py",
    "content": "\"\"\"Generate the storage of NARR 3 hourly products\"\"\"\n\nimport os\nimport sys\nfrom datetime import datetime\n\nimport click\nimport numpy as np\nimport pygrib\nfrom pyiem.util import archive_fetch, logger, ncopen\n\n# This exists on dev laptop :/\nTEMPLATE_FN = \"1980/01/01/model/NARR/apcp_198001010000.grib\"\nBASEDIR = \"/mesonet/data/iemre\"\nLOG = logger()\n\n\n@click.command()\n@click.option(\"--year\", type=int, required=True)\ndef main(year: int):\n    \"\"\"\n    Create a new NetCDF file for a year of our specification!\n    \"\"\"\n    ts = datetime(year, 1, 1)\n    # Load up the example grib file to base our file on\n    with archive_fetch(TEMPLATE_FN) as fn:\n        grbs = pygrib.open(fn)\n        grb = grbs[1]\n        # grid shape is y, x\n        lats, lons = grb.latlons()\n\n    fp = f\"{BASEDIR}/{ts.year}_narr.nc\"\n    if os.path.isfile(fp):\n        LOG.warning(\"Cowardly refusing to overwrite file %s.\", fp)\n        sys.exit()\n    nc = ncopen(fp, \"w\")\n    nc.title = f\"IEM Packaged NARR for {ts.year}\"\n    nc.platform = \"Grided Reanalysis\"\n    nc.description = \"NARR Data\"\n    nc.institution = \"Iowa State University, Ames, IA, USA\"\n    nc.source = \"Iowa Environmental Mesonet\"\n    nc.project_id = \"IEM\"\n    nc.realization = 1\n    nc.Conventions = \"CF-1.0\"\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = f\"{datetime.now():%d %B %Y} Generated\"\n    nc.comment = \"No Comment at this time\"\n\n    # Setup Dimensions\n    nc.createDimension(\"x\", lats.shape[1])\n    nc.createDimension(\"y\", lats.shape[0])\n    nc.createDimension(\"bnds\", 2)\n    ts2 = datetime(ts.year + 1, 1, 1)\n    days = (ts2 - ts).days\n    print(f\"Year {ts.year} has {days} days\")\n    nc.createDimension(\"time\", int(days) * 8)\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"y\", \"x\"))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.axis = \"Y\"\n    lat[:] = lats\n\n    lon = nc.createVariable(\"lon\", float, (\"y\", \"x\"))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.axis = \"X\"\n    lon[:] = lons\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = f\"Hours since {ts.year}-01-01 00:00:0.0\"\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm.bounds = \"time_bnds\"\n    tm[:] = np.arange(0, int(days) * 8) * 3\n\n    tmb = nc.createVariable(\"time_bnds\", \"d\", (\"time\", \"bnds\"))\n    tmb[:, 0] = np.arange(0, int(days) * 8) * 3 - 1\n    tmb[:, 1] = np.arange(0, int(days) * 8) * 3\n\n    # 3 hour accum, 0 to 655.35\n    apcp = nc.createVariable(\n        \"apcp\", np.ushort, (\"time\", \"y\", \"x\"), fill_value=65535\n    )\n    apcp.scale_factor = 0.01\n    apcp.add_offset = 0.0\n    apcp.units = \"mm\"\n    apcp.long_name = \"Precipitation\"\n    apcp.standard_name = \"Precipitation\"\n    apcp.coordinates = \"lon lat\"\n    apcp.description = \"Precipitation accumulation for the previous 3 hours\"\n\n    nc.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/init_stage4_daily.py",
    "content": "\"\"\"Generate the StageIV \"daily\" file at 12z.\"\"\"\n\nimport os\nfrom datetime import datetime\n\nimport click\nimport numpy as np\nfrom pyiem import stage4\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\nBASEDIR = \"/mesonet/data/stage4\"\n\n\ndef init_year(ts: datetime, ci: bool) -> str | None:\n    \"\"\"Create a new NetCDF file for a year of our specification!\"\"\"\n    # Get existing stageIV netcdf file to copy its cordinates from\n    tmplnc = ncopen(f\"{BASEDIR}/{ts.year}_stage4_hourly.nc\", \"r\")\n\n    fn = f\"{BASEDIR}/{ts.year}_stage4_daily.nc\"\n    if os.path.isfile(fn):\n        LOG.info(\"Cowardly refusing to overwrite %s\", fn)\n        return None\n    nc = ncopen(fn, \"w\")\n    nc.title = f\"StageIV 12z-12z Totals for {ts.year}\"\n    nc.platform = \"Grided\"\n    nc.description = \"StageIV\"\n    nc.institution = \"Iowa State University, Ames, IA, USA\"\n    nc.source = \"Iowa Environmental Mesonet\"\n    nc.project_id = \"IEM\"\n    nc.realization = 1\n    nc.Conventions = \"CF-1.0\"  # *cough*\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = \"%s Generated\" % (datetime.now().strftime(\"%d %B %Y\"),)\n    nc.comment = \"No Comment at this time\"\n    # Store projection information\n    nc.proj4 = stage4.PROJ.srs\n\n    # Setup Dimensions\n    nc.createDimension(\"x\", tmplnc.dimensions[\"x\"].size)\n    nc.createDimension(\"y\", tmplnc.dimensions[\"y\"].size)\n    nc.createDimension(\"nv\", 2)\n    ts2 = datetime(ts.year + 1, 1, 1)\n    days = 2 if ci else (ts2 - ts).days\n    nc.createDimension(\"time\", int(days))\n\n    x = nc.createVariable(\"x\", float, (\"x\",))\n    x.units = \"m\"\n    x.long_name = \"X coordinate of projection\"\n    x.standard_name = \"projection_x_coordinate\"\n    x.axis = \"X\"\n    x.bounds = \"x_bounds\"\n    x[:] = stage4.XAXIS\n\n    x_bounds = nc.createVariable(\"x_bounds\", float, (\"x\", \"nv\"))\n    x_bounds[:, 0] = stage4.XAXIS - stage4.DX / 2.0\n    x_bounds[:, 1] = stage4.XAXIS + stage4.DX / 2.0\n\n    y = nc.createVariable(\"y\", float, (\"y\",))\n    y.units = \"m\"\n    y.long_name = \"Y coordinate of projection\"\n    y.standard_name = \"projection_y_coordinate\"\n    y.axis = \"Y\"\n    y.bounds = \"y_bounds\"\n    y[:] = stage4.YAXIS\n\n    y_bounds = nc.createVariable(\"y_bounds\", float, (\"y\", \"nv\"))\n    y_bounds[:, 0] = stage4.YAXIS - stage4.DY / 2.0\n    y_bounds[:, 1] = stage4.YAXIS + stage4.DY / 2.0\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"y\", \"x\"))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.axis = \"Y\"\n    # Grid centers\n    lat[:] = tmplnc.variables[\"lat\"][:]\n\n    lon = nc.createVariable(\"lon\", float, (\"y\", \"x\"))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.axis = \"X\"\n    lon[:] = tmplnc.variables[\"lon\"][:]\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = f\"Days since {ts:%Y}-01-01 12:00:0.0\"\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm[:] = np.arange(0, int(days))\n\n    p01d = nc.createVariable(\n        \"p01d_12z\", float, (\"time\", \"y\", \"x\"), fill_value=1.0e20\n    )\n    p01d.units = \"mm\"\n    p01d.long_name = \"Precipitation\"\n    p01d.standard_name = \"Precipitation\"\n    p01d.coordinates = \"lon lat\"\n    p01d.description = \"Precipitation accumulation at 12z\"\n\n    nc.close()\n    tmplnc.close()\n    return fn\n\n\n@click.command()\n@click.option(\"--year\", type=int, required=True)\n@click.option(\"--ci\", is_flag=True, default=False)\ndef main(year: int, ci: bool) -> None:\n    \"\"\"Go Main\"\"\"\n    fn = init_year(datetime(year, 1, 1), ci)\n    if ci and fn is not None:\n        with ncopen(fn, \"a\") as nc:\n            for i in range(2):\n                nc.variables[\"p01d_12z\"][i] = (i + 1) * 24.0\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/init_stage4_dailyc.py",
    "content": "\"\"\"Generate the StageIV climatology file.\"\"\"\n\nimport os\nfrom datetime import datetime\n\nimport numpy as np\nfrom pyiem import stage4\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\nBASEDIR = \"/mesonet/data/stage4\"\n\n\ndef init_year(ts):\n    \"\"\"Create a new NetCDF file for a year of our specification!\"\"\"\n    # Get existing stageIV netcdf file to copy its cordinates from\n    tmplnc = ncopen(f\"{BASEDIR}/2020_stage4_hourly.nc\", \"r\")\n\n    fn = f\"{BASEDIR}/stage4_dailyc.nc\"\n    if os.path.isfile(fn):\n        LOG.info(\"Cowardly refusing to overwrite %s\", fn)\n        return\n    nc = ncopen(fn, \"w\")\n    nc.title = f\"StageIV Climatology {ts:%Y}\"\n    nc.platform = \"Grided Climatology\"\n    nc.description = \"StageIV\"\n    nc.institution = \"Iowa State University, Ames, IA, USA\"\n    nc.source = \"Iowa Environmental Mesonet\"\n    nc.project_id = \"IEM\"\n    nc.realization = 1\n    nc.Conventions = \"CF-1.0\"  # *cough*\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = \"%s Generated\" % (datetime.now().strftime(\"%d %B %Y\"),)\n    nc.comment = \"No Comment at this time\"\n    # Store projection information\n    nc.proj4 = stage4.PROJ.srs\n\n    # Setup Dimensions\n    nc.createDimension(\"x\", tmplnc.dimensions[\"x\"].size)\n    nc.createDimension(\"y\", tmplnc.dimensions[\"y\"].size)\n    nc.createDimension(\"nv\", 2)\n    ts2 = datetime(ts.year + 1, 1, 1)\n    days = (ts2 - ts).days\n    nc.createDimension(\"time\", int(days))\n\n    x = nc.createVariable(\"x\", float, (\"x\",))\n    x.units = \"m\"\n    x.long_name = \"X coordinate of projection\"\n    x.standard_name = \"projection_x_coordinate\"\n    x.axis = \"X\"\n    x.bounds = \"x_bounds\"\n    x[:] = stage4.XAXIS\n\n    x_bounds = nc.createVariable(\"x_bounds\", float, (\"x\", \"bnds\"))\n    x_bounds[:, 0] = stage4.XAXIS - stage4.DX / 2.0\n    x_bounds[:, 1] = stage4.XAXIS + stage4.DX / 2.0\n\n    y = nc.createVariable(\"y\", float, (\"y\",))\n    y.units = \"m\"\n    y.long_name = \"Y coordinate of projection\"\n    y.standard_name = \"projection_y_coordinate\"\n    y.axis = \"Y\"\n    y.bounds = \"y_bounds\"\n    y[:] = stage4.YAXIS\n\n    y_bounds = nc.createVariable(\"y_bounds\", float, (\"y\", \"bnds\"))\n    y_bounds[:, 0] = stage4.YAXIS - stage4.DY / 2.0\n    y_bounds[:, 1] = stage4.YAXIS + stage4.DY / 2.0\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"y\", \"x\"))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.axis = \"Y\"\n    # Grid centers\n    lat[:] = tmplnc.variables[\"lat\"][:]\n\n    lon = nc.createVariable(\"lon\", float, (\"y\", \"x\"))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.axis = \"X\"\n    lon[:] = tmplnc.variables[\"lon\"][:]\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = \"Days since %s-01-01 00:00:0.0\" % (ts.year,)\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm[:] = np.arange(0, int(days))\n\n    p01d = nc.createVariable(\n        \"p01d_12z\", float, (\"time\", \"y\", \"x\"), fill_value=1.0e20\n    )\n    p01d.units = \"mm\"\n    p01d.long_name = \"Precipitation\"\n    p01d.standard_name = \"Precipitation\"\n    p01d.coordinates = \"lon lat\"\n    p01d.description = \"Precipitation accumulation for the day\"\n\n    nc.close()\n    tmplnc.close()\n\n\ndef main():\n    \"\"\"Go Main\"\"\"\n    init_year(datetime(2000, 1, 1))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/init_stage4_hourly.py",
    "content": "\"\"\"Generate the storage of stage IV hourly products\"\"\"\n\nimport os\nfrom datetime import datetime\n\nimport click\nimport numpy as np\nimport pygrib\nfrom pyiem import stage4\nfrom pyiem.util import archive_fetch, logger, ncopen\n\nBASEDIR = \"/mesonet/data/stage4\"\nLOG = logger()\n\n\ndef init_year(ts: datetime, ci: bool) -> str | None:\n    \"\"\"\n    Create a new NetCDF file for a year of our specification!\n    \"\"\"\n    # Load up the example grib file to base our file on\n    with archive_fetch(\"2014/09/09/stage4/ST4.2014090900.01h.grib\") as fn:\n        grbs = pygrib.open(fn)\n    grb = grbs[1]\n    # grid shape is y, x\n    lats, lons = grb.latlons()\n\n    os.makedirs(BASEDIR, exist_ok=True)\n    fn = f\"{BASEDIR}/{ts:%Y}_stage4_hourly.nc\"\n    if os.path.isfile(fn):\n        LOG.warning(\"Cowardly refusing to overwrite %s\", fn)\n        return None\n    nc = ncopen(fn, \"w\")\n    nc.title = f\"IEM Packaged NOAA Stage IV for {ts:Y}\"\n    nc.platform = \"Grided Estimates\"\n    nc.description = \"NOAA Stage IV on HRAP Grid\"\n    nc.institution = \"Iowa State University, Ames, IA, USA\"\n    nc.source = \"Iowa Environmental Mesonet\"\n    nc.project_id = \"IEM\"\n    nc.realization = 1\n    nc.Conventions = \"CF-1.0\"\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = (\"%s Generated\") % (datetime.now().strftime(\"%d %B %Y\"),)\n    nc.comment = \"No Comment at this time\"\n    # Store projection information\n    nc.proj4 = stage4.PROJ.srs\n    # Setup Dimensions\n    nc.createDimension(\"x\", lats.shape[1])\n    nc.createDimension(\"y\", lats.shape[0])\n    nc.createDimension(\"bnds\", 2)\n    ts2 = datetime(ts.year + 1, 1, 1)\n    days = 2 if ci else (ts2 - ts).days\n    LOG.info(\"Year %s has %s days\", ts.year, days)\n    nc.createDimension(\"time\", int(days) * 24)\n\n    x = nc.createVariable(\"x\", float, (\"x\",))\n    x.units = \"m\"\n    x.long_name = \"X coordinate of projection\"\n    x.standard_name = \"projection_x_coordinate\"\n    x.axis = \"X\"\n    x.bounds = \"x_bounds\"\n    x[:] = stage4.XAXIS\n\n    x_bounds = nc.createVariable(\"x_bounds\", float, (\"x\", \"bnds\"))\n    x_bounds[:, 0] = stage4.XAXIS - stage4.DX / 2.0\n    x_bounds[:, 1] = stage4.XAXIS + stage4.DX / 2.0\n\n    y = nc.createVariable(\"y\", float, (\"y\",))\n    y.units = \"m\"\n    y.long_name = \"Y coordinate of projection\"\n    y.standard_name = \"projection_y_coordinate\"\n    y.axis = \"Y\"\n    y.bounds = \"y_bounds\"\n    y[:] = stage4.YAXIS\n\n    y_bounds = nc.createVariable(\"y_bounds\", float, (\"y\", \"bnds\"))\n    y_bounds[:, 0] = stage4.YAXIS - stage4.DY / 2.0\n    y_bounds[:, 1] = stage4.YAXIS + stage4.DY / 2.0\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"y\", \"x\"))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.axis = \"Y\"\n    lat[:] = lats\n\n    lon = nc.createVariable(\"lon\", float, (\"y\", \"x\"))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.axis = \"X\"\n    lon[:] = lons\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = f\"Hours since {ts:%Y}-01-01 00:00:0.0\"\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm[:] = np.arange(0, int(days) * 24)\n    tm.bounds = \"time_bnds\"\n\n    tmb = nc.createVariable(\"time_bnds\", \"d\", (\"time\", \"bnds\"))\n    tmb[:, 0] = np.arange(0, int(days) * 24) - 1\n    tmb[:, 1] = np.arange(0, int(days) * 24)\n\n    p01m = nc.createVariable(\n        \"p01m\", np.ushort, (\"time\", \"y\", \"x\"), fill_value=65535\n    )\n    p01m.scale_factor = 0.01\n    p01m.add_offset = 0.0\n    p01m.units = \"mm\"\n    p01m.long_name = \"Precipitation\"\n    p01m.standard_name = \"Precipitation\"\n    p01m.coordinates = \"lon lat\"\n    p01m.description = \"Precipitation accumulation for the previous hour\"\n\n    # Track variable status to prevent double writes of data, prior to bias\n    # correction making some changes\n    status = nc.createVariable(\n        \"p01m_status\", np.int8, (\"time\",), fill_value=-1\n    )\n    status.units = \"1\"\n    status.long_name = \"p01m Variable Status\"\n    status.description = \"-1 unset, 1 grib data copied, 2 QC Run\"\n\n    nc.close()\n    return fn\n\n\n@click.command()\n@click.option(\"--year\", type=int, required=True, help=\"year\")\n@click.option(\"--ci\", is_flag=True, help=\"Run in CI mode\")\ndef main(year: int, ci: bool):\n    \"\"\"Go Main!\"\"\"\n    fn = init_year(datetime(year, 1, 1), ci)\n    if ci and fn is not None:\n        with ncopen(fn, \"a\") as nc:\n            for i in range(48):\n                nc.variables[\"p01m\"][i] = i / 2.0\n            nc.variables[\"p01m_status\"][:] = 1\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/merge_ifc.py",
    "content": "\"\"\"Merge the PNG IFC files into the daily netcdf file.\n\ncalled from RUN_10_AFTER.sh\n\"\"\"\n\nfrom datetime import datetime, timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport numpy as np\nfrom osgeo import gdal\nfrom pyiem import iemre\nfrom pyiem.util import archive_fetch, logger, ncopen, utc\n\ngdal.UseExceptions()\nLOG = logger()\n\n\ndef run(ts):\n    \"\"\"Process this date's worth of data\"\"\"\n    LOG.info(\"Running for %s\", ts)\n    now = ts.replace(hour=0, minute=0)\n    ets = now + timedelta(hours=24)\n    interval = timedelta(minutes=5)\n    currenttime = utc()\n\n    total = None\n    while now <= ets:\n        gmt = now.astimezone(timezone.utc)\n        if gmt > currenttime:\n            break\n        ppath = gmt.strftime(\"%Y/%m/%d/GIS/ifc/p05m_%Y%m%d%H%M.png\")\n        with archive_fetch(ppath) as fn:\n            if fn is None:\n                now += interval\n                continue\n            with gdal.Open(fn, 0) as png:\n                data = png.ReadAsArray()  # units are mm per 5 minutes\n            data = np.where(data > 254, 0, data) / 10.0\n            if total is None:\n                total = data\n            else:\n                total += data\n        now += interval\n    if total is None:\n        LOG.info(\"No IFC Data found for date: %s\", now)\n        return\n\n    ncfn = f\"/mesonet/data/iemre/{ts.year}_ifc_daily.nc\"\n    idx = iemre.daily_offset(ts)\n    with ncopen(ncfn, \"a\", timeout=300) as nc:\n        nc.variables[\"p01d\"][idx, :, :] = np.flipud(total)\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), required=True)\ndef main(dt: datetime):\n    \"\"\"Go Main Go\"\"\"\n    # We are always running for a Central Timezone Date\n    dt = dt.replace(tzinfo=ZoneInfo(\"America/Chicago\"))\n    run(dt)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/merge_narr.py",
    "content": "\"\"\"Merge the NARR precip files to netcdf.\n\nUnsure if I have any code that uses these .nc files, alas.\n\nCalled from dl/download_narr.py each month around the 9th.\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport click\nimport numpy as np\nimport pygrib\nfrom pyiem import iemre\nfrom pyiem.util import archive_fetch, logger, ncopen\n\nLOG = logger()\n\n\ndef to_netcdf(valid):\n    \"\"\"Persist this 1 hour precip information to the netcdf storage\n\n    Recall that this timestep has data for the previous hour\"\"\"\n    with archive_fetch(\n        f\"{valid:%Y/%m/%d}/model/NARR/apcp_{valid:%Y%m%d%H%M}.grib\"\n    ) as fn:\n        if fn is None:\n            LOG.warning(\"Missing file %s\", valid)\n            return False\n        gribs = pygrib.open(fn)\n        grb = gribs[1]\n        val = grb.values\n\n    tidx = int((iemre.hourly_offset(valid) + 1) / 3)\n    LOG.info(\"%s np.min: %s np.max: %s\", tidx, np.min(val), np.max(val))\n    with ncopen(\n        f\"/mesonet/data/iemre/{valid.year}_narr.nc\", \"a\", timeout=300\n    ) as nc:\n        nc.variables[\"apcp\"][tidx, :, :] = val\n\n    return True\n\n\n@click.command()\n@click.option(\"--year\", type=int, required=True)\n@click.option(\"--month\", type=int, required=True)\ndef main(year: int, month: int):\n    \"\"\"Go Main\"\"\"\n    sts = datetime(year, month, 1)\n    ets = (sts + timedelta(days=33)).replace(day=1)\n    interval = timedelta(hours=3)\n    now = sts\n    while now < ets:\n        to_netcdf(now)\n        now += interval\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/por_dailyc.py",
    "content": "\"\"\"Non US domains, we have no climo inhouse to grid, so we do POR stuff.\"\"\"\n\nimport click\nfrom pyiem.iemre import get_daily_ncname, get_dailyc_ncname\nfrom pyiem.util import ncopen\nfrom tqdm import tqdm\n\n\n@click.command()\n@click.option(\"--domain\", required=True)\ndef main(domain: str):\n    \"\"\"Go Main Go.\"\"\"\n    climofn = get_dailyc_ncname(domain)\n    # 2007-2024 x 7 days is a population of ~140, so hopefully enough\n    for doy in tqdm(list(range(365))):\n        population = list(range(doy - 3, doy + 4))\n        high_tmpk = None\n        low_tmpk = None\n        p01d = None\n        power_swdn = None\n        count = 0.0\n        for year in range(2007, 2025):\n            ncname = get_daily_ncname(year, domain)\n            with ncopen(ncname) as nc:\n                for _doy in population:\n                    count += 1.0\n                    if _doy > 364:\n                        _doy -= 365\n                    if high_tmpk is None:\n                        high_tmpk = nc.variables[\"high_tmpk\"][_doy, :]\n                        low_tmpk = nc.variables[\"low_tmpk\"][_doy, :]\n                        p01d = nc.variables[\"p01d\"][_doy, :]\n                        power_swdn = nc.variables[\"power_swdn\"][_doy, :]\n                    else:\n                        high_tmpk += nc.variables[\"high_tmpk\"][_doy, :]\n                        low_tmpk += nc.variables[\"low_tmpk\"][_doy, :]\n                        p01d += nc.variables[\"p01d\"][_doy, :]\n                        power_swdn += nc.variables[\"power_swdn\"][_doy, :]\n        with ncopen(climofn, \"a\") as climonc:\n            climonc.variables[\"high_tmpk\"][doy, :] = high_tmpk / count\n            climonc.variables[\"low_tmpk\"][doy, :] = low_tmpk / count\n            climonc.variables[\"p01d\"][doy, :] = p01d / count\n            climonc.variables[\"swdn\"][doy, :] = power_swdn / count\n        if doy == 364:\n            # Repeat\n            with ncopen(climofn, \"a\") as climonc:\n                climonc.variables[\"high_tmpk\"][365, :] = high_tmpk / count\n                climonc.variables[\"low_tmpk\"][365, :] = low_tmpk / count\n                climonc.variables[\"p01d\"][365, :] = p01d / count\n                climonc.variables[\"swdn\"][365, :] = power_swdn / count\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/precip_ingest.py",
    "content": "\"\"\"Ingest Stage IV Hourly Files.\n\n1. Copies to hourly stage IV netCDF files\n2. Copies hourly stage IV netCDF to hourly IEMRE\n\"\"\"\n\nimport warnings\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport numpy as np\nimport pygrib\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import get_hourly_ncname, hourly_offset, reproject2iemre\nfrom pyiem.stage4 import ARCHIVE_FLIP\nfrom pyiem.util import archive_fetch, logger, ncopen\n\n# silence warning when we squeeze data into netcdf\nwarnings.simplefilter(\"ignore\", RuntimeWarning)\nLOG = logger()\n\n\ndef get_p01m_status(valid):\n    \"\"\"Figure out what our current status is of this hour.\"\"\"\n    tidx = hourly_offset(valid)\n    with ncopen(\n        f\"/mesonet/data/stage4/{valid.year}_stage4_hourly.nc\",\n        timeout=300,\n    ) as nc:\n        # 2 prism_adjust_stage4 ran\n        # 1 copied hourly data in\n        # 0 nothing happened\n        p01m_status = nc.variables[\"p01m_status\"][tidx]\n    LOG.info(\"p01m_status is %s for valid %s\", p01m_status, valid)\n    return p01m_status\n\n\ndef ingest_hourly_grib(valid):\n    \"\"\"Copy the hourly grib data into the netcdf storage.\n\n    Returns:\n      int value of the new p01m_status\n    \"\"\"\n    tidx = hourly_offset(valid)\n    ppath = valid.strftime(\"%Y/%m/%d/stage4/ST4.%Y%m%d%H.01h.grib\")\n    with archive_fetch(ppath) as fn:\n        if fn is None:\n            LOG.info(\"stage4_ingest: missing file %s\", fn)\n            return\n        gribs = pygrib.open(fn)\n        grb = gribs[1]\n        val = grb.values\n        gribs.close()\n    # values over 10 inches are bad\n    val = np.where(val > 250.0, 0, val)\n\n    ncfn = f\"/mesonet/data/stage4/{valid.year}_stage4_hourly.nc\"\n    with ncopen(ncfn, \"a\", timeout=300) as nc:\n        p01m = nc.variables[\"p01m\"]\n        # account for legacy grid prior to 2002\n        if val.shape == (880, 1160):\n            p01m[tidx, 1:, :] = val[:, 39:]\n        else:\n            p01m[tidx, :, :] = val\n        nc.variables[\"p01m_status\"][tidx] = 1\n    LOG.info(\n        \"write p01m to stage4 netcdf min: %.2f avg: %.2f max: %.2f\",\n        np.min(val),\n        np.mean(val),\n        np.max(val),\n    )\n    return\n\n\ndef copy_to_iemre(valid):\n    \"\"\"verbatim copy over to IEMRE.\"\"\"\n    tidx = hourly_offset(valid)\n    ncfn = f\"/mesonet/data/stage4/{valid.year}_stage4_hourly.nc\"\n    with ncopen(ncfn, \"a\", timeout=300) as nc:\n        val = nc.variables[\"p01m\"][tidx]\n        LOG.info(\"stage4 mean: %.2f max: %.2f\", np.mean(val), np.max(val))\n\n    # Reproject to IEMRE\n    aff = (\n        get_nav(\"STAGE4\").affine\n        if valid >= ARCHIVE_FLIP\n        else get_nav(\"STAGE4_PRE2002\", \"\").affine\n    )\n    res = reproject2iemre(val, aff, get_nav(\"STAGE4\").crs, domain=\"conus\")\n    LOG.info(\"iemre mean: %.2f max: %.2f\", np.mean(res), np.max(res))\n\n    # Lets clip bad data\n    # 10 inches per hour is bad data\n    res = np.ma.where(np.ma.logical_or(res < 0, res > 250), 0.0, res)\n    LOG.info(\"iemre mean: %.2f max: %.2f\", np.mean(res), np.max(res))\n\n    # Open up our RE file\n    with ncopen(\n        get_hourly_ncname(valid.year, domain=\"conus\"), \"a\", timeout=300\n    ) as nc:\n        nc.variables[\"p01m\"][tidx] = res\n    LOG.info(\n        \"wrote data to hourly IEMRE min: %.2f avg: %.2f max: %.2f\",\n        np.min(res),\n        np.mean(res),\n        np.max(res),\n    )\n\n\ndef era5workflow(valid: datetime, domain: str):\n    \"\"\"Copy ERA5Land to IEMRE.\"\"\"\n    # NOTE, this may be off-by-one\n    idx = hourly_offset(valid)\n    dd = \"\" if domain == \"conus\" else f\"_{domain}\"\n    with ncopen(f\"/mesonet/data/era5{dd}/{valid:%Y}_era5land_hourly.nc\") as nc:\n        p01m = nc.variables[\"p01m\"][idx]\n    # Convert trace/drizzle to 0, values < 0.01in or .254mm\n    p01m[p01m < 0.254] = 0\n    affine_in = get_nav(\"ERA5LAND\", domain).affine\n    val = reproject2iemre(p01m, affine_in, \"EPSG:4326\", domain=domain)\n    with ncopen(\n        get_hourly_ncname(valid.year, domain=domain), \"a\", timeout=300\n    ) as nc:\n        nc.variables[\"p01m\"][idx] = val\n\n\ndef workflow(valid: datetime, domain: str, force_copy: bool):\n    \"\"\"Our stage IV workflow.\"\"\"\n    if valid.year < 1997 or domain != \"conus\":\n        era5workflow(valid, domain)\n        return\n    # Figure out what the current status is\n    p01m_status = get_p01m_status(valid)\n    if np.ma.is_masked(p01m_status) or p01m_status < 2 or force_copy:\n        # merge in the raw hourly data\n        ingest_hourly_grib(valid)\n\n    copy_to_iemre(valid)\n\n\n@click.command()\n@click.option(\"--valid\", \"ts\", type=click.DateTime(), help=\"Specific UTC\")\n@click.option(\"--valid12z\", \"ets\", type=click.DateTime(), help=\"12z UTC\")\n@click.option(\"--domain\", default=\"conus\", help=\"IEMRE Domain\")\ndef main(ts: datetime | None, ets: datetime | None, domain: str):\n    \"\"\"Go Main\"\"\"\n    if ts is not None:\n        ts = ts.replace(tzinfo=timezone.utc)\n        workflow(ts, domain, True)\n        return\n    # Otherwise we are running for an explicit 12z to 12z period, copy only\n    ets = ets.replace(tzinfo=timezone.utc)\n    now = ets - timedelta(hours=23)\n    while now <= ets:\n        workflow(now, domain, False)\n        now += timedelta(hours=1)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/prism_adjust_stage4.py",
    "content": "\"\"\"So we are here, this is our life...\n\nTake the PRISM data, valid at 12z and bias correct the hourly stage IV data\n\nRUN_NOON.sh for 1 day ago\n\"\"\"\n\nimport os\nfrom datetime import datetime, timedelta\n\nimport click\nimport numpy as np\nimport pandas as pd\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import daily_offset, hourly_offset\nfrom pyiem.util import logger, ncopen, utc\nfrom rasterio.warp import reproject\n\nDEBUGLON = -93.89\nDEBUGLAT = 42.04\nLOG = logger()\n\n\ndef compute_s4total(valid: datetime):\n    \"\"\"Figure out the 24 hour total for this timestamp.\"\"\"\n    # Split into two, so to support 1 January without yucky code\n    # 13z yesterday, arrears\n    sts = valid - timedelta(hours=23)\n    tidx0 = hourly_offset(sts)\n    # 23z yesterday\n    tidx1 = hourly_offset(sts + timedelta(hours=10))\n    ncfn = f\"/mesonet/data/stage4/{sts.year}_stage4_hourly.nc\"\n    stage4total = None\n    if os.path.isfile(ncfn):\n        with ncopen(ncfn) as nc:\n            p01m = nc.variables[\"p01m\"]\n            LOG.info(\"%s [%s thru %s]\", ncfn, tidx0, tidx1)\n            stage4total = np.sum(p01m[tidx0 : (tidx1 + 1), :, :], axis=0)\n\n    # 0z today\n    sts = valid - timedelta(hours=12)\n    tidx0 = hourly_offset(sts)\n    # 11z today\n    tidx1 = hourly_offset(valid)\n    ncfn = f\"/mesonet/data/stage4/{sts.year}_stage4_hourly.nc\"\n    with ncopen(ncfn) as nc:\n        p01m = nc.variables[\"p01m\"]\n        LOG.info(\"%s [%s thru %s]\", ncfn, tidx0, tidx1)\n        tt = np.sum(p01m[tidx0 : (tidx1 + 1), :, :], axis=0)\n        stage4total = tt if stage4total is None else (stage4total + tt)\n\n    return stage4total\n\n\ndef workflow(valid: datetime):\n    \"\"\"Our workflow\"\"\"\n    LOG.info(\"Processing %s\", valid)\n    # read prism\n    tidx = daily_offset(valid)\n    with ncopen(f\"/mesonet/data/prism/{valid.year}_daily.nc\", \"r\") as nc:\n        # rasterio freaks out if we have masked arrays\n        ppt = nc.variables[\"ppt\"][tidx].filled(0)\n    (pi, pj) = get_nav(\"prism\").find_ij(DEBUGLON, DEBUGLAT)\n\n    s4total = compute_s4total(valid)\n    (si, sj) = get_nav(\"stage4\").find_ij(DEBUGLON, DEBUGLAT)\n    # make sure the s4total does not have zeros\n    s4total = np.where(s4total < 0.001, 0.001, s4total)\n\n    # reproject prism onto the stage4 grid\n    prism_on_s4grid = np.zeros_like(s4total)\n    reproject(\n        ppt,\n        prism_on_s4grid,\n        src_transform=get_nav(\"prism\").affine,\n        src_crs=\"EPSG:4326\",\n        dst_transform=get_nav(\"stage4\").affine,\n        dst_crs=get_nav(\"stage4\").crs,\n        dst_nodata=0,\n    )\n\n    multiplier = prism_on_s4grid / s4total\n    LOG.info(\n        \"DEBUGPT prism: %.3f s4total: %.3f prism_on_s4grid: %.3f mul: %.3f\",\n        ppt[pj, pi],\n        s4total[sj, si],\n        prism_on_s4grid[sj, si],\n        multiplier[sj, si],\n    )\n    LOG.info(\n        \"gridavgs: prism: %.3f stageIV: %.3f prism_on_s4grid: %.3f mul: %.3f\",\n        np.mean(ppt),\n        np.mean(s4total),\n        np.mean(prism_on_s4grid),\n        np.mean(multiplier),\n    )\n    # 13 z yesterday\n    sts = valid - timedelta(hours=23)\n    # Through 12z file\n    ets = valid\n    for now in pd.date_range(sts, ets, freq=\"1h\"):\n        idx = hourly_offset(now)\n        ncfn = f\"/mesonet/data/stage4/{now.year}_stage4_hourly.nc\"\n        if not os.path.isfile(ncfn):\n            continue\n        with ncopen(ncfn, \"a\") as nc:\n            oldval = nc.variables[\"p01m\"][idx]\n            # we threshold the s4total to at least 0.001,\n            # so we divide by 24 here\n            # and denote that if the multiplier is zero, then we net zero\n            newval = np.where(oldval < 0.001, 0.00004, oldval) * multiplier\n            # Unsure\n            newval = np.where(newval < 0.01, 0, newval)\n            nc.variables[\"p01m\"][idx, :, :] = newval\n            LOG.info(\n                \"adjust %s[%s] DEBUGPT: oldval: %.3f newval: %.3f\",\n                now.strftime(\"%Y%m%d%H\"),\n                idx,\n                oldval[sj, si],\n                newval[sj, si],\n            )\n            # make sure have data\n            if np.ma.max(newval) > 0:\n                nc.variables[\"p01m_status\"][idx] = 3\n            else:\n                LOG.warning(\n                    \"Not setting p01m_status due to zeroes for %s[idx:%s]\",\n                    (\n                        datetime(valid.year, 1, 1, 0) + timedelta(hours=idx)\n                    ).strftime(\"%Y-%m-%dT%H\"),\n                    idx,\n                )\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), required=True)\ndef main(dt: datetime):\n    \"\"\"Go Main\"\"\"\n    workflow(utc(dt.year, dt.month, dt.day, 12))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/stage4_12z_adjust.py",
    "content": "\"\"\"Use the QC'd 12z 24 Hour files to adjust hourly data.\n\nNo need to run for previous days as PRISM is available.\n\nCalled from:\n  RUN_NOON.sh and RUN_0Z.sh for today.\n\"\"\"\n\nimport os\nfrom datetime import datetime, timedelta\n\nimport click\nimport numpy as np\nimport pygrib\nfrom pyiem import iemre\nfrom pyiem.util import archive_fetch, logger, ncopen, utc\n\nLOG = logger()\n\n\ndef save12z(ts: datetime, val: np.ndarray):\n    \"\"\"Save the data to our daily 12z file.\"\"\"\n    ncfn = f\"/mesonet/data/stage4/{ts.year}_stage4_daily.nc\"\n    if not os.path.isfile(ncfn):\n        LOG.warning(\"File not found! %s\", ncfn)\n        return\n    idx = iemre.daily_offset(ts)\n    LOG.info(\"Writing 12z grid to %s at idx: %s\", ncfn, idx)\n    with ncopen(ncfn, \"a\") as nc:\n        # Account for pre-2002 shape difference\n        if val.shape == (880, 1160):\n            nc.variables[\"p01d_12z\"][idx, 1:, :] = val[:, 39:]\n        else:\n            nc.variables[\"p01d_12z\"][idx] = val\n\n\ndef merge(ts: datetime):\n    \"\"\"\n    Process an hour's worth of stage4 data into the hourly RE\n    \"\"\"\n\n    # Load up the 12z 24h total, this is what we base our deltas on\n    ppath = f\"{ts:%Y/%m/%d}/stage4/ST4.{ts:%Y%m%d%H}.24h.grib\"\n    with archive_fetch(ppath) as fn:\n        if fn is None:\n            LOG.info(\"stage4_12z_adjust %s is missing\", ppath)\n            return\n        with pygrib.open(fn) as grbs:\n            val = grbs[1].values\n    save12z(ts, val)\n\n    # storage is in the arrears\n    sts = ts - timedelta(hours=23)\n    pairs = [(sts, ts)]\n    if ts.month == 1 and ts.day == 1:\n        pairs = [\n            (sts, sts + timedelta(hours=10)),  # 13z thr 23z\n            (ts.replace(hour=0), ts),\n        ]\n    hourly_total = None\n    for pair in pairs:\n        ncfn = f\"/mesonet/data/stage4/{pair[0].year}_stage4_hourly.nc\"\n        idx0 = iemre.hourly_offset(pair[0])\n        idx1 = iemre.hourly_offset(pair[1])\n        tslice = slice(idx0, idx1 + 1)\n        LOG.info(\"%s [%s thru %s]\", ncfn, idx0, idx1)\n        with ncopen(ncfn, timeout=60) as nc:\n            # Check that the status value is (1,2), otherwise prism ran\n            sentinel = np.nanmax(\n                nc.variables[\"p01m_status\"][tslice],\n            )\n            if sentinel == 3:\n                LOG.warning(\"Aborting as p01m_status[%s] == 3\", tslice)\n                return\n            p01m = nc.variables[\"p01m\"]\n            total = np.nansum(p01m[tslice], axis=0)\n            if hourly_total is None:\n                hourly_total = total\n            else:\n                hourly_total = np.nansum([total, hourly_total], axis=0)\n    # Set a min value to prevent div by zero\n    hourly_total = np.where(hourly_total > 0.0, hourly_total, 0.00024)\n    multiplier = val / hourly_total\n    for pair in pairs:\n        ncfn = f\"/mesonet/data/stage4/{pair[0].year}_stage4_hourly.nc\"\n        idx0 = iemre.hourly_offset(pair[0])\n        idx1 = iemre.hourly_offset(pair[1])\n        with ncopen(ncfn, mode=\"a\", timeout=60) as nc:\n            nc.variables[\"p01m_status\"][idx0 : (idx1 + 1)] = 2\n            for idx in range(idx0, idx1 + 1):\n                data = np.array(nc.variables[\"p01m\"][idx])\n                adjust = np.where(data > 0, data, 0.00001) * multiplier\n                adjust = np.where(adjust > 250.0, 0, adjust)\n                LOG.info(\n                    \"idx: %s orig:%.2f new:%.2f\",\n                    idx,\n                    np.nanmean(data),\n                    np.nanmean(adjust),\n                )\n                nc.variables[\"p01m\"][idx, :, :] = np.where(\n                    adjust < 0.01, 0, adjust\n                )\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), required=True)\ndef main(dt: datetime):\n    \"\"\"Go Main Go\"\"\"\n    merge(utc(dt.year, dt.month, dt.day, 12))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/iemre/use_icon.py",
    "content": "\"\"\"\nUse the DWD ICON model to estimate IEMRE hourly fields for non CONUS domains.\n\nhttps://www.dwd.de/DE/leistungen/opendata/help/modelle/Opendata_cdo_EN.pdf\nhttps://www.dwd.de/DWD/forschung/nwv/fepub/icon_database_main.pdf\n\nOrphaned for now, use_ifs.py instead.\n\n\"\"\"\n\nimport os\nimport subprocess\nimport sys\nimport tempfile\nimport time\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport httpx\nimport numpy as np\nimport pygrib\nfrom affine import Affine\nfrom pyiem.iemre import (\n    DOMAINS,\n    get_hourly_ncname,\n    hourly_offset,\n    reproject2iemre,\n)\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\nMETA = {\n    \"skyc\": {\"gname\": \"clct\"},\n    \"tmpk\": {\"gname\": \"t_2m\"},\n    \"dwpk\": {\"gname\": \"td_2m\"},\n    \"uwnd\": {\"gname\": \"u_10m\"},\n    \"vwnd\": {\"gname\": \"v_10m\"},\n    \"p01m\": {\"gname\": \"tot_prec\"},\n    \"p01m_prev\": {\"gname\": \"tot_prec\", \"offset\": 1},\n    # Inconsistent on server, punted \"soil4t\": {\"gname\": \"t_so\"},\n    # This is net shortwave\n    \"rsds\": {\"gname\": \"asob_s\"},\n    \"rsds_prev\": {\"gname\": \"asob_s\", \"offset\": 1},\n}\n\n\ndef compute_model_valid(valid: datetime) -> datetime | None:\n    \"\"\"\n    Compute the model valid time based on the provided valid datetime.\n    The ICON model data is available at 00, 06, 12, and 18 UTC.\n    \"\"\"\n    # We have to avoid F000 as precip and solar do not exist\n    for offset in range(1, 24):\n        model_valid = valid - timedelta(hours=offset)\n        if model_valid.hour % 6 != 0:\n            continue\n        testfn = (\n            f\"https://opendata.dwd.de/weather/nwp/icon/grib/{model_valid:%H}/\"\n            f\"t_2m/icon_global_icosahedral_single-level_{model_valid:%Y%m%d%H}_\"\n            f\"{offset:03.0f}_T_2M.grib2.bz2\"\n        )\n        try:\n            with httpx.Client() as client:\n                response = client.head(testfn)\n            if response.status_code == 200:\n                LOG.info(\"Found ICON model data for %s\", model_valid)\n                return model_valid\n        except httpx.RequestError:\n            # Handle request errors (e.g., network issues)\n            continue\n    return None\n\n\ndef grib_download(model_valid: datetime, valid: datetime) -> None:\n    \"\"\"\n    Download the necessary GRIB files for the ICON model.\n    \"\"\"\n    baseurl = \"https://opendata.dwd.de/weather/nwp/icon/grib/\"\n    fhour = (valid - model_valid).total_seconds() // 3600\n    for var, meta in META.items():\n        filename = f\"{var}.grib2.bz2\"\n        fhour_off = fhour - meta.get(\"offset\", 0)\n        url = (\n            f\"{baseurl}{model_valid:%H}/{meta['gname']}/\"\n            \"icon_global_icosahedral_single-level_\"\n            f\"{model_valid:%Y%m%d%H}_{fhour_off:03.0f}_{meta['gname'].upper()}\"\n            \".grib2.bz2\"\n        )\n        LOG.info(\"Downloading %s\", url)\n        for attempt in range(3):\n            try:\n                with httpx.Client() as client:\n                    response = client.get(url)\n                    if response.status_code == 404:\n                        # Try something 6 hours older\n                        mv2 = model_valid - timedelta(hours=6)\n                        fo2 = fhour_off + 6\n                        url = (\n                            f\"{baseurl}{mv2:%H}/{meta['gname']}/\"\n                            \"icon_global_icosahedral_single-level_\"\n                            f\"{mv2:%Y%m%d%H}_{fo2:03.0f}_\"\n                            f\"{meta['gname'].upper()}.grib2.bz2\"\n                        )\n                        response = client.get(url)\n                response.raise_for_status()\n                break\n            except (httpx.RequestError, httpx.HTTPStatusError) as e:\n                LOG.error(\"Failed to download %s: %s\", filename, e)\n                time.sleep(5)\n            if attempt == 2:\n                LOG.warning(\"Aborting\")\n                sys.exit(3)\n\n        with open(filename, \"wb\") as f:\n            f.write(response.content)\n        subprocess.run([\"bzip2\", \"-d\", filename], check=True)\n        # Use cdo to convert grid to lat/lon\n        with subprocess.Popen(\n            [\n                \"cdo\",\n                \"-f\",\n                \"grb2\",\n                (\n                    \"remap,/mesonet/data/meta/icon_description.txt,\"\n                    \"/mesonet/data/meta/icon_weights.nc\"\n                ),\n                f\"{var}.grib2\",\n                f\"{var}_latlon.grib2\",\n            ],\n            stdout=subprocess.PIPE,\n            stderr=subprocess.PIPE,\n        ) as proc:\n            stdout, stderr = proc.communicate()\n        if proc.returncode != 0:\n            LOG.error(\n                \"CDO remap failed for %s: %s %s\",\n                filename,\n                stderr.decode(\"utf-8\"),\n                stdout.decode(\"utf-8\"),\n            )\n\n\ndef copy_grib_to_netcdf(valid: datetime, domain: str, fhour: int) -> None:\n    \"\"\"Fun times.\"\"\"\n    idx = hourly_offset(valid)\n    # grib file is stored S to N\n    affine_in = Affine(0.125, 0, -180.0, 0, 0.125, -90.0)\n    with ncopen(get_hourly_ncname(valid.year, domain), \"a\") as nc:\n        for var in META:\n            if var.endswith(\"_prev\"):  # lame\n                continue\n            grib_file = f\"{var}_latlon.grib2\"\n            if not os.path.exists(grib_file):\n                LOG.warning(\"GRIB file %s does not exist, skipping\", grib_file)\n                continue\n            with pygrib.open(grib_file) as grbs:\n                values = grbs[1].values\n            if var == \"p01m\":\n                with pygrib.open(f\"{var}_prev_latlon.grib2\") as grbs:\n                    values = values - grbs[1].values\n            if var == \"rsds\":\n                with pygrib.open(f\"{var}_prev_latlon.grib2\") as grbs:\n                    values = (values * fhour) - (grbs[1].values * (fhour - 1))\n            iemre_data = reproject2iemre(\n                values, affine_in, \"EPSG:4326\", domain=domain\n            )\n            LOG.info(\n                \"Write %s[%s]@%s mean: %.2f\",\n                var,\n                domain,\n                idx,\n                np.mean(iemre_data),\n            )\n            nc.variables[var][idx] = iemre_data\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), required=True)\ndef main(valid: datetime) -> None:\n    \"\"\"Main function to process ICON data for IEMRE.\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    # 1. Figure out which ICON model is available for usage\n    model_valid = compute_model_valid(valid)\n    if model_valid is None:\n        LOG.warning(\"No ICON model data available for %s\", valid)\n        return\n    # 2. Download the necessary files\n    grib_download(model_valid, valid)\n    fhour = (valid - model_valid).total_seconds() // 3600\n    # 3. Copy to IEMRE netcdf files\n    for domain in DOMAINS:\n        if domain == \"conus\":\n            continue\n        copy_grib_to_netcdf(valid, domain, fhour)\n\n\nif __name__ == \"__main__\":\n    with tempfile.TemporaryDirectory() as tmpdir:\n        os.chdir(tmpdir)\n        main()\n"
  },
  {
    "path": "scripts/iemre/use_ifs.py",
    "content": "\"\"\"\nOpen-Meteo makes the 1 hour IFS output available on AWS.\n\nCalled from RUN_40_AFTER.sh\n - top of next hour.\n - for something 12 hours ago, so to get closer radiation source\n\n\"\"\"\n\nimport os\nimport tempfile\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport fsspec\nimport httpx\nfrom affine import Affine\nfrom earthkit.regrid import interpolate\nfrom metpy.units import units\nfrom omfiles import OmFileReader\nfrom pyiem.iemre import (\n    DOMAINS,\n    get_hourly_ncname,\n    hourly_offset,\n    reproject2iemre,\n)\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\n# https://www.ecmwf.int/en/forecasts/datasets/open-data\nMETA = {}\n\n\ndef compute_model_valid(valid: datetime) -> datetime | None:\n    \"\"\"\n    Compute the model valid time based on the provided valid datetime.\n    The ICON model data is available at 00, 06, 12, and 18 UTC.\n    \"\"\"\n    # We have to avoid F000 as precip and solar do not exist\n    for offset in range(1, 24):\n        model_valid = valid - timedelta(hours=offset)\n        if model_valid.hour % 6 != 0:\n            continue\n        testfn = (\n            \"https://openmeteo.s3.amazonaws.com/data_spatial/\"\n            f\"ecmwf_ifs/{model_valid:%Y/%m/%d/%H%M}Z/\"\n            f\"{valid:%Y-%m-%dT%H%M}.om\"\n        )\n        LOG.info(\"Checking for %s\", testfn)\n        try:\n            with httpx.Client() as client:\n                response = client.head(testfn)\n            if response.status_code == 200:\n                LOG.info(\"Found IFS model data for %s\", model_valid)\n                return model_valid\n        except httpx.RequestError:\n            # Handle request errors (e.g., network issues)\n            continue\n    return None\n\n\ndef process(valid: datetime, model_valid: datetime) -> None:\n    \"\"\"Fun times.\"\"\"\n    tidx = hourly_offset(valid)\n\n    s3uri = (\n        \"s3://openmeteo/data_spatial/ecmwf_ifs/\"\n        f\"{model_valid:%Y/%m/%d/%H%M}Z/{valid:%Y-%m-%dT%H%M}.om\"\n    )\n    backend = fsspec.open(\n        f\"blockcache::{s3uri}\",\n        mode=\"rb\",\n        s3={\"anon\": True, \"default_block_size\": 65536},\n        blockcache={\"cache_storage\": \"cache\"},\n    )\n    affine = Affine(\n        0.125,\n        0.0,\n        0.0,\n        0.0,\n        -0.125,\n        90.0,\n    )\n    with OmFileReader(backend) as root:\n        # Print out the inventory\n        for omidx in range(root.num_children):\n            child = root.get_child_by_index(omidx)\n            LOG.info(\"Child %s: %s\", omidx, child.name)\n        ncvars = {\n            \"tmpc\": root.get_child_by_name(\"temperature_2m\"),\n            \"soilc\": root.get_child_by_name(\"soil_temperature_0_to_7cm\"),\n            \"uwnd\": root.get_child_by_name(\"wind_u_component_10m\"),\n            \"vwnd\": root.get_child_by_name(\"wind_v_component_10m\"),\n            \"dwpc\": root.get_child_by_name(\"dew_point_2m\"),\n            \"cloud_cover\": root.get_child_by_name(\"cloud_cover\"),\n            \"swdn\": root.get_child_by_name(\"shortwave_radiation\"),\n            \"precip\": root.get_child_by_name(\"precipitation\"),\n        }\n        for ncvar, omvar in ncvars.items():\n            # Believe this goes 0-360 lon and 90 to -90 lat\n            ncvars[ncvar] = interpolate(\n                omvar[:],\n                in_grid={\"grid\": \"O1280\"},\n                out_grid={\"grid\": [0.125, 0.125]},\n                method=\"linear\",\n            )\n\n        for domain in DOMAINS:\n            if domain in (\"\", \"conus\"):\n                continue\n            with ncopen(get_hourly_ncname(valid.year, domain), \"a\") as nc:\n                # No unit conversions\n                for ncvar, omvar in [\n                    (\"uwnd\", ncvars[\"uwnd\"]),\n                    (\"vwnd\", ncvars[\"vwnd\"]),\n                    (\"skyc\", ncvars[\"cloud_cover\"]),\n                    (\"rsds\", ncvars[\"swdn\"]),\n                    (\"p01m\", ncvars[\"precip\"]),\n                ]:\n                    nc.variables[ncvar][tidx] = reproject2iemre(\n                        omvar[:],\n                        affine,\n                        \"EPSG:4326\",\n                        domain=domain,\n                    )\n\n                # C to K\n                for ncvar, omvar in [\n                    (\"tmpk\", ncvars[\"tmpc\"]),\n                    (\"dwpk\", ncvars[\"dwpc\"]),\n                    (\"soil4t\", ncvars[\"soilc\"]),\n                ]:\n                    nc.variables[ncvar][tidx] = (\n                        (\n                            units.degC\n                            * reproject2iemre(\n                                omvar[:],\n                                affine,\n                                \"EPSG:4326\",\n                                domain=domain,\n                            )\n                        )\n                        .to(units.degK)\n                        .m\n                    )\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), required=True)\ndef main(valid: datetime) -> None:\n    \"\"\"Main function to process ICON data for IEMRE.\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    # 1. Figure out which IFS model is available for usage\n    model_valid = compute_model_valid(valid)\n    if model_valid is None:\n        LOG.warning(\"No IFS model data available for %s\", valid)\n        return\n    # 3. Process\n    process(valid, model_valid)\n\n\nif __name__ == \"__main__\":\n    with tempfile.TemporaryDirectory() as tmpdir:\n        os.chdir(tmpdir)\n        main()\n"
  },
  {
    "path": "scripts/ingestors/asos_1minute/p1_examples.txt",
    "content": "14923KMLI MLI2010010206581258   0.109 b                              M     M     M     0    09 60+              \n14923KMLI MLI2010010309121512  -0.126 D                              M     M    276    6    09 60+              \n14923KMLI MLI2010011107091309 [ 0.219 N]                          [ 296     6   294    9 ] [09 60+]             \n14931KBRL BRL2010012100100610   1.774 B                              M     M     85   10                        \n14942KOMA OMA2010011316472247   0.143 D                             183    13   179   16   [14R60+]             \n14942KOMA OMA2010011521400340   0.989 N                             168    12   164   14    14R60+              \n14942KOMA OMA2010011708051405   5.278 D                             245     3   257    4    14R24               \n14931KBRL BRL2010012103370937   3.657 V                              M     M     92   13                        \n14931KBRL BRL2010012023010501   2.819 S                              M     M     89   11                        \n14943KSUX SUX2010010100000600   0.104 N                             318     2   318    3      M                 \n14943KSUX SUX2010013123590559   0.115 N                              96     8   102   10      M                 \n94989KAMW AMW2010010106261226   0.087 N                             318     9   321   11                        \n14933KDSM DSM2010010101380738   0.098 N                             306     9   312    9    31 60+              \n94989KAMW AMW2010012112281828    M    M                              80     6    72    9                        \n94989KAMW AMW2010012112271827  70000.00                                80     6    82    8                      \n14942KOMA OMA2012111704141014   0.191 N                             149    10   151   12    14RFFF              \n14933KDSM DSM2013030312191819    0.167 [N]                             120   11  121   12   31 60+              \n03928KICT ICT2013060105471147   0.050 D                             325    14   329   19    01L60+              \n14942KOMA OMA2013120308291429  [   M  ][D]                            [ M    M    M    M ] []                   \n14942KOMA OMA2013120309421542  [ 0.265][D]                            [ M    M    M    M ] [14R60+]             \n14942KOMA OMA2013121611251725  [15.300] D                              161    2  189    3   14R60+              \n93814KCVG CVG2020043023570457    0.115  N     0.090  N                 301   10  308   11   18C60+              \n94846KORD ORD2020030311241724    0.106  D                  0.133  D    261   15  242   20   10L60+              \n93738KIAD IAD2000101314391939   0.103 D     0.065 D     0.050 D    316      6   322    9     M\n93738KIAD IAD2002022203220822   0.117 N     0.088 N   N    305      3   326    3   01R60+\n93738KIAD IAD2002022201520652   0.109 N     0.084 N     0.081 N    206      2   264  R60+    0703   0\n93738KIAD IAD2002022201410641R60+9      2   176    2   01R60+    \n93738KIAD IAD2005103111321632   0.138 D     0.051 D   D     0.050 D     0.069 D     2   208    8      M"
  },
  {
    "path": "scripts/ingestors/asos_1minute/p2_examples.txt",
    "content": "94908KDBQ DBQ2012020713191919  NP [0000  ][ 0.00]            39971   29.196  29.197  29.204    29   23          \n14972KSPW SPW2009110517122312  NP  0000   [ 0.00]            39992   28.661  28.673            50   34         \n94991KLWD LWD2009122215352135  NP  0000     0.00             39992   28.738  28.736          [ 32]  30         \n14944KFSD FSD2010013123590559  NP           0.00             39985   28.686  28.681  28.684     7    2         \n14937KIOW IOW2010010212131813  M   0000      M                 M    [29.841][29.840]           M    M          \n14990KCID CID2010012705561156  NP [0000  ]  0.00            [39967]  29.193  29.188  29.195    11    5         \n14990KCID CID2010012708381438 [S-][0000  ]  0.00             39967   29.205  29.199  29.207    15    9         \n14972KSPW SPW2010012507461346 [M ] 0000     0.00             39994   28.021  28.035            20   17         \n14931KBRL BRL2010012016222222  Yb  0000     0.00             39840   28.974  28.974  28.980    33   31         \n14931KBRL BRL2010012012041804  P   0001V    0.00             39547   29.014  29.013  29.019    32   30         \n14931KBRL BRL2010012016332233  0.    M      0.00             39831     M       M       M       33   31         \n94988KMIW MIW2010012110331633  M     M       M                 M     28.736  28.733            M    M           \n14931KBRL BRL2010012105471147  NP    M       M               40000   28.945  28.944  28.950    34   33          \n14940KMCW MCW2010010916182218  NP  0000     0.00               M     29.192  29.196  29.197    M    M           \n14943KSUX SUX2010010100000600  NP  0000     0.00             39981   29.200  29.200  29.205    -2   -7          \n14933KDSM DSM2010010101380738  NP [0000  ]  0.00             39991   29.336  29.331  29.330     3   -5          \n94982KDVN DVN2010010101350735  NP  0000     0.00             39942   29.508  29.500            -1   -6          \n14943KSUX SUX2010013123050505  NP    M      0.00             39988   29.013  29.012  29.018    13    6          \n14943KSUX SUX2010013109471547  ?0 [  M   ]  0.00             39988   29.087  29.086  29.092    16   10          \n94989KAMW AMW2010010613201920  S   0000     0.01             40002   29.197  29.191             9    5          \n14944KFSD FSD2012111613061906  NP [0000  ]  0.00             39992   28.806  28.797  28.801    45 [ 25]         \n14937KIOW IOW2013042921140314  NP  0000                      39975   28.966  28.962            70   59          \n14933KDSM DSM2013101412201820 [ S-] 0000    0.00              40003   29.096  29.088  29.089   65   37          \n14944KFSD FSD2013121800080608   NP  0000    0.00              39998   28.456  28.449  28.451 [ 38][ 14]         \n14933KDSM DSM2013121710211621   NP [0000  ] 0.00              40009   29.131  29.125  29.124 [ M ]  25          \n14943KSUX SUX2013122716022202 [ M ] 0000                     [  M  ]  28.854  28.852  28.859 [ M ][ M ]         \n14942KOMA OMA2013120308361436 [ M ][  M   ]                  [  M  ] [  M   ][  M   ][  M   ][ M ][ M ]         \n04112KSNT SNT2020060100000700               0.00                      23.668  23.663           46   36\n94989KAMW AMW2012011722040404  NP  0000     0.00             39999   29.342  29.336             2   -2 \n14933KDSM DSM2002081206091209  R+ [  M   ] 0.03                      28.938  28.928  28.932    65   64 "
  },
  {
    "path": "scripts/ingestors/asos_1minute/parse_ncei_asos1minute.py",
    "content": "\"\"\"\nAttempt to process the 1 minute archives available from NCEI\n\nNCEI provides monthly tar files for nearly up to the current day here:\n\nhttps://www.ncei.noaa.gov/pub/download/hidden/onemin/\n\nNCEI generates these at about 1530EDT, so we run a bit after that via crontab\n\"\"\"\n\nimport os\nimport re\nimport subprocess\nimport sys\nimport tarfile\nfrom datetime import datetime, timedelta\nfrom io import StringIO\n\nimport click\nimport httpx\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import logger, set_property, utc\nfrom tqdm import tqdm\n\nLOG = logger()\nHIDDENURL = \"https://www.ncei.noaa.gov/pub/download/hidden/onemin\"\nBASEDIR = \"/mesonet/ARCHIVE/raw/asos/data\"\nTMPDIR = \"/mesonet/tmp/asos1min\"\nif not os.path.isdir(TMPDIR):\n    os.makedirs(TMPDIR)\n\nREAL_RE = re.compile(r\"^\\-?\\d+\\.\\d+$\")\nINT_RE = re.compile(r\"^\\-?\\d+$\")\nRUNWAY_RE = re.compile(r\" \\d+\\s\\d+\\+?\\s*$\")\nDT1980 = utc(1980, 1, 1)\n\n\ndef tstamp2dt(s, metadata):\n    \"\"\"Convert a string to a datetime\"\"\"\n    if s[0] not in [\"1\", \"2\"]:\n        LOG.debug(\"bad timestamp |%s|\", s)\n        return None\n    try:\n        ts = utc(int(s[:4]), int(s[4:6]), int(s[6:8]))\n    except Exception:\n        LOG.debug(\"bad timestamp |%s|\", s)\n        return None\n    local_hr = int(s[8:10])\n    utc_hr = int(s[12:14])\n    utc_is_ahead = metadata[\"utc_direction\"] == 1\n    # PAIN\n    if utc_is_ahead and utc_hr < local_hr:\n        ts += timedelta(hours=24)\n    elif not utc_is_ahead and utc_hr > local_hr:\n        ts -= timedelta(hours=24)\n\n    return ts.replace(hour=utc_hr, minute=int(s[14:16]))\n\n\ndef p2_parser(ln, metadata):\n    \"\"\"\n    Handle the parsing of a line found in the 6506 report, return QC dict\n    \"\"\"\n    if len(ln) < 30:\n        return None\n    res = {\n        \"wban\": ln[:5],\n        \"faaid\": ln[5:9],\n        \"id3\": ln[10:13],\n        \"tstamp\": ln[13:29],\n    }\n    ln = ln.replace(\"[\", \" \").replace(\"]\", \" \").replace(\"\\\\\", \" \")\n    res[\"valid\"] = tstamp2dt(res[\"tstamp\"], metadata)\n    if res[\"valid\"] is None:\n        return None\n    s = ln[31:34].strip()\n    res[\"ptype\"] = None if s == \"\" else s[:2]\n    s = ln[43:48].strip()\n    res[\"precip\"] = make_real(s, 0, 0.5)\n    s = ln[69:77].strip()\n    res[\"pres1\"] = make_real(s, 10, 40)\n    s = ln[77:85].strip()\n    res[\"pres2\"] = make_real(s, 10, 40)\n    s = ln[85:93].strip()\n    res[\"pres3\"] = make_real(s, 10, 40)\n    s = ln[94:97].strip()\n    res[\"tmpf\"] = make_int(s, -90, 150)\n    s = ln[99:102].strip()\n    res[\"dwpf\"] = make_int(s, -90, 150)\n\n    return res\n\n\ndef make_real(s, minval, maxval):\n    \"\"\"Make an integer, if we can!\"\"\"\n    if REAL_RE.match(s):\n        val = float(s)\n        if minval <= val <= maxval:\n            return val\n        LOG.debug(\"val %s outside of bounds %s %s\", val, minval, maxval)\n\n    return None\n\n\ndef make_int(s, minval, maxval):\n    \"\"\"Make an integer, if we can!\"\"\"\n    if INT_RE.match(s):\n        val = int(s)\n        if minval <= val <= maxval:\n            return val\n        LOG.debug(\"val %s outside of bounds %s %s\", val, minval, maxval)\n\n    return None\n\n\ndef p1_parser(line, metadata):\n    \"\"\"\n    Handle the parsing of a line found in the 6505 report, return QC dict\n    \"\"\"\n    if len(line) < 30:\n        return None\n    res = {\n        \"wban\": line[:5],\n        \"faaid\": line[5:9],\n        \"id3\": line[10:13],\n        \"tstamp\": line[13:29],\n    }\n    res[\"valid\"] = tstamp2dt(res[\"tstamp\"], metadata)\n    if res[\"valid\"] is None:\n        return None\n    # Ignore [], but leave spaces in their place\n    ln = line[30:].replace(\"[\", \" \").replace(\"]\", \" \").strip()\n    # The runway pattern at the end causes pain, remove 90% of the trouble\n    ln = re.sub(RUNWAY_RE, \" _\", ln)\n    # Split the rest into tokens\n    tokens = ln.split()\n    sz = len(tokens)\n    # Look for viz pairs, these will be some decimal value followed by 1 char\n    vispos = 1\n    ints = []\n    i = 0\n    while i < len(tokens):\n        token = tokens[i]\n        if token.find(\".\") > -1 and (i + 1) < sz:\n            # Corrupt data at this point, abandon ship\n            if vispos == 4:\n                break\n            res[f\"vis{vispos}_coeff\"] = make_real(token, 0, 100)\n            i += 1\n            if len(tokens[i]) == 1 and tokens[i].isalpha():\n                res[f\"vis{vispos}_nd\"] = tokens[i]\n                i += 1\n            vispos += 1\n            continue\n        # Once we find an int, we are done with viz work and the pain starts\n        if token.isdigit() or token == \"M\":\n            # Get the remainder\n            ints = tokens[i:]\n            # Ideally, we find 4 ints in a row in the -5 to -2 positions as the\n            # last is the runway value\n            if len(ints) > 4 and all(\n                INT_RE.match(t) is not None for t in ints[-5:-1]\n            ):\n                ints = ints[-5:-1]\n            # So if that failed, try the first four positions\n            elif all(INT_RE.match(t) is not None for t in ints[:4]):\n                ints = ints[:4]\n            # So if that failed, try the last four positions\n            elif len(ints) > 4 and all(\n                INT_RE.match(t) is not None for t in ints[-4:]\n            ):\n                ints = ints[-4:]\n            else:\n                ints = []\n            break\n        i += 1\n    if len(ints) >= 4:\n        res[\"drct\"] = make_int(ints[0], 0, 360)\n        res[\"sknt\"] = make_int(ints[1], 0, 125)\n        res[\"gust_drct\"] = make_int(ints[2], 0, 360)\n        res[\"gust_sknt\"] = make_int(ints[3], 0, 125)\n    return res\n\n\ndef dl_archive(df, dt):\n    \"\"\"Do archived downloading.\"\"\"\n    # https://www.ncei.noaa.gov/data/automated-surface-observing-system-one-\n    # minute-pg1/access/2022/08/asos-1min-pg1-K1J0-202208.dat\n    baseuri = (\n        \"https://www.ncei.noaa.gov/data/automated-surface-observing-system-\"\n        \"one-minute-pg\"\n    )\n    for station in df.index.values:\n        datadir = f\"{BASEDIR}/{station}\"\n        if not os.path.isdir(datadir):\n            os.makedirs(datadir)\n        station4 = station if len(station) == 4 else f\"K{station}\"\n        for page in [1, 2]:\n            fn = f\"asos-1min-pg{page}-{station4}-{dt:%Y%m}.dat\"\n            if not os.path.isfile(f\"{datadir}/{fn}\"):\n                uri = f\"{baseuri}{page}/access/{dt:%Y/%m}/{fn}\"\n                for _ in range(3):\n                    try:\n                        resp = httpx.get(uri, timeout=60)\n                        if resp.status_code == 404:\n                            LOG.info(\"dl_archive %s missing\", uri)\n                            resp = None\n                            break\n                        resp.raise_for_status()\n                        break\n                    except Exception as exp:\n                        LOG.warning(\"dl_archive %s failed: %s\", uri, exp)\n                        resp = None\n                        continue\n                if resp is not None:\n                    with open(f\"{datadir}/{fn}\", \"wb\") as fh:\n                        fh.write(resp.content)\n                    df.at[station, f\"fn{page + 4}\"] = f\"{datadir}/{fn}\"\n            else:\n                df.at[station, f\"fn{page + 4}\"] = f\"{datadir}/{fn}\"\n\n\ndef liner(fn):\n    \"\"\"Hacky.\"\"\"\n    return open(fn, encoding=\"utf-8\", errors=\"ignore\")\n\n\ndef runner(pgconn, metadata, station):\n    \"\"\"Do the work prescribed.\"\"\"\n    if not os.path.isfile(metadata[\"fn5\"]) or not os.path.isfile(\n        metadata[\"fn6\"]\n    ):\n        return 0\n\n    # Our final amount of data\n    data = {}\n    # We have two files to worry about\n    for ln in liner(metadata[\"fn5\"]):\n        try:\n            d = p1_parser(ln, metadata)\n        except Exception as exp:\n            LOG.info(\"p1_parser failed: %s\", exp)\n            continue\n        if d is None or d[\"valid\"] <= metadata[\"archive_end\"]:\n            continue\n        data[d[\"valid\"]] = d\n\n    for ln in liner(metadata[\"fn6\"]):\n        d = p2_parser(ln, metadata)\n        if d is None or d[\"valid\"] <= metadata[\"archive_end\"]:\n            continue\n        res = data.setdefault(d[\"valid\"], {})\n        res.update(d)\n\n    if not data:\n        LOG.debug(\n            \"No data found station: %s, archive_end: %s\",\n            station,\n            metadata[\"archive_end\"],\n        )\n        return 0\n\n    mints = min(data)\n    maxts = max(data)\n    if (maxts - mints) > timedelta(days=40):\n        LOG.warning(\n            \"refusing to update %s due to %s-%s > 40 days\",\n            station,\n            mints,\n            maxts,\n        )\n        return 0\n\n    cursor = pgconn.cursor()\n    cursor.execute(\n        \"DELETE from alldata_1minute WHERE station = %s and \"\n        \"valid >= %s and valid <= %s\",\n        (station, mints, maxts),\n    )\n    LOG.debug(\n        \"removed %s rows between %s and %s\", cursor.rowcount, mints, maxts\n    )\n    sio = StringIO()\n    cols = (\n        \"station valid vis1_coeff vis1_nd vis2_coeff vis2_nd vis3_coeff \"\n        \"vis3_nd drct sknt gust_drct gust_sknt ptype precip pres1 \"\n        \"pres2 pres3 tmpf dwpf\"\n    ).split()\n\n    # Loop over the data we got please\n    fmt = \"\\t\".join([\"%s\"] * len(cols[2:]))\n    for ts, entry in data.items():\n        sio.write(f\"{station}\\t{ts}\\t\")\n        sio.write(fmt % (*[entry.get(col) for col in cols[2:]],))\n        sio.write(\"\\n\")\n    sio.seek(0)\n    sql = (\n        f\"copy alldata_1minute({','.join(cols)}) from stdin \"\n        \"with null as 'None'\"\n    )\n    with cursor.copy(sql) as copy:\n        copy.write(sio.read())\n    count = cursor.rowcount\n    cursor.close()\n    pgconn.commit()\n    return count\n\n\ndef init_dataframes(\n    year: int | None,\n    month: int | None,\n    station: str | None,\n    dt: datetime | None,\n) -> list:\n    \"\"\"Build the processing dataframe.\"\"\"\n    # ASOS query limit keeps other sites out of result that may have 1min\n    # Do a time zone trick to figure out UTC offset 1 is ahead\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            SELECT id,\n            case when extract(year from ('2020-01-01 00:00+00' at time zone\n            tzname)) = 2019 then 1 else -1 end as utc_direction from\n            stations t JOIN station_attributes a on\n            (t.iemid = a.iemid) where a.attr = 'HAS1MIN'\n            and t.network ~* 'ASOS' ORDER by id ASC\n            \"\"\",\n            conn,\n            index_col=\"id\",\n        )\n    # Set a currently impossible floor for a bounds check.\n    df[\"archive_end\"] = DT1980\n    df[\"fn5\"] = \"\"\n    df[\"fn6\"] = \"\"\n    if year is not None and month is not None:\n        dt = utc(year, month)\n        if station is not None:\n            LOG.info(\"Limiting work to station %s\", station)\n            df = df.loc[[station]]\n        dl_archive(df, dt)\n        return [df]\n    res = []\n    months = [dt]\n    if dt.day < 7:\n        months.insert(0, dt - timedelta(days=9))\n    for mdt in months:\n        df[\"archive_end\"] = DT1980\n        df[\"fn5\"] = \"\"\n        df[\"fn6\"] = \"\"\n        merge_archive_end(df, mdt)\n        for page in [1, 2]:\n            dl_realtime(df, dt, mdt, page)\n        res.append(df.copy())\n    set_property(\"asos.1min.end\", dt.strftime(\"%Y-%m-%d\"))\n\n    return res\n\n\ndef merge_archive_end(df, dt):\n    \"\"\"Figure out our archive end times.\"\"\"\n    table = f\"t{dt:%Y%m}_1minute\"\n    with get_sqlalchemy_conn(\"asos1min\") as conn:\n        df2 = pd.read_sql(\n            sql_helper(\n                \"SELECT station, max(valid) from {table} GROUP by station\",\n                table=table,\n            ),\n            conn,\n            index_col=\"station\",\n        )\n    LOG.info(\"found %s stations in the archive\", len(df2.index))\n    df[\"archive_end\"] = df2[\"max\"]\n    df[\"archive_end\"] = df[\"archive_end\"].fillna(DT1980).infer_objects()\n\n\ndef dl_realtime(df, dt, mdt, page):\n    \"\"\"Download and stage the 'real-time' processing.\"\"\"\n    # Good grief asos-1min-pg1_d202207_c20220721.tar.gz\n    tmpfn = f\"asos-1min-pg{page}_d{mdt:%Y%m}_c{dt:%Y%m%d}.tar.gz\"\n    if not os.path.isfile(f\"{TMPDIR}/{tmpfn}\"):\n        uri = f\"{HIDDENURL}/{tmpfn}\"\n        with httpx.stream(\"GET\", uri, timeout=60) as resp:\n            if resp.status_code != 200:\n                loglvl = LOG.info if dt.month != mdt.month else LOG.warning\n                loglvl(\"Got HTTP %s for %s\", resp.status_code, uri)\n                sys.exit(2)\n            with open(f\"{TMPDIR}/{tmpfn}\", \"wb\") as fh:\n                for chunk in resp.iter_bytes():\n                    if chunk:\n                        fh.write(chunk)\n    with tarfile.open(f\"{TMPDIR}/{tmpfn}\", \"r:gz\") as tar:\n        for tarinfo in tar:\n            if not tarinfo.isreg():\n                continue\n            if not tarinfo.name.startswith(\"asos-1min-pg\"):\n                LOG.info(\"Unknown filename %s\", tarinfo.name)\n                continue\n            station = tarinfo.name.split(\"-\")[3]\n            if station[0] == \"K\":\n                station = station[1:]\n            if station not in df.index:\n                LOG.warning(\"Unknown station %s, FIXME!\", station)\n                continue\n            f = tar.extractfile(tarinfo.name)\n            with open(f\"{TMPDIR}/{tarinfo.name}\", \"wb\") as fh:\n                fh.write(f.read())\n            # sick\n            df.at[station, f\"fn{page + 4}\"] = f\"{TMPDIR}/{tarinfo.name}\"\n\n\ndef cleanup(df):\n    \"\"\"Pickup after ourselves.\"\"\"\n    for _station, row in df.iterrows():\n        for page in [5, 6]:\n            fn = row[f\"fn{page}\"]\n            if not pd.isnull(fn) and fn.startswith(TMPDIR):\n                os.unlink(fn)\n    # Cleanup tmp folder\n    subprocess.call([\"tmpwatch\", \"200\", TMPDIR])\n\n\n@click.command()\n@click.option(\"--year\", type=int, required=False, help=\"Year to process\")\n@click.option(\"--month\", type=int, required=False, help=\"Month to process\")\n@click.option(\"--station\", type=str, required=False, help=\"Station to process\")\n@click.option(\n    \"--date\",\n    \"dt\",\n    type=click.DateTime(),\n    required=False,\n    help=\"NCEI hidden file date\",\n)\ndef main(\n    year: int | None,\n    month: int | None,\n    station: str | None,\n    dt: datetime | None,\n):\n    \"\"\"Go Main Go\"\"\"\n    cronjob = not sys.stdout.isatty()\n    # Build a dataframe to do work with\n    total = 0\n    for df in init_dataframes(year, month, station, dt):\n        pgconn = get_dbconn(\"asos1min\")\n        progress = tqdm(df.index.values, disable=cronjob)\n        for _station in progress:\n            row = df.loc[_station]\n            progress.set_description(f\"{_station}\")\n            total += runner(pgconn, row, _station)\n        pgconn.close()\n        cleanup(df)\n    LOG.info(\"Ingested %s observations\", total)\n\n\nif __name__ == \"__main__\":\n    main()\n\n\ndef test_timestamp():\n    \"\"\"Test that coversion of timestamps.\"\"\"\n    res = tstamp2dt(\"2001100100021402\", {\"utc_direction\": -1})\n    assert res == utc(2001, 9, 30, 14, 2)\n    res = tstamp2dt(\"2001100110000000\", {\"utc_direction\": -1})\n    assert res == utc(2001, 10, 1)\n    res = tstamp2dt(\"2001100100000600\", {\"utc_direction\": 1})\n    assert res == utc(2001, 10, 1, 6)\n    res = tstamp2dt(\"2001100123000500\", {\"utc_direction\": 1})\n    assert res == utc(2001, 10, 2, 5)\n\n\ndef test_parser():\n    \"\"\"test things\"\"\"\n    metadata = {\"utc_direction\": 1}\n    with open(\"p1_examples.txt\", encoding=\"utf-8\") as fh:\n        p1_examples = fh.readlines()\n    for i, ex in enumerate(p1_examples):\n        res = p1_parser(ex, metadata)\n        if i == 0:\n            assert abs(float(res[\"vis1_coeff\"]) - 0.109) < 0.01\n        if i == 22:\n            assert abs(float(res[\"drct\"]) - 261.0) < 0.01\n        if i == 24:\n            assert abs(float(res[\"drct\"]) - 305.0) < 0.01\n        if i in [26, 27]:\n            assert res.get(\"drct\") is None\n        assert res is not None\n    with open(\"p2_examples.txt\", encoding=\"utf-8\") as fh:\n        p2_examples = fh.readlines()\n    for i, ex in enumerate(p2_examples):\n        res = p2_parser(ex, metadata)\n        if i == 0:\n            assert abs(res[\"tmpf\"] - 29.0) < 0.01\n            assert abs(res[\"dwpf\"] - 23.0) < 0.01\n        if i == 19:\n            assert abs(res[\"precip\"] - 0.01) < 0.01\n        if i == 29:\n            assert abs(res[\"precip\"] - 0.03) < 0.01\n        if i == 28:\n            assert abs(res[\"dwpf\"] - -2) < 0.01\n        assert res is not None\n"
  },
  {
    "path": "scripts/ingestors/awos/parse_monthly_maint.py",
    "content": "\"\"\"Parse monthly IDOT Maint Report.\n\n1. Only sites in `CALSITES` get calibrated as others will just have their\nentire sensors replaced when outside of bounds.\n2. There is no flag that denotes if a calibration even happened :/\n\"\"\"\n\nimport re\nfrom datetime import datetime\n\nimport click\nimport pandas as pd\nfrom pyiem.database import get_dbconn\n\n# These sites have old sensors that still can be calibrated\nCALSITES = \"TVK CKP FXY GGI IIB IFA MPZ I75 OOA PEA PRO VTI\".split()\nCALINFO = re.compile(\n    (\n        r\".*AWOS.*\\s+([0-9\\-\\.]+)\\s*/\\s*([0-9\\-\\.]+)\\s+\"\n        r\".*AWOS.*\\s+([0-9\\-\\.]+)\\s*/\\s*([0-9\\-\\.]+)\"\n    ),\n    re.IGNORECASE,\n)\nHEADER = \"\\033[95m\"\nOKBLUE = \"\\033[94m\"\nOKGREEN = \"\\033[92m\"\nWARNING = \"\\033[93m\"\nFAIL = \"\\033[91m\"\nENDC = \"\\033[0m\"\n\n\ndef clean(val: str) -> float:\n    \"\"\"Clean a value\"\"\"\n    return float(val.rstrip(\".\"))\n\n\n@click.command()\n@click.option(\"--filename\", help=\"CSV file to parse\", required=True)\n@click.option(\"--commit\", is_flag=True, help=\"Actually commit to database\")\ndef main(filename: str, commit: bool) -> None:\n    \"\"\"Go Main\"\"\"\n    # Use SSH proxy\n    pgconn = get_dbconn(\"portfolio\", user=\"mesonet\")\n    pcursor = pgconn.cursor()\n\n    df = pd.read_csv(filename, encoding=\"cp1252\")\n    done = []\n    for _, row in df.iterrows():\n        faa = row[\"FAA Code\"]\n        comment = \"\"\n        if faa not in CALSITES:\n            comment = \" [FYI Check Made]\"\n        key = faa + row[\"Visit Date\"]\n        if key in done:\n            continue\n        done.append(key)\n        date = datetime.strptime(row[\"Visit Date\"], \"%m-%d-%Y\")\n        descr = (\n            row[\"Description\"]\n            .lower()\n            .replace(\"\\r\", \"\")\n            .replace(\"\\n\", \" \")\n            .replace(\"std\", \"/\")\n            .replace(\"/standard\", \"/\")\n            .replace(\"standard\", \"/\")\n            .replace(\"/ temp \", \"/ \")\n            .replace(\"/ dew \", \"/ \")\n        )\n        if descr.startswith(\"site offline\"):\n            continue\n        parts = re.findall(CALINFO, descr)\n        if not parts:\n            print(FAIL + descr + ENDC)\n            continue\n        sql = \"\"\"\n        INSERT into iem_calibration(station, portfolio, valid, parameter,\n        adjustment, final, comments) values (%s, 'iaawos', %s, %s, %s, %s, %s)\n        \"\"\"\n        comment = (\n            row[\"Description\"]\n            .replace('\"', \"\")\n            .replace(\"\\r\", \"\")\n            .replace(\"\\n\", \" \")\n            + comment\n        )\n        tempadj = float(parts[0][1]) - clean(parts[0][0])\n        p2 = parts[0][2]\n        p2 = p2.removesuffix(\".\")\n        args = (\n            faa,\n            date.strftime(\"%Y-%m-%d\"),\n            \"tmpf\",\n            tempadj,\n            p2,\n            comment,\n        )\n        if commit:\n            pcursor.execute(\n                \"\"\"\n                delete from iem_calibration where station = %s and valid = %s\n                and parameter = %s\n                \"\"\",\n                (faa, date.strftime(\"%Y-%m-%d\"), \"tmpf\"),\n            )\n            pcursor.execute(sql, args)\n\n        dewpadj = float(parts[0][3]) - float(p2)\n        args = (\n            faa,\n            date.strftime(\"%Y-%m-%d\"),\n            \"dwpf\",\n            dewpadj,\n            parts[0][3],\n            comment,\n        )\n        if commit:\n            pcursor.execute(\n                \"\"\"\n                delete from iem_calibration where station = %s and valid = %s\n                and parameter = %s\n                \"\"\",\n                (faa, date.strftime(\"%Y-%m-%d\"), \"dwpf\"),\n            )\n            pcursor.execute(sql, args)\n\n        print(\n            f\"--> {faa} [{date}] TMPF: {parts[0][1]} ({tempadj}) \"\n            f\"DWPF: {parts[0][3]} ({dewpadj}){comment}\"\n        )\n\n    if not commit:\n        print(\"WARNING: Disabled, call with --commit to enable\")\n    else:\n        pcursor.close()\n        pgconn.commit()\n        pgconn.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/cocorahs/cocorahs_data_ingest.py",
    "content": "\"\"\"Process CoCoRaHS Stations!\n\nhttps://data.cocorahs.org/cocorahs/Export/ExportManager.aspx\n\nCalled from RUN_20MIN.sh\n\"\"\"\n\nfrom datetime import date, datetime, timedelta, timezone\nfrom io import StringIO\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport httpx\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.reference import TRACE_VALUE\nfrom pyiem.util import logger, utc\n\nLOG = logger()\n\n\ndef safeP(v):\n    \"\"\"hack\"\"\"\n    if type(v) is str:\n        if v == \"T\":\n            return TRACE_VALUE\n        if v == \"NA\":\n            return None\n    return float(v)\n\n\ndef main(conn, dt: date | None) -> None:\n    \"\"\"Go Main Go\"\"\"\n    stations = pd.read_sql(\n        sql_helper(\n            \"select iemid, id, tzname from stations where \"\n            \"network ~* '_COCORAHS'\"\n        ),\n        conn,\n        index_col=\"id\",\n    )\n    LOG.info(\"Found %s station defined\", len(stations.index))\n\n    if dt is not None:\n        # Export for a given date\n        url = (\n            \"http://data.cocorahs.org/export/exportreports.aspx\"\n            f\"?ReportType=Daily&dtf=1&Format=CSV&\"\n            f\"ReportDateType=date&Date={dt:%m/%d/%Y}&TimesInGMT=True\"\n        )\n    else:\n        # realtime, request the past six(?) hours\n        since = utc() - timedelta(hours=2)\n        url = (\n            \"https://data.cocorahs.org/export/exportreports.aspx\"\n            \"?ReportType=Daily&dtf=1&Format=CSV&ReportDateType=timestamp\"\n            f\"&Date={since:%-m/%d/%Y%%20%I:%m%%20%p}&\"\n            \"TimesInGMT=True\"\n        )\n    with StringIO() as sio:\n        try:\n            resp = httpx.get(url, timeout=30)\n            resp.raise_for_status()\n            sio.write(resp.text.replace(\", \", \",\"))\n        except Exception as exp:\n            LOG.exception(exp)\n            return\n        sio.seek(0)\n        obs = pd.read_csv(sio).set_index(\"StationNumber\")\n    LOG.info(\"Found %s obs to process\", len(obs.index))\n    for sid, row in obs.iterrows():\n        if sid not in stations.index:\n            continue\n        tzinfo = ZoneInfo(stations.at[sid, \"tzname\"])\n        valid = datetime.strptime(\n            f\"{row['ObservationDate']} {row['ObservationTime']}\",\n            \"%Y-%m-%d %I:%M %p\",\n        ).replace(tzinfo=timezone.utc)\n        local_valid = valid.astimezone(tzinfo)\n        if local_valid.year < 2000:\n            LOG.info(\"Skipping %s %s as <2000\", sid, local_valid)\n            continue\n        updated = datetime.strptime(\n            row[\"DateTimeStamp\"], \"%Y-%m-%d %I:%M %p\"\n        ).replace(tzinfo=timezone.utc)\n        pday = safeP(row[\"TotalPrecipAmt\"])\n        snow = safeP(row[\"NewSnowDepth\"])\n        snow_swe = safeP(row[\"NewSnowSWE\"])\n        snowd = safeP(row[\"TotalSnowDepth\"])\n        snowd_swe = safeP(row[\"TotalSnowSWE\"])\n        iemid = stations.at[sid, \"iemid\"]\n        table = f\"cocorahs_{local_valid:%Y}\"\n        params = {\n            \"iemid\": iemid,\n            \"d\": local_valid.date(),\n            \"valid\": valid,\n            \"pday\": pday,\n            \"snow\": snow,\n            \"snow_swe\": snow_swe,\n            \"snowd\": snowd,\n            \"snowd_swe\": snowd_swe,\n            \"updated\": updated,\n        }\n        res = conn.execute(\n            sql_helper(\n                \"select iemid from {table} where iemid = :iemid and day = :d\",\n                table=table,\n            ),\n            params,\n        )\n        if res.rowcount == 0:\n            conn.execute(\n                sql_helper(\n                    \"INSERT into {table}(iemid, day) VALUES (:iemid, :d)\",\n                    table=table,\n                ),\n                params,\n            )\n        conn.execute(\n            sql_helper(\n                \"\"\"\n            UPDATE {table} SET obvalid = :valid,\n            precip = :pday, snow = :snow, snow_swe = :snow_swe,\n            snowd = :snowd, snowd_swe = :snowd_swe, updated = :updated\n            WHERE iemid = :iemid and day = :d\n        \"\"\",\n                table=table,\n            ),\n            params,\n        )\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime())\ndef frontend(dt: datetime | None):\n    \"\"\"Do Logic.\"\"\"\n    if dt is not None:\n        dt = dt.date()\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        main(conn, dt)\n        conn.commit()\n\n\nif __name__ == \"__main__\":\n    frontend()\n"
  },
  {
    "path": "scripts/ingestors/cocorahs/cocorahs_stations.py",
    "content": "\"\"\"Sync CoCoRaHS station details.\n\nRun from RUN_40_AFTER.sh\n\"\"\"\n\nfrom datetime import datetime\nfrom io import StringIO\n\nimport click\nimport httpx\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import convert_value, logger\n\nLOG = logger()\n\n\n@click.command()\n@click.option(\"--newerthan\", type=click.DateTime(), required=True)\ndef main(newerthan: datetime):\n    \"\"\"Go Main Go\"\"\"\n    with get_sqlalchemy_conn(\"mesosite\") as conn:\n        current = pd.read_sql(\n            sql_helper(\"\"\"\n    select id, name, st_x(geom) as lon, st_y(geom) as lat, elevation, iemid\n    from stations where network ~* '_COCORAHS' order by id\n            \"\"\"),\n            conn,\n            index_col=\"id\",\n        )\n    LOG.info(\"Found %s current COCORAHS stations\", len(current.index))\n    pgconn = get_dbconn(\"mesosite\")\n    mcursor = pgconn.cursor()\n\n    url = (\n        \"http://data.cocorahs.org/cocorahs/export/exportstations.aspx?\"\n        \"Format=CSV\"\n    )\n    with StringIO() as sio:\n        try:\n            resp = httpx.get(url, timeout=30)\n            resp.raise_for_status()\n            sio.write(resp.text.replace(\", \", \",\"))  # remove space after comma\n        except Exception as exp:\n            LOG.exception(exp)\n            return\n        sio.seek(0)\n        upstream = pd.read_csv(sio).set_index(\"StationNumber\")\n    upstream[\"updated\"] = pd.to_datetime(\n        upstream[\"DateTimeStamp\"], format=\"%Y-%m-%d %I:%M %p\"\n    )\n    upstream = upstream[upstream[\"updated\"] > newerthan]\n    LOG.info(\"Found %s upstream COCORAHS stations\", len(upstream.index))\n    # We only want CoCoRaHS types\n    upstream = upstream[upstream[\"StationType\"] == \"CoCoRaHS\"]\n    upstream[\"Latitude\"] = pd.to_numeric(upstream[\"Latitude\"], errors=\"coerce\")\n    upstream[\"Longitude\"] = pd.to_numeric(\n        upstream[\"Longitude\"], errors=\"coerce\"\n    )\n\n    for sid, row in upstream.iterrows():\n        if (\n            row[\"Latitude\"] == 0\n            or row[\"Longitude\"] == 0\n            or row[\"Elevation\"] < -900\n            or pd.isna(row[\"StationName\"])\n        ):\n            continue\n        network = f\"{row['State']}_COCORAHS\"\n        # Don't support this particular network\n        if network == \"MP_COCORAHS\":\n            LOG.info(\"Skipping %s due to being MP\", sid)\n            continue\n        sname = row[\"StationName\"].strip().replace(\"'\", \" \")\n        elevation = convert_value(row[\"Elevation\"], \"foot\", \"meter\")\n        dirty = False\n        if sid not in current.index:\n            state = None if sid[2] != \"-\" else sid[:2]\n            country = {\n                \"BHS\": \"BH\",\n                \"CAN\": \"CA\",\n            }.get(sid.split(\"-\")[0], \"US\")\n            mcursor.execute(\n                \"\"\"\n                insert into stations(id, network, online, metasite, state,\n                country) values\n                (%s, %s, 't', 't', %s, %s) returning iemid\n                \"\"\",\n                (sid, network, state, country),\n            )\n            iemid = mcursor.fetchone()[0]\n            dirty = True\n        else:\n            iemid = current.at[sid, \"iemid\"]\n            if abs(current.at[sid, \"elevation\"] - elevation) > 3:\n                dirty = True\n            if abs(current.at[sid, \"lat\"] - row[\"Latitude\"]) > 0.01:\n                dirty = True\n            if abs(current.at[sid, \"lon\"] - row[\"Longitude\"]) > 0.01:\n                dirty = True\n            if current.at[sid, \"name\"] != sname:\n                LOG.info(\n                    \"Station %s name changed from `%s` to `%s`\",\n                    sid,\n                    current.at[sid, \"name\"],\n                    sname,\n                )\n                dirty = True\n        if not dirty:\n            continue\n        LOG.info(\"Updating %s\", row)\n        mcursor.execute(\n            \"UPDATE stations SET geom = ST_Point(%s, %s, 4326), wfo = null, \"\n            \"elevation = %s, ugc_county = null, ugc_zone = null, \"\n            \"ncdc81 = null, climate_site = null, ncei91 = null, name = %s, \"\n            \"plot_name = %s WHERE iemid = %s\",\n            (\n                row[\"Longitude\"],\n                row[\"Latitude\"],\n                elevation,\n                sname,\n                sname,\n                iemid,\n            ),\n        )\n        break\n\n    mcursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/dot_plows.py",
    "content": "\"\"\"Consume a REST service of DOT Snowplow locations and data.\"\"\"\n\nimport json\nfrom datetime import datetime, timedelta, timezone\n\nimport httpx\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import exponential_backoff, logger, utc\n\nLOG = logger()\n\nURI = (\n    \"https://services.arcgis.com/8lRhdTsQyJpO52F1/ArcGIS/rest/services/\"\n    \"AVL_Direct_View/FeatureServer/0/query?where=1%3D1&objectIds=&time=&\"\n    \"geometry=&geometryType=esriGeometryEnvelope&inSR=&\"\n    \"spatialRel=esriSpatialRelIntersects&resultType=none&distance=0.0&\"\n    \"units=esriSRUnit_Meter&returnGeodetic=false&outFields=*&\"\n    \"returnGeometry=true&multipatchOption=xyFootprint&maxAllowableOffset=\"\n    \"&geometryPrecision=&outSR=&datumTransformation=&\"\n    \"applyVCSProjection=false&returnIdsOnly=false&returnUniqueIdsOnly=false&\"\n    \"returnCountOnly=false&returnExtentOnly=false&returnDistinctValues=false&\"\n    \"orderByFields=&groupByFieldsForStatistics=&outStatistics=&having=&\"\n    \"resultOffset=&resultRecordCount=&returnZ=false&returnM=false&\"\n    \"returnExceededLimitFeatures=true&quantizationParameters=&\"\n    \"sqlFormat=none&f=pjson&token=\"\n)\nCEILING = utc() + timedelta(hours=3)\n\n\ndef workflow():\n    \"\"\"Do stuff\"\"\"\n    postgis = get_dbconn(\"postgis\")\n    cursor = postgis.cursor()\n\n    current = {}\n    cursor.execute(\"SELECT label, valid from idot_snowplow_current\")\n    for row in cursor:\n        current[row[0]] = row[1]\n\n    req = exponential_backoff(httpx.get, URI, timeout=30)\n    if req is None:\n        return\n    if req.status_code != 200:\n        LOG.info(\n            \"dot_plows got non-200 status_code: %s\\nContent: %s\",\n            req.status_code,\n            req.content,\n        )\n        return\n    data = json.loads(req.content)\n    for feat in data.get(\"features\", []):\n        logdt = feat[\"attributes\"][\"MODIFIEDDT\"]\n        label = feat[\"attributes\"][\"LABEL\"]\n        if logdt is None:\n            continue\n        # Unsure why I do it this way, but alas\n        ts = datetime.fromtimestamp(logdt / 1000.0, tz=timezone.utc)\n        valid = utc(ts.year, ts.month, ts.day, ts.hour, ts.minute, ts.second)\n        if valid > CEILING:\n            continue\n        if len(label) > 20:\n            LOG.info(\"Invalid dot_plow feed label of %s\", repr(label))\n            continue\n\n        if current.get(label) is None:\n            # allows subsequent data insert to work\n            current[label] = valid - timedelta(minutes=1)\n            cursor.execute(\n                \"INSERT into idot_snowplow_current (label, valid) \"\n                \"VALUES (%s, %s)\",\n                (label, valid),\n            )\n        LOG.debug(\n            \"logdt: %s label: %s, valid: %s current: %s\",\n            logdt,\n            label,\n            valid,\n            current[label],\n        )\n        if current[label] >= valid:\n            LOG.debug(\"    label: %s skipped as old\", label)\n            continue\n        cursor.execute(\n            \"\"\"\n            UPDATE idot_snowplow_current\n            SET\n            valid = %s,\n            heading = %s,\n            velocity = %s,\n            roadtemp = %s,\n            airtemp = %s,\n            solidmaterial = %s,\n            liquidmaterial = %s,\n            prewetmaterial = %s,\n            solidsetrate = %s,\n            liquidsetrate = %s,\n            prewetsetrate = %s,\n            leftwingplowstate = %s,\n            rightwingplowstate = %s,\n            frontplowstate = %s,\n            underbellyplowstate = %s,\n            solid_spread_code = %s,\n            road_temp_code = %s,\n            geom = ST_Point(%s, %s, 4326)\n            WHERE label = %s\n        \"\"\",\n            (\n                valid,\n                feat[\"attributes\"][\"HEADING\"],\n                feat[\"attributes\"][\"VELOCITY\"],\n                feat[\"attributes\"][\"ROADTEMP\"],\n                feat[\"attributes\"][\"AIRTEMP\"],\n                feat[\"attributes\"][\"SOLIDMATERIAL\"],\n                feat[\"attributes\"][\"LIQUIDMATERIAL\"],\n                feat[\"attributes\"][\"PREWETMATERIAL\"],\n                feat[\"attributes\"][\"SOLIDSETRATE\"],\n                feat[\"attributes\"][\"LIQUIDSETRATE\"],\n                feat[\"attributes\"][\"PREWETSETRATE\"],\n                feat[\"attributes\"][\"LEFTWINGPLOWSTATE\"],\n                feat[\"attributes\"][\"RIGHTWINGPLOWSTATE\"],\n                feat[\"attributes\"][\"FRONTPLOWSTATE\"],\n                feat[\"attributes\"][\"UNDERBELLYPLOWSTATE\"],\n                None,  # SOIL_SPREAD_CODE\n                None,  # ROAD_TEMP_CODE,\n                feat[\"attributes\"][\"XPOSITION\"],\n                feat[\"attributes\"][\"YPOSITION\"],\n                label,\n            ),\n        )\n        # Archive it too\n        cursor.execute(\n            f\"\"\"\n            INSERT into idot_snowplow_{valid.year}\n            (label, valid, heading, velocity, roadtemp, airtemp, solidmaterial,\n            liquidmaterial, prewetmaterial, solidsetrate, liquidsetrate,\n            prewetsetrate, leftwingplowstate, rightwingplowstate,\n            frontplowstate , underbellyplowstate, solid_spread_code,\n            road_temp_code, geom)\n             values\n            (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s\n            , %s, ST_POINT(%s, %s, 4326))\n        \"\"\",\n            (\n                label,\n                valid,\n                feat[\"attributes\"][\"HEADING\"],\n                feat[\"attributes\"][\"VELOCITY\"],\n                feat[\"attributes\"][\"ROADTEMP\"],\n                feat[\"attributes\"][\"AIRTEMP\"],\n                feat[\"attributes\"][\"SOLIDMATERIAL\"],\n                feat[\"attributes\"][\"LIQUIDMATERIAL\"],\n                feat[\"attributes\"][\"PREWETMATERIAL\"],\n                feat[\"attributes\"][\"SOLIDSETRATE\"],\n                feat[\"attributes\"][\"LIQUIDSETRATE\"],\n                feat[\"attributes\"][\"PREWETSETRATE\"],\n                feat[\"attributes\"][\"LEFTWINGPLOWSTATE\"],\n                feat[\"attributes\"][\"RIGHTWINGPLOWSTATE\"],\n                feat[\"attributes\"][\"FRONTPLOWSTATE\"],\n                feat[\"attributes\"][\"UNDERBELLYPLOWSTATE\"],\n                None,\n                None,\n                feat[\"attributes\"][\"XPOSITION\"],\n                feat[\"attributes\"][\"YPOSITION\"],\n            ),\n        )\n\n    postgis.commit()\n    postgis.close()\n\n\nif __name__ == \"__main__\":\n    workflow()\n"
  },
  {
    "path": "scripts/ingestors/dot_truckcams.py",
    "content": "\"\"\"\nIowa DOT Truck dash camera imagery.  Save this to the IEM archives\n\n/YYYY/mm/dd/camera/idot_trucks/keyhash/keyhash_timestamp.jpg\n\"\"\"\n\nimport json\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timedelta, timezone\n\nimport pyproj\nimport requests\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import exponential_backoff, logger\n\nLOG = logger()\nP3857 = pyproj.Proj(\"EPSG:3857\")\nURI = (\n    \"https://services.arcgis.com/8lRhdTsQyJpO52F1/ArcGIS/rest/services/\"\n    \"AVL_Images_Past_1HR_View/FeatureServer/0/query?\"\n    \"where=SECURE_PHOTO_URL+IS+NOT+NULL&resultRecordCount=1000&\"\n    \"geometryType=esriGeometryEnvelope&\"\n    \"spatialRel=esriSpatialRelIntersects&resultType=none&distance=0.0&\"\n    \"units=esriSRUnit_Meter&returnGeodetic=false&outFields=*&\"\n    \"returnGeometry=true&multipatchOption=xyFootprint&\"\n    \"applyVCSProjection=false&returnIdsOnly=false&returnUniqueIdsOnly=false&\"\n    \"returnCountOnly=false&returnExtentOnly=false&returnDistinctValues=false&\"\n    \"orderByFields=PHOTO_FILEDATE\"\n    \"&returnZ=false&returnM=false&\"\n    \"returnExceededLimitFeatures=true&quantizationParameters=&\"\n    \"sqlFormat=none&f=json\"\n)\n\n\ndef get_current_fn(label):\n    \"\"\"Return how this is stored for current data\"\"\"\n    return f\"camera/idot_trucks/{label}.jpg\"\n\n\ndef get_archive_fn(label, utc):\n    \"\"\"Return how this is stored for current data\"\"\"\n    return f\"camera/idot_trucks/{label}/{label}_{utc:%Y%m%d%H%M}.jpg\"\n\n\ndef fetch_features(offset):\n    \"\"\"Fetch Features with the defined offset.\"\"\"\n    LOG.debug(\"fetch_features for offset: %s\", offset)\n    url = URI + f\"&resultOffset={offset}\"\n    req = exponential_backoff(requests.get, url, timeout=30)\n    if req is None or req.status_code != 200:\n        return False, []\n    data = req.json()\n    if \"features\" not in data:\n        LOG.info(\n            \"Got status_code: %s, invalid result of: %s\",\n            req.status_code,\n            json.dumps(data, sort_keys=True, indent=4, separators=(\",\", \": \")),\n        )\n        return False, []\n    hasmore = data.get(\"exceededTransferLimit\", False)\n    return hasmore, data[\"features\"]\n\n\ndef workflow():\n    \"\"\"Our workflow.\"\"\"\n    offset = 0\n    while offset < 20000:\n        hasmore, features = fetch_features(offset)\n        process_features(features)\n        offset += 1000\n        if not hasmore:\n            offset = 1e6\n\n\ndef process_features(features):\n    \"\"\"Do stuff\"\"\"\n    pgconn = get_dbconn(\"postgis\")\n    cursor = pgconn.cursor()\n\n    cursor.execute(\"SELECT label, valid from idot_dashcam_current\")\n    current = {}\n    for row in cursor:\n        current[row[0]] = row[1]\n\n    for feat in features:\n        # Major hack until upstream fixes the attributes\n        url = feat[\"attributes\"][\"SECURE_PHOTO_URL\"].replace(\"http:\", \"https:\")\n        # A32049-2025-04-01_13_48_49.jpg\n        label, tstamp = url.split(\"/\")[-1].removesuffix(\".jpg\").split(\"-\", 1)\n        valid = datetime.strptime(tstamp, \"%Y-%m-%d_%H_%M_%S\").replace(\n            tzinfo=timezone.utc\n        )\n        if label not in current:\n            current[label] = valid - timedelta(minutes=1)\n            LOG.warning(\"Label %s is new\", label)\n        if valid <= current[label]:\n            LOG.debug(\"valid: %s current: %s\", valid, current[label])\n            continue\n        current[label] = valid\n        LOG.info(\n            \"label: %s current: %s new: %s\",\n            label,\n            current[label],\n            valid,\n        )\n        req = exponential_backoff(requests.get, url, timeout=15)\n        if req is None or req.status_code != 200:\n            LOG.info(\n                \"dot_truckcams.py dl fail |%s| %s\",\n                \"req is None\" if req is None else req.status_code,\n                url,\n            )\n            continue\n        with tempfile.NamedTemporaryFile(delete=False) as tmp:\n            tmp.write(req.content)\n        cmd = [\n            \"pqinsert\",\n            \"-p\",\n            f\"plot ac {valid:%Y%m%d%H%M} {get_current_fn(label)} \"\n            f\"{get_archive_fn(label, valid)} jpg\",\n            tmp.name,\n        ]\n        with subprocess.Popen(cmd, stderr=subprocess.PIPE) as proc:\n            proc.stderr.read()\n        os.unlink(tmp.name)\n\n        pt = P3857(feat[\"geometry\"][\"x\"], feat[\"geometry\"][\"y\"], inverse=True)\n        # This table has an insert trigger that logs the entry as well\n        cursor.execute(\n            \"INSERT into idot_dashcam_current(label, valid, \"\n            \"geom) VALUES (%s, %s, ST_Point(%s, %s, 4326))\",\n            (label, valid, pt[0], pt[1]),\n        )\n\n    cursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\nif __name__ == \"__main__\":\n    workflow()\n"
  },
  {
    "path": "scripts/ingestors/dotcams/ingest_dot_webcams.py",
    "content": "\"\"\"Ingest DOT RWIS Webcams.\n\nRUN from RUN_10MIN.sh\n\"\"\"\n\nimport json\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timedelta, timezone\n\nimport requests\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import exponential_backoff, logger, utc\n\nLOG = logger()\nURI = (\n    \"https://services.arcgis.com/8lRhdTsQyJpO52F1/ArcGIS/rest/services/\"\n    \"RWIS_Camera_Info_View/FeatureServer/0/query?where=1%3D1&outFields=*&\"\n    \"f=json\"\n)\nCLOUD404 = \"/mesonet/tmp/dotcloud404.txt\"\n# prevent things from the future.\nCEILING = utc() + timedelta(minutes=30)\n\n\ndef fetch_image(url: str) -> requests.Response | None:\n    \"\"\"Fetch a webcam image with light retry logic for transport failures.\"\"\"\n    last_exp = None\n    for attempt, timeout in enumerate((30, 60), start=1):\n        try:\n            return requests.get(url, timeout=timeout)\n        except requests.RequestException as exp:\n            last_exp = exp\n            LOG.info(\n                \"image fetch attempt %s failed for %s: %s\",\n                attempt,\n                url,\n                exp,\n            )\n    LOG.info(\"Giving up fetching %s after retry: %s\", url, last_exp)\n    return None\n\n\ndef add_entry(cursor, cam, props):\n    \"\"\"Add a database entry for this camera.\"\"\"\n    cursor.execute(\n        \"INSERT into webcams (id, name, pan0, online, network, sts, removed, \"\n        \"state, geom, fullres) VALUES (%s, %s, 0, 't', 'IDOT', now(), 'f', \"\n        \"'IA', (select geom from stations where network = 'IA_RWIS' and \"\n        \"remote_id = %s LIMIT 1), '640x480')\",\n        (cam, props[\"IMAGE_NAME\"], int(props[\"RPUID\"])),\n    )\n\n\ndef process_feature(cursor, domain, feat: dict):\n    \"\"\"Do what we need to do with this feature.\"\"\"\n    props = feat[\"attributes\"]\n    if props[\"RPUID\"] is None or props[\"CAMERA_POSITION\"] is None:\n        LOG.info(\"feature has no RPUID, skipping\")\n        return\n    rpuid = int(props[\"RPUID\"])\n    # Previous ingest used SCANWEB_POSITIONID, which was one less than CP\n    scene = int(props[\"CAMERA_POSITION\"])\n    # Imagery is stored as IDOT-<RPUID:03i>-<SCENE-02i>.jpg\n    cam = f\"IDOT-{rpuid:03.0f}-{scene:02.0f}\"\n    if cam not in domain:\n        LOG.warning(\"cam %s not in domain, adding entry\", cam)\n        add_entry(cursor, cam, props)\n        domain.append(cam)\n    # Loop over 10 possible images found with this feature\n    for i in range(1, 11):\n        suffix = f\"_{i}\" if i > 1 else \"\"\n        key = f\"IMAGE_DATE{suffix}\"\n        timestamp = props.get(key)\n        if timestamp is None:\n            continue\n        valid = datetime(1970, 1, 1) + timedelta(seconds=timestamp / 1000.0)\n        # We drop the seconds information as we can't really deal with it yet\n        valid = valid.replace(second=0, tzinfo=timezone.utc)\n        if valid > CEILING:\n            LOG.info(\"%s is in the future %s, skipping\", cam, valid)\n            continue\n        LOG.info(\"%s %s %s\", cam, valid, props[f\"IMAGE_URL{suffix}\"])\n        # Do we have this image?\n        cursor.execute(\n            \"SELECT drct from camera_log where valid = %s and cam = %s\",\n            (valid, cam),\n        )\n        if cursor.rowcount > 0:\n            continue\n        url = props[f\"IMAGE_URL{suffix}\"]\n        if url is None or url.find(\"Not_Available\") > -1:\n            LOG.debug(\"skipping %s %s %s\", cam, valid, url)\n            continue\n        resp = fetch_image(url)\n        if resp is None:\n            continue\n        if resp.status_code == 404:\n            LOG.debug(\"cloud 404 %s\", url)\n            with open(CLOUD404, \"a\", encoding=\"utf8\") as fh:\n                fh.write(f\"{url}\\n\")\n                continue\n        if resp.status_code != 200:\n            LOG.info(\"Fetching %s result in status %s\", url, resp.status_code)\n            continue\n        with tempfile.NamedTemporaryFile(mode=\"wb\", delete=False) as tmpfd:\n            tmpfd.write(resp.content)\n        # Get current entry\n        cursor.execute(\n            \"SELECT valid from camera_current where cam = %s\", (cam,)\n        )\n        if cursor.rowcount == 0:\n            LOG.warning(\"Creating camera_current entry for %s\", cam)\n            cursor.execute(\n                \"INSERT into camera_current(cam, valid, drct) \"\n                \"VALUES (%s, %s, %s)\",\n                (cam, valid - timedelta(minutes=1), 0),\n            )\n            cursor.execute(\n                \"SELECT valid from camera_current where cam = %s\", (cam,)\n            )\n        lastvalid = cursor.fetchone()[0]\n        routes = \"a\"\n        if valid > lastvalid:\n            routes = \"ac\"\n        cmd = [\n            \"pqinsert\",\n            \"-p\",\n            f\"webcam {routes} {valid:%Y%m%d%H%M} camera/stills/{cam}.jpg \"\n            f\"camera/{cam}/{cam}_{valid:%Y%m%d%H%M}.jpg jpg\",\n            tmpfd.name,\n        ]\n        with subprocess.Popen(\n            cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE\n        ) as proc:\n            stdout, stderr = proc.communicate()\n            if stderr != b\"\" or stdout != b\"\":\n                LOG.info(\n                    \"%s stdout: %s stderr: %s\", \" \".join(cmd), stdout, stderr\n                )\n                continue\n        os.unlink(tmpfd.name)\n        # Create log entry\n        cursor.execute(\n            \"INSERT into camera_log(cam, valid, drct) VALUES (%s, %s, %s)\",\n            (cam, valid, 0),\n        )\n        if valid > lastvalid:\n            cursor.execute(\n                \"UPDATE camera_current SET valid = %s where cam = %s\",\n                (valid, cam),\n            )\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    pgconn = get_dbconn(\"mesosite\")\n    # Create a dictionary of current webcams\n    cursor = pgconn.cursor()\n    cursor.execute(\"select id from webcams where network = 'IDOT'\")\n    domain = [row[0] for row in cursor]\n    cursor.close()\n\n    # Fetch the REST service\n    resp = exponential_backoff(requests.get, URI, timeout=30)\n    if resp is None:\n        LOG.info(\"Failed to fetch REST service, aborting.\")\n        return\n    jobj = resp.json()\n    if \"features\" not in jobj:\n        LOG.info(\n            \"Got status_code: %s, invalid result of: %s\",\n            resp.status_code,\n            json.dumps(jobj, sort_keys=True, indent=4, separators=(\",\", \": \")),\n        )\n        return\n    LOG.info(\"len(features): %s\", len(jobj[\"features\"]))\n    for feat in jobj[\"features\"]:\n        mcursor = pgconn.cursor()\n        try:\n            process_feature(mcursor, domain, feat)\n        except Exception as exp:\n            LOG.exception(exp)\n            LOG.warning(feat)\n        mcursor.close()\n        pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/dotcams/sync_roadcam_meta.py",
    "content": "\"\"\"Sync the INTRANS metadata CSV.\"\"\"\n\nfrom datetime import datetime\n\nimport pandas as pd\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.util import logger\nfrom sqlalchemy.engine import Connection\n\nLOG = logger()\nSRC = \"https://reactor-img.intrans.iastate.edu/images/camera_mapping.csv\"\n\n\ndef process_date(text: str) -> pd.Timestamp | None:\n    \"\"\"Process an inconsistent string.\"\"\"\n    if text == \"\" or pd.isna(text):\n        return None\n    tokens = text.replace(\"-\", \"/\").split(\"/\")\n    fmt = \"%m/%d/%Y\" if len(tokens[2]) == 4 else \"%Y/%m/%d\"\n    return pd.Timestamp(datetime.strptime(text, fmt))\n\n\ndef process_group(\n    gdf: pd.DataFrame,\n    currentdf: pd.DataFrame,\n    conn: Connection,\n):\n    \"\"\"Do what we need to do.\"\"\"\n    for __, row in gdf.iterrows():\n        date_added = process_date(row[\"DateAdded\"])\n        date_removed = process_date(row[\"DateRemoved\"])\n        currentrow = currentdf[currentdf[\"archive_begin\"] == date_added]\n        if currentrow.empty:\n            LOG.warning(\"Adding %s\", row.to_dict())\n            conn.execute(\n                sql_helper(\"\"\"\n    insert into dot_roadway_cams (device_id, name, archive_begin, archive_end,\n    geom) values (:uid, :name, :date_added, :date_removed,\n    ST_Point(:lon, :lat, 4326))\n                           \"\"\"),\n                {\n                    \"uid\": row[\"Id\"],\n                    \"name\": row[\"Name\"],\n                    \"date_added\": date_added,\n                    \"date_removed\": date_removed,\n                    \"lon\": row[\"Longitude\"] / 10e7,\n                    \"lat\": row[\"Latitude\"] / 10e7,\n                },\n            )\n            conn.commit()\n            return\n\n\n@with_sqlalchemy_conn(\"mesosite\")\ndef main(conn: Connection | None = None) -> None:\n    \"\"\"Go Main Go.\"\"\"\n    current = pd.read_sql(\n        sql_helper(\"\"\"\n            select *, st_x(geom) as lon, st_y(geom) as lat from\n            dot_roadway_cams order by cam_id asc\n                    \"\"\"),\n        conn,\n        index_col=\"cam_id\",\n    )\n    LOG.info(\"Fetched %s current records\", len(current.index))\n    upstream = pd.read_csv(SRC, dtype={\"DateAdded\": str, \"DateRemoved\": str})\n    if len(upstream.index) < 1000:\n        LOG.warning(\"Abort, found %s upstream records\", len(upstream.index))\n        return\n    LOG.info(\"Fetched %s upstream records\", len(upstream.index))\n    for (uid, name), gdf in upstream.groupby([\"Id\", \"Name\"]):\n        currentdf = current[\n            (current[\"device_id\"] == uid) & (current[\"name\"] == name)\n        ]\n        process_group(gdf, currentdf, conn)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/elnino.py",
    "content": "\"\"\"Ingest the El Nino\"\"\"\n\nfrom datetime import date\n\nimport httpx\nimport pandas as pd\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    mesosite, mcursor = get_dbconnc(\"coop\")\n\n    # Get max date\n    with get_sqlalchemy_conn(\"coop\") as engine:\n        current = pd.read_sql(\n            \"SELECT monthdate, anom_34, soi_3m from elnino\",\n            engine,\n            index_col=\"monthdate\",\n        )\n\n    url = \"https://www.cpc.ncep.noaa.gov/data/indices/sstoi.indices\"\n    data = httpx.get(url, timeout=30).content.decode(\"ascii\").split(\"\\n\")\n\n    for line in data[1:]:\n        tokens = line.split()\n        if len(tokens) < 3:\n            continue\n        anom34 = float(tokens[-1])\n        dt = date(int(tokens[0]), int(tokens[1]), 1)\n        if dt in current.index:\n            if current.loc[dt][\"anom_34\"] != anom34:\n                print(\n                    f\"anom_34 update {dt.year}-{dt.month}-01: \"\n                    f\"{current.loc[dt]['anom_34']} -> {anom34}\"\n                )\n                mcursor.execute(\n                    \"UPDATE elnino SET anom_34 = %s WHERE monthdate = %s\",\n                    (anom34, dt),\n                )\n            continue\n        print(f\"Found ElNino3.4! {dt} {anom34}\")\n        # Add entry to current dataframe\n        current.at[dt, \"anom_34\"] = anom34\n        current.at[dt, \"soi_3m\"] = None\n        mcursor.execute(\n            \"INSERT into elnino(monthdate, anom_34) values (%s, %s)\",\n            (dt, anom34),\n        )\n\n    url = \"https://www.cpc.ncep.noaa.gov/data/indices/soi.3m.txt\"\n    data = httpx.get(url, timeout=30).content.decode(\"ascii\").split(\"\\n\")\n\n    for line in data[1:]:\n        if len(line) < 3:\n            continue\n        year = int(line[:4])\n        pos = 4\n        for month in range(1, 13):\n            soi = float(line[pos : pos + 6])\n            pos += 6\n            dt = date(year, month, 1)\n            if soi < -999:\n                continue\n            if dt in current.index:\n                if current.loc[dt][\"soi_3m\"] != soi:\n                    print(\n                        f\"soi_3m update {dt.year}-{dt.month}-01: \"\n                        f\"{current.loc[dt]['soi_3m']} -> {soi}\"\n                    )\n                    mcursor.execute(\n                        \"UPDATE elnino SET soi_3m = %s WHERE monthdate = %s\",\n                        (soi, dt),\n                    )\n                continue\n            mcursor.execute(\n                \"INSERT into elnino(monthdate, soi_3m) values (%s, %s)\",\n                (dt, soi),\n            )\n\n    mesosite.commit()\n    mesosite.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/flux_ingest.py",
    "content": "\"\"\"\nIngest files provided by NLAE containing flux information\n\"\"\"\n\nimport os\nfrom datetime import date, datetime\nfrom io import StringIO\nfrom zoneinfo import ZoneInfo\n\nimport pandas as pd\nfrom pyiem.database import get_dbconnc\nfrom pyiem.observation import Observation\nfrom pyiem.util import c2f, convert_value, logger, utc\n\nLOG = logger()\nBASEDIR = \"/mesonet/home/mesonet/ot/ot0005/incoming/Fluxdata\"\nFILENAMES = {\n    \"NSTL10\": [\"Flux10_AF_15.dat\", \"Anc10_AF_15.dat\"],\n    \"NSTL11\": [\"Flux11_AF_15.dat\", \"Anc11_AF_15.dat\"],\n    \"NSTL30FT\": [\"30ft_15.dat\"],\n    \"NSTLNSPR\": [\"NSP_Flux_15.dat\"],\n}\n\nDBCOLS = [\n    \"station\",\n    \"valid\",\n    \"fc_wpl\",\n    \"le_wpl\",\n    \"hs\",\n    \"tau\",\n    \"u_star\",\n    \"cov_uz_uz\",\n    \"cov_uz_ux\",\n    \"cov_uz_uy\",\n    \"cov_uz_co2\",\n    \"cov_uz_h2o\",\n    \"cov_uz_ts\",\n    \"cov_ux_ux\",\n    \"cov_ux_uy\",\n    \"cov_ux_co2\",\n    \"cov_ux_h2o\",\n    \"cov_ux_ts\",\n    \"cov_uy_uy\",\n    \"cov_uy_co2\",\n    \"cov_uy_h2o\",\n    \"cov_uy_ts\",\n    \"cov_co2_co2\",\n    \"cov_h2o_h2o\",\n    \"cov_ts_ts\",\n    \"ux_avg\",\n    \"uy_avg\",\n    \"uz_avg\",\n    \"co2_avg\",\n    \"h2o_avg\",\n    \"ts_avg\",\n    \"rho_a_avg\",\n    \"press_avg\",\n    \"panel_temp_avg\",\n    \"wnd_dir_compass\",\n    \"wnd_dir_csat3\",\n    \"wnd_spd\",\n    \"rslt_wnd_spd\",\n    \"batt_volt_avg\",\n    \"std_wnd_dir\",\n    \"fc_irga\",\n    \"le_irga\",\n    \"co2_wpl_le\",\n    \"co2_wpl_h\",\n    \"h2o_wpl_le\",\n    \"h2o_wpl_h\",\n    \"h2o_hmp_avg\",\n    \"t_hmp_avg\",\n    \"par_avg\",\n    \"solrad_avg\",\n    \"rain_tot\",\n    \"shf1_avg\",\n    \"shf2_avg\",\n    \"soiltc1_avg\",\n    \"soiltc2_avg\",\n    \"soiltc3_avg\",\n    \"soiltc4_avg\",\n    \"irt_can_avg\",\n    \"irt_cb_avg\",\n    \"incoming_sw\",\n    \"outgoing_sw\",\n    \"incoming_lw_tcor\",\n    \"terrest_lw_tcor\",\n    \"rn_short_avg\",\n    \"rn_long_avg\",\n    \"rn_total_avg\",\n    \"rh_hmp_avg\",\n    \"temps_c1_avg\",\n    \"corrtemp_avg\",\n    \"rn_total_tcor_avg\",\n    \"incoming_lw_avg\",\n    \"terrestrial_lw_avg\",\n    \"wfv1_avg\",\n    \"n_tot\",\n    \"csat_warnings\",\n    \"irga_warnings\",\n    \"del_t_f_tot\",\n    \"track_f_tot\",\n    \"amp_h_f_tot\",\n    \"amp_l_f_tot\",\n    \"chopper_f_tot\",\n    \"detector_f_tot\",\n    \"pll_f_tot\",\n    \"sync_f_tot\",\n    \"agc_avg\",\n    \"solarrad_mv_avg\",\n    \"solarrad_w_avg\",\n    \"par_mv_avg\",\n    \"par_den_avg\",\n    \"surftc_avg\",\n    \"temp_c1_avg\",\n    \"temp_k1_avg\",\n    \"irr_can_corr_avg\",\n    \"irr_body_avg\",\n    \"vwc\",\n    \"ec\",\n    \"t\",\n    \"p\",\n    \"pa\",\n    \"vr\",\n    \"lithium_bv_avg\",\n    \"solarrad_mj_tot\",\n    \"par_tot_tot\",\n]\nDROPCOLS = [\"lithium_bv_avg\", \"utcyear\", \"fw_avg\", \"site\"]\nCONVERT = {\n    \"timestamp\": \"valid\",\n    \"incoming_sw_avg\": \"incoming_sw\",\n    \"outgoing_sw_avg\": \"outgoing_sw\",\n    \"incoming_lw_tcor_avg\": \"incoming_lw_tcor\",\n    \"terrest_lw_tcor_avg\": \"terrest_lw_tcor\",\n}\n\n\ndef c(v):\n    \"\"\"convert\"\"\"\n    if v in [\"NAN\", \"-INF\", \"INF\"]:\n        return None\n    return v\n\n\ndef make_time(string) -> datetime:\n    \"\"\"Convert a time in the file to a datetime\"\"\"\n    return datetime.strptime(string, \"%Y-%m-%d %H:%M:%S\").replace(\n        tzinfo=ZoneInfo(\"Etc/GMT+6\")\n    )\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    pgconn, ocursor = get_dbconnc(\"other\")\n    ipgconn, icursor = get_dbconnc(\"iem\")\n\n    # Figure out max valid times\n    maxts = {}\n    ocursor.execute(\n        \"SELECT station, max(valid) from flux_data GROUP by station\"\n    )\n    for row in ocursor:\n        maxts[row[\"station\"]] = row[\"max\"]\n\n    processed = 0\n    for station, fns in FILENAMES.items():\n        if station not in maxts:\n            LOG.info(\"%s has no prior db archive\", station)\n            maxts[station] = utc(1980, 1, 1)\n        dfs = []\n        for fn in fns:\n            myfn = os.path.join(BASEDIR, str(date.today().year), fn)\n            if not os.path.isfile(myfn):\n                LOG.info(\"missing file: %s\", myfn)\n                continue\n            with open(myfn, encoding=\"ISO-8859-1\") as fh:\n                df = pd.read_csv(\n                    fh,\n                    skiprows=[0, 2, 3],\n                    index_col=0,\n                    na_values=[\"NAN\"],\n                )\n            df = df.drop(columns=\"RECORD\")\n            if df.empty:\n                LOG.info(\"file: %s has no data\", fn)\n                continue\n            dfs.append(df)\n        if not dfs:\n            LOG.info(\"no data for: %s\", station)\n            continue\n        df = dfs[0]\n        if len(dfs) > 1:\n            df = df.join(dfs[1]).copy()\n        # get index back into a column\n        df = df.reset_index()\n        # lowercase all column names\n        df.columns = [x.lower() for x in df.columns]\n        df[\"timestamp\"] = df[\"timestamp\"].apply(make_time)\n        df = df[df[\"timestamp\"] > maxts[station]].copy()\n        if df.empty:\n            continue\n        df = df.rename(columns=CONVERT)\n        # We need a UTC year to allow for the database insert below to work\n        df[\"utcyear\"] = df[\"valid\"].dt.tz_convert(ZoneInfo(\"UTC\")).dt.year\n        df[\"station\"] = station\n        for year, gdf in df.groupby(\"utcyear\"):\n            exclude = []\n            for colname in gdf.columns:\n                if colname not in DBCOLS:\n                    exclude.append(colname)\n                    if colname not in DROPCOLS:\n                        LOG.info(\"%s has more cols: %s\", station, exclude)\n            gdf2 = gdf[gdf.columns.difference(exclude)]\n            processed += len(gdf2.index)\n            output = StringIO()\n            gdf2.to_csv(output, sep=\"\\t\", header=False, index=False)\n\n            cursor = pgconn.cursor()\n            output.seek(0)\n            sql = (\n                f\"copy flux{year}({','.join(gdf2.columns)}) from stdin \"\n                \"with null as ''\"\n            )\n            with cursor.copy(sql) as copy:\n                copy.write(output.read())\n            cursor.close()\n            pgconn.commit()\n        for _i, row in df.iterrows():\n            iemob = Observation(\n                station, \"NSTLFLUX\", row[\"valid\"].to_pydatetime()\n            )\n            if \"t_hmp_avg\" in df.columns:\n                iemob.data[\"tmpf\"] = c2f(row[\"t_hmp_avg\"])\n            if \"wnd_spd\" in df.columns:\n                iemob.data[\"sknt\"] = convert_value(\n                    row[\"wnd_spd\"], \"meter / second\", \"knot\"\n                )\n            if \"press_avg\" in df.columns:\n                iemob.data[\"pres\"] = convert_value(\n                    row[\"press_avg\"] * 1000.0, \"pascal\", \"millibar\"\n                )\n            for cvar, ivar in zip(\n                [\"solarrad_w_avg\", \"rh_hmp_avg\", \"wnd_dir_compass\"],\n                [\"srad\", \"rh\", \"drct\"],\n                strict=False,\n            ):\n                if cvar in df.columns:\n                    iemob.data[ivar] = row[cvar]\n            iemob.save(icursor)\n        LOG.debug(\"Processed %s rows for %s\", processed, station)\n    icursor.close()\n    ipgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/ifc/ingest_ifc_precip.py",
    "content": "\"\"\"\n  Process the IFC precip data!  Here's the file header\n# file name: H99999999_I0007_G_15MAR2013_154000.out\n# Rainrate map [mm/hr]\n# number of columns: 1741\n# number of rows: 1057\n# grid: LATLON\n# upper-left LATLONcorner(x,y): 6924 5409\n# xllcorner [lon]: -97.154167\n# yllcorner [lat]: 40.133331\n# cellsize [dec deg]: 0.004167\n# no data value: -99.0\n\nhttps://s-iihr77.iihr.uiowa.edu/feeds/IFC7ADV/latest.dat\nhttps://s-iihr77.iihr.uiowa.edu/feeds/IFC7ADV/H99999999_I0007_G_15MAR2013_154500.out\n\"\"\"\n\nimport subprocess\nimport tempfile\nfrom datetime import timedelta\n\nimport httpx\nimport numpy as np\nfrom PIL import Image, PngImagePlugin\nfrom pyiem.mrms import make_colorramp\nfrom pyiem.util import archive_fetch, logger, utc\n\nLOG = logger()\nBASEURL = \"https://s-iihr77.iihr.uiowa.edu/Products/IFC7ADV\"\n\n\ndef get_file(tmpdir, now, routes):\n    \"\"\"Download the file, save to /tmp and return fn\"\"\"\n    data = None\n    for i in [7, 6, 5, 4]:\n        if data is not None:\n            break\n        fn = now.strftime(f\"H99999999_I000{i}_G_%d%b%Y_%H%M00\").upper()\n        uri = f\"{BASEURL}/{fn}.out\"\n        try:\n            resp = httpx.get(uri, timeout=10)\n            # A common case that I don't need verbosity about\n            if i == 7 and resp.status_code == 404:\n                LOG.info(\"Got 404 for %s\", uri)\n                continue\n            resp.raise_for_status()\n        except Exception as exp:\n            # Cut back on emails\n            loglvl = LOG.warning if utc().minute < 6 else LOG.info\n            loglvl(\"uri %s failed with exception %s\", uri, exp)\n            continue\n        data = resp.text\n\n    if data is None:\n        # only generate an annoy-o-gram if we are in archive mode\n        if routes == \"a\":\n            LOG.info(\"missing data for %s\", now)\n        return None\n    fn = f\"{tmpdir}/{fn}.out\"\n    with open(fn, \"w\", encoding=\"ascii\") as fh:\n        fh.write(data)\n    return fn\n\n\ndef to_raster(tmpfn, now):\n    \"\"\"Convert the raw data into a RASTER Image\n    5 inch rain per hour is ~ 125 mm/hr, so over 5min that is 10 mm\n    Index 255 is missing\n    0 is zero\n    1 is 0.1 mm\n    254 is 25.4 mm\n    \"\"\"\n    data = np.loadtxt(tmpfn, skiprows=10)\n    # mm/hr to mm/5min\n    imgdata = data * 10.0 / 12.0\n    imgdata = np.where(imgdata < 0, 255, imgdata)\n    png = Image.fromarray(np.uint8(imgdata))\n    png.putpalette(make_colorramp())\n    meta = PngImagePlugin.PngInfo()\n    meta.add_text(\"title\", now.strftime(\"%Y%m%d%H%M\"), 0)\n    png.save(f\"{tmpfn}.png\", pnginfo=meta)\n    png.close()\n    # Make worldfile\n    with open(f\"{tmpfn}.wld\", \"w\") as fh:  # skipcq\n        fh.write(\"0.004167\\n0.00\\n0.00\\n-0.004167\\n-97.154167\\n44.53785\")\n\n\ndef ldm(tmpfn, now, routes):\n    \"\"\"Send stuff to ldm\"\"\"\n    for suffix in [\"png\", \"wld\"]:\n        cmd = [\n            \"pqinsert\",\n            \"-i\",\n            \"-p\",\n            f\"plot {routes} {now:%Y%m%d%H%M} \"\n            f\"gis/images/4326/ifc/p05m.{suffix} \"\n            f\"GIS/ifc/p05m_{now:%Y%m%d%H%M}.{suffix} {suffix}\",\n            f\"{tmpfn}.{suffix}\",\n        ]\n        LOG.info(\" \".join(cmd))\n        subprocess.call(cmd)\n\n\ndef do_time(tmpdir, now, routes=\"ac\"):\n    \"\"\"workflow\"\"\"\n    tmpfn = get_file(tmpdir, now, routes)\n    if tmpfn is None:\n        LOG.info(\"tmpfn is None, returning\")\n        return\n\n    to_raster(tmpfn, now)\n\n    ldm(tmpfn, now, routes)\n\n\ndef main():\n    \"\"\"main method\"\"\"\n    now = utc().replace(second=0, microsecond=0)\n    # Round back to the nearest 5 minute, plus 10\n    delta = now.minute % 5 + 15\n    now = now - timedelta(minutes=delta)\n\n    with tempfile.TemporaryDirectory() as tmpdir:\n        do_time(tmpdir, now)\n    # Do we need to rerun a previous hour\n    now = now - timedelta(minutes=60)\n    fn = now.strftime(\"%Y/%m/%d/GIS/ifc/p05m_%Y%m%d%H%M.png\")\n    with archive_fetch(fn) as fp:\n        if fp is not None:\n            return\n    with tempfile.TemporaryDirectory() as tmpdir:\n        do_time(tmpdir, now, routes=\"a\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/isusm/ingest_isusm.py",
    "content": "\"\"\"ISUSM ingest.\"\"\"\n\nimport os\nimport subprocess\nimport traceback\nfrom datetime import datetime, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport inotify.adapters\nimport numpy as np\nimport pandas as pd\nfrom metpy.calc import dewpoint_from_relative_humidity\nfrom metpy.units import units\nfrom pyiem.database import get_dbconnc\nfrom pyiem.observation import Observation\nfrom pyiem.util import c2f, convert_value, logger, mm2inch\n\nLOG = logger()\nDIRPATH = \"/var/opt/CampbellSci/LoggerNet\"\nSTOREPATH = \"/mesonet/data/isusm\"\nTSOIL_COLS = [\n    \"t4_c_avg\",\n    \"t6_c_avg\",\n    \"t12_c_avg\",\n    \"t24_c_avg\",\n    \"t50_c_avg\",\n]\nTABLES = {\n    \"MinSI\": \"sm_minute\",\n    \"Min5SI\": \"sm_minute\",\n    \"HrlySI\": \"sm_hourly\",\n    \"DailySI\": \"sm_daily\",\n}\nVARCONV = {\n    \"tsoil_c_avg\": \"t4_c_avg\",\n    \"timestamp\": \"valid\",\n    \"vwc12_avg\": \"vwc_12_avg\",\n    \"vwc_avg12in\": \"vwc_12_avg\",\n    \"vwc24_avg\": \"vwc_24_avg\",\n    \"vwc_avg24in\": \"vwc_24_avg\",\n    \"vwc_avg30in\": \"calcvwc30_avg\",\n    \"vwc_avg40in\": \"calcvwc40_avg\",\n    \"vwc50_avg\": \"vwc_50_avg\",\n    \"calcvwc12_avg\": \"vwc12\",\n    \"calcvwc24_avg\": \"vwc24\",\n    \"calcvwc50_avg\": \"vwc50\",\n    \"outofrange12\": \"p12outofrange\",\n    \"outofrange24\": \"p24outofrange\",\n    \"outofrange50\": \"p50outofrange\",\n    \"ws_ms_s_wvt\": \"ws_mps_s_wvt\",\n    \"ec12in\": \"ec12\",\n    \"ec_2in\": \"sv_ec2\",\n    \"ec_4in\": \"sv_ec4\",\n    \"ec_8in\": \"sv_ec8\",\n    \"ec_12in\": \"sv_ec12\",\n    \"ec_14in\": \"sv_ec14\",\n    \"ec_16in\": \"sv_ec16\",\n    \"ec_20in\": \"sv_ec20\",\n    \"ec_24in\": \"sv_ec24\",\n    \"ec_28in\": \"sv_ec28\",\n    \"ec_30in\": \"sv_ec30\",\n    \"ec_32in\": \"sv_ec32\",\n    \"ec_36in\": \"sv_ec36\",\n    \"ec_40in\": \"sv_ec40\",\n    \"ec_42in\": \"sv_ec42\",\n    \"ec_52in\": \"sv_ec52\",\n    \"vwc_2in\": \"sv_vwc2\",\n    \"vwc_4in\": \"sv_vwc4\",\n    \"vwc_8in\": \"sv_vwc8\",\n    \"vwc_12in\": \"sv_vwc12\",\n    \"vwc_14in\": \"sv_vwc14\",\n    \"vwc_16in\": \"sv_vwc16\",\n    \"vwc_20in\": \"sv_vwc20\",\n    \"vwc_24in\": \"sv_vwc24\",\n    \"vwc_28in\": \"sv_vwc28\",\n    \"vwc_30in\": \"sv_vwc30\",\n    \"vwc_32in\": \"sv_vwc32\",\n    \"vwc_36in\": \"sv_vwc36\",\n    \"vwc_40in\": \"sv_vwc40\",\n    \"vwc_42in\": \"sv_vwc42\",\n    \"vwc_52in\": \"sv_vwc52\",\n    \"temp_2in\": \"sv_t2\",\n    \"temp_4in\": \"sv_t4\",\n    \"temp_8in\": \"sv_t8\",\n    \"temp_12in\": \"sv_t12\",\n    \"temp_14in\": \"sv_t14\",\n    \"temp_16in\": \"sv_t16\",\n    \"temp_20in\": \"sv_t20\",\n    \"temp_24in\": \"sv_t24\",\n    \"temp_28in\": \"sv_t28\",\n    \"temp_30in\": \"sv_t30\",\n    \"temp_32in\": \"sv_t32\",\n    \"temp_36in\": \"sv_t36\",\n    \"temp_40in\": \"sv_t40\",\n    \"temp_42in\": \"sv_t42\",\n    \"temp_52in\": \"sv_t52\",\n    \"ec24in\": \"ec24\",\n    \"rh\": \"rh_avg\",\n    \"temp_avg12in\": \"t12_c_avg\",\n    \"temp_avg24in\": \"t24_c_avg\",\n    \"temp_avg30in\": \"t30_c_avg\",\n    \"temp_avg40in\": \"t40_c_avg\",\n    \"bp_mmhg_avg\": \"bpres_avg\",\n    \"bp_mb\": \"bpres_avg\",\n    \"battv\": \"battv_min\",\n    \"encrh\": \"encrh_avg\",\n    \"ws_mph_s_wvt\": \"ws_mph\",\n}\nSTATIONS = {\n    \"Sutherland\": \"CAMI4\",\n    \"Calumet\": \"CAMI4\",  # legacy, renamed on 21 March 2022\n    \"AEAFarm\": \"BOOI4\",\n    \"Wellman\": \"WMNI4\",\n    \"Sibley\": \"SBEI4\",\n    \"Nashua\": \"NASI4\",\n    \"Lewis\": \"OKLI4\",\n    \"WestPoint\": \"WTPI4\",\n    \"Doon\": \"DONI4\",\n    \"Kanawha\": \"KNAI4\",\n    \"Greenfield\": \"GREI4\",\n    \"Newell\": \"NWLI4\",\n    \"Ames\": \"AEEI4\",\n    \"Castana\": \"CNAI4\",\n    \"Chariton\": \"CHAI4\",\n    \"Crawfordsville\": \"CRFI4\",\n    \"Muscatine\": \"FRUI4\",\n    \"CedarRapids\": \"CIRI4\",\n    \"Marcus\": \"MCSI4\",\n    \"AmesFinch\": \"AMFI4\",\n    \"AmesHinds\": \"AHDI4\",\n    \"AmesKitchen\": \"AKCI4\",\n    # Vineyward\n    \"AmesHort\": \"AHTI4\",\n    \"TasselRidge\": \"OSTI4\",\n    \"Bankston\": \"BNKI4\",\n    \"Inwood\": \"CSII4\",\n    \"Jefferson\": \"DOCI4\",\n    \"Glenwood\": \"GVNI4\",\n    \"Masonville\": \"TPOI4\",\n}\nINVERSION = {\n    \"AEAInversion\": \"BOOI4\",\n    \"SutherlandInversion\": \"CAMI4\",\n    \"CalumetInversion\": \"CAMI4\",  # legacy, renamed on 21 March 2022\n    \"CrawfordsvilleInversion\": \"CRFI4\",\n}\n\n\ndef make_time(string):\n    \"\"\"Convert a CST timestamp in the file to a datetime\"\"\"\n    return datetime.strptime(string, \"%Y-%m-%d %H:%M:%S\").replace(\n        tzinfo=ZoneInfo(\"Etc/GMT+6\")\n    )\n\n\ndef ensure_float(df: pd.DataFrame, colname: str):\n    \"\"\"Ensure that the column can be compared with a float.\"\"\"\n    if isinstance(df[colname].dtype, (object, np.int64)):\n        df[colname] = pd.to_numeric(\n            df[colname], errors=\"coerce\", downcast=\"float\"\n        )\n\n\ndef qcval(df: pd.DataFrame, colname: str, floor: float, ceiling: float):\n    \"\"\"Make sure the value falls within some bounds\"\"\"\n    ensure_float(df, colname)\n    df.loc[df[colname] < floor, colname] = floor\n    df.loc[df[colname] > ceiling, colname] = ceiling\n    return np.where(\n        np.logical_or(df[colname] == floor, df[colname] == ceiling),\n        \"B\",\n        None,\n    )  # type: ignore\n\n\ndef qcval2(df: pd.DataFrame, colname: str, floor: float, ceiling: float):\n    \"\"\"Make sure the value falls within some bounds, Null if not\"\"\"\n    ensure_float(df, colname)\n    df.loc[df[colname] < floor, colname] = np.nan\n    df.loc[df[colname] > ceiling, colname] = np.nan\n    return np.where(pd.isnull(df[colname]), \"B\", None)  # type: ignore\n\n\ndef do_inversion(filename, nwsli):\n    \"\"\"Process Inversion Station Data.\"\"\"\n    df = pd.read_csv(\n        filename,\n        skiprows=[0, 2, 3],\n        na_values=[\"NAN\", \"INF\"],\n        encoding=\"ISO-8859-1\",\n    )\n    # convert all columns to lowercase\n    df.columns = map(str.lower, df.columns)\n    df[\"valid\"] = df[\"timestamp\"].apply(make_time)\n    pgconn, cursor = get_dbconnc(\"isuag\")\n    cursor.execute(\n        \"SELECT max(valid) from sm_inversion where station = %s\",\n        (nwsli,),\n    )\n    maxts = cursor.fetchone()[\"max\"]\n    if maxts is not None:\n        df = df[df[\"valid\"] > maxts]\n    for _, row in df.iterrows():\n        cursor.execute(\n            \"INSERT into sm_inversion(station, valid, tair_15_c_avg, \"\n            \"tair_15_c_avg_qc, tair_5_c_avg, tair_5_c_avg_qc, \"\n            \"tair_10_c_avg, tair_10_c_avg_qc, ws_ms_avg, ws_ms_avg_qc, \"\n            \"ws_ms_max, ws_ms_max_qc, duration) VALUES (%s, %s, %s, %s, \"\n            \"%s, %s, %s, %s, %s, %s, %s, %s, 1)\",\n            (\n                nwsli,\n                row[\"valid\"],\n                row[\"t15_avg\"],\n                row[\"t15_avg\"],\n                row[\"t5_avg\"],\n                row[\"t5_avg\"],\n                row[\"t10_avg\"],\n                row[\"t10_avg\"],\n                row[\"ws_ms_avg\"],\n                row[\"ws_ms_avg\"],\n                row[\"ws_ms_max\"],\n                row[\"ws_ms_max\"],\n            ),\n        )\n    cursor.close()\n    pgconn.commit()\n\n\ndef minute_iemaccess(df):\n    \"\"\"Process dataframe into iemaccess.\"\"\"\n    pgconn, cursor = get_dbconnc(\"iem\")\n    for _i, row in df.iterrows():\n        # Update IEMAccess, pandas.Timestamp causes grief\n        ob = Observation(row[\"station\"], \"ISUSM\", row[\"valid\"].to_pydatetime())\n        tmpc = units(\"degC\") * row[\"tair_c_avg_qc\"]\n        tmpf = tmpc.to(units(\"degF\")).m\n        if -50 < tmpf < 140:\n            ob.data[\"tmpf\"] = tmpf\n            relh = units(\"percent\") * row[\"rh_avg_qc\"]\n            ob.data[\"relh\"] = relh.m\n            ob.data[\"dwpf\"] = (\n                dewpoint_from_relative_humidity(tmpc, relh).to(units(\"degF\")).m\n            )\n        # database srad is W/ms2\n        ob.data[\"srad\"] = row[\"slrkj_tot_qc\"] / 60.0 * 1000.0\n        ob.data[\"pcounter\"] = row[\"rain_in_tot_qc\"]\n        ob.data[\"sknt\"] = convert_value(\n            row[\"ws_mph_qc\"], \"mile / hour\", \"knot\"\n        )\n        if \"ws_mph_max\" in df.columns:\n            ob.data[\"gust\"] = convert_value(\n                row[\"ws_mph_max_qc\"], \"mile / hour\", \"knot\"\n            )\n        ob.data[\"drct\"] = row[\"winddir_d1_wvt_qc\"]\n        for j, col in enumerate([\"4\", \"12\", \"24\"]):\n            if f\"t{col}_c_avg\" in df.columns:\n                ob.data[f\"c{j + 1}tmpf\"] = c2f(row[f\"t{col}_c_avg_qc\"])\n        if \"t50_c_avg\" in df.columns:\n            ob.data[\"c4tmpf\"] = c2f(row[\"t50_c_avg_qc\"])\n        if \"vwc12\" in df.columns:\n            ob.data[\"c2smv\"] = row[\"vwc12_qc\"] * 100.0\n        if \"vwc24\" in df.columns:\n            ob.data[\"c3smv\"] = row[\"vwc24_qc\"] * 100.0\n        if \"vwc50\" in df.columns:\n            ob.data[\"c4smv\"] = row[\"vwc50_qc\"] * 100.0\n        ob.save(cursor)\n    cursor.close()\n    pgconn.commit()\n\n\ndef process(fullfn: str):\n    \"\"\"Attempt to do something with the file we found.\"\"\"\n    tokens = os.path.basename(fullfn).split(\"_\", 2)\n    tabletype = tokens[1]\n    if tokens[0].find(\"Inversion\") > 0:\n        station = INVERSION[tokens[0]]\n        if tabletype == \"MinSI\":\n            do_inversion(fullfn, station)\n        return\n    station = STATIONS[tokens[0]]\n    tablename = TABLES[tabletype]\n    df = pd.read_csv(\n        fullfn,\n        skiprows=[0, 2, 3],\n        na_values=[\"NAN\", \"-100\", \"INF\"],\n        encoding=\"ISO-8859-1\",\n    )\n    if df.empty:\n        return\n    # convert all columns to lowercase\n    df.columns = map(str.lower, df.columns)\n    # rename columns to rectify differences\n    if tabletype != \"MinSI\":  # TODO, yikes\n        df = df.rename(columns=VARCONV)\n    else:\n        df = df.rename(\n            columns={\n                \"timestamp\": \"valid\",\n                \"tsoil_c_avg\": \"t4_c_avg\",\n                \"calcvwc12_avg\": \"vwc12\",\n                \"calcvwc24_avg\": \"vwc24\",\n                \"calcvwc50_avg\": \"vwc50\",\n                \"ws_mph_s_wvt\": \"ws_mph\",\n            }\n        )\n    df[\"valid\"] = df[\"valid\"].apply(make_time)\n    for col in [\"rain_mm_tot\", \"rain_mm_2_tot\"]:\n        if col in df.columns:\n            df[col.replace(\"_mm_\", \"_in_\")] = mm2inch(df[col])\n    df = df.drop(\n        [\n            \"rain_mm_tot\",\n            \"rain_mm_2_tot\",\n            \"winddir_sd1_wvt\",\n        ],\n        axis=1,\n        errors=\"ignore\",\n    )\n    if \"ws_mps_s_wvt\" in df.columns:\n        df = df.assign(\n            ws_mph=lambda df_: df_[\"ws_mps_s_wvt\"] * 2.23694,\n        ).drop(\n            columns=[\"ws_mps_s_wvt\"],\n        )\n\n    if tabletype == \"DailySI\":\n        # This is kludgy, during CDT, timestamp is 1 AM, CST, midnight\n        df[\"valid\"] = df[\"valid\"].dt.date - timedelta(days=1)\n        df[\"slrkj_tot\"] = df[\"slrw_avg\"] * 86400.0 / 1000.0\n        # Remove un-needed data\n        df = df.drop(\n            [\"slrw_avg\", \"solarradcalc\", \"nancounttot\", \"slrmj_tot\"],\n            axis=1,\n            errors=\"ignore\",\n        )\n    elif tabletype == \"HrlySI\":\n        df[\"slrkj_tot\"] = df[\"slrw_avg\"] * 3600.0 / 1000.0\n        df = df.drop(\n            [\n                \"slrw_avg\",\n                \"solarradcalc\",\n                \"p12outofrange\",\n                \"p24outofrange\",\n                \"p50outofrange\",\n            ],\n            axis=1,\n            errors=\"ignore\",\n        )\n    elif tabletype == \"MinSI\":\n        # Rework solar rad\n        df[\"slrkj_tot\"] = df[\"slrw_avg\"] * 60.0 / 1000.0\n        df = df.drop([\"slrw_avg\", \"solarradcalc\"], axis=1, errors=\"ignore\")\n\n    df = df.drop(\"record\", axis=1)\n    # Create _qc and _f columns\n    for colname in df.columns:\n        if colname == \"valid\":\n            continue\n        df[f\"{colname}_qc\"] = df[colname]\n        if colname.startswith(\"vwc\"):\n            df[f\"{colname}_f\"] = qcval(df, f\"{colname}_qc\", 0.01, 0.7)\n        elif colname in TSOIL_COLS:\n            df[f\"{colname}_f\"] = qcval2(df, f\"{colname}_qc\", -20.0, 37.0)\n        else:\n            df[f\"{colname}_f\"] = None\n\n    df[\"station\"] = station\n    if \"ws_mph_tmx\" in df.columns:\n        df[\"ws_mph_tmx\"] = df[\"ws_mph_tmx\"].apply(make_time)\n\n    # Begin database work.\n    pgconn, icursor = get_dbconnc(\"isuag\")\n    if tabletype == \"MinSI\":\n        tablename = \"sm_minute\"\n    # Convert any nan values to None for purposes of database work\n    df2 = df.replace({np.nan: None})\n    # Delete away any old data\n    for _, row in df2.iterrows():\n        icursor.execute(\n            f\"SELECT 1 from {tablename} WHERE station = %s and valid = %s\",\n            (row[\"station\"], row[\"valid\"]),\n        )\n        if icursor.rowcount == 0:\n            icursor.execute(\n                f\"INSERT into {tablename} (station, valid) VALUES (%s, %s)\",\n                (row[\"station\"], row[\"valid\"]),\n            )\n        opts = []\n        params = []\n        for col in df.columns:\n            opts.append(f\"{col} = %s\")\n            params.append(row[col])\n\n        params.extend([row[\"station\"], row[\"valid\"]])\n        # Do the update\n        icursor.execute(\n            f\"UPDATE {tablename} SET {','.join(opts)} WHERE \"\n            \"station = %s and valid = %s\",\n            params,\n        )\n        if icursor.rowcount != 1:\n            LOG.info(\n                \"station %s valid: %s table: %s did non-1 rows\",\n                row[\"station\"],\n                row[\"valid\"],\n                tablename,\n            )\n    icursor.close()\n    pgconn.commit()\n    if tabletype == \"MinSI\":\n        minute_iemaccess(df)\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    inotif = inotify.adapters.Inotify()\n    inotif.add_watch(DIRPATH)\n    for event in inotif.event_gen():\n        if event is None:\n            continue\n        (_header, type_names, watch_path, fn) = event\n        if \"IN_CLOSE_WRITE\" not in type_names:\n            continue\n        if not fn.endswith(\".dat\"):\n            continue\n        fullfn = os.path.join(watch_path, fn)\n        try:\n            process(fullfn)\n        except Exception as exp:\n            LOG.error(\"filename: %s errored: %s\", fn, exp)\n            errorfn = os.path.join(STOREPATH, f\"{fn}.error\")\n            with open(errorfn, \"w\", encoding=\"utf8\") as fp:\n                fp.write(f\"{exp}\\n\")\n                traceback.print_exc(file=fp)\n            # Copy the file to an error location\n            errordir = os.path.join(STOREPATH, \"error.d\")\n            if not os.path.isdir(errordir):\n                os.makedirs(errordir)\n            subprocess.call([\"cp\", fullfn, errordir])\n        finally:\n            storefn = os.path.join(STOREPATH, fn)\n            # check that we not over-write data\n            if os.path.isfile(storefn):\n                _i = 0\n                while _i < 100 and os.path.isfile(storefn):\n                    LOG.info(\"Destination %s file exists\", storefn)\n                    storefn = os.path.join(STOREPATH, f\"{fn}.{_i}\")\n                    _i += 1\n            subprocess.call([\"mv\", fullfn, storefn])\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/isusm/run_ingest_isusm.sh",
    "content": "# Run in a loop, please\nwhile true; do\n    python ingest_isusm.py\n    echo 'ISUSM Ingest Restarted' | mailx -s 'ISUSM Ingest Restarted' akrherz@iastate.edu\n    sleep 60\ndone\n"
  },
  {
    "path": "scripts/ingestors/madis/extract_hfmetar.py",
    "content": "\"\"\"Pull in what's available for HFMETAR MADIS data\n\nRun from RUN_20_AFTER.sh for current hour\nRun from RUN_40_AFTER.sh for current hour and 2 hours ago\nRun from RUN_59_AFTER.sh for current hour\n\"\"\"\n\nimport os\nimport sys\nimport warnings\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport numpy as np\nfrom metar import Metar\nfrom metpy.units import masked_array, units\nfrom netCDF4 import chartostring\nfrom psycopg import DataError\nfrom pyiem.database import get_dbconnc\nfrom pyiem.observation import Observation\nfrom pyiem.reference import TRACE_VALUE\nfrom pyiem.util import convert_value, logger, mm2inch, ncopen, utc\nfrom tqdm import tqdm\n\nwarnings.filterwarnings(\"ignore\", category=DeprecationWarning)\nwarnings.simplefilter(\"ignore\", RuntimeWarning)\nLOG = logger()\n\n\ndef vsbyfmt(val):\n    \"\"\"Tricky formatting of vis\"\"\"\n    # NB: we aren't dealing with exact round numbers here akrherz/iem#255\n    if val == 0:\n        return 0\n    if val <= 0.07:\n        return \"1/16\"\n    if val <= 0.13:\n        return \"1/8\"\n    if val <= 0.26:\n        return \"1/4\"\n    if val <= 0.38:\n        return \"3/8\"\n    if val <= 0.51:\n        return \"1/2\"\n    if val <= 1.1:\n        return \"1\"\n    if val <= 1.6:\n        return \"1 1/2\"\n    if val <= 2.1:\n        return \"2\"\n    if val <= 2.6:\n        return \"2 1/2\"\n    return int(val)\n\n\ndef process_sky(data: dict, skycs: list[str], skyls: list):\n    \"\"\"Process the sky cover\"\"\"\n    mtr = \"\"\n    for i, (skyc, skyl) in enumerate(zip(skycs, skyls, strict=True), start=1):\n        if skyc == \"\":\n            continue\n        data[f\"skyc{i}\"] = skyc\n        if skyc != \"CLR\":\n            data[f\"skyl{i}\"] = int(np.round(skyl, 0))  # GH287\n            mtr += f\"{skyc}{(skyl / 100.0):03.0f} \"\n        else:\n            mtr += \"CLR \"\n    return mtr\n\n\ndef safe_convert(\n    data: dict, col: str, ncfn: str, stations: list[str]\n) -> list[str]:\n    \"\"\"Be careful.\"\"\"\n    res = []\n    try:\n        return chartostring(data[col][:])\n    except UnicodeDecodeError:\n        LOG.warning(\"Encountered bad unicode in %s, %s\", col, ncfn)\n        # Try one at a time\n        for i, station in enumerate(stations):\n            try:\n                res.append(str(chartostring(data[col][i])))\n            except UnicodeDecodeError:\n\n                def safe_decode(val):\n                    if np.ma.is_masked(val):\n                        return \"\"\n                    return val.decode(\"ascii\", errors=\"replace\")\n\n                LOG.warning(\n                    \"Bad recNum:%s @%s entry for %s %s\",\n                    i,\n                    datetime(1970, 1, 1)\n                    + timedelta(seconds=data[\"observationTime\"][i]),\n                    station,\n                    \"\".join(safe_decode(x) for x in data[col][i]),\n                )\n                res.append(\"\")\n    # Ensure no null bytes\n    return [a.replace(\"\\x00\", \"\") for a in res]\n\n\ndef process(ncfn):\n    \"\"\"Process this file\"\"\"\n    pgconn, icursor = get_dbconnc(\"iem\")\n    xref = {}\n    icursor.execute(\n        \"SELECT id, network from stations where \"\n        \"(network ~* 'ASOS' and country = 'US') or id in ('PGSN')\"\n    )\n    for row in icursor:\n        xref[row[\"id\"]] = row[\"network\"]\n    icursor.close()\n    nc = ncopen(ncfn)\n    data = {}\n    for vname in [\n        \"stationId\",\n        \"observationTime\",\n        \"temperature\",\n        \"dewpoint\",\n        \"altimeter\",  # Pa\n        \"windDir\",\n        \"windSpeed\",  # mps\n        \"windGust\",  # mps\n        \"visibility\",  # m\n        \"precipAccum\",\n        \"presWx\",\n        \"skyCvr\",\n        \"skyCovLayerBase\",\n        \"autoRemark\",\n        \"operatorRemark\",\n    ]:\n        data[vname] = nc.variables[vname][:]\n        for qc in [\"QCR\", \"QCD\"]:\n            vname2 = vname + qc\n            if vname2 in nc.variables:\n                data[vname2] = nc.variables[vname2][:]\n    for vname in [\"temperature\", \"dewpoint\"]:\n        data[vname + \"C\"] = convert_value(data[vname], \"degK\", \"degC\")\n        data[vname] = convert_value(data[vname], \"degK\", \"degF\")\n    for vname in [\"windSpeed\", \"windGust\"]:\n        data[vname] = (\n            masked_array(data[vname], units(\"meter / second\"))\n            .to(units(\"knots\"))\n            .magnitude\n        )\n\n    data[\"altimeter\"] = convert_value(data[\"altimeter\"], \"pascal\", \"inch_Hg\")\n    data[\"skyCovLayerBase\"] = convert_value(\n        data[\"skyCovLayerBase\"], \"meter\", \"foot\"\n    )\n    data[\"visibility\"] = convert_value(data[\"visibility\"], \"meter\", \"mile\")\n    data[\"precipAccum\"] = mm2inch(data[\"precipAccum\"])\n    # Assume that this is always OK, ha\n    stations = chartostring(data[\"stationId\"][:])\n    # MADIS folks have refused to fix the GIGO, so downstream folks can't punt\n    presentwxs = safe_convert(data, \"presWx\", ncfn, stations)\n    skycs = safe_convert(data, \"skyCvr\", ncfn, stations)\n    autoremarks = safe_convert(data, \"autoRemark\", ncfn, stations)\n    opremarks = safe_convert(data, \"operatorRemark\", ncfn, stations)\n\n    def decision(i, fieldname, tolerance):\n        \"\"\"Our decision if we are going to take a HFMETAR value or not\"\"\"\n        if data[fieldname][i] is np.ma.masked:\n            return None\n        # Found troubles with values of 255 not getting QCd\n        if (\n            fieldname in [\"windSpeed\", \"windGust\"]\n            and data[fieldname][i] >= 250\n        ):\n            return None\n        if data[f\"{fieldname}QCR\"][i] == 0:\n            return data[fieldname][i]\n        # Now we have work to do\n        departure = np.ma.max(np.ma.abs(data[f\"{fieldname}QCD\"][i, :]))\n        if departure <= tolerance:\n            return data[fieldname][i]\n        return None\n\n    pgconn, icursor = get_dbconnc(\"iem\")\n    updates = 0\n    for i, sid in tqdm(\n        enumerate(stations),\n        total=len(stations),\n        disable=(not sys.stdout.isatty()),\n    ):\n        if len(sid) < 3:\n            continue\n        sid3 = sid.removeprefix(\"K\")\n        ts = datetime(1970, 1, 1) + timedelta(\n            seconds=data[\"observationTime\"][i]\n        )\n        ts = ts.replace(tzinfo=timezone.utc)\n\n        mtr = f\"{sid} {ts:%d%H%M}Z AUTO \"\n        network = xref.get(sid3, \"ASOS\")\n        iem = Observation(sid3, network, ts)\n\n        #  06019G23KT\n        val = decision(i, \"windDir\", 15)\n        if val is not None:\n            iem.data[\"drct\"] = round(val, 0)\n            mtr += f\"{iem.data['drct']:03.0f}\"\n        else:\n            mtr += \"///\"\n\n        val = decision(i, \"windSpeed\", 10)\n        if val is not None:\n            iem.data[\"sknt\"] = round(val, 0)\n            mtr += f\"{iem.data['sknt']:02.0f}\"\n        else:\n            mtr += \"//\"\n\n        val = decision(i, \"windGust\", 10)\n        if val is not None and val > 0:\n            iem.data[\"gust\"] = round(val, 0)\n            mtr += f\"G{iem.data['gust']:02.0f}\"\n        mtr += \"KT \"\n\n        val = decision(i, \"visibility\", 4)\n        if val is not None:\n            iem.data[\"vsby\"] = float(val)\n            mtr += f\"{vsbyfmt(iem.data['vsby'])}SM \"\n\n        presentwx = presentwxs[i]\n        if presentwx != \"\":\n            # database storage is comma delimited\n            iem.data[\"wxcodes\"] = presentwx.replace(\"\\x00\", \"\").split(\" \")\n            mtr += f\"{presentwx} \"\n\n        mtr += process_sky(iem.data, skycs[i], data[\"skyCovLayerBase\"][i])\n\n        t = \"\"\n        tgroup = \"T\"\n        val = decision(i, \"temperature\", 10)\n        if val is not None:\n            # Recall the pain enabling this\n            tmpc = float(data[\"temperatureC\"][i])\n            tc = tmpc if tmpc > 0 else (0 - tmpc)\n            tf = \"M\" if tmpc < 0 else \"\"\n            t = f\"{tf}{tc:02.0f}/\"\n            tf = \"1\" if tmpc < 0 else \"0\"\n            tgroup += f\"{tf}{(tc * 10.0):03.0f}\"\n        val = decision(i, \"dewpoint\", 10)\n        if t != \"\" and val is not None:\n            tmpc = float(data[\"dewpointC\"][i])\n            tc = tmpc if tmpc > 0 else (0 - tmpc)\n            tf = \"M\" if tmpc < 0 else \"\"\n            t = f\"{t}{tf}{tc:02.0f} \"\n            tf = \"1\" if tmpc < 0 else \"0\"\n            tgroup += f\"{tf}{(tc * 10.0):03.0f}\"\n        if len(t) > 4:\n            mtr += t\n        val = decision(i, \"altimeter\", 20)\n        if val is not None:\n            iem.data[\"alti\"] = float(round(val, 2))\n            mtr += f\"A{(iem.data['alti'] * 100.0):.0f} \"\n\n        mtr += \"RMK \"\n        val = decision(i, \"precipAccum\", 25)\n        if val is not None:\n            if val > 0.009:\n                iem.data[\"phour\"] = float(round(val, 2))\n                mtr += f\"P{(iem.data['phour'] * 100.0):04.0f} \"\n            elif val > 0:\n                # Trace\n                mtr += \"P0000 \"\n                iem.data[\"phour\"] = TRACE_VALUE\n\n        if tgroup != \"T\":\n            mtr += f\"{tgroup} \"\n\n        if autoremarks[i] != \"\" or opremarks[i] != \"\":\n            mtr += f\"{autoremarks[i]} {opremarks[i]} \"\n        mtr += \"MADISHF\"\n        # Account for some common cruft\n        mtr = mtr.replace(\"!\", \"! \").replace(\"\\x00\", \"\")\n        # Eat our own dogfood\n        try:\n            metar = Metar.Metar(mtr)\n            iem.data[\"raw\"] = \" \".join(mtr.strip().split())\n            # Glean peak wind gust\n            if (\n                metar.wind_speed_peak\n                and metar.wind_dir_peak\n                and metar.peak_wind_time\n            ):\n                iem.data[\"peak_wind_gust\"] = metar.wind_speed_peak.value(\"KT\")\n                iem.data[\"peak_wind_drct\"] = metar.wind_dir_peak.value()\n                iem.data[\"peak_wind_time\"] = metar.peak_wind_time.replace(\n                    tzinfo=timezone.utc\n                )\n            if not iem.save(\n                icursor, force_current_log=True, skip_current=True\n            ):\n                LOG.warning(\n                    \"Unknown station? %s %s %s %s\",\n                    sid3,\n                    network,\n                    ts,\n                    mtr,\n                )\n            updates += 1\n        except DataError as exp:\n            LOG.warning(\n                \"DataError for %s %s %s\",\n                ncfn,\n                iem.data,\n                exp,\n            )\n        except Exception as exp:\n            LOG.exception(\"dogfooding %s resulted in error\", mtr, exc_info=exp)\n\n        if updates % 100 == 0:\n            icursor.close()\n            pgconn.commit()\n            icursor = pgconn.cursor()\n\n    icursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\ndef find_fn(hours: int) -> str | None:\n    \"\"\"Figure out which file to run for\"\"\"\n    utcnow = utc()\n    for i in range(hours, 5):\n        ts = utcnow - timedelta(hours=i)\n        for j in range(300, -1, -1):\n            fn = ts.strftime(f\"/mesonet/data/madis/hfmetar/%Y%m%d_%H00_{j}.nc\")\n            if os.path.isfile(fn):\n                return fn\n    LOG.warning(\"no MADIS HFMETAR file found!\")\n    return None\n\n\n@click.command()\n@click.option(\"--hours\", type=int, required=False)\n@click.option(\"--filename\", type=str, default=None)\ndef main(hours: int | None, filename: str | None) -> None:\n    \"\"\"Do Something\"\"\"\n    if filename is None:\n        filename = find_fn(hours)\n    if filename:\n        process(filename)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/madis/extract_madis.py",
    "content": "\"\"\"extract_madis.py Get the latest MADIS numbers from the data file!\"\"\"\n\nimport os\nfrom datetime import datetime, timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport numpy as np\nfrom netCDF4 import chartostring\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import convert_value, logger, ncopen\n\nLOG = logger()\n\n\ndef figure(val, qcval):\n    \"\"\"hack\"\"\"\n    if qcval > 1000:\n        return None\n    if np.ma.is_masked(val) or np.ma.is_masked(qcval):\n        return None\n    return convert_value(val + qcval, \"degK\", \"degF\") - convert_value(\n        val, \"degK\", \"degF\"\n    )\n\n\ndef figure_alti(qcval):\n    \"\"\"hack\"\"\"\n    if qcval > 100000.0:\n        return None\n    return float(qcval / 100.0)\n\n\ndef check(val):\n    \"\"\"hack\"\"\"\n    if val > 1000000.0:\n        return None\n    return float(val)\n\n\ndef main():\n    \"\"\"GO Main Go\"\"\"\n    pgconn = get_dbconn(\"iem\")\n    icursor = pgconn.cursor()\n\n    utcnow = datetime.now(timezone.utc)\n    fn = None\n    for i in range(10):\n        now = utcnow - timedelta(hours=i)\n        for j in range(300, -1, -1):\n            testfn = f\"/mesonet/data/madis/mesonet1/{now:%Y%m%d_%H}00_{j}.nc\"\n            if os.path.isfile(testfn):\n                fn = testfn\n                break\n        if fn is not None:\n            break\n\n    if fn is None:\n        LOG.warning(\"Found no files? last tried: %s\", testfn)\n        return\n\n    with ncopen(fn) as nc:\n        providers = chartostring(nc.variables[\"dataProvider\"][:])\n        stations = chartostring(nc.variables[\"stationId\"][:])\n        nc_tmpk = nc.variables[\"temperature\"][:]\n        nc_dwpk = nc.variables[\"dewpoint\"][:]\n        nc_alti = nc.variables[\"altimeter\"][:]\n        tmpkqcd = nc.variables[\"temperatureQCD\"][:]\n        dwpkqcd = nc.variables[\"dewpointQCD\"][:]\n        altiqcd = nc.variables[\"altimeterQCD\"][:]\n        times = nc.variables[\"observationTime\"][:]\n\n    for p in range(providers.shape[0]):\n        provider = providers[p]\n        if provider not in [\"IEM\", \"IADOT\"]:\n            continue\n        sid = stations[p]\n        ticks = int(times[p])\n        ts = datetime(1970, 1, 1) + timedelta(seconds=ticks)\n        ts = ts.replace(tzinfo=ZoneInfo(\"UTC\"))\n\n        (tmpf, tmpf_qc_av, tmpf_qc_sc) = (None, None, None)\n        (dwpf, dwpf_qc_av, dwpf_qc_sc) = (None, None, None)\n        (alti, alti_qc_av, alti_qc_sc) = (None, None, None)\n\n        if not np.ma.is_masked(nc_tmpk[p]):\n            tmpf = check(convert_value(nc_tmpk[p], \"degK\", \"degF\"))\n            tmpf_qc_av = figure(nc_tmpk[p], tmpkqcd[p, 0])\n            tmpf_qc_sc = figure(nc_tmpk[p], tmpkqcd[p, 6])\n        if not np.ma.is_masked(nc_dwpk[p]):\n            dwpf = check(convert_value(nc_dwpk[p], \"degK\", \"degF\"))\n            dwpf_qc_av = figure(nc_dwpk[p], dwpkqcd[p, 0])\n            dwpf_qc_sc = figure(nc_dwpk[p], dwpkqcd[p, 6])\n        if not np.ma.is_masked(nc_alti[p]):\n            alti = check((nc_alti[p] / 100.0) * 0.0295298)\n            alti_qc_av = figure_alti(altiqcd[p, 0] * 0.0295298)\n            alti_qc_sc = figure_alti(altiqcd[p, 6] * 0.0295298)\n        sql = \"\"\"\n            UPDATE current_qc c SET tmpf = %s, tmpf_qc_av = %s,\n            tmpf_qc_sc = %s, dwpf = %s, dwpf_qc_av = %s,\n            dwpf_qc_sc = %s, alti = %s, alti_qc_av = %s,\n            alti_qc_sc = %s, valid = %s FROM stations t\n            WHERE c.iemid = t.iemid and t.id = %s and\n            t.network in ('ISUSM', 'IA_RWIS')\n        \"\"\"\n        args = (\n            tmpf,\n            tmpf_qc_av,\n            tmpf_qc_sc,\n            dwpf,\n            dwpf_qc_av,\n            dwpf_qc_sc,\n            alti,\n            alti_qc_av,\n            alti_qc_sc,\n            ts,\n            sid,\n        )\n        icursor.execute(sql, args)\n        if icursor.rowcount == 0:\n            # Add entry\n            LOG.warning(\"Adding current_qc entry for %s\", sid)\n            icursor.execute(\n                \"INSERT into current_qc (iemid) \"\n                \"SELECT iemid from stations where id = %s \"\n                \"and network in ('ISUSM', 'IA_RWIS')\",\n                (sid,),\n            )\n            if icursor.rowcount == 0:\n                LOG.warning(\"Unknown station? %s\", sid)\n\n    icursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/madis/extract_metar.py",
    "content": "\"\"\"Extract MADIS METAR information.\n\ncalled from RUN_20MIN.sh\n\"\"\"\n\nimport os\nimport warnings\nfrom datetime import timedelta, timezone\nfrom subprocess import PIPE, Popen\n\nimport numpy as np\nimport pandas as pd\nimport xarray as xr\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn\nfrom pyiem.util import convert_value, logger, utc\nfrom xarray.coding.variables import SerializationWarning\n\n# File has missing_value and fillValue set :/\nwarnings.simplefilter(\"ignore\", SerializationWarning)\n\nLOG = logger()\n\n\ndef zerocheck(val):\n    \"\"\"Prevent database overflows.\"\"\"\n    return 0 if np.isclose(val, 0) else val\n\n\ndef figure(val, qcval):\n    \"\"\"Go.\"\"\"\n    if qcval > 1000:\n        return None\n    tmpf = convert_value(val, \"degK\", \"degF\")\n    qcval = convert_value(val + qcval, \"degK\", \"degF\")\n    return float(qcval - tmpf)\n\n\ndef figure_alti(qcval):\n    \"\"\"Go.\"\"\"\n    if qcval > 100000.0:\n        return None\n    return float(qcval) / 100.0\n\n\ndef check(val):\n    \"\"\"Go.\"\"\"\n    if val > 200000.0:\n        return None\n    return float(val)\n\n\ndef process_metars(metars):\n    \"\"\"Send these through the ingest...\"\"\"\n    LOG.info(\"Sending %s metars through ingest\", len(metars))\n    collective = f\"000 \\r\\r\\nSAUS99 KISU {utc():%d%H%M}\\r\\r\\nMETAR\\r\\r\\n\"\n    collective += \"\\r\\r\\n\".join(metars)\n    collective += \"\\r\\r\\n\\003\"\n    # Send this to metar_parser.py\n    cmd = [\n        \"python\",\n        \"/home/meteor_ldm/pyWWA/parsers/metar_parser.py\",\n        \"-x\",\n        \"-l\",\n    ]\n    with Popen(cmd, stdout=PIPE, stdin=PIPE, stderr=PIPE) as proc:\n        proc.communicate(collective.encode(\"utf-8\"))\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    # Find most recent two files\n    fns = []\n    for offset in range(5):\n        now = utc() - timedelta(hours=offset)\n        for j in range(300, -1, -1):\n            fn = f\"/mesonet/data/madis/metar/{now:%Y%m%d_%H}00_{j}.nc\"\n            if os.path.isfile(fn):\n                fns.append(fn)\n                break\n        if len(fns) == 2:\n            break\n    if not fns:\n        LOG.warning(\"No MADIS metar netcdf files found!\")\n    for fn in fns:\n        metars = workflow(fn)\n        if metars:\n            process_metars(metars)\n\n\ndef workflow(fn):\n    \"\"\"Run for given netcdf filename.\"\"\"\n    pgconn = get_dbconn(\"iem\")\n    icursor = pgconn.cursor()\n    # Load up current data for ASOS networks\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        currentdf = pd.read_sql(\n            \"SELECT id, valid, t.iemid from current c JOIN stations t on \"\n            \"(c.iemid = t.iemid) WHERE t.network ~* 'ASOS'\",\n            conn,\n            index_col=\"id\",\n        )\n        LOG.info(\"Found %s current ASOS entries\", len(currentdf.index))\n\n    ds = xr.open_dataset(fn)\n    valid = pd.to_datetime(ds[\"timeObs\"].to_numpy()).tz_localize(timezone.utc)\n    ids = ds[\"stationName\"].values\n    nc_tmpk = ds[\"temperature\"].values\n    nc_dwpk = ds[\"dewpoint\"].values\n    nc_alti = ds[\"altimeter\"].values\n    tmpkqcd = ds[\"temperatureQCD\"].values\n    dwpkqcd = ds[\"dewpointQCD\"].values\n    altiqcd = ds[\"altimeterQCD\"].values\n    metars = []\n    for idx, rawid_in in enumerate(ids):\n        rawid = rawid_in.decode(\"ascii\")\n        if len(rawid) != 4:\n            continue\n\n        sid = rawid.removeprefix(\"K\")\n        ts = valid[idx]\n        if sid not in currentdf.index or ts > currentdf.at[sid, \"valid\"]:\n            # MADIS has newer data than noaaport METAR ingest :/\n            metar = (\n                ds[\"rawMETAR\"][idx]\n                .values.tobytes()\n                .decode(\"ascii\")\n                .rstrip(\"\\x00\")\n            )\n            # Can't process until we get SA support in pyIEM\n            if metar.find(\" SA \") > -1:\n                continue\n            metars.append(f\"{metar}=\")\n            continue\n        (tmpf, tmpf_qc_av, tmpf_qc_sc) = (None, None, None)\n        (dwpf, dwpf_qc_av, dwpf_qc_sc) = (None, None, None)\n        (alti, alti_qc_av, alti_qc_sc) = (None, None, None)\n        if (\n            not np.ma.is_masked(nc_tmpk[idx])\n            and not np.ma.is_masked(tmpkqcd[idx, 0])\n            and not np.ma.is_masked(tmpkqcd[idx, 6])\n        ):\n            tmpf = check(convert_value(nc_tmpk[idx], \"degK\", \"degF\"))\n            tmpf_qc_av = figure(nc_tmpk[idx], tmpkqcd[idx, 0])\n            tmpf_qc_sc = figure(nc_tmpk[idx], tmpkqcd[idx, 6])\n        if (\n            not np.ma.is_masked(nc_dwpk[idx])\n            and not np.ma.is_masked(dwpkqcd[idx, 0])\n            and not np.ma.is_masked(dwpkqcd[idx, 6])\n        ):\n            dwpf = check(convert_value(nc_dwpk[idx], \"degK\", \"degF\"))\n            dwpf_qc_av = figure(nc_dwpk[idx], dwpkqcd[idx, 0])\n            dwpf_qc_sc = figure(nc_dwpk[idx], dwpkqcd[idx, 6])\n        if (\n            not np.ma.is_masked(nc_alti[idx])\n            and not np.ma.is_masked(altiqcd[idx, 0])\n            and not np.ma.is_masked(altiqcd[idx, 6])\n        ):\n            alti = check(nc_alti[idx] / 100.0 * 0.0295298)\n            alti_qc_av = figure_alti(altiqcd[idx, 0] * 0.0295298)\n            alti_qc_sc = figure_alti(altiqcd[idx, 6] * 0.0295298)\n        icursor.execute(\n            \"\"\"\n            UPDATE current_qc SET tmpf = %s, tmpf_qc_av = %s,\n            tmpf_qc_sc = %s, dwpf = %s, dwpf_qc_av = %s,\n            dwpf_qc_sc = %s, alti = %s, alti_qc_av = %s,\n            alti_qc_sc = %s, valid = %s WHERE iemid = %s\n            \"\"\",\n            (\n                tmpf,\n                zerocheck(tmpf_qc_av),\n                zerocheck(tmpf_qc_sc),\n                dwpf,\n                zerocheck(dwpf_qc_av),\n                zerocheck(dwpf_qc_sc),\n                alti,\n                zerocheck(alti_qc_av),\n                zerocheck(alti_qc_sc),\n                ts,\n                currentdf.at[sid, \"iemid\"],\n            ),\n        )\n        if icursor.rowcount == 0:\n            # Data is in SA format :/\n            if len(sid) == 4:\n                continue\n            # Add entry\n            LOG.warning(\"Adding current_qc entry for %s\", sid)\n            icursor.execute(\n                \"INSERT into current_qc (iemid) VALUES (%s)\",\n                (currentdf.at[sid, \"iemid\"],),\n            )\n\n    ds.close()\n    icursor.close()\n    pgconn.commit()\n    pgconn.close()\n    return metars\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/madis/sync_stations.py",
    "content": "\"\"\"Compare IEM station metadata with what current MADIS netcdf has.\"\"\"\n\nimport sys\nimport warnings\n\nimport click\nfrom netCDF4 import chartostring\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import ncopen\n\nsys.path.insert(0, \".\")\nfrom to_iemaccess import LOG, provider2network  # skipcq\n\nwarnings.filterwarnings(\"ignore\", category=DeprecationWarning)\n\n\n@click.command()\n@click.option(\"--filename\", help=\"Path to MADIS netcdf file\", required=True)\ndef main(filename: str):\n    \"\"\"Go Main Go\"\"\"\n    pgconn = get_dbconn(\"mesosite\")\n    mcursor = pgconn.cursor()\n\n    with ncopen(filename) as nc:\n        stations = chartostring(nc.variables[\"stationId\"][:])\n        try:\n            names = chartostring(nc.variables[\"stationName\"][:])\n        except UnicodeDecodeError:\n            LOG.info(\"Falling back to bytes and manual name decode\")\n            names = chartostring(\n                nc.variables[\"stationName\"][:], \"bytes\"\n            ).tolist()\n            for i, name in enumerate(names):\n                try:\n                    names[i] = str(name.decode(\"utf-8\"))\n                except UnicodeDecodeError:\n                    names[i] = \"\"\n        providers = chartostring(nc.variables[\"dataProvider\"][:])\n        latitudes = nc.variables[\"latitude\"][:]\n        longitudes = nc.variables[\"longitude\"][:]\n    for recnum, provider in enumerate(providers):\n        name = names[recnum].replace(\",\", \" \")\n        network = provider2network(provider, name)\n        if network is None or network in [\"IA_RWIS\", \"US_RWIS\"]:\n            continue\n        stid = stations[recnum]\n        mcursor.execute(\n            \"SELECT st_x(geom), st_y(geom), name from stations \"\n            \"where id = %s and network = %s\",\n            (stid, network),\n        )\n        lon = float(longitudes[recnum])\n        lat = float(latitudes[recnum])\n        if mcursor.rowcount == 0:\n            # Remove extraneous stuff in the name\n            pos = name.find(\"   \")\n            if pos > 0:\n                name = name[:pos]\n            LOG.warning(\"Add network: %s station: %s %s\", network, stid, name)\n            mcursor.execute(\n                \"INSERT into stations(id, network, synop, country, plot_name, \"\n                \"name, state, online, geom, metasite) \"\n                \"VALUES (%s, %s, 9999, 'US', %s, %s, %s, 't', \"\n                \"ST_POINT(%s, %s, 4326), 'f')\",\n                (stid, network, name, name, network[:2], lon, lat),\n            )\n            continue\n        # Compare location\n        (olon, olat, oname) = mcursor.fetchone()\n        if oname == \"\":\n            LOG.info(\"Updating name[%s] for %s %s\", name, stid, network)\n            mcursor.execute(\n                \"UPDATE stations SET name = %s WHERE id = %s and network = %s\",\n                (name, stid, network),\n            )\n        distance = ((olon - lon) ** 2 + (olat - lat) ** 2) ** 0.5\n        if distance < 0.001:\n            continue\n        LOG.warning(\n            \"move %s %s dist: %s lon: %s -> %s lat: %s -> %s\",\n            stid,\n            network,\n            distance,\n            olon,\n            lon,\n            olat,\n            lat,\n        )\n        mcursor.execute(\n            \"UPDATE stations SET geom = ST_POINT(%s, %s, 4326) WHERE \"\n            \"id = %s and network = %s\",\n            (lon, lat, stid, network),\n        )\n\n    mcursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/madis/to_iemaccess.py",
    "content": "\"\"\"Suck in MADIS data into the iemdb.\n\nRun from RUN_20MIN.sh\nRUN_50_AFTER for previous hour and three hours ago.\n\"\"\"\n\nimport os\nimport subprocess\nimport warnings\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport httpx\nimport numpy as np\nfrom netCDF4 import chartostring\nfrom pyiem.database import get_dbconnc\nfrom pyiem.observation import Observation\nfrom pyiem.util import convert_value, logger, mm2inch, ncopen, utc\n\nLOG = logger()\nMYDIR = \"/mesonet/data/madis\"\nMY_PROVIDERS = [\"KYTC-RWIS\", \"NEDOR\", \"MesoWest\", \"ITD\"]\nWEBROOT = \"https://madis-data.cprk.ncep.noaa.gov/madisPublic1/data/\"\nwarnings.filterwarnings(\"ignore\", category=DeprecationWarning)\n\n\ndef find_file(variant, valid: datetime):\n    \"\"\"Find the most recent file\"\"\"\n    fn = None\n    if valid < utc().replace(hour=0, minute=0):\n        if (utc() - valid).days > 5:\n            uri = (\n                f\"{WEBROOT}archive/{valid:%Y/%m/%d}/LDAD/{variant[:-1]}/netCDF/\"\n                f\"{valid:%Y%m%d_%H}00.gz\"\n            )\n        else:\n            uri = f\"{WEBROOT}LDAD/{variant[:-1]}/netCDF/{valid:%Y%m%d_%H}00.gz\"\n        try:\n            # Prevent script errors from filling up /tmp\n            with open(\"/tmp/madis_download.gz\", \"wb\") as tmp:\n                resp = httpx.get(uri)\n                resp.raise_for_status()\n                tmp.write(resp.content)\n                fn = tmp.name\n            # gunzip the file\n            subprocess.call([\"gunzip\", \"-f\", fn])\n            fn = fn[:-3]\n            return fn\n        except Exception as exp:\n            LOG.info(\"Failed to fetch %s %s\", uri, exp)\n            return None\n\n    for j in range(300, -1, -1):\n        testfn = valid.strftime(f\"{MYDIR}/{variant}/%Y%m%d_%H00_{j}.nc\")\n        if os.path.isfile(testfn):\n            LOG.info(\"processing %s\", testfn)\n            return testfn\n    LOG.warning(\"Found no %s files to process for %s\", variant, valid)\n    return None\n\n\ndef sanity_check(val, lower, upper):\n    \"\"\"Simple bounds check\"\"\"\n    if lower < val < upper:\n        return float(val)\n    return None\n\n\ndef provider2network(provider, name):\n    \"\"\"Convert a MADIS network ID to one that I use, here in IEM land\"\"\"\n    if not provider.endswith(\"DOT\") and provider not in MY_PROVIDERS:\n        return None\n    if provider == \"MesoWest\":\n        # get the network from the last portion of the name\n        tokens = name.split()\n        if not tokens:\n            return None\n        network = tokens[-1]\n        if network == \"NEDOR\":\n            return \"NE_RWIS\"\n        if network == \"VTWAC\":\n            return network\n        # Le Sigh\n        if network == \"CDOT\":\n            return \"CO_RWIS\"\n        if network == \"ODOT\":\n            return \"OR_RWIS\"\n        if network.endswith(\"DOT\"):\n            if len(network) == 5:\n                return f\"{network[:2]}_RWIS\"\n            if tokens[-2] == \"UTAH\" or len(tokens[-2]) == 2:\n                return f\"{tokens[-2][:2]}_RWIS\"\n            LOG.warning(\"How to convert %s into a network?\", repr(tokens))\n            return None\n        return None\n    if provider == \"ITD\":\n        return \"ID_RWIS\"\n    if len(provider) == 5 or provider in [\"KYTC-RWIS\", \"NEDOR\"]:\n        if provider[:2] == \"IA\":\n            return None\n        return f\"{provider[:2]}_RWIS\"\n    LOG.warning(\"Unsure how to convert %s into a network\", provider)\n    return None\n\n\ndef build_roadstate_xref(ncvar):\n    \"\"\"Figure out how values map.\"\"\"\n    xref = {}\n    for myattr in [x for x in ncvar.ncattrs() if x.startswith(\"value\")]:\n        xref[int(myattr.replace(\"value\", \"\"))] = ncvar.getncattr(myattr)\n    return xref\n\n\ndef process(fn: str, valid: datetime):\n    \"\"\"Process the MADIS file\"\"\"\n    pgconn, icursor = get_dbconnc(\"iem\")\n    res = icursor.execute(\n        \"\"\"\n    select id ||'_'|| network || '_'||\n    to_char(valid at time zone 'UTC', 'YYYYMMDDHH24MI') as key\n    from current_log c JOIN\n    stations t on (c.iemid = t.iemid) WHERE\n    (t.network ~* 'RWIS' or t.network = 'VTWAC') and valid >= %s\n    and valid < %s\n    \"\"\",\n        (valid, valid + timedelta(hours=1)),\n    )\n    LOG.info(\"Found %s current_log entries to dedup\", res.rowcount)\n    dbhaskeys = [x[\"key\"] for x in res]\n    with ncopen(fn, timeout=300) as nc:\n        stations = chartostring(nc.variables[\"stationId\"][:])\n        providers = chartostring(nc.variables[\"dataProvider\"][:])\n        names = chartostring(nc.variables[\"stationName\"][:])\n\n        tmpk = nc.variables[\"temperature\"][:]\n        dwpk = nc.variables[\"dewpoint\"][:]\n        relh = nc.variables[\"relHumidity\"][:]\n\n        # Set some data bounds to keep mcalc from complaining\n        tmpk = np.where(\n            np.ma.logical_or(np.ma.less(tmpk, 200), np.ma.greater(tmpk, 320)),\n            np.nan,\n            tmpk,\n        )\n        dwpk = np.where(\n            np.ma.logical_or(np.ma.less(dwpk, 200), np.ma.greater(dwpk, 320)),\n            np.nan,\n            dwpk,\n        )\n        relh = np.where(\n            np.ma.logical_and(np.ma.less(relh, 100.1), np.ma.greater(relh, 0)),\n            relh,\n            np.nan,\n        )\n        obtime = nc.variables[\"observationTime\"][:]\n        pressure = nc.variables[\"stationPressure\"][:]\n        drct = nc.variables[\"windDir\"][:]\n        smps = nc.variables[\"windSpeed\"][:]\n        gmps = nc.variables[\"windGust\"][:]\n        pcpn = nc.variables[\"precipAccum\"][:]\n        rtk1 = nc.variables[\"roadTemperature1\"][:]\n        rtk2 = nc.variables[\"roadTemperature2\"][:]\n        rtk3 = nc.variables[\"roadTemperature3\"][:]\n        rtk4 = nc.variables[\"roadTemperature4\"][:]\n        subk1 = nc.variables[\"roadSubsurfaceTemp1\"][:]\n        rstate1 = nc.variables[\"roadState1\"][:]\n        road_state_xref = build_roadstate_xref(nc.variables[\"roadState1\"])\n        rstate2 = nc.variables[\"roadState2\"][:]\n        rstate3 = nc.variables[\"roadState3\"][:]\n        rstate4 = nc.variables[\"roadState4\"][:]\n        vsby = convert_value(nc.variables[\"visibility\"][:], \"meter\", \"mile\")\n\n    updates = 0\n    dupes = 0\n    dirty = False\n    for recnum, provider in enumerate(providers):\n        name = names[recnum]\n        network = provider2network(provider, name)\n        sid = stations[recnum]\n        # IA_RWIS is processed via a dedicated workflow\n        if network is None or network == \"IA_RWIS\":\n            continue\n        ticks = obtime[recnum]\n        ts = datetime(1970, 1, 1) + timedelta(seconds=ticks)\n        ts = ts.replace(tzinfo=timezone.utc)\n        if f\"{sid}_{network}_{ts:%Y%m%d%H%M}\" in dbhaskeys:\n            dupes += 1\n            continue\n        iem = Observation(sid, network, ts)\n\n        if rstate1[recnum] is not np.ma.masked:\n            iem.data[\"scond0\"] = road_state_xref.get(rstate1[recnum])\n        if rstate2[recnum] is not np.ma.masked:\n            iem.data[\"scond1\"] = road_state_xref.get(rstate2[recnum])\n        if rstate3[recnum] is not np.ma.masked:\n            iem.data[\"scond2\"] = road_state_xref.get(rstate3[recnum])\n        if rstate4[recnum] is not np.ma.masked:\n            iem.data[\"scond3\"] = road_state_xref.get(rstate4[recnum])\n\n        val = sanity_check(tmpk[recnum], 200, 330)\n        if val is not None:\n            iem.data[\"tmpf\"] = convert_value(val, \"degK\", \"degF\")\n\n        val = sanity_check(dwpk[recnum], 200, 330)\n        if val is not None:\n            iem.data[\"dwpf\"] = convert_value(val, \"degK\", \"degF\")\n\n        val = sanity_check(relh[recnum], 0, 100.1)\n        if val is not None and val is not np.ma.masked:\n            iem.data[\"relh\"] = float(val)\n\n        val = sanity_check(drct[recnum], -1, 361)\n        if val is not None:\n            iem.data[\"drct\"] = val\n\n        val = sanity_check(smps[recnum], -1, 200)\n        if val is not None:\n            iem.data[\"sknt\"] = convert_value(val, \"meter / second\", \"knot\")\n\n        val = sanity_check(gmps[recnum], -1, 200)\n        if val is not None:\n            iem.data[\"gust\"] = convert_value(val, \"meter / second\", \"knot\")\n        pres = sanity_check(pressure[recnum], 0, 1000000)\n        if pres is not None:\n            iem.data[\"pres\"] = (float(pres) / 100.00) * 0.02952\n\n        val = sanity_check(rtk1[recnum], 0, 500)\n        if val is not None:\n            iem.data[\"tsf0\"] = convert_value(val, \"degK\", \"degF\")\n\n        val = sanity_check(rtk2[recnum], 0, 500)\n        if val is not None:\n            iem.data[\"tsf1\"] = convert_value(val, \"degK\", \"degF\")\n\n        val = sanity_check(rtk3[recnum], 0, 500)\n        if val is not None:\n            iem.data[\"tsf2\"] = convert_value(val, \"degK\", \"degF\")\n\n        val = sanity_check(rtk4[recnum], 0, 500)\n        if val is not None:\n            iem.data[\"tsf3\"] = convert_value(val, \"degK\", \"degF\")\n\n        val = sanity_check(vsby[recnum], 0, 30)\n        if val is not None:\n            iem.data[\"vsby\"] = val\n\n        subk = sanity_check(subk1[recnum], 0, 500)\n        if subk is not None:\n            iem.data[\"rwis_subf\"] = convert_value(subk, \"degK\", \"degF\")\n\n        pday = sanity_check(pcpn[recnum], -1, 5000)\n        if pday is not None:\n            iem.data[\"pday\"] = round(mm2inch(pday), 2)\n        updates += 1\n        # Could be processing previous hour or out-of-order data\n        if not iem.save(icursor, force_current_log=True):\n            LOG.warning(\n                \"MADIS Extract: %s found new station: %s network: %s\",\n                fn.split(\"/\")[-1],\n                sid,\n                network,\n            )\n            dirty = True\n        if updates % 500 == 0:\n            LOG.info(\"Processed %s rows\", updates)\n            icursor.close()\n            pgconn.commit()\n            icursor = pgconn.cursor()\n    if dirty:\n        subprocess.call([\"python\", \"sync_stations.py\", f\"--filename={fn}\"])\n        os.chdir(\"../../dbutil\")\n        subprocess.call([\"sh\", \"SYNC_STATIONS.sh\"])\n\n    LOG.info(\n        \"%s had %s rows, with %s updates and %s dupes\",\n        fn,\n        len(providers),\n        updates,\n        dupes,\n    )\n    icursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\n@click.command()\n@click.option(\n    \"--valid\", required=True, type=click.DateTime(), help=\"Specific valid time\"\n)\ndef main(valid: datetime):\n    \"\"\"Do Something\"\"\"\n    # The IEM has too much going on at midnight it seems, so we will punt on\n    # this script when run within a 12:00 AM to 12:20 AM window\n    if f\"{datetime.now():%H%M}\" < \"0020\":\n        LOG.info(\"Exiting due to midnight exclusion period.\")\n        return\n\n    valid = valid.replace(tzinfo=timezone.utc)\n    for variant in [\"rwis1\", \"mesonet1\"]:\n        fn = find_file(variant, valid)\n        if fn is None:\n            continue\n        process(fn, valid)\n        if fn.startswith(\"/tmp/\"):\n            os.unlink(fn)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/ncei/91_20/ingest.py",
    "content": "\"\"\"\nhttps://www.ncei.noaa.gov/data/normals-daily/1991-2020/access/\n\"\"\"\n\nfrom datetime import datetime\nfrom io import StringIO\n\nimport httpx\nimport pandas as pd\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\nfrom tqdm import tqdm\n\nLOG = logger()\nBASEURL = \"https://www.ncei.noaa.gov/data/normals-daily/1991-2020/access\"\n\n\ndef remove_station(sid):\n    \"\"\"We don't want.\"\"\"\n    pgconn = get_dbconn(\"mesosite\")\n    cursor = pgconn.cursor()\n    cursor.execute(\n        \"DELETE from stations where id = %s and network = 'NCEI91'\",\n        (sid,),\n    )\n    cursor.close()\n    pgconn.commit()\n\n\ndef nona(val, minval=None):\n    \"\"\"Return a non-NA value\"\"\"\n    if pd.isna(val):\n        return None\n    if minval is not None and val < minval:\n        return None\n    return val\n\n\ndef ingest(pgconn, sid):\n    \"\"\"Ingest the data into the database!\"\"\"\n    cursor = pgconn.cursor()\n    cursor.execute(\n        \"SELECT count(*) from ncei_climate91 where station = %s\",\n        (sid,),\n    )\n    if cursor.fetchone()[0] == 366:\n        return\n    resp = httpx.get(f\"{BASEURL}/{sid}.csv\", timeout=30)\n    if resp.status_code != 200:\n        LOG.info(\"failed to get %s\", sid)\n        return\n    sio = StringIO()\n    sio.write(resp.text)\n    sio.seek(0)\n    df = pd.read_csv(sio)\n    if (\n        \"DLY-TMAX-NORMAL\" not in df.columns\n        or \"YTD-PRCP-NORMAL\" not in df.columns\n    ):\n        remove_station(sid)\n        return\n    df[\"high\"] = df[\"DLY-TMAX-NORMAL\"]\n    df[\"low\"] = df[\"DLY-TMIN-NORMAL\"]\n    df[\"pcum\"] = df[\"YTD-PRCP-NORMAL\"]\n    if \"YTD-SNOW-NORMAL\" in df.columns:\n        df[\"scum\"] = df[\"YTD-SNOW-NORMAL\"]\n        # hack for Feb 29\n        df.at[59, \"scum\"] = df.at[58, \"scum\"]\n        df[\"snow\"] = df[\"scum\"].diff()\n        df.at[0, \"snow\"] = df.at[0, \"scum\"]\n        df.at[59, \"snow\"] = df.at[58, \"snow\"]\n    else:\n        df[\"snow\"] = pd.NA\n    df.at[59, \"pcum\"] = df.at[58, \"pcum\"]\n    df[\"precip\"] = df[\"pcum\"].diff()\n    df.at[0, \"precip\"] = df.at[0, \"pcum\"]\n    df.at[59, \"precip\"] = df.at[58, \"precip\"]\n    for _, row in df.iterrows():\n        now = datetime(2000, row[\"month\"], row[\"day\"])\n        cursor.execute(\n            \"INSERT into ncei_climate91 (station, valid, high, low, precip, \"\n            \"snow) VALUES (%s, %s, %s, %s, %s, %s)\",\n            (\n                sid,\n                now,\n                nona(row[\"high\"]),\n                nona(row[\"low\"]),\n                nona(row[\"precip\"], 0),\n                nona(row[\"snow\"], 0),\n            ),\n        )\n    cursor.close()\n    pgconn.commit()\n\n\ndef main():\n    \"\"\"Go main Go\"\"\"\n    pgconn = get_dbconn(\"coop\")\n    nt = NetworkTable(\"NCEI91\")\n    progress = tqdm(list(nt.sts.keys()))\n    for sid in progress:\n        progress.set_description(sid)\n        ingest(pgconn, sid)\n\n\nif __name__ == \"__main__\":\n    # Go\n    main()\n"
  },
  {
    "path": "scripts/ingestors/ncei/91_20/merge_stations.py",
    "content": "\"\"\"Create NCEI91 station entries.\"\"\"\n\nfrom pyiem.database import get_dbconn\n\n\ndef compute_stations(cursor):\n    \"\"\"Logic to resolve, which stations we care about and add necessary\n    station metadata about them!\"\"\"\n\n    with open(\"inventory_30yr.txt\", encoding=\"ascii\") as fh:\n        for line in fh:\n            # We have a station we care about!\n            sid = line[:11]\n            lat = float(line[12:20])\n            lon = float(line[21:30])\n            elev = float(line[31:37])\n            state = line[38:40]\n            name = line[41:71].strip()\n\n            cursor.execute(\n                \"SELECT id from stations where id = %s and network = 'NCEI91'\",\n                (sid,),\n            )\n            if cursor.rowcount == 1:\n                continue\n            cursor.execute(\n                \"\"\"\n                INSERT into stations (id, network, geom, elevation, name,\n                country, state, online, plot_name, archive_begin, archive_end,\n                metasite, ncei91)\n                VALUES (%s, 'NCEI91', ST_POINT(%s, %s, 4326), %s,\n                %s, %s, %s, 't', %s, '1991-01-01', '2020-12-31', 't', %s)\n                \"\"\",\n                (sid, lon, lat, elev, name, sid[:2], state, name, sid),\n            )\n            print(f\"adding {sid}\")\n\n\ndef main():\n    \"\"\"Go main Go\"\"\"\n    pgconn = get_dbconn(\"mesosite\")\n    cursor = pgconn.cursor()\n    compute_stations(cursor)\n    cursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\nif __name__ == \"__main__\":\n    # Go\n    main()\n"
  },
  {
    "path": "scripts/ingestors/ncei/ingest_fisherporter.py",
    "content": "\"\"\"Ingest the Fisher/Porter rain gage data from NCEI\n\nRun from RUN_2AM.sh for 3, 6, and 12 months in the past\non the 15th each month\n\"\"\"\n\nfrom datetime import datetime\n\nimport pandas as pd\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef ingest(df: pd.DataFrame, sid: str, cursor):\n    \"\"\"Process a file of data\"\"\"\n    cursor.execute(\n        \"SELECT max(date(valid)) from hpd_alldata WHERE station = %s\", (sid,)\n    )\n    dbmax = cursor.fetchone()[0]\n    LOG.info(\"dbmax is %s, df.last is %s\", dbmax, df.index[-1])\n    if dbmax is not None:\n        df = df.loc[pd.Timestamp(dbmax) :]\n        cursor.execute(\n            \"DELETE from hpd_alldata where station = %s and valid >= %s\",\n            (sid, dbmax.strftime(\"%Y-%m-%d 00:00-0600\")),\n        )\n        LOG.info(\"Removed %s rows from database\", cursor.rowcount)\n    LOG.info(\"Found %s rows to ingest\", len(df.index))\n    if df.empty:\n        return\n    taxis = pd.date_range(\"2000/01/01 00:00\", \"2000/01/01 23:45\", freq=\"15min\")\n    for dt, row in df.iterrows():\n        # CST\n        for ts in taxis:\n            valid = datetime(dt.year, dt.month, dt.day, ts.hour, ts.minute)\n            val = row[f\"{ts:%H%M}Val\"]\n            if val < 0:  # Missing\n                continue\n            val = float(val) / 100.0\n\n            cursor.execute(\n                \"INSERT into hpd_alldata(station, valid, precip) VALUES \"\n                \"(%s, %s, %s)\",\n                (\n                    sid,\n                    valid.strftime(\"%Y-%m-%d %H:%M-0600\"),\n                    val,\n                ),\n            )\n    # Update metadata\n    pgconn = get_dbconn(\"mesosite\")\n    mcursor = pgconn.cursor()\n    mcursor.execute(\n        \"UPDATE stations SET archive_end = %s where id = %s and \"\n        \"network = 'IA_HPD'\",\n        (df.index[-1], sid),\n    )\n    mcursor.close()\n    pgconn.commit()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    nt = NetworkTable(\"IA_HPD\")\n    pgconn = get_dbconn(\"other\")\n    for sid in nt.sts:\n        url = (\n            \"https://www.ncei.noaa.gov/pub/data/hpd/auto/v2/beta/15min/\"\n            f\"all_csv/USC00{sid}.15m.csv\"\n        )\n        try:\n            df = pd.read_csv(\n                url, low_memory=False, parse_dates=[\"DATE\"]\n            ).set_index(\"DATE\")\n        except Exception as exp:\n            LOG.warning(\"Failed to fetch %s\", url)\n            LOG.exception(exp)\n            continue\n        cursor = pgconn.cursor()\n        LOG.info(\n            \"Found %s rows for %s[%s-%s]\",\n            len(df.index),\n            sid,\n            df.index[0],\n            df.index[-1],\n        )\n        ingest(df, sid, cursor)\n        cursor.close()\n        pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/ncei/ingest_isd.py",
    "content": "\"\"\"Ingest NCEI's ISH data into the IEM archives.\n\nhttps://www.ncei.noaa.gov/pub/data/noaa/isd-history.txt\n\"\"\"\n\nimport os\nimport subprocess\nimport sys\nfrom unittest import mock\n\nimport click\nimport httpx\nimport pandas as pd\nimport tqdm\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.ncei import ds3505\nfrom pyiem.nws.products.metarcollect import normid, to_iemaccess, to_metar\nfrom pyiem.util import c2f, logger, utc\n\nLOG = logger()\nTMPDIR = \"/mesonet/tmp\"\n\n\ndef get_metadata(faa):\n    \"\"\"Need to figure out what the network, iemid are.\"\"\"\n    mesosite = get_dbconn(\"mesosite\")\n    cursor = mesosite.cursor()\n    localid = normid(faa)\n    cursor.execute(\n        \"select tzname, iemid from stations where id = %s and \"\n        \"network ~* 'ASOS'\",\n        (localid,),\n    )\n    if cursor.rowcount != 1:\n        LOG.fatal(\"Failed to find station metadata!\")\n        sys.exit()\n    (tzname, iemid) = cursor.fetchone()\n    mesosite.close()\n    return tzname, iemid\n\n\n@click.command()\n@click.option(\"--airforce\", type=int, required=True)\n@click.option(\"--wban\", type=int, required=True)\n@click.option(\"--faa\", type=str, required=True)\n@click.option(\"--year1\", type=int, required=True)\n@click.option(\"--year2\", type=int, required=True)\ndef main(airforce, wban, faa, year1, year2):\n    \"\"\"Go\"\"\"\n    asosdb = get_dbconn(\"asos\")\n    iemdb = get_dbconn(\"iem\")\n    if len(faa) == 3:\n        LOG.error(\"Provided faa ID should be 4 chars, abort\")\n        return\n    tzname, iemid = get_metadata(faa)\n    year1 = max(year1, 1900)  # database starts in 1900\n    failedyears = []\n    msgs = []\n    dbid = normid(faa)\n    for year in tqdm.tqdm(range(year1, year2 + 1)):\n        sts = utc(year, 1, 1)\n        ets = sts.replace(year=year + 1)\n        icursor = iemdb.cursor()\n        lfn = f\"{airforce:06.0f}-{wban:05.0f}-{year}\"\n        if not os.path.isfile(f\"{TMPDIR}/{lfn}\"):\n            uri = f\"https://www.ncei.noaa.gov/pub/data/noaa/{year}/{lfn}.gz\"\n            try:\n                req = httpx.get(uri, timeout=30)\n                req.raise_for_status()\n            except Exception:\n                LOG.info(\"Failed to fetch %s\", uri)\n                failedyears.append(year)\n                continue\n            with open(f\"{TMPDIR}/{lfn}.gz\", \"wb\") as fh:\n                fh.write(req.content)\n            subprocess.call(\n                [\"gunzip\", f\"{TMPDIR}/{lfn}.gz\"],\n                stderr=subprocess.PIPE,\n            )\n        added = 0\n        bad = 0\n        skipped = 0\n        empty = 0\n        deleted = 0\n        with get_sqlalchemy_conn(\"asos\") as asosconn:\n            # build out our current obs\n            obsdf = pd.read_sql(\n                sql_helper(\"\"\"\n            SELECT valid, tmpf, metar, editable from alldata where\n            station = :station and valid >= :sts and valid < :ets\n            ORDER by valid ASC\n                \"\"\"),\n                asosconn,\n                params={\"station\": dbid, \"sts\": sts, \"ets\": ets},\n            )\n        if not obsdf.empty:\n            obsdf[\"valid\"] = obsdf[\"valid\"].dt.tz_convert(\"UTC\")\n            obsdf = obsdf.set_index(\"valid\")\n        # ignore any bad bytes, sigh\n        with open(f\"{TMPDIR}/{lfn}\", errors=\"ignore\", encoding=\"utf-8\") as fh:\n            for line in fh:\n                try:\n                    data = ds3505.parser(line.strip(), faa, add_metar=True)\n                except ValueError as exp:\n                    print(f\"failed to parse line: '{line.strip()}'\")\n                    print(exp)\n                    data = None\n                if data is None:\n                    bad += 1\n                    continue\n                current_tmpf = None\n                current_metar = None\n                new_tmpf = (\n                    None\n                    if data[\"airtemp_c\"] is None\n                    else c2f(data[\"airtemp_c\"])\n                )\n                if data[\"report_type\"] not in [\"FM-15\", \"FM-16\"]:\n                    continue\n                if data[\"valid\"].minute == 0:\n                    continue\n                if data[\"valid\"] in obsdf.index:\n                    if new_tmpf is None:\n                        continue\n                    if not obsdf.at[data[\"valid\"], \"editable\"]:\n                        continue\n                    current_metar = obsdf.at[data[\"valid\"], \"metar\"]\n                    current_tmpf = obsdf.at[data[\"valid\"], \"tmpf\"]\n                if (\n                    pd.notna(current_tmpf)\n                    and new_tmpf is not None\n                    and abs(current_tmpf - new_tmpf) < 1\n                ):\n                    skipped += 1\n                    continue\n                textprod = mock.Mock()\n                textprod.valid = data[\"valid\"]\n                textprod.utcnow = data[\"valid\"]\n                mtr = to_metar(textprod, data[\"metar\"])\n                # Avoid KDSM 150559Z AUTO RMK IEM_DS3505\n                if len(mtr.code) == 32:\n                    empty += 1\n                    continue\n                if current_metar is not None:\n                    acursor = asosdb.cursor()\n                    # Life choices, if this is first, we need to delete lots\n                    if data[\"valid\"].day == 1:\n                        acursor.execute(\n                            f\"delete from t{data['valid'].year} \"\n                            \"where station = %s and valid >= %s \"\n                            \"and valid < %s\",\n                            (\n                                dbid,\n                                data[\"valid\"].replace(hour=0, minute=0),\n                                data[\"valid\"].replace(hour=8, minute=0),\n                            ),\n                        )\n                        deleted += acursor.rowcount\n                    acursor.execute(\n                        f\"delete from t{data['valid'].year} \"\n                        \"where station = %s and valid = %s\",\n                        (dbid, data[\"valid\"]),\n                    )\n                    deleted += acursor.rowcount\n                    acursor.close()\n                    asosdb.commit()\n                    print(\n                        f\"{data['valid']} {current_tmpf} -> {new_tmpf} | \"\n                        f\"{current_metar} -> {mtr.code}\"\n                    )\n                to_iemaccess(\n                    icursor,\n                    mtr,\n                    iemid,\n                    tzname,\n                    force_current_log=True,\n                    skip_current=True,\n                )\n                added += 1\n        msgs.append(\n            f\"  {year}: {faa} added: {added} bad: {bad} skipped: {skipped} \"\n            f\"empty: {empty} deleted: {deleted}\"\n        )\n        icursor.close()\n        iemdb.commit()\n        os.unlink(f\"{TMPDIR}/{lfn}\")\n    LOG.info(\" failed years: %s\", failedyears)\n    LOG.info(\"\\n\".join(msgs))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/ncei/run_network_isd_ingest.py",
    "content": "\"\"\"Process a network's worth of ISD data, please.\"\"\"\n\nimport subprocess\nfrom datetime import datetime\n\nimport click\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef build_xref():\n    \"\"\"Figure out how to reference stations\"\"\"\n    xref = {}\n    with open(\"isd-history.txt\", encoding=\"utf-8\") as fh:\n        for linenum, line in enumerate(fh):\n            if linenum < 24:\n                continue\n            airforce = line[:6]\n            wban = int(line[7:12])\n            faa = line[51:55]\n            if faa.strip() == \"\":\n                continue\n            if faa[0] == \"K\":\n                faa = faa[1:]\n            sts = datetime.strptime(line[82:90], \"%Y%m%d\")\n            ets = datetime.strptime(line[91:99], \"%Y%m%d\")\n            ar = xref.setdefault(faa, [])\n            ar.append([airforce, wban, sts, ets])\n    return xref\n\n\n@click.command()\n@click.option(\"--network\", help=\"Network Identifier\", required=True)\n@click.option(\"--till_year\", help=\"Year to stop at\", required=True, type=int)\ndef main(network: str, till_year: int):\n    \"\"\"Go Main Go\"\"\"\n    xref = build_xref()\n    nt = NetworkTable(network, only_online=False)\n    for station in nt.sts:\n        if nt.sts[station][\"archive_begin\"] is None:\n            LOG.info(\"skipping %s as archive_begin is None\", station)\n            continue\n        # Loop over any matching stations above\n        for option in xref.get(station, []):\n            if option[2].year >= till_year:\n                LOG.info(\n                    \"skipping %s:%s as starts after %s\",\n                    station,\n                    option,\n                    till_year,\n                )\n                continue\n            stid = station if len(station) == 4 else \"K\" + station\n            eyear = min([till_year, option[3].year])\n            cmd = [\n                \"python\",\n                \"ingest_isd.py\",\n                \"--airforce\",\n                str(option[0]),\n                \"--wban\",\n                str(option[1]),\n                \"--faa\",\n                stid,\n                \"--year1\",\n                \"1998\",\n                \"--year2\",\n                f\"{eyear}\",\n            ]\n            LOG.info(\" \".join(cmd))\n            subprocess.call(cmd)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/ncei/xcheck_ghcn_stations.py",
    "content": "\"\"\"Compare what we have for stations and what NCEI has for GHCN\"\"\"\n\nimport click\nimport pandas as pd\nfrom pyiem.network import Table as NetworkTable\n\n\ndef read_table(state):\n    \"\"\"Load up what NCEI has\"\"\"\n    rows = []\n    with open(\"ghcnd-stations.txt\", encoding=\"ascii\") as fh:\n        for line in fh:\n            if not line.startswith(\"US\") or line[38:40] != state:\n                continue\n            fullid = line[:11]\n            name = line[41:71].strip()\n            rows.append(\n                {\"name\": name, \"fullid\": fullid, \"lastfour\": fullid[-4:]}\n            )\n    return pd.DataFrame(rows)\n\n\n@click.command()\n@click.argument(\"--state\")\ndef main(state):\n    \"\"\"Can we do it?\"\"\"\n    nt = NetworkTable(f\"{state}CLIMATE\")\n    ncei = read_table(state)\n    for sid in nt.sts:\n        if sid[2] == \"C\" or sid[-4:] == \"0000\":\n            continue\n        df = ncei[ncei[\"fullid\"] == nt.sts[sid][\"ncdc81\"]]\n        if len(df.index) == 1:\n            continue\n        print(\n            f\"Resolve Conflict: iem: {sid} {nt.sts[sid]['name']} \"\n            f\"ncdc81: {nt.sts[sid]['ncei81']} ncei: {df}\"\n        )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/onewire.py",
    "content": "\"\"\"Onewire ingest.\"\"\"\n\nimport os\nimport subprocess\nimport time\nfrom datetime import datetime\n\nos.environ[\"TZ\"] = \"CST6CDT\"\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    with open(\"runner.pid\", \"w\") as fh:\n        fh.write(\"%s\" % (os.getpid(),))\n\n    while 1:\n        _si, so = os.popen4('./digitemp -q -a -s /dev/ttyS0 -o\"%s %.2F\"')\n        d = so.readlines()\n        data = {}\n        for ll in d:\n            t = ll.split()\n            try:\n                data[int(t[0])] = t[1]\n            except Exception:\n                print(ll)\n        if len(data) > 3:\n            now = datetime.now()\n            fp = \"ot0003_%s.dat\" % (now.strftime(\"%Y%m%d%H%M\"),)\n            with open(fp, \"w\") as fh:\n                fh.write(\n                    \"104,%s,%s, %s, %s, %s,11.34\\n\"\n                    % (\n                        now.strftime(\"%Y,%j,%H%M\"),\n                        data[0],\n                        data[1],\n                        data[2],\n                        data[3],\n                    )\n                )\n            subprocess.call([\"pqinsert\", fp])\n            os.remove(fp)\n        time.sleep(56)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/other/feel_ingest.py",
    "content": "\"\"\"Ingest the ISU FEEL Farm data.\n\nRun from RUN_10AFTER.sh\n\"\"\"\n\nimport os\nfrom datetime import date, datetime\nfrom zoneinfo import ZoneInfo\n\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_dbconnc\nfrom pyiem.observation import Observation\nfrom pyiem.util import c2f, convert_value, logger\n\nLOG = logger()\nBASE = \"/mesonet/home/mesonet/ot/ot0005/incoming/Pierson\"\nCST = ZoneInfo(\"Etc/GMT+6\")\n\n\ndef get_starttimes(cursor) -> tuple[date, datetime]:\n    \"\"\"Figure out when we have data\"\"\"\n    cursor.execute(\n        \"SELECT max(valid at time zone 'UTC+06') from feel_data_hourly\"\n    )\n    row = cursor.fetchone()\n    hstart = row[0].replace(tzinfo=CST)\n\n    cursor.execute(\"SELECT max(valid) from feel_data_daily\")\n    row = cursor.fetchone()\n    dstart = row[0]\n\n    return dstart, hstart\n\n\ndef ingest(cursor):\n    \"\"\"Lets do something\"\"\"\n\n    dstart, hstart = get_starttimes(cursor)\n    LOG.info(\"dstart: %s hstart: %s\", dstart, hstart)\n    if dstart is None:\n        dstart = date(1980, 1, 1)\n    if hstart is None:\n        hstart = datetime(1980, 1, 1)\n    fn = f\"{BASE}/{date.today():%Y}/ISU_Feel_Daily.dat\"\n    # If this file does not exist, try the previous year's file\n    if not os.path.isfile(fn):\n        fn = f\"{BASE}/{date.today().year - 1}/ISU_Feel_Daily.dat\"\n        if not os.path.isfile(fn):\n            LOG.warning(\"Double failure to find %s\", fn)\n            return\n\n    df = pd.read_csv(\n        fn, header=0, skiprows=[0, 2, 3], quotechar='\"', on_bad_lines=\"warn\"\n    )\n\n    iconn, icursor = get_dbconnc(\"iem\")\n    for _, row in df.iterrows():\n        ts = datetime.strptime(row[\"TIMESTAMP\"][:10], \"%Y-%m-%d\")\n        if ts.date() <= dstart:\n            continue\n        # We have to do this because the data is in UTC-6\n        ob = Observation(\n            \"OT0011\", \"OT\", ts.replace(tzinfo=ZoneInfo(\"Etc/GMT+6\"))\n        )\n        ob.data[\"max_tmpf\"] = c2f(row[\"AirTemp_Max\"])\n        ob.data[\"min_tmpf\"] = c2f(row[\"AirTemp_Min\"])\n        ob.data[\"pday\"] = convert_value(row[\"Rain_Tot\"], \"mm\", \"inch\")\n        ob.data[\"srad_mj\"] = row[\"SolarRad_MJ_Tot\"]\n        ob.data[\"max_sknt\"] = convert_value(\n            row[\"Windspeed_Max\"], \"mps\", \"knots\"\n        )\n        ob.save(icursor)\n        cursor.execute(\n            \"\"\"\n            INSERT into feel_data_daily(\n            valid, AirTemp_Max, AirTemp_Min, Rain_Tot,\n            Windspeed_Max, SolarRad_MJ_Tot) VALUES (%s, %s, %s, %s,\n            %s, %s)\n        \"\"\",\n            (\n                ts,\n                row[\"AirTemp_Max\"],\n                row[\"AirTemp_Min\"],\n                row[\"Rain_Tot\"],\n                row[\"Windspeed_Max\"],\n                row[\"SolarRad_MJ_Tot\"],\n            ),\n        )\n\n    fn = f\"{BASE}/{date.today().year}/ISU_Feel_Hourly.dat\"\n    # If this file does not exist, try the previous year's file\n    if not os.path.isfile(fn):\n        fn = f\"{BASE}/{date.today().year - 1}/ISU_Feel_Hourly.dat\"\n        if not os.path.isfile(fn):\n            LOG.warning(\"Double failure to find %s\", fn)\n            return\n    df = pd.read_csv(\n        fn, header=0, skiprows=[0, 2, 3], quotechar='\"', on_bad_lines=\"warn\"\n    )\n\n    for _, row in df.iterrows():\n        ts = datetime.strptime(row[\"TIMESTAMP\"][:13], \"%Y-%m-%d %H\").replace(\n            tzinfo=CST\n        )\n        if ts <= hstart:\n            continue\n        LOG.info(\"Hourly ingest: %s\", ts)\n        # We have to do this because the data is in UTC-6\n        ob = Observation(\"OT0011\", \"OT\", ts)\n        ob.data[\"tmpf\"] = c2f(row[\"AirTemp_Avg\"])\n        ob.data[\"relh\"] = row[\"RH_Avg\"]\n        ob.data[\"drct\"] = row[\"WindDir_Avg\"]\n        ob.data[\"sknt\"] = convert_value(row[\"Windspeed_Avg\"], \"mps\", \"knots\")\n        ob.data[\"srad\"] = row[\"SolarRad_W_Avg\"]\n        ob.data[\"phour\"] = convert_value(row[\"Rain_Tot\"], \"mm\", \"inch\")\n        ob.save(icursor)\n\n        cursor.execute(\n            \"\"\"\n            INSERT into feel_data_hourly(\n            valid, BattVolt_Avg, PanTemp_Avg, AirTemp_Avg,\n            RH_Avg, sat_vp_Avg, act_vp_Avg, WindDir_Avg, Windspeed_Avg,\n            SolarRad_mV_Avg, SolarRad_W_Avg, Soil_Temp_5_Avg, Rain_Tot,\n            LWS1_Avg, LWS2_Avg, LWS3_Avg, LWS1_Ohms, LWS2_Ohms,\n            LWS3_Ohms, LWS1_Ohms_Hst, LWS2_Ohms_Hst, LWS3_Ohms_Hst) VALUES\n            (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,\n            %s, %s, %s, %s, %s, %s, %s, %s)\n        \"\"\",\n            (\n                ts,\n                row[\"BattVolt_Avg\"],\n                row[\"PanTemp_Avg\"],\n                row[\"AirTemp_Avg\"],\n                row[\"RH_Avg\"],\n                row[\"sat_vp_Avg\"],\n                row[\"act_vp_Avg\"],\n                row[\"WindDir_Avg\"],\n                row[\"Windspeed_Avg\"],\n                row[\"SolarRad_mV_Avg\"],\n                row[\"SolarRad_W_Avg\"],\n                row[\"Soil_Temp_5_Avg\"],\n                row[\"Rain_Tot\"],\n                row[\"LWS1_Avg\"],\n                row[\"LWS2_Avg\"],\n                row[\"LWS3_Avg\"],\n                row[\"LWS1_Ohms\"],\n                row[\"LWS2_Ohms\"],\n                row[\"LWS3_Ohms\"],\n                row[\"LWS1_Ohms_Hst\"],\n                row[\"LWS2_Ohms_Hst\"],\n                row[\"LWS3_Ohms_Hst\"],\n            ),\n        )\n\n    icursor.close()\n    iconn.commit()\n    iconn.close()\n\n\ndef main():\n    \"\"\"Go Main\"\"\"\n    pgconn = get_dbconn(\"other\")\n    cursor = pgconn.cursor()\n    ingest(cursor)\n    cursor.close()\n    pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/other/parse0006.py",
    "content": "\"\"\"Hacky parsers\"\"\"\n\nimport os\nimport sys\nfrom datetime import datetime\nfrom zoneinfo import ZoneInfo\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.observation import Observation\nfrom pyiem.util import convert_value\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    pgconn = get_dbconn(\"iem\")\n    icursor = pgconn.cursor()\n\n    now = datetime.now().replace(tzinfo=ZoneInfo(\"America/Chicago\"))\n\n    fn = f\"/mesonet/ARCHIVE/data/{now:%Y/%m/%d}/text/ot/ot0006.dat\"\n\n    if not os.path.isfile(fn):\n        return\n    with open(fn, encoding=\"ascii\") as fh:\n        lines = fh.readlines()\n    line = lines[-1]\n\n    # January 17, 2017 02:57 PM\n    # 35.1 35.8 33.4 92 3 351 14 2:13PM 30.03 0.00 1.12 1.12 68.6 36\n    tokens = line.split(\" \")\n    if len(tokens) != 19:\n        sys.exit(0)\n\n    ts = datetime.strptime(\" \".join(tokens[:5]), \"%B %d, %Y %I:%M %p\")\n\n    ts = now.replace(\n        year=ts.year,\n        month=ts.month,\n        day=ts.day,\n        hour=ts.hour,\n        minute=ts.minute,\n    )\n\n    iemob = Observation(\"OT0006\", \"OT\", ts)\n\n    iemob.data[\"tmpf\"] = float(tokens[5])\n    iemob.data[\"relh\"] = float(tokens[8])\n    iemob.data[\"sknt\"] = convert_value(float(tokens[9]), \"mile / hour\", \"knot\")\n    iemob.data[\"drct\"] = tokens[10]\n    iemob.data[\"alti\"] = float(tokens[13])\n    iemob.data[\"pday\"] = float(tokens[14])\n    iemob.save(icursor)\n\n    icursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/other/parse0010.py",
    "content": "\"\"\"ISU Agronomy Hall Vantage Pro 2 OT0010\"\"\"\n\nimport os\nimport re\nimport sys\nfrom zoneinfo import ZoneInfo\n\nfrom metpy.calc import dewpoint_from_relative_humidity\nfrom metpy.units import units\nfrom pyiem.database import get_dbconnc\nfrom pyiem.observation import Observation\nfrom pyiem.util import convert_value, logger, utc\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    iemaccess, cursor = get_dbconnc(\"iem\")\n\n    valid = utc().astimezone(ZoneInfo(\"America/Chicago\"))\n    fn = valid.strftime(\"/mesonet/ARCHIVE/data/%Y/%m/%d/text/ot/ot0010.dat\")\n\n    if not os.path.isfile(fn):\n        LOG.info(\"missing %s\", fn)\n        sys.exit(0)\n\n    with open(fn, encoding=\"ascii\") as fh:\n        lines = fh.readlines()\n    lastline = lines[-1].strip()\n    tokens = re.split(r\"[\\s+]+\", lastline)\n    if len(tokens) != 19:\n        return\n\n    tparts = re.split(\":\", tokens[3])\n    valid = valid.replace(\n        hour=int(tparts[0]), minute=int(tparts[1]), second=0, microsecond=0\n    )\n\n    iem = Observation(\"OT0010\", \"OT\", valid)\n\n    iem.data[\"tmpf\"] = float(tokens[4])\n    relh = int(tokens[7])\n    if 0 < relh <= 100:\n        iem.data[\"relh\"] = int(tokens[6])\n        iem.data[\"dwpf\"] = (\n            dewpoint_from_relative_humidity(\n                units(\"degF\") * iem.data[\"tmpf\"],\n                units(\"percent\") * iem.data[\"relh\"],\n            )\n            .to(units(\"degF\"))\n            .m\n        )\n    else:\n        LOG.debug(\"relative humidity out of bounds: %s\", relh)\n    iem.data[\"sknt\"] = convert_value(float(tokens[7]), \"mile / hour\", \"knot\")\n    iem.data[\"drct\"] = int(tokens[8])\n    iem.data[\"max_sknt\"] = convert_value(\n        float(tokens[9]), \"mile / hour\", \"knot\"\n    )\n    iem.data[\"alti\"] = float(tokens[11])\n    iem.data[\"pday\"] = float(tokens[12]) / 100.0\n    iem.data[\"srad\"] = float(tokens[17])\n\n    iem.save(cursor)\n\n    cursor.close()\n    iemaccess.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/other/purpleair.py",
    "content": "\"\"\"Ingest the purple air sensor.\n\nCalled from RUN_1MIN.sh\n\"\"\"\n\nimport httpx\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn, sql_helper\nfrom pyiem.observation import Observation\nfrom pyiem.util import logger, utc\n\nLOG = logger()\nXREF = {\n    \"pm2_5_aqi_b\": \"pm2.5_aqi_b\",\n    \"pm2_5_aqi\": \"pm2.5_aqi\",\n}\n\n\ndef save_other(data):\n    \"\"\"Write to the database.\"\"\"\n    for key, val in XREF.items():\n        data[key] = data[val]\n    data[\"station\"] = \"OT0017\"\n    data[\"valid\"] = utc()\n    with get_sqlalchemy_conn(\"other\") as conn:\n        # retrieve all the columns within the purpleair table\n        res = conn.execute(\n            sql_helper(\n                \"SELECT column_name FROM information_schema.columns \"\n                \"WHERE table_name = 'purpleair' and table_schema = 'public'\"\n            )\n        )\n        columns = [row[0] for row in res]\n        # do a bulk insert\n        vals = [f\":{x}\" for x in columns]\n        conn.execute(\n            sql_helper(\n                f\"insert into purpleair ({','.join(columns)}) \"\n                f\"values ({','.join(vals)}) \"\n            ),\n            data,\n        )\n        conn.commit()\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    with httpx.Client() as client:\n        try:\n            resp = client.get(\n                \"http://airqual.geol.iastate.edu/json?live=false\", timeout=30\n            )\n            resp.raise_for_status()\n            data = resp.json()\n        except Exception as exp:\n            # System is flakey, this turns down the email noise some\n            lvl = LOG.warning if utc().minute > 50 else LOG.info\n            lvl(exp)\n            return\n\n    save_other(data)\n\n    ob = Observation(\"OT0017\", \"OT\", utc())\n    ob.data[\"tmpf\"] = data[\"current_temp_f\"]\n    ob.data[\"relh\"] = data[\"current_humidity\"]\n    ob.data[\"dwpf\"] = data[\"current_dewpoint_f\"]\n    ob.data[\"pres\"] = data[\"pressure\"]\n    conn, cursor = get_dbconnc(\"iem\")\n    ob.save(cursor)\n    cursor.close()\n    conn.commit()\n    conn.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/parse0002.py",
    "content": "\"\"\"Quick and Dirty to get the ISUMET station data into the DB\"\"\"\n\nimport os\nimport re\nimport sys\nfrom zoneinfo import ZoneInfo\n\nfrom pyiem.database import get_dbconnc\nfrom pyiem.observation import Observation\nfrom pyiem.util import convert_value, utc\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    valid = utc().astimezone(ZoneInfo(\"America/Chicago\"))\n    fn = valid.strftime(\"/mesonet/ARCHIVE/data/%Y/%m/%d/text/ot/ot0002.dat\")\n\n    if not os.path.isfile(fn):\n        sys.exit()\n\n    with open(fn, encoding=\"ascii\") as fh:\n        lines = fh.readlines()\n    lastline = lines[-1]\n    tokens = re.split(r\"[\\s+]+\", lastline)\n\n    tparts = re.split(\":\", tokens[4])\n    valid = valid.replace(\n        hour=int(tparts[0]), minute=int(tparts[1]), second=int(tparts[2])\n    )\n\n    iem = Observation(\"OT0002\", \"OT\", valid)\n\n    sknt = convert_value(float(tokens[8]), \"mile / hour\", \"knot\")\n\n    iem.data[\"sknt\"] = sknt\n    iem.data[\"drct\"] = tokens[9]\n    iem.data[\"tmpf\"] = tokens[7]\n\n    iemaccess, cursor = get_dbconnc(\"iem\")\n    iem.save(cursor)\n    cursor.close()\n    iemaccess.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/rwis/process_rwis.py",
    "content": "\"\"\"Process the IDOT RWIS Data files\"\"\"\n\nimport json\nimport os\nimport subprocess\nimport sys\nfrom datetime import datetime, timedelta, timezone\n\nimport httpx\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.observation import Observation\nfrom pyiem.tracker import TrackerEngine\nfrom pyiem.util import convert_value, exponential_backoff, logger, utc\n\nLOG = logger()\nNT = NetworkTable(\"IA_RWIS\", only_online=False)\nREMOTE2NWSLI = {str(NT.sts[sid][\"remote_id\"]): sid for sid in NT.sts}\nRWIS2METAR = {\n    \"00\": \"XADA\",\n    \"01\": \"XALG\",\n    \"02\": \"XATN\",\n    \"03\": \"XALT\",\n    \"04\": \"XAME\",\n    \"05\": \"XANK\",\n    \"06\": \"XAVO\",\n    \"07\": \"XBUR\",\n    \"08\": \"XCAR\",\n    \"09\": \"XCDR\",\n    \"10\": \"XCID\",\n    \"11\": \"XCEN\",\n    \"12\": \"XCOU\",\n    \"13\": \"XCRE\",\n    \"14\": \"XDAV\",\n    \"15\": \"XDEC\",\n    \"16\": \"XDSM\",\n    \"17\": \"XDES\",\n    \"18\": \"XDST\",\n    \"19\": \"XDEW\",\n    \"20\": \"XDUB\",\n    \"21\": \"XFOD\",\n    \"22\": \"XGRI\",\n    \"23\": \"XIAC\",\n    \"24\": \"XIOW\",\n    \"25\": \"XJEF\",\n    \"26\": \"XLEO\",\n    \"27\": \"XMAN\",\n    \"28\": \"XMAQ\",\n    \"29\": \"XMAR\",\n    \"30\": \"XMCW\",\n    \"31\": \"XMIS\",\n    \"32\": \"XMOU\",\n    \"33\": \"XNEW\",\n    \"34\": \"XONA\",\n    \"35\": \"XOSC\",\n    \"36\": \"XOTT\",\n    \"37\": \"XPEL\",\n    \"38\": \"XRED\",\n    \"39\": \"XSID\",\n    \"40\": \"XSIG\",\n    \"41\": \"XSIO\",\n    \"42\": \"XSPE\",\n    \"43\": \"XSTO\",\n    \"44\": \"XTIP\",\n    \"45\": \"XURB\",\n    \"46\": \"XWAT\",\n    \"47\": \"XWIL\",\n    \"48\": \"XWBG\",\n    \"49\": \"XHAN\",\n    \"50\": \"XSBI\",\n    \"51\": \"XIGI\",\n    \"52\": \"XCRI\",\n    \"53\": \"XCFI\",\n    \"54\": \"XSYI\",\n    \"55\": \"XBFI\",\n    \"56\": \"XDYI\",\n    \"57\": \"XTMI\",\n    \"58\": \"XPFI\",\n    \"59\": \"XCTI\",\n    \"60\": \"XDNI\",\n    \"61\": \"XQCI\",\n    \"62\": \"XSMI\",\n    \"63\": \"XRWI\",\n    \"64\": \"XETI\",\n    \"65\": \"XCCI\",\n    \"66\": \"XKSI\",\n    \"67\": \"XKNI\",\n    \"68\": \"XCMI\",\n    \"69\": \"XRGI\",\n    \"70\": \"XKYI\",\n    \"71\": \"XGAI\",\n    \"72\": \"XCTI\",\n    \"73\": \"XEYI\",\n    \"74\": \"XSYI\",\n    \"75\": \"XTFI\",\n    \"76\": \"XLSI\",\n    \"77\": \"XVNI\",\n    \"78\": \"XVHI\",\n    \"79\": \"XAWI\",\n    \"80\": \"XARI\",\n    \"81\": \"XBMI\",\n    \"82\": \"XGII\",\n    \"83\": \"XLDI\",\n    \"84\": \"XWMI\",\n    \"85\": \"XMOI\",\n    \"86\": \"XPEI\",\n    \"87\": \"XRII\",\n    \"88\": \"XAII\",\n    \"89\": \"XOUI\",\n    \"90\": \"XPJI\",\n    \"91\": \"XPRI\",\n    \"92\": \"XCGI\",\n    \"93\": \"XHUI\",\n}\n# STATUS 1 is online\nATMOS_URI = (\n    \"https://services.arcgis.com/8lRhdTsQyJpO52F1/arcgis/rest/services/\"\n    \"RWIS_Atmospheric_Data_View/FeatureServer/0/query?where=STATUS%3D1&\"\n    \"f=json&outFields=DATA_LAST_UPDATED,AIR_TEMP,RELATIVE_HUMIDITY,DEW_POINT,\"\n    \"VISIBILITY,AVG_WINDSPEED_KNOTS,MAX_WINDSPEED_KNOTS,WIND_DIRECTION_DEG,\"\n    \"PRECIPITATION_RATE,PRECIPITATION_ACCUMULATION,NWS_ID,RPUID\"\n)\nSURFACE_URI = (\n    \"https://services.arcgis.com/8lRhdTsQyJpO52F1/arcgis/rest/services/\"\n    \"RWIS_Surface_Data_View/FeatureServer/0/query?where=STATUS%3D1&f=json&\"\n    \"outFields=NWS_ID,SURFACE_CONDITION,SURFACE_TEMP,ICE_PERCENTAGE,\"\n    \"FREEZE_TEMP,SENSOR_ID,FrictionIndex,DATA_LAST_UPDATED,RPUID\"\n)\n\n\ndef merge(atmos, surface):\n    \"\"\"Merge the surface data into the atmospheric one, return a dict.\n\n    Args:\n      atmos (DataFrame): atmospherics\n      surface (DataFrame): surface data\n\n    Returns:\n      dictionary of values\n    \"\"\"\n    # Figure out our most recent obs as the RWIS service will only emit online\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        currents = pd.read_sql(\n            \"\"\"\n            select id, valid from current c JOIN stations t\n                on (c.iemid = t.iemid) WHERE t.network = 'IA_RWIS'\n            \"\"\",\n            conn,\n            index_col=\"id\",\n        )\n\n    atmos = atmos.set_index(\"NWS_ID\")\n    # pivot\n    surface[\"SENSOR_ID\"] = surface[\"SENSOR_ID\"].astype(int)\n    surface = surface.pivot(\n        index=\"NWS_ID\",\n        columns=\"SENSOR_ID\",\n        values=[\n            \"valid\",\n            \"SURFACE_CONDITION\",\n            \"SURFACE_TEMP\",\n            \"ICE_PERCENTAGE\",\n            \"FREEZE_TEMP\",\n            \"FrictionIndex\",\n        ],\n    )\n    surface.columns = surface.columns.to_flat_index()\n    df = atmos.join(surface)\n    LOG.debug(\"We have %s rows of data\", len(df.index))\n    data = {}\n    for nwsli, row in df.iterrows():\n        if nwsli not in NT.sts:\n            LOG.debug(\"station %s is unknown to us, skipping\", nwsli)\n            continue\n        data[nwsli] = {\n            \"valid\": row[\"valid\"].to_pydatetime(),\n            \"online\": True,\n            \"tmpf\": row[\"AIR_TEMP\"],\n            \"dwpf\": row[\"DEW_POINT\"],\n            \"relh\": row[\"RELATIVE_HUMIDITY\"],\n            \"sknt\": row[\"AVG_WINDSPEED_KNOTS\"],\n            \"gust\": row[\"MAX_WINDSPEED_KNOTS\"],\n            \"drct\": row[\"WIND_DIRECTION_DEG\"],\n            \"pday\": row[\"PRECIPITATION_ACCUMULATION\"],\n            \"vsby\": row[\"VISIBILITY\"],\n        }\n        for sid in range(4):\n            try:\n                data[nwsli][f\"scond{sid}\"] = row[(\"SURFACE_CONDITION\", sid)]\n                data[nwsli][f\"tsf{sid}\"] = row[(\"SURFACE_TEMP\", sid)]\n            except KeyError as exp:\n                LOG.info(\"KeyError raised for nwsli: '%s' %s\", nwsli, exp)\n    for sid in NT.sts:\n        if sid not in data and sid in currents.index:\n            LOG.info(\"station %s is missing, adding\", sid)\n            data[sid] = {\"valid\": currents.at[sid, \"valid\"], \"online\": False}\n    return data\n\n\ndef do_iemtracker(obs):\n    \"\"\"Iterate over the obs and do IEM Tracker related activities\"\"\"\n    threshold = utc() - timedelta(hours=3)\n    iem_pgconn, icursor = get_dbconnc(\"iem\")\n    portfolio_pgconn, pcursor = get_dbconnc(\"portfolio\")\n    tracker = TrackerEngine(icursor, pcursor)\n    tracker.process_network(obs, \"iarwis\", NT, threshold)\n    tracker.send_emails()\n    iem_pgconn.commit()\n    portfolio_pgconn.commit()\n\n\ndef METARtemp(val):\n    \"\"\"convert temp to METAR\"\"\"\n    f_temp = float(val)\n    i_temp = int(round(f_temp, 0))\n    f1_temp = int(round(f_temp * 10.0, 0))\n    if i_temp < 0:\n        i_temp = 0 - i_temp\n        m_temp = \"M%02i\" % (i_temp,)\n    else:\n        m_temp = \"%02i\" % (i_temp,)\n\n    if f1_temp < 0:\n        t_temp = \"1%03i\" % (0 - f1_temp,)\n    else:\n        t_temp = \"0%03i\" % (f1_temp,)\n\n    return m_temp, t_temp\n\n\ndef METARwind(sknt, drct, gust):\n    \"\"\"convert to METAR\"\"\"\n    s = \"\"\n    d5 = drct\n    if str(d5)[-1] == \"5\":\n        d5 -= 5\n    s += \"%03.0f%02.0f\" % (d5, sknt)\n    if gust is not None:\n        s += \"G%02.0f\" % (gust,)\n    s += \"KT\"\n    return s\n\n\ndef gen_metars(obs, filename, convids=False):\n    \"\"\"Create METAR Data files\n\n    Args:\n      obs (list): list of dictionaries with obs in them\n      filename (str): filename to write data to\n      convids (bool): should we use special logic for ID conversion\n\n    \"\"\"\n    mtime = utc().strftime(\"%d%H%M\")\n    thres = utc() - timedelta(hours=3)\n    with open(filename, \"w\", encoding=\"utf-8\") as fp:  # skipcq\n        fp.write(\"\\001\\015\\015\\012001\\n\")\n        fp.write(f\"SAUS43 KDMX {mtime}\\015\\015\\012METAR\\015\\015\\012\")\n        for sid in obs:\n            ob = obs[sid]\n            if ob[\"valid\"] < thres:\n                continue\n            if sid in [\"RIOI4\", \"ROSI4\", \"RSMI4\", \"RMCI4\"]:\n                continue\n            metarid = sid[:4]\n            remoteid = NT.sts[sid][\"remote_id\"]\n            if remoteid is None:\n                LOG.info(\"nwsli: %s is unknown remote_id\", sid)\n                continue\n            if convids:\n                metarid = RWIS2METAR.get(f\"{remoteid:02.0f}\", \"XXXX\")\n            temptxt = \"\"\n            t_temptxt = \"\"\n            windtxt = \"\"\n            if ob.get(\"sknt\") is not None and ob.get(\"drct\") is not None:\n                windtxt = METARwind(ob[\"sknt\"], ob[\"drct\"], ob.get(\"gust\"))\n            if obs.get(\"tmpf\") is not None and obs.get(\"dwpf\") is not None:\n                m_tmpc, t_tmpc = METARtemp(\n                    convert_value(ob[\"tmpf\"], \"degF\", \"degC\")\n                )\n                m_dwpc, t_dwpc = METARtemp(\n                    convert_value(ob[\"dwpf\"], \"degF\", \"degC\")\n                )\n                temptxt = \"%s/%s\" % (m_tmpc, m_dwpc)\n                t_temptxt = \"T%s%s \" % (t_tmpc, t_dwpc)\n            fp.write(\n                (\"%s %s %s %s RMK AO2 %s%s\\015\\015\\012\")\n                % (\n                    metarid,\n                    ob[\"valid\"].strftime(\"%d%H%MZ\"),\n                    windtxt,\n                    temptxt,\n                    t_temptxt,\n                    \"=\",\n                )\n            )\n\n        fp.write(\"\\015\\015\\012\\003\")\n\n\ndef update_iemaccess(obs):\n    \"\"\"Update the IEMAccess database\"\"\"\n    for sid in obs:\n        # FIXME\n        pgconn, icursor = get_dbconnc(\"iem\")\n        ob = obs[sid]\n        iemob = Observation(sid, \"IA_RWIS\", ob[\"valid\"])\n        for varname in ob:\n            if varname == \"valid\":\n                continue\n            # Don't insert NaN values into iemaccess\n            thisval = ob.get(varname)\n            if thisval is None:\n                continue\n            # strings fail the isnan check\n            if isinstance(thisval, str):\n                iemob.data[varname] = ob.get(varname)\n            elif not np.isnan(thisval):\n                iemob.data[varname] = ob.get(varname)\n        if not iemob.save(icursor):\n            LOG.info(\"Access update for %s failed\", sid)\n        icursor.close()\n        pgconn.commit()\n\n\ndef process_features(features):\n    \"\"\"Make a dataframe.\"\"\"\n    rows = []\n    for feat in features:\n        props = feat[\"attributes\"]\n        props[\"valid\"] = (\n            datetime(1970, 1, 1)\n            + timedelta(seconds=props[\"DATA_LAST_UPDATED\"] / 1000.0)\n        ).replace(tzinfo=timezone.utc)\n        rows.append(props)\n    return pd.DataFrame(rows).replace({9999: np.nan})\n\n\ndef fetch(uri: str) -> pd.DataFrame:\n    \"\"\"Download the files we need\"\"\"\n    res = exponential_backoff(httpx.get, uri, timeout=30)\n    if res is None:\n        LOG.info(\"failed to fetch %s\", uri)\n        sys.exit()\n    data = res.json()\n    if \"features\" not in data:\n        LOG.warning(\n            \"Got status_code: %s for %s, invalid result of: %s\",\n            res.status_code,\n            uri,\n            json.dumps(data, sort_keys=True, indent=4, separators=(\",\", \": \")),\n        )\n        sys.exit()\n    df = process_features(data[\"features\"])\n    # fillout / cross check NWS_ID\n    for idx, row in df.iterrows():\n        if row[\"NWS_ID\"] is None:\n            if row[\"RPUID\"] in REMOTE2NWSLI:\n                df.at[idx, \"NWS_ID\"] = REMOTE2NWSLI[row[\"RPUID\"]]\n                continue\n            LOG.info(\"RPUID %s is unknown\", row[\"RPUID\"])\n            continue\n        if REMOTE2NWSLI.get(row[\"RPUID\"], \"\") != row[\"NWS_ID\"]:\n            LOG.info(\n                \"NWS_ID mismatch remote: %s IEM: %s\",\n                row[\"NWS_ID\"],\n                REMOTE2NWSLI.get(row[\"RPUID\"]),\n            )\n    return df\n\n\ndef ldm_insert_metars(fn1, fn2):\n    \"\"\"Insert into LDM please\"\"\"\n    for fn in [fn1, fn2]:\n        proc = subprocess.Popen(\n            [\"pqinsert\", \"-p\", fn.replace(\"/tmp/\", \"\"), fn],\n            stderr=subprocess.PIPE,\n            stdout=subprocess.PIPE,\n        )\n        os.waitpid(proc.pid, 0)\n        os.unlink(fn)\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    atmos = fetch(ATMOS_URI)\n    surface = fetch(SURFACE_URI)\n    if atmos.empty or surface.empty:\n        LOG.info(\n            \"FAIL, empty dataframe atmos sz:%s, surface sz:%s\",\n            len(atmos.index),\n            len(surface.index),\n        )\n        return\n    # Ensure SENSOR_ID is valid\n    surface = surface[surface[\"SENSOR_ID\"].notna()]\n    # Dedup\n    surface = surface.groupby([\"NWS_ID\", \"SENSOR_ID\"]).first().reset_index()\n    obs = merge(atmos, surface)\n    do_iemtracker(obs)\n    # Remove back out those stations that are offline\n    obs = {k: v for k, v in obs.items() if v[\"online\"]}\n\n    ts = utc().strftime(\"%d%H%M\")\n    fn1 = f\"/tmp/IArwis{ts}.sao\"\n    fn2 = f\"/tmp/IA.rwis{ts}.sao\"\n    gen_metars(obs, fn1, False)\n    gen_metars(obs, fn2, True)\n    ldm_insert_metars(fn1, fn2)\n\n    update_iemaccess(obs)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/rwis/process_rwis_dtn.py",
    "content": "\"\"\"Ingest Iowa DOT RWIS data provided by DTN.\"\"\"\n\nimport httpx\nimport numpy as np\nimport pandas as pd\nfrom metpy.units import masked_array, units\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.observation import Observation\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import get_properties, logger, utc\n\nLOG = logger()\nDBCONN = get_dbconn(\"iem\")\nNT = NetworkTable(\"IA_RWIS\")\n\n\ndef process(cursor, df, nwsli):\n    \"\"\"Process our data.\"\"\"\n    for _, row in df.iterrows():\n        ob = Observation(nwsli, \"IA_RWIS\", row[\"valid\"])\n        ob.data[\"tmpf\"] = row[\"temperature\"]\n        ob.data[\"dwpf\"] = row[\"dewPoint\"]\n        ob.data[\"relh\"] = row[\"relativeHumidity\"]\n        ob.data[\"vsby\"] = row[\"visibility\"]\n        ob.data[\"drct\"] = row[\"windDirection\"]\n        ob.data[\"gust\"] = row[\"gust\"]\n        ob.data[\"sknt\"] = row[\"sknt\"]\n        ob.save(cursor, force_current_log=True)\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    # prevent a clock drift issue\n    sts = utc(2020, 8, 10, 16)\n    ets = utc(2020, 8, 11, 3)\n    edate = ets.strftime(ISO8601)\n    sdate = sts.strftime(ISO8601)\n    props = get_properties()\n    apikey = props[\"dtn.apikey\"]\n    headers = {\"accept\": \"application/json\", \"apikey\": apikey}\n    for nwsli in NT.sts:\n        idot_id = NT.sts[nwsli][\"remote_id\"]\n        if idot_id is None:\n            continue\n        URI = (\n            f\"https://api.dtn.com/weather/stations/IA{idot_id:03}/\"\n            f\"atmospheric-observations?startDate={sdate}\"\n            f\"&endDate={edate}&units=us&precision=0\"\n        )\n\n        resp = httpx.get(URI, timeout=60, headers=headers)\n        if resp.status_code != 200:\n            LOG.info(\"Fetch %s got status_code %s\", URI, resp.status_code)\n            continue\n        res = resp.json()\n        if not res:\n            continue\n        try:\n            df = pd.DataFrame(res)\n        except Exception as exp:\n            LOG.info(\n                \"DataFrame construction failed with %s\\n res: %s\", exp, res\n            )\n            continue\n        if df.empty:\n            continue\n        df = df.fillna(np.nan)\n        df[\"valid\"] = pd.to_datetime(df[\"utcTime\"])\n        df[\"gust\"] = (\n            masked_array(df[\"windGust\"].values, units(\"miles per hour\"))\n            .to(units(\"knots\"))\n            .m\n        )\n        df[\"sknt\"] = (\n            masked_array(df[\"windSpeed\"].values, units(\"miles per hour\"))\n            .to(units(\"knots\"))\n            .m\n        )\n        df = df.replace({np.nan: None})\n        cursor = DBCONN.cursor()\n        process(cursor, df, nwsli)\n        cursor.close()\n        DBCONN.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/rwis/process_soil.py",
    "content": "\"\"\"Process Soil Data\"\"\"\n\nimport json\nimport sys\nfrom datetime import datetime, timedelta, timezone\n\nimport httpx\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn\nfrom pyiem.util import exponential_backoff, logger\n\nLOG = logger()\nURI = (\n    \"https://services.arcgis.com/8lRhdTsQyJpO52F1/arcgis/rest/services/\"\n    \"RWIS_SubSurface_All_View/FeatureServer/0/query?where=TEMPERATURE<999&\"\n    \"f=json&outFields=NWS_ID,TEMPERATURE,DATA_LAST_UPDATED,SENSOR_ID\"\n)\n\n\ndef clean2(val):\n    \"\"\"Clean again.\"\"\"\n    return None if pd.isnull(val) else val\n\n\ndef clean(val):\n    \"\"\"Clean our value.\"\"\"\n    if val is None:\n        return None\n    try:\n        val = float(val)\n        if val > 200 or val < -50:\n            val = None\n    except ValueError:\n        val = None\n    return val\n\n\ndef process_features(features):\n    \"\"\"Process this feature.\"\"\"\n    rows = []\n    for feat in features:\n        props = feat[\"attributes\"]\n        if props[\"NWS_ID\"] is None:\n            LOG.info(\"Skipping null NWS_ID %s\", feat)\n            continue\n        valid = (\n            datetime(1970, 1, 1)\n            + timedelta(seconds=props[\"DATA_LAST_UPDATED\"] / 1000.0)\n        ).replace(tzinfo=timezone.utc)\n        rows.append(\n            {\n                \"nwsli\": props[\"NWS_ID\"],\n                \"tmpf\": clean(props.get(\"TEMPERATURE\")),\n                \"valid\": valid,\n                \"sensor_id\": props[\"SENSOR_ID\"],\n            }\n        )\n    if not rows:\n        LOG.info(\"No data, aborting\")\n        sys.exit()\n    return pd.DataFrame(rows).set_index(\"nwsli\")\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    resp = exponential_backoff(httpx.get, URI, timeout=30)\n    if resp is None:\n        LOG.info(\"failed to fetch %s\", URI)\n        return\n    data = resp.json()\n    if \"features\" not in data:\n        LOG.info(\n            \"Got status_code: %s, invalid result of: %s\",\n            resp.status_code,\n            json.dumps(data, sort_keys=True, indent=4, separators=(\",\", \": \")),\n        )\n        return\n    df = process_features(data[\"features\"])\n    pgconn = get_dbconn(\"iem\")\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        xref = pd.read_sql(\n            \"SELECT id, nwsli from rwis_locations\",\n            conn,\n            index_col=\"nwsli\",\n        )\n    df[\"location_id\"] = xref[\"id\"]\n\n    cursor = pgconn.cursor()\n    updates = 0\n    for nwsli, row in df.iterrows():\n        if pd.isnull(row[\"location_id\"]):\n            continue\n        location_id = int(row[\"location_id\"])\n        cursor.execute(\n            \"SELECT valid from rwis_soil_data where sensor_id = %s and \"\n            \"location_id = %s\",\n            (row[\"sensor_id\"], location_id),\n        )\n        if cursor.rowcount == 0:\n            LOG.warning(\"adding soil entry %s %s\", nwsli, row[\"sensor_id\"])\n            cursor.execute(\n                \"INSERT into rwis_soil_data (valid, sensor_id, location_id) \"\n                \"VALUES ('1980-01-01', %s, %s) RETURNING valid\",\n                (row[\"sensor_id\"], location_id),\n            )\n        current = cursor.fetchone()[0]\n        if row[\"valid\"] <= current:\n            continue\n        cursor.execute(\n            \"\"\"\n            UPDATE rwis_soil_data SET valid = %s, temp = %s, updated = now()\n            WHERE sensor_id = %s and location_id = %s\n            \"\"\",\n            (\n                row[\"valid\"],\n                clean2(row[\"tmpf\"]),\n                row[\"sensor_id\"],\n                location_id,\n            ),\n        )\n        updates += 1\n    LOG.info(\"updated %s rows\", updates)\n    cursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/rwis/process_traffic.py",
    "content": "\"\"\"Ingest Iowa DOT RWIS data provided by DTN.\n\ncalled from RUN_10_AFTER.sh\n\"\"\"\n\nfrom datetime import timedelta\n\nimport httpx\nimport pandas as pd\nfrom pyiem.database import get_dbconnc\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import get_properties, logger, utc\n\nLOG = logger()\nNT = NetworkTable(\"IA_RWIS\")\n\n\ndef load_metadata():\n    \"\"\"Load up what we know about these traffic sites.\"\"\"\n    meta = {}\n    conn, icursor = get_dbconnc(\"iem\")\n    icursor.execute(\n        \"SELECT location_id, lane_id, sensor_id from rwis_traffic_meta\"\n    )\n    for row in icursor:\n        key = f\"{row['location_id']}_{row['lane_id']}\"\n        meta[key] = row[\"sensor_id\"]\n    icursor.close()\n    conn.close()\n    return meta\n\n\ndef create_sensor(cursor, key, row, meta):\n    \"\"\"create an entry.\"\"\"\n    cursor.execute(\n        \"INSERT into rwis_traffic_sensors(location_id, lane_id, name) \"\n        \"VALUES (%s, %s, %s) RETURNING id\",\n        (\n            row[\"stationId\"].replace(\"IA\", \"\"),\n            row[\"sensorId\"],\n            row[\"sensorName\"],\n        ),\n    )\n    sensor_id = cursor.fetchone()[\"id\"]\n    LOG.info(\n        \"Adding RWIS Traffic Sensor: %s Lane: %s Name: %s DB_SENSOR_ID: %s\",\n        row[\"stationId\"],\n        row[\"sensorId\"],\n        row[\"sensorName\"],\n        sensor_id,\n    )\n    meta[key] = sensor_id\n    cursor.execute(\n        \"INSERT into rwis_traffic_data(sensor_id) VALUES (%s)\", (sensor_id,)\n    )\n\n\ndef process(cursor, df, meta):\n    \"\"\"Process our data.\"\"\"\n    rows = []\n    for _, row in df.iterrows():\n        data = dict(row)\n        if \"stationId\" not in data:\n            LOG.info(\"hit data quirk with row %s\", row)\n            continue\n        key = f\"{int(row['stationId'].replace('IA', ''))}_{row['sensorId']}\"\n        if key not in meta:\n            create_sensor(cursor, key, row, meta)\n        data[\"sensor_id\"] = meta[key]\n        rows.append(data)\n    # 'volume',\n    # 'occupancy',\n    # 'normalLength', 'longLength', 'unclassifiedLength', 'qcFailures'\n    cursor.executemany(\n        \"\"\"\n        UPDATE rwis_traffic_data SET valid = %(utcTime)s,\n        avg_speed = %(avgSpeed)s, normal_vol = %(normalLength)s,\n        long_vol = %(longLength)s,  occupancy = %(occupancy)s, updated = now()\n        WHERE sensor_id = %(sensor_id)s and valid < %(utcTime)s\n        \"\"\",\n        rows,\n    )\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    # prevent a clock drift issue\n    ets = utc() - timedelta(minutes=1)\n    sts = ets - timedelta(hours=4)\n    edate = ets.strftime(ISO8601)\n    sdate = sts.strftime(ISO8601)\n    meta = load_metadata()\n    props = get_properties()\n    apikey = props[\"dtn.apikey\"]\n    headers = {\"accept\": \"application/json\", \"apikey\": apikey}\n    for nwsli in NT.sts:\n        idot_id = NT.sts[nwsli][\"remote_id\"]\n        if idot_id is None:\n            continue\n        URI = (\n            f\"https://api.dtn.com/weather/stations/IA{idot_id:03}/\"\n            f\"traffic-observations?startDate={sdate}\"\n            f\"&endDate={edate}&units=us&precision=0\"\n        )\n\n        resp = httpx.get(URI, timeout=60, headers=headers)\n        if resp.status_code != 200:\n            # HACK\n            if idot_id < 73:\n                LOG.info(\"Fetch %s got status_code %s\", URI, resp.status_code)\n            continue\n        res = resp.json()\n        if not res:\n            continue\n        try:\n            df = pd.DataFrame(res)\n        except Exception as exp:\n            LOG.info(\n                \"DataFrame construction failed with %s\\n res: %s\", exp, res\n            )\n            continue\n        conn, cursor = get_dbconnc(\"iem\")\n        process(cursor, df, meta)\n        cursor.close()\n        conn.commit()\n        conn.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/soilm_ingest.py",
    "content": "\"\"\"\n   LEGACY ISU SOIL MOISTURE INGEST!\n\nRun from RUN_5MIN.sh\n\"\"\"\n\nimport io\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import date, datetime, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport numpy as np\nimport pandas as pd\nfrom metpy.calc import dewpoint_from_relative_humidity\nfrom metpy.units import units\nfrom pyiem.database import get_dbconnc\nfrom pyiem.observation import Observation\nfrom pyiem.util import c2f, convert_value, logger, mm2inch, utc\n\nLOG = logger()\n\nEVENTS = {\"reprocess_solar\": False, \"days\": [], \"reprocess_temps\": False}\nVARCONV = {\n    \"tsoil_c_avg\": \"t4_c_avg\",\n    \"timestamp\": \"valid\",\n    \"vwc_avg6in\": \"vwc4\",  # Unique to Masonville, call it 4 inch\n    \"temp_avg6in\": \"t4_c_avg\",  # Unique to Masonville\n    \"ec6in\": \"ec4\",  # Unique to Masonville\n    \"vwc12_avg\": \"vwc_12_avg\",\n    \"vwc24_avg\": \"vwc_24_avg\",\n    \"vwc50_avg\": \"vwc_50_avg\",\n    \"calcvwc12_avg\": \"vwc12\",\n    \"calcvwc24_avg\": \"vwc24\",\n    \"calcvwc50_avg\": \"vwc50\",\n    \"outofrange06\": \"p06outofrange\",\n    \"outofrange12\": \"p12outofrange\",\n    \"outofrange24\": \"p24outofrange\",\n    \"outofrange50\": \"p50outofrange\",\n    \"ws_ms_s_wvt\": \"ws_mps_s_wvt\",\n    \"bp_mmhg_avg\": \"bpres_avg\",\n    \"bp_mb_avg\": \"bpres_avg\",\n    \"rh\": \"rh_avg\",\n    \"ec12in\": \"ec12\",\n    \"ec_12in\": \"ec12\",\n    \"ec24in\": \"ec24\",\n    \"ec_24in\": \"ec24\",\n    \"ec50in\": \"ec50\",\n    \"ec4in\": \"ec4\",\n}\nVARCONV_JEFF = {\n    \"ec_2in\": \"sv_ec2\",\n    \"ec_4in\": \"sv_ec4\",\n    \"ec_8in\": \"sv_ec8\",\n    \"ec_12in\": \"sv_ec12\",\n    \"ec_16in\": \"sv_ec16\",\n    \"ec_20in\": \"sv_ec20\",\n    \"ec_24in\": \"sv_ec24\",\n    \"ec_30in\": \"sv_ec30\",\n    \"ec_40in\": \"sv_ec40\",\n    \"vwc_2in\": \"sv_vwc2\",\n    \"vwc_4in\": \"sv_vwc4\",\n    \"vwc_8in\": \"sv_vwc8\",\n    \"vwc_12in\": \"sv_vwc12\",\n    \"vwc_16in\": \"sv_vwc16\",\n    \"vwc_20in\": \"sv_vwc20\",\n    \"vwc_24in\": \"sv_vwc24\",\n    \"vwc_30in\": \"sv_vwc30\",\n    \"vwc_40in\": \"sv_vwc40\",\n    \"vwc_avg2in\": \"sv_vwc2\",\n    \"vwc_avg4in\": \"sv_vwc4\",\n    \"vwc_avg8in\": \"sv_vwc8\",\n    \"vwc_avg12in\": \"sv_vwc12\",\n    \"vwc_avg16in\": \"sv_vwc16\",\n    \"vwc_avg20in\": \"sv_vwc20\",\n    \"vwc_avg24in\": \"sv_vwc24\",\n    \"vwc_avg30in\": \"sv_vwc30\",\n    \"vwc_avg40in\": \"sv_vwc40\",\n    \"temp_avg2in\": \"sv_t2\",\n    \"temp_avg4in\": \"sv_t4\",\n    \"temp_avg8in\": \"sv_t8\",\n    \"temp_avg12in\": \"sv_t12\",\n    \"temp_avg16in\": \"sv_t16\",\n    \"temp_avg20in\": \"sv_t20\",\n    \"temp_avg24in\": \"sv_t24\",\n    \"temp_avg30in\": \"sv_t30\",\n    \"temp_avg40in\": \"sv_t40\",\n}\nVARCONV_TPOI4 = {\n    \"temp_avg4in\": \"t4_c_avg\",\n    \"temp_avg12in\": \"t12_c_avg\",\n    \"temp_avg24in\": \"t24_c_avg\",\n    \"vwc_avg4in\": \"vwc4\",\n    \"vwc_avg12in\": \"vwc12\",\n    \"vwc_avg24in\": \"vwc24\",\n}\n\nTSOIL_COLS = [\n    \"t4_c_avg\",\n    \"t6_c_avg\",\n    \"t12_c_avg\",\n    \"t24_c_avg\",\n    \"t50_c_avg\",\n]\nBASE = \"/home/loggernet\"\nSTATIONS = {\n    \"CAMI4\": \"Calumet\",\n    \"BOOI4\": \"AEAFarm\",\n    \"WMNI4\": \"Wellman\",\n    \"SBEI4\": \"Sibley\",\n    \"NASI4\": \"Nashua\",\n    \"OKLI4\": \"Lewis\",\n    \"WTPI4\": \"WestPoint\",\n    \"DONI4\": \"Doon\",\n    \"KNAI4\": \"Kanawha\",\n    \"GREI4\": \"Greenfield\",\n    \"NWLI4\": \"Newell\",\n    \"AEEI4\": \"Ames\",\n    \"CNAI4\": \"Castana\",\n    \"CHAI4\": \"Chariton\",\n    \"CRFI4\": \"Crawfordsville\",\n    \"FRUI4\": \"Muscatine\",\n    \"CIRI4\": \"CedarRapids\",\n    \"MCSI4\": \"Marcus\",\n    \"AMFI4\": \"AmesFinch\",\n    # Vineyward\n    \"AHTI4\": \"AmesHort\",\n    \"OSTI4\": \"TasselRidge\",\n    \"BNKI4\": \"Bankston\",\n    \"CSII4\": \"Inwood\",\n    \"GVNI4\": \"Glenwood\",\n    \"TPOI4\": \"Masonville\",\n    \"DOCI4\": \"Jefferson\",\n}\nINVERSION = {\n    \"BOOI4\": \"AEA\",\n}\n\n\ndef qcval(df, colname, floor, ceiling):\n    \"\"\"Make sure the value falls within some bounds\"\"\"\n    df.loc[df[colname] < floor, colname] = floor\n    df.loc[df[colname] > ceiling, colname] = ceiling\n    return np.where(\n        np.logical_or(df[colname] == floor, df[colname] == ceiling), \"B\", None\n    )\n\n\ndef qcval2(df, colname, floor, ceiling):\n    \"\"\"Make sure the value falls within some bounds, Null if not\"\"\"\n    df.loc[df[colname] < floor, colname] = np.nan\n    df.loc[df[colname] > ceiling, colname] = np.nan\n    return np.where(pd.isnull(df[colname]), \"B\", None)\n\n\ndef make_time(string):\n    \"\"\"Convert a time in the file to a datetime\"\"\"\n    tstamp = datetime.strptime(string, \"%Y-%m-%d %H:%M:%S\")\n    tstamp = tstamp.replace(tzinfo=ZoneInfo(\"Etc/GMT+6\"))\n    return tstamp\n\n\ndef do_inversion(filename, nwsli):\n    \"\"\"Process Inversion Station Data.\"\"\"\n    fn = f\"{BASE}/{filename}_Inversion_MinSI.dat\"\n    if not os.path.isfile(fn):\n        LOG.info(\"missing filename %s\", fn)\n        return\n    df = pd.read_csv(fn, skiprows=[0, 2, 3], na_values=[\"NAN\"])\n    # convert all columns to lowercase\n    df.columns = map(str.lower, df.columns)\n    df[\"valid\"] = df[\"timestamp\"].apply(make_time)\n    pgconn, cursor = get_dbconnc(\"isuag\")\n    cursor.execute(\n        \"SELECT max(valid) from sm_inversion where station = %s\",\n        (nwsli,),\n    )\n    maxts = cursor.fetchone()[\"max\"]\n    if maxts is not None:\n        df = df[df[\"valid\"] > maxts]\n    for _, row in df.iterrows():\n        cursor.execute(\n            \"INSERT into sm_inversion(station, valid, tair_15_c_avg, \"\n            \"tair_15_c_avg_qc, tair_5_c_avg, tair_5_c_avg_qc, \"\n            \"tair_10_c_avg, tair_10_c_avg_qc, ws_ms_avg, ws_ms_avg_qc, \"\n            \"ws_ms_max, ws_ms_max_qc, duration) VALUES (%s, %s, %s, %s, \"\n            \"%s, %s, %s, %s, %s, %s, %s, %s, 1)\",\n            (\n                nwsli,\n                row[\"valid\"],\n                row[\"t15_avg\"],\n                row[\"t15_avg\"],\n                row[\"t5_avg\"],\n                row[\"t5_avg\"],\n                row[\"t10_avg\"],\n                row[\"t10_avg\"],\n                row[\"ws_ms_avg\"],\n                row[\"ws_ms_avg\"],\n                row[\"ws_ms_max\"],\n                row[\"ws_ms_max\"],\n            ),\n        )\n    LOG.info(\"Inserted %s inversion rows for %s\", len(df.index), nwsli)\n    cursor.close()\n    pgconn.commit()\n\n\ndef common_df_logic(filename, maxts, nwsli, tablename):\n    \"\"\"Our commonality to reading\"\"\"\n    if not os.path.isfile(filename):\n        return None\n\n    df = pd.read_csv(filename, skiprows=[0, 2, 3], na_values=[\"NAN\"])\n    # convert all columns to lowercase\n    df.columns = map(str.lower, df.columns)\n    # rename columns to rectify differences\n    df = df.rename(columns=VARCONV)\n    # extra conversion for Deal's Orchard / Jefferson\n    if nwsli == \"DOCI4\":\n        df = df.rename(columns=VARCONV_JEFF)\n    elif nwsli == \"TPOI4\":\n        df = df.rename(columns=VARCONV_TPOI4)\n    # QC out some bad temp values\n    if tablename == \"sm_daily\" and nwsli in [\"GVNI4\", \"CSII4\"]:\n        for col in [\"tair_c_avg\", \"tair_c_min\", \"tair_c_max\"]:\n            df[col] = np.nan\n    # rain_mm_tot to rain_in_tot\n    for col in [\"rain_mm_tot\", \"rain_mm_2_tot\"]:\n        if col in df.columns:\n            df[col.replace(\"_mm_\", \"_in_\")] = mm2inch(df[col])\n    df = df.drop(\n        [\n            \"rain_mm_tot\",\n            \"rain_mm_2_tot\",\n            \"pa06\",\n            \"pa12\",\n            \"pa24\",\n            \"pa50\",\n            \"rhnans_tot\",\n            \"tairnans_tot\",\n            \"winddir_sd1_wvt\",\n            \"ec4\",\n        ],\n        axis=1,\n        errors=\"ignore\",\n    )\n    if \"ws_mps_s_wvt\" in df.columns:\n        df = df.assign(\n            ws_mph=lambda df_: df_[\"ws_mps_s_wvt\"] * 2.23694,\n        ).drop(\n            columns=[\"ws_mps_s_wvt\"],\n        )\n\n    if tablename == \"sm_minute\":\n        # Storage of how far this covers\n        df[\"duration\"] = 15\n        # slrkw_avg SIC is actually W/m2 over 15 minutes, we want to store as\n        # a total over 15 minutes W/m2 -> kJ/s/m2\n        df[\"slrkj_tot\"] = df[\"slrkw_avg\"] * 60.0 * 15.0 / 1000.0\n        # drop our no longer needed columns\n        df = df.drop(\n            [\n                \"slrkw_avg\",\n                \"slrmj_tot\",\n                \"ws_mps_s_wvt\",\n                \"ws_mph_tmx\",\n                \"pa06\",\n                \"pa12\",\n                \"pa24\",\n                \"pa50\",\n                \"p06outofrange\",\n                \"p12outofrange\",\n                \"p24outofrange\",\n                \"p50outofrange\",\n                \"battv_min\",\n                \"ec6\",\n                \"ec12\",\n                \"ec24\",\n                \"ec50\",\n            ],\n            axis=1,\n            errors=\"ignore\",\n        )\n        # HACK\n        df = df.rename(\n            columns={\n                \"calc_vwc_06_avg\": \"vwc6\",\n                \"vwc_06_avg\": \"vwc6\",\n                \"vwc_12_avg\": \"vwc12\",\n                \"vwc_24_avg\": \"vwc24\",\n                \"vwc_50_avg\": \"vwc50\",\n                \"vwc_avg2in\": \"sv_vwc2\",\n                \"vwc_avg4in\": \"sv_vwc4\",\n                \"vwc_avg8in\": \"sv_vwc8\",\n                \"vwc_avg12in\": \"sv_vwc12\",\n                \"vwc_avg16in\": \"sv_vwc16\",\n                \"vwc_avg20in\": \"sv_vwc20\",\n                \"calc_vwc_12_avg\": \"vwc12\",\n                \"calc_vwc_24_avg\": \"vwc24\",\n                \"calc_vwc_50_avg\": \"vwc50\",\n                \"bpres_avg\": \"bp_mb\",\n            }\n        )\n    df[\"valid\"] = df[\"valid\"].apply(make_time)\n    # drop duplicate valids?\n    df = df.groupby(\"valid\").first().reset_index()\n    if tablename == \"sm_daily\":\n        # Horrible\n        df = df.rename(\n            columns={\n                \"vwc_12_avg\": \"vwc12\",\n                \"vwc_24_avg\": \"vwc24\",\n                \"vwc_50_avg\": \"vwc50\",\n                \"calcvwc12_avg\": \"vwc12\",\n                \"calcvwc24_avg\": \"vwc24\",\n            },\n        )\n        # Max wind speed\n        if \"ws_mps_max\" in df.columns:\n            df = (\n                df.assign(\n                    ws_mph_max=lambda df_: df_[\"ws_mps_max\"] * 2.23694,\n                )\n                .drop(\n                    columns=[\"ws_mps_max\"],\n                )\n                .rename(\n                    columns={\"ws_mps_tmx\": \"ws_mph_tmx\"},\n                    errors=\"ignore\",\n                )\n            )\n\n        # Rework the valid column into the appropriate date\n        df[\"valid\"] = df[\"valid\"].dt.date - timedelta(days=1)\n        # Convert radiation to standardized slrkj_tot\n        df[\"slrkj_tot\"] = df[\"slrmj_tot\"] * 1000.0\n        # drop things we do not need\n        df = df.drop(\n            [\n                \"slrmj_tot\",\n                \"solarradcalc\",\n                \"nancounttot\",\n            ],\n            axis=1,\n            errors=\"ignore\",\n        )\n    if tablename == \"sm_hourly\":\n        # Horrible\n        df = df.rename(\n            columns={\n                \"calcvwc12_avg\": \"vwc12\",\n                \"calcvwc24_avg\": \"vwc24\",\n            },\n        )\n        # Convert radiation to standardized slrkj_tot\n        df[\"slrkj_tot\"] = df[\"slrmj_tot\"] * 1000.0\n        # drop things we do not need\n        df = df.drop(\n            [\n                \"slrkw_avg\",\n                \"solarradcalc\",\n                \"slrmj_tot\",\n                \"p06outofrange\",\n                \"p12outofrange\",\n                \"p24outofrange\",\n                \"p50outofrange\",\n            ],\n            axis=1,\n            errors=\"ignore\",\n        )\n    df = df[df[\"valid\"] > maxts].copy()\n    if df.empty:\n        return None\n\n    df = df.drop(\"record\", axis=1)\n    # Create _qc and _f columns\n    for colname in df.columns:\n        if colname in [\"valid\", \"duration\"]:\n            continue\n        df[f\"{colname}_qc\"] = df[colname]\n        if colname.startswith(\"vwc\"):\n            df[f\"{colname}_f\"] = qcval(df, f\"{colname}_qc\", 0.01, 0.7)\n        elif colname in TSOIL_COLS:\n            df[f\"{colname}_f\"] = qcval2(df, f\"{colname}_qc\", -20.0, 37.0)\n        else:\n            df[f\"{colname}_f\"] = None\n\n    df[\"station\"] = nwsli\n    if \"ws_mph_tmx\" in df.columns:\n        df[\"ws_mph_tmx\"] = df[\"ws_mph_tmx\"].apply(make_time)\n    output = io.StringIO()\n    df.to_csv(output, sep=\"\\t\", header=False, index=False)\n    output.seek(0)\n    pgconn, icursor = get_dbconnc(\"isuag\")\n    sql = (\n        f\"copy {tablename} ({','.join(df.columns)}) from stdin with null as ''\"\n    )\n    with icursor.copy(sql) as copy:\n        copy.write(output.read())\n    icursor.close()\n    pgconn.commit()\n    return df\n\n\ndef m15_process(nwsli, maxts):\n    \"\"\"Process the 15minute file\"\"\"\n    fn = f\"{BASE}/{STATIONS[nwsli]}_Min15SI.dat\"\n    df = common_df_logic(fn, maxts, nwsli, \"sm_minute\")\n    if df is None:\n        return 0\n\n    # Update IEMAccess\n    processed = 0\n    LOG.info(\"processing %s rows from %s\", len(df.index), fn)\n    pgconn, acursor = get_dbconnc(\"iem\")\n    for _i, row in df.iterrows():\n        ob = Observation(nwsli, \"ISUSM\", row[\"valid\"].to_pydatetime())\n        tmpc = units(\"degC\") * row[\"tair_c_avg_qc\"]\n        tmpf = tmpc.to(units(\"degF\")).m\n        relh = units(\"percent\") * row[\"rh_avg_qc\"]\n        if (-39 < tmpf < 140) and (0 < relh.m < 101):\n            ob.data[\"tmpf\"] = tmpf\n            ob.data[\"relh\"] = relh.m\n            ob.data[\"dwpf\"] = (\n                dewpoint_from_relative_humidity(tmpc, relh).to(units(\"degF\")).m\n            )\n        ob.data[\"sknt\"] = convert_value(\n            row[\"ws_mph_qc\"], \"mile / hour\", \"knot\"\n        )\n        ob.data[\"gust\"] = convert_value(\n            row[\"ws_mph_max_qc\"], \"mile / hour\", \"knot\"\n        )\n        ob.data[\"drct\"] = row[\"winddir_d1_wvt_qc\"]\n        if \"t4_c_avg\" in df.columns:\n            ob.data[\"c1tmpf\"] = c2f(row[\"t4_c_avg_qc\"])\n        if \"t12_c_avg\" in df.columns:\n            ob.data[\"c2tmpf\"] = c2f(row[\"t12_c_avg_qc\"])\n        if \"t24_c_avg\" in df.columns:\n            ob.data[\"c3tmpf\"] = c2f(row[\"t24_c_avg_qc\"])\n        if \"t50_c_avg\" in df.columns:\n            ob.data[\"c4tmpf\"] = c2f(row[\"t50_c_avg_qc\"])\n        if \"vwc12\" in df.columns:\n            ob.data[\"c2smv\"] = row[\"vwc12_qc\"] * 100.0\n        if \"vwc24\" in df.columns:\n            ob.data[\"c3smv\"] = row[\"vwc24_qc\"] * 100.0\n        if \"vwc50\" in df.columns:\n            ob.data[\"c4smv\"] = row[\"vwc50_qc\"] * 100.0\n        ob.save(acursor, force_current_log=True)\n        processed += 1\n    acursor.close()\n    pgconn.commit()\n    return processed\n\n\ndef hourly_process(nwsli, maxts):\n    \"\"\"Process the hourly file\"\"\"\n    fn = f\"{BASE}/{STATIONS[nwsli]}_HrlySI.dat\"\n    df = common_df_logic(fn, maxts, nwsli, \"sm_hourly\")\n    if df is None:\n        return 0\n    processed = 0\n    LOG.info(\"processing %s rows from %s\", len(df.index), fn)\n    pgconn, acursor = get_dbconnc(\"iem\")\n    for _i, row in df.iterrows():\n        # Update IEMAccess\n        ob = Observation(nwsli, \"ISUSM\", row[\"valid\"].to_pydatetime())\n        tmpc = units(\"degC\") * row[\"tair_c_avg_qc\"]\n        tmpf = tmpc.to(units(\"degF\")).m\n        relh = units(\"percent\") * row[\"rh_avg_qc\"]\n        if -40 < tmpf < 140 and 0 < relh.m < 101:\n            ob.data[\"tmpf\"] = tmpf\n            ob.data[\"relh\"] = relh.m\n            ob.data[\"dwpf\"] = (\n                dewpoint_from_relative_humidity(tmpc, relh).to(units(\"degF\")).m\n            )\n        ob.data[\"phour\"] = round(row[\"rain_in_tot_qc\"], 2)\n        ob.data[\"sknt\"] = convert_value(row[\"ws_mph\"], \"mile / hour\", \"knot\")\n        if \"ws_mph_max\" in df.columns:\n            ob.data[\"gust\"] = convert_value(\n                row[\"ws_mph_max_qc\"], \"mile / hour\", \"knot\"\n            )\n            ob.data[\"max_gust_ts\"] = row[\"ws_mph_tmx\"]\n        ob.data[\"drct\"] = row[\"winddir_d1_wvt_qc\"]\n        if \"t4_c_avg\" in df.columns:\n            ob.data[\"c1tmpf\"] = c2f(row[\"t4_c_avg_qc\"])\n        if \"t12_c_avg_qc\" in df.columns:\n            ob.data[\"c2tmpf\"] = c2f(row[\"t12_c_avg_qc\"])\n        if \"t24_c_avg_qc\" in df.columns:\n            ob.data[\"c3tmpf\"] = c2f(row[\"t24_c_avg_qc\"])\n        if \"t50_c_avg\" in df.columns:\n            ob.data[\"c4tmpf\"] = c2f(row[\"t50_c_avg_qc\"])\n        if \"vwc12\" in df.columns:\n            ob.data[\"c2smv\"] = row[\"vwc12_qc\"] * 100.0\n        if \"vwc24\" in df.columns:\n            ob.data[\"c3smv\"] = row[\"vwc24_qc\"] * 100.0\n        if \"vwc50\" in df.columns:\n            ob.data[\"c4smv\"] = row[\"vwc50_qc\"] * 100.0\n        ob.save(acursor)\n        processed += 1\n    acursor.close()\n    pgconn.commit()\n    return processed\n\n\ndef daily_process(nwsli, maxts):\n    \"\"\"Process the daily file\"\"\"\n    fn = f\"{BASE}/{STATIONS[nwsli]}_DailySI.dat\"\n    df = common_df_logic(fn, maxts, nwsli, \"sm_daily\")\n    if df is None:\n        return 0\n    LOG.info(\"processing %s rows from %s\", len(df.index), fn)\n    processed = 0\n    pgconn, acursor = get_dbconnc(\"iem\")\n    for _i, row in df.iterrows():\n        # Need a timezone\n        valid = datetime(\n            row[\"valid\"].year, row[\"valid\"].month, row[\"valid\"].day, 12, 0\n        )\n        valid = valid.replace(tzinfo=ZoneInfo(\"America/Chicago\"))\n        ob = Observation(nwsli, \"ISUSM\", valid)\n        ob.data[\"max_tmpf\"] = c2f(row[\"tair_c_max_qc\"])\n        ob.data[\"min_tmpf\"] = c2f(row[\"tair_c_min_qc\"])\n        ob.data[\"pday\"] = round(row[\"rain_in_tot_qc\"], 2)\n        if valid not in EVENTS[\"days\"]:\n            EVENTS[\"days\"].append(valid)\n        ob.data[\"et_inch\"] = mm2inch(row[\"dailyet_qc\"])\n        # pyiem observation could turn this value into `None`\n        ob.data[\"srad_mj\"] = row[\"slrkj_tot_qc\"] / 1000.0\n        # Someday check if this is apples to apples here\n        ob.data[\"vector_avg_drct\"] = row[\"winddir_d1_wvt_qc\"]\n        if ob.data[\"max_tmpf\"] is None:\n            EVENTS[\"reprocess_temps\"] = True\n        if ob.data[\"srad_mj\"] == 0 or pd.isna(ob.data[\"srad_mj\"]):\n            LOG.info(\n                \"soilm_ingest.py station: %s ts: %s has 0 solar\",\n                nwsli,\n                valid.strftime(\"%Y-%m-%d\"),\n            )\n            EVENTS[\"reprocess_solar\"] = True\n        if \"ws_mph_max_qc\" in df.columns:\n            ob.data[\"max_sknt\"] = convert_value(\n                row[\"ws_mph_max_qc\"], \"mile / hour\", \"knot\"\n            )\n        ob.data[\"avg_sknt\"] = convert_value(\n            row[\"ws_mph_qc\"], \"mile / hour\", \"knot\"\n        )\n        ob.save(acursor)\n\n        processed += 1\n    acursor.close()\n    pgconn.commit()\n    return processed\n\n\ndef get_max_timestamps(nwsli):\n    \"\"\"Fetch out our max values\"\"\"\n    pgconn, icursor = get_dbconnc(\"isuag\")\n    data = {\n        \"hourly\": datetime(2012, 1, 1, tzinfo=ZoneInfo(\"Etc/GMT+6\")),\n        \"minute\": datetime(2012, 1, 1, tzinfo=ZoneInfo(\"Etc/GMT+6\")),\n        \"daily\": date(2012, 1, 1),\n    }\n    icursor.execute(\n        \"SELECT max(valid) from sm_daily WHERE station = %s\",\n        (nwsli,),\n    )\n    row = icursor.fetchone()\n    if row[\"max\"] is not None:\n        data[\"daily\"] = row[\"max\"]\n\n    icursor.execute(\n        \"SELECT max(valid) from sm_hourly WHERE station = %s\",\n        (nwsli,),\n    )\n    row = icursor.fetchone()\n    if row[\"max\"] is not None:\n        data[\"hourly\"] = row[\"max\"]\n\n    icursor.execute(\n        \"SELECT max(valid) from sm_minute WHERE station = %s\",\n        (nwsli,),\n    )\n    row = icursor.fetchone()\n    if row[\"max\"] is not None:\n        data[\"minute\"] = row[\"max\"]\n    LOG.info(\n        \"%s max daily: %s hourly: %s minute: %s\",\n        nwsli,\n        data[\"daily\"],\n        data[\"hourly\"],\n        data[\"minute\"],\n    )\n    pgconn.close()\n    return data\n\n\ndef dump_raw_to_ldm(nwsli, dyprocessed, hrprocessed):\n    \"\"\"Send the raw datafile to LDM\"\"\"\n    filename = f\"{BASE}/{STATIONS[nwsli]}_DailySI.dat\"\n    if not os.path.isfile(filename):\n        return\n    with open(filename, \"rb\") as fh:\n        fdata = fh.read().decode(\"ascii\", \"ignore\")\n    lines = fdata.split(\"\\n\")\n    if len(lines) < 5:\n        return\n\n    tmpfd, tmpfn = tempfile.mkstemp()\n    os.write(tmpfd, lines[0].encode(\"ascii\", \"ignore\"))\n    os.write(tmpfd, lines[1].encode(\"ascii\", \"ignore\"))\n    os.write(tmpfd, lines[2].encode(\"ascii\", \"ignore\"))\n    os.write(tmpfd, lines[3].encode(\"ascii\", \"ignore\"))\n    for linenum in range(0 - dyprocessed, 0):\n        os.write(tmpfd, lines[linenum].encode(\"ascii\", \"ignore\"))\n    os.close(tmpfd)\n    cmd = [\n        \"pqinsert\",\n        \"-p\",\n        f\"data c {utc():%Y%m%d%H%M} csv/isusm/{nwsli}_daily.txt bogus txt\",\n        tmpfn,\n    ]\n    with subprocess.Popen(\n        cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE\n    ) as proc:\n        proc.stdout.read()\n    os.remove(tmpfn)\n\n    # Send the raw datafile to LDM\n    filename = f\"{BASE}/{STATIONS[nwsli]}_HrlySI.dat\"\n    if not os.path.isfile(filename):\n        return\n    # Sometimes this file has corrupted characters?\n    with open(filename, \"rb\") as fh:\n        fdata = fh.read().decode(\"ascii\", \"ignore\")\n    lines = fdata.split(\"\\n\")\n    if len(lines) < 5:\n        return\n\n    tmpfd, tmpfn = tempfile.mkstemp()\n    os.write(tmpfd, lines[0].encode(\"ascii\", \"ignore\"))\n    os.write(tmpfd, lines[1].encode(\"ascii\", \"ignore\"))\n    os.write(tmpfd, lines[2].encode(\"ascii\", \"ignore\"))\n    os.write(tmpfd, lines[3].encode(\"ascii\", \"ignore\"))\n    for linenum in range(0 - hrprocessed, 0):\n        os.write(tmpfd, lines[linenum].encode(\"ascii\", \"ignore\"))\n    os.close(tmpfd)\n    cmd = [\n        \"pqinsert\",\n        \"-p\",\n        f\"data c {utc():%Y%m%d%H%M} csv/isusm/{nwsli}_hourly.txt bogus txt\",\n        tmpfn,\n    ]\n    with subprocess.Popen(\n        cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE\n    ) as proc:\n        proc.stdout.read()\n    os.remove(tmpfn)\n\n\n@click.command()\n@click.option(\"--station\", help=\"Specific station to process\")\ndef main(station: str | None):\n    \"\"\"Go main Go\"\"\"\n    stations = STATIONS if station is None else [station]\n    for nwsli in stations:\n        LOG.info(\"starting workflow for: %s\", nwsli)\n        maxobs = get_max_timestamps(nwsli)\n        m15processed = m15_process(nwsli, maxobs[\"minute\"])\n        hrprocessed = hourly_process(nwsli, maxobs[\"hourly\"])\n        dyprocessed = daily_process(nwsli, maxobs[\"daily\"])\n        if hrprocessed > 0:\n            dump_raw_to_ldm(nwsli, dyprocessed, hrprocessed)\n        LOG.info(\n            \"%s 15min:%s hr:%s daily:%s\",\n            nwsli,\n            m15processed,\n            hrprocessed,\n            dyprocessed,\n        )\n    for nwsli, item in INVERSION.items():\n        do_inversion(item, nwsli)\n\n    if EVENTS[\"reprocess_solar\"]:\n        LOG.info(\"Calling fix_solar.py with no args\")\n        subprocess.call([\"python\", \"../isusm/fix_solar.py\"])\n    if EVENTS[\"reprocess_temps\"]:\n        LOG.info(\"Calling fix_temps.py with no args\")\n        subprocess.call([\"python\", \"../isuag/fix_temps.py\"])\n    for day in EVENTS[\"days\"]:\n        LOG.info(\"Calling fix_{solar,precip,soil4t}.py for %s\", day)\n        for script in [\"fix_solar\", \"fix_precip\", \"fix_soil4t\"]:\n            subprocess.call(\n                [\n                    \"python\",\n                    f\"../isusm/{script}.py\",\n                    f\"--date={day:%Y-%m-%d}\",\n                ]\n            )\n\n\ndef test_make_tstamp():\n    \"\"\"Do we do the right thing with timestamps\"\"\"\n    res = make_time(\"2017-08-31 19:00:00\")\n    assert res.strftime(\"%H\") == \"19\"\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/squaw/ingest_squaw.py",
    "content": "\"\"\"Process the Flow data provided by the USGS website\"\"\"\n\nimport re\n\nimport httpx\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.util import logger\nfrom sqlalchemy.engine import Connection\n\nLOG = logger()\n\n\n@with_sqlalchemy_conn(\"squaw\")\ndef main(conn: Connection = None) -> None:\n    \"\"\"Squaw\"\"\"\n    uri = (\n        \"https://waterdata.usgs.gov/ia/nwis/uv?dd_cd=01&format=rdb&\"\n        \"period=2&site_no=05470500\"\n    )\n    try:\n        resp = httpx.get(uri, timeout=30)\n        resp.raise_for_status()\n    except httpx.RequestError as err:\n        LOG.info(\"failed to fetch %s: %s\", uri, err)\n        return\n    data = resp.text\n\n    tokens = re.findall(\n        \"USGS\\t([0-9]*)\\t(....-..-.. ..:..)\\t([CSDT]+)\\t([0-9]*)\", data\n    )\n\n    inserts = 0\n    for ob in tokens:\n        sql = \"SELECT * from real_flow WHERE valid = :valid\"\n        rs = conn.execute(sql_helper(sql), {\"valid\": ob[1]})\n        if rs.rowcount > 0:\n            continue\n        if ob[3] != \"\":\n            sql = \"\"\"\n                INSERT into real_flow(gauge_id, valid, cfs)\n                VALUES (:gauge_id, :valid, :cfs)\n            \"\"\"\n            conn.execute(\n                sql_helper(sql),\n                {\"gauge_id\": ob[0], \"valid\": ob[1], \"cfs\": ob[3]},\n            )\n            inserts += 1\n\n    conn.commit()\n    LOG.info(\"Inserted %s records\", inserts)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ingestors/uscrn_ingest.py",
    "content": "\"\"\"Process the US Climate Reference Network.\n\nCalled from RUN_20_AFTER.sh\n\"\"\"\n\nimport glob\nimport os\nfrom datetime import datetime\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport pandas as pd\nimport requests\nfrom metpy.units import units\nfrom psycopg.rows import dict_row\nfrom pyiem.database import get_dbconn\nfrom pyiem.observation import Observation\nfrom pyiem.util import logger\nfrom requests.exceptions import ReadTimeout\n\nLOG = logger()\nBASE = \"/mesonet/tmp/uscrn\"\nURI = \"https://www.ncei.noaa.gov/pub/data/uscrn/products/subhourly01\"\nFTP = \"ftp://ftp.ncei.noaa.gov/pub/data/uscrn/products/subhourly01\"\n\n\ndef n2n(val):\n    \"\"\"yawn\"\"\"\n    if pd.isnull(val):\n        return None\n    return val\n\n\ndef is_within(val, floor, ceiling):\n    \"\"\"Nulls\"\"\"\n    if val is None or pd.isnull(val):\n        return None\n    if val < floor or val >= ceiling:\n        return None\n    return val\n\n\ndef process_file(icursor, ocursor, year, filename, size, reprocess):\n    \"\"\"Ingest these files, please\n    1    WBANNO                         XXXXX\n    2    UTC_DATE                       YYYYMMDD\n    3    UTC_TIME                       HHmm\n    4    LST_DATE                       YYYYMMDD\n    5    LST_TIME                       HHmm\n    6    CRX_VN                         XXXXXX\n    7    LONGITUDE                      Decimal_degrees\n    8    LATITUDE                       Decimal_degrees\n    9    AIR_TEMPERATURE                Celsius\n    10   PRECIPITATION                  mm\n    11   SOLAR_RADIATION                W/m^2\n    12   SR_FLAG                        X\n    13   SURFACE_TEMPERATURE            Celsius\n    14   ST_TYPE                        X\n    15   ST_FLAG                        X\n    16   RELATIVE_HUMIDITY              %\n    17   RH_FLAG                        X\n    18   SOIL_MOISTURE_5                m^3/m^3\n    19   SOIL_TEMPERATURE_5             Celsius\n    20   WETNESS                        Ohms\n    21   WET_FLAG                       X\n    22   WIND_1_5                       m/s\n    23   WIND_FLAG                      X\n    \"\"\"\n    with open(filename, \"rb\") as fp:\n        if size > 0:\n            fp.seek(os.stat(filename).st_size - size)\n        df = pd.read_csv(\n            fp,\n            low_memory=False,\n            sep=r\"\\s+\",\n            names=[\n                \"WBANNO\",\n                \"UTC_DATE\",\n                \"UTC_TIME\",\n                \"LST_DATE\",\n                \"LST_TIME\",\n                \"CRX_VN\",\n                \"LON\",\n                \"LAT\",\n                \"TMPC\",\n                \"PRECIP_MM\",\n                \"SRAD\",\n                \"SR_FLAG\",\n                \"SKINC\",\n                \"ST_TYPE\",\n                \"ST_FLAG\",\n                \"RH\",\n                \"RH_FLAG\",\n                \"VSM5\",\n                \"SOILC5\",\n                \"WETNESS\",\n                \"WET_FLAG\",\n                \"SMPS\",\n                \"SMPS_FLAG\",\n            ],\n            na_values={\n                \"TMPC\": \"-9999\",\n                \"PRECIP_MM\": \"-9999\",\n                \"SRAD\": \"-99999\",\n                \"SKINC\": \"-9999\",\n                \"RH\": \"-9999\",\n                \"VSM5\": \"-99\",\n                \"SOILC5\": \"-9999\",\n                \"WETNESS\": \"-9999\",\n                \"SMPS\": \"-99\",\n            },\n            converters={\"WBANNO\": str, \"UTC_TIME\": str},\n        )\n    if reprocess and not df.empty:\n        ocursor.execute(\n            f\"DELETE from t{year} WHERE station = %s\",\n            (df.iloc[0][\"WBANNO\"],),\n        )\n        LOG.info(\n            \"Removed %s rows %s %s\",\n            ocursor.rowcount,\n            year,\n            df.iloc[0][\"WBANNO\"],\n        )\n    for _, row in df.iterrows():\n        valid = datetime.strptime(\n            \"%s %s\" % (row[\"UTC_DATE\"], row[\"UTC_TIME\"]), \"%Y%m%d %H%M\"\n        )\n        valid = valid.replace(tzinfo=ZoneInfo(\"UTC\"))\n        ob = Observation(str(row[\"WBANNO\"]), \"USCRN\", valid)\n        ob.data[\"tmpf\"] = is_within(\n            (float(row[\"TMPC\"]) * units.degC).to(units.degF).magnitude,\n            -100,\n            150,\n        )\n        ob.data[\"pcounter\"] = is_within(\n            (float(row[\"PRECIP_MM\"]) * units(\"mm\")).to(units.inch).magnitude,\n            0,\n            900,\n        )\n        ob.data[\"srad\"] = is_within(row[\"SRAD\"], 0, 2000)\n        ob.data[\"tsf0\"] = is_within(\n            (float(row[\"SKINC\"]) * units.degC).to(units.degF).magnitude,\n            -100,\n            200,\n        )\n        ob.data[\"relh\"] = is_within(row[\"RH\"], 1, 100.1)\n        ob.data[\"c1smv\"] = is_within(row[\"VSM5\"], 0.01, 1.01)\n        ob.data[\"c1tmpf\"] = is_within(\n            (float(row[\"SOILC5\"]) * units.degC).to(units.degF).magnitude,\n            -100,\n            200,\n        )\n        ob.data[\"sknt\"] = is_within(\n            (float(row[\"SMPS\"]) * units(\"m/s\"))\n            .to(units(\"miles per hour\"))\n            .magnitude,\n            0,\n            200,\n        )\n        ob.save(icursor, skip_current=reprocess)\n        table = f\"t{valid.year}\"\n        if not reprocess:\n            ocursor.execute(\n                f\"DELETE from {table} WHERE station = %s and valid = %s\",\n                (row[\"WBANNO\"], valid),\n            )\n        ocursor.execute(\n            f\"\"\"\n        INSERT into {table} (station, valid, tmpc, precip_mm, srad,\n        srad_flag, skinc, skinc_flag, skinc_type, rh, rh_flag, vsm5,\n        soilc5, wetness, wetness_flag, wind_mps, wind_mps_flag) VALUES\n        (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)\n        \"\"\",\n            (\n                str(row[\"WBANNO\"]),\n                valid,\n                n2n(row[\"TMPC\"]),\n                n2n(row[\"PRECIP_MM\"]),\n                n2n(row[\"SRAD\"]),\n                row[\"SR_FLAG\"],\n                n2n(row[\"SKINC\"]),\n                row[\"ST_TYPE\"],\n                row[\"ST_FLAG\"],\n                n2n(row[\"RH\"]),\n                row[\"RH_FLAG\"],\n                n2n(row[\"VSM5\"]),\n                n2n(row[\"SOILC5\"]),\n                n2n(row[\"WETNESS\"]),\n                row[\"WET_FLAG\"],\n                n2n(row[\"SMPS\"]),\n                row[\"SMPS_FLAG\"],\n            ),\n        )\n\n\ndef download(year, reprocess=False) -> list:\n    \"\"\"Go Great Things\"\"\"\n    dirname = f\"{BASE}/{year}\"\n    if not os.path.isdir(dirname):\n        os.makedirs(dirname)\n    os.chdir(dirname)\n    files = glob.glob(\"*.txt\")\n    if not files:\n        LOG.warning(\"uscrn_ingest %s has no files\", year)\n        return []\n    queue = []\n    dlerrors = 0\n    for filename in files:\n        if dlerrors > 5:\n            return queue\n        size = os.stat(filename).st_size\n        try:\n            resp = requests.get(\n                f\"{URI}/{year}/{filename}\",\n                headers={\"Range\": f\"bytes={size}-{size + 16000000}\"},\n                timeout=60,  # SSL timeouts at 30?\n            )\n            # No new data\n            if resp.status_code == 416:\n                continue\n            # Helene Failure\n            if resp.status_code == 200 and resp.text.startswith(\"Access\"):\n                continue\n            if resp.status_code in [404, 403]:\n                LOG.info(\"uscrn_ingest %s is %s\", filename, resp.status_code)\n                continue\n            if resp.status_code < 400:\n                with open(filename, \"a\") as fh:\n                    fh.write(resp.content.decode(\"utf-8\"))\n            if resp.status_code < 400 or reprocess:\n                queue.append([filename, len(resp.content)])\n        except ReadTimeout:\n            LOG.info(\"%s read timeout, continuing\", filename)\n            dlerrors += 1\n            continue\n        except Exception as exp:\n            dlerrors += 1\n            LOG.warning(\n                \"uscrn_ingest %s traceback: [%s] %s\", filename, type(exp), exp\n            )\n            continue\n    if reprocess:\n        return [(fn, -1) for fn in files]\n    return queue\n\n\n@click.command()\n@click.option(\"--year\", type=int, required=False, help=\"Year to process\")\ndef main(year: int | None):\n    \"\"\"Go Main Go\"\"\"\n    iem_pgconn = get_dbconn(\"iem\")\n    pgconn = get_dbconn(\"uscrn\")\n    reprocess = False\n    if year is not None:\n        # Process an entire year\n        reprocess = True\n    else:\n        year = datetime.now().year\n    for [fn, size] in download(year, reprocess):\n        icursor = iem_pgconn.cursor(row_factory=dict_row)\n        ocursor = pgconn.cursor()\n        try:\n            process_file(icursor, ocursor, year, fn, size, reprocess)\n        except Exception as exp:\n            LOG.warning(\"uscrn_ingest %s traceback: %s\", fn, exp)\n        icursor.close()\n        ocursor.close()\n        iem_pgconn.commit()\n        pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/isuag/fix_temps.py",
    "content": "\"\"\"Use IEMRE estimated high and low temps\"\"\"\n\nimport json\n\nimport httpx\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import convert_value, logger\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go main go\"\"\"\n    pgconn = get_dbconn(\"isuag\")\n    cursor = pgconn.cursor()\n    cursor2 = pgconn.cursor()\n\n    nt = NetworkTable(\"ISUSM\")\n    cursor.execute(\n        \"\"\"\n     SELECT station, valid from sm_daily where (tair_c_avg_qc is null or\n     tair_c_min_qc is null or tair_c_max_qc is null) ORDER by valid ASC\n    \"\"\"\n    )\n    for row in cursor:\n        station = row[0]\n        date = row[1]\n        # Go fetch me the IEMRE value!\n        uri = (\n            \"http://mesonet.agron.iastate.edu/iemre/daily/\"\n            f\"{date:%Y-%m-%d}/{nt.sts[station]['lat']:.2f}/\"\n            f\"{nt.sts[station]['lon']:.2f}/json\"\n        )\n        res = httpx.get(uri, timeout=60)\n        j = json.loads(res.content)\n        if not j[\"data\"]:\n            LOG.info(\" %s %s IEMRE Failure\", station, date)\n            continue\n        highf = j[\"data\"][0][\"daily_high_f\"]\n        lowf = j[\"data\"][0][\"daily_low_f\"]\n        LOG.info(\" %s %s high: %.1f low: %.1f\", station, date, highf, lowf)\n        high = convert_value(highf, \"degF\", \"degC\")\n        low = convert_value(lowf, \"degF\", \"degC\")\n        avg = (high + low) / 2.0\n        cursor2.execute(\n            \"\"\"\n            UPDATE sm_daily SET\n            tair_c_avg_qc = %s,\n            tair_c_min_qc = %s,\n            tair_c_max_qc = %s,\n            tair_c_avg_f = 'e',\n            tair_c_min_f = 'e',\n            tair_c_max_f = 'e'\n            WHERE station = %s and valid = %s\n        \"\"\",\n            (avg, low, high, station, date),\n        )\n\n    cursor2.close()\n    pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/isusm/agg_1minute.py",
    "content": "\"\"\"\nNeed to do some custom 1 minute data aggregation to fill out hourly table.\n\nRUN_20_AFTER.sh\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport click\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn\nfrom pyiem.util import logger, utc\n\nLOG = logger()\nTIME_FORMAT = \"%Y-%m-%d %H:%M-06\"\n\n\ndef hourly_process(cursor, station, hour, mdf, hdf):\n    \"\"\"Merge this row information into the database.\"\"\"\n    # The totals for this hour are stored for the next hour\n    row = pd.Series({\"station\": station, \"valid\": hour + timedelta(hours=1)})\n    if row[\"valid\"] not in hdf.index or mdf.empty:\n        return\n    lastob = mdf.iloc[-1]\n    svobs = mdf[pd.notna(mdf[\"sv_t16_qc\"])]\n    sumdf = mdf.sum(numeric_only=True)\n    row[\"obs_count\"] = len(mdf.index)\n    current = hdf.loc[row[\"valid\"]]\n    if current[\"obs_count\"] == row[\"obs_count\"]:\n        return\n    row[\"slrkj_tot\"] = sumdf[\"slrkj_tot\"]\n    # Take last ob\n    for colname in (\n        \"t4_c_avg t12_c_avg t24_c_avg t50_c_avg vwc12 vwc24 vwc50 rh_avg \"\n        \"tair_c_avg\"\n    ).split():\n        row[colname] = float(lastob[f\"{colname}_qc\"])\n    # Soil Vue Madness\n    if not svobs.empty:\n        sv_lastob = svobs.iloc[-1]\n        for depth in [2, 4, 8, 12, 14, 16, 20, 24, 28, 30, 32, 36, 40, 42, 52]:\n            for col in [\"t\", \"vwc\", \"ec\"]:\n                row[f\"sv_{col}{depth}\"] = float(\n                    sv_lastob[f\"sv_{col}{depth}_qc\"]\n                )\n    tokens = []\n    for colname in row.index:\n        if colname in [\"station\", \"valid\"]:\n            continue\n        if colname == \"obs_count\":\n            tokens.append(f\"{colname} = {row[colname]}\")\n            continue\n        tokens.append(f\"{colname} = coalesce({colname}, %({colname})s)\")\n        tokens.append(f\"{colname}_qc = coalesce({colname}_qc, %({colname})s)\")\n    LOG.info(\"updating sm_hourly %s %s\", station, row[\"valid\"])\n    cursor.execute(\n        f\"UPDATE sm_hourly SET {','.join(tokens)} \"\n        \"WHERE station = %(station)s and valid = %(valid)s\",\n        row.to_dict(),\n    )\n\n\ndef daily_process(cursor, station, dt, df: pd.DataFrame, ddf):\n    \"\"\"Process this date's dataframe.\"\"\"\n    mindf = df.min(numeric_only=True)\n    maxdf = df.max(numeric_only=True)\n    avgdf = df.mean(numeric_only=True)\n    row = pd.Series({\"station\": station, \"date\": dt})\n    row[\"obs_count\"] = df[\"tair_c_avg_qc\"].size\n    row[\"tair_c_max\"] = maxdf[\"tair_c_avg_qc\"]\n    row[\"tair_c_min\"] = mindf[\"tair_c_avg_qc\"]\n    row[\"t4_c_max\"] = maxdf[\"t4_c_avg_qc\"]\n    row[\"t4_c_min\"] = mindf[\"t4_c_avg_qc\"]\n    # For daily, we want the average for some of these columns\n    for colname in (\n        \"t4_c_avg t12_c_avg t24_c_avg t50_c_avg vwc12 vwc24 vwc50 rh_avg \"\n        \"ws_mph tair_c_avg\"\n    ).split():\n        row[colname] = float(avgdf[f\"{colname}_qc\"])\n    # Soil Vue Madness\n    for depth in [2, 4, 8, 12, 14, 16, 20, 24, 28, 30, 32, 36, 40, 42, 52]:\n        for col in [\"t\", \"vwc\", \"ec\"]:\n            row[f\"sv_{col}{depth}\"] = float(avgdf[f\"sv_{col}{depth}_qc\"])\n    current = ddf.loc[(station, dt)]\n    if current[\"obs_count\"] == row[\"obs_count\"]:\n        LOG.info(\"%s %s obs_count %s matches\", dt, station, row[\"obs_count\"])\n        return\n    # Ensure database gets nulls and not nan\n    row = row.replace({np.nan: None})\n    # build up SQL statement\n    tokens = []\n    for colname in row.index:\n        if colname in [\"station\", \"date\"]:\n            continue\n        if colname == \"obs_count\":\n            tokens.append(f\"{colname} = {row[colname]}\")\n            continue\n        tokens.append(f\"{colname} = coalesce({colname}, %({colname})s)\")\n        tokens.append(f\"{colname}_qc = coalesce({colname}_qc, %({colname})s)\")\n    LOG.info(\"updating sm_daily %s %s\", station, dt)\n    cursor.execute(\n        f\"UPDATE sm_daily SET {','.join(tokens)} \"\n        \"WHERE station = %(station)s and valid = %(date)s\",\n        row.to_dict(),\n    )\n\n\ndef do_date_ops(df):\n    \"\"\"Common things.\"\"\"\n    df[\"utc_valid\"] = df[\"utc_valid\"].dt.tz_localize(\"UTC\")\n    df = df.drop(columns=\"valid\")\n    # Compute a LST date via UTC-6\n    df[\"date\"] = (df[\"utc_valid\"] - timedelta(hours=6)).dt.date\n    return df\n\n\n@click.command()\n@click.option(\n    \"--date\", \"dt\", type=click.DateTime(), default=None, help=\"Date to process\"\n)\ndef main(dt: datetime | None):\n    \"\"\"Do things.\"\"\"\n    pgconn = get_dbconn(\"isuag\")\n    # We need to collect up data for periods representing CST dates, this\n    # is tricky business\n    # TODO memory troubles with more than 7 days of data :/\n    if dt is not None:\n        sts = dt.date()\n    else:\n        sts = date.today() - timedelta(days=7)\n    # 6z is the start of such a date\n    sts = utc(sts.year, sts.month, sts.day, 6)\n    ets = sts + timedelta(days=8)\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        # Get the minute data\n        mdf = (\n            pd.read_sql(\n                \"SELECT *, valid at time zone 'UTC' as utc_valid, \"\n                \"date(valid) as date from sm_minute \"\n                \"where valid >= %s and valid < %s ORDER by valid ASC\",\n                conn,\n                params=(sts, ets),\n                index_col=None,\n            )\n            .fillna(np.nan)\n            .infer_objects()\n        )\n        # Get the hourly data\n        hdf = pd.read_sql(\n            \"SELECT *, valid at time zone 'UTC' as utc_valid, \"\n            \"date(valid) as date from sm_hourly \"\n            \"where valid >= %s and valid < %s ORDER by valid ASC\",\n            conn,\n            params=(sts, ets),\n            index_col=None,\n        )\n        # Get the daily data\n        ddf = pd.read_sql(\n            \"SELECT * from sm_daily where valid >= %s and valid < %s \"\n            \"ORDER by valid ASC\",\n            conn,\n            params=(sts.date(), ets.date()),\n            index_col=[\"station\", \"valid\"],\n        )\n\n    # Do date operations\n    mdf = do_date_ops(mdf)\n    hdf = do_date_ops(hdf).set_index([\"station\", \"utc_valid\"])\n\n    # Daily work\n    cursor = pgconn.cursor()\n    for (station, _dt), gdf in mdf.groupby([\"station\", \"date\"]):\n        if (station, _dt) not in ddf.index:\n            LOG.info(\"%s %s not in daily, skipping\", station, _dt)\n            continue\n        daily_process(cursor, station, _dt, gdf, ddf)\n    cursor.close()\n    pgconn.commit()\n\n    # Hourly work\n    cursor = pgconn.cursor()\n    for station, gdf in mdf.groupby(\"station\"):\n        for hour, hgdf in gdf.set_index(\"utc_valid\").resample(\"h\"):\n            if station not in hdf.index:\n                LOG.warning(\"%s is not in hourly\", station)\n                continue\n            hourly_process(cursor, station, hour, hgdf, hdf.loc[station, :])\n    cursor.close()\n    pgconn.commit()\n\n    # Special case of PET\n    cursor = pgconn.cursor()\n    cursor.execute(\n        \"\"\"WITH data as (\n        SELECT station, date(valid),\n        sum(etalfalfa_qc) as dailyet from sm_hourly WHERE\n        valid >= %s and valid < %s\n        and etalfalfa_qc is not null GROUP by station, date)\n        UPDATE sm_daily s SET dailyet_qc = d.dailyet, dailyet = d.dailyet\n        FROM data d WHERE s.station = d.station and s.valid = d.date\"\"\",\n        (sts, ets),\n    )\n    cursor.close()\n    pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/isusm/agg_precip.py",
    "content": "\"\"\"Aggregate ISUSM Precipitation.\n\ncalled from RUN_5MIN.sh\n\"\"\"\n\nfrom datetime import datetime, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_dbconnc, get_sqlalchemy_conn\nfrom pyiem.util import logger\n\nLOG = logger()\nCST = ZoneInfo(\"Etc/GMT+6\")\n\n\ndef assign_phour():\n    \"\"\"Due to lame reasons, IEMAcess  does not have phour set.\"\"\"\n    # Look in ISUAG for any phour values set\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            select station, iemid, valid, rain_in_tot_qc from sm_hourly h\n            JOIN stations t on (h.station = t.id)\n            where t.network = 'ISUSM' and\n            valid >= now() - '3 hours'::interval and rain_in_tot_qc is not null\n            \"\"\",\n            conn,\n        )\n    for _, row in df.iterrows():\n        pgconn, cursor = get_dbconnc(\"iem\")\n        cursor.execute(\n            \"UPDATE current_log SET phour = %s WHERE iemid = %s and \"\n            \"valid = %s\",\n            (row[\"rain_in_tot_qc\"], row[\"iemid\"], row[\"valid\"]),\n        )\n        LOG.info(\n            \"Updated %s rows for %s[%s][%s]\",\n            cursor.rowcount,\n            row[\"station\"],\n            row[\"valid\"],\n            row[\"rain_in_tot_qc\"],\n        )\n        cursor.close()\n        pgconn.commit()\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    # Look for any precip reported\n    pgconn = get_dbconn(\"iem\")\n    cursor = pgconn.cursor()\n    cursor.execute(\n        \"SELECT distinct id, c.iemid, date(valid at time zone 'UTC+6') from \"\n        \"current_log c JOIN stations t on \"\n        \"(c.iemid = t.iemid) WHERE t.network = 'ISUSM' and c.pcounter > 0 and \"\n        \"updated > now() - '10 minutes'::interval\"\n    )\n    LOG.info(\"Found %s rows needing aggregation\", cursor.rowcount)\n    if cursor.rowcount == 0:\n        return\n    for station, iemid, date in cursor:\n        LOG.info(\"Processing %s %s\", station, date)\n        # NB so careful here, we have to total over a CST date :(\n        sts = datetime(date.year, date.month, date.day, 1, tzinfo=CST)\n        ets = sts + timedelta(hours=24)\n\n        with get_sqlalchemy_conn(\"iem\") as conn:\n            df = pd.read_sql(\n                \"\"\"\n                SELECT valid at time zone 'UTC+6' as valid, phour, pcounter\n                from current_log\n                WHERE iemid = %s and valid > %s and valid < %s\n                ORDER by valid ASC\n                \"\"\",\n                conn,\n                params=(iemid, sts, ets),\n                index_col=\"valid\",\n            )\n        if len(df.index) < 2:\n            LOG.info(\"Skipping %s as got just %s rows\", station, len(df.index))\n            continue\n        df = (\n            df.reindex(pd.date_range(df.index[0], df.index[-1], freq=\"60s\"))\n            .fillna(0)\n            .assign(\n                phour=lambda df_: df_.phour.fillna(0),\n                newphour=lambda df_: (\n                    df_[\"pcounter\"].rolling(60, min_periods=1).sum()\n                ),\n            )\n        )\n        # Find instances were phour != newphour\n        mask = (df[\"phour\"] - df[\"newphour\"]).abs() > 0.001\n        for valid, entry in df[mask].iterrows():\n            LOG.info(\"Updating %s %s %s\", station, valid, entry[\"newphour\"])\n            cursor2 = pgconn.cursor()\n            cursor2.execute(\n                \"UPDATE current_log SET phour = %s WHERE iemid = %s and \"\n                \"valid = %s\",\n                (entry[\"newphour\"], iemid, valid),\n            )\n            cursor2.close()\n            pgconn.commit()\n        if mask.sum() == 0:\n            continue\n        # Update the pday total\n        pday = df[\"pcounter\"].sum()\n        LOG.info(\"Updating pday %s %s %s\", station, date, pday)\n        cursor2 = pgconn.cursor()\n        cursor2.execute(\n            f\"UPDATE summary_{date.year} SET pday = %s WHERE iemid = %s and \"\n            \"day = %s\",\n            (pday, iemid, date),\n        )\n        cursor2.close()\n        pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n    assign_phour()\n"
  },
  {
    "path": "scripts/isusm/archiver.py",
    "content": "\"\"\"\nLoggerNet delivers now single files per poll.  This script pieces them back\ntogether and then 1) dumps to LDM and 2) archives off to storage.\n\"\"\"\n\nimport glob\nimport os\nimport subprocess\nimport tempfile\nimport zipfile\nfrom datetime import timedelta\nfrom io import BytesIO\n\nfrom pyiem.util import logger, utc\n\nLOG = logger()\nPATH = \"/mesonet/data/isusm\"\n# run at 6z, so file for previous date\nNOW = utc() - timedelta(days=1)\n\n\ndef save_content(station, content):\n    \"\"\"Send to LDM.\"\"\"\n    epoch = {\"MinSI\": 0, \"DailySI\": 0, \"HrlySI\": 0}\n    for key in content:\n        ftype = key.split(\"||\")[0]\n        if ftype not in epoch:\n            LOG.info(\"Hmmmm, unknown ftype: %s\", ftype)\n            continue\n        suffix = epoch[ftype] if epoch[ftype] > 0 else \"\"\n        epoch[ftype] += 1\n        filename = f\"{station}{suffix}_{ftype}_{NOW:%Y%m%d}.dat\"\n        # send to LDM for archival\n        pqstr = f\"data a {NOW:%Y%m%d%H%M} bogus raw/isusm/{filename} dat\"\n        LOG.info(pqstr)\n        with tempfile.NamedTemporaryFile(delete=False) as tmpfd:\n            tmpfd.write(content[key].getvalue())\n        with subprocess.Popen(\n            [\"pqinsert\", \"-i\", \"-p\", pqstr, tmpfd.name],\n            stdout=subprocess.PIPE,\n            stderr=subprocess.PIPE,\n            stdin=subprocess.PIPE,\n        ) as proc:\n            (stdout, stderr) = proc.communicate()\n        if stdout != b\"\" or stderr != b\"\":\n            LOG.info(\"%s stdout: %s stderr: %s\", pqstr, stdout, stderr)\n        os.unlink(tmpfd.name)\n\n\ndef process(files):\n    \"\"\"Figure out what to do with the data we have.\"\"\"\n    files.sort()\n    content = {}\n    for fn in files:\n        with open(fn, \"rb\") as fh:\n            lines = fh.readlines()\n        if len(lines) < 4:\n            LOG.info(\"fn: %s has %s lines, skipping\", fn, len(lines))\n            continue\n        ftype = fn.rsplit(\"_\", 5)[1]\n        # build key based on the header\n        key = f\"{ftype}||{lines[1]}\"\n        if key not in content:\n            content[key] = BytesIO()\n            content[key].write(b\"\".join(lines[:4]))\n        for line in lines[4:]:\n            if line.strip() == b\"\":\n                continue\n            content[key].write(line)\n    return content\n\n\ndef zip_and_delete(station, files):\n    \"\"\"zip em off to storage and delete them, gasp.\"\"\"\n    archivedir = f\"{PATH}/archived/{NOW.year}/{NOW:%m}\"\n    if not os.path.isdir(archivedir):\n        os.makedirs(archivedir)\n    savefn = f\"{archivedir}/{station}_{NOW:%Y%m%d}.zip\"\n    if os.path.isfile(savefn):\n        LOG.info(\"Refusing to overwrite %s\", savefn)\n        return\n    LOG.info(\"creating %s\", savefn)\n    with zipfile.ZipFile(savefn, \"w\", zipfile.ZIP_DEFLATED) as zfh:\n        for fn in files:\n            zfh.write(fn)\n    # Update the file permission to not be so restrictive\n    os.chmod(savefn, 0o664)\n    for fn in files:\n        os.unlink(fn)\n\n\ndef upload_to_staging():\n    \"\"\"Move to staging for google drive upload.\"\"\"\n    rempath = \"/stage/iemoffline/isusm/\"\n    cmd = [\n        \"rsync\",\n        \"-r\",\n        \"--no-perms\",\n        \"--remove-source-files\",\n        \"--rsync-path\",\n        f\"mkdir -p {rempath} && rsync\",\n        *glob.glob(\"archived/*\"),\n        f\"mesonet@akrherz-desktop.agron.iastate.edu:{rempath}\",\n    ]\n    subprocess.call(cmd)\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    os.chdir(PATH)\n    files = {}\n    for fn in glob.glob(\"*.dat\"):\n        station = fn.rsplit(\"_\", 5)[0]\n        d = files.setdefault(station, [])\n        d.append(fn)\n    for station, fns in files.items():\n        content = process(fns)\n        save_content(station, content)\n        zip_and_delete(station, fns)\n    upload_to_staging()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/isusm/backfill_summary.py",
    "content": "\"\"\"Backfill IEMAccess Summary table.\n\nSome of the variables don't get properly updated in the summary table.\n\ncronjob from RUN_2AM.sh\n\"\"\"\n\nfrom datetime import date, datetime\n\nimport click\nimport pandas as pd\nfrom metpy.calc import wind_components, wind_direction\nfrom metpy.units import units\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import convert_value, logger\n\nLOG = logger()\n\n\ndef process(pgconn, obs: pd.DataFrame):\n    \"\"\"option 1\"\"\"\n    wcursor = pgconn.cursor()\n    for iemid, row in obs.iterrows():\n        table = f\"summary_{row['valid']:%Y}\"\n        wcursor.execute(\n            f\"\"\"\n    UPDATE {table} SET avg_rh = %s, max_gust = %s, max_gust_ts = %s,\n    avg_sknt = %s WHERE iemid = %s and day = %s\n            \"\"\",\n            (\n                row[\"rh_avg_qc\"],\n                convert_value(row[\"ws_mph_max_qc\"], \"mph\", \"knot\"),\n                row[\"ws_mph_tmx_qc\"],\n                convert_value(row[\"ws_mph_qc\"], \"mph\", \"knot\"),\n                iemid,\n                row[\"valid\"],\n            ),\n        )\n        if wcursor.rowcount == 0:\n            LOG.warning(\"Adding summary row for iemid: %s\", iemid)\n            wcursor.execute(\n                f\"\"\"\n    INSERT INTO {table} (iemid, day, avg_rh, max_gust, max_gust_ts, avg_sknt)\n    VALUES (%s, %s, %s, %s, %s, %s)\n                \"\"\",\n                (\n                    iemid,\n                    row[\"valid\"],\n                    row[\"rh_avg_qc\"],\n                    convert_value(row[\"ws_mph_max_qc\"], \"mph\", \"knot\"),\n                    row[\"ws_mph_tmx_qc\"],\n                    convert_value(row[\"ws_mph_qc\"], \"mph\", \"knot\"),\n                ),\n            )\n    wcursor.close()\n\n\ndef compute_drct(dt: date):\n    \"\"\"Do things the hard way, because that is what we do.\"\"\"\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        obs = pd.read_sql(\n            sql_helper(\"\"\"\n    select station, ws_mph_qc, winddir_d1_wvt_qc\n    from sm_minute where valid > :dt and valid < :dt + interval '1 day'\n    and ws_mph_qc > 0 and winddir_d1_wvt_qc >= 0\n    \"\"\"),\n            conn,\n            params={\"dt\": dt},\n        )\n    obs[\"u\"], obs[\"v\"] = wind_components(\n        obs[\"ws_mph_qc\"].values * units(\"mph\"),\n        obs[\"winddir_d1_wvt_qc\"].values * units.degrees,\n    )\n    with (\n        get_sqlalchemy_conn(\"iem\") as iemconn,\n        get_sqlalchemy_conn(\"isuag\") as isuagconn,\n    ):\n        for station, gdf in obs.groupby(\"station\"):\n            u = gdf[\"u\"].mean()\n            v = gdf[\"v\"].mean()\n            if u == 0 and v == 0:\n                continue\n            drct = float(\n                wind_direction(u * units(\"mph\"), v * units(\"mph\"))\n                .to(\"degrees\")\n                .m\n            )\n            isuagconn.execute(\n                sql_helper(\"\"\"\n                        update sm_daily SET winddir_d1_wvt_qc = :drct,\n                            winddir_d1_wvt = :drct\n                        where station = :station and valid = :dt and\n                        winddir_d1_wvt_qc is null\n                        \"\"\"),\n                {\"drct\": drct, \"station\": station, \"dt\": dt},\n            )\n            isuagconn.commit()\n            iemconn.execute(\n                sql_helper(\"\"\"\n                update summary s\n                SET vector_avg_drct = :drct\n                from stations t\n                where s.iemid = t.iemid and t.id = :station\n                        and t.network = 'ISUSM' and day = :dt\n                            \"\"\"),\n                {\"drct\": drct, \"station\": station, \"dt\": dt},\n            )\n            iemconn.commit()\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), help=\"Date to process\")\ndef main(dt: datetime):\n    \"\"\"Go Main Go\"\"\"\n    dt = dt.date()\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        obs = pd.read_sql(\n            sql_helper(\"\"\"\n    select iemid, station, valid, rh_avg_qc, ws_mph_tmx_qc, ws_mph_qc,\n    ws_mph_max_qc\n    from sm_daily d JOIN stations t on (d.station = t.id)\n    where valid = :dt and t.network = 'ISUSM'\n    \"\"\"),\n            conn,\n            params={\"dt\": dt},\n            index_col=\"iemid\",\n        )\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        summary = pd.read_sql(\n            sql_helper(\"\"\"\n    select d.iemid, avg_rh, max_gust, max_gust_ts, avg_sknt\n    from summary d JOIN stations t on (d.iemid = t.iemid)\n    where day = :dt and t.network = 'ISUSM'\n    \"\"\"),\n            conn,\n            params={\"dt\": dt},\n            index_col=\"iemid\",\n        )\n    obs = obs.join(summary, how=\"left\", rsuffix=\"_summary\")\n    LOG.info(\n        \"Found %s obs for date: %s\",\n        len(obs.index),\n        dt,\n    )\n    with get_dbconn(\"iem\") as pgconn:\n        process(pgconn, obs)\n        pgconn.commit()\n\n    # Lovely one-offs\n    compute_drct(dt)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/isusm/csv2ldm.py",
    "content": "\"\"\"Dump the MADIS CSV file to LDM.\n\nRun from RUN_5MIN.sh\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\n\nimport httpx\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    uri = \"http://iem.local/agclimate/isusm.csv\"\n    try:\n        resp = httpx.get(uri, timeout=30)\n        resp.raise_for_status()\n        content = resp.content\n    except Exception as exp:\n        LOG.warning(\"Failed to fetch %s: %s\", uri, exp)\n        return\n    # Ensure we get back a decent response\n    if content.find(b\".EOO\") < 0:\n        LOG.warning(\"%s failed to produce valid CSV\", uri)\n        return\n    with tempfile.NamedTemporaryFile(delete=False) as tmpfd:\n        tmpfd.write(content)\n    subprocess.call([\"pqinsert\", \"-p\", \"isusm.csv\", tmpfd.name])\n    os.unlink(tmpfd.name)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/isusm/fancy_4inch.py",
    "content": "\"\"\"Pretty Four Inch Depth Iowa Plots\n\nCalled from run_plots.sh\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport click\nimport numpy as np\nimport pandas as pd\nimport pygrib\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table\nfrom pyiem.plot import MapPlot, get_cmap\nfrom pyiem.tracker import loadqc\nfrom pyiem.util import archive_fetch, c2f, convert_value, logger\nfrom scipy.signal import convolve2d\n\nLOG = logger()\n\n\ndef get_idx(lons, lats, lon, lat):\n    \"\"\"Return the grid points closest to this point\"\"\"\n    dist = ((lons - lon) ** 2 + (lats - lat) ** 2) ** 0.5\n    return np.unravel_index(dist.argmin(), dist.shape)\n\n\ndef get_grib(now, fhour):\n    \"\"\"Find the desired grib within the grib messages\"\"\"\n    ppath = now.strftime(\n        f\"%Y/%m/%d/model/nam/%H/nam.t%Hz.conusnest.hiresf0{fhour}.tm00.grib2\"\n    )\n    with archive_fetch(ppath) as gribfn:\n        if gribfn is None:\n            LOG.warning(\"NAM missing: %s\", ppath)\n            return None\n        grbs = pygrib.open(gribfn)\n        try:\n            gs = grbs.select(shortName=\"st\")\n        except ValueError:\n            LOG.warning(\"failed to find st in %s\", gribfn)\n            return None\n        for g in gs:\n            if str(g).find(\"levels 0.0-0.1 m\") > 0:\n                return g\n    return None\n\n\ndef do_nam(valid):\n    \"\"\"Compute county level estimates based on NAM data\"\"\"\n    # run 6z to 6z, close enough\n    now = datetime(valid.year, valid.month, valid.day, 6)\n    lats = None\n    lons = None\n    count = 0\n    grib = None\n    for offset in [0, 6, 12, 18]:\n        runtime = now + timedelta(hours=offset)\n        for fhour in range(6):\n            grib = get_grib(runtime, fhour)\n            if grib is None:\n                continue\n            if lats is None:\n                lats, lons = grib.latlons()\n                data = np.zeros(np.shape(lats))\n    if grib is None or lats is None:\n        LOG.warning(\"Failed to find NAM data for %s\", valid)\n        return None, None, None\n    data += grib.values\n    count += 1\n    return lons, lats, data / float(count)\n\n\ndef sampler(xaxis, yaxis, vals, x, y):\n    \"\"\"This is a hack\"\"\"\n    i = 0\n    while xaxis[i] < x:\n        i += 1\n    j = 0\n    while yaxis[j] < y:\n        j += 1\n    return vals[i, j]\n\n\n@click.command()\n@click.option(\"--days\", type=int, required=True)\ndef main(days: int):\n    \"\"\"Go Main Go\"\"\"\n    nt = Table(\"ISUSM\")\n    qdict = loadqc()\n    ts = date.today() - timedelta(days=days)\n    hlons, hlats, hvals = do_nam(ts)\n    if hlons is None:\n        return\n    nam = convert_value(hvals, \"degK\", \"degF\")\n    window = np.ones((3, 3))\n    nam = convolve2d(nam, window / window.sum(), mode=\"same\", boundary=\"symm\")\n\n    # Query out the data\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            WITH ranges as (\n                select station, count(*), min(t4_c_avg_qc),\n                max(t4_c_avg_qc) from sm_hourly WHERE\n                valid >= :sts and valid < :ets and t4_c_avg_qc > -40\n                and t4_c_avg_qc < 50 GROUP by station\n            )\n            SELECT d.station, d.t4_c_avg_qc,\n            r.max as hourly_max_c, r.min as hourly_min_c, r.count\n            from sm_daily d JOIN ranges r on (d.station = r.station)\n            where valid = :sts and t4_c_avg_qc > -40 and r.count > 19\n        \"\"\"),\n            conn,\n            params={\"sts\": ts, \"ets\": ts + timedelta(days=1)},\n            index_col=\"station\",\n        )\n    if df.empty:\n        LOG.info(\"No data found for %s\", ts)\n        return\n    for col, newcol in zip(\n        [\"t4_c_avg_qc\", \"hourly_min_c\", \"hourly_max_c\"],\n        [\"ob\", \"min\", \"max\"],\n        strict=False,\n    ):\n        df[newcol] = c2f(df[col].values)\n        df = df.drop(columns=col)\n\n    df[\"ticket\"] = False\n    for stid in df.index:\n        df.at[stid, \"ticket\"] = qdict.get(stid, {}).get(\"soil4\", False)\n        x, y = get_idx(  # skipcq\n            hlons, hlats, nt.sts[stid][\"lon\"], nt.sts[stid][\"lat\"]\n        )\n        df.at[stid, \"nam\"] = nam[x, y]\n        df.at[stid, \"lat\"] = nt.sts[stid][\"lat\"]\n        df.at[stid, \"lon\"] = nt.sts[stid][\"lon\"]\n    df = df[~df[\"ticket\"]]\n    df[\"diff\"] = df[\"ob\"] - df[\"nam\"]\n    bias = df[\"diff\"].mean()\n    nam = nam + bias\n    LOG.info(\"NAM bias correction of: %.2fF applied\", bias)\n    # apply nam bias to sampled data\n    df[\"nam\"] += bias\n    df[\"diff\"] = df[\"ob\"] - df[\"nam\"]\n    # we are going to require data be within 1 SD of sampled or 5 deg\n    std = max(5.0, df[\"nam\"].std())\n    for station in df[df[\"diff\"].abs() > std].index.values:\n        LOG.info(\n            \"%s QC'd %s out std: %.2f, ob:%.1f nam:%.1f\",\n            ts.strftime(\"%Y%m%d\"),\n            station,\n            std,\n            df.at[station, \"ob\"],\n            df.at[station, \"nam\"],\n        )\n        df = df.drop(station)\n\n    # Query out centroids of counties...\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        cdf = pd.read_sql(\n            \"\"\"SELECT ST_x(ST_centroid(the_geom)) as lon,\n            ST_y(ST_centroid(the_geom)) as lat\n            from uscounties WHERE state_name = 'Iowa'\n        \"\"\",\n            conn,\n            index_col=None,\n        )\n    for i, row in cdf.iterrows():\n        x, y = get_idx(hlons, hlats, row[\"lon\"], row[\"lat\"])  # skipcq\n        cdf.at[i, \"nam\"] = nam[x, y]\n\n    mp = MapPlot(\n        sector=\"iowa\",\n        title=f\"{ts:%b %d, %Y} Avg [(Hi+Lo)/2] Daily 4 inch Depth Soil Temp\",\n        subtitle=(\n            \"County est. based on bias adj. \"\n            \"NWS NAM Model (black numbers), \"\n            \"ISUSM network observations (red numbers)\"\n        ),\n    )\n    mp.pcolormesh(\n        hlons,\n        hlats,\n        nam,\n        np.arange(10, 101, 5),\n        cmap=get_cmap(\"jet\"),\n        units=\"°F\",\n    )\n    mp.plot_values(\n        df[\"lon\"],\n        df[\"lat\"],\n        df[\"ob\"].values,\n        fmt=\"%.0f\",\n        color=\"r\",\n        labelbuffer=5,\n    )\n    mp.plot_values(\n        cdf[\"lon\"],\n        cdf[\"lat\"],\n        cdf[\"nam\"].values,\n        fmt=\"%.0f\",\n        textsize=11,\n        labelbuffer=5,\n    )\n    mp.drawcounties()\n    routes = \"a\" if days >= 4 else \"ac\"\n    pqstr = (\n        f\"plot {routes} {ts:%Y%m%d}0000 soilt_day{days}.png \"\n        \"isuag_county_4inch_soil.png png\"\n    )\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/isusm/fix_high_low.py",
    "content": "\"\"\"QC high/low temperature against IEMRE.\n\nCalled from RUN_2AM.sh for yesterday and ten days ago.\n\"\"\"\n\nimport click\nimport httpx\nimport pandas as pd\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import convert_value, logger\n\nLOG = logger()\n\n\ndef setaccess(cursor, iemid, col, dt, newval):\n    \"\"\"We have something to set.\"\"\"\n    tmpf = convert_value(newval, \"degC\", \"degF\")\n    cursor.execute(\n        f\"\"\"\n        UPDATE summary_{dt.year} SET {col}_tmpf = %s WHERE\n        iemid = %s and day = %s\n        \"\"\",\n        (tmpf, int(iemid), dt),\n    )\n\n\ndef setval(cursor, station, col, ob, dt, newval):\n    \"\"\"We have something to set.\"\"\"\n    LOG.warning(\"%s[%s] %s %s -> %s [E]\", station, dt, col, ob, newval)\n    cursor.execute(\n        f\"\"\"\n        UPDATE sm_daily SET tair_c_{col}_qc = %s, tair_c_{col}_f = 'E' WHERE\n        station = %s and valid = %s\n        \"\"\",\n        (newval, station, dt),\n    )\n\n\ndef check_date(dt):\n    \"\"\"Look this date over and compare with IEMRE.\"\"\"\n    nt = NetworkTable(\"ISUSM\", only_online=False)\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        obs = pd.read_sql(\n            sql_helper(\n                \"\"\"\n                select station, tair_c_avg_qc, tair_c_max_qc,\n                tair_c_min_qc from sm_daily where valid = :date\n                \"\"\"\n            ),\n            conn,\n            params={\"date\": dt},\n            index_col=\"station\",\n        )\n    # Merge in IEMRE\n    for station in obs.index:\n        # Go fetch me the IEMRE value!\n        uri = (\n            f\"http://mesonet.agron.iastate.edu/iemre/daily/{dt:%Y-%m-%d}/\"\n            f\"{nt.sts[station]['lat']:.2f}/\"\n            f\"{nt.sts[station]['lon']:.2f}/json\"\n        )\n        j = httpx.get(uri, timeout=60).json()\n        iemre = j[\"data\"][0]\n        obs.at[station, \"iemid\"] = nt.sts[station][\"iemid\"]\n        obs.at[station, \"iemre_min\"] = convert_value(\n            iemre[\"daily_low_f\"], \"degF\", \"degC\"\n        )\n        obs.at[station, \"iemre_max\"] = convert_value(\n            iemre[\"daily_high_f\"], \"degF\", \"degC\"\n        )\n\n    obs[\"iemre_avg\"] = (obs[\"iemre_min\"] + obs[\"iemre_max\"]) / 2.0\n\n    pgconn, cursor = get_dbconnc(\"isuag\")\n    ipgconn, icursor = get_dbconnc(\"iem\")\n    for col in [\"min\", \"max\", \"avg\"]:\n        suspect = obs[\n            ((obs[f\"iemre_{col}\"] - obs[f\"tair_c_{col}_qc\"]).abs() > 2)\n            | obs[f\"tair_c_{col}_qc\"].isnull()\n        ]\n        for station, row in suspect.iterrows():\n            setval(\n                cursor,\n                station,\n                col,\n                row[f\"tair_c_{col}_qc\"],\n                dt,\n                row[f\"iemre_{col}\"],\n            )\n            if col != \"avg\":\n                setaccess(icursor, row[\"iemid\"], col, dt, row[f\"iemre_{col}\"])\n    cursor.close()\n    pgconn.commit()\n    icursor.close()\n    ipgconn.commit()\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), help=\"Date to process\")\ndef main(dt):\n    \"\"\"Go Main Go.\"\"\"\n    dt = dt.date()\n    check_date(dt)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/isusm/fix_precip.py",
    "content": "\"\"\"Hey, we are going to QC precipitation, somehow!\n\nImplementation Thoughts:\n\n1. We are really only caring about the situation of having too low of precip\n2. We'll take the stage IV product as gospel\n3. We won't update the 'raw' precip tables\n4. This uses the flag 'E' for estimated\n\"\"\"\n\nfrom datetime import datetime, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport httpx\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import logger, utc\n\nLOG = logger()\n\n\ndef print_debugging(station):\n    \"\"\"Add some more details to the output messages to help with ticket res\"\"\"\n    pgconn = get_dbconn(\"isuag\")\n    cursor = pgconn.cursor()\n    cursor.execute(\n        \"SELECT valid, rain_in_tot, rain_in_tot_qc, \"\n        \"rain_in_tot_f from sm_daily WHERE station = %s and \"\n        \"(rain_in_tot > 0 or rain_in_tot_qc > 0) ORDER by valid DESC LIMIT 10\",\n        (station,),\n    )\n    print(\"     Date           Obs     QC  Flag\")\n    for row in cursor:\n        print(f\"     {row[0]}   {row[1]:5.2f}  {row[2]:5.2f} {row[3]}\")\n\n\ndef get_hdf(nt, dt):\n    \"\"\"Fetch the hourly dataframe for this network\"\"\"\n    # Get our stage IV hourly totals\n    rows = []\n    for station in nt.sts:\n        # service provides UTC dates, so we need to request two days\n        for ldate in [dt, dt + timedelta(days=1)]:\n            uri = (\n                \"http://iem.local/json/stage4/\"\n                f\"{nt.sts[station]['lon']:.2f}/\"\n                f\"{nt.sts[station]['lat']:.2f}/{ldate:%Y-%m-%d}\"\n            )\n            try:\n                resp = httpx.get(uri, timeout=30)\n                resp.raise_for_status()\n                jdata = resp.json()\n            except Exception as exp:\n                LOG.warning(\"JSON stage4 service failed\\n%s\\n%s\", uri, exp)\n                continue\n            for entry in jdata[\"data\"]:\n                rows.append(  # noqa\n                    {\n                        \"station\": station,\n                        \"valid\": datetime.strptime(\n                            entry[\"end_valid\"], ISO8601\n                        ).replace(tzinfo=ZoneInfo(\"UTC\")),\n                        \"precip_in\": entry[\"precip_in\"],\n                    }\n                )\n    df = pd.DataFrame(rows)\n    df = df.fillna(0)\n    return df\n\n\ndef set_iemacces(station, dt, precip_inch):\n    \"\"\"Set the precip value for IEMAccess.\"\"\"\n    # update iemaccess\n    pgconn = get_dbconn(\"iem\")\n    cursor = pgconn.cursor()\n    LOG.info(\"Update iemaccess %s %s %.4f\", station, dt, precip_inch)\n    cursor.execute(\n        \"UPDATE summary s SET pday = %s FROM stations t WHERE \"\n        \"t.iemid = s.iemid and s.day = %s and t.id = %s and \"\n        \"t.network = 'ISUSM'\",\n        (precip_inch, dt, station),\n    )\n    cursor.close()\n    pgconn.commit()\n\n\ndef update_precip(dt, station, hdf):\n    \"\"\"Do the update work\"\"\"\n    sts = utc(dt.year, dt.month, dt.day, 7)\n    ets = sts + timedelta(hours=24)\n    ldf = hdf[\n        (hdf[\"station\"] == station)\n        & (hdf[\"valid\"] >= sts)\n        & (hdf[\"valid\"] < ets)\n    ]\n\n    newpday = ldf[\"precip_in\"].sum()\n    set_iemacces(station, dt, newpday)\n    # update isusm\n    pgconn = get_dbconn(\"isuag\")\n    cursor = pgconn.cursor()\n    # daily\n    cursor.execute(\n        \"UPDATE sm_daily SET rain_in_tot_qc = %s, rain_in_tot_f = 'E' \"\n        \"WHERE valid = %s and station = %s\",\n        (newpday, dt, station),\n    )\n    for _, row in ldf.iterrows():\n        # hourly\n        LOG.info(\n            \"set hourly %s %s %s\", station, row[\"valid\"], row[\"precip_in\"]\n        )\n        cursor.execute(\n            \"UPDATE sm_hourly SET rain_in_tot_qc = %s, rain_in_tot_f = 'E' \"\n            \"WHERE valid = %s and station = %s\",\n            (row[\"precip_in\"], row[\"valid\"], station),\n        )\n        # For minute data, we just apply a linear offset\n        cursor.execute(\n            \"SELECT sum(rain_in_tot) from sm_minute WHERE station = %s and \"\n            \"valid > %s and valid <= %s\",\n            (\n                station,\n                row[\"valid\"],\n                row[\"valid\"] + timedelta(minutes=60),\n            ),\n        )\n        if cursor.rowcount == 0:\n            LOG.warning(\"Can't adjust %s %s, no data\", station, row[\"valid\"])\n            continue\n        current_in = cursor.fetchone()[0]\n        multi = 0\n        value = None\n        if current_in == 0:\n            value = row[\"precip_in\"] / 60.0\n        elif row[\"precip_in\"] > 0:\n            multi = row[\"precip_in\"] / current_in\n        cursor.execute(\n            \"UPDATE sm_minute \"\n            \"SET rain_in_tot_qc = coalesce(%s, rain_in_tot_qc * %s), \"\n            \"rain_in_tot_f = 'E' WHERE valid > %s and valid <= %s \"\n            \"and station = %s\",\n            (\n                value,\n                multi,\n                row[\"valid\"],\n                row[\"valid\"] + timedelta(minutes=60),\n                station,\n            ),\n        )\n        LOG.info(\n            \"minute %s multi %.4f value %.4f rows updated %s\",\n            row[\"valid\"],\n            multi,\n            value,\n            cursor.rowcount,\n        )\n    cursor.close()\n    pgconn.commit()\n\n\n@click.command()\n@click.option(\n    \"--date\",\n    \"dt\",\n    type=click.DateTime(),\n    required=True,\n    help=\"Date to process\",\n)\ndef main(dt: datetime):\n    \"\"\"Go main go\"\"\"\n    dt = dt.date()\n    LOG.info(\"Processing date: %s\", dt)\n    nt = NetworkTable(\"ISUSM\")\n\n    # Get our obs\n    with get_sqlalchemy_conn(\"isuag\") as conn:\n        df = pd.read_sql(\n            \"SELECT station, rain_in_tot from sm_daily where \"\n            \"valid = %s ORDER by station ASC\",\n            conn,\n            params=(dt,),\n            index_col=\"station\",\n        )\n    if df.empty:\n        LOG.warning(\"no observations found for %s, aborting\", dt)\n        return\n    df[\"obs\"] = df[\"rain_in_tot\"]\n    hdf = get_hdf(nt, dt)\n    if hdf.empty:\n        LOG.warning(\"hdf is empty, abort for %s\", dt)\n        return\n\n    # lets try some QC\n    for station in df.index.values:\n        # the daily total is 12 CST to 12 CST, so that is always 6z\n        # so we want the 7z total\n        sts = utc(dt.year, dt.month, dt.day, 7)\n        ets = sts + timedelta(hours=24)\n        # OK, get our data\n        ldf = hdf[\n            (hdf[\"station\"] == station)\n            & (hdf[\"valid\"] >= sts)\n            & (hdf[\"valid\"] < ets)\n        ]\n        df.at[station, \"stage4\"] = ldf[\"precip_in\"].sum()\n\n    df[\"diff\"] = df[\"obs\"] - df[\"stage4\"]\n    for station, row in df.iterrows():\n        LOG.info(\"%s stage4: %s ob: %s\", station, row[\"stage4\"], row[\"obs\"])\n        # We want to QC the case of having too low of precip.\n        # How low is too low?\n        # if stageIV > 0.1 and obs < 0.05\n        # Or if obs is 1 inch over stage4\n        if (row[\"stage4\"] > 0.1 and row[\"obs\"] < 0.05) or (\n            (row[\"obs\"] - row[\"stage4\"]) > 1\n        ):\n            # print to keep email log more pretty\n            print(\n                f\"ISUSM fix_precip {dt} {station} \"\n                f\"stageIV: {row['stage4']:.2f} obs: {row['obs']:.2f}\"\n            )\n            print_debugging(station)\n            if station == \"MCSI4\":\n                LOG.warning(\"Not updating Marcus\")\n                set_iemacces(station, dt, row[\"obs\"])\n                continue\n            update_precip(dt, station, hdf)\n        else:\n            set_iemacces(station, dt, row[\"obs\"])\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/isusm/fix_soil4t.py",
    "content": "\"\"\"Quality control our 4 inch soil temperature data.\n\nCalled from soilm_ingest.py\nCalled after ERA5Land ingest completes\n\"\"\"\n\nfrom datetime import date, datetime\n\nimport click\nimport httpx\nimport pandas as pd\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import convert_value, logger\nfrom sqlalchemy.engine import Connection\n\nLOG = logger()\n\n\ndef setval(\n    conn: Connection,\n    station: str,\n    col: str,\n    ob: float | None,\n    dt: date,\n    newval: float,\n    flag: str,\n):\n    \"\"\"We have something to set.\"\"\"\n    (LOG.warning if flag == \"E\" else LOG.info)(\n        \"%s %s %s %s -> %.1f (%s) [%s]\",\n        station,\n        dt,\n        col,\n        None if ob is None else f\"{ob:.1f}\",\n        newval,\n        None if ob is None else f\"{(ob - newval):.1f}\",\n        flag,\n    )\n    conn.execute(\n        sql_helper(\n            \"\"\"\n        UPDATE sm_daily SET {col}_qc = :newval, {col}_f = :flag WHERE\n        station = :station and valid = :valid\n        \"\"\",\n            col=col,\n        ),\n        {\n            \"station\": station,\n            \"valid\": dt,\n            \"newval\": newval,\n            \"flag\": flag,\n        },\n    )\n\n\ndef do_checks(qcdf: pd.DataFrame, conn: Connection, dt: date, col: str):\n    # We'll take any value\n    obcol = f\"ob_{col}\"\n    for station, row in qcdf.iterrows():\n        # If Ob is None, we have no choice\n        if row[obcol] is None:\n            setval(conn, station, col, row[obcol], dt, row[col], \"E\")\n            continue\n        # Passes if value within 2 C of IEMRE\n        if abs(row[obcol] - row[col]) <= 2:\n            LOG.info(\n                \"%s passes2c %s ob:%.2f iemre:%.2f\",\n                station,\n                obcol,\n                row[obcol],\n                row[col],\n            )\n            # Set the QC value to observed value\n            setval(conn, station, col, row[obcol], dt, row[obcol], \"P\")\n            continue\n        # Passes if within bounds of Iowa values\n        if qcdf[col].min() <= row[obcol] <= qcdf[col].max():\n            LOG.info(\n                \"%s passesbnd %s ob:%.2f iemre:%.2f\",\n                station,\n                col,\n                row[obcol],\n                row[col],\n            )\n            # Set the QC value to observed value\n            setval(conn, station, col, row[obcol], dt, row[obcol], \"P\")\n            continue\n        # We fail\n        setval(conn, station, col, row[obcol], dt, row[col], \"E\")\n\n\ndef passes_bulk_check(qcdf: pd.DataFrame):\n    \"\"\"Can we rely on the model analysis?\"\"\"\n    # What should this arb check look like?\n    # How about at least 70% of the obs are within 5C of IEMRE\n    within_count = ((qcdf[\"ob_t4_c_avg\"] - qcdf[\"t4_c_avg\"]).abs() <= 3).sum()\n    ratio = within_count / len(qcdf.index)\n    if ratio < 0.7:\n        LOG.warning(\n            \"Bulk QC failed with %.1f%% obs inside of 3C\", ratio * 100.0\n        )\n        return False\n    LOG.info(\"Bulk QC passed with %.1f%% obs within 3C\", ratio * 100.0)\n    return True\n\n\n@with_sqlalchemy_conn(\"isuag\")\ndef check_date(dt: date, conn: Connection = None):\n    \"\"\"Look this date over and compare with IEMRE.\"\"\"\n\n    nt = NetworkTable(\"ISUSM\", only_online=False)\n    res = conn.execute(\n        sql_helper(\"\"\"\n    SELECT station,\n    t4_c_min, t4_c_min_f, t4_c_min_qc,\n    t4_c_avg, t4_c_avg_f, t4_c_avg_qc,\n    t4_c_max, t4_c_max_f, t4_c_max_qc\n    from sm_daily where valid = :valid ORDER by station ASC\"\"\"),\n        {\"valid\": dt},\n    )\n    qcrows = []\n    for row in res.mappings():\n        station = row[\"station\"]\n        if nt.sts[station][\"attributes\"].get(\"NO_4INCH\") == \"1\":\n            LOG.info(\"Skipping %s as NO_4INCH\", station)\n            continue\n        # Go fetch me the IEMRE value!\n        uri = (\n            f\"https://mesonet.agron.iastate.edu/iemre/daily/{dt:%Y-%m-%d}/\"\n            f\"{nt.sts[station]['lat']:.2f}/\"\n            f\"{nt.sts[station]['lon']:.2f}/json\"\n        )\n        j = httpx.get(uri, timeout=60).json()\n        iemre = j[\"data\"][0]\n        iemre_low = convert_value(iemre[\"soil4t_low_f\"], \"degF\", \"degC\")\n        iemre_high = convert_value(iemre[\"soil4t_high_f\"], \"degF\", \"degC\")\n        if iemre_high is None or iemre_low is None:\n            LOG.warning(\"%s %s IEMRE is missing\", station, dt)\n            continue\n        iemre_avg = (iemre_high + iemre_low) / 2.0\n        qcrows.append(\n            {\n                \"station\": station,\n                \"ob_t4_c_avg\": row[\"t4_c_avg\"],\n                \"ob_t4_c_avg_f\": row[\"t4_c_avg_f\"],\n                \"ob_t4_c_avg_qc\": row[\"t4_c_avg_qc\"],\n                \"t4_c_avg\": iemre_avg,\n                \"ob_t4_c_min\": row[\"t4_c_min\"],\n                \"ob_t4_c_min_f\": row[\"t4_c_min_f\"],\n                \"ob_t4_c_min_qc\": row[\"t4_c_min_qc\"],\n                \"t4_c_min\": iemre_low,\n                \"ob_t4_c_max\": row[\"t4_c_max\"],\n                \"ob_t4_c_max_f\": row[\"t4_c_max_f\"],\n                \"ob_t4_c_max_qc\": row[\"t4_c_max_qc\"],\n                \"t4_c_max\": iemre_high,\n            }\n        )\n    qcdf = pd.DataFrame(qcrows).set_index(\"station\")\n    if passes_bulk_check(qcdf):\n        for col in [\"t4_c_avg\", \"t4_c_min\", \"t4_c_max\"]:\n            do_checks(qcdf, conn, dt, col)\n        conn.commit()\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), required=True)\ndef main(dt: datetime):\n    \"\"\"Go Main Go.\"\"\"\n    check_date(dt.date())\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/isusm/fix_solar.py",
    "content": "\"\"\"Some of our solar radiation data is not good!\"\"\"\n\nimport json\nfrom datetime import datetime\n\nimport click\nimport httpx\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef check_date(dt):\n    \"\"\"Look this date over and compare with IEMRE.\"\"\"\n    pgconn = get_dbconn(\"isuag\")\n    cursor = pgconn.cursor()\n    cursor2 = pgconn.cursor()\n\n    nt = NetworkTable(\"ISUSM\")\n    cursor.execute(\n        \"SELECT station, slrkj_tot_qc from sm_daily where \"\n        \"valid = %s ORDER by station ASC\",\n        (dt,),\n    )\n    for row in cursor:\n        station = row[0]\n        if station not in nt.sts:\n            LOG.info(\"fix_solar station table does not know %s\", station)\n            continue\n        ob = row[1]\n        # Go fetch me the IEMRE value!\n        uri = (\n            f\"http://iem.local/iemre/daily/{dt:%Y-%m-%d}/\"\n            f\"{nt.sts[station]['lat']:.2f}/\"\n            f\"{nt.sts[station]['lon']:.2f}/json\"\n        )\n        res = httpx.get(uri, timeout=60)\n        j = json.loads(res.content)\n        if j[\"data\"][0][\"srad_mj\"] is None:\n            LOG.info(\"fix_solar %s %s estimate is missing\", station, dt)\n            continue\n        estimate = j[\"data\"][0][\"srad_mj\"] * 1000.0\n        # Never pull data down\n        if ob is not None and ob > estimate:\n            continue\n        # If ob is greater than 5 or the difference is less than 7 <arb>\n        if ob is not None and (ob > 5000 or (estimate - ob) < 7000):\n            continue\n        LOG.info(\"%s %s Ob:%s Est:%.1f\", station, dt, ob, estimate)\n        cursor2.execute(\n            \"UPDATE sm_daily SET slrkj_tot_qc = %s, slrkj_tot_f = 'E' \"\n            \"WHERE station = %s and valid = %s\",\n            (estimate, station, dt),\n        )\n\n    cursor2.close()\n    pgconn.commit()\n\n\ndef fix_nulls():\n    \"\"\"Correct any nulls.\"\"\"\n    pgconn = get_dbconn(\"isuag\")\n    cursor = pgconn.cursor()\n    cursor2 = pgconn.cursor()\n\n    nt = NetworkTable(\"ISUSM\")\n    cursor.execute(\n        \"\"\"\n        SELECT station, valid from sm_daily where (slrkj_tot_qc is null or\n        slrkj_tot_qc < 0.1 or slrkj_tot_qc > 35000)\n        and valid > '2019-04-14' ORDER by valid ASC\n    \"\"\"\n    )\n    for row in cursor:\n        station = row[0]\n        v1 = datetime(row[1].year, row[1].month, row[1].day)\n        v2 = v1.replace(hour=23, minute=59)\n        cursor2.execute(\n            \"\"\"\n            SELECT sum(slrkj_tot_qc), count(*) from sm_hourly WHERE\n            station = %s and valid >= %s and valid < %s\n        \"\"\",\n            (station, v1, v2),\n        )\n        row2 = cursor2.fetchone()\n        if row2[0] is None or row2[0] < 0.01:\n            LOG.warning(\n                \"%s %s summed %s hourly for solar, using IEMRE\",\n                station,\n                v1.strftime(\"%d %b %Y\"),\n                row2[0],\n            )\n            if station not in nt.sts:\n                LOG.warning(\"unknown station %s metadata, skipping\", station)\n                continue\n            # Go fetch me the IEMRE value!\n            uri = (\n                f\"http://iem.local/iemre/daily/{v1:%Y-%m-%d}/\"\n                f\"{nt.sts[station]['lat']:.2f}/\"\n                f\"{nt.sts[station]['lon']:.2f}/json\"\n            )\n            res = httpx.get(uri, timeout=60)\n            if res.status_code != 200:\n                LOG.warning(\"Fix solar got %s from %s\", res.status_code, uri)\n                continue\n            j = json.loads(res.content)\n            if not j[\"data\"]:\n                LOG.warning(\n                    \"fix solar: No data for %s %s\",\n                    station,\n                    v1.strftime(\"%d %b %Y\"),\n                )\n                continue\n            row2 = [j[\"data\"][0][\"srad_mj\"], -1]\n        if row2[0] is None or row2[0] < 0.01:\n            LOG.info(\"Triple! Failure %s %s\", station, v1.strftime(\"%d %b %Y\"))\n            continue\n        LOG.warning(\n            \"%s %s -> %.2f (%s obs)\",\n            station,\n            v1.strftime(\"%d %b %Y\"),\n            row2[0],\n            row2[1],\n        )\n        if row2[0] > 35000:\n            LOG.warning(\"New value %s too large, skipping\", row2[0])\n            continue\n        cursor2.execute(\n            \"UPDATE sm_daily SET slrkj_tot_qc = %s \"\n            \"WHERE station = %s and valid = %s\",\n            (row2[0], station, row[1]),\n        )\n\n    cursor2.close()\n    pgconn.commit()\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), required=False)\ndef main(dt: datetime | None):\n    \"\"\"Go Main Go.\"\"\"\n    # if we are given an argument, run for that date\n    if dt is not None:\n        check_date(dt.date())\n    else:\n        # Correct any nulls in the database\n        fix_nulls()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/isusm/isusm2rr5.py",
    "content": "\"\"\"Create the RR5 SHEF product that the Weather Bureau Desires\n\nRun from RUN_10MIN.sh\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nfrom zoneinfo import ZoneInfo\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.tracker import loadqc\nfrom pyiem.util import c2f, utc\n\n\ndef mt(prefix, tmpf, depth, q):\n    \"\"\"Properly encode a value at depth into SHEF\"\"\"\n    if tmpf is None or \"soil4\" in q or pd.isna(tmpf):\n        return \"\"\n    val = float(depth)\n    val += abs(tmpf) / 1000.0\n    if tmpf < 0:\n        val = 0 - val\n\n    return f\"/{prefix} {val:.3f}\"\n\n\ndef generate_rr5():\n    \"\"\"Create the RR5 Data\"\"\"\n    qcdict = loadqc()\n    data = (\n        \"\\n\\n\\n\"\n        \": Iowa State University Soil Moisture Network\\n\"\n        \": Data contact Daryl Herzmann akrherz@iastate.edu\\n\"\n        f\": File generated {utc():%Y-%m-%d %H:%M} UTC\\n\"\n    )\n    with get_sqlalchemy_conn(\"isuag\") as dbconn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            with recent as (\n                select *,\n                rank() OVER (PARTITION by station ORDER by valid desc)\n                from sm_minute where valid > now() - '90 minutes'::interval\n            )\n            select * from recent where rank = 1\n            \"\"\"),\n            dbconn,\n            index_col=\"station\",\n        )\n    df[\"valid\"] = df[\"valid\"].dt.tz_convert(ZoneInfo(\"America/Chicago\"))\n    for station, row in df.iterrows():\n        q = qcdict.get(station, {})\n        if \"tmpf\" in q or pd.isna(row[\"tair_c_avg_qc\"]):\n            tmpf = \"M\"\n        else:\n            value = c2f(row[\"tair_c_avg_qc\"])\n            tmpf = f\"{value:.1f}\"\n        # prevent duplicated entries due to having both sensors\n        mv_done = []\n        tv_done = []\n        tokens = []\n        for depth in [2, 4, 8, 12, 14, 16, 20, 24, 28, 30, 32, 36, 40, 42, 52]:\n            for prefix in [\"\", \"sv_\"]:\n                varname = f\"{prefix}vwc{depth}_qc\"\n                if varname in df.columns and depth not in mv_done:\n                    value = row[varname]\n                    if pd.notna(value):\n                        tokens.append(\n                            mt(\"MVIRZZ\", value * 100.0, str(depth), q)\n                        )\n                        mv_done.append(depth)\n                varname = f\"{prefix}t{depth}_c_avg_qc\"\n                if varname in df.columns and depth not in tv_done:\n                    value = row[varname]\n                    if pd.notna(value):\n                        tokens.append(mt(\"TVIRZZ\", c2f(value), str(depth), q))\n                        tv_done.append(depth)\n                varname = f\"{prefix}t{depth}_qc\"\n                if varname in df.columns and depth not in tv_done:\n                    value = row[varname]\n                    if pd.notna(value):\n                        tokens.append(mt(\"TVIRZZ\", c2f(value), str(depth), q))\n                        tv_done.append(depth)\n        full_message = (\n            f\".A {station} {row['valid']:%Y%m%d} C DH{row['valid']:%H%M}\"\n            f\"/TAIRZZ {tmpf} {' '.join(tokens)}\\n\"\n        )\n        # We want to split the line into appropriate chunks, whilst ensuring\n        # SHEF compliance\n        i = 0\n        parts = full_message.strip().split(\"/\")\n        line = \"\"\n        for part in parts:\n            line += f\"{part} /\"\n            if len(line) > 80:\n                if i > 0:\n                    line = f\".A{i} /{line}\"\n                data += line.rstrip(\"/\").strip() + \"\\n\"\n                line = \"\"\n                i += 1\n        if line:\n            if i > 0:\n                line = f\".A{i} /{line}\"\n            data += line.rstrip(\"/\").strip() + \"\\n\"\n    return data\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    rr5data = generate_rr5()\n    (tmpfd, tmpfn) = tempfile.mkstemp()\n    os.write(tmpfd, rr5data.encode(\"utf-8\"))\n    os.close(tmpfd)\n    subprocess.call([\"pqinsert\", \"-p\", \"SUADSMRR5DMX.dat\", tmpfn])\n    os.unlink(tmpfn)\n\n\ndef test_mt():\n    \"\"\"Conversion of values to SHEF encoded values\"\"\"\n    assert mt(\"TV\", 4, 40, {}) == \"/TV 40.004\"\n    assert mt(\"TV\", -4, 40, {}) == \"/TV -40.004\"\n    assert mt(\"TV\", 104, 40, {}) == \"/TV 40.104\"\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/isusm/nmp_monthly_email.py",
    "content": "\"\"\"Generates an email with the National Mesonet Program contact status\n\nRequires: iem property `nmp_monthly_email_list`\n\nPeriod of performance is previous month 7th thru this month 6th\n\nRun on the 7th from `RUN_2AM.sh`\n\n\"\"\"\n\nimport smtplib\nfrom datetime import date, datetime, timedelta\nfrom email.mime.text import MIMEText\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.util import get_properties\n\n\ndef generate_report(start_date, end_date):\n    \"\"\"Generate the text report\"\"\"\n    days = (end_date - start_date).days + 1\n    totalobs = days * 24 * 25\n    with get_sqlalchemy_conn(\"isuag\") as pgconn:\n        df = pd.read_sql(\n            \"SELECT station, count(*) from sm_hourly WHERE valid >= %s \"\n            \"and valid < %s GROUP by station ORDER by station\",\n            pgconn,\n            params=(start_date, end_date + timedelta(days=1)),\n            index_col=\"station\",\n        )\n    performance = min([100, df[\"count\"].sum() / float(totalobs) * 100.0])\n    return \"\"\"\nIowa Environmental Mesonet Data Delivery Report\n===============================================\n\n  Dataset: ISU Soil Moisture Network\n  Performance Period: %s thru %s\n  Reported Performance: %.1f%%\n  Reporting Platforms: %.0f\n\nAdditional Details\n==================\n  Total Required Obs: %.0f (24 hourly obs x 25 platforms x %.0f days)\n  Observations Delivered: %.0f\n  Report Generated: %s\n\n.END\n\"\"\" % (\n        start_date.strftime(\"%d %b %Y\"),\n        end_date.strftime(\"%d %b %Y\"),\n        performance,\n        len(df.index),\n        totalobs,\n        days,\n        df[\"count\"].sum(),\n        datetime.now().strftime(\"%d %B %Y %H:%M %p\"),\n    )\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    emails = get_properties()[\"nmp_monthly_email_list\"].split(\",\")\n\n    end_date = date.today().replace(day=6)\n    start_date = (end_date - timedelta(days=40)).replace(day=7)\n    report = generate_report(start_date, end_date)\n\n    msg = MIMEText(report)\n    msg[\"Subject\"] = \"[IEM] Synoptic Contract Deliverables Report\"\n    msg[\"From\"] = \"IEM Automation <akrherz@iastate.edu>\"\n    msg[\"To\"] = \", \".join(emails)\n    msg.add_header(\"reply-to\", \"akrherz@iastate.edu\")\n\n    # Send the email via our own SMTP server.\n    smtp = smtplib.SMTP(\"mailhub.iastate.edu\")\n    smtp.sendmail(msg[\"From\"], msg[\"To\"], msg.as_string())\n    smtp.quit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/isusm/run_plots.sh",
    "content": "dstr=$(date --date '1 day ago' +'%Y-%m-%d')\nWEBHOST=\"iem.local\"\nPQI=\"pqinsert\"\nURI=\"http://${WEBHOST}/plotting/auto/plot/199\"\n\nrunner () {\n  fn=$1\n  wget -q ${URI}/opt:${2}::date:${dstr}.png -O ${fn}.png\n  magick ${fn}.png ${fn}.jpg\n  magick ${fn}.jpg ${fn}.gif\n  gifsicle -b -O2 ${fn}.gif\n  $PQI -p \"plot c 000000000000 agclimate/${fn}.png bogus png\" ${fn}.png\n  $PQI -p \"plot c 000000000000 agclimate/${fn}.gif bogus gif\" ${fn}.gif\n  $PQI -p \"plot c 000000000000 agclimate/${fn}.jpg bogus jpg\" ${fn}.jpg\n  rm -f ${fn}.jpg ${fn}.png ${fn}.gif\n}\n\n#___________________________________________________________\nrunner \"soil-hilo-out\" 1\nrunner \"air-temp-out\" 2\nrunner \"4in-temp-out\" 3\nrunner \"rad-out\" 4\nrunner \"et-out\" 5\nrunner \"prec-out\" 6\nrunner \"pk-wind-out\" 7\nrunner \"avewind-out\" 8\n\nfp=\"chill-sum\"\nwget -q http://${WEBHOST}/GIS/apps/agclimate/chill.php -O ${fp}.png\n$PQI -p \"plot c 000000000000 agclimate/${fp}.png bogus png\" ${fp}.png\nrm -f ${fp}.png\n\nfp=\"mon-prec-out\"\nwget -q http://${WEBHOST}/GIS/apps/agclimate/month.php\\?dvar=rain_in_tot -O ${fp}.png\n$PQI -p \"plot c 000000000000 agclimate/${fp}.png bogus png\" ${fp}.png\nrm -f ${fp}.png\n\nfp=\"mon-et-out\"\nwget -q http://${WEBHOST}/GIS/apps/agclimate/month.php\\?dvar=dailyet -O ${fp}.png\n$PQI -p \"plot c 000000000000 agclimate/${fp}.png bogus png\" ${fp}.png\nrm -f ${fp}.png\n\npython fancy_4inch.py --days=1\npython fancy_4inch.py --days=2\npython fancy_4inch.py --days=3\n"
  },
  {
    "path": "scripts/isusm/zap_temp_humid.py",
    "content": "\"\"\"Properly zap a period of data from the database\"\"\"\n\nimport subprocess\nfrom datetime import datetime\n\nimport click\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef do_isuag(nwsli, sts, ets):\n    \"\"\"Do ISUAG Table\"\"\"\n    pgconn = get_dbconn(\"isuag\")\n    cursor = pgconn.cursor()\n    # Cull minute\n    cursor.execute(\n        \"\"\"\n        UPDATE sm_minute SET\n        tair_c_avg_qc = null, tair_c_avg_f = 'M',\n        rh_qc = null, rh_f = 'M'\n        WHERE station = %s and valid >= %s and valid <= %s\n    \"\"\",\n        (nwsli, sts, ets),\n    )\n    LOG.info(\"    sm_15minute updated %s rows\", cursor.rowcount)\n    # Cull hourly\n    cursor.execute(\n        \"\"\"\n        UPDATE sm_hourly SET\n        tair_c_avg_qc = null, tair_c_avg_f = 'M',\n        rh_qc = null, rh_f = 'M'\n        WHERE station = %s and valid >= %s and valid <= %s\n    \"\"\",\n        (nwsli, sts, ets),\n    )\n    LOG.info(\"    sm_hourly updated %s rows\", cursor.rowcount)\n    # cull daily\n    cursor.execute(\n        \"\"\"\n        UPDATE sm_daily SET\n        tair_c_avg_qc = null, tair_c_avg_f = 'M',\n        tair_c_min_qc = null, tair_c_min_f = 'M',\n        tair_c_max_qc = null, tair_c_max_f = 'M',\n        rh_avg_qc = null, rh_avg_f = 'M'\n        WHERE station = %s and valid >= %s and valid <= %s\n    \"\"\",\n        (nwsli, sts.date(), ets.date()),\n    )\n    LOG.info(\"    sm_daily updated %s rows\", cursor.rowcount)\n    cursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\ndef do_iem(nwsli, sts, ets):\n    \"\"\"Update the summary table\"\"\"\n    pgconn = get_dbconn(\"iem\")\n    cursor = pgconn.cursor()\n    # cull iemre daily\n    cursor.execute(\n        \"\"\"\n        UPDATE summary s SET\n        max_tmpf = null, min_tmpf = null, max_dwpf = null, min_dwpf = null,\n        avg_rh = null, min_rh = null, max_rh = null\n        FROM stations t\n        WHERE t.id = %s and t.network = 'ISUSM' and s.iemid = t.iemid\n        and day >= %s and day <= %s\n    \"\"\",\n        (nwsli, sts.date(), ets.date()),\n    )\n    LOG.info(\"    summary updated %s rows\", cursor.rowcount)\n    cursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\n@click.command()\n@click.option(\"--station\", help=\"Station Identifier\", required=True)\n@click.option(\n    \"--sts\", help=\"Start Timestamp\", required=True, type=click.DateTime()\n)\n@click.option(\n    \"--ets\", help=\"End Timestamp\", required=True, type=click.DateTime()\n)\ndef main(station: str, sts: datetime, ets: datetime):\n    \"\"\"Go Main Go\"\"\"\n    res = input(f\"{station} {sts}->{ets}, OK? y/[n] \")\n    if str(res) != \"y\":\n        LOG.warning(\"ABORT\")\n        return\n    do_iem(station, sts, ets)\n    do_isuag(station, sts, ets)\n    LOG.info(\"Redoing estimates\")\n    subprocess.call([\"python\", \"fix_temps.py\"])\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/isusm/zero_daily_precip.py",
    "content": "\"\"\"Sometimes we need to completely zero out precip for a day\n\nLikely due to water being dumped into the tipping bucket to clean it :/\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport click\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import utc\n\n\ndef zero_hourly(station, sts, ets):\n    \"\"\"Zero out the hourly data\"\"\"\n    pgconn = get_dbconn(\"isuag\")\n    cursor = pgconn.cursor()\n    for table in [\"sm_hourly\", \"sm_minute\"]:\n        cursor.execute(\n            f\"\"\"\n            UPDATE {table}\n            SET rain_in_tot_qc = 0, rain_in_tot_f = 'Z', rain_in_tot = 0\n            WHERE station = %s and valid > %s and valid <= %s\n        \"\"\",\n            (station, sts, ets),\n        )\n        print(\"%s updated %s rows\" % (table, cursor.rowcount))\n    cursor.close()\n    pgconn.commit()\n\n\ndef zero_daily(station, date):\n    \"\"\"Zero out the daily data\"\"\"\n    pgconn = get_dbconn(\"isuag\")\n    cursor = pgconn.cursor()\n    cursor.execute(\n        \"\"\"\n        UPDATE sm_daily\n        SET rain_in_tot_qc = 0, rain_in_tot_f = 'Z', rain_in_tot = 0\n        WHERE station = %s and valid = %s\n    \"\"\",\n        (station, date),\n    )\n    print(\"sm_daily updated %s rows\" % (cursor.rowcount,))\n    cursor.close()\n    pgconn.commit()\n\n\ndef zero_iem(station, date):\n    \"\"\"Zero out the hourly data\"\"\"\n    pgconn = get_dbconn(\"iem\")\n    cursor = pgconn.cursor()\n    cursor.execute(\n        \"\"\"\n        UPDATE summary s\n        SET pday = 0\n        FROM stations t\n        WHERE s.iemid = t.iemid and t.id = %s and t.network = 'ISUSM'\n        and day = %s\n    \"\"\",\n        (station, date),\n    )\n    print(\"summary updated %s rows\" % (cursor.rowcount,))\n    cursor.close()\n    pgconn.commit()\n\n\n@click.command()\n@click.option(\"--station\", required=True, help=\"ISUSM Station ID\")\n@click.option(\n    \"--date\",\n    \"dt\",\n    type=click.DateTime(),\n    required=True,\n    help=\"Date to zero out\",\n)\ndef main(station: str, dt: datetime):\n    \"\"\"Go Main\"\"\"\n    dt = dt.date()\n    # Our weather stations are in CST, so the 'daily' precip is for a 6z to 6z\n    # period and not calendar day, the hourly values are in the rears\n    sts = utc(dt.year, dt.month, dt.day, 6)\n    ets = sts + timedelta(hours=24)\n    zero_hourly(station, sts, ets)\n    zero_daily(station, dt)\n    zero_iem(station, dt)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/model/motherlode_ingest.py",
    "content": "\"\"\"\nMine grid point extracted values for our good and the good of the IEM\nUse Unidata's motherlode server :)\n\nCalled from RUN_40_AFTER.sh\n\"\"\"\n\nimport sys\nfrom datetime import datetime, timedelta, timezone\nfrom io import StringIO\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport httpx\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import logger\nfrom sqlalchemy.engine import Connection\n\nLOG = logger()\nNT = NetworkTable(\"IA_ASOS\")\n\nBASE_URL = \"https://thredds.ucar.edu/thredds/ncss/grid/grib/NCEP/\"\nBASE_URL2 = (\n    \"https://thredds-test.unidata.ucar.edu/thredds/ncss/grid/grib/NCEP/\"\n)\nURLS = {\n    \"NAM\": (\n        \"NAM/CONUS_12km/conduit/NAM_CONUS_12km_conduit_%Y%m%d_%H00.grib2/GC\"\n    ),\n    \"GFS\": \"GFS/Global_0p5deg/GFS_Global_0p5deg_%Y%m%d_%H00.grib2/GC\",\n    \"RAP\": \"RAP/CONUS_13km/RR_CONUS_13km_%Y%m%d_%H00.grib2/GC\",\n}\nVLOOKUP = {\n    \"sbcape\": {\n        \"NAM\": \"Convective_available_potential_energy_surface\",\n        \"GFS\": \"Convective_available_potential_energy_surface\",\n        \"RAP\": \"Convective_available_potential_energy_surface\",\n    },\n    \"sbcin\": {\n        \"NAM\": \"Convective_inhibition_surface\",\n        \"GFS\": \"Convective_inhibition_surface\",\n        \"RAP\": \"Convective_inhibition_surface\",\n    },\n    \"pwater\": {\n        \"NAM\": \"Precipitable_water_entire_atmosphere_single_layer\",\n        \"GFS\": \"Precipitable_water_entire_atmosphere_single_layer\",\n        \"RAP\": \"Precipitable_water_entire_atmosphere_single_layer\",\n    },\n}\n\n\ndef xref(row, varname, model):\n    \"\"\"Safer lookup\"\"\"\n    rowkey = VLOOKUP[varname][model]\n    if rowkey not in row:\n        LOG.warning(\"Failed to find %s in %s\\nrow:%s\", varname, model, row)\n        sys.exit()\n    return row[rowkey]\n\n\ndef run(conn: Connection, model, station, lon, lat, ts):\n    \"\"\"\n    Ingest the model data for a given Model, stationid and timestamp\n    \"\"\"\n\n    vstring = \"\"\n    for val in VLOOKUP.values():\n        if val[model] is not None:\n            vstring += f\"var={val[model]}&\"\n\n    host = (\n        BASE_URL\n        if (datetime.now(timezone.utc) - ts).total_seconds() < 86400\n        else BASE_URL2\n    )\n    url = (\n        f\"{host}{ts.strftime(URLS[model])}?{vstring}latitude={lat}&\"\n        f\"longitude={lon}&temporal=all&vertCoord=\"\n        \"&accept=csv&point=true\"\n    )\n    try:\n        fp = httpx.get(url, timeout=120)\n        if fp.status_code == 404:\n            LOG.info(url)\n            LOG.warning(\"Grid %s %s missing\", model, ts)\n            return 0\n        sio = StringIO(fp.text)\n    except Exception as exp:\n        print(exp)\n        print(url)\n        LOG.warning(\n            \"FAIL ts: %s station: %s model: %s\",\n            ts.strftime(\"%Y-%m-%d %H\"),\n            station,\n            model,\n        )\n        return None\n\n    table = f\"model_gridpoint_{ts.year}\"\n    sql = (\n        \"DELETE from {table} WHERE station = :station \"\n        \"and model = :model and runtime = :runtime\"\n    )\n    args = {\"station\": station, \"model\": model, \"runtime\": ts}\n    res = conn.execute(sql_helper(sql, table=table), args)\n    if res.rowcount > 0:\n        LOG.warning(\n            \"Deleted %s rows for ts: %s station: %s model: %s\",\n            res.rowcount,\n            ts,\n            station,\n            model,\n        )\n\n    count = 0\n    sio.seek(0)\n    df = pd.read_csv(sio)\n    for _, row in df.iterrows():\n        for k in row.keys():\n            row[k[: k.find(\"[\")]] = row[k]\n        sbcape = xref(row, \"sbcape\", model)\n        sbcin = xref(row, \"sbcin\", model)\n        pwater = xref(row, \"pwater\", model)\n        fts = datetime.strptime(row[\"time\"], ISO8601)\n        fts = fts.replace(tzinfo=ZoneInfo(\"UTC\"))\n        sql = \"\"\"INSERT into {table} (station, model, runtime,\n              ftime, sbcape, sbcin, pwater)\n              VALUES (:station, :model, :runtime, :ftime, :sbcape, :sbcin,\n              :pwater)\"\"\"\n        args = {\n            \"station\": station,\n            \"model\": model,\n            \"runtime\": ts,\n            \"ftime\": fts,\n            \"sbcape\": sbcape,\n            \"sbcin\": sbcin,\n            \"pwater\": pwater,\n        }\n        conn.execute(sql_helper(sql, table=table), args)\n        count += 1\n    return count\n\n\ndef run_model(conn: Connection, model, runtime):\n    \"\"\"Actually do a model and timestamp\"\"\"\n    for sid in NT.sts:\n        cnt = run(\n            conn,\n            model,\n            f\"K{sid}\",\n            NT.sts[sid][\"lon\"],\n            NT.sts[sid][\"lat\"],\n            runtime,\n        )\n        if cnt == 0:\n            LOG.warning(\"No data K%s %s %s\", sid, runtime, model)\n\n\ndef check_and_run(conn: Connection, model, runtime):\n    \"\"\"Check the database for missing data\"\"\"\n    table = f\"model_gridpoint_{runtime.year}\"\n    res = conn.execute(\n        sql_helper(\n            \"SELECT * from {table} WHERE runtime = :rt and model = :model\",\n            table=table,\n        ),\n        {\"rt\": runtime, \"model\": model},\n    )\n    if res.rowcount < 10:\n        LOG.warning(\n            \"Rerunning %s [runtime=%s] due to rowcount %s\",\n            model,\n            runtime,\n            res.rowcount,\n        )\n        run_model(conn, model, runtime)\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), required=True)\ndef main(valid: datetime):\n    \"\"\"Do Something\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    with get_sqlalchemy_conn(\"mos\") as conn:\n        if valid.hour % 6 == 0:\n            ts = valid - timedelta(hours=6)\n            for model in [\"GFS\", \"NAM\"]:\n                run_model(conn, model, ts)\n                conn.commit()\n                check_and_run(conn, model, ts - timedelta(days=7))\n                conn.commit()\n\n        ts = valid - timedelta(hours=2)\n        run_model(conn, \"RAP\", ts)\n        conn.commit()\n        check_and_run(conn, \"RAP\", ts - timedelta(days=7))\n        conn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/month/obs_precip.py",
    "content": "\"\"\"Generate a map of this month's observed precip\"\"\"\n\nfrom datetime import datetime\n\nfrom pyiem import tracker\nfrom pyiem.database import get_dbconnc\nfrom pyiem.plot import MapPlot\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    now = datetime.now()\n\n    qdict = tracker.loadqc()\n\n    pgconn, icursor = get_dbconnc(\"iem\")\n\n    # Compute normal from the climate database\n    sql = \"\"\"SELECT id,\n          sum(pday) as precip,\n          ST_x(geom) as lon, ST_y(geom) as lat from summary_%s s, stations t\n         WHERE t.network = 'IA_ASOS' and\n          extract(month from day) = %s\n          and extract(year from day) = extract(year from now())\n         and t.iemid = s.iemid GROUP by id, lat, lon\n    \"\"\" % (\n        now.year,\n        now.strftime(\"%m\"),\n    )\n\n    lats = []\n    lons = []\n    precip = []\n    labels = []\n    icursor.execute(sql)\n    for row in icursor:\n        sid = row[\"id\"]\n        labels.append(sid)\n        lats.append(row[\"lat\"])\n        lons.append(row[\"lon\"])\n        if (\n            not qdict.get(sid, {}).get(\"precip\", False)\n            and row[\"precip\"] is not None\n        ):\n            precip.append(\"%.2f\" % (row[\"precip\"],))\n        else:\n            precip.append(\"M\")\n    pgconn.close()\n    mp = MapPlot(\n        title=\"This Month's Precipitation [inch]\",\n        subtitle=now.strftime(\"%b %Y\"),\n        axisbg=\"white\",\n    )\n    mp.plot_values(lons, lats, precip, labels=labels)\n    pqstr = \"plot c 000000000000 summary/month_prec.png bogus png\"\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/month/obs_precip_coop.py",
    "content": "\"\"\"Generate a map of this month's observed precip\"\"\"\n\nfrom datetime import date, timedelta\n\nfrom pyiem.database import get_dbconnc\nfrom pyiem.plot import MapPlot\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    now = date.today()\n    pgconn, icursor = get_dbconnc(\"iem\")\n\n    day1 = now.replace(day=1)\n    day2 = (now + timedelta(days=35)).replace(day=1)\n\n    # Compute normal from the climate database\n    sql = \"\"\"SELECT id,\n        sum(pday) as precip,\n        sum(CASE when pday is null THEN 1 ELSE 0 END) as missing,\n        ST_x(s.geom) as lon, ST_y(s.geom) as lat\n        from summary_%s c JOIN stations s\n        ON (s.iemid = c.iemid)\n        WHERE s.network in ('IA_COOP') and s.iemid = c.iemid and\n        day >= '%s' and day < '%s'\n        GROUP by id, lat, lon\"\"\" % (\n        now.year,\n        day1.strftime(\"%Y-%m-%d\"),\n        day2.strftime(\"%Y-%m-%d\"),\n    )\n\n    lats = []\n    lons = []\n    precip = []\n    labels = []\n    icursor.execute(sql)\n    for row in icursor:\n        if row[\"missing\"] > (now.day / 3) or row[\"precip\"] is None:\n            continue\n\n        sid = row[\"id\"]\n        labels.append(sid)\n        lats.append(row[\"lat\"])\n        lons.append(row[\"lon\"])\n        precip.append(row[\"precip\"])\n    pgconn.close()\n\n    mp = MapPlot(\n        title=\"This Month's Precipitation [inch] (NWS COOP Network)\",\n        subtitle=now.strftime(\"%b %Y\"),\n        axisbg=\"white\",\n    )\n    mp.plot_values(lons, lats, precip, fmt=\"%.2f\", labels=labels)\n    mp.drawcounties()\n    pqstr = \"plot c 000000000000 coopMonthPlot.png bogus png\"\n    mp.postprocess(view=False, pqstr=pqstr)\n    mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/month/plot_avgt.py",
    "content": "\"\"\"Plot the average temperature for the month\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport numpy as np\nfrom pyiem.database import get_dbconnc\nfrom pyiem.plot import MapPlot\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    now = datetime.now()\n    pgconn, icursor = get_dbconnc(\"iem\")\n\n    day1 = date.today().replace(day=1)\n    day2 = (day1 + timedelta(days=35)).replace(day=1)\n\n    lats = []\n    lons = []\n    vals = []\n    valmask = []\n    table = f\"summary_{day1:%Y}\"\n    icursor.execute(\n        f\"\"\"\n        SELECT id, s.network, ST_x(s.geom) as lon, ST_y(s.geom) as lat,\n        avg( (max_tmpf + min_tmpf)/2.0 ) as avgt , count(*) as cnt\n        from {table} c JOIN stations s ON (s.iemid = c.iemid)\n        WHERE s.network = 'IA_ASOS' and\n        day >= %s and day < %s\n        and max_tmpf > -30 and min_tmpf < 90 GROUP by id, s.network, lon, lat\n    \"\"\",\n        (day1, day2),\n    )\n    for row in icursor:\n        if row[\"cnt\"] != now.day:\n            continue\n        lats.append(row[\"lat\"])\n        lons.append(row[\"lon\"])\n        vals.append(row[\"avgt\"])\n        valmask.append(row[\"network\"] == \"IA_ASOS\")\n    pgconn.close()\n    if len(vals) < 3:\n        return\n\n    mp = MapPlot(\n        axisbg=\"white\",\n        title=\"Iowa %s Average Temperature\" % (now.strftime(\"%Y %B\"),),\n        subtitle=(\"Average of the High + Low ending: %s\")\n        % (now.strftime(\"%d %B\"),),\n    )\n    minval = int(min(vals))\n    maxval = max([int(max(vals)) + 3, minval + 11])\n    clevs = np.linspace(minval, maxval, 10, dtype=\"i\")\n    mp.contourf(lons, lats, vals, clevs)\n    mp.drawcounties()\n    mp.plot_values(lons, lats, vals, \"%.1f\")\n    pqstr = \"plot c 000000000000 summary/mon_mean_T.png bogus png\"\n    mp.postprocess(view=False, pqstr=pqstr)\n    mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/month/plot_gdd.py",
    "content": "\"\"\"Generate a plot of GDD\"\"\"\n\nfrom datetime import date\n\nfrom pyiem.util import logger, web2ldm\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    today = date.today()\n    first = today.replace(day=1)\n    url = (\n        \"http://iem.local/plotting/auto/plot/97/d:sector::sector:IA::\"\n        f\"var:gdd_sum::gddbase:50::gddceil:86::\"\n        f\"date1:{first.strftime('%Y-%m-%d')}::usdm:no::\"\n        f\"date2:{today.strftime('%Y-%m-%d')}::p:contour::cmap:RdBu_r::c:yes\"\n        \".png\"\n    )\n    pqstr = \"plot c 000000000000 summary/gdd_mon.png bogus png\"\n    LOG.info(url)\n    LOG.info(pqstr)\n    res = web2ldm(url, pqstr)\n    if not res:\n        LOG.info(\"failed to work!\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/month/plot_sdd.py",
    "content": "\"\"\"Generate a plot of SDD\"\"\"\n\nimport sys\nfrom datetime import datetime\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot import MapPlot\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    now = datetime.now()\n\n    pgconn = get_dbconn(\"coop\")\n    ccursor = pgconn.cursor()\n\n    nt = NetworkTable(\"IACLIMATE\")\n\n    lats = []\n    lons = []\n    sdd86 = []\n    valmask = []\n    ccursor.execute(\n        \"SELECT station, sum(sdd86(high, low)) as sdd from alldata_ia \"\n        \"WHERE year = %s and month = %s GROUP by station\",\n        (now.year, now.month),\n    )\n    for row in ccursor:\n        if row[0] not in nt.sts:\n            continue\n        lats.append(nt.sts[row[0]][\"lat\"])\n        lons.append(nt.sts[row[0]][\"lon\"])\n        sdd86.append(float(row[1]))\n        valmask.append(True)\n\n    if len(sdd86) < 5:\n        LOG.debug(\"aborting due to %s obs\", len(sdd86))\n        sys.exit()\n\n    mp = MapPlot(\n        axisbg=\"white\",\n        title=\"Iowa %s SDD Accumulation\" % (now.strftime(\"%B %Y\"),),\n    )\n    if max(sdd86) > 5:\n        mp.contourf(\n            lons, lats, sdd86, range(int(min(sdd86) - 1), int(max(sdd86) + 1))\n        )\n    else:\n        mp.plot_values(lons, lats, sdd86, fmt=\"%.0f\")\n    pqstr = \"plot c 000000000000 summary/sdd_mon.png bogus png\"\n    mp.postprocess(view=False, pqstr=pqstr)\n    mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/mos/current_bias.py",
    "content": "\"\"\"Analysis of current MOS temperature bias.\"\"\"\n\nfrom datetime import datetime, timezone\nfrom zoneinfo import ZoneInfo\n\nimport click\nfrom pyiem.database import get_dbconn\nfrom pyiem.plot import MapPlot, get_cmap\nfrom pyiem.util import logger, utc\n\nLOG = logger()\n\n\ndef doit(now, model):\n    \"\"\"Figure out the model runtime we care about\"\"\"\n    mos_pgconn = get_dbconn(\"mos\")\n    iem_pgconn = get_dbconn(\"iem\")\n    mcursor = mos_pgconn.cursor()\n    icursor = iem_pgconn.cursor()\n    mcursor.execute(\n        \"SELECT max(runtime at time zone 'UTC') from alldata \"\n        \"where station = 'KDSM' and ftime = %s and model = %s\",\n        (now, model),\n    )\n    row = mcursor.fetchone()\n    runtime = row[0]\n    if runtime is None:\n        LOG.info(\"Model %s runtime %s not found, abort\", model, now)\n        return\n    runtime = runtime.replace(tzinfo=timezone.utc)\n\n    # Load up the mos forecast for our given\n    mcursor.execute(\n        \"SELECT station, tmp FROM alldata \"\n        \"WHERE model = %s and runtime = %s and ftime = %s and tmp < 999\",\n        (model, runtime, now),\n    )\n    forecast = {}\n    for row in mcursor:\n        if row[0][0] == \"K\":\n            forecast[row[0][1:]] = row[1]\n\n    # Load up the currents!\n    icursor.execute(\n        \"\"\"\n        SELECT\n        s.id, s.network, tmpf, ST_x(s.geom) as lon, ST_y(s.geom) as lat\n        FROM\n        current c, stations s\n        WHERE\n        c.iemid = s.iemid and\n        s.network ~* 'ASOS' and s.country = 'US' and\n        valid + '60 minutes'::interval > now() and\n        tmpf > -50\n    \"\"\"\n    )\n\n    lats = []\n    lons = []\n    vals = []\n    for row in icursor:\n        if row[0] not in forecast:\n            continue\n\n        diff = forecast[row[0]] - row[2]\n        if diff > 20 or diff < -20:\n            continue\n        lats.append(row[4])\n        lons.append(row[3])\n        vals.append(diff)\n\n    cmap = get_cmap(\"RdYlBu_r\")\n    cmap.set_under(\"black\")\n    cmap.set_over(\"black\")\n\n    localnow = now.astimezone(ZoneInfo(\"America/Chicago\"))\n    subtitle = (\n        f\"Model Run: {runtime:%d %b %Y %H %Z} \"\n        f\"Forecast Time: {localnow:%d %b %Y %-I %p %Z}\"\n    )\n    mp = MapPlot(\n        sector=\"conus\",\n        title=f\"{model} MOS Temperature Bias\",\n        subtitle=subtitle,\n    )\n    mp.contourf(lons, lats, vals, range(-10, 11, 2), units=\"F\", cmap=cmap)\n\n    pqstr = (\n        f\"plot ac {now:%Y%m%d%H}00 conus_{model.lower()}_mos_T_bias.png \"\n        f\"conus_{model.lower()}_mos_T_bias_{now:%H}.png png\"\n    )\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n\n@click.command()\n@click.option(\"--model\", required=True)\n@click.option(\"--valid\", type=click.DateTime())\ndef main(model: str, valid: datetime | None):\n    \"\"\"Go main go\"\"\"\n    ts = utc()\n    if valid is not None:\n        ts = valid.replace(tzinfo=timezone.utc)\n    ts = ts.replace(minute=0, second=0, microsecond=0)\n    doit(ts, model)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/mrms/README.md",
    "content": "cache of NCEP Grib2 data\n\nhttp://140.172.25.182/OPERATIONAL_NCEP_MRMS_GRIB2\n\nhttp://mrms.ncep.noaa.gov/data/"
  },
  {
    "path": "scripts/mrms/copy_daily_24h.py",
    "content": "\"\"\"Copies the appropriate MRMS 24 HR raster for a calendar date.\n\nRun from RUN_2AM.sh\n\"\"\"\n\nimport subprocess\nfrom datetime import datetime, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport click\nfrom pyiem.util import archive_fetch, logger\n\nLOG = logger()\n\n\ndef workflow(dt: datetime):\n    \"\"\"Copy things around.\"\"\"\n    basefn = dt.strftime(\"%Y/%m/%d/GIS/mrms/p24h_%Y%m%d%H00\")\n    yest = dt - timedelta(days=1)\n    for suffix in [\"png\", \"wld\"]:\n        ppath = f\"{basefn}.{suffix}\"\n        with archive_fetch(ppath) as target:\n            if target is None:\n                LOG.warning(\"ERROR: %s not found\", ppath)\n                return\n            cmd = [\n                \"pqinsert\",\n                \"-i\",\n                \"-p\",\n                f\"gis a {yest:%Y%m%d%H%M} \"\n                f\"GIS/mrms_calday_{yest:%Y%m%d}.{suffix} \"\n                f\"GIS/mrms_calday_{yest:%Y%m%d}.{suffix} {suffix}\",\n                target,\n            ]\n            subprocess.call(cmd)\n            LOG.info(\"%s -> %s\", target, \" \".join(cmd))\n\n\n@click.command()\n@click.option(\n    \"--date\",\n    \"dt\",\n    required=True,\n    help=\"Date to process\",\n    type=click.DateTime(),\n)\ndef main(dt: datetime):\n    \"\"\"Do Something\"\"\"\n    # Compute midnight Central as UTC\n    dt = dt.replace(tzinfo=ZoneInfo(\"America/Chicago\")).astimezone(\n        ZoneInfo(\"UTC\")\n    )\n    LOG.info(\"Computed midnight UTC of %s\", dt)\n    workflow(dt)\n\n\nif __name__ == \"__main__\":\n    # Go Main Go\n    main()\n"
  },
  {
    "path": "scripts/mrms/gr2ae.txt",
    "content": "  2)  -32.0  --   0   0   0\n  3)  -31.5  --   0   0   0\n  4)  -31.0  --   0   0   0\n  5)  -30.5  --   0   0   0\n  6)  -30.0  --   0   0   0\n  7)  -29.5  --   0   0   0\n  8)  -29.0  --   0   0   0\n  9)  -28.5  --   0   0   0\n 10)  -28.0  --   0   0   0\n 11)  -27.5  --   0   0   0\n 12)  -27.0  --   0   0   0\n 13)  -26.5  --   0   0   0\n 14)  -26.0  --   0   0   0\n 15)  -25.5  --   0   0   0\n 16)  -25.0  --   0   0   0\n 17)  -24.5  --   0   0   0\n 18)  -24.0  --   0   0   0\n 19)  -23.5  --   0   0   0\n 20)  -23.0  --   0   0   0\n 21)  -22.5  --   0   0   0\n 22)  -22.0  --   0   0   0\n 23)  -21.5  --   0   0   0\n 24)  -21.0  --   0   0   0\n 25)  -20.5  --   0   0   0\n 26)  -20.0  --   0   0   0\n 27)  -19.5  --   0   0   0\n 28)  -19.0  --   0   0   0\n 29)  -18.5  --   0   0   0\n 30)  -18.0  --   0   0   0\n 31)  -17.5  --   0   0   0\n 32)  -17.0  --   0   0   0\n 33)  -16.5  --   0   0   0\n 34)  -16.0  --   0   0   0\n 35)  -15.5  --   0   0   0\n 36)  -15.0  --   0   0   0\n 37)  -14.5  --   0   0   0\n 38)  -14.0  --   0   0   0\n 39)  -13.5  --   0   0   0\n 40)  -13.0  --   0   0   0\n 41)  -12.5  --   0   0   0\n 42)  -12.0  --   0   0   0\n 43)  -11.5  --   0   0   0\n 44)  -11.0  --   0   0   0\n 45)  -10.5  --   0   0   0\n 46)  -10.0  --   0   0   0\n 47)   -9.5  --   0   0   0\n 48)   -9.0  --   0   0   0\n 49)   -8.5  --   0   0   0\n 50)   -8.0  --   0   0   0\n 51)   -7.5  --   0   0   0\n 52)   -7.0  --   0   0   0\n 53)   -6.5  --   0   0   0\n 54)   -6.0  --   0   0   0\n 55)   -5.5  --   0   0   0\n 56)   -5.0  --   0   0   0\n 57)   -4.5  --   0   0   0\n 58)   -4.0  --   0   0   0\n 59)   -3.5  --   0   0   0\n 60)   -3.0  --   0   0   0\n 61)   -2.5  --   0   0   0\n 62)   -2.0  --   0   0   0\n 63)   -1.5  --   0   0   0\n 64)   -1.0  --   0   0   0\n 65)   -0.5  --   0   0   0\n 66)    0.0  --   0   0   0\n 67)    0.5  --   0   0   0\n 68)    1.0  --   0   0   0\n 69)    1.5  --   0   0   0\n 70)    2.0  --   0   0   0\n 71)    2.5  --   0   0   0\n 72)    3.0  --   0   0   0\n 73)    3.5  --   0   0   0\n 74)    4.0  --   0   0   0\n 75)    4.5  --   0   0   0\n 76)    5.0  --   0   0   0\n 77)    5.5  --   0   0   0\n 78)    6.0  --   0   0   0\n 79)    6.5  --   0   0   0\n 80)    7.0  --   0   0   0\n 81)    7.5  --   0   0   0\n 82)    8.0  --   0   0   0\n 83)    8.5  --   0   0   0\n 84)    9.0  --   0   0   0\n 85)    9.5  --   0   0   0\n 86)   10.0  -- 164 164 255\n 87)   10.5  -- 161 161 252\n 88)   11.0  -- 158 158 249\n 89)   11.5  -- 154 154 246\n 90)   12.0  -- 151 151 242\n 91)   12.5  -- 148 148 239\n 92)   13.0  -- 145 145 236\n 93)   13.5  -- 142 142 233\n 94)   14.0  -- 138 138 230\n 95)   14.5  -- 135 135 227\n 96)   15.0  -- 132 132 224\n 97)   15.5  -- 129 129 220\n 98)   16.0  -- 126 126 217\n 99)   16.5  -- 122 122 214\n100)   17.0  -- 119 119 211\n101)   17.5  -- 116 116 208\n102)   18.0  -- 113 113 205\n103)   18.5  -- 110 110 201\n104)   19.0  -- 106 106 198\n105)   19.5  -- 103 103 195\n106)   20.0  --  64 128 255\n107)   20.5  --  62 125 249\n108)   21.0  --  61 122 242\n109)   21.5  --  59 118 236\n110)   22.0  --  58 115 230\n111)   22.5  --  56 112 223\n112)   23.0  --  54 109 217\n113)   23.5  --  53 106 211\n114)   24.0  --  51 102 204\n115)   24.5  --  50  99 198\n116)   25.0  --  48  96 192\n117)   25.5  --  46  93 185\n118)   26.0  --  45  90 179\n119)   26.5  --  43  86 172\n120)   27.0  --  42  83 166\n121)   27.5  --  40  80 160\n122)   28.0  --  38  77 153\n123)   28.5  --  37  74 147\n124)   29.0  --  35  70 141\n125)   29.5  --  34  67 134\n126)   30.0  --  32  64 128\n127)   30.5  --   0 249   0\n128)   31.0  --   0 242   0\n129)   31.5  --   0 236   0\n130)   32.0  --   0 230   0\n131)   32.5  --   0 223   0\n132)   33.0  --   0 217   0\n133)   33.5  --   0 211   0\n134)   34.0  --   0 204   0\n135)   34.5  --   0 198   0\n136)   35.0  --   0 192   0\n137)   35.5  --   0 185   0\n138)   36.0  --   0 179   0\n139)   36.5  --   0 172   0\n140)   37.0  --   0 166   0\n141)   37.5  --   0 160   0\n142)   38.0  --   0 153   0\n143)   38.5  --   0 147   0\n144)   39.0  --   0 141   0\n145)   39.5  --   0 134   0\n146)   40.0  --   0 128   0\n147)   40.5  -- 255 249   0\n148)   41.0  -- 255 242   0\n149)   41.5  -- 255 236   0\n150)   42.0  -- 255 230   0\n151)   42.5  -- 255 223   0\n152)   43.0  -- 255 217   0\n153)   43.5  -- 255 211   0\n154)   44.0  -- 255 204   0\n155)   44.5  -- 255 198   0\n156)   45.0  -- 255 192   0\n157)   45.5  -- 255 185   0\n158)   46.0  -- 255 179   0\n159)   46.5  -- 255 172   0\n160)   47.0  -- 255 166   0\n161)   47.5  -- 255 160   0\n162)   48.0  -- 255 153   0\n163)   48.5  -- 255 147   0\n164)   49.0  -- 255 141   0\n165)   49.5  -- 255 134   0\n166)   50.0  -- 255   0   0\n167)   50.5  -- 250   0   0\n168)   51.0  -- 245   0   0\n169)   51.5  -- 241   0   0\n170)   52.0  -- 236   0   0\n171)   52.5  -- 231   0   0\n172)   53.0  -- 227   0   0\n173)   53.5  -- 222   0   0\n174)   54.0  -- 217   0   0\n175)   54.5  -- 212   0   0\n176)   55.0  -- 207   0   0\n177)   55.5  -- 203   0   0\n178)   56.0  -- 198   0   0\n179)   56.5  -- 193   0   0\n180)   57.0  -- 189   0   0\n181)   57.5  -- 184   0   0\n182)   58.0  -- 179   0   0\n183)   58.5  -- 174   0   0\n184)   59.0  -- 170   0   0\n185)   59.5  -- 165   0   0\n186)   60.0  -- 255   0 255\n187)   60.5  -- 249   0 249\n188)   61.0  -- 242   0 242\n189)   61.5  -- 236   0 236\n190)   62.0  -- 230   0 230\n191)   62.5  -- 223   0 223\n192)   63.0  -- 217   0 217\n193)   63.5  -- 211   0 211\n194)   64.0  -- 204   0 204\n195)   64.5  -- 198   0 198\n196)   65.0  -- 192   0 192\n197)   65.5  -- 185   0 185\n198)   66.0  -- 179   0 179\n199)   66.5  -- 172   0 172\n200)   67.0  -- 166   0 166\n201)   67.5  -- 160   0 160\n202)   68.0  -- 153   0 153\n203)   68.5  -- 147   0 147\n204)   69.0  -- 141   0 141\n205)   69.5  -- 134   0 134\n206)   70.0  -- 255 255 255\n207)   70.5  -- 249 249 249\n208)   71.0  -- 242 242 242\n209)   71.5  -- 236 236 236\n210)   72.0  -- 230 230 230\n211)   72.5  -- 223 223 223\n212)   73.0  -- 217 217 217\n213)   73.5  -- 211 211 211\n214)   74.0  -- 204 204 204\n215)   74.5  -- 198 198 198\n216)   75.0  -- 192 192 192\n217)   75.5  -- 185 185 185\n218)   76.0  -- 179 179 179\n219)   76.5  -- 172 172 172\n220)   77.0  -- 166 166 166\n221)   77.5  -- 160 160 160\n222)   78.0  -- 153 153 153\n223)   78.5  -- 147 147 147\n224)   79.0  -- 141 141 141\n225)   79.5  -- 134 134 134\n226)   80.0  -- 128 128 128\n227)   80.5  -- 128 128 128\n228)   81.0  -- 128 128 128\n229)   81.5  -- 128 128 128\n230)   82.0  -- 128 128 128\n231)   82.5  -- 128 128 128\n232)   83.0  -- 128 128 128\n233)   83.5  -- 128 128 128\n234)   84.0  -- 128 128 128\n235)   84.5  -- 128 128 128\n236)   85.0  -- 128 128 128\n237)   85.5  -- 128 128 128\n238)   86.0  -- 128 128 128\n239)   86.5  -- 128 128 128\n240)   87.0  -- 128 128 128\n241)   87.5  -- 128 128 128\n242)   88.0  -- 128 128 128\n243)   88.5  -- 128 128 128\n244)   89.0  -- 128 128 128\n245)   89.5  -- 128 128 128\n246)   90.0  -- 128 128 128\n247)   90.5  -- 128 128 128\n248)   91.0  -- 128 128 128\n249)   91.5  -- 128 128 128\n250)   92.0  -- 128 128 128\n251)   92.5  -- 128 128 128\n252)   93.0  -- 128 128 128\n253)   93.5  -- 128 128 128\n254)   94.0  -- 128 128 128\n255)   94.5  -- 128 128 128\n"
  },
  {
    "path": "scripts/mrms/init_daily_mrms.py",
    "content": "\"\"\"Generate the storage netcdf file for 0.01deg MRMS data.\"\"\"\n\nimport os\nfrom datetime import datetime\n\nimport click\nimport numpy as np\nfrom pyiem import iemre, mrms\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\n\n\ndef init_year(ts: datetime, for_dep=False, ci=False):\n    \"\"\"Create the netcdf file for a given year.\n\n    Args:\n        ts (datetime): timestamp to use for year\n        for_dep (bool): are we doing this for the Daily Erosion Project?\n        ci (bool): are we doing this for the CI scenario?\n    \"\"\"\n\n    fn = iemre.get_daily_mrms_ncname(ts.year)\n    os.makedirs(os.path.dirname(fn), exist_ok=True)\n    if for_dep:\n        fn = fn.replace(\"daily\", \"dep\")\n    if os.path.isfile(fn):\n        LOG.warning(\"Cowardly refusing to overwrite %s\", fn)\n        return\n    nc = ncopen(fn, \"w\")\n    nc.title = f\"MRMS Daily Precipitation {ts.year}\"\n    nc.platform = \"Grided Estimates\"\n    nc.description = \"MRMS 0.01 degree grid\"\n    nc.institution = \"Iowa State University, Ames, IA, USA\"\n    nc.source = \"Iowa Environmental Mesonet\"\n    nc.project_id = \"IEM\"\n    nc.realization = 1\n    nc.Conventions = \"CF-1.0\"\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = f\"{datetime.now():%d %B %Y} Generated\"\n    nc.comment = \"No Comment at this time\"\n\n    # Setup Dimensions\n    nc.createDimension(\"lat\", mrms.MRMS4IEMRE_NY)\n    nc.createDimension(\"lon\", mrms.MRMS4IEMRE_NX)\n    days = 2 if ci else ((ts.replace(year=ts.year + 1)) - ts).days\n    day_axis = np.arange(0, int(days))\n    if for_dep:\n        # April 11 through June 15\n        days = 20 + 31 + 15\n        tidx0 = iemre.daily_offset(ts.replace(month=4, day=11))\n        day_axis = np.arange(tidx0, tidx0 + days)\n    nc.createDimension(\"time\", int(days))\n    nc.createDimension(\"nv\", 2)\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"lat\",))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.bounds = \"lat_bnds\"\n    lat.axis = \"Y\"\n    # Grid centers\n    lat[:] = mrms.MRMS4IEMRE_YAXIS\n\n    lat_bnds = nc.createVariable(\"lat_bnds\", float, (\"lat\", \"nv\"))\n    lat_bnds[:, 0] = lat[:] - mrms.MRMS4IEMRE_DY / 2.0\n    lat_bnds[:, 1] = lat[:] + mrms.MRMS4IEMRE_DY / 2.0\n\n    lon = nc.createVariable(\"lon\", float, (\"lon\",))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.bounds = \"lon_bnds\"\n    lon.axis = \"X\"\n    lon[:] = mrms.MRMS4IEMRE_XAXIS\n\n    lon_bnds = nc.createVariable(\"lon_bnds\", float, (\"lon\", \"nv\"))\n    lon_bnds[:, 0] = lon[:] - mrms.MRMS4IEMRE_DX / 2.0\n    lon_bnds[:, 1] = lon[:] + mrms.MRMS4IEMRE_DX / 2.0\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = f\"Days since {ts.year}-01-01 00:00:0.0\"\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm[:] = day_axis\n\n    # 0 to 65535 by 0.01\n    p01d = nc.createVariable(\n        \"p01d\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    p01d.units = \"mm\"\n    p01d.scale_factor = 0.01\n    p01d.long_name = \"Precipitation\"\n    p01d.standard_name = \"Precipitation\"\n    p01d.coordinates = \"lon lat\"\n    p01d.description = \"Precipitation accumulation for the day\"\n\n    # Add some faked data\n    if ci:\n        p01d[0] = np.meshgrid(\n            np.linspace(0, 25, mrms.MRMS4IEMRE_NX),\n            np.linspace(0, 25, mrms.MRMS4IEMRE_NY),\n        )[0]\n        p01d[1] = np.meshgrid(\n            np.linspace(0, 100, mrms.MRMS4IEMRE_NX),\n            np.linspace(0, 100, mrms.MRMS4IEMRE_NY),\n        )[0]\n\n    nc.close()\n\n\n@click.command()\n@click.option(\"--year\", type=int, help=\"Year to initialize\")\n@click.option(\"--ci\", is_flag=True, help=\"CI Scenario, faked data, 2 step\")\ndef main(year, ci: bool):\n    \"\"\"Go Main Go.\"\"\"\n    init_year(datetime(year, 1, 1), False, ci)\n    if not ci:\n        init_year(datetime(year, 1, 1), True, ci)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/mrms/init_mrms_dailyc.py",
    "content": "\"\"\"Generate the IEMRE climatology file, hmmm\"\"\"\n\nimport os\nfrom datetime import datetime\n\nimport numpy as np\nfrom pyiem import iemre, mrms\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\n\n\ndef init_year(ts):\n    \"\"\"\n    Create a new NetCDF file for a year of our specification!\n    \"\"\"\n    fn = iemre.get_dailyc_mrms_ncname()\n    ny = mrms.MRMS4IEMRE_NY\n    nx = mrms.MRMS4IEMRE_NX\n    dx = mrms.MRMS4IEMRE_DX\n    dy = mrms.MRMS4IEMRE_DY\n    if os.path.isfile(fn):\n        LOG.warning(\"Cowardly refusing to create fn: %s\", fn)\n        return\n    nc = ncopen(fn, \"w\")\n    nc.title = f\"IEM Daily Reanalysis Climatology {ts.year}\"\n    nc.platform = \"Grided Climatology\"\n    nc.description = \"IEM daily analysis on a 0.01 degree grid\"\n    nc.institution = \"Iowa State University, Ames, IA, USA\"\n    nc.source = \"Iowa Environmental Mesonet\"\n    nc.project_id = \"IEM\"\n    nc.realization = 1\n    nc.Conventions = \"CF-1.0\"  # *cough*\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = \"%s Generated\" % (datetime.now().strftime(\"%d %B %Y\"),)\n    nc.comment = \"No Comment at this time\"\n\n    # Setup Dimensions\n    nc.createDimension(\"lat\", ny)\n    nc.createDimension(\"lon\", nx)\n    ts2 = datetime(ts.year + 1, 1, 1)\n    days = (ts2 - ts).days\n    nc.createDimension(\"time\", int(days))\n    nc.createDimension(\"nv\", 2)\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"lat\",))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.bounds = \"lat_bnds\"\n    lat.axis = \"Y\"\n    # Grid centers\n    lat[:] = mrms.MRMS4IEMRE_YAXIS\n\n    lat_bnds = nc.createVariable(\"lat_bnds\", float, (\"lat\", \"nv\"))\n    lat_bnds[:, 0] = lat[:] - dy / 2.0\n    lat_bnds[:, 1] = lat[:] + dy / 2.0\n\n    lon = nc.createVariable(\"lon\", float, (\"lon\",))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.bounds = \"lon_bnds\"\n    lon.axis = \"X\"\n    lon[:] = mrms.MRMS4IEMRE_XAXIS\n\n    lon_bnds = nc.createVariable(\"lon_bnds\", float, (\"lon\", \"nv\"))\n    lon_bnds[:, 0] = lon[:] - dx / 2.0\n    lon_bnds[:, 1] = lon[:] + dx / 2.0\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = \"Days since %s-01-01 00:00:0.0\" % (ts.year,)\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm[:] = np.arange(0, int(days))\n\n    p01d = nc.createVariable(\n        \"p01d\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    p01d.units = \"mm\"\n    p01d.scale_factor = 0.01\n    p01d.long_name = \"Precipitation\"\n    p01d.standard_name = \"Precipitation\"\n    p01d.coordinates = \"lon lat\"\n    p01d.description = \"Precipitation accumulation for the day\"\n\n    nc.close()\n\n\ndef main():\n    \"\"\"Go Main\"\"\"\n    init_year(datetime(2000, 1, 1))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/mrms/make_mrms_rasters.py",
    "content": "\"\"\"\nGenerate a raster of XXhour precipitation totals from MRMS\n\nrun from RUN_10_AFTER.sh\n\n\"\"\"\n\nimport gzip\nimport json\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport numpy as np\nimport pygrib\nfrom PIL import Image\nfrom pyiem import mrms\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import archive_fetch, logger\n\nLOG = logger()\nTMP = \"/mesonet/tmp\"\nMISSED_FILES = []\nDOWNLOADED_FILES = []\n\n\ndef convert_to_image(data):\n    \"\"\"Convert data with units of mm into image space\n\n     255 levels...  wanna do 0 to 20 inches\n     index 255 is missing, index 0 is 0\n     0-1   -> 100 - 0.01 res ||  0 - 25   -> 100 - 0.25 mm  0\n     1-5   -> 80 - 0.05 res  ||  25 - 125 ->  80 - 1.25 mm  100\n     5-20  -> 75 - 0.20 res  || 125 - 500  ->  75 - 5 mm    180\n\n    000 -> 099  0.25mm  000.00 to 024.75\n    100 -> 179  1.25mm  025.00 to 123.75\n    180 -> 254  5.00mm  125.00 to 495.00\n    254                 500.00+\n    255  MISSING/BAD DATA\n    \"\"\"\n    # Values above 500 mm are set to 254\n    imgdata = np.where(data >= 500, 254, 0)\n\n    imgdata = np.where(\n        np.logical_and(data >= 125, data < 500),\n        180 + ((data - 125.0) / 5.0),\n        imgdata,\n    )\n    imgdata = np.where(\n        np.logical_and(data >= 25, data < 125),\n        100 + ((data - 25.0) / 1.25),\n        imgdata,\n    )\n    imgdata = np.where(\n        np.logical_and(data >= 0, data < 25), data / 0.25, imgdata\n    )\n    # -3 is no coverage -> 255\n    # -1 is missing, so zero\n    # Index 255 is missing\n    imgdata = np.where(data < 0, 0, imgdata)\n    imgdata = np.where(data < -1, 255, imgdata)\n    return imgdata\n\n\ndef cleanup():\n    \"\"\"Remove tmp downloaded files\"\"\"\n    for fn in DOWNLOADED_FILES:\n        if os.path.isfile(fn):\n            os.unlink(fn)\n\n\ndef is_realtime(gts):\n    \"\"\"Is this timestamp a realtime product\"\"\"\n    utcnow = datetime.now(timezone.utc)\n    return utcnow.strftime(\"%Y%m%d%H\") == gts.strftime(\"%Y%m%d%H\")\n\n\ndef need_not_run(gts, hr) -> bool:\n    \"\"\"Do we need to run for this combination?\"\"\"\n    with archive_fetch(\n        f\"{gts:%Y/%m/%d}/GIS/mrms/p{hr}h_{gts:%Y%m%d%H%M}.png\"\n    ) as fh:\n        if fh is None:\n            return False\n    return True\n\n\ndef doit(gts: datetime, hr: int):\n    \"\"\"\n    Actually generate a PNG file from the 8 NMQ tiles\n    \"\"\"\n    irealtime = is_realtime(gts)\n    if not irealtime:\n        if need_not_run(gts, hr):\n            LOG.info(\"Skipping as archive file exists\")\n            return\n        LOG.warning(\"Reprocessing %s[%s] due to missing archive.\", gts, hr)\n    routes = \"ac\" if irealtime else \"a\"\n    sts = gts - timedelta(hours=hr)\n    times = [gts]\n    if hr > 24:\n        times.append(gts - timedelta(hours=24))\n    if hr == 72:\n        times.append(gts - timedelta(hours=48))\n    metadata = {\n        \"start_valid\": sts.strftime(ISO8601),\n        \"end_valid\": gts.strftime(ISO8601),\n        \"units\": \"mm\",\n    }\n\n    total = None\n    mproduct = \"RadarOnly_QPE_24H\" if hr >= 24 else \"RadarOnly_QPE_01H\"\n    for now in times:\n        gribfn = mrms.fetch(mproduct, now)\n        if gribfn is None:\n            LOG.warning(\n                \"%s MISSING %s\\n  %s\\n\",\n                hr,\n                now.strftime(\"%Y-%m-%dT%H:%MZ\"),\n                gribfn,\n            )\n            MISSED_FILES.append(gribfn)\n            return\n        DOWNLOADED_FILES.append(gribfn)\n        with (\n            gzip.GzipFile(gribfn, \"rb\") as fp,\n            tempfile.NamedTemporaryFile(delete=False) as tmpfp,\n        ):\n            tmpfp.write(fp.read())\n        grbs = pygrib.open(tmpfp.name)\n        grb = grbs[1]\n        grbs.close()\n        os.unlink(tmpfp.name)\n\n        # careful here, how we deal with the two missing values!\n        if total is None:\n            total = grb[\"values\"]\n        else:\n            maxgrid = np.maximum(grb[\"values\"], total)\n            total = np.where(\n                np.logical_and(grb[\"values\"] >= 0, total >= 0),\n                grb[\"values\"] + total,\n                maxgrid,\n            )\n\n    imgdata = convert_to_image(total)\n\n    (tmpfp, tmpfn) = tempfile.mkstemp()\n    # Create Image\n    png = Image.fromarray(imgdata.astype(\"u1\"))\n    png.putpalette(mrms.make_colorramp())\n    png.save(f\"{tmpfn}.png\")\n\n    if irealtime:\n        # create a second PNG with null values set to black\n        imgdata = np.where(imgdata == 255, 0, imgdata)\n        png = Image.fromarray(imgdata.astype(\"u1\"))\n        png.putpalette(mrms.make_colorramp())\n        png.save(f\"{tmpfn}_nn.png\")\n\n    # Now we need to generate the world file\n    mrms.write_worldfile(f\"{tmpfn}.wld\")\n    if irealtime:\n        mrms.write_worldfile(f\"{tmpfn}_nn.wld\")\n    # Inject WLD file\n    tstr = gts.strftime(\"%Y%m%d%H%M\")\n    cmd = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        f\"plot {routes} {tstr} gis/images/4326/mrms/p{hr}h.wld \"\n        f\"GIS/mrms/p{hr}h_{tstr}.wld wld\",\n        f\"{tmpfn}.wld\",\n    ]\n    subprocess.call(cmd)\n\n    if irealtime:\n        cmd = [\n            \"pqinsert\",\n            \"-i\",\n            \"-p\",\n            f\"plot c {tstr} gis/images/4326/mrms/p{hr}h_nn.wld \"\n            f\"GIS/mrms/p{hr}h_{tstr}.wld wld\",\n            f\"{tmpfn}_nn.wld\",\n        ]\n        subprocess.call(cmd)\n\n    # Now we inject into LDM\n    cmd = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        f\"plot {routes} {tstr} gis/images/4326/mrms/p{hr}h.png \"\n        f\"GIS/mrms/p{hr}h_{tstr}.png png\",\n        f\"{tmpfn}.png\",\n    ]\n    subprocess.call(cmd)\n\n    if irealtime:\n        # Now we inject into LDM\n        cmd = [\n            \"pqinsert\",\n            \"-i\",\n            \"-p\",\n            f\"plot c {tstr} gis/images/4326/mrms/p{hr}h_nn.png \"\n            f\"GIS/mrms/p{hr}h_{tstr}.png png\",\n            f\"{tmpfn}_nn.png\",\n        ]\n        subprocess.call(cmd)\n\n        # Create 3857 image\n        cmd = [\n            \"gdalwarp\",\n            \"-s_srs\",\n            \"EPSG:4326\",\n            \"-t_srs\",\n            \"EPSG:3857\",\n            \"-q\",\n            \"-of\",\n            \"GTiff\",\n            \"-tr\",\n            \"1000.0\",\n            \"1000.0\",\n            f\"{tmpfn}.png\",\n            f\"{tmpfn}.tif\",\n        ]\n        subprocess.call(cmd)\n\n        cmd = [\n            \"gdalwarp\",\n            \"-s_srs\",\n            \"EPSG:4326\",\n            \"-t_srs\",\n            \"EPSG:3857\",\n            \"-q\",\n            \"-of\",\n            \"GTiff\",\n            \"-tr\",\n            \"1000.0\",\n            \"1000.0\",\n            f\"{tmpfn}_nn.png\",\n            f\"{tmpfn}_nn.tif\",\n        ]\n        subprocess.call(cmd)\n\n        # Insert into LDM\n        cmd = [\n            \"pqinsert\",\n            \"-i\",\n            \"-p\",\n            f\"plot c {tstr} gis/images/3857/mrms/p{hr}h.tif \"\n            f\"GIS/mrms/p{hr}h_{tstr}.tif tif\",\n            f\"{tmpfn}.tif\",\n        ]\n        subprocess.call(cmd)\n\n        cmd = [\n            \"pqinsert\",\n            \"-i\",\n            \"-p\",\n            f\"plot c {tstr} gis/images/3857/mrms/p{hr}h_nn.tif \"\n            f\"GIS/mrms/p{hr}h_{tstr}.tif tif\",\n            f\"{tmpfn}_nn.tif\",\n        ]\n        subprocess.call(cmd)\n\n        with open(f\"{tmpfn}.json\", \"w\", encoding=\"utf8\") as fh:\n            json.dump({\"meta\": metadata}, fh)\n\n        # Insert into LDM\n        cmd = [\n            \"pqinsert\",\n            \"-i\",\n            \"-p\",\n            f\"plot c {tstr} gis/images/4326/mrms/p{hr}h.json \"\n            f\"GIS/mrms/p{hr}h_{tstr}.json json\",\n            f\"{tmpfn}.json\",\n        ]\n        subprocess.call(cmd)\n\n        cmd = [\n            \"pqinsert\",\n            \"-i\",\n            \"-p\",\n            f\"plot c {tstr} gis/images/4326/mrms/p{hr}h_nn.json \"\n            f\"GIS/mrms/p{hr}h_{tstr}.json json\",\n            f\"{tmpfn}.json\",\n        ]\n        subprocess.call(cmd)\n    for suffix in [\"tif\", \"json\", \"png\", \"wld\"]:\n        fn = f\"{tmpfn}.{suffix}\"\n        if os.path.isfile(fn):\n            os.unlink(fn)\n    if irealtime:\n        for suffix in [\"tif\", \"png\", \"wld\"]:\n            fn = f\"{tmpfn}_nn.{suffix}\"\n            if os.path.isfile(fn):\n                os.unlink(fn)\n\n    os.close(tmpfp)\n    os.unlink(tmpfn)\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), required=True)\ndef main(valid: datetime):\n    \"\"\"We are always explicitly called\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    for hr in [1, 24, 48, 72]:\n        doit(valid, hr)\n        # Also reprocess last hour and six hours ago\n        for offset in [1, 6]:\n            doit(valid - timedelta(hours=offset), hr)\n    cleanup()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/mrms/merge_mrms_q3.py",
    "content": "\"\"\"Merge the 0.01x0.01 Q3 24 hour precip data estimates.\n\ncalled from RUN_10_AFTER.sh\n\"\"\"\n\nimport gzip\nimport os\nimport tempfile\nfrom datetime import date, datetime, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport netCDF4\nimport numpy as np\nimport pygrib\nfrom pyiem.iemre import daily_offset, get_daily_mrms_ncname\nfrom pyiem.mrms import fetch as mrms_fetch\nfrom pyiem.util import logger, ncopen, utc\n\nLOG = logger()\nTMP = \"/mesonet/tmp\"\n\n# MultiSensor_QPE_01H_Pass2 after, GaugeCorr_QPE_01H before\nPRODFLIP = utc(2020, 10, 13, 19)\n\n\ndef run(nc: netCDF4.Dataset, dt: date, for_dep: bool):\n    \"\"\"Update netcdf file with the MRMS data\n\n    Args:\n      dt (date): date to process\n      for_dep (bool): for Daily Erosion Project\n    \"\"\"\n    offset = daily_offset(dt)\n    if for_dep:\n        offset = offset - daily_offset(date(dt.year, 4, 11))\n    ncprecip = nc.variables[\"p01d\"]\n\n    midnight = datetime(\n        dt.year, dt.month, dt.day, tzinfo=ZoneInfo(\"America/Chicago\")\n    )\n    utcnow = utc()\n    total = None\n    UTC = ZoneInfo(\"UTC\")\n    # Stop at 6 PM if we are using DEP\n    for hr in range(1, 18 if for_dep else 25):\n        utcdt = (midnight + timedelta(hours=hr)).astimezone(UTC)\n        if utcdt > utcnow:\n            continue\n        gribfn = None\n        qcprod = \"MultiSensor_QPE_01H_Pass2\"\n        if utcdt < PRODFLIP:\n            qcprod = \"GaugeCorr_QPE_01H\"\n        for prefix in [qcprod, \"RadarOnly_QPE_01H\"]:\n            fn = mrms_fetch(prefix, utcdt)\n            if fn is None:\n                continue\n            LOG.info(\"Processing %s %s\", utcdt, prefix)\n            (_, gribfn) = tempfile.mkstemp()\n            with gzip.GzipFile(fn, \"rb\") as zfn, open(gribfn, \"wb\") as tmpfp:\n                tmpfp.write(zfn.read())\n            os.unlink(fn)\n            break\n        if gribfn is None:\n            if utcdt < utcnow:\n                LOG.info(\"MISSING %s\", utcdt)\n            continue\n        with pygrib.open(gribfn) as grbs:\n            grb = grbs[1]\n            val: np.ndarray = grb[\"values\"]\n        os.unlink(gribfn)\n\n        # Anything less than zero, we set to zero\n        val = np.where(val < 0, 0, val)\n        if total is None:\n            total = val\n        else:\n            total += val\n\n    if total is None:\n        LOG.warning(\"nodata for %s, using zeros\", dt)\n        ncprecip[offset] = 0\n        return\n    # To save some space, we store a tigher CONUS domain\n    # total.shape is 3500 x 7000, our 2700 x 6100\n    # The upper left corner grib is -129.995, 54.995\n    # The upper left corner netcdf is -125.995, 49.995\n    # CAREFUL HERE!  The MRMS grid is North to South\n    if total.shape != (3500, 7000):\n        LOG.warning(\"total shape is %s, skipping\", total.shape)\n        return\n    x0 = 400\n    x1 = 400 + 6100\n    y0 = 500\n    y1 = 500 + 2700\n    LOG.info(\"Writing precip at offset: %s [for_dep:%s]\", offset, for_dep)\n    ncprecip[offset, :, :] = np.flipud(total[y0:y1, x0:x1])\n\n\n@click.command()\n@click.option(\n    \"--date\",\n    \"dt\",\n    type=click.DateTime(),\n    help=\"Date to process\",\n    required=True,\n)\n@click.option(\"--for-dep\", is_flag=True, help=\"For Daily Erosion Project\")\ndef main(dt: datetime, for_dep):\n    \"\"\"go main go\"\"\"\n    if for_dep and (f\"{dt:%m%d}\" < \"0411\" or f\"{dt:%m%d}\" > \"0615\"):\n        LOG.info(\"DEP not needed for %s\", dt)\n        return\n    ncfn = get_daily_mrms_ncname(dt.year)\n    if for_dep:\n        ncfn = ncfn.replace(\"daily\", \"dep\")\n    with ncopen(ncfn, \"a\", timeout=300) as nc:\n        run(nc, dt.date(), for_dep)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/mrms/mesh_contours.py",
    "content": "\"\"\"Generate MRMS MESH Contours.\n\ndedicated crontab entry.\n\"\"\"\n\nimport json\nimport os\nimport pathlib\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport numpy as np\nimport pygrib\nimport rasterio\nfrom pyiem.mrms import NORTH, WEST\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import logger, utc\nfrom rasterio.transform import from_origin\n\nLOG = logger()\nVERSION = 1\n\n\ndef pqinsert(tmpfn, ets, interval):\n    \"\"\"pqinsert the GeoJSON.\"\"\"\n    routes = \"ac\" if (interval in (60, 1440) and ets.minute == 0) else \"c\"\n\n    name = (\n        f\"data {routes} {ets.strftime('%Y%m%d%H%M')} \"\n        f\"gis/shape/4326/us/mrms_mesh_{interval}min.geojson \"\n        f\"GIS/mrms/mesh_{interval}min_{ets.strftime('%Y%m%d%H%M')}.geojson \"\n        \"bogus\"\n    )\n    LOG.info(name)\n    cmd = [\"pqinsert\", \"-i\", \"-p\", name, f\"{tmpfn}.geojson\"]\n    if pathlib.Path(f\"{tmpfn}.geojson\").stat().st_size > 0:\n        subprocess.call(cmd)\n    cmd = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        name.replace(\".geojson\", \"_meta.json\"),\n        f\"{tmpfn}_meta.json\",\n    ]\n    subprocess.call(cmd)\n\n\ndef make_metadata(tmpfn, mydict):\n    \"\"\"Make metadata.\"\"\"\n    with open(f\"{tmpfn}_meta.json\", \"w\") as fp:  # skipcq\n        json.dump(mydict, fp)\n\n\ndef make_contours(tmpfn):\n    \"\"\"Make a GeoJSON.\"\"\"\n    cmd = [\n        \"timeout\",\n        \"120\",\n        \"gdal_contour\",\n        \"-fl\",\n        \" \".join(str(x) for x in range(0, 101, 5)) + \" 150 200\",\n        \"-amin\",\n        \"ssize_mm\",\n        \"-amax\",\n        \"esize_mm\",\n        \"-snodata\",\n        \"-1\",\n        \"-p\",\n        \"-q\",\n        f\"{tmpfn}.tif\",\n        f\"{tmpfn}.geojson\",\n    ]\n    with subprocess.Popen(\n        cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE\n    ) as proc:\n        (stdout, stderr) = proc.communicate()\n    if stdout != b\"\" or stderr != b\"\":\n        LOG.info(\"stdout: %s stderr: %s\", stdout, stderr)\n\n\ndef make_raster(vals, tmpfn):\n    \"\"\"Make a TIFF for downstream gdal_contour usage.\"\"\"\n    vals = np.where(vals < 0, -1, vals)\n    transform = from_origin(WEST, NORTH, 0.01, 0.01)\n    with rasterio.open(\n        f\"{tmpfn}.tif\",\n        \"w\",\n        driver=\"GTiff\",\n        height=vals.shape[0],\n        width=vals.shape[1],\n        count=1,\n        dtype=str(vals.dtype),\n        crs=\"+proj=longlat +datum=WGS84 +no_defs\",\n        transform=transform,\n    ) as rst:\n        rst.write(vals, 1)\n\n\ndef agg(sts, ets):\n    \"\"\"Aggregate up the value.\"\"\"\n    interval = timedelta(minutes=2)\n    # in the rears\n    now = sts + timedelta(minutes=2)\n    maxval = None\n    hits = 0\n    misses = 0\n    while now <= ets:\n        fn = now.strftime(\"/mnt/mrms/MESH/%d%H%M.grib\")\n        if os.path.isfile(fn):\n            with pygrib.open(fn) as grb:\n                if maxval is None:\n                    maxval = grb[1].values\n                else:\n                    maxval = np.maximum(grb[1].values, maxval)\n            hits += 1\n        else:\n            misses += 1\n        now += interval\n    return maxval, hits, misses\n\n\n@click.command()\n@click.option(\"--minutes\", required=True, type=int)\n@click.option(\"--valid\", required=True, type=click.DateTime())\ndef main(minutes: int, valid: datetime):\n    \"\"\"Go Main Go.\"\"\"\n    started = utc()\n    valid = valid.replace(tzinfo=timezone.utc)\n    ets = valid\n    sts = ets - timedelta(minutes=minutes)\n    with tempfile.NamedTemporaryFile() as tmp:\n        maxval, hits, misses = agg(sts, ets)\n        if maxval is None:\n            LOG.info(\"Aborting, no data! %s %s\", minutes, valid)\n            return\n        make_raster(maxval, tmp.name)\n        make_contours(tmp.name)\n        os.unlink(f\"{tmp.name}.tif\")\n        mydict = {\n            \"generated_at\": utc().strftime(ISO8601),\n            \"start_time_utc\": sts.strftime(ISO8601),\n            \"end_time_utc\": ets.strftime(ISO8601),\n            \"2min_files_used\": hits,\n            \"2min_files_missed\": misses,\n            \"script_version\": VERSION,\n            \"script_time_s\": (utc() - started).total_seconds(),\n        }\n        make_metadata(tmp.name, mydict)\n        pqinsert(tmp.name, ets, minutes)\n        os.unlink(f\"{tmp.name}.geojson\")\n        os.unlink(f\"{tmp.name}_meta.json\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/mrms/mrms_lcref_comp.py",
    "content": "\"\"\"\nGenerate a composite of the MRMS Lowest Composite Reflectvity\n\ncalled from RUN_1MIN.sh\n\"\"\"\n\nimport gzip\nimport json\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport numpy as np\nimport pygrib\nfrom PIL import Image\nfrom pyiem import mrms\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import archive_fetch, logger, utc\n\nLOG = logger()\n\n\ndef make_colorramp():\n    \"\"\"\n    Make me a crude color ramp\n    \"\"\"\n    c = np.zeros((256, 3), int)\n\n    # Gray for missing\n    c[255, :] = [144, 144, 144]\n    # Black to remove, eventually\n    c[0, :] = [0, 0, 0]\n    i = 2\n    with open(\"gr2ae.txt\", encoding=\"ascii\") as fh:\n        for line in fh:\n            c[i, :] = list(map(int, line.split()[-3:]))\n            i += 1\n    return tuple(c.ravel())\n\n\ndef do(now, realtime=False):\n    \"\"\"Generate for this timestep!\"\"\"\n    szx = 7000\n    szy = 3500\n    # Create the image data\n    imgdata = np.zeros((szy, szx), \"u1\")\n    metadata = {\n        \"start_valid\": now.strftime(ISO8601),\n        \"end_valid\": now.strftime(ISO8601),\n        \"product\": \"lcref\",\n        \"units\": \"0.5 dBZ\",\n    }\n\n    gribfn = mrms.fetch(\"SeamlessHSR\", now)\n    if gribfn is None:\n        lf = LOG.warning if realtime else LOG.info\n        lf(\"Missing SeamlessHSR: %s\", now.strftime(\"%Y-%m-%dT%H:%MZ\"))\n        return\n\n    fp = gzip.GzipFile(gribfn, \"rb\")\n    (_, tmpfn) = tempfile.mkstemp()\n    with open(tmpfn, \"wb\") as fh:\n        fh.write(fp.read())\n    grbs = pygrib.open(tmpfn)\n    grb = grbs[1]\n    os.unlink(tmpfn)\n    os.unlink(gribfn)\n\n    val = grb[\"values\"]\n\n    # -999 is no coverage, go to 0\n    # -99 is missing , go to 255\n\n    val = np.where(val >= -32, (val + 32) * 2.0, val)\n    # This is an upstream BUG\n    val = np.where(val < 0.0, 0.0, val)\n    imgdata[:, :] = np.flipud(val.astype(\"int\"))\n\n    (tmpfp, tmpfn) = tempfile.mkstemp()\n\n    # Create Image\n    png = Image.fromarray(np.flipud(imgdata))\n    png.putpalette(make_colorramp())\n    png.save(f\"{tmpfn}.png\")\n\n    mrms.write_worldfile(f\"{tmpfn}.wld\")\n    # Inject WLD file\n    prefix = \"lcref\"\n    routes = \"ac\" if realtime else \"a\"\n    pqstr = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        (\n            f\"plot {routes} {now:%Y%m%d%H%M} gis/images/4326/mrms/{prefix}.wld\"\n            f\" GIS/mrms/{prefix}_{now:%Y%m%d%H%M}.wld wld\"\n        ),\n        f\"{tmpfn}.wld\",\n    ]\n    LOG.info(\" \".join(pqstr))\n    subprocess.call(pqstr)\n    # Now we inject into LDM\n    pqstr = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        (\n            f\"plot {routes} {now:%Y%m%d%H%M} gis/images/4326/mrms/{prefix}.png\"\n            f\" GIS/mrms/{prefix}_{now:%Y%m%d%H%M}.png png\"\n        ),\n        f\"{tmpfn}.png\",\n    ]\n    LOG.info(\" \".join(pqstr))\n    subprocess.call(pqstr)\n    # Create 3857 image\n    cmd = [\n        \"gdalwarp\",\n        \"-s_srs\",\n        \"EPSG:4326\",\n        \"-t_srs\",\n        \"EPSG:3857\",\n        \"-q\",\n        \"-of\",\n        \"GTiff\",\n        \"-tr\",\n        \"1000.0\",\n        \"1000.0\",\n        f\"{tmpfn}.png\",\n        f\"{tmpfn}.tif\",\n    ]\n    subprocess.call(cmd)\n    # Insert into LDM\n    pqstr = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        (\n            f\"plot c {now:%Y%m%d%H%M} gis/images/3857/mrms/{prefix}.tif \"\n            f\"GIS/mrms/{prefix}_{now:%Y%m%d%H%M}.tif tif\"\n        ),\n        f\"{tmpfn}.tif\",\n    ]\n    if realtime:\n        subprocess.call(pqstr)\n\n    with open(f\"{tmpfn}.json\", \"w\", encoding=\"ascii\") as fh:\n        json.dump({\"meta\": metadata}, fh)\n\n    # Insert into LDM\n    pqstr = [\n        \"pqinsert\",\n        \"-p\",\n        (\n            f\"plot c {now:%Y%m%d%H%M} gis/images/4326/mrms/{prefix}.json \"\n            f\"GIS/mrms/{prefix}_{now:%Y%m%d%H%M}.json json\"\n        ),\n        f\"{tmpfn}.json\",\n    ]\n    if realtime:\n        subprocess.call(pqstr)\n\n    for suffix in [\"tif\", \"json\", \"png\", \"wld\"]:\n        os.unlink(f\"{tmpfn}.{suffix}\")\n\n    os.close(tmpfp)\n    os.unlink(tmpfn)\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime())\ndef main(valid: datetime):\n    \"\"\"Go Main Go\"\"\"\n    utcnow = utc()\n    if valid is not None:\n        utcnow = valid.replace(tzinfo=timezone.utc)\n        do(utcnow)\n    else:\n        # If our time is an odd time, run 3 minutes ago\n        utcnow = utcnow.replace(second=0, microsecond=0)\n        if utcnow.minute % 2 == 0:\n            LOG.info(\"Even real-time minute, exiting\")\n            return\n        valid = utcnow - timedelta(minutes=5)\n        do(valid, True)\n        # Also check old dates\n        for delta in [30, 90, 600, 1440, 2880]:\n            ts = valid - timedelta(minutes=delta)\n            ppath = ts.strftime(\"%Y/%m/%d/GIS/mrms/lcref_%Y%m%d%H%M.png\")\n            with archive_fetch(ppath) as fn:\n                if fn is None:\n                    do(ts, False)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/mrms/mrms_monthly_plot.py",
    "content": "\"\"\"Plot monthly MRMS.\n\nCalled from RUN_MIDNIGHT.sh\n\"\"\"\n\nfrom datetime import date, datetime, timedelta\n\nimport click\nimport numpy as np\nfrom pyiem import iemre\nfrom pyiem.plot import MapPlot\nfrom pyiem.util import mm2inch, ncopen\n\n\ndef do_month(year, month, routes):\n    \"\"\"Generate a MRMS plot for the month!\"\"\"\n\n    sts = datetime(year, month, 1)\n    ets = sts + timedelta(days=35)\n    ets = ets.replace(day=1)\n\n    ets = min(datetime.now(), ets)\n\n    idx0 = iemre.daily_offset(sts)\n    idx1 = iemre.daily_offset(ets)\n\n    with ncopen(iemre.get_daily_mrms_ncname(year), \"r\") as nc:\n        lats = nc.variables[\"lat\"][:]\n        lons = nc.variables[\"lon\"][:]\n        p01d = mm2inch(np.sum(nc.variables[\"p01d\"][idx0:idx1, :, :], 0))\n\n    dd = (ets - timedelta(days=1)).strftime(\"%-d %b %Y\")\n    mp = MapPlot(\n        sector=\"iowa\",\n        title=f\"MRMS {sts:%-d %b} - {dd} Total Precipitation\",\n        subtitle=\"Data from NOAA MRMS Project\",\n    )\n    x, y = np.meshgrid(lons, lats)\n    bins = [0.01, 0.1, 0.5, 1, 1.5, 2, 3, 4, 5, 6, 7, 8, 12, 16, 20]\n    mp.pcolormesh(x, y, p01d, bins, units=\"inches\")\n    mp.drawcounties()\n    currentfn = \"summary/iowa_mrms_q3_month.png\"\n    archivefn = sts.strftime(\"%Y/%m/summary/iowa_mrms_q3_month.png\")\n    pqstr = f\"plot {routes} {sts:%Y%m%d%H}00 {currentfn} {archivefn} png\"\n    mp.postprocess(pqstr=pqstr)\n\n\n@click.command()\n@click.option(\"--year\", type=int)\n@click.option(\"--month\", type=int)\ndef main(year: int | None, month: int | None) -> None:\n    \"\"\"Go Main Go\"\"\"\n    if year and month:\n        do_month(year, month, \"m\")\n    else:\n        today = date.today()\n        yesterday = today - timedelta(days=1)\n        do_month(yesterday.year, yesterday.month, \"cm\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/mrms/mrms_rainrate_comp.py",
    "content": "\"\"\"Generate a composite of the MRMS PrecipRate\n\nWithin a two minute window, maybe the max rate we could see is 0.2 inches,\nwhich is 5 mm.  So if we want to store 5mm in 250 bins, we have a resolution\nof 0.02 mm per index.\n\nRun from RUN_1MIN.sh\n\"\"\"\n\nimport gzip\nimport json\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport numpy as np\nimport pygrib\nfrom PIL import Image\nfrom pyiem import mrms\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import archive_fetch, logger, utc\n\nLOG = logger()\n\n\ndef workflow(now, realtime):\n    \"\"\"Generate for this timestep!\"\"\"\n    minutes = 2 if now.year > 2011 else 5\n    szx = 7000\n    szy = 3500\n    # Create the image data\n    imgdata = np.zeros((szy, szx), \"u1\")\n    sts = now - timedelta(minutes=2)\n    prefix = f\"a{minutes}m\"\n    metadata = {\n        \"start_valid\": sts.strftime(ISO8601),\n        \"end_valid\": now.strftime(ISO8601),\n        \"product\": prefix,\n        \"units\": \"0.02 mm\",\n    }\n\n    gribfn = mrms.fetch(\"PrecipRate\", now)\n    if gribfn is None:\n        lf = LOG.warning if realtime else LOG.info\n        lf(\"Missing PrecipRate: %s\", now.strftime(\"%Y-%m-%dT%H:%MZ\"))\n        return\n\n    # http://www.nssl.noaa.gov/projects/mrms/operational/tables.php\n    # Says units are mm/hr\n    fp = gzip.GzipFile(gribfn, \"rb\")\n    (_, tmpfn) = tempfile.mkstemp()\n    with open(tmpfn, \"wb\") as fh:\n        try:\n            fh.write(fp.read())\n        except EOFError:\n            LOG.info(\"caught EOFError on %s, likely corrupt, deleting\", gribfn)\n            os.unlink(gribfn)\n            return\n    grbs = pygrib.open(tmpfn)\n    grb = grbs[1]\n    os.unlink(tmpfn)\n    os.unlink(gribfn)\n\n    val = grb[\"values\"]\n    # If has a mask, convert those to -3\n    if hasattr(val, \"mask\"):\n        val = np.where(val.mask, -3, val)\n    # Convert into units of 0.02 mm accumulation\n    val = val / 60.0 * minutes * 50.0\n    val = np.where(val < 0.0, 255.0, val)\n    imgdata[:, :] = np.flipud(val.astype(\"int\"))\n\n    (tmpfp, tmpfn) = tempfile.mkstemp()\n\n    # Create Image\n    png = Image.fromarray(np.flipud(imgdata))\n    png.putpalette(mrms.make_colorramp())\n    png.save(f\"{tmpfn}.png\")\n\n    mrms.write_worldfile(f\"{tmpfn}.wld\")\n    # Inject WLD file\n    routes = \"c\" if realtime else \"\"\n    cmd = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        f\"plot a{routes} {now:%Y%m%d%H%M} \"\n        f\"gis/images/4326/mrms/{prefix}.wld GIS/mrms/{prefix}_\"\n        f\"{now:%Y%m%d%H%M}.wld wld\",\n        f\"{tmpfn}.wld\",\n    ]\n    subprocess.call(cmd)\n    # Now we inject into LDM\n    cmd = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        f\"plot a{routes} {now:%Y%m%d%H%M} \"\n        f\"gis/images/4326/mrms/{prefix}.png GIS/mrms/{prefix}_\"\n        f\"{now:%Y%m%d%H%M}.png png\",\n        f\"{tmpfn}.png\",\n    ]\n    subprocess.call(cmd)\n\n    if realtime:\n        # Create 3857 image\n        cmd = [\n            \"gdalwarp\",\n            \"-s_srs\",\n            \"EPSG:4326\",\n            \"-t_srs\",\n            \"EPSG:3857\",\n            \"-q\",\n            \"-of\",\n            \"GTiff\",\n            \"-tr\",\n            \"1000.0\",\n            \"1000.0\",\n            f\"{tmpfn}.png\",\n            f\"{tmpfn}.tif\",\n        ]\n        subprocess.call(cmd)\n        # Insert into LDM\n        cmd = [\n            \"pqinsert\",\n            \"-i\",\n            \"-p\",\n            f\"plot c {now:%Y%m%d%H%M} gis/images/3857/mrms/{prefix}.tif \"\n            f\"GIS/mrms/{prefix}_{now:%Y%m%d%H%M}.tif tif\",\n            f\"{tmpfn}.tif\",\n        ]\n        subprocess.call(cmd)\n\n        with open(f\"{tmpfn}.json\", \"w\", encoding=\"utf8\") as fh:\n            json.dump({\"meta\": metadata}, fh)\n        # Insert into LDM\n        cmd = [\n            \"pqinsert\",\n            \"-i\",\n            \"-p\",\n            f\"plot c {now:%Y%m%d%H%M} gis/images/4326/mrms/{prefix}.json \"\n            f\"GIS/mrms/{prefix}_{now:%Y%m%d%H%M}.json json\",\n            f\"{tmpfn}.json\",\n        ]\n        subprocess.call(cmd)\n    for suffix in [\"tif\", \"json\", \"png\", \"wld\"]:\n        if os.path.isfile(f\"{tmpfn}.{suffix}\"):\n            os.unlink(f\"{tmpfn}.{suffix}\")\n\n    os.close(tmpfp)\n    os.unlink(tmpfn)\n\n\n@click.command()\n@click.option(\n    \"--valid\", required=True, type=click.DateTime(), help=\"UTC Timestamp\"\n)\ndef main(valid: datetime):\n    \"\"\"Go Main Go\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    realtime = False\n    if (utc() - valid) < timedelta(minutes=10):\n        realtime = True\n    # Present reality\n    if realtime and valid.minute % 2 != 0:\n        LOG.info(\"Skipping realtime %s as minute not even\", valid)\n        return\n    workflow(valid, True)\n    # Also check old dates\n    for delta in [30, 90, 600, 1440, 2880]:\n        ts = valid - timedelta(minutes=delta)\n        ppath = ts.strftime(\"%Y/%m/%d/GIS/mrms/a2m_%Y%m%d%H%M.png\")\n        with archive_fetch(ppath) as fn:\n            if fn is None:\n                workflow(ts, False)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/nass/ingest_iowa_pdf.py",
    "content": "\"\"\"Sucks that the raw data is only found in the PDFs.\n\nRun from RUN_12Z.sh on Tuesdays\n\"\"\"\n\nimport os\nimport tempfile\nimport warnings\nfrom datetime import datetime, timedelta\n\nimport click\nimport httpx\nimport pytesseract\nfrom pdf2image import convert_from_path\nfrom pdfminer.high_level import extract_text\nfrom pyiem.database import get_dbconnc\nfrom pyiem.util import logger\n\n# emitted whilst parsing the PDF\nwarnings.simplefilter(\"ignore\", UserWarning)\nBASEURL = (\n    \"https://www.nass.usda.gov/Statistics_by_State/Iowa/Publications/\"\n    \"Crop_Progress_&_Condition/\"\n)\nREMAPED = {\n    \"hay, alfalfa, first cutting\": \"hay, alfalfa, 1st cutting\",\n    \"alfalfa hay first cutting\": \"hay, alfalfa, 1st cutting\",\n    \"alfalfa hay, first cuttin\": \"hay, alfalfa, 1st cutting\",\n    \"alfalfa hay, first cutting\": \"hay, alfalfa, 1st cutting\",\n    \"hay, alfalfa - first crop harvested\": \"hay, alfalfa, 1st cutting\",\n    \"hay, alfalfa - 1st cutting\": \"hay, alfalfa, 1st cutting\",\n    \"hay, alfalfa, second cutting\": \"hay, alfalfa, 2nd cutting\",\n    \"alfalfa hay second cutting\": \"hay, alfalfa, 2nd cutting\",\n    \"alfalfa hay, second cutting\": \"hay, alfalfa, 2nd cutting\",\n    \"hay, alfalfa, third cutting\": \"hay, alfalfa, 3rd cutting\",\n    \"alfalfa hay third cutting\": \"hay, alfalfa, 3rd cutting\",\n    \"alfalfa hay, third cutting\": \"hay, alfalfa, 3rd cutting\",\n    \"oats harvested\": \"oats harvested for grain\",\n    \"oats emerge\": \"oats emerged\",\n    \"oats emerget\": \"oats emerged\",\n    \"cor planted\": \"corn planted\",\n    \"subsoil moisture adequat\": \"subsoil moisture adequate\",\n    \"ubsoil moisture\": \"subsoil moisture\",\n}\nDOMAIN = [\n    \"corn dented\",\n    \"corn dough\",\n    \"corn emerged\",\n    \"corn mature\",\n    \"corn planted\",\n    \"corn harvested for grain\",\n    \"corn silking\",\n    \"days suitable\",\n    \"fertilizer application completed\",\n    \"hay, alfalfa, 1st cutting\",\n    \"hay, alfalfa, 2nd cutting\",\n    \"hay, alfalfa, 3rd cutting\",\n    \"oats coloring\",\n    \"oats emerged\",\n    \"oats harvested for grain\",\n    \"oats headed\",\n    \"oats planted\",\n    \"oats turning color\",\n    \"soybeans blooming\",\n    \"soybeans coloring\",\n    \"soybeans dropping leaves\",\n    \"soybeans planted\",\n    \"soybeans emerged\",\n    \"soybeans setting pods\",\n    \"subsoil moisture very short\",\n    \"subsoil moisture short\",\n    \"subsoil moisture adequate\",\n    \"subsoil moisture surplus\",\n    \"topsoil moisture very short\",\n    \"topsoil moisture short\",\n    \"topsoil moisture adequate\",\n    \"topsoil moisture surplus\",\n]\nLOG = logger()\n\n\ndef is_number(s):\n    try:\n        float(s)\n        return True\n    except ValueError:\n        return False\n\n\ndef glean_labels(label) -> list:\n    \"\"\"Figure out what we have here.\"\"\"\n    res = []\n    prefix = \"\"\n    for tokenin in [x.strip().lower() for x in label.split(\"\\n\")]:\n        token = tokenin.replace(\".\", \"\").strip()\n        token = REMAPED.get(token, token)\n        if token.find(\"moisture\") > -1:\n            prefix = f\"{token} \"\n            continue\n        token = f\"{prefix}{token}\"\n        if token in DOMAIN:\n            res.append(token)\n    return res\n\n\ndef process_lines_pdfminer(valid, lines) -> int:\n    \"\"\"Special magic here.\"\"\"\n    labels = \"\"\n    numbers = []\n    for line_in in lines:\n        line = line_in.strip().lower()\n        if line == \"\":\n            continue\n        if line in [\"topsoil moisture\", \"subsoil moisture\"]:\n            labels += line + \"\\n\"\n            continue\n        if line.find(\"...\") > -1:\n            labels += line.replace(\".\", \"\") + \"\\n\"\n            continue\n        if labels != \"\":\n            if is_number(line):\n                numbers.append(line)\n                continue\n            metrics = glean_labels(labels)\n            if metrics and len(numbers) > (len(metrics) * 10):\n                for i, metric in enumerate(metrics):\n                    nums = [numbers[j * len(metrics) + i] for j in range(10)]\n                    ingest(valid, metric, nums)\n            labels = \"\"\n            numbers = []\n\n\ndef process_lines(valid, lines) -> int:\n    \"\"\"Process a table.\"\"\"\n    # Quacks like a duck here\n    prefix = \"\"\n    inserts = 0\n    for line_in in lines:\n        line = (\n            line_in.strip()\n            .lower()\n            .replace(\"a1\", \"11\")\n            .replace(\"ii\", \"11\")\n            .replace(\"g1\", \"91\")\n            .replace(\"plante:\", \"planted\")\n            .replace(\"0c cece\", \"\")\n            .replace(\"00.c ceed\", \"\")\n        )\n        if line in [\"topsoil moisture\", \"subsoil moisture\"]:\n            prefix = line + \" \"\n            continue\n        # A good data line has some alpha label followed by 10+ numbers\n        tokens = line.split()\n        if len(tokens) < 10:\n            continue\n        # A first guess\n        if not is_number(tokens[-10]) or not is_number(tokens[-9]):\n            continue\n        label = prefix\n        numbers = []\n        for i, token in enumerate(tokens):\n            if is_number(token):\n                numbers = tokens[i:]\n                break\n            label += token.replace(\".\", \"\") + \" \"\n        label = label.strip()\n        label = REMAPED.get(label, label)\n        if label not in DOMAIN:\n            # Attempt to fix OCR errors\n            for domain in DOMAIN:\n                if label.startswith(domain):\n                    label = domain\n                    break\n        if label not in DOMAIN:\n            LOG.info(\"Unknown label: |%s| line: %s\", label, line)\n            continue\n        ingest(valid, label, numbers)\n        inserts += 1\n    return inserts\n\n\ndef ingest(valid, label, numbers):\n    \"\"\"We have content.\"\"\"\n    # Some QC\n    if numbers[1] == \"|\":\n        numbers.pop(1)\n    numbers = [\n        x.replace(\"]\", \"\")\n        .replace(\"l\", \"1\")\n        .replace(\"|\", \"\")\n        .replace(\")\", \"\")\n        .replace(\"}\", \"\")\n        .replace(\",\", \"\")\n        .replace(\"5a\", \"54\")\n        .replace(\"a\", \"\")\n        for x in numbers\n    ]\n    if label == \"days suitable\":\n        numbers = [float(x) for x in numbers[:10]]\n        for i in range(10):\n            if numbers[i] >= 10:\n                numbers[i] = numbers[i] / 10.0  # OCR Fail\n    # OCR Fail\n    for i in range(10):\n        if numbers[i] in [\"(\", \")\", \"\"]:\n            numbers[i] = 0\n    LOG.info(\"Ingesting %s %s\", label, numbers[:10])\n    conn, cursor = get_dbconnc(\"coop\")\n    cursor.execute(\n        \"delete from nass_iowa where valid = %s and metric = %s\",\n        (valid, label),\n    )\n    cursor.execute(\n        \"INSERT into nass_iowa(valid, metric, nw, nc, ne, wc, c, ec, \"\n        \"sw, sc, se, iowa) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, \"\n        \"%s, %s, %s, %s)\",\n        (valid, label, *numbers[:10]),\n    )\n    cursor.close()\n    conn.commit()\n    conn.close()\n\n\ndef get_url(valid):\n    \"\"\"Le Sigh.\"\"\"\n    uri = (\n        f\"{BASEURL}{valid:%Y}/IA-Crop-Progress-\"\n        f\"{valid:%m}-{valid:%d}-{valid:%y}.pdf\"\n    )\n    if valid.year <= 2017:\n        uri = uri.replace(\"-\", \"_\")\n    if datetime(2013, 6, 1) < valid < datetime(2014, 1, 1):\n        uri = uri.replace(\"_Crop_Progress_\", \"\")\n    elif valid.year <= 2016:\n        uri = uri.replace(\"_Crop_Progress\", \"\")\n    if datetime(2014, 5, 20) < valid < datetime(2014, 6, 29):\n        uri = uri.replace(\"_14\", \"__14\")\n    return uri\n\n\ndef workflow(sunday, engine, remotefn):\n    \"\"\"Do Work.\"\"\"\n    # Find the PDF by looking at Monday, Tuesday, and Wednesday\n    found = False\n    if remotefn is not None:\n        req = httpx.get(f\"{BASEURL}/{sunday:%Y}/{remotefn}\")\n    else:\n        for day in [1, 2, 3, 0]:\n            valid = sunday + timedelta(days=day)\n            uri = get_url(valid)\n            LOG.info(\"Attempting %s\", uri)\n            req = httpx.get(uri)\n            if req.status_code == 200:\n                found = True\n                break\n        if not found:\n            LOG.info(\"Failed to find PDF for %s\", sunday)\n            return\n    with tempfile.NamedTemporaryFile(\"wb\", delete=False) as fh:\n        fh.write(req.content)\n    pdffn = fh.name + \".pdf\"\n    os.rename(fh.name, pdffn)\n    if engine == \"pdfminer\":\n        extracted_text = extract_text(pdffn, maxpages=1)\n        process_lines_pdfminer(sunday, extracted_text.split(\"\\n\"))\n    else:\n        pages = convert_from_path(pdffn, 200, first_page=1, last_page=1)\n        extracted_text = \"\"\n        # Loop through each image and extract the text\n        for page in pages:\n            extracted_text += pytesseract.image_to_string(page)\n        process_lines(sunday, extracted_text.split(\"\\n\"))\n    os.unlink(pdffn)\n\n\n@click.command()\n@click.option(\"--sunday\", help=\"NASS Analysis Date\", type=click.DateTime())\n@click.option(\"--weeks\", help=\"Number of weeks to run\", type=int, default=1)\n@click.option(\"--engine\", help=\"PDF Engine\", default=\"pytesseract\")\n@click.option(\"--remotefn\", help=\"Remote Filename\", default=None)\ndef main(sunday, weeks, engine, remotefn):\n    \"\"\"Go Main Go.\"\"\"\n    for _ in range(weeks):\n        workflow(sunday, engine, remotefn)\n        sunday += timedelta(days=7)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/nass/nass_quickstats.py",
    "content": "\"\"\"Dump NASS Quickstats to the IEM database.\n\nRun from RUN_10_AFTER.sh at 3 PM each day.\"\"\"\n\nfrom datetime import datetime, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport httpx\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.util import get_properties, logger\nfrom sqlalchemy.engine import Connection\n\nLOG = logger()\nPROPS = get_properties()\nTOPICS = [\n    {\"commodity_desc\": \"CORN\", \"statisticcat_desc\": \"PROGRESS\"},\n    {\"commodity_desc\": \"SOYBEANS\", \"statisticcat_desc\": \"PROGRESS\"},\n    {\"commodity_desc\": \"SORGHUM\", \"statisticcat_desc\": \"PROGRESS\"},\n    {\"commodity_desc\": \"WHEAT\", \"statisticcat_desc\": \"PROGRESS\"},\n    {\"commodity_desc\": \"CORN\", \"statisticcat_desc\": \"YIELD\"},\n    {\"commodity_desc\": \"SOYBEANS\", \"statisticcat_desc\": \"YIELD\"},\n    {\"commodity_desc\": \"SORGHUM\", \"statisticcat_desc\": \"YIELD\"},\n    {\"commodity_desc\": \"WHEAT\", \"statisticcat_desc\": \"YIELD\"},\n    {\"commodity_desc\": \"CORN\", \"statisticcat_desc\": \"CONDITION\"},\n    {\"commodity_desc\": \"SOYBEANS\", \"statisticcat_desc\": \"CONDITION\"},\n    {\"commodity_desc\": \"SORGHUM\", \"statisticcat_desc\": \"CONDITION\"},\n    {\"commodity_desc\": \"WHEAT\", \"statisticcat_desc\": \"CONDITION\"},\n    {\"commodity_desc\": \"SOIL\", \"statisticcat_desc\": \"MOISTURE\"},\n    {\"commodity_desc\": \"FIELDWORK\", \"statisticcat_desc\": \"DAYS SUITABLE\"},\n]\nSERVICE = \"https://quickstats.nass.usda.gov/api/api_GET/\"\n\n\ndef get_df(year, sts, topic):\n    \"\"\"Figure out the data we need.\"\"\"\n    params = {\n        \"key\": PROPS[\"usda.quickstats.key\"],\n        \"format\": \"JSON\",\n        \"program_desc\": \"SURVEY\",\n        \"sector_desc\": \"CROPS\",\n    }\n    if year is not None:\n        params[\"year\"] = year\n    if sts is not None:\n        params[\"load_time__GE\"] = sts.strftime(\"%Y-%m-%d %H:%M:%S\")\n    params.update(topic)\n    try:\n        resp = httpx.get(SERVICE, params=params, timeout=300)\n        # Shrug, getting a Bad Request when there is no data\n        if resp.status_code == 400:\n            return None\n        resp.raise_for_status()\n    except Exception as exp:\n        LOG.warning(\"Error fetching NASS data: %s\", exp)\n        return None\n    data = resp.json()\n    return pd.DataFrame(data[\"data\"])\n\n\n@with_sqlalchemy_conn(\"coop\")\ndef process(df: pd.DataFrame, conn: Connection | None = None):\n    \"\"\"Do some work\"\"\"\n    # Try to get a number\n    df[\"num_value\"] = pd.to_numeric(df[\"Value\"], errors=\"coerce\")\n    # Get load_time in proper order\n    df[\"load_time\"] = pd.to_datetime(\n        df[\"load_time\"].str.slice(0, 19), format=\"%Y-%m-%d %H:%M:%S\"\n    ).dt.tz_localize(ZoneInfo(\"America/New_York\"))\n    df = df.replace({np.nan: None, \"\": None})\n    deleted = 0\n    inserted = 0\n    dups = 0\n    for _, row in df.iterrows():\n        # Ignore duplicated data like CONDITION, 5 YEAR AVG\n        if row[\"statisticcat_desc\"].find(\"YEAR\") > 0:\n            continue\n        # fix SQL comparator\n        cc = \"is not distinct from\" if row[\"week_ending\"] is None else \"=\"\n        cf = \"is not distinct from\" if row[\"county_ansi\"] is None else \"=\"\n        # Uniqueness by short_desc, year, state_alpha, week_ending\n        res = conn.execute(\n            sql_helper(\n                \"\"\"\n    SELECT load_time from nass_quickstats where year = :yr\n    and short_desc = :sd and state_alpha = :sa\n    and week_ending {cc} :we and freq_desc = :fd and\n    county_ansi {cf} :ca\n                       \"\"\",\n                cc=cc,\n                cf=cf,\n            ),\n            {\n                \"yr\": row[\"year\"],\n                \"sd\": row[\"short_desc\"],\n                \"sa\": row[\"state_alpha\"],\n                \"we\": row[\"week_ending\"],\n                \"fd\": row[\"freq_desc\"],\n                \"ca\": row[\"county_ansi\"],\n            },\n        )\n        if res.rowcount > 0:\n            lt = res.mappings().fetchone()[\"load_time\"]\n            if lt == row[\"load_time\"].to_pydatetime():\n                dups += 1\n                continue\n            conn.execute(\n                sql_helper(\n                    \"\"\"\n    DELETE from nass_quickstats where year = :yr\n                and short_desc = :sd and state_alpha = :sa\n                and week_ending {cc} :we and freq_desc = :fd\n                and county_ansi {cf} :ca\n                \"\"\",\n                    cc=cc,\n                    cf=cf,\n                ),\n                {\n                    \"yr\": row[\"year\"],\n                    \"sd\": row[\"short_desc\"],\n                    \"sa\": row[\"state_alpha\"],\n                    \"we\": row[\"week_ending\"],\n                    \"fd\": row[\"freq_desc\"],\n                    \"ca\": row[\"county_ansi\"],\n                },\n            )\n            deleted += res.rowcount\n        inserted += 1\n        conn.execute(\n            sql_helper(\"\"\"\n            INSERT into nass_quickstats(\n            short_desc,\n            sector_desc,\n            group_desc,\n            commodity_desc,\n            class_desc,\n            prodn_practice_desc,\n            util_practice_desc,\n            statisticcat_desc,\n            unit_desc,\n            agg_level_desc,\n            state_alpha,\n            year,\n            freq_desc,\n            begin_code,\n            end_code,\n            week_ending,\n            load_time,\n            value,\n            cv,\n            county_ansi,\n            num_value) VALUES (:p1, :p2, :p3, :p4, :p5, :p6, :p7, :p8, :p9,\n            :p10, :p11, :p12, :p13, :p14, :p15, :p16, :p17, :p18, :p19, :p20,\n            :p21)\n            \"\"\"),\n            {\n                \"p1\": row[\"short_desc\"],\n                \"p2\": row[\"sector_desc\"],\n                \"p3\": row[\"group_desc\"],\n                \"p4\": row[\"commodity_desc\"],\n                \"p5\": row[\"class_desc\"],\n                \"p6\": row[\"prodn_practice_desc\"],\n                \"p7\": row[\"util_practice_desc\"],\n                \"p8\": row[\"statisticcat_desc\"],\n                \"p9\": row[\"unit_desc\"],\n                \"p10\": row[\"agg_level_desc\"],\n                \"p11\": row[\"state_alpha\"],\n                \"p12\": row[\"year\"],\n                \"p13\": row[\"freq_desc\"],\n                \"p14\": row[\"begin_code\"],\n                \"p15\": row[\"end_code\"],\n                \"p16\": row[\"week_ending\"],\n                \"p17\": row[\"load_time\"],\n                \"p18\": row[\"Value\"],\n                \"p19\": row[\"CV (%)\"],\n                \"p20\": row[\"county_ansi\"],\n                \"p21\": row[\"num_value\"],\n            },\n        )\n    conn.commit()\n    LOG.warning(\"Del %s, Inserted %s, Dups %s rows\", deleted, inserted, dups)\n\n\n@click.command()\n@click.option(\"--all\", \"rerun_all\", is_flag=True, help=\"Re-run all data\")\ndef main(rerun_all: bool):\n    \"\"\"Go Main Go\"\"\"\n    # Figure out a load_time\n    if rerun_all:\n        LOG.info(\"Re-running all!\")\n        sts = None\n        # Oh my cats\n        years = range(1866, datetime.now().year + 1)\n    else:\n        years = [None]\n        sts = (datetime.now() - timedelta(days=1)).replace(\n            hour=0, minute=0, second=0\n        )\n\n    for year in years:\n        for topic in TOPICS:\n            df = get_df(year, sts, topic)\n            if df is not None:\n                process(df)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ncei/ingest_climdiv.py",
    "content": "\"\"\"Ingest what NCEI has for its climdiv dataset.\n\nRun from RUN_0Z.sh\n\"\"\"\n\nimport httpx\nimport pandas as pd\nfrom pyiem.database import get_dbconn\nfrom pyiem.reference import ncei_state_codes\nfrom pyiem.util import get_properties, logger, set_property\n\nLOG = logger()\nELEMENT2IEM = {\n    \"pcpn\": \"precip\",\n    \"tmin\": \"low\",\n    \"tmax\": \"high\",\n}\n\n\ndef process(procdate, region):\n    \"\"\"Process the climdiv data.\"\"\"\n    ncei2state = {}\n    for key, val in ncei_state_codes.items():\n        if region == \"st\":\n            ncei2state[f\"{int(val):03.0f}\"] = key\n        else:\n            ncei2state[f\"{int(val):02.0f}\"] = key\n    alldf = None\n    pos = 3 if region == \"st\" else 2\n    for element, iemvar in ELEMENT2IEM.items():\n        LOG.info(\"Fetching %s[%s]\", element, region)\n        df = (\n            pd.read_csv(\n                \"https://www.ncei.noaa.gov/pub/data/cirs/climdiv/\"\n                f\"climdiv-{element}{region}-v1.0.0-{procdate}\",\n                names=\"stcode 1 2 3 4 5 6 7 8 9 10 11 12\".split(),\n                dtype={\"stcode\": str},\n                sep=r\"\\s+\",\n                na_values=[\"-9.99\", \"-99.90\"],\n            )\n            .assign(\n                state=lambda df_: df_[\"stcode\"].str.slice(0, pos),\n                divnum=lambda df_: df_[\"stcode\"].str.slice(pos, 4),\n                year=lambda df_: pd.to_numeric(df_[\"stcode\"].str.slice(6, 10)),\n            )\n            .assign(\n                state=lambda df_: df_[\"state\"].map(ncei2state),\n                station=lambda df_: (\n                    df_[\"state\"]\n                    + (\"\" if region == \"st\" else \"C\")\n                    + df_[\"divnum\"].str.pad(\n                        4 if region == \"st\" else 3, fillchar=\"0\"\n                    )\n                ),\n            )\n            .dropna(subset=[\"state\"])\n            .drop(columns=[\"stcode\", \"state\", \"divnum\"])\n            .melt(\n                id_vars=[\"station\", \"year\"],\n                value_vars=\"1 2 3 4 5 6 7 8 9 10 11 12\".split(),\n                var_name=\"month\",\n                value_name=iemvar,\n            )\n            .assign(\n                day=1,\n                date=lambda df_: pd.to_datetime(df_[[\"year\", \"month\", \"day\"]]),\n            )\n            .drop(columns=[\"year\", \"month\", \"day\"])\n            .set_index([\"station\", \"date\"])\n            .dropna()\n        )\n        if alldf is None:\n            alldf = df\n        else:\n            alldf[iemvar] = df[iemvar]\n    return alldf.reset_index()\n\n\ndef update(cursor, row) -> int:\n    \"\"\"Do update.\"\"\"\n    cursor.execute(\n        \"\"\"\n        update ncei_climdiv SET precip = %s, high = %s, low = %s\n        WHERE station = %s and day = %s\n        \"\"\",\n        (\n            row[\"precip\"],\n            row[\"high\"],\n            row[\"low\"],\n            row[\"station\"],\n            row[\"date\"],\n        ),\n    )\n    return cursor.rowcount\n\n\ndef dbsave(df):\n    \"\"\"Upsert data into database.\"\"\"\n    conn = get_dbconn(\"coop\")\n    cursor = conn.cursor()\n    for _, row in df.iterrows():\n        if update(cursor, row) != 1:\n            cursor.execute(\n                \"INSERT into ncei_climdiv(station, day) VALUES (%s, %s)\",\n                (row[\"station\"], row[\"date\"]),\n            )\n            update(cursor, row)\n\n    cursor.close()\n    conn.commit()\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    try:\n        resp = httpx.get(\n            \"https://www.ncei.noaa.gov/pub/data/cirs/climdiv/procdate.txt\",\n            timeout=60,\n        )\n        resp.raise_for_status()\n        procdate = resp.text.strip()\n    except Exception as exp:\n        LOG.warning(\"Aborting as fetch procdate.txt: %s\", exp)\n        return\n    iemprocdate = get_properties().get(\"ncei.climdiv.procdate\")\n    if iemprocdate is not None and iemprocdate == procdate:\n        LOG.info(\"Nothing to do, procdate %s\", procdate)\n        return\n    LOG.warning(\"Found new %s to process\", procdate)\n    for region in [\"dv\", \"st\"]:\n        df = process(procdate, region)\n        dbsave(df)\n    set_property(\"ncei.climdiv.procdate\", procdate)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ndfd/grid_climate_ndfd.py",
    "content": "\"\"\"Grid climate for netcdf usage\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport numpy as np\nfrom pyiem.database import get_dbconnc\nfrom pyiem.iemre import daily_offset\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.reference import state_names\nfrom pyiem.util import convert_value, ncopen\nfrom scipy.interpolate import NearestNDInterpolator\n\nNT = NetworkTable([f\"{abbr}CLIMATE\" for abbr in state_names])\n\n\ndef generic_gridder(nc, cursor, idx):\n    \"\"\"\n    Generic gridding algorithm for easy variables\n    \"\"\"\n    lats = []\n    lons = []\n    vals = []\n    for row in cursor:\n        if row[idx] is not None and row[\"station\"] in NT.sts:\n            lats.append(NT.sts[row[\"station\"]][\"lat\"])\n            lons.append(NT.sts[row[\"station\"]][\"lon\"])\n            vals.append(row[idx])\n    if len(vals) < 4:\n        print(\n            (\"Only %s observations found for %s, won't grid\")\n            % (len(vals), idx)\n        )\n        return None\n\n    nn = NearestNDInterpolator((lons, lats), np.array(vals))\n    grid = nn(nc.variables[\"lon\"][:], nc.variables[\"lat\"][:])\n    print(\n        (\"%s %s %.3f %.3f\")\n        % (cursor.rowcount, idx, np.max(grid), np.min(grid))\n    )\n    if grid is not None:\n        return grid\n    return None\n\n\ndef grid_day(nc, ts):\n    \"\"\"\n    I proctor the gridding of data on an hourly basis\n    @param ts Timestamp of the analysis, we'll consider a 20 minute window\n    \"\"\"\n    pgconn, cursor = get_dbconnc(\"coop\")\n    offset = daily_offset(ts)\n    if ts.day == 29 and ts.month == 2:\n        ts = datetime(2000, 3, 1)\n\n    sql = \"\"\"SELECT * from climate51 WHERE valid = '%s' and\n             substr(station,3,4) != '0000' and substr(station,3,1) != 'C'\n             \"\"\" % (ts.strftime(\"%Y-%m-%d\"),)\n    cursor.execute(sql)\n    res = generic_gridder(nc, cursor, \"high\")\n    nc.variables[\"high_tmpk\"][offset] = convert_value(res, \"degF\", \"degK\")\n\n    cursor.scroll(0, mode=\"absolute\")\n    res = generic_gridder(nc, cursor, \"low\")\n    nc.variables[\"low_tmpk\"][offset] = convert_value(res, \"degF\", \"degK\")\n\n    cursor.scroll(0, mode=\"absolute\")\n    res = generic_gridder(nc, cursor, \"precip\")\n    nc.variables[\"p01d\"][offset] = convert_value(res, \"inch\", \"millimeter\")\n\n    cursor.scroll(0, mode=\"absolute\")\n    res = generic_gridder(nc, cursor, \"gdd50\")\n    nc.variables[\"gdd50\"][offset] = res\n    cursor.close()\n    pgconn.close()\n\n\ndef workflow(ts):\n    \"\"\"our workflow\"\"\"\n    # Load up a station table we are interested in\n\n    # Load up our netcdf file!\n    with ncopen(\"/mesonet/data/ndfd/ndfd_dailyc.nc\", \"a\") as nc:\n        grid_day(nc, ts)\n\n\ndef main():\n    \"\"\"Go Main!\"\"\"\n    sts = datetime(2000, 1, 1)\n    ets = datetime(2001, 1, 1)\n    interval = timedelta(days=1)\n    now = sts\n    while now < ets:\n        print(now)\n        workflow(now)\n        now += interval\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ndfd/init_ndfd_dailyc.py",
    "content": "\"\"\"Generate the NDFD climatology file, hmmm\"\"\"\n\nimport os\nfrom datetime import datetime\n\nimport numpy as np\nimport pygrib\nfrom pyiem.util import ncopen\n\n\ndef init_year(ts):\n    \"\"\"\n    Create a new NetCDF file for a year of our specification!\n    \"\"\"\n    ncfn = \"/mesonet/data/ndfd/ndfd_dailyc.nc\"\n    if os.path.isfile(ncfn):\n        print(f\"Cowardly refusing to overwrite {ncfn}\")\n        return\n    nc = ncopen(ncfn, \"w\")\n    nc.title = \"NDFD\"\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = \"%s Generated\" % (datetime.now().strftime(\"%d %B %Y\"),)\n\n    grbs = pygrib.open(\n        \"/mesonet/ARCHIVE/data/2019/05/06/model/ndfd/\"\n        \"00/ndfd.t00z.awp2p5f001.grib2\"\n    )\n    grb = grbs[1]\n    shape = grb.values.shape\n    lats, lons = grb.latlons()\n\n    # Setup Dimensions\n    nc.createDimension(\"lat\", shape[0])\n    nc.createDimension(\"lon\", shape[1])\n    ts2 = datetime(ts.year + 1, 1, 1)\n    days = (ts2 - ts).days\n    nc.createDimension(\"time\", int(days))\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"lat\", \"lon\"))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.bounds = \"lat_bnds\"\n    lat.axis = \"Y\"\n    lat[:] = lats\n\n    lon = nc.createVariable(\"lon\", float, (\"lat\", \"lon\"))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.bounds = \"lon_bnds\"\n    lon.axis = \"X\"\n    lon[:] = lons\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = \"Days since %s-01-01 00:00:0.0\" % (ts.year,)\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm[:] = np.arange(0, int(days))\n\n    p01d = nc.createVariable(\n        \"p01d\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    p01d.units = \"mm\"\n    p01d.scale_factor = 0.01\n    p01d.long_name = \"Precipitation\"\n    p01d.standard_name = \"Precipitation\"\n    p01d.coordinates = \"lon lat\"\n    p01d.description = \"Precipitation accumulation for the day\"\n\n    high = nc.createVariable(\n        \"high_tmpk\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    high.units = \"K\"\n    high.scale_factor = 0.01\n    high.long_name = \"2m Air Temperature Daily High\"\n    high.standard_name = \"2m Air Temperature\"\n    high.coordinates = \"lon lat\"\n\n    low = nc.createVariable(\n        \"low_tmpk\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    low.units = \"K\"\n    low.scale_factor = 0.01\n    low.long_name = \"2m Air Temperature Daily Low\"\n    low.standard_name = \"2m Air Temperature\"\n    low.coordinates = \"lon lat\"\n\n    gdd = nc.createVariable(\n        \"gdd50\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    gdd.units = \"F\"\n    gdd.scale_factor = 0.01\n    gdd.long_name = \"Growing Degree Days\"\n    gdd.standard_name = \"Growing Degree Days\"\n    gdd.coordinates = \"lon lat\"\n\n    nc.close()\n\n\ndef main():\n    \"\"\"Go Main\"\"\"\n    init_year(datetime(2000, 1, 1))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ndfd/ndfd2iemre.py",
    "content": "\"\"\"Copy NDFD grib data to IEMRE...\n\nRun from RUN_20_AFTER.sh\n\"\"\"\n\nimport shutil\nimport warnings\nfrom datetime import date, timedelta\n\nimport numpy as np\nimport pygrib\nfrom pyiem import iemre\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import archive_fetch, logger, ncopen, utc\n\nLOG = logger()\n# unavoidable casting\nwarnings.simplefilter(\"ignore\", RuntimeWarning)\n\n\ndef create(ts):\n    \"\"\"\n    Create a new NetCDF file for a year of our specification!\n    \"\"\"\n    fn = \"/mesonet/data/iemre/ndfd_current_new.nc\"\n    with ncopen(fn, \"w\") as nc:\n        nc.title = \"NDFD on IEMRE Grid.\"\n        nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n        nc.ndfd_forecast = ts.strftime(ISO8601)\n        nc.history = f\"{date.today():%d %B %Y} Generated\"\n\n        # Setup Dimensions\n        nc.createDimension(\"lat\", iemre.NY)\n        nc.createDimension(\"lon\", iemre.NX)\n        # store 20 days worth, to be safe of future changes\n        nc.createDimension(\"time\", 20)\n\n        # Setup Coordinate Variables\n        lat = nc.createVariable(\"lat\", float, (\"lat\"))\n        lat.units = \"degrees_north\"\n        lat.long_name = \"Latitude\"\n        lat.standard_name = \"latitude\"\n        lat.bounds = \"lat_bnds\"\n        lat.axis = \"Y\"\n        lat[:] = iemre.YAXIS\n\n        lon = nc.createVariable(\"lon\", float, (\"lon\"))\n        lon.units = \"degrees_east\"\n        lon.long_name = \"Longitude\"\n        lon.standard_name = \"longitude\"\n        lon.bounds = \"lon_bnds\"\n        lon.axis = \"X\"\n        lon[:] = iemre.XAXIS\n\n        tm = nc.createVariable(\"time\", float, (\"time\",))\n        tm.units = f\"Days since {ts:%Y-%m-%d} 00:00:0.0\"\n        tm.long_name = \"Time\"\n        tm.standard_name = \"time\"\n        tm.axis = \"T\"\n        tm.calendar = \"gregorian\"\n        # Placeholder\n        tm[:] = np.arange(0, 20)\n\n        high = nc.createVariable(\n            \"high_tmpk\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n        )\n        high.units = \"K\"\n        high.scale_factor = 0.01\n        high.long_name = \"2m Air Temperature 12 Hour High\"\n        high.standard_name = \"2m Air Temperature\"\n        high.coordinates = \"lon lat\"\n\n        low = nc.createVariable(\n            \"low_tmpk\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n        )\n        low.units = \"K\"\n        low.scale_factor = 0.01\n        low.long_name = \"2m Air Temperature 12 Hour Low\"\n        low.standard_name = \"2m Air Temperature\"\n        low.coordinates = \"lon lat\"\n\n\ndef do_target(nc, now, target, day, vname):\n    \"\"\"Make magic.\"\"\"\n    hour = 0\n    found = False\n    ncvar = \"high\" if vname == \"Maximum\" else \"low\"\n    while hour < 24 and not found:\n        ts = now - timedelta(hours=hour)\n        fhour = (target - ts).total_seconds() / 3600.0\n        ppath = ts.strftime(\n            f\"%Y/%m/%d/model/ndfd/%H/ndfd.t%Hz.awp2p5f{fhour:03.0f}.grib2\"\n        )\n        with archive_fetch(ppath) as fn:\n            if fn is None:\n                hour += 1\n                continue\n            with pygrib.open(fn) as grbs:\n                for grb in grbs:\n                    if (\n                        grb.valid_key(\"parameterName\")\n                        and grb[\"parameterName\"] == f\"{vname} temperature\"\n                    ):\n                        # This is 0z\n                        LOG.info(\"%s_tmpk day: %s fn: %s\", ncvar, day, ppath)\n                        nc.variables[f\"{ncvar}_tmpk\"][day] = iemre.grb2iemre(\n                            grb,\n                        )\n                        found = True\n        hour += 1\n\n\ndef merge_grib(nc, now):\n    \"\"\"Merge what grib data we can find into the netcdf file.\"\"\"\n\n    for day in range(10):\n        dt = now.date() + timedelta(days=day)\n        # Look backward until we find a 0z forecast (utc + 1 day)\n        target = utc(dt.year, dt.month, dt.day, 0, 0, 0) + timedelta(days=1)\n        do_target(nc, now, target, day, \"Maximum\")\n        # Look backward until we find a 12z forecast\n        target = utc(dt.year, dt.month, dt.day, 12, 0, 0)\n        do_target(nc, now, target, day, \"Minimum\")\n\n\ndef main():\n    \"\"\"Do the work.\"\"\"\n    now = utc().replace(minute=0, second=0, microsecond=0)\n    create(now)\n    with ncopen(\"/mesonet/data/iemre/ndfd_current_new.nc\", \"a\") as nc:\n        merge_grib(nc, now)\n    shutil.move(\n        \"/mesonet/data/iemre/ndfd_current_new.nc\",\n        \"/mesonet/data/iemre/ndfd_current.nc\",\n    )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ndfd/ndfd2netcdf.py",
    "content": "\"\"\"Copy NDFD grib data to netcdf.\n\nCalled from RUN_10_AFTER.sh\n\"\"\"\n\nimport os\nfrom datetime import datetime, timedelta\n\nimport click\nimport numpy as np\nimport pygrib\nfrom pyiem.util import ncopen, utc\n\n\ndef create_netcdf(ts):\n    \"\"\"Make the file.\"\"\"\n    fn = ts.strftime(\"/mesonet/data/ndfd/%Y%m%d%H_ndfd.nc\")\n    nc = ncopen(fn, \"w\")\n    nc.title = \"NWS NDFD Forecast From %s\" % (ts.strftime(\"%Y-%m-%dT%H:%MZ\"),)\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = \"%s Generated\" % (utc().strftime(\"%Y-%m-%dT%H:%MZ\"),)\n\n    grbs = pygrib.open(\n        \"/mesonet/ARCHIVE/data/2019/05/06/model/\"\n        \"ndfd/00/ndfd.t00z.awp2p5f001.grib2\"\n    )\n    grb = grbs[1]\n    shape = grb.values.shape\n    lats, lons = grb.latlons()\n    # Setup dimensions\n    nc.createDimension(\"lat\", shape[0])\n    nc.createDimension(\"lon\", shape[1])\n    nc.createDimension(\"day\", 7)\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"lat\", \"lon\"))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.axis = \"Y\"\n    lat[:] = lats\n\n    lon = nc.createVariable(\"lon\", float, (\"lat\", \"lon\"))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.axis = \"X\"\n    lon[:] = lons\n\n    day = nc.createVariable(\"day\", float, (\"day\",))\n    day.units = \"days since %s-01-01\" % (ts.year,)\n    doy = int(ts.strftime(\"%j\")) - 1\n    day[:] = range(doy, doy + 7)\n\n    high = nc.createVariable(\n        \"high_tmpk\", np.uint16, (\"day\", \"lat\", \"lon\"), fill_value=65535\n    )\n    high.units = \"K\"\n    high.scale_factor = 0.01\n    high.long_name = \"2m Air Temperature Daily High\"\n    high.standard_name = \"2m Air Temperature\"\n    high.coordinates = \"lon lat\"\n\n    low = nc.createVariable(\n        \"low_tmpk\", np.uint16, (\"day\", \"lat\", \"lon\"), fill_value=65535\n    )\n    low.units = \"K\"\n    low.scale_factor = 0.01\n    low.long_name = \"2m Air Temperature Daily Low\"\n    low.standard_name = \"2m Air Temperature\"\n    low.coordinates = \"lon lat\"\n\n    p01d = nc.createVariable(\n        \"p01d\", np.uint16, (\"day\", \"lat\", \"lon\"), fill_value=65535\n    )\n    p01d.units = \"mm\"\n    p01d.scale_factor = 0.01\n    p01d.long_name = \"Precipitation\"\n    p01d.standard_name = \"Precipitation\"\n    p01d.coordinates = \"lon lat\"\n    p01d.description = \"Precipitation accumulation for the day\"\n\n    nc.close()\n    return ncopen(fn, \"a\")\n\n\ndef merge_grib(ts, nc):\n    \"\"\"Merge what grib data we can find into the netcdf file.\"\"\"\n    # taking some liberties here given our hard coded 0z start below\n    for fhour in range(6, 169, 6):\n        fts = ts + timedelta(hours=fhour)\n        fhourstr = \"%03i\" % (fhour,)\n        gribfn = ts.strftime(\n            \"/mesonet/ARCHIVE/data/%Y/%m/%d/model/ndfd/\"\n            f\"%H/ndfd.t%Hz.awp2p5f{fhourstr}.grib2\"\n        )\n        if not os.path.isfile(gribfn):\n            print(\"ndfd2netcdf missing %s\" % (gribfn,))\n            continue\n        grbs = pygrib.open(gribfn)\n        for grb in grbs:\n            if (\n                grb.valid_key(\"parameterName\")\n                and grb[\"parameterName\"] == \"Minimum temperature\"\n            ):\n                # This is 12z\n                days = int((fts - ts).total_seconds() / 86400)\n                nc.variables[\"low_tmpk\"][days, :, :] = grb.values\n            elif (\n                grb.valid_key(\"parameterName\")\n                and grb[\"parameterName\"] == \"Maximum temperature\"\n            ):\n                # This is 0z\n                days = int((fts - ts).total_seconds() / 86400) - 1\n                nc.variables[\"high_tmpk\"][days, :, :] = grb.values\n            elif (\n                grb.valid_key(\"parameterName\")\n                and grb[\"parameterName\"] == \"Total precipitation\"\n            ):\n                # This is tricky\n                days = (fhour - 6) / 24\n                if days < 0:\n                    continue\n                current = nc.variables[\"p01d\"][days, :, :]\n                if current.mask.all():\n                    nc.variables[\"p01d\"][days, :, :] = grb.values\n                else:\n                    nc.variables[\"p01d\"][days, :, :] = current + grb.values\n\n\ndef workflow(ts):\n    \"\"\"Do the work.\"\"\"\n    nc = create_netcdf(ts)\n    merge_grib(ts, nc)\n    nc.close()\n\n\n@click.command()\n@click.option(\n    \"--date\",\n    \"dt\",\n    type=click.DateTime(),\n    required=True,\n    help=\"UTC date to process\",\n)\ndef main(dt: datetime):\n    \"\"\"Process a given UTC into netcdf.\"\"\"\n    # TODO: we presently only support the 0z NDFD\n    ts = utc(dt.year, dt.month, dt.day)\n    workflow(ts)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ndfd/plot_temps.py",
    "content": "\"\"\"Generate some plots.\n\nCalled from RUN_10_AFTER.sh\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport click\nimport numpy as np\nfrom metpy.units import masked_array, units\nfrom pyiem.iemre import daily_offset\nfrom pyiem.meteorology import gdd\nfrom pyiem.plot import get_cmap\nfrom pyiem.plot.geoplot import MapPlot\nfrom pyiem.util import ncopen, utc\n\n\ndef plot_gdd(ts):\n    \"\"\"Generate our plot.\"\"\"\n    nc = ncopen(ts.strftime(\"/mesonet/data/ndfd/%Y%m%d%H_ndfd.nc\"))\n    # compute our daily GDDs\n    gddtot = np.zeros(np.shape(nc.variables[\"lon\"][:]))\n    for i in range(7):\n        gddtot += gdd(\n            units(\"degK\") * nc.variables[\"high_tmpk\"][i, :, :],\n            units(\"degK\") * nc.variables[\"low_tmpk\"][i, :, :],\n        )\n    cnc = ncopen(\"/mesonet/data/ndfd/ndfd_dailyc.nc\")\n    offset = daily_offset(ts)\n    avggdd = np.sum(cnc.variables[\"gdd50\"][offset : offset + 7], 0)\n    data = gddtot - np.where(avggdd < 1, 1, avggdd)\n\n    subtitle = (\n        \"Based on National Digital Forecast Database (NDFD) \"\n        f\"00 UTC Forecast made {ts:%-d %b %Y}\"\n    )\n    t2 = ts + timedelta(days=6)\n    mp = MapPlot(\n        title=(\n            f\"NWS NDFD 7 Day ({ts:%-d %b} through {t2:%-d %b}) \"\n            \"GDD50 Departure from Avg\"\n        ),\n        subtitle=subtitle,\n        sector=\"midwest\",\n    )\n    mp.pcolormesh(\n        nc.variables[\"lon\"][:],\n        nc.variables[\"lat\"][:],\n        data,\n        np.arange(-80, 81, 20),\n        cmap=get_cmap(\"RdBu_r\"),\n        units=\"°F\",\n        spacing=\"proportional\",\n    )\n    mp.drawcounties()\n    pqstr = (\n        f\"data c {ts:%Y%m%d%H%M} summary/cb_ndfd_7day_gdd.png \"\n        \"summary/cb_ndfd_7day_gdd.png png\"\n    )\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n    nc.close()\n\n\ndef plot_maxmin(ts, field):\n    \"\"\"Generate our plot.\"\"\"\n    nc = ncopen(ts.strftime(\"/mesonet/data/ndfd/%Y%m%d%H_ndfd.nc\"))\n    func = np.max if field == \"high_tmpk\" else np.min\n    data = func(nc.variables[field][:], 0)\n    data = masked_array(data, units.degK).to(units.degF).m\n\n    subtitle = (\n        \"Based on National Digital Forecast Database (NDFD) \"\n        f\"00 UTC Forecast made {ts:%-d %b %Y}\"\n    )\n    t2 = ts + timedelta(days=6)\n    tt = \"Maximum\" if field == \"high_tmpk\" else \"Minimum\"\n    mp = MapPlot(\n        title=(\n            f\"NWS NDFD 7 Day ({ts:%-d %b} through {t2:%-d %b}) \"\n            f\"{tt} Temperature\"\n        ),\n        subtitle=subtitle,\n        sector=\"midwest\",\n    )\n    mp.pcolormesh(\n        nc.variables[\"lon\"][:],\n        nc.variables[\"lat\"][:],\n        data,\n        np.arange(10, 121, 10),\n        cmap=get_cmap(\"jet\"),\n        units=\"Degrees F\",\n    )\n    mp.drawcounties()\n    tt = \"max\" if field == \"high_tmpk\" else \"min\"\n    pqstr = (\n        f\"data c {ts:%Y%m%d%H%M} summary/cb_ndfd_7day_{tt}.png \"\n        f\"summary/cb_ndfd_7day_{tt}.png png\"\n    )\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n    nc.close()\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), required=True)\ndef main(dt: datetime):\n    \"\"\"Run for the given args.\"\"\"\n    ts = utc(dt.year, dt.month, dt.day)\n    plot_gdd(ts)\n    plot_maxmin(ts, \"high_tmpk\")\n    plot_maxmin(ts, \"low_tmpk\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/nldas/init_hourly.py",
    "content": "\"\"\"Generate the NLDASv2 hourly analysis file for a year\"\"\"\n\nimport os\nfrom datetime import datetime\n\nimport click\nimport numpy as np\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\n\n\ndef init_year(ts):\n    \"\"\"\n    Create a new NetCDF file for a year of our specification!\n    \"\"\"\n    ncfn = f\"/mesonet/data/nldas/{ts.year}_hourly.nc\"\n    if os.path.isfile(ncfn):\n        LOG.info(\"Cowardly refusing to overwrite: %s\", ncfn)\n        return\n    nc = ncopen(ncfn, \"w\")\n    nc.title = f\"NLDASv2 NOAH Hourly Reanalysis {ts.year}\"\n    nc.platform = \"Grided Observations\"\n    nc.description = \"NLDASv2 hourly analysis\"\n    nc.institution = \"Iowa State University, Ames, IA, USA\"\n    nc.source = \"Iowa Environmental Mesonet\"\n    nc.project_id = \"IEM\"\n    nc.realization = 1\n    nc.Conventions = \"CF-1.0\"\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = f\"{datetime.now():%d %B %Y} Generated\"\n    nc.comment = \"No Comment at this time\"\n\n    # Setup Dimensions\n    nc.createDimension(\"lat\", 224)\n    nc.createDimension(\"lon\", 464)\n    ts2 = datetime(ts.year + 1, 1, 1)\n    days = (ts2 - ts).days\n    LOG.info(\"Year %s has %s days\", ts.year, days)\n    nc.createDimension(\"time\", int(days) * 24)\n    nc.createDimension(\"soil_level\", 4)\n\n    ncv = nc.createVariable(\"soil_level\", float, (\"soil_level\",))\n    ncv.units = \"m\"\n    ncv.description = \"Depths of centers of soil layers\"\n    # midpoints\n    ncv[:] = [0.05, 0.25, 0.7, 1.5]\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"lat\",))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.axis = \"Y\"\n    lat[:] = np.arange(25.0625, 52.99, 0.125)\n\n    lon = nc.createVariable(\"lon\", float, (\"lon\",))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.axis = \"X\"\n    lon[:] = np.arange(-124.9375, -67.01, 0.125)\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = f\"Hours since {ts.year}-01-01 00:00:0.0\"\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm[:] = np.arange(0, int(days) * 24)\n\n    # NOTE: Condensation is + and Evapration is -\n    # -128 to 127 for -25 to 25 `ACETLSM`\n    ncv = nc.createVariable(\n        \"evap\", np.int8, (\"time\", \"lat\", \"lon\"), fill_value=127\n    )\n    ncv.units = \"mm\"\n    ncv.scale_factor = 0.4\n    ncv.long_name = \"Evaporation\"\n    ncv.standard_name = \"Evaporation\"\n    ncv.coordinates = \"lon lat\"\n    ncv.description = \"Evaporation for the hour valid time\"\n\n    # 0 -> 65535 so 0 to 1966 `ACSWDNLSM`\n    ncv = nc.createVariable(\n        \"rsds\",\n        np.uint16,\n        (\"time\", \"lat\", \"lon\"),\n        fill_value=65535,\n    )\n    ncv.units = \"W m-2\"\n    ncv.scale_factor = 0.03\n    ncv.long_name = \"surface_downwelling_shortwave_flux_in_air\"\n    ncv.standard_name = \"surface_downwelling_shortwave_flux_in_air\"\n    ncv.coordinates = \"lon lat\"\n    ncv.description = \"Global Shortwave Irradiance\"\n\n    # 0->255 [213 333] `TSLB`\n    ncv = nc.createVariable(\n        \"soilt\",\n        np.uint8,\n        (\"time\", \"soil_level\", \"lat\", \"lon\"),\n        fill_value=255,\n    )\n    ncv.units = \"K\"\n    ncv.add_offset = 213.0\n    ncv.scale_factor = 0.5\n    ncv.long_name = \"Soil Temperature\"\n    ncv.standard_name = \"Soil Temperature\"\n    ncv.coordinates = \"lon lat\"\n\n    # 0->255 [0 0.8] Hope this works? `SMOIS`\n    ncv = nc.createVariable(\n        \"soilm\",\n        np.uint8,\n        (\"time\", \"soil_level\", \"lat\", \"lon\"),\n        fill_value=255,\n    )\n    ncv.units = \"m^3 m^-3\"\n    ncv.scale_factor = 0.0031\n    ncv.long_name = \"Volumetric Soil Moisture\"\n    ncv.standard_name = \"Volumetric Soil Moisture\"\n    ncv.coordinates = \"lon lat\"\n\n    nc.close()\n\n\n@click.command()\n@click.option(\"--year\", type=int, required=True)\ndef main(year: int):\n    \"\"\"Go Main Go\"\"\"\n    init_year(datetime(year, 1, 1))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/nldas/process_nldasv2_noah.py",
    "content": "\"\"\"Download NLDASv2 data from NASA.\n\nNOTE: Local ~/.netrc file must be configured with NASA Earthdata credentials.\n\nRun from RUN_0Z.sh for 5 day old data.\n\"\"\"\n\nimport os\nimport subprocess\nfrom datetime import datetime\n\nimport click\nfrom pyiem.iemre import hourly_offset\nfrom pyiem.util import logger, ncopen, utc\n\nLOG = logger()\n\n\ndef process(valid: datetime):\n    \"\"\"Run for the given UTC timestamp.\"\"\"\n    fn = f\"nldas.{valid:%Y%m%d%H}.nc\"\n    cmd = [\n        \"wget\",\n        \"-q\",\n        \"--load-cookies\",\n        \"~/.urs_cookies\",\n        \"--save-cookies\",\n        \"~/.urs_cookies\",\n        \"--keep-session-cookies\",\n        \"-O\",\n        fn,\n        \"https://hydro1.gesdisc.eosdis.nasa.gov/data/NLDAS/\"\n        f\"NLDAS_NOAH0125_H.2.0/{valid:%Y}/{valid:%03j}/NLDAS_NOAH0125_H.\"\n        f\"A{valid:%Y%m%d}.{valid:%H}00.020.nc\",\n    ]\n    if not os.path.isfile(fn):\n        subprocess.call(cmd)\n    if not os.path.isfile(fn):\n        LOG.warning(\"download failed for %s\", fn)\n        return\n    if (filesz := os.path.getsize(fn)) < 1000:\n        os.unlink(fn)\n        LOG.warning(\"Downloaded file is too small[%s]: %s\", filesz, fn)\n        return\n    idx = hourly_offset(valid)\n    SOILTVARS = [\n        \"SoilT_0_10cm\",\n        \"SoilT_10_40cm\",\n        \"SoilT_40_100cm\",\n        \"SoilT_100_200cm\",\n    ]\n    DEPTH_MM = [100.0, 300.0, 600.0, 1000.0]\n    with (\n        ncopen(fn) as ncin,\n        ncopen(f\"/mesonet/data/nldas/{valid:%Y}_hourly.nc\", \"a\") as ncout,\n    ):\n        for i, ncvar in enumerate(SOILTVARS):\n            ncout.variables[\"soilt\"][idx, i] = ncin.variables[ncvar][0]\n            # mm over depth, we want fraction\n            ncinv = ncvar.replace(\"SoilT\", \"SoilM\")\n            ncout.variables[\"soilm\"][idx, i] = (\n                ncin.variables[ncinv][0] / DEPTH_MM[i]\n            )\n\n    os.unlink(fn)\n\n\n@click.command()\n@click.option(\n    \"--date\",\n    \"dt\",\n    default=\"\",\n    help=\"UTC date to process\",\n    type=click.DateTime(),\n)\ndef main(dt: datetime):\n    \"\"\"Run for a given UTC date.\"\"\"\n    valid = utc(dt.year, dt.month, dt.day)\n    for hr in range(24):\n        process(valid.replace(hour=hr))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/other/ot2archive.py",
    "content": "\"\"\"\nMigrate IEM Access data to the archive database.\n\nCalled from RUN_20MIN.sh\n\"\"\"\n\nimport sys\nfrom datetime import datetime, timezone\n\nfrom pyiem.database import get_dbconnc\nfrom pyiem.reference import ISO8601\nfrom pyiem.util import get_properties, logger, set_property, utc\n\nLOG = logger()\nPROPERTY_NAME = \"ot2archive_last\"\n\n\ndef dowork(sts, ets):\n    \"\"\"Process between these two timestamps please\"\"\"\n    # Delete any obs from yesterday\n    OTHER, ocursor = get_dbconnc(\"other\")\n    IEM, icursor = get_dbconnc(\"iem\")\n    # Get obs from Access\n    icursor.execute(\n        \"\"\"\n        SELECT c.*, t.id from current_log c JOIN stations t on\n        (t.iemid = c.iemid) WHERE t.network in ('OT', 'WMO_BUFR_SRF', 'VTWAC')\n        and updated >= %s and updated < %s ORDER by updated ASC\n        \"\"\",\n        (sts, ets),\n    )\n    if icursor.rowcount == 0:\n        LOG.warning(\"found no results for ts: %s ts2: %s\", sts, ets)\n\n    deletes = 0\n    inserts = 0\n    for row in icursor:\n        # delete any previous obs\n        ocursor.execute(\n            \"DELETE from alldata where station = %s and valid = %s\",\n            (row[\"id\"], row[\"valid\"]),\n        )\n        deletes += ocursor.rowcount\n        args = (\n            row[\"id\"],\n            row[\"valid\"],\n            row[\"tmpf\"],\n            row[\"dwpf\"],\n            row[\"drct\"],\n            row[\"sknt\"],\n            row[\"alti\"],\n            row[\"pday\"],\n            row[\"gust\"],\n            row[\"srad\"],\n            row[\"relh\"],\n            row[\"skyl1\"],\n            row[\"skyl2\"],\n            row[\"skyl3\"],\n            row[\"skyl4\"],\n            row[\"skyc1\"],\n            row[\"skyc2\"],\n            row[\"skyc3\"],\n            row[\"skyc4\"],\n            row[\"srad_1h_j\"],\n        )\n        ocursor.execute(\n            \"\"\"\n            INSERT into alldata(station, valid, tmpf, dwpf, drct, sknt,\n            alti, pday, gust, srad, relh, skyl1, skyl2, skyl3, skyl4,\n            skyc1, skyc2, skyc3, skyc4, srad_1h_j) values\n            (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)\n            \"\"\",\n            args,\n        )\n        inserts += 1\n\n    LOG.info(\"%s->%s deletes: %s inserts: %s\", sts, ets, deletes, inserts)\n    ocursor.close()\n    IEM.close()\n    OTHER.commit()\n    OTHER.close()\n\n\ndef get_first_updated():\n    \"\"\"Figure out which is the last updated timestamp we ran for.\"\"\"\n    props = get_properties()\n    propvalue = props.get(PROPERTY_NAME)\n    if propvalue is None:\n        LOG.warning(\"iem property %s is not set, abort!\", PROPERTY_NAME)\n        sys.exit()\n\n    dt = datetime.strptime(propvalue, ISO8601)\n    return dt.replace(tzinfo=timezone.utc)\n\n\ndef main():\n    \"\"\"Run for a given 6z to 6z period.\"\"\"\n    last_updated = utc()\n    first_updated = get_first_updated()\n\n    dowork(first_updated, last_updated)\n    set_property(PROPERTY_NAME, last_updated)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/other/update_daily_srad.py",
    "content": "\"\"\"Compute daily SRAD.\n\nRun from: RUN_MIDNIGHT.sh\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport click\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import logger, utc\n\nLOG = logger()\n\n\n@click.command()\n@click.option(\n    \"--date\",\n    \"dt\",\n    type=click.DateTime(),\n    required=True,\n    help=\"Date to process\",\n)\ndef main(dt: datetime):\n    \"\"\"Run for the given args.\"\"\"\n    sts = utc(dt.year, dt.month, dt.day, 6)  # close enough\n    ets = sts + timedelta(hours=24)\n    # Find obs\n    with (\n        get_sqlalchemy_conn(\"other\") as oconn,\n        get_sqlalchemy_conn(\"iem\") as iconn,\n    ):\n        res = oconn.execute(\n            sql_helper(\"\"\"\n    SELECT station, sum(srad * 60) / 1e6 from alldata where srad > 0\n    and valid >= :sts and valid < :ets GROUP by station\"\"\"),\n            {\"sts\": sts, \"ets\": ets},\n        )\n        for row in res:\n            if row[1] > 40 or row[1] < 0:\n                LOG.warning(\"rad %s for %s out of bounds\", row[1], row[0])\n                continue\n            LOG.info(\"Setting %s to %s\", row[0], row[1])\n            res2 = iconn.execute(\n                sql_helper(\n                    \"\"\"\n                UPDATE {table} s SET srad_mj = :rad FROM stations t where\n                t.id = :sid and t.network = 'OT' and s.iemid = t.iemid and\n                s.day = :day\n                \"\"\",\n                    table=f\"summary_{sts:%Y}\",\n                ),\n                {\"rad\": row[1], \"sid\": row[0], \"day\": sts.date()},\n            )\n            if res2.rowcount != 1:\n                LOG.warning(\"Summary update failed for %s\", row[0])\n                continue\n            iconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/outgoing/madis2csv.py",
    "content": "\"\"\"\nDump a CSV file of the MADIS data, kind of sad that I do this, but alas\n\"\"\"\n\nimport os\nimport subprocess\nimport time\nimport warnings\nfrom datetime import datetime, timedelta, timezone\nfrom tempfile import NamedTemporaryFile\n\nimport numpy.ma\nfrom netCDF4 import chartostring\nfrom pyiem.util import convert_value, logger, ncopen, utc\n\nLOG = logger()\n# GIGO\nwarnings.simplefilter(\"ignore\", RuntimeWarning)\n\n\ndef sanity_check(val, lower, upper, goodfmt, default):\n    \"\"\"Simple formatter\"\"\"\n    if lower < val < upper:\n        return goodfmt % (val,)\n    return default\n\n\ndef main():\n    \"\"\"Go main\"\"\"\n    # Wow, why did I do it this way... better not change it as I bet the\n    # other end is ignoring the headers...\n    fmt = (\n        \"LAT,LONG,STN,DATE,TIME,T,TD,WCI,RH,THI,DIR,SPD,GST,ALT,SLP,VIS,\"\n        \"SKY,CEIL,CLD,SKYSUM,PR6,PR24,WX,MINT6,MAXT6,MINT24,MAXT24,AUTO,\"\n        \"PR1,PTMP1,PTMP2,PTMP3,PTMP4,SUBS1,SUBS2,SUBS3,SUBS4,STATIONNAME,\"\n    )\n    format_tokens = fmt.split(\",\")\n\n    utcnow = utc()\n    fn = None\n    for i in range(300, -1, -1):\n        testfn = f\"/mesonet/data/madis/mesonet1/{utcnow:%Y%m%d_%H}00_{i}.nc\"\n        if not os.path.isfile(testfn):\n            continue\n        fn = testfn\n        LOG.info(\"Found %s\", fn)\n        break\n    if fn is None:\n        if utcnow.minute > 30:\n            LOG.warning(\"No netcdf files found...\")\n        return\n    # Let file settle\n    time.sleep(6)\n    with ncopen(fn, \"r\", timeout=300) as nc:\n        stations = chartostring(nc.variables[\"stationId\"][:])\n        stationname = chartostring(nc.variables[\"stationName\"][:])\n        tmpf = convert_value(nc.variables[\"temperature\"][:], \"degK\", \"degF\")\n        dwpf = convert_value(nc.variables[\"dewpoint\"][:], \"degK\", \"degF\")\n        drct = nc.variables[\"windDir\"][:]\n        smps = nc.variables[\"windSpeed\"][:] * 1.94384449\n        alti = nc.variables[\"altimeter\"][:] * 29.9196 / 1013.2  # in hPa\n        vsby = nc.variables[\"visibility\"][:] * 0.000621371192  # in hPa\n        providers = chartostring(nc.variables[\"dataProvider\"][:])\n        lat = nc.variables[\"latitude\"][:]\n        lon = nc.variables[\"longitude\"][:]\n        p01m = nc.variables[\"precipAccum\"][:] * 25.4\n        ptmp1 = convert_value(\n            nc.variables[\"roadTemperature1\"][:], \"degK\", \"degF\"\n        )\n        ptmp2 = convert_value(\n            nc.variables[\"roadTemperature2\"][:], \"degK\", \"degF\"\n        )\n        ptmp3 = convert_value(\n            nc.variables[\"roadTemperature3\"][:], \"degK\", \"degF\"\n        )\n        ptmp4 = convert_value(\n            nc.variables[\"roadTemperature4\"][:], \"degK\", \"degF\"\n        )\n        subs1 = convert_value(\n            nc.variables[\"roadSubsurfaceTemp1\"][:], \"degK\", \"degF\"\n        )\n        subs2 = convert_value(\n            nc.variables[\"roadSubsurfaceTemp2\"][:], \"degK\", \"degF\"\n        )\n        subs3 = convert_value(\n            nc.variables[\"roadSubsurfaceTemp3\"][:], \"degK\", \"degF\"\n        )\n        subs4 = convert_value(\n            nc.variables[\"roadSubsurfaceTemp4\"][:], \"degK\", \"degF\"\n        )\n        times = nc.variables[\"observationTime\"][:]\n    db = {}\n\n    for recnum in range(len(stations) - 1, -1, -1):\n        station = stations[recnum]\n        if station in db:\n            continue\n        ot = times[recnum]\n        if numpy.ma.is_masked(ot) or ot > 2141347600:\n            continue\n        ts = datetime(1970, 1, 1) + timedelta(seconds=ot)\n        ts = ts.replace(tzinfo=timezone.utc)\n        db[station] = {\n            \"STN\": station,\n            \"PROVIDER\": providers[recnum],\n            \"LAT\": lat[recnum],\n            \"LONG\": lon[recnum],\n            \"STATIONNAME\": stationname[recnum].replace(\",\", \" \"),\n            \"DATE\": ts.day,\n            \"TIME\": ts.strftime(\"%H%M\"),\n            \"T\": sanity_check(tmpf[recnum], -100, 150, \"%.0f\", \"\"),\n            \"DIR\": sanity_check(drct[recnum], -1, 361, \"%.0f\", \"\"),\n            \"TD\": sanity_check(dwpf[recnum], -100, 150, \"%.0f\", \"\"),\n            \"SPD\": sanity_check(smps[recnum], -1, 150, \"%.0f\", \"\"),\n            \"ALT\": sanity_check(alti[recnum], 2000, 4000, \"%.0f\", \"\"),\n            \"VIS\": sanity_check(vsby[recnum], -1, 40, \"%.0f\", \"\"),\n            \"PR1\": sanity_check(p01m[recnum], -0.01, 10, \"%.0f\", \"\"),\n            \"SUBS1\": sanity_check(subs1[recnum], -100, 150, \"%.0f\", \"\"),\n            \"SUBS2\": sanity_check(subs2[recnum], -100, 150, \"%.0f\", \"\"),\n            \"SUBS3\": sanity_check(subs3[recnum], -100, 150, \"%.0f\", \"\"),\n            \"SUBS4\": sanity_check(subs4[recnum], -100, 150, \"%.0f\", \"\"),\n            \"PTMP1\": sanity_check(ptmp1[recnum], -100, 150, \"%.0f\", \"\"),\n            \"PTMP2\": sanity_check(ptmp2[recnum], -100, 150, \"%.0f\", \"\"),\n            \"PTMP3\": sanity_check(ptmp3[recnum], -100, 150, \"%.0f\", \"\"),\n            \"PTMP4\": sanity_check(ptmp4[recnum], -100, 150, \"%.0f\", \"\"),\n        }\n\n    with NamedTemporaryFile(\"w\", encoding=\"utf-8\", delete=False) as fh:\n        fh.write(f\"{fmt}\\n\")\n        for entry in db.values():\n            for key in format_tokens:\n                if key in entry:\n                    fh.write(f\"{entry[key]}\")\n                fh.write(\",\")\n            fh.write(\"\\n\")\n\n    pqstr = f\"data c {utcnow:%Y%m%d%H%M} fn/madis.csv bogus csv\"\n    subprocess.call([\"pqinsert\", \"-i\", \"-p\", pqstr, fh.name])\n    os.remove(fh.name)\n\n    with NamedTemporaryFile(\"w\", encoding=\"utf-8\", delete=False) as fh:\n        fh.write(f\"{fmt}\\n\")\n        for entry in db.values():\n            if entry[\"PROVIDER\"] not in [\"IADOT\", \"NEDOR\"]:\n                continue\n            for key in format_tokens:\n                if key in entry:\n                    fh.write(f\"{entry[key]}\")\n                fh.write(\",\")\n            fh.write(\"\\n\")\n\n    pqstr = f\"data c {utcnow:%Y%m%d%H%M} fn/madis_iamn.csv bogus csv\"\n    subprocess.call([\"pqinsert\", \"-i\", \"-p\", pqstr, fh.name])\n    os.remove(fh.name)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/plots/ARX_overlay.csh",
    "content": "#!/bin/csh\n# Script that generates a RADAR image of ARX\n\nsource /mesonet/nawips/Gemenviron\n\n\nset h_date=`date -u --date \"1 hour ago\" +%Y%m%d_%H`\n\nset yy=`date -u +%y`\nset YY=`date -u +%Y`\nset mm=`date -u +%m`\nset dd=`date -u +%d`\nset date=${yy}${mm}${dd}\nset dateY=${YY}${mm}${dd}\nset hh=`date -u +%H`\n\nrm OAX_radar.gif* >& /dev/null\n\nset DEVICE1=\"GIF|ARX_radar.gif|800;600\"\n\n\nsetenv DATA_DIR /mesonet/data/nexrad/NIDS/ARX/N0B\nset grid=${DATA_DIR}/N0B_${dateY}_${hh}00\n\nif (! -e ${grid} ) then\n    set grid=${DATA_DIR}/N0B_${dateY}_${hh}01\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}02\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}03\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}04\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}05\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}06\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}59\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}58\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}57\nendif\n\nset PROJ=RAD\nset TITLE=\"Mesonet with LaCrosse NEXRAD\"\n\nif (! -e ${grid} ) then\n    set grid=\n    set PROJ=LCC\n    set TITLE=\"Mesonet with NEXRAD missing\"\nendif\n\n$GEMEXE/sfmap << EOF > /tmp/RADAR_overlay_sfmap.out\n    GAREA\t= lse+\n    AREA\t= lse+\n    DATTIM  = ${date}/${hh}00\n    GLEVEL\t= 0\n    GVCORD   = NONE\n    SFPARM   = skyc:.6;tmpf<120;wsym:1.2:2;alti;;dwpf<120;;;;brbk:1:1:231\n    COLORS   = 32;2;32;0;4;32\n    SFFILE   = /mesonet/data/gempak/sao/${date}_sao.gem\n    LINE     = 4/1/1\n    TEXT     = 1/1\n    DEVICE   = ${DEVICE1}\n    SATFIL   = \n    RADFIL   = ${grid}\n    PROJ     = ${PROJ}\n    CLEAR    = yes\n    PANEL\t= 0\n    TITLE\t= 32/-1/~ ${TITLE}\n    SCALE\t= 0\n    GVECT   =\n    WIND    = \n    LATLON\t= 0\n    HILO     =  \n    HLSYM    =  \n    CLRBAR   = 0\n    CONTUR   = 3/3\n    SKIP     = 0\n    CINT\t= \n    FINT\t=  \n    FLINE    = 24-12--1 \n    LUTFIL   = radar.tbl\n    STNPLT   =  \n    MAP     = 25//1 + 25//2\n    \\$mapfil =HICNUS.NWS + hipowo.cia\n    list\n    run\n\n    exit\nEOF\n\ngpend\n\nif (-e ARX_radar.gif) then\n  pqinsert -p \"plot c 000000000000 ARX_radar.gif bogus gif\" ARX_radar.gif >& /dev/null\nrm ARX_radar.gif\nendif\n"
  },
  {
    "path": "scripts/plots/ASOS_plot.csh",
    "content": "#!/bin/csh\n# Daryl Herzmann 10 November 2000\n\nsource /mesonet/nawips/Gemenviron\n\nsetenv DISPLAY localhost:1\n\nset yy=`date -u +%y`\nset MM=`date -u +%m`\nset dd=`date -u +%d`\nset date=${yy}${MM}${dd}\nset hh=`date -u +%H`\n\nset mm = \"00\"\n\nrm asos.gif* >& /dev/null\n\nset DEVICE=\"GIF|asos.gif\"\n\n\n$GEMEXE/sfmap_gf << EOF > /tmp/sfmap.out\n    AREA    = 40.25;-97;43.75;-90\n    GAREA    = 40.25;-97;43.75;-90\n     SATFIL   =  \n    RADFIL   =  \n    SFPARM   =  skyc;tmpf;wsym:1.2:2;altm;;dwpf;;;;brbk:1:2:231\n    COLORS   =  32;2;32;25;4;32\n     DATTIM   =  ${date}/${hh}${mm}\n     SFFILE   =  /mesonet/data/gempak/sao/${date}_sao.gem\n     LATLON   =  0\n    TITLE    =  32/-1/~ ASOS Data \n    CLEAR    =  no\n    PANEL    =  0\n    DEVICE   = ${DEVICE}\n    PROJ     =  LCC\n    FILTER   =  .3\n    TEXT     = 1.2\n    LUTFIL   =\n    STNPLT   =\n    MAP\t= 25 + 25//2\n    \\$mapfil = HICNUS.NWS + hipowo.cia\n    list\n    run\n\n    exit\nEOF\n\nif (-e asos.gif ) then\n    pqinsert -p \"plot c 000000000000 asos.gif bogus gif\" asos.gif >& /dev/null\n    rm asos.gif\nendif\n"
  },
  {
    "path": "scripts/plots/DEWPS_plot.csh",
    "content": "#!/bin/csh\n# Finally, the script that plots all of this good data\n# Daryl Herzmann 10 November 2000\n\nsource /mesonet/nawips/Gemenviron\n\nsetenv GEMCOLTBL coltbl.xwp\n\nset yy=`date -u +%y`\nset mm=`date -u +%m`\nset dd=`date -u +%d`\nset date=${yy}${mm}${dd}\nset hh=`date -u +%H`\n\n# rm temps.gif*\n\nset DEVICE=\"GIF|dewps.gif\"\n\n$GEMEXE/sfmap << EOF > /tmp/DEWPS_plot_sfmap.out\n    AREA    = 40.25;-97;43.75;-90\n    GAREA    = 40.25;-97;43.75;-90\n     SATFIL   =  \n    RADFIL   =  \n    SFPARM   =  dwpf<120\n    COLORS   =  2\n     DATTIM   =  ${date}/${hh}\n     SFFILE   =  /mesonet/data/gempak/sao/${date}_sao.gem\n     LATLON   =  0\n        TITLE    =  32/-1/~ Dew Point Comp [ASOS red]  [RWIS blue]\n        CLEAR    =  no\n        PANEL    =  0\n        DEVICE   = ${DEVICE}\n        PROJ     =  LCC\n        FILTER   =  .3\n        TEXT     =  1/1//hw\n        LUTFIL   =\n        STNPLT   =\n    MAP     = 25 + 25//2\n    \\$MAPFIL = HICNUS.NWS + hipowo.cia\n    list\n    run\n\nEOF\n\n$GEMEXE/sfmap << EOF > /tmp/DEWPS_plot_sfmap2.out\n    COLORS  =  4\n    SFFILE\t= /mesonet/data/gempak/rwis/${date}_rwis.gem\n    TITLE\t= 0\n    MAP\t= 0\n    CLEAR\t= no\n        DEVICE   = ${DEVICE}\n    list\t\n    run\n\n    exit\nEOF\n\n$GEMEXE/gpend\n\nif (-e dewps.gif) then\npqinsert -p \"plot c 000000000000 dewps.gif dewps.gif gif\" dewps.gif >& /dev/null\nrm dewps.gif\nendif\n"
  },
  {
    "path": "scripts/plots/DMX_overlay.csh",
    "content": "#!/bin/csh\n#\t\tDMX_overlay.csh\n# Script that plots RADAR over the Mesonet data\n# 12 June 2001: Daryl Herzmann\n# 18 Jun 2001:  Updated for mesonet box\n# 20 Jun 2001:  If 00 Radar does not exist, then 05 probably does\n# 19 Jul 2002:\tFor some reason, plots would not update...\n# 17 Feb 2003:\tUse GIF driver\n\nsource /mesonet/nawips/Gemenviron\n\nset h_date=`date -u --date \"1 hour ago\" +%Y%m%d_%H`\n\nset yy=`date -u +%y`\nset YY=`date -u +%Y`\nset mm=`date -u +%m`\nset dd=`date -u +%d`\nset date=${yy}${mm}${dd}\nset dateY=${YY}${mm}${dd}\nset hh=`date -u +%H`\n\nrm DMX_radar.gif* >& /dev/null\n\nset DEVICE1=\"GIF|DMX_radar.gif|800;600\"\n\nsetenv DATA_DIR /mesonet/data/nexrad/NIDS/DMX/N0B\nset grid=${DATA_DIR}/N0B_${dateY}_${hh}00\n\nif (! -e ${grid} ) then\n    set grid=${DATA_DIR}/N0B_${dateY}_${hh}01\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}02\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}03\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}04\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}05\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}06\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}59\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}58\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}57\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}56\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}55\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}54\nendif\n\n\n$GEMEXE/sfmap << EOF > /tmp/DMX_overlay_sfmap.out\n    GAREA\t= 40.25;-97;43.75;-90\n    AREA\t= 40.25;-97;43.75;-90\n    DATTIM  = ${date}/${hh}00\n    GLEVEL\t= 0\n    GVCORD   = NONE\n    SFPARM   = skyc:.6;tmpf<120;wsym:1.2:2;alti;;dwpf<120;;;;brbk:1:1:231\n    COLORS   = 32;2;32;0;4;32\n    SFFILE   = /mesonet/data/gempak/meso/${date}_meso.gem\n    LINE     = 4/1/1\n    TEXT     = 1/1\n    DEVICE   = ${DEVICE1}\n    SATFIL   = \n    RADFIL   = ${grid}\n    PROJ     = RAD\n    CLEAR    = yes\n    PANEL\t= 0\n    TITLE\t= 32/-1/~ Mesonet with Des Moines NEXRAD\n    SCALE\t= 0\n    GVECT   =\n    WIND    = \n    LATLON\t= 0\n    HILO     =  \n    HLSYM    =  \n    CLRBAR   = 32\n    CONTUR   = 3/3\n    SKIP     = 0\n    CINT\t= \n    FINT\t=  \n    FLINE    = 24-12--1 \n    LUTFIL   = radar.tbl\n    STNPLT   =  \n    MAP     = 25//1 + 25//2\n    \\$mapfil =HICNUS.NWS + hipowo.cia\n    list\n    run\n\n    exit\nEOF\n\ngpend\n\nif (-e DMX_radar.gif) then\npqinsert -p \"plot c 000000000000 DMX_radar.gif bogus gif\" DMX_radar.gif >& /dev/null\nrm DMX_radar.gif\nendif\n"
  },
  {
    "path": "scripts/plots/DVN_overlay.csh",
    "content": "#!/bin/csh\n# Script that plots RADAR over the Mesonet data\n\nsource /mesonet/nawips/Gemenviron\n\n\nset h_date=`date -u --date \"1 hour ago\" +%Y%m%d_%H`\n\nset yy=`date -u +%y`\nset YY=`date -u +%Y`\nset mm=`date -u +%m`\nset dd=`date -u +%d`\nset date=${yy}${mm}${dd}\nset dateY=${YY}${mm}${dd}\nset hh=`date -u +%H`\n\nrm DVN_radar.gif* >& /dev/null\n\nset DEVICE1=\"GIF|DVN_radar.gif|800;600\"\n\n\nsetenv DATA_DIR /mesonet/data/nexrad/NIDS/DVN/N0B\nsetenv CHECK_DIR /mesonet/data/nexrad/NIDS/DVN/N0V\n\nset grid=${DATA_DIR}/N0B_${dateY}_${hh}00\nset USE_TIME=${dateY}_${hh}00\n\nif (! -e ${grid} ) then\n    set grid=${DATA_DIR}/N0B_${dateY}_${hh}01\n    set USE_TIME=${dateY}_${hh}01\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}02\n    set USE_TIME=${dateY}_${hh}02\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}03\n    set USE_TIME=${dateY}_${hh}03\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}04\n    set USE_TIME=${dateY}_${hh}04\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}05\n    set USE_TIME=${dateY}_${hh}05\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}06\n    set USE_TIME=${dateY}_${hh}06\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}59\n    set USE_TIME=${h_date}59\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}58\n    set USE_TIME=${h_date}58\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}57\n    set USE_TIME=${h_date}59\nendif\n\n\nset TITLE=\"Mesonet with Quad Cities NEXRAD\"\nset RADFIL=${grid}\nset PROJ=RAD\n\n#set checkGrid=${CHECK_DIR}/N0V_${USE_TIME}\n#if (! -e ${checkGrid} ) then\n#\tset TITLE = Mesonet and Radar in Clear Air\n#\tset RADFIL=\n#\tset PROJ=LCC\n#endif\n\n$GEMEXE/sfmap << EOF > /tmp/RADAR_overlay_sfmap.out\n    GAREA\t= dvn+\n    AREA\t= dvn+\n    DATTIM  = ${date}/${hh}00\n    GLEVEL\t= 0\n    GVCORD   = NONE\n    SFPARM   = skyc:.6;tmpf<120;wsym:1.2:2;alti;;dwpf<120;;;;brbk:1:1:231\n    COLORS   = 32;2;32;0;4;32\n    SFFILE   = /mesonet/data/gempak/sao/${date}_sao.gem\n    LINE     = 4/1/1\n    TEXT     = 1/1\n    DEVICE   = ${DEVICE1}\n    SATFIL   = \n    RADFIL   = ${RADFIL}\n    PROJ     = ${PROJ}\n    CLEAR    = yes\n    PANEL\t= 0\n    TITLE\t= 32/-1/~ ${TITLE}\n    SCALE\t= 0\n    GVECT   =\n    WIND    = \n    LATLON\t= 0\n    HILO     =  \n    HLSYM    =  \n    CLRBAR   = 0\n    CONTUR   = 3/3\n    SKIP     = 0\n    CINT\t= \n    FINT\t=  \n    FLINE    = 24-12--1 \n    LUTFIL   = radar.tbl\n    STNPLT   =  \n    MAP     = 25//1 + 25//2\n    \\$mapfil =HICNUS.NWS + hipowo.cia\n    list\n    run\n\n    exit\nEOF\n\ngpend\n\nif (-e DVN_radar.gif) then\n    pqinsert -p \"plot c 000000000000 DVN_radar.gif bogus gif\" DVN_radar.gif >& /dev/null\n    rm DVN_radar.gif\nendif\n"
  },
  {
    "path": "scripts/plots/EAX_overlay.csh",
    "content": "#!/bin/csh\n# Script that generates a RADAR image of EAX\n\nsource /mesonet/nawips/Gemenviron\n\n\nset h_date=`date -u --date \"1 hour ago\" +%Y%m%d_%H`\n\nset yy=`date -u +%y`\nset YY=`date -u +%Y`\nset mm=`date -u +%m`\nset dd=`date -u +%d`\nset date=${yy}${mm}${dd}\nset dateY=${YY}${mm}${dd}\nset hh=`date -u +%H`\n\nrm EAX_radar.gif* >& /dev/null\n\nset DEVICE1=\"GIF|EAX_radar.gif|800;600\"\n\nsetenv DATA_DIR /mesonet/data/nexrad/NIDS/EAX/N0B\nset grid=${DATA_DIR}/N0B_${dateY}_${hh}00\n\nif (! -e ${grid} ) then\n    set grid=${DATA_DIR}/N0B_${dateY}_${hh}01\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}02\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}03\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}04\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}05\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}06\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}59\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}58\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}57\nendif\n\nset PROJ=RAD\nset TITLE=\"Mesonet with Pleasant Hill NEXRAD\"\n\n\n$GEMEXE/sfmap << EOF > /tmp/RADAR_overlay_sfmap.out\n    AREA\t= mkc+\n    GAREA\t= mkc+\n    DATTIM  = ${date}/${hh}00\n    GLEVEL\t= 0\n    GVCORD   = NONE\n    SFPARM   = skyc:.6;tmpf<120;wsym:1.2:2;alti;;dwpf<120;;;;brbk:1:1:231\n    COLORS   = 32;2;32;0;4;32\n    SFFILE   = /mesonet/data/gempak/sao/${date}_sao.gem\n    LINE     = 4/1/1\n    TEXT     = 1/1\n    DEVICE   = ${DEVICE1}\n    SATFIL   = \n    RADFIL   = ${grid}\n    PROJ     = ${PROJ}\n    CLEAR    = yes\n    PANEL\t= 0\n    TITLE\t= 32/-1/~ ${TITLE}\n    SCALE\t= 0\n    GVECT   =\n    WIND    = \n    LATLON\t= 0\n    HILO     =  \n    HLSYM    =  \n    CLRBAR   = 0\n    CONTUR   = 3/3\n    SKIP     = 0\n    CINT\t= \n    FINT\t=  \n    FLINE    = 24-12--1 \n    LUTFIL   = radar.tbl\n    STNPLT   =  \n    MAP     = 25//1 + 25//2\n    \\$mapfil =HICNUS.NWS + hipowo.cia\n    list\n    run\n\n    exit\nEOF\n\ngpend\n\nif (-e EAX_radar.gif) then\n    pqinsert -p \"plot c 000000000000 EAX_radar.gif bogus gif\" EAX_radar.gif >& /dev/null\n    rm EAX_radar.gif\nendif\n"
  },
  {
    "path": "scripts/plots/FSD_overlay.csh",
    "content": "#!/bin/csh\n# Script that generates a RADAR image of FSD\n\nsource /mesonet/nawips/Gemenviron\n\n\nset h_date=`date -u --date \"1 hour ago\" +%Y%m%d_%H`\n\nset yy=`date -u +%y`\nset YY=`date -u +%Y`\nset mm=`date -u +%m`\nset dd=`date -u +%d`\nset date=${yy}${mm}${dd}\nset dateY=${YY}${mm}${dd}\nset hh=`date -u +%H`\n\nrm OAX_radar.gif* >& /dev/null\n\nset DEVICE1=\"GIF|FSD_radar.gif|800;600\"\n\nsetenv DATA_DIR /mesonet/data/nexrad/NIDS/FSD/N0B\nset grid=${DATA_DIR}/N0B_${dateY}_${hh}00\n\nif (! -e ${grid} ) then\n    set grid=${DATA_DIR}/N0B_${dateY}_${hh}01\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}02\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}03\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}04\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}05\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}06\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}59\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}58\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}57\nendif\n\nset PROJ=RAD\nset TITLE=\"Mesonet with Souix Falls NEXRAD\"\n\nif (! -e ${grid} ) then\n    set grid=\n    set PROJ=LCC\n    set TITLE=\"Mesonet with NEXRAD missing\"\nendif\n\n$GEMEXE/sfmap << EOF > /tmp/RADAR_overlay_sfmap.out\n    GAREA\t= fsd+\n    AREA\t= fsd+\n    DATTIM  = ${date}/${hh}00\n    GLEVEL\t= 0\n    GVCORD   = NONE\n    SFPARM   = skyc:.6;tmpf<120;wsym:1.2:2;alti;;dwpf<120;;;;brbk:1:1:231\n    COLORS   = 32;2;32;0;4;32\n    SFFILE   = /mesonet/data/gempak/meso/${date}_meso.gem\n    LINE     = 4/1/1\n    TEXT     = 1/1\n    DEVICE   = ${DEVICE1}\n    SATFIL   = \n    RADFIL   = ${grid}\n    PROJ     = ${PROJ}\n    CLEAR    = yes\n    PANEL\t= 0\n    TITLE\t= 32/-1/~ ${TITLE}\n    SCALE\t= 0\n    GVECT   =\n    WIND    = \n    LATLON\t= 0\n    HILO     =  \n    HLSYM    =  \n    CLRBAR   = 0\n    CONTUR   = 3/3\n    SKIP     = 0\n    CINT\t= \n    FINT\t=  \n    FLINE    = 24-12--1 \n    LUTFIL   = radar.tbl\n    STNPLT   =  \n    MAP     = 25//1 + 25//2\n    \\$mapfil =HICNUS.NWS + hipowo.cia\n    list\n    run\n\n    exit\nEOF\n\ngpend\n\nif (-e FSD_radar.gif) then\n    pqinsert -p \"plot c 000000000000 FSD_radar.gif bogus gif\" FSD_radar.gif >& /dev/null\n    rm FSD_radar.gif\nendif\n"
  },
  {
    "path": "scripts/plots/HEAT_plot.csh",
    "content": "#!/bin/csh\n# Daryl Herzmann 10 November 2000\n\nsource /mesonet/nawips/Gemenviron\nsetenv DISPLAY localhost:1\n\n\nsetenv GEMCOLTBL coltbl.xwp\n\nset yy=`date -u +%y`\nset mm=`date -u +%m`\nset dd=`date -u +%d`\nset date=${yy}${mm}${dd}\nset hh=`date -u +%H`\nset ftime=\"`date -u +'%Y%m%d%H'`00\"\n\nrm heat.gif >& /dev/null\n\nset DEVICE=\"GIF|heat.gif\"\n\n$GEMEXE/sfmap_gf << EOF > /tmp/HEAT_plot_sfmap.out\n    AREA\t= 40.25;-97;43.75;-90\n    GAREA\t= 40.25;-97;43.75;-90\n     SATFIL   =  \n    RADFIL   =  \n    SFPARM   =  HEAT\n    COLORS   =  2\n     DATTIM   =  ${date}/${hh}\n     SFFILE   =  /mesonet/data/gempak/meso/${date}_meso.gem\n    MAP\t=  25//2 + 25\n     LATLON\t=  0\n        TITLE\t=  32/-1/~ Heat Index\n        CLEAR\t=  no\n        PANEL\t=  0\n        DEVICE\t= ${DEVICE}\n        PROJ\t=  LCC\n        FILTER\t=  .3\n        TEXT\t=  1/1//hw\n        LUTFIL\t=\n        STNPLT\t=\n    \\$mapfil = HIPOWO.CIA + HICNUS.NWS\n    list\n    run\n\nEOF\n\n\nif (-e heat.gif) then\n  pqinsert -p \"plot ac $ftime heat.gif heat_${hh}00.gif gif\" heat.gif >& /dev/null\nrm heat.gif\nendif\n"
  },
  {
    "path": "scripts/plots/HOURLY_PLOTS",
    "content": "#!/bin/csh -f\n\nset ftime=\"`date -u +'%Y%m%d%H'`00\"\n\ncsh createGrids.csh\ncsh SDMESONET_plot.csh\ncsh MW_mesonet.csh\ncsh TEMPS_plot.csh\ncsh DEWPS_plot.csh\ncsh WINDS_plot.csh\ncsh DMX_overlay.csh\ncsh OAX_overlay.csh\ncsh DVN_overlay.csh\ncsh FSD_overlay.csh\ncsh ARX_overlay.csh\ncsh EAX_overlay.csh\ncsh MPX_overlay.csh\ncsh HEAT_plot.csh\ncsh WCHT_plot.csh\ncsh RELH_plot.csh\ncsh ASOS_plot.csh\n\ncd black\ncsh surfaceContours.csh\n"
  },
  {
    "path": "scripts/plots/MPX_overlay.csh",
    "content": "#!/bin/csh\n#\t\tMPX_overlay.csh\n# Script that generates a RADAR image of MPX\n\nsource /mesonet/nawips/Gemenviron\nsetenv DISPLAY localhost:1\n\nset h_date=`date -u --date \"1 hour ago\" +%Y%m%d_%H`\n\nset yy=`date -u +%y`\nset YY=`date -u +%Y`\nset mm=`date -u +%m`\nset dd=`date -u +%d`\nset date=${yy}${mm}${dd}\nset dateY=${YY}${mm}${dd}\nset hh=`date -u +%H`\n\nrm MPX_radar.gif* >& /dev/null\n\nset DEVICE1=\"GIF|MPX_radar.gif|800;600\"\n\nsetenv DATA_DIR /mesonet/data/nexrad/NIDS/MPX/N0B\nset grid=${DATA_DIR}/N0B_${dateY}_${hh}00\n\nif (! -e ${grid} ) then\n    set grid=${DATA_DIR}/N0B_${dateY}_${hh}01\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}02\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}03\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}04\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}05\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}06\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}59\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}58\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}57\nendif\n\nset PROJ=RAD\nset TITLE=\"Mesonet with Minneapolis NEXRAD\"\n\n$GEMEXE/sfmap_gf << EOF > /tmp/MPX_overlay_sfmap.out\n    AREA\t= msp+\n    GAREA\t= msp+\n    DATTIM  = ${date}/${hh}00\n    GLEVEL\t= 0\n    GVCORD   = NONE\n    SFPARM   = skyc:.6;tmpf<120;wsym:1.2:2;alti;;dwpf<120;;;;brbk:1:1:231\n    COLORS   = 32;2;32;0;4;32\n    SFFILE   = /mesonet/data/gempak/sao/${date}_sao.gem\n    LINE     = 4/1/1\n    TEXT     = 1/1\n    DEVICE   = ${DEVICE1}\n    SATFIL   = \n    RADFIL   = ${grid}\n    PROJ     = ${PROJ}\n    CLEAR    = yes\n    PANEL\t= 0\n    TITLE\t= 32/-1/~ ${TITLE}\n    SCALE\t= 0\n    GVECT   =\n    WIND    = \n    LATLON\t= 0\n    HILO     =  \n    HLSYM    =  \n    CLRBAR   = 0\n    CONTUR   = 3/3\n    SKIP     = 0\n    CINT\t= \n    FINT\t=  \n    FLINE    = 24-12--1 \n    LUTFIL   = radar.tbl\n    STNPLT   =  \n    MAP     = 25//1 + 25//2\n    \\$mapfil =HICNUS.NWS + hipowo.cia\n    list\n    run\n\n    exit\nEOF\n\nif (-e MPX_radar.gif) then\n    pqinsert -p \"plot c 000000000000 MPX_radar.gif bogus gif\" MPX_radar.gif >& /dev/null\n    rm MPX_radar.gif\nendif\n"
  },
  {
    "path": "scripts/plots/MW_mesonet.csh",
    "content": "#!/bin/csh\n#\t\tIAMESONET_plot.csh\n# Finally, the script that plots all of this good data\n\nsource /mesonet/nawips/Gemenviron\n\nsetenv GEMCOLTBL coltbl.xwp\nsetenv DISPLAY localhost:1\n\nset yy=`date -u --date '1 minute' +%y`\nset mm=`date -u --date '1 minute' +%m`\nset dd=`date -u --date '1 minute' +%d`\nset date=${yy}${mm}${dd}\nset hh=`date -u --date '1 minute' +%H`\nset timestamp=\"`date -u --date '1 minute' +'%Y%m%d%H00'`\"\nset yyyymmddhh_1h=\"`date -u --date '1 hour ago' +'%Y%m%d%H'`\"\n\nrm MWmesonet.gif* >& /dev/null\n\nset DEVICE=\"GIF|MWmesonet.gif|900;700\"\n\nset AREA=\"37;-104;48.5;-86\"\n\n# Now we plot\nsfmap << EOF > /tmp/MWmesonet_sfmap.out\n    AREA    = ${AREA}\n    GAREA\t= ${AREA}\n     SATFIL   =  \n    RADFIL   =  \n    SFPARM   =  skyc:.6;tmpf;wsym:1.2:2;alti;;dwpf;;;;brbk:0.8:1:231\n    COLORS   =  32;2;32;0;(50;70/4;23;23/DWPF);32\n     DATTIM   =  ${date}/${hh}\n     SFFILE   =  /mesonet/data/gempak/meso/${date}_meso.gem\n     LATLON   =  0\n        TITLE    =  32/-1/~ MidWest Mesonet Data\n        CLEAR    =  yes\n        PANEL    =  0\n        DEVICE   = ${DEVICE}\n        PROJ     =  LCC\n        FILTER   =  .5\n        TEXT     = 1\n        LUTFIL   =\n        STNPLT   =\n  CLRBAR = \n    MAP\t= 25 + 25//2\n    \\$MAPFIL = HICNUS.NWS + hipowo.cia\n    list\n    run\n\n    exit\nEOF\n\nset gdfile=\"/mesonet/data/gempak/model/rap/${yyyymmddhh_1h}_rap252.gem\"\nif (! -e ${gdfile}) then\nset gdfile=\"/mesonet/data/gempak/model/rap/${yyyymmddhh_1h}_rap130.gem\"\nendif\n\n\ngdcntr << EOF > /tmp/MW_MESONET_gdcntr.out\n    AREA\t= ${AREA}\n    GAREA    = ${AREA}\n    GDATTIM  = F001\n    GLEVEL   = 0\n    GVCORD   = NONE\n    GFUNC    = SM9S(MMSL)\nGDFILE   = $gdfile\n    CINT     = 4\n    LINE     = 4\n    MAP      = 0\n    TEXT     = 1\n    DEVICE   = ${DEVICE}\n    SATFIL   =  \n    RADFIL   =  \n    PROJ     = LCC\n    CLEAR    = no\n    PANEL\t= 0\n    TITLE\t= 32/-2/~ RAP MMSL\n    SCALE    = 0\n    LATLON   = 0\n    HILO     =  \n    HLSYM    =  \n    CLRBAR   = 1\n    CONTUR   = 3/3\n    SKIP     = 0\n    FINT     = 0\n    FLINE    = 10-20\n    CTYPE    = C\n    LUTFIL   =  \n    STNPLT   =  \n    list\n    run\n\n    exit\nEOF\n\n\n${GEMEXE}/gpend\n\nif (-e MWmesonet.gif) then\n  pqinsert -p \"plot ac $timestamp MWmesonet.gif MWmesonet_${hh}00.gif gif\" MWmesonet.gif >& /dev/null\n  rm MWmesonet.gif\nendif\n\n"
  },
  {
    "path": "scripts/plots/OAX_overlay.csh",
    "content": "#!/bin/csh\n# Script that generates a RADAR image of OAX\n\nsource /mesonet/nawips/Gemenviron\n\n\nset h_date=`date -u --date \"1 hour ago\" +%Y%m%d_%H`\n\nset yy=`date -u +%y`\nset YY=`date -u +%Y`\nset mm=`date -u +%m`\nset dd=`date -u +%d`\nset date=${yy}${mm}${dd}\nset dateY=${YY}${mm}${dd}\nset hh=`date -u +%H`\n\nrm OAX_radar.gif* >& /dev/null\n\nset DEVICE1=\"GIF|OAX_radar.gif|800;600\"\n\nsetenv DATA_DIR /mesonet/data/nexrad/NIDS/OAX/N0B\nset grid=${DATA_DIR}/N0B_${dateY}_${hh}00\n\nif (! -e ${grid} ) then\n    set grid=${DATA_DIR}/N0B_${dateY}_${hh}01\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}02\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}03\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}04\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}05\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${dateY}_${hh}06\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}59\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}58\nendif\n\nif (! -e ${grid} ) then\n        set grid=${DATA_DIR}/N0B_${h_date}57\nendif\n\nset PROJ=RAD\nset TITLE=\"Mesonet with Omaha NEXRAD\"\n\n$GEMEXE/sfmap << EOF > /tmp/RADAR_overlay_sfmap.out\n    AREA\t= oma+\n    GAREA\t= oma+\n    DATTIM  = ${date}/${hh}00\n    GLEVEL\t= 0\n    GVCORD   = NONE\n    SFPARM   = skyc:.6;tmpf<120;wsym:1.2:2;alti;;dwpf<120;;;;brbk:1:1:231\n    COLORS   = 32;2;32;0;4;32\n    SFFILE   = /mesonet/data/gempak/sao/${date}_sao.gem\n    LINE     = 4/1/1\n    TEXT     = 1/1\n    DEVICE   = ${DEVICE1}\n    SATFIL   = \n    RADFIL   = ${grid}\n    PROJ     = ${PROJ}\n    CLEAR    = yes\n    PANEL\t= 0\n    TITLE\t= 32/-1/~ ${TITLE}\n    SCALE\t= 0\n    GVECT   =\n    WIND    = \n    LATLON\t= 0\n    HILO     =  \n    HLSYM    =  \n    CLRBAR   = 0\n    CONTUR   = 3/3\n    SKIP     = 0\n    CINT\t= \n    FINT\t=  \n    FLINE    = 24-12--1 \n    LUTFIL   = radar.tbl\n    STNPLT   =  \n    MAP     = 25//1 + 25//2\n    \\$mapfil =HICNUS.NWS + hipowo.cia\n    list\n    run\n\n    exit\nEOF\n\ngpend\n\nif (-e OAX_radar.gif) then\n    pqinsert -p \"plot c 000000000000 OAX_radar.gif bogus gif\" OAX_radar.gif >& /dev/null\n    rm OAX_radar.gif\nendif\n"
  },
  {
    "path": "scripts/plots/RELH_plot.csh",
    "content": "#!/bin/csh\n\nsource /mesonet/nawips/Gemenviron\n\nsetenv GEMCOLTBL coltbl.xwp\n\nset yy=`date -u +%y`\nset mm=`date -u +%m`\nset dd=`date -u +%d`\nset date=${yy}${mm}${dd}\nset hh=`date -u +%H`\n\nset DEVICE=\"GIF|relh.gif\"\n\nsetenv DISPLAY localhost:1\n\n$GEMEXE/sfmap_gf << EOF > /tmp/RELH_plot_sfmap.out\n    AREA\t= 40.25;-97;43.75;-90\n    GAREA\t= 40.25;-97;43.75;-90\n     SATFIL   =  \n    RADFIL   =  \n  CLRBAR = \n    SFPARM   =  STID;RELH\n    COLORS   =  25;(60;80;100/32;23;2;2/RELH/L)\n     DATTIM   =  ${date}/${hh}\n     SFFILE   =  /mesonet/data/gempak/meso/${date}_meso.gem\n    MAP\t=  25//2 + 25\n     LATLON\t=  0\n        TITLE\t=  32/-1/~ Relative Humidity\n        CLEAR\t=  no\n        PANEL\t=  0\n        DEVICE\t= ${DEVICE}\n        PROJ\t=  LCC\n        FILTER\t=  .8\n        TEXT\t=  1\n        LUTFIL\t=\n        STNPLT\t=\n    \\$mapfil = HIPOWO.CIA + HICNUS.NWS\n    list\n    run\n\nEOF\n\nif (-e relh.gif) then\n    pqinsert -p \"plot c 000000000000 relh.gif bogus gif\" relh.gif >& /dev/null\n    rm relh.gif\nendif\n"
  },
  {
    "path": "scripts/plots/RUN_PLOTS",
    "content": "#!/bin/csh -f\n\npython plot_rwis_sf.py\n"
  },
  {
    "path": "scripts/plots/SDMESONET_plot.csh",
    "content": "#!/bin/csh\n\nsource /mesonet/nawips/Gemenviron\n\nsetenv GEMCOLTBL coltbl.xwp\n\nset yy=`date -u +%y`\nset mm=`date -u +%m`\nset dd=`date -u +%d`\nset date=${yy}${mm}${dd}\nset hh=`date -u +%H`\nset yyyymmddhh_1h=\"`date -u --date '1 hour ago' +'%Y%m%d%H'`\"\nset nicetime=`date +\"%b %d %I %p\"`\n\nrm mesonet.gif* >& /dev/null\n\nset DEVICE=\"GIF|mesonet.gif|900;700\"\nset AREA=\"42.6;-104.5;46;-96\"\n\n# Now we plot\nsfmap << EOF > /tmp/SDMESONET_sfmap.out\n    AREA    = ${AREA}\n    GAREA    = ${AREA}\n     SATFIL   =  \n    RADFIL   =  \n    SFPARM   =  skyc:.6;tmpf<120;wsym:1.2:2;alti;;dwpf<120;;;;brbk:1:1:231\n    COLORS   =  32;2;32;0;4;32\n     DATTIM   =  ${date}/${hh}\n     SFFILE   =  /mesonet/data/gempak/meso/${date}_meso.gem\n     LATLON   =  0\n        TITLE    =  32/-1/GMT: ~ South Dakota Mesonet Data\n        CLEAR    =  yes\n        PANEL    =  0\n        DEVICE   = ${DEVICE}\n        PROJ     =  LCC\n        FILTER   =  .3\n        TEXT     =  1/1//hw\n        LUTFIL   =\n        STNPLT   =\n    MAP\t= 25 + 25//2\n    \\$MAPFIL = HICNUS.NWS + hipowo.cia\n    list\n    run\n\n    exit\nEOF\n\nset gdfile=\"/mesonet/data/gempak/model/rap/${yyyymmddhh_1h}_rap252.gem\"\nif (! -e ${gdfile}) then\nset gdfile=\"/mesonet/data/gempak/model/rap/${yyyymmddhh_1h}_rap130.gem\"\nendif\n\ngdcntr << EOF > /tmp/SDMESONET_gdcntr.out\n    GAREA    = ${AREA}\n    GDATTIM  = F001\n    GLEVEL   = 0\n    GVCORD   = NONE\n    GFUNC    = SM9S(MUL(0.01,MSLMA))\nGDFILE   = $gdfile\n    CINT     = 1\n    LINE     = 4\n    MAP      = 0\n    TEXT     = 1\n    DEVICE   = ${DEVICE}\n    SATFIL   =  \n    RADFIL   =  \n    PROJ     = LCC\n    CLEAR    = no\n    PANEL\t= 0\n    TITLE\t= 32/-2/~ RUC2 MMSL\n    SCALE    = 0\n    LATLON   = 0\n    HILO     =  \n    HLSYM    =  \n    CLRBAR   = 1\n    CONTUR   = 3/3\n    SKIP     = 0\n    FINT     = 0\n    FLINE    = 10-20\n    CTYPE    = C\n    LUTFIL   =  \n    STNPLT   =  \n    list\n    run\n\n    exit\nEOF\n\n\n${GEMEXE}/gpend\n\nif (-e mesonet.gif) then\n    pqinsert -p \"plot c 000000000000 SD/mesonet.gif bogus gif\" mesonet.gif >& /dev/null\n    rm -f mesonet.gif\nendif\n\n"
  },
  {
    "path": "scripts/plots/TEMPS_plot.csh",
    "content": "#!/bin/csh\n# Finally, the script that plots all of this good data\n# Daryl Herzmann 10 November 2000\n\nsource /mesonet/nawips/Gemenviron\n\nsetenv GEMCOLTBL coltbl.xwp\n\nset yy=`date -u +%y`\nset mm=`date -u +%m`\nset dd=`date -u +%d`\nset date=${yy}${mm}${dd}\nset hh=`date -u +%H`\n\n# rm temps.gif*\n\nset DEVICE=\"GIF|temps.gif\"\n\n\n$GEMEXE/sfmap << EOF > /tmp/TEMPS_plot_sfmap.out\n    AREA    = 40.25;-97;43.75;-90\n    GAREA    = 40.25;-97;43.75;-90\n     SATFIL   =  \n    RADFIL   =  \n    SFPARM   =  tmpf<120\n    COLORS   =  2\n     DATTIM   =  ${date}/${hh}\n     SFFILE   =  /mesonet/data/gempak/sao/${date}_sao.gem\n    MAP      =  25//2 + 25\n     LATLON   =  0\n        TITLE    =  32/-1/~ Temp Comparison  [ASOS red]  [RWIS blue]\n        CLEAR    =  no\n        PANEL    =  0\n        DEVICE   = ${DEVICE}\n        PROJ     =  LCC\n        FILTER   =  .3\n        TEXT     =  1/1//hw\n        LUTFIL   =\n        STNPLT   =\n    \\$mapfil = HIPOWO.CIA + HICNUS.NWS\n    list\n    run\n\n    exit\nEOF\n\n$GEMEXE/sfmap << EOF > /tmp/TEMPS_plot_sfmap2.out\n    COLORS  =  4\n    SFFILE\t= /mesonet/data/gempak/rwis/${date}_rwis.gem\n    TITLE\t= 0\n    MAP\t= 0\n    CLEAR\t= no\n        DEVICE   = ${DEVICE}\n    list\t\n    run\n\n    exit\nEOF\n\n$GEMEXE/gpend\n\nif (-e temps.gif) then\n    pqinsert -p \"plot c 000000000000 temps.gif bogus gif\" temps.gif >& /dev/null\n    rm -f temps.gif\nendif\n"
  },
  {
    "path": "scripts/plots/WCHT_plot.csh",
    "content": "#!/bin/csh\n\nsource /mesonet/nawips/Gemenviron\nsetenv DISPLAY localhost:1\nsetenv GEMCOLTBL coltbl.xwp\n\nset yy=`date -u +%y`\nset mm=`date -u +%m`\nset dd=`date -u +%d`\nset date=${yy}${mm}${dd}\nset hh=`date -u +%H`\nset ftime=\"`date -u +'%Y%m%d%H'`00\"\n\nset DEVICE=\"GIF|wcht.gif|650;500\"\n\nsfmap << EOF > /tmp/WCHT_plot_sfmap.out\n    AREA\t= 40.25;-97;43.75;-90\n    GAREA\t= 40.25;-97;43.75;-90\n     SATFIL   =  \n    RADFIL   =  \n    SFPARM   =  WCHT\n    COLORS   =  4\n     DATTIM   =  ${date}/${hh}\n     SFFILE   =  /mesonet/data/gempak/meso/${date}_meso.gem\n    MAP\t=  25//2 + 25\n     LATLON\t=  0\n        TITLE\t=  32/-1/~ NWS Wind Chill Index\n        CLEAR\t=  no\n        PANEL\t=  0\n        DEVICE\t= ${DEVICE}\n        PROJ\t=  LCC\n        FILTER\t=  .8\n        TEXT\t=  1/1//hw\n        LUTFIL\t=\n        STNPLT\t=\n    \\$mapfil = HIPOWO.CIA + HICNUS.NWS\n    list\n    run\n\nEOF\n\ngpend\n\nif (-e wcht.gif) then\n    pqinsert -p \"plot ac $ftime wcht.gif wceq_${hh}00.gif gif\" wcht.gif >& /dev/null\n    rm  wcht.gif\nendif\n"
  },
  {
    "path": "scripts/plots/WINDS_plot.csh",
    "content": "#!/bin/csh\n# Script that plots a wind comparison for the two nets\n\nsource /mesonet/nawips/Gemenviron\n\nsetenv GEMCOLTBL coltbl.xwp\n\nset yy=`date -u +%y`\nset mm=`date -u +%m`\nset dd=`date -u +%d`\nset date=${yy}${mm}${dd}\nset hh=`date -u +%H`\n\nrm winds.gif* >& /dev/null\n\nset DEVICE=\"GIF|winds.gif|650;500\"\n\n# setenv DISPLAY localhost:1\n\n$GEMEXE/sfmap << EOF > /tmp/WINDS_plot_sfmap.out\n    AREA    = 40.25;-97;43.75;-90\n    GAREA    = 40.25;-97;43.75;-90\n     SATFIL   =  \n    RADFIL   =  \n    SFPARM   =  brbk:1:1:231\n    COLORS   =  2\n     DATTIM   =  ${date}/${hh}\n     SFFILE   =  /mesonet/data/gempak/sao/${date}_sao.gem\n    MAP      =  25//2 + 25\n     LATLON   =  0\n        TITLE    =  32/-1/~ Wind Compare [ASOS red] [RWIS blue]\n        CLEAR    =  no\n        PANEL    =  0\n        DEVICE   = ${DEVICE}\n        PROJ     =  LCC\n        FILTER   =  .3\n        TEXT     =  1/1//hw\n        LUTFIL   =\n        STNPLT   =\n    \\$mapfil = HIPOWO.CIA + HICNUS.NWS\n    list\n    run\n\nEOF\n\n$GEMEXE/sfmap << EOF > /tmp/WINDS_plot_sfmap2.out\n    COLORS  =  4\n    SFFILE\t= /mesonet/data/gempak/rwis/${date}_rwis.gem\n    TITLE\t= 0\n    MAP\t= 0\n    CLEAR\t= no\n        DEVICE   = ${DEVICE}\n    list\t\n    run\n\n    exit\nEOF\n\ngpend\n\nif (-e winds.gif) then\n    pqinsert -p \"plot c 000000000000 winds.gif bogus gif\" winds.gif >& /dev/null\n    rm winds.gif\nendif\n"
  },
  {
    "path": "scripts/plots/black/surfaceContours.csh",
    "content": "#! /bin/csh \n\nsource /mesonet/nawips/Gemenviron\n\nsetenv DISPLAY localhost:1\n\nset date=`date -u +%y%m%d`\nset hh=`date -u +%H`\nset hhmm=\"`date -u +%H`00\"\nset ftime=\"`date -u +'%Y%m%d%H'`00\"\n\nset grid1=/mesonet/data/gempak/surface50x50.grd\n\n$GEMEXE/gdplot2_gf << EOF > /tmp/sf_gdplot1.out\n    GDFILE\t= $grid1\n    GDATTIM\t= ${date}/${hh}00\n    PANEL\t= 0\n    MAP      = 15/1/2\n    CLEAR\t= yes\n    CLRBAR  = 31\n    PROJ     = lcc\n    LATLON   = 0\n    TEXT     = 1.0/2//hw\n    GAREA    = 40.25;-97;43.75;-90\n\n    DEVICE\t= GF|surfaceTW.gif|720;540\n    GLEVEL   = 0\n    GVCORD   = none\n    SKIP     = /1/1\n    SCALE    = 0\n    GDPFUN\t= tmpf ! KNTV(WND)\n    TYPE    = c/f\t!B\n    CONTUR   = \n    CINT     = 2\n    LINE     = 32/1/1\n    FINT     = 2\n    FLINE    = 28-16--1;14-8--1;28-16--1\n    HILO     = \n    HLSYM    = 2;1.5//21//hw\n    CLRBAR   = 1\n    WIND     = bk32/1.0/2\n    REFVEC   = \n    TITLE    = 31/-2/~ SURFACE TEMPERATURE (F) AND WINDS\n    SATFIL   = \n    RADFIL   = \n    STNPLT   = \n    list\n    run\n\n    exit\nEOF\n\n$GEMEXE/gdplot2_gf << EOF > /tmp/sf_gdplot2.out\n    GLEVEL\t= 0\n    DEVICE\t= GF|surfaceDW.gif|720;540\n    GAREA\t= 40.25;-97;43.75;-90\n    GVCORD\t= none\n    PANEL\t= 0\n    SKIP\t= /4/4\n    SCALE\t= 0\n    GDPFUN\t= dwpf\t!KNTV(WND)\n    TYPE\t= c/f\t!B\n    CONTUR\t= \n    CINT\t= 2\n    LINE\t= 32/1/1\n    FINT\t= 2\n    FLINE\t= 28-16--1;14-8--1;28-16--1\n    HILO\t= \n    HLSYM\t= 2;1.5//21//hw\n    CLRBAR\t= 1\n    WIND\t= bk32/1.0/2\n    REFVEC\t= \n    TITLE\t= 31/-2/~ SURFACE DEW POINT (F) AND WINDS\n    SATFIL\t= \n    RADFIL\t= \n    PROJ\t= lcc\n    LATLON\t= 0\n    STNPLT\t= \n    list\n    run\n\n    exit\nEOF\n\n$GEMEXE/gdplot2_gf << EOF > /tmp/sf_gdplot3.out\n    GLEVEL\t= 0\n    DEVICE\t= GF|surfaceMD.gif|720;540\n    GAREA\t= 40.25;-97;43.75;-90\n    GVCORD\t= none\n    PANEL\t= 0\n    SKIP     = /4/4\n    SCALE    = 0\n    GDPFUN\t= mul(div((smul(mixr(dwpc,pmsl),wnd)),1000000) ! KNTV(WND)\n    TYPE    = c/f\t! B\n    CONTUR   = \n    LINE     = 32/1/1\n    FLINE    = 29-12--1\nCINT=-2;-1.6;-1.2;-0.8;-0.4;-0.3;-0.2;-0.1;0;0.1;0.2;0.3;0.4;0.8;1.2;1.6;2\nFINT=-2;-1.6;-1.2;-0.8;-0.4;-0.3;-0.2;-0.1;0;0.1;0.2;0.3;0.4;0.8;1.2;1.6;2\n    HILO     = \n    HLSYM    = 2;1.5//21//hw\n    CLRBAR   = 32\n    WIND     = bk32/1.0/2\n    REFVEC   = \n    TITLE    = 31/-2/~ SURFACE MOISTURE DIVERGENCE\n    CLEAR    = yes\n    SATFIL   = \n    RADFIL   = \n    PROJ     = lcc\n    LATLON   = 0\n    STNPLT   = \n    list\n    run\n\n    exit\nEOF\n\n$GEMEXE/gdplot2_gf << EOF > /tmp/sf_DIV.out\n        GLEVEL  = 0\n        DEVICE  = GF|surfaceDIV.gif|720;540\n        GAREA   = 40.25;-97;43.75;-90\n        GVCORD  = none\n        PANEL   = 0\n        SKIP     = /4/4\n        SCALE    = 0\n        GDPFUN  = mul(div(wnd),10000) ! KNTV(WND)\n        TYPE    = c/f   ! B\n        CONTUR   = \nCINT=-2;-1.6;-1.2;-0.8;-0.4;-0.3;-0.2;-0.1;0;0.1;0.2;0.3;0.4;0.8;1.2;1.6;2\n        LINE     = 32/1/1\nFINT=-2;-1.6;-1.2;-0.8;-0.4;-0.3;-0.2;-0.1;0;0.1;0.2;0.3;0.4;0.8;1.2;1.6;2\n        FLINE    = 29-12--1\n        HILO     = \n        HLSYM    = 2;1.5//21//hw\n        CLRBAR   = 1\n        WIND     = bk32/1.0/2\n        REFVEC   = \n        TITLE    = 31/-2/~ SURFACE DIVERGENCE\n        CLEAR    = yes\n        SATFIL   = \n        RADFIL   = \n        PROJ     = lcc\n        LATLON   = 0\n        STNPLT   = \n        list\n        run\n\n        exit\nEOF\n\n$GEMEXE/gdplot2_gf << EOF > /tmp/sf_gdplot4.out\n    GLEVEL   = 0\n    DEVICE\t= GF|surfaceTE.gif|720;540\n    GAREA\t= 40.25;-97;43.75;-90 \n    GVCORD   = none\n    PANEL    = 0\n    SKIP     = /4/4\n    SCALE    = 0\n    GDPFUN\t= thte(pmsl,tmpc,dwpc)\t!KNTV(WND)\n    CTYPE    = c/f\t!B\n    CONTUR   = \n    CINT     = 4\n    LINE     = 32/1/1\n    FINT     = 4  \n    FLINE    = 28-16--1;14-8--1;28-16--1\n    HILO     = \n    HLSYM    = 2;1.5//21//hw\n    CLRBAR   = 1\n    WIND     = bk32/1.0/2\n    REFVEC\t= \n    TITLE\t= 31/-2/~ SURFACE THETA-E (K)\n    CLEAR    = yes\n    SATFIL   = \n    RADFIL   = \n    PROJ     = lcc\n    LATLON   = 0\n    STNPLT   = \n    list\n    run\n\n    exit\nEOF\n\n$GEMEXE/gdplot2_gf << EOF > /tmp/sf_gdplot4.out\n        GLEVEL   = 0\n        DEVICE  = GF|surfaceFRNT.gif|720;540\n        GAREA   = 40.25;-97;43.75;-90 \n        GVCORD   = none\n        PANEL    = 0\n        SKIP     = /4/4\n        SCALE    = 0\n        GDPFUN  = FRNT(THTA(tmpc,pmsl),VECN(UWND,VWND))\n        CTYPE    = c/f  !B\n        CONTUR   = \n        CINT     = 1\n        LINE     = 32/1/1\n        FINT     = 4  \n        FLINE    = 28-16--1;14-8--1;28-16--1\n        HILO     = \n        HLSYM    = 2;1.5//21//hw\n        CLRBAR   = 1\n        WIND     = bk32/1.0/2\n        REFVEC  = \n        TITLE   = 31/-2/~ SURFACE FRONTOGENSIS\n        CLEAR    = yes\n        SATFIL   = \n        RADFIL   = \n        PROJ     = lcc\n        LATLON   = 0\n        STNPLT   = \n        list\n        run\n\n        exit\nEOF\n\n\nif (-e surfaceTW.gif ) then\n    pqinsert -p \"plot ar $ftime surfaceTW surfaceTW_${hhmm}.gif gif\" surfaceTW.gif >& /dev/null\n    rm surfaceTW.gif\nendif\n\nif (-e surfaceDW.gif ) then\n    pqinsert -p \"plot ar $ftime surfaceDW surfaceDW_${hhmm}.gif gif\" surfaceDW.gif >& /dev/null\n    rm surfaceDW.gif\nendif\n\nif (-e surfaceMD.gif ) then\n    pqinsert -p \"plot ar $ftime surfaceMD surfaceMD_${hhmm}.gif gif\" surfaceMD.gif >& /dev/null\n    rm surfaceMD.gif\nendif\n\nif (-e surfaceTE.gif ) then\n    pqinsert -p \"plot ar $ftime surfaceTE surfaceTE_${hhmm}.gif gif\" surfaceTE.gif >& /dev/null\n    rm surfaceTE.gif\nendif\n\nif (-e surfaceDIV.gif ) then\n    pqinsert -p \"plot ar $ftime surfaceDIV surfaceDIV_${hhmm}.gif gif\" surfaceDIV.gif >& /dev/null\n    rm surfaceDIV.gif\nendif\n\nif (-e surfaceFRNT.gif ) then\n    pqinsert -p \"plot ar $ftime surfaceFRNT surfaceFRNT_${hhmm}.gif gif\" surfaceFRNT.gif >& /dev/null\n    rm surfaceFRNT.gif\nendif\n\n"
  },
  {
    "path": "scripts/plots/coltbl.xwp",
    "content": "! COLTBL.XWP\n!\n! White background\n!\n!Color name    Abrev   Red  Green   Blue  X color name\nWHITE           WHI    255    255    255  white\nVANILLA         VAN    255    228    220  bisque1\nRED             RED    255      0      0  red\nGREEN           GRE      0    255      0  green\nBLUE            BLU      0      0    255  blue\nYELLOW          YEL    255    255      0  yellow\nCYAN            CYA      0    255    255  cyan\nMAGENTA         MAG    255      0    255  magenta\nBROWN           BRO    139     71     38  sienna3\nCORAL           COR    255    130     71  sienna1\nAPRICOT         APR    255    165     79  tan1\nPINK            PIN    255    174    185  LightPink1\nDKPINK          DKP    255    106    106  IndianRed1\nMDVIOLET        MDV    238     44     44  firebrick2\nMAROON          MAR    139      0      0  red4\nFIREBRIC        FIR    205      0      0  red3\nORRED           ORR    238     64      0  OrangeRed2\nORANGE          ORA    255    127      0  DarkOrange1\nDKORANGE        DKO    205    133      0  orange3\nGOLD            GOL    255    215      0  gold1\nDKYELLOW        DKY    238    238      0  yellow2\nLWNGREEN        LWN    127    255      0  chartreuse1\nMDGREEN         MDG      0    205      0  green3\nDKGREEN         DKG      0    139      0  green4\nGRPBLUE         GRP     16     78    139  DodgerBlue4\nLTBLUE          LTB    190    190    190  DodgerBlue1\nSKY             SKY      0    178    238  DeepSkyBlue2\nMDCYAN          MDC      0    238    238  cyan2\nVIOLET          VIO    137    104    205  MediumPurple3\nPURPLE          PUR    145     44    238  purple2\nPLUM            PLU    139      0    139  magenta4\nWHITE           WHI    255    255    255  white\nBLACK           BLA      0      0      0  black\n"
  },
  {
    "path": "scripts/plots/createGrids.csh",
    "content": "#!/bin/csh\n\nsource /mesonet/nawips/Gemenviron\n\nset yy=`date -u +%y`\nset mm=`date -u +%m`\nset dd=`date -u +%d`\nset date=${yy}${mm}${dd}\nset hh=`date -u +%H`\n\n\n# First we need to delete anything out of the current Surface grid\ngddelt << EOF > /tmp/createGrids_gddelt.out\n    GDFILE\t= /mesonet/data/gempak/surface50x50.grd\n        GDATTIM = ALL\n        GDNUM   = ALL\n        GFUNC   = ALL\n        GLEVEL  = ALL\n        GVCORD  = ALL\n        list\n        run\n\n\n\n\n    exit\nEOF\n\n\n\n# Then we ob analyze the data\noabsfc << EOF > /tmp/createGrids_oabsfc.out\n        SFFILE   = /mesonet/data/gempak/sao/${date}_sao.gem\n        GDFILE   = /mesonet/data/gempak/surface50x50.grd\n        SFPARM   = TMPF;DWPF;PMSL;UWND;VWND;VSBY;ALTM\n        DATTIM   = ${date}/${hh}00\n        DTAAREA  =\n        GUESS    =\n        GAMMA    = .3\n        SEARCH   = 49/EX\n        NPASS    = 2\n        QCNTL    = 10;10\n GDATTIM  = ${date}/${hh}00\n GFUNC    = TMPF;DWPF;PMSL;UWND;VWND;VSBY;ALTM\n GLEVEL   = 0\n GVCORD   = NONE\n\n        list\n        run\n\n\n    exit\nEOF\n\ngpend\n"
  },
  {
    "path": "scripts/plots/plot_rwis_sf.py",
    "content": "\"\"\"Plot of current RWIS surface temperatures\"\"\"\n\nfrom zoneinfo import ZoneInfo\n\nimport numpy as np\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.plot import MapPlot\nfrom pyiem.util import utc\n\n\ndef cln(vals):\n    \"\"\"Clean the value for plotting\"\"\"\n    a = [v for v in vals if v is not None]\n    if not a:\n        return None\n    return np.average(a)\n\n\ndef main():\n    \"\"\"Do Something\"\"\"\n    data = []\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        res = conn.execute(\n            sql_helper(\n                \"\"\"SELECT ST_x(geom), ST_y(geom), tsf0, tsf1, tsf2, tsf3,\n        id, rwis_subf from current c JOIN stations t on (t.iemid = c.iemid)\n        WHERE c.valid > now() - '1 hour'::interval and t.network ~* 'RWIS'\n        \"\"\"\n            )\n        )\n        for row in res:\n            val = cln(row[2:6])\n            if val is None:\n                continue\n            d = dict(lat=row[1], lon=row[0], tmpf=val, id=row[6])\n            if row[7] is not None and not np.isnan(row[7]):\n                d[\"dwpf\"] = row[7]\n            data.append(d)\n\n    now = utc().astimezone(ZoneInfo(\"America/Chicago\"))\n    mp = MapPlot(\n        axisbg=\"white\",\n        title=\"RWIS Average Pavement + Sub-Surface Temperature\",\n        subtitle=(\n            f\"Valid: {now:%-d %b %Y %-I:%M %p} \"\n            \"(pavement in red, sub-surface in blue)\"\n        ),\n    )\n    mp.plot_station(data)\n    mp.drawcounties()\n    pqstr = f\"plot c {utc():%Y%m%d%H%M} rwis_sf.png rwis_sf.png png\"\n    mp.postprocess(view=False, pqstr=pqstr)\n    mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/plots/radar.tbl",
    "content": "! osf_ref16.tbl\n!\n! Color table for 16-level NIDS Reflectivity\n! Used at OSF.\n!\n! 0    236    236\n!Color name    Abrev   Red  Green   Blue  X color name\n                       255    255    255\n                       255    255    255\n                         1    160    246\n                         0      0    246\n                         0    255      0\n                         0    200      0\n                         0    144      0\n                       255    255      0\n                       231    192      0\n                       255    144      0\n                       255      0      0\n                       214      0      0\n                       192      0      0\n                       255      0    255\n                       153     85    201\n                       255    255    255\n"
  },
  {
    "path": "scripts/prism/README.md",
    "content": "# Notes about PRISM data\n\nWhen referring to the data, the\nsource must be clearly and prominently stated and include,\nat a minimum, our name, URL, and the date of data\ncreation. For example:\n\nPRISM Climate Group, Oregon State University, [website](http://prism.oregonstate.edu), created 4 Feb 2004.\n\ngdalinfo says the grid is:\n\nUpper Left  (-125.0208333,  49.9375000) (125d 1'15.00\"W, 49d56'15.00\"N)\nLower Left  (-125.0208333,  24.0625000) (125d 1'15.00\"W, 24d 3'45.00\"N)\nUpper Right ( -66.4791667,  49.9375000) ( 66d28'45.00\"W, 49d56'15.00\"N)\nLower Right ( -66.4791667,  24.0625000) ( 66d28'45.00\"W, 24d 3'45.00\"N)\nCenter      ( -95.7500000,  37.0000000) ( 95d45' 0.00\"W, 37d 0' 0.00\"N)\n\nThe .hdr file says\n\nULXMAP         -125\nULYMAP         49.9166666666687\nXDIM           0.04166666666667\nYDIM           0.04166666666667\n\nulxmap – The x-axis map coordinate of the center of the upper-left pixel.\n\n[link](ftp://prism.nacse.org/daily/ppt/2016/)\n"
  },
  {
    "path": "scripts/prism/grid_climate_prism.py",
    "content": "\"\"\"Grid climate for netcdf usage\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport click\nimport numpy as np\nfrom pyiem import iemre\nfrom pyiem.database import get_dbconnc\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.reference import state_names\nfrom pyiem.util import convert_value, logger, ncopen\nfrom scipy.interpolate import NearestNDInterpolator\n\nLOG = logger()\nNT = NetworkTable([f\"{abbr}CLIMATE\" for abbr in state_names])\n\n\ndef generic_gridder(nc, cursor, idx):\n    \"\"\"\n    Generic gridding algorithm for easy variables\n    \"\"\"\n    lats = []\n    lons = []\n    vals = []\n    for row in cursor:\n        if row[idx] is not None and row[\"station\"] in NT.sts:\n            lats.append(NT.sts[row[\"station\"]][\"lat\"])\n            lons.append(NT.sts[row[\"station\"]][\"lon\"])\n            vals.append(row[idx])\n    if len(vals) < 4:\n        print(\n            (\"Only %s observations found for %s, won't grid\")\n            % (len(vals), idx)\n        )\n        return None\n\n    xi, yi = np.meshgrid(nc.variables[\"lon\"][:], nc.variables[\"lat\"][:])\n    nn = NearestNDInterpolator((lons, lats), np.array(vals))\n    grid = nn(xi, yi)\n    LOG.info(\n        \"%s %s %.3f %.3f\",\n        cursor.rowcount,\n        idx,\n        np.max(grid),\n        np.min(grid),\n    )\n    if grid is not None:\n        return grid\n    return None\n\n\ndef grid_day(nc, ts):\n    \"\"\"\n    I proctor the gridding of data on an hourly basis\n    @param ts Timestamp of the analysis, we'll consider a 20 minute window\n    \"\"\"\n    pgconn, cursor = get_dbconnc(\"coop\")\n    offset = iemre.daily_offset(ts)\n    if ts.day == 29 and ts.month == 2:\n        ts = datetime(2000, 3, 1)\n\n    sql = \"\"\"SELECT * from ncei_climate91 WHERE valid = %s and\n             substr(station,3,4) != '0000' and substr(station,3,1) != 'C'\n             \"\"\"\n    cursor.execute(sql, (ts,))\n    if cursor.rowcount > 4:\n        res = generic_gridder(nc, cursor, \"high\")\n        if res is not None:\n            nc.variables[\"tmax\"][offset] = convert_value(res, \"degF\", \"degC\")\n        cursor.scroll(0, mode=\"absolute\")\n        res = generic_gridder(nc, cursor, \"low\")\n        if res is not None:\n            nc.variables[\"tmin\"][offset] = convert_value(res, \"degF\", \"degC\")\n        cursor.scroll(0, mode=\"absolute\")\n        res = generic_gridder(nc, cursor, \"precip\")\n        if res is not None:\n            nc.variables[\"ppt\"][offset] = convert_value(\n                res, \"inch\", \"millimeter\"\n            )\n    else:\n        print(\n            (\"%s has %02i entries, FAIL\")\n            % (ts.strftime(\"%Y-%m-%d\"), cursor.rowcount)\n        )\n    cursor.close()\n    pgconn.close()\n\n\ndef workflow(ts):\n    \"\"\"our workflow\"\"\"\n    # Load up our netcdf file!\n    with ncopen(\"/mesonet/data/prism/prism_dailyc.nc\", \"a\") as nc:\n        grid_day(nc, ts)\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime())\ndef main(dt: datetime | None):\n    \"\"\"Go Main!\"\"\"\n    if dt is not None:\n        workflow(dt)\n    else:\n        sts = datetime(2000, 1, 1)\n        ets = datetime(2001, 1, 1)\n        interval = timedelta(days=1)\n        now = sts\n        while now < ets:\n            print(now)\n            workflow(now)\n            now += interval\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/prism/ingest_prism.py",
    "content": "\"\"\"Ingest the PRISM data into a local yearly netCDF file\n\nRUN_2AM.sh for 7,60,365 days ago\nRUN_NOON.sh for 1 day ago\n\"\"\"\n\nimport glob\nimport os\nimport subprocess\nimport warnings\nfrom datetime import datetime\n\nimport click\nimport httpx\nimport numpy as np\nimport rasterio\nfrom pyiem.iemre import daily_offset\nfrom pyiem.util import get_properties, logger, ncopen, set_property\n\n# unavoidable warnings\nwarnings.filterwarnings(\n    \"ignore\",\n    category=RuntimeWarning,\n    message=\".*?invalid value encountered in cast.*?\",\n)\n\nLOG = logger()\nPROPNAME = \"prism.archive_end\"\n\n\ndef process(valid: datetime):\n    \"\"\"Make the download happen!\"\"\"\n    idx = daily_offset(valid)\n    for varname in [\"ppt\", \"tmax\", \"tmin\"]:\n        uri = (\n            f\"https://services.nacse.org/prism/data/get/us/800m/{varname}/\"\n            f\"{valid:%Y%m%d}\"\n        )\n        try:\n            resp = httpx.get(uri, timeout=120)\n            resp.raise_for_status()\n            with open(f\"{valid:%Y%m%d}.zip\", \"wb\") as fh:  # skipcq\n                fh.write(resp.content)\n            subprocess.run(\n                [\n                    \"unzip\",\n                    \"-q\",\n                    f\"{valid:%Y%m%d}.zip\",\n                ],\n                check=True,\n            )\n            os.remove(f\"{valid:%Y%m%d}.zip\")\n        except Exception as exp:\n            LOG.error(\"Failed to download %s: %s\", uri, exp)\n            continue\n        tifffn = f\"prism_{varname}_us_30s_{valid:%Y%m%d}.tif\"\n        with rasterio.open(tifffn) as src:\n            # raster is top down, netcdf is bottom up\n            data = np.flipud(src.read(1))\n            # values of -9999 are nodata\n            data = np.ma.masked_array(\n                data, mask=(data < -9000), fill_value=np.nan\n            )\n            LOG.info(\n                \"%s min: %s max: %s\", varname, np.nanmin(data), np.nanmax(data)\n            )\n        with ncopen(f\"/mesonet/data/prism/{valid:%Y}_daily.nc\", \"a\") as nc:\n            nc.variables[varname][idx] = data\n        for fn in glob.glob(f\"prism_{varname}_us_30s_{valid:%Y%m%d}*\"):\n            os.remove(fn)\n\n\ndef update_properties(valid):\n    \"\"\"Conditionally update the database flag for when PRISM ends.\"\"\"\n    props = get_properties()\n    current = datetime.strptime(\n        props.get(PROPNAME, \"1980-01-01\"),\n        \"%Y-%m-%d\",\n    ).date()\n    if current > valid:\n        return\n    set_property(PROPNAME, valid.strftime(\"%Y-%m-%d\"))\n\n\n@click.command()\n@click.option(\n    \"--date\", \"dt\", type=click.DateTime(), required=True, help=\"Date\"\n)\ndef main(dt: datetime):\n    \"\"\"Do Something\"\"\"\n    os.chdir(\"/mesonet/tmp\")\n    dt = dt.date()\n    process(dt)\n    update_properties(dt)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/prism/init_daily.py",
    "content": "\"\"\"Generate the yearly PRISM file to hold our data\"\"\"\n\nimport os\nimport sys\nfrom datetime import datetime\n\nimport click\nimport numpy as np\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\n\n\ndef init_year(ts: datetime, ci: bool):\n    \"\"\"\n    Create a new NetCDF file for a year of our specification!\n    \"\"\"\n\n    fn = f\"/mesonet/data/prism/{ts:%Y}_daily.nc\"\n    if os.path.isfile(fn):\n        LOG.info(\"Cowardly refusing to overwrite file %s.\", fn)\n        sys.exit()\n    prism_nav = get_nav(\"PRISM\")\n    nc = ncopen(fn, \"w\")\n    nc.title = f\"PRISM Daily Data for {ts:%Y}\"\n    nc.platform = \"Grided Observations\"\n    nc.description = \"PRISM Data on a 30 arc second grid\"\n    nc.institution = \"Iowa State University, Ames, IA, USA\"\n    nc.source = \"Iowa Environmental Mesonet\"\n    nc.project_id = \"IEM\"\n    nc.realization = 1\n    nc.Conventions = \"CF-1.0\"\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = f\"{datetime.now():%d %B %Y} Generated\"\n    nc.comment = \"No Comment at this time\"\n\n    # Setup Dimensions\n    nc.createDimension(\"lat\", prism_nav.ny)\n    nc.createDimension(\"lon\", prism_nav.nx)\n    days = 2 if ci else ((ts.replace(year=ts.year + 1)) - ts).days\n    nc.createDimension(\"time\", int(days))\n    nc.createDimension(\"bnds\", 2)\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"lat\",))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.axis = \"Y\"\n    lat.bounds = \"lat_bnds\"\n    # We want to store the center of the grid cell\n    lat[:] = prism_nav.y_points\n\n    lat_bnds = nc.createVariable(\"lat_bnds\", float, (\"lat\", \"bnds\"))\n    lat_bnds[:, 0] = prism_nav.y_edges[:-1]\n    lat_bnds[:, 1] = prism_nav.y_edges[1:]\n\n    lon = nc.createVariable(\"lon\", float, (\"lon\",))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.axis = \"X\"\n    lon.bounds = \"lon_bnds\"\n    lon[:] = prism_nav.x_points\n\n    lon_bnds = nc.createVariable(\"lon_bnds\", float, (\"lon\", \"bnds\"))\n    lon_bnds[:, 0] = prism_nav.x_edges[:-1]\n    lon_bnds[:, 1] = prism_nav.x_edges[1:]\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = f\"Days since {ts:%Y}-01-01 00:00:0.0\"\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm[:] = np.arange(0, int(days))\n\n    # We have 256 levels of temperature\n    # So 0.5 C between -60C and 68C\n    high = nc.createVariable(\n        \"tmax\", np.uint8, (\"time\", \"lat\", \"lon\"), fill_value=255\n    )\n    high.scale_factor = 0.5\n    high.add_offset = -60.0\n    high.units = \"C\"\n    high.long_name = \"2m Air Temperature Daily High\"\n    high.standard_name = \"2m Air Temperature\"\n    high.coordinates = \"lon lat\"\n\n    low = nc.createVariable(\n        \"tmin\", np.uint8, (\"time\", \"lat\", \"lon\"), fill_value=255\n    )\n    low.scale_factor = 0.5\n    low.add_offset = -60.0\n    low.units = \"C\"\n    low.long_name = \"2m Air Temperature Daily High\"\n    low.standard_name = \"2m Air Temperature\"\n    low.coordinates = \"lon lat\"\n\n    # 256 levels is not enough for precipitation, so we use ushort\n    # 65536 levels from 0 to 655.35mm every 0.01mm\n    p01d = nc.createVariable(\n        \"ppt\", np.ushort, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    p01d.scale_factor = 0.01\n    p01d.add_offset = 0.0\n    p01d.units = \"mm\"\n    p01d.long_name = \"Precipitation\"\n    p01d.standard_name = \"Precipitation\"\n    p01d.coordinates = \"lon lat\"\n    p01d.description = \"Precipitation accumulation for the day\"\n\n    nc.close()\n\n\n@click.command()\n@click.option(\"--year\", type=int, required=True, help=\"Year to initialize\")\n@click.option(\"--ci\", is_flag=True, help=\"Continuous Integration mode\")\ndef main(year: int, ci: bool):\n    \"\"\"Run for the year.\"\"\"\n    os.makedirs(\"/mesonet/data/prism\", exist_ok=True)\n    init_year(datetime(year, 1, 1), ci)\n    if ci:\n        # CI mode, so we want to remove the file\n        fn = f\"/mesonet/data/prism/{year}_daily.nc\"\n        with ncopen(fn, \"a\") as nc:\n            for varname in [\"tmax\", \"tmin\", \"ppt\"]:\n                nc.variables[varname][0] = 10\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/prism/init_prism_dailyc.py",
    "content": "\"\"\"Grid out dailyc for a daily climatology on PRISM grid.\n\nNote: PRISM's climatology is monthly/annual, so no daily :/\n\"\"\"\n\nimport os\nfrom datetime import datetime\n\nimport numpy as np\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\nBASEDIR = \"/mesonet/data/prism\"\n\n\ndef init_year(ts):\n    \"\"\"\n    Create a new NetCDF file for a year of our specification!\n    \"\"\"\n\n    fn = f\"{BASEDIR}/prism_dailyc.nc\"\n    if os.path.exists(fn):\n        LOG.info(\"%s exists, skipping\", fn)\n        return\n    prism_nav = get_nav(\"PRISM\")\n    nc = ncopen(fn, \"w\")\n    nc.title = f\"PRISM Climatology {ts.year}\"\n    nc.platform = \"Grided Climatology\"\n    nc.description = \"PRISM\"\n    nc.institution = \"Iowa State University, Ames, IA, USA\"\n    nc.source = \"Iowa Environmental Mesonet\"\n    nc.project_id = \"IEM\"\n    nc.realization = 1\n    nc.Conventions = \"CF-1.0\"  # *cough*\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = f\"{datetime.now():%d %B %Y} Generated\"\n    nc.comment = \"No Comment at this time\"\n\n    # Setup Dimensions\n    nc.createDimension(\"lat\", prism_nav.ny)\n    nc.createDimension(\"lon\", prism_nav.nx)\n    ts2 = datetime(ts.year + 1, 1, 1)\n    days = (ts2 - ts).days\n    nc.createDimension(\"time\", int(days))\n    nc.createDimension(\"bnds\", 2)\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"lat\",))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.bounds = \"lat_bnds\"\n    lat.axis = \"Y\"\n    # Grid centers\n    lat[:] = prism_nav.y_points\n\n    lat_bnds = nc.createVariable(\"lat_bnds\", float, (\"lat\", \"bnds\"))\n    lat_bnds[:, 0] = prism_nav.y_edges[:-1]\n    lat_bnds[:, 1] = prism_nav.y_edges[1:]\n\n    lon = nc.createVariable(\"lon\", float, (\"lon\",))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.bounds = \"lon_bnds\"\n    lon.axis = \"X\"\n    lon[:] = prism_nav.x_points\n\n    lon_bnds = nc.createVariable(\"lon_bnds\", float, (\"lon\", \"bnds\"))\n    lon_bnds[:, 0] = prism_nav.x_edges[:-1]\n    lon_bnds[:, 1] = prism_nav.x_edges[1:]\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = f\"Days since {ts.year}-01-01 00:00:0.0\"\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm[:] = np.arange(0, int(days))\n\n    p01d = nc.createVariable(\n        \"ppt\", np.ushort, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    p01d.scale_factor = 0.01\n    p01d.add_offset = 0.0\n    p01d.units = \"mm\"\n    p01d.long_name = \"Precipitation\"\n    p01d.standard_name = \"Precipitation\"\n    p01d.coordinates = \"lon lat\"\n    p01d.description = \"Precipitation accumulation for the day\"\n\n    high = nc.createVariable(\n        \"tmax\", np.uint8, (\"time\", \"lat\", \"lon\"), fill_value=255\n    )\n    high.scale_factor = 0.5\n    high.add_offset = -60.0\n    high.units = \"C\"\n    high.long_name = \"2m Air Temperature Daily High\"\n    high.standard_name = \"2m Air Temperature\"\n    high.coordinates = \"lon lat\"\n\n    low = nc.createVariable(\n        \"tmin\", np.uint8, (\"time\", \"lat\", \"lon\"), fill_value=255\n    )\n    low.scale_factor = 0.5\n    low.add_offset = -60.0\n    low.units = \"C\"\n    low.long_name = \"2m Air Temperature Daily High\"\n    low.standard_name = \"2m Air Temperature\"\n    low.coordinates = \"lon lat\"\n\n    nc.close()\n\n\ndef main():\n    \"\"\"Go Main\"\"\"\n    init_year(datetime(2000, 1, 1))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/qc/check_afos.py",
    "content": "\"\"\"Check AFOS database for problems we don't want.\n\n- [ ] Unknown sources\n- [ ] Duplicated VTEC product_ids\n\ncalled from RUN_MIDNIGHT.sh\n\"\"\"\n\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\npgconn = get_dbconn(\"afos\")\ncursor = pgconn.cursor()\ncursor2 = pgconn.cursor()\n\nKNOWN = [\"PANC\", \"PHBK\"]\nnt = NetworkTable([\"WFO\", \"RFC\", \"NWS\", \"NCEP\", \"CWSU\", \"WSO\"])\nBASE = \"https://mesonet.agron.iastate.edu/p.php?pid\"\n\n\ndef check_vtec_dups(ts):\n    \"\"\"Ensure the database doesn't have duplicated product_id.\"\"\"\n    cursor.execute(\n        \"\"\"\n        with data as (\n            select entered, source, pil, bbb, count(*) from products\n            where entered > %s and entered < %s and\n            substr(pil, 1, 3) in ('SVR', 'FFW', 'TOR', 'SVS', 'FLW', 'FFS')\n            group by entered, source, pil, bbb)\n        select * from data where count > 1\n        \"\"\",\n        (ts - timedelta(hours=2), ts + timedelta(hours=26)),\n    )\n    if cursor.rowcount > 0:\n        LOG.warning(\"Found %s VTEC relevant product_id dups\", cursor.rowcount)\n    for row in cursor:\n        print(f\"DUP: {row[0]} {row[1]} {row[2]} {row[3]} {row[4]}\")\n\n\ndef sample(source, ts):\n    \"\"\"Print out something to look at\"\"\"\n    cursor2.execute(\n        \"SELECT pil, entered, wmo from products where entered >= %s \"\n        \"and entered < %s and source = %s\",\n        (ts, ts + timedelta(hours=24), source),\n    )\n    pils = []\n    for row in cursor2:\n        if row[0] in pils:\n            continue\n        pils.append(row[0])\n        valid = row[1].astimezone(timezone.utc)\n        print(f\" {BASE}={valid:%Y%m%d%H%M}-{source}-{row[2]}-{row[0]}\")\n\n\ndef look4(ts: datetime):\n    \"\"\"Let us investigate\"\"\"\n    cursor.execute(\n        \"SELECT source, count(*) from products WHERE entered >= %s \"\n        \"and entered < %s and substr(source, 1, 1) in ('K', 'P') \"\n        \"GROUP by source ORDER by count DESC\",\n        (ts, ts + timedelta(hours=24)),\n    )\n    for row in cursor:\n        source = row[0]\n        lookup = source[1:] if source[0] == \"K\" else source\n        if lookup in nt.sts:\n            continue\n        if lookup in KNOWN:\n            LOG.info(\"Skipping known %s\", lookup)\n            continue\n        print(f\"{row[0]} {row[1]}\")\n        sample(source, ts)\n\n\n@click.command()\n@click.option(\n    \"--date\", \"dt\", type=click.DateTime(), help=\"UTC Date\", required=True\n)\ndef main(dt: datetime):\n    \"\"\"Go Main Go\"\"\"\n    dt = dt.replace(tzinfo=timezone.utc)\n    LOG.info(\"running for %s\", dt)\n    look4(dt)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/qc/check_awos_online.py",
    "content": "\"\"\"\nCheck the status of our AWOS sites being offline or online\nrun from RUN_10_AFTER.sh\n\"\"\"\n\nfrom datetime import timedelta\n\nfrom pyiem.database import get_dbconnc\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.tracker import TrackerEngine\nfrom pyiem.util import logger, utc\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    nt = NetworkTable(\"IA_ASOS\")\n    iem, icursor = get_dbconnc(\"iem\")\n    portfolio, pcursor = get_dbconnc(\"portfolio\")\n\n    threshold = utc() - timedelta(hours=1)\n\n    icursor.execute(\n        \"SELECT id, valid from current c JOIN stations t ON \"\n        \"(t.iemid = c.iemid) WHERE t.network = 'IA_ASOS' and t.online\"\n    )\n    obs = {}\n    for row in icursor:\n        if nt.sts[row[\"id\"]][\"attributes\"].get(\"IS_AWOS\") == \"1\":\n            obs[row[\"id\"]] = {\"id\": row[\"id\"], \"valid\": row[\"valid\"]}\n\n    tracker = TrackerEngine(icursor, pcursor, 10)\n    tracker.process_network(obs, \"iaawos\", nt, threshold)\n    tracker.send_emails()\n    tac = tracker.action_count\n    if tac > 6:\n        LOG.warning(\"Had %s actions, did not email\", tac)\n    iem.commit()\n    portfolio.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/qc/check_isusm_online.py",
    "content": "\"\"\"\nCheck the status of our ISUSM sites being offline or online\nrun from RUN_40_AFTER.sh\n\"\"\"\n\nfrom datetime import timedelta\n\nfrom pyiem.database import get_dbconnc\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.tracker import TrackerEngine\nfrom pyiem.util import utc\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    nt = NetworkTable(\"ISUSM\")\n    IEM, icursor = get_dbconnc(\"iem\")\n    PORTFOLIO, pcursor = get_dbconnc(\"portfolio\")\n\n    threshold = utc() - timedelta(hours=12)\n\n    icursor.execute(\n        \"SELECT id, valid from current c JOIN stations t ON \"\n        \"(t.iemid = c.iemid) WHERE t.network = 'ISUSM'\"\n    )\n    obs = {}\n    for row in icursor:\n        obs[row[\"id\"]] = {\"id\": row[\"id\"], \"valid\": row[\"valid\"]}\n\n    tracker = TrackerEngine(icursor, pcursor, 7)\n    tracker.process_network(obs, \"isusm\", nt, threshold)\n    tracker.send_emails()\n    tac = tracker.action_count\n    if tac > 6:\n        print(f\"check_isusm_online.py had {tac} actions, did not email\")\n    IEM.commit()\n    PORTFOLIO.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/qc/check_n0q.py",
    "content": "\"\"\"Check the availability of NEXRAD Mosiacs.\n\ncalled from RUN_0Z.sh\n\"\"\"\n\nimport os\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nfrom pyiem.util import archive_fetch, logger\n\nLOG = logger()\n\n\ndef run(sts: datetime, ets: datetime):\n    \"\"\"Loop over a start to end time and look for missing N0Q products.\"\"\"\n    LOG.info(\"Checking N0Q availability from %s to %s\", sts, ets)\n    now = sts\n    interval = timedelta(minutes=5)\n    while now < ets:\n        for comp in [\"us\", \"ak\", \"hi\", \"pr\", \"gu\"]:\n            ppath = f\"{now:%Y/%m/%d}/GIS/{comp}comp/n0q_{now:%Y%m%d%H%M}.png\"\n            with archive_fetch(ppath) as fn:\n                if fn is None:\n                    LOG.warning(\"[%s]%s is missing\", comp, ppath)\n                    continue\n                if comp == \"us\" and os.stat(fn)[6] < 200000:\n                    LOG.warning(\n                        \"%s too small, size: %s\",\n                        ppath,\n                        os.stat(fn)[6],\n                    )\n        now += interval\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), help=\"UTC Date\")\ndef main(dt: datetime):\n    \"\"\"Go Main Go\"\"\"\n    sts = dt.replace(tzinfo=timezone.utc)\n    ets = sts + timedelta(hours=24)\n    run(sts, ets)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/qc/check_station_geom.py",
    "content": "\"\"\"\n  Check to make sure the station metadata is reasonable!\ncalled from RUN_MIDNIGHT.sh\n\"\"\"\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main\"\"\"\n    mcursor = get_dbconn(\"mesosite\").cursor()\n\n    mcursor.execute(\n        \"SELECT id, network, ST_x(geom), ST_y(geom), modified from stations \"\n        \"WHERE ST_x(geom) >= 180 or ST_x(geom) <= -180 or ST_y(geom) > 90 \"\n        \"or ST_y(geom) < -90\"\n    )\n    for row in mcursor:\n        LOG.warning(\"QC FAIL %s %s %s %s %s\", *row)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/qc/check_vtec_eventids.py",
    "content": "\"\"\"\nMy purpose in life is to daily check the VTEC database and see if there are\nany IDs that are missing.  daryl then follows up with the weather bureau\nreporting anything he finds after an investigation.\n\ncalled from RUN_MIDNIGHT.sh\n\"\"\"\n\nfrom datetime import datetime\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    year = datetime.now().year\n\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        missingdf = pd.read_sql(\n            sql_helper(\n                \"select wfo || '.'|| phenomena ||'.'|| significance ||'.'|| \"\n                \"eventid as key from vtec_missing_events WHERE year = :year\"\n            ),\n            conn,\n            params={\"year\": year},\n        )\n        eventsdf = pd.read_sql(\n            sql_helper(\n                \"select distinct wfo, phenomena, significance, eventid \"\n                \"from warnings where vtec_year = :year and \"\n                \"phenomena not in ('TR', 'HU', 'SS', 'TY') ORDER by \"\n                \"wfo, phenomena, significance, eventid\"\n            ),\n            conn,\n            params={\"year\": year},\n        )\n    LOG.info(\"Currently %s known missing VTEC events\", len(missingdf.index))\n    LOG.info(\"Currently %s known VTEC events\", len(eventsdf.index))\n\n    newmissing = []\n    for (wfo, phenomena, significance), gdf in eventsdf.groupby(\n        [\"wfo\", \"phenomena\", \"significance\"]\n    ):\n        # These are national ETNs\n        if phenomena in (\"TO\", \"SV\") and significance == \"A\":\n            continue\n        # Close enough check\n        if len(gdf.index) == gdf[\"eventid\"].max():\n            continue\n        # OK, we should have values from 1 to max\n        miss = set(range(1, gdf[\"eventid\"].max() + 1)) - set(gdf[\"eventid\"])\n        for eventid in miss:\n            key = f\"{wfo}.{phenomena}.{significance}.{eventid}\"\n            if key in missingdf[\"key\"].values:\n                continue\n            LOG.warning(\"Missing %s\", key)\n            newmissing.append(\n                {\n                    \"year\": year,\n                    \"wfo\": wfo,\n                    \"phenomena\": phenomena,\n                    \"significance\": significance,\n                    \"eventid\": eventid,\n                }\n            )\n\n    if not newmissing:\n        return\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        conn.execute(\n            sql_helper(\n                \"INSERT into vtec_missing_events(year, wfo, phenomena, \"\n                \"significance, eventid) VALUES (:year,:wfo,:phenomena,\"\n                \":significance,:eventid)\"\n            ),\n            newmissing,\n        )\n        conn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/qc/check_webcams.py",
    "content": "\"\"\"\nCheck to see if there are webcams offline, generate emails and such\n\"\"\"\n\nimport os\nimport stat\nfrom datetime import datetime, timedelta\nfrom zoneinfo import ZoneInfo\n\nfrom pyiem.database import get_dbconnc\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.tracker import TrackerEngine\nfrom pyiem.util import utc\n\n\ndef workflow(netname, pname):\n    \"\"\"Do something please\"\"\"\n    pgconn_iem, icursor = get_dbconnc(\"iem\")\n    pgconn_mesosite, mcursor = get_dbconnc(\"mesosite\")\n    pgconn_portfolio, pcursor = get_dbconnc(\"portfolio\")\n\n    # Now lets check files\n    mydir = \"/mesonet/ldmdata/camera/stills\"\n\n    threshold = utc() - timedelta(hours=2)\n    mcursor.execute(\n        \"SELECT id, network, name from webcams where network = %s and online \"\n        \"ORDER by id ASC\",\n        (netname,),\n    )\n    nt = NetworkTable(None)\n    obs = {}\n    missing = 0\n    for row in mcursor:\n        nt.sts[row[\"id\"]] = dict(\n            id=row[\"id\"],\n            network=row[\"network\"],\n            name=row[\"name\"],\n            tzname=\"America/Chicago\",\n        )\n        fn = f\"{mydir}/{row['id']}.jpg\"\n        if not os.path.isfile(fn):\n            missing += 1\n            if missing > 1:\n                print(f\"Missing webcam file: {fn}\")\n            continue\n        ticks = os.stat(fn)[stat.ST_MTIME]\n        valid = datetime(1970, 1, 1) + timedelta(seconds=ticks)\n        valid = valid.replace(tzinfo=ZoneInfo(\"UTC\"))\n        obs[row[\"id\"]] = {\"valid\": valid}\n    # Abort out if no obs are found\n    if not obs:\n        return\n\n    tracker = TrackerEngine(icursor, pcursor, 10)\n    tracker.process_network(obs, pname, nt, threshold)\n    tracker.send_emails()\n    pgconn_iem.commit()\n    pgconn_portfolio.commit()\n    pgconn_mesosite.close()\n\n\ndef main():\n    \"\"\"Do something\"\"\"\n    for network in [\"KCCI\", \"KCRG\", \"KELO\", \"KCWI\"]:\n        workflow(network, f\"{network.lower()}snet\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ridge/ReflectivityColorCurveManager.xml",
    "content": "<root>\n<Level type=\"double\" lowerValue=\"94.5\">\n\t<red>255</red>\n\t<green>255</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"93.19999999999999\" upperValue=\"94.5\">\n\t<red>58</red>\n\t<green>103</green>\n\t<blue>181</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"91.90000000000003\" upperValue=\"93.19999999999999\">\n\t<red>1</red>\n\t<green>32</green>\n\t<blue>32</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"90.60000000000002\" upperValue=\"91.90000000000003\">\n\t<red>1</red>\n\t<green>48</green>\n\t<blue>48</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"89.30000000000001\" upperValue=\"90.60000000000002\">\n\t<red>2</red>\n\t<green>63</green>\n\t<blue>64</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"88.0\" upperValue=\"89.30000000000001\">\n\t<red>2</red>\n\t<green>79</green>\n\t<blue>80</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"86.69999999999999\" upperValue=\"88.0\">\n\t<red>2</red>\n\t<green>95</green>\n\t<blue>96</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"85.40000000000003\" upperValue=\"86.69999999999999\">\n\t<red>3</red>\n\t<green>111</green>\n\t<blue>112</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"84.10000000000002\" upperValue=\"85.40000000000003\">\n\t<red>3</red>\n\t<green>126</green>\n\t<blue>128</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"82.80000000000001\" upperValue=\"84.10000000000002\">\n\t<red>3</red>\n\t<green>142</green>\n\t<blue>144</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"81.5\" upperValue=\"82.80000000000001\">\n\t<red>4</red>\n\t<green>158</green>\n\t<blue>160</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"80.19999999999999\" upperValue=\"81.5\">\n\t<red>4</red>\n\t<green>174</green>\n\t<blue>176</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"78.90000000000003\" upperValue=\"80.19999999999999\">\n\t<red>4</red>\n\t<green>189</green>\n\t<blue>192</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"77.60000000000002\" upperValue=\"78.90000000000003\">\n\t<red>5</red>\n\t<green>205</green>\n\t<blue>208</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"76.30000000000001\" upperValue=\"77.60000000000002\">\n\t<red>5</red>\n\t<green>221</green>\n\t<blue>224</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"75.0\" upperValue=\"76.30000000000001\">\n\t<red>5</red>\n\t<green>236</green>\n\t<blue>240</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"74.54106280193237\" upperValue=\"75.0\">\n\t<red>99</red>\n\t<green>0</green>\n\t<blue>214</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"74.08212560386474\" upperValue=\"74.54106280193237\">\n\t<red>105</red>\n\t<green>0</green>\n\t<blue>219</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"73.62318840579711\" upperValue=\"74.08212560386474\">\n\t<red>114</red>\n\t<green>0</green>\n\t<blue>221</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"73.16425120772948\" upperValue=\"73.62318840579711\">\n\t<red>121</red>\n\t<green>0</green>\n\t<blue>226</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"72.70531400966183\" upperValue=\"73.16425120772948\">\n\t<red>131</red>\n\t<green>0</green>\n\t<blue>232</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"72.2463768115942\" upperValue=\"72.70531400966183\">\n\t<red>136</red>\n\t<green>0</green>\n\t<blue>234</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"71.78743961352657\" upperValue=\"72.2463768115942\">\n\t<red>147</red>\n\t<green>0</green>\n\t<blue>239</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"71.32850241545894\" upperValue=\"71.78743961352657\">\n\t<red>155</red>\n\t<green>0</green>\n\t<blue>244</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"70.86956521739131\" upperValue=\"71.32850241545894\">\n\t<red>164</red>\n\t<green>0</green>\n\t<blue>247</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"70.41062801932368\" upperValue=\"70.86956521739131\">\n\t<red>172</red>\n\t<green>0</green>\n\t<blue>252</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"69.95169082125604\" upperValue=\"70.41062801932368\">\n\t<red>178</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"69.4927536231884\" upperValue=\"69.95169082125604\">\n\t<red>225</red>\n\t<green>11</green>\n\t<blue>227</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"69.03381642512078\" upperValue=\"69.4927536231884\">\n\t<red>228</red>\n\t<green>22</green>\n\t<blue>230</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"68.57487922705315\" upperValue=\"69.03381642512078\">\n\t<red>231</red>\n\t<green>32</green>\n\t<blue>233</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"68.11594202898551\" upperValue=\"68.57487922705315\">\n\t<red>234</red>\n\t<green>43</green>\n\t<blue>236</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"67.65700483091788\" upperValue=\"68.11594202898551\">\n\t<red>237</red>\n\t<green>54</green>\n\t<blue>239</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"67.19806763285024\" upperValue=\"67.65700483091788\">\n\t<red>240</red>\n\t<green>64</green>\n\t<blue>241</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"66.73913043478261\" upperValue=\"67.19806763285024\">\n\t<red>243</red>\n\t<green>75</green>\n\t<blue>244</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"66.28019323671498\" upperValue=\"66.73913043478261\">\n\t<red>246</red>\n\t<green>86</green>\n\t<blue>247</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"65.82125603864735\" upperValue=\"66.28019323671498\">\n\t<red>249</red>\n\t<green>96</green>\n\t<blue>250</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"65.36231884057972\" upperValue=\"65.82125603864735\">\n\t<red>252</red>\n\t<green>107</green>\n\t<blue>253</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"64.90338164251209\" upperValue=\"65.36231884057972\">\n\t<red>255</red>\n\t<green>117</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"64.44444444444444\" upperValue=\"64.90338164251209\">\n\t<red>255</red>\n\t<green>146</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"63.98550724637681\" upperValue=\"64.44444444444444\">\n\t<red>255</red>\n\t<green>157</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"63.52657004830918\" upperValue=\"63.98550724637681\">\n\t<red>255</red>\n\t<green>168</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"63.06763285024155\" upperValue=\"63.52657004830918\">\n\t<red>255</red>\n\t<green>179</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"62.60869565217392\" upperValue=\"63.06763285024155\">\n\t<red>255</red>\n\t<green>190</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"62.14975845410629\" upperValue=\"62.60869565217392\">\n\t<red>255</red>\n\t<green>201</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"61.690821256038646\" upperValue=\"62.14975845410629\">\n\t<red>255</red>\n\t<green>212</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"61.231884057971016\" upperValue=\"61.690821256038646\">\n\t<red>255</red>\n\t<green>223</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"60.772946859903385\" upperValue=\"61.231884057971016\">\n\t<red>255</red>\n\t<green>234</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"60.314009661835755\" upperValue=\"60.772946859903385\">\n\t<red>255</red>\n\t<green>245</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"59.855072463768124\" upperValue=\"60.314009661835755\">\n\t<red>255</red>\n\t<green>255</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"59.396135265700494\" upperValue=\"59.855072463768124\">\n\t<red>113</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"58.93719806763285\" upperValue=\"59.396135265700494\">\n\t<red>120</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"58.47826086956522\" upperValue=\"58.93719806763285\">\n\t<red>127</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"58.01932367149759\" upperValue=\"58.47826086956522\">\n\t<red>134</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"57.56038647342996\" upperValue=\"58.01932367149759\">\n\t<red>141</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"57.10144927536233\" upperValue=\"57.56038647342996\">\n\t<red>148</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"56.6425120772947\" upperValue=\"57.10144927536233\">\n\t<red>155</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"56.18357487922705\" upperValue=\"56.6425120772947\">\n\t<red>163</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"55.72463768115942\" upperValue=\"56.18357487922705\">\n\t<red>170</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"55.26570048309179\" upperValue=\"55.72463768115942\">\n\t<red>177</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"54.80676328502416\" upperValue=\"55.26570048309179\">\n\t<red>184</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"54.34782608695653\" upperValue=\"54.80676328502416\">\n\t<red>191</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"53.8888888888889\" upperValue=\"54.34782608695653\">\n\t<red>198</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"53.429951690821255\" upperValue=\"53.8888888888889\">\n\t<red>205</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"52.971014492753625\" upperValue=\"53.429951690821255\">\n\t<red>213</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"52.512077294685994\" upperValue=\"52.971014492753625\">\n\t<red>220</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"52.053140096618364\" upperValue=\"52.512077294685994\">\n\t<red>227</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"51.59420289855073\" upperValue=\"52.053140096618364\">\n\t<red>234</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"51.1352657004831\" upperValue=\"51.59420289855073\">\n\t<red>241</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"50.67632850241546\" upperValue=\"51.1352657004831\">\n\t<red>248</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"50.21739130434783\" upperValue=\"50.67632850241546\">\n\t<red>255</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"49.7584541062802\" upperValue=\"50.21739130434783\">\n\t<red>255</red>\n\t<green>128</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"49.29951690821257\" upperValue=\"49.7584541062802\">\n\t<red>255</red>\n\t<green>133</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"48.84057971014494\" upperValue=\"49.29951690821257\">\n\t<red>255</red>\n\t<green>138</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"48.381642512077306\" upperValue=\"48.84057971014494\">\n\t<red>255</red>\n\t<green>143</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"47.92270531400966\" upperValue=\"48.381642512077306\">\n\t<red>255</red>\n\t<green>148</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"47.46376811594203\" upperValue=\"47.92270531400966\">\n\t<red>255</red>\n\t<green>153</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"47.0048309178744\" upperValue=\"47.46376811594203\">\n\t<red>255</red>\n\t<green>158</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"46.54589371980677\" upperValue=\"47.0048309178744\">\n\t<red>255</red>\n\t<green>162</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"46.08695652173914\" upperValue=\"46.54589371980677\">\n\t<red>255</red>\n\t<green>167</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"45.62801932367151\" upperValue=\"46.08695652173914\">\n\t<red>255</red>\n\t<green>172</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"45.169082125603865\" upperValue=\"45.62801932367151\">\n\t<red>255</red>\n\t<green>177</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"44.710144927536234\" upperValue=\"45.169082125603865\">\n\t<red>255</red>\n\t<green>182</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"44.251207729468604\" upperValue=\"44.710144927536234\">\n\t<red>255</red>\n\t<green>187</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"43.79227053140097\" upperValue=\"44.251207729468604\">\n\t<red>255</red>\n\t<green>192</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"43.33333333333334\" upperValue=\"43.79227053140097\">\n\t<red>255</red>\n\t<green>196</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"42.87439613526571\" upperValue=\"43.33333333333334\">\n\t<red>255</red>\n\t<green>201</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"42.41545893719807\" upperValue=\"42.87439613526571\">\n\t<red>255</red>\n\t<green>206</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"41.95652173913044\" upperValue=\"42.41545893719807\">\n\t<red>255</red>\n\t<green>211</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"41.49758454106281\" upperValue=\"41.95652173913044\">\n\t<red>255</red>\n\t<green>216</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"41.038647342995176\" upperValue=\"41.49758454106281\">\n\t<red>255</red>\n\t<green>221</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"40.579710144927546\" upperValue=\"41.038647342995176\">\n\t<red>255</red>\n\t<green>226</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"40.120772946859915\" upperValue=\"40.579710144927546\">\n\t<red>234</red>\n\t<green>210</green>\n\t<blue>4</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"39.66183574879227\" upperValue=\"40.120772946859915\">\n\t<red>214</red>\n\t<green>199</green>\n\t<blue>4</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"39.20289855072464\" upperValue=\"39.66183574879227\">\n\t<red>193</red>\n\t<green>189</green>\n\t<blue>5</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"38.74396135265701\" upperValue=\"39.20289855072464\">\n\t<red>173</red>\n\t<green>178</green>\n\t<blue>5</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"38.28502415458938\" upperValue=\"38.74396135265701\">\n\t<red>152</red>\n\t<green>168</green>\n\t<blue>6</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"37.82608695652175\" upperValue=\"38.28502415458938\">\n\t<red>132</red>\n\t<green>157</green>\n\t<blue>6</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"37.36714975845412\" upperValue=\"37.82608695652175\">\n\t<red>111</red>\n\t<green>146</green>\n\t<blue>7</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"36.908212560386474\" upperValue=\"37.36714975845412\">\n\t<red>91</red>\n\t<green>136</green>\n\t<blue>7</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"36.44927536231884\" upperValue=\"36.908212560386474\">\n\t<red>70</red>\n\t<green>125</green>\n\t<blue>8</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"35.99033816425121\" upperValue=\"36.44927536231884\">\n\t<red>50</red>\n\t<green>115</green>\n\t<blue>8</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"35.53140096618358\" upperValue=\"35.99033816425121\">\n\t<red>29</red>\n\t<green>104</green>\n\t<blue>9</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"35.07246376811595\" upperValue=\"35.53140096618358\">\n\t<red>9</red>\n\t<green>94</green>\n\t<blue>9</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"34.61352657004832\" upperValue=\"35.07246376811595\">\n\t<red>8</red>\n\t<green>98</green>\n\t<blue>10</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"34.15458937198068\" upperValue=\"34.61352657004832\">\n\t<red>8</red>\n\t<green>102</green>\n\t<blue>11</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"33.69565217391305\" upperValue=\"34.15458937198068\">\n\t<red>9</red>\n\t<green>107</green>\n\t<blue>11</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"33.236714975845416\" upperValue=\"33.69565217391305\">\n\t<red>9</red>\n\t<green>111</green>\n\t<blue>12</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"32.777777777777786\" upperValue=\"33.236714975845416\">\n\t<red>9</red>\n\t<green>115</green>\n\t<blue>12</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"32.318840579710155\" upperValue=\"32.777777777777786\">\n\t<red>10</red>\n\t<green>119</green>\n\t<blue>13</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"31.859903381642525\" upperValue=\"32.318840579710155\">\n\t<red>10</red>\n\t<green>124</green>\n\t<blue>13</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"31.40096618357488\" upperValue=\"31.859903381642525\">\n\t<red>10</red>\n\t<green>128</green>\n\t<blue>14</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"30.94202898550725\" upperValue=\"31.40096618357488\">\n\t<red>11</red>\n\t<green>132</green>\n\t<blue>14</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"30.48309178743962\" upperValue=\"30.94202898550725\">\n\t<red>11</red>\n\t<green>136</green>\n\t<blue>15</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"30.02415458937199\" upperValue=\"30.48309178743962\">\n\t<red>11</red>\n\t<green>141</green>\n\t<blue>15</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"29.56521739130436\" upperValue=\"30.02415458937199\">\n\t<red>12</red>\n\t<green>145</green>\n\t<blue>16</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"29.106280193236728\" upperValue=\"29.56521739130436\">\n\t<red>12</red>\n\t<green>149</green>\n\t<blue>16</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"28.64734299516909\" upperValue=\"29.106280193236728\">\n\t<red>12</red>\n\t<green>153</green>\n\t<blue>17</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"28.188405797101453\" upperValue=\"28.64734299516909\">\n\t<red>13</red>\n\t<green>158</green>\n\t<blue>17</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"27.729468599033822\" upperValue=\"28.188405797101453\">\n\t<red>13</red>\n\t<green>162</green>\n\t<blue>18</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"27.270531400966192\" upperValue=\"27.729468599033822\">\n\t<red>13</red>\n\t<green>166</green>\n\t<blue>18</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"26.811594202898554\" upperValue=\"27.270531400966192\">\n\t<red>14</red>\n\t<green>171</green>\n\t<blue>19</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"26.352657004830924\" upperValue=\"26.811594202898554\">\n\t<red>14</red>\n\t<green>175</green>\n\t<blue>19</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"25.893719806763293\" upperValue=\"26.352657004830924\">\n\t<red>14</red>\n\t<green>179</green>\n\t<blue>20</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"25.434782608695656\" upperValue=\"25.893719806763293\">\n\t<red>15</red>\n\t<green>183</green>\n\t<blue>20</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"24.975845410628025\" upperValue=\"25.434782608695656\">\n\t<red>15</red>\n\t<green>188</green>\n\t<blue>21</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"24.516908212560395\" upperValue=\"24.975845410628025\">\n\t<red>15</red>\n\t<green>192</green>\n\t<blue>21</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"24.057971014492757\" upperValue=\"24.516908212560395\">\n\t<red>16</red>\n\t<green>196</green>\n\t<blue>22</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"23.599033816425127\" upperValue=\"24.057971014492757\">\n\t<red>16</red>\n\t<green>200</green>\n\t<blue>22</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"23.140096618357497\" upperValue=\"23.599033816425127\">\n\t<red>16</red>\n\t<green>205</green>\n\t<blue>23</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"22.68115942028986\" upperValue=\"23.140096618357497\">\n\t<red>17</red>\n\t<green>209</green>\n\t<blue>23</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"22.22222222222223\" upperValue=\"22.68115942028986\">\n\t<red>17</red>\n\t<green>213</green>\n\t<blue>24</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"21.763285024154598\" upperValue=\"22.22222222222223\">\n\t<red>53</red>\n\t<green>214</green>\n\t<blue>91</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"21.30434782608696\" upperValue=\"21.763285024154598\">\n\t<red>60</red>\n\t<green>214</green>\n\t<blue>109</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"20.84541062801933\" upperValue=\"21.30434782608696\">\n\t<red>67</red>\n\t<green>214</green>\n\t<blue>126</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"20.3864734299517\" upperValue=\"20.84541062801933\">\n\t<red>75</red>\n\t<green>214</green>\n\t<blue>144</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"19.927536231884062\" upperValue=\"20.3864734299517\">\n\t<red>82</red>\n\t<green>214</green>\n\t<blue>162</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"19.46859903381643\" upperValue=\"19.927536231884062\">\n\t<red>89</red>\n\t<green>214</green>\n\t<blue>179</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"19.0096618357488\" upperValue=\"19.46859903381643\">\n\t<red>97</red>\n\t<green>214</green>\n\t<blue>197</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"18.550724637681164\" upperValue=\"19.0096618357488\">\n\t<red>104</red>\n\t<green>214</green>\n\t<blue>215</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"18.091787439613533\" upperValue=\"18.550724637681164\">\n\t<red>111</red>\n\t<green>214</green>\n\t<blue>232</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"17.632850241545903\" upperValue=\"18.091787439613533\">\n\t<red>106</red>\n\t<green>208</green>\n\t<blue>228</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"17.173913043478265\" upperValue=\"17.632850241545903\">\n\t<red>103</red>\n\t<green>201</green>\n\t<blue>224</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"16.714975845410635\" upperValue=\"17.173913043478265\">\n\t<red>101</red>\n\t<green>194</green>\n\t<blue>220</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"16.256038647343004\" upperValue=\"16.714975845410635\">\n\t<red>98</red>\n\t<green>187</green>\n\t<blue>216</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"15.797101449275367\" upperValue=\"16.256038647343004\">\n\t<red>96</red>\n\t<green>180</green>\n\t<blue>212</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"15.338164251207736\" upperValue=\"15.797101449275367\">\n\t<red>94</red>\n\t<green>173</green>\n\t<blue>207</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"14.879227053140106\" upperValue=\"15.338164251207736\">\n\t<red>91</red>\n\t<green>166</green>\n\t<blue>203</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"14.420289855072468\" upperValue=\"14.879227053140106\">\n\t<red>89</red>\n\t<green>159</green>\n\t<blue>199</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"13.961352657004838\" upperValue=\"14.420289855072468\">\n\t<red>86</red>\n\t<green>153</green>\n\t<blue>195</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"13.502415458937207\" upperValue=\"13.961352657004838\">\n\t<red>84</red>\n\t<green>146</green>\n\t<blue>191</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"13.04347826086957\" upperValue=\"13.502415458937207\">\n\t<red>81</red>\n\t<green>139</green>\n\t<blue>187</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"12.58454106280194\" upperValue=\"13.04347826086957\">\n\t<red>79</red>\n\t<green>132</green>\n\t<blue>182</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"12.125603864734309\" upperValue=\"12.58454106280194\">\n\t<red>77</red>\n\t<green>125</green>\n\t<blue>178</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"11.666666666666671\" upperValue=\"12.125603864734309\">\n\t<red>74</red>\n\t<green>118</green>\n\t<blue>174</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"11.207729468599041\" upperValue=\"11.666666666666671\">\n\t<red>72</red>\n\t<green>111</green>\n\t<blue>170</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"10.74879227053141\" upperValue=\"11.207729468599041\">\n\t<red>69</red>\n\t<green>104</green>\n\t<blue>166</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"10.289855072463773\" upperValue=\"10.74879227053141\">\n\t<red>67</red>\n\t<green>97</green>\n\t<blue>162</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"9.830917874396143\" upperValue=\"10.289855072463773\">\n\t<red>65</red>\n\t<green>91</green>\n\t<blue>158</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"9.371980676328512\" upperValue=\"9.830917874396143\">\n\t<red>67</red>\n\t<green>94</green>\n\t<blue>159</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"8.913043478260875\" upperValue=\"9.371980676328512\">\n\t<red>71</red>\n\t<green>97</green>\n\t<blue>160</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"8.454106280193244\" upperValue=\"8.913043478260875\">\n\t<red>75</red>\n\t<green>100</green>\n\t<blue>161</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"7.995169082125614\" upperValue=\"8.454106280193244\">\n\t<red>79</red>\n\t<green>103</green>\n\t<blue>162</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"7.536231884057976\" upperValue=\"7.995169082125614\">\n\t<red>83</red>\n\t<green>106</green>\n\t<blue>163</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"7.077294685990346\" upperValue=\"7.536231884057976\">\n\t<red>87</red>\n\t<green>109</green>\n\t<blue>164</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"6.618357487922715\" upperValue=\"7.077294685990346\">\n\t<red>91</red>\n\t<green>112</green>\n\t<blue>166</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"6.159420289855078\" upperValue=\"6.618357487922715\">\n\t<red>95</red>\n\t<green>115</green>\n\t<blue>167</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.700483091787447\" upperValue=\"6.159420289855078\">\n\t<red>99</red>\n\t<green>118</green>\n\t<blue>168</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.241545893719817\" upperValue=\"5.700483091787447\">\n\t<red>103</red>\n\t<green>121</green>\n\t<blue>169</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.782608695652179\" upperValue=\"5.241545893719817\">\n\t<red>108</red>\n\t<green>125</green>\n\t<blue>170</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.323671497584549\" upperValue=\"4.782608695652179\">\n\t<red>112</red>\n\t<green>128</green>\n\t<blue>171</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.8647342995169183\" upperValue=\"4.323671497584549\">\n\t<red>116</red>\n\t<green>131</green>\n\t<blue>172</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.4057971014492807\" upperValue=\"3.8647342995169183\">\n\t<red>120</red>\n\t<green>134</green>\n\t<blue>174</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.9468599033816503\" upperValue=\"3.4057971014492807\">\n\t<red>124</red>\n\t<green>137</green>\n\t<blue>175</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.48792270531402\" upperValue=\"2.9468599033816503\">\n\t<red>128</red>\n\t<green>140</green>\n\t<blue>176</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.0289855072463823\" upperValue=\"2.48792270531402\">\n\t<red>132</red>\n\t<green>143</green>\n\t<blue>177</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.5700483091787518\" upperValue=\"2.0289855072463823\">\n\t<red>136</red>\n\t<green>146</green>\n\t<blue>178</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.1111111111111214\" upperValue=\"1.5700483091787518\">\n\t<red>140</red>\n\t<green>149</green>\n\t<blue>179</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.6521739130434838\" upperValue=\"1.1111111111111214\">\n\t<red>144</red>\n\t<green>152</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.19323671497585337\" upperValue=\"0.6521739130434838\">\n\t<red>148</red>\n\t<green>155</green>\n\t<blue>181</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.2657004830917771\" upperValue=\"0.19323671497585337\">\n\t<red>145</red>\n\t<green>154</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.7246376811594146\" upperValue=\"-0.2657004830917771\">\n\t<red>148</red>\n\t<green>157</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-1.183574879227045\" upperValue=\"-0.7246376811594146\">\n\t<red>151</red>\n\t<green>160</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-1.6425120772946755\" upperValue=\"-1.183574879227045\">\n\t<red>154</red>\n\t<green>162</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-2.101449275362313\" upperValue=\"-1.6425120772946755\">\n\t<red>157</red>\n\t<green>165</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-2.5603864734299435\" upperValue=\"-2.101449275362313\">\n\t<red>160</red>\n\t<green>168</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-3.019323671497574\" upperValue=\"-2.5603864734299435\">\n\t<red>164</red>\n\t<green>171</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-3.4782608695652115\" upperValue=\"-3.019323671497574\">\n\t<red>167</red>\n\t<green>174</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-3.937198067632842\" upperValue=\"-3.4782608695652115\">\n\t<red>170</red>\n\t<green>176</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-4.396135265700476\" upperValue=\"-3.937198067632842\">\n\t<red>173</red>\n\t<green>179</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-4.85507246376811\" upperValue=\"-4.396135265700476\">\n\t<red>176</red>\n\t<green>182</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-5.31400966183574\" upperValue=\"-4.85507246376811\">\n\t<red>179</red>\n\t<green>185</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-5.772946859903374\" upperValue=\"-5.31400966183574\">\n\t<red>182</red>\n\t<green>187</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-6.231884057971008\" upperValue=\"-5.772946859903374\">\n\t<red>185</red>\n\t<green>190</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-6.690821256038639\" upperValue=\"-6.231884057971008\">\n\t<red>189</red>\n\t<green>193</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-7.149758454106273\" upperValue=\"-6.690821256038639\">\n\t<red>192</red>\n\t<green>196</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-7.608695652173907\" upperValue=\"-7.149758454106273\">\n\t<red>195</red>\n\t<green>199</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-8.067632850241537\" upperValue=\"-7.608695652173907\">\n\t<red>198</red>\n\t<green>201</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-8.526570048309171\" upperValue=\"-8.067632850241537\">\n\t<red>201</red>\n\t<green>204</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-8.985507246376805\" upperValue=\"-8.526570048309171\">\n\t<red>204</red>\n\t<green>207</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-9.444444444444436\" upperValue=\"-8.985507246376805\">\n\t<red>207</red>\n\t<green>210</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-9.90338164251207\" upperValue=\"-9.444444444444436\">\n\t<red>210</red>\n\t<green>212</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-10.362318840579704\" upperValue=\"-9.90338164251207\">\n\t<red>204</red>\n\t<green>208</green>\n\t<blue>175</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-10.821256038647334\" upperValue=\"-10.362318840579704\">\n\t<red>202</red>\n\t<green>205</green>\n\t<blue>170</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-11.280193236714968\" upperValue=\"-10.821256038647334\">\n\t<red>199</red>\n\t<green>202</green>\n\t<blue>166</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-11.739130434782602\" upperValue=\"-11.280193236714968\">\n\t<red>196</red>\n\t<green>199</green>\n\t<blue>162</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-12.198067632850233\" upperValue=\"-11.739130434782602\">\n\t<red>194</red>\n\t<green>196</green>\n\t<blue>157</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-12.657004830917867\" upperValue=\"-12.198067632850233\">\n\t<red>191</red>\n\t<green>193</green>\n\t<blue>153</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-13.1159420289855\" upperValue=\"-12.657004830917867\">\n\t<red>189</red>\n\t<green>190</green>\n\t<blue>148</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-13.574879227053131\" upperValue=\"-13.1159420289855\">\n\t<red>186</red>\n\t<green>187</green>\n\t<blue>144</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-14.033816425120765\" upperValue=\"-13.574879227053131\">\n\t<red>183</red>\n\t<green>184</green>\n\t<blue>140</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-14.492753623188399\" upperValue=\"-14.033816425120765\">\n\t<red>181</red>\n\t<green>181</green>\n\t<blue>135</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-14.95169082125603\" upperValue=\"-14.492753623188399\">\n\t<red>178</red>\n\t<green>178</green>\n\t<blue>131</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-15.410628019323664\" upperValue=\"-14.95169082125603\">\n\t<red>176</red>\n\t<green>175</green>\n\t<blue>126</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-15.869565217391298\" upperValue=\"-15.410628019323664\">\n\t<red>173</red>\n\t<green>172</green>\n\t<blue>122</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-16.328502415458928\" upperValue=\"-15.869565217391298\">\n\t<red>170</red>\n\t<green>169</green>\n\t<blue>118</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-16.787439613526562\" upperValue=\"-16.328502415458928\">\n\t<red>168</red>\n\t<green>166</green>\n\t<blue>113</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-17.246376811594196\" upperValue=\"-16.787439613526562\">\n\t<red>165</red>\n\t<green>163</green>\n\t<blue>109</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-17.705314009661826\" upperValue=\"-17.246376811594196\">\n\t<red>163</red>\n\t<green>160</green>\n\t<blue>104</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-18.16425120772946\" upperValue=\"-17.705314009661826\">\n\t<red>160</red>\n\t<green>157</green>\n\t<blue>100</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-18.623188405797094\" upperValue=\"-18.16425120772946\">\n\t<red>157</red>\n\t<green>154</green>\n\t<blue>96</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-19.082125603864725\" upperValue=\"-18.623188405797094\">\n\t<red>155</red>\n\t<green>151</green>\n\t<blue>91</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-19.54106280193236\" upperValue=\"-19.082125603864725\">\n\t<red>152</red>\n\t<green>148</green>\n\t<blue>87</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-20.0\" upperValue=\"-19.54106280193236\">\n\t<red>150</red>\n\t<green>145</green>\n\t<blue>83</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-20.735294117647058\" upperValue=\"-20.0\">\n\t<red>147</red>\n\t<green>141</green>\n\t<blue>117</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-21.470588235294116\" upperValue=\"-20.735294117647058\">\n\t<red>146</red>\n\t<green>139</green>\n\t<blue>119</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-22.205882352941174\" upperValue=\"-21.470588235294116\">\n\t<red>145</red>\n\t<green>137</green>\n\t<blue>121</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-22.941176470588236\" upperValue=\"-22.205882352941174\">\n\t<red>144</red>\n\t<green>135</green>\n\t<blue>123</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-23.676470588235293\" upperValue=\"-22.941176470588236\">\n\t<red>143</red>\n\t<green>133</green>\n\t<blue>124</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-24.41176470588235\" upperValue=\"-23.676470588235293\">\n\t<red>142</red>\n\t<green>131</green>\n\t<blue>126</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-25.147058823529413\" upperValue=\"-24.41176470588235\">\n\t<red>141</red>\n\t<green>129</green>\n\t<blue>128</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-25.88235294117647\" upperValue=\"-25.147058823529413\">\n\t<red>140</red>\n\t<green>127</green>\n\t<blue>130</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-26.61764705882353\" upperValue=\"-25.88235294117647\">\n\t<red>139</red>\n\t<green>125</green>\n\t<blue>132</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-27.352941176470587\" upperValue=\"-26.61764705882353\">\n\t<red>138</red>\n\t<green>123</green>\n\t<blue>133</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-28.088235294117645\" upperValue=\"-27.352941176470587\">\n\t<red>137</red>\n\t<green>121</green>\n\t<blue>135</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-28.823529411764707\" upperValue=\"-28.088235294117645\">\n\t<red>136</red>\n\t<green>119</green>\n\t<blue>137</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-29.558823529411764\" upperValue=\"-28.823529411764707\">\n\t<red>135</red>\n\t<green>117</green>\n\t<blue>139</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-30.294117647058822\" upperValue=\"-29.558823529411764\">\n\t<red>134</red>\n\t<green>115</green>\n\t<blue>141</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-31.029411764705884\" upperValue=\"-30.294117647058822\">\n\t<red>133</red>\n\t<green>113</green>\n\t<blue>143</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-31.764705882352942\" upperValue=\"-31.029411764705884\">\n\t<red>132</red>\n\t<green>110</green>\n\t<blue>144</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" upperValue=\"-31.764705882352942\">\n\t<red>131</red>\n\t<green>108</green>\n\t<blue>146</blue>\n\t<alpha>255</alpha>\n</Level>\n</root>\n"
  },
  {
    "path": "scripts/ridge/ZDRColorCurveManager.xml",
    "content": "<root>\n<Level type=\"double\" lowerValue=\"8.0\">\n\t<red>255</red>\n\t<green>186</green>\n\t<blue>186</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"7.875\" upperValue=\"8.0\">\n\t<red>255</red>\n\t<green>180</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"7.75\" upperValue=\"7.875\">\n\t<red>255</red>\n\t<green>175</green>\n\t<blue>175</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"7.625\" upperValue=\"7.75\">\n\t<red>255</red>\n\t<green>169</green>\n\t<blue>169</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"7.5\" upperValue=\"7.625\">\n\t<red>255</red>\n\t<green>163</green>\n\t<blue>163</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"7.375\" upperValue=\"7.5\">\n\t<red>255</red>\n\t<green>156</green>\n\t<blue>156</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"7.25\" upperValue=\"7.375\">\n\t<red>255</red>\n\t<green>150</green>\n\t<blue>150</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"7.125\" upperValue=\"7.25\">\n\t<red>255</red>\n\t<green>143</green>\n\t<blue>143</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"7.0\" upperValue=\"7.125\">\n\t<red>255</red>\n\t<green>135</green>\n\t<blue>135</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"6.875\" upperValue=\"7.0\">\n\t<red>255</red>\n\t<green>127</green>\n\t<blue>127</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"6.75\" upperValue=\"6.875\">\n\t<red>255</red>\n\t<green>119</green>\n\t<blue>119</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"6.625\" upperValue=\"6.75\">\n\t<red>255</red>\n\t<green>110</green>\n\t<blue>110</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"6.5\" upperValue=\"6.625\">\n\t<red>255</red>\n\t<green>101</green>\n\t<blue>101</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"6.375\" upperValue=\"6.5\">\n\t<red>255</red>\n\t<green>90</green>\n\t<blue>90</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"6.25\" upperValue=\"6.375\">\n\t<red>255</red>\n\t<green>78</green>\n\t<blue>78</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"6.125\" upperValue=\"6.25\">\n\t<red>255</red>\n\t<green>63</green>\n\t<blue>63</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"6.0\" upperValue=\"6.125\">\n\t<red>255</red>\n\t<green>45</green>\n\t<blue>45</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.9375\" upperValue=\"6.0\">\n\t<red>255</red>\n\t<green>0</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.875\" upperValue=\"5.9375\">\n\t<red>255</red>\n\t<green>45</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.8125\" upperValue=\"5.875\">\n\t<red>255</red>\n\t<green>63</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.75\" upperValue=\"5.8125\">\n\t<red>255</red>\n\t<green>78</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.6875\" upperValue=\"5.75\">\n\t<red>255</red>\n\t<green>90</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.625\" upperValue=\"5.6875\">\n\t<red>255</red>\n\t<green>101</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.5625\" upperValue=\"5.625\">\n\t<red>255</red>\n\t<green>110</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.5\" upperValue=\"5.5625\">\n\t<red>255</red>\n\t<green>119</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.4375\" upperValue=\"5.5\">\n\t<red>255</red>\n\t<green>127</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.375\" upperValue=\"5.4375\">\n\t<red>255</red>\n\t<green>135</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.3125\" upperValue=\"5.375\">\n\t<red>255</red>\n\t<green>143</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.25\" upperValue=\"5.3125\">\n\t<red>255</red>\n\t<green>150</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.1875\" upperValue=\"5.25\">\n\t<red>255</red>\n\t<green>156</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.125\" upperValue=\"5.1875\">\n\t<red>255</red>\n\t<green>163</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.0625\" upperValue=\"5.125\">\n\t<red>255</red>\n\t<green>169</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"5.0\" upperValue=\"5.0625\">\n\t<red>255</red>\n\t<green>175</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.9375\" upperValue=\"5.0\">\n\t<red>255</red>\n\t<green>180</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.875\" upperValue=\"4.9375\">\n\t<red>255</red>\n\t<green>186</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.8125\" upperValue=\"4.875\">\n\t<red>255</red>\n\t<green>191</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.75\" upperValue=\"4.8125\">\n\t<red>255</red>\n\t<green>197</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.6875\" upperValue=\"4.75\">\n\t<red>255</red>\n\t<green>202</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.625\" upperValue=\"4.6875\">\n\t<red>255</red>\n\t<green>207</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.5625\" upperValue=\"4.625\">\n\t<red>255</red>\n\t<green>212</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.5\" upperValue=\"4.5625\">\n\t<red>255</red>\n\t<green>216</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.4375\" upperValue=\"4.5\">\n\t<red>255</red>\n\t<green>221</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.375\" upperValue=\"4.4375\">\n\t<red>255</red>\n\t<green>226</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.3125\" upperValue=\"4.375\">\n\t<red>255</red>\n\t<green>230</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.25\" upperValue=\"4.3125\">\n\t<red>255</red>\n\t<green>235</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.1875\" upperValue=\"4.25\">\n\t<red>255</red>\n\t<green>239</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.125\" upperValue=\"4.1875\">\n\t<red>255</red>\n\t<green>243</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.0625\" upperValue=\"4.125\">\n\t<red>255</red>\n\t<green>247</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"4.0\" upperValue=\"4.0625\">\n\t<red>255</red>\n\t<green>251</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.9375\" upperValue=\"4.0\">\n\t<red>255</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.875\" upperValue=\"3.9375\">\n\t<red>251</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.8125\" upperValue=\"3.875\">\n\t<red>247</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.75\" upperValue=\"3.8125\">\n\t<red>243</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.6875\" upperValue=\"3.75\">\n\t<red>239</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.625\" upperValue=\"3.6875\">\n\t<red>235</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.5625\" upperValue=\"3.625\">\n\t<red>230</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.5\" upperValue=\"3.5625\">\n\t<red>226</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.4375\" upperValue=\"3.5\">\n\t<red>221</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.375\" upperValue=\"3.4375\">\n\t<red>216</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.3125\" upperValue=\"3.375\">\n\t<red>212</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.25\" upperValue=\"3.3125\">\n\t<red>207</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.1875\" upperValue=\"3.25\">\n\t<red>202</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.125\" upperValue=\"3.1875\">\n\t<red>197</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.0625\" upperValue=\"3.125\">\n\t<red>191</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"3.0\" upperValue=\"3.0625\">\n\t<red>186</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.96875\" upperValue=\"3.0\">\n\t<red>180</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.9375\" upperValue=\"2.96875\">\n\t<red>175</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.90625\" upperValue=\"2.9375\">\n\t<red>169</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.875\" upperValue=\"2.90625\">\n\t<red>163</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.84375\" upperValue=\"2.875\">\n\t<red>156</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.8125\" upperValue=\"2.84375\">\n\t<red>150</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.78125\" upperValue=\"2.8125\">\n\t<red>143</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.75\" upperValue=\"2.78125\">\n\t<red>135</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.71875\" upperValue=\"2.75\">\n\t<red>127</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.6875\" upperValue=\"2.71875\">\n\t<red>119</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.65625\" upperValue=\"2.6875\">\n\t<red>110</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.625\" upperValue=\"2.65625\">\n\t<red>101</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.59375\" upperValue=\"2.625\">\n\t<red>90</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.5625\" upperValue=\"2.59375\">\n\t<red>78</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.53125\" upperValue=\"2.5625\">\n\t<red>63</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.5\" upperValue=\"2.53125\">\n\t<red>45</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.46875\" upperValue=\"2.5\">\n\t<red>0</red>\n\t<green>255</green>\n\t<blue>0</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.4375\" upperValue=\"2.46875\">\n\t<red>25</red>\n\t<green>252</green>\n\t<blue>25</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.40625\" upperValue=\"2.4375\">\n\t<red>35</red>\n\t<green>250</green>\n\t<blue>35</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.375\" upperValue=\"2.40625\">\n\t<red>43</red>\n\t<green>247</green>\n\t<blue>43</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.34375\" upperValue=\"2.375\">\n\t<red>50</red>\n\t<green>244</green>\n\t<blue>50</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.3125\" upperValue=\"2.34375\">\n\t<red>56</red>\n\t<green>241</green>\n\t<blue>56</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.28125\" upperValue=\"2.3125\">\n\t<red>61</red>\n\t<green>237</green>\n\t<blue>61</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.25\" upperValue=\"2.28125\">\n\t<red>66</red>\n\t<green>234</green>\n\t<blue>66</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.21875\" upperValue=\"2.25\">\n\t<red>71</red>\n\t<green>231</green>\n\t<blue>71</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.1875\" upperValue=\"2.21875\">\n\t<red>75</red>\n\t<green>228</green>\n\t<blue>75</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.15625\" upperValue=\"2.1875\">\n\t<red>79</red>\n\t<green>225</green>\n\t<blue>79</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.125\" upperValue=\"2.15625\">\n\t<red>83</red>\n\t<green>221</green>\n\t<blue>83</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.09375\" upperValue=\"2.125\">\n\t<red>87</red>\n\t<green>218</green>\n\t<blue>87</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.0625\" upperValue=\"2.09375\">\n\t<red>90</red>\n\t<green>215</green>\n\t<blue>90</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.03125\" upperValue=\"2.0625\">\n\t<red>94</red>\n\t<green>211</green>\n\t<blue>94</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"2.0\" upperValue=\"2.03125\">\n\t<red>97</red>\n\t<green>208</green>\n\t<blue>97</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.96875\" upperValue=\"2.0\">\n\t<red>100</red>\n\t<green>204</green>\n\t<blue>100</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.9375\" upperValue=\"1.96875\">\n\t<red>103</red>\n\t<green>200</green>\n\t<blue>103</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.90625\" upperValue=\"1.9375\">\n\t<red>106</red>\n\t<green>197</green>\n\t<blue>106</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.875\" upperValue=\"1.90625\">\n\t<red>109</red>\n\t<green>193</green>\n\t<blue>109</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.84375\" upperValue=\"1.875\">\n\t<red>112</red>\n\t<green>189</green>\n\t<blue>112</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.8125\" upperValue=\"1.84375\">\n\t<red>115</red>\n\t<green>185</green>\n\t<blue>115</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.78125\" upperValue=\"1.8125\">\n\t<red>118</red>\n\t<green>181</green>\n\t<blue>118</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.75\" upperValue=\"1.78125\">\n\t<red>120</red>\n\t<green>177</green>\n\t<blue>120</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.71875\" upperValue=\"1.75\">\n\t<red>123</red>\n\t<green>173</green>\n\t<blue>123</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.6875\" upperValue=\"1.71875\">\n\t<red>125</red>\n\t<green>168</green>\n\t<blue>125</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.65625\" upperValue=\"1.6875\">\n\t<red>128</red>\n\t<green>164</green>\n\t<blue>128</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.625\" upperValue=\"1.65625\">\n\t<red>130</red>\n\t<green>159</green>\n\t<blue>130</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.59375\" upperValue=\"1.625\">\n\t<red>133</red>\n\t<green>155</green>\n\t<blue>133</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.5625\" upperValue=\"1.59375\">\n\t<red>135</red>\n\t<green>150</green>\n\t<blue>135</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.53125\" upperValue=\"1.5625\">\n\t<red>137</red>\n\t<green>145</green>\n\t<blue>137</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.5\" upperValue=\"1.53125\">\n\t<red>140</red>\n\t<green>140</green>\n\t<blue>140</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.46875\" upperValue=\"1.5\">\n\t<red>137</red>\n\t<green>145</green>\n\t<blue>145</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.4375\" upperValue=\"1.46875\">\n\t<red>135</red>\n\t<green>150</green>\n\t<blue>150</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.40625\" upperValue=\"1.4375\">\n\t<red>133</red>\n\t<green>154</green>\n\t<blue>154</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.375\" upperValue=\"1.40625\">\n\t<red>131</red>\n\t<green>159</green>\n\t<blue>159</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.34375\" upperValue=\"1.375\">\n\t<red>128</red>\n\t<green>163</green>\n\t<blue>163</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.3125\" upperValue=\"1.34375\">\n\t<red>126</red>\n\t<green>168</green>\n\t<blue>168</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.28125\" upperValue=\"1.3125\">\n\t<red>123</red>\n\t<green>172</green>\n\t<blue>172</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.25\" upperValue=\"1.28125\">\n\t<red>121</red>\n\t<green>176</green>\n\t<blue>176</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.21875\" upperValue=\"1.25\">\n\t<red>118</red>\n\t<green>180</green>\n\t<blue>180</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.1875\" upperValue=\"1.21875\">\n\t<red>116</red>\n\t<green>184</green>\n\t<blue>184</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.15625\" upperValue=\"1.1875\">\n\t<red>113</red>\n\t<green>188</green>\n\t<blue>188</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.125\" upperValue=\"1.15625\">\n\t<red>110</red>\n\t<green>191</green>\n\t<blue>191</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.09375\" upperValue=\"1.125\">\n\t<red>108</red>\n\t<green>195</green>\n\t<blue>195</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.0625\" upperValue=\"1.09375\">\n\t<red>105</red>\n\t<green>199</green>\n\t<blue>199</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.03125\" upperValue=\"1.0625\">\n\t<red>102</red>\n\t<green>202</green>\n\t<blue>202</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"1.0\" upperValue=\"1.03125\">\n\t<red>99</red>\n\t<green>206</green>\n\t<blue>206</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.96875\" upperValue=\"1.0\">\n\t<red>95</red>\n\t<green>209</green>\n\t<blue>209</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.9375\" upperValue=\"0.96875\">\n\t<red>92</red>\n\t<green>213</green>\n\t<blue>213</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.90625\" upperValue=\"0.9375\">\n\t<red>89</red>\n\t<green>216</green>\n\t<blue>216</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.875\" upperValue=\"0.90625\">\n\t<red>85</red>\n\t<green>219</green>\n\t<blue>219</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.84375\" upperValue=\"0.875\">\n\t<red>82</red>\n\t<green>222</green>\n\t<blue>222</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.8125\" upperValue=\"0.84375\">\n\t<red>78</red>\n\t<green>226</green>\n\t<blue>226</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.78125\" upperValue=\"0.8125\">\n\t<red>74</red>\n\t<green>229</green>\n\t<blue>229</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.75\" upperValue=\"0.78125\">\n\t<red>70</red>\n\t<green>232</green>\n\t<blue>232</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.71875\" upperValue=\"0.75\">\n\t<red>65</red>\n\t<green>235</green>\n\t<blue>235</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.6875\" upperValue=\"0.71875\">\n\t<red>60</red>\n\t<green>238</green>\n\t<blue>238</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.65625\" upperValue=\"0.6875\">\n\t<red>55</red>\n\t<green>241</green>\n\t<blue>241</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.625\" upperValue=\"0.65625\">\n\t<red>49</red>\n\t<green>244</green>\n\t<blue>244</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.59375\" upperValue=\"0.625\">\n\t<red>42</red>\n\t<green>247</green>\n\t<blue>247</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.5625\" upperValue=\"0.59375\">\n\t<red>35</red>\n\t<green>250</green>\n\t<blue>250</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.53125\" upperValue=\"0.5625\">\n\t<red>24</red>\n\t<green>253</green>\n\t<blue>253</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.5\" upperValue=\"0.53125\">\n\t<red>0</red>\n\t<green>255</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.484375\" upperValue=\"0.5\">\n\t<red>0</red>\n\t<green>251</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.46875\" upperValue=\"0.484375\">\n\t<red>0</red>\n\t<green>247</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.453125\" upperValue=\"0.46875\">\n\t<red>0</red>\n\t<green>243</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.4375\" upperValue=\"0.453125\">\n\t<red>0</red>\n\t<green>239</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.421875\" upperValue=\"0.4375\">\n\t<red>0</red>\n\t<green>235</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.40625\" upperValue=\"0.421875\">\n\t<red>0</red>\n\t<green>230</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.390625\" upperValue=\"0.40625\">\n\t<red>0</red>\n\t<green>226</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.375\" upperValue=\"0.390625\">\n\t<red>0</red>\n\t<green>221</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.359375\" upperValue=\"0.375\">\n\t<red>0</red>\n\t<green>216</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.34375\" upperValue=\"0.359375\">\n\t<red>0</red>\n\t<green>212</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.328125\" upperValue=\"0.34375\">\n\t<red>0</red>\n\t<green>207</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.3125\" upperValue=\"0.328125\">\n\t<red>0</red>\n\t<green>202</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.296875\" upperValue=\"0.3125\">\n\t<red>0</red>\n\t<green>197</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.28125\" upperValue=\"0.296875\">\n\t<red>0</red>\n\t<green>191</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.265625\" upperValue=\"0.28125\">\n\t<red>0</red>\n\t<green>186</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.25\" upperValue=\"0.265625\">\n\t<red>0</red>\n\t<green>180</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.234375\" upperValue=\"0.25\">\n\t<red>0</red>\n\t<green>175</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.21875\" upperValue=\"0.234375\">\n\t<red>0</red>\n\t<green>169</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.203125\" upperValue=\"0.21875\">\n\t<red>0</red>\n\t<green>163</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.1875\" upperValue=\"0.203125\">\n\t<red>0</red>\n\t<green>156</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.171875\" upperValue=\"0.1875\">\n\t<red>0</red>\n\t<green>150</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.15625\" upperValue=\"0.171875\">\n\t<red>0</red>\n\t<green>143</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.140625\" upperValue=\"0.15625\">\n\t<red>0</red>\n\t<green>135</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.125\" upperValue=\"0.140625\">\n\t<red>0</red>\n\t<green>127</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.109375\" upperValue=\"0.125\">\n\t<red>0</red>\n\t<green>119</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.09375\" upperValue=\"0.109375\">\n\t<red>0</red>\n\t<green>110</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.078125\" upperValue=\"0.09375\">\n\t<red>0</red>\n\t<green>101</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.0625\" upperValue=\"0.078125\">\n\t<red>0</red>\n\t<green>90</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.046875\" upperValue=\"0.0625\">\n\t<red>0</red>\n\t<green>78</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.03125\" upperValue=\"0.046875\">\n\t<red>0</red>\n\t<green>63</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.015625\" upperValue=\"0.03125\">\n\t<red>0</red>\n\t<green>45</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"0.0\" upperValue=\"0.015625\">\n\t<red>0</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.03125\" upperValue=\"0.0\">\n\t<red>45</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.0625\" upperValue=\"-0.03125\">\n\t<red>63</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.09375\" upperValue=\"-0.0625\">\n\t<red>78</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.125\" upperValue=\"-0.09375\">\n\t<red>90</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.15625\" upperValue=\"-0.125\">\n\t<red>101</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.1875\" upperValue=\"-0.15625\">\n\t<red>110</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.21875\" upperValue=\"-0.1875\">\n\t<red>119</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.25\" upperValue=\"-0.21875\">\n\t<red>127</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.28125\" upperValue=\"-0.25\">\n\t<red>135</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.3125\" upperValue=\"-0.28125\">\n\t<red>143</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.34375\" upperValue=\"-0.3125\">\n\t<red>150</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.375\" upperValue=\"-0.34375\">\n\t<red>156</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.40625\" upperValue=\"-0.375\">\n\t<red>163</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.4375\" upperValue=\"-0.40625\">\n\t<red>169</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.46875\" upperValue=\"-0.4375\">\n\t<red>175</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.5\" upperValue=\"-0.46875\">\n\t<red>180</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.59375\" upperValue=\"-0.5\">\n\t<red>186</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.6875\" upperValue=\"-0.59375\">\n\t<red>191</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.78125\" upperValue=\"-0.6875\">\n\t<red>197</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.875\" upperValue=\"-0.78125\">\n\t<red>202</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-0.96875\" upperValue=\"-0.875\">\n\t<red>207</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-1.0625\" upperValue=\"-0.96875\">\n\t<red>212</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-1.15625\" upperValue=\"-1.0625\">\n\t<red>216</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-1.25\" upperValue=\"-1.15625\">\n\t<red>221</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-1.34375\" upperValue=\"-1.25\">\n\t<red>226</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-1.4375\" upperValue=\"-1.34375\">\n\t<red>230</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-1.53125\" upperValue=\"-1.4375\">\n\t<red>235</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-1.625\" upperValue=\"-1.53125\">\n\t<red>239</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-1.71875\" upperValue=\"-1.625\">\n\t<red>243</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-1.8125\" upperValue=\"-1.71875\">\n\t<red>247</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-1.90625\" upperValue=\"-1.8125\">\n\t<red>251</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-2.0\" upperValue=\"-1.90625\">\n\t<red>255</red>\n\t<green>0</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-2.125\" upperValue=\"-2.0\">\n\t<red>255</red>\n\t<green>45</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-2.25\" upperValue=\"-2.125\">\n\t<red>255</red>\n\t<green>64</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-2.375\" upperValue=\"-2.25\">\n\t<red>255</red>\n\t<green>79</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-2.5\" upperValue=\"-2.375\">\n\t<red>255</red>\n\t<green>91</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-2.625\" upperValue=\"-2.5\">\n\t<red>255</red>\n\t<green>102</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-2.75\" upperValue=\"-2.625\">\n\t<red>255</red>\n\t<green>112</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-2.875\" upperValue=\"-2.75\">\n\t<red>255</red>\n\t<green>121</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-3.0\" upperValue=\"-2.875\">\n\t<red>255</red>\n\t<green>129</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-3.125\" upperValue=\"-3.0\">\n\t<red>255</red>\n\t<green>137</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-3.25\" upperValue=\"-3.125\">\n\t<red>255</red>\n\t<green>145</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-3.375\" upperValue=\"-3.25\">\n\t<red>255</red>\n\t<green>152</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-3.5\" upperValue=\"-3.375\">\n\t<red>255</red>\n\t<green>159</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-3.625\" upperValue=\"-3.5\">\n\t<red>255</red>\n\t<green>165</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-3.75\" upperValue=\"-3.625\">\n\t<red>255</red>\n\t<green>171</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" lowerValue=\"-3.875\" upperValue=\"-3.75\">\n\t<red>255</red>\n\t<green>178</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"double\" upperValue=\"-3.875\">\n\t<red>255</red>\n\t<green>183</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n<Level type=\"string\" value=\"RF\" largeLabel=\"true\">\n\t<red>255</red>\n\t<green>255</green>\n\t<blue>255</blue>\n\t<alpha>255</alpha>\n</Level>\n\n</root>\n"
  },
  {
    "path": "scripts/roads/archive_roadsplot.py",
    "content": "\"\"\"Archive a road conditions plot every 5 minutes.\n\nCalled from RUN_5MIN.sh\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport httpx\nfrom pyiem.util import archive_fetch, logger, utc\n\nLOG = logger()\n\n\ndef do(now: datetime):\n    \"\"\"Run for a given timestamp.\"\"\"\n    ppath = now.strftime(\"%Y/%m/%d/iaroads/iaroads_%H%M.png\")\n    with archive_fetch(ppath) as fn:\n        if fn is not None:\n            LOG.info(\"skipping as file %s exists\", ppath)\n            return\n    LOG.info(\"running for %s\", now)\n\n    # CAREFUL, web takes valid in CST/CDT\n    service = now.astimezone(ZoneInfo(\"America/Chicago\")).strftime(\n        \"http://iem.local/roads/iem.php?valid=%Y-%m-%d%%20%H:%M\"\n    )\n    routes = \"ac\" if (utc() - now) < timedelta(minutes=10) else \"a\"\n    if routes == \"ac\":\n        service = \"http://iem.local/roads/iem.php\"\n\n    req = httpx.get(service, timeout=60)\n    with tempfile.NamedTemporaryFile(delete=False) as tmpfd:\n        tmpfd.write(req.content)\n    pqstr = (\n        f\"plot {routes} {now:%Y%m%d%H%M} iaroads.png \"\n        f\"iaroads/iaroads_{now:%H%M}.png png\"\n    )\n    LOG.info(pqstr)\n    subprocess.call([\"pqinsert\", \"-i\", \"-p\", pqstr, tmpfd.name])\n    os.unlink(tmpfd.name)\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), required=True)\ndef main(valid: datetime):\n    \"\"\"Go Main Go\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    for offset in [0, 1440, 1440 + 720]:\n        do(valid - timedelta(minutes=offset))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/roads/check_roads_geom.py",
    "content": "\"\"\"Use the REST service to setup any new segments for the new season\n\n* JSON data is in 3857\n\"\"\"\n\nimport httpx\nfrom pyiem.database import get_dbconn\nfrom shapely.geometry import LineString, MultiLineString\n\nURI = (\n    \"https://services.arcgis.com/8lRhdTsQyJpO52F1/ArcGIS/rest/services/\"\n    \"511_IA_Road_Conditions_View/FeatureServer/0/query?\"\n    \"where=1%3D1&objectIds=&time=&\"\n    \"geometry=&geometryType=esriGeometryEnvelope&inSR=&\"\n    \"spatialRel=esriSpatialRelIntersects&resultType=none&distance=0.0&\"\n    \"units=esriSRUnit_Meter&returnGeodetic=false&outFields=*&\"\n    \"returnGeometry=true&multipatchOption=xyFootprint&maxAllowableOffset=\"\n    \"&geometryPrecision=&outSR=&datumTransformation=&\"\n    \"applyVCSProjection=false&returnIdsOnly=false&returnUniqueIdsOnly=false&\"\n    \"returnCountOnly=false&returnExtentOnly=false&returnDistinctValues=false&\"\n    \"orderByFields=&groupByFieldsForStatistics=&outStatistics=&having=&\"\n    \"resultOffset=&resultRecordCount=&returnZ=false&returnM=false&\"\n    \"returnExceededLimitFeatures=true&quantizationParameters=&\"\n    \"sqlFormat=none&f=pjson&token=\"\n)\n\n\ndef main():\n    \"\"\"Go Main, please\"\"\"\n    pgconn = get_dbconn(\"postgis\")\n    cursor = pgconn.cursor()\n    resp = httpx.get(URI, timeout=30)\n    jobj = resp.json()\n    queue = []\n    for feat in jobj[\"features\"]:\n        props = feat[\"attributes\"]\n        # Geometry is [[pt]] and we only have single segments\n        path = MultiLineString([LineString(feat[\"geometry\"][\"paths\"][0])])\n        # segid is defined by the database insert\n        geom = f\"ST_Transform(ST_GeomFromText('{path.wkt}', 3857), 26915)\"\n        idot_id = props[\"SEGMENT_ID\"]\n        cursor.execute(\n            f\"\"\"\n        SELECT st_length(geom),\n        st_length({geom}), archive_begin from roads_base\n        where idot_id = %s and archive_end is null\n        ORDER by archive_begin DESC\n        \"\"\",\n            (idot_id,),\n        )\n        row = cursor.fetchone()\n        if row is None:\n            print(f\"{idot_id} is unknown to database!\")\n            queue.append(idot_id)\n            continue\n        if abs(row[1] - row[0]) > 1:\n            print(str(row), cursor.rowcount)\n            cursor.execute(\n                f\"\"\"\n            UPDATE roads_base SET geom = {geom}\n            WHERE idot_id = %s and archive_end is null\n            \"\"\",\n                (idot_id,),\n            )\n            print(f\"updated {cursor.rowcount} rows\")\n\n    print(queue)\n    cursor.close()\n    pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/roads/ingest_roads_rest.py",
    "content": "\"\"\"Consume DOT REST Service with Iowa Winter Road Conditions\n\nRun every five minutes from RUN_5MIN.sh\n\n      \"attributes\" : {\n        \"OBJECTID\" : 38,\n        \"SEGMENT_ID\" : 1883,\n        \"ROUTE\" : \"I-35\",\n        \"NAMEID\" : \"I-35: Swaledale Exit to Exit 194 (Clear Lake)\",\n        \"LONGNAME\" : \"I-35,.... LAKE)\",\n        \"DISTRICT\" : \"D2-  Hanlontown-Mason City\",\n        \"SUBAREA\" : \"Hanlontown\",\n        \"PRIMARYMP\" : 182.5526287,\n        \"PRIMARYLAT\" : 42.97979554,\n        \"PRIMARYLONG\" : -93.34460851,\n        \"SECONDARYMP\" : 194.004904,\n        \"SECONDARYLAT\" : 43.145956,\n        \"SECONDARYLONG\" : -93,\n        \"EVENT_ID\" : \"IASEG-187400\",\n        \"EVENT_UPDATE\" : 73,\n        \"HL_PAVEMENT_CONDITION\" : \"seasonal roadway conditions\",\n        \"LOC_LINK_DIRECTION\" : \"both directions\",\n        \"ROAD_CONDITION\" : \"Seasonal\",\n        \"GIS_CREATION_DATE\" : 1449769515000,\n        \"CARS_MSG_UPDATE_DATE\" : 1449766817000,\n        \"CARS_MSG_INITIAL_DATE\" : 1449766817000,\n        \"PH_PAVEMENT_CONDITION\" : \"\",\n        \"SHAPE_Length\" : 25598.2073258733\n      },\n\n\"\"\"\n\nimport json\nimport os\nimport subprocess\nimport sys\nimport zipfile\nfrom datetime import datetime, timedelta\n\nimport httpx\nimport pandas as pd\nimport shapefile\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import exponential_backoff, logger, utc\nfrom shapely.wkb import loads\n\nLOG = logger()\nURI = (\n    \"https://services.arcgis.com/8lRhdTsQyJpO52F1/ArcGIS/rest/services/\"\n    \"511_IA_Road_Conditions_View/FeatureServer/0/query?\"\n    \"where=1%3D1&objectIds=&time=&\"\n    \"geometry=&geometryType=esriGeometryEnvelope&inSR=&\"\n    \"spatialRel=esriSpatialRelIntersects&resultType=none&distance=0.0&\"\n    \"units=esriSRUnit_Meter&returnGeodetic=false&outFields=*&\"\n    \"returnGeometry=true&multipatchOption=xyFootprint&maxAllowableOffset=\"\n    \"&geometryPrecision=&outSR=&datumTransformation=&\"\n    \"applyVCSProjection=false&returnIdsOnly=false&returnUniqueIdsOnly=false&\"\n    \"returnCountOnly=false&returnExtentOnly=false&returnDistinctValues=false&\"\n    \"orderByFields=&groupByFieldsForStatistics=&outStatistics=&having=&\"\n    \"resultOffset=&resultRecordCount=&returnZ=false&returnM=false&\"\n    \"returnExceededLimitFeatures=true&quantizationParameters=&\"\n    \"sqlFormat=none&f=pjson&token=\"\n)\n\nEPSG26915 = (\n    'PROJCS[\"NAD_1983_UTM_Zone_15N\",GEOGCS[\"GCS_North_American_1983\"'\n    ',DATUM[\"D_North_American_1983\",SPHEROID[\"GRS_1980\",6378137.0,'\n    '298.257222101]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",'\n    '0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],'\n    'PARAMETER[\"False_Easting\",500000.0],PARAMETER[\"False_Northing\",'\n    '0.0],PARAMETER[\"Central_Meridian\",-93.0],PARAMETER'\n    '[\"Scale_Factor\",0.9996],PARAMETER[\"Latitude_Of_Origin\",0.0]'\n    ',UNIT[\"Meter\",1.0]]'\n)\n# NB: Could be 'null' (None) as well\nROADCOND = {\n    \"dry pavement\": 0,\n    \"wet\": 1,\n    \"partially covered with frost\": 3,\n    \"partially covered with snow\": 39,\n    \"partially covered with ice\": 27,\n    \"partially covered with slush\": 56,\n    \"partially covered with mixed\": 15,\n    \"completely covered with frost\": 11,\n    \"completely covered with snow\": 47,\n    \"completely covered with ice\": 35,\n    \"completely covered with slush\": 64,\n    \"completely covered with mixed\": 23,\n    \"travel not advised\": 51,\n    \"partially covered with mixed snow ice or slush\": 15,\n    \"completely covered with mixed snow ice or slush\": 23,\n    \"icy bridges\": 27,\n    \"seasonal\": 0,\n    \"seasonal roadway conditions\": 0,\n    \"impassable\": 86,\n}\n\n\ndef export_shapefile(txn, valid):\n    \"\"\"Export a Shapefile of Road Conditions\"\"\"\n    os.chdir(\"/tmp\")\n    shp = shapefile.Writer(\"iaroad_cond\")\n    shp.field(\"SEGID\", \"N\", 6, 0)\n    shp.field(\"MAJOR\", \"C\", 10, 0)\n    shp.field(\"MINOR\", \"C\", 128, 0)\n    shp.field(\"US1\", \"N\", 4, 0)\n    shp.field(\"ST1\", \"N\", 4, 0)\n    shp.field(\"INT1\", \"N\", 4, 0)\n    shp.field(\"TYPE\", \"N\", 4, 0)\n    shp.field(\"VALID\", \"C\", 12, 0)\n    shp.field(\"COND_CODE\", \"N\", 4, 0)\n    shp.field(\"COND_TXT\", \"C\", 120, 0)\n    shp.field(\"BAN_TOW\", \"C\", 1, 0)\n    shp.field(\"LIM_VIS\", \"C\", 1, 0)\n\n    txn.execute(\n        \"select b.*, c.*, b.geom from roads_base b, roads_current c \"\n        \"WHERE b.segid = c.segid and valid is not null and b.geom is not null\"\n    )\n    for row in txn:\n        multiline = loads(row[\"geom\"], hex=True)\n        shp.line([zip(*multiline.geoms[0].xy, strict=False)])\n        shp.record(\n            row[\"segid\"],\n            row[\"major\"],\n            row[\"minor\"],\n            row[\"us1\"],\n            row[\"st1\"],\n            row[\"int1\"],\n            row[\"type\"],\n            row[\"valid\"].strftime(\"%Y%m%d%H%M\"),\n            row[\"cond_code\"],\n            row[\"raw\"],\n            str(row[\"towing_prohibited\"])[0],\n            str(row[\"limited_vis\"])[0],\n        )\n\n    shp.close()\n    with open(\"iaroad_cond.prj\", \"w\", encoding=\"ascii\") as fp:\n        fp.write(EPSG26915)\n    with zipfile.ZipFile(\"iaroad_cond.zip\", \"w\") as zfp:\n        for suffix in [\"shp\", \"shx\", \"dbf\", \"prj\"]:\n            zfp.write(f\"iaroad_cond.{suffix}\")\n\n    subprocess.call(\n        [\n            \"pqinsert\",\n            \"-p\",\n            (\n                f\"zip ac {valid:%Y%m%d%H%M} \"\n                \"gis/shape/26915/ia/iaroad_cond.zip \"\n                f\"GIS/iaroad_cond_{valid:%Y%m%d%H%M}.zip zip\"\n            ),\n            \"iaroad_cond.zip\",\n        ],\n    )\n\n    for suffix in [\"shp\", \"shx\", \"dbf\", \"prj\", \"zip\"]:\n        os.unlink(f\"iaroad_cond.{suffix}\")\n\n\ndef main():\n    \"\"\"Go something greatish\"\"\"\n    pgconn, cursor = get_dbconnc(\"postgis\")\n\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        current = pd.read_sql(\n            sql_helper(\"\"\"\n            select c.segid, b.longname, c.cond_code, b.idot_id,\n            c.valid at time zone 'UTC' as utc_valid from\n            roads_current c JOIN roads_base b on (c.segid = b.segid)\n            \"\"\"),\n            conn,\n            index_col=\"idot_id\",\n        )\n\n    req = exponential_backoff(httpx.get, URI, timeout=30)\n    if req is None:\n        sys.exit()\n    jobj = req.json()\n\n    if \"features\" not in jobj:\n        LOG.warning(\n            \"Got invalid RESULT:\\n%s\",\n            json.dumps(jobj, sort_keys=True, indent=4, separators=(\",\", \": \")),\n        )\n        return\n\n    dirty = False\n    for feat in jobj[\"features\"]:\n        props = feat[\"attributes\"]\n        idot_id = props[\"SEGMENT_ID\"]\n        if idot_id not in current.index:\n            LOG.warning(\n                \"Unknown idot_id '%s' with long_name '%s'\",\n                idot_id,\n                props[\"LONG_NAME\"],\n            )\n            continue\n        segid = current.at[idot_id, \"segid\"]\n        raw = props[\"HL_PAVEMENT_CONDITION\"]\n        if raw is None:\n            continue\n        cond = ROADCOND.get(raw.lower())\n        if cond is None:\n            LOG.warning(\n                \"longname '%s' has unknown cond '%s'\\n%s\",\n                props[\"LONG_NAME\"],\n                props[\"HL_PAVEMENT_CONDITION\"],\n                json.dumps(\n                    props, sort_keys=True, indent=4, separators=(\",\", \": \")\n                ),\n            )\n            continue\n        # Timestamps appear to be UTC now\n        if props[\"CARS_MSG_UPDATE_DATE\"] is not None:\n            valid = utc(1970, 1, 1) + timedelta(\n                seconds=props[\"CARS_MSG_UPDATE_DATE\"] / 1000.0\n            )\n        else:\n            # Sucks, but alas\n            LOG.info(\"CARS_MSG_UPDATE_DATE is missing, default to utcnow!\")\n            valid = utc()\n        # Save to log, if difference\n        if cond != current.at[idot_id, \"cond_code\"]:\n            cursor.execute(\n                \"\"\"\n                INSERT into roads_log(segid, valid, cond_code, raw)\n                VALUES (%s, %s, %s, %s)\n            \"\"\",\n                (segid, valid, cond, raw),\n            )\n            dirty = True\n        # Update currents\n        cursor.execute(\n            \"UPDATE roads_current SET cond_code = %s, valid = %s, \"\n            \"raw = %s WHERE segid = %s\",\n            (cond, valid, raw, segid),\n        )\n\n    # Force a run each morning at about 3 AM\n    if datetime.now().hour == 3 and datetime.now().minute < 10:\n        dirty = True\n\n    if dirty:\n        export_shapefile(cursor, utc())\n\n    cursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/roads/init_roads_database.py",
    "content": "\"\"\"Use the REST service to setup any new segments for the new season\n\n* JSON data is in Google 3857\n\"\"\"\n\nimport httpx\nfrom ingest_roads_rest import LOG, URI\nfrom pyiem.database import get_dbconn\nfrom shapely.geometry import LineString, MultiLineString\n\n\ndef main():\n    \"\"\"Go Main, please\"\"\"\n    pgconn = get_dbconn(\"postgis\")\n    cursor = pgconn.cursor()\n    resp = httpx.get(URI, timeout=30)\n    jobj = resp.json()\n    archive_begin = \"2022-12-20 12:00\"\n    LOG.info(\"adding %s rows to roads_base\", len(jobj[\"features\"]))\n    for feat in jobj[\"features\"]:\n        props = feat[\"attributes\"]\n        # Geometry is [[pt]] and we only have single segments\n        path = MultiLineString([LineString(feat[\"geometry\"][\"paths\"][0])])\n        # segid is defined by the database insert\n        major = props[\"ROUTE_NAME\"]\n        minor = props[\"NAMEID\"].split(\"--\", 1)[1].strip()\n        (typ, num) = major.replace(\"-\", \" \").split()[:2]\n        int1 = num if typ == \"I\" else None\n        us1 = num if typ == \"US\" else None\n        st1 = num if typ == \"IA\" else None\n        if major == \"Airline Highway\":\n            num = 0\n        sys_id = props[\"ROUTE_RANK\"]\n        longname = props[\"LONG_NAME\"]\n        idot_id = props[\"SEGMENT_ID\"]\n        if idot_id != 505:\n            continue\n        print(props[\"NAMEID\"])\n        cursor.execute(\n            \"\"\"\n            INSERT into roads_base (major, minor, us1, st1, int1, type,\n            longname, geom, idot_id, archive_begin)\n            VALUES (%s, %s, %s, %s, %s, %s, %s,\n            ST_Transform(ST_SetSrid(ST_GeomFromText(%s), 3857), 26915),\n            %s, %s) RETURNING segid\n        \"\"\",\n            (\n                major[:10],\n                minor,\n                us1,\n                st1,\n                int1,\n                sys_id,\n                longname,\n                path.wkt,\n                idot_id,\n                archive_begin,\n            ),\n        )\n        segid = cursor.fetchone()[0]\n        cursor.execute(\n            \"\"\"\n            UPDATE roads_base\n            SET simple_geom = ST_Simplify(geom, 0.01) WHERE segid = %s\n        \"\"\",\n            (segid,),\n        )\n        # Figure out which WFO this segment is in...\n        cursor.execute(\n            \"\"\"\n            SELECT u.wfo,\n            ST_Distance(u.geom, ST_Transform(b.geom, 4326))\n            from ugcs u, roads_base b WHERE\n            substr(ugc, 1, 2) = 'IA' and b.segid = %s\n            and u.end_ts is null ORDER by ST_Distance ASC\n        \"\"\",\n            (segid,),\n        )\n        wfo = cursor.fetchone()[0]\n        cursor.execute(\n            \"UPDATE roads_base SET wfo = %s WHERE segid = %s\", (wfo, segid)\n        )\n        cursor.execute(\n            \"\"\"\n            INSERT into roads_current(segid, valid, cond_code)\n            VALUES (%s, %s, 0)\n        \"\"\",\n            (segid, archive_begin),\n        )\n    cursor.close()\n    pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/roads/merge_roads.py",
    "content": "\"\"\"Compare the REST service with our current database.\"\"\"\n\nfrom datetime import timedelta\n\nimport httpx\nimport pandas as pd\nfrom ingest_roads_rest import LOG, URI\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import utc\nfrom shapely.geometry import LineString, MultiLineString\n\n\ndef main():\n    \"\"\"Go Main, please\"\"\"\n    pgconn = get_dbconn(\"postgis\")\n    cursor = pgconn.cursor()\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n    SELECT idot_id, longname from roads_base\n    where (archive_end is null or archive_end > now())\n            \"\"\"),\n            conn,\n            index_col=\"idot_id\",\n        )\n    LOG.info(\"found %s rows from roads_base\", len(df.index))\n    resp = httpx.get(URI, timeout=30)\n    jobj = resp.json()\n    archive_begin = utc()\n    for feat in jobj[\"features\"]:\n        props = feat[\"attributes\"]\n        idot_id = props[\"SEGMENT_ID\"]\n        if idot_id in df.index:\n            continue\n        # Geometry is [[pt]] and we only have single segments\n        path = MultiLineString([LineString(feat[\"geometry\"][\"paths\"][0])])\n        # segid is defined by the database insert\n        major = props[\"ROUTE_NAME\"].replace(\"US 61 Business\", \"US 61\")\n        minor = props[\"NAMEID\"].split(\"--\", 1)[1]\n        (typ, num) = major.replace(\"-\", \" \").split()\n        int1 = num if typ == \"I\" else None\n        us1 = num if typ == \"US\" else None\n        st1 = num if typ == \"IA\" else None\n        if major == \"Airline Highway\":\n            num = 0\n        sys_id = props[\"ROUTE_RANK\"]\n        longname = props[\"LONG_NAME\"]\n        geom = (\n            f\"ST_Transform(ST_SetSrid(ST_GeomFromText('{path.wkt}'), 3857), \"\n            \"26915)\"\n        )\n        LOG.info(\"idot_id %s [%s] is new\", idot_id, major)\n        cursor.execute(\n            f\"\"\"\n            INSERT into roads_base (major, minor, us1, st1, int1, type,\n            longname, geom, idot_id, archive_begin, archive_end)\n            VALUES (%s, %s, %s, %s, %s, %s, %s, {geom},\n            %s, %s, %s) RETURNING segid\n        \"\"\",\n            (\n                major[:10],\n                minor,\n                us1,\n                st1,\n                int1,\n                sys_id,\n                longname,\n                idot_id,\n                archive_begin,\n                archive_begin + timedelta(days=365),\n            ),\n        )\n        segid = cursor.fetchone()[0]\n        cursor.execute(\n            \"\"\"\n            UPDATE roads_base\n            SET simple_geom = ST_Simplify(geom, 0.01) WHERE segid = %s\n        \"\"\",\n            (segid,),\n        )\n        # Figure out which WFO this segment is in...\n        cursor.execute(\n            \"\"\"\n            SELECT u.wfo,\n            ST_Distance(u.geom, ST_Transform(b.geom, 4326))\n            from ugcs u, roads_base b WHERE\n            substr(ugc, 1, 2) = 'IA' and b.segid = %s\n            and u.end_ts is null ORDER by ST_Distance ASC\n        \"\"\",\n            (segid,),\n        )\n        wfo = cursor.fetchone()[0]\n        cursor.execute(\n            \"UPDATE roads_base SET wfo = %s WHERE segid = %s\", (wfo, segid)\n        )\n        # Add a roads_current entry, 85 is a hack\n        cursor.execute(\n            \"\"\"\n            INSERT into roads_current(segid, valid, cond_code)\n            VALUES (%s, %s, 0)\n        \"\"\",\n            (segid, archive_begin),\n        )\n    cursor.close()\n    pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/rtma/rtma_backfill.py",
    "content": "\"\"\"Ensure that our RTMA files have all we need.\n\nCalled from RUN_2AM.sh for 3 days ago.\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timezone\n\nimport click\nimport httpx\nimport pygrib\nfrom pyiem.util import archive_fetch, logger\n\nLOG = logger()\nARCHIVE_SWITCH = datetime(2020, 5, 16, tzinfo=timezone.utc)\nWMO_XREF = {\n    \"PRES\": \"LPIA98\",\n    \"DPT\": \"LRIA98\",\n    \"TMP\": \"LTIA98\",\n    \"UGRD\": \"LUIA98\",\n    \"VGRD\": \"LVIA98\",\n}\nGRIB_XREF = {\n    \"TMP\": \"2t\",\n    \"UGRD\": \"10u\",\n    \"VGRD\": \"10v\",\n    \"DPT\": \"2d\",\n    \"PRES\": \"sp\",\n}\n\n\ndef workflow(now: datetime):\n    \"\"\"Run for a given date.\"\"\"\n    ppath = now.strftime(\"%Y/%m/%d/model/rtma/%H/rtma.t%Hz.awp2p5f000.grib2\")\n    with archive_fetch(ppath) as fn:\n        if fn is None:\n            jobs = list(WMO_XREF.keys())\n        else:\n            jobs = []\n            with pygrib.open(fn) as grbs:\n                for key, sn in GRIB_XREF.items():\n                    try:\n                        _ = grbs.select(\n                            shortName=sn, typeOfGeneratingProcess=0\n                        )[0].values\n                    except Exception:\n                        jobs.append(key)\n    if jobs:\n        LOG.warning(\"%s jobs %s\", now, jobs)\n    for key in jobs:\n        url = (\n            \"https://www.ncei.noaa.gov/data/national-digital-guidance-\"\n            f\"database/access/{'historical/' if now < ARCHIVE_SWITCH else ''}\"\n            f\"{now:%Y%m}/{now:%Y%m%d}/\"\n            f\"{WMO_XREF[key]}_KWBR_{now:%Y%m%d%H%M}\"\n        )\n        LOG.info(\"Downloading %s\", url)\n        try:\n            resp = httpx.get(url, timeout=60)\n            resp.raise_for_status()\n        except Exception as exp:\n            LOG.info(\"Failed to get %s got %s\", url, exp)\n            continue\n        # We need to inspect this file as we do not want the forecast\n        # analysis error grib data, ie some of these files have 2 messages\n        with tempfile.NamedTemporaryFile(delete=False) as fh:\n            fh.write(resp.content)\n        try:\n            with pygrib.open(fh.name) as grbs:\n                msgs = grbs.select(\n                    shortName=GRIB_XREF[key],\n                    typeOfGeneratingProcess=0,\n                )\n                if not msgs:\n                    LOG.info(\"No %s found in %s\", key, fh.name)\n                    os.unlink(fh.name)\n                    continue\n                if grbs.messages > 1:\n                    LOG.info(\"Found %s messages, trimming\", grbs.messages)\n                    with open(fh.name, \"wb\") as fh2:\n                        fh2.write(msgs[0].tostring())\n                # Caution, we don't use -i here as this name is not unique\n                cmd = [\n                    \"pqinsert\",\n                    \"-p\",\n                    f\"data u {now:%Y%m%d%H%M} unused model/rtma/{now:%H}/\"\n                    f\"rtma.t{now:%H}z.awp2p5f000.grib2 grib2\",\n                    fh.name,\n                ]\n                subprocess.call(cmd)\n        except Exception:\n            LOG.warning(\"%s not found in %s\", key, fn)\n        os.unlink(fh.name)\n\n\n@click.command()\n@click.option(\n    \"--date\", \"dt\", type=click.DateTime(), help=\"Specify UTC valid time\"\n)\ndef main(dt: datetime):\n    \"\"\"Go Main Go.\"\"\"\n    dt = dt.replace(tzinfo=timezone.utc)\n    with tempfile.TemporaryDirectory() as _tmpdir:\n        os.chdir(_tmpdir)\n        for hr in range(24):\n            workflow(dt.replace(hour=hr))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/rtma/wind_power.py",
    "content": "\"\"\"\nGenerate a plot of current wind power potential\n\nThis would involve converting wind velocity to m/s, multiply it by 1.35 to\nextrapolate to 80 m, cubing that value, and multiplying it by 0.002641\n(using the common GE 1.5-MW extra-long extended model turbine) to show the\npotential wind power generation in MW (without taking into account the\ncapacity factor).\n\nRUN from RUN_40_AFTER.sh\n\n\"\"\"\n\nimport time\nfrom datetime import datetime, timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport numpy as np\nimport pygrib\nfrom pyiem.plot import MapPlot\nfrom pyiem.util import archive_fetch, logger, utc\n\nLOG = logger()\nLEVELS = [\n    0.0,\n    0.01,\n    0.1,\n    0.25,\n    0.5,\n    0.75,\n    1,\n    1.25,\n    1.5,\n    2,\n    2.5,\n    3,\n    4,\n    5,\n    7,\n    10,\n    20,\n    30,\n    40,\n    50,\n]\n\n\ndef run(ts, routes):\n    \"\"\"Run for a given UTC timestamp\"\"\"\n    ppath = ts.strftime(\"%Y/%m/%d/model/rtma/%H/rtma.t%Hz.awp2p5f000.grib2\")\n    with archive_fetch(ppath) as fn:\n        if fn is None:\n            LOG.info(\"File Not Found: %s\", fn)\n            return\n\n        with pygrib.open(fn) as grbs:\n            try:\n                u = grbs.select(name=\"10 metre U wind component\")[0]\n                v = grbs.select(name=\"10 metre V wind component\")[0]\n            except Exception as exp:\n                LOG.info(\n                    \"Missing u/v wind for wind_power.py\\nFN: %s\\n%s\", fn, exp\n                )\n                return\n            mag = np.hypot(u[\"values\"], v[\"values\"])\n\n            mag = (mag * 1.35) ** 3 * 0.002641\n            # 0.002641\n\n            lats, lons = u.latlons()\n    lts = ts.astimezone(ZoneInfo(\"America/Chicago\"))\n    pqstr = (\n        f\"plot {routes} {ts:%Y%m%d%H}00 midwest/rtma_wind_power.png \"\n        f\"midwest/rtma_wind_power_{ts:%H}00.png png\"\n    )\n    mp = MapPlot(\n        sector=\"midwest\",\n        title=(\n            \"Wind Power Potential :: (speed_mps_10m * 1.35)$^3$ * 0.002641\"\n        ),\n        subtitle=(\n            f\"valid: {lts:%d %b %Y %I %p} based on \"\n            \"NOAA Realtime Mesoscale Analysis\"\n        ),\n    )\n    mp.pcolormesh(lons, lats, mag, np.array(LEVELS), units=\"MW\")\n\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), help=\"Specify UTC valid time\")\ndef main(valid: datetime | None):\n    \"\"\"Main()\"\"\"\n    if valid is not None:\n        now = valid.replace(tzinfo=timezone.utc)\n        routes = \"a\"\n    else:\n        now = utc() - timedelta(hours=1)\n        routes = \"ac\"\n        # the 3z RTMA is always late, so we shall wait\n        if now.hour == 3:\n            time.sleep(60 * 10)\n\n    run(now, routes)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/sbw/compute_shared_border_pct.py",
    "content": "\"\"\"Compute Shared Border Percentage for SBWs.\n\nThis was shunted from IEM Cow as it was too expensive to compute.\n\nRun from RUN_5MIN.sh\n\"\"\"\n\nimport click\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\n@click.command()\n@click.option(\"--year\", type=int, default=2020, help=\"Year to compute for\")\ndef main(year: int):\n    \"\"\"Go Main Go.\"\"\"\n    sbw_table = f\"sbw_{year}\"\n    warning_table = f\"warnings_{year}\"\n    # Flood Warnings FL/FA have ugly metadata between the tables :/\n    # like\n    sql = \"\"\"\n    WITH stormbased as (\n        SELECT ctid, geom, wfo, eventid, phenomena, significance,\n        least(polygon_begin, expire) as valid, status,\n        ST_Length(st_transform(ST_exteriorring(ST_geometryn(\n                        ST_multi(geom),1)), 2163)) as length\n        from {sbw_table} WHERE shared_border_pct is null and\n        phenomena in ('SV', 'TO', 'FF', 'MA', 'DS', 'SQ') limit 10000),\n    countybased as (\n        SELECT ST_Union(ST_ReducePrecision(u.simple_geom, 0.01)) as geom,\n        s.ctid as s_ctid, w.wfo, w.phenomena, w.eventid, w.significance\n        from {warning_table} w, ugcs u, stormbased s where\n        s.wfo = w.wfo and s.eventid = w.eventid and s.phenomena = w.phenomena\n        and s.significance = w.significance and s.valid >= w.issue and\n        s.valid < w.expire + (case when s.status in ('EXP', 'CAN')\n        then '1 minute'::interval else '0 minute'::interval end)\n        and u.gid = w.gid and w.gid is not null\n        GROUP by w.wfo, w.phenomena, w.eventid, w.significance, s.ctid),\n    agg as (\n        SELECT ST_SetSRID(ST_intersection(\n                    ST_buffer(ST_exteriorring(\n                        ST_geometryn(ST_multi(c.geom),1)),0.02),\n                    ST_exteriorring(ST_geometryn(\n                        ST_multi(s.geom),1))), 4326) as geo,\n        s.ctid as s_ctid, s.length, s.eventid\n        from stormbased s, countybased c WHERE\n        s.ctid = c.s_ctid\n    )\n\n    SELECT sum(ST_Length(ST_transform(geo,2163))) as shared_length,\n    max(coalesce(length, 0)) as perimeter, s_ctid from agg GROUP by s_ctid\n    \"\"\"\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        res = conn.execute(\n            sql_helper(sql, sbw_table=sbw_table, warning_table=warning_table)\n        )\n        LOG.info(\"Found %s entries to process for %s\", res.rowcount, year)\n        for row in res.mappings():\n            value = min(row[\"shared_length\"] / row[\"perimeter\"] * 100.0, 100)\n            conn.execute(\n                sql_helper(\n                    \"update {sbw_table} SET \"\n                    \"shared_border_pct = :value where ctid = :ctid\",\n                    sbw_table=sbw_table,\n                ),\n                {\"value\": value, \"ctid\": row[\"s_ctid\"]},\n            )\n        conn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/sbw/raccoon_sbw_to_ppt.py",
    "content": "\"\"\"Generate a Powerpoint file for an event.\n\nThis script looks for queued jobs within the database and runs them\nsequentially each minute\n\nCalled from RUN_1MIN.sh\n\"\"\"\n\nimport os\nimport random\nimport shutil\nimport subprocess\nfrom datetime import datetime, timedelta\n\nimport click\nfrom odf.draw import Frame, Image, Page, TextBox\nfrom odf.opendocument import OpenDocumentPresentation\nfrom odf.style import (\n    GraphicProperties,\n    MasterPage,\n    PageLayout,\n    PageLayoutProperties,\n    ParagraphProperties,\n    Style,\n    TextProperties,\n)\nfrom odf.text import P\nfrom pyiem.database import get_dbconnc, get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import logger, utc\n\nos.putenv(\"DISPLAY\", \"localhost:1\")\n\nLOG = logger()\n__REV__ = \"12Oct2024\"\nTMPDIR = \"/mesonet/tmp\"\nSUPER_RES = datetime(2010, 3, 1)\nN0B_SWITCH = datetime(2022, 5, 16)\n\n\ndef test_job():\n    \"\"\"For command line testing, lets provide a dummy job\"\"\"\n    return [\n        {\n            \"wfo\": \"FSD\",\n            \"radar\": \"FSD\",\n            \"wtype\": \"SV,TO\",\n            \"sts\": datetime(2003, 6, 24, 2),\n            \"ets\": datetime(2003, 6, 24, 4),\n            \"jobid\": random.randint(1, 1000000),\n            \"nexrad_product\": \"N0U\",\n        }\n    ]\n\n\ndef add_job(row):\n    \"\"\"Add back a job\"\"\"\n    pgconn, mcursor = get_dbconnc(\"mesosite\")\n    LOG.warning(\"setting racoon jobid: %s back to unprocessed\", row[\"jobid\"])\n    mcursor.execute(\n        \"UPDATE racoon_jobs SET processed = False WHERE jobid = %s\",\n        (row[\"jobid\"],),\n    )\n    mcursor.close()\n    pgconn.commit()\n\n\ndef check_for_work() -> list:\n    \"\"\"See if we have any requests to process!\"\"\"\n    pgconn, mcursor = get_dbconnc(\"mesosite\")\n    mcursor2 = pgconn.cursor()\n    mcursor.execute(\n        \"SELECT jobid, wfo, radar, sts at time zone 'UTC' as sts, \"\n        \"ets at time zone 'UTC' as ets, nexrad_product, wtype \"\n        \"from racoon_jobs WHERE processed = False\"\n    )\n    jobs = []\n    for row in mcursor:\n        jobs.append(row)\n        mcursor2.execute(\n            \"UPDATE racoon_jobs SET processed = True WHERE jobid = %s\",\n            (row[\"jobid\"],),\n        )\n    pgconn.commit()\n    pgconn.close()\n    return jobs\n\n\ndef get_warnings(sts: datetime, ets: datetime, wfo, wtypes):\n    \"\"\"Retreive an array of warnings for this time period and WFO\"\"\"\n    params = {\n        \"wtypes\": wtypes.split(\",\"),\n        \"year\": sts.year,\n        \"sts\": sts,\n        \"ets\": ets,\n        \"wfo\": wfo,\n    }\n\n    with get_sqlalchemy_conn(\"postgis\") as conn:\n        res = conn.execute(\n            sql_helper(\"\"\"\n    WITH stormbased as (\n        SELECT phenomena, eventid, issue, expire,\n        ST_Area(ST_Transform(geom,9311))/1000000.0 as polyarea\n        from sbw WHERE vtec_year = :year and issue BETWEEN :sts and :ets and\n        wfo = :wfo and phenomena = ANY(:wtypes) and significance = 'W'\n        and status = 'NEW'\n    ), countybased as (\n        SELECT phenomena, eventid,\n        sum(ST_Area(ST_Transform(u.geom,9311))/1000000.0) as countyarea\n        from warnings w JOIN ugcs u on (u.gid = w.gid) WHERE vtec_year = :year\n        and issue BETWEEN :sts and :ets and\n        w.wfo = :wfo and phenomena = ANY(:wtypes) and significance = 'W'\n        GROUP by phenomena, eventid\n    )\n\n    SELECT s.phenomena, s.eventid,\n    s.issue at time zone 'UTC' as issue,\n    s.expire at time zone 'UTC' as expire, s.polyarea,\n    c.countyarea from stormbased s JOIN countybased c\n    on (c.eventid = s.eventid and c.phenomena = s.phenomena)\n    \"\"\"),\n            params,\n        )\n        rows = res.mappings().fetchall()\n    return rows\n\n\ndef do_job(job):\n    \"\"\"Do something\"\"\"\n    warnings = get_warnings(job[\"sts\"], job[\"ets\"], job[\"wfo\"], job[\"wtype\"])\n\n    mydir = os.path.join(TMPDIR, f\"{job['jobid']}\")\n    if not os.path.isdir(mydir):\n        os.makedirs(mydir)\n    os.chdir(mydir)\n\n    basefn = (\n        f\"{job['wfo']}-{job['wtype'].replace(',', '_')}-{job['radar']}-\"\n        f\"{job['sts']:%Y%m%d%H}-{job['ets']:%Y%m%d%H}\"\n    )\n    outputfile = f\"{basefn}.odp\"\n\n    doc = OpenDocumentPresentation()\n\n    # We must describe the dimensions of the page\n    pagelayout = PageLayout(name=\"MyLayout\")\n    doc.automaticstyles.addElement(pagelayout)\n    pagelayout.addElement(\n        PageLayoutProperties(\n            margin=\"0pt\",\n            pagewidth=\"800pt\",\n            pageheight=\"600pt\",\n            printorientation=\"landscape\",\n        )\n    )\n\n    # Style for the title frame of the page\n    # We set a centered 34pt font with yellowish background\n    titlestyle = Style(name=\"MyMaster-title2\", family=\"presentation\")\n    titlestyle.addElement(ParagraphProperties(textalign=\"center\"))\n    titlestyle.addElement(TextProperties(fontsize=\"34pt\"))\n    titlestyle.addElement(GraphicProperties(fillcolor=\"#ffff99\"))\n    doc.styles.addElement(titlestyle)\n\n    # Style for the title frame of the page\n    # We set a centered 34pt font with yellowish background\n    indexstyle = Style(name=\"MyMaster-title\", family=\"presentation\")\n    indexstyle.addElement(ParagraphProperties(textalign=\"center\"))\n    indexstyle.addElement(TextProperties(fontsize=\"28pt\"))\n    indexstyle.addElement(\n        GraphicProperties(fillcolor=\"#ffffff\", stroke=\"none\")\n    )\n    doc.styles.addElement(indexstyle)\n\n    # Style for the photo frame\n    photostyle = Style(name=\"MyMaster-photo\", family=\"presentation\")\n    doc.styles.addElement(photostyle)\n\n    # Every drawing page must have a master page assigned to it.\n    masterpage = MasterPage(name=\"MyMaster\", pagelayoutname=pagelayout)\n    doc.masterstyles.addElement(masterpage)\n\n    dpstyle = Style(name=\"dp1\", family=\"drawing-page\")\n    doc.automaticstyles.addElement(dpstyle)\n\n    # Title slide\n    page = Page(masterpagename=masterpage)\n    doc.presentation.addElement(page)\n    frame = Frame(\n        stylename=indexstyle, width=\"720pt\", height=\"500pt\", x=\"40pt\", y=\"10pt\"\n    )\n    page.addElement(frame)\n    textbox = TextBox()\n    frame.addElement(textbox)\n    textbox.addElement(P(text=\"IEM Raccoon Report\"))\n\n    frame = Frame(\n        stylename=indexstyle,\n        width=\"720pt\",\n        height=\"500pt\",\n        x=\"40pt\",\n        y=\"150pt\",\n    )\n    page.addElement(frame)\n    textbox = TextBox()\n    frame.addElement(textbox)\n    textbox.addElement(P(text=f\"WFO: {job['wfo']}\"))\n    textbox.addElement(\n        P(text=f\"Radar: {job['radar']} Product: {job['nexrad_product']}\")\n    )\n    textbox.addElement(P(text=f\"Phenomenas: {job['wtype']}\"))\n    textbox.addElement(P(text=f\"Start Time: {job['sts']:%d %b %Y %H} UTC\"))\n    textbox.addElement(P(text=f\"End Time: {job['ets']:%d %b %Y %H} UTC\"))\n    textbox.addElement(P(text=\"\"))\n    textbox.addElement(P(text=f\"Raccoon Version: {__REV__}\"))\n    textbox.addElement(P(text=f\"Generated on: {utc():%d %b %Y %H:%M %Z}\"))\n    textbox.addElement(P(text=\"\"))\n    textbox.addElement(\n        P(text=\"Bugs/Comments/Yelling?: daryl herzmann akrherz@iastate.edu\")\n    )\n\n    i = 0\n    for warning in warnings:\n        # Make Index page for the warning\n        page = Page(masterpagename=masterpage)\n        doc.presentation.addElement(page)\n        titleframe = Frame(\n            stylename=indexstyle,\n            width=\"700pt\",\n            height=\"500pt\",\n            x=\"10pt\",\n            y=\"10pt\",\n        )\n        page.addElement(titleframe)\n        textbox = TextBox()\n        titleframe.addElement(textbox)\n        textbox.addElement(\n            P(\n                text=(\n                    f\"{job['sts']:%Y}.O.NEW.K{job['wfo']}.\"\n                    f\"{warning['phenomena']}.W.{warning['eventid']:04.0f}\"\n                )\n            )\n        )\n        textbox.addElement(\n            P(text=f\"Issue: {warning['issue']:%d %b %Y %H:%M} UTC\")\n        )\n        textbox.addElement(\n            P(text=f\"Expire: {warning['expire']:%d %b %Y %H:%M} UTC\")\n        )\n        zz = warning[\"polyarea\"] / warning[\"countyarea\"] * 100.0\n        textbox.addElement(\n            P(\n                text=(\n                    f\"Poly Area: {warning['polyarea']:.1f} sq km \"\n                    f\"({(warning['polyarea'] * 0.386102):.1f} sq mi) \"\n                    f\"[{zz:.1f}% vs County]\"\n                )\n            )\n        )\n        zz = warning[\"countyarea\"] * 0.386102\n        textbox.addElement(\n            P(\n                text=(\n                    f\"County Area: {warning['countyarea']:.1f} \"\n                    f\"square km ({zz:.1f} square miles)\"\n                )\n            )\n        )\n\n        url = (\n            \"http://iem.local/GIS/radmap.php?\"\n            \"layers[]=places&layers[]=legend&layers[]=ci&layers[]=cbw\"\n            \"&layers[]=sbw&layers[]=uscounties&layers[]=bufferedlsr\"\n            f\"&lsrbuffer=15&vtec={job['sts']:%Y}.O.NEW.K{job['wfo']}.\"\n            f\"{warning['phenomena']}.W.{warning['eventid']:04.0f}\"\n        )\n        subprocess.call([\"wget\", \"-q\", \"-O\", f\"{i}.png\", url])\n        photoframe = Frame(\n            stylename=photostyle,\n            width=\"480pt\",\n            height=\"360pt\",\n            x=\"160pt\",\n            y=\"200pt\",\n        )\n        page.addElement(photoframe)\n        href = doc.addPicture(f\"{i}.png\")\n        photoframe.addElement(Image(href=href))\n        i += 1\n\n        times = []\n        now = warning[\"issue\"]\n        while now < warning[\"expire\"]:\n            times.append(now)\n            now += timedelta(minutes=15)\n        times.append(warning[\"expire\"] - timedelta(minutes=1))\n\n        for now in times:\n            page = Page(stylename=dpstyle, masterpagename=masterpage)\n            doc.presentation.addElement(page)\n            titleframe = Frame(\n                stylename=titlestyle,\n                width=\"720pt\",\n                height=\"56pt\",\n                x=\"40pt\",\n                y=\"10pt\",\n            )\n            page.addElement(titleframe)\n            textbox = TextBox()\n            titleframe.addElement(textbox)\n            textbox.addElement(\n                P(\n                    text=(\n                        f\"{warning['phenomena']}.W.{warning['eventid']:04.0f} \"\n                        f\"Time: {now:%d %b %Y %H%M} UTC\"\n                    )\n                )\n            )\n\n            if job[\"nexrad_product\"] == \"N0U\":\n                if now < SUPER_RES:\n                    n0qn0r = \"N0V\"\n                elif now < N0B_SWITCH:\n                    n0qn0r = \"N0U\"\n                else:\n                    n0qn0r = \"N0S\"\n            else:\n                if now < SUPER_RES:\n                    n0qn0r = \"N0R\"\n                elif now < N0B_SWITCH:\n                    n0qn0r = \"N0Q\"\n                else:\n                    n0qn0r = \"N0B\"\n            zz = now + timedelta(minutes=15)\n            url = (\n                \"http://iem.local/GIS/radmap.php?layers[]=ridge&\"\n                f\"ridge_product={n0qn0r}&ridge_radar={job['radar']}&\"\n                \"layers[]=sbw&layers[]=sbwh&layers[]=uscounties&\"\n                f\"layers[]=lsrs&ts2={zz:%Y%m%d%H%M}&vtec=\"\n                f\"{job['sts']:%Y}.O.NEW.K{job['wfo']}.{warning['phenomena']}.\"\n                f\"W.{warning['eventid']:04.0f}&ts={now:%Y%m%d%H%M}\"\n            )\n            subprocess.call([\"wget\", \"-q\", \"-O\", f\"{i}.png\", url])\n            photoframe = Frame(\n                stylename=photostyle,\n                width=\"640pt\",\n                height=\"480pt\",\n                x=\"80pt\",\n                y=\"70pt\",\n            )\n            page.addElement(photoframe)\n            href = doc.addPicture(f\"{i}.png\")\n            photoframe.addElement(Image(href=href))\n            i += 1\n\n    doc.save(outputfile)\n    subprocess.call([\"unoconv\", \"-f\", \"ppt\", outputfile])\n    pptfn = f\"{basefn}.ppt\"\n    LOG.warning(\"Generated %s with %s slides\", pptfn, i)\n    if os.path.isfile(pptfn):\n        LOG.warning(\"...copied to webfolder\")\n        shutil.copyfile(pptfn, f\"/mesonet/share/pickup/raccoon/{pptfn}\")\n        # Cleanup\n        os.chdir(TMPDIR)\n        subprocess.call([\"rm\", \"-rf\", f\"{job['jobid']}\"])\n    else:\n        LOG.warning(\"Uh oh, no output file, lets kill soffice.bin\")\n        subprocess.call([\"pkill\", \"--signal\", \"9\", \"soffice.bin\"])\n        add_job(job)\n\n\n@click.command()\n@click.option(\"--test\", is_flag=True, help=\"Run a test job\")\ndef main(test: bool):\n    \"\"\"Do main\"\"\"\n    if test:\n        jobs = test_job()\n    else:\n        jobs = check_for_work()\n    for job in jobs:\n        do_job(job)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/scan/init_stations.py",
    "content": "\"\"\"Pull in what NRCS has for stations.\"\"\"\n\nimport httpx\nfrom pyiem.database import get_dbconnc\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import convert_value, logger\n\nATTRNAME = \"AWDB.DATA_TIME_ZONE\"\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    mesosite, mcursor = get_dbconnc(\"mesosite\")\n    nt = NetworkTable(\"SCAN\", only_online=False)\n    entries = httpx.get(\n        \"https://wcc.sc.egov.usda.gov/awdbRestApi/services/v1/stations?\"\n        \"activeOnly=true&returnForecastPointMetadata=false&\"\n        \"returnReservoirMetadata=false&returnStationElements=false\",\n        timeout=30,\n    ).json()\n    for meta in entries:\n        if meta[\"networkCode\"] != \"SCAN\":\n            continue\n        station = f\"S{int(meta['stationId']):04d}\"\n        data_time_zone = int(meta[\"dataTimeZone\"])\n        if station in nt.sts:\n            # Ensure that the data timezone is correct\n            curval = int(nt.sts[station][\"attributes\"].get(ATTRNAME, -99))\n            if curval != data_time_zone:\n                LOG.info(\"New %s %s %s\", station, ATTRNAME, data_time_zone)\n                mcursor.execute(\n                    \"DELETE from station_attributes where \"\n                    \"iemid = %s and attr = %s\",\n                    (nt.sts[station][\"iemid\"], ATTRNAME),\n                )\n                mcursor.execute(\n                    \"INSERT into station_attributes(iemid, attr, value) \"\n                    \"VALUES (%s, %s, %s)\",\n                    (nt.sts[station][\"iemid\"], ATTRNAME, data_time_zone),\n                )\n\n            continue\n        print(f\"Adding {station} {meta['name']}\")\n        mcursor.execute(\n            \"INSERT into stations(id, name, network, online, country, \"\n            \"state, plot_name, elevation, metasite, geom) \"\n            \"VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, \"\n            \"ST_Point(%s, %s, 4326))\",\n            (\n                station,\n                meta[\"name\"],\n                \"SCAN\",\n                \"t\",\n                \"US\",\n                meta[\"stateCode\"],\n                meta[\"name\"],\n                convert_value(meta[\"elevation\"], \"foot\", \"meter\"),\n                \"f\",\n                meta[\"longitude\"],\n                meta[\"latitude\"],\n            ),\n        )\n    mcursor.close()\n    mesosite.commit()\n    mesosite.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/scan/scan_ingest.py",
    "content": "\"\"\"Download and process the scan dataset.\n\nThe data is provided in a standard local timestamp, yikes.\n\nCalled from RUN_40_AFTER.sh\n\"\"\"\n\nimport sys\nfrom datetime import datetime, timedelta\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport httpx\nimport numpy as np\nimport pandas as pd\nfrom metpy.calc import dewpoint_from_relative_humidity\nfrom metpy.units import units\nfrom pyiem.database import get_dbconnc\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.observation import Observation\nfrom pyiem.util import convert_value, logger, utc\nfrom tqdm import tqdm\n\nLOG = logger()\nSERVICE = \"https://wcc.sc.egov.usda.gov/awdbRestApi/services/v1/data\"\nALLCOLS = (\n    \"RHUM  SMS2  SMS20  SMS4  SMS40  SMS8   SRADV  STO2  STO20  STO4  STO40 \"\n    \"STO8  TOBS  WDIRV  WSPDV  WSPDX PCPN\"\n).split()\nMAPPING = {\n    \"RHUM\": \"relh\",\n    \"SMS2\": \"c1smv\",\n    \"SMS4\": \"c2smv\",\n    \"SMS8\": \"c3smv\",\n    \"SMS20\": \"c4smv\",\n    \"SMS40\": \"c5smv\",\n    \"STO2\": \"c1tmpf\",\n    \"STO4\": \"c2tmpf\",\n    \"STO8\": \"c3tmpf\",\n    \"STO20\": \"c4tmpf\",\n    \"STO40\": \"c5tmpf\",\n    \"SRADV\": \"srad\",\n    \"TOBS\": \"tmpf\",\n    \"WDIRV\": \"drct\",\n    \"WSPDV\": \"sknt\",\n    \"WSPDX\": \"gust\",\n    \"PCPN\": \"phour\",\n}\n\n\ndef save_row(sid, meta, valid, row, icursor, scursor):\n    \"\"\"\n    Save away our data into IEM Access\n    \"\"\"\n    iem = Observation(iemid=meta[\"iemid\"], valid=valid, tzname=meta[\"tzname\"])\n    for key, val in MAPPING.items():\n        iem.data[val] = row[key] if not pd.isna(row[key]) else None\n    iem.data[\"dwpf\"] = row[\"dwpf\"]\n    # Old data should not go through this logic as we will have a daily update\n    if valid > (utc() - timedelta(hours=23)) and not iem.save(icursor):\n        LOG.info(\"iemaccess sid: %s ts: %s updated no rows\", sid, valid)\n\n    scursor.execute(\n        \"DELETE from alldata WHERE station = %s and valid = %s\",\n        (sid, valid),\n    )\n    scursor.execute(\n        \"\"\"INSERT into alldata(station, valid, tmpf, dwpf, srad, sknt, drct,\n        relh, c1tmpf, c2tmpf, c3tmpf, c4tmpf, c5tmpf,\n        c1smv, c2smv, c3smv, c4smv, c5smv, phour) VALUES\n        (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,\n        %s, %s)\"\"\",\n        (\n            sid,\n            valid,\n            iem.data[\"tmpf\"],\n            iem.data[\"dwpf\"],\n            iem.data[\"srad\"],\n            iem.data[\"sknt\"],\n            iem.data[\"drct\"],\n            iem.data[\"relh\"],\n            iem.data[\"c1tmpf\"],\n            iem.data[\"c2tmpf\"],\n            iem.data[\"c3tmpf\"],\n            iem.data[\"c4tmpf\"],\n            iem.data[\"c5tmpf\"],\n            iem.data[\"c1smv\"],\n            iem.data[\"c2smv\"],\n            iem.data[\"c3smv\"],\n            iem.data[\"c4smv\"],\n            iem.data[\"c5smv\"],\n            iem.data[\"phour\"],\n        ),\n    )\n\n\ndef load_times(icursor):\n    \"\"\"\n    Load the latest ob times from the database\n    \"\"\"\n    # Always force a bit of reprocessing\n    icursor.execute(\n        \"SELECT t.id, valid - '2 hours'::interval as ts \"\n        \"from current c, stations t WHERE \"\n        \"t.iemid = c.iemid and t.network = 'SCAN'\"\n    )\n    data = {}\n    for row in icursor:\n        data[row[\"id\"]] = row[\"ts\"]\n    return data\n\n\n@click.command()\n@click.option(\"--reprocess\", is_flag=True, help=\"Reprocess all data\")\n@click.option(\"--date\", \"dt\", type=click.DateTime(), help=\"Specific date\")\n@click.option(\"--station\", help=\"Specific station to process\")\ndef main(reprocess: bool, dt: datetime | None, station: str | None):\n    \"\"\"Go Main Go\"\"\"\n    nt = NetworkTable(\"SCAN\", only_online=False)\n    SCAN, scursor = get_dbconnc(\"scan\")\n    ACCESS, icursor = get_dbconnc(\"iem\")\n    params = {}\n    sts = datetime.now() - timedelta(days=1)\n    if dt is not None:\n        sts = dt\n    basets = sts.replace(tzinfo=ZoneInfo(\"UTC\")) - timedelta(days=2)\n    ets = sts + timedelta(days=1)\n    params[\"beginDate\"] = sts.strftime(\"%Y-%m-%d %H:%M\")\n    params[\"endDate\"] = ets.strftime(\"%Y-%m-%d %H:%M\")\n    params[\"duration\"] = \"HOURLY\"\n    params[\"centralTendencyType\"] = \"NONE\"\n    params[\"elements\"] = \"STO:*,SMS:*,PRCP,RHUM,SRADV,TOBS,WDIRV,WSPDV,WSPDX\"\n    params[\"returnFlags\"] = \"false\"\n    params[\"returnOriginalValues\"] = \"false\"\n    params[\"returnSuspectData\"] = \"false\"\n    params[\"periodRef\"] = \"END\"\n\n    maxts = load_times(icursor)\n    progress = tqdm(nt.sts.items(), disable=not sys.stdout.isatty())\n    for sid, meta in progress:\n        if station is not None and sid != station:\n            continue\n        progress.set_description(sid)\n        offset = timedelta(\n            hours=(0 - int(meta[\"attributes\"][\"AWDB.DATA_TIME_ZONE\"]))\n        )\n        remote_id = int(sid[1:])\n        params[\"stationTriplets\"] = f\"{remote_id}:{meta['state']}:SCAN\"\n        try:\n            resp = httpx.get(SERVICE, params=params, timeout=30)\n            resp.raise_for_status()\n            jdata = resp.json()\n        except Exception as exp:\n            LOG.info(\"Failed to download: %s %s\", sid, exp)\n            continue\n        rows = []\n        for entry in jdata:\n            for data in entry[\"data\"]:\n                if data[\"stationElement\"][\"ordinal\"] != 1:\n                    continue\n                varname = data[\"stationElement\"][\"elementCode\"]\n                if varname in [\"STO\", \"SMS\"]:\n                    depth = 0 - data[\"stationElement\"][\"heightDepth\"]\n                    varname = f\"{varname}{depth}\"\n                for val in data[\"values\"]:\n                    valid = (\n                        datetime.strptime(val[\"date\"][:16], \"%Y-%m-%d %H:%M\")\n                        + offset\n                    ).replace(tzinfo=ZoneInfo(\"UTC\"))\n                    if not reprocess and valid < maxts.get(sid, basets):\n                        continue\n                    if val.get(\"value\") is None:\n                        continue\n                    value = val[\"value\"]\n                    if varname == \"RHUM\" and not 1 <= value <= 100:\n                        continue\n                    rows.append(\n                        {\"valid\": valid, \"varname\": varname, \"value\": value}\n                    )\n        if not rows:\n            continue\n        df = pd.DataFrame(rows).pivot(\n            index=\"valid\", columns=\"varname\", values=\"value\"\n        )\n        # Only unit conversion is the MPH to KTS\n        for col in [\"WSPDV\", \"WSPDX\"]:\n            if col in df.columns:\n                df[col] = convert_value(df[col], \"mph\", \"kts\")\n        # Ensure that all the columns we need are present\n        for col in ALLCOLS:\n            if col not in df.columns:\n                df[col] = np.nan\n        # Prevent bad temperatures from cascading into dewpoint calculations\n        df[\"TOBS\"] = df[\"TOBS\"].clip(lower=-100, upper=150)\n        if df[\"TOBS\"].isna().all() or df[\"RHUM\"].isna().all():\n            df[\"dwpf\"] = np.nan\n        else:\n            df[\"dwpf\"] = (\n                dewpoint_from_relative_humidity(\n                    units(\"degF\") * df[\"TOBS\"].values,\n                    units(\"percent\") * df[\"RHUM\"].values,\n                )\n                .to(units(\"degF\"))\n                .m\n            )\n        for valid, row in df.iterrows():\n            save_row(sid, meta, valid, row, icursor, scursor)\n        icursor.close()\n        scursor.close()\n        ACCESS.commit()\n        SCAN.commit()\n        icursor = ACCESS.cursor()\n        scursor = SCAN.cursor()\n\n    icursor.close()\n    scursor.close()\n    ACCESS.commit()\n    SCAN.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/season/plot_4month_stage4.py",
    "content": "\"\"\"\nGenerate a number of plots showing:\n 1) Last 4 month's precipitation\n 2) Normal for past 4 months\n 3) Departure for this period\n\n We care about 4 months as it is used in drought analysis\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport numpy as np\nfrom pyiem import iemre\nfrom pyiem.plot import MapPlot, get_cmap\nfrom pyiem.util import ncopen\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    # Run for a period of 121 days\n    ets = datetime.now() - timedelta(days=1)\n    sts = ets - timedelta(days=121)\n\n    # Get the normal accumm\n    with ncopen(iemre.get_dailyc_ncname(\"\"), \"r\") as cnc:\n        lons = cnc.variables[\"lon\"][:]\n        lats = cnc.variables[\"lat\"][:]\n        index0 = iemre.daily_offset(sts)\n        index1 = iemre.daily_offset(ets)\n        if index1 < index0:  # Uh oh, we are spanning a year\n            clprecip = np.sum(cnc.variables[\"p01d\"][:index1, :, :], 0)\n            clprecip = clprecip + np.sum(\n                cnc.variables[\"p01d\"][index0:, :, :], 0\n            )\n        else:\n            clprecip = np.sum(cnc.variables[\"p01d\"][index0:index1, :, :], 0)\n\n    # Get the observed precip\n    if sts.year != ets.year:  # spanner, darn\n        with ncopen(iemre.get_daily_ncname(sts.year)) as onc:\n            obprecip = np.sum(onc.variables[\"p01d\"][index0:, :, :], 0)\n        with ncopen(iemre.get_daily_ncname(ets.year)) as onc:\n            obprecip = obprecip + np.sum(\n                onc.variables[\"p01d\"][:index1, :, :], 0\n            )\n    else:\n        ncfn = iemre.get_daily_ncname(sts.year)\n        with ncopen(ncfn, \"r\") as onc:\n            obprecip = np.sum(onc.variables[\"p01d\"][index0:index1, :, :], 0)\n\n    lons, lats = np.meshgrid(lons, lats)\n\n    # Plot departure from normal\n    mp = MapPlot(\n        sector=\"midwest\",\n        title=f\"Precipitation Departure {sts:%b %d %Y} - {ets:%b %d %Y}\",\n        subtitle=\"based on IEM Estimates\",\n    )\n\n    mp.pcolormesh(\n        lons,\n        lats,\n        (obprecip - clprecip) / 25.4,\n        np.arange(-10, 10, 1),\n        cmap=get_cmap(\"RdBu\"),\n    )\n    mp.postprocess(pqstr=\"plot c 000000000000 summary/4mon_diff.png bogus png\")\n    mp.close()\n\n    # Plot normals\n    mp = MapPlot(\n        sector=\"midwest\",\n        title=f\"Normal Precipitation:: {sts:%b %d %Y} - {ets:%b %d %Y}\",\n        subtitle=\"based on IEM Estimates\",\n    )\n\n    mp.pcolormesh(lons, lats, (clprecip) / 25.4, np.arange(0, 30, 2))\n    mp.postprocess(\n        pqstr=\"plot c 000000000000 summary/4mon_normals.png bogus png\"\n    )\n    mp.close()\n\n    # Plot Obs\n    mp = MapPlot(\n        sector=\"midwest\",\n        title=f\"Estimated Precipitation:: {sts:%b %d %Y} - {ets:%b %d %Y}\",\n        subtitle=\"based on IEM Estimates\",\n    )\n\n    mp.pcolormesh(lons, lats, (obprecip) / 25.4, np.arange(0, 30, 2))\n    mp.postprocess(\n        pqstr=\"plot c 000000000000 summary/4mon_stage4obs.png bogus png\"\n    )\n    mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/season/plot_cli_jul1_snow.py",
    "content": "\"\"\"Plot CLI snow\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.plot import MapPlot\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n        select station, st_x(geom), st_y(geom), snow_jul1, snow_jul1_normal\n        from cli_data c JOIN stations t on (t.id = c.station)\n        WHERE c.valid = 'YESTERDAY' and t.network = 'NWSCLI'\n        and snow_jul1 is not null and snow_jul1_normal is not null\n        and t.id not in ('RAP', 'DVN', 'FGF', 'OAX', 'MPX')\n        \"\"\",\n            conn,\n            index_col=\"station\",\n        )\n    df[\"departure\"] = df[\"snow_jul1\"] - df[\"snow_jul1_normal\"]\n    df[\"colors\"] = df[\"departure\"].apply(\n        lambda x: \"#ff0000\" if x < 0 else \"#0000ff\"\n    )\n\n    yesterday = datetime.today() - timedelta(days=1)\n    year = yesterday.year if yesterday.month > 6 else yesterday.year - 1\n\n    mp = MapPlot(\n        sector=\"midwest\",\n        axisbg=\"white\",\n        title=\"NWS Total Snowfall (inches) thru %s\"\n        % (yesterday.strftime(\"%-d %B %Y\"),),\n        subtitle=(\"1 July %s - %s\")\n        % (year, datetime.today().strftime(\"%-d %B %Y\")),\n    )\n    mp.plot_values(\n        df[\"st_x\"].values,\n        df[\"st_y\"].values,\n        df[\"snow_jul1\"].values,\n        fmt=\"%.1f\",\n        labelbuffer=5,\n    )\n    pqstr = (\n        \"data ac %s0000 summary/mw_season_snowfall.png \"\n        \"mw_season_snowfall.png png\"\n    ) % (datetime.today().strftime(\"%Y%m%d\"),)\n    mp.postprocess(view=False, pqstr=pqstr)\n    mp.close()\n\n    # Depature\n    mp = MapPlot(\n        sector=\"midwest\",\n        axisbg=\"white\",\n        title=\"NWS Total Snowfall Departure (inches) thru %s\"\n        % (yesterday.strftime(\"%-d %B %Y\"),),\n        subtitle=(\"1 July %s - %s\")\n        % (year, datetime.today().strftime(\"%-d %B %Y\")),\n    )\n    mp.plot_values(\n        df[\"st_x\"].values,\n        df[\"st_y\"].values,\n        df[\"departure\"].values,\n        color=df[\"colors\"].values,\n        fmt=\"%.1f\",\n        labelbuffer=5,\n    )\n    pqstr = (\n        \"data ac %s0000 summary/mw_season_snowfall_departure.png \"\n        \"mw_season_snowfall_departure.png png\"\n    ) % (datetime.today().strftime(\"%Y%m%d\"),)\n    mp.postprocess(view=False, pqstr=pqstr)\n    mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/smos/ingest_smos.py",
    "content": "\"\"\"Ingest SMOS data, please!\"\"\"\n\nimport glob\nimport os\nimport re\nimport warnings\nfrom datetime import datetime, timezone\nfrom io import StringIO\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\nTSTAMP = re.compile(\"([0-9]{8}T[0-9]{6})\")\nwarnings.simplefilter(\"ignore\", category=DeprecationWarning)\n\n\ndef consume(scursor, fn, ts, grid_ids):\n    \"\"\"Actually process the filename at given timestamp\"\"\"\n    table = f\"data_{ts:%Y_%m}\"\n    LOG.info(\"Processing %s for table %s\", fn, table)\n    nc = ncopen(fn)\n    gpids = nc.variables[\"Grid_Point_ID\"][:]\n    sms = nc.variables[\"Soil_Moisture\"][:].tolist()\n    optdepths = nc.variables[\"Optical_Thickness_Nad\"][:].tolist()\n    chi2pds = nc.variables[\"Chi_2_P\"][:].tolist()\n    bad = 0\n    good = 0\n    data = StringIO()\n    for gpid, sm, od, chi2pd in zip(\n        gpids, sms, optdepths, chi2pds, strict=True\n    ):\n        if int(gpid) not in grid_ids:\n            continue\n        # changed 1 Feb 2018 as per guidance from Victoria\n        if chi2pd is not None and chi2pd < 0.05:\n            bad += 1\n            od = None  # noqa\n            sm = None  # noqa\n        if sm is None or sm <= 0 or sm >= 0.7:\n            sm = None  # noqa\n        if od is None or od <= 0 or od > 1:\n            od = None  # noqa\n        data.write(\n            (\"%s\\t%s\\t%s\\t%s\\n\")\n            % (\n                int(gpid),\n                ts.strftime(\"%Y-%m-%d %H:%M:%S+00\"),\n                sm or \"null\",\n                od or \"null\",\n            )\n        )\n        good += 1\n\n    data.seek(0)\n    sql = (\n        f\"copy {table}(grid_idx, valid, soil_moisture, optical_depth) \"\n        \"from stdin with null as 'null'\"\n    )\n    with scursor.copy(sql) as copy:\n        copy.write(data.getvalue())\n\n\ndef fn2datetime(fn):\n    \"\"\"Convert a filename into a datetime instance\n\n    Example: SM_OPER_MIR_SMUDP2_20161014T002122_20161014T011435_620_001_1.nc\n    \"\"\"\n    tokens = TSTAMP.findall(fn)\n    if not tokens:\n        return None\n    ts = datetime.strptime(tokens[0], \"%Y%m%dT%H%M%S\")\n    return ts.replace(tzinfo=timezone.utc)\n\n\ndef load_grid_ids(scursor, grid_ids):\n    \"\"\"Figure out which grid IDs we know.\"\"\"\n    scursor.execute(\"SELECT idx from grid\")\n    for row in scursor:\n        grid_ids.append(row[0])\n\n\ndef lookforfiles():\n    \"\"\"Look for any new data to ingest\"\"\"\n    pgconn = get_dbconn(\"smos\")\n    scursor = pgconn.cursor()\n    os.chdir(\"/mesonet/data/smos\")\n    files = glob.glob(\"*.nc\")\n    grid_ids = []\n    for fn in files:\n        ts = fn2datetime(fn)\n        if ts is None:\n            LOG.warning(\"ingest_smos: fn2datetime fail: %s\", fn)\n            continue\n        scursor.execute(\"SELECT * from obtimes where valid = %s\", (ts,))\n        row = scursor.fetchone()\n        if row is None:\n            if not grid_ids:\n                load_grid_ids(scursor, grid_ids)\n            consume(scursor, fn, ts, grid_ids)\n            scursor.execute(\"INSERT into obtimes(valid) values (%s)\", (ts,))\n            pgconn.commit()\n\n\nif __name__ == \"__main__\":\n    lookforfiles()\n"
  },
  {
    "path": "scripts/smos/plot.py",
    "content": "\"\"\"Create a plot of SMOS data for either 0 or 12z\n\ncalled from RUN_NOON.sh for 0z and RUN_MIDNIGHT.sh for 12z\n\"\"\"\n\nimport warnings\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport numpy as np\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.plot import get_cmap\nfrom pyiem.plot.geoplot import MapPlot\nfrom pyiem.util import logger\n\n# Surpress warning from matplotlib that I have no idea about\nwarnings.simplefilter(\"ignore\", RuntimeWarning)\nLOG = logger()\n\n\ndef makeplot(ts, routes=\"ac\"):\n    \"\"\"\n    Generate two plots for a given time GMT\n    \"\"\"\n    with get_sqlalchemy_conn(\"smos\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n        WITH obs as (\n            SELECT grid_idx, avg(soil_moisture) * 100. as sm,\n            avg(optical_depth) as od from data where valid BETWEEN %s and %s\n            GROUP by grid_idx)\n\n        SELECT ST_x(geom) as lon, ST_y(geom) as lat,\n        CASE WHEN sm is Null THEN -1 ELSE sm END as sm,\n        CASE WHEN od is Null THEN -1 ELSE od END as od\n        from obs o JOIN grid g ON (o.grid_idx = g.idx)\n        \"\"\",\n            conn,\n            params=(\n                ts - timedelta(hours=6),\n                ts + timedelta(hours=6),\n            ),\n            index_col=None,\n        )\n    if df.empty:\n        LOG.warning(\n            \"Did not find SMOS data for: %s-%s\",\n            ts - timedelta(hours=6),\n            ts + timedelta(hours=6),\n        )\n        return\n    for sector in [\"midwest\", \"iowa\"]:\n        clevs = np.arange(0, 71, 5)\n        mp = MapPlot(\n            sector=sector,\n            axisbg=\"white\",\n            title=\"SMOS Satellite: Soil Moisture (0-5cm)\",\n            subtitle=f\"Satelite passes around {ts:%d %B %Y %H} UTC\",\n        )\n        if sector == \"iowa\":\n            mp.drawcounties()\n        cmap = get_cmap(\"jet_r\")\n        cmap.set_under(\"#EEEEEE\")\n        cmap.set_over(\"k\")\n        mp.hexbin(\n            df[\"lon\"].values,\n            df[\"lat\"].values,\n            df[\"sm\"].values,\n            clevs,\n            units=\"%\",\n            cmap=cmap,\n        )\n        pqstr = (\n            f\"plot {routes} {ts:%Y%m%d%H}00 smos_{sector}_sm{ts:%H}.png \"\n            f\"smos_{sector}_sm{ts:%H}.png png\"\n        )\n        mp.postprocess(pqstr=pqstr)\n        mp.close()\n\n    for sector in [\"midwest\", \"iowa\"]:\n        clevs = np.arange(0, 1.001, 0.05)\n        mp = MapPlot(\n            sector=sector,\n            axisbg=\"white\",\n            title=(\n                \"SMOS Satellite: Land Cover Optical Depth (microwave L-band)\"\n            ),\n            subtitle=f\"Satelite passes around {ts:%d %B %Y %H} UTC\",\n        )\n        if sector == \"iowa\":\n            mp.drawcounties()\n        cmap = get_cmap(\"jet\")\n        cmap.set_under(\"#EEEEEE\")\n        cmap.set_over(\"k\")\n        mp.hexbin(\n            df[\"lon\"].values, df[\"lat\"].values, df[\"od\"], clevs, cmap=cmap\n        )\n        pqstr = (\n            f\"plot {routes} {ts:%Y%m%d%H}00 smos_{sector}_od{ts:%H}.png \"\n            f\"smos_{sector}_od{ts:%H}.png png\"\n        )\n        mp.postprocess(pqstr=pqstr)\n        mp.close()\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), help=\"Specific UTC time\")\n@click.option(\"--realtime\", is_flag=True, help=\"Operate in realtime mode\")\ndef main(valid: datetime, realtime: bool):\n    \"\"\"Go Main Go\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    makeplot(valid, \"ac\" if realtime else \"a\")\n    if realtime:\n        for d in [1, 5]:\n            makeplot(valid - timedelta(days=d), \"a\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/summary/compute_daily.py",
    "content": "\"\"\"Compute daily summaries of observed data.\n\nNOTE: We don't want to compute things provided by ASOS DSM/CF6/CLI data.\n\nCalled from RUN_12Z.sh with no args and 2 days ago\nCalled from RUN_MIDNIGHT.sh with no args\n\"\"\"\n\nimport warnings\nfrom datetime import date, datetime, timedelta\n\nimport click\nimport metpy.calc as mcalc\nimport numpy as np\nimport pandas as pd\nfrom metpy.units import units as munits\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.util import logger\n\nLOG = logger()\n# bad values into mcalc\nwarnings.simplefilter(\"ignore\", RuntimeWarning)\n\n\ndef clean(val, floor, ceiling):\n    \"\"\"Make sure RH values are always sane\"\"\"\n    if val > ceiling or val < floor or pd.isna(val):\n        return None\n    if isinstance(val, munits.Quantity):\n        return float(val.magnitude)\n    return float(val)\n\n\ndef compute_wind_gusts_asos(gdf, currentrow, newdata):\n    \"\"\"Do wind gust logic.\"\"\"\n    dfmax = max([gdf[\"gust\"].max(), gdf[\"peak_wind_gust\"].max()])\n    if pd.isnull(dfmax) or (\n        currentrow[\"max_gust\"] is not None and currentrow[\"max_gust\"] >= dfmax\n    ):\n        return\n    newdata[\"max_gust\"] = dfmax\n    # need to figure out timestamp\n    peakrows = gdf[gdf[\"peak_wind_gust\"] == dfmax]\n    if peakrows.empty:\n        peakrows = gdf[gdf[\"gust\"] == dfmax]\n        if peakrows.empty:\n            return\n        newdata[\"max_gust_ts\"] = peakrows.iloc[0][\"valid\"]\n        is_new(\"max_drct\", peakrows.iloc[0][\"drct\"], currentrow, newdata)\n    else:\n        newdata[\"max_gust_ts\"] = peakrows.iloc[0][\"peak_wind_time\"]\n        is_new(\n            \"max_drct\", peakrows.iloc[0][\"peak_wind_drct\"], currentrow, newdata\n        )\n\n\ndef is_new(colname, newval, currentrow, newdata):\n    \"\"\"Comp and set.\"\"\"\n    if pd.isnull(newval):\n        return\n    if (\n        pd.isnull(currentrow[colname])\n        or abs(newval - currentrow[colname]) > 0.01\n    ):\n        newdata[colname] = newval\n\n\ndef get_rwis_obs(dt: date) -> pd.DataFrame:\n    \"\"\"Get RWIS observations for a given date.\"\"\"\n    with get_sqlalchemy_conn(\"rwis\") as conn:\n        obsdf = pd.read_sql(\n            sql_helper(\"\"\"\n        select t.id as station, network, d.iemid, drct, sknt, gust, dwpf,\n        valid at time zone tzname as localvalid, valid, relh, feel from\n        alldata d JOIN stations t on (t.iemid = d.iemid)\n        where network ~* 'RWIS'\n        and valid between :sts and :ets and t.tzname is not null\n        and date(valid at time zone tzname) = :dt\n        ORDER by valid ASC\n        \"\"\"),\n            conn,\n            params={\n                \"sts\": dt - timedelta(days=2),\n                \"ets\": dt + timedelta(days=2),\n                \"dt\": dt,\n            },\n            index_col=None,\n        )\n    return obsdf\n\n\ndef get_asos_obs(dt: date) -> pd.DataFrame:\n    \"\"\"Get ASOS observations for a given date.\"\"\"\n    with get_sqlalchemy_conn(\"asos\") as conn:\n        obsdf = pd.read_sql(\n            sql_helper(\"\"\"\n        select station, network, iemid, drct, sknt, gust, dwpf,\n        valid at time zone tzname as localvalid, valid, relh, feel,\n        peak_wind_gust, peak_wind_drct, peak_wind_time,\n        peak_wind_time at time zone tzname as local_peak_wind_time from\n        alldata d JOIN stations t on (t.id = d.station)\n        where network ~* 'ASOS'\n        and valid between :sts and :ets and t.tzname is not null\n        and date(valid at time zone tzname) = :dt\n        ORDER by valid ASC\n        \"\"\"),\n            conn,\n            params={\n                \"sts\": dt - timedelta(days=2),\n                \"ets\": dt + timedelta(days=2),\n                \"dt\": dt,\n            },\n            index_col=None,\n        )\n    return obsdf\n\n\ndef compute_things(df):\n    # derive some parameters\n    df[\"u\"], df[\"v\"] = mcalc.wind_components(\n        df[\"sknt\"].values * munits.knots, df[\"drct\"].values * munits.deg\n    )\n    df[\"localvalid_lag\"] = df.groupby(\"iemid\")[\"localvalid\"].shift(1)\n    df[\"timedelta\"] = df[\"localvalid\"] - df[\"localvalid_lag\"]\n    ndf = df[pd.isna(df[\"timedelta\"])]\n    df.loc[ndf.index.values, \"timedelta\"] = pd.to_timedelta(\n        ndf[\"localvalid\"].dt.hour * 3600.0\n        + ndf[\"localvalid\"].dt.minute * 60.0,\n        unit=\"s\",\n    )\n    df[\"timedelta\"] = df[\"timedelta\"] / np.timedelta64(1, \"s\")\n\n\ndef do(dt: date, netclass: str, meta: dict):\n    \"\"\"Process this date timestamp\"\"\"\n    iemaccess = get_dbconn(\"iem\")\n    icursor = iemaccess.cursor()\n    table = f\"summary_{dt.year}\"\n    # Get what we currently know, just grab everything\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        current = pd.read_sql(\n            sql_helper(\n                \"\"\"\n    SELECT s.* from {table} s JOIN stations t on (s.iemid = t.iemid)\n    WHERE day = :dt and network ~* :netclass\n            \"\"\",\n                table=table,\n            ),\n            conn,\n            params={\"dt\": dt, \"netclass\": netclass},\n            index_col=\"iemid\",\n        )\n    LOG.info(\"Found %s summary entries for %s\", len(current.index), netclass)\n    obsdf = meta[\"getobs\"](dt)\n    if obsdf.empty:\n        LOG.info(\"no %s database entries for %s\", netclass, dt)\n        return\n    compute_things(obsdf)\n\n    updates = 0\n    for iemid, gdf in obsdf.groupby(\"iemid\"):\n        if len(gdf.index) < 6:\n            continue\n        if iemid not in current.index:\n            LOG.info(\n                \"Adding %s for %s %s %s\",\n                table,\n                gdf.iloc[0][\"station\"],\n                gdf.iloc[0][\"network\"],\n                dt,\n            )\n            icursor.execute(\n                f\"INSERT into {table} (iemid, day) values (%s, %s)\",\n                (iemid, dt),\n            )\n            # Commit this immediately attempting to avoid a deadlock that\n            # has been difficult to track down\n            icursor.close()\n            iemaccess.commit()\n            icursor = iemaccess.cursor()\n            current.loc[iemid] = None\n        newdata = {}\n        currentrow = current.loc[iemid]\n        if netclass == \"ASOS\":\n            compute_wind_gusts_asos(gdf, currentrow, newdata)\n        # take the nearest value\n        ldf = gdf.copy().bfill().ffill()\n        totsecs = ldf[\"timedelta\"].sum()\n        is_new(\n            \"avg_rh\",\n            clean((ldf[\"relh\"] * ldf[\"timedelta\"]).sum() / totsecs, 1, 100),\n            currentrow,\n            newdata,\n        )\n        is_new(\"min_rh\", clean(ldf[\"relh\"].min(), 1, 100), currentrow, newdata)\n        is_new(\"max_rh\", clean(ldf[\"relh\"].max(), 1, 100), currentrow, newdata)\n\n        uavg = (ldf[\"u\"] * ldf[\"timedelta\"]).sum() / totsecs\n        vavg = (ldf[\"v\"] * ldf[\"timedelta\"]).sum() / totsecs\n        is_new(\n            \"vector_avg_drct\",\n            clean(\n                mcalc.wind_direction(uavg * munits.knots, vavg * munits.knots),\n                0,\n                360,\n            ),\n            currentrow,\n            newdata,\n        )\n        is_new(\n            \"avg_sknt\",\n            clean((ldf[\"sknt\"] * ldf[\"timedelta\"]).sum() / totsecs, 0, 150),\n            currentrow,\n            newdata,\n        )\n        is_new(\n            \"max_sknt\",\n            clean(ldf[\"sknt\"].max(), 0, 150),\n            currentrow,\n            newdata,\n        )\n        is_new(\n            \"max_feel\",\n            clean(ldf[\"feel\"].max(), -150, 200),\n            currentrow,\n            newdata,\n        )\n        is_new(\n            \"avg_feel\",\n            clean((ldf[\"feel\"] * ldf[\"timedelta\"]).sum() / totsecs, -150, 200),\n            currentrow,\n            newdata,\n        )\n        is_new(\n            \"min_feel\",\n            clean(ldf[\"feel\"].min(), -150, 200),\n            currentrow,\n            newdata,\n        )\n\n        is_new(\n            \"max_dwpf\",\n            clean(ldf[\"dwpf\"].max(), -150, 100),\n            currentrow,\n            newdata,\n        )\n        is_new(\n            \"min_dwpf\",\n            clean(ldf[\"dwpf\"].min(), -150, 100),\n            currentrow,\n            newdata,\n        )\n\n        if not newdata:\n            continue\n        cols = []\n        args = []\n        for key, val in newdata.items():\n            cols.append(f\"{key} = %s\")\n            args.append(val)\n        args.extend([iemid, dt])\n\n        sql = \", \".join(cols)\n\n        icursor.execute(\n            f\"UPDATE {table} SET {sql} WHERE iemid = %s and day = %s\", args\n        )\n        updates += 1\n        if icursor.rowcount == 0:\n            LOG.info(\n                \" update of %s[%s] was 0\",\n                gdf.iloc[0][\"station\"],\n                gdf.iloc[0][\"network\"],\n            )\n        if updates % 100 == 0:\n            icursor.close()\n            iemaccess.commit()\n            icursor = iemaccess.cursor()\n\n    LOG.info(\"Updated %s/%s summary rows\", updates, len(current.index))\n    icursor.close()\n    iemaccess.commit()\n    iemaccess.close()\n\n\n@click.command()\n@click.option(\n    \"--date\", \"dt\", type=click.DateTime(), required=True, help=\"Date\"\n)\ndef main(dt: datetime):\n    \"\"\"Go Main Go\"\"\"\n    dt = dt.date()\n    settings = {\n        \"ASOS\": {\"database\": \"asos\", \"getobs\": get_asos_obs},\n        \"RWIS\": {\"database\": \"rwis\", \"getobs\": get_rwis_obs},\n    }\n    for netclass, meta in settings.items():\n        try:\n            do(dt, netclass, meta)\n        except Exception as exp:\n            LOG.warning(\"compute_daily %s %s failed\", netclass, dt)\n            LOG.exception(exp)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/summary/hourly_precip.py",
    "content": "\"\"\"Update hourly precip tables.\n\nFor better or worse, we have a manual accounting of precipitation totals within\nthe database.  This updates those totals.\n\nCalled from RUN_10_AFTER.sh\n\"\"\"\n\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nfrom pyiem.database import get_dbconnc\nfrom pyiem.util import utc\n\n\ndef update(icursor, iemid, valid, phour):\n    \"\"\"Update value.\"\"\"\n    icursor.execute(\n        f\"DELETE from hourly_{valid.year} WHERE valid = %s and iemid = %s\",\n        (valid, iemid),\n    )\n    icursor.execute(\n        f\"INSERT into hourly_{valid.year} (valid, phour, iemid) \"\n        \"VALUES (%s, %s, %s)\",\n        (valid, phour, iemid),\n    )\n\n\ndef archive(ts):\n    \"\"\"Reprocess an older date\n\n    Currently, we only support the METAR database :(\n    \"\"\"\n    asos, acursor = get_dbconnc(\"asos\")\n    acursor = asos.cursor()\n    iem, icursor = get_dbconnc(\"iem\")\n\n    acursor.execute(\n        f\"\"\"WITH data as (\n        SELECT station, max(p01i) from t{ts.year}\n        WHERE valid > %s and valid <= %s and p01i is not null\n        GROUP by station)\n\n    SELECT max, iemid from data d JOIN stations s on\n    (d.station = s.id) WHERE s.network ~* 'ASOS'\n    \"\"\",\n        (ts, ts + timedelta(minutes=60)),\n    )\n\n    for row in acursor:\n        update(icursor, row[1], ts, row[0])\n\n    icursor.close()\n    iem.commit()\n\n\ndef realtime(ts):\n    \"\"\"realtime\"\"\"\n    pgconn, icursor = get_dbconnc(\"iem\")\n    acursor = pgconn.cursor()\n    acursor.execute(\n        \"\"\"\n        SELECT max(phour) as p, t.iemid\n        from current_log c, stations t WHERE\n        (valid - '1 minute'::interval) >= %s\n        and (valid - '1 minute'::interval) < %s\n        and phour >= 0 and c.iemid = t.iemid and t.network !~* 'DCP'\n        GROUP by t.iemid\n        \"\"\",\n        (ts, ts + timedelta(minutes=60)),\n    )\n    for row in acursor:\n        update(icursor, row[\"iemid\"], ts, row[\"p\"])\n\n    pgconn.commit()\n    pgconn.close()\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), help=\"UTC Timestamp\")\ndef main(valid: datetime | None):\n    \"\"\"Do things\"\"\"\n    if valid:\n        # Run for a custom hour\n        archive(valid.replace(tzinfo=timezone.utc))\n    else:\n        # We run for the last hour\n        ts = utc() - timedelta(hours=1)\n        ts = ts.replace(minute=0, second=0, microsecond=0)\n        realtime(ts)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/summary/max_reflect.py",
    "content": "\"\"\"NEXRAD max reflectivity summary images.\n\nRun from RUN_0Z.sh, RUN_10_AFTER.sh (6z)\n\"\"\"\n\nimport subprocess\nimport tempfile\nimport time\nfrom datetime import timedelta, timezone\n\nimport click\nimport httpx\nimport numpy as np\nfrom osgeo import gdal, gdalconst\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import archive_fetch, logger, utc\n\ngdal.UseExceptions()\nLOG = logger()\nURLBASE = \"http://iem.local/GIS/radmap.php?width=1280&height=720&\"\n\n\ndef get_colortable(prod):\n    \"\"\"Get the color table for this prod\n\n    Args:\n      prod (str): product to get the table for\n\n    Returns:\n      colortable\n\n    \"\"\"\n    pgconn = get_dbconn(\"mesosite\")\n    cursor = pgconn.cursor()\n    cursor.execute(\n        \"select r,g,b from iemrasters_lookup l JOIN iemrasters r on \"\n        \"(r.id = l.iemraster_id) WHERE r.name = %s ORDER by l.coloridx ASC\",\n        (\"composite_\" + prod,),\n    )\n    ct = gdal.ColorTable()\n    for i, row in enumerate(cursor):\n        ct.SetColorEntry(i, (row[0], row[1], row[2], 255))\n    pgconn.close()\n    return ct\n\n\ndef run(tmpdir, prod, sts):\n    \"\"\"Create a max dbZ plot\n\n    Args:\n      prod (str): Product to run for, either n0r or n0q\n      sts (datetime): date to run for\n    \"\"\"\n    yest = utc() - timedelta(days=1)\n    routes = \"ac\" if sts.date() == yest.date() else \"a\"\n    label = f\"{sts.hour}z{sts.hour}z\"\n    LOG.info(\"Running for %s with routes=%s, label=%s\", sts, routes, label)\n    ets = sts + timedelta(days=1)\n    interval = timedelta(minutes=5)\n\n    n0rct = get_colortable(prod)\n\n    # Loop over our archived files and do what is necessary\n    maxn0r = None\n    now = sts\n    while now < ets:\n        ppath = now.strftime(f\"%Y/%m/%d/GIS/uscomp/{prod}_%Y%m%d%H%M.png\")\n        with archive_fetch(ppath) as fn:\n            if fn is None:\n                LOG.warning(\"missing file: %s\", ppath)\n                now += interval\n                continue\n            n0r = gdal.Open(fn, 0)\n            n0rd = n0r.ReadAsArray()\n        LOG.info(\n            \"%s %s %s %s\", now, n0rd.dtype, np.shape(n0rd), n0r.RasterCount\n        )\n        if maxn0r is None:\n            maxn0r = n0rd\n        maxn0r = np.where(n0rd > maxn0r, n0rd, maxn0r)\n\n        now += interval\n\n    out_driver = gdal.GetDriverByName(\"gtiff\")\n    outdataset = out_driver.Create(\n        f\"{tmpdir}/{sts:%Y%m%d%H}.tiff\",\n        n0r.RasterXSize,\n        n0r.RasterYSize,\n        n0r.RasterCount,\n        gdalconst.GDT_Byte,\n    )\n    # Set output color table to match input\n    outdataset.GetRasterBand(1).SetRasterColorTable(n0rct)\n    outdataset.GetRasterBand(1).WriteArray(maxn0r)\n    del outdataset  # skipcq\n\n    subprocess.call(\n        [\n            \"magick\",\n            f\"{tmpdir}/{sts:%Y%m%d%H}.tiff\",\n            f\"{tmpdir}/{sts:%Y%m%d%H}.png\",\n        ],\n    )\n    # Insert into LDM\n    cmd = [\n        \"pqinsert\",\n        \"-p\",\n        f\"plot a {sts:%Y%m%d%H}00 bogus \"\n        f\"GIS/uscomp/max_{prod}_{label}_{sts:%Y%m%d}.png png\",\n        f\"{tmpdir}/{sts:%Y%m%d%H}.png\",\n    ]\n    LOG.info(\" \".join(cmd))\n    subprocess.call(cmd)\n\n    # Create tmp world file\n    wldfn = f\"{tmpdir}/tmpwld{sts:%Y%m%d%H}.wld\"\n    with open(wldfn, \"w\", encoding=\"utf-8\") as fh:\n        if prod == \"n0r\":\n            fh.write(\"0.01\\n0.0\\n0.0\\n-0.01\\n-126.0\\n50.0\")\n        else:\n            fh.write(\"0.005\\n0.0\\n0.0\\n-0.005\\n-126.0\\n50.0\")\n\n    # Insert world file as well\n    cmd = [\n        \"pqinsert\",\n        \"-i\",\n        \"-p\",\n        (\n            f\"plot a {sts:%Y%m%d%H}00 bogus \"\n            f\"GIS/uscomp/max_{prod}_{label}_{sts:%Y%m%d}.wld wld\"\n        ),\n        wldfn,\n    ]\n    LOG.info(\" \".join(cmd))\n    subprocess.call(cmd)\n\n    # 60s was too tight it appears\n    LOG.info(\"sleeping 180s to allow LDM to propogate\")\n    time.sleep(180)\n\n    # Iowa\n    layer = \"nexrad_tc\" if prod == \"n0r\" else \"n0q_tc\"\n    if sts.hour == 6:\n        layer = f\"{layer}6\"\n    resp = httpx.get(\n        f\"{URLBASE}layers[]=uscounties&layers[]={layer}&ts={sts:%Y%m%d%H%M}\",\n        timeout=120,\n    )\n    with open(f\"{tmpdir}/{sts:%Y%m%d%H}.png\", \"wb\") as fh:  # skipcq\n        fh.write(resp.content)\n    cmd = [\n        \"pqinsert\",\n        \"-p\",\n        (\n            f\"plot {routes} {sts:%Y%m%d%H}00 \"\n            f\"summary/max_{prod}_{label}_comprad.png \"\n            f\"comprad/max_{prod}_{label}_{sts:%Y%m%d}.png png\"\n        ),\n        f\"{tmpdir}/{sts:%Y%m%d%H}.png\",\n    ]\n    LOG.info(\" \".join(cmd))\n    subprocess.call(cmd)\n\n    # US\n    url = f\"{URLBASE}sector=conus&layers[]={layer}&ts={sts:%Y%m%d%H%M}\"\n    resp = httpx.get(url, timeout=120)\n    if resp.status_code != 200:\n        LOG.warning(\"Got status_code %s for %s\", resp.status_code, url)\n    else:\n        with open(f\"{tmpdir}/{sts:%Y%m%d%H}.png\", \"wb\") as fh:\n            fh.write(resp.content)\n        cmd = [\n            \"pqinsert\",\n            \"-p\",\n            (\n                f\"plot {routes} {sts:%Y%m%d%H}00 \"\n                f\"summary/max_{prod}_{label}_usrad.png \"\n                f\"usrad/max_{prod}_{label}_{sts:%Y%m%d}.png png\"\n            ),\n            f\"{tmpdir}/{sts:%Y%m%d%H}.png\",\n        ]\n        LOG.info(\" \".join(cmd))\n        subprocess.call(cmd)\n\n\n@click.command()\n@click.option(\n    \"--valid\", type=click.DateTime(), help=\"UTC Valid Time\", required=True\n)\ndef main(valid):\n    \"\"\"Run main()\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    for prod in [\"n0r\", \"n0q\"]:\n        if valid < utc(2010, 11, 13) and prod == \"n0q\":\n            continue\n        with tempfile.TemporaryDirectory() as tmpdir:\n            run(tmpdir, prod, valid)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/summary/update_dailyrain.py",
    "content": "\"\"\"Update the pday column\n\nSome care has to be made here such that trace values do not accumulate when\nthere are actual measurable precip.  Eventually, the DSM or other summary\nmessages come and overwrite the trouble. Run from RUN_10MIN.sh\n\"\"\"\n\nimport time\nfrom datetime import datetime\n\nfrom pyiem.database import sql_helper, with_sqlalchemy_conn\nfrom pyiem.reference import TRACE_VALUE\nfrom pyiem.util import logger\nfrom sqlalchemy.engine import Connection\n\nLOG = logger()\n\n\n@with_sqlalchemy_conn(\"iem\")\ndef main(conn: Connection | None = None) -> None:\n    \"\"\"Go!\"\"\"\n    now = datetime.now()\n    yyyy = now.year\n\n    # Run for the previous hour, so that we don't skip totaling up 11 PM\n    res = conn.execute(\n        sql_helper(\n            \"\"\"\n        WITH obs as (\n            SELECT s.iemid, date(valid at time zone s.tzname) as d,\n            max(phour) as rain,\n            extract(hour from (valid - '1 minute'::interval)) as hour\n            from current_log c, stations s\n            WHERE s.network ~* 'ASOS' and c.iemid = s.iemid and\n            date(valid at time zone s.tzname) =\n                date((now() - '1 hour'::interval) at time zone s.tzname)\n            and phour > 0\n            GROUP by s.iemid, hour, d\n        ), agg as (\n            select o.iemid, o.d, sum(rain) as precip\n            from obs o JOIN stations s on\n            (s.iemid = o.iemid) GROUP by o.iemid, o.d\n         ), agg2 as (\n             SELECT iemid, d,\n             case when precip > 0.009 then\n               round(precip::numeric, 2) else precip end as pday\n             from agg\n         )\n        UPDATE {table} s\n        SET pday =\n        case when a.pday < 0.009 and a.pday > 0 then :tv else a.pday end\n        FROM agg2 a\n        WHERE s.iemid = a.iemid and s.day = a.d and\n        (s.pday is null or s.pday != a.pday)\n      \"\"\",\n            table=f\"summary_{yyyy}\",\n        ),\n        {\"tv\": TRACE_VALUE},\n    )\n    LOG.info(\"Updated %s rows\", res.rowcount)\n    conn.commit()\n\n\ndef frontend() -> None:\n    \"\"\"Proxy.\"\"\"\n    for _ in range(2):\n        try:\n            main()\n            return\n        except Exception as exp:\n            LOG.info(\"Failed to update summary: %s\", exp)\n            time.sleep(60)\n    LOG.warning(\"Both attempts failed\")\n\n\nif __name__ == \"__main__\":\n    frontend()\n"
  },
  {
    "path": "scripts/swat/swat_realtime.py",
    "content": "\"\"\"Generate SWAT realtime files workflow.\n\nSee akrherz/iem#285.\n\nWe are generating the format directly used by the distrubuted SWAT. Notes:\n\n- 1800 HUCs per file, we generate four total files to cover the 5729 HUC12s\n- While the SWATID column is unique, the HUC12 column is not.\n\nRun from RUN_2AM.sh\n\"\"\"\n\nimport glob\nimport os\nimport subprocess\nimport sys\nfrom datetime import date, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom geopandas import read_postgis\nfrom pyiem.database import get_sqlalchemy_conn\nfrom pyiem.grid import nav\nfrom pyiem.grid.zs import CachingZonalStats\nfrom pyiem.iemre import daily_offset, get_daily_mrms_ncname, get_daily_ncname\nfrom pyiem.util import convert_value, logger, ncopen\nfrom tqdm import tqdm\n\nLOG = logger()\nWORKDIR = \"/mesonet/tmp/umrb_swat_realtime\"\nDATADIR = \"/mesonet/share/pickup/swat/umrb_realtime\"\n\n\ndef init_files(page, huc12s):\n    \"\"\"Create a bunch of files and fps.\"\"\"\n    for typ in [\"pcp\", \"tmp\"]:\n        fn = os.path.join(WORKDIR, f\"{typ}{page}.{typ}\")\n        with open(fn, \"w\", encoding=\"utf-8\") as fh:\n            # Line one has all the SWATIDs\n            fh.write(\"       \")\n            minv = huc12s[\"swat\"].min()\n            maxv = huc12s[\"swat\"].max()\n            assert ((maxv - minv) + 1) == len(huc12s.index)\n            fh.writelines(f\"{i:>5}\" for i in range(minv, maxv + 1))\n            fh.write(\"\\n\")\n            # two empty lines\n            fh.write(\"\\n\\n\")\n            # 0 eelvation\n            fh.write(\"Elev   \")\n            fh.writelines(f\"{0:>5}\" for _i in range(minv, maxv + 1))\n            fh.write(\"\\n\")\n\n\ndef workflow(page, huc12s):\n    \"\"\"Generate the files as we need.\"\"\"\n    if not os.path.isfile(os.path.join(WORKDIR, f\"tmp{page}.tmp\")):\n        init_files(page, huc12s)\n        now = date(2019, 1, 1)\n    else:\n        now = date.today() - timedelta(days=1)\n    # default time domain, only run for one date if the files exist.\n    ets = date.today() - timedelta(days=1)\n    LOG.info(\"Running for time domain %s to %s\", now, ets)\n    # This is N to S\n    mrms_czs = CachingZonalStats(nav.MRMS_IEMRE.affine_image)\n    iemre_czs = CachingZonalStats(nav.IEMRE.affine_image)\n\n    mrms_nchandles = {}\n    iemre_nchandles = {}\n    dates = pd.date_range(now, ets)\n    progress = tqdm(dates, disable=not sys.stdout.isatty())\n    # Open our output page files\n    tmpfn = os.path.join(WORKDIR, f\"tmp{page}.tmp\")\n    pcpfn = os.path.join(WORKDIR, f\"pcp{page}.pcp\")\n    with (\n        open(tmpfn, \"a\", encoding=\"utf-8\") as tfh,\n        open(pcpfn, \"a\", encoding=\"utf-8\") as pfh,\n    ):\n        for now in progress:\n            progress.set_description(f\"{now:%Y%m%d}\")\n            offset = daily_offset(now)\n            # get mrms netcdf handle\n            if now.year not in mrms_nchandles:\n                mrms_nchandles[now.year] = ncopen(\n                    get_daily_mrms_ncname(now.year), \"r\"\n                )\n            # get iemre netcdf handle\n            if now.year not in iemre_nchandles:\n                iemre_nchandles[now.year] = ncopen(\n                    get_daily_ncname(now.year), \"r\"\n                )\n            # mrms precip\n            precip = np.flipud(mrms_nchandles[now.year][\"p01d\"][offset])\n            pdata = mrms_czs.gen_stats(precip, huc12s[\"simple_geom\"])\n            # IEMRE high and low\n            highk = np.flipud(iemre_nchandles[now.year][\"high_tmpk\"][offset])\n            hdata = convert_value(\n                iemre_czs.gen_stats(highk, huc12s[\"simple_geom\"]),\n                \"degK\",\n                \"degC\",\n            )\n            lowk = np.flipud(iemre_nchandles[now.year][\"low_tmpk\"][offset])\n            ldata = convert_value(\n                iemre_czs.gen_stats(lowk, huc12s[\"simple_geom\"]),\n                \"degK\",\n                \"degC\",\n            )\n            # write the year, date\n            tfh.write(f\"{now.year:>4}{int(now.strftime('%j')):>3}\")\n            pfh.write(f\"{now.year:>4}{int(now.strftime('%j')):>3}\")\n            for p, h, ll in zip(pdata, hdata, ldata, strict=False):\n                pfh.write(f\"{p:5.1f}\")\n                tfh.write(f\"{h:5.1f}{ll:5.1f}\")\n            tfh.write(\"\\n\")\n            pfh.write(\"\\n\")\n\n\ndef main():\n    \"\"\"Do things.\"\"\"\n    # Load the cross reference\n    xref = pd.read_csv(\n        os.path.join(DATADIR, \"xref.csv\"),\n        dtype={\"huc12\": str},\n    )\n    # Load up HUC12 geometries\n    with get_sqlalchemy_conn(\"idep\") as conn:\n        huc12s = read_postgis(\n            \"SELECT simple_geom, huc12 from wbd_huc12 \"\n            \"where umrb_realtime_swat\",\n            conn,\n            geom_col=\"simple_geom\",\n            index_col=None,\n        )\n    # The xref HUC12s are not unique, so we need to do a join\n    huc12s = pd.merge(xref, huc12s, how=\"left\", on=\"huc12\")\n    huc12s[\"page\"] = huc12s[\"swat\"] // 1800 + 1\n    # Need to order by the id\n    huc12s = huc12s.sort_values(\"swat\", ascending=True)\n    LOG.info(\"Loaded %s HUC12s\", len(huc12s.index))\n    # Loop over the pages\n    for page, df in huc12s.groupby(\"page\"):\n        workflow(page, df)\n    # 4. Zip up the files\n    os.chdir(WORKDIR)\n    yesterday = date.today() - timedelta(days=1)\n    zipfn = f\"umrb_realtime_{yesterday:%Y%m%d}.zip\"\n    tfiles = glob.glob(\"tmp?.tmp\")\n    pfiles = glob.glob(\"pcp?.pcp\")\n    subprocess.call([\"zip\", \"-q\", zipfn, *tfiles, *pfiles])\n    # 5. Copy the zip file to the resulting folder\n    subprocess.call([\"mv\", zipfn, DATADIR])\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ua/compute_params.py",
    "content": "\"\"\"Compute sounding derived parameters.\n\nRun from RUN_10AFTER.sh\n\"\"\"\n\nimport sys\nimport warnings\nfrom datetime import datetime, timezone\n\nimport click\nimport numpy as np\nimport pandas as pd\nfrom metpy.calc import (\n    bunkers_storm_motion,\n    el,\n    lcl,\n    lfc,\n    mixed_layer_cape_cin,\n    most_unstable_cape_cin,\n    precipitable_water,\n    storm_relative_helicity,\n    surface_based_cape_cin,\n    wind_components,\n    wind_direction,\n    wind_speed,\n)\nfrom metpy.units import units\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\nfrom scipy.interpolate import interp1d\nfrom tqdm import tqdm\n\n# metpy can be noisy and we don't care about runtime warnings\nwarnings.simplefilter(\"ignore\", category=RuntimeWarning)\nwarnings.simplefilter(\"ignore\", category=UserWarning)\nLOG = logger()\n\n\ndef nonull(val, minval=None, maxval=None):\n    \"\"\"Ensure we don't have NaN.\"\"\"\n    if pd.isnull(val) or np.isinf(val):\n        return None\n    val = float(val)\n    if minval is not None and val < minval:\n        return None\n    if maxval is not None and val > maxval:\n        return None\n    return val\n\n\ndef log_interp(zz, xx, yy):\n    \"\"\"Log Interpolate.\"\"\"\n    # https://stackoverflow.com/questions/29346292\n    logz = np.log10(zz)\n    logx = np.log10(xx)\n    logy = np.log10(yy)\n    return np.power(10.0, np.interp(logz, logx, logy))\n\n\ndef get_surface_winds(wind_profile):\n    \"\"\"See if we can get the surface wind.\"\"\"\n    df = wind_profile[wind_profile[\"levelcode\"] == 9]\n    if not df.empty:\n        return df.iloc[0][\"u\"], df.iloc[0][\"v\"]\n    # return the bottom level\n    return wind_profile.iloc[0][\"u\"], wind_profile.iloc[0][\"v\"]\n\n\ndef get_aloft_winds(wind_profile, level):\n    \"\"\"See if we can get the surface wind.\"\"\"\n    fu = interp1d(wind_profile[\"height\"].values, wind_profile[\"u\"].values)\n    fv = interp1d(wind_profile[\"height\"].values, wind_profile[\"v\"].values)\n    return fu(level), fv(level)\n\n\ndef get_station_elevation(df, nt):\n    \"\"\"See if we can determine the station elevation.\"\"\"\n    metadata_says = nt.sts.get(df.iloc[0][\"station\"], {}).get(\"elevation\")\n    df2 = df[df[\"levelcode\"] == 9]\n    data_says = df.iloc[0][\"height\"] if df2.empty else df2.iloc[0][\"height\"]\n    if metadata_says is None:\n        return data_says\n    if np.abs(data_says - metadata_says) > 49:\n        raise RuntimeError(\n            f\"lowest level {data_says:.1f} too far \"\n            f\"from station: {metadata_says:.1f}\"\n        )\n    return data_says\n\n\ndef gt1(val):\n    \"\"\"Make sure our value is useful.\"\"\"\n    if val < 0.1:\n        return None\n    return val\n\n\ndef compute_total_totals(profile):\n    \"\"\"Total Totals.\"\"\"\n    l850 = profile[profile[\"pressure\"] == 850]\n    l500 = profile[profile[\"pressure\"] == 500]\n    if l850.empty or l500.empty:\n        return np.nan\n    return (l850.iloc[0][\"tmpc\"] - l500.iloc[0][\"tmpc\"]) + (\n        l850.iloc[0][\"dwpc\"] - l500.iloc[0][\"tmpc\"]\n    )\n\n\ndef compute_sweat_index(profile, total_totals):\n    \"\"\"Compute the Sweat Index.\"\"\"\n    if pd.isnull(total_totals):\n        return np.nan\n    l850 = profile[profile[\"pressure\"] == 850]\n    l500 = profile[profile[\"pressure\"] == 500]\n    if l850.empty or l500.empty:\n        return np.nan\n    term2 = np.max([total_totals - 49.0, 0])\n    skt850 = (l850.iloc[0][\"smps\"] * units(\"m/s\")).to(units.knots).m\n    skt500 = (l500.iloc[0][\"smps\"] * units(\"m/s\")).to(units.knots).m\n    dir500 = (l500.iloc[0][\"drct\"] * units(\"degrees_north\")).to(units.radian).m\n    dir850 = (l850.iloc[0][\"drct\"] * units(\"degrees_north\")).to(units.radian).m\n    shear = 125.0 * (np.sin(dir500 - dir850) + 0.2)\n    return (\n        12.0 * l850.iloc[0][\"dwpc\"]\n        + 20.0 * term2\n        + 2 * skt850\n        + skt500\n        + shear\n    )\n\n\ndef do_profile(cursor, fid, gdf: pd.DataFrame, nt):\n    \"\"\"Process this profile.\"\"\"\n    # The inbound profile may contain mandatory level data that is below\n    # the surface.  It seems the best we can do here is to ensure both\n    # temperature and dewpoint are valid and call that the bottom.\n    td_profile = gdf[pd.notnull(gdf[\"tmpc\"]) & pd.notnull(gdf[\"dwpc\"])]\n    wind_profile = gdf[pd.notnull(gdf[\"u\"])]\n    # Presently we are all or nothing here.  The length is arb\n    if len(td_profile.index) < 5 or len(wind_profile.index) < 5:\n        msg = f\"quorum fail td: {td_profile.size} wind: {wind_profile.size}\"\n        raise ValueError(msg)\n    if gdf[\"pressure\"].min() > 500:\n        raise ValueError(f\"Profile only up to {gdf['pressure'].min()} mb\")\n    # Does a crude check that our metadata station elevation is within 50m\n    # of the profile bottom, otherwise we ABORT\n    station_elevation_m = get_station_elevation(td_profile, nt)\n    # get surface wind\n    u_sfc, v_sfc = get_surface_winds(wind_profile)\n    u_1km, v_1km = get_aloft_winds(wind_profile, station_elevation_m + 1000.0)\n    u_3km, v_3km = get_aloft_winds(wind_profile, station_elevation_m + 3000.0)\n    u_6km, v_6km = get_aloft_winds(wind_profile, station_elevation_m + 6000.0)\n    shear_sfc_1km_smps = np.sqrt((u_1km - u_sfc) ** 2 + (v_1km - v_sfc) ** 2)\n    shear_sfc_3km_smps = np.sqrt((u_3km - u_sfc) ** 2 + (v_3km - v_sfc) ** 2)\n    shear_sfc_6km_smps = np.sqrt((u_6km - u_sfc) ** 2 + (v_6km - v_sfc) ** 2)\n\n    total_totals = compute_total_totals(td_profile)\n    sweat_index = compute_sweat_index(td_profile, total_totals)\n    try:\n        bunkers_rm, bunkers_lm, mean0_6_wind = bunkers_storm_motion(\n            wind_profile[\"pressure\"].values * units.hPa,\n            wind_profile[\"u\"].values * units(\"m/s\"),\n            wind_profile[\"v\"].values * units(\"m/s\"),\n            wind_profile[\"height\"].values * units(\"m\"),\n        )\n    except ValueError:\n        # Profile may not go up high enough\n        bunkers_rm = [np.nan * units(\"m/s\"), np.nan * units(\"m/s\")]\n        bunkers_lm = [np.nan * units(\"m/s\"), np.nan * units(\"m/s\")]\n        mean0_6_wind = [np.nan * units(\"m/s\"), np.nan * units(\"m/s\")]\n    bunkers_rm_smps = wind_speed(bunkers_rm[0], bunkers_rm[1])\n    bunkers_rm_drct = wind_direction(bunkers_rm[0], bunkers_rm[1])\n    bunkers_lm_smps = wind_speed(bunkers_lm[0], bunkers_lm[1])\n    bunkers_lm_drct = wind_direction(bunkers_lm[0], bunkers_lm[1])\n    mean0_6_wind_smps = wind_speed(mean0_6_wind[0], mean0_6_wind[1])\n    mean0_6_wind_drct = wind_direction(mean0_6_wind[0], mean0_6_wind[1])\n    try:\n        (\n            srh_sfc_1km_pos,\n            srh_sfc_1km_neg,\n            srh_sfc_1km_total,\n        ) = storm_relative_helicity(\n            wind_profile[\"height\"].values * units(\"m\"),\n            wind_profile[\"u\"].values * units(\"m/s\"),\n            wind_profile[\"v\"].values * units(\"m/s\"),\n            1000.0 * units(\"m\"),\n        )\n    except ValueError:\n        srh_sfc_1km_pos = np.nan * units(\"m\")  # blah\n        srh_sfc_1km_neg = np.nan * units(\"m\")  # blah\n        srh_sfc_1km_total = np.nan * units(\"m\")  # blah\n    try:\n        (\n            srh_sfc_3km_pos,\n            srh_sfc_3km_neg,\n            srh_sfc_3km_total,\n        ) = storm_relative_helicity(\n            wind_profile[\"height\"].values * units(\"m\"),\n            wind_profile[\"u\"].values * units(\"m/s\"),\n            wind_profile[\"v\"].values * units(\"m/s\"),\n            3000.0 * units(\"m\"),\n        )\n    except ValueError:\n        srh_sfc_3km_pos = np.nan * units(\"m\")  # blah\n        srh_sfc_3km_neg = np.nan * units(\"m\")  # blah\n        srh_sfc_3km_total = np.nan * units(\"m\")  # blah\n    pwater = precipitable_water(\n        td_profile[\"pressure\"].values * units.hPa,\n        td_profile[\"dwpc\"].values * units.degC,\n    )\n    (sbcape, sbcin) = surface_based_cape_cin(\n        td_profile[\"pressure\"].values * units.hPa,\n        td_profile[\"tmpc\"].values * units.degC,\n        td_profile[\"dwpc\"].values * units.degC,\n    )\n    (mucape, mucin) = most_unstable_cape_cin(\n        td_profile[\"pressure\"].values * units.hPa,\n        td_profile[\"tmpc\"].values * units.degC,\n        td_profile[\"dwpc\"].values * units.degC,\n    )\n    (mlcape, mlcin) = mixed_layer_cape_cin(\n        td_profile[\"pressure\"].values * units.hPa,\n        td_profile[\"tmpc\"].values * units.degC,\n        td_profile[\"dwpc\"].values * units.degC,\n    )\n    el_p, el_t = el(\n        td_profile[\"pressure\"].values * units.hPa,\n        td_profile[\"tmpc\"].values * units.degC,\n        td_profile[\"dwpc\"].values * units.degC,\n    )\n    lfc_p, lfc_t = lfc(\n        td_profile[\"pressure\"].values * units.hPa,\n        td_profile[\"tmpc\"].values * units.degC,\n        td_profile[\"dwpc\"].values * units.degC,\n    )\n    (lcl_p, lcl_t) = lcl(\n        td_profile[\"pressure\"].values[0] * units.hPa,\n        td_profile[\"tmpc\"].values[0] * units.degC,\n        td_profile[\"dwpc\"].values[0] * units.degC,\n    )\n    vals = [\n        el_p.to(units(\"hPa\")).m,\n        lfc_p.to(units(\"hPa\")).m,\n        lcl_p.to(units(\"hPa\")).m,\n    ]\n    [el_hght, lfc_hght, lcl_hght] = log_interp(\n        np.array(vals, dtype=\"f\"),\n        td_profile[\"pressure\"].values[::-1],\n        td_profile[\"height\"].values[::-1],\n    )\n    el_agl = gt1(el_hght - station_elevation_m)\n    lcl_agl = gt1(lcl_hght - station_elevation_m)\n    lfc_agl = gt1(lfc_hght - station_elevation_m)\n    args = (\n        nonull(sbcape.to(units(\"joules / kilogram\")).m, minval=0),\n        nonull(sbcin.to(units(\"joules / kilogram\")).m, maxval=0),\n        nonull(mucape.to(units(\"joules / kilogram\")).m, minval=0),\n        nonull(mucin.to(units(\"joules / kilogram\")).m, maxval=0),\n        nonull(mlcape.to(units(\"joules / kilogram\")).m, minval=0),\n        nonull(mlcin.to(units(\"joules / kilogram\")).m, maxval=0),\n        nonull(pwater.to(units(\"mm\")).m, minval=0),\n        nonull(el_agl),\n        nonull(el_p.to(units(\"hPa\")).m),\n        nonull(el_t.to(units.degC).m),\n        nonull(lfc_agl),\n        nonull(lfc_p.to(units(\"hPa\")).m),\n        nonull(lfc_t.to(units.degC).m),\n        nonull(lcl_agl),\n        nonull(lcl_p.to(units(\"hPa\")).m),\n        nonull(lcl_t.to(units.degC).m),\n        nonull(total_totals),\n        nonull(sweat_index),\n        nonull(bunkers_rm_smps.m),\n        nonull(bunkers_rm_drct.m),\n        nonull(bunkers_lm_smps.m),\n        nonull(bunkers_lm_drct.m),\n        nonull(mean0_6_wind_smps.m),\n        nonull(mean0_6_wind_drct.m),\n        nonull(srh_sfc_1km_pos.m),\n        nonull(srh_sfc_1km_neg.m),\n        nonull(srh_sfc_1km_total.m),\n        nonull(srh_sfc_3km_pos.m),\n        nonull(srh_sfc_3km_neg.m),\n        nonull(srh_sfc_3km_total.m),\n        nonull(shear_sfc_1km_smps),\n        nonull(shear_sfc_3km_smps),\n        nonull(shear_sfc_6km_smps),\n        fid,\n    )\n    cursor.execute(\n        \"\"\"\n        UPDATE raob_flights SET sbcape_jkg = %s, sbcin_jkg = %s,\n        mucape_jkg = %s, mucin_jkg = %s,\n        mlcape_jkg = %s, mlcin_jkg = %s, pwater_mm = %s,\n        el_agl_m = %s, el_pressure_hpa = %s, el_tmpc = %s,\n        lfc_agl_m = %s, lfc_pressure_hpa = %s, lfc_tmpc = %s,\n        lcl_agl_m = %s, lcl_pressure_hpa = %s, lcl_tmpc = %s,\n        total_totals = %s, sweat_index = %s,\n        bunkers_rm_smps = %s, bunkers_rm_drct = %s,\n        bunkers_lm_smps = %s, bunkers_lm_drct = %s,\n        mean_sfc_6km_smps = %s, mean_sfc_6km_drct = %s,\n        srh_sfc_1km_pos = %s, srh_sfc_1km_neg = %s, srh_sfc_1km_total = %s,\n        srh_sfc_3km_pos = %s, srh_sfc_3km_neg = %s, srh_sfc_3km_total = %s,\n        shear_sfc_1km_smps = %s, shear_sfc_3km_smps = %s,\n        shear_sfc_6km_smps = %s,\n        computed = 't', computed_at = now() WHERE fid = %s\n    \"\"\",\n        args,\n    )\n\n\n@click.command()\n@click.option(\"--year\", required=False, type=int)\n@click.option(\"--station\", help=\"Specific station to process\")\n@click.option(\"--valid\", type=click.DateTime(), help=\"UTC time\")\ndef main(year: int | None, station: str | None, valid: datetime | None):\n    \"\"\"Go Main Go.\"\"\"\n    dbconn = get_dbconn(\"raob\")\n    cursor = dbconn.cursor()\n    nt = NetworkTable(\"RAOB\", only_online=False)\n    params = {}\n    valid_limiter = \"\"\n    if valid is not None:\n        valid = valid.replace(tzinfo=timezone.utc)\n        params[\"valid\"] = valid\n        valid_limiter = \" and valid = :valid\"\n    table = f\"raob_profile_{year if valid is None else valid.year}\"\n    station_limiter = \"\"\n    if station is not None:\n        station_limiter = \" station = :station\"\n        params[\"station\"] = station\n    limiter = \"(not computed or computed is null or ingested_at > computed_at)\"\n    if valid is not None and station is not None:\n        limiter = \"\"\n    with get_sqlalchemy_conn(\"raob\") as conn:\n        df = pd.read_sql(\n            sql_helper(\n                \"\"\"\n            select f.fid, f.station, pressure, tmpc, dwpc, drct, smps, height,\n            levelcode from {table} p JOIN raob_flights f\n            on (p.fid = f.fid)\n            WHERE {limiter} {station_limiter} {valid_limiter}\n            and height is not null and pressure is not null and not locked\n            ORDER by pressure DESC\n        \"\"\",\n                table=table,\n                limiter=limiter,\n                station_limiter=station_limiter,\n                valid_limiter=valid_limiter,\n            ),\n            conn,\n            params=params,\n        )\n    if df.empty or pd.isnull(df[\"smps\"].max()):\n        return\n    u, v = wind_components(\n        df[\"smps\"].values * units(\"m/s\"),\n        df[\"drct\"].values * units(\"degrees_north\"),\n    )\n    df[\"u\"] = u.to(units(\"m/s\")).m\n    df[\"v\"] = v.to(units(\"m/s\")).m\n    count = 0\n    progress = tqdm(df.groupby(\"fid\"), disable=not sys.stdout.isatty())\n    for fid, gdf in progress:\n        progress.set_description(f\"{year} {fid}\")\n        try:\n            do_profile(cursor, fid, gdf, nt)\n        except (RuntimeError, ValueError, IndexError) as exp:\n            LOG.info(\n                \"Profile %s fid: %s failed calculation %s\",\n                gdf.iloc[0][\"station\"],\n                fid,\n                exp,\n            )\n            cursor.execute(\n                \"UPDATE raob_flights SET computed = 't', \"\n                \"computed_at = now() WHERE fid = %s\",\n                (fid,),\n            )\n        if count % 100 == 0:\n            cursor.close()\n            dbconn.commit()\n            cursor = dbconn.cursor()\n        count += 1\n    cursor.close()\n    dbconn.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ua/compute_sts_ets.py",
    "content": "\"\"\"Update mesosite with sts and ets\"\"\"\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger, utc\nfrom tqdm import tqdm\n\nLOG = logger()\nOFFLINE_YR = utc().year - 1\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    nt = NetworkTable(\"RAOB\", only_online=False)\n    pgconn = get_dbconn(\"raob\")\n    pcursor = pgconn.cursor()\n    pgconn2 = get_dbconn(\"mesosite\")\n    mcursor = pgconn2.cursor()\n\n    progress = tqdm(list(nt.sts.keys()))\n    for station in progress:\n        progress.set_description(station)\n        stations = [station]\n        if station.startswith(\"_\"):\n            # Magic\n            stations = nt.sts[station][\"name\"].split(\"--\")[1].strip().split()\n        pcursor.execute(\n            \"SELECT min(date(valid)), max(date(valid)), count(*) \"\n            \"from raob_flights WHERE station = ANY(%s)\",\n            (stations,),\n        )\n        row = pcursor.fetchone()\n        current_sts = nt.sts[station][\"archive_begin\"]\n        current_ets = nt.sts[station][\"archive_end\"]\n        sts = row[0]\n        ets = row[1]\n        if (sts is not None and current_sts is None) or current_sts != sts:\n            LOG.info(\"%s sts %s->%s\", station, current_sts, sts)\n            mcursor.execute(\n                \"UPDATE stations SET archive_begin = %s where id = %s and \"\n                \"network = 'RAOB'\",\n                (sts, station),\n            )\n        if ets is not None and current_ets is None and ets.year < OFFLINE_YR:\n            LOG.info(\"%s ets %s->%s\", station, current_ets, ets)\n            mcursor.execute(\n                \"UPDATE stations SET archive_end = %s where id = %s and \"\n                \"network = 'RAOB'\",\n                (ets, station),\n            )\n\n    mcursor.close()\n    pgconn2.commit()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ua/igra2_ingest.py",
    "content": "\"\"\"Ingest from NCEI IGRA2 data.\n\nObservation seems to indicate that the archive updates every Sunday, so we\nrun once per week from RUN_2AM.sh on Mondays.\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\n\nimport click\nimport httpx\nfrom pyiem.database import get_dbconnc\nfrom pyiem.ncei.igra import process_ytd\nfrom pyiem.reference import igra2icao\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\n@click.command()\n@click.option(\"--overwrite\", is_flag=True, help=\"Overwrite existing data\")\n@click.option(\"--icao\", help=\"Specific ICAO to ingest\")\ndef main(overwrite: bool, icao: str | None):\n    \"\"\"Go Main.\"\"\"\n    pgconn, cursor = get_dbconnc(\"raob\")\n    # meh\n    cursor.close()\n    for ncei_id, _icao in igra2icao.items():\n        if icao and icao != _icao:\n            continue\n        url = (\n            \"https://www.ncei.noaa.gov/data/\"\n            \"integrated-global-radiosonde-archive/access/data-y2d/\"\n            f\"{ncei_id}-data-beg2021.txt.zip\"\n        )\n        try:\n            resp = httpx.get(url, timeout=30)\n            resp.raise_for_status()\n        except Exception as exp:\n            LOG.info(\"Failed to fetch %s: %s\", url, exp)\n            continue\n        with tempfile.NamedTemporaryFile(\n            \"wb\", delete=False, suffix=\".zip\"\n        ) as tmp:\n            tmp.write(resp.content)\n        # Unzip the file\n        subprocess.call(\n            [\n                \"unzip\",\n                \"-o\",\n                \"-q\",\n                tmp.name,\n                \"-d\",\n                os.path.dirname(tmp.name),\n            ]\n        )\n        fn = f\"/tmp/{ncei_id}-data.txt\"\n        for sounding in process_ytd(fn):\n            cursor = pgconn.cursor()\n            sounding.sql(cursor, overwrite=overwrite)\n            cursor.close()\n            pgconn.commit()\n        os.unlink(fn)\n        os.unlink(tmp.name)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/ua/ingest_from_spc.py",
    "content": "\"\"\"\nStop gap ingest from SPC since rucsoundings is down\n\ncalled from RUN_10_AFTER.sh for 00, 12, and 18 UTC\n\"\"\"\n\nimport sys\nfrom datetime import datetime, timedelta, timezone\n\nimport click\nimport httpx\nimport pandas as pd\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\nfrom tqdm import tqdm\n\nLOG = logger()\n\n\nclass RAOB:\n    \"\"\"Simple class representing a RAOB profile\"\"\"\n\n    def __init__(self):\n        \"\"\"constructor\"\"\"\n        self.station = None\n        self.valid = None\n        self.release_time = None\n        self.profile = []\n        self.wind_units = None\n        self.hydro_level = None\n        self.maxwd_level = None\n        self.tropo_level = None\n\n    def conv_hhmm(self, raw):\n        \"\"\"Convert string to timestamp\"\"\"\n        if raw == \"99999\":\n            return None\n        if int(raw) < 100:\n            return self.valid.replace(hour=0, minute=0) + timedelta(\n                minutes=int(raw)\n            )\n        minute = int(raw[-2:])\n        hour = int(raw[:-2])\n        if minute > 59:\n            minute = minute - 60\n            hour += 1\n        ts = self.valid.replace(hour=hour, minute=minute)\n        if ts.hour > 20 and self.valid.hour < 2:\n            ts -= timedelta(days=1)\n        return ts\n\n    def conv_speed(self, raw: str):\n        \"\"\"convert sped to mps units\"\"\"\n        if raw.strip() in [\"99999\", \"-9999.00\"]:\n            return None\n        if self.wind_units == \"kt\":\n            return float(raw) * 0.5144\n        return float(raw)\n\n    def __str__(self):\n        \"\"\"override str()\"\"\"\n        return (\n            f\"RAOB from {self.station} valid {self.valid} \"\n            f\"with {len(self.profile)} levels\"\n        )\n\n    def database_save(self, txn):\n        \"\"\"Save this to the provided database cursor\"\"\"\n        txn.execute(\n            \"SELECT fid from raob_flights where station = %s and valid = %s\",\n            (self.station, self.valid),\n        )\n        if txn.rowcount == 0:\n            txn.execute(\n                \"INSERT into raob_flights (valid, station, release_time, \"\n                \"hydro_level, maxwd_level, tropo_level, computed) \"\n                \"values (%s,%s,%s,%s,%s,%s, 'f') RETURNING fid\",\n                (\n                    self.valid,\n                    self.station,\n                    self.release_time,\n                    self.hydro_level,\n                    self.maxwd_level,\n                    self.tropo_level,\n                ),\n            )\n        fid = txn.fetchone()[0]\n        # update ingested_at timestamp\n        txn.execute(\n            \"UPDATE raob_flights SET ingested_at = now() where fid = %s\",\n            (fid,),\n        )\n        txn.execute(\"DELETE from raob_profile where fid = %s\", (fid,))\n        if txn.rowcount > 0 and self.valid.hour in [0, 12]:\n            LOG.info(\n                \"RAOB del %s rows for sid: %s valid: %s\",\n                txn.rowcount,\n                self.station,\n                self.valid.strftime(\"%Y-%m-%d %H\"),\n            )\n        table = f\"raob_profile_{self.valid.year}\"\n        for d in self.profile:\n            txn.execute(\n                f\"INSERT into {table} (fid, ts, levelcode, pressure, height, \"\n                \"tmpc, dwpc, drct, smps, bearing, range_miles) \"\n                \"VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)\",\n                (\n                    fid,\n                    d[\"ts\"],\n                    d[\"levelcode\"],\n                    d[\"pressure\"],\n                    d[\"height\"],\n                    d[\"tmpc\"],\n                    d[\"dwpc\"],\n                    d[\"drct\"],\n                    d[\"smps\"],\n                    d[\"bearing\"],\n                    d[\"range\"],\n                ),\n            )\n\n\ndef conv(raw: str):\n    \"\"\"Convert raw string to database value\"\"\"\n    val = float(raw)\n    if val < -9998:\n        return None\n    return float(raw)\n\n\ndef parse(raw):\n    \"\"\"Parse the raw data and yield RAOB objects\"\"\"\n    rob = RAOB()\n    rob.wind_units = \"kt\"  # sigh\n    meat = raw[raw.find(\"%RAW%\") + 5 : raw.find(\"%END%\")].strip()\n    # Sigh, duplicate entries\n    last_pressure = None\n    for line in meat.split(\"\\n\"):\n        tokens = line.strip().split(\",\")\n        if len(tokens) != 6:\n            continue\n        pressure = conv(tokens[0])\n        if pressure is None or pressure == last_pressure:\n            continue\n        last_pressure = pressure\n        rob.profile.append(\n            {\n                \"levelcode\": 4,  # sigh\n                \"pressure\": pressure,\n                \"height\": conv(tokens[1]),\n                \"tmpc\": conv(tokens[2]),\n                \"dwpc\": conv(tokens[3]),\n                \"drct\": conv(tokens[4]),\n                \"smps\": rob.conv_speed(tokens[5]),\n                \"ts\": None,\n                \"bearing\": None,\n                \"range\": None,\n            }\n        )\n    return rob\n\n\ndef main(valid, station):\n    \"\"\"Run for the given valid time!\"\"\"\n    LOG.info(\"running for %s\", valid)\n    nt = NetworkTable(\"RAOB\")\n    dbconn = get_dbconn(\"raob\")\n    # check what we have\n    with get_sqlalchemy_conn(\"raob\") as conn:\n        obs = pd.read_sql(\n            sql_helper(\n                \"\"\"SELECT station, locked, count(*),\n            sum(case when smps is null then 1 else 0 end) as nullcnt from\n            raob_flights f JOIN {table} p\n            ON (f.fid = p.fid) where valid = :valid GROUP by station, locked\n            ORDER by station ASC\n            \"\"\",\n                table=f\"raob_profile_{valid:%Y}\",\n            ),\n            conn,\n            params={\"valid\": valid},\n            index_col=\"station\",\n        )\n    obs[\"added\"] = 0\n    sids = list(nt.sts.keys())\n    if station in nt.sts:\n        sids = [station]\n\n    progress = tqdm(sids, disable=not sys.stdout.isatty())\n    for sid in progress:\n        # skip virtual sites\n        if sid.startswith(\"_\"):\n            continue\n        if sid in obs.index:\n            # skip sites that are locked\n            if obs.at[sid, \"locked\"]:\n                LOG.warning(\"skipping locked %s\", sid)\n                continue\n            # arb decision that we have enough data already\n            if obs.at[sid, \"nullcnt\"] < 10 < obs.at[sid, \"count\"]:\n                continue\n        progress.set_description(sid)\n        sid3 = sid.removeprefix(\"K\")\n        uri = (\n            \"https://www.spc.noaa.gov/exper/soundings/\"\n            f\"{valid:%y%m%d%H}_OBS/{sid3}.txt\"\n        )\n        try:\n            resp = httpx.get(uri, timeout=30)\n            resp.raise_for_status()\n        except Exception as exp:\n            LOG.info(\"dl failed %s for %s with %s\", sid, valid, exp)\n            continue\n        cursor = dbconn.cursor()\n        try:\n            rob = parse(resp.text)\n            if rob is None:\n                continue\n            rob.station = sid\n            rob.valid = valid\n            obs.at[sid, \"added\"] = len(rob.profile)\n            rob.database_save(cursor)\n        except Exception as exp:\n            fn = f\"/tmp/{sid}_{valid:%Y%m%d%H%M}_fail\"\n            LOG.warning(\"FAIL %s %s %s, content at %s\", sid, valid, exp, fn)\n            with open(fn, \"wb\") as fh:\n                fh.write(resp.content)\n        finally:\n            cursor.close()\n            dbconn.commit()\n    LOG.info(\"%s entered %s levels of data\", valid, obs[\"added\"].sum())\n    df2 = obs[obs[\"count\"] == 0]\n    if len(df2.index) > 40:\n        LOG.info(\"%s high missing count of %s\", valid, len(df2.index))\n\n\n@click.command()\n@click.option(\"--valid\", type=click.DateTime(), required=True)\n@click.option(\"--station\", type=str, default=None)\ndef frontend(valid: datetime, station: str | None):\n    \"\"\"Figure out what we need to do here!\"\"\"\n    valid = valid.replace(tzinfo=timezone.utc)\n    main(valid, station)\n\n\nif __name__ == \"__main__\":\n    frontend()\n"
  },
  {
    "path": "scripts/uscrn/compute_uscrn_pday.py",
    "content": "\"\"\"Compute the daily USCRN precipitation total.\n\nCalled from `RUN_20_AFTER.sh` for current date.\nCalled from `RUN_12Z.sh` for yesterday and a week ago.\n\"\"\"\n\nfrom datetime import datetime, timedelta, timezone\nfrom zoneinfo import ZoneInfo\n\nimport click\nimport pandas as pd\nfrom metpy.units import units\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn, sql_helper\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\nMM = units(\"mm\")\nINCH = units(\"inch\")\n\n\ndef _do_update(icursor, valid, iemid, precip):\n    \"\"\"Inline.\"\"\"\n    icursor.execute(\n        f\"UPDATE summary_{valid.year} SET pday = %s \"\n        \"WHERE day = %s and iemid = %s\",\n        (precip, valid.date(), iemid),\n    )\n    return icursor.rowcount\n\n\ndef run(valid: datetime):\n    \"\"\"Do Work.\"\"\"\n    nt = NetworkTable(\"USCRN\")\n    iem_pgconn = get_dbconn(\"iem\")\n    LOG.info(\"Processing %s\", valid.date())\n    with get_sqlalchemy_conn(\"uscrn\") as conn:\n        # Fetch enough data to cross all the dates\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n    SELECT station, valid at time zone 'UTC' as utc_valid, precip_mm\n    from alldata where valid > :sts and valid < :ets\"\"\"),\n            conn,\n            params={\n                \"sts\": valid - timedelta(days=1),\n                \"ets\": valid + timedelta(days=2),\n            },\n            index_col=None,\n        )\n    if df.empty:\n        LOG.info(\"No data found for date: %s\", valid.date())\n        return\n    df[\"utc_valid\"] = df[\"utc_valid\"].dt.tz_localize(timezone.utc)\n    for station in nt.sts:\n        iemid = nt.sts[station][\"iemid\"]\n        tz = ZoneInfo(nt.sts[station][\"tzname\"])\n        sts = datetime(valid.year, valid.month, valid.day, tzinfo=tz)\n        ets = sts + timedelta(days=1)\n        df2 = df[\n            (df[\"station\"] == station)\n            & (df[\"utc_valid\"] > sts)\n            & (df[\"utc_valid\"] <= ets)\n        ]\n        if df2.empty:\n            continue\n        precip = (df2[\"precip_mm\"].sum() * MM).to(INCH).m\n        LOG.info(\"station: %s precip: %.2f\", station, precip)\n        icursor = iem_pgconn.cursor()\n\n        if _do_update(icursor, valid, iemid, precip) == 0:\n            LOG.info(\"Adding summary table entry for %s %s\", iemid, valid)\n            icursor.execute(\n                f\"INSERT into summary_{valid.year}(iemid, day) \"\n                \"VALUES (%s, %s)\",\n                (iemid, valid.date()),\n            )\n            _do_update(icursor, valid, iemid, precip)\n        icursor.close()\n        iem_pgconn.commit()\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), required=True)\ndef main(dt: datetime):\n    \"\"\"Go Main Go.\"\"\"\n    run(dt)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/usdm/process_usdm.py",
    "content": "\"\"\"IEM Processing of the USDM Shapefiles.\n\nCalled from dedicated crontab\n\"\"\"\n\nimport glob\nimport os\nimport subprocess\nimport tempfile\nimport zipfile\nfrom datetime import date, datetime, timedelta\n\nimport click\nimport fiona\nimport httpx\nfrom pyiem.database import get_dbconnc\nfrom pyiem.util import exponential_backoff, logger\nfrom shapely.geometry import MultiPolygon, shape\n\nLOG = logger()\nBASEURL = \"https://droughtmonitor.unl.edu/data/shapefiles_m/\"\n\n\ndef database_save(dt: date, shpfn):\n    \"\"\"Save to our databasem please\"\"\"\n    pgconn, cursor = get_dbconnc(\"postgis\")\n    cursor.execute(\"DELETE from usdm where valid = %s\", (dt,))\n    if cursor.rowcount > 0:\n        LOG.info(\"    database delete removed %s rows\", cursor.rowcount)\n    with fiona.open(shpfn) as shps:\n        for shp in shps:\n            geo = shape(shp[\"geometry\"])\n            if geo.geom_type == \"Polygon\":\n                geo = MultiPolygon([geo])\n            cursor.execute(\n                \"INSERT into usdm(valid, dm, geom) VALUES \"\n                \"(%s, %s, st_setsrid(st_geomfromtext(%s), 4326))\",\n                (dt, shp[\"properties\"][\"DM\"], geo.wkt),\n            )\n    cursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\ndef workflow(dt: date, routes):\n    \"\"\"Do work for this date\"\"\"\n    # 1. get file from USDM website\n    url = f\"{BASEURL}USDM_{dt:%Y%m%d}_M.zip\"\n    LOG.info(\"Fetching %s\", url)\n    req = exponential_backoff(httpx.get, url, timeout=30)\n    if req is None:\n        LOG.info(\"Download full fail: %s\", url)\n        return\n    if req.status_code != 200:\n        LOG.info(\"Download failed for: %s code: %s\", url, req.status_code)\n        return\n    tmp = tempfile.NamedTemporaryFile(suffix=\".zip\", delete=False)\n    tmp.write(req.content)\n    tmp.close()\n    zipfp = zipfile.ZipFile(tmp.name, \"r\")\n    shpfn = None\n    for name in zipfp.namelist():\n        with open(f\"/tmp/{name}\", \"wb\") as fp:\n            fp.write(zipfp.read(name))\n        if name[-3:] == \"shp\":\n            shpfn = f\"/tmp/{name}\"\n    # 2. Save it to the database\n    database_save(dt, shpfn)\n    # 3. Send it to LDM for current and archive writing\n    for fn in glob.glob(f\"/tmp/USDM_{dt:%Y%m%d}*\"):\n        suffix = fn.split(\"/\")[-1].split(\".\", 1)[1]\n        cmd = [\n            \"pqinsert\",\n            \"-i\",\n            \"-p\",\n            f\"data {routes} {dt:%Y%m%d}0000 \"\n            f\"gis/shape/4326/us/dm_current.{suffix} \"\n            f\"GIS/usdm/{fn.split('/')[-1]} bogus\",\n            fn,\n        ]\n        LOG.info(\" \".join(cmd))\n        subprocess.call(cmd)\n        os.unlink(fn)\n    # 4. Clean up after ourself\n    os.unlink(tmp.name)\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), help=\"Specific date\")\ndef main(dt: datetime | None):\n    \"\"\"Go Main Go\"\"\"\n    if dt is None:\n        # Run for most recent Tuesday\n        today = date.today()\n        routes = \"ac\"\n    else:\n        today = dt.date()\n        routes = \"a\"\n    offset = (today.weekday() - 1) % 7\n    tuesday = today - timedelta(days=offset)\n    workflow(tuesday, routes)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/util/list_stale_autoplots.py",
    "content": "\"\"\"Look into which autoplots have not been used in a while\"\"\"\n\nimport re\n\nimport pandas as pd\nfrom pyiem.database import get_dbconnc\n\nQRE = re.compile(\"q=([0-9]+)\")\nNO_FEATURES = [\n    31,  # not useful\n    33,  # too pidgeon-holed\n    68,  # nws unique VTEC types per year\n    81,  # stddev daily temps, too boring\n    91,  # hated by myself and the general public\n    96,  # one-off showing precip biases\n    94,  # one-off showing temp biases\n    111,  # Duplicate of 134\n    112,  # no plot option\n    114,\n    117,\n    118,\n    119,\n    120,\n    121,\n    122,\n    123,\n    124,  # climodat text-only reports\n    141,  # yieldfx plots\n    144,  # soil temp periods, too fragile of data to be useful\n    152,  # growing season differences, too noisey\n    158,  # Tall towers plot\n    177,  # ISUSM plot linked to other app\n    203,  # Handled by dedicated PHP page\n]\n\n\ndef main():\n    \"\"\"DO Something\"\"\"\n    pgconn, cursor = get_dbconnc(\"mesosite\")\n\n    cursor.execute(\n        \"SELECT valid, appurl from feature WHERE appurl is not null \"\n        \"and appurl != ''\"\n    )\n    rows = {}\n    for row in cursor:\n        appurl = row[\"appurl\"]\n        valid = row[\"valid\"]\n        if appurl.find(\"/plotting/auto/\") != 0:\n            continue\n        tokens = QRE.findall(appurl)\n        if not tokens:\n            print(f\"appurl: {appurl} valid: {valid} failed RE\")\n            continue\n        appid = int(tokens[0])\n        if appid in NO_FEATURES:\n            continue\n        res = rows.setdefault(appid, valid)\n        if res < valid:\n            rows[appid] = valid\n    pgconn.close()\n    if not rows:\n        print(\"No data found\")\n        return\n    df = pd.DataFrame.from_dict(rows, orient=\"index\")\n    df.columns = [\"valid\"]\n    maxval = df.index.max()\n    for i in range(1, maxval):\n        if i not in rows and i not in NO_FEATURES:\n            print(f\"No entries for: {i:4.0f}\")\n    df = df.sort_values(by=\"valid\")\n    print(df.head(20))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/util/make_archive_baseline.py",
    "content": "\"\"\"Setup some baseline archive folders / files to prevent 404s\n\n - RIDGE folders\n - NOAAport archive files\n\nSince we have web scrapers, we need to have empty folders to keep the Server\nfrom having lots of 404s\n\ncalled from RUN_0Z.sh\n\"\"\"\n\nimport os\nimport subprocess\nfrom datetime import datetime\n\nimport click\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import utc\n\nPRODS = {\n    \"NEXRAD\": [\"N0B\", \"N0S\"],\n    \"TWDR\": [\"TZL\", \"TV0\"],\n}\nPILS = (\n    \"LSR|FWW|CFW|TCV|RFW|FFA|SVR|TOR|SVS|SMW|MWS|NPW|WCN|WSW|EWW|FLS\"\n    \"|FLW|SPS|SEL|SWO|FFW|DSW|SQW\"\n).split(\"|\")\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime())\ndef main(dt: datetime | None):\n    \"\"\"Go Main Go\"\"\"\n    if dt is None:\n        ts = utc()\n    else:\n        ts = utc(dt.year, dt.month, dt.day)\n    nt = NetworkTable([\"NEXRAD\", \"TWDR\"])\n    for sid in nt.sts:\n        for prod in PRODS[nt.sts[sid][\"network\"]]:\n            pqstr = (\n                f\"data d {ts:%Y%m%d%H%M} GIS/ridge/{sid}/{prod} \"\n                f\"GIS/ridge/{sid}/{prod} bogus\"\n            )\n            subprocess.call([\"pqinsert\", \"-i\", \"-p\", pqstr, \"/etc/fstab\"])\n\n    # Do noaaport text\n    basedir = ts.strftime(\"/mesonet/ARCHIVE/data/%Y/%m/%d/text/noaaport\")\n    if os.path.isdir(basedir):\n        os.chdir(basedir)\n    for pil in PILS:\n        fn = f\"{pil}_{ts:%Y%m%d}.txt\"\n        if not os.path.isfile(fn):\n            pqstr = (\n                f\"data t {ts:%Y%m%d%H%M} text/noaaport/{fn} \"\n                f\"text/noaaport/{fn} bogus\"\n            )\n            subprocess.call([\"pqinsert\", \"-i\", \"-p\", pqstr, \"/etc/fstab\"])\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/util/monthly.sh",
    "content": "# This process copies data around to longer term locations on a monthly basis\n# run from RUN_2AM.sh on the 2nd each month\nexport MM=\"${2}\"\nexport YY=\"${1}\"\nexport YYYY=\"20${YY}\"\n\ncd /mesonet/data/text/sao/\ngzip ${YY}${MM}????.sao\nmkdir -p /mesonet/ARCHIVE/raw/sao/${YYYY}_${MM}\nmv ${YY}${MM}????.sao.gz /mesonet/ARCHIVE/raw/sao/${YYYY}_${MM}/\n\ncd /mesonet/data/gempak/asos\nmkdir -p /mesonet/ARCHIVE/gempak/surface/ASOS/${YYYY}_${MM}\nmv ${YY}${MM}??_asos.gem /mesonet/ARCHIVE/gempak/surface/ASOS/${YYYY}_${MM}/\n\ncd /mesonet/data/gempak/meso\nmkdir -p /mesonet/ARCHIVE/gempak/surface/mesonet/${YYYY}_${MM}\nmv ${YY}${MM}??_meso.gem /mesonet/ARCHIVE/gempak/surface/mesonet/${YYYY}_${MM}/\n\ncd /mesonet/data/gempak/sao\nmkdir -p /mesonet/ARCHIVE/gempak/surface/sao/${YYYY}_${MM}\nmv ${YY}${MM}??_sao.gem /mesonet/ARCHIVE/gempak/surface/sao/${YYYY}_${MM}/\n"
  },
  {
    "path": "scripts/util/pick_state.py",
    "content": "\"\"\"Pick a state to run.\"\"\"\n\nfrom datetime import date\n\nfrom pyiem.reference import state_names\n\n\ndef main():\n    \"\"\"Go.\"\"\"\n    states = list(state_names.keys())\n    states.sort()\n    doy = date.today().timetuple().tm_yday\n    print(states[doy % len(states)])\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/util/poker2afos.py",
    "content": "\"\"\"Ingest the files kindly sent to me by poker\"\"\"\n\nimport glob\nimport os\nimport re\nimport subprocess\nfrom datetime import datetime, timedelta, timezone\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.nws.product import TextProduct\nfrom pyiem.util import noaaport_text\n\nBAD_CHARS = r\"[^\\n\\r\\001\\003a-zA-Z0-9:\\(\\)\\%\\.,\\s\\*\\-\\?\\|/><&$=\\+\\@]\"\nPGCONN = get_dbconn(\"afos\")\nXREF_SOURCE = {\n    \"KABE\": \"KPHI\",\n    \"KABI\": \"KSJT\",\n    \"KACT\": \"KFWD\",\n    \"KACY\": \"KPHI\",\n    \"KAEL\": \"KMPX\",\n    \"KAGS\": \"KCAE\",\n    \"KAHN\": \"KFFC\",\n    \"KAIA\": \"KCYS\",\n    \"KAID\": \"KIND\",\n    \"KALB\": \"KALY\",\n    \"KALO\": \"KDMX\",\n    \"KALS\": \"KPUB\",\n    \"KALW\": \"KPDT\",\n    \"KANW\": \"KLBF\",\n    \"KAPN\": \"KAPX\",\n    \"KAQQ\": \"KTAE\",\n    \"KARB\": \"KDTX\",\n    \"KAST\": \"KPQR\",\n    \"KATL\": \"KFFC\",\n    \"KATR\": \"KALR\",\n    \"KAUB\": \"KBMX\",\n    \"KAUO\": \"KBMX\",\n    \"KAUS\": \"KEWX\",\n    \"KAVL\": \"KGSP\",\n    \"KAVP\": \"KBGM\",\n    \"KAYS\": \"KJAX\",\n    \"KBAK\": \"KIND\",\n    \"KBBW\": \"KLBF\",\n    \"KBDL\": \"KBOX\",\n    \"KBDR\": \"KOKX\",\n    \"KBFF\": \"KCYS\",\n    \"KBFI\": \"KSEW\",\n    \"KBFL\": \"KHNX\",\n    \"KBHM\": \"KBMX\",\n    \"KBIE\": \"KOAX\",\n    \"KBIH\": \"KVEF\",\n    \"KBIL\": \"KBYZ\",\n    \"KBIM\": \"KBMX\",\n    \"KBIX\": \"KLIX\",\n    \"KBKW\": \"KRLX\",\n    \"KBLU\": \"KSTO\",\n    \"KBNA\": \"KOHX\",\n    \"KBNO\": \"KBOI\",\n    \"KBOS\": \"KBOX\",\n    \"KBPT\": \"KLCH\",\n    \"KBRL\": \"KDVN\",\n    \"KBTM\": \"KMSO\",\n    \"KBTR\": \"KLIX\",\n    \"KBVE\": \"KLIX\",\n    \"KBWI\": \"KLWX\",\n    \"KCAK\": \"KCLE\",\n    \"KCDR\": \"KCYS\",\n    \"KCEC\": \"KEKA\",\n    \"KCFV\": \"KICT\",\n    \"KCGI\": \"KPAH\",\n    \"KCHA\": \"KMRX\",\n    \"KCHH\": \"KBOX\",\n    \"KCHI\": \"KLOT\",\n    \"KCIC\": \"KSTO\",\n    \"KCID\": \"KDVN\",\n    \"KCIN\": \"KTIR\",\n    \"KCIR\": \"KPAH\",\n    \"KCKL\": \"KBMX\",\n    \"KCLL\": \"KHGX\",\n    \"KCLT\": \"KGSP\",\n    \"KCMH\": \"KILN\",\n    \"KCNK\": \"KTOP\",\n    \"KCNU\": \"KICT\",\n    \"KCON\": \"KGYX\",\n    \"KCOS\": \"KPUB\",\n    \"KCOU\": \"KLSX\",\n    \"KCPR\": \"KRIW\",\n    \"KCRW\": \"KRLX\",\n    \"KCSG\": \"KFFC\",\n    \"KCSM\": \"KOUN\",\n    \"KCVG\": \"KILN\",\n    \"KCZD\": \"KGID\",\n    \"KDAB\": \"KMLB\",\n    \"KDAY\": \"KILN\",\n    \"KDBQ\": \"KDVN\",\n    \"KDCA\": \"KLWX\",\n    \"KDEN\": \"KBOU\",\n    \"KDFW\": \"KFWD\",\n    \"KDLF\": \"KEWX\",\n    \"KDRA\": \"KVEF\",\n    \"KDRT\": \"KEWX\",\n    \"KDSM\": \"KDMX\",\n    \"KDTL\": \"KFGF\",\n    \"KDTW\": \"KDTX\",\n    \"KEAR\": \"KGID\",\n    \"KEAT\": \"KOTX\",\n    \"KEAU\": \"KMPX\",\n    \"KEDW\": \"KHNX\",\n    \"KEEW\": \"KGRB\",\n    \"KEKN\": \"KRLX\",\n    \"KEKO\": \"KLKN\",\n    \"KEKY\": \"KLKN\",\n    \"KELO\": \"KDLH\",\n    \"KELP\": \"KEPZ\",\n    \"KELY\": \"KLKN\",\n    \"KEMP\": \"KTOP\",\n    \"KEND\": \"KOUN\",\n    \"KENW\": \"KMKX\",\n    \"KERI\": \"KCLE\",\n    \"KERL\": \"KBOU\",\n    \"KESC\": \"KMQT\",\n    \"KESF\": \"KLCH\",\n    \"KEUG\": \"KPQR\",\n    \"KEVV\": \"KPAH\",\n    \"KEWR\": \"KOKX\",\n    \"KEYW\": \"KKEY\",\n    \"KFAR\": \"KFGF\",\n    \"KFAT\": \"KHNX\",\n    \"KFBL\": \"KMPX\",\n    \"KFCA\": \"KMSO\",\n    \"KFCL\": \"KBOU\",\n    \"KFFM\": \"KFGF\",\n    \"KFLG\": \"KFGZ\",\n    \"KFMY\": \"KTBW\",\n    \"KFNB\": \"KOAX\",\n    \"KFNT\": \"KDTX\",\n    \"KFOE\": \"KTOP\",\n    \"KFRI\": \"KTOP\",\n    \"KFRM\": \"KMPX\",\n    \"KFSI\": \"KOUN\",\n    \"KFSM\": \"KLZK\",\n    \"KFTW\": \"KFWD\",\n    \"KFWA\": \"KIWX\",\n    \"KGCK\": \"KDDC\",\n    \"KGEG\": \"KOTX\",\n    \"KGGG\": \"KSHV\",\n    \"KGLS\": \"KHGX\",\n    \"KGPZ\": \"KDLH\",\n    \"KGRI\": \"KGID\",\n    \"KGSO\": \"KRAH\",\n    \"KGTF\": \"KTFX\",\n    \"KGVW\": \"KEAX\",\n    \"KHAR\": \"KCTP\",\n    \"KHAT\": \"KILM\",\n    \"KHCO\": \"KFGF\",\n    \"KHDO\": \"KEWX\",\n    \"KHFD\": \"KBOX\",\n    \"KHLC\": \"KGLD\",\n    \"KHLN\": \"KTFX\",\n    \"KHMN\": \"KEPZ\",\n    \"KHMS\": \"KPDT\",\n    \"KHNF\": \"KOTX\",\n    \"KHON\": \"KFSD\",\n    \"KHOU\": \"KHGX\",\n    \"KHSI\": \"KGID\",\n    \"KHST\": \"KMFL\",\n    \"KHSV\": \"KHUN\",\n    \"KHTL\": \"KAPX\",\n    \"KHTS\": \"KRLX\",\n    \"KHUT\": \"KICT\",\n    \"KHVN\": \"KOKX\",\n    \"KHVR\": \"KTFX\",\n    \"KIAB\": \"KICT\",\n    \"KIAD\": \"KLWX\",\n    \"KIAH\": \"KHGX\",\n    \"KILG\": \"KPHI\",\n    \"KIML\": \"KLBF\",\n    \"KINL\": \"KDLH\",\n    \"KINT\": \"KRAH\",\n    \"KINW\": \"KFGZ\",\n    \"KIPT\": \"KCTP\",\n    \"KISN\": \"KBIS\",\n    \"KIXD\": \"KEAX\",\n    \"KJEF\": \"KLSX\",\n    \"KJFK\": \"KOKX\",\n    \"KJLN\": \"KSGF\",\n    \"KJNU\": \"PAJK\",\n    \"KLAA\": \"KPUB\",\n    \"KLAF\": \"KIND\",\n    \"KLAN\": \"KGRR\",\n    \"KLAS\": \"KVEF\",\n    \"KLAX\": \"KLOX\",\n    \"KLBB\": \"KLUB\",\n    \"KLEX\": \"KLMK\",\n    \"KLGA\": \"KOKX\",\n    \"KLGB\": \"KLOX\",\n    \"KLIC\": \"KBOU\",\n    \"KLIT\": \"KLZK\",\n    \"KLIZ\": \"KCAR\",\n    \"KLMT\": \"KMFR\",\n    \"KLND\": \"KRIW\",\n    \"KLNK\": \"KOAX\",\n    \"KLSE\": \"KARX\",\n    \"KLWC\": \"KTOP\",\n    \"KLWS\": \"KOTX\",\n    \"KLXV\": \"KPUB\",\n    \"KLYH\": \"KRNK\",\n    \"KMAI\": \"KTAE\",\n    \"KMCI\": \"KEAX\",\n    \"KMCK\": \"KGLD\",\n    \"KMCN\": \"KFFC\",\n    \"KMCO\": \"KMLB\",\n    \"KMCW\": \"KDMX\",\n    \"KMCX\": \"KIND\",\n    \"KMEI\": \"KJAN\",\n    \"KMEM\": \"KMEG\",\n    \"KMFD\": \"KCLE\",\n    \"KMGM\": \"KBMX\",\n    \"KMHK\": \"KTOP\",\n    \"KMIA\": \"KMFL\",\n    \"KMKC\": \"KWNS\",\n    \"KMKE\": \"KMKX\",\n    \"KMKG\": \"KGRR\",\n    \"KMHN\": \"KOAX\",\n    \"KMLI\": \"KDVN\",\n    \"KMML\": \"KFSD\",\n    \"KMMO\": \"KLOT\",\n    \"KMOD\": \"KSTO\",\n    \"KMSN\": \"KMKX\",\n    \"KMSP\": \"KMPX\",\n    \"KMSY\": \"KLIX\",\n    \"KMTJ\": \"KGJT\",\n    \"KMXF\": \"KBMX\",\n    \"KMYF\": \"KSGX\",\n    \"KNEW\": \"KLIX\",\n    \"KNFD\": \"KWBC\",\n    \"KNMK\": \"KPHI\",\n    \"KNMW\": \"KSEW\",\n    \"KNHK\": \"KLWX\",\n    \"KNHZ\": \"KGYX\",\n    \"KNKX\": \"KSGX\",\n    \"KNMG\": \"KCRP\",\n    \"KNPA\": \"KTAE\",\n    \"KNQA\": \"KMEG\",\n    \"KNYC\": \"KOKX\",\n    \"KOAK\": \"KMTR\",\n    \"KOBS\": \"KGYX\",\n    \"KODX\": \"KGID\",\n    \"KOFF\": \"KOAX\",\n    \"KOFK\": \"KOAX\",\n    \"KOJC\": \"KEAX\",\n    \"KOKC\": \"KOUN\",\n    \"KOLM\": \"KSEW\",\n    \"KOLU\": \"KOAX\",\n    \"KOMA\": \"KOAX\",\n    \"KONL\": \"KLBF\",\n    \"KORD\": \"KLOT\",\n    \"KORF\": \"KAKQ\",\n    \"KORH\": \"KBOX\",\n    \"KORK\": \"KMHX\",\n    \"KOTM\": \"KDMX\",\n    \"KOVE\": \"KSTO\",\n    \"KOVN\": \"KOAX\",\n    \"KPBI\": \"KMFL\",\n    \"KPDR\": \"KPTR\",\n    \"KPDX\": \"KPQR\",\n    \"KPHL\": \"KPHI\",\n    \"KPHX\": \"KPSR\",\n    \"KPIA\": \"KILX\",\n    \"KPIT\": \"KPBZ\",\n    \"KPKD\": \"KFGF\",\n    \"KPKF\": \"KMKX\",\n    \"KPKS\": \"KFSD\",\n    \"KPMD\": \"KLOX\",\n    \"KPNS\": \"KMOB\",\n    \"KPSP\": \"KSGX\",\n    \"KPTT\": \"KDDC\",\n    \"KPVD\": \"KBOX\",\n    \"KPWK\": \"KLOT\",\n    \"KPWM\": \"KGYX\",\n    \"KPZQ\": \"KAPX\",\n    \"KRAL\": \"KSGX\",\n    \"KRAP\": \"KUNR\",\n    \"KRBL\": \"KSTO\",\n    \"KRBO\": \"KCRP\",\n    \"KRDD\": \"KSTO\",\n    \"KRDM\": \"KPDT\",\n    \"KRDU\": \"KRAH\",\n    \"KRFD\": \"KLOT\",\n    \"KRIC\": \"KAKQ\",\n    \"KRIV\": \"KSGX\",\n    \"KRKS\": \"KRIW\",\n    \"KRME\": \"KBGM\",\n    \"KRMG\": \"KFFC\",\n    \"KRMI\": \"KMFL\",\n    \"KRND\": \"KEWX\",\n    \"KRNO\": \"KREV\",\n    \"KROA\": \"KRNK\",\n    \"KROC\": \"KBUF\",\n    \"KROK\": \"KOUN\",\n    \"KROW\": \"KABQ\",\n    \"KRPH\": \"KFWD\",\n    \"KRSE\": \"KSEW\",\n    \"KRSL\": \"KICT\",\n    \"KRBN\": \"KOHX\",\n    \"KRLA\": \"KLOX\",\n    \"KRPI\": \"KPBZ\",\n    \"KRSF\": \"KMTR\",\n    \"KRST\": \"KARX\",\n    \"KRTN\": \"KABQ\",\n    \"KRWF\": \"KMPX\",\n    \"KRWL\": \"KCYS\",\n    \"KRWM\": \"KPDT\",\n    \"KRZL\": \"KLOT\",\n    \"KRZS\": \"KSEW\",\n    \"KSAC\": \"KSTO\",\n    \"KSAD\": \"KTWC\",\n    \"KSAF\": \"KABQ\",\n    \"KSAN\": \"KSGX\",\n    \"KSAT\": \"KEWX\",\n    \"KSAV\": \"KCHS\",\n    \"KSAW\": \"KMQT\",\n    \"KSBA\": \"KLOX\",\n    \"KSBD\": \"KSGX\",\n    \"KSBN\": \"KIWX\",\n    \"KSBP\": \"KLOX\",\n    \"KSBY\": \"KAKQ\",\n    \"KSCK\": \"KSTO\",\n    \"KSDB\": \"KLOX\",\n    \"KSDF\": \"KLMK\",\n    \"KSDM\": \"KSGX\",\n    \"KSEA\": \"KSEW\",\n    \"KSEP\": \"KFWD\",\n    \"KSEZ\": \"KFGZ\",\n    \"KSFO\": \"KSTO\",\n    \"KSHK\": \"KOKX\",\n    \"KSHN\": \"KSEW\",\n    \"KSHR\": \"KBYZ\",\n    \"KSIL\": \"KLIX\",\n    \"KSJC\": \"KMTR\",\n    \"KSKA\": \"KOTX\",\n    \"KSLE\": \"KPQR\",\n    \"KSLN\": \"KICT\",\n    \"KSLO\": \"KLSX\",\n    \"KSLR\": \"KFWD\",\n    \"KSMF\": \"KSTO\",\n    \"KSMO\": \"KLOX\",\n    \"KSMP\": \"KPDT\",\n    \"KSMX\": \"KLOX\",\n    \"KSNA\": \"KSGX\",\n    \"KSNS\": \"KMTR\",\n    \"KSNT\": \"KPIH\",\n    \"KSNY\": \"KCYS\",\n    \"KSPD\": \"KPUB\",\n    \"KSPI\": \"KILX\",\n    \"KSPS\": \"KOUN\",\n    \"KSRH\": \"KEHU\",\n    \"KSRQ\": \"KTBW\",\n    \"KSSC\": \"KCAE\",\n    \"KSSI\": \"KJAX\",\n    \"KSSM\": \"KAPX\",\n    \"KSTC\": \"KMPX\",\n    \"KSTJ\": \"KEAX\",\n    \"KSTL\": \"KLSX\",\n    \"KSTN\": \"KJAN\",\n    \"KSTS\": \"KMTR\",\n    \"KSUN\": \"KPIH\",\n    \"KSUS\": \"KLSX\",\n    \"KSUU\": \"KSTO\",\n    \"KSUX\": \"KFSD\",\n    \"KSWF\": \"KOKX\",\n    \"KSXT\": \"KMFR\",\n    \"KSYR\": \"KBGM\",\n    \"KSZL\": \"KEAX\",\n    \"KTAD\": \"KPUB\",\n    \"KTCC\": \"KABQ\",\n    \"KTCL\": \"KBMX\",\n    \"KTCM\": \"KSEW\",\n    \"KTCS\": \"KEPZ\",\n    \"KTEB\": \"KOKX\",\n    \"KTLH\": \"KTAE\",\n    \"KTOL\": \"KCLE\",\n    \"KTPA\": \"KTBW\",\n    \"KTPH\": \"KLKN\",\n    \"KTRI\": \"KMRX\",\n    \"KTRK\": \"KREV\",\n    \"KTRM\": \"KSGX\",\n    \"KTTD\": \"KPQR\",\n    \"KTTS\": \"KMLB\",\n    \"KTUL\": \"KTSA\",\n    \"KTUP\": \"KMEG\",\n    \"KTUR\": \"KTUA\",\n    \"KTUS\": \"KTWC\",\n    \"KTVC\": \"KAPX\",\n    \"KTVL\": \"KREV\",\n    \"KTWF\": \"KBOI\",\n    \"KTXK\": \"KSHV\",\n    \"KTYR\": \"KSHV\",\n    \"KTYS\": \"KMRX\",\n    \"KUCA\": \"KBGM\",\n    \"KUIL\": \"KSEW\",\n    \"KUIN\": \"KLSX\",\n    \"KUKI\": \"KEKA\",\n    \"KUMN\": \"KSGF\",\n    \"KUNO\": \"KSGF\",\n    \"KUNV\": \"KCTP\",\n    \"KVBG\": \"KLOX\",\n    \"KVCT\": \"KCRP\",\n    \"KVCV\": \"KSGX\",\n    \"KVIH\": \"KSGF\",\n    \"KVLD\": \"KTAE\",\n    \"KVNY\": \"KLOX\",\n    \"KVPS\": \"KMOB\",\n    \"KVPZ\": \"KLOT\",\n    \"KVQN\": \"KAKQ\",\n    \"KVRB\": \"KMLB\",\n    \"KVTN\": \"KLBF\",\n    \"KWAL\": \"KAKQ\",\n    \"KWJF\": \"KLOX\",\n    \"KWLD\": \"KICT\",\n    \"KWMC\": \"KLKN\",\n    \"KWRI\": \"KPHI\",\n    \"KWSH\": \"KWBC\",\n    \"KWWR\": \"KOUN\",\n    \"KXMR\": \"KMLB\",\n    \"KYKM\": \"KPDT\",\n    \"KYNG\": \"KCLE\",\n    \"KYUM\": \"KPSR\",\n    \"KZZV\": \"KPBZ\",\n    \"PADK\": \"PAFC\",\n    \"PAED\": \"PAFC\",\n    \"PAEI\": \"PAFG\",\n    \"PAJN\": \"PAJK\",\n    \"PAVD\": \"PAFC\",\n    \"PAWS\": \"PAFC\",\n    \"PGUA\": \"PGUM\",\n    \"PHNL\": \"PHFO\",\n    \"PHOG\": \"PHFO\",\n}\n\n\ndef process(order):\n    \"\"\"Process this timestamp\"\"\"\n    cursor = PGCONN.cursor()\n    ts = datetime.strptime(order[:6], \"%y%m%d\").replace(tzinfo=timezone.utc)\n    base = ts - timedelta(days=2)\n    ceiling = ts + timedelta(days=2)\n    subprocess.call([\"tar\", \"-xzf\", order])\n    inserts = 0\n    deletes = 0\n    filesparsed = 0\n    bad = 0\n    for fn in glob.glob(f\"{order[:6]}[0-2][0-9].*\"):\n        with open(fn, \"rb\") as fh:\n            content = re.sub(\n                BAD_CHARS, \"\", fh.read().decode(\"ascii\", \"ignore\")\n            )\n        # Now we are getting closer, lets split by the delimter as we\n        # may have multiple products in one file!\n        for bulletin_in in content.split(\"\\001\"):\n            if bulletin_in == \"\":\n                continue\n            try:\n                bulletin = noaaport_text(bulletin_in)\n                prod = TextProduct(bulletin, utcnow=ts, parse_segments=False)\n                prod.source = XREF_SOURCE.get(prod.source, prod.source)\n            except Exception:\n                bad += 1\n                continue\n            if prod.valid < base or prod.valid > ceiling:\n                bad += 1\n                continue\n\n            tt = \"0712\" if prod.valid.month > 6 else \"0106\"\n            table = f\"products_{prod.valid.year}_{tt}\"\n            cursor.execute(\n                f\"\"\"\n                DELETE from {table} WHERE pil = %s and\n                entered = %s and source = %s and data = %s\n            \"\"\",\n                (prod.afos, prod.valid, prod.source, bulletin),\n            )\n            deletes += cursor.rowcount\n            cursor.execute(\n                f\"\"\"\n                INSERT into {table}\n                (data, pil, entered, source, wmo) values (%s,%s,%s,%s,%s)\n            \"\"\",\n                (bulletin, prod.afos, prod.valid, prod.source, prod.wmo),\n            )\n            inserts += 1\n\n        os.unlink(fn)\n        filesparsed += 1\n    print(\n        f\"{order} Files Parsed: {filesparsed} Inserts: {inserts} \"\n        f\"Deletes: {deletes} Bad: {bad}\"\n    )\n    cursor.close()\n    PGCONN.commit()\n    # remove cruft\n    for fn in glob.glob(\"*.wmo\"):\n        os.unlink(fn)\n    os.rename(order, \"a\" + order)\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    os.chdir(\"/mesonet/tmp/poker\")\n    for order in glob.glob(\"??????.DDPLUS.tar.gz\"):\n        process(order)\n\n\nif __name__ == \"__main__\":\n    # do something\n    main()\n"
  },
  {
    "path": "scripts/util/set_iemdb_etc_hosts.py",
    "content": "\"\"\"A util script used on daryl's laptop to switch 'iemdb' /etc/hosts entry.\"\"\"\n\nimport os\nimport tempfile\n\nimport click\n\nDB1, DB2, DB3, DB4 = range(4)\nIPS = \"172.16.170.1 172.16.172.1 172.16.174.1 172.16.176.1\".split()\nLOOKUP = {\n    \"\": IPS[DB1],\n    \"-afos\": IPS[DB1],\n    \"-asos\": IPS[DB3],\n    \"-asos1min\": IPS[DB1],\n    \"-awos\": IPS[DB3],\n    \"-coop\": IPS[DB2],\n    \"-dep_china\": IPS[DB1],\n    \"-dep_europe\": IPS[DB1],\n    \"-dep_sa\": IPS[DB1],\n    \"-frost\": IPS[DB1],\n    \"-hads\": IPS[DB2],\n    \"-hml\": IPS[DB3],\n    \"-id3b\": IPS[DB1],\n    \"-idep\": IPS[DB1],\n    \"-iem\": IPS[DB3],\n    \"-iembot\": IPS[DB4],\n    \"-iemre\": IPS[DB2],\n    \"-iemre_china\": IPS[DB2],\n    \"-iemre_europe\": IPS[DB2],\n    \"-iemre_sa\": IPS[DB2],\n    \"-isuag\": IPS[DB1],\n    \"-kcci\": IPS[DB1],\n    \"-mesonet\": IPS[DB1],\n    \"-mesosite\": IPS[DB2],\n    \"-mos\": IPS[DB1],\n    \"-nc1018\": IPS[DB1],\n    \"-nldn\": IPS[DB2],\n    \"-nwx\": IPS[DB1],\n    \"-openfire\": IPS[DB3],\n    \"-other\": IPS[DB1],\n    \"-portfolio\": IPS[DB1],\n    \"-postgis\": IPS[DB2],\n    \"-radar\": IPS[DB2],\n    \"-raob\": IPS[DB2],\n    \"-rtstats\": IPS[DB1],\n    \"-rwis\": IPS[DB1],\n    \"-scan\": IPS[DB1],\n    \"-smos\": IPS[DB2],\n    \"-snet\": IPS[DB3],\n    \"-squaw\": IPS[DB1],\n    \"-sustainablecorn\": IPS[DB1],\n    \"-talltowers\": IPS[DB4],\n    \"-td\": IPS[DB1],\n    \"-uscrn\": IPS[DB1],\n    \"-wepp\": IPS[DB1],\n}\n\n\n@click.command()\n@click.argument(\n    \"host\", required=True, type=click.Choice([\"local\", \"proxy\", \"test\"])\n)\ndef main(host):\n    \"\"\"Go Main Go\"\"\"\n    with open(\"/etc/hosts\", encoding=\"utf-8\") as fh:\n        data = fh.read()\n    result = []\n    for line in data.split(\"\\n\"):\n        result.append(line)\n        if line.startswith(\"# ---AUTOGEN---\"):\n            print(\"Found ---AUTOGEN---\")\n            break\n    for dbname, lkp in LOOKUP.items():\n        ip = lkp if host == \"proxy\" else \"127.0.0.1\"\n        if host == \"test\":\n            ip = \"172.16.171.1\"  # docker iem_database container\n        result.append(f\"{ip} iemdb{dbname}.local\")\n    print(f\"added {len(LOOKUP)} entries\")\n    (tmpfd, tmpfn) = tempfile.mkstemp()\n    os.write(tmpfd, (\"\\n\".join(result)).encode(\"ascii\"))\n    os.write(tmpfd, b\"\\n\")\n    os.close(tmpfd)\n    os.rename(tmpfn, \"/etc/hosts\")\n    os.chmod(\"/etc/hosts\", 0o644)\n\n    if host == \"test\":\n        print(\n            \"docker run -d -p 172.16.171.1:5432:5432 \"\n            \"ghcr.io/akrherz/iem_database:test_data\"\n        )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/webalizer/agclimate.conf",
    "content": "####################################################\n# webalizer for agclimate section, results go here:\n# https://mesonet.agron.iastate.edu/agclimate/usage/\n#\nLogType\tclf\n\nOutputDir      /mnt/webalizer/usage/agclimate/\nHistoryName\t/var/lib/webalizer/agclimate.hist\nIncremental\tyes\nDNSCache   /var/lib/webalizer/dns.cache\nIncrementalName\t/var/lib/webalizer/agclimate.current\nHostName\tmesonet.agron.iastate.edu \n\nPageType\thtml\n#PageType\tcgi\nPageType\tphtml\nPageType\tphp\n#PageType\tpy\n\n\nQuiet\t\tyes\nDNSChildren 2\nReallyQuiet\tyes\nTimeMe\t\tyes\nApacheLogFormat \"%h %l %u %t \\\"%r\\\" %>s %b \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\"\n"
  },
  {
    "path": "scripts/webalizer/combine_logs.py",
    "content": "\"\"\"Opinionated script to combine apache access logs into a single file.\n\n1. It takes a list of log files as input.\n2. One of the click based arguments is --output or -o which is the output file.\n3. The script will combine the logs into a single file.\n4. It simultaneously iterates over all files and takes entries are found and\n   to keep the result in order.\n5. If a timestamp is found in the \"past\", it is updated to use the current\n   time being interated on.\n6. The script then reports the results of how many lines were found in each\n   file and how many had their timestamps updated.\n\"\"\"\n\nimport os\nfrom datetime import datetime\n\nimport click\nfrom tqdm import tqdm\n\n\ndef replace_timestamp(log_line: str, dt: datetime) -> str:\n    \"\"\"Replace the timestamp in the log line with the given datetime.\"\"\"\n    timestamp_str = log_line.split(\"[\")[1].split(\"]\")[0]\n    new_timestamp = dt.strftime(\"%d/%b/%Y:%H:%M:%S %z\")\n    return log_line.replace(timestamp_str, new_timestamp)\n\n\ndef extract_timestamp(log_line) -> datetime:\n    \"\"\"Extract timestamp from a log line. Assumes Apache log format.\"\"\"\n    try:\n        # Example  [10/Oct/2000:13:55:36 -0700]\n        timestamp_str = log_line.split(\"[\")[1].split(\"]\")[0]\n        return datetime.strptime(timestamp_str, \"%d/%b/%Y:%H:%M:%S %z\")\n    except (IndexError, ValueError) as exp:\n        msg = f\"Could not extract timestamp from log line: {log_line}\"\n        raise ValueError(msg) from exp\n\n\ndef processor(progress, outfp, log_iters):\n    \"\"\"Do the work.\"\"\"\n    counters = {\n        \"hardcoded_timestamps\": 0,\n    }\n    # First line of each log file\n    first_lines = []\n    for logi in log_iters:\n        line = logi.readline()\n        first_lines.append((extract_timestamp(line), line))\n    current_time = min(x[0] for x in first_lines)\n    deffered = []\n    for dt, line in first_lines:\n        if dt == current_time:\n            outfp.write(line)\n        else:\n            deffered.append((dt, line))\n\n    # Iterate over all log files\n    while True:\n        for logi in log_iters:\n            while True:\n                line = logi.readline()\n                if not line:\n                    break\n                try:\n                    dt = extract_timestamp(line)\n                except ValueError:\n                    # Skip lines that do not have a valid timestamp\n                    continue\n                if dt == current_time:\n                    progress.update(1)\n                    outfp.write(line)\n                elif dt < current_time:\n                    # Replace timestamp with current time\n                    counters[\"hardcoded_timestamps\"] += 1\n                    progress.update(1)\n                    outfp.write(replace_timestamp(line, current_time))\n                else:\n                    # Defer this line for later\n                    deffered.append((dt, line))\n                    break\n        # Find the new minimum timestamp within the deferred lines\n        if not deffered:\n            break\n        deffered.sort(key=lambda x: x[0])\n        current_time = deffered[0][0]\n        # Write and remove all lines with the current time\n        for dt, line in deffered:\n            if dt == current_time:\n                progress.update(1)\n                outfp.write(line)\n                deffered.remove((dt, line))\n\n    # Print the counters\n    print(f\"Lines with hardcoded time: {counters['hardcoded_timestamps']}\")\n\n\n@click.command()\n@click.argument(\"log_files\", nargs=-1, type=click.Path(exists=True))\n@click.option(\n    \"--output\",\n    \"-o\",\n    required=True,\n    type=click.Path(),\n    help=\"Output file to write combined logs.\",\n)\ndef combine_logs(log_files, output):\n    \"\"\"Combine Apache access logs into a single file.\"\"\"\n    log_iters = []\n\n    # Open all log files and create iterators\n    for log_file in log_files:\n        log_iters.append(open(log_file))  # noqa\n\n    progress = tqdm(disable=not os.isatty(0))\n\n    with open(output, \"w\") as outfp:  # skipcq\n        processor(progress, outfp, log_iters)\n\n    # Close all log files\n    for log_iter in log_iters:\n        log_iter.close()\n\n\nif __name__ == \"__main__\":\n    combine_logs()\n"
  },
  {
    "path": "scripts/webalizer/datateam.conf",
    "content": "# Results come here\n# https://datateam.agron.iastate.edu/usage/\n\n\n# LogFile defines the web server log file to use.  If not specified\n# here or on on the command line, input will default to STDIN.\n\n#LogFile        /tmp/cocorahs_access.log\n\n# LogType defines the log type being processed.  Normally, the Webalizer\n# expects a CLF or Combined web server log as input.  Using this option,\n# you can process ftp logs as well (xferlog as produced by wu-ftp and\n# others).  Values can be 'web' or 'ftp', with 'web' the default.\n\nLogType\tclf\n\n# OutputDir is where you want to put the output files.  This should\n# should be a full path name, however relative ones might work as well.\n# If no output directory is specified, the current directory will be used.\n\nOutputDir      /mnt/webalizer/usage/datateam.agron.iastate.edu/\n\n# HistoryName allows you to specify the name of the history file produced\n# by the Webalizer.  The history file keeps the data for up to 12 months\n# worth of logs, used for generating the main HTML page (index.html).\n# The default is a file named \"webalizer.hist\", stored in the specified\n# output directory.  If you specify just the filename (without a path),\n# it will be kept in the specified output directory.  Otherwise, the path\n# is relative to the output directory, unless absolute (leading /).\n\nHistoryName\t/var/lib/webalizer/datateam.hist\n\n# Incremental processing allows multiple partial log files to be used\n# instead of one huge one.  Useful for large sites that have to rotate\n# their log files more than once a month.  The Webalizer will save its\n# internal state before exiting, and restore it the next time run, in\n# order to continue processing where it left off.  This mode also causes\n# The Webalizer to scan for and ignore duplicate records (records already\n# processed by a previous run).  See the README file for additional\n# information.  The value may be 'yes' or 'no', with a default of 'no'.\n# The file 'webalizer.current' is used to store the current state data,\n# and is located in the output directory of the program (unless changed\n# with the IncrementalName option below).  Please read at least the section\n# on Incremental processing in the README file before you enable this option.\n\nIncremental\tyes\n\n# IncrementalName allows you to specify the filename for saving the\n# incremental data in.  It is similar to the HistoryName option where the\n# name is relative to the specified output directory, unless an absolute\n# filename is specified.  The default is a file named \"webalizer.current\"\n# kept in the normal output directory.  If you don't specify \"Incremental\"\n# as 'yes' then this option has no meaning.\n\nIncrementalName\t/var/lib/webalizer/datateam.current\n\n# ReportTitle is the text to display as the title.  The hostname\n# (unless blank) is appended to the end of this string (seperated with\n# a space) to generate the final full title string.\n# Default is (for english) \"Usage Statistics for\".\n\n#ReportTitle    Usage Statistics for\n\n# HostName defines the hostname for the report.  This is used in\n# the title, and is prepended to the URL table items.  This allows\n# clicking on URL's in the report to go to the proper location in\n# the event you are running the report on a 'virtual' web server,\n# or for a server different than the one the report resides on.\n# If not specified here, or on the command line, webalizer will\n# try to get the hostname via a uname system call.  If that fails,\n# it will default to \"localhost\".\n\nHostName\tdatateam.agron.iastate.edu\n\n# HTMLExtension allows you to specify the filename extension to use\n# for generated HTML pages.  Normally, this defaults to \"html\", but\n# can be changed for sites who need it (like for PHP embeded pages).\n\n#HTMLExtension  html\n\n# PageType lets you tell the Webalizer what types of URL's you\n# consider a 'page'.  Most people consider html and cgi documents\n# as pages, while not images and audio files.  If no types are\n# specified, defaults will be used ('htm*', 'cgi' and HTMLExtension\n# if different).\n\nPageType\thtm*\nPageType\tcgi\n#PageType\tphtml\n#PageType\tphp3\n#PageType\tpl\n\n# UseHTTPS should be used if the analysis is being run on a\n# secure server, and links to urls should use 'https://' instead\n# of the default 'http://'.  If you need this, set it to 'yes'.\n# Default is 'no'.  This only changes the behaviour of the 'Top\n# URL's' table.\n\n#UseHTTPS       no\n\n# HTMLPre defines HTML code to insert at the very beginning of the\n# file.  Default is the DOCTYPE line shown below.  Max line length\n# is 80 characters, so use multiple HTMLPre lines if you need more.\n\n#HTMLPre <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n\n# HTMLHead defines HTML code to insert within the <HEAD></HEAD>\n# block, immediately after the <TITLE> line.  Maximum line length\n# is 80 characters, so use multiple lines if needed.\n\n#HTMLHead <META NAME=\"author\" CONTENT=\"The Webalizer\">\n\n# HTMLBody defined the HTML code to be inserted, starting with the\n# <BODY> tag.  If not specified, the default is shown below.  If\n# used, you MUST include your own <BODY> tag as the first line.\n# Maximum line length is 80 char, use multiple lines if needed.\n\n#HTMLBody <BODY BGCOLOR=\"#E8E8E8\" TEXT=\"#000000\" LINK=\"#0000FF\" VLINK=\"#FF0000\">\n\n# HTMLPost defines the HTML code to insert immediately before the\n# first <HR> on the document, which is just after the title and\n# \"summary period\"-\"Generated on:\" lines.  If anything, this should\n# be used to clean up in case an image was inserted with HTMLBody.\n# As with HTMLHead, you can define as many of these as you want and\n# they will be inserted in the output stream in order of apperance.\n# Max string size is 80 characters.  Use multiple lines if you need to.\n\n#HTMLPost \t<BR CLEAR=\"all\">\n\n# HTMLTail defines the HTML code to insert at the bottom of each\n# HTML document, usually to include a link back to your home\n# page or insert a small graphic.  It is inserted as a table\n# data element (ie: <TD> your code here </TD>) and is right\n# alligned with the page.  Max string size is 80 characters.\n\n#HTMLTail <IMG SRC=\"msfree.gif\" ALT=\"100% Micro$oft free!\">\n\n# HTMLEnd defines the HTML code to add at the very end of the\n# generated files.  It defaults to what is shown below.  If\n# used, you MUST specify the </BODY> and </HTML> closing tags\n# as the last lines.  Max string length is 80 characters.\n\n#HTMLEnd </BODY></HTML>\n\n# The Quiet option suppresses output messages... Useful when run\n# as a cron job to prevent bogus e-mails.  Values can be either\n# \"yes\" or \"no\".  Default is \"no\".  Note: this does not suppress\n# warnings and errors (which are printed to stderr).\n\nQuiet\t\tyes\n\n# ReallyQuiet will supress all messages including errors and\n# warnings.  Values can be 'yes' or 'no' with 'no' being the\n# default.  If 'yes' is used here, it cannot be overriden from\n# the command line, so use with caution.  A value of 'no' has\n# no effect.\n\nReallyQuiet\tyes\n\n# TimeMe allows you to force the display of timing information\n# at the end of processing.  A value of 'yes' will force the\n# timing information to be displayed.  A value of 'no' has no\n# effect.\n\n#TimeMe\t\tno\n\n# GMTTime allows reports to show GMT (UTC) time instead of local\n# time.  Default is to display the time the report was generated\n# in the timezone of the local machine, such as EDT or PST.  This\n# keyword allows you to have times displayed in UTC instead.  Use\n# only if you really have a good reason, since it will probably\n# screw up the reporting periods by however many hours your local\n# time zone is off of GMT.\n\n#GMTTime\t\tno\n\n# Debug prints additional information for error messages.  This\n# will cause webalizer to dump bad records/fields instead of just\n# telling you it found a bad one.   As usual, the value can be\n# either \"yes\" or \"no\".  The default is \"no\".  It shouldn't be\n# needed unless you start getting a lot of Warning or Error\n# messages and want to see why.  (Note: warning and error messages\n# are printed to stderr, not stdout like normal messages).\n\n#Debug\t\tno\n\n# VisitTimeout allows you to set the default timeout for a visit\n# (sometimes called a 'session').  The default is 30 minutes,\n# which should be fine for most sites.  The value is formatted\n# as HHMMSS where HH=hours MM=minutes and SS=seconds (use '00').\n# Visits are determined by looking at the time of the current\n# request, and the time of the last request from the site.  If\n# the time difference is greater than the VisitTimeout value, it\n# is considered a new visit, and visit totals are incremented.\n\n#VisitTimeout\t3000\n\n# IgnoreHist shouldn't be used in a config file, but it is here\n# just because it might be usefull in certain situations.  If the\n# history file is ignored, the main \"index.html\" file will only\n# report on the current log files contents.  Usefull only when you\n# want to reproduce the reports from scratch.  USE WITH CAUTION!\n# Valid values are \"yes\" or \"no\".  Default is \"no\".\n\n#IgnoreHist\tno\n\n# Country Graph allows the usage by country graph to be disabled.\n# Values can be 'yes' or 'no', default is 'yes'.\n\n#CountryGraph\tyes\n\n# HourlyGraph and HourlyStats allows the hourly statistics graph\n# and statistics table to be disabled (not displayed).  Values\n# may be \"yes\" or \"no\". Default is \"yes\".\n\n#HourlyGraph\tyes\n#HourlyStats\tyes\n\n# GraphLegend allows the color coded legends to be turned on or off\n# in the graphs.  The default is for them to be displayed.  This only\n# toggles the color coded legends, the other legends are not changed.\n# If you think they are hideous and ugly, say 'no' here :)\n\n#GraphLegend\tyes\n\n# GraphLines allows you to have index lines drawn behind the graphs.\n# I personally am not crazy about them, but a lot of people requested\n# them and they weren't a big deal to add.  The number represents the\n# number of lines you want displayed.  Default is 2, you can disable\n# the lines by using a value of zero ('0').  [max is 20]\n# Note, due to rounding errors, some values don't work quite right.\n# The lower the better, with 1,2,3,4,6 and 10 producing nice results.\n\n#GraphLines\t2\n\n# The \"Top\" options below define the number of entries for each table.\n# Defaults are Sites=30, URL's=30, Referrers=30 and Agents=15, and\n# Countries=50. TopKSites and TopKURLs (by KByte tables) both default\n# to 10, as do the top entry/exit tables (TopEntry/TopExit).  The top\n# search strings default to 20.  Tables may be disabled by using\n# zero (0) for the value.\n\n#TopSites        30\n#TopKSites       10\n#TopURLs         30\n#TopKURLs        10\n#TopReferrers    30\n#TopAgents       15\n#TopCountries    50\n#TopEntry        10\n#TopExit         10\nTopSearch       0\n\n# The Webalizer normally strips the string 'index.' off the end of\n# URL's in order to consolidate URL totals.  For example, the URL\n# /somedir/index.html is turned into /somedir/ which is really the\n# same URL.  This option allows you to specify additional strings\n# to treat in the same way.  You don't need to specify 'index.' as\n# it is always scanned for by The Webalizer, this option is just to\n# specify _additional_ strings if needed.  If you don't need any,\n# don't specify any as each string will be scanned for in EVERY\n# log record... A bunch of them will degrade performance.  Also,\n# the string is scanned for anywhere in the URL, so a string of\n# 'home' would turn the URL /somedir/homepages/brad/home.html into\n# just /somedir/ which is probably not what was intended.\n\n#IndexAlias     home.htm\n#IndexAlias\thomepage.htm\n\n# The Hide*, Group* and Ignore* and Include* keywords allow you to change\n# the way Sites, URL's, Referrers and User Agents are manipulated.  The\n# Ignore* keywords will cause The Webalizer to completely ignore\n# records as if they didn't exist (and thus not counted in the main\n# site totals).  The Hide* keywords will prevent things from being\n# displayed in the 'Top' tables, but will still be counted in the\n# main totals.  The Group* keywords allow grouping similar objects\n# as if they were one.  Grouped records are displayed in the 'Top'\n# tables and can optionally be displayed in BOLD and/or shaded.\n# Groups cannot be hidden, and are not counted in the main totals.\n# The Group* options do not, by default, hide all the items that\n# it matches.  If you want to hide the records that match (so just\n# the grouping record is displayed), follow with an identical Hide*\n# keyword with the same value.  (see example below)  In addition,\n# Group* keywords may have an optional label which will be displayed\n# instead of the keywords value.  The label should be seperated from\n# the value by at least one 'white-space' character, such as a space\n# or tab.\n#\n# The value can have either a leading or trailing '*' wildcard\n# character.  If no wildcard is found, a match can occur anywhere\n# in the string. Given a string \"www.yourmama.com\", the values \"your\",\n# \"*mama.com\" and \"www.your*\" will all match.\n\n# Your own site should be hidden\nHideSite\tmesonet.agron.iastate.edu\nHideSite\tiem-director0\nHideSite\tiem-director1\nHideSite\t192.168.0.2\nHideSite\t192.168.0.1\nHideSite\t192.168.0.10\nHideSite\tiem10.local\n#HideSite\tlocalhost\n\n# Your own site gives most referrals\n#HideReferrer\tmrunix.net/\n\n# This one hides non-referrers (\"-\" Direct requests)\n#HideReferrer\tDirect Request\n\n# Usually you want to hide these\n#HideURL\t\t*.gif\n#HideURL\t\t*.GIF\n#HideURL\t\t*.jpg\n#HideURL\t\t*.JPG\n#HideURL\t\t*.ra\n\n# Hiding agents is kind of futile\n#HideAgent\tRealPlayer\n\n# Grouping options\nGroupURL\t/cgi-bin/*\tCGI Scripts\nGroupURL\t/images/*\tImages\nGroupURL\t/icons/*\tIcons\nGroupURL\t/data/nexrd2/*\tLevel 2 NEXRAD\n\n#GroupSite\t*.aol.com\n#GroupSite\t*.compuserve.com\n\n#GroupReferrer\tyahoo.com/\tYahoo!\n#GroupReferrer\texcite.com/     Excite\n#GroupReferrer\tinfoseek.com/   InfoSeek\n#GroupReferrer\twebcrawler.com/ WebCrawler\n\n# The following is a great way to get an overall total\n# for browsers, and not display all the detail records.\n# (You should use MangleAgent to refine further...)\n\n#GroupAgent\tMSIE\t\tMicro$oft Internet Exploder\n#HideAgent\tMSIE\n#GroupAgent\tMozilla\t\tNetscape\n#HideAgent\tMozilla\n#GroupAgent\tLynx*\t\tLynx\n#HideAgent\tLynx*\n\n# The GroupShading allows grouped rows to be shaded in the report.\n# Useful if you have lots of groups and individual records that\n# intermingle in the report, and you want to diferentiate the group\n# records a little more.  Value can be 'yes' or 'no', with 'yes'\n# being the default.\n\n#GroupShading\tyes\n\n# GroupHighlight allows the group record to be displayed in BOLD.\n# Can be either 'yes' or 'no' with the default 'yes'.\n\n#GroupHighlight\tyes\n\n# The Ignore* keywords allow you to completely ignore log records based\n# on hostname, URL, user agent or referrer.  I hessitated in adding these,\n# since the Webalizer was designed to generate _accurate_ statistics\n# about a web servers performance.  By choosing to ignore records, the\n# accuracy of reports become skewed, negating why I wrote this program\n# in the first place.  However, due to popular demand, here they are.\n# Use the same as the Hide*/Group* keywords, where the value can have a\n# leading or trailing wildcard '*'.\n\nIgnoreSite\tiem-director0\nIgnoreSite\tiem-director1\nIgnoreSite\t10.10.10.101\nIgnoreSite\t10.10.10.102\nIgnoreSite\tgoogle.iastate.edu\nIgnoreURL\t/keepalive.phtml\n#IgnoreReferrer\tfile:/*\n#IgnoreAgent\tRealPlayer\n\n# The Include* keywords allow you to force the inclusion of log records\n# based on hostname, URL, user agent or referrer.  They take precidence\n# over the Ignore* keywords.  Note: Using Ignore/Include combinations to\n# selectivly process parts of a web site is _extremely inefficent_!!!\n# Avoid doing so if possible (ie: grep the records to a seperate file).\n\n# Example: Only show stats on Joe User's pages...\n#IgnoreURL\t*\n#IncludeURL\t~joeuser*\n\n# The MangleAgents allows you to specify how much, if any, The Webalizer\n# should mangle user agent names.  This allows several levels of detail\n# to be produced when reporting user agent statistics.  There are six\n# levels that can be specified, which define different levels of detail\n# supression.  Level 5 shows only the browser name (MSIE or Mozilla)\n# and the major version number.  Level 4 adds the minor version number\n# (single decimal place).  Level 3 displays the minor version to two\n# decimal places.  Level 2 will add any sub-level designation (such\n# as Mozilla/3.01Gold or MSIE 3.0b).  Level 1 will attempt to also add\n# the system type if it is specified.  The default Level 0 displays the\n# full user agent field without modification and produces the greatest\n# amount of detail.  User agent names that can't be mangled will be\n# left unmodified.\n\n#MangleAgents    0\n\n# End of configuration file...  Have a nice day!\n#\nApacheLogFormat \"%h %l %u %t \\\"%r\\\" %>s %b \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\"\n\n"
  },
  {
    "path": "scripts/webalizer/depbackend.conf",
    "content": "####################################################\n# webalizer for agclimate section, results go here:\n# https://mesonet-dep.agron.iastate.edu/usage/\n#\nLogType\tclf\n\nOutputDir      /mnt/webalizer/usage/depbackend/\nHistoryName\t/var/lib/webalizer/depbackend.hist\nIncremental\tyes\nDNSCache   /var/lib/webalizer/dns.cache\nIncrementalName\t/var/lib/webalizer/depbackend.current\nHostName\tmesonet-dep.agron.iastate.edu \n\nPageType\thtml\n#PageType\tcgi\nPageType\tphtml\nPageType\tphp\n#PageType\tpy\n\n\nQuiet\t\tyes\nDNSChildren 2\nReallyQuiet\tyes\nTimeMe\t\tyes\nApacheLogFormat \"%h %l %u %t \\\"%r\\\" %>s %b \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\"\n"
  },
  {
    "path": "scripts/webalizer/mesonet.conf",
    "content": "# Results come here:\n# https://mesonet.agron.iastate.edu/usage/\n\n# LogFile defines the web server log file to use.  If not specified\n# here or on on the command line, input will default to STDIN.\n\n#LogFile        /tmp/access.log\n\n# LogType defines the log type being processed.  Normally, the Webalizer\n# expects a CLF or Combined web server log as input.  Using this option,\n# you can process ftp logs as well (xferlog as produced by wu-ftp and\n# others).  Values can be 'web' or 'ftp', with 'web' the default.\n\nLogType\tclf\n\n# OutputDir is where you want to put the output files.  This should\n# should be a full path name, however relative ones might work as well.\n# If no output directory is specified, the current directory will be used.\n\nOutputDir      /mnt/webalizer/usage/mesonet.agron.iastate.edu/\n\n# HistoryName allows you to specify the name of the history file produced\n# by the Webalizer.  The history file keeps the data for up to 12 months\n# worth of logs, used for generating the main HTML page (index.html).\n# The default is a file named \"webalizer.hist\", stored in the specified\n# output directory.  If you specify just the filename (without a path),\n# it will be kept in the specified output directory.  Otherwise, the path\n# is relative to the output directory, unless absolute (leading /).\n\nHistoryName\t/var/lib/webalizer/mesonet.hist\n\n# Incremental processing allows multiple partial log files to be used\n# instead of one huge one.  Useful for large sites that have to rotate\n# their log files more than once a month.  The Webalizer will save its\n# internal state before exiting, and restore it the next time run, in\n# order to continue processing where it left off.  This mode also causes\n# The Webalizer to scan for and ignore duplicate records (records already\n# processed by a previous run).  See the README file for additional\n# information.  The value may be 'yes' or 'no', with a default of 'no'.\n# The file 'webalizer.current' is used to store the current state data,\n# and is located in the output directory of the program (unless changed\n# with the IncrementalName option below).  Please read at least the section\n# on Incremental processing in the README file before you enable this option.\n\nIncremental\tyes\n\n# ReportTitle is the text to display as the title.  The hostname\n# (unless blank) is appended to the end of this string (seperated with\n# a space) to generate the final full title string.\n# Default is (for english) \"Usage Statistics for\".\n\n#ReportTitle    Usage Statistics for\n\n# HostName defines the hostname for the report.  This is used in\n# the title, and is prepended to the URL table items.  This allows\n# clicking on URL's in the report to go to the proper location in\n# the event you are running the report on a 'virtual' web server,\n# or for a server different than the one the report resides on.\n# If not specified here, or on the command line, webalizer will\n# try to get the hostname via a uname system call.  If that fails,\n# it will default to \"localhost\".\n\nHostName\tmesonet.agron.iastate.edu \n\n# HTMLExtension allows you to specify the filename extension to use\n# for generated HTML pages.  Normally, this defaults to \"html\", but\n# can be changed for sites who need it (like for PHP embeded pages).\n\n#HTMLExtension  html\n\n# PageType lets you tell the Webalizer what types of URL's you\n# consider a 'page'.  Most people consider html and cgi documents\n# as pages, while not images and audio files.  If no types are\n# specified, defaults will be used ('htm*', 'cgi' and HTMLExtension\n# if different).\n\nPageType\thtml\n#PageType\tcgi\nPageType\tphtml\nPageType\tphp\n#PageType\tpy\n\n# UseHTTPS should be used if the analysis is being run on a\n# secure server, and links to urls should use 'https://' instead\n# of the default 'http://'.  If you need this, set it to 'yes'.\n# Default is 'no'.  This only changes the behaviour of the 'Top\n# URL's' table.\n\n#UseHTTPS       no\n\n# HTMLPre defines HTML code to insert at the very beginning of the\n# file.  Default is the DOCTYPE line shown below.  Max line length\n# is 80 characters, so use multiple HTMLPre lines if you need more.\n\n#HTMLPre <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n\n# HTMLHead defines HTML code to insert within the <HEAD></HEAD>\n# block, immediately after the <TITLE> line.  Maximum line length\n# is 80 characters, so use multiple lines if needed.\n\n#HTMLHead <META NAME=\"author\" CONTENT=\"The Webalizer\">\n\n# HTMLBody defined the HTML code to be inserted, starting with the\n# <BODY> tag.  If not specified, the default is shown below.  If\n# used, you MUST include your own <BODY> tag as the first line.\n# Maximum line length is 80 char, use multiple lines if needed.\n\n#HTMLBody <BODY BGCOLOR=\"#E8E8E8\" TEXT=\"#000000\" LINK=\"#0000FF\" VLINK=\"#FF0000\">\n\n# HTMLPost defines the HTML code to insert immediately before the\n# first <HR> on the document, which is just after the title and\n# \"summary period\"-\"Generated on:\" lines.  If anything, this should\n# be used to clean up in case an image was inserted with HTMLBody.\n# As with HTMLHead, you can define as many of these as you want and\n# they will be inserted in the output stream in order of apperance.\n# Max string size is 80 characters.  Use multiple lines if you need to.\n\n#HTMLPost \t<BR CLEAR=\"all\">\n\n# HTMLTail defines the HTML code to insert at the bottom of each\n# HTML document, usually to include a link back to your home\n# page or insert a small graphic.  It is inserted as a table\n# data element (ie: <TD> your code here </TD>) and is right\n# alligned with the page.  Max string size is 80 characters.\n\n#HTMLTail <IMG SRC=\"msfree.gif\" ALT=\"100% Micro$oft free!\">\n\n# HTMLEnd defines the HTML code to add at the very end of the\n# generated files.  It defaults to what is shown below.  If\n# used, you MUST specify the </BODY> and </HTML> closing tags\n# as the last lines.  Max string length is 80 characters.\n\n#HTMLEnd </BODY></HTML>\n\n# The Quiet option suppresses output messages... Useful when run\n# as a cron job to prevent bogus e-mails.  Values can be either\n# \"yes\" or \"no\".  Default is \"no\".  Note: this does not suppress\n# warnings and errors (which are printed to stderr).\n\nQuiet\t\tyes\n\n# ReallyQuiet will supress all messages including errors and\n# warnings.  Values can be 'yes' or 'no' with 'no' being the\n# default.  If 'yes' is used here, it cannot be overriden from\n# the command line, so use with caution.  A value of 'no' has\n# no effect.\n\nReallyQuiet\tyes\n\n# TimeMe allows you to force the display of timing information\n# at the end of processing.  A value of 'yes' will force the\n# timing information to be displayed.  A value of 'no' has no\n# effect.\n\nTimeMe\t\tyes\n\n# GMTTime allows reports to show GMT (UTC) time instead of local\n# time.  Default is to display the time the report was generated\n# in the timezone of the local machine, such as EDT or PST.  This\n# keyword allows you to have times displayed in UTC instead.  Use\n# only if you really have a good reason, since it will probably\n# screw up the reporting periods by however many hours your local\n# time zone is off of GMT.\n\n#GMTTime\t\tno\n\n# Debug prints additional information for error messages.  This\n# will cause webalizer to dump bad records/fields instead of just\n# telling you it found a bad one.   As usual, the value can be\n# either \"yes\" or \"no\".  The default is \"no\".  It shouldn't be\n# needed unless you start getting a lot of Warning or Error\n# messages and want to see why.  (Note: warning and error messages\n# are printed to stderr, not stdout like normal messages).\n\n#Debug\t\tno\n\n# VisitTimeout allows you to set the default timeout for a visit\n# (sometimes called a 'session').  The default is 30 minutes,\n# which should be fine for most sites.  The value is formatted\n# as HHMMSS where HH=hours MM=minutes and SS=seconds (use '00').\n# Visits are determined by looking at the time of the current\n# request, and the time of the last request from the site.  If\n# the time difference is greater than the VisitTimeout value, it\n# is considered a new visit, and visit totals are incremented.\n\n#VisitTimeout\t3000\n\n# IgnoreHist shouldn't be used in a config file, but it is here\n# just because it might be usefull in certain situations.  If the\n# history file is ignored, the main \"index.html\" file will only\n# report on the current log files contents.  Usefull only when you\n# want to reproduce the reports from scratch.  USE WITH CAUTION!\n# Valid values are \"yes\" or \"no\".  Default is \"no\".\n\n#IgnoreHist\tno\n\n# Country Graph allows the usage by country graph to be disabled.\n# Values can be 'yes' or 'no', default is 'yes'.\n\n#CountryGraph\tyes\n\n# HourlyGraph and HourlyStats allows the hourly statistics graph\n# and statistics table to be disabled (not displayed).  Values\n# may be \"yes\" or \"no\". Default is \"yes\".\n\n#HourlyGraph\tyes\n#HourlyStats\tyes\n\n# GraphLegend allows the color coded legends to be turned on or off\n# in the graphs.  The default is for them to be displayed.  This only\n# toggles the color coded legends, the other legends are not changed.\n# If you think they are hideous and ugly, say 'no' here :)\n\n#GraphLegend\tyes\n\n# GraphLines allows you to have index lines drawn behind the graphs.\n# I personally am not crazy about them, but a lot of people requested\n# them and they weren't a big deal to add.  The number represents the\n# number of lines you want displayed.  Default is 2, you can disable\n# the lines by using a value of zero ('0').  [max is 20]\n# Note, due to rounding errors, some values don't work quite right.\n# The lower the better, with 1,2,3,4,6 and 10 producing nice results.\n\n#GraphLines\t2\n\n# The \"Top\" options below define the number of entries for each table.\n# Defaults are Sites=30, URL's=30, Referrers=30 and Agents=15, and\n# Countries=50. TopKSites and TopKURLs (by KByte tables) both default\n# to 10, as do the top entry/exit tables (TopEntry/TopExit).  The top\n# search strings default to 20.  Tables may be disabled by using\n# zero (0) for the value.\n\n#TopSites        30\n#TopKSites       10\n#TopURLs         30\n#TopKURLs        10\n#TopReferrers    30\nTopAgents       100\n#TopCountries    50\n#TopEntry        10\n#TopExit         10\nTopSearch       0\nTopUsers\t0\n\n# The Webalizer normally strips the string 'index.' off the end of\n# URL's in order to consolidate URL totals.  For example, the URL\n# /somedir/index.html is turned into /somedir/ which is really the\n# same URL.  This option allows you to specify additional strings\n# to treat in the same way.  You don't need to specify 'index.' as\n# it is always scanned for by The Webalizer, this option is just to\n# specify _additional_ strings if needed.  If you don't need any,\n# don't specify any as each string will be scanned for in EVERY\n# log record... A bunch of them will degrade performance.  Also,\n# the string is scanned for anywhere in the URL, so a string of\n# 'home' would turn the URL /somedir/homepages/brad/home.html into\n# just /somedir/ which is probably not what was intended.\n\n#IndexAlias     home.htm\n#IndexAlias\thomepage.htm\nIndexAlias\ttile.py\nIndexAlias\tc.py\n\n# The Hide*, Group* and Ignore* and Include* keywords allow you to change\n# the way Sites, URL's, Referrers and User Agents are manipulated.  The\n# Ignore* keywords will cause The Webalizer to completely ignore\n# records as if they didn't exist (and thus not counted in the main\n# site totals).  The Hide* keywords will prevent things from being\n# displayed in the 'Top' tables, but will still be counted in the\n# main totals.  The Group* keywords allow grouping similar objects\n# as if they were one.  Grouped records are displayed in the 'Top'\n# tables and can optionally be displayed in BOLD and/or shaded.\n# Groups cannot be hidden, and are not counted in the main totals.\n# The Group* options do not, by default, hide all the items that\n# it matches.  If you want to hide the records that match (so just\n# the grouping record is displayed), follow with an identical Hide*\n# keyword with the same value.  (see example below)  In addition,\n# Group* keywords may have an optional label which will be displayed\n# instead of the keywords value.  The label should be seperated from\n# the value by at least one 'white-space' character, such as a space\n# or tab.\n#\n# The value can have either a leading or trailing '*' wildcard\n# character.  If no wildcard is found, a match can occur anywhere\n# in the string. Given a string \"www.yourmama.com\", the values \"your\",\n# \"*mama.com\" and \"www.your*\" will all match.\n\n# Your own site should be hidden\nHideSite\tmesonet.agron.iastate.edu\n\n# Your own site gives most referrals\n#HideReferrer\tmrunix.net/\n\n# This one hides non-referrers (\"-\" Direct requests)\n#HideReferrer\tDirect Request\n\n# Usually you want to hide these\n#HideURL\t\t*.gif\n#HideURL\t\t*.GIF\n#HideURL\t\t*.jpg\n#HideURL\t\t*.JPG\n#HideURL\t\t*.ra\n\n# Hiding agents is kind of futile\n#HideAgent\tRealPlayer\n\n\n# Grouping options\nGroupURL\t/images/*\tImages\nGroupURL\t/icons/*\tIcons\nGroupURL\t/data/nexrd2/*\tLevel 2 NEXRAD\nGroupURL\t/cache/*\tTilecache Long\nGroupURL\t/c/*\tTilecache Short\nGroupURL /archive/data/* Archive Data+Products\nGroupURL /plotting/auto/* Autoplotting\nGroupURL /iemre/* IEM ReAnalysis\n\nHideURL /archive/data/*\nHideURL\t/cache/*\nHideURL\t/c/*\nHideURL /plotting/auto/*\nHideURL /iemre/*\n\nIgnoreURL\t/tmp/*\n\n#GroupSite\t*.aol.com\n#GroupSite\t*.compuserve.com\n\n#GroupReferrer\tyahoo.com/\tYahoo!\n#GroupReferrer\texcite.com/     Excite\n#GroupReferrer\tinfoseek.com/   InfoSeek\n#GroupReferrer\twebcrawler.com/ WebCrawler\n\n# The following is a great way to get an overall total\n# for browsers, and not display all the detail records.\n# (You should use MangleAgent to refine further...)\n\n#GroupAgent\tMSIE\t\tMicro$oft Internet Exploder\n#HideAgent\tMSIE\n#GroupAgent\tMozilla\t\tNetscape\n#HideAgent\tMozilla\n#GroupAgent\tLynx*\t\tLynx\n#HideAgent\tLynx*\n\n# The GroupShading allows grouped rows to be shaded in the report.\n# Useful if you have lots of groups and individual records that\n# intermingle in the report, and you want to diferentiate the group\n# records a little more.  Value can be 'yes' or 'no', with 'yes'\n# being the default.\n\n#GroupShading\tyes\n\n# GroupHighlight allows the group record to be displayed in BOLD.\n# Can be either 'yes' or 'no' with the default 'yes'.\n\n#GroupHighlight\tyes\n\n# The Ignore* keywords allow you to completely ignore log records based\n# on hostname, URL, user agent or referrer.  I hessitated in adding these,\n# since the Webalizer was designed to generate _accurate_ statistics\n# about a web servers performance.  By choosing to ignore records, the\n# accuracy of reports become skewed, negating why I wrote this program\n# in the first place.  However, due to popular demand, here they are.\n# Use the same as the Hide*/Group* keywords, where the value can have a\n# leading or trailing wildcard '*'.\n\n#IgnoreReferrer\tfile:/*\n#IgnoreAgent\tRealPlayer\n\n# The Include* keywords allow you to force the inclusion of log records\n# based on hostname, URL, user agent or referrer.  They take precidence\n# over the Ignore* keywords.  Note: Using Ignore/Include combinations to\n# selectivly process parts of a web site is _extremely inefficent_!!!\n# Avoid doing so if possible (ie: grep the records to a seperate file).\n\n# Example: Only show stats on Joe User's pages...\n#IgnoreURL\t*\n#IncludeURL\t~joeuser*\n\n# The MangleAgents allows you to specify how much, if any, The Webalizer\n# should mangle user agent names.  This allows several levels of detail\n# to be produced when reporting user agent statistics.  There are six\n# levels that can be specified, which define different levels of detail\n# supression.  Level 5 shows only the browser name (MSIE or Mozilla)\n# and the major version number.  Level 4 adds the minor version number\n# (single decimal place).  Level 3 displays the minor version to two\n# decimal places.  Level 2 will add any sub-level designation (such\n# as Mozilla/3.01Gold or MSIE 3.0b).  Level 1 will attempt to also add\n# the system type if it is specified.  The default Level 0 displays the\n# full user agent field without modification and produces the greatest\n# amount of detail.  User agent names that can't be mangled will be\n# left unmodified.\n\n#MangleAgents    0\n\n# End of configuration file...  Have a nice day!\n#\nApacheLogFormat \"%h %l %u %t \\\"%r\\\" %>s %b \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\"\n#BatchProcessing yes\n#DumpURLs\tyes\nExcludeSearchArg\t*"
  },
  {
    "path": "scripts/webalizer/processlogs.sh",
    "content": "# Process the apache log files generated from the IEM cluster\n# iem\n# iemssl\n# datateam\n# sustainablecorn\n# weatherim\n#\n# RPM requirements for this workflow\n# yum -y install libdb-cxx libmaxminddb gd lftp tmpwatch\n\n# Careful as 1 day is ambiguous\nexport yyyymmdd=$(date --date '12 hours ago' +'%Y%m%d')\nexport yyyy=$(date --date '12 hours ago' +'%Y')\nexport mm=$(date --date '12 hours ago' +'%m')\nexport dd=$(date --date '12 hours ago' +'%d')\nexport yyyymm=$(date --date '12 hours ago' +'%Y%m')\n\n# IMPORTANT: iemapps needs to go first for wildcard matching life choices\nPREFIXES=\"iemapps iem datateam sustainablecorn weatherim depbackend\"\nMACHINES=\"anticyclone iemvs35-dc iemvs36-dc iemvs37-dc iemvs38-dc \\\niemvs39-dc iemvs40-dc iemvs41-dc iemvs42-dc iemvs43-dc iemvs44-dc\"\nCONFBASE=\"/opt/iem/scripts/webalizer\"\n\n# Go to temp directory, that hopefully has enough space!\ncd /mnt/webalizer/tmp\n\n# Step 1, bring all these log files back to roost and delete them remotely\nfor MACH in $MACHINES\ndo\n    scp -q root@${MACH}:/mesonet/www/logs/*-${yyyymmdd} .\n    ssh root@$MACH \"rm -f /mesonet/www/logs/*-${yyyymmdd}\"  # skipcq\n    # rename the files so that they are unique\n    for PREF in $PREFIXES\n    do\n        for filename in $(ls ${PREF}*${yyyymmdd} 2>/dev/null); do  # skipcq\n            mv $filename ${filename}-${MACH}\n        done\n    done\ndone\n\n# Step 2: Merge the log files together\nfor PREF in $PREFIXES\ndo\n    echo \"============== $PREF =============\"\n    wc -l ${PREF}*\n    # awstats merger has bugs, so using the ancient technology here\n    /usr/local/bin/mergelog ${PREF}* > combined-${PREF}.log\n    rm -f ${PREF}*\ndone\n\n# Step 3, run webalizer against these log files\n/home/mesonet/bin/webalizer -c ${CONFBASE}/mesonet.conf -T combined-iem.log\n/home/mesonet/bin/webalizer -c ${CONFBASE}/sustainablecorn.conf combined-sustainablecorn.log\n/home/mesonet/bin/webalizer -c ${CONFBASE}/weatherim.conf combined-weatherim.log\n/home/mesonet/bin/webalizer -c ${CONFBASE}/datateam.conf combined-datateam.log\n/home/mesonet/bin/webalizer -c ${CONFBASE}/depbackend.conf combined-depbackend.log\n\ngrep \" /agclimate\" combined-iem.log > agclimate.log\n/home/mesonet/bin/webalizer -c ${CONFBASE}/agclimate.conf -T agclimate.log\nrm -f agclimate.log\n\n# Copy to shared NFS space\nrsync -a --exclude *webalizer*db /mnt/webalizer/usage/. /mesonet/share/usage/  # skipcq\n\n# Step 4, archive these files\nfor PREF in $PREFIXES\ndo\n    if [ -e combined-${PREF}.log ]; then\n        mv combined-${PREF}.log ${PREF}-${yyyymmdd}.log\n        gzip ${PREF}-${yyyymmdd}.log\n    fi\ndone\n\n# Step 6, mv files to local cache\nmkdir -p ../save/$yyyy/$mm\nmv ./*-${yyyymmdd}.log.gz ../save/$yyyy/$mm/\n\n# Step 7, delete files from local cache\ncd ../save\ntmpwatch 10d .\n# Done!\n"
  },
  {
    "path": "scripts/webalizer/sustainablecorn.conf",
    "content": "# Results come here\n# http://sustainablecorn.org/usage/\n\n# LogFile defines the web server log file to use.  If not specified\n# here or on on the command line, input will default to STDIN.\n\n#LogFile        /tmp/sustainablecorn_access.log\n\n# LogType defines the log type being processed.  Normally, the Webalizer\n# expects a CLF or Combined web server log as input.  Using this option,\n# you can process ftp logs as well (xferlog as produced by wu-ftp and\n# others).  Values can be 'web' or 'ftp', with 'web' the default.\n\nLogType\tclf\n\n# OutputDir is where you want to put the output files.  This should\n# should be a full path name, however relative ones might work as well.\n# If no output directory is specified, the current directory will be used.\n\nOutputDir      /mnt/webalizer/usage/sustainablecorn.org/\n\n# HistoryName allows you to specify the name of the history file produced\n# by the Webalizer.  The history file keeps the data for up to 12 months\n# worth of logs, used for generating the main HTML page (index.html).\n# The default is a file named \"webalizer.hist\", stored in the specified\n# output directory.  If you specify just the filename (without a path),\n# it will be kept in the specified output directory.  Otherwise, the path\n# is relative to the output directory, unless absolute (leading /).\n\nHistoryName\t/var/lib/webalizer/sustainablecorn.hist\n\n# Incremental processing allows multiple partial log files to be used\n# instead of one huge one.  Useful for large sites that have to rotate\n# their log files more than once a month.  The Webalizer will save its\n# internal state before exiting, and restore it the next time run, in\n# order to continue processing where it left off.  This mode also causes\n# The Webalizer to scan for and ignore duplicate records (records already\n# processed by a previous run).  See the README file for additional\n# information.  The value may be 'yes' or 'no', with a default of 'no'.\n# The file 'webalizer.current' is used to store the current state data,\n# and is located in the output directory of the program (unless changed\n# with the IncrementalName option below).  Please read at least the section\n# on Incremental processing in the README file before you enable this option.\n\nIncremental\tyes\n\n# IncrementalName allows you to specify the filename for saving the\n# incremental data in.  It is similar to the HistoryName option where the\n# name is relative to the specified output directory, unless an absolute\n# filename is specified.  The default is a file named \"webalizer.current\"\n# kept in the normal output directory.  If you don't specify \"Incremental\"\n# as 'yes' then this option has no meaning.\n\nIncrementalName\t/var/lib/webalizer/sustainablecorn.current\n\n# ReportTitle is the text to display as the title.  The hostname\n# (unless blank) is appended to the end of this string (seperated with\n# a space) to generate the final full title string.\n# Default is (for english) \"Usage Statistics for\".\n\n#ReportTitle    Usage Statistics for\n\n# HostName defines the hostname for the report.  This is used in\n# the title, and is prepended to the URL table items.  This allows\n# clicking on URL's in the report to go to the proper location in\n# the event you are running the report on a 'virtual' web server,\n# or for a server different than the one the report resides on.\n# If not specified here, or on the command line, webalizer will\n# try to get the hostname via a uname system call.  If that fails,\n# it will default to \"localhost\".\n\nHostName\tsustainablecorn.org\n\n# HTMLExtension allows you to specify the filename extension to use\n# for generated HTML pages.  Normally, this defaults to \"html\", but\n# can be changed for sites who need it (like for PHP embeded pages).\n\n#HTMLExtension  html\n\n# PageType lets you tell the Webalizer what types of URL's you\n# consider a 'page'.  Most people consider html and cgi documents\n# as pages, while not images and audio files.  If no types are\n# specified, defaults will be used ('htm*', 'cgi' and HTMLExtension\n# if different).\n\nPageType\thtm*\nPageType\tcgi\n#PageType\tphtml\n#PageType\tphp3\n#PageType\tpl\n\n# UseHTTPS should be used if the analysis is being run on a\n# secure server, and links to urls should use 'https://' instead\n# of the default 'http://'.  If you need this, set it to 'yes'.\n# Default is 'no'.  This only changes the behaviour of the 'Top\n# URL's' table.\n\n#UseHTTPS       no\n\n# HTMLPre defines HTML code to insert at the very beginning of the\n# file.  Default is the DOCTYPE line shown below.  Max line length\n# is 80 characters, so use multiple HTMLPre lines if you need more.\n\n#HTMLPre <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n\n# HTMLHead defines HTML code to insert within the <HEAD></HEAD>\n# block, immediately after the <TITLE> line.  Maximum line length\n# is 80 characters, so use multiple lines if needed.\n\n#HTMLHead <META NAME=\"author\" CONTENT=\"The Webalizer\">\n\n# HTMLBody defined the HTML code to be inserted, starting with the\n# <BODY> tag.  If not specified, the default is shown below.  If\n# used, you MUST include your own <BODY> tag as the first line.\n# Maximum line length is 80 char, use multiple lines if needed.\n\n#HTMLBody <BODY BGCOLOR=\"#E8E8E8\" TEXT=\"#000000\" LINK=\"#0000FF\" VLINK=\"#FF0000\">\n\n# HTMLPost defines the HTML code to insert immediately before the\n# first <HR> on the document, which is just after the title and\n# \"summary period\"-\"Generated on:\" lines.  If anything, this should\n# be used to clean up in case an image was inserted with HTMLBody.\n# As with HTMLHead, you can define as many of these as you want and\n# they will be inserted in the output stream in order of apperance.\n# Max string size is 80 characters.  Use multiple lines if you need to.\n\n#HTMLPost \t<BR CLEAR=\"all\">\n\n# HTMLTail defines the HTML code to insert at the bottom of each\n# HTML document, usually to include a link back to your home\n# page or insert a small graphic.  It is inserted as a table\n# data element (ie: <TD> your code here </TD>) and is right\n# alligned with the page.  Max string size is 80 characters.\n\n#HTMLTail <IMG SRC=\"msfree.gif\" ALT=\"100% Micro$oft free!\">\n\n# HTMLEnd defines the HTML code to add at the very end of the\n# generated files.  It defaults to what is shown below.  If\n# used, you MUST specify the </BODY> and </HTML> closing tags\n# as the last lines.  Max string length is 80 characters.\n\n#HTMLEnd </BODY></HTML>\n\n# The Quiet option suppresses output messages... Useful when run\n# as a cron job to prevent bogus e-mails.  Values can be either\n# \"yes\" or \"no\".  Default is \"no\".  Note: this does not suppress\n# warnings and errors (which are printed to stderr).\n\nQuiet\t\tyes\n\n# ReallyQuiet will supress all messages including errors and\n# warnings.  Values can be 'yes' or 'no' with 'no' being the\n# default.  If 'yes' is used here, it cannot be overriden from\n# the command line, so use with caution.  A value of 'no' has\n# no effect.\n\nReallyQuiet\tyes\n\n# TimeMe allows you to force the display of timing information\n# at the end of processing.  A value of 'yes' will force the\n# timing information to be displayed.  A value of 'no' has no\n# effect.\n\n#TimeMe\t\tno\n\n# GMTTime allows reports to show GMT (UTC) time instead of local\n# time.  Default is to display the time the report was generated\n# in the timezone of the local machine, such as EDT or PST.  This\n# keyword allows you to have times displayed in UTC instead.  Use\n# only if you really have a good reason, since it will probably\n# screw up the reporting periods by however many hours your local\n# time zone is off of GMT.\n\n#GMTTime\t\tno\n\n# Debug prints additional information for error messages.  This\n# will cause webalizer to dump bad records/fields instead of just\n# telling you it found a bad one.   As usual, the value can be\n# either \"yes\" or \"no\".  The default is \"no\".  It shouldn't be\n# needed unless you start getting a lot of Warning or Error\n# messages and want to see why.  (Note: warning and error messages\n# are printed to stderr, not stdout like normal messages).\n\n#Debug\t\tno\n\n# VisitTimeout allows you to set the default timeout for a visit\n# (sometimes called a 'session').  The default is 30 minutes,\n# which should be fine for most sites.  The value is formatted\n# as HHMMSS where HH=hours MM=minutes and SS=seconds (use '00').\n# Visits are determined by looking at the time of the current\n# request, and the time of the last request from the site.  If\n# the time difference is greater than the VisitTimeout value, it\n# is considered a new visit, and visit totals are incremented.\n\n#VisitTimeout\t3000\n\n# IgnoreHist shouldn't be used in a config file, but it is here\n# just because it might be usefull in certain situations.  If the\n# history file is ignored, the main \"index.html\" file will only\n# report on the current log files contents.  Usefull only when you\n# want to reproduce the reports from scratch.  USE WITH CAUTION!\n# Valid values are \"yes\" or \"no\".  Default is \"no\".\n\n#IgnoreHist\tno\n\n# Country Graph allows the usage by country graph to be disabled.\n# Values can be 'yes' or 'no', default is 'yes'.\n\n#CountryGraph\tyes\n\n# HourlyGraph and HourlyStats allows the hourly statistics graph\n# and statistics table to be disabled (not displayed).  Values\n# may be \"yes\" or \"no\". Default is \"yes\".\n\n#HourlyGraph\tyes\n#HourlyStats\tyes\n\n# GraphLegend allows the color coded legends to be turned on or off\n# in the graphs.  The default is for them to be displayed.  This only\n# toggles the color coded legends, the other legends are not changed.\n# If you think they are hideous and ugly, say 'no' here :)\n\n#GraphLegend\tyes\n\n# GraphLines allows you to have index lines drawn behind the graphs.\n# I personally am not crazy about them, but a lot of people requested\n# them and they weren't a big deal to add.  The number represents the\n# number of lines you want displayed.  Default is 2, you can disable\n# the lines by using a value of zero ('0').  [max is 20]\n# Note, due to rounding errors, some values don't work quite right.\n# The lower the better, with 1,2,3,4,6 and 10 producing nice results.\n\n#GraphLines\t2\n\n# The \"Top\" options below define the number of entries for each table.\n# Defaults are Sites=30, URL's=30, Referrers=30 and Agents=15, and\n# Countries=50. TopKSites and TopKURLs (by KByte tables) both default\n# to 10, as do the top entry/exit tables (TopEntry/TopExit).  The top\n# search strings default to 20.  Tables may be disabled by using\n# zero (0) for the value.\n\n#TopSites        30\n#TopKSites       10\n#TopURLs         30\n#TopKURLs        10\n#TopReferrers    30\n#TopAgents       15\n#TopCountries    50\n#TopEntry        10\n#TopExit         10\nTopSearch       0\n\n# The Webalizer normally strips the string 'index.' off the end of\n# URL's in order to consolidate URL totals.  For example, the URL\n# /somedir/index.html is turned into /somedir/ which is really the\n# same URL.  This option allows you to specify additional strings\n# to treat in the same way.  You don't need to specify 'index.' as\n# it is always scanned for by The Webalizer, this option is just to\n# specify _additional_ strings if needed.  If you don't need any,\n# don't specify any as each string will be scanned for in EVERY\n# log record... A bunch of them will degrade performance.  Also,\n# the string is scanned for anywhere in the URL, so a string of\n# 'home' would turn the URL /somedir/homepages/brad/home.html into\n# just /somedir/ which is probably not what was intended.\n\n#IndexAlias     home.htm\n#IndexAlias\thomepage.htm\n\n# The Hide*, Group* and Ignore* and Include* keywords allow you to change\n# the way Sites, URL's, Referrers and User Agents are manipulated.  The\n# Ignore* keywords will cause The Webalizer to completely ignore\n# records as if they didn't exist (and thus not counted in the main\n# site totals).  The Hide* keywords will prevent things from being\n# displayed in the 'Top' tables, but will still be counted in the\n# main totals.  The Group* keywords allow grouping similar objects\n# as if they were one.  Grouped records are displayed in the 'Top'\n# tables and can optionally be displayed in BOLD and/or shaded.\n# Groups cannot be hidden, and are not counted in the main totals.\n# The Group* options do not, by default, hide all the items that\n# it matches.  If you want to hide the records that match (so just\n# the grouping record is displayed), follow with an identical Hide*\n# keyword with the same value.  (see example below)  In addition,\n# Group* keywords may have an optional label which will be displayed\n# instead of the keywords value.  The label should be seperated from\n# the value by at least one 'white-space' character, such as a space\n# or tab.\n#\n# The value can have either a leading or trailing '*' wildcard\n# character.  If no wildcard is found, a match can occur anywhere\n# in the string. Given a string \"www.yourmama.com\", the values \"your\",\n# \"*mama.com\" and \"www.your*\" will all match.\n\n# Your own site should be hidden\nHideSite\tmesonet.agron.iastate.edu\nHideSite\tiem-director0\nHideSite\tiem-director1\nHideSite\t192.168.0.2\nHideSite\t192.168.0.1\nHideSite\t192.168.0.10\nHideSite\tiem10.local\n#HideSite\tlocalhost\n\n# Your own site gives most referrals\n#HideReferrer\tmrunix.net/\n\n# This one hides non-referrers (\"-\" Direct requests)\n#HideReferrer\tDirect Request\n\n# Usually you want to hide these\n#HideURL\t\t*.gif\n#HideURL\t\t*.GIF\n#HideURL\t\t*.jpg\n#HideURL\t\t*.JPG\n#HideURL\t\t*.ra\n\n# Hiding agents is kind of futile\n#HideAgent\tRealPlayer\n\n# Grouping options\nGroupURL\t/cgi-bin/*\tCGI Scripts\nGroupURL\t/images/*\tImages\nGroupURL\t/icons/*\tIcons\nGroupURL\t/data/nexrd2/*\tLevel 2 NEXRAD\n\n#GroupSite\t*.aol.com\n#GroupSite\t*.compuserve.com\n\n#GroupReferrer\tyahoo.com/\tYahoo!\n#GroupReferrer\texcite.com/     Excite\n#GroupReferrer\tinfoseek.com/   InfoSeek\n#GroupReferrer\twebcrawler.com/ WebCrawler\n\n# The following is a great way to get an overall total\n# for browsers, and not display all the detail records.\n# (You should use MangleAgent to refine further...)\n\n#GroupAgent\tMSIE\t\tMicro$oft Internet Exploder\n#HideAgent\tMSIE\n#GroupAgent\tMozilla\t\tNetscape\n#HideAgent\tMozilla\n#GroupAgent\tLynx*\t\tLynx\n#HideAgent\tLynx*\n\n# The GroupShading allows grouped rows to be shaded in the report.\n# Useful if you have lots of groups and individual records that\n# intermingle in the report, and you want to diferentiate the group\n# records a little more.  Value can be 'yes' or 'no', with 'yes'\n# being the default.\n\n#GroupShading\tyes\n\n# GroupHighlight allows the group record to be displayed in BOLD.\n# Can be either 'yes' or 'no' with the default 'yes'.\n\n#GroupHighlight\tyes\n\n# The Ignore* keywords allow you to completely ignore log records based\n# on hostname, URL, user agent or referrer.  I hessitated in adding these,\n# since the Webalizer was designed to generate _accurate_ statistics\n# about a web servers performance.  By choosing to ignore records, the\n# accuracy of reports become skewed, negating why I wrote this program\n# in the first place.  However, due to popular demand, here they are.\n# Use the same as the Hide*/Group* keywords, where the value can have a\n# leading or trailing wildcard '*'.\n\nIgnoreSite\tiem-director0\nIgnoreSite\tiem-director1\nIgnoreSite\t10.10.10.101\nIgnoreSite\t10.10.10.102\nIgnoreSite\tgoogle.iastate.edu\nIgnoreURL\t/keepalive.phtml\n#IgnoreReferrer\tfile:/*\n#IgnoreAgent\tRealPlayer\n\n# The Include* keywords allow you to force the inclusion of log records\n# based on hostname, URL, user agent or referrer.  They take precidence\n# over the Ignore* keywords.  Note: Using Ignore/Include combinations to\n# selectivly process parts of a web site is _extremely inefficent_!!!\n# Avoid doing so if possible (ie: grep the records to a seperate file).\n\n# Example: Only show stats on Joe User's pages...\n#IgnoreURL\t*\n#IncludeURL\t~joeuser*\n\n# The MangleAgents allows you to specify how much, if any, The Webalizer\n# should mangle user agent names.  This allows several levels of detail\n# to be produced when reporting user agent statistics.  There are six\n# levels that can be specified, which define different levels of detail\n# supression.  Level 5 shows only the browser name (MSIE or Mozilla)\n# and the major version number.  Level 4 adds the minor version number\n# (single decimal place).  Level 3 displays the minor version to two\n# decimal places.  Level 2 will add any sub-level designation (such\n# as Mozilla/3.01Gold or MSIE 3.0b).  Level 1 will attempt to also add\n# the system type if it is specified.  The default Level 0 displays the\n# full user agent field without modification and produces the greatest\n# amount of detail.  User agent names that can't be mangled will be\n# left unmodified.\n\n#MangleAgents    0\n\n# End of configuration file...  Have a nice day!\n#\nApacheLogFormat \"%h %l %u %t \\\"%r\\\" %>s %b \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\"\n\n"
  },
  {
    "path": "scripts/webalizer/weatherim.conf",
    "content": "# Results come here\n# http://weather.im/usage/\n\n\n# LogFile defines the web server log file to use.  If not specified\n# here or on on the command line, input will default to STDIN.\n\n#LogFile        /tmp/weatherim_access.log\n\n# LogType defines the log type being processed.  Normally, the Webalizer\n# expects a CLF or Combined web server log as input.  Using this option,\n# you can process ftp logs as well (xferlog as produced by wu-ftp and\n# others).  Values can be 'web' or 'ftp', with 'web' the default.\n\nLogType\tclf\n\n# OutputDir is where you want to put the output files.  This should\n# should be a full path name, however relative ones might work as well.\n# If no output directory is specified, the current directory will be used.\n\nOutputDir      /mnt/webalizer/usage/weather.im/\n\n# HistoryName allows you to specify the name of the history file produced\n# by the Webalizer.  The history file keeps the data for up to 12 months\n# worth of logs, used for generating the main HTML page (index.html).\n# The default is a file named \"webalizer.hist\", stored in the specified\n# output directory.  If you specify just the filename (without a path),\n# it will be kept in the specified output directory.  Otherwise, the path\n# is relative to the output directory, unless absolute (leading /).\n\nHistoryName\t/var/lib/webalizer/weatherim.hist\n\n# Incremental processing allows multiple partial log files to be used\n# instead of one huge one.  Useful for large sites that have to rotate\n# their log files more than once a month.  The Webalizer will save its\n# internal state before exiting, and restore it the next time run, in\n# order to continue processing where it left off.  This mode also causes\n# The Webalizer to scan for and ignore duplicate records (records already\n# processed by a previous run).  See the README file for additional\n# information.  The value may be 'yes' or 'no', with a default of 'no'.\n# The file 'webalizer.current' is used to store the current state data,\n# and is located in the output directory of the program (unless changed\n# with the IncrementalName option below).  Please read at least the section\n# on Incremental processing in the README file before you enable this option.\n\nIncremental\tyes\n\n# IncrementalName allows you to specify the filename for saving the\n# incremental data in.  It is similar to the HistoryName option where the\n# name is relative to the specified output directory, unless an absolute\n# filename is specified.  The default is a file named \"webalizer.current\"\n# kept in the normal output directory.  If you don't specify \"Incremental\"\n# as 'yes' then this option has no meaning.\n\nIncrementalName\t/var/lib/webalizer/weatherim.current\n\n# ReportTitle is the text to display as the title.  The hostname\n# (unless blank) is appended to the end of this string (seperated with\n# a space) to generate the final full title string.\n# Default is (for english) \"Usage Statistics for\".\n\n#ReportTitle    Usage Statistics for\n\n# HostName defines the hostname for the report.  This is used in\n# the title, and is prepended to the URL table items.  This allows\n# clicking on URL's in the report to go to the proper location in\n# the event you are running the report on a 'virtual' web server,\n# or for a server different than the one the report resides on.\n# If not specified here, or on the command line, webalizer will\n# try to get the hostname via a uname system call.  If that fails,\n# it will default to \"localhost\".\n\nHostName\tweather.im \n\n# HTMLExtension allows you to specify the filename extension to use\n# for generated HTML pages.  Normally, this defaults to \"html\", but\n# can be changed for sites who need it (like for PHP embeded pages).\n\n#HTMLExtension  html\n\n# PageType lets you tell the Webalizer what types of URL's you\n# consider a 'page'.  Most people consider html and cgi documents\n# as pages, while not images and audio files.  If no types are\n# specified, defaults will be used ('htm*', 'cgi' and HTMLExtension\n# if different).\n\nPageType\thtm*\nPageType\tcgi\n#PageType\tphtml\n#PageType\tphp3\n#PageType\tpl\n\n# UseHTTPS should be used if the analysis is being run on a\n# secure server, and links to urls should use 'https://' instead\n# of the default 'http://'.  If you need this, set it to 'yes'.\n# Default is 'no'.  This only changes the behaviour of the 'Top\n# URL's' table.\n\n#UseHTTPS       no\n\n# HTMLPre defines HTML code to insert at the very beginning of the\n# file.  Default is the DOCTYPE line shown below.  Max line length\n# is 80 characters, so use multiple HTMLPre lines if you need more.\n\n#HTMLPre <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n\n# HTMLHead defines HTML code to insert within the <HEAD></HEAD>\n# block, immediately after the <TITLE> line.  Maximum line length\n# is 80 characters, so use multiple lines if needed.\n\n#HTMLHead <META NAME=\"author\" CONTENT=\"The Webalizer\">\n\n# HTMLBody defined the HTML code to be inserted, starting with the\n# <BODY> tag.  If not specified, the default is shown below.  If\n# used, you MUST include your own <BODY> tag as the first line.\n# Maximum line length is 80 char, use multiple lines if needed.\n\n#HTMLBody <BODY BGCOLOR=\"#E8E8E8\" TEXT=\"#000000\" LINK=\"#0000FF\" VLINK=\"#FF0000\">\n\n# HTMLPost defines the HTML code to insert immediately before the\n# first <HR> on the document, which is just after the title and\n# \"summary period\"-\"Generated on:\" lines.  If anything, this should\n# be used to clean up in case an image was inserted with HTMLBody.\n# As with HTMLHead, you can define as many of these as you want and\n# they will be inserted in the output stream in order of apperance.\n# Max string size is 80 characters.  Use multiple lines if you need to.\n\n#HTMLPost \t<BR CLEAR=\"all\">\n\n# HTMLTail defines the HTML code to insert at the bottom of each\n# HTML document, usually to include a link back to your home\n# page or insert a small graphic.  It is inserted as a table\n# data element (ie: <TD> your code here </TD>) and is right\n# alligned with the page.  Max string size is 80 characters.\n\n#HTMLTail <IMG SRC=\"msfree.gif\" ALT=\"100% Micro$oft free!\">\n\n# HTMLEnd defines the HTML code to add at the very end of the\n# generated files.  It defaults to what is shown below.  If\n# used, you MUST specify the </BODY> and </HTML> closing tags\n# as the last lines.  Max string length is 80 characters.\n\n#HTMLEnd </BODY></HTML>\n\n# The Quiet option suppresses output messages... Useful when run\n# as a cron job to prevent bogus e-mails.  Values can be either\n# \"yes\" or \"no\".  Default is \"no\".  Note: this does not suppress\n# warnings and errors (which are printed to stderr).\n\nQuiet\t\tyes\n\n# ReallyQuiet will supress all messages including errors and\n# warnings.  Values can be 'yes' or 'no' with 'no' being the\n# default.  If 'yes' is used here, it cannot be overriden from\n# the command line, so use with caution.  A value of 'no' has\n# no effect.\n\nReallyQuiet\tyes\n\n# TimeMe allows you to force the display of timing information\n# at the end of processing.  A value of 'yes' will force the\n# timing information to be displayed.  A value of 'no' has no\n# effect.\n\n#TimeMe\t\tno\n\n# GMTTime allows reports to show GMT (UTC) time instead of local\n# time.  Default is to display the time the report was generated\n# in the timezone of the local machine, such as EDT or PST.  This\n# keyword allows you to have times displayed in UTC instead.  Use\n# only if you really have a good reason, since it will probably\n# screw up the reporting periods by however many hours your local\n# time zone is off of GMT.\n\n#GMTTime\t\tno\n\n# Debug prints additional information for error messages.  This\n# will cause webalizer to dump bad records/fields instead of just\n# telling you it found a bad one.   As usual, the value can be\n# either \"yes\" or \"no\".  The default is \"no\".  It shouldn't be\n# needed unless you start getting a lot of Warning or Error\n# messages and want to see why.  (Note: warning and error messages\n# are printed to stderr, not stdout like normal messages).\n\n#Debug\t\tno\n\n# VisitTimeout allows you to set the default timeout for a visit\n# (sometimes called a 'session').  The default is 30 minutes,\n# which should be fine for most sites.  The value is formatted\n# as HHMMSS where HH=hours MM=minutes and SS=seconds (use '00').\n# Visits are determined by looking at the time of the current\n# request, and the time of the last request from the site.  If\n# the time difference is greater than the VisitTimeout value, it\n# is considered a new visit, and visit totals are incremented.\n\n#VisitTimeout\t3000\n\n# IgnoreHist shouldn't be used in a config file, but it is here\n# just because it might be usefull in certain situations.  If the\n# history file is ignored, the main \"index.html\" file will only\n# report on the current log files contents.  Usefull only when you\n# want to reproduce the reports from scratch.  USE WITH CAUTION!\n# Valid values are \"yes\" or \"no\".  Default is \"no\".\n\n#IgnoreHist\tno\n\n# Country Graph allows the usage by country graph to be disabled.\n# Values can be 'yes' or 'no', default is 'yes'.\n\n#CountryGraph\tyes\n\n# HourlyGraph and HourlyStats allows the hourly statistics graph\n# and statistics table to be disabled (not displayed).  Values\n# may be \"yes\" or \"no\". Default is \"yes\".\n\n#HourlyGraph\tyes\n#HourlyStats\tyes\n\n# GraphLegend allows the color coded legends to be turned on or off\n# in the graphs.  The default is for them to be displayed.  This only\n# toggles the color coded legends, the other legends are not changed.\n# If you think they are hideous and ugly, say 'no' here :)\n\n#GraphLegend\tyes\n\n# GraphLines allows you to have index lines drawn behind the graphs.\n# I personally am not crazy about them, but a lot of people requested\n# them and they weren't a big deal to add.  The number represents the\n# number of lines you want displayed.  Default is 2, you can disable\n# the lines by using a value of zero ('0').  [max is 20]\n# Note, due to rounding errors, some values don't work quite right.\n# The lower the better, with 1,2,3,4,6 and 10 producing nice results.\n\n#GraphLines\t2\n\n# The \"Top\" options below define the number of entries for each table.\n# Defaults are Sites=30, URL's=30, Referrers=30 and Agents=15, and\n# Countries=50. TopKSites and TopKURLs (by KByte tables) both default\n# to 10, as do the top entry/exit tables (TopEntry/TopExit).  The top\n# search strings default to 20.  Tables may be disabled by using\n# zero (0) for the value.\n\n#TopSites        30\n#TopKSites       10\n#TopURLs         30\n#TopKURLs        10\n#TopReferrers    30\n#TopAgents       15\n#TopCountries    50\n#TopEntry        10\n#TopExit         10\nTopSearch       0\n\n# The Webalizer normally strips the string 'index.' off the end of\n# URL's in order to consolidate URL totals.  For example, the URL\n# /somedir/index.html is turned into /somedir/ which is really the\n# same URL.  This option allows you to specify additional strings\n# to treat in the same way.  You don't need to specify 'index.' as\n# it is always scanned for by The Webalizer, this option is just to\n# specify _additional_ strings if needed.  If you don't need any,\n# don't specify any as each string will be scanned for in EVERY\n# log record... A bunch of them will degrade performance.  Also,\n# the string is scanned for anywhere in the URL, so a string of\n# 'home' would turn the URL /somedir/homepages/brad/home.html into\n# just /somedir/ which is probably not what was intended.\n\n#IndexAlias     home.htm\n#IndexAlias\thomepage.htm\n\n# The Hide*, Group* and Ignore* and Include* keywords allow you to change\n# the way Sites, URL's, Referrers and User Agents are manipulated.  The\n# Ignore* keywords will cause The Webalizer to completely ignore\n# records as if they didn't exist (and thus not counted in the main\n# site totals).  The Hide* keywords will prevent things from being\n# displayed in the 'Top' tables, but will still be counted in the\n# main totals.  The Group* keywords allow grouping similar objects\n# as if they were one.  Grouped records are displayed in the 'Top'\n# tables and can optionally be displayed in BOLD and/or shaded.\n# Groups cannot be hidden, and are not counted in the main totals.\n# The Group* options do not, by default, hide all the items that\n# it matches.  If you want to hide the records that match (so just\n# the grouping record is displayed), follow with an identical Hide*\n# keyword with the same value.  (see example below)  In addition,\n# Group* keywords may have an optional label which will be displayed\n# instead of the keywords value.  The label should be seperated from\n# the value by at least one 'white-space' character, such as a space\n# or tab.\n#\n# The value can have either a leading or trailing '*' wildcard\n# character.  If no wildcard is found, a match can occur anywhere\n# in the string. Given a string \"www.yourmama.com\", the values \"your\",\n# \"*mama.com\" and \"www.your*\" will all match.\n\n# Your own site should be hidden\nHideSite\tmesonet.agron.iastate.edu\nHideSite\tiem-director0\nHideSite\tiem-director1\nHideSite\t192.168.0.2\nHideSite\t192.168.0.1\nHideSite\t192.168.0.10\nHideSite\tiem10.local\n#HideSite\tlocalhost\n\n# Your own site gives most referrals\n#HideReferrer\tmrunix.net/\n\n# This one hides non-referrers (\"-\" Direct requests)\n#HideReferrer\tDirect Request\n\n# Usually you want to hide these\n#HideURL\t\t*.gif\n#HideURL\t\t*.GIF\n#HideURL\t\t*.jpg\n#HideURL\t\t*.JPG\n#HideURL\t\t*.ra\n\n# Hiding agents is kind of futile\n#HideAgent\tRealPlayer\n\n# Grouping options\nGroupURL\t/cgi-bin/*\tCGI Scripts\nGroupURL\t/images/*\tImages\nGroupURL\t/icons/*\tIcons\nGroupURL\t/data/nexrd2/*\tLevel 2 NEXRAD\n\n#GroupSite\t*.aol.com\n#GroupSite\t*.compuserve.com\n\n#GroupReferrer\tyahoo.com/\tYahoo!\n#GroupReferrer\texcite.com/     Excite\n#GroupReferrer\tinfoseek.com/   InfoSeek\n#GroupReferrer\twebcrawler.com/ WebCrawler\n\n# The following is a great way to get an overall total\n# for browsers, and not display all the detail records.\n# (You should use MangleAgent to refine further...)\n\n#GroupAgent\tMSIE\t\tMicro$oft Internet Exploder\n#HideAgent\tMSIE\n#GroupAgent\tMozilla\t\tNetscape\n#HideAgent\tMozilla\n#GroupAgent\tLynx*\t\tLynx\n#HideAgent\tLynx*\n\n# The GroupShading allows grouped rows to be shaded in the report.\n# Useful if you have lots of groups and individual records that\n# intermingle in the report, and you want to diferentiate the group\n# records a little more.  Value can be 'yes' or 'no', with 'yes'\n# being the default.\n\n#GroupShading\tyes\n\n# GroupHighlight allows the group record to be displayed in BOLD.\n# Can be either 'yes' or 'no' with the default 'yes'.\n\n#GroupHighlight\tyes\n\n# The Ignore* keywords allow you to completely ignore log records based\n# on hostname, URL, user agent or referrer.  I hessitated in adding these,\n# since the Webalizer was designed to generate _accurate_ statistics\n# about a web servers performance.  By choosing to ignore records, the\n# accuracy of reports become skewed, negating why I wrote this program\n# in the first place.  However, due to popular demand, here they are.\n# Use the same as the Hide*/Group* keywords, where the value can have a\n# leading or trailing wildcard '*'.\n\nIgnoreSite\tiem-director0\nIgnoreSite\tiem-director1\nIgnoreSite\t10.10.10.101\nIgnoreSite\t10.10.10.102\nIgnoreSite\tgoogle.iastate.edu\nIgnoreURL\t/keepalive.phtml\n#IgnoreReferrer\tfile:/*\n#IgnoreAgent\tRealPlayer\n\n# The Include* keywords allow you to force the inclusion of log records\n# based on hostname, URL, user agent or referrer.  They take precidence\n# over the Ignore* keywords.  Note: Using Ignore/Include combinations to\n# selectivly process parts of a web site is _extremely inefficent_!!!\n# Avoid doing so if possible (ie: grep the records to a seperate file).\n\n# Example: Only show stats on Joe User's pages...\n#IgnoreURL\t*\n#IncludeURL\t~joeuser*\n\n# The MangleAgents allows you to specify how much, if any, The Webalizer\n# should mangle user agent names.  This allows several levels of detail\n# to be produced when reporting user agent statistics.  There are six\n# levels that can be specified, which define different levels of detail\n# supression.  Level 5 shows only the browser name (MSIE or Mozilla)\n# and the major version number.  Level 4 adds the minor version number\n# (single decimal place).  Level 3 displays the minor version to two\n# decimal places.  Level 2 will add any sub-level designation (such\n# as Mozilla/3.01Gold or MSIE 3.0b).  Level 1 will attempt to also add\n# the system type if it is specified.  The default Level 0 displays the\n# full user agent field without modification and produces the greatest\n# amount of detail.  User agent names that can't be mangled will be\n# left unmodified.\n\n#MangleAgents    0\n\n# End of configuration file...  Have a nice day!\n#\nApacheLogFormat \"%h %l %u %t \\\"%r\\\" %>s %b \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\"\n\n# http://www.stonesteps.ca/projects/webalizer/faq.asp?qid=q20050201-01&topic=webalizer\nExcludeSearchArg   *\n"
  },
  {
    "path": "scripts/week/plot_obs.py",
    "content": "\"\"\"Plot 7,31,91 Day Precipitation Totals.\n\nCalled from RUN_10_AFTER.sh\n\"\"\"\n\nfrom datetime import date, timedelta\n\nimport pandas as pd\nfrom pyiem.database import get_sqlalchemy_conn, sql_helper\nfrom pyiem.plot import MapPlot\n\n\ndef fmter(val):\n    \"\"\"Make pretty text\"\"\"\n    if val is None:\n        return 0\n    if 0 < val < 0.009:\n        return \"T\"\n    return f\"{val:.2f}\"\n\n\ndef runner(days):\n    \"\"\"Go!\"\"\"\n    today = date.today()\n    routes = \"ac\"\n    sixago = today - timedelta(days=days - 1)\n\n    # Compute normal from the climate database\n    with get_sqlalchemy_conn(\"iem\") as conn:\n        df = pd.read_sql(\n            sql_helper(\"\"\"\n            select s.id, ST_x(s.geom) as lon, ST_y(s.geom) as lat,\n            sum(pday) as rainfall\n            from summary c JOIN stations s on (c.iemid = s.iemid)\n            WHERE day >= :sixago and day <= :today\n            and s.network = 'IA_ASOS' and pday >= 0 and pday < 30\n            GROUP by s.id, lon, lat\n        \"\"\"),\n            conn,\n            params={\"sixago\": sixago, \"today\": today},\n            index_col=\"id\",\n        )\n    df[\"label\"] = df[\"rainfall\"].apply(fmter)\n\n    mp = MapPlot(\n        title=f\"Iowa {days} Day Precipitation Total [inch] (ASOS)\",\n        subtitle=f\"{sixago:%d %b %Y} - {today:%d %b %Y} inclusive\",\n        continentalcolor=\"white\",\n    )\n    mp.plot_values(\n        df[\"lon\"].values,\n        df[\"lat\"].values,\n        df[\"label\"].values,\n        \"%s\",\n        labels=df.index.values,\n        labelbuffer=5,\n    )\n    mp.drawcounties()\n    pqstr = (\n        f\"plot {routes} {today:%Y%m%d}0000 summary/{days}day/ia_precip.png \"\n        f\"summary/{days}day/ia_precip.png png\"\n    )\n    mp.postprocess(pqstr=pqstr)\n    mp.close()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    for days in [7, 31, 91]:\n        runner(days)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/windrose/daily_drive_network.py",
    "content": "\"\"\"Pick two networks to drive windroses for.\n\nCalled from RUN_2AM.sh script\n\"\"\"\n\nimport subprocess\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import logger\n\nLOG = logger()\nCACHEDIR = \"/mesonet/share/windrose/\"\n\n\ndef do_network(network):\n    \"\"\"Process a network\"\"\"\n    # Update the STS while we are at it, this will help the database get\n    # stuff cached too\n    if network.find(\"_ASOS\") > 0:\n        subprocess.call(\n            [\n                \"python\",\n                \"../dbutil/compute_alldata_sts.py\",\n                \"--dbname=asos\",\n                f\"--network={network}\",\n            ]\n        )\n    elif network.find(\"_DCP\") > 0:\n        # Special Logic to compute archive period.\n        subprocess.call(\n            [\"python\", \"../dbutil/compute_hads_sts.py\", f\"--network={network}\"]\n        )\n        # Update stage details.\n        subprocess.call(\n            [\n                \"python\",\n                \"../hads/process_nwps_stages.py\",\n                f\"--network={network}\",\n            ]\n        )\n    elif network.find(\"_RWIS\") > 0:\n        subprocess.call(\n            [\n                \"python\",\n                \"../dbutil/compute_rwis_sts.py\",\n                f\"--network={network}\",\n            ],\n        )\n    subprocess.call(\n        [\"python\", \"drive_network_windrose.py\", \"--network\", network]\n    )\n\n\ndef main():\n    \"\"\"Main\"\"\"\n    with get_dbconn(\"mesosite\") as conn:\n        cursor = conn.cursor()\n        cursor.execute(\n            \"with data as (SELECT id from networks where \"\n            \"(id ~* '_ASOS' or id ~* '_DCP' or id ~* 'RWIS') \"\n            \"ORDER by windrose_update ASC NULLS FIRST LIMIT 2) \"\n            \"UPDATE networks n SET windrose_update = now() FROM data d \"\n            \"WHERE d.id = n.id RETURNING n.id\"\n        )\n        rows = cursor.fetchall()\n\n    for row in rows:\n        network = row[0]\n        LOG.warning(\"Driving network %s\", network)\n        do_network(network)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/windrose/drive_network_windrose.py",
    "content": "\"\"\"Generate a windrose for each site in the specified network...\"\"\"\n\nimport subprocess\n\nimport click\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\n@click.command()\n@click.option(\"--network\", required=True, help=\"Network Identifier\")\n@click.option(\n    \"--everything\", is_flag=True, help=\"Generate for offline sites too\"\n)\ndef main(network, everything):\n    \"\"\"Go Main\"\"\"\n    nt = NetworkTable(network, only_online=not everything)\n    for sid in nt.sts:\n        LOG.info(\"calling make_windrose.py network: %s sid: %s\", network, sid)\n        subprocess.call(\n            [\n                \"python\",\n                \"make_windrose.py\",\n                \"--network\",\n                network,\n                \"--station\",\n                sid,\n            ]\n        )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/windrose/make_windrose.py",
    "content": "\"\"\"\nDrive a windrose for a given network and site\n\"\"\"\n\nimport os\nfrom calendar import month_abbr\n\nimport click\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.windrose_utils import windrose\n\nCACHE_DIR = \"/mesonet/share/windrose\"\n\n\n@click.command()\n@click.option(\"--network\", required=True, help=\"Network Identifier\")\n@click.option(\"--station\", required=True, help=\"Station Identifier\")\ndef main(network, station):\n    \"\"\"Go Main\"\"\"\n    nt = NetworkTable(network, only_online=False)\n\n    database = \"asos\"\n    if network in (\"KCCI\", \"KELO\", \"KIMT\"):\n        database = \"snet\"\n    elif network.find(\"_RWIS\") > 0:\n        database = \"rwis\"\n    elif network == \"ISUSM\":\n        database = \"isuag\"\n    elif network.find(\"_DCP\") > 0:\n        database = \"hads\"\n\n    mydir = os.path.join(CACHE_DIR, network, station)\n    if not os.path.isdir(mydir):\n        os.makedirs(mydir)\n    fn = f\"{mydir}/{station}_yearly.png\"\n    res = windrose(\n        station,\n        database=database,\n        sname=nt.sts[station][\"name\"],\n        tzname=nt.sts[station][\"tzname\"],\n    )\n    res.savefig(fn)\n    for month in range(1, 13):\n        fn = f\"{mydir}/{station}_{month_abbr[month].lower()}.png\"\n        res = windrose(\n            station,\n            months=[\n                month,\n            ],\n            database=database,\n            sname=nt.sts[station][\"name\"],\n            tzname=nt.sts[station][\"tzname\"],\n        )\n        res.savefig(fn)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/year/plot_gdd.py",
    "content": "\"\"\"Generate a plot of GDD for the ASOS network\"\"\"\n\nfrom datetime import date, timedelta\n\nimport click\nfrom pyiem.util import logger, web2ldm\n\nLOG = logger()\n\n\n@click.command()\n@click.option(\"--gddbase\", default=50, type=int, help=\"GDD Base Temperature\")\ndef main(gddbase):\n    \"\"\"Go Main Go\"\"\"\n    now = date.today() - timedelta(days=1)\n    jan1 = now.replace(month=1, day=1)\n\n    url = (\n        \"http://iem.local/plotting/auto/plot/97/d:sector::sector:IA::\"\n        f\"var:gdd_sum::gddbase:{gddbase}::gddceil:86::\"\n        f\"date1:{jan1.strftime('%Y-%m-%d')}::usdm:no::_cb:1::\"\n        f\"date2:{now.strftime('%Y-%m-%d')}::p:contour::cmap:RdBu_r::c:yes\"\n        \".png\"\n    )\n    name = \"gdd\" if gddbase == 50 else f\"gdd{gddbase}\"\n    pqstr = f\"plot c 000000000000 summary/{name}_jan1.png bogus png\"\n    LOG.info(url)\n    LOG.info(pqstr)\n    res = web2ldm(url, pqstr, md5_from_name=True)\n    if not res:\n        LOG.warning(\"[year] failed for gddbase: %s url: %s\", gddbase, url)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/year/plot_stage4.py",
    "content": "\"\"\"Some stage IV plots.\n\nRun from RUN_SUMMARY.sh\n\"\"\"\n\nfrom datetime import datetime, timedelta\n\nimport numpy as np\nfrom pyiem import iemre\nfrom pyiem.plot import MapPlot\nfrom pyiem.util import ncopen\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    ets = datetime.now() - timedelta(days=1)\n    sts = datetime(ets.year, 1, 1)\n\n    # Get the normal accumm\n    with ncopen(iemre.get_dailyc_ncname(\"\")) as cnc:\n        lons = cnc.variables[\"lon\"][:]\n        lats = cnc.variables[\"lat\"][:]\n        index0 = iemre.daily_offset(sts)\n        index1 = iemre.daily_offset(ets)\n        clprecip = np.sum(cnc.variables[\"p01d\"][index0:index1, :, :], 0)\n\n    with ncopen(iemre.get_daily_ncname(sts.year)) as nc:\n        obprecip = np.sum(nc.variables[\"p01d\"][index0:index1, :, :], 0)\n\n    lons, lats = np.meshgrid(lons, lats)\n\n    # Plot departure from normal\n    mp = MapPlot(\n        sector=\"midwest\",\n        title=f\"Precipitation Departure {sts:%b %d %Y} - {ets:%b %d %Y}\",\n        subtitle=\"based on IEM Estimates\",\n    )\n\n    mp.pcolormesh(\n        lons, lats, (obprecip - clprecip) / 25.4, np.arange(-10, 10, 1)\n    )\n    mp.postprocess(\n        pqstr=\"plot c 000000000000 summary/year/stage4_diff.png bogus png\"\n    )\n    mp.close()\n\n    # Plot normals\n    mp = MapPlot(\n        sector=\"midwest\",\n        title=f\"Normal Precipitation:: {sts:%b %d %Y} - {ets:%b %d %Y}\",\n        subtitle=\"based on IEM Estimates\",\n    )\n\n    mp.pcolormesh(lons, lats, (clprecip) / 25.4, np.arange(0, 30, 2))\n    mp.postprocess(\n        pqstr=\"plot c 000000000000 summary/year/stage4_normals.png bogus png\"\n    )\n    mp.close()\n\n    # Plot Obs\n    mp = MapPlot(\n        sector=\"midwest\",\n        title=f\"Estimated Precipitation:: {sts:%b %d %Y} - {ets:%b %d %Y}\",\n        subtitle=\"based on IEM Estimates\",\n    )\n\n    mp.pcolormesh(lons, lats, (obprecip) / 25.4, np.arange(0, 30, 2))\n    mp.postprocess(\n        pqstr=\"plot c 000000000000 summary/year/stage4obs.png bogus png\"\n    )\n    mp.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/year/precip.py",
    "content": "\"\"\"yearly precip\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import datetime, timedelta\n\nimport httpx\nimport numpy as np\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.plot import MapPlot\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    st = NetworkTable(\"IACLIMATE\")\n    pgconn = get_dbconn(\"coop\")\n    ccursor = pgconn.cursor()\n\n    ts = datetime.now() - timedelta(days=1)\n\n    nrain = []\n    lats = []\n    lons = []\n\n    # Get normals!\n    ccursor.execute(\n        \"\"\"SELECT station, sum(precip) as acc from climate51\n        WHERE valid <= %s and station NOT IN ('IA7842','IA4381')\n        and substr(station,0,3) = 'IA'\n        GROUP by station ORDER by acc ASC\"\"\",\n        (ts.replace(year=2000).date(),),\n    )\n    for row in ccursor:\n        station = row[0]\n        if station not in st.sts:\n            continue\n        nrain.append(row[1])\n        lats.append(st.sts[station][\"lat\"])\n        lons.append(st.sts[station][\"lon\"])\n\n    mp = MapPlot(\n        axisbg=\"white\",\n        title=(\"Iowa %s Normal Precipitation Accumulation\")\n        % (ts.strftime(\"%Y\"),),\n        subtitle=\"1 Jan - %s\" % (ts.strftime(\"%d %b %Y\"),),\n    )\n    rng = np.arange(int(min(nrain)) - 1, int(max(nrain)) + 1)\n    if max(nrain) < 10:\n        rng = np.arange(0, 10)\n    mp.contourf(lons, lats, nrain, rng, units=\"inch\")\n    pqstr = \"plot c 000000000000 summary/year/normals.png bogus png\"\n    mp.postprocess(view=False, pqstr=pqstr)\n    mp.close()\n\n    # ----------------------------------\n    # - Departures\n    service = (\n        \"http://iem.local/plotting/auto/plot/97/d:sector::sector:IA::\"\n        f\"var:precip_departdate1:{ts.year}-01-01::usdm:no::\"\n        f\"date2:{ts:%Y-%m-%d}::p:contour::cmap:RdYlBu::c:yes::\"\n        \"ct:ncei_climate91::_r:43::_cb:1.png\"\n    )\n\n    req = httpx.get(service, timeout=120)\n    tmpfd = tempfile.NamedTemporaryFile(delete=False)\n    tmpfd.write(req.content)\n    tmpfd.close()\n\n    pqstr = f\"plot c {ts:%Y%m%d%H%M} summary/year/diff.png bogus png\"\n    subprocess.call(\n        [\n            \"pqinsert\",\n            \"-i\",\n            \"-p\",\n            pqstr,\n            tmpfd.name,\n        ]\n    )\n    os.unlink(tmpfd.name)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/yieldfx/README.md",
    "content": "APSIM Weather Files for FACTS\n=====\n\nBehold there is some overly complex code in this folder for the preparation of climate files for APSIM.  Here is the basic gist of what the workflow is.\n\n 1. For each location of interest, we have a QC'd baseline of data that is initially used\n 2. This baseline file provides data from 1980 till the current year.  We then replace the data for each year for the Jan 1 to yesterday period with the observations from the current year.  These observations come from either ISU Soil Moisture Network stations or a research weather station (in the case of COBS) or from IEM Climodat estimates.\n 3. The data for today and out 3 days for only the current year is replaced by the NDFD forecast data.\n 4. The period after the NDFD replacement till the end of the year is replaced with CFS extracted forecast.\n\nSo the result is a climate file that has yearly scenarios representing the combination of this year's observations plus a previous years data plus a CFS forecast for the current year.  The APSIM runs then aren't year specific, but each previous year represents an ensemble member of sort.  The thought is that each of the previous year's time series represents a scenario that could potentially happen this year.\n\nThe complexity in `yieldfx_workflow.py` comes from keeping track of which replacements should happen when and what happens when there is missing data in any of these replacements.\n"
  },
  {
    "path": "scripts/yieldfx/baseline/ames.met",
    "content": "[weather.met.weather]\r\nlatitude = 42.03 (DECIMAL DEGREES)\r\ntav = 9.412826 (oC) ! annual average ambient temperature\r\namp = 29.69776 (oC) ! annual amplitude in mean monthly temperature\r\nyear          day           radn          maxt          mint          rain\r\n()            ()            (MJ/m^2)      (oC)          (oC)          (mm)\r\n 1980          1             2.703        -0.6          -3.9           0 \r\n 1980          2             2.495        -2.2          -5             0 \r\n 1980          3             3.534        -2.2          -7.2           0 \r\n 1980          4             3.534        -1.7          -5             0 \r\n 1980          5             3.223        -1.7          -5.6           1.27 \r\n 1980          6             5.568         0            -9.4           1.78 \r\n 1980          7             6.304        -8.3          -18.3          0 \r\n 1980          8             7.249        -10.6         -18.9          0 \r\n 1980          9             7.985        -13.3         -22.8          1.27 \r\n 1980          10            9.351         4.4          -16.1          0 \r\n 1980          11            9.449         9.4          -12.2          0 \r\n 1980          12            9.024        -1.1          -16.1          0 \r\n 1980          13            8.6           10.6         -1.1           0 \r\n 1980          14            9.024         5            -5.6           0 \r\n 1980          15            6.901         6.7           2.2           0 \r\n 1980          16            3.54          5.6           0             20.57 \r\n 1980          17            3.862         0.6          -5             1.02 \r\n 1980          18            4.505        -0.6          -5.6           0 \r\n 1980          19            5.961        -0.6          -6.7           1.78 \r\n 1980          20            8.779        -0.6          -10.6          0 \r\n 1980          21            8.129        -0.6          -9.4           0 \r\n 1980          22            6.569         0            -7.8           0 \r\n 1980          23            8.102        -6.1          -13.3          0 \r\n 1980          24            10.292        5            -9.4           0 \r\n 1980          25            9.069         3.9          -7.2           0 \r\n 1980          26            10.174       -6.1          -16.7          0 \r\n 1980          27            5.64         -11.7         -15.6          0 \r\n 1980          28            5.25         -10.6         -15            0 \r\n 1980          29            8.489        -11.1         -18.9          0 \r\n 1980          30            7.372        -11.7         -15            1.27 \r\n 1980          31            10.716       -12.8         -22.2          0 \r\n 1980          32            11.28        -8.9          -23.3          0 \r\n 1980          33            10.604       -5            -12.8          0 \r\n 1980          34            9.341        -5            -14.4          0 \r\n 1980          35            9.568        -5            -14.4          0 \r\n 1980          36            5.866        -3.3          -7.8           2.54 \r\n 1980          37            9.661        -5.6          -12.2          0 \r\n 1980          38            12.077       -5            -16.1          0 \r\n 1980          39            8.709        -5.6          -11.1          0 \r\n 1980          40            12.425       -6.7          -18.9          0 \r\n 1980          41            12.543       -2.8          -15            0 \r\n 1980          42            11.488       -2.8          -12.8          0 \r\n 1980          43            13.727       -3.3          -18.9          0 \r\n 1980          44            13.608        0            -15            0 \r\n 1980          45            11.005       -1.1          -10.6          0 \r\n 1980          46            10.391       -3.3          -9.4           0 \r\n 1980          47            12.541       -8.9          -17.8          0 \r\n 1980          48            14.345       -2.8          -18.3          0 \r\n 1980          49            13.38         1.1          -7.8           0 \r\n 1980          50            8.881         5            -1.1           0 \r\n 1980          51            5.839         2.8          -0.6           0 \r\n 1980          52            3.928         2.8           0.6           0.51 \r\n 1980          53            4.665         3.3           0             0 \r\n 1980          54            10.528        2.8          -3.9           0 \r\n 1980          55            8.051         0.6          -3.3           0 \r\n 1980          56            12.372        0            -15.6          4.32 \r\n 1980          57            16.996        3.3          -15            0 \r\n 1980          58            16.39         3.9          -7.8           0 \r\n 1980          59            9.582        -2.8          -6.7           0 \r\n 1980          60            12.156       -5.6          -16.1          0 \r\n 1980          61            12.54        -6.7          -17.8          0 \r\n 1980          62            12           -1.7          -16.1          0 \r\n 1980          63            14.27         6.7          -7.8           0 \r\n 1980          64            14.612        5.6          -6.1           3.81 \r\n 1980          65            14.176       -5.6          -16.7          0 \r\n 1980          66            10.888        0            -16.1          0 \r\n 1980          67            14.848        0            -8.3           0 \r\n 1980          68            12.978        2.8          -7.2           0 \r\n 1980          69            12.756        8.3          -2.2           0 \r\n 1980          70            14.43         7.8          -6.1           0 \r\n 1980          71            14.542       -0.6          -10.6          0 \r\n 1980          72            15.229       -0.6          -3.3           1.02 \r\n 1980          73            9.363        -1.7          -6.7           1.02 \r\n 1980          74            6.256         10.6         -8.9           0 \r\n 1980          75            17.744        15.6         -0.6           0 \r\n 1980          76            17.776        12.8          1.1           1.02 \r\n 1980          77            16.17         4.4          -4.4           0 \r\n 1980          78            15.841        14.4         -1.1           0 \r\n 1980          79            17.459        16.1          4.4           0 \r\n 1980          80            17.834        16.1          2.2           0 \r\n 1980          81            16.785        6.7          -2.8           0 \r\n 1980          82            15.628        8.9          -1.7           0 \r\n 1980          83            15.635        7.8          -1.1           0 \r\n 1980          84            13.503        2.2          -1.7           0 \r\n 1980          85            5.969         7.2          -3.9           0 \r\n 1980          86            12.893        6.7          -1.7           0 \r\n 1980          87            12.153        10            0.6           0 \r\n 1980          88            12.875        9.4           1.7           0 \r\n 1980          89            12.005        6.7           0.6           4.32 \r\n 1980          90            7.64          6.1           0             0 \r\n 1980          91            9.043         12.8         -0.6           0 \r\n 1980          92            14.547        12.8          1.7           3.05 \r\n 1980          93            17.381        8.3           0.6           8.89 \r\n 1980          94            9.431         7.8           1.7           12.19 \r\n 1980          95            8.553         11.7         -0.6           0 \r\n 1980          96            13.576        18.3         -1.1           0 \r\n 1980          97            21.476        20            9.4           0.51 \r\n 1980          98            19.424        19.4          6.7           0 \r\n 1980          99            20.259        17.2          3.3           1.78 \r\n 1980          100           19.019        4.4          -0.6           3.81 \r\n 1980          101           9.025         10.6         -1.1           0 \r\n 1980          102           18.467        9.4          -1.1           0 \r\n 1980          103           18.467        10.6         -1.7           0 \r\n 1980          104           19.863        10           -2.2           0 \r\n 1980          105           20.142        9.4          -2.2           0 \r\n 1980          106           17.895        15.6          1.1           0 \r\n 1980          107           21.981        19.4          1.7           0 \r\n 1980          108           23.845        19.4          7.2           0 \r\n 1980          109           21.29         21.7          3.3           0 \r\n 1980          110           24.16         27.2          6.7           0 \r\n 1980          111           24.017        30            10            0 \r\n 1980          112           24.91         33.3          10            0 \r\n 1980          113           24.766        36.1          13.3          0 \r\n 1980          114           24.363        33.3          8.3           0 \r\n 1980          115           25.089        18.3          1.7           0 \r\n 1980          116           23.222        16.1          0.6           0 \r\n 1980          117           22.929        17.8          1.7           0 \r\n 1980          118           21.767        21.1          5.6           0 \r\n 1980          119           21.62         21.1          1.7           0 \r\n 1980          120           24.268        21.1          4.4           0 \r\n 1980          121           23.993        21.7          8.3           0 \r\n 1980          122           19.968        23.9          5.6           0 \r\n 1980          123           24.732        27.2          9.4           0 \r\n 1980          124           24.732        26.7          11.1          0 \r\n 1980          125           25.216        30            10            0 \r\n 1980          126           26.156        30.6          16.7          0 \r\n 1980          127           23.18         26.7          6.1           0 \r\n 1980          128           26.65         19.4          1.7           0 \r\n 1980          129           26.335        14.4         -0.6           0 \r\n 1980          130           22.704        22.2          1.7           0 \r\n 1980          131           25.561        21.7          12.2          3.3 \r\n 1980          132           20.481        22.8          3.3           0 \r\n 1980          133           17.902        20.6          6.7           0 \r\n 1980          134           19.98         18.9          6.7           2.29 \r\n 1980          135           13.426        22.2          3.3           0.51 \r\n 1980          136           23.171        21.7          8.9           1.52 \r\n 1980          137           20.436        21.1          10.6          4.83 \r\n 1980          138           16.896        13.3          10            14.48 \r\n 1980          139           5.184         13.9          9.4           5.33 \r\n 1980          140           5.184         18.9          10            0.76 \r\n 1980          141           8.747         22.2          11.1          0.51 \r\n 1980          142           20.056        25.6          10            0 \r\n 1980          143           24.132        28.9          11.7          0 \r\n 1980          144           25.6          28.3          12.8          0 \r\n 1980          145           24.784        26.7          14.4          0 \r\n 1980          146           20.352        30            13.3          0 \r\n 1980          147           23.306        30            15.6          9.14 \r\n 1980          148           21.807        31.1          16.1          0 \r\n 1980          149           21.807        31.7          15.6          0.76 \r\n 1980          150           18.007        29.4          16.7          1.78 \r\n 1980          151           15.694        30            14.4          24.89 \r\n 1980          152           17.016        22.8          11.7          2.79 \r\n 1980          153           15.909        25            14.4          16.51 \r\n 1980          154           14.618        25            13.9          10.92 \r\n 1980          155           16.045        25            11.1          0 \r\n 1980          156           18.362        25.6          16.7          16.76 \r\n 1980          157           14.975        32.8          17.2          0 \r\n 1980          158           22.966        31.7          18.3          0.76 \r\n 1980          159           23.505        26.7          17.2          0 \r\n 1980          160           14.175        21.7          8.9           0 \r\n 1980          161           28.708        27.2          12.2          0 \r\n 1980          162           26.376        27.2          13.3          0 \r\n 1980          163           27.811        27.2          8.3           0 \r\n 1980          164           29.785        29.4          15            0 \r\n 1980          165           25.822        31.7          17.8          3.81 \r\n 1980          166           17.877        30.6          17.2          2.29 \r\n 1980          167           18.238        26.7          15            17.02 \r\n 1980          168           16.432        20.6          10            0 \r\n 1980          169           23.475        21.1          11.1          0 \r\n 1980          170           22.933        27.8          12.2          20.32 \r\n 1980          171           24.919        20.6          11.7          8.13 \r\n 1980          172           17.877        22.2          10            0 \r\n 1980          173           24.919        26.7          10.6          0 \r\n 1980          174           27.808        27.2          14.4          1.52 \r\n 1980          175           24.197        26.7          17.2          1.78 \r\n 1980          176           14.807        28.9          15.6          0 \r\n 1980          177           23.475        30.6          16.1          0 \r\n 1980          178           24.377        33.9          19.4          0 \r\n 1980          179           23.655        35            22.2          0 \r\n 1980          180           22.391        34.4          17.2          0 \r\n 1980          181           27.267        29.4          15            0 \r\n 1980          182           26.364        27.8          10            0 \r\n 1980          183           30.9          31.1          17.8          0 \r\n 1980          184           25.199        30            13.3          0 \r\n 1980          185           27.644        26.1          12.8          0 \r\n 1980          186           25.763        31.1          16.1          2.03 \r\n 1980          187           24.259        33.3          19.4          0.76 \r\n 1980          188           18.429        31.7          19.4          26.42 \r\n 1980          189           24.071        35.6          24.4          0 \r\n 1980          190           15.695        35            20.6          0 \r\n 1980          191           24.85         32.8          21.1          0 \r\n 1980          192           22.235        32.8          21.1          4.57 \r\n 1980          193           17.003        33.3          22.8          0 \r\n 1980          194           21.3          33.3          22.2          0 \r\n 1980          195           20.606        33.9          20            0 \r\n 1980          196           23.576        36.1          23.3          1.52 \r\n 1980          197           23.019        35.6          21.7          1.52 \r\n 1980          198           23.39         33.3          19.4          4.32 \r\n 1980          199           17.89         33.3          16.1          0 \r\n 1980          200           26.374        32.2          19.4          2.79 \r\n 1980          201           17.89         31.7          19.4          4.57 \r\n 1980          202           16.968        31.7          23.9          0 \r\n 1980          203           18.872        27.8          17.8          0 \r\n 1980          204           22.171        27.2          14.4          0 \r\n 1980          205           25.102        26.1          12.2          0 \r\n 1980          206           26.03         31.1          12.2          0 \r\n 1980          207           26.94         30.6          16.7          0 \r\n 1980          208           23.117        26.1          18.3          2.54 \r\n 1980          209           13.561        26.1          11.7          0 \r\n 1980          210           26.219        30.6          12.8          0 \r\n 1980          211           26.58         31.7          16.1          0 \r\n 1980          212           25.864        35            19.4          0 \r\n 1980          213           23.709        31.1          17.2          0 \r\n 1980          214           26.576        33.3          17.8          2.29 \r\n 1980          215           23.687        28.9          21.1          0 \r\n 1980          216           20.682        30            14.4          0 \r\n 1980          217           24.405        30            15.6          15.24 \r\n 1980          218           22.298        30            12.8          0 \r\n 1980          219           18.611        30.6          18.9          0 \r\n 1980          220           22.67         35            20            0 \r\n 1980          221           20.228        35            23.9          0 \r\n 1980          222           19.57         30.6          18.3          26.92 \r\n 1980          223           14.721        29.4          18.3          3.56 \r\n 1980          224           13.759        26.1          18.3          12.95 \r\n 1980          225           12.899        25.6          14.4          0 \r\n 1980          226           22.187        29.4          16.7          0 \r\n 1980          227           21.008        28.9          17.2          0 \r\n 1980          228           17.763        25.6          13.3          0 \r\n 1980          229           18.317        23.9          12.8          58.67 \r\n 1980          230           13.907        26.7          17.2          0.76 \r\n 1980          231           10.947        30            13.9          0 \r\n 1980          232           22.399        31.7          18.3          5.59 \r\n 1980          233           16.053        31.7          21.7          0 \r\n 1980          234           17.223        28.9          13.9          0 \r\n 1980          235           22.24         27.8          14.4          0 \r\n 1980          236           21.749        27.8          13.9          0 \r\n 1980          237           20.752        29.4          15            0 \r\n 1980          238           19.779        31.7          16.7          0 \r\n 1980          239           20.109        31.7          18.9          0 \r\n 1980          240           19.799        31.1          15.6          0 \r\n 1980          241           18.981        27.2          16.7          0 \r\n 1980          242           13.645        31.1          17.8          0 \r\n 1980          243           18.193        30.6          18.3          1.52 \r\n 1980          244           12.738        25            16.7          9.65 \r\n 1980          245           11.771        27.2          17.2          0 \r\n 1980          246           11.263        25.6          11.7          0 \r\n 1980          247           20.451        30.6          16.1          0 \r\n 1980          248           19.121        30            15            20.83 \r\n 1980          249           13.385        28.9          13.3          0 \r\n 1980          250           18.686        29.4          15.6          0 \r\n 1980          251           17.956        33.3          18.9          0 \r\n 1980          252           16.806        33.9          18.3          0 \r\n 1980          253           17.095        32.2          13.3          3.81 \r\n 1980          254           14.089        23.9          7.8           0 \r\n 1980          255           19.553        25.6          12.8          0 \r\n 1980          256           18.261        30.6          16.1          2.54 \r\n 1980          257           12.126        27.2          15.6          7.87 \r\n 1980          258           11.608        21.7          13.9          0 \r\n 1980          259           11.042        23.3          12.8          0 \r\n 1980          260           11.657        22.8          10            0 \r\n 1980          261           14.186        18.3          3.3           0 \r\n 1980          262           18.254        23.9          7.8           0 \r\n 1980          263           17.697        30            10.6          0 \r\n 1980          264           17.28         30.6          16.7          1.02 \r\n 1980          265           11.889        29.4          10.6          0 \r\n 1980          266           17.004        27.2          11.7          0.51 \r\n 1980          267           15.633        20            3.3           0 \r\n 1980          268           17.14         21.1          5.6           0 \r\n 1980          269           16.323        20            8.3           1.02 \r\n 1980          270           13.087        20            0             0 \r\n 1980          271           17.27         25.6          10            0 \r\n 1980          272           16.058        25            10            0 \r\n 1980          273           14.586        23.3          7.2           0 \r\n 1980          274           14.2          28.3          10            0 \r\n 1980          275           13.802        27.8          9.4           0 \r\n 1980          276           13.687        20.6          6.1           0 \r\n 1980          277           12.897        10.6          1.7           0 \r\n 1980          278           11.353        13.3          0             0 \r\n 1980          279           11.745        18.3         -1.1           0 \r\n 1980          280           14.751        23.9          3.9           0 \r\n 1980          281           15.009        27.8          7.2           0 \r\n 1980          282           14.881        26.7          11.1          0 \r\n 1980          283           14.24         26.7          8.3           0 \r\n 1980          284           14.371        26.1          9.4           0 \r\n 1980          285           12.845        18.9          6.7           0 \r\n 1980          286           10.59         13.9         -3.3           0 \r\n 1980          287           13.49         18.9          1.7           0 \r\n 1980          288           12.622        18.3          8.3           0 \r\n 1980          289           10.622        17.2          3.3           0 \r\n 1980          290           9.537         21.1          8.9           13.46 \r\n 1980          291           5.822         20.6          5             3.3 \r\n 1980          292           7.979         9.4           0             0 \r\n 1980          293           7.12          15.6         -2.2           0 \r\n 1980          294           10.949        19.4          5             0 \r\n 1980          295           10.827        18.3          2.8           0 \r\n 1980          296           10.584        18.9          2.2           0 \r\n 1980          297           10.246        18.3          6.1           8.89 \r\n 1980          298           9.402         6.7           0.6           7.11 \r\n 1980          299           5.375         5            -1.1           0 \r\n 1980          300           5.016         4.4          -2.2           0 \r\n 1980          301           6.153         2.2          -1.1           2.79 \r\n 1980          302           3.195         4.4          -5             0 \r\n 1980          303           4.924         6.1          -5.6           0 \r\n 1980          304           9.027         13.9         -3.3           0 \r\n 1980          305           10.199        17.2          0             0 \r\n 1980          306           10.683        13.9         -1.7           0 \r\n 1980          307           10.219        16.7         -2.2           0 \r\n 1980          308           9.891         15            7.2           1.78 \r\n 1980          309           7.476         12.2          1.7           0 \r\n 1980          310           8.202         13.9          0             0 \r\n 1980          311           9.455         23.9          2.8           0 \r\n 1980          312           10.024        20            6.7           0 \r\n 1980          313           9.25          21.7          3.3           0 \r\n 1980          314           9.475         19.4          5             0 \r\n 1980          315           8.936         15.6         -3.3           0 \r\n 1980          316           9.159         6.7           1.7           0 \r\n 1980          317           4.915         15.6          2.8           0 \r\n 1980          318           6.746         14.4          1.7           7.37 \r\n 1980          319           7.078         2.8          -1.7           1.27 \r\n 1980          320           2.765         1.7          -2.2           0 \r\n 1980          321           3.285         6.7          -6.1           0 \r\n 1980          322           7.664         4.4          -5             0 \r\n 1980          323           6.46          4.4          -9.4           0 \r\n 1980          324           7.803         10           -6.7           0 \r\n 1980          325           8.345         7.8          -3.3           0 \r\n 1980          326           7.37          10.6         -6.7           0 \r\n 1980          327           8.26          12.8          0.6           0 \r\n 1980          328           7.402         8.3           1.1           0 \r\n 1980          329           5.686         3.3          -7.8           0 \r\n 1980          330           7.08          5            -12.2          0 \r\n 1980          331           7.963         6.1          -9.4           0 \r\n 1980          332           7.326         2.8          -5.6           0 \r\n 1980          333           5.627         5.6          -9.4           0 \r\n 1980          334           7.22          8.3          -1.1           0 \r\n 1980          335           6.199         15.6         -2.8           0 \r\n 1980          336           6.934         11.7         -4.4           0 \r\n 1980          337           7.039        -3.9          -16.7          1.02 \r\n 1980          338           5.673        -1.1          -18.3          0 \r\n 1980          339           7.249         1.7          -7.2           0 \r\n 1980          340           5.821         12.8         -0.6           0 \r\n 1980          341           6.445         10.6          0.6           0 \r\n 1980          342           4.262         1.7          -1.7           3.05 \r\n 1980          343           2.703        -1.1          -8.3           0 \r\n 1980          344           3.223         0.6          -8.9           0 \r\n 1980          345           5.198        -0.6          -12.2          0 \r\n 1980          346           6.861        -3.3          -10.6          0 \r\n 1980          347           4.937         9.4          -5.6           0 \r\n 1980          348           7.302         5.6          -12.2          0 \r\n 1980          349           8.022         3.3          -6.7           0 \r\n 1980          350           6.274         1.1          -7.8           0 \r\n 1980          351           5.863         1.7          -5.6           0 \r\n 1980          352           4.937         11.7         -1.1           0 \r\n 1980          353           5.965         10           -3.9           0 \r\n 1980          354           6.994        -2.2          -17.8          0 \r\n 1980          355           7.302        -11.1         -20.6          0 \r\n 1980          356           5.554        -5.6          -12.8          0 \r\n 1980          357           5.863         0            -9.4           0 \r\n 1980          358           5.348         0            -7.8           0 \r\n 1980          359           5.143        -3.9          -18.9          1.02 \r\n 1980          360           7.611        -9.4          -23.3          0 \r\n 1980          361           7.2          -4.4          -11.7          0 \r\n 1980          362           6.068        -0.6          -8.3           0 \r\n 1980          363           4.525         3.9          -6.1           0 \r\n 1980          364           5.863         7.8          -4.4           0 \r\n 1980          365           6.965         8.3          -3.9           0 \r\n 1980          366           7.485         4.4          -2.2           0 \r\n 1981          1             3.223         1.7          -2.2           0 \r\n 1981          2             7.277         1.7          -12.2          0 \r\n 1981          3             7.693         1.7          -16.1          0 \r\n 1981          4             3.95         -10           -16.7          0 \r\n 1981          5             7.069         1.1          -15.6          0 \r\n 1981          6             6.199         0.6          -5.6           0 \r\n 1981          7             7.564        -3.3          -17.8          0 \r\n 1981          8             5.148        -4.4          -15            0 \r\n 1981          9             5.463        -6.7          -13.9          0 \r\n 1981          10            7.039        -8.9          -21.1          0 \r\n 1981          11            7.326        -7.2          -21.1          0 \r\n 1981          12            9.131         8.3          -16.1          0 \r\n 1981          13            7.538         6.1          -7.2           0 \r\n 1981          14            6.37          1.7          -8.3           0 \r\n 1981          15            6.476         0            -12.2          0 \r\n 1981          16            6.651        -6.7          -17.8          0 \r\n 1981          17            9.118         6.1          -17.2          0 \r\n 1981          18            9.44          10           -8.3           0 \r\n 1981          19            8.454         9.4          -5.6           0 \r\n 1981          20            8.67          7.8          -7.2           0 \r\n 1981          21            9.212         6.7          -10            0 \r\n 1981          22            9.525         10           -6.7           0 \r\n 1981          23            9.854         12.8         -5             0 \r\n 1981          24            10.182        15.6         -3.9           0 \r\n 1981          25            9.511         15           -1.1           0 \r\n 1981          26            6.967         11.7          0             0 \r\n 1981          27            5.087         2.2          -5.6           0 \r\n 1981          28            8.377        -1.7          -14.4          0 \r\n 1981          29            8.489        -3.9          -17.8          0 \r\n 1981          30            8.936         0            -15.6          0 \r\n 1981          31            7.558        -0.6          -10            0 \r\n 1981          32            5.753        -3.3          -12.2          2.03 \r\n 1981          33            8.573        -11.1         -21.1          0 \r\n 1981          34            9.227        -8.9          -22.2          0 \r\n 1981          35            9.113        -8.9          -19.4          0 \r\n 1981          36            10.006       -1.1          -17.2          0 \r\n 1981          37            9.546         1.1          -11.1          0 \r\n 1981          38            8.741         0            -7.8           0 \r\n 1981          39            11.264       -6.7          -19.4          0 \r\n 1981          40            8.361        -8.3          -16.7          0 \r\n 1981          41            6.448        -8.9          -17.2          6.35 \r\n 1981          42            8.323        -16.1         -28.9          0 \r\n 1981          43            13.608       -1.1          -23.3          0 \r\n 1981          44            12.662        6.1          -11.1          0 \r\n 1981          45            12.07         10.6         -7.8           0 \r\n 1981          46            10.511        12.8          2.8           0 \r\n 1981          47            12.541        17.8          1.1           0 \r\n 1981          48            13.26         19.4          3.3           0 \r\n 1981          49            12.416        18.9          5.6           0 \r\n 1981          50            12.043        16.1          0             0 \r\n 1981          51            13.138        16.7         -2.8           0 \r\n 1981          52            12.03         15.6          2.8           0 \r\n 1981          53            4.788         6.7           1.7           4.83 \r\n 1981          54            9.661         10           -2.2           0 \r\n 1981          55            13.501        16.7         -3.9           0 \r\n 1981          56            13.247        16.1          0             0 \r\n 1981          57            8.248         6.7          -0.6           0 \r\n 1981          58            8.321         16.7          1.7           3.81 \r\n 1981          59            11.094        8.3          -0.6           0 \r\n 1981          60            9.729         11.7         -2.2           0 \r\n 1981          61            12.756        9.4          -8.9           0 \r\n 1981          62            10.81         5            -8.9           0 \r\n 1981          63            5.125         4.4          -0.6           5.08 \r\n 1981          64            10.904        6.7          -6.7           0 \r\n 1981          65            11.328        5.6          -7.2           0 \r\n 1981          66            12.538        3.3          -11.1          0 \r\n 1981          67            13.422        8.3          -7.2           0 \r\n 1981          68            12.091        7.2          -5             1.52 \r\n 1981          69            13.759        11.7         -6.7           0 \r\n 1981          70            14.318        11.1         -6.1           0 \r\n 1981          71            14.1          16.1         -2.8           0 \r\n 1981          72            14.552        13.9         -3.9           0 \r\n 1981          73            15.697        15.6         -7.2           0 \r\n 1981          74            14.104        16.1          5             0 \r\n 1981          75            15.712        13.3         -6.1           0 \r\n 1981          76            14.106        12.8         -3.3           0 \r\n 1981          77            13.875        6.1          -7.2           0 \r\n 1981          78            13.528        7.8          -5.6           0 \r\n 1981          79            15.386        9.4          -8.3           0 \r\n 1981          80            11.656        8.9           1.7           0 \r\n 1981          81            14.688        18.9         -3.9           0 \r\n 1981          82            16.819        16.1         -1.1           0 \r\n 1981          83            16.701        18.3         -0.6           0 \r\n 1981          84            15.759        20            3.3           0 \r\n 1981          85            15.878        17.8          1.7           0 \r\n 1981          86            16.244        19.4          2.2           0 \r\n 1981          87            14.559        24.4          14.4          0 \r\n 1981          88            9.822         21.7          7.8           7.11 \r\n 1981          89            7.882         13.3          6.7           0.51 \r\n 1981          90            9.776         18.9          10            0 \r\n 1981          91            13.184        18.3          6.7           0 \r\n 1981          92            19.806        28.9          2.8           0 \r\n 1981          93            16.842        27.8          15            19.05 \r\n 1981          94            13.848        18.9          2.2           8.89 \r\n 1981          95            12.219        9.4          -1.1           0 \r\n 1981          96            18.604        17.8         -2.2           0 \r\n 1981          97            18.467        20.6          5             0 \r\n 1981          98            11.439        20            7.8           3.05 \r\n 1981          99            18.606        20            1.7           0 \r\n 1981          100           18.606        25.6          7.2           0 \r\n 1981          101           15.134        23.9          11.7          0 \r\n 1981          102           15.134        18.9          7.2           0 \r\n 1981          103           14.407        19.4          12.2          0 \r\n 1981          104           14.547        13.3          0             2.29 \r\n 1981          105           20.854        16.7         -1.7           0 \r\n 1981          106           13.245        17.8          3.9           4.83 \r\n 1981          107           13.2          23.9          10            0 \r\n 1981          108           21.858        23.9          3.3           0 \r\n 1981          109           14.868        15            8.9           0 \r\n 1981          110           13.152        12.2          4.4           0 \r\n 1981          111           16.127        11.1          0.6           0 \r\n 1981          112           14.255        18.3          8.9           9.14 \r\n 1981          113           14.212        16.1          4.4           0 \r\n 1981          114           22.623        19.4          0.6           0 \r\n 1981          115           24.098        30            5             0 \r\n 1981          116           23.368        29.4          8.9           0 \r\n 1981          117           22.209        31.7          15            0 \r\n 1981          118           22.356        29.4          10.6          0 \r\n 1981          119           22.062        25            5.6           0 \r\n 1981          120           21.623        22.8          7.8           0 \r\n 1981          121           21.118        19.4          5             0 \r\n 1981          122           24.421        23.9          3.3           0 \r\n 1981          123           20.843        26.7          14.4          0 \r\n 1981          124           13.313        25            14.4          5.08 \r\n 1981          125           12.686        18.3          8.9           0 \r\n 1981          126           20.674        17.2          4.4           0 \r\n 1981          127           24.758        17.8          1.1           0 \r\n 1981          128           18.45         16.7          8.9           0 \r\n 1981          129           16.512        13.9          3.9           0 \r\n 1981          130           25.085        16.7         -1.1           0 \r\n 1981          131           26.832        19.4         -1.1           0 \r\n 1981          132           23.656        19.4          5             0.76 \r\n 1981          133           14.066        16.7          7.2           0 \r\n 1981          134           22.697        22.2          6.1           2.03 \r\n 1981          135           27.677        24.4          5             0 \r\n 1981          136           26.389        24.4          8.3           0 \r\n 1981          137           15.769        22.2          11.1          5.08 \r\n 1981          138           11.987        14.4          6.1           4.32 \r\n 1981          139           25.918        22.8          2.2           0 \r\n 1981          140           27.861        25            7.2           0 \r\n 1981          141           27.23         26.7          6.7           0 \r\n 1981          142           16.143        25.6          12.8          2.29 \r\n 1981          143           12.718        23.3          15            5.84 \r\n 1981          144           17.07         21.1          7.8           0 \r\n 1981          145           23.799        23.3          7.2           0 \r\n 1981          146           21.993        24.4          10.6          0 \r\n 1981          147           22.137        26.7          13.3          0 \r\n 1981          148           22.633        27.8          14.4          0 \r\n 1981          149           23.293        28.9          14.4          0 \r\n 1981          150           24.615        28.9          12.8          0 \r\n 1981          151           26.763        28.9          9.4           0 \r\n 1981          152           27.149        29.4          10            0 \r\n 1981          153           22.641        27.2          17.8          1.02 \r\n 1981          154           25.493        26.1          11.1          0 \r\n 1981          155           26.385        29.4          13.3          0 \r\n 1981          156           27.633        33.9          15.6          0 \r\n 1981          157           29.426        33.9          15            0 \r\n 1981          158           26.734        32.2          16.7          7.87 \r\n 1981          159           16.148        25            17.2          0.76 \r\n 1981          160           21.531        24.4          13.3          1.52 \r\n 1981          161           26.734        29.4          12.2          0 \r\n 1981          162           24.222        29.4          16.7          0 \r\n 1981          163           23.864        30.6          15.6          0 \r\n 1981          164           22.211        33.3          22.8          0 \r\n 1981          165           17.516        31.7          25            0 \r\n 1981          166           18.78         30            13.9          29.21 \r\n 1981          167           18.057        24.4          11.1          0 \r\n 1981          168           26.183        27.8          13.3          0 \r\n 1981          169           21.488        27.2          16.1          0 \r\n 1981          170           27.267        26.1          11.7          0 \r\n 1981          171           22.03         26.7          16.7          0 \r\n 1981          172           19.863        23.9          15            1.02 \r\n 1981          173           25.642        27.2          11.7          0 \r\n 1981          174           28.35         31.1          11.7          0 \r\n 1981          175           17.877        30.6          17.2          46.23 \r\n 1981          176           25.642        27.2          15            0 \r\n 1981          177           26.544        27.8          14.4          0 \r\n 1981          178           20.585        27.8          15.6          0 \r\n 1981          179           19.321        33.3          21.1          0 \r\n 1981          180           16.793        32.8          18.3          16.26 \r\n 1981          181           17.335        27.8          13.9          0 \r\n 1981          182           23.21068      27.8          14.4          0 \r\n 1981          183           20.76072      28.3          16.1          0 \r\n 1981          184           16.95468      27.8          18.9          14.73 \r\n 1981          185           12.28384      27.8          16.1          5.08 \r\n 1981          186           21.10664      29.4          18.3          0 \r\n 1981          187           23.70196      30.6          17.8          0 \r\n 1981          188           22.49124      30            17.8          0 \r\n 1981          189           19.94008      32.2          21.1          0 \r\n 1981          190           17.87744      31.7          17.2          8.38 \r\n 1981          191           25.26872      31.7          16.1          0 \r\n 1981          192           21.48752      34.4          22.2          0 \r\n 1981          193           19.596        36.1          22.8          0 \r\n 1981          194           20.66504      35            22.8          0 \r\n 1981          195           21.3486       34.4          21.1          0 \r\n 1981          196           22.88592      34.4          20.6          0 \r\n 1981          197           18.44508      31.1          20            0 \r\n 1981          198           19.17372      30.6          19.4          0 \r\n 1981          199           20.19216      28.9          17.8          0 \r\n 1981          200           18.83424      29.4          19.4          0 \r\n 1981          201           22.90708      29.4          16.1          0 \r\n 1981          202           23.43148      29.4          16.7          0 \r\n 1981          203           20.56568      28.3          16.7          2.03 \r\n 1981          204           18.88024      25.6          15.6          0 \r\n 1981          205           19.25836      29.4          16.7          0 \r\n 1981          206           18.42116      28.9          18.9          44.96 \r\n 1981          207           12.72728      21.7          14.4          0 \r\n 1981          208           13.47432      19.4          12.8          20.32 \r\n 1981          209           13.3078       25.6          11.1          5.33 \r\n 1981          210           23.4554       21.7          10            0 \r\n 1981          211           20.82052      27.2          16.7          0 \r\n 1981          212           21.48108      28.9          16.7          0 \r\n 1981          213           22.12968      29.4          18.3          0 \r\n 1981          214           13.82392      27.8          19.4          14.48 \r\n 1981          215           15.44956      27.8          15            0 \r\n 1981          216           21.48292      30.6          18.3          0 \r\n 1981          217           14.69884      30.6          19.4          44.45 \r\n 1981          218           20.51416      28.9          18.3          0 \r\n 1981          219           22.29988      28.9          15.6          0 \r\n 1981          220           22.46088      27.2          14.4          17.78 \r\n 1981          221           22.30632      25.6          15            0 \r\n 1981          222           23.10304      23.3          13.9          0 \r\n 1981          223           23.10212      26.7          13.3          0 \r\n 1981          224           22.94388      30            15.6          0 \r\n 1981          225           22.31092      28.9          14.4          1.78 \r\n 1981          226           13.8276       30            19.4          32.26 \r\n 1981          227           14.45688      30            18.9          0 \r\n 1981          228           22.15728      25.6          13.3          0 \r\n 1981          229           21.06432      21.7          10            0 \r\n 1981          230           22.4664       22.8          10            0 \r\n 1981          231           22.931        23.3          10            0 \r\n 1981          232           23.22908      25            10            0 \r\n 1981          233           22.9218       25            10            0 \r\n 1981          234           21.8454       26.7          12.2          0 \r\n 1981          235           20.1618       27.2          14.4          0 \r\n 1981          236           13.89936      26.7          15            14.22 \r\n 1981          237           18.04488      27.2          16.7          0 \r\n 1981          238           12.13112      27.8          17.2          8.38 \r\n 1981          239           10.23684      25.6          16.1          8.64 \r\n 1981          240           8.73172       24.4          17.2          3.81 \r\n 1981          241           11.20836      25.6          15.6          0 \r\n 1981          242           15.99052      25.6          16.1          0.51 \r\n 1981          243           14.24068      30            20.6          0 \r\n 1981          244           23.058        26.7          10            0 \r\n 1981          245           18.079        22.2          9.4           0 \r\n 1981          246           20.006        25.6          8.3           0 \r\n 1981          247           13.091        24.4          16.1          2.03 \r\n 1981          248           18.239        25.6          11.7          0 \r\n 1981          249           18.248        26.1          12.8          0 \r\n 1981          250           10.803        25.6          16.7          38.1 \r\n 1981          251           18.689        23.9          10.6          0 \r\n 1981          252           19.558        27.8          10.6          0 \r\n 1981          253           19.265        31.1          14.4          0 \r\n 1981          254           18.115        30.6          15            0 \r\n 1981          255           19.117        27.2          12.2          0 \r\n 1981          256           18.831        30.6          11.1          0 \r\n 1981          257           17.695        31.1          15.6          0 \r\n 1981          258           16.704        24.4          10            0 \r\n 1981          259           17.135        19.4          6.1           0 \r\n 1981          260           17.275        16.7          2.8           0 \r\n 1981          261           18.812        21.1          2.8           0 \r\n 1981          262           18.951        28.3          7.8           0 \r\n 1981          263           18.248        28.3          8.9           0 \r\n 1981          264           16.589        27.2          10            0 \r\n 1981          265           14.81         23.3          10            0 \r\n 1981          266           14.536        22.2          8.3           0 \r\n 1981          267           12.923        21.1          11.1          3.05 \r\n 1981          268           7.754         23.9          13.9          16.26 \r\n 1981          269           8.635         23.3          10            2.03 \r\n 1981          270           14.976        19.4          7.2           0 \r\n 1981          271           16.727        20.6          2.8           0 \r\n 1981          272           15.657        31.7          10            0 \r\n 1981          273           14.2          31.1          17.8          0 \r\n 1981          274           14.864        21.7          6.7           0 \r\n 1981          275           15.266        15           -1.7           0 \r\n 1981          276           13.818        15            2.8           7.11 \r\n 1981          277           7.177         16.7          8.3           7.62 \r\n 1981          278           8.482         19.4          11.7          0 \r\n 1981          279           11.257        16.7          6.7           0 \r\n 1981          280           14.621        16.7          1.1           0 \r\n 1981          281           14.24         17.8          1.1           0 \r\n 1981          282           11.546        16.7          6.7           0.76 \r\n 1981          283           8.012         18.3          8.3           0.76 \r\n 1981          284           12.972        18.9          2.2           0 \r\n 1981          285           10.212        17.8          9.4           1.02 \r\n 1981          286           5.799         17.2          13.3          0.76 \r\n 1981          287           4.749         18.3          13.9          0.76 \r\n 1981          288           7.748         16.7          6.7           3.3 \r\n 1981          289           12.015        18.3          5             0 \r\n 1981          290           8.051         20            10            8.89 \r\n 1981          291           7.488         10.6          4.4           1.27 \r\n 1981          292           12.89         17.8         -3.3           0 \r\n 1981          293           11.557        17.8          7.2           0 \r\n 1981          294           10.462        13.3          2.8           0 \r\n 1981          295           11.314        9.4          -3.9           0 \r\n 1981          296           11.09         8.3          -7.2           0 \r\n 1981          297           7.835         1.7          -6.1           0.76 \r\n 1981          298           7.166         6.7          -4.4           0.51 \r\n 1981          299           11.586        11.1         -6.1           0 \r\n 1981          300           11.715        16.7         -2.2           0 \r\n 1981          301           10.887        18.3          2.2           0 \r\n 1981          302           9.964         19.4          5.6           0 \r\n 1981          303           8.206         18.9          8.9           0 \r\n 1981          304           5.275         18.3          10            8.89 \r\n 1981          305           4.296         13.3          8.3           2.79 \r\n 1981          306           2.322         13.3          10            11.18 \r\n 1981          307           2.875         15.6          10.6          10.41 \r\n 1981          308           3.45          16.7          11.1          1.52 \r\n 1981          309           6.493         12.8          6.7           1.27 \r\n 1981          310           9.796         15.6          0             0 \r\n 1981          311           10.366        17.2         -1.1           0 \r\n 1981          312           9.25          11.7          0.6           0 \r\n 1981          313           9.25          5            -6.7           0 \r\n 1981          314           9.383         12.8         -5             0 \r\n 1981          315           9.494         12.8         -1.7           0 \r\n 1981          316           9.271         13.3         -2.2           0 \r\n 1981          317           8.847         17.2         -2.2           0 \r\n 1981          318           8.405         18.9          1.7           0 \r\n 1981          319           6.083         13.9          7.8           0 \r\n 1981          320           7.992         12.8          0             0 \r\n 1981          321           8.649         15.6         -0.6           0 \r\n 1981          322           7.773         14.4          3.3           0 \r\n 1981          323           5.636         13.3         -1.1           14.22 \r\n 1981          324           3.685        -0.6          -6.7           0 \r\n 1981          325           4.986        -3.3          -9.4           0 \r\n 1981          326           7.509         5            -8.9           0 \r\n 1981          327           3.862         3.9           0.6           2.03 \r\n 1981          328           3.433         2.8          -1.1           0 \r\n 1981          329           3.54          3.3           0             0 \r\n 1981          330           3.185         3.9           0.6           0 \r\n 1981          331           3.61          1.7          -3.3           0 \r\n 1981          332           4.353         2.2          -4.4           0 \r\n 1981          333           7.007         3.3          -7.8           0 \r\n 1981          334           4.518         2.8          -2.8           14.48 \r\n 1981          335           1.681         0.6          -1.7           13.46 \r\n 1981          336           6.514         0            -10.6          0 \r\n 1981          337           6.199         2.2          -8.3           1.52 \r\n 1981          338           4.308         1.1          -3.9           0 \r\n 1981          339           6.341         3.3          -6.7           0 \r\n 1981          340           6.133         7.2          -1.7           0 \r\n 1981          341           5.925         8.3          -1.1           0 \r\n 1981          342           5.614         2.8          -3.3           0 \r\n 1981          343           4.99          1.1          -6.7           0 \r\n 1981          344           5.406        -1.7          -9.4           0 \r\n 1981          345           4.574         2.8          -3.3           0 \r\n 1981          346           2.983         1.1          -1.7           0 \r\n 1981          347           2.366         1.7          -1.1           0 \r\n 1981          348           7.611         2.2          -10.6          0 \r\n 1981          349           4.423        -9.4          -12.2          1.52 \r\n 1981          350           5.965        -10.6         -16.7          0 \r\n 1981          351           6.891        -12.2         -21.1          0 \r\n 1981          352           7.714        -13.9         -22.2          0 \r\n 1981          353           8.228        -11.1         -24.4          0 \r\n 1981          354           8.434        -0.6          -19.4          0 \r\n 1981          355           6.171         2.8          -1.1           0 \r\n 1981          356           6.891         1.1          -5             0 \r\n 1981          357           7.92          1.7          -10.6          0 \r\n 1981          358           7.817         1.7          -10.6          0 \r\n 1981          359           8.022         2.8          -10.6          0 \r\n 1981          360           6.377         2.2          -3.3           0 \r\n 1981          361           4.937        -1.7          -6.1           0 \r\n 1981          362           7.302        -2.8          -12.8          0.76 \r\n 1981          363           7.92         -5            -17.8          0 \r\n 1981          364           8.316         1.1          -15.6          0 \r\n 1981          365           8.005         2.2          -11.7          1.27 \r\n 1982          1             8.109        -10.6         -20            0 \r\n 1982          2             5.821        -0.6          -12.2          4.83 \r\n 1982          3             6.341         0            -17.8          0 \r\n 1982          4             3.327        -11.1         -16.7          2.03 \r\n 1982          5             7.693        -3.3          -17.2          0 \r\n 1982          6             7.67         -9.4          -17.8          1.52 \r\n 1982          7             7.775        -16.7         -26.7          0 \r\n 1982          8             8.195        -8.3          -21.1          0 \r\n 1982          9             8.825        -12.8         -25.6          0.76 \r\n 1982          10            8.3          -18.3         -31.7          0 \r\n 1982          11            7.113        -12.2         -23.3          0 \r\n 1982          12            5.521        -12.2         -16.1          1.52 \r\n 1982          13            7.432        -13.9         -23.3          0 \r\n 1982          14            9.131        -16.7         -28.9          0 \r\n 1982          15            9.343        -5.6          -20            0.51 \r\n 1982          16            9.655        -11.1         -27.2          0 \r\n 1982          17            9.976        -8.9          -26.1          1.27 \r\n 1982          18            8.046        -2.8          -12.8          0 \r\n 1982          19            7.912        -1.7          -12.2          0 \r\n 1982          20            8.02         -5.6          -13.9          0 \r\n 1982          21            3.685        -5            -8.9           0 \r\n 1982          22            3.394        -4.4          -8.3           28.96 \r\n 1982          23            8.43          1.1          -18.9          0 \r\n 1982          24            7.664        -17.2         -23.9          0 \r\n 1982          25            5.861        -13.9         -20.6          3.56 \r\n 1982          26            10.396       -9.4          -24.4          0 \r\n 1982          27            11.391        2.8          -11.1          0 \r\n 1982          28            11.728        2.8          -13.9          0 \r\n 1982          29            9.159         0            -11.1          2.29 \r\n 1982          30            6.925         0.6          -10            0 \r\n 1982          31            11.732       -7.8          -22.8          0 \r\n 1982          32            11.844       -7.2          -21.7          0 \r\n 1982          33            10.039       -5.6          -11.1          0 \r\n 1982          34            12.872       -9.4          -26.1          0.76 \r\n 1982          35            10.024       -17.8         -27.2          0 \r\n 1982          36            7.706        -17.2         -19.4          1.78 \r\n 1982          37            12.882       -13.9         -28.9          0 \r\n 1982          38            12.997       -3.9          -18.9          0 \r\n 1982          39            11.844       -6.7          -15            0 \r\n 1982          40            12.309       -11.1         -23.3          0 \r\n 1982          41            13.012       -10           -26.1          0 \r\n 1982          42            13.012       -6.7          -20            0 \r\n 1982          43            12.662       -5            -13.3          0 \r\n 1982          44            13.253       -5.6          -15.6          0 \r\n 1982          45            13.017        3.3          -10            0 \r\n 1982          46            9.914         5.6          -2.2           0 \r\n 1982          47            7.047         2.8           0             0 \r\n 1982          48            4.219         1.1          -1.1           2.54 \r\n 1982          49            3.255         1.7          -1.1           5.33 \r\n 1982          50            9.489         3.3          -2.8           0 \r\n 1982          51            10.462        7.2           0.6           0 \r\n 1982          52            13.381        6.1          -0.6           0 \r\n 1982          53            15.222        15.6         -0.6           0 \r\n 1982          54            15.854        14.4         -1.1           0 \r\n 1982          55            6.689         1.7          -3.9           0 \r\n 1982          56            10.997       -1.1          -6.7           0 \r\n 1982          57            12.997        1.1          -6.7           0 \r\n 1982          58            15.507        3.9          -5.6           0 \r\n 1982          59            15.129        7.2          -3.3           0 \r\n 1982          60            12.648        6.7          -2.2           0 \r\n 1982          61            12.108        6.1          -4.4           1.02 \r\n 1982          62            5.621        -3.9          -7.8           0 \r\n 1982          63            5.888        -3.3          -9.4           7.37 \r\n 1982          64            13.522       -3.9          -11.7          0 \r\n 1982          65            17.377       -1.7          -20            0 \r\n 1982          66            17.377       -3.9          -18.9          0 \r\n 1982          67            15.751       -1.7          -12.2          0.76 \r\n 1982          68            17.748       -5.6          -19.4          0 \r\n 1982          69            18.234        6.7          -11.7          0 \r\n 1982          70            15.549        6.1          -1.1           0 \r\n 1982          71            14.439        10           -1.1           3.3 \r\n 1982          72            15.003        11.1          1.1           0 \r\n 1982          73            17.289        11.1         -0.6           0 \r\n 1982          74            10.92         6.1           0.6           0.51 \r\n 1982          75            5.505         6.1           1.7           15.75 \r\n 1982          76            9.977         5.6          -0.6           0 \r\n 1982          77            7.631         5.6           1.1           0 \r\n 1982          78            5.666         5             1.1           32 \r\n 1982          79            7.693         8.3           2.2           0 \r\n 1982          80            14.687        5            -2.8           0 \r\n 1982          81            17.391        8.3          -3.3           0 \r\n 1982          82            19.07         14.4          2.2           0 \r\n 1982          83            14.45         12.2         -0.6           9.65 \r\n 1982          84            17.072        7.8          -2.2           0 \r\n 1982          85            17.669        3.3          -5             0 \r\n 1982          86            18.771        3.9          -6.7           0 \r\n 1982          87            19.733        10.6         -3.9           0 \r\n 1982          88            20.008        13.9          0.6           0 \r\n 1982          89            12.611        16.1          11.7          4.06 \r\n 1982          90            21.019        17.8          3.3           0 \r\n 1982          91            20.684        21.7          1.1           0 \r\n 1982          92            22.636        25            11.1          0 \r\n 1982          93            19.402        16.7         -9.4           8.38 \r\n 1982          94            19.142        2.2          -8.3           0 \r\n 1982          95            12.626        1.1          -5.6           7.87 \r\n 1982          96            17.783       -1.1          -13.3          0 \r\n 1982          97            17.509       -1.7          -7.8           0 \r\n 1982          98            7.029        -1.7          -5.6           4.06 \r\n 1982          99            20.122        1.1          -8.3           0 \r\n 1982          100           19.439        5.6          -1.7           0 \r\n 1982          101           25.548        10.6         -5             0 \r\n 1982          102           24.298        20            4.4           0 \r\n 1982          103           23.919        18.9          4.4           0 \r\n 1982          104           24.619        20            3.3           0.76 \r\n 1982          105           15.5          18.9          8.3           8.38 \r\n 1982          106           13.386        18.9          10            29.72 \r\n 1982          107           17.6          14.4          2.8           1.78 \r\n 1982          108           24.555        18.3          4.4           0 \r\n 1982          109           20.158        18.3          7.8           3.3 \r\n 1982          110           16.012        8.9          -0.6           0 \r\n 1982          111           24.19         12.8         -1.7           0 \r\n 1982          112           18.287        14.4          0             4.32 \r\n 1982          113           25.524        20            3.3           0 \r\n 1982          114           24.799        21.7          5.6           0 \r\n 1982          115           20.593        20.6          9.4           0 \r\n 1982          116           21.323        18.9          6.7           0 \r\n 1982          117           24.856        17.2          1.7           0 \r\n 1982          118           19.12         14.4          5             0 \r\n 1982          119           18.385        17.8          5.6           0.51 \r\n 1982          120           22.956        18.9          5.6           0 \r\n 1982          121           25.571        21.7          4.4           0 \r\n 1982          122           28.31         23.3          6.1           0 \r\n 1982          123           24.888        27.2          8.3           0 \r\n 1982          124           22.71         30.6          16.7          0 \r\n 1982          125           17.698        30            10            7.37 \r\n 1982          126           12.843        11.7          5             20.07 \r\n 1982          127           16.242        21.1          6.7           0 \r\n 1982          128           23.654        23.3          7.8           2.29 \r\n 1982          129           21.91         26.7          11.1          0 \r\n 1982          130           18.734        27.8          17.2          0 \r\n 1982          131           14.13         26.7          15            4.06 \r\n 1982          132           12.467        25            15.6          6.86 \r\n 1982          133           7.832         21.1          16.1          5.59 \r\n 1982          134           6.713         18.9          15.6          14.22 \r\n 1982          135           12.873        21.1          11.7          8.64 \r\n 1982          136           13.356        22.8          12.8          1.52 \r\n 1982          137           12.873        23.3          15            2.54 \r\n 1982          138           16.523        24.4          11.7          0.51 \r\n 1982          139           15.875        26.1          14.4          5.59 \r\n 1982          140           15.389        26.7          15.6          7.11 \r\n 1982          141           18.262        21.1          6.7           34.8 \r\n 1982          142           6.848         13.3          10            3.05 \r\n 1982          143           9.294         15            10            0.51 \r\n 1982          144           13.787        18.9          12.8          0 \r\n 1982          145           13.787        18.9          12.2          1.78 \r\n 1982          146           9.684         21.1          13.3          25.91 \r\n 1982          147           15.529        21.7          12.8          0 \r\n 1982          148           22.137        22.2          12.8          0 \r\n 1982          149           12.72         22.8          16.1          2.29 \r\n 1982          150           21.476        23.3          12.8          0 \r\n 1982          151           21.972        21.7          12.2          0 \r\n 1982          152           29.398        22.2          5.6           0 \r\n 1982          153           28.524        21.7          10            1.78 \r\n 1982          154           22.284        18.3          9.4           1.27 \r\n 1982          155           29.059        21.1          6.7           0 \r\n 1982          156           29.059        22.8          9.4           0 \r\n 1982          157           24.94         22.8          15.6          2.79 \r\n 1982          158           19.199        26.1          14.4          0 \r\n 1982          159           29.246        26.1          11.1          4.57 \r\n 1982          160           14.354        20            15            2.03 \r\n 1982          161           30.682        25.6          7.8           0 \r\n 1982          162           29.067        26.1          11.1          0 \r\n 1982          163           22.249        25            11.1          2.03 \r\n 1982          164           30.878        26.1          10            0 \r\n 1982          165           24.377        25.6          17.2          0 \r\n 1982          166           13.182        21.1          16.7          38.61 \r\n 1982          167           28.711        23.3          9.4           0 \r\n 1982          168           26.725        24.4          12.8          0 \r\n 1982          169           23.294        23.3          12.8          0.51 \r\n 1982          170           20.405        22.2          10            4.06 \r\n 1982          171           26.183        25.6          12.8          0 \r\n 1982          172           29.975        25            10            0 \r\n 1982          173           29.975        25            9.4           0 \r\n 1982          174           28.711        27.2          10.6          0 \r\n 1982          175           27.086        30.6          13.9          0 \r\n 1982          176           24.016        27.8          16.7          0 \r\n 1982          177           19.321        25            14.4          0 \r\n 1982          178           22.211        28.3          16.7          0 \r\n 1982          179           23.655        29.4          16.7          0 \r\n 1982          180           21.308        29.4          18.9          0 \r\n 1982          181           13.724        23.9          14.4          8.64 \r\n 1982          182           15.255        21.1          14.4          0 \r\n 1982          183           21.25         25.6          15.6          13.46 \r\n 1982          184           18.993        32.8          18.3          0 \r\n 1982          185           27.268        32.8          19.4          0 \r\n 1982          186           22.378        32.2          21.1          0 \r\n 1982          187           19.181        32.2          18.3          30.99 \r\n 1982          188           19.745        27.8          15            1.27 \r\n 1982          189           25.971        27.8          15.6          0 \r\n 1982          190           20.74         28.3          18.3          0 \r\n 1982          191           17.937        28.3          16.1          37.85 \r\n 1982          192           16.256        26.1          15.6          6.86 \r\n 1982          193           25.037        29.4          16.1          0.51 \r\n 1982          194           26.361        29.4          16.1          0 \r\n 1982          195           24.504        28.9          17.2          0 \r\n 1982          196           15.965        30            18.3          11.18 \r\n 1982          197           18.007        31.1          18.3          0 \r\n 1982          198           19.735        31.7          23.9          0 \r\n 1982          199           17.521        30            18.9          51.31 \r\n 1982          200           19.919        29.4          20.6          0 \r\n 1982          201           22.501        31.1          20            0 \r\n 1982          202           22.72         30            18.9          0 \r\n 1982          203           23.82         29.4          17.8          0 \r\n 1982          204           24.553        29.4          17.2          0 \r\n 1982          205           25.119        28.3          15.6          0 \r\n 1982          206           24.209        31.1          18.3          0 \r\n 1982          207           24.391        30            18.3          0 \r\n 1982          208           22.421        30.6          20            0 \r\n 1982          209           24.953        27.8          16.1          0 \r\n 1982          210           23.506        27.8          17.2          0 \r\n 1982          211           19.757        26.7          14.4          2.79 \r\n 1982          212           26.942        28.9          13.9          0 \r\n 1982          213           27.545        31.7          16.1          0 \r\n 1982          214           24.041        32.8          18.3          0.51 \r\n 1982          215           22.45         33.9          21.1          0 \r\n 1982          216           16.504        33.3          20            19.81 \r\n 1982          217           13.695        27.8          21.1          18.8 \r\n 1982          218           15.977        27.8          20            0 \r\n 1982          219           15.869        28.3          20            3.05 \r\n 1982          220           20.752        28.3          18.3          0 \r\n 1982          221           23.9          24.4          12.2          0 \r\n 1982          222           20.956        21.7          12.8          0.76 \r\n 1982          223           25.799        22.8          8.9           0 \r\n 1982          224           24.767        22.8          10            0 \r\n 1982          225           20.295        23.3          15.6          0.76 \r\n 1982          226           15.03         23.9          18.3          0 \r\n 1982          227           14.347        25            18.3          0.51 \r\n 1982          228           20.183        28.3          17.2          0 \r\n 1982          229           22.557        30            17.2          0 \r\n 1982          230           21.22         28.9          17.2          0 \r\n 1982          231           19.367        28.3          18.9          0 \r\n 1982          232           18.561        28.9          20            0 \r\n 1982          233           24.079        27.2          13.9          0 \r\n 1982          234           21.069        26.7          17.2          0 \r\n 1982          235           21.749        27.8          15.6          0 \r\n 1982          236           19.756        27.8          16.1          1.78 \r\n 1982          237           17.801        26.7          10.6          0 \r\n 1982          238           23.241        26.1          12.2          0 \r\n 1982          239           21.599        25            11.7          0 \r\n 1982          240           22.417        22.2          7.2           0 \r\n 1982          241           17.381        23.9          16.7          18.29 \r\n 1982          242           10.883        23.9          16.7          9.14 \r\n 1982          243           11.771        26.7          17.2          14.48 \r\n 1982          244           13.544        27.2          17.2          2.79 \r\n 1982          245           18.82         26.7          14.4          0 \r\n 1982          246           20.747        25            10            0 \r\n 1982          247           20.886        27.8          11.1          0 \r\n 1982          248           18.239        27.8          17.8          0 \r\n 1982          249           10.949        24.4          17.2          0 \r\n 1982          250           11.387        18.9          13.9          0 \r\n 1982          251           15.792        23.9          11.7          0 \r\n 1982          252           15.212        27.2          17.2          0 \r\n 1982          253           14.233        28.9          19.4          0 \r\n 1982          254           15.096        30            17.8          0 \r\n 1982          255           13.838        27.8          18.3          0 \r\n 1982          256           12.412        27.2          12.8          28.7 \r\n 1982          257           9.484         17.8          12.2          1.52 \r\n 1982          258           8.918         16.7          11.1          0 \r\n 1982          259           13.343        15.6          6.7           0 \r\n 1982          260           9.832         16.1          11.7          7.11 \r\n 1982          261           13.238        20            5.6           0 \r\n 1982          262           17.558        21.1          6.7           0 \r\n 1982          263           17.28         20            6.1           0 \r\n 1982          264           18.248        16.1          2.2           0 \r\n 1982          265           18.65         19.4          3.3           0 \r\n 1982          266           18.102        25.6          8.9           1.02 \r\n 1982          267           16.459        24.4          10            0 \r\n 1982          268           15.235        17.8          5             0 \r\n 1982          269           16.595        17.8          3.3           0 \r\n 1982          270           16.326        20            4.4           0 \r\n 1982          271           15.389        25.6          13.3          0 \r\n 1982          272           9.233         25.6          16.7          6.6 \r\n 1982          273           7.963         25            16.7          0 \r\n 1982          274           12.74         27.2          15            1.27 \r\n 1982          275           9.212         26.7          14.4          8.64 \r\n 1982          276           11.186        22.8          7.2           0 \r\n 1982          277           15.66         24.4          7.8           0 \r\n 1982          278           10.831        25.6          11.1          4.32 \r\n 1982          279           9.575         22.2          9.4           8.64 \r\n 1982          280           11.775        23.9          2.2           0 \r\n 1982          281           13.983        23.3          8.3           1.52 \r\n 1982          282           6.928         18.3          10            6.1 \r\n 1982          283           8.394         15            7.8           0 \r\n 1982          284           7.504         12.2          6.1           0 \r\n 1982          285           8.573         10            1.7           0 \r\n 1982          286           6.934         11.7          5.6           0 \r\n 1982          287           12.747        21.1          2.2           0 \r\n 1982          288           12.497        20.6          8.3           0 \r\n 1982          289           13.625        16.1         -0.6           0 \r\n 1982          290           12.262        20            5.6           0 \r\n 1982          291           10.925        21.1          6.1           0 \r\n 1982          292           10.312        16.1          7.2           7.62 \r\n 1982          293           7.177         9.4           0             7.87 \r\n 1982          294           10.584        8.9          -2.8           0 \r\n 1982          295           11.922        13.3         -2.8           0 \r\n 1982          296           11.934        15           -2.2           0 \r\n 1982          297           11.693        16.1         -1.7           0 \r\n 1982          298           11.705        18.3         -1.1           0 \r\n 1982          299           11.586        18.3          0             0 \r\n 1982          300           9.348         16.1          6.7           0 \r\n 1982          301           4.26          14.4          7.8           21.08 \r\n 1982          302           6.448         16.7          4.4           0 \r\n 1982          303           8.206         16.7          7.2           0 \r\n 1982          304           8.675         17.2          5.6           0 \r\n 1982          305           4.761         13.3          8.9           11.94 \r\n 1982          306           6.503         13.3          5             0.76 \r\n 1982          307           9.201         9.4          -2.2           0 \r\n 1982          308           6.441         0.6          -6.7           0 \r\n 1982          309           4.443         1.1          -5             0 \r\n 1982          310           9.455         12.8         -6.1           0 \r\n 1982          311           9.91          17.2         -1.1           0 \r\n 1982          312           9.363         13.3         -2.2           0 \r\n 1982          313           3.384         8.3           3.3           9.14 \r\n 1982          314           5.362         11.1          5             0 \r\n 1982          315           4.691         12.2          2.8           41.15 \r\n 1982          316           8.601         15.6         -8.9           0 \r\n 1982          317           8.073        -2.8          -13.3          0 \r\n 1982          318           6.083        -2.2          -7.2           0 \r\n 1982          319           8.847         4.4          -10.6          0 \r\n 1982          320           9.416         7.8          -6.7           0 \r\n 1982          321           10.073        10.6         -6.7           0 \r\n 1982          322           9.306         7.8          -3.3           0 \r\n 1982          323           4.769         13.9          6.7           3.3 \r\n 1982          324           6.286         16.1          5.6           0 \r\n 1982          325           8.887         8.9          -2.2           0 \r\n 1982          326           6.758         6.1          -1.1           0.51 \r\n 1982          327           7.938        -0.6          -10            0 \r\n 1982          328           8.689         1.1          -13.9          0 \r\n 1982          329           8.26          3.9          -8.9           0 \r\n 1982          330           7.326         2.2          -7.2           0 \r\n 1982          331           7.857         1.1          -11.1          0 \r\n 1982          332           3.822         1.1          -1.7           10.41 \r\n 1982          333           1.911         2.8          -0.6           0 \r\n 1982          334           3.992         6.1           0             0 \r\n 1982          335           6.619         15.6          2.8           0 \r\n 1982          336           5.253         16.1          10.6          0 \r\n 1982          337           7.88          12.2         -0.6           0 \r\n 1982          338           5.778         4.4          -2.8           0 \r\n 1982          339           3.119         3.9          -0.6           37.34 \r\n 1982          340           4.99          2.8          -6.7           0 \r\n 1982          341           6.549         1.1          -7.8           1.27 \r\n 1982          342           4.886        -6.1          -10            0 \r\n 1982          343           8.316        -6.1          -20.6          0 \r\n 1982          344           7.485         0            -7.2           0 \r\n 1982          345           8.628        -0.6          -18.3          0 \r\n 1982          346           7.714        -4.4          -20            0 \r\n 1982          347           6.994         4.4          -7.8           0 \r\n 1982          348           4.423         2.8          -0.6           0 \r\n 1982          349           3.908         1.1          -4.4           0 \r\n 1982          350           4.32          0            -5.6           0 \r\n 1982          351           6.891         5            -6.7           0 \r\n 1982          352           6.377         7.8           0.6           0 \r\n 1982          353           5.657         3.9          -1.7           0 \r\n 1982          354           5.451         0.6          -5             0 \r\n 1982          355           6.788         5.6          -6.1           0 \r\n 1982          356           7.097         5.6          -3.9           0 \r\n 1982          357           5.451         5            -0.6           0 \r\n 1982          358           4.114         9.4           0             23.11 \r\n 1982          359           5.76          10.6         -3.3           1.52 \r\n 1982          360           7.302         1.7          -8.9           0 \r\n 1982          361           5.965         0            -3.9           15.49 \r\n 1982          362           5.76          0.6          -11.7          27.18 \r\n 1982          363           6.171        -6.7          -13.3          0 \r\n 1982          364           6.965        -2.2          -12.2          0 \r\n 1982          365           6.757         0            -9.4           0 \r\n 1983          1             6.133        -0.6          -7.2           0 \r\n 1983          2             6.133        -2.2          -7.2           0 \r\n 1983          3             7.485        -3.3          -11.7          0 \r\n 1983          4             5.821         0.6          -5             0 \r\n 1983          5             5.094         0            -5             0 \r\n 1983          6             5.463         5.6          -1.7           0 \r\n 1983          7             7.775         2.2          -7.2           0 \r\n 1983          8             5.253         1.1          -6.7           0 \r\n 1983          9             6.619         5.6          -1.7           0 \r\n 1983          10            4.938         4.4          -2.2           4.83 \r\n 1983          11            7.75         -1.1          -10            0 \r\n 1983          12            9.343         1.7          -13.9          0 \r\n 1983          13            9.024         5.6          -5.6           0 \r\n 1983          14            8.918         3.9          -6.7           0 \r\n 1983          15            8.706        -5.6          -12.8          0 \r\n 1983          16            8.367        -1.1          -12.8          0 \r\n 1983          17            7.938        -2.8          -10.6          0 \r\n 1983          18            8.582        -5.6          -11.1          0 \r\n 1983          19            8.454        -2.2          -10            0 \r\n 1983          20            5.961        -2.2          -6.7           0 \r\n 1983          21            7.912         2.2          -8.3           0 \r\n 1983          22            7.335         1.1          -6.1           0 \r\n 1983          23            5.146         1.1          -3.9           0 \r\n 1983          24            5.146         0.6          -3.9           0 \r\n 1983          25            6.857        -2.2          -8.9           0 \r\n 1983          26            9.29         -5.6          -13.3          1.02 \r\n 1983          27            11.28        -3.9          -20            0 \r\n 1983          28            10.388        3.9          -4.4           0 \r\n 1983          29            4.915         3.3          -1.7           16.26 \r\n 1983          30            6.143        -0.6          -6.7           0 \r\n 1983          31            9.137        -4.4          -11.7          0 \r\n 1983          32            8.009        -3.9          -10.6          2.79 \r\n 1983          33            4.512        -3.3          -7.2           6.35 \r\n 1983          34            8.543        -5.6          -16.1          0.76 \r\n 1983          35            11.619       -7.8          -20            0 \r\n 1983          36            11.501       -2.2          -15.6          0.76 \r\n 1983          37            9.546        -2.2          -16.1          2.03 \r\n 1983          38            13.457       -8.3          -23.3          0 \r\n 1983          39            13.47         0            -16.7          0 \r\n 1983          40            6.735         1.1          -3.3           0 \r\n 1983          41            6.213         1.1          -1.7           0 \r\n 1983          42            5.861         1.1          -3.3           0 \r\n 1983          43            6.035         1.7          -2.2           0 \r\n 1983          44            7.573         5            -0.6           0 \r\n 1983          45            11.478        6.7          -2.2           0 \r\n 1983          46            9.197         5            -0.6           2.79 \r\n 1983          47            5.494         3.9          -1.7           3.05 \r\n 1983          48            8.318         3.3          -1.1           0 \r\n 1983          49            11.452        9.4          -1.7           0 \r\n 1983          50            13.99         13.9          0             0 \r\n 1983          51            14.233        11.7          1.7           0 \r\n 1983          52            13.012        10.6         -0.6           0 \r\n 1983          53            11.662        8.3           1.1           0 \r\n 1983          54            11.395        5            -1.7           0 \r\n 1983          55            10.9          3.3          -7.2           0.76 \r\n 1983          56            12.997        1.7          -7.2           0 \r\n 1983          57            14.496        6.7          -3.9           0 \r\n 1983          58            14.246        10            1.1           0 \r\n 1983          59            16.768        13.9         -1.7           0 \r\n 1983          60            14.81         17.2          1.1           0 \r\n 1983          61            15.459        21.1         -1.7           0 \r\n 1983          62            15.243        23.3          3.3           0 \r\n 1983          63            13.958        21.7          8.3           0 \r\n 1983          64            5.452         15.6          10.6          5.33 \r\n 1983          65            5.719         13.3          7.2           30.73 \r\n 1983          66            9.019         7.8          -2.8           0 \r\n 1983          67            9.65         -1.1          -7.2           0 \r\n 1983          68            9.429        -1.7          -8.3           0 \r\n 1983          69            9.173        -1.7          -7.8           0 \r\n 1983          70            7.159        -0.6          -5             0 \r\n 1983          71            12.296        6.7          -4.4           0 \r\n 1983          72            14.89         12.2         -1.7           0 \r\n 1983          73            14.559        8.9          -1.7           0 \r\n 1983          74            6.256         6.1           0.6           9.14 \r\n 1983          75            4.243         3.9           0             15.24 \r\n 1983          76            7.225         4.4           0.6           0 \r\n 1983          77            7.284         4.4           0.6           1.78 \r\n 1983          78            7.4           2.8          -1.7           0 \r\n 1983          79            7.926         0.6          -5             2.03 \r\n 1983          80            12.006       -2.2          -8.3           0 \r\n 1983          81            17.156        0.6          -10.6          0 \r\n 1983          82            17.293        2.8          -8.3           0 \r\n 1983          83            16.464        2.8          -5.6           0 \r\n 1983          84            13.132        2.8          -3.9           0 \r\n 1983          85            5.492         0.6          -2.2           13.21 \r\n 1983          86            4.332         0            -2.2           10.41 \r\n 1983          87            13.115        2.8          -5.6           0 \r\n 1983          88            15.4          2.8          -5.6           0 \r\n 1983          89            12.005        6.7           0             1.02 \r\n 1983          90            10.754        11.1          1.1           3.81 \r\n 1983          91            13.069        10.6          2.2           0 \r\n 1983          92            7.41          5             1.7           6.35 \r\n 1983          93            12.396        5.6           0             0.51 \r\n 1983          94            15.477        4.4          -1.1           0 \r\n 1983          95            10.454        3.9           0             6.1 \r\n 1983          96            9.028         5.6          -0.6           4.57 \r\n 1983          97            16.962        6.1          -1.1           0 \r\n 1983          98            20.535        8.3          -2.8           0 \r\n 1983          99            13.782        7.2          -0.6           8.64 \r\n 1983          100           9.164         4.4          -0.6           0.76 \r\n 1983          101           21.105        12.2         -0.6           0 \r\n 1983          102           15.551        11.1          2.2           28.7 \r\n 1983          103           11.89         9.4           3.9           7.62 \r\n 1983          104           14.547        6.1          -2.8           11.68 \r\n 1983          105           20.713        5.6          -4.4           0 \r\n 1983          106           21.136        5.6          -2.2           0 \r\n 1983          107           13.484        3.3          -3.3           4.83 \r\n 1983          108           18.877        5.6          -7.8           0 \r\n 1983          109           26.019        9.4          -3.9           0 \r\n 1983          110           26.448        13.9         -1.1           0 \r\n 1983          111           22.031        16.1          5.6           0 \r\n 1983          112           22.895        18.9          5             0 \r\n 1983          113           22.913        17.2          6.1           0 \r\n 1983          114           25.089        17.8          1.1           0 \r\n 1983          115           24.974        22.2          1.7           0 \r\n 1983          116           23.66         26.1          14.4          0 \r\n 1983          117           25.15         25            5             0 \r\n 1983          118           21.767        21.7          9.4           0 \r\n 1983          119           22.503        20            6.7           0 \r\n 1983          120           21.475        18.9          5.6           0 \r\n 1983          121           19.681        14.4          8.3           12.95 \r\n 1983          122           12.755        12.2          4.4           16.26 \r\n 1983          123           13.844        16.7          6.1           14.48 \r\n 1983          124           23.493        17.2          4.4           0.76 \r\n 1983          125           24.746        21.1          4.4           0 \r\n 1983          126           23.18         24.4          11.7          0 \r\n 1983          127           18.608        23.9          7.2           16.76 \r\n 1983          128           18.135        13.3          0.6           0 \r\n 1983          129           23.974        17.2          4.4           0 \r\n 1983          130           24.609        22.2          6.1           0 \r\n 1983          131           23.656        24.4          10            0 \r\n 1983          132           19.82         23.3          15            0 \r\n 1983          133           15.984        22.2          10            3.3 \r\n 1983          134           18.381        20            3.3           7.87 \r\n 1983          135           17.7          16.7          1.1           0 \r\n 1983          136           24.137        20            5             0 \r\n 1983          137           21.24         19.4          7.2           3.05 \r\n 1983          138           7.127         11.7          8.9           26.92 \r\n 1983          139           7.127         13.9          10            37.85 \r\n 1983          140           20.896        19.4          8.3           0 \r\n 1983          141           16.632        18.3          8.9           1.02 \r\n 1983          142           13.86         21.1          12.2          5.08 \r\n 1983          143           26.904        22.8          5.6           0 \r\n 1983          144           26.261        28.3          10.6          9.14 \r\n 1983          145           19.039        20            8.3           0 \r\n 1983          146           26.425        20.6          5.6           0 \r\n 1983          147           25.276        27.2          11.1          0 \r\n 1983          148           23.789        27.2          13.3          1.02 \r\n 1983          149           24.615        19.4          8.9           1.27 \r\n 1983          150           22.302        17.8          5.6           0 \r\n 1983          151           22.633        20            7.2           0 \r\n 1983          152           26.112        22.2          7.8           0 \r\n 1983          153           22.997        21.7          11.7          1.27 \r\n 1983          154           23.354        25.6          13.3          0 \r\n 1983          155           29.059        27.8          9.4           0 \r\n 1983          156           27.633        27.2          11.1          0.51 \r\n 1983          157           28.17         22.8          6.1           0 \r\n 1983          158           29.067        26.7          12.2          0 \r\n 1983          159           28.349        29.4          14.4          0 \r\n 1983          160           27.093        30.6          13.9          1.02 \r\n 1983          161           18.84         29.4          14.4          2.54 \r\n 1983          162           21.352        28.3          17.2          0 \r\n 1983          163           15.072        28.9          18.9          0 \r\n 1983          164           19.141        30            21.1          0 \r\n 1983          165           18.419        30            15            36.58 \r\n 1983          166           24.197        25            12.2          0 \r\n 1983          167           26.364        25            10.6          0 \r\n 1983          168           22.933        24.4          12.2          0 \r\n 1983          169           13.543        24.4          15            20.57 \r\n 1983          170           13.543        25            15.6          0 \r\n 1983          171           18.599        26.7          18.3          0 \r\n 1983          172           20.224        31.7          20.6          0 \r\n 1983          173           21.849        33.3          20.6          0 \r\n 1983          174           21.849        32.8          21.1          0 \r\n 1983          175           20.585        33.3          24.4          0 \r\n 1983          176           24.197        33.3          18.9          0 \r\n 1983          177           22.572        32.8          19.4          61.21 \r\n 1983          178           14.085        26.7          20            58.93 \r\n 1983          179           12.64         23.3          17.8          10.67 \r\n 1983          180           8.487         22.8          17.8          38.35 \r\n 1983          181           17.696        31.1          16.1          0 \r\n 1983          182           19.558        31.1          18.9          3.56 \r\n 1983          183           18.241        30            18.9          31.75 \r\n 1983          184           22.19         31.1          22.8          0 \r\n 1983          185           21.626        31.1          13.3          15.24 \r\n 1983          186           25.951        25            14.4          0 \r\n 1983          187           27.079        27.2          13.3          0 \r\n 1983          188           27.456        28.9          13.3          0 \r\n 1983          189           27.279        31.1          15.6          0 \r\n 1983          190           28.027        31.7          15.6          0 \r\n 1983          191           28.214        32.2          16.1          0 \r\n 1983          192           26.158        31.7          18.3          0 \r\n 1983          193           28.214        30.6          17.8          0 \r\n 1983          194           25.618        33.3          19.4          0 \r\n 1983          195           24.69         32.8          19.4          0 \r\n 1983          196           22.462        30.6          20.6          0 \r\n 1983          197           21.163        30            21.1          0 \r\n 1983          198           21.579        31.7          20.6          0 \r\n 1983          199           21.948        31.1          19.4          4.57 \r\n 1983          200           17.521        35            21.1          0 \r\n 1983          201           23.239        36.7          23.3          0 \r\n 1983          202           23.27         36.1          22.8          0 \r\n 1983          203           24.919        35.6          21.1          0 \r\n 1983          204           24.186        35.6          21.1          0 \r\n 1983          205           19.841        25.6          18.3          1.27 \r\n 1983          206           24.937        28.9          15.6          0 \r\n 1983          207           25.119        29.4          16.1          0 \r\n 1983          208           25.134        33.3          16.7          0.51 \r\n 1983          209           23.145        34.4          23.3          0 \r\n 1983          210           16.997        34.4          20.6          40.13 \r\n 1983          211           21.014        31.1          20            0 \r\n 1983          212           22.272        30.6          18.9          0 \r\n 1983          213           26.963        29.4          15            0 \r\n 1983          214           23.864        32.8          17.8          0 \r\n 1983          215           20.505        32.8          22.8          0 \r\n 1983          216           20.542        32.2          21.1          0 \r\n 1983          217           20.542        32.2          22.2          0 \r\n 1983          218           19.313        32.2          21.7          0 \r\n 1983          219           17.438        31.7          19.4          1.78 \r\n 1983          220           24.414        32.8          18.3          0 \r\n 1983          221           24.419        32.8          16.1          0 \r\n 1983          222           23.034        35            18.9          0 \r\n 1983          223           25.111        33.9          15.6          0 \r\n 1983          224           23.391        26.7          12.8          0 \r\n 1983          225           24.251        28.9          12.8          0 \r\n 1983          226           21.521        30.6          20            0 \r\n 1983          227           22.204        32.8          20.6          0 \r\n 1983          228           22.388        37.8          21.1          0 \r\n 1983          229           20.183        37.2          23.3          0 \r\n 1983          230           21.051        36.7          21.1          0 \r\n 1983          231           20.883        36.1          21.1          0 \r\n 1983          232           21.236        35            20            0 \r\n 1983          233           14.046        32.2          21.1          8.89 \r\n 1983          234           13.21         32.2          19.4          12.95 \r\n 1983          235           10.459        26.1          20.6          0 \r\n 1983          236           11.953        32.8          19.4          2.03 \r\n 1983          237           16.977        33.3          21.7          0 \r\n 1983          238           17.472        34.4          21.1          0 \r\n 1983          239           14.072        32.2          18.3          43.94 \r\n 1983          240           19.472        30.6          17.2          0 \r\n 1983          241           19.33         32.8          18.3          0 \r\n 1983          242           14.132        32.8          18.9          37.08 \r\n 1983          243           17.737        27.8          16.1          0 \r\n 1983          244           19.672        28.9          15            0 \r\n 1983          245           17.931        31.1          17.2          0 \r\n 1983          246           18.228        32.2          16.1          0 \r\n 1983          247           16.327        32.2          18.3          0 \r\n 1983          248           11.767        31.1          18.3          2.79 \r\n 1983          249           12.7          28.3          14.4          6.6 \r\n 1983          250           20.437        27.8          8.3           0 \r\n 1983          251           19.558        33.9          14.4          0.51 \r\n 1983          252           15.792        33.9          21.1          0 \r\n 1983          253           15.527        33.9          18.3          3.05 \r\n 1983          254           14.665        23.3          8.3           0 \r\n 1983          255           14.837        22.8          12.8          0 \r\n 1983          256           17.547        20.6          6.1           0 \r\n 1983          257           16.421        21.7          10            0 \r\n 1983          258           9.626         19.4          11.1          20.83 \r\n 1983          259           8.427         18.3          10.6          1.52 \r\n 1983          260           17.416        27.8          9.4           0 \r\n 1983          261           15.328        29.4          16.7          0 \r\n 1983          262           12.82         29.4          11.1          21.08 \r\n 1983          263           14.377        28.3          5.6           24.38 \r\n 1983          264           14.1          10.6          0.6           0 \r\n 1983          265           13.85         11.7          1.1           0 \r\n 1983          266           16.867        15.6         -1.1           0 \r\n 1983          267           17.004        21.1          4.4           0 \r\n 1983          268           14.691        25            10            0 \r\n 1983          269           15.786        27.2          9.4           0 \r\n 1983          270           15.246        28.3          12.2          0 \r\n 1983          271           13.917        30            13.9          0 \r\n 1983          272           12.311        28.3          15.6          0 \r\n 1983          273           13.536        27.2          11.7          0 \r\n 1983          274           14.2          28.9          10.6          0 \r\n 1983          275           12.897        31.1          15            0 \r\n 1983          276           10.133        30            12.8          31.24 \r\n 1983          277           10.962        16.1          6.1           0 \r\n 1983          278           13.441        22.2          5             0 \r\n 1983          279           14.104        20.6          5             0 \r\n 1983          280           11.516        20.6          10            0 \r\n 1983          281           11.802        16.1          6.1           0 \r\n 1983          282           12.572        15.6          2.8           0 \r\n 1983          283           8.14          18.3          7.2           18.8 \r\n 1983          284           6.868         18.3          9.4           28.96 \r\n 1983          285           8.069         10            0             0 \r\n 1983          286           9.708         7.2          -2.2           2.29 \r\n 1983          287           8.623         15           -1.1           0 \r\n 1983          288           7.623         16.1          8.9           8.64 \r\n 1983          289           7.308         16.1          3.3           0 \r\n 1983          290           12.139        15.6          2.2           0 \r\n 1983          291           11.171        15.6          2.8           0 \r\n 1983          292           6.015         13.3          6.7           20.32 \r\n 1983          293           2.068         8.9           5             10.41 \r\n 1983          294           3.163         9.4           6.1           10.92 \r\n 1983          295           3.041         11.1          7.8           23.88 \r\n 1983          296           8.197         15.6          5.6           0 \r\n 1983          297           10.849        15            1.1           0 \r\n 1983          298           10.511        13.9          0.6           0 \r\n 1983          299           10.988        17.2          3.3           0 \r\n 1983          300           11.715        24.4          5.6           0 \r\n 1983          301           10.295        22.8          12.2          0 \r\n 1983          302           10.668        13.9         -0.6           0 \r\n 1983          303           7.034         10.6          5.6           3.05 \r\n 1983          304           5.041         11.7          6.1           0 \r\n 1983          305           5.342         18.3          10.6          12.7 \r\n 1983          306           5.225         17.8          12.8          0 \r\n 1983          307           5.751         16.7          5.6           1.52 \r\n 1983          308           6.786         7.8          -0.6           2.79 \r\n 1983          309           9.227         11.7         -1.1           0 \r\n 1983          310           6.607         11.7          7.8           0 \r\n 1983          311           8.315         13.3          3.3           0 \r\n 1983          312           5.64          12.8          7.2           0.51 \r\n 1983          313           5.189         11.1          1.7           21.59 \r\n 1983          314           3.463         2.2          -0.6           0.51 \r\n 1983          315           4.691         2.8          -2.2           0 \r\n 1983          316           3.574         2.2          -1.7           3.05 \r\n 1983          317           3.207         3.3          -0.6           0 \r\n 1983          318           5.087         6.7           2.8           0 \r\n 1983          319           3.871         5             1.1           0 \r\n 1983          320           6.679         4.4          -3.3           0 \r\n 1983          321           8.649         8.9          -3.3           0 \r\n 1983          322           8.649         11.1         -0.6           0 \r\n 1983          323           5.527         15.6          8.9           39.37 \r\n 1983          324           7.803         14.4          2.2           0 \r\n 1983          325           6.828         6.1          -1.1           0 \r\n 1983          326           5.256         3.9           0             7.62 \r\n 1983          327           4.505         2.8          -5.6           13.21 \r\n 1983          328           4.827        -1.1          -6.7           0 \r\n 1983          329           9.333         2.2          -12.2          0 \r\n 1983          330           7.857         1.7          -3.3           0 \r\n 1983          331           2.654         0.6           0             21.84 \r\n 1983          332           3.079         0.6          -2.8           12.45 \r\n 1983          333           5.521        -1.7          -9.4           0 \r\n 1983          334           6.619        -7.8          -11.7          0 \r\n 1983          335           8.09         -5.6          -16.1          0 \r\n 1983          336           7.564        -3.9          -11.1          0 \r\n 1983          337           8.72         -3.9          -16.7          0 \r\n 1983          338           7.459         0.6          -5.6           0 \r\n 1983          339           6.549         0            -7.8           0.51 \r\n 1983          340           6.341        -6.1          -9.4           0 \r\n 1983          341           7.901        -4.4          -14.4          0 \r\n 1983          342           8.42         -5            -16.1          0 \r\n 1983          343           6.965        -4.4          -11.1          0 \r\n 1983          344           6.861        -3.3          -12.2          0 \r\n 1983          345           5.614         0.6          -3.9           0.76 \r\n 1983          346           7.92          0.6          -12.8          0 \r\n 1983          347           6.582        -1.7          -9.4           0.51 \r\n 1983          348           5.348        -0.6          -7.8           0.76 \r\n 1983          349           5.245        -3.3          -12.2          0.51 \r\n 1983          350           7.817        -11.1         -21.7          0 \r\n 1983          351           6.788        -16.7         -24.4          0.51 \r\n 1983          352           7.097        -18.9         -27.2          0 \r\n 1983          353           6.377        -22.8         -27.8          0 \r\n 1983          354           7.097        -17.2         -27.8          0 \r\n 1983          355           5.76         -11.7         -20            4.06 \r\n 1983          356           7.92         -19.4         -27.8          0 \r\n 1983          357           5.451        -23.9         -27.8          0 \r\n 1983          358           5.451        -25           -29.4          0 \r\n 1983          359           6.891        -18.9         -28.9          0 \r\n 1983          360           7.817        -9.4          -21.7          0 \r\n 1983          361           5.04         -7.2          -10            0 \r\n 1983          362           6.994        -9.4          -17.2          1.27 \r\n 1983          363           7.097        -15           -22.2          0 \r\n 1983          364           7.485        -7.8          -20.6          0 \r\n 1983          365           7.485        -3.3          -8.9           0 \r\n 1984          1             4.262        -1.1          -8.3           7.87 \r\n 1984          2             5.718        -2.8          -10.6          0 \r\n 1984          3             7.901         1.7          -10            0 \r\n 1984          4             6.237         3.9          -4.4           0 \r\n 1984          5             6.965         5.6          -5             0 \r\n 1984          6             5.778         3.9          -1.1           0 \r\n 1984          7             7.775         2.8          -5.6           0 \r\n 1984          8             7.039         1.7          -5.6           0 \r\n 1984          9             4.202        -2.2          -6.7           0 \r\n 1984          10            9.14         -5.6          -20.6          0 \r\n 1984          11            8.069        -7.2          -18.3          0 \r\n 1984          12            3.928        -7.2          -10.6          0 \r\n 1984          13            6.583        -7.8          -16.1          1.02 \r\n 1984          14            6.689        -10           -16.1          0 \r\n 1984          15            7.538        -7.8          -16.7          0 \r\n 1984          16            5.793        -7.8          -14.4          0 \r\n 1984          17            8.582        -11.1         -20.6          0 \r\n 1984          18            9.011        -13.9         -26.1          0 \r\n 1984          19            9.212        -12.8         -25            0 \r\n 1984          20            9.646        -17.2         -27.8          0 \r\n 1984          21            10.188       -10.6         -27.2          0 \r\n 1984          22            9.854        -1.7          -17.8          0 \r\n 1984          23            7.335         0            -6.1           1.52 \r\n 1984          24            9.087         0.6          -10            0 \r\n 1984          25            10.064        3.9          -10            0 \r\n 1984          26            8.516         2.8          -2.8           0 \r\n 1984          27            10.727       -2.2          -13.3          0 \r\n 1984          28            10.276        2.8          -8.3           0 \r\n 1984          29            8.936         0            -6.7           0.76 \r\n 1984          30            6.367        -2.8          -12.2          1.52 \r\n 1984          31            10.378        0            -13.3          0 \r\n 1984          32            10.829        4.4          -7.8           0 \r\n 1984          33            9.588         3.9          -1.1           0 \r\n 1984          34            7.974         3.3          -2.2           0 \r\n 1984          35            10.821        2.8          -7.8           0 \r\n 1984          36            13.112       -1.7          -20.6          1.02 \r\n 1984          37            11.156       -8.3          -21.7          0 \r\n 1984          38            12.077       -4.4          -15.6          0 \r\n 1984          39            12.657        5            -10            0 \r\n 1984          40            12.077        6.7          -2.8           0 \r\n 1984          41            9.261         4.4          -0.6           0 \r\n 1984          42            5.275         3.3           0.6           0 \r\n 1984          43            8.047         6.7           2.2           1.02 \r\n 1984          44            7.218         2.8           0             0 \r\n 1984          45            10.887        11.1         -1.7           0 \r\n 1984          46            12.302        13.9          2.2           0 \r\n 1984          47            7.525         12.8          3.9           3.05 \r\n 1984          48            6.389         4.4           0             0 \r\n 1984          49            4.822         2.8           0             10.67 \r\n 1984          50            4.744         2.8          -1.1           4.83 \r\n 1984          51            13.138        7.2          -3.9           0 \r\n 1984          52            15.099        11.1         -3.3           0 \r\n 1984          53            15.59         16.7         -0.6           0 \r\n 1984          54            14.987        14.4          0.6           0 \r\n 1984          55            11.891        6.1          -2.2           0 \r\n 1984          56            14.621        8.9          -2.2           0 \r\n 1984          57            13.497        7.8          -1.7           0 \r\n 1984          58            12.607        5            -3.3           0 \r\n 1984          59            9.329         0.6          -4.4           0 \r\n 1984          60            11.903        1.7          -7.8           0 \r\n 1984          61            12.324        6.1          -3.9           0 \r\n 1984          62            12.648        5.6          -2.8           0 \r\n 1984          63            11.675        6.7          -2.8           0 \r\n 1984          64            12.322        6.1          -2.2           5.59 \r\n 1984          65            8.287         0.6          -5             0 \r\n 1984          66            9.898        -3.9          -16.7          0 \r\n 1984          67            15.618       -4.4          -11.7          2.03 \r\n 1984          68            10.094       -4.4          -13.3          1.27 \r\n 1984          69            13.644       -6.7          -20.6          0 \r\n 1984          70            16.668        0            -16.1          0 \r\n 1984          71            17.003       -1.1          -14.4          0.76 \r\n 1984          72            16.469       -5            -12.8          7.11 \r\n 1984          73            7.783        -1.7          -7.8           0 \r\n 1984          74            10.465        2.2          -1.1           0 \r\n 1984          75            8.986         2.2          -2.2           0 \r\n 1984          76            9.863         0            -5.6           0 \r\n 1984          77            12.271        0.6          -4.4           6.1 \r\n 1984          78            7.284        -1.1          -5             0 \r\n 1984          79            9.019        -1.7          -4.4           3.05 \r\n 1984          80            6.178        -0.6          -3.9           1.78 \r\n 1984          81            6.178         1.1          -1.7           0 \r\n 1984          82            8.46          3.3          -3.3           0 \r\n 1984          83            12.2          7.2          -3.9           0 \r\n 1984          84            18.596        7.8          -3.3           0 \r\n 1984          85            18.863        9.4          -2.2           0 \r\n 1984          86            19.101        8.9           0             0 \r\n 1984          87            15.522        5             1.1           2.03 \r\n 1984          88            8.423         8.9           0.6           0 \r\n 1984          89            13.218        7.2          -2.2           0 \r\n 1984          90            18.189        6.1          -3.3           0 \r\n 1984          91            16.986        8.3          -3.3           0 \r\n 1984          92            18.638        10.6         -2.2           0 \r\n 1984          93            23.174        10            2.8           2.29 \r\n 1984          94            13.878        8.9           0             23.88 \r\n 1984          95            11.811        8.9           0.6           0 \r\n 1984          96            10.046        13.3          1.1           0 \r\n 1984          97            20.382        15            0.6           0 \r\n 1984          98            22.16         15            3.9           0.76 \r\n 1984          99            20.397        10            5             13.97 \r\n 1984          100           10.336        8.3           3.9           2.03 \r\n 1984          101           7.914         12.8          6.1           0 \r\n 1984          102           14.579        12.2          6.7           0.76 \r\n 1984          103           15.412        12.8          8.9           11.94 \r\n 1984          104           10.351        8.9           4.4           5.33 \r\n 1984          105           9.791         8.3           5.6           3.81 \r\n 1984          106           7.468         13.9          5             2.03 \r\n 1984          107           17.754        15.6          6.1           0 \r\n 1984          108           20.155        13.9          3.3           0 \r\n 1984          109           23.277        15            0.6           0 \r\n 1984          110           24.017        13.9          0             0 \r\n 1984          111           23.589        14.4          3.3           0 \r\n 1984          112           21.887        13.3          5             23.88 \r\n 1984          113           16.703        5.6           0             11.43 \r\n 1984          114           12.472        14.4          1.1           0.51 \r\n 1984          115           15.082        18.3          4.4           0 \r\n 1984          116           24.098        20.6          5             0 \r\n 1984          117           24.39         27.2          13.9          0 \r\n 1984          118           22.209        26.7          13.3          19.3 \r\n 1984          119           16.62         15            2.2           0 \r\n 1984          120           23.238        14.4          4.4           42.42 \r\n 1984          121           20.142        8.3           1.1           9.14 \r\n 1984          122           13.648        15            1.7           0 \r\n 1984          123           23.799        16.1          5.6           3.81 \r\n 1984          124           16.799        15            6.1           2.03 \r\n 1984          125           20.831        12.8          2.2           0 \r\n 1984          126           22.24         18.3          3.9           1.27 \r\n 1984          127           24.433        18.3          10            0 \r\n 1984          128           23.181        14.4          6.7           2.29 \r\n 1984          129           15.296        11.7          0.6           0 \r\n 1984          130           23.974        17.2          3.3           0 \r\n 1984          131           24.45         22.2          6.7           0 \r\n 1984          132           25.72         22.8          11.7          2.03 \r\n 1984          133           22.697        22.2          7.8           0 \r\n 1984          134           26.053        24.4          13.9          0 \r\n 1984          135           22.217        21.7          6.7           0 \r\n 1984          136           26.229        21.7          11.1          0 \r\n 1984          137           21.562        22.8          10            0 \r\n 1984          138           21.562        30            10.6          0 \r\n 1984          139           24.946        29.4          18.9          1.02 \r\n 1984          140           22.192        22.8          15.6          12.7 \r\n 1984          141           12.311        25.6          11.7          6.86 \r\n 1984          142           17.61         26.1          11.7          0 \r\n 1984          143           23.969        25.6          14.4          8.64 \r\n 1984          144           16.306        22.2          7.8           0 \r\n 1984          145           18.875        26.1          18.3          0 \r\n 1984          146           22.158        20            9.4           33.02 \r\n 1984          147           17.398        16.7          5.6           0 \r\n 1984          148           22.798        17.2          8.9           3.05 \r\n 1984          149           18.503        16.7          6.7           51.56 \r\n 1984          150           14.703        16.7          5             0 \r\n 1984          151           24.45         20.6          5.6           0 \r\n 1984          152           26.267        25.6          9.4           0 \r\n 1984          153           26.804        27.8          16.7          0 \r\n 1984          154           25.315        26.7          12.8          2.03 \r\n 1984          155           20.858        26.1          11.7          0 \r\n 1984          156           28.346        25.6          15.6          6.35 \r\n 1984          157           18.006        30            17.8          1.78 \r\n 1984          158           17.763        30            19.4          0 \r\n 1984          159           21.352        27.2          19.4          0 \r\n 1984          160           17.763        27.8          17.2          2.54 \r\n 1984          161           15.969        28.3          16.7          14.73 \r\n 1984          162           15.431        23.3          13.9          1.02 \r\n 1984          163           14.175        25.6          11.7          0 \r\n 1984          164           24.94         25.6          18.3          8.13 \r\n 1984          165           16.613        26.7          20            53.85 \r\n 1984          166           14.807        27.2          15.6          0 \r\n 1984          167           22.933        26.7          15.6          26.67 \r\n 1984          168           13.724        28.9          17.2          31.5 \r\n 1984          169           15.168        28.9          20.6          5.33 \r\n 1984          170           15.529        27.8          18.9          0 \r\n 1984          171           16.613        28.3          15.6          0 \r\n 1984          172           26.183        28.3          17.2          0 \r\n 1984          173           24.377        28.3          18.3          1.78 \r\n 1984          174           21.488        30            17.8          9.4 \r\n 1984          175           19.863        30            17.2          0 \r\n 1984          176           24.919        27.2          14.4          0 \r\n 1984          177           26.003        30            16.7          0 \r\n 1984          178           26.544        32.2          18.9          0 \r\n 1984          179           24.739        31.7          15.6          1.27 \r\n 1984          180           21.127        27.8          14.4          0 \r\n 1984          181           26.364        27.8          15            0.76 \r\n 1984          182           24.919        25.6          13.9          0 \r\n 1984          183           28.162        26.1          13.3          0 \r\n 1984          184           27.456        27.8          13.9          0 \r\n 1984          185           27.268        27.8          16.7          5.84 \r\n 1984          186           18.993        29.4          17.8          0 \r\n 1984          187           18.805        28.9          14.4          0 \r\n 1984          188           28.02         25.6          13.9          6.6 \r\n 1984          189           20.874        23.9          9.4           0 \r\n 1984          190           28.774        31.1          15.6          0 \r\n 1984          191           25.971        33.3          25            0 \r\n 1984          192           23.356        33.3          26.1          18.03 \r\n 1984          193           16.256        28.9          15.6          1.52 \r\n 1984          194           20.74         30            16.7          0 \r\n 1984          195           25.618        30            16.7          0 \r\n 1984          196           25.061        33.3          19.4          0 \r\n 1984          197           24.133        30            14.4          12.95 \r\n 1984          198           20.606        28.9          14.4          0 \r\n 1984          199           26.19         28.9          15            9.14 \r\n 1984          200           18.812        25.6          12.8          0 \r\n 1984          201           26.005        30            15            0 \r\n 1984          202           24.899        29.4          19.4          5.59 \r\n 1984          203           16.124        30.6          18.3          0 \r\n 1984          204           22.72         32.8          21.1          0 \r\n 1984          205           21.621        32.8          20            0 \r\n 1984          206           22.025        32.8          19.4          0 \r\n 1984          207           22.571        27.8          18.3          0 \r\n 1984          208           17.292        24.4          15.6          26.42 \r\n 1984          209           13.381        25            16.1          0 \r\n 1984          210           16.454        25.6          13.9          0 \r\n 1984          211           23.868        25.6          13.3          0 \r\n 1984          212           24.786        26.7          12.8          0 \r\n 1984          213           24.607        28.3          13.3          0 \r\n 1984          214           26.381        28.9          15.6          0 \r\n 1984          215           21.92         29.4          19.4          0 \r\n 1984          216           18.914        30            16.7          0 \r\n 1984          217           22.474        31.1          20            0 \r\n 1984          218           21.245        32.2          19.4          0 \r\n 1984          219           20.367        33.3          19.4          0 \r\n 1984          220           21.798        33.3          20.6          2.03 \r\n 1984          221           20.926        32.2          18.9          0 \r\n 1984          222           17.319        31.7          17.8          0 \r\n 1984          223           22.688        29.4          15            0 \r\n 1984          224           24.939        28.9          15            0 \r\n 1984          225           23.219        28.9          15.6          0 \r\n 1984          226           22.015        28.9          14.4          0 \r\n 1984          227           22.375        30.6          16.1          0 \r\n 1984          228           22.545        32.2          15.6          0 \r\n 1984          229           22.557        32.2          20.6          0 \r\n 1984          230           20.692        27.2          21.1          2.79 \r\n 1984          231           14.652        27.8          18.3          1.02 \r\n 1984          232           15.831        27.8          12.8          0 \r\n 1984          233           22.24         27.2          12.2          0 \r\n 1984          234           23.076        26.7          16.7          2.03 \r\n 1984          235           19.731        25.6          15.6          0 \r\n 1984          236           19.922        23.3          8.3           0 \r\n 1984          237           24.239        23.9          10            0 \r\n 1984          238           22.252        28.3          11.1          0 \r\n 1984          239           21.922        32.2          17.2          0 \r\n 1984          240           20.127        36.1          20.6          0 \r\n 1984          241           19.963        36.1          15.6          0 \r\n 1984          242           23.066        36.1          17.8          0 \r\n 1984          243           21.767        34.4          13.3          0 \r\n 1984          244           23.541        30.6          10            0 \r\n 1984          245           23.541        36.1          22.2          0 \r\n 1984          246           18.228        33.9          16.7          7.37 \r\n 1984          247           13.189        22.2          11.1          0 \r\n 1984          248           14.415        25.6          10.6          4.06 \r\n 1984          249           17.503        24.4          7.2           0 \r\n 1984          250           19.415        21.7          12.8          0 \r\n 1984          251           16.35         32.8          20            0 \r\n 1984          252           14.488        31.1          12.8          14.22 \r\n 1984          253           13.763        24.4          11.7          1.78 \r\n 1984          254           11.214        21.1          11.7          29.21 \r\n 1984          255           9.776         23.9          10.6          0 \r\n 1984          256           10.557        32.8          19.4          0 \r\n 1984          257           15.408        32.8          17.2          2.79 \r\n 1984          258           14.864        21.1          11.7          0.51 \r\n 1984          259           11.749        17.8          4.4           0 \r\n 1984          260           16.995        18.9          3.3           0 \r\n 1984          261           17.978        22.8          5             0 \r\n 1984          262           17.418        27.2          10            0 \r\n 1984          263           16.582        32.8          11.1          0 \r\n 1984          264           17.418        32.8          13.3          0 \r\n 1984          265           16.589        28.3          11.1          0 \r\n 1984          266           15.633        27.8          17.2          0 \r\n 1984          267           13.165        26.1          12.8          0 \r\n 1984          268           12.787        28.3          17.8          1.27 \r\n 1984          269           13.331        18.3          4.4           39.62 \r\n 1984          270           11.738        10           -0.6           0 \r\n 1984          271           13.897        11.1          3.9           0 \r\n 1984          272           11.241        10.6          3.9           0.51 \r\n 1984          273           9.367         15           -1.7           0 \r\n 1984          274           15.66         16.7          1.1           0 \r\n 1984          275           16.191        19.4          0             0 \r\n 1984          276           16.187        23.3          5             0 \r\n 1984          277           15.792        22.8          8.9           0 \r\n 1984          278           14.746        22.2          6.1           5.08 \r\n 1984          279           14.355        20.6          11.7          0 \r\n 1984          280           8.54          20            13.3          5.08 \r\n 1984          281           5.305         19.4          13.3          5.33 \r\n 1984          282           4.234         18.9          8.9           0 \r\n 1984          283           7.312         21.1          8.9           0 \r\n 1984          284           11.065        22.8          11.7          0 \r\n 1984          285           10.556        19.4          13.9          2.54 \r\n 1984          286           5.421         22.8          15            0 \r\n 1984          287           5.799         22.8          13.3          0 \r\n 1984          288           8.373         19.4          14.4          1.27 \r\n 1984          289           5.874         18.3          7.8           24.13 \r\n 1984          290           5.698         8.9           5             22.35 \r\n 1984          291           6.317         13.3          0             0 \r\n 1984          292           8.839         12.2          7.8           10.41 \r\n 1984          293           6.629         13.3          5             1.27 \r\n 1984          294           6.569         13.9          3.3           0 \r\n 1984          295           10.219        12.2          1.7           0 \r\n 1984          296           10.34         12.2          0.6           0.51 \r\n 1984          297           10.728        11.1         -2.2           0 \r\n 1984          298           12.054        13.9         -1.7           0 \r\n 1984          299           11.705        12.2          6.1           4.32 \r\n 1984          300           6.808         19.4          3.3           0 \r\n 1984          301           7.1           20            13.9          2.29 \r\n 1984          302           9.348         14.4          0.6           0 \r\n 1984          303           8.323         15.6         -2.8           0 \r\n 1984          304           10.902        10.6          0.6           0 \r\n 1984          305           10.199        12.2         -2.2           7.11 \r\n 1984          306           9.522         16.7         -3.9           28.45 \r\n 1984          307           8.361         3.3          -7.8           0 \r\n 1984          308           8.626         13.3          0.6           0 \r\n 1984          309           9.431         16.1          2.2           0 \r\n 1984          310           9.568         8.9          -2.2           0 \r\n 1984          311           9.91          16.1         -4.4           0 \r\n 1984          312           10.024        17.2          6.7           0 \r\n 1984          313           9.25          18.3          1.7           0 \r\n 1984          314           9.25          15            8.3           10.92 \r\n 1984          315           5.697         11.1         -1.1           6.35 \r\n 1984          316           5.92          0            -3.9           0 \r\n 1984          317           4.021         6.7          -4.4           0 \r\n 1984          318           7.078         13.9          0.6           0 \r\n 1984          319           7.852         15.6          6.1           0 \r\n 1984          320           6.967         13.3          0.6           0 \r\n 1984          321           8.321         8.3          -6.1           0 \r\n 1984          322           7.883         4.4          -3.3           0 \r\n 1984          323           6.679         3.9          -4.4           0 \r\n 1984          324           4.986         1.1          -7.8           0 \r\n 1984          325           6.394         1.7          -10            0 \r\n 1984          326           7.153         5.6          -8.3           0 \r\n 1984          327           7.295         11.1         -3.3           0 \r\n 1984          328           7.08          10.6         -5.6           0 \r\n 1984          329           7.938         15.6         -2.2           0 \r\n 1984          330           7.938         10.6          0             0 \r\n 1984          331           6.795         15            6.1           1.52 \r\n 1984          332           4.884         10           -3.3           5.08 \r\n 1984          333           5.202         0            -7.2           0 \r\n 1984          334           3.61          5            -3.3           0 \r\n 1984          335           4.833         2.2          -3.3           0 \r\n 1984          336           5.358         2.2          -6.7           0 \r\n 1984          337           6.304         0.6          -5.6           0 \r\n 1984          338           5.463        -4.4          -12.8          0 \r\n 1984          339           6.829        -4.4          -15            0 \r\n 1984          340           6.757        -0.6          -12.8          0 \r\n 1984          341           6.965        -6.1          -19.4          0 \r\n 1984          342           8.316         14.4         -10            0 \r\n 1984          343           8.836         11.1         -6.7           0 \r\n 1984          344           8.316         6.1          -1.1           0 \r\n 1984          345           6.653         5            -2.8           0 \r\n 1984          346           5.821         10.6         -2.8           0 \r\n 1984          347           5.863         8.9          -7.2           0 \r\n 1984          348           6.685        -0.6          -11.1          0 \r\n 1984          349           5.143         0            -3.9           15.24 \r\n 1984          350           3.188         2.8          -5.6           2.29 \r\n 1984          351           5.657         9.4          -2.2           3.81 \r\n 1984          352           5.245        -1.7          -7.2           0 \r\n 1984          353           5.863        -5.6          -13.3          0 \r\n 1984          354           5.965        -2.2          -9.4           0 \r\n 1984          355           5.245         1.1          -10            0 \r\n 1984          356           6.685         0.6          -3.9           14.99 \r\n 1984          357           3.908         0.6          -11.7          0 \r\n 1984          358           5.451         0            -6.1           0 \r\n 1984          359           6.377        -5            -16.7          0 \r\n 1984          360           7.714        -1.7          -18.3          0 \r\n 1984          361           7.817         0.6          -8.3           3.05 \r\n 1984          362           4.834         6.7           0             3.81 \r\n 1984          363           3.805         18.9          4.4           0 \r\n 1984          364           7.097         16.7         -9.4           0 \r\n 1984          365           8.836        -2.8          -11.7          0 \r\n 1984          366           5.406        -2.2          -10.6          0 \r\n 1985          1             3.638        -8.3          -15            1.27 \r\n 1985          2             7.485        -8.3          -20.6          0 \r\n 1985          3             8.005        -5.6          -18.3          0 \r\n 1985          4             8.212         2.8          -12.8          0 \r\n 1985          5             7.797         3.3          -8.3           0 \r\n 1985          6             7.144         6.1          -1.7           0 \r\n 1985          7             5.568         3.3          -3.3           0 \r\n 1985          8             8.615         1.1          -15.6          0 \r\n 1985          9             4.833        -5            -9.4           1.78 \r\n 1985          10            3.887        -5            -12.2          3.81 \r\n 1985          11            8.069        -6.7          -18.9          0.76 \r\n 1985          12            7.326        -8.9          -19.4          0 \r\n 1985          13            8.387         1.1          -11.1          0 \r\n 1985          14            8.494         1.7          -11.7          0 \r\n 1985          15            7.22         -8.3          -17.8          0 \r\n 1985          16            5.149        -5            -10.6          0 \r\n 1985          17            7.616        -1.1          -12.8          0 \r\n 1985          18            8.796         2.2          -11.7          0 \r\n 1985          19            10.188       -11.7         -28.9          0 \r\n 1985          20            8.345        -17.8         -29.4          0 \r\n 1985          21            10.079       -2.8          -18.3          0 \r\n 1985          22            7.883        -2.8          -11.1          0 \r\n 1985          23            7.992        -1.7          -11.7          0 \r\n 1985          24            6.679         0            -3.3           0 \r\n 1985          25            11.28         0.6          -19.4          0 \r\n 1985          26            10.396        0            -17.2          0 \r\n 1985          27            8.626        -1.7          -7.2           0 \r\n 1985          28            10.276       -3.9          -16.7          0 \r\n 1985          29            8.936        -1.7          -11.1          0 \r\n 1985          30            11.282       -1.7          -20.6          1.27 \r\n 1985          31            10.491       -15.6         -26.7          0 \r\n 1985          32            10.378       -13.9         -23.3          0 \r\n 1985          33            11.168       -8.9          -22.2          0 \r\n 1985          34            10.708       -9.4          -18.9          0 \r\n 1985          35            7.974        -10           -17.2          1.52 \r\n 1985          36            7.016        -10.6         -20            2.03 \r\n 1985          37            11.846       -10.6         -23.9          0 \r\n 1985          38            12.422       -10           -22.8          0 \r\n 1985          39            11.148       -8.9          -17.8          0 \r\n 1985          40            7.896        -5.6          -11.1          0 \r\n 1985          41            3.634        -5.6          -6.7           0.51 \r\n 1985          42            7.034        -6.1          -14.4          2.03 \r\n 1985          43            12.307       -6.1          -17.2          0 \r\n 1985          44            11.952       -4.4          -12.8          0 \r\n 1985          45            11.005       -5            -15            0 \r\n 1985          46            13.377       -6.7          -18.3          0 \r\n 1985          47            14.452        5            -10.6          0 \r\n 1985          48            12.175        5.6          -6.1           0 \r\n 1985          49            9.041         3.3           0             0 \r\n 1985          50            12.408        5.6          -1.1           0 \r\n 1985          51            10.462        4.4          -3.3           0 \r\n 1985          52            7.243         7.8          -0.6           7.87 \r\n 1985          53            7.366         6.7          -1.1           0 \r\n 1985          54            4.831         3.9          -0.6           8.38 \r\n 1985          55            3.468         0.6          -1.7           1.27 \r\n 1985          56            9.123         6.7          -0.6           0 \r\n 1985          57            12.247        6.7          -2.8           0 \r\n 1985          58            15.255        4.4          -7.2           0 \r\n 1985          59            16.642        11.7         -7.2           0 \r\n 1985          60            12.432        10.6          2.2           0 \r\n 1985          61            13.081        8.9          -2.8           0 \r\n 1985          62            5.297         1.1          -0.6           19.05 \r\n 1985          63            9.16          5            -4.4           12.7 \r\n 1985          64            11.014        0            -7.8           0 \r\n 1985          65            12.648        4.4          -3.3           0 \r\n 1985          66            14.738        12.2          0             0 \r\n 1985          67            15.64         11.7         -0.6           0 \r\n 1985          68            16.971        15.6         -2.2           0 \r\n 1985          69            17.115        16.1          0             0 \r\n 1985          70            15.325        13.3          2.2           0 \r\n 1985          71            14.552        6.7          -2.2           0 \r\n 1985          72            9.927         8.3          -1.1           2.79 \r\n 1985          73            14.104        7.8          -1.1           0 \r\n 1985          74            17.63         12.8         -3.3           0 \r\n 1985          75            16.858        12.2          0.6           0 \r\n 1985          76            17.432        11.7         -2.2           0 \r\n 1985          77            18.616        18.9         -1.7           0 \r\n 1985          78            18.037        18.3          3.3           0 \r\n 1985          79            18.767        16.7          1.1           0 \r\n 1985          80            18.65         15.6         -0.6           0 \r\n 1985          81            18.683        13.3         -2.8           0 \r\n 1985          82            11.252        10            2.2           7.11 \r\n 1985          83            8.054         6.1          -1.1           0 \r\n 1985          84            8.715         7.2           1.1           0 \r\n 1985          85            17.669        21.7          1.1           0 \r\n 1985          86            12.995        18.3          5.6           6.1 \r\n 1985          87            10.468        12.2          5.6           1.02 \r\n 1985          88            12.49         10            0.6           0 \r\n 1985          89            8.003         5             0             0 \r\n 1985          90            5.744         0.6          -3.3           9.14 \r\n 1985          91            13.865        2.8          -6.1           0 \r\n 1985          92            22.501        15           -4.4           0 \r\n 1985          93            18.459        15            1.7           0 \r\n 1985          94            15.748        13.9          2.8           1.02 \r\n 1985          95            8.96          7.8           2.2           0 \r\n 1985          96            15.868        9.4          -1.1           0 \r\n 1985          97            16.552        9.4          -1.1           0 \r\n 1985          98            16.952        6.7          -2.2           0 \r\n 1985          99            21.086        13.3         -5             0 \r\n 1985          100           19.578        18.3          4.4           0 \r\n 1985          101           21.799        22.2          1.7           0 \r\n 1985          102           20.827        27.8          12.8          0 \r\n 1985          103           14.967        24.4          8.3           6.35 \r\n 1985          104           13.288        10            3.9           0 \r\n 1985          105           22.263        22.8          1.7           0 \r\n 1985          106           21.981        24.4          8.3           0 \r\n 1985          107           22.851        30            7.8           0 \r\n 1985          108           20.013        32.2          17.2          0 \r\n 1985          109           18.728        31.1          16.7          0 \r\n 1985          110           17.727        28.3          17.8          0 \r\n 1985          111           17.999        28.9          18.3          0 \r\n 1985          112           13.823        28.3          15            7.62 \r\n 1985          113           10.732        19.4          12.2          7.62 \r\n 1985          114           14.792        20            7.2           1.02 \r\n 1985          115           14.313        20            7.2           5.08 \r\n 1985          116           10.807        19.4          6.7           2.03 \r\n 1985          117           17.796        17.8          8.3           0 \r\n 1985          118           21.032        21.7          6.7           0 \r\n 1985          119           22.797        25.6          7.2           0 \r\n 1985          120           19.253        24.4          13.3          0 \r\n 1985          121           16.521        22.8          11.1          0.76 \r\n 1985          122           25.199        22.8          5             0 \r\n 1985          123           25.354        26.1          6.1           0 \r\n 1985          124           23.493        27.8          11.1          0 \r\n 1985          125           19.891        26.7          12.8          9.4 \r\n 1985          126           15.506        21.7          9.4           0 \r\n 1985          127           23.181        24.4          8.9           0 \r\n 1985          128           25.388        28.9          8.9           0 \r\n 1985          129           23.497        30            12.8          0 \r\n 1985          130           20.64         29.4          15            0 \r\n 1985          131           11.907        23.9          15            7.11 \r\n 1985          132           13.426        21.7          14.4          0 \r\n 1985          133           21.898        20.6          7.2           0 \r\n 1985          134           16.943        23.9          12.8          2.54 \r\n 1985          135           19.631        18.3          8.9           0.76 \r\n 1985          136           11.103        15            9.4           1.02 \r\n 1985          137           21.884        21.1          7.8           0.76 \r\n 1985          138           26.89         27.2          8.9           0 \r\n 1985          139           26.566        28.9          10.6          0 \r\n 1985          140           18.628        27.2          11.1          1.02 \r\n 1985          141           26.089        22.8          6.7           0 \r\n 1985          142           25.926        24.4          8.3           0 \r\n 1985          143           24.295        24.4          9.4           0 \r\n 1985          144           17.234        26.1          13.3          2.03 \r\n 1985          145           25.276        30            12.2          0 \r\n 1985          146           23.963        30            15.6          0 \r\n 1985          147           25.937        29.4          12.2          1.02 \r\n 1985          148           22.633        23.9          11.1          0 \r\n 1985          149           23.954        27.8          12.2          0 \r\n 1985          150           16.685        29.4          16.7          5.59 \r\n 1985          151           23.624        29.4          16.7          0 \r\n 1985          152           26.804        26.1          8.9           0 \r\n 1985          153           21.393        25            6.7           15.24 \r\n 1985          154           27.633        21.1          5.6           0 \r\n 1985          155           20.323        21.7          11.7          1.52 \r\n 1985          156           26.385        25            9.4           0 \r\n 1985          157           27.273        25            11.1          0 \r\n 1985          158           29.067        31.1          11.1          0 \r\n 1985          159           28.529        38.3          18.3          0 \r\n 1985          160           28.888        37.8          18.3          0 \r\n 1985          161           21.89         27.2          14.4          0 \r\n 1985          162           13.098        19.4          11.1          13.97 \r\n 1985          163           15.251        18.9          8.9           7.11 \r\n 1985          164           26.906        22.8          7.2           0 \r\n 1985          165           14.807        22.8          13.9          2.54 \r\n 1985          166           15.71         26.1          13.3          1.52 \r\n 1985          167           23.655        25.6          13.9          2.54 \r\n 1985          168           24.919        26.1          13.3          0 \r\n 1985          169           21.127        25.6          13.9          0.51 \r\n 1985          170           23.836        23.3          10.6          0 \r\n 1985          171           27.989        28.3          9.4           0 \r\n 1985          172           22.03         31.1          20            0 \r\n 1985          173           28.531        28.9          11.1          0 \r\n 1985          174           21.488        28.9          18.9          0 \r\n 1985          175           25.642        30.6          14.4          0 \r\n 1985          176           23.113        32.8          20            0 \r\n 1985          177           18.78         31.1          19.4          39.62 \r\n 1985          178           15.891        23.3          15            1.52 \r\n 1985          179           24.377        22.8          11.7          0 \r\n 1985          180           23.475        24.4          12.8          0 \r\n 1985          181           25.28         27.2          14.4          0 \r\n 1985          182           26.402        28.3          17.2          0 \r\n 1985          183           24.071        28.9          16.1          0 \r\n 1985          184           30.276        30            13.3          0 \r\n 1985          185           27.268        31.1          17.8          0.76 \r\n 1985          186           28.96         28.3          13.9          0 \r\n 1985          187           28.584        30.6          15.6          0 \r\n 1985          188           27.456        33.9          17.8          0 \r\n 1985          189           24.29         33.3          20.6          0 \r\n 1985          190           23.169        33.9          20.6          0 \r\n 1985          191           29.895        33.3          14.4          0 \r\n 1985          192           25.971        30            16.7          0 \r\n 1985          193           21.674        30            19.4          2.03 \r\n 1985          194           21.163        30            16.7          0 \r\n 1985          195           24.69         32.8          18.9          0 \r\n 1985          196           27.289        30            16.1          0 \r\n 1985          197           29.145        27.8          12.8          0 \r\n 1985          198           28.034        30.6          15            0 \r\n 1985          199           22.317        30.6          20            0 \r\n 1985          200           14.386        29.4          20.6          11.94 \r\n 1985          201           18.075        26.1          15            0 \r\n 1985          202           25.285        29.4          15.6          0 \r\n 1985          203           27.851        29.4          12.2          0 \r\n 1985          204           27.118        28.3          13.3          0 \r\n 1985          205           23.663        28.3          17.2          4.06 \r\n 1985          206           14.198        28.9          16.7          8.38 \r\n 1985          207           26.03         27.8          15            0 \r\n 1985          208           25.676        28.9          13.9          0 \r\n 1985          209           25.315        29.4          13.9          0 \r\n 1985          210           21.698        28.9          16.7          0 \r\n 1985          211           11.854        24.4          16.7          7.87 \r\n 1985          212           8.262         21.1          15.6          0.51 \r\n 1985          213           22.502        24.4          11.1          0 \r\n 1985          214           25.278        26.1          12.2          0 \r\n 1985          215           19.975        25.6          16.1          1.27 \r\n 1985          216           17.909        23.9          16.7          0 \r\n 1985          217           20.367        31.7          17.8          0 \r\n 1985          218           24.756        32.8          16.7          0 \r\n 1985          219           19.531        32.2          16.7          4.32 \r\n 1985          220           25.46         30            13.9          0 \r\n 1985          221           24.246        33.9          17.2          0 \r\n 1985          222           20.436        33.9          11.1          17.53 \r\n 1985          223           25.111        25.6          8.9           0 \r\n 1985          224           21.671        29.4          18.3          0 \r\n 1985          225           24.595        28.3          13.3          0 \r\n 1985          226           15.372        27.8          15.6          9.65 \r\n 1985          227           16.397        24.4          11.7          1.27 \r\n 1985          228           20.692        26.7          15.6          0 \r\n 1985          229           14.416        26.1          16.1          7.62 \r\n 1985          230           24.083        23.9          8.9           0 \r\n 1985          231           21.557        23.9          13.3          1.27 \r\n 1985          232           23.41         23.3          8.9           0 \r\n 1985          233           19.731        25            11.7          0 \r\n 1985          234           12.207        22.8          16.1          62.23 \r\n 1985          235           10.957        25.6          16.7          2.54 \r\n 1985          236           15.44         25.6          12.2          1.27 \r\n 1985          237           15.823        22.8          13.9          1.02 \r\n 1985          238           18.625        22.2          11.7          0 \r\n 1985          239           21.763        26.1          11.1          0 \r\n 1985          240           20.454        27.2          14.4          0 \r\n 1985          241           12.508        26.7          18.3          18.54 \r\n 1985          242           10.883        26.7          17.8          0.51 \r\n 1985          243           18.382        29.4          14.4          0 \r\n 1985          244           15.963        29.4          20            0 \r\n 1985          245           18.228        31.7          16.1          0 \r\n 1985          246           16.597        31.7          18.9          0 \r\n 1985          247           15.15         29.4          19.4          0 \r\n 1985          248           11.326        31.1          18.9          7.62 \r\n 1985          249           15.62         33.3          20.6          0 \r\n 1985          250           15.62         34.4          21.7          0 \r\n 1985          251           16.081        33.3          20            0 \r\n 1985          252           18.979        32.8          14.4          0 \r\n 1985          253           8.626         20            14.4          0.51 \r\n 1985          254           12.795        22.2          14.4          0 \r\n 1985          255           14.124        22.2          11.1          1.78 \r\n 1985          256           8.56          18.3          9.4           0 \r\n 1985          257           15.43         20.6          9.4           0 \r\n 1985          258           19.535        22.8          5             0 \r\n 1985          259           16.714        25.6          13.9          0 \r\n 1985          260           14.466        29.4          18.3          0 \r\n 1985          261           15.05         31.7          19.4          0 \r\n 1985          262           13.935        32.2          21.1          0 \r\n 1985          263           18.109        30.6          12.2          0 \r\n 1985          264           6.912         15.6          8.9           8.13 \r\n 1985          265           8.228         18.9          10.6          1.78 \r\n 1985          266           10.422        18.3          6.1           30.99 \r\n 1985          267           10.066        12.8          2.8           0.76 \r\n 1985          268           9.93          15            6.7           12.45 \r\n 1985          269           14.976        13.9          2.2           0.51 \r\n 1985          270           17.54         21.1          1.7           0 \r\n 1985          271           16.192        20            4.4           4.83 \r\n 1985          272           6.557         5.6           3.3           25.91 \r\n 1985          273           6.105         9.4           2.2           7.11 \r\n 1985          274           15.66         13.3         -2.2           0 \r\n 1985          275           16.187        17.2          1.1           0 \r\n 1985          276           14.608        17.8          6.7           0 \r\n 1985          277           13.702        17.2          4.4           3.81 \r\n 1985          278           9.526         12.8          3.3           0 \r\n 1985          279           15.268        19.4          0             0 \r\n 1985          280           14.233        19.4          5             0 \r\n 1985          281           10.648        17.2          10            0 \r\n 1985          282           9.493         10.6          0.6           10.41 \r\n 1985          283           5.469         6.1           1.1           1.27 \r\n 1985          284           8.267         11.1          3.3           0 \r\n 1985          285           7.438         16.1          8.3           21.59 \r\n 1985          286           13.994        20            3.9           0 \r\n 1985          287           11.372        18.9          7.8           0.76 \r\n 1985          288           13.497        20            2.8           0 \r\n 1985          289           13.996        19.4          1.1           0 \r\n 1985          290           11.148        17.8          9.4           10.16 \r\n 1985          291           4.174         16.1          12.2          28.45 \r\n 1985          292           5.77          15.6          8.3           1.78 \r\n 1985          293           6.691         15            8.9           0 \r\n 1985          294           5.109         13.9          9.4           1.27 \r\n 1985          295           7.421         18.9          11.7          0 \r\n 1985          296           8.438         20.6          14.4          1.27 \r\n 1985          297           11.09         18.3          6.7           0 \r\n 1985          298           12.422        22.2          3.3           0 \r\n 1985          299           11.466        23.9          9.4           0 \r\n 1985          300           11.952        18.3          1.7           0 \r\n 1985          301           10.65         15            3.3           0 \r\n 1985          302           9.261         13.9          5             0 \r\n 1985          303           8.206         14.4          5.6           0 \r\n 1985          304           9.144         11.7          0.6           6.35 \r\n 1985          305           5.922         12.2          5             8.38 \r\n 1985          306           10.103        10           -1.1           0 \r\n 1985          307           9.086         10.6          1.1           0 \r\n 1985          308           10.466        10           -3.3           0 \r\n 1985          309           10.366        13.9         -3.3           0 \r\n 1985          310           8.885         11.1          2.8           1.02 \r\n 1985          311           9.568         11.7         -5             0 \r\n 1985          312           8.46          8.3          -3.3           0 \r\n 1985          313           3.948         2.2          -2.2           0 \r\n 1985          314           2.346        -1.1          -4.4           0 \r\n 1985          315           2.011        -0.6          -3.3           0 \r\n 1985          316           3.574         2.2          -0.6           0 \r\n 1985          317           2.765         2.8           0             0.76 \r\n 1985          318           5.198         2.8          -3.3           0 \r\n 1985          319           4.534         2.2          -2.2           1.27 \r\n 1985          320           2.737         2.8          -1.1           0 \r\n 1985          321           8.43          13.3         -4.4           0 \r\n 1985          322           8.321         16.7          8.9           1.78 \r\n 1985          323           10.296        14.4         -10.6          2.54 \r\n 1985          324           5.311        -7.8          -14.4          0 \r\n 1985          325           7.912        -4.4          -15.6          0 \r\n 1985          326           6.866        -2.2          -11.1          0 \r\n 1985          327           6.866        -6.7          -12.2          0 \r\n 1985          328           7.295        -7.8          -16.1          0 \r\n 1985          329           6.007        -2.2          -8.3           0 \r\n 1985          330           7.007        -1.7          -10            0 \r\n 1985          331           8.069        -9.4          -17.2          0 \r\n 1985          332           6.476        -9.4          -15            0 \r\n 1985          333           6.158        -11.7         -17.8          0.76 \r\n 1985          334           3.782        -10.6         -12.8          0 \r\n 1985          335           3.572        -11.1         -16.7          22.61 \r\n 1985          336           4.728        -15           -20            0 \r\n 1985          337           7.985        -11.7         -22.8          1.27 \r\n 1985          338           7.88         -2.8          -12.8          0.51 \r\n 1985          339           7.381        -2.8          -12.8          0 \r\n 1985          340           8.836        -6.7          -19.4          0 \r\n 1985          341           8.628         0.6          -11.1          0 \r\n 1985          342           7.901        -1.1          -10.6          0 \r\n 1985          343           5.821        -5            -10.6          0.51 \r\n 1985          344           2.807        -4.4          -7.8           1.02 \r\n 1985          345           7.173        -6.1          -15.6          0 \r\n 1985          346           8.228        -11.1         -22.8          0 \r\n 1985          347           8.331        -13.9         -26.7          0 \r\n 1985          348           8.537        -6.1          -25.6          0 \r\n 1985          349           8.331        -1.1          -13.3          0 \r\n 1985          350           6.582        -4.4          -13.9          0 \r\n 1985          351           5.554        -13.3         -22.8          5.33 \r\n 1985          352           8.331        -12.2         -30            0 \r\n 1985          353           8.125        -13.3         -28.3          0 \r\n 1985          354           7.714        -13.3         -23.9          1.27 \r\n 1985          355           8.64         -6.7          -27.8          0 \r\n 1985          356           7.92          2.2          -7.2           0 \r\n 1985          357           4.834         2.8          -0.6           0 \r\n 1985          358           8.845         0            -22.8          0 \r\n 1985          359           5.657        -14.4         -22.8          0 \r\n 1985          360           8.537         2.8          -14.4          0 \r\n 1985          361           7.2           0            -12.8          0 \r\n 1985          362           6.685        -3.3          -15.6          0 \r\n 1985          363           6.891        -5.6          -15.6          0 \r\n 1985          364           7.797         2.2          -15.6          0 \r\n 1985          365           6.965         0            -10.6          0 \r\n 1986          1             6.133         0.6          -12.2          0 \r\n 1986          2             5.718         0.6          -6.7           0 \r\n 1986          3             4.782         0.6          -6.1           0 \r\n 1986          4             6.445        -0.6          -12.2          1.02 \r\n 1986          5             7.797        -2.8          -15.6          0 \r\n 1986          6             8.195        -6.1          -18.9          0 \r\n 1986          7             7.459        -16.7         -26.1          0 \r\n 1986          8             8.72         -2.8          -21.7          0 \r\n 1986          9             7.564         2.8          -7.2           0 \r\n 1986          10            5.883         2.8          -4.4           0 \r\n 1986          11            7.007         7.2          -4.4           0 \r\n 1986          12            6.052         5            -0.6           0 \r\n 1986          13            7.22          0            -10            0 \r\n 1986          14            6.264         0            -7.2           0 \r\n 1986          15            7.326         5.6          -9.4           0 \r\n 1986          16            6.973         8.3          -1.7           0 \r\n 1986          17            6.973         7.2          -1.7           0 \r\n 1986          18            5.9           6.7           1.1           0 \r\n 1986          19            3.902         2.2          -1.7           0 \r\n 1986          20            6.394         6.1          -2.8           0 \r\n 1986          21            6.178         3.3          -2.2           0 \r\n 1986          22            7.992         0.6          -11.1          0 \r\n 1986          23            8.43          5            -8.3           0 \r\n 1986          24            7.445         6.1          -1.1           0 \r\n 1986          25            5.308         1.7          -2.2           0 \r\n 1986          26            9.843        -1.1          -20.6          0 \r\n 1986          27            8.073        -13.3         -23.9          0 \r\n 1986          28            8.713        -0.6          -13.9          0 \r\n 1986          29            9.159         1.1          -13.3          0 \r\n 1986          30            7.707        -1.7          -13.3          0 \r\n 1986          31            5.866         0            -6.1           0 \r\n 1986          32            6.317         3.9          -2.8           0 \r\n 1986          33            8.686         6.1          -5.6           0 \r\n 1986          34            5.24          2.8          -1.1           0 \r\n 1986          35            1.709         1.1          -0.6           15.49 \r\n 1986          36            1.725         0.6          -1.1           6.35 \r\n 1986          37            3.91          0            -3.9           0.76 \r\n 1986          38            4.371        -3.3          -6.7           3.3 \r\n 1986          39            10.451       -5            -13.9          0 \r\n 1986          40            12.657       -12.2         -24.4          0 \r\n 1986          41            12.895       -15           -23.9          0 \r\n 1986          42            11.84        -16.1         -22.8          0 \r\n 1986          43            12.662       -15           -25            0 \r\n 1986          44            13.963       -5.6          -25            0 \r\n 1986          45            13.372       -3.9          -16.7          0 \r\n 1986          46            13.377       -5.6          -20.6          0 \r\n 1986          47            8.361        -4.4          -8.9           0 \r\n 1986          48            7.353        -1.1          -6.1           0 \r\n 1986          49            5.304         0            -2.2           0 \r\n 1986          50            10.584        0            -7.8           0 \r\n 1986          51            13.868       -2.2          -13.3          0 \r\n 1986          52            13.381       -5            -16.1          0 \r\n 1986          53            13.503       -2.2          -9.4           0 \r\n 1986          54            10.281       -1.7          -7.8           0 \r\n 1986          55            12.51        -2.2          -8.9           0 \r\n 1986          56            15.496        2.8          -11.1          0 \r\n 1986          57            14.621        6.1          -1.1           0 \r\n 1986          58            13.742        5            -4.4           0 \r\n 1986          59            15.255       -1.7          -10            0 \r\n 1986          60            13.945        7.2          -6.7           0 \r\n 1986          61            13.297        8.3          -0.6           0 \r\n 1986          62            8.54          6.7           0.6           0 \r\n 1986          63            9.378         7.8           0             0 \r\n 1986          64            9.923         7.2          -0.6           0 \r\n 1986          65            10.998        3.3          -3.3           0 \r\n 1986          66            14.188       -2.2          -15.6          0 \r\n 1986          67            13.755        5            -9.4           0 \r\n 1986          68            14.975        19.4          0             0 \r\n 1986          69            15.213        18.3          0             0 \r\n 1986          70            11.969        3.9          -3.9           0 \r\n 1986          71            4.738         2.8           0             16.51 \r\n 1986          72            2.933         2.2           0             12.7 \r\n 1986          73            4.664         2.8           0             0 \r\n 1986          74            11.261        9.4          -0.6           0 \r\n 1986          75            14.106        7.8          -2.2           0 \r\n 1986          76            12.271        7.8          -0.6           8.13 \r\n 1986          77            9.828         10.6          4.4           10.16 \r\n 1986          78            10.522        6.7          -3.9           6.86 \r\n 1986          79            14.687        0            -11.1          0 \r\n 1986          80            15.736        7.8          -7.2           0 \r\n 1986          81            16.333        15.6          3.9           0 \r\n 1986          82            16.819        13.9          0.6           0 \r\n 1986          83            17.53         18.3          0             0 \r\n 1986          84            16.236        20.6          12.2          0 \r\n 1986          85            16.594        16.1          3.3           0 \r\n 1986          86            18.41         20           -5             0 \r\n 1986          87            17.928        27.2          8.3           0 \r\n 1986          88            18.432        32.2          8.9           0 \r\n 1986          89            18.311        30            7.2           0 \r\n 1986          90            16.131        27.2          13.9          0 \r\n 1986          91            12.501        25.6          4.4           23.37 \r\n 1986          92            16.842        15.6          2.8           2.79 \r\n 1986          93            8.623         15            13.3          19.3 \r\n 1986          94            10.454        15.6          6.1           11.18 \r\n 1986          95            9.639         17.2          7.8           0 \r\n 1986          96            16.005        18.3          3.9           0 \r\n 1986          97            16.689        20.6          7.8           0 \r\n 1986          98            18.743        18.3          5.6           0 \r\n 1986          99            19.846        14.4          0             0 \r\n 1986          100           21.244        18.3          1.1           0 \r\n 1986          101           21.66         22.8          4.4           0 \r\n 1986          102           14.024        21.1          5.6           1.27 \r\n 1986          103           16.645        16.7          1.7           0.51 \r\n 1986          104           16.086        16.7         -2.8           13.21 \r\n 1986          105           12.259        6.1          -2.2           1.02 \r\n 1986          106           16.768        14.4          0             0 \r\n 1986          107           14.477        14.4          4.4           0 \r\n 1986          108           7.381         14.4          8.9           13.21 \r\n 1986          109           11.866        17.8          5.6           0 \r\n 1986          110           15.44         17.2          7.2           1.78 \r\n 1986          111           16.559        11.1          0             0 \r\n 1986          112           20.303        12.8         -1.7           0 \r\n 1986          113           21.463        23.3          3.9           0 \r\n 1986          114           18.998        24.4          13.3          0 \r\n 1986          115           19.716        29.4          12.2          0 \r\n 1986          116           15.335        27.8          13.3          8.64 \r\n 1986          117           12.502        26.7          15.6          13.97 \r\n 1986          118           16.178        20.6          5             3.81 \r\n 1986          119           15.884        25            5.6           6.6 \r\n 1986          120           14.218        20.6          13.9          11.43 \r\n 1986          121           15.084        19.4          5.6           0 \r\n 1986          122           24.577        15.6         -0.6           0 \r\n 1986          123           20.221        18.3          8.3           0 \r\n 1986          124           19.734        26.1          12.2          0 \r\n 1986          125           20.987        28.9          15.6          0 \r\n 1986          126           24.59         27.8          10.6          0 \r\n 1986          127           24.285        26.1          8.9           0 \r\n 1986          128           20.973        27.2          15.6          34.04 \r\n 1986          129           14.448        24.4          15            12.95 \r\n 1986          130           12.384        23.9          15            8.13 \r\n 1986          131           9.208         21.7          14.4          5.33 \r\n 1986          132           21.578        25.6          13.3          0 \r\n 1986          133           22.058        25            11.1          10.67 \r\n 1986          134           18.381        23.3          8.3           0 \r\n 1986          135           14.16         23.3          12.8          24.38 \r\n 1986          136           13.517        18.9          10            5.59 \r\n 1986          137           13.034        18.9          8.3           7.87 \r\n 1986          138           19.924        17.8          6.1           0 \r\n 1986          139           22.84         19.4          7.2           0 \r\n 1986          140           24.136        19.4          6.1           0 \r\n 1986          141           25.111        21.1          7.2           0 \r\n 1986          142           24.948        21.7          7.2           0 \r\n 1986          143           21.36         21.7          10            0 \r\n 1986          144           21.009        23.3          10            2.03 \r\n 1986          145           16.413        25            11.1          11.94 \r\n 1986          146           13.295        18.9          11.1          4.32 \r\n 1986          147           7.269         16.7          13.9          5.33 \r\n 1986          148           11.729        21.1          11.7          4.32 \r\n 1986          149           16.52         21.7          15            1.52 \r\n 1986          150           23.954        26.7          12.8          0 \r\n 1986          151           24.78         29.4          14.4          0 \r\n 1986          152           25.247        29.4          16.1          0 \r\n 1986          153           27.989        26.1          10.6          0 \r\n 1986          154           28.524        27.8          10            0 \r\n 1986          155           24.424        28.3          17.2          10.92 \r\n 1986          156           14.618        22.2          15.6          10.16 \r\n 1986          157           15.431        22.2          15            0 \r\n 1986          158           15.789        26.1          17.2          3.56 \r\n 1986          159           27.452        27.2          14.4          0 \r\n 1986          160           23.684        27.2          15.6          0 \r\n 1986          161           21.531        30.6          20.6          0 \r\n 1986          162           18.301        29.4          16.7          3.05 \r\n 1986          163           17.584        25.6          13.3          0 \r\n 1986          164           25.28         27.2          15            0 \r\n 1986          165           14.626        23.9          16.1          25.91 \r\n 1986          166           17.696        26.1          14.4          0 \r\n 1986          167           22.03         27.2          20            0 \r\n 1986          168           27.628        27.8          13.9          0 \r\n 1986          169           19.683        27.8          17.2          5.33 \r\n 1986          170           23.294        32.2          18.9          0 \r\n 1986          171           24.197        32.2          18.9          0 \r\n 1986          172           22.03         31.1          21.1          7.11 \r\n 1986          173           16.613        26.1          18.3          4.83 \r\n 1986          174           28.17         30            14.4          0 \r\n 1986          175           28.892        30            12.2          0 \r\n 1986          176           27.447        30            14.4          0 \r\n 1986          177           22.752        32.2          21.7          0 \r\n 1986          178           16.613        31.7          20.6          2.79 \r\n 1986          179           24.377        32.8          16.7          19.3 \r\n 1986          180           16.252        30            18.3          22.1 \r\n 1986          181           14.265        25.6          17.8          50.29 \r\n 1986          182           19.362        23.9          16.1          0 \r\n 1986          183           22.378        25.6          16.1          0 \r\n 1986          184           27.832        27.8          15            0 \r\n 1986          185           22.942        32.2          21.7          0 \r\n 1986          186           20.498        32.2          23.9          0 \r\n 1986          187           19.934        32.2          17.2          35.31 \r\n 1986          188           13.916        26.7          17.2          2.79 \r\n 1986          189           21.487        31.1          19.4          0 \r\n 1986          190           17.75         30.6          18.3          0.76 \r\n 1986          191           16.816        28.3          18.9          17.78 \r\n 1986          192           18.498        28.9          16.7          6.1 \r\n 1986          193           17.003        27.2          17.8          10.92 \r\n 1986          194           19.492        29.4          15.6          0 \r\n 1986          195           21.163        28.9          19.4          0 \r\n 1986          196           20.791        32.8          21.7          0 \r\n 1986          197           21.72         32.8          22.2          0 \r\n 1986          198           21.579        33.3          22.2          0 \r\n 1986          199           22.87         33.3          20.6          0 \r\n 1986          200           21.763        32.8          21.7          0 \r\n 1986          201           26.743        29.4          16.1          0 \r\n 1986          202           26.935        26.7          14.4          0 \r\n 1986          203           26.935        30            15            0 \r\n 1986          204           26.568        31.1          16.1          0 \r\n 1986          205           23.481        32.8          22.2          0 \r\n 1986          206           18.749        32.2          18.3          33.27 \r\n 1986          207           24.391        29.4          16.7          0 \r\n 1986          208           21.879        30            19.4          3.05 \r\n 1986          209           17.539        32.2          20.6          0 \r\n 1986          210           20.252        32.2          16.1          28.96 \r\n 1986          211           21.374        30.6          21.1          0 \r\n 1986          212           20.835        29.4          19.4          0 \r\n 1986          213           26.187        26.1          15            0 \r\n 1986          214           24.041        23.3          13.9          0 \r\n 1986          215           25.278        24.4          12.2          0 \r\n 1986          216           23.176        24.4          12.2          0 \r\n 1986          217           10.008        21.7          16.1          11.94 \r\n 1986          218           12.115        25.6          15.6          4.83 \r\n 1986          219           21.275        26.7          16.1          0 \r\n 1986          220           24.762        26.7          13.9          2.54 \r\n 1986          221           23.553        26.7          13.9          0 \r\n 1986          222           19.224        23.3          15.6          2.03 \r\n 1986          223           26.143        23.3          9.4           0 \r\n 1986          224           21.327        23.9          13.9          0 \r\n 1986          225           8.944         19.4          15.6          53.59 \r\n 1986          226           12.639        28.3          16.7          5.08 \r\n 1986          227           21.179        29.4          17.8          0 \r\n 1986          228           21.37         30.6          17.2          0 \r\n 1986          229           20.013        30.6          18.9          0.51 \r\n 1986          230           21.557        27.2          15            0 \r\n 1986          231           20.546        26.1          14.4          0 \r\n 1986          232           20.567        25.6          14.4          0 \r\n 1986          233           18.728        25            16.7          0 \r\n 1986          234           19.899        28.9          16.1          0 \r\n 1986          235           24.239        26.7          11.1          0 \r\n 1986          236           22.413        23.3          11.1          0 \r\n 1986          237           21.922        31.7          16.1          1.02 \r\n 1986          238           14.834        30.6          18.9          9.65 \r\n 1986          239           22.581        23.3          8.9           0 \r\n 1986          240           24.381        19.4          5.6           0 \r\n 1986          241           23.391        21.1          7.2           0 \r\n 1986          242           20.142        26.1          13.3          0 \r\n 1986          243           21.284        27.8          12.8          0 \r\n 1986          244           22.735        27.2          11.7          0 \r\n 1986          245           19.71         26.1          13.3          0 \r\n 1986          246           12.3          26.7          17.2          23.62 \r\n 1986          247           12.944        26.1          14.4          0 \r\n 1986          248           18.68         22.8          11.1          0 \r\n 1986          249           15.328        21.1          10            0 \r\n 1986          250           19.123        18.3          3.9           0 \r\n 1986          251           21.007        20            3.3           0 \r\n 1986          252           17.675        23.3          13.3          1.27 \r\n 1986          253           12.795        28.3          19.4          0.51 \r\n 1986          254           11.358        27.2          15            0 \r\n 1986          255           18.261        22.8          7.2           0 \r\n 1986          256           11.984        22.8          13.3          12.95 \r\n 1986          257           14.722        25            11.7          0 \r\n 1986          258           9.343         22.2          15.6          4.83 \r\n 1986          259           13.202        19.4          10.6          0 \r\n 1986          260           13.483        23.9          12.2          2.79 \r\n 1986          261           9.476         24.4          16.7          0 \r\n 1986          262           8.918         27.2          15.6          40.64 \r\n 1986          263           9.815         26.1          15.6          44.45 \r\n 1986          264           9.539         30            18.3          0 \r\n 1986          265           13.439        29.4          17.8          8.13 \r\n 1986          266           8.365         21.1          14.4          0.51 \r\n 1986          267           9.386         22.8          15.6          5.33 \r\n 1986          268           7.21          28.3          20.6          0 \r\n 1986          269           11.738        30.6          20            0 \r\n 1986          270           10.659        28.9          17.2          0 \r\n 1986          271           15.79         27.8          12.2          5.59 \r\n 1986          272           9.1           25            16.7          12.7 \r\n 1986          273           9.422         21.7          10            11.94 \r\n 1986          274           9.555         18.3          7.8           0 \r\n 1986          275           10.66         17.2          11.1          8.13 \r\n 1986          276           5.264         17.8          13.3          0.51 \r\n 1986          277           8.482         15            7.8           10.92 \r\n 1986          278           12.789        15.6          5.6           0 \r\n 1986          279           16.045        16.7          0             0 \r\n 1986          280           15.527        24.4          7.8           0 \r\n 1986          281           13.983        23.9          10            0 \r\n 1986          282           12.316        18.3          7.2           0 \r\n 1986          283           12.972        14.4          3.3           0 \r\n 1986          284           8.521         14.4          7.8           48.77 \r\n 1986          285           7.186         8.3           2.2           4.06 \r\n 1986          286           6.934         5             0.6           0 \r\n 1986          287           12.497        10.6         -2.2           0 \r\n 1986          288           13.497        12.8          0             0 \r\n 1986          289           14.12         20.6          0             0 \r\n 1986          290           13.501        19.4          3.3           0 \r\n 1986          291           12.767        15.6          1.1           0 \r\n 1986          292           12.89         21.7          4.4           0 \r\n 1986          293           12.287        24.4          8.3           0 \r\n 1986          294           12.043        22.8          7.2           0 \r\n 1986          295           9.975         20.6          10            2.54 \r\n 1986          296           3.134         13.9          10            13.97 \r\n 1986          297           2.411         13.9          11.1          11.94 \r\n 1986          298           2.747         11.7          8.9           14.48 \r\n 1986          299           5.255         13.9          5             0 \r\n 1986          300           11.715        21.7          1.7           0 \r\n 1986          301           11.123        20            7.2           0 \r\n 1986          302           10.902        17.8          2.2           0 \r\n 1986          303           10.668        16.1          1.7           0 \r\n 1986          304           9.378         17.8          7.2           0 \r\n 1986          305           7.2           10.6          0             10.16 \r\n 1986          306           8.012         6.7          -3.9           0 \r\n 1986          307           8.856         12.8         -0.6           0 \r\n 1986          308           9.201         8.9          -2.2           0 \r\n 1986          309           9.455         11.1         -2.8           0 \r\n 1986          310           9.682         16.7          0             0 \r\n 1986          311           8.088         13.3          3.9           0 \r\n 1986          312           6.994         14.4         -0.6           2.79 \r\n 1986          313           7.219         4.4          -3.9           0 \r\n 1986          314           6.367        -2.2          -7.8           1.02 \r\n 1986          315           10.723       -6.1          -20            0 \r\n 1986          316           8.824        -5            -13.9          0 \r\n 1986          317           8.184        -6.7          -19.4          0 \r\n 1986          318           8.847         1.1          -11.7          0 \r\n 1986          319           8.516         3.9          -8.3           0 \r\n 1986          320           9.306         7.2          -7.8           0 \r\n 1986          321           7.335         3.3          -3.3           0 \r\n 1986          322           4.379         0            -6.7           5.59 \r\n 1986          323           5.419         0.6          -6.7           4.57 \r\n 1986          324           4.118         0.6          -6.1           5.59 \r\n 1986          325           9.646         3.3          -14.4          0 \r\n 1986          326           8.26          7.2          -1.1           1.27 \r\n 1986          327           6.222         1.1          -3.9           0 \r\n 1986          328           7.295         5.6          -10            0 \r\n 1986          329           7.08          7.8          -3.9           0 \r\n 1986          330           5.839         5.6          -1.1           0 \r\n 1986          331           7.326         8.3          -6.1           0 \r\n 1986          332           7.007         11.1         -1.7           0 \r\n 1986          333           7.007         7.8          -2.8           0 \r\n 1986          334           4.518         3.3          -0.6           0 \r\n 1986          335           2.101         2.2          -0.6           4.57 \r\n 1986          336           1.156         0.6          -1.1           4.06 \r\n 1986          337           4.097         2.2          -4.4           0 \r\n 1986          338           4.518        -2.2          -7.2           0 \r\n 1986          339           6.861         2.2          -13.3          0 \r\n 1986          340           5.51          1.1          -3.3           0 \r\n 1986          341           1.975         0.6          -3.3           6.6 \r\n 1986          342           1.975         0.6          -2.8           5.33 \r\n 1986          343           6.341        -0.6          -11.7          0 \r\n 1986          344           6.549        -10.6         -18.9          0 \r\n 1986          345           7.069        -0.6          -15            0 \r\n 1986          346           6.994        -5.6          -16.1          0 \r\n 1986          347           7.405        -5.6          -22.2          0 \r\n 1986          348           7.2           3.3          -10            0 \r\n 1986          349           6.48          2.2          -7.8           0 \r\n 1986          350           4.937         2.8          -3.3           0 \r\n 1986          351           3.6           1.1          -3.3           0 \r\n 1986          352           3.908         1.7          -2.8           0 \r\n 1986          353           6.171         4.4          -6.1           0 \r\n 1986          354           6.068        -0.6          -7.8           0 \r\n 1986          355           5.965        -1.1          -10.6          0 \r\n 1986          356           5.348         3.3          -3.9           0 \r\n 1986          357           6.582         6.1          -6.1           0 \r\n 1986          358           5.76          3.3          -5.6           0 \r\n 1986          359           4.937         0            -5             0 \r\n 1986          360           6.274         0            -10            0 \r\n 1986          361           5.554        -1.1          -6.7           0 \r\n 1986          362           2.777        -1.1          -3.3           0 \r\n 1986          363           3.188         0.6          -2.8           0 \r\n 1986          364           4.99          2.8          -5             0 \r\n 1986          365           6.549         5.6          -5.6           0 \r\n 1987          1             6.965         2.8          -7.8           0 \r\n 1987          2             5.406         1.1          -6.7           0 \r\n 1987          3             6.549         3.3          -6.7           0 \r\n 1987          4             5.718         5.6          -1.1           0 \r\n 1987          5             5.406         1.7          -3.3           0 \r\n 1987          6             3.782         2.2          -1.7           1.78 \r\n 1987          7             3.362         1.1          -3.3           0 \r\n 1987          8             3.782         1.1          -3.9           0 \r\n 1987          9             5.673         0            -6.1           2.79 \r\n 1987          10            3.992         0            -7.2           0 \r\n 1987          11            8.494         5.6          -11.7          0 \r\n 1987          12            8.175         10           -1.1           0 \r\n 1987          13            8.706         13.3         -0.6           0 \r\n 1987          14            8.494         10.6         -1.7           0 \r\n 1987          15            8.6           3.3          -11.1          0 \r\n 1987          16            6.866        -6.1          -13.9          0 \r\n 1987          17            6.222        -3.9          -10            0 \r\n 1987          18            8.26         -0.6          -12.2          0 \r\n 1987          19            9.321         0            -13.3          0 \r\n 1987          20            9.538        -0.6          -13.3          0 \r\n 1987          21            8.67          2.8          -7.8           0 \r\n 1987          22            9.854         1.7          -12.2          0 \r\n 1987          23            10.182       -8.9          -23.3          0 \r\n 1987          24            9.744        -5            -19.4          0 \r\n 1987          25            8.626        -5            -14.4          0 \r\n 1987          26            7.299        -2.8          -8.9           0 \r\n 1987          27            9.179         6.1          -7.2           0 \r\n 1987          28            10.5          3.9          -8.3           0 \r\n 1987          29            8.154         5.6          -1.7           0 \r\n 1987          30            7.484         5            -1.7           0 \r\n 1987          31            11.055        11.7         -5.6           0 \r\n 1987          32            11.055        12.2         -2.8           0 \r\n 1987          33            10.039        15.6          0             0 \r\n 1987          34            10.594        8.9          -7.2           0 \r\n 1987          35            8.657         5            -6.7           0 \r\n 1987          36            7.246         4.4          -2.2           0 \r\n 1987          37            10.006        11.7         -5.6           0 \r\n 1987          38            11.041        17.8         -2.2           0 \r\n 1987          39            11.148        12.8         -3.9           0 \r\n 1987          40            10.683        6.7          -8.3           0 \r\n 1987          41            11.137        10.6         -5             0 \r\n 1987          42            11.606        13.9         -5.6           0 \r\n 1987          43            10.295        11.1         -0.6           0 \r\n 1987          44            10.887        10           -6.1           0 \r\n 1987          45            9.23          7.8          -1.1           0 \r\n 1987          46            6.689         0            -5.6           0 \r\n 1987          47            8.002         1.1          -7.8           0 \r\n 1987          48            9.885        -1.1          -11.1          0 \r\n 1987          49            11.813        5            -9.4           0 \r\n 1987          50            12.165        8.3          -7.2           0 \r\n 1987          51            11.314        7.2          -5             0 \r\n 1987          52            12.521        10.6         -8.3           0 \r\n 1987          53            11.662        7.2          -5.6           0 \r\n 1987          54            13.377        8.9          -8.9           0 \r\n 1987          55            12.262        7.8          -4.4           0 \r\n 1987          56            11.872        9.4          -3.9           0 \r\n 1987          57            11.872        10           -3.3           0 \r\n 1987          58            10.464        8.3          -0.6           0 \r\n 1987          59            4.917         6.7           0.6           13.21 \r\n 1987          60            3.027         1.7          -0.6           10.67 \r\n 1987          61            9.837         6.1          -6.1           0 \r\n 1987          62            11.351        7.2          -6.1           0 \r\n 1987          63            12.431        17.8          0             0 \r\n 1987          64            13.194        17.8          0.6           0 \r\n 1987          65            13.308        20            0             0 \r\n 1987          66            12.868        22.8          8.3           0 \r\n 1987          67            13.533        21.1          2.2           0 \r\n 1987          68            11.314        7.8          -3.9           0 \r\n 1987          69            9.732         0.6          -8.9           0 \r\n 1987          70            11.298        6.7          -6.1           0 \r\n 1987          71            10.04         5.6          -2.2           0.51 \r\n 1987          72            12.634        19.4          1.1           0 \r\n 1987          73            13.536        17.2          2.8           0 \r\n 1987          74            7.166         6.1          -0.6           5.08 \r\n 1987          75            4.473         5             0             0 \r\n 1987          76            7.913         8.3           0.6           0 \r\n 1987          77            6.012         7.8           1.1           16 \r\n 1987          78            7.978         13.9          2.2           0.51 \r\n 1987          79            12.472        16.7          6.7           0 \r\n 1987          80            13.754        17.8          5             0 \r\n 1987          81            16.568        19.4          0.6           0 \r\n 1987          82            14.569        22.2          8.9           0 \r\n 1987          83            10.186        20.6          8.3           4.06 \r\n 1987          84            6.208         10.6          3.9           0 \r\n 1987          85            9.193         7.8           1.7           0 \r\n 1987          86            15.041        13.3         -2.2           0 \r\n 1987          87            15.161        12.2         -0.6           6.6 \r\n 1987          88            11.277        0            -7.2           7.37 \r\n 1987          89            17.583       -1.7          -12.2          0 \r\n 1987          90            18.331        6.1          -9.4           0 \r\n 1987          91            13.979        5.6          -5             0 \r\n 1987          92            18.055        3.9          -5.6           0 \r\n 1987          93            21.423        7.2          -6.1           0 \r\n 1987          94            22.944        12.2         -3.3           0 \r\n 1987          95            23.351        16.7         -0.6           0 \r\n 1987          96            24.075        18.9          0.6           0 \r\n 1987          97            24.486        22.2          3.3           0 \r\n 1987          98            24.945        23.9          5             0 \r\n 1987          99            22.189        25            4.4           0 \r\n 1987          100           21.521        23.9          5             1.02 \r\n 1987          101           14.718        17.2          0.6           4.57 \r\n 1987          102           19.161        12.2          1.7           0 \r\n 1987          103           12.449        18.3          7.8           5.08 \r\n 1987          104           4.196         10.6          7.2           37.34 \r\n 1987          105           4.791         11.1          7.8           0.76 \r\n 1987          106           20.149        15.6          3.3           0 \r\n 1987          107           22.71         27.2          6.7           0 \r\n 1987          108           21.574        26.1          9.4           0 \r\n 1987          109           19.872        30            13.3          0 \r\n 1987          110           19.729        29.4          13.9          0 \r\n 1987          111           22.175        33.3          5.6           0 \r\n 1987          112           4.176         7.8           4.4           2.54 \r\n 1987          113           10.732        9.4           4.4           3.56 \r\n 1987          114           20.593        21.1          6.7           0 \r\n 1987          115           22.053        27.8          7.2           0 \r\n 1987          116           22.929        29.4          9.4           0 \r\n 1987          117           21.62         29.4          13.3          0 \r\n 1987          118           24.415        26.7          5             0 \r\n 1987          119           22.944        30            6.1           0 \r\n 1987          120           23.993        27.8          6.1           0 \r\n 1987          121           22.986        32.2          6.1           0 \r\n 1987          122           23.488        31.7          12.2          0.51 \r\n 1987          123           13.222        18.9          9.4           11.43 \r\n 1987          124           11.903        19.4          7.2           0 \r\n 1987          125           20.674        19.4          6.1           0 \r\n 1987          126           23.65         26.7          7.8           0 \r\n 1987          127           25.231        26.7          8.3           0 \r\n 1987          128           25.704        27.8          8.3           0 \r\n 1987          129           23.497        30.6          13.3          0 \r\n 1987          130           20.957        32.2          16.1          0 \r\n 1987          131           18.734        31.1          18.3          0 \r\n 1987          132           25.414        27.8          7.2           0 \r\n 1987          133           24.935        30.6          8.3           0 \r\n 1987          134           20.459        30            17.8          0 \r\n 1987          135           24.459        26.1          9.4           0 \r\n 1987          136           24.137        30            8.9           0 \r\n 1987          137           23.493        32.2          12.2          0 \r\n 1987          138           19.6          30.6          16.7          10.16 \r\n 1987          139           15.551        28.3          13.9          0.76 \r\n 1987          140           13.121        28.3          17.2          2.79 \r\n 1987          141           17.447        26.1          16.1          1.78 \r\n 1987          142           21.36         16.7          5.6           0 \r\n 1987          143           16.958        20.6          7.8           0 \r\n 1987          144           16.905        20.6          9.4           0 \r\n 1987          145           14.936        22.8          10            0 \r\n 1987          146           11.982        24.4          15.6          25.65 \r\n 1987          147           11.068        25.6          16.1          11.18 \r\n 1987          148           11.234        26.1          16.7          5.59 \r\n 1987          149           11.399        25.6          16.7          12.7 \r\n 1987          150           14.868        27.2          14.4          0 \r\n 1987          151           16.19         27.2          14.4          9.14 \r\n 1987          152           22.134        29.4          15.6          0 \r\n 1987          153           18.006        28.9          15            12.95 \r\n 1987          154           24.245        23.3          10            0 \r\n 1987          155           29.059        25.6          9.4           0 \r\n 1987          156           26.385        28.9          13.3          0 \r\n 1987          157           26.196        31.1          14.4          0 \r\n 1987          158           22.428        32.2          18.9          0 \r\n 1987          159           21.89         32.2          22.8          0 \r\n 1987          160           23.864        30.6          16.1          0 \r\n 1987          161           17.404        22.8          13.3          2.03 \r\n 1987          162           14.892        28.3          15.6          0.51 \r\n 1987          163           26.555        33.9          16.7          0 \r\n 1987          164           27.808        36.7          16.7          0 \r\n 1987          165           26.183        36.1          20.6          0 \r\n 1987          166           26.003        36.7          18.9          0 \r\n 1987          167           26.183        32.8          16.7          0 \r\n 1987          168           23.475        32.8          20            1.02 \r\n 1987          169           23.655        32.8          19.4          0 \r\n 1987          170           16.974        31.1          19.4          3.3 \r\n 1987          171           18.057        28.3          19.4          13.46 \r\n 1987          172           15.168        28.9          17.8          0 \r\n 1987          173           23.294        31.7          18.9          0 \r\n 1987          174           23.113        31.7          18.9          0 \r\n 1987          175           25.642        30.6          17.2          0 \r\n 1987          176           18.419        29.4          16.1          34.04 \r\n 1987          177           26.906        26.7          11.1          0 \r\n 1987          178           28.17         26.7          9.4           0 \r\n 1987          179           26.544        29.4          13.3          0 \r\n 1987          180           17.335        28.3          17.2          9.65 \r\n 1987          181           26.183        26.7          13.3          0 \r\n 1987          182           28.359        26.7          12.8          0 \r\n 1987          183           27.268        30.6          13.9          0 \r\n 1987          184           26.515        29.4          16.1          0 \r\n 1987          185           25.011        29.4          15            0 \r\n 1987          186           22.002        28.3          17.2          0 \r\n 1987          187           23.883        31.7          17.8          1.02 \r\n 1987          188           18.617        32.2          17.2          28.96 \r\n 1987          189           14.2          27.2          18.3          11.43 \r\n 1987          190           15.508        27.8          17.8          2.54 \r\n 1987          191           14.2          27.8          18.9          3.05 \r\n 1987          192           17.563        30.6          22.2          0 \r\n 1987          193           17.19         29.4          17.2          58.67 \r\n 1987          194           22.648        23.9          12.8          0 \r\n 1987          195           25.061        24.4          11.7          2.79 \r\n 1987          196           20.049        26.1          11.1          2.29 \r\n 1987          197           26.546        30            15.6          0 \r\n 1987          198           22.132        30            21.1          0 \r\n 1987          199           17.337        29.4          20.6          7.87 \r\n 1987          200           14.939        31.7          20            0 \r\n 1987          201           18.259        32.2          23.9          0 \r\n 1987          202           21.621        31.7          20            0 \r\n 1987          203           21.071        30            18.9          0 \r\n 1987          204           21.804        31.1          19.4          0 \r\n 1987          205           21.297        33.3          21.7          0 \r\n 1987          206           18.931        33.3          18.3          2.79 \r\n 1987          207           22.753        33.9          21.1          0 \r\n 1987          208           21.879        33.9          21.7          0 \r\n 1987          209           23.868        33.9          20.6          0 \r\n 1987          210           23.145        34.4          21.1          0 \r\n 1987          211           22.811        35            22.8          0 \r\n 1987          212           23.17         35            20.6          0 \r\n 1987          213           24.829        35.6          22.2          0 \r\n 1987          214           22.273        35.6          22.8          0 \r\n 1987          215           20.505        33.9          21.7          7.37 \r\n 1987          216           15.451        26.1          15.6          0 \r\n 1987          217           26.336        26.7          12.8          0 \r\n 1987          218           24.581        30            15.6          0 \r\n 1987          219           20.577        30            17.2          0 \r\n 1987          220           10.812        25.6          18.3          66.55 \r\n 1987          221           16.972        27.8          14.4          2.54 \r\n 1987          222           22.688        29.4          16.7          0 \r\n 1987          223           22.359        29.4          16.1          0 \r\n 1987          224           19.951        27.8          17.2          15.75 \r\n 1987          225           10.491        25.6          18.9          35.31 \r\n 1987          226           10.931        28.9          20.6          1.27 \r\n 1987          227           15.201        31.1          19.4          3.56 \r\n 1987          228           15.773        31.1          18.9          8.64 \r\n 1987          229           22.048        28.9          16.7          0 \r\n 1987          230           14.989        26.7          15            39.62 \r\n 1987          231           22.567        24.4          12.2          0 \r\n 1987          232           21.738        25            12.2          0 \r\n 1987          233           15.384        32.8          18.3          1.78 \r\n 1987          234           23.577        32.2          15            0 \r\n 1987          235           20.586        20.6          9.4           0 \r\n 1987          236           19.424        21.1          10            0 \r\n 1987          237           9.89          16.7          10.6          61.21 \r\n 1987          238           5.769         16.7          12.2          70.87 \r\n 1987          239           9.327         20.6          13.9          0 \r\n 1987          240           19.472        20.6          11.1          0 \r\n 1987          241           23.879        28.3          9.4           0 \r\n 1987          242           15.919        27.8          14.4          5.59 \r\n 1987          243           22.09         21.1          9.4           0 \r\n 1987          244           23.219        26.1          11.7          0 \r\n 1987          245           21.191        26.1          10.6          0 \r\n 1987          246           20.302        23.9          10            0 \r\n 1987          247           20.151        30.6          13.9          0 \r\n 1987          248           18.533        30            17.2          0 \r\n 1987          249           13.576        30            15.6          3.3 \r\n 1987          250           13.576        26.7          13.9          9.4 \r\n 1987          251           17.82         21.7          12.8          0 \r\n 1987          252           19.848        22.8          8.3           0 \r\n 1987          253           17.54         23.9          13.3          0.76 \r\n 1987          254           16.965        23.3          11.7          0 \r\n 1987          255           18.118        20.6          7.8           0 \r\n 1987          256           12.126        22.2          9.4           2.29 \r\n 1987          257           16.421        26.7          12.2          0 \r\n 1987          258           10.617        26.1          13.9          20.83 \r\n 1987          259           7.023         22.2          15.6          8.89 \r\n 1987          260           10.534        23.9          13.9          0 \r\n 1987          261           13.935        22.2          12.8          0 \r\n 1987          262           16.722        21.1          6.7           0.76 \r\n 1987          263           15.068        18.9          7.2           1.27 \r\n 1987          264           15.068        18.9          8.9           0 \r\n 1987          265           15.633        19.4          8.3           0 \r\n 1987          266           17.69         26.7          6.7           0 \r\n 1987          267           17.548        26.1          10.6          0 \r\n 1987          268           17.548        25            7.2           0 \r\n 1987          269           16.595        28.3          10            0 \r\n 1987          270           14.572        28.9          13.9          0 \r\n 1987          271           9.903         28.3          13.9          5.08 \r\n 1987          272           12.846        22.8          11.7          0 \r\n 1987          273           14.996        21.1          7.2           0 \r\n 1987          274           16.191        28.3          5.6           0 \r\n 1987          275           16.845        26.7          4.4           0 \r\n 1987          276           15.792        17.2         -2.2           0 \r\n 1987          277           15.66         25            4.4           0 \r\n 1987          278           12.006        22.2          11.1          0 \r\n 1987          279           11.775        16.1          5             0 \r\n 1987          280           13.845        12.2         -1.1           0 \r\n 1987          281           14.625        17.8         -1.7           0 \r\n 1987          282           12.957        16.1          2.8           0 \r\n 1987          283           8.394         7.2           0             0 \r\n 1987          284           14.244        11.1         -7.2           0 \r\n 1987          285           14.372        20           -3.3           0 \r\n 1987          286           14.625        23.3          0.6           0 \r\n 1987          287           11.622        20            10            0.51 \r\n 1987          288           8.373         21.7          8.3           0 \r\n 1987          289           6.317         17.2          8.3           23.37 \r\n 1987          290           8.918         15            3.3           0 \r\n 1987          291           9.698         15            3.9           0 \r\n 1987          292           10.803        12.2          0             0 \r\n 1987          293           9.002         11.1         -0.6           0 \r\n 1987          294           9.367         7.8          -3.3           0 \r\n 1987          295           9.124         13.3          2.8           0 \r\n 1987          296           11.572        11.7         -3.9           0 \r\n 1987          297           9.764         11.1         -0.6           1.27 \r\n 1987          298           10.272        9.4          -3.9           0 \r\n 1987          299           6.569         11.1          4.4           1.78 \r\n 1987          300           8.993         11.1          0.6           0 \r\n 1987          301           11.005        13.9         -3.3           0 \r\n 1987          302           10.668        18.3          0.6           0 \r\n 1987          303           10.785        22.2          3.3           0 \r\n 1987          304           9.496         20.6          6.1           1.78 \r\n 1987          305           3.948         16.7          9.4           4.32 \r\n 1987          306           5.109         20            13.9          0.51 \r\n 1987          307           5.061         20.6          13.3          0 \r\n 1987          308           8.396         16.7          7.2           0 \r\n 1987          309           9.682         12.8         -1.7           0 \r\n 1987          310           7.86          16.1          4.4           0 \r\n 1987          311           5.696         13.9          2.2           8.89 \r\n 1987          312           5.415         13.9          2.8           0 \r\n 1987          313           8.009         5            -3.9           0 \r\n 1987          314           8.601         6.1          -5.6           0 \r\n 1987          315           8.936         11.1         -6.1           0 \r\n 1987          316           9.271         16.7         -1.7           0 \r\n 1987          317           8.405         13.3          2.2           0 \r\n 1987          318           8.626         16.7         -0.6           0 \r\n 1987          319           5.861         15            8.3           8.13 \r\n 1987          320           2.737         13.3          10            9.4 \r\n 1987          321           5.146         10.6          0             6.86 \r\n 1987          322           6.46          7.2          -3.9           0 \r\n 1987          323           6.286         7.8           0.6           0 \r\n 1987          324           7.803         5.6          -8.3           0 \r\n 1987          325           7.912         8.9          -7.8           0 \r\n 1987          326           7.509         12.8         -1.7           0 \r\n 1987          327           6.973         10           -1.1           0 \r\n 1987          328           4.827         3.3          -3.9           0 \r\n 1987          329           3.325         3.9           0             0 \r\n 1987          330           2.123         3.9           1.1           0 \r\n 1987          331           1.911         2.2           0             3.3 \r\n 1987          332           1.486         2.2          -0.6           26.42 \r\n 1987          333           1.699         2.8          -0.6           1.27 \r\n 1987          334           2.732         0.6          -2.8           0 \r\n 1987          335           1.681        -1.7          -3.3           0 \r\n 1987          336           5.043         2.2          -6.1           0 \r\n 1987          337           4.097         0.6          -2.8           0 \r\n 1987          338           6.514         1.1          -9.4           0 \r\n 1987          339           6.445         3.3          -6.1           0 \r\n 1987          340           3.742         1.7          -0.6           0 \r\n 1987          341           1.767         2.2          -0.6           0 \r\n 1987          342           3.534         8.9           1.1           3.56 \r\n 1987          343           4.366         8.9           1.1           2.79 \r\n 1987          344           7.381         9.4          -5.6           0 \r\n 1987          345           6.445         8.3           1.7           1.27 \r\n 1987          346           5.451         5.6          -0.6           0 \r\n 1987          347           5.04          3.3          -1.7           0 \r\n 1987          348           5.143         0.6          -5.6           0 \r\n 1987          349           2.88         -4.4          -7.2           7.62 \r\n 1987          350           6.48         -5            -11.7          0 \r\n 1987          351           7.92         -4.4          -15            0 \r\n 1987          352           7.611         1.7          -7.8           0 \r\n 1987          353           3.394         1.1          -0.6           1.52 \r\n 1987          354           4.834         1.7          -5.6           3.05 \r\n 1987          355           7.817         3.3          -8.9           0 \r\n 1987          356           7.405         3.9          -2.8           0 \r\n 1987          357           6.274         3.3          -2.2           0 \r\n 1987          358           4.32          2.2          -3.9           2.79 \r\n 1987          359           7.2          -2.2          -10            0 \r\n 1987          360           7.714        -0.6          -12.8          0 \r\n 1987          361           5.554        -0.6          -7.8           8.89 \r\n 1987          362           2.983        -1.1          -3.9           4.83 \r\n 1987          363           4.217        -3.3          -9.4           0 \r\n 1987          364           6.549         2.2          -7.2           0 \r\n 1987          365           8.524         1.7          -14.4          0 \r\n 1988          1             7.381        -8.9          -20            0 \r\n 1988          2             7.901        -2.2          -17.8          0 \r\n 1988          3             6.861        -3.9          -11.7          0 \r\n 1988          4             7.797        -8.3          -21.1          0 \r\n 1988          5             5.51         -18.9         -25            0 \r\n 1988          6             6.619        -18.9         -26.7          0 \r\n 1988          7             7.354        -10.6         -22.2          0 \r\n 1988          8             6.514        -12.2         -18.3          0 \r\n 1988          9             6.724        -14.4         -23.3          0 \r\n 1988          10            8.195        -6.1          -22.2          0 \r\n 1988          11            7.538        -1.1          -7.8           0 \r\n 1988          12            8.387         1.1          -13.3          0 \r\n 1988          13            9.237        -10           -22.2          0 \r\n 1988          14            8.6          -0.6          -17.2          0 \r\n 1988          15            8.387         3.9          -9.4           0 \r\n 1988          16            6.758         4.4           0.6           0 \r\n 1988          17            5.9           2.8          -2.8           0 \r\n 1988          18            3.433        -0.6          -2.2           0 \r\n 1988          19            2.059         1.1          -1.7           7.62 \r\n 1988          20            4.66          0.6          -8.3           0 \r\n 1988          21            5.636        -5.6          -10            0 \r\n 1988          22            7.773        -2.2          -11.7          0 \r\n 1988          23            9.525         0.6          -12.8          1.78 \r\n 1988          24            10.511        0.6          -16.1          0 \r\n 1988          25            10.949        0            -21.1          0 \r\n 1988          26            9.069        -11.1         -23.3          0 \r\n 1988          27            10.064       -1.1          -14.4          0 \r\n 1988          28            9.383         1.7          -9.4           0 \r\n 1988          29            9.606         9.4          -3.9           0 \r\n 1988          30            7.149         11.1          3.9           0 \r\n 1988          31            11.055        7.8          -9.4           0 \r\n 1988          32            9.475        -8.3          -16.7          0 \r\n 1988          33            9.024        -7.8          -20            0 \r\n 1988          34            8.885        -7.8          -11.7          0 \r\n 1988          35            8.999        -10.6         -17.2          0 \r\n 1988          36            10.121       -13.9         -23.3          0 \r\n 1988          37            10.236       -8.3          -20.6          0 \r\n 1988          38            9.661        -6.1          -9.4           0 \r\n 1988          39            11.264        1.1          -12.2          0 \r\n 1988          40            12.657        1.7          -15.6          0 \r\n 1988          41            8.792        -6.7          -18.3          4.32 \r\n 1988          42            12.075       -17.2         -27.2          0 \r\n 1988          43            13.372       -12.8         -28.3          0.51 \r\n 1988          44            11.005       -3.9          -11.1          0 \r\n 1988          45            8.993        -1.7          -6.1           0 \r\n 1988          46            13.497       -5            -17.8          0 \r\n 1988          47            13.497        5            -10.6          0 \r\n 1988          48            12.778        6.1          -5.6           0 \r\n 1988          49            12.416        7.8          -2.2           0 \r\n 1988          50            11.192        5.6          -2.2           0 \r\n 1988          51            14.112        2.8          -9.4           0 \r\n 1988          52            13.503        5.6          -9.4           0 \r\n 1988          53            13.258        8.3           3.3           0 \r\n 1988          54            13.377        3.9          -6.7           0 \r\n 1988          55            11.271       -1.1          -7.2           0 \r\n 1988          56            15.121        3.9          -12.8          0 \r\n 1988          57            15.996        15.6         -1.7           0 \r\n 1988          58            15.507        8.9          -2.2           0 \r\n 1988          59            12.607        7.8           5             0 \r\n 1988          60            13.992        10.6          0             0 \r\n 1988          61            13.081        15           -2.8           0 \r\n 1988          62            14.486        13.3         -3.3           0 \r\n 1988          63            13.837        1.7          -6.7           0 \r\n 1988          64            9.814         3.9          -6.7           0 \r\n 1988          65            12.976        7.8          -5             0 \r\n 1988          66            12.868        14.4         -4.4           0 \r\n 1988          67            14.848        13.9         -1.1           0 \r\n 1988          68            14.753        11.7          1.7           0 \r\n 1988          69            12.534        9.4          -1.1           0 \r\n 1988          70            11.969        11.7         -3.9           0 \r\n 1988          71            14.766        18.3          6.7           0 \r\n 1988          72            13.875        16.7         -5.6           1.02 \r\n 1988          73            15.341       -3.9          -11.1          0 \r\n 1988          74            11.261       -1.7          -11.7          0 \r\n 1988          75            10.806       -1.7          -10.6          0 \r\n 1988          76            12.042        1.7          -3.9           0 \r\n 1988          77            8.831         3.9          -4.4           0 \r\n 1988          78            10.291        6.7          -6.7           0 \r\n 1988          79            15.609        13.9         -3.9           0 \r\n 1988          80            17.834        12.2         -5             0 \r\n 1988          81            16.202        11.7         -4.4           0 \r\n 1988          82            15.863        27.8          1.1           0 \r\n 1988          83            17.53         26.7         -2.8           0 \r\n 1988          84            18.122        23.9          7.2           6.1 \r\n 1988          85            15.4          16.1          6.1           0 \r\n 1988          86            11.7          13.3          7.8           0 \r\n 1988          87            15.041        20           -1.7           0 \r\n 1988          88            17.327        18.9          5             2.29 \r\n 1988          89            16.249        7.8           0.6           0 \r\n 1988          90            10.065        16.1         -5             0 \r\n 1988          91            17.231        14.4         -3.3           0 \r\n 1988          92            16.138        12.2          2.2           0 \r\n 1988          93            14.686        15.6          5.6           19.56 \r\n 1988          94            9.297         12.8          2.8           0.51 \r\n 1988          95            10.997        26.7          2.2           0 \r\n 1988          96            19.142        26.1          10.6          0 \r\n 1988          97            19.698        16.7          5             6.1 \r\n 1988          98            12.858        26.7          1.7           0 \r\n 1988          99            21.362        26.7          7.8           0 \r\n 1988          100           20.811        26.1          3.3           0 \r\n 1988          101           20.966        12.2          0.6           0 \r\n 1988          102           14.579        16.1          0.6           0 \r\n 1988          103           19.439        20.6          1.7           0 \r\n 1988          104           21.681        21.7          3.3           0 \r\n 1988          105           20.982        21.1          0.6           0.76 \r\n 1988          106           21.418        13.3         -3.3           0 \r\n 1988          107           20.29         19.4          0             0 \r\n 1988          108           22            19.4          7.2           0 \r\n 1988          109           20.013        13.3         -3.9           0 \r\n 1988          110           21.873        15.6         -3.9           0 \r\n 1988          111           22.302        16.1          3.3           1.02 \r\n 1988          112           18.719        16.1          1.1           0 \r\n 1988          113           18.431        8.3           1.7           3.81 \r\n 1988          114           9.136         9.4           0.6           1.52 \r\n 1988          115           11.602        19.4         -2.2           0 \r\n 1988          116           22.637        20.6          3.9           0 \r\n 1988          117           21.907        18.9          2.2           10.16 \r\n 1988          118           14.708        12.2          1.1           0 \r\n 1988          119           11.913        18.9          1.7           0 \r\n 1988          120           21.179        22.2          3.3           0 \r\n 1988          121           23.548        25            5.6           0 \r\n 1988          122           22.554        26.1          6.7           0 \r\n 1988          123           23.799        25.6          11.7          0 \r\n 1988          124           22.554        25            10            0 \r\n 1988          125           20.361        23.3          5.6           0 \r\n 1988          126           24.746        27.8          11.1          0 \r\n 1988          127           24.276        27.8          8.9           0 \r\n 1988          128           25.231        29.4          17.2          1.27 \r\n 1988          129           22.235        27.8          12.2          15.24 \r\n 1988          130           15.242        18.9          13.3          3.81 \r\n 1988          131           12.384        25            7.8           0 \r\n 1988          132           22.386        27.8          11.1          0 \r\n 1988          133           25.254        29.4          11.7          0 \r\n 1988          134           25.254        29.4          7.8           0 \r\n 1988          135           25.894        33.9          11.7          0 \r\n 1988          136           24.78         33.3          11.1          0 \r\n 1988          137           25.907        26.7          7.8           0 \r\n 1988          138           24.941        23.9          3.9           0 \r\n 1988          139           25.432        26.7          11.1          0 \r\n 1988          140           23.002        27.8          12.8          0 \r\n 1988          141           22.516        30            13.9          0 \r\n 1988          142           23.969        30            12.2          0 \r\n 1988          143           24.785        26.1          16.1          21.34 \r\n 1988          144           11.74         25            16.1          0.51 \r\n 1988          145           10.176        25.6          12.8          0 \r\n 1988          146           23.142        25            8.3           0 \r\n 1988          147           24.784        29.4          10.6          0 \r\n 1988          148           23.789        28.9          15            2.03 \r\n 1988          149           22.302        32.2          15.6          0 \r\n 1988          150           21.476        31.1          15            0 \r\n 1988          151           22.137        31.1          16.7          0 \r\n 1988          152           21.146        31.7          15            0 \r\n 1988          153           24.383        31.7          16.7          0 \r\n 1988          154           24.067        30            16.7          2.79 \r\n 1988          155           23.532        28.3          16.7          0 \r\n 1988          156           20.68         26.7          12.2          0 \r\n 1988          157           24.424        28.3          10.6          0 \r\n 1988          158           27.811        30.6          11.7          0 \r\n 1988          159           28.888        32.2          12.8          0 \r\n 1988          160           28.529        32.2          18.3          22.35 \r\n 1988          161           17.404        30.6          8.9           0 \r\n 1988          162           29.426        25.6          10            0 \r\n 1988          163           27.452        28.3          10            0 \r\n 1988          164           28.17         31.1          14.4          0 \r\n 1988          165           24.919        33.3          15            0 \r\n 1988          166           25.642        33.3          17.2          0 \r\n 1988          167           24.558        32.2          15.6          1.52 \r\n 1988          168           18.96         29.4          13.3          0 \r\n 1988          169           27.989        28.3          14.4          26.42 \r\n 1988          170           24.377        31.7          15.6          0 \r\n 1988          171           16.432        35.6          20            0 \r\n 1988          172           22.933        36.1          19.4          0 \r\n 1988          173           25.461        37.8          23.9          0 \r\n 1988          174           23.294        36.7          22.8          0 \r\n 1988          175           21.308        33.9          16.1          0 \r\n 1988          176           25.461        37.2          20            0 \r\n 1988          177           23.475        36.7          23.3          0 \r\n 1988          178           20.947        31.7          13.9          0 \r\n 1988          179           25.822        27.8          12.2          0 \r\n 1988          180           25.28         36.7          12.2          0 \r\n 1988          181           28.711        36.1          16.7          0 \r\n 1988          182           27.628        25.6          15            0 \r\n 1988          183           18.384        25.6          9.4           0 \r\n 1988          184           26.703        27.8          13.3          0 \r\n 1988          185           24.071        29.4          12.2          0 \r\n 1988          186           28.96         33.3          13.9          0 \r\n 1988          187           28.396        35            16.7          0 \r\n 1988          188           26.891        35            18.3          0 \r\n 1988          189           26.139        33.9          21.1          0 \r\n 1988          190           23.729        32.8          18.3          0 \r\n 1988          191           25.224        32.2          19.4          5.08 \r\n 1988          192           22.421        29.4          18.9          6.1 \r\n 1988          193           15.134        28.9          16.1          0 \r\n 1988          194           23.916        30.6          16.7          0 \r\n 1988          195           22.277        36.1          20            0 \r\n 1988          196           24.133        35            23.3          0 \r\n 1988          197           22.277        36.1          22.2          0 \r\n 1988          198           21.534        32.8          20.6          45.72 \r\n 1988          199           16.23         31.7          19.4          0 \r\n 1988          200           22.87         30            18.9          27.43 \r\n 1988          201           16.415        29.4          17.8          0 \r\n 1988          202           23.239        26.7          15.6          1.78 \r\n 1988          203           16.124        26.1          11.7          0 \r\n 1988          204           26.385        28.3          15            0 \r\n 1988          205           25.469        29.4          16.1          0 \r\n 1988          206           24.937        29.4          17.8          0 \r\n 1988          207           23.481        28.9          15            0 \r\n 1988          208           24.937        29.4          14.4          0 \r\n 1988          209           27.304        31.7          15            0 \r\n 1988          210           26.942        32.2          16.1          0 \r\n 1988          211           26.219        32.2          18.9          0 \r\n 1988          212           23.349        35            20            0 \r\n 1988          213           22.811        37.2          20.6          0 \r\n 1988          214           26.769        36.7          19.4          0 \r\n 1988          215           22.627        35            22.8          0 \r\n 1988          216           19.798        35.6          22.2          0 \r\n 1988          217           21.596        35            21.7          0 \r\n 1988          218           20.191        29.4          16.7          0 \r\n 1988          219           22.122        32.2          12.8          0 \r\n 1988          220           27.204        36.1          16.1          0 \r\n 1988          221           25.983        36.1          22.2          5.08 \r\n 1988          222           16.106        30.6          19.4          0.51 \r\n 1988          223           13.509        32.8          16.7          0 \r\n 1988          224           23.563        35.6          20.6          0 \r\n 1988          225           22.187        35.6          20.6          0 \r\n 1988          226           20.295        32.8          21.7          0 \r\n 1988          227           17.251        38.3          18.3          0 \r\n 1988          228           23.058        38.3          20            0 \r\n 1988          229           22.896        38.3          23.3          0 \r\n 1988          230           20.692        38.9          21.7          0 \r\n 1988          231           20.378        38.3          21.1          0 \r\n 1988          232           20.378        27.2          19.4          0 \r\n 1988          233           14.882        29.4          17.2          0 \r\n 1988          234           17.223        31.7          17.2          0 \r\n 1988          235           21.069        31.1          18.9          141.99 \r\n 1988          236           12.95         28.3          14.4          0 \r\n 1988          237           14.278        28.3          14.4          0 \r\n 1988          238           21.098        28.3          14.4          0 \r\n 1988          239           20.109        26.1          10.6          0 \r\n 1988          240           23.072        23.9          15            6.6 \r\n 1988          241           13.745        22.8          7.8           0 \r\n 1988          242           21.929        24.4          7.2           0 \r\n 1988          243           23.066        28.3          9.4           0 \r\n 1988          244           21.768        28.3          11.7          0 \r\n 1988          245           20.155        28.9          13.9          0 \r\n 1988          246           17.487        31.1          13.9          0 \r\n 1988          247           17.635        31.1          11.7          0.76 \r\n 1988          248           14.268        24.4          13.9          2.79 \r\n 1988          249           10.296        23.9          7.8           0 \r\n 1988          250           18.832        23.3          5.6           0 \r\n 1988          251           19.853        25.6          6.7           0 \r\n 1988          252           19.269        26.7          14.4          0 \r\n 1988          253           16.661        26.7          6.7           0 \r\n 1988          254           20.703        29.4          10            0 \r\n 1988          255           20.128        30.6          13.3          0 \r\n 1988          256           17.833        29.4          16.1          0 \r\n 1988          257           14.552        23.3          10.6          0 \r\n 1988          258           15.147        26.7          12.2          0 \r\n 1988          259           16.704        26.7          14.4          1.52 \r\n 1988          260           10.674        27.2          16.1          10.67 \r\n 1988          261           7.444         32.8          17.2          0 \r\n 1988          262           13.099        30.6          21.1          0.76 \r\n 1988          263           11.566        26.1          9.4           31.24 \r\n 1988          264           10.23         21.1          8.9           1.02 \r\n 1988          265           10.092        21.7          8.3           13.21 \r\n 1988          266           14.399        26.7          16.1          0 \r\n 1988          267           9.188         20            7.2           0 \r\n 1988          268           16.323        21.1          6.1           0 \r\n 1988          269           15.915        26.1          7.2           0 \r\n 1988          270           16.191        27.2          11.1          0 \r\n 1988          271           15.381        27.2          13.9          0 \r\n 1988          272           12.846        21.7          13.9          9.65 \r\n 1988          273           6.022         20.6          15.6          8.89 \r\n 1988          274           3.716         20            13.3          2.79 \r\n 1988          275           6.105         20            12.8          0 \r\n 1988          276           9.607         20            7.2           0 \r\n 1988          277           12.766        17.2          2.2           0 \r\n 1988          278           14.485        14.4         -0.6           0 \r\n 1988          279           14.224        12.2         -1.7           0 \r\n 1988          280           14.104        13.9          1.1           0 \r\n 1988          281           13.974        15.6          0.6           0 \r\n 1988          282           14.368        15.6          2.2           0 \r\n 1988          283           13.47         20            3.3           0 \r\n 1988          284           13.863        20.6          8.9           0 \r\n 1988          285           12.972        20.6          2.2           0 \r\n 1988          286           13.238        13.9          0             0 \r\n 1988          287           13.616        20            1.1           0 \r\n 1988          288           13.872        22.2          7.8           0 \r\n 1988          289           12.372        25            11.7          0 \r\n 1988          290           10.652        24.4          9.4           0 \r\n 1988          291           11.395        16.7          10            3.05 \r\n 1988          292           5.401         13.3         -0.6           0 \r\n 1988          293           11.785        14.4         -1.1           0 \r\n 1988          294           11.557        10            4.4           1.27 \r\n 1988          295           7.299         12.8          5             2.54 \r\n 1988          296           4.744         14.4         -2.2           0 \r\n 1988          297           11.813        14.4          5             0 \r\n 1988          298           9.764         13.3         -2.2           0 \r\n 1988          299           10.391        12.2         -2.8           0 \r\n 1988          300           10.63         13.9         -4.4           0 \r\n 1988          301           11.36         14.4          6.7           0 \r\n 1988          302           10.177        8.9          -5             0 \r\n 1988          303           10.433        5            -3.9           0 \r\n 1988          304           7.854         8.3          -7.2           0 \r\n 1988          305           9.964         18.9         -3.3           0 \r\n 1988          306           10.451        16.7          1.7           0 \r\n 1988          307           10.103        12.8         -1.7           0 \r\n 1988          308           9.201         19.4          0.6           0 \r\n 1988          309           9.661         15.6          7.8           2.03 \r\n 1988          310           7.746         9.4          -0.6           3.3 \r\n 1988          311           4.67          8.3          -1.7           0 \r\n 1988          312           6.037         10           -2.2           0 \r\n 1988          313           8.235         13.3         -1.1           0 \r\n 1988          314           8.911         10            2.8           0 \r\n 1988          315           6.814         6.1          -2.2           0 \r\n 1988          316           6.925         5            -8.3           0 \r\n 1988          317           8.154         5.6           1.1           17.02 \r\n 1988          318           3.981         13.9         -0.6           0 \r\n 1988          319           5.308         10.6          1.1           0 \r\n 1988          320           7.631         18.9          8.3           11.18 \r\n 1988          321           7.117         12.2         -2.2           5.84 \r\n 1988          322           6.022         8.3          -5             0 \r\n 1988          323           6.131         11.1         -4.4           0 \r\n 1988          324           7.045         8.3          -0.6           0 \r\n 1988          325           5.961         0            -3.3           0 \r\n 1988          326           5.202         1.7          -10.6          0 \r\n 1988          327           6.436         9.4          -5.6           0 \r\n 1988          328           7.08          14.4         -1.7           0 \r\n 1988          329           7.509         16.1         -1.7           0 \r\n 1988          330           7.402         12.8          1.1           0 \r\n 1988          331           6.476         6.7           1.7           8.89 \r\n 1988          332           2.442         1.7          -5             0 \r\n 1988          333           4.565        -1.1          -11.7          0 \r\n 1988          334           7.326         0.6          -2.2           0.76 \r\n 1988          335           5.043         0            -6.1           0 \r\n 1988          336           5.358         1.7          -11.1          0 \r\n 1988          337           7.564         14.4         -3.3           0 \r\n 1988          338           8.195         7.2           1.1           0 \r\n 1988          339           7.775         3.3          -7.8           0 \r\n 1988          340           7.589         11.1         -3.3           0 \r\n 1988          341           7.381         8.9          -2.2           0 \r\n 1988          342           7.069         3.3          -4.4           0 \r\n 1988          343           6.549        -2.8          -11.1          0 \r\n 1988          344           6.445         3.3          -11.7          0 \r\n 1988          345           7.381         0            -15            0 \r\n 1988          346           7.589        -9.4          -18.3          0 \r\n 1988          347           6.171         0            -11.7          0 \r\n 1988          348           6.48          7.8          -3.3           0 \r\n 1988          349           6.377         4.4          -2.8           0 \r\n 1988          350           5.554        -2.8          -16.1          0 \r\n 1988          351           6.788         0            -19.4          0 \r\n 1988          352           6.891        -2.2          -10            0 \r\n 1988          353           5.04          11.7         -11.7          0 \r\n 1988          354           6.994         12.2         -2.8           0 \r\n 1988          355           6.48          11.1         -2.8           3.81 \r\n 1988          356           4.423         1.1          -6.7           0 \r\n 1988          357           5.451         8.9          -2.8           0 \r\n 1988          358           5.657         8.9          -1.7           0 \r\n 1988          359           5.04          5            -5.6           5.08 \r\n 1988          360           4.217        -3.9          -13.9          0 \r\n 1988          361           5.657         0            -8.3           7.37 \r\n 1988          362           4.217         0            -11.7          3.3 \r\n 1988          363           5.143        -8.9          -14.4          0 \r\n 1988          364           4.525         0            -17.2          0 \r\n 1988          365           7.693         1.7          -9.4           0 \r\n 1988          366           7.381         1.1          -9.4           0 \r\n 1989          1             5.821         0.6          -6.1           0 \r\n 1989          2             7.277        -4.4          -14.4          0 \r\n 1989          3             6.861         0            -7.8           0 \r\n 1989          4             8.316         7.2          -11.1          0 \r\n 1989          5             7.589         4.4          -1.7           7.37 \r\n 1989          6             1.576         0            -2.2           8.38 \r\n 1989          7             6.094         0            -10.6          0 \r\n 1989          8             7.67         -10.6         -16.1          0 \r\n 1989          9             8.195         0            -18.3          0 \r\n 1989          10            8.195         0            -11.7          0 \r\n 1989          11            6.583         1.1          -8.9           0 \r\n 1989          12            6.901         0            -10            0 \r\n 1989          13            8.812         4.4          -11.1          0 \r\n 1989          14            8.6           4.4          -6.1           0 \r\n 1989          15            7.007         3.9          -3.9           0 \r\n 1989          16            8.796         6.1          -7.2           0 \r\n 1989          17            9.118         10           -4.4           0 \r\n 1989          18            7.938         7.2           0.6           0 \r\n 1989          19            6.611         7.2          -1.7           0 \r\n 1989          20            7.153         3.9          -5.6           0 \r\n 1989          21            7.803         7.8          -6.1           0 \r\n 1989          22            8.321         11.7         -2.2           0 \r\n 1989          23            8.43          9.4          -3.3           0 \r\n 1989          24            6.131         4.4          -1.7           0 \r\n 1989          25            1.659         0.6           0             2.03 \r\n 1989          26            7.41          0            -7.2           0 \r\n 1989          27            9.622         12.8         -4.4           0 \r\n 1989          28            8.154         9.4           0.6           3.05 \r\n 1989          29            2.122         1.7           0             7.11 \r\n 1989          30            7.26          10           -1.7           0 \r\n 1989          31            9.363         15            2.2           0 \r\n 1989          32            10.942        11.1         -13.9          0 \r\n 1989          33            8.122        -9.4          -19.4          0.51 \r\n 1989          34            9.455        -19.4         -27.8          0 \r\n 1989          35            5.809        -20           -23.9          1.02 \r\n 1989          36            6.326        -18.3         -22.8          0.51 \r\n 1989          37            10.121       -11.7         -23.9          0 \r\n 1989          38            11.271       -5.6          -19.4          0 \r\n 1989          39            11.961       -6.1          -18.3          0 \r\n 1989          40            13.006       -2.8          -21.7          0 \r\n 1989          41            13.364        0.6          -15.6          0 \r\n 1989          42            12.543        0.6          -10.6          0 \r\n 1989          43            12.188        0.6          -10.6          0 \r\n 1989          44            6.863         0.6          -6.1           2.29 \r\n 1989          45            13.49        -1.7          -15.6          0 \r\n 1989          46            11.825       -2.2          -10.6          0 \r\n 1989          47            13.138       -3.9          -16.7          0 \r\n 1989          48            11.934       -3.9          -13.9          0 \r\n 1989          49            8.438        -4.4          -8.3           0 \r\n 1989          50            11.922       -5.6          -15.6          0 \r\n 1989          51            6.204        -5            -8.9           3.3 \r\n 1989          52            7.857        -3.9          -7.2           0 \r\n 1989          53            13.626       -5.6          -15.6          0 \r\n 1989          54            15.731       -8.3          -23.3          0 \r\n 1989          55            15.854        0.6          -15            0 \r\n 1989          56            14.496        5.6          -6.7           0 \r\n 1989          57            14.371        3.3          -8.3           0 \r\n 1989          58            14.372       -2.2          -13.3          0 \r\n 1989          59            13.868       -0.6          -11.7          0 \r\n 1989          60            9.621        -3.9          -11.7          0 \r\n 1989          61            7.675        -7.8          -13.3          1.52 \r\n 1989          62            8.973         0            -10.6          10.41 \r\n 1989          63            9.487         0            -11.1          5.59 \r\n 1989          64            11.123       -6.7          -15.6          0 \r\n 1989          65            13.638       -3.9          -15            0 \r\n 1989          66            12.538       -0.6          -10.6          0 \r\n 1989          67            12.645        5            -4.4           0 \r\n 1989          68            13.089        9.4          -3.3           0 \r\n 1989          69            15.101        15.6          0             0 \r\n 1989          70            15.325        15            2.2           0 \r\n 1989          71            10.152        6.7           1.1           0 \r\n 1989          72            7.107         5             0             0 \r\n 1989          73            13.081        10            0             0 \r\n 1989          74            17.175        4.4          -8.9           0 \r\n 1989          75            12.386        1.1          -3.3           0 \r\n 1989          76            11.354       -1.1          -7.2           0 \r\n 1989          77            13.644       -3.9          -13.3          0 \r\n 1989          78            15.262        2.8          -6.7           0 \r\n 1989          79            11.19         1.7          -2.2           0 \r\n 1989          80            17.951        1.7          -11.7          0 \r\n 1989          81            18.331        10           -5.6           0 \r\n 1989          82            18.951        16.7         -0.6           0 \r\n 1989          83            18.951        17.8          1.7           0 \r\n 1989          84            19.101        16.7          1.1           0 \r\n 1989          85            19.34         25.6          4.4           0 \r\n 1989          86            16.484        25.6          11.7          0 \r\n 1989          87            16.725        24.4          8.9           0 \r\n 1989          88            15.4          13.3          2.8           0 \r\n 1989          89            14.673        12.2          1.1           0.76 \r\n 1989          90            14.42         10           -1.7           0 \r\n 1989          91            15.57         12.8         -1.1           0.51 \r\n 1989          92            19.671        16.7          1.1           0 \r\n 1989          93            17.92         16.1          6.1           0.76 \r\n 1989          94            19.278        16.1          0             0 \r\n 1989          95            19.414        13.3         -2.2           0 \r\n 1989          96            19.424        12.8          0             0.76 \r\n 1989          97            19.288        11.1         -1.7           0.76 \r\n 1989          98            10.75         3.9          -3.3           10.92 \r\n 1989          99            17.641        2.8          -6.7           0 \r\n 1989          100           20.966        5.6          -6.7           0 \r\n 1989          101           22.632        10           -4.4           0 \r\n 1989          102           24.298        13.3         -6.1           0 \r\n 1989          103           25.178        20           -3.9           0 \r\n 1989          104           20.562        19.4          7.8           0 \r\n 1989          105           22.967        18.3         -0.6           0 \r\n 1989          106           21.136        22.2          8.3           0 \r\n 1989          107           21.148        21.7          2.8           0 \r\n 1989          108           16.89         13.9          2.8           0.76 \r\n 1989          109           23.017        21.1         -1.7           0 \r\n 1989          110           22.874        25.6          6.7           0 \r\n 1989          111           23.327        26.7          5.6           0 \r\n 1989          112           15.839        26.7          10            18.8 \r\n 1989          113           12.472        25            12.8          0 \r\n 1989          114           21.318        30.6          11.1          0 \r\n 1989          115           20.593        30.6          15            0 \r\n 1989          116           20.301        29.4          13.9          11.68 \r\n 1989          117           15.737        27.8          12.8          0 \r\n 1989          118           15.59         27.8          9.4           20.32 \r\n 1989          119           15.002        13.3          3.9           0 \r\n 1989          120           19.105        12.8          0.6           0 \r\n 1989          121           11.205        12.8          4.4           5.59 \r\n 1989          122           21.31         13.9          0.6           0 \r\n 1989          123           23.021        17.2          1.7           0 \r\n 1989          124           14.879        19.4          8.9           6.35 \r\n 1989          125           16.915        18.3          2.8           2.03 \r\n 1989          126           22.084        12.8         -1.7           0 \r\n 1989          127           25.704        20.6          1.7           0 \r\n 1989          128           23.023        22.2          9.4           0 \r\n 1989          129           22.545        21.7          6.1           0 \r\n 1989          130           25.244        22.8          5.6           0 \r\n 1989          131           24.768        22.8          4.4           0 \r\n 1989          132           26.213        25.6          6.7           0 \r\n 1989          133           26.373        25.6          6.7           0 \r\n 1989          134           21.738        23.9          10            0 \r\n 1989          135           24.298        26.7          8.3           0 \r\n 1989          136           24.137        28.3          12.2          0 \r\n 1989          137           21.24         27.8          13.3          0 \r\n 1989          138           12.959        25            14.4          11.18 \r\n 1989          139           12.635        25.6          13.9          14.22 \r\n 1989          140           25.108        25.6          7.8           0 \r\n 1989          141           24.132        25.6          9.4           0 \r\n 1989          142           22.176        24.4          11.1          0 \r\n 1989          143           22.502        28.3          11.1          0 \r\n 1989          144           15.756        28.9          14.4          57.15 \r\n 1989          145           24.455        27.2          10.6          0 \r\n 1989          146           20.68         22.8          10            0 \r\n 1989          147           24.119        21.1          6.7           0 \r\n 1989          148           19.163        21.1          9.4           6.6 \r\n 1989          149           15.199        31.1          13.3          2.54 \r\n 1989          150           20.155        30.6          20            0 \r\n 1989          151           22.302        29.4          13.9          0 \r\n 1989          152           17.293        22.2          12.8          0 \r\n 1989          153           24.602        28.9          11.7          0 \r\n 1989          154           17.293        28.3          13.3          19.05 \r\n 1989          155           23.532        24.4          11.7          0 \r\n 1989          156           26.206        27.2          11.1          0 \r\n 1989          157           23.864        28.9          14.4          0 \r\n 1989          158           22.428        28.9          16.1          0 \r\n 1989          159           17.225        27.8          12.8          10.67 \r\n 1989          160           18.84         18.9          10            0 \r\n 1989          161           23.684        22.2          8.3           0 \r\n 1989          162           19.916        22.8          15            0 \r\n 1989          163           17.225        27.2          17.2          0 \r\n 1989          164           28.531        26.1          8.3           0 \r\n 1989          165           24.016        20.6          8.3           0 \r\n 1989          166           26.364        21.7          6.1           0 \r\n 1989          167           29.614        25.6          8.3           0 \r\n 1989          168           26.906        26.7          11.7          0 \r\n 1989          169           16.432        26.7          16.1          2.79 \r\n 1989          170           28.17         31.7          14.4          0 \r\n 1989          171           26.725        31.7          16.7          0 \r\n 1989          172           22.933        32.2          18.9          0 \r\n 1989          173           18.419        31.7          16.1          5.33 \r\n 1989          174           13.724        25.6          15.6          2.79 \r\n 1989          175           24.558        26.1          15            5.08 \r\n 1989          176           15.529        27.2          16.7          24.64 \r\n 1989          177           14.807        27.8          18.3          18.29 \r\n 1989          178           15.529        28.3          18.3          0 \r\n 1989          179           24.016        29.4          16.1          0 \r\n 1989          180           24.016        29.4          16.7          0 \r\n 1989          181           26.003        28.9          13.3          0 \r\n 1989          182           26.598        29.4          16.7          0 \r\n 1989          183           24.635        30            17.2          0 \r\n 1989          184           25.763        31.1          17.8          0 \r\n 1989          185           26.327        33.3          18.9          0 \r\n 1989          186           27.644        33.9          19.4          0 \r\n 1989          187           28.208        34.4          17.2          0 \r\n 1989          188           25.011        34.4          21.1          0 \r\n 1989          189           25.411        35            19.4          0 \r\n 1989          190           24.85         35.6          20.6          0 \r\n 1989          191           23.356        36.1          22.8          0 \r\n 1989          192           19.058        36.1          20            3.56 \r\n 1989          193           13.079        28.3          19.4          0 \r\n 1989          194           20.977        28.3          17.8          0 \r\n 1989          195           23.576        27.8          13.9          0 \r\n 1989          196           13.923        25            16.1          3.3 \r\n 1989          197           25.618        26.7          12.8          0 \r\n 1989          198           26.743        27.8          12.2          0 \r\n 1989          199           16.784        27.2          16.1          45.47 \r\n 1989          200           12.726        24.4          16.1          2.29 \r\n 1989          201           23.792        26.7          13.9          0 \r\n 1989          202           24.736        29.4          13.9          0 \r\n 1989          203           20.705        25            15.6          0 \r\n 1989          204           21.804        27.8          15            0 \r\n 1989          205           22.207        28.9          15.6          0 \r\n 1989          206           20.387        29.4          18.9          0 \r\n 1989          207           21.479        30.6          17.8          0 \r\n 1989          208           22.241        32.8          20            0 \r\n 1989          209           22.783        31.7          19.4          0 \r\n 1989          210           19.89         30.6          19.4          7.11 \r\n 1989          211           12.573        28.3          20            0 \r\n 1989          212           18.68         28.9          19.4          0 \r\n 1989          213           23.666        28.9          16.7          0 \r\n 1989          214           24.748        30.6          15            0 \r\n 1989          215           18.207        30.6          21.7          1.78 \r\n 1989          216           17.733        35            21.7          0 \r\n 1989          217           24.932        35            16.1          6.35 \r\n 1989          218           18.435        27.8          13.3          0 \r\n 1989          219           26.332        23.3          8.3           0 \r\n 1989          220           27.029        25.6          11.1          0 \r\n 1989          221           27.017        27.8          10            0 \r\n 1989          222           25.805        28.3          12.8          0 \r\n 1989          223           24.251        28.3          12.8          0 \r\n 1989          224           24.079        28.9          13.3          0 \r\n 1989          225           21.499        26.7          13.9          3.81 \r\n 1989          226           13.493        23.9          15.6          3.81 \r\n 1989          227           21.179        24.4          13.3          0 \r\n 1989          228           23.575        26.1          11.1          0 \r\n 1989          229           23.744        27.2          11.7          0 \r\n 1989          230           24.083        27.8          12.2          0 \r\n 1989          231           19.872        27.2          16.1          10.16 \r\n 1989          232           15.217        28.3          15.6          0 \r\n 1989          233           21.404        28.9          15            0 \r\n 1989          234           20.233        32.2          17.8          0 \r\n 1989          235           14.278        31.1          18.3          10.67 \r\n 1989          236           11.289        26.1          16.1          0 \r\n 1989          237           13.516        25            16.1          0 \r\n 1989          238           14.175        25.6          17.8          3.3 \r\n 1989          239           12.109        28.3          18.9          0 \r\n 1989          240           14.727        27.8          18.9          3.05 \r\n 1989          241           15.269        26.7          18.9          0 \r\n 1989          242           20.467        28.9          13.9          0 \r\n 1989          243           18.22         32.8          20            1.02 \r\n 1989          244           18.382        30            18.3          0 \r\n 1989          245           18.079        23.9          11.1          0 \r\n 1989          246           15.857        23.9          13.9          4.06 \r\n 1989          247           10.885        26.7          15            27.18 \r\n 1989          248           19.121        27.2          13.3          0 \r\n 1989          249           16.204        28.3          18.3          0 \r\n 1989          250           9.051         28.3          18.9          16.26 \r\n 1989          251           7.244         23.9          17.8          15.49 \r\n 1989          252           11.3          22.2          13.3          17.78 \r\n 1989          253           18.69         19.4          7.2           0 \r\n 1989          254           16.965        18.9          7.8           0 \r\n 1989          255           12.84         16.7          7.8           0 \r\n 1989          256           14.837        17.2          5.6           0.51 \r\n 1989          257           19.252        19.4          5             0 \r\n 1989          258           19.393        20.6          6.1           0 \r\n 1989          259           19.523        22.8          5.6           0 \r\n 1989          260           19.101        26.7          8.9           0 \r\n 1989          261           16.722        27.2          12.8          0 \r\n 1989          262           17            26.1          10.6          0 \r\n 1989          263           16.727        26.7          10.6          0 \r\n 1989          264           16.589        26.1          11.7          0 \r\n 1989          265           16.182        25            12.8          0 \r\n 1989          266           19.061        16.1         -1.1           0 \r\n 1989          267           17.956        17.2         -1.7           0 \r\n 1989          268           18.228        22.8          3.9           0 \r\n 1989          269           18.079        21.7          1.1           0 \r\n 1989          270           16.865        20.6          2.2           0 \r\n 1989          271           17.262        26.7          3.9           0 \r\n 1989          272           16.46         25.6          9.4           0 \r\n 1989          273           16.456        25.6          5.6           0 \r\n 1989          274           15.262        27.8          10.6          0 \r\n 1989          275           16.187        27.2          3.9           0 \r\n 1989          276           13.555        11.7         -1.7           0 \r\n 1989          277           14.094        15           -0.6           0 \r\n 1989          278           8.874         16.7          8.9           14.48 \r\n 1989          279           8.799         16.1          4.4           0 \r\n 1989          280           14.233        13.3         -1.1           0 \r\n 1989          281           13.085        16.1          1.1           0 \r\n 1989          282           13.983        22.2          2.8           0 \r\n 1989          283           13.608        21.7          2.8           0 \r\n 1989          284           13.1          27.8          6.1           0 \r\n 1989          285           14.12         26.7          4.4           0 \r\n 1989          286           13.364        27.2          5.6           0 \r\n 1989          287           12.497        26.7          10            0 \r\n 1989          288           10.747        27.2          13.9          0 \r\n 1989          289           9.29          26.1          4.4           15.75 \r\n 1989          290           6.317         7.2          -0.6           0 \r\n 1989          291           7.366         7.2          -1.7           0 \r\n 1989          292           6.629         5.6          -2.2           0 \r\n 1989          293           10.949        13.9         -4.4           0 \r\n 1989          294           12.287        18.9          1.1           0 \r\n 1989          295           12.043        22.2          2.2           0 \r\n 1989          296           11.452        26.1          3.9           0 \r\n 1989          297           11.211        25.6          7.2           0 \r\n 1989          298           9.555         26.1          12.2          0 \r\n 1989          299           8.122         24.4          11.1          0 \r\n 1989          300           6.508         22.8          10.6          0 \r\n 1989          301           2.012         15.6          12.2          6.35 \r\n 1989          302           3.165         18.3          11.1          8.89 \r\n 1989          303           6.682         16.1          0.6           26.67 \r\n 1989          304           5.393         11.1         -1.7           1.52 \r\n 1989          305           7.548         10           -0.6           0 \r\n 1989          306           6.387         3.3          -5             0 \r\n 1989          307           7.476         7.8          -5.6           0.51 \r\n 1989          308           8.511         15           -0.6           0 \r\n 1989          309           7.974         13.9          2.8           0.51 \r\n 1989          310           8.088         5.6          -3.9           0 \r\n 1989          311           7.404         11.7         -2.2           0 \r\n 1989          312           6.994         8.3           1.1           0 \r\n 1989          313           8.573         12.8         -4.4           0 \r\n 1989          314           9.048         8.9          -5.6           0 \r\n 1989          315           7.596         13.3          3.9           0 \r\n 1989          316           9.048         10.6         -4.4           0 \r\n 1989          317           8.184         16.7          5             0 \r\n 1989          318           8.847         10           -3.3           0 \r\n 1989          319           7.299         5.6          -1.1           0 \r\n 1989          320           7.992         0            -12.8          0 \r\n 1989          321           7.117         1.1          -13.3          0 \r\n 1989          322           8.102        -3.9          -15.6          0 \r\n 1989          323           9.212         17.8         -7.8           0 \r\n 1989          324           8.454         12.8          5.6           0 \r\n 1989          325           7.803         5.6          -6.1           0 \r\n 1989          326           5.578         2.2          -5.6           0 \r\n 1989          327           7.616         0            -15            0 \r\n 1989          328           7.831         9.4          -10            0 \r\n 1989          329           6.651         6.7          -2.2           0 \r\n 1989          330           7.857         8.9          -9.4           0 \r\n 1989          331           7.113         8.3           0.6           1.02 \r\n 1989          332           8.812         0.6          -16.1          0.51 \r\n 1989          333           7.644         2.8          -17.2          0 \r\n 1989          334           8.3           7.2          -9.4           0 \r\n 1989          335           8.195         10           -7.2           0 \r\n 1989          336           7.564         5.6          -8.3           0 \r\n 1989          337           7.144        -0.6          -16.1          0 \r\n 1989          338           7.459         10           -5             0 \r\n 1989          339           6.757         13.3         -1.1           0 \r\n 1989          340           7.069         8.3          -6.7           0 \r\n 1989          341           3.431        -6.7          -11.1          0 \r\n 1989          342           2.391        -3.9          -9.4           0 \r\n 1989          343           4.99          5.6          -7.8           0 \r\n 1989          344           5.821         1.1          -7.8           0.76 \r\n 1989          345           5.718        -7.8          -17.2          0 \r\n 1989          346           6.994        -10.6         -25            0 \r\n 1989          347           6.582        -7.8          -15.6          0 \r\n 1989          348           5.76         -15.6         -24.4          0 \r\n 1989          349           5.143        -16.1         -26.1          0 \r\n 1989          350           5.348        -10           -20.6          0 \r\n 1989          351           4.423        -11.1         -17.2          0 \r\n 1989          352           5.657        -12.2         -20.6          0 \r\n 1989          353           6.171        -14.4         -26.1          1.02 \r\n 1989          354           4.937        -15.6         -20.6          0.51 \r\n 1989          355           6.582        -19.4         -30            0 \r\n 1989          356           4.834        -23.3         -30.6          0 \r\n 1989          357           6.994        -17.2         -31.1          0 \r\n 1989          358           7.714        -3.3          -17.2          1.02 \r\n 1989          359           6.171         2.2          -3.9           0 \r\n 1989          360           8.331         2.2          -18.3          0 \r\n 1989          361           7.302         2.8          -8.9           0 \r\n 1989          362           5.04          7.8          -2.8           0 \r\n 1989          363           5.554         3.9          -3.3           0 \r\n 1989          364           1.663        -3.3          -5             0 \r\n 1989          365           3.015        -1.1          -3.3           0 \r\n 1990          1             7.277         0.532        -12.27         0 \r\n 1990          2             7.693         8.61         -7.83          0 \r\n 1990          3             7.069         8.4          -3.117         0 \r\n 1990          4             7.173         3.72         -8.08          0 \r\n 1990          5             7.797         7.85         -9.6           0 \r\n 1990          6             8.195         2.015        -9.24          0 \r\n 1990          7             7.354         10.97        -3.952         0 \r\n 1990          8             7.775         10.68        -1.953         0 \r\n 1990          9             5.253         4.003        -3.768         0 \r\n 1990          10            7.67          9.34         -6.727         0 \r\n 1990          11            7.113         7.14         -2.996         0 \r\n 1990          12            6.795        -2.602        -12.15         0 \r\n 1990          13            7.963         2.619        -11.97         0 \r\n 1990          14            8.069         8.79         -5.006         0 \r\n 1990          15            9.024         14.53        -4.982         0 \r\n 1990          16            9.011         14.64         2.967         0 \r\n 1990          17            6.115         4.102        -0.962         10.92 \r\n 1990          18            5.471         2.197        -5.197         0 \r\n 1990          19            7.37          0.527        -7.84          0 \r\n 1990          20            3.685         3.479        -4.66          5.33 \r\n 1990          21            6.069        -1.09         -11.84         0 \r\n 1990          22            7.664         3.6          -6.119         0 \r\n 1990          23            6.46          5.807         0.148         0.51 \r\n 1990          24            6.898         3.149        -1.891         0.76 \r\n 1990          25            5.087        -0.698        -6.796         0.76 \r\n 1990          26            9.511         5.675        -9.46          0 \r\n 1990          27            8.073         2.81         -6.257         0 \r\n 1990          28            8.824         5.738        -6.672         0 \r\n 1990          29            9.941         8.83         -5.73          0 \r\n 1990          30            10.276        2.267        -9.58          0 \r\n 1990          31            10.829        11.55        -9.93          0 \r\n 1990          32            11.619        5.521        -9.19          0 \r\n 1990          33            4.512        -3.744        -9.57          1.02 \r\n 1990          34            5.582        -0.803        -8.55          1.02 \r\n 1990          35            11.961        9.17         -11.28         0 \r\n 1990          36            11.962        12.47        -0.116         0 \r\n 1990          37            11.041        5.704        -1.901         0 \r\n 1990          38            11.271        12.07        -3.551         0 \r\n 1990          39            11.148        6.959        -2.419         0 \r\n 1990          40            10.219        5.664        -5.094         0 \r\n 1990          41            11.137        5.071        -5.343         0 \r\n 1990          42            10.551        11.52        -1.694         1.02 \r\n 1990          43            12.78         18.89         0.195         0 \r\n 1990          44            14.082        1.528        -8.49          0 \r\n 1990          45            6.39         -6.594        -9.48          1.78 \r\n 1990          46            3.703        -1.406        -6.613         4.32 \r\n 1990          47            7.405        -1.296        -15.6          1.78 \r\n 1990          48            14.586       -4.822        -20.35         0 \r\n 1990          49            13.501       -0.745        -9.46          0 \r\n 1990          50            12.408       -4.929        -13.34         0 \r\n 1990          51            13.747        1.598        -14.39         0 \r\n 1990          52            14.24         5.586        -7.3           0 \r\n 1990          53            10.066        3.471        -2.544         0 \r\n 1990          54            13.377        9.23         -5.686         0 \r\n 1990          55            15.978       -4.02         -12.75         0 \r\n 1990          56            11.997       -4.205        -13.97         0 \r\n 1990          57            13.872        7.99         -8.68          0 \r\n 1990          58            14.246        2.985        -8             0 \r\n 1990          59            15.885        6.045        -9.76          0 \r\n 1990          60            14.27         11.75        -7.29          0 \r\n 1990          61            13.945        13.93        -3.343         0 \r\n 1990          62            14.81         4.437        -8.17          0 \r\n 1990          63            13.849        16.6         -5.967         0 \r\n 1990          64            13.849        1.51         -1.441         0 \r\n 1990          65            4.289         0.281        -2.102         0 \r\n 1990          66            2.97          1.803        -2.477         36.07 \r\n 1990          67            3.882         8.01          1.787         19.56 \r\n 1990          68            13.533        19.79         5.248         0 \r\n 1990          69            14.654        22.36         3.23          2.03 \r\n 1990          70            8.39          22.98         15.31         10.92 \r\n 1990          71            9.25          23.49         11.95         0 \r\n 1990          72            8.686         19.93         11.19         24.64 \r\n 1990          73            7.052         17.7          4.555         16 \r\n 1990          74            8.872         5.313         1.548         11.43 \r\n 1990          75            7.684         6.891         1.136         0.25 \r\n 1990          76            8.831         8.06         -1.412         0 \r\n 1990          77            10.637        3.015        -4.987         0 \r\n 1990          78            13.528        2.703        -8.86          0 \r\n 1990          79            15.503        15.43        -5.143         0 \r\n 1990          80            16.086        20.82         1.116         0 \r\n 1990          81            11.75         9.65         -2.963         0 \r\n 1990          82            13.266       -2.977        -7.36          0 \r\n 1990          83            9.12          3.163        -5.426         0 \r\n 1990          84            15.4          8.59         -7.24          0 \r\n 1990          85            16.356        7.8          -6.493         0 \r\n 1990          86            17.086        12.28        -6.075         0 \r\n 1990          87            14.078        8.78          1.528         0 \r\n 1990          88            7.155         6.547         2.088         4.32 \r\n 1990          89            9.216         7.6           2.835         0 \r\n 1990          90            8.065         9.07          4.08          2.03 \r\n 1990          91            10.911        15.42         0.921         0 \r\n 1990          92            19.132        10.22        -3.213         0 \r\n 1990          93            21.288        14.43        -6.325         0 \r\n 1990          94            20.364        15.5          3.397         0 \r\n 1990          95            20.772        6.077        -7.01          0 \r\n 1990          96            18.877        3.993        -7.35          0 \r\n 1990          97            21.613        15.24        -7.92          0 \r\n 1990          98            21.362        21.4          1.581         5.029 \r\n 1990          99            17.09         12.42         4.486         4.267 \r\n 1990          100           11.802        9.92         -0.355         0 \r\n 1990          101           19.855        3.796        -5.045         0 \r\n 1990          102           20.827        11.72        -6.385         5.105 \r\n 1990          103           13.988        5.089         2.898         0 \r\n 1990          104           13.149        17.63         0.405         0 \r\n 1990          105           21.277        13.79         0.938         0 \r\n 1990          106           18.881        10.62        -1.077         0 \r\n 1990          107           21.148        9.23         -5.172         0 \r\n 1990          108           21.006        15.36        -2.842         3.658 \r\n 1990          109           14.153        15.56         5.463         0 \r\n 1990          110           16.583        22.62         12.75         0 \r\n 1990          111           20.447        22.34         9.4           0 \r\n 1990          112           21.455        27.55         8.35          0 \r\n 1990          113           21.028        30.29         13.2          0 \r\n 1990          114           17.547        28.63         17.47         0 \r\n 1990          115           16.795        28.03         16.23         0 \r\n 1990          116           14.167        26.13         15.01         10.312 \r\n 1990          117           12.943        17.89         5.653         21.082 \r\n 1990          118           16.767        14.58         0.835         0.508 \r\n 1990          119           18.679        12.67         1.423         0.254 \r\n 1990          120           22.364        16.37         0.071         0 \r\n 1990          121           22.124        16.39        -0.547         0 \r\n 1990          122           24.577        19.58         1.671         0 \r\n 1990          123           23.177        16.46         7.66          9.144 \r\n 1990          124           12.53         15.49         6.038         3.302 \r\n 1990          125           20.674        19.43         6.156         0.508 \r\n 1990          126           25.059        22.76         5.948         0 \r\n 1990          127           23.969        29.42         9.35          0 \r\n 1990          128           21.131        24.62         13.74         28.194 \r\n 1990          129           16.194        15.78         3.723         20.32 \r\n 1990          130           15.083        14.31         2.806         0 \r\n 1990          131           21.91         18.1          3.193         13.208 \r\n 1990          132           13.586        12.03         7.2           6.096 \r\n 1990          133           15.344        19.09         6.79          0 \r\n 1990          134           20.459        22.45         11.31         0 \r\n 1990          135           20.114        21.16         10.82         21.844 \r\n 1990          136           13.034        19.65         11.63         0.254 \r\n 1990          137           21.24         20.39         7.99          0 \r\n 1990          138           25.918        25.5          8.437         39.37 \r\n 1990          139           16.523        20.417        11.078        21.336 \r\n 1990          140           18.79         12.14         7.33          0 \r\n 1990          141           9.62          14.06         9.14          0.254 \r\n 1990          142           22.339        21.38         7.9           0 \r\n 1990          143           15.001        18.74         12.56         17.272 \r\n 1990          144           11.653        18.33         11.43         10.922 \r\n 1990          145           8.863         18.53         14.76         15.24 \r\n 1990          146           12.802        21.25         15.2          0 \r\n 1990          147           21.476        23.02         12.42         0 \r\n 1990          148           22.798        23.41         12.18         0 \r\n 1990          149           24.78         25.63         13.11         0 \r\n 1990          150           23.128        21.61         12.35         0 \r\n 1990          151           24.285        22.6          10.32         0 \r\n 1990          152           22.307        27.46         15.54         0 \r\n 1990          153           24.245        22.065        14.659        6.096 \r\n 1990          154           18.006        14.96         7.37          0.254 \r\n 1990          155           23.176        19.9          7.47          0 \r\n 1990          156           25.493        27.34         12.98         0 \r\n 1990          157           21.711        15.6          11.862        0 \r\n 1990          158           27.273        20.33         12.23         15.24 \r\n 1990          159           14.354        24.569        15.994        0.254 \r\n 1990          160           26.914        28            14.86         0 \r\n 1990          161           28.17         30.24         15.032        0 \r\n 1990          162           22.608        29.72         19.852        0 \r\n 1990          163           20.813        33.17         23.07         0.508 \r\n 1990          164           18.057        28.81         19.11         8.128 \r\n 1990          165           17.335        28.68         20.73         0 \r\n 1990          166           19.141        26.64         16.11         15.494 \r\n 1990          167           13.904        30.62         20.42         75.184 \r\n 1990          168           14.807        29.95         19.22         2.286 \r\n 1990          169           26.725        31.07         16.88         0 \r\n 1990          170           18.599        22.43         18.48         25.4 \r\n 1990          171           14.085        27.05         17.44         0 \r\n 1990          172           23.294        22.66         16.46         14.732 \r\n 1990          173           15.891        24.48         16.06         5.588 \r\n 1990          174           18.78         25.03         14.5          0 \r\n 1990          175           25.822        27.66         15.35         0 \r\n 1990          176           19.863        27.44         19.74         0 \r\n 1990          177           22.572        33.34         21.04         1.524 \r\n 1990          178           25.1          33.83         20.39         0 \r\n 1990          179           18.96         30.33         19.63         22.352 \r\n 1990          180           15.891        33.43         24.14         0.254 \r\n 1990          181           13.904        33.93         23.09         3.556 \r\n 1990          182           27.381        31.11         20.37         0 \r\n 1990          183           23.883        30.98         20.7          0 \r\n 1990          184           22.378        36.5          24.85         0 \r\n 1990          185           24.447        35.03         18.84         32.258 \r\n 1990          186           21.062        27.03         19.12         4.064 \r\n 1990          187           22.754        25.38         16.9          0 \r\n 1990          188           21.438        32.23         20.31         0 \r\n 1990          189           21.114        31.95         20.29         0 \r\n 1990          190           19.058        25.99         19.18         22.606 \r\n 1990          191           13.827        21.85         18.64         20.066 \r\n 1990          192           17.003        27.46         16.48         0 \r\n 1990          193           19.058        20.25         14.73         26.162 \r\n 1990          194           16.151        22.92         12.78         0 \r\n 1990          195           25.432        23.22         13.34         9.144 \r\n 1990          196           19.863        26.79         14.16         0 \r\n 1990          197           26.175        29.95         16.45         0 \r\n 1990          198           23.977        29.46         19.34         0 \r\n 1990          199           21.026        29.87         21.29         1.778 \r\n 1990          200           15.861        28.14         21.85         14.478 \r\n 1990          201           14.201        26.322        20.4          0 \r\n 1990          202           20.155        24.99         18.568        0 \r\n 1990          203           20.522        24.26         15.17         0 \r\n 1990          204           26.568        26.26         13.886        0 \r\n 1990          205           24.937        25.68         15.42         0 \r\n 1990          206           20.023        26.2          18.18         1.27 \r\n 1990          207           12.742        25.94         20.11         13.462 \r\n 1990          208           12.476        31.89         23.7          26.924 \r\n 1990          209           15.912        31.04         22.45         10.414 \r\n 1990          210           15.912        29.67         21.04         0 \r\n 1990          211           23.17         24.59         16.76         0 \r\n 1990          212           25.325        25.29         13.96         0 \r\n 1990          213           28.321        26.21         13.54         0 \r\n 1990          214           24.218        27.81         17.02         2.286 \r\n 1990          215           14.849        26.48         20.05         8.89 \r\n 1990          216           14.924        30.34         16.12         0 \r\n 1990          217           26.512        23.32         13.77         0 \r\n 1990          218           27.214        24.01         11.1          0 \r\n 1990          219           26.332        25.2          12.98         0 \r\n 1990          220           26.157        25.07         12.67         0 \r\n 1990          221           24.419        34.34         16.502        27.432 \r\n 1990          222           17.492        28.443        19.113        1.778 \r\n 1990          223           14.963        28.68         19.94         0.508 \r\n 1990          224           19.263        25.09         15.94         0 \r\n 1990          225           23.219        25.45         14.63         0 \r\n 1990          226           21.35         27.26         18.04         0 \r\n 1990          227           22.887        29.62         19.13         0 \r\n 1990          228           21.2          28.704        20.549        0 \r\n 1990          229           14.077        33.15         24.14         5.334 \r\n 1990          230           18.694        32.38         22.61         0 \r\n 1990          231           18.694        29.53         22.58         32.766 \r\n 1990          232           10.2          29.33         22.92         0.254 \r\n 1990          233           14.213        23.34         21.26         0 \r\n 1990          234           12.374        25.11         21.05         0 \r\n 1990          235           16.768        33.7          21.1          0 \r\n 1990          236           14.278        31.05         22.34         15.748 \r\n 1990          237           15.494        34.61         21.85         1.27 \r\n 1990          238           19.944        34.77         25.44         0 \r\n 1990          239           18.981        34.1          23            0 \r\n 1990          240           19.963        31.7          21.72         0 \r\n 1990          241           20.467        30.25         19.51         3.048 \r\n 1990          242           16.731        34.54         19.12         0.254 \r\n 1990          243           20.639        32.2          18.81         0 \r\n 1990          244           19.672        30.71         21.49         4.724 \r\n 1990          245           10.373        26.23         21.56         1.372 \r\n 1990          246           10.67         30.45         20.27         0 \r\n 1990          247           16.768        33.52         22.26         0 \r\n 1990          248           18.239        34.43         20.74         0 \r\n 1990          249           17.518        34.23         21.68         0.61 \r\n 1990          250           18.54         29.61         17.43         0.051 \r\n 1990          251           13.618        27.97         16.94         0 \r\n 1990          252           17.385        32.26         19.32         0.127 \r\n 1990          253           18.403        31.61         17.64         0 \r\n 1990          254           17.396        30.23         18.96         0 \r\n 1990          255           17.119        31.38         18.63         0 \r\n 1990          256           17.405        30.11         17.34         0 \r\n 1990          257           17.412        23.99         12.14         0 \r\n 1990          258           19.393        27.97         9.16          0 \r\n 1990          259           19.663        18.85         8.01          0 \r\n 1990          260           16.152        17.98         7.11          11.735 \r\n 1990          261           8.361         23.47         12.91         2.718 \r\n 1990          262           6.271         21.61         12.93         0.711 \r\n 1990          263           12.995        23.07         12.65         0.838 \r\n 1990          264           12.718        22.93         10.58         0 \r\n 1990          265           15.359        15.74         8.09          0 \r\n 1990          266           14.399        15.65         3.945         0 \r\n 1990          267           17.412        24.62         3.541         0 \r\n 1990          268           17.548        29.66         12.2          0 \r\n 1990          269           17.135        30.83         13.01         0.254 \r\n 1990          270           16.191        25.66         11.82         1.321 \r\n 1990          271           13.516        22.44         10.24         0.127 \r\n 1990          272           13.649        15.49         7.15          0.152 \r\n 1990          273           15.129        20.07         4.189         0 \r\n 1990          274           14.598        21.89         10.64         0 \r\n 1990          275           14.608        25.79         10.33         0 \r\n 1990          276           9.607         20.73         7.13          25.65 \r\n 1990          277           9.918         22.11         6.984         0 \r\n 1990          278           13.963        30.88         15.66         0 \r\n 1990          279           12.292        23.22         9.89          0 \r\n 1990          280           14.492        13.49         4.584         0 \r\n 1990          281           8.595         8.2           3.786         4.83 \r\n 1990          282           4.234         10.35         2.814         0 \r\n 1990          283           11.955        12.48        -1.695         0 \r\n 1990          284           13.736        19.84         0.975         0 \r\n 1990          285           12.986        14.54         2.982         0 \r\n 1990          286           12.86         19.36         2.307         0 \r\n 1990          287           11.497        16.56         3.675         1.78 \r\n 1990          288           12.372        13.73         2.406         0 \r\n 1990          289           11.643        22.11         7.34          0 \r\n 1990          290           11.519        19.898        4.202         0 \r\n 1990          291           9.33          9.24         -0.899         2.79 \r\n 1990          292           11.662        15.99        -1.628         0 \r\n 1990          293           9.975         13.41         4.536         1.02 \r\n 1990          294           6.934         9.35         -1.226         5.59 \r\n 1990          295           11.07         16.41        -1.508         0 \r\n 1990          296           11.572        19.53         2.632         0 \r\n 1990          297           11.452        13.35         1.561         0 \r\n 1990          298           11.466        13.43        -2.088         0 \r\n 1990          299           11.347        20.02         0.729         0 \r\n 1990          300           9.822         14.1          2.063         0 \r\n 1990          301           11.123        14.04        -0.996         0 \r\n 1990          302           10.668        25.55         2.436         0 \r\n 1990          303           10.082        22.42         7.75          0 \r\n 1990          304           10.551        24.95         5.868         0 \r\n 1990          305           9.406         24.38         12.61         0 \r\n 1990          306           7.664         19.42         7.77          3.05 \r\n 1990          307           5.176         7.76          0.754         13.21 \r\n 1990          308           2.645         2.323        -0.646         6.86 \r\n 1990          309           4.898         5.669        -2.266         0 \r\n 1990          310           4.67          0.678        -5.529         8.64 \r\n 1990          311           6.493        -2.189        -11.76         0 \r\n 1990          312           8.46          2.086        -5.434         2.54 \r\n 1990          313           3.948         6.816        -1.918         0 \r\n 1990          314           6.925         8.9          -0.68          0 \r\n 1990          315           9.159         13.99        -1.546         0 \r\n 1990          316           9.606         10.78        -2.342         0 \r\n 1990          317           8.626         12.32        -0.207         0 \r\n 1990          318           8.294         22.76         0.897         0 \r\n 1990          319           7.52          21.21         7.62          0 \r\n 1990          320           8.321         11.64         1.04          0 \r\n 1990          321           8.43          11.11        -4.204         0 \r\n 1990          322           7.445         14.12         1.235         0 \r\n 1990          323           8.02          15.05        -1.417         0 \r\n 1990          324           7.37          18.33         5.395         0 \r\n 1990          325           6.828         22.1         -1.446         0 \r\n 1990          326           8.367         14.07        -2.156         0 \r\n 1990          327           5.793         11.08         2.522         0 \r\n 1990          328           6.758         14.86         0.185         0 \r\n 1990          329           7.616         6.124        -3.971         0 \r\n 1990          330           6.583         18.42        -3.416         0 \r\n 1990          331           5.839         3.55         -5.377         5.08 \r\n 1990          332           4.99          2.808        -7.99          0 \r\n 1990          333           6.901         7.18         -8.32          0 \r\n 1990          334           6.724         12            0.648         0 \r\n 1990          335           5.883         7.64         -5.907         0 \r\n 1990          336           6.619         2.508        -7.81          0 \r\n 1990          337           2.732        -1.944        -6.642         22.86 \r\n 1990          338           4.518        -2.9          -12.53         0 \r\n 1990          339           7.173         19.45        -6.184         0 \r\n 1990          340           5.925         2.258        -5.75          0 \r\n 1990          341           5.925         4.351        -5.873         0 \r\n 1990          342           6.445         7.25         -1.699         0 \r\n 1990          343           6.965         9.01         -1.537         0 \r\n 1990          344           6.445         7.57         -0.8           0 \r\n 1990          345           6.341         11.01        -1.01          0 \r\n 1990          346           5.554         6.636        -0.958         0 \r\n 1990          347           4.937        -0.707        -5.632         0 \r\n 1990          348           3.703         0.819        -5.138         3.81 \r\n 1990          349           1.748         1.45         -1.368         7.37 \r\n 1990          350           4.011         1.675        -5.143         0 \r\n 1990          351           3.086         2.297        -10.6          7.87 \r\n 1990          352           5.554        -1.033        -16.07         0 \r\n 1990          353           5.657         2.325        -1.033         0.25 \r\n 1990          354           7.611         3.495        -18.92         0.76 \r\n 1990          355           6.685        -18.83        -22.94         3.3 \r\n 1990          356           2.983        -21.58        -25.23         0 \r\n 1990          357           5.348        -15.41        -25.38         0 \r\n 1990          358           7.097        -4.701        -17.74         0 \r\n 1990          359           7.714        -5.673        -23.42         0 \r\n 1990          360           6.891        -11.37        -23.41         0 \r\n 1990          361           6.48         -4.676        -14.22         0 \r\n 1990          362           6.48          0.953        -9.73          0 \r\n 1990          363           8.64         -9.77         -22.83         1.52 \r\n 1990          364           3.638        -19.5         -23.18         0 \r\n 1990          365           5.406        -5.159        -21.24         0 \r\n 1991          1             7.797        -1.593        -13.56         0 \r\n 1991          2             7.797        -13.59        -19.65         0 \r\n 1991          3             6.237        -10.62        -20.71         0 \r\n 1991          4             7.381        -8.15         -18.51         0 \r\n 1991          5             4.782        -7.17         -15.39         12.45 \r\n 1991          6             8.195        -13.9         -21.72         0 \r\n 1991          7             7.775        -7.71         -22.5          0 \r\n 1991          8             7.88         -3.754        -8.41          0 \r\n 1991          9             8.09         -8.42         -18.65         0 \r\n 1991          10            6.934        -3.677        -14.14         0 \r\n 1991          11            3.822        -2.731        -5.706         4.83 \r\n 1991          12            4.671        -4.423        -8.39          0 \r\n 1991          13            5.521        -0.597        -8.32          0 \r\n 1991          14            7.644         4.804        -7.94          0 \r\n 1991          15            7.113        -0.482        -3.972         0 \r\n 1991          16            4.076        -2.491        -7.66          0 \r\n 1991          17            5.686        -0.913        -13.97         0 \r\n 1991          18            9.226         1.322        -11.43         0 \r\n 1991          19            7.262         4.677        -4.408         0 \r\n 1991          20            10.188       -0.751        -17.82         0 \r\n 1991          21            9.104        -14.81        -23.71         0 \r\n 1991          22            10.401        1.287        -22.61         0 \r\n 1991          23            9.854         1.273        -11.47         0 \r\n 1991          24            10.62        -11.53        -20.65         0 \r\n 1991          25            6.857        -11.24        -22.24         1.02 \r\n 1991          26            9.953        -7.31         -21.18         0 \r\n 1991          27            9.069        -1.924        -13.69         0 \r\n 1991          28            7.484        -4.277        -12.87         0 \r\n 1991          29            9.83         -12.89        -21.31         1.02 \r\n 1991          30            11.505       -7.68         -25.11         0 \r\n 1991          31            11.844       -0.998        -19.21         0 \r\n 1991          32            12.296        4.362        -11.42         0 \r\n 1991          33            11.506        5.104        -6.454         0 \r\n 1991          34            9.796         6.678         0.3           0 \r\n 1991          35            8.771         5.312        -0.45          0 \r\n 1991          36            10.121        3.562        -2.083         0 \r\n 1991          37            10.811        8.22         -3.923         0 \r\n 1991          38            10.006        7.68         -2.583         0 \r\n 1991          39            11.38         10.44        -2.458         0 \r\n 1991          40            11.38         5.206        -2.817         0 \r\n 1991          41            9.613         3.101        -2.664         0 \r\n 1991          42            7.972        -0.957        -7.62          0 \r\n 1991          43            10.413        6.549        -7.55          0 \r\n 1991          44            11.715        3.58         -3.628         0 \r\n 1991          45            12.898       -3.556        -16.66         0 \r\n 1991          46            12.183       -9.67         -19.81         0 \r\n 1991          47            14.213        6.161        -12.91         0 \r\n 1991          48            11.693        5.618        -3.112         0 \r\n 1991          49            4.581         1.879        -0.971         4.32 \r\n 1991          50            6.569         1.321        -5.172         0 \r\n 1991          51            12.408        12.07        -3.194         0 \r\n 1991          52            14.363        16.17         1.094         0 \r\n 1991          53            14.977        2.03         -3.459         0 \r\n 1991          54            9.414         6.576        -5.02          0 \r\n 1991          55            15.359       -2.857        -10.21         0 \r\n 1991          56            12.872       -2.736        -12.71         0 \r\n 1991          57            11.497       -1.043        -7.41          0 \r\n 1991          58            12.607        5.272        -7.82          0 \r\n 1991          59            14.877        13.528       -3.361         0 \r\n 1991          60            9.729         12.206        3.117         15.75 \r\n 1991          61            11.027        3.268        -8.5           16.26 \r\n 1991          62            9.837        -0.578        -10.11         0 \r\n 1991          63            13.085        9.42         -4.219         0 \r\n 1991          64            14.612        16.7          0.19          0 \r\n 1991          65            16.168        0.608        -5.25          0 \r\n 1991          66            12.538        2.391        -8.12          0 \r\n 1991          67            13.755        9.78         -1.35          0 \r\n 1991          68            14.975        7.03         -4.733         0 \r\n 1991          69            13.647        9.07         -1.762         0 \r\n 1991          70            13.535        13.31         1.623         0 \r\n 1991          71            9.927         5.295         0.725         18.54 \r\n 1991          72            5.076         2.965        -4.311         9.4 \r\n 1991          73            12.626        2.355        -6.271         0 \r\n 1991          74            14.104        5.96         -4.505         0 \r\n 1991          75            7.913         5.526         1.007         5.59 \r\n 1991          76            4.358         6.374         1.944         18.54 \r\n 1991          77            7.862         7.71          0.391         0.25 \r\n 1991          78            16.881        16.44         0.668         0 \r\n 1991          79            18.3          19.95         3.581         0.76 \r\n 1991          80            17.484        18.46         4.329         0 \r\n 1991          81            16.921        17.179        3.799         17.78 \r\n 1991          82            12.437        8.82          1.491         10.16 \r\n 1991          83            11.134        15.78         3.382         0 \r\n 1991          84            18.624        24.44         4.456         0 \r\n 1991          85            18.504        29.641        14.73         0 \r\n 1991          86            14.319        26.928       -0.57          10.92 \r\n 1991          87            18.65         10.8         -3.749         0 \r\n 1991          88            16.734        2.004        -4.714         0 \r\n 1991          89            17.341        8.6          -6.444         0 \r\n 1991          90            14.787        13.62         2.349         0 \r\n 1991          91            16.48         16.25         0.567         0 \r\n 1991          92            18.189        19.41         4.353         0 \r\n 1991          93            17.516        18.74         6.533         0 \r\n 1991          94            18.192        30.66         10.05         0 \r\n 1991          95            19.821        29.35         8.11          0 \r\n 1991          96            18.467        31.9          15.97         0 \r\n 1991          97            17.92         27.03         15.33         0 \r\n 1991          98            17.503        18.47         5.998         68.834 \r\n 1991          99            12.817        6.693         0.872         0 \r\n 1991          100           17.773        11.88        -1.02          0 \r\n 1991          101           15.551        7.06          3.571         2.286 \r\n 1991          102           5.832         8.26          2.901         42.672 \r\n 1991          103           5.875         16.96         6.423         6.096 \r\n 1991          104           7.134         17.96         6.502         27.178 \r\n 1991          105           16.768        13.2          5.043         0 \r\n 1991          106           16.486        12.97         4.615         0 \r\n 1991          107           17.032        17            3.218         0 \r\n 1991          108           12.348        11.12         7.11          26.162 \r\n 1991          109           5.004         10.18         7.08          2.286 \r\n 1991          110           8.292         13.45         5.001         1.016 \r\n 1991          111           20.447        14.03         1.682         0 \r\n 1991          112           20.303        17.09         3.447         6.858 \r\n 1991          113           14.647        9.6           2.491         0 \r\n 1991          114           22.043        18.27         1.619         0 \r\n 1991          115           20.739        15.69         8.48          1.524 \r\n 1991          116           19.424        22.776        7.671         22.86 \r\n 1991          117           14.855        19.551        11.228        0.254 \r\n 1991          118           22.944        23.31         5.832         1.27 \r\n 1991          119           15.149        20.738        11.704        7.112 \r\n 1991          120           14.958        12.99         6.529         0 \r\n 1991          121           18.101        15.85         4.906         0 \r\n 1991          122           21.621        15.34         4.998         0.254 \r\n 1991          123           13.844        14.8          6.868         4.826 \r\n 1991          124           7.831         18.12         12.38         3.81 \r\n 1991          125           11.277        10.158        5.094         16.51 \r\n 1991          126           10.964        10.93         3.8           0 \r\n 1991          127           23.338        16.16         3.463         0 \r\n 1991          128           24.6          23.9          10.21         0 \r\n 1991          129           25.085        25.21         12.03         0 \r\n 1991          130           23.497        23.72         15.04         0 \r\n 1991          131           19.846        34.91         18.81         0 \r\n 1991          132           20.779        29.48         20            0 \r\n 1991          133           23.176        30.55         17.98         0 \r\n 1991          134           23.336        30.42         17.85         4.318 \r\n 1991          135           16.574        29.903        19.361        11.938 \r\n 1991          136           13.034        29.552        18.821        12.954 \r\n 1991          137           16.735        28.26         14.94         16.51 \r\n 1991          138           18.628        26.93         12.12         0.508 \r\n 1991          139           14.093        26.82         15.23         0.254 \r\n 1991          140           19.276        23.46         14.24         0 \r\n 1991          141           17.121        41.839        20.65         0.254 \r\n 1991          142           12.555        30.955        20.454        0.762 \r\n 1991          143           13.208        29.1          21.59         0.508 \r\n 1991          144           18.547        30.7          19.51         0 \r\n 1991          145           17.726        31.11         19.59         0.762 \r\n 1991          146           15.756        35.29         18.88         0 \r\n 1991          147           23.624        32.03         18.49         0 \r\n 1991          148           21.972        33.43         22.29         0 \r\n 1991          149           22.467        29.903        21.086        18.009 \r\n 1991          150           17.346        30.253        19.698        0 \r\n 1991          151           18.668        30.955        20.073        4.394 \r\n 1991          152           14.872        28.466        20.067        0 \r\n 1991          153           17.471        28.564        19.669        0 \r\n 1991          154           23.71         30.136        19.706        43.637 \r\n 1991          155           21.215        21.938        16.039        0 \r\n 1991          156           15.332        24.37         15.482        0 \r\n 1991          157           26.017        25.055        14.779        0 \r\n 1991          158           26.376        26.239        15.432        0 \r\n 1991          159           26.376        25.561        15.81         0 \r\n 1991          160           21.89         28.662        19.439        0 \r\n 1991          161           16.687        26.404        19.259        0 \r\n 1991          162           19.019        28.704        17.822        0 \r\n 1991          163           26.017        32.222        19.444        5.029 \r\n 1991          164           24.016        28.526        20.253        28.524 \r\n 1991          165           18.78         31.188        20.302        12.598 \r\n 1991          166           18.599        26.873        17.219        0 \r\n 1991          167           27.086        26.626        15.425        0 \r\n 1991          168           27.447        24.76         16.174        0 \r\n 1991          169           27.267        31.66         16.74         0 \r\n 1991          170           26.003        31.8          19.58         0 \r\n 1991          171           25.28         31.03         19.43         0 \r\n 1991          172           18.599        25.28         18.18         7.366 \r\n 1991          173           16.071        20.18         16.57         0 \r\n 1991          174           12.64         21.67         16.11         0 \r\n 1991          175           18.78         28.89         19.41         0 \r\n 1991          176           22.933        31.19         20.64         0 \r\n 1991          177           22.03         35.82         22.95         0 \r\n 1991          178           22.211        34.33         22.88         0 \r\n 1991          179           22.391        33.6          22.62         0 \r\n 1991          180           22.211        35.7          24.05         0 \r\n 1991          181           23.836        34.15         21.94         0 \r\n 1991          182           19.167        32.29         20.28         7.62 \r\n 1991          183           26.703        30.11         18.84         0 \r\n 1991          184           25.575        25.54         16.91         0 \r\n 1991          185           25.575        28.7          16.18         0 \r\n 1991          186           28.02         33.66         17.64         0 \r\n 1991          187           26.327        34.28         20.85         1.016 \r\n 1991          188           23.507        31.27         19.75         0 \r\n 1991          189           28.027        27.59         15.71         4.572 \r\n 1991          190           16.442        25.93         20.63         0.254 \r\n 1991          191           20.179        33.72         20.56         0 \r\n 1991          192           17.377        31.25         25.05         0 \r\n 1991          193           20.927        30.69         19.43         0 \r\n 1991          194           23.947        24.2          17.5          0 \r\n 1991          195           25.247        27.81         15.7          0 \r\n 1991          196           28.031        30.46         14.8          0.254 \r\n 1991          197           26.175        33.4          19.98         0 \r\n 1991          198           24.714        34.7          20.79         0 \r\n 1991          199           26.743        33.85         22.58         0 \r\n 1991          200           23.608        33.03         21.28         0 \r\n 1991          201           20.841        34.08         23.17         0 \r\n 1991          202           18.872        30.24         25.67         0 \r\n 1991          203           18.323        33.88         20.2          0 \r\n 1991          204           28.034        26.29         16.39         0 \r\n 1991          205           27.304        27.93         13.81         0 \r\n 1991          206           28.76         24.32         12.51         0 \r\n 1991          207           27.668        26.84         11.52         0 \r\n 1991          208           24.591        25.55         13.67         0 \r\n 1991          209           15.189        26.08         16.74         0 \r\n 1991          210           15.008        23.24         15.82         0 \r\n 1991          211           24.607        28.05         13.7          0 \r\n 1991          212           23.709        30.16         18.21         0 \r\n 1991          213           27.545        31.33         17.24         0 \r\n 1991          214           22.096        30.45         22.29         0 \r\n 1991          215           20.505        26.84         18.76         0 \r\n 1991          216           20.542        24.11         17.77         0 \r\n 1991          217           16.855        18.539        16.62         0 \r\n 1991          218           8.428         30.3          17.65         0 \r\n 1991          219           11.858        28.432        18.906        22.606 \r\n 1991          220           13.602        25.254        20.58         4.064 \r\n 1991          221           20.263        26.93         16.92         0 \r\n 1991          222           23.207        26.42         16.23         0 \r\n 1991          223           22.703        27.32         14.67         0 \r\n 1991          224           23.563        29.17         15.93         0 \r\n 1991          225           22.875        27.45         15.95         0.762 \r\n 1991          226           23.741        27.93         16.14         0 \r\n 1991          227           24.424        29.36         14.36         0 \r\n 1991          228           21.031        23.92         18.65         1.524 \r\n 1991          229           14.247        27.82         17.24         0 \r\n 1991          230           14.483        25.002        17.92         22.098 \r\n 1991          231           23.072        22.42         13.34         0 \r\n 1991          232           23.243        23.16         10.99         1.016 \r\n 1991          233           22.407        30.02         15.75         0 \r\n 1991          234           23.076        29.51         17.63         0 \r\n 1991          235           19.59         25.4          19.32         0 \r\n 1991          236           17.764        31.11         22.29         0 \r\n 1991          237           20.109        31.26         21.15         0 \r\n 1991          238           20.439        31.97         19.53         0 \r\n 1991          239           20.618        31.66         19.49         0 \r\n 1991          240           19.308        31.38         21.6          0 \r\n 1991          241           18.193        30.9          22.11         0 \r\n 1991          242           17.706        30.46         22.02         0 \r\n 1991          243           14.996        29.57         17.65         0 \r\n 1991          244           21.123        27.53         14.85         0 \r\n 1991          245           17.487        29.23         19.62         0 \r\n 1991          246           13.93         29.72         12.7          0 \r\n 1991          247           21.328        25.25         10.49         0 \r\n 1991          248           20.298        26.37         11.22         0 \r\n 1991          249           19.269        30.19         12.63         0 \r\n 1991          250           18.832        30.37         16.39         0 \r\n 1991          251           10.866        35.9          20.39         0 \r\n 1991          252           7.389         29.97         19.88         0 \r\n 1991          253           15.958        24.54         17.62         0 \r\n 1991          254           11.07         30.73         17.98         0 \r\n 1991          255           10.985        30.25         21.02         21.84 \r\n 1991          256           10.842        31.71         22.37         0 \r\n 1991          257           10.051        27.38         21.95         0 \r\n 1991          258           7.644         28.71         15.71         0 \r\n 1991          259           17.275        22.31         10.93         0 \r\n 1991          260           16.714        22.46         10.49         0 \r\n 1991          261           13.099        12.36         2.555         0 \r\n 1991          262           16.164        11.76         0.085         0 \r\n 1991          263           18.109        17.53        -0.598         0 \r\n 1991          264           18.386        19.33         1.796         0 \r\n 1991          265           14.536        17.97         4.837         0 \r\n 1991          266           17.416        19.26         3.005         1.27 \r\n 1991          267           14.555        15.65         3.264         0 \r\n 1991          268           16.459        20.74         3.596         0 \r\n 1991          269           17.27         18.31         1.477         0 \r\n 1991          270           15.111        17.3          3.5           0 \r\n 1991          271           16.593        21.29         1.235         0 \r\n 1991          272           16.593        29.51         9.94          0 \r\n 1991          273           14.864        20.02         6.359         0 \r\n 1991          274           16.323        27.63         5.184         0 \r\n 1991          275           15.134        22.09         9.48          0 \r\n 1991          276           14.213        12.34         6.246         3.3 \r\n 1991          277           4.045         11.31         6.833         21.84 \r\n 1991          278           6.264         8.23          1.496         6.35 \r\n 1991          279           11.128        10.54        -0.16          0 \r\n 1991          280           15.398        20.47        -2.105         0 \r\n 1991          281           15.395        25.48         7.76          0 \r\n 1991          282           14.497        22.33         6.635         0 \r\n 1991          283           14.117        19.2          4.355         0 \r\n 1991          284           12.337        21.99         12.89         0 \r\n 1991          285           13.238        16.68         5.742         0 \r\n 1991          286           10.968        19.01         5.241         0 \r\n 1991          287           11.122        12.37         1.335         0 \r\n 1991          288           12.122        11.93        -2.98          0 \r\n 1991          289           12.634        25.7          5.056         0 \r\n 1991          290           12.262        25.7          4.448         0 \r\n 1991          291           13.012        8.18         -1.374         1.52 \r\n 1991          292           11.417        9.06         -5.611         0 \r\n 1991          293           11.922        16.78        -3.411         0 \r\n 1991          294           11.679        23.01         4.618         0 \r\n 1991          295           10.462        25.08         11.3          0 \r\n 1991          296           9.885         26            9.41          0 \r\n 1991          297           8.076         21.93         3.874         18.8 \r\n 1991          298           5.853         10.97         0.449         1.52 \r\n 1991          299           4.658         15.67         6.994         12.19 \r\n 1991          300           2.603         22.12         15.02         0.51 \r\n 1991          301           3.432         28.51         4.461         9.4 \r\n 1991          302           8.323         18.86        -2.319         0 \r\n 1991          303           5.275         0.929        -4.38          0 \r\n 1991          304           2.931         2.771        -1.803         9.14 \r\n 1991          305           3.484         3.297        -6.871         35.56 \r\n 1991          306           5.574        -6.9          -10.91         0 \r\n 1991          307           4.371        -8.05         -13.24         0 \r\n 1991          308           8.626        -4.572        -15.77         0 \r\n 1991          309           9.227         3.061        -7.92          0 \r\n 1991          310           9.227        -3.993        -16.32         1.78 \r\n 1991          311           7.404        -6.291        -19.17         0 \r\n 1991          312           10.491       -4.236        -20.4          0 \r\n 1991          313           10.039        4.484        -9.6           0 \r\n 1991          314           6.479         0.9          -1.269         0 \r\n 1991          315           1.787         2.087        -0.689         0 \r\n 1991          316           3.351         5.475         2.088         0 \r\n 1991          317           7.41          14.16         1.939         0 \r\n 1991          318           7.963         21.56         2.81          0.76 \r\n 1991          319           5.198         21.539        1.912         1.78 \r\n 1991          320           5.912         9.42          0.562         0 \r\n 1991          321           4.489         20.57         3.853         12.45 \r\n 1991          322           4.708         20.34         5.047         1.78 \r\n 1991          323           6.503         9.4           2.554         0 \r\n 1991          324           8.129         12.9         -0.381         0 \r\n 1991          325           8.129         11.58         0.21          0 \r\n 1991          326           7.402         3.946        -4.835         1.27 \r\n 1991          327           5.256        -4.846        -7.94          9.91 \r\n 1991          328           4.398        -7.32         -12.27         0 \r\n 1991          329           8.582        -6.249        -15.42         0 \r\n 1991          330           8.6           7.46         -10.76         0 \r\n 1991          331           4.671         6.341        -2.414         2.29 \r\n 1991          332           4.353         1.927        -1.232         2.79 \r\n 1991          333           2.973         8.185        -2.222         2.29 \r\n 1991          334           6.409        -0.842        -8.266         6.86 \r\n 1991          335           7.775         0.299        -11.604        0 \r\n 1991          336           7.039        -3.111        -10.164        2.03 \r\n 1991          337           7.459        -9.775        -15.611        0 \r\n 1991          338           6.934        -1.613        -13.237        0 \r\n 1991          339           8.212         5.361        -11.599        0 \r\n 1991          340           8.732         6.528        -1.734         0 \r\n 1991          341           8.212         5.997        -0.698         0 \r\n 1991          342           6.445         4.376        -3.476         0 \r\n 1991          343           7.173         7.766        -2.85          0 \r\n 1991          344           6.965         6.692        -2.684         0 \r\n 1991          345           7.901         4.888         0.663         0 \r\n 1991          346           4.731         3.26         -4.029         22.86 \r\n 1991          347           4.937         2.402        -7.112         0 \r\n 1991          348           6.685        -1.999        -10.335        0 \r\n 1991          349           6.274         5.734        -10.445        0 \r\n 1991          350           7.2           4.097        -3.622         0 \r\n 1991          351           6.685        -1.193        -14.833        0 \r\n 1991          352           7.817        -3.056        -13.444        0 \r\n 1991          353           6.068        -0.041        -3.986         0 \r\n 1991          354           4.011         2.484        -6.213         17.53 \r\n 1991          355           4.628         1.946        -2.409         0 \r\n 1991          356           5.348         1.75         -1.527         0 \r\n 1991          357           3.291         4.656        -4.6           0.25 \r\n 1991          358           6.274         5.639        -5.642         0 \r\n 1991          359           7.508         4.322        -3.213         0 \r\n 1991          360           6.685         6.742        -2.961         0 \r\n 1991          361           4.423         0.928        -2.072         0 \r\n 1991          362           1.851         2.454        -1.454         0 \r\n 1991          363           1.543         3.439        -0.225         0 \r\n 1991          364           1.559         2.229        -0.469         0 \r\n 1991          365           1.559         3.315         0.067         0.25 \r\n 1992          1             1.871         2.459        -0.306         2.29 \r\n 1992          2             0.936         3.626        -0.176         0 \r\n 1992          3             1.871         4.267        -1.89          0 \r\n 1992          4             4.678         1.983        -2.364         0 \r\n 1992          5             1.871         2.643        -0.407         0.76 \r\n 1992          6             1.576         3.197         0.058         0 \r\n 1992          7             2.732         6.437         0.704         0 \r\n 1992          8             2.942         8.264        -2.582         13.21 \r\n 1992          9             5.883         0.134        -7.131         0.76 \r\n 1992          10            6.829         5.358        -7.881         0 \r\n 1992          11            8.6           11.536       -1.252         0 \r\n 1992          12            5.308         4.465        -1.518         4.06 \r\n 1992          13            5.733        -1.501        -9.566         0 \r\n 1992          14            7.22          4.158        -10.22         0 \r\n 1992          15            7.432         4.828        -22.69         1.27 \r\n 1992          16            9.547         4.709        -15.21         0 \r\n 1992          17            9.762         2.043        -13.91         0 \r\n 1992          18            6.651        -11.65        -16.19         0 \r\n 1992          19            9.754         6.629        -15.88         0 \r\n 1992          20            10.079        7.02         -7.32          0 \r\n 1992          21            9.863         11.03        -3.184         0 \r\n 1992          22            6.569         19.639        0.517         7.11 \r\n 1992          23            4.817         2.439        -8             0.25 \r\n 1992          24            9.635         10.53        -12.24         0 \r\n 1992          25            10.285        19.689       -10.35         0.76 \r\n 1992          26            10.174        6.888        -11.35         0 \r\n 1992          27            9.843         1.25         -7.07          0 \r\n 1992          28            7.037         1.026        -8.26          0 \r\n 1992          29            8.601         22.939       -0.971         0 \r\n 1992          30            8.936         9.65          0.416         0 \r\n 1992          31            8.686         10.174       -2.154         0 \r\n 1992          32            9.25          12.469       -2.469         0 \r\n 1992          33            10.716        17.947       -0.983         0 \r\n 1992          34            10.594        16.978       -0.422         0 \r\n 1992          35            8.771         7.272        -3.983         0 \r\n 1992          36            9.201         11.913       -5.008         0 \r\n 1992          37            7.936         10.162       -2.481         0 \r\n 1992          38            7.016         5.81         -9.679         0 \r\n 1992          39            8.709         0.778        -10.961        0 \r\n 1992          40            5.69          1.034        -7.948         0 \r\n 1992          41            7.972         3.486        -7.716         4.83 \r\n 1992          42            11.137       -4.263        -9.009         0 \r\n 1992          43            6.627        -2.724        -8.033         0 \r\n 1992          44            6.153         0.454        -4.288         0 \r\n 1992          45            4.142        -0.259        -0.686         5.08 \r\n 1992          46            2.269         0.788        -1.269         15.24 \r\n 1992          47            5.733         5.816         0.267         0 \r\n 1992          48            6.992         2.808         0.729         6.86 \r\n 1992          49            2.29          1.526        -0.167         6.35 \r\n 1992          50            3.893         0.178        -1.469         0.25 \r\n 1992          51            9.245         8.24         -4.347         0 \r\n 1992          52            13.135        1.684        -5.153         0 \r\n 1992          53            11.048        6.352        -2.743         0 \r\n 1992          54            11.643        3.618        -1.689         0 \r\n 1992          55            8.794         1.172        -4.298         0 \r\n 1992          56            11.497       -0.437        -6.654         0 \r\n 1992          57            13.872        9.78         -5.544         0 \r\n 1992          58            14.246        10.26         0.496         0 \r\n 1992          59            13.49         11.03         0.09          0 \r\n 1992          60            14.562        12.98        -2.417         0 \r\n 1992          61            13.297        22.3          5.198         0 \r\n 1992          62            13.189        20.7          3.033         0 \r\n 1992          63            13.621        11.74         4.426         0 \r\n 1992          64            13.303        15.47         4.912         0 \r\n 1992          65            11.341        13.48         10.26         20.07 \r\n 1992          66            7.369         16.262        8.526         11.43 \r\n 1992          67            6.709         13.912        7.144         0 \r\n 1992          68            7.987         13.171        5.774         1.02 \r\n 1992          69            12.424        6.793        -6.807         12.19 \r\n 1992          70            10.851       -5.105        -10.01         0 \r\n 1992          71            12.64         0.374        -7.779         0.51 \r\n 1992          72            10.604       -1.856        -9.658         0 \r\n 1992          73            13.762        0.888        -9.112         0 \r\n 1992          74            13.536        4.955        -2.347         0 \r\n 1992          75            12.284        4.295        -4.599         0 \r\n 1992          76            13.877        15.589       -0.641         0 \r\n 1992          77            14.565        6.01         -0.413         0 \r\n 1992          78            15.725        5.389        -0.569         0 \r\n 1992          79            9.712         7.885        -3.421         0 \r\n 1992          80            13.405        8.265        -0.439         0 \r\n 1992          81            12.822        2.717        -2.193         4.32 \r\n 1992          82            8.93          6.254        -6.878         0 \r\n 1992          83            15.753        15.244       -2.965         0 \r\n 1992          84            16.345        19.499       -0.221         0 \r\n 1992          85            17.549        12.952        0.679         0 \r\n 1992          86            16.594        4.753        -5.712         0 \r\n 1992          87            16.124        9.797        -4.353         0 \r\n 1992          88            16.605        4.742         2.438         8.38 \r\n 1992          89            10.429        5.331         1.781         5.84 \r\n 1992          90            3.153         12.21         0.441         0 \r\n 1992          91            12.587        6.871        -2.455         0 \r\n 1992          92            14.434        2.983        -5.221         0 \r\n 1992          93            16.842        8.16         -6.239         0 \r\n 1992          94            18.728        18.38        -0.463         0 \r\n 1992          95            20.364        13.13        -0.516         0 \r\n 1992          96            21.043        17.66         0.68          0 \r\n 1992          97            19.561        24.52         4.894         7.62 \r\n 1992          98            20.245        17.3          5.653         0 \r\n 1992          99            15.16         10.98         2.938         5.588 \r\n 1992          100           19.708        12.74         1.3           0 \r\n 1992          101           12.08         24.09         7.25          0 \r\n 1992          102           18.606        10.36        -0.669         0 \r\n 1992          103           19.994       -0.389        -5.167         0 \r\n 1992          104           19.303        4.238        -1.856         2.286 \r\n 1992          105           7.414         13.11         3.938         0.762 \r\n 1992          106           13.104        27.64         7.12          18.288 \r\n 1992          107           19.163        9.19          5.168         0 \r\n 1992          108           16.322        8.59          5.442         0.254 \r\n 1992          109           5.819         19.42         7.52          16.002 \r\n 1992          110           13.295        15.48         9.63          4.318 \r\n 1992          111           11.866        9.64          2.125         19.558 \r\n 1992          112           10.079        2.138        -0.835         6.35 \r\n 1992          113           11.087        5.081        -0.882         0.254 \r\n 1992          114           6.236         8.61          0.966         10.414 \r\n 1992          115           10.586        9.7           1.852         0.254 \r\n 1992          116           12.122        6.007         1.237         0 \r\n 1992          117           15.481        8.59          2.582         0 \r\n 1992          118           14.266        13.38         1.542         0 \r\n 1992          119           19.12         18.37         0.641         0 \r\n 1992          120           23.385        26.64         9.62          0 \r\n 1992          121           23.4          31.32         10.55         0 \r\n 1992          122           23.704        29.79         17.85         0 \r\n 1992          123           23.799        23.16         11.21         0 \r\n 1992          124           23.488        21.91         6.877         0 \r\n 1992          125           25.216        20.93         8.35          0 \r\n 1992          126           23.18         14.9          2.278         0 \r\n 1992          127           25.999        19.12         2.724         0 \r\n 1992          128           26.492        22.65         4.43          0.508 \r\n 1992          129           26.65         25.67         5.383         0 \r\n 1992          130           26.99         28.28         11.34         0.254 \r\n 1992          131           25.403        26.94         10.38         0 \r\n 1992          132           24.926        25.69         16.93         0 \r\n 1992          133           19.021        23.96         12.05         0 \r\n 1992          134           18.861        16.24         7.02          0 \r\n 1992          135           25.734        22.27         8.82          0 \r\n 1992          136           19.953        23.17         12.53         0 \r\n 1992          137           21.562        31.78         15.42         6.096 \r\n 1992          138           22.367        16.2          10.41         0.508 \r\n 1992          139           19.762        23.89         8.05          0 \r\n 1992          140           22.354        27.51         10.05         0 \r\n 1992          141           25.108        28.81         14.72         0 \r\n 1992          142           23.154        25.83         16.2          0.508 \r\n 1992          143           19.404        29.26         9.8           1.27 \r\n 1992          144           17.936        17.46         7.68          0 \r\n 1992          145           19.203        16.32         4.79          0 \r\n 1992          146           20.516        8.3           4.561         14.986 \r\n 1992          147           14.443        13.05         5.011         0 \r\n 1992          148           7.599         16.81         4.269         0 \r\n 1992          149           22.137        20.24         6.184         0 \r\n 1992          150           24.615        22.51         7.66          0 \r\n 1992          151           25.276        25.21         9.28          0 \r\n 1992          152           25.937        25.96         9.99          0 \r\n 1992          153           27.322        22.35         14.55         0 \r\n 1992          154           22.106        26.79         13.11         0 \r\n 1992          155           22.997        27.46         13.6          0 \r\n 1992          156           26.741        25.99         15.98         0 \r\n 1992          157           24.602        28.28         11.24         0.254 \r\n 1992          158           29.067        24.34         14.11         0.508 \r\n 1992          159           25.658        26.12         8.95          0 \r\n 1992          160           28.17         23.88         14.49         0 \r\n 1992          161           21.531        23.66         15.76         0 \r\n 1992          162           15.61         27.78         17.28         0.254 \r\n 1992          163           19.019        29.38         14.17         0 \r\n 1992          164           27.99         31.35         17.67         0 \r\n 1992          165           27.989        30.96         16.31         0 \r\n 1992          166           27.808        30.48         15.65         0 \r\n 1992          167           27.989        30.03         16.53         0 \r\n 1992          168           24.739        31.09         21.65         0 \r\n 1992          169           15.168        26.65         18.82         9.652 \r\n 1992          170           15.891        28.55         16.62         0 \r\n 1992          171           21.308        25.79         13.88         2.54 \r\n 1992          172           18.057        19.49         9.11          0 \r\n 1992          173           25.642        22.8          5.343         0 \r\n 1992          174           28.17         27.09         12.15         2.54 \r\n 1992          175           24.919        30            12.38         0 \r\n 1992          176           20.224        26.66         13.81         0 \r\n 1992          177           27.447        26.13         14.17         0 \r\n 1992          178           23.113        23.1          10.97         0 \r\n 1992          179           27.628        24.23         9.95          0 \r\n 1992          180           26.725        29.29         15.67         0 \r\n 1992          181           22.572        28.67         15.64         0 \r\n 1992          182           24.377        29.75         15.75         0 \r\n 1992          183           25.816        31.59         17.18         0 \r\n 1992          184           25.763        22.666        16.994        87.376 \r\n 1992          185           17.865        24            12.884        1.524 \r\n 1992          186           16.925        26.91         14.48         0 \r\n 1992          187           23.13         22.51         14.62         0 \r\n 1992          188           22.378        24.2          12.72         0 \r\n 1992          189           25.951        29.79         18.99         8.89 \r\n 1992          190           17.19         29.26         19.16         0 \r\n 1992          191           19.806        25.52         18.12         0.254 \r\n 1992          192           21.861        26.51         16.67         0 \r\n 1992          193           20.366        24.79         14.37         0.254 \r\n 1992          194           23.356        27.57         19.94         15.748 \r\n 1992          195           13.366        25.01         18.86         22.86 \r\n 1992          196           12.252        19.46         16.35         0.254 \r\n 1992          197           12.066        25.81         12.63         57.15 \r\n 1992          198           23.019        28.63         16.28         4.572 \r\n 1992          199           17.89         24.75         14.76         0 \r\n 1992          200           24.53         26.23         14.2          0 \r\n 1992          201           25.268        28.18         15.16         0 \r\n 1992          202           25.452        21.92         13.61         0.254 \r\n 1992          203           22.72         13.58         11.064        1.27 \r\n 1992          204           25.835        16.931        15.092        0 \r\n 1992          205           14.658        17.821        14.361        25.324 \r\n 1992          206           12.56         15.916        14.672        23.317 \r\n 1992          207           11.65         30.246        17.968        0 \r\n 1992          208           12.742        25.731        16.416        0 \r\n 1992          209           14.646        29.361        14.409        5.664 \r\n 1992          210           25.857        27.697        15.717        29.947 \r\n 1992          211           18.263        19.203        14.582        10.643 \r\n 1992          212           16.883        15.007        13.764        3.15 \r\n 1992          213           9.879         22.626        12.597        0 \r\n 1992          214           19.98         26.521        13.538        9.703 \r\n 1992          215           27.046        22.902        14.829        0 \r\n 1992          216           18.738        21.414        12.718        0 \r\n 1992          217           24.581        18.143        12.311        0 \r\n 1992          218           27.39         18.681        14.193        0 \r\n 1992          219           22.825        21.992        14.722        18.186 \r\n 1992          220           20.752        29.147        16.086        0 \r\n 1992          221           16.218        30.906        17.763        0 \r\n 1992          222           17.146        32.081        22.143        0 \r\n 1992          223           21.648        28.017        15.004        0 \r\n 1992          224           19.435        26.082        13.456        9.322 \r\n 1992          225           24.595        21.949        13.851        0 \r\n 1992          226           17.371        21.27         9.691         6.248 \r\n 1992          227           18.105        20.68         11.287        0 \r\n 1992          228           16.738        21.51         9.2           0 \r\n 1992          229           24.932        22.51         10.67         0 \r\n 1992          230           24.253        24.06         11.79         0.254 \r\n 1992          231           23.072        23.98         15.01         0 \r\n 1992          232           19.704        25.14         12.23         0 \r\n 1992          233           24.581        25.02         10.4          0 \r\n 1992          234           24.748        26.48         11.28         0 \r\n 1992          235           24.413        26.48         12.43         0 \r\n 1992          236           23.409        28.18         15.44         0 \r\n 1992          237           21.416        30.2          17.29         0 \r\n 1992          238           19.614        21.13         14.99         8.128 \r\n 1992          239           20.603        18.54         13.62         0 \r\n 1992          240           9.818         20.26         12.11         0 \r\n 1992          241           15.054        24.84         8.36          0 \r\n 1992          242           22.904        28.78         11.99         0 \r\n 1992          243           23.229        20.79         9.4           0 \r\n 1992          244           22.897        23.03         7.2           0 \r\n 1992          245           23.058        21.18         13.28         7.62 \r\n 1992          246           18.672        25.14         16.53         7.874 \r\n 1992          247           10.373        26.4          12.21         0 \r\n 1992          248           14.709        27.09         11.16         0 \r\n 1992          249           19.269        22.62         15.47         16.002 \r\n 1992          250           15.912        25.38         15.82         0 \r\n 1992          251           9.781         25.84         9.84          12.954 \r\n 1992          252           15.212        18.28         5.783         0 \r\n 1992          253           15.792        23.65         7.99          2.032 \r\n 1992          254           16.39         18.66         6.104         0 \r\n 1992          255           14.233        21.85         6.418         0 \r\n 1992          256           18.118        24.14         10.79         0 \r\n 1992          257           17.69         29.17         17.46         0 \r\n 1992          258           14.864        22.85         17.64         26.67 \r\n 1992          259           9.768         28.58         17.73         6.604 \r\n 1992          260           7.303         28.31         20.73         12.192 \r\n 1992          261           8.708         27.51         17.15         2.794 \r\n 1992          262           9.476         17.659        7.151         0 \r\n 1992          263           11.845        19.017        5.206         0 \r\n 1992          264           17.418        16.686        11.022        0 \r\n 1992          265           14.515        22.133        8.285         0 \r\n 1992          266           9.188         16.581        5.367         0 \r\n 1992          267           17.964        19.654        5.357         0 \r\n 1992          268           16.459        20.07         6.514         0 \r\n 1992          269           16.323        21.827        7.495         2.972 \r\n 1992          270           15.921        19.348        6.752         0 \r\n 1992          271           10.119        24.104        3.952         0 \r\n 1992          272           12.311        17.736        0.429         0 \r\n 1992          273           17.396        23.613        3.834         0 \r\n 1992          274           16.323        26.406        6.875         0 \r\n 1992          275           16.722        28.196        7.306         0 \r\n 1992          276           16.319        27.947        9.304         0 \r\n 1992          277           15.924        27.987        8.887         0 \r\n 1992          278           15.268        23.503        8.513         0 \r\n 1992          279           14.877        23.822        9.029         0 \r\n 1992          280           13.069        22.084        11.084        0 \r\n 1992          281           12.551        18.412        6.904         2.54 \r\n 1992          282           11.033        13.219        3.398         7.62 \r\n 1992          283           6.799         13.916        4.374         0.51 \r\n 1992          284           8.775         17.914        0.899         0 \r\n 1992          285           9.666         17.879        6.23          0 \r\n 1992          286           13.616        16.401        1.581         0 \r\n 1992          287           11.977        15.876        4.071         0 \r\n 1992          288           12.247        9.529         3.333         0 \r\n 1992          289           11.622        8.43          0.666         0 \r\n 1992          290           7.679         9.653        -4.876         1.52 \r\n 1992          291           7.184         9.624        -4.472         0 \r\n 1992          292           11.048        5.835        -3.514         0 \r\n 1992          293           11.417        15.859       -1.084         0 \r\n 1992          294           9.245         20.375        0.416         0 \r\n 1992          295           8.394         25.943        10.265        0 \r\n 1992          296           12.53         25.307        14.959        0 \r\n 1992          297           11.331        23.001        6.261         0 \r\n 1992          298           8.318         25.821        3.859         0 \r\n 1992          299           11.466        17.192        5.558         0 \r\n 1992          300           11.705        17.058       -1.847         0 \r\n 1992          301           10.887        14.502        5.032         0 \r\n 1992          302           11.242        10.044       -2.778         0 \r\n 1992          303           9.73          9.329        -1.648         0 \r\n 1992          304           9.496         8.168         4.349         0 \r\n 1992          305           7.737         6.152         4.498         1.52 \r\n 1992          306           5.109         5.722         0.331         50.8 \r\n 1992          307           1.51          1.831        -1.516         16.51 \r\n 1992          308           3.105         0.207        -2.209         0.51 \r\n 1992          309           2.3          -1.014        -3.32          0 \r\n 1992          310           2.734        -1.513        -4.278         0 \r\n 1992          311           2.392        -1.348        -4.973         0 \r\n 1992          312           2.848         7.096        -2.556         0 \r\n 1992          313           2.82          12.986        4.735         0 \r\n 1992          314           6.317         12.348        5.344         0 \r\n 1992          315           7.26          6.193        -2.195         0.51 \r\n 1992          316           5.697         5.642         0.751         0 \r\n 1992          317           7.707         3.348        -4.348         1.02 \r\n 1992          318           5.53          0.765        -6.974         0 \r\n 1992          319           7.188         2.584        -6.028         0 \r\n 1992          320           5.972         13.318       -3.263         0 \r\n 1992          321           6.131         10.364       -1.276         0 \r\n 1992          322           7.773         3.277         0.057         0 \r\n 1992          323           8.43          3.862         1.014         0 \r\n 1992          324           3.035         8.999         3.069         20.57 \r\n 1992          325           2.601         3.872        -0.376         19.56 \r\n 1992          326           4.227        -0.208        -1.639         1.02 \r\n 1992          327           3.54          1.958        -0.612         0 \r\n 1992          328           2.36          2.764         0.486         0 \r\n 1992          329           2.038         2.778        -1.028         0.51 \r\n 1992          330           2.145        -0.931        -8.294         5.08 \r\n 1992          331           2.76         -2.636        -10.986        1.02 \r\n 1992          332           4.671        -2.758        -13.76         0 \r\n 1992          333           9.131        -0.593        -12.26         0 \r\n 1992          334           9.343         0.083        -5.152         0 \r\n 1992          335           8.93          1.638        -12.334        0 \r\n 1992          336           7.985         2.848        -2.788         2.03 \r\n 1992          337           8.72         -0.247        -7.193         0 \r\n 1992          338           5.778        -1.363        -10.987        0 \r\n 1992          339           7.144        -6.541        -17.058        0 \r\n 1992          340           8.005        -3.487        -11.808        0 \r\n 1992          341           8.109        -3.167        -7.681         1.52 \r\n 1992          342           7.485        -2.289        -15.084        0 \r\n 1992          343           5.614         0.696        -5.655         0 \r\n 1992          344           8.109         2.042        -0.486         1.27 \r\n 1992          345           7.485         1.517        -9.181         0.51 \r\n 1992          346           2.495         0.023        -5.516         0 \r\n 1992          347           7.405         0.749        -1.501         0 \r\n 1992          348           5.451         0.58         -1.109         4.06 \r\n 1992          349           3.908         1.917        -0.459         21.59 \r\n 1992          350           1.543        -0.335        -3.792         1.78 \r\n 1992          351           2.571        -2.598        -4.444         1.52 \r\n 1992          352           3.6          -1.305        -3.902         0 \r\n 1992          353           2.777        -0.486        -6.336         0 \r\n 1992          354           2.777        -1.474        -14.293        0 \r\n 1992          355           5.451         2.862        -7.015         0 \r\n 1992          356           8.125         4.002        -6.642         0 \r\n 1992          357           7.714         2.752        -12.956        0 \r\n 1992          358           7.714        -4.241        -17.751        0 \r\n 1992          359           8.228         0.639        -11.317        0 \r\n 1992          360           8.125        -0.402        -13.891        0 \r\n 1992          361           8.228         3.736        -6.972         0 \r\n 1992          362           7.405         1.363        -6.186         0 \r\n 1992          363           7.92          0.639        -6.642         0 \r\n 1992          364           7.405        -4.166        -11.461        10.16 \r\n 1992          365           4.678        -11.089       -19.876        1.78 \r\n 1992          366           6.653        -13.195       -20.974        0 \r\n 1993          1             5.614        -2.514        -14.35         0 \r\n 1993          2             7.901         1.597        -2.557         0 \r\n 1993          3             5.51         -0.001        -13.099        0.51 \r\n 1993          4             8.212        -9.026        -17.711        0.76 \r\n 1993          5             6.549        -8.204        -14.834        0 \r\n 1993          6             6.304        -7.236        -13.419        0 \r\n 1993          7             5.778        -7.487        -19.884        1.52 \r\n 1993          8             6.199        -6.906        -13.175        1.52 \r\n 1993          9             6.514        -7.957        -11.543        0 \r\n 1993          10            3.992        -5.749        -12.407        0.76 \r\n 1993          11            5.627        -2            -6.514         1.52 \r\n 1993          12            3.079        -2.514        -9.237         10.92 \r\n 1993          13            4.034        -7.476        -11.543        0 \r\n 1993          14            5.096        -8.569        -16.881        0 \r\n 1993          15            8.281        -2.014        -9.919         0 \r\n 1993          16            8.367        -1.471        -17.509        0 \r\n 1993          17            9.869        -9.134        -20.129        0 \r\n 1993          18            8.796        -6.734        -17.599        0 \r\n 1993          19            9.321        -2.197        -14.55         0 \r\n 1993          20            9.538        -1.071        -2.882         4.57 \r\n 1993          21            3.36          0.95         -4.491         0 \r\n 1993          22            5.474         3            -1.739         0 \r\n 1993          23            7.117         0.757        -13.426        0 \r\n 1993          24            10.401       -4.296        -14.062        0 \r\n 1993          25            9.29          3.844        -9.008         0 \r\n 1993          26            10.285        3.236        -6.024         0 \r\n 1993          27            8.847        -1.316        -9.98          0 \r\n 1993          28            8.824        -8.153        -21.119        0 \r\n 1993          29            11.617       -2.072        -16.363        0 \r\n 1993          30            11.058        3.042        -4.942         0 \r\n 1993          31            10.152        3.248        -3.451         0 \r\n 1993          32            9.137         1.655        -5.963         0 \r\n 1993          33            9.137         2.886        -5.633         0 \r\n 1993          34            9.796         1.231        -6.621         0 \r\n 1993          35            9.568        -0.654        -4.162         0 \r\n 1993          36            6.096        -0.411        -2.377         0 \r\n 1993          37            3.91         -1.191        -2.323         0 \r\n 1993          38            1.955        -1.534        -2.771         0 \r\n 1993          39            2.439        -0.534        -1.732         0 \r\n 1993          40            3.019         0.577        -1.082         0.25 \r\n 1993          41            3.165         0.163        -3.769         2.54 \r\n 1993          42            5.861        -2.742        -6.545         1.78 \r\n 1993          43            4.023        -4.947        -8.874         2.79 \r\n 1993          44            5.207        -5.797        -14.447        1.52 \r\n 1993          45            11.952       -8.047        -15.499        0 \r\n 1993          46            10.988       -11.298       -17.597        0 \r\n 1993          47            10.869       -13.585       -23.234        0 \r\n 1993          48            13.621       -10.165       -20.769        0 \r\n 1993          49            13.139       -3.966        -17.045        0 \r\n 1993          50            15.085       -3.67         -10.036        0 \r\n 1993          51            11.922       -3.762        -6.457         0 \r\n 1993          52            5.524        -5.698        -13.034        7.11 \r\n 1993          53            9.821        -12.77        -22.118        1.27 \r\n 1993          54            15.731       -12.168       -24.678        0 \r\n 1993          55            16.845       -10.133       -14.689        0 \r\n 1993          56            15.246       -7.972        -14.392        3.56 \r\n 1993          57            9.623        -6.851        -17.157        0.51 \r\n 1993          58            16.642        1.78         -17.362        0 \r\n 1993          59            18.407        2.634        -6.728         0 \r\n 1993          60            15.243        0.862        -1.297         0 \r\n 1993          61            7.135         1.122        -0.469         13.46 \r\n 1993          62            2.378         1.764        -1.547         3.3 \r\n 1993          63            5.125         0.912        -2.2           0 \r\n 1993          64            9.487         3.194        -4.983         0 \r\n 1993          65            13.088        5.546        -1.508         0 \r\n 1993          66            13.968        4.761        -0.617         0 \r\n 1993          67            11.869        2.16         -3.024         0 \r\n 1993          68            13.089        0.924        -2.199         0 \r\n 1993          69            11.186       -1.856        -12.19         1.52 \r\n 1993          70            16.332       -4.876        -11.906        0 \r\n 1993          71            14.89        -6.327        -18.262        0 \r\n 1993          72            16.921       -6.854        -15.212        0 \r\n 1993          73            14.446        8.228        -9.95          0 \r\n 1993          74            16.379        7.665        -4.308         0 \r\n 1993          75            17.432       -3.136        -15.47         0 \r\n 1993          76            18.579       -3.364        -12.368        0 \r\n 1993          77            13.875        1.145        -4.584         0 \r\n 1993          78            9.481         1.801        -1.339         2.54 \r\n 1993          79            8.859         0.656        -3.242         0 \r\n 1993          80            8.159         0.702        -0.77          0 \r\n 1993          81            4.113         0.163        -1.572         8.13 \r\n 1993          82            5.567         3.047        -1.583         0.76 \r\n 1993          83            7.699         6.956         0.508         0 \r\n 1993          84            11.7          9.296        -0.175         0 \r\n 1993          85            17.908        9.765        -0.461         0 \r\n 1993          86            18.771        13.125       -0.461         0 \r\n 1993          87            19.854        17.839        1.604         0 \r\n 1993          88            20.493        11.726        7.441         0 \r\n 1993          89            14.188        10.646        2.749         42.67 \r\n 1993          90            10.51         3.056        -3.802         10.41 \r\n 1993          91            12.388        1.919        -6.215         0 \r\n 1993          92            18.324        6.731        -1.483         0 \r\n 1993          93            18.728        8.821        -3.928         0 \r\n 1993          94            20.5          9.073        -3.011         0 \r\n 1993          95            20.907        9.981        -0.91          0 \r\n 1993          96            19.972        9.697         3.949         3.531 \r\n 1993          97            15.868        9.485         5.632         5.359 \r\n 1993          98            6.753         13.568       -0.674         0 \r\n 1993          99            19.846        15.103       -1.027         0 \r\n 1993          100           22.216        15.116        3.272         0 \r\n 1993          101           15.412        7.841         0.157         4.521 \r\n 1993          102           11.108        7.848         1.137         0 \r\n 1993          103           14.128        6.184         2.188         6.833 \r\n 1993          104           7.833         3.418         0.064         7.29 \r\n 1993          105           5.777         11.331       -0.452         4.242 \r\n 1993          106           12.259        15.314        0.252         0 \r\n 1993          107           23.703        19.001        4.952         0 \r\n 1993          108           22.851        18.123        8.774         12.243 \r\n 1993          109           15.583        14.026       -0.515         8.179 \r\n 1993          110           17.441        12.497        0.226         0 \r\n 1993          111           22.175        17.288        0.417         0 \r\n 1993          112           23.614        19.347        4.418         0 \r\n 1993          113           22.913        18.693        8.65          0 \r\n 1993          114           20.448        17.189        5.874         0 \r\n 1993          115           21.177        17.382        2.724         0 \r\n 1993          116           23.368        17.459        9.784         4.445 \r\n 1993          117           14.855        20.103        5.717         5.258 \r\n 1993          118           17.208        21.171        7.553         0 \r\n 1993          119           23.091        21.304        7.244         0 \r\n 1993          120           22.66         18.507        10.361        17.628 \r\n 1993          121           16.521        17.331        8.989         4.674 \r\n 1993          122           11.666        11.62         8.425         8.306 \r\n 1993          123           6.066         16.584        11.281        0 \r\n 1993          124           8.458         22.183        8.786         0 \r\n 1993          125           21.927        23.407        14.956        9.957 \r\n 1993          126           20.361        24.447        15.64         16.967 \r\n 1993          127           12.931        24.649        15.545        26.365 \r\n 1993          128           13.877        20.948        12.759        4.267 \r\n 1993          129           14.924        20.519        14.43         14.478 \r\n 1993          130           11.59         20.314        13.226        0 \r\n 1993          131           16.353        23.981        13.678        11.201 \r\n 1993          132           15.984        24.564        11.536        0 \r\n 1993          133           27.492        21.673        8.646         0 \r\n 1993          134           25.574        28.451        9.819         0 \r\n 1993          135           26.872        22.604        8.576         8.839 \r\n 1993          136           19.47         20.251        7.677         0 \r\n 1993          137           23.332        22.387        9.103         0 \r\n 1993          138           23.65         16.337        7.817         0 \r\n 1993          139           23.002        14.34         6.72          0 \r\n 1993          140           22.03         14.91         7.121         0 \r\n 1993          141           25.274        22            10.26         0 \r\n 1993          142           17.61         16.63         10.69         6.096 \r\n 1993          143           9.946         20.64         13.57         12.446 \r\n 1993          144           14.443        16.51         11.47         0 \r\n 1993          145           21.993        20.63         8.5           0 \r\n 1993          146           26.753        25.59         8.27          0 \r\n 1993          147           18.503        28.49         14.45         15.748 \r\n 1993          148           20.32         15.96         10.41         7.62 \r\n 1993          149           10.573        14.65         10.2          5.08 \r\n 1993          150           13.712        21.06         7.93          1.778 \r\n 1993          151           26.597        19.45         6.874         0 \r\n 1993          152           27.841        15.2          5.482         8.636 \r\n 1993          153           11.41         12.88         9.68          8.382 \r\n 1993          154           15.153        18.65         9.67          0.508 \r\n 1993          155           13.727        16.62         10.02         0 \r\n 1993          156           19.432        21.77         8.63          0 \r\n 1993          157           22.608        20.9          13.58         0.508 \r\n 1993          158           10.945        23.58         17.09         8.89 \r\n 1993          159           15.251        28.38         15.89         0 \r\n 1993          160           26.914        26.58         14.02         0 \r\n 1993          161           27.093        28.72         14.18         0 \r\n 1993          162           27.632        28.92         15.18         0 \r\n 1993          163           17.404        27.69         18.17         2.54 \r\n 1993          164           15.529        24.09         17.77         33.02 \r\n 1993          165           17.516        25.17         12.4          0 \r\n 1993          166           29.434        23.66         9.77          0 \r\n 1993          167           25.642        27.3          14.33         11.176 \r\n 1993          168           18.419        31.81         20.2          8.128 \r\n 1993          169           16.252        25.84         19.27         5.08 \r\n 1993          170           12.64         20.49         16.76         8.636 \r\n 1993          171           13.182        25.52         15.41         0 \r\n 1993          172           27.447        29.53         14.69         0 \r\n 1993          173           27.447        30.74         16.99         0 \r\n 1993          174           22.211        29.39         20.88         0 \r\n 1993          175           16.432        23.85         14.78         6.858 \r\n 1993          176           20.405        25.73         12.2          0 \r\n 1993          177           26.364        30.71         17.26         3.556 \r\n 1993          178           20.585        31.12         16.63         1.778 \r\n 1993          179           18.96         24.19         17.18         0 \r\n 1993          180           18.78         27.84         17.43         65.786 \r\n 1993          181           15.529        20.41         17.54         6.858 \r\n 1993          182           10.561        25.11         17.65         0.254 \r\n 1993          183           19.745        29.34         21.17         0 \r\n 1993          184           21.626        31.99         20.95         0 \r\n 1993          185           16.172        28.33         20.37         14.224 \r\n 1993          186           16.172        22.79         17.8          20.066 \r\n 1993          187           15.796        26.65         16.56         0 \r\n 1993          188           22.566        25.71         17.57         3.302 \r\n 1993          189           16.629        28.43         18.16         101.854 \r\n 1993          190           17.377        27.4          18.24         31.242 \r\n 1993          191           24.103        28.24         18.38         1.27 \r\n 1993          192           15.695        25            16.88         62.484 \r\n 1993          193           27.279        24.68         14.44         0 \r\n 1993          194           18.935        28.92         17.29         42.164 \r\n 1993          195           16.893        24.03         19.318        5.588 \r\n 1993          196           14.851        25.546        18.773        0 \r\n 1993          197           17.45         25.188        18.831        10.922 \r\n 1993          198           13.648        29.383        20.522        0 \r\n 1993          199           15.677        28.033        20.669        0 \r\n 1993          200           15.861        28.027        19.229        0 \r\n 1993          201           24.161        33.333        16.741        0 \r\n 1993          202           23.087        25.082        15.995        0.254 \r\n 1993          203           14.292        22.417        16.53         11.43 \r\n 1993          204           10.81         32.222        21.667        0 \r\n 1993          205           20.751        37.222        21.667        7.366 \r\n 1993          206           16.2          28.333        10.93         1.778 \r\n 1993          207           25.665        33.81         9.844         0 \r\n 1993          208           16.816        32.715        13.821        23.622 \r\n 1993          209           18.443        34.746        8.201         0.254 \r\n 1993          210           26.399        35.268        18.914        0 \r\n 1993          211           27.121        35.034        15.628        0 \r\n 1993          212           24.607        32.979        7.61          11.684 \r\n 1993          213           16.294        27.778        9.073         0 \r\n 1993          214           27.223        27.006        14.916        0 \r\n 1993          215           25.455        27.006        11.528        0 \r\n 1993          216           26.336        31.023        10.519        0 \r\n 1993          217           17.733        30.759        5.943         20.828 \r\n 1993          218           17.733        31.429        21.937        0.254 \r\n 1993          219           25.809        33.226        12.89         0 \r\n 1993          220           23.89         35.939        19.33         0 \r\n 1993          221           21.648        34.708        15.792        36.83 \r\n 1993          222           16.453        45            11.074        0 \r\n 1993          223           21.327        30            19.477        9.906 \r\n 1993          224           15.307        30            20.891        0.254 \r\n 1993          225           19.607        28.333        18.979        34.036 \r\n 1993          226           14.689        33.333        18.952        17.526 \r\n 1993          227           14.006        33.333        19.426        21.844 \r\n 1993          228           14.247        29.444        18.452        25.654 \r\n 1993          229           20.861        32.222        18.917        0 \r\n 1993          230           20.546        32.222        17.812        12.192 \r\n 1993          231           15.662        27.778        17.192        0.254 \r\n 1993          232           21.236        27.778        14.549        0 \r\n 1993          233           21.069        27.222        18.513        0 \r\n 1993          234           15.217        27.222        19.883        10.414 \r\n 1993          235           14.61         28.889        17.759        1.524 \r\n 1993          236           20.586        31.667        19.398        0 \r\n 1993          237           20.109        31.667        21.113        3.048 \r\n 1993          238           18.461        31.667        21.128        0.254 \r\n 1993          239           17.836        31.667        17.263        0 \r\n 1993          240           13.581        23.889        18.268        4.318 \r\n 1993          241           8.122         27.222        16.982        51.054 \r\n 1993          242           9.584         27.222        11.55         15.494 \r\n 1993          243           15.641        22.778        9.498         0 \r\n 1993          244           22.09         25            16.456        0 \r\n 1993          245           17.635        25            12.78         0.254 \r\n 1993          246           18.228        23.333        11.071        0 \r\n 1993          247           19.71         26.667        10.163        0 \r\n 1993          248           20.151        26.667        10.406        10.668 \r\n 1993          249           10.219        20            10.461        0 \r\n 1993          250           19.561        20            8.483         0.508 \r\n 1993          251           19.558        22.778        12.423        0.254 \r\n 1993          252           18.11         22.778        8.318         0 \r\n 1993          253           19.265        22.778        8.31          0 \r\n 1993          254           19.409        28.889        13.601        0.508 \r\n 1993          255           18.831        32.222        14.818        0 \r\n 1993          256           18.831        32.222        6.737         12.446 \r\n 1993          257           13.448        25            2.641         0.762 \r\n 1993          258           15.43         18.889        3.274         0 \r\n 1993          259           17.697        22.778        6.056         0 \r\n 1993          260           17.697        22.778        11.114        1.27 \r\n 1993          261           11.426        16.667        12.177        2.794 \r\n 1993          262           6.689         21.667        13.708        14.986 \r\n 1993          263           6.083         21.667        11.475        0 \r\n 1993          264           12.995        27.778        14.88         1.27 \r\n 1993          265           10.285        27.778        6.742         0 \r\n 1993          266           16.73         18.889        6.113         0 \r\n 1993          267           15.643        16.111        9.214         32.639 \r\n 1993          268           10.202        23.889        7.237         3.937 \r\n 1993          269           9.849         23.889        1.721         0 \r\n 1993          270           16.73         26.111        6.956         0 \r\n 1993          271           15.657        26.111        1.105         0 \r\n 1993          272           16.593        20            4.142         0 \r\n 1993          273           15.925        27.778        10.923        0 \r\n 1993          274           14.598        25            1.049         0 \r\n 1993          275           15.529        17.778        3.048         0 \r\n 1993          276           15.661        26.111        10.018        0 \r\n 1993          277           14.877        26.111        2.726         0 \r\n 1993          278           15.529        28.333        14.017        0 \r\n 1993          279           14.363        24.16         16.609        0 \r\n 1993          280           12.033        22.622        11.169        0 \r\n 1993          281           13.727        22.622       -0.458         6.86 \r\n 1993          282           11.033        24.16        -2.751         6.86 \r\n 1993          283           12.718        24.16        -0.808         0 \r\n 1993          284           13.99         22.622        2.599         0 \r\n 1993          285           12.733        22.622       -1.562         0 \r\n 1993          286           12.986        21.084        7.106         0 \r\n 1993          287           12.372        13.394        11.197        0 \r\n 1993          288           6.124         16.354        11.255        13.46 \r\n 1993          289           5.822         11.553        7.823         3.81 \r\n 1993          290           6.441         12.973        5.544         0 \r\n 1993          291           8.716         13.023        8.137         2.54 \r\n 1993          292           4.788         16.629        5.843         1.27 \r\n 1993          293           7.907         11.914        0.584         2.54 \r\n 1993          294           8.272         19.546       -0.114         1.02 \r\n 1993          295           12.53         19.546        4.252         0 \r\n 1993          296           12.416        18.008        4.512         0 \r\n 1993          297           11.693        21.797        6.514         0 \r\n 1993          298           10.988        17.106        6.072         0 \r\n 1993          299           9.555         8.066         2.818         0 \r\n 1993          300           5.325         12.322        4.664         0 \r\n 1993          301           6.508         8.543        -2.743         0 \r\n 1993          302           10.082        0.161        -3.818         0 \r\n 1993          303           4.22          2.045        -7.193         0 \r\n 1993          304           8.206         9.009        -6.598         0 \r\n 1993          305           9.638         11.581        0.717         0 \r\n 1993          306           9.638         13.69        -1.536         0 \r\n 1993          307           9.546         15.419        7.633         0 \r\n 1993          308           8.051         11.833       -3.511         0 \r\n 1993          309           10.138       -1.545        -7.217         0 \r\n 1993          310           5.696         8.58         -8.689         0 \r\n 1993          311           8.771         8.225        -4.417         0 \r\n 1993          312           9.363         10.744       -5.501         0 \r\n 1993          313           9.701         8.887        -3.382         0 \r\n 1993          314           9.271         13.401       -1.399         0 \r\n 1993          315           8.713         13.924        0.175         0 \r\n 1993          316           8.824         17.239       -0.332         10.16 \r\n 1993          317           5.861         12.222       -2.228         1.52 \r\n 1993          318           3.318         8.889        -3.86          1.52 \r\n 1993          319           3.318         1.667        -2.429         3.05 \r\n 1993          320           3.941         7.778        -3.036         0.51 \r\n 1993          321           4.27          8.333        -2.246         0 \r\n 1993          322           6.569         11.111       -2.734         0 \r\n 1993          323           5.094         11.111       -3.844         0 \r\n 1993          324           7.37          11.667       -1.675         0 \r\n 1993          325           7.587         17.222       -1.674         0 \r\n 1993          326           7.616         17.222       -2.481         0 \r\n 1993          327           6.651         10           -6.584         0 \r\n 1993          328           5.364         13.162       -10            2.29 \r\n 1993          329           6.329         7.826        -10.556        8.38 \r\n 1993          330           8.069         4.396        -10.556        0 \r\n 1993          331           6.052         0.581        -6.111         0.76 \r\n 1993          332           7.75          4.444        -3.333         0 \r\n 1993          333           6.158         4.444        -2.447         0 \r\n 1993          334           5.148         4.444        -0.053         0 \r\n 1993          335           6.304         8.889        -2.304         0 \r\n 1993          336           7.249         8.889        -1.629         0 \r\n 1993          337           7.459         7.222        -0.756         0 \r\n 1993          338           5.358         9.444        -1.737         0 \r\n 1993          339           3.327         9.444        -1.344         0 \r\n 1993          340           5.718         7.222        -2.655         0 \r\n 1993          341           6.341         6.111        -2.858         0 \r\n 1993          342           8.316         12.778       -0.341         0 \r\n 1993          343           8.005         18.889       -3.848         0 \r\n 1993          344           7.069         18.889       -4.242         0 \r\n 1993          345           8.005         7.222        -0.656         0 \r\n 1993          346           7.92          15.556       -1.801         0 \r\n 1993          347           3.497         15.556       -2.007         5.08 \r\n 1993          348           1.646         5.556        -2.222         2.54 \r\n 1993          349           3.291         0.556        -2.222         0 \r\n 1993          350           5.245         1.111        -0.212         0 \r\n 1993          351           2.88          1.111        -1.191         2.03 \r\n 1993          352           2.571         1.111        -2.089         1.52 \r\n 1993          353           3.291         1.111        -4.492         0 \r\n 1993          354           5.451         0.556        -4.633         0 \r\n 1993          355           6.48          2.778        -6.358         0 \r\n 1993          356           6.685         2.778        -6.111         0 \r\n 1993          357           5.657         1.941        -6.111         0 \r\n 1993          358           6.068         3.889        -5.556         1.78 \r\n 1993          359           5.348         3.889        -5.012         0 \r\n 1993          360           2.983         3.333        -7.389         2.29 \r\n 1993          361           4.114         3.333        -8.889         0 \r\n 1993          362           7.611        -5.528        -8.889         0 \r\n 1993          363           8.228         0.681        -3.333         0 \r\n 1993          364           8.628         8.889        -1.111         0 \r\n 1993          365           8.42          26.667       -2.568         0 \r\n 1994          1             7.589        -2.458        -8.845         0 \r\n 1994          2             5.198        -3.259        -18.862        7.37 \r\n 1994          3             6.133        -7.741        -13.139        0 \r\n 1994          4             5.925        -7.768        -13.296        0 \r\n 1994          5             4.99         -5.509        -14.968        0 \r\n 1994          6             6.304        -14.372       -24.905        0 \r\n 1994          7             8.09         -13.237       -24.459        0 \r\n 1994          8             7.039        -9.313        -21.398        0 \r\n 1994          9             8.09         -0.298        -10.342        0 \r\n 1994          10            8.195        -0.368        -18.182        0.51 \r\n 1994          11            9.237        -3.641        -14.881        0 \r\n 1994          12            7.857        -4.934        -16.709        0 \r\n 1994          13            8.281        -16.489       -23.153        1.78 \r\n 1994          14            6.795        -20.719       -29.946        0 \r\n 1994          15            7.432        -11.039       -26.532        0 \r\n 1994          16            9.226        -10.848       -23.319        1.27 \r\n 1994          17            8.796        -22.408       -29.338        0 \r\n 1994          18            6.115        -13.949       -28.964        0 \r\n 1994          19            9.429        -12.746       -27.377        1.27 \r\n 1994          20            10.079       -3.114        -22.642        0 \r\n 1994          21            10.621       -1.848        -15.482        0 \r\n 1994          22            10.182        4.999        -8.638         0 \r\n 1994          23            10.182        5.435        -7.065         0 \r\n 1994          24            9.854         0.049        -3.16          0 \r\n 1994          25            5.308        -2.423        -7.168         0.25 \r\n 1994          26            4.977        -3.431        -6.246         0 \r\n 1994          27            2.765        -3.325        -10.509        10.16 \r\n 1994          28            6.925        -5.864        -12.229        0 \r\n 1994          29            6.143        -6.374        -19.167        0 \r\n 1994          30            9.383        -15.71        -28.353        0 \r\n 1994          31            11.28        -10.042       -24.048        0 \r\n 1994          32            11.393       -6.857        -20.098        0 \r\n 1994          33            11.619       -6.414        -17.963        0 \r\n 1994          34            10.594       -5.398        -18.794        0 \r\n 1994          35            10.821       -2.507        -12.661        0 \r\n 1994          36            11.156       -2.37         -11.226        0 \r\n 1994          37            10.236       -10.503       -24.236        0 \r\n 1994          38            11.962       -15.969       -21.823        1.02 \r\n 1994          39            5.922        -15.444       -25.493        1.02 \r\n 1994          40            10.219       -8.032        -23.657        0.25 \r\n 1994          41            12.426       -5.458        -17.048        0 \r\n 1994          42            13.012       -5.297        -9.046         0 \r\n 1994          43            10.65         1.523        -14.153        1.27 \r\n 1994          44            13.49         3.55         -7.826         0 \r\n 1994          45            13.49         3.821        -4.454         0 \r\n 1994          46            11.227        5.496        -6.627         0 \r\n 1994          47            11.705        8.159        -1.45          0 \r\n 1994          48            13.019        12.286        1.117         0 \r\n 1994          49            12.416        13.581        2.848         0 \r\n 1994          50            11.435        3.733        -7.628         0 \r\n 1994          51            15.085        0.926        -7.64          0 \r\n 1994          52            10.189       -1.371        -6.786         0 \r\n 1994          53            9.33         -6.047        -10.545        3.05 \r\n 1994          54            7.308        -8.699        -19.036        10.41 \r\n 1994          55            14.74        -5.856        -17.737        0 \r\n 1994          56            10.622       -9.902        -18.232        3.05 \r\n 1994          57            14.122       -6.413        -16.174        0 \r\n 1994          58            15.129       -2.448        -9.199         0 \r\n 1994          59            10.464       -0.142        -10.103        0 \r\n 1994          60            12.648        3.149        -7.171         0 \r\n 1994          61            13.729        10.79        -1.666         0 \r\n 1994          62            13.405        11.926        1.085         0 \r\n 1994          63            14.176        16.606        0.284         0 \r\n 1994          64            15.266        7.642         0.195         0 \r\n 1994          65            15.618        4.655        -2.416         0 \r\n 1994          66            11.108        0.838        -3.478         0 \r\n 1994          67            10.427        0.617        -7.346         0 \r\n 1994          68            12.313        1.249        -4.759         0 \r\n 1994          69            11.298        5.106        -2.953         0 \r\n 1994          70            13.871        7.709        -0.579         0 \r\n 1994          71            14.89         9.82         -1.961         0 \r\n 1994          72            15.68         15.892       -0.693         0 \r\n 1994          73            16.834        15.332        0.399         0 \r\n 1994          74            17.062        7.022        -5.109         0 \r\n 1994          75            17.088        12.142       -0.4           0 \r\n 1994          76            16.514        12.955        1.457         0 \r\n 1994          77            16.303        17.231        0.526         0 \r\n 1994          78            17.806        17.9          2.289         0 \r\n 1994          79            18.067        17.467       -0.631         0 \r\n 1994          80            19.233        23.223        0.484         2.03 \r\n 1994          81            19.388        25.948        6.788         0 \r\n 1994          82            19.78         18.337       -3.298         1.52 \r\n 1994          83            20.491        6.131        -6.193         0 \r\n 1994          84            16.356        10.061       -0.919         0 \r\n 1994          85            14.923        10.191       -2.349         0 \r\n 1994          86            16.845        3.464        -1.667         0 \r\n 1994          87            11.19         4.445         0.359         0 \r\n 1994          88            13.945        5.023         0.034         0 \r\n 1994          89            16.977        8.367        -1.743         0 \r\n 1994          90            19.797        18.593        0.593         0 \r\n 1994          91            20.116        20.868        3.197         0 \r\n 1994          92            22.501        8.459         1.749         0 \r\n 1994          93            21.692        12.428       -6.921         0 \r\n 1994          94            21.858        18.673        2.833         0 \r\n 1994          95            24.437        0.436        -6.379         0 \r\n 1994          96            16.005        6.952        -6.921         0 \r\n 1994          97            21.476        12.38        -6.379         2.642 \r\n 1994          98            21.775        20.23         4.172         0 \r\n 1994          99            22.602        14.63         0.655         0 \r\n 1994          100           19.439        15.2          2.461         0 \r\n 1994          101           16.106        11.98         4.66          12.725 \r\n 1994          102           8.47          8.51          4.675         0 \r\n 1994          103           9.232         18.66         3.963         0 \r\n 1994          104           20.422        23.98         4.341         13.868 \r\n 1994          105           15.5          13.43         4.98          0 \r\n 1994          106           18.036        19.63         2.775         0 \r\n 1994          107           21.716        24.43         3.757         0 \r\n 1994          108           22.851        33.66         7.92          0 \r\n 1994          109           24.16         19.5          4.001         0 \r\n 1994          110           19.3          16.51         5.719         15.265 \r\n 1994          111           11.663        16.67         6.132         0 \r\n 1994          112           19.871        18.41         3.324         0 \r\n 1994          113           22.188        25.08         3.476         0 \r\n 1994          114           19.578        28.29         15.82         0 \r\n 1994          115           14.021        27.14         16.19         6.731 \r\n 1994          116           12.414        21.3          5.527         0 \r\n 1994          117           20.885        8.31          3.295         4.42 \r\n 1994          118           6.177         6.632         0.848         0 \r\n 1994          119           9.707         8.17         -0.546         9.017 \r\n 1994          120           8.738         4.849         0.32          0 \r\n 1994          121           10.918        11.73         0.211         0 \r\n 1994          122           20.066        15.01         3.085         0 \r\n 1994          123           22.71         18.55         3.714         0 \r\n 1994          124           22.24         19.02         6.048         0 \r\n 1994          125           16.445        15.73         5.509         13.284 \r\n 1994          126           11.12         9.87          6.318         4.801 \r\n 1994          127           9.462         13.97         5.094         0 \r\n 1994          128           22.865        18.15         2.456         0 \r\n 1994          129           24.291        22.55         8.11          0 \r\n 1994          130           26.832        26.57         6.481         0 \r\n 1994          131           24.768        25.99         14.36         0 \r\n 1994          132           25.894        23.57         10.12         0 \r\n 1994          133           25.094        26.78         9.84          14.783 \r\n 1994          134           20.14         19.66         13.21         0 \r\n 1994          135           14.804        24.39         11.54         0 \r\n 1994          136           24.619        26.44         10.85         0 \r\n 1994          137           23.171        25.41         12.96         0 \r\n 1994          138           26.566        26.27         9.69          0 \r\n 1994          139           26.08         26.59         11.8          0 \r\n 1994          140           27.052        26.93         10.96         0 \r\n 1994          141           26.252        28            11.59         0 \r\n 1994          142           23.317        31.15         16.25         4.928 \r\n 1994          143           22.828        30.49         15.07         0 \r\n 1994          144           16.905        25.01         14.9          0 \r\n 1994          145           23.142        23.95         12.49         0 \r\n 1994          146           17.89         19.96         8.76          0 \r\n 1994          147           25.771        23.56         7.86          0 \r\n 1994          148           24.78         25.82         12.18         0 \r\n 1994          149           17.842        25.31         17.05         0 \r\n 1994          150           22.467        31.3          14.27         0 \r\n 1994          151           23.128        28.04         15.63         3.912 \r\n 1994          152           25.247        20.38         13.42         3.48 \r\n 1994          153           9.983         16.76         9.74          0 \r\n 1994          154           25.137        23.96         8.06          0 \r\n 1994          155           26.385        25.44         10.6          13.945 \r\n 1994          156           16.401        26.51         16.85         0 \r\n 1994          157           15.251        32.11         17.13         20.142 \r\n 1994          158           16.687        27.53         16.88         20.422 \r\n 1994          159           16.328        18.25         13.45         0 \r\n 1994          160           19.019        23.04         11.79         0 \r\n 1994          161           22.787        24.9          13.07         4.318 \r\n 1994          162           19.199        26.64         12.01         0 \r\n 1994          163           23.864        26.47         14.95         10.389 \r\n 1994          164           16.613        30.02         17.016        0 \r\n 1994          165           17.516        32.27         22.077        0 \r\n 1994          166           16.613        30.196        21.182        0 \r\n 1994          167           18.96         30.001        19.575        0 \r\n 1994          168           18.238        32.494        19.753        6.401 \r\n 1994          169           16.974        31.307        19.134        0 \r\n 1994          170           22.391        32.509        19.654        2.896 \r\n 1994          171           16.432        31.841        19.619        0 \r\n 1994          172           16.613        28.425        17.322        0 \r\n 1994          173           24.919        27.004        15.519        52.324 \r\n 1994          174           14.446        23.256        16.065        0 \r\n 1994          175           20.947        26.508        15.648        0 \r\n 1994          176           24.197        27.246        16.239        0 \r\n 1994          177           23.836        24.878        15.871        0 \r\n 1994          178           24.739        27.126        15.459        0 \r\n 1994          179           23.655        25.493        16.119        0 \r\n 1994          180           22.572        27.602        12.707        0 \r\n 1994          181           27.989        29.003        16.872        10.084 \r\n 1994          182           21.122        28.104        16.237        0 \r\n 1994          183           25.199        24.546        13.988        0 \r\n 1994          184           23.883        28.902        18.928        15.697 \r\n 1994          185           15.044        30.588        19.566        0 \r\n 1994          186           16.925        31.218        18.962        0 \r\n 1994          187           24.635        30.188        19.987        0 \r\n 1994          188           22.566        24.314        13.387        2.642 \r\n 1994          189           28.027        22.994        13.916        0 \r\n 1994          190           19.619        25.926        12.901        0 \r\n 1994          191           26.719        30.087        18.06         0 \r\n 1994          192           24.664        30.163        19.459        0 \r\n 1994          193           24.29         24.837        15.083        18.72 \r\n 1994          194           17.821        24.598        17.244        0 \r\n 1994          195           14.48         25.846        13.843        0 \r\n 1994          196           25.432        26.821        17.594        0 \r\n 1994          197           23.947        27.297        17.602        0 \r\n 1994          198           23.608        29.336        16.662        0 \r\n 1994          199           25.452        32.912        19.852        0 \r\n 1994          200           23.977        32.415        15.212        0 \r\n 1994          201           28.219        26.326        14.485        0 \r\n 1994          202           24.919        26.103        15.518        0 \r\n 1994          203           23.636        28.737        15.322        0 \r\n 1994          204           26.751        29.061        15.568        0 \r\n 1994          205           25.848        26.254        13.856        0 \r\n 1994          206           25.665        25.841        10.504        0 \r\n 1994          207           28.578        23.471        13.096        0 \r\n 1994          208           25.134        24.474        11.492        5.156 \r\n 1994          209           20.432        25.593        12.583        0 \r\n 1994          210           26.219        27.634        13.316        0 \r\n 1994          211           26.403        30.265        16.452        0 \r\n 1994          212           25.325        30.687        18.646        37.897 \r\n 1994          213           19.786        27.358        17.247        0 \r\n 1994          214           20.505        27.428        19.818        4.496 \r\n 1994          215           17.147        24.678        18.903        4.318 \r\n 1994          216           11.061        23.568        8.901         0 \r\n 1994          217           26.512        22.637        11.019        0 \r\n 1994          218           23.351        25.875        13.806        0 \r\n 1994          219           22.67         26.306        17.658        0 \r\n 1994          220           19.356        23.515        12.8          0 \r\n 1994          221           21.995        26.834        17.707        11.963 \r\n 1994          222           15.24         25.397        14.472        0 \r\n 1994          223           15.651        20.939        16.91         25.984 \r\n 1994          224           8.944         25.099        18.172        3.835 \r\n 1994          225           10.835        25.676        8.337         0 \r\n 1994          226           26.303        23.17         9.791         0 \r\n 1994          227           24.937        26.406        11.44         0 \r\n 1994          228           24.932        28.829        17.291        0 \r\n 1994          229           21.879        29.984        17.265        0 \r\n 1994          230           20.715        30.158        17.303        0 \r\n 1994          231           21.22         27.031        13.371        0 \r\n 1994          232           22.574        23.897        12.045        0 \r\n 1994          233           22.574        25.536        11.202        0 \r\n 1994          234           23.076        29.671        13.748        0 \r\n 1994          235           22.911        31.961        16.677        0 \r\n 1994          236           22.413        32.933        19.173        0 \r\n 1994          237           21.428        30.468        16.746        8.712 \r\n 1994          238           15.659        32.889        17.802        0 \r\n 1994          239           20.127        32.791        13.619        8.001 \r\n 1994          240           17.345        23.567        9.457         0 \r\n 1994          241           21.279        25.154        15.389        9.627 \r\n 1994          242           14.782        25.125        12.781        0 \r\n 1994          243           14.028        20.479        10.444        0 \r\n 1994          244           17.898        19.737        11.154        0 \r\n 1994          245           11.263        22.936        13.677        0 \r\n 1994          246           10.077        22.568        13.962        44.45 \r\n 1994          247           10.443        24.663        15.479        4.775 \r\n 1994          248           8.972         26.277        12.064        0 \r\n 1994          249           19.269        26.518        10.051        0 \r\n 1994          250           19.853        28.217        14.524        0 \r\n 1994          251           19.124        30.854        13.472        0 \r\n 1994          252           13.763        30.602        14.065        0 \r\n 1994          253           17.971        27.922        14.111        0 \r\n 1994          254           16.39         29.301        15.173        0 \r\n 1994          255           15.55         31.903        18.793        0 \r\n 1994          256           15.122        32.705        20.988        0 \r\n 1994          257           13.873        32.27         21.574        0 \r\n 1994          258           12.599        27.431        12.881        0 \r\n 1994          259           16.854        23.931        10.431        0 \r\n 1994          260           17.135        25.885        10.765        0 \r\n 1994          261           17.558        28.168        11.892        0 \r\n 1994          262           17.976        28.816        12.935        0 \r\n 1994          263           16.727        27.892        14.436        28.143 \r\n 1994          264           15.068        25.365        10.019        4.216 \r\n 1994          265           11.931        14.706        5.589         0 \r\n 1994          266           11.656        15.249        6.011         9.093 \r\n 1994          267           9.794         21.652        12.675        12.979 \r\n 1994          268           7.21          20.831        7.855         0 \r\n 1994          269           10.929        18.822        3.391         0 \r\n 1994          270           13.897        21.036        5.376         0 \r\n 1994          271           16.058        21.146        5.503         0 \r\n 1994          272           16.46         23.642        5.034         0 \r\n 1994          273           16.058        27.228        13.263        0 \r\n 1994          274           14.333        19.136        12.688        0 \r\n 1994          275           9.081         19.879        10.447        0 \r\n 1994          276           8.159         16.893        10.172        0 \r\n 1994          277           8.874         19.027        11.094        0 \r\n 1994          278           10.962        20.932        11.332        0 \r\n 1994          279           10.998        24.465        13.066        0.51 \r\n 1994          280           7.893         17.545        10.063        24.13 \r\n 1994          281           9.75          16.438        5.007         0 \r\n 1994          282           12.829        15.954        3.001         0 \r\n 1994          283           14.117        17.621        3.036         0 \r\n 1994          284           14.117        18.018        3.343         0 \r\n 1994          285           13.994        19.68         4.059         0 \r\n 1994          286           13.742        21.71         6.382         0 \r\n 1994          287           13.372        19.52         4.743         0 \r\n 1994          288           10.123        16.14         13.14         1.02 \r\n 1994          289           2.353         18.43         15.41         3.81 \r\n 1994          290           2.353         19.17         17.41         42.93 \r\n 1994          291           4.419         20.66         9.69          5.59 \r\n 1994          292           10.68         18.47         8.29          0 \r\n 1994          293           12.287        21.16         4.686         0 \r\n 1994          294           12.287        23.6          6.8           0 \r\n 1994          295           10.705        18.33         7.15          0 \r\n 1994          296           10.728        14.54         4.349         0 \r\n 1994          297           7.956         8.46          2.296         0 \r\n 1994          298           8.958         7.71         -0.718         0 \r\n 1994          299           11.347        14.19        -2.954         0 \r\n 1994          300           11.597        19.6          2.101         0 \r\n 1994          301           9.822         20.44         10.14         0 \r\n 1994          302           8.089         15.29         5.735         0 \r\n 1994          303           10.316        13.53         3.223         0 \r\n 1994          304           8.909         12.68        -0.058         0 \r\n 1994          305           10.799        12.98        -2.571         0 \r\n 1994          306           9.406         17.19         5.477         0 \r\n 1994          307           7.016         12.78         4.988         0 \r\n 1994          308           5.751         6.535         3.13          2.03 \r\n 1994          309           5.809         9.76          1.751         0 \r\n 1994          310           8.999         14.25        -0.69          0 \r\n 1994          311           9.568         20.08         2.245         0 \r\n 1994          312           7.783         11.98         5.212         0 \r\n 1994          313           6.43          11.22        -1.5           0 \r\n 1994          314           9.383         11.45        -2.93          0 \r\n 1994          315           8.489         8.82         -0.685         0 \r\n 1994          316           6.032         15.37         4.106         0 \r\n 1994          317           5.198         13.96         9.29          4.32 \r\n 1994          318           5.64          11.56         2.18          0 \r\n 1994          319           8.184         10.14        -1.558         0 \r\n 1994          320           8.54          10.31        -5.092         0 \r\n 1994          321           7.664         13.71         2.01          0 \r\n 1994          322           7.117         8.25         -4.718         2.54 \r\n 1994          323           6.936         2.541        -6.025         0 \r\n 1994          324           3.902         7.2           2.54          9.4 \r\n 1994          325           3.468         7.16         -2.36          9.65 \r\n 1994          326           6.758         2.551        -5.976         0 \r\n 1994          327           6.436         7.82         -4.075         0 \r\n 1994          328           6.758         8.97         -2.006         0 \r\n 1994          329           7.509         8.97         -4.549         0 \r\n 1994          330           6.689         4.718        -1.758         0 \r\n 1994          331           3.61          6.184        -1.332         17.78 \r\n 1994          332           4.141        -0.369        -4.733         0 \r\n 1994          333           4.884        -2.671        -7.52          0 \r\n 1994          334           6.514         6.826        -8.81          0 \r\n 1994          335           7.564         14.39        -1.228         0 \r\n 1994          336           7.144         12.19        -0.88          0 \r\n 1994          337           6.304         7.59          0.777         0 \r\n 1994          338           4.518         7.36         -0.289         0 \r\n 1994          339           5.925        -0.394        -7.93          0 \r\n 1994          340           1.559        -6.032        -7.51          3.05 \r\n 1994          341           2.183        -2.541        -10.15         9.65 \r\n 1994          342           5.094        -1.432        -9.04          0 \r\n 1994          343           6.445        -2.259        -17.478        0 \r\n 1994          344           7.277        -5.881        -17.6          0 \r\n 1994          345           8.316        -13.489       -22.87         0 \r\n 1994          346           7.302        -5.475        -17.07         0 \r\n 1994          347           7.508        -4.516        -16.41         0 \r\n 1994          348           4.32         -4.705        -8.41          0 \r\n 1994          349           3.291         0.594        -6.743         4.06 \r\n 1994          350           5.348         2.476        -5.634         1.27 \r\n 1994          351           6.994         2.087        -8.85          0 \r\n 1994          352           7.508        -6.251        -12.5          0 \r\n 1994          353           6.582         3.99         -10.14         0 \r\n 1994          354           6.171         3.125        -2.001         0 \r\n 1994          355           3.291         2.595         1.111         0 \r\n 1994          356           3.394         1.307        -0.988         0 \r\n 1994          357           5.863         1.652        -6.216         0 \r\n 1994          358           7.611         0.891        -9.58          0 \r\n 1994          359           7.817         4.371        -8.016         0 \r\n 1994          360           7.92          5.149        -6.699         0 \r\n 1994          361           6.891         6.986        -2.833         0 \r\n 1994          362           6.274         0.113        -1.678         0 \r\n 1994          363           5.245         0.499        -5.396         0 \r\n 1994          364           3.534         0.367        -3.088         0 \r\n 1994          365           5.821        -3.439        -5.342         0.76 \r\n 1995          1             7.693        -8.027        -13.198        0 \r\n 1995          2             6.341        -0.389        -2.417         0 \r\n 1995          3             7.589        -1.222        -9.23          0 \r\n 1995          4             6.133        -2.892        -14.71         0 \r\n 1995          5             7.693         4.408        -8.47          0 \r\n 1995          6             6.409        -6.588        -23.511        4.57 \r\n 1995          7             9.351        -10.762       -17.267        0 \r\n 1995          8             7.775        -9.354        -15.793        0 \r\n 1995          9             7.039        -6.646        -10.582        0 \r\n 1995          10            6.409        -0.361        -6.668         0 \r\n 1995          11            4.884         0.103        -0.829         0 \r\n 1995          12            2.548         0.578        -2.621         0 \r\n 1995          13            3.079        -2.358        -7.748         0 \r\n 1995          14            5.839        -2.861        -11.739        0 \r\n 1995          15            7.857         0.288        -6.246         0 \r\n 1995          16            7.938         2.394        -3.461         0 \r\n 1995          17            6.758        -1.771        -12.054        1.52 \r\n 1995          18            9.118        -2.013        -6.848         0 \r\n 1995          19            7.695        -2.479        -8.818         0 \r\n 1995          20            7.045        -7.63         -12.652        0 \r\n 1995          21            5.961        -8.027        -11.231        0 \r\n 1995          22            5.036        -7.672        -15.864        0 \r\n 1995          23            7.773        -6.099        -15.238        0 \r\n 1995          24            9.306        -5.367        -15.197        0 \r\n 1995          25            10.174       -0.388        -15.941        0 \r\n 1995          26            10.727       -0.093        -6.651         0 \r\n 1995          27            7.852        -0.989        -3.219         3.81 \r\n 1995          28            2.792        -2.905        -9.478         0 \r\n 1995          29            8.713        -4.149        -15            0 \r\n 1995          30            10.723        3.093        -8.786         0 \r\n 1995          31            11.168        3.99         -2.467         0 \r\n 1995          32            10.152        0.766        -2.194         0 \r\n 1995          33            4.625         1.669        -3.115         6.1 \r\n 1995          34            6.379        -2.541        -11.013        0 \r\n 1995          35            11.049       -6.967        -15.398        0 \r\n 1995          36            10.236       -6.421        -15.63         0 \r\n 1995          37            10.811       -5.454        -12.751        0 \r\n 1995          38            10.236       -4.048        -17.194        0 \r\n 1995          39            12.077        2.709        -6.653         0 \r\n 1995          40            13.006        1.548        -8.119         0 \r\n 1995          41            12.309       -7.766        -20.977        0 \r\n 1995          42            13.481       -8.221        -19.093        0 \r\n 1995          43            10.887       -6.918        -13.828        0 \r\n 1995          44            11.715       -4.597        -11.179        0 \r\n 1995          45            9.585        -1.648        -9.944         0 \r\n 1995          46            11.586        0.748        -15.048        0 \r\n 1995          47            14.452        7.628        -9.522         0 \r\n 1995          48            15.189        11.093       -1.405         0 \r\n 1995          49            14.224        8.089        -4.932         0 \r\n 1995          50            14.963        6.167        -0.117         0 \r\n 1995          51            11.435        5.925        -4.471         0 \r\n 1995          52            13.749        8.606        -1.039         0 \r\n 1995          53            13.135        7.362        -0.51          0 \r\n 1995          54            13.996        5.697        -5.187         0 \r\n 1995          55            14.492        12.184       -2.503         0 \r\n 1995          56            15.371        12.414       -2.241         0 \r\n 1995          57            15.871       -0.545        -3.236         0 \r\n 1995          58            4.034        -0.531        -12.998        0.51 \r\n 1995          59            13.49        -7.571        -14.892        1.02 \r\n 1995          60            10.054       -6.376        -16.123        0 \r\n 1995          61            11.567        0.833        -12.989        0 \r\n 1995          62            13.405        0.857        -7.508         0 \r\n 1995          63            12.758        0.674        -3.237         0 \r\n 1995          64            5.997        -0.326        -4.447         4.83 \r\n 1995          65            7.039        -1.571        -12.496        7.11 \r\n 1995          66            9.789        -10.633       -21.699        1.78 \r\n 1995          67            14.753       -2.289        -19.162        0 \r\n 1995          68            15.64         9.152        -6.84          0 \r\n 1995          69            16.779        15.636        1.883         0 \r\n 1995          70            14.207        16.379        4.618         0 \r\n 1995          71            14.213        17.728        10.045        0 \r\n 1995          72            7.445         14.343        7.831         1.27 \r\n 1995          73            7.962         12.956        5.4           1.27 \r\n 1995          74            13.991        16.018        5.787         0 \r\n 1995          75            15.482        13.61         5.536         0 \r\n 1995          76            15.024        15.81         4.526         0 \r\n 1995          77            13.066        11.6          2.241         2.29 \r\n 1995          78            12.141        10.21         2.204         0 \r\n 1995          79            9.558         11.541       -2.802         12.7 \r\n 1995          80            13.988        12.925        1.335         0 \r\n 1995          81            13.278        11.887        3.747         0.51 \r\n 1995          82            9.831         12.272       -0.43          0 \r\n 1995          83            14.45         13.597        5.05          0 \r\n 1995          84            13.371        11.58         6.079         0 \r\n 1995          85            7.999         12.727        2.327         25.4 \r\n 1995          86            9.626         10.9          1.203         0.51 \r\n 1995          87            5.896         9.974         1.153         0 \r\n 1995          88            5.942         10.304       -1.579         1.27 \r\n 1995          89            9.216         8.948        -1.597         1.27 \r\n 1995          90            7.088         9.22         -3.33          0 \r\n 1995          91            13.638        12.587       -2.207         0 \r\n 1995          92            21.153        18.603       -1.346         0 \r\n 1995          93            21.558        19.27        -9.914         0 \r\n 1995          94            22.401        1.639        -2.864         0 \r\n 1995          95            19.414        18.14        -3.416         0 \r\n 1995          96            16.141        17.12         2.522         1.52 \r\n 1995          97            18.74         10.53         3.024         4.83 \r\n 1995          98            11.025        12.71         2.749         0.51 \r\n 1995          99            10.888        4.68          2.041         16.26 \r\n 1995          100           5.137         1.166         0.585         23.62 \r\n 1995          101           6.665         6.811         0.796         12.7 \r\n 1995          102           8.053         4.328         0.325         0.76 \r\n 1995          103           17.485        18.01         0.603         0 \r\n 1995          104           21.261        16.59         5.633         0 \r\n 1995          105           17.895        18.09         7.28          0 \r\n 1995          106           21.418        11.33         3.087         0 \r\n 1995          107           11.071        9.97          3.585         2.54 \r\n 1995          108           13.058        15.81         2.793         16.51 \r\n 1995          109           16.869        13.36        -0.005         0 \r\n 1995          110           19.443        7.5           4.1           8.64 \r\n 1995          111           10.799        9.05          1.325         1.02 \r\n 1995          112           20.303        15.15         1.243         0 \r\n 1995          113           21.898        16.47         2.667         0 \r\n 1995          114           19.723        13.44         2.217         0 \r\n 1995          115           22.929        15.38         0.024         9.4 \r\n 1995          116           14.459        9.16          3.096         26.92 \r\n 1995          117           14.561        12.31         0.269         1.78 \r\n 1995          118           20.738        15.08         1.741         0 \r\n 1995          119           15.884        12.28         7.9           2.54 \r\n 1995          120           9.627         11.96         6.034         4.32 \r\n 1995          121           13.361        12.59         5.492         0 \r\n 1995          122           17.421        14.73         6.084         0 \r\n 1995          123           17.11         11.74         7.97          2.29 \r\n 1995          124           9.084         11.26         5.511         6.35 \r\n 1995          125           24.12         19.81         0.529         0 \r\n 1995          126           24.903        19.38         8.82          0 \r\n 1995          127           18.292        16.75         11.9          0 \r\n 1995          128           10.092        18.68         13.162        38.1 \r\n 1995          129           13.971        19.36         10.794        21.08 \r\n 1995          130           13.495        12.494        8.865         2.54 \r\n 1995          131           16.194        16.47         6.513         0 \r\n 1995          132           24.775        17.81         5.976         0.76 \r\n 1995          133           17.582        17.33         9.894         6.6 \r\n 1995          134           25.414        18.97         7.949         0 \r\n 1995          135           27.194        12            5.178         0 \r\n 1995          136           26.389        20.439        9.443         1.52 \r\n 1995          137           20.114        16.357        7.541         0 \r\n 1995          138           21.544        9.5           7.479         0 \r\n 1995          139           27.538        21.78         4.834         0 \r\n 1995          140           26.242        20.759        8.446         0 \r\n 1995          141           27.067        22.319        9.442         0 \r\n 1995          142           25.274        23.56         8.382         0 \r\n 1995          143           18.425        15.27         8.59          10.67 \r\n 1995          144           14.443        18.33         8.18          0 \r\n 1995          145           25.276        22.02         8.783         0 \r\n 1995          146           24.948        19.315        11.629        0 \r\n 1995          147           14.207        20.06         11.209        16.76 \r\n 1995          148           14.372        17.51         7.674         3.56 \r\n 1995          149           18.668        23.046        10.81         0 \r\n 1995          150           26.597        22.08         14.014        0 \r\n 1995          151           24.119        22.58         14.47         0 \r\n 1995          152           20.578        18.54         12.87         0 \r\n 1995          153           11.766        20.82         11.583        2.79 \r\n 1995          154           18.719        26.11         15.881        0 \r\n 1995          155           22.284        24.62         16.682        0 \r\n 1995          156           19.075        18.57         15.643        0 \r\n 1995          157           16.328        28.51         17.664        0 \r\n 1995          158           24.402        30.7          8.937         0 \r\n 1995          159           30.682        15.59         11.311        0 \r\n 1995          160           16.507        20.04         11.637        5.436 \r\n 1995          161           12.919        18.65         9.385         0 \r\n 1995          162           24.402        22.71         9.81          0 \r\n 1995          163           27.99         27.026        10.835        0 \r\n 1995          164           28.531        26.049        14.552        12.979 \r\n 1995          165           20.224        28.718        16.039        0 \r\n 1995          166           18.419        30.158        19.325        0 \r\n 1995          167           22.752        31.324        19.564        0 \r\n 1995          168           22.211        30.366        19.922        0 \r\n 1995          169           23.113        31.129        17.717        0 \r\n 1995          170           25.28         31.814        17.059        0 \r\n 1995          171           26.725        32.39         19.182        0 \r\n 1995          172           25.822        33.81         20.425        0 \r\n 1995          173           24.558        33.54         18.323        0 \r\n 1995          174           25.642        25.19         19.292        13.183 \r\n 1995          175           18.057        21.191        18.819        5.258 \r\n 1995          176           13.182        20.48         17.797        2.769 \r\n 1995          177           8.848         23.22         17.818        23.266 \r\n 1995          178           9.751         24.54         16.582        4.496 \r\n 1995          179           13.724        24.66         18.193        0 \r\n 1995          180           12.46         24.14         13.374        0 \r\n 1995          181           22.752        21.3          8.748         0 \r\n 1995          182           30.119        22.07         9.516         0 \r\n 1995          183           28.584        24.66         13.321        0 \r\n 1995          184           26.139        26.55         17.694        6.147 \r\n 1995          185           15.608        22.09         14.041        24.587 \r\n 1995          186           17.113        24.63         12.859        0 \r\n 1995          187           25.387        25.83         14.689        0 \r\n 1995          188           26.515        25.67         14.949        0 \r\n 1995          189           26.345        29.31         18.308        0 \r\n 1995          190           23.542        28.27         16.736        0 \r\n 1995          191           25.411        32.224        20.948        0 \r\n 1995          192           24.477        28.097        21.759        0 \r\n 1995          193           24.29         32.73         22.214        0 \r\n 1995          194           24.69         29.867        23.913        0 \r\n 1995          195           22.834        28.543        20.087        15.367 \r\n 1995          196           18.935        22.98         19.994        5.131 \r\n 1995          197           14.851        25.71         16.688        0 \r\n 1995          198           24.161        25.292        14.929        0 \r\n 1995          199           26.19         26.287        17.584        0 \r\n 1995          200           24.53         25.075        18.777        21.158 \r\n 1995          201           16.968        24.629        15.973        0 \r\n 1995          202           26.202        26.048        18.183        4.496 \r\n 1995          203           17.59         25.057        16.672        0 \r\n 1995          204           24.186        25.706        16.653        5.334 \r\n 1995          205           19.295        27.246        17.196        0 \r\n 1995          206           25.848        29.42         16.164        0 \r\n 1995          207           25.119        31.819        18.714        0 \r\n 1995          208           23.868        31.924        17.011        0 \r\n 1995          209           27.123        31.859        17.784        0 \r\n 1995          210           25.134        31.929        21.038        0 \r\n 1995          211           21.553        30.916        19.68         16.307 \r\n 1995          212           22.631        23.944        14.474        10.465 \r\n 1995          213           19.786        24.354        18.396        0 \r\n 1995          214           16.97         27.408        19.523        0 \r\n 1995          215           14.495        29.422        19.011        0 \r\n 1995          216           19.138        29.612        18.451        3.048 \r\n 1995          217           15.977        28.669        20.024        0 \r\n 1995          218           19.138        29.496        19.553        0 \r\n 1995          219           18.31         31.636        23.064        0 \r\n 1995          220           17.787        31.897        22.954        0 \r\n 1995          221           16.626        29.102        20.563        26.441 \r\n 1995          222           13.682        31.526        20.929        0 \r\n 1995          223           14.963        32.449        22.731        0 \r\n 1995          224           18.919        32.463        23.412        0 \r\n 1995          225           17.199        31.994        19.429        26.467 \r\n 1995          226           16.568        24.689        17.983        3.531 \r\n 1995          227           11.614        26.942        21.004        5.41 \r\n 1995          228           10.176        31.719        21.213        0 \r\n 1995          229           12.381        32.448        22.323        0 \r\n 1995          230           18.694        31.424        17.916        0 \r\n 1995          231           22.904        26.026        13.346        0 \r\n 1995          232           23.076        28.256        15.381        0 \r\n 1995          233           23.41         28.54         15.002        0 \r\n 1995          234           23.41         28.227        19.092        4.75 \r\n 1995          235           14.444        29.983        18.404        0 \r\n 1995          236           19.922        30.227        15.371        0 \r\n 1995          237           22.581        31.208        16.329        0 \r\n 1995          238           22.252        31.791        19.476        0 \r\n 1995          239           20.945        32.87         20.593        0 \r\n 1995          240           20.127        33.001        20.131        0 \r\n 1995          241           19.818        33.626        20.691        0 \r\n 1995          242           18.518        32.547        15.657        0 \r\n 1995          243           22.735        25.993        12.724        0 \r\n 1995          244           21.445        27.817        12.862        0 \r\n 1995          245           19.858        29.281        18.168        0 \r\n 1995          246           17.487        30.007        15.593        0 \r\n 1995          247           18.974        30.07         13.267        0 \r\n 1995          248           18.533        26.913        19.242        0 \r\n 1995          249           14.014        26.277        11.017        9.144 \r\n 1995          250           13.43         17.771        5.591         0 \r\n 1995          251           16.806        19.446        5.519         0 \r\n 1995          252           19.703        20.567        6.594         0 \r\n 1995          253           19.553        22.777        6.906         0 \r\n 1995          254           19.121        24.016        14.396        7.163 \r\n 1995          255           11.984        29.247        12.821        0 \r\n 1995          256           12.84         30.092        10.858        0 \r\n 1995          257           19.393        27.368        9.069         0 \r\n 1995          258           18.119        27.914        14.575        0 \r\n 1995          259           16.854        26.733        6.841         0 \r\n 1995          260           18.82         21.197        10.293        8.56 \r\n 1995          261           10.869        21.737        11.516        9.754 \r\n 1995          262           9.336         12.066        3.967         4.724 \r\n 1995          263           8.986         11.479        3.301         4.293 \r\n 1995          264           8.156         11.079       -1.593         0 \r\n 1995          265           15.222        14.617       -1.071         0 \r\n 1995          266           16.456        14.575        3.235         3.429 \r\n 1995          267           14.691        19.816        3.761         0 \r\n 1995          268           11.835        24.921        5.256         0 \r\n 1995          269           17.135        26.601        5.681         0 \r\n 1995          270           17.405        26.783        8.288         0 \r\n 1995          271           16.326        25.666        15.258        13.792 \r\n 1995          272           10.036        24.943        17.151        0 \r\n 1995          273           5.308         23.624        8.447         0 \r\n 1995          274           14.465        22.347        10.858        0 \r\n 1995          275           12.239        20.735        5.609         0.25 \r\n 1995          276           14.213        21.898        7.543         0 \r\n 1995          277           13.441        21.328        9.403         0 \r\n 1995          278           12.267        12.314        8.382         4.57 \r\n 1995          279           3.494         14.475        5.042         5.59 \r\n 1995          280           6.599         15.623        2.875         0 \r\n 1995          281           12.316        17.546        6.296         3.05 \r\n 1995          282           12.059        22.76         5.574         0 \r\n 1995          283           13.608        27.799        8.481         0 \r\n 1995          284           13.99         28.927        13.628        0 \r\n 1995          285           12.607        27.523        11.593        0 \r\n 1995          286           11.851        13.867        5.582         0 \r\n 1995          287           9.623         15.396        1.559         0 \r\n 1995          288           12.122        17.614        1.087         0 \r\n 1995          289           12.882        22.717        9.362         0 \r\n 1995          290           12.386        23.101        4.795         0 \r\n 1995          291           13.381        18.731        8.691         0 \r\n 1995          292           11.294        11.602        4.049         0 \r\n 1995          293           8.029         10.956        0.694         0 \r\n 1995          294           6.934         14.186       -2.665         0 \r\n 1995          295           11.8          16.019        6.132         0 \r\n 1995          296           10.849        12.846        2.298         1.52 \r\n 1995          297           7.474         18.127       -0.916         0 \r\n 1995          298           10.988        18.443        0.069         0 \r\n 1995          299           11.347        13.543        4.443         0 \r\n 1995          300           8.875         10.829        5.502         1.27 \r\n 1995          301           4.378         10.727       -0.653         0 \r\n 1995          302           8.675         4.443         0.22          0 \r\n 1995          303           3.634         2.534         0.006         3.05 \r\n 1995          304           2.462         4.958         1.986         6.6 \r\n 1995          305           2.787         3.597        -2.669         29.46 \r\n 1995          306           4.645        -0.401        -7.168         0.76 \r\n 1995          307           6.211         2.904        -12.691        0 \r\n 1995          308           10.236        8.268        -4.312         0 \r\n 1995          309           10.48         11.86        -0.846         1.02 \r\n 1995          310           7.518         9.857        -3.327         0 \r\n 1995          311           9.113        -1.018        -10.447        0 \r\n 1995          312           7.332         13.377       -3.574         0 \r\n 1995          313           6.655         13.248       -4.43          0 \r\n 1995          314           9.718        -3.293        -11.575        0.51 \r\n 1995          315           6.255         2.181        -10.091        1.27 \r\n 1995          316           8.266         1.427        -6.772         0 \r\n 1995          317           7.52          2.336        -6.519         0 \r\n 1995          318           5.751         3.863        -3.932         0 \r\n 1995          319           7.52          3.483        -2.846         0 \r\n 1995          320           6.569         4.386        -2.204         0 \r\n 1995          321           4.927         7.405        -3.199         0 \r\n 1995          322           6.569         12.219       -0.784         0 \r\n 1995          323           7.695         10.109       -0.179         0 \r\n 1995          324           7.912         5.538        -4.376         0 \r\n 1995          325           7.695         6.703        -8.214         0 \r\n 1995          326           8.153         3.832        -10.45         0 \r\n 1995          327           8.367         1.556        -12.559        0 \r\n 1995          328           7.509         4.894        -3.521         0 \r\n 1995          329           8.26          7.994        -0.73          0.76 \r\n 1995          330           6.052         4.996        -7.518         0 \r\n 1995          331           5.415        -7.457        -15.591        7.11 \r\n 1995          332           6.158        -3.744        -14.923        0 \r\n 1995          333           7.22          5.811        -9.606         0 \r\n 1995          334           8.195         7.469        -0.174         0 \r\n 1995          335           6.829         14.659       -1.572         0 \r\n 1995          336           6.934         11.853       -0.317         0 \r\n 1995          337           8.09          6.326        -6.703         0 \r\n 1995          338           8.405         7.263        -3.206         0 \r\n 1995          339           6.757         0.814        -7.654         0 \r\n 1995          340           5.198        -1.357        -7.291         0 \r\n 1995          341           4.782        -2.57         -16.515        0 \r\n 1995          342           4.47         -14.203       -21.062        13.97 \r\n 1995          343           6.029        -9.643        -21.482        0 \r\n 1995          344           6.757        -10.673       -16.993        0 \r\n 1995          345           6.757        -10.139       -16.553        0 \r\n 1995          346           4.114        -3.682        -10.663        0 \r\n 1995          347           5.863         5.269        -5.15          0.51 \r\n 1995          348           5.76          4.371        -8.233         0 \r\n 1995          349           7.508         2.473        -8.403         0 \r\n 1995          350           6.582         2.061        -3.281         0 \r\n 1995          351           5.657         2.222        -1.117         0 \r\n 1995          352           2.571         0.377        -2.807         0 \r\n 1995          353           3.6          -1.312        -6.962         0 \r\n 1995          354           4.731        -4.155        -8.788         0 \r\n 1995          355           3.497        -5.818        -10.491        0 \r\n 1995          356           4.217        -5.049        -8.596         0 \r\n 1995          357           3.291        -3.399        -6.147         0 \r\n 1995          358           2.571        -2.301        -5.101         0 \r\n 1995          359           2.983         1.197        -6.639         0 \r\n 1995          360           4.937        -0.26         -5.213         0 \r\n 1995          361           5.965        -1.912        -13.933        0 \r\n 1995          362           7.817         2.243        -11.004        0 \r\n 1995          363           7.92          1.346        -3.098         0 \r\n 1995          364           5.406         0.477        -1.209         0.51 \r\n 1995          365           2.391         0.578        -0.55          0 \r\n 1996          1             1.663        -0.395        -6.693         0 \r\n 1996          2             4.47         -0.944        -16.702        0 \r\n 1996          3             8.212        -6.499        -10.474        0 \r\n 1996          4             6.341        -8.826        -18.736        1.52 \r\n 1996          5             7.277        -9.816        -23.242        0 \r\n 1996          6             7.249        -12.107       -24.326        0 \r\n 1996          7             7.144        -4.748        -20.498        0 \r\n 1996          8             8.405         1.125        -6.278         0 \r\n 1996          9             7.249         1.168        -1.043         0 \r\n 1996          10            1.786         1.052        -1.628         0 \r\n 1996          11            2.548         7.741        -7.116         0.51 \r\n 1996          12            6.901         13.791       -2.145         0 \r\n 1996          13            8.812         7.29         -6.296         0 \r\n 1996          14            9.131        -3.544        -14.383        0 \r\n 1996          15            8.918         5.43         -5.547         0 \r\n 1996          16            8.582         6.697        -3.905         0 \r\n 1996          17            8.153         11.047       -20.151        1.27 \r\n 1996          18            7.831        -16.252       -22.769        14.99 \r\n 1996          19            5.419        -11.213       -18.917        1.27 \r\n 1996          20            6.611        -0.804        -14.707        0 \r\n 1996          21            8.454         0.779        -11.587        0 \r\n 1996          22            9.854        -10.377       -14.344        0 \r\n 1996          23            6.022        -10.633       -17.208        1.02 \r\n 1996          24            4.598        -6.45         -17.418        2.03 \r\n 1996          25            8.958        -8.779        -14.444        0 \r\n 1996          26            5.64         -11.853       -20.517        19.05 \r\n 1996          27            6.525        -2.916        -18.748        3.56 \r\n 1996          28            10.835       -1.991        -22.151        0 \r\n 1996          29            12.175       -16.52        -22.706        0 \r\n 1996          30            6.814        -18.252       -31.38         0 \r\n 1996          31            10.829       -19.081       -27.953        0 \r\n 1996          32            10.604       -20.784       -33.583        0 \r\n 1996          33            11.393       -17.778       -32.646        0 \r\n 1996          34            9.455        -15.409       -30.683        0 \r\n 1996          35            11.733       -7.739        -20.609        0 \r\n 1996          36            13.112        0.219        -18.848        0 \r\n 1996          37            11.731        3.749        -2.229         0 \r\n 1996          38            12.422        7.282         1.626         0 \r\n 1996          39            6.851         9.319        -1.956         0 \r\n 1996          40            10.683        8.193         1.712         0 \r\n 1996          41            9.73          3.142        -3.257         0 \r\n 1996          42            7.972        -1.015        -5.493         0 \r\n 1996          43            5.798         6.247        -5.493         0 \r\n 1996          44            9.112         4.937        -1.164         0 \r\n 1996          45            9.585        -0.278        -10.106        0 \r\n 1996          46            10.511       -4.687        -19.338        4.32 \r\n 1996          47            10.75        -1.639        -8.329         0 \r\n 1996          48            14.586       -4.146        -12.349        0 \r\n 1996          49            12.054        7.447        -9.873         0 \r\n 1996          50            12.895        8.952         1.458         0 \r\n 1996          51            14.598        5.152        -2.127         0 \r\n 1996          52            11.908        2.142        -3.003         0 \r\n 1996          53            5.77          7.812         1.796         0 \r\n 1996          54            9.042         13.677       -2.469         0 \r\n 1996          55            15.483        13.25         0.622         0 \r\n 1996          56            16.246        11.499       -1.068         0 \r\n 1996          57            14.871        1.244        -7.911         0 \r\n 1996          58            11.851       -6.312        -15.452        0 \r\n 1996          59            14.246       -4.139        -17.704        0 \r\n 1996          60            15.069       -0.442        -10.439        0 \r\n 1996          61            13.513       -0.906        -10.492        0 \r\n 1996          62            13.837       -4.545        -17.778        0 \r\n 1996          63            12            3.371        -11.251        0 \r\n 1996          64            14.394        4.105        -6.028         0 \r\n 1996          65            14.83         0.313        -10.981        0 \r\n 1996          66            12.868       -10.717       -22.065        1.02 \r\n 1996          67            14.298       -6.822        -21.039        0 \r\n 1996          68            14.42         0.263        -15.939        0 \r\n 1996          69            14.642        7.411        -9.579         0 \r\n 1996          70            16.556        12.173       -1.884         0 \r\n 1996          71            17.003        15.777       -0.932         0 \r\n 1996          72            16.018        20.552       -0.471         0 \r\n 1996          73            15.793        20.122        1.076         0 \r\n 1996          74            17.403        10.222       -4.561         0 \r\n 1996          75            17.517        12.607       -3.507         0 \r\n 1996          76            16.973        11.967       -2.818         0 \r\n 1996          77            17.432        7.584        -5.111         3.05 \r\n 1996          78            12.834        2.169        -6.551         0 \r\n 1996          79            15.956        4.332        -4.599         0 \r\n 1996          80            13.405        5.163        -9.361         0 \r\n 1996          81            10.024        7.437        -8.333         0 \r\n 1996          82            17.508        7.891        -2.531         0 \r\n 1996          83            17.885        18.329        2.534         0 \r\n 1996          84            15.99         7.017        -12.137        1.27 \r\n 1996          85            13.61        -4.847        -13.833        23.88 \r\n 1996          86            15.997        4.931        -7.755         0 \r\n 1996          87            12.032        8.754        -1.946         0 \r\n 1996          88            16.003        11.473       -1.351         0 \r\n 1996          89            16.856        11.826        0.742         0 \r\n 1996          90            17.704        4.339        -4.373         6.35 \r\n 1996          91            11.976        10.277       -3.448         1.52 \r\n 1996          92            10.228        21.298        1.371         0 \r\n 1996          93            18.055        22.93         8.129         0 \r\n 1996          94            21.692        10.162       -2.149         0 \r\n 1996          95            22.401        2.56         -3.766         0 \r\n 1996          96            22.944        7.316        -5.783         0 \r\n 1996          97            9.849         6.916        -4.219         0 \r\n 1996          98            20.108        8.288        -2.421         0 \r\n 1996          99            19.157        11.344       -4.103         0 \r\n 1996          100           18.743        20.494       -2.45          0 \r\n 1996          101           22.91         27.904        4.922         0 \r\n 1996          102           24.993        28.36         4.068         0 \r\n 1996          103           25.687        9.385        -2.139         0 \r\n 1996          104           25.598        9.568        -0.689         2.794 \r\n 1996          105           18.884        9.407        -1.041         0 \r\n 1996          106           16.627        13.097       -2.236         0 \r\n 1996          107           9.159         25.889        3.881         0 \r\n 1996          108           23.419        25.335        11.014        0 \r\n 1996          109           23.703        20.672        5.637         0 \r\n 1996          110           24.589        20.111        2.818         6.147 \r\n 1996          111           22.874        19.078        1.745         0 \r\n 1996          112           18.287        19.008        2.888         0 \r\n 1996          113           21.743        16.919       -2.743         0 \r\n 1996          114           21.608        20.171        4.813         0 \r\n 1996          115           22.188        21.18         11.338        0 \r\n 1996          116           22.929        15.688        0.629         0 \r\n 1996          117           19.132        17.527        0.517         0 \r\n 1996          118           22.797        18.448        4.705         3.861 \r\n 1996          119           21.179        9.952         3.375         18.313 \r\n 1996          120           21.473        15.015       -0.151         0 \r\n 1996          121           10.071        17.149        1.508         0 \r\n 1996          122           13.217        16.766        2.233         2.565 \r\n 1996          123           23.488        12.843        4.439         16.281 \r\n 1996          124           21.932        14.142        6.579         5.969 \r\n 1996          125           11.903        16.123        8.239         0 \r\n 1996          126           7.674         16.232        0.122         0 \r\n 1996          127           15.975        14.078        6.5           3.937 \r\n 1996          128           21.604        22.277        10.164        0 \r\n 1996          129           11.038        23.519        13.53         22.581 \r\n 1996          130           17.782        17.577        9.563         21.59 \r\n 1996          131           14.13         11.62         6.192         0 \r\n 1996          132           12.86         11.844        1.664         0 \r\n 1996          133           11.348        13.298        1.609         0 \r\n 1996          134           19.82         13.606        4.488         4.928 \r\n 1996          135           19.18         18.631        10.333        0 \r\n 1996          136           19.148        23.949        15.947        13.97 \r\n 1996          137           10.298        30.772        17.972        0 \r\n 1996          138           13.195        31.644        15.597        0 \r\n 1996          139           14.579        32.142        20.809        0 \r\n 1996          140           24.298        29.711        14.589        0 \r\n 1996          141           21.706        24.506        9.873         0 \r\n 1996          142           24.621        25.127        12.595        0 \r\n 1996          143           17.936        24.029        13.889        11.405 \r\n 1996          144           23.969        18.923        8.457         30.556 \r\n 1996          145           14.772        13.298        9.301         10.566 \r\n 1996          146           16.085        12.919        7.864         11.836 \r\n 1996          147           8.371         11.601        8.412         11.862 \r\n 1996          148           9.747         11.292        8.903         9.144 \r\n 1996          149           7.269         19.434        10.333        0 \r\n 1996          150           7.434         20.699        8.528         0 \r\n 1996          151           17.181        20.331        9.41          2.565 \r\n 1996          152           27.754        17.927        14.723        11.201 \r\n 1996          153           26.977        22.459        11.948        0 \r\n 1996          154           13.014        20.797        10.059        0 \r\n 1996          155           18.897        20.234        5.407         0 \r\n 1996          156           25.137        24.173        9.263         0 \r\n 1996          157           28.88         23.015        14.387        2.794 \r\n 1996          158           29.964        17.484        11.652        0 \r\n 1996          159           17.763        21.59         11.037        0 \r\n 1996          160           14.713        23.269        11.563        0 \r\n 1996          161           23.864        23.902        15.796        0 \r\n 1996          162           26.914        25.514        16.577        5.69 \r\n 1996          163           24.402        30.642        15.516        0 \r\n 1996          164           17.404        31.344        16.599        0 \r\n 1996          165           27.808        31.78         16.629        0 \r\n 1996          166           28.531        31.838        18.049        0 \r\n 1996          167           28.35         31.269        20.011        29.718 \r\n 1996          168           27.808        26.198        19.527        36.246 \r\n 1996          169           18.057        20.989        16.124        0 \r\n 1996          170           13.001        26.474        16.143        0 \r\n 1996          171           17.155        27.348        19.293        18.44 \r\n 1996          172           20.585        29.457        19.457        15.57 \r\n 1996          173           16.432        29.568        16.643        0 \r\n 1996          174           15.168        25.842        16.128        6.248 \r\n 1996          175           19.683        26.227        16.045        5.563 \r\n 1996          176           16.974        27.623        15.532        0 \r\n 1996          177           18.96         29.84         17.812        0 \r\n 1996          178           26.183        31.098        17.817        0 \r\n 1996          179           25.28         33.092        21.02         0 \r\n 1996          180           25.822        33.81         24.333        0 \r\n 1996          181           24.016        33.917        21.382        0 \r\n 1996          182           20.766        31.106        18.486        0 \r\n 1996          183           26.989        30.678        20.258        0 \r\n 1996          184           27.644        27.366        15.302        0 \r\n 1996          185           24.635        26.887        16.63         0 \r\n 1996          186           28.396        28.117        15.471        0 \r\n 1996          187           24.447        29.951        17.489        0 \r\n 1996          188           26.703        29.19         18.369        0 \r\n 1996          189           26.139        29.022        16.625        0 \r\n 1996          190           24.85         23.626        12.678        0 \r\n 1996          191           25.785        24.806        11.718        0 \r\n 1996          192           26.719        26.652        10.716        0 \r\n 1996          193           29.895        27.376        18.432        3.175 \r\n 1996          194           28.774        27.471        14.301        0 \r\n 1996          195           19.121        26.384        15.476        0 \r\n 1996          196           27.66         28.213        15.864        0 \r\n 1996          197           25.618        28.502        14.444        0 \r\n 1996          198           26.175        30.357        19.171        71.272 \r\n 1996          199           26.928        32.148        23.898        0 \r\n 1996          200           17.89         32.345        20.973        0 \r\n 1996          201           14.939        28.419        16.942        0 \r\n 1996          202           22.87         24.744        17.712        0 \r\n 1996          203           19.972        27.709        17.805        0 \r\n 1996          204           11.727        26.932        14.268        0 \r\n 1996          205           20.155        26.792        14.596        0 \r\n 1996          206           20.023        24.523        12.759        0 \r\n 1996          207           23.845        25.487        14.742        0 \r\n 1996          208           24.209        25.702        16.901        0 \r\n 1996          209           24.591        24.512        16.206        22.631 \r\n 1996          210           16.816        25.136        17.096        0 \r\n 1996          211           14.465        25.204        12.856        0 \r\n 1996          212           19.039        24.413        13.236        0 \r\n 1996          213           24.427        25.119        13.268        0 \r\n 1996          214           25.217        26.617        14.764        0 \r\n 1996          215           24.041        26.862        14.527        0 \r\n 1996          216           24.925        25.732        19.831        6.858 \r\n 1996          217           23.351        27.645        20.045        29.566 \r\n 1996          218           15.802        30.823        21.753        0 \r\n 1996          219           11.764        31.283        18.431        2.718 \r\n 1996          220           16.043        30.592        15.834        0 \r\n 1996          221           16.915        27.951        16.397        0 \r\n 1996          222           24.246        27.481        16.724        0 \r\n 1996          223           24.073        26.917        16.119        9.144 \r\n 1996          224           22.359        25.447        14.247        0 \r\n 1996          225           14.619        27.162        14.979        0 \r\n 1996          226           23.563        27.392        18.219        0 \r\n 1996          227           23.399        26.473        12.753        0 \r\n 1996          228           20.154        23.547        13.251        0 \r\n 1996          229           25.101        24.339        14.474        0 \r\n 1996          230           22.048        23.543        16.194        0 \r\n 1996          231           19.872        25.436        18.284        35.408 \r\n 1996          232           16.504        26.43         17.779        3.15 \r\n 1996          233           10.869        29.283        17.379        0 \r\n 1996          234           13.21         29.096        21.861        2.921 \r\n 1996          235           20.4          24.634        13.489        0 \r\n 1996          236           13.614        25.553        13.085        0 \r\n 1996          237           15.772        27.658        12.858        0 \r\n 1996          238           23.57         27.394        15.597        29.439 \r\n 1996          239           23.241        24.024        16.201        0 \r\n 1996          240           15.709        25.746        15.114        0 \r\n 1996          241           12.109        26.808        15.186        0 \r\n 1996          242           17.543        26.347        13.991        0 \r\n 1996          243           20.142        25.274        13.363        0 \r\n 1996          244           20.962        27.159        14.892        0 \r\n 1996          245           20.962        27.371        17.031        0 \r\n 1996          246           19.117        27.388        15.789        0 \r\n 1996          247           18.376        28.756        17.282        0 \r\n 1996          248           17.062        29.096        16.838        0 \r\n 1996          249           16.768        27.998        15.109        0 \r\n 1996          250           17.226        27.415        15.419        0 \r\n 1996          251           17.81         26.261        18.01         14.554 \r\n 1996          252           17.965        24.5          11.511        0 \r\n 1996          253           11.59         25.113        11.128        0 \r\n 1996          254           17.54         26.281        14.648        0 \r\n 1996          255           18.834        20.324        6.618         0 \r\n 1996          256           17.262        16.842        4.577         0 \r\n 1996          257           18.546        17.392        2.728         0 \r\n 1996          258           17.412        19.906        5.238         0 \r\n 1996          259           19.677        20.668        6.942         0 \r\n 1996          260           19.242        20.671        6.764         0 \r\n 1996          261           18.399        20.195        6.273         0 \r\n 1996          262           17            20.198        7.939         0 \r\n 1996          263           16.722        20.902        10.521        10.236 \r\n 1996          264           15.345        20.231        9.558         0 \r\n 1996          265           10.092        20.867        7.666         0 \r\n 1996          266           13.302        18.857        11.168        13.818 \r\n 1996          267           14.947        18.729        5.907         0 \r\n 1996          268           10.066        18.523        9.315         0 \r\n 1996          269           14.963        13.426        10.067        40.843 \r\n 1996          270           13.492        12.79         5.092         0 \r\n 1996          271           3.778         18.579        7.484         0 \r\n 1996          272           7.494         19.096        7.148         0 \r\n 1996          273           11.91         25.657        9.954         0 \r\n 1996          274           14.067        24.855        11.792        0 \r\n 1996          275           14.067        18.373        9.039         0 \r\n 1996          276           14.082        13.032       -0.428         0 \r\n 1996          277           14.476        16.815        1.97          0 \r\n 1996          278           14.355        22.614        6.609         0 \r\n 1996          279           14.355        23.526        10.422        0 \r\n 1996          280           14.104        20.417        7.762         0 \r\n 1996          281           13.586        16.219        0.468         0 \r\n 1996          282           13.342        16.254        5.314         0 \r\n 1996          283           14.625        14.381        1.089         0.51 \r\n 1996          284           13.354        18.126        0.588         0 \r\n 1996          285           13.354        22.761        7.811         0 \r\n 1996          286           13.112        26.387        11.068        0 \r\n 1996          287           13.112        26.767        12.193        0 \r\n 1996          288           11.747        24.909        12.8          0 \r\n 1996          289           11.747        23.426        10.188        0 \r\n 1996          290           10.776        21.059        7.186         0 \r\n 1996          291           10.776        11.574        2.177         0.25 \r\n 1996          292           11.417        17.606       -1.343         0 \r\n 1996          293           9.821         21.322        8.72          0 \r\n 1996          294           11.8          20.141        5.499         0 \r\n 1996          295           11.557        11.936        1.691         0 \r\n 1996          296           10.827        11.141        2.685         11.94 \r\n 1996          297           6.871         13.799       -0.179         36.07 \r\n 1996          298           3.616         16.969        5.112         0 \r\n 1996          299           10.869        22.226        11.229        0 \r\n 1996          300           10.63         22.369        5.628         0 \r\n 1996          301           8.52          13.707       -1.534         0 \r\n 1996          302           10.532        16.893        1.966         0 \r\n 1996          303           10.082        14.914       -3.214         22.61 \r\n 1996          304           6.916        -0.648        -4.927         0 \r\n 1996          305           8.206         0.487        -7.172         0 \r\n 1996          306           4.645         2.648        -8.881         0 \r\n 1996          307           6.503         13.382       -5.768         0 \r\n 1996          308           8.511         11.764        3.662         0 \r\n 1996          309           9.431         8.032         4.997         25.15 \r\n 1996          310           6.721         9.942         5.576         1.78 \r\n 1996          311           1.481         10.454       -1.209         2.54 \r\n 1996          312           3.303         6.907        -0.212         0 \r\n 1996          313           8.46          3.275        -2.81          0 \r\n 1996          314           7.558         0.007        -7.144         0 \r\n 1996          315           6.479        -2.667        -7.767         0 \r\n 1996          316           6.59         -4.064        -11.605        0 \r\n 1996          317           4.58         -4.351        -6.117         0 \r\n 1996          318           6.636        -1.938        -10.393        0 \r\n 1996          319           4.645         5.718        -3.579         0 \r\n 1996          320           6.083         12.444        5.233         17.27 \r\n 1996          321           5.912         12.345       -4.929         25.4 \r\n 1996          322           5.693        -1.613        -6.639         11.18 \r\n 1996          323           7.554        -1.531        -4.535         0 \r\n 1996          324           5.419        -1.029        -3.938         1.02 \r\n 1996          325           3.793        -0.528        -2.282         1.27 \r\n 1996          326           2.926         0.873        -3.254         0.25 \r\n 1996          327           2.145         1.852        -0.318         0 \r\n 1996          328           3.862         0.224        -9.377         1.78 \r\n 1996          329           4.291        -7.499        -14.878        1.78 \r\n 1996          330           7.831        -6.729        -17.572        0 \r\n 1996          331           6.795        -5.116        -11.823        0 \r\n 1996          332           8.281         3.756        -14.047        3.05 \r\n 1996          333           7.644         3.378        -1.076         0 \r\n 1996          334           6.37          2.371        -2.155         10.67 \r\n 1996          335           5.883        -1.554        -5.449         3.3 \r\n 1996          336           3.257        -1.525        -6.024         0 \r\n 1996          337           3.992        -2.528        -12.732        0 \r\n 1996          338           4.938        -0.546        -8.822         1.52 \r\n 1996          339           5.989         0.586        -4.333         0 \r\n 1996          340           7.069         0.903        -1.718         5.33 \r\n 1996          341           4.47          1.442        -6.732         0 \r\n 1996          342           5.198         0.373        -7.158         0 \r\n 1996          343           7.589        -0.788        -8.884         0 \r\n 1996          344           6.861         1.611        -5.144         0 \r\n 1996          345           6.341         1.827        -0.866         0 \r\n 1996          346           6.341         1.294        -0.491         0 \r\n 1996          347           4.731         2.224        -1.599         0 \r\n 1996          348           2.571         3.395        -1.977         5.08 \r\n 1996          349           4.834         3.407        -6.459         6.35 \r\n 1996          350           3.908         0.01         -6.577         0 \r\n 1996          351           5.451        -4.407        -12.162        0 \r\n 1996          352           6.377        -10.416       -17.163        0 \r\n 1996          353           8.125        -14.922       -18.82         0 \r\n 1996          354           6.274        -7.204        -22.102        0 \r\n 1996          355           4.731         2.246        -20.693        0 \r\n 1996          356           8.022         0.928        -8.816         0 \r\n 1996          357           8.64         -7.557        -12.471        0 \r\n 1996          358           7.405        -12.273       -19.863        0 \r\n 1996          359           5.04         -17.415       -21.513        0 \r\n 1996          360           5.245        -17.133       -20.897        1.78 \r\n 1996          361           4.731        -3.276        -22.475        1.78 \r\n 1996          362           2.983        -1.15         -8.139         0 \r\n 1996          363           8.537        -5.403        -17.676        0 \r\n 1996          364           7.302        -3.763        -18.088        0 \r\n 1996          365           8.524        -3.093        -10.447        0 \r\n 1996          366           7.381         1.591        -5.061         0 \r\n 1997          1             5.925         6.697         1.496         0 \r\n 1997          2             4.47          6.847         0.403         0 \r\n 1997          3             4.782         5.742         0.472         0 \r\n 1997          4             3.431         1.289        -9.957         4.32 \r\n 1997          5             7.173        -6.158        -14.951        0 \r\n 1997          6             5.883        -3.041        -16.667        0 \r\n 1997          7             7.144         2.198        -10.426        0 \r\n 1997          8             7.249         0.479        -9.642         0 \r\n 1997          9             7.039        -9.224        -22.196        1.52 \r\n 1997          10            6.619        -17.868       -23.314        0.51 \r\n 1997          11            4.565        -17.117       -24.897        0 \r\n 1997          12            6.052        -12.173       -19.836        0 \r\n 1997          13            5.733        -9.548        -19.046        0 \r\n 1997          14            7.22         -6.351        -11.088        0.25 \r\n 1997          15            4.353        -8.862        -21.541        2.03 \r\n 1997          16            9.011        -13.989       -24.773        0 \r\n 1997          17            8.26         -8.86         -21.902        0 \r\n 1997          18            9.011         3.036        -10.073        0 \r\n 1997          19            9.538         5.486        -2.84          0 \r\n 1997          20            8.129         6.283        -0.818         0 \r\n 1997          21            8.129         6.881        -9.01          0 \r\n 1997          22            9.416        -4.641        -14.374        0 \r\n 1997          23            8.978        -4.897        -14.394        0 \r\n 1997          24            6.569        -12.639       -22.114        5.33 \r\n 1997          25            10.064       -16.722       -22.154        0 \r\n 1997          26            3.76         -14.374       -19.234        1.78 \r\n 1997          27            6.414        -13.346       -25.688        0 \r\n 1997          28            10.276       -6.882        -17.532        0 \r\n 1997          29            10.165       -1.029        -16.688        0 \r\n 1997          30            10.835        6.396        -5.142         0 \r\n 1997          31            11.168        4.492        -0.572         0 \r\n 1997          32            7.332         2.598        -3.247         0 \r\n 1997          33            6.655         0.434        -2.786         0 \r\n 1997          34            4.898        -0.076        -4.828         0 \r\n 1997          35            3.759        -3.681        -6.237         17.02 \r\n 1997          36            3.105        -4.233        -7.789         0 \r\n 1997          37            4.946        -5.515        -8.862         0 \r\n 1997          38            4.486        -4.321        -7.754         0 \r\n 1997          39            6.503        -4.541        -10.598        0 \r\n 1997          40            11.032       -3.667        -7.283         0 \r\n 1997          41            6.799        -5.632        -9.303         0 \r\n 1997          42            6.916        -4.363        -17.516        0.25 \r\n 1997          43            13.135       -7.677        -21.046        0 \r\n 1997          44            13.372       -3.332        -12.171        0 \r\n 1997          45            12.543       -5.887        -20.548        0 \r\n 1997          46            14.811       -3.858        -11.212        2.79 \r\n 1997          47            9.675         4.282        -9.346         3.05 \r\n 1997          48            12.537        9.871         1.837         0 \r\n 1997          49            12.054        8.455        -3.293         0 \r\n 1997          50            14.476        6.368        -0.912         0 \r\n 1997          51            10.705        6.227        -2.037         1.27 \r\n 1997          52            11.048        0.473        -8.298         0 \r\n 1997          53            12.89         0.719        -11.621        0 \r\n 1997          54            15.359       -2.648        -11.529        0 \r\n 1997          55            12.882        2.591        -7.972         0 \r\n 1997          56            13.497        2.676        -1.574         0 \r\n 1997          57            10.622       -0.076        -5.553         2.79 \r\n 1997          58            8.699         3.382        -4.001         1.02 \r\n 1997          59            10.464        5.639        -1.742         0 \r\n 1997          60            11.783        5.434        -6.086         0 \r\n 1997          61            14.27         5.771        -2.158         0 \r\n 1997          62            13.189        3.034        -4.285         0 \r\n 1997          63            11.232       -0.154        -10.987        0 \r\n 1997          64            13.849       -0.392        -10.54         0 \r\n 1997          65            13.968        11.377       -7.821         0 \r\n 1997          66            12.318        12.588       -5.664         0 \r\n 1997          67            16.86         12.006        0.923         0 \r\n 1997          68            11.647        13.719       -1.805         8.64 \r\n 1997          69            14.878        13.591       -1.082         0 \r\n 1997          70            15.773        7.373        -1.593         0 \r\n 1997          71            12.747        6.443        -0.666         0 \r\n 1997          72            8.799         1.273        -7.728         26.16 \r\n 1997          73            10.01        -3.949        -12.739        3.3 \r\n 1997          74            14.104        7.32         -8.239         0 \r\n 1997          75            15.138        11.029        0.042         0 \r\n 1997          76            16.056        9.799        -1.443         0 \r\n 1997          77            14.453        8.746        -1.65          0.51 \r\n 1997          78            10.637        14.606        0.298         0 \r\n 1997          79            17.601        15.841        3.11          0 \r\n 1997          80            17.601        11.491       -0.648         0 \r\n 1997          81            18.213        9.757        -2.131         0 \r\n 1997          82            16.819        6.663         0.368         0 \r\n 1997          83            8.528         5.721         0.486         9.14 \r\n 1997          84            5.85          19.222       -2.869         0 \r\n 1997          85            15.639        22.729        3.2           0 \r\n 1997          86            17.928        13.842        5.131         0 \r\n 1997          87            16.966        10.886        2.834         0.51 \r\n 1997          88            11.035        13.134       -0.056         0 \r\n 1997          89            15.643        16.368       -4.351         0.51 \r\n 1997          90            18.819        20.225        1.013         0 \r\n 1997          91            16.933        18.199        6.042         2.718 \r\n 1997          92            17.246        16.419        4.555         0 \r\n 1997          93            16.034        15.248        6.581         0 \r\n 1997          94            13.576        15.319        10.098        18.186 \r\n 1997          95            6.652         12.634       -3.544         7.823 \r\n 1997          96            14.91         3.433        -6.577         0 \r\n 1997          97            14.226        3.981        -8.964         0 \r\n 1997          98            19.432        1.66         -9.928         0 \r\n 1997          99            17.09         2.349        -2.482         0 \r\n 1997          100           15.968        0.036        -1.58          0 \r\n 1997          101           2.777         2.948        -2.198         3.353 \r\n 1997          102           5.97          7.322        -4.418         0 \r\n 1997          103           17.625        12.247       -4.398         0 \r\n 1997          104           21.541        15.739        2.159         0 \r\n 1997          105           21.558        13.336       -4.139         0 \r\n 1997          106           22.686        12.685       -3.949         0 \r\n 1997          107           21.858        20.657       -0.307         0 \r\n 1997          108           22.993        20.828        1.814         0 \r\n 1997          109           23.446        19.558        2.033         0 \r\n 1997          110           21.444        16.646        3.354         0 \r\n 1997          111           18.287        11.885        7.528         3.886 \r\n 1997          112           11.375        14.002        5.54          0 \r\n 1997          113           14.647        14.054        0.136         0 \r\n 1997          114           21.463        16.956        1.359         0 \r\n 1997          115           22.929        17.829        4.747         0 \r\n 1997          116           21.907        18.813        7.604         0 \r\n 1997          117           19.414        21.837        4.625         0 \r\n 1997          118           24.415        22.769        8.497         0 \r\n 1997          119           22.797        22.808        1.554         35.662 \r\n 1997          120           18.069        13.573       -0.092         6.655 \r\n 1997          121           14.222        13.586        6.417         13.462 \r\n 1997          122           14.777        13.232        5.626         0 \r\n 1997          123           10.111        20.359        3.186         0 \r\n 1997          124           24.433        22.739        12.623        0 \r\n 1997          125           22.24         21.931        3.163         0 \r\n 1997          126           26.782        19.622        10.531        5.131 \r\n 1997          127           16.085        17.608        8.264         2.972 \r\n 1997          128           12.3          17.859        3.438         0 \r\n 1997          129           23.497        22.752        3.046         0 \r\n 1997          130           26.355        23.349        13.018        0 \r\n 1997          131           24.133        16.447        2.806         0 \r\n 1997          132           23.176        14.37        -1.213         0 \r\n 1997          133           25.734        14.507        5.516         0 \r\n 1997          134           20.619        14.649        1.372         0 \r\n 1997          135           24.137        25.997        1.608         0 \r\n 1997          136           24.137        27.823        10.093        0 \r\n 1997          137           26.711        30.841        14.366        0 \r\n 1997          138           23.002        28.728        6.694         0 \r\n 1997          139           28.023        17.739        2.655         0 \r\n 1997          140           24.136        19.862        4.479         0 \r\n 1997          141           24.458        21.604        6.187         0 \r\n 1997          142           24.132        24.669        8.959         0 \r\n 1997          143           22.665        24.613        13.761        0 \r\n 1997          144           18.875        19.152        11.759        0 \r\n 1997          145           14.443        17.181        5.817         24.359 \r\n 1997          146           12.966        12.663        7.981         6.502 \r\n 1997          147           8.26          13.301        8.35          3.531 \r\n 1997          148           6.938         14.998        8.824         0 \r\n 1997          149           7.104         20.479        7.117         0 \r\n 1997          150           21.641        25.674        10.134        0 \r\n 1997          151           25.771        26.775        11.266        0 \r\n 1997          152           27.496        27.32         10.412        0 \r\n 1997          153           28.167        26.781        13.144        0 \r\n 1997          154           25.85         25.626        14.324        0 \r\n 1997          155           22.819        28.129        13.817        0 \r\n 1997          156           24.245        25.503        11.645        0 \r\n 1997          157           19.557        26.031        12.461        0 \r\n 1997          158           25.658        25.763        12.169        0 \r\n 1997          159           24.94         25.341        10.041        0 \r\n 1997          160           25.837        26.13         12.579        0 \r\n 1997          161           25.658        26.196        12.674        0 \r\n 1997          162           25.12         25.821        16.383        13.97 \r\n 1997          163           15.789        27.988        15.418        0 \r\n 1997          164           22.752        26.846        14.575        0 \r\n 1997          165           24.016        29.737        18.623        0 \r\n 1997          166           20.947        29.141        15.564        0 \r\n 1997          167           25.822        28.486        11.878        0 \r\n 1997          168           28.17         29.112        15.908        13.183 \r\n 1997          169           19.141        31.083        17.146        2.972 \r\n 1997          170           17.696        31.377        19.324        0 \r\n 1997          171           24.377        31.264        18.401        45.06 \r\n 1997          172           17.877        30.452        19.309        0 \r\n 1997          173           22.03         31.304        21.683        0 \r\n 1997          174           20.224        31.171        22.323        0 \r\n 1997          175           18.599        27.916        18.883        8.382 \r\n 1997          176           14.446        27.336        14.724        0 \r\n 1997          177           25.822        28.851        14.99         0 \r\n 1997          178           25.28         30.458        19.755        0 \r\n 1997          179           20.585        30.735        17.742        0 \r\n 1997          180           23.113        29.242        18.276        7.518 \r\n 1997          181           16.974        30.509        20.392        0 \r\n 1997          182           21.513        29.746        15.156        0 \r\n 1997          183           26.139        22.391        11.861        0 \r\n 1997          184           21.062        21.268        11.734        0 \r\n 1997          185           21.25         23.581        8.433         0 \r\n 1997          186           27.456        24.038        13.745        0 \r\n 1997          187           23.507        25.918        9.141         0 \r\n 1997          188           28.396        28.744        18.941        0 \r\n 1997          189           23.542        28.093        12.888        0 \r\n 1997          190           28.027        25.168        13.954        0 \r\n 1997          191           24.103        30.058        17.124        0 \r\n 1997          192           23.729        31.659        20.861        6.045 \r\n 1997          193           17.003        31.404        21.331        0 \r\n 1997          194           15.037        31.859        18.838        0 \r\n 1997          195           18.935        31.837        16.049        0 \r\n 1997          196           26.175        33.323        19.328        0 \r\n 1997          197           25.804        32.974        22.204        0 \r\n 1997          198           22.501        32.974        19.534        0 \r\n 1997          199           23.977        33.374        21.752        0 \r\n 1997          200           21.21         32.863        21.639        0 \r\n 1997          201           22.686        30.899        19.467        9.169 \r\n 1997          202           17.223        27.903        20.027        0 \r\n 1997          203           18.14         25.828        18.973        15.951 \r\n 1997          204           12.46         28.786        21.393        59.817 \r\n 1997          205           12.924        34.009        22.94         0 \r\n 1997          206           20.569        34.117        21.673        0 \r\n 1997          207           21.843        32.984        22.304        3.226 \r\n 1997          208           20.071        27.771        20.581        0 \r\n 1997          209           19.528        26.418        15.077        0 \r\n 1997          210           24.772        24.743        13.962        0 \r\n 1997          211           23.709        25.534        13.251        0 \r\n 1997          212           24.966        27.203        15.009        0 \r\n 1997          213           25.799        30.198        18.253        0 \r\n 1997          214           22.273        32.304        19.363        0 \r\n 1997          215           23.687        30.533        18.389        0 \r\n 1997          216           24.581        27.983        11.781        0 \r\n 1997          217           27.565        25.491        11.074        0 \r\n 1997          218           25.81         26.762        13.849        0 \r\n 1997          219           24.239        26.887        12.396        0 \r\n 1997          220           24.588        26.884        12.412        0 \r\n 1997          221           24.939        25.846        16.408        0 \r\n 1997          222           21.475        18.021        13.363        11.862 \r\n 1997          223           12.555        20.204        16.709        8.839 \r\n 1997          224           7.568         22.522        13.807        0 \r\n 1997          225           17.027        23.964        13.856        0 \r\n 1997          226           20.667        28.307        15.117        7.544 \r\n 1997          227           16.226        30.161        18.142        0 \r\n 1997          228           23.236        28.526        17.776        0 \r\n 1997          229           20.861        19.857        14.388        0 \r\n 1997          230           15.831        20.048        15.872        3.073 \r\n 1997          231           14.147        23.141        16.621        0 \r\n 1997          232           13.043        24.521        11.498        0 \r\n 1997          233           23.745        24.664        11.531        0 \r\n 1997          234           24.413        28.452        12.673        0 \r\n 1997          235           23.575        29.943        17.815        0 \r\n 1997          236           22.745        29.662        16.784        0 \r\n 1997          237           20.933        27.638        19.788        0 \r\n 1997          238           13.351        28.514        18.384        0 \r\n 1997          239           17.836        29.566        16.005        0 \r\n 1997          240           16.854        30.209        19.843        0 \r\n 1997          241           19.005        30.146        21.493        0 \r\n 1997          242           17.381        30.242        18.32         0 \r\n 1997          243           20.317        31.057        17.952        0 \r\n 1997          244           19.349        30.689        19.442        3.912 \r\n 1997          245           12.893        21.928        9.106         0 \r\n 1997          246           19.413        21.198        8.363         0 \r\n 1997          247           19.857        27.007        8.869         0 \r\n 1997          248           20.592        31.116        15.724        0 \r\n 1997          249           20.145        31.248        17.629        16.713 \r\n 1997          250           18.832        23.81         16.767        3.505 \r\n 1997          251           7.968         24.154        13.953        0 \r\n 1997          252           16.516        22.534        9.357         0 \r\n 1997          253           19.265        23.259        8.121         0 \r\n 1997          254           19.84         25.352        8.804         0 \r\n 1997          255           19.545        24.658        15.031        3.429 \r\n 1997          256           12.697        25.504        15.697        0 \r\n 1997          257           11.042        27.228        14.518        0 \r\n 1997          258           15.996        28.311        17.481        0 \r\n 1997          259           16.011        28.404        12.097        0 \r\n 1997          260           18.259        30.816        13.589        0 \r\n 1997          261           17.418        30.23         19.774        0 \r\n 1997          262           14.771        20.467        7.365         0 \r\n 1997          263           16.589        18.763        4.439         0 \r\n 1997          264           16.589        17.936        9.831         6.807 \r\n 1997          265           11.382        18.611        11.55         22.479 \r\n 1997          266           4.388         21.384        5.834         0 \r\n 1997          267           15.371        27.047        8.239         0 \r\n 1997          268           16.868        27.421        10.876        0 \r\n 1997          269           16.865        25.797        13.861        0 \r\n 1997          270           15.381        24.033        10.027        0 \r\n 1997          271           14.72         25.934        11.534        0 \r\n 1997          272           14.185        25.689        9.322         0 \r\n 1997          273           15.129        25.084        7.426         0 \r\n 1997          274           15.527        31.146        11.804        0 \r\n 1997          275           14.74         34.64         17.381        0 \r\n 1997          276           14.213        32.94         9.396         0 \r\n 1997          277           15.921        30.238        13.307        0 \r\n 1997          278           14.355        32.629        17.107        0 \r\n 1997          279           12.292        30.822        18.346        0 \r\n 1997          280           11.516        26.08         19.437        0 \r\n 1997          281           6.286         20.221        7.794         9.4 \r\n 1997          282           8.724         21.341        6.007         7.62 \r\n 1997          283           12.337        21.191        7.68          0 \r\n 1997          284           12.337        25.864        13.018        0 \r\n 1997          285           6.178         18.353        11.697        29.72 \r\n 1997          286           8.069         12.677        4.138         13.97 \r\n 1997          287           10.372        12.83         5.832         0 \r\n 1997          288           11.122        13            7.06          0.25 \r\n 1997          289           10.281        16.54         9.03          0 \r\n 1997          290           12.015        16.58         0.233         0 \r\n 1997          291           11.785        18.02         3.357         0 \r\n 1997          292           10.434        13.67         4.279         0 \r\n 1997          293           11.435        10.22        -1.293         0 \r\n 1997          294           10.462        7.98         -1.499         0 \r\n 1997          295           9.854         6.269        -4.009         0 \r\n 1997          296           8.559         14.15         2.991         0 \r\n 1997          297           5.183         9.6           6.088         7.37 \r\n 1997          298           3.344         6.135         2.897         5.84 \r\n 1997          299           4.3           2.944        -2.757         17.02 \r\n 1997          300           7.81          0.311        -9.12          0 \r\n 1997          301           9.94          9.96         -5.194         0 \r\n 1997          302           9.964         11.6         -0.243         0 \r\n 1997          303           10.316        14.4          3.936         0 \r\n 1997          304           8.675         14.55         3.225         0 \r\n 1997          305           7.432         9.19          4.312         0.51 \r\n 1997          306           4.529         5.965        -2.324         3.3 \r\n 1997          307           3.45         -0.515        -2.419         0 \r\n 1997          308           2.99          1.103        -2.7           0 \r\n 1997          309           3.417         2.885         0.019         0.76 \r\n 1997          310           3.076         5.18          1.852         0.76 \r\n 1997          311           3.873         6.251         2.941         0 \r\n 1997          312           5.64          8.35          1.427         0 \r\n 1997          313           6.091         4.058        -0.112         2.79 \r\n 1997          314           4.915        -0.047        -4.627         0 \r\n 1997          315           7.931         0.848        -8.58          0 \r\n 1997          316           9.271        -0.679        -10.3          0.76 \r\n 1997          317           6.746         0.141        -1.742         0 \r\n 1997          318           3.097        -0.796        -9.52          1.27 \r\n 1997          319           4.866        -1.676        -9.42          1.27 \r\n 1997          320           8.43         -3.605        -11.32         0 \r\n 1997          321           8.978         6.156        -8.85          0 \r\n 1997          322           9.854         2.032        -6.53          0 \r\n 1997          323           9.104         5.058        -8.27          0 \r\n 1997          324           9.754         9.52         -4.637         0 \r\n 1997          325           9.321        -1.564        -5.534         0 \r\n 1997          326           6.651         0.384        -5.295         0 \r\n 1997          327           7.616         3.316        -7.5           0 \r\n 1997          328           9.333         5.578        -8.65          0 \r\n 1997          329           9.333         15.88        -4.03          0 \r\n 1997          330           8.918         9.55         -1.845         0 \r\n 1997          331           7.644         13.1          0.244         0 \r\n 1997          332           7.22          8.81          0.578         0 \r\n 1997          333           6.052         3.861        -0.196         18.8 \r\n 1997          334           3.257         3.833        -1.788         8.13 \r\n 1997          335           3.887         1.381         0.571         0 \r\n 1997          336           1.891         3.57          0.168         0 \r\n 1997          337           2.942         0.196        -3.898         5.59 \r\n 1997          338           2.942        -1.366        -8.22          1.78 \r\n 1997          339           5.094        -5.056        -10.51         0 \r\n 1997          340           5.406        -2.455        -5.352         0 \r\n 1997          341           3.327        -3.727        -5.543         0 \r\n 1997          342           1.871        -1.403        -4.571         3.3 \r\n 1997          343           1.871        -1.516        -3.812         1.78 \r\n 1997          344           2.911        -0.692        -3.539         1.78 \r\n 1997          345           3.846        -1.639        -5.094         0 \r\n 1997          346           6.171        -4.523        -9.49          0 \r\n 1997          347           5.451         2.398        -7.41          0 \r\n 1997          348           7.92          2.594        -7.75          0 \r\n 1997          349           7.817         5.853        -3.189         0 \r\n 1997          350           6.274         5.173        -2.126         0 \r\n 1997          351           7.097         4.936        -6.462         0 \r\n 1997          352           6.788         10.11        -1.591         0 \r\n 1997          353           6.377         4.974        -0.833         0 \r\n 1997          354           6.48          1.105        -6.019         0 \r\n 1997          355           6.068        -0.982        -7.78          0 \r\n 1997          356           2.571        -0.036        -2.042         1.27 \r\n 1997          357           2.263        -0.542        -3.642         1.02 \r\n 1997          358           1.851        -1.488        -4.713         0 \r\n 1997          359           2.777        -0.692        -5.018         0 \r\n 1997          360           4.525         2.838        -5.161         0 \r\n 1997          361           7.508        -0.139        -10.67         0 \r\n 1997          362           6.891         0.544        -5.275         0 \r\n 1997          363           5.348        -2.719        -6.472         0 \r\n 1997          364           5.198         2.207        -6.9           1.52 \r\n 1997          365           8.628        -3.959        -14.55         0 \r\n 1998          1             8.238         7.18         -4.007         0 \r\n 1998          2             5.041         11.98        -0.327         0 \r\n 1998          3             2.248         10.23        -7.95          0 \r\n 1998          4             0.748        -0.252        -6.06          6.6 \r\n 1998          5             1.546         0.441        -0.654         2.79 \r\n 1998          6             1.907         0.768        -1.873         0 \r\n 1998          7             1.198        -0.242        -3.567         0 \r\n 1998          8             8.048         1.798        -4.666         0 \r\n 1998          9             3.643        -2.643        -13.92         0 \r\n 1998          10            9.173        -7.47         -14.33         0 \r\n 1998          11            2.444        -7.92         -13.9          0 \r\n 1998          12            5.796        -7.68         -18.6          0 \r\n 1998          13            7.449        -10.41        -20.44         0 \r\n 1998          14            5.091        -7.02         -12.53         0 \r\n 1998          15            9.763        -6.137        -13.83         0 \r\n 1998          16            2.169        -3.793        -9.87          1.78 \r\n 1998          17            9.21         -3.151        -15.3          0 \r\n 1998          18            8.432        -5.38         -15.69         0 \r\n 1998          19            6.259        -3.406        -10.55         0 \r\n 1998          20            4.326        -3.311        -10.59         0 \r\n 1998          21            3.721        -2.088        -5.294         8.89 \r\n 1998          22            5.594        -1.042        -4.077         1.02 \r\n 1998          23            7.248        -1.779        -12.2          0 \r\n 1998          24            7.665        -1.332        -7.29          0 \r\n 1998          25            9.441         1.303        -9.12          0 \r\n 1998          26            6.759         0.817        -9.23          0 \r\n 1998          27            8.56         -0.054        -7.35          0 \r\n 1998          28            8.936         3.571        -5.894         0 \r\n 1998          29            11.48         2.36         -6.881         0 \r\n 1998          30            5.439        -0.41         -9.14          0 \r\n 1998          31            9.639         7.06         -4.865         0 \r\n 1998          32            5.78          3.279        -3.236         8.38 \r\n 1998          33            4.71         -1.234        -5.859         0 \r\n 1998          34            8.85         -5.465        -14.64         0 \r\n 1998          35            4.913        -3.748        -6.022         0 \r\n 1998          36            8.444        -1.853        -7.9           0 \r\n 1998          37            11.351        3.213        -7.33          0 \r\n 1998          38            10.56         4.135        -8.12          0 \r\n 1998          39            12.708        6.46         -6.824         0 \r\n 1998          40            9.99          5.683        -2.803         0 \r\n 1998          41            1.966         2.626        -1.835         9.65 \r\n 1998          42            6.395        -0.551        -3.614         1.78 \r\n 1998          43            10.153       -2.039        -5.514         0 \r\n 1998          44            8.718         1.444        -4.371         0 \r\n 1998          45            6.417         1.602        -3.529         0 \r\n 1998          46            9.544         10.8          0.9           0 \r\n 1998          47            4.033         6.897         1.379         0 \r\n 1998          48            1.311         4.088         1.103         7.11 \r\n 1998          49            2.575         3.674         1.019         2.29 \r\n 1998          50            3.281         3.626         0.488         2.29 \r\n 1998          51            4.618         5.04          0.319         0.51 \r\n 1998          52            5.153         6.308         0.711         0.25 \r\n 1998          53            4.988         8.4           1.838         0 \r\n 1998          54            6.062         12.97         3.241         1.27 \r\n 1998          55            12.848        14.03         1.002         0.25 \r\n 1998          56            2.954         13.18         6.27          0 \r\n 1998          57            3.697         11.01         2.214         1.27 \r\n 1998          58            2.735         2.214        -3.095         0 \r\n 1998          59            9.508        -2.211        -4.267         1.27 \r\n 1998          60            12.046       -0.79         -5.18          0.76 \r\n 1998          61            10.091        3.638        -4.865         0.25 \r\n 1998          62            7.465        -1.638        -4.532         0 \r\n 1998          63            10.521        0.67         -7.33          0 \r\n 1998          64            4.715        -0.328        -3.935         0.76 \r\n 1998          65            15.04         2.353        -7.06          0.25 \r\n 1998          66            4.6           0.197        -3.123         0.25 \r\n 1998          67            7.535        -0.57         -6.129         12.7 \r\n 1998          68            19.6         -6.129        -15.63         0 \r\n 1998          69            19.348       -9.85         -18.58         0 \r\n 1998          70            20.578       -10.79        -18.71         1.02 \r\n 1998          71            18.121       -9.33         -13.353        0 \r\n 1998          72            19.016        5.465        -12.94         0 \r\n 1998          73            20.029       -2.107        -11.5          0 \r\n 1998          74            6.825        -1.254        -5.984         0 \r\n 1998          75            9.768         2.267        -3.038         0 \r\n 1998          76            1.789         0.843        -0.748         4.83 \r\n 1998          77            3.942         1.662        -0.186         5.08 \r\n 1998          78            5.651         1.02         -1.038         0.25 \r\n 1998          79            19.007        4.191        -3.265         0 \r\n 1998          80            20.848        7.8          -3.661         0 \r\n 1998          81            10.833        5.352        -1.516         0 \r\n 1998          82            7.782         3.768        -1.685         0 \r\n 1998          83            6.156         3.05         -3.49          4.57 \r\n 1998          84            10.469        17.17         9.16          0 \r\n 1998          85            17.216        23.63         8.79          0 \r\n 1998          86            2.704         19.22         10.24         1.02 \r\n 1998          87            8.022         14.44         7.53          4.32 \r\n 1998          88            17.263        25.79         8.32          0 \r\n 1998          89            2.555         18.26         6.332         30.99 \r\n 1998          90            5.235         10.12         2.908         4.32 \r\n 1998          91            4.578         4.045         0.959         0 \r\n 1998          92            8.652         7.51          1.689         0 \r\n 1998          93            2.563         6.332         1.193         0 \r\n 1998          94            23.535        13.21         0.361         0 \r\n 1998          95            18.265        13.85        -0.061         0 \r\n 1998          96            11.606        18.46         5.82          12.751 \r\n 1998          97            4.671         13.63         9             7.239 \r\n 1998          98            2.53          9.07          5.215         5.309 \r\n 1998          99            10.013        12.06         3.725         0 \r\n 1998          100           24.815        15.74         1.362         0 \r\n 1998          101           21.767        22.47         3.706         0 \r\n 1998          102           11.373        21.57         9.76          0 \r\n 1998          103           8.457         17.77         9.94          0 \r\n 1998          104           19.226        18.39         6.531         13.233 \r\n 1998          105           2.144         10.71         5.309         3.505 \r\n 1998          106           12.074        10.76         1.867         0 \r\n 1998          107           26.355        14.53         0.473         0 \r\n 1998          108           24.819        17.51         1.586         5.156 \r\n 1998          109           11.407        17.25         5.404         12.522 \r\n 1998          110           11.289        10.61         4.874         4.801 \r\n 1998          111           21.728        16.93         4.648         0 \r\n 1998          112           25.69         19.65         3.941         0 \r\n 1998          113           26.016        21.75         11.17         0 \r\n 1998          114           24.91         24.6          7.12          0 \r\n 1998          115           15.334        21.7          11.8          0 \r\n 1998          116           3.178         14.16         8.1           0 \r\n 1998          117           24.023        15.49         2.889         0 \r\n 1998          118           15.413        17.28         1.474         0 \r\n 1998          119           5.32          12.75         7.222         2.286 \r\n 1998          120           10.055        17.74         10.67         0.762 \r\n 1998          121           20.673        24.73         10.556        0 \r\n 1998          122           18.732        14.72         6.237         3.81 \r\n 1998          123           23.39         23.43         8.47          0 \r\n 1998          124           26.702        26.76         6.435         0 \r\n 1998          125           26.552        25            10.98         0 \r\n 1998          126           9.073         19.74         11.38         2.032 \r\n 1998          127           15.596        20.56         12.82         1.524 \r\n 1998          128           16.533        20.99         11.37         0 \r\n 1998          129           21.129        24.66         10.36         0 \r\n 1998          130           22.154        25.09         9.78          0 \r\n 1998          131           26.869        25.53         9.89          0 \r\n 1998          132           21.562        22.44         12.84         8.128 \r\n 1998          133           25.319        25.47         9.01          0 \r\n 1998          134           23.974        29.54         15.34         0 \r\n 1998          135           9.622         26.6          14.75         0 \r\n 1998          136           29.187        26.52         12.66         0 \r\n 1998          137           22.756        30.22         12.8          0 \r\n 1998          138           26.139        31.96         17.5          0 \r\n 1998          139           17.563        32.63         18.25         10.211 \r\n 1998          140           19.231        23.97         15.94         0 \r\n 1998          141           17.455        23.65         12.44         17.729 \r\n 1998          142           13.962        18.11         11.3          14.224 \r\n 1998          143           5.037         17.77         11.46         18.288 \r\n 1998          144           16.725        22.06         10.73         0 \r\n 1998          145           12.576        20.13         13.5          0 \r\n 1998          146           18.989        23.81         12.12         0 \r\n 1998          147           24.258        27.01         14.8          0 \r\n 1998          148           25.79         33.46         16.69         15.494 \r\n 1998          149           24.355        27.92         17.48         2.286 \r\n 1998          150           11.721        27.89         18.41         2.54 \r\n 1998          151           26.492        24.68         11.59         0 \r\n 1998          152           16.575        22.43         7.44          2.286 \r\n 1998          153           29.519        22.42         11.87         0 \r\n 1998          154           11.43         11.88         5.364         9.398 \r\n 1998          155           12.115        15.74         8.72          1.27 \r\n 1998          156           15.626        16.75         7.49          1.778 \r\n 1998          157           19.495        19.06         6.851         5.334 \r\n 1998          158           16.762        19.03         7.61          0.254 \r\n 1998          159           4.647         15.7          12.778        36.068 \r\n 1998          160           8.919         17.76         12.96         6.604 \r\n 1998          161           22.902        23.48         10.91         1.524 \r\n 1998          162           12.028        22.77         16.79         28.956 \r\n 1998          163           26.496        24.88         14.12         0 \r\n 1998          164           29.234        26.23         14.44         0 \r\n 1998          165           2.013         19.66         16.53         76.708 \r\n 1998          166           15.107        23.14         15.89         0 \r\n 1998          167           27.365        24.72         15.54         0 \r\n 1998          168           14.274        25.48         15.42         1.524 \r\n 1998          169           7.142         24.8          16.24         21.336 \r\n 1998          170           30.114        29.16         15.18         0 \r\n 1998          171           20.965        29.93         17.62         13.97 \r\n 1998          172           25.206        26.9          16.65         0 \r\n 1998          173           24.89         27.79         15.88         0 \r\n 1998          174           17.633        28.31         16.22         0.762 \r\n 1998          175           25.813        32.04         18.07         0.254 \r\n 1998          176           24.353        32.82         22.74         0 \r\n 1998          177           27.75         33.51         21.53         0.254 \r\n 1998          178           27.191        33.47         20.26         22.098 \r\n 1998          179           26.67         29.3          20.33         0 \r\n 1998          180           18.83         28.36         16.62         18.288 \r\n 1998          181           25.261        25.98         16.9          0.508 \r\n 1998          182           27.49         28.77         17.2          0 \r\n 1998          183           25.876        28.5          17.09         0 \r\n 1998          184           13.196        28.04         19.43         4.318 \r\n 1998          185           20.86         27.64         19.01         0.254 \r\n 1998          186           4.83          21.85         17.76         7.366 \r\n 1998          187           23.689        31.74         20.6          26.67 \r\n 1998          188           24.248        29.95         20.22         1.016 \r\n 1998          189           27.349        30.11         19.81         0 \r\n 1998          190           23.298        30.51         21.01         0 \r\n 1998          191           24.861        29.84         20.56         0 \r\n 1998          192           25.756        28.36         19.36         0 \r\n 1998          193           25.186        28.73         17.62         0 \r\n 1998          194           27.715        30.36         18.51         0.254 \r\n 1998          195           27.618        30.32         18.56         0 \r\n 1998          196           27.106        29.93         17.95         8.128 \r\n 1998          197           28.661        27.71         19.09         0 \r\n 1998          198           19.158        28.32         17.51         8.89 \r\n 1998          199           28.107        30.5          19.59         0 \r\n 1998          200           26.254        32.54         20.16         0 \r\n 1998          201           26.836        34.7          22.99         0 \r\n 1998          202           15.995        28.87         20.94         2.032 \r\n 1998          203           17.435        27.94         17.93         4.572 \r\n 1998          204           25.906        25.65         15.27         0 \r\n 1998          205           21.974        26.34         17.76         0 \r\n 1998          206           15.551        24.8          16.99         0 \r\n 1998          207           25.759        26.99         15.53         0 \r\n 1998          208           25.911        28.32         16.23         0 \r\n 1998          209           27.189        30.97         15.99         0 \r\n 1998          210           26.343        27.43         13.83         0 \r\n 1998          211           19.722        26.44         15.21         0 \r\n 1998          212           26.317        26.87         12.69         0 \r\n 1998          213           26.811        26.25         14.99         0 \r\n 1998          214           7.408         21.81         15.68         2.286 \r\n 1998          215           23.687        29.26         18.09         8.382 \r\n 1998          216           11.039        26.41         19.04         1.016 \r\n 1998          217           8.067         24.35         18.2          13.97 \r\n 1998          218           3.973         19.97         17.71         0.762 \r\n 1998          219           18.277        25.06         17.58         0 \r\n 1998          220           24.052        27.87         16.05         0 \r\n 1998          221           23.965        31.47         17.56         0 \r\n 1998          222           20.705        27.6          18.83         0 \r\n 1998          223           25.189        29.52         17.14         0 \r\n 1998          224           16.667        26.49         17.3          0 \r\n 1998          225           17.243        25.99         18.33         0.254 \r\n 1998          226           23.492        29.26         17.05         2.286 \r\n 1998          227           24.282        27.94         17.4          1.016 \r\n 1998          228           23.237        29.8          18.13         0 \r\n 1998          229           19.86         29.65         21.56         0 \r\n 1998          230           19.958        30.39         19.24         0 \r\n 1998          231           16.092        30.89         20.13         0 \r\n 1998          232           21.62         32.92         20.91         29.464 \r\n 1998          233           11.657        26.58         21.22         0.254 \r\n 1998          234           23.353        31.27         21.05         0 \r\n 1998          235           23.201        32.02         21.16         0 \r\n 1998          236           13.405        30.5          20.5          0 \r\n 1998          237           23.089        27.39         17.58         0 \r\n 1998          238           16.396        26.29         15.52         0 \r\n 1998          239           5.791         24.87         19.49         18.542 \r\n 1998          240           16.956        28.92         18.44         0.254 \r\n 1998          241           22.997        30.71         17.1          0 \r\n 1998          242           21.708        28.76         15.91         0 \r\n 1998          243           9.702         22.87         16.23         1.778 \r\n 1998          244           21.653        27.12         13.63         1.778 \r\n 1998          245           20.764        24.82         12.24         0 \r\n 1998          246           22.087        29.38         16.33         0 \r\n 1998          247           22.912        29.68         14.64         0 \r\n 1998          248           19.201        30.91         14.95         0 \r\n 1998          249           20.002        33.41         18.56         0 \r\n 1998          250           22.467        25.09         12.74         0 \r\n 1998          251           22.922        22.83         8.62          0 \r\n 1998          252           22.03         23.65         8.81          0 \r\n 1998          253           20.884        28.21         11.66         3.556 \r\n 1998          254           22.101        31.78         10.47         0 \r\n 1998          255           21.09         33.69         13.6          0 \r\n 1998          256           15.881        31.33         17.14         0 \r\n 1998          257           8.124         26.29         18.4          0.762 \r\n 1998          258           18.834        28.92         17.11         0 \r\n 1998          259           11.015        25.82         15.05         0 \r\n 1998          260           14.735        28.11         14.99         0 \r\n 1998          261           16.986        29.23         14.69         0 \r\n 1998          262           18.485        32.02         16.88         5.588 \r\n 1998          263           10.776        25.65         14.26         5.588 \r\n 1998          264           9.857         17.72         8.8           0 \r\n 1998          265           20.027        18.91         7.62          0 \r\n 1998          266           16.56         21.33         6.841         2.286 \r\n 1998          267           16.602        24.58         11.94         0 \r\n 1998          268           12.361        30.26         14.78         0 \r\n 1998          269           12.686        31.55         20.39         5.842 \r\n 1998          270           18.219        26.61         15.83         0 \r\n 1998          271           18.097        27.27         12.84         0 \r\n 1998          272           16.98         29.16         15.63         0 \r\n 1998          273           15.599        25.51         6.942         0 \r\n 1998          274           17.836        16.79         2.706         0 \r\n 1998          275           2.115         10.5          6.97          7.62 \r\n 1998          276           1.274         10.37         7.16          7.62 \r\n 1998          277           2.108         13.98         9.92          5.08 \r\n 1998          278           2.559         17.97         11.32         22.61 \r\n 1998          279           6.396         12.59         6.191         1.52 \r\n 1998          280           8.945         16.04         3.984         0 \r\n 1998          281           16.898        17.13         2.171         0 \r\n 1998          282           15.9          18.76         2.856         0 \r\n 1998          283           15.812        21.7          5.259         0 \r\n 1998          284           12.061        21.69         7.72          0 \r\n 1998          285           16.091        16.34         4.193         1.52 \r\n 1998          286           15.59         16.05         3.157         0 \r\n 1998          287           3.849         12.79         2.471         8.38 \r\n 1998          288           7.944         21.8          9.86          1.02 \r\n 1998          289           4.481         22.79         15.86         0.25 \r\n 1998          290           1.602         20.38         7.59          14.99 \r\n 1998          291           12.213        15.35         5.415         0 \r\n 1998          292           13.475        16.08         5.315         0 \r\n 1998          293           2.019         8.44          2.678         1.52 \r\n 1998          294           13.908        15.07         2.152         2.54 \r\n 1998          295           13.561        17.19         1.43          0 \r\n 1998          296           13.865        18.56         2.696         0 \r\n 1998          297           10.546        19.42         6.021         0.25 \r\n 1998          298           12.636        21.62         9.47          1.78 \r\n 1998          299           10.387        23.07         7.45          0.25 \r\n 1998          300           6.148         20.25         12.79         19.56 \r\n 1998          301           5.759         18            9.09          0 \r\n 1998          302           8.57          22.71         11.85         5.59 \r\n 1998          303           10.441        12.77         5.346         0 \r\n 1998          304           3.246         9.76          6.192         0 \r\n 1998          305           2.023         11.79         5.342         0 \r\n 1998          306           2.367         8.07          2.639         1.27 \r\n 1998          307           4.742         4.882        -0.759         0 \r\n 1998          308           8.201         5.444        -3.754         0 \r\n 1998          309           4.145         2.827        -2.552         0 \r\n 1998          310           8.465         3.873        -3.638         0 \r\n 1998          311           2.331         0.964        -4.045         2.03 \r\n 1998          312           2.649         2.153        -0.197         3.05 \r\n 1998          313           0.642         7.1           1.957         2.54 \r\n 1998          314           2.734         13.31        -0.02          11.43 \r\n 1998          315           10.7          8.92         -1.884         0 \r\n 1998          316           7.433         5.784        -2.165         0 \r\n 1998          317           6.456         11.87        -3.229         0 \r\n 1998          318           8.558         13.7          0.365         0 \r\n 1998          319           7.178         8.67         -0.272         0 \r\n 1998          320           4.703         9.01          1.722         0 \r\n 1998          321           7.971         10.78         1.095         0 \r\n 1998          322           1.123         13.59        -0.525         0 \r\n 1998          323           8.699         4.991        -4.517         0 \r\n 1998          324           9.687         4.02         -5.43          0 \r\n 1998          325           7.606         12.92        -5.939         0 \r\n 1998          326           7.372         16.44         6.087         0 \r\n 1998          327           8.639         13.83         0.495         0 \r\n 1998          328           7.466         13.7         -2.372         0 \r\n 1998          329           9.155         14.34        -0.918         0 \r\n 1998          330           9.065         18.98        -0.74          0 \r\n 1998          331           8.962         20.22         0.309         0 \r\n 1998          332           2.107         14.51         3.342         0 \r\n 1998          333           2.956         20.85         11.92         0 \r\n 1998          334           7.311         12.78         0.495         2.54 \r\n 1998          335           8.416         18.28         0.167         0 \r\n 1998          336           4.919         15.03         6.734         0 \r\n 1998          337           5.171         16.28         7.49          0 \r\n 1998          338           4.176         19.52         6.201         0 \r\n 1998          339           7.286         16.56         2.462         0 \r\n 1998          340           0.838         2.49         -4.552         0 \r\n 1998          341           8.672         5.511        -6.266         0 \r\n 1998          342           8.452         9.53         -6.131         0 \r\n 1998          343           8.1           9.73         -4.237         0 \r\n 1998          344           8.347         7.31         -4.784         0 \r\n 1998          345           8.347         9.93         -4.469         0 \r\n 1998          346           8.028         10.58        -4.718         0 \r\n 1998          347           4.344         10.56        -2.513         0 \r\n 1998          348           8.083         13.32        -4.211         0 \r\n 1998          349           7.58          9.22         -2.917         0 \r\n 1998          350           5.554         6.62         -2.814         0 \r\n 1998          351           6.149         5.114        -6.604         0 \r\n 1998          352           5.55          6.658        -3.115         0 \r\n 1998          353           5.869        -2.88         -11.09         0 \r\n 1998          354           2.357        -7.88         -14.46         0 \r\n 1998          355           6.094        -12.14        -17.07         0 \r\n 1998          356           7.48         -9.2          -19.41         0 \r\n 1998          357           6.712        -6.137        -15.23         0 \r\n 1998          358           7.938        -2.681        -15.79         0 \r\n 1998          359           4.469         0.543        -10.85         0 \r\n 1998          360           2.174        -2.399        -14.27         0 \r\n 1998          361           7.095         2.781        -8.71          0 \r\n 1998          362           2.73          3.906        -9.53          0 \r\n 1998          363           8.341         4.157        -18.28         0 \r\n 1998          364           3.176        -14.59        -22.07         4.06 \r\n 1998          365           7.824        -12.29        -24.89         0 \r\n 1999          1             3.206        -10.86        -17.81         2.79 \r\n 1999          2             5.346        -8.95         -11.05         8.38 \r\n 1999          3             7.486        -10           -19.84         0 \r\n 1999          4             8.756        -19.83        -29.72         0 \r\n 1999          5             4.173        -5.578        -29.57         0 \r\n 1999          6             4.778        -5.199        -20.26         0 \r\n 1999          7             5.088        -15.06        -20.94         0 \r\n 1999          8             5.381        -12.04        -21.66         1.52 \r\n 1999          9             8.703        -12.84        -28.2          0 \r\n 1999          10            8.239        -10.03        -16.48         0 \r\n 1999          11            7.645        -5.132        -14.17         0 \r\n 1999          12            5.312        -6.974        -14.61         0 \r\n 1999          13            7.706        -9.67         -16.3          0 \r\n 1999          14            6.079        -5.485        -10.6          0 \r\n 1999          15            5.748         1.34         -11.67         0 \r\n 1999          16            9.567         4.615        -5.103         0 \r\n 1999          17            2.882         2.013        -5.696         1.78 \r\n 1999          18            9.271        -0.205        -9.11          0.51 \r\n 1999          19            9.513         0.656        -9.99          0 \r\n 1999          20            5.508         0.974        -9.97          0 \r\n 1999          21            4.999         2.05         -4.894         0 \r\n 1999          22            1.596         0.928        -0.556         6.6 \r\n 1999          23            2.659        -0.345        -1.77          0 \r\n 1999          24            1.962        -0.804        -6.939         0 \r\n 1999          25            10.506       -4.799        -11.55         0 \r\n 1999          26            3.938         0.674        -6.702         0 \r\n 1999          27            2.694         3.402        -2.831         0 \r\n 1999          28            7.067        -2.116        -5.782         0 \r\n 1999          29            4.887        -2.982        -7.16          0 \r\n 1999          30            7.035         0.385        -5.974         0 \r\n 1999          31            5.058         2.034        -1.779         0 \r\n 1999          32            2.798         1.671        -0.149         0.51 \r\n 1999          33            11.78         6.156        -2.86          0.25 \r\n 1999          34            7.245         9.5          -1.582         0 \r\n 1999          35            11.784       -1.582        -8.22          0 \r\n 1999          36            7.274         13.77        -3.057         0 \r\n 1999          37            6.283         3.572        -2.596         0 \r\n 1999          38            10.824        9.43         -2.099         0 \r\n 1999          39            11.383        14.76         2.363         0 \r\n 1999          40            10.8          11.93        -1.742         0 \r\n 1999          41            6.013         17.18         1.729         0 \r\n 1999          42            1.883         3.467        -5.926         7.62 \r\n 1999          43            10.354       -3.706        -7.21          0 \r\n 1999          44            13.43         1.851        -10.16         0 \r\n 1999          45            13.333        11.77        -2.455         0 \r\n 1999          46            12.565        12.6          0.056         0 \r\n 1999          47            2.548         0.235        -4.381         0 \r\n 1999          48            7.005        -0.533        -6.318         0 \r\n 1999          49            6.308        -0.963        -5.047         1.78 \r\n 1999          50            10.067       -0.256        -7.69          2.54 \r\n 1999          51            6.601        -1.732        -6.433         0 \r\n 1999          52            15.266        1.619        -10.36         0 \r\n 1999          53            4.919        -1.695        -6.943         0 \r\n 1999          54            8.196        -1.077        -4.618         3.3 \r\n 1999          55            7.416         0.048        -5.501         0 \r\n 1999          56            15.034        5.767        -4.588         0 \r\n 1999          57            2.289         2.692        -1.488         0 \r\n 1999          58            6.175         6.668         0.131         0 \r\n 1999          59            7.547         4.983        -1.723         0 \r\n 1999          60            16.26         15.01        -2.841         0 \r\n 1999          61            4.874         8.39         -4.57          1.52 \r\n 1999          62            17.173        1.742        -7.72          0 \r\n 1999          63            12.207        7.77         -3.686         0 \r\n 1999          64            4.513         2.04         -2.352         0 \r\n 1999          65            9.728        -2.07         -6.607         0 \r\n 1999          66            17.684       -0.411        -6.087         0 \r\n 1999          67            6.603        -2.342        -5.675         10.41 \r\n 1999          68            13.17        -0.242        -2.85          5.08 \r\n 1999          69            14.362        0.098        -4.267         0 \r\n 1999          70            18.817        1.797        -5.009         0.51 \r\n 1999          71            17.429        2.181        -7.23          0 \r\n 1999          72            17.628        4.332        -5.731         0 \r\n 1999          73            19.272        6.602        -5.633         0 \r\n 1999          74            18.851        9.47         -3.944         0 \r\n 1999          75            18.806        18.11         0.663         0 \r\n 1999          76            18.305        11.91         1.465         0 \r\n 1999          77            19.99         9.14         -1.508         0 \r\n 1999          78            19.936        12.35        -3.831         0 \r\n 1999          79            19.785        15.83        -3.189         0 \r\n 1999          80            20.715        10.27        -3.001         0 \r\n 1999          81            13.582        8.97         -3.878         0 \r\n 1999          82            20.844        14.11        -2.699         0 \r\n 1999          83            21.349        8.04         -3.889         0 \r\n 1999          84            21.322        9.21         -5.367         0 \r\n 1999          85            21.112        12.36        -6.038         0 \r\n 1999          86            19.019        16.96        -3.039         0 \r\n 1999          87            20.3          13.61         1.385         7.11 \r\n 1999          88            21.816        18.26         1.938         0 \r\n 1999          89            21.041        23.45         3.227         0 \r\n 1999          90            5.452         16.15         10.54         0 \r\n 1999          91            8.498         22.11         8.99          0 \r\n 1999          92            13.093        18.31         2.73          2.286 \r\n 1999          93            11.704        21.52         6.061         9.652 \r\n 1999          94            22.918        15.54         1.14          0 \r\n 1999          95            1.16          12.64         6.821         39.116 \r\n 1999          96            21.65         15.47         3.049         0 \r\n 1999          97            22.966        23.37         5.09          0 \r\n 1999          98            2.287         12.8          7.13          48.514 \r\n 1999          99            4.376         9.51          5.03          1.524 \r\n 1999          100           3.987         12.94         5.014         1.016 \r\n 1999          101           8.235         10.86         2.842         0 \r\n 1999          102           22.093        16.47         0.889         0 \r\n 1999          103           8.837         16.65         7.97          0.762 \r\n 1999          104           8.215         15.04         6.858         2.54 \r\n 1999          105           4.16          7.31          1.614         22.352 \r\n 1999          106           6.535         3.649        -0.907         3.556 \r\n 1999          107           15.366        8.83          1.279         0 \r\n 1999          108           23.308        11.44        -0.73          0 \r\n 1999          109           25.153        17.19         3.011         0 \r\n 1999          110           19.29         20.14         5.801         2.286 \r\n 1999          111           10.716        15.74         6.081         24.13 \r\n 1999          112           3.134         10.57         4.757         27.94 \r\n 1999          113           10.035        13.2          2.861         0 \r\n 1999          114           25.937        16.05         5.399         0 \r\n 1999          115           18.401        15.75         6.083         0 \r\n 1999          116           5.682         16.12         9.24          1.27 \r\n 1999          117           4.25          12.63         8.91          4.318 \r\n 1999          118           15.557        17.05         8.18          0 \r\n 1999          119           27.32         20.16         5.941         0 \r\n 1999          120           27.522        21.8          3.668         0 \r\n 1999          121           27.486        21.93         7.08          0 \r\n 1999          122           21.518        23.42         7.44          0 \r\n 1999          123           24.127        24.16         12.98         0 \r\n 1999          124           11.417        20.77         15.37         0 \r\n 1999          125           7.309         16.42         9.22          0.762 \r\n 1999          126           6.033         12.5          9.1           3.556 \r\n 1999          127           6.26          11.42         8.44          8.636 \r\n 1999          128           7.424         12.1          5.195         0 \r\n 1999          129           25.912        20.75         2.498         0 \r\n 1999          130           18.961        27.81         12.7          1.016 \r\n 1999          131           10.06         18.75         10.12         44.196 \r\n 1999          132           5.797         12.45         9.13          14.478 \r\n 1999          133           9.404         14.3          8.89          0 \r\n 1999          134           21.507        19.79         8.45          0 \r\n 1999          135           7.397         18.52         13.74         2.54 \r\n 1999          136           10.691        26.14         15.51         6.604 \r\n 1999          137           11.066        17.64         13.06         14.224 \r\n 1999          138           28.721        20.59         9.75          0 \r\n 1999          139           27.955        24.57         10.24         0 \r\n 1999          140           8.742         22.13         16.13         5.588 \r\n 1999          141           16.218        22.51         15.07         29.464 \r\n 1999          142           26.612        25.07         12.84         1.778 \r\n 1999          143           23.245        17.12         9.42          0.254 \r\n 1999          144           26.381        19.18         9.62          0 \r\n 1999          145           29.754        21.09         9.47          0 \r\n 1999          146           30.115        23.85         7.46          0 \r\n 1999          147           27.257        29.02         10.41         0.508 \r\n 1999          148           27.74         29.34         14.24         0 \r\n 1999          149           28.399        27.44         12.54         0 \r\n 1999          150           24.068        28.1          14.62         0.254 \r\n 1999          151           17.075        21.36         14.33         0.254 \r\n 1999          152           12.427        22.21         12.68         14.478 \r\n 1999          153           24.607        23.81         11.1          0 \r\n 1999          154           23.94         25.4          12.22         0 \r\n 1999          155           11.07         25.24         16.86         17.018 \r\n 1999          156           19.208        30.47         19.5          0 \r\n 1999          157           14.526        28.58         21.63         0 \r\n 1999          158           29.815        31.82         17.86         0 \r\n 1999          159           19.358        31.43         18.42         4.826 \r\n 1999          160           22.168        31.38         18.66         28.956 \r\n 1999          161           11.281        23.78         17.92         56.388 \r\n 1999          162           17.045        24.89         18.76         0 \r\n 1999          163           17.243        25.14         18.87         0 \r\n 1999          164           13.711        24.28         14.7          9.906 \r\n 1999          165           30.217        21.61         11.84         0 \r\n 1999          166           6.687         14.64         10.43         1.016 \r\n 1999          167           19.082        17.99         8.68          0.254 \r\n 1999          168           23.401        21.87         9.17          0 \r\n 1999          169           22.641        21.99         11.27         0 \r\n 1999          170           11.725        22.87         14.48         1.016 \r\n 1999          171           20.268        26.24         17.54         0 \r\n 1999          172           23.705        29.41         18.04         0 \r\n 1999          173           14.579        27.66         19.76         11.684 \r\n 1999          174           21.815        27.38         19.19         19.304 \r\n 1999          175           27.669        30.35         18.26         0 \r\n 1999          176           28.608        31.21         19.24         0 \r\n 1999          177           26.614        30.4          19.52         0 \r\n 1999          178           11.81         26.44         18.6          5.08 \r\n 1999          179           13.765        22.19         13.5          0 \r\n 1999          180           23.556        21.24         11.64         0 \r\n 1999          181           17.586        24.32         12.96         1.27 \r\n 1999          182           21.146        25.38         14.93         0.254 \r\n 1999          183           3.397         26.77         15.67         6.604 \r\n 1999          184           17.787        32.28         23.84         1.016 \r\n 1999          185           28.647        33.15         23.27         0 \r\n 1999          186           27.085        33.64         22.36         29.972 \r\n 1999          187           30.249        27.71         18.11         2.794 \r\n 1999          188           29.201        28.73         16.32         0 \r\n 1999          189           26.466        32.84         17.87         7.366 \r\n 1999          190           28.623        27.11         17.32         8.128 \r\n 1999          191           28.71         24.17         14.59         0 \r\n 1999          192           22.131        25.84         13.09         0 \r\n 1999          193           27.262        26.59         13.4          0 \r\n 1999          194           26.227        28.46         16.59         0 \r\n 1999          195           27.29         31.11         18.75         0 \r\n 1999          196           27.101        33.02         20.9          0 \r\n 1999          197           8.676         26.34         19.57         28.194 \r\n 1999          198           27.765        29.35         18.14         0.508 \r\n 1999          199           23.37         31.32         20.83         2.286 \r\n 1999          200           23.43         32.55         22.52         15.748 \r\n 1999          201           24.909        32.56         22.14         0.254 \r\n 1999          202           24.783        32.98         23.13         0 \r\n 1999          203           26.149        33.31         23.83         0 \r\n 1999          204           19.224        31.4          23.02         0.508 \r\n 1999          205           27.462        33.51         22.62         0 \r\n 1999          206           26.295        34.18         22.49         0.254 \r\n 1999          207           14.883        30.41         23.3          11.938 \r\n 1999          208           22.13         31.71         21.75         0 \r\n 1999          209           27.091        34.29         20.57         0 \r\n 1999          210           25.575        35.64         23.78         0 \r\n 1999          211           25.453        34.6          22.22         26.416 \r\n 1999          212           20.035        27.94         17.12         3.81 \r\n 1999          213           23.611        24.83         14.63         0 \r\n 1999          214           18.775        25.08         16.04         0 \r\n 1999          215           24.703        27.19         14.81         0 \r\n 1999          216           25.378        26.12         17.03         0.254 \r\n 1999          217           22.396        27.59         14.43         0 \r\n 1999          218           16.561        26.93         16.76         36.068 \r\n 1999          219           11.852        24.67         18.07         1.524 \r\n 1999          220           25.131        23.73         15.91         0 \r\n 1999          221           25.551        27.92         13.1          0 \r\n 1999          222           24.841        29.06         18.02         0 \r\n 1999          223           5.64          24.06         19.16         3.556 \r\n 1999          224           21.011        30.44         18.17         6.604 \r\n 1999          225           11.414        20.95         13.34         0.508 \r\n 1999          226           26.267        22.98         11.31         0 \r\n 1999          227           21.349        27.19         13.16         0 \r\n 1999          228           12.502        29.52         18.54         0.254 \r\n 1999          229           20.01         30.68         16.69         0 \r\n 1999          230           9.171         25.14         17.96         75.692 \r\n 1999          231           13.584        23.74         15.06         0.254 \r\n 1999          232           20.924        25.34         13.79         0 \r\n 1999          233           20.045        27.14         16.7          0 \r\n 1999          234           12.351        26.04         16.08         18.796 \r\n 1999          235           19.878        25.76         15.6          0 \r\n 1999          236           15.728        24.44         15.39         0 \r\n 1999          237           19.939        27.81         15.94         0 \r\n 1999          238           20.963        28.75         16.67         0 \r\n 1999          239           22.392        30.54         17.29         0 \r\n 1999          240           20.594        31.79         20.35         0 \r\n 1999          241           16.895        27.46         18.93         0 \r\n 1999          242           19.13         24.58         14.44         0 \r\n 1999          243           19.64         26.44         14.45         0 \r\n 1999          244           13.288        28.52         15.97         0 \r\n 1999          245           20.45         31.55         16.24         0 \r\n 1999          246           18.887        31.37         18.11         0 \r\n 1999          247           9.43          27.46         18.09         5.08 \r\n 1999          248           21.747        22.82         12.35         5.842 \r\n 1999          249           21.807        24.59         11.42         0 \r\n 1999          250           19.731        29.85         14.53         27.686 \r\n 1999          251           22.045        23.48         10.15         0 \r\n 1999          252           21.641        19.81         7.57          0 \r\n 1999          253           21.863        23.81         6.574         0 \r\n 1999          254           20.448        26.75         8.11          0 \r\n 1999          255           15.559        21.7          10.7          0 \r\n 1999          256           11.448        15.87         6.253         0 \r\n 1999          257           20.696        18.77         5.704         0 \r\n 1999          258           15.33         19.53         4.121         0 \r\n 1999          259           20.481        22.25         6.113         0 \r\n 1999          260           19.919        22.898        6.118         0 \r\n 1999          261           19.04         26.15         6.28          0 \r\n 1999          262           3.918         18.4          9.16          0 \r\n 1999          263           15.494        14.66         2.434         0 \r\n 1999          264           19.558        17.94         1.403         0 \r\n 1999          265           18.995        25.32         3.56          0 \r\n 1999          266           18.367        28.85         9.78          0 \r\n 1999          267           16.939        24.48         8.1           0 \r\n 1999          268           15.914        28.48         11.48         0 \r\n 1999          269           4.838         20.95         11.16         6.858 \r\n 1999          270           9.502         15.75         9.67          7.874 \r\n 1999          271           11.285        18.42         8.29          0 \r\n 1999          272           18.292        17.1          3.117         0 \r\n 1999          273           17.282        22.13         5.203         0 \r\n 1999          274           9.269         14.05         2.592         0 \r\n 1999          275           16.583        10.44         1.244         0 \r\n 1999          276           5.501         6.715        -0.562         5.59 \r\n 1999          277           17.099        13.74        -2.213         0 \r\n 1999          278           17.305        21.38         5.266         0 \r\n 1999          279           16.407        20.99         2.238         0 \r\n 1999          280           15.753        25.41         12.31         0 \r\n 1999          281           7.736         20.84         10.82         0 \r\n 1999          282           16.227        24.18         5.066         0 \r\n 1999          283           15.698        20.96         8.92          0 \r\n 1999          284           15.511        20.83         4.949         0 \r\n 1999          285           12.186        29.49         11.3          0 \r\n 1999          286           13.561        13.84         2.44          0 \r\n 1999          287           14.827        18.94         2.032         0 \r\n 1999          288           13.874        27.38         7.32          0 \r\n 1999          289           14.141        15.25         5.918         1.02 \r\n 1999          290           13.207        10.56        -0.59          0 \r\n 1999          291           4.551         10.98        -1.452         0 \r\n 1999          292           6.379         9.45         -0.477         0 \r\n 1999          293           14.119        15.44        -4.486         0 \r\n 1999          294           11.894        24.56         4.052         0 \r\n 1999          295           13.679        13.21         2.097         0 \r\n 1999          296           14.1          8.36         -2.55          0 \r\n 1999          297           13.764        13.62        -5.689         0 \r\n 1999          298           12.366        20.75         1.47          0 \r\n 1999          299           12.029        19.81         1.856         0 \r\n 1999          300           12.307        26.18         6.211         0 \r\n 1999          301           11.486        17.42         4.858         0 \r\n 1999          302           8.678         25.03         9.65          0 \r\n 1999          303           7.401         16.54         4.616         2.03 \r\n 1999          304           12.675        20.22         1.637         0 \r\n 1999          305           12.019        13.48         2.956         0 \r\n 1999          306           12.563        7.83         -1.245         0 \r\n 1999          307           12.333        15.63        -6.596         0 \r\n 1999          308           10.215        17.99        -3.558         0 \r\n 1999          309           11.113        14.48         3.063         0 \r\n 1999          310           10.895        16.23        -1.142         0 \r\n 1999          311           10.458        19.1          1.857         0 \r\n 1999          312           10.652        26.52         3.328         0 \r\n 1999          313           9.937         23.41         9.29          0 \r\n 1999          314           9.863         14.12         5.246         0 \r\n 1999          315           4.512         11.46         2.401         0 \r\n 1999          316           9.575         19.47         0.543         0 \r\n 1999          317           10.342        26.78         2.786         0 \r\n 1999          318           10.009        11.91         1.525         0 \r\n 1999          319           9.903         15.85        -3.379         0 \r\n 1999          320           9.909         12.21        -1.48          0 \r\n 1999          321           9.063         13.9          0.085         0 \r\n 1999          322           8.794         23.46         3.382         0 \r\n 1999          323           1.154         7.85         -1.714         1.27 \r\n 1999          324           8.828         9.2          -6.788         0 \r\n 1999          325           8.209         15.65         0.927         0 \r\n 1999          326           9.213         13.36        -0.252         0 \r\n 1999          327           1.591         5.861         0.263         19.05 \r\n 1999          328           9.497         7.49         -1.255         0 \r\n 1999          329           9.47          8.53         -3.662         0 \r\n 1999          330           4.439         8.21          2.791         1.52 \r\n 1999          331           8.733         7.75          0.365         1.78 \r\n 1999          332           5.312         7.8          -0.177         0 \r\n 1999          333           8.948         4.624        -4.391         0 \r\n 1999          334           3.757         7.58         -4.372         0 \r\n 1999          335           4.17          10.89         0.225         0 \r\n 1999          336           2.874         14.67         6.326         0 \r\n 1999          337           2.801         13.64         4.604         5.59 \r\n 1999          338           2.496         5.691         0.047         0 \r\n 1999          339           7.965         1.615        -6.054         0 \r\n 1999          340           6.797         3.947        -8.3           0 \r\n 1999          341           8.248         9.39         -3.785         0 \r\n 1999          342           7.676         10.18        -2.898         0 \r\n 1999          343           6.469         5.701        -5.438         0 \r\n 1999          344           8.213         3.955        -8.06          0 \r\n 1999          345           7.304         6.013        -7.21          0 \r\n 1999          346           8.385         9.73         -3.699         0 \r\n 1999          347           8.442         7.24         -7.78          0 \r\n 1999          348           1.591         0.469        -5.659         0 \r\n 1999          349           1.595        -0.084        -10.09         0 \r\n 1999          350           4.8          -5.693        -15.23         0 \r\n 1999          351           2.347        -5.341        -10.31         0.51 \r\n 1999          352           7.211        -2.455        -14.25         0 \r\n 1999          353           2.533        -0.573        -9.93          5.84 \r\n 1999          354           8.58         -9.85         -21.11         0 \r\n 1999          355           4.809        -12.98        -23.74         0 \r\n 1999          356           5.908        -13.17        -21.13         1.27 \r\n 1999          357           5.136         0.562        -21.91         0 \r\n 1999          358           7.57         -5.801        -17.02         0 \r\n 1999          359           8.458         4.053        -11.76         0 \r\n 1999          360           8.484         3.62         -5.811         0 \r\n 1999          361           6.747         0.888        -13.57         0 \r\n 1999          362           7.602         5.749        -9.1           0 \r\n 1999          363           8.424         13.04        -2.605         0 \r\n 1999          364           8.015         8.82         -2.455         0 \r\n 1999          365           8.287         8.24         -5.763         0 \r\n 2000          1             4             4.144        -2.342         0 \r\n 2000          2             1.433         2.674        -0.71          0 \r\n 2000          3             1.22         -0.384        -6.524         0.51 \r\n 2000          4             7.836        -6.524        -16.06         1.78 \r\n 2000          5             3.716         0.927        -15.38         0 \r\n 2000          6             8.411         2.013        -5.332         0 \r\n 2000          7             8.687         5.219        -12.63         0 \r\n 2000          8             8.502         7.89         -3.916         0 \r\n 2000          9             2.002         7.06         -1.235         0.25 \r\n 2000          10            6.829         8.38         -1.863         0 \r\n 2000          11            4.932        -1.844        -8.4           0 \r\n 2000          12            5.701         1.828        -7.44          0 \r\n 2000          13            9.035        -3.746        -13.21         0 \r\n 2000          14            6.425         7.3          -12.06         0 \r\n 2000          15            7.544         10.54        -4.97          0 \r\n 2000          16            4.937        -3.123        -11.79         0 \r\n 2000          17            1.082        -3.066        -4.637         0 \r\n 2000          18            9.506         2.669        -7.68          0 \r\n 2000          19            3.158        -1.188        -18.23         7.62 \r\n 2000          20            10.214       -9.04         -21.04         0 \r\n 2000          21            7.598        -8.6          -19.09         0 \r\n 2000          22            7.821        -0.861        -9.82          1.02 \r\n 2000          23            9.901        -6.477        -19.15         0 \r\n 2000          24            9.486         2.726        -20.68         0 \r\n 2000          25            7.29         -4.143        -16.83         0 \r\n 2000          26            10.903       -8.37         -19.86         0 \r\n 2000          27            9.99         -6.359        -18.55         0 \r\n 2000          28            7.764        -5.151        -13.37         0 \r\n 2000          29            9.454        -3.711        -7.95          1.52 \r\n 2000          30            9.341        -4.323        -13.34         1.52 \r\n 2000          31            10.75        -2.681        -16.32         0 \r\n 2000          32            5.43         -4.01         -13.09         0 \r\n 2000          33            9.055         4.889        -14.09         0 \r\n 2000          34            3.674         4.201        -6.263         0 \r\n 2000          35            6.081        -2.652        -6.495         0 \r\n 2000          36            10.832        3.073        -12.09         0 \r\n 2000          37            10.052        7.02         -2.953         0 \r\n 2000          38            11.986        2.482        -8.14          0 \r\n 2000          39            10.239        8.32         -9.08          0 \r\n 2000          40            8.442         9.23         -0.161         0 \r\n 2000          41            1.936         1.313        -6.282         0 \r\n 2000          42            11.857       -2.84         -11.06         0 \r\n 2000          43            4.423         0.045        -8.63          0 \r\n 2000          44            6.427        -1.263        -5.62          2.29 \r\n 2000          45            12.579        0.142        -8.45          0 \r\n 2000          46            12.354        12.97        -5.218         0 \r\n 2000          47            13.637        0.319        -9.56          0 \r\n 2000          48            2.265         0.095        -5.256         0.51 \r\n 2000          49            7.75         -2.098        -5.199         8.38 \r\n 2000          50            13.575       -0.994        -9.68          0 \r\n 2000          51            14.78         3.609        -14.11         0 \r\n 2000          52            12.968        9.26         -3.51          0 \r\n 2000          53            7             12.28         1.705         0 \r\n 2000          54            8.003         16.5          7.43          1.02 \r\n 2000          55            4.624         12.4          6.451         4.32 \r\n 2000          56            6.426         16.42         7.97          14.22 \r\n 2000          57            8.389         10.39         1.95          2.79 \r\n 2000          58            16.279        11.19        -0.448         0 \r\n 2000          59            15.56         18.7         -0.289         0 \r\n 2000          60            8.179         15.92         2.359         7.87 \r\n 2000          61            15.659        8.99         -1.189         0.25 \r\n 2000          62            13.299        7.47         -3.765         0 \r\n 2000          63            14.75         10.18        -3.331         0 \r\n 2000          64            16.883        20.44        -1.226         0 \r\n 2000          65            17.295        20.73         1.329         0 \r\n 2000          66            16.091        23.01         4.803         0 \r\n 2000          67            15.07         25.13         11.31         0 \r\n 2000          68            10.116        21.14         4.954         0 \r\n 2000          69            3.482         4.964        -3.274         0 \r\n 2000          70            13.878        3.457        -5.292         0 \r\n 2000          71            18.995        7.29         -6.972         0 \r\n 2000          72            6.026         7.02         -4.144         0 \r\n 2000          73            14.617        10.25        -1.929         0 \r\n 2000          74            9.99          15.58        -1.986         0.51 \r\n 2000          75            3.331         7.33         -3.709         0.76 \r\n 2000          76            19.906        4.36         -7.97          0 \r\n 2000          77            19.977        6.983        -8.25          0 \r\n 2000          78            3.481         3.664        -0.757         3.56 \r\n 2000          79            3.272         1.41         -0.682         0.76 \r\n 2000          80            6.245         6.745         0.123         0 \r\n 2000          81            4.277         9.53          4.313         0 \r\n 2000          82            7.404         15.09         5.597         0 \r\n 2000          83            11.998        19.08         4.558         0 \r\n 2000          84            9.023         17.59         5.493         5.33 \r\n 2000          85            21.415        17.52         1.786         0 \r\n 2000          86            12.763        21.06         0.784         0 \r\n 2000          87            20.189        15.07        -3.813         0 \r\n 2000          88            22.048        12.07        -3.851         0 \r\n 2000          89            22.256        14.86        -2.55          0 \r\n 2000          90            15.76         15.99         1.517         0 \r\n 2000          91            18.171        17.44         0.625         0 \r\n 2000          92            12.288        13.52         1.44          0.762 \r\n 2000          93            20.527        18.52        -0.992         0 \r\n 2000          94            16.676        10.65         0.066         0 \r\n 2000          95            23.533        11.74        -4.059         0 \r\n 2000          96            21.138        28.78        -0.046         0 \r\n 2000          97            22.412        16.72         2.541         0 \r\n 2000          98            3.397         8.93         -3.794         5.08 \r\n 2000          99            24.452        10.69        -6.255         1.016 \r\n 2000          100           23.365        13.75         2.007         0 \r\n 2000          101           5.059         8.73          2.942         1.016 \r\n 2000          102           11.173        7.69         -0.739         0 \r\n 2000          103           15.478        12.46        -4.343         0 \r\n 2000          104           22.587        22.56         2.792         0.254 \r\n 2000          105           22.03         26.7          8.77          0 \r\n 2000          106           5.2           9.93          2.925         0 \r\n 2000          107           3.791         7.13          2.831         8.89 \r\n 2000          108           8.743         8.76          1.942         0 \r\n 2000          109           23.133        22.53         2.624         0 \r\n 2000          110           16.938        25.49         11.37         1.016 \r\n 2000          111           3.054         11.87         4.115         7.366 \r\n 2000          112           26.683        18.16         0.796         0 \r\n 2000          113           23.18         24.99         2.474         0 \r\n 2000          114           22.234        24.86         7.64          0 \r\n 2000          115           25.496        20.12         3.863         0 \r\n 2000          116           26.963        21.15         4.661         0 \r\n 2000          117           23.821        22.78         5.407         0.254 \r\n 2000          118           10.318        19.2          10.83         0.508 \r\n 2000          119           21.848        22.08         8.66          0 \r\n 2000          120           27.283        19.36         2.993         0 \r\n 2000          121           21.738        25.18         6.507         0 \r\n 2000          122           20.123        24.34         11.45         0 \r\n 2000          123           27.384        26.42         7.83          0 \r\n 2000          124           20.881        26.54         10.72         0 \r\n 2000          125           24.457        28.73         11.39         0.508 \r\n 2000          126           25.591        28.72         12.43         0 \r\n 2000          127           22.066        27.81         13.48         0 \r\n 2000          128           22.214        29.8          14.58         0 \r\n 2000          129           8.327         23.24         13.58         3.81 \r\n 2000          130           11.353        18.21         8.5           0.254 \r\n 2000          131           15.575        23.29         5.436         0 \r\n 2000          132           16.929        35.26         13.35         0 \r\n 2000          133           20.056        21.86         7.68          1.778 \r\n 2000          134           19.937        14.8          3.077         0 \r\n 2000          135           23.078        21.5          2.332         0 \r\n 2000          136           14.151        20.84         9.87          0 \r\n 2000          137           24.49         24.75         9.29          0 \r\n 2000          138           14.224        28.76         17.79         0 \r\n 2000          139           5.907         21.34         9.7           39.878 \r\n 2000          140           26.44         16.61         8.28          0 \r\n 2000          141           28.72         21.23         6.088         0 \r\n 2000          142           23.724        26.1          12.45         0 \r\n 2000          143           21.741        29.54         14.32         0 \r\n 2000          144           15.802        25.9          13.66         0 \r\n 2000          145           20.284        27.09         12.35         0 \r\n 2000          146           26.575        25.07         6.982         30.81 \r\n 2000          147           2.656         18.08         11.54         14.402 \r\n 2000          148           4.514         15.6          12.02         0 \r\n 2000          149           10.461        17.66         10.62         0 \r\n 2000          150           21.468        23.61         11.58         0 \r\n 2000          151           18.031        30.39         16.54         14.224 \r\n 2000          152           15.746        26.52         17.05         0 \r\n 2000          153           22.566        30.18         15.24         0 \r\n 2000          154           29.789        21.53         11.23         0 \r\n 2000          155           28.087        24.47         10.44         0 \r\n 2000          156           10.035        21.78         12.13         9.906 \r\n 2000          157           19.18         18.28         9.95          0 \r\n 2000          158           29.724        22.96         8.84          0 \r\n 2000          159           24.969        29.09         12.05         0 \r\n 2000          160           28.944        33.5          17.98         0 \r\n 2000          161           29.322        31.77         15.6          0 \r\n 2000          162           19.691        30.22         22.96         0 \r\n 2000          163           12.883        26.63         19            7.112 \r\n 2000          164           17.634        25.72         17.47         0.762 \r\n 2000          165           11.108        28.45         17.36         31.674 \r\n 2000          166           12.088        20.47         14.59         0.508 \r\n 2000          167           25.951        27.89         11.39         3.556 \r\n 2000          168           23.502        20.76         10.46         1.524 \r\n 2000          169           18.881        19.86         9.01          0.254 \r\n 2000          170           29.9          24.42         8.65          0 \r\n 2000          171           25.574        27.78         12.39         10.16 \r\n 2000          172           21.849        26.55         14.04         0 \r\n 2000          173           30.17         26.27         12.98         0 \r\n 2000          174           30.408        30.38         13.33         0 \r\n 2000          175           17.083        27.33         16.67         5.842 \r\n 2000          176           22.169        26.55         18.81         0.254 \r\n 2000          177           12.113        26.88         17.02         16.51 \r\n 2000          178           27.502        24.86         16.38         0 \r\n 2000          179           28.869        25.62         13.81         8.89 \r\n 2000          180           16.67         22.91         13.61         2.54 \r\n 2000          181           26.757        25.36         12.63         0 \r\n 2000          182           23.407        26.96         16.27         1.778 \r\n 2000          183           22.525        27.44         14.78         0.254 \r\n 2000          184           21.786        31.59         18.07         8.128 \r\n 2000          185           14.606        25.2          18.26         0 \r\n 2000          186           11.186        27.03         20.93         4.826 \r\n 2000          187           10.648        27.73         20.24         0.254 \r\n 2000          188           23.288        30.1          20.04         0.254 \r\n 2000          189           16.379        29.58         20.12         0 \r\n 2000          190           27.796        32.33         23.11         0 \r\n 2000          191           13.716        30.04         22.59         0 \r\n 2000          192           16.88         28.76         20.31         15.24 \r\n 2000          193           12.885        27.74         20.83         0.762 \r\n 2000          194           19.169        28.51         18.24         0 \r\n 2000          195           28.457        31.15         18.39         0 \r\n 2000          196           28.786        31            18.7          1.016 \r\n 2000          197           21.879        28.61         18.69         0 \r\n 2000          198           21.426        28.99         18.03         2.286 \r\n 2000          199           27.822        26.93         15.85         0 \r\n 2000          200           6.926         18.39         13.58         4.572 \r\n 2000          201           15.549        20.72         13.86         0 \r\n 2000          202           19.494        23.54         13.34         0 \r\n 2000          203           28.26         23.71         11.26         0 \r\n 2000          204           28.218        25.33         11.02         0 \r\n 2000          205           25.184        26.37         13.02         0 \r\n 2000          206           20.893        26.55         14.59         0 \r\n 2000          207           22.018        27.5          17.07         0 \r\n 2000          208           12.407        27.12         16.5          28.956 \r\n 2000          209           27.883        29.63         16.56         0 \r\n 2000          210           25.231        28.28         16.89         0 \r\n 2000          211           16.409        24.68         16.29         0 \r\n 2000          212           23.264        27.27         17.01         0 \r\n 2000          213           26.67         29.41         16.11         0 \r\n 2000          214           21.641        30.5          17.52         0 \r\n 2000          215           26.544        28.92         17.44         0 \r\n 2000          216           17.333        25.84         14.57         0 \r\n 2000          217           24.367        26.72         16.82         0 \r\n 2000          218           15.248        29.23         18.28         1.016 \r\n 2000          219           21.837        27.33         16.97         0 \r\n 2000          220           23.944        31.68         16.23         0 \r\n 2000          221           22.155        31.01         18.67         3.556 \r\n 2000          222           25.946        30.74         19.04         0 \r\n 2000          223           25.238        30.02         16.09         0 \r\n 2000          224           23.57         29.11         15.23         0 \r\n 2000          225           20.23         31.87         17.69         0 \r\n 2000          226           18.587        29.99         19.95         13.462 \r\n 2000          227           24.299        32.79         20.76         0 \r\n 2000          228           19.99         29.02         17.74         0 \r\n 2000          229           16.374        25.64         14.57         1.016 \r\n 2000          230           7.104         21.51         15.72         0 \r\n 2000          231           24.813        24.78         13.7          0 \r\n 2000          232           14.835        23.81         13.5          1.27 \r\n 2000          233           12.449        22.45         15.84         0 \r\n 2000          234           10.92         26.26         16.46         0.508 \r\n 2000          235           11.935        26.83         19.09         8.128 \r\n 2000          236           9.773         26.77         18.16         1.778 \r\n 2000          237           22.977        29.09         15.16         0 \r\n 2000          238           20.857        30.74         16.7          0 \r\n 2000          239           15.035        30.02         19.07         0 \r\n 2000          240           8.172         24.72         16.65         0.254 \r\n 2000          241           9.981         28.98         20.65         0 \r\n 2000          242           17.632        25.32         15.94         0 \r\n 2000          243           17.613        33.07         16.04         0 \r\n 2000          244           18.807        37.01         19.5          0 \r\n 2000          245           13.97         29.35         19.22         0 \r\n 2000          246           16.965        36.47         18.98         0 \r\n 2000          247           21.552        33.36         18.85         1.524 \r\n 2000          248           8.01          23.98         13.91         0 \r\n 2000          249           23.036        23.84         9.96          0 \r\n 2000          250           22.077        25.69         9.18          0 \r\n 2000          251           12.715        25.12         12.8          0.762 \r\n 2000          252           21.127        30.65         14.39         0 \r\n 2000          253           20.675        31.93         19.49         0 \r\n 2000          254           19.892        35.13         17.5          0 \r\n 2000          255           20.241        36.34         14.31         0 \r\n 2000          256           21.983        25.99         7.95          0 \r\n 2000          257           20.344        33.33         12.27         0 \r\n 2000          258           20.633        24.71         9.79          4.572 \r\n 2000          259           20.321        21.52         6.216         0 \r\n 2000          260           20.464        26.96         5.402         0 \r\n 2000          261           19.7          33.51         10.64         0 \r\n 2000          262           16.171        33.08         15.36         0 \r\n 2000          263           3.095         25.78         12.97         2.286 \r\n 2000          264           9.335         18.32         4.373         1.016 \r\n 2000          265           17.947        18.7          2.04          0 \r\n 2000          266           4.02          18.05         9.79          13.208 \r\n 2000          267           3.458         12.75         8.83          0 \r\n 2000          268           3.588         8.93          6.585         0 \r\n 2000          269           19.563        18.02         2.593         0 \r\n 2000          270           19.104        24.2          2.453         0 \r\n 2000          271           18.502        24.94         8.16          0 \r\n 2000          272           18.143        25.41         8.15          0 \r\n 2000          273           16.852        28.08         11.53         0 \r\n 2000          274           16.297        28.04         12.7          0 \r\n 2000          275           11.374        27.77         12.1          0 \r\n 2000          276           17.37         22.51         11.64         0 \r\n 2000          277           11.076        22.95         8.84          0 \r\n 2000          278           12.585        16.36         5.826         3.05 \r\n 2000          279           3.266         9.94          0.767         10.92 \r\n 2000          280           10.429        5.805        -2.484         0 \r\n 2000          281           7.496         4.944        -3.772         0 \r\n 2000          282           17.299        8.68         -4.762         0 \r\n 2000          283           16.972        13.63        -4.744         0 \r\n 2000          284           16.885        17.67        -3.001         0 \r\n 2000          285           15.993        20.5         -1.161         0 \r\n 2000          286           12.695        23.74         8.15          0 \r\n 2000          287           14.104        26.73         13.84         0 \r\n 2000          288           14.836        24.1          11.09         7.62 \r\n 2000          289           14.942        17.04         4.967         0 \r\n 2000          290           10.502        17.53         3.828         0 \r\n 2000          291           11.111        18.67         7.46          0.76 \r\n 2000          292           14.551        26.63         4.534         0 \r\n 2000          293           14.227        27.81         8.97          0 \r\n 2000          294           11.166        21.84         10.52         0 \r\n 2000          295           12.892        24.73         7.21          0 \r\n 2000          296           2.327         16.65         11.73         2.03 \r\n 2000          297           5.158         19.9          13.99         2.54 \r\n 2000          298           8.71          24.25         12.3          0 \r\n 2000          299           7.646         23.43         15.65         1.78 \r\n 2000          300           10.598        22.45         10.22         17.78 \r\n 2000          301           5.019         12.4          8.46          0 \r\n 2000          302           4.691         12.79         8.89          0 \r\n 2000          303           2.159         12.89         9.49          1.52 \r\n 2000          304           10.338        21.35         10.74         1.52 \r\n 2000          305           5.353         21.25         9.48          0 \r\n 2000          306           3.036         21.73         9.99          15.24 \r\n 2000          307           11.807        15.6          2.899         3.56 \r\n 2000          308           10.903        11.52         1.385         0 \r\n 2000          309           11.135        15.31         3.668         0.25 \r\n 2000          310           3.033         12.77         3.032         0 \r\n 2000          311           1.194         10.49         4.796         33.27 \r\n 2000          312           2.474         4.815        -3.587         1.52 \r\n 2000          313           6.054        -1.714        -4.049         0 \r\n 2000          314           1.541        -1.536        -4.164         0 \r\n 2000          315           6.077         2.819        -4.525         0 \r\n 2000          316           1.633         0.122        -5.516         0 \r\n 2000          317           2.117         1.91         -3.153         6.1 \r\n 2000          318           2.64         -0.599        -5.759         0 \r\n 2000          319           9.256        -1.207        -7.56          0 \r\n 2000          320           7.412         7.54         -8.96          0 \r\n 2000          321           5.069         5.153        -7.02          0.25 \r\n 2000          322           6.044        -2.606        -8.84          0 \r\n 2000          323           4.588        -1.171        -8.15          0 \r\n 2000          324           4.941         2.876        -8.54          0 \r\n 2000          325           5.798        -7.81         -14.4          0 \r\n 2000          326           9.354         0.898        -15.42         0 \r\n 2000          327           9.385        -0.9          -11.77         0 \r\n 2000          328           9.472         8.22         -10.41         0 \r\n 2000          329           8.985         8.82         -8.17          0 \r\n 2000          330           5.233         8.4          -2.691         0 \r\n 2000          331           1.777        -1.948        -4.334         0 \r\n 2000          332           8.928         8.47         -5.649         0 \r\n 2000          333           2.801         7.19         -6.855         0 \r\n 2000          334           1.365         1.686        -2.399         0.25 \r\n 2000          335           3.542         0.796        -3.209         0 \r\n 2000          336           3.906        -0.655        -3.511         2.79 \r\n 2000          337           9.398        -3.501        -15.13         0.76 \r\n 2000          338           8.005        -0.524        -16.68         0 \r\n 2000          339           5.229         1.339        -11.99         0 \r\n 2000          340           6.848        -11.76        -16.1          0 \r\n 2000          341           4.209        -3.18         -12.61         0.51 \r\n 2000          342           5.059         4.454        -5.715         0 \r\n 2000          343           8.586        -5.687        -12.03         0 \r\n 2000          344           1.771         0.703        -8.4           0 \r\n 2000          345           6.345         1.414        -17.64         0 \r\n 2000          346           3.804        -16.56        -20.7          19.05 \r\n 2000          347           8.451        -16.41        -25.29         0 \r\n 2000          348           3.854        -10.84        -18.6          2.79 \r\n 2000          349           7.51         -11.09        -18            0 \r\n 2000          350           3.934        -5.15         -17.03         0 \r\n 2000          351           5.054        -4.552        -18.94         2.54 \r\n 2000          352           8.493        -12.95        -21.58         0 \r\n 2000          353           5.117        -12.42        -17.49         5.84 \r\n 2000          354           8.761        -15.25        -22.97         0 \r\n 2000          355           4.335        -7.71         -17.77         0.51 \r\n 2000          356           7.864        -17.34        -21.76         0 \r\n 2000          357           8.262        -14.44        -26.09         0 \r\n 2000          358           7.349        -11.08        -20.68         1.52 \r\n 2000          359           8.969        -18.46        -26.24         0 \r\n 2000          360           5.082        -13.27        -26.21         0 \r\n 2000          361           7.909        -9.82         -18.22         0 \r\n 2000          362           7.962        -10.24        -21.85         0 \r\n 2000          363           2.206        -8.15         -14.5          2.79 \r\n 2000          364           8.009        -11.11        -15.08         1.27 \r\n 2000          365           7.961        -12.59        -18.33         0 \r\n 2000          366           6.286        -12.83        -16.03         0 \r\n 2001          1             5.79         -8.05         -13.45         1.27 \r\n 2001          2             8.657        -5.673        -22.84         0 \r\n 2001          3             5.804        -0.934        -8.41          0 \r\n 2001          4             5.961         4.654        -10.02         0 \r\n 2001          5             9.133         1.546        -7.54          0 \r\n 2001          6             8.954         4.71         -8.85          0 \r\n 2001          7             7.32          0.984        -8.43          0 \r\n 2001          8             7.847        -2.906        -13.95         0 \r\n 2001          9             8.769        -0.729        -17.08         0 \r\n 2001          10            8.553         4.248        -5.993         0 \r\n 2001          11            1.881         2.661         0.301         2.79 \r\n 2001          12            2.05          0.545        -1.61          0.25 \r\n 2001          13            2.353         0.525        -0.71          0 \r\n 2001          14            3.573         1.259        -0.242         1.27 \r\n 2001          15            5.514         0.245        -6.387         0 \r\n 2001          16            8.347        -5.399        -9.94          0 \r\n 2001          17            6.002        -3.245        -10.36         0 \r\n 2001          18            6.34          0.363        -12.16         0 \r\n 2001          19            9.831        -12.15        -19.6          0 \r\n 2001          20            9.928        -5.868        -20.87         0 \r\n 2001          21            10.464       -6.369        -13.83         0 \r\n 2001          22            9.919         2.22         -14.44         0 \r\n 2001          23            10.684        1.161        -8.1           0 \r\n 2001          24            11.095       -5.734        -15.23         0 \r\n 2001          25            9.977        -3.651        -17.7          0 \r\n 2001          26            4.284        -2.154        -12.03         3.3 \r\n 2001          27            11.525       -4.02         -17.53         0 \r\n 2001          28            4.347        -2.257        -7.72          0.25 \r\n 2001          29            1.255         0.6          -2.483         15.75 \r\n 2001          30            9.567         1.809        -2.84          3.3 \r\n 2001          31            10.323       -2.595        -7.95          0 \r\n 2001          32            11.144       -7.19         -21.82         0 \r\n 2001          33            8.426        -11.8         -23.55         0 \r\n 2001          34            6.703         0.151        -14.28         0 \r\n 2001          35            6.822         0.825        -6.988         0 \r\n 2001          36            7.234         2.444        -6.28          0 \r\n 2001          37            12.315       -0.008        -7.69          0 \r\n 2001          38            1.696        -0.476        -7.9           0.25 \r\n 2001          39            1.689        -0.026        -6.485         4.32 \r\n 2001          40            7.6          -6.466        -17.24         14.48 \r\n 2001          41            14.925       -12.02        -19.87         0 \r\n 2001          42            11.224       -4.932        -16.77         0 \r\n 2001          43            10.341        0.817        -5.161         0 \r\n 2001          44            4.055         1.013        -5.008         0 \r\n 2001          45            6.2          -0.457        -13.11         1.52 \r\n 2001          46            8.783        -5.792        -12.11         0 \r\n 2001          47            14.075       -7.67         -16.964        0 \r\n 2001          48            13.883       -10.58        -18.86         0 \r\n 2001          49            13.876       -0.766        -14.17         0 \r\n 2001          50            13.73         1.133        -6.321         0 \r\n 2001          51            12.027       -4.665        -14.49         0 \r\n 2001          52            10.365       -11.21        -19.05         0 \r\n 2001          53            13.656       -0.545        -11.46         0 \r\n 2001          54            12.594       -5.6          -13.889        0 \r\n 2001          55            2.324         4.6          -2.907         11.94 \r\n 2001          56            15.502        2.701        -8.078         0 \r\n 2001          57            6.317         0.961        -10.329        0 \r\n 2001          58            9.609        -8.99         -17.028        0 \r\n 2001          59            17.191       -4.874        -19.494        0 \r\n 2001          60            6.034        -3.171        -12.293        0 \r\n 2001          61            17.263        0.488        -6.65          0 \r\n 2001          62            16.881        2.059        -9.75          0 \r\n 2001          63            17.857       -2.967        -9.238         0 \r\n 2001          64            18.144       -1.529        -11.585        0 \r\n 2001          65            17.906       -0.927        -12.051        0 \r\n 2001          66            5.438        -1.294        -5.989         0 \r\n 2001          67            8.095        -1.949        -5.371         0 \r\n 2001          68            15.849        0.658        -7.394         0 \r\n 2001          69            5.595         5.576        -3.727         0 \r\n 2001          70            12.28         1.687        -7.839         0 \r\n 2001          71            6.006         3.325        -1.829         20.32 \r\n 2001          72            9.092         4.829        -1.137         0 \r\n 2001          73            14.203        8.429        -1.9           0.76 \r\n 2001          74            2.66          2.887        -1.289         0.25 \r\n 2001          75            12.53         0.717        -3.619         0.25 \r\n 2001          76            20.742        2.653        -8.136         0 \r\n 2001          77            18.859        4.184        -9.333         0 \r\n 2001          78            20.13         5.646        -4.399         0 \r\n 2001          79            20.594        8.161        -4.923         0 \r\n 2001          80            12.009        8.9           1.259         0 \r\n 2001          81            15.206        12.51        -1.104         0 \r\n 2001          82            5.384         1.681        -4.766         0.76 \r\n 2001          83            15.645       -4.387        -8.45          0 \r\n 2001          84            18.312       -4.513        -9.09          0 \r\n 2001          85            22.258        1.208        -10.64         0 \r\n 2001          86            22.253        5.816        -9.65          0 \r\n 2001          87            3.989         2.787        -1.01          0 \r\n 2001          88            6.462         7.79         -0.377         1.27 \r\n 2001          89            15.356        12.16        -0.897         0 \r\n 2001          90            18.326        8.43         -2.098         4.32 \r\n 2001          91            18.158        11.39        -2.004         0 \r\n 2001          92            21.065        12.76         0.076         0 \r\n 2001          93            12.614        10.79         1.269         0 \r\n 2001          94            19.533        16.72         0.532         0 \r\n 2001          95            6.208         19.52         8             0 \r\n 2001          96            3.652         17.06         6.479         6.35 \r\n 2001          97            19.863        19.16         6.44          0.254 \r\n 2001          98            22.838        21.53         1.271         13.716 \r\n 2001          99            10.265        14.63         7.31          0 \r\n 2001          100           5.496         13.57         7.32          10.414 \r\n 2001          101           7.344         20.81         10.03         22.098 \r\n 2001          102           10.368        12.74         4.484         0 \r\n 2001          103           22.058        17.75         1.175         2.286 \r\n 2001          104           21.383        18.48         2.027         0 \r\n 2001          105           23.616        14.66         0.356         0.254 \r\n 2001          106           16.863        3.547        -1.845         0 \r\n 2001          107           24.892        10.05        -2.117         0 \r\n 2001          108           24.155        16.22        -1.761         0 \r\n 2001          109           18.508        21.79         4.657         0 \r\n 2001          110           19.975        26.83         12.9          1.778 \r\n 2001          111           13.874        17.64         7.74          0.508 \r\n 2001          112           9.061         25.05         6.697         18.542 \r\n 2001          113           7.767         18.04         3.706         0 \r\n 2001          114           23.744        19.48         0.702         1.778 \r\n 2001          115           25.754        22.58         4.78          0 \r\n 2001          116           23.666        29.31         10.37         0 \r\n 2001          117           26.093        27.82         10.03         0 \r\n 2001          118           22.793        27            12.79         0 \r\n 2001          119           24.81         28.85         12.82         0 \r\n 2001          120           6.495         21.1          13.62         6.604 \r\n 2001          121           22.8          28.62         11.7          4.572 \r\n 2001          122           1.853         20.36         11.66         9.906 \r\n 2001          123           7.109         16.58         9.95          21.082 \r\n 2001          124           4.524         15.27         11.67         3.048 \r\n 2001          125           5.066         17.24         10.46         3.81 \r\n 2001          126           14.915        22.61         11.59         5.588 \r\n 2001          127           24.412        19.82         8.45          0 \r\n 2001          128           26.826        23.69         8.56          0 \r\n 2001          129           25.9          29.12         10.82         1.778 \r\n 2001          130           17.567        28.09         13.34         24.892 \r\n 2001          131           25.606        20.52         10.4          0 \r\n 2001          132           18.63         19.86         8.57          0 \r\n 2001          133           7.715         14.86         11.47         6.604 \r\n 2001          134           27.647        30.85         12            0 \r\n 2001          135           24.574        32.44         20.66         0 \r\n 2001          136           25.367        30.65         17.73         0 \r\n 2001          137           21.557        28.27         16.31         0 \r\n 2001          138           25.098        26.72         12.92         0 \r\n 2001          139           26.215        27.63         13.81         0 \r\n 2001          140           5.587         21.61         11.23         40.132 \r\n 2001          141           14.932        14.23         7.03          1.27 \r\n 2001          142           15.195        13.8          6.654         0 \r\n 2001          143           13.684        11.82         5.781         3.81 \r\n 2001          144           17.609        14.67         5.261         0.762 \r\n 2001          145           8.999         15.19         10.06         6.858 \r\n 2001          146           14.913        17.39         10.05         5.08 \r\n 2001          147           16.215        18.21         9.39          0.508 \r\n 2001          148           24.097        20.99         10.96         3.302 \r\n 2001          149           26.253        23.63         10.04         0 \r\n 2001          150           4             16.09         11.83         0 \r\n 2001          151           3.945         13.59         7.49          16.256 \r\n 2001          152           20.456        21.29         5.781         1.778 \r\n 2001          153           17.78         19.26         10.4          0 \r\n 2001          154           14.225        17.19         8.11          0 \r\n 2001          155           13.501        17.83         10.01         0.508 \r\n 2001          156           7.594         17.96         10.19         7.62 \r\n 2001          157           24.609        24.05         13.67         0 \r\n 2001          158           25.239        24.8          15.6          0 \r\n 2001          159           27.595        27.19         14.12         0 \r\n 2001          160           28.121        29.38         14.15         0 \r\n 2001          161           27.556        31.4          17.57         3.556 \r\n 2001          162           26.543        36.16         20.84         0 \r\n 2001          163           7.22          26.44         19.15         14.986 \r\n 2001          164           24.259        30.12         21.76         0 \r\n 2001          165           5.002         24.73         17.66         9.652 \r\n 2001          166           29.895        24.75         13.72         0 \r\n 2001          167           29.422        28.45         15.93         4.064 \r\n 2001          168           25.274        30.74         15.73         0 \r\n 2001          169           27.535        33.28         20.21         0 \r\n 2001          170           14.542        23.02         14.45         0 \r\n 2001          171           25.057        25.01         13.28         0.254 \r\n 2001          172           19.199        24.61         12.1          0 \r\n 2001          173           30.033        24            11.65         0 \r\n 2001          174           30.598        25.63         11.63         0 \r\n 2001          175           29.023        31.57         16.19         0 \r\n 2001          176           28.687        32.66         19.58         0 \r\n 2001          177           27.317        31.46         20.69         0 \r\n 2001          178           27.125        29.65         19.06         0 \r\n 2001          179           27.725        29.15         18.04         0 \r\n 2001          180           28.106        30.1          17.09         0 \r\n 2001          181           20.751        31.88         18.86         0 \r\n 2001          182           18.051        21.93         13.55         0 \r\n 2001          183           18.775        24.47         11.7          0 \r\n 2001          184           24.518        30.5          19.65         1.016 \r\n 2001          185           28.28         30.59         18.83         0 \r\n 2001          186           30.003        28            13.17         0 \r\n 2001          187           24.759        30.89         13.53         0 \r\n 2001          188           17.076        33.24         23.36         0 \r\n 2001          189           9.241         27.94         21.88         10.16 \r\n 2001          190           24.64         31.17         20.07         0 \r\n 2001          191           22.616        31.28         20.25         0 \r\n 2001          192           25.683        27.86         15.11         0 \r\n 2001          193           27.127        28.31         17.28         0 \r\n 2001          194           24.719        28.82         16.51         0 \r\n 2001          195           27.557        29.6          15.45         0 \r\n 2001          196           21.068        27.85         15.84         0 \r\n 2001          197           23.337        30.22         18.11         0 \r\n 2001          198           13.957        32.06         22.74         0 \r\n 2001          199           16.301        29.82         20.78         0.508 \r\n 2001          200           15.475        29.55         21.87         9.144 \r\n 2001          201           10.138        27.96         22.74         0 \r\n 2001          202           18.566        31.28         22.68         0 \r\n 2001          203           23.236        33.06         23.04         0 \r\n 2001          204           18.673        31.8          23.05         0 \r\n 2001          205           8.401         27.58         19.87         19.05 \r\n 2001          206           19.633        27.15         18.86         0 \r\n 2001          207           25.326        25.86         18.39         0 \r\n 2001          208           16.111        24.53         18.14         0 \r\n 2001          209           24.196        30.5          18.44         2.794 \r\n 2001          210           25.66         31.4          15.78         0 \r\n 2001          211           23.267        33.94         19.38         0 \r\n 2001          212           25.568        34.91         24.08         0 \r\n 2001          213           18.453        34.75         24.77         0 \r\n 2001          214           22.874        32.05         22.43         0 \r\n 2001          215           18.029        30.33         21.01         25.4 \r\n 2001          216           25.324        32.28         20.25         0 \r\n 2001          217           26.099        33.41         22.34         0 \r\n 2001          218           25.394        34.31         21.58         0 \r\n 2001          219           26.176        33.56         20.08         0 \r\n 2001          220           24.512        32.27         18.04         0 \r\n 2001          221           19.85         30.86         16.01         0 \r\n 2001          222           26.257        23.53         12.97         0 \r\n 2001          223           26.33         26.55         13.06         0 \r\n 2001          224           22.88         30.22         14.72         0 \r\n 2001          225           26.335        25.62         13.58         0 \r\n 2001          226           12.864        24.41         11.57         0.762 \r\n 2001          227           1.95          18.7          14.71         20.066 \r\n 2001          228           22.193        23.15         14.64         0.254 \r\n 2001          229           25.45         26.95         12.69         0 \r\n 2001          230           21.677        22.13         15.42         3.556 \r\n 2001          231           24.154        25.11         13.89         0 \r\n 2001          232           24.014        25.37         12.85         0 \r\n 2001          233           20.274        32.59         16.76         0 \r\n 2001          234           7.969         27.45         20.84         2.286 \r\n 2001          235           16.147        28.99         19.71         0 \r\n 2001          236           3.797         22.24         19.77         9.144 \r\n 2001          237           14.534        25.8          19.45         2.032 \r\n 2001          238           23.636        29.96         17.49         0 \r\n 2001          239           23.114        28.51         18.09         0 \r\n 2001          240           23.391        27.78         15.36         0 \r\n 2001          241           21.316        31.58         16.66         0 \r\n 2001          242           18.949        26.8          14.83         0 \r\n 2001          243           23.828        23.6          12.82         0 \r\n 2001          244           22.187        24.96         9.82          0 \r\n 2001          245           11.571        26.4          13.98         0 \r\n 2001          246           21.18         29.86         15.74         0 \r\n 2001          247           21.993        28.11         12.83         0 \r\n 2001          248           20.549        28.42         14.42         0 \r\n 2001          249           8.083         25.35         19.34         29.972 \r\n 2001          250           5.913         23.91         17.02         64.262 \r\n 2001          251           20.977        20.6          12.85         4.572 \r\n 2001          252           10.867        19.46         10.03         0 \r\n 2001          253           22.143        24.31         9.4           0 \r\n 2001          254           22.216        27.08         11.67         0 \r\n 2001          255           20.544        28.9          11.86         0 \r\n 2001          256           6.984         18.72         12.22         0 \r\n 2001          257           3.267         13.55         11.17         0.508 \r\n 2001          258           8.823         19.23         11.76         0 \r\n 2001          259           6.101         17.31         12.19         27.94 \r\n 2001          260           9.336         20.36         14.07         0.254 \r\n 2001          261           2.429         14.79         11.87         2.794 \r\n 2001          262           14.665        22.12         12.06         0 \r\n 2001          263           13.793        24.98         12.68         3.556 \r\n 2001          264           17.746        22.24         11.1          0 \r\n 2001          265           11.316        25.37         9.8           0 \r\n 2001          266           4.511         17.29         5.753         0 \r\n 2001          267           19.941        15.12         2.04          0 \r\n 2001          268           19.719        17.59         2.396         0 \r\n 2001          269           19.21         22.12         4.628         0 \r\n 2001          270           18.689        24.65         6.388         0 \r\n 2001          271           18.526        22.52         6.008         0 \r\n 2001          272           17.343        19.69         6.075         0 \r\n 2001          273           18.198        24.05         2.017         0 \r\n 2001          274           17.109        27.66         12.06         0 \r\n 2001          275           17.226        29.18         11.07         0 \r\n 2001          276           16.638        20.51         11.52         0 \r\n 2001          277           1.793         12.43         8.25          2.03 \r\n 2001          278           11.054        12.89        -1.134         0 \r\n 2001          279           16.73         14.31        -1.715         0 \r\n 2001          280           16.505        20.58         1.347         0 \r\n 2001          281           13.07         20.73         8.94          0 \r\n 2001          282           3.35          19.64         11.55         0.25 \r\n 2001          283           7.648         17.15         5.696         15.75 \r\n 2001          284           14.814        19.74         3.32          0 \r\n 2001          285           10.199        16.79         3.94          0 \r\n 2001          286           6.151         14.87         5.573         21.84 \r\n 2001          287           10.034        12.25         3.142         0 \r\n 2001          288           6.622         10.19         2.61          0 \r\n 2001          289           14.338        10.14        -0.095         0 \r\n 2001          290           14.66         17.32        -2.022         0 \r\n 2001          291           12.078        15.24         3.641         0 \r\n 2001          292           7.184         17.5          1.011         0 \r\n 2001          293           12.082        22.83         2.869         0 \r\n 2001          294           11.73         20.16         7.12          0 \r\n 2001          295           2.316         12.72         5.791         19.05 \r\n 2001          296           9.223         18.99         11.9          0.51 \r\n 2001          297           8.259         13.85         0.402         3.05 \r\n 2001          298           13.68         6.611        -2.55          0 \r\n 2001          299           13.221        4.954        -3.847         0 \r\n 2001          300           12.533        7.91         -6.846         0 \r\n 2001          301           12.658        20.85         0.589         0 \r\n 2001          302           10.738        15.9          3.988         0 \r\n 2001          303           2.338         13.57         5.467         2.54 \r\n 2001          304           5.098         17.77         10.24         0 \r\n 2001          305           11.692        22.69         8.13          0 \r\n 2001          306           12.483        17.94         0.898         0 \r\n 2001          307           10.041        22.7          3.311         0 \r\n 2001          308           11.927        20.32         5.554         0 \r\n 2001          309           11.496        21.13         2.71          0 \r\n 2001          310           10.912        23.81         8.8           0 \r\n 2001          311           10.704        25.09         9.26          0 \r\n 2001          312           9.782         10.84        -2.172         0 \r\n 2001          313           11.254        16.35        -4.3           0 \r\n 2001          314           11.032        16.11         2.494         0 \r\n 2001          315           10.789        14.55         0.373         0 \r\n 2001          316           8.445         17.63        -0.73          0 \r\n 2001          317           4.799         17.51         11.17         0.76 \r\n 2001          318           2.352         18.54         13.33         0 \r\n 2001          319           8.454         21.95         7.61          0 \r\n 2001          320           9.717         24.22         5.279         0 \r\n 2001          321           7.98          21.58         5.63          0 \r\n 2001          322           3.875         17.23         3.818         0 \r\n 2001          323           10.466        7.11         -3.414         2.03 \r\n 2001          324           7.928         12.61        -6.924         0 \r\n 2001          325           9.83          16.55        -0.946         0 \r\n 2001          326           8.82          16.27         2.665         0 \r\n 2001          327           1.031         12.11         6.301         9.65 \r\n 2001          328           3.786         13.65         3.461         10.41 \r\n 2001          329           1.34          4.836         2.504         1.27 \r\n 2001          330           0.631         8.85          2.016         12.19 \r\n 2001          331           2.403         3.706        -2.513         0 \r\n 2001          332           1.814        -0.665        -2.625         0 \r\n 2001          333           1.651         1.432        -1.827         0 \r\n 2001          334           1.282         2.245        -0.019         0 \r\n 2001          335           8.828         6.906        -1.293         0 \r\n 2001          336           7.03          12.1         -2.482         0 \r\n 2001          337           3.647         11.09        -1.893         0 \r\n 2001          338           1.5           15.24         8.9           0 \r\n 2001          339           2.937         18.43         0.402         2.79 \r\n 2001          340           8.604         9.72         -2.052         0 \r\n 2001          341           3.109         5.667        -2.024         0 \r\n 2001          342           8.822         2.756        -5.997         0 \r\n 2001          343           8.498         10.27        -5.681         0 \r\n 2001          344           8.403         9.81         -2.08          0 \r\n 2001          345           8.595         10.07        -4.7           0 \r\n 2001          346           1.301         6.128        -1.705         2.79 \r\n 2001          347           4.572        -0.067        -3.781         0 \r\n 2001          348           5.156         3.942        -4.767         0 \r\n 2001          349           6.172         8.59          1.524         0 \r\n 2001          350           1.173         7.75         -0.375         0 \r\n 2001          351           8.379         7.48         -5.799         0 \r\n 2001          352           6.518         8.38         -3.563         0 \r\n 2001          353           8.685         3.553        -6.614         0 \r\n 2001          354           8.397         8.39         -6.152         0 \r\n 2001          355           6.853         4.639        -7.49          0 \r\n 2001          356           0.967         6.73         -7.22          4.06 \r\n 2001          357           5.874        -4.646        -8.85          0 \r\n 2001          358           8.508        -5.839        -12.05         0 \r\n 2001          359           7.826        -7.84         -13.91         0 \r\n 2001          360           4.185        -4.882        -14.17         0 \r\n 2001          361           1.894        -2.823        -9.22          0 \r\n 2001          362           4.662        -4.56         -12.86         0 \r\n 2001          363           6.287        -9.6          -13.92         0 \r\n 2001          364           7.259        -6.521        -14.9          0 \r\n 2001          365           8.894        -6.689        -16.47         0 \r\n 2002          1             6.222        -8.45         -15.16         0 \r\n 2002          2             5.018        -6.096        -13.81         0 \r\n 2002          3             8.708        -1.122        -16.64         0 \r\n 2002          4             7.374         5.332        -6.944         0 \r\n 2002          5             4.604         6.374        -5.606         0 \r\n 2002          6             3.984        -0.505        -13.41         0 \r\n 2002          7             8.113         1.495        -16.47         0 \r\n 2002          8             8.201         17.66        -3.934         0 \r\n 2002          9             5.818         12.88         2.223         0 \r\n 2002          10            3.058         3.368        -1.32          0 \r\n 2002          11            9.179         12.16        -6.908         0 \r\n 2002          12            9.391         5.701        -4.729         0 \r\n 2002          13            4.574         10.73        -4.017         0 \r\n 2002          14            2.049         2.28         -3.518         0 \r\n 2002          15            3.109        -3.142        -5.933         0 \r\n 2002          16            4.084        -2.86         -10.91         0 \r\n 2002          17            8.808         0.763        -11.37         0 \r\n 2002          18            8.74         -4.599        -13.32         0 \r\n 2002          19            7.612         1.943        -8.86          0.25 \r\n 2002          20            9.363         7.19         -8.22          0 \r\n 2002          21            9.748         10.1         -8.9           0 \r\n 2002          22            8.731         14.56        -3.387         0 \r\n 2002          23            5.553         2.763        -8.24          0 \r\n 2002          24            10.638        8.05         -14.79         0 \r\n 2002          25            10.408        15.79        -7.04          0 \r\n 2002          26            10.788        19.48         1.092         0 \r\n 2002          27            7.571         14.28        -4.379         0 \r\n 2002          28            2.276        -1.507        -6.067         0 \r\n 2002          29            1.167        -3.152        -6.569         0 \r\n 2002          30            2.129        -3.19         -8.12          0 \r\n 2002          31            5.704        -3.18         -5.549         6.35 \r\n 2002          32            12.227       -5.505        -15.13         1.52 \r\n 2002          33            9.756         1.372        -15.14         0 \r\n 2002          34            12.05        -1.864        -14.75         0 \r\n 2002          35            12.916       -9.63         -20.83         0 \r\n 2002          36            12.24        -0.247        -14.29         0 \r\n 2002          37            9.888         0.146        -14.56         0 \r\n 2002          38            12.982        2.481        -7.7           0 \r\n 2002          39            11.502        4.266        -6.433         0 \r\n 2002          40            3.251         3.617         0.249         0.76 \r\n 2002          41            12.286        0.618        -7.32          15.75 \r\n 2002          42            11.172        4.479        -8.06          0 \r\n 2002          43            10.197        2.45         -5.014         0 \r\n 2002          44            13.796        6.555        -7.34          0 \r\n 2002          45            8.005         8.62         -0.262         0 \r\n 2002          46            12.121        7.6           0.028         0 \r\n 2002          47            13.858        8.2          -1.039         0 \r\n 2002          48            13.531        9.42         -2.997         0 \r\n 2002          49            5.631         13.81         0.319         0 \r\n 2002          50            1.178         9.98          2.871         6.86 \r\n 2002          51            2.099         2.88         -1.396         0.25 \r\n 2002          52            10.484        4.879        -4.14          0.25 \r\n 2002          53            12.72         5.89         -7.89          0 \r\n 2002          54            14.454        16.79         1.249         0 \r\n 2002          55            8.135         14.5         -2.418         0 \r\n 2002          56            14.279       -1.722        -10.96         0 \r\n 2002          57            12.073       -6.452        -13.03         0.76 \r\n 2002          58            16.906       -1.825        -14.74         0 \r\n 2002          59            15.003        2.567        -8.2           0 \r\n 2002          60            5.359        -7.34         -11.91         0 \r\n 2002          61            13.022       -8.47         -14.76         2.29 \r\n 2002          62            18.029       -14.74        -22.44         0 \r\n 2002          63            8.392         1.251        -22.66         0 \r\n 2002          64            15.031        11.25        -10.54         0 \r\n 2002          65            8.641         2.486        -5.147         0 \r\n 2002          66            2.951         4.383        -4.181         0 \r\n 2002          67            1.98          6.52         -0.247         0 \r\n 2002          68            15.033       -0.15         -10.32         5.33 \r\n 2002          69            18.502       -1.985        -14.06         0 \r\n 2002          70            10.421        7.37         -3.539         0 \r\n 2002          71            15.433        13.34        -6.086         0 \r\n 2002          72            11.381        7.79         -0.236         0 \r\n 2002          73            5.05          11.56         0.127         0 \r\n 2002          74            15.559        2.222        -3.333         0 \r\n 2002          75            18.57         7.438        -2.742         0 \r\n 2002          76            4.457         4.548        -1.412         0 \r\n 2002          77            17.546        9.699        -4.54          0 \r\n 2002          78            4.088         4.851         0.834         1.52 \r\n 2002          79            20.571        11.03        -4.818         0 \r\n 2002          80            18.321       -4.799        -11.52         0 \r\n 2002          81            21.658        3.326        -11.92         0 \r\n 2002          82            17.344        8.7          -5.367         0 \r\n 2002          83            5.217         2.712        -2.136         0 \r\n 2002          84            21.457        3.111        -6.898         0 \r\n 2002          85            21.938        6.698        -9.42          0 \r\n 2002          86            20.64         11.38        -3.341         0 \r\n 2002          87            20.472        15.4          3.927         0 \r\n 2002          88            19.045        15.13        -0.079         0 \r\n 2002          89            11.797        9.24         -0.561         0 \r\n 2002          90            21.582        9.38         -1.695         1.02 \r\n 2002          91            12.154        9.84         -3.643         0 \r\n 2002          92            9.778         3.81         -4.474         0 \r\n 2002          93            15.327        1.053        -7.55          0 \r\n 2002          94            23.249        7.1          -8.07          0 \r\n 2002          95            23.498        12.13        -7.52          0 \r\n 2002          96            19.682        14.05        -4.424         0 \r\n 2002          97            3.534         11.21         6.659         3.302 \r\n 2002          98            3.188         10.54         3.8           1.524 \r\n 2002          99            24.422        15.25        -1.61          0 \r\n 2002          100           20.707        24.64         4.525         0 \r\n 2002          101           4.24          17.76         6.726         15.24 \r\n 2002          102           13.478        14.84         4.667         0 \r\n 2002          103           17.074        16.82         0.772         0 \r\n 2002          104           21.445        25.6          7.35          0 \r\n 2002          105           24.388        31.71         12.66         0 \r\n 2002          106           17.807        28.99         17.44         4.318 \r\n 2002          107           25.633        24.41         10.68         0 \r\n 2002          108           16.631        30.76         11.27         0.508 \r\n 2002          109           14.009        12.99         5.62          0 \r\n 2002          110           7.455         11.9          5.252         14.224 \r\n 2002          111           5.215         5.411         1.364         4.572 \r\n 2002          112           19.273        11.62         0.971         0 \r\n 2002          113           23.777        22.63         5.195         0 \r\n 2002          114           18.634        15.72         1.604         3.048 \r\n 2002          115           24.758        12.42         1.026         0 \r\n 2002          116           18.133        13.15         0.857         0 \r\n 2002          117           1.722         12.43         4.7           38.354 \r\n 2002          118           6.446         7.13          2.382         0.254 \r\n 2002          119           26.56         19.49         1.688         0 \r\n 2002          120           7.269         14.02         7.79          0.762 \r\n 2002          121           12.639        14.38         3.64          11.43 \r\n 2002          122           26.951        14.45         1.09          0.254 \r\n 2002          123           27.275        19.42         2.973         0 \r\n 2002          124           20.642        20.19         4.524         0 \r\n 2002          125           24.646        27.4          6.755         1.778 \r\n 2002          126           22.419        27.45         11.34         0 \r\n 2002          127           19.47         22.93         8.68          0 \r\n 2002          128           20.221        27.99         8.97          0 \r\n 2002          129           25.743        14.24         2.991         0 \r\n 2002          130           22.104        19.34         1.702         0 \r\n 2002          131           2.267         14.46         8.12          66.04 \r\n 2002          132           6.902         9.66          5.327         0 \r\n 2002          133           27.121        20.07         4.251         0 \r\n 2002          134           28.895        20.9          5.413         0 \r\n 2002          135           15.343        22.73         11.63         3.048 \r\n 2002          136           9.157         18.39         9.81          4.826 \r\n 2002          137           24.013        15.23         5.904         0 \r\n 2002          138           28.612        15.76         3.574         0 \r\n 2002          139           29.483        17.1          3.527         0 \r\n 2002          140           29.534        15.68         2.804         0 \r\n 2002          141           29.673        17.59         2.241         0 \r\n 2002          142           20.189        23.85         8.44          0 \r\n 2002          143           17.313        21.38         8.44          5.842 \r\n 2002          144           22.836        18.15         5.1           2.286 \r\n 2002          145           18.565        19.17         8.27          16.764 \r\n 2002          146           27.748        25.22         10.79         0 \r\n 2002          147           24.309        26.43         13.36         0 \r\n 2002          148           24.363        28.02         15.66         0 \r\n 2002          149           13.884        27.23         18.13         0 \r\n 2002          150           25.814        32.75         16.98         0 \r\n 2002          151           25.269        30.53         16.27         0 \r\n 2002          152           27.769        33.28         18.23         0 \r\n 2002          153           8.077         25.27         15.39         13.716 \r\n 2002          154           14.648        27.46         14.75         0 \r\n 2002          155           9.385         17.89         12.5          0 \r\n 2002          156           24.149        23.03         11.08         0 \r\n 2002          157           29.152        25.69         10.54         0 \r\n 2002          158           28.208        28.66         14.72         0 \r\n 2002          159           24.208        29.92         17.78         0 \r\n 2002          160           25.53         30.64         17.83         0 \r\n 2002          161           9.841         26.99         20.93         0 \r\n 2002          162           19.412        27.42         18.59         21.082 \r\n 2002          163           20.084        27.88         18.77         35.814 \r\n 2002          164           28.54         22.67         12.5          0.254 \r\n 2002          165           23.88         23.66         11.96         0 \r\n 2002          166           26.116        24.86         13.24         0 \r\n 2002          167           30.121        26.02         11.18         0 \r\n 2002          168           16.466        25.62         14.59         0 \r\n 2002          169           23.979        28.35         17.83         0 \r\n 2002          170           22.531        29.06         21.19         0 \r\n 2002          171           22.812        30.71         17.91         0.254 \r\n 2002          172           23.259        30.62         22.07         0 \r\n 2002          173           26.148        31.47         20.76         0 \r\n 2002          174           28.389        30.94         19.22         0 \r\n 2002          175           27.891        30.61         17.08         0 \r\n 2002          176           27.891        32.12         18.4          0 \r\n 2002          177           25.4          32.98         19.74         0 \r\n 2002          178           26.651        29.73         17.61         0 \r\n 2002          179           27.088        30.05         16.35         0 \r\n 2002          180           27.196        33.77         18.61         0 \r\n 2002          181           28.152        33            22.84         0 \r\n 2002          182           28.14         31.99         21.94         0 \r\n 2002          183           27.006        31.44         18.36         0 \r\n 2002          184           23.826        31.66         18.67         0 \r\n 2002          185           21.017        32.34         20.82         13.97 \r\n 2002          186           23.424        30.88         20.37         0 \r\n 2002          187           15.422        32.07         19.5          27.432 \r\n 2002          188           21.303        29.7          19.05         0.254 \r\n 2002          189           26.204        33.34         22.16         0 \r\n 2002          190           25.472        30.76         21.02         0 \r\n 2002          191           16.821        27.31         18.74         78.486 \r\n 2002          192           5.821         19.86         15.87         1.778 \r\n 2002          193           23.496        25.51         15.98         0 \r\n 2002          194           29.371        26.18         14.58         0 \r\n 2002          195           29.269        27.51         14.18         0 \r\n 2002          196           28.02         28.63         14.43         0 \r\n 2002          197           27.468        30.11         16.21         0 \r\n 2002          198           25.566        32.04         17.95         0 \r\n 2002          199           17.181        31.57         19.84         0 \r\n 2002          200           16.329        30.31         20.66         0 \r\n 2002          201           25.964        35.15         22.62         0 \r\n 2002          202           26.574        34.24         22.25         0 \r\n 2002          203           17.687        28.51         16.29         0 \r\n 2002          204           25.988        26.06         13.73         0 \r\n 2002          205           21.973        26.48         15.07         0 \r\n 2002          206           23.369        29.58         18.74         0.508 \r\n 2002          207           17.31         30.65         19.16         9.906 \r\n 2002          208           19.912        32.42         19.72         1.27 \r\n 2002          209           16.929        31.68         21.53         0 \r\n 2002          210           26.838        30.33         19.58         0 \r\n 2002          211           26.668        33.41         18.51         0 \r\n 2002          212           26.128        32.81         20.69         0 \r\n 2002          213           22.999        30.41         15.24         0 \r\n 2002          214           26.941        25.58         11.48         0 \r\n 2002          215           23.517        31.98         14.12         0 \r\n 2002          216           15.862        28.66         20.59         65.786 \r\n 2002          217           13.269        28.28         20.92         37.592 \r\n 2002          218           11.169        24.32         17.22         5.334 \r\n 2002          219           25.819        25.42         15.71         0 \r\n 2002          220           24.09         25.93         14.42         0 \r\n 2002          221           24.176        26.88         15.04         0 \r\n 2002          222           22.162        28.63         16.78         0 \r\n 2002          223           24.044        32.34         18.56         0 \r\n 2002          224           15.772        27.29         15.78         5.334 \r\n 2002          225           8.513         21.46         13.41         1.016 \r\n 2002          226           25.814        27.52         11.93         0.508 \r\n 2002          227           20.895        27.26         14.43         0.254 \r\n 2002          228           15.726        24.66         11.84         0.254 \r\n 2002          229           21.397        23.1          11.82         0.254 \r\n 2002          230           16.709        21.61         8.48          0.254 \r\n 2002          231           24.882        24.29         12.96         0.508 \r\n 2002          232           19.051        25.76         12.14         0.508 \r\n 2002          233           11.199        28.59         20.51         0.254 \r\n 2002          234           13.953        27.77         19.94         0.254 \r\n 2002          235           16.998        26.31         18.76         0 \r\n 2002          236           17.89         26.71         17.58         0 \r\n 2002          237           21.442        28.39         17.53         0 \r\n 2002          238           22.01         29.77         17.75         0 \r\n 2002          239           20.157        27.89         16.74         0 \r\n 2002          240           22.19         27.85         16.83         0 \r\n 2002          241           20.221        27.62         16.31         0 \r\n 2002          242           20.377        26.81         15.48         0 \r\n 2002          243           21.231        28.56         16.16         0 \r\n 2002          244           19.44         30.79         17.22         0 \r\n 2002          245           20.92         31.98         15.68         0 \r\n 2002          246           23.148        28.9          10.78         0 \r\n 2002          247           21.681        28.83         13.11         0 \r\n 2002          248           20.637        30.8          14.53         0 \r\n 2002          249           20.115        33.21         16.56         0 \r\n 2002          250           20.946        33.1          18.04         0 \r\n 2002          251           20.055        33.24         16.07         1.016 \r\n 2002          252           19.453        32.32         17.89         0 \r\n 2002          253           9.245         22.93         12.3          0 \r\n 2002          254           20.271        24.72         10.52         0 \r\n 2002          255           19.052        25.36         9.52          0 \r\n 2002          256           10.929        24.18         13.29         0 \r\n 2002          257           4.827         21.24         11.77         1.524 \r\n 2002          258           21.378        22.71         8.45          0 \r\n 2002          259           20.825        28            6.653         0 \r\n 2002          260           13.828        26.04         11.37         0 \r\n 2002          261           6.959         27.08         17.82         24.638 \r\n 2002          262           6.409         19.26         14.74         2.286 \r\n 2002          263           16.337        23.85         11.51         0 \r\n 2002          264           9.112         18.31         9.9           0 \r\n 2002          265           19.771        17.49         5.582         0 \r\n 2002          266           19.014        17.5          3.123         0 \r\n 2002          267           18.827        19.34         2.741         0 \r\n 2002          268           8.357         23.93         11.52         0 \r\n 2002          269           13.846        18.43         9.51          0 \r\n 2002          270           7.793         17.42         8.76          1.778 \r\n 2002          271           8.492         21.07         6.071         0.762 \r\n 2002          272           13.74         31.37         13.23         0 \r\n 2002          273           16.565        31.58         18.44         0 \r\n 2002          274           6.8           23.2          16.35         18.29 \r\n 2002          275           1.461         17.27         8.54          18.29 \r\n 2002          276           2.066         17.1          9.35          0.76 \r\n 2002          277           6.071         19.86         3.564         10.41 \r\n 2002          278           11.612        18.99         2.479         0 \r\n 2002          279           12.159        14.25         1.895         0 \r\n 2002          280           16.394        16.6         -1.631         0 \r\n 2002          281           13.027        20.75         6.724         0 \r\n 2002          282           15.18         19.53         5.042         0.76 \r\n 2002          283           14.325        23.79         10.59         1.27 \r\n 2002          284           15.181        24.17         7.46          0 \r\n 2002          285           6.853         16.92         1.468         0.51 \r\n 2002          286           15.781        14.76        -2.352         0 \r\n 2002          287           15.493        16.88         2.422         0 \r\n 2002          288           14.351        11.57        -1.601         0 \r\n 2002          289           9.007         8.24         -2.184         0 \r\n 2002          290           6.716         9.19          2.101         2.79 \r\n 2002          291           7.67          17.16         3.067         0 \r\n 2002          292           11.619        6.992        -2.814         0 \r\n 2002          293           11.599        11.96        -5.55          0 \r\n 2002          294           3.734         8.72          1.091         1.78 \r\n 2002          295           7.195         5.474        -1.808         0 \r\n 2002          296           4.011         2.082        -1.705         0.76 \r\n 2002          297           2.552         3.855        -0.197         7.11 \r\n 2002          298           2.54          7.02          3.601         8.89 \r\n 2002          299           11.99         9.92          0.177         0 \r\n 2002          300           1.509         3.105        -1.124         1.02 \r\n 2002          301           2.322         5.001        -0.018         5.08 \r\n 2002          302           2.485         7             3.817         1.52 \r\n 2002          303           4.53          5.918        -0.338         0 \r\n 2002          304           7.948         0.838        -5.674         0 \r\n 2002          305           12.735        3.522        -7.46          0 \r\n 2002          306           11.044        7.15         -7.18          0 \r\n 2002          307           4.874         7.07         -2.588         0 \r\n 2002          308           3.183        -0.665        -3.275         0 \r\n 2002          309           4.141         3.142        -1.695         3.3 \r\n 2002          310           9.449         11.28        -0.861         0 \r\n 2002          311           11.567        19.86        -2.042         0 \r\n 2002          312           7.447         16.32         2.729         0 \r\n 2002          313           5.646         17.62         2.926         0 \r\n 2002          314           5.666         9.57         -2.202         0 \r\n 2002          315           2.808        -0.337        -6.692         1.02 \r\n 2002          316           10.672        14.58        -7.11          0 \r\n 2002          317           5.403         15.2         -2.418         0 \r\n 2002          318           1.748         5.759        -3.736         1.27 \r\n 2002          319           4.846         0.914        -5.033         0 \r\n 2002          320           6.83          1.547        -5.212         0 \r\n 2002          321           8.204         4.247        -7.61          0 \r\n 2002          322           4.485         9.47         -1.761         0 \r\n 2002          323           6.434         12.54        -2.578         0 \r\n 2002          324           8.978         14.12        -0.637         0 \r\n 2002          325           5.928         6.459        -1.208         0 \r\n 2002          326           9.393         5.095        -6.087         0 \r\n 2002          327           9.223         8.21         -3.266         0 \r\n 2002          328           2.854         2.467        -6.492         0 \r\n 2002          329           8.85         -0.305        -10.66         0 \r\n 2002          330           6.703        -0.477        -10.06         0 \r\n 2002          331           4.685        -2.7          -11.2          0 \r\n 2002          332           8.731         7.11         -10.38         0 \r\n 2002          333           5.468         9.45         -3.832         0 \r\n 2002          334           8.863        -3.124        -13.22         0 \r\n 2002          335           8.587         10.37        -12.56         0 \r\n 2002          336           6.41          0.926        -12.06         0 \r\n 2002          337           6.573        -4.106        -14.01         0 \r\n 2002          338           3.549        -3.058        -10.51         0 \r\n 2002          339           8.376        -4.78         -12.66         0 \r\n 2002          340           8.477         8.71         -14.24         0 \r\n 2002          341           8.463         6.165        -6.511         0 \r\n 2002          342           8.564        -1.041        -9.65          0 \r\n 2002          343           8.172         5.748        -14.06         0 \r\n 2002          344           6.476         7.14         -7.16          0 \r\n 2002          345           1.534         4.013        -0.084         0 \r\n 2002          346           4.03          6.317        -2.437         0 \r\n 2002          347           8.009         8.88         -6.928         0 \r\n 2002          348           7.823         11.96        -7.91          0 \r\n 2002          349           5.72          12.67        -4.571         0 \r\n 2002          350           1.984         1.511        -1.826         0 \r\n 2002          351           0.923         5.242        -1.039         0 \r\n 2002          352           2.947         8.82          0.632         0 \r\n 2002          353           2.23          3.509        -5.132         0 \r\n 2002          354           2.674         0.906        -2.23          0 \r\n 2002          355           7.771         1.189        -6.183         0 \r\n 2002          356           7.897        -0.107        -7.04          0 \r\n 2002          357           7.192        -1.06         -8.46          0 \r\n 2002          358           4.045        -6.405        -10.55         0 \r\n 2002          359           4.641        -2.803        -11.43         0 \r\n 2002          360           7.481         5.748        -12.25         0 \r\n 2002          361           5.583         5.454        -6.482         0 \r\n 2002          362           6.546         13.89        -5.789         0 \r\n 2002          363           5.772         8.24         -3.964         0 \r\n 2002          364           6.83          7.66         -5.656         0 \r\n 2002          365           8.248         3.898        -9.89          0 \r\n 2003          1             3.17         -1.236        -5.416         0 \r\n 2003          2             5.874        -0.225        -9.67          0 \r\n 2003          3             8.208         3.673        -13.07         0 \r\n 2003          4             3.368         7.62         -6.038         1.02 \r\n 2003          5             1.792         1.521        -2.775         0 \r\n 2003          6             6.675         0.126        -7.54          0 \r\n 2003          7             7.842         15.58        -6.308         0 \r\n 2003          8             8.235         16.73        -0.767         0 \r\n 2003          9             8.066         5.176        -6.946         0 \r\n 2003          10            8.55         -5.043        -13.81         0 \r\n 2003          11            7.551        -6.486        -17.41         0 \r\n 2003          12            8.874         6.402        -16.85         0 \r\n 2003          13            4.893        -6.514        -13.44         0 \r\n 2003          14            9.341        -4.552        -15.19         0 \r\n 2003          15            4.411        -6.7          -17.45         0 \r\n 2003          16            7.909        -2.897        -13.68         1.02 \r\n 2003          17            9.739        -10.29        -18.51         0 \r\n 2003          18            9.389        -7.56         -17.18         0 \r\n 2003          19            3.459         1.254        -18.28         0 \r\n 2003          20            2.411        -7.3          -10.85         0 \r\n 2003          21            7.109        -9.26         -17.46         0 \r\n 2003          22            6.639        -11.23        -20.28         0 \r\n 2003          23            10.483       -13.7         -23.21         0 \r\n 2003          24            3.583        -7.27         -18.58         0 \r\n 2003          25            5.366        -3.632        -14.8          0.51 \r\n 2003          26            10.763       -12.57        -21.41         0 \r\n 2003          27            8.907        -1.901        -14.43         1.27 \r\n 2003          28            1.866        -0.083        -5.534         3.05 \r\n 2003          29            7.215        -4.153        -13.62         0 \r\n 2003          30            6.301         3.147        -7.78          0 \r\n 2003          31            2.437         2.378        -0.027         0.51 \r\n 2003          32            8.16          8.85         -2.85          0 \r\n 2003          33            4.994         5.644        -1.216         0 \r\n 2003          34            1.313         1.821        -10.27         1.78 \r\n 2003          35            11.664       -7.68         -14.85         0 \r\n 2003          36            6.895        -2.512        -14.67         0 \r\n 2003          37            11.879       -4.776        -19.68         0 \r\n 2003          38            12.838       -7.47         -24.54         0 \r\n 2003          39            7.684        -3.284        -16.58         0 \r\n 2003          40            7.469        -3.453        -18.94         0 \r\n 2003          41            12.271       -3.396        -15.55         0 \r\n 2003          42            9.122         3.73         -16.04         0 \r\n 2003          43            13.456        0.89         -17.86         0 \r\n 2003          44            13.207        9.36         -10.87         0 \r\n 2003          45            1.153         0.823        -3.869         4.06 \r\n 2003          46            7.254        -3.652        -14.18         6.1 \r\n 2003          47            11.634       -6.398        -18.05         0 \r\n 2003          48            10.993       -1.704        -20.1          0 \r\n 2003          49            13.438        5.229        -7.78          0 \r\n 2003          50            14.517        3.204        -11.82         0 \r\n 2003          51            14.713        8.62         -1.967         0 \r\n 2003          52            11.76         8.58         -2.445         0 \r\n 2003          53            5.109        -2.436        -7.61          0 \r\n 2003          54            7.174        -7.59         -14.67         0 \r\n 2003          55            15.253       -13.52        -20.41         0.76 \r\n 2003          56            9.295        -10.82        -21.72         0 \r\n 2003          57            15.907       -3.604        -18.32         0 \r\n 2003          58            15.682        1.863        -12.38         0 \r\n 2003          59            14.27         3.401        -6.237         0 \r\n 2003          60            3.16          0.437        -6.533         0.25 \r\n 2003          61            17.063       -6.533        -17.71         0 \r\n 2003          62            9.697         2.359        -11.23         0.51 \r\n 2003          63            4.411        -4.362        -13.97         1.27 \r\n 2003          64            15.436       -10.03        -17.58         1.27 \r\n 2003          65            15.676       -1.526        -17.94         0.25 \r\n 2003          66            17.552       -0.814        -9.43          0 \r\n 2003          67            9.295        -5.77         -16.95         0 \r\n 2003          68            17.828       -9.4          -17.59         0 \r\n 2003          69            12.004       -4.305        -14.444        0 \r\n 2003          70            16.25         11.2         -11.48         0 \r\n 2003          71            7.93          6.024        -2.888         0 \r\n 2003          72            10.664        5.711        -1.329         0 \r\n 2003          73            16.263        13.17        -0.551         0 \r\n 2003          74            18.425        23.23         0.848         0 \r\n 2003          75            17.298        23.52         5.001         0 \r\n 2003          76            15.81         22.6          5.445         0 \r\n 2003          77            8.096         16.79         6.687         0 \r\n 2003          78            1.381         7             2.504         9.65 \r\n 2003          79            3.88          5.814         0.101         4.57 \r\n 2003          80            8.297         7.63         -1.189         0 \r\n 2003          81            20.899        14.52        -1.611         0 \r\n 2003          82            18.684        22.12         0.495         0 \r\n 2003          83            12.734        17.89         5.125         0 \r\n 2003          84            21.129        15.49         1.53          0 \r\n 2003          85            10.21         13.3          1.895         0 \r\n 2003          86            2.316         11.7          2.636         5.59 \r\n 2003          87            5.079         3.829        -0.552         5.84 \r\n 2003          88            16.093        5.833        -2.455         0 \r\n 2003          89            19.384        9.45         -5.396         0 \r\n 2003          90            13.701        22.73        -1.695         0 \r\n 2003          91            21.777        30.41         7.81          0 \r\n 2003          92            20.981        27.64         9.55          0 \r\n 2003          93            9.531         25            2.298         0 \r\n 2003          94            4.786         2.316        -3.511         1.778 \r\n 2003          95            15.019       -1.582        -4.41          2.286 \r\n 2003          96            8.56          4.436        -3.624         12.243 \r\n 2003          97            13.561       -0.968        -2.813         0 \r\n 2003          98            23.63         1.778        -5.14          0 \r\n 2003          99            24.463        10.26        -6.171         0 \r\n 2003          100           25.644        18.85         0             0 \r\n 2003          101           23.836        22.7          0             0 \r\n 2003          102           24.719        21.58         3.825         0 \r\n 2003          103           22.918        25.4          4.292         0 \r\n 2003          104           22.208        30.99         11.91         0 \r\n 2003          105           19.078        28.36         15.05         0 \r\n 2003          106           10.209        19.2          4.765         0.254 \r\n 2003          107           8.897         8.78          3.129         0 \r\n 2003          108           4.135         9.83          4.377         0.508 \r\n 2003          109           3.522         11.58         7.24          5.258 \r\n 2003          110           5.649         9.62          6.201         0 \r\n 2003          111           19.826        16.77         6.265         0 \r\n 2003          112           26.172        19.57         1.652         0 \r\n 2003          113           21.285        19.01         5.59          13.31 \r\n 2003          114           2.549         12.29         7.49          0 \r\n 2003          115           25.288        20.84         6.536         0 \r\n 2003          116           25.651        23.09         4.634         0 \r\n 2003          117           18.501        24.73         6.917         0 \r\n 2003          118           22.264        21.64         9.32          0 \r\n 2003          119           9.603         14.52         6.84          41.453 \r\n 2003          120           4.573         12.87         8.98          3.683 \r\n 2003          121           18.779        18.41         8.06          0 \r\n 2003          122           18.763        19.06         10.556        3.531 \r\n 2003          123           24.676        19.18         9.45          32.842 \r\n 2003          124           1.157         12.83         8.47          12.751 \r\n 2003          125           11.501        14.81         7.89          0 \r\n 2003          126           19.518        19.61         6.897         9.855 \r\n 2003          127           21.528        20.17         8.43          4.928 \r\n 2003          128           5.058         13.31         7.64          24.917 \r\n 2003          129           23.908        20.78         10.58         0 \r\n 2003          130           5.444         16.22         6.488         0 \r\n 2003          131           8.233         13.08         6.028         0 \r\n 2003          132           27.918        19.43         6.496         2.718 \r\n 2003          133           19.128        21.2          10.13         18.567 \r\n 2003          134           21.69         22.81         11.12         2.972 \r\n 2003          135           10.738        17.99         10.19         0 \r\n 2003          136           23.383        20.51         7.07          0 \r\n 2003          137           27.31         22.79         9.11          0 \r\n 2003          138           20.679        23.82         12.35         0 \r\n 2003          139           5.648         20.66         9.6           0 \r\n 2003          140           29.367        16.07         5.544         0 \r\n 2003          141           24.012        18.65         4.043         0 \r\n 2003          142           19.045        20.94         6.077         0 \r\n 2003          143           24.594        19.83         10.73         0 \r\n 2003          144           8.765         18.02         10.48         0 \r\n 2003          145           26.761        23.91         8.33          0 \r\n 2003          146           25.506        25.73         9.5           0 \r\n 2003          147           26.636        27.37         9.84          0 \r\n 2003          148           26.484        26.5          15.66         0 \r\n 2003          149           22.402        26.21         12.68         0 \r\n 2003          150           26.814        30.67         13.79         0 \r\n 2003          151           27.011        22.3          11.19         0 \r\n 2003          152           13.795        22.23         13.02         7.772 \r\n 2003          153           3.366         14.49         9.92          6.96 \r\n 2003          154           12.009        17.66         9.67          0 \r\n 2003          155           26.269        22.45         10.57         0 \r\n 2003          156           21.793        23.13         9.98          18.872 \r\n 2003          157           17.749        20.25         11.68         0 \r\n 2003          158           15.387        20.62         10.35         10.262 \r\n 2003          159           15.425        20.78         11.12         0 \r\n 2003          160           27.911        24.95         11.53         0 \r\n 2003          161           19.17         24.86         14.8          0 \r\n 2003          162           22.376        24.72         12.49         0 \r\n 2003          163           14.614        23.34         15.4          0 \r\n 2003          164           28.262        28.52         15.18         0 \r\n 2003          165           25.518        29.78         16.93         0 \r\n 2003          166           24.755        29.29         16.53         0 \r\n 2003          167           25.596        30.09         18.1          0 \r\n 2003          168           19.881        29.89         16.44         0 \r\n 2003          169           17.465        29.49         19.33         0 \r\n 2003          170           29.492        25.94         14.62         0 \r\n 2003          171           30.419        25.43         10.84         0 \r\n 2003          172           25.873        27.45         12.81         0 \r\n 2003          173           19.423        29.87         16.2          0 \r\n 2003          174           23.69         31.32         21.4          0 \r\n 2003          175           23.5          33.53         18.74         53.188 \r\n 2003          176           2.267         25.93         14.79         6.96 \r\n 2003          177           26.872        22.22         11.17         0 \r\n 2003          178           27.333        28.53         11.98         30.023 \r\n 2003          179           27.817        26.65         15.25         0 \r\n 2003          180           25.768        26.59         15.78         0 \r\n 2003          181           29.691        28.22         14.67         0 \r\n 2003          182           25.593        28.63         16.87         0 \r\n 2003          183           27.252        30.71         17.52         0 \r\n 2003          184           27.108        34.21         21.83         0 \r\n 2003          185           17.378        29.36         17.82         44.526 \r\n 2003          186           25.171        28.63         17.36         8.407 \r\n 2003          187           24.09         30.14         18.22         0 \r\n 2003          188           24.776        30.09         20.69         14.249 \r\n 2003          189           11.897        22.92         16.27         61.849 \r\n 2003          190           16.567        27.07         18.889        0 \r\n 2003          191           23.398        24            16.28         0 \r\n 2003          192           27.377        26.46         14.36         0 \r\n 2003          193           25.98         25.82         15.12         0 \r\n 2003          194           27.198        27.24         15.4          0 \r\n 2003          195           23.005        30.22         17.222        1.524 \r\n 2003          196           28.509        28.02         17.14         0 \r\n 2003          197           20.789        28.84         15.57         0.254 \r\n 2003          198           24.93         31.85         18.28         0 \r\n 2003          199           17.841        25.79         17.43         0 \r\n 2003          200           21.36         25.97         14.58         0 \r\n 2003          201           14.075        28.45         18.56         0 \r\n 2003          202           23.493        24.92         16.63         0 \r\n 2003          203           23.725        23.17         13.57         0 \r\n 2003          204           25.506        25            11.71         0 \r\n 2003          205           23.692        26.61         11.75         0 \r\n 2003          206           25.026        30.96         15.69         0 \r\n 2003          207           24.592        33.1          22.79         0 \r\n 2003          208           10.755        26.66         20.12         26.924 \r\n 2003          209           24.252        27.52         18.25         0 \r\n 2003          210           25.729        28.32         15.92         0 \r\n 2003          211           20.834        28.01         18.23         1.27 \r\n 2003          212           22.935        28.26         16.8          0 \r\n 2003          213           22.714        28.01         17.21         0 \r\n 2003          214           24.167        26.8          15.24         0 \r\n 2003          215           23.208        26.76         15.51         0 \r\n 2003          216           22.945        26.99         14.47         0 \r\n 2003          217           10.552        22.13         16.93         4.826 \r\n 2003          218           20.75         26.92         17.54         0 \r\n 2003          219           23.883        28.18         16.86         0 \r\n 2003          220           25            27.28         15.87         0 \r\n 2003          221           22.507        27.33         14.39         0 \r\n 2003          222           15.966        27.52         15.53         4.572 \r\n 2003          223           22.942        27.95         16.07         0 \r\n 2003          224           20            25.32         14.74         0 \r\n 2003          225           21.385        27            14.87         0 \r\n 2003          226           18.635        27.88         16.28         0 \r\n 2003          227           22.649        31.07         17.65         0 \r\n 2003          228           22.723        33.61         18.36         0 \r\n 2003          229           22.623        33.73         19.9          0 \r\n 2003          230           20.292        33.47         21.97         0 \r\n 2003          231           19.129        30.95         21.04         0 \r\n 2003          232           19.382        33.51         20.75         0.254 \r\n 2003          233           21.683        28.68         17.37         0 \r\n 2003          234           21.75         26.58         14.25         0 \r\n 2003          235           20.634        28.49         15.7          0 \r\n 2003          236           21.653        35.89         16.82         0 \r\n 2003          237           20.868        36.09         19.22         0 \r\n 2003          238           20.569        32.76         19.96         12.192 \r\n 2003          239           22.946        32.21         16.65         0 \r\n 2003          240           16.216        30.25         20.45         0 \r\n 2003          241           21.072        28.65         16.42         0 \r\n 2003          242           14.581        22.95         13.45         0 \r\n 2003          243           7.876         19.41         13.43         0 \r\n 2003          244           21.841        24.48         11.03         0 \r\n 2003          245           21.612        27.17         11.2          0 \r\n 2003          246           21.832        24.4          12.9          0 \r\n 2003          247           21.867        24.6          10.02         0 \r\n 2003          248           21.583        28.89         9.28          0 \r\n 2003          249           20.686        30.64         12.74         0 \r\n 2003          250           20.727        30.32         12.9          0 \r\n 2003          251           21.228        28.82         13.36         0 \r\n 2003          252           15.851        28.47         12.17         0 \r\n 2003          253           16.528        29.97         16.48         0 \r\n 2003          254           7.325         27.92         16.43         37.592 \r\n 2003          255           18.827        23.95         13.53         0.254 \r\n 2003          256           5.376         18.63         13.46         0.254 \r\n 2003          257           18.692        20.85         10.46         0.254 \r\n 2003          258           20.519        25.34         6.964         0 \r\n 2003          259           19.26         27.67         10.65         0 \r\n 2003          260           18.108        28.27         16.44         0 \r\n 2003          261           4.854         22.77         8.71          10.668 \r\n 2003          262           20.161        18.06         3.968         0 \r\n 2003          263           18.04         21.32         4.393         0 \r\n 2003          264           3.123         14.16         9.63          36.576 \r\n 2003          265           12.35         17.81         5.268         0.254 \r\n 2003          266           15.238        24.19         3.685         0 \r\n 2003          267           18.665        19.22         4.854         0 \r\n 2003          268           17.768        16.72         2.572         0 \r\n 2003          269           6.035         18.97         6.545         1.524 \r\n 2003          270           10.148        14.44         5.724         0 \r\n 2003          271           16.806        14.25         3.307         0 \r\n 2003          272           15.784        17.49         0.092         0 \r\n 2003          273           12.3          16.4         -0.97          0 \r\n 2003          274           17.821        12.19        -0.322         0 \r\n 2003          275           16.967        15.18        -1.257         0 \r\n 2003          276           13.946        20.33         6.823         0 \r\n 2003          277           15.805        24.6          3.233         0 \r\n 2003          278           16.131        25.18         6.82          0 \r\n 2003          279           16.012        28.43         7.45          0 \r\n 2003          280           15.926        27.11         9.14          0 \r\n 2003          281           14.388        26.55         10.57         0 \r\n 2003          282           13.442        26.23         12.83         0 \r\n 2003          283           12.83         23.12         11.48         0 \r\n 2003          284           4.68          20.26         6.096         8.13 \r\n 2003          285           15.635        20.43         4.811         0 \r\n 2003          286           7.075         17.78         4.745         0 \r\n 2003          287           15.023        17.3          6.606         8.13 \r\n 2003          288           9.334         14.37         1.498         0 \r\n 2003          289           4.812         9.04          0.505         0 \r\n 2003          290           12.957        16.23        -0.34          0 \r\n 2003          291           14.11         27.67         6.619         0 \r\n 2003          292           13.88         29.28         8.12          0 \r\n 2003          293           13.205        30.29         11.83         0 \r\n 2003          294           10.007        22.61         7.54          0 \r\n 2003          295           13.088        23.75         3.637         0 \r\n 2003          296           13.017        17.25         5.106         0 \r\n 2003          297           4.031         15.12         4.526         1.27 \r\n 2003          298           10.596        11.54         1.423         0 \r\n 2003          299           7.454         5.246        -3.243         0 \r\n 2003          300           8.862         10.39        -2.949         0 \r\n 2003          301           5.769         8.99          2.169         6.35 \r\n 2003          302           6.464         8.67         -1.449         0 \r\n 2003          303           8.883         16.49         2.138         0 \r\n 2003          304           6.706         8.12          0.146         0 \r\n 2003          305           2.634         2.902        -1.591         0 \r\n 2003          306           1.993         5.124         1.904         7.37 \r\n 2003          307           1.045         5.314         1.227         35.81 \r\n 2003          308           3.369         5.951        -0.37          48.01 \r\n 2003          309           3.977        -0.266        -3.167         0 \r\n 2003          310           11.498        3.065        -7.99          0 \r\n 2003          311           9.663         0.87         -9.57          0 \r\n 2003          312           8.785        -0.341        -11.32         0 \r\n 2003          313           9.863         7.28         -9.02          0 \r\n 2003          314           2.105         8.45         -1.92          0.51 \r\n 2003          315           8.232         13.4          1.435         0 \r\n 2003          316           6.396         8.05         -1.225         0 \r\n 2003          317           10.812        5.259        -5.05          0 \r\n 2003          318           4.084         9.47         -0.801         0 \r\n 2003          319           1.417         8.31          0.652         0 \r\n 2003          320           8.26          11.8          2.451         0 \r\n 2003          321           1.523         11.88         2.44          8.38 \r\n 2003          322           9.79          12.39         1.208         5.59 \r\n 2003          323           9.719         16            0.298         0 \r\n 2003          324           9.279         19.56         1.623         0 \r\n 2003          325           6.518         5.247        -2.043         0 \r\n 2003          326           0.623         2.289        -0.144         0 \r\n 2003          327           1.709         1.527        -8.64          3.81 \r\n 2003          328           9.476        -2.627        -11.47         0 \r\n 2003          329           8.713         6.819        -4.202         0 \r\n 2003          330           3.03          3.392        -6.426         0 \r\n 2003          331           9.091         4.413        -4.174         0 \r\n 2003          332           4.593        -1.394        -11.76         0 \r\n 2003          333           7.84          8.79         -12.04         0 \r\n 2003          334           8.341         16.65        -3.706         0 \r\n 2003          335           8.836         7.8          -3.908         0 \r\n 2003          336           2.636         2.759        -1.742         0 \r\n 2003          337           5.657        -0.107        -3.222         14.22 \r\n 2003          338           3.913        -0.162        -2.911         0 \r\n 2003          339           5.945        -1.083        -4.849         2.54 \r\n 2003          340           4.316        -2.617        -5.896         0 \r\n 2003          341           5.224         2.213        -5.617         0 \r\n 2003          342           7.824         4.758        -2.024         0 \r\n 2003          343           0.833         0.889        -6.069         4.06 \r\n 2003          344           8.066        -6.069        -12.91         5.59 \r\n 2003          345           8.149        -11.29        -15.45         0 \r\n 2003          346           8.555        -7.71         -13.87         0 \r\n 2003          347           4.814        -3.934        -13.27         1.27 \r\n 2003          348           3.458        -2.921        -5.032         0 \r\n 2003          349           5.279         1.414        -2.921         0 \r\n 2003          350           6.741        -1.515        -8.09          0 \r\n 2003          351           4.97          1.902        -12.41         0 \r\n 2003          352           6.819         2.222        -4.584         0 \r\n 2003          353           8.375         2.296        -10.58         0 \r\n 2003          354           7.964         2.895        -9.4           0 \r\n 2003          355           7.704         5.949        -0.794         0 \r\n 2003          356           4.229         3.797        -2.974         0 \r\n 2003          357           5.43          3.529        -7.59          0 \r\n 2003          358           7.29         -1.724        -10.81         0 \r\n 2003          359           7.65          4.197        -7.778         0 \r\n 2003          360           5.183         5.488        -2.528         0 \r\n 2003          361           3.772         10.634        2.51          0 \r\n 2003          362           7.829         5.288        -3.137         3.05 \r\n 2003          363           3.377        -0.747        -8.56          0 \r\n 2003          364           7.965         6.327        -7.778         0 \r\n 2003          365           8.19          1.698        -7.621         0 \r\n 2004          1             4.169         11.382       -4.924         0 \r\n 2004          2             3.107         12.088       -3.472         0 \r\n 2004          3             2.285        -0.079        -8.413         0 \r\n 2004          4             2.919        -12.34        -12.77         1.52 \r\n 2004          5             8.369        -14.8         -20            0 \r\n 2004          6             8.806        -8.26         -20.34         0 \r\n 2004          7             6.637        -3.116        -16.917        0 \r\n 2004          8             3.912        -1.319        -9.389         0 \r\n 2004          9             6.084        -4.327        -12.787        0.51 \r\n 2004          10            5.326        -2.525        -10.464        0 \r\n 2004          11            7.956         7.859        -4.644         0 \r\n 2004          12            8.645         5.788        -5.335         0 \r\n 2004          13            8.648         0.629        -5.381         0 \r\n 2004          14            5.556         3.866        -9.169         0 \r\n 2004          15            7.972         2.081        -12.042        0 \r\n 2004          16            3.943         3.113        -3.407         0 \r\n 2004          17            1.948         0.923        -5.448         8.89 \r\n 2004          18            9.277        -6.884        -17.49         0 \r\n 2004          19            8.041        -9.207        -18.283        0 \r\n 2004          20            3.018        -6.113        -12.116        0 \r\n 2004          21            7.753         5.049        -11.676        0 \r\n 2004          22            10.506       -8.704        -19.218        0 \r\n 2004          23            5.946         9.243        -8.857         0 \r\n 2004          24            8.924        -4.345        -11.707        0 \r\n 2004          25            4.829        -3.043        -9.533         0 \r\n 2004          26            5.036        -6.273        -21.12         6.35 \r\n 2004          27            8.88         -16.66        -24.88         1.27 \r\n 2004          28            6.521        -18.21        -22.57         0 \r\n 2004          29            6.846        -19.34        -24.67         0 \r\n 2004          30            10.049       -19.267       -24.677        0.76 \r\n 2004          31            7.39         -11.1         -23.474        0 \r\n 2004          32            4.253        -5.422        -11.862        6.1 \r\n 2004          33            5.323        -3.74         -13.694        9.4 \r\n 2004          34            12.616       -13.16        -20.762        0 \r\n 2004          35            7.471        -7.415        -20.172        0 \r\n 2004          36            4.815        -4.066        -8.941         2.79 \r\n 2004          37            8.888        -5.167        -12.447        4.32 \r\n 2004          38            11.931       -11.703       -20.477        0 \r\n 2004          39            11.006       -0.694        -21.747        0 \r\n 2004          40            11.718       -1.601        -7.867         0 \r\n 2004          41            13.609       -3.443        -12.291        0 \r\n 2004          42            13.005       -2.448        -10.53         0 \r\n 2004          43            2.987        -8.725        -16.996        0 \r\n 2004          44            13.657       -1.024        -17.667        0 \r\n 2004          45            2.143        -4.786        -15.782        0 \r\n 2004          46            14.611       -7.638        -20.008        0 \r\n 2004          47            12.548       -2.448        -15.087        0 \r\n 2004          48            11.604       -2.822        -12.549        0 \r\n 2004          49            14.01         6.05         -6.674         0 \r\n 2004          50            9.28          6.769        -2.219         0 \r\n 2004          51            4.777         2.569        -0.314         9.65 \r\n 2004          52            14.561        3.95         -1.992         0 \r\n 2004          53            7.267         6.274        -0.791         3.56 \r\n 2004          54            3.692         1.381        -1.132         0 \r\n 2004          55            3.912         1.176        -0.498         0 \r\n 2004          56            5.777         3.297        -2.641         0 \r\n 2004          57            16.018        6.452        -3.853         0 \r\n 2004          58            14.224        7.823        -1.95          0 \r\n 2004          59            11.574        11.787        1.044         0 \r\n 2004          60            9.987         12.884        2.196         0 \r\n 2004          61            4.229         10.285        1.964         7.37 \r\n 2004          62            3.407         3.367         0.176         0 \r\n 2004          63            3.036         3.184        -0.033         1.02 \r\n 2004          64            1.865         4.183         0.983         0.51 \r\n 2004          65            5.188         7.174         0.376         20.83 \r\n 2004          66            14.945        11.849       -0.701         0 \r\n 2004          67            13.317        5.535        -0.733         0 \r\n 2004          68            13.892        12.813       -2.94          0 \r\n 2004          69            14.615        8.177        -0.568         0 \r\n 2004          70            11.57         12.328       -0.649         0 \r\n 2004          71            15.834        1.255        -6.374         0 \r\n 2004          72            18.997        5.639        -7.595         0 \r\n 2004          73            6.484         12.113       -0.513         0 \r\n 2004          74            16.803        7.718        -0.558         0.76 \r\n 2004          75            5.022         0.436        -2.567         9.14 \r\n 2004          76            14.29         0.448        -6.537         9.65 \r\n 2004          77            12.555        7.176        -4.117         1.27 \r\n 2004          78            13.901        6.259        -1.797         0.76 \r\n 2004          79            14.782        16.618       -1.274         0 \r\n 2004          80            19.391        13.275       -3.063         0 \r\n 2004          81            20.151        2.223        -6.226         0 \r\n 2004          82            19.53         7.926        -7.426         0 \r\n 2004          83            14.364        14.601        0.553         0 \r\n 2004          84            15.104        22.534        8.581         0 \r\n 2004          85            2.515         17.506        13.027        2.03 \r\n 2004          86            7.851         18.773        12.312        0.51 \r\n 2004          87            3.02          18.187        13.074        21.84 \r\n 2004          88            6.218         13.153        4.524         19.56 \r\n 2004          89            16.001        13.698        1.102         0.51 \r\n 2004          90            7.28          2.757        -2.224         0 \r\n 2004          91            20.999        9.665        -3.666         0 \r\n 2004          92            21.769        13.184       -3.068         0 \r\n 2004          93            21.957        16.78        -1.992         0 \r\n 2004          94            19.361        13.387        1.474         0 \r\n 2004          95            21.885        13.869       -3.849         0 \r\n 2004          96            20.389        20.407        0.539         0 \r\n 2004          97            21.129        21.6          6.881         0 \r\n 2004          98            18.52         22.502        2.78          0 \r\n 2004          99            22.624        15.898        2.107         0 \r\n 2004          100           11.405        13.169        0.411         0 \r\n 2004          101           20.236        8.486        -3.583         0 \r\n 2004          102           19.845        9.708        -6.904         0 \r\n 2004          103           18.853        10.819       -2.864         0 \r\n 2004          104           22.465        15.084       -4.896         0 \r\n 2004          105           21.95         21.458        0.509         0 \r\n 2004          106           13.975        23.068        8.88          0 \r\n 2004          107           18.825        30.316        7.148         15.824 \r\n 2004          108           20.684        26.935        10.031        0 \r\n 2004          109           12.724        25.463        15.483        0 \r\n 2004          110           12.99         18.555        6.518         17.653 \r\n 2004          111           4.33          18.253        6.814         3.683 \r\n 2004          112           15.231        16.388        7.427         0 \r\n 2004          113           15.218        14.23         5.167         0 \r\n 2004          114           19.312        17.442        5.412         5.385 \r\n 2004          115           5.324         13.299        6.208         17.094 \r\n 2004          116           14.196        15.219        5.354         0 \r\n 2004          117           24.039        15.942        2.963         0 \r\n 2004          118           21.603        19.745        0.097         0 \r\n 2004          119           23.64         28.343        11.84         0 \r\n 2004          120           18.589        20.992        10.192        0 \r\n 2004          121           10.657        14.198        6.909         0 \r\n 2004          122           21.589        14.44         3.658         0 \r\n 2004          123           17.809        11.1          0.392         0 \r\n 2004          124           24.439        16.42        -2.018         0 \r\n 2004          125           24.122        21.58         7.48          0 \r\n 2004          126           24.82         26.95         4.037         0 \r\n 2004          127           15.345        26.29         15.15         0 \r\n 2004          128           4.664         16.57         10.68         0 \r\n 2004          129           15.934        29.25         10.69         10.414 \r\n 2004          130           21.587        26.56         15.79         0.762 \r\n 2004          131           15.118        24.29         16.42         0 \r\n 2004          132           22.434        28.1          14.69         0 \r\n 2004          133           9.688         23.87         13.09         4.064 \r\n 2004          134           7.387         13.08         5.642         10.922 \r\n 2004          135           22.708        13.61         2.703         3.048 \r\n 2004          136           22.445        16.62         3.742         0 \r\n 2004          137           23.62         23.18         7.24          0 \r\n 2004          138           11.496        23.53         13.76         11.176 \r\n 2004          139           20.904        20.68         11.45         0 \r\n 2004          140           12.296        22.39         12.41         0 \r\n 2004          141           18.473        27.64         17.85         0 \r\n 2004          142           17.863        30.16         17.82         0 \r\n 2004          143           18.218        26.03         15.71         80.772 \r\n 2004          144           8.59          18.14         10.66         5.334 \r\n 2004          145           11.813        19.35         8.32          30.226 \r\n 2004          146           20.211        17.21         9.01          0 \r\n 2004          147           24.529        20.77         8.39          0 \r\n 2004          148           20.945        25.73         14.17         0 \r\n 2004          149           26.206        24.93         11.63         1.016 \r\n 2004          150           18.269        26.15         15.79         11.43 \r\n 2004          151           14.28         22.87         13.46         8.89 \r\n 2004          152           25.583        22.63         11.89         0.762 \r\n 2004          153           18.674        19.57         12.16         0 \r\n 2004          154           13.773        20.62         0             0 \r\n 2004          155           28.418        24.57         10.63         0 \r\n 2004          156           27.703        25.96         13.13         0 \r\n 2004          157           10.247        22.61         14.18         0.254 \r\n 2004          158           25.274        27.86         14.13         0.254 \r\n 2004          159           26.909        31.62         19.92         0 \r\n 2004          160           17.391        30.2          22.042        0 \r\n 2004          161           21.475        27.72         20.63         0 \r\n 2004          162           13.285        25.64         19.45         6.35 \r\n 2004          163           19.956        29.95         19.37         6.858 \r\n 2004          164           20.497        29.13         16.43         10.414 \r\n 2004          165           27.524        26.83         15.5          0 \r\n 2004          166           28.125        25.96         16.7          8.382 \r\n 2004          167           18.344        26.13         15.91         0 \r\n 2004          168           10.942        24.92         16.25         17.78 \r\n 2004          169           23.59         23.94         14.34         0 \r\n 2004          170           13.439        18.92         13.2          0 \r\n 2004          171           26.586        19.69         8.52          0 \r\n 2004          172           12.074        20.66         12.78         0 \r\n 2004          173           19.044        23.69         13.12         23.368 \r\n 2004          174           28.825        24.4          10.26         0 \r\n 2004          175           25.069        26.49         14.44         0 \r\n 2004          176           10.576        16.07         9.11          5.334 \r\n 2004          177           29.068        22.25         5.961         0 \r\n 2004          178           25.093        24.7          9.62          0 \r\n 2004          179           12.582        23.33         13.96         1.27 \r\n 2004          180           28.55         23.88         11.05         0.254 \r\n 2004          181           26.089        26.17         11.73         0 \r\n 2004          182           28.198        26.67         12.21         0 \r\n 2004          183           27.358        29.5          16.03         0 \r\n 2004          184           13.164        25.79         19.62         6.096 \r\n 2004          185           8.51          22.77         18.1          5.334 \r\n 2004          186           26.895        28.43         17.11         0 \r\n 2004          187           11.403        25.27         16.87         5.842 \r\n 2004          188           15.664        21.63         15.1          0 \r\n 2004          189           22.708        20.67         13.43         0 \r\n 2004          190           22.002        23.31         14.74         0 \r\n 2004          191           15.782        26.34         17.86         8.382 \r\n 2004          192           20.843        27.65         16.2          0 \r\n 2004          193           9.343         24.67         19.02         12.7 \r\n 2004          194           25.273        28.97         17.64         0 \r\n 2004          195           25.009        29.7          17.81         0 \r\n 2004          196           26.003        26.45         16.11         0 \r\n 2004          197           25.236        27.61         16.08         0 \r\n 2004          198           24.621        27.44         18.35         0 \r\n 2004          199           25.304        25.14         15.25         0 \r\n 2004          200           23.969        25.9          14.83         0 \r\n 2004          201           23.879        29.59         16.1          0 \r\n 2004          202           25.307        31.31         20.42         0 \r\n 2004          203           17.667        30.39         21.63         3.048 \r\n 2004          204           12.496        27.5          19.48         0 \r\n 2004          205           22.808        23.17         16.07         0 \r\n 2004          206           12.013        21.14         13.68         0 \r\n 2004          207           24.208        23.8          10.27         0 \r\n 2004          208           25.326        25.41         10.87         0 \r\n 2004          209           25.284        25.25         11.35         0 \r\n 2004          210           23.264        26.44         12.33         0 \r\n 2004          211           22.457        26.84         16.19         1.524 \r\n 2004          212           18.094        24.76         15.41         0 \r\n 2004          213           25.808        28.41         13.11         0 \r\n 2004          214           15.565        26.39         15.58         18.542 \r\n 2004          215           21.079        29.61         18.58         2.032 \r\n 2004          216           13.33         29.89         18.99         36.576 \r\n 2004          217           11.153        24.72         16.23         0.254 \r\n 2004          218           26.116        22.65         12.73         0 \r\n 2004          219           26.147        22.95         10.53         0 \r\n 2004          220           25.167        24.36         12.65         0 \r\n 2004          221           17.186        26.32         15.57         0 \r\n 2004          222           23.934        23.99         13.03         0 \r\n 2004          223           14.06         17.95         12.23         0 \r\n 2004          224           17.218        16.83         8.86          0 \r\n 2004          225           13.807        19.73         8.5           0 \r\n 2004          226           17.948        20.6          8.14          0 \r\n 2004          227           23.079        22.82         9.78          0 \r\n 2004          228           24.69         23.26         7.99          0 \r\n 2004          229           17.43         25.37         12.29         1.27 \r\n 2004          230           18.002        24.68         15.26         15.24 \r\n 2004          231           5.214         22.5          11.25         5.334 \r\n 2004          232           22.687        19.11         7.4           0 \r\n 2004          233           21.881        23.57         9.29          0 \r\n 2004          234           22.538        22.66         9.03          0 \r\n 2004          235           23.304        27.36         15.38         0 \r\n 2004          236           15.386        27.9          18.08         7.112 \r\n 2004          237           15.893        25.09         17.8          1.524 \r\n 2004          238           10.931        24.72         16.81         10.922 \r\n 2004          239           19.032        29.2          18.33         16.256 \r\n 2004          240           22.031        26.65         16.46         0.254 \r\n 2004          241           15.596        22.33         13.51         0 \r\n 2004          242           19.711        22.7          11.06         0 \r\n 2004          243           23.489        26.57         13.44         0 \r\n 2004          244           20.463        27.39         12.21         0 \r\n 2004          245           22.121        30.13         17.07         0 \r\n 2004          246           22.113        27.39         15.54         0 \r\n 2004          247           21.785        27.58         14.14         0 \r\n 2004          248           19.689        28.58         15.67         0 \r\n 2004          249           13.104        27.79         17.61         23.114 \r\n 2004          250           22.433        24.01         12.99         0 \r\n 2004          251           22.48         21.32         9.3           0 \r\n 2004          252           20.866        22.65         8.81          0 \r\n 2004          253           20.258        24.46         11.4          0 \r\n 2004          254           20.768        27.46         14.12         0 \r\n 2004          255           20.148        28.4          13.95         0 \r\n 2004          256           20.124        28.17         12.52         0 \r\n 2004          257           18.766        29.35         15.44         0 \r\n 2004          258           9.648         28.72         18.58         1.016 \r\n 2004          259           14.289        25.48         13.65         0.508 \r\n 2004          260           20.328        23.28         10.09         0 \r\n 2004          261           8.799         19.78         9.1           3.048 \r\n 2004          262           14.593        26.5          12.75         0.254 \r\n 2004          263           18.354        29.54         15.56         0 \r\n 2004          264           18.429        26.44         14.34         0 \r\n 2004          265           18.009        27.65         12.72         0 \r\n 2004          266           18.907        27.52         12.61         0 \r\n 2004          267           10.073        23            11.7          1.778 \r\n 2004          268           18.855        24.41         8.83          0 \r\n 2004          269           18.649        23.78         8.81          0 \r\n 2004          270           17.967        24.7          9.48          0 \r\n 2004          271           14.085        26.71         10.24         0 \r\n 2004          272           18.755        20.37         6.304         0 \r\n 2004          273           18.37         20.04         4.158         0 \r\n 2004          274           12.368        24.44         5.684         0 \r\n 2004          275           4.14          21.17         1.304         12.7 \r\n 2004          276           18.125        14.72        -0.559         0 \r\n 2004          277           17.197        23.76         5.1           0 \r\n 2004          278           17.788        12.13         1.511         0 \r\n 2004          279           16.431        19.54         0.557         0 \r\n 2004          280           14.291        24.8          6.535         0 \r\n 2004          281           5.783         19.55         12.21         1.52 \r\n 2004          282           14.729        23.9          9.72          0 \r\n 2004          283           16.536        21.58         5.664         0 \r\n 2004          284           14.45         20.43         4.415         0 \r\n 2004          285           10.224        16.36         4.938         0 \r\n 2004          286           9.022         16.13         6.42          0 \r\n 2004          287           3.004         12.59         5.968         1.27 \r\n 2004          288           6.714         9.8           0.368         0 \r\n 2004          289           6.212         12.58         2.344         0 \r\n 2004          290           13.755        8.94         -0.304         0 \r\n 2004          291           8.997         14.24        -0.267         0 \r\n 2004          292           4.039         13.61         6.496         0 \r\n 2004          293           2.754         9.52          6.544         1.02 \r\n 2004          294           1.976         9.99          8.45          0 \r\n 2004          295           2.313         13.17         9.07          0 \r\n 2004          296           1.758         19.67         12.24         0 \r\n 2004          297           6.216         17.98         5.691         0 \r\n 2004          298           13.445        22.13         1.663         0 \r\n 2004          299           12.774        17.19         6.305         0 \r\n 2004          300           2.305         12.44         8.74          22.86 \r\n 2004          301           2.239         13.21         9.98          1.02 \r\n 2004          302           1.839         19.95         11.43         3.3 \r\n 2004          303           9.93          26.47         11.47         0 \r\n 2004          304           3.634         12.13         0.254         1.78 \r\n 2004          305           9.048         11.55        -0.91          0 \r\n 2004          306           0.971         8.79          6.458         26.67 \r\n 2004          307           2.897         7.75         -0.52          4.32 \r\n 2004          308           8.341         9.88         -3.721         0 \r\n 2004          309           11.861        11.13        -0.475         0 \r\n 2004          310           11.551        16.88        -2.901         0 \r\n 2004          311           11.418        23.82         2.95          0 \r\n 2004          312           10.576        12.01         0.245         0 \r\n 2004          313           7.627         10.66        -0.001         0 \r\n 2004          314           7.753         17.88        -0.427         0 \r\n 2004          315           6.288         15.65         3.48          0 \r\n 2004          316           11.115        5.91         -4.832         8.13 \r\n 2004          317           10.869        7.59         -7.56          0 \r\n 2004          318           10.587        7.86         -7.08          0 \r\n 2004          319           6.644         7.51         -2.664         0 \r\n 2004          320           4.547         9.79          2.438         0 \r\n 2004          321           3.123         15.71         4.441         0 \r\n 2004          322           6.61          19.97         14.16         0 \r\n 2004          323           1.154         14.9          8.41          15.24 \r\n 2004          324           1.413         11.96         6.093         11.43 \r\n 2004          325           3.66          6.112        -1.288         1.27 \r\n 2004          326           4.296         5.175        -1.013         0 \r\n 2004          327           2.751         6.709         1.918         0 \r\n 2004          328           7.055         4.158        -1.26          0 \r\n 2004          329           7.98          3.224        -6.128         0 \r\n 2004          330           6.669         5.415        -7.9           0 \r\n 2004          331           4.103         10           -1.108         0 \r\n 2004          332           1.703         5.816        -2.341         8.13 \r\n 2004          333           4.819         1.076        -6.216         0 \r\n 2004          334           5.439        -1.005        -7.46          1.27 \r\n 2004          335           7.501         0.745        -9.37          0 \r\n 2004          336           8.486         4.666        -7.06          0 \r\n 2004          337           8.634         7.14         -3.377         0 \r\n 2004          338           7.525         5.636        -5.664         0 \r\n 2004          339           7.665         10.92        -1.573         0 \r\n 2004          340           3.519         4.262        -4.171         0 \r\n 2004          341           1.324         4.213         0.395         8.13 \r\n 2004          342           2.823         5.091        -2.046         0.51 \r\n 2004          343           3.752         5.606        -3.168         0 \r\n 2004          344           4.227         8.82         -0.759         0 \r\n 2004          345           0.933         3.53          0.158         1.02 \r\n 2004          346           3.99          2.477        -2.426         0 \r\n 2004          347           5.867         6.078        -2.475         0 \r\n 2004          348           7.466        -2.484        -11.55         0 \r\n 2004          349           8.555        -0.977        -15.39         0 \r\n 2004          350           6.794         7.25         -7.93          0 \r\n 2004          351           8.049         4.524        -7.35          0 \r\n 2004          352           7.871         1.604        -10.53         0 \r\n 2004          353           6.364         4.251        -13.75         0 \r\n 2004          354           7.217        -9            -19.75         0 \r\n 2004          355           4.529         2.59         -9.44          0 \r\n 2004          356           8.157         0.199        -16            2.03 \r\n 2004          357           8.147        -12.5         -19.53         0 \r\n 2004          358           8.337        -14.86        -23            0 \r\n 2004          359           8.145        -6.129        -24.66         0 \r\n 2004          360           2.561        -0.987        -6.119         0.76 \r\n 2004          361           7.362        -5.016        -9.58          0 \r\n 2004          362           5.625         2.436        -9.84          0 \r\n 2004          363           6.223         6.701        -4.171         0 \r\n 2004          364           4.457         2.826        -8.87          0 \r\n 2004          365           2.139         15.59         2.807         0 \r\n 2004          366           7.844         5.749        -5.605         0 \r\n 2005          1             0.917         0.358        -6.187         0.76 \r\n 2005          2             5.52          0.007        -5.916         4.83 \r\n 2005          3             1.842        -5.828        -8.36          1.78 \r\n 2005          4             1.208        -6.509        -9.67          0 \r\n 2005          5             3.828        -9.53         -11.69         8.13 \r\n 2005          6             8.808        -11.69        -20.2          10.16 \r\n 2005          7             4.649        -7.34         -18.99         0 \r\n 2005          8             7.403        -4.63         -18.16         0 \r\n 2005          9             3.862         0.139        -10.73         0 \r\n 2005          10            6.121        -6.636        -11.04         0 \r\n 2005          11            4.102        -1.951        -7.43          0 \r\n 2005          12            3.468        -1.488        -5.596         0 \r\n 2005          13            9.244        -5.635        -22.19         0 \r\n 2005          14            8.854        -18.26        -24.44         0 \r\n 2005          15            8.963        -14.75        -24.43         0 \r\n 2005          16            9.954        -12.63        -25.55         0 \r\n 2005          17            8.837        -13.48        -23.68         0 \r\n 2005          18            6.176         1.783        -19.9          0 \r\n 2005          19            7.5           3.004        -5.578         0 \r\n 2005          20            4.489        -2.792        -5.315         0 \r\n 2005          21            3.86         -0.161        -5.344         0 \r\n 2005          22            9.844        -3.354        -17.62         0 \r\n 2005          23            5.428        -5.46         -17.16         0 \r\n 2005          24            9.978         5.692        -8.42          0 \r\n 2005          25            10.297        6.874        -7.27          0 \r\n 2005          26            3.255         1.905        -4.363         0 \r\n 2005          27            9.958        -3.33         -10.03         0 \r\n 2005          28            8.1          -1.919        -8.1           0 \r\n 2005          29            5.17          0.711        -5.354         0 \r\n 2005          30            3.967        -0.366        -2.076         0 \r\n 2005          31            3.964         1.268        -1.5           0 \r\n 2005          32            3.566         1.666        -0.809         0 \r\n 2005          33            9.562         4.481        -2.768         0 \r\n 2005          34            11.476        10.04        -3.616         0 \r\n 2005          35            11.994        12.97        -0.401         0 \r\n 2005          36            9.56          13.03         0.684         0 \r\n 2005          37            1.528         6.762        -4.488         9.91 \r\n 2005          38            8.721        -4.517        -10.07         2.54 \r\n 2005          39            5.739        -5.035        -11.41         0 \r\n 2005          40            11.766       -6.071        -15.64         2.03 \r\n 2005          41            11.946       -3.059        -16.61         0 \r\n 2005          42            13.285        6.029        -5.964         0 \r\n 2005          43            8.34          6.641        -2.199         0 \r\n 2005          44            1.101         4.579         2.357         22.1 \r\n 2005          45            11.695        13.82         1.052         3.81 \r\n 2005          46            3.462         4.15         -1.887         0 \r\n 2005          47            13.767        2.337        -6.314         0 \r\n 2005          48            13.025        3.437        -8.94          0 \r\n 2005          49            13.82         2.328        -10.29         0 \r\n 2005          50            1.996         1.006        -2.806         0.51 \r\n 2005          51            2.809         3.875        -1.329         4.32 \r\n 2005          52            7.258        -0.283        -4.401         0 \r\n 2005          53            12.526        5.417        -5.008         0.25 \r\n 2005          54            10.235        0.805        -4.726         0 \r\n 2005          55            5.763        -0.055        -4.114         1.27 \r\n 2005          56            15.815        7.71         -4.41          0 \r\n 2005          57            13.747        5.982        -6.333         0 \r\n 2005          58            3.047         5.277        -3.092         0 \r\n 2005          59            5.874        -2.912        -8.01          0 \r\n 2005          60            16.775       -0.293        -10.94         0 \r\n 2005          61            16.061        3.911        -7.03          0 \r\n 2005          62            14.643        6.354        -8.19          0 \r\n 2005          63            12.541        13.7         -4.352         0 \r\n 2005          64            16.674        9.19         -2.36          0 \r\n 2005          65            15.822        22.06         2.378         0 \r\n 2005          66            5.93          10.76        -5.113         4.32 \r\n 2005          67            17.87         0.614        -8.98          0 \r\n 2005          68            17.934        1.239        -9.13          0 \r\n 2005          69            6.321         7.39         -3.277         0 \r\n 2005          70            8.855         7.1          -4.124         0 \r\n 2005          71            5.096        -1.673        -9.39          0.51 \r\n 2005          72            14.982        1.883        -12.75         0 \r\n 2005          73            15.863        2.669        -9.43          0 \r\n 2005          74            14.894        8.71         -8.85          0 \r\n 2005          75            18.252        9.77         -5.634         0 \r\n 2005          76            10.551        9.63         -2.696         0 \r\n 2005          77            4.679         10.26        -0.866         3.56 \r\n 2005          78            7.156         0.55         -5.47          1.27 \r\n 2005          79            14.797        6.71         -6.129         0 \r\n 2005          80            12.7          9.84         -0.092         0 \r\n 2005          81            7.028         5.303        -1.445         0 \r\n 2005          82            19.579        11.3         -2.353         0 \r\n 2005          83            2.141         2.917        -0.848         2.03 \r\n 2005          84            11.629        3.217        -1.13          17.02 \r\n 2005          85            18.804        8.91         -1.754         0 \r\n 2005          86            21.282        15.52        -0.987         0 \r\n 2005          87            19.51         22.17         0.335         0 \r\n 2005          88            15.654        24.69         6.989         0 \r\n 2005          89            8.858         20.34         4.901         6.35 \r\n 2005          90            22.319        14.3          2.831         0 \r\n 2005          91            19.593        11.7          1.876         0 \r\n 2005          92            22.724        15.98        -0.976         0 \r\n 2005          93            21.338        22.24         4.387         0 \r\n 2005          94            21.687        26.64         8.48          0 \r\n 2005          95            14.708        24.31         11.29         0 \r\n 2005          96            13.912        20.46         7.84          0 \r\n 2005          97            20.681        19.37         5.705         0 \r\n 2005          98            22.655        20.16         3.762         0 \r\n 2005          99            20.336        24.85         9.47          0 \r\n 2005          100           13.896        24.9          13.26         0 \r\n 2005          101           7.32          19.06         11.78         41.91 \r\n 2005          102           9.502         13.91         6.605         1.778 \r\n 2005          103           24.868        14.98         3.981         0 \r\n 2005          104           24.968        18.74         2.789         0 \r\n 2005          105           22.351        21.13         5.524         0 \r\n 2005          106           9.485         21.06         10.57         2.54 \r\n 2005          107           21.819        26.29         10.56         0 \r\n 2005          108           19.521        25.7          12.75         0 \r\n 2005          109           7.966         23.82         16.06         0 \r\n 2005          110           10.13         20.432        12.148        0 \r\n 2005          111           8.897         14.876        8.909         11.735 \r\n 2005          112           16.166        18.19         0             0 \r\n 2005          113           26.58         9.53         -0.228         0 \r\n 2005          114           26.614        14.9         -0.597         0 \r\n 2005          115           15.198        17.55         1.237         0 \r\n 2005          116           12.549        9.33          2.351         0 \r\n 2005          117           23.018        13.49         1.537         0 \r\n 2005          118           19.212        11.97         0.547         0 \r\n 2005          119           17.366        12.5          0.982         0 \r\n 2005          120           18.213        11.18        -1.117         0 \r\n 2005          121           11.273        6.952         0.515         0 \r\n 2005          122           16.526        10.9          0.754         0 \r\n 2005          123           27.621        13.74        -0.748         0 \r\n 2005          124           25.917        20.38        -0.758         0 \r\n 2005          125           25.898        22.69         6.259         0 \r\n 2005          126           18.262        25.07         10.81         0 \r\n 2005          127           19.229        27.06         15.29         0 \r\n 2005          128           15.668        27.68         16.01         0 \r\n 2005          129           17.994        22.32         12.51         0 \r\n 2005          130           25.834        27.71         8.63          26.594 \r\n 2005          131           7.497         18.85         10.75         17.145 \r\n 2005          132           3.823         13.48         6.147         52.959 \r\n 2005          133           7.062         15.75         7.07          0 \r\n 2005          134           15.732        10.87         4.28          0 \r\n 2005          135           27.018        15.13         3.025         0 \r\n 2005          136           16.286        19.68         4.744         0 \r\n 2005          137           20.765        24.66         10.82         4.039 \r\n 2005          138           5.175         19.19         13.22         0 \r\n 2005          139           28.042        27.62         10.61         0 \r\n 2005          140           14.063        18.73         11.56         0 \r\n 2005          141           11.694        20.28         10.12         0 \r\n 2005          142           28.904        26.38         13.02         0 \r\n 2005          143           28.897        26.19         12.33         0 \r\n 2005          144           27.35         24.55         11.6          0 \r\n 2005          145           9.026         21.62         10.1          2.87 \r\n 2005          146           25.53         22.39         8.51          2.743 \r\n 2005          147           21.902        19.83         6.886         0 \r\n 2005          148           26.223        21.4          7.43          0 \r\n 2005          149           13.875        20.19         9.54          0 \r\n 2005          150           27.09         23.91         8.7           0 \r\n 2005          151           7.761         21.13         13.39         0 \r\n 2005          152           15.911        25.12         15.05         0 \r\n 2005          153           26.276        28.08         13.23         0 \r\n 2005          154           18.699        26.79         16.35         6.426 \r\n 2005          155           14.751        25.74         17.07         3.023 \r\n 2005          156           16.283        24.81         14.41         0 \r\n 2005          157           28.523        31.48         14.05         0 \r\n 2005          158           24.081        31.81         19.86         15.723 \r\n 2005          159           13.021        24.54         15.76         0 \r\n 2005          160           19.591        26.57         18.68         0 \r\n 2005          161           17.731        26.77         18.15         0 \r\n 2005          162           20.09         25.73         17.49         0 \r\n 2005          163           23.015        27.2          14.48         0 \r\n 2005          164           23.025        26.97         15.75         12.04 \r\n 2005          165           13.815        22.67         15.29         0 \r\n 2005          166           15.984        22.57         13.02         0 \r\n 2005          167           29.019        26.56         11.75         0 \r\n 2005          168           29.437        27.5          13.16         0 \r\n 2005          169           29.476        27.86         12.72         0 \r\n 2005          170           29.109        27.89         13.68         0 \r\n 2005          171           25.54         29.8          15.74         17.12 \r\n 2005          172           22.634        29.94         18.44         0 \r\n 2005          173           26.132        31.95         20.44         0 \r\n 2005          174           28.568        31.97         21.21         0 \r\n 2005          175           25.08         32.93         20.52         41.453 \r\n 2005          176           14.258        29.04         17.95         3.81 \r\n 2005          177           25.666        31.21         20.91         0 \r\n 2005          178           21.37         32.04         17.62         13.208 \r\n 2005          179           18.257        28.34         18.83         2.565 \r\n 2005          180           10.809        29.61         21.18         0 \r\n 2005          181           28.49         27.11         15.96         0 \r\n 2005          182           29.1          24.68         14.27         0 \r\n 2005          183           26.479        26.33         12.81         0 \r\n 2005          184           19.704        28.76         16.33         3.505 \r\n 2005          185           18.923        26.28         16.09         0 \r\n 2005          186           27.696        25.5          14.25         0 \r\n 2005          187           22.917        26.3          13.98         0 \r\n 2005          188           25.324        27.75         16.58         0 \r\n 2005          189           21.975        29.06         17.4          0 \r\n 2005          190           27.002        30.96         18.8          0 \r\n 2005          191           25.635        30.83         18.78         0 \r\n 2005          192           27.525        29.66         18.18         0 \r\n 2005          193           26.89         29.32         15.88         0 \r\n 2005          194           26.579        30.97         19.14         0 \r\n 2005          195           23.497        31.72         19.86         0 \r\n 2005          196           23.391        32.68         20.41         0 \r\n 2005          197           26.133        32.89         19.93         0 \r\n 2005          198           26.188        33.55         18.99         26.264 \r\n 2005          199           25.994        27.06         16.86         0 \r\n 2005          200           27.814        29.03         15.24         4.115 \r\n 2005          201           20.544        32.05         20.51         14.834 \r\n 2005          202           22.298        31.26         20.79         0 \r\n 2005          203           22.268        30.69         20.28         0 \r\n 2005          204           25.16         34.04         21.87         0 \r\n 2005          205           25.883        33.42         21.35         3.124 \r\n 2005          206           21.737        33.04         21.29         24.638 \r\n 2005          207           11.255        21.76         13.69         0 \r\n 2005          208           25.487        21.83         11.05         0 \r\n 2005          209           27.146        25.67         10.48         0 \r\n 2005          210           18.027        27.5          15.65         0 \r\n 2005          211           14.534        28.35         17.4          20.142 \r\n 2005          212           10.618        25.33         17.62         0 \r\n 2005          213           19.745        30.11         18.09         3.073 \r\n 2005          214           19.262        30.83         19.09         0 \r\n 2005          215           21.086        31.78         22.16         0 \r\n 2005          216           21.972        25.09         17.77         0 \r\n 2005          217           26.123        25.78         13.74         0 \r\n 2005          218           27.06         27.16         11.6          0 \r\n 2005          219           25.651        30.14         12.27         0 \r\n 2005          220           24.274        31.32         15.6          0 \r\n 2005          221           23.385        33.55         18.23         20.676 \r\n 2005          222           21.17         29.689        16.667        101.092 \r\n 2005          223           12.929        28.778        18.693        16.332 \r\n 2005          224           9.751         24.62         17.856        0 \r\n 2005          225           11.422        20.433        14.943        0 \r\n 2005          226           22.66         22.95         11.809        0 \r\n 2005          227           22.784        24.875        12.597        0 \r\n 2005          228           24.182        26.488        12.929        0 \r\n 2005          229           19.316        25.951        15.001        0 \r\n 2005          230           23.114        29.937        19.143        0 \r\n 2005          231           17.655        29.412        17.709        8.306 \r\n 2005          232           22.147        28.903        17.916        0 \r\n 2005          233           18.983        27.839        18.533        0 \r\n 2005          234           17.19         23.461        15.265        0 \r\n 2005          235           19.655        22.518        12.664        0 \r\n 2005          236           11.357        22.968        13.509        0 \r\n 2005          237           13.589        27.182        18.148        13.157 \r\n 2005          238           11.189        27.429        16.601        0 \r\n 2005          239           21.417        28.906        12.89         0 \r\n 2005          240           21.809        27.954        14.312        0 \r\n 2005          241           21.146        29.404        13.142        0 \r\n 2005          242           21.687        28.267        13.797        0 \r\n 2005          243           15.749        27.21         12.528        0 \r\n 2005          244           22.159        27.968        9.572         0 \r\n 2005          245           20.089        28.255        11.389        0 \r\n 2005          246           20.474        30.216        13.146        0 \r\n 2005          247           17.983        30.601        17.787        0 \r\n 2005          248           17.791        30.471        17.524        0 \r\n 2005          249           17.168        29.713        17.554        0 \r\n 2005          250           10.502        26.561        15.741        31.826 \r\n 2005          251           11.704        28.457        16.248        4.318 \r\n 2005          252           16.664        32.516        17.499        0 \r\n 2005          253           18.447        32.028        19.913        0 \r\n 2005          254           17.706        31.919        18.693        0 \r\n 2005          255           12.525        30.712        20.42         21.59 \r\n 2005          256           7.639         26.538        13.591        0 \r\n 2005          257           17.883        23.793        9.167         0 \r\n 2005          258           9.18          22.026        8.916         0 \r\n 2005          259           17.545        25.554        6.436         0 \r\n 2005          260           11.705        25.433        9.533         0 \r\n 2005          261           15.555        29.748        15.073        0 \r\n 2005          262           11.982        28.171        14.693        0 \r\n 2005          263           17.53         31.575        10.661        0 \r\n 2005          264           16.148        33.119        15.276        0 \r\n 2005          265           11.659        25.197        11.731        0 \r\n 2005          266           10.44         20.204        10.289        9.042 \r\n 2005          267           9.709         25.963        15.298        20.549 \r\n 2005          268           6.588         23.05         16.094        3.556 \r\n 2005          269           10.97         19.733        9.246         0 \r\n 2005          270           17.498        25.415        7.438         8.331 \r\n 2005          271           4.38          16.163        3.759         0 \r\n 2005          272           16.852        18.044        0.209         0 \r\n 2005          273           16.803        25.517        5.824         0 \r\n 2005          274           14.042        27.337        12.59         0 \r\n 2005          275           8.457         27.93         17.577        0 \r\n 2005          276           11.838        30.81         20.627        0 \r\n 2005          277           12.241        31.336        21.188        0 \r\n 2005          278           4.531         22.685        5.102         1.27 \r\n 2005          279           11.81         9.826         1.608         0 \r\n 2005          280           16.039        11.553       -1.293         0 \r\n 2005          281           16.366        14.971       -1.273         0 \r\n 2005          282           14.269        15.134        1.694         0 \r\n 2005          283           15.055        18.617        2.76          0 \r\n 2005          284           9.282         18.578        5.509         0 \r\n 2005          285           4.518         16.969        8.566         2.29 \r\n 2005          286           11.947        21.282        5.423         0.51 \r\n 2005          287           14.861        26.571        5.168         0 \r\n 2005          288           15.159        20.857        2.812         0 \r\n 2005          289           12.098        21.713        3.123         0 \r\n 2005          290           14.097        23.14         6.672         0 \r\n 2005          291           13.814        26.127        5.238         0 \r\n 2005          292           11.258        16.741        4.803         0 \r\n 2005          293           6.577         14.001        3.039         0.51 \r\n 2005          294           8.212         14.407        0.749         0 \r\n 2005          295           8.814         9.412        -0.72          0 \r\n 2005          296           4.376         7.161        -0.918         3.05 \r\n 2005          297           7.31          8.479        -0.907         0 \r\n 2005          298           13.419        11.485       -1.692         0 \r\n 2005          299           7.81          11.793       -2.003         0 \r\n 2005          300           12.988        14.263       -1.512         0 \r\n 2005          301           12.632        16.12        -2.693         0 \r\n 2005          302           10.785        20.55         3.928         0 \r\n 2005          303           4.477         15.73         6.581         1.27 \r\n 2005          304           9.064         13.73         1.984         0 \r\n 2005          305           12.079        17.46        -3.111         0 \r\n 2005          306           11.7          24.21         0.074         0 \r\n 2005          307           9.947         19.68         5.26          0 \r\n 2005          308           10.442        14.42         1.784         0 \r\n 2005          309           2.704         11.29         3.044         0 \r\n 2005          310           8.18          13.14         5.423         4.32 \r\n 2005          311           10.454        21.25         5.566         0 \r\n 2005          312           8.607         19.49         6.832         0 \r\n 2005          313           8.618         11.78        -1.005         0 \r\n 2005          314           10.711        14.3         -4.998         0 \r\n 2005          315           9.38          19.36        -0.664         0 \r\n 2005          316           3.142         17.81         7.95          0.76 \r\n 2005          317           7.583         10.11        -1.591         10.92 \r\n 2005          318           3.864         6.486        -1.42          0 \r\n 2005          319           0.994         2.893        -4.565         11.18 \r\n 2005          320           10.518       -4.556        -12.96         1.02 \r\n 2005          321           8.479        -4.257        -15.22         0 \r\n 2005          322           9.75          5.987        -5.074         0 \r\n 2005          323           1.775         5.166         0.292         0.51 \r\n 2005          324           3.523         2.713        -0.389         0 \r\n 2005          325           5.509         8.93         -0.399         0 \r\n 2005          326           4.61          4.194        -1.677         0 \r\n 2005          327           8.925         11.5          0.186         0 \r\n 2005          328           9.638         0.157        -10.18         0 \r\n 2005          329           4.147         1.313        -7.83          0 \r\n 2005          330           8.724         11.94        -9.03          0 \r\n 2005          331           0.946         11.66         6.064         0 \r\n 2005          332           1.536         11.37        -5.017         18.54 \r\n 2005          333           4.384        -5.008        -9.97          1.78 \r\n 2005          334           5.717        -4.391        -11.6          0 \r\n 2005          335           9.303        -7.44         -17.14         4.06 \r\n 2005          336           4.41         -9.98         -15.18         0 \r\n 2005          337           3.807        -7.8          -10.39         4.32 \r\n 2005          338           8.631        -9.51         -19.04         0 \r\n 2005          339           7.512        -12.35        -24            0 \r\n 2005          340           9.072        -15.6         -22.66         0.25 \r\n 2005          341           7.964        -15.18        -24.71         0 \r\n 2005          342           4.151        -9.41         -22.03         4.57 \r\n 2005          343           7.493        -9.26         -25.59         0 \r\n 2005          344           4.281         1.88         -9.75          0.51 \r\n 2005          345           3.167         1.132        -2.722         2.29 \r\n 2005          346           5.865         2.4          -7.25          0 \r\n 2005          347           5.504         2.219        -8.61          0 \r\n 2005          348           4.817         1.5          -0.371         7.87 \r\n 2005          349           4.684        -0.343        -6.705         0.51 \r\n 2005          350           6.747        -6.207        -11.67         0 \r\n 2005          351           8.43         -9.73         -16.59         0 \r\n 2005          352           8.441        -11.88        -16.4          0 \r\n 2005          353           8.576        -7.62         -20.07         0 \r\n 2005          354           8.384        -6.103        -15.96         0 \r\n 2005          355           7.552        -2.998        -16.51         0 \r\n 2005          356           7.726         4.69         -6.391         0 \r\n 2005          357           5.929         3.767        -2.684         0 \r\n 2005          358           2.477         2.914         0.129         0 \r\n 2005          359           3.493         0.14         -1.687         0 \r\n 2005          360           3.204         0.281        -2.645         0 \r\n 2005          361           3.209        -0.447        -1.971         0 \r\n 2005          362           2.147        -0.285        -1.8           0 \r\n 2005          363           2.084         0.121        -2.104         0 \r\n 2005          364           1.7           0.821        -1.042         0 \r\n 2005          365           4.885         0.621        -2.502         0 \r\n 2006          1             3.756         2.986        -3.092         0 \r\n 2006          2             1.5           1.264         0.111         6.1 \r\n 2006          3             2.461         1.5          -0.125         0 \r\n 2006          4             4.631         4.203        -0.399         0 \r\n 2006          5             1.563        -0.418        -5.122         0 \r\n 2006          6             3.318         0.85         -6.003         0 \r\n 2006          7             7.022         6.655        -2.103         0 \r\n 2006          8             2.143         1.357        -1.166         0 \r\n 2006          9             8.834         0.159        -7.99          0 \r\n 2006          10            8.793         2.28         -9.2           0 \r\n 2006          11            8.317         8.62         -5.199         0 \r\n 2006          12            8.671         8.65         -1.506         0 \r\n 2006          13            5.225         0.403        -5.335         0 \r\n 2006          14            9.154         6.798        -8.23          0 \r\n 2006          15            8.261         12.54        -1.014         0 \r\n 2006          16            1.638         2.479        -4.632         0 \r\n 2006          17            1.855        -2.825        -6.139         0 \r\n 2006          18            7.658         8.94         -9.7           0 \r\n 2006          19            6.52          7.67         -3.234         0 \r\n 2006          20            1.507        -1.298        -4.335         1.78 \r\n 2006          21            5.985        -1.621        -4.689         0 \r\n 2006          22            3.862         0.082        -11.25         0 \r\n 2006          23            6.14          2.118        -12            0 \r\n 2006          24            10.435        4.715        -4.939         0 \r\n 2006          25            10.476        5.274        -7.29          0 \r\n 2006          26            9.537         15.09        -4.391         0 \r\n 2006          27            10.245        13.96         1.929         0 \r\n 2006          28            1.029         6.801         3.528         2.79 \r\n 2006          29            1.594         5.307         0.377         3.56 \r\n 2006          30            4.25          1.473        -0.693         1.52 \r\n 2006          31            10.409        11.42        -3.749         0 \r\n 2006          32            7.14          6.769        -0.099         0 \r\n 2006          33            8.899         13.05         0.167         0 \r\n 2006          34            8.044         2.023        -10.09         0 \r\n 2006          35            11.898       -3.561        -12.88         0 \r\n 2006          36            10.47        -0.977        -13.53         0 \r\n 2006          37            11.585        2.2          -12.09         0 \r\n 2006          38            3.552         1.463        -2.712         0 \r\n 2006          39            12.84        -2.693        -12.05         2.79 \r\n 2006          40            6.362        -1.562        -17.45         0 \r\n 2006          41            9.154         0.949        -10.47         0 \r\n 2006          42            7.16         -3.274        -11.31         0 \r\n 2006          43            9.434        -5.481        -13.16         0 \r\n 2006          44            13.202        8.87         -13.29         0 \r\n 2006          45            13.709        17.28        -5.17          0 \r\n 2006          46            4.292        -0.636        -6.549         0 \r\n 2006          47            5.708        -6.539        -13.31         3.3 \r\n 2006          48            12.507       -13.31        -20.83         0 \r\n 2006          49            15.07        -12.93        -24.87         0 \r\n 2006          50            13.271       -6.218        -21.65         0 \r\n 2006          51            14.742        2.883        -12.51         0 \r\n 2006          52            14.673        7.39         -11.7          0 \r\n 2006          53            14.379        8.83         -6.823         0 \r\n 2006          54            15.132        1.826        -4.89          0 \r\n 2006          55            14.923        16.33        -6.236         0 \r\n 2006          56            15.927        0.504        -9.49          0 \r\n 2006          57            14.594        7.01         -11.88         0 \r\n 2006          58            12.432        11.88        -2.987         0 \r\n 2006          59            9.255         6.492        -4.881         0 \r\n 2006          60            11.11         16.09         1.497         0 \r\n 2006          61            10.566        2.47         -2.987         0 \r\n 2006          62            16.741        6.959        -7.67          0 \r\n 2006          63            4.698         5.362        -4.21          0 \r\n 2006          64            2.664         4.773        -1.289         8.89 \r\n 2006          65            11.533        4.344        -2.501         0 \r\n 2006          66            5.009         2.371        -3.435         3.81 \r\n 2006          67            2.494         3.886        -1.667         2.79 \r\n 2006          68            12.655        10.48         0.008         0.51 \r\n 2006          69            17.309        14.93        -1.212         0 \r\n 2006          70            13.669        16.2         -0.645         0 \r\n 2006          71            2.697         3.89         -1.904         1.52 \r\n 2006          72            9.19          1.604        -5.122         1.27 \r\n 2006          73            18.258        9.19         -7.5           0 \r\n 2006          74            15.171        5.915        -8.333         0 \r\n 2006          75            3.982         6.054        -1.286         2.54 \r\n 2006          76            19.713        5.432        -5.941         0 \r\n 2006          77            18.999        6.028        -3.631         0 \r\n 2006          78            11.215        5.704        -2.238         0 \r\n 2006          79            6.053         4.093        -1.662         0 \r\n 2006          80            17.862        0.367        -7.271         10.92 \r\n 2006          81            21.642        3.359        -9.294         0 \r\n 2006          82            16.625        5.248        -5.374         0 \r\n 2006          83            7.185         2.454        -1.527         0 \r\n 2006          84            16.958        6.144        -4.721         0 \r\n 2006          85            20.434        11.947       -5.294         0 \r\n 2006          86            1.699         6.351         1.813         14.22 \r\n 2006          87            8.288         8.31          0.008         1.27 \r\n 2006          88            16.165        14.51         0.243         0 \r\n 2006          89            6.997         16.85         8.33          0 \r\n 2006          90            3.1           9.22          2.991         26.67 \r\n 2006          91            8.922         7.65          2.625         0 \r\n 2006          92            3.391         7.19          3.669         12.954 \r\n 2006          93            22.066        9.74         -0.17          2.794 \r\n 2006          94            22.514        14.85        -1.963         0 \r\n 2006          95            19.428        22.116        3.877         0 \r\n 2006          96            12.524        19.382        10.618        1.27 \r\n 2006          97            5.358         8.61          0.856         2.286 \r\n 2006          98            23.925        11.89        -3.635         0 \r\n 2006          99            21.013        17.55        -0.662         0 \r\n 2006          100           23.055        27.21         4.141         0 \r\n 2006          101           15.006        24.85         12.66         2.032 \r\n 2006          102           24.013        23.84         10.23         1.778 \r\n 2006          103           22.57         31.63         10.98         0 \r\n 2006          104           23.54         28.67         12.13         0 \r\n 2006          105           17.778        27.72         10.21         4.064 \r\n 2006          106           6.698         17.72         10.5          6.858 \r\n 2006          107           12.773        18.18         10.07         0 \r\n 2006          108           12.338        20.32         7.16          2.54 \r\n 2006          109           24.816        19.22         2.061         1.778 \r\n 2006          110           19.292        16.5          5.051         0 \r\n 2006          111           17.456        19.16         2.723         0 \r\n 2006          112           25.496        20.15         6.297         0 \r\n 2006          113           25.883        23.43         2.789         0 \r\n 2006          114           14.871        22.31         7.09          0.762 \r\n 2006          115           6.211         8.89          1.928         2.54 \r\n 2006          116           26.014        17.74         0.954         0 \r\n 2006          117           21.939        20.82         2.221         0 \r\n 2006          118           4.83          16.69         11.18         3.81 \r\n 2006          119           1.535         12.86         10.91         6.604 \r\n 2006          120           2.591         14.03         11.35         5.842 \r\n 2006          121           5.954         14.52         8.54          4.318 \r\n 2006          122           21.598        23.37         7.22          3.048 \r\n 2006          123           15.381        18.68         8.94          1.524 \r\n 2006          124           23.233        15.65         6.343         1.524 \r\n 2006          125           18.657        11.49         4.245         1.016 \r\n 2006          126           26.653        17.96         0.576         9.398 \r\n 2006          127           24.948        21.27         4.443         0 \r\n 2006          128           18.165        23.31         12.39         0.762 \r\n 2006          129           21.903        24.08         13.59         2.032 \r\n 2006          130           20.773        19.3          9.79          0 \r\n 2006          131           9.486         12.19         6.477         0 \r\n 2006          132           20.572        18.05         5.003         1.016 \r\n 2006          133           7.243         10.43         4.175         1.27 \r\n 2006          134           13.464        14.7          5.682         1.524 \r\n 2006          135           16.668        18.85         8.97          0.254 \r\n 2006          136           23.386        22.66         11.19         0 \r\n 2006          137           21.989        26.27         9.41          0 \r\n 2006          138           20.93         20.81         9.18          0.254 \r\n 2006          139           26.71         30.3          9.4           0 \r\n 2006          140           22.57         25.61         10.92         0 \r\n 2006          141           13.536        17.64         10.27         0 \r\n 2006          142           27.452        24.41         8.89          0 \r\n 2006          143           22.84         28.47         12.54         0 \r\n 2006          144           22.724        28.5          16.46         11.176 \r\n 2006          145           9.363         23.98         17.76         5.08 \r\n 2006          146           21.351        26.91         15.4          0 \r\n 2006          147           12.58         29.09         17.49         3.81 \r\n 2006          148           26.779        32.78         20.17         0 \r\n 2006          149           19.603        30.14         20.5          0 \r\n 2006          150           12.638        24.39         17.25         10.16 \r\n 2006          151           26.613        28.52         16.37         0 \r\n 2006          152           24.544        28.06         15.85         0 \r\n 2006          153           27.395        30.68         15.18         0 \r\n 2006          154           26.33         30.84         16.15         0 \r\n 2006          155           25.925        26.86         17.71         0 \r\n 2006          156           22.349        27.62         15.09         0 \r\n 2006          157           28.334        31.29         18.73         0 \r\n 2006          158           26.668        31.5          18.01         0 \r\n 2006          159           21.851        30.67         17.03         0 \r\n 2006          160           21.702        26.04         17.5          0.254 \r\n 2006          161           10.263        18.21         11.51         0.254 \r\n 2006          162           9.061         16.73         11.64         0 \r\n 2006          163           27.101        24.22         7.86          0 \r\n 2006          164           27.991        28.95         12.12         0 \r\n 2006          165           16.527        28.24         15.85         0 \r\n 2006          166           10.066        29.52         19            0 \r\n 2006          167           26.444        32.65         21.71         0 \r\n 2006          168           20.844        28.49         20.35         0 \r\n 2006          169           24.456        31.61         18.79         0 \r\n 2006          170           28.992        29.07         14.76         0 \r\n 2006          171           12.398        28.56         16.54         2.794 \r\n 2006          172           19.343        29.19         19.18         1.524 \r\n 2006          173           24.146        28.11         17.05         0 \r\n 2006          174           26.228        29.22         15.41         0 \r\n 2006          175           13.471        26.52         15.91         1.778 \r\n 2006          176           17.709        21.53         15.18         4.064 \r\n 2006          177           28.312        25.54         13.02         0 \r\n 2006          178           25.639        26.75         14.14         0 \r\n 2006          179           27.342        27.37         12.32         0 \r\n 2006          180           27.194        29.25         12.71         0 \r\n 2006          181           13.417        28.22         18.54         2.794 \r\n 2006          182           17.147        32.48         18.16         2.032 \r\n 2006          183           1.792         28.13         20.54         10.922 \r\n 2006          184           18.612        30.19         18.79         3.302 \r\n 2006          185           27.666        25.72         15.5          0 \r\n 2006          186           28.305        25.54         13.5          0 \r\n 2006          187           26.696        26.95         14.29         0 \r\n 2006          188           23.187        26.87         13.57         0 \r\n 2006          189           12.011        25.44         16.55         0 \r\n 2006          190           27.996        31.81         16.14         0 \r\n 2006          191           8.093         23.53         18            3.302 \r\n 2006          192           14.347        26.82         19.78         19.05 \r\n 2006          193           12.222        26.16         19.95         7.112 \r\n 2006          194           19.657        31.73         18.59         3.302 \r\n 2006          195           26.892        30.47         16.85         2.54 \r\n 2006          196           27.254        32.56         20.21         1.778 \r\n 2006          197           27.835        34.04         20.45         0.762 \r\n 2006          198           25.221        33.32         20.54         0.508 \r\n 2006          199           28.157        31.14         15.29         0 \r\n 2006          200           22.774        33.01         20.07         0 \r\n 2006          201           24.063        29.77         19.04         0 \r\n 2006          202           15.464        25.13         17.67         1.778 \r\n 2006          203           26.459        27.9          15            0 \r\n 2006          204           26.78         30.46         16.08         0 \r\n 2006          205           20.617        29.58         19.29         3.556 \r\n 2006          206           17.886        30.95         19.23         2.032 \r\n 2006          207           26.13         30.45         20.06         11.938 \r\n 2006          208           17.852        30.46         20.58         3.048 \r\n 2006          209           25.816        32.1          19.67         1.524 \r\n 2006          210           25.272        33.17         21.52         1.016 \r\n 2006          211           25.773        34.33         22.02         0.254 \r\n 2006          212           26.112        34.52         23.05         0 \r\n 2006          213           11.322        31.64         22.18         4.572 \r\n 2006          214           12.52         28.13         20.16         1.016 \r\n 2006          215           26.596        28.36         18.16         0 \r\n 2006          216           26.314        29.05         15.45         0 \r\n 2006          217           19.66         28.58         18.21         3.556 \r\n 2006          218           21.905        30.66         18.99         4.064 \r\n 2006          219           13.934        26.33         18.89         0 \r\n 2006          220           8.688         23.33         17.49         0 \r\n 2006          221           18.85         30.03         18.84         4.826 \r\n 2006          222           17.311        28.44         19.47         12.7 \r\n 2006          223           17.669        25.96         19.6          12.7 \r\n 2006          224           18.365        26.87         18            1.016 \r\n 2006          225           7.852         26.05         18.11         1.27 \r\n 2006          226           25.552        25.81         15.32         1.016 \r\n 2006          227           24.46         28.07         15.07         1.016 \r\n 2006          228           20.163        27.36         15.91         1.016 \r\n 2006          229           9.184         27.04         18.6          1.27 \r\n 2006          230           13.418        27.92         20.51         1.27 \r\n 2006          231           9.291         22.41         15.61         1.27 \r\n 2006          232           22.749        25.93         13.71         1.016 \r\n 2006          233           22.65         28.7          14.37         1.524 \r\n 2006          234           22.121        29.61         16.83         0.508 \r\n 2006          235           22.969        30.47         17.06         0 \r\n 2006          236           21.823        31.67         18.92         0 \r\n 2006          237           6.537         23.63         19.81         0 \r\n 2006          238           11.18         25.19         17.32         0 \r\n 2006          239           14.558        26.44         14.88         5.842 \r\n 2006          240           5.542         18.99         15.3          15.494 \r\n 2006          241           21.307        25.84         16.27         2.54 \r\n 2006          242           21.872        26.53         13.7          1.016 \r\n 2006          243           22.662        25.31         13.77         1.016 \r\n 2006          244           17.59         25.32         12.16         1.016 \r\n 2006          245           9.033         24.36         13.68         1.524 \r\n 2006          246           16.372        22.75         10.95         12.7 \r\n 2006          247           19.399        21.47         10.44         1.27 \r\n 2006          248           20.884        26.52         11.94         1.524 \r\n 2006          249           20.178        27.91         14.21         1.778 \r\n 2006          250           19.863        27.5          12.76         2.032 \r\n 2006          251           21.006        29.02         12.8          1.016 \r\n 2006          252           7.221         20.66         13.18         0 \r\n 2006          253           1.58          16.43         13.25         25.4 \r\n 2006          254           3.62          15.8          12.66         5.588 \r\n 2006          255           7.062         17.36         11.52         0 \r\n 2006          256           21.216        24.59         9.59          0 \r\n 2006          257           20.132        25.78         9.63          0 \r\n 2006          258           19.375        27.36         11.98         0 \r\n 2006          259           18.233        29.46         15.64         18.288 \r\n 2006          260           16.162        20.2          7.9           16.51 \r\n 2006          261           9.391         13.58         6.535         0 \r\n 2006          262           12.533        13.8          3.901         0 \r\n 2006          263           19.8          16.82         1.105         0 \r\n 2006          264           2.676         16.51         10.16         11.43 \r\n 2006          265           9.966         21.68         11.34         0.508 \r\n 2006          266           7.606         16.4          8.88          0 \r\n 2006          267           18.905        19.8          8.68          0 \r\n 2006          268           17.707        23.62         6.987         0 \r\n 2006          269           18.436        25.39         8.05          0 \r\n 2006          270           12.123        17.22         9.28          0 \r\n 2006          271           13.781        14.41         4.014         0 \r\n 2006          272           16.392        21.85         6.074         0.254 \r\n 2006          273           15.927        24.33         8.28          0.254 \r\n 2006          274           16.256        30.28         8.56          0 \r\n 2006          275           14.382        29.27         17.84         0 \r\n 2006          276           16.188        31.3          16.59         0 \r\n 2006          277           7.706         23.67         12.51         0 \r\n 2006          278           16.127        19.29         9.1           0 \r\n 2006          279           16.045        20.12         5.549         0 \r\n 2006          280           15.873        24.43         8.94          0 \r\n 2006          281           11.508        22.73         10.53         0 \r\n 2006          282           8.96          15.49         7.93          0 \r\n 2006          283           3.393         10.06         7.11          1.27 \r\n 2006          284           7.418         8.13         -0.656         7.87 \r\n 2006          285           12.934        6.247        -3.597         0 \r\n 2006          286           16.189        11.04        -2.274         0 \r\n 2006          287           15.95         11.08        -2.635         0 \r\n 2006          288           5.315         14.52         3.376         4.57 \r\n 2006          289           2.677         12.97         10.28         14.22 \r\n 2006          290           3.799         16.12         7.47          3.05 \r\n 2006          291           3.336         7.53          2.4           9.14 \r\n 2006          292           12.055        7.76         -0.523         0 \r\n 2006          293           4.193         11.35         1.019         0 \r\n 2006          294           2.452         5.814         0.045         9.14 \r\n 2006          295           10.017        4.917        -2.492         0 \r\n 2006          296           9.505         4.869        -5.808         0 \r\n 2006          297           12.969        8.96         -5.682         0 \r\n 2006          298           10.769        11.51        -1.127         0 \r\n 2006          299           2.063         6.92          4.499         13.97 \r\n 2006          300           11.151        12.87         4.46          0 \r\n 2006          301           5.677         12.15         0.178         0 \r\n 2006          302           12.73         18.07        -1.052         0 \r\n 2006          303           9.082         20.77        -0.287         0 \r\n 2006          304           12.582        3.726        -6.47          0 \r\n 2006          305           11.287        5.576        -8.02          0 \r\n 2006          306           12.411        2.597        -8.93          0 \r\n 2006          307           11.3          10.67        -8.1           0 \r\n 2006          308           9.544         14.87         1.946         0 \r\n 2006          309           11.139        16.37        -1.895         0 \r\n 2006          310           1.846         10.76         2.239         0 \r\n 2006          311           9.269         18.58         4.489         0 \r\n 2006          312           10.685        26.49         7.64          0 \r\n 2006          313           10.603        14.06         3.709         0 \r\n 2006          314           2.463         4.062        -3.283         2.03 \r\n 2006          315           11.243        1.156        -8.75          0 \r\n 2006          316           5.503         8.42         -3.426         0 \r\n 2006          317           10.27         9.94          0.631         8.89 \r\n 2006          318           4.44          6.887         1.294         0 \r\n 2006          319           3.408         3.88          0.091         0 \r\n 2006          320           5.053         3.168        -2.778         0 \r\n 2006          321           9.81          6.111        -2.778         0 \r\n 2006          322           5.006         4.441        -3.673         0 \r\n 2006          323           9.797         4.705        -5.983         0 \r\n 2006          324           9.193         10.08        -7.11          0 \r\n 2006          325           9.42          12.93        -0.182         0 \r\n 2006          326           7.904         16.03        -0.721         0 \r\n 2006          327           7.966         16.588       -0.854         0 \r\n 2006          328           7.441         13.701        1.297         0 \r\n 2006          329           5.668         11.989        0.395         0 \r\n 2006          330           2.473         12.57         3.489         2.03 \r\n 2006          331           1.057         11.009        3.747         1.27 \r\n 2006          332           3.639         16.111        1.118         21.34 \r\n 2006          333           1.143         1.123        -9.167         4.06 \r\n 2006          334           6.816        -7.301        -13.042        0 \r\n 2006          335           9.343        -1.448        -13.704        0 \r\n 2006          336           8.996        -4.547        -12.464        0 \r\n 2006          337           9.669        -8.012        -14.584        0 \r\n 2006          338           8.775         2.143        -12.446        0 \r\n 2006          339           6.697         8.111        -10.921        0 \r\n 2006          340           5.044         3.921        -13.277        0 \r\n 2006          341           9.498        -8.431        -17.398        0 \r\n 2006          342           8.251         2.328        -14.427        0 \r\n 2006          343           9.298         10.699       -5.037         0 \r\n 2006          344           8.377         10.276        0.628         0 \r\n 2006          345           1.365         9.209        -0.314         0 \r\n 2006          346           1.173         7.596        -2.963         10.16 \r\n 2006          347           9.041         10.487       -4.261         0 \r\n 2006          348           7.29          12.601        2.842         0 \r\n 2006          349           6.931         5.451        -3.104         0 \r\n 2006          350           3.883         11.19         1.978         0 \r\n 2006          351           3.829         3.893        -2.109         0 \r\n 2006          352           7.109         2.972        -6.448         0 \r\n 2006          353           8.631         6.495        -8.692         0 \r\n 2006          354           0.885         3.573        -2.318         10.16 \r\n 2006          355           4.13          8.011         2.669         14.73 \r\n 2006          356           1.523         3.387         0.129         4.32 \r\n 2006          357           7.143         3.791        -3.152         0 \r\n 2006          358           7.223         6.058        -5.081         0 \r\n 2006          359           6.564         1.453        -5.647         0 \r\n 2006          360           8.526         5.032        -8.214         0 \r\n 2006          361           4.169         5.737        -1.557         0 \r\n 2006          362           5.763         7.686         0.247         0 \r\n 2006          363           5.041         10.507        3.649         0 \r\n 2006          364           1.081         9.817         5.391         1.02 \r\n 2006          365           1.508         9.556        -3.508         27.43 \r\n 2007          1             8.826         0.042        -6.517         2.03 \r\n 2007          2             8.348         1.926        -7.557         0 \r\n 2007          3             8.695         7.636        -2.282         0 \r\n 2007          4             4.532         9.42          1.033         0 \r\n 2007          5             3.302         4.159        -0.777         0 \r\n 2007          6             8.928         5.324        -4.142         0 \r\n 2007          7             3.158         1.98         -4.896         0 \r\n 2007          8             6.621         6.373        -5.476         0 \r\n 2007          9             8.198         1.444        -7.658         0 \r\n 2007          10            8.725         9.059        -7.972         0 \r\n 2007          11            3.172         7.352        -8.119         0 \r\n 2007          12            5.075        -8.094        -14.932        0 \r\n 2007          13            2.494        -9.889        -15.847        1.27 \r\n 2007          14            1.706        -6.438        -9.997         1.52 \r\n 2007          15            8.32         -8.678        -21.463        2.29 \r\n 2007          16            10.232       -13.138       -25.276        0 \r\n 2007          17            9.543        -6.372        -18.59         0 \r\n 2007          18            6.988        -2.473        -9.799         0 \r\n 2007          19            10.146       -1.987        -13.94         0 \r\n 2007          20            7.448        -3.497        -16.373        0 \r\n 2007          21            6.95         -2.706        -8.569         7.11 \r\n 2007          22            6.584        -4.822        -11.767        0 \r\n 2007          23            6.755        -1.639        -13.246        0 \r\n 2007          24            5.75         -0.887        -7.314         0 \r\n 2007          25            7.467        -3.689        -9.424         0 \r\n 2007          26            11.182        4.691        -5.583         0 \r\n 2007          27            10.06        -3.832        -16.901        0 \r\n 2007          28            11.468       -11.216       -20.781        0 \r\n 2007          29            9.005        -2.436        -16.226        0 \r\n 2007          30            11.832       -13.193       -20.501        0 \r\n 2007          31            6.956        -5.968        -20.936        0 \r\n 2007          32            12.058       -8.231        -19.637        0 \r\n 2007          33            12.45        -11.511       -22.147        0 \r\n 2007          34            12.607       -14.268       -23.572        0 \r\n 2007          35            12.574       -16.22        -23.843        0 \r\n 2007          36            9.152        -14.538       -22.524        0 \r\n 2007          37            9.151        -9.466        -17.271        2.29 \r\n 2007          38            7.321        -12.38        -18.229        0 \r\n 2007          39            9.124        -10.918       -17.943        0 \r\n 2007          40            11.6         -10.463       -17.201        0 \r\n 2007          41            12.452       -9.078        -21.453        0 \r\n 2007          42            7.945         0.744        -9.371         0 \r\n 2007          43            4.255        -1.086        -6.771         0 \r\n 2007          44            10.568       -6.746        -17.029        1.78 \r\n 2007          45            13.671       -13.318       -22.621        0 \r\n 2007          46            14.645       -14.302       -23.543        0 \r\n 2007          47            9.903        -3.765        -22.182        0 \r\n 2007          48            11.444       -4.093        -10.784        2.29 \r\n 2007          49            13.685        0.433        -12.177        0 \r\n 2007          50            11.9          5.363        -1.992         0 \r\n 2007          51            14.425        6.579        -2.481         0 \r\n 2007          52            14.778        9.736        -1.438         0 \r\n 2007          53            15.118        4.494        -3.648         0 \r\n 2007          54            7.888         3.566        -1.938         0 \r\n 2007          55            1.059         2.351        -1.602         18.03 \r\n 2007          56            8.593         0.162        -4.281         20.57 \r\n 2007          57            13.55        -1.178        -6.685         0 \r\n 2007          58            15.53         0.938        -5.682         0 \r\n 2007          59            3.863         0.601        -3.44          0 \r\n 2007          60            4.408         2.196        -4.412         18.29 \r\n 2007          61            12.109       -3.844        -8.53          9.91 \r\n 2007          62            17.242       -7.311        -14.096        0 \r\n 2007          63            17.688        1.293        -16.534        0 \r\n 2007          64            16.952       -0.652        -11.312        0 \r\n 2007          65            14.576        1.755        -12.301        0 \r\n 2007          66            9.196        -0.417        -5.518         0 \r\n 2007          67            17.684        6.386        -5.168         0 \r\n 2007          68            10.518        7.026        -0.776         2.29 \r\n 2007          69            17.356        10.173       -3.739         0 \r\n 2007          70            17.192        11.118       -1.516         0 \r\n 2007          71            14.733        14.694        3.091         0 \r\n 2007          72            17.615        19.78         6.148         0 \r\n 2007          73            9.356         10.719        1.045         0 \r\n 2007          74            12.808        7.982        -1.968         0 \r\n 2007          75            17.038        3.352        -4.481         0 \r\n 2007          76            14.872        5.687        -2.95          1.27 \r\n 2007          77            13.616        9.527        -3.28          0 \r\n 2007          78            18.86         11.017       -0.145         0 \r\n 2007          79            12.598        12.002       -2.461         0 \r\n 2007          80            4.768         20.005        6.189         2.29 \r\n 2007          81            17.464        14.688        2.139         0.25 \r\n 2007          82            12.998        18.39         5.503         0 \r\n 2007          83            5.246         19.764        11.409        14.73 \r\n 2007          84            19.27         24.676        13.144        0 \r\n 2007          85            16.443        24.707        12.172        0 \r\n 2007          86            10.592        18.964        10.306        0 \r\n 2007          87            6.948         17.923        10.782        10.92 \r\n 2007          88            4.254         15.921        10.812        0.51 \r\n 2007          89            7.958         20.62         11.543        2.29 \r\n 2007          90            5.351         18.31         5.89          18.03 \r\n 2007          91            6.272         12.55         3.543         0.762 \r\n 2007          92            13.967        14.29         2.907         0 \r\n 2007          93            7.846         11.14        -5.966         5.08 \r\n 2007          94            15.25         1.34         -8.04          0 \r\n 2007          95            23.318        2.457        -7.4           0 \r\n 2007          96            18.246       -1.082        -8.47          0 \r\n 2007          97            23.679        2.6          -9.86          0 \r\n 2007          98            22.98         5.715        -7.77          0 \r\n 2007          99            23.763        8.52         -5.857         0 \r\n 2007          100           4.263         9.36          0.205         25.476 \r\n 2007          101           6.775         2.301        -1.281         0 \r\n 2007          102           22.712        5.892        -1.396         0 \r\n 2007          103           17.74         9.59         -1.891         0 \r\n 2007          104           18.365        11.47         0.735         0 \r\n 2007          105           25.048        17.94         0.517         0 \r\n 2007          106           25.06         24.09         3.24          0 \r\n 2007          107           21.814        22.39         6.866         0 \r\n 2007          108           24.936        17.87         3.806         0 \r\n 2007          109           22.92         15.91         2.424         0 \r\n 2007          110           21.487        22.8          7.04          0.508 \r\n 2007          111           24.591        27.09         10.19         0 \r\n 2007          112           10.201        23.66         9.93          10.922 \r\n 2007          113           22.868        19.57         10.79         0 \r\n 2007          114           2.312         11.97         9.19          51.054 \r\n 2007          115           1.609         10.23         6.094         37.846 \r\n 2007          116           9.247         12.4          5.652         0 \r\n 2007          117           22.958        21.19         6.761         0 \r\n 2007          118           26.3          23.97         9.26          0 \r\n 2007          119           25.894        31.35         10.19         0 \r\n 2007          120           26.019        31.65         14.26         0 \r\n 2007          121           25.314        23.8          11.6          0 \r\n 2007          122           25.586        22.41         7.61          0 \r\n 2007          123           3.247         15.02         11.63         3.81 \r\n 2007          124           6.46          16.4          12.87         4.318 \r\n 2007          125           6.584         22.18         15.12         0 \r\n 2007          126           3.901         17.84         11.83         25.4 \r\n 2007          127           15.17         23.38         15.45         12.7 \r\n 2007          128           20.448        23.37         11.88         0 \r\n 2007          129           23.759        26.67         11.5          0 \r\n 2007          130           24.487        29.05         13.99         0 \r\n 2007          131           27.53         28.46         14.56         0 \r\n 2007          132           21.53         26.66         13.35         0 \r\n 2007          133           26.955        29.9          14.98         0 \r\n 2007          134           25.246        32.39         18.87         0 \r\n 2007          135           10.642        18.97         10.26         1.016 \r\n 2007          136           23.588        20.83         7.14          0 \r\n 2007          137           28.996        19.5          4.956         0 \r\n 2007          138           27.01         24.32         6.456         0 \r\n 2007          139           27.238        28.54         12.62         0 \r\n 2007          140           25.734        28.45         14.93         0 \r\n 2007          141           25.059        28.02         15.27         0 \r\n 2007          142           14.373        25.69         16.09         0 \r\n 2007          143           12.366        27.68         16.84         36.322 \r\n 2007          144           10.995        18.07         10.66         37.846 \r\n 2007          145           28.768        20.32         8.65          0 \r\n 2007          146           14.617        22.17         11.91         5.588 \r\n 2007          147           28.23         21.21         8.78          0 \r\n 2007          148           21.265        26.61         15.41         0 \r\n 2007          149           17.548        27.93         18.21         3.048 \r\n 2007          150           12.191        23.94         15.8          16.256 \r\n 2007          151           26.209        24.32         12.38         0 \r\n 2007          152           13.396        24.19         15.54         9.652 \r\n 2007          153           25.548        23.96         13.94         0 \r\n 2007          154           18.432        23.31         14.4          0 \r\n 2007          155           26.471        26.29         14.89         0 \r\n 2007          156           29.742        23.52         12.96         0 \r\n 2007          157           17.333        28.94         12.26         9.906 \r\n 2007          158           25.231        30.43         15.84         0 \r\n 2007          159           29.251        22.56         12.03         0 \r\n 2007          160           29.393        27.4          10.6          0 \r\n 2007          161           24.391        28.63         14.98         0 \r\n 2007          162           24.682        28.61         17.23         0 \r\n 2007          163           28.535        30.39         18.78         0 \r\n 2007          164           28.803        30.21         17.74         0 \r\n 2007          165           27.525        30.85         16.59         0 \r\n 2007          166           27.118        31.58         18.02         0 \r\n 2007          167           21.357        31.71         19.67         0 \r\n 2007          168           24.85         32.05         20.1          0 \r\n 2007          169           11.761        26.97         17.42         9.398 \r\n 2007          170           23.354        25.99         13.71         0 \r\n 2007          171           29.272        30.42         13.67         0 \r\n 2007          172           20.818        32.21         19.43         0.762 \r\n 2007          173           5.559         23.74         18.65         16.51 \r\n 2007          174           12.838        22.51         16.8          0 \r\n 2007          175           7.636         22.08         15.3          0 \r\n 2007          176           24.665        29.77         16.2          0 \r\n 2007          177           27.346        32.15         21.49         0 \r\n 2007          178           25.192        28            18.19         0 \r\n 2007          179           24.195        24.46         14.3          0 \r\n 2007          180           19.334        24.43         14.9          0 \r\n 2007          181           28.894        25.39         13.74         0 \r\n 2007          182           28.38         26.64         13.52         0 \r\n 2007          183           27.53         28.42         15.37         0 \r\n 2007          184           23.453        31.76         20.57         0 \r\n 2007          185           28.813        31.2          19.03         0 \r\n 2007          186           28.547        31.09         19.55         0 \r\n 2007          187           27.476        32.84         19.72         0 \r\n 2007          188           28.029        33.99         20            0 \r\n 2007          189           28.502        34.66         21.75         0 \r\n 2007          190           16.528        29.07         20.95         5.842 \r\n 2007          191           26.408        27.73         17.21         0 \r\n 2007          192           25.379        25.18         13.58         0 \r\n 2007          193           25.251        26.87         11.97         0 \r\n 2007          194           28.591        26.37         12.17         0 \r\n 2007          195           25.94         30.01         17.14         0 \r\n 2007          196           26.319        29.49         16.85         0 \r\n 2007          197           25.759        31.89         19.19         2.794 \r\n 2007          198           22.941        34.41         20.77         0 \r\n 2007          199           17.365        32.59         20.6          6.604 \r\n 2007          200           24.865        28.56         16.62         17.526 \r\n 2007          201           27.268        25.37         13.28         0 \r\n 2007          202           28.197        25.93         14.39         0 \r\n 2007          203           24.193        28.66         16.16         0 \r\n 2007          204           24.329        28.29         17.9          16.764 \r\n 2007          205           25.887        28.89         18.22         0 \r\n 2007          206           25.064        30.5          18.08         0 \r\n 2007          207           23.638        32.06         18.58         17.272 \r\n 2007          208           19.252        28.23         20.67         0 \r\n 2007          209           20.05         28.33         19.07         0 \r\n 2007          210           24.811        28.61         17.04         0 \r\n 2007          211           22.482        29            19.27         0 \r\n 2007          212           26.253        29.17         15.82         0 \r\n 2007          213           24.548        30.89         17.78         0 \r\n 2007          214           22.625        29.41         17.4          0 \r\n 2007          215           22.761        28.82         15.66         0 \r\n 2007          216           13.39         28.77         18.36         6.858 \r\n 2007          217           13.567        28.58         21.56         13.462 \r\n 2007          218           7.951         28.38         21.19         2.286 \r\n 2007          219           16.411        30.26         20.41         0.508 \r\n 2007          220           9.927         25.89         19.98         0.762 \r\n 2007          221           24.782        30.66         20.54         0 \r\n 2007          222           23.648        32.04         20.27         0 \r\n 2007          223           23.551        32.99         21.8          0 \r\n 2007          224           21.62         31.04         22.13         0.254 \r\n 2007          225           21.513        31.6          20.86         3.048 \r\n 2007          226           16.334        30.57         21.99         2.032 \r\n 2007          227           11.989        29.9          22.31         0.508 \r\n 2007          228           14.474        26.96         17.7          3.048 \r\n 2007          229           20.73         26.21         15.69         4.318 \r\n 2007          230           20.885        29.23         15.58         5.842 \r\n 2007          231           15.662        29.97         20.32         46.736 \r\n 2007          232           14.341        28.962        19.632        29.87 \r\n 2007          233           22.091        31.724        19.714        6.706 \r\n 2007          234           9.753         29.002        18.431        11.811 \r\n 2007          235           13.087        27.97         18.29         3.048 \r\n 2007          236           10.312        24.64         18.24         2.54 \r\n 2007          237           23.002        26.08         13.88         0 \r\n 2007          238           22.861        27.24         15.35         0 \r\n 2007          239           21.762        32.14         20.08         0 \r\n 2007          240           21.524        32.96         19.73         21.082 \r\n 2007          241           14.387        24.79         14.89         4.064 \r\n 2007          242           23.658        25.52         12.36         0 \r\n 2007          243           22.945        26.41         13.14         0 \r\n 2007          244           23.233        26.61         13.82         0 \r\n 2007          245           22.57         29.58         12.53         0 \r\n 2007          246           22.233        31.27         16.54         0 \r\n 2007          247           21.448        31.58         15.89         0 \r\n 2007          248           19.766        29.26         18.99         0 \r\n 2007          249           9.22          27.63         19.39         10.16 \r\n 2007          250           16.14         25.29         15.87         1.016 \r\n 2007          251           21.719        26.646        13.12         0 \r\n 2007          252           15.578        22.467        13.488        0 \r\n 2007          253           5.284         16.307        9.2           6.121 \r\n 2007          254           21.805        20.838        8.071         0 \r\n 2007          255           21.364        21.669        5.922         0 \r\n 2007          256           18.899        26.338        8.849         0 \r\n 2007          257           20.866        15.167        4.901         0 \r\n 2007          258           17.962        16.282        2.354         0 \r\n 2007          259           19.157        24.289        8.708         0 \r\n 2007          260           17.048        31.369        17.694        0 \r\n 2007          261           6.592         26.482        15.096        15.113 \r\n 2007          262           17.681        24.222        12.748        0 \r\n 2007          263           16.619        28.952        12.787        0 \r\n 2007          264           15.54         25.01         13.8          0 \r\n 2007          265           19.638        21.076        11.29         0 \r\n 2007          266           16.344        24.569        14.808        0 \r\n 2007          267           11.195        24.263        18.294        0 \r\n 2007          268           6.905         17.013        12.429        0 \r\n 2007          269           17.742        18.991        8.629         0 \r\n 2007          270           15.107        20.778        11.818        0 \r\n 2007          271           17.729        20.203        8.94          2.972 \r\n 2007          272           11.551        22.003        15.674        0 \r\n 2007          273           7.5           22.139        16.847        0 \r\n 2007          274           14.655        24.12         17.028        2.54 \r\n 2007          275           3.864         18.294        13.648        28.7 \r\n 2007          276           17.485        19.965        11.167        0 \r\n 2007          277           13.042        21.895        12.883        0 \r\n 2007          278           12.278        23.857        18.179        3.56 \r\n 2007          279           13.844        24.649        18.563        0 \r\n 2007          280           7.221         21.38         19.085        0 \r\n 2007          281           13.642        17.391        11.525        27.94 \r\n 2007          282           16.294        20.017        8.876         0 \r\n 2007          283           12.423        11.661        4.633         0 \r\n 2007          284           12.469        13.869        2.453         0 \r\n 2007          285           11.506        18.415        7.216         0 \r\n 2007          286           2.743         14.688        12.716        6.1 \r\n 2007          287           2.223         14.434        13.121        27.94 \r\n 2007          288           3.135         15.424        13.012        16.76 \r\n 2007          289           3.784         14.026        11.266        1.52 \r\n 2007          290           3.441         13.938        10.871        9.65 \r\n 2007          291           3.412         15.259        13.043        8.64 \r\n 2007          292           9.79          14.493        9.669         3.56 \r\n 2007          293           13.935        17.122        8.051         0 \r\n 2007          294           7.031         15.781        11.446        0 \r\n 2007          295           5.692         12.232        1.666         0 \r\n 2007          296           13.813        19.441       -0.01          0 \r\n 2007          297           13.756        14.661        0.594         0 \r\n 2007          298           13.634        14.754       -0.564         0 \r\n 2007          299           4.836         12.109        5.519         0 \r\n 2007          300           12.97         14.114        2.212         0.25 \r\n 2007          301           12.878        13.684       -1.673         0 \r\n 2007          302           12.339        15.642        6.033         0 \r\n 2007          303           9.393         15.711        9.406         0 \r\n 2007          304           11.161        14.773        1.614         0 \r\n 2007          305           12.325        13.383       -2.339         0 \r\n 2007          306           11.167        13.371        0.333         0 \r\n 2007          307           8.729         10.523       -1.645         0 \r\n 2007          308           10.514        12.756        0.94          0 \r\n 2007          309           10.754        12.187       -1.578         0 \r\n 2007          310           11.649        9.329        -5.841         0 \r\n 2007          311           8.849         7.273        -7.215         0 \r\n 2007          312           7.259         8.215        -1.219         0 \r\n 2007          313           10.611        10.232       -3.161         0 \r\n 2007          314           5.627         8.576        -0.861         0 \r\n 2007          315           5.141         13.005        7.418         0 \r\n 2007          316           6.778         12.513       -0.497         0 \r\n 2007          317           7.164         14.468       -3.646         0 \r\n 2007          318           6.723         8.542         2.626         0 \r\n 2007          319           10.231        9.018        -4.317         0 \r\n 2007          320           9.661         10.548        0.083         0 \r\n 2007          321           7.938         10.244        1.641         0 \r\n 2007          322           3.362         6.222         1.523         2.54 \r\n 2007          323           8.226         11.073        3.162         0 \r\n 2007          324           1.237         7.019         0.478         1.02 \r\n 2007          325           2.215         3.936        -5.921         0.76 \r\n 2007          326           3.696         2.291        -8.755         0 \r\n 2007          327           9.22          0.748        -12.205        0 \r\n 2007          328           5.419         0.189        -5.457         0 \r\n 2007          329           9.243         2.338        -4.972         0 \r\n 2007          330           8.638         3.674        -4.999         0 \r\n 2007          331           7.046         0.388        -8.87          0 \r\n 2007          332           5.28          0.021        -8.431         0 \r\n 2007          333           7.185        -0.149        -9.37          0 \r\n 2007          334           8.032        -0.281        -11.109        0 \r\n 2007          335           0.092         6.117        -7.069         29.97 \r\n 2007          336           5.06          0.884        -10.345        0.76 \r\n 2007          337           7.863         1.335        -10.233        0 \r\n 2007          338           4.201         3.262        -5.676         0 \r\n 2007          339           9.115         2.156        -10.165        0 \r\n 2007          340           2.471        -3.828        -11.418        3.56 \r\n 2007          341           6.232        -3.267        -9.689         1.02 \r\n 2007          342           2.798        -8.894        -12.783        1.02 \r\n 2007          343           3.167        -9.811        -12.238        0.25 \r\n 2007          344           5.646        -4.107        -11.924        0 \r\n 2007          345           3.29         -2.861        -7.221         10.67 \r\n 2007          346           4.927        -4.269        -9.07          0 \r\n 2007          347           7.579        -0.378        -8.023         0 \r\n 2007          348           7.578        -6.224        -12.536        0 \r\n 2007          349           5.455        -8.31         -13.97         0 \r\n 2007          350           5.873        -7.08         -13.63         0 \r\n 2007          351           7.869        -1.994        -14.93         0 \r\n 2007          352           8.024        -1.043        -8.47          0 \r\n 2007          353           7.182        -0.961        -11.79         0 \r\n 2007          354           7.753         1.262        -3.719         0 \r\n 2007          355           3.495         2.083        -1.12          0 \r\n 2007          356           2.368         1.941        -11.13         0 \r\n 2007          357           7.168        -4.271        -13.87         0 \r\n 2007          358           3.036        -4.27         -8.39          0 \r\n 2007          359           8.294         3.934        -8.4           0 \r\n 2007          360           4.154        -1.822        -7.07          0.25 \r\n 2007          361           2.794        -3.995        -7.32          0 \r\n 2007          362           5.972        -3.59         -8.79          1.78 \r\n 2007          363           6.945        -4.662        -11.53         0 \r\n 2007          364           5.771        -4.754        -14.46         0 \r\n 2007          365           5.478        -7.47         -15.46         0 \r\n 2008          1             7.192        -9.59         -16.42         0 \r\n 2008          2             8.71         -9.96         -18.16         0 \r\n 2008          3             8.707        -1.104        -15.8          0 \r\n 2008          4             5.835        -0.082        -6.297         0 \r\n 2008          5             7.504         3.685        -3.95          0 \r\n 2008          6             5.904         4.51         -0.252         0 \r\n 2008          7             5.496         4.933        -2.88          0.51 \r\n 2008          8             2.728         1.318        -3.586         0 \r\n 2008          9             4.434         0.749        -6.229         0 \r\n 2008          10            1.883         0.06         -2.444         0 \r\n 2008          11            6.943        -0.179        -6.482         0 \r\n 2008          12            3.723        -3.037        -9.77          0.51 \r\n 2008          13            7.468        -2.93         -10.77         0 \r\n 2008          14            9.345        -5.356        -14.85         0 \r\n 2008          15            9.273        -6.045        -16.44         0 \r\n 2008          16            3.462        -2.795        -10.2          0 \r\n 2008          17            9.184        -10.2         -20.38         1.52 \r\n 2008          18            8.516        -10.29        -19.99         0 \r\n 2008          19            10.36        -16.31        -23.46         0 \r\n 2008          20            7.396        -12.05        -23.21         0 \r\n 2008          21            5.013        -8.81         -13.74         2.03 \r\n 2008          22            10.7         -9.57         -22.16         4.06 \r\n 2008          23            7.383        -11.81        -23.04         0.76 \r\n 2008          24            11.002       -13.1         -27.12         0 \r\n 2008          25            4.747        -4.774        -20.94         0 \r\n 2008          26            10.128       -1.284        -13.72         0 \r\n 2008          27            10.404        4.395        -10.42         0 \r\n 2008          28            6.888         7.11          2.413         0 \r\n 2008          29            3.038         4.32         -18.88         0 \r\n 2008          30            6.098        -13.34        -19.96         0 \r\n 2008          31            7.671        -4.984        -14.37         0 \r\n 2008          32            6.535        -1.302        -12.22         0 \r\n 2008          33            4.688        -1.037        -6.287         0 \r\n 2008          34            3.298        -0.969        -5.772         0.51 \r\n 2008          35            2.964         1.24         -3.138         1.52 \r\n 2008          36            2.575        -0.1          -6.638         1.78 \r\n 2008          37            7.755        -4.734        -8.37          1.27 \r\n 2008          38            8.732        -5.289        -9.73          0 \r\n 2008          39            12.072        0.389        -8.88          0 \r\n 2008          40            9.22         -1.216        -15.29         0 \r\n 2008          41            10.784       -15.25        -20.55         0 \r\n 2008          42            5.067        -14.8         -18.09         1.02 \r\n 2008          43            12.73        -11.35        -21.4          1.27 \r\n 2008          44            9.712        -4.729        -22.56         0 \r\n 2008          45            3.963        -1.382        -16.61         0 \r\n 2008          46            13.852       -8.18         -19.02         0 \r\n 2008          47            13.867        0.793        -13.63         0 \r\n 2008          48            5.455         0.532        -7.13          1.78 \r\n 2008          49            13.137       -7.17         -16.45         0 \r\n 2008          50            10.69        -5.833        -20.16         0 \r\n 2008          51            15.101       -15.13        -25.68         0 \r\n 2008          52            6.148        -9.26         -18.79         0 \r\n 2008          53            14.691       -4.223        -14.2          0 \r\n 2008          54            14.679       -0.16         -13.33         0 \r\n 2008          55            11.766        4.428        -7.14          0 \r\n 2008          56            1.026         0.949        -4.428         6.1 \r\n 2008          57            12.324       -4.226        -9.99          1.52 \r\n 2008          58            15.997       -4.287        -11.18         0 \r\n 2008          59            6.92          0.74         -9.09          1.27 \r\n 2008          60            16.844        3.762        -2.076         0 \r\n 2008          61            13.386        3.421        -3.778         0 \r\n 2008          62            8.826         13           -2.201         0.25 \r\n 2008          63            14.817       -2.199        -10.05         9.91 \r\n 2008          64            14.323       -2.496        -9.59          0 \r\n 2008          65            7.53         -1.831        -10.01         0 \r\n 2008          66            14.329       -1.749        -11.43         0 \r\n 2008          67            17.407       -6.619        -14.86         0 \r\n 2008          68            15.58        -3.365        -15.92         0 \r\n 2008          69            16.032       -0.556        -6.824         0 \r\n 2008          70            18.164        0.974        -9.4           0 \r\n 2008          71            15.658        10.12        -3.48          0 \r\n 2008          72            13.714        13.57         0.703         0 \r\n 2008          73            18.566        13.58         0.617         0 \r\n 2008          74            15.713        8.04         -0.326         0 \r\n 2008          75            6.457         0.785        -1.621         0 \r\n 2008          76            11.376        4.093        -1.099         0 \r\n 2008          77            1.902         2.28         -0.29          5.33 \r\n 2008          78            4.841         5.382         1.015         1.78 \r\n 2008          79            17.226        10.41        -1.072         0 \r\n 2008          80            16.635        12.53         0.119         0 \r\n 2008          81            7.42          6.232        -0.205         0 \r\n 2008          82            7.255         4.222        -0.921         0 \r\n 2008          83            7.455        -0.223        -4.221         0 \r\n 2008          84            19.017        8.54         -5.994         0 \r\n 2008          85            20.502        11.48        -1.665         0 \r\n 2008          86            10.751        10.23        -2.987         0 \r\n 2008          87            8.616         2.11         -3.568         10.16 \r\n 2008          88            22.498        4.121        -7.71          0 \r\n 2008          89            18.172        8.56         -2.017         0 \r\n 2008          90            4.118         8.53          3.429         0 \r\n 2008          91            1.578         5.182         0.533         43.18 \r\n 2008          92            12.057        6.786        -1.24          0 \r\n 2008          93            19.026        10.73        -2.832         0 \r\n 2008          94            2.765         4.541         0.75          7.112 \r\n 2008          95            20.537        14.97        -1.128         0 \r\n 2008          96            21.817        17.15         3.722         0 \r\n 2008          97            9.897         15.99         0.958         0 \r\n 2008          98            13.583        12           -0.27          0 \r\n 2008          99            5.511         5.687         1.214         0.254 \r\n 2008          100           13.937        9.96         -1.205         0 \r\n 2008          101           2.169         10.82         2.944         20.574 \r\n 2008          102           6.258         9.02          0.126         2.54 \r\n 2008          103           6.056         0.533        -1.063         1.016 \r\n 2008          104           23.835        7.34         -1.318         0 \r\n 2008          105           25.347        11.82        -2.616         0 \r\n 2008          106           24.703        19.15         1.686         0 \r\n 2008          107           22.623        24.39         9.62          0 \r\n 2008          108           1.828         9.62          4.938         21.336 \r\n 2008          109           2.948         9.06          4.967         7.112 \r\n 2008          110           6.619         11.21         5.208         0 \r\n 2008          111           17.511        18.63         8.15          0 \r\n 2008          112           12.466        22.23         7.82          0.508 \r\n 2008          113           23.95         21.23         5.547         11.684 \r\n 2008          114           25.401        23.69         8.3           0 \r\n 2008          115           10.989        22.24         14.02         9.144 \r\n 2008          116           6.801         17.32         0.968         28.448 \r\n 2008          117           24.504        12.11         0.346         0 \r\n 2008          118           22.049        12.39         1.269         0 \r\n 2008          119           20.885        6.685        -1.875         0 \r\n 2008          120           17.635        11.79        -2.306         0 \r\n 2008          121           20.776        19.87         2.018         0 \r\n 2008          122           13.043        23.95         11.54         0 \r\n 2008          123           7.876         18.62         4.744         12.446 \r\n 2008          124           27.173        13.87         4.109         0.254 \r\n 2008          125           26.427        21.4          2.102         0 \r\n 2008          126           26.436        24.72         6.409         0 \r\n 2008          127           23.494        27.14         10.53         42.672 \r\n 2008          128           15.264        17.54         9.68          0.762 \r\n 2008          129           25.934        18.69         6.457         0 \r\n 2008          130           18.966        18.64         10.11         0 \r\n 2008          131           7.308         16.11         9.5           6.858 \r\n 2008          132           25.272        15.2          4.349         0.254 \r\n 2008          133           26.67         20.38         5.292         0 \r\n 2008          134           5.442         17.53         8.14          0 \r\n 2008          135           26.517        19.08         4.874         0 \r\n 2008          136           28.213        21.67         7.21          0 \r\n 2008          137           26.88         24.59         7.68          0 \r\n 2008          138           26.598        27.42         13.64         0 \r\n 2008          139           28.47         20.07         9.01          0 \r\n 2008          140           22.468        23.24         10.14         1.016 \r\n 2008          141           24.429        19.74         7.65          0 \r\n 2008          142           29.212        22.48         5.147         0 \r\n 2008          143           7.494         16.48         10.78         0 \r\n 2008          144           11.482        15.62         10.18         25.4 \r\n 2008          145           12.717        18.34         9.03          1.016 \r\n 2008          146           17.551        29.93         14.37         1.27 \r\n 2008          147           22.682        26.24         14.8          0 \r\n 2008          148           6.612         16.28         7.68          10.668 \r\n 2008          149           15.211        17.59         8.41          0 \r\n 2008          150           4.899         19.06         11.28         48.26 \r\n 2008          151           23.218        25.58         15.6          30.226 \r\n 2008          152           27.712        26.79         13.39         0 \r\n 2008          153           27.246        28.24         14.79         0 \r\n 2008          154           15.008        24.94         16.85         12.954 \r\n 2008          155           11.123        21.33         14.49         41.402 \r\n 2008          156           8.953         21.81         15.98         2.032 \r\n 2008          157           16.606        27.79         17.39         25.654 \r\n 2008          158           22.076        23.61         17.78         2.54 \r\n 2008          159           18.925        30.29         16.76         0 \r\n 2008          160           3.781         24.66         17.61         26.924 \r\n 2008          161           22.907        24.53         14.69         5.588 \r\n 2008          162           27.813        27.76         12.61         0.254 \r\n 2008          163           14.815        27.77         16.84         55.118 \r\n 2008          164           21.089        25.95         15.43         6.096 \r\n 2008          165           28.198        24.67         14.35         0 \r\n 2008          166           27.071        29.57         13.36         0 \r\n 2008          167           20.425        27.54         16.17         0.254 \r\n 2008          168           29.855        23.39         13.03         0 \r\n 2008          169           29.642        25.73         13.53         0 \r\n 2008          170           27.617        27.98         14.6          0 \r\n 2008          171           21.097        28.43         15.71         0 \r\n 2008          172           25.423        30.11         14.07         0 \r\n 2008          173           24.374        28.28         15.92         6.604 \r\n 2008          174           28.351        27            15.37         0 \r\n 2008          175           26.794        27.77         13.98         0 \r\n 2008          176           14.059        25.75         17.49         0 \r\n 2008          177           20.844        31.23         16.41         0 \r\n 2008          178           5.86          22.79         16.68         50.546 \r\n 2008          179           20.391        28.64         17.84         1.778 \r\n 2008          180           19.114        22.54         13.8          0.508 \r\n 2008          181           27.07         26.11         15.8          0 \r\n 2008          182           29.881        26.94         14.66         0 \r\n 2008          183           28.317        28.74         14.14         0 \r\n 2008          184           20.625        30.2          19.31         0 \r\n 2008          185           20.829        25.7          13.81         0 \r\n 2008          186           21.997        26.08         13.88         0 \r\n 2008          187           27.801        27.03         14.66         0 \r\n 2008          188           21.49         31.23         19.51         0.254 \r\n 2008          189           21.316        33.23         20.21         12.954 \r\n 2008          190           17.363        28.34         19.5          4.826 \r\n 2008          191           22.076        28.32         17.78         0 \r\n 2008          192           22.253        30.21         19.88         4.318 \r\n 2008          193           27.403        30.7          21.52         9.652 \r\n 2008          194           20.623        24.27         14.31         0.508 \r\n 2008          195           29.159        27            12.54         0 \r\n 2008          196           28.129        31.1          14.27         0 \r\n 2008          197           26.628        32.22         18.77         0 \r\n 2008          198           13.994        27.55         20.45         0 \r\n 2008          199           20.235        31.39         19.02         36.83 \r\n 2008          200           15.175        26.07         19.08         0.254 \r\n 2008          201           20.397        27.85         17.57         29.718 \r\n 2008          202           25.752        31.43         18.77         0 \r\n 2008          203           21.234        27.5          17.79         25.908 \r\n 2008          204           27.766        27.65         17.19         0.254 \r\n 2008          205           23.208        25.63         16.37         1.27 \r\n 2008          206           4.846         20.37         15.92         18.796 \r\n 2008          207           10.004        26.68         18.99         0 \r\n 2008          208           22.472        28.5          18.13         0 \r\n 2008          209           16.147        29.43         16.93         40.386 \r\n 2008          210           22.51         29.03         19.33         0.254 \r\n 2008          211           16.497        30.09         20.29         14.732 \r\n 2008          212           25.107        29.59         18.64         0 \r\n 2008          213           23.705        30.28         19.29         0.254 \r\n 2008          214           25.938        28.6          18.43         0 \r\n 2008          215           25.991        27.86         15.92         0 \r\n 2008          216           24.36         34.79         20.75         0 \r\n 2008          217           19.088        32.09         22.5          1.27 \r\n 2008          218           15.654        27.05         15.08         0 \r\n 2008          219           13.542        25.42         14.68         0 \r\n 2008          220           25.741        27.59         17.24         0 \r\n 2008          221           24.524        27.37         14.71         0 \r\n 2008          222           23.895        29.06         17.35         0 \r\n 2008          223           25.306        25.9          16.7          0 \r\n 2008          224           20.899        24.67         13.56         0 \r\n 2008          225           9.62          22.13         15.91         12.446 \r\n 2008          226           22.038        28.33         14.31         3.556 \r\n 2008          227           22.841        27.5          15.72         4.826 \r\n 2008          228           21.962        25.13         14.77         0.254 \r\n 2008          229           24.028        26.43         14.04         0 \r\n 2008          230           23.853        27.05         15.11         0 \r\n 2008          231           22.291        28.8          14.53         0.254 \r\n 2008          232           23.604        29.48         15.5          0 \r\n 2008          233           21.437        27.11         16.29         0 \r\n 2008          234           3.905         21.54         18.15         0.254 \r\n 2008          235           21.061        29.91         19.29         0 \r\n 2008          236           23.443        24.78         15.48         0 \r\n 2008          237           23.255        24.34         12.38         0 \r\n 2008          238           23.126        24.91         11.81         0 \r\n 2008          239           21.028        24.31         12.07         0 \r\n 2008          240           9.191         24.77         14.13         5.588 \r\n 2008          241           19.905        28.06         16.25         16.764 \r\n 2008          242           23.488        27.27         11.37         0 \r\n 2008          243           22.441        28.3          13.22         0 \r\n 2008          244           22.849        28.56         13.85         0 \r\n 2008          245           19.539        30.44         17.2          0 \r\n 2008          246           14.891        27.73         14.44         0 \r\n 2008          247           14.999        18.77         10.46         0 \r\n 2008          248           11.43         18.97         9.88          0 \r\n 2008          249           12.031        21.34         8.24          0.762 \r\n 2008          250           12.426        18.96         9.01          0.254 \r\n 2008          251           17.309        21.28         9.14          0 \r\n 2008          252           6.29          15.24         7.24          3.302 \r\n 2008          253           21.322        20.24         5.892         0.254 \r\n 2008          254           13.987        22.14         11.22         2.794 \r\n 2008          255           4.315         24.06         15.92         20.32 \r\n 2008          256           2.354         19.66         16.75         12.954 \r\n 2008          257           8.132         23.76         14.74         1.016 \r\n 2008          258           8.684         16.38         11.16         0 \r\n 2008          259           20.283        19.64         6.896         0 \r\n 2008          260           20.313        26.87         8.34          0 \r\n 2008          261           19.629        29.06         11.01         0 \r\n 2008          262           19.137        26.48         13.91         0 \r\n 2008          263           18.63         26.03         12.5          0 \r\n 2008          264           18.102        26.78         11.84         0 \r\n 2008          265           16.298        24.99         11.66         0 \r\n 2008          266           4.751         22.66         14.64         1.016 \r\n 2008          267           13.541        27.6          16.36         11.176 \r\n 2008          268           11.981        26.89         14.71         0.254 \r\n 2008          269           16.997        26.18         12.34         0 \r\n 2008          270           17.61         27.5          14.08         0 \r\n 2008          271           15.62         26.39         12.89         0 \r\n 2008          272           7.324         21.27         11.49         0 \r\n 2008          273           16.197        20.24         8.66          12.446 \r\n 2008          274           17.576        19.02         5.553         0 \r\n 2008          275           16.075        16.17         6.026         0 \r\n 2008          276           17.286        20.28         2.956         0 \r\n 2008          277           16.678        19.27         7.48          0 \r\n 2008          278           15.875        21.13         4.778         0 \r\n 2008          279           13.558        25.24         13.13         0 \r\n 2008          280           10.412        24.79         15.32         0 \r\n 2008          281           2.424         17.03         7.09          33.53 \r\n 2008          282           16.262        21.93         5.207         0 \r\n 2008          283           16.293        20.05         7.62          0 \r\n 2008          284           15.818        23.31         8.26          0 \r\n 2008          285           14.279        25.56         11.37         0 \r\n 2008          286           8.357         24.22         16.27         0 \r\n 2008          287           2.199         19.58         6.974         7.11 \r\n 2008          288           6.158         13            3.295         0.25 \r\n 2008          289           9.733         14.17         3.24          14.48 \r\n 2008          290           14.919        14.3          1.141         0 \r\n 2008          291           1.914         9.04          5.955         1.78 \r\n 2008          292           12.798        13.5          2.109         0 \r\n 2008          293           12.826        22.31         6.888         0 \r\n 2008          294           14.04         16.46         2.616         0 \r\n 2008          295           5.221         10.21        -0.325         0 \r\n 2008          296           3.001         9.65          5.5           14.48 \r\n 2008          297           2.589         9.03          4.445         11.68 \r\n 2008          298           4.115         8.39          1.579         5.84 \r\n 2008          299           13.281        17.54         1.62          0 \r\n 2008          300           12.897        10            1.431         2.54 \r\n 2008          301           7.255         4.741        -3.39          0 \r\n 2008          302           12.903        10.07        -5.305         0 \r\n 2008          303           12.677        17.06         0.147         0 \r\n 2008          304           12.142        22.12         1.565         0 \r\n 2008          305           11.313        23.57         6.693         0 \r\n 2008          306           10.666        19.41         4.579         0 \r\n 2008          307           9.099         24.29         8.93          0 \r\n 2008          308           11.192        24.33         10.61         0 \r\n 2008          309           10.567        22.18         13.04         0 \r\n 2008          310           3.998         18.4          12.15         5.59 \r\n 2008          311           5.127         12.53         2.953         26.67 \r\n 2008          312           2.91          2.962        -0.287         1.78 \r\n 2008          313           2.9           0.28         -2.853         0.25 \r\n 2008          314           4.781        -1.884        -6.255         0 \r\n 2008          315           6.705         0.053        -7.33          0 \r\n 2008          316           0.736         4.589        -0.07          8.38 \r\n 2008          317           3.01          5.82          2.034         4.57 \r\n 2008          318           3.945         11.32         2.499         2.03 \r\n 2008          319           2.528         7.57         -0.412         6.35 \r\n 2008          320           6.191         2.366        -3.658         1.27 \r\n 2008          321           6.781         5.603        -4.279         0 \r\n 2008          322           8.687         2.025        -6.323         0 \r\n 2008          323           7.485         0.703        -8.5           0 \r\n 2008          324           8.927         8.26         -4.033         0 \r\n 2008          325           7.868        -1.027        -10.65         0 \r\n 2008          326           8.477        -3.594        -14.22         0 \r\n 2008          327           3.065        -0.946        -5.212         2.29 \r\n 2008          328           8.526         8.93         -9.7           0 \r\n 2008          329           9.531         6.375        -3.139         0 \r\n 2008          330           9.155         2.538        -6.97          0 \r\n 2008          331           9.014         7.55         -5.618         0 \r\n 2008          332           8.402         6.676        -5.472         0 \r\n 2008          333           9.381         8.47         -4.635         0 \r\n 2008          334           2.63          2.452        -5.018         1.27 \r\n 2008          335           5.247        -0.563        -4.646         5.08 \r\n 2008          336           6.909        -3.681        -10.99         0 \r\n 2008          337           8.613         4.056        -12.25         0 \r\n 2008          338           6.604         0.808        -10.49         0.51 \r\n 2008          339           6.391        -6.095        -13.24         0 \r\n 2008          340           7.214         0.514        -13.08         0 \r\n 2008          341           8.5           1.809        -13.12         0 \r\n 2008          342           4.547        -4.966        -12.81         0 \r\n 2008          343           1.856        -1.149        -8.4           0 \r\n 2008          344           3.504        -1.498        -14.03         4.32 \r\n 2008          345           4.425        -4.27         -15.8          0 \r\n 2008          346           5.503         1.07         -6.586         0 \r\n 2008          347           6.418         0.132        -12.35         0 \r\n 2008          348           7.513         7.58         -1.041         0 \r\n 2008          349           2.446         8.25         -18.67         0 \r\n 2008          350           8.122        -15.95        -21.07         0 \r\n 2008          351           2.714        -14.18        -20.06         3.05 \r\n 2008          352           5.254        -11.59        -19.95         0 \r\n 2008          353           6.219        -7.29         -17.84         0 \r\n 2008          354           7.152        -5.313        -10.13         22.1 \r\n 2008          355           4.932        -5.146        -21.44         0.76 \r\n 2008          356           7.461        -19.45        -22.38         0 \r\n 2008          357           7.673        -11.9         -25.78         0 \r\n 2008          358           4.975        -1.454        -11.91         2.54 \r\n 2008          359           7.921        -8.31         -19.74         1.27 \r\n 2008          360           4.696        -1.296        -20.52         0 \r\n 2008          361           3.368         10.42        -1.485         0 \r\n 2008          362           2.953         8.3          -7.53          0.25 \r\n 2008          363           8.255         1.724        -8.35          0 \r\n 2008          364           8.206         3.573        -5.269         0 \r\n 2008          365           6.396         2.688        -12.33         0 \r\n 2008          366           8.669        -7.52         -17.64         0 \r\n 2009          1             4.772         1.232        -8.32          0 \r\n 2009          2             6.992        -1.03         -10.41         0 \r\n 2009          3             1.082        -1.166        -7.06          0 \r\n 2009          4             8.454        -6.047        -15.54         0.76 \r\n 2009          5             9.021        -0.1          -13.81         0 \r\n 2009          6             7.535         0.202        -11.01         0 \r\n 2009          7             6.091        -4.915        -13.27         0 \r\n 2009          8             7.891        -5.298        -15.22         0 \r\n 2009          9             3.868        -3.844        -8.73          0 \r\n 2009          10            8.198        -8.71         -18.48         12.95 \r\n 2009          11            6.604        -3.483        -11.19         1.02 \r\n 2009          12            4.559         0.581        -18.15         3.3 \r\n 2009          13            7.712        -14.85        -23.77         1.27 \r\n 2009          14            9.451        -14.13        -26.8          4.06 \r\n 2009          15            10.07        -22.68        -31.43         0 \r\n 2009          16            6.625        -10.26        -29.84         0 \r\n 2009          17            4.322        -0.934        -11.25         0 \r\n 2009          18            7.245        -0.6          -6.299         0 \r\n 2009          19            6.078        -5.967        -13.26         0 \r\n 2009          20            8.501        -5.825        -13.38         0 \r\n 2009          21            10.183       -1.72         -12.16         0 \r\n 2009          22            10.159        6.674        -9.7           0 \r\n 2009          23            7.641        -1.324        -18.85         0 \r\n 2009          24            10.443       -14.52        -22.6          0 \r\n 2009          25            9.679        -11.13        -17.59         1.52 \r\n 2009          26            7.198        -10.83        -16.82         0 \r\n 2009          27            6.428        -10.16        -21.12         0.51 \r\n 2009          28            9.207        -6.275        -24.5          0 \r\n 2009          29            9.216        -3.602        -11.57         0 \r\n 2009          30            10.715       -4.384        -17.17         0 \r\n 2009          31            11.148        5.652        -8.04          0 \r\n 2009          32            10.522        2.226        -4.265         0 \r\n 2009          33            11.278       -2.26         -18.68         0 \r\n 2009          34            12.025       -11.94        -19.87         0 \r\n 2009          35            11.856       -7.93         -19.76         0 \r\n 2009          36            11.953        5.082        -11.22         0 \r\n 2009          37            10.699        9.2          -5.147         0 \r\n 2009          38            11.998        9.07         -1.141         0 \r\n 2009          39            11.429        2.635        -4.845         0 \r\n 2009          40            4.756         13.21         0.24          2.54 \r\n 2009          41            12.87         13.38         3.553         0.51 \r\n 2009          42            3.71          3.543        -0.157         0 \r\n 2009          43            13.251        5.987        -1.39          0 \r\n 2009          44            1.996         0.207        -6.706         0.25 \r\n 2009          45            13.995       -0.182        -10.83         1.52 \r\n 2009          46            14.06        -0.871        -10.1          0 \r\n 2009          47            13.527        1.039        -8.94          0 \r\n 2009          48            6.199         4.752        -4.655         0 \r\n 2009          49            5.799         1.375        -12.13         0.51 \r\n 2009          50            14.688       -4.067        -14.72         0 \r\n 2009          51            9.781         1.014        -9.68          0 \r\n 2009          52            11.523       -4.522        -11.84         0 \r\n 2009          53            14.996       -3.82         -14.8          0 \r\n 2009          54            13.448       -1.567        -13.98         0 \r\n 2009          55            14.428        10.59        -4.552         0 \r\n 2009          56            14.556        11.68        -1.015         0 \r\n 2009          57            2.757         3.162        -5.669         1.52 \r\n 2009          58            12.305       -3.343        -9.19          0 \r\n 2009          59            15.218       -2.714        -9.81          0 \r\n 2009          60            16.442       -4.778        -15.24         0 \r\n 2009          61            15.208       -1.54         -9.9           0 \r\n 2009          62            10.375        1.562        -7.39          0 \r\n 2009          63            16.129        11.81        -5.852         0 \r\n 2009          64            16.389        20.26         1.441         0 \r\n 2009          65            15.859        14.25         0.079         0 \r\n 2009          66            1.831         4.132         0.59          19.3 \r\n 2009          67            3.49          2.063         0.136         25.15 \r\n 2009          68            2.816         3.191        -0.3           0 \r\n 2009          69            2.539         2.507        -12.07         8.13 \r\n 2009          70            18.174       -6.944        -14.22         0 \r\n 2009          71            17.771       -3.041        -14.27         0 \r\n 2009          72            14.593        5.69         -4.351         0 \r\n 2009          73            19.25         10           -3.535         0 \r\n 2009          74            18.087        15.11        -0.756         0 \r\n 2009          75            18.701        20.37         1.157         0 \r\n 2009          76            18.549        18.78         3.95          0 \r\n 2009          77            13.302        13.7          1.536         0 \r\n 2009          78            17.717        10.52        -2.074         0 \r\n 2009          79            9.44          12.67         0.083         0 \r\n 2009          80            19.522        19.59         1.204         0 \r\n 2009          81            15.54         17.89         5.985         0 \r\n 2009          82            6.421         18.05         8.6           21.59 \r\n 2009          83            8.241         12.28         0.357         27.94 \r\n 2009          84            11.231        9.56         -0.525         0 \r\n 2009          85            12.82         6.989        -2.11          0 \r\n 2009          86            18.84         0.371        -5.742         0 \r\n 2009          87            6.341         1.563        -1.932         0 \r\n 2009          88            22.236        8.37         -3.462         0 \r\n 2009          89            20.887        13.26         0.224         0 \r\n 2009          90            5.681         9.04         -0.354         1.27 \r\n 2009          91            21.357        11.12        -1.867         0 \r\n 2009          92            15.164        9.29         -1.93          0 \r\n 2009          93            22.609        12.65        -3.367         0 \r\n 2009          94            12.724        13.72         2.905         17.17 \r\n 2009          95            10.987        4.57         -1.573         0 \r\n 2009          96            22.848        2.72         -4.035         0 \r\n 2009          97            24.154        6.668        -5             0 \r\n 2009          98            23.314        12.8         -1.044         0 \r\n 2009          99            12.832        10.42        -0.917         0 \r\n 2009          100           21.507        12.41         0.514         0 \r\n 2009          101           23.522        14.82        -0.067         0 \r\n 2009          102           16.352        12.02         1.925         0 \r\n 2009          103           9.788         7.778         3.43          4.648 \r\n 2009          104           24.274        16.46         1.488         0 \r\n 2009          105           23.426        18.889        0.761         0 \r\n 2009          106           17.991        19.26         7.49          0 \r\n 2009          107           23.929        21.18         5.907         0 \r\n 2009          108           8.973         18.385        11.004        2.819 \r\n 2009          109           12.41         13.663        4.24          0 \r\n 2009          110           14.513        11.303        2.059         0 \r\n 2009          111           24.732        16.24         1.845         0 \r\n 2009          112           25.936        21.833        5.263         0 \r\n 2009          113           21.446        24.345        13.422        0 \r\n 2009          114           24.559        28.544        12.808        2.642 \r\n 2009          115           8.667         15.148        8.788         6.909 \r\n 2009          116           7.919         20.718        10.95         50.444 \r\n 2009          117           11.742        12.347        5.171         4.293 \r\n 2009          118           20.632        14.12         3.512         0 \r\n 2009          119           4.952         14.267        9.014         6.096 \r\n 2009          120           9.169         17.908        9.391         0 \r\n 2009          121           18.397        15.412        5.943         0 \r\n 2009          122           25.559        18.567        4.957         0 \r\n 2009          123           24.092        21.323        6.631         0 \r\n 2009          124           15.592        21.274        9.592         0 \r\n 2009          125           20.179        23.236        10.444        5.944 \r\n 2009          126           10.95         20.051        12.495        4.064 \r\n 2009          127           15.174        22.147        10.276        2.591 \r\n 2009          128           17.744        23.172        8.901         8.992 \r\n 2009          129           25.188        17.117        5.551         0 \r\n 2009          130           20.187        15.792        5.916         0 \r\n 2009          131           26.946        19.622        3.209         0 \r\n 2009          132           14.078        21.598        9.713         8.255 \r\n 2009          133           11.207        22.733        9.084         6.401 \r\n 2009          134           23.942        18.58         4.913         2.921 \r\n 2009          135           4.367         16.735        8.862         19.609 \r\n 2009          136           28.69         15.393        4.223         0 \r\n 2009          137           13.943        15.592        3.462         0 \r\n 2009          138           26.699        25.287        8.662         0 \r\n 2009          139           27.613        30.414        12.944        0 \r\n 2009          140           27.482        29.113        15.377        0 \r\n 2009          141           20.834        24.964        13.853        0 \r\n 2009          142           18.254        24.613        13.187        0 \r\n 2009          143           16.226        26.272        15.869        7.62 \r\n 2009          144           24.21         25.253        14.279        0 \r\n 2009          145           17.314        22.756        13.994        0 \r\n 2009          146           7.959         18.121        12.992        20.244 \r\n 2009          147           8.965         15.624        11            9.576 \r\n 2009          148           21.324        23.092        10.004        0 \r\n 2009          149           24.659        25.301        12.264        0 \r\n 2009          150           27.08         25.781        12.313        0 \r\n 2009          151           22.969        27.269        8.568         0 \r\n 2009          152           17.671        25.853        16.403        2.616 \r\n 2009          153           14.129        21.151        12.984        15.189 \r\n 2009          154           30.369        21.652        10.847        0 \r\n 2009          155           29.122        24.21         11.582        0 \r\n 2009          156           29.168        26.543        11.795        0 \r\n 2009          157           10.218        24.949        13.534        11.074 \r\n 2009          158           17.572        24.231        15.732        6.934 \r\n 2009          159           13.836        20.038        12.283        9.5 \r\n 2009          160           17.955        19.633        9.803         0 \r\n 2009          161           16.989        22.322        13.838        0 \r\n 2009          162           21.426        23.912        14.661        0 \r\n 2009          163           13.322        23.899        14.365        3.581 \r\n 2009          164           15.737        23.16         13.358        0 \r\n 2009          165           18.061        24.034        12.424        0 \r\n 2009          166           13.223        24.61         15.536        0 \r\n 2009          167           8.431         23.87         16.94         0 \r\n 2009          168           26.233        31.28         15.7          0 \r\n 2009          169           20.825        32.07         17.54         0.508 \r\n 2009          170           14.188        27.99         19.38         0.254 \r\n 2009          171           25.545        29.28         17.37         0 \r\n 2009          172           18.595        30.99         20.62         0.254 \r\n 2009          173           29.016        33.66         20.75         0 \r\n 2009          174           16.944        34.92         19.23         0 \r\n 2009          175           20.56         29.06         18.38         0 \r\n 2009          176           26.854        31.98         21.92         0 \r\n 2009          177           16.667        29.47         20.72         0 \r\n 2009          178           20.556        29.86         19.24         0 \r\n 2009          179           29.627        27.17         14.48         0 \r\n 2009          180           29.631        27.64         14.63         0 \r\n 2009          181           23.695        24.28         14.26         0 \r\n 2009          182           22.175        25.95         14.51         0 \r\n 2009          183           30.137        27.92         13.74         0 \r\n 2009          184           13.384        26.92         15.12         0 \r\n 2009          185           4.917         20.37         16.34         25.91 \r\n 2009          186           10.021        26.89         15.16         0.51 \r\n 2009          187           10.444        28.64         16.43         0 \r\n 2009          188           10.617        28.82         17            3.56 \r\n 2009          189           18.796        25.02         16.19         10.92 \r\n 2009          190           9.409         24.82         15.08         4.83 \r\n 2009          191           21.18         28.95         16.95         9.4 \r\n 2009          192           25.152        26.11         18.12         0 \r\n 2009          193           15            24.68         16.22         1.52 \r\n 2009          194           27.514        27.24         15.57         0 \r\n 2009          195           18.668        27.75         19.75         0 \r\n 2009          196           26.107        25.69         17.59         1.02 \r\n 2009          197           20.696        22.89         11.85         0 \r\n 2009          198           18.559        19.19         11.28         0 \r\n 2009          199           15.957        22.36         13.99         0 \r\n 2009          200           26.409        23.59         13.15         0 \r\n 2009          201           21.875        26.03         12.68         0 \r\n 2009          202           15.668        23.73         15.25         8.64 \r\n 2009          203           25.997        27.57         12.8          0 \r\n 2009          204           24.604        28.16         15.4          0 \r\n 2009          205           26.116        30.73         15.29         0 \r\n 2009          206           24.865        26.54         15.75         0 \r\n 2009          207           26.065        27.08         15.11         0 \r\n 2009          208           22.266        28.99         15.82         0 \r\n 2009          209           24.415        25.24         16.37         0 \r\n 2009          210           23.752        25.14         11.8          0 \r\n 2009          211           23.382        23.25         14.09         3.56 \r\n 2009          212           26.026        26.31         12.07         0 \r\n 2009          213           25.58         22.71         12.37         0 \r\n 2009          214           25.93         29.23         11.06         0 \r\n 2009          215           24.358        28.84         17.97         6.86 \r\n 2009          216           22.439        27            14.96         0 \r\n 2009          217           19.305        25.29         12.69         0 \r\n 2009          218           19.359        25.43         14.44         0 \r\n 2009          219           10.049        28.91         18.1          6.6 \r\n 2009          220           22.173        32.7          21.29         9.14 \r\n 2009          221           8.554         25.84         19.19         9.4 \r\n 2009          222           20.49         27.99         18.57         9.14 \r\n 2009          223           24.886        28.34         17.42         0 \r\n 2009          224           20.719        29.684        17.778        0 \r\n 2009          225           19.29         30.25         20.06         0 \r\n 2009          226           22.843        30.45         19.62         0 \r\n 2009          227           10.816        27.56         18.84         2.29 \r\n 2009          228           19.587        25.95         17.97         2.79 \r\n 2009          229           15.791        25.38         16.11         0 \r\n 2009          230           23.678        26.46         13.26         0 \r\n 2009          231           13.623        25.36         15.79         10.16 \r\n 2009          232           19.751        21.667        14.444        13.21 \r\n 2009          233           11.43         16.54         14.11         10.16 \r\n 2009          234           22.849        15.98         12.6          0 \r\n 2009          235           23.668        24.89         12            0 \r\n 2009          236           23.511        27.12         12.37         0 \r\n 2009          237           9.551         26.77         17.55         0 \r\n 2009          238           3.883         21.58         16.64         32.77 \r\n 2009          239           4.363         18.11         15.25         10.41 \r\n 2009          240           16.043        24.74         15.36         0 \r\n 2009          241           23.456        20.36         9.84          0 \r\n 2009          242           13.636        18.79         7.94          0 \r\n 2009          243           20.046        20.34         9.39          0 \r\n 2009          244           20.668        20.98         8.99          0 \r\n 2009          245           22.298        22.89         9.28          0 \r\n 2009          246           21.382        22.778        10            0 \r\n 2009          247           19.201        24.444        10.556        0 \r\n 2009          248           19.833        25            13.889        0 \r\n 2009          249           19.898        25.556        11.667        0 \r\n 2009          250           17.694        24.444        13.333        0 \r\n 2009          251           17            25.556        13.889        0 \r\n 2009          252           18.076        26.667        13.889        0 \r\n 2009          253           16.138        26.667        13.889        0 \r\n 2009          254           16.475        26.111        15            0 \r\n 2009          255           16.873        27.222        17.222        0 \r\n 2009          256           17.843        26.111        13.889        0 \r\n 2009          257           16.203        23.889        12.222        0 \r\n 2009          258           18.795        26.87         9.5           0 \r\n 2009          259           16.353        27.62         13.4          0 \r\n 2009          260           17.964        25.52         12.21         0 \r\n 2009          261           18.186        27.2          11.88         0 \r\n 2009          262           14.039        25.63         12.98         0 \r\n 2009          263           10.6          24.58         12.85         0 \r\n 2009          264           4.729         21.94         13.26         6.6 \r\n 2009          265           15.457        22.48         13.25         0 \r\n 2009          266           10.564        23.37         10.71         0 \r\n 2009          267           7.862         22.222        16.111        1.52 \r\n 2009          268           13.768        22.541        12.488        13.97 \r\n 2009          269           13.511        20.712        11.616        2.29 \r\n 2009          270           17.197        26.298        11.879        0 \r\n 2009          271           16.335        16.853        9.889         0 \r\n 2009          272           18.067        18.329        7.659         0 \r\n 2009          273           17.334        19.827        5.582         0 \r\n 2009          274           1.121         15.667        9.727         19.3 \r\n 2009          275           3.231         11.329        9.233         15.24 \r\n 2009          276           7.382         12.393        6.891         1.78 \r\n 2009          277           15.585        14.086        4.803         0 \r\n 2009          278           10.398        14.983        6.607         0 \r\n 2009          279           5.685         12.919        6.984         3.56 \r\n 2009          280           16.258        19.805        4.277         0 \r\n 2009          281           3.539         11.268        5.106         4.57 \r\n 2009          282           13.295        10.575       -0.661         0 \r\n 2009          283           10.563        3.831        -4.14          0 \r\n 2009          284           5.81          3.878        -4.049         0 \r\n 2009          285           4.126         5.232        -0.568         2.03 \r\n 2009          286           12.007        8.17         -3.205         0 \r\n 2009          287           4.347         7.46          1.866         1.27 \r\n 2009          288           2.866         7.29          4.303         6.6 \r\n 2009          289           5.548         7.61          2.318         1.02 \r\n 2009          290           5.729         7.43         -0.456         0 \r\n 2009          291           13.986        15.88        -1.06          0 \r\n 2009          292           12.177        19.97         4.484         0 \r\n 2009          293           2.548         16.28         10.68         0 \r\n 2009          294           4.879         19.51         6.819         1.02 \r\n 2009          295           1.01          6.838         4.398         48.26 \r\n 2009          296           3.331         5.453         0.186         29.21 \r\n 2009          297           10.091        12.61        -1.96          0.76 \r\n 2009          298           6.919         12.19         3.009         2.54 \r\n 2009          299           8.655         11.35         1.16          0 \r\n 2009          300           13.077        12.56        -1.211         0 \r\n 2009          301           3.618         13.75         6.675         0 \r\n 2009          302           1.267         13.48         9.73          40.89 \r\n 2009          303           4.462         16.2          3.124         6.6 \r\n 2009          304           11.122        9.67          0.751         1.52 \r\n 2009          305           8.812         17.79         2.286         0 \r\n 2009          306           10.091        12.44         0.838         0 \r\n 2009          307           5.736         8.54         -2.675         0 \r\n 2009          308           10.992        10.93        -0.804         0 \r\n 2009          309           10.834        14.9         -2.616         0 \r\n 2009          310           9.309         19.25         4.798         0 \r\n 2009          311           10.951        20.84         7.82          0 \r\n 2009          312           10.223        23.2          5.327         0 \r\n 2009          313           10.061        17.42         5.613         0 \r\n 2009          314           10.344        16.93         2.189         0 \r\n 2009          315           9.923         14.66         1.744         0 \r\n 2009          316           5.482         15.69         1.488         0 \r\n 2009          317           2.564         13.72         6.398         0 \r\n 2009          318           4.445         11.2          2.28          0 \r\n 2009          319           3.917         5.754        -1.542         0 \r\n 2009          320           4.807         8.95          3.275         0 \r\n 2009          321           7.34          10.09         1.204         0 \r\n 2009          322           1.429         6.512         2.925         0 \r\n 2009          323           3.78          7.44          1.335         1.52 \r\n 2009          324           8.247         11.72        -1.913         0 \r\n 2009          325           5.068         10.32        -3.673         0 \r\n 2009          326           2.436         11.02         6.935         0.51 \r\n 2009          327           4.533         12.22         6.703         0 \r\n 2009          328           0.641         8.56          4.727         27.69 \r\n 2009          329           1.701         5.018         0.448         3.56 \r\n 2009          330           4.061         0.828        -3.271         1.02 \r\n 2009          331           7.673         7.27         -3.667         0 \r\n 2009          332           8.474         12.37        -2.159         0 \r\n 2009          333           2.458         3.98          0.129         0 \r\n 2009          334           8.62          9.61         -4.768         0 \r\n 2009          335           7.145         13.49        -0.591         0 \r\n 2009          336           4.898         1.893        -4.616         0 \r\n 2009          337           3.438        -2.244        -8.97          0.25 \r\n 2009          338           3.755        -5.482        -12.1          0.25 \r\n 2009          339           7.578         3.942        -11.06         0 \r\n 2009          340           3.252        -3.558        -7.99          0 \r\n 2009          341           5.857        -5.951        -10.32         0.76 \r\n 2009          342           3.277        -3.165        -8.11          5.59 \r\n 2009          343           5.943        -5.558        -19.01         10.92 \r\n 2009          344           8.682        -11.82        -23.49         0 \r\n 2009          345           8.121        -6.648        -20.09         0 \r\n 2009          346           6.283        -0.146        -13.55         0 \r\n 2009          347           3.931        -0.158        -8.36          0 \r\n 2009          348           4.224        -1.523        -16.76         0.76 \r\n 2009          349           8.679        -14.64        -20.25         0 \r\n 2009          350           8.414        -7.54         -8.08          0 \r\n 2009          351           5.694        -1.111        -8.51          0 \r\n 2009          352           5.773        -2.901        -9.13          0 \r\n 2009          353           3.724        -4.034        -9.57          0 \r\n 2009          354           3.872        -2.057        -7.51          1.02 \r\n 2009          355           3.158        -3.739        -7.57          0 \r\n 2009          356           2.573        -1.11         -3.749         0 \r\n 2009          357           1.309         0.126        -1.31          4.06 \r\n 2009          358           1.611         0.609        -5.198         12.19 \r\n 2009          359           2.929         0.318        -10.3          9.91 \r\n 2009          360           6.358        -8.38         -14.34         0.25 \r\n 2009          361           3.395        -3.383        -14.447        3.05 \r\n 2009          362           5.911        -2.968        -15.23         0 \r\n 2009          363           7.63         -9.59         -19.35         0 \r\n 2009          364           5.484        -0.884        -9.444         0.51 \r\n 2009          365           8.47         -9.12         -18.04         0.25 \r\n 2010          1             7.186        -14.84        -24.54         0 \r\n 2010          2             8.28         -19.13        -29.52         0 \r\n 2010          3             7.37         -15.49        -24.03         0 \r\n 2010          4             8.701        -16.12        -24.51         0 \r\n 2010          5             8.894        -17.92        -19.86         0 \r\n 2010          6             3.619        -11.82        -18.27         3.56 \r\n 2010          7             6.368        -11.25        -19.24         4.83 \r\n 2010          8             7.768        -15.76        -22.72         0 \r\n 2010          9             9.249        -15.556       -24.444        0 \r\n 2010          10            8.627        -6.033        -8.15          0 \r\n 2010          11            8.954         0             0             0 \r\n 2010          12            7.65         -3.268        -13.04         0 \r\n 2010          13            9.476         3.001        -5.147         0 \r\n 2010          14            7.353         1.813        -5.292         0 \r\n 2010          15            4.708        -3.333        -5.556         0 \r\n 2010          16            8.319        -0.789        -7.23          0 \r\n 2010          17            4.227         0.353        -2.956         0 \r\n 2010          18            5.849        -2.747        -8.59          0 \r\n 2010          19            4.733        -3.896        -8.35          0 \r\n 2010          20            2.16         -0.65         -4.658         4.06 \r\n 2010          21            3.449         0.24         -1.244         0.51 \r\n 2010          22            3.693         0.354        -1.263         0 \r\n 2010          23            3.693         0.354        -1.263         6.86 \r\n 2010          24            6.884         1.205        -3.834         1.78 \r\n 2010          25            6.306        -3.806        -12.16         5.59 \r\n 2010          26            10.51        -10.18        -14.63         0.76 \r\n 2010          27            7.24         -5.941        -14.59         0.51 \r\n 2010          28            10.46        -13.889       -18.889        0 \r\n 2010          29            10.395       -9.06         -19.397        0 \r\n 2010          30            9.51         -6.199        -14.377        0 \r\n 2010          31            9.677        -9.444        -15            0 \r\n 2010          32            6.042        -3.023        -8.4           0.51 \r\n 2010          33            10.392       -3.889        -16.754        1.52 \r\n 2010          34            10.274       -1.784        -13.186        0 \r\n 2010          35            6.498         0.156        -3.667         0 \r\n 2010          36            6.493        -0.474        -4.686         2.29 \r\n 2010          37            8.949        -1.422        -7.807         0 \r\n 2010          38            8.511        -3.333        -11.737        2.03 \r\n 2010          39            9.116        -3.073        -22.324        2.79 \r\n 2010          40            10.47        -5            -19.098        1.52 \r\n 2010          41            13.615       -7.778        -17.222        0 \r\n 2010          42            8.67         -3.071        -16.028        0 \r\n 2010          43            7.776        -2.157        -7.34          0 \r\n 2010          44            7.979        -3.707        -8.879         0 \r\n 2010          45            11.026       -6.649        -13.597        2.29 \r\n 2010          46            11.44        -5.872        -10.462        1.02 \r\n 2010          47            14.736       -3.963        -13.151        0 \r\n 2010          48            14.407       -1.985        -14.766        0 \r\n 2010          49            12.711       -2.294        -14.155        0 \r\n 2010          50            7.515        -2.461        -9.711         4.06 \r\n 2010          51            10.953       -3.069        -8.899         1.02 \r\n 2010          52            8.903        -5.054        -12.678        0 \r\n 2010          53            14.417       -5.952        -15.956        0 \r\n 2010          54            13.844       -8.172        -19.617        0 \r\n 2010          55            16.302       -9.166        -22.662        0 \r\n 2010          56            16.424       -2.856        -21.849        0 \r\n 2010          57            13.529       -1.904        -14.996        0 \r\n 2010          58            16.289       -0.979        -14.023        0 \r\n 2010          59            16.192       -1.452        -12.851        0 \r\n 2010          60            16.563        0.183        -13.139        0 \r\n 2010          61            15.653        0.534        -13.367        0 \r\n 2010          62            16.591        2.599        -12.063        0 \r\n 2010          63            16.62         2.893        -10.887        0 \r\n 2010          64            19.662        3.851        -5.258         0 \r\n 2010          65            6.933         2.796        -2.341         3.56 \r\n 2010          66            8.248         4.538         0.34          1.52 \r\n 2010          67            9.446         4.608         0.488         0 \r\n 2010          68            3.885         4.602         1.701         7.11 \r\n 2010          69            8.222         4.545         1.276         7.37 \r\n 2010          70            4.815         4.761         0.95          16.51 \r\n 2010          71            7.76          5.927         0.703         0.25 \r\n 2010          72            3.869         4.227         1.489         0.25 \r\n 2010          73            12.576        9.7           2.243         0 \r\n 2010          74            11.92         11.11         1.177         0 \r\n 2010          75            5.44          5.985         1.073         0 \r\n 2010          76            14.417        13.97         2.128         14.22 \r\n 2010          77            18.293        16.07         1.687         0 \r\n 2010          78            3.287         7.72         -2.737         0 \r\n 2010          79            15.097        3.102        -3.587         4.57 \r\n 2010          80            20.472        8.37         -3.947         0 \r\n 2010          81            19.443        12.34        -1.344         0 \r\n 2010          82            18.421        14.79        -0.891         0 \r\n 2010          83            5.027         9.93          2.565         0 \r\n 2010          84            20.211        8.84         -1.324         0 \r\n 2010          85            18.726        10.89        -3.25          0 \r\n 2010          86            9.912         12.35         1.731         0 \r\n 2010          87            18.212        12.17         1.252         0 \r\n 2010          88            20.119        16.6         -1.106         0 \r\n 2010          89            18.999        24.2          7.07          0 \r\n 2010          90            18.73         25.1          9.54          0 \r\n 2010          91            20.31         29.84         10.84         0 \r\n 2010          92            6.463         19.56         5.679         4.06 \r\n 2010          93            20.618        17.25        -0.535         0 \r\n 2010          94            9.734         16.34         4.969         0 \r\n 2010          95            10.789        18.2          1.403         2.03 \r\n 2010          96            9.508         19.45         7.8           18.03 \r\n 2010          97            3.611         10.42         4.054         2.79 \r\n 2010          98            23.376        12.39         0.517         0 \r\n 2010          99            22.662        21.62         0.432         0 \r\n 2010          100           11.824        15.33         5.008         1.02 \r\n 2010          101           21.653        20.94         5.89          0 \r\n 2010          102           11.192        19.22         9.03          0 \r\n 2010          103           21.078        26.09         10.34         0 \r\n 2010          104           18.893        27.66         13.24         0 \r\n 2010          105           13.777        26.35         12.52         0 \r\n 2010          106           19.579        16.38         5.52          7.11 \r\n 2010          107           25.012        17.36         1.951         0 \r\n 2010          108           21.564        19.41         5.402         0 \r\n 2010          109           19.004        21.14         6.149         0 \r\n 2010          110           20.702        21.42         5.164         0 \r\n 2010          111           15.182        21.31         6.896         0 \r\n 2010          112           21.441        21.99         5.333         0 \r\n 2010          113           2.497         14.32         9.88          14.48 \r\n 2010          114           14.742        20.04         12.25         9.65 \r\n 2010          115           3.292         12.41         8.68          3.05 \r\n 2010          116           5.112         10.86         7.18          11.94 \r\n 2010          117           26.12         16.2          6.08          0.51 \r\n 2010          118           24.873        19.85         4.264         0 \r\n 2010          119           23.531        27.86         12.08         0 \r\n 2010          120           11.855        19.97         12.06         18.29 \r\n 2010          121           24.52         20.34         7.07          0.508 \r\n 2010          122           20.707        22.16         8.55          0 \r\n 2010          123           25.195        19.19         5.568         2.286 \r\n 2010          124           25.524        28.49         8.87          0.508 \r\n 2010          125           27.706        19.25         7.1           0 \r\n 2010          126           16.775        18.08         3.826         6.096 \r\n 2010          127           11.196        12.66         4.789         0 \r\n 2010          128           12.025        10.9          0.876         0 \r\n 2010          129           19.673        14.58         1.349         0 \r\n 2010          130           5.764         11.77         7.14          17.018 \r\n 2010          131           7.912         11.92         7.31          9.144 \r\n 2010          132           3.465         10.1          5.535         34.036 \r\n 2010          133           10.809        13.05         7.07          2.794 \r\n 2010          134           27.234        20.48         4.942         0 \r\n 2010          135           22.747        21.92         8.04          0 \r\n 2010          136           13.961        17.98         11.98         0 \r\n 2010          137           23.341        21.86         12.29         0 \r\n 2010          138           28.38         23.61         9.2           0 \r\n 2010          139           27.62         23.66         10.99         0 \r\n 2010          140           11.61         19.64         11.6          2.286 \r\n 2010          141           9.428         20.54         13.22         0.762 \r\n 2010          142           18.707        29.05         11.73         0.254 \r\n 2010          143           13.377        29.16         21.4          0 \r\n 2010          144           26.822        32.22         20.28         0 \r\n 2010          145           23.92         31.22         18.45         4.826 \r\n 2010          146           23.91         27.82         16.92         0 \r\n 2010          147           29.338        29.12         14.02         0.254 \r\n 2010          148           29.22         29.71         14.78         0 \r\n 2010          149           29.118        29.6          15.74         0 \r\n 2010          150           23.331        31.15         15            2.286 \r\n 2010          151           29.243        27.4          13.63         0.762 \r\n 2010          152           18.958        29.59         14.12         15.24 \r\n 2010          153           19.063        23.25         14.84         0 \r\n 2010          154           27.613        26.09         12.84         1.016 \r\n 2010          155           26.016        29.73         17.7          18.034 \r\n 2010          156           16.204        27.95         13.95         5.08 \r\n 2010          157           29.246        27.01         12.01         0 \r\n 2010          158           5.43          22.78         17.12         0.254 \r\n 2010          159           12.066        26.16         16.66         16.764 \r\n 2010          160           29.701        27.51         15.27         0.254 \r\n 2010          161           6.818         21.9          16.13         21.59 \r\n 2010          162           20.28         29.45         18.29         4.318 \r\n 2010          163           18.105        27.67         18.66         30.988 \r\n 2010          164           6.012         21.24         16.22         21.082 \r\n 2010          165           14.398        26.5          17.98         3.048 \r\n 2010          166           17.999        24.32         15.52         0.254 \r\n 2010          167           28.182        28.48         13.35         0 \r\n 2010          168           24.4          31.74         17.09         10.922 \r\n 2010          169           11.78         26            15.62         11.938 \r\n 2010          170           26.454        27.74         15.57         0.508 \r\n 2010          171           12.805        28            19.62         0.254 \r\n 2010          172           18.369        27.13         18.99         3.81 \r\n 2010          173           26.201        31.98         19.3          2.286 \r\n 2010          174           23.69         27.82         17.19         6.604 \r\n 2010          175           28.568        27.27         16.42         0 \r\n 2010          176           27.782        29.99         17.31         23.114 \r\n 2010          177           25.884        31.76         18.77         44.704 \r\n 2010          178           18.974        26.4          18.85         39.878 \r\n 2010          179           27.595        25.72         16.52         0 \r\n 2010          180           28.724        24.96         14.58         0.254 \r\n 2010          181           28.984        26.64         13.36         0 \r\n 2010          182           28.661        27.89         15.69         0 \r\n 2010          183           28.255        29.06         16.09         0 \r\n 2010          184           24.884        30.91         18.63         0 \r\n 2010          185           4.664         23.86         20.26         24.638 \r\n 2010          186           8.712         24.88         20.15         1.778 \r\n 2010          187           19.106        28.34         19.73         0 \r\n 2010          188           16.269        28.3          19.67         2.286 \r\n 2010          189           23.583        26.56         18.53         0 \r\n 2010          190           29.069        29.75         17.3          0 \r\n 2010          191           28.628        29.12         16.62         0 \r\n 2010          192           19.986        27.05         19.34         3.048 \r\n 2010          193           11.452        24.82         19.01         6.096 \r\n 2010          194           26.978        29.23         18.38         0.254 \r\n 2010          195           23.944        34.04         22.13         2.54 \r\n 2010          196           26.372        28.45         18.81         0 \r\n 2010          197           27.765        30.92         16.57         1.016 \r\n 2010          198           27.913        32.99         19.14         0 \r\n 2010          199           26.709        29.04         17.84         16.002 \r\n 2010          200           12.8          26.15         17.94         13.462 \r\n 2010          201           17.783        28.23         18.87         1.524 \r\n 2010          202           24.318        29.04         19.49         0 \r\n 2010          203           18.146        32.03         20.94         7.112 \r\n 2010          204           13.364        30.98         23.12         12.192 \r\n 2010          205           18.966        26.68         19.46         2.54 \r\n 2010          206           27.739        29.23         17.69         0 \r\n 2010          207           23.488        29.63         19.24         0 \r\n 2010          208           26.447        32.39         21.48         0 \r\n 2010          209           22.641        28.04         18.15         0 \r\n 2010          210           22.022        27.26         16.53         0 \r\n 2010          211           11.742        25.77         19.38         34.544 \r\n 2010          212           23.566        29.82         19.17         0.254 \r\n 2010          213           25.587        30.08         18.85         0 \r\n 2010          214           23.535        31.667        21.111        10.668 \r\n 2010          215           22.398        30.93         21.25         18.034 \r\n 2010          216           17.889        29.96         21.18         11.43 \r\n 2010          217           25.494        26.54         17.58         0 \r\n 2010          218           25.28         28.65         16.1          0.254 \r\n 2010          219           25.013        30.05         18.95         7.62 \r\n 2010          220           23.306        33.33         21.08         69.088 \r\n 2010          221           17.288        29.51         21.04         34.036 \r\n 2010          222           22.79         31.73         20.67         86.868 \r\n 2010          223           25.124        32.82         20.44         4.318 \r\n 2010          224           23.799        33.63         22.67         0.254 \r\n 2010          225           16.894        30.67         23.76         0 \r\n 2010          226           20.796        30.37         20.97         0 \r\n 2010          227           24.989        25.78         16.3          0 \r\n 2010          228           18.799        27.67         14.29         0 \r\n 2010          229           4.966         21.38         16.37         9.906 \r\n 2010          230           22.182        26.95         14.64         0.254 \r\n 2010          231           22.482        29.92         19.26         0 \r\n 2010          232           11.971        26.59         19.27         2.286 \r\n 2010          233           24.24         32.19         20.51         0 \r\n 2010          234           24.472        32.31         20            0 \r\n 2010          235           23.585        30.51         19.26         0.254 \r\n 2010          236           19.604        24.77         14.83         0.254 \r\n 2010          237           23.864        24.8          12.64         0.254 \r\n 2010          238           22.98         27.53         12.06         0 \r\n 2010          239           23.415        29.31         16.77         0 \r\n 2010          240           23.483        30.6          15.28         0 \r\n 2010          241           20.62         32.57         16.68         0 \r\n 2010          242           21.161        31.61         21.07         0 \r\n 2010          243           9.227         29.74         19.38         80.518 \r\n 2010          244           14.146        26.73         17.61         1.27 \r\n 2010          245           8.987         23.75         13.98         2.032 \r\n 2010          246           23.202        20.89         11.56         0.254 \r\n 2010          247           22.145        22.89         8.08          0 \r\n 2010          248           16.515        26.5          12.75         0.508 \r\n 2010          249           14.517        28.21         13.34         3.81 \r\n 2010          250           22.389        22.58         12.37         0 \r\n 2010          251           20.801        24.42         8.04          0 \r\n 2010          252           7.718         22.76         16.19         0 \r\n 2010          253           8.521         21.14         15.84         12.954 \r\n 2010          254           21.552        24.53         12.9          0.254 \r\n 2010          255           19.553        29.76         11.73         0 \r\n 2010          256           15.732        27.63         13.57         0.254 \r\n 2010          257           15.263        27.72         12.44         0 \r\n 2010          258           14.97         27.47         15.02         0 \r\n 2010          259           8.522         17.53         9.79          0 \r\n 2010          260           16.267        27.49         9.15          0.254 \r\n 2010          261           1.319         18.07         8.29          12.7 \r\n 2010          262           3.086         12.82         7.42          7.366 \r\n 2010          263           16.004        31.28         12.82         0.254 \r\n 2010          264           3.651         23.45         17.72         32.766 \r\n 2010          265           5.886         26.99         18.05         0.508 \r\n 2010          266           5.035         25.26         12.95         18.034 \r\n 2010          267           18.508        20.91         11.48         0 \r\n 2010          268           2.001         11.94         7.2           16.256 \r\n 2010          269           18.086        19.89         5.455         0.254 \r\n 2010          270           17.577        21.69         5.49          0 \r\n 2010          271           18.67         22.87         12.28         0 \r\n 2010          272           17.284        29.05         9.11          0 \r\n 2010          273           17.795        23.39         11.67         0 \r\n 2010          274           17.185        25.2          7.21          0 \r\n 2010          275           15.027        14.49         2.682         0 \r\n 2010          276           17.331        15.43         1.038         0 \r\n 2010          277           17.325        18.04         2.69          0 \r\n 2010          278           16.835        21.67         3.163         0 \r\n 2010          279           15.323        25.81         7.86          0 \r\n 2010          280           16.71         24.28         2.318         0 \r\n 2010          281           15.08         30.23         7.83          0 \r\n 2010          282           15.337        29.63         11.42         0 \r\n 2010          283           14.557        27.27         11.15         0 \r\n 2010          284           7.717         24.59         12.56         0 \r\n 2010          285           11.415        26.86         10.97         2.29 \r\n 2010          286           14.562        19.71         6.384         0.25 \r\n 2010          287           14.612        23.59         2.66          0 \r\n 2010          288           14.819        19.1          4.461         0 \r\n 2010          289           13.765        22.35         6.704         0 \r\n 2010          290           13.17         17.64         2.906         0 \r\n 2010          291           12.609        16.47         4.186         0 \r\n 2010          292           11.759        17.31         2.385         0 \r\n 2010          293           13.562        21.66         4.51          0 \r\n 2010          294           13.32         15.81         1.384         0 \r\n 2010          295           11.734        23.54         3.396         0 \r\n 2010          296           6.363         21.72         13.22         2.03 \r\n 2010          297           1.824         16.77         13.16         0 \r\n 2010          298           4.502         20.11         9.52          0 \r\n 2010          299           4.357         13.71         7.08          7.11 \r\n 2010          300           8.617         10.7          2.326         0.51 \r\n 2010          301           11.571        7.75         -2.285         0 \r\n 2010          302           12.875        17.1         -4.751         0 \r\n 2010          303           12.836        19.03         2.83          0 \r\n 2010          304           8.817         10.26        -0.005         0 \r\n 2010          305           12.098        13.18        -2.661         0 \r\n 2010          306           11.793        13.29        -1.431         0 \r\n 2010          307           11.645        16.07         4.138         0 \r\n 2010          308           11.914        8.9          -0.995         0 \r\n 2010          309           11.999        8.55         -4.76          0 \r\n 2010          310           11.271        14.4         -2.939         0 \r\n 2010          311           10.385        20.71         3.719         0 \r\n 2010          312           10.958        21.04         6.969         0 \r\n 2010          313           10.038        21.15         5.35          0 \r\n 2010          314           7.44          19.92         2.678         0 \r\n 2010          315           10.676        13.34        -2.008         0 \r\n 2010          316           0.784         5.196         2.335         23.37 \r\n 2010          317           1.9           5.331         0.07          30.48 \r\n 2010          318           5.556         5.761        -1.232         0 \r\n 2010          319           10.265        8.69         -2.749         0 \r\n 2010          320           3.865         5.532         0.997         1.02 \r\n 2010          321           4.515         3.444        -0.739         0 \r\n 2010          322           4.604         1.505        -2.34          0 \r\n 2010          323           5.194         7.01         -3.245         0 \r\n 2010          324           4.785         2.698        -5.029         0 \r\n 2010          325           1.148         10.08         0.39          0.51 \r\n 2010          326           2.614         1.335        -3.149         0 \r\n 2010          327           9.669        -1.116        -9.84          0 \r\n 2010          328           0.972         0.845        -5.643         1.27 \r\n 2010          329           9.305        -3.806        -10.16         0 \r\n 2010          330           3.213         2.178        -9.36          0 \r\n 2010          331           8.707         6.179        -5.628         0 \r\n 2010          332           7.512         12.36        -2.893         0 \r\n 2010          333           2.625         9.64         -3.635         0.25 \r\n 2010          334           1.533         2.926         0.782         1.02 \r\n 2010          335           8.697        -1.494        -11.05         0 \r\n 2010          336           8.074         2.677        -8.19          0 \r\n 2010          337           3.368        -1.686        -9.34          0 \r\n 2010          338           2.766        -2.207        -11.16         0 \r\n 2010          339           7.994        -5.507        -13.17         0 \r\n 2010          340           6.302        -4.986        -12.6          0 \r\n 2010          341           7.556        -5.468        -14.35         0 \r\n 2010          342           8.122        -1.257        -14.75         0 \r\n 2010          343           3.633         7.61         -6.23          0 \r\n 2010          344           6.939         9.24         -6.442         0 \r\n 2010          345           2.153         8.15         -10.71         1.78 \r\n 2010          346           8.699        -10.71        -18.12         5.08 \r\n 2010          347           7.317        -11.63        -19.83         0 \r\n 2010          348           3.546        -8.66         -17.39         0 \r\n 2010          349           2.792        -5.649        -8.7           0 \r\n 2010          350           5.034        -4.697        -15.4          2.54 \r\n 2010          351           7.345        -5.996        -16.72         0 \r\n 2010          352           8.504        -6.801        -15.91         0 \r\n 2010          353           5.261        -5.369        -16.77         0 \r\n 2010          354           3.681        -2.115        -7.781         0 \r\n 2010          355           6.697        -0.979        -8.58          0 \r\n 2010          356           3.285        -3.966        -7.02          0 \r\n 2010          357           3.211        -0.94         -1.626         0 \r\n 2010          358           3.408        -1.111        -2.448         9.14 \r\n 2010          359           4.225        -1.563        -3.126         0 \r\n 2010          360           5.146        -1.97         -3.207         0 \r\n 2010          361           6.86         -1.687        -3.501         0 \r\n 2010          362           8.452        -1.104        -3.317         0 \r\n 2010          363           3.201         0.048        -1.678         0 \r\n 2010          364           3.53          1.156        -1.518         0 \r\n 2010          365           2.052        -1.474        -4.679         1.78 \r\n 2011          1             6.269        -3.297        -7.049         0 \r\n 2011          2             8.513        -1.818        -6.547         0 \r\n 2011          3             5.451         1.778        -11.816        0 \r\n 2011          4             8.702        -2.824        -15.056        0 \r\n 2011          5             5.937         1.457        -9.272         0 \r\n 2011          6             2.352        -1.83         -6.762         0 \r\n 2011          7             3.502        -1.84         -5.626         2.54 \r\n 2011          8             8.84         -4.081        -6.103         0 \r\n 2011          9             4.269        -3.603        -6.323         0 \r\n 2011          10            2.564        -5.082        -10.129        2.29 \r\n 2011          11            6.425        -8.822        -16.629        4.83 \r\n 2011          12            7.783        -12.873       -20.696        0 \r\n 2011          13            7.108        -8.681        -21.136        0 \r\n 2011          14            4.821        -2.569        -5.674         0 \r\n 2011          15            5.333        -2.813        -6.251         0 \r\n 2011          16            4.72         -3.159        -6.709         0 \r\n 2011          17            4.669         0.29         -8.204         2.79 \r\n 2011          18            8.327        -8.212        -16.482        0 \r\n 2011          19            8.974        -14.496       -21.701        2.03 \r\n 2011          20            9.803        -10.267       -22.182        0 \r\n 2011          21            5.756        -4.411        -7.79          1.27 \r\n 2011          22            7.161        -3.256        -6.501         0 \r\n 2011          23            9.895        -11.809       -24.331        0 \r\n 2011          24            9.612        -1.077        -11.947        0 \r\n 2011          25            5.798        -4.634        -13.221        0 \r\n 2011          26            6.044        -6.128        -9.943         0 \r\n 2011          27            9.876         1.39         -9.552         0 \r\n 2011          28            8.811         0.294        -3.3           0 \r\n 2011          29            6.864        -0.655        -3.311         0 \r\n 2011          30            4.794        -5.347        -14.55         0 \r\n 2011          31            3.663        -5.568        -9.05          2.03 \r\n 2011          32            4.161        -9.03         -14.33         2.29 \r\n 2011          33            9.012        -14.31        -22.93         7.37 \r\n 2011          34            11.985       -7.1          -22.56         0 \r\n 2011          35            11.734       -0.652        -3.298         0 \r\n 2011          36            9.621        -0.871        -3.241         0 \r\n 2011          37            7.33         -1.228        -7.53          1.27 \r\n 2011          38            10.93        -7.52         -22.8          0 \r\n 2011          39            11.252       -16.98        -25.47         0 \r\n 2011          40            13.065       -14.5         -22.04         0 \r\n 2011          41            13.455       -9.76         -23.46         0 \r\n 2011          42            9.191        -0.483        -3.851         0 \r\n 2011          43            11.456       -0.092        -2.845         0 \r\n 2011          44            12.951        0.709        -0.868         0 \r\n 2011          45            10.876        7.683        -0.556         0 \r\n 2011          46            11.453        9.047        -0.962         0 \r\n 2011          47            9.611         9.38         -0.46          0 \r\n 2011          48            11.175        3.006        -0.129         0 \r\n 2011          49            14.074        0.864        -0.957         0 \r\n 2011          50            13.956        0.481        -1.423         0 \r\n 2011          51            1.494         0.636         0.05          21.34 \r\n 2011          52            4.614         0.089        -5.274         0 \r\n 2011          53            9.14         -2.393        -6.023         0 \r\n 2011          54            7.932         0.673        -5.221         0 \r\n 2011          55            2.501        -4.576        -11.16         0 \r\n 2011          56            11.169       -2.4          -4.181         0 \r\n 2011          57            6.925        -2.773        -4.731         0.76 \r\n 2011          58            4.989        -1.653        -9.59          0 \r\n 2011          59            16.406       -1.992        -14.49         0 \r\n 2011          60            15.37         4.649        -13.16         0 \r\n 2011          61            16.027       -5.045        -16.75         0 \r\n 2011          62            9.029         5.994        -5.075         0 \r\n 2011          63            3.902         0.081        -2.035         0 \r\n 2011          64            8.823        -0.895        -2.7           0 \r\n 2011          65            7.701        -0.26         -11.68         0.51 \r\n 2011          66            5.672         0.345        -2.231         0.51 \r\n 2011          67            4.277         3.734        -0.204         0.25 \r\n 2011          68            6.837         0.21         -1.975         10.41 \r\n 2011          69            10.282       -1.494        -8.01          0 \r\n 2011          70            15.245        1.47         -1.971         0 \r\n 2011          71            14.804        0.116        -1.957         0 \r\n 2011          72            10.577       -0.916        -2.512         0 \r\n 2011          73            18.638        6.471        -8.82          0 \r\n 2011          74            14.677        8.34         -0.988         0 \r\n 2011          75            16.944        15.28        -1.196         0 \r\n 2011          76            10.347        12.87         1.205         0 \r\n 2011          77            14.114        3.407         0.412         0 \r\n 2011          78            13.663        5.531         0.404         0 \r\n 2011          79            5.121         11.89         3.961         2.03 \r\n 2011          80            10.279        9.9           1.461         0 \r\n 2011          81            2.604         6.339         2.624         0.51 \r\n 2011          82            5.749         3.565        -2.486         1.27 \r\n 2011          83            11.493        1.496        -5.519         0 \r\n 2011          84            8.973         3.282         1.701         2.79 \r\n 2011          85            12.699        2.737         0.788         0 \r\n 2011          86            17.597        2.746        -5.935         0 \r\n 2011          87            17.812        4.21         -4.604         0 \r\n 2011          88            11.894        5.078        -3.122         1.78 \r\n 2011          89            18            7.5          -2.989         0 \r\n 2011          90            11.362        9.43         -1.026         0 \r\n 2011          91            20.042        7.292         3.493         0 \r\n 2011          92            17.889        8.143         3.131         0 \r\n 2011          93            16.22         23.54         4.335         0 \r\n 2011          94            16.152        8.32         -3.378         0 \r\n 2011          95            20.515        16.57        -5.17          0 \r\n 2011          96            20.948        15.21         0.448         0 \r\n 2011          97            7.918         15.67         0.12          8.128 \r\n 2011          98            9.592         10.316        7.739         0 \r\n 2011          99            14.597        14.724        8.394         0 \r\n 2011          100           18.82         27.26         7.06          0 \r\n 2011          101           23.613        16.12         2.815         0 \r\n 2011          102           23.108        21.72        -1.517         0 \r\n 2011          103           16.735        17.18         5.125         0 \r\n 2011          104           5.677         13.16         4.412         2.54 \r\n 2011          105           2.163         9.149         5.897         23.622 \r\n 2011          106           15.949        7.457         4.509         3.048 \r\n 2011          107           13.169        7.62          0.147         7.112 \r\n 2011          108           6.162         6.65          0.563         1.27 \r\n 2011          109           4.966         3.338         0.175         17.272 \r\n 2011          110           13.95         7.53         -1.043         0 \r\n 2011          111           7.932         8.33         -2.73          0 \r\n 2011          112           4.188         6.951         5.372         0.254 \r\n 2011          113           9.433         7.243         5.787         0 \r\n 2011          114           16.575        14.32        -0.534         0 \r\n 2011          115           7.546         15.16         0.119         14.224 \r\n 2011          116           4.956         10.17         4.286         6.35 \r\n 2011          117           14.564        10.23         1.132         0 \r\n 2011          118           17.641        12.75         1.633         0 \r\n 2011          119           18.307        11.624        5.726         0 \r\n 2011          120           21.601        12.747        8.717         0.508 \r\n 2011          121           26.826        14.39         0.659         0 \r\n 2011          122           27.416        12.15        -2.646         0 \r\n 2011          123           27.007        15.02        -3.567         0 \r\n 2011          124           23.075        11.917        6.327         0 \r\n 2011          125           17.789        13.173        8.682         0.254 \r\n 2011          126           22.436        14.279        7.802         0 \r\n 2011          127           25.776        15.613        10.909        0 \r\n 2011          128           24.142        24.66         10.05         0 \r\n 2011          129           21.659        24.99         13.91         0 \r\n 2011          130           25.553        37.13         15.12         0 \r\n 2011          131           7.888         27.8          17.75         7.112 \r\n 2011          132           21.009        19.583        15.523        5.842 \r\n 2011          133           8.189         15.941        12.037        5.842 \r\n 2011          134           5.963         12.319        10.37         2.794 \r\n 2011          135           20.051        17.67         5.623         7.874 \r\n 2011          136           29.032        18.72         2.164         0 \r\n 2011          137           29.256        13.898        8.704         0 \r\n 2011          138           27.425        22.36         4.014         0 \r\n 2011          139           20.101        23.79         8.86          0 \r\n 2011          140           7.765         17.184        14.793        22.86 \r\n 2011          141           20.844        18.681        15.912        5.334 \r\n 2011          142           16.48         23.18         13.77         0.254 \r\n 2011          143           24.939        24.64         12.74         0 \r\n 2011          144           16.887        25.73         12.51         10.922 \r\n 2011          145           3.652         16.35         9.29          22.86 \r\n 2011          146           28.314        17.72         6.813         0 \r\n 2011          147           8.454         13.783        12.073        0 \r\n 2011          148           12.172        16.422        12.995        0 \r\n 2011          149           6.336         16.916        13.81         1.27 \r\n 2011          150           24.408        32.36         19.36         0 \r\n 2011          151           27.292        25.93         14.33         1.27 \r\n 2011          152           26.694        27.25         9.31          0 \r\n 2011          153           18.114        27.78         18.27         0 \r\n 2011          154           25.935        24.777        19.814        0 \r\n 2011          155           16.269        23.372        19.942        0 \r\n 2011          156           24.582        23.726        19.058        0.508 \r\n 2011          157           26.524        37.11         21.24         0 \r\n 2011          158           26.437        37.74         22.71         0 \r\n 2011          159           25.357        30.44         15.74         0 \r\n 2011          160           6.702         19.04         12.42         39.624 \r\n 2011          161           5.71          17.995        16.702        10.668 \r\n 2011          162           20.727        18.936        16.243        0 \r\n 2011          163           10.508        20.17         11.17         1.016 \r\n 2011          164           14.12         22.47         12.06         7.874 \r\n 2011          165           10.584        22.69         15.35         3.048 \r\n 2011          166           22.943        23.97         13.8          3.302 \r\n 2011          167           26.211        29.65         12.46         0 \r\n 2011          168           22.353        22.81         18.778        0 \r\n 2011          169           10.754        21.727        20.053        0 \r\n 2011          170           23.331        28.58         16.78         0 \r\n 2011          171           18.245        25.65         16.67         11.938 \r\n 2011          172           13.471        22.46         16.76         5.334 \r\n 2011          173           7.318         20.69         15.34         0.762 \r\n 2011          174           11.987        17.82         12.81         0 \r\n 2011          175           25.363        19.378        15.594        0 \r\n 2011          176           11.582        19.161        16.893        3.302 \r\n 2011          177           18.402        21.223        17.216        24.892 \r\n 2011          178           24.987        20.804        17.949        0 \r\n 2011          179           28.353        21.048        16.943        0 \r\n 2011          180           27.823        22.832        18.41         0 \r\n 2011          181           26.908        26.156        21.136        0 \r\n 2011          182           27.089        26.781        22.855        6.096 \r\n 2011          183           26.161        25.075        21.881        2.032 \r\n 2011          184           10.229        23.724        20.982        0 \r\n 2011          185           27.919        24.42         19.709        0 \r\n 2011          186           14.791        26.92         16.9          0 \r\n 2011          187           24.036        28.62         16.72         0 \r\n 2011          188           18.494        29.78         17.44         0 \r\n 2011          189           26.907        25.338        21.113        0 \r\n 2011          190           23.674        25.571        22.661        0 \r\n 2011          191           18.878        31.64         22.08         12.7 \r\n 2011          192           22.315        28.89         20.24         6.604 \r\n 2011          193           11.365        22.1          15.35         0.508 \r\n 2011          194           24.355        24.92         13.77         0 \r\n 2011          195           17.271        25.84         16.84         0 \r\n 2011          196           19.181        25.824        22.534        0 \r\n 2011          197           19.917        26.896        23.881        0.762 \r\n 2011          198           22.357        33.24         24.97         0 \r\n 2011          199           25.395        34.17         23.44         0 \r\n 2011          200           25.605        33.9          24.5          0 \r\n 2011          201           26.027        33.54         23.3          0 \r\n 2011          202           10.531        27.406        24.311        10.922 \r\n 2011          203           16.074        26.868        24.106        6.604 \r\n 2011          204           15.522        26.339        23.829        2.032 \r\n 2011          205           19.117        27.87         15.93         0.508 \r\n 2011          206           20.191        29.88         13.07         0 \r\n 2011          207           22.218        31.33         20.42         0 \r\n 2011          208           17.418        30.63         23.78         0 \r\n 2011          209           10.314        30.23         21.17         12.192 \r\n 2011          210           18.741        26.724        23.361        0 \r\n 2011          211           23.91         26.803        23.183        0 \r\n 2011          212           23.549        31.22         20.98         0 \r\n 2011          213           22.992        32.52         21.73         0 \r\n 2011          214           19.55         32.05         23.15         0 \r\n 2011          215           24.313        29.39         19.16         0 \r\n 2011          216           6.121         24.19         19            24.892 \r\n 2011          217           8.424         25.69         21.1          3.81 \r\n 2011          218           14.973        30.45         21.21         0 \r\n 2011          219           24.59         27.98         18.11         0 \r\n 2011          220           20.793        26.77         18.02         5.842 \r\n 2011          221           25.371        26.19         15.67         0 \r\n 2011          222           24.693        24.57         13.91         0 \r\n 2011          223           25.035        26.42         14.28         0 \r\n 2011          224           19.611        27.89         17.22         0 \r\n 2011          225           20.99         24.17         17.49         0 \r\n 2011          226           25.034        28.16         14.9          0 \r\n 2011          227           23.957        28.28         15.2          0 \r\n 2011          228           11.441        25.24         17            2.54 \r\n 2011          229           24.632        28.16         18.92         0 \r\n 2011          230           16.61         29.1          16.35         1.778 \r\n 2011          231           23.178        29.14         15.44         0 \r\n 2011          232           20.143        25.98         16.76         0 \r\n 2011          233           25.247        27.43         16.43         0 \r\n 2011          234           21.379        28.82         17.33         0 \r\n 2011          235           20.187        31.98         21.15         0 \r\n 2011          236           23.293        29.66         15.58         0 \r\n 2011          237           23.244        28.33         13.17         0 \r\n 2011          238           12.472        26.84         15.56         0 \r\n 2011          239           21.613        27.85         15.87         0 \r\n 2011          240           10.949        24.79         13.65         0 \r\n 2011          241           22.295        26.91         13.42         0 \r\n 2011          242           2.151         19.16         16.39         0.762 \r\n 2011          243           20.558        29.92         16.08         0 \r\n 2011          244           20.924        34.25         21.63         0 \r\n 2011          245           13.607        31.66         19.46         0.254 \r\n 2011          246           3.342         22.53         13.98         1.27 \r\n 2011          247           22.85         21.13         10.92         0 \r\n 2011          248           22.727        20.69         7.75          0 \r\n 2011          249           22.488        21.79         8.14          0 \r\n 2011          250           21.757        22.44         8.85          0 \r\n 2011          251           20.384        26.21         10.21         0 \r\n 2011          252           21.559        26.74         15.1          0 \r\n 2011          253           20.691        27.33         12.76         0 \r\n 2011          254           19.667        29.54         13.17         0 \r\n 2011          255           19.502        31.15         14.56         0 \r\n 2011          256           20.231        22.25         11.45         0 \r\n 2011          257           19.002        15.45         5.463         0.254 \r\n 2011          258           17.995        14.78         1.063         0 \r\n 2011          259           5.589         11.69         7.23          1.016 \r\n 2011          260           4.791         14.62         9.46          0 \r\n 2011          261           2.361         15.71         11.89         15.748 \r\n 2011          262           18.835        24.56         11.95         0.254 \r\n 2011          263           15.421        23.9          10.43         0.762 \r\n 2011          264           11.787        18.27         9.02          0 \r\n 2011          265           12.134        16.31         4.775         0 \r\n 2011          266           18.728        18.78         3.647         0 \r\n 2011          267           13.113        18.17         3.558         0 \r\n 2011          268           13.341        18.62         4.09          0 \r\n 2011          269           8.6           19.08         9.39          0 \r\n 2011          270           9.336         19.98         11.33         0 \r\n 2011          271           15.288        27.92         12.51         0 \r\n 2011          272           13.457        22.29         12.39         0 \r\n 2011          273           18.033        19.39         6.248         0 \r\n 2011          274           17.909        18.24         1.79          0 \r\n 2011          275           17.413        23.78         1.838         0 \r\n 2011          276           16.972        25.42         5.531         0 \r\n 2011          277           15.834        28.34         8.75          0 \r\n 2011          278           16.283        27.78         10.67         0 \r\n 2011          279           14.232        26.65         10.07         0 \r\n 2011          280           9.309         27.87         15.69         0 \r\n 2011          281           13.091        28.02         16.3          0 \r\n 2011          282           14.892        26.35         12.12         0 \r\n 2011          283           8.589         23.41         11.33         0.25 \r\n 2011          284           12.857        24.49         8.38          0 \r\n 2011          285           5.764         19.28         12.3          17.02 \r\n 2011          286           14.07         19.95         7.28          3.81 \r\n 2011          287           13.403        16.5          6.714         0 \r\n 2011          288           14.444        19.54         4.575         0 \r\n 2011          289           12.333        16.16         4.146         0 \r\n 2011          290           6.424         14.12         0.42          0 \r\n 2011          291           6.02          9.33          1.309         0 \r\n 2011          292           7.512         8.99          0.738         0 \r\n 2011          293           14.436        12.22        -0.75          0 \r\n 2011          294           13.35         18.06        -2.617         0 \r\n 2011          295           11.428        18.37         5.812         0 \r\n 2011          296           10.71         23.12         3.852         0 \r\n 2011          297           11.945        22.61         3.39          0 \r\n 2011          298           10.728        24.6          7.26          0 \r\n 2011          299           6.074         11.75         4.32          0 \r\n 2011          300           12.11         12.58         0.375         0 \r\n 2011          301           11.468        13.37        -0.844         0 \r\n 2011          302           10.965        14.15        -2.712         0 \r\n 2011          303           11.474        12.95         2.534         0.76 \r\n 2011          304           12.117        13.61        -2.087         0 \r\n 2011          305           11.177        21.52         2.546         0 \r\n 2011          306           0.908         8.65          2.591         11.94 \r\n 2011          307           12.013        9.57         -0.684         6.1 \r\n 2011          308           11.894        10.81        -2.166         0 \r\n 2011          309           9.302         11.88         2.167         0 \r\n 2011          310           11.132        12.72         3.094         0 \r\n 2011          311           9.825         14.5         -1.072         0 \r\n 2011          312           2.209         6.642         0.862         11.94 \r\n 2011          313           10.418        9.89          0.221         33.27 \r\n 2011          314           11.318        5.549        -2.637         0 \r\n 2011          315           10.44         12.01        -2.419         0 \r\n 2011          316           7.318         12.96        -0.021         0 \r\n 2011          317           7.308         12.29         2.667         0 \r\n 2011          318           8.24          14.83         1.156         0 \r\n 2011          319           8.338         13.25        -0.626         0 \r\n 2011          320           10.544        5.528        -5.88          0 \r\n 2011          321           10.416        7.15         -9.72          0 \r\n 2011          322           8.04          12.92         0.89          0 \r\n 2011          323           1.615         12           -4.083         0 \r\n 2011          324           7.154         0.558        -7.21          0 \r\n 2011          325           2.855         4.935        -6.423         0 \r\n 2011          326           3.288         6.087         1.946         0 \r\n 2011          327           7.886         10.67        -0.374         0 \r\n 2011          328           8.854         19.18        -0.261         0 \r\n 2011          329           1.872         11.99         6.901         0 \r\n 2011          330           1.237         11.4          1.837         4.57 \r\n 2011          331           2.17          1.865        -1.364         0 \r\n 2011          332           6.596         3.562        -2.874         0 \r\n 2011          333           9.436         5.076        -4.232         0 \r\n 2011          334           8.199         9.74         -8.39          0 \r\n 2011          335           2.192         1.562        -7.44          0 \r\n 2011          336           8.876         2.155        -12.42         0 \r\n 2011          337           0.513         3.264        -1.478         22.35 \r\n 2011          338           2.761        -1.469        -5.638         4.57 \r\n 2011          339           3.127        -5.551        -9.68          0 \r\n 2011          340           6.34         -6.385        -13.84         0 \r\n 2011          341           4.849        -2.973        -13.04         0 \r\n 2011          342           3.518        -1.219        -6.093         0 \r\n 2011          343           8.059        -5.91         -15.9          0.25 \r\n 2011          344           6.928         1.002        -15.78         0 \r\n 2011          345           3.512         4.008        -5.696         0 \r\n 2011          346           1.404         4.926         1.013         0 \r\n 2011          347           2.64          6.472         1.041         0 \r\n 2011          348           1.286         10.79         3.055         23.62 \r\n 2011          349           2.425         3.084        -4.751         0 \r\n 2011          350           7.17         -0.03         -7.84          0 \r\n 2011          351           6.686         4.998        -5.106         0 \r\n 2011          352           7.78          11.26        -3.408         0 \r\n 2011          353           5.217         2.46         -2.579         0 \r\n 2011          354           3.059        -0.348        -4.724         0 \r\n 2011          355           7.68          6.8          -3.598         0 \r\n 2011          356           7.52         -0.667        -9.96          0.51 \r\n 2011          357           6.497         2.477        -11.57         0 \r\n 2011          358           8.178         7.69         -8.18          0 \r\n 2011          359           8.333         7.46         -3.631         0 \r\n 2011          360           5.132         7.17         -5.532         0 \r\n 2011          361           6.818         4.103        -4.867         0 \r\n 2011          362           7.407         8.64         -5.667         0 \r\n 2011          363           7.562         9.7           2.045         0 \r\n 2011          364           2.587         4.29          0.645         5.33 \r\n 2011          365           4.079         8.84          0.334         0 \r\n 2012          1             6.237         8.3          -2.8           0 \r\n 2012          2             5.925        -1.1          -8.3           0 \r\n 2012          3             7.693         2.2          -13.9          0 \r\n 2012          4             7.589         6.1          -3.9           0 \r\n 2012          5             7.693         16.7         -1.7           0 \r\n 2012          6             8.405         16.7         -1.7           0 \r\n 2012          7             7.775         7.2          -4.4           0 \r\n 2012          8             7.249         5            -5             0 \r\n 2012          9             7.985         10.6         -5             0 \r\n 2012          10            8.615         13.3         -4.4           0 \r\n 2012          11            8.812         12.8         -3.9           0 \r\n 2012          12            8.812        -3.3          -13.3          0.76 \r\n 2012          13            3.928        -7.2          -13.9          0.25 \r\n 2012          14            6.476        -0.6          -11.1          0 \r\n 2012          15            8.6           10           -7.8           0 \r\n 2012          16            8.475         8.9          -1.7           0 \r\n 2012          17            8.904         1.7          -11.7          0.25 \r\n 2012          18            8.796        -2.2          -18.3          0 \r\n 2012          19            9.321        -2.2          -18.9          0 \r\n 2012          20            4.227        -13.3         -17.2          1.27 \r\n 2012          21            8.237        -7.2          -21.1          0 \r\n 2012          22            9.744         0.6          -7.2           0 \r\n 2012          23            3.175         0.6          -4.4           4.83 \r\n 2012          24            2.737        -2.8          -5.6           0 \r\n 2012          25            5.308         2.8          -6.1           0 \r\n 2012          26            7.41          4.4          -3.9           0 \r\n 2012          27            7.52          3.3          -3.9           0 \r\n 2012          28            8.601         5            -6.7           0 \r\n 2012          29            8.042         3.9          -6.1           0 \r\n 2012          30            9.606         15           -1.7           0 \r\n 2012          31            10.152        15            1.1           0 \r\n 2012          32            10.829        11.1         -2.8           0 \r\n 2012          33            11.168        11.1         -3.3           0 \r\n 2012          34            9.796         10           -0.6           0 \r\n 2012          35            1.709         0.6          -1.1           3.56 \r\n 2012          36            6.211         0.6          -4.4           0 \r\n 2012          37            5.406        -1.7          -6.7           0 \r\n 2012          38            7.936         0            -5.6           0 \r\n 2012          39            8.245        -1.7          -6.7           0 \r\n 2012          40            11.728        0            -12.8          0 \r\n 2012          41            11.84         0            -12.8          0 \r\n 2012          42            11.84        -4.4          -17.2          0 \r\n 2012          43            12.662       -3.3          -16.7          0 \r\n 2012          44            11.715       -1.7          -8.3           1.78 \r\n 2012          45            5.325         2.2          -6.1           0.25 \r\n 2012          46            11.108        7.8          -2.8           0 \r\n 2012          47            12.661        7.8          -3.9           0 \r\n 2012          48            12.898        7.2          -3.9           0 \r\n 2012          49            14.586        6.7          -8.9           0 \r\n 2012          50            13.99         5            -7.2           0 \r\n 2012          51            13.868        6.1          -2.8           0 \r\n 2012          52            7.488         7.2           0             5.84 \r\n 2012          53            11.294        9.4          -1.1           0 \r\n 2012          54            11.395        8.9          -0.6           3.81 \r\n 2012          55            7.432         0.6          -6.1           4.32 \r\n 2012          56            11.497       -3.3          -12.2          0 \r\n 2012          57            13.747        8.3          -6.7           0 \r\n 2012          58            14.625        5.6          -8.9           0 \r\n 2012          59            11.094        3.9          -2.8           1.02 \r\n 2012          60            10.193        9.4          -2.2           23.62 \r\n 2012          61            7.892         9.4          -3.9           0 \r\n 2012          62            9.837         5            -0.6           0 \r\n 2012          63            8.324         3.3          -3.9           0 \r\n 2012          64            9.16         -0.6          -8.3           2.29 \r\n 2012          65            11.45         6.7          -13.3          0 \r\n 2012          66            14.848        20           -2.2           0 \r\n 2012          67            16.278        18.9          3.3           0 \r\n 2012          68            13.866        6.7          -3.9           0 \r\n 2012          69            14.198        7.8          -5             0 \r\n 2012          70            13.2          19.4          0             0 \r\n 2012          71            13.983        19.4          1.7           0 \r\n 2012          72            13.988        15            7.2           8.64 \r\n 2012          73            8.235         22.2          1.7           0 \r\n 2012          74            15.469        23.9          9.4           0 \r\n 2012          75            15.356        24.4          5.6           0 \r\n 2012          76            15.597        27.2          10.6          0 \r\n 2012          77            15.368        27.2          13.9          0 \r\n 2012          78            14.222        26.7          13.3          0 \r\n 2012          79            12.603        26.7          15.6          0 \r\n 2012          80            11.773        24.4          12.8          17.53 \r\n 2012          81            8.626         18.9          12.2          4.57 \r\n 2012          82            4.935         18.9          13.3          4.83 \r\n 2012          83            6.633         17.8          5.6           0 \r\n 2012          84            9.712         21.1          10.6          0 \r\n 2012          85            13.729        21.7          7.8           0 \r\n 2012          86            15.52         22.2          8.3           0 \r\n 2012          87            14.198        25            8.3           0 \r\n 2012          88            12.754        25            6.7           0 \r\n 2012          89            17.462        21.1          7.2           0 \r\n 2012          90            15.522        18.3          10            21.84 \r\n 2012          91            9.288         16.7          8.3           0 \r\n 2012          92            10.796        27.8          7.8           0 \r\n 2012          93            17.111        27.8          11.1          0 \r\n 2012          94            19.402        28.9          11.7          0 \r\n 2012          95            18.056        18.9          11.1          0 \r\n 2012          96            10.725        18.9          5             0 \r\n 2012          97            17.099        16.7          0.6           0 \r\n 2012          98            19.424        16.7          6.7           4.32 \r\n 2012          99            18.054        20            0             0 \r\n 2012          100           20.948        20.6          2.8           0 \r\n 2012          101           21.383        20           -2.2           0 \r\n 2012          102           21.521        11.1         -3.9           0 \r\n 2012          103           19.994        15            0             0 \r\n 2012          104           20.562        15            7.2           13.97 \r\n 2012          105           13.149        16.7          11.7          1.27 \r\n 2012          106           7.468         22.8          13.9          61.21 \r\n 2012          107           9.159         22.8          3.9           0.76 \r\n 2012          108           21.148        17.2          3.3           0 \r\n 2012          109           19.161        20            11.1          6.1 \r\n 2012          110           14.153        20.6          9.4           3.05 \r\n 2012          111           13.009        12.2          3.3           8.64 \r\n 2012          112           11.375        12.2          3.3           1.78 \r\n 2012          113           13.535        13.9          4.4           2.79 \r\n 2012          114           12.327        16.7          3.3           0 \r\n 2012          115           18.708        26.7          6.1           0 \r\n 2012          116           22.637        29.4          12.2          0 \r\n 2012          117           22.345        29.4          10            0 \r\n 2012          118           21.032        18.3          7.8           0 \r\n 2012          119           16.473        13.3          4.4           11.18 \r\n 2012          120           11.178        8.9           6.1           2.03 \r\n 2012          121           5.48          16.1          7.2           4.57 \r\n 2012          122           7.183         23.9          10            0 \r\n 2012          123           19.599        23.9          14.4          15.24 \r\n 2012          124           14.155        27.2          17.8          1.27 \r\n 2012          125           16.289        27.8          16.7          0 \r\n 2012          126           19.108        27.8          18.3          0 \r\n 2012          127           17.385        27.8          16.1          11.94 \r\n 2012          128           14.665        21.1          12.2          6.1 \r\n 2012          129           14.508        20            7.2           0 \r\n 2012          130           21.91         17.2          7.2           0 \r\n 2012          131           21.275        23.3          7.2           0 \r\n 2012          132           24.291        25            13.9          0 \r\n 2012          133           23.976        24.4          8.9           0 \r\n 2012          134           24.615        22.8          7.8           0 \r\n 2012          135           25.254        24.4          10            0 \r\n 2012          136           26.229        31.1          11.7          0 \r\n 2012          137           25.424        28.3          7.2           0 \r\n 2012          138           26.872        26.1          11.7          0 \r\n 2012          139           23.812        30.6          13.9          0 \r\n 2012          140           23.65         30.6          17.2          0 \r\n 2012          141           21.706        28.9          13.9          0 \r\n 2012          142           22.502        23.9          8.9           0 \r\n 2012          143           25.926        27.2          12.8          0 \r\n 2012          144           25.274        30.6          15.6          0 \r\n 2012          145           23.471        30.6          19.4          7.11 \r\n 2012          146           17.07         21.7          11.7          0.51 \r\n 2012          147           16.905        30            14.4          4.06 \r\n 2012          148           15.694        32.2          21.1          0 \r\n 2012          149           21.807        32.2          18.3          0 \r\n 2012          150           18.007        29.4          12.8          0 \r\n 2012          151           25.111        22.8          8.9           0 \r\n 2012          152           24.45         20            8.9           16.26 \r\n 2012          153           14.526        18.9          7.2           0.25 \r\n 2012          154           14.618        21.1          11.7          1.27 \r\n 2012          155           23.532        26.1          12.8          0 \r\n 2012          156           25.315        27.8          15.6          0 \r\n 2012          157           23.889        28.3          15.6          0 \r\n 2012          158           24.581        27.8          16.1          0 \r\n 2012          159           21.352        26.1          15            0 \r\n 2012          160           21.711        30            15            0 \r\n 2012          161           23.505        30.6          16.1          0 \r\n 2012          162           24.761        31.7          20.6          0 \r\n 2012          163           22.069        30.6          18.3          6.6 \r\n 2012          164           16.687        25.6          10.6          0 \r\n 2012          165           26.003        25            12.8          0 \r\n 2012          166           23.294        31.1          16.1          0 \r\n 2012          167           23.475        31.1          19.4          0 \r\n 2012          168           22.211        28.9          18.9          33.27 \r\n 2012          169           14.265        27.8          13.9          0 \r\n 2012          170           26.183        32.8          23.9          0 \r\n 2012          171           21.669        33.3          21.7          0 \r\n 2012          172           18.96         31.7          22.8          0 \r\n 2012          173           20.224        28.3          15            26.67 \r\n 2012          174           18.599        26.7          13.9          0 \r\n 2012          175           24.558        27.2          16.7          0.51 \r\n 2012          176           16.252        29.4          18.9          5.84 \r\n 2012          177           18.419        29.4          19.4          0 \r\n 2012          178           22.211        26.7          13.3          0 \r\n 2012          179           25.461        35.6          18.9          0 \r\n 2012          180           26.003        35.6          25            0 \r\n 2012          181           22.572        30            20            0.25 \r\n 2012          182           20.947        31.1          18.9          0 \r\n 2012          183           24.055        33.3          21.1          0 \r\n 2012          184           22.942        33.3          21.1          0 \r\n 2012          185           23.13         34.4          21.1          0 \r\n 2012          186           23.883        35            21.7          0 \r\n 2012          187           23.507        33.9          22.8          0.76 \r\n 2012          188           16.549        36.1          21.7          0 \r\n 2012          189           24.823        36.1          22.8          0 \r\n 2012          190           24.29         29.4          20            0 \r\n 2012          191           21.861        30            17.8          0 \r\n 2012          192           26.158        30            15            2.29 \r\n 2012          193           28.214        28.9          15.6          0 \r\n 2012          194           26.906        30.6          17.8          0 \r\n 2012          195           25.804        30.6          20            3.3 \r\n 2012          196           17.636        31.7          18.9          0 \r\n 2012          197           24.319        32.8          19.4          1.27 \r\n 2012          198           26.175        33.3          19.4          0 \r\n 2012          199           25.083        34.4          20.6          0 \r\n 2012          200           23.792        34.4          23.3          0 \r\n 2012          201           24.53         35.6          19.4          0 \r\n 2012          202           26.743        31.7          17.2          0 \r\n 2012          203           25.835        30            17.8          0 \r\n 2012          204           24.369        36.7          20            0 \r\n 2012          205           24.736        37.2          23.3          0 \r\n 2012          206           25.483        37.8          21.7          0 \r\n 2012          207           24.573        37.2          22.8          0 \r\n 2012          208           23.663        37.8          20.6          9.65 \r\n 2012          209           18.443        31.7          17.2          0 \r\n 2012          210           24.23         26.7          16.1          11.94 \r\n 2012          211           15.37         30            18.3          8.13 \r\n 2012          212           12.932        32.2          18.9          0 \r\n 2012          213           21.913        32.8          19.4          0 \r\n 2012          214           24.441        33.3          18.9          0 \r\n 2012          215           24.218        33.3          21.7          0 \r\n 2012          216           22.627        33.3          19.4          0 \r\n 2012          217           21.947        33.3          19.4          44.96 \r\n 2012          218           15.626        25.6          15            0 \r\n 2012          219           21.42         29.4          12.8          0 \r\n 2012          220           25.111        31.7          18.3          0 \r\n 2012          221           24.937        30.6          20            7.37 \r\n 2012          222           16.106        26.7          17.2          7.87 \r\n 2012          223           14.375        26.7          11.7          0 \r\n 2012          224           23.563        23.9          11.7          0 \r\n 2012          225           23.219        23.3          16.7          2.03 \r\n 2012          226           18.231        23.3          14.4          2.03 \r\n 2012          227           13.664        27.8          13.9          0 \r\n 2012          228           22.716        29.4          14.4          0 \r\n 2012          229           23.066        29.4          15.6          2.29 \r\n 2012          230           16.621        22.8          9.4           0 \r\n 2012          231           23.746        22.8          10            0 \r\n 2012          232           24.083        22.2          9.4           0 \r\n 2012          233           22.574        25            10.6          0 \r\n 2012          234           23.41         26.7          11.1          0 \r\n 2012          235           24.246        33.3          12.8          0 \r\n 2012          236           24.405        32.8          15            0 \r\n 2012          237           23.575        32.2          17.2          0 \r\n 2012          238           20.768        29.4          17.8          7.87 \r\n 2012          239           12.032        28.3          17.8          0 \r\n 2012          240           9.163         30.6          16.7          0 \r\n 2012          241           21.108        32.8          16.7          0 \r\n 2012          242           21.442        33.9          16.7          0 \r\n 2012          243           20.955        35            17.8          0 \r\n 2012          244           19.672        35            16.7          0 \r\n 2012          245           21.445        31.1          18.3          0 \r\n 2012          246           16.746        31.1          15            0 \r\n 2012          247           18.079        31.1          19.4          3.05 \r\n 2012          248           12.502        34.4          18.3          1.52 \r\n 2012          249           11.032        34.4          17.2          6.1 \r\n 2012          250           13.576        28.3          12.8          0 \r\n 2012          251           19.707        27.8          15.6          18.29 \r\n 2012          252           13.039        25.6          8.3           0 \r\n 2012          253           18.399        25.6          8.9           0 \r\n 2012          254           18.546        26.1          8.9           0 \r\n 2012          255           18.403        32.8          12.2          0 \r\n 2012          256           18.403        31.7          16.7          0.25 \r\n 2012          257           16.977        19.4          8.9           15.24 \r\n 2012          258           11.042        25            7.8           0 \r\n 2012          259           15.713        25            7.2           0 \r\n 2012          260           17.978        23.9          8.9           0 \r\n 2012          261           16.995        24.4          10.6          2.54 \r\n 2012          262           10.869        17.2          4.4           0 \r\n 2012          263           15.189        28.9          7.8           0 \r\n 2012          264           16.727        28.9          7.8           0 \r\n 2012          265           17.418        20.6          10            0 \r\n 2012          266           13.713        20            3.3           0 \r\n 2012          267           15.907        16.1          2.2           0 \r\n 2012          268           16.459        24.4          2.8           0 \r\n 2012          269           17.004        27.8          7.8           0 \r\n 2012          270           16.865        28.3          7.2           0 \r\n 2012          271           16.46         22.2          3.9           0 \r\n 2012          272           16.058        23.3          5.6           0 \r\n 2012          273           16.058        26.7          7.8           0 \r\n 2012          274           15.793        27.2          12.2          0 \r\n 2012          275           15.66         27.2          11.1          0 \r\n 2012          276           14.74         23.3          6.7           0 \r\n 2012          277           13.95         25.6          8.3           0 \r\n 2012          278           14.485        24.4          6.7           1.52 \r\n 2012          279           13.833        13.3         -1.1           0 \r\n 2012          280           11.645        8.3          -2.8           0 \r\n 2012          281           10.998        11.7         -6.7           0 \r\n 2012          282           12.957        18.9          2.2           0 \r\n 2012          283           13.727        18.9          6.1           1.78 \r\n 2012          284           11.955        13.3         -3.3           0.25 \r\n 2012          285           12.082        15            3.9           0 \r\n 2012          286           11.599        13.3         -2.2           0 \r\n 2012          287           12.481        23.3          8.3           10.41 \r\n 2012          288           8.373         23.3          8.9           14.99 \r\n 2012          289           6.748         18.9          2.2           0 \r\n 2012          290           10.9          22.2          7.8           0 \r\n 2012          291           11.271        22.2          11.1          2.54 \r\n 2012          292           9.575         13.3          4.4           10.67 \r\n 2012          293           5.279         7.8           5             2.54 \r\n 2012          294           2.311         12.8          5.6           0 \r\n 2012          295           4.136         23.9          5             0 \r\n 2012          296           9.367         23.9          15.6          3.05 \r\n 2012          297           6.992         22.8          13.3          0 \r\n 2012          298           6.75          23.3          16.1          0 \r\n 2012          299           6.45          23.3          2.8           11.68 \r\n 2012          300           7.525         4.4          -1.7           0 \r\n 2012          301           6.39          5.6          -1.1           0 \r\n 2012          302           4.97          7.8          -1.7           0 \r\n 2012          303           7.62          10            0             0 \r\n 2012          304           8.792         9.4          -1.7           0 \r\n 2012          305           9.73          10.6         -1.7           0 \r\n 2012          306           9.754         11.7          2.2           0 \r\n 2012          307           9.522         10.6         -1.1           0 \r\n 2012          308           8.741         10            0.6           0 \r\n 2012          309           7.476         9.4           3.3           0 \r\n 2012          310           6.379         6.7           3.3           5.84 \r\n 2012          311           3.417         9.4           3.3           1.02 \r\n 2012          312           3.873         8.3           2.2           0.51 \r\n 2012          313           6.543         15           -1.1           0 \r\n 2012          314           8.686         14.4          2.8           0 \r\n 2012          315           8.936         23.9          10.6          0 \r\n 2012          316           8.154         21.7         -2.8           12.95 \r\n 2012          317           7.484         1.1          -7.2           0 \r\n 2012          318           7.299         8.3          -7.8           0 \r\n 2012          319           8.626         12.8          0             0 \r\n 2012          320           8.958         13.9          1.7           0 \r\n 2012          321           8.102         12.2         -4.4           0 \r\n 2012          322           9.197         15           -1.1           0 \r\n 2012          323           8.759         15            2.8           0 \r\n 2012          324           7.587         15            3.9           2.54 \r\n 2012          325           6.936         14.4          1.7           0 \r\n 2012          326           7.803         21.1          2.8           0 \r\n 2012          327           8.153         20            9.4           0 \r\n 2012          328           7.831         10.6         -5.6           0 \r\n 2012          329           8.689         0            -9.4           0 \r\n 2012          330           6.222         2.2          -2.8           0 \r\n 2012          331           4.884         1.1          -5.6           0 \r\n 2012          332           4.884         1.7          -12.2          0 \r\n 2012          333           6.37          6.1          -7.8           0 \r\n 2012          334           7.113         10.6         -3.3           0 \r\n 2012          335           7.249         8.9          -2.8           0 \r\n 2012          336           7.039         12.8         -0.6           0 \r\n 2012          337           6.724         12.8          1.7           0 \r\n 2012          338           5.253         18.9          6.1           0 \r\n 2012          339           6.409         13.3         -1.7           0 \r\n 2012          340           7.173         10.6         -5.6           0 \r\n 2012          341           6.861         7.8           3.3           0.51 \r\n 2012          342           5.094         6.7          -1.1           0 \r\n 2012          343           4.054         4.4          -5             0 \r\n 2012          344           4.574         1.7          -5             3.81 \r\n 2012          345           3.846        -3.9          -11.7          0 \r\n 2012          346           5.614         3.9          -10.6          0 \r\n 2012          347           5.863         9.4          -6.1           0 \r\n 2012          348           6.685         10            0             0 \r\n 2012          349           6.377         10           -5.6           0 \r\n 2012          350           7.508         8.9           3.9           10.67 \r\n 2012          351           4.628         7.2          -2.8           0 \r\n 2012          352           4.114        -2.2          -6.7           0 \r\n 2012          353           3.394         0.6          -2.8           0 \r\n 2012          354           2.88          0.6          -3.3           0 \r\n 2012          355           2.674         0.6          -7.8           9.65 \r\n 2012          356           3.805        -7.8          -14.4          0 \r\n 2012          357           5.965        -3.9          -13.9          0 \r\n 2012          358           6.994        -3.9          -12.8          0 \r\n 2012          359           6.582        -8.3          -10.6          0 \r\n 2012          360           4.32         -8.9          -19.4          0 \r\n 2012          361           6.685        -10           -18.3          0 \r\n 2012          362           5.554        -6.7          -15            0 \r\n 2012          363           6.685        -4.4          -6.7           1.27 \r\n 2012          364           6.068        -5            -12.2          0 \r\n 2012          365           6.029        -1.7          -15.6          0 \r\n 2012          366           7.589         0            -10            0 \r\n 2013          1             7.381        -9.4          -20.6          0 \r\n 2013          2             7.381        -4.4          -17.2          0 \r\n 2013          3             7.485        -1.7          -12.2          0 \r\n 2013          4             5.718        -1.1          -15.6          0 \r\n 2013          5             6.861         1.1          -11.1          0 \r\n 2013          6             7.564         1.1          -12.2          0 \r\n 2013          7             6.829         3.3          -9.4           0 \r\n 2013          8             7.67          3.9          -6.7           0 \r\n 2013          9             7.354         5.6          -6.1           0 \r\n 2013          10            6.094         3.9          -2.8           0 \r\n 2013          11            4.671         5.6           0.6           0.76 \r\n 2013          12            8.812         7.2          -8.3           0 \r\n 2013          13            6.158        -7.2          -15            0 \r\n 2013          14            6.795        -2.8          -15.6          0 \r\n 2013          15            8.069        -0.6          -12.2          0 \r\n 2013          16            8.153         6.7          -7.2           0 \r\n 2013          17            9.333         6.1          -11.1          0 \r\n 2013          18            8.582         10           -5.6           0 \r\n 2013          19            8.67          9.4           0             0 \r\n 2013          20            10.296        5.6          -13.9          0.76 \r\n 2013          21            7.045        -12.2         -21.7          0 \r\n 2013          22            6.569        -10.6         -21.7          0 \r\n 2013          23            7.773        -4.4          -13.3          0 \r\n 2013          24            9.197        -5            -17.8          0 \r\n 2013          25            8.516         1.1          -10.6          0 \r\n 2013          26            10.396        0.6          -15.6          0 \r\n 2013          27            7.41          0.6          -3.3           4.06 \r\n 2013          28            2.122         1.7          -1.1           1.27 \r\n 2013          29            8.377         9.4          -0.6           2.54 \r\n 2013          30            6.032         0            -8.3           5.33 \r\n 2013          31            9.363        -7.8          -18.3          0 \r\n 2013          32            9.927        -12.8         -22.2          0 \r\n 2013          33            11.168       -4.4          -12.8          0 \r\n 2013          34            9.227         0            -10            1.52 \r\n 2013          35            8.771        -0.6          -8.9           0 \r\n 2013          36            7.476         3.9          -7.8           0 \r\n 2013          37            10.236        3.9          -5.6           0 \r\n 2013          38            8.051         3.3          -2.8           2.03 \r\n 2013          39            5.574        -2.2          -5.6           0 \r\n 2013          40            4.064         0.6          -3.9           0 \r\n 2013          41            5.041         5.6          -1.7           4.57 \r\n 2013          42            8.44          2.8          -3.9           0 \r\n 2013          43            9.23          6.1          -6.7           0 \r\n 2013          44            12.662        8.3          -3.3           0 \r\n 2013          45            12.07         7.8          -0.6           0 \r\n 2013          46            12.78         2.2          -10.6          0 \r\n 2013          47            12.422        0.6          -12.8          0 \r\n 2013          48            13.621        5.6          -8.3           0 \r\n 2013          49            13.501        5.6          -2.8           0 \r\n 2013          50            14.841       -2.8          -13.9          0 \r\n 2013          51            14.233       -5.6          -18.9          0 \r\n 2013          52            12.89        -3.9          -9.4           0 \r\n 2013          53            4.91         -3.9          -5.6           6.6 \r\n 2013          54            14.492       -2.2          -13.9          0 \r\n 2013          55            15.731        1.7          -15.6          0 \r\n 2013          56            14.496        2.2          -3.9           0 \r\n 2013          57            6.373         2.2          -2.8           4.06 \r\n 2013          58            4.917         2.8          -5             1.27 \r\n 2013          59            9.582        -1.7          -7.2           0 \r\n 2013          60            7.135        -1.7          -5             0 \r\n 2013          61            12.54        -2.8          -11.1          0 \r\n 2013          62            11.459       -1.1          -6.7           0 \r\n 2013          63            8.287         0            -3.9           0.51 \r\n 2013          64            7.851         0            -5             1.78 \r\n 2013          65            10.778       -2.2          -7.8           0 \r\n 2013          66            14.408       -1.7          -12.2          0 \r\n 2013          67            15.197        2.8          -5             0 \r\n 2013          68            8.097         2.8           0.6           16.26 \r\n 2013          69            4.475         2.8           0             9.4 \r\n 2013          70            6.824         0            -5             2.54 \r\n 2013          71            12.07        -1.1          -10            0 \r\n 2013          72            14.552       -2.2          -10.6          0 \r\n 2013          73            15.128        5            -6.7           0 \r\n 2013          74            15.128        7.8          -1.1           0 \r\n 2013          75            13.533        7.8          -2.2           0 \r\n 2013          76            14.45         2.8          -7.8           0 \r\n 2013          77            11.447        1.1          -6.1           2.79 \r\n 2013          78            16.65        -0.6          -11.1          0 \r\n 2013          79            16.668        0.6          -11.1          0 \r\n 2013          80            16.902       -1.7          -12.2          0 \r\n 2013          81            17.861        0.6          -8.3           0 \r\n 2013          82            15.99         1.7          -3.9           0 \r\n 2013          83            11.134        1.7          -3.9           0.25 \r\n 2013          84            6.566         0.6          -3.9           2.79 \r\n 2013          85            16.356        1.7          -6.1           0 \r\n 2013          86            18.41         5.6          -3.9           0 \r\n 2013          87            19.974        10.6         -2.8           0 \r\n 2013          88            20.493        13.9         -1.1           0 \r\n 2013          89            20.251        13.9          3.9           1.27 \r\n 2013          90            17.72         13.3          1.7           0 \r\n 2013          91            16.707        5.6          -6.7           0 \r\n 2013          92            18.863        5.6          -6.1           0 \r\n 2013          93            20.076        7.8          -3.9           0 \r\n 2013          94            20.907        14.4         -1.7           0 \r\n 2013          95            21.043        13.3         -1.7           0 \r\n 2013          96            20.656        18.3          7.8           0 \r\n 2013          97            21.75         16.7          0.6           0 \r\n 2013          98            15.849        22.8          6.7           0 \r\n 2013          99            15.574        22.8          5.6           21.34 \r\n 2013          100           8.192         5.6           1.7           20.57 \r\n 2013          101           5.137         4.4           1.1           11.94 \r\n 2013          102           7.914         3.3          -0.6           0 \r\n 2013          103           14.128        8.3          -1.7           0 \r\n 2013          104           14.827        18.3          3.3           11.68 \r\n 2013          105           15.781        17.2          1.1           4.06 \r\n 2013          106           16.204        8.3           0             0 \r\n 2013          107           11.213        8.9           3.3           26.92 \r\n 2013          108           6.245         5             1.1           32.51 \r\n 2013          109           8.578         3.9          -2.2           0 \r\n 2013          110           18.728        6.1          -3.9           0 \r\n 2013          111           15.839        18.9          3.3           0 \r\n 2013          112           16.703        18.3          7.8           12.7 \r\n 2013          113           16.677        15           -1.1           5.59 \r\n 2013          114           20.158        10.6         -3.9           0 \r\n 2013          115           23.075        14.4         -1.1           0.25 \r\n 2013          116           22.783        19.4          7.8           0 \r\n 2013          117           22.356        19.4          5             0 \r\n 2013          118           23.238        24.4          5.6           0 \r\n 2013          119           22.503        24.4          11.1          0 \r\n 2013          120           20.438        26.1          19.4          0 \r\n 2013          121           23.417        24.4          3.9           0 \r\n 2013          122           12.133        4.4          -0.6           27.43 \r\n 2013          123           4.511         1.1          -0.6           2.79 \r\n 2013          124           6.891         6.7           0             2.54 \r\n 2013          125           12.373        13.3          4.4           9.4 \r\n 2013          126           22.554        20.6          6.1           0 \r\n 2013          127           25.546        23.9          10.6          0 \r\n 2013          128           24.442        23.9          12.2          0 \r\n 2013          129           15.718        18.9          12.8          29.46 \r\n 2013          130           23.021        18.3          7.2           0.51 \r\n 2013          131           21.751        17.8          7.2           0 \r\n 2013          132           25.574        15            1.1           0 \r\n 2013          133           26.373        23.3          4.4           0 \r\n 2013          134           28.32         37.728        14.861        0 \r\n 2013          135           26.52         27.239        15.039        0 \r\n 2013          136           24.1          27.628        13.711        0 \r\n 2013          137           21.2          27.739        16.061        0 \r\n 2013          138           22.32         28.6          15.022        0 \r\n 2013          139           17.14         31.522        15.839        0 \r\n 2013          140           25.08         24.072        14.778        0 \r\n 2013          141           11.73         20.222        13.55         0.254 \r\n 2013          142           12.71         16.228        11.089        0 \r\n 2013          143           28.65         20.15         9.861         0 \r\n 2013          144           29.15         21.639        6.878         0 \r\n 2013          145           5.21          14.989        9.872         31.75 \r\n 2013          146           7.05          14.1          9.7           15.24 \r\n 2013          147           15.92         24.95         13.1          24.638 \r\n 2013          148           22.38         25.95         16.339        6.096 \r\n 2013          149           9.15          24.361        17            9.398 \r\n 2013          150           13.37         21.872        16.689        0.762 \r\n 2013          151           25.45         25.911        15.111        0 \r\n 2013          152           11.23         20.439        12.1          0 \r\n 2013          153           18.13         18.861        9.422         0 \r\n 2013          154           29.63         21.872        8.689         0 \r\n 2013          155           5.22          17.622        12.561        9.144 \r\n 2013          156           13.68         20.7          11.65         6.858 \r\n 2013          157           20.01         20.078        12.05         0 \r\n 2013          158           14.85         20.689        10.522        0 \r\n 2013          159           11.22         20.972        10.628        7.874 \r\n 2013          160           10.7          21.1          14.372        1.016 \r\n 2013          161           14.6          25.261        13.35         0 \r\n 2013          162           24.73         30.328        16.889        0 \r\n 2013          163           23.65         31.311        17.85         4.064 \r\n 2013          164           29.1          28.7          15.828        0 \r\n 2013          165           1.86          23.339        18.472        9.652 \r\n 2013          166           14.1          27.578        17.011        5.334 \r\n 2013          167           27.72         30.072        18.111        0 \r\n 2013          168           28.93         31.3          16.378        0 \r\n 2013          169           26.78         28.55         18.172        0 \r\n 2013          170           16.58         29.828        20.722        0 \r\n 2013          171           27.1          31.378        18.811        0 \r\n 2013          172           14.85         32.311        22.161        0 \r\n 2013          173           25.03         33.789        20.678        0 \r\n 2013          174           13.6          26.872        19.439        6.096 \r\n 2013          175           10.03         25.2          18.528        17.526 \r\n 2013          176           19.38         30.489        19.689        1.016 \r\n 2013          177           25.63         32.889        22.122        0 \r\n 2013          178           16.73         30.4          19.578        0.508 \r\n 2013          179           30.33         29.639        19.9          0 \r\n 2013          180           18.83         24.189        16.7          0.508 \r\n 2013          181           25.62         25.311        14.589        0 \r\n 2013          182           28            27.772        14.411        0 \r\n 2013          183           26.33         28.6          14.65         0 \r\n 2013          184           28.8          27.972        13.889        0 \r\n 2013          185           28.78         29.9          16.228        0 \r\n 2013          186           27.88         31.039        16.461        0 \r\n 2013          187           28.15         32.328        19.472        0 \r\n 2013          188           24.55         33.011        22.472        0 \r\n 2013          189           19.15         31.822        22.778        0 \r\n 2013          190           22.1          33.778        23.111        1.524 \r\n 2013          191           29.78         28.061        19.328        0 \r\n 2013          192           28.47         28.572        16.528        0 \r\n 2013          193           28.45         29.95         16.461        0 \r\n 2013          194           13.6          25.678        18.428        0 \r\n 2013          195           28.32         29.822        17.828        0 \r\n 2013          196           25.02         31.228        18.328        0 \r\n 2013          197           28.45         33.311        21.772        0 \r\n 2013          198           28.33         34.589        21.489        0 \r\n 2013          199           28.5          33.911        22.189        0 \r\n 2013          200           26.67         33.972        20.078        0 \r\n 2013          201           27.2          31.922        15.022        0 \r\n 2013          202           20.02         28.15         17.65         0 \r\n 2013          203           28.1          33.428        17.128        22.098 \r\n 2013          204           19.17         25.072        16.372        0 \r\n 2013          205           25.13         26.411        13.889        0 \r\n 2013          206           23.02         29.272        15.261        0.254 \r\n 2013          207           25.82         24.2          13.822        0 \r\n 2013          208           23.22         20.928        10.572        0 \r\n 2013          209           27.13         24.122        9.55          0 \r\n 2013          210           16.97         23.2          10.989        0 \r\n 2013          211           5.55          21.111        17            2.032 \r\n 2013          212           20.78         28.728        17.4          0 \r\n 2013          213           24.83         30.139        14.011        0 \r\n 2013          214           16.15         27.028        17.572        0 \r\n 2013          215           23.47         25.378        14.628        0 \r\n 2013          216           25.35         26.7          13.228        0 \r\n 2013          217           16.92         29.339        15.861        0 \r\n 2013          218           23.78         30.9          18.439        0 \r\n 2013          219           26.35         26.2          16.872        0 \r\n 2013          220           20.9          26.561        14.039        0 \r\n 2013          221           21.48         26.089        16.989        0 \r\n 2013          222           22.47         28.422        14.478        0 \r\n 2013          223           20.33         29.339        16.161        30.734 \r\n 2013          224           24.1          27.311        16.528        20.066 \r\n 2013          225           23.25         25.039        13.811        0.508 \r\n 2013          226           24            24.128        11.328        0 \r\n 2013          227           20.18         22.328        13.372        0 \r\n 2013          228           24.73         24.928        11.878        0 \r\n 2013          229           25.87         26.589        13.272        0 \r\n 2013          230           25.53         27.278        13.811        0 \r\n 2013          231           19.13         28.361        15.361        0 \r\n 2013          232           22.77         30.922        18.411        0 \r\n 2013          233           18.4          31.8          21.139        0 \r\n 2013          234           16.73         31.211        20.439        0 \r\n 2013          235           20.15         29.972        18.35         0 \r\n 2013          236           15.17         31.578        20.55         0 \r\n 2013          237           22.55         33.178        21.128        0 \r\n 2013          238           22.82         34.5          21.861        0 \r\n 2013          239           22.72         34.511        22.95         0 \r\n 2013          240           22.48         34.961        20.85         0 \r\n 2013          241           22.08         33.75         19.878        0 \r\n 2013          242           21.88         36.189        20.95         0 \r\n 2013          243           22.25         33.311        18.9          0 \r\n 2013          244           22.4          27.639        15.578        2.032 \r\n 2013          245           23.93         25            11.761        0 \r\n 2013          246           23.27         28.078        9.111         0 \r\n 2013          247           20.75         31.822        15.139        0 \r\n 2013          248           20.12         31.672        19.322        0 \r\n 2013          249           21.63         32.4          18.072        0 \r\n 2013          250           13.53         31.95         20.639        0 \r\n 2013          251           12.57         28.739        20.55         0 \r\n 2013          252           20.98         36.65         18.878        0 \r\n 2013          253           20.57         35.039        18.461        0 \r\n 2013          254           15.17         30.65         19.6          0 \r\n 2013          255           21.72         25.289        13.089        0 \r\n 2013          256           21.25         23.889        9.211         0 \r\n 2013          257           19.47         24.7          7.428         0 \r\n 2013          258           7.57          20.678        12.6          0 \r\n 2013          259           11.66         19.25         10.261        0 \r\n 2013          260           3.33          18.278        11.272        7.874 \r\n 2013          261           18.15         32.478        17.911        0.508 \r\n 2013          262           8.11          28.761        16.611        0 \r\n 2013          263           16.38         19.111        9.05          0.508 \r\n 2013          264           20.5          23.85         6.167         0.508 \r\n 2013          265           19.57         25.178        8.528         0.254 \r\n 2013          266           19.85         24.611        9.461         0.254 \r\n 2013          267           12.74         24.161        12.2          0 \r\n 2013          268           17.62         25.461        9.722         0 \r\n 2013          269           18.6          28.689        13.472        0 \r\n 2013          270           17.95         30.2          17.311        0 \r\n 2013          271           6.57          21.061        7.206         0.762 \r\n 2013          272           18.65         24.489        6.917         0.254 \r\n 2013          273           17.7          25.422        9.072         0 \r\n 2013          274           17.9          28.411        13.278        0 \r\n 2013          275           15.32         29.05         13.372        0 \r\n 2013          276           12.52         27.989        17.711        0 \r\n 2013          277           6.51          24.189        17.239        5.588 \r\n 2013          278           14.2          18.978        7.056         0.762 \r\n 2013          279           4.24          9.622         5.161         0.508 \r\n 2013          280           17.25         23.811        5.522         0.508 \r\n 2013          281           17.03         25.45         7.378         0 \r\n 2013          282           16.65         24.05         8.628         0.254 \r\n 2013          283           16.23         25.289        7.867         0 \r\n 2013          284           6.79          22.45         11.772        0 \r\n 2013          285           16.45         19.222        6.55          0 \r\n 2013          286           16.23         19.528        4.322         0 \r\n 2013          287           10.44         17.589        2.956         0 \r\n 2013          288           4.3           14.639        7.761         0.254 \r\n 2013          289           4.08          9.961         2.389         0 \r\n 2013          290           13.63         16.972        2.206         0 \r\n 2013          291           11.1          10.839        2.733         0 \r\n 2013          292           9.09          13.728        0.044         0 \r\n 2013          293           6.73          17.861        3.339         0 \r\n 2013          294           13.3          10.661       -0.917         1.524 \r\n 2013          295           4.31          4.856         1.278         5.08 \r\n 2013          296           6.86          5.322        -2.039         0.508 \r\n 2013          297           10.58         8.489        -1.839         0 \r\n 2013          298           12.52         13.689       -3.906         0 \r\n 2013          299           13.1          11.161       -1.617         0 \r\n 2013          300           13.68         17.889       -4.594         0 \r\n 2013          301           10.27         10.839        2.483         0 \r\n 2013          302           6.91          12.861        3.722         0 \r\n 2013          303           0.68          17.161        10.628        0 \r\n 2013          304           5.18          10.422        4.55          0 \r\n 2013          305           9.29          12.2          3.3           0 \r\n 2013          306           12.04         12.2          3.9           0 \r\n 2013          307           9.91          12.2         -1.1           0 \r\n 2013          308           2.79          11.1          6.7           3.05 \r\n 2013          309           1.1           9.4           2.2           14.48 \r\n 2013          310           11.87         8.9           0             8.89 \r\n 2013          311           11.68         6.7          -2.8           0 \r\n 2013          312           7.92          13.9         -4.4           0 \r\n 2013          313           11.54         13.3          3.9           0 \r\n 2013          314           8.73          11.1         -4.4           0 \r\n 2013          315           2.97          7.8          -4.4           0 \r\n 2013          316           11.69        -2.2          -13.3          0 \r\n 2013          317           11.35         10           -8.9           0 \r\n 2013          318           8.94          10.6          0             0 \r\n 2013          319           9.16          12.2         -3.3           0 \r\n 2013          320           3.01          17.8          2.8           0 \r\n 2013          321           5.26          16.1          5.6           5.59 \r\n 2013          322           10.07         8.3          -0.6           0 \r\n 2013          323           10.12         11.1         -2.2           0 \r\n 2013          324           2.71          10            3.3           0 \r\n 2013          325           1.21          5            -3.9           0 \r\n 2013          326           11.12        -3.9          -11.1          2.54 \r\n 2013          327           10.57        -6.1          -14.4          0 \r\n 2013          328           10.18        -3.9          -16.7          0 \r\n 2013          329           7.06          1.7          -5.6           0.51 \r\n 2013          330           9.72          1.7          -5.6           0 \r\n 2013          331           9.85         -5            -13.9          0 \r\n 2013          332           9.67         -1.1          -8.9           0 \r\n 2013          333           7.79          1.7          -11.1          0 \r\n 2013          334           9.17          8.9          -5             0 \r\n 2013          335           5.78          8.9          -5             0 \r\n 2013          336           5.06          6.7          -0.6           0 \r\n 2013          337           1.78          6.1          -0.6           0 \r\n 2013          338           0.84          2.8          -5.6           0.51 \r\n 2013          339           6.32         -5            -14.4          0 \r\n 2013          340           8.67         -10.6         -18.9          0 \r\n 2013          341           7            -12.2         -21.1          0 \r\n 2013          342           4.07         -8.9          -13.3          2.54 \r\n 2013          343           9.38         -8.9          -20            0.51 \r\n 2013          344           7.69         -8.3          -21.1          0 \r\n 2013          345           9.31         -7.8          -19.4          1.52 \r\n 2013          346           7.19         -3.3          -21.1          0 \r\n 2013          347           8.26         -2.8          -11.7          0 \r\n 2013          348           6.93         -4.4          -9.4           0 \r\n 2013          349           3.71         -9.4          -13.9          0 \r\n 2013          350           3.77         -3.9          -13.9          0 \r\n 2013          351           8.72          0.6          -8.3           0 \r\n 2013          352           7.02          7.2          -10            0 \r\n 2013          353           3.97          3.9          -2.8           0 \r\n 2013          354           0.96         -1.1          -6.7           0 \r\n 2013          355           2.29         -5            -9.4           0 \r\n 2013          356           7.12         -5            -8.3           2.79 \r\n 2013          357           9.12         -8.3          -21.1          0 \r\n 2013          358           5.7          -13.3         -26.1          0 \r\n 2013          359           5.53         -0.6          -13.3          0 \r\n 2013          360           6.48          1.1          -8.9           0 \r\n 2013          361           8.23          5.6          -11.1          0 \r\n 2013          362           8.65          8.9          -3.3           0 \r\n 2013          363           8.32          6.7          -18.3          0 \r\n 2013          364           4.07         -12.8         -20            0.76 \r\n 2013          365           5            -12.2         -20            0 \r\n 2014          1             5.21         -13.3         -16.7          2.03 \r\n 2014          2             9.33         -15.6         -20            0 \r\n 2014          3             8.36         -3.9          -23.9          0 \r\n 2014          4             3.73          0.6          -10.6          0 \r\n 2014          5             7.56         -10.6         -19.4          0 \r\n 2014          6             8.53         -16.1         -27.2          0 \r\n 2014          7             6.27         -10.6         -23.9          0 \r\n 2014          8             7.98         -10.6         -15.6          0 \r\n 2014          9             5.72         -7.2          -18.3          0 \r\n 2014          10            1.6          -0.6          -9.4           0 \r\n 2014          11            5.47         -0.6          -5.6           0 \r\n 2014          12            4.5           5.6          -7.8           0 \r\n 2014          13            7.92          5             0             0 \r\n 2014          14            3.03          3.3          -5             0 \r\n 2014          15            7.7          -3.9          -11.7          0 \r\n 2014          16            2.96          2.2          -6.7           1.02 \r\n 2014          17            10.12        -6.1          -16.7          0.51 \r\n 2014          18            2.05          2.2          -12.2          0 \r\n 2014          19            10.08         11.1         -10.6          0 \r\n 2014          20            4.7           10.6         -1.7           0 \r\n 2014          21            5.93          1.7          -22.8          0.51 \r\n 2014          22            7.5          -8.9          -15.6          0 \r\n 2014          23            10.91        -13.3         -23.3          0 \r\n 2014          24            5.09          1.1          -18.9          0 \r\n 2014          25            10.21         3.9          -11.1          0 \r\n 2014          26            5.24          6.7          -7.2           0 \r\n 2014          27            11.37        -3.3          -21.1          0 \r\n 2014          28            11.48        -10           -23.3          0 \r\n 2014          29            11.68         3.3          -20            0 \r\n 2014          30            6.82          3.3          -5.6           0 \r\n 2014          31            7.55         -5.6          -16.1          0 \r\n 2014          32            9.72         -5.6          -12.2          2.79 \r\n 2014          33            12.82        -8.9          -22.2          0 \r\n 2014          34            12.54        -1.1          -20            0 \r\n 2014          35            4.62         -1.7          -10.6          1.27 \r\n 2014          36            11.95        -10.6         -18.3          1.02 \r\n 2014          37            13.03        -13.3         -24.4          0 \r\n 2014          38            11.71        -10           -24.4          0 \r\n 2014          39            8.73         -7.8          -13.3          1.78 \r\n 2014          40            12.69        -8.9          -20.6          0 \r\n 2014          41            14.06        -13.9         -28.3          0 \r\n 2014          42            13.7         -10           -25            0 \r\n 2014          43            12.05        -6.1          -11.7          1.02 \r\n 2014          44            14.01         4.4          -12.8          0 \r\n 2014          45            12.96         0.6          -13.3          0.76 \r\n 2014          46            8.72         -3.3          -18.3          1.78 \r\n 2014          47            13.42         0.6          -9.4           0 \r\n 2014          48            13.37         4.4          -6.1           4.32 \r\n 2014          49            13.57         10           -4.4           0 \r\n 2014          50            12.81         10.6         -2.2           0 \r\n 2014          51            2.73          6.7           0             13.46 \r\n 2014          52            15.14         0.6          -9.4           0 \r\n 2014          53            15.57        -1.1          -8.3           0 \r\n 2014          54            15.86        -5.6          -13.3          0 \r\n 2014          55            11.5         -5.6          -13.9          0 \r\n 2014          56            14.98        -8.3          -19.4          1.02 \r\n 2014          57            17.31        -6.7          -23.9          0 \r\n 2014          58            17.6         -5            -22.2          0 \r\n 2014          59            12.67        -2.8          -21.1          0 \r\n 2014          60            8.85         -2.8          -18.3          5.84 \r\n 2014          61            17.52        -18.3         -24.4          3.56 \r\n 2014          62            17.07        -11.7         -23.3          0 \r\n 2014          63            17.55        -5            -15            0 \r\n 2014          64            11.65        -5            -8.3           0 \r\n 2014          65            15.2          0            -7.8           0 \r\n 2014          66            9.88          2.8          -1.7           0 \r\n 2014          67            16.97        -1.1          -7.2           0 \r\n 2014          68            16.86         6.7          -10.6          0 \r\n 2014          69            16.16         15.6          3.3           0 \r\n 2014          70            6.7           15            2.2           0 \r\n 2014          71            11.36         3.9          -3.3           0 \r\n 2014          72            19.01         15           -2.2           0 \r\n 2014          73            17.02         15            2.8           0 \r\n 2014          74            12.54         11.1         -1.7           0 \r\n 2014          75            16.66         5.6          -7.8           1.52 \r\n 2014          76            17.11         7.2          -6.1           0 \r\n 2014          77            8.58          7.2           0             0 \r\n 2014          78            7.39          7.2          -1.7           1.27 \r\n 2014          79            19.01         10.6         -2.2           0 \r\n 2014          80            19.68         13.3         -0.6           0 \r\n 2014          81            17.52         12.8         -8.3           0 \r\n 2014          82            21.49        -1.1          -10            0 \r\n 2014          83            13.12         3.3          -5.6           0.51 \r\n 2014          84            22.28         2.8          -8.3           0 \r\n 2014          85            18.76         10           -7.2           0 \r\n 2014          86            1.18          11.7          3.9           3.05 \r\n 2014          87            5.14          10.6         -0.6           12.45 \r\n 2014          88            22.41         7.2          -2.2           0 \r\n 2014          89            18.44         19.4          0.6           0 \r\n 2014          90            17.64         21.7          7.8           3.3 \r\n 2014          91            15.55         5.583        -6.894         0 \r\n 2014          92            13.16         9.389        -1.089         0 \r\n 2014          93            3.46          6.4           0.467         0 \r\n 2014          94            3.79          4.433        -1.939         0.254 \r\n 2014          95            22.6          12.7         -3.378         0 \r\n 2014          96            8.92          14.911        2.311         0 \r\n 2014          97            13.37         16.228        5.461         0 \r\n 2014          98            23.82         12.439        1.156         0 \r\n 2014          99            22.88         23.789       -0.928         4.064 \r\n 2014          100           20.98         19.328        8.139         0 \r\n 2014          101           22.2          24.539        3.2           0 \r\n 2014          102           17.2          29.739        11.939        2.794 \r\n 2014          103           1.09          13.811       -0.422         43.942 \r\n 2014          104           17.98         3.722        -2.728         1.524 \r\n 2014          105           25.7          6.128        -4.917         0 \r\n 2014          106           14.13         17.7          1.006         0 \r\n 2014          107           16.25         11.7         -0.117         0 \r\n 2014          108           24.98         16.878       -2.356         0 \r\n 2014          109           21.9          25.1          5.606         0 \r\n 2014          110           19.43         28.622        11.822        2.032 \r\n 2014          111           15.43         22.389        8.972         0 \r\n 2014          112           26.2          17.972        2.783         0 \r\n 2014          113           4.49          11.011        6.278         5.842 \r\n 2014          114           6             13.378        5.533         4.572 \r\n 2014          115           24.07         23.528        3.989         0 \r\n 2014          116           18.87         20.989        6.45          0 \r\n 2014          117           6.14          15.7          5.489         35.306 \r\n 2014          118           2.95          13.822        9             15.748 \r\n 2014          119           3.61          9.15          2.106         4.318 \r\n 2014          120           6.21          5.522         2.45          8.382 \r\n 2014          121           8.94          8.572         4.444         0.254 \r\n 2014          122           20.63         18.939        3.117         0 \r\n 2014          123           23.02         21.672        5.656         0.254 \r\n 2014          124           22.15         16.622        6.933         0 \r\n 2014          125           26.13         20.8          6.717         0 \r\n 2014          126           23.43         23.961        7.744         0 \r\n 2014          127           25.63         31.489        12.3          0 \r\n 2014          128           12.93         27.189        12.022        0.254 \r\n 2014          129           18.6          20.339        9.478         0 \r\n 2014          130           16.37         27.089        8.389         0 \r\n 2014          131           11.05         23.872        10.589        20.066 \r\n 2014          132           8.66          23.011        8.828         11.684 \r\n 2014          133           14.07         14.428        7.439         0 \r\n 2014          134           19.1          16.722        4.25          3.81 \r\n 2014          135           13.4          9.711         3.056         0 \r\n 2014          136           2.85          13.511        5.944         0 \r\n 2014          137           28.84         19.528        3.461         0 \r\n 2014          138           28.71         21.078        6.428         0 \r\n 2014          139           10.63         23.15         13.061        0.762 \r\n 2014          140           19.03         23.15         13.061        42.418 \r\n 2014          141           30.69         23.15         13.061        0 \r\n 2014          142           21.09         23.15         13.061        0 \r\n 2014          143           28.81         23.15         13.061        0 \r\n 2014          144           24.36         23.15         13.061        0 \r\n 2014          145           11.78         23.15         13.061        1.016 \r\n 2014          146           15.51         23.15         13.061        18.288 \r\n 2014          147           20.36         23.15         13.061        2.54 \r\n 2014          148           17.92         23.15         13.061        0 \r\n 2014          149           24.69         23.15         13.061        0 \r\n 2014          150           24.83         23.15         13.061        0 \r\n 2014          151           19.86         29.872        20.122        0 \r\n 2014          152           24.31         31.872        18.45         20.32 \r\n 2014          153           28.01         27.839        17.15         0 \r\n 2014          154           14.36         25.089        13.589        23.876 \r\n 2014          155           17.27         24.611        16.289        1.778 \r\n 2014          156           19            23.111        14.528        0 \r\n 2014          157           29.07         30.122        14.778        0 \r\n 2014          158           8.61          22.489        14.989        12.192 \r\n 2014          159           27.12         23.528        13.639        0 \r\n 2014          160           15.73         23.372        13.389        0 \r\n 2014          161           21.86         23.55         14.922        0 \r\n 2014          162           29.8          28.539        14            0 \r\n 2014          163           26.83         23.572        13.372        0 \r\n 2014          164           29.43         24.9          9.878         0 \r\n 2014          165           22.02         27.822        13.139        0 \r\n 2014          166           24.47         27.911        16.622        0 \r\n 2014          167           15.15         30.922        15.561        13.97 \r\n 2014          168           21.73         29.322        16.628        17.526 \r\n 2014          169           22.58         30.289        19.411        0.508 \r\n 2014          170           8.57          26.178        18.339        27.432 \r\n 2014          171           28.7          30.922        16.261        0 \r\n 2014          172           27.03         29.628        19.028        0 \r\n 2014          173           11.94         24.7          18.2          24.892 \r\n 2014          174           21.01         28.489        16.978        0.254 \r\n 2014          175           23.44         27.511        17.339        0 \r\n 2014          176           28.17         30.25         16.95         0 \r\n 2014          177           13.58         26.039        19.4          31.75 \r\n 2014          178           8.16          26.228        19.428        19.05 \r\n 2014          179           15.93         29.4          17.128        7.112 \r\n 2014          180           15.71         27.261        16.328        0.254 \r\n 2014          181           3.94          25.089        17.822        32.766 \r\n 2014          182           21.07         24.628        14.072        1.016 \r\n 2014          183           5.62          21.161        13.828        0 \r\n 2014          184           28.85         25.161        11.511        0 \r\n 2014          185           28.14         25.878        13.628        0 \r\n 2014          186           13.23         24.289        16.689        21.59 \r\n 2014          187           20.85         31.572        19.75         0 \r\n 2014          188           23.69         30.139        19.389        0.254 \r\n 2014          189           27.46         26.478        17.378        0 \r\n 2014          190           26.43         26.939        14.061        0 \r\n 2014          191           26.68         27.978        14.811        0 \r\n 2014          192           2.94          27.9          14.8          0 \r\n 2014          193           13.67         27.95         18.828        27.94 \r\n 2014          194           25.09         28.8          17.211        1.27 \r\n 2014          195           21.46         22.211        13.039        0 \r\n 2014          196           17.58         22.039        11.172        0 \r\n 2014          197           24.03         24.928        12.411        0 \r\n 2014          198           28.09         25.561        12.589        0 \r\n 2014          199           22.9          25.628        14.089        0 \r\n 2014          200           23.81         27.078        16.722        0 \r\n 2014          201           26.85         28.428        16.561        0 \r\n 2014          202           24.34         31.839        19.822        0 \r\n 2014          203           20.94         30.9          19.978        0 \r\n 2014          204           27.47         27.639        15.939        0 \r\n 2014          205           15.96         25.2          15.161        1.016 \r\n 2014          206           19.23         26.872        17.089        4.064 \r\n 2014          207           18.01         29.222        19.928        0 \r\n 2014          208           23.43         24.139        16.778        0 \r\n 2014          209           18.18         23.878        14.978        0 \r\n 2014          210           25            25.661        13.061        0 \r\n 2014          211           26.22         27.072        14.061        0 \r\n 2014          212           22.56         27.061        13.972        0 \r\n 2014          213           26.52         29.289        14.15         0 \r\n 2014          214           25.64         28.4          16.95         0 \r\n 2014          215           26.2          29.489        16.672        0 \r\n 2014          216           22.52         30.361        17.461        0 \r\n 2014          217           7.27          26.772        19.578        0 \r\n 2014          218           5.05          20.639        17.978        26.924 \r\n 2014          219           5.57          21.628        19.311        1.524 \r\n 2014          220           19.61         25.889        17.478        0 \r\n 2014          221           20.08         26.261        18.05         0 \r\n 2014          222           14.49         26.361        17.228        0 \r\n 2014          223           24.6          25.35         16.3          0 \r\n 2014          224           25.4          24.75         12.689        0 \r\n 2014          225           26.17         27.25         13.2          0 \r\n 2014          226           20.26         27.039        14.2          0 \r\n 2014          227           4.09          21.322        18.711        7.874 \r\n 2014          228           13.65         26.522        18.25         0 \r\n 2014          229           22.83         29.228        17.45         0 \r\n 2014          230           24.58         29.922        19.139        0 \r\n 2014          231           24.75         28.672        19.339        0 \r\n 2014          232           5.93          25.222        17.689        6.858 \r\n 2014          233           16.36         29.9          22.628        3.302 \r\n 2014          234           15.06         30.828        21.339        3.81 \r\n 2014          235           13.7          28.728        21.589        8.636 \r\n 2014          236           23.46         32.45         21.928        0 \r\n 2014          237           23.11         30.6          19.611        0 \r\n 2014          238           17.44         26.561        16.95         22.86 \r\n 2014          239           10.96         24.172        17.45         0.254 \r\n 2014          240           9.68          25.339        18.222        29.464 \r\n 2014          241           14.5          28.55         18.278        27.94 \r\n 2014          242           18.63         26.422        17.728        0 \r\n 2014          243           15.63         29.511        16.872        43.434 \r\n 2014          244           18.03         25.489        16.1          0 \r\n 2014          245           23.43         25.628        14.5          1.27 \r\n 2014          246           21.19         28.478        14.428        0 \r\n 2014          247           21.12         33.139        22.511        0 \r\n 2014          248           9.35          23.211        11.4          17.78 \r\n 2014          249           22.96         24.672        9.272         0.254 \r\n 2014          250           23.06         23.489        10.489        0 \r\n 2014          251           6.15          21.328        11.039        1.016 \r\n 2014          252           6.2           22.989        18.028        33.528 \r\n 2014          253           8.22          19.989        9.578         2.032 \r\n 2014          254           8.73          13.6          8.389         0 \r\n 2014          255           8.05          11.5          3.017         7.366 \r\n 2014          256           21.55         15.7          1.806         0 \r\n 2014          257           18.53         20.922        7.856         0 \r\n 2014          258           11.23         16.139        7.933         0 \r\n 2014          259           21.32         19.778        4.572         0 \r\n 2014          260           16.04         25.178        8.872         0 \r\n 2014          261           20.79         22.472        9.222         0 \r\n 2014          262           17.87         26.572        11.5          0 \r\n 2014          263           15.26         28.45         13.278        7.874 \r\n 2014          264           17.81         20.122        10.1          0 \r\n 2014          265           20.23         23.689        6.978         0 \r\n 2014          266           12.48         21.022        8.989         0 \r\n 2014          267           9.39          20.75         13.072        22.86 \r\n 2014          268           15.53         25.922        13.789        0 \r\n 2014          269           16.94         27.472        14.189        0 \r\n 2014          270           15.32         27.739        15.161        0 \r\n 2014          271           16.26         27.672        14.178        0 \r\n 2014          272           12.66         27.728        13.022        0 \r\n 2014          273           9.8           19.689        11.861        8.128 \r\n 2014          274           6             21.589        12.439        22.606 \r\n 2014          275           2.05          18.472        10.139        6.604 \r\n 2014          276           6.25          11.339        2.572         0 \r\n 2014          277           17.49         11.872        0.761         0 \r\n 2014          278           12.46         18.211        4.561         0 \r\n 2014          279           15.49         18.328        5.794         0 \r\n 2014          280           17.16         20.178        8.578         0 \r\n 2014          281           2.56          21.25         8.5           1.524 \r\n 2014          282           14.83         17.289        6.55          2.54 \r\n 2014          283           11.61         12.878        2.094         0 \r\n 2014          284           16.76         15.822        1.683         0 \r\n 2014          285           7.11          13.489        2.594         0.254 \r\n 2014          286           1.67          11.611        10.411        33.782 \r\n 2014          287           8.72          17.372        9.272         5.334 \r\n 2014          288           16.26         19.9          6.328         0 \r\n 2014          289           14.26         23.95         3.822         0 \r\n 2014          290           9.38          15.511        8.228         0 \r\n 2014          291           11.3          15            3.206         0 \r\n 2014          292           12.29         19.611        1.683         0 \r\n 2014          293           14.83         21.289        6.906         0 \r\n 2014          294           14.57         18.272        4.533         0 \r\n 2014          295           8.89          18.389        4.656         1.016 \r\n 2014          296           10.31         21.928        8.539         12.954 \r\n 2014          297           5.92          22.172        7.256         0.254 \r\n 2014          298           13.85         21.072        9.939         0 \r\n 2014          299           11.96         20.178        5.767         0 \r\n 2014          300           8.07          19.678        9.439         0 \r\n 2014          301           11.68         12.239        3.867         0 \r\n 2014          302           12.47         12            2.856         0 \r\n 2014          303           11.46         15.678        1.478         0 \r\n 2014          304           13.41         4.794        -4.444         0 \r\n 2014          305           13.17         7.2          -5             0 \r\n 2014          306           11.42         14.4          0             0 \r\n 2014          307           4.22          15.6          5.6           0 \r\n 2014          308           12.01         15.6          2.8           1.02 \r\n 2014          309           5.29          15            2.2           0 \r\n 2014          310           11.49         15            1.7           0.51 \r\n 2014          311           8.26          12.8         -2.2           0 \r\n 2014          312           10            10            1.7           0 \r\n 2014          313           5.31          10           -0.6           0 \r\n 2014          314           6.82          15.6          4.4           0 \r\n 2014          315           5.25          6.7          -6.1           1.27 \r\n 2014          316           9.24         -3.9          -9.4           0 \r\n 2014          317           6            -3.9          -7.8           0 \r\n 2014          318           11.32        -3.3          -13.9          0 \r\n 2014          319           3.7          -3.3          -8.3           1.02 \r\n 2014          320           11.18        -5            -14.4          1.52 \r\n 2014          321           9.99         -8.9          -13.9          0 \r\n 2014          322           8.09         -6.7          -16.1          0 \r\n 2014          323           5.49         -2.8          -10            0 \r\n 2014          324           10.62        -4.4          -11.1          0 \r\n 2014          325           8.85          2.2          -13.3          0 \r\n 2014          326           6.59          11.1          0.6           0 \r\n 2014          327           1.97          11.7          5.6           4.57 \r\n 2014          328           2.3           7.8          -5.6           6.6 \r\n 2014          329           9.79          0.6          -10            0 \r\n 2014          330           5.53          0            -3.9           9.4 \r\n 2014          331           9.68         -2.2          -20.6          0 \r\n 2014          332           9.24          0            -13.9          0 \r\n 2014          333           6.86          7.8          -5             0 \r\n 2014          334           8.98          7.2          -11.1          0 \r\n 2014          335           5.98         -9.4          -13.9          0 \r\n 2014          336           9.25          1.7          -13.3          0 \r\n 2014          337           8.78          1.7          -7.8           0 \r\n 2014          338           5.07         -0.6          -6.7           0 \r\n 2014          339           2.87          1.7          -1.7           0 \r\n 2014          340           8.07          3.3          -3.3           0 \r\n 2014          341           2.72          2.8          -2.2           0 \r\n 2014          342           4.16          3.3           0.6           0.25 \r\n 2014          343           5.97          1.7          -7.2           0 \r\n 2014          344           1.84         -0.6          -5             0 \r\n 2014          345           2.71          0.6          -2.8           0 \r\n 2014          346           3.93          7.2          -1.1           0 \r\n 2014          347           2.33          10            0.6           0 \r\n 2014          348           1.33          12.2          8.9           0 \r\n 2014          349           1.01          12.2          8.3           8.13 \r\n 2014          350           5.82          8.9          -7.8           2.29 \r\n 2014          351           7.73         -4.4          -11.7          0 \r\n 2014          352           3.23         -3.9          -8.3           0 \r\n 2014          353           1.97         -1.1          -3.9           0 \r\n 2014          354           1.42          0.6          -2.2           0 \r\n 2014          355           1.67          3.9           0.6           0 \r\n 2014          356           1.34          4.4           2.8           3.81 \r\n 2014          357           3.12          2.8           0             9.91 \r\n 2014          358           2.35          0.6           0             5.08 \r\n 2014          359           7.46          7.2          -2.2           0 \r\n 2014          360           1.38          6.7          -2.2           0 \r\n 2014          361           6.53          0            -5             0.51 \r\n 2014          362           8.44          0            -10.6          0 \r\n 2014          363           6.9          -0.6          -9.4           0 \r\n 2014          364           7.39         -9.4          -20            0 \r\n 2014          365           8.82         -9.4          -20            0 \r\n 2015          1             8.31          3.3          -11.7          0 \r\n 2015          2             5.24          1.1          -8.9           0 \r\n 2015          3             6.07          2.8          -4.4           0 \r\n 2015          4             8.75          1.1          -18.9          0.76 \r\n 2015          5             2.31         -13.9         -20.6          1.27 \r\n 2015          6             7.59         -13.9         -22.2          1.78 \r\n 2015          7             9.22         -12.8         -21.7          0 \r\n 2015          8             0.45         -5            -24.4          0 \r\n 2015          9             8.89         -6.1          -18.3          0 \r\n 2015          10            7.96         -1.1          -21.1          0 \r\n 2015          11            7.91         -1.7          -13.3          0 \r\n 2015          12            9.91         -1.7          -16.1          0 \r\n 2015          13            10           -8.3          -21.7          0 \r\n 2015          14            5.99         -4.4          -12.8          0 \r\n 2015          15            9.71          2.8          -9.4           0 \r\n 2015          16            9.86          10.6         -7.2           0 \r\n 2015          17            5.5           10            1.7           0 \r\n 2015          18            9.05          7.2          -1.1           0 \r\n 2015          19            4.08          6.7          -2.8           0.25 \r\n 2015          20            7.49          6.1          -0.6           0 \r\n 2015          21            3.74          5.6          -1.1           0 \r\n 2015          22            2.64         -0.6          -3.9           0 \r\n 2015          23            6.37          5            -7.8           0 \r\n 2015          24            8.72          8.9          -2.2           0 \r\n 2015          25            2.94          8.3          -1.1           1.27 \r\n 2015          26            10.33         9.4          -2.2           0 \r\n 2015          27            10.74         8.9          -2.2           0 \r\n 2015          28            7.46          6.7          -2.2           0 \r\n 2015          29            4.24          6.7          -1.1           0 \r\n 2015          30            11.33         0            -10.6          0 \r\n 2015          31            1.88          2.8          -5             1.78 \r\n 2015          32            6.61          0.6          -11.1          16 \r\n 2015          33            11.93        -11.1         -22.8          0 \r\n 2015          34            9.24         -7.8          -18.3          0 \r\n 2015          35            10.02        -8.3          -12.8          0.25 \r\n 2015          36            12.71        -10           -26.1          0 \r\n 2015          37            12.7          0.6          -26.1          0 \r\n 2015          38            12.97         4.4          -7.8           0 \r\n 2015          39            7.4           3.9          -0.6           0 \r\n 2015          40            5.5           1.7          -1.7           0 \r\n 2015          41            6.65          1.1          -5.6           0 \r\n 2015          42            11.81         1.1          -6.1           0 \r\n 2015          43            12.73        -4.4          -18.3          0 \r\n 2015          44            13.37         0.6          -12.2          0 \r\n 2015          45            13.39         0.6          -13.3          0 \r\n 2015          46            6.97         -12.8         -16.7          0 \r\n 2015          47            7.25         -4.4          -13.3          0 \r\n 2015          48            11.83        -4.4          -12.2          0 \r\n 2015          49            14.19        -10           -20            0 \r\n 2015          50            15.5         -11.7         -22.8          0 \r\n 2015          51            12.68         0.6          -13.3          0 \r\n 2015          52            12.25         0.6          -6.1           0 \r\n 2015          53            15.24        -3.9          -17.2          0 \r\n 2015          54            16.46        -8.9          -23.9          0 \r\n 2015          55            11.35         2.2          -13.3          0 \r\n 2015          56            5.94          1.7          -8.3           4.06 \r\n 2015          57            16.51        -8.3          -20.6          0 \r\n 2015          58            17.4         -10.6         -24.4          0 \r\n 2015          59            14.79        -6.1          -20.6          0 \r\n 2015          60            16.47        -5            -20            0 \r\n 2015          61            10.07        -1.1          -12.8          0 \r\n 2015          62            5.28         -1.1          -10            0 \r\n 2015          63            16.19         0.6          -13.3          0 \r\n 2015          64            18.4         -2.2          -22.2          0 \r\n 2015          65            17.49        -5.6          -20            0 \r\n 2015          66            18.11         11.7         -6.1           0 \r\n 2015          67            17.12         10           -3.3           0 \r\n 2015          68            18.6          11.1         -4.4           0 \r\n 2015          69            18.08         13.9         -4.4           0 \r\n 2015          70            18.87         21.1         -2.8           0 \r\n 2015          71            18.27         15.6         -1.1           0 \r\n 2015          72            18.33         22.2          0             0 \r\n 2015          73            19.19         21.7          0             0 \r\n 2015          74            12.58         18.3         -1.7           0 \r\n 2015          75            17.72         22.8          2.2           0 \r\n 2015          76            14.72         28.9          0             0 \r\n 2015          77            12.82         7.8           0             0 \r\n 2015          78            9.49          12.2          0             0 \r\n 2015          79            20.39         8.9          -1.1           0 \r\n 2015          80            20.47         17.8         -2.8           0 \r\n 2015          81            19.24         12.2         -0.6           0 \r\n 2015          82            7.88          16.7         -2.2           0 \r\n 2015          83            2.31          3.3          -2.2           0 \r\n 2015          84            12.67         1.1          -2.2           5.84 \r\n 2015          85            17.33         8.3          -4.4           0 \r\n 2015          86            19.45         7.2          -6.7           0 \r\n 2015          87            20.94         3.9          -6.7           0 \r\n 2015          88            16.6          8.9          -2.2           0.51 \r\n 2015          89            21.31         15.6         -2.2           0 \r\n 2015          90            22.64         23.3         -0.6           0 \r\n 2015          91            22.33         27.989        5.278         1.524 \r\n 2015          92            19.3          18.25         8.75          15.748 \r\n 2015          93            22.15         8.972        -2.022         0 \r\n 2015          94            22.44         18.45        -1.222         0 \r\n 2015          95            23.03         22.489        6.389         0 \r\n 2015          96            4.57          13.378        7.139         1.778 \r\n 2015          97            2.4           10.372        5.161         2.286 \r\n 2015          98            4.25          10.772        4.833         4.064 \r\n 2015          99            4.39          9.228         0.506         7.874 \r\n 2015          100           24.67         12.578        1.928         0 \r\n 2015          101           23.72         22.022        0.783         0 \r\n 2015          102           22.09         21.972        7.783         7.112 \r\n 2015          103           25.09         17.839        6.411         0 \r\n 2015          104           20.65         20.95         4.672         0 \r\n 2015          105           19.43         19.989        6.028         0 \r\n 2015          106           20.49         23.511        10.528        0 \r\n 2015          107           19.51         26            10.589        0 \r\n 2015          108           5.27          20.439        13.022        22.86 \r\n 2015          109           6.81          17.911        7.589         10.668 \r\n 2015          110           16.91         11.661        1.239         0 \r\n 2015          111           21.96         12.3          0.389         0 \r\n 2015          112           26.74         12.8         -0.783         0 \r\n 2015          113           24.25         16.161       -0.583         0 \r\n 2015          114           6.88          13.372        6.694         8.128 \r\n 2015          115           6.21          10.489        5.461         4.318 \r\n 2015          116           27.32         16.3          2.872         0 \r\n 2015          117           27.43         19.139        4.156         0 \r\n 2015          118           25.54         22.972        5.844         0 \r\n 2015          119           27.24         21.389        7.217         0 \r\n 2015          120           27.36         21.422        7.583         0 \r\n 2015          121           12.8          21.222        5.361         0.508 \r\n 2015          122           17.56         21.811        9.15          2.794 \r\n 2015          123           24.92         28.361        12.978        0 \r\n 2015          124           10.25         19.861        13.961        2.54 \r\n 2015          125           14.27         23.478        13.872        11.176 \r\n 2015          126           17.24         24.311        16.239        0 \r\n 2015          127           11.98         24.572        16.528        4.064 \r\n 2015          128           17.25         19.522        11.711        0 \r\n 2015          129           24.61         22.211        7.967         0 \r\n 2015          130           6.1           20.072        13.372        6.35 \r\n 2015          131           5.69          13.372        6.389         0 \r\n 2015          132           27.87         19.022        4.511         0 \r\n 2015          133           26.99         21.4          6.067         0 \r\n 2015          134           2.64          15.622        10.689        22.098 \r\n 2015          135           14.24         22.561        12.878        0 \r\n 2015          136           18.86         26.761        16.672        5.08 \r\n 2015          137           14.73         23.389        12.322        7.112 \r\n 2015          138           17.06         12.339        4.978         0 \r\n 2015          139           21.57         13.1          2.511         0 \r\n 2015          140           6.63          9.478         4.656         2.286 \r\n 2015          141           28.42         24.328        3.867         0 \r\n 2015          142           22.17         24            8.589         0 \r\n 2015          143           15.26         22.239        13.261        0 \r\n 2015          144           4.86          20.522        14.622        20.066 \r\n 2015          145           22.98         25.761        15.861        4.318 \r\n 2015          146           11.92         21.278        15            20.828 \r\n 2015          147           28.64         27.922        12.611        0 \r\n 2015          148           20.02         25.4          15.039        0 \r\n 2015          149           13.53         24.261        14.25         0 \r\n 2015          150           10.82         16.239        11.828        0.254 \r\n 2015          151           28.2          19.6          8.739         0 \r\n 2015          152           29.74         22.228        8.911         0 \r\n 2015          153           21.18         21.689        11.411        0 \r\n 2015          154           18.98         26.061        15.178        2.286 \r\n 2015          155           17.44         27.278        15.45         0 \r\n 2015          156           24.13         29.222        17.789        0 \r\n 2015          157           13.39         23.85         16.689        0 \r\n 2015          158           24.9          28.45         18.272        13.462 \r\n 2015          159           27.59         29.961        15.661        0 \r\n 2015          160           27.8          35.4          16.85         0 \r\n 2015          161           27.04         31.022        20.078        0 \r\n 2015          162           3.47          23.178        16.4          48.768 \r\n 2015          163           7.12          18.878        15.478        5.08 \r\n 2015          164           15.44         24.539        17.2          1.27 \r\n 2015          165           17.29         27.25         19.339        2.794 \r\n 2015          166           9.95          23.272        15.922        10.414 \r\n 2015          167           30.8          25.922        14            0.508 \r\n 2015          168           22.24         29.172        18.328        2.54 \r\n 2015          169           22.23         24.811        15.422        0 \r\n 2015          170           29.73         26.828        15.161        0 \r\n 2015          171           17.85         28.472        16.339        0 \r\n 2015          172           23.81         29.578        17.189        0 \r\n 2015          173           15.38         31.928        19.061        0.762 \r\n 2015          174           27.08         27.7          15.161        0 \r\n 2015          175           7.54          21.9          15.839        74.168 \r\n 2015          176           13.94         26.472        19.161        1.27 \r\n 2015          177           16.06         23.561        17.172        0.508 \r\n 2015          178           28.55         28.761        15.439        0 \r\n 2015          179           25.83         28.289        17.628        5.334 \r\n 2015          180           22.31         27.422        17.411        0 \r\n 2015          181           16.81         26.55         17.85         0 \r\n 2015          182           15.03         23.95         14.15         0 \r\n 2015          183           14.65         21.039        12.25         0 \r\n 2015          184           26.96         26.678        12.661        0 \r\n 2015          185           25.63         27.561        13.011        0 \r\n 2015          186           22.85         29.461        15.561        0 \r\n 2015          187           6.7           24.478        17.25         27.94 \r\n 2015          188           29.05         21.239        11.772        0 \r\n 2015          189           22.99         22.478        11.289        0 \r\n 2015          190           23.31         26.378        12.561        0 \r\n 2015          191           24.48         26.7          15.222        0 \r\n 2015          192           19.44         28.528        19.7          12.954 \r\n 2015          193           27.25         33.011        21.772        0 \r\n 2015          194           28.67         33.461        21.128        0 \r\n 2015          195           27.76         30.889        20.7          0 \r\n 2015          196           11.89         26.661        19.311        5.588 \r\n 2015          197           11.69         29.622        20.522        26.162 \r\n 2015          198           28.02         33.261        20.811        0 \r\n 2015          199           27.65         31.35         21.372        0 \r\n 2015          200           24.49         29.861        18.372        0 \r\n 2015          201           20.52         28.9          16.85         2.794 \r\n 2015          202           28.77         26.778        14.661        0 \r\n 2015          203           20.68         25.828        16.311        0 \r\n 2015          204           26.34         28.272        16.022        0 \r\n 2015          205           24.09         30.161        18.872        0 \r\n 2015          206           22.91         31.561        22.472        0 \r\n 2015          207           22.76         31.189        19.75         6.096 \r\n 2015          208           6.24          26.039        20.239        27.432 \r\n 2015          209           4.13          25.8          20.961        41.91 \r\n 2015          210           27.89         27.978        17.061        0 \r\n 2015          211           27.45         29.628        15.472        0 \r\n 2015          212           0             29.639        17.872        0 \r\n 2015          213           25.39         31.7          17.278        0 \r\n 2015          214           26.16         31.939        19.822        0.508 \r\n 2015          215           27.45         27.489        15.578        0 \r\n 2015          216           18.85         26.422        15.361        0 \r\n 2015          217           13.4          25.672        17.628        0 \r\n 2015          218           18.97         26.772        16.65         0 \r\n 2015          219           22.01         29.878        19.478        0 \r\n 2015          220           0.02          28.628        19.922        0 \r\n 2015          221           19.69         27.889        19.6          80.264 \r\n 2015          222           21.5          27.439        17.2          0.762 \r\n 2015          223           25.44         28.128        16.528        0 \r\n 2015          224           26.21         28.972        16.85         0 \r\n 2015          225           18.56         28.922        15.711        0 \r\n 2015          226           24.66         30.611        19.65         0 \r\n 2015          227           25.63         29.311        18.022        0 \r\n 2015          228           21.52         30.15         17.761        0 \r\n 2015          229           8.24          24.222        18.978        16.51 \r\n 2015          230           4.02          20.639        13.939        47.244 \r\n 2015          231           9.22          19.572        12.678        0 \r\n 2015          232           25.51         26.011        9.989         0 \r\n 2015          233           24.23         26.478        14.522        0 \r\n 2015          234           17.69         26.778        16.061        10.414 \r\n 2015          235           25.34         21.628        11.139        0 \r\n 2015          236           25.48         22.389        9.272         0 \r\n 2015          237           25.07         23.35         10.228        0 \r\n 2015          238           22.16         24.628        11.161        0 \r\n 2015          239           8.8           22.172        11.989        0.508 \r\n 2015          240           1.55          19.911        16.361        48.006 \r\n 2015          241           8.61          22.122        16.061        0.254 \r\n 2015          242           10.79         24.122        14.35         0 \r\n 2015          243           19.22         29.678        16.939        0 \r\n 2015          244           19.73         30.98         18.27         0 \r\n 2015          245           21.48         30.81         20.18         32.65714 \r\n 2015          246           21.21         32.18         20.12         0 \r\n 2015          247           19.59         31.94         19.63         0 \r\n 2015          248           19.38         32.51         21.13         0 \r\n 2015          249           18.37         33.31         20.57         43.44955 \r\n 2015          250           15.22         31.21         21.43         0 \r\n 2015          251           13.69         26.64         17.27         0 \r\n 2015          252           21.69         28.08         13.61         0 \r\n 2015          253           17.98         27.84         14.23         0 \r\n 2015          254           19.84         19.57         9.96          0 \r\n 2015          255           21.27         21.44         7.46          0 \r\n 2015          256           21.36         23.44         7.542         0 \r\n 2015          257           18.19         27.8          12.13         0 \r\n 2015          258           19.42         29.69         18.15         0 \r\n 2015          259           19.33         30.51         16.5          0 \r\n 2015          260           8.56          28.76         18.83         20.80727 \r\n 2015          261           6.304         20            10.38         6.846596 \r\n 2015          262           20.87         22.12         9.26          0 \r\n 2015          263           20.1          23.33         8.23          0 \r\n 2015          264           17.14         24.74         10.63         0 \r\n 2015          265           11.34         27.78         17.83         1.053322 \r\n 2015          266           5.429         21.6          18.07         2.369976 \r\n 2015          267           8.61          25.04         17.03         0 \r\n 2015          268           14.63         25.78         15.7          0 \r\n 2015          269           18.3          26.82         12.58         0 \r\n 2015          270           17.59         27.06         12.24         0 \r\n 2015          271           12.55         30.34         12.9          4.21329 \r\n 2015          272           17.26         21.81         8.41          17.64522 \r\n 2015          273           18.42         18.25         5.007         0 \r\n 2015          274           16.44         17.35         4.805         0 \r\n 2015          275           17.94         17.58         3.522         0 \r\n 2015          276           18.08         16.85         4.32          0 \r\n 2015          277           6.791         12.7          3.482         0 \r\n 2015          278           13.17         20.88         6.138         0 \r\n 2015          279           8.66          22.28         12.21         0 \r\n 2015          280           15.56         26.03         11.59         0 \r\n 2015          281           12.18         26.19         12.09         0 \r\n 2015          282           14.37         17.84         7.581         0 \r\n 2015          283           15.35         22.54         3.946         0 \r\n 2015          284           15.99         29.59         12.3          0 \r\n 2015          285           15.41         21.69         11.05         0 \r\n 2015          286           15.26         20.92         4.814         0 \r\n 2015          287           15.62         21.1          3.734         0 \r\n 2015          288           15.52         19.77         5.038         0 \r\n 2015          289           15.13         11.57         2.512         0 \r\n 2015          290           13.59         13.71         0.508         0 \r\n 2015          291           14.55         17.82         0.024         0 \r\n 2015          292           12.73         26.5          10.74         0 \r\n 2015          293           11.07         21.47         11.82         0 \r\n 2015          294           8.89          19.3          9.77          5.266612 \r\n 2015          295           7.706         15.68         7.955         0 \r\n 2015          296           2.12          16.73         12.29         8.687837 \r\n 2015          297           11.4          15.18         4.976         0 \r\n 2015          298           13.75         16.83         0.499         0 \r\n 2015          299           10.15         16.34         2.986         0 \r\n 2015          300           2.194         10.49         6.421         11.06196 \r\n 2015          301           3.134         9.56          1.722         0.7899919 \r\n 2015          302           5.577         7.703         1.156         0 \r\n 2015          303           10.55         12.23        -1.392         2.633306 \r\n 2015          304           4.071         11.34         6.613         4.21329 \r\n 2015          305           12.25         22.45         5.532         0 \r\n 2015          306           12.28         25.68         9.14          0 \r\n 2015          307           8.56          21.36         4.552         0 \r\n 2015          308           5.419         18.74         10.14         0 \r\n 2015          309           6.555         22.74         5.522         0 \r\n 2015          310           11.26         12.73         0.692         0 \r\n 2015          311           11.89         11.75        -0.472         0 \r\n 2015          312           11.75         14.87        -1.859         0 \r\n 2015          313           11.55         15.5         -1.838         0 \r\n 2015          314           7.05          15.64        -0.553         0 \r\n 2015          315           3.778         16.1          2.37          11.84988 \r\n 2015          316           11.1          9.62          2.087         1.053322 \r\n 2015          317           11.26         10           -0.714         0 \r\n 2015          318           10.03         16.47        -1.372         0 \r\n 2015          319           7.334         15.07         2.168         0 \r\n 2015          320           1.07          12.26         8.07          6.583265 \r\n 2015          321           1.125         14.78         10.5          4.739951 \r\n 2015          322           2.077         14.79         4.118         4.47662 \r\n 2015          323           10.58         5.906        -2.72          0 \r\n 2015          324           2.135         1.035        -2.386         0 \r\n 2015          325           10.71        -2.244        -13.86         0 \r\n 2015          326           9.51          1.137        -12.74         2.106645 \r\n 2015          327           10.5          5.27         -4.918         0 \r\n 2015          328           9.46          5.26         -3.55          0 \r\n 2015          329           4.929         12.9          3.664         0.2633306 \r\n 2015          330           0.833         5.754        -1.91          19.22106 \r\n 2015          331           2.898        -1.788        -4.432         0 \r\n 2015          332           6.968         2.259        -6.48          0.2633306 \r\n 2015          333           3.538         1.804        -1.778         0.2633306 \r\n 2015          334           1.62          1.884        -0.796         11.59069 \r\n 2015          335           2.232         0.61         -1.869         0 \r\n 2015          336           3.092         1.288        -1.576         1.053322 \r\n 2015          337           9.15          6.329        -4.696         0 \r\n 2015          338           9.12          9.76         -3.155         0 \r\n 2015          339           7.157         9.56          0.003         0 \r\n 2015          340           2.709         5.482         0.195         0 \r\n 2015          341           6.991         10.51        -0.988         0 \r\n 2015          342           2.881         10.53         0.307         0 \r\n 2015          343           7.871         11.74         0.894         0 \r\n 2015          344           7.077         12.39         2.855         0 \r\n 2015          345           5.008         10.08         0.732         0 \r\n 2015          346           2.862         7.338         1.844         7.373257 \r\n 2015          347           0.649         9.51          5.238         56.3569 \r\n 2015          348           2.34          5.876         0.317         37.12547 \r\n 2015          349           1.828         4.937         0.508         0.7899919 \r\n 2015          350           2.328         6.076        -2.781         0 \r\n 2015          351           7.394         1.116        -6.115         0 \r\n 2015          352           7.834        -0.776        -9.54          0 \r\n 2015          353           8.21          1.622        -10.97         0 \r\n 2015          354           4.194         8.76         -1.98          0 \r\n 2015          355           1.253         4.26         -2.204         0 \r\n 2015          356           2.761         2.158        -2.892         0 \r\n 2015          357           0.811         5.34         -0.229         17.64522 \r\n 2015          358           2.962         0.53         -3.764         0 \r\n 2015          359           5.192        -0.826        -6.947         0 \r\n 2015          360           2.769         0.752        -1.525         5.266612 \r\n 2015          361           6.521        -0.907        -10.7          0 \r\n 2015          362           3.025        -4.636        -10.54         0 \r\n 2015          363           6.105        -4.048        -6.622         0 \r\n 2015          364           6.731        -3.196        -7.394         0 \r\n 2015          365           9            -5.922        -14.63         0 \r\n 2016          1             8.37         -0.512        -8.9           0.2633306 \r\n 2016          2             9.19         -1.554        -12.64         0 \r\n 2016          3             5.018        -3.52         -9.44          0 \r\n 2016          4             5.044        -4.371        -8.46          0 \r\n 2016          5             8.5          -0.036        -9.63          0 \r\n 2016          6             4.21          0.508        -5.01          0 \r\n 2016          7             2.966         1.035        -0.461         2.369976 \r\n 2016          8             2.921         0.934        -6.674         2.896637 \r\n 2016          9             8.38         -6.278        -21.15         0 \r\n 2016          10            9.75         -14.98        -22.4          0 \r\n 2016          11            8.12         -3.611        -15.38         0 \r\n 2016          12            9.79         -12.27        -19.29         0 \r\n 2016          13            9.27          1.217        -13.57         0 \r\n 2016          14            8.78          6.471        -4.068         0 \r\n 2016          15            6.854        -1.616        -13.41         0 \r\n 2016          16            6.307        -11.77        -19.13         0 \r\n 2016          17            10.34        -18.7         -23.76         0 \r\n 2016          18            7.11         -13.69        -21.74         0 \r\n 2016          19            5.394        -10.95        -16.75         0 \r\n 2016          20            6.574        -5.973        -12.19         0 \r\n 2016          21            9.68         -2.791        -11.94         0.7899919 \r\n 2016          22            6.793        -5.487        -7.87          0 \r\n 2016          23            6.649        -4.23         -9.04          0 \r\n 2016          24            5.04         -1.272        -4.382         0 \r\n 2016          25            2.898        -1.697        -5.273         0 \r\n 2016          26            5.843        -2.162        -4.168         0 \r\n 2016          27            8.72          2.916        -9.87          0.2633306 \r\n 2016          28            7.227         2.916        -6.856         0 \r\n 2016          29            10.83         4.39         -6.502         0 \r\n 2016          30            8.22          6.532        -1.19          0 \r\n 2016          31            7.515         4.39         -0.786         0 \r\n 2016          32            8.72          7.904        -2.71          0.2633306 \r\n 2016          33            3.241         0.914        -1.09          4.21329 \r\n 2016          34            10.18        -1.09         -12.8          0 \r\n 2016          35            10.92        -1.606        -14.12         0 \r\n 2016          36            8.63         -2.082        -14.18         0 \r\n 2016          37            10.06         2.875        -2.609         0 \r\n 2016          38            8.67          4.149        -4.34          2.633306 \r\n 2016          39            9.05         -4.33         -11.17         0 \r\n 2016          40            12.84        -8.41         -14.41         0 \r\n 2016          41            8.21         -8.98         -12.84         0 \r\n 2016          42            11.08        -7.16         -18.13         0 \r\n 2016          43            14.08        -8.39         -17.38         0 \r\n 2016          44            9.64         -10.6         -18.87         0 \r\n 2016          45            9.34         -5.477        -10.83         0 \r\n 2016          46            9.99          2.026        -7.272         1.053322 \r\n 2016          47            4.034         1.672        -1.697         1.579984 \r\n 2016          48            8.65          0.823        -2.538         0 \r\n 2016          49            9.38          5.976        -1.372         0 \r\n 2016          50            13.86         11.39         3.218         0 \r\n 2016          51            12.7          8.79          0.67          0 \r\n 2016          52            5.34          4.512        -0.563         0 \r\n 2016          53            7.271         6.128        -1.241         0 \r\n 2016          54            5.12          5.886        -0.24          0 \r\n 2016          55            4.687         2.541        -1.009         0 \r\n 2016          56            4.93         -0.401        -2.436         0 \r\n 2016          57            14.98         8.41         -2.021         0 \r\n 2016          58            15.28         19.06        -0.584         0 \r\n 2016          59            8.79          11.97        -0.472         0 \r\n 2016          60            7.428         9.9          -3.368         0 \r\n 2016          61            14.3         -3.267        -10.77         0 \r\n 2016          62            11.29         1.126        -11.82         0.7899919 \r\n 2016          63            4.199         0.205        -2.405         0 \r\n 2016          64            8.07          6.521        -1.798         0 \r\n 2016          65            11.59         5.32         -0.502         0 \r\n 2016          66            13.32         18.42        -0.725         0 \r\n 2016          67            10.8          21.19         7.359         0 \r\n 2016          68            14.11         22.54         6.986         0 \r\n 2016          69            12.19         13.06         1.176         0 \r\n 2016          70            17.47         13.43         0.094         0 \r\n 2016          71            17.06         20.49         0.064         0 \r\n 2016          72            7.616         13.9          2.42          4.21329 \r\n 2016          73            3.98          12.72         8.57          0.7899919 \r\n 2016          74            10.99         20.76         9.52          0 \r\n 2016          75            6.786         18.49         7.542         6.583265 \r\n 2016          76            18.23         14.03         1.996         0 \r\n 2016          77            18.79         13.77        -1.028         0 \r\n 2016          78            14.4          6.35         -3.094         0 \r\n 2016          79            7.334         2.067        -1.09          0.5266612 \r\n 2016          80            14.42         7.026        -2.386         0 \r\n 2016          81            10.75         16.03        -3.622         0 \r\n 2016          82            6.497         17.16         4.149         0 \r\n 2016          83            1.127         10.27         0.024         11.84988 \r\n 2016          84            8.12          3.522        -3.439         0 \r\n 2016          85            19.26         11.86        -5.182         0 \r\n 2016          86            5.436         9.91          2.471         3.949959 \r\n 2016          87            7.087         8.96         -0.26          0 \r\n 2016          88            21.62         16.53        -2.851         0 \r\n 2016          89            16.58         18.19         2.572         0 \r\n 2016          90            7.498         20.78         8.56          7.899919 \r\n 2016          91            9.47          11.78         2.693         7.373257 \r\n 2016          92            14.13         7.924        -0.188         13.69527 \r\n 2016          93            22.43         7.571        -0.665         0 \r\n 2016          94            21.15         27.54         0.003         0 \r\n 2016          95            23.06         9.66         -1.1           0 \r\n 2016          96            8.12          10.99        -1.018         0.7899919 \r\n 2016          97            9.84          13.69         3.036         0 \r\n 2016          98            12.09         10.16         2.198         1.843314 \r\n 2016          99            22.49         7.299        -3.601         0 \r\n 2016          100           23.28         8.85         -7.171         0 \r\n 2016          101           14.77         18.79         3.684         0 \r\n 2016          102           24.49         9.8          -2.628         0 \r\n 2016          103           24.3          15.06        -4.301         0 \r\n 2016          104           23.6          22.67         3.654         0 \r\n 2016          105           23.56         22.63         6.37          0 \r\n 2016          106           19.02         24.49         6.926         0 \r\n 2016          107           22.7          26.03         11.47         0 \r\n 2016          108           15.44         26.01         12.43         0 \r\n 2016          109           12.08         24.51         12.34         2.633306 \r\n 2016          110           13.52         18.99         7.782         0.2633306 \r\n 2016          111           6.61          17.45         9.05          13.69527 \r\n 2016          112           14.49         19.7          7.359         2.633306 \r\n 2016          113           11.8          16.9          7.782         0 \r\n 2016          114           23.64         22.58         4.754         0 \r\n 2016          115           15.47         27.06         12.06         4.21329 \r\n 2016          116           25.59         22.83         11.59         0 \r\n 2016          117           15.33         19.83         7.843         0 \r\n 2016          118           3.107         9.54          5.744         18.96188 \r\n 2016          119           8.18          13.46         6.996         1.579984 \r\n 2016          120           5.886         9.41          5.906         0.2633306 \r\n 2016          121           2.661         9.47          5.986         30.81175 \r\n 2016          122           3.933         10.25         6.028         3.686629 \r\n 2016          123           14.66         17.3          4.684         0 \r\n 2016          124           18.52         20.45         4.552         0 \r\n 2016          125           22.13         19.49         8.47          0 \r\n 2016          126           20.77         23.28         6.219         0 \r\n 2016          127           22.34         30.84         9.76          0 \r\n 2016          128           10.31         20.46         12.52         0 \r\n 2016          129           19.25         21.28         10.91         0.5266612 \r\n 2016          130           3.372         16.7          12.9          10.27404 \r\n 2016          131           18.27         23.58         12.7          0 \r\n 2016          132           6.442         17.63         10.89         2.106645 \r\n 2016          133           19.76         16.92         6.814         0 \r\n 2016          134           11.24         19.65         4.956         5.003282 \r\n 2016          135           26.48         14.01         2.046         0 \r\n 2016          136           24.58         19.8          2.7           0 \r\n 2016          137           16.79         18.5          6.5           0 \r\n 2016          138           22.99         20.3          6.2           0 \r\n 2016          139           20.24         20.4          6.2           0 \r\n 2016          140           26.74         23            7.6           0 \r\n 2016          141           20.49         21.8          11.9          0 \r\n 2016          142           26.03         25.7          9.69          0 \r\n 2016          143           28.83         28.07         9.35          0 \r\n 2016          144           15.29         27.53         15.56         0.2633306 \r\n 2016          145           21.29         27.61         16.34         4.21329 \r\n 2016          146           3             25.86         17.22         15.79984 \r\n 2016          147           22.71         27.96         14.41         7.899919 \r\n 2016          148           15            24.86         16.1          18.69233 \r\n 2016          149           13.52         22.88         16.48         3.159967 \r\n 2016          150           27.62         28.27         14.34         0 \r\n 2016          151           19.72         30.87         16.12         12.10906 \r\n 2016          152           17.23         25.06         16.72         16.85731 \r\n 2016          153           27.18         24.6          12.98         0 \r\n 2016          154           28.42         27.45         12.41         0 \r\n 2016          155           25.43         29.8          17.31         10.79241 \r\n 2016          156           24.12         25.83         14.03         0 \r\n 2016          157           27.59         30.39         13.84         0 \r\n 2016          158           28.96         27.28         15.31         0 \r\n 2016          159           29.36         24.67         12.6          0 \r\n 2016          160           24.39         28.56         12.78         0 \r\n 2016          161           24.15         34.37         19.82         0 \r\n 2016          162           27.73         35.18         22.49         0 \r\n 2016          163           23.58         34.68         21            0 \r\n 2016          164           27.19         33.63         22.09         0 \r\n 2016          165           23.52         34.41         20.02         0.508 \r\n 2016          166           23.06         32.8          19.01         6.35 \r\n 2016          167           29.26         33.15         18.31         0.254 \r\n 2016          168           29.19         30.42         16.63         0 \r\n 2016          169           28.72         30.04         17.87         0 \r\n 2016          170           25.79         31.43         19.04         0 \r\n 2016          171           28.82         32.37         17.93         0 \r\n 2016          172           28.17         30.03         22.37         0.508 \r\n 2016          173           28.95         30.71         17.41         0 \r\n 2016          174           22.85         33.19         19.25         1.27 \r\n 2016          175           29.35         26.78         15.21         0 \r\n 2016          176           26.02         29.53         12.82         0 \r\n 2016          177           18.62         32.57         22.37         0 \r\n 2016          178           27.13         31.33         19.36         2.032 \r\n 2016          179           28.54         30.46         17.38         0 \r\n 2016          180           27.62         26.6          14.51         0 \r\n 2016          181           16.64         24.85         14.7          0 \r\n 2016          182           22.95         28.71         17.39         0 \r\n 2016          183           27.27         24.82         12.41         0 \r\n 2016          184           11.27         19.48         14.28         0 \r\n 2016          185           24.69         23.59         11.98         0 \r\n 2016          186           13.21         24.2          14.69         0 \r\n 2016          187           23.95         31.88         18.19         1.778 \r\n 2016          188           23.02         32.23         19.91         6.858 \r\n 2016          189           23.43         28.49         19            10.41 \r\n 2016          190           28.72         28.53         16.87         0 \r\n 2016          191           28.37         28.39         16.79         0 \r\n 2016          192           18.66         27.61         18.1          11.43 \r\n 2016          193           27.14         32.14         19.24         12.45 \r\n 2016          194           26            29.03         18.51         6.604 \r\n 2016          195           19.01         28.74         17.51         1.016 \r\n 2016          196           27            27.62         16.5          0 \r\n 2016          197           23.3          23.82         12.83         0 \r\n 2016          198           27.23         26.78         14.37         0 \r\n 2016          199           15.67         30.6          17.39         28.45 \r\n 2016          200           25.96         29.23         19.06         37.85 \r\n 2016          201           3.077         23.75         20.62         20.07 \r\n 2016          202           22.13         32.91         20.04         0 \r\n 2016          203           23.11         33.72         24.05         0 \r\n 2016          204           22.41         32.6          22.94         0 \r\n 2016          205           13.3          32.07         24.41         0 \r\n 2016          206           19.75         29.8          19.82         0 \r\n 2016          207           25.73         30.16         17.96         0 \r\n 2016          208           22.91         29.64         19.07         0 \r\n 2016          209           14.62         29.02         18.01         0 \r\n 2016          210           18.43         25.51         17.85         0 \r\n 2016          211           6.568         21.71         16.52         0 \r\n 2016          212           19.16         27.83         16.38         0 \r\n 2016          213           19.86         27.92         17.05         0 \r\n 2016          214           9.66          25.37         20.3          0.762 \r\n 2016          215           12.79         29.59         18.75         8.13 \r\n 2016          216           24.14         29.71         17.95         0.254 \r\n 2016          217           18.68         32.15         20.24         16.51 \r\n 2016          218           25.53         26.14         16.58         0 \r\n 2016          219           21.87         26.56         15.58         0 \r\n 2016          220           14.23         26.03         17.27         0 \r\n 2016          221           13.7          24.63         20.48         0 \r\n 2016          222           20.86         29.98         22            0 \r\n 2016          223           17.07         31.87         20.32         5.334 \r\n 2016          224           17.91         30.98         19.92         126 \r\n 2016          225           15.34         26.94         18.99         4.064 \r\n 2016          226           24.84         28.08         17.24         0 \r\n 2016          227           24.68         28.51         17.98         0 \r\n 2016          228           18.09         27.71         16.77         0 \r\n 2016          229           20.32         29.02         17.02         0 \r\n 2016          230           22.92         30.58         18.25         3.048 \r\n 2016          231           23.69         31.95         20.02         0 \r\n 2016          232           15.61         29.42         18.68         15.49 \r\n 2016          233           15.93         22.05         13.76         1.016 \r\n 2016          234           24.78         24.93         11.67         0 \r\n 2016          235           24.37         27.11         12.92         0 \r\n 2016          236           17.05         27.48         15.63         0 \r\n 2016          237           11.8          27.01         18.49         7.366 \r\n 2016          238           12.15         26.63         15.98         0 \r\n 2016          239           8.38          21.1          14.59         1.27 \r\n 2016          240           12.36         26.86         15.53         0 \r\n 2016          241           20.1          31.27         16.77         0 \r\n 2016          242           11.14         30.1          20            2.54 \r\n 2016          243           11.24         26.65         18.67         0 \r\n 2016          244           22.59         26.44         15.39         0 \r\n 2016          245           22.78         24.77         13.2          0 \r\n 2016          246           22.52         23.77         10.85         0 \r\n 2016          247           19.17         24.61         13.12         0 \r\n 2016          248           15.95         26.97         15.27         0 \r\n 2016          249           19.5          31.59         17.97         0 \r\n 2016          250           19.44         33.36         22.82         0 \r\n 2016          251           4.627         24.84         20.25         56.64 \r\n 2016          252           21.23         29.74         19.38         0.254 \r\n 2016          253           8.42          26.64         16.54         6.604 \r\n 2016          254           20.85         23.25         11.45         0 \r\n 2016          255           21.48         25.76         10.83         0 \r\n 2016          256           19.21         28.5          12.4          0 \r\n 2016          257           9.14          21.13         14.34         3.302 \r\n 2016          258           17.67         23.79         12.9          0 \r\n 2016          259           15.79         28.68         16.1          21.84 \r\n 2016          260           12.55         23.5          15.21         17.02 \r\n 2016          261           19.45         21.47         13.38         0 \r\n 2016          262           19.84         29.72         11.33         0 \r\n 2016          263           16.07         30.2          16.37         0 \r\n 2016          264           19.3          30.91         13.3          0 \r\n 2016          265           16.52         34.26         22.34         0 \r\n 2016          266           11.55         28.3          18.06         44.96 \r\n 2016          267           11.46         31.88         19.55         2.54 \r\n 2016          268           15.68         30.43         18.96         27.18 \r\n 2016          269           11.75         20.42         10.65         2.54 \r\n 2016          270           19.13         22.83         8.07          0 \r\n 2016          271           18.78         23.75         7.44          0 \r\n 2016          272           6.001         16.18         9.01          0 \r\n 2016          273           18.07         22.65         8.17          0 \r\n 2016          274           7.603         18.48         9.9           0 \r\n 2016          275           5.666         20.02         14.19         0 \r\n 2016          276           16.37         24.51         11.16         0 \r\n 2016          277           12.9          22.2          9.98          0 \r\n 2016          278           11.89         25.08         13.77         2.032 \r\n 2016          279           12.09         22.66         12.87         0 \r\n 2016          280           5.45          21.38         7.359         1.27 \r\n 2016          281           16.95         16.48         4.189         0 \r\n 2016          282           16.49         22.67         3.229         0 \r\n 2016          283           16.19         20.78         3.927         0 \r\n 2016          284           8.52          21.57         7.359         1.27 \r\n 2016          285           14.41         24.82         12.05         0 \r\n 2016          286           6.296         12.04         1.309         1.27 \r\n 2016          287           16.25         13.53        -2.254         0 \r\n 2016          288           7.049         19.19         2.865         0 \r\n 2016          289           4.629         22.01         14.65         0.254 \r\n 2016          290           8.92          24.46         14.73         0 \r\n 2016          291           9.4           30.14         17.56         0 \r\n 2016          292           12.92         21.52         11.14         0 \r\n 2016          293           11.32         20.84         6.834         0 \r\n 2016          294           11.28         12.41         2.976         0 \r\n 2016          295           11.72         14.53         0.67          0 \r\n 2016          296           14.14         24.39         2.836         0 \r\n 2016          297           13.95         21.93         5.906         0 \r\n 2016          298           12.37         15.46         3.017         0 \r\n 2016          299           5.737         14.25         8.91          0 \r\n 2016          300           3.834         11.86         7.692         4.572 \r\n 2016          301           12.18         16.27         6.028         0 \r\n 2016          302           9.51          26.33         7.147         0 \r\n 2016          303           10.86         23.26         11.04         0 \r\n 2016          304           8.99          13.28         6.29          0 \r\n 2016          305           3.296         16.89         6.228         0 \r\n 2016          306           10.95         22.74         10.84         0 \r\n 2016          307           5.763         19.15         8             0 \r\n 2016          308           12.04         21.99         3.866         0 \r\n 2016          309           11.72         23.47         5.764         0 \r\n 2016          310           9.42          23.51         6.834         0 \r\n 2016          311           11.77         19.33         5.018         0 \r\n 2016          312           7.139         17.47         4.018         0 \r\n 2016          313           11.55         15.96         4.411         0 \r\n 2016          314           11.43         15.84         1.43          0 \r\n 2016          315           11.25         21.39         3.482         0 \r\n 2016          316           10.3          12.02         1.46          0 \r\n 2016          317           11.07         13.05        -2.851         0 \r\n 2016          318           10.99         17.63         0.55          0 \r\n 2016          319           10.07         15.62         1.298         0 \r\n 2016          320           9.5           20.34         0.276         0 \r\n 2016          321           8.56          18.98         1.622         0 \r\n 2016          322           5.961         22.98         9.49          0 \r\n 2016          323           2.253         10.46        -1.232         0 \r\n 2016          324           10.42         3.34         -6.866         0 \r\n 2016          325           10.08         4.118        -9.3           0 \r\n 2016          326           8.19          6.914        -6.815         0 \r\n 2016          327           1.107         3.794         2.188         19.05 \r\n 2016          328           1.991         4.3           1.804         7.62 \r\n 2016          329           1.317         3.118         0.884         0 \r\n 2016          330           4.29          6.956         0.934         0 \r\n 2016          331           8.5           12.48         0.216         0 \r\n 2016          332           1.91          11.49        -0.714         12.7 \r\n 2016          333           6.365         13.61         3.562         1.016 \r\n 2016          334           6.717         5.724         0.286         0 \r\n 2016          335           2.561         1.966         0.126         0 \r\n 2016          336           2.511         2.148        -0.036         0 \r\n 2016          337           2.639         2.826        -0.016         0 \r\n 2016          338           4.271         3.936        -0.067         1.016 \r\n 2016          339           3.733         0.832        -0.584         6.858 \r\n 2016          340           6.355         6.613        -2.82          1.524 \r\n 2016          341           8.81          2.875        -7.414         0.508 \r\n 2016          342           5.397        -5.344        -10.2          0 \r\n 2016          343           8.39         -4.696        -12.49         0 \r\n 2016          344           6.579        -5.73         -14.36         0 \r\n 2016          345           2.465        -5.132        -7.516         0 \r\n 2016          346           1.892        -0.3          -13.1          0.254 \r\n 2016          347           8.42         -2.558        -16.4          0 \r\n 2016          348           7.146        -7.617        -16.85         0 \r\n 2016          349           8.1          -7.76         -16.04         0 \r\n 2016          350           5.083        -10.37        -19.17         0 \r\n 2016          351           0.987        -7.13         -10.77         0 \r\n 2016          352           2.842        -8.41         -22.89         0 \r\n 2016          353           8.34         -15.93        -26.87         0 \r\n 2016          354           8.5          -3.48         -18.3          0 \r\n 2016          355           7.109         5.25         -6.248         0 \r\n 2016          356           5.588         6.895        -5.872         0 \r\n 2016          357           7.667         6.259        -6.947         0 \r\n 2016          358           2.179         2.42         -0.624         3.81 \r\n 2016          359           3.904         0.914        -5.842         0 \r\n 2016          360           0.696         8.1           0.55          18.29 \r\n 2016          361           8.57          6.804        -3.48          0 \r\n 2016          362           8.37          5.33         -5.679         0 \r\n 2016          363           4.975         5.714        -2.082         0 \r\n 2016          364           8.39          3.017        -2.366         0 \r\n 2016          365           7.143         6.37         -7.607         0 \r\n 2016          366           5.885         0.631        -6.755         0 \r\n 2017          1             4.536         0.499        -8.02          0 \r\n 2017          2             5.4305        1.014        -0.401         2.79 \r\n 2017          3             6.325         0.307        -14.85         1.02 \r\n 2017          4             7.173        -12.25        -16.83         0 \r\n 2017          5             7.322        -12.49        -17.99         0 \r\n 2017          6             7.183        -10.3         -20.68         0 \r\n 2017          7             8.99         -6.846        -15.73         0 \r\n 2017          8             3.867        -5.832        -17.87         0 \r\n 2017          9             1.848        -2.284        -11.69         0 \r\n 2017          10            2.922         2.794        -6.541         8.64 \r\n 2017          11            2.465        -1.576        -12.29         0 \r\n 2017          12            6.273        -6.278        -13.02         0 \r\n 2017          13            3.742        -7.566        -14.87         0 \r\n 2017          14            8.63          0.104        -9.12          0 \r\n 2017          15            3.793         0.024        -6.784         0 \r\n 2017          16            1.302         0.368        -1.92          20.57 \r\n 2017          17            3.564         0.752        -1.626         0.51 \r\n 2017          18            8.84          8.12         -2             0 \r\n 2017          19            3.356         3.068        -0.928         0 \r\n 2017          20            1.932         3.664         0.641         0 \r\n 2017          21            3.783         7.238         0.661         7.37 \r\n 2017          22            1.921         2.633        -0.786         0 \r\n 2017          23            1.317         0.56         -0.714         0 \r\n 2017          24            1.558         0.064        -0.886         0 \r\n 2017          25            4.751         0.064        -3.58          6.1 \r\n 2017          26            6.665        -2.771        -7.414         0 \r\n 2017          27            10.74        -1.92         -11.03         0 \r\n 2017          28            6.721        -0.684        -6.076         0 \r\n 2017          29            8.74          1.166        -5.77          0 \r\n 2017          30            9.39          6.704        -4.412         0 \r\n 2017          31            6.363         4.189         0.55          0 \r\n 2017          32            6.549         0.722        -8.31          0 \r\n 2017          33            9.05         -5.365        -10.7          0 \r\n 2017          34            12.37        -2.73         -10.87         0 \r\n 2017          35            9.97          5.805        -8.51          0 \r\n 2017          36            10.54         1.045        -5.487         0 \r\n 2017          37            9.43          11.23        -4.594         0 \r\n 2017          38            2.687         5.38         -8.27          0 \r\n 2017          39            10.57        -7.678        -11.4          1.27 \r\n 2017          40            11.04        -6.034        -13.67         0.25 \r\n 2017          41            11.28         10.69        -8.46          0 \r\n 2017          42            5.106         8.56          1.53          0 \r\n 2017          43            13.63         6.733        -2.152         0.51 \r\n 2017          44            12.09         8.39         -3.49          0 \r\n 2017          45            12.22         8.49         -0.665         0 \r\n 2017          46            14.11         4.754        -4.128         0 \r\n 2017          47            12.15         13.91        -1.92          0 \r\n 2017          48            13.97         20.78         1.217         0 \r\n 2017          49            14.52         17.08         0.873         0 \r\n 2017          50            11.92         20.62         2.572         0 \r\n 2017          51            1.405         14.43         7.5           18.03 \r\n 2017          52            15.07         17.53        -0.188         19.3 \r\n 2017          53            14.92         19.95         5.805         0 \r\n 2017          54            2.801         5.775         0.934         0.25 \r\n 2017          55            5.486         1.076        -7.404         11.68 \r\n 2017          56            15.84        -1.758        -10.52         0.76 \r\n 2017          57            16.28         3.026        -3.278         0 \r\n 2017          58            13.06         10.31        -4.026         0 \r\n 2017          59            8.35          14.27         2.249         0.51 \r\n 2017          60            7.961         3.461        -2.69          1.02 \r\n 2017          61            6.778         0.165        -5.791         1.78 \r\n 2017          62            12.14         3.078        -8.12          0.25 \r\n 2017          63            16.04         14.97        -3.398         0 \r\n 2017          64            6.309         15            3.664         0 \r\n 2017          65            9.8           23.9          4.714         0 \r\n 2017          66            14.02         11.71        -0.461         5.84 \r\n 2017          67            14.16         10.33        -2.102         0 \r\n 2017          68            14.41         7.138        -4.534         0 \r\n 2017          69            9.87         -4.524        -10.79         0 \r\n 2017          70            8.86         -3.378        -8.16          3.3 \r\n 2017          71            6.183        -1.09         -9.83          0.51 \r\n 2017          72            11.13        -3.278        -11.58         10.41 \r\n 2017          73            18.39        -3.348        -14.2          0.51 \r\n 2017          74            18.92         0.732        -14.47         0 \r\n 2017          75            12.43         7.036        -4.736         0 \r\n 2017          76            18.33         15.56         0.064         0 \r\n 2017          77            17.56         9.85         -0.826         0 \r\n 2017          78            15.8          19.86        -0.907         0 \r\n 2017          79            18.53         17.58         3.906         0 \r\n 2017          80            13.12         8.19         -2.669         0 \r\n 2017          81            10.61         6.269        -4.291         0.51 \r\n 2017          82            7.784         10.57         3.078         0 \r\n 2017          83            2.678         13.17         4.432         0.25 \r\n 2017          84            2.733         4.976         2.814         10.16 \r\n 2017          85            4.795         7.198         3.299         18.54 \r\n 2017          86            7.915         11.4          4.25          0 \r\n 2017          87            5.017         10.57         5.664         0 \r\n 2017          88            1.595         6.329         4.047         0 \r\n 2017          89            3.535         5.633         3.502         25.65 \r\n 2017          90            6.424         6.521         2.654         0 \r\n 2017          91            11.95         12.79         1.4           0 \r\n 2017          92            4.095         9.92          6.521         0.508 \r\n 2017          93            2.309         9.81          7.894         16.26 \r\n 2017          94            14.2          13.83         7.4           0 \r\n 2017          95            9.11          11.65         5.138         0.254 \r\n 2017          96            22.71         12.1          1.076         0 \r\n 2017          97            22.94         16.31        -0.057         0 \r\n 2017          98            18.15         24.03         5.552         0 \r\n 2017          99            13.57         25.65         13.35         0 \r\n 2017          100           10.28         13.86         3.432         0 \r\n 2017          101           21.8          15.78         2.855         0 \r\n 2017          102           12.33         19.97         4.008         4.064 \r\n 2017          103           17.05         21.45         9.87          0.254 \r\n 2017          104           6.02          20.25         10.51         8.38 \r\n 2017          105           10.95         22.39         14.14         4.572 \r\n 2017          106           24.49         20.83         9.46          0 \r\n 2017          107           24.83         23.43         7.299         0 \r\n 2017          108           6.635         19.3          11.56         2.794 \r\n 2017          109           11.55         22.47         7.51          10.16 \r\n 2017          110           8.64          12.1          6.067         0 \r\n 2017          111           18.27         14.41         3.804         0 \r\n 2017          112           24.19         18.96         5.2           0 \r\n 2017          113           24.19         23.27         4.562         0 \r\n 2017          114           21.58         23.6          6.733         0 \r\n 2017          115           10.17         21.29         8.37          0.254 \r\n 2017          116           8.32          8.94          2.278         0 \r\n 2017          117           12.61         9.2           0.145         0 \r\n 2017          118           5.407         6.329        -0.391         9.4 \r\n 2017          119           5             6.32          3.38          4.064 \r\n 2017          120           2.417         5.966         3.118         33.53 \r\n 2017          121           7.379         6.662         4.512         14.22 \r\n 2017          122           24.72         17.15         0.994         0 \r\n 2017          123           19.92         15.64         3.784         0 \r\n 2017          124           21.18         19.81         5.785         0 \r\n 2017          125           23.5          25.22         6.724         0 \r\n 2017          126           25.31         22.24         10.03         0 \r\n 2017          127           24.63         26.44         7.48          0 \r\n 2017          128           17.34         29.02         12.03         0 \r\n 2017          129           23.16         27.2          13.84         0 \r\n 2017          130           8.41          20.56         12.18         27.69 \r\n 2017          131           23.96         20.94         10.06         0 \r\n 2017          132           26.52         24.84         8.19          0 \r\n 2017          133           26.35         27.75         10.73         0 \r\n 2017          134           25.48         30.1          13.2          0 \r\n 2017          135           17.57         33.05         17.42         0 \r\n 2017          136           19.96         32.24         16.31         22.35 \r\n 2017          137           15.37         24.97         14.13         8.89 \r\n 2017          138           11.5          16.5          10.03         4.572 \r\n 2017          139           4.216         10.04         7.138         25.91 \r\n 2017          140           6.522         17.28         7.036         7.62 \r\n 2017          141           11.27         12.88         5.996         0 \r\n 2017          142           21.26         22.56         7.894         2.286 \r\n 2017          143           13            14.96         9.29          7.112 \r\n 2017          144           11.79         16.83         10.11         6.096 \r\n 2017          145           25.02         22.25         8.31          0 \r\n 2017          146           20.17         27.7          13.81         0 \r\n 2017          147           11.85         21.04         12.92         5.588 \r\n 2017          148           26.8          26.49         12.28         0 \r\n 2017          149           25.23         23.75         11.36         0 \r\n 2017          150           27.07         24.13         9.52          0 \r\n 2017          151           29.22         24.99         7.924         0 \r\n 2017          152           28.65         28.55         10.66         0 \r\n 2017          153           27.44         31.53         16.09         0 \r\n 2017          154           28.15         32.94         17.64         0 \r\n 2017          155           28.76         33.52         19.52         0 \r\n 2017          156           29            30.09         18.17         0 \r\n 2017          157           29.05         28.07         15.4          0 \r\n 2017          158           28.14         28.5          13.57         0 \r\n 2017          159           25.06         30.59         15.78         0 \r\n 2017          160           26.67         32.04         16.02         0 \r\n 2017          161           27.56         33.72         20.51         0 \r\n 2017          162           27.09         34.32         23.1          0 \r\n 2017          163           19.63         31.56         22.73         0 \r\n 2017          164           27.68         33.15         20.84         8.636 \r\n 2017          165           18.82         29.44         17.95         16.51 \r\n 2017          166           28.14         32.92         18.13         0 \r\n 2017          167           23.42         30.72         18.35         6.35 \r\n 2017          168           12.84         28.14         17.18         0.508 \r\n 2017          169           23.52         24.88         13.41         0 \r\n 2017          170           22.38         27.63         13.11         0.254 \r\n 2017          171           26.92         31.72         14.43         0 \r\n 2017          172           22.65         31.97         15.69         0 \r\n 2017          173           22.49         30.19         20.24         25.908 \r\n 2017          174           23.49         23.4          14.71         0 \r\n 2017          175           26.85         25.15         10.86         0 \r\n 2017          176           28.24         22.89         9.96          0 \r\n 2017          177           27.37         22.72         11.76         2.286 \r\n 2017          178           29.22         25.27         11.2          0 \r\n 2017          179           20.48         28.66         18.38         9.4 \r\n 2017          180           21.53         28.07         16.97         1.524 \r\n 2017          181           23.56         26.91         15.96         0.508 \r\n 2017          182           29.58         26.58         14.34         0 \r\n 2017          183           18.54         29.23         16.36         0 \r\n 2017          184           25.45         32.22         17.4          0 \r\n 2017          185           24.63         31.4          19.3          0 \r\n 2017          186           28.22         32.47         17.91         0 \r\n 2017          187           27.77         32.71         20.36         0 \r\n 2017          188           27.94         29.35         19.29         0 \r\n 2017          189           28.23         30.32         17.09         0 \r\n 2017          190           26.84         32.8          18.1          0 \r\n 2017          191           23.64         30.16         18.94         0 \r\n 2017          192           18.17         32.99         18.39         0 \r\n 2017          193           12.16         31.85         20.69         21.59 \r\n 2017          194           26.22         28.32         17.71         0 \r\n 2017          195           28.13         27.83         14.87         0 \r\n 2017          196           26.95         32.93         16.16         0 \r\n 2017          197           27.78         31.77         21.5          0 \r\n 2017          198           24.43         31.62         20.22         0 \r\n 2017          199           17.2          31.23         22.73         0 \r\n 2017          200           26.19         34.44         21.76         0 \r\n 2017          201           23.34         35.91         21.28         16 \r\n 2017          202           9.42          29.7          23.74         0.762 \r\n 2017          203           19.31         30.37         22.14         0 \r\n 2017          204           26.61         28.42         16.77         0 \r\n 2017          205           26.85         26.84         14.94         0 \r\n 2017          206           25.46         32.4          18.14         0 \r\n 2017          207           8.56          26.41         20.87         4.318 \r\n 2017          208           25.92         28.97         18.89         0 \r\n 2017          209           23.1          29.25         17.87         0 \r\n 2017          210           27.44         27.82         15.9          0 \r\n 2017          211           24.99         27.53         15.01         0 \r\n 2017          212           24.55         29.04         14.79         0 \r\n 2017          213           20.88         30.49         16.5          22.61 \r\n 2017          214           24.74         30.56         17.31         0 \r\n 2017          215           18.81         24.39         11.21         11.18 \r\n 2017          216           23.58         25.37         9.8           0 \r\n 2017          217           13.9          23.97         11.54         0 \r\n 2017          218           15.57         25.22         14.43         0 \r\n 2017          219           23.21         25.97         16.4          0 \r\n 2017          220           24.64         27.79         13.79         0 \r\n 2017          221           19.57         27.82         13            0 \r\n 2017          222           21.42         28.44         15.92         0 \r\n 2017          223           24.03         25.81         14.16         0 \r\n 2017          224           22.16         28.26         12.76         0 \r\n 2017          225           14.18         25.42         15.34         0.508 \r\n 2017          226           13.68         28.97         15.46         6.858 \r\n 2017          227           5.689         22.1          15.32         2.794 \r\n 2017          228           13.93         28.04         18.38         1.778 \r\n 2017          229           18.55         26.18         16.09         0 \r\n 2017          230           21.53         28.8          14.76         3.556 \r\n 2017          231           22.13         27.88         15.76         0 \r\n 2017          232           21.94         32.11         19.26         6.604 \r\n 2017          233           7.1           26.71         18.01         27.43 \r\n 2017          234           24.8          23.79         13.1          0 \r\n 2017          235           23.94         26.39         10.71         0.254 \r\n 2017          236           15.99         24.7          15.56         0 \r\n 2017          237           20.29         24.64         16.04         0.254 \r\n 2017          238           17.43         26.61         15.54         0.508 \r\n 2017          239           13.36         26.99         16.1          0 \r\n 2017          240           13.66         21.75         14.65         0 \r\n 2017          241           18.88         27.36         13.54         0 \r\n 2017          242           20.01         29.03         14.07         0 \r\n 2017          243           18.54         25.46         15.08         0 \r\n 2017          244           19.58         23.13         11.85         0 \r\n 2017          245           16.85         28.21         15.16         0 \r\n 2017          246           19.63         29.67         13.17         0 \r\n 2017          247           8.98          22.82         11.93         0 \r\n 2017          248           20.68         20.85         9.1           0 \r\n 2017          249           18.61         21.17         6.491         0 \r\n 2017          250           20.81         25.07         7.086         0 \r\n 2017          251           20.36         28.49         10.65         0 \r\n 2017          252           18.68         27.5          12.24         0 \r\n 2017          253           17.69         28.08         15.31         0 \r\n 2017          254           19.01         28.97         11.61         0 \r\n 2017          255           18.78         30.14         13.88         0 \r\n 2017          256           18.54         31.95         14.06         0 \r\n 2017          257           17.95         33.14         15.04         0 \r\n 2017          258           15.96         33.68         18.24         0 \r\n 2017          259           9.32          26.41         15.75         14.73 \r\n 2017          260           18.2          23.53         11.2          3.81 \r\n 2017          261           5.086         21.61         12.62         3.81 \r\n 2017          262           13.57         28.04         16.08         0 \r\n 2017          263           15.16         30.28         18.44         0 \r\n 2017          264           15.53         31.41         16.15         0 \r\n 2017          265           17.89         33.26         21.16         0 \r\n 2017          266           15.55         33.45         20.38         0 \r\n 2017          267           14.28         32.86         18.74         0 \r\n 2017          268           10.97         30.06         17.43         20.07 \r\n 2017          269           8.69          20.13         12.7          0.762 \r\n 2017          270           13.72         21.24         9.2           0 \r\n 2017          271           17.86         26.32         8.09          0 \r\n 2017          272           17.48         23.49         10.44         0 \r\n 2017          273           15.52         22.27         8.05          0 \r\n 2017          274           7.142         22.61         10.42         0.254 \r\n 2017          275           9.18          28.25         13.91         11.18 \r\n 2017          276           6.302         26.51         14.7          6.858 \r\n 2017          277           14.83         21.63         10.97         0.254 \r\n 2017          278           3.285         17.03         10.22         5.08 \r\n 2017          279           2.887         20.24         14.57         43.94 \r\n 2017          280           5.127         18.68         11.43         30.48 \r\n 2017          281           16.14         27.92         8.71          0 \r\n 2017          282           14.82         18.71         6.128         0 \r\n 2017          283           3.316         7.944         4.482         18.29 \r\n 2017          284           10.42         16.29         5.583         0 \r\n 2017          285           8.43          17.03         8.97          0 \r\n 2017          286           2.186         14.31         9.03          5.842 \r\n 2017          287           1.45          17.33         8.96          17.02 \r\n 2017          288           13.87         14.15         3.836         0 \r\n 2017          289           15.09         20.95         2.148         0 \r\n 2017          290           14.53         23.68         8.17          0 \r\n 2017          291           13.36         24.45         7.823         0 \r\n 2017          292           14.19         23.75         7.622         0 \r\n 2017          293           12.67         23.64         11.17         0 \r\n 2017          294           2.968         21.95         10.3          2.032 \r\n 2017          295           11.15         19.04         5.744         0 \r\n 2017          296           8.26          17.44         4.937         0 \r\n 2017          297           12.08         11.18         2.744         0 \r\n 2017          298           12.53         18.82         1.844         0 \r\n 2017          299           9.98          17.55         2.106         0 \r\n 2017          300           4.518         3.138        -0.665         0 \r\n 2017          301           11.46         7.299        -2.304         0 \r\n 2017          302           4.918         9.72         -5.122         2.032 \r\n 2017          303           5.211         7.178        -0.026         0 \r\n 2017          304           7.599         1.945        -6.918         0 \r\n 2017          305           2.361         7.965        -1.19          0 \r\n 2017          306           6.404         9.11         -1.282         0 \r\n 2017          307           9.98          8.34         -1.454         0 \r\n 2017          308           2.593         8.16          4.108         0 \r\n 2017          309           6.097         6.673        -4.402         0 \r\n 2017          310           6.323         3.987        -5.203         0 \r\n 2017          311           6.771         5.976        -3.054         0 \r\n 2017          312           11.17         8.82         -7.242         0 \r\n 2017          313           11.11         4.633        -7.658         0 \r\n 2017          314           7.26         -0.26         -9.48          0 \r\n 2017          315           2.044         6.128        -0.3           0 \r\n 2017          316           8.98          8.28         -1.535         0.762 \r\n 2017          317           4.549         6.37         -5.913         0 \r\n 2017          318           1.886         10.36         4.38          0.762 \r\n 2017          319           9.99          10.9         -4.696         0 \r\n 2017          320           4.348         0.448        -7.942         0 \r\n 2017          321           1.398         8.93         -0.138         0 \r\n 2017          322           6.914         6.512        -3.55          4.826 \r\n 2017          323           9.45          8.37         -8.5           0 \r\n 2017          324           8.46          15.17        -0.067         0 \r\n 2017          325           9.39          6.41         -7.069         0 \r\n 2017          326           8.48          2.35         -11.78         0 \r\n 2017          327           9.12          12.79        -2.75          0 \r\n 2017          328           9.16          19.76         3.804         0 \r\n 2017          329           9.26          11.86        -0.33          0 \r\n 2017          330           6.306         15.25        -2.588         0 \r\n 2017          331           5.982         14.14        -1.11          0 \r\n 2017          332           7.331         13.19         1.096         0 \r\n 2017          333           8.9           8.65         -5.65          0 \r\n 2017          334           9.13          11.57        -0.725         0 \r\n 2017          335           8.83          13.48        -4.006         0 \r\n 2017          336           7.501         13.59        -2.669         0 \r\n 2017          337           6.671         15.35        -1.95          0 \r\n 2017          338           3.111         19.64        -2.892         0 \r\n 2017          339           5.969         1.328        -5             0 \r\n 2017          340           5.91          1.379        -7.76          0 \r\n 2017          341           8.84         -3.703        -11.54         0 \r\n 2017          342           7.511         3.744        -9.48          0 \r\n 2017          343           5.983        -1.21         -8.61          0 \r\n 2017          344           7.755         7.198        -7.282         0 \r\n 2017          345           2.471         6.34         -7.506         0 \r\n 2017          346           8.21          1.014        -12.88         0 \r\n 2017          347           1.602         7.258        -3.054         0.762 \r\n 2017          348           4.16         -0.704        -5.952         0 \r\n 2017          349           5.766         7.318        -4.756         0 \r\n 2017          350           7.114         12.32        -2.021         0 \r\n 2017          351           3.586         3.451        -3.622         0 \r\n 2017          352           7.671         9.46         -7.272         0 \r\n 2017          353           6.538         8.01         -2.345         0 \r\n 2017          354           6.52          3.946        -6.502         0 \r\n 2017          355           1.155         1.166        -4.938         0 \r\n 2017          356           6.139        -2.325        -8.88          0 \r\n 2017          357           6.306        -4.108        -10.46         0 \r\n 2017          358           7.631        -6.054        -10.97         0 \r\n 2017          359           7.104        -10.05        -18.68         0 \r\n 2017          360           8.58         -14.75        -22.01         0 \r\n 2017          361           8.04         -13.53        -25.87         0 \r\n 2017          362           4.881        -8.73         -16.58         4.572 \r\n 2017          363           3.29         -10.5         -17.42         7.366 \r\n 2017          364           5.871        -17.26        -22.82         0 \r\n 2017          365           8.95         -20.6         -27.83         0 \r\n 2018          1             9.04         -21.07        -29.71         0 \r\n 2018          2             8.9          -7.474        -28.75         0 \r\n 2018          3             9.02         -7.678        -19.95         0.76 \r\n 2018          4             5.232        -12.53        -21.58         0 \r\n 2018          5             8.45         -13.82        -20.81         0 \r\n 2018          6             8.2          -9.85         -24.29         0 \r\n 2018          7             7.024         3.138        -11.5          0 \r\n 2018          8             8.8           6.007        -7.048         0 \r\n 2018          9             5.535         6.31         -1.474         0 \r\n 2018          10            1.366         4.835         0.226         0 \r\n 2018          11            3.887         5.038        -17.32         1.52 \r\n 2018          12            9.45         -14.57        -21.89         7.11 \r\n 2018          13            9.26         -11.07        -19.84         0 \r\n 2018          14            3.378        -4.928        -15.3          0 \r\n 2018          15            8.14         -12.19        -22.55         3.56 \r\n 2018          16            7.654        -14.12        -22.68         0 \r\n 2018          17            9.83         -4.118        -20.21         0 \r\n 2018          18            9.3           1.986        -7.617         0 \r\n 2018          19            7.21          6.228        -3.885         0 \r\n 2018          20            9.6           9.72         -2.973         0 \r\n 2018          21            1.294         3.765         0.894         0 \r\n 2018          22            1             3.26         -2.446         19.56 \r\n 2018          23            4.78         -2.184        -5.02          10.67 \r\n 2018          24            4.244        -1.94         -5.507         0 \r\n 2018          25            10.51         6.452        -5.507         0 \r\n 2018          26            6.731         11.33         0.651         0 \r\n 2018          27            10.57         9.35         -2.426         0 \r\n 2018          28            9.32         -1.11         -10.31         0 \r\n 2018          29            10.98        -4.311        -12.03         0 \r\n 2018          30            7.543         3.28         -11.9          0 \r\n 2018          31            4.554         3.775        -3.429         0 \r\n 2018          32            11.72        -3.418        -15.36         0 \r\n 2018          33            6.292        -4.858        -18.3          0 \r\n 2018          34            3.519         3.976        -7.636         0 \r\n 2018          35            10.03        -7.617        -17.85         1.52 \r\n 2018          36            4.072        -10           -18.46         0 \r\n 2018          37            9.84         -11.9         -22.52         12.45 \r\n 2018          38            11.4         -8.67         -15.71         1.78 \r\n 2018          39            7.509        -6.358        -12.7          0.25 \r\n 2018          40            11.14        -8.53         -15.85         9.65 \r\n 2018          41            9.4          -10.64        -16.05         1.52 \r\n 2018          42            13.67        -7.921        -18.42         1.02 \r\n 2018          43            12.55        -9.3          -17.67         0 \r\n 2018          44            12.59         0.813        -11.29         0 \r\n 2018          45            13.23         5.814        -7.78          0 \r\n 2018          46            7.119         4.734        -7.373         0 \r\n 2018          47            14.62        -4.534        -14.67         0 \r\n 2018          48            10.68         2.106        -7.373         0 \r\n 2018          49            11.69         9.64         -6.774         1.78 \r\n 2018          50            2.499         4.422        -3.074         0.51 \r\n 2018          51            4.906        -1.171        -10.53         6.86 \r\n 2018          52            14.26        -5.628        -12.82         0 \r\n 2018          53            3.168        -0.118        -5.791         1.02 \r\n 2018          54            9.28         -0.219        -6.034         9.4 \r\n 2018          55            2.448         0.044        -6.622         0 \r\n 2018          56            14.11         3.422        -6.46          2.79 \r\n 2018          57            15.83         10.91        -3.905         0 \r\n 2018          58            14.23         14.64         1.41          0 \r\n 2018          59            11.03         8.17         -1.332         0 \r\n 2018          60            16.69         6.067        -2.648         0 \r\n 2018          61            14.8          8.13         -4.554         0 \r\n 2018          62            16.05         11.61        -0.067         0 \r\n 2018          63            10.88         13.18         2.734         0 \r\n 2018          64            2.233         6.976        -2.366         0.51 \r\n 2018          65            11.67         0.246        -4.148         11.43 \r\n 2018          66            13.37        -2.244        -8.41          3.3 \r\n 2018          67            17.52        -1.171        -9.85          1.02 \r\n 2018          68            10.08         2.046        -5.812         0 \r\n 2018          69            9.66          6.602        -3.742         0.51 \r\n 2018          70            10.6          5.866        -0.886         1.52 \r\n 2018          71            18.7          5.754        -2.912         0.51 \r\n 2018          72            18.81         3.299        -4.27          0 \r\n 2018          73            18.85         14.91        -5.122         0 \r\n 2018          74            17.17         10.88        -1.322         0 \r\n 2018          75            4.575         2.512        -1.515         0 \r\n 2018          76            11.22         2.896        -0.948         28.7 \r\n 2018          77            4.812         2.188         0.024         0 \r\n 2018          78            16.76         11.53         0.55          0 \r\n 2018          79            8.7           3.613        -1.424         0 \r\n 2018          80            13.8          5.926        -3.48          2.54 \r\n 2018          81            12.38         9.2          -1.738         0 \r\n 2018          82            6.839         7.5          -1.292         0.51 \r\n 2018          83            10.72         1.248        -1.716         19.3 \r\n 2018          84            20.14         2.3          -2.204         5.84 \r\n 2018          85            3.716         2.411        -0.624         0 \r\n 2018          86            12.46         6.39         -0.482         6.86 \r\n 2018          87            14.55         12.34        -2.356         0 \r\n 2018          88            19.94         4.866        -2.142         0.76 \r\n 2018          89            15.12         10.64        -1.009         0 \r\n 2018          90            13.9          7.722        -6.358         2.03 \r\n 2018          91            13.56         2.896        -7.09          0 \r\n 2018          92            10.65         4.633        -7.313         0 \r\n 2018          93            4.282         0.358        -9.73          3.302 \r\n 2018          94            22.72         2.622        -11.11         0 \r\n 2018          95            16.4          10.29        -2.72          0 \r\n 2018          96            13.66         2.512        -8.79          0 \r\n 2018          97            23.51         4.674        -10.2          0 \r\n 2018          98            4.991        -0.442        -5.416         3.556 \r\n 2018          99            12.79         3.401        -2.832         2.286 \r\n 2018          100           17.84         13.66        -4.352         0 \r\n 2018          101           10            15.4          2.309         0 \r\n 2018          102           19.18         17.45         3.017         0 \r\n 2018          103           6.241         12.2          2.309         7.874 \r\n 2018          104           4.478         2.906        -3.418         21.08 \r\n 2018          105           18.01        -1.636        -5.344         8.382 \r\n 2018          106           22.39         2.34         -6.308         0.254 \r\n 2018          107           24.47         8.95         -3.541         0 \r\n 2018          108           7.654         1.713        -1.535         2.794 \r\n 2018          109           25.83         9.81         -1.697         0 \r\n 2018          110           18.11         13.99        -1.677         0 \r\n 2018          111           8.02          14.28         4.26          0 \r\n 2018          112           22.56         19.99         2.128         0 \r\n 2018          113           24.84         22.19         5.512         0 \r\n 2018          114           22.86         22.17         8.18          0 \r\n 2018          115           25.02         17.73         5.33          0 \r\n 2018          116           24.2          22.48         2.703         0 \r\n 2018          117           24.32         24.17         1.622         0 \r\n 2018          118           26.55         15.76         2.411         0 \r\n 2018          119           26.47         21.88         1.945         0 \r\n 2018          120           23.36         29.46         9.2           0 \r\n 2018          121           10.36         21.69         14            28.7 \r\n 2018          122           7.404         17.62         13.48         9.65 \r\n 2018          123           6.282         20.08         12.75         15.75 \r\n 2018          124           26.66         23.61         10.29         0.508 \r\n 2018          125           19.01         27.86         9.8           0 \r\n 2018          126           26.66         25.69         13.42         0 \r\n 2018          127           27.16         27.08         12.28         0 \r\n 2018          128           21.11         27.66         13.32         0 \r\n 2018          129           24.24         23.19         14.36         1.778 \r\n 2018          130           23.37         22.82         12.74         0 \r\n 2018          131           9.08          16.85         8.42          0.762 \r\n 2018          132           8.05          14.41         7.642         0 \r\n 2018          133           7.538         17.6          10.99         0.508 \r\n 2018          134           19.81         27.17         14.37         1.016 \r\n 2018          135           22.68         27.24         13.28         0 \r\n 2018          136           26.72         28.8          14.29         0 \r\n 2018          137           25.18         28.68         15.53         0 \r\n 2018          138           28.19         29.56         14.48         0 \r\n 2018          139           16.4          24.74         15.18         3.048 \r\n 2018          140           8.44          16.14         11.31         1.27 \r\n 2018          141           9.55          22.06         13.23         0.508 \r\n 2018          142           21.72         27.05         13.02         0.254 \r\n 2018          143           24.69         31.14         17.85         0 \r\n 2018          144           27.68         32.51         19.11         0 \r\n 2018          145           25.79         33.39         18.71         2.286 \r\n 2018          146           27.83         37.21         18.8          0 \r\n 2018          147           23.68         38.06         19.78         0 \r\n 2018          148           19.44         36.99         21.93         0 \r\n 2018          149           22.34         34.12         18.8          9.4 \r\n 2018          150           24.95         27.94         17.56         0.254 \r\n 2018          151           27.87         33.68         18.22         0 \r\n 2018          152           27.43         34.96         20.42         0 \r\n 2018          153           20.65         25.08         15.01         18.29 \r\n 2018          154           28.95         26.52         12.91         0 \r\n 2018          155           28.34         28.99         11.26         0 \r\n 2018          156           27.8          32.71         16.06         0 \r\n 2018          157           13.3          33.06         17.46         22.61 \r\n 2018          158           18.66         28.82         17.27         0 \r\n 2018          159           25.3          29.82         20.14         0 \r\n 2018          160           22.86         31.6          20.63         0 \r\n 2018          161           7.769         23.53         18.23         6.604 \r\n 2018          162           11.61         25.66         17.44         21.84 \r\n 2018          163           24.71         30.17         18.57         0 \r\n 2018          164           29.85         27.59         14.71         0 \r\n 2018          165           13.71         25.75         13.59         98.6 \r\n 2018          166           27.38         32.54         19.47         0 \r\n 2018          167           26.11         32.5          21.91         0 \r\n 2018          168           24.16         33.25         23.1          0 \r\n 2018          169           23.58         33.49         20.78         36.07 \r\n 2018          170           12.03         27.49         20.6          11.43 \r\n 2018          171           13.82         26.72         19.11         7.874 \r\n 2018          172           11.96         24.6          15.04         5.842 \r\n 2018          173           13.5          22.97         14.69         0 \r\n 2018          174           22.21         26.19         15.09         0 \r\n 2018          175           17.87         26.73         17.41         1.778 \r\n 2018          176           13.37         23.54         17.13         14.22 \r\n 2018          177           17.35         25.45         16.13         11.68 \r\n 2018          178           23.43         29.18         17.23         0 \r\n 2018          179           11.26         30.43         19.25         0 \r\n 2018          180           27.46         33.18         20.86         0 \r\n 2018          181           21.97         32.38         20.59         40.64 \r\n 2018          182           24.24         26.47         18.21         7.112 \r\n 2018          183           29.32         28.37         16.12         0 \r\n 2018          184           26.44         31.89         18.19         0 \r\n 2018          185           23.57         33.28         20.7          38.86 \r\n 2018          186           20.2          29.1          18.96         1.524 \r\n 2018          187           28.45         27.34         16.46         0 \r\n 2018          188           26.61         27.19         15.86         0 \r\n 2018          189           27.84         28.86         15.58         0 \r\n 2018          190           26.14         32.57         17.26         0 \r\n 2018          191           21.75         31.47         22.41         0 \r\n 2018          192           26.52         33.07         20.82         0 \r\n 2018          193           25.55         34.17         21.87         0 \r\n 2018          194           16.91         32.07         22.47         2.794 \r\n 2018          195           18.267        29.54         21.61         0.254 \r\n 2018          196           23.68         31.03         20.36         0 \r\n 2018          197           27.82         29.04         19.39         0 \r\n 2018          198           26.12         31.01         18.29         0 \r\n 2018          199           24.65         29.15         16.97         0 \r\n 2018          200           18.94         28.4          19.24         0.508 \r\n 2018          201           18.187        27.02         19.37         0 \r\n 2018          202           26.87         28.04         17.58         0 \r\n 2018          203           26.64         27.73         16.69         0 \r\n 2018          204           21.81         29.43         17.83         0.254 \r\n 2018          205           27.97         28.78         16.84         0 \r\n 2018          206           22.54         28.69         17.36         8.64 \r\n 2018          207           25.01         25.32         14.62         0 \r\n 2018          208           23.8          24.84         12.56         0 \r\n 2018          209           16.9          25.02         14.51         0 \r\n 2018          210           25.09         27.28         14.98         0 \r\n 2018          211           24.05         26.88         14.72         0 \r\n 2018          212           25.99         28.91         14.77         0 \r\n 2018          213           22.9          29.2          15.01         29.97 \r\n 2018          214           25.13         25.59         13.89         0 \r\n 2018          215           25.45         31.73         15.87         0 \r\n 2018          216           10.48         29.58         18.71         0.508 \r\n 2018          217           12.29         29.39         18.44         3.81 \r\n 2018          218           17.19         28.35         18.94         31.24 \r\n 2018          219           20.42         27.48         17.64         15.49 \r\n 2018          220           25.24         29.63         15.51         0 \r\n 2018          221           24.38         31.49         19.31         0 \r\n 2018          222           25.27         29.76         18.57         0 \r\n 2018          223           20.24         30.66         18.12         0 \r\n 2018          224           24.34         31.09         17.31         0 \r\n 2018          225           24.36         31.82         17.58         0 \r\n 2018          226           9.16          26.7          18.8          3.048 \r\n 2018          227           17.62         28.99         19.75         0 \r\n 2018          228           11.11         26.16         17.82         18.29 \r\n 2018          229           22            28.64         17.88         0.254 \r\n 2018          230           21.12         29.03         17.58         0 \r\n 2018          231           13.95         27.06         18.27         3.556 \r\n 2018          232           5.261         22.76         17.59         50.8 \r\n 2018          233           12.96         22.85         15.39         0 \r\n 2018          234           23.66         26.38         12.62         0 \r\n 2018          235           16.88         24.76         12.56         0 \r\n 2018          236           12.91         27.24         17.72         0 \r\n 2018          237           22.27         31            16.71         0 \r\n 2018          238           8.66          28.52         20.07         0.254 \r\n 2018          239           19.24         30.64         21.44         4.318 \r\n 2018          240           4.788         27.42         15.02         24.38 \r\n 2018          241           23.52         23.6          11.78         0 \r\n 2018          242           15.19         24.64         11.9          0 \r\n 2018          243           14.33         29.19         19.44         7.62 \r\n 2018          244           12.64         28.72         19.22         47.75 \r\n 2018          245           8.18          26.46         19.55         2.794 \r\n 2018          246           6.408         24.11         20.4          9.65 \r\n 2018          247           14.79         30.09         20.65         17.27 \r\n 2018          248           6.486         23.87         18.07         24.64 \r\n 2018          249           15.31         24.54         15.53         0 \r\n 2018          250           8.92          19.5          13.46         0 \r\n 2018          251           20.24         22.88         11.51         0 \r\n 2018          252           19.84         23.4          10.37         0 \r\n 2018          253           20.96         25.63         10            0 \r\n 2018          254           20.91         27.42         12.74         0 \r\n 2018          255           21.16         27.7          13.91         0 \r\n 2018          256           16.72         29.19         14.81         0 \r\n 2018          257           16.73         31.01         18.07         0 \r\n 2018          258           19.39         33.62         18.64         0 \r\n 2018          259           18.62         31.4          18.88         0 \r\n 2018          260           17.39         34.44         18.78         0 \r\n 2018          261           5.62          26.5          17.09         3.302 \r\n 2018          262           13.26         25.98         17.44         10.41 \r\n 2018          263           17.98         33.81         19.3          16.51 \r\n 2018          264           13.99         19.76         7.52          0.254 \r\n 2018          265           19.76         20.38         5.624         0 \r\n 2018          266           19.44         25.08         8.31          0 \r\n 2018          267           16.2          26.4          10.52         0 \r\n 2018          268           3.46          16.83         6.976         19.05 \r\n 2018          269           19.47         19.11         6.814         0 \r\n 2018          270           13.64         23.1          7.602         0 \r\n 2018          271           4.407         12.62         4.128         0 \r\n 2018          272           2.371         9.51          4.411         5.334 \r\n 2018          273           2.942         10.46         7.581         5.08 \r\n 2018          274           1.709         12.42         8.58          39.62 \r\n 2018          275           5.116         16.09         8.69          0 \r\n 2018          276           12.49         30.84         8.11          0 \r\n 2018          277           16.01         13.76         2.836         0 \r\n 2018          278           3.646         13            8.82          5.08 \r\n 2018          279           3.18          11.82         7.238         2.286 \r\n 2018          280           2.547         12.98         7.056         17.27 \r\n 2018          281           5.672         21.29         11.45         29.97 \r\n 2018          282           3.645         20.46         13.6          6.35 \r\n 2018          283           5.066         19.08         3.38          0 \r\n 2018          284           9.96          7.843         0.732         0 \r\n 2018          285           5.14          6.491         1.328         0 \r\n 2018          286           11.73         13.52         3.734         0 \r\n 2018          287           1.913         8.21         -0.3           5.588 \r\n 2018          288           15.71         8.99         -0.846         2.286 \r\n 2018          289           14.94         17.69         0.205         0 \r\n 2018          290           15.29         12.62         1.582         0 \r\n 2018          291           14.8          20.86         0.842         0 \r\n 2018          292           10.82         20.71         8.25          2.286 \r\n 2018          293           14.79         8.66         -1.838         0 \r\n 2018          294           14.19         17.03        -3.541         0 \r\n 2018          295           14.15         20.3          2.37          0 \r\n 2018          296           14.34         13.45        -0.493         0 \r\n 2018          297           12.48         14.19        -0.756         0 \r\n 2018          298           4.128         11.76         5.3           0 \r\n 2018          299           7.745         13.15         4.047         0 \r\n 2018          300           12.5          20.16         1.4           0.508 \r\n 2018          301           13.27         15.6          2.309         0 \r\n 2018          302           11.28         17.57         1.52          0 \r\n 2018          303           8.7           14.27         5.057         0 \r\n 2018          304           9.14          14.99         2.896         0 \r\n 2018          305           10.52         16.93         2.532         0 \r\n 2018          306           5.96          13.03         3.532         0 \r\n 2018          307           1.313         6.532         2.006         15.49 \r\n 2018          308           2.689         6.329         3.218         9.4 \r\n 2018          309           2.49          7.309         2.664         9.4 \r\n 2018          310           3.82          5.845        -1.009         0 \r\n 2018          311           4.426         1.582        -2.426         0 \r\n 2018          312           4.226         0.346        -2.528         0 \r\n 2018          313           7.354        -2.012        -10.23         0 \r\n 2018          314           4.001        -2.69         -12.71         0 \r\n 2018          315           7.653         4.927        -6.906         0 \r\n 2018          316           4.082        -4.524        -10.6          0 \r\n 2018          317           11.09        -0.522        -12.49         0 \r\n 2018          318           10.62         5.986        -7.749         0 \r\n 2018          319           10.28         8.82         -6.622         0 \r\n 2018          320           7.42          7.59         -0.047         1.524 \r\n 2018          321           5.016         0.126        -9.97          3.302 \r\n 2018          322           11.49         0.084        -14.41         0.254 \r\n 2018          323           6.423         1.217        -6.684         0 \r\n 2018          324           7.312         2.552        -8.58          0.254 \r\n 2018          325           3.606         2.38         -4.22          0 \r\n 2018          326           8.78          11.82        -2.791         0 \r\n 2018          327           1.139         7.228         2.37          5.334 \r\n 2018          328           9.38          10.19        -0.746         0 \r\n 2018          329           1.583         0.044        -6.704         0 \r\n 2018          330           5.937        -6.643        -11.25         0 \r\n 2018          331           9.43         -2.932        -12.33         0 \r\n 2018          332           2.661        -2.486        -7.79          0 \r\n 2018          333           5.538         1.906        -7.617         0 \r\n 2018          334           5.519         3.744        -4.605         0 \r\n 2018          335           1             2.582        -0.138         0.25 \r\n 2018          336           4.017         0.975        -2.486         23.37 \r\n 2018          337           3.578        -1.898        -4.534         1.52 \r\n 2018          338           2.457        -4.432        -5.78          0 \r\n 2018          339           8.96          2.814        -7.739         0.76 \r\n 2018          340           8.3          -3.52         -13.14         0 \r\n 2018          341           5.89         -1.97         -11.42         0 \r\n 2018          342           8.66          0.185        -8.23          0 \r\n 2018          343           8.01          0.489        -10.76         0 \r\n 2018          344           7.527        -0.493        -12.19         0 \r\n 2018          345           7.108         4.654        -6.937         0 \r\n 2018          346           2.741         2.046        -7.21          0 \r\n 2018          347           2.347         1.541        -4.087         0 \r\n 2018          348           7.506         7.682        -4.594         0 \r\n 2018          349           8.55          8.9          -5.426         0 \r\n 2018          350           7.99          7.43         -1.656         0 \r\n 2018          351           8.36          7.59         -2.76          0 \r\n 2018          352           8.46          11.53        -1.677         0 \r\n 2018          353           6.835         11.22         1.925         0 \r\n 2018          354           1.295         3.179        -2.953         0 \r\n 2018          355           3.353        -2.648        -5.568         0 \r\n 2018          356           2.15          2.45         -6.764         0 \r\n 2018          357           8.46          2.39         -5.932         0 \r\n 2018          358           5.544         1.196        -8.7           0 \r\n 2018          359           5.391         6.028        -2.953         0 \r\n 2018          360           1.44          2.875        -2.558         0 \r\n 2018          361           1.195         9.54         -2.244         21.08 \r\n 2018          362           1.768        -2.172        -11.24         7.11 \r\n 2018          363           5.683        -8.95         -13.08         2.03 \r\n 2018          364           8.39          3.562        -9.59          0 \r\n 2018          365           1.011         0.428        -9.2           0 \r\n 2019          1             6.917        -9.18         -15.01         0 \r\n 2019          2             8.3           0.408        -10.58         0 \r\n 2019          3             8.51          9.15         -6.399         0 \r\n 2019          4             8.65          10.05        -2.538         0 \r\n 2019          5             8.78          12.06        -0.684         0 \r\n 2019          6             3.465         5.238        -0.563         0 \r\n 2019          7             5.145         8.16          1.076         0.508 \r\n 2019          8             9.18          6.43         -3.642         0 \r\n 2019          9             9.2          -3.46         -9.65          0 \r\n 2019          10            9.08          0.074        -10.29         0 \r\n 2019          11            2.286         0.276        -5.812         0 \r\n 2019          12            3.816        -1.232        -3.966         9.906 \r\n 2019          13            9.03          3.866        -9.81          3.048 \r\n 2019          14            3.565        -1.636        -11.54         0 \r\n 2019          15            3.744         0.59         -2.304         0 \r\n 2019          16            4.266        -1.91         -10.82         0 \r\n 2019          17            4.861        -1.474        -9.03          0 \r\n 2019          18            2.761        -5.973        -9.87          9.144 \r\n 2019          19            10.35        -9.85         -18.25         0 \r\n 2019          20            6.361        -13.9         -19.45         0 \r\n 2019          21            7.498        -7.962        -17.03         0 \r\n 2019          22            2.34         -3.418        -8.73          3.556 \r\n 2019          23            10.72        -5.385        -13.77         5.588 \r\n 2019          24            11.25        -5.406        -20.56         0 \r\n 2019          25            7.145        -9.05         -23.39         0 \r\n 2019          26            6.08         -2.061        -20.52         0 \r\n 2019          27            5.475        -5.04         -20.84         4.318 \r\n 2019          28            9.25          2.512        -16.52         0.254 \r\n 2019          29            10.65        -14.77        -28.36         0 \r\n 2019          30            12.11        -21.95        -30.12         0 \r\n 2019          31            6.783        -16.6         -28.18         0 \r\n 2019          32            11.68        -6.46         -19.4          0 \r\n 2019          33            4.142         6.694        -8.59          0.254 \r\n 2019          34            2.953         9.74          4.795         0 \r\n 2019          35            7.061         7.006        -13.8          0 \r\n 2019          36            2.546        -7.11         -15.48         0 \r\n 2019          37            3.022        -6.298        -11.06         0 \r\n 2019          38            8.99         -9.06         -18.89         5.334 \r\n 2019          39            13.8         -12.94        -21.05         0 \r\n 2019          40            7.444        -6.014        -19.09         0 \r\n 2019          41            7.45         -3.278        -6.115         7.112 \r\n 2019          42            4.785        -2.568        -5.852         5.334 \r\n 2019          43            11.06        -4.087        -14.96         3.048 \r\n 2019          44            11.28        -3.844        -17.49         0 \r\n 2019          45            11.9          4.047        -15.82         1.016 \r\n 2019          46            8.38         -10.52        -19.11         0 \r\n 2019          47            14.29        -6.156        -18.74         0 \r\n 2019          48            10.44        -3.764        -7.474         12.954 \r\n 2019          49            15.33        -7.008        -20.13         0 \r\n 2019          50            11.34        -5.952        -22.99         0 \r\n 2019          51            10.19        -0.512        -12.88         10.16 \r\n 2019          52            15.7          0.236        -18.23         0.762 \r\n 2019          53            13.17        -0.714        -14.26         0 \r\n 2019          54            6.672         1.096        -3.652         3.81 \r\n 2019          55            15.87        -3.662        -17.52         0 \r\n 2019          56            12.27        -13.35        -19.97         0 \r\n 2019          57            10.29        -9.71         -16.44         0 \r\n 2019          58            16.23        -10.77        -16.58         0 \r\n 2019          59            11           -4.199        -14.51         0.762 \r\n 2019          60            13.36        -0.806        -12.64         0 \r\n 2019          61            13.01        -8.39         -15.5          0 \r\n 2019          62            17.66        -15.5         -21.49         0 \r\n 2019          63            18.41        -13.51        -21.31         0 \r\n 2019          64            18.43        -8.45         -17.5          0 \r\n 2019          65            17.19        -1.636        -17.56         0 \r\n 2019          66            10.88        -5.497        -10.82         6.096 \r\n 2019          67            14.48         1.277        -5.588         0 \r\n 2019          68            4.602         1.611        -0.016         10.67 \r\n 2019          69            19.4          0.518        -6.664         0 \r\n 2019          70            19.03         4.452        -5.588         0 \r\n 2019          71            5.644         3.684        -4.574         2.286 \r\n 2019          72            3.463         8.61          1.896         8.38 \r\n 2019          73            4.05          8.09          0.388         2.794 \r\n 2019          74            18.49         5.057        -2             0 \r\n 2019          75            17.68         7.642        -3.682         0.508 \r\n 2019          76            12.47         5.28         -2.314         0.254 \r\n 2019          77            18.26         7.006        -2.223         0 \r\n 2019          78            11.84         9.15         -1.596         0 \r\n 2019          79            13.55         11.17        -0.886         0 \r\n 2019          80            20.51         11.57        -0.714         0 \r\n 2019          81            21.16         13.04        -0.665         0 \r\n 2019          82            11.47         11.78        -1.91          0 \r\n 2019          83            3.121         7.944         5.159         2.286 \r\n 2019          84            6.347         6.794         0.327         0 \r\n 2019          85            17.95         12.62        -0.948         0 \r\n 2019          86            12.28         19.35         2.664         0 \r\n 2019          87            10.3          12.94         3.38          0 \r\n 2019          88            5.893         7.823         0.762         6.35 \r\n 2019          89            14.84         4.32         -3.338         0 \r\n 2019          90            22.39         6.602        -5.679         0 \r\n 2019          91            20.08         15.3         -0.067         0 \r\n 2019          92            21.24         11.71         0.246         3.81 \r\n 2019          93            8.59          12.56        -0.907         3.048 \r\n 2019          94            5.476         11.88         5.614         3.81 \r\n 2019          95            15.26         18.41         6.248         0 \r\n 2019          96            18.18         24.88         7.198         0 \r\n 2019          97            15.57         22.08         8.59          4.572 \r\n 2019          98            23.17         25.42         5.583         0 \r\n 2019          99            13.21         19            6.148         2.032 \r\n 2019          100           2.521         7.864         2.794         2.032 \r\n 2019          101           7.372         13.81         1.358         3.81 \r\n 2019          102           5.552         2.45         -0.786         0 \r\n 2019          103           20.4          8.53         -2.356         0 \r\n 2019          104           23.84         9.96         -1.454         0 \r\n 2019          105           22.13         22.5          0.346         0 \r\n 2019          106           21.56         23.22         7.642         0 \r\n 2019          107           7.869         23.79         7.157         0.254 \r\n 2019          108           12.16         12.7          5.209         0 \r\n 2019          109           25.46         17.12         2.37          0 \r\n 2019          110           25.43         25.29         3.825         0 \r\n 2019          111           20.8          29.82         9.1           0 \r\n 2019          112           4.769         20.76         7.612         3.556 \r\n 2019          113           23.81         19.05         6.178         0 \r\n 2019          114           25.51         21.27         5.754         0 \r\n 2019          115           11.2          19.16         8.77          1.016 \r\n 2019          116           23.7          17.77         5.26          0 \r\n 2019          117           2.72          9.9           0.368         12.19 \r\n 2019          118           10.88         9.98         -1.859         3.302 \r\n 2019          119           18.16         18.34         6.875         0.508 \r\n 2019          120           4.46          10.61         6.37          8.13 \r\n 2019          121           8.84          11.92         5.926         0.762 \r\n 2019          122           20.47         15.95         4.714         0 \r\n 2019          123           15.91         15.81         4.008         0 \r\n 2019          124           21.371        21.79         4.876         0 \r\n 2019          125           19.61         25.82         12.92         7.874 \r\n 2019          126           16.64         17.39         9.4           2.286 \r\n 2019          127           11.39         15.86         7.854         0 \r\n 2019          128           4.225         17.59         6.29          20.83 \r\n 2019          129           6.097         8.35          2.693         0 \r\n 2019          130           27.24         17.86         3.36          0 \r\n 2019          131           6.025         12.39         6.956         0 \r\n 2019          132           11.53         14.31         5.674         5.334 \r\n 2019          133           28.09         19.16         3.159         0 \r\n 2019          134           16.14         19.28         9.41          12.95 \r\n 2019          135           23.76         25.51         7.39          0 \r\n 2019          136           22.72         33.82         15.23         0 \r\n 2019          137           6.912         21.34         15.04         19.3 \r\n 2019          138           12.32         27.38         14.57         18.8 \r\n 2019          139           7.313         14.56         5.361         1.778 \r\n 2019          140           18.56         13.98         4.25          0 \r\n 2019          141           2.861         12.76         7.682         22.86 \r\n 2019          142           27.34         20.62         12            0 \r\n 2019          143           9.61          21.16         12.98         15.49 \r\n 2019          144           16.69         26            12.4          37.59 \r\n 2019          145           23.2          26.01         17.33         0 \r\n 2019          146           28.06         26.12         14.15         0 \r\n 2019          147           21.45         26.09         12.92         7.112 \r\n 2019          148           5.869         16.25         11.19         18.54 \r\n 2019          149           13.82         23.37         14.14         0.254 \r\n 2019          150           20.26         24.92         12.89         0 \r\n 2019          151           19.43         31.02         14.09         0.254 \r\n 2019          152           21.51         26.52         15.52         0 \r\n 2019          153           27.05         26.23         11.65         0 \r\n 2019          154           10.57         22.59         13.41         0 \r\n 2019          155           22.32         29.42         15.86         0 \r\n 2019          156           26.3          31.76         18.21         0.254 \r\n 2019          157           23.5          30.86         19.15         0 \r\n 2019          158           28.71         30.45         18.57         0 \r\n 2019          159           29.48         29.35         16.25         0 \r\n 2019          160           18.67         24.7          14.54         0 \r\n 2019          161           28.25         27.23         11.87         0 \r\n 2019          162           12.59         26.1          13.83         3.556 \r\n 2019          163           26.2          22.23         12.14         0.508 \r\n 2019          164           29.84         24.41         8.72          0 \r\n 2019          165           13.08         23.96         15.43         0.254 \r\n 2019          166           20.5          31.53         16.9          27.69 \r\n 2019          167           21.64         26.24         15.49         0 \r\n 2019          168           17.19         25.78         16.06         2.032 \r\n 2019          169           6.546         20.84         17.75         3.556 \r\n 2019          170           14.93         22.81         16.48         0.508 \r\n 2019          171           16.59         24.88         14.25         0 \r\n 2019          172           6.753         20.71         16.95         33.02 \r\n 2019          173           11.12         25.2          14.85         11.18 \r\n 2019          174           14.73         23.87         18.55         1.27 \r\n 2019          175           19.611        25.93         15.71         6.604 \r\n 2019          176           28.1          28.5          17.19         0 \r\n 2019          177           18.36         29.62         16.5          0 \r\n 2019          178           17.55         30.59         19.57         0 \r\n 2019          179           17.47         30.53         20.43         0 \r\n 2019          180           26.74         34.81         20.17         0 \r\n 2019          181           24.16         34.4          24.11         0 \r\n 2019          182           23.46         32.56         22.79         0 \r\n 2019          183           16.68         32.44         20.83         13.46 \r\n 2019          184           16.5          30.27         20.26         53.59 \r\n 2019          185           22.09         30.9          20.5          1.524 \r\n 2019          186           23.03         30.53         19.39         0.254 \r\n 2019          187           19.37         28.14         20.08         0 \r\n 2019          188           21.69         27.96         17.68         0 \r\n 2019          189           22.63         29.1          17.87         0 \r\n 2019          190           20.38         30.92         18.35         3.81 \r\n 2019          191           21.19         27.65         19.96         0 \r\n 2019          192           20            28.1          17.95         0 \r\n 2019          193           24.25         31.09         15.85         0 \r\n 2019          194           13.27         29.65         19.92         0 \r\n 2019          195           25.55         32.46         21.45         0 \r\n 2019          196           21.07         31.17         21.31         0 \r\n 2019          197           23.03         31.31         20.48         9.91 \r\n 2019          198           10.83         26.54         19.06         11.94 \r\n 2019          199           23.78         33.86         23.66         4.318 \r\n 2019          200           26.44         34.59         23.78         0 \r\n 2019          201           16.99         31.29         18.5          7.874 \r\n 2019          202           11.67         24.74         18.25         0 \r\n 2019          203           27.85         24.43         14.93         0 \r\n 2019          204           26.38         27.24         13.83         0 \r\n 2019          205           27.37         27.89         14.04         0 \r\n 2019          206           16.1          26.74         15.08         0.762 \r\n 2019          207           24.48         30.98         20.36         0 \r\n 2019          208           25.09         31.6          19.44         0 \r\n 2019          209           15.25         29.98         19.65         3.302 \r\n 2019          210           26.06         27.8          17.27         0 \r\n 2019          211           23.31         26.6          13.01         0 \r\n 2019          212           12.69         23.73         13.83         0.254 \r\n 2019          213           22.55         27.09         14.59         0 \r\n 2019          214           22.195        27.41         15.56         0 \r\n 2019          215           22.38         28.91         18.15         0 \r\n 2019          216           24.49         30.38         17.75         0 \r\n 2019          217           17.83         31.16         17.94         0.762 \r\n 2019          218           24.98         29.02         17.83         0 \r\n 2019          219           24.69         30.85         16.43         0 \r\n 2019          220           21.9          27.55         16.87         0 \r\n 2019          221           24.43         28.09         13.89         0 \r\n 2019          222           17.84         29.67         18.25         1.524 \r\n 2019          223           8.66          26.59         20.88         0 \r\n 2019          224           9.01          27.38         20.27         6.096 \r\n 2019          225           23.96         30.03         18.01         0 \r\n 2019          226           15.19         24.55         14.83         0 \r\n 2019          227           15.55         24.84         14.33         0 \r\n 2019          228           19.44         27.52         15.9          0 \r\n 2019          229           13.55         27.7          15.27         1.016 \r\n 2019          230           15.15         27.81         17.17         7.874 \r\n 2019          231           22.44         27.99         15.84         0 \r\n 2019          232           21.02         30.73         20.19         5.842 \r\n 2019          233           6.816         24.3          15.98         0 \r\n 2019          234           22.62         25.59         14.17         0 \r\n 2019          235           22.35         25.45         13.05         0 \r\n 2019          236           19.58         23.55         14.11         0 \r\n 2019          237           10.61         21.47         15.2          0 \r\n 2019          238           9.33          23.81         16.38         0 \r\n 2019          239           22.79         25.17         11.75         0 \r\n 2019          240           23.65         25.69         10.89         0 \r\n 2019          241           22.07         29.31         14.25         6.096 \r\n 2019          242           21.23         23.6          11.36         0 \r\n 2019          243           7.939         19.92         13.73         0 \r\n 2019          244           18.57         25.98         11.37         0 \r\n 2019          245           18.65         28.34         17.08         0 \r\n 2019          246           11.4          27.74         15.38         0 \r\n 2019          247           22.82         25.11         11.2          0 \r\n 2019          248           20.01         30.11         12.31         0 \r\n 2019          249           21.3          26.33         16.15         0 \r\n 2019          250           11.12         25.98         15.51         5.334 \r\n 2019          251           6.673         20.41         15.81         2.032 \r\n 2019          252           6.628         25.95         17.95         14.99 \r\n 2019          253           13.94         30.04         18.59         6.096 \r\n 2019          254           13.74         30.62         19.03         12.95 \r\n 2019          255           10.19         28.85         15.77         11.94 \r\n 2019          256           19.31         22.24         13.28         0 \r\n 2019          257           4.257         24.38         12.66         7.112 \r\n 2019          258           17.27         30.04         18.83         0 \r\n 2019          259           14.45         31.13         18.46         0 \r\n 2019          260           16.76         31.84         19.86         0 \r\n 2019          261           11.83         28.62         20.94         5.08 \r\n 2019          262           10.87         26.78         19.55         3.302 \r\n 2019          263           17.5          31.67         18.97         0 \r\n 2019          264           3.841         23.53         21.21         3.302 \r\n 2019          265           5.106         21.34         11.47         21.08 \r\n 2019          266           18.43         27.24         10.66         0 \r\n 2019          267           16.32         29.91         14.48         0.762 \r\n 2019          268           10.12         21.74         12.71         0 \r\n 2019          269           16.19         23.94         7.984         0 \r\n 2019          270           5.467         21.76         11.97         3.302 \r\n 2019          271           14.55         21.93         9.38          1.778 \r\n 2019          272           3.359         20.71         12.96         6.35 \r\n 2019          273           16.09         31.91         19.33         0 \r\n 2019          274           5.091         22.74         13.71         28.45 \r\n 2019          275           2.801         15.28         10.72         8.64 \r\n 2019          276           11.33         14.43         4.937         0 \r\n 2019          277           12.99         15.52         3.724         0 \r\n 2019          278           6.161         20.68         8.92          12.7 \r\n 2019          279           9.41          20.05         5.876         0 \r\n 2019          280           16.83         22.64         5.26          0 \r\n 2019          281           16.62         21.04         4.775         0 \r\n 2019          282           10.14         19.38         7.823         11.94 \r\n 2019          283           1.693         17.41         3.331         27.43 \r\n 2019          284           5.152         4.351        -0.816         0 \r\n 2019          285           12.51         11.76        -2.204         0 \r\n 2019          286           8.59          10.92        -0.28          0 \r\n 2019          287           14.85         15.7         -1.97          0 \r\n 2019          288           11.78         14.31         4.956         0 \r\n 2019          289           7.027         9.07          1.288         0 \r\n 2019          290           14.63         17.11        -0.188         0 \r\n 2019          291           14.54         22.42         5.866         0 \r\n 2019          292           9.64          20.68         7.258         5.08 \r\n 2019          293           9.84          17.39         3.744         6.35 \r\n 2019          294           8.75          11.51         6.37          20.32 \r\n 2019          295           13.2          11.18         2.43          0.254 \r\n 2019          296           6.399         12.8          0.873         3.81 \r\n 2019          297           13.4          9             0.346         0 \r\n 2019          298           13.77         12.07        -3.084         0 \r\n 2019          299           11.65         11.11        -2.244         0 \r\n 2019          300           6.018         7.994         0.975         0 \r\n 2019          301           9.87          3.966        -2.041         4.572 \r\n 2019          302           11.41         5.432        -6.338         1.524 \r\n 2019          303           4.807         1.258        -2.953         3.81 \r\n 2019          304           12.64         4.805        -5.608         0 \r\n 2019          305           3.629         5.4          -4.25          1.778 \r\n 2019          306           10.8          8.47         -1.585         0 \r\n 2019          307           5.036         9.51         -1.646         0 \r\n 2019          308           9.44          8.47         -1.292         0 \r\n 2019          309           7.559         3.755        -3.541         0 \r\n 2019          310           8.39          6.926        -7.232         0 \r\n 2019          311           12.08        -2.446        -13.16         0 \r\n 2019          312           10.3          4.038        -9             0 \r\n 2019          313           9.42          13.52        -0.766         0 \r\n 2019          314           4.328         2.471        -4.452         4.572 \r\n 2019          315           10.13        -4.402        -14.55         6.35 \r\n 2019          316           11.49        -8.51         -20.65         0 \r\n 2019          317           4.952        -0.846        -9.67          3.556 \r\n 2019          318           11.06        -2.356        -8.96          0.254 \r\n 2019          319           10.62         10.12        -6.826         0.254 \r\n 2019          320           8.36          9.56         -1.434         0 \r\n 2019          321           2.056         5.906         1.277         2.032 \r\n 2019          322           5.391         7.934        -0.907         2.794 \r\n 2019          323           10.2          10.97         1.238         0.254 \r\n 2019          324           6.774         13.35         1.53          9.65 \r\n 2019          325           2.043         13.18        -3.966         2.54 \r\n 2019          326           8.02          0.873        -7.232         0 \r\n 2019          327           9.25          6.481        -6.521         0 \r\n 2019          328           8.52          10.87        -0.32          0 \r\n 2019          329           7.372         10.49         0.185         0 \r\n 2019          330           2.159         2.855        -0.654         7.62 \r\n 2019          331           3.805         0.832        -2.973         0.254 \r\n 2019          332           2.381        -0.704        -3.135         0 \r\n 2019          333           1.567         1.196        -1.677         2.54 \r\n 2019          334           1.74          5.824         1.137         3.556 \r\n 2019          335           2.318         2.309        -5.365         9.398 \r\n 2019          336           8.01         -0.461        -9.71          1.524 \r\n 2019          337           7.876         7.44         -2.184         0 \r\n 2019          338           7.87          9.22         -0.988         0 \r\n 2019          339           7.561         12.58        -1.92          0 \r\n 2019          340           6.039        -0.401        -5.67          0 \r\n 2019          341           6.971         6.753        -4.493         0 \r\n 2019          342           5.018         8            -0.108         0 \r\n 2019          343           5.069         3.28         -12.78         0 \r\n 2019          344           5.216        -6.764        -15.91         0 \r\n 2019          345           7.702        -7.048        -11            0 \r\n 2019          346           3.054         4.876        -9.32          0 \r\n 2019          347           3.066        -1.21         -10.81         0 \r\n 2019          348           4.362        -2.466        -13.82         0 \r\n 2019          349           2.904        -8.17         -15.5          0 \r\n 2019          350           5.436        -3.642        -13.43         0.254 \r\n 2019          351           5.709         2.916        -9.55          0 \r\n 2019          352           5.573        -2.244        -14.61         0 \r\n 2019          353           7.329         7.854        -8.61          0 \r\n 2019          354           5.154         8.18         -4.636         0 \r\n 2019          355           7.621         10.32        -6.784         0 \r\n 2019          356           6.856         11.96        -2.386         0 \r\n 2019          357           6.426         10.17        -1.626         0 \r\n 2019          358           5.283         10.09        -1.15          0 \r\n 2019          359           6.606         15.32        -1.332         0 \r\n 2019          360           2.888         2.906        -2.304         0 \r\n 2019          361           7.328         7.076        -5.77          0 \r\n 2019          362           1             9.14          0.398         23.11 \r\n 2019          363           1.415         9.24         -3.094         0.508 \r\n 2019          364           3.948        -3.094        -5.344         0 \r\n 2019          365           4.981        -0.563        -6.42          0 \r\n 2020          1             6.596         6.875        -6.928         0 \r\n 2020          2             5.393         7.188        -0.553         0 \r\n 2020          3             2.032         1.298        -2.386         5.334 \r\n 2020          4             6.338        -1.515        -6.592         0.762 \r\n 2020          5             7.826         4.976        -2.538         0.254 \r\n 2020          6             4.885         3.674        -5.132         0 \r\n 2020          7             5.996         3.594        -8.07          0 \r\n 2020          8             8.52         -3.094        -12.23         0 \r\n 2020          9             5.578         12.69        -4.108         0 \r\n 2020          10            1.652        -3.074        -10.42         0 \r\n 2020          11            6.728        -7.08         -13.94         0 \r\n 2020          12            4.162        -3.541        -13.18         3.556 \r\n 2020          13            5.203         0.185        -4.189         0 \r\n 2020          14            9.13          0.914        -9.87          2.54 \r\n 2020          15            3.991        -3.074        -17.15         0 \r\n 2020          16            9.3          -12.62        -21.04         0 \r\n 2020          17            2.053        -2.041        -15.93         11.43 \r\n 2020          18            8.68         -1.372        -18.93         0 \r\n 2020          19            8.22         -15.55        -20.33         0 \r\n 2020          20            7.768        -11.55        -19.52         0 \r\n 2020          21            9.13         -4.848        -22.46         0 \r\n 2020          22            4.342         0.428        -4.898         5.08 \r\n 2020          23            4.783         0.61         -1.028         2.032 \r\n 2020          24            6.19         -0.188        -2.528         4.318 \r\n 2020          25            6.895        -0.542        -8.71          0.254 \r\n 2020          26            5.661        -0.36         -7.12          0 \r\n 2020          27            5.438        -0.633        -5.324         0 \r\n 2020          28            5.988        -4.685        -8.88          0 \r\n 2020          29            8.03         -2.051        -8.85          0.762 \r\n 2020          30            6.398        -1.898        -6.492         0 \r\n 2020          31            6.101         1.682        -2.69          0.254 \r\n 2020          32            11.3          4.25         -1.413         0 \r\n 2020          33            11.82         9.91         -0.563         0 \r\n 2020          34            5.247         0.832        -3.429         0 \r\n 2020          35            7.642        -3.408        -8.17          0 \r\n 2020          36            8.08         -2.304        -9.65          0 \r\n 2020          37            12.67         0.954        -11.07         0 \r\n 2020          38            6.233        -2.528        -8.62          5.334 \r\n 2020          39            13.05        -3.804        -17.36         0 \r\n 2020          40            5.364         3.674        -8.85          0 \r\n 2020          41            13.27         1.925        -12.39         0 \r\n 2020          42            13.45         1.137        -5.67          0 \r\n 2020          43            4.149         2.239        -20.01         0 \r\n 2020          44            14.15        -16.24        -24.44         0 \r\n 2020          45            14.32        -6.582        -21.2          0 \r\n 2020          46            13.91         3.936        -9.34          0 \r\n 2020          47            10.98         6.452        -5.112         0 \r\n 2020          48            2.619         1.966        -2.771         11.43 \r\n 2020          49            12.72         0.53         -9.97          0 \r\n 2020          50            6.158        -9.43         -14.59         0 \r\n 2020          51            15.42        -6.319        -18.28         0 \r\n 2020          52            15.4          6.067        -9.01          0 \r\n 2020          53            14.56         10.41        -3.176         0 \r\n 2020          54            14.53         14.51        -0.826         0 \r\n 2020          55            11.83         5.148        -1.554         0 \r\n 2020          56            9.37          2.288        -2.122         0 \r\n 2020          57            13.61         0.762        -6.278         0 \r\n 2020          58            14.42         1.682        -5.304         0 \r\n 2020          59            6.825         0.448        -6.502         0 \r\n 2020          60            15.77         10.77        -7.232         0 \r\n 2020          61            11.96         14.29        -0.31          0 \r\n 2020          62            7.284         5.018        -1.232         0 \r\n 2020          63            16.64         11.44        -0.584         0 \r\n 2020          64            16.97         13           -2.041         0 \r\n 2020          65            9.37          7.086         0.064         0 \r\n 2020          66            17.85         8.37         -3.703         0 \r\n 2020          67            16.76         18.34        -0.502         0 \r\n 2020          68            17.06         21.53         6.562         0 \r\n 2020          69            2.45          14.31        -1.606         5.334 \r\n 2020          70            8.82          8.99         -4.168         0.254 \r\n 2020          71            8.33          13.28         2.836         0 \r\n 2020          72            7.805         16.63         0.368         0 \r\n 2020          73            10.8          8.32         -3.267         0 \r\n 2020          74            5.87          2.006        -4.087         1.778 \r\n 2020          75            11.51         5.26         -5.538         0 \r\n 2020          76            6.098         6.602        -0.138         0 \r\n 2020          77            13.75         8.43         -3.46          3.81 \r\n 2020          78            4.124         8.47          3.927         22.86 \r\n 2020          79            2.414         10.41         0.894         24.64 \r\n 2020          80            17.54         1.562        -6.095         0.254 \r\n 2020          81            15.67         5.785        -3.499         0 \r\n 2020          82            8.18          2.35         -0.866         0.254 \r\n 2020          83            6.235         7.622         0.044         0.254 \r\n 2020          84            10.71         11.49         3.28          0 \r\n 2020          85            4.684         11.05         1.925         0 \r\n 2020          86            9.14          12.76         4.38          0 \r\n 2020          87            3.022         10.73         4.26          1.016 \r\n 2020          88            6.482         18.41         3.512         5.334 \r\n 2020          89            17.58         13.83         2.32          0.254 \r\n 2020          90            22.39         16.83        -1.09          0 \r\n 2020          91            21.2          15.44         1.722         0 \r\n 2020          92            19.82         17.89         1.662         0.508 \r\n 2020          93            11.16         17.42         3.422         0 \r\n 2020          94            3.455         3.784        -3.074         2.794 \r\n 2020          95            21.45         8.51         -5.101         0.254 \r\n 2020          96            21.13         15.68        -1.92          0 \r\n 2020          97            7.326         18.51         5.219         0 \r\n 2020          98            18.71         27.94         12.34         0 \r\n 2020          99            15.77         18.67         3.876         0 \r\n 2020          100           15.35         8.62         -2.992         0 \r\n 2020          101           19.05         11.77        -5.67          0 \r\n 2020          102           5.937         10.68         2.512         2.286 \r\n 2020          103           1.878         8.11         -3.034         20.83 \r\n 2020          104           21.7          4.047        -5.365         0.254 \r\n 2020          105           20.13         4.018        -5.598         0 \r\n 2020          106           17.49         5.038        -9.19          1.27 \r\n 2020          107           11.46         4.916        -2.922         0 \r\n 2020          108           16.16         9.27         -3.024         2.794 \r\n 2020          109           24.67         20.37         1.46          0 \r\n 2020          110           25.32         15.24         3.007         0 \r\n 2020          111           18.41         20.22         2.532         0 \r\n 2020          112           25.42         18.36         0.012         0 \r\n 2020          113           16.35         26.33         11.23         2.286 \r\n 2020          114           24.24         23.88         6.895         0 \r\n 2020          115           14.37         15.59         9.08          0 \r\n 2020          116           21.35         20.14         5.866         0 \r\n 2020          117           22.38         21.83         6.148         0 \r\n 2020          118           24.33         27.24         8.97          0 \r\n 2020          119           17.88         23.81         9.2           2.286 \r\n 2020          120           22.19         17.34         7.571         0 \r\n 2020          121           27.56         23.23         7.016         0 \r\n 2020          122           20.22         28.04         8.5           0 \r\n 2020          123           12.09         22.96         11.36         0 \r\n 2020          124           23.98         26.56         9.84          0 \r\n 2020          125           7.269         13.04         8.51          3.81 \r\n 2020          126           4.1           8.69          5.926         6.858 \r\n 2020          127           17.53         15.84         5.452         0 \r\n 2020          128           15.14         18.06         5.845         0.254 \r\n 2020          129           27.97         13.77         2.774         0 \r\n 2020          130           24.3          19.82        -0.665         0 \r\n 2020          131           14.9          11.84         4.32          0 \r\n 2020          132           23.29         14.67         5.209         0 \r\n 2020          133           20.85         16.28         3.603         0 \r\n 2020          134           8.95          14.05         5.26          8.38 \r\n 2020          135           6.771         18.75         11.63         1.778 \r\n 2020          136           27.35         23.17         10.44         0.254 \r\n 2020          137           19.38         23.47         9.91          19.3 \r\n 2020          138           8.81          16.76         11.56         14.22 \r\n 2020          139           9.19          15            10.04         0.762 \r\n 2020          140           8.96          16.8          10.52         0 \r\n 2020          141           5.463         16.84         13.02         0 \r\n 2020          142           7.821         16.16         13.1          0 \r\n 2020          143           13.36         21.9          12.8          1.778 \r\n 2020          144           15.17         23.55         15.54         11.43 \r\n 2020          145           13.91         27.49         14.69         4.572 \r\n 2020          146           16.1          27.56         17.39         10.92 \r\n 2020          147           13.75         26.31         18.24         6.35 \r\n 2020          148           16.48         26.56         18.55         5.08 \r\n 2020          149           18.48         24.84         15.41         2.032 \r\n 2020          150           29.32         22.03         12.03         1.27 \r\n 2020          151           28.54         23.57         11.1          1.016 \r\n 2020          152           14.05         22.61         13.71         0 \r\n 2020          153           25.31         32.01         17.19         0 \r\n 2020          154           28.55         35.27         21.31         0 \r\n 2020          155           26.34         33.53         19.89         0 \r\n 2020          156           27.46         33.84         20.81         0 \r\n 2020          157           27.69         30.31         18.5          1.524 \r\n 2020          158           23.07         30.37         18.98         0 \r\n 2020          159           28.16         32.86         20.59         0 \r\n 2020          160           27.77         33.15         22.87         0 \r\n 2020          161           7.557         24.7          17.83         9.65 \r\n 2020          162           13            23.56         13.62         0 \r\n 2020          163           30.21         28.94         12.9          0 \r\n 2020          164           30.09         31.37         14.19         0 \r\n 2020          165           28.23         26.24         15.63         0 \r\n 2020          166           26.65         26.99         13.61         0 \r\n 2020          167           27.28         30.46         17.75         0 \r\n 2020          168           28.92         29.88         17.86         0 \r\n 2020          169           28.96         29.8          15.78         0 \r\n 2020          170           21.37         30.76         19.21         3.556 \r\n 2020          171           10.97         24            19.6          2.54 \r\n 2020          172           14            27.17         17.95         0 \r\n 2020          173           21.76         30.97         17.83         0 \r\n 2020          174           12.19         22.83         15.84         17.27 \r\n 2020          175           31.86         23.64         14.37         0.508 \r\n 2020          176           24.6          27.02         13.38         0 \r\n 2020          177           27.29         29.63         13.89         0 \r\n 2020          178           15.96         29.24         21.41         1.27 \r\n 2020          179           25.37         31.23         19.82         0 \r\n 2020          180           21.18         30.21         19.5          0 \r\n 2020          181           17.98         30.98         23.89         0 \r\n 2020          182           16.1          28.24         22.58         0 \r\n 2020          183           21.37         28.36         21.02         0 \r\n 2020          184           21.62592      31.86         23.16         0 \r\n 2020          185           26.2656       31.25         19.83         0 \r\n 2020          186           26.33472      32.48         19.26         0 \r\n 2020          187           26.64576      32.06         19.86         0 \r\n 2020          188           19.96704      32.43         22.91         0 \r\n 2020          189           17.96256      32.69         24.23         0 \r\n 2020          190           12.59712      26.09         17.08         0 \r\n 2020          191           27.50976      31.74         16.64         0 \r\n 2020          192           24.7104       31.66         19.18         9.652 \r\n 2020          193           26.73216      29.14         17.15         0 \r\n 2020          194           26.36064      30.05         17.12         0 \r\n 2020          195           19.70784      30.96         18.83         14.732 \r\n 2020          196           12.58848      25.43         16.44         4.318 \r\n 2020          197           28.84896      28.53         12.88         1.27 \r\n 2020          198           22.19616      31.48         18.65         1.016 \r\n 2020          199           24.7968       32.54         24.11         1.016 \r\n 2020          200           26.04096      29.28         19.44         0.508 \r\n 2020          201           16.1136       27.25         19.26         0.508 \r\n 2020          202           17.59968      27.73         17.83         3.302 \r\n 2020          203           26.50752      27.81         16.34         0 \r\n 2020          204           19.92384      28.78         15.44         0 \r\n 2020          205           25.15104      32.68         19.63         0 \r\n 2020          206           23.51808      33.29         22.47         0 \r\n 2020          207           7.39584       26.64         23.34         7.874 \r\n 2020          208           26.49888      29.75         18.01         0 \r\n 2020          209           26.6544       30.4          15.52         0 \r\n 2020          210           22.83552      32.77         19.58         1.27 \r\n 2020          211           23.6304       28.12         18.88         0.254 \r\n 2020          212           23.64768      27.82         16.27         0 \r\n 2020          213           22.9824       28.18         13.67         0 \r\n 2020          214           24.26976      25.36         14.13         0.762 \r\n 2020          215           23.12928      22.5          11.77         0 \r\n 2020          216           25.98912      24.13         10.65         0 \r\n 2020          217           19.12896      23.93         10.74         0 \r\n 2020          218           14.8176       24.7          15.79         3.302 \r\n 2020          219           23.10336      29.06         17.12         0 \r\n 2020          220           24.04512      31.54         19.96         0 \r\n 2020          221           20.68416      32.13         20.19         0.508 \r\n 2020          222           13.08096      26.52         15.6          18.288 \r\n 2020          223           26.20512      27.45         12.77         0 \r\n 2020          224           18.33408      29.91         17.17         0 \r\n 2020          225           21.02976      30.8          21.87         0 \r\n 2020          226           20.9952       30.7          19.72         4.826 \r\n 2020          227           25.60032      27.42         15.93         0 \r\n 2020          228           21.91104      30.42         14.29         0 \r\n 2020          229           24.57216      26.42         16.04         0 \r\n 2020          230           24.76224      26.97         13.23         0 \r\n 2020          231           25.0992       27.3          13.26         0 \r\n 2020          232           24.08832      28.76         14.23         0 \r\n 2020          233           23.62176      30.84         15.14         0 \r\n 2020          234           15.70752      31.57         18.51         0.762 \r\n 2020          235           22.47264      35.13         17.66         0 \r\n 2020          236           20.6064       35.04         20.25         0 \r\n 2020          237           21.73824      34.84         20.38         0 \r\n 2020          238           22.2912       34.84         19.53         0 \r\n 2020          239           21.816        34.89         21.19         0 \r\n 2020          240           19.79424      35.06         20.25         0 \r\n 2020          241           20.49408      26.14         15.06         0 \r\n 2020          242           19.71648      26.27         12.4          0 \r\n 2020          243           20.49408      25.27         13.12         1.524 \r\n 2020          244           9.22752       21.13         11.21         1.778 \r\n 2020          245           23.22432      31.78         14.21         0 \r\n 2020          246           22.77504      25.82         13.65         0 \r\n 2020          247           20.27808      28.68         8.74          0 \r\n 2020          248           21.32352      30.6          10.6          0 \r\n 2020          249           17.90208      33.72         18.97         0 \r\n 2020          250           16.77024      22.42         11.57         0 \r\n 2020          251           3.226176      11.56         6.946         22.86 \r\n 2020          252           3.221856      9.66          7.076         21.082 \r\n 2020          253           4.567104      11.82         7.884         15.748 \r\n 2020          254           3.109536      14.98         10.72         6.096 \r\n 2020          255           11.1456       19.88         10.46         3.81 \r\n 2020          256           20.11392      27.68         9.27          0 \r\n 2020          257           17.53056      26.5          11.69         0 \r\n 2020          258           19.80288      28.97         12.22         0 \r\n 2020          259           16.8912       25            11.66         0 \r\n 2020          260           16.99488      21.31         8.38          0 \r\n 2020          261           19.28448      20.92         6.914         0 \r\n 2020          262           15.94944      20.92         7.984         0 \r\n 2020          263           16.4592       23.23         8.14          0 \r\n 2020          264           16.34688      27.52         10.02         0 \r\n 2020          265           17.60832      27.44         10.51         0 \r\n 2020          266           16.29504      27.54         11.88         0 \r\n 2020          267           13.27968      28.9          14.86         0 \r\n 2020          268           16.83072      30.63         15.52         0 \r\n 2020          269           13.49568      32.26         17.19         0 \r\n 2020          270           2.666304      20.82         10.66         1.27 \r\n 2020          271           10.03104      17.33         9.15          1.524 \r\n 2020          272           10.50624      20.61         7.006         0 \r\n 2020          273           16.62336      20.7          9.48          0 \r\n 2020          274           9.09792       15.13         2.794         0 \r\n 2020          275           16.06176      14.88         0.994         0 \r\n 2020          276           7.8624        13.41         5.966         0.508 \r\n 2020          277           17.43552      15.53         2.067         0 \r\n 2020          278           15.28416      23.67         4.643         0 \r\n 2020          279           16.45056      28            9.38          0 \r\n 2020          280           16.13088      26.87         12.48         0 \r\n 2020          281           15.15456      24.31         7.904         0 \r\n 2020          282           13.6944       30.57         14.21         0 \r\n 2020          283           15.10272      25.18         11.77         0 \r\n 2020          284           14.256        27.44         11.71         0 \r\n 2020          285           15.91488      18.85         7.38          0 \r\n 2020          286           15.14592      18.47         7.38          0 \r\n 2020          287           8.44128       21.95         7.248         0 \r\n 2020          288           15.52608      11.94        -1.616         0 \r\n 2020          289           13.08096      11.31        -2.102         0 \r\n 2020          290           8.57088       18.98         4.684         0 \r\n 2020          291           8.95104       7.056         0.165         4.318 \r\n 2020          292           3.868128      1.662        -1.444         1.778 \r\n 2020          293           2.798496      5.38          0.064         0.508 \r\n 2020          294           5.462208      7.874         1.48          0.508 \r\n 2020          295           1.504224      8.66          1.864         20.066 \r\n 2020          296           3.860352      3.632        -3.804         0 \r\n 2020          297           10.73088      3.007        -6.572         0 \r\n 2020          298           2.7864        0.61         -4.026         0 \r\n 2020          299           8.95104      -0.229        -6.389         0.254 \r\n 2020          300           13.59936      4.27         -6.794         0 \r\n 2020          301           12.00096      14.55        -3.824         0 \r\n 2020          302           6.003936      4.594        -1.585         0 \r\n 2020          303           12.58848      9.68         -3.824         0 \r\n 2020          304           12.0096       18.06         0.985         0 \r\n 2020          305           12.79584      6.976        -4.168         0 \r\n 2020          306           12.79584      6.976        -4.168         0 \r\n 2020          307           11.95776      17.72        -5.71          0 \r\n 2020          308           12.096        25.83         2.612         0 \r\n 2020          309           12.12192      23.59         5.32          0 \r\n 2020          310           11.42208      25.52         4.604         0 \r\n 2020          311           11.46528      24.4          4.29          0 \r\n 2020          312           11.0592       22.61         11.71         0 \r\n 2020          313           9.01152       22.87         10.02         0 \r\n 2020          314           2.280096      20.09         1.906         14.224 \r\n 2020          315           2.057184      2.764        -2.528         23.876 \r\n 2020          316           11.06784      9.82         -3.844         0 \r\n 2020          317           7.20576       9.58         -5.466         0 \r\n 2020          318           11.00736      4.937        -8.71          0 \r\n 2020          319           1.4472        10.23        -2.791         0 \r\n 2020          320           9.03744       6.442        -3.196         1.016 \r\n 2020          321           10.37664      12.48        -4.949         0 \r\n 2020          322           5.901984      5.866        -6.278         0 \r\n 2020          323           8.83008       18.67        -0.826         0 \r\n 2020          324           8.856         21.74         5.946         0 \r\n 2020          325           5.298048      8.88          0.489         0 \r\n 2020          326           5.695488      5.371        -3.703         0 \r\n 2020          327           9.57312       10.49        -1.849         0 \r\n 2020          328           3.846528      3.26         -7.09          0.254 \r\n 2020          329           0.956448      4.744         0.126         8.382 \r\n 2020          330           1.532736      3.784         1.562         0.254 \r\n 2020          331           8.83008       7.51         -0.573         0 \r\n 2020          332           9.51264       6.028        -4.594         0 \r\n 2020          333           9.27936       14.14        -1.262         0 \r\n 2020          334           6.293376      3.32         -4.808         0 \r\n 2020          335           8.22528       0.246        -8.06          0 \r\n 2020          336           9.42624       4.956        -10.36         0 \r\n 2020          337           8.88192       9.21         -8.12          0 \r\n 2020          338           8.3808        7.318        -7.282         0 \r\n 2020          339           8.57088       9.94         -4.23          0 \r\n 2020          340           8.5104        8.83         -4.276         0 \r\n 2020          341           2.443392      2.612        -4.614         0 \r\n 2020          342           2.476224      0.211        -2.39          0 \r\n 2020          343           0.832032      11.62        -2.935         0 \r\n 2020          344           1.80144       13.655       -2.101         0 \r\n 2020          345           7.49088       15.69        -1.267         0 \r\n 2020          346           1.06704       2.771        -0.601         7.62 \r\n 2020          347           5.930496      0.78         -7.171         9.652 \r\n 2020          348           4.90752      -3.598        -9.04          0 \r\n 2020          349           7.0848       -5.034        -13.63         0 \r\n 2020          350           5.959872     -5.261        -10.6          0 \r\n 2020          351           8.00064      -3.877        -11.39         0 \r\n 2020          352           4.05648      -2.917        -7.543         0 \r\n 2020          353           6.045408      2.587        -5.809         0.254 \r\n 2020          354           5.349024      1.043        -10.39         0 \r\n 2020          355           7.66368       3.293        -10.61         0 \r\n 2020          356           8.40672       6.915        -2.905         0 \r\n 2020          357           7.95744       8.12         -4.317         0 \r\n 2020          358           1.437696      10.36        -14.06         0.254 \r\n 2020          359           8.57952      -11.69        -17.38         0 \r\n 2020          360           8.25984      -2.628        -18.38         0 \r\n 2020          361           7.55136       1.42         -9.16          0 \r\n 2020          362           2.668032     -0.836        -4.777         0 \r\n 2020          363           8.28576      -1.95         -9.61          0 \r\n 2020          364           1.603584     -1.137        -8.97          9.906 \r\n 2020          365           7.18848      -1.1          -7.234         0 \r\n 2020          366           6.94656      -4.261        -10.46         0 \r\n 2021          1             3.645216     -5.115        -10.68         0 \r\n 2021          2             7.20576      -1.69         -13.62         1.27 \r\n 2021          3             8.62272      -1.745        -15.63         0 \r\n 2021          4             7.50816       3.328        -3.14          0 \r\n 2021          5             6.908544      1.31         -8.46          0 \r\n 2021          6             5.253984      1.729        -2.801         0 \r\n 2021          7             6.568992     -0.933        -4.656         0 \r\n 2021          8             3.518208     -1.452        -5.865         0 \r\n 2021          9             3.223584     -5.163        -7.295         0 \r\n 2021          10            2.966976     -0.537        -7.31          0 \r\n 2021          11            9.14976       3.603        -5.76          0 \r\n 2021          12            9.22752       6.668        -6.512         0 \r\n 2021          13            6.829056      5.138        -1.461         0 \r\n 2021          14            1.811808      3.61         -1.2           8.128 \r\n 2021          15            3.659904      1.589        -1.991         3.302 \r\n 2021          16            3.964896     -1.905        -3.986         0 \r\n 2021          17            6.03072      -0.655        -5.061         0 \r\n 2021          18            9.92736      -0.188        -9.06          0 \r\n 2021          19            6.628608      1.948        -12.7          0 \r\n 2021          20            10.56672      5.377        -13.33         0 \r\n 2021          21            10.584        4.204        -7.623         0 \r\n 2021          22            9.61632      -5.489        -12.97         0 \r\n 2021          23            5.476032     -4.409        -12.28         0 \r\n 2021          24            9.1584       -1.316        -10.59         0.508 \r\n 2021          25            2.876256     -5.109        -10.84         12.954 \r\n 2021          26            9.55584      -6.415        -12.54         8.128 \r\n 2021          27            10.90368     -4.99         -13.34         0.508 \r\n 2021          28            11.1456      -5.642        -17.01         0 \r\n 2021          29            9.79776      -2.348        -9.58          0.254 \r\n 2021          30            3.017952     -0.317        -3.282         0 \r\n 2021          31            5.496768     -0.36         -3.885         0.254 \r\n 2021          32            7.69824      -0.73         -6.694         0 \r\n 2021          33            6.336576     -5.474        -8.38          0 \r\n 2021          34            9.68544       2.016        -8.65          0 \r\n 2021          35            7.80192       1.989        -13.13         5.334 \r\n 2021          36            12.86496     -8.6          -17.82         0 \r\n 2021          37            7.62048      -13.84        -21.6          0 \r\n 2021          38            8.96832      -18.08        -23.42         0 \r\n 2021          39            8.96832      -15.86        -22.78         0 \r\n 2021          40            13.27104     -10.79        -24.82         0.254 \r\n 2021          41            9.66816      -11.65        -18.86         0 \r\n 2021          42            9.40032      -16.7         -22.78         4.318 \r\n 2021          43            9.68544      -20.44        -23.84         0 \r\n 2021          44            13.07232     -17.31        -23.06         3.302 \r\n 2021          45            10.91232     -21.93        -25.03         0 \r\n 2021          46            10.5408      -20.39        -27.24         0 \r\n 2021          47            15.2064      -10.85        -28.16         0 \r\n 2021          48            10.2384      -11.04        -19.84         0 \r\n 2021          49            13.42656     -6.384        -17.63         0.254 \r\n 2021          50            14.00544     -1.484        -18.48         0 \r\n 2021          51            14.9904      -2.497        -15.6          0 \r\n 2021          52            7.67232      -2.132        -6.037         8.382 \r\n 2021          53            14.22144      6.353        -6.457         2.286 \r\n 2021          54            15.8112       6.673        -4.678         0 \r\n 2021          55            14.04         4.62         -5.504         0 \r\n 2021          56            16.16544      4.58         -6.546         0 \r\n 2021          57            10.76544      4.038        -4.987         0 \r\n 2021          58            16.07904      9.18         -2.763         0 \r\n 2021          59            9.70272       3.439        -3.672         0 \r\n 2021          60            15.0768      -0.522        -5.544         0 \r\n 2021          61            16.92576      11.1         -5.117         0 \r\n 2021          62            16.83936      14.96        -0.305         0 \r\n 2021          63            16.848        9.46         -0.886         0 \r\n 2021          64            15.336        8.78         -3.73          0 \r\n 2021          65            16.77024      13.08        -2.129         0 \r\n 2021          66            16.9344       17.98         0.708         0 \r\n 2021          67            16.12224      18.41         2.31          0 \r\n 2021          68            15.69024      20.35         6.727         0 \r\n 2021          69            6.16032       22.19         0.663         3.302 \r\n 2021          70            16.07904      11.87        -0.043         0 \r\n 2021          71            12.93408      10.04         0.266         0 \r\n 2021          72            14.7312       14.53         0.071         0 \r\n 2021          73            3.022272      8.25          0.988         10.668 \r\n 2021          74            4.065984      1.072        -0.577         6.604 \r\n 2021          75            5.997888      5.677        -0.486         1.524 \r\n 2021          76            5.168448      3.731        -0.166         0 \r\n 2021          77            18.24768      9.06         -0.05          0 \r\n 2021          78            20.41632      11.25        -2.068         0 \r\n 2021          79            20.31264      16.05        -2.304         0 \r\n 2021          80            17.86752      19.04         3.976         0 \r\n 2021          81            2.996352      11.4          4.825         1.778 \r\n 2021          82            3.327264      12.59         7.477         28.702 \r\n 2021          83            4.405536      8.87          4.303         1.778 \r\n 2021          84            4.783968      6.819         3.873         0 \r\n 2021          85            8.45856       10.69         3.482         0 \r\n 2021          86            4.576608      11.21         3.138         1.27 \r\n 2021          87            21.53088      10.33         0.644         0 \r\n 2021          88            21.22848      24.11         2.656         0 \r\n 2021          89            16.96896      14.59        -1.555         0 \r\n 2021          90            21.47904      4.536        -4.235         0 \r\n 2021          91            22.1616       8.15         -6.98          0 \r\n 2021          92            21.85056      18.02        -2.065         0 \r\n 2021          93            22.31712      24.8          7.447         0 \r\n 2021          94            20.42496      29.51         5.754         0 \r\n 2021          95            19.67328      28.64         15.76         0 \r\n 2021          96            11.4048       26.52         13.98         0 \r\n 2021          97            11.15424      23.91         13.38         8.128 \r\n 2021          98            5.367168      13.87         8.07          2.54 \r\n 2021          99            9.2448        12.46         7.552         0 \r\n 2021          100           8.09568       11.92         4.78          0 \r\n 2021          101           20.71872      16.73         4.3           0 \r\n 2021          102           24.63264      14.47         3.926         0 \r\n 2021          103           22.88736      10.77        -1.106         0 \r\n 2021          104           20.10528      11.09        -1.588         0 \r\n 2021          105           12.0528       9.14          0.919         0 \r\n 2021          106           8.79552       11.9          4.459         0 \r\n 2021          107           19.19808      16.89         5.821         0 \r\n 2021          108           22.08384      17.99         6.567         0 \r\n 2021          109           13.3056       6.966        -1.115         0 \r\n 2021          110           15.8976       7.023        -2.649         0 \r\n 2021          111           23.25888      7.874        -3.708         0 \r\n 2021          112           25.21152      16.43        -3.71          0 \r\n 2021          113           8.93376       14.39         5.504         0 \r\n 2021          114           22.35168      14.78         3.138         0 \r\n 2021          115           17.90208      16.68         0.163         0.508 \r\n 2021          116           24.61536      31.1          9.64          0 \r\n 2021          117           19.36224      29.05         11.43         0 \r\n 2021          118           15.71616      22.09         8.93          0 \r\n 2021          119           23.87232      23.98         6.817         0 \r\n 2021          120           25.29792      24.32         6.652         0 \r\n 2021          121           26.36064      31.56         13.23         0 \r\n 2021          122           23.35392      28.8          15.32         0 \r\n 2021          123           13.40928      21.44         9.62          8.89 \r\n 2021          124           26.83584      16.67         4.906         0 \r\n 2021          125           21.0816       19.94         3.601         0 \r\n 2021          126           22.91328      17.87         6.148         0 \r\n 2021          127           28.31328      18.47         4.873         0 \r\n 2021          128           4.927392      11.2          4.186         16.256 \r\n 2021          129           22.64544      16.95         4.555         3.556 \r\n 2021          130           17.96256      17.13         4.475         0 \r\n 2021          131           28.06272      15.71         2.836         1.27 \r\n 2021          132           28.73664      18.66         5.156         0 \r\n 2021          133           28.6848       20.13         6.007         0 \r\n 2021          134           8.65728       17.27         8.57          2.54 \r\n 2021          135           22.896        24.21         10.08         3.556 \r\n 2021          136           6.5664        17.83         10.49         0.254 \r\n 2021          137           3.830976      17.53         13.34         3.048 \r\n 2021          138           4.46688       18.92         14.97         2.794 \r\n 2021          139           10.8          24.98         17.78         1.27 \r\n 2021          140           8.0352        22.98         17.98         19.812 \r\n 2021          141           13.45248      26.17         18.96         1.778 \r\n 2021          142           15.05088      26.31         17.44         0 \r\n 2021          143           18.74016      28.7          17.84         0 \r\n 2021          144           17.34048      28.17         19.6          0 \r\n 2021          145           15.79392      28.73         19.78         0 \r\n 2021          146           26.93088      26.92         14.02         0 \r\n 2021          147           4.077216      18.35         6.143         11.938 \r\n 2021          148           7.344         9.75          5.176         0 \r\n 2021          149           27.42336      18.23         3.709         0 \r\n 2021          150           13.6944       19            9.23          0 \r\n 2021          151           25.4448       25.15         9.31          0 \r\n 2021          152           22.75776      25.8          11.98         0 \r\n 2021          153           23.82912      28.33         12.45         0 \r\n 2021          154           26.85312      31.14         14.43         0 \r\n 2021          155           28.17504      33.25         17.52         0 \r\n 2021          156           27.97632      34.61         18.89         0 \r\n 2021          157           21.83328      29.31         17.57         0 \r\n 2021          158           23.98464      31.88         18.81         0 \r\n 2021          159           26.784        32.47         18.56         0 \r\n 2021          160           26.44704      33.77         19.88         2.032 \r\n 2021          161           26.07552      35.04         21.08         0 \r\n 2021          162           17.16768      31.78         20.86         4.318 \r\n 2021          163           29.40192      31.04         19.35         0 \r\n 2021          164           28.95264      34.18         18.55         0 \r\n 2021          165           24.25248      31.51         19.64         0 \r\n 2021          166           29.06496      32.57         17.21         0 \r\n 2021          167           27.39744      32.04         16.65         0 \r\n 2021          168           23.33664      38.57         20.11         1.524 \r\n 2021          169           18.47232      33.16         20.08         0 \r\n 2021          170           28.49472      31.83         18.3          0 \r\n 2021          171           19.30176      29.03         16.39         11.938 \r\n 2021          172           29.39328      21.85         11.19         0 \r\n 2021          173           19.29312      27.99         8.61          10.16 \r\n 2021          174           27.88128      30.14         15.91         1.27 \r\n 2021          175           19.29312      29.38         20.23         4.572 \r\n 2021          176           16.12224      30.62         20.14         0.762 \r\n 2021          177           11.4048       25.96         18.08         0.254 \r\n 2021          178           22.15296      29.42         16.66         0 \r\n 2021          179           19.66464      28.87         18.62         0 \r\n 2021          180           11.61216      28.99         20.06         0.762 \r\n 2021          181           23.12928      30.27         17.96         0 \r\n 2021          182           27.4752       30.49         18.1          0 \r\n 2021          183           25.42752      30.76         19.74         0 \r\n 2021          184           26.87904      31.19         15.74         0 \r\n 2021          185           26.75808      31.91         18.26         0 \r\n 2021          186           26.36064      33.1          19.46         0 \r\n 2021          187           26.63712      32.2          21.14         0 \r\n 2021          188           12.76992      23.95         14.69         1.524 \r\n 2021          189           17.18496      24.53         13.31         0 \r\n 2021          190           12.90816      25.65         17.65         23.114 \r\n 2021          191           11.25792      24.04         17.75         7.366 \r\n 2021          192           22.29984      25.84         15.31         0 \r\n 2021          193           22.43808      25.43         14.06         0 \r\n 2021          194           21.50496      28.09         16.3          0 \r\n 2021          195           12.8304       30.47         19.63         10.16 \r\n 2021          196           22.10112      26.45         16.39         0.254 \r\n 2021          197           21.34944      28.36         15.65         0 \r\n 2021          198           23.14656      27.42         16.55         0 \r\n 2021          199           22.55904      29.47         16.46         0 \r\n 2021          200           22.2912       30.36         16.18         0 \r\n 2021          201           21.84192      30.2          16.85         0 \r\n 2021          202           21.816        30.35         18.98         0 \r\n 2021          203           17.48736      30.36         18.37         0 \r\n 2021          204           22.032        33.08         18.86         0 \r\n 2021          205           18.61056      34.22         21.58         0 \r\n 2021          206           19.36224      32.15         19.01         0 \r\n 2021          207           22.7664       32.44         17.67         0 \r\n 2021          208           24.39936      33.47         17.18         0 \r\n 2021          209           21.87648      34.79         23.51         0 \r\n 2021          210           21.95424      32.63         19.72         0 \r\n 2021          211           13.2624       26.17         16.75         11.938 \r\n 2021          212           19.008        27.23         18.27         11.938 \r\n 2021          213           24.52896      26.82         15.99         0 \r\n 2021          214           20.74464      26.48         13.78         0 \r\n 2021          215           23.8896       27.92         13.91         0 \r\n 2021          216           23.9328       27.01         14.83         0 \r\n 2021          217           15.47424      26.8          17.94         2.032 \r\n 2021          218           21.98016      29.73         16.98         2.286 \r\n 2021          219           12.01824      28.69         22.44         4.318 \r\n 2021          220           16.39008      28.19         20.18         14.732 \r\n 2021          221           23.76         30.92         21.5          4.826 \r\n 2021          222           18.11808      31.39         23.16         0 \r\n 2021          223           22.66272      31.95         21.23         0 \r\n 2021          224           23.69952      31.54         16.82         0 \r\n 2021          225           25.16832      28.98         14.24         0 \r\n 2021          226           25.66944      27.83         12.36         0 \r\n 2021          227           25.66944      26.94         12.61         0 \r\n 2021          228           23.90688      27.97         14.77         0 \r\n 2021          229           21.74688      30.25         14.88         0 \r\n 2021          230           20.6928       30.56         18.51         0 \r\n 2021          231           22.06656      30.72         18.57         0 \r\n 2021          232           20.20896      31.95         19.25         8.636 \r\n 2021          233           24.57216      25.12         14.85         0 \r\n 2021          234           23.75136      26.51         12.7          0 \r\n 2021          235           21.44448      32.61         19.66         0 \r\n 2021          236           18.03168      34.84         22.17         2.54 \r\n 2021          237           20.088        31.81         22.08         0.762 \r\n 2021          238           10.66176      29.42         19.64         12.446 \r\n 2021          239           20.5632       33.44         21.41         0 \r\n 2021          240           19.60416      33.04         23.32         4.572 \r\n 2021          241           17.8848       27.9          17.3          0 \r\n 2021          242           20.6064       29.87         15.35         17.526 \r\n 2021          243           11.6208       25.07         15.38         2.286 \r\n 2021          244           22.1616       25.89         13.98         0 \r\n 2021          245           9.99648       23.08         14.12         0.508 \r\n 2021          246           7.75872       24.83         16.87         9.144 \r\n 2021          247           11.7504       24.97         15.63         0 \r\n 2021          248           21.80736      28.34         13.89         0 \r\n 2021          249           21.17664      30.47         15.4          0 \r\n 2021          250           20.41632      27.85         14.71         0 \r\n 2021          251           21.17664      26.13         12.32         0 \r\n 2021          252           20.52         26.73         10.08         0 \r\n 2021          253           19.06848      29.23         12.69         0 \r\n 2021          254           17.85024      33.88         15.3          0 \r\n 2021          255           10.73088      25.16         17.95         0 \r\n 2021          256           15.21504      30.6          16.95         0 \r\n 2021          257           11.54304      24.71         13.69         0 \r\n 2021          258           19.53504      27.55         12.34         0 \r\n 2021          259           19.47456      31.6          13.84         0 \r\n 2021          260           14.48064      23.96         13.27         0 \r\n 2021          261           18.75744      30.49         11.45         0 \r\n 2021          262           18.8784       32.31         16.89         0 \r\n 2021          263           9.83232       29.05         13.45         6.35 \r\n 2021          264           17.3664       22.78         10.04         0 \r\n 2021          265           19.4832       22.07         6.979         0 \r\n 2021          266           19.01664      25.28         7.49          0 \r\n 2021          267           10.83456      22.86         8.52          0 \r\n 2021          268           18.80928      25.59         3.229         0 \r\n 2021          269           18.28224      30.93         11.78         0 \r\n 2021          270           17.59968      33.4          13.87         0 \r\n 2021          271           17.59104      31.16         13.49         0 \r\n 2021          272           14.40288      30.73         15.37         0 \r\n 2021          273           13.53888      29.3          17.81         44.45 \r\n 2021          274           10.79136      25.93         16.76         0.254 \r\n 2021          275           7.83648       21.82         14.38         0.254 \r\n 2021          276           16.33824      24.73         13.13         0 \r\n 2021          277           16.8048       25.16         9.49          0 \r\n 2021          278           9.31392       22.09         11.75         0 \r\n 2021          279           10.22112      23.65         15.86         0 \r\n 2021          280           11.20608      26.32         16.2          0.254 \r\n 2021          281           14.67072      28.43         13.57         0 \r\n 2021          282           7.70688       25.82         15.18         0 \r\n 2021          283           8.80416       22.6          14.11         0 \r\n 2021          284           4.792608      18.72         11.04         0 \r\n 2021          285           15.31008      24.19         8.28          0 \r\n 2021          286           9.84096       24.12         11.89         16.764 \r\n 2021          287           15.11136      18.23         4.651         0 \r\n 2021          288           13.4784       15.84         4.734         0 \r\n 2021          289           15.1632       17.98         3.159         0 \r\n 2021          290           14.70528      23.43         3.286         0 \r\n 2021          291           14.52384      25.1          5.098         0 \r\n 2021          292           13.392        23.9          8.94          0 \r\n 2021          293           3.55536       20.25         4.798         2.286 \r\n 2021          294           3.09744       8.27          0.279         0.254 \r\n 2021          295           5.92272       9.37          1.059         2.032 \r\n 2021          296           13.66848      12.67        -0.283         0 \r\n 2021          297           0.825984      8.54          5.27          67.056 \r\n 2021          298           13.37472      12.38         2.61          0 \r\n 2021          299           11.72448      13.85         2.495         0 \r\n 2021          300           2.153952      11.61         7.793         16.256 \r\n 2021          301           2.038176      9.03          7.033         25.146 \r\n 2021          302           4.82976       11.23         4.404         0 \r\n 2021          303           12.81312      16.84         1.854         0 \r\n 2021          304           12.75264      10.87        -1.245         0 \r\n 2021          305           7.5168        7.456        -2.09          0 \r\n 2021          306           11.46528      8.91         -4.633         0 \r\n 2021          307           6.601824      9.22         -0.983         0 \r\n 2021          308           9.4176        13.05         1.993         0 \r\n 2021          309           10.14336      15.69         1.053         0 \r\n 2021          310           11.12832      19.42         2.939         0 \r\n 2021          311           9.12384       19.58         6.393         0 \r\n 2021          312           10.38528      17.55         3.219         0 \r\n 2021          313           8.17344       15.66         4.118         0 \r\n 2021          314           1.159488      11.75         1.781         23.876 \r\n 2021          315           9.8496        9.49          1.331         3.81 \r\n 2021          316           3.684096      1.5          -0.809         0 \r\n 2021          317           5.687712      6.421        -2.048         0.508 \r\n 2021          318           4.861728      6.093        -1.662         0 \r\n 2021          319           8.35488       7.283        -1.252         0 \r\n 2021          320           6.97248       15.11        -1.398         0 \r\n 2021          321           4.896288      8.14         -2.718         0 \r\n 2021          322           10.0656       1.993        -6.938         0 \r\n 2021          323           4.962816      7.079        -7.783         0 \r\n 2021          324           9.10656       13.53         0.722         0 \r\n 2021          325           9.66816       9.16         -6.653         0 \r\n 2021          326           6.826464      4.308        -7.461         0 \r\n 2021          327           9.06336       15.35        -4.422         0 \r\n 2021          328           4.394304      13.98        -3.754         0 \r\n 2021          329           9.31392      -1.721        -10.36         0 \r\n 2021          330           7.07616       6.408        -10.44         0 \r\n 2021          331           8.93376       14.74        -2.406         0.254 \r\n 2021          332           7.91424       6.824        -4.853         0 \r\n 2021          333           8.0784        18.33        -0.307         0 \r\n 2021          334           8.87328       14.38         1.423         0 \r\n 2021          335           7.3008        15.52         2.325         1.27 \r\n 2021          336           8.30304       14.37         1.395         0 \r\n 2021          337           8.5968        13.44        -0.24          0 \r\n 2021          338           3.008448      3.179        -3.206         0 \r\n 2021          339           3.57264       10.05        -1.596         0 \r\n 2021          340           8.54496      -1.586        -13.33         0 \r\n 2021          341           6.859296      3.401        -12.13         0 \r\n 2021          342           8.3808        0.58         -11.17         0 \r\n 2021          343           7.7328        11.45        -1.064         0.254 \r\n 2021          344           2.0088        2.747        -1.515         0.254 \r\n 2021          345           8.88192       3.275        -2.689         3.81 \r\n 2021          346           8.208         11.11        -3.37          0 \r\n 2021          347           7.30944       10.35        -3.277         0 \r\n 2021          348           5.531328      13.33        -1.766         0 \r\n 2021          349           5.567616      22.94         0.999         10.668 \r\n 2021          350           8.2944        3.009        -4.168         0 \r\n 2021          351           5.280768      2.434        -6.709         0 \r\n 2021          352           7.35264      -1.649        -7.135         0 \r\n 2021          353           6.410016      1.197        -7.508         0 \r\n 2021          354           7.40448       0.968        -10.41         0 \r\n 2021          355           6.863616      3.003        -11.66         0 \r\n 2021          356           7.75008       5.812        -10.55         0 \r\n 2021          357           4.524768      8.04         -3.596         0 \r\n 2021          358           4.042656      11.66         0.648         0 \r\n 2021          359           8.21664       9.2          -3.439         0 \r\n 2021          360           2.606688      4.863        -6.92          0 \r\n 2021          361           6.310656      4.827        -4.953         0 \r\n 2021          362           1.505088      0.859        -10.32         1.27 \r\n 2021          363           2.778624     -8.21         -14.37         0 \r\n 2021          364           1.878336     -2.048        -9.58          0 \r\n 2021          365           0.870912     -2.32         -13.7          0 \r\n 2022          1             1.518048     -13.71        -20.34         0 \r\n 2022          2             8.91648      -11.21        -21.98         0 \r\n 2022          3             8.71776       1.343        -16.95         0.254 \r\n 2022          4             5.28336       2.59         -9.73          0 \r\n 2022          5             7.87968      -9.46         -16.83         0 \r\n 2022          6             8.87328      -14.82        -20.61         0 \r\n 2022          7             4.860864     -11.48        -21.23         0 \r\n 2022          8             2.03904      -1.2          -12.98         0 \r\n 2022          9             9.25344      -4.736        -15.32         0 \r\n 2022          10            8.82144      -5.865        -13.65         0 \r\n 2022          11            8.32896       10.2         -12.52         0 \r\n 2022          12            8.00064       11.8         -1.94          0 \r\n 2022          13            8.84736       10.4         -2.345         0 \r\n 2022          14            2.478816      0.067        -8.06          21.082 \r\n 2022          15            9.77184      -8.05         -20.07         3.556 \r\n 2022          16            7.31808       1.39         -18.15         0 \r\n 2022          17            8.5968        0.423        -8.36          1.016 \r\n 2022          18            9.40032       5.782        -9.42          2.286 \r\n 2022          19            9.95328      -6.105        -19.03         0 \r\n 2022          20            10.68768     -15.29        -24.19         0 \r\n 2022          21            9.96192      -5.906        -26.34         0 \r\n 2022          22            9.70272       4.424        -7.306         0 \r\n 2022          23            8.3808        4.373        -16.41         0 \r\n 2022          24            9.17568      -0.938        -18.64         0 \r\n 2022          25            11.19744     -13.56        -23.24         0 \r\n 2022          26            11.22336     -3.186        -25.29         0 \r\n 2022          27            5.656608      1.465        -16.12         0 \r\n 2022          28            11.59488     -9.16         -21.78         0 \r\n 2022          29            11.11968      1.139        -14.3          0 \r\n 2022          30            8.79552      -5.347        -12.01         0 \r\n 2022          31            10.152        2.18         -10.07         0 \r\n 2022          32            9.14112       4.073        -12.49         0 \r\n 2022          33            9.62496      -12.5         -18.88         0 \r\n 2022          34            12.2256      -13.5         -22.63         0 \r\n 2022          35            11.1456      -6.909        -22.72         0 \r\n 2022          36            11.56896      4.439        -21.03         0 \r\n 2022          37            9.26208       2.173        -14.28         0 \r\n 2022          38            10.37664     -2.778        -15.51         0 \r\n 2022          39            10.5408       6.852        -9.35          0 \r\n 2022          40            9.65088       4.994        -3.303         0 \r\n 2022          41            8.93376       3.989        -5.707         2.54 \r\n 2022          42            5.036256      5.667        -15.08         0 \r\n 2022          43            11.54304     -8.43         -18.33         0 \r\n 2022          44            13.392       -9.69         -15.74         0 \r\n 2022          45            10.54944     -2.77         -12.98         0 \r\n 2022          46            11.63808      8.55         -10.05         0 \r\n 2022          47            7.88832       6.355        -6.275         0 \r\n 2022          48            7.71552      -6.238        -14            0 \r\n 2022          49            12.94272      10.88        -13.87         0 \r\n 2022          50            14.54976     -0.873        -14.37         0 \r\n 2022          51            14.6016       16.23        -3.265         0 \r\n 2022          52            10.33344      10.1         -2.479         0 \r\n 2022          53            8.56224      -2.471        -17.33         0 \r\n 2022          54            13.58208     -11.28        -18.95         0 \r\n 2022          55            6.023808     -7.818        -16.29         0 \r\n 2022          56            16.26912     -7.454        -17.58         0 \r\n 2022          57            16.33824      3.58         -15.44         0 \r\n 2022          58            16.13088      9.7          -8.97          0 \r\n 2022          59            15.21504      17.2         -2.41          0 \r\n 2022          60            14.256        15.92         0.064         0 \r\n 2022          61            14.61888      18.66        -0.866         0 \r\n 2022          62            13.33152      2.992        -3.014         0 \r\n 2022          63            13.9968       9.32         -3.682         6.096 \r\n 2022          64            3.249504      14.19        -0.796         16.764 \r\n 2022          65            11.32704      0.837        -4.181         0 \r\n 2022          66            17.95392      1.336        -5.595         3.302 \r\n 2022          67            18.25632      4.832        -8.29          0 \r\n 2022          68            12.6144      -0.495        -7.597         0 \r\n 2022          69            10.52352     -3.738        -8.74          0 \r\n 2022          70            18.91296     -4.969        -12.77         0 \r\n 2022          71            17.95392     -1.705        -15            0 \r\n 2022          72            18.792        14.07        -3.368         0 \r\n 2022          73            17.04672      16.29         0.716         0 \r\n 2022          74            16.73568      13.34        -2.279         0 \r\n 2022          75            18.7056       21.18         1.362         0 \r\n 2022          76            3.328128      8.82          3.626         9.144 \r\n 2022          77            3.942432      4.986         0.522         20.574 \r\n 2022          78            19.94976      13.52        -1.239         0 \r\n 2022          79            18.30816      21.5          0.119         0 \r\n 2022          80            6.52752       23.1          7.463         0 \r\n 2022          81            2.353536      9.76          2.097         20.066 \r\n 2022          82            4.344192      2.824         0.368         0.508 \r\n 2022          83            5.54256       4.401         0.024         0 \r\n 2022          84            18.28224      8.85          0.532         0 \r\n 2022          85            21.28896      3.559        -4.399         0 \r\n 2022          86            21.09024      3.477        -7.113         0 \r\n 2022          87            16.3728       6.592        -6.311         0 \r\n 2022          88            8.44992       8.74          0.527         5.08 \r\n 2022          89            4.598208      6.219         0.087         0 \r\n 2022          90            7.78464       1.106        -4.058         1.27 \r\n 2022          91            20.90016      9.27         -5.922         0 \r\n 2022          92            16.17408      13.42         0.809         15.24 \r\n 2022          93            5.914944      7.692        -0.975         0.254 \r\n 2022          94            21.34944      13.21         0.628         0 \r\n 2022          95            6.446304      13.86         0.978         0.254 \r\n 2022          96            7.664112      9.2215        0.2665        1.524 \r\n 2022          97            8.88192       4.583        -0.445         2.794 \r\n 2022          98            12.33792      8.81         -0.622         0 \r\n 2022          99            23.4144       13.7         -3.358         0 \r\n 2022          100           18.59328      23.44         3.31          0 \r\n 2022          101           23.09472      18.19         1.154         0 \r\n 2022          102           8.66592       25.24         5.287         8.382 \r\n 2022          103           8.82144       14.16        -0.921         7.62 \r\n 2022          104           22.74912      9            -2.912         0 \r\n 2022          105           16.36416      8.27         -2.342         0 \r\n 2022          106           24.8832       8.18         -3.895         0 \r\n 2022          107           5.249664      3.165        -1.96          4.318 \r\n 2022          108           22.17024      6.589        -3.583         0.254 \r\n 2022          109           12.26016      6.605        -5.192         0 \r\n 2022          110           2.179008      8.62          6.063         12.192 \r\n 2022          111           23.96736      18.65         0.79          1.016 \r\n 2022          112           6.409152      23.5          10.48         35.052 \r\n 2022          113           10.86912      22.71         13.06         10.414 \r\n 2022          114           21.52224      12.93         6.115         0 \r\n 2022          115           9.78048       6.963        -0.472         0 \r\n 2022          116           25.65216      14.34        -2.767         0 \r\n 2022          117           19.90656      18.01         2.117         0 \r\n 2022          118           17.22816      19.42         4.853         0 \r\n 2022          119           6.044544      16.47         10.86         7.112 \r\n 2022          120           5.762016      19.47         6.956         6.096 \r\n 2022          121           7.96608       9.93          4.821         0 \r\n 2022          122           7.03296       7.612         4.871         7.62 \r\n 2022          123           8.43264       10.64         4.884         13.462 \r\n 2022          124           17.34048      15.22         4.185         0 \r\n 2022          125           9.5472        15.17         9.43          0 \r\n 2022          126           17.6688       19.67         8.92          0 \r\n 2022          127           27.09504      22.35         7.662         0 \r\n 2022          128           2.467584      15.87         11.65         15.494 \r\n 2022          129           21.74688      33.4          15.1          2.032 \r\n 2022          130           18.25632      29.93         16.2          0 \r\n 2022          131           21.816        32.05         20.04         0 \r\n 2022          132           25.82496      33.49         19.85         0 \r\n 2022          133           20.9088       28            16.35         0 \r\n 2022          134           23.6736       31.35         12.03         0.508 \r\n 2022          135           15.0768       24.43         12.78         0 \r\n 2022          136           27.79488      27.85         11.6          0 \r\n 2022          137           26.21376      27.935        11.99         6.477 \r\n 2022          138           24.63264      28.02         12.38         12.954 \r\n 2022          139           24.02784      32.31         15.75         0 \r\n 2022          140           19.11168      22.72         12.16         0 \r\n 2022          141           11.1888       14.5          6.491         0 \r\n 2022          142           27.3888       17.71         2.777         0 \r\n 2022          143           19.16352      18.5          5.482         0 \r\n 2022          144           6.569856      14.35         8.65          17.78 \r\n 2022          145           5.12784       13.52         9.37          13.208 \r\n 2022          146           7.72416       12.85         10.24         0.508 \r\n 2022          147           28.61568      25.61         7.877         0 \r\n 2022          148           24.93504      29.53         13.12         1.016 \r\n 2022          149           16.90848      29.56         18.94         0.508 \r\n 2022          150           24.46848      32.74         17.47         1.524 \r\n 2022          151           22.41216      26.65         16.32         0.254 \r\n 2022          152           23.64768      23.2          11.46         0 \r\n 2022          153           28.9872       26.45         9.51          0 \r\n 2022          154           29.44512      27.53         13.06         0 \r\n 2022          155           11.12832      24.84         15.7          0.254 \r\n 2022          156           17.94528      27.78         13.11         56.388 \r\n 2022          157           10.42848      22.39         16.96         29.464 \r\n 2022          158           27.72576      25.98         14.39         0 \r\n 2022          159           23.8464       25.02         16.16         0 \r\n 2022          160           22.17888      26.46         14.75         0.762 \r\n 2022          161           16.59744      24.78         16.05         4.572 \r\n 2022          162           12.3984       27.43         16.41         8.89 \r\n 2022          163           23.6736       30.39         19.06         0.254 \r\n 2022          164           23.14656      35.74         23.62         0 \r\n 2022          165           27.22464      35.99         19.96         5.08 \r\n 2022          166           14.89536      25.72         18.28         7.366 \r\n 2022          167           29.18592      30.93         17.45         1.27 \r\n 2022          168           29.26368      31.5          18.83         0.762 \r\n 2022          169           27.9936       29.57         17.5          0.508 \r\n 2022          170           27.7776       33.04         18.85         0.254 \r\n 2022          171           27.94176      34.77         21.74         0.254 \r\n 2022          172           27.5184       33.72         22.07         0 \r\n 2022          173           27.32832      31.1          18.71         0 \r\n 2022          174           27.23328      32.71         18.6          0 \r\n 2022          175           21.54816      27.66         18.7          5.334 \r\n 2022          176           11.84544      29.82         19.22         0.254 \r\n 2022          177           27.09504      25.06         12.79         0 \r\n 2022          178           27.29376      28.63         12.22         0.254 \r\n 2022          179           27.3456       29.91         15.57         0 \r\n 2022          180           27.44064      33.7          18.09         0 \r\n 2022          181           21.36672      32.51         21.19         0 \r\n 2022          182           15.67296      28.12         18.18         0 \r\n 2022          183           26.71488      29.19         14.94         0 \r\n 2022          184           24.35616      29.95         16.86         0 \r\n 2022          185           17.39232      33.64         21.4          3.81 \r\n 2022          186           22.43808      34.48         20.87         7.874 \r\n 2022          187           8.93376       25.14         20.01         0 \r\n 2022          188           13.51296      28.23         19.96         1.524 \r\n 2022          189           14.89536      26.52         20.74         14.224 \r\n 2022          190           28.21824      28.99         18.51         0 \r\n 2022          191           25.55712      30.7          19.21         0.254 \r\n 2022          192           19.38816      27.64         19.17         2.794 \r\n"
  },
  {
    "path": "scripts/yieldfx/baseline/cobs.met",
    "content": "[weather.met.weather]\r\nlatitude = 42.03 (DECIMAL DEGREES)\r\ntav = 9.30778 (oC) ! annual average ambient temperature\r\namp = 29.69992 (oC) ! annual amplitude in mean monthly temperature\r\nyear          day           radn          maxt          mint          rain\r\n()            ()            (MJ/m^2)      (oC)          (oC)          (mm)\r\n 1980          1             2.703        -0.6          -3.9           0 \r\n 1980          2             2.495        -2.2          -5             0 \r\n 1980          3             3.534        -2.2          -7.2           0 \r\n 1980          4             3.534        -1.7          -5             0 \r\n 1980          5             3.223        -1.7          -5.6           1.3 \r\n 1980          6             5.568         0            -9.4           1.8 \r\n 1980          7             6.304        -8.3          -18.3          0 \r\n 1980          8             7.249        -10.6         -18.9          0 \r\n 1980          9             7.985        -13.3         -22.8          1.3 \r\n 1980          10            9.351         4.4          -16.1          0 \r\n 1980          11            9.449         9.4          -12.2          0 \r\n 1980          12            9.024        -1.1          -16.1          0 \r\n 1980          13            8.6           10.6         -1.1           0 \r\n 1980          14            9.024         5            -5.6           0 \r\n 1980          15            6.901         6.7           2.2           0 \r\n 1980          16            3.54          5.6           0             20.6 \r\n 1980          17            3.862         0.6          -5             1 \r\n 1980          18            4.505        -0.6          -5.6           0 \r\n 1980          19            5.961        -0.6          -6.7           1.8 \r\n 1980          20            8.779        -0.6          -10.6          0 \r\n 1980          21            8.129        -0.6          -9.4           0 \r\n 1980          22            6.569         0            -7.8           0 \r\n 1980          23            8.102        -6.1          -13.3          0 \r\n 1980          24            10.292        5            -9.4           0 \r\n 1980          25            9.069         3.9          -7.2           0 \r\n 1980          26            10.174       -6.1          -16.7          0 \r\n 1980          27            5.64         -11.7         -15.6          0 \r\n 1980          28            5.25         -10.6         -15            0 \r\n 1980          29            8.489        -11.1         -18.9          0 \r\n 1980          30            7.372        -11.7         -15            1.3 \r\n 1980          31            10.716       -12.8         -22.2          0 \r\n 1980          32            11.28        -8.9          -23.3          0 \r\n 1980          33            10.604       -5            -12.8          0 \r\n 1980          34            9.341        -5            -14.4          0 \r\n 1980          35            9.568        -5            -14.4          0 \r\n 1980          36            5.866        -3.3          -7.8           2.5 \r\n 1980          37            9.661        -5.6          -12.2          0 \r\n 1980          38            12.077       -5            -16.1          0 \r\n 1980          39            8.709        -5.6          -11.1          0 \r\n 1980          40            12.425       -6.7          -18.9          0 \r\n 1980          41            12.543       -2.8          -15            0 \r\n 1980          42            11.488       -2.8          -12.8          0 \r\n 1980          43            13.727       -3.3          -18.9          0 \r\n 1980          44            13.608        0            -15            0 \r\n 1980          45            11.005       -1.1          -10.6          0 \r\n 1980          46            10.391       -3.3          -9.4           0 \r\n 1980          47            12.541       -8.9          -17.8          0 \r\n 1980          48            14.345       -2.8          -18.3          0 \r\n 1980          49            13.38         1.1          -7.8           0 \r\n 1980          50            8.881         5            -1.1           0 \r\n 1980          51            5.839         2.8          -0.6           0 \r\n 1980          52            3.928         2.8           0.6           0.5 \r\n 1980          53            4.665         3.3           0             0 \r\n 1980          54            10.528        2.8          -3.9           0 \r\n 1980          55            8.051         0.6          -3.3           0 \r\n 1980          56            12.372        0            -15.6          4.3 \r\n 1980          57            16.996        3.3          -15            0 \r\n 1980          58            16.39         3.9          -7.8           0 \r\n 1980          59            9.582        -2.8          -6.7           0 \r\n 1980          60            12.156       -5.6          -16.1          0 \r\n 1980          61            12.54        -6.7          -17.8          0 \r\n 1980          62            12           -1.7          -16.1          0 \r\n 1980          63            14.27         6.7          -7.8           0 \r\n 1980          64            14.612        5.6          -6.1           3.8 \r\n 1980          65            14.176       -5.6          -16.7          0 \r\n 1980          66            10.888        0            -16.1          0 \r\n 1980          67            14.848        0            -8.3           0 \r\n 1980          68            12.978        2.8          -7.2           0 \r\n 1980          69            12.756        8.3          -2.2           0 \r\n 1980          70            14.43         7.8          -6.1           0 \r\n 1980          71            14.542       -0.6          -10.6          0 \r\n 1980          72            15.229       -0.6          -3.3           1 \r\n 1980          73            9.363        -1.7          -6.7           1 \r\n 1980          74            6.256         10.6         -8.9           0 \r\n 1980          75            17.744        15.6         -0.6           0 \r\n 1980          76            17.776        12.8          1.1           1 \r\n 1980          77            16.17         4.4          -4.4           0 \r\n 1980          78            15.841        14.4         -1.1           0 \r\n 1980          79            17.459        16.1          4.4           0 \r\n 1980          80            17.834        16.1          2.2           0 \r\n 1980          81            16.785        6.7          -2.8           0 \r\n 1980          82            15.628        8.9          -1.7           0 \r\n 1980          83            15.635        7.8          -1.1           0 \r\n 1980          84            13.503        2.2          -1.7           0 \r\n 1980          85            5.969         7.2          -3.9           0 \r\n 1980          86            12.893        6.7          -1.7           0 \r\n 1980          87            12.153        10            0.6           0 \r\n 1980          88            12.875        9.4           1.7           0 \r\n 1980          89            12.005        6.7           0.6           4.3 \r\n 1980          90            7.64          6.1           0             0 \r\n 1980          91            9.043         12.8         -0.6           0 \r\n 1980          92            14.547        12.8          1.7           3 \r\n 1980          93            17.381        8.3           0.6           8.9 \r\n 1980          94            9.431         7.8           1.7           12.2 \r\n 1980          95            8.553         11.7         -0.6           0 \r\n 1980          96            13.576        18.3         -1.1           0 \r\n 1980          97            21.476        20            9.4           0.5 \r\n 1980          98            19.424        19.4          6.7           0 \r\n 1980          99            20.259        17.2          3.3           1.8 \r\n 1980          100           19.019        4.4          -0.6           3.8 \r\n 1980          101           9.025         10.6         -1.1           0 \r\n 1980          102           18.467        9.4          -1.1           0 \r\n 1980          103           18.467        10.6         -1.7           0 \r\n 1980          104           19.863        10           -2.2           0 \r\n 1980          105           20.142        9.4          -2.2           0 \r\n 1980          106           17.895        15.6          1.1           0 \r\n 1980          107           21.981        19.4          1.7           0 \r\n 1980          108           23.845        19.4          7.2           0 \r\n 1980          109           21.29         21.7          3.3           0 \r\n 1980          110           24.16         27.2          6.7           0 \r\n 1980          111           24.017        30            10            0 \r\n 1980          112           24.91         33.3          10            0 \r\n 1980          113           24.766        36.1          13.3          0 \r\n 1980          114           24.363        33.3          8.3           0 \r\n 1980          115           25.089        18.3          1.7           0 \r\n 1980          116           23.222        16.1          0.6           0 \r\n 1980          117           22.929        17.8          1.7           0 \r\n 1980          118           21.767        21.1          5.6           0 \r\n 1980          119           21.62         21.1          1.7           0 \r\n 1980          120           24.268        21.1          4.4           0 \r\n 1980          121           23.993        21.7          8.3           0 \r\n 1980          122           19.968        23.9          5.6           0 \r\n 1980          123           24.732        27.2          9.4           0 \r\n 1980          124           24.732        26.7          11.1          0 \r\n 1980          125           25.216        30            10            0 \r\n 1980          126           26.156        30.6          16.7          0 \r\n 1980          127           23.18         26.7          6.1           0 \r\n 1980          128           26.65         19.4          1.7           0 \r\n 1980          129           26.335        14.4         -0.6           0 \r\n 1980          130           22.704        22.2          1.7           0 \r\n 1980          131           25.561        21.7          12.2          3.3 \r\n 1980          132           20.481        22.8          3.3           0 \r\n 1980          133           17.902        20.6          6.7           0 \r\n 1980          134           19.98         18.9          6.7           2.3 \r\n 1980          135           13.426        22.2          3.3           0.5 \r\n 1980          136           23.171        21.7          8.9           1.5 \r\n 1980          137           20.436        21.1          10.6          4.8 \r\n 1980          138           16.896        13.3          10            14.5 \r\n 1980          139           5.184         13.9          9.4           5.3 \r\n 1980          140           5.184         18.9          10            0.8 \r\n 1980          141           8.747         22.2          11.1          0.5 \r\n 1980          142           20.056        25.6          10            0 \r\n 1980          143           24.132        28.9          11.7          0 \r\n 1980          144           25.6          28.3          12.8          0 \r\n 1980          145           24.784        26.7          14.4          0 \r\n 1980          146           20.352        30            13.3          0 \r\n 1980          147           23.306        30            15.6          9.1 \r\n 1980          148           21.807        31.1          16.1          0 \r\n 1980          149           21.807        31.7          15.6          0.8 \r\n 1980          150           18.007        29.4          16.7          1.8 \r\n 1980          151           15.694        30            14.4          24.9 \r\n 1980          152           17.016        22.8          11.7          2.8 \r\n 1980          153           15.909        25            14.4          16.5 \r\n 1980          154           14.618        25            13.9          10.9 \r\n 1980          155           16.045        25            11.1          0 \r\n 1980          156           18.362        25.6          16.7          16.8 \r\n 1980          157           14.975        32.8          17.2          0 \r\n 1980          158           22.966        31.7          18.3          0.8 \r\n 1980          159           23.505        26.7          17.2          0 \r\n 1980          160           14.175        21.7          8.9           0 \r\n 1980          161           28.708        27.2          12.2          0 \r\n 1980          162           26.376        27.2          13.3          0 \r\n 1980          163           27.811        27.2          8.3           0 \r\n 1980          164           29.785        29.4          15            0 \r\n 1980          165           25.822        31.7          17.8          3.8 \r\n 1980          166           17.877        30.6          17.2          2.3 \r\n 1980          167           18.238        26.7          15            17 \r\n 1980          168           16.432        20.6          10            0 \r\n 1980          169           23.475        21.1          11.1          0 \r\n 1980          170           22.933        27.8          12.2          20.3 \r\n 1980          171           24.919        20.6          11.7          8.1 \r\n 1980          172           17.877        22.2          10            0 \r\n 1980          173           24.919        26.7          10.6          0 \r\n 1980          174           27.808        27.2          14.4          1.5 \r\n 1980          175           24.197        26.7          17.2          1.8 \r\n 1980          176           14.807        28.9          15.6          0 \r\n 1980          177           23.475        30.6          16.1          0 \r\n 1980          178           24.377        33.9          19.4          0 \r\n 1980          179           23.655        35            22.2          0 \r\n 1980          180           22.391        34.4          17.2          0 \r\n 1980          181           27.267        29.4          15            0 \r\n 1980          182           26.364        27.8          10            0 \r\n 1980          183           30.9          31.1          17.8          0 \r\n 1980          184           25.199        30            13.3          0 \r\n 1980          185           27.644        26.1          12.8          0 \r\n 1980          186           25.763        31.1          16.1          2 \r\n 1980          187           24.259        33.3          19.4          0.8 \r\n 1980          188           18.429        31.7          19.4          26.4 \r\n 1980          189           24.071        35.6          24.4          0 \r\n 1980          190           15.695        35            20.6          0 \r\n 1980          191           24.85         32.8          21.1          0 \r\n 1980          192           22.235        32.8          21.1          4.6 \r\n 1980          193           17.003        33.3          22.8          0 \r\n 1980          194           21.3          33.3          22.2          0 \r\n 1980          195           20.606        33.9          20            0 \r\n 1980          196           23.576        36.1          23.3          1.5 \r\n 1980          197           23.019        35.6          21.7          1.5 \r\n 1980          198           23.39         33.3          19.4          4.3 \r\n 1980          199           17.89         33.3          16.1          0 \r\n 1980          200           26.374        32.2          19.4          2.8 \r\n 1980          201           17.89         31.7          19.4          4.6 \r\n 1980          202           16.968        31.7          23.9          0 \r\n 1980          203           18.872        27.8          17.8          0 \r\n 1980          204           22.171        27.2          14.4          0 \r\n 1980          205           25.102        26.1          12.2          0 \r\n 1980          206           26.03         31.1          12.2          0 \r\n 1980          207           26.94         30.6          16.7          0 \r\n 1980          208           23.117        26.1          18.3          2.5 \r\n 1980          209           13.561        26.1          11.7          0 \r\n 1980          210           26.219        30.6          12.8          0 \r\n 1980          211           26.58         31.7          16.1          0 \r\n 1980          212           25.864        35            19.4          0 \r\n 1980          213           23.709        31.1          17.2          0 \r\n 1980          214           26.576        33.3          17.8          2.3 \r\n 1980          215           23.687        28.9          21.1          0 \r\n 1980          216           20.682        30            14.4          0 \r\n 1980          217           24.405        30            15.6          15.2 \r\n 1980          218           22.298        30            12.8          0 \r\n 1980          219           18.611        30.6          18.9          0 \r\n 1980          220           22.67         35            20            0 \r\n 1980          221           20.228        35            23.9          0 \r\n 1980          222           19.57         30.6          18.3          26.9 \r\n 1980          223           14.721        29.4          18.3          3.6 \r\n 1980          224           13.759        26.1          18.3          12.9 \r\n 1980          225           12.899        25.6          14.4          0 \r\n 1980          226           22.187        29.4          16.7          0 \r\n 1980          227           21.008        28.9          17.2          0 \r\n 1980          228           17.763        25.6          13.3          0 \r\n 1980          229           18.317        23.9          12.8          58.7 \r\n 1980          230           13.907        26.7          17.2          0.8 \r\n 1980          231           10.947        30            13.9          0 \r\n 1980          232           22.399        31.7          18.3          5.6 \r\n 1980          233           16.053        31.7          21.7          0 \r\n 1980          234           17.223        28.9          13.9          0 \r\n 1980          235           22.24         27.8          14.4          0 \r\n 1980          236           21.749        27.8          13.9          0 \r\n 1980          237           20.752        29.4          15            0 \r\n 1980          238           19.779        31.7          16.7          0 \r\n 1980          239           20.109        31.7          18.9          0 \r\n 1980          240           19.799        31.1          15.6          0 \r\n 1980          241           18.981        27.2          16.7          0 \r\n 1980          242           13.645        31.1          17.8          0 \r\n 1980          243           18.193        30.6          18.3          1.5 \r\n 1980          244           12.738        25            16.7          9.7 \r\n 1980          245           11.771        27.2          17.2          0 \r\n 1980          246           11.263        25.6          11.7          0 \r\n 1980          247           20.451        30.6          16.1          0 \r\n 1980          248           19.121        30            15            20.8 \r\n 1980          249           13.385        28.9          13.3          0 \r\n 1980          250           18.686        29.4          15.6          0 \r\n 1980          251           17.956        33.3          18.9          0 \r\n 1980          252           16.806        33.9          18.3          0 \r\n 1980          253           17.095        32.2          13.3          3.8 \r\n 1980          254           14.089        23.9          7.8           0 \r\n 1980          255           19.553        25.6          12.8          0 \r\n 1980          256           18.261        30.6          16.1          2.5 \r\n 1980          257           12.126        27.2          15.6          7.9 \r\n 1980          258           11.608        21.7          13.9          0 \r\n 1980          259           11.042        23.3          12.8          0 \r\n 1980          260           11.657        22.8          10            0 \r\n 1980          261           14.186        18.3          3.3           0 \r\n 1980          262           18.254        23.9          7.8           0 \r\n 1980          263           17.697        30            10.6          0 \r\n 1980          264           17.28         30.6          16.7          1 \r\n 1980          265           11.889        29.4          10.6          0 \r\n 1980          266           17.004        27.2          11.7          0.5 \r\n 1980          267           15.633        20            3.3           0 \r\n 1980          268           17.14         21.1          5.6           0 \r\n 1980          269           16.323        20            8.3           1 \r\n 1980          270           13.087        20            0             0 \r\n 1980          271           17.27         25.6          10            0 \r\n 1980          272           16.058        25            10            0 \r\n 1980          273           14.586        23.3          7.2           0 \r\n 1980          274           14.2          28.3          10            0 \r\n 1980          275           13.802        27.8          9.4           0 \r\n 1980          276           13.687        20.6          6.1           0 \r\n 1980          277           12.897        10.6          1.7           0 \r\n 1980          278           11.353        13.3          0             0 \r\n 1980          279           11.745        18.3         -1.1           0 \r\n 1980          280           14.751        23.9          3.9           0 \r\n 1980          281           15.009        27.8          7.2           0 \r\n 1980          282           14.881        26.7          11.1          0 \r\n 1980          283           14.24         26.7          8.3           0 \r\n 1980          284           14.371        26.1          9.4           0 \r\n 1980          285           12.845        18.9          6.7           0 \r\n 1980          286           10.59         13.9         -3.3           0 \r\n 1980          287           13.49         18.9          1.7           0 \r\n 1980          288           12.622        18.3          8.3           0 \r\n 1980          289           10.622        17.2          3.3           0 \r\n 1980          290           9.537         21.1          8.9           13.5 \r\n 1980          291           5.822         20.6          5             3.3 \r\n 1980          292           7.979         9.4           0             0 \r\n 1980          293           7.12          15.6         -2.2           0 \r\n 1980          294           10.949        19.4          5             0 \r\n 1980          295           10.827        18.3          2.8           0 \r\n 1980          296           10.584        18.9          2.2           0 \r\n 1980          297           10.246        18.3          6.1           8.9 \r\n 1980          298           9.402         6.7           0.6           7.1 \r\n 1980          299           5.375         5            -1.1           0 \r\n 1980          300           5.016         4.4          -2.2           0 \r\n 1980          301           6.153         2.2          -1.1           2.8 \r\n 1980          302           3.195         4.4          -5             0 \r\n 1980          303           4.924         6.1          -5.6           0 \r\n 1980          304           9.027         13.9         -3.3           0 \r\n 1980          305           10.199        17.2          0             0 \r\n 1980          306           10.683        13.9         -1.7           0 \r\n 1980          307           10.219        16.7         -2.2           0 \r\n 1980          308           9.891         15            7.2           1.8 \r\n 1980          309           7.476         12.2          1.7           0 \r\n 1980          310           8.202         13.9          0             0 \r\n 1980          311           9.455         23.9          2.8           0 \r\n 1980          312           10.024        20            6.7           0 \r\n 1980          313           9.25          21.7          3.3           0 \r\n 1980          314           9.475         19.4          5             0 \r\n 1980          315           8.936         15.6         -3.3           0 \r\n 1980          316           9.159         6.7           1.7           0 \r\n 1980          317           4.915         15.6          2.8           0 \r\n 1980          318           6.746         14.4          1.7           7.4 \r\n 1980          319           7.078         2.8          -1.7           1.3 \r\n 1980          320           2.765         1.7          -2.2           0 \r\n 1980          321           3.285         6.7          -6.1           0 \r\n 1980          322           7.664         4.4          -5             0 \r\n 1980          323           6.46          4.4          -9.4           0 \r\n 1980          324           7.803         10           -6.7           0 \r\n 1980          325           8.345         7.8          -3.3           0 \r\n 1980          326           7.37          10.6         -6.7           0 \r\n 1980          327           8.26          12.8          0.6           0 \r\n 1980          328           7.402         8.3           1.1           0 \r\n 1980          329           5.686         3.3          -7.8           0 \r\n 1980          330           7.08          5            -12.2          0 \r\n 1980          331           7.963         6.1          -9.4           0 \r\n 1980          332           7.326         2.8          -5.6           0 \r\n 1980          333           5.627         5.6          -9.4           0 \r\n 1980          334           7.22          8.3          -1.1           0 \r\n 1980          335           6.199         15.6         -2.8           0 \r\n 1980          336           6.934         11.7         -4.4           0 \r\n 1980          337           7.039        -3.9          -16.7          1 \r\n 1980          338           5.673        -1.1          -18.3          0 \r\n 1980          339           7.249         1.7          -7.2           0 \r\n 1980          340           5.821         12.8         -0.6           0 \r\n 1980          341           6.445         10.6          0.6           0 \r\n 1980          342           4.262         1.7          -1.7           3 \r\n 1980          343           2.703        -1.1          -8.3           0 \r\n 1980          344           3.223         0.6          -8.9           0 \r\n 1980          345           5.198        -0.6          -12.2          0 \r\n 1980          346           6.861        -3.3          -10.6          0 \r\n 1980          347           4.937         9.4          -5.6           0 \r\n 1980          348           7.302         5.6          -12.2          0 \r\n 1980          349           8.022         3.3          -6.7           0 \r\n 1980          350           6.274         1.1          -7.8           0 \r\n 1980          351           5.863         1.7          -5.6           0 \r\n 1980          352           4.937         11.7         -1.1           0 \r\n 1980          353           5.965         10           -3.9           0 \r\n 1980          354           6.994        -2.2          -17.8          0 \r\n 1980          355           7.302        -11.1         -20.6          0 \r\n 1980          356           5.554        -5.6          -12.8          0 \r\n 1980          357           5.863         0            -9.4           0 \r\n 1980          358           5.348         0            -7.8           0 \r\n 1980          359           5.143        -3.9          -18.9          1 \r\n 1980          360           7.611        -9.4          -23.3          0 \r\n 1980          361           7.2          -4.4          -11.7          0 \r\n 1980          362           6.068        -0.6          -8.3           0 \r\n 1980          363           4.525         3.9          -6.1           0 \r\n 1980          364           5.863         7.8          -4.4           0 \r\n 1980          365           6.965         8.3          -3.9           0 \r\n 1980          366           7.485         4.4          -2.2           0 \r\n 1981          1             3.223         1.7          -2.2           0 \r\n 1981          2             7.277         1.7          -12.2          0 \r\n 1981          3             7.693         1.7          -16.1          0 \r\n 1981          4             3.95         -10           -16.7          0 \r\n 1981          5             7.069         1.1          -15.6          0 \r\n 1981          6             6.199         0.6          -5.6           0 \r\n 1981          7             7.564        -3.3          -17.8          0 \r\n 1981          8             5.148        -4.4          -15            0 \r\n 1981          9             5.463        -6.7          -13.9          0 \r\n 1981          10            7.039        -8.9          -21.1          0 \r\n 1981          11            7.326        -7.2          -21.1          0 \r\n 1981          12            9.131         8.3          -16.1          0 \r\n 1981          13            7.538         6.1          -7.2           0 \r\n 1981          14            6.37          1.7          -8.3           0 \r\n 1981          15            6.476         0            -12.2          0 \r\n 1981          16            6.651        -6.7          -17.8          0 \r\n 1981          17            9.118         6.1          -17.2          0 \r\n 1981          18            9.44          10           -8.3           0 \r\n 1981          19            8.454         9.4          -5.6           0 \r\n 1981          20            8.67          7.8          -7.2           0 \r\n 1981          21            9.212         6.7          -10            0 \r\n 1981          22            9.525         10           -6.7           0 \r\n 1981          23            9.854         12.8         -5             0 \r\n 1981          24            10.182        15.6         -3.9           0 \r\n 1981          25            9.511         15           -1.1           0 \r\n 1981          26            6.967         11.7          0             0 \r\n 1981          27            5.087         2.2          -5.6           0 \r\n 1981          28            8.377        -1.7          -14.4          0 \r\n 1981          29            8.489        -3.9          -17.8          0 \r\n 1981          30            8.936         0            -15.6          0 \r\n 1981          31            7.558        -0.6          -10            0 \r\n 1981          32            5.753        -3.3          -12.2          2 \r\n 1981          33            8.573        -11.1         -21.1          0 \r\n 1981          34            9.227        -8.9          -22.2          0 \r\n 1981          35            9.113        -8.9          -19.4          0 \r\n 1981          36            10.006       -1.1          -17.2          0 \r\n 1981          37            9.546         1.1          -11.1          0 \r\n 1981          38            8.741         0            -7.8           0 \r\n 1981          39            11.264       -6.7          -19.4          0 \r\n 1981          40            8.361        -8.3          -16.7          0 \r\n 1981          41            6.448        -8.9          -17.2          6.3 \r\n 1981          42            8.323        -16.1         -28.9          0 \r\n 1981          43            13.608       -1.1          -23.3          0 \r\n 1981          44            12.662        6.1          -11.1          0 \r\n 1981          45            12.07         10.6         -7.8           0 \r\n 1981          46            10.511        12.8          2.8           0 \r\n 1981          47            12.541        17.8          1.1           0 \r\n 1981          48            13.26         19.4          3.3           0 \r\n 1981          49            12.416        18.9          5.6           0 \r\n 1981          50            12.043        16.1          0             0 \r\n 1981          51            13.138        16.7         -2.8           0 \r\n 1981          52            12.03         15.6          2.8           0 \r\n 1981          53            4.788         6.7           1.7           4.8 \r\n 1981          54            9.661         10           -2.2           0 \r\n 1981          55            13.501        16.7         -3.9           0 \r\n 1981          56            13.247        16.1          0             0 \r\n 1981          57            8.248         6.7          -0.6           0 \r\n 1981          58            8.321         16.7          1.7           3.8 \r\n 1981          59            11.094        8.3          -0.6           0 \r\n 1981          60            9.729         11.7         -2.2           0 \r\n 1981          61            12.756        9.4          -8.9           0 \r\n 1981          62            10.81         5            -8.9           0 \r\n 1981          63            5.125         4.4          -0.6           5.1 \r\n 1981          64            10.904        6.7          -6.7           0 \r\n 1981          65            11.328        5.6          -7.2           0 \r\n 1981          66            12.538        3.3          -11.1          0 \r\n 1981          67            13.422        8.3          -7.2           0 \r\n 1981          68            12.091        7.2          -5             1.5 \r\n 1981          69            13.759        11.7         -6.7           0 \r\n 1981          70            14.318        11.1         -6.1           0 \r\n 1981          71            14.1          16.1         -2.8           0 \r\n 1981          72            14.552        13.9         -3.9           0 \r\n 1981          73            15.697        15.6         -7.2           0 \r\n 1981          74            14.104        16.1          5             0 \r\n 1981          75            15.712        13.3         -6.1           0 \r\n 1981          76            14.106        12.8         -3.3           0 \r\n 1981          77            13.875        6.1          -7.2           0 \r\n 1981          78            13.528        7.8          -5.6           0 \r\n 1981          79            15.386        9.4          -8.3           0 \r\n 1981          80            11.656        8.9           1.7           0 \r\n 1981          81            14.688        18.9         -3.9           0 \r\n 1981          82            16.819        16.1         -1.1           0 \r\n 1981          83            16.701        18.3         -0.6           0 \r\n 1981          84            15.759        20            3.3           0 \r\n 1981          85            15.878        17.8          1.7           0 \r\n 1981          86            16.244        19.4          2.2           0 \r\n 1981          87            14.559        24.4          14.4          0 \r\n 1981          88            9.822         21.7          7.8           7.1 \r\n 1981          89            7.882         13.3          6.7           0.5 \r\n 1981          90            9.776         18.9          10            0 \r\n 1981          91            13.184        18.3          6.7           0 \r\n 1981          92            19.806        28.9          2.8           0 \r\n 1981          93            16.842        27.8          15            19.1 \r\n 1981          94            13.848        18.9          2.2           8.9 \r\n 1981          95            12.219        9.4          -1.1           0 \r\n 1981          96            18.604        17.8         -2.2           0 \r\n 1981          97            18.467        20.6          5             0 \r\n 1981          98            11.439        20            7.8           3 \r\n 1981          99            18.606        20            1.7           0 \r\n 1981          100           18.606        25.6          7.2           0 \r\n 1981          101           15.134        23.9          11.7          0 \r\n 1981          102           15.134        18.9          7.2           0 \r\n 1981          103           14.407        19.4          12.2          0 \r\n 1981          104           14.547        13.3          0             2.3 \r\n 1981          105           20.854        16.7         -1.7           0 \r\n 1981          106           13.245        17.8          3.9           4.8 \r\n 1981          107           13.2          23.9          10            0 \r\n 1981          108           21.858        23.9          3.3           0 \r\n 1981          109           14.868        15            8.9           0 \r\n 1981          110           13.152        12.2          4.4           0 \r\n 1981          111           16.127        11.1          0.6           0 \r\n 1981          112           14.255        18.3          8.9           9.1 \r\n 1981          113           14.212        16.1          4.4           0 \r\n 1981          114           22.623        19.4          0.6           0 \r\n 1981          115           24.098        30            5             0 \r\n 1981          116           23.368        29.4          8.9           0 \r\n 1981          117           22.209        31.7          15            0 \r\n 1981          118           22.356        29.4          10.6          0 \r\n 1981          119           22.062        25            5.6           0 \r\n 1981          120           21.623        22.8          7.8           0 \r\n 1981          121           21.118        19.4          5             0 \r\n 1981          122           24.421        23.9          3.3           0 \r\n 1981          123           20.843        26.7          14.4          0 \r\n 1981          124           13.313        25            14.4          5.1 \r\n 1981          125           12.686        18.3          8.9           0 \r\n 1981          126           20.674        17.2          4.4           0 \r\n 1981          127           24.758        17.8          1.1           0 \r\n 1981          128           18.45         16.7          8.9           0 \r\n 1981          129           16.512        13.9          3.9           0 \r\n 1981          130           25.085        16.7         -1.1           0 \r\n 1981          131           26.832        19.4         -1.1           0 \r\n 1981          132           23.656        19.4          5             0.8 \r\n 1981          133           14.066        16.7          7.2           0 \r\n 1981          134           22.697        22.2          6.1           2 \r\n 1981          135           27.677        24.4          5             0 \r\n 1981          136           26.389        24.4          8.3           0 \r\n 1981          137           15.769        22.2          11.1          5.1 \r\n 1981          138           11.987        14.4          6.1           4.3 \r\n 1981          139           25.918        22.8          2.2           0 \r\n 1981          140           27.861        25            7.2           0 \r\n 1981          141           27.23         26.7          6.7           0 \r\n 1981          142           16.143        25.6          12.8          2.3 \r\n 1981          143           12.718        23.3          15            5.8 \r\n 1981          144           17.07         21.1          7.8           0 \r\n 1981          145           23.799        23.3          7.2           0 \r\n 1981          146           21.993        24.4          10.6          0 \r\n 1981          147           22.137        26.7          13.3          0 \r\n 1981          148           22.633        27.8          14.4          0 \r\n 1981          149           23.293        28.9          14.4          0 \r\n 1981          150           24.615        28.9          12.8          0 \r\n 1981          151           26.763        28.9          9.4           0 \r\n 1981          152           27.149        29.4          10            0 \r\n 1981          153           22.641        27.2          17.8          1 \r\n 1981          154           25.493        26.1          11.1          0 \r\n 1981          155           26.385        29.4          13.3          0 \r\n 1981          156           27.633        33.9          15.6          0 \r\n 1981          157           29.426        33.9          15            0 \r\n 1981          158           26.734        32.2          16.7          7.9 \r\n 1981          159           16.148        25            17.2          0.8 \r\n 1981          160           21.531        24.4          13.3          1.5 \r\n 1981          161           26.734        29.4          12.2          0 \r\n 1981          162           24.222        29.4          16.7          0 \r\n 1981          163           23.864        30.6          15.6          0 \r\n 1981          164           22.211        33.3          22.8          0 \r\n 1981          165           17.516        31.7          25            0 \r\n 1981          166           18.78         30            13.9          29.2 \r\n 1981          167           18.057        24.4          11.1          0 \r\n 1981          168           26.183        27.8          13.3          0 \r\n 1981          169           21.488        27.2          16.1          0 \r\n 1981          170           27.267        26.1          11.7          0 \r\n 1981          171           22.03         26.7          16.7          0 \r\n 1981          172           19.863        23.9          15            1 \r\n 1981          173           25.642        27.2          11.7          0 \r\n 1981          174           28.35         31.1          11.7          0 \r\n 1981          175           17.877        30.6          17.2          46.2 \r\n 1981          176           25.642        27.2          15            0 \r\n 1981          177           26.544        27.8          14.4          0 \r\n 1981          178           20.585        27.8          15.6          0 \r\n 1981          179           19.321        33.3          21.1          0 \r\n 1981          180           16.793        32.8          18.3          16.3 \r\n 1981          181           17.335        27.8          13.9          0 \r\n 1981          182           23.211        27.8          14.4          0 \r\n 1981          183           20.761        28.3          16.1          0 \r\n 1981          184           16.955        27.8          18.9          14.7 \r\n 1981          185           12.284        27.8          16.1          5.1 \r\n 1981          186           21.107        29.4          18.3          0 \r\n 1981          187           23.702        30.6          17.8          0 \r\n 1981          188           22.491        30            17.8          0 \r\n 1981          189           19.94         32.2          21.1          0 \r\n 1981          190           17.877        31.7          17.2          8.4 \r\n 1981          191           25.269        31.7          16.1          0 \r\n 1981          192           21.488        34.4          22.2          0 \r\n 1981          193           19.596        36.1          22.8          0 \r\n 1981          194           20.665        35            22.8          0 \r\n 1981          195           21.349        34.4          21.1          0 \r\n 1981          196           22.886        34.4          20.6          0 \r\n 1981          197           18.445        31.1          20            0 \r\n 1981          198           19.174        30.6          19.4          0 \r\n 1981          199           20.192        28.9          17.8          0 \r\n 1981          200           18.834        29.4          19.4          0 \r\n 1981          201           22.907        29.4          16.1          0 \r\n 1981          202           23.431        29.4          16.7          0 \r\n 1981          203           20.566        28.3          16.7          2 \r\n 1981          204           18.88         25.6          15.6          0 \r\n 1981          205           19.258        29.4          16.7          0 \r\n 1981          206           18.421        28.9          18.9          45 \r\n 1981          207           12.727        21.7          14.4          0 \r\n 1981          208           13.474        19.4          12.8          20.3 \r\n 1981          209           13.308        25.6          11.1          5.3 \r\n 1981          210           23.455        21.7          10            0 \r\n 1981          211           20.821        27.2          16.7          0 \r\n 1981          212           21.481        28.9          16.7          0 \r\n 1981          213           22.13         29.4          18.3          0 \r\n 1981          214           13.824        27.8          19.4          14.5 \r\n 1981          215           15.45         27.8          15            0 \r\n 1981          216           21.483        30.6          18.3          0 \r\n 1981          217           14.699        30.6          19.4          44.5 \r\n 1981          218           20.514        28.9          18.3          0 \r\n 1981          219           22.3          28.9          15.6          0 \r\n 1981          220           22.461        27.2          14.4          17.8 \r\n 1981          221           22.306        25.6          15            0 \r\n 1981          222           23.103        23.3          13.9          0 \r\n 1981          223           23.102        26.7          13.3          0 \r\n 1981          224           22.944        30            15.6          0 \r\n 1981          225           22.311        28.9          14.4          1.8 \r\n 1981          226           13.828        30            19.4          32.3 \r\n 1981          227           14.457        30            18.9          0 \r\n 1981          228           22.157        25.6          13.3          0 \r\n 1981          229           21.064        21.7          10            0 \r\n 1981          230           22.466        22.8          10            0 \r\n 1981          231           22.931        23.3          10            0 \r\n 1981          232           23.229        25            10            0 \r\n 1981          233           22.922        25            10            0 \r\n 1981          234           21.845        26.7          12.2          0 \r\n 1981          235           20.162        27.2          14.4          0 \r\n 1981          236           13.899        26.7          15            14.2 \r\n 1981          237           18.045        27.2          16.7          0 \r\n 1981          238           12.131        27.8          17.2          8.4 \r\n 1981          239           10.237        25.6          16.1          8.6 \r\n 1981          240           8.732         24.4          17.2          3.8 \r\n 1981          241           11.208        25.6          15.6          0 \r\n 1981          242           15.991        25.6          16.1          0.5 \r\n 1981          243           14.241        30            20.6          0 \r\n 1981          244           23.058        26.7          10            0 \r\n 1981          245           18.079        22.2          9.4           0 \r\n 1981          246           20.006        25.6          8.3           0 \r\n 1981          247           13.091        24.4          16.1          2 \r\n 1981          248           18.239        25.6          11.7          0 \r\n 1981          249           18.248        26.1          12.8          0 \r\n 1981          250           10.803        25.6          16.7          38.1 \r\n 1981          251           18.689        23.9          10.6          0 \r\n 1981          252           19.558        27.8          10.6          0 \r\n 1981          253           19.265        31.1          14.4          0 \r\n 1981          254           18.115        30.6          15            0 \r\n 1981          255           19.117        27.2          12.2          0 \r\n 1981          256           18.831        30.6          11.1          0 \r\n 1981          257           17.695        31.1          15.6          0 \r\n 1981          258           16.704        24.4          10            0 \r\n 1981          259           17.135        19.4          6.1           0 \r\n 1981          260           17.275        16.7          2.8           0 \r\n 1981          261           18.812        21.1          2.8           0 \r\n 1981          262           18.951        28.3          7.8           0 \r\n 1981          263           18.248        28.3          8.9           0 \r\n 1981          264           16.589        27.2          10            0 \r\n 1981          265           14.81         23.3          10            0 \r\n 1981          266           14.536        22.2          8.3           0 \r\n 1981          267           12.923        21.1          11.1          3 \r\n 1981          268           7.754         23.9          13.9          16.3 \r\n 1981          269           8.635         23.3          10            2 \r\n 1981          270           14.976        19.4          7.2           0 \r\n 1981          271           16.727        20.6          2.8           0 \r\n 1981          272           15.657        31.7          10            0 \r\n 1981          273           14.2          31.1          17.8          0 \r\n 1981          274           14.864        21.7          6.7           0 \r\n 1981          275           15.266        15           -1.7           0 \r\n 1981          276           13.818        15            2.8           7.1 \r\n 1981          277           7.177         16.7          8.3           7.6 \r\n 1981          278           8.482         19.4          11.7          0 \r\n 1981          279           11.257        16.7          6.7           0 \r\n 1981          280           14.621        16.7          1.1           0 \r\n 1981          281           14.24         17.8          1.1           0 \r\n 1981          282           11.546        16.7          6.7           0.8 \r\n 1981          283           8.012         18.3          8.3           0.8 \r\n 1981          284           12.972        18.9          2.2           0 \r\n 1981          285           10.212        17.8          9.4           1 \r\n 1981          286           5.799         17.2          13.3          0.8 \r\n 1981          287           4.749         18.3          13.9          0.8 \r\n 1981          288           7.748         16.7          6.7           3.3 \r\n 1981          289           12.015        18.3          5             0 \r\n 1981          290           8.051         20            10            8.9 \r\n 1981          291           7.488         10.6          4.4           1.3 \r\n 1981          292           12.89         17.8         -3.3           0 \r\n 1981          293           11.557        17.8          7.2           0 \r\n 1981          294           10.462        13.3          2.8           0 \r\n 1981          295           11.314        9.4          -3.9           0 \r\n 1981          296           11.09         8.3          -7.2           0 \r\n 1981          297           7.835         1.7          -6.1           0.8 \r\n 1981          298           7.166         6.7          -4.4           0.5 \r\n 1981          299           11.586        11.1         -6.1           0 \r\n 1981          300           11.715        16.7         -2.2           0 \r\n 1981          301           10.887        18.3          2.2           0 \r\n 1981          302           9.964         19.4          5.6           0 \r\n 1981          303           8.206         18.9          8.9           0 \r\n 1981          304           5.275         18.3          10            8.9 \r\n 1981          305           4.296         13.3          8.3           2.8 \r\n 1981          306           2.322         13.3          10            11.2 \r\n 1981          307           2.875         15.6          10.6          10.4 \r\n 1981          308           3.45          16.7          11.1          1.5 \r\n 1981          309           6.493         12.8          6.7           1.3 \r\n 1981          310           9.796         15.6          0             0 \r\n 1981          311           10.366        17.2         -1.1           0 \r\n 1981          312           9.25          11.7          0.6           0 \r\n 1981          313           9.25          5            -6.7           0 \r\n 1981          314           9.383         12.8         -5             0 \r\n 1981          315           9.494         12.8         -1.7           0 \r\n 1981          316           9.271         13.3         -2.2           0 \r\n 1981          317           8.847         17.2         -2.2           0 \r\n 1981          318           8.405         18.9          1.7           0 \r\n 1981          319           6.083         13.9          7.8           0 \r\n 1981          320           7.992         12.8          0             0 \r\n 1981          321           8.649         15.6         -0.6           0 \r\n 1981          322           7.773         14.4          3.3           0 \r\n 1981          323           5.636         13.3         -1.1           14.2 \r\n 1981          324           3.685        -0.6          -6.7           0 \r\n 1981          325           4.986        -3.3          -9.4           0 \r\n 1981          326           7.509         5            -8.9           0 \r\n 1981          327           3.862         3.9           0.6           2 \r\n 1981          328           3.433         2.8          -1.1           0 \r\n 1981          329           3.54          3.3           0             0 \r\n 1981          330           3.185         3.9           0.6           0 \r\n 1981          331           3.61          1.7          -3.3           0 \r\n 1981          332           4.353         2.2          -4.4           0 \r\n 1981          333           7.007         3.3          -7.8           0 \r\n 1981          334           4.518         2.8          -2.8           14.5 \r\n 1981          335           1.681         0.6          -1.7           13.5 \r\n 1981          336           6.514         0            -10.6          0 \r\n 1981          337           6.199         2.2          -8.3           1.5 \r\n 1981          338           4.308         1.1          -3.9           0 \r\n 1981          339           6.341         3.3          -6.7           0 \r\n 1981          340           6.133         7.2          -1.7           0 \r\n 1981          341           5.925         8.3          -1.1           0 \r\n 1981          342           5.614         2.8          -3.3           0 \r\n 1981          343           4.99          1.1          -6.7           0 \r\n 1981          344           5.406        -1.7          -9.4           0 \r\n 1981          345           4.574         2.8          -3.3           0 \r\n 1981          346           2.983         1.1          -1.7           0 \r\n 1981          347           2.366         1.7          -1.1           0 \r\n 1981          348           7.611         2.2          -10.6          0 \r\n 1981          349           4.423        -9.4          -12.2          1.5 \r\n 1981          350           5.965        -10.6         -16.7          0 \r\n 1981          351           6.891        -12.2         -21.1          0 \r\n 1981          352           7.714        -13.9         -22.2          0 \r\n 1981          353           8.228        -11.1         -24.4          0 \r\n 1981          354           8.434        -0.6          -19.4          0 \r\n 1981          355           6.171         2.8          -1.1           0 \r\n 1981          356           6.891         1.1          -5             0 \r\n 1981          357           7.92          1.7          -10.6          0 \r\n 1981          358           7.817         1.7          -10.6          0 \r\n 1981          359           8.022         2.8          -10.6          0 \r\n 1981          360           6.377         2.2          -3.3           0 \r\n 1981          361           4.937        -1.7          -6.1           0 \r\n 1981          362           7.302        -2.8          -12.8          0.8 \r\n 1981          363           7.92         -5            -17.8          0 \r\n 1981          364           8.316         1.1          -15.6          0 \r\n 1981          365           8.005         2.2          -11.7          1.3 \r\n 1982          1             8.109        -10.6         -20            0 \r\n 1982          2             5.821        -0.6          -12.2          4.8 \r\n 1982          3             6.341         0            -17.8          0 \r\n 1982          4             3.327        -11.1         -16.7          2 \r\n 1982          5             7.693        -3.3          -17.2          0 \r\n 1982          6             7.67         -9.4          -17.8          1.5 \r\n 1982          7             7.775        -16.7         -26.7          0 \r\n 1982          8             8.195        -8.3          -21.1          0 \r\n 1982          9             8.825        -12.8         -25.6          0.8 \r\n 1982          10            8.3          -18.3         -31.7          0 \r\n 1982          11            7.113        -12.2         -23.3          0 \r\n 1982          12            5.521        -12.2         -16.1          1.5 \r\n 1982          13            7.432        -13.9         -23.3          0 \r\n 1982          14            9.131        -16.7         -28.9          0 \r\n 1982          15            9.343        -5.6          -20            0.5 \r\n 1982          16            9.655        -11.1         -27.2          0 \r\n 1982          17            9.976        -8.9          -26.1          1.3 \r\n 1982          18            8.046        -2.8          -12.8          0 \r\n 1982          19            7.912        -1.7          -12.2          0 \r\n 1982          20            8.02         -5.6          -13.9          0 \r\n 1982          21            3.685        -5            -8.9           0 \r\n 1982          22            3.394        -4.4          -8.3           29 \r\n 1982          23            8.43          1.1          -18.9          0 \r\n 1982          24            7.664        -17.2         -23.9          0 \r\n 1982          25            5.861        -13.9         -20.6          3.6 \r\n 1982          26            10.396       -9.4          -24.4          0 \r\n 1982          27            11.391        2.8          -11.1          0 \r\n 1982          28            11.728        2.8          -13.9          0 \r\n 1982          29            9.159         0            -11.1          2.3 \r\n 1982          30            6.925         0.6          -10            0 \r\n 1982          31            11.732       -7.8          -22.8          0 \r\n 1982          32            11.844       -7.2          -21.7          0 \r\n 1982          33            10.039       -5.6          -11.1          0 \r\n 1982          34            12.872       -9.4          -26.1          0.8 \r\n 1982          35            10.024       -17.8         -27.2          0 \r\n 1982          36            7.706        -17.2         -19.4          1.8 \r\n 1982          37            12.882       -13.9         -28.9          0 \r\n 1982          38            12.997       -3.9          -18.9          0 \r\n 1982          39            11.844       -6.7          -15            0 \r\n 1982          40            12.309       -11.1         -23.3          0 \r\n 1982          41            13.012       -10           -26.1          0 \r\n 1982          42            13.012       -6.7          -20            0 \r\n 1982          43            12.662       -5            -13.3          0 \r\n 1982          44            13.253       -5.6          -15.6          0 \r\n 1982          45            13.017        3.3          -10            0 \r\n 1982          46            9.914         5.6          -2.2           0 \r\n 1982          47            7.047         2.8           0             0 \r\n 1982          48            4.219         1.1          -1.1           2.5 \r\n 1982          49            3.255         1.7          -1.1           5.3 \r\n 1982          50            9.489         3.3          -2.8           0 \r\n 1982          51            10.462        7.2           0.6           0 \r\n 1982          52            13.381        6.1          -0.6           0 \r\n 1982          53            15.222        15.6         -0.6           0 \r\n 1982          54            15.854        14.4         -1.1           0 \r\n 1982          55            6.689         1.7          -3.9           0 \r\n 1982          56            10.997       -1.1          -6.7           0 \r\n 1982          57            12.997        1.1          -6.7           0 \r\n 1982          58            15.507        3.9          -5.6           0 \r\n 1982          59            15.129        7.2          -3.3           0 \r\n 1982          60            12.648        6.7          -2.2           0 \r\n 1982          61            12.108        6.1          -4.4           1 \r\n 1982          62            5.621        -3.9          -7.8           0 \r\n 1982          63            5.888        -3.3          -9.4           7.4 \r\n 1982          64            13.522       -3.9          -11.7          0 \r\n 1982          65            17.377       -1.7          -20            0 \r\n 1982          66            17.377       -3.9          -18.9          0 \r\n 1982          67            15.751       -1.7          -12.2          0.8 \r\n 1982          68            17.748       -5.6          -19.4          0 \r\n 1982          69            18.234        6.7          -11.7          0 \r\n 1982          70            15.549        6.1          -1.1           0 \r\n 1982          71            14.439        10           -1.1           3.3 \r\n 1982          72            15.003        11.1          1.1           0 \r\n 1982          73            17.289        11.1         -0.6           0 \r\n 1982          74            10.92         6.1           0.6           0.5 \r\n 1982          75            5.505         6.1           1.7           15.8 \r\n 1982          76            9.977         5.6          -0.6           0 \r\n 1982          77            7.631         5.6           1.1           0 \r\n 1982          78            5.666         5             1.1           32 \r\n 1982          79            7.693         8.3           2.2           0 \r\n 1982          80            14.687        5            -2.8           0 \r\n 1982          81            17.391        8.3          -3.3           0 \r\n 1982          82            19.07         14.4          2.2           0 \r\n 1982          83            14.45         12.2         -0.6           9.7 \r\n 1982          84            17.072        7.8          -2.2           0 \r\n 1982          85            17.669        3.3          -5             0 \r\n 1982          86            18.771        3.9          -6.7           0 \r\n 1982          87            19.733        10.6         -3.9           0 \r\n 1982          88            20.008        13.9          0.6           0 \r\n 1982          89            12.611        16.1          11.7          4.1 \r\n 1982          90            21.019        17.8          3.3           0 \r\n 1982          91            20.684        21.7          1.1           0 \r\n 1982          92            22.636        25            11.1          0 \r\n 1982          93            19.402        16.7         -9.4           8.4 \r\n 1982          94            19.142        2.2          -8.3           0 \r\n 1982          95            12.626        1.1          -5.6           7.9 \r\n 1982          96            17.783       -1.1          -13.3          0 \r\n 1982          97            17.509       -1.7          -7.8           0 \r\n 1982          98            7.029        -1.7          -5.6           4.1 \r\n 1982          99            20.122        1.1          -8.3           0 \r\n 1982          100           19.439        5.6          -1.7           0 \r\n 1982          101           25.548        10.6         -5             0 \r\n 1982          102           24.298        20            4.4           0 \r\n 1982          103           23.919        18.9          4.4           0 \r\n 1982          104           24.619        20            3.3           0.8 \r\n 1982          105           15.5          18.9          8.3           8.4 \r\n 1982          106           13.386        18.9          10            29.7 \r\n 1982          107           17.6          14.4          2.8           1.8 \r\n 1982          108           24.555        18.3          4.4           0 \r\n 1982          109           20.158        18.3          7.8           3.3 \r\n 1982          110           16.012        8.9          -0.6           0 \r\n 1982          111           24.19         12.8         -1.7           0 \r\n 1982          112           18.287        14.4          0             4.3 \r\n 1982          113           25.524        20            3.3           0 \r\n 1982          114           24.799        21.7          5.6           0 \r\n 1982          115           20.593        20.6          9.4           0 \r\n 1982          116           21.323        18.9          6.7           0 \r\n 1982          117           24.856        17.2          1.7           0 \r\n 1982          118           19.12         14.4          5             0 \r\n 1982          119           18.385        17.8          5.6           0.5 \r\n 1982          120           22.956        18.9          5.6           0 \r\n 1982          121           25.571        21.7          4.4           0 \r\n 1982          122           28.31         23.3          6.1           0 \r\n 1982          123           24.888        27.2          8.3           0 \r\n 1982          124           22.71         30.6          16.7          0 \r\n 1982          125           17.698        30            10            7.4 \r\n 1982          126           12.843        11.7          5             20.1 \r\n 1982          127           16.242        21.1          6.7           0 \r\n 1982          128           23.654        23.3          7.8           2.3 \r\n 1982          129           21.91         26.7          11.1          0 \r\n 1982          130           18.734        27.8          17.2          0 \r\n 1982          131           14.13         26.7          15            4.1 \r\n 1982          132           12.467        25            15.6          6.9 \r\n 1982          133           7.832         21.1          16.1          5.6 \r\n 1982          134           6.713         18.9          15.6          14.2 \r\n 1982          135           12.873        21.1          11.7          8.6 \r\n 1982          136           13.356        22.8          12.8          1.5 \r\n 1982          137           12.873        23.3          15            2.5 \r\n 1982          138           16.523        24.4          11.7          0.5 \r\n 1982          139           15.875        26.1          14.4          5.6 \r\n 1982          140           15.389        26.7          15.6          7.1 \r\n 1982          141           18.262        21.1          6.7           34.8 \r\n 1982          142           6.848         13.3          10            3 \r\n 1982          143           9.294         15            10            0.5 \r\n 1982          144           13.787        18.9          12.8          0 \r\n 1982          145           13.787        18.9          12.2          1.8 \r\n 1982          146           9.684         21.1          13.3          25.9 \r\n 1982          147           15.529        21.7          12.8          0 \r\n 1982          148           22.137        22.2          12.8          0 \r\n 1982          149           12.72         22.8          16.1          2.3 \r\n 1982          150           21.476        23.3          12.8          0 \r\n 1982          151           21.972        21.7          12.2          0 \r\n 1982          152           29.398        22.2          5.6           0 \r\n 1982          153           28.524        21.7          10            1.8 \r\n 1982          154           22.284        18.3          9.4           1.3 \r\n 1982          155           29.059        21.1          6.7           0 \r\n 1982          156           29.059        22.8          9.4           0 \r\n 1982          157           24.94         22.8          15.6          2.8 \r\n 1982          158           19.199        26.1          14.4          0 \r\n 1982          159           29.246        26.1          11.1          4.6 \r\n 1982          160           14.354        20            15            2 \r\n 1982          161           30.682        25.6          7.8           0 \r\n 1982          162           29.067        26.1          11.1          0 \r\n 1982          163           22.249        25            11.1          2 \r\n 1982          164           30.878        26.1          10            0 \r\n 1982          165           24.377        25.6          17.2          0 \r\n 1982          166           13.182        21.1          16.7          38.6 \r\n 1982          167           28.711        23.3          9.4           0 \r\n 1982          168           26.725        24.4          12.8          0 \r\n 1982          169           23.294        23.3          12.8          0.5 \r\n 1982          170           20.405        22.2          10            4.1 \r\n 1982          171           26.183        25.6          12.8          0 \r\n 1982          172           29.975        25            10            0 \r\n 1982          173           29.975        25            9.4           0 \r\n 1982          174           28.711        27.2          10.6          0 \r\n 1982          175           27.086        30.6          13.9          0 \r\n 1982          176           24.016        27.8          16.7          0 \r\n 1982          177           19.321        25            14.4          0 \r\n 1982          178           22.211        28.3          16.7          0 \r\n 1982          179           23.655        29.4          16.7          0 \r\n 1982          180           21.308        29.4          18.9          0 \r\n 1982          181           13.724        23.9          14.4          8.6 \r\n 1982          182           15.255        21.1          14.4          0 \r\n 1982          183           21.25         25.6          15.6          13.5 \r\n 1982          184           18.993        32.8          18.3          0 \r\n 1982          185           27.268        32.8          19.4          0 \r\n 1982          186           22.378        32.2          21.1          0 \r\n 1982          187           19.181        32.2          18.3          31 \r\n 1982          188           19.745        27.8          15            1.3 \r\n 1982          189           25.971        27.8          15.6          0 \r\n 1982          190           20.74         28.3          18.3          0 \r\n 1982          191           17.937        28.3          16.1          37.9 \r\n 1982          192           16.256        26.1          15.6          6.9 \r\n 1982          193           25.037        29.4          16.1          0.5 \r\n 1982          194           26.361        29.4          16.1          0 \r\n 1982          195           24.504        28.9          17.2          0 \r\n 1982          196           15.965        30            18.3          11.2 \r\n 1982          197           18.007        31.1          18.3          0 \r\n 1982          198           19.735        31.7          23.9          0 \r\n 1982          199           17.521        30            18.9          51.3 \r\n 1982          200           19.919        29.4          20.6          0 \r\n 1982          201           22.501        31.1          20            0 \r\n 1982          202           22.72         30            18.9          0 \r\n 1982          203           23.82         29.4          17.8          0 \r\n 1982          204           24.553        29.4          17.2          0 \r\n 1982          205           25.119        28.3          15.6          0 \r\n 1982          206           24.209        31.1          18.3          0 \r\n 1982          207           24.391        30            18.3          0 \r\n 1982          208           22.421        30.6          20            0 \r\n 1982          209           24.953        27.8          16.1          0 \r\n 1982          210           23.506        27.8          17.2          0 \r\n 1982          211           19.757        26.7          14.4          2.8 \r\n 1982          212           26.942        28.9          13.9          0 \r\n 1982          213           27.545        31.7          16.1          0 \r\n 1982          214           24.041        32.8          18.3          0.5 \r\n 1982          215           22.45         33.9          21.1          0 \r\n 1982          216           16.504        33.3          20            19.8 \r\n 1982          217           13.695        27.8          21.1          18.8 \r\n 1982          218           15.977        27.8          20            0 \r\n 1982          219           15.869        28.3          20            3 \r\n 1982          220           20.752        28.3          18.3          0 \r\n 1982          221           23.9          24.4          12.2          0 \r\n 1982          222           20.956        21.7          12.8          0.8 \r\n 1982          223           25.799        22.8          8.9           0 \r\n 1982          224           24.767        22.8          10            0 \r\n 1982          225           20.295        23.3          15.6          0.8 \r\n 1982          226           15.03         23.9          18.3          0 \r\n 1982          227           14.347        25            18.3          0.5 \r\n 1982          228           20.183        28.3          17.2          0 \r\n 1982          229           22.557        30            17.2          0 \r\n 1982          230           21.22         28.9          17.2          0 \r\n 1982          231           19.367        28.3          18.9          0 \r\n 1982          232           18.561        28.9          20            0 \r\n 1982          233           24.079        27.2          13.9          0 \r\n 1982          234           21.069        26.7          17.2          0 \r\n 1982          235           21.749        27.8          15.6          0 \r\n 1982          236           19.756        27.8          16.1          1.8 \r\n 1982          237           17.801        26.7          10.6          0 \r\n 1982          238           23.241        26.1          12.2          0 \r\n 1982          239           21.599        25            11.7          0 \r\n 1982          240           22.417        22.2          7.2           0 \r\n 1982          241           17.381        23.9          16.7          18.3 \r\n 1982          242           10.883        23.9          16.7          9.1 \r\n 1982          243           11.771        26.7          17.2          14.5 \r\n 1982          244           13.544        27.2          17.2          2.8 \r\n 1982          245           18.82         26.7          14.4          0 \r\n 1982          246           20.747        25            10            0 \r\n 1982          247           20.886        27.8          11.1          0 \r\n 1982          248           18.239        27.8          17.8          0 \r\n 1982          249           10.949        24.4          17.2          0 \r\n 1982          250           11.387        18.9          13.9          0 \r\n 1982          251           15.792        23.9          11.7          0 \r\n 1982          252           15.212        27.2          17.2          0 \r\n 1982          253           14.233        28.9          19.4          0 \r\n 1982          254           15.096        30            17.8          0 \r\n 1982          255           13.838        27.8          18.3          0 \r\n 1982          256           12.412        27.2          12.8          28.7 \r\n 1982          257           9.484         17.8          12.2          1.5 \r\n 1982          258           8.918         16.7          11.1          0 \r\n 1982          259           13.343        15.6          6.7           0 \r\n 1982          260           9.832         16.1          11.7          7.1 \r\n 1982          261           13.238        20            5.6           0 \r\n 1982          262           17.558        21.1          6.7           0 \r\n 1982          263           17.28         20            6.1           0 \r\n 1982          264           18.248        16.1          2.2           0 \r\n 1982          265           18.65         19.4          3.3           0 \r\n 1982          266           18.102        25.6          8.9           1 \r\n 1982          267           16.459        24.4          10            0 \r\n 1982          268           15.235        17.8          5             0 \r\n 1982          269           16.595        17.8          3.3           0 \r\n 1982          270           16.326        20            4.4           0 \r\n 1982          271           15.389        25.6          13.3          0 \r\n 1982          272           9.233         25.6          16.7          6.6 \r\n 1982          273           7.963         25            16.7          0 \r\n 1982          274           12.74         27.2          15            1.3 \r\n 1982          275           9.212         26.7          14.4          8.6 \r\n 1982          276           11.186        22.8          7.2           0 \r\n 1982          277           15.66         24.4          7.8           0 \r\n 1982          278           10.831        25.6          11.1          4.3 \r\n 1982          279           9.575         22.2          9.4           8.6 \r\n 1982          280           11.775        23.9          2.2           0 \r\n 1982          281           13.983        23.3          8.3           1.5 \r\n 1982          282           6.928         18.3          10            6.1 \r\n 1982          283           8.394         15            7.8           0 \r\n 1982          284           7.504         12.2          6.1           0 \r\n 1982          285           8.573         10            1.7           0 \r\n 1982          286           6.934         11.7          5.6           0 \r\n 1982          287           12.747        21.1          2.2           0 \r\n 1982          288           12.497        20.6          8.3           0 \r\n 1982          289           13.625        16.1         -0.6           0 \r\n 1982          290           12.262        20            5.6           0 \r\n 1982          291           10.925        21.1          6.1           0 \r\n 1982          292           10.312        16.1          7.2           7.6 \r\n 1982          293           7.177         9.4           0             7.9 \r\n 1982          294           10.584        8.9          -2.8           0 \r\n 1982          295           11.922        13.3         -2.8           0 \r\n 1982          296           11.934        15           -2.2           0 \r\n 1982          297           11.693        16.1         -1.7           0 \r\n 1982          298           11.705        18.3         -1.1           0 \r\n 1982          299           11.586        18.3          0             0 \r\n 1982          300           9.348         16.1          6.7           0 \r\n 1982          301           4.26          14.4          7.8           21.1 \r\n 1982          302           6.448         16.7          4.4           0 \r\n 1982          303           8.206         16.7          7.2           0 \r\n 1982          304           8.675         17.2          5.6           0 \r\n 1982          305           4.761         13.3          8.9           11.9 \r\n 1982          306           6.503         13.3          5             0.8 \r\n 1982          307           9.201         9.4          -2.2           0 \r\n 1982          308           6.441         0.6          -6.7           0 \r\n 1982          309           4.443         1.1          -5             0 \r\n 1982          310           9.455         12.8         -6.1           0 \r\n 1982          311           9.91          17.2         -1.1           0 \r\n 1982          312           9.363         13.3         -2.2           0 \r\n 1982          313           3.384         8.3           3.3           9.1 \r\n 1982          314           5.362         11.1          5             0 \r\n 1982          315           4.691         12.2          2.8           41.1 \r\n 1982          316           8.601         15.6         -8.9           0 \r\n 1982          317           8.073        -2.8          -13.3          0 \r\n 1982          318           6.083        -2.2          -7.2           0 \r\n 1982          319           8.847         4.4          -10.6          0 \r\n 1982          320           9.416         7.8          -6.7           0 \r\n 1982          321           10.073        10.6         -6.7           0 \r\n 1982          322           9.306         7.8          -3.3           0 \r\n 1982          323           4.769         13.9          6.7           3.3 \r\n 1982          324           6.286         16.1          5.6           0 \r\n 1982          325           8.887         8.9          -2.2           0 \r\n 1982          326           6.758         6.1          -1.1           0.5 \r\n 1982          327           7.938        -0.6          -10            0 \r\n 1982          328           8.689         1.1          -13.9          0 \r\n 1982          329           8.26          3.9          -8.9           0 \r\n 1982          330           7.326         2.2          -7.2           0 \r\n 1982          331           7.857         1.1          -11.1          0 \r\n 1982          332           3.822         1.1          -1.7           10.4 \r\n 1982          333           1.911         2.8          -0.6           0 \r\n 1982          334           3.992         6.1           0             0 \r\n 1982          335           6.619         15.6          2.8           0 \r\n 1982          336           5.253         16.1          10.6          0 \r\n 1982          337           7.88          12.2         -0.6           0 \r\n 1982          338           5.778         4.4          -2.8           0 \r\n 1982          339           3.119         3.9          -0.6           37.3 \r\n 1982          340           4.99          2.8          -6.7           0 \r\n 1982          341           6.549         1.1          -7.8           1.3 \r\n 1982          342           4.886        -6.1          -10            0 \r\n 1982          343           8.316        -6.1          -20.6          0 \r\n 1982          344           7.485         0            -7.2           0 \r\n 1982          345           8.628        -0.6          -18.3          0 \r\n 1982          346           7.714        -4.4          -20            0 \r\n 1982          347           6.994         4.4          -7.8           0 \r\n 1982          348           4.423         2.8          -0.6           0 \r\n 1982          349           3.908         1.1          -4.4           0 \r\n 1982          350           4.32          0            -5.6           0 \r\n 1982          351           6.891         5            -6.7           0 \r\n 1982          352           6.377         7.8           0.6           0 \r\n 1982          353           5.657         3.9          -1.7           0 \r\n 1982          354           5.451         0.6          -5             0 \r\n 1982          355           6.788         5.6          -6.1           0 \r\n 1982          356           7.097         5.6          -3.9           0 \r\n 1982          357           5.451         5            -0.6           0 \r\n 1982          358           4.114         9.4           0             23.1 \r\n 1982          359           5.76          10.6         -3.3           1.5 \r\n 1982          360           7.302         1.7          -8.9           0 \r\n 1982          361           5.965         0            -3.9           15.5 \r\n 1982          362           5.76          0.6          -11.7          27.2 \r\n 1982          363           6.171        -6.7          -13.3          0 \r\n 1982          364           6.965        -2.2          -12.2          0 \r\n 1982          365           6.757         0            -9.4           0 \r\n 1983          1             6.133        -0.6          -7.2           0 \r\n 1983          2             6.133        -2.2          -7.2           0 \r\n 1983          3             7.485        -3.3          -11.7          0 \r\n 1983          4             5.821         0.6          -5             0 \r\n 1983          5             5.094         0            -5             0 \r\n 1983          6             5.463         5.6          -1.7           0 \r\n 1983          7             7.775         2.2          -7.2           0 \r\n 1983          8             5.253         1.1          -6.7           0 \r\n 1983          9             6.619         5.6          -1.7           0 \r\n 1983          10            4.938         4.4          -2.2           4.8 \r\n 1983          11            7.75         -1.1          -10            0 \r\n 1983          12            9.343         1.7          -13.9          0 \r\n 1983          13            9.024         5.6          -5.6           0 \r\n 1983          14            8.918         3.9          -6.7           0 \r\n 1983          15            8.706        -5.6          -12.8          0 \r\n 1983          16            8.367        -1.1          -12.8          0 \r\n 1983          17            7.938        -2.8          -10.6          0 \r\n 1983          18            8.582        -5.6          -11.1          0 \r\n 1983          19            8.454        -2.2          -10            0 \r\n 1983          20            5.961        -2.2          -6.7           0 \r\n 1983          21            7.912         2.2          -8.3           0 \r\n 1983          22            7.335         1.1          -6.1           0 \r\n 1983          23            5.146         1.1          -3.9           0 \r\n 1983          24            5.146         0.6          -3.9           0 \r\n 1983          25            6.857        -2.2          -8.9           0 \r\n 1983          26            9.29         -5.6          -13.3          1 \r\n 1983          27            11.28        -3.9          -20            0 \r\n 1983          28            10.388        3.9          -4.4           0 \r\n 1983          29            4.915         3.3          -1.7           16.3 \r\n 1983          30            6.143        -0.6          -6.7           0 \r\n 1983          31            9.137        -4.4          -11.7          0 \r\n 1983          32            8.009        -3.9          -10.6          2.8 \r\n 1983          33            4.512        -3.3          -7.2           6.3 \r\n 1983          34            8.543        -5.6          -16.1          0.8 \r\n 1983          35            11.619       -7.8          -20            0 \r\n 1983          36            11.501       -2.2          -15.6          0.8 \r\n 1983          37            9.546        -2.2          -16.1          2 \r\n 1983          38            13.457       -8.3          -23.3          0 \r\n 1983          39            13.47         0            -16.7          0 \r\n 1983          40            6.735         1.1          -3.3           0 \r\n 1983          41            6.213         1.1          -1.7           0 \r\n 1983          42            5.861         1.1          -3.3           0 \r\n 1983          43            6.035         1.7          -2.2           0 \r\n 1983          44            7.573         5            -0.6           0 \r\n 1983          45            11.478        6.7          -2.2           0 \r\n 1983          46            9.197         5            -0.6           2.8 \r\n 1983          47            5.494         3.9          -1.7           3 \r\n 1983          48            8.318         3.3          -1.1           0 \r\n 1983          49            11.452        9.4          -1.7           0 \r\n 1983          50            13.99         13.9          0             0 \r\n 1983          51            14.233        11.7          1.7           0 \r\n 1983          52            13.012        10.6         -0.6           0 \r\n 1983          53            11.662        8.3           1.1           0 \r\n 1983          54            11.395        5            -1.7           0 \r\n 1983          55            10.9          3.3          -7.2           0.8 \r\n 1983          56            12.997        1.7          -7.2           0 \r\n 1983          57            14.496        6.7          -3.9           0 \r\n 1983          58            14.246        10            1.1           0 \r\n 1983          59            16.768        13.9         -1.7           0 \r\n 1983          60            14.81         17.2          1.1           0 \r\n 1983          61            15.459        21.1         -1.7           0 \r\n 1983          62            15.243        23.3          3.3           0 \r\n 1983          63            13.958        21.7          8.3           0 \r\n 1983          64            5.452         15.6          10.6          5.3 \r\n 1983          65            5.719         13.3          7.2           30.7 \r\n 1983          66            9.019         7.8          -2.8           0 \r\n 1983          67            9.65         -1.1          -7.2           0 \r\n 1983          68            9.429        -1.7          -8.3           0 \r\n 1983          69            9.173        -1.7          -7.8           0 \r\n 1983          70            7.159        -0.6          -5             0 \r\n 1983          71            12.296        6.7          -4.4           0 \r\n 1983          72            14.89         12.2         -1.7           0 \r\n 1983          73            14.559        8.9          -1.7           0 \r\n 1983          74            6.256         6.1           0.6           9.1 \r\n 1983          75            4.243         3.9           0             15.2 \r\n 1983          76            7.225         4.4           0.6           0 \r\n 1983          77            7.284         4.4           0.6           1.8 \r\n 1983          78            7.4           2.8          -1.7           0 \r\n 1983          79            7.926         0.6          -5             2 \r\n 1983          80            12.006       -2.2          -8.3           0 \r\n 1983          81            17.156        0.6          -10.6          0 \r\n 1983          82            17.293        2.8          -8.3           0 \r\n 1983          83            16.464        2.8          -5.6           0 \r\n 1983          84            13.132        2.8          -3.9           0 \r\n 1983          85            5.492         0.6          -2.2           13.2 \r\n 1983          86            4.332         0            -2.2           10.4 \r\n 1983          87            13.115        2.8          -5.6           0 \r\n 1983          88            15.4          2.8          -5.6           0 \r\n 1983          89            12.005        6.7           0             1 \r\n 1983          90            10.754        11.1          1.1           3.8 \r\n 1983          91            13.069        10.6          2.2           0 \r\n 1983          92            7.41          5             1.7           6.3 \r\n 1983          93            12.396        5.6           0             0.5 \r\n 1983          94            15.477        4.4          -1.1           0 \r\n 1983          95            10.454        3.9           0             6.1 \r\n 1983          96            9.028         5.6          -0.6           4.6 \r\n 1983          97            16.962        6.1          -1.1           0 \r\n 1983          98            20.535        8.3          -2.8           0 \r\n 1983          99            13.782        7.2          -0.6           8.6 \r\n 1983          100           9.164         4.4          -0.6           0.8 \r\n 1983          101           21.105        12.2         -0.6           0 \r\n 1983          102           15.551        11.1          2.2           28.7 \r\n 1983          103           11.89         9.4           3.9           7.6 \r\n 1983          104           14.547        6.1          -2.8           11.7 \r\n 1983          105           20.713        5.6          -4.4           0 \r\n 1983          106           21.136        5.6          -2.2           0 \r\n 1983          107           13.484        3.3          -3.3           4.8 \r\n 1983          108           18.877        5.6          -7.8           0 \r\n 1983          109           26.019        9.4          -3.9           0 \r\n 1983          110           26.448        13.9         -1.1           0 \r\n 1983          111           22.031        16.1          5.6           0 \r\n 1983          112           22.895        18.9          5             0 \r\n 1983          113           22.913        17.2          6.1           0 \r\n 1983          114           25.089        17.8          1.1           0 \r\n 1983          115           24.974        22.2          1.7           0 \r\n 1983          116           23.66         26.1          14.4          0 \r\n 1983          117           25.15         25            5             0 \r\n 1983          118           21.767        21.7          9.4           0 \r\n 1983          119           22.503        20            6.7           0 \r\n 1983          120           21.475        18.9          5.6           0 \r\n 1983          121           19.681        14.4          8.3           12.9 \r\n 1983          122           12.755        12.2          4.4           16.3 \r\n 1983          123           13.844        16.7          6.1           14.5 \r\n 1983          124           23.493        17.2          4.4           0.8 \r\n 1983          125           24.746        21.1          4.4           0 \r\n 1983          126           23.18         24.4          11.7          0 \r\n 1983          127           18.608        23.9          7.2           16.8 \r\n 1983          128           18.135        13.3          0.6           0 \r\n 1983          129           23.974        17.2          4.4           0 \r\n 1983          130           24.609        22.2          6.1           0 \r\n 1983          131           23.656        24.4          10            0 \r\n 1983          132           19.82         23.3          15            0 \r\n 1983          133           15.984        22.2          10            3.3 \r\n 1983          134           18.381        20            3.3           7.9 \r\n 1983          135           17.7          16.7          1.1           0 \r\n 1983          136           24.137        20            5             0 \r\n 1983          137           21.24         19.4          7.2           3 \r\n 1983          138           7.127         11.7          8.9           26.9 \r\n 1983          139           7.127         13.9          10            37.9 \r\n 1983          140           20.896        19.4          8.3           0 \r\n 1983          141           16.632        18.3          8.9           1 \r\n 1983          142           13.86         21.1          12.2          5.1 \r\n 1983          143           26.904        22.8          5.6           0 \r\n 1983          144           26.261        28.3          10.6          9.1 \r\n 1983          145           19.039        20            8.3           0 \r\n 1983          146           26.425        20.6          5.6           0 \r\n 1983          147           25.276        27.2          11.1          0 \r\n 1983          148           23.789        27.2          13.3          1 \r\n 1983          149           24.615        19.4          8.9           1.3 \r\n 1983          150           22.302        17.8          5.6           0 \r\n 1983          151           22.633        20            7.2           0 \r\n 1983          152           26.112        22.2          7.8           0 \r\n 1983          153           22.997        21.7          11.7          1.3 \r\n 1983          154           23.354        25.6          13.3          0 \r\n 1983          155           29.059        27.8          9.4           0 \r\n 1983          156           27.633        27.2          11.1          0.5 \r\n 1983          157           28.17         22.8          6.1           0 \r\n 1983          158           29.067        26.7          12.2          0 \r\n 1983          159           28.349        29.4          14.4          0 \r\n 1983          160           27.093        30.6          13.9          1 \r\n 1983          161           18.84         29.4          14.4          2.5 \r\n 1983          162           21.352        28.3          17.2          0 \r\n 1983          163           15.072        28.9          18.9          0 \r\n 1983          164           19.141        30            21.1          0 \r\n 1983          165           18.419        30            15            36.6 \r\n 1983          166           24.197        25            12.2          0 \r\n 1983          167           26.364        25            10.6          0 \r\n 1983          168           22.933        24.4          12.2          0 \r\n 1983          169           13.543        24.4          15            20.6 \r\n 1983          170           13.543        25            15.6          0 \r\n 1983          171           18.599        26.7          18.3          0 \r\n 1983          172           20.224        31.7          20.6          0 \r\n 1983          173           21.849        33.3          20.6          0 \r\n 1983          174           21.849        32.8          21.1          0 \r\n 1983          175           20.585        33.3          24.4          0 \r\n 1983          176           24.197        33.3          18.9          0 \r\n 1983          177           22.572        32.8          19.4          61.2 \r\n 1983          178           14.085        26.7          20            58.9 \r\n 1983          179           12.64         23.3          17.8          10.7 \r\n 1983          180           8.487         22.8          17.8          38.4 \r\n 1983          181           17.696        31.1          16.1          0 \r\n 1983          182           19.558        31.1          18.9          3.6 \r\n 1983          183           18.241        30            18.9          31.8 \r\n 1983          184           22.19         31.1          22.8          0 \r\n 1983          185           21.626        31.1          13.3          15.2 \r\n 1983          186           25.951        25            14.4          0 \r\n 1983          187           27.079        27.2          13.3          0 \r\n 1983          188           27.456        28.9          13.3          0 \r\n 1983          189           27.279        31.1          15.6          0 \r\n 1983          190           28.027        31.7          15.6          0 \r\n 1983          191           28.214        32.2          16.1          0 \r\n 1983          192           26.158        31.7          18.3          0 \r\n 1983          193           28.214        30.6          17.8          0 \r\n 1983          194           25.618        33.3          19.4          0 \r\n 1983          195           24.69         32.8          19.4          0 \r\n 1983          196           22.462        30.6          20.6          0 \r\n 1983          197           21.163        30            21.1          0 \r\n 1983          198           21.579        31.7          20.6          0 \r\n 1983          199           21.948        31.1          19.4          4.6 \r\n 1983          200           17.521        35            21.1          0 \r\n 1983          201           23.239        36.7          23.3          0 \r\n 1983          202           23.27         36.1          22.8          0 \r\n 1983          203           24.919        35.6          21.1          0 \r\n 1983          204           24.186        35.6          21.1          0 \r\n 1983          205           19.841        25.6          18.3          1.3 \r\n 1983          206           24.937        28.9          15.6          0 \r\n 1983          207           25.119        29.4          16.1          0 \r\n 1983          208           25.134        33.3          16.7          0.5 \r\n 1983          209           23.145        34.4          23.3          0 \r\n 1983          210           16.997        34.4          20.6          40.1 \r\n 1983          211           21.014        31.1          20            0 \r\n 1983          212           22.272        30.6          18.9          0 \r\n 1983          213           26.963        29.4          15            0 \r\n 1983          214           23.864        32.8          17.8          0 \r\n 1983          215           20.505        32.8          22.8          0 \r\n 1983          216           20.542        32.2          21.1          0 \r\n 1983          217           20.542        32.2          22.2          0 \r\n 1983          218           19.313        32.2          21.7          0 \r\n 1983          219           17.438        31.7          19.4          1.8 \r\n 1983          220           24.414        32.8          18.3          0 \r\n 1983          221           24.419        32.8          16.1          0 \r\n 1983          222           23.034        35            18.9          0 \r\n 1983          223           25.111        33.9          15.6          0 \r\n 1983          224           23.391        26.7          12.8          0 \r\n 1983          225           24.251        28.9          12.8          0 \r\n 1983          226           21.521        30.6          20            0 \r\n 1983          227           22.204        32.8          20.6          0 \r\n 1983          228           22.388        37.8          21.1          0 \r\n 1983          229           20.183        37.2          23.3          0 \r\n 1983          230           21.051        36.7          21.1          0 \r\n 1983          231           20.883        36.1          21.1          0 \r\n 1983          232           21.236        35            20            0 \r\n 1983          233           14.046        32.2          21.1          8.9 \r\n 1983          234           13.21         32.2          19.4          12.9 \r\n 1983          235           10.459        26.1          20.6          0 \r\n 1983          236           11.953        32.8          19.4          2 \r\n 1983          237           16.977        33.3          21.7          0 \r\n 1983          238           17.472        34.4          21.1          0 \r\n 1983          239           14.072        32.2          18.3          43.9 \r\n 1983          240           19.472        30.6          17.2          0 \r\n 1983          241           19.33         32.8          18.3          0 \r\n 1983          242           14.132        32.8          18.9          37.1 \r\n 1983          243           17.737        27.8          16.1          0 \r\n 1983          244           19.672        28.9          15            0 \r\n 1983          245           17.931        31.1          17.2          0 \r\n 1983          246           18.228        32.2          16.1          0 \r\n 1983          247           16.327        32.2          18.3          0 \r\n 1983          248           11.767        31.1          18.3          2.8 \r\n 1983          249           12.7          28.3          14.4          6.6 \r\n 1983          250           20.437        27.8          8.3           0 \r\n 1983          251           19.558        33.9          14.4          0.5 \r\n 1983          252           15.792        33.9          21.1          0 \r\n 1983          253           15.527        33.9          18.3          3 \r\n 1983          254           14.665        23.3          8.3           0 \r\n 1983          255           14.837        22.8          12.8          0 \r\n 1983          256           17.547        20.6          6.1           0 \r\n 1983          257           16.421        21.7          10            0 \r\n 1983          258           9.626         19.4          11.1          20.8 \r\n 1983          259           8.427         18.3          10.6          1.5 \r\n 1983          260           17.416        27.8          9.4           0 \r\n 1983          261           15.328        29.4          16.7          0 \r\n 1983          262           12.82         29.4          11.1          21.1 \r\n 1983          263           14.377        28.3          5.6           24.4 \r\n 1983          264           14.1          10.6          0.6           0 \r\n 1983          265           13.85         11.7          1.1           0 \r\n 1983          266           16.867        15.6         -1.1           0 \r\n 1983          267           17.004        21.1          4.4           0 \r\n 1983          268           14.691        25            10            0 \r\n 1983          269           15.786        27.2          9.4           0 \r\n 1983          270           15.246        28.3          12.2          0 \r\n 1983          271           13.917        30            13.9          0 \r\n 1983          272           12.311        28.3          15.6          0 \r\n 1983          273           13.536        27.2          11.7          0 \r\n 1983          274           14.2          28.9          10.6          0 \r\n 1983          275           12.897        31.1          15            0 \r\n 1983          276           10.133        30            12.8          31.2 \r\n 1983          277           10.962        16.1          6.1           0 \r\n 1983          278           13.441        22.2          5             0 \r\n 1983          279           14.104        20.6          5             0 \r\n 1983          280           11.516        20.6          10            0 \r\n 1983          281           11.802        16.1          6.1           0 \r\n 1983          282           12.572        15.6          2.8           0 \r\n 1983          283           8.14          18.3          7.2           18.8 \r\n 1983          284           6.868         18.3          9.4           29 \r\n 1983          285           8.069         10            0             0 \r\n 1983          286           9.708         7.2          -2.2           2.3 \r\n 1983          287           8.623         15           -1.1           0 \r\n 1983          288           7.623         16.1          8.9           8.6 \r\n 1983          289           7.308         16.1          3.3           0 \r\n 1983          290           12.139        15.6          2.2           0 \r\n 1983          291           11.171        15.6          2.8           0 \r\n 1983          292           6.015         13.3          6.7           20.3 \r\n 1983          293           2.068         8.9           5             10.4 \r\n 1983          294           3.163         9.4           6.1           10.9 \r\n 1983          295           3.041         11.1          7.8           23.9 \r\n 1983          296           8.197         15.6          5.6           0 \r\n 1983          297           10.849        15            1.1           0 \r\n 1983          298           10.511        13.9          0.6           0 \r\n 1983          299           10.988        17.2          3.3           0 \r\n 1983          300           11.715        24.4          5.6           0 \r\n 1983          301           10.295        22.8          12.2          0 \r\n 1983          302           10.668        13.9         -0.6           0 \r\n 1983          303           7.034         10.6          5.6           3 \r\n 1983          304           5.041         11.7          6.1           0 \r\n 1983          305           5.342         18.3          10.6          12.7 \r\n 1983          306           5.225         17.8          12.8          0 \r\n 1983          307           5.751         16.7          5.6           1.5 \r\n 1983          308           6.786         7.8          -0.6           2.8 \r\n 1983          309           9.227         11.7         -1.1           0 \r\n 1983          310           6.607         11.7          7.8           0 \r\n 1983          311           8.315         13.3          3.3           0 \r\n 1983          312           5.64          12.8          7.2           0.5 \r\n 1983          313           5.189         11.1          1.7           21.6 \r\n 1983          314           3.463         2.2          -0.6           0.5 \r\n 1983          315           4.691         2.8          -2.2           0 \r\n 1983          316           3.574         2.2          -1.7           3 \r\n 1983          317           3.207         3.3          -0.6           0 \r\n 1983          318           5.087         6.7           2.8           0 \r\n 1983          319           3.871         5             1.1           0 \r\n 1983          320           6.679         4.4          -3.3           0 \r\n 1983          321           8.649         8.9          -3.3           0 \r\n 1983          322           8.649         11.1         -0.6           0 \r\n 1983          323           5.527         15.6          8.9           39.4 \r\n 1983          324           7.803         14.4          2.2           0 \r\n 1983          325           6.828         6.1          -1.1           0 \r\n 1983          326           5.256         3.9           0             7.6 \r\n 1983          327           4.505         2.8          -5.6           13.2 \r\n 1983          328           4.827        -1.1          -6.7           0 \r\n 1983          329           9.333         2.2          -12.2          0 \r\n 1983          330           7.857         1.7          -3.3           0 \r\n 1983          331           2.654         0.6           0             21.8 \r\n 1983          332           3.079         0.6          -2.8           12.4 \r\n 1983          333           5.521        -1.7          -9.4           0 \r\n 1983          334           6.619        -7.8          -11.7          0 \r\n 1983          335           8.09         -5.6          -16.1          0 \r\n 1983          336           7.564        -3.9          -11.1          0 \r\n 1983          337           8.72         -3.9          -16.7          0 \r\n 1983          338           7.459         0.6          -5.6           0 \r\n 1983          339           6.549         0            -7.8           0.5 \r\n 1983          340           6.341        -6.1          -9.4           0 \r\n 1983          341           7.901        -4.4          -14.4          0 \r\n 1983          342           8.42         -5            -16.1          0 \r\n 1983          343           6.965        -4.4          -11.1          0 \r\n 1983          344           6.861        -3.3          -12.2          0 \r\n 1983          345           5.614         0.6          -3.9           0.8 \r\n 1983          346           7.92          0.6          -12.8          0 \r\n 1983          347           6.582        -1.7          -9.4           0.5 \r\n 1983          348           5.348        -0.6          -7.8           0.8 \r\n 1983          349           5.245        -3.3          -12.2          0.5 \r\n 1983          350           7.817        -11.1         -21.7          0 \r\n 1983          351           6.788        -16.7         -24.4          0.5 \r\n 1983          352           7.097        -18.9         -27.2          0 \r\n 1983          353           6.377        -22.8         -27.8          0 \r\n 1983          354           7.097        -17.2         -27.8          0 \r\n 1983          355           5.76         -11.7         -20            4.1 \r\n 1983          356           7.92         -19.4         -27.8          0 \r\n 1983          357           5.451        -23.9         -27.8          0 \r\n 1983          358           5.451        -25           -29.4          0 \r\n 1983          359           6.891        -18.9         -28.9          0 \r\n 1983          360           7.817        -9.4          -21.7          0 \r\n 1983          361           5.04         -7.2          -10            0 \r\n 1983          362           6.994        -9.4          -17.2          1.3 \r\n 1983          363           7.097        -15           -22.2          0 \r\n 1983          364           7.485        -7.8          -20.6          0 \r\n 1983          365           7.485        -3.3          -8.9           0 \r\n 1984          1             4.262        -1.1          -8.3           7.9 \r\n 1984          2             5.718        -2.8          -10.6          0 \r\n 1984          3             7.901         1.7          -10            0 \r\n 1984          4             6.237         3.9          -4.4           0 \r\n 1984          5             6.965         5.6          -5             0 \r\n 1984          6             5.778         3.9          -1.1           0 \r\n 1984          7             7.775         2.8          -5.6           0 \r\n 1984          8             7.039         1.7          -5.6           0 \r\n 1984          9             4.202        -2.2          -6.7           0 \r\n 1984          10            9.14         -5.6          -20.6          0 \r\n 1984          11            8.069        -7.2          -18.3          0 \r\n 1984          12            3.928        -7.2          -10.6          0 \r\n 1984          13            6.583        -7.8          -16.1          1 \r\n 1984          14            6.689        -10           -16.1          0 \r\n 1984          15            7.538        -7.8          -16.7          0 \r\n 1984          16            5.793        -7.8          -14.4          0 \r\n 1984          17            8.582        -11.1         -20.6          0 \r\n 1984          18            9.011        -13.9         -26.1          0 \r\n 1984          19            9.212        -12.8         -25            0 \r\n 1984          20            9.646        -17.2         -27.8          0 \r\n 1984          21            10.188       -10.6         -27.2          0 \r\n 1984          22            9.854        -1.7          -17.8          0 \r\n 1984          23            7.335         0            -6.1           1.5 \r\n 1984          24            9.087         0.6          -10            0 \r\n 1984          25            10.064        3.9          -10            0 \r\n 1984          26            8.516         2.8          -2.8           0 \r\n 1984          27            10.727       -2.2          -13.3          0 \r\n 1984          28            10.276        2.8          -8.3           0 \r\n 1984          29            8.936         0            -6.7           0.8 \r\n 1984          30            6.367        -2.8          -12.2          1.5 \r\n 1984          31            10.378        0            -13.3          0 \r\n 1984          32            10.829        4.4          -7.8           0 \r\n 1984          33            9.588         3.9          -1.1           0 \r\n 1984          34            7.974         3.3          -2.2           0 \r\n 1984          35            10.821        2.8          -7.8           0 \r\n 1984          36            13.112       -1.7          -20.6          1 \r\n 1984          37            11.156       -8.3          -21.7          0 \r\n 1984          38            12.077       -4.4          -15.6          0 \r\n 1984          39            12.657        5            -10            0 \r\n 1984          40            12.077        6.7          -2.8           0 \r\n 1984          41            9.261         4.4          -0.6           0 \r\n 1984          42            5.275         3.3           0.6           0 \r\n 1984          43            8.047         6.7           2.2           1 \r\n 1984          44            7.218         2.8           0             0 \r\n 1984          45            10.887        11.1         -1.7           0 \r\n 1984          46            12.302        13.9          2.2           0 \r\n 1984          47            7.525         12.8          3.9           3 \r\n 1984          48            6.389         4.4           0             0 \r\n 1984          49            4.822         2.8           0             10.7 \r\n 1984          50            4.744         2.8          -1.1           4.8 \r\n 1984          51            13.138        7.2          -3.9           0 \r\n 1984          52            15.099        11.1         -3.3           0 \r\n 1984          53            15.59         16.7         -0.6           0 \r\n 1984          54            14.987        14.4          0.6           0 \r\n 1984          55            11.891        6.1          -2.2           0 \r\n 1984          56            14.621        8.9          -2.2           0 \r\n 1984          57            13.497        7.8          -1.7           0 \r\n 1984          58            12.607        5            -3.3           0 \r\n 1984          59            9.329         0.6          -4.4           0 \r\n 1984          60            11.903        1.7          -7.8           0 \r\n 1984          61            12.324        6.1          -3.9           0 \r\n 1984          62            12.648        5.6          -2.8           0 \r\n 1984          63            11.675        6.7          -2.8           0 \r\n 1984          64            12.322        6.1          -2.2           5.6 \r\n 1984          65            8.287         0.6          -5             0 \r\n 1984          66            9.898        -3.9          -16.7          0 \r\n 1984          67            15.618       -4.4          -11.7          2 \r\n 1984          68            10.094       -4.4          -13.3          1.3 \r\n 1984          69            13.644       -6.7          -20.6          0 \r\n 1984          70            16.668        0            -16.1          0 \r\n 1984          71            17.003       -1.1          -14.4          0.8 \r\n 1984          72            16.469       -5            -12.8          7.1 \r\n 1984          73            7.783        -1.7          -7.8           0 \r\n 1984          74            10.465        2.2          -1.1           0 \r\n 1984          75            8.986         2.2          -2.2           0 \r\n 1984          76            9.863         0            -5.6           0 \r\n 1984          77            12.271        0.6          -4.4           6.1 \r\n 1984          78            7.284        -1.1          -5             0 \r\n 1984          79            9.019        -1.7          -4.4           3 \r\n 1984          80            6.178        -0.6          -3.9           1.8 \r\n 1984          81            6.178         1.1          -1.7           0 \r\n 1984          82            8.46          3.3          -3.3           0 \r\n 1984          83            12.2          7.2          -3.9           0 \r\n 1984          84            18.596        7.8          -3.3           0 \r\n 1984          85            18.863        9.4          -2.2           0 \r\n 1984          86            19.101        8.9           0             0 \r\n 1984          87            15.522        5             1.1           2 \r\n 1984          88            8.423         8.9           0.6           0 \r\n 1984          89            13.218        7.2          -2.2           0 \r\n 1984          90            18.189        6.1          -3.3           0 \r\n 1984          91            16.986        8.3          -3.3           0 \r\n 1984          92            18.638        10.6         -2.2           0 \r\n 1984          93            23.174        10            2.8           2.3 \r\n 1984          94            13.878        8.9           0             23.9 \r\n 1984          95            11.811        8.9           0.6           0 \r\n 1984          96            10.046        13.3          1.1           0 \r\n 1984          97            20.382        15            0.6           0 \r\n 1984          98            22.16         15            3.9           0.8 \r\n 1984          99            20.397        10            5             14 \r\n 1984          100           10.336        8.3           3.9           2 \r\n 1984          101           7.914         12.8          6.1           0 \r\n 1984          102           14.579        12.2          6.7           0.8 \r\n 1984          103           15.412        12.8          8.9           11.9 \r\n 1984          104           10.351        8.9           4.4           5.3 \r\n 1984          105           9.791         8.3           5.6           3.8 \r\n 1984          106           7.468         13.9          5             2 \r\n 1984          107           17.754        15.6          6.1           0 \r\n 1984          108           20.155        13.9          3.3           0 \r\n 1984          109           23.277        15            0.6           0 \r\n 1984          110           24.017        13.9          0             0 \r\n 1984          111           23.589        14.4          3.3           0 \r\n 1984          112           21.887        13.3          5             23.9 \r\n 1984          113           16.703        5.6           0             11.4 \r\n 1984          114           12.472        14.4          1.1           0.5 \r\n 1984          115           15.082        18.3          4.4           0 \r\n 1984          116           24.098        20.6          5             0 \r\n 1984          117           24.39         27.2          13.9          0 \r\n 1984          118           22.209        26.7          13.3          19.3 \r\n 1984          119           16.62         15            2.2           0 \r\n 1984          120           23.238        14.4          4.4           42.4 \r\n 1984          121           20.142        8.3           1.1           9.1 \r\n 1984          122           13.648        15            1.7           0 \r\n 1984          123           23.799        16.1          5.6           3.8 \r\n 1984          124           16.799        15            6.1           2 \r\n 1984          125           20.831        12.8          2.2           0 \r\n 1984          126           22.24         18.3          3.9           1.3 \r\n 1984          127           24.433        18.3          10            0 \r\n 1984          128           23.181        14.4          6.7           2.3 \r\n 1984          129           15.296        11.7          0.6           0 \r\n 1984          130           23.974        17.2          3.3           0 \r\n 1984          131           24.45         22.2          6.7           0 \r\n 1984          132           25.72         22.8          11.7          2 \r\n 1984          133           22.697        22.2          7.8           0 \r\n 1984          134           26.053        24.4          13.9          0 \r\n 1984          135           22.217        21.7          6.7           0 \r\n 1984          136           26.229        21.7          11.1          0 \r\n 1984          137           21.562        22.8          10            0 \r\n 1984          138           21.562        30            10.6          0 \r\n 1984          139           24.946        29.4          18.9          1 \r\n 1984          140           22.192        22.8          15.6          12.7 \r\n 1984          141           12.311        25.6          11.7          6.9 \r\n 1984          142           17.61         26.1          11.7          0 \r\n 1984          143           23.969        25.6          14.4          8.6 \r\n 1984          144           16.306        22.2          7.8           0 \r\n 1984          145           18.875        26.1          18.3          0 \r\n 1984          146           22.158        20            9.4           33 \r\n 1984          147           17.398        16.7          5.6           0 \r\n 1984          148           22.798        17.2          8.9           3 \r\n 1984          149           18.503        16.7          6.7           51.6 \r\n 1984          150           14.703        16.7          5             0 \r\n 1984          151           24.45         20.6          5.6           0 \r\n 1984          152           26.267        25.6          9.4           0 \r\n 1984          153           26.804        27.8          16.7          0 \r\n 1984          154           25.315        26.7          12.8          2 \r\n 1984          155           20.858        26.1          11.7          0 \r\n 1984          156           28.346        25.6          15.6          6.3 \r\n 1984          157           18.006        30            17.8          1.8 \r\n 1984          158           17.763        30            19.4          0 \r\n 1984          159           21.352        27.2          19.4          0 \r\n 1984          160           17.763        27.8          17.2          2.5 \r\n 1984          161           15.969        28.3          16.7          14.7 \r\n 1984          162           15.431        23.3          13.9          1 \r\n 1984          163           14.175        25.6          11.7          0 \r\n 1984          164           24.94         25.6          18.3          8.1 \r\n 1984          165           16.613        26.7          20            53.9 \r\n 1984          166           14.807        27.2          15.6          0 \r\n 1984          167           22.933        26.7          15.6          26.7 \r\n 1984          168           13.724        28.9          17.2          31.5 \r\n 1984          169           15.168        28.9          20.6          5.3 \r\n 1984          170           15.529        27.8          18.9          0 \r\n 1984          171           16.613        28.3          15.6          0 \r\n 1984          172           26.183        28.3          17.2          0 \r\n 1984          173           24.377        28.3          18.3          1.8 \r\n 1984          174           21.488        30            17.8          9.4 \r\n 1984          175           19.863        30            17.2          0 \r\n 1984          176           24.919        27.2          14.4          0 \r\n 1984          177           26.003        30            16.7          0 \r\n 1984          178           26.544        32.2          18.9          0 \r\n 1984          179           24.739        31.7          15.6          1.3 \r\n 1984          180           21.127        27.8          14.4          0 \r\n 1984          181           26.364        27.8          15            0.8 \r\n 1984          182           24.919        25.6          13.9          0 \r\n 1984          183           28.162        26.1          13.3          0 \r\n 1984          184           27.456        27.8          13.9          0 \r\n 1984          185           27.268        27.8          16.7          5.8 \r\n 1984          186           18.993        29.4          17.8          0 \r\n 1984          187           18.805        28.9          14.4          0 \r\n 1984          188           28.02         25.6          13.9          6.6 \r\n 1984          189           20.874        23.9          9.4           0 \r\n 1984          190           28.774        31.1          15.6          0 \r\n 1984          191           25.971        33.3          25            0 \r\n 1984          192           23.356        33.3          26.1          18 \r\n 1984          193           16.256        28.9          15.6          1.5 \r\n 1984          194           20.74         30            16.7          0 \r\n 1984          195           25.618        30            16.7          0 \r\n 1984          196           25.061        33.3          19.4          0 \r\n 1984          197           24.133        30            14.4          12.9 \r\n 1984          198           20.606        28.9          14.4          0 \r\n 1984          199           26.19         28.9          15            9.1 \r\n 1984          200           18.812        25.6          12.8          0 \r\n 1984          201           26.005        30            15            0 \r\n 1984          202           24.899        29.4          19.4          5.6 \r\n 1984          203           16.124        30.6          18.3          0 \r\n 1984          204           22.72         32.8          21.1          0 \r\n 1984          205           21.621        32.8          20            0 \r\n 1984          206           22.025        32.8          19.4          0 \r\n 1984          207           22.571        27.8          18.3          0 \r\n 1984          208           17.292        24.4          15.6          26.4 \r\n 1984          209           13.381        25            16.1          0 \r\n 1984          210           16.454        25.6          13.9          0 \r\n 1984          211           23.868        25.6          13.3          0 \r\n 1984          212           24.786        26.7          12.8          0 \r\n 1984          213           24.607        28.3          13.3          0 \r\n 1984          214           26.381        28.9          15.6          0 \r\n 1984          215           21.92         29.4          19.4          0 \r\n 1984          216           18.914        30            16.7          0 \r\n 1984          217           22.474        31.1          20            0 \r\n 1984          218           21.245        32.2          19.4          0 \r\n 1984          219           20.367        33.3          19.4          0 \r\n 1984          220           21.798        33.3          20.6          2 \r\n 1984          221           20.926        32.2          18.9          0 \r\n 1984          222           17.319        31.7          17.8          0 \r\n 1984          223           22.688        29.4          15            0 \r\n 1984          224           24.939        28.9          15            0 \r\n 1984          225           23.219        28.9          15.6          0 \r\n 1984          226           22.015        28.9          14.4          0 \r\n 1984          227           22.375        30.6          16.1          0 \r\n 1984          228           22.545        32.2          15.6          0 \r\n 1984          229           22.557        32.2          20.6          0 \r\n 1984          230           20.692        27.2          21.1          2.8 \r\n 1984          231           14.652        27.8          18.3          1 \r\n 1984          232           15.831        27.8          12.8          0 \r\n 1984          233           22.24         27.2          12.2          0 \r\n 1984          234           23.076        26.7          16.7          2 \r\n 1984          235           19.731        25.6          15.6          0 \r\n 1984          236           19.922        23.3          8.3           0 \r\n 1984          237           24.239        23.9          10            0 \r\n 1984          238           22.252        28.3          11.1          0 \r\n 1984          239           21.922        32.2          17.2          0 \r\n 1984          240           20.127        36.1          20.6          0 \r\n 1984          241           19.963        36.1          15.6          0 \r\n 1984          242           23.066        36.1          17.8          0 \r\n 1984          243           21.767        34.4          13.3          0 \r\n 1984          244           23.541        30.6          10            0 \r\n 1984          245           23.541        36.1          22.2          0 \r\n 1984          246           18.228        33.9          16.7          7.4 \r\n 1984          247           13.189        22.2          11.1          0 \r\n 1984          248           14.415        25.6          10.6          4.1 \r\n 1984          249           17.503        24.4          7.2           0 \r\n 1984          250           19.415        21.7          12.8          0 \r\n 1984          251           16.35         32.8          20            0 \r\n 1984          252           14.488        31.1          12.8          14.2 \r\n 1984          253           13.763        24.4          11.7          1.8 \r\n 1984          254           11.214        21.1          11.7          29.2 \r\n 1984          255           9.776         23.9          10.6          0 \r\n 1984          256           10.557        32.8          19.4          0 \r\n 1984          257           15.408        32.8          17.2          2.8 \r\n 1984          258           14.864        21.1          11.7          0.5 \r\n 1984          259           11.749        17.8          4.4           0 \r\n 1984          260           16.995        18.9          3.3           0 \r\n 1984          261           17.978        22.8          5             0 \r\n 1984          262           17.418        27.2          10            0 \r\n 1984          263           16.582        32.8          11.1          0 \r\n 1984          264           17.418        32.8          13.3          0 \r\n 1984          265           16.589        28.3          11.1          0 \r\n 1984          266           15.633        27.8          17.2          0 \r\n 1984          267           13.165        26.1          12.8          0 \r\n 1984          268           12.787        28.3          17.8          1.3 \r\n 1984          269           13.331        18.3          4.4           39.6 \r\n 1984          270           11.738        10           -0.6           0 \r\n 1984          271           13.897        11.1          3.9           0 \r\n 1984          272           11.241        10.6          3.9           0.5 \r\n 1984          273           9.367         15           -1.7           0 \r\n 1984          274           15.66         16.7          1.1           0 \r\n 1984          275           16.191        19.4          0             0 \r\n 1984          276           16.187        23.3          5             0 \r\n 1984          277           15.792        22.8          8.9           0 \r\n 1984          278           14.746        22.2          6.1           5.1 \r\n 1984          279           14.355        20.6          11.7          0 \r\n 1984          280           8.54          20            13.3          5.1 \r\n 1984          281           5.305         19.4          13.3          5.3 \r\n 1984          282           4.234         18.9          8.9           0 \r\n 1984          283           7.312         21.1          8.9           0 \r\n 1984          284           11.065        22.8          11.7          0 \r\n 1984          285           10.556        19.4          13.9          2.5 \r\n 1984          286           5.421         22.8          15            0 \r\n 1984          287           5.799         22.8          13.3          0 \r\n 1984          288           8.373         19.4          14.4          1.3 \r\n 1984          289           5.874         18.3          7.8           24.1 \r\n 1984          290           5.698         8.9           5             22.4 \r\n 1984          291           6.317         13.3          0             0 \r\n 1984          292           8.839         12.2          7.8           10.4 \r\n 1984          293           6.629         13.3          5             1.3 \r\n 1984          294           6.569         13.9          3.3           0 \r\n 1984          295           10.219        12.2          1.7           0 \r\n 1984          296           10.34         12.2          0.6           0.5 \r\n 1984          297           10.728        11.1         -2.2           0 \r\n 1984          298           12.054        13.9         -1.7           0 \r\n 1984          299           11.705        12.2          6.1           4.3 \r\n 1984          300           6.808         19.4          3.3           0 \r\n 1984          301           7.1           20            13.9          2.3 \r\n 1984          302           9.348         14.4          0.6           0 \r\n 1984          303           8.323         15.6         -2.8           0 \r\n 1984          304           10.902        10.6          0.6           0 \r\n 1984          305           10.199        12.2         -2.2           7.1 \r\n 1984          306           9.522         16.7         -3.9           28.4 \r\n 1984          307           8.361         3.3          -7.8           0 \r\n 1984          308           8.626         13.3          0.6           0 \r\n 1984          309           9.431         16.1          2.2           0 \r\n 1984          310           9.568         8.9          -2.2           0 \r\n 1984          311           9.91          16.1         -4.4           0 \r\n 1984          312           10.024        17.2          6.7           0 \r\n 1984          313           9.25          18.3          1.7           0 \r\n 1984          314           9.25          15            8.3           10.9 \r\n 1984          315           5.697         11.1         -1.1           6.3 \r\n 1984          316           5.92          0            -3.9           0 \r\n 1984          317           4.021         6.7          -4.4           0 \r\n 1984          318           7.078         13.9          0.6           0 \r\n 1984          319           7.852         15.6          6.1           0 \r\n 1984          320           6.967         13.3          0.6           0 \r\n 1984          321           8.321         8.3          -6.1           0 \r\n 1984          322           7.883         4.4          -3.3           0 \r\n 1984          323           6.679         3.9          -4.4           0 \r\n 1984          324           4.986         1.1          -7.8           0 \r\n 1984          325           6.394         1.7          -10            0 \r\n 1984          326           7.153         5.6          -8.3           0 \r\n 1984          327           7.295         11.1         -3.3           0 \r\n 1984          328           7.08          10.6         -5.6           0 \r\n 1984          329           7.938         15.6         -2.2           0 \r\n 1984          330           7.938         10.6          0             0 \r\n 1984          331           6.795         15            6.1           1.5 \r\n 1984          332           4.884         10           -3.3           5.1 \r\n 1984          333           5.202         0            -7.2           0 \r\n 1984          334           3.61          5            -3.3           0 \r\n 1984          335           4.833         2.2          -3.3           0 \r\n 1984          336           5.358         2.2          -6.7           0 \r\n 1984          337           6.304         0.6          -5.6           0 \r\n 1984          338           5.463        -4.4          -12.8          0 \r\n 1984          339           6.829        -4.4          -15            0 \r\n 1984          340           6.757        -0.6          -12.8          0 \r\n 1984          341           6.965        -6.1          -19.4          0 \r\n 1984          342           8.316         14.4         -10            0 \r\n 1984          343           8.836         11.1         -6.7           0 \r\n 1984          344           8.316         6.1          -1.1           0 \r\n 1984          345           6.653         5            -2.8           0 \r\n 1984          346           5.821         10.6         -2.8           0 \r\n 1984          347           5.863         8.9          -7.2           0 \r\n 1984          348           6.685        -0.6          -11.1          0 \r\n 1984          349           5.143         0            -3.9           15.2 \r\n 1984          350           3.188         2.8          -5.6           2.3 \r\n 1984          351           5.657         9.4          -2.2           3.8 \r\n 1984          352           5.245        -1.7          -7.2           0 \r\n 1984          353           5.863        -5.6          -13.3          0 \r\n 1984          354           5.965        -2.2          -9.4           0 \r\n 1984          355           5.245         1.1          -10            0 \r\n 1984          356           6.685         0.6          -3.9           15 \r\n 1984          357           3.908         0.6          -11.7          0 \r\n 1984          358           5.451         0            -6.1           0 \r\n 1984          359           6.377        -5            -16.7          0 \r\n 1984          360           7.714        -1.7          -18.3          0 \r\n 1984          361           7.817         0.6          -8.3           3 \r\n 1984          362           4.834         6.7           0             3.8 \r\n 1984          363           3.805         18.9          4.4           0 \r\n 1984          364           7.097         16.7         -9.4           0 \r\n 1984          365           8.836        -2.8          -11.7          0 \r\n 1984          366           5.406        -2.2          -10.6          0 \r\n 1985          1             3.638        -8.3          -15            1.3 \r\n 1985          2             7.485        -8.3          -20.6          0 \r\n 1985          3             8.005        -5.6          -18.3          0 \r\n 1985          4             8.212         2.8          -12.8          0 \r\n 1985          5             7.797         3.3          -8.3           0 \r\n 1985          6             7.144         6.1          -1.7           0 \r\n 1985          7             5.568         3.3          -3.3           0 \r\n 1985          8             8.615         1.1          -15.6          0 \r\n 1985          9             4.833        -5            -9.4           1.8 \r\n 1985          10            3.887        -5            -12.2          3.8 \r\n 1985          11            8.069        -6.7          -18.9          0.8 \r\n 1985          12            7.326        -8.9          -19.4          0 \r\n 1985          13            8.387         1.1          -11.1          0 \r\n 1985          14            8.494         1.7          -11.7          0 \r\n 1985          15            7.22         -8.3          -17.8          0 \r\n 1985          16            5.149        -5            -10.6          0 \r\n 1985          17            7.616        -1.1          -12.8          0 \r\n 1985          18            8.796         2.2          -11.7          0 \r\n 1985          19            10.188       -11.7         -28.9          0 \r\n 1985          20            8.345        -17.8         -29.4          0 \r\n 1985          21            10.079       -2.8          -18.3          0 \r\n 1985          22            7.883        -2.8          -11.1          0 \r\n 1985          23            7.992        -1.7          -11.7          0 \r\n 1985          24            6.679         0            -3.3           0 \r\n 1985          25            11.28         0.6          -19.4          0 \r\n 1985          26            10.396        0            -17.2          0 \r\n 1985          27            8.626        -1.7          -7.2           0 \r\n 1985          28            10.276       -3.9          -16.7          0 \r\n 1985          29            8.936        -1.7          -11.1          0 \r\n 1985          30            11.282       -1.7          -20.6          1.3 \r\n 1985          31            10.491       -15.6         -26.7          0 \r\n 1985          32            10.378       -13.9         -23.3          0 \r\n 1985          33            11.168       -8.9          -22.2          0 \r\n 1985          34            10.708       -9.4          -18.9          0 \r\n 1985          35            7.974        -10           -17.2          1.5 \r\n 1985          36            7.016        -10.6         -20            2 \r\n 1985          37            11.846       -10.6         -23.9          0 \r\n 1985          38            12.422       -10           -22.8          0 \r\n 1985          39            11.148       -8.9          -17.8          0 \r\n 1985          40            7.896        -5.6          -11.1          0 \r\n 1985          41            3.634        -5.6          -6.7           0.5 \r\n 1985          42            7.034        -6.1          -14.4          2 \r\n 1985          43            12.307       -6.1          -17.2          0 \r\n 1985          44            11.952       -4.4          -12.8          0 \r\n 1985          45            11.005       -5            -15            0 \r\n 1985          46            13.377       -6.7          -18.3          0 \r\n 1985          47            14.452        5            -10.6          0 \r\n 1985          48            12.175        5.6          -6.1           0 \r\n 1985          49            9.041         3.3           0             0 \r\n 1985          50            12.408        5.6          -1.1           0 \r\n 1985          51            10.462        4.4          -3.3           0 \r\n 1985          52            7.243         7.8          -0.6           7.9 \r\n 1985          53            7.366         6.7          -1.1           0 \r\n 1985          54            4.831         3.9          -0.6           8.4 \r\n 1985          55            3.468         0.6          -1.7           1.3 \r\n 1985          56            9.123         6.7          -0.6           0 \r\n 1985          57            12.247        6.7          -2.8           0 \r\n 1985          58            15.255        4.4          -7.2           0 \r\n 1985          59            16.642        11.7         -7.2           0 \r\n 1985          60            12.432        10.6          2.2           0 \r\n 1985          61            13.081        8.9          -2.8           0 \r\n 1985          62            5.297         1.1          -0.6           19.1 \r\n 1985          63            9.16          5            -4.4           12.7 \r\n 1985          64            11.014        0            -7.8           0 \r\n 1985          65            12.648        4.4          -3.3           0 \r\n 1985          66            14.738        12.2          0             0 \r\n 1985          67            15.64         11.7         -0.6           0 \r\n 1985          68            16.971        15.6         -2.2           0 \r\n 1985          69            17.115        16.1          0             0 \r\n 1985          70            15.325        13.3          2.2           0 \r\n 1985          71            14.552        6.7          -2.2           0 \r\n 1985          72            9.927         8.3          -1.1           2.8 \r\n 1985          73            14.104        7.8          -1.1           0 \r\n 1985          74            17.63         12.8         -3.3           0 \r\n 1985          75            16.858        12.2          0.6           0 \r\n 1985          76            17.432        11.7         -2.2           0 \r\n 1985          77            18.616        18.9         -1.7           0 \r\n 1985          78            18.037        18.3          3.3           0 \r\n 1985          79            18.767        16.7          1.1           0 \r\n 1985          80            18.65         15.6         -0.6           0 \r\n 1985          81            18.683        13.3         -2.8           0 \r\n 1985          82            11.252        10            2.2           7.1 \r\n 1985          83            8.054         6.1          -1.1           0 \r\n 1985          84            8.715         7.2           1.1           0 \r\n 1985          85            17.669        21.7          1.1           0 \r\n 1985          86            12.995        18.3          5.6           6.1 \r\n 1985          87            10.468        12.2          5.6           1 \r\n 1985          88            12.49         10            0.6           0 \r\n 1985          89            8.003         5             0             0 \r\n 1985          90            5.744         0.6          -3.3           9.1 \r\n 1985          91            13.865        2.8          -6.1           0 \r\n 1985          92            22.501        15           -4.4           0 \r\n 1985          93            18.459        15            1.7           0 \r\n 1985          94            15.748        13.9          2.8           1 \r\n 1985          95            8.96          7.8           2.2           0 \r\n 1985          96            15.868        9.4          -1.1           0 \r\n 1985          97            16.552        9.4          -1.1           0 \r\n 1985          98            16.952        6.7          -2.2           0 \r\n 1985          99            21.086        13.3         -5             0 \r\n 1985          100           19.578        18.3          4.4           0 \r\n 1985          101           21.799        22.2          1.7           0 \r\n 1985          102           20.827        27.8          12.8          0 \r\n 1985          103           14.967        24.4          8.3           6.3 \r\n 1985          104           13.288        10            3.9           0 \r\n 1985          105           22.263        22.8          1.7           0 \r\n 1985          106           21.981        24.4          8.3           0 \r\n 1985          107           22.851        30            7.8           0 \r\n 1985          108           20.013        32.2          17.2          0 \r\n 1985          109           18.728        31.1          16.7          0 \r\n 1985          110           17.727        28.3          17.8          0 \r\n 1985          111           17.999        28.9          18.3          0 \r\n 1985          112           13.823        28.3          15            7.6 \r\n 1985          113           10.732        19.4          12.2          7.6 \r\n 1985          114           14.792        20            7.2           1 \r\n 1985          115           14.313        20            7.2           5.1 \r\n 1985          116           10.807        19.4          6.7           2 \r\n 1985          117           17.796        17.8          8.3           0 \r\n 1985          118           21.032        21.7          6.7           0 \r\n 1985          119           22.797        25.6          7.2           0 \r\n 1985          120           19.253        24.4          13.3          0 \r\n 1985          121           16.521        22.8          11.1          0.8 \r\n 1985          122           25.199        22.8          5             0 \r\n 1985          123           25.354        26.1          6.1           0 \r\n 1985          124           23.493        27.8          11.1          0 \r\n 1985          125           19.891        26.7          12.8          9.4 \r\n 1985          126           15.506        21.7          9.4           0 \r\n 1985          127           23.181        24.4          8.9           0 \r\n 1985          128           25.388        28.9          8.9           0 \r\n 1985          129           23.497        30            12.8          0 \r\n 1985          130           20.64         29.4          15            0 \r\n 1985          131           11.907        23.9          15            7.1 \r\n 1985          132           13.426        21.7          14.4          0 \r\n 1985          133           21.898        20.6          7.2           0 \r\n 1985          134           16.943        23.9          12.8          2.5 \r\n 1985          135           19.631        18.3          8.9           0.8 \r\n 1985          136           11.103        15            9.4           1 \r\n 1985          137           21.884        21.1          7.8           0.8 \r\n 1985          138           26.89         27.2          8.9           0 \r\n 1985          139           26.566        28.9          10.6          0 \r\n 1985          140           18.628        27.2          11.1          1 \r\n 1985          141           26.089        22.8          6.7           0 \r\n 1985          142           25.926        24.4          8.3           0 \r\n 1985          143           24.295        24.4          9.4           0 \r\n 1985          144           17.234        26.1          13.3          2 \r\n 1985          145           25.276        30            12.2          0 \r\n 1985          146           23.963        30            15.6          0 \r\n 1985          147           25.937        29.4          12.2          1 \r\n 1985          148           22.633        23.9          11.1          0 \r\n 1985          149           23.954        27.8          12.2          0 \r\n 1985          150           16.685        29.4          16.7          5.6 \r\n 1985          151           23.624        29.4          16.7          0 \r\n 1985          152           26.804        26.1          8.9           0 \r\n 1985          153           21.393        25            6.7           15.2 \r\n 1985          154           27.633        21.1          5.6           0 \r\n 1985          155           20.323        21.7          11.7          1.5 \r\n 1985          156           26.385        25            9.4           0 \r\n 1985          157           27.273        25            11.1          0 \r\n 1985          158           29.067        31.1          11.1          0 \r\n 1985          159           28.529        38.3          18.3          0 \r\n 1985          160           28.888        37.8          18.3          0 \r\n 1985          161           21.89         27.2          14.4          0 \r\n 1985          162           13.098        19.4          11.1          14 \r\n 1985          163           15.251        18.9          8.9           7.1 \r\n 1985          164           26.906        22.8          7.2           0 \r\n 1985          165           14.807        22.8          13.9          2.5 \r\n 1985          166           15.71         26.1          13.3          1.5 \r\n 1985          167           23.655        25.6          13.9          2.5 \r\n 1985          168           24.919        26.1          13.3          0 \r\n 1985          169           21.127        25.6          13.9          0.5 \r\n 1985          170           23.836        23.3          10.6          0 \r\n 1985          171           27.989        28.3          9.4           0 \r\n 1985          172           22.03         31.1          20            0 \r\n 1985          173           28.531        28.9          11.1          0 \r\n 1985          174           21.488        28.9          18.9          0 \r\n 1985          175           25.642        30.6          14.4          0 \r\n 1985          176           23.113        32.8          20            0 \r\n 1985          177           18.78         31.1          19.4          39.6 \r\n 1985          178           15.891        23.3          15            1.5 \r\n 1985          179           24.377        22.8          11.7          0 \r\n 1985          180           23.475        24.4          12.8          0 \r\n 1985          181           25.28         27.2          14.4          0 \r\n 1985          182           26.402        28.3          17.2          0 \r\n 1985          183           24.071        28.9          16.1          0 \r\n 1985          184           30.276        30            13.3          0 \r\n 1985          185           27.268        31.1          17.8          0.8 \r\n 1985          186           28.96         28.3          13.9          0 \r\n 1985          187           28.584        30.6          15.6          0 \r\n 1985          188           27.456        33.9          17.8          0 \r\n 1985          189           24.29         33.3          20.6          0 \r\n 1985          190           23.169        33.9          20.6          0 \r\n 1985          191           29.895        33.3          14.4          0 \r\n 1985          192           25.971        30            16.7          0 \r\n 1985          193           21.674        30            19.4          2 \r\n 1985          194           21.163        30            16.7          0 \r\n 1985          195           24.69         32.8          18.9          0 \r\n 1985          196           27.289        30            16.1          0 \r\n 1985          197           29.145        27.8          12.8          0 \r\n 1985          198           28.034        30.6          15            0 \r\n 1985          199           22.317        30.6          20            0 \r\n 1985          200           14.386        29.4          20.6          11.9 \r\n 1985          201           18.075        26.1          15            0 \r\n 1985          202           25.285        29.4          15.6          0 \r\n 1985          203           27.851        29.4          12.2          0 \r\n 1985          204           27.118        28.3          13.3          0 \r\n 1985          205           23.663        28.3          17.2          4.1 \r\n 1985          206           14.198        28.9          16.7          8.4 \r\n 1985          207           26.03         27.8          15            0 \r\n 1985          208           25.676        28.9          13.9          0 \r\n 1985          209           25.315        29.4          13.9          0 \r\n 1985          210           21.698        28.9          16.7          0 \r\n 1985          211           11.854        24.4          16.7          7.9 \r\n 1985          212           8.262         21.1          15.6          0.5 \r\n 1985          213           22.502        24.4          11.1          0 \r\n 1985          214           25.278        26.1          12.2          0 \r\n 1985          215           19.975        25.6          16.1          1.3 \r\n 1985          216           17.909        23.9          16.7          0 \r\n 1985          217           20.367        31.7          17.8          0 \r\n 1985          218           24.756        32.8          16.7          0 \r\n 1985          219           19.531        32.2          16.7          4.3 \r\n 1985          220           25.46         30            13.9          0 \r\n 1985          221           24.246        33.9          17.2          0 \r\n 1985          222           20.436        33.9          11.1          17.5 \r\n 1985          223           25.111        25.6          8.9           0 \r\n 1985          224           21.671        29.4          18.3          0 \r\n 1985          225           24.595        28.3          13.3          0 \r\n 1985          226           15.372        27.8          15.6          9.7 \r\n 1985          227           16.397        24.4          11.7          1.3 \r\n 1985          228           20.692        26.7          15.6          0 \r\n 1985          229           14.416        26.1          16.1          7.6 \r\n 1985          230           24.083        23.9          8.9           0 \r\n 1985          231           21.557        23.9          13.3          1.3 \r\n 1985          232           23.41         23.3          8.9           0 \r\n 1985          233           19.731        25            11.7          0 \r\n 1985          234           12.207        22.8          16.1          62.2 \r\n 1985          235           10.957        25.6          16.7          2.5 \r\n 1985          236           15.44         25.6          12.2          1.3 \r\n 1985          237           15.823        22.8          13.9          1 \r\n 1985          238           18.625        22.2          11.7          0 \r\n 1985          239           21.763        26.1          11.1          0 \r\n 1985          240           20.454        27.2          14.4          0 \r\n 1985          241           12.508        26.7          18.3          18.5 \r\n 1985          242           10.883        26.7          17.8          0.5 \r\n 1985          243           18.382        29.4          14.4          0 \r\n 1985          244           15.963        29.4          20            0 \r\n 1985          245           18.228        31.7          16.1          0 \r\n 1985          246           16.597        31.7          18.9          0 \r\n 1985          247           15.15         29.4          19.4          0 \r\n 1985          248           11.326        31.1          18.9          7.6 \r\n 1985          249           15.62         33.3          20.6          0 \r\n 1985          250           15.62         34.4          21.7          0 \r\n 1985          251           16.081        33.3          20            0 \r\n 1985          252           18.979        32.8          14.4          0 \r\n 1985          253           8.626         20            14.4          0.5 \r\n 1985          254           12.795        22.2          14.4          0 \r\n 1985          255           14.124        22.2          11.1          1.8 \r\n 1985          256           8.56          18.3          9.4           0 \r\n 1985          257           15.43         20.6          9.4           0 \r\n 1985          258           19.535        22.8          5             0 \r\n 1985          259           16.714        25.6          13.9          0 \r\n 1985          260           14.466        29.4          18.3          0 \r\n 1985          261           15.05         31.7          19.4          0 \r\n 1985          262           13.935        32.2          21.1          0 \r\n 1985          263           18.109        30.6          12.2          0 \r\n 1985          264           6.912         15.6          8.9           8.1 \r\n 1985          265           8.228         18.9          10.6          1.8 \r\n 1985          266           10.422        18.3          6.1           31 \r\n 1985          267           10.066        12.8          2.8           0.8 \r\n 1985          268           9.93          15            6.7           12.4 \r\n 1985          269           14.976        13.9          2.2           0.5 \r\n 1985          270           17.54         21.1          1.7           0 \r\n 1985          271           16.192        20            4.4           4.8 \r\n 1985          272           6.557         5.6           3.3           25.9 \r\n 1985          273           6.105         9.4           2.2           7.1 \r\n 1985          274           15.66         13.3         -2.2           0 \r\n 1985          275           16.187        17.2          1.1           0 \r\n 1985          276           14.608        17.8          6.7           0 \r\n 1985          277           13.702        17.2          4.4           3.8 \r\n 1985          278           9.526         12.8          3.3           0 \r\n 1985          279           15.268        19.4          0             0 \r\n 1985          280           14.233        19.4          5             0 \r\n 1985          281           10.648        17.2          10            0 \r\n 1985          282           9.493         10.6          0.6           10.4 \r\n 1985          283           5.469         6.1           1.1           1.3 \r\n 1985          284           8.267         11.1          3.3           0 \r\n 1985          285           7.438         16.1          8.3           21.6 \r\n 1985          286           13.994        20            3.9           0 \r\n 1985          287           11.372        18.9          7.8           0.8 \r\n 1985          288           13.497        20            2.8           0 \r\n 1985          289           13.996        19.4          1.1           0 \r\n 1985          290           11.148        17.8          9.4           10.2 \r\n 1985          291           4.174         16.1          12.2          28.4 \r\n 1985          292           5.77          15.6          8.3           1.8 \r\n 1985          293           6.691         15            8.9           0 \r\n 1985          294           5.109         13.9          9.4           1.3 \r\n 1985          295           7.421         18.9          11.7          0 \r\n 1985          296           8.438         20.6          14.4          1.3 \r\n 1985          297           11.09         18.3          6.7           0 \r\n 1985          298           12.422        22.2          3.3           0 \r\n 1985          299           11.466        23.9          9.4           0 \r\n 1985          300           11.952        18.3          1.7           0 \r\n 1985          301           10.65         15            3.3           0 \r\n 1985          302           9.261         13.9          5             0 \r\n 1985          303           8.206         14.4          5.6           0 \r\n 1985          304           9.144         11.7          0.6           6.3 \r\n 1985          305           5.922         12.2          5             8.4 \r\n 1985          306           10.103        10           -1.1           0 \r\n 1985          307           9.086         10.6          1.1           0 \r\n 1985          308           10.466        10           -3.3           0 \r\n 1985          309           10.366        13.9         -3.3           0 \r\n 1985          310           8.885         11.1          2.8           1 \r\n 1985          311           9.568         11.7         -5             0 \r\n 1985          312           8.46          8.3          -3.3           0 \r\n 1985          313           3.948         2.2          -2.2           0 \r\n 1985          314           2.346        -1.1          -4.4           0 \r\n 1985          315           2.011        -0.6          -3.3           0 \r\n 1985          316           3.574         2.2          -0.6           0 \r\n 1985          317           2.765         2.8           0             0.8 \r\n 1985          318           5.198         2.8          -3.3           0 \r\n 1985          319           4.534         2.2          -2.2           1.3 \r\n 1985          320           2.737         2.8          -1.1           0 \r\n 1985          321           8.43          13.3         -4.4           0 \r\n 1985          322           8.321         16.7          8.9           1.8 \r\n 1985          323           10.296        14.4         -10.6          2.5 \r\n 1985          324           5.311        -7.8          -14.4          0 \r\n 1985          325           7.912        -4.4          -15.6          0 \r\n 1985          326           6.866        -2.2          -11.1          0 \r\n 1985          327           6.866        -6.7          -12.2          0 \r\n 1985          328           7.295        -7.8          -16.1          0 \r\n 1985          329           6.007        -2.2          -8.3           0 \r\n 1985          330           7.007        -1.7          -10            0 \r\n 1985          331           8.069        -9.4          -17.2          0 \r\n 1985          332           6.476        -9.4          -15            0 \r\n 1985          333           6.158        -11.7         -17.8          0.8 \r\n 1985          334           3.782        -10.6         -12.8          0 \r\n 1985          335           3.572        -11.1         -16.7          22.6 \r\n 1985          336           4.728        -15           -20            0 \r\n 1985          337           7.985        -11.7         -22.8          1.3 \r\n 1985          338           7.88         -2.8          -12.8          0.5 \r\n 1985          339           7.381        -2.8          -12.8          0 \r\n 1985          340           8.836        -6.7          -19.4          0 \r\n 1985          341           8.628         0.6          -11.1          0 \r\n 1985          342           7.901        -1.1          -10.6          0 \r\n 1985          343           5.821        -5            -10.6          0.5 \r\n 1985          344           2.807        -4.4          -7.8           1 \r\n 1985          345           7.173        -6.1          -15.6          0 \r\n 1985          346           8.228        -11.1         -22.8          0 \r\n 1985          347           8.331        -13.9         -26.7          0 \r\n 1985          348           8.537        -6.1          -25.6          0 \r\n 1985          349           8.331        -1.1          -13.3          0 \r\n 1985          350           6.582        -4.4          -13.9          0 \r\n 1985          351           5.554        -13.3         -22.8          5.3 \r\n 1985          352           8.331        -12.2         -30            0 \r\n 1985          353           8.125        -13.3         -28.3          0 \r\n 1985          354           7.714        -13.3         -23.9          1.3 \r\n 1985          355           8.64         -6.7          -27.8          0 \r\n 1985          356           7.92          2.2          -7.2           0 \r\n 1985          357           4.834         2.8          -0.6           0 \r\n 1985          358           8.845         0            -22.8          0 \r\n 1985          359           5.657        -14.4         -22.8          0 \r\n 1985          360           8.537         2.8          -14.4          0 \r\n 1985          361           7.2           0            -12.8          0 \r\n 1985          362           6.685        -3.3          -15.6          0 \r\n 1985          363           6.891        -5.6          -15.6          0 \r\n 1985          364           7.797         2.2          -15.6          0 \r\n 1985          365           6.965         0            -10.6          0 \r\n 1986          1             6.133         0.6          -12.2          0 \r\n 1986          2             5.718         0.6          -6.7           0 \r\n 1986          3             4.782         0.6          -6.1           0 \r\n 1986          4             6.445        -0.6          -12.2          1 \r\n 1986          5             7.797        -2.8          -15.6          0 \r\n 1986          6             8.195        -6.1          -18.9          0 \r\n 1986          7             7.459        -16.7         -26.1          0 \r\n 1986          8             8.72         -2.8          -21.7          0 \r\n 1986          9             7.564         2.8          -7.2           0 \r\n 1986          10            5.883         2.8          -4.4           0 \r\n 1986          11            7.007         7.2          -4.4           0 \r\n 1986          12            6.052         5            -0.6           0 \r\n 1986          13            7.22          0            -10            0 \r\n 1986          14            6.264         0            -7.2           0 \r\n 1986          15            7.326         5.6          -9.4           0 \r\n 1986          16            6.973         8.3          -1.7           0 \r\n 1986          17            6.973         7.2          -1.7           0 \r\n 1986          18            5.9           6.7           1.1           0 \r\n 1986          19            3.902         2.2          -1.7           0 \r\n 1986          20            6.394         6.1          -2.8           0 \r\n 1986          21            6.178         3.3          -2.2           0 \r\n 1986          22            7.992         0.6          -11.1          0 \r\n 1986          23            8.43          5            -8.3           0 \r\n 1986          24            7.445         6.1          -1.1           0 \r\n 1986          25            5.308         1.7          -2.2           0 \r\n 1986          26            9.843        -1.1          -20.6          0 \r\n 1986          27            8.073        -13.3         -23.9          0 \r\n 1986          28            8.713        -0.6          -13.9          0 \r\n 1986          29            9.159         1.1          -13.3          0 \r\n 1986          30            7.707        -1.7          -13.3          0 \r\n 1986          31            5.866         0            -6.1           0 \r\n 1986          32            6.317         3.9          -2.8           0 \r\n 1986          33            8.686         6.1          -5.6           0 \r\n 1986          34            5.24          2.8          -1.1           0 \r\n 1986          35            1.709         1.1          -0.6           15.5 \r\n 1986          36            1.725         0.6          -1.1           6.3 \r\n 1986          37            3.91          0            -3.9           0.8 \r\n 1986          38            4.371        -3.3          -6.7           3.3 \r\n 1986          39            10.451       -5            -13.9          0 \r\n 1986          40            12.657       -12.2         -24.4          0 \r\n 1986          41            12.895       -15           -23.9          0 \r\n 1986          42            11.84        -16.1         -22.8          0 \r\n 1986          43            12.662       -15           -25            0 \r\n 1986          44            13.963       -5.6          -25            0 \r\n 1986          45            13.372       -3.9          -16.7          0 \r\n 1986          46            13.377       -5.6          -20.6          0 \r\n 1986          47            8.361        -4.4          -8.9           0 \r\n 1986          48            7.353        -1.1          -6.1           0 \r\n 1986          49            5.304         0            -2.2           0 \r\n 1986          50            10.584        0            -7.8           0 \r\n 1986          51            13.868       -2.2          -13.3          0 \r\n 1986          52            13.381       -5            -16.1          0 \r\n 1986          53            13.503       -2.2          -9.4           0 \r\n 1986          54            10.281       -1.7          -7.8           0 \r\n 1986          55            12.51        -2.2          -8.9           0 \r\n 1986          56            15.496        2.8          -11.1          0 \r\n 1986          57            14.621        6.1          -1.1           0 \r\n 1986          58            13.742        5            -4.4           0 \r\n 1986          59            15.255       -1.7          -10            0 \r\n 1986          60            13.945        7.2          -6.7           0 \r\n 1986          61            13.297        8.3          -0.6           0 \r\n 1986          62            8.54          6.7           0.6           0 \r\n 1986          63            9.378         7.8           0             0 \r\n 1986          64            9.923         7.2          -0.6           0 \r\n 1986          65            10.998        3.3          -3.3           0 \r\n 1986          66            14.188       -2.2          -15.6          0 \r\n 1986          67            13.755        5            -9.4           0 \r\n 1986          68            14.975        19.4          0             0 \r\n 1986          69            15.213        18.3          0             0 \r\n 1986          70            11.969        3.9          -3.9           0 \r\n 1986          71            4.738         2.8           0             16.5 \r\n 1986          72            2.933         2.2           0             12.7 \r\n 1986          73            4.664         2.8           0             0 \r\n 1986          74            11.261        9.4          -0.6           0 \r\n 1986          75            14.106        7.8          -2.2           0 \r\n 1986          76            12.271        7.8          -0.6           8.1 \r\n 1986          77            9.828         10.6          4.4           10.2 \r\n 1986          78            10.522        6.7          -3.9           6.9 \r\n 1986          79            14.687        0            -11.1          0 \r\n 1986          80            15.736        7.8          -7.2           0 \r\n 1986          81            16.333        15.6          3.9           0 \r\n 1986          82            16.819        13.9          0.6           0 \r\n 1986          83            17.53         18.3          0             0 \r\n 1986          84            16.236        20.6          12.2          0 \r\n 1986          85            16.594        16.1          3.3           0 \r\n 1986          86            18.41         20           -5             0 \r\n 1986          87            17.928        27.2          8.3           0 \r\n 1986          88            18.432        32.2          8.9           0 \r\n 1986          89            18.311        30            7.2           0 \r\n 1986          90            16.131        27.2          13.9          0 \r\n 1986          91            12.501        25.6          4.4           23.4 \r\n 1986          92            16.842        15.6          2.8           2.8 \r\n 1986          93            8.623         15            13.3          19.3 \r\n 1986          94            10.454        15.6          6.1           11.2 \r\n 1986          95            9.639         17.2          7.8           0 \r\n 1986          96            16.005        18.3          3.9           0 \r\n 1986          97            16.689        20.6          7.8           0 \r\n 1986          98            18.743        18.3          5.6           0 \r\n 1986          99            19.846        14.4          0             0 \r\n 1986          100           21.244        18.3          1.1           0 \r\n 1986          101           21.66         22.8          4.4           0 \r\n 1986          102           14.024        21.1          5.6           1.3 \r\n 1986          103           16.645        16.7          1.7           0.5 \r\n 1986          104           16.086        16.7         -2.8           13.2 \r\n 1986          105           12.259        6.1          -2.2           1 \r\n 1986          106           16.768        14.4          0             0 \r\n 1986          107           14.477        14.4          4.4           0 \r\n 1986          108           7.381         14.4          8.9           13.2 \r\n 1986          109           11.866        17.8          5.6           0 \r\n 1986          110           15.44         17.2          7.2           1.8 \r\n 1986          111           16.559        11.1          0             0 \r\n 1986          112           20.303        12.8         -1.7           0 \r\n 1986          113           21.463        23.3          3.9           0 \r\n 1986          114           18.998        24.4          13.3          0 \r\n 1986          115           19.716        29.4          12.2          0 \r\n 1986          116           15.335        27.8          13.3          8.6 \r\n 1986          117           12.502        26.7          15.6          14 \r\n 1986          118           16.178        20.6          5             3.8 \r\n 1986          119           15.884        25            5.6           6.6 \r\n 1986          120           14.218        20.6          13.9          11.4 \r\n 1986          121           15.084        19.4          5.6           0 \r\n 1986          122           24.577        15.6         -0.6           0 \r\n 1986          123           20.221        18.3          8.3           0 \r\n 1986          124           19.734        26.1          12.2          0 \r\n 1986          125           20.987        28.9          15.6          0 \r\n 1986          126           24.59         27.8          10.6          0 \r\n 1986          127           24.285        26.1          8.9           0 \r\n 1986          128           20.973        27.2          15.6          34 \r\n 1986          129           14.448        24.4          15            12.9 \r\n 1986          130           12.384        23.9          15            8.1 \r\n 1986          131           9.208         21.7          14.4          5.3 \r\n 1986          132           21.578        25.6          13.3          0 \r\n 1986          133           22.058        25            11.1          10.7 \r\n 1986          134           18.381        23.3          8.3           0 \r\n 1986          135           14.16         23.3          12.8          24.4 \r\n 1986          136           13.517        18.9          10            5.6 \r\n 1986          137           13.034        18.9          8.3           7.9 \r\n 1986          138           19.924        17.8          6.1           0 \r\n 1986          139           22.84         19.4          7.2           0 \r\n 1986          140           24.136        19.4          6.1           0 \r\n 1986          141           25.111        21.1          7.2           0 \r\n 1986          142           24.948        21.7          7.2           0 \r\n 1986          143           21.36         21.7          10            0 \r\n 1986          144           21.009        23.3          10            2 \r\n 1986          145           16.413        25            11.1          11.9 \r\n 1986          146           13.295        18.9          11.1          4.3 \r\n 1986          147           7.269         16.7          13.9          5.3 \r\n 1986          148           11.729        21.1          11.7          4.3 \r\n 1986          149           16.52         21.7          15            1.5 \r\n 1986          150           23.954        26.7          12.8          0 \r\n 1986          151           24.78         29.4          14.4          0 \r\n 1986          152           25.247        29.4          16.1          0 \r\n 1986          153           27.989        26.1          10.6          0 \r\n 1986          154           28.524        27.8          10            0 \r\n 1986          155           24.424        28.3          17.2          10.9 \r\n 1986          156           14.618        22.2          15.6          10.2 \r\n 1986          157           15.431        22.2          15            0 \r\n 1986          158           15.789        26.1          17.2          3.6 \r\n 1986          159           27.452        27.2          14.4          0 \r\n 1986          160           23.684        27.2          15.6          0 \r\n 1986          161           21.531        30.6          20.6          0 \r\n 1986          162           18.301        29.4          16.7          3 \r\n 1986          163           17.584        25.6          13.3          0 \r\n 1986          164           25.28         27.2          15            0 \r\n 1986          165           14.626        23.9          16.1          25.9 \r\n 1986          166           17.696        26.1          14.4          0 \r\n 1986          167           22.03         27.2          20            0 \r\n 1986          168           27.628        27.8          13.9          0 \r\n 1986          169           19.683        27.8          17.2          5.3 \r\n 1986          170           23.294        32.2          18.9          0 \r\n 1986          171           24.197        32.2          18.9          0 \r\n 1986          172           22.03         31.1          21.1          7.1 \r\n 1986          173           16.613        26.1          18.3          4.8 \r\n 1986          174           28.17         30            14.4          0 \r\n 1986          175           28.892        30            12.2          0 \r\n 1986          176           27.447        30            14.4          0 \r\n 1986          177           22.752        32.2          21.7          0 \r\n 1986          178           16.613        31.7          20.6          2.8 \r\n 1986          179           24.377        32.8          16.7          19.3 \r\n 1986          180           16.252        30            18.3          22.1 \r\n 1986          181           14.265        25.6          17.8          50.3 \r\n 1986          182           19.362        23.9          16.1          0 \r\n 1986          183           22.378        25.6          16.1          0 \r\n 1986          184           27.832        27.8          15            0 \r\n 1986          185           22.942        32.2          21.7          0 \r\n 1986          186           20.498        32.2          23.9          0 \r\n 1986          187           19.934        32.2          17.2          35.3 \r\n 1986          188           13.916        26.7          17.2          2.8 \r\n 1986          189           21.487        31.1          19.4          0 \r\n 1986          190           17.75         30.6          18.3          0.8 \r\n 1986          191           16.816        28.3          18.9          17.8 \r\n 1986          192           18.498        28.9          16.7          6.1 \r\n 1986          193           17.003        27.2          17.8          10.9 \r\n 1986          194           19.492        29.4          15.6          0 \r\n 1986          195           21.163        28.9          19.4          0 \r\n 1986          196           20.791        32.8          21.7          0 \r\n 1986          197           21.72         32.8          22.2          0 \r\n 1986          198           21.579        33.3          22.2          0 \r\n 1986          199           22.87         33.3          20.6          0 \r\n 1986          200           21.763        32.8          21.7          0 \r\n 1986          201           26.743        29.4          16.1          0 \r\n 1986          202           26.935        26.7          14.4          0 \r\n 1986          203           26.935        30            15            0 \r\n 1986          204           26.568        31.1          16.1          0 \r\n 1986          205           23.481        32.8          22.2          0 \r\n 1986          206           18.749        32.2          18.3          33.3 \r\n 1986          207           24.391        29.4          16.7          0 \r\n 1986          208           21.879        30            19.4          3 \r\n 1986          209           17.539        32.2          20.6          0 \r\n 1986          210           20.252        32.2          16.1          29 \r\n 1986          211           21.374        30.6          21.1          0 \r\n 1986          212           20.835        29.4          19.4          0 \r\n 1986          213           26.187        26.1          15            0 \r\n 1986          214           24.041        23.3          13.9          0 \r\n 1986          215           25.278        24.4          12.2          0 \r\n 1986          216           23.176        24.4          12.2          0 \r\n 1986          217           10.008        21.7          16.1          11.9 \r\n 1986          218           12.115        25.6          15.6          4.8 \r\n 1986          219           21.275        26.7          16.1          0 \r\n 1986          220           24.762        26.7          13.9          2.5 \r\n 1986          221           23.553        26.7          13.9          0 \r\n 1986          222           19.224        23.3          15.6          2 \r\n 1986          223           26.143        23.3          9.4           0 \r\n 1986          224           21.327        23.9          13.9          0 \r\n 1986          225           8.944         19.4          15.6          53.6 \r\n 1986          226           12.639        28.3          16.7          5.1 \r\n 1986          227           21.179        29.4          17.8          0 \r\n 1986          228           21.37         30.6          17.2          0 \r\n 1986          229           20.013        30.6          18.9          0.5 \r\n 1986          230           21.557        27.2          15            0 \r\n 1986          231           20.546        26.1          14.4          0 \r\n 1986          232           20.567        25.6          14.4          0 \r\n 1986          233           18.728        25            16.7          0 \r\n 1986          234           19.899        28.9          16.1          0 \r\n 1986          235           24.239        26.7          11.1          0 \r\n 1986          236           22.413        23.3          11.1          0 \r\n 1986          237           21.922        31.7          16.1          1 \r\n 1986          238           14.834        30.6          18.9          9.7 \r\n 1986          239           22.581        23.3          8.9           0 \r\n 1986          240           24.381        19.4          5.6           0 \r\n 1986          241           23.391        21.1          7.2           0 \r\n 1986          242           20.142        26.1          13.3          0 \r\n 1986          243           21.284        27.8          12.8          0 \r\n 1986          244           22.735        27.2          11.7          0 \r\n 1986          245           19.71         26.1          13.3          0 \r\n 1986          246           12.3          26.7          17.2          23.6 \r\n 1986          247           12.944        26.1          14.4          0 \r\n 1986          248           18.68         22.8          11.1          0 \r\n 1986          249           15.328        21.1          10            0 \r\n 1986          250           19.123        18.3          3.9           0 \r\n 1986          251           21.007        20            3.3           0 \r\n 1986          252           17.675        23.3          13.3          1.3 \r\n 1986          253           12.795        28.3          19.4          0.5 \r\n 1986          254           11.358        27.2          15            0 \r\n 1986          255           18.261        22.8          7.2           0 \r\n 1986          256           11.984        22.8          13.3          12.9 \r\n 1986          257           14.722        25            11.7          0 \r\n 1986          258           9.343         22.2          15.6          4.8 \r\n 1986          259           13.202        19.4          10.6          0 \r\n 1986          260           13.483        23.9          12.2          2.8 \r\n 1986          261           9.476         24.4          16.7          0 \r\n 1986          262           8.918         27.2          15.6          40.6 \r\n 1986          263           9.815         26.1          15.6          44.5 \r\n 1986          264           9.539         30            18.3          0 \r\n 1986          265           13.439        29.4          17.8          8.1 \r\n 1986          266           8.365         21.1          14.4          0.5 \r\n 1986          267           9.386         22.8          15.6          5.3 \r\n 1986          268           7.21          28.3          20.6          0 \r\n 1986          269           11.738        30.6          20            0 \r\n 1986          270           10.659        28.9          17.2          0 \r\n 1986          271           15.79         27.8          12.2          5.6 \r\n 1986          272           9.1           25            16.7          12.7 \r\n 1986          273           9.422         21.7          10            11.9 \r\n 1986          274           9.555         18.3          7.8           0 \r\n 1986          275           10.66         17.2          11.1          8.1 \r\n 1986          276           5.264         17.8          13.3          0.5 \r\n 1986          277           8.482         15            7.8           10.9 \r\n 1986          278           12.789        15.6          5.6           0 \r\n 1986          279           16.045        16.7          0             0 \r\n 1986          280           15.527        24.4          7.8           0 \r\n 1986          281           13.983        23.9          10            0 \r\n 1986          282           12.316        18.3          7.2           0 \r\n 1986          283           12.972        14.4          3.3           0 \r\n 1986          284           8.521         14.4          7.8           48.8 \r\n 1986          285           7.186         8.3           2.2           4.1 \r\n 1986          286           6.934         5             0.6           0 \r\n 1986          287           12.497        10.6         -2.2           0 \r\n 1986          288           13.497        12.8          0             0 \r\n 1986          289           14.12         20.6          0             0 \r\n 1986          290           13.501        19.4          3.3           0 \r\n 1986          291           12.767        15.6          1.1           0 \r\n 1986          292           12.89         21.7          4.4           0 \r\n 1986          293           12.287        24.4          8.3           0 \r\n 1986          294           12.043        22.8          7.2           0 \r\n 1986          295           9.975         20.6          10            2.5 \r\n 1986          296           3.134         13.9          10            14 \r\n 1986          297           2.411         13.9          11.1          11.9 \r\n 1986          298           2.747         11.7          8.9           14.5 \r\n 1986          299           5.255         13.9          5             0 \r\n 1986          300           11.715        21.7          1.7           0 \r\n 1986          301           11.123        20            7.2           0 \r\n 1986          302           10.902        17.8          2.2           0 \r\n 1986          303           10.668        16.1          1.7           0 \r\n 1986          304           9.378         17.8          7.2           0 \r\n 1986          305           7.2           10.6          0             10.2 \r\n 1986          306           8.012         6.7          -3.9           0 \r\n 1986          307           8.856         12.8         -0.6           0 \r\n 1986          308           9.201         8.9          -2.2           0 \r\n 1986          309           9.455         11.1         -2.8           0 \r\n 1986          310           9.682         16.7          0             0 \r\n 1986          311           8.088         13.3          3.9           0 \r\n 1986          312           6.994         14.4         -0.6           2.8 \r\n 1986          313           7.219         4.4          -3.9           0 \r\n 1986          314           6.367        -2.2          -7.8           1 \r\n 1986          315           10.723       -6.1          -20            0 \r\n 1986          316           8.824        -5            -13.9          0 \r\n 1986          317           8.184        -6.7          -19.4          0 \r\n 1986          318           8.847         1.1          -11.7          0 \r\n 1986          319           8.516         3.9          -8.3           0 \r\n 1986          320           9.306         7.2          -7.8           0 \r\n 1986          321           7.335         3.3          -3.3           0 \r\n 1986          322           4.379         0            -6.7           5.6 \r\n 1986          323           5.419         0.6          -6.7           4.6 \r\n 1986          324           4.118         0.6          -6.1           5.6 \r\n 1986          325           9.646         3.3          -14.4          0 \r\n 1986          326           8.26          7.2          -1.1           1.3 \r\n 1986          327           6.222         1.1          -3.9           0 \r\n 1986          328           7.295         5.6          -10            0 \r\n 1986          329           7.08          7.8          -3.9           0 \r\n 1986          330           5.839         5.6          -1.1           0 \r\n 1986          331           7.326         8.3          -6.1           0 \r\n 1986          332           7.007         11.1         -1.7           0 \r\n 1986          333           7.007         7.8          -2.8           0 \r\n 1986          334           4.518         3.3          -0.6           0 \r\n 1986          335           2.101         2.2          -0.6           4.6 \r\n 1986          336           1.156         0.6          -1.1           4.1 \r\n 1986          337           4.097         2.2          -4.4           0 \r\n 1986          338           4.518        -2.2          -7.2           0 \r\n 1986          339           6.861         2.2          -13.3          0 \r\n 1986          340           5.51          1.1          -3.3           0 \r\n 1986          341           1.975         0.6          -3.3           6.6 \r\n 1986          342           1.975         0.6          -2.8           5.3 \r\n 1986          343           6.341        -0.6          -11.7          0 \r\n 1986          344           6.549        -10.6         -18.9          0 \r\n 1986          345           7.069        -0.6          -15            0 \r\n 1986          346           6.994        -5.6          -16.1          0 \r\n 1986          347           7.405        -5.6          -22.2          0 \r\n 1986          348           7.2           3.3          -10            0 \r\n 1986          349           6.48          2.2          -7.8           0 \r\n 1986          350           4.937         2.8          -3.3           0 \r\n 1986          351           3.6           1.1          -3.3           0 \r\n 1986          352           3.908         1.7          -2.8           0 \r\n 1986          353           6.171         4.4          -6.1           0 \r\n 1986          354           6.068        -0.6          -7.8           0 \r\n 1986          355           5.965        -1.1          -10.6          0 \r\n 1986          356           5.348         3.3          -3.9           0 \r\n 1986          357           6.582         6.1          -6.1           0 \r\n 1986          358           5.76          3.3          -5.6           0 \r\n 1986          359           4.937         0            -5             0 \r\n 1986          360           6.274         0            -10            0 \r\n 1986          361           5.554        -1.1          -6.7           0 \r\n 1986          362           2.777        -1.1          -3.3           0 \r\n 1986          363           3.188         0.6          -2.8           0 \r\n 1986          364           4.99          2.8          -5             0 \r\n 1986          365           6.549         5.6          -5.6           0 \r\n 1987          1             6.965         2.8          -7.8           0 \r\n 1987          2             5.406         1.1          -6.7           0 \r\n 1987          3             6.549         3.3          -6.7           0 \r\n 1987          4             5.718         5.6          -1.1           0 \r\n 1987          5             5.406         1.7          -3.3           0 \r\n 1987          6             3.782         2.2          -1.7           1.8 \r\n 1987          7             3.362         1.1          -3.3           0 \r\n 1987          8             3.782         1.1          -3.9           0 \r\n 1987          9             5.673         0            -6.1           2.8 \r\n 1987          10            3.992         0            -7.2           0 \r\n 1987          11            8.494         5.6          -11.7          0 \r\n 1987          12            8.175         10           -1.1           0 \r\n 1987          13            8.706         13.3         -0.6           0 \r\n 1987          14            8.494         10.6         -1.7           0 \r\n 1987          15            8.6           3.3          -11.1          0 \r\n 1987          16            6.866        -6.1          -13.9          0 \r\n 1987          17            6.222        -3.9          -10            0 \r\n 1987          18            8.26         -0.6          -12.2          0 \r\n 1987          19            9.321         0            -13.3          0 \r\n 1987          20            9.538        -0.6          -13.3          0 \r\n 1987          21            8.67          2.8          -7.8           0 \r\n 1987          22            9.854         1.7          -12.2          0 \r\n 1987          23            10.182       -8.9          -23.3          0 \r\n 1987          24            9.744        -5            -19.4          0 \r\n 1987          25            8.626        -5            -14.4          0 \r\n 1987          26            7.299        -2.8          -8.9           0 \r\n 1987          27            9.179         6.1          -7.2           0 \r\n 1987          28            10.5          3.9          -8.3           0 \r\n 1987          29            8.154         5.6          -1.7           0 \r\n 1987          30            7.484         5            -1.7           0 \r\n 1987          31            11.055        11.7         -5.6           0 \r\n 1987          32            11.055        12.2         -2.8           0 \r\n 1987          33            10.039        15.6          0             0 \r\n 1987          34            10.594        8.9          -7.2           0 \r\n 1987          35            8.657         5            -6.7           0 \r\n 1987          36            7.246         4.4          -2.2           0 \r\n 1987          37            10.006        11.7         -5.6           0 \r\n 1987          38            11.041        17.8         -2.2           0 \r\n 1987          39            11.148        12.8         -3.9           0 \r\n 1987          40            10.683        6.7          -8.3           0 \r\n 1987          41            11.137        10.6         -5             0 \r\n 1987          42            11.606        13.9         -5.6           0 \r\n 1987          43            10.295        11.1         -0.6           0 \r\n 1987          44            10.887        10           -6.1           0 \r\n 1987          45            9.23          7.8          -1.1           0 \r\n 1987          46            6.689         0            -5.6           0 \r\n 1987          47            8.002         1.1          -7.8           0 \r\n 1987          48            9.885        -1.1          -11.1          0 \r\n 1987          49            11.813        5            -9.4           0 \r\n 1987          50            12.165        8.3          -7.2           0 \r\n 1987          51            11.314        7.2          -5             0 \r\n 1987          52            12.521        10.6         -8.3           0 \r\n 1987          53            11.662        7.2          -5.6           0 \r\n 1987          54            13.377        8.9          -8.9           0 \r\n 1987          55            12.262        7.8          -4.4           0 \r\n 1987          56            11.872        9.4          -3.9           0 \r\n 1987          57            11.872        10           -3.3           0 \r\n 1987          58            10.464        8.3          -0.6           0 \r\n 1987          59            4.917         6.7           0.6           13.2 \r\n 1987          60            3.027         1.7          -0.6           10.7 \r\n 1987          61            9.837         6.1          -6.1           0 \r\n 1987          62            11.351        7.2          -6.1           0 \r\n 1987          63            12.431        17.8          0             0 \r\n 1987          64            13.194        17.8          0.6           0 \r\n 1987          65            13.308        20            0             0 \r\n 1987          66            12.868        22.8          8.3           0 \r\n 1987          67            13.533        21.1          2.2           0 \r\n 1987          68            11.314        7.8          -3.9           0 \r\n 1987          69            9.732         0.6          -8.9           0 \r\n 1987          70            11.298        6.7          -6.1           0 \r\n 1987          71            10.04         5.6          -2.2           0.5 \r\n 1987          72            12.634        19.4          1.1           0 \r\n 1987          73            13.536        17.2          2.8           0 \r\n 1987          74            7.166         6.1          -0.6           5.1 \r\n 1987          75            4.473         5             0             0 \r\n 1987          76            7.913         8.3           0.6           0 \r\n 1987          77            6.012         7.8           1.1           16 \r\n 1987          78            7.978         13.9          2.2           0.5 \r\n 1987          79            12.472        16.7          6.7           0 \r\n 1987          80            13.754        17.8          5             0 \r\n 1987          81            16.568        19.4          0.6           0 \r\n 1987          82            14.569        22.2          8.9           0 \r\n 1987          83            10.186        20.6          8.3           4.1 \r\n 1987          84            6.208         10.6          3.9           0 \r\n 1987          85            9.193         7.8           1.7           0 \r\n 1987          86            15.041        13.3         -2.2           0 \r\n 1987          87            15.161        12.2         -0.6           6.6 \r\n 1987          88            11.277        0            -7.2           7.4 \r\n 1987          89            17.583       -1.7          -12.2          0 \r\n 1987          90            18.331        6.1          -9.4           0 \r\n 1987          91            13.979        5.6          -5             0 \r\n 1987          92            18.055        3.9          -5.6           0 \r\n 1987          93            21.423        7.2          -6.1           0 \r\n 1987          94            22.944        12.2         -3.3           0 \r\n 1987          95            23.351        16.7         -0.6           0 \r\n 1987          96            24.075        18.9          0.6           0 \r\n 1987          97            24.486        22.2          3.3           0 \r\n 1987          98            24.945        23.9          5             0 \r\n 1987          99            22.189        25            4.4           0 \r\n 1987          100           21.521        23.9          5             1 \r\n 1987          101           14.718        17.2          0.6           4.6 \r\n 1987          102           19.161        12.2          1.7           0 \r\n 1987          103           12.449        18.3          7.8           5.1 \r\n 1987          104           4.196         10.6          7.2           37.3 \r\n 1987          105           4.791         11.1          7.8           0.8 \r\n 1987          106           20.149        15.6          3.3           0 \r\n 1987          107           22.71         27.2          6.7           0 \r\n 1987          108           21.574        26.1          9.4           0 \r\n 1987          109           19.872        30            13.3          0 \r\n 1987          110           19.729        29.4          13.9          0 \r\n 1987          111           22.175        33.3          5.6           0 \r\n 1987          112           4.176         7.8           4.4           2.5 \r\n 1987          113           10.732        9.4           4.4           3.6 \r\n 1987          114           20.593        21.1          6.7           0 \r\n 1987          115           22.053        27.8          7.2           0 \r\n 1987          116           22.929        29.4          9.4           0 \r\n 1987          117           21.62         29.4          13.3          0 \r\n 1987          118           24.415        26.7          5             0 \r\n 1987          119           22.944        30            6.1           0 \r\n 1987          120           23.993        27.8          6.1           0 \r\n 1987          121           22.986        32.2          6.1           0 \r\n 1987          122           23.488        31.7          12.2          0.5 \r\n 1987          123           13.222        18.9          9.4           11.4 \r\n 1987          124           11.903        19.4          7.2           0 \r\n 1987          125           20.674        19.4          6.1           0 \r\n 1987          126           23.65         26.7          7.8           0 \r\n 1987          127           25.231        26.7          8.3           0 \r\n 1987          128           25.704        27.8          8.3           0 \r\n 1987          129           23.497        30.6          13.3          0 \r\n 1987          130           20.957        32.2          16.1          0 \r\n 1987          131           18.734        31.1          18.3          0 \r\n 1987          132           25.414        27.8          7.2           0 \r\n 1987          133           24.935        30.6          8.3           0 \r\n 1987          134           20.459        30            17.8          0 \r\n 1987          135           24.459        26.1          9.4           0 \r\n 1987          136           24.137        30            8.9           0 \r\n 1987          137           23.493        32.2          12.2          0 \r\n 1987          138           19.6          30.6          16.7          10.2 \r\n 1987          139           15.551        28.3          13.9          0.8 \r\n 1987          140           13.121        28.3          17.2          2.8 \r\n 1987          141           17.447        26.1          16.1          1.8 \r\n 1987          142           21.36         16.7          5.6           0 \r\n 1987          143           16.958        20.6          7.8           0 \r\n 1987          144           16.905        20.6          9.4           0 \r\n 1987          145           14.936        22.8          10            0 \r\n 1987          146           11.982        24.4          15.6          25.6 \r\n 1987          147           11.068        25.6          16.1          11.2 \r\n 1987          148           11.234        26.1          16.7          5.6 \r\n 1987          149           11.399        25.6          16.7          12.7 \r\n 1987          150           14.868        27.2          14.4          0 \r\n 1987          151           16.19         27.2          14.4          9.1 \r\n 1987          152           22.134        29.4          15.6          0 \r\n 1987          153           18.006        28.9          15            12.9 \r\n 1987          154           24.245        23.3          10            0 \r\n 1987          155           29.059        25.6          9.4           0 \r\n 1987          156           26.385        28.9          13.3          0 \r\n 1987          157           26.196        31.1          14.4          0 \r\n 1987          158           22.428        32.2          18.9          0 \r\n 1987          159           21.89         32.2          22.8          0 \r\n 1987          160           23.864        30.6          16.1          0 \r\n 1987          161           17.404        22.8          13.3          2 \r\n 1987          162           14.892        28.3          15.6          0.5 \r\n 1987          163           26.555        33.9          16.7          0 \r\n 1987          164           27.808        36.7          16.7          0 \r\n 1987          165           26.183        36.1          20.6          0 \r\n 1987          166           26.003        36.7          18.9          0 \r\n 1987          167           26.183        32.8          16.7          0 \r\n 1987          168           23.475        32.8          20            1 \r\n 1987          169           23.655        32.8          19.4          0 \r\n 1987          170           16.974        31.1          19.4          3.3 \r\n 1987          171           18.057        28.3          19.4          13.5 \r\n 1987          172           15.168        28.9          17.8          0 \r\n 1987          173           23.294        31.7          18.9          0 \r\n 1987          174           23.113        31.7          18.9          0 \r\n 1987          175           25.642        30.6          17.2          0 \r\n 1987          176           18.419        29.4          16.1          34 \r\n 1987          177           26.906        26.7          11.1          0 \r\n 1987          178           28.17         26.7          9.4           0 \r\n 1987          179           26.544        29.4          13.3          0 \r\n 1987          180           17.335        28.3          17.2          9.7 \r\n 1987          181           26.183        26.7          13.3          0 \r\n 1987          182           28.359        26.7          12.8          0 \r\n 1987          183           27.268        30.6          13.9          0 \r\n 1987          184           26.515        29.4          16.1          0 \r\n 1987          185           25.011        29.4          15            0 \r\n 1987          186           22.002        28.3          17.2          0 \r\n 1987          187           23.883        31.7          17.8          1 \r\n 1987          188           18.617        32.2          17.2          29 \r\n 1987          189           14.2          27.2          18.3          11.4 \r\n 1987          190           15.508        27.8          17.8          2.5 \r\n 1987          191           14.2          27.8          18.9          3 \r\n 1987          192           17.563        30.6          22.2          0 \r\n 1987          193           17.19         29.4          17.2          58.7 \r\n 1987          194           22.648        23.9          12.8          0 \r\n 1987          195           25.061        24.4          11.7          2.8 \r\n 1987          196           20.049        26.1          11.1          2.3 \r\n 1987          197           26.546        30            15.6          0 \r\n 1987          198           22.132        30            21.1          0 \r\n 1987          199           17.337        29.4          20.6          7.9 \r\n 1987          200           14.939        31.7          20            0 \r\n 1987          201           18.259        32.2          23.9          0 \r\n 1987          202           21.621        31.7          20            0 \r\n 1987          203           21.071        30            18.9          0 \r\n 1987          204           21.804        31.1          19.4          0 \r\n 1987          205           21.297        33.3          21.7          0 \r\n 1987          206           18.931        33.3          18.3          2.8 \r\n 1987          207           22.753        33.9          21.1          0 \r\n 1987          208           21.879        33.9          21.7          0 \r\n 1987          209           23.868        33.9          20.6          0 \r\n 1987          210           23.145        34.4          21.1          0 \r\n 1987          211           22.811        35            22.8          0 \r\n 1987          212           23.17         35            20.6          0 \r\n 1987          213           24.829        35.6          22.2          0 \r\n 1987          214           22.273        35.6          22.8          0 \r\n 1987          215           20.505        33.9          21.7          7.4 \r\n 1987          216           15.451        26.1          15.6          0 \r\n 1987          217           26.336        26.7          12.8          0 \r\n 1987          218           24.581        30            15.6          0 \r\n 1987          219           20.577        30            17.2          0 \r\n 1987          220           10.812        25.6          18.3          66.5 \r\n 1987          221           16.972        27.8          14.4          2.5 \r\n 1987          222           22.688        29.4          16.7          0 \r\n 1987          223           22.359        29.4          16.1          0 \r\n 1987          224           19.951        27.8          17.2          15.8 \r\n 1987          225           10.491        25.6          18.9          35.3 \r\n 1987          226           10.931        28.9          20.6          1.3 \r\n 1987          227           15.201        31.1          19.4          3.6 \r\n 1987          228           15.773        31.1          18.9          8.6 \r\n 1987          229           22.048        28.9          16.7          0 \r\n 1987          230           14.989        26.7          15            39.6 \r\n 1987          231           22.567        24.4          12.2          0 \r\n 1987          232           21.738        25            12.2          0 \r\n 1987          233           15.384        32.8          18.3          1.8 \r\n 1987          234           23.577        32.2          15            0 \r\n 1987          235           20.586        20.6          9.4           0 \r\n 1987          236           19.424        21.1          10            0 \r\n 1987          237           9.89          16.7          10.6          61.2 \r\n 1987          238           5.769         16.7          12.2          70.9 \r\n 1987          239           9.327         20.6          13.9          0 \r\n 1987          240           19.472        20.6          11.1          0 \r\n 1987          241           23.879        28.3          9.4           0 \r\n 1987          242           15.919        27.8          14.4          5.6 \r\n 1987          243           22.09         21.1          9.4           0 \r\n 1987          244           23.219        26.1          11.7          0 \r\n 1987          245           21.191        26.1          10.6          0 \r\n 1987          246           20.302        23.9          10            0 \r\n 1987          247           20.151        30.6          13.9          0 \r\n 1987          248           18.533        30            17.2          0 \r\n 1987          249           13.576        30            15.6          3.3 \r\n 1987          250           13.576        26.7          13.9          9.4 \r\n 1987          251           17.82         21.7          12.8          0 \r\n 1987          252           19.848        22.8          8.3           0 \r\n 1987          253           17.54         23.9          13.3          0.8 \r\n 1987          254           16.965        23.3          11.7          0 \r\n 1987          255           18.118        20.6          7.8           0 \r\n 1987          256           12.126        22.2          9.4           2.3 \r\n 1987          257           16.421        26.7          12.2          0 \r\n 1987          258           10.617        26.1          13.9          20.8 \r\n 1987          259           7.023         22.2          15.6          8.9 \r\n 1987          260           10.534        23.9          13.9          0 \r\n 1987          261           13.935        22.2          12.8          0 \r\n 1987          262           16.722        21.1          6.7           0.8 \r\n 1987          263           15.068        18.9          7.2           1.3 \r\n 1987          264           15.068        18.9          8.9           0 \r\n 1987          265           15.633        19.4          8.3           0 \r\n 1987          266           17.69         26.7          6.7           0 \r\n 1987          267           17.548        26.1          10.6          0 \r\n 1987          268           17.548        25            7.2           0 \r\n 1987          269           16.595        28.3          10            0 \r\n 1987          270           14.572        28.9          13.9          0 \r\n 1987          271           9.903         28.3          13.9          5.1 \r\n 1987          272           12.846        22.8          11.7          0 \r\n 1987          273           14.996        21.1          7.2           0 \r\n 1987          274           16.191        28.3          5.6           0 \r\n 1987          275           16.845        26.7          4.4           0 \r\n 1987          276           15.792        17.2         -2.2           0 \r\n 1987          277           15.66         25            4.4           0 \r\n 1987          278           12.006        22.2          11.1          0 \r\n 1987          279           11.775        16.1          5             0 \r\n 1987          280           13.845        12.2         -1.1           0 \r\n 1987          281           14.625        17.8         -1.7           0 \r\n 1987          282           12.957        16.1          2.8           0 \r\n 1987          283           8.394         7.2           0             0 \r\n 1987          284           14.244        11.1         -7.2           0 \r\n 1987          285           14.372        20           -3.3           0 \r\n 1987          286           14.625        23.3          0.6           0 \r\n 1987          287           11.622        20            10            0.5 \r\n 1987          288           8.373         21.7          8.3           0 \r\n 1987          289           6.317         17.2          8.3           23.4 \r\n 1987          290           8.918         15            3.3           0 \r\n 1987          291           9.698         15            3.9           0 \r\n 1987          292           10.803        12.2          0             0 \r\n 1987          293           9.002         11.1         -0.6           0 \r\n 1987          294           9.367         7.8          -3.3           0 \r\n 1987          295           9.124         13.3          2.8           0 \r\n 1987          296           11.572        11.7         -3.9           0 \r\n 1987          297           9.764         11.1         -0.6           1.3 \r\n 1987          298           10.272        9.4          -3.9           0 \r\n 1987          299           6.569         11.1          4.4           1.8 \r\n 1987          300           8.993         11.1          0.6           0 \r\n 1987          301           11.005        13.9         -3.3           0 \r\n 1987          302           10.668        18.3          0.6           0 \r\n 1987          303           10.785        22.2          3.3           0 \r\n 1987          304           9.496         20.6          6.1           1.8 \r\n 1987          305           3.948         16.7          9.4           4.3 \r\n 1987          306           5.109         20            13.9          0.5 \r\n 1987          307           5.061         20.6          13.3          0 \r\n 1987          308           8.396         16.7          7.2           0 \r\n 1987          309           9.682         12.8         -1.7           0 \r\n 1987          310           7.86          16.1          4.4           0 \r\n 1987          311           5.696         13.9          2.2           8.9 \r\n 1987          312           5.415         13.9          2.8           0 \r\n 1987          313           8.009         5            -3.9           0 \r\n 1987          314           8.601         6.1          -5.6           0 \r\n 1987          315           8.936         11.1         -6.1           0 \r\n 1987          316           9.271         16.7         -1.7           0 \r\n 1987          317           8.405         13.3          2.2           0 \r\n 1987          318           8.626         16.7         -0.6           0 \r\n 1987          319           5.861         15            8.3           8.1 \r\n 1987          320           2.737         13.3          10            9.4 \r\n 1987          321           5.146         10.6          0             6.9 \r\n 1987          322           6.46          7.2          -3.9           0 \r\n 1987          323           6.286         7.8           0.6           0 \r\n 1987          324           7.803         5.6          -8.3           0 \r\n 1987          325           7.912         8.9          -7.8           0 \r\n 1987          326           7.509         12.8         -1.7           0 \r\n 1987          327           6.973         10           -1.1           0 \r\n 1987          328           4.827         3.3          -3.9           0 \r\n 1987          329           3.325         3.9           0             0 \r\n 1987          330           2.123         3.9           1.1           0 \r\n 1987          331           1.911         2.2           0             3.3 \r\n 1987          332           1.486         2.2          -0.6           26.4 \r\n 1987          333           1.699         2.8          -0.6           1.3 \r\n 1987          334           2.732         0.6          -2.8           0 \r\n 1987          335           1.681        -1.7          -3.3           0 \r\n 1987          336           5.043         2.2          -6.1           0 \r\n 1987          337           4.097         0.6          -2.8           0 \r\n 1987          338           6.514         1.1          -9.4           0 \r\n 1987          339           6.445         3.3          -6.1           0 \r\n 1987          340           3.742         1.7          -0.6           0 \r\n 1987          341           1.767         2.2          -0.6           0 \r\n 1987          342           3.534         8.9           1.1           3.6 \r\n 1987          343           4.366         8.9           1.1           2.8 \r\n 1987          344           7.381         9.4          -5.6           0 \r\n 1987          345           6.445         8.3           1.7           1.3 \r\n 1987          346           5.451         5.6          -0.6           0 \r\n 1987          347           5.04          3.3          -1.7           0 \r\n 1987          348           5.143         0.6          -5.6           0 \r\n 1987          349           2.88         -4.4          -7.2           7.6 \r\n 1987          350           6.48         -5            -11.7          0 \r\n 1987          351           7.92         -4.4          -15            0 \r\n 1987          352           7.611         1.7          -7.8           0 \r\n 1987          353           3.394         1.1          -0.6           1.5 \r\n 1987          354           4.834         1.7          -5.6           3 \r\n 1987          355           7.817         3.3          -8.9           0 \r\n 1987          356           7.405         3.9          -2.8           0 \r\n 1987          357           6.274         3.3          -2.2           0 \r\n 1987          358           4.32          2.2          -3.9           2.8 \r\n 1987          359           7.2          -2.2          -10            0 \r\n 1987          360           7.714        -0.6          -12.8          0 \r\n 1987          361           5.554        -0.6          -7.8           8.9 \r\n 1987          362           2.983        -1.1          -3.9           4.8 \r\n 1987          363           4.217        -3.3          -9.4           0 \r\n 1987          364           6.549         2.2          -7.2           0 \r\n 1987          365           8.524         1.7          -14.4          0 \r\n 1988          1             7.381        -8.9          -20            0 \r\n 1988          2             7.901        -2.2          -17.8          0 \r\n 1988          3             6.861        -3.9          -11.7          0 \r\n 1988          4             7.797        -8.3          -21.1          0 \r\n 1988          5             5.51         -18.9         -25            0 \r\n 1988          6             6.619        -18.9         -26.7          0 \r\n 1988          7             7.354        -10.6         -22.2          0 \r\n 1988          8             6.514        -12.2         -18.3          0 \r\n 1988          9             6.724        -14.4         -23.3          0 \r\n 1988          10            8.195        -6.1          -22.2          0 \r\n 1988          11            7.538        -1.1          -7.8           0 \r\n 1988          12            8.387         1.1          -13.3          0 \r\n 1988          13            9.237        -10           -22.2          0 \r\n 1988          14            8.6          -0.6          -17.2          0 \r\n 1988          15            8.387         3.9          -9.4           0 \r\n 1988          16            6.758         4.4           0.6           0 \r\n 1988          17            5.9           2.8          -2.8           0 \r\n 1988          18            3.433        -0.6          -2.2           0 \r\n 1988          19            2.059         1.1          -1.7           7.6 \r\n 1988          20            4.66          0.6          -8.3           0 \r\n 1988          21            5.636        -5.6          -10            0 \r\n 1988          22            7.773        -2.2          -11.7          0 \r\n 1988          23            9.525         0.6          -12.8          1.8 \r\n 1988          24            10.511        0.6          -16.1          0 \r\n 1988          25            10.949        0            -21.1          0 \r\n 1988          26            9.069        -11.1         -23.3          0 \r\n 1988          27            10.064       -1.1          -14.4          0 \r\n 1988          28            9.383         1.7          -9.4           0 \r\n 1988          29            9.606         9.4          -3.9           0 \r\n 1988          30            7.149         11.1          3.9           0 \r\n 1988          31            11.055        7.8          -9.4           0 \r\n 1988          32            9.475        -8.3          -16.7          0 \r\n 1988          33            9.024        -7.8          -20            0 \r\n 1988          34            8.885        -7.8          -11.7          0 \r\n 1988          35            8.999        -10.6         -17.2          0 \r\n 1988          36            10.121       -13.9         -23.3          0 \r\n 1988          37            10.236       -8.3          -20.6          0 \r\n 1988          38            9.661        -6.1          -9.4           0 \r\n 1988          39            11.264        1.1          -12.2          0 \r\n 1988          40            12.657        1.7          -15.6          0 \r\n 1988          41            8.792        -6.7          -18.3          4.3 \r\n 1988          42            12.075       -17.2         -27.2          0 \r\n 1988          43            13.372       -12.8         -28.3          0.5 \r\n 1988          44            11.005       -3.9          -11.1          0 \r\n 1988          45            8.993        -1.7          -6.1           0 \r\n 1988          46            13.497       -5            -17.8          0 \r\n 1988          47            13.497        5            -10.6          0 \r\n 1988          48            12.778        6.1          -5.6           0 \r\n 1988          49            12.416        7.8          -2.2           0 \r\n 1988          50            11.192        5.6          -2.2           0 \r\n 1988          51            14.112        2.8          -9.4           0 \r\n 1988          52            13.503        5.6          -9.4           0 \r\n 1988          53            13.258        8.3           3.3           0 \r\n 1988          54            13.377        3.9          -6.7           0 \r\n 1988          55            11.271       -1.1          -7.2           0 \r\n 1988          56            15.121        3.9          -12.8          0 \r\n 1988          57            15.996        15.6         -1.7           0 \r\n 1988          58            15.507        8.9          -2.2           0 \r\n 1988          59            12.607        7.8           5             0 \r\n 1988          60            13.992        10.6          0             0 \r\n 1988          61            13.081        15           -2.8           0 \r\n 1988          62            14.486        13.3         -3.3           0 \r\n 1988          63            13.837        1.7          -6.7           0 \r\n 1988          64            9.814         3.9          -6.7           0 \r\n 1988          65            12.976        7.8          -5             0 \r\n 1988          66            12.868        14.4         -4.4           0 \r\n 1988          67            14.848        13.9         -1.1           0 \r\n 1988          68            14.753        11.7          1.7           0 \r\n 1988          69            12.534        9.4          -1.1           0 \r\n 1988          70            11.969        11.7         -3.9           0 \r\n 1988          71            14.766        18.3          6.7           0 \r\n 1988          72            13.875        16.7         -5.6           1 \r\n 1988          73            15.341       -3.9          -11.1          0 \r\n 1988          74            11.261       -1.7          -11.7          0 \r\n 1988          75            10.806       -1.7          -10.6          0 \r\n 1988          76            12.042        1.7          -3.9           0 \r\n 1988          77            8.831         3.9          -4.4           0 \r\n 1988          78            10.291        6.7          -6.7           0 \r\n 1988          79            15.609        13.9         -3.9           0 \r\n 1988          80            17.834        12.2         -5             0 \r\n 1988          81            16.202        11.7         -4.4           0 \r\n 1988          82            15.863        27.8          1.1           0 \r\n 1988          83            17.53         26.7         -2.8           0 \r\n 1988          84            18.122        23.9          7.2           6.1 \r\n 1988          85            15.4          16.1          6.1           0 \r\n 1988          86            11.7          13.3          7.8           0 \r\n 1988          87            15.041        20           -1.7           0 \r\n 1988          88            17.327        18.9          5             2.3 \r\n 1988          89            16.249        7.8           0.6           0 \r\n 1988          90            10.065        16.1         -5             0 \r\n 1988          91            17.231        14.4         -3.3           0 \r\n 1988          92            16.138        12.2          2.2           0 \r\n 1988          93            14.686        15.6          5.6           19.6 \r\n 1988          94            9.297         12.8          2.8           0.5 \r\n 1988          95            10.997        26.7          2.2           0 \r\n 1988          96            19.142        26.1          10.6          0 \r\n 1988          97            19.698        16.7          5             6.1 \r\n 1988          98            12.858        26.7          1.7           0 \r\n 1988          99            21.362        26.7          7.8           0 \r\n 1988          100           20.811        26.1          3.3           0 \r\n 1988          101           20.966        12.2          0.6           0 \r\n 1988          102           14.579        16.1          0.6           0 \r\n 1988          103           19.439        20.6          1.7           0 \r\n 1988          104           21.681        21.7          3.3           0 \r\n 1988          105           20.982        21.1          0.6           0.8 \r\n 1988          106           21.418        13.3         -3.3           0 \r\n 1988          107           20.29         19.4          0             0 \r\n 1988          108           22            19.4          7.2           0 \r\n 1988          109           20.013        13.3         -3.9           0 \r\n 1988          110           21.873        15.6         -3.9           0 \r\n 1988          111           22.302        16.1          3.3           1 \r\n 1988          112           18.719        16.1          1.1           0 \r\n 1988          113           18.431        8.3           1.7           3.8 \r\n 1988          114           9.136         9.4           0.6           1.5 \r\n 1988          115           11.602        19.4         -2.2           0 \r\n 1988          116           22.637        20.6          3.9           0 \r\n 1988          117           21.907        18.9          2.2           10.2 \r\n 1988          118           14.708        12.2          1.1           0 \r\n 1988          119           11.913        18.9          1.7           0 \r\n 1988          120           21.179        22.2          3.3           0 \r\n 1988          121           23.548        25            5.6           0 \r\n 1988          122           22.554        26.1          6.7           0 \r\n 1988          123           23.799        25.6          11.7          0 \r\n 1988          124           22.554        25            10            0 \r\n 1988          125           20.361        23.3          5.6           0 \r\n 1988          126           24.746        27.8          11.1          0 \r\n 1988          127           24.276        27.8          8.9           0 \r\n 1988          128           25.231        29.4          17.2          1.3 \r\n 1988          129           22.235        27.8          12.2          15.2 \r\n 1988          130           15.242        18.9          13.3          3.8 \r\n 1988          131           12.384        25            7.8           0 \r\n 1988          132           22.386        27.8          11.1          0 \r\n 1988          133           25.254        29.4          11.7          0 \r\n 1988          134           25.254        29.4          7.8           0 \r\n 1988          135           25.894        33.9          11.7          0 \r\n 1988          136           24.78         33.3          11.1          0 \r\n 1988          137           25.907        26.7          7.8           0 \r\n 1988          138           24.941        23.9          3.9           0 \r\n 1988          139           25.432        26.7          11.1          0 \r\n 1988          140           23.002        27.8          12.8          0 \r\n 1988          141           22.516        30            13.9          0 \r\n 1988          142           23.969        30            12.2          0 \r\n 1988          143           24.785        26.1          16.1          21.3 \r\n 1988          144           11.74         25            16.1          0.5 \r\n 1988          145           10.176        25.6          12.8          0 \r\n 1988          146           23.142        25            8.3           0 \r\n 1988          147           24.784        29.4          10.6          0 \r\n 1988          148           23.789        28.9          15            2 \r\n 1988          149           22.302        32.2          15.6          0 \r\n 1988          150           21.476        31.1          15            0 \r\n 1988          151           22.137        31.1          16.7          0 \r\n 1988          152           21.146        31.7          15            0 \r\n 1988          153           24.383        31.7          16.7          0 \r\n 1988          154           24.067        30            16.7          2.8 \r\n 1988          155           23.532        28.3          16.7          0 \r\n 1988          156           20.68         26.7          12.2          0 \r\n 1988          157           24.424        28.3          10.6          0 \r\n 1988          158           27.811        30.6          11.7          0 \r\n 1988          159           28.888        32.2          12.8          0 \r\n 1988          160           28.529        32.2          18.3          22.4 \r\n 1988          161           17.404        30.6          8.9           0 \r\n 1988          162           29.426        25.6          10            0 \r\n 1988          163           27.452        28.3          10            0 \r\n 1988          164           28.17         31.1          14.4          0 \r\n 1988          165           24.919        33.3          15            0 \r\n 1988          166           25.642        33.3          17.2          0 \r\n 1988          167           24.558        32.2          15.6          1.5 \r\n 1988          168           18.96         29.4          13.3          0 \r\n 1988          169           27.989        28.3          14.4          26.4 \r\n 1988          170           24.377        31.7          15.6          0 \r\n 1988          171           16.432        35.6          20            0 \r\n 1988          172           22.933        36.1          19.4          0 \r\n 1988          173           25.461        37.8          23.9          0 \r\n 1988          174           23.294        36.7          22.8          0 \r\n 1988          175           21.308        33.9          16.1          0 \r\n 1988          176           25.461        37.2          20            0 \r\n 1988          177           23.475        36.7          23.3          0 \r\n 1988          178           20.947        31.7          13.9          0 \r\n 1988          179           25.822        27.8          12.2          0 \r\n 1988          180           25.28         36.7          12.2          0 \r\n 1988          181           28.711        36.1          16.7          0 \r\n 1988          182           27.628        25.6          15            0 \r\n 1988          183           18.384        25.6          9.4           0 \r\n 1988          184           26.703        27.8          13.3          0 \r\n 1988          185           24.071        29.4          12.2          0 \r\n 1988          186           28.96         33.3          13.9          0 \r\n 1988          187           28.396        35            16.7          0 \r\n 1988          188           26.891        35            18.3          0 \r\n 1988          189           26.139        33.9          21.1          0 \r\n 1988          190           23.729        32.8          18.3          0 \r\n 1988          191           25.224        32.2          19.4          5.1 \r\n 1988          192           22.421        29.4          18.9          6.1 \r\n 1988          193           15.134        28.9          16.1          0 \r\n 1988          194           23.916        30.6          16.7          0 \r\n 1988          195           22.277        36.1          20            0 \r\n 1988          196           24.133        35            23.3          0 \r\n 1988          197           22.277        36.1          22.2          0 \r\n 1988          198           21.534        32.8          20.6          45.7 \r\n 1988          199           16.23         31.7          19.4          0 \r\n 1988          200           22.87         30            18.9          27.4 \r\n 1988          201           16.415        29.4          17.8          0 \r\n 1988          202           23.239        26.7          15.6          1.8 \r\n 1988          203           16.124        26.1          11.7          0 \r\n 1988          204           26.385        28.3          15            0 \r\n 1988          205           25.469        29.4          16.1          0 \r\n 1988          206           24.937        29.4          17.8          0 \r\n 1988          207           23.481        28.9          15            0 \r\n 1988          208           24.937        29.4          14.4          0 \r\n 1988          209           27.304        31.7          15            0 \r\n 1988          210           26.942        32.2          16.1          0 \r\n 1988          211           26.219        32.2          18.9          0 \r\n 1988          212           23.349        35            20            0 \r\n 1988          213           22.811        37.2          20.6          0 \r\n 1988          214           26.769        36.7          19.4          0 \r\n 1988          215           22.627        35            22.8          0 \r\n 1988          216           19.798        35.6          22.2          0 \r\n 1988          217           21.596        35            21.7          0 \r\n 1988          218           20.191        29.4          16.7          0 \r\n 1988          219           22.122        32.2          12.8          0 \r\n 1988          220           27.204        36.1          16.1          0 \r\n 1988          221           25.983        36.1          22.2          5.1 \r\n 1988          222           16.106        30.6          19.4          0.5 \r\n 1988          223           13.509        32.8          16.7          0 \r\n 1988          224           23.563        35.6          20.6          0 \r\n 1988          225           22.187        35.6          20.6          0 \r\n 1988          226           20.295        32.8          21.7          0 \r\n 1988          227           17.251        38.3          18.3          0 \r\n 1988          228           23.058        38.3          20            0 \r\n 1988          229           22.896        38.3          23.3          0 \r\n 1988          230           20.692        38.9          21.7          0 \r\n 1988          231           20.378        38.3          21.1          0 \r\n 1988          232           20.378        27.2          19.4          0 \r\n 1988          233           14.882        29.4          17.2          0 \r\n 1988          234           17.223        31.7          17.2          0 \r\n 1988          235           21.069        31.1          18.9          142 \r\n 1988          236           12.95         28.3          14.4          0 \r\n 1988          237           14.278        28.3          14.4          0 \r\n 1988          238           21.098        28.3          14.4          0 \r\n 1988          239           20.109        26.1          10.6          0 \r\n 1988          240           23.072        23.9          15            6.6 \r\n 1988          241           13.745        22.8          7.8           0 \r\n 1988          242           21.929        24.4          7.2           0 \r\n 1988          243           23.066        28.3          9.4           0 \r\n 1988          244           21.768        28.3          11.7          0 \r\n 1988          245           20.155        28.9          13.9          0 \r\n 1988          246           17.487        31.1          13.9          0 \r\n 1988          247           17.635        31.1          11.7          0.8 \r\n 1988          248           14.268        24.4          13.9          2.8 \r\n 1988          249           10.296        23.9          7.8           0 \r\n 1988          250           18.832        23.3          5.6           0 \r\n 1988          251           19.853        25.6          6.7           0 \r\n 1988          252           19.269        26.7          14.4          0 \r\n 1988          253           16.661        26.7          6.7           0 \r\n 1988          254           20.703        29.4          10            0 \r\n 1988          255           20.128        30.6          13.3          0 \r\n 1988          256           17.833        29.4          16.1          0 \r\n 1988          257           14.552        23.3          10.6          0 \r\n 1988          258           15.147        26.7          12.2          0 \r\n 1988          259           16.704        26.7          14.4          1.5 \r\n 1988          260           10.674        27.2          16.1          10.7 \r\n 1988          261           7.444         32.8          17.2          0 \r\n 1988          262           13.099        30.6          21.1          0.8 \r\n 1988          263           11.566        26.1          9.4           31.2 \r\n 1988          264           10.23         21.1          8.9           1 \r\n 1988          265           10.092        21.7          8.3           13.2 \r\n 1988          266           14.399        26.7          16.1          0 \r\n 1988          267           9.188         20            7.2           0 \r\n 1988          268           16.323        21.1          6.1           0 \r\n 1988          269           15.915        26.1          7.2           0 \r\n 1988          270           16.191        27.2          11.1          0 \r\n 1988          271           15.381        27.2          13.9          0 \r\n 1988          272           12.846        21.7          13.9          9.7 \r\n 1988          273           6.022         20.6          15.6          8.9 \r\n 1988          274           3.716         20            13.3          2.8 \r\n 1988          275           6.105         20            12.8          0 \r\n 1988          276           9.607         20            7.2           0 \r\n 1988          277           12.766        17.2          2.2           0 \r\n 1988          278           14.485        14.4         -0.6           0 \r\n 1988          279           14.224        12.2         -1.7           0 \r\n 1988          280           14.104        13.9          1.1           0 \r\n 1988          281           13.974        15.6          0.6           0 \r\n 1988          282           14.368        15.6          2.2           0 \r\n 1988          283           13.47         20            3.3           0 \r\n 1988          284           13.863        20.6          8.9           0 \r\n 1988          285           12.972        20.6          2.2           0 \r\n 1988          286           13.238        13.9          0             0 \r\n 1988          287           13.616        20            1.1           0 \r\n 1988          288           13.872        22.2          7.8           0 \r\n 1988          289           12.372        25            11.7          0 \r\n 1988          290           10.652        24.4          9.4           0 \r\n 1988          291           11.395        16.7          10            3 \r\n 1988          292           5.401         13.3         -0.6           0 \r\n 1988          293           11.785        14.4         -1.1           0 \r\n 1988          294           11.557        10            4.4           1.3 \r\n 1988          295           7.299         12.8          5             2.5 \r\n 1988          296           4.744         14.4         -2.2           0 \r\n 1988          297           11.813        14.4          5             0 \r\n 1988          298           9.764         13.3         -2.2           0 \r\n 1988          299           10.391        12.2         -2.8           0 \r\n 1988          300           10.63         13.9         -4.4           0 \r\n 1988          301           11.36         14.4          6.7           0 \r\n 1988          302           10.177        8.9          -5             0 \r\n 1988          303           10.433        5            -3.9           0 \r\n 1988          304           7.854         8.3          -7.2           0 \r\n 1988          305           9.964         18.9         -3.3           0 \r\n 1988          306           10.451        16.7          1.7           0 \r\n 1988          307           10.103        12.8         -1.7           0 \r\n 1988          308           9.201         19.4          0.6           0 \r\n 1988          309           9.661         15.6          7.8           2 \r\n 1988          310           7.746         9.4          -0.6           3.3 \r\n 1988          311           4.67          8.3          -1.7           0 \r\n 1988          312           6.037         10           -2.2           0 \r\n 1988          313           8.235         13.3         -1.1           0 \r\n 1988          314           8.911         10            2.8           0 \r\n 1988          315           6.814         6.1          -2.2           0 \r\n 1988          316           6.925         5            -8.3           0 \r\n 1988          317           8.154         5.6           1.1           17 \r\n 1988          318           3.981         13.9         -0.6           0 \r\n 1988          319           5.308         10.6          1.1           0 \r\n 1988          320           7.631         18.9          8.3           11.2 \r\n 1988          321           7.117         12.2         -2.2           5.8 \r\n 1988          322           6.022         8.3          -5             0 \r\n 1988          323           6.131         11.1         -4.4           0 \r\n 1988          324           7.045         8.3          -0.6           0 \r\n 1988          325           5.961         0            -3.3           0 \r\n 1988          326           5.202         1.7          -10.6          0 \r\n 1988          327           6.436         9.4          -5.6           0 \r\n 1988          328           7.08          14.4         -1.7           0 \r\n 1988          329           7.509         16.1         -1.7           0 \r\n 1988          330           7.402         12.8          1.1           0 \r\n 1988          331           6.476         6.7           1.7           8.9 \r\n 1988          332           2.442         1.7          -5             0 \r\n 1988          333           4.565        -1.1          -11.7          0 \r\n 1988          334           7.326         0.6          -2.2           0.8 \r\n 1988          335           5.043         0            -6.1           0 \r\n 1988          336           5.358         1.7          -11.1          0 \r\n 1988          337           7.564         14.4         -3.3           0 \r\n 1988          338           8.195         7.2           1.1           0 \r\n 1988          339           7.775         3.3          -7.8           0 \r\n 1988          340           7.589         11.1         -3.3           0 \r\n 1988          341           7.381         8.9          -2.2           0 \r\n 1988          342           7.069         3.3          -4.4           0 \r\n 1988          343           6.549        -2.8          -11.1          0 \r\n 1988          344           6.445         3.3          -11.7          0 \r\n 1988          345           7.381         0            -15            0 \r\n 1988          346           7.589        -9.4          -18.3          0 \r\n 1988          347           6.171         0            -11.7          0 \r\n 1988          348           6.48          7.8          -3.3           0 \r\n 1988          349           6.377         4.4          -2.8           0 \r\n 1988          350           5.554        -2.8          -16.1          0 \r\n 1988          351           6.788         0            -19.4          0 \r\n 1988          352           6.891        -2.2          -10            0 \r\n 1988          353           5.04          11.7         -11.7          0 \r\n 1988          354           6.994         12.2         -2.8           0 \r\n 1988          355           6.48          11.1         -2.8           3.8 \r\n 1988          356           4.423         1.1          -6.7           0 \r\n 1988          357           5.451         8.9          -2.8           0 \r\n 1988          358           5.657         8.9          -1.7           0 \r\n 1988          359           5.04          5            -5.6           5.1 \r\n 1988          360           4.217        -3.9          -13.9          0 \r\n 1988          361           5.657         0            -8.3           7.4 \r\n 1988          362           4.217         0            -11.7          3.3 \r\n 1988          363           5.143        -8.9          -14.4          0 \r\n 1988          364           4.525         0            -17.2          0 \r\n 1988          365           7.693         1.7          -9.4           0 \r\n 1988          366           7.381         1.1          -9.4           0 \r\n 1989          1             5.821         0.6          -6.1           0 \r\n 1989          2             7.277        -4.4          -14.4          0 \r\n 1989          3             6.861         0            -7.8           0 \r\n 1989          4             8.316         7.2          -11.1          0 \r\n 1989          5             7.589         4.4          -1.7           7.4 \r\n 1989          6             1.576         0            -2.2           8.4 \r\n 1989          7             6.094         0            -10.6          0 \r\n 1989          8             7.67         -10.6         -16.1          0 \r\n 1989          9             8.195         0            -18.3          0 \r\n 1989          10            8.195         0            -11.7          0 \r\n 1989          11            6.583         1.1          -8.9           0 \r\n 1989          12            6.901         0            -10            0 \r\n 1989          13            8.812         4.4          -11.1          0 \r\n 1989          14            8.6           4.4          -6.1           0 \r\n 1989          15            7.007         3.9          -3.9           0 \r\n 1989          16            8.796         6.1          -7.2           0 \r\n 1989          17            9.118         10           -4.4           0 \r\n 1989          18            7.938         7.2           0.6           0 \r\n 1989          19            6.611         7.2          -1.7           0 \r\n 1989          20            7.153         3.9          -5.6           0 \r\n 1989          21            7.803         7.8          -6.1           0 \r\n 1989          22            8.321         11.7         -2.2           0 \r\n 1989          23            8.43          9.4          -3.3           0 \r\n 1989          24            6.131         4.4          -1.7           0 \r\n 1989          25            1.659         0.6           0             2 \r\n 1989          26            7.41          0            -7.2           0 \r\n 1989          27            9.622         12.8         -4.4           0 \r\n 1989          28            8.154         9.4           0.6           3 \r\n 1989          29            2.122         1.7           0             7.1 \r\n 1989          30            7.26          10           -1.7           0 \r\n 1989          31            9.363         15            2.2           0 \r\n 1989          32            10.942        11.1         -13.9          0 \r\n 1989          33            8.122        -9.4          -19.4          0.5 \r\n 1989          34            9.455        -19.4         -27.8          0 \r\n 1989          35            5.809        -20           -23.9          1 \r\n 1989          36            6.326        -18.3         -22.8          0.5 \r\n 1989          37            10.121       -11.7         -23.9          0 \r\n 1989          38            11.271       -5.6          -19.4          0 \r\n 1989          39            11.961       -6.1          -18.3          0 \r\n 1989          40            13.006       -2.8          -21.7          0 \r\n 1989          41            13.364        0.6          -15.6          0 \r\n 1989          42            12.543        0.6          -10.6          0 \r\n 1989          43            12.188        0.6          -10.6          0 \r\n 1989          44            6.863         0.6          -6.1           2.3 \r\n 1989          45            13.49        -1.7          -15.6          0 \r\n 1989          46            11.825       -2.2          -10.6          0 \r\n 1989          47            13.138       -3.9          -16.7          0 \r\n 1989          48            11.934       -3.9          -13.9          0 \r\n 1989          49            8.438        -4.4          -8.3           0 \r\n 1989          50            11.922       -5.6          -15.6          0 \r\n 1989          51            6.204        -5            -8.9           3.3 \r\n 1989          52            7.857        -3.9          -7.2           0 \r\n 1989          53            13.626       -5.6          -15.6          0 \r\n 1989          54            15.731       -8.3          -23.3          0 \r\n 1989          55            15.854        0.6          -15            0 \r\n 1989          56            14.496        5.6          -6.7           0 \r\n 1989          57            14.371        3.3          -8.3           0 \r\n 1989          58            14.372       -2.2          -13.3          0 \r\n 1989          59            13.868       -0.6          -11.7          0 \r\n 1989          60            9.621        -3.9          -11.7          0 \r\n 1989          61            7.675        -7.8          -13.3          1.5 \r\n 1989          62            8.973         0            -10.6          10.4 \r\n 1989          63            9.487         0            -11.1          5.6 \r\n 1989          64            11.123       -6.7          -15.6          0 \r\n 1989          65            13.638       -3.9          -15            0 \r\n 1989          66            12.538       -0.6          -10.6          0 \r\n 1989          67            12.645        5            -4.4           0 \r\n 1989          68            13.089        9.4          -3.3           0 \r\n 1989          69            15.101        15.6          0             0 \r\n 1989          70            15.325        15            2.2           0 \r\n 1989          71            10.152        6.7           1.1           0 \r\n 1989          72            7.107         5             0             0 \r\n 1989          73            13.081        10            0             0 \r\n 1989          74            17.175        4.4          -8.9           0 \r\n 1989          75            12.386        1.1          -3.3           0 \r\n 1989          76            11.354       -1.1          -7.2           0 \r\n 1989          77            13.644       -3.9          -13.3          0 \r\n 1989          78            15.262        2.8          -6.7           0 \r\n 1989          79            11.19         1.7          -2.2           0 \r\n 1989          80            17.951        1.7          -11.7          0 \r\n 1989          81            18.331        10           -5.6           0 \r\n 1989          82            18.951        16.7         -0.6           0 \r\n 1989          83            18.951        17.8          1.7           0 \r\n 1989          84            19.101        16.7          1.1           0 \r\n 1989          85            19.34         25.6          4.4           0 \r\n 1989          86            16.484        25.6          11.7          0 \r\n 1989          87            16.725        24.4          8.9           0 \r\n 1989          88            15.4          13.3          2.8           0 \r\n 1989          89            14.673        12.2          1.1           0.8 \r\n 1989          90            14.42         10           -1.7           0 \r\n 1989          91            15.57         12.8         -1.1           0.5 \r\n 1989          92            19.671        16.7          1.1           0 \r\n 1989          93            17.92         16.1          6.1           0.8 \r\n 1989          94            19.278        16.1          0             0 \r\n 1989          95            19.414        13.3         -2.2           0 \r\n 1989          96            19.424        12.8          0             0.8 \r\n 1989          97            19.288        11.1         -1.7           0.8 \r\n 1989          98            10.75         3.9          -3.3           10.9 \r\n 1989          99            17.641        2.8          -6.7           0 \r\n 1989          100           20.966        5.6          -6.7           0 \r\n 1989          101           22.632        10           -4.4           0 \r\n 1989          102           24.298        13.3         -6.1           0 \r\n 1989          103           25.178        20           -3.9           0 \r\n 1989          104           20.562        19.4          7.8           0 \r\n 1989          105           22.967        18.3         -0.6           0 \r\n 1989          106           21.136        22.2          8.3           0 \r\n 1989          107           21.148        21.7          2.8           0 \r\n 1989          108           16.89         13.9          2.8           0.8 \r\n 1989          109           23.017        21.1         -1.7           0 \r\n 1989          110           22.874        25.6          6.7           0 \r\n 1989          111           23.327        26.7          5.6           0 \r\n 1989          112           15.839        26.7          10            18.8 \r\n 1989          113           12.472        25            12.8          0 \r\n 1989          114           21.318        30.6          11.1          0 \r\n 1989          115           20.593        30.6          15            0 \r\n 1989          116           20.301        29.4          13.9          11.7 \r\n 1989          117           15.737        27.8          12.8          0 \r\n 1989          118           15.59         27.8          9.4           20.3 \r\n 1989          119           15.002        13.3          3.9           0 \r\n 1989          120           19.105        12.8          0.6           0 \r\n 1989          121           11.205        12.8          4.4           5.6 \r\n 1989          122           21.31         13.9          0.6           0 \r\n 1989          123           23.021        17.2          1.7           0 \r\n 1989          124           14.879        19.4          8.9           6.3 \r\n 1989          125           16.915        18.3          2.8           2 \r\n 1989          126           22.084        12.8         -1.7           0 \r\n 1989          127           25.704        20.6          1.7           0 \r\n 1989          128           23.023        22.2          9.4           0 \r\n 1989          129           22.545        21.7          6.1           0 \r\n 1989          130           25.244        22.8          5.6           0 \r\n 1989          131           24.768        22.8          4.4           0 \r\n 1989          132           26.213        25.6          6.7           0 \r\n 1989          133           26.373        25.6          6.7           0 \r\n 1989          134           21.738        23.9          10            0 \r\n 1989          135           24.298        26.7          8.3           0 \r\n 1989          136           24.137        28.3          12.2          0 \r\n 1989          137           21.24         27.8          13.3          0 \r\n 1989          138           12.959        25            14.4          11.2 \r\n 1989          139           12.635        25.6          13.9          14.2 \r\n 1989          140           25.108        25.6          7.8           0 \r\n 1989          141           24.132        25.6          9.4           0 \r\n 1989          142           22.176        24.4          11.1          0 \r\n 1989          143           22.502        28.3          11.1          0 \r\n 1989          144           15.756        28.9          14.4          57.1 \r\n 1989          145           24.455        27.2          10.6          0 \r\n 1989          146           20.68         22.8          10            0 \r\n 1989          147           24.119        21.1          6.7           0 \r\n 1989          148           19.163        21.1          9.4           6.6 \r\n 1989          149           15.199        31.1          13.3          2.5 \r\n 1989          150           20.155        30.6          20            0 \r\n 1989          151           22.302        29.4          13.9          0 \r\n 1989          152           17.293        22.2          12.8          0 \r\n 1989          153           24.602        28.9          11.7          0 \r\n 1989          154           17.293        28.3          13.3          19.1 \r\n 1989          155           23.532        24.4          11.7          0 \r\n 1989          156           26.206        27.2          11.1          0 \r\n 1989          157           23.864        28.9          14.4          0 \r\n 1989          158           22.428        28.9          16.1          0 \r\n 1989          159           17.225        27.8          12.8          10.7 \r\n 1989          160           18.84         18.9          10            0 \r\n 1989          161           23.684        22.2          8.3           0 \r\n 1989          162           19.916        22.8          15            0 \r\n 1989          163           17.225        27.2          17.2          0 \r\n 1989          164           28.531        26.1          8.3           0 \r\n 1989          165           24.016        20.6          8.3           0 \r\n 1989          166           26.364        21.7          6.1           0 \r\n 1989          167           29.614        25.6          8.3           0 \r\n 1989          168           26.906        26.7          11.7          0 \r\n 1989          169           16.432        26.7          16.1          2.8 \r\n 1989          170           28.17         31.7          14.4          0 \r\n 1989          171           26.725        31.7          16.7          0 \r\n 1989          172           22.933        32.2          18.9          0 \r\n 1989          173           18.419        31.7          16.1          5.3 \r\n 1989          174           13.724        25.6          15.6          2.8 \r\n 1989          175           24.558        26.1          15            5.1 \r\n 1989          176           15.529        27.2          16.7          24.6 \r\n 1989          177           14.807        27.8          18.3          18.3 \r\n 1989          178           15.529        28.3          18.3          0 \r\n 1989          179           24.016        29.4          16.1          0 \r\n 1989          180           24.016        29.4          16.7          0 \r\n 1989          181           26.003        28.9          13.3          0 \r\n 1989          182           26.598        29.4          16.7          0 \r\n 1989          183           24.635        30            17.2          0 \r\n 1989          184           25.763        31.1          17.8          0 \r\n 1989          185           26.327        33.3          18.9          0 \r\n 1989          186           27.644        33.9          19.4          0 \r\n 1989          187           28.208        34.4          17.2          0 \r\n 1989          188           25.011        34.4          21.1          0 \r\n 1989          189           25.411        35            19.4          0 \r\n 1989          190           24.85         35.6          20.6          0 \r\n 1989          191           23.356        36.1          22.8          0 \r\n 1989          192           19.058        36.1          20            3.6 \r\n 1989          193           13.079        28.3          19.4          0 \r\n 1989          194           20.977        28.3          17.8          0 \r\n 1989          195           23.576        27.8          13.9          0 \r\n 1989          196           13.923        25            16.1          3.3 \r\n 1989          197           25.618        26.7          12.8          0 \r\n 1989          198           26.743        27.8          12.2          0 \r\n 1989          199           16.784        27.2          16.1          45.5 \r\n 1989          200           12.726        24.4          16.1          2.3 \r\n 1989          201           23.792        26.7          13.9          0 \r\n 1989          202           24.736        29.4          13.9          0 \r\n 1989          203           20.705        25            15.6          0 \r\n 1989          204           21.804        27.8          15            0 \r\n 1989          205           22.207        28.9          15.6          0 \r\n 1989          206           20.387        29.4          18.9          0 \r\n 1989          207           21.479        30.6          17.8          0 \r\n 1989          208           22.241        32.8          20            0 \r\n 1989          209           22.783        31.7          19.4          0 \r\n 1989          210           19.89         30.6          19.4          7.1 \r\n 1989          211           12.573        28.3          20            0 \r\n 1989          212           18.68         28.9          19.4          0 \r\n 1989          213           23.666        28.9          16.7          0 \r\n 1989          214           24.748        30.6          15            0 \r\n 1989          215           18.207        30.6          21.7          1.8 \r\n 1989          216           17.733        35            21.7          0 \r\n 1989          217           24.932        35            16.1          6.3 \r\n 1989          218           18.435        27.8          13.3          0 \r\n 1989          219           26.332        23.3          8.3           0 \r\n 1989          220           27.029        25.6          11.1          0 \r\n 1989          221           27.017        27.8          10            0 \r\n 1989          222           25.805        28.3          12.8          0 \r\n 1989          223           24.251        28.3          12.8          0 \r\n 1989          224           24.079        28.9          13.3          0 \r\n 1989          225           21.499        26.7          13.9          3.8 \r\n 1989          226           13.493        23.9          15.6          3.8 \r\n 1989          227           21.179        24.4          13.3          0 \r\n 1989          228           23.575        26.1          11.1          0 \r\n 1989          229           23.744        27.2          11.7          0 \r\n 1989          230           24.083        27.8          12.2          0 \r\n 1989          231           19.872        27.2          16.1          10.2 \r\n 1989          232           15.217        28.3          15.6          0 \r\n 1989          233           21.404        28.9          15            0 \r\n 1989          234           20.233        32.2          17.8          0 \r\n 1989          235           14.278        31.1          18.3          10.7 \r\n 1989          236           11.289        26.1          16.1          0 \r\n 1989          237           13.516        25            16.1          0 \r\n 1989          238           14.175        25.6          17.8          3.3 \r\n 1989          239           12.109        28.3          18.9          0 \r\n 1989          240           14.727        27.8          18.9          3 \r\n 1989          241           15.269        26.7          18.9          0 \r\n 1989          242           20.467        28.9          13.9          0 \r\n 1989          243           18.22         32.8          20            1 \r\n 1989          244           18.382        30            18.3          0 \r\n 1989          245           18.079        23.9          11.1          0 \r\n 1989          246           15.857        23.9          13.9          4.1 \r\n 1989          247           10.885        26.7          15            27.2 \r\n 1989          248           19.121        27.2          13.3          0 \r\n 1989          249           16.204        28.3          18.3          0 \r\n 1989          250           9.051         28.3          18.9          16.3 \r\n 1989          251           7.244         23.9          17.8          15.5 \r\n 1989          252           11.3          22.2          13.3          17.8 \r\n 1989          253           18.69         19.4          7.2           0 \r\n 1989          254           16.965        18.9          7.8           0 \r\n 1989          255           12.84         16.7          7.8           0 \r\n 1989          256           14.837        17.2          5.6           0.5 \r\n 1989          257           19.252        19.4          5             0 \r\n 1989          258           19.393        20.6          6.1           0 \r\n 1989          259           19.523        22.8          5.6           0 \r\n 1989          260           19.101        26.7          8.9           0 \r\n 1989          261           16.722        27.2          12.8          0 \r\n 1989          262           17            26.1          10.6          0 \r\n 1989          263           16.727        26.7          10.6          0 \r\n 1989          264           16.589        26.1          11.7          0 \r\n 1989          265           16.182        25            12.8          0 \r\n 1989          266           19.061        16.1         -1.1           0 \r\n 1989          267           17.956        17.2         -1.7           0 \r\n 1989          268           18.228        22.8          3.9           0 \r\n 1989          269           18.079        21.7          1.1           0 \r\n 1989          270           16.865        20.6          2.2           0 \r\n 1989          271           17.262        26.7          3.9           0 \r\n 1989          272           16.46         25.6          9.4           0 \r\n 1989          273           16.456        25.6          5.6           0 \r\n 1989          274           15.262        27.8          10.6          0 \r\n 1989          275           16.187        27.2          3.9           0 \r\n 1989          276           13.555        11.7         -1.7           0 \r\n 1989          277           14.094        15           -0.6           0 \r\n 1989          278           8.874         16.7          8.9           14.5 \r\n 1989          279           8.799         16.1          4.4           0 \r\n 1989          280           14.233        13.3         -1.1           0 \r\n 1989          281           13.085        16.1          1.1           0 \r\n 1989          282           13.983        22.2          2.8           0 \r\n 1989          283           13.608        21.7          2.8           0 \r\n 1989          284           13.1          27.8          6.1           0 \r\n 1989          285           14.12         26.7          4.4           0 \r\n 1989          286           13.364        27.2          5.6           0 \r\n 1989          287           12.497        26.7          10            0 \r\n 1989          288           10.747        27.2          13.9          0 \r\n 1989          289           9.29          26.1          4.4           15.8 \r\n 1989          290           6.317         7.2          -0.6           0 \r\n 1989          291           7.366         7.2          -1.7           0 \r\n 1989          292           6.629         5.6          -2.2           0 \r\n 1989          293           10.949        13.9         -4.4           0 \r\n 1989          294           12.287        18.9          1.1           0 \r\n 1989          295           12.043        22.2          2.2           0 \r\n 1989          296           11.452        26.1          3.9           0 \r\n 1989          297           11.211        25.6          7.2           0 \r\n 1989          298           9.555         26.1          12.2          0 \r\n 1989          299           8.122         24.4          11.1          0 \r\n 1989          300           6.508         22.8          10.6          0 \r\n 1989          301           2.012         15.6          12.2          6.3 \r\n 1989          302           3.165         18.3          11.1          8.9 \r\n 1989          303           6.682         16.1          0.6           26.7 \r\n 1989          304           5.393         11.1         -1.7           1.5 \r\n 1989          305           7.548         10           -0.6           0 \r\n 1989          306           6.387         3.3          -5             0 \r\n 1989          307           7.476         7.8          -5.6           0.5 \r\n 1989          308           8.511         15           -0.6           0 \r\n 1989          309           7.974         13.9          2.8           0.5 \r\n 1989          310           8.088         5.6          -3.9           0 \r\n 1989          311           7.404         11.7         -2.2           0 \r\n 1989          312           6.994         8.3           1.1           0 \r\n 1989          313           8.573         12.8         -4.4           0 \r\n 1989          314           9.048         8.9          -5.6           0 \r\n 1989          315           7.596         13.3          3.9           0 \r\n 1989          316           9.048         10.6         -4.4           0 \r\n 1989          317           8.184         16.7          5             0 \r\n 1989          318           8.847         10           -3.3           0 \r\n 1989          319           7.299         5.6          -1.1           0 \r\n 1989          320           7.992         0            -12.8          0 \r\n 1989          321           7.117         1.1          -13.3          0 \r\n 1989          322           8.102        -3.9          -15.6          0 \r\n 1989          323           9.212         17.8         -7.8           0 \r\n 1989          324           8.454         12.8          5.6           0 \r\n 1989          325           7.803         5.6          -6.1           0 \r\n 1989          326           5.578         2.2          -5.6           0 \r\n 1989          327           7.616         0            -15            0 \r\n 1989          328           7.831         9.4          -10            0 \r\n 1989          329           6.651         6.7          -2.2           0 \r\n 1989          330           7.857         8.9          -9.4           0 \r\n 1989          331           7.113         8.3           0.6           1 \r\n 1989          332           8.812         0.6          -16.1          0.5 \r\n 1989          333           7.644         2.8          -17.2          0 \r\n 1989          334           8.3           7.2          -9.4           0 \r\n 1989          335           8.195         10           -7.2           0 \r\n 1989          336           7.564         5.6          -8.3           0 \r\n 1989          337           7.144        -0.6          -16.1          0 \r\n 1989          338           7.459         10           -5             0 \r\n 1989          339           6.757         13.3         -1.1           0 \r\n 1989          340           7.069         8.3          -6.7           0 \r\n 1989          341           3.431        -6.7          -11.1          0 \r\n 1989          342           2.391        -3.9          -9.4           0 \r\n 1989          343           4.99          5.6          -7.8           0 \r\n 1989          344           5.821         1.1          -7.8           0.8 \r\n 1989          345           5.718        -7.8          -17.2          0 \r\n 1989          346           6.994        -10.6         -25            0 \r\n 1989          347           6.582        -7.8          -15.6          0 \r\n 1989          348           5.76         -15.6         -24.4          0 \r\n 1989          349           5.143        -16.1         -26.1          0 \r\n 1989          350           5.348        -10           -20.6          0 \r\n 1989          351           4.423        -11.1         -17.2          0 \r\n 1989          352           5.657        -12.2         -20.6          0 \r\n 1989          353           6.171        -14.4         -26.1          1 \r\n 1989          354           4.937        -15.6         -20.6          0.5 \r\n 1989          355           6.582        -19.4         -30            0 \r\n 1989          356           4.834        -23.3         -30.6          0 \r\n 1989          357           6.994        -17.2         -31.1          0 \r\n 1989          358           7.714        -3.3          -17.2          1 \r\n 1989          359           6.171         2.2          -3.9           0 \r\n 1989          360           8.331         2.2          -18.3          0 \r\n 1989          361           7.302         2.8          -8.9           0 \r\n 1989          362           5.04          7.8          -2.8           0 \r\n 1989          363           5.554         3.9          -3.3           0 \r\n 1989          364           1.663        -3.3          -5             0 \r\n 1989          365           3.015        -1.1          -3.3           0 \r\n 1990          1             7.277         0.53         -12.27         0 \r\n 1990          2             7.693         8.61         -7.83          0 \r\n 1990          3             7.069         8.4          -3.12          0 \r\n 1990          4             7.173         3.72         -8.08          0 \r\n 1990          5             7.797         7.85         -9.6           0 \r\n 1990          6             8.195         2.02         -9.24          0 \r\n 1990          7             7.354         10.97        -3.95          0 \r\n 1990          8             7.775         10.68        -1.95          0 \r\n 1990          9             5.253         4            -3.77          0 \r\n 1990          10            7.67          9.34         -6.73          0 \r\n 1990          11            7.113         7.14         -3             0 \r\n 1990          12            6.795        -2.6          -12.15         0 \r\n 1990          13            7.963         2.62         -11.97         0 \r\n 1990          14            8.069         8.79         -5.01          0 \r\n 1990          15            9.024         14.53        -4.98          0 \r\n 1990          16            9.011         14.64         2.97          0 \r\n 1990          17            6.115         4.1          -0.96          10.9 \r\n 1990          18            5.471         2.2          -5.2           0 \r\n 1990          19            7.37          0.53         -7.84          0 \r\n 1990          20            3.685         3.48         -4.66          5.3 \r\n 1990          21            6.069        -1.09         -11.84         0 \r\n 1990          22            7.664         3.6          -6.12          0 \r\n 1990          23            6.46          5.81          0.15          0.5 \r\n 1990          24            6.898         3.15         -1.89          0.8 \r\n 1990          25            5.087        -0.7          -6.8           0.8 \r\n 1990          26            9.511         5.67         -9.46          0 \r\n 1990          27            8.073         2.81         -6.26          0 \r\n 1990          28            8.824         5.74         -6.67          0 \r\n 1990          29            9.941         8.83         -5.73          0 \r\n 1990          30            10.276        2.27         -9.58          0 \r\n 1990          31            10.829        11.55        -9.93          0 \r\n 1990          32            11.619        5.52         -9.19          0 \r\n 1990          33            4.512        -3.74         -9.57          1 \r\n 1990          34            5.582        -0.8          -8.55          1 \r\n 1990          35            11.961        9.17         -11.28         0 \r\n 1990          36            11.962        12.47        -0.12          0 \r\n 1990          37            11.041        5.7          -1.9           0 \r\n 1990          38            11.271        12.07        -3.55          0 \r\n 1990          39            11.148        6.96         -2.42          0 \r\n 1990          40            10.219        5.66         -5.09          0 \r\n 1990          41            11.137        5.07         -5.34          0 \r\n 1990          42            10.551        11.52        -1.69          1 \r\n 1990          43            12.78         18.89         0.2           0 \r\n 1990          44            14.082        1.53         -8.49          0 \r\n 1990          45            6.39         -6.59         -9.48          1.8 \r\n 1990          46            3.703        -1.41         -6.61          4.3 \r\n 1990          47            7.405        -1.3          -15.6          1.8 \r\n 1990          48            14.586       -4.82         -20.35         0 \r\n 1990          49            13.501       -0.74         -9.46          0 \r\n 1990          50            12.408       -4.93         -13.34         0 \r\n 1990          51            13.747        1.6          -14.39         0 \r\n 1990          52            14.24         5.59         -7.3           0 \r\n 1990          53            10.066        3.47         -2.54          0 \r\n 1990          54            13.377        9.23         -5.69          0 \r\n 1990          55            15.978       -4.02         -12.75         0 \r\n 1990          56            11.997       -4.21         -13.97         0 \r\n 1990          57            13.872        7.99         -8.68          0 \r\n 1990          58            14.246        2.98         -8             0 \r\n 1990          59            15.885        6.04         -9.76          0 \r\n 1990          60            14.27         11.75        -7.29          0 \r\n 1990          61            13.945        13.93        -3.34          0 \r\n 1990          62            14.81         4.44         -8.17          0 \r\n 1990          63            13.849        16.6         -5.97          0 \r\n 1990          64            13.849        1.51         -1.44          0 \r\n 1990          65            4.289         0.28         -2.1           0 \r\n 1990          66            2.97          1.8          -2.48          36.1 \r\n 1990          67            3.882         8.01          1.79          19.6 \r\n 1990          68            13.533        19.79         5.25          0 \r\n 1990          69            14.654        22.36         3.23          2 \r\n 1990          70            8.39          22.98         15.31         10.9 \r\n 1990          71            9.25          23.49         11.95         0 \r\n 1990          72            8.686         19.93         11.19         24.6 \r\n 1990          73            7.052         17.7          4.55          16 \r\n 1990          74            8.872         5.31          1.55          11.4 \r\n 1990          75            7.684         6.89          1.14          0.2 \r\n 1990          76            8.831         8.06         -1.41          0 \r\n 1990          77            10.637        3.02         -4.99          0 \r\n 1990          78            13.528        2.7          -8.86          0 \r\n 1990          79            15.503        15.43        -5.14          0 \r\n 1990          80            16.086        20.82         1.12          0 \r\n 1990          81            11.75         9.65         -2.96          0 \r\n 1990          82            13.266       -2.98         -7.36          0 \r\n 1990          83            9.12          3.16         -5.43          0 \r\n 1990          84            15.4          8.59         -7.24          0 \r\n 1990          85            16.356        7.8          -6.49          0 \r\n 1990          86            17.086        12.28        -6.08          0 \r\n 1990          87            14.078        8.78          1.53          0 \r\n 1990          88            7.155         6.55          2.09          4.3 \r\n 1990          89            9.216         7.6           2.84          0 \r\n 1990          90            8.065         9.07          4.08          2 \r\n 1990          91            10.911        15.42         0.92          0 \r\n 1990          92            19.132        10.22        -3.21          0 \r\n 1990          93            21.288        14.43        -6.33          0 \r\n 1990          94            20.364        15.5          3.4           0 \r\n 1990          95            20.772        6.08         -7.01          0 \r\n 1990          96            18.877        3.99         -7.35          0 \r\n 1990          97            21.613        15.24        -7.92          0 \r\n 1990          98            21.362        21.4          1.58          5 \r\n 1990          99            17.09         12.42         4.49          4.3 \r\n 1990          100           11.802        9.92         -0.36          0 \r\n 1990          101           19.855        3.8          -5.04          0 \r\n 1990          102           20.827        11.72        -6.38          5.1 \r\n 1990          103           13.988        5.09          2.9           0 \r\n 1990          104           13.149        17.63         0.4           0 \r\n 1990          105           21.277        13.79         0.94          0 \r\n 1990          106           18.881        10.62        -1.08          0 \r\n 1990          107           21.148        9.23         -5.17          0 \r\n 1990          108           21.006        15.36        -2.84          3.7 \r\n 1990          109           14.153        15.56         5.46          0 \r\n 1990          110           16.583        22.62         12.75         0 \r\n 1990          111           20.447        22.34         9.4           0 \r\n 1990          112           21.455        27.55         8.35          0 \r\n 1990          113           21.028        30.29         13.2          0 \r\n 1990          114           17.547        28.63         17.47         0 \r\n 1990          115           16.795        28.03         16.23         0 \r\n 1990          116           14.167        26.13         15.01         10.3 \r\n 1990          117           12.943        17.89         5.65          21.1 \r\n 1990          118           16.767        14.58         0.84          0.5 \r\n 1990          119           18.679        12.67         1.42          0.3 \r\n 1990          120           22.364        16.37         0.07          0 \r\n 1990          121           22.124        16.39        -0.55          0 \r\n 1990          122           24.577        19.58         1.67          0 \r\n 1990          123           23.177        16.46         7.66          9.1 \r\n 1990          124           12.53         15.49         6.04          3.3 \r\n 1990          125           20.674        19.43         6.16          0.5 \r\n 1990          126           25.059        22.76         5.95          0 \r\n 1990          127           23.969        29.42         9.35          0 \r\n 1990          128           21.131        24.62         13.74         28.2 \r\n 1990          129           16.194        15.78         3.72          20.3 \r\n 1990          130           15.083        14.31         2.81          0 \r\n 1990          131           21.91         18.1          3.19          13.2 \r\n 1990          132           13.586        12.03         7.2           6.1 \r\n 1990          133           15.344        19.09         6.79          0 \r\n 1990          134           20.459        22.45         11.31         0 \r\n 1990          135           20.114        21.16         10.82         21.8 \r\n 1990          136           13.034        19.65         11.63         0.3 \r\n 1990          137           21.24         20.39         7.99          0 \r\n 1990          138           25.918        25.5          8.44          39.4 \r\n 1990          139           16.523        20.42         11.08         21.3 \r\n 1990          140           18.79         12.14         7.33          0 \r\n 1990          141           9.62          14.06         9.14          0.3 \r\n 1990          142           22.339        21.38         7.9           0 \r\n 1990          143           15.001        18.74         12.56         17.3 \r\n 1990          144           11.653        18.33         11.43         10.9 \r\n 1990          145           8.863         18.53         14.76         15.2 \r\n 1990          146           12.802        21.25         15.2          0 \r\n 1990          147           21.476        23.02         12.42         0 \r\n 1990          148           22.798        23.41         12.18         0 \r\n 1990          149           24.78         25.63         13.11         0 \r\n 1990          150           23.128        21.61         12.35         0 \r\n 1990          151           24.285        22.6          10.32         0 \r\n 1990          152           22.307        27.46         15.54         0 \r\n 1990          153           24.245        22.07         14.66         6.1 \r\n 1990          154           18.006        14.96         7.37          0.3 \r\n 1990          155           23.176        19.9          7.47          0 \r\n 1990          156           25.493        27.34         12.98         0 \r\n 1990          157           21.711        15.6          11.86         0 \r\n 1990          158           27.273        20.33         12.23         15.2 \r\n 1990          159           14.354        24.57         15.99         0.3 \r\n 1990          160           26.914        28            14.86         0 \r\n 1990          161           28.17         30.24         15.03         0 \r\n 1990          162           22.608        29.72         19.85         0 \r\n 1990          163           20.813        33.17         23.07         0.5 \r\n 1990          164           18.057        28.81         19.11         8.1 \r\n 1990          165           17.335        28.68         20.73         0 \r\n 1990          166           19.141        26.64         16.11         15.5 \r\n 1990          167           13.904        30.62         20.42         75.2 \r\n 1990          168           14.807        29.95         19.22         2.3 \r\n 1990          169           26.725        31.07         16.88         0 \r\n 1990          170           18.599        22.43         18.48         25.4 \r\n 1990          171           14.085        27.05         17.44         0 \r\n 1990          172           23.294        22.66         16.46         14.7 \r\n 1990          173           15.891        24.48         16.06         5.6 \r\n 1990          174           18.78         25.03         14.5          0 \r\n 1990          175           25.822        27.66         15.35         0 \r\n 1990          176           19.863        27.44         19.74         0 \r\n 1990          177           22.572        33.34         21.04         1.5 \r\n 1990          178           25.1          33.83         20.39         0 \r\n 1990          179           18.96         30.33         19.63         22.4 \r\n 1990          180           15.891        33.43         24.14         0.3 \r\n 1990          181           13.904        33.93         23.09         3.6 \r\n 1990          182           27.381        31.11         20.37         0 \r\n 1990          183           23.883        30.98         20.7          0 \r\n 1990          184           22.378        36.5          24.85         0 \r\n 1990          185           24.447        35.03         18.84         32.3 \r\n 1990          186           21.062        27.03         19.12         4.1 \r\n 1990          187           22.754        25.38         16.9          0 \r\n 1990          188           21.438        32.23         20.31         0 \r\n 1990          189           21.114        31.95         20.29         0 \r\n 1990          190           19.058        25.99         19.18         22.6 \r\n 1990          191           13.827        21.85         18.64         20.1 \r\n 1990          192           17.003        27.46         16.48         0 \r\n 1990          193           19.058        20.25         14.73         26.2 \r\n 1990          194           16.151        22.92         12.78         0 \r\n 1990          195           25.432        23.22         13.34         9.1 \r\n 1990          196           19.863        26.79         14.16         0 \r\n 1990          197           26.175        29.95         16.45         0 \r\n 1990          198           23.977        29.46         19.34         0 \r\n 1990          199           21.026        29.87         21.29         1.8 \r\n 1990          200           15.861        28.14         21.85         14.5 \r\n 1990          201           14.201        26.32         20.4          0 \r\n 1990          202           20.155        24.99         18.57         0 \r\n 1990          203           20.522        24.26         15.17         0 \r\n 1990          204           26.568        26.26         13.89         0 \r\n 1990          205           24.937        25.68         15.42         0 \r\n 1990          206           20.023        26.2          18.18         1.3 \r\n 1990          207           12.742        25.94         20.11         13.5 \r\n 1990          208           12.476        31.89         23.7          26.9 \r\n 1990          209           15.912        31.04         22.45         10.4 \r\n 1990          210           15.912        29.67         21.04         0 \r\n 1990          211           23.17         24.59         16.76         0 \r\n 1990          212           25.325        25.29         13.96         0 \r\n 1990          213           28.321        26.21         13.54         0 \r\n 1990          214           24.218        27.81         17.02         2.3 \r\n 1990          215           14.849        26.48         20.05         8.9 \r\n 1990          216           14.924        30.34         16.12         0 \r\n 1990          217           26.512        23.32         13.77         0 \r\n 1990          218           27.214        24.01         11.1          0 \r\n 1990          219           26.332        25.2          12.98         0 \r\n 1990          220           26.157        25.07         12.67         0 \r\n 1990          221           24.419        34.34         16.5          27.4 \r\n 1990          222           17.492        28.44         19.11         1.8 \r\n 1990          223           14.963        28.68         19.94         0.5 \r\n 1990          224           19.263        25.09         15.94         0 \r\n 1990          225           23.219        25.45         14.63         0 \r\n 1990          226           21.35         27.26         18.04         0 \r\n 1990          227           22.887        29.62         19.13         0 \r\n 1990          228           21.2          28.7          20.55         0 \r\n 1990          229           14.077        33.15         24.14         5.3 \r\n 1990          230           18.694        32.38         22.61         0 \r\n 1990          231           18.694        29.53         22.58         32.8 \r\n 1990          232           10.2          29.33         22.92         0.3 \r\n 1990          233           14.213        23.34         21.26         0 \r\n 1990          234           12.374        25.11         21.05         0 \r\n 1990          235           16.768        33.7          21.1          0 \r\n 1990          236           14.278        31.05         22.34         15.7 \r\n 1990          237           15.494        34.61         21.85         1.3 \r\n 1990          238           19.944        34.77         25.44         0 \r\n 1990          239           18.981        34.1          23            0 \r\n 1990          240           19.963        31.7          21.72         0 \r\n 1990          241           20.467        30.25         19.51         3 \r\n 1990          242           16.731        34.54         19.12         0.3 \r\n 1990          243           20.639        32.2          18.81         0 \r\n 1990          244           19.672        30.71         21.49         4.7 \r\n 1990          245           10.373        26.23         21.56         1.4 \r\n 1990          246           10.67         30.45         20.27         0 \r\n 1990          247           16.768        33.52         22.26         0 \r\n 1990          248           18.239        34.43         20.74         0 \r\n 1990          249           17.518        34.23         21.68         0.6 \r\n 1990          250           18.54         29.61         17.43         0.1 \r\n 1990          251           13.618        27.97         16.94         0 \r\n 1990          252           17.385        32.26         19.32         0.1 \r\n 1990          253           18.403        31.61         17.64         0 \r\n 1990          254           17.396        30.23         18.96         0 \r\n 1990          255           17.119        31.38         18.63         0 \r\n 1990          256           17.405        30.11         17.34         0 \r\n 1990          257           17.412        23.99         12.14         0 \r\n 1990          258           19.393        27.97         9.16          0 \r\n 1990          259           19.663        18.85         8.01          0 \r\n 1990          260           16.152        17.98         7.11          11.7 \r\n 1990          261           8.361         23.47         12.91         2.7 \r\n 1990          262           6.271         21.61         12.93         0.7 \r\n 1990          263           12.995        23.07         12.65         0.8 \r\n 1990          264           12.718        22.93         10.58         0 \r\n 1990          265           15.359        15.74         8.09          0 \r\n 1990          266           14.399        15.65         3.94          0 \r\n 1990          267           17.412        24.62         3.54          0 \r\n 1990          268           17.548        29.66         12.2          0 \r\n 1990          269           17.135        30.83         13.01         0.3 \r\n 1990          270           16.191        25.66         11.82         1.3 \r\n 1990          271           13.516        22.44         10.24         0.1 \r\n 1990          272           13.649        15.49         7.15          0.2 \r\n 1990          273           15.129        20.07         4.19          0 \r\n 1990          274           14.598        21.89         10.64         0 \r\n 1990          275           14.608        25.79         10.33         0 \r\n 1990          276           9.607         20.73         7.13          25.6 \r\n 1990          277           9.918         22.11         6.98          0 \r\n 1990          278           13.963        30.88         15.66         0 \r\n 1990          279           12.292        23.22         9.89          0 \r\n 1990          280           14.492        13.49         4.58          0 \r\n 1990          281           8.595         8.2           3.79          4.8 \r\n 1990          282           4.234         10.35         2.81          0 \r\n 1990          283           11.955        12.48        -1.7           0 \r\n 1990          284           13.736        19.84         0.98          0 \r\n 1990          285           12.986        14.54         2.98          0 \r\n 1990          286           12.86         19.36         2.31          0 \r\n 1990          287           11.497        16.56         3.67          1.8 \r\n 1990          288           12.372        13.73         2.41          0 \r\n 1990          289           11.643        22.11         7.34          0 \r\n 1990          290           11.519        19.9          4.2           0 \r\n 1990          291           9.33          9.24         -0.9           2.8 \r\n 1990          292           11.662        15.99        -1.63          0 \r\n 1990          293           9.975         13.41         4.54          1 \r\n 1990          294           6.934         9.35         -1.23          5.6 \r\n 1990          295           11.07         16.41        -1.51          0 \r\n 1990          296           11.572        19.53         2.63          0 \r\n 1990          297           11.452        13.35         1.56          0 \r\n 1990          298           11.466        13.43        -2.09          0 \r\n 1990          299           11.347        20.02         0.73          0 \r\n 1990          300           9.822         14.1          2.06          0 \r\n 1990          301           11.123        14.04        -1             0 \r\n 1990          302           10.668        25.55         2.44          0 \r\n 1990          303           10.082        22.42         7.75          0 \r\n 1990          304           10.551        24.95         5.87          0 \r\n 1990          305           9.406         24.38         12.61         0 \r\n 1990          306           7.664         19.42         7.77          3 \r\n 1990          307           5.176         7.76          0.75          13.2 \r\n 1990          308           2.645         2.32         -0.65          6.9 \r\n 1990          309           4.898         5.67         -2.27          0 \r\n 1990          310           4.67          0.68         -5.53          8.6 \r\n 1990          311           6.493        -2.19         -11.76         0 \r\n 1990          312           8.46          2.09         -5.43          2.5 \r\n 1990          313           3.948         6.82         -1.92          0 \r\n 1990          314           6.925         8.9          -0.68          0 \r\n 1990          315           9.159         13.99        -1.55          0 \r\n 1990          316           9.606         10.78        -2.34          0 \r\n 1990          317           8.626         12.32        -0.21          0 \r\n 1990          318           8.294         22.76         0.9           0 \r\n 1990          319           7.52          21.21         7.62          0 \r\n 1990          320           8.321         11.64         1.04          0 \r\n 1990          321           8.43          11.11        -4.2           0 \r\n 1990          322           7.445         14.12         1.24          0 \r\n 1990          323           8.02          15.05        -1.42          0 \r\n 1990          324           7.37          18.33         5.39          0 \r\n 1990          325           6.828         22.1         -1.45          0 \r\n 1990          326           8.367         14.07        -2.16          0 \r\n 1990          327           5.793         11.08         2.52          0 \r\n 1990          328           6.758         14.86         0.18          0 \r\n 1990          329           7.616         6.12         -3.97          0 \r\n 1990          330           6.583         18.42        -3.42          0 \r\n 1990          331           5.839         3.55         -5.38          5.1 \r\n 1990          332           4.99          2.81         -7.99          0 \r\n 1990          333           6.901         7.18         -8.32          0 \r\n 1990          334           6.724         12            0.65          0 \r\n 1990          335           5.883         7.64         -5.91          0 \r\n 1990          336           6.619         2.51         -7.81          0 \r\n 1990          337           2.732        -1.94         -6.64          22.9 \r\n 1990          338           4.518        -2.9          -12.53         0 \r\n 1990          339           7.173         19.45        -6.18          0 \r\n 1990          340           5.925         2.26         -5.75          0 \r\n 1990          341           5.925         4.35         -5.87          0 \r\n 1990          342           6.445         7.25         -1.7           0 \r\n 1990          343           6.965         9.01         -1.54          0 \r\n 1990          344           6.445         7.57         -0.8           0 \r\n 1990          345           6.341         11.01        -1.01          0 \r\n 1990          346           5.554         6.64         -0.96          0 \r\n 1990          347           4.937        -0.71         -5.63          0 \r\n 1990          348           3.703         0.82         -5.14          3.8 \r\n 1990          349           1.748         1.45         -1.37          7.4 \r\n 1990          350           4.011         1.68         -5.14          0 \r\n 1990          351           3.086         2.3          -10.6          7.9 \r\n 1990          352           5.554        -1.03         -16.07         0 \r\n 1990          353           5.657         2.33         -1.03          0.2 \r\n 1990          354           7.611         3.5          -18.92         0.8 \r\n 1990          355           6.685        -18.83        -22.94         3.3 \r\n 1990          356           2.983        -21.58        -25.23         0 \r\n 1990          357           5.348        -15.41        -25.38         0 \r\n 1990          358           7.097        -4.7          -17.74         0 \r\n 1990          359           7.714        -5.67         -23.42         0 \r\n 1990          360           6.891        -11.37        -23.41         0 \r\n 1990          361           6.48         -4.68         -14.22         0 \r\n 1990          362           6.48          0.95         -9.73          0 \r\n 1990          363           8.64         -9.77         -22.83         1.5 \r\n 1990          364           3.638        -19.5         -23.18         0 \r\n 1990          365           5.406        -5.16         -21.24         0 \r\n 1991          1             7.797        -1.59         -13.56         0 \r\n 1991          2             7.797        -13.59        -19.65         0 \r\n 1991          3             6.237        -10.62        -20.71         0 \r\n 1991          4             7.381        -8.15         -18.51         0 \r\n 1991          5             4.782        -7.17         -15.39         12.4 \r\n 1991          6             8.195        -13.9         -21.72         0 \r\n 1991          7             7.775        -7.71         -22.5          0 \r\n 1991          8             7.88         -3.75         -8.41          0 \r\n 1991          9             8.09         -8.42         -18.65         0 \r\n 1991          10            6.934        -3.68         -14.14         0 \r\n 1991          11            3.822        -2.73         -5.71          4.8 \r\n 1991          12            4.671        -4.42         -8.39          0 \r\n 1991          13            5.521        -0.6          -8.32          0 \r\n 1991          14            7.644         4.8          -7.94          0 \r\n 1991          15            7.113        -0.48         -3.97          0 \r\n 1991          16            4.076        -2.49         -7.66          0 \r\n 1991          17            5.686        -0.91         -13.97         0 \r\n 1991          18            9.226         1.32         -11.43         0 \r\n 1991          19            7.262         4.68         -4.41          0 \r\n 1991          20            10.188       -0.75         -17.82         0 \r\n 1991          21            9.104        -14.81        -23.71         0 \r\n 1991          22            10.401        1.29         -22.61         0 \r\n 1991          23            9.854         1.27         -11.47         0 \r\n 1991          24            10.62        -11.53        -20.65         0 \r\n 1991          25            6.857        -11.24        -22.24         1 \r\n 1991          26            9.953        -7.31         -21.18         0 \r\n 1991          27            9.069        -1.92         -13.69         0 \r\n 1991          28            7.484        -4.28         -12.87         0 \r\n 1991          29            9.83         -12.89        -21.31         1 \r\n 1991          30            11.505       -7.68         -25.11         0 \r\n 1991          31            11.844       -1            -19.21         0 \r\n 1991          32            12.296        4.36         -11.42         0 \r\n 1991          33            11.506        5.1          -6.45          0 \r\n 1991          34            9.796         6.68          0.3           0 \r\n 1991          35            8.771         5.31         -0.45          0 \r\n 1991          36            10.121        3.56         -2.08          0 \r\n 1991          37            10.811        8.22         -3.92          0 \r\n 1991          38            10.006        7.68         -2.58          0 \r\n 1991          39            11.38         10.44        -2.46          0 \r\n 1991          40            11.38         5.21         -2.82          0 \r\n 1991          41            9.613         3.1          -2.66          0 \r\n 1991          42            7.972        -0.96         -7.62          0 \r\n 1991          43            10.413        6.55         -7.55          0 \r\n 1991          44            11.715        3.58         -3.63          0 \r\n 1991          45            12.898       -3.56         -16.66         0 \r\n 1991          46            12.183       -9.67         -19.81         0 \r\n 1991          47            14.213        6.16         -12.91         0 \r\n 1991          48            11.693        5.62         -3.11          0 \r\n 1991          49            4.581         1.88         -0.97          4.3 \r\n 1991          50            6.569         1.32         -5.17          0 \r\n 1991          51            12.408        12.07        -3.19          0 \r\n 1991          52            14.363        16.17         1.09          0 \r\n 1991          53            14.977        2.03         -3.46          0 \r\n 1991          54            9.414         6.58         -5.02          0 \r\n 1991          55            15.359       -2.86         -10.21         0 \r\n 1991          56            12.872       -2.74         -12.71         0 \r\n 1991          57            11.497       -1.04         -7.41          0 \r\n 1991          58            12.607        5.27         -7.82          0 \r\n 1991          59            14.877        13.53        -3.36          0 \r\n 1991          60            9.729         12.21         3.12          15.8 \r\n 1991          61            11.027        3.27         -8.5           16.3 \r\n 1991          62            9.837        -0.58         -10.11         0 \r\n 1991          63            13.085        9.42         -4.22          0 \r\n 1991          64            14.612        16.7          0.19          0 \r\n 1991          65            16.168        0.61         -5.25          0 \r\n 1991          66            12.538        2.39         -8.12          0 \r\n 1991          67            13.755        9.78         -1.35          0 \r\n 1991          68            14.975        7.03         -4.73          0 \r\n 1991          69            13.647        9.07         -1.76          0 \r\n 1991          70            13.535        13.31         1.62          0 \r\n 1991          71            9.927         5.29          0.72          18.5 \r\n 1991          72            5.076         2.96         -4.31          9.4 \r\n 1991          73            12.626        2.36         -6.27          0 \r\n 1991          74            14.104        5.96         -4.5           0 \r\n 1991          75            7.913         5.53          1.01          5.6 \r\n 1991          76            4.358         6.37          1.94          18.5 \r\n 1991          77            7.862         7.71          0.39          0.2 \r\n 1991          78            16.881        16.44         0.67          0 \r\n 1991          79            18.3          19.95         3.58          0.8 \r\n 1991          80            17.484        18.46         4.33          0 \r\n 1991          81            16.921        17.18         3.8           17.8 \r\n 1991          82            12.437        8.82          1.49          10.2 \r\n 1991          83            11.134        15.78         3.38          0 \r\n 1991          84            18.624        24.44         4.46          0 \r\n 1991          85            18.504        29.64         14.73         0 \r\n 1991          86            14.319        26.93        -0.57          10.9 \r\n 1991          87            18.65         10.8         -3.75          0 \r\n 1991          88            16.734        2            -4.71          0 \r\n 1991          89            17.341        8.6          -6.44          0 \r\n 1991          90            14.787        13.62         2.35          0 \r\n 1991          91            16.48         16.25         0.57          0 \r\n 1991          92            18.189        19.41         4.35          0 \r\n 1991          93            17.516        18.74         6.53          0 \r\n 1991          94            18.192        30.66         10.05         0 \r\n 1991          95            19.821        29.35         8.11          0 \r\n 1991          96            18.467        31.9          15.97         0 \r\n 1991          97            17.92         27.03         15.33         0 \r\n 1991          98            17.503        18.47         6             68.8 \r\n 1991          99            12.817        6.69          0.87          0 \r\n 1991          100           17.773        11.88        -1.02          0 \r\n 1991          101           15.551        7.06          3.57          2.3 \r\n 1991          102           5.832         8.26          2.9           42.7 \r\n 1991          103           5.875         16.96         6.42          6.1 \r\n 1991          104           7.134         17.96         6.5           27.2 \r\n 1991          105           16.768        13.2          5.04          0 \r\n 1991          106           16.486        12.97         4.62          0 \r\n 1991          107           17.032        17            3.22          0 \r\n 1991          108           12.348        11.12         7.11          26.2 \r\n 1991          109           5.004         10.18         7.08          2.3 \r\n 1991          110           8.292         13.45         5             1 \r\n 1991          111           20.447        14.03         1.68          0 \r\n 1991          112           20.303        17.09         3.45          6.9 \r\n 1991          113           14.647        9.6           2.49          0 \r\n 1991          114           22.043        18.27         1.62          0 \r\n 1991          115           20.739        15.69         8.48          1.5 \r\n 1991          116           19.424        22.78         7.67          22.9 \r\n 1991          117           14.855        19.55         11.23         0.3 \r\n 1991          118           22.944        23.31         5.83          1.3 \r\n 1991          119           15.149        20.74         11.7          7.1 \r\n 1991          120           14.958        12.99         6.53          0 \r\n 1991          121           18.101        15.85         4.91          0 \r\n 1991          122           21.621        15.34         5             0.3 \r\n 1991          123           13.844        14.8          6.87          4.8 \r\n 1991          124           7.831         18.12         12.38         3.8 \r\n 1991          125           11.277        10.16         5.09          16.5 \r\n 1991          126           10.964        10.93         3.8           0 \r\n 1991          127           23.338        16.16         3.46          0 \r\n 1991          128           24.6          23.9          10.21         0 \r\n 1991          129           25.085        25.21         12.03         0 \r\n 1991          130           23.497        23.72         15.04         0 \r\n 1991          131           19.846        34.91         18.81         0 \r\n 1991          132           20.779        29.48         20            0 \r\n 1991          133           23.176        30.55         17.98         0 \r\n 1991          134           23.336        30.42         17.85         4.3 \r\n 1991          135           16.574        29.9          19.36         11.9 \r\n 1991          136           13.034        29.55         18.82         13 \r\n 1991          137           16.735        28.26         14.94         16.5 \r\n 1991          138           18.628        26.93         12.12         0.5 \r\n 1991          139           14.093        26.82         15.23         0.3 \r\n 1991          140           19.276        23.46         14.24         0 \r\n 1991          141           17.121        41.84         20.65         0.3 \r\n 1991          142           12.555        30.95         20.45         0.8 \r\n 1991          143           13.208        29.1          21.59         0.5 \r\n 1991          144           18.547        30.7          19.51         0 \r\n 1991          145           17.726        31.11         19.59         0.8 \r\n 1991          146           15.756        35.29         18.88         0 \r\n 1991          147           23.624        32.03         18.49         0 \r\n 1991          148           21.972        33.43         22.29         0 \r\n 1991          149           22.467        29.9          21.09         18 \r\n 1991          150           17.346        30.25         19.7          0 \r\n 1991          151           18.668        30.95         20.07         4.4 \r\n 1991          152           14.872        28.47         20.07         0 \r\n 1991          153           17.471        28.56         19.67         0 \r\n 1991          154           23.71         30.14         19.71         43.6 \r\n 1991          155           21.215        21.94         16.04         0 \r\n 1991          156           15.332        24.37         15.48         0 \r\n 1991          157           26.017        25.05         14.78         0 \r\n 1991          158           26.376        26.24         15.43         0 \r\n 1991          159           26.376        25.56         15.81         0 \r\n 1991          160           21.89         28.66         19.44         0 \r\n 1991          161           16.687        26.4          19.26         0 \r\n 1991          162           19.019        28.7          17.82         0 \r\n 1991          163           26.017        32.22         19.44         5 \r\n 1991          164           24.016        28.53         20.25         28.5 \r\n 1991          165           18.78         31.19         20.3          12.6 \r\n 1991          166           18.599        26.87         17.22         0 \r\n 1991          167           27.086        26.63         15.43         0 \r\n 1991          168           27.447        24.76         16.17         0 \r\n 1991          169           27.267        31.66         16.74         0 \r\n 1991          170           26.003        31.8          19.58         0 \r\n 1991          171           25.28         31.03         19.43         0 \r\n 1991          172           18.599        25.28         18.18         7.4 \r\n 1991          173           16.071        20.18         16.57         0 \r\n 1991          174           12.64         21.67         16.11         0 \r\n 1991          175           18.78         28.89         19.41         0 \r\n 1991          176           22.933        31.19         20.64         0 \r\n 1991          177           22.03         35.82         22.95         0 \r\n 1991          178           22.211        34.33         22.88         0 \r\n 1991          179           22.391        33.6          22.62         0 \r\n 1991          180           22.211        35.7          24.05         0 \r\n 1991          181           23.836        34.15         21.94         0 \r\n 1991          182           19.167        32.29         20.28         7.6 \r\n 1991          183           26.703        30.11         18.84         0 \r\n 1991          184           25.575        25.54         16.91         0 \r\n 1991          185           25.575        28.7          16.18         0 \r\n 1991          186           28.02         33.66         17.64         0 \r\n 1991          187           26.327        34.28         20.85         1 \r\n 1991          188           23.507        31.27         19.75         0 \r\n 1991          189           28.027        27.59         15.71         4.6 \r\n 1991          190           16.442        25.93         20.63         0.3 \r\n 1991          191           20.179        33.72         20.56         0 \r\n 1991          192           17.377        31.25         25.05         0 \r\n 1991          193           20.927        30.69         19.43         0 \r\n 1991          194           23.947        24.2          17.5          0 \r\n 1991          195           25.247        27.81         15.7          0 \r\n 1991          196           28.031        30.46         14.8          0.3 \r\n 1991          197           26.175        33.4          19.98         0 \r\n 1991          198           24.714        34.7          20.79         0 \r\n 1991          199           26.743        33.85         22.58         0 \r\n 1991          200           23.608        33.03         21.28         0 \r\n 1991          201           20.841        34.08         23.17         0 \r\n 1991          202           18.872        30.24         25.67         0 \r\n 1991          203           18.323        33.88         20.2          0 \r\n 1991          204           28.034        26.29         16.39         0 \r\n 1991          205           27.304        27.93         13.81         0 \r\n 1991          206           28.76         24.32         12.51         0 \r\n 1991          207           27.668        26.84         11.52         0 \r\n 1991          208           24.591        25.55         13.67         0 \r\n 1991          209           15.189        26.08         16.74         0 \r\n 1991          210           15.008        23.24         15.82         0 \r\n 1991          211           24.607        28.05         13.7          0 \r\n 1991          212           23.709        30.16         18.21         0 \r\n 1991          213           27.545        31.33         17.24         0 \r\n 1991          214           22.096        30.45         22.29         0 \r\n 1991          215           20.505        26.84         18.76         0 \r\n 1991          216           20.542        24.11         17.77         0 \r\n 1991          217           16.855        18.54         16.62         0 \r\n 1991          218           8.428         30.3          17.65         0 \r\n 1991          219           11.858        28.43         18.91         22.6 \r\n 1991          220           13.602        25.25         20.58         4.1 \r\n 1991          221           20.263        26.93         16.92         0 \r\n 1991          222           23.207        26.42         16.23         0 \r\n 1991          223           22.703        27.32         14.67         0 \r\n 1991          224           23.563        29.17         15.93         0 \r\n 1991          225           22.875        27.45         15.95         0.8 \r\n 1991          226           23.741        27.93         16.14         0 \r\n 1991          227           24.424        29.36         14.36         0 \r\n 1991          228           21.031        23.92         18.65         1.5 \r\n 1991          229           14.247        27.82         17.24         0 \r\n 1991          230           14.483        25            17.92         22.1 \r\n 1991          231           23.072        22.42         13.34         0 \r\n 1991          232           23.243        23.16         10.99         1 \r\n 1991          233           22.407        30.02         15.75         0 \r\n 1991          234           23.076        29.51         17.63         0 \r\n 1991          235           19.59         25.4          19.32         0 \r\n 1991          236           17.764        31.11         22.29         0 \r\n 1991          237           20.109        31.26         21.15         0 \r\n 1991          238           20.439        31.97         19.53         0 \r\n 1991          239           20.618        31.66         19.49         0 \r\n 1991          240           19.308        31.38         21.6          0 \r\n 1991          241           18.193        30.9          22.11         0 \r\n 1991          242           17.706        30.46         22.02         0 \r\n 1991          243           14.996        29.57         17.65         0 \r\n 1991          244           21.123        27.53         14.85         0 \r\n 1991          245           17.487        29.23         19.62         0 \r\n 1991          246           13.93         29.72         12.7          0 \r\n 1991          247           21.328        25.25         10.49         0 \r\n 1991          248           20.298        26.37         11.22         0 \r\n 1991          249           19.269        30.19         12.63         0 \r\n 1991          250           18.832        30.37         16.39         0 \r\n 1991          251           10.866        35.9          20.39         0 \r\n 1991          252           7.389         29.97         19.88         0 \r\n 1991          253           15.958        24.54         17.62         0 \r\n 1991          254           11.07         30.73         17.98         0 \r\n 1991          255           10.985        30.25         21.02         21.8 \r\n 1991          256           10.842        31.71         22.37         0 \r\n 1991          257           10.051        27.38         21.95         0 \r\n 1991          258           7.644         28.71         15.71         0 \r\n 1991          259           17.275        22.31         10.93         0 \r\n 1991          260           16.714        22.46         10.49         0 \r\n 1991          261           13.099        12.36         2.56          0 \r\n 1991          262           16.164        11.76         0.08          0 \r\n 1991          263           18.109        17.53        -0.6           0 \r\n 1991          264           18.386        19.33         1.8           0 \r\n 1991          265           14.536        17.97         4.84          0 \r\n 1991          266           17.416        19.26         3             1.3 \r\n 1991          267           14.555        15.65         3.26          0 \r\n 1991          268           16.459        20.74         3.6           0 \r\n 1991          269           17.27         18.31         1.48          0 \r\n 1991          270           15.111        17.3          3.5           0 \r\n 1991          271           16.593        21.29         1.24          0 \r\n 1991          272           16.593        29.51         9.94          0 \r\n 1991          273           14.864        20.02         6.36          0 \r\n 1991          274           16.323        27.63         5.18          0 \r\n 1991          275           15.134        22.09         9.48          0 \r\n 1991          276           14.213        12.34         6.25          3.3 \r\n 1991          277           4.045         11.31         6.83          21.8 \r\n 1991          278           6.264         8.23          1.5           6.3 \r\n 1991          279           11.128        10.54        -0.16          0 \r\n 1991          280           15.398        20.47        -2.1           0 \r\n 1991          281           15.395        25.48         7.76          0 \r\n 1991          282           14.497        22.33         6.63          0 \r\n 1991          283           14.117        19.2          4.36          0 \r\n 1991          284           12.337        21.99         12.89         0 \r\n 1991          285           13.238        16.68         5.74          0 \r\n 1991          286           10.968        19.01         5.24          0 \r\n 1991          287           11.122        12.37         1.34          0 \r\n 1991          288           12.122        11.93        -2.98          0 \r\n 1991          289           12.634        25.7          5.06          0 \r\n 1991          290           12.262        25.7          4.45          0 \r\n 1991          291           13.012        8.18         -1.37          1.5 \r\n 1991          292           11.417        9.06         -5.61          0 \r\n 1991          293           11.922        16.78        -3.41          0 \r\n 1991          294           11.679        23.01         4.62          0 \r\n 1991          295           10.462        25.08         11.3          0 \r\n 1991          296           9.885         26            9.41          0 \r\n 1991          297           8.076         21.93         3.87          18.8 \r\n 1991          298           5.853         10.97         0.45          1.5 \r\n 1991          299           4.658         15.67         6.99          12.2 \r\n 1991          300           2.603         22.12         15.02         0.5 \r\n 1991          301           3.432         28.51         4.46          9.4 \r\n 1991          302           8.323         18.86        -2.32          0 \r\n 1991          303           5.275         0.93         -4.38          0 \r\n 1991          304           2.931         2.77         -1.8           9.1 \r\n 1991          305           3.484         3.3          -6.87          35.6 \r\n 1991          306           5.574        -6.9          -10.91         0 \r\n 1991          307           4.371        -8.05         -13.24         0 \r\n 1991          308           8.626        -4.57         -15.77         0 \r\n 1991          309           9.227         3.06         -7.92          0 \r\n 1991          310           9.227        -3.99         -16.32         1.8 \r\n 1991          311           7.404        -6.29         -19.17         0 \r\n 1991          312           10.491       -4.24         -20.4          0 \r\n 1991          313           10.039        4.48         -9.6           0 \r\n 1991          314           6.479         0.9          -1.27          0 \r\n 1991          315           1.787         2.09         -0.69          0 \r\n 1991          316           3.351         5.47          2.09          0 \r\n 1991          317           7.41          14.16         1.94          0 \r\n 1991          318           7.963         21.56         2.81          0.8 \r\n 1991          319           5.198         21.54         1.91          1.8 \r\n 1991          320           5.912         9.42          0.56          0 \r\n 1991          321           4.489         20.57         3.85          12.4 \r\n 1991          322           4.708         20.34         5.05          1.8 \r\n 1991          323           6.503         9.4           2.55          0 \r\n 1991          324           8.129         12.9         -0.38          0 \r\n 1991          325           8.129         11.58         0.21          0 \r\n 1991          326           7.402         3.95         -4.84          1.3 \r\n 1991          327           5.256        -4.85         -7.94          9.9 \r\n 1991          328           4.398        -7.32         -12.27         0 \r\n 1991          329           8.582        -6.25         -15.42         0 \r\n 1991          330           8.6           7.46         -10.76         0 \r\n 1991          331           4.671         6.34         -2.41          2.3 \r\n 1991          332           4.353         1.93         -1.23          2.8 \r\n 1991          333           2.973         8.19         -2.22          2.3 \r\n 1991          334           6.409        -0.84         -8.27          6.9 \r\n 1991          335           7.775         0.3          -11.6          0 \r\n 1991          336           7.039        -3.11         -10.16         2 \r\n 1991          337           7.459        -9.78         -15.61         0 \r\n 1991          338           6.934        -1.61         -13.24         0 \r\n 1991          339           8.212         5.36         -11.6          0 \r\n 1991          340           8.732         6.53         -1.73          0 \r\n 1991          341           8.212         6            -0.7           0 \r\n 1991          342           6.445         4.38         -3.48          0 \r\n 1991          343           7.173         7.77         -2.85          0 \r\n 1991          344           6.965         6.69         -2.68          0 \r\n 1991          345           7.901         4.89          0.66          0 \r\n 1991          346           4.731         3.26         -4.03          22.9 \r\n 1991          347           4.937         2.4          -7.11          0 \r\n 1991          348           6.685        -2            -10.34         0 \r\n 1991          349           6.274         5.73         -10.45         0 \r\n 1991          350           7.2           4.1          -3.62          0 \r\n 1991          351           6.685        -1.19         -14.83         0 \r\n 1991          352           7.817        -3.06         -13.44         0 \r\n 1991          353           6.068        -0.04         -3.99          0 \r\n 1991          354           4.011         2.48         -6.21          17.5 \r\n 1991          355           4.628         1.95         -2.41          0 \r\n 1991          356           5.348         1.75         -1.53          0 \r\n 1991          357           3.291         4.66         -4.6           0.2 \r\n 1991          358           6.274         5.64         -5.64          0 \r\n 1991          359           7.508         4.32         -3.21          0 \r\n 1991          360           6.685         6.74         -2.96          0 \r\n 1991          361           4.423         0.93         -2.07          0 \r\n 1991          362           1.851         2.45         -1.45          0 \r\n 1991          363           1.543         3.44         -0.22          0 \r\n 1991          364           1.559         2.23         -0.47          0 \r\n 1991          365           1.559         3.31          0.07          0.2 \r\n 1992          1             1.871         2.46         -0.31          2.3 \r\n 1992          2             1             3.63         -0.18          0 \r\n 1992          3             1.871         4.27         -1.89          0 \r\n 1992          4             4.678         1.98         -2.36          0 \r\n 1992          5             1.871         2.64         -0.41          0.8 \r\n 1992          6             1.576         3.2           0.06          0 \r\n 1992          7             2.732         6.44          0.7           0 \r\n 1992          8             2.942         8.26         -2.58          13.2 \r\n 1992          9             5.883         0.13         -7.13          0.8 \r\n 1992          10            6.829         5.36         -7.88          0 \r\n 1992          11            8.6           11.54        -1.25          0 \r\n 1992          12            5.308         4.46         -1.52          4.1 \r\n 1992          13            5.733        -1.5          -9.57          0 \r\n 1992          14            7.22          4.16         -10.22         0 \r\n 1992          15            7.432         4.83         -22.69         1.3 \r\n 1992          16            9.547         4.71         -15.21         0 \r\n 1992          17            9.762         2.04         -13.91         0 \r\n 1992          18            6.651        -11.65        -16.19         0 \r\n 1992          19            9.754         6.63         -15.88         0 \r\n 1992          20            10.079        7.02         -7.32          0 \r\n 1992          21            9.863         11.03        -3.18          0 \r\n 1992          22            6.569         19.64         0.52          7.1 \r\n 1992          23            4.817         2.44         -8             0.2 \r\n 1992          24            9.635         10.53        -12.24         0 \r\n 1992          25            10.285        19.69        -10.35         0.8 \r\n 1992          26            10.174        6.89         -11.35         0 \r\n 1992          27            9.843         1.25         -7.07          0 \r\n 1992          28            7.037         1.03         -8.26          0 \r\n 1992          29            8.601         22.94        -0.97          0 \r\n 1992          30            8.936         9.65          0.42          0 \r\n 1992          31            8.686         10.17        -2.15          0 \r\n 1992          32            9.25          12.47        -2.47          0 \r\n 1992          33            10.716        17.95        -0.98          0 \r\n 1992          34            10.594        16.98        -0.42          0 \r\n 1992          35            8.771         7.27         -3.98          0 \r\n 1992          36            9.201         11.91        -5.01          0 \r\n 1992          37            7.936         10.16        -2.48          0 \r\n 1992          38            7.016         5.81         -9.68          0 \r\n 1992          39            8.709         0.78         -10.96         0 \r\n 1992          40            5.69          1.03         -7.95          0 \r\n 1992          41            7.972         3.49         -7.72          4.8 \r\n 1992          42            11.137       -4.26         -9.01          0 \r\n 1992          43            6.627        -2.72         -8.03          0 \r\n 1992          44            6.153         0.45         -4.29          0 \r\n 1992          45            4.142        -0.26         -0.69          5.1 \r\n 1992          46            2.269         0.79         -1.27          15.2 \r\n 1992          47            5.733         5.82          0.27          0 \r\n 1992          48            6.992         2.81          0.73          6.9 \r\n 1992          49            2.29          1.53         -0.17          6.3 \r\n 1992          50            3.893         0.18         -1.47          0.2 \r\n 1992          51            9.245         8.24         -4.35          0 \r\n 1992          52            13.135        1.68         -5.15          0 \r\n 1992          53            11.048        6.35         -2.74          0 \r\n 1992          54            11.643        3.62         -1.69          0 \r\n 1992          55            8.794         1.17         -4.3           0 \r\n 1992          56            11.497       -0.44         -6.65          0 \r\n 1992          57            13.872        9.78         -5.54          0 \r\n 1992          58            14.246        10.26         0.5           0 \r\n 1992          59            13.49         11.03         0.09          0 \r\n 1992          60            14.562        12.98        -2.42          0 \r\n 1992          61            13.297        22.3          5.2           0 \r\n 1992          62            13.189        20.7          3.03          0 \r\n 1992          63            13.621        11.74         4.43          0 \r\n 1992          64            13.303        15.47         4.91          0 \r\n 1992          65            11.341        13.48         10.26         20.1 \r\n 1992          66            7.369         16.26         8.53          11.4 \r\n 1992          67            6.709         13.91         7.14          0 \r\n 1992          68            7.987         13.17         5.77          1 \r\n 1992          69            12.424        6.79         -6.81          12.2 \r\n 1992          70            10.851       -5.11         -10.01         0 \r\n 1992          71            12.64         0.37         -7.78          0.5 \r\n 1992          72            10.604       -1.86         -9.66          0 \r\n 1992          73            13.762        0.89         -9.11          0 \r\n 1992          74            13.536        4.96         -2.35          0 \r\n 1992          75            12.284        4.29         -4.6           0 \r\n 1992          76            13.877        15.59        -0.64          0 \r\n 1992          77            14.565        6.01         -0.41          0 \r\n 1992          78            15.725        5.39         -0.57          0 \r\n 1992          79            9.712         7.88         -3.42          0 \r\n 1992          80            13.405        8.27         -0.44          0 \r\n 1992          81            12.822        2.72         -2.19          4.3 \r\n 1992          82            8.93          6.25         -6.88          0 \r\n 1992          83            15.753        15.24        -2.96          0 \r\n 1992          84            16.345        19.5         -0.22          0 \r\n 1992          85            17.549        12.95         0.68          0 \r\n 1992          86            16.594        4.75         -5.71          0 \r\n 1992          87            16.124        9.8          -4.35          0 \r\n 1992          88            16.605        4.74          2.44          8.4 \r\n 1992          89            10.429        5.33          1.78          5.8 \r\n 1992          90            3.153         12.21         0.44          0 \r\n 1992          91            12.587        6.87         -2.46          0 \r\n 1992          92            14.434        2.98         -5.22          0 \r\n 1992          93            16.842        8.16         -6.24          0 \r\n 1992          94            18.728        18.38        -0.46          0 \r\n 1992          95            20.364        13.13        -0.52          0 \r\n 1992          96            21.043        17.66         0.68          0 \r\n 1992          97            19.561        24.52         4.89          7.6 \r\n 1992          98            20.245        17.3          5.65          0 \r\n 1992          99            15.16         10.98         2.94          5.6 \r\n 1992          100           19.708        12.74         1.3           0 \r\n 1992          101           12.08         24.09         7.25          0 \r\n 1992          102           18.606        10.36        -0.67          0 \r\n 1992          103           19.994       -0.39         -5.17          0 \r\n 1992          104           19.303        4.24         -1.86          2.3 \r\n 1992          105           7.414         13.11         3.94          0.8 \r\n 1992          106           13.104        27.64         7.12          18.3 \r\n 1992          107           19.163        9.19          5.17          0 \r\n 1992          108           16.322        8.59          5.44          0.3 \r\n 1992          109           5.819         19.42         7.52          16 \r\n 1992          110           13.295        15.48         9.63          4.3 \r\n 1992          111           11.866        9.64          2.12          19.6 \r\n 1992          112           10.079        2.14         -0.84          6.3 \r\n 1992          113           11.087        5.08         -0.88          0.3 \r\n 1992          114           6.236         8.61          0.97          10.4 \r\n 1992          115           10.586        9.7           1.85          0.3 \r\n 1992          116           12.122        6.01          1.24          0 \r\n 1992          117           15.481        8.59          2.58          0 \r\n 1992          118           14.266        13.38         1.54          0 \r\n 1992          119           19.12         18.37         0.64          0 \r\n 1992          120           23.385        26.64         9.62          0 \r\n 1992          121           23.4          31.32         10.55         0 \r\n 1992          122           23.704        29.79         17.85         0 \r\n 1992          123           23.799        23.16         11.21         0 \r\n 1992          124           23.488        21.91         6.88          0 \r\n 1992          125           25.216        20.93         8.35          0 \r\n 1992          126           23.18         14.9          2.28          0 \r\n 1992          127           25.999        19.12         2.72          0 \r\n 1992          128           26.492        22.65         4.43          0.5 \r\n 1992          129           26.65         25.67         5.38          0 \r\n 1992          130           26.99         28.28         11.34         0.3 \r\n 1992          131           25.403        26.94         10.38         0 \r\n 1992          132           24.926        25.69         16.93         0 \r\n 1992          133           19.021        23.96         12.05         0 \r\n 1992          134           18.861        16.24         7.02          0 \r\n 1992          135           25.734        22.27         8.82          0 \r\n 1992          136           19.953        23.17         12.53         0 \r\n 1992          137           21.562        31.78         15.42         6.1 \r\n 1992          138           22.367        16.2          10.41         0.5 \r\n 1992          139           19.762        23.89         8.05          0 \r\n 1992          140           22.354        27.51         10.05         0 \r\n 1992          141           25.108        28.81         14.72         0 \r\n 1992          142           23.154        25.83         16.2          0.5 \r\n 1992          143           19.404        29.26         9.8           1.3 \r\n 1992          144           17.936        17.46         7.68          0 \r\n 1992          145           19.203        16.32         4.79          0 \r\n 1992          146           20.516        8.3           4.56          15 \r\n 1992          147           14.443        13.05         5.01          0 \r\n 1992          148           7.599         16.81         4.27          0 \r\n 1992          149           22.137        20.24         6.18          0 \r\n 1992          150           24.615        22.51         7.66          0 \r\n 1992          151           25.276        25.21         9.28          0 \r\n 1992          152           25.937        25.96         9.99          0 \r\n 1992          153           27.322        22.35         14.55         0 \r\n 1992          154           22.106        26.79         13.11         0 \r\n 1992          155           22.997        27.46         13.6          0 \r\n 1992          156           26.741        25.99         15.98         0 \r\n 1992          157           24.602        28.28         11.24         0.3 \r\n 1992          158           29.067        24.34         14.11         0.5 \r\n 1992          159           25.658        26.12         8.95          0 \r\n 1992          160           28.17         23.88         14.49         0 \r\n 1992          161           21.531        23.66         15.76         0 \r\n 1992          162           15.61         27.78         17.28         0.3 \r\n 1992          163           19.019        29.38         14.17         0 \r\n 1992          164           27.99         31.35         17.67         0 \r\n 1992          165           27.989        30.96         16.31         0 \r\n 1992          166           27.808        30.48         15.65         0 \r\n 1992          167           27.989        30.03         16.53         0 \r\n 1992          168           24.739        31.09         21.65         0 \r\n 1992          169           15.168        26.65         18.82         9.7 \r\n 1992          170           15.891        28.55         16.62         0 \r\n 1992          171           21.308        25.79         13.88         2.5 \r\n 1992          172           18.057        19.49         9.11          0 \r\n 1992          173           25.642        22.8          5.34          0 \r\n 1992          174           28.17         27.09         12.15         2.5 \r\n 1992          175           24.919        30            12.38         0 \r\n 1992          176           20.224        26.66         13.81         0 \r\n 1992          177           27.447        26.13         14.17         0 \r\n 1992          178           23.113        23.1          10.97         0 \r\n 1992          179           27.628        24.23         9.95          0 \r\n 1992          180           26.725        29.29         15.67         0 \r\n 1992          181           22.572        28.67         15.64         0 \r\n 1992          182           24.377        29.75         15.75         0 \r\n 1992          183           25.816        31.59         17.18         0 \r\n 1992          184           25.763        22.67         16.99         87.4 \r\n 1992          185           17.865        24            12.88         1.5 \r\n 1992          186           16.925        26.91         14.48         0 \r\n 1992          187           23.13         22.51         14.62         0 \r\n 1992          188           22.378        24.2          12.72         0 \r\n 1992          189           25.951        29.79         18.99         8.9 \r\n 1992          190           17.19         29.26         19.16         0 \r\n 1992          191           19.806        25.52         18.12         0.3 \r\n 1992          192           21.861        26.51         16.67         0 \r\n 1992          193           20.366        24.79         14.37         0.3 \r\n 1992          194           23.356        27.57         19.94         15.7 \r\n 1992          195           13.366        25.01         18.86         22.9 \r\n 1992          196           12.252        19.46         16.35         0.3 \r\n 1992          197           12.066        25.81         12.63         57.1 \r\n 1992          198           23.019        28.63         16.28         4.6 \r\n 1992          199           17.89         24.75         14.76         0 \r\n 1992          200           24.53         26.23         14.2          0 \r\n 1992          201           25.268        28.18         15.16         0 \r\n 1992          202           25.452        21.92         13.61         0.3 \r\n 1992          203           22.72         13.58         11.06         1.3 \r\n 1992          204           25.835        16.93         15.09         0 \r\n 1992          205           14.658        17.82         14.36         25.3 \r\n 1992          206           12.56         15.92         14.67         23.3 \r\n 1992          207           11.65         30.25         17.97         0 \r\n 1992          208           12.742        25.73         16.42         0 \r\n 1992          209           14.646        29.36         14.41         5.7 \r\n 1992          210           25.857        27.7          15.72         29.9 \r\n 1992          211           18.263        19.2          14.58         10.6 \r\n 1992          212           16.883        15.01         13.76         3.1 \r\n 1992          213           9.879         22.63         12.6          0 \r\n 1992          214           19.98         26.52         13.54         9.7 \r\n 1992          215           27.046        22.9          14.83         0 \r\n 1992          216           18.738        21.41         12.72         0 \r\n 1992          217           24.581        18.14         12.31         0 \r\n 1992          218           27.39         18.68         14.19         0 \r\n 1992          219           22.825        21.99         14.72         18.2 \r\n 1992          220           20.752        29.15         16.09         0 \r\n 1992          221           16.218        30.91         17.76         0 \r\n 1992          222           17.146        32.08         22.14         0 \r\n 1992          223           21.648        28.02         15            0 \r\n 1992          224           19.435        26.08         13.46         9.3 \r\n 1992          225           24.595        21.95         13.85         0 \r\n 1992          226           17.371        21.27         9.69          6.2 \r\n 1992          227           18.105        20.68         11.29         0 \r\n 1992          228           16.738        21.51         9.2           0 \r\n 1992          229           24.932        22.51         10.67         0 \r\n 1992          230           24.253        24.06         11.79         0.3 \r\n 1992          231           23.072        23.98         15.01         0 \r\n 1992          232           19.704        25.14         12.23         0 \r\n 1992          233           24.581        25.02         10.4          0 \r\n 1992          234           24.748        26.48         11.28         0 \r\n 1992          235           24.413        26.48         12.43         0 \r\n 1992          236           23.409        28.18         15.44         0 \r\n 1992          237           21.416        30.2          17.29         0 \r\n 1992          238           19.614        21.13         14.99         8.1 \r\n 1992          239           20.603        18.54         13.62         0 \r\n 1992          240           9.818         20.26         12.11         0 \r\n 1992          241           15.054        24.84         8.36          0 \r\n 1992          242           22.904        28.78         11.99         0 \r\n 1992          243           23.229        20.79         9.4           0 \r\n 1992          244           22.897        23.03         7.2           0 \r\n 1992          245           23.058        21.18         13.28         7.6 \r\n 1992          246           18.672        25.14         16.53         7.9 \r\n 1992          247           10.373        26.4          12.21         0 \r\n 1992          248           14.709        27.09         11.16         0 \r\n 1992          249           19.269        22.62         15.47         16 \r\n 1992          250           15.912        25.38         15.82         0 \r\n 1992          251           9.781         25.84         9.84          13 \r\n 1992          252           15.212        18.28         5.78          0 \r\n 1992          253           15.792        23.65         7.99          2 \r\n 1992          254           16.39         18.66         6.1           0 \r\n 1992          255           14.233        21.85         6.42          0 \r\n 1992          256           18.118        24.14         10.79         0 \r\n 1992          257           17.69         29.17         17.46         0 \r\n 1992          258           14.864        22.85         17.64         26.7 \r\n 1992          259           9.768         28.58         17.73         6.6 \r\n 1992          260           7.303         28.31         20.73         12.2 \r\n 1992          261           8.708         27.51         17.15         2.8 \r\n 1992          262           9.476         17.66         7.15          0 \r\n 1992          263           11.845        19.02         5.21          0 \r\n 1992          264           17.418        16.69         11.02         0 \r\n 1992          265           14.515        22.13         8.29          0 \r\n 1992          266           9.188         16.58         5.37          0 \r\n 1992          267           17.964        19.65         5.36          0 \r\n 1992          268           16.459        20.07         6.51          0 \r\n 1992          269           16.323        21.83         7.5           3 \r\n 1992          270           15.921        19.35         6.75          0 \r\n 1992          271           10.119        24.1          3.95          0 \r\n 1992          272           12.311        17.74         0.43          0 \r\n 1992          273           17.396        23.61         3.83          0 \r\n 1992          274           16.323        26.41         6.88          0 \r\n 1992          275           16.722        28.2          7.31          0 \r\n 1992          276           16.319        27.95         9.3           0 \r\n 1992          277           15.924        27.99         8.89          0 \r\n 1992          278           15.268        23.5          8.51          0 \r\n 1992          279           14.877        23.82         9.03          0 \r\n 1992          280           13.069        22.08         11.08         0 \r\n 1992          281           12.551        18.41         6.9           2.5 \r\n 1992          282           11.033        13.22         3.4           7.6 \r\n 1992          283           6.799         13.92         4.37          0.5 \r\n 1992          284           8.775         17.91         0.9           0 \r\n 1992          285           9.666         17.88         6.23          0 \r\n 1992          286           13.616        16.4          1.58          0 \r\n 1992          287           11.977        15.88         4.07          0 \r\n 1992          288           12.247        9.53          3.33          0 \r\n 1992          289           11.622        8.43          0.67          0 \r\n 1992          290           7.679         9.65         -4.88          1.5 \r\n 1992          291           7.184         9.62         -4.47          0 \r\n 1992          292           11.048        5.84         -3.51          0 \r\n 1992          293           11.417        15.86        -1.08          0 \r\n 1992          294           9.245         20.38         0.42          0 \r\n 1992          295           8.394         25.94         10.27         0 \r\n 1992          296           12.53         25.31         14.96         0 \r\n 1992          297           11.331        23            6.26          0 \r\n 1992          298           8.318         25.82         3.86          0 \r\n 1992          299           11.466        17.19         5.56          0 \r\n 1992          300           11.705        17.06        -1.85          0 \r\n 1992          301           10.887        14.5          5.03          0 \r\n 1992          302           11.242        10.04        -2.78          0 \r\n 1992          303           9.73          9.33         -1.65          0 \r\n 1992          304           9.496         8.17          4.35          0 \r\n 1992          305           7.737         6.15          4.5           1.5 \r\n 1992          306           5.109         5.72          0.33          50.8 \r\n 1992          307           1.51          1.83         -1.52          16.5 \r\n 1992          308           3.105         0.21         -2.21          0.5 \r\n 1992          309           2.3          -1.01         -3.32          0 \r\n 1992          310           2.734        -1.51         -4.28          0 \r\n 1992          311           2.392        -1.35         -4.97          0 \r\n 1992          312           2.848         7.1          -2.56          0 \r\n 1992          313           2.82          12.99         4.74          0 \r\n 1992          314           6.317         12.35         5.34          0 \r\n 1992          315           7.26          6.19         -2.19          0.5 \r\n 1992          316           5.697         5.64          0.75          0 \r\n 1992          317           7.707         3.35         -4.35          1 \r\n 1992          318           5.53          0.76         -6.97          0 \r\n 1992          319           7.188         2.58         -6.03          0 \r\n 1992          320           5.972         13.32        -3.26          0 \r\n 1992          321           6.131         10.36        -1.28          0 \r\n 1992          322           7.773         3.28          0.06          0 \r\n 1992          323           8.43          3.86          1.01          0 \r\n 1992          324           3.035         9             3.07          20.6 \r\n 1992          325           2.601         3.87         -0.38          19.6 \r\n 1992          326           4.227        -0.21         -1.64          1 \r\n 1992          327           3.54          1.96         -0.61          0 \r\n 1992          328           2.36          2.76          0.49          0 \r\n 1992          329           2.038         2.78         -1.03          0.5 \r\n 1992          330           2.145        -0.93         -8.29          5.1 \r\n 1992          331           2.76         -2.64         -10.99         1 \r\n 1992          332           4.671        -2.76         -13.76         0 \r\n 1992          333           9.131        -0.59         -12.26         0 \r\n 1992          334           9.343         0.08         -5.15          0 \r\n 1992          335           8.93          1.64         -12.33         0 \r\n 1992          336           7.985         2.85         -2.79          2 \r\n 1992          337           8.72         -0.25         -7.19          0 \r\n 1992          338           5.778        -1.36         -10.99         0 \r\n 1992          339           7.144        -6.54         -17.06         0 \r\n 1992          340           8.005        -3.49         -11.81         0 \r\n 1992          341           8.109        -3.17         -7.68          1.5 \r\n 1992          342           7.485        -2.29         -15.08         0 \r\n 1992          343           5.614         0.7          -5.66          0 \r\n 1992          344           8.109         2.04         -0.49          1.3 \r\n 1992          345           7.485         1.52         -9.18          0.5 \r\n 1992          346           2.495         0.02         -5.52          0 \r\n 1992          347           7.405         0.75         -1.5           0 \r\n 1992          348           5.451         0.58         -1.11          4.1 \r\n 1992          349           3.908         1.92         -0.46          21.6 \r\n 1992          350           1.543        -0.34         -3.79          1.8 \r\n 1992          351           2.571        -2.6          -4.44          1.5 \r\n 1992          352           3.6          -1.3          -3.9           0 \r\n 1992          353           2.777        -0.49         -6.34          0 \r\n 1992          354           2.777        -1.47         -14.29         0 \r\n 1992          355           5.451         2.86         -7.01          0 \r\n 1992          356           8.125         4            -6.64          0 \r\n 1992          357           7.714         2.75         -12.96         0 \r\n 1992          358           7.714        -4.24         -17.75         0 \r\n 1992          359           8.228         0.64         -11.32         0 \r\n 1992          360           8.125        -0.4          -13.89         0 \r\n 1992          361           8.228         3.74         -6.97          0 \r\n 1992          362           7.405         1.36         -6.19          0 \r\n 1992          363           7.92          0.64         -6.64          0 \r\n 1992          364           7.405        -4.17         -11.46         10.2 \r\n 1992          365           4.678        -11.09        -19.88         1.8 \r\n 1992          366           6.653        -13.2         -20.97         0 \r\n 1993          1             5.614        -2.51         -14.35         0 \r\n 1993          2             7.901         1.6          -2.56          0 \r\n 1993          3             5.51          0            -13.1          0.5 \r\n 1993          4             8.212        -9.03         -17.71         0.8 \r\n 1993          5             6.549        -8.2          -14.83         0 \r\n 1993          6             6.304        -7.24         -13.42         0 \r\n 1993          7             5.778        -7.49         -19.88         1.5 \r\n 1993          8             6.199        -6.91         -13.18         1.5 \r\n 1993          9             6.514        -7.96         -11.54         0 \r\n 1993          10            3.992        -5.75         -12.41         0.8 \r\n 1993          11            5.627        -2            -6.51          1.5 \r\n 1993          12            3.079        -2.51         -9.24          10.9 \r\n 1993          13            4.034        -7.48         -11.54         0 \r\n 1993          14            5.096        -8.57         -16.88         0 \r\n 1993          15            8.281        -2.01         -9.92          0 \r\n 1993          16            8.367        -1.47         -17.51         0 \r\n 1993          17            9.869        -9.13         -20.13         0 \r\n 1993          18            8.796        -6.73         -17.6          0 \r\n 1993          19            9.321        -2.2          -14.55         0 \r\n 1993          20            9.538        -1.07         -2.88          4.6 \r\n 1993          21            3.36          0.95         -4.49          0 \r\n 1993          22            5.474         3            -1.74          0 \r\n 1993          23            7.117         0.76         -13.43         0 \r\n 1993          24            10.401       -4.3          -14.06         0 \r\n 1993          25            9.29          3.84         -9.01          0 \r\n 1993          26            10.285        3.24         -6.02          0 \r\n 1993          27            8.847        -1.32         -9.98          0 \r\n 1993          28            8.824        -8.15         -21.12         0 \r\n 1993          29            11.617       -2.07         -16.36         0 \r\n 1993          30            11.058        3.04         -4.94          0 \r\n 1993          31            10.152        3.25         -3.45          0 \r\n 1993          32            9.137         1.66         -5.96          0 \r\n 1993          33            9.137         2.89         -5.63          0 \r\n 1993          34            9.796         1.23         -6.62          0 \r\n 1993          35            9.568        -0.65         -4.16          0 \r\n 1993          36            6.096        -0.41         -2.38          0 \r\n 1993          37            3.91         -1.19         -2.32          0 \r\n 1993          38            1.955        -1.53         -2.77          0 \r\n 1993          39            2.439        -0.53         -1.73          0 \r\n 1993          40            3.019         0.58         -1.08          0.2 \r\n 1993          41            3.165         0.16         -3.77          2.5 \r\n 1993          42            5.861        -2.74         -6.54          1.8 \r\n 1993          43            4.023        -4.95         -8.87          2.8 \r\n 1993          44            5.207        -5.8          -14.45         1.5 \r\n 1993          45            11.952       -8.05         -15.5          0 \r\n 1993          46            10.988       -11.3         -17.6          0 \r\n 1993          47            10.869       -13.59        -23.23         0 \r\n 1993          48            13.621       -10.16        -20.77         0 \r\n 1993          49            13.139       -3.97         -17.05         0 \r\n 1993          50            15.085       -3.67         -10.04         0 \r\n 1993          51            11.922       -3.76         -6.46          0 \r\n 1993          52            5.524        -5.7          -13.03         7.1 \r\n 1993          53            9.821        -12.77        -22.12         1.3 \r\n 1993          54            15.731       -12.17        -24.68         0 \r\n 1993          55            16.845       -10.13        -14.69         0 \r\n 1993          56            15.246       -7.97         -14.39         3.6 \r\n 1993          57            9.623        -6.85         -17.16         0.5 \r\n 1993          58            16.642        1.78         -17.36         0 \r\n 1993          59            18.407        2.63         -6.73          0 \r\n 1993          60            15.243        0.86         -1.3           0 \r\n 1993          61            7.135         1.12         -0.47          13.5 \r\n 1993          62            2.378         1.76         -1.55          3.3 \r\n 1993          63            5.125         0.91         -2.2           0 \r\n 1993          64            9.487         3.19         -4.98          0 \r\n 1993          65            13.088        5.55         -1.51          0 \r\n 1993          66            13.968        4.76         -0.62          0 \r\n 1993          67            11.869        2.16         -3.02          0 \r\n 1993          68            13.089        0.92         -2.2           0 \r\n 1993          69            11.186       -1.86         -12.19         1.5 \r\n 1993          70            16.332       -4.88         -11.91         0 \r\n 1993          71            14.89        -6.33         -18.26         0 \r\n 1993          72            16.921       -6.85         -15.21         0 \r\n 1993          73            14.446        8.23         -9.95          0 \r\n 1993          74            16.379        7.66         -4.31          0 \r\n 1993          75            17.432       -3.14         -15.47         0 \r\n 1993          76            18.579       -3.36         -12.37         0 \r\n 1993          77            13.875        1.15         -4.58          0 \r\n 1993          78            9.481         1.8          -1.34          2.5 \r\n 1993          79            8.859         0.66         -3.24          0 \r\n 1993          80            8.159         0.7          -0.77          0 \r\n 1993          81            4.113         0.16         -1.57          8.1 \r\n 1993          82            5.567         3.05         -1.58          0.8 \r\n 1993          83            7.699         6.96          0.51          0 \r\n 1993          84            11.7          9.3          -0.18          0 \r\n 1993          85            17.908        9.77         -0.46          0 \r\n 1993          86            18.771        13.12        -0.46          0 \r\n 1993          87            19.854        17.84         1.6           0 \r\n 1993          88            20.493        11.73         7.44          0 \r\n 1993          89            14.188        10.65         2.75          42.7 \r\n 1993          90            10.51         3.06         -3.8           10.4 \r\n 1993          91            12.388        1.92         -6.21          0 \r\n 1993          92            18.324        6.73         -1.48          0 \r\n 1993          93            18.728        8.82         -3.93          0 \r\n 1993          94            20.5          9.07         -3.01          0 \r\n 1993          95            20.907        9.98         -0.91          0 \r\n 1993          96            19.972        9.7           3.95          3.5 \r\n 1993          97            15.868        9.48          5.63          5.4 \r\n 1993          98            6.753         13.57        -0.67          0 \r\n 1993          99            19.846        15.1         -1.03          0 \r\n 1993          100           22.216        15.12         3.27          0 \r\n 1993          101           15.412        7.84          0.16          4.5 \r\n 1993          102           11.108        7.85          1.14          0 \r\n 1993          103           14.128        6.18          2.19          6.8 \r\n 1993          104           7.833         3.42          0.06          7.3 \r\n 1993          105           5.777         11.33        -0.45          4.2 \r\n 1993          106           12.259        15.31         0.25          0 \r\n 1993          107           23.703        19            4.95          0 \r\n 1993          108           22.851        18.12         8.77          12.2 \r\n 1993          109           15.583        14.03        -0.52          8.2 \r\n 1993          110           17.441        12.5          0.23          0 \r\n 1993          111           22.175        17.29         0.42          0 \r\n 1993          112           23.614        19.35         4.42          0 \r\n 1993          113           22.913        18.69         8.65          0 \r\n 1993          114           20.448        17.19         5.87          0 \r\n 1993          115           21.177        17.38         2.72          0 \r\n 1993          116           23.368        17.46         9.78          4.4 \r\n 1993          117           14.855        20.1          5.72          5.3 \r\n 1993          118           17.208        21.17         7.55          0 \r\n 1993          119           23.091        21.3          7.24          0 \r\n 1993          120           22.66         18.51         10.36         17.6 \r\n 1993          121           16.521        17.33         8.99          4.7 \r\n 1993          122           11.666        11.62         8.43          8.3 \r\n 1993          123           6.066         16.58         11.28         0 \r\n 1993          124           8.458         22.18         8.79          0 \r\n 1993          125           21.927        23.41         14.96         10 \r\n 1993          126           20.361        24.45         15.64         17 \r\n 1993          127           12.931        24.65         15.54         26.4 \r\n 1993          128           13.877        20.95         12.76         4.3 \r\n 1993          129           14.924        20.52         14.43         14.5 \r\n 1993          130           11.59         20.31         13.23         0 \r\n 1993          131           16.353        23.98         13.68         11.2 \r\n 1993          132           15.984        24.56         11.54         0 \r\n 1993          133           27.492        21.67         8.65          0 \r\n 1993          134           25.574        28.45         9.82          0 \r\n 1993          135           26.872        22.6          8.58          8.8 \r\n 1993          136           19.47         20.25         7.68          0 \r\n 1993          137           23.332        22.39         9.1           0 \r\n 1993          138           23.65         16.34         7.82          0 \r\n 1993          139           23.002        14.34         6.72          0 \r\n 1993          140           22.03         14.91         7.12          0 \r\n 1993          141           25.274        22            10.26         0 \r\n 1993          142           17.61         16.63         10.69         6.1 \r\n 1993          143           9.946         20.64         13.57         12.4 \r\n 1993          144           14.443        16.51         11.47         0 \r\n 1993          145           21.993        20.63         8.5           0 \r\n 1993          146           26.753        25.59         8.27          0 \r\n 1993          147           18.503        28.49         14.45         15.7 \r\n 1993          148           20.32         15.96         10.41         7.6 \r\n 1993          149           10.573        14.65         10.2          5.1 \r\n 1993          150           13.712        21.06         7.93          1.8 \r\n 1993          151           26.597        19.45         6.87          0 \r\n 1993          152           27.841        15.2          5.48          8.6 \r\n 1993          153           11.41         12.88         9.68          8.4 \r\n 1993          154           15.153        18.65         9.67          0.5 \r\n 1993          155           13.727        16.62         10.02         0 \r\n 1993          156           19.432        21.77         8.63          0 \r\n 1993          157           22.608        20.9          13.58         0.5 \r\n 1993          158           10.945        23.58         17.09         8.9 \r\n 1993          159           15.251        28.38         15.89         0 \r\n 1993          160           26.914        26.58         14.02         0 \r\n 1993          161           27.093        28.72         14.18         0 \r\n 1993          162           27.632        28.92         15.18         0 \r\n 1993          163           17.404        27.69         18.17         2.5 \r\n 1993          164           15.529        24.09         17.77         33 \r\n 1993          165           17.516        25.17         12.4          0 \r\n 1993          166           29.434        23.66         9.77          0 \r\n 1993          167           25.642        27.3          14.33         11.2 \r\n 1993          168           18.419        31.81         20.2          8.1 \r\n 1993          169           16.252        25.84         19.27         5.1 \r\n 1993          170           12.64         20.49         16.76         8.6 \r\n 1993          171           13.182        25.52         15.41         0 \r\n 1993          172           27.447        29.53         14.69         0 \r\n 1993          173           27.447        30.74         16.99         0 \r\n 1993          174           22.211        29.39         20.88         0 \r\n 1993          175           16.432        23.85         14.78         6.9 \r\n 1993          176           20.405        25.73         12.2          0 \r\n 1993          177           26.364        30.71         17.26         3.6 \r\n 1993          178           20.585        31.12         16.63         1.8 \r\n 1993          179           18.96         24.19         17.18         0 \r\n 1993          180           18.78         27.84         17.43         65.8 \r\n 1993          181           15.529        20.41         17.54         6.9 \r\n 1993          182           10.561        25.11         17.65         0.3 \r\n 1993          183           19.745        29.34         21.17         0 \r\n 1993          184           21.626        31.99         20.95         0 \r\n 1993          185           16.172        28.33         20.37         14.2 \r\n 1993          186           16.172        22.79         17.8          20.1 \r\n 1993          187           15.796        26.65         16.56         0 \r\n 1993          188           22.566        25.71         17.57         3.3 \r\n 1993          189           16.629        28.43         18.16         101.9 \r\n 1993          190           17.377        27.4          18.24         31.2 \r\n 1993          191           24.103        28.24         18.38         1.3 \r\n 1993          192           15.695        25            16.88         62.5 \r\n 1993          193           27.279        24.68         14.44         0 \r\n 1993          194           18.935        28.92         17.29         42.2 \r\n 1993          195           16.893        24.03         19.32         5.6 \r\n 1993          196           14.851        25.55         18.77         0 \r\n 1993          197           17.45         25.19         18.83         10.9 \r\n 1993          198           13.648        29.38         20.52         0 \r\n 1993          199           15.677        28.03         20.67         0 \r\n 1993          200           15.861        28.03         19.23         0 \r\n 1993          201           24.161        33.33         16.74         0 \r\n 1993          202           23.087        25.08         15.99         0.3 \r\n 1993          203           14.292        22.42         16.53         11.4 \r\n 1993          204           10.81         32.22         21.67         0 \r\n 1993          205           20.751        37.22         21.67         7.4 \r\n 1993          206           16.2          28.33         10.93         1.8 \r\n 1993          207           25.665        33.81         9.84          0 \r\n 1993          208           16.816        32.72         13.82         23.6 \r\n 1993          209           18.443        34.75         8.2           0.3 \r\n 1993          210           26.399        35.27         18.91         0 \r\n 1993          211           27.121        35.03         15.63         0 \r\n 1993          212           24.607        32.98         7.61          11.7 \r\n 1993          213           16.294        27.78         9.07          0 \r\n 1993          214           27.223        27.01         14.92         0 \r\n 1993          215           25.455        27.01         11.53         0 \r\n 1993          216           26.336        31.02         10.52         0 \r\n 1993          217           17.733        30.76         5.94          20.8 \r\n 1993          218           17.733        31.43         21.94         0.3 \r\n 1993          219           25.809        33.23         12.89         0 \r\n 1993          220           23.89         35.94         19.33         0 \r\n 1993          221           21.648        34.71         15.79         36.8 \r\n 1993          222           16.453        45            11.07         0 \r\n 1993          223           21.327        30            19.48         9.9 \r\n 1993          224           15.307        30            20.89         0.3 \r\n 1993          225           19.607        28.33         18.98         34 \r\n 1993          226           14.689        33.33         18.95         17.5 \r\n 1993          227           14.006        33.33         19.43         21.8 \r\n 1993          228           14.247        29.44         18.45         25.7 \r\n 1993          229           20.861        32.22         18.92         0 \r\n 1993          230           20.546        32.22         17.81         12.2 \r\n 1993          231           15.662        27.78         17.19         0.3 \r\n 1993          232           21.236        27.78         14.55         0 \r\n 1993          233           21.069        27.22         18.51         0 \r\n 1993          234           15.217        27.22         19.88         10.4 \r\n 1993          235           14.61         28.89         17.76         1.5 \r\n 1993          236           20.586        31.67         19.4          0 \r\n 1993          237           20.109        31.67         21.11         3 \r\n 1993          238           18.461        31.67         21.13         0.3 \r\n 1993          239           17.836        31.67         17.26         0 \r\n 1993          240           13.581        23.89         18.27         4.3 \r\n 1993          241           8.122         27.22         16.98         51.1 \r\n 1993          242           9.584         27.22         11.55         15.5 \r\n 1993          243           15.641        22.78         9.5           0 \r\n 1993          244           22.09         25            16.46         0 \r\n 1993          245           17.635        25            12.78         0.3 \r\n 1993          246           18.228        23.33         11.07         0 \r\n 1993          247           19.71         26.67         10.16         0 \r\n 1993          248           20.151        26.67         10.41         10.7 \r\n 1993          249           10.219        20            10.46         0 \r\n 1993          250           19.561        20            8.48          0.5 \r\n 1993          251           19.558        22.78         12.42         0.3 \r\n 1993          252           18.11         22.78         8.32          0 \r\n 1993          253           19.265        22.78         8.31          0 \r\n 1993          254           19.409        28.89         13.6          0.5 \r\n 1993          255           18.831        32.22         14.82         0 \r\n 1993          256           18.831        32.22         6.74          12.4 \r\n 1993          257           13.448        25            2.64          0.8 \r\n 1993          258           15.43         18.89         3.27          0 \r\n 1993          259           17.697        22.78         6.06          0 \r\n 1993          260           17.697        22.78         11.11         1.3 \r\n 1993          261           11.426        16.67         12.18         2.8 \r\n 1993          262           6.689         21.67         13.71         15 \r\n 1993          263           6.083         21.67         11.47         0 \r\n 1993          264           12.995        27.78         14.88         1.3 \r\n 1993          265           10.285        27.78         6.74          0 \r\n 1993          266           16.73         18.89         6.11          0 \r\n 1993          267           15.643        16.11         9.21          32.6 \r\n 1993          268           10.202        23.89         7.24          3.9 \r\n 1993          269           9.849         23.89         1.72          0 \r\n 1993          270           16.73         26.11         6.96          0 \r\n 1993          271           15.657        26.11         1.1           0 \r\n 1993          272           16.593        20            4.14          0 \r\n 1993          273           15.925        27.78         10.92         0 \r\n 1993          274           14.598        25            1.05          0 \r\n 1993          275           15.529        17.78         3.05          0 \r\n 1993          276           15.661        26.11         10.02         0 \r\n 1993          277           14.877        26.11         2.73          0 \r\n 1993          278           15.529        28.33         14.02         0 \r\n 1993          279           14.363        24.16         16.61         0 \r\n 1993          280           12.033        22.62         11.17         0 \r\n 1993          281           13.727        22.62        -0.46          6.9 \r\n 1993          282           11.033        24.16        -2.75          6.9 \r\n 1993          283           12.718        24.16        -0.81          0 \r\n 1993          284           13.99         22.62         2.6           0 \r\n 1993          285           12.733        22.62        -1.56          0 \r\n 1993          286           12.986        21.08         7.11          0 \r\n 1993          287           12.372        13.39         11.2          0 \r\n 1993          288           6.124         16.35         11.26         13.5 \r\n 1993          289           5.822         11.55         7.82          3.8 \r\n 1993          290           6.441         12.97         5.54          0 \r\n 1993          291           8.716         13.02         8.14          2.5 \r\n 1993          292           4.788         16.63         5.84          1.3 \r\n 1993          293           7.907         11.91         0.58          2.5 \r\n 1993          294           8.272         19.55        -0.11          1 \r\n 1993          295           12.53         19.55         4.25          0 \r\n 1993          296           12.416        18.01         4.51          0 \r\n 1993          297           11.693        21.8          6.51          0 \r\n 1993          298           10.988        17.11         6.07          0 \r\n 1993          299           9.555         8.07          2.82          0 \r\n 1993          300           5.325         12.32         4.66          0 \r\n 1993          301           6.508         8.54         -2.74          0 \r\n 1993          302           10.082        0.16         -3.82          0 \r\n 1993          303           4.22          2.04         -7.19          0 \r\n 1993          304           8.206         9.01         -6.6           0 \r\n 1993          305           9.638         11.58         0.72          0 \r\n 1993          306           9.638         13.69        -1.54          0 \r\n 1993          307           9.546         15.42         7.63          0 \r\n 1993          308           8.051         11.83        -3.51          0 \r\n 1993          309           10.138       -1.54         -7.22          0 \r\n 1993          310           5.696         8.58         -8.69          0 \r\n 1993          311           8.771         8.22         -4.42          0 \r\n 1993          312           9.363         10.74        -5.5           0 \r\n 1993          313           9.701         8.89         -3.38          0 \r\n 1993          314           9.271         13.4         -1.4           0 \r\n 1993          315           8.713         13.92         0.18          0 \r\n 1993          316           8.824         17.24        -0.33          10.2 \r\n 1993          317           5.861         12.22        -2.23          1.5 \r\n 1993          318           3.318         8.89         -3.86          1.5 \r\n 1993          319           3.318         1.67         -2.43          3 \r\n 1993          320           3.941         7.78         -3.04          0.5 \r\n 1993          321           4.27          8.33         -2.25          0 \r\n 1993          322           6.569         11.11        -2.73          0 \r\n 1993          323           5.094         11.11        -3.84          0 \r\n 1993          324           7.37          11.67        -1.68          0 \r\n 1993          325           7.587         17.22        -1.67          0 \r\n 1993          326           7.616         17.22        -2.48          0 \r\n 1993          327           6.651         10           -6.58          0 \r\n 1993          328           5.364         13.16        -10            2.3 \r\n 1993          329           6.329         7.83         -10.56         8.4 \r\n 1993          330           8.069         4.4          -10.56         0 \r\n 1993          331           6.052         0.58         -6.11          0.8 \r\n 1993          332           7.75          4.44         -3.33          0 \r\n 1993          333           6.158         4.44         -2.45          0 \r\n 1993          334           5.148         4.44         -0.05          0 \r\n 1993          335           6.304         8.89         -2.3           0 \r\n 1993          336           7.249         8.89         -1.63          0 \r\n 1993          337           7.459         7.22         -0.76          0 \r\n 1993          338           5.358         9.44         -1.74          0 \r\n 1993          339           3.327         9.44         -1.34          0 \r\n 1993          340           5.718         7.22         -2.65          0 \r\n 1993          341           6.341         6.11         -2.86          0 \r\n 1993          342           8.316         12.78        -0.34          0 \r\n 1993          343           8.005         18.89        -3.85          0 \r\n 1993          344           7.069         18.89        -4.24          0 \r\n 1993          345           8.005         7.22         -0.66          0 \r\n 1993          346           7.92          15.56        -1.8           0 \r\n 1993          347           3.497         15.56        -2.01          5.1 \r\n 1993          348           1.646         5.56         -2.22          2.5 \r\n 1993          349           3.291         0.56         -2.22          0 \r\n 1993          350           5.245         1.11         -0.21          0 \r\n 1993          351           2.88          1.11         -1.19          2 \r\n 1993          352           2.571         1.11         -2.09          1.5 \r\n 1993          353           3.291         1.11         -4.49          0 \r\n 1993          354           5.451         0.56         -4.63          0 \r\n 1993          355           6.48          2.78         -6.36          0 \r\n 1993          356           6.685         2.78         -6.11          0 \r\n 1993          357           5.657         1.94         -6.11          0 \r\n 1993          358           6.068         3.89         -5.56          1.8 \r\n 1993          359           5.348         3.89         -5.01          0 \r\n 1993          360           2.983         3.33         -7.39          2.3 \r\n 1993          361           4.114         3.33         -8.89          0 \r\n 1993          362           7.611        -5.53         -8.89          0 \r\n 1993          363           8.228         0.68         -3.33          0 \r\n 1993          364           8.628         8.89         -1.11          0 \r\n 1993          365           8.42          26.67        -2.57          0 \r\n 1994          1             7.589        -2.46         -8.85          0 \r\n 1994          2             5.198        -3.26         -18.86         7.4 \r\n 1994          3             6.133        -7.74         -13.14         0 \r\n 1994          4             5.925        -7.77         -13.3          0 \r\n 1994          5             4.99         -5.51         -14.97         0 \r\n 1994          6             6.304        -14.37        -24.91         0 \r\n 1994          7             8.09         -13.24        -24.46         0 \r\n 1994          8             7.039        -9.31         -21.4          0 \r\n 1994          9             8.09         -0.3          -10.34         0 \r\n 1994          10            8.195        -0.37         -18.18         0.5 \r\n 1994          11            9.237        -3.64         -14.88         0 \r\n 1994          12            7.857        -4.93         -16.71         0 \r\n 1994          13            8.281        -16.49        -23.15         1.8 \r\n 1994          14            6.795        -20.72        -29.95         0 \r\n 1994          15            7.432        -11.04        -26.53         0 \r\n 1994          16            9.226        -10.85        -23.32         1.3 \r\n 1994          17            8.796        -22.41        -29.34         0 \r\n 1994          18            6.115        -13.95        -28.96         0 \r\n 1994          19            9.429        -12.75        -27.38         1.3 \r\n 1994          20            10.079       -3.11         -22.64         0 \r\n 1994          21            10.621       -1.85         -15.48         0 \r\n 1994          22            10.182        5            -8.64          0 \r\n 1994          23            10.182        5.43         -7.07          0 \r\n 1994          24            9.854         0.05         -3.16          0 \r\n 1994          25            5.308        -2.42         -7.17          0.2 \r\n 1994          26            4.977        -3.43         -6.25          0 \r\n 1994          27            2.765        -3.33         -10.51         10.2 \r\n 1994          28            6.925        -5.86         -12.23         0 \r\n 1994          29            6.143        -6.37         -19.17         0 \r\n 1994          30            9.383        -15.71        -28.35         0 \r\n 1994          31            11.28        -10.04        -24.05         0 \r\n 1994          32            11.393       -6.86         -20.1          0 \r\n 1994          33            11.619       -6.41         -17.96         0 \r\n 1994          34            10.594       -5.4          -18.79         0 \r\n 1994          35            10.821       -2.51         -12.66         0 \r\n 1994          36            11.156       -2.37         -11.23         0 \r\n 1994          37            10.236       -10.5         -24.24         0 \r\n 1994          38            11.962       -15.97        -21.82         1 \r\n 1994          39            5.922        -15.44        -25.49         1 \r\n 1994          40            10.219       -8.03         -23.66         0.2 \r\n 1994          41            12.426       -5.46         -17.05         0 \r\n 1994          42            13.012       -5.3          -9.05          0 \r\n 1994          43            10.65         1.52         -14.15         1.3 \r\n 1994          44            13.49         3.55         -7.83          0 \r\n 1994          45            13.49         3.82         -4.45          0 \r\n 1994          46            11.227        5.5          -6.63          0 \r\n 1994          47            11.705        8.16         -1.45          0 \r\n 1994          48            13.019        12.29         1.12          0 \r\n 1994          49            12.416        13.58         2.85          0 \r\n 1994          50            11.435        3.73         -7.63          0 \r\n 1994          51            15.085        0.93         -7.64          0 \r\n 1994          52            10.189       -1.37         -6.79          0 \r\n 1994          53            9.33         -6.05         -10.54         3 \r\n 1994          54            7.308        -8.7          -19.04         10.4 \r\n 1994          55            14.74        -5.86         -17.74         0 \r\n 1994          56            10.622       -9.9          -18.23         3 \r\n 1994          57            14.122       -6.41         -16.17         0 \r\n 1994          58            15.129       -2.45         -9.2           0 \r\n 1994          59            10.464       -0.14         -10.1          0 \r\n 1994          60            12.648        3.15         -7.17          0 \r\n 1994          61            13.729        10.79        -1.67          0 \r\n 1994          62            13.405        11.93         1.08          0 \r\n 1994          63            14.176        16.61         0.28          0 \r\n 1994          64            15.266        7.64          0.2           0 \r\n 1994          65            15.618        4.66         -2.42          0 \r\n 1994          66            11.108        0.84         -3.48          0 \r\n 1994          67            10.427        0.62         -7.35          0 \r\n 1994          68            12.313        1.25         -4.76          0 \r\n 1994          69            11.298        5.11         -2.95          0 \r\n 1994          70            13.871        7.71         -0.58          0 \r\n 1994          71            14.89         9.82         -1.96          0 \r\n 1994          72            15.68         15.89        -0.69          0 \r\n 1994          73            16.834        15.33         0.4           0 \r\n 1994          74            17.062        7.02         -5.11          0 \r\n 1994          75            17.088        12.14        -0.4           0 \r\n 1994          76            16.514        12.96         1.46          0 \r\n 1994          77            16.303        17.23         0.53          0 \r\n 1994          78            17.806        17.9          2.29          0 \r\n 1994          79            18.067        17.47        -0.63          0 \r\n 1994          80            19.233        23.22         0.48          2 \r\n 1994          81            19.388        25.95         6.79          0 \r\n 1994          82            19.78         18.34        -3.3           1.5 \r\n 1994          83            20.491        6.13         -6.19          0 \r\n 1994          84            16.356        10.06        -0.92          0 \r\n 1994          85            14.923        10.19        -2.35          0 \r\n 1994          86            16.845        3.46         -1.67          0 \r\n 1994          87            11.19         4.45          0.36          0 \r\n 1994          88            13.945        5.02          0.03          0 \r\n 1994          89            16.977        8.37         -1.74          0 \r\n 1994          90            19.797        18.59         0.59          0 \r\n 1994          91            20.116        20.87         3.2           0 \r\n 1994          92            22.501        8.46          1.75          0 \r\n 1994          93            21.692        12.43        -6.92          0 \r\n 1994          94            21.858        18.67         2.83          0 \r\n 1994          95            24.437        0.44         -6.38          0 \r\n 1994          96            16.005        6.95         -6.92          0 \r\n 1994          97            21.476        12.38        -6.38          2.6 \r\n 1994          98            21.775        20.23         4.17          0 \r\n 1994          99            22.602        14.63         0.66          0 \r\n 1994          100           19.439        15.2          2.46          0 \r\n 1994          101           16.106        11.98         4.66          12.7 \r\n 1994          102           8.47          8.51          4.67          0 \r\n 1994          103           9.232         18.66         3.96          0 \r\n 1994          104           20.422        23.98         4.34          13.9 \r\n 1994          105           15.5          13.43         4.98          0 \r\n 1994          106           18.036        19.63         2.77          0 \r\n 1994          107           21.716        24.43         3.76          0 \r\n 1994          108           22.851        33.66         7.92          0 \r\n 1994          109           24.16         19.5          4             0 \r\n 1994          110           19.3          16.51         5.72          15.3 \r\n 1994          111           11.663        16.67         6.13          0 \r\n 1994          112           19.871        18.41         3.32          0 \r\n 1994          113           22.188        25.08         3.48          0 \r\n 1994          114           19.578        28.29         15.82         0 \r\n 1994          115           14.021        27.14         16.19         6.7 \r\n 1994          116           12.414        21.3          5.53          0 \r\n 1994          117           20.885        8.31          3.29          4.4 \r\n 1994          118           6.177         6.63          0.85          0 \r\n 1994          119           9.707         8.17         -0.55          9 \r\n 1994          120           8.738         4.85          0.32          0 \r\n 1994          121           10.918        11.73         0.21          0 \r\n 1994          122           20.066        15.01         3.08          0 \r\n 1994          123           22.71         18.55         3.71          0 \r\n 1994          124           22.24         19.02         6.05          0 \r\n 1994          125           16.445        15.73         5.51          13.3 \r\n 1994          126           11.12         9.87          6.32          4.8 \r\n 1994          127           9.462         13.97         5.09          0 \r\n 1994          128           22.865        18.15         2.46          0 \r\n 1994          129           24.291        22.55         8.11          0 \r\n 1994          130           26.832        26.57         6.48          0 \r\n 1994          131           24.768        25.99         14.36         0 \r\n 1994          132           25.894        23.57         10.12         0 \r\n 1994          133           25.094        26.78         9.84          14.8 \r\n 1994          134           20.14         19.66         13.21         0 \r\n 1994          135           14.804        24.39         11.54         0 \r\n 1994          136           24.619        26.44         10.85         0 \r\n 1994          137           23.171        25.41         12.96         0 \r\n 1994          138           26.566        26.27         9.69          0 \r\n 1994          139           26.08         26.59         11.8          0 \r\n 1994          140           27.052        26.93         10.96         0 \r\n 1994          141           26.252        28            11.59         0 \r\n 1994          142           23.317        31.15         16.25         4.9 \r\n 1994          143           22.828        30.49         15.07         0 \r\n 1994          144           16.905        25.01         14.9          0 \r\n 1994          145           23.142        23.95         12.49         0 \r\n 1994          146           17.89         19.96         8.76          0 \r\n 1994          147           25.771        23.56         7.86          0 \r\n 1994          148           24.78         25.82         12.18         0 \r\n 1994          149           17.842        25.31         17.05         0 \r\n 1994          150           22.467        31.3          14.27         0 \r\n 1994          151           23.128        28.04         15.63         3.9 \r\n 1994          152           25.247        20.38         13.42         3.5 \r\n 1994          153           9.983         16.76         9.74          0 \r\n 1994          154           25.137        23.96         8.06          0 \r\n 1994          155           26.385        25.44         10.6          13.9 \r\n 1994          156           16.401        26.51         16.85         0 \r\n 1994          157           15.251        32.11         17.13         20.1 \r\n 1994          158           16.687        27.53         16.88         20.4 \r\n 1994          159           16.328        18.25         13.45         0 \r\n 1994          160           19.019        23.04         11.79         0 \r\n 1994          161           22.787        24.9          13.07         4.3 \r\n 1994          162           19.199        26.64         12.01         0 \r\n 1994          163           23.864        26.47         14.95         10.4 \r\n 1994          164           16.613        30.02         17.02         0 \r\n 1994          165           17.516        32.27         22.08         0 \r\n 1994          166           16.613        30.2          21.18         0 \r\n 1994          167           18.96         30            19.57         0 \r\n 1994          168           18.238        32.49         19.75         6.4 \r\n 1994          169           16.974        31.31         19.13         0 \r\n 1994          170           22.391        32.51         19.65         2.9 \r\n 1994          171           16.432        31.84         19.62         0 \r\n 1994          172           16.613        28.43         17.32         0 \r\n 1994          173           24.919        27            15.52         52.3 \r\n 1994          174           14.446        23.26         16.07         0 \r\n 1994          175           20.947        26.51         15.65         0 \r\n 1994          176           24.197        27.25         16.24         0 \r\n 1994          177           23.836        24.88         15.87         0 \r\n 1994          178           24.739        27.13         15.46         0 \r\n 1994          179           23.655        25.49         16.12         0 \r\n 1994          180           22.572        27.6          12.71         0 \r\n 1994          181           27.989        29            16.87         10.1 \r\n 1994          182           21.122        28.1          16.24         0 \r\n 1994          183           25.199        24.55         13.99         0 \r\n 1994          184           23.883        28.9          18.93         15.7 \r\n 1994          185           15.044        30.59         19.57         0 \r\n 1994          186           16.925        31.22         18.96         0 \r\n 1994          187           24.635        30.19         19.99         0 \r\n 1994          188           22.566        24.31         13.39         2.6 \r\n 1994          189           28.027        22.99         13.92         0 \r\n 1994          190           19.619        25.93         12.9          0 \r\n 1994          191           26.719        30.09         18.06         0 \r\n 1994          192           24.664        30.16         19.46         0 \r\n 1994          193           24.29         24.84         15.08         18.7 \r\n 1994          194           17.821        24.6          17.24         0 \r\n 1994          195           14.48         25.85         13.84         0 \r\n 1994          196           25.432        26.82         17.59         0 \r\n 1994          197           23.947        27.3          17.6          0 \r\n 1994          198           23.608        29.34         16.66         0 \r\n 1994          199           25.452        32.91         19.85         0 \r\n 1994          200           23.977        32.41         15.21         0 \r\n 1994          201           28.219        26.33         14.48         0 \r\n 1994          202           24.919        26.1          15.52         0 \r\n 1994          203           23.636        28.74         15.32         0 \r\n 1994          204           26.751        29.06         15.57         0 \r\n 1994          205           25.848        26.25         13.86         0 \r\n 1994          206           25.665        25.84         10.5          0 \r\n 1994          207           28.578        23.47         13.1          0 \r\n 1994          208           25.134        24.47         11.49         5.2 \r\n 1994          209           20.432        25.59         12.58         0 \r\n 1994          210           26.219        27.63         13.32         0 \r\n 1994          211           26.403        30.27         16.45         0 \r\n 1994          212           25.325        30.69         18.65         37.9 \r\n 1994          213           19.786        27.36         17.25         0 \r\n 1994          214           20.505        27.43         19.82         4.5 \r\n 1994          215           17.147        24.68         18.9          4.3 \r\n 1994          216           11.061        23.57         8.9           0 \r\n 1994          217           26.512        22.64         11.02         0 \r\n 1994          218           23.351        25.88         13.81         0 \r\n 1994          219           22.67         26.31         17.66         0 \r\n 1994          220           19.356        23.52         12.8          0 \r\n 1994          221           21.995        26.83         17.71         12 \r\n 1994          222           15.24         25.4          14.47         0 \r\n 1994          223           15.651        20.94         16.91         26 \r\n 1994          224           8.944         25.1          18.17         3.8 \r\n 1994          225           10.835        25.68         8.34          0 \r\n 1994          226           26.303        23.17         9.79          0 \r\n 1994          227           24.937        26.41         11.44         0 \r\n 1994          228           24.932        28.83         17.29         0 \r\n 1994          229           21.879        29.98         17.27         0 \r\n 1994          230           20.715        30.16         17.3          0 \r\n 1994          231           21.22         27.03         13.37         0 \r\n 1994          232           22.574        23.9          12.04         0 \r\n 1994          233           22.574        25.54         11.2          0 \r\n 1994          234           23.076        29.67         13.75         0 \r\n 1994          235           22.911        31.96         16.68         0 \r\n 1994          236           22.413        32.93         19.17         0 \r\n 1994          237           21.428        30.47         16.75         8.7 \r\n 1994          238           15.659        32.89         17.8          0 \r\n 1994          239           20.127        32.79         13.62         8 \r\n 1994          240           17.345        23.57         9.46          0 \r\n 1994          241           21.279        25.15         15.39         9.6 \r\n 1994          242           14.782        25.12         12.78         0 \r\n 1994          243           14.028        20.48         10.44         0 \r\n 1994          244           17.898        19.74         11.15         0 \r\n 1994          245           11.263        22.94         13.68         0 \r\n 1994          246           10.077        22.57         13.96         44.5 \r\n 1994          247           10.443        24.66         15.48         4.8 \r\n 1994          248           8.972         26.28         12.06         0 \r\n 1994          249           19.269        26.52         10.05         0 \r\n 1994          250           19.853        28.22         14.52         0 \r\n 1994          251           19.124        30.85         13.47         0 \r\n 1994          252           13.763        30.6          14.06         0 \r\n 1994          253           17.971        27.92         14.11         0 \r\n 1994          254           16.39         29.3          15.17         0 \r\n 1994          255           15.55         31.9          18.79         0 \r\n 1994          256           15.122        32.7          20.99         0 \r\n 1994          257           13.873        32.27         21.57         0 \r\n 1994          258           12.599        27.43         12.88         0 \r\n 1994          259           16.854        23.93         10.43         0 \r\n 1994          260           17.135        25.89         10.77         0 \r\n 1994          261           17.558        28.17         11.89         0 \r\n 1994          262           17.976        28.82         12.94         0 \r\n 1994          263           16.727        27.89         14.44         28.1 \r\n 1994          264           15.068        25.36         10.02         4.2 \r\n 1994          265           11.931        14.71         5.59          0 \r\n 1994          266           11.656        15.25         6.01          9.1 \r\n 1994          267           9.794         21.65         12.68         13 \r\n 1994          268           7.21          20.83         7.86          0 \r\n 1994          269           10.929        18.82         3.39          0 \r\n 1994          270           13.897        21.04         5.38          0 \r\n 1994          271           16.058        21.15         5.5           0 \r\n 1994          272           16.46         23.64         5.03          0 \r\n 1994          273           16.058        27.23         13.26         0 \r\n 1994          274           14.333        19.14         12.69         0 \r\n 1994          275           9.081         19.88         10.45         0 \r\n 1994          276           8.159         16.89         10.17         0 \r\n 1994          277           8.874         19.03         11.09         0 \r\n 1994          278           10.962        20.93         11.33         0 \r\n 1994          279           10.998        24.46         13.07         0.5 \r\n 1994          280           7.893         17.55         10.06         24.1 \r\n 1994          281           9.75          16.44         5.01          0 \r\n 1994          282           12.829        15.95         3             0 \r\n 1994          283           14.117        17.62         3.04          0 \r\n 1994          284           14.117        18.02         3.34          0 \r\n 1994          285           13.994        19.68         4.06          0 \r\n 1994          286           13.742        21.71         6.38          0 \r\n 1994          287           13.372        19.52         4.74          0 \r\n 1994          288           10.123        16.14         13.14         1 \r\n 1994          289           2.353         18.43         15.41         3.8 \r\n 1994          290           2.353         19.17         17.41         42.9 \r\n 1994          291           4.419         20.66         9.69          5.6 \r\n 1994          292           10.68         18.47         8.29          0 \r\n 1994          293           12.287        21.16         4.69          0 \r\n 1994          294           12.287        23.6          6.8           0 \r\n 1994          295           10.705        18.33         7.15          0 \r\n 1994          296           10.728        14.54         4.35          0 \r\n 1994          297           7.956         8.46          2.3           0 \r\n 1994          298           8.958         7.71         -0.72          0 \r\n 1994          299           11.347        14.19        -2.95          0 \r\n 1994          300           11.597        19.6          2.1           0 \r\n 1994          301           9.822         20.44         10.14         0 \r\n 1994          302           8.089         15.29         5.74          0 \r\n 1994          303           10.316        13.53         3.22          0 \r\n 1994          304           8.909         12.68        -0.06          0 \r\n 1994          305           10.799        12.98        -2.57          0 \r\n 1994          306           9.406         17.19         5.48          0 \r\n 1994          307           7.016         12.78         4.99          0 \r\n 1994          308           5.751         6.54          3.13          2 \r\n 1994          309           5.809         9.76          1.75          0 \r\n 1994          310           8.999         14.25        -0.69          0 \r\n 1994          311           9.568         20.08         2.25          0 \r\n 1994          312           7.783         11.98         5.21          0 \r\n 1994          313           6.43          11.22        -1.5           0 \r\n 1994          314           9.383         11.45        -2.93          0 \r\n 1994          315           8.489         8.82         -0.68          0 \r\n 1994          316           6.032         15.37         4.11          0 \r\n 1994          317           5.198         13.96         9.29          4.3 \r\n 1994          318           5.64          11.56         2.18          0 \r\n 1994          319           8.184         10.14        -1.56          0 \r\n 1994          320           8.54          10.31        -5.09          0 \r\n 1994          321           7.664         13.71         2.01          0 \r\n 1994          322           7.117         8.25         -4.72          2.5 \r\n 1994          323           6.936         2.54         -6.03          0 \r\n 1994          324           3.902         7.2           2.54          9.4 \r\n 1994          325           3.468         7.16         -2.36          9.7 \r\n 1994          326           6.758         2.55         -5.98          0 \r\n 1994          327           6.436         7.82         -4.08          0 \r\n 1994          328           6.758         8.97         -2.01          0 \r\n 1994          329           7.509         8.97         -4.55          0 \r\n 1994          330           6.689         4.72         -1.76          0 \r\n 1994          331           3.61          6.18         -1.33          17.8 \r\n 1994          332           4.141        -0.37         -4.73          0 \r\n 1994          333           4.884        -2.67         -7.52          0 \r\n 1994          334           6.514         6.83         -8.81          0 \r\n 1994          335           7.564         14.39        -1.23          0 \r\n 1994          336           7.144         12.19        -0.88          0 \r\n 1994          337           6.304         7.59          0.78          0 \r\n 1994          338           4.518         7.36         -0.29          0 \r\n 1994          339           5.925        -0.39         -7.93          0 \r\n 1994          340           1.559        -6.03         -7.51          3 \r\n 1994          341           2.183        -2.54         -10.15         9.7 \r\n 1994          342           5.094        -1.43         -9.04          0 \r\n 1994          343           6.445        -2.26         -17.48         0 \r\n 1994          344           7.277        -5.88         -17.6          0 \r\n 1994          345           8.316        -13.49        -22.87         0 \r\n 1994          346           7.302        -5.47         -17.07         0 \r\n 1994          347           7.508        -4.52         -16.41         0 \r\n 1994          348           4.32         -4.7          -8.41          0 \r\n 1994          349           3.291         0.59         -6.74          4.1 \r\n 1994          350           5.348         2.48         -5.63          1.3 \r\n 1994          351           6.994         2.09         -8.85          0 \r\n 1994          352           7.508        -6.25         -12.5          0 \r\n 1994          353           6.582         3.99         -10.14         0 \r\n 1994          354           6.171         3.12         -2             0 \r\n 1994          355           3.291         2.6           1.11          0 \r\n 1994          356           3.394         1.31         -0.99          0 \r\n 1994          357           5.863         1.65         -6.22          0 \r\n 1994          358           7.611         0.89         -9.58          0 \r\n 1994          359           7.817         4.37         -8.02          0 \r\n 1994          360           7.92          5.15         -6.7           0 \r\n 1994          361           6.891         6.99         -2.83          0 \r\n 1994          362           6.274         0.11         -1.68          0 \r\n 1994          363           5.245         0.5          -5.4           0 \r\n 1994          364           3.534         0.37         -3.09          0 \r\n 1994          365           5.821        -3.44         -5.34          0.8 \r\n 1995          1             7.693        -8.03         -13.2          0 \r\n 1995          2             6.341        -0.39         -2.42          0 \r\n 1995          3             7.589        -1.22         -9.23          0 \r\n 1995          4             6.133        -2.89         -14.71         0 \r\n 1995          5             7.693         4.41         -8.47          0 \r\n 1995          6             6.409        -6.59         -23.51         4.6 \r\n 1995          7             9.351        -10.76        -17.27         0 \r\n 1995          8             7.775        -9.35         -15.79         0 \r\n 1995          9             7.039        -6.65         -10.58         0 \r\n 1995          10            6.409        -0.36         -6.67          0 \r\n 1995          11            4.884         0.1          -0.83          0 \r\n 1995          12            2.548         0.58         -2.62          0 \r\n 1995          13            3.079        -2.36         -7.75          0 \r\n 1995          14            5.839        -2.86         -11.74         0 \r\n 1995          15            7.857         0.29         -6.25          0 \r\n 1995          16            7.938         2.39         -3.46          0 \r\n 1995          17            6.758        -1.77         -12.05         1.5 \r\n 1995          18            9.118        -2.01         -6.85          0 \r\n 1995          19            7.695        -2.48         -8.82          0 \r\n 1995          20            7.045        -7.63         -12.65         0 \r\n 1995          21            5.961        -8.03         -11.23         0 \r\n 1995          22            5.036        -7.67         -15.86         0 \r\n 1995          23            7.773        -6.1          -15.24         0 \r\n 1995          24            9.306        -5.37         -15.2          0 \r\n 1995          25            10.174       -0.39         -15.94         0 \r\n 1995          26            10.727       -0.09         -6.65          0 \r\n 1995          27            7.852        -0.99         -3.22          3.8 \r\n 1995          28            2.792        -2.9          -9.48          0 \r\n 1995          29            8.713        -4.15         -15            0 \r\n 1995          30            10.723        3.09         -8.79          0 \r\n 1995          31            11.168        3.99         -2.47          0 \r\n 1995          32            10.152        0.77         -2.19          0 \r\n 1995          33            4.625         1.67         -3.12          6.1 \r\n 1995          34            6.379        -2.54         -11.01         0 \r\n 1995          35            11.049       -6.97         -15.4          0 \r\n 1995          36            10.236       -6.42         -15.63         0 \r\n 1995          37            10.811       -5.45         -12.75         0 \r\n 1995          38            10.236       -4.05         -17.19         0 \r\n 1995          39            12.077        2.71         -6.65          0 \r\n 1995          40            13.006        1.55         -8.12          0 \r\n 1995          41            12.309       -7.77         -20.98         0 \r\n 1995          42            13.481       -8.22         -19.09         0 \r\n 1995          43            10.887       -6.92         -13.83         0 \r\n 1995          44            11.715       -4.6          -11.18         0 \r\n 1995          45            9.585        -1.65         -9.94          0 \r\n 1995          46            11.586        0.75         -15.05         0 \r\n 1995          47            14.452        7.63         -9.52          0 \r\n 1995          48            15.189        11.09        -1.4           0 \r\n 1995          49            14.224        8.09         -4.93          0 \r\n 1995          50            14.963        6.17         -0.12          0 \r\n 1995          51            11.435        5.92         -4.47          0 \r\n 1995          52            13.749        8.61         -1.04          0 \r\n 1995          53            13.135        7.36         -0.51          0 \r\n 1995          54            13.996        5.7          -5.19          0 \r\n 1995          55            14.492        12.18        -2.5           0 \r\n 1995          56            15.371        12.41        -2.24          0 \r\n 1995          57            15.871       -0.55         -3.24          0 \r\n 1995          58            4.034        -0.53         -13            0.5 \r\n 1995          59            13.49        -7.57         -14.89         1 \r\n 1995          60            10.054       -6.38         -16.12         0 \r\n 1995          61            11.567        0.83         -12.99         0 \r\n 1995          62            13.405        0.86         -7.51          0 \r\n 1995          63            12.758        0.67         -3.24          0 \r\n 1995          64            5.997        -0.33         -4.45          4.8 \r\n 1995          65            7.039        -1.57         -12.5          7.1 \r\n 1995          66            9.789        -10.63        -21.7          1.8 \r\n 1995          67            14.753       -2.29         -19.16         0 \r\n 1995          68            15.64         9.15         -6.84          0 \r\n 1995          69            16.779        15.64         1.88          0 \r\n 1995          70            14.207        16.38         4.62          0 \r\n 1995          71            14.213        17.73         10.04         0 \r\n 1995          72            7.445         14.34         7.83          1.3 \r\n 1995          73            7.962         12.96         5.4           1.3 \r\n 1995          74            13.991        16.02         5.79          0 \r\n 1995          75            15.482        13.61         5.54          0 \r\n 1995          76            15.024        15.81         4.53          0 \r\n 1995          77            13.066        11.6          2.24          2.3 \r\n 1995          78            12.141        10.21         2.2           0 \r\n 1995          79            9.558         11.54        -2.8           12.7 \r\n 1995          80            13.988        12.93         1.34          0 \r\n 1995          81            13.278        11.89         3.75          0.5 \r\n 1995          82            9.831         12.27        -0.43          0 \r\n 1995          83            14.45         13.6          5.05          0 \r\n 1995          84            13.371        11.58         6.08          0 \r\n 1995          85            7.999         12.73         2.33          25.4 \r\n 1995          86            9.626         10.9          1.2           0.5 \r\n 1995          87            5.896         9.97          1.15          0 \r\n 1995          88            5.942         10.3         -1.58          1.3 \r\n 1995          89            9.216         8.95         -1.6           1.3 \r\n 1995          90            7.088         9.22         -3.33          0 \r\n 1995          91            13.638        12.59        -2.21          0 \r\n 1995          92            21.153        18.6         -1.35          0 \r\n 1995          93            21.558        19.27        -9.91          0 \r\n 1995          94            22.401        1.64         -2.86          0 \r\n 1995          95            19.414        18.14        -3.42          0 \r\n 1995          96            16.141        17.12         2.52          1.5 \r\n 1995          97            18.74         10.53         3.02          4.8 \r\n 1995          98            11.025        12.71         2.75          0.5 \r\n 1995          99            10.888        4.68          2.04          16.3 \r\n 1995          100           5.137         1.17          0.58          23.6 \r\n 1995          101           6.665         6.81          0.8           12.7 \r\n 1995          102           8.053         4.33          0.32          0.8 \r\n 1995          103           17.485        18.01         0.6           0 \r\n 1995          104           21.261        16.59         5.63          0 \r\n 1995          105           17.895        18.09         7.28          0 \r\n 1995          106           21.418        11.33         3.09          0 \r\n 1995          107           11.071        9.97          3.58          2.5 \r\n 1995          108           13.058        15.81         2.79          16.5 \r\n 1995          109           16.869        13.36         0             0 \r\n 1995          110           19.443        7.5           4.1           8.6 \r\n 1995          111           10.799        9.05          1.32          1 \r\n 1995          112           20.303        15.15         1.24          0 \r\n 1995          113           21.898        16.47         2.67          0 \r\n 1995          114           19.723        13.44         2.22          0 \r\n 1995          115           22.929        15.38         0.02          9.4 \r\n 1995          116           14.459        9.16          3.1           26.9 \r\n 1995          117           14.561        12.31         0.27          1.8 \r\n 1995          118           20.738        15.08         1.74          0 \r\n 1995          119           15.884        12.28         7.9           2.5 \r\n 1995          120           9.627         11.96         6.03          4.3 \r\n 1995          121           13.361        12.59         5.49          0 \r\n 1995          122           17.421        14.73         6.08          0 \r\n 1995          123           17.11         11.74         7.97          2.3 \r\n 1995          124           9.084         11.26         5.51          6.3 \r\n 1995          125           24.12         19.81         0.53          0 \r\n 1995          126           24.903        19.38         8.82          0 \r\n 1995          127           18.292        16.75         11.9          0 \r\n 1995          128           10.092        18.68         13.16         38.1 \r\n 1995          129           13.971        19.36         10.79         21.1 \r\n 1995          130           13.495        12.49         8.87          2.5 \r\n 1995          131           16.194        16.47         6.51          0 \r\n 1995          132           24.775        17.81         5.98          0.8 \r\n 1995          133           17.582        17.33         9.89          6.6 \r\n 1995          134           25.414        18.97         7.95          0 \r\n 1995          135           27.194        12            5.18          0 \r\n 1995          136           26.389        20.44         9.44          1.5 \r\n 1995          137           20.114        16.36         7.54          0 \r\n 1995          138           21.544        9.5           7.48          0 \r\n 1995          139           27.538        21.78         4.83          0 \r\n 1995          140           26.242        20.76         8.45          0 \r\n 1995          141           27.067        22.32         9.44          0 \r\n 1995          142           25.274        23.56         8.38          0 \r\n 1995          143           18.425        15.27         8.59          10.7 \r\n 1995          144           14.443        18.33         8.18          0 \r\n 1995          145           25.276        22.02         8.78          0 \r\n 1995          146           24.948        19.32         11.63         0 \r\n 1995          147           14.207        20.06         11.21         16.8 \r\n 1995          148           14.372        17.51         7.67          3.6 \r\n 1995          149           18.668        23.05         10.81         0 \r\n 1995          150           26.597        22.08         14.01         0 \r\n 1995          151           24.119        22.58         14.47         0 \r\n 1995          152           20.578        18.54         12.87         0 \r\n 1995          153           11.766        20.82         11.58         2.8 \r\n 1995          154           18.719        26.11         15.88         0 \r\n 1995          155           22.284        24.62         16.68         0 \r\n 1995          156           19.075        18.57         15.64         0 \r\n 1995          157           16.328        28.51         17.66         0 \r\n 1995          158           24.402        30.7          8.94          0 \r\n 1995          159           30.682        15.59         11.31         0 \r\n 1995          160           16.507        20.04         11.64         5.4 \r\n 1995          161           12.919        18.65         9.38          0 \r\n 1995          162           24.402        22.71         9.81          0 \r\n 1995          163           27.99         27.03         10.84         0 \r\n 1995          164           28.531        26.05         14.55         13 \r\n 1995          165           20.224        28.72         16.04         0 \r\n 1995          166           18.419        30.16         19.32         0 \r\n 1995          167           22.752        31.32         19.56         0 \r\n 1995          168           22.211        30.37         19.92         0 \r\n 1995          169           23.113        31.13         17.72         0 \r\n 1995          170           25.28         31.81         17.06         0 \r\n 1995          171           26.725        32.39         19.18         0 \r\n 1995          172           25.822        33.81         20.43         0 \r\n 1995          173           24.558        33.54         18.32         0 \r\n 1995          174           25.642        25.19         19.29         13.2 \r\n 1995          175           18.057        21.19         18.82         5.3 \r\n 1995          176           13.182        20.48         17.8          2.8 \r\n 1995          177           8.848         23.22         17.82         23.3 \r\n 1995          178           9.751         24.54         16.58         4.5 \r\n 1995          179           13.724        24.66         18.19         0 \r\n 1995          180           12.46         24.14         13.37         0 \r\n 1995          181           22.752        21.3          8.75          0 \r\n 1995          182           30.119        22.07         9.52          0 \r\n 1995          183           28.584        24.66         13.32         0 \r\n 1995          184           26.139        26.55         17.69         6.1 \r\n 1995          185           15.608        22.09         14.04         24.6 \r\n 1995          186           17.113        24.63         12.86         0 \r\n 1995          187           25.387        25.83         14.69         0 \r\n 1995          188           26.515        25.67         14.95         0 \r\n 1995          189           26.345        29.31         18.31         0 \r\n 1995          190           23.542        28.27         16.74         0 \r\n 1995          191           25.411        32.22         20.95         0 \r\n 1995          192           24.477        28.1          21.76         0 \r\n 1995          193           24.29         32.73         22.21         0 \r\n 1995          194           24.69         29.87         23.91         0 \r\n 1995          195           22.834        28.54         20.09         15.4 \r\n 1995          196           18.935        22.98         19.99         5.1 \r\n 1995          197           14.851        25.71         16.69         0 \r\n 1995          198           24.161        25.29         14.93         0 \r\n 1995          199           26.19         26.29         17.58         0 \r\n 1995          200           24.53         25.07         18.78         21.2 \r\n 1995          201           16.968        24.63         15.97         0 \r\n 1995          202           26.202        26.05         18.18         4.5 \r\n 1995          203           17.59         25.06         16.67         0 \r\n 1995          204           24.186        25.71         16.65         5.3 \r\n 1995          205           19.295        27.25         17.2          0 \r\n 1995          206           25.848        29.42         16.16         0 \r\n 1995          207           25.119        31.82         18.71         0 \r\n 1995          208           23.868        31.92         17.01         0 \r\n 1995          209           27.123        31.86         17.78         0 \r\n 1995          210           25.134        31.93         21.04         0 \r\n 1995          211           21.553        30.92         19.68         16.3 \r\n 1995          212           22.631        23.94         14.47         10.5 \r\n 1995          213           19.786        24.35         18.4          0 \r\n 1995          214           16.97         27.41         19.52         0 \r\n 1995          215           14.495        29.42         19.01         0 \r\n 1995          216           19.138        29.61         18.45         3 \r\n 1995          217           15.977        28.67         20.02         0 \r\n 1995          218           19.138        29.5          19.55         0 \r\n 1995          219           18.31         31.64         23.06         0 \r\n 1995          220           17.787        31.9          22.95         0 \r\n 1995          221           16.626        29.1          20.56         26.4 \r\n 1995          222           13.682        31.53         20.93         0 \r\n 1995          223           14.963        32.45         22.73         0 \r\n 1995          224           18.919        32.46         23.41         0 \r\n 1995          225           17.199        31.99         19.43         26.5 \r\n 1995          226           16.568        24.69         17.98         3.5 \r\n 1995          227           11.614        26.94         21            5.4 \r\n 1995          228           10.176        31.72         21.21         0 \r\n 1995          229           12.381        32.45         22.32         0 \r\n 1995          230           18.694        31.42         17.92         0 \r\n 1995          231           22.904        26.03         13.35         0 \r\n 1995          232           23.076        28.26         15.38         0 \r\n 1995          233           23.41         28.54         15            0 \r\n 1995          234           23.41         28.23         19.09         4.8 \r\n 1995          235           14.444        29.98         18.4          0 \r\n 1995          236           19.922        30.23         15.37         0 \r\n 1995          237           22.581        31.21         16.33         0 \r\n 1995          238           22.252        31.79         19.48         0 \r\n 1995          239           20.945        32.87         20.59         0 \r\n 1995          240           20.127        33            20.13         0 \r\n 1995          241           19.818        33.63         20.69         0 \r\n 1995          242           18.518        32.55         15.66         0 \r\n 1995          243           22.735        25.99         12.72         0 \r\n 1995          244           21.445        27.82         12.86         0 \r\n 1995          245           19.858        29.28         18.17         0 \r\n 1995          246           17.487        30.01         15.59         0 \r\n 1995          247           18.974        30.07         13.27         0 \r\n 1995          248           18.533        26.91         19.24         0 \r\n 1995          249           14.014        26.28         11.02         9.1 \r\n 1995          250           13.43         17.77         5.59          0 \r\n 1995          251           16.806        19.45         5.52          0 \r\n 1995          252           19.703        20.57         6.59          0 \r\n 1995          253           19.553        22.78         6.91          0 \r\n 1995          254           19.121        24.02         14.4          7.2 \r\n 1995          255           11.984        29.25         12.82         0 \r\n 1995          256           12.84         30.09         10.86         0 \r\n 1995          257           19.393        27.37         9.07          0 \r\n 1995          258           18.119        27.91         14.57         0 \r\n 1995          259           16.854        26.73         6.84          0 \r\n 1995          260           18.82         21.2          10.29         8.6 \r\n 1995          261           10.869        21.74         11.52         9.8 \r\n 1995          262           9.336         12.07         3.97          4.7 \r\n 1995          263           8.986         11.48         3.3           4.3 \r\n 1995          264           8.156         11.08        -1.59          0 \r\n 1995          265           15.222        14.62        -1.07          0 \r\n 1995          266           16.456        14.57         3.23          3.4 \r\n 1995          267           14.691        19.82         3.76          0 \r\n 1995          268           11.835        24.92         5.26          0 \r\n 1995          269           17.135        26.6          5.68          0 \r\n 1995          270           17.405        26.78         8.29          0 \r\n 1995          271           16.326        25.67         15.26         13.8 \r\n 1995          272           10.036        24.94         17.15         0 \r\n 1995          273           5.308         23.62         8.45          0 \r\n 1995          274           14.465        22.35         10.86         0 \r\n 1995          275           12.239        20.73         5.61          0.2 \r\n 1995          276           14.213        21.9          7.54          0 \r\n 1995          277           13.441        21.33         9.4           0 \r\n 1995          278           12.267        12.31         8.38          4.6 \r\n 1995          279           3.494         14.47         5.04          5.6 \r\n 1995          280           6.599         15.62         2.88          0 \r\n 1995          281           12.316        17.55         6.3           3 \r\n 1995          282           12.059        22.76         5.57          0 \r\n 1995          283           13.608        27.8          8.48          0 \r\n 1995          284           13.99         28.93         13.63         0 \r\n 1995          285           12.607        27.52         11.59         0 \r\n 1995          286           11.851        13.87         5.58          0 \r\n 1995          287           9.623         15.4          1.56          0 \r\n 1995          288           12.122        17.61         1.09          0 \r\n 1995          289           12.882        22.72         9.36          0 \r\n 1995          290           12.386        23.1          4.8           0 \r\n 1995          291           13.381        18.73         8.69          0 \r\n 1995          292           11.294        11.6          4.05          0 \r\n 1995          293           8.029         10.96         0.69          0 \r\n 1995          294           6.934         14.19        -2.66          0 \r\n 1995          295           11.8          16.02         6.13          0 \r\n 1995          296           10.849        12.85         2.3           1.5 \r\n 1995          297           7.474         18.13        -0.92          0 \r\n 1995          298           10.988        18.44         0.07          0 \r\n 1995          299           11.347        13.54         4.44          0 \r\n 1995          300           8.875         10.83         5.5           1.3 \r\n 1995          301           4.378         10.73        -0.65          0 \r\n 1995          302           8.675         4.44          0.22          0 \r\n 1995          303           3.634         2.53          0.01          3 \r\n 1995          304           2.462         4.96          1.99          6.6 \r\n 1995          305           2.787         3.6          -2.67          29.5 \r\n 1995          306           4.645        -0.4          -7.17          0.8 \r\n 1995          307           6.211         2.9          -12.69         0 \r\n 1995          308           10.236        8.27         -4.31          0 \r\n 1995          309           10.48         11.86        -0.85          1 \r\n 1995          310           7.518         9.86         -3.33          0 \r\n 1995          311           9.113        -1.02         -10.45         0 \r\n 1995          312           7.332         13.38        -3.57          0 \r\n 1995          313           6.655         13.25        -4.43          0 \r\n 1995          314           9.718        -3.29         -11.57         0.5 \r\n 1995          315           6.255         2.18         -10.09         1.3 \r\n 1995          316           8.266         1.43         -6.77          0 \r\n 1995          317           7.52          2.34         -6.52          0 \r\n 1995          318           5.751         3.86         -3.93          0 \r\n 1995          319           7.52          3.48         -2.85          0 \r\n 1995          320           6.569         4.39         -2.2           0 \r\n 1995          321           4.927         7.41         -3.2           0 \r\n 1995          322           6.569         12.22        -0.78          0 \r\n 1995          323           7.695         10.11        -0.18          0 \r\n 1995          324           7.912         5.54         -4.38          0 \r\n 1995          325           7.695         6.7          -8.21          0 \r\n 1995          326           8.153         3.83         -10.45         0 \r\n 1995          327           8.367         1.56         -12.56         0 \r\n 1995          328           7.509         4.89         -3.52          0 \r\n 1995          329           8.26          7.99         -0.73          0.8 \r\n 1995          330           6.052         5            -7.52          0 \r\n 1995          331           5.415        -7.46         -15.59         7.1 \r\n 1995          332           6.158        -3.74         -14.92         0 \r\n 1995          333           7.22          5.81         -9.61          0 \r\n 1995          334           8.195         7.47         -0.17          0 \r\n 1995          335           6.829         14.66        -1.57          0 \r\n 1995          336           6.934         11.85        -0.32          0 \r\n 1995          337           8.09          6.33         -6.7           0 \r\n 1995          338           8.405         7.26         -3.21          0 \r\n 1995          339           6.757         0.81         -7.65          0 \r\n 1995          340           5.198        -1.36         -7.29          0 \r\n 1995          341           4.782        -2.57         -16.52         0 \r\n 1995          342           4.47         -14.2         -21.06         14 \r\n 1995          343           6.029        -9.64         -21.48         0 \r\n 1995          344           6.757        -10.67        -16.99         0 \r\n 1995          345           6.757        -10.14        -16.55         0 \r\n 1995          346           4.114        -3.68         -10.66         0 \r\n 1995          347           5.863         5.27         -5.15          0.5 \r\n 1995          348           5.76          4.37         -8.23          0 \r\n 1995          349           7.508         2.47         -8.4           0 \r\n 1995          350           6.582         2.06         -3.28          0 \r\n 1995          351           5.657         2.22         -1.12          0 \r\n 1995          352           2.571         0.38         -2.81          0 \r\n 1995          353           3.6          -1.31         -6.96          0 \r\n 1995          354           4.731        -4.16         -8.79          0 \r\n 1995          355           3.497        -5.82         -10.49         0 \r\n 1995          356           4.217        -5.05         -8.6           0 \r\n 1995          357           3.291        -3.4          -6.15          0 \r\n 1995          358           2.571        -2.3          -5.1           0 \r\n 1995          359           2.983         1.2          -6.64          0 \r\n 1995          360           4.937        -0.26         -5.21          0 \r\n 1995          361           5.965        -1.91         -13.93         0 \r\n 1995          362           7.817         2.24         -11            0 \r\n 1995          363           7.92          1.35         -3.1           0 \r\n 1995          364           5.406         0.48         -1.21          0.5 \r\n 1995          365           2.391         0.58         -0.55          0 \r\n 1996          1             1.663        -0.4          -6.69          0 \r\n 1996          2             4.47         -0.94         -16.7          0 \r\n 1996          3             8.212        -6.5          -10.47         0 \r\n 1996          4             6.341        -8.83         -18.74         1.5 \r\n 1996          5             7.277        -9.82         -23.24         0 \r\n 1996          6             7.249        -12.11        -24.33         0 \r\n 1996          7             7.144        -4.75         -20.5          0 \r\n 1996          8             8.405         1.12         -6.28          0 \r\n 1996          9             7.249         1.17         -1.04          0 \r\n 1996          10            1.786         1.05         -1.63          0 \r\n 1996          11            2.548         7.74         -7.12          0.5 \r\n 1996          12            6.901         13.79        -2.15          0 \r\n 1996          13            8.812         7.29         -6.3           0 \r\n 1996          14            9.131        -3.54         -14.38         0 \r\n 1996          15            8.918         5.43         -5.55          0 \r\n 1996          16            8.582         6.7          -3.9           0 \r\n 1996          17            8.153         11.05        -20.15         1.3 \r\n 1996          18            7.831        -16.25        -22.77         15 \r\n 1996          19            5.419        -11.21        -18.92         1.3 \r\n 1996          20            6.611        -0.8          -14.71         0 \r\n 1996          21            8.454         0.78         -11.59         0 \r\n 1996          22            9.854        -10.38        -14.34         0 \r\n 1996          23            6.022        -10.63        -17.21         1 \r\n 1996          24            4.598        -6.45         -17.42         2 \r\n 1996          25            8.958        -8.78         -14.44         0 \r\n 1996          26            5.64         -11.85        -20.52         19.1 \r\n 1996          27            6.525        -2.92         -18.75         3.6 \r\n 1996          28            10.835       -1.99         -22.15         0 \r\n 1996          29            12.175       -16.52        -22.71         0 \r\n 1996          30            6.814        -18.25        -31.38         0 \r\n 1996          31            10.829       -19.08        -27.95         0 \r\n 1996          32            10.604       -20.78        -33.58         0 \r\n 1996          33            11.393       -17.78        -32.65         0 \r\n 1996          34            9.455        -15.41        -30.68         0 \r\n 1996          35            11.733       -7.74         -20.61         0 \r\n 1996          36            13.112        0.22         -18.85         0 \r\n 1996          37            11.731        3.75         -2.23          0 \r\n 1996          38            12.422        7.28          1.63          0 \r\n 1996          39            6.851         9.32         -1.96          0 \r\n 1996          40            10.683        8.19          1.71          0 \r\n 1996          41            9.73          3.14         -3.26          0 \r\n 1996          42            7.972        -1.01         -5.49          0 \r\n 1996          43            5.798         6.25         -5.49          0 \r\n 1996          44            9.112         4.94         -1.16          0 \r\n 1996          45            9.585        -0.28         -10.11         0 \r\n 1996          46            10.511       -4.69         -19.34         4.3 \r\n 1996          47            10.75        -1.64         -8.33          0 \r\n 1996          48            14.586       -4.15         -12.35         0 \r\n 1996          49            12.054        7.45         -9.87          0 \r\n 1996          50            12.895        8.95          1.46          0 \r\n 1996          51            14.598        5.15         -2.13          0 \r\n 1996          52            11.908        2.14         -3             0 \r\n 1996          53            5.77          7.81          1.8           0 \r\n 1996          54            9.042         13.68        -2.47          0 \r\n 1996          55            15.483        13.25         0.62          0 \r\n 1996          56            16.246        11.5         -1.07          0 \r\n 1996          57            14.871        1.24         -7.91          0 \r\n 1996          58            11.851       -6.31         -15.45         0 \r\n 1996          59            14.246       -4.14         -17.7          0 \r\n 1996          60            15.069       -0.44         -10.44         0 \r\n 1996          61            13.513       -0.91         -10.49         0 \r\n 1996          62            13.837       -4.54         -17.78         0 \r\n 1996          63            12            3.37         -11.25         0 \r\n 1996          64            14.394        4.11         -6.03          0 \r\n 1996          65            14.83         0.31         -10.98         0 \r\n 1996          66            12.868       -10.72        -22.07         1 \r\n 1996          67            14.298       -6.82         -21.04         0 \r\n 1996          68            14.42         0.26         -15.94         0 \r\n 1996          69            14.642        7.41         -9.58          0 \r\n 1996          70            16.556        12.17        -1.88          0 \r\n 1996          71            17.003        15.78        -0.93          0 \r\n 1996          72            16.018        20.55        -0.47          0 \r\n 1996          73            15.793        20.12         1.08          0 \r\n 1996          74            17.403        10.22        -4.56          0 \r\n 1996          75            17.517        12.61        -3.51          0 \r\n 1996          76            16.973        11.97        -2.82          0 \r\n 1996          77            17.432        7.58         -5.11          3 \r\n 1996          78            12.834        2.17         -6.55          0 \r\n 1996          79            15.956        4.33         -4.6           0 \r\n 1996          80            13.405        5.16         -9.36          0 \r\n 1996          81            10.024        7.44         -8.33          0 \r\n 1996          82            17.508        7.89         -2.53          0 \r\n 1996          83            17.885        18.33         2.53          0 \r\n 1996          84            15.99         7.02         -12.14         1.3 \r\n 1996          85            13.61        -4.85         -13.83         23.9 \r\n 1996          86            15.997        4.93         -7.75          0 \r\n 1996          87            12.032        8.75         -1.95          0 \r\n 1996          88            16.003        11.47        -1.35          0 \r\n 1996          89            16.856        11.83         0.74          0 \r\n 1996          90            17.704        4.34         -4.37          6.3 \r\n 1996          91            11.976        10.28        -3.45          1.5 \r\n 1996          92            10.228        21.3          1.37          0 \r\n 1996          93            18.055        22.93         8.13          0 \r\n 1996          94            21.692        10.16        -2.15          0 \r\n 1996          95            22.401        2.56         -3.77          0 \r\n 1996          96            22.944        7.32         -5.78          0 \r\n 1996          97            9.849         6.92         -4.22          0 \r\n 1996          98            20.108        8.29         -2.42          0 \r\n 1996          99            19.157        11.34        -4.1           0 \r\n 1996          100           18.743        20.49        -2.45          0 \r\n 1996          101           22.91         27.9          4.92          0 \r\n 1996          102           24.993        28.36         4.07          0 \r\n 1996          103           25.687        9.38         -2.14          0 \r\n 1996          104           25.598        9.57         -0.69          2.8 \r\n 1996          105           18.884        9.41         -1.04          0 \r\n 1996          106           16.627        13.1         -2.24          0 \r\n 1996          107           9.159         25.89         3.88          0 \r\n 1996          108           23.419        25.34         11.01         0 \r\n 1996          109           23.703        20.67         5.64          0 \r\n 1996          110           24.589        20.11         2.82          6.1 \r\n 1996          111           22.874        19.08         1.75          0 \r\n 1996          112           18.287        19.01         2.89          0 \r\n 1996          113           21.743        16.92        -2.74          0 \r\n 1996          114           21.608        20.17         4.81          0 \r\n 1996          115           22.188        21.18         11.34         0 \r\n 1996          116           22.929        15.69         0.63          0 \r\n 1996          117           19.132        17.53         0.52          0 \r\n 1996          118           22.797        18.45         4.7           3.9 \r\n 1996          119           21.179        9.95          3.38          18.3 \r\n 1996          120           21.473        15.02        -0.15          0 \r\n 1996          121           10.071        17.15         1.51          0 \r\n 1996          122           13.217        16.77         2.23          2.6 \r\n 1996          123           23.488        12.84         4.44          16.3 \r\n 1996          124           21.932        14.14         6.58          6 \r\n 1996          125           11.903        16.12         8.24          0 \r\n 1996          126           7.674         16.23         0.12          0 \r\n 1996          127           15.975        14.08         6.5           3.9 \r\n 1996          128           21.604        22.28         10.16         0 \r\n 1996          129           11.038        23.52         13.53         22.6 \r\n 1996          130           17.782        17.58         9.56          21.6 \r\n 1996          131           14.13         11.62         6.19          0 \r\n 1996          132           12.86         11.84         1.66          0 \r\n 1996          133           11.348        13.3          1.61          0 \r\n 1996          134           19.82         13.61         4.49          4.9 \r\n 1996          135           19.18         18.63         10.33         0 \r\n 1996          136           19.148        23.95         15.95         14 \r\n 1996          137           10.298        30.77         17.97         0 \r\n 1996          138           13.195        31.64         15.6          0 \r\n 1996          139           14.579        32.14         20.81         0 \r\n 1996          140           24.298        29.71         14.59         0 \r\n 1996          141           21.706        24.51         9.87          0 \r\n 1996          142           24.621        25.13         12.6          0 \r\n 1996          143           17.936        24.03         13.89         11.4 \r\n 1996          144           23.969        18.92         8.46          30.6 \r\n 1996          145           14.772        13.3          9.3           10.6 \r\n 1996          146           16.085        12.92         7.86          11.8 \r\n 1996          147           8.371         11.6          8.41          11.9 \r\n 1996          148           9.747         11.29         8.9           9.1 \r\n 1996          149           7.269         19.43         10.33         0 \r\n 1996          150           7.434         20.7          8.53          0 \r\n 1996          151           17.181        20.33         9.41          2.6 \r\n 1996          152           27.754        17.93         14.72         11.2 \r\n 1996          153           26.977        22.46         11.95         0 \r\n 1996          154           13.014        20.8          10.06         0 \r\n 1996          155           18.897        20.23         5.41          0 \r\n 1996          156           25.137        24.17         9.26          0 \r\n 1996          157           28.88         23.02         14.39         2.8 \r\n 1996          158           29.964        17.48         11.65         0 \r\n 1996          159           17.763        21.59         11.04         0 \r\n 1996          160           14.713        23.27         11.56         0 \r\n 1996          161           23.864        23.9          15.8          0 \r\n 1996          162           26.914        25.51         16.58         5.7 \r\n 1996          163           24.402        30.64         15.52         0 \r\n 1996          164           17.404        31.34         16.6          0 \r\n 1996          165           27.808        31.78         16.63         0 \r\n 1996          166           28.531        31.84         18.05         0 \r\n 1996          167           28.35         31.27         20.01         29.7 \r\n 1996          168           27.808        26.2          19.53         36.2 \r\n 1996          169           18.057        20.99         16.12         0 \r\n 1996          170           13.001        26.47         16.14         0 \r\n 1996          171           17.155        27.35         19.29         18.4 \r\n 1996          172           20.585        29.46         19.46         15.6 \r\n 1996          173           16.432        29.57         16.64         0 \r\n 1996          174           15.168        25.84         16.13         6.2 \r\n 1996          175           19.683        26.23         16.05         5.6 \r\n 1996          176           16.974        27.62         15.53         0 \r\n 1996          177           18.96         29.84         17.81         0 \r\n 1996          178           26.183        31.1          17.82         0 \r\n 1996          179           25.28         33.09         21.02         0 \r\n 1996          180           25.822        33.81         24.33         0 \r\n 1996          181           24.016        33.92         21.38         0 \r\n 1996          182           20.766        31.11         18.49         0 \r\n 1996          183           26.989        30.68         20.26         0 \r\n 1996          184           27.644        27.37         15.3          0 \r\n 1996          185           24.635        26.89         16.63         0 \r\n 1996          186           28.396        28.12         15.47         0 \r\n 1996          187           24.447        29.95         17.49         0 \r\n 1996          188           26.703        29.19         18.37         0 \r\n 1996          189           26.139        29.02         16.62         0 \r\n 1996          190           24.85         23.63         12.68         0 \r\n 1996          191           25.785        24.81         11.72         0 \r\n 1996          192           26.719        26.65         10.72         0 \r\n 1996          193           29.895        27.38         18.43         3.2 \r\n 1996          194           28.774        27.47         14.3          0 \r\n 1996          195           19.121        26.38         15.48         0 \r\n 1996          196           27.66         28.21         15.86         0 \r\n 1996          197           25.618        28.5          14.44         0 \r\n 1996          198           26.175        30.36         19.17         71.3 \r\n 1996          199           26.928        32.15         23.9          0 \r\n 1996          200           17.89         32.34         20.97         0 \r\n 1996          201           14.939        28.42         16.94         0 \r\n 1996          202           22.87         24.74         17.71         0 \r\n 1996          203           19.972        27.71         17.8          0 \r\n 1996          204           11.727        26.93         14.27         0 \r\n 1996          205           20.155        26.79         14.6          0 \r\n 1996          206           20.023        24.52         12.76         0 \r\n 1996          207           23.845        25.49         14.74         0 \r\n 1996          208           24.209        25.7          16.9          0 \r\n 1996          209           24.591        24.51         16.21         22.6 \r\n 1996          210           16.816        25.14         17.1          0 \r\n 1996          211           14.465        25.2          12.86         0 \r\n 1996          212           19.039        24.41         13.24         0 \r\n 1996          213           24.427        25.12         13.27         0 \r\n 1996          214           25.217        26.62         14.76         0 \r\n 1996          215           24.041        26.86         14.53         0 \r\n 1996          216           24.925        25.73         19.83         6.9 \r\n 1996          217           23.351        27.64         20.05         29.6 \r\n 1996          218           15.802        30.82         21.75         0 \r\n 1996          219           11.764        31.28         18.43         2.7 \r\n 1996          220           16.043        30.59         15.83         0 \r\n 1996          221           16.915        27.95         16.4          0 \r\n 1996          222           24.246        27.48         16.72         0 \r\n 1996          223           24.073        26.92         16.12         9.1 \r\n 1996          224           22.359        25.45         14.25         0 \r\n 1996          225           14.619        27.16         14.98         0 \r\n 1996          226           23.563        27.39         18.22         0 \r\n 1996          227           23.399        26.47         12.75         0 \r\n 1996          228           20.154        23.55         13.25         0 \r\n 1996          229           25.101        24.34         14.47         0 \r\n 1996          230           22.048        23.54         16.19         0 \r\n 1996          231           19.872        25.44         18.28         35.4 \r\n 1996          232           16.504        26.43         17.78         3.1 \r\n 1996          233           10.869        29.28         17.38         0 \r\n 1996          234           13.21         29.1          21.86         2.9 \r\n 1996          235           20.4          24.63         13.49         0 \r\n 1996          236           13.614        25.55         13.09         0 \r\n 1996          237           15.772        27.66         12.86         0 \r\n 1996          238           23.57         27.39         15.6          29.4 \r\n 1996          239           23.241        24.02         16.2          0 \r\n 1996          240           15.709        25.75         15.11         0 \r\n 1996          241           12.109        26.81         15.19         0 \r\n 1996          242           17.543        26.35         13.99         0 \r\n 1996          243           20.142        25.27         13.36         0 \r\n 1996          244           20.962        27.16         14.89         0 \r\n 1996          245           20.962        27.37         17.03         0 \r\n 1996          246           19.117        27.39         15.79         0 \r\n 1996          247           18.376        28.76         17.28         0 \r\n 1996          248           17.062        29.1          16.84         0 \r\n 1996          249           16.768        28            15.11         0 \r\n 1996          250           17.226        27.41         15.42         0 \r\n 1996          251           17.81         26.26         18.01         14.6 \r\n 1996          252           17.965        24.5          11.51         0 \r\n 1996          253           11.59         25.11         11.13         0 \r\n 1996          254           17.54         26.28         14.65         0 \r\n 1996          255           18.834        20.32         6.62          0 \r\n 1996          256           17.262        16.84         4.58          0 \r\n 1996          257           18.546        17.39         2.73          0 \r\n 1996          258           17.412        19.91         5.24          0 \r\n 1996          259           19.677        20.67         6.94          0 \r\n 1996          260           19.242        20.67         6.76          0 \r\n 1996          261           18.399        20.2          6.27          0 \r\n 1996          262           17            20.2          7.94          0 \r\n 1996          263           16.722        20.9          10.52         10.2 \r\n 1996          264           15.345        20.23         9.56          0 \r\n 1996          265           10.092        20.87         7.67          0 \r\n 1996          266           13.302        18.86         11.17         13.8 \r\n 1996          267           14.947        18.73         5.91          0 \r\n 1996          268           10.066        18.52         9.31          0 \r\n 1996          269           14.963        13.43         10.07         40.8 \r\n 1996          270           13.492        12.79         5.09          0 \r\n 1996          271           3.778         18.58         7.48          0 \r\n 1996          272           7.494         19.1          7.15          0 \r\n 1996          273           11.91         25.66         9.95          0 \r\n 1996          274           14.067        24.86         11.79         0 \r\n 1996          275           14.067        18.37         9.04          0 \r\n 1996          276           14.082        13.03        -0.43          0 \r\n 1996          277           14.476        16.82         1.97          0 \r\n 1996          278           14.355        22.61         6.61          0 \r\n 1996          279           14.355        23.53         10.42         0 \r\n 1996          280           14.104        20.42         7.76          0 \r\n 1996          281           13.586        16.22         0.47          0 \r\n 1996          282           13.342        16.25         5.31          0 \r\n 1996          283           14.625        14.38         1.09          0.5 \r\n 1996          284           13.354        18.13         0.59          0 \r\n 1996          285           13.354        22.76         7.81          0 \r\n 1996          286           13.112        26.39         11.07         0 \r\n 1996          287           13.112        26.77         12.19         0 \r\n 1996          288           11.747        24.91         12.8          0 \r\n 1996          289           11.747        23.43         10.19         0 \r\n 1996          290           10.776        21.06         7.19          0 \r\n 1996          291           10.776        11.57         2.18          0.2 \r\n 1996          292           11.417        17.61        -1.34          0 \r\n 1996          293           9.821         21.32         8.72          0 \r\n 1996          294           11.8          20.14         5.5           0 \r\n 1996          295           11.557        11.94         1.69          0 \r\n 1996          296           10.827        11.14         2.68          11.9 \r\n 1996          297           6.871         13.8         -0.18          36.1 \r\n 1996          298           3.616         16.97         5.11          0 \r\n 1996          299           10.869        22.23         11.23         0 \r\n 1996          300           10.63         22.37         5.63          0 \r\n 1996          301           8.52          13.71        -1.53          0 \r\n 1996          302           10.532        16.89         1.97          0 \r\n 1996          303           10.082        14.91        -3.21          22.6 \r\n 1996          304           6.916        -0.65         -4.93          0 \r\n 1996          305           8.206         0.49         -7.17          0 \r\n 1996          306           4.645         2.65         -8.88          0 \r\n 1996          307           6.503         13.38        -5.77          0 \r\n 1996          308           8.511         11.76         3.66          0 \r\n 1996          309           9.431         8.03          5             25.1 \r\n 1996          310           6.721         9.94          5.58          1.8 \r\n 1996          311           1.481         10.45        -1.21          2.5 \r\n 1996          312           3.303         6.91         -0.21          0 \r\n 1996          313           8.46          3.27         -2.81          0 \r\n 1996          314           7.558         0.01         -7.14          0 \r\n 1996          315           6.479        -2.67         -7.77          0 \r\n 1996          316           6.59         -4.06         -11.61         0 \r\n 1996          317           4.58         -4.35         -6.12          0 \r\n 1996          318           6.636        -1.94         -10.39         0 \r\n 1996          319           4.645         5.72         -3.58          0 \r\n 1996          320           6.083         12.44         5.23          17.3 \r\n 1996          321           5.912         12.35        -4.93          25.4 \r\n 1996          322           5.693        -1.61         -6.64          11.2 \r\n 1996          323           7.554        -1.53         -4.54          0 \r\n 1996          324           5.419        -1.03         -3.94          1 \r\n 1996          325           3.793        -0.53         -2.28          1.3 \r\n 1996          326           2.926         0.87         -3.25          0.2 \r\n 1996          327           2.145         1.85         -0.32          0 \r\n 1996          328           3.862         0.22         -9.38          1.8 \r\n 1996          329           4.291        -7.5          -14.88         1.8 \r\n 1996          330           7.831        -6.73         -17.57         0 \r\n 1996          331           6.795        -5.12         -11.82         0 \r\n 1996          332           8.281         3.76         -14.05         3 \r\n 1996          333           7.644         3.38         -1.08          0 \r\n 1996          334           6.37          2.37         -2.15          10.7 \r\n 1996          335           5.883        -1.55         -5.45          3.3 \r\n 1996          336           3.257        -1.52         -6.02          0 \r\n 1996          337           3.992        -2.53         -12.73         0 \r\n 1996          338           4.938        -0.55         -8.82          1.5 \r\n 1996          339           5.989         0.59         -4.33          0 \r\n 1996          340           7.069         0.9          -1.72          5.3 \r\n 1996          341           4.47          1.44         -6.73          0 \r\n 1996          342           5.198         0.37         -7.16          0 \r\n 1996          343           7.589        -0.79         -8.88          0 \r\n 1996          344           6.861         1.61         -5.14          0 \r\n 1996          345           6.341         1.83         -0.87          0 \r\n 1996          346           6.341         1.29         -0.49          0 \r\n 1996          347           4.731         2.22         -1.6           0 \r\n 1996          348           2.571         3.4          -1.98          5.1 \r\n 1996          349           4.834         3.41         -6.46          6.3 \r\n 1996          350           3.908         0.01         -6.58          0 \r\n 1996          351           5.451        -4.41         -12.16         0 \r\n 1996          352           6.377        -10.42        -17.16         0 \r\n 1996          353           8.125        -14.92        -18.82         0 \r\n 1996          354           6.274        -7.2          -22.1          0 \r\n 1996          355           4.731         2.25         -20.69         0 \r\n 1996          356           8.022         0.93         -8.82          0 \r\n 1996          357           8.64         -7.56         -12.47         0 \r\n 1996          358           7.405        -12.27        -19.86         0 \r\n 1996          359           5.04         -17.41        -21.51         0 \r\n 1996          360           5.245        -17.13        -20.9          1.8 \r\n 1996          361           4.731        -3.28         -22.48         1.8 \r\n 1996          362           2.983        -1.15         -8.14          0 \r\n 1996          363           8.537        -5.4          -17.68         0 \r\n 1996          364           7.302        -3.76         -18.09         0 \r\n 1996          365           8.524        -3.09         -10.45         0 \r\n 1996          366           7.381         1.59         -5.06          0 \r\n 1997          1             5.925         6.7           1.5           0 \r\n 1997          2             4.47          6.85          0.4           0 \r\n 1997          3             4.782         5.74          0.47          0 \r\n 1997          4             3.431         1.29         -9.96          4.3 \r\n 1997          5             7.173        -6.16         -14.95         0 \r\n 1997          6             5.883        -3.04         -16.67         0 \r\n 1997          7             7.144         2.2          -10.43         0 \r\n 1997          8             7.249         0.48         -9.64          0 \r\n 1997          9             7.039        -9.22         -22.2          1.5 \r\n 1997          10            6.619        -17.87        -23.31         0.5 \r\n 1997          11            4.565        -17.12        -24.9          0 \r\n 1997          12            6.052        -12.17        -19.84         0 \r\n 1997          13            5.733        -9.55         -19.05         0 \r\n 1997          14            7.22         -6.35         -11.09         0.2 \r\n 1997          15            4.353        -8.86         -21.54         2 \r\n 1997          16            9.011        -13.99        -24.77         0 \r\n 1997          17            8.26         -8.86         -21.9          0 \r\n 1997          18            9.011         3.04         -10.07         0 \r\n 1997          19            9.538         5.49         -2.84          0 \r\n 1997          20            8.129         6.28         -0.82          0 \r\n 1997          21            8.129         6.88         -9.01          0 \r\n 1997          22            9.416        -4.64         -14.37         0 \r\n 1997          23            8.978        -4.9          -14.39         0 \r\n 1997          24            6.569        -12.64        -22.11         5.3 \r\n 1997          25            10.064       -16.72        -22.15         0 \r\n 1997          26            3.76         -14.37        -19.23         1.8 \r\n 1997          27            6.414        -13.35        -25.69         0 \r\n 1997          28            10.276       -6.88         -17.53         0 \r\n 1997          29            10.165       -1.03         -16.69         0 \r\n 1997          30            10.835        6.4          -5.14          0 \r\n 1997          31            11.168        4.49         -0.57          0 \r\n 1997          32            7.332         2.6          -3.25          0 \r\n 1997          33            6.655         0.43         -2.79          0 \r\n 1997          34            4.898        -0.08         -4.83          0 \r\n 1997          35            3.759        -3.68         -6.24          17 \r\n 1997          36            3.105        -4.23         -7.79          0 \r\n 1997          37            4.946        -5.51         -8.86          0 \r\n 1997          38            4.486        -4.32         -7.75          0 \r\n 1997          39            6.503        -4.54         -10.6          0 \r\n 1997          40            11.032       -3.67         -7.28          0 \r\n 1997          41            6.799        -5.63         -9.3           0 \r\n 1997          42            6.916        -4.36         -17.52         0.2 \r\n 1997          43            13.135       -7.68         -21.05         0 \r\n 1997          44            13.372       -3.33         -12.17         0 \r\n 1997          45            12.543       -5.89         -20.55         0 \r\n 1997          46            14.811       -3.86         -11.21         2.8 \r\n 1997          47            9.675         4.28         -9.35          3 \r\n 1997          48            12.537        9.87          1.84          0 \r\n 1997          49            12.054        8.46         -3.29          0 \r\n 1997          50            14.476        6.37         -0.91          0 \r\n 1997          51            10.705        6.23         -2.04          1.3 \r\n 1997          52            11.048        0.47         -8.3           0 \r\n 1997          53            12.89         0.72         -11.62         0 \r\n 1997          54            15.359       -2.65         -11.53         0 \r\n 1997          55            12.882        2.59         -7.97          0 \r\n 1997          56            13.497        2.68         -1.57          0 \r\n 1997          57            10.622       -0.08         -5.55          2.8 \r\n 1997          58            8.699         3.38         -4             1 \r\n 1997          59            10.464        5.64         -1.74          0 \r\n 1997          60            11.783        5.43         -6.09          0 \r\n 1997          61            14.27         5.77         -2.16          0 \r\n 1997          62            13.189        3.03         -4.29          0 \r\n 1997          63            11.232       -0.15         -10.99         0 \r\n 1997          64            13.849       -0.39         -10.54         0 \r\n 1997          65            13.968        11.38        -7.82          0 \r\n 1997          66            12.318        12.59        -5.66          0 \r\n 1997          67            16.86         12.01         0.92          0 \r\n 1997          68            11.647        13.72        -1.8           8.6 \r\n 1997          69            14.878        13.59        -1.08          0 \r\n 1997          70            15.773        7.37         -1.59          0 \r\n 1997          71            12.747        6.44         -0.67          0 \r\n 1997          72            8.799         1.27         -7.73          26.2 \r\n 1997          73            10.01        -3.95         -12.74         3.3 \r\n 1997          74            14.104        7.32         -8.24          0 \r\n 1997          75            15.138        11.03         0.04          0 \r\n 1997          76            16.056        9.8          -1.44          0 \r\n 1997          77            14.453        8.75         -1.65          0.5 \r\n 1997          78            10.637        14.61         0.3           0 \r\n 1997          79            17.601        15.84         3.11          0 \r\n 1997          80            17.601        11.49        -0.65          0 \r\n 1997          81            18.213        9.76         -2.13          0 \r\n 1997          82            16.819        6.66          0.37          0 \r\n 1997          83            8.528         5.72          0.49          9.1 \r\n 1997          84            5.85          19.22        -2.87          0 \r\n 1997          85            15.639        22.73         3.2           0 \r\n 1997          86            17.928        13.84         5.13          0 \r\n 1997          87            16.966        10.89         2.83          0.5 \r\n 1997          88            11.035        13.13        -0.06          0 \r\n 1997          89            15.643        16.37        -4.35          0.5 \r\n 1997          90            18.819        20.23         1.01          0 \r\n 1997          91            16.933        18.2          6.04          2.7 \r\n 1997          92            17.246        16.42         4.55          0 \r\n 1997          93            16.034        15.25         6.58          0 \r\n 1997          94            13.576        15.32         10.1          18.2 \r\n 1997          95            6.652         12.63        -3.54          7.8 \r\n 1997          96            14.91         3.43         -6.58          0 \r\n 1997          97            14.226        3.98         -8.96          0 \r\n 1997          98            19.432        1.66         -9.93          0 \r\n 1997          99            17.09         2.35         -2.48          0 \r\n 1997          100           15.968        0.04         -1.58          0 \r\n 1997          101           2.777         2.95         -2.2           3.4 \r\n 1997          102           5.97          7.32         -4.42          0 \r\n 1997          103           17.625        12.25        -4.4           0 \r\n 1997          104           21.541        15.74         2.16          0 \r\n 1997          105           21.558        13.34        -4.14          0 \r\n 1997          106           22.686        12.69        -3.95          0 \r\n 1997          107           21.858        20.66        -0.31          0 \r\n 1997          108           22.993        20.83         1.81          0 \r\n 1997          109           23.446        19.56         2.03          0 \r\n 1997          110           21.444        16.65         3.35          0 \r\n 1997          111           18.287        11.88         7.53          3.9 \r\n 1997          112           11.375        14            5.54          0 \r\n 1997          113           14.647        14.05         0.14          0 \r\n 1997          114           21.463        16.96         1.36          0 \r\n 1997          115           22.929        17.83         4.75          0 \r\n 1997          116           21.907        18.81         7.6           0 \r\n 1997          117           19.414        21.84         4.62          0 \r\n 1997          118           24.415        22.77         8.5           0 \r\n 1997          119           22.797        22.81         1.55          35.7 \r\n 1997          120           18.069        13.57        -0.09          6.7 \r\n 1997          121           14.222        13.59         6.42          13.5 \r\n 1997          122           14.777        13.23         5.63          0 \r\n 1997          123           10.111        20.36         3.19          0 \r\n 1997          124           24.433        22.74         12.62         0 \r\n 1997          125           22.24         21.93         3.16          0 \r\n 1997          126           26.782        19.62         10.53         5.1 \r\n 1997          127           16.085        17.61         8.26          3 \r\n 1997          128           12.3          17.86         3.44          0 \r\n 1997          129           23.497        22.75         3.05          0 \r\n 1997          130           26.355        23.35         13.02         0 \r\n 1997          131           24.133        16.45         2.81          0 \r\n 1997          132           23.176        14.37        -1.21          0 \r\n 1997          133           25.734        14.51         5.52          0 \r\n 1997          134           20.619        14.65         1.37          0 \r\n 1997          135           24.137        26            1.61          0 \r\n 1997          136           24.137        27.82         10.09         0 \r\n 1997          137           26.711        30.84         14.37         0 \r\n 1997          138           23.002        28.73         6.69          0 \r\n 1997          139           28.023        17.74         2.65          0 \r\n 1997          140           24.136        19.86         4.48          0 \r\n 1997          141           24.458        21.6          6.19          0 \r\n 1997          142           24.132        24.67         8.96          0 \r\n 1997          143           22.665        24.61         13.76         0 \r\n 1997          144           18.875        19.15         11.76         0 \r\n 1997          145           14.443        17.18         5.82          24.4 \r\n 1997          146           12.966        12.66         7.98          6.5 \r\n 1997          147           8.26          13.3          8.35          3.5 \r\n 1997          148           6.938         15            8.82          0 \r\n 1997          149           7.104         20.48         7.12          0 \r\n 1997          150           21.641        25.67         10.13         0 \r\n 1997          151           25.771        26.77         11.27         0 \r\n 1997          152           27.496        27.32         10.41         0 \r\n 1997          153           28.167        26.78         13.14         0 \r\n 1997          154           25.85         25.63         14.32         0 \r\n 1997          155           22.819        28.13         13.82         0 \r\n 1997          156           24.245        25.5          11.64         0 \r\n 1997          157           19.557        26.03         12.46         0 \r\n 1997          158           25.658        25.76         12.17         0 \r\n 1997          159           24.94         25.34         10.04         0 \r\n 1997          160           25.837        26.13         12.58         0 \r\n 1997          161           25.658        26.2          12.67         0 \r\n 1997          162           25.12         25.82         16.38         14 \r\n 1997          163           15.789        27.99         15.42         0 \r\n 1997          164           22.752        26.85         14.57         0 \r\n 1997          165           24.016        29.74         18.62         0 \r\n 1997          166           20.947        29.14         15.56         0 \r\n 1997          167           25.822        28.49         11.88         0 \r\n 1997          168           28.17         29.11         15.91         13.2 \r\n 1997          169           19.141        31.08         17.15         3 \r\n 1997          170           17.696        31.38         19.32         0 \r\n 1997          171           24.377        31.26         18.4          45.1 \r\n 1997          172           17.877        30.45         19.31         0 \r\n 1997          173           22.03         31.3          21.68         0 \r\n 1997          174           20.224        31.17         22.32         0 \r\n 1997          175           18.599        27.92         18.88         8.4 \r\n 1997          176           14.446        27.34         14.72         0 \r\n 1997          177           25.822        28.85         14.99         0 \r\n 1997          178           25.28         30.46         19.75         0 \r\n 1997          179           20.585        30.73         17.74         0 \r\n 1997          180           23.113        29.24         18.28         7.5 \r\n 1997          181           16.974        30.51         20.39         0 \r\n 1997          182           21.513        29.75         15.16         0 \r\n 1997          183           26.139        22.39         11.86         0 \r\n 1997          184           21.062        21.27         11.73         0 \r\n 1997          185           21.25         23.58         8.43          0 \r\n 1997          186           27.456        24.04         13.74         0 \r\n 1997          187           23.507        25.92         9.14          0 \r\n 1997          188           28.396        28.74         18.94         0 \r\n 1997          189           23.542        28.09         12.89         0 \r\n 1997          190           28.027        25.17         13.95         0 \r\n 1997          191           24.103        30.06         17.12         0 \r\n 1997          192           23.729        31.66         20.86         6 \r\n 1997          193           17.003        31.4          21.33         0 \r\n 1997          194           15.037        31.86         18.84         0 \r\n 1997          195           18.935        31.84         16.05         0 \r\n 1997          196           26.175        33.32         19.33         0 \r\n 1997          197           25.804        32.97         22.2          0 \r\n 1997          198           22.501        32.97         19.53         0 \r\n 1997          199           23.977        33.37         21.75         0 \r\n 1997          200           21.21         32.86         21.64         0 \r\n 1997          201           22.686        30.9          19.47         9.2 \r\n 1997          202           17.223        27.9          20.03         0 \r\n 1997          203           18.14         25.83         18.97         16 \r\n 1997          204           12.46         28.79         21.39         59.8 \r\n 1997          205           12.924        34.01         22.94         0 \r\n 1997          206           20.569        34.12         21.67         0 \r\n 1997          207           21.843        32.98         22.3          3.2 \r\n 1997          208           20.071        27.77         20.58         0 \r\n 1997          209           19.528        26.42         15.08         0 \r\n 1997          210           24.772        24.74         13.96         0 \r\n 1997          211           23.709        25.53         13.25         0 \r\n 1997          212           24.966        27.2          15.01         0 \r\n 1997          213           25.799        30.2          18.25         0 \r\n 1997          214           22.273        32.3          19.36         0 \r\n 1997          215           23.687        30.53         18.39         0 \r\n 1997          216           24.581        27.98         11.78         0 \r\n 1997          217           27.565        25.49         11.07         0 \r\n 1997          218           25.81         26.76         13.85         0 \r\n 1997          219           24.239        26.89         12.4          0 \r\n 1997          220           24.588        26.88         12.41         0 \r\n 1997          221           24.939        25.85         16.41         0 \r\n 1997          222           21.475        18.02         13.36         11.9 \r\n 1997          223           12.555        20.2          16.71         8.8 \r\n 1997          224           7.568         22.52         13.81         0 \r\n 1997          225           17.027        23.96         13.86         0 \r\n 1997          226           20.667        28.31         15.12         7.5 \r\n 1997          227           16.226        30.16         18.14         0 \r\n 1997          228           23.236        28.53         17.78         0 \r\n 1997          229           20.861        19.86         14.39         0 \r\n 1997          230           15.831        20.05         15.87         3.1 \r\n 1997          231           14.147        23.14         16.62         0 \r\n 1997          232           13.043        24.52         11.5          0 \r\n 1997          233           23.745        24.66         11.53         0 \r\n 1997          234           24.413        28.45         12.67         0 \r\n 1997          235           23.575        29.94         17.82         0 \r\n 1997          236           22.745        29.66         16.78         0 \r\n 1997          237           20.933        27.64         19.79         0 \r\n 1997          238           13.351        28.51         18.38         0 \r\n 1997          239           17.836        29.57         16            0 \r\n 1997          240           16.854        30.21         19.84         0 \r\n 1997          241           19.005        30.15         21.49         0 \r\n 1997          242           17.381        30.24         18.32         0 \r\n 1997          243           20.317        31.06         17.95         0 \r\n 1997          244           19.349        30.69         19.44         3.9 \r\n 1997          245           12.893        21.93         9.11          0 \r\n 1997          246           19.413        21.2          8.36          0 \r\n 1997          247           19.857        27.01         8.87          0 \r\n 1997          248           20.592        31.12         15.72         0 \r\n 1997          249           20.145        31.25         17.63         16.7 \r\n 1997          250           18.832        23.81         16.77         3.5 \r\n 1997          251           7.968         24.15         13.95         0 \r\n 1997          252           16.516        22.53         9.36          0 \r\n 1997          253           19.265        23.26         8.12          0 \r\n 1997          254           19.84         25.35         8.8           0 \r\n 1997          255           19.545        24.66         15.03         3.4 \r\n 1997          256           12.697        25.5          15.7          0 \r\n 1997          257           11.042        27.23         14.52         0 \r\n 1997          258           15.996        28.31         17.48         0 \r\n 1997          259           16.011        28.4          12.1          0 \r\n 1997          260           18.259        30.82         13.59         0 \r\n 1997          261           17.418        30.23         19.77         0 \r\n 1997          262           14.771        20.47         7.37          0 \r\n 1997          263           16.589        18.76         4.44          0 \r\n 1997          264           16.589        17.94         9.83          6.8 \r\n 1997          265           11.382        18.61         11.55         22.5 \r\n 1997          266           4.388         21.38         5.83          0 \r\n 1997          267           15.371        27.05         8.24          0 \r\n 1997          268           16.868        27.42         10.88         0 \r\n 1997          269           16.865        25.8          13.86         0 \r\n 1997          270           15.381        24.03         10.03         0 \r\n 1997          271           14.72         25.93         11.53         0 \r\n 1997          272           14.185        25.69         9.32          0 \r\n 1997          273           15.129        25.08         7.43          0 \r\n 1997          274           15.527        31.15         11.8          0 \r\n 1997          275           14.74         34.64         17.38         0 \r\n 1997          276           14.213        32.94         9.4           0 \r\n 1997          277           15.921        30.24         13.31         0 \r\n 1997          278           14.355        32.63         17.11         0 \r\n 1997          279           12.292        30.82         18.35         0 \r\n 1997          280           11.516        26.08         19.44         0 \r\n 1997          281           6.286         20.22         7.79          9.4 \r\n 1997          282           8.724         21.34         6.01          7.6 \r\n 1997          283           12.337        21.19         7.68          0 \r\n 1997          284           12.337        25.86         13.02         0 \r\n 1997          285           6.178         18.35         11.7          29.7 \r\n 1997          286           8.069         12.68         4.14          14 \r\n 1997          287           10.372        12.83         5.83          0 \r\n 1997          288           11.122        13            7.06          0.2 \r\n 1997          289           10.281        16.54         9.03          0 \r\n 1997          290           12.015        16.58         0.23          0 \r\n 1997          291           11.785        18.02         3.36          0 \r\n 1997          292           10.434        13.67         4.28          0 \r\n 1997          293           11.435        10.22        -1.29          0 \r\n 1997          294           10.462        7.98         -1.5           0 \r\n 1997          295           9.854         6.27         -4.01          0 \r\n 1997          296           8.559         14.15         2.99          0 \r\n 1997          297           5.183         9.6           6.09          7.4 \r\n 1997          298           3.344         6.13          2.9           5.8 \r\n 1997          299           4.3           2.94         -2.76          17 \r\n 1997          300           7.81          0.31         -9.12          0 \r\n 1997          301           9.94          9.96         -5.19          0 \r\n 1997          302           9.964         11.6         -0.24          0 \r\n 1997          303           10.316        14.4          3.94          0 \r\n 1997          304           8.675         14.55         3.23          0 \r\n 1997          305           7.432         9.19          4.31          0.5 \r\n 1997          306           4.529         5.96         -2.32          3.3 \r\n 1997          307           3.45         -0.52         -2.42          0 \r\n 1997          308           2.99          1.1          -2.7           0 \r\n 1997          309           3.417         2.88          0.02          0.8 \r\n 1997          310           3.076         5.18          1.85          0.8 \r\n 1997          311           3.873         6.25          2.94          0 \r\n 1997          312           5.64          8.35          1.43          0 \r\n 1997          313           6.091         4.06         -0.11          2.8 \r\n 1997          314           4.915        -0.05         -4.63          0 \r\n 1997          315           7.931         0.85         -8.58          0 \r\n 1997          316           9.271        -0.68         -10.3          0.8 \r\n 1997          317           6.746         0.14         -1.74          0 \r\n 1997          318           3.097        -0.8          -9.52          1.3 \r\n 1997          319           4.866        -1.68         -9.42          1.3 \r\n 1997          320           8.43         -3.6          -11.32         0 \r\n 1997          321           8.978         6.16         -8.85          0 \r\n 1997          322           9.854         2.03         -6.53          0 \r\n 1997          323           9.104         5.06         -8.27          0 \r\n 1997          324           9.754         9.52         -4.64          0 \r\n 1997          325           9.321        -1.56         -5.53          0 \r\n 1997          326           6.651         0.38         -5.29          0 \r\n 1997          327           7.616         3.32         -7.5           0 \r\n 1997          328           9.333         5.58         -8.65          0 \r\n 1997          329           9.333         15.88        -4.03          0 \r\n 1997          330           8.918         9.55         -1.84          0 \r\n 1997          331           7.644         13.1          0.24          0 \r\n 1997          332           7.22          8.81          0.58          0 \r\n 1997          333           6.052         3.86         -0.2           18.8 \r\n 1997          334           3.257         3.83         -1.79          8.1 \r\n 1997          335           3.887         1.38          0.57          0 \r\n 1997          336           1.891         3.57          0.17          0 \r\n 1997          337           2.942         0.2          -3.9           5.6 \r\n 1997          338           2.942        -1.37         -8.22          1.8 \r\n 1997          339           5.094        -5.06         -10.51         0 \r\n 1997          340           5.406        -2.46         -5.35          0 \r\n 1997          341           3.327        -3.73         -5.54          0 \r\n 1997          342           1.871        -1.4          -4.57          3.3 \r\n 1997          343           1.871        -1.52         -3.81          1.8 \r\n 1997          344           2.911        -0.69         -3.54          1.8 \r\n 1997          345           3.846        -1.64         -5.09          0 \r\n 1997          346           6.171        -4.52         -9.49          0 \r\n 1997          347           5.451         2.4          -7.41          0 \r\n 1997          348           7.92          2.59         -7.75          0 \r\n 1997          349           7.817         5.85         -3.19          0 \r\n 1997          350           6.274         5.17         -2.13          0 \r\n 1997          351           7.097         4.94         -6.46          0 \r\n 1997          352           6.788         10.11        -1.59          0 \r\n 1997          353           6.377         4.97         -0.83          0 \r\n 1997          354           6.48          1.1          -6.02          0 \r\n 1997          355           6.068        -0.98         -7.78          0 \r\n 1997          356           2.571        -0.04         -2.04          1.3 \r\n 1997          357           2.263        -0.54         -3.64          1 \r\n 1997          358           1.851        -1.49         -4.71          0 \r\n 1997          359           2.777        -0.69         -5.02          0 \r\n 1997          360           4.525         2.84         -5.16          0 \r\n 1997          361           7.508        -0.14         -10.67         0 \r\n 1997          362           6.891         0.54         -5.28          0 \r\n 1997          363           5.348        -2.72         -6.47          0 \r\n 1997          364           5.198         2.21         -6.9           1.5 \r\n 1997          365           8.628        -3.96         -14.55         0 \r\n 1998          1             8.238         7.18         -4.01          0 \r\n 1998          2             5.041         11.98        -0.33          0 \r\n 1998          3             2.248         10.23        -7.95          0 \r\n 1998          4             1            -0.25         -6.06          6.6 \r\n 1998          5             1.546         0.44         -0.65          2.8 \r\n 1998          6             1.907         0.77         -1.87          0 \r\n 1998          7             1.198        -0.24         -3.57          0 \r\n 1998          8             8.048         1.8          -4.67          0 \r\n 1998          9             3.643        -2.64         -13.92         0 \r\n 1998          10            9.173        -7.47         -14.33         0 \r\n 1998          11            2.444        -7.92         -13.9          0 \r\n 1998          12            5.796        -7.68         -18.6          0 \r\n 1998          13            7.449        -10.41        -20.44         0 \r\n 1998          14            5.091        -7.02         -12.53         0 \r\n 1998          15            9.763        -6.14         -13.83         0 \r\n 1998          16            2.169        -3.79         -9.87          1.8 \r\n 1998          17            9.21         -3.15         -15.3          0 \r\n 1998          18            8.432        -5.38         -15.69         0 \r\n 1998          19            6.259        -3.41         -10.55         0 \r\n 1998          20            4.326        -3.31         -10.59         0 \r\n 1998          21            3.721        -2.09         -5.29          8.9 \r\n 1998          22            5.594        -1.04         -4.08          1 \r\n 1998          23            7.248        -1.78         -12.2          0 \r\n 1998          24            7.665        -1.33         -7.29          0 \r\n 1998          25            9.441         1.3          -9.12          0 \r\n 1998          26            6.759         0.82         -9.23          0 \r\n 1998          27            8.56         -0.05         -7.35          0 \r\n 1998          28            8.936         3.57         -5.89          0 \r\n 1998          29            11.48         2.36         -6.88          0 \r\n 1998          30            5.439        -0.41         -9.14          0 \r\n 1998          31            9.639         7.06         -4.87          0 \r\n 1998          32            5.78          3.28         -3.24          8.4 \r\n 1998          33            4.71         -1.23         -5.86          0 \r\n 1998          34            8.85         -5.46         -14.64         0 \r\n 1998          35            4.913        -3.75         -6.02          0 \r\n 1998          36            8.444        -1.85         -7.9           0 \r\n 1998          37            11.351        3.21         -7.33          0 \r\n 1998          38            10.56         4.13         -8.12          0 \r\n 1998          39            12.708        6.46         -6.82          0 \r\n 1998          40            9.99          5.68         -2.8           0 \r\n 1998          41            1.966         2.63         -1.84          9.7 \r\n 1998          42            6.395        -0.55         -3.61          1.8 \r\n 1998          43            10.153       -2.04         -5.51          0 \r\n 1998          44            8.718         1.44         -4.37          0 \r\n 1998          45            6.417         1.6          -3.53          0 \r\n 1998          46            9.544         10.8          0.9           0 \r\n 1998          47            4.033         6.9           1.38          0 \r\n 1998          48            1.311         4.09          1.1           7.1 \r\n 1998          49            2.575         3.67          1.02          2.3 \r\n 1998          50            3.281         3.63          0.49          2.3 \r\n 1998          51            4.618         5.04          0.32          0.5 \r\n 1998          52            5.153         6.31          0.71          0.2 \r\n 1998          53            4.988         8.4           1.84          0 \r\n 1998          54            6.062         12.97         3.24          1.3 \r\n 1998          55            12.848        14.03         1             0.2 \r\n 1998          56            2.954         13.18         6.27          0 \r\n 1998          57            3.697         11.01         2.21          1.3 \r\n 1998          58            2.735         2.21         -3.1           0 \r\n 1998          59            9.508        -2.21         -4.27          1.3 \r\n 1998          60            12.046       -0.79         -5.18          0.8 \r\n 1998          61            10.091        3.64         -4.87          0.2 \r\n 1998          62            7.465        -1.64         -4.53          0 \r\n 1998          63            10.521        0.67         -7.33          0 \r\n 1998          64            4.715        -0.33         -3.94          0.8 \r\n 1998          65            15.04         2.35         -7.06          0.2 \r\n 1998          66            4.6           0.2          -3.12          0.2 \r\n 1998          67            7.535        -0.57         -6.13          12.7 \r\n 1998          68            19.6         -6.13         -15.63         0 \r\n 1998          69            19.348       -9.85         -18.58         0 \r\n 1998          70            20.578       -10.79        -18.71         1 \r\n 1998          71            18.121       -9.33         -13.35         0 \r\n 1998          72            19.016        5.46         -12.94         0 \r\n 1998          73            20.029       -2.11         -11.5          0 \r\n 1998          74            6.825        -1.25         -5.98          0 \r\n 1998          75            9.768         2.27         -3.04          0 \r\n 1998          76            1.789         0.84         -0.75          4.8 \r\n 1998          77            3.942         1.66         -0.19          5.1 \r\n 1998          78            5.651         1.02         -1.04          0.2 \r\n 1998          79            19.007        4.19         -3.27          0 \r\n 1998          80            20.848        7.8          -3.66          0 \r\n 1998          81            10.833        5.35         -1.52          0 \r\n 1998          82            7.782         3.77         -1.68          0 \r\n 1998          83            6.156         3.05         -3.49          4.6 \r\n 1998          84            10.469        17.17         9.16          0 \r\n 1998          85            17.216        23.63         8.79          0 \r\n 1998          86            2.704         19.22         10.24         1 \r\n 1998          87            8.022         14.44         7.53          4.3 \r\n 1998          88            17.263        25.79         8.32          0 \r\n 1998          89            2.555         18.26         6.33          31 \r\n 1998          90            5.235         10.12         2.91          4.3 \r\n 1998          91            4.578         4.04          0.96          0 \r\n 1998          92            8.652         7.51          1.69          0 \r\n 1998          93            2.563         6.33          1.19          0 \r\n 1998          94            23.535        13.21         0.36          0 \r\n 1998          95            18.265        13.85        -0.06          0 \r\n 1998          96            11.606        18.46         5.82          12.8 \r\n 1998          97            4.671         13.63         9             7.2 \r\n 1998          98            2.53          9.07          5.21          5.3 \r\n 1998          99            10.013        12.06         3.73          0 \r\n 1998          100           24.815        15.74         1.36          0 \r\n 1998          101           21.767        22.47         3.71          0 \r\n 1998          102           11.373        21.57         9.76          0 \r\n 1998          103           8.457         17.77         9.94          0 \r\n 1998          104           19.226        18.39         6.53          13.2 \r\n 1998          105           2.144         10.71         5.31          3.5 \r\n 1998          106           12.074        10.76         1.87          0 \r\n 1998          107           26.355        14.53         0.47          0 \r\n 1998          108           24.819        17.51         1.59          5.2 \r\n 1998          109           11.407        17.25         5.4           12.5 \r\n 1998          110           11.289        10.61         4.87          4.8 \r\n 1998          111           21.728        16.93         4.65          0 \r\n 1998          112           25.69         19.65         3.94          0 \r\n 1998          113           26.016        21.75         11.17         0 \r\n 1998          114           24.91         24.6          7.12          0 \r\n 1998          115           15.334        21.7          11.8          0 \r\n 1998          116           3.178         14.16         8.1           0 \r\n 1998          117           24.023        15.49         2.89          0 \r\n 1998          118           15.413        17.28         1.47          0 \r\n 1998          119           5.32          12.75         7.22          2.3 \r\n 1998          120           10.055        17.74         10.67         0.8 \r\n 1998          121           20.673        24.73         10.56         0 \r\n 1998          122           18.732        14.72         6.24          3.8 \r\n 1998          123           23.39         23.43         8.47          0 \r\n 1998          124           26.702        26.76         6.43          0 \r\n 1998          125           26.552        25            10.98         0 \r\n 1998          126           9.073         19.74         11.38         2 \r\n 1998          127           15.596        20.56         12.82         1.5 \r\n 1998          128           16.533        20.99         11.37         0 \r\n 1998          129           21.129        24.66         10.36         0 \r\n 1998          130           22.154        25.09         9.78          0 \r\n 1998          131           26.869        25.53         9.89          0 \r\n 1998          132           21.562        22.44         12.84         8.1 \r\n 1998          133           25.319        25.47         9.01          0 \r\n 1998          134           23.974        29.54         15.34         0 \r\n 1998          135           9.622         26.6          14.75         0 \r\n 1998          136           29.187        26.52         12.66         0 \r\n 1998          137           22.756        30.22         12.8          0 \r\n 1998          138           26.139        31.96         17.5          0 \r\n 1998          139           17.563        32.63         18.25         10.2 \r\n 1998          140           19.231        23.97         15.94         0 \r\n 1998          141           17.455        23.65         12.44         17.7 \r\n 1998          142           13.962        18.11         11.3          14.2 \r\n 1998          143           5.037         17.77         11.46         18.3 \r\n 1998          144           16.725        22.06         10.73         0 \r\n 1998          145           12.576        20.13         13.5          0 \r\n 1998          146           18.989        23.81         12.12         0 \r\n 1998          147           24.258        27.01         14.8          0 \r\n 1998          148           25.79         33.46         16.69         15.5 \r\n 1998          149           24.355        27.92         17.48         2.3 \r\n 1998          150           11.721        27.89         18.41         2.5 \r\n 1998          151           26.492        24.68         11.59         0 \r\n 1998          152           16.575        22.43         7.44          2.3 \r\n 1998          153           29.519        22.42         11.87         0 \r\n 1998          154           11.43         11.88         5.36          9.4 \r\n 1998          155           12.115        15.74         8.72          1.3 \r\n 1998          156           15.626        16.75         7.49          1.8 \r\n 1998          157           19.495        19.06         6.85          5.3 \r\n 1998          158           16.762        19.03         7.61          0.3 \r\n 1998          159           4.647         15.7          12.78         36.1 \r\n 1998          160           8.919         17.76         12.96         6.6 \r\n 1998          161           22.902        23.48         10.91         1.5 \r\n 1998          162           12.028        22.77         16.79         29 \r\n 1998          163           26.496        24.88         14.12         0 \r\n 1998          164           29.234        26.23         14.44         0 \r\n 1998          165           2.013         19.66         16.53         76.7 \r\n 1998          166           15.107        23.14         15.89         0 \r\n 1998          167           27.365        24.72         15.54         0 \r\n 1998          168           14.274        25.48         15.42         1.5 \r\n 1998          169           7.142         24.8          16.24         21.3 \r\n 1998          170           30.114        29.16         15.18         0 \r\n 1998          171           20.965        29.93         17.62         14 \r\n 1998          172           25.206        26.9          16.65         0 \r\n 1998          173           24.89         27.79         15.88         0 \r\n 1998          174           17.633        28.31         16.22         0.8 \r\n 1998          175           25.813        32.04         18.07         0.3 \r\n 1998          176           24.353        32.82         22.74         0 \r\n 1998          177           27.75         33.51         21.53         0.3 \r\n 1998          178           27.191        33.47         20.26         22.1 \r\n 1998          179           26.67         29.3          20.33         0 \r\n 1998          180           18.83         28.36         16.62         18.3 \r\n 1998          181           25.261        25.98         16.9          0.5 \r\n 1998          182           27.49         28.77         17.2          0 \r\n 1998          183           25.876        28.5          17.09         0 \r\n 1998          184           13.196        28.04         19.43         4.3 \r\n 1998          185           20.86         27.64         19.01         0.3 \r\n 1998          186           4.83          21.85         17.76         7.4 \r\n 1998          187           23.689        31.74         20.6          26.7 \r\n 1998          188           24.248        29.95         20.22         1 \r\n 1998          189           27.349        30.11         19.81         0 \r\n 1998          190           23.298        30.51         21.01         0 \r\n 1998          191           24.861        29.84         20.56         0 \r\n 1998          192           25.756        28.36         19.36         0 \r\n 1998          193           25.186        28.73         17.62         0 \r\n 1998          194           27.715        30.36         18.51         0.3 \r\n 1998          195           27.618        30.32         18.56         0 \r\n 1998          196           27.106        29.93         17.95         8.1 \r\n 1998          197           28.661        27.71         19.09         0 \r\n 1998          198           19.158        28.32         17.51         8.9 \r\n 1998          199           28.107        30.5          19.59         0 \r\n 1998          200           26.254        32.54         20.16         0 \r\n 1998          201           26.836        34.7          22.99         0 \r\n 1998          202           15.995        28.87         20.94         2 \r\n 1998          203           17.435        27.94         17.93         4.6 \r\n 1998          204           25.906        25.65         15.27         0 \r\n 1998          205           21.974        26.34         17.76         0 \r\n 1998          206           15.551        24.8          16.99         0 \r\n 1998          207           25.759        26.99         15.53         0 \r\n 1998          208           25.911        28.32         16.23         0 \r\n 1998          209           27.189        30.97         15.99         0 \r\n 1998          210           26.343        27.43         13.83         0 \r\n 1998          211           19.722        26.44         15.21         0 \r\n 1998          212           26.317        26.87         12.69         0 \r\n 1998          213           26.811        26.25         14.99         0 \r\n 1998          214           7.408         21.81         15.68         2.3 \r\n 1998          215           23.687        29.26         18.09         8.4 \r\n 1998          216           11.039        26.41         19.04         1 \r\n 1998          217           8.067         24.35         18.2          14 \r\n 1998          218           3.973         19.97         17.71         0.8 \r\n 1998          219           18.277        25.06         17.58         0 \r\n 1998          220           24.052        27.87         16.05         0 \r\n 1998          221           23.965        31.47         17.56         0 \r\n 1998          222           20.705        27.6          18.83         0 \r\n 1998          223           25.189        29.52         17.14         0 \r\n 1998          224           16.667        26.49         17.3          0 \r\n 1998          225           17.243        25.99         18.33         0.3 \r\n 1998          226           23.492        29.26         17.05         2.3 \r\n 1998          227           24.282        27.94         17.4          1 \r\n 1998          228           23.237        29.8          18.13         0 \r\n 1998          229           19.86         29.65         21.56         0 \r\n 1998          230           19.958        30.39         19.24         0 \r\n 1998          231           16.092        30.89         20.13         0 \r\n 1998          232           21.62         32.92         20.91         29.5 \r\n 1998          233           11.657        26.58         21.22         0.3 \r\n 1998          234           23.353        31.27         21.05         0 \r\n 1998          235           23.201        32.02         21.16         0 \r\n 1998          236           13.405        30.5          20.5          0 \r\n 1998          237           23.089        27.39         17.58         0 \r\n 1998          238           16.396        26.29         15.52         0 \r\n 1998          239           5.791         24.87         19.49         18.5 \r\n 1998          240           16.956        28.92         18.44         0.3 \r\n 1998          241           22.997        30.71         17.1          0 \r\n 1998          242           21.708        28.76         15.91         0 \r\n 1998          243           9.702         22.87         16.23         1.8 \r\n 1998          244           21.653        27.12         13.63         1.8 \r\n 1998          245           20.764        24.82         12.24         0 \r\n 1998          246           22.087        29.38         16.33         0 \r\n 1998          247           22.912        29.68         14.64         0 \r\n 1998          248           19.201        30.91         14.95         0 \r\n 1998          249           20.002        33.41         18.56         0 \r\n 1998          250           22.467        25.09         12.74         0 \r\n 1998          251           22.922        22.83         8.62          0 \r\n 1998          252           22.03         23.65         8.81          0 \r\n 1998          253           20.884        28.21         11.66         3.6 \r\n 1998          254           22.101        31.78         10.47         0 \r\n 1998          255           21.09         33.69         13.6          0 \r\n 1998          256           15.881        31.33         17.14         0 \r\n 1998          257           8.124         26.29         18.4          0.8 \r\n 1998          258           18.834        28.92         17.11         0 \r\n 1998          259           11.015        25.82         15.05         0 \r\n 1998          260           14.735        28.11         14.99         0 \r\n 1998          261           16.986        29.23         14.69         0 \r\n 1998          262           18.485        32.02         16.88         5.6 \r\n 1998          263           10.776        25.65         14.26         5.6 \r\n 1998          264           9.857         17.72         8.8           0 \r\n 1998          265           20.027        18.91         7.62          0 \r\n 1998          266           16.56         21.33         6.84          2.3 \r\n 1998          267           16.602        24.58         11.94         0 \r\n 1998          268           12.361        30.26         14.78         0 \r\n 1998          269           12.686        31.55         20.39         5.8 \r\n 1998          270           18.219        26.61         15.83         0 \r\n 1998          271           18.097        27.27         12.84         0 \r\n 1998          272           16.98         29.16         15.63         0 \r\n 1998          273           15.599        25.51         6.94          0 \r\n 1998          274           17.836        16.79         2.71          0 \r\n 1998          275           2.115         10.5          6.97          7.6 \r\n 1998          276           1.274         10.37         7.16          7.6 \r\n 1998          277           2.108         13.98         9.92          5.1 \r\n 1998          278           2.559         17.97         11.32         22.6 \r\n 1998          279           6.396         12.59         6.19          1.5 \r\n 1998          280           8.945         16.04         3.98          0 \r\n 1998          281           16.898        17.13         2.17          0 \r\n 1998          282           15.9          18.76         2.86          0 \r\n 1998          283           15.812        21.7          5.26          0 \r\n 1998          284           12.061        21.69         7.72          0 \r\n 1998          285           16.091        16.34         4.19          1.5 \r\n 1998          286           15.59         16.05         3.16          0 \r\n 1998          287           3.849         12.79         2.47          8.4 \r\n 1998          288           7.944         21.8          9.86          1 \r\n 1998          289           4.481         22.79         15.86         0.2 \r\n 1998          290           1.602         20.38         7.59          15 \r\n 1998          291           12.213        15.35         5.42          0 \r\n 1998          292           13.475        16.08         5.32          0 \r\n 1998          293           2.019         8.44          2.68          1.5 \r\n 1998          294           13.908        15.07         2.15          2.5 \r\n 1998          295           13.561        17.19         1.43          0 \r\n 1998          296           13.865        18.56         2.7           0 \r\n 1998          297           10.546        19.42         6.02          0.2 \r\n 1998          298           12.636        21.62         9.47          1.8 \r\n 1998          299           10.387        23.07         7.45          0.2 \r\n 1998          300           6.148         20.25         12.79         19.6 \r\n 1998          301           5.759         18            9.09          0 \r\n 1998          302           8.57          22.71         11.85         5.6 \r\n 1998          303           10.441        12.77         5.35          0 \r\n 1998          304           3.246         9.76          6.19          0 \r\n 1998          305           2.023         11.79         5.34          0 \r\n 1998          306           2.367         8.07          2.64          1.3 \r\n 1998          307           4.742         4.88         -0.76          0 \r\n 1998          308           8.201         5.44         -3.75          0 \r\n 1998          309           4.145         2.83         -2.55          0 \r\n 1998          310           8.465         3.87         -3.64          0 \r\n 1998          311           2.331         0.96         -4.04          2 \r\n 1998          312           2.649         2.15         -0.2           3 \r\n 1998          313           1             7.1           1.96          2.5 \r\n 1998          314           2.734         13.31        -0.02          11.4 \r\n 1998          315           10.7          8.92         -1.88          0 \r\n 1998          316           7.433         5.78         -2.17          0 \r\n 1998          317           6.456         11.87        -3.23          0 \r\n 1998          318           8.558         13.7          0.36          0 \r\n 1998          319           7.178         8.67         -0.27          0 \r\n 1998          320           4.703         9.01          1.72          0 \r\n 1998          321           7.971         10.78         1.09          0 \r\n 1998          322           1.123         13.59        -0.52          0 \r\n 1998          323           8.699         4.99         -4.52          0 \r\n 1998          324           9.687         4.02         -5.43          0 \r\n 1998          325           7.606         12.92        -5.94          0 \r\n 1998          326           7.372         16.44         6.09          0 \r\n 1998          327           8.639         13.83         0.5           0 \r\n 1998          328           7.466         13.7         -2.37          0 \r\n 1998          329           9.155         14.34        -0.92          0 \r\n 1998          330           9.065         18.98        -0.74          0 \r\n 1998          331           8.962         20.22         0.31          0 \r\n 1998          332           2.107         14.51         3.34          0 \r\n 1998          333           2.956         20.85         11.92         0 \r\n 1998          334           7.311         12.78         0.5           2.5 \r\n 1998          335           8.416         18.28         0.17          0 \r\n 1998          336           4.919         15.03         6.73          0 \r\n 1998          337           5.171         16.28         7.49          0 \r\n 1998          338           4.176         19.52         6.2           0 \r\n 1998          339           7.286         16.56         2.46          0 \r\n 1998          340           1             2.49         -4.55          0 \r\n 1998          341           8.672         5.51         -6.27          0 \r\n 1998          342           8.452         9.53         -6.13          0 \r\n 1998          343           8.1           9.73         -4.24          0 \r\n 1998          344           8.347         7.31         -4.78          0 \r\n 1998          345           8.347         9.93         -4.47          0 \r\n 1998          346           8.028         10.58        -4.72          0 \r\n 1998          347           4.344         10.56        -2.51          0 \r\n 1998          348           8.083         13.32        -4.21          0 \r\n 1998          349           7.58          9.22         -2.92          0 \r\n 1998          350           5.554         6.62         -2.81          0 \r\n 1998          351           6.149         5.11         -6.6           0 \r\n 1998          352           5.55          6.66         -3.12          0 \r\n 1998          353           5.869        -2.88         -11.09         0 \r\n 1998          354           2.357        -7.88         -14.46         0 \r\n 1998          355           6.094        -12.14        -17.07         0 \r\n 1998          356           7.48         -9.2          -19.41         0 \r\n 1998          357           6.712        -6.14         -15.23         0 \r\n 1998          358           7.938        -2.68         -15.79         0 \r\n 1998          359           4.469         0.54         -10.85         0 \r\n 1998          360           2.174        -2.4          -14.27         0 \r\n 1998          361           7.095         2.78         -8.71          0 \r\n 1998          362           2.73          3.91         -9.53          0 \r\n 1998          363           8.341         4.16         -18.28         0 \r\n 1998          364           3.176        -14.59        -22.07         4.1 \r\n 1998          365           7.824        -12.29        -24.89         0 \r\n 1999          1             3.206        -10.86        -17.81         2.8 \r\n 1999          2             5.346        -8.95         -11.05         8.4 \r\n 1999          3             7.486        -10           -19.84         0 \r\n 1999          4             8.756        -19.83        -29.72         0 \r\n 1999          5             4.173        -5.58         -29.57         0 \r\n 1999          6             4.778        -5.2          -20.26         0 \r\n 1999          7             5.088        -15.06        -20.94         0 \r\n 1999          8             5.381        -12.04        -21.66         1.5 \r\n 1999          9             8.703        -12.84        -28.2          0 \r\n 1999          10            8.239        -10.03        -16.48         0 \r\n 1999          11            7.645        -5.13         -14.17         0 \r\n 1999          12            5.312        -6.97         -14.61         0 \r\n 1999          13            7.706        -9.67         -16.3          0 \r\n 1999          14            6.079        -5.49         -10.6          0 \r\n 1999          15            5.748         1.34         -11.67         0 \r\n 1999          16            9.567         4.62         -5.1           0 \r\n 1999          17            2.882         2.01         -5.7           1.8 \r\n 1999          18            9.271        -0.2          -9.11          0.5 \r\n 1999          19            9.513         0.66         -9.99          0 \r\n 1999          20            5.508         0.97         -9.97          0 \r\n 1999          21            4.999         2.05         -4.89          0 \r\n 1999          22            1.596         0.93         -0.56          6.6 \r\n 1999          23            2.659        -0.34         -1.77          0 \r\n 1999          24            1.962        -0.8          -6.94          0 \r\n 1999          25            10.506       -4.8          -11.55         0 \r\n 1999          26            3.938         0.67         -6.7           0 \r\n 1999          27            2.694         3.4          -2.83          0 \r\n 1999          28            7.067        -2.12         -5.78          0 \r\n 1999          29            4.887        -2.98         -7.16          0 \r\n 1999          30            7.035         0.38         -5.97          0 \r\n 1999          31            5.058         2.03         -1.78          0 \r\n 1999          32            2.798         1.67         -0.15          0.5 \r\n 1999          33            11.78         6.16         -2.86          0.2 \r\n 1999          34            7.245         9.5          -1.58          0 \r\n 1999          35            11.784       -1.58         -8.22          0 \r\n 1999          36            7.274         13.77        -3.06          0 \r\n 1999          37            6.283         3.57         -2.6           0 \r\n 1999          38            10.824        9.43         -2.1           0 \r\n 1999          39            11.383        14.76         2.36          0 \r\n 1999          40            10.8          11.93        -1.74          0 \r\n 1999          41            6.013         17.18         1.73          0 \r\n 1999          42            1.883         3.47         -5.93          7.6 \r\n 1999          43            10.354       -3.71         -7.21          0 \r\n 1999          44            13.43         1.85         -10.16         0 \r\n 1999          45            13.333        11.77        -2.46          0 \r\n 1999          46            12.565        12.6          0.06          0 \r\n 1999          47            2.548         0.24         -4.38          0 \r\n 1999          48            7.005        -0.53         -6.32          0 \r\n 1999          49            6.308        -0.96         -5.05          1.8 \r\n 1999          50            10.067       -0.26         -7.69          2.5 \r\n 1999          51            6.601        -1.73         -6.43          0 \r\n 1999          52            15.266        1.62         -10.36         0 \r\n 1999          53            4.919        -1.7          -6.94          0 \r\n 1999          54            8.196        -1.08         -4.62          3.3 \r\n 1999          55            7.416         0.05         -5.5           0 \r\n 1999          56            15.034        5.77         -4.59          0 \r\n 1999          57            2.289         2.69         -1.49          0 \r\n 1999          58            6.175         6.67          0.13          0 \r\n 1999          59            7.547         4.98         -1.72          0 \r\n 1999          60            16.26         15.01        -2.84          0 \r\n 1999          61            4.874         8.39         -4.57          1.5 \r\n 1999          62            17.173        1.74         -7.72          0 \r\n 1999          63            12.207        7.77         -3.69          0 \r\n 1999          64            4.513         2.04         -2.35          0 \r\n 1999          65            9.728        -2.07         -6.61          0 \r\n 1999          66            17.684       -0.41         -6.09          0 \r\n 1999          67            6.603        -2.34         -5.67          10.4 \r\n 1999          68            13.17        -0.24         -2.85          5.1 \r\n 1999          69            14.362        0.1          -4.27          0 \r\n 1999          70            18.817        1.8          -5.01          0.5 \r\n 1999          71            17.429        2.18         -7.23          0 \r\n 1999          72            17.628        4.33         -5.73          0 \r\n 1999          73            19.272        6.6          -5.63          0 \r\n 1999          74            18.851        9.47         -3.94          0 \r\n 1999          75            18.806        18.11         0.66          0 \r\n 1999          76            18.305        11.91         1.47          0 \r\n 1999          77            19.99         9.14         -1.51          0 \r\n 1999          78            19.936        12.35        -3.83          0 \r\n 1999          79            19.785        15.83        -3.19          0 \r\n 1999          80            20.715        10.27        -3             0 \r\n 1999          81            13.582        8.97         -3.88          0 \r\n 1999          82            20.844        14.11        -2.7           0 \r\n 1999          83            21.349        8.04         -3.89          0 \r\n 1999          84            21.322        9.21         -5.37          0 \r\n 1999          85            21.112        12.36        -6.04          0 \r\n 1999          86            19.019        16.96        -3.04          0 \r\n 1999          87            20.3          13.61         1.38          7.1 \r\n 1999          88            21.816        18.26         1.94          0 \r\n 1999          89            21.041        23.45         3.23          0 \r\n 1999          90            5.452         16.15         10.54         0 \r\n 1999          91            8.498         22.11         8.99          0 \r\n 1999          92            13.093        18.31         2.73          2.3 \r\n 1999          93            11.704        21.52         6.06          9.7 \r\n 1999          94            22.918        15.54         1.14          0 \r\n 1999          95            1.16          12.64         6.82          39.1 \r\n 1999          96            21.65         15.47         3.05          0 \r\n 1999          97            22.966        23.37         5.09          0 \r\n 1999          98            2.287         12.8          7.13          48.5 \r\n 1999          99            4.376         9.51          5.03          1.5 \r\n 1999          100           3.987         12.94         5.01          1 \r\n 1999          101           8.235         10.86         2.84          0 \r\n 1999          102           22.093        16.47         0.89          0 \r\n 1999          103           8.837         16.65         7.97          0.8 \r\n 1999          104           8.215         15.04         6.86          2.5 \r\n 1999          105           4.16          7.31          1.61          22.4 \r\n 1999          106           6.535         3.65         -0.91          3.6 \r\n 1999          107           15.366        8.83          1.28          0 \r\n 1999          108           23.308        11.44        -0.73          0 \r\n 1999          109           25.153        17.19         3.01          0 \r\n 1999          110           19.29         20.14         5.8           2.3 \r\n 1999          111           10.716        15.74         6.08          24.1 \r\n 1999          112           3.134         10.57         4.76          27.9 \r\n 1999          113           10.035        13.2          2.86          0 \r\n 1999          114           25.937        16.05         5.4           0 \r\n 1999          115           18.401        15.75         6.08          0 \r\n 1999          116           5.682         16.12         9.24          1.3 \r\n 1999          117           4.25          12.63         8.91          4.3 \r\n 1999          118           15.557        17.05         8.18          0 \r\n 1999          119           27.32         20.16         5.94          0 \r\n 1999          120           27.522        21.8          3.67          0 \r\n 1999          121           27.486        21.93         7.08          0 \r\n 1999          122           21.518        23.42         7.44          0 \r\n 1999          123           24.127        24.16         12.98         0 \r\n 1999          124           11.417        20.77         15.37         0 \r\n 1999          125           7.309         16.42         9.22          0.8 \r\n 1999          126           6.033         12.5          9.1           3.6 \r\n 1999          127           6.26          11.42         8.44          8.6 \r\n 1999          128           7.424         12.1          5.2           0 \r\n 1999          129           25.912        20.75         2.5           0 \r\n 1999          130           18.961        27.81         12.7          1 \r\n 1999          131           10.06         18.75         10.12         44.2 \r\n 1999          132           5.797         12.45         9.13          14.5 \r\n 1999          133           9.404         14.3          8.89          0 \r\n 1999          134           21.507        19.79         8.45          0 \r\n 1999          135           7.397         18.52         13.74         2.5 \r\n 1999          136           10.691        26.14         15.51         6.6 \r\n 1999          137           11.066        17.64         13.06         14.2 \r\n 1999          138           28.721        20.59         9.75          0 \r\n 1999          139           27.955        24.57         10.24         0 \r\n 1999          140           8.742         22.13         16.13         5.6 \r\n 1999          141           16.218        22.51         15.07         29.5 \r\n 1999          142           26.612        25.07         12.84         1.8 \r\n 1999          143           23.245        17.12         9.42          0.3 \r\n 1999          144           26.381        19.18         9.62          0 \r\n 1999          145           29.754        21.09         9.47          0 \r\n 1999          146           30.115        23.85         7.46          0 \r\n 1999          147           27.257        29.02         10.41         0.5 \r\n 1999          148           27.74         29.34         14.24         0 \r\n 1999          149           28.399        27.44         12.54         0 \r\n 1999          150           24.068        28.1          14.62         0.3 \r\n 1999          151           17.075        21.36         14.33         0.3 \r\n 1999          152           12.427        22.21         12.68         14.5 \r\n 1999          153           24.607        23.81         11.1          0 \r\n 1999          154           23.94         25.4          12.22         0 \r\n 1999          155           11.07         25.24         16.86         17 \r\n 1999          156           19.208        30.47         19.5          0 \r\n 1999          157           14.526        28.58         21.63         0 \r\n 1999          158           29.815        31.82         17.86         0 \r\n 1999          159           19.358        31.43         18.42         4.8 \r\n 1999          160           22.168        31.38         18.66         29 \r\n 1999          161           11.281        23.78         17.92         56.4 \r\n 1999          162           17.045        24.89         18.76         0 \r\n 1999          163           17.243        25.14         18.87         0 \r\n 1999          164           13.711        24.28         14.7          9.9 \r\n 1999          165           30.217        21.61         11.84         0 \r\n 1999          166           6.687         14.64         10.43         1 \r\n 1999          167           19.082        17.99         8.68          0.3 \r\n 1999          168           23.401        21.87         9.17          0 \r\n 1999          169           22.641        21.99         11.27         0 \r\n 1999          170           11.725        22.87         14.48         1 \r\n 1999          171           20.268        26.24         17.54         0 \r\n 1999          172           23.705        29.41         18.04         0 \r\n 1999          173           14.579        27.66         19.76         11.7 \r\n 1999          174           21.815        27.38         19.19         19.3 \r\n 1999          175           27.669        30.35         18.26         0 \r\n 1999          176           28.608        31.21         19.24         0 \r\n 1999          177           26.614        30.4          19.52         0 \r\n 1999          178           11.81         26.44         18.6          5.1 \r\n 1999          179           13.765        22.19         13.5          0 \r\n 1999          180           23.556        21.24         11.64         0 \r\n 1999          181           17.586        24.32         12.96         1.3 \r\n 1999          182           21.146        25.38         14.93         0.3 \r\n 1999          183           3.397         26.77         15.67         6.6 \r\n 1999          184           17.787        32.28         23.84         1 \r\n 1999          185           28.647        33.15         23.27         0 \r\n 1999          186           27.085        33.64         22.36         30 \r\n 1999          187           30.249        27.71         18.11         2.8 \r\n 1999          188           29.201        28.73         16.32         0 \r\n 1999          189           26.466        32.84         17.87         7.4 \r\n 1999          190           28.623        27.11         17.32         8.1 \r\n 1999          191           28.71         24.17         14.59         0 \r\n 1999          192           22.131        25.84         13.09         0 \r\n 1999          193           27.262        26.59         13.4          0 \r\n 1999          194           26.227        28.46         16.59         0 \r\n 1999          195           27.29         31.11         18.75         0 \r\n 1999          196           27.101        33.02         20.9          0 \r\n 1999          197           8.676         26.34         19.57         28.2 \r\n 1999          198           27.765        29.35         18.14         0.5 \r\n 1999          199           23.37         31.32         20.83         2.3 \r\n 1999          200           23.43         32.55         22.52         15.7 \r\n 1999          201           24.909        32.56         22.14         0.3 \r\n 1999          202           24.783        32.98         23.13         0 \r\n 1999          203           26.149        33.31         23.83         0 \r\n 1999          204           19.224        31.4          23.02         0.5 \r\n 1999          205           27.462        33.51         22.62         0 \r\n 1999          206           26.295        34.18         22.49         0.3 \r\n 1999          207           14.883        30.41         23.3          11.9 \r\n 1999          208           22.13         31.71         21.75         0 \r\n 1999          209           27.091        34.29         20.57         0 \r\n 1999          210           25.575        35.64         23.78         0 \r\n 1999          211           25.453        34.6          22.22         26.4 \r\n 1999          212           20.035        27.94         17.12         3.8 \r\n 1999          213           23.611        24.83         14.63         0 \r\n 1999          214           18.775        25.08         16.04         0 \r\n 1999          215           24.703        27.19         14.81         0 \r\n 1999          216           25.378        26.12         17.03         0.3 \r\n 1999          217           22.396        27.59         14.43         0 \r\n 1999          218           16.561        26.93         16.76         36.1 \r\n 1999          219           11.852        24.67         18.07         1.5 \r\n 1999          220           25.131        23.73         15.91         0 \r\n 1999          221           25.551        27.92         13.1          0 \r\n 1999          222           24.841        29.06         18.02         0 \r\n 1999          223           5.64          24.06         19.16         3.6 \r\n 1999          224           21.011        30.44         18.17         6.6 \r\n 1999          225           11.414        20.95         13.34         0.5 \r\n 1999          226           26.267        22.98         11.31         0 \r\n 1999          227           21.349        27.19         13.16         0 \r\n 1999          228           12.502        29.52         18.54         0.3 \r\n 1999          229           20.01         30.68         16.69         0 \r\n 1999          230           9.171         25.14         17.96         75.7 \r\n 1999          231           13.584        23.74         15.06         0.3 \r\n 1999          232           20.924        25.34         13.79         0 \r\n 1999          233           20.045        27.14         16.7          0 \r\n 1999          234           12.351        26.04         16.08         18.8 \r\n 1999          235           19.878        25.76         15.6          0 \r\n 1999          236           15.728        24.44         15.39         0 \r\n 1999          237           19.939        27.81         15.94         0 \r\n 1999          238           20.963        28.75         16.67         0 \r\n 1999          239           22.392        30.54         17.29         0 \r\n 1999          240           20.594        31.79         20.35         0 \r\n 1999          241           16.895        27.46         18.93         0 \r\n 1999          242           19.13         24.58         14.44         0 \r\n 1999          243           19.64         26.44         14.45         0 \r\n 1999          244           13.288        28.52         15.97         0 \r\n 1999          245           20.45         31.55         16.24         0 \r\n 1999          246           18.887        31.37         18.11         0 \r\n 1999          247           9.43          27.46         18.09         5.1 \r\n 1999          248           21.747        22.82         12.35         5.8 \r\n 1999          249           21.807        24.59         11.42         0 \r\n 1999          250           19.731        29.85         14.53         27.7 \r\n 1999          251           22.045        23.48         10.15         0 \r\n 1999          252           21.641        19.81         7.57          0 \r\n 1999          253           21.863        23.81         6.57          0 \r\n 1999          254           20.448        26.75         8.11          0 \r\n 1999          255           15.559        21.7          10.7          0 \r\n 1999          256           11.448        15.87         6.25          0 \r\n 1999          257           20.696        18.77         5.7           0 \r\n 1999          258           15.33         19.53         4.12          0 \r\n 1999          259           20.481        22.25         6.11          0 \r\n 1999          260           19.919        22.9          6.12          0 \r\n 1999          261           19.04         26.15         6.28          0 \r\n 1999          262           3.918         18.4          9.16          0 \r\n 1999          263           15.494        14.66         2.43          0 \r\n 1999          264           19.558        17.94         1.4           0 \r\n 1999          265           18.995        25.32         3.56          0 \r\n 1999          266           18.367        28.85         9.78          0 \r\n 1999          267           16.939        24.48         8.1           0 \r\n 1999          268           15.914        28.48         11.48         0 \r\n 1999          269           4.838         20.95         11.16         6.9 \r\n 1999          270           9.502         15.75         9.67          7.9 \r\n 1999          271           11.285        18.42         8.29          0 \r\n 1999          272           18.292        17.1          3.12          0 \r\n 1999          273           17.282        22.13         5.2           0 \r\n 1999          274           9.269         14.05         2.59          0 \r\n 1999          275           16.583        10.44         1.24          0 \r\n 1999          276           5.501         6.71         -0.56          5.6 \r\n 1999          277           17.099        13.74        -2.21          0 \r\n 1999          278           17.305        21.38         5.27          0 \r\n 1999          279           16.407        20.99         2.24          0 \r\n 1999          280           15.753        25.41         12.31         0 \r\n 1999          281           7.736         20.84         10.82         0 \r\n 1999          282           16.227        24.18         5.07          0 \r\n 1999          283           15.698        20.96         8.92          0 \r\n 1999          284           15.511        20.83         4.95          0 \r\n 1999          285           12.186        29.49         11.3          0 \r\n 1999          286           13.561        13.84         2.44          0 \r\n 1999          287           14.827        18.94         2.03          0 \r\n 1999          288           13.874        27.38         7.32          0 \r\n 1999          289           14.141        15.25         5.92          1 \r\n 1999          290           13.207        10.56        -0.59          0 \r\n 1999          291           4.551         10.98        -1.45          0 \r\n 1999          292           6.379         9.45         -0.48          0 \r\n 1999          293           14.119        15.44        -4.49          0 \r\n 1999          294           11.894        24.56         4.05          0 \r\n 1999          295           13.679        13.21         2.1           0 \r\n 1999          296           14.1          8.36         -2.55          0 \r\n 1999          297           13.764        13.62        -5.69          0 \r\n 1999          298           12.366        20.75         1.47          0 \r\n 1999          299           12.029        19.81         1.86          0 \r\n 1999          300           12.307        26.18         6.21          0 \r\n 1999          301           11.486        17.42         4.86          0 \r\n 1999          302           8.678         25.03         9.65          0 \r\n 1999          303           7.401         16.54         4.62          2 \r\n 1999          304           12.675        20.22         1.64          0 \r\n 1999          305           12.019        13.48         2.96          0 \r\n 1999          306           12.563        7.83         -1.25          0 \r\n 1999          307           12.333        15.63        -6.6           0 \r\n 1999          308           10.215        17.99        -3.56          0 \r\n 1999          309           11.113        14.48         3.06          0 \r\n 1999          310           10.895        16.23        -1.14          0 \r\n 1999          311           10.458        19.1          1.86          0 \r\n 1999          312           10.652        26.52         3.33          0 \r\n 1999          313           9.937         23.41         9.29          0 \r\n 1999          314           9.863         14.12         5.25          0 \r\n 1999          315           4.512         11.46         2.4           0 \r\n 1999          316           9.575         19.47         0.54          0 \r\n 1999          317           10.342        26.78         2.79          0 \r\n 1999          318           10.009        11.91         1.52          0 \r\n 1999          319           9.903         15.85        -3.38          0 \r\n 1999          320           9.909         12.21        -1.48          0 \r\n 1999          321           9.063         13.9          0.08          0 \r\n 1999          322           8.794         23.46         3.38          0 \r\n 1999          323           1.154         7.85         -1.71          1.3 \r\n 1999          324           8.828         9.2          -6.79          0 \r\n 1999          325           8.209         15.65         0.93          0 \r\n 1999          326           9.213         13.36        -0.25          0 \r\n 1999          327           1.591         5.86          0.26          19.1 \r\n 1999          328           9.497         7.49         -1.25          0 \r\n 1999          329           9.47          8.53         -3.66          0 \r\n 1999          330           4.439         8.21          2.79          1.5 \r\n 1999          331           8.733         7.75          0.36          1.8 \r\n 1999          332           5.312         7.8          -0.18          0 \r\n 1999          333           8.948         4.62         -4.39          0 \r\n 1999          334           3.757         7.58         -4.37          0 \r\n 1999          335           4.17          10.89         0.22          0 \r\n 1999          336           2.874         14.67         6.33          0 \r\n 1999          337           2.801         13.64         4.6           5.6 \r\n 1999          338           2.496         5.69          0.05          0 \r\n 1999          339           7.965         1.62         -6.05          0 \r\n 1999          340           6.797         3.95         -8.3           0 \r\n 1999          341           8.248         9.39         -3.79          0 \r\n 1999          342           7.676         10.18        -2.9           0 \r\n 1999          343           6.469         5.7          -5.44          0 \r\n 1999          344           8.213         3.96         -8.06          0 \r\n 1999          345           7.304         6.01         -7.21          0 \r\n 1999          346           8.385         9.73         -3.7           0 \r\n 1999          347           8.442         7.24         -7.78          0 \r\n 1999          348           1.591         0.47         -5.66          0 \r\n 1999          349           1.595        -0.08         -10.09         0 \r\n 1999          350           4.8          -5.69         -15.23         0 \r\n 1999          351           2.347        -5.34         -10.31         0.5 \r\n 1999          352           7.211        -2.46         -14.25         0 \r\n 1999          353           2.533        -0.57         -9.93          5.8 \r\n 1999          354           8.58         -9.85         -21.11         0 \r\n 1999          355           4.809        -12.98        -23.74         0 \r\n 1999          356           5.908        -13.17        -21.13         1.3 \r\n 1999          357           5.136         0.56         -21.91         0 \r\n 1999          358           7.57         -5.8          -17.02         0 \r\n 1999          359           8.458         4.05         -11.76         0 \r\n 1999          360           8.484         3.62         -5.81          0 \r\n 1999          361           6.747         0.89         -13.57         0 \r\n 1999          362           7.602         5.75         -9.1           0 \r\n 1999          363           8.424         13.04        -2.6           0 \r\n 1999          364           8.015         8.82         -2.46          0 \r\n 1999          365           8.287         8.24         -5.76          0 \r\n 2000          1             4             4.14         -2.34          0 \r\n 2000          2             1.433         2.67         -0.71          0 \r\n 2000          3             1.22         -0.38         -6.52          0.5 \r\n 2000          4             7.836        -6.52         -16.06         1.8 \r\n 2000          5             3.716         0.93         -15.38         0 \r\n 2000          6             8.411         2.01         -5.33          0 \r\n 2000          7             8.687         5.22         -12.63         0 \r\n 2000          8             8.502         7.89         -3.92          0 \r\n 2000          9             2.002         7.06         -1.24          0.2 \r\n 2000          10            6.829         8.38         -1.86          0 \r\n 2000          11            4.932        -1.84         -8.4           0 \r\n 2000          12            5.701         1.83         -7.44          0 \r\n 2000          13            9.035        -3.75         -13.21         0 \r\n 2000          14            6.425         7.3          -12.06         0 \r\n 2000          15            7.544         10.54        -4.97          0 \r\n 2000          16            4.937        -3.12         -11.79         0 \r\n 2000          17            1.082        -3.07         -4.64          0 \r\n 2000          18            9.506         2.67         -7.68          0 \r\n 2000          19            3.158        -1.19         -18.23         7.6 \r\n 2000          20            10.214       -9.04         -21.04         0 \r\n 2000          21            7.598        -8.6          -19.09         0 \r\n 2000          22            7.821        -0.86         -9.82          1 \r\n 2000          23            9.901        -6.48         -19.15         0 \r\n 2000          24            9.486         2.73         -20.68         0 \r\n 2000          25            7.29         -4.14         -16.83         0 \r\n 2000          26            10.903       -8.37         -19.86         0 \r\n 2000          27            9.99         -6.36         -18.55         0 \r\n 2000          28            7.764        -5.15         -13.37         0 \r\n 2000          29            9.454        -3.71         -7.95          1.5 \r\n 2000          30            9.341        -4.32         -13.34         1.5 \r\n 2000          31            10.75        -2.68         -16.32         0 \r\n 2000          32            5.43         -4.01         -13.09         0 \r\n 2000          33            9.055         4.89         -14.09         0 \r\n 2000          34            3.674         4.2          -6.26          0 \r\n 2000          35            6.081        -2.65         -6.5           0 \r\n 2000          36            10.832        3.07         -12.09         0 \r\n 2000          37            10.052        7.02         -2.95          0 \r\n 2000          38            11.986        2.48         -8.14          0 \r\n 2000          39            10.239        8.32         -9.08          0 \r\n 2000          40            8.442         9.23         -0.16          0 \r\n 2000          41            1.936         1.31         -6.28          0 \r\n 2000          42            11.857       -2.84         -11.06         0 \r\n 2000          43            4.423         0.04         -8.63          0 \r\n 2000          44            6.427        -1.26         -5.62          2.3 \r\n 2000          45            12.579        0.14         -8.45          0 \r\n 2000          46            12.354        12.97        -5.22          0 \r\n 2000          47            13.637        0.32         -9.56          0 \r\n 2000          48            2.265         0.1          -5.26          0.5 \r\n 2000          49            7.75         -2.1          -5.2           8.4 \r\n 2000          50            13.575       -0.99         -9.68          0 \r\n 2000          51            14.78         3.61         -14.11         0 \r\n 2000          52            12.968        9.26         -3.51          0 \r\n 2000          53            7             12.28         1.7           0 \r\n 2000          54            8.003         16.5          7.43          1 \r\n 2000          55            4.624         12.4          6.45          4.3 \r\n 2000          56            6.426         16.42         7.97          14.2 \r\n 2000          57            8.389         10.39         1.95          2.8 \r\n 2000          58            16.279        11.19        -0.45          0 \r\n 2000          59            15.56         18.7         -0.29          0 \r\n 2000          60            8.179         15.92         2.36          7.9 \r\n 2000          61            15.659        8.99         -1.19          0.2 \r\n 2000          62            13.299        7.47         -3.77          0 \r\n 2000          63            14.75         10.18        -3.33          0 \r\n 2000          64            16.883        20.44        -1.23          0 \r\n 2000          65            17.295        20.73         1.33          0 \r\n 2000          66            16.091        23.01         4.8           0 \r\n 2000          67            15.07         25.13         11.31         0 \r\n 2000          68            10.116        21.14         4.95          0 \r\n 2000          69            3.482         4.96         -3.27          0 \r\n 2000          70            13.878        3.46         -5.29          0 \r\n 2000          71            18.995        7.29         -6.97          0 \r\n 2000          72            6.026         7.02         -4.14          0 \r\n 2000          73            14.617        10.25        -1.93          0 \r\n 2000          74            9.99          15.58        -1.99          0.5 \r\n 2000          75            3.331         7.33         -3.71          0.8 \r\n 2000          76            19.906        4.36         -7.97          0 \r\n 2000          77            19.977        6.98         -8.25          0 \r\n 2000          78            3.481         3.66         -0.76          3.6 \r\n 2000          79            3.272         1.41         -0.68          0.8 \r\n 2000          80            6.245         6.75          0.12          0 \r\n 2000          81            4.277         9.53          4.31          0 \r\n 2000          82            7.404         15.09         5.6           0 \r\n 2000          83            11.998        19.08         4.56          0 \r\n 2000          84            9.023         17.59         5.49          5.3 \r\n 2000          85            21.415        17.52         1.79          0 \r\n 2000          86            12.763        21.06         0.78          0 \r\n 2000          87            20.189        15.07        -3.81          0 \r\n 2000          88            22.048        12.07        -3.85          0 \r\n 2000          89            22.256        14.86        -2.55          0 \r\n 2000          90            15.76         15.99         1.52          0 \r\n 2000          91            18.171        17.44         0.62          0 \r\n 2000          92            12.288        13.52         1.44          0.8 \r\n 2000          93            20.527        18.52        -0.99          0 \r\n 2000          94            16.676        10.65         0.07          0 \r\n 2000          95            23.533        11.74        -4.06          0 \r\n 2000          96            21.138        28.78        -0.05          0 \r\n 2000          97            22.412        16.72         2.54          0 \r\n 2000          98            3.397         8.93         -3.79          5.1 \r\n 2000          99            24.452        10.69        -6.25          1 \r\n 2000          100           23.365        13.75         2.01          0 \r\n 2000          101           5.059         8.73          2.94          1 \r\n 2000          102           11.173        7.69         -0.74          0 \r\n 2000          103           15.478        12.46        -4.34          0 \r\n 2000          104           22.587        22.56         2.79          0.3 \r\n 2000          105           22.03         26.7          8.77          0 \r\n 2000          106           5.2           9.93          2.92          0 \r\n 2000          107           3.791         7.13          2.83          8.9 \r\n 2000          108           8.743         8.76          1.94          0 \r\n 2000          109           23.133        22.53         2.62          0 \r\n 2000          110           16.938        25.49         11.37         1 \r\n 2000          111           3.054         11.87         4.12          7.4 \r\n 2000          112           26.683        18.16         0.8           0 \r\n 2000          113           23.18         24.99         2.47          0 \r\n 2000          114           22.234        24.86         7.64          0 \r\n 2000          115           25.496        20.12         3.86          0 \r\n 2000          116           26.963        21.15         4.66          0 \r\n 2000          117           23.821        22.78         5.41          0.3 \r\n 2000          118           10.318        19.2          10.83         0.5 \r\n 2000          119           21.848        22.08         8.66          0 \r\n 2000          120           27.283        19.36         2.99          0 \r\n 2000          121           21.738        25.18         6.51          0 \r\n 2000          122           20.123        24.34         11.45         0 \r\n 2000          123           27.384        26.42         7.83          0 \r\n 2000          124           20.881        26.54         10.72         0 \r\n 2000          125           24.457        28.73         11.39         0.5 \r\n 2000          126           25.591        28.72         12.43         0 \r\n 2000          127           22.066        27.81         13.48         0 \r\n 2000          128           22.214        29.8          14.58         0 \r\n 2000          129           8.327         23.24         13.58         3.8 \r\n 2000          130           11.353        18.21         8.5           0.3 \r\n 2000          131           15.575        23.29         5.44          0 \r\n 2000          132           16.929        35.26         13.35         0 \r\n 2000          133           20.056        21.86         7.68          1.8 \r\n 2000          134           19.937        14.8          3.08          0 \r\n 2000          135           23.078        21.5          2.33          0 \r\n 2000          136           14.151        20.84         9.87          0 \r\n 2000          137           24.49         24.75         9.29          0 \r\n 2000          138           14.224        28.76         17.79         0 \r\n 2000          139           5.907         21.34         9.7           39.9 \r\n 2000          140           26.44         16.61         8.28          0 \r\n 2000          141           28.72         21.23         6.09          0 \r\n 2000          142           23.724        26.1          12.45         0 \r\n 2000          143           21.741        29.54         14.32         0 \r\n 2000          144           15.802        25.9          13.66         0 \r\n 2000          145           20.284        27.09         12.35         0 \r\n 2000          146           26.575        25.07         6.98          30.8 \r\n 2000          147           2.656         18.08         11.54         14.4 \r\n 2000          148           4.514         15.6          12.02         0 \r\n 2000          149           10.461        17.66         10.62         0 \r\n 2000          150           21.468        23.61         11.58         0 \r\n 2000          151           18.031        30.39         16.54         14.2 \r\n 2000          152           15.746        26.52         17.05         0 \r\n 2000          153           22.566        30.18         15.24         0 \r\n 2000          154           29.789        21.53         11.23         0 \r\n 2000          155           28.087        24.47         10.44         0 \r\n 2000          156           10.035        21.78         12.13         9.9 \r\n 2000          157           19.18         18.28         9.95          0 \r\n 2000          158           29.724        22.96         8.84          0 \r\n 2000          159           24.969        29.09         12.05         0 \r\n 2000          160           28.944        33.5          17.98         0 \r\n 2000          161           29.322        31.77         15.6          0 \r\n 2000          162           19.691        30.22         22.96         0 \r\n 2000          163           12.883        26.63         19            7.1 \r\n 2000          164           17.634        25.72         17.47         0.8 \r\n 2000          165           11.108        28.45         17.36         31.7 \r\n 2000          166           12.088        20.47         14.59         0.5 \r\n 2000          167           25.951        27.89         11.39         3.6 \r\n 2000          168           23.502        20.76         10.46         1.5 \r\n 2000          169           18.881        19.86         9.01          0.3 \r\n 2000          170           29.9          24.42         8.65          0 \r\n 2000          171           25.574        27.78         12.39         10.2 \r\n 2000          172           21.849        26.55         14.04         0 \r\n 2000          173           30.17         26.27         12.98         0 \r\n 2000          174           30.408        30.38         13.33         0 \r\n 2000          175           17.083        27.33         16.67         5.8 \r\n 2000          176           22.169        26.55         18.81         0.3 \r\n 2000          177           12.113        26.88         17.02         16.5 \r\n 2000          178           27.502        24.86         16.38         0 \r\n 2000          179           28.869        25.62         13.81         8.9 \r\n 2000          180           16.67         22.91         13.61         2.5 \r\n 2000          181           26.757        25.36         12.63         0 \r\n 2000          182           23.407        26.96         16.27         1.8 \r\n 2000          183           22.525        27.44         14.78         0.3 \r\n 2000          184           21.786        31.59         18.07         8.1 \r\n 2000          185           14.606        25.2          18.26         0 \r\n 2000          186           11.186        27.03         20.93         4.8 \r\n 2000          187           10.648        27.73         20.24         0.3 \r\n 2000          188           23.288        30.1          20.04         0.3 \r\n 2000          189           16.379        29.58         20.12         0 \r\n 2000          190           27.796        32.33         23.11         0 \r\n 2000          191           13.716        30.04         22.59         0 \r\n 2000          192           16.88         28.76         20.31         15.2 \r\n 2000          193           12.885        27.74         20.83         0.8 \r\n 2000          194           19.169        28.51         18.24         0 \r\n 2000          195           28.457        31.15         18.39         0 \r\n 2000          196           28.786        31            18.7          1 \r\n 2000          197           21.879        28.61         18.69         0 \r\n 2000          198           21.426        28.99         18.03         2.3 \r\n 2000          199           27.822        26.93         15.85         0 \r\n 2000          200           6.926         18.39         13.58         4.6 \r\n 2000          201           15.549        20.72         13.86         0 \r\n 2000          202           19.494        23.54         13.34         0 \r\n 2000          203           28.26         23.71         11.26         0 \r\n 2000          204           28.218        25.33         11.02         0 \r\n 2000          205           25.184        26.37         13.02         0 \r\n 2000          206           20.893        26.55         14.59         0 \r\n 2000          207           22.018        27.5          17.07         0 \r\n 2000          208           12.407        27.12         16.5          29 \r\n 2000          209           27.883        29.63         16.56         0 \r\n 2000          210           25.231        28.28         16.89         0 \r\n 2000          211           16.409        24.68         16.29         0 \r\n 2000          212           23.264        27.27         17.01         0 \r\n 2000          213           26.67         29.41         16.11         0 \r\n 2000          214           21.641        30.5          17.52         0 \r\n 2000          215           26.544        28.92         17.44         0 \r\n 2000          216           17.333        25.84         14.57         0 \r\n 2000          217           24.367        26.72         16.82         0 \r\n 2000          218           15.248        29.23         18.28         1 \r\n 2000          219           21.837        27.33         16.97         0 \r\n 2000          220           23.944        31.68         16.23         0 \r\n 2000          221           22.155        31.01         18.67         3.6 \r\n 2000          222           25.946        30.74         19.04         0 \r\n 2000          223           25.238        30.02         16.09         0 \r\n 2000          224           23.57         29.11         15.23         0 \r\n 2000          225           20.23         31.87         17.69         0 \r\n 2000          226           18.587        29.99         19.95         13.5 \r\n 2000          227           24.299        32.79         20.76         0 \r\n 2000          228           19.99         29.02         17.74         0 \r\n 2000          229           16.374        25.64         14.57         1 \r\n 2000          230           7.104         21.51         15.72         0 \r\n 2000          231           24.813        24.78         13.7          0 \r\n 2000          232           14.835        23.81         13.5          1.3 \r\n 2000          233           12.449        22.45         15.84         0 \r\n 2000          234           10.92         26.26         16.46         0.5 \r\n 2000          235           11.935        26.83         19.09         8.1 \r\n 2000          236           9.773         26.77         18.16         1.8 \r\n 2000          237           22.977        29.09         15.16         0 \r\n 2000          238           20.857        30.74         16.7          0 \r\n 2000          239           15.035        30.02         19.07         0 \r\n 2000          240           8.172         24.72         16.65         0.3 \r\n 2000          241           9.981         28.98         20.65         0 \r\n 2000          242           17.632        25.32         15.94         0 \r\n 2000          243           17.613        33.07         16.04         0 \r\n 2000          244           18.807        37.01         19.5          0 \r\n 2000          245           13.97         29.35         19.22         0 \r\n 2000          246           16.965        36.47         18.98         0 \r\n 2000          247           21.552        33.36         18.85         1.5 \r\n 2000          248           8.01          23.98         13.91         0 \r\n 2000          249           23.036        23.84         9.96          0 \r\n 2000          250           22.077        25.69         9.18          0 \r\n 2000          251           12.715        25.12         12.8          0.8 \r\n 2000          252           21.127        30.65         14.39         0 \r\n 2000          253           20.675        31.93         19.49         0 \r\n 2000          254           19.892        35.13         17.5          0 \r\n 2000          255           20.241        36.34         14.31         0 \r\n 2000          256           21.983        25.99         7.95          0 \r\n 2000          257           20.344        33.33         12.27         0 \r\n 2000          258           20.633        24.71         9.79          4.6 \r\n 2000          259           20.321        21.52         6.22          0 \r\n 2000          260           20.464        26.96         5.4           0 \r\n 2000          261           19.7          33.51         10.64         0 \r\n 2000          262           16.171        33.08         15.36         0 \r\n 2000          263           3.095         25.78         12.97         2.3 \r\n 2000          264           9.335         18.32         4.37          1 \r\n 2000          265           17.947        18.7          2.04          0 \r\n 2000          266           4.02          18.05         9.79          13.2 \r\n 2000          267           3.458         12.75         8.83          0 \r\n 2000          268           3.588         8.93          6.58          0 \r\n 2000          269           19.563        18.02         2.59          0 \r\n 2000          270           19.104        24.2          2.45          0 \r\n 2000          271           18.502        24.94         8.16          0 \r\n 2000          272           18.143        25.41         8.15          0 \r\n 2000          273           16.852        28.08         11.53         0 \r\n 2000          274           16.297        28.04         12.7          0 \r\n 2000          275           11.374        27.77         12.1          0 \r\n 2000          276           17.37         22.51         11.64         0 \r\n 2000          277           11.076        22.95         8.84          0 \r\n 2000          278           12.585        16.36         5.83          3 \r\n 2000          279           3.266         9.94          0.77          10.9 \r\n 2000          280           10.429        5.8          -2.48          0 \r\n 2000          281           7.496         4.94         -3.77          0 \r\n 2000          282           17.299        8.68         -4.76          0 \r\n 2000          283           16.972        13.63        -4.74          0 \r\n 2000          284           16.885        17.67        -3             0 \r\n 2000          285           15.993        20.5         -1.16          0 \r\n 2000          286           12.695        23.74         8.15          0 \r\n 2000          287           14.104        26.73         13.84         0 \r\n 2000          288           14.836        24.1          11.09         7.6 \r\n 2000          289           14.942        17.04         4.97          0 \r\n 2000          290           10.502        17.53         3.83          0 \r\n 2000          291           11.111        18.67         7.46          0.8 \r\n 2000          292           14.551        26.63         4.53          0 \r\n 2000          293           14.227        27.81         8.97          0 \r\n 2000          294           11.166        21.84         10.52         0 \r\n 2000          295           12.892        24.73         7.21          0 \r\n 2000          296           2.327         16.65         11.73         2 \r\n 2000          297           5.158         19.9          13.99         2.5 \r\n 2000          298           8.71          24.25         12.3          0 \r\n 2000          299           7.646         23.43         15.65         1.8 \r\n 2000          300           10.598        22.45         10.22         17.8 \r\n 2000          301           5.019         12.4          8.46          0 \r\n 2000          302           4.691         12.79         8.89          0 \r\n 2000          303           2.159         12.89         9.49          1.5 \r\n 2000          304           10.338        21.35         10.74         1.5 \r\n 2000          305           5.353         21.25         9.48          0 \r\n 2000          306           3.036         21.73         9.99          15.2 \r\n 2000          307           11.807        15.6          2.9           3.6 \r\n 2000          308           10.903        11.52         1.38          0 \r\n 2000          309           11.135        15.31         3.67          0.2 \r\n 2000          310           3.033         12.77         3.03          0 \r\n 2000          311           1.194         10.49         4.8           33.3 \r\n 2000          312           2.474         4.82         -3.59          1.5 \r\n 2000          313           6.054        -1.71         -4.05          0 \r\n 2000          314           1.541        -1.54         -4.16          0 \r\n 2000          315           6.077         2.82         -4.53          0 \r\n 2000          316           1.633         0.12         -5.52          0 \r\n 2000          317           2.117         1.91         -3.15          6.1 \r\n 2000          318           2.64         -0.6          -5.76          0 \r\n 2000          319           9.256        -1.21         -7.56          0 \r\n 2000          320           7.412         7.54         -8.96          0 \r\n 2000          321           5.069         5.15         -7.02          0.2 \r\n 2000          322           6.044        -2.61         -8.84          0 \r\n 2000          323           4.588        -1.17         -8.15          0 \r\n 2000          324           4.941         2.88         -8.54          0 \r\n 2000          325           5.798        -7.81         -14.4          0 \r\n 2000          326           9.354         0.9          -15.42         0 \r\n 2000          327           9.385        -0.9          -11.77         0 \r\n 2000          328           9.472         8.22         -10.41         0 \r\n 2000          329           8.985         8.82         -8.17          0 \r\n 2000          330           5.233         8.4          -2.69          0 \r\n 2000          331           1.777        -1.95         -4.33          0 \r\n 2000          332           8.928         8.47         -5.65          0 \r\n 2000          333           2.801         7.19         -6.86          0 \r\n 2000          334           1.365         1.69         -2.4           0.2 \r\n 2000          335           3.542         0.8          -3.21          0 \r\n 2000          336           3.906        -0.66         -3.51          2.8 \r\n 2000          337           9.398        -3.5          -15.13         0.8 \r\n 2000          338           8.005        -0.52         -16.68         0 \r\n 2000          339           5.229         1.34         -11.99         0 \r\n 2000          340           6.848        -11.76        -16.1          0 \r\n 2000          341           4.209        -3.18         -12.61         0.5 \r\n 2000          342           5.059         4.45         -5.71          0 \r\n 2000          343           8.586        -5.69         -12.03         0 \r\n 2000          344           1.771         0.7          -8.4           0 \r\n 2000          345           6.345         1.41         -17.64         0 \r\n 2000          346           3.804        -16.56        -20.7          19.1 \r\n 2000          347           8.451        -16.41        -25.29         0 \r\n 2000          348           3.854        -10.84        -18.6          2.8 \r\n 2000          349           7.51         -11.09        -18            0 \r\n 2000          350           3.934        -5.15         -17.03         0 \r\n 2000          351           5.054        -4.55         -18.94         2.5 \r\n 2000          352           8.493        -12.95        -21.58         0 \r\n 2000          353           5.117        -12.42        -17.49         5.8 \r\n 2000          354           8.761        -15.25        -22.97         0 \r\n 2000          355           4.335        -7.71         -17.77         0.5 \r\n 2000          356           7.864        -17.34        -21.76         0 \r\n 2000          357           8.262        -14.44        -26.09         0 \r\n 2000          358           7.349        -11.08        -20.68         1.5 \r\n 2000          359           8.969        -18.46        -26.24         0 \r\n 2000          360           5.082        -13.27        -26.21         0 \r\n 2000          361           7.909        -9.82         -18.22         0 \r\n 2000          362           7.962        -10.24        -21.85         0 \r\n 2000          363           2.206        -8.15         -14.5          2.8 \r\n 2000          364           8.009        -11.11        -15.08         1.3 \r\n 2000          365           7.961        -12.59        -18.33         0 \r\n 2000          366           6.286        -12.83        -16.03         0 \r\n 2001          1             5.79         -8.05         -13.45         1.3 \r\n 2001          2             8.657        -5.67         -22.84         0 \r\n 2001          3             5.804        -0.93         -8.41          0 \r\n 2001          4             5.961         4.65         -10.02         0 \r\n 2001          5             9.133         1.55         -7.54          0 \r\n 2001          6             8.954         4.71         -8.85          0 \r\n 2001          7             7.32          0.98         -8.43          0 \r\n 2001          8             7.847        -2.91         -13.95         0 \r\n 2001          9             8.769        -0.73         -17.08         0 \r\n 2001          10            8.553         4.25         -5.99          0 \r\n 2001          11            1.881         2.66          0.3           2.8 \r\n 2001          12            2.05          0.55         -1.61          0.2 \r\n 2001          13            2.353         0.52         -0.71          0 \r\n 2001          14            3.573         1.26         -0.24          1.3 \r\n 2001          15            5.514         0.24         -6.39          0 \r\n 2001          16            8.347        -5.4          -9.94          0 \r\n 2001          17            6.002        -3.25         -10.36         0 \r\n 2001          18            6.34          0.36         -12.16         0 \r\n 2001          19            9.831        -12.15        -19.6          0 \r\n 2001          20            9.928        -5.87         -20.87         0 \r\n 2001          21            10.464       -6.37         -13.83         0 \r\n 2001          22            9.919         2.22         -14.44         0 \r\n 2001          23            10.684        1.16         -8.1           0 \r\n 2001          24            11.095       -5.73         -15.23         0 \r\n 2001          25            9.977        -3.65         -17.7          0 \r\n 2001          26            4.284        -2.15         -12.03         3.3 \r\n 2001          27            11.525       -4.02         -17.53         0 \r\n 2001          28            4.347        -2.26         -7.72          0.2 \r\n 2001          29            1.255         0.6          -2.48          15.8 \r\n 2001          30            9.567         1.81         -2.84          3.3 \r\n 2001          31            10.323       -2.6          -7.95          0 \r\n 2001          32            11.144       -7.19         -21.82         0 \r\n 2001          33            8.426        -11.8         -23.55         0 \r\n 2001          34            6.703         0.15         -14.28         0 \r\n 2001          35            6.822         0.82         -6.99          0 \r\n 2001          36            7.234         2.44         -6.28          0 \r\n 2001          37            12.315       -0.01         -7.69          0 \r\n 2001          38            1.696        -0.48         -7.9           0.2 \r\n 2001          39            1.689        -0.03         -6.49          4.3 \r\n 2001          40            7.6          -6.47         -17.24         14.5 \r\n 2001          41            14.925       -12.02        -19.87         0 \r\n 2001          42            11.224       -4.93         -16.77         0 \r\n 2001          43            10.341        0.82         -5.16          0 \r\n 2001          44            4.055         1.01         -5.01          0 \r\n 2001          45            6.2          -0.46         -13.11         1.5 \r\n 2001          46            8.783        -5.79         -12.11         0 \r\n 2001          47            14.075       -7.67         -16.96         0 \r\n 2001          48            13.883       -10.58        -18.86         0 \r\n 2001          49            13.876       -0.77         -14.17         0 \r\n 2001          50            13.73         1.13         -6.32          0 \r\n 2001          51            12.027       -4.66         -14.49         0 \r\n 2001          52            10.365       -11.21        -19.05         0 \r\n 2001          53            13.656       -0.55         -11.46         0 \r\n 2001          54            12.594       -5.6          -13.89         0 \r\n 2001          55            2.324         4.6          -2.91          11.9 \r\n 2001          56            15.502        2.7          -8.08          0 \r\n 2001          57            6.317         0.96         -10.33         0 \r\n 2001          58            9.609        -8.99         -17.03         0 \r\n 2001          59            17.191       -4.87         -19.49         0 \r\n 2001          60            6.034        -3.17         -12.29         0 \r\n 2001          61            17.263        0.49         -6.65          0 \r\n 2001          62            16.881        2.06         -9.75          0 \r\n 2001          63            17.857       -2.97         -9.24          0 \r\n 2001          64            18.144       -1.53         -11.59         0 \r\n 2001          65            17.906       -0.93         -12.05         0 \r\n 2001          66            5.438        -1.29         -5.99          0 \r\n 2001          67            8.095        -1.95         -5.37          0 \r\n 2001          68            15.849        0.66         -7.39          0 \r\n 2001          69            5.595         5.58         -3.73          0 \r\n 2001          70            12.28         1.69         -7.84          0 \r\n 2001          71            6.006         3.33         -1.83          20.3 \r\n 2001          72            9.092         4.83         -1.14          0 \r\n 2001          73            14.203        8.43         -1.9           0.8 \r\n 2001          74            2.66          2.89         -1.29          0.2 \r\n 2001          75            12.53         0.72         -3.62          0.2 \r\n 2001          76            20.742        2.65         -8.14          0 \r\n 2001          77            18.859        4.18         -9.33          0 \r\n 2001          78            20.13         5.65         -4.4           0 \r\n 2001          79            20.594        8.16         -4.92          0 \r\n 2001          80            12.009        8.9           1.26          0 \r\n 2001          81            15.206        12.51        -1.1           0 \r\n 2001          82            5.384         1.68         -4.77          0.8 \r\n 2001          83            15.645       -4.39         -8.45          0 \r\n 2001          84            18.312       -4.51         -9.09          0 \r\n 2001          85            22.258        1.21         -10.64         0 \r\n 2001          86            22.253        5.82         -9.65          0 \r\n 2001          87            3.989         2.79         -1.01          0 \r\n 2001          88            6.462         7.79         -0.38          1.3 \r\n 2001          89            15.356        12.16        -0.9           0 \r\n 2001          90            18.326        8.43         -2.1           4.3 \r\n 2001          91            18.158        11.39        -2             0 \r\n 2001          92            21.065        12.76         0.08          0 \r\n 2001          93            12.614        10.79         1.27          0 \r\n 2001          94            19.533        16.72         0.53          0 \r\n 2001          95            6.208         19.52         8             0 \r\n 2001          96            3.652         17.06         6.48          6.3 \r\n 2001          97            19.863        19.16         6.44          0.3 \r\n 2001          98            22.838        21.53         1.27          13.7 \r\n 2001          99            10.265        14.63         7.31          0 \r\n 2001          100           5.496         13.57         7.32          10.4 \r\n 2001          101           7.344         20.81         10.03         22.1 \r\n 2001          102           10.368        12.74         4.48          0 \r\n 2001          103           22.058        17.75         1.18          2.3 \r\n 2001          104           21.383        18.48         2.03          0 \r\n 2001          105           23.616        14.66         0.36          0.3 \r\n 2001          106           16.863        3.55         -1.84          0 \r\n 2001          107           24.892        10.05        -2.12          0 \r\n 2001          108           24.155        16.22        -1.76          0 \r\n 2001          109           18.508        21.79         4.66          0 \r\n 2001          110           19.975        26.83         12.9          1.8 \r\n 2001          111           13.874        17.64         7.74          0.5 \r\n 2001          112           9.061         25.05         6.7           18.5 \r\n 2001          113           7.767         18.04         3.71          0 \r\n 2001          114           23.744        19.48         0.7           1.8 \r\n 2001          115           25.754        22.58         4.78          0 \r\n 2001          116           23.666        29.31         10.37         0 \r\n 2001          117           26.093        27.82         10.03         0 \r\n 2001          118           22.793        27            12.79         0 \r\n 2001          119           24.81         28.85         12.82         0 \r\n 2001          120           6.495         21.1          13.62         6.6 \r\n 2001          121           22.8          28.62         11.7          4.6 \r\n 2001          122           1.853         20.36         11.66         9.9 \r\n 2001          123           7.109         16.58         9.95          21.1 \r\n 2001          124           4.524         15.27         11.67         3 \r\n 2001          125           5.066         17.24         10.46         3.8 \r\n 2001          126           14.915        22.61         11.59         5.6 \r\n 2001          127           24.412        19.82         8.45          0 \r\n 2001          128           26.826        23.69         8.56          0 \r\n 2001          129           25.9          29.12         10.82         1.8 \r\n 2001          130           17.567        28.09         13.34         24.9 \r\n 2001          131           25.606        20.52         10.4          0 \r\n 2001          132           18.63         19.86         8.57          0 \r\n 2001          133           7.715         14.86         11.47         6.6 \r\n 2001          134           27.647        30.85         12            0 \r\n 2001          135           24.574        32.44         20.66         0 \r\n 2001          136           25.367        30.65         17.73         0 \r\n 2001          137           21.557        28.27         16.31         0 \r\n 2001          138           25.098        26.72         12.92         0 \r\n 2001          139           26.215        27.63         13.81         0 \r\n 2001          140           5.587         21.61         11.23         40.1 \r\n 2001          141           14.932        14.23         7.03          1.3 \r\n 2001          142           15.195        13.8          6.65          0 \r\n 2001          143           13.684        11.82         5.78          3.8 \r\n 2001          144           17.609        14.67         5.26          0.8 \r\n 2001          145           8.999         15.19         10.06         6.9 \r\n 2001          146           14.913        17.39         10.05         5.1 \r\n 2001          147           16.215        18.21         9.39          0.5 \r\n 2001          148           24.097        20.99         10.96         3.3 \r\n 2001          149           26.253        23.63         10.04         0 \r\n 2001          150           4             16.09         11.83         0 \r\n 2001          151           3.945         13.59         7.49          16.3 \r\n 2001          152           20.456        21.29         5.78          1.8 \r\n 2001          153           17.78         19.26         10.4          0 \r\n 2001          154           14.225        17.19         8.11          0 \r\n 2001          155           13.501        17.83         10.01         0.5 \r\n 2001          156           7.594         17.96         10.19         7.6 \r\n 2001          157           24.609        24.05         13.67         0 \r\n 2001          158           25.239        24.8          15.6          0 \r\n 2001          159           27.595        27.19         14.12         0 \r\n 2001          160           28.121        29.38         14.15         0 \r\n 2001          161           27.556        31.4          17.57         3.6 \r\n 2001          162           26.543        36.16         20.84         0 \r\n 2001          163           7.22          26.44         19.15         15 \r\n 2001          164           24.259        30.12         21.76         0 \r\n 2001          165           5.002         24.73         17.66         9.7 \r\n 2001          166           29.895        24.75         13.72         0 \r\n 2001          167           29.422        28.45         15.93         4.1 \r\n 2001          168           25.274        30.74         15.73         0 \r\n 2001          169           27.535        33.28         20.21         0 \r\n 2001          170           14.542        23.02         14.45         0 \r\n 2001          171           25.057        25.01         13.28         0.3 \r\n 2001          172           19.199        24.61         12.1          0 \r\n 2001          173           30.033        24            11.65         0 \r\n 2001          174           30.598        25.63         11.63         0 \r\n 2001          175           29.023        31.57         16.19         0 \r\n 2001          176           28.687        32.66         19.58         0 \r\n 2001          177           27.317        31.46         20.69         0 \r\n 2001          178           27.125        29.65         19.06         0 \r\n 2001          179           27.725        29.15         18.04         0 \r\n 2001          180           28.106        30.1          17.09         0 \r\n 2001          181           20.751        31.88         18.86         0 \r\n 2001          182           18.051        21.93         13.55         0 \r\n 2001          183           18.775        24.47         11.7          0 \r\n 2001          184           24.518        30.5          19.65         1 \r\n 2001          185           28.28         30.59         18.83         0 \r\n 2001          186           30.003        28            13.17         0 \r\n 2001          187           24.759        30.89         13.53         0 \r\n 2001          188           17.076        33.24         23.36         0 \r\n 2001          189           9.241         27.94         21.88         10.2 \r\n 2001          190           24.64         31.17         20.07         0 \r\n 2001          191           22.616        31.28         20.25         0 \r\n 2001          192           25.683        27.86         15.11         0 \r\n 2001          193           27.127        28.31         17.28         0 \r\n 2001          194           24.719        28.82         16.51         0 \r\n 2001          195           27.557        29.6          15.45         0 \r\n 2001          196           21.068        27.85         15.84         0 \r\n 2001          197           23.337        30.22         18.11         0 \r\n 2001          198           13.957        32.06         22.74         0 \r\n 2001          199           16.301        29.82         20.78         0.5 \r\n 2001          200           15.475        29.55         21.87         9.1 \r\n 2001          201           10.138        27.96         22.74         0 \r\n 2001          202           18.566        31.28         22.68         0 \r\n 2001          203           23.236        33.06         23.04         0 \r\n 2001          204           18.673        31.8          23.05         0 \r\n 2001          205           8.401         27.58         19.87         19.1 \r\n 2001          206           19.633        27.15         18.86         0 \r\n 2001          207           25.326        25.86         18.39         0 \r\n 2001          208           16.111        24.53         18.14         0 \r\n 2001          209           24.196        30.5          18.44         2.8 \r\n 2001          210           25.66         31.4          15.78         0 \r\n 2001          211           23.267        33.94         19.38         0 \r\n 2001          212           25.568        34.91         24.08         0 \r\n 2001          213           18.453        34.75         24.77         0 \r\n 2001          214           22.874        32.05         22.43         0 \r\n 2001          215           18.029        30.33         21.01         25.4 \r\n 2001          216           25.324        32.28         20.25         0 \r\n 2001          217           26.099        33.41         22.34         0 \r\n 2001          218           25.394        34.31         21.58         0 \r\n 2001          219           26.176        33.56         20.08         0 \r\n 2001          220           24.512        32.27         18.04         0 \r\n 2001          221           19.85         30.86         16.01         0 \r\n 2001          222           26.257        23.53         12.97         0 \r\n 2001          223           26.33         26.55         13.06         0 \r\n 2001          224           22.88         30.22         14.72         0 \r\n 2001          225           26.335        25.62         13.58         0 \r\n 2001          226           12.864        24.41         11.57         0.8 \r\n 2001          227           1.95          18.7          14.71         20.1 \r\n 2001          228           22.193        23.15         14.64         0.3 \r\n 2001          229           25.45         26.95         12.69         0 \r\n 2001          230           21.677        22.13         15.42         3.6 \r\n 2001          231           24.154        25.11         13.89         0 \r\n 2001          232           24.014        25.37         12.85         0 \r\n 2001          233           20.274        32.59         16.76         0 \r\n 2001          234           7.969         27.45         20.84         2.3 \r\n 2001          235           16.147        28.99         19.71         0 \r\n 2001          236           3.797         22.24         19.77         9.1 \r\n 2001          237           14.534        25.8          19.45         2 \r\n 2001          238           23.636        29.96         17.49         0 \r\n 2001          239           23.114        28.51         18.09         0 \r\n 2001          240           23.391        27.78         15.36         0 \r\n 2001          241           21.316        31.58         16.66         0 \r\n 2001          242           18.949        26.8          14.83         0 \r\n 2001          243           23.828        23.6          12.82         0 \r\n 2001          244           22.187        24.96         9.82          0 \r\n 2001          245           11.571        26.4          13.98         0 \r\n 2001          246           21.18         29.86         15.74         0 \r\n 2001          247           21.993        28.11         12.83         0 \r\n 2001          248           20.549        28.42         14.42         0 \r\n 2001          249           8.083         25.35         19.34         30 \r\n 2001          250           5.913         23.91         17.02         64.3 \r\n 2001          251           20.977        20.6          12.85         4.6 \r\n 2001          252           10.867        19.46         10.03         0 \r\n 2001          253           22.143        24.31         9.4           0 \r\n 2001          254           22.216        27.08         11.67         0 \r\n 2001          255           20.544        28.9          11.86         0 \r\n 2001          256           6.984         18.72         12.22         0 \r\n 2001          257           3.267         13.55         11.17         0.5 \r\n 2001          258           8.823         19.23         11.76         0 \r\n 2001          259           6.101         17.31         12.19         27.9 \r\n 2001          260           9.336         20.36         14.07         0.3 \r\n 2001          261           2.429         14.79         11.87         2.8 \r\n 2001          262           14.665        22.12         12.06         0 \r\n 2001          263           13.793        24.98         12.68         3.6 \r\n 2001          264           17.746        22.24         11.1          0 \r\n 2001          265           11.316        25.37         9.8           0 \r\n 2001          266           4.511         17.29         5.75          0 \r\n 2001          267           19.941        15.12         2.04          0 \r\n 2001          268           19.719        17.59         2.4           0 \r\n 2001          269           19.21         22.12         4.63          0 \r\n 2001          270           18.689        24.65         6.39          0 \r\n 2001          271           18.526        22.52         6.01          0 \r\n 2001          272           17.343        19.69         6.08          0 \r\n 2001          273           18.198        24.05         2.02          0 \r\n 2001          274           17.109        27.66         12.06         0 \r\n 2001          275           17.226        29.18         11.07         0 \r\n 2001          276           16.638        20.51         11.52         0 \r\n 2001          277           1.793         12.43         8.25          2 \r\n 2001          278           11.054        12.89        -1.13          0 \r\n 2001          279           16.73         14.31        -1.72          0 \r\n 2001          280           16.505        20.58         1.35          0 \r\n 2001          281           13.07         20.73         8.94          0 \r\n 2001          282           3.35          19.64         11.55         0.2 \r\n 2001          283           7.648         17.15         5.7           15.8 \r\n 2001          284           14.814        19.74         3.32          0 \r\n 2001          285           10.199        16.79         3.94          0 \r\n 2001          286           6.151         14.87         5.57          21.8 \r\n 2001          287           10.034        12.25         3.14          0 \r\n 2001          288           6.622         10.19         2.61          0 \r\n 2001          289           14.338        10.14        -0.1           0 \r\n 2001          290           14.66         17.32        -2.02          0 \r\n 2001          291           12.078        15.24         3.64          0 \r\n 2001          292           7.184         17.5          1.01          0 \r\n 2001          293           12.082        22.83         2.87          0 \r\n 2001          294           11.73         20.16         7.12          0 \r\n 2001          295           2.316         12.72         5.79          19.1 \r\n 2001          296           9.223         18.99         11.9          0.5 \r\n 2001          297           8.259         13.85         0.4           3 \r\n 2001          298           13.68         6.61         -2.55          0 \r\n 2001          299           13.221        4.95         -3.85          0 \r\n 2001          300           12.533        7.91         -6.85          0 \r\n 2001          301           12.658        20.85         0.59          0 \r\n 2001          302           10.738        15.9          3.99          0 \r\n 2001          303           2.338         13.57         5.47          2.5 \r\n 2001          304           5.098         17.77         10.24         0 \r\n 2001          305           11.692        22.69         8.13          0 \r\n 2001          306           12.483        17.94         0.9           0 \r\n 2001          307           10.041        22.7          3.31          0 \r\n 2001          308           11.927        20.32         5.55          0 \r\n 2001          309           11.496        21.13         2.71          0 \r\n 2001          310           10.912        23.81         8.8           0 \r\n 2001          311           10.704        25.09         9.26          0 \r\n 2001          312           9.782         10.84        -2.17          0 \r\n 2001          313           11.254        16.35        -4.3           0 \r\n 2001          314           11.032        16.11         2.49          0 \r\n 2001          315           10.789        14.55         0.37          0 \r\n 2001          316           8.445         17.63        -0.73          0 \r\n 2001          317           4.799         17.51         11.17         0.8 \r\n 2001          318           2.352         18.54         13.33         0 \r\n 2001          319           8.454         21.95         7.61          0 \r\n 2001          320           9.717         24.22         5.28          0 \r\n 2001          321           7.98          21.58         5.63          0 \r\n 2001          322           3.875         17.23         3.82          0 \r\n 2001          323           10.466        7.11         -3.41          2 \r\n 2001          324           7.928         12.61        -6.92          0 \r\n 2001          325           9.83          16.55        -0.95          0 \r\n 2001          326           8.82          16.27         2.66          0 \r\n 2001          327           1.031         12.11         6.3           9.7 \r\n 2001          328           3.786         13.65         3.46          10.4 \r\n 2001          329           1.34          4.84          2.5           1.3 \r\n 2001          330           1             8.85          2.02          12.2 \r\n 2001          331           2.403         3.71         -2.51          0 \r\n 2001          332           1.814        -0.66         -2.62          0 \r\n 2001          333           1.651         1.43         -1.83          0 \r\n 2001          334           1.282         2.25         -0.02          0 \r\n 2001          335           8.828         6.91         -1.29          0 \r\n 2001          336           7.03          12.1         -2.48          0 \r\n 2001          337           3.647         11.09        -1.89          0 \r\n 2001          338           1.5           15.24         8.9           0 \r\n 2001          339           2.937         18.43         0.4           2.8 \r\n 2001          340           8.604         9.72         -2.05          0 \r\n 2001          341           3.109         5.67         -2.02          0 \r\n 2001          342           8.822         2.76         -6             0 \r\n 2001          343           8.498         10.27        -5.68          0 \r\n 2001          344           8.403         9.81         -2.08          0 \r\n 2001          345           8.595         10.07        -4.7           0 \r\n 2001          346           1.301         6.13         -1.7           2.8 \r\n 2001          347           4.572        -0.07         -3.78          0 \r\n 2001          348           5.156         3.94         -4.77          0 \r\n 2001          349           6.172         8.59          1.52          0 \r\n 2001          350           1.173         7.75         -0.38          0 \r\n 2001          351           8.379         7.48         -5.8           0 \r\n 2001          352           6.518         8.38         -3.56          0 \r\n 2001          353           8.685         3.55         -6.61          0 \r\n 2001          354           8.397         8.39         -6.15          0 \r\n 2001          355           6.853         4.64         -7.49          0 \r\n 2001          356           1             6.73         -7.22          4.1 \r\n 2001          357           5.874        -4.65         -8.85          0 \r\n 2001          358           8.508        -5.84         -12.05         0 \r\n 2001          359           7.826        -7.84         -13.91         0 \r\n 2001          360           4.185        -4.88         -14.17         0 \r\n 2001          361           1.894        -2.82         -9.22          0 \r\n 2001          362           4.662        -4.56         -12.86         0 \r\n 2001          363           6.287        -9.6          -13.92         0 \r\n 2001          364           7.259        -6.52         -14.9          0 \r\n 2001          365           8.894        -6.69         -16.47         0 \r\n 2002          1             6.222        -8.45         -15.16         0 \r\n 2002          2             5.018        -6.1          -13.81         0 \r\n 2002          3             8.708        -1.12         -16.64         0 \r\n 2002          4             7.374         5.33         -6.94          0 \r\n 2002          5             4.604         6.37         -5.61          0 \r\n 2002          6             3.984        -0.5          -13.41         0 \r\n 2002          7             8.113         1.5          -16.47         0 \r\n 2002          8             8.201         17.66        -3.93          0 \r\n 2002          9             5.818         12.88         2.22          0 \r\n 2002          10            3.058         3.37         -1.32          0 \r\n 2002          11            9.179         12.16        -6.91          0 \r\n 2002          12            9.391         5.7          -4.73          0 \r\n 2002          13            4.574         10.73        -4.02          0 \r\n 2002          14            2.049         2.28         -3.52          0 \r\n 2002          15            3.109        -3.14         -5.93          0 \r\n 2002          16            4.084        -2.86         -10.91         0 \r\n 2002          17            8.808         0.76         -11.37         0 \r\n 2002          18            8.74         -4.6          -13.32         0 \r\n 2002          19            7.612         1.94         -8.86          0.2 \r\n 2002          20            9.363         7.19         -8.22          0 \r\n 2002          21            9.748         10.1         -8.9           0 \r\n 2002          22            8.731         14.56        -3.39          0 \r\n 2002          23            5.553         2.76         -8.24          0 \r\n 2002          24            10.638        8.05         -14.79         0 \r\n 2002          25            10.408        15.79        -7.04          0 \r\n 2002          26            10.788        19.48         1.09          0 \r\n 2002          27            7.571         14.28        -4.38          0 \r\n 2002          28            2.276        -1.51         -6.07          0 \r\n 2002          29            1.167        -3.15         -6.57          0 \r\n 2002          30            2.129        -3.19         -8.12          0 \r\n 2002          31            5.704        -3.18         -5.55          6.3 \r\n 2002          32            12.227       -5.5          -15.13         1.5 \r\n 2002          33            9.756         1.37         -15.14         0 \r\n 2002          34            12.05        -1.86         -14.75         0 \r\n 2002          35            12.916       -9.63         -20.83         0 \r\n 2002          36            12.24        -0.25         -14.29         0 \r\n 2002          37            9.888         0.15         -14.56         0 \r\n 2002          38            12.982        2.48         -7.7           0 \r\n 2002          39            11.502        4.27         -6.43          0 \r\n 2002          40            3.251         3.62          0.25          0.8 \r\n 2002          41            12.286        0.62         -7.32          15.8 \r\n 2002          42            11.172        4.48         -8.06          0 \r\n 2002          43            10.197        2.45         -5.01          0 \r\n 2002          44            13.796        6.55         -7.34          0 \r\n 2002          45            8.005         8.62         -0.26          0 \r\n 2002          46            12.121        7.6           0.03          0 \r\n 2002          47            13.858        8.2          -1.04          0 \r\n 2002          48            13.531        9.42         -3             0 \r\n 2002          49            5.631         13.81         0.32          0 \r\n 2002          50            1.178         9.98          2.87          6.9 \r\n 2002          51            2.099         2.88         -1.4           0.2 \r\n 2002          52            10.484        4.88         -4.14          0.2 \r\n 2002          53            12.72         5.89         -7.89          0 \r\n 2002          54            14.454        16.79         1.25          0 \r\n 2002          55            8.135         14.5         -2.42          0 \r\n 2002          56            14.279       -1.72         -10.96         0 \r\n 2002          57            12.073       -6.45         -13.03         0.8 \r\n 2002          58            16.906       -1.82         -14.74         0 \r\n 2002          59            15.003        2.57         -8.2           0 \r\n 2002          60            5.359        -7.34         -11.91         0 \r\n 2002          61            13.022       -8.47         -14.76         2.3 \r\n 2002          62            18.029       -14.74        -22.44         0 \r\n 2002          63            8.392         1.25         -22.66         0 \r\n 2002          64            15.031        11.25        -10.54         0 \r\n 2002          65            8.641         2.49         -5.15          0 \r\n 2002          66            2.951         4.38         -4.18          0 \r\n 2002          67            1.98          6.52         -0.25          0 \r\n 2002          68            15.033       -0.15         -10.32         5.3 \r\n 2002          69            18.502       -1.99         -14.06         0 \r\n 2002          70            10.421        7.37         -3.54          0 \r\n 2002          71            15.433        13.34        -6.09          0 \r\n 2002          72            11.381        7.79         -0.24          0 \r\n 2002          73            5.05          11.56         0.13          0 \r\n 2002          74            15.559        2.22         -3.33          0 \r\n 2002          75            18.57         7.44         -2.74          0 \r\n 2002          76            4.457         4.55         -1.41          0 \r\n 2002          77            17.546        9.7          -4.54          0 \r\n 2002          78            4.088         4.85          0.83          1.5 \r\n 2002          79            20.571        11.03        -4.82          0 \r\n 2002          80            18.321       -4.8          -11.52         0 \r\n 2002          81            21.658        3.33         -11.92         0 \r\n 2002          82            17.344        8.7          -5.37          0 \r\n 2002          83            5.217         2.71         -2.14          0 \r\n 2002          84            21.457        3.11         -6.9           0 \r\n 2002          85            21.938        6.7          -9.42          0 \r\n 2002          86            20.64         11.38        -3.34          0 \r\n 2002          87            20.472        15.4          3.93          0 \r\n 2002          88            19.045        15.13        -0.08          0 \r\n 2002          89            11.797        9.24         -0.56          0 \r\n 2002          90            21.582        9.38         -1.7           1 \r\n 2002          91            12.154        9.84         -3.64          0 \r\n 2002          92            9.778         3.81         -4.47          0 \r\n 2002          93            15.327        1.05         -7.55          0 \r\n 2002          94            23.249        7.1          -8.07          0 \r\n 2002          95            23.498        12.13        -7.52          0 \r\n 2002          96            19.682        14.05        -4.42          0 \r\n 2002          97            3.534         11.21         6.66          3.3 \r\n 2002          98            3.188         10.54         3.8           1.5 \r\n 2002          99            24.422        15.25        -1.61          0 \r\n 2002          100           20.707        24.64         4.53          0 \r\n 2002          101           4.24          17.76         6.73          15.2 \r\n 2002          102           13.478        14.84         4.67          0 \r\n 2002          103           17.074        16.82         0.77          0 \r\n 2002          104           21.445        25.6          7.35          0 \r\n 2002          105           24.388        31.71         12.66         0 \r\n 2002          106           17.807        28.99         17.44         4.3 \r\n 2002          107           25.633        24.41         10.68         0 \r\n 2002          108           16.631        30.76         11.27         0.5 \r\n 2002          109           14.009        12.99         5.62          0 \r\n 2002          110           7.455         11.9          5.25          14.2 \r\n 2002          111           5.215         5.41          1.36          4.6 \r\n 2002          112           19.273        11.62         0.97          0 \r\n 2002          113           23.777        22.63         5.2           0 \r\n 2002          114           18.634        15.72         1.6           3 \r\n 2002          115           24.758        12.42         1.03          0 \r\n 2002          116           18.133        13.15         0.86          0 \r\n 2002          117           1.722         12.43         4.7           38.4 \r\n 2002          118           6.446         7.13          2.38          0.3 \r\n 2002          119           26.56         19.49         1.69          0 \r\n 2002          120           7.269         14.02         7.79          0.8 \r\n 2002          121           12.639        14.38         3.64          11.4 \r\n 2002          122           26.951        14.45         1.09          0.3 \r\n 2002          123           27.275        19.42         2.97          0 \r\n 2002          124           20.642        20.19         4.52          0 \r\n 2002          125           24.646        27.4          6.75          1.8 \r\n 2002          126           22.419        27.45         11.34         0 \r\n 2002          127           19.47         22.93         8.68          0 \r\n 2002          128           20.221        27.99         8.97          0 \r\n 2002          129           25.743        14.24         2.99          0 \r\n 2002          130           22.104        19.34         1.7           0 \r\n 2002          131           2.267         14.46         8.12          66 \r\n 2002          132           6.902         9.66          5.33          0 \r\n 2002          133           27.121        20.07         4.25          0 \r\n 2002          134           28.895        20.9          5.41          0 \r\n 2002          135           15.343        22.73         11.63         3 \r\n 2002          136           9.157         18.39         9.81          4.8 \r\n 2002          137           24.013        15.23         5.9           0 \r\n 2002          138           28.612        15.76         3.57          0 \r\n 2002          139           29.483        17.1          3.53          0 \r\n 2002          140           29.534        15.68         2.8           0 \r\n 2002          141           29.673        17.59         2.24          0 \r\n 2002          142           20.189        23.85         8.44          0 \r\n 2002          143           17.313        21.38         8.44          5.8 \r\n 2002          144           22.836        18.15         5.1           2.3 \r\n 2002          145           18.565        19.17         8.27          16.8 \r\n 2002          146           27.748        25.22         10.79         0 \r\n 2002          147           24.309        26.43         13.36         0 \r\n 2002          148           24.363        28.02         15.66         0 \r\n 2002          149           13.884        27.23         18.13         0 \r\n 2002          150           25.814        32.75         16.98         0 \r\n 2002          151           25.269        30.53         16.27         0 \r\n 2002          152           27.769        33.28         18.23         0 \r\n 2002          153           8.077         25.27         15.39         13.7 \r\n 2002          154           14.648        27.46         14.75         0 \r\n 2002          155           9.385         17.89         12.5          0 \r\n 2002          156           24.149        23.03         11.08         0 \r\n 2002          157           29.152        25.69         10.54         0 \r\n 2002          158           28.208        28.66         14.72         0 \r\n 2002          159           24.208        29.92         17.78         0 \r\n 2002          160           25.53         30.64         17.83         0 \r\n 2002          161           9.841         26.99         20.93         0 \r\n 2002          162           19.412        27.42         18.59         21.1 \r\n 2002          163           20.084        27.88         18.77         35.8 \r\n 2002          164           28.54         22.67         12.5          0.3 \r\n 2002          165           23.88         23.66         11.96         0 \r\n 2002          166           26.116        24.86         13.24         0 \r\n 2002          167           30.121        26.02         11.18         0 \r\n 2002          168           16.466        25.62         14.59         0 \r\n 2002          169           23.979        28.35         17.83         0 \r\n 2002          170           22.531        29.06         21.19         0 \r\n 2002          171           22.812        30.71         17.91         0.3 \r\n 2002          172           23.259        30.62         22.07         0 \r\n 2002          173           26.148        31.47         20.76         0 \r\n 2002          174           28.389        30.94         19.22         0 \r\n 2002          175           27.891        30.61         17.08         0 \r\n 2002          176           27.891        32.12         18.4          0 \r\n 2002          177           25.4          32.98         19.74         0 \r\n 2002          178           26.651        29.73         17.61         0 \r\n 2002          179           27.088        30.05         16.35         0 \r\n 2002          180           27.196        33.77         18.61         0 \r\n 2002          181           28.152        33            22.84         0 \r\n 2002          182           28.14         31.99         21.94         0 \r\n 2002          183           27.006        31.44         18.36         0 \r\n 2002          184           23.826        31.66         18.67         0 \r\n 2002          185           21.017        32.34         20.82         14 \r\n 2002          186           23.424        30.88         20.37         0 \r\n 2002          187           15.422        32.07         19.5          27.4 \r\n 2002          188           21.303        29.7          19.05         0.3 \r\n 2002          189           26.204        33.34         22.16         0 \r\n 2002          190           25.472        30.76         21.02         0 \r\n 2002          191           16.821        27.31         18.74         78.5 \r\n 2002          192           5.821         19.86         15.87         1.8 \r\n 2002          193           23.496        25.51         15.98         0 \r\n 2002          194           29.371        26.18         14.58         0 \r\n 2002          195           29.269        27.51         14.18         0 \r\n 2002          196           28.02         28.63         14.43         0 \r\n 2002          197           27.468        30.11         16.21         0 \r\n 2002          198           25.566        32.04         17.95         0 \r\n 2002          199           17.181        31.57         19.84         0 \r\n 2002          200           16.329        30.31         20.66         0 \r\n 2002          201           25.964        35.15         22.62         0 \r\n 2002          202           26.574        34.24         22.25         0 \r\n 2002          203           17.687        28.51         16.29         0 \r\n 2002          204           25.988        26.06         13.73         0 \r\n 2002          205           21.973        26.48         15.07         0 \r\n 2002          206           23.369        29.58         18.74         0.5 \r\n 2002          207           17.31         30.65         19.16         9.9 \r\n 2002          208           19.912        32.42         19.72         1.3 \r\n 2002          209           16.929        31.68         21.53         0 \r\n 2002          210           26.838        30.33         19.58         0 \r\n 2002          211           26.668        33.41         18.51         0 \r\n 2002          212           26.128        32.81         20.69         0 \r\n 2002          213           22.999        30.41         15.24         0 \r\n 2002          214           26.941        25.58         11.48         0 \r\n 2002          215           23.517        31.98         14.12         0 \r\n 2002          216           15.862        28.66         20.59         65.8 \r\n 2002          217           13.269        28.28         20.92         37.6 \r\n 2002          218           11.169        24.32         17.22         5.3 \r\n 2002          219           25.819        25.42         15.71         0 \r\n 2002          220           24.09         25.93         14.42         0 \r\n 2002          221           24.176        26.88         15.04         0 \r\n 2002          222           22.162        28.63         16.78         0 \r\n 2002          223           24.044        32.34         18.56         0 \r\n 2002          224           15.772        27.29         15.78         5.3 \r\n 2002          225           8.513         21.46         13.41         1 \r\n 2002          226           25.814        27.52         11.93         0.5 \r\n 2002          227           20.895        27.26         14.43         0.3 \r\n 2002          228           15.726        24.66         11.84         0.3 \r\n 2002          229           21.397        23.1          11.82         0.3 \r\n 2002          230           16.709        21.61         8.48          0.3 \r\n 2002          231           24.882        24.29         12.96         0.5 \r\n 2002          232           19.051        25.76         12.14         0.5 \r\n 2002          233           11.199        28.59         20.51         0.3 \r\n 2002          234           13.953        27.77         19.94         0.3 \r\n 2002          235           16.998        26.31         18.76         0 \r\n 2002          236           17.89         26.71         17.58         0 \r\n 2002          237           21.442        28.39         17.53         0 \r\n 2002          238           22.01         29.77         17.75         0 \r\n 2002          239           20.157        27.89         16.74         0 \r\n 2002          240           22.19         27.85         16.83         0 \r\n 2002          241           20.221        27.62         16.31         0 \r\n 2002          242           20.377        26.81         15.48         0 \r\n 2002          243           21.231        28.56         16.16         0 \r\n 2002          244           19.44         30.79         17.22         0 \r\n 2002          245           20.92         31.98         15.68         0 \r\n 2002          246           23.148        28.9          10.78         0 \r\n 2002          247           21.681        28.83         13.11         0 \r\n 2002          248           20.637        30.8          14.53         0 \r\n 2002          249           20.115        33.21         16.56         0 \r\n 2002          250           20.946        33.1          18.04         0 \r\n 2002          251           20.055        33.24         16.07         1 \r\n 2002          252           19.453        32.32         17.89         0 \r\n 2002          253           9.245         22.93         12.3          0 \r\n 2002          254           20.271        24.72         10.52         0 \r\n 2002          255           19.052        25.36         9.52          0 \r\n 2002          256           10.929        24.18         13.29         0 \r\n 2002          257           4.827         21.24         11.77         1.5 \r\n 2002          258           21.378        22.71         8.45          0 \r\n 2002          259           20.825        28            6.65          0 \r\n 2002          260           13.828        26.04         11.37         0 \r\n 2002          261           6.959         27.08         17.82         24.6 \r\n 2002          262           6.409         19.26         14.74         2.3 \r\n 2002          263           16.337        23.85         11.51         0 \r\n 2002          264           9.112         18.31         9.9           0 \r\n 2002          265           19.771        17.49         5.58          0 \r\n 2002          266           19.014        17.5          3.12          0 \r\n 2002          267           18.827        19.34         2.74          0 \r\n 2002          268           8.357         23.93         11.52         0 \r\n 2002          269           13.846        18.43         9.51          0 \r\n 2002          270           7.793         17.42         8.76          1.8 \r\n 2002          271           8.492         21.07         6.07          0.8 \r\n 2002          272           13.74         31.37         13.23         0 \r\n 2002          273           16.565        31.58         18.44         0 \r\n 2002          274           6.8           23.2          16.35         18.3 \r\n 2002          275           1.461         17.27         8.54          18.3 \r\n 2002          276           2.066         17.1          9.35          0.8 \r\n 2002          277           6.071         19.86         3.56          10.4 \r\n 2002          278           11.612        18.99         2.48          0 \r\n 2002          279           12.159        14.25         1.9           0 \r\n 2002          280           16.394        16.6         -1.63          0 \r\n 2002          281           13.027        20.75         6.72          0 \r\n 2002          282           15.18         19.53         5.04          0.8 \r\n 2002          283           14.325        23.79         10.59         1.3 \r\n 2002          284           15.181        24.17         7.46          0 \r\n 2002          285           6.853         16.92         1.47          0.5 \r\n 2002          286           15.781        14.76        -2.35          0 \r\n 2002          287           15.493        16.88         2.42          0 \r\n 2002          288           14.351        11.57        -1.6           0 \r\n 2002          289           9.007         8.24         -2.18          0 \r\n 2002          290           6.716         9.19          2.1           2.8 \r\n 2002          291           7.67          17.16         3.07          0 \r\n 2002          292           11.619        6.99         -2.81          0 \r\n 2002          293           11.599        11.96        -5.55          0 \r\n 2002          294           3.734         8.72          1.09          1.8 \r\n 2002          295           7.195         5.47         -1.81          0 \r\n 2002          296           4.011         2.08         -1.7           0.8 \r\n 2002          297           2.552         3.86         -0.2           7.1 \r\n 2002          298           2.54          7.02          3.6           8.9 \r\n 2002          299           11.99         9.92          0.18          0 \r\n 2002          300           1.509         3.1          -1.12          1 \r\n 2002          301           2.322         5            -0.02          5.1 \r\n 2002          302           2.485         7             3.82          1.5 \r\n 2002          303           4.53          5.92         -0.34          0 \r\n 2002          304           7.948         0.84         -5.67          0 \r\n 2002          305           12.735        3.52         -7.46          0 \r\n 2002          306           11.044        7.15         -7.18          0 \r\n 2002          307           4.874         7.07         -2.59          0 \r\n 2002          308           3.183        -0.66         -3.27          0 \r\n 2002          309           4.141         3.14         -1.7           3.3 \r\n 2002          310           9.449         11.28        -0.86          0 \r\n 2002          311           11.567        19.86        -2.04          0 \r\n 2002          312           7.447         16.32         2.73          0 \r\n 2002          313           5.646         17.62         2.93          0 \r\n 2002          314           5.666         9.57         -2.2           0 \r\n 2002          315           2.808        -0.34         -6.69          1 \r\n 2002          316           10.672        14.58        -7.11          0 \r\n 2002          317           5.403         15.2         -2.42          0 \r\n 2002          318           1.748         5.76         -3.74          1.3 \r\n 2002          319           4.846         0.91         -5.03          0 \r\n 2002          320           6.83          1.55         -5.21          0 \r\n 2002          321           8.204         4.25         -7.61          0 \r\n 2002          322           4.485         9.47         -1.76          0 \r\n 2002          323           6.434         12.54        -2.58          0 \r\n 2002          324           8.978         14.12        -0.64          0 \r\n 2002          325           5.928         6.46         -1.21          0 \r\n 2002          326           9.393         5.09         -6.09          0 \r\n 2002          327           9.223         8.21         -3.27          0 \r\n 2002          328           2.854         2.47         -6.49          0 \r\n 2002          329           8.85         -0.3          -10.66         0 \r\n 2002          330           6.703        -0.48         -10.06         0 \r\n 2002          331           4.685        -2.7          -11.2          0 \r\n 2002          332           8.731         7.11         -10.38         0 \r\n 2002          333           5.468         9.45         -3.83          0 \r\n 2002          334           8.863        -3.12         -13.22         0 \r\n 2002          335           8.587         10.37        -12.56         0 \r\n 2002          336           6.41          0.93         -12.06         0 \r\n 2002          337           6.573        -4.11         -14.01         0 \r\n 2002          338           3.549        -3.06         -10.51         0 \r\n 2002          339           8.376        -4.78         -12.66         0 \r\n 2002          340           8.477         8.71         -14.24         0 \r\n 2002          341           8.463         6.17         -6.51          0 \r\n 2002          342           8.564        -1.04         -9.65          0 \r\n 2002          343           8.172         5.75         -14.06         0 \r\n 2002          344           6.476         7.14         -7.16          0 \r\n 2002          345           1.534         4.01         -0.08          0 \r\n 2002          346           4.03          6.32         -2.44          0 \r\n 2002          347           8.009         8.88         -6.93          0 \r\n 2002          348           7.823         11.96        -7.91          0 \r\n 2002          349           5.72          12.67        -4.57          0 \r\n 2002          350           1.984         1.51         -1.83          0 \r\n 2002          351           1             5.24         -1.04          0 \r\n 2002          352           2.947         8.82          0.63          0 \r\n 2002          353           2.23          3.51         -5.13          0 \r\n 2002          354           2.674         0.91         -2.23          0 \r\n 2002          355           7.771         1.19         -6.18          0 \r\n 2002          356           7.897        -0.11         -7.04          0 \r\n 2002          357           7.192        -1.06         -8.46          0 \r\n 2002          358           4.045        -6.41         -10.55         0 \r\n 2002          359           4.641        -2.8          -11.43         0 \r\n 2002          360           7.481         5.75         -12.25         0 \r\n 2002          361           5.583         5.45         -6.48          0 \r\n 2002          362           6.546         13.89        -5.79          0 \r\n 2002          363           5.772         8.24         -3.96          0 \r\n 2002          364           6.83          7.66         -5.66          0 \r\n 2002          365           8.248         3.9          -9.89          0 \r\n 2003          1             3.17         -1.24         -5.42          0 \r\n 2003          2             5.874        -0.22         -9.67          0 \r\n 2003          3             8.208         3.67         -13.07         0 \r\n 2003          4             3.368         7.62         -6.04          1 \r\n 2003          5             1.792         1.52         -2.77          0 \r\n 2003          6             6.675         0.13         -7.54          0 \r\n 2003          7             7.842         15.58        -6.31          0 \r\n 2003          8             8.235         16.73        -0.77          0 \r\n 2003          9             8.066         5.18         -6.95          0 \r\n 2003          10            8.55         -5.04         -13.81         0 \r\n 2003          11            7.551        -6.49         -17.41         0 \r\n 2003          12            8.874         6.4          -16.85         0 \r\n 2003          13            4.893        -6.51         -13.44         0 \r\n 2003          14            9.341        -4.55         -15.19         0 \r\n 2003          15            4.411        -6.7          -17.45         0 \r\n 2003          16            7.909        -2.9          -13.68         1 \r\n 2003          17            9.739        -10.29        -18.51         0 \r\n 2003          18            9.389        -7.56         -17.18         0 \r\n 2003          19            3.459         1.25         -18.28         0 \r\n 2003          20            2.411        -7.3          -10.85         0 \r\n 2003          21            7.109        -9.26         -17.46         0 \r\n 2003          22            6.639        -11.23        -20.28         0 \r\n 2003          23            10.483       -13.7         -23.21         0 \r\n 2003          24            3.583        -7.27         -18.58         0 \r\n 2003          25            5.366        -3.63         -14.8          0.5 \r\n 2003          26            10.763       -12.57        -21.41         0 \r\n 2003          27            8.907        -1.9          -14.43         1.3 \r\n 2003          28            1.866        -0.08         -5.53          3 \r\n 2003          29            7.215        -4.15         -13.62         0 \r\n 2003          30            6.301         3.15         -7.78          0 \r\n 2003          31            2.437         2.38         -0.03          0.5 \r\n 2003          32            8.16          8.85         -2.85          0 \r\n 2003          33            4.994         5.64         -1.22          0 \r\n 2003          34            1.313         1.82         -10.27         1.8 \r\n 2003          35            11.664       -7.68         -14.85         0 \r\n 2003          36            6.895        -2.51         -14.67         0 \r\n 2003          37            11.879       -4.78         -19.68         0 \r\n 2003          38            12.838       -7.47         -24.54         0 \r\n 2003          39            7.684        -3.28         -16.58         0 \r\n 2003          40            7.469        -3.45         -18.94         0 \r\n 2003          41            12.271       -3.4          -15.55         0 \r\n 2003          42            9.122         3.73         -16.04         0 \r\n 2003          43            13.456        0.89         -17.86         0 \r\n 2003          44            13.207        9.36         -10.87         0 \r\n 2003          45            1.153         0.82         -3.87          4.1 \r\n 2003          46            7.254        -3.65         -14.18         6.1 \r\n 2003          47            11.634       -6.4          -18.05         0 \r\n 2003          48            10.993       -1.7          -20.1          0 \r\n 2003          49            13.438        5.23         -7.78          0 \r\n 2003          50            14.517        3.2          -11.82         0 \r\n 2003          51            14.713        8.62         -1.97          0 \r\n 2003          52            11.76         8.58         -2.44          0 \r\n 2003          53            5.109        -2.44         -7.61          0 \r\n 2003          54            7.174        -7.59         -14.67         0 \r\n 2003          55            15.253       -13.52        -20.41         0.8 \r\n 2003          56            9.295        -10.82        -21.72         0 \r\n 2003          57            15.907       -3.6          -18.32         0 \r\n 2003          58            15.682        1.86         -12.38         0 \r\n 2003          59            14.27         3.4          -6.24          0 \r\n 2003          60            3.16          0.44         -6.53          0.2 \r\n 2003          61            17.063       -6.53         -17.71         0 \r\n 2003          62            9.697         2.36         -11.23         0.5 \r\n 2003          63            4.411        -4.36         -13.97         1.3 \r\n 2003          64            15.436       -10.03        -17.58         1.3 \r\n 2003          65            15.676       -1.53         -17.94         0.2 \r\n 2003          66            17.552       -0.81         -9.43          0 \r\n 2003          67            9.295        -5.77         -16.95         0 \r\n 2003          68            17.828       -9.4          -17.59         0 \r\n 2003          69            12.004       -4.3          -14.44         0 \r\n 2003          70            16.25         11.2         -11.48         0 \r\n 2003          71            7.93          6.02         -2.89          0 \r\n 2003          72            10.664        5.71         -1.33          0 \r\n 2003          73            16.263        13.17        -0.55          0 \r\n 2003          74            18.425        23.23         0.85          0 \r\n 2003          75            17.298        23.52         5             0 \r\n 2003          76            15.81         22.6          5.45          0 \r\n 2003          77            8.096         16.79         6.69          0 \r\n 2003          78            1.381         7             2.5           9.7 \r\n 2003          79            3.88          5.81          0.1           4.6 \r\n 2003          80            8.297         7.63         -1.19          0 \r\n 2003          81            20.899        14.52        -1.61          0 \r\n 2003          82            18.684        22.12         0.5           0 \r\n 2003          83            12.734        17.89         5.12          0 \r\n 2003          84            21.129        15.49         1.53          0 \r\n 2003          85            10.21         13.3          1.9           0 \r\n 2003          86            2.316         11.7          2.64          5.6 \r\n 2003          87            5.079         3.83         -0.55          5.8 \r\n 2003          88            16.093        5.83         -2.46          0 \r\n 2003          89            19.384        9.45         -5.4           0 \r\n 2003          90            13.701        22.73        -1.7           0 \r\n 2003          91            21.777        30.41         7.81          0 \r\n 2003          92            20.981        27.64         9.55          0 \r\n 2003          93            9.531         25            2.3           0 \r\n 2003          94            4.786         2.32         -3.51          1.8 \r\n 2003          95            15.019       -1.58         -4.41          2.3 \r\n 2003          96            8.56          4.44         -3.62          12.2 \r\n 2003          97            13.561       -0.97         -2.81          0 \r\n 2003          98            23.63         1.78         -5.14          0 \r\n 2003          99            24.463        10.26        -6.17          0 \r\n 2003          100           25.644        18.85         0             0 \r\n 2003          101           23.836        22.7          0             0 \r\n 2003          102           24.719        21.58         3.83          0 \r\n 2003          103           22.918        25.4          4.29          0 \r\n 2003          104           22.208        30.99         11.91         0 \r\n 2003          105           19.078        28.36         15.05         0 \r\n 2003          106           10.209        19.2          4.76          0.3 \r\n 2003          107           8.897         8.78          3.13          0 \r\n 2003          108           4.135         9.83          4.38          0.5 \r\n 2003          109           3.522         11.58         7.24          5.3 \r\n 2003          110           5.649         9.62          6.2           0 \r\n 2003          111           19.826        16.77         6.26          0 \r\n 2003          112           26.172        19.57         1.65          0 \r\n 2003          113           21.285        19.01         5.59          13.3 \r\n 2003          114           2.549         12.29         7.49          0 \r\n 2003          115           25.288        20.84         6.54          0 \r\n 2003          116           25.651        23.09         4.63          0 \r\n 2003          117           18.501        24.73         6.92          0 \r\n 2003          118           22.264        21.64         9.32          0 \r\n 2003          119           9.603         14.52         6.84          41.5 \r\n 2003          120           4.573         12.87         8.98          3.7 \r\n 2003          121           18.779        18.41         8.06          0 \r\n 2003          122           18.763        19.06         10.56         3.5 \r\n 2003          123           24.676        19.18         9.45          32.8 \r\n 2003          124           1.157         12.83         8.47          12.8 \r\n 2003          125           11.501        14.81         7.89          0 \r\n 2003          126           19.518        19.61         6.9           9.9 \r\n 2003          127           21.528        20.17         8.43          4.9 \r\n 2003          128           5.058         13.31         7.64          24.9 \r\n 2003          129           23.908        20.78         10.58         0 \r\n 2003          130           5.444         16.22         6.49          0 \r\n 2003          131           8.233         13.08         6.03          0 \r\n 2003          132           27.918        19.43         6.5           2.7 \r\n 2003          133           19.128        21.2          10.13         18.6 \r\n 2003          134           21.69         22.81         11.12         3 \r\n 2003          135           10.738        17.99         10.19         0 \r\n 2003          136           23.383        20.51         7.07          0 \r\n 2003          137           27.31         22.79         9.11          0 \r\n 2003          138           20.679        23.82         12.35         0 \r\n 2003          139           5.648         20.66         9.6           0 \r\n 2003          140           29.367        16.07         5.54          0 \r\n 2003          141           24.012        18.65         4.04          0 \r\n 2003          142           19.045        20.94         6.08          0 \r\n 2003          143           24.594        19.83         10.73         0 \r\n 2003          144           8.765         18.02         10.48         0 \r\n 2003          145           26.761        23.91         8.33          0 \r\n 2003          146           25.506        25.73         9.5           0 \r\n 2003          147           26.636        27.37         9.84          0 \r\n 2003          148           26.484        26.5          15.66         0 \r\n 2003          149           22.402        26.21         12.68         0 \r\n 2003          150           26.814        30.67         13.79         0 \r\n 2003          151           27.011        22.3          11.19         0 \r\n 2003          152           13.795        22.23         13.02         7.8 \r\n 2003          153           3.366         14.49         9.92          7 \r\n 2003          154           12.009        17.66         9.67          0 \r\n 2003          155           26.269        22.45         10.57         0 \r\n 2003          156           21.793        23.13         9.98          18.9 \r\n 2003          157           17.749        20.25         11.68         0 \r\n 2003          158           15.387        20.62         10.35         10.3 \r\n 2003          159           15.425        20.78         11.12         0 \r\n 2003          160           27.911        24.95         11.53         0 \r\n 2003          161           19.17         24.86         14.8          0 \r\n 2003          162           22.376        24.72         12.49         0 \r\n 2003          163           14.614        23.34         15.4          0 \r\n 2003          164           28.262        28.52         15.18         0 \r\n 2003          165           25.518        29.78         16.93         0 \r\n 2003          166           24.755        29.29         16.53         0 \r\n 2003          167           25.596        30.09         18.1          0 \r\n 2003          168           19.881        29.89         16.44         0 \r\n 2003          169           17.465        29.49         19.33         0 \r\n 2003          170           29.492        25.94         14.62         0 \r\n 2003          171           30.419        25.43         10.84         0 \r\n 2003          172           25.873        27.45         12.81         0 \r\n 2003          173           19.423        29.87         16.2          0 \r\n 2003          174           23.69         31.32         21.4          0 \r\n 2003          175           23.5          33.53         18.74         53.2 \r\n 2003          176           2.267         25.93         14.79         7 \r\n 2003          177           26.872        22.22         11.17         0 \r\n 2003          178           27.333        28.53         11.98         30 \r\n 2003          179           27.817        26.65         15.25         0 \r\n 2003          180           25.768        26.59         15.78         0 \r\n 2003          181           29.691        28.22         14.67         0 \r\n 2003          182           25.593        28.63         16.87         0 \r\n 2003          183           27.252        30.71         17.52         0 \r\n 2003          184           27.108        34.21         21.83         0 \r\n 2003          185           17.378        29.36         17.82         44.5 \r\n 2003          186           25.171        28.63         17.36         8.4 \r\n 2003          187           24.09         30.14         18.22         0 \r\n 2003          188           24.776        30.09         20.69         14.2 \r\n 2003          189           11.897        22.92         16.27         61.8 \r\n 2003          190           16.567        27.07         18.89         0 \r\n 2003          191           23.398        24            16.28         0 \r\n 2003          192           27.377        26.46         14.36         0 \r\n 2003          193           25.98         25.82         15.12         0 \r\n 2003          194           27.198        27.24         15.4          0 \r\n 2003          195           23.005        30.22         17.22         1.5 \r\n 2003          196           28.509        28.02         17.14         0 \r\n 2003          197           20.789        28.84         15.57         0.3 \r\n 2003          198           24.93         31.85         18.28         0 \r\n 2003          199           17.841        25.79         17.43         0 \r\n 2003          200           21.36         25.97         14.58         0 \r\n 2003          201           14.075        28.45         18.56         0 \r\n 2003          202           23.493        24.92         16.63         0 \r\n 2003          203           23.725        23.17         13.57         0 \r\n 2003          204           25.506        25            11.71         0 \r\n 2003          205           23.692        26.61         11.75         0 \r\n 2003          206           25.026        30.96         15.69         0 \r\n 2003          207           24.592        33.1          22.79         0 \r\n 2003          208           10.755        26.66         20.12         26.9 \r\n 2003          209           24.252        27.52         18.25         0 \r\n 2003          210           25.729        28.32         15.92         0 \r\n 2003          211           20.834        28.01         18.23         1.3 \r\n 2003          212           22.935        28.26         16.8          0 \r\n 2003          213           22.714        28.01         17.21         0 \r\n 2003          214           24.167        26.8          15.24         0 \r\n 2003          215           23.208        26.76         15.51         0 \r\n 2003          216           22.945        26.99         14.47         0 \r\n 2003          217           10.552        22.13         16.93         4.8 \r\n 2003          218           20.75         26.92         17.54         0 \r\n 2003          219           23.883        28.18         16.86         0 \r\n 2003          220           25            27.28         15.87         0 \r\n 2003          221           22.507        27.33         14.39         0 \r\n 2003          222           15.966        27.52         15.53         4.6 \r\n 2003          223           22.942        27.95         16.07         0 \r\n 2003          224           20            25.32         14.74         0 \r\n 2003          225           21.385        27            14.87         0 \r\n 2003          226           18.635        27.88         16.28         0 \r\n 2003          227           22.649        31.07         17.65         0 \r\n 2003          228           22.723        33.61         18.36         0 \r\n 2003          229           22.623        33.73         19.9          0 \r\n 2003          230           20.292        33.47         21.97         0 \r\n 2003          231           19.129        30.95         21.04         0 \r\n 2003          232           19.382        33.51         20.75         0.3 \r\n 2003          233           21.683        28.68         17.37         0 \r\n 2003          234           21.75         26.58         14.25         0 \r\n 2003          235           20.634        28.49         15.7          0 \r\n 2003          236           21.653        35.89         16.82         0 \r\n 2003          237           20.868        36.09         19.22         0 \r\n 2003          238           20.569        32.76         19.96         12.2 \r\n 2003          239           22.946        32.21         16.65         0 \r\n 2003          240           16.216        30.25         20.45         0 \r\n 2003          241           21.072        28.65         16.42         0 \r\n 2003          242           14.581        22.95         13.45         0 \r\n 2003          243           7.876         19.41         13.43         0 \r\n 2003          244           21.841        24.48         11.03         0 \r\n 2003          245           21.612        27.17         11.2          0 \r\n 2003          246           21.832        24.4          12.9          0 \r\n 2003          247           21.867        24.6          10.02         0 \r\n 2003          248           21.583        28.89         9.28          0 \r\n 2003          249           20.686        30.64         12.74         0 \r\n 2003          250           20.727        30.32         12.9          0 \r\n 2003          251           21.228        28.82         13.36         0 \r\n 2003          252           15.851        28.47         12.17         0 \r\n 2003          253           16.528        29.97         16.48         0 \r\n 2003          254           7.325         27.92         16.43         37.6 \r\n 2003          255           18.827        23.95         13.53         0.3 \r\n 2003          256           5.376         18.63         13.46         0.3 \r\n 2003          257           18.692        20.85         10.46         0.3 \r\n 2003          258           20.519        25.34         6.96          0 \r\n 2003          259           19.26         27.67         10.65         0 \r\n 2003          260           18.108        28.27         16.44         0 \r\n 2003          261           4.854         22.77         8.71          10.7 \r\n 2003          262           20.161        18.06         3.97          0 \r\n 2003          263           18.04         21.32         4.39          0 \r\n 2003          264           3.123         14.16         9.63          36.6 \r\n 2003          265           12.35         17.81         5.27          0.3 \r\n 2003          266           15.238        24.19         3.68          0 \r\n 2003          267           18.665        19.22         4.85          0 \r\n 2003          268           17.768        16.72         2.57          0 \r\n 2003          269           6.035         18.97         6.54          1.5 \r\n 2003          270           10.148        14.44         5.72          0 \r\n 2003          271           16.806        14.25         3.31          0 \r\n 2003          272           15.784        17.49         0.09          0 \r\n 2003          273           12.3          16.4         -0.97          0 \r\n 2003          274           17.821        12.19        -0.32          0 \r\n 2003          275           16.967        15.18        -1.26          0 \r\n 2003          276           13.946        20.33         6.82          0 \r\n 2003          277           15.805        24.6          3.23          0 \r\n 2003          278           16.131        25.18         6.82          0 \r\n 2003          279           16.012        28.43         7.45          0 \r\n 2003          280           15.926        27.11         9.14          0 \r\n 2003          281           14.388        26.55         10.57         0 \r\n 2003          282           13.442        26.23         12.83         0 \r\n 2003          283           12.83         23.12         11.48         0 \r\n 2003          284           4.68          20.26         6.1           8.1 \r\n 2003          285           15.635        20.43         4.81          0 \r\n 2003          286           7.075         17.78         4.75          0 \r\n 2003          287           15.023        17.3          6.61          8.1 \r\n 2003          288           9.334         14.37         1.5           0 \r\n 2003          289           4.812         9.04          0.5           0 \r\n 2003          290           12.957        16.23        -0.34          0 \r\n 2003          291           14.11         27.67         6.62          0 \r\n 2003          292           13.88         29.28         8.12          0 \r\n 2003          293           13.205        30.29         11.83         0 \r\n 2003          294           10.007        22.61         7.54          0 \r\n 2003          295           13.088        23.75         3.64          0 \r\n 2003          296           13.017        17.25         5.11          0 \r\n 2003          297           4.031         15.12         4.53          1.3 \r\n 2003          298           10.596        11.54         1.42          0 \r\n 2003          299           7.454         5.25         -3.24          0 \r\n 2003          300           8.862         10.39        -2.95          0 \r\n 2003          301           5.769         8.99          2.17          6.3 \r\n 2003          302           6.464         8.67         -1.45          0 \r\n 2003          303           8.883         16.49         2.14          0 \r\n 2003          304           6.706         8.12          0.15          0 \r\n 2003          305           2.634         2.9          -1.59          0 \r\n 2003          306           1.993         5.12          1.9           7.4 \r\n 2003          307           1.045         5.31          1.23          35.8 \r\n 2003          308           3.369         5.95         -0.37          48 \r\n 2003          309           3.977        -0.27         -3.17          0 \r\n 2003          310           11.498        3.06         -7.99          0 \r\n 2003          311           9.663         0.87         -9.57          0 \r\n 2003          312           8.785        -0.34         -11.32         0 \r\n 2003          313           9.863         7.28         -9.02          0 \r\n 2003          314           2.105         8.45         -1.92          0.5 \r\n 2003          315           8.232         13.4          1.44          0 \r\n 2003          316           6.396         8.05         -1.23          0 \r\n 2003          317           10.812        5.26         -5.05          0 \r\n 2003          318           4.084         9.47         -0.8           0 \r\n 2003          319           1.417         8.31          0.65          0 \r\n 2003          320           8.26          11.8          2.45          0 \r\n 2003          321           1.523         11.88         2.44          8.4 \r\n 2003          322           9.79          12.39         1.21          5.6 \r\n 2003          323           9.719         16            0.3           0 \r\n 2003          324           9.279         19.56         1.62          0 \r\n 2003          325           6.518         5.25         -2.04          0 \r\n 2003          326           1             2.29         -0.14          0 \r\n 2003          327           1.709         1.53         -8.64          3.8 \r\n 2003          328           9.476        -2.63         -11.47         0 \r\n 2003          329           8.713         6.82         -4.2           0 \r\n 2003          330           3.03          3.39         -6.43          0 \r\n 2003          331           9.091         4.41         -4.17          0 \r\n 2003          332           4.593        -1.39         -11.76         0 \r\n 2003          333           7.84          8.79         -12.04         0 \r\n 2003          334           8.341         16.65        -3.71          0 \r\n 2003          335           8.836         7.8          -3.91          0 \r\n 2003          336           2.636         2.76         -1.74          0 \r\n 2003          337           5.657        -0.11         -3.22          14.2 \r\n 2003          338           3.913        -0.16         -2.91          0 \r\n 2003          339           5.945        -1.08         -4.85          2.5 \r\n 2003          340           4.316        -2.62         -5.9           0 \r\n 2003          341           5.224         2.21         -5.62          0 \r\n 2003          342           7.824         4.76         -2.02          0 \r\n 2003          343           1             0.89         -6.07          4.1 \r\n 2003          344           8.066        -6.07         -12.91         5.6 \r\n 2003          345           8.149        -11.29        -15.45         0 \r\n 2003          346           8.555        -7.71         -13.87         0 \r\n 2003          347           4.814        -3.93         -13.27         1.3 \r\n 2003          348           3.458        -2.92         -5.03          0 \r\n 2003          349           5.279         1.41         -2.92          0 \r\n 2003          350           6.741        -1.51         -8.09          0 \r\n 2003          351           4.97          1.9          -12.41         0 \r\n 2003          352           6.819         2.22         -4.58          0 \r\n 2003          353           8.375         2.3          -10.58         0 \r\n 2003          354           7.964         2.9          -9.4           0 \r\n 2003          355           7.704         5.95         -0.79          0 \r\n 2003          356           4.229         3.8          -2.97          0 \r\n 2003          357           5.43          3.53         -7.59          0 \r\n 2003          358           7.29         -1.72         -10.81         0 \r\n 2003          359           7.65          4.2          -7.78          0 \r\n 2003          360           5.183         5.49         -2.53          0 \r\n 2003          361           3.772         10.63         2.51          0 \r\n 2003          362           7.829         5.29         -3.14          3 \r\n 2003          363           3.377        -0.75         -8.56          0 \r\n 2003          364           7.965         6.33         -7.78          0 \r\n 2003          365           8.19          1.7          -7.62          0 \r\n 2004          1             4.169         11.38        -4.92          0 \r\n 2004          2             3.107         12.09        -3.47          0 \r\n 2004          3             2.285        -0.08         -8.41          0 \r\n 2004          4             2.919        -12.34        -12.77         1.5 \r\n 2004          5             8.369        -14.8         -20            0 \r\n 2004          6             8.806        -8.26         -20.34         0 \r\n 2004          7             6.637        -3.12         -16.92         0 \r\n 2004          8             3.912        -1.32         -9.39          0 \r\n 2004          9             6.084        -4.33         -12.79         0.5 \r\n 2004          10            5.326        -2.52         -10.46         0 \r\n 2004          11            7.956         7.86         -4.64          0 \r\n 2004          12            8.645         5.79         -5.34          0 \r\n 2004          13            8.648         0.63         -5.38          0 \r\n 2004          14            5.556         3.87         -9.17          0 \r\n 2004          15            7.972         2.08         -12.04         0 \r\n 2004          16            3.943         3.11         -3.41          0 \r\n 2004          17            1.948         0.92         -5.45          8.9 \r\n 2004          18            9.277        -6.88         -17.49         0 \r\n 2004          19            8.041        -9.21         -18.28         0 \r\n 2004          20            3.018        -6.11         -12.12         0 \r\n 2004          21            7.753         5.05         -11.68         0 \r\n 2004          22            10.506       -8.7          -19.22         0 \r\n 2004          23            5.946         9.24         -8.86          0 \r\n 2004          24            8.924        -4.34         -11.71         0 \r\n 2004          25            4.829        -3.04         -9.53          0 \r\n 2004          26            5.036        -6.27         -21.12         6.3 \r\n 2004          27            8.88         -16.66        -24.88         1.3 \r\n 2004          28            6.521        -18.21        -22.57         0 \r\n 2004          29            6.846        -19.34        -24.67         0 \r\n 2004          30            10.049       -19.27        -24.68         0.8 \r\n 2004          31            7.39         -11.1         -23.47         0 \r\n 2004          32            4.253        -5.42         -11.86         6.1 \r\n 2004          33            5.323        -3.74         -13.69         9.4 \r\n 2004          34            12.616       -13.16        -20.76         0 \r\n 2004          35            7.471        -7.42         -20.17         0 \r\n 2004          36            4.815        -4.07         -8.94          2.8 \r\n 2004          37            8.888        -5.17         -12.45         4.3 \r\n 2004          38            11.931       -11.7         -20.48         0 \r\n 2004          39            11.006       -0.69         -21.75         0 \r\n 2004          40            11.718       -1.6          -7.87          0 \r\n 2004          41            13.609       -3.44         -12.29         0 \r\n 2004          42            13.005       -2.45         -10.53         0 \r\n 2004          43            2.987        -8.72         -17            0 \r\n 2004          44            13.657       -1.02         -17.67         0 \r\n 2004          45            2.143        -4.79         -15.78         0 \r\n 2004          46            14.611       -7.64         -20.01         0 \r\n 2004          47            12.548       -2.45         -15.09         0 \r\n 2004          48            11.604       -2.82         -12.55         0 \r\n 2004          49            14.01         6.05         -6.67          0 \r\n 2004          50            9.28          6.77         -2.22          0 \r\n 2004          51            4.777         2.57         -0.31          9.7 \r\n 2004          52            14.561        3.95         -1.99          0 \r\n 2004          53            7.267         6.27         -0.79          3.6 \r\n 2004          54            3.692         1.38         -1.13          0 \r\n 2004          55            3.912         1.18         -0.5           0 \r\n 2004          56            5.777         3.3          -2.64          0 \r\n 2004          57            16.018        6.45         -3.85          0 \r\n 2004          58            14.224        7.82         -1.95          0 \r\n 2004          59            11.574        11.79         1.04          0 \r\n 2004          60            9.987         12.88         2.2           0 \r\n 2004          61            4.229         10.29         1.96          7.4 \r\n 2004          62            3.407         3.37          0.18          0 \r\n 2004          63            3.036         3.18         -0.03          1 \r\n 2004          64            1.865         4.18          0.98          0.5 \r\n 2004          65            5.188         7.17          0.38          20.8 \r\n 2004          66            14.945        11.85        -0.7           0 \r\n 2004          67            13.317        5.54         -0.73          0 \r\n 2004          68            13.892        12.81        -2.94          0 \r\n 2004          69            14.615        8.18         -0.57          0 \r\n 2004          70            11.57         12.33        -0.65          0 \r\n 2004          71            15.834        1.25         -6.37          0 \r\n 2004          72            18.997        5.64         -7.59          0 \r\n 2004          73            6.484         12.11        -0.51          0 \r\n 2004          74            16.803        7.72         -0.56          0.8 \r\n 2004          75            5.022         0.44         -2.57          9.1 \r\n 2004          76            14.29         0.45         -6.54          9.7 \r\n 2004          77            12.555        7.18         -4.12          1.3 \r\n 2004          78            13.901        6.26         -1.8           0.8 \r\n 2004          79            14.782        16.62        -1.27          0 \r\n 2004          80            19.391        13.28        -3.06          0 \r\n 2004          81            20.151        2.22         -6.23          0 \r\n 2004          82            19.53         7.93         -7.43          0 \r\n 2004          83            14.364        14.6          0.55          0 \r\n 2004          84            15.104        22.53         8.58          0 \r\n 2004          85            2.515         17.51         13.03         2 \r\n 2004          86            7.851         18.77         12.31         0.5 \r\n 2004          87            3.02          18.19         13.07         21.8 \r\n 2004          88            6.218         13.15         4.52          19.6 \r\n 2004          89            16.001        13.7          1.1           0.5 \r\n 2004          90            7.28          2.76         -2.22          0 \r\n 2004          91            20.999        9.66         -3.67          0 \r\n 2004          92            21.769        13.18        -3.07          0 \r\n 2004          93            21.957        16.78        -1.99          0 \r\n 2004          94            19.361        13.39         1.47          0 \r\n 2004          95            21.885        13.87        -3.85          0 \r\n 2004          96            20.389        20.41         0.54          0 \r\n 2004          97            21.129        21.6          6.88          0 \r\n 2004          98            18.52         22.5          2.78          0 \r\n 2004          99            22.624        15.9          2.11          0 \r\n 2004          100           11.405        13.17         0.41          0 \r\n 2004          101           20.236        8.49         -3.58          0 \r\n 2004          102           19.845        9.71         -6.9           0 \r\n 2004          103           18.853        10.82        -2.86          0 \r\n 2004          104           22.465        15.08        -4.9           0 \r\n 2004          105           21.95         21.46         0.51          0 \r\n 2004          106           13.975        23.07         8.88          0 \r\n 2004          107           18.825        30.32         7.15          15.8 \r\n 2004          108           20.684        26.93         10.03         0 \r\n 2004          109           12.724        25.46         15.48         0 \r\n 2004          110           12.99         18.55         6.52          17.7 \r\n 2004          111           4.33          18.25         6.81          3.7 \r\n 2004          112           15.231        16.39         7.43          0 \r\n 2004          113           15.218        14.23         5.17          0 \r\n 2004          114           19.312        17.44         5.41          5.4 \r\n 2004          115           5.324         13.3          6.21          17.1 \r\n 2004          116           14.196        15.22         5.35          0 \r\n 2004          117           24.039        15.94         2.96          0 \r\n 2004          118           21.603        19.75         0.1           0 \r\n 2004          119           23.64         28.34         11.84         0 \r\n 2004          120           18.589        20.99         10.19         0 \r\n 2004          121           10.657        14.2          6.91          0 \r\n 2004          122           21.589        14.44         3.66          0 \r\n 2004          123           17.809        11.1          0.39          0 \r\n 2004          124           24.439        16.42        -2.02          0 \r\n 2004          125           24.122        21.58         7.48          0 \r\n 2004          126           24.82         26.95         4.04          0 \r\n 2004          127           15.345        26.29         15.15         0 \r\n 2004          128           4.664         16.57         10.68         0 \r\n 2004          129           15.934        29.25         10.69         10.4 \r\n 2004          130           21.587        26.56         15.79         0.8 \r\n 2004          131           15.118        24.29         16.42         0 \r\n 2004          132           22.434        28.1          14.69         0 \r\n 2004          133           9.688         23.87         13.09         4.1 \r\n 2004          134           7.387         13.08         5.64          10.9 \r\n 2004          135           22.708        13.61         2.7           3 \r\n 2004          136           22.445        16.62         3.74          0 \r\n 2004          137           23.62         23.18         7.24          0 \r\n 2004          138           11.496        23.53         13.76         11.2 \r\n 2004          139           20.904        20.68         11.45         0 \r\n 2004          140           12.296        22.39         12.41         0 \r\n 2004          141           18.473        27.64         17.85         0 \r\n 2004          142           17.863        30.16         17.82         0 \r\n 2004          143           18.218        26.03         15.71         80.8 \r\n 2004          144           8.59          18.14         10.66         5.3 \r\n 2004          145           11.813        19.35         8.32          30.2 \r\n 2004          146           20.211        17.21         9.01          0 \r\n 2004          147           24.529        20.77         8.39          0 \r\n 2004          148           20.945        25.73         14.17         0 \r\n 2004          149           26.206        24.93         11.63         1 \r\n 2004          150           18.269        26.15         15.79         11.4 \r\n 2004          151           14.28         22.87         13.46         8.9 \r\n 2004          152           25.583        22.63         11.89         0.8 \r\n 2004          153           18.674        19.57         12.16         0 \r\n 2004          154           13.773        20.62         0             0 \r\n 2004          155           28.418        24.57         10.63         0 \r\n 2004          156           27.703        25.96         13.13         0 \r\n 2004          157           10.247        22.61         14.18         0.3 \r\n 2004          158           25.274        27.86         14.13         0.3 \r\n 2004          159           26.909        31.62         19.92         0 \r\n 2004          160           17.391        30.2          22.04         0 \r\n 2004          161           21.475        27.72         20.63         0 \r\n 2004          162           13.285        25.64         19.45         6.3 \r\n 2004          163           19.956        29.95         19.37         6.9 \r\n 2004          164           20.497        29.13         16.43         10.4 \r\n 2004          165           27.524        26.83         15.5          0 \r\n 2004          166           28.125        25.96         16.7          8.4 \r\n 2004          167           18.344        26.13         15.91         0 \r\n 2004          168           10.942        24.92         16.25         17.8 \r\n 2004          169           23.59         23.94         14.34         0 \r\n 2004          170           13.439        18.92         13.2          0 \r\n 2004          171           26.586        19.69         8.52          0 \r\n 2004          172           12.074        20.66         12.78         0 \r\n 2004          173           19.044        23.69         13.12         23.4 \r\n 2004          174           28.825        24.4          10.26         0 \r\n 2004          175           25.069        26.49         14.44         0 \r\n 2004          176           10.576        16.07         9.11          5.3 \r\n 2004          177           29.068        22.25         5.96          0 \r\n 2004          178           25.093        24.7          9.62          0 \r\n 2004          179           12.582        23.33         13.96         1.3 \r\n 2004          180           28.55         23.88         11.05         0.3 \r\n 2004          181           26.089        26.17         11.73         0 \r\n 2004          182           28.198        26.67         12.21         0 \r\n 2004          183           27.358        29.5          16.03         0 \r\n 2004          184           13.164        25.79         19.62         6.1 \r\n 2004          185           8.51          22.77         18.1          5.3 \r\n 2004          186           26.895        28.43         17.11         0 \r\n 2004          187           11.403        25.27         16.87         5.8 \r\n 2004          188           15.664        21.63         15.1          0 \r\n 2004          189           22.708        20.67         13.43         0 \r\n 2004          190           22.002        23.31         14.74         0 \r\n 2004          191           15.782        26.34         17.86         8.4 \r\n 2004          192           20.843        27.65         16.2          0 \r\n 2004          193           9.343         24.67         19.02         12.7 \r\n 2004          194           25.273        28.97         17.64         0 \r\n 2004          195           25.009        29.7          17.81         0 \r\n 2004          196           26.003        26.45         16.11         0 \r\n 2004          197           25.236        27.61         16.08         0 \r\n 2004          198           24.621        27.44         18.35         0 \r\n 2004          199           25.304        25.14         15.25         0 \r\n 2004          200           23.969        25.9          14.83         0 \r\n 2004          201           23.879        29.59         16.1          0 \r\n 2004          202           25.307        31.31         20.42         0 \r\n 2004          203           17.667        30.39         21.63         3 \r\n 2004          204           12.496        27.5          19.48         0 \r\n 2004          205           22.808        23.17         16.07         0 \r\n 2004          206           12.013        21.14         13.68         0 \r\n 2004          207           24.208        23.8          10.27         0 \r\n 2004          208           25.326        25.41         10.87         0 \r\n 2004          209           25.284        25.25         11.35         0 \r\n 2004          210           23.264        26.44         12.33         0 \r\n 2004          211           22.457        26.84         16.19         1.5 \r\n 2004          212           18.094        24.76         15.41         0 \r\n 2004          213           25.808        28.41         13.11         0 \r\n 2004          214           15.565        26.39         15.58         18.5 \r\n 2004          215           21.079        29.61         18.58         2 \r\n 2004          216           13.33         29.89         18.99         36.6 \r\n 2004          217           11.153        24.72         16.23         0.3 \r\n 2004          218           26.116        22.65         12.73         0 \r\n 2004          219           26.147        22.95         10.53         0 \r\n 2004          220           25.167        24.36         12.65         0 \r\n 2004          221           17.186        26.32         15.57         0 \r\n 2004          222           23.934        23.99         13.03         0 \r\n 2004          223           14.06         17.95         12.23         0 \r\n 2004          224           17.218        16.83         8.86          0 \r\n 2004          225           13.807        19.73         8.5           0 \r\n 2004          226           17.948        20.6          8.14          0 \r\n 2004          227           23.079        22.82         9.78          0 \r\n 2004          228           24.69         23.26         7.99          0 \r\n 2004          229           17.43         25.37         12.29         1.3 \r\n 2004          230           18.002        24.68         15.26         15.2 \r\n 2004          231           5.214         22.5          11.25         5.3 \r\n 2004          232           22.687        19.11         7.4           0 \r\n 2004          233           21.881        23.57         9.29          0 \r\n 2004          234           22.538        22.66         9.03          0 \r\n 2004          235           23.304        27.36         15.38         0 \r\n 2004          236           15.386        27.9          18.08         7.1 \r\n 2004          237           15.893        25.09         17.8          1.5 \r\n 2004          238           10.931        24.72         16.81         10.9 \r\n 2004          239           19.032        29.2          18.33         16.3 \r\n 2004          240           22.031        26.65         16.46         0.3 \r\n 2004          241           15.596        22.33         13.51         0 \r\n 2004          242           19.711        22.7          11.06         0 \r\n 2004          243           23.489        26.57         13.44         0 \r\n 2004          244           20.463        27.39         12.21         0 \r\n 2004          245           22.121        30.13         17.07         0 \r\n 2004          246           22.113        27.39         15.54         0 \r\n 2004          247           21.785        27.58         14.14         0 \r\n 2004          248           19.689        28.58         15.67         0 \r\n 2004          249           13.104        27.79         17.61         23.1 \r\n 2004          250           22.433        24.01         12.99         0 \r\n 2004          251           22.48         21.32         9.3           0 \r\n 2004          252           20.866        22.65         8.81          0 \r\n 2004          253           20.258        24.46         11.4          0 \r\n 2004          254           20.768        27.46         14.12         0 \r\n 2004          255           20.148        28.4          13.95         0 \r\n 2004          256           20.124        28.17         12.52         0 \r\n 2004          257           18.766        29.35         15.44         0 \r\n 2004          258           9.648         28.72         18.58         1 \r\n 2004          259           14.289        25.48         13.65         0.5 \r\n 2004          260           20.328        23.28         10.09         0 \r\n 2004          261           8.799         19.78         9.1           3 \r\n 2004          262           14.593        26.5          12.75         0.3 \r\n 2004          263           18.354        29.54         15.56         0 \r\n 2004          264           18.429        26.44         14.34         0 \r\n 2004          265           18.009        27.65         12.72         0 \r\n 2004          266           18.907        27.52         12.61         0 \r\n 2004          267           10.073        23            11.7          1.8 \r\n 2004          268           18.855        24.41         8.83          0 \r\n 2004          269           18.649        23.78         8.81          0 \r\n 2004          270           17.967        24.7          9.48          0 \r\n 2004          271           14.085        26.71         10.24         0 \r\n 2004          272           18.755        20.37         6.3           0 \r\n 2004          273           18.37         20.04         4.16          0 \r\n 2004          274           12.368        24.44         5.68          0 \r\n 2004          275           4.14          21.17         1.3           12.7 \r\n 2004          276           18.125        14.72        -0.56          0 \r\n 2004          277           17.197        23.76         5.1           0 \r\n 2004          278           17.788        12.13         1.51          0 \r\n 2004          279           16.431        19.54         0.56          0 \r\n 2004          280           14.291        24.8          6.54          0 \r\n 2004          281           5.783         19.55         12.21         1.5 \r\n 2004          282           14.729        23.9          9.72          0 \r\n 2004          283           16.536        21.58         5.66          0 \r\n 2004          284           14.45         20.43         4.42          0 \r\n 2004          285           10.224        16.36         4.94          0 \r\n 2004          286           9.022         16.13         6.42          0 \r\n 2004          287           3.004         12.59         5.97          1.3 \r\n 2004          288           6.714         9.8           0.37          0 \r\n 2004          289           6.212         12.58         2.34          0 \r\n 2004          290           13.755        8.94         -0.3           0 \r\n 2004          291           8.997         14.24        -0.27          0 \r\n 2004          292           4.039         13.61         6.5           0 \r\n 2004          293           2.754         9.52          6.54          1 \r\n 2004          294           1.976         9.99          8.45          0 \r\n 2004          295           2.313         13.17         9.07          0 \r\n 2004          296           1.758         19.67         12.24         0 \r\n 2004          297           6.216         17.98         5.69          0 \r\n 2004          298           13.445        22.13         1.66          0 \r\n 2004          299           12.774        17.19         6.3           0 \r\n 2004          300           2.305         12.44         8.74          22.9 \r\n 2004          301           2.239         13.21         9.98          1 \r\n 2004          302           1.839         19.95         11.43         3.3 \r\n 2004          303           9.93          26.47         11.47         0 \r\n 2004          304           3.634         12.13         0.25          1.8 \r\n 2004          305           9.048         11.55        -0.91          0 \r\n 2004          306           1             8.79          6.46          26.7 \r\n 2004          307           2.897         7.75         -0.52          4.3 \r\n 2004          308           8.341         9.88         -3.72          0 \r\n 2004          309           11.861        11.13        -0.48          0 \r\n 2004          310           11.551        16.88        -2.9           0 \r\n 2004          311           11.418        23.82         2.95          0 \r\n 2004          312           10.576        12.01         0.24          0 \r\n 2004          313           7.627         10.66         0             0 \r\n 2004          314           7.753         17.88        -0.43          0 \r\n 2004          315           6.288         15.65         3.48          0 \r\n 2004          316           11.115        5.91         -4.83          8.1 \r\n 2004          317           10.869        7.59         -7.56          0 \r\n 2004          318           10.587        7.86         -7.08          0 \r\n 2004          319           6.644         7.51         -2.66          0 \r\n 2004          320           4.547         9.79          2.44          0 \r\n 2004          321           3.123         15.71         4.44          0 \r\n 2004          322           6.61          19.97         14.16         0 \r\n 2004          323           1.154         14.9          8.41          15.2 \r\n 2004          324           1.413         11.96         6.09          11.4 \r\n 2004          325           3.66          6.11         -1.29          1.3 \r\n 2004          326           4.296         5.17         -1.01          0 \r\n 2004          327           2.751         6.71          1.92          0 \r\n 2004          328           7.055         4.16         -1.26          0 \r\n 2004          329           7.98          3.22         -6.13          0 \r\n 2004          330           6.669         5.42         -7.9           0 \r\n 2004          331           4.103         10           -1.11          0 \r\n 2004          332           1.703         5.82         -2.34          8.1 \r\n 2004          333           4.819         1.08         -6.22          0 \r\n 2004          334           5.439        -1            -7.46          1.3 \r\n 2004          335           7.501         0.74         -9.37          0 \r\n 2004          336           8.486         4.67         -7.06          0 \r\n 2004          337           8.634         7.14         -3.38          0 \r\n 2004          338           7.525         5.64         -5.66          0 \r\n 2004          339           7.665         10.92        -1.57          0 \r\n 2004          340           3.519         4.26         -4.17          0 \r\n 2004          341           1.324         4.21          0.4           8.1 \r\n 2004          342           2.823         5.09         -2.05          0.5 \r\n 2004          343           3.752         5.61         -3.17          0 \r\n 2004          344           4.227         8.82         -0.76          0 \r\n 2004          345           1             3.53          0.16          1 \r\n 2004          346           3.99          2.48         -2.43          0 \r\n 2004          347           5.867         6.08         -2.48          0 \r\n 2004          348           7.466        -2.48         -11.55         0 \r\n 2004          349           8.555        -0.98         -15.39         0 \r\n 2004          350           6.794         7.25         -7.93          0 \r\n 2004          351           8.049         4.52         -7.35          0 \r\n 2004          352           7.871         1.6          -10.53         0 \r\n 2004          353           6.364         4.25         -13.75         0 \r\n 2004          354           7.217        -9            -19.75         0 \r\n 2004          355           4.529         2.59         -9.44          0 \r\n 2004          356           8.157         0.2          -16            2 \r\n 2004          357           8.147        -12.5         -19.53         0 \r\n 2004          358           8.337        -14.86        -23            0 \r\n 2004          359           8.145        -6.13         -24.66         0 \r\n 2004          360           2.561        -0.99         -6.12          0.8 \r\n 2004          361           7.362        -5.02         -9.58          0 \r\n 2004          362           5.625         2.44         -9.84          0 \r\n 2004          363           6.223         6.7          -4.17          0 \r\n 2004          364           4.457         2.83         -8.87          0 \r\n 2004          365           2.139         15.59         2.81          0 \r\n 2004          366           7.844         5.75         -5.61          0 \r\n 2005          1             1             0.36         -6.19          0.8 \r\n 2005          2             5.52          0.01         -5.92          4.8 \r\n 2005          3             1.842        -5.83         -8.36          1.8 \r\n 2005          4             1.208        -6.51         -9.67          0 \r\n 2005          5             3.828        -9.53         -11.69         8.1 \r\n 2005          6             8.808        -11.69        -20.2          10.2 \r\n 2005          7             4.649        -7.34         -18.99         0 \r\n 2005          8             7.403        -4.63         -18.16         0 \r\n 2005          9             3.862         0.14         -10.73         0 \r\n 2005          10            6.121        -6.64         -11.04         0 \r\n 2005          11            4.102        -1.95         -7.43          0 \r\n 2005          12            3.468        -1.49         -5.6           0 \r\n 2005          13            9.244        -5.63         -22.19         0 \r\n 2005          14            8.854        -18.26        -24.44         0 \r\n 2005          15            8.963        -14.75        -24.43         0 \r\n 2005          16            9.954        -12.63        -25.55         0 \r\n 2005          17            8.837        -13.48        -23.68         0 \r\n 2005          18            6.176         1.78         -19.9          0 \r\n 2005          19            7.5           3            -5.58          0 \r\n 2005          20            4.489        -2.79         -5.32          0 \r\n 2005          21            3.86         -0.16         -5.34          0 \r\n 2005          22            9.844        -3.35         -17.62         0 \r\n 2005          23            5.428        -5.46         -17.16         0 \r\n 2005          24            9.978         5.69         -8.42          0 \r\n 2005          25            10.297        6.87         -7.27          0 \r\n 2005          26            3.255         1.9          -4.36          0 \r\n 2005          27            9.958        -3.33         -10.03         0 \r\n 2005          28            8.1          -1.92         -8.1           0 \r\n 2005          29            5.17          0.71         -5.35          0 \r\n 2005          30            3.967        -0.37         -2.08          0 \r\n 2005          31            3.964         1.27         -1.5           0 \r\n 2005          32            3.566         1.67         -0.81          0 \r\n 2005          33            9.562         4.48         -2.77          0 \r\n 2005          34            11.476        10.04        -3.62          0 \r\n 2005          35            11.994        12.97        -0.4           0 \r\n 2005          36            9.56          13.03         0.68          0 \r\n 2005          37            1.528         6.76         -4.49          9.9 \r\n 2005          38            8.721        -4.52         -10.07         2.5 \r\n 2005          39            5.739        -5.04         -11.41         0 \r\n 2005          40            11.766       -6.07         -15.64         2 \r\n 2005          41            11.946       -3.06         -16.61         0 \r\n 2005          42            13.285        6.03         -5.96          0 \r\n 2005          43            8.34          6.64         -2.2           0 \r\n 2005          44            1.101         4.58          2.36          22.1 \r\n 2005          45            11.695        13.82         1.05          3.8 \r\n 2005          46            3.462         4.15         -1.89          0 \r\n 2005          47            13.767        2.34         -6.31          0 \r\n 2005          48            13.025        3.44         -8.94          0 \r\n 2005          49            13.82         2.33         -10.29         0 \r\n 2005          50            1.996         1.01         -2.81          0.5 \r\n 2005          51            2.809         3.88         -1.33          4.3 \r\n 2005          52            7.258        -0.28         -4.4           0 \r\n 2005          53            12.526        5.42         -5.01          0.2 \r\n 2005          54            10.235        0.8          -4.73          0 \r\n 2005          55            5.763        -0.06         -4.11          1.3 \r\n 2005          56            15.815        7.71         -4.41          0 \r\n 2005          57            13.747        5.98         -6.33          0 \r\n 2005          58            3.047         5.28         -3.09          0 \r\n 2005          59            5.874        -2.91         -8.01          0 \r\n 2005          60            16.775       -0.29         -10.94         0 \r\n 2005          61            16.061        3.91         -7.03          0 \r\n 2005          62            14.643        6.35         -8.19          0 \r\n 2005          63            12.541        13.7         -4.35          0 \r\n 2005          64            16.674        9.19         -2.36          0 \r\n 2005          65            15.822        22.06         2.38          0 \r\n 2005          66            5.93          10.76        -5.11          4.3 \r\n 2005          67            17.87         0.61         -8.98          0 \r\n 2005          68            17.934        1.24         -9.13          0 \r\n 2005          69            6.321         7.39         -3.28          0 \r\n 2005          70            8.855         7.1          -4.12          0 \r\n 2005          71            5.096        -1.67         -9.39          0.5 \r\n 2005          72            14.982        1.88         -12.75         0 \r\n 2005          73            15.863        2.67         -9.43          0 \r\n 2005          74            14.894        8.71         -8.85          0 \r\n 2005          75            18.252        9.77         -5.63          0 \r\n 2005          76            10.551        9.63         -2.7           0 \r\n 2005          77            4.679         10.26        -0.87          3.6 \r\n 2005          78            7.156         0.55         -5.47          1.3 \r\n 2005          79            14.797        6.71         -6.13          0 \r\n 2005          80            12.7          9.84         -0.09          0 \r\n 2005          81            7.028         5.3          -1.45          0 \r\n 2005          82            19.579        11.3         -2.35          0 \r\n 2005          83            2.141         2.92         -0.85          2 \r\n 2005          84            11.629        3.22         -1.13          17 \r\n 2005          85            18.804        8.91         -1.75          0 \r\n 2005          86            21.282        15.52        -0.99          0 \r\n 2005          87            19.51         22.17         0.34          0 \r\n 2005          88            15.654        24.69         6.99          0 \r\n 2005          89            8.858         20.34         4.9           6.3 \r\n 2005          90            22.319        14.3          2.83          0 \r\n 2005          91            19.593        11.7          1.88          0 \r\n 2005          92            22.724        15.98        -0.98          0 \r\n 2005          93            21.338        22.24         4.39          0 \r\n 2005          94            21.687        26.64         8.48          0 \r\n 2005          95            14.708        24.31         11.29         0 \r\n 2005          96            13.912        20.46         7.84          0 \r\n 2005          97            20.681        19.37         5.7           0 \r\n 2005          98            22.655        20.16         3.76          0 \r\n 2005          99            20.336        24.85         9.47          0 \r\n 2005          100           13.896        24.9          13.26         0 \r\n 2005          101           7.32          19.06         11.78         41.9 \r\n 2005          102           9.502         13.91         6.61          1.8 \r\n 2005          103           24.868        14.98         3.98          0 \r\n 2005          104           24.968        18.74         2.79          0 \r\n 2005          105           22.351        21.13         5.52          0 \r\n 2005          106           9.485         21.06         10.57         2.5 \r\n 2005          107           21.819        26.29         10.56         0 \r\n 2005          108           19.521        25.7          12.75         0 \r\n 2005          109           7.966         23.82         16.06         0 \r\n 2005          110           10.13         20.43         12.15         0 \r\n 2005          111           8.897         14.88         8.91          11.7 \r\n 2005          112           16.166        18.19         0             0 \r\n 2005          113           26.58         9.53         -0.23          0 \r\n 2005          114           26.614        14.9         -0.6           0 \r\n 2005          115           15.198        17.55         1.24          0 \r\n 2005          116           12.549        9.33          2.35          0 \r\n 2005          117           23.018        13.49         1.54          0 \r\n 2005          118           19.212        11.97         0.55          0 \r\n 2005          119           17.366        12.5          0.98          0 \r\n 2005          120           18.213        11.18        -1.12          0 \r\n 2005          121           11.273        6.95          0.52          0 \r\n 2005          122           16.526        10.9          0.75          0 \r\n 2005          123           27.621        13.74        -0.75          0 \r\n 2005          124           25.917        20.38        -0.76          0 \r\n 2005          125           25.898        22.69         6.26          0 \r\n 2005          126           18.262        25.07         10.81         0 \r\n 2005          127           19.229        27.06         15.29         0 \r\n 2005          128           15.668        27.68         16.01         0 \r\n 2005          129           17.994        22.32         12.51         0 \r\n 2005          130           25.834        27.71         8.63          26.6 \r\n 2005          131           7.497         18.85         10.75         17.1 \r\n 2005          132           3.823         13.48         6.15          53 \r\n 2005          133           7.062         15.75         7.07          0 \r\n 2005          134           15.732        10.87         4.28          0 \r\n 2005          135           27.018        15.13         3.02          0 \r\n 2005          136           16.286        19.68         4.74          0 \r\n 2005          137           20.765        24.66         10.82         4 \r\n 2005          138           5.175         19.19         13.22         0 \r\n 2005          139           28.042        27.62         10.61         0 \r\n 2005          140           14.063        18.73         11.56         0 \r\n 2005          141           11.694        20.28         10.12         0 \r\n 2005          142           28.904        26.38         13.02         0 \r\n 2005          143           28.897        26.19         12.33         0 \r\n 2005          144           27.35         24.55         11.6          0 \r\n 2005          145           9.026         21.62         10.1          2.9 \r\n 2005          146           25.53         22.39         8.51          2.7 \r\n 2005          147           21.902        19.83         6.89          0 \r\n 2005          148           26.223        21.4          7.43          0 \r\n 2005          149           13.875        20.19         9.54          0 \r\n 2005          150           27.09         23.91         8.7           0 \r\n 2005          151           7.761         21.13         13.39         0 \r\n 2005          152           15.911        25.12         15.05         0 \r\n 2005          153           26.276        28.08         13.23         0 \r\n 2005          154           18.699        26.79         16.35         6.4 \r\n 2005          155           14.751        25.74         17.07         3 \r\n 2005          156           16.283        24.81         14.41         0 \r\n 2005          157           28.523        31.48         14.05         0 \r\n 2005          158           24.081        31.81         19.86         15.7 \r\n 2005          159           13.021        24.54         15.76         0 \r\n 2005          160           19.591        26.57         18.68         0 \r\n 2005          161           17.731        26.77         18.15         0 \r\n 2005          162           20.09         25.73         17.49         0 \r\n 2005          163           23.015        27.2          14.48         0 \r\n 2005          164           23.025        26.97         15.75         12 \r\n 2005          165           13.815        22.67         15.29         0 \r\n 2005          166           15.984        22.57         13.02         0 \r\n 2005          167           29.019        26.56         11.75         0 \r\n 2005          168           29.437        27.5          13.16         0 \r\n 2005          169           29.476        27.86         12.72         0 \r\n 2005          170           29.109        27.89         13.68         0 \r\n 2005          171           25.54         29.8          15.74         17.1 \r\n 2005          172           22.634        29.94         18.44         0 \r\n 2005          173           26.132        31.95         20.44         0 \r\n 2005          174           28.568        31.97         21.21         0 \r\n 2005          175           25.08         32.93         20.52         41.5 \r\n 2005          176           14.258        29.04         17.95         3.8 \r\n 2005          177           25.666        31.21         20.91         0 \r\n 2005          178           21.37         32.04         17.62         13.2 \r\n 2005          179           18.257        28.34         18.83         2.6 \r\n 2005          180           10.809        29.61         21.18         0 \r\n 2005          181           28.49         27.11         15.96         0 \r\n 2005          182           29.1          24.68         14.27         0 \r\n 2005          183           26.479        26.33         12.81         0 \r\n 2005          184           19.704        28.76         16.33         3.5 \r\n 2005          185           18.923        26.28         16.09         0 \r\n 2005          186           27.696        25.5          14.25         0 \r\n 2005          187           22.917        26.3          13.98         0 \r\n 2005          188           25.324        27.75         16.58         0 \r\n 2005          189           21.975        29.06         17.4          0 \r\n 2005          190           27.002        30.96         18.8          0 \r\n 2005          191           25.635        30.83         18.78         0 \r\n 2005          192           27.525        29.66         18.18         0 \r\n 2005          193           26.89         29.32         15.88         0 \r\n 2005          194           26.579        30.97         19.14         0 \r\n 2005          195           23.497        31.72         19.86         0 \r\n 2005          196           23.391        32.68         20.41         0 \r\n 2005          197           26.133        32.89         19.93         0 \r\n 2005          198           26.188        33.55         18.99         26.3 \r\n 2005          199           25.994        27.06         16.86         0 \r\n 2005          200           27.814        29.03         15.24         4.1 \r\n 2005          201           20.544        32.05         20.51         14.8 \r\n 2005          202           22.298        31.26         20.79         0 \r\n 2005          203           22.268        30.69         20.28         0 \r\n 2005          204           25.16         34.04         21.87         0 \r\n 2005          205           25.883        33.42         21.35         3.1 \r\n 2005          206           21.737        33.04         21.29         24.6 \r\n 2005          207           11.255        21.76         13.69         0 \r\n 2005          208           25.487        21.83         11.05         0 \r\n 2005          209           27.146        25.67         10.48         0 \r\n 2005          210           18.027        27.5          15.65         0 \r\n 2005          211           14.534        28.35         17.4          20.1 \r\n 2005          212           10.618        25.33         17.62         0 \r\n 2005          213           19.745        30.11         18.09         3.1 \r\n 2005          214           19.262        30.83         19.09         0 \r\n 2005          215           21.086        31.78         22.16         0 \r\n 2005          216           21.972        25.09         17.77         0 \r\n 2005          217           26.123        25.78         13.74         0 \r\n 2005          218           27.06         27.16         11.6          0 \r\n 2005          219           25.651        30.14         12.27         0 \r\n 2005          220           24.274        31.32         15.6          0 \r\n 2005          221           23.385        33.55         18.23         20.7 \r\n 2005          222           21.17         29.69         16.67         101.1 \r\n 2005          223           12.929        28.78         18.69         16.3 \r\n 2005          224           9.751         24.62         17.86         0 \r\n 2005          225           11.422        20.43         14.94         0 \r\n 2005          226           22.66         22.95         11.81         0 \r\n 2005          227           22.784        24.88         12.6          0 \r\n 2005          228           24.182        26.49         12.93         0 \r\n 2005          229           19.316        25.95         15            0 \r\n 2005          230           23.114        29.94         19.14         0 \r\n 2005          231           17.655        29.41         17.71         8.3 \r\n 2005          232           22.147        28.9          17.92         0 \r\n 2005          233           18.983        27.84         18.53         0 \r\n 2005          234           17.19         23.46         15.27         0 \r\n 2005          235           19.655        22.52         12.66         0 \r\n 2005          236           11.357        22.97         13.51         0 \r\n 2005          237           13.589        27.18         18.15         13.2 \r\n 2005          238           11.189        27.43         16.6          0 \r\n 2005          239           21.417        28.91         12.89         0 \r\n 2005          240           21.809        27.95         14.31         0 \r\n 2005          241           21.146        29.4          13.14         0 \r\n 2005          242           21.687        28.27         13.8          0 \r\n 2005          243           15.749        27.21         12.53         0 \r\n 2005          244           22.159        27.97         9.57          0 \r\n 2005          245           20.089        28.25         11.39         0 \r\n 2005          246           20.474        30.22         13.15         0 \r\n 2005          247           17.983        30.6          17.79         0 \r\n 2005          248           17.791        30.47         17.52         0 \r\n 2005          249           17.168        29.71         17.55         0 \r\n 2005          250           10.502        26.56         15.74         31.8 \r\n 2005          251           11.704        28.46         16.25         4.3 \r\n 2005          252           16.664        32.52         17.5          0 \r\n 2005          253           18.447        32.03         19.91         0 \r\n 2005          254           17.706        31.92         18.69         0 \r\n 2005          255           12.525        30.71         20.42         21.6 \r\n 2005          256           7.639         26.54         13.59         0 \r\n 2005          257           17.883        23.79         9.17          0 \r\n 2005          258           9.18          22.03         8.92          0 \r\n 2005          259           17.545        25.55         6.44          0 \r\n 2005          260           11.705        25.43         9.53          0 \r\n 2005          261           15.555        29.75         15.07         0 \r\n 2005          262           11.982        28.17         14.69         0 \r\n 2005          263           17.53         31.57         10.66         0 \r\n 2005          264           16.148        33.12         15.28         0 \r\n 2005          265           11.659        25.2          11.73         0 \r\n 2005          266           10.44         20.2          10.29         9 \r\n 2005          267           9.709         25.96         15.3          20.5 \r\n 2005          268           6.588         23.05         16.09         3.6 \r\n 2005          269           10.97         19.73         9.25          0 \r\n 2005          270           17.498        25.41         7.44          8.3 \r\n 2005          271           4.38          16.16         3.76          0 \r\n 2005          272           16.852        18.04         0.21          0 \r\n 2005          273           16.803        25.52         5.82          0 \r\n 2005          274           14.042        27.34         12.59         0 \r\n 2005          275           8.457         27.93         17.58         0 \r\n 2005          276           11.838        30.81         20.63         0 \r\n 2005          277           12.241        31.34         21.19         0 \r\n 2005          278           4.531         22.68         5.1           1.3 \r\n 2005          279           11.81         9.83          1.61          0 \r\n 2005          280           16.039        11.55        -1.29          0 \r\n 2005          281           16.366        14.97        -1.27          0 \r\n 2005          282           14.269        15.13         1.69          0 \r\n 2005          283           15.055        18.62         2.76          0 \r\n 2005          284           9.282         18.58         5.51          0 \r\n 2005          285           4.518         16.97         8.57          2.3 \r\n 2005          286           11.947        21.28         5.42          0.5 \r\n 2005          287           14.861        26.57         5.17          0 \r\n 2005          288           15.159        20.86         2.81          0 \r\n 2005          289           12.098        21.71         3.12          0 \r\n 2005          290           14.097        23.14         6.67          0 \r\n 2005          291           13.814        26.13         5.24          0 \r\n 2005          292           11.258        16.74         4.8           0 \r\n 2005          293           6.577         14            3.04          0.5 \r\n 2005          294           8.212         14.41         0.75          0 \r\n 2005          295           8.814         9.41         -0.72          0 \r\n 2005          296           4.376         7.16         -0.92          3 \r\n 2005          297           7.31          8.48         -0.91          0 \r\n 2005          298           13.419        11.48        -1.69          0 \r\n 2005          299           7.81          11.79        -2             0 \r\n 2005          300           12.988        14.26        -1.51          0 \r\n 2005          301           12.632        16.12        -2.69          0 \r\n 2005          302           10.785        20.55         3.93          0 \r\n 2005          303           4.477         15.73         6.58          1.3 \r\n 2005          304           9.064         13.73         1.98          0 \r\n 2005          305           12.079        17.46        -3.11          0 \r\n 2005          306           11.7          24.21         0.07          0 \r\n 2005          307           9.947         19.68         5.26          0 \r\n 2005          308           10.442        14.42         1.78          0 \r\n 2005          309           2.704         11.29         3.04          0 \r\n 2005          310           8.18          13.14         5.42          4.3 \r\n 2005          311           10.454        21.25         5.57          0 \r\n 2005          312           8.607         19.49         6.83          0 \r\n 2005          313           8.618         11.78        -1             0 \r\n 2005          314           10.711        14.3         -5             0 \r\n 2005          315           9.38          19.36        -0.66          0 \r\n 2005          316           3.142         17.81         7.95          0.8 \r\n 2005          317           7.583         10.11        -1.59          10.9 \r\n 2005          318           3.864         6.49         -1.42          0 \r\n 2005          319           1             2.89         -4.57          11.2 \r\n 2005          320           10.518       -4.56         -12.96         1 \r\n 2005          321           8.479        -4.26         -15.22         0 \r\n 2005          322           9.75          5.99         -5.07          0 \r\n 2005          323           1.775         5.17          0.29          0.5 \r\n 2005          324           3.523         2.71         -0.39          0 \r\n 2005          325           5.509         8.93         -0.4           0 \r\n 2005          326           4.61          4.19         -1.68          0 \r\n 2005          327           8.925         11.5          0.19          0 \r\n 2005          328           9.638         0.16         -10.18         0 \r\n 2005          329           4.147         1.31         -7.83          0 \r\n 2005          330           8.724         11.94        -9.03          0 \r\n 2005          331           1             11.66         6.06          0 \r\n 2005          332           1.536         11.37        -5.02          18.5 \r\n 2005          333           4.384        -5.01         -9.97          1.8 \r\n 2005          334           5.717        -4.39         -11.6          0 \r\n 2005          335           9.303        -7.44         -17.14         4.1 \r\n 2005          336           4.41         -9.98         -15.18         0 \r\n 2005          337           3.807        -7.8          -10.39         4.3 \r\n 2005          338           8.631        -9.51         -19.04         0 \r\n 2005          339           7.512        -12.35        -24            0 \r\n 2005          340           9.072        -15.6         -22.66         0.2 \r\n 2005          341           7.964        -15.18        -24.71         0 \r\n 2005          342           4.151        -9.41         -22.03         4.6 \r\n 2005          343           7.493        -9.26         -25.59         0 \r\n 2005          344           4.281         1.88         -9.75          0.5 \r\n 2005          345           3.167         1.13         -2.72          2.3 \r\n 2005          346           5.865         2.4          -7.25          0 \r\n 2005          347           5.504         2.22         -8.61          0 \r\n 2005          348           4.817         1.5          -0.37          7.9 \r\n 2005          349           4.684        -0.34         -6.7           0.5 \r\n 2005          350           6.747        -6.21         -11.67         0 \r\n 2005          351           8.43         -9.73         -16.59         0 \r\n 2005          352           8.441        -11.88        -16.4          0 \r\n 2005          353           8.576        -7.62         -20.07         0 \r\n 2005          354           8.384        -6.1          -15.96         0 \r\n 2005          355           7.552        -3            -16.51         0 \r\n 2005          356           7.726         4.69         -6.39          0 \r\n 2005          357           5.929         3.77         -2.68          0 \r\n 2005          358           2.477         2.91          0.13          0 \r\n 2005          359           3.493         0.14         -1.69          0 \r\n 2005          360           3.204         0.28         -2.64          0 \r\n 2005          361           3.209        -0.45         -1.97          0 \r\n 2005          362           2.147        -0.28         -1.8           0 \r\n 2005          363           2.084         0.12         -2.1           0 \r\n 2005          364           1.7           0.82         -1.04          0 \r\n 2005          365           4.885         0.62         -2.5           0 \r\n 2006          1             3.756         2.99         -3.09          0 \r\n 2006          2             1.5           1.26          0.11          6.1 \r\n 2006          3             2.461         1.5          -0.12          0 \r\n 2006          4             4.631         4.2          -0.4           0 \r\n 2006          5             1.563        -0.42         -5.12          0 \r\n 2006          6             3.318         0.85         -6             0 \r\n 2006          7             7.022         6.66         -2.1           0 \r\n 2006          8             2.143         1.36         -1.17          0 \r\n 2006          9             8.834         0.16         -7.99          0 \r\n 2006          10            8.793         2.28         -9.2           0 \r\n 2006          11            8.317         8.62         -5.2           0 \r\n 2006          12            8.671         8.65         -1.51          0 \r\n 2006          13            5.225         0.4          -5.34          0 \r\n 2006          14            9.154         6.8          -8.23          0 \r\n 2006          15            8.261         12.54        -1.01          0 \r\n 2006          16            1.638         2.48         -4.63          0 \r\n 2006          17            1.855        -2.83         -6.14          0 \r\n 2006          18            7.658         8.94         -9.7           0 \r\n 2006          19            6.52          7.67         -3.23          0 \r\n 2006          20            1.507        -1.3          -4.34          1.8 \r\n 2006          21            5.985        -1.62         -4.69          0 \r\n 2006          22            3.862         0.08         -11.25         0 \r\n 2006          23            6.14          2.12         -12            0 \r\n 2006          24            10.435        4.71         -4.94          0 \r\n 2006          25            10.476        5.27         -7.29          0 \r\n 2006          26            9.537         15.09        -4.39          0 \r\n 2006          27            10.245        13.96         1.93          0 \r\n 2006          28            1.029         6.8           3.53          2.8 \r\n 2006          29            1.594         5.31          0.38          3.6 \r\n 2006          30            4.25          1.47         -0.69          1.5 \r\n 2006          31            10.409        11.42        -3.75          0 \r\n 2006          32            7.14          6.77         -0.1           0 \r\n 2006          33            8.899         13.05         0.17          0 \r\n 2006          34            8.044         2.02         -10.09         0 \r\n 2006          35            11.898       -3.56         -12.88         0 \r\n 2006          36            10.47        -0.98         -13.53         0 \r\n 2006          37            11.585        2.2          -12.09         0 \r\n 2006          38            3.552         1.46         -2.71          0 \r\n 2006          39            12.84        -2.69         -12.05         2.8 \r\n 2006          40            6.362        -1.56         -17.45         0 \r\n 2006          41            9.154         0.95         -10.47         0 \r\n 2006          42            7.16         -3.27         -11.31         0 \r\n 2006          43            9.434        -5.48         -13.16         0 \r\n 2006          44            13.202        8.87         -13.29         0 \r\n 2006          45            13.709        17.28        -5.17          0 \r\n 2006          46            4.292        -0.64         -6.55          0 \r\n 2006          47            5.708        -6.54         -13.31         3.3 \r\n 2006          48            12.507       -13.31        -20.83         0 \r\n 2006          49            15.07        -12.93        -24.87         0 \r\n 2006          50            13.271       -6.22         -21.65         0 \r\n 2006          51            14.742        2.88         -12.51         0 \r\n 2006          52            14.673        7.39         -11.7          0 \r\n 2006          53            14.379        8.83         -6.82          0 \r\n 2006          54            15.132        1.83         -4.89          0 \r\n 2006          55            14.923        16.33        -6.24          0 \r\n 2006          56            15.927        0.5          -9.49          0 \r\n 2006          57            14.594        7.01         -11.88         0 \r\n 2006          58            12.432        11.88        -2.99          0 \r\n 2006          59            9.255         6.49         -4.88          0 \r\n 2006          60            11.11         16.09         1.5           0 \r\n 2006          61            10.566        2.47         -2.99          0 \r\n 2006          62            16.741        6.96         -7.67          0 \r\n 2006          63            4.698         5.36         -4.21          0 \r\n 2006          64            2.664         4.77         -1.29          8.9 \r\n 2006          65            11.533        4.34         -2.5           0 \r\n 2006          66            5.009         2.37         -3.44          3.8 \r\n 2006          67            2.494         3.89         -1.67          2.8 \r\n 2006          68            12.655        10.48         0.01          0.5 \r\n 2006          69            17.309        14.93        -1.21          0 \r\n 2006          70            13.669        16.2         -0.64          0 \r\n 2006          71            2.697         3.89         -1.9           1.5 \r\n 2006          72            9.19          1.6          -5.12          1.3 \r\n 2006          73            18.258        9.19         -7.5           0 \r\n 2006          74            15.171        5.92         -8.33          0 \r\n 2006          75            3.982         6.05         -1.29          2.5 \r\n 2006          76            19.713        5.43         -5.94          0 \r\n 2006          77            18.999        6.03         -3.63          0 \r\n 2006          78            11.215        5.7          -2.24          0 \r\n 2006          79            6.053         4.09         -1.66          0 \r\n 2006          80            17.862        0.37         -7.27          10.9 \r\n 2006          81            21.642        3.36         -9.29          0 \r\n 2006          82            16.625        5.25         -5.37          0 \r\n 2006          83            7.185         2.45         -1.53          0 \r\n 2006          84            16.958        6.14         -4.72          0 \r\n 2006          85            20.434        11.95        -5.29          0 \r\n 2006          86            1.699         6.35          1.81          14.2 \r\n 2006          87            8.288         8.31          0.01          1.3 \r\n 2006          88            16.165        14.51         0.24          0 \r\n 2006          89            6.997         16.85         8.33          0 \r\n 2006          90            3.1           9.22          2.99          26.7 \r\n 2006          91            8.922         7.65          2.62          0 \r\n 2006          92            3.391         7.19          3.67          13 \r\n 2006          93            22.066        9.74         -0.17          2.8 \r\n 2006          94            22.514        14.85        -1.96          0 \r\n 2006          95            19.428        22.12         3.88          0 \r\n 2006          96            12.524        19.38         10.62         1.3 \r\n 2006          97            5.358         8.61          0.86          2.3 \r\n 2006          98            23.925        11.89        -3.63          0 \r\n 2006          99            21.013        17.55        -0.66          0 \r\n 2006          100           23.055        27.21         4.14          0 \r\n 2006          101           15.006        24.85         12.66         2 \r\n 2006          102           24.013        23.84         10.23         1.8 \r\n 2006          103           22.57         31.63         10.98         0 \r\n 2006          104           23.54         28.67         12.13         0 \r\n 2006          105           17.778        27.72         10.21         4.1 \r\n 2006          106           6.698         17.72         10.5          6.9 \r\n 2006          107           12.773        18.18         10.07         0 \r\n 2006          108           12.338        20.32         7.16          2.5 \r\n 2006          109           24.816        19.22         2.06          1.8 \r\n 2006          110           19.292        16.5          5.05          0 \r\n 2006          111           17.456        19.16         2.72          0 \r\n 2006          112           25.496        20.15         6.3           0 \r\n 2006          113           25.883        23.43         2.79          0 \r\n 2006          114           14.871        22.31         7.09          0.8 \r\n 2006          115           6.211         8.89          1.93          2.5 \r\n 2006          116           26.014        17.74         0.95          0 \r\n 2006          117           21.939        20.82         2.22          0 \r\n 2006          118           4.83          16.69         11.18         3.8 \r\n 2006          119           1.535         12.86         10.91         6.6 \r\n 2006          120           2.591         14.03         11.35         5.8 \r\n 2006          121           5.954         14.52         8.54          4.3 \r\n 2006          122           21.598        23.37         7.22          3 \r\n 2006          123           15.381        18.68         8.94          1.5 \r\n 2006          124           23.233        15.65         6.34          1.5 \r\n 2006          125           18.657        11.49         4.25          1 \r\n 2006          126           26.653        17.96         0.58          9.4 \r\n 2006          127           24.948        21.27         4.44          0 \r\n 2006          128           18.165        23.31         12.39         0.8 \r\n 2006          129           21.903        24.08         13.59         2 \r\n 2006          130           20.773        19.3          9.79          0 \r\n 2006          131           9.486         12.19         6.48          0 \r\n 2006          132           20.572        18.05         5             1 \r\n 2006          133           7.243         10.43         4.17          1.3 \r\n 2006          134           13.464        14.7          5.68          1.5 \r\n 2006          135           16.668        18.85         8.97          0.3 \r\n 2006          136           23.386        22.66         11.19         0 \r\n 2006          137           21.989        26.27         9.41          0 \r\n 2006          138           20.93         20.81         9.18          0.3 \r\n 2006          139           26.71         30.3          9.4           0 \r\n 2006          140           22.57         25.61         10.92         0 \r\n 2006          141           13.536        17.64         10.27         0 \r\n 2006          142           27.452        24.41         8.89          0 \r\n 2006          143           22.84         28.47         12.54         0 \r\n 2006          144           22.724        28.5          16.46         11.2 \r\n 2006          145           9.363         23.98         17.76         5.1 \r\n 2006          146           21.351        26.91         15.4          0 \r\n 2006          147           12.58         29.09         17.49         3.8 \r\n 2006          148           26.779        32.78         20.17         0 \r\n 2006          149           19.603        30.14         20.5          0 \r\n 2006          150           12.638        24.39         17.25         10.2 \r\n 2006          151           26.613        28.52         16.37         0 \r\n 2006          152           24.544        28.06         15.85         0 \r\n 2006          153           27.395        30.68         15.18         0 \r\n 2006          154           26.33         30.84         16.15         0 \r\n 2006          155           25.925        26.86         17.71         0 \r\n 2006          156           22.349        27.62         15.09         0 \r\n 2006          157           28.334        31.29         18.73         0 \r\n 2006          158           26.668        31.5          18.01         0 \r\n 2006          159           21.851        30.67         17.03         0 \r\n 2006          160           21.702        26.04         17.5          0.3 \r\n 2006          161           10.263        18.21         11.51         0.3 \r\n 2006          162           9.061         16.73         11.64         0 \r\n 2006          163           27.101        24.22         7.86          0 \r\n 2006          164           27.991        28.95         12.12         0 \r\n 2006          165           16.527        28.24         15.85         0 \r\n 2006          166           10.066        29.52         19            0 \r\n 2006          167           26.444        32.65         21.71         0 \r\n 2006          168           20.844        28.49         20.35         0 \r\n 2006          169           24.456        31.61         18.79         0 \r\n 2006          170           28.992        29.07         14.76         0 \r\n 2006          171           12.398        28.56         16.54         2.8 \r\n 2006          172           19.343        29.19         19.18         1.5 \r\n 2006          173           24.146        28.11         17.05         0 \r\n 2006          174           26.228        29.22         15.41         0 \r\n 2006          175           13.471        26.52         15.91         1.8 \r\n 2006          176           17.709        21.53         15.18         4.1 \r\n 2006          177           28.312        25.54         13.02         0 \r\n 2006          178           25.639        26.75         14.14         0 \r\n 2006          179           27.342        27.37         12.32         0 \r\n 2006          180           27.194        29.25         12.71         0 \r\n 2006          181           13.417        28.22         18.54         2.8 \r\n 2006          182           17.147        32.48         18.16         2 \r\n 2006          183           1.792         28.13         20.54         10.9 \r\n 2006          184           18.612        30.19         18.79         3.3 \r\n 2006          185           27.666        25.72         15.5          0 \r\n 2006          186           28.305        25.54         13.5          0 \r\n 2006          187           26.696        26.95         14.29         0 \r\n 2006          188           23.187        26.87         13.57         0 \r\n 2006          189           12.011        25.44         16.55         0 \r\n 2006          190           27.996        31.81         16.14         0 \r\n 2006          191           8.093         23.53         18            3.3 \r\n 2006          192           14.347        26.82         19.78         19.1 \r\n 2006          193           12.222        26.16         19.95         7.1 \r\n 2006          194           19.657        31.73         18.59         3.3 \r\n 2006          195           26.892        30.47         16.85         2.5 \r\n 2006          196           27.254        32.56         20.21         1.8 \r\n 2006          197           27.835        34.04         20.45         0.8 \r\n 2006          198           25.221        33.32         20.54         0.5 \r\n 2006          199           28.157        31.14         15.29         0 \r\n 2006          200           22.774        33.01         20.07         0 \r\n 2006          201           24.063        29.77         19.04         0 \r\n 2006          202           15.464        25.13         17.67         1.8 \r\n 2006          203           26.459        27.9          15            0 \r\n 2006          204           26.78         30.46         16.08         0 \r\n 2006          205           20.617        29.58         19.29         3.6 \r\n 2006          206           17.886        30.95         19.23         2 \r\n 2006          207           26.13         30.45         20.06         11.9 \r\n 2006          208           17.852        30.46         20.58         3 \r\n 2006          209           25.816        32.1          19.67         1.5 \r\n 2006          210           25.272        33.17         21.52         1 \r\n 2006          211           25.773        34.33         22.02         0.3 \r\n 2006          212           26.112        34.52         23.05         0 \r\n 2006          213           11.322        31.64         22.18         4.6 \r\n 2006          214           12.52         28.13         20.16         1 \r\n 2006          215           26.596        28.36         18.16         0 \r\n 2006          216           26.314        29.05         15.45         0 \r\n 2006          217           19.66         28.58         18.21         3.6 \r\n 2006          218           21.905        30.66         18.99         4.1 \r\n 2006          219           13.934        26.33         18.89         0 \r\n 2006          220           8.688         23.33         17.49         0 \r\n 2006          221           18.85         30.03         18.84         4.8 \r\n 2006          222           17.311        28.44         19.47         12.7 \r\n 2006          223           17.669        25.96         19.6          12.7 \r\n 2006          224           18.365        26.87         18            1 \r\n 2006          225           7.852         26.05         18.11         1.3 \r\n 2006          226           25.552        25.81         15.32         1 \r\n 2006          227           24.46         28.07         15.07         1 \r\n 2006          228           20.163        27.36         15.91         1 \r\n 2006          229           9.184         27.04         18.6          1.3 \r\n 2006          230           13.418        27.92         20.51         1.3 \r\n 2006          231           9.291         22.41         15.61         1.3 \r\n 2006          232           22.749        25.93         13.71         1 \r\n 2006          233           22.65         28.7          14.37         1.5 \r\n 2006          234           22.121        29.61         16.83         0.5 \r\n 2006          235           22.969        30.47         17.06         0 \r\n 2006          236           21.823        31.67         18.92         0 \r\n 2006          237           6.537         23.63         19.81         0 \r\n 2006          238           11.18         25.19         17.32         0 \r\n 2006          239           14.558        26.44         14.88         5.8 \r\n 2006          240           5.542         18.99         15.3          15.5 \r\n 2006          241           21.307        25.84         16.27         2.5 \r\n 2006          242           21.872        26.53         13.7          1 \r\n 2006          243           22.662        25.31         13.77         1 \r\n 2006          244           17.59         25.32         12.16         1 \r\n 2006          245           9.033         24.36         13.68         1.5 \r\n 2006          246           16.372        22.75         10.95         12.7 \r\n 2006          247           19.399        21.47         10.44         1.3 \r\n 2006          248           20.884        26.52         11.94         1.5 \r\n 2006          249           20.178        27.91         14.21         1.8 \r\n 2006          250           19.863        27.5          12.76         2 \r\n 2006          251           21.006        29.02         12.8          1 \r\n 2006          252           7.221         20.66         13.18         0 \r\n 2006          253           1.58          16.43         13.25         25.4 \r\n 2006          254           3.62          15.8          12.66         5.6 \r\n 2006          255           7.062         17.36         11.52         0 \r\n 2006          256           21.216        24.59         9.59          0 \r\n 2006          257           20.132        25.78         9.63          0 \r\n 2006          258           19.375        27.36         11.98         0 \r\n 2006          259           18.233        29.46         15.64         18.3 \r\n 2006          260           16.162        20.2          7.9           16.5 \r\n 2006          261           9.391         13.58         6.54          0 \r\n 2006          262           12.533        13.8          3.9           0 \r\n 2006          263           19.8          16.82         1.1           0 \r\n 2006          264           2.676         16.51         10.16         11.4 \r\n 2006          265           9.966         21.68         11.34         0.5 \r\n 2006          266           7.606         16.4          8.88          0 \r\n 2006          267           18.905        19.8          8.68          0 \r\n 2006          268           17.707        23.62         6.99          0 \r\n 2006          269           18.436        25.39         8.05          0 \r\n 2006          270           12.123        17.22         9.28          0 \r\n 2006          271           13.781        14.41         4.01          0 \r\n 2006          272           16.392        21.85         6.07          0.3 \r\n 2006          273           15.927        24.33         8.28          0.3 \r\n 2006          274           16.256        30.28         8.56          0 \r\n 2006          275           14.382        29.27         17.84         0 \r\n 2006          276           16.188        31.3          16.59         0 \r\n 2006          277           7.706         23.67         12.51         0 \r\n 2006          278           16.127        19.29         9.1           0 \r\n 2006          279           16.045        20.12         5.55          0 \r\n 2006          280           15.873        24.43         8.94          0 \r\n 2006          281           11.508        22.73         10.53         0 \r\n 2006          282           8.96          15.49         7.93          0 \r\n 2006          283           3.393         10.06         7.11          1.3 \r\n 2006          284           7.418         8.13         -0.66          7.9 \r\n 2006          285           12.934        6.25         -3.6           0 \r\n 2006          286           16.189        11.04        -2.27          0 \r\n 2006          287           15.95         11.08        -2.63          0 \r\n 2006          288           5.315         14.52         3.38          4.6 \r\n 2006          289           2.677         12.97         10.28         14.2 \r\n 2006          290           3.799         16.12         7.47          3 \r\n 2006          291           3.336         7.53          2.4           9.1 \r\n 2006          292           12.055        7.76         -0.52          0 \r\n 2006          293           4.193         11.35         1.02          0 \r\n 2006          294           2.452         5.81          0.04          9.1 \r\n 2006          295           10.017        4.92         -2.49          0 \r\n 2006          296           9.505         4.87         -5.81          0 \r\n 2006          297           12.969        8.96         -5.68          0 \r\n 2006          298           10.769        11.51        -1.13          0 \r\n 2006          299           2.063         6.92          4.5           14 \r\n 2006          300           11.151        12.87         4.46          0 \r\n 2006          301           5.677         12.15         0.18          0 \r\n 2006          302           12.73         18.07        -1.05          0 \r\n 2006          303           9.082         20.77        -0.29          0 \r\n 2006          304           12.582        3.73         -6.47          0 \r\n 2006          305           11.287        5.58         -8.02          0 \r\n 2006          306           12.411        2.6          -8.93          0 \r\n 2006          307           11.3          10.67        -8.1           0 \r\n 2006          308           9.544         14.87         1.95          0 \r\n 2006          309           11.139        16.37        -1.9           0 \r\n 2006          310           1.846         10.76         2.24          0 \r\n 2006          311           9.269         18.58         4.49          0 \r\n 2006          312           10.685        26.49         7.64          0 \r\n 2006          313           10.603        14.06         3.71          0 \r\n 2006          314           2.463         4.06         -3.28          2 \r\n 2006          315           11.243        1.16         -8.75          0 \r\n 2006          316           5.503         8.42         -3.43          0 \r\n 2006          317           10.27         9.94          0.63          8.9 \r\n 2006          318           4.44          6.89          1.29          0 \r\n 2006          319           3.408         3.88          0.09          0 \r\n 2006          320           5.053         3.17         -2.78          0 \r\n 2006          321           9.81          6.11         -2.78          0 \r\n 2006          322           5.006         4.44         -3.67          0 \r\n 2006          323           9.797         4.7          -5.98          0 \r\n 2006          324           9.193         10.08        -7.11          0 \r\n 2006          325           9.42          12.93        -0.18          0 \r\n 2006          326           7.904         16.03        -0.72          0 \r\n 2006          327           7.966         16.59        -0.85          0 \r\n 2006          328           7.441         13.7          1.3           0 \r\n 2006          329           5.668         11.99         0.4           0 \r\n 2006          330           2.473         12.57         3.49          2 \r\n 2006          331           1.057         11.01         3.75          1.3 \r\n 2006          332           3.639         16.11         1.12          21.3 \r\n 2006          333           1.143         1.12         -9.17          4.1 \r\n 2006          334           6.816        -7.3          -13.04         0 \r\n 2006          335           9.343        -1.45         -13.7          0 \r\n 2006          336           8.996        -4.55         -12.46         0 \r\n 2006          337           9.669        -8.01         -14.58         0 \r\n 2006          338           8.775         2.14         -12.45         0 \r\n 2006          339           6.697         8.11         -10.92         0 \r\n 2006          340           5.044         3.92         -13.28         0 \r\n 2006          341           9.498        -8.43         -17.4          0 \r\n 2006          342           8.251         2.33         -14.43         0 \r\n 2006          343           9.298         10.7         -5.04          0 \r\n 2006          344           8.377         10.28         0.63          0 \r\n 2006          345           1.365         9.21         -0.31          0 \r\n 2006          346           1.173         7.6          -2.96          10.2 \r\n 2006          347           9.041         10.49        -4.26          0 \r\n 2006          348           7.29          12.6          2.84          0 \r\n 2006          349           6.931         5.45         -3.1           0 \r\n 2006          350           3.883         11.19         1.98          0 \r\n 2006          351           3.829         3.89         -2.11          0 \r\n 2006          352           7.109         2.97         -6.45          0 \r\n 2006          353           8.631         6.5          -8.69          0 \r\n 2006          354           1             3.57         -2.32          10.2 \r\n 2006          355           4.13          8.01          2.67          14.7 \r\n 2006          356           1.523         3.39          0.13          4.3 \r\n 2006          357           7.143         3.79         -3.15          0 \r\n 2006          358           7.223         6.06         -5.08          0 \r\n 2006          359           6.564         1.45         -5.65          0 \r\n 2006          360           8.526         5.03         -8.21          0 \r\n 2006          361           4.169         5.74         -1.56          0 \r\n 2006          362           5.763         7.69          0.25          0 \r\n 2006          363           5.041         10.51         3.65          0 \r\n 2006          364           1.081         9.82          5.39          1 \r\n 2006          365           1.508         9.56         -3.51          27.4 \r\n 2007          1             8.826         0.04         -6.52          2 \r\n 2007          2             8.348         1.93         -7.56          0 \r\n 2007          3             8.695         7.64         -2.28          0 \r\n 2007          4             4.532         9.42          1.03          0 \r\n 2007          5             3.302         4.16         -0.78          0 \r\n 2007          6             8.928         5.32         -4.14          0 \r\n 2007          7             3.158         1.98         -4.9           0 \r\n 2007          8             6.621         6.37         -5.48          0 \r\n 2007          9             8.198         1.44         -7.66          0 \r\n 2007          10            8.725         9.06         -7.97          0 \r\n 2007          11            3.172         7.35         -8.12          0 \r\n 2007          12            5.075        -8.09         -14.93         0 \r\n 2007          13            2.494        -9.89         -15.85         1.3 \r\n 2007          14            1.706        -6.44         -10            1.5 \r\n 2007          15            8.32         -8.68         -21.46         2.3 \r\n 2007          16            10.232       -13.14        -25.28         0 \r\n 2007          17            9.543        -6.37         -18.59         0 \r\n 2007          18            6.988        -2.47         -9.8           0 \r\n 2007          19            10.146       -1.99         -13.94         0 \r\n 2007          20            7.448        -3.5          -16.37         0 \r\n 2007          21            6.95         -2.71         -8.57          7.1 \r\n 2007          22            6.584        -4.82         -11.77         0 \r\n 2007          23            6.755        -1.64         -13.25         0 \r\n 2007          24            5.75         -0.89         -7.31          0 \r\n 2007          25            7.467        -3.69         -9.42          0 \r\n 2007          26            11.182        4.69         -5.58          0 \r\n 2007          27            10.06        -3.83         -16.9          0 \r\n 2007          28            11.468       -11.22        -20.78         0 \r\n 2007          29            9.005        -2.44         -16.23         0 \r\n 2007          30            11.832       -13.19        -20.5          0 \r\n 2007          31            6.956        -5.97         -20.94         0 \r\n 2007          32            12.058       -8.23         -19.64         0 \r\n 2007          33            12.45        -11.51        -22.15         0 \r\n 2007          34            12.607       -14.27        -23.57         0 \r\n 2007          35            12.574       -16.22        -23.84         0 \r\n 2007          36            9.152        -14.54        -22.52         0 \r\n 2007          37            9.151        -9.47         -17.27         2.3 \r\n 2007          38            7.321        -12.38        -18.23         0 \r\n 2007          39            9.124        -10.92        -17.94         0 \r\n 2007          40            11.6         -10.46        -17.2          0 \r\n 2007          41            12.452       -9.08         -21.45         0 \r\n 2007          42            7.945         0.74         -9.37          0 \r\n 2007          43            4.255        -1.09         -6.77          0 \r\n 2007          44            10.568       -6.75         -17.03         1.8 \r\n 2007          45            13.671       -13.32        -22.62         0 \r\n 2007          46            14.645       -14.3         -23.54         0 \r\n 2007          47            9.903        -3.77         -22.18         0 \r\n 2007          48            11.444       -4.09         -10.78         2.3 \r\n 2007          49            13.685        0.43         -12.18         0 \r\n 2007          50            11.9          5.36         -1.99          0 \r\n 2007          51            14.425        6.58         -2.48          0 \r\n 2007          52            14.778        9.74         -1.44          0 \r\n 2007          53            15.118        4.49         -3.65          0 \r\n 2007          54            7.888         3.57         -1.94          0 \r\n 2007          55            1.059         2.35         -1.6           18 \r\n 2007          56            8.593         0.16         -4.28          20.6 \r\n 2007          57            13.55        -1.18         -6.68          0 \r\n 2007          58            15.53         0.94         -5.68          0 \r\n 2007          59            3.863         0.6          -3.44          0 \r\n 2007          60            4.408         2.2          -4.41          18.3 \r\n 2007          61            12.109       -3.84         -8.53          9.9 \r\n 2007          62            17.242       -7.31         -14.1          0 \r\n 2007          63            17.688        1.29         -16.53         0 \r\n 2007          64            16.952       -0.65         -11.31         0 \r\n 2007          65            14.576        1.75         -12.3          0 \r\n 2007          66            9.196        -0.42         -5.52          0 \r\n 2007          67            17.684        6.39         -5.17          0 \r\n 2007          68            10.518        7.03         -0.78          2.3 \r\n 2007          69            17.356        10.17        -3.74          0 \r\n 2007          70            17.192        11.12        -1.52          0 \r\n 2007          71            14.733        14.69         3.09          0 \r\n 2007          72            17.615        19.78         6.15          0 \r\n 2007          73            9.356         10.72         1.04          0 \r\n 2007          74            12.808        7.98         -1.97          0 \r\n 2007          75            17.038        3.35         -4.48          0 \r\n 2007          76            14.872        5.69         -2.95          1.3 \r\n 2007          77            13.616        9.53         -3.28          0 \r\n 2007          78            18.86         11.02        -0.14          0 \r\n 2007          79            12.598        12           -2.46          0 \r\n 2007          80            4.768         20            6.19          2.3 \r\n 2007          81            17.464        14.69         2.14          0.2 \r\n 2007          82            12.998        18.39         5.5           0 \r\n 2007          83            5.246         19.76         11.41         14.7 \r\n 2007          84            19.27         24.68         13.14         0 \r\n 2007          85            16.443        24.71         12.17         0 \r\n 2007          86            10.592        18.96         10.31         0 \r\n 2007          87            6.948         17.92         10.78         10.9 \r\n 2007          88            4.254         15.92         10.81         0.5 \r\n 2007          89            7.958         20.62         11.54         2.3 \r\n 2007          90            5.351         18.31         5.89          18 \r\n 2007          91            6.272         12.55         3.54          0.8 \r\n 2007          92            13.967        14.29         2.91          0 \r\n 2007          93            7.846         11.14        -5.97          5.1 \r\n 2007          94            15.25         1.34         -8.04          0 \r\n 2007          95            23.318        2.46         -7.4           0 \r\n 2007          96            18.246       -1.08         -8.47          0 \r\n 2007          97            23.679        2.6          -9.86          0 \r\n 2007          98            22.98         5.71         -7.77          0 \r\n 2007          99            23.763        8.52         -5.86          0 \r\n 2007          100           4.263         9.36          0.2           25.5 \r\n 2007          101           6.775         2.3          -1.28          0 \r\n 2007          102           22.712        5.89         -1.4           0 \r\n 2007          103           17.74         9.59         -1.89          0 \r\n 2007          104           18.365        11.47         0.74          0 \r\n 2007          105           25.048        17.94         0.52          0 \r\n 2007          106           25.06         24.09         3.24          0 \r\n 2007          107           21.814        22.39         6.87          0 \r\n 2007          108           24.936        17.87         3.81          0 \r\n 2007          109           22.92         15.91         2.42          0 \r\n 2007          110           21.487        22.8          7.04          0.5 \r\n 2007          111           24.591        27.09         10.19         0 \r\n 2007          112           10.201        23.66         9.93          10.9 \r\n 2007          113           22.868        19.57         10.79         0 \r\n 2007          114           2.312         11.97         9.19          51.1 \r\n 2007          115           1.609         10.23         6.09          37.8 \r\n 2007          116           9.247         12.4          5.65          0 \r\n 2007          117           22.958        21.19         6.76          0 \r\n 2007          118           26.3          23.97         9.26          0 \r\n 2007          119           25.894        31.35         10.19         0 \r\n 2007          120           26.019        31.65         14.26         0 \r\n 2007          121           25.314        23.8          11.6          0 \r\n 2007          122           25.586        22.41         7.61          0 \r\n 2007          123           3.247         15.02         11.63         3.8 \r\n 2007          124           6.46          16.4          12.87         4.3 \r\n 2007          125           6.584         22.18         15.12         0 \r\n 2007          126           3.901         17.84         11.83         25.4 \r\n 2007          127           15.17         23.38         15.45         12.7 \r\n 2007          128           20.448        23.37         11.88         0 \r\n 2007          129           23.759        26.67         11.5          0 \r\n 2007          130           24.487        29.05         13.99         0 \r\n 2007          131           27.53         28.46         14.56         0 \r\n 2007          132           21.53         26.66         13.35         0 \r\n 2007          133           26.955        29.9          14.98         0 \r\n 2007          134           25.246        32.39         18.87         0 \r\n 2007          135           10.642        18.97         10.26         1 \r\n 2007          136           23.588        20.83         7.14          0 \r\n 2007          137           28.996        19.5          4.96          0 \r\n 2007          138           27.01         24.32         6.46          0 \r\n 2007          139           27.238        28.54         12.62         0 \r\n 2007          140           25.734        28.45         14.93         0 \r\n 2007          141           25.059        28.02         15.27         0 \r\n 2007          142           14.373        25.69         16.09         0 \r\n 2007          143           12.366        27.68         16.84         36.3 \r\n 2007          144           10.995        18.07         10.66         37.8 \r\n 2007          145           28.768        20.32         8.65          0 \r\n 2007          146           14.617        22.17         11.91         5.6 \r\n 2007          147           28.23         21.21         8.78          0 \r\n 2007          148           21.265        26.61         15.41         0 \r\n 2007          149           17.548        27.93         18.21         3 \r\n 2007          150           12.191        23.94         15.8          16.3 \r\n 2007          151           26.209        24.32         12.38         0 \r\n 2007          152           13.396        24.19         15.54         9.7 \r\n 2007          153           25.548        23.96         13.94         0 \r\n 2007          154           18.432        23.31         14.4          0 \r\n 2007          155           26.471        26.29         14.89         0 \r\n 2007          156           29.742        23.52         12.96         0 \r\n 2007          157           17.333        28.94         12.26         9.9 \r\n 2007          158           25.231        30.43         15.84         0 \r\n 2007          159           29.251        22.56         12.03         0 \r\n 2007          160           29.393        27.4          10.6          0 \r\n 2007          161           24.391        28.63         14.98         0 \r\n 2007          162           24.682        28.61         17.23         0 \r\n 2007          163           28.535        30.39         18.78         0 \r\n 2007          164           28.803        30.21         17.74         0 \r\n 2007          165           27.525        30.85         16.59         0 \r\n 2007          166           27.118        31.58         18.02         0 \r\n 2007          167           21.357        31.71         19.67         0 \r\n 2007          168           24.85         32.05         20.1          0 \r\n 2007          169           11.761        26.97         17.42         9.4 \r\n 2007          170           23.354        25.99         13.71         0 \r\n 2007          171           29.272        30.42         13.67         0 \r\n 2007          172           20.818        32.21         19.43         0.8 \r\n 2007          173           5.559         23.74         18.65         16.5 \r\n 2007          174           12.838        22.51         16.8          0 \r\n 2007          175           7.636         22.08         15.3          0 \r\n 2007          176           24.665        29.77         16.2          0 \r\n 2007          177           27.346        32.15         21.49         0 \r\n 2007          178           25.192        28            18.19         0 \r\n 2007          179           24.195        24.46         14.3          0 \r\n 2007          180           19.334        24.43         14.9          0 \r\n 2007          181           28.894        25.39         13.74         0 \r\n 2007          182           28.38         26.64         13.52         0 \r\n 2007          183           27.53         28.42         15.37         0 \r\n 2007          184           23.453        31.76         20.57         0 \r\n 2007          185           28.813        31.2          19.03         0 \r\n 2007          186           28.547        31.09         19.55         0 \r\n 2007          187           27.476        32.84         19.72         0 \r\n 2007          188           28.029        33.99         20            0 \r\n 2007          189           28.502        34.66         21.75         0 \r\n 2007          190           16.528        29.07         20.95         5.8 \r\n 2007          191           26.408        27.73         17.21         0 \r\n 2007          192           25.379        25.18         13.58         0 \r\n 2007          193           25.251        26.87         11.97         0 \r\n 2007          194           28.591        26.37         12.17         0 \r\n 2007          195           25.94         30.01         17.14         0 \r\n 2007          196           26.319        29.49         16.85         0 \r\n 2007          197           25.759        31.89         19.19         2.8 \r\n 2007          198           22.941        34.41         20.77         0 \r\n 2007          199           17.365        32.59         20.6          6.6 \r\n 2007          200           24.865        28.56         16.62         17.5 \r\n 2007          201           27.268        25.37         13.28         0 \r\n 2007          202           28.197        25.93         14.39         0 \r\n 2007          203           24.193        28.66         16.16         0 \r\n 2007          204           24.329        28.29         17.9          16.8 \r\n 2007          205           25.887        28.89         18.22         0 \r\n 2007          206           25.064        30.5          18.08         0 \r\n 2007          207           23.638        32.06         18.58         17.3 \r\n 2007          208           19.252        28.23         20.67         0 \r\n 2007          209           20.05         28.33         19.07         0 \r\n 2007          210           24.811        28.61         17.04         0 \r\n 2007          211           22.482        29            19.27         0 \r\n 2007          212           26.253        29.17         15.82         0 \r\n 2007          213           24.548        30.89         17.78         0 \r\n 2007          214           22.625        29.41         17.4          0 \r\n 2007          215           22.761        28.82         15.66         0 \r\n 2007          216           13.39         28.77         18.36         6.9 \r\n 2007          217           13.567        28.58         21.56         13.5 \r\n 2007          218           7.951         28.38         21.19         2.3 \r\n 2007          219           16.411        30.26         20.41         0.5 \r\n 2007          220           9.927         25.89         19.98         0.8 \r\n 2007          221           24.782        30.66         20.54         0 \r\n 2007          222           23.648        32.04         20.27         0 \r\n 2007          223           23.551        32.99         21.8          0 \r\n 2007          224           21.62         31.04         22.13         0.3 \r\n 2007          225           21.513        31.6          20.86         3 \r\n 2007          226           16.334        30.57         21.99         2 \r\n 2007          227           11.989        29.9          22.31         0.5 \r\n 2007          228           14.474        26.96         17.7          3 \r\n 2007          229           20.73         26.21         15.69         4.3 \r\n 2007          230           20.885        29.23         15.58         5.8 \r\n 2007          231           15.662        29.97         20.32         46.7 \r\n 2007          232           14.341        28.96         19.63         29.9 \r\n 2007          233           22.091        31.72         19.71         6.7 \r\n 2007          234           9.753         29            18.43         11.8 \r\n 2007          235           13.087        27.97         18.29         3 \r\n 2007          236           10.312        24.64         18.24         2.5 \r\n 2007          237           23.002        26.08         13.88         0 \r\n 2007          238           22.861        27.24         15.35         0 \r\n 2007          239           21.762        32.14         20.08         0 \r\n 2007          240           21.524        32.96         19.73         21.1 \r\n 2007          241           14.387        24.79         14.89         4.1 \r\n 2007          242           23.658        25.52         12.36         0 \r\n 2007          243           22.945        26.41         13.14         0 \r\n 2007          244           23.233        26.61         13.82         0 \r\n 2007          245           22.57         29.58         12.53         0 \r\n 2007          246           22.233        31.27         16.54         0 \r\n 2007          247           21.448        31.58         15.89         0 \r\n 2007          248           19.766        29.26         18.99         0 \r\n 2007          249           9.22          27.63         19.39         10.2 \r\n 2007          250           16.14         25.29         15.87         1 \r\n 2007          251           21.719        26.65         13.12         0 \r\n 2007          252           15.578        22.47         13.49         0 \r\n 2007          253           5.284         16.31         9.2           6.1 \r\n 2007          254           21.805        20.84         8.07          0 \r\n 2007          255           21.364        21.67         5.92          0 \r\n 2007          256           18.899        26.34         8.85          0 \r\n 2007          257           20.866        15.17         4.9           0 \r\n 2007          258           17.962        16.28         2.35          0 \r\n 2007          259           19.157        24.29         8.71          0 \r\n 2007          260           17.048        31.37         17.69         0 \r\n 2007          261           6.592         26.48         15.1          15.1 \r\n 2007          262           17.681        24.22         12.75         0 \r\n 2007          263           16.619        28.95         12.79         0 \r\n 2007          264           15.54         25.01         13.8          0 \r\n 2007          265           19.638        21.08         11.29         0 \r\n 2007          266           16.344        24.57         14.81         0 \r\n 2007          267           11.195        24.26         18.29         0 \r\n 2007          268           6.905         17.01         12.43         0 \r\n 2007          269           17.742        18.99         8.63          0 \r\n 2007          270           15.107        20.78         11.82         0 \r\n 2007          271           17.729        20.2          8.94          3 \r\n 2007          272           11.551        22            15.67         0 \r\n 2007          273           7.5           22.14         16.85         0 \r\n 2007          274           14.655        24.12         17.03         2.5 \r\n 2007          275           3.864         18.29         13.65         28.7 \r\n 2007          276           17.485        19.96         11.17         0 \r\n 2007          277           13.042        21.89         12.88         0 \r\n 2007          278           12.278        23.86         18.18         3.6 \r\n 2007          279           13.844        24.65         18.56         0 \r\n 2007          280           7.221         21.38         19.09         0 \r\n 2007          281           13.642        17.39         11.53         27.9 \r\n 2007          282           16.294        20.02         8.88          0 \r\n 2007          283           12.423        11.66         4.63          0 \r\n 2007          284           12.469        13.87         2.45          0 \r\n 2007          285           11.506        18.41         7.22          0 \r\n 2007          286           2.743         14.69         12.72         6.1 \r\n 2007          287           2.223         14.43         13.12         27.9 \r\n 2007          288           3.135         15.42         13.01         16.8 \r\n 2007          289           3.784         14.03         11.27         1.5 \r\n 2007          290           3.441         13.94         10.87         9.7 \r\n 2007          291           3.412         15.26         13.04         8.6 \r\n 2007          292           9.79          14.49         9.67          3.6 \r\n 2007          293           13.935        17.12         8.05          0 \r\n 2007          294           7.031         15.78         11.45         0 \r\n 2007          295           5.692         12.23         1.67          0 \r\n 2007          296           13.813        19.44        -0.01          0 \r\n 2007          297           13.756        14.66         0.59          0 \r\n 2007          298           13.634        14.75        -0.56          0 \r\n 2007          299           4.836         12.11         5.52          0 \r\n 2007          300           12.97         14.11         2.21          0.2 \r\n 2007          301           12.878        13.68        -1.67          0 \r\n 2007          302           12.339        15.64         6.03          0 \r\n 2007          303           9.393         15.71         9.41          0 \r\n 2007          304           11.161        14.77         1.61          0 \r\n 2007          305           12.325        13.38        -2.34          0 \r\n 2007          306           11.167        13.37         0.33          0 \r\n 2007          307           8.729         10.52        -1.64          0 \r\n 2007          308           10.514        12.76         0.94          0 \r\n 2007          309           10.754        12.19        -1.58          0 \r\n 2007          310           11.649        9.33         -5.84          0 \r\n 2007          311           8.849         7.27         -7.21          0 \r\n 2007          312           7.259         8.21         -1.22          0 \r\n 2007          313           10.611        10.23        -3.16          0 \r\n 2007          314           5.627         8.58         -0.86          0 \r\n 2007          315           5.141         13.01         7.42          0 \r\n 2007          316           6.778         12.51        -0.5           0 \r\n 2007          317           7.164         14.47        -3.65          0 \r\n 2007          318           6.723         8.54          2.63          0 \r\n 2007          319           10.231        9.02         -4.32          0 \r\n 2007          320           9.661         10.55         0.08          0 \r\n 2007          321           7.938         10.24         1.64          0 \r\n 2007          322           3.362         6.22          1.52          2.5 \r\n 2007          323           8.226         11.07         3.16          0 \r\n 2007          324           1.237         7.02          0.48          1 \r\n 2007          325           2.215         3.94         -5.92          0.8 \r\n 2007          326           3.696         2.29         -8.76          0 \r\n 2007          327           9.22          0.75         -12.21         0 \r\n 2007          328           5.419         0.19         -5.46          0 \r\n 2007          329           9.243         2.34         -4.97          0 \r\n 2007          330           8.638         3.67         -5             0 \r\n 2007          331           7.046         0.39         -8.87          0 \r\n 2007          332           5.28          0.02         -8.43          0 \r\n 2007          333           7.185        -0.15         -9.37          0 \r\n 2007          334           8.032        -0.28         -11.11         0 \r\n 2007          335           1             6.12         -7.07          30 \r\n 2007          336           5.06          0.88         -10.35         0.8 \r\n 2007          337           7.863         1.34         -10.23         0 \r\n 2007          338           4.201         3.26         -5.68          0 \r\n 2007          339           9.115         2.16         -10.16         0 \r\n 2007          340           2.471        -3.83         -11.42         3.6 \r\n 2007          341           6.232        -3.27         -9.69          1 \r\n 2007          342           2.798        -8.89         -12.78         1 \r\n 2007          343           3.167        -9.81         -12.24         0.2 \r\n 2007          344           5.646        -4.11         -11.92         0 \r\n 2007          345           3.29         -2.86         -7.22          10.7 \r\n 2007          346           4.927        -4.27         -9.07          0 \r\n 2007          347           7.579        -0.38         -8.02          0 \r\n 2007          348           7.578        -6.22         -12.54         0 \r\n 2007          349           5.455        -8.31         -13.97         0 \r\n 2007          350           5.873        -7.08         -13.63         0 \r\n 2007          351           7.869        -1.99         -14.93         0 \r\n 2007          352           8.024        -1.04         -8.47          0 \r\n 2007          353           7.182        -0.96         -11.79         0 \r\n 2007          354           7.753         1.26         -3.72          0 \r\n 2007          355           3.495         2.08         -1.12          0 \r\n 2007          356           2.368         1.94         -11.13         0 \r\n 2007          357           7.168        -4.27         -13.87         0 \r\n 2007          358           3.036        -4.27         -8.39          0 \r\n 2007          359           8.294         3.93         -8.4           0 \r\n 2007          360           4.154        -1.82         -7.07          0.2 \r\n 2007          361           2.794        -4            -7.32          0 \r\n 2007          362           5.972        -3.59         -8.79          1.8 \r\n 2007          363           6.945        -4.66         -11.53         0 \r\n 2007          364           5.771        -4.75         -14.46         0 \r\n 2007          365           5.478        -7.47         -15.46         0 \r\n 2008          1             5.198        -9.59         -16.42         0 \r\n 2008          2             5.198        -9.96         -18.16         0 \r\n 2008          3             7.381        -1.1          -15.8          0 \r\n 2008          4             7.069         2            -8.22          0 \r\n 2008          5             5.094         3.68         -3.95          0 \r\n 2008          6             5.148         4.51         -0.25          0 \r\n 2008          7             5.148         4.93         -2.88          0.5 \r\n 2008          8             5.883         1.32         -3.59          0 \r\n 2008          9             6.304         0.75         -6.23          0 \r\n 2008          10            4.202         0.06         -2.44          0 \r\n 2008          11            5.733        -0.18         -6.48          0 \r\n 2008          12            5.521        -3.04         -9.77          0.5 \r\n 2008          13            6.582        -2.93         -10.77         0 \r\n 2008          14            7.75         -5.36         -14.85         0 \r\n 2008          15            7.08         -6.04         -16.44         0 \r\n 2008          16            8.796        -2.8          -10.2          0 \r\n 2008          17            6.007        -10.2         -20.38         1.5 \r\n 2008          18            7.616        -10.29        -19.99         0 \r\n 2008          19            9.212        -16.31        -23.46         0 \r\n 2008          20            8.454        -12.05        -23.21         0 \r\n 2008          21            8.996        -8.81         -13.74         0 \r\n 2008          22            7.226        -9.57         -22.16         4.1 \r\n 2008          23            9.306        -11.81        -23.04         0.8 \r\n 2008          24            10.839       -13.1         -27.12         0 \r\n 2008          25            11.059       -4.77         -20.94         0 \r\n 2008          26            9.511        -1.28         -13.72         0 \r\n 2008          27            10.727        4.39         -10.42         0 \r\n 2008          28            11.505        7.11          2.41          0 \r\n 2008          29            11.728        4.32         -18.88         0 \r\n 2008          30            10.165       -13.34        -19.96         0 \r\n 2008          31            7.558        -4.98         -14.37         0 \r\n 2008          32            9.701        -1.3          -12.22         0 \r\n 2008          33            9.569        -1.04         -6.29          0 \r\n 2008          34            6.835        -0.97         -5.77          0.5 \r\n 2008          35            5.809         1.24         -3.14          1.5 \r\n 2008          36            3.22         -0.1          -6.64          1.8 \r\n 2008          37            5.751        -4.73         -8.37          1.3 \r\n 2008          38            7.432        -5.29         -9.73          0 \r\n 2008          39            8.012         0.39         -8.88          0 \r\n 2008          40            11.032       -1.22         -15.29         0 \r\n 2008          41            14.068       -15.25        -20.55         0 \r\n 2008          42            5.275        -14.8         -18.09         0 \r\n 2008          43            6.035        -11.35        -21.4          1.3 \r\n 2008          44            13.253       -4.73         -22.56         0 \r\n 2008          45            15.049       -1.38         -16.61         0 \r\n 2008          46            14.572       -8.18         -19.02         0 \r\n 2008          47            13.138        0.79         -13.63         0 \r\n 2008          48            9.523         0.53         -7.13          1.8 \r\n 2008          49            10.849       -7.17         -16.45         0 \r\n 2008          50            11.557       -5.83         -20.16         0 \r\n 2008          51            16.18        -15.13        -25.68         0 \r\n 2008          52            13.135       -9.26         -18.79         0 \r\n 2008          53            10.925       -4.22         -14.2          0 \r\n 2008          54            15.235       -0.16         -13.33         0 \r\n 2008          55            15.73         4.43         -7.14          0 \r\n 2008          56            12.872        0.95         -4.43          6.1 \r\n 2008          57            10.622       -4.23         -9.99          1.5 \r\n 2008          58            12.86        -4.29         -11.18         0 \r\n 2008          59            12.607        0.74         -9.09          0 \r\n 2008          60            11.333        3.76         -2.08          0 \r\n 2008          61            10.047        3.42         -3.78          0 \r\n 2008          62            14.499        13           -2.2           9.9 \r\n 2008          63            15.523       -2.2          -10.05         0 \r\n 2008          64            14.881       -2.5          -9.59          0 \r\n 2008          65            12.034       -1.83         -10.01         0 \r\n 2008          66            13.974       -1.75         -11.43         0 \r\n 2008          67            16.562       -6.62         -14.86         0 \r\n 2008          68            17.487       -3.37         -15.92         0 \r\n 2008          69            15.79        -0.56         -6.82          0 \r\n 2008          70            19.082        0.97         -9.4           0 \r\n 2008          71            15.792        10.12        -3.48          0 \r\n 2008          72            17.651        13.57         0.7           0 \r\n 2008          73            18.845        13.58         0.62          0 \r\n 2008          74            18.868        8.04         -0.33          0 \r\n 2008          75            18.601        0.78         -1.62          0 \r\n 2008          76            14.572        4.09         -1.1           0 \r\n 2008          77            7.825         2.28         -0.29          5.3 \r\n 2008          78            7.346         5.38          1.01          0 \r\n 2008          79            4.761         10.41        -1.07          0 \r\n 2008          80            15.496        12.53         0.12          0 \r\n 2008          81            19.747        6.23         -0.2           0 \r\n 2008          82            20.183        4.22         -0.92          0 \r\n 2008          83            12.82        -0.22         -4.22          0 \r\n 2008          84            13.099        8.54         -5.99          0 \r\n 2008          85            18.54         11.48        -1.66          0 \r\n 2008          86            23.596        10.23        -2.99          0 \r\n 2008          87            24.206        2.11         -3.57          10 \r\n 2008          88            16.987        4.12         -7.71          0 \r\n 2008          89            13.696        8.56         -2.02          0 \r\n 2008          90            21.542        8.53          3.43          0 \r\n 2008          91            19.696        5.18          0.53          43.2 \r\n 2008          92            10.208        6.79         -1.24          0 \r\n 2008          93            12.025        10.73        -2.83          0 \r\n 2008          94            23.615        4.54          0.75          7.1 \r\n 2008          95            23.649        14.97        -1.13          0 \r\n 2008          96            15.036        17.15         3.72          0 \r\n 2008          97            26.035        15.99         0.96          0 \r\n 2008          98            24.564        12           -0.27          0 \r\n 2008          99            25.74         5.69          1.21          0.2 \r\n 2008          100           22.229        9.96         -1.21          0 \r\n 2008          101           16.894        10.82         2.94          20.6 \r\n 2008          102           15.378        9.02          0.13          2.5 \r\n 2008          103           14.333        0.53         -1.06          1 \r\n 2008          104           12.634        7.34         -1.32          0 \r\n 2008          105           12.484        11.82        -2.62          0 \r\n 2008          106           26.211        19.15         1.69          0 \r\n 2008          107           27.726        24.39         9.62          0 \r\n 2008          108           27.319        9.62          4.94          21.3 \r\n 2008          109           27.319        9.06          4.97          7.1 \r\n 2008          110           6.764         11.21         5.21          0 \r\n 2008          111           8.762         18.63         8.15          0 \r\n 2008          112           16.567        22.23         7.82          0.5 \r\n 2008          113           21.831        21.23         5.55          11.7 \r\n 2008          114           18.556        23.69         8.3           0 \r\n 2008          115           24.794        22.24         14.02         9.1 \r\n 2008          116           18.217        17.32         0.97          28.4 \r\n 2008          117           15.547        12.11         0.35          0 \r\n 2008          118           25.126        12.39         1.27          0 \r\n 2008          119           22.457        6.68         -1.88          0 \r\n 2008          120           24.038        11.79        -2.31          0 \r\n 2008          121           21.658        19.87         2.02          0 \r\n 2008          122           25.48         23.95         11.54         0 \r\n 2008          123           24.856        18.62         4.74          12.4 \r\n 2008          124           22.771        13.87         4.11          0.2 \r\n 2008          125           17.639        21.4          2.1           0 \r\n 2008          126           25.189        24.72         6.41          0 \r\n 2008          127           26.48         27.14         10.53         42.7 \r\n 2008          128           25.849        17.54         9.68          0.8 \r\n 2008          129           17.72         18.69         6.46          0 \r\n 2008          130           23.085        18.64         10.11         0 \r\n 2008          131           20.296        16.11         9.5           6.9 \r\n 2008          132           18.168        15.2          4.35          0.2 \r\n 2008          133           16.313        20.38         5.29          0 \r\n 2008          134           24.388        17.53         8.14          0 \r\n 2008          135           23.234        19.08         4.87          0 \r\n 2008          136           23.556        21.67         7.21          0 \r\n 2008          137           25.049        24.59         7.68          0 \r\n 2008          138           26.708        27.42         13.64         0 \r\n 2008          139           26.051        20.07         9.01          0 \r\n 2008          140           27.387        23.24         10.14         1 \r\n 2008          141           21.542        19.74         7.65          0 \r\n 2008          142           25.551        22.48         5.15          0 \r\n 2008          143           26.224        16.48         10.78         0 \r\n 2008          144           23.702        15.62         10.18         25.4 \r\n 2008          145           9.814         18.34         9.03          1 \r\n 2008          146           10.829        29.93         14.37         1.3 \r\n 2008          147           16.075        26.24         14.8          0 \r\n 2008          148           18.105        16.28         7.68          10.7 \r\n 2008          149           19.926        17.59         8.41          0 \r\n 2008          150           9.537         19.06         11.28         48.3 \r\n 2008          151           14.136        25.58         15.6          30.2 \r\n 2008          152           13.454        26.79         13.39         0 \r\n 2008          153           23.827        28.24         14.79         0 \r\n 2008          154           24.17         24.94         16.85         12.9 \r\n 2008          155           16.628        21.33         14.49         41.4 \r\n 2008          156           15.085        21.81         15.98         2 \r\n 2008          157           10.285        27.79         17.39         25.6 \r\n 2008          158           11.214        23.61         17.78         2.5 \r\n 2008          159           14.32         30.29         16.76         0 \r\n 2008          160           18.633        24.66         17.61         26.9 \r\n 2008          161           16.735        24.53         14.69         5.6 \r\n 2008          162           14.837        27.76         12.61         0.2 \r\n 2008          163           18.46         27.77         16.84         55.1 \r\n 2008          164           23.463        25.95         15.43         6.1 \r\n 2008          165           16.735        24.67         14.35         0 \r\n 2008          166           21.356        29.57         13.36         0 \r\n 2008          167           23.787        27.54         16.17         0.2 \r\n 2008          168           24.829        23.39         13.03         0 \r\n 2008          169           25.697        25.73         13.53         0 \r\n 2008          170           25.871        27.98         14.6          0 \r\n 2008          171           25.871        28.43         15.71         0 \r\n 2008          172           26.044        30.11         14.07         0 \r\n 2008          173           26.392        28.28         15.92         6.6 \r\n 2008          174           26.044        27            15.37         0 \r\n 2008          175           19.273        27.77         13.98         0 \r\n 2008          176           25.871        25.75         17.49         0 \r\n 2008          177           22.745        31.23         16.41         0 \r\n 2008          178           20.662        22.79         16.68         50.5 \r\n 2008          179           17.363        28.64         17.84         1.8 \r\n 2008          180           11.807        22.54         13.8          0.5 \r\n 2008          181           19.15         26.11         15.8          0 \r\n 2008          182           18.633        26.94         14.66         0 \r\n 2008          183           25.361        28.74         14.14         0 \r\n 2008          184           25.706        30.2          19.31         0 \r\n 2008          185           23.463        25.7          13.81         0 \r\n 2008          186           25.706        26.08         13.88         0 \r\n 2008          187           23.291        27.03         14.66         0 \r\n 2008          188           22.428        31.23         19.51         0.2 \r\n 2008          189           20.227        33.23         20.21         12.9 \r\n 2008          190           16.113        28.34         19.5          4.8 \r\n 2008          191           15.942        28.32         17.78         0 \r\n 2008          192           23.827        30.21         19.88         4.3 \r\n 2008          193           20.741        30.7          21.52         9.7 \r\n 2008          194           18.564        24.27         14.31         0.5 \r\n 2008          195           17.201        27            12.54         0 \r\n 2008          196           21.97         31.1          14.27         0 \r\n 2008          197           24.865        32.22         18.77         0 \r\n 2008          198           24.525        27.55         20.45         0 \r\n 2008          199           20.136        31.39         19.02         36.8 \r\n 2008          200           17.936        26.07         19.08         0.2 \r\n 2008          201           15.229        27.85         17.57         29.7 \r\n 2008          202           17.819        31.43         18.77         0 \r\n 2008          203           14.793        27.5          17.79         25.9 \r\n 2008          204           16.306        27.65         17.19         0.2 \r\n 2008          205           15.297        25.63         16.37         1.3 \r\n 2008          206           21.041        20.37         15.92         18.8 \r\n 2008          207           13.694        26.68         18.99         0 \r\n 2008          208           8.35          28.5          18.13         0 \r\n 2008          209           18.911        29.43         16.93         40.4 \r\n 2008          210           20.902        29.03         19.33         0.2 \r\n 2008          211           15.428        30.09         20.29         14.7 \r\n 2008          212           18.126        29.59         18.64         0 \r\n 2008          213           15.325        30.28         19.29         0.2 \r\n 2008          214           19.477        28.6          18.43         0 \r\n 2008          215           19.477        27.86         15.92         0 \r\n 2008          216           23.078        34.79         20.75         0 \r\n 2008          217           21.947        32.09         22.5          1.3 \r\n 2008          218           20.159        27.05         15.08         0 \r\n 2008          219           18.892        25.42         14.68         0 \r\n 2008          220           23.251        27.59         17.24         0 \r\n 2008          221           21.798        27.37         14.71         0 \r\n 2008          222           23.733        29.06         17.35         0 \r\n 2008          223           22.13         25.9          16.7          0 \r\n 2008          224           19.588        24.67         13.56         0 \r\n 2008          225           21.658        22.13         15.91         12.4 \r\n 2008          226           13.696        28.33         14.31         3.6 \r\n 2008          227           14.708        27.5          15.72         4.8 \r\n 2008          228           16.289        25.13         14.77         0.2 \r\n 2008          229           15.861        26.43         14.04         0 \r\n 2008          230           21.829        27.05         15.11         0 \r\n 2008          231           21.363        28.8          14.53         0.2 \r\n 2008          232           21.363        29.48         15.5          0 \r\n 2008          233           20.902        27.11         16.29         0 \r\n 2008          234           20.283        21.54         18.15         0.2 \r\n 2008          235           17.678        29.91         19.29         0 \r\n 2008          236           11.222        24.78         15.48         0 \r\n 2008          237           19.83         24.34         12.38         0 \r\n 2008          238           20.603        24.91         11.81         0 \r\n 2008          239           20.909        24.31         12.07         0 \r\n 2008          240           20.605        24.77         14.13         5.6 \r\n 2008          241           13.939        28.06         16.25         16.8 \r\n 2008          242           11.882        27.27         11.37         0 \r\n 2008          243           21.659        28.3          13.22         0 \r\n 2008          244           20.753        28.56         13.85         0 \r\n 2008          245           19.409        30.44         17.2          0 \r\n 2008          246           17.338        27.73         14.44         0 \r\n 2008          247           16.449        18.77         10.46         0 \r\n 2008          248           19.563        18.97         9.88          0 \r\n 2008          249           9.708         21.34         8.24          0.8 \r\n 2008          250           17.08         18.96         9.01          0.2 \r\n 2008          251           13.43         21.28         9.14          0 \r\n 2008          252           15.792        15.24         7.24          3.3 \r\n 2008          253           12.17         20.24         5.89          0.2 \r\n 2008          254           12.652        22.14         11.22         2.8 \r\n 2008          255           18.402        24.06         15.92         20.3 \r\n 2008          256           10.7          19.66         16.75         12.9 \r\n 2008          257           7.704         23.76         14.74         1 \r\n 2008          258           4.105         16.38         11.16         0 \r\n 2008          259           14.722        19.64         6.9           0 \r\n 2008          260           14.186        26.87         8.34          0 \r\n 2008          261           17.416        29.06         11.01         0 \r\n 2008          262           18.533        26.48         13.91         0 \r\n 2008          263           17.836        26.03         12.5          0 \r\n 2008          264           16.312        26.78         11.84         0 \r\n 2008          265           16.451        24.99         11.66         0 \r\n 2008          266           16.044        22.66         14.64         1 \r\n 2008          267           13.85         27.6          16.36         11.2 \r\n 2008          268           10.746        26.89         14.71         0.2 \r\n 2008          269           10.066        26.18         12.34         0 \r\n 2008          270           15.246        27.5          14.08         0 \r\n 2008          271           14.976        26.39         12.89         0 \r\n 2008          272           14.319        21.27         11.49         0 \r\n 2008          273           14.72         20.24         8.66          12.4 \r\n 2008          274           8.361         19.02         5.55          0 \r\n 2008          275           15.527        16.17         6.03          0 \r\n 2008          276           13.95         20.28         2.96          0 \r\n 2008          277           15.134        19.27         7.48          0 \r\n 2008          278           15.529        21.13         4.78          0 \r\n 2008          279           14.616        25.24         13.13         0 \r\n 2008          280           14.233        24.79         15.32         13.5 \r\n 2008          281           11.257        17.03         7.09          17.5 \r\n 2008          282           8.339         21.93         5.21          0 \r\n 2008          283           10.135        20.05         7.62          0 \r\n 2008          284           14.371        23.31         8.26          0 \r\n 2008          285           13.481        25.56         11.37         0 \r\n 2008          286           12.481        24.22         16.27         0 \r\n 2008          287           10.968        19.58         6.97          7.1 \r\n 2008          288           8.248         13            3.29          3.6 \r\n 2008          289           9.248         14.17         3.24          9.4 \r\n 2008          290           7.06          14.3          1.14          0 \r\n 2008          291           11.891        9.04          5.96          1 \r\n 2008          292           10.68         13.5          2.11          0 \r\n 2008          293           8.225         22.31         6.89          0 \r\n 2008          294           10.434        16.46         2.62          0 \r\n 2008          295           10.705        10.21        -0.32          1.3 \r\n 2008          296           11.8          9.65          5.5           14.2 \r\n 2008          297           5.545         9.03          4.45          6.6 \r\n 2008          298           3.616         8.39          1.58          5.1 \r\n 2008          299           2.628         17.54         1.62          0.2 \r\n 2008          300           6.091         10            1.43          1.8 \r\n 2008          301           10.532        4.74         -3.39          0 \r\n 2008          302           7.337         10.07        -5.3           0 \r\n 2008          303           10.082        17.06         0.15          0 \r\n 2008          304           11.137        22.12         1.56          0 \r\n 2008          305           11.371        23.57         6.69          0 \r\n 2008          306           10.799        19.41         4.58          0 \r\n 2008          307           10.451        24.29         8.93          0 \r\n 2008          308           9.546         24.33         10.61         0 \r\n 2008          309           8.281         22.18         13.04         0 \r\n 2008          310           7.476         18.4          12.15         17.8 \r\n 2008          311           4.784         12.53         2.95          11.4 \r\n 2008          312           5.354         2.96         -0.29          0 \r\n 2008          313           5.302         0.28         -2.85          0 \r\n 2008          314           2.369        -1.88         -6.25          0 \r\n 2008          315           4.738         5.28          2             7.7 \r\n 2008          316           5.808         4.59         -0.07          5.3 \r\n 2008          317           4.356         5.82          2.03          0 \r\n 2008          318           2.322         11.32         2.5           6.1 \r\n 2008          319           4.202         7.57         -0.41          0 \r\n 2008          320           4.202         2.37         -3.66          0 \r\n 2008          321           4.817         5.6          -4.28          0 \r\n 2008          322           6.131         2.02         -6.32          0 \r\n 2008          323           6.35          0.7          -8.5           0 \r\n 2008          324           7.912         8.26         -4.03          0 \r\n 2008          325           7.695        -1.03         -10.65         0 \r\n 2008          326           7.587        -3.59         -14.22         0 \r\n 2008          327           8.129        -0.95         -5.21          0 \r\n 2008          328           6.865         8.93         -9.7           0 \r\n 2008          329           8.046         6.38         -3.14          0 \r\n 2008          330           9.118         2.54         -6.97          0 \r\n 2008          331           8.6           7.55         -5.62          0 \r\n 2008          332           8.069         6.68         -5.47          0 \r\n 2008          333           8.494         8.47         -4.63          0 \r\n 2008          334           8.281         2.45         -5.02          5.3 \r\n 2008          335           8.281        -0.56         -4.65          0 \r\n 2008          336           2.837        -3.68         -10.99         0 \r\n 2008          337           4.308         4.06         -12.25         0 \r\n 2008          338           7.775         0.81         -10.49         0 \r\n 2008          339           7.88         -6.09         -13.24         0 \r\n 2008          340           5.778         0.51         -13.08         0 \r\n 2008          341           6.861         1.81         -13.12         0 \r\n 2008          342           8.213        -4.97         -12.81         0 \r\n 2008          343           6.549        -1.15         -8.4           2.7 \r\n 2008          344           5.822        -1.5          -14.03         0 \r\n 2008          345           4.054        -4.27         -15.8          0 \r\n 2008          346           7.589         1.07         -6.59          0 \r\n 2008          347           7.277         0.13         -12.35         0 \r\n 2008          348           7.589         7.58         -1.04          0 \r\n 2008          349           7.405         8.25         -18.67         0 \r\n 2008          350           6.068        -15.95        -21.07         2.6 \r\n 2008          351           8.742        -14.18        -20.06         0 \r\n 2008          352           2.674        -11.59        -19.95         0 \r\n 2008          353           2.983        -7.29         -17.84         21.4 \r\n 2008          354           6.068        -5.31         -10.13         0 \r\n 2008          355           4.526        -5.15         -21.44         0 \r\n 2008          356           5.862        -19.45        -22.38         0 \r\n 2008          357           8.228        -11.9         -25.78         0 \r\n 2008          358           5.143        -1.45         -11.91         0 \r\n 2008          359           8.228        -8.31         -19.74         0 \r\n 2008          360           5.76         -1.3          -20.52         0 \r\n 2008          361           6.891         10.42        -1.49          0 \r\n 2008          362           8.742         8.3          -7.53          0 \r\n 2008          363           8.022         1.72         -8.35          0 \r\n 2008          364           4.782         3.57         -5.27          0 \r\n 2008          365           7.069         2.69         -12.33         0 \r\n 2008          366           7.069        -7.52         -17.64         0 \r\n 2009          1             4.772         1.23         -8.32          0 \r\n 2009          2             6.992        -1.03         -10.41         0 \r\n 2009          3             1.082        -1.17         -7.06          0 \r\n 2009          4             8.454        -6.05         -15.54         0 \r\n 2009          5             9.021        -0.1          -13.81         0 \r\n 2009          6             7.535         0.2          -11.01         0 \r\n 2009          7             6.091        -4.92         -13.27         0 \r\n 2009          8             7.891        -5.3          -15.22         0 \r\n 2009          9             3.868        -3.84         -8.73          13.4 \r\n 2009          10            8.198        -8.71         -18.48         0 \r\n 2009          11            6.604        -3.48         -11.19         0 \r\n 2009          12            4.559         0.58         -18.15         0 \r\n 2009          13            7.712        -14.85        -23.77         0 \r\n 2009          14            9.451        -14.13        -26.8          4.1 \r\n 2009          15            10.07        -22.68        -31.43         0 \r\n 2009          16            6.625        -10.26        -29.84         0 \r\n 2009          17            4.322        -0.93         -11.25         0 \r\n 2009          18            7.245        -0.6          -6.3           0 \r\n 2009          19            6.078        -5.97         -13.26         0 \r\n 2009          20            8.501        -5.83         -13.38         0 \r\n 2009          21            10.183       -1.72         -12.16         0 \r\n 2009          22            10.159        6.67         -9.7           0 \r\n 2009          23            7.641        -1.32         -18.85         0 \r\n 2009          24            10.443       -14.52        -22.6          0 \r\n 2009          25            9.678        -11.13        -17.59         1.5 \r\n 2009          26            7.198        -10.83        -16.82         0 \r\n 2009          27            6.428        -10.16        -21.12         0 \r\n 2009          28            9.207        -6.28         -24.5          0 \r\n 2009          29            9.216        -3.6          -11.57         0 \r\n 2009          30            10.715       -4.38         -17.17         0 \r\n 2009          31            11.148        5.65         -8.04          0 \r\n 2009          32            10.522        2.23         -4.26          0 \r\n 2009          33            11.278       -2.26         -18.68         0 \r\n 2009          34            12.025       -11.94        -19.87         0 \r\n 2009          35            11.856       -7.93         -19.76         0 \r\n 2009          36            11.953        5.08         -11.22         0 \r\n 2009          37            10.699        9.2          -5.15          0 \r\n 2009          38            11.998        9.07         -1.14          0 \r\n 2009          39            11.43         2.63         -4.84          0 \r\n 2009          40            4.756         13.21         0.24          2.5 \r\n 2009          41            12.87         13.38         3.55          0.5 \r\n 2009          42            3.71          3.54         -0.16          0 \r\n 2009          43            13.251        5.99         -1.39          0 \r\n 2009          44            1.996         0.21         -6.71          0.2 \r\n 2009          45            13.995       -0.18         -10.83         1.5 \r\n 2009          46            14.06        -0.87         -10.1          0 \r\n 2009          47            13.527        1.04         -8.94          0 \r\n 2009          48            6.199         4.75         -4.66          0 \r\n 2009          49            5.799         1.38         -12.13         0.5 \r\n 2009          50            14.688       -4.07         -14.72         0 \r\n 2009          51            9.781         1.01         -9.68          0 \r\n 2009          52            11.523       -4.52         -11.84         0 \r\n 2009          53            14.996       -3.82         -14.8          0 \r\n 2009          54            13.448       -1.57         -13.98         0 \r\n 2009          55            14.428        10.59        -4.55          0 \r\n 2009          56            14.556        11.68        -1.01          0 \r\n 2009          57            2.757         3.16         -5.67          0 \r\n 2009          58            12.306       -3.34         -9.19          0 \r\n 2009          59            15.218       -2.71         -9.81          0 \r\n 2009          60            16.442       -4.78         -15.24         0 \r\n 2009          61            15.208       -1.54         -9.9           0 \r\n 2009          62            10.375        1.56         -7.39          0 \r\n 2009          63            16.129        11.81        -5.85          0 \r\n 2009          64            16.389        20.26         1.44          0 \r\n 2009          65            15.859        14.25         0             18.8 \r\n 2009          66            1.831         4.13          0.59          23.3 \r\n 2009          67            3.49          2.06          0.14          3.1 \r\n 2009          68            2.816         3.19         -0.3           7.7 \r\n 2009          69            2.539         2.51         -12.07         0 \r\n 2009          70            18.174       -6.94         -14.22         0 \r\n 2009          71            17.771       -3.04         -14.27         0 \r\n 2009          72            14.593        5.69         -4.35          0 \r\n 2009          73            19.25         10           -3.54          0 \r\n 2009          74            18.087        15.11        -0.76          0 \r\n 2009          75            18.701        20.37         1.16          0 \r\n 2009          76            18.549        18.78         3.95          0 \r\n 2009          77            13.302        13.7          1.54          0 \r\n 2009          78            17.717        10.52        -2.07          0 \r\n 2009          79            9.44          12.67         0             0 \r\n 2009          80            19.522        19.59         1.2           0 \r\n 2009          81            15.54         17.89         5.99          1.5 \r\n 2009          82            6.421         18.05         8.6           33.8 \r\n 2009          83            8.241         12.28         0.36          0 \r\n 2009          84            11.231        9.56         -0.52          0 \r\n 2009          85            12.82         6.99         -2.11          0 \r\n 2009          86            18.84         0.37         -5.74          0 \r\n 2009          87            6.341         1.56         -1.93          0 \r\n 2009          88            22.236        8.37         -3.46          0 \r\n 2009          89            20.887        13.26         0.22          0 \r\n 2009          90            5.681         9.04         -0.35          0 \r\n 2009          91            21.357        11.12        -1.87          0 \r\n 2009          92            15.164        9.29         -1.93          0 \r\n 2009          93            22.609        12.65        -3.37          0 \r\n 2009          94            12.724        13.72         2.9           7.2 \r\n 2009          95            10.987        4.57         -1.57          0 \r\n 2009          96            22.848        2.72         -4.04          0 \r\n 2009          97            24.154        6.67         -5             0 \r\n 2009          98            23.314        12.8         -1.04          0 \r\n 2009          99            12.832        10.42        -0.92          0 \r\n 2009          100           21.506        12.41         0.51          0 \r\n 2009          101           23.523        14.82         0             0 \r\n 2009          102           16.352        12.02         1.92          0 \r\n 2009          103           9.787         7.78          3.43          2.6 \r\n 2009          104           24.274        16.46         1.49          0 \r\n 2009          105           23.426        18.89         0.76          0 \r\n 2009          106           17.991        19.26         7.49          0 \r\n 2009          107           23.929        21.18         5.91          0 \r\n 2009          108           8.973         18.39         11            2.8 \r\n 2009          109           12.41         13.66         4.24          0 \r\n 2009          110           14.513        11.3          2.06          0 \r\n 2009          111           24.732        16.24         1.84          0 \r\n 2009          112           25.936        21.83         5.26          0 \r\n 2009          113           21.446        24.34         13.42         0 \r\n 2009          114           24.559        28.54         12.81         2.6 \r\n 2009          115           8.667         15.15         8.79          6.9 \r\n 2009          116           7.919         20.72         10.95         50.4 \r\n 2009          117           11.742        12.35         5.17          4.3 \r\n 2009          118           20.632        14.12         3.51          0 \r\n 2009          119           4.952         14.27         9.01          6.1 \r\n 2009          120           9.169         17.91         9.39          0 \r\n 2009          121           18.397        15.41         5.94          0 \r\n 2009          122           25.559        18.57         4.96          0 \r\n 2009          123           24.092        21.32         6.63          0 \r\n 2009          124           15.592        21.27         9.59          0 \r\n 2009          125           20.179        23.24         10.44         5.9 \r\n 2009          126           10.95         20.05         12.49         4.1 \r\n 2009          127           15.175        22.15         10.28         2.6 \r\n 2009          128           17.744        23.17         8.9           9 \r\n 2009          129           25.188        17.12         5.55          0 \r\n 2009          130           20.187        15.79         5.92          0 \r\n 2009          131           26.946        19.62         3.21          0 \r\n 2009          132           14.078        21.6          9.71          8.3 \r\n 2009          133           11.207        22.73         9.08          6.4 \r\n 2009          134           23.942        18.58         4.91          2.9 \r\n 2009          135           4.367         16.73         8.86          4.6 \r\n 2009          136           28.689        15.39         4.22          9 \r\n 2009          137           13.943        15.59         3.46          0 \r\n 2009          138           26.7          25.29         8.66          0 \r\n 2009          139           27.613        30.41         12.94         0 \r\n 2009          140           27.482        29.11         15.38         0 \r\n 2009          141           20.834        24.96         13.85         0 \r\n 2009          142           18.254        24.61         13.19         0 \r\n 2009          143           16.226        26.27         15.87         7.6 \r\n 2009          144           24.21         25.25         14.28         0 \r\n 2009          145           17.314        22.76         13.99         0 \r\n 2009          146           7.959         18.12         12.99         20.2 \r\n 2009          147           8.965         15.62         11            9.6 \r\n 2009          148           21.324        23.09         10            0 \r\n 2009          149           24.659        25.3          12.26         0 \r\n 2009          150           27.08         25.78         12.31         0 \r\n 2009          151           22.969        27.27         8.57          0 \r\n 2009          152           17.671        25.85         16.4          2.6 \r\n 2009          153           14.129        21.15         12.98         15.2 \r\n 2009          154           30.369        21.65         10.85         0 \r\n 2009          155           29.122        24.21         11.58         0 \r\n 2009          156           29.168        26.54         11.8          0 \r\n 2009          157           10.218        24.95         13.53         11.1 \r\n 2009          158           17.572        24.23         15.73         6.9 \r\n 2009          159           13.836        20.04         12.28         9.5 \r\n 2009          160           17.955        19.63         9.8           0 \r\n 2009          161           16.988        22.32         13.84         0 \r\n 2009          162           21.426        23.91         14.66         0 \r\n 2009          163           13.322        23.9          14.37         3.6 \r\n 2009          164           15.737        23.16         13.36         10 \r\n 2009          165           18.061        24.03         12.42         0 \r\n 2009          166           13.223        24.61         15.54         0 \r\n 2009          167           8.431         23.87         16.94         0 \r\n 2009          168           26.233        31.28         15.7          0 \r\n 2009          169           20.825        32.07         17.54         14 \r\n 2009          170           14.188        27.99         19.38         7 \r\n 2009          171           25.545        29.28         17.37         5 \r\n 2009          172           18.595        30.99         20.62         14 \r\n 2009          173           29.016        33.66         20.75         0 \r\n 2009          174           16.944        34.92         19.23         17 \r\n 2009          175           20.56         29.06         18.38         14 \r\n 2009          176           26.854        31.98         21.92         0 \r\n 2009          177           16.667        29.47         20.72         0 \r\n 2009          178           20.556        29.86         19.24         0 \r\n 2009          179           29.627        27.17         14.48         0 \r\n 2009          180           29.631        27.64         14.63         0 \r\n 2009          181           23.695        24.28         14.26         0 \r\n 2009          182           22.175        25.95         14.51         0 \r\n 2009          183           30.137        27.92         13.74         0 \r\n 2009          184           13.384        26.92         15.12         0 \r\n 2009          185           4.917         20.37         16.34         6 \r\n 2009          186           10.021        26.89         15.16         0 \r\n 2009          187           10.444        28.64         16.43         0 \r\n 2009          188           10.617        28.82         17            3 \r\n 2009          189           18.796        25.02         16.19         3 \r\n 2009          190           9.409         24.82         15.08         0 \r\n 2009          191           21.18         28.95         16.95         5 \r\n 2009          192           25.152        26.11         18.12         0 \r\n 2009          193           15            24.68         16.22         0 \r\n 2009          194           27.514        27.24         15.57         1 \r\n 2009          195           18.668        27.75         19.75         3 \r\n 2009          196           26.107        25.69         17.59         3 \r\n 2009          197           20.696        22.89         11.85         0 \r\n 2009          198           18.559        19.19         11.28         0 \r\n 2009          199           15.957        22.36         13.99         0 \r\n 2009          200           26.41         23.59         13.15         0 \r\n 2009          201           21.875        26.03         12.68         0 \r\n 2009          202           15.668        23.73         15.25         3 \r\n 2009          203           25.997        27.57         12.8          0 \r\n 2009          204           24.604        28.16         15.4          0 \r\n 2009          205           26.116        30.73         15.29         0 \r\n 2009          206           24.865        26.54         15.75         0 \r\n 2009          207           26.065        27.08         15.11         0 \r\n 2009          208           22.266        28.99         15.82         0 \r\n 2009          209           24.415        25.24         16.37         0 \r\n 2009          210           23.753        25.14         11.8          0 \r\n 2009          211           23.382        23.25         14.09         3 \r\n 2009          212           26.026        26.31         12.07         0 \r\n 2009          213           25.58         22.71         12.37         0 \r\n 2009          214           25.93         29.23         11.06         0 \r\n 2009          215           24.358        28.84         17.97         3 \r\n 2009          216           22.439        27            14.96         0 \r\n 2009          217           19.305        25.29         12.69         0 \r\n 2009          218           19.359        25.43         14.44         0 \r\n 2009          219           10.049        28.91         18.1          3 \r\n 2009          220           22.173        32.7          21.29         0 \r\n 2009          221           8.554         25.84         19.19         3 \r\n 2009          222           20.49         27.99         18.57         3 \r\n 2009          223           24.886        28.34         17.42         3 \r\n 2009          224           20.719        29.68         17.78         3 \r\n 2009          225           19.29         30.25         20.06         0 \r\n 2009          226           22.843        30.45         19.62         0 \r\n 2009          227           10.816        27.56         18.84         0 \r\n 2009          228           19.587        25.95         17.97         3 \r\n 2009          229           15.791        25.38         16.11         0 \r\n 2009          230           23.678        26.46         13.26         0 \r\n 2009          231           13.623        25.36         15.79         5 \r\n 2009          232           19.751        21.67         14.44         4 \r\n 2009          233           11.43         16.54         14.11         0 \r\n 2009          234           22.849        15.98         12.6          0 \r\n 2009          235           23.669        24.89         12            0 \r\n 2009          236           23.511        27.12         12.37         0 \r\n 2009          237           9.551         26.77         17.55         8 \r\n 2009          238           3.883         21.58         16.64         10 \r\n 2009          239           4.363         18.11         15.25         13 \r\n 2009          240           16.043        24.74         15.36         0 \r\n 2009          241           23.456        20.36         9.84          0 \r\n 2009          242           13.636        18.79         7.94          0 \r\n 2009          243           20.046        20.34         9.39          0 \r\n 2009          244           20.668        20.98         8.99          0 \r\n 2009          245           22.299        22.89         9.28          0 \r\n 2009          246           21.383        22.78         10            0 \r\n 2009          247           19.201        24.44         10.56         0 \r\n 2009          248           19.833        25            13.89         0 \r\n 2009          249           19.898        25.56         11.67         0 \r\n 2009          250           17.694        24.44         13.33         2 \r\n 2009          251           17            25.56         13.89         2 \r\n 2009          252           18.076        26.67         13.89         0 \r\n 2009          253           16.138        26.67         13.89         0 \r\n 2009          254           16.476        26.11         15            2 \r\n 2009          255           16.873        27.22         17.22         0 \r\n 2009          256           17.843        26.11         13.89         0 \r\n 2009          257           16.203        23.89         12.22         2 \r\n 2009          258           18.795        26.87         9.5           2 \r\n 2009          259           16.353        27.62         13.4          0 \r\n 2009          260           17.964        25.52         12.21         0 \r\n 2009          261           18.186        27.2          11.88         0 \r\n 2009          262           14.039        25.63         12.98         0 \r\n 2009          263           10.6          24.58         12.85         5 \r\n 2009          264           4.729         21.94         13.26         6 \r\n 2009          265           15.457        22.48         13.25         0 \r\n 2009          266           10.564        23.37         10.71         0 \r\n 2009          267           7.862         22.22         16.11         16 \r\n 2009          268           13.768        22.54         12.49         0 \r\n 2009          269           13.511        20.71         11.62         0 \r\n 2009          270           17.197        26.3          11.88         0 \r\n 2009          271           16.335        16.85         9.89          0 \r\n 2009          272           18.067        18.33         7.66          0 \r\n 2009          273           17.334        19.83         5.58          0 \r\n 2009          274           1.121         15.67         9.73          5 \r\n 2009          275           3.231         11.33         9.23          8 \r\n 2009          276           7.382         12.39         6.89          0 \r\n 2009          277           15.585        14.09         4.8           0 \r\n 2009          278           10.398        14.98         6.61          0 \r\n 2009          279           9.658         16.41         10.45         1.3 \r\n 2009          280           7.708         14.39         4.22          3 \r\n 2009          281           18.067        20.37        -0.11          0 \r\n 2009          282           3.872         10.22         6.68          3 \r\n 2009          283           16.121        11.15        -1.92          0 \r\n 2009          284           11.322        5.64         -4.38          0 \r\n 2009          285           6.809         3.96         -5.29          0 \r\n 2009          286           4.233         5.58          1.31          0 \r\n 2009          287           13.033        8.44         -3.88          2 \r\n 2009          288           4.11          7.69          3.15          4.8 \r\n 2009          289           3.959         7.46          4.23          2 \r\n 2009          290           6.198         7.22          2.55          0.8 \r\n 2009          291           6.16          7.69         -0.55          0 \r\n 2009          292           15.717        15.98        -0.88          0 \r\n 2009          293           13.696        19.74         5.94          0 \r\n 2009          294           2.718         16.37         10.08         0 \r\n 2009          295           5.983         20.62         7.39          42.5 \r\n 2009          296           1.292         7.53          4.69          38.3 \r\n 2009          297           4.07          5.78          0.53          4.8 \r\n 2009          298           11.507        12.91        -2.23          1.8 \r\n 2009          299           5.896         12.34         2.58          0.8 \r\n 2009          300           9.873         11.33         0.77          0 \r\n 2009          301           14.75         13.21        -1.36          0 \r\n 2009          302           4.316         14.05         7.16          0 \r\n 2009          303           1.508         13.01         9.61          48.8 \r\n 2009          304           5.124         16.72         3.28          1.5 \r\n 2009          305           14.271        10.42         0.77          0 \r\n 2009          306           9.976         18.06         1.41          0 \r\n 2009          307           11.677        13.38         0.87          0 \r\n 2009          308           6.604         8.84         -4.14          0 \r\n 2009          309           12.913        11.43        -0.54          0 \r\n 2009          310           12.473        15.2         -4.32          0 \r\n 2009          311           10.544        19.81         5.98          0 \r\n 2009          312           12.674        22.04         5.78          0 \r\n 2009          313           11.998        23.67         5.24          0 \r\n 2009          314           11.07         17.76         4.91          0 \r\n 2009          315           12.327        16.78         1.03          0 \r\n 2009          316           11.957        14.83        -1.35          0 \r\n 2009          317           6.176         15.91         2.85          0 \r\n 2009          318           3.288         13.98         6.86          0 \r\n 2009          319           5.312         11.73         1.03          0 \r\n 2009          320           4.618         6.25         -2.23          0 \r\n 2009          321           4.981         9.38          3.56          0.2 \r\n 2009          322           6.522         9.38          2.24          0 \r\n 2009          323           2.039         6.72          3.42          1 \r\n 2009          324           3.891         7.53          0.9           0.2 \r\n 2009          325           9.646         12.1         -1.39          0 \r\n 2009          326           6.326         10.56        -3.27          0.2 \r\n 2009          327           2.696         11.27         6.62          0 \r\n 2009          328           5.73          12.78         6.35          0 \r\n 2009          329           1             8.74          5.1           23.6 \r\n 2009          330           1.756         5.24          0.59          2 \r\n 2009          331           5.095         1.44         -3.07          0 \r\n 2009          332           9.064         8.27         -3.58          0 \r\n 2009          333           9.765         13.15        -3.01          0 \r\n 2009          334           2.77          4.09          0.12          0 \r\n 2009          335           10.137        10.12        -4.55          0 \r\n 2009          336           8.928         15.61         1.24          0 \r\n 2009          337           6.386         2.72         -3.42          0 \r\n 2009          338           3.607        -1.93         -8.1           0 \r\n 2009          339           5.165        -4.35         -11.29         0 \r\n 2009          340           9.335         4.28         -10.04         0 \r\n 2009          341           3.601        -2.8          -7.89          0 \r\n 2009          342           6.621        -5.77         -11.13         0.2 \r\n 2009          343           3.803        -2.64         -7.96          1.5 \r\n 2009          344           6.499        -4.69         -18.96         0 \r\n 2009          345           10.26        -11.7         -23.53         0 \r\n 2009          346           10.057       -4.44         -20.34         6.6 \r\n 2009          347           7.034         0.87         -13.32         0 \r\n 2009          348           4.797         0.16         -8.27          0 \r\n 2009          349           5.022        -1.02         -16.63         0 \r\n 2009          350           10.154       -13.38        -21.05         0 \r\n 2009          351           9.875        -5.46         -19.87         0 \r\n 2009          352           7.715         0.09         -9.44          1.3 \r\n 2009          353           6.163        -3.17         -9.71          0 \r\n 2009          354           4.285        -3.37         -9.48          0 \r\n 2009          355           4.405        -1.52         -7.42          0.2 \r\n 2009          356           3.878        -3.3          -7.52          0 \r\n 2009          357           3.236        -0.78         -3.47          0 \r\n 2009          358           1.801         0.26         -1.35          11.7 \r\n 2009          359           2.217         0.67         -4.86          4.8 \r\n 2009          360           4.682        -1.04         -10.32         2.3 \r\n 2009          361           9.682        -5.19         -14.13         0.5 \r\n 2009          362           9.132        -3.03         -15.02         2 \r\n 2009          363           6.341        -2.76         -17.13         0 \r\n 2009          364           9.168        -9.19         -20.92         0 \r\n 2009          365           6.073        -0.48         -9.5           0.5 \r\n 2010          1             10.118       -8.1          -18.82         0 \r\n 2010          2             8.524        -13.76        -24.54         0 \r\n 2010          3             9.688        -18.82        -29.65         0 \r\n 2010          4             7.745        -12.2         -24.03         0 \r\n 2010          5             10.679       -15.75        -25.89         0 \r\n 2010          6             10.658       -13.92        -25.38         0 \r\n 2010          7             4.541        -9.63         -19.53         4.3 \r\n 2010          8             7.198        -11.06        -19.3          0.2 \r\n 2010          9             8.708        -15.55        -22.88         0 \r\n 2010          10            11.084       -9.96         -26.27         0 \r\n 2010          11            9.722        -6.33         -23.08         0 \r\n 2010          12            10.614       -5.49         -13.29         0 \r\n 2010          13            9.122        -6.31         -11.16         0 \r\n 2010          14            11.185        3.09         -10.14         0 \r\n 2010          15            9.483         2.22         -4.86          0 \r\n 2010          16            5.886        -1.86         -5.8           0 \r\n 2010          17            9.818        -0.28         -6.98          0 \r\n 2010          18            5.508         0.77         -2.6           0 \r\n 2010          19            6.6          -2.33         -8.09          0 \r\n 2010          20            6.396        -3.84         -8.09          0 \r\n 2010          21            2.886        -0.34         -4.68          5.1 \r\n 2010          22            4.361         0.67         -1.18          3.8 \r\n 2010          23            4.939         0.97         -1.15          0 \r\n 2010          24            2.345         2.02         -0.07          6.3 \r\n 2010          25            8.196         1.28         -3.77          0.2 \r\n 2010          26            7.038        -3.64         -12.04         0 \r\n 2010          27            12.227       -9.23         -14.64         0 \r\n 2010          28            7.971        -5.02         -14.2          0 \r\n 2010          29            11.848       -13.7         -19.06         0 \r\n 2010          30            12.831       -11.97        -20.24         0 \r\n 2010          31            10.067       -7.08         -18.55         0 \r\n 2010          32            11.317       -8.9          -14.56         0 \r\n 2010          33            6.652        -2.99         -12.04         0.8 \r\n 2010          34            11.715       -3.4          -16.22         0 \r\n 2010          35            12.426       -4.51         -19.06         0 \r\n 2010          36            6.918        -0.04         -4.65          0 \r\n 2010          37            6.926         0.44         -2.83          0.2 \r\n 2010          38            11.857       -0.81         -7.02          0 \r\n 2010          39            8.879        -2.83         -6.81          0 \r\n 2010          40            8.753        -2.76         -21.67         1 \r\n 2010          41            11.732       -4.79         -26.03         0 \r\n 2010          42            15.378       -7.11         -19.36         0 \r\n 2010          43            9.666        -6.17         -22.24         0 \r\n 2010          44            8.499        -2.91         -8.99          0 \r\n 2010          45            11.898       -3.28         -7.15          0.5 \r\n 2010          46            11.715       -5.46         -11.57         0.2 \r\n 2010          47            11.925       -5.6          -10.14         0 \r\n 2010          48            16.658       -4.89         -11.7          0 \r\n 2010          49            16.593       -2.94         -15.78         0 \r\n 2010          50            14.504        4.55         -17.64         0 \r\n 2010          51            8.609        -3.96         -12.67         1 \r\n 2010          52            13.699       -1.73         -6.61          0 \r\n 2010          53            9.502        -3.77         -10.79         0 \r\n 2010          54            15.741       -4.82         -14.23         0 \r\n 2010          55            15.404       -6.74         -17.84         0 \r\n 2010          56            18.501       -10.28        -22.41         0 \r\n 2010          57            18.503       -4.88         -24.47         0 \r\n 2010          58            12.618        0.06         -19.97         0 \r\n 2010          59            19.035       -1.87         -12.64         0 \r\n 2010          60            18.871       -0.34         -13.05         0 \r\n 2010          61            18.277       -2.37         -11.02         0 \r\n 2010          62            19.331        0.22         -13.22         0 \r\n 2010          63            18.657        2.82         -11.43         0 \r\n 2010          64            17.445        7.46         -16.8          0 \r\n 2010          65            19.768        2.12         -8.33          0 \r\n 2010          66            7.277         2.36         -4.52          11.9 \r\n 2010          67            9.401         2.86          0.19          0.8 \r\n 2010          68            12.284        2.35         -0.34          0 \r\n 2010          69            4.035         2.53          0.06          5.8 \r\n 2010          70            9.276         4.21          0.84          1.8 \r\n 2010          71            5.888         4.78          0.84          13.7 \r\n 2010          72            7.995         5.22          0.53          0.2 \r\n 2010          73            4.567         3.94          1.38          0 \r\n 2010          74            14.545        10.07         2.66          0 \r\n 2010          75            13.451        11.34         1.11          0 \r\n 2010          76            6.535         6.09          1.34          13.2 \r\n 2010          77            13.685        13.72         2.22          0 \r\n 2010          78            19.292        16.49         1.01          0 \r\n 2010          79            3.638         7.39         -2.67          0.5 \r\n 2010          80            16.339        3.16         -3.71          0 \r\n 2010          81            22.125        8.28         -3.64          0 \r\n 2010          82            20.869        13.33        -3.19          0 \r\n 2010          83            19.989        14.81         0.41          0 \r\n 2010          84            5.338         10.77         2.76          0 \r\n 2010          85            22.163        9.43         -3.07          0 \r\n 2010          86            20.358        11.34        -4.72          0 \r\n 2010          87            11.193        12.39         1.61          0 \r\n 2010          88            19.351        12.83        -0.3           0 \r\n 2010          89            22.246        16.73        -3.23          0 \r\n 2010          90            21.118        24.97         7             0 \r\n 2010          91            19.918        26.24         11.98         0 \r\n 2010          92            21.037        29.94         10.7          0 \r\n 2010          93            7.122         20.33         5.78          5.1 \r\n 2010          94            21.788        17.44        -0.01          0 \r\n 2010          95            11.161        17.01         5.73          0 \r\n 2010          96            12.479        18.98         0.77          4.1 \r\n 2010          97            11.774        22.62         8.01          35.6 \r\n 2010          98            3.697         9.83          2.59          5.8 \r\n 2010          99            25.43         12.39         0.23          0 \r\n 2010          100           24.61         21.61         0.21          0 \r\n 2010          101           14.074        16.86         3.43          0 \r\n 2010          102           23.133        21.54         4.55          0 \r\n 2010          103           12.991        20.23         7.54          0 \r\n 2010          104           22.31         26.59         9.43          0 \r\n 2010          105           20.281        27.72         13            0 \r\n 2010          106           15.195        27.22         13.23         14.2 \r\n 2010          107           21.591        16.56         3.47          0 \r\n 2010          108           26.491        17.98         0.13          0 \r\n 2010          109           22.889        19.93         2.33          0 \r\n 2010          110           20.298        21.51         5.97          0 \r\n 2010          111           19.987        22.76         4.28          0 \r\n 2010          112           15.873        21.72         6.64          8.1 \r\n 2010          113           22.663        21.65         4.85          0 \r\n 2010          114           3.199         14.35         8.78          11.4 \r\n 2010          115           15.927        19.56         11.92         20.8 \r\n 2010          116           3.708         12.42         8.65          9.9 \r\n 2010          117           4.957         10.84         7.21          3.8 \r\n 2010          118           26.74         15.98         5.93          0 \r\n 2010          119           25.58         20.06         3.92          0 \r\n 2010          120           24.609        27.56         11.14         0 \r\n 2010          121           13.474        19.96         12.56         16 \r\n 2010          122           26.393        20.77         8.02          0 \r\n 2010          123           20.82         21.68         8.76          0 \r\n 2010          124           27.03         19.42         6.37          0 \r\n 2010          125           27.14         28.61         9.91          2.8 \r\n 2010          126           29.171        19.83         7.64          0.5 \r\n 2010          127           18.548        18.62         3.3           1.3 \r\n 2010          128           10.559        13.03         4.92          10.7 \r\n 2010          129           13.07         11.38         1.79          0 \r\n 2010          130           21.023        14.95        -0.26          0 \r\n 2010          131           5.836         11.62         6.93          24.9 \r\n 2010          132           4             12.52         7.27          9.7 \r\n 2010          133           3.757         9.93          5.52          33.8 \r\n 2010          134           12.435        13.57         7.14          2.3 \r\n 2010          135           27.384        20.53         4.58          0 \r\n 2010          136           22.379        21.84         7.95          0 \r\n 2010          137           22            17.74         11.68         0 \r\n 2010          138           23.168        21.82         9.97          0 \r\n 2010          139           29.58         23.73         6.64          0 \r\n 2010          140           28.784        24.03         8.89          0 \r\n 2010          141           11.513        19.6          11.25         1.5 \r\n 2010          142           15            21.31         13.2          0.8 \r\n 2010          143           19.02         29            11.62         1 \r\n 2010          144           17.503        29            21.82         0 \r\n 2010          145           29.123        32.33         20.03         0 \r\n 2010          146           24.662        30.94         18.58         2.8 \r\n 2010          147           25.063        28            16.36         0 \r\n 2010          148           30.684        30.11         11.99         0 \r\n 2010          149           30.853        29.78         11.05         0 \r\n 2010          150           30.75         29.72         13.07         0 \r\n 2010          151           25.288        30.78         15.29         3.6 \r\n 2010          152           30.527        27.89         13.81         1.5 \r\n 2010          153           20.37         29.28         13.78         19.6 \r\n 2010          154           21.28         23.97         14.72         0 \r\n 2010          155           28.603        26.26         11.59         1.8 \r\n 2010          156           25.818        29.94         17.41         20.1 \r\n 2010          157           17.884        27.56         13.81         6.1 \r\n 2010          158           30.139        27.56         12.03         0 \r\n 2010          159           6.265         22.73         16.97         0 \r\n 2010          160           11.546        26.6          17.01         25.4 \r\n 2010          161           30.485        27.72         15.26         0.2 \r\n 2010          162           7.504         22.12         16.06         23.4 \r\n 2010          163           21.917        30.22         18.35         5.1 \r\n 2010          164           17.957        28.17         18.72         34 \r\n 2010          165           7.451         22.06         16.19         27.4 \r\n 2010          166           13            26.78         18.01         2.8 \r\n 2010          167           19.805        24.81         14.55         0 \r\n 2010          168           29.141        28.28         12.87         0 \r\n 2010          169           26.043        31.78         17.06         13.5 \r\n 2010          170           15.373        26.57         15.72         7.9 \r\n 2010          171           27.057        28            15.6          0.8 \r\n 2010          172           13.141        26.5          19.16         0.2 \r\n 2010          173           20            27.28         18.65         5.6 \r\n 2010          174           27.978        31.67         19.77         2.8 \r\n 2010          175           23.09         28.06         16.54         7.6 \r\n 2010          176           30.561        27.72         15.43         0 \r\n 2010          177           29.699        29.72         17.25         19.1 \r\n 2010          178           28.074        31.5          18.66         45.2 \r\n 2010          179           22.063        26.72         18.62         35.3 \r\n 2010          180           30.643        26.33         15.29         0 \r\n 2010          181           30.965        24.91         12.81         0 \r\n 2010          182           30.604        26.47         12.6          0 \r\n 2010          183           30.287        27.39         15.19         0 \r\n 2010          184           29.912        28.67         16.31         0 \r\n 2010          185           26.146        30.67         19.73         0 \r\n 2010          186           5.221         24.18         20.03         32.8 \r\n 2010          187           8.991         25.16         20.11         1.5 \r\n 2010          188           23.398        29            20.27         0 \r\n 2010          189           23            29.06         19.26         0.2 \r\n 2010          190           24.564        26.13         18.52         0 \r\n 2010          191           29.999        29.44         16.51         0 \r\n 2010          192           30.15         28.83         16.51         0 \r\n 2010          193           20            27.17         18.87         1 \r\n 2010          194           12.368        25.82         17.87         18 \r\n 2010          195           27.799        29.06         17.24         0.2 \r\n 2010          196           25.854        33.67         21.73         5.6 \r\n 2010          197           28.361        28.61         19.37         0 \r\n 2010          198           29.335        30.28         15.39         0.8 \r\n 2010          199           28.962        32.5          18.49         0.2 \r\n 2010          200           26.152        29.22         17.77         58.7 \r\n 2010          201           15.16         26.07         16.85         19.6 \r\n 2010          202           20            27.94         20.04         0 \r\n 2010          203           23.731        28.83         19.3          0 \r\n 2010          204           22.883        32.11         21.24         0.8 \r\n 2010          205           14.847        31.17         23.71         9.1 \r\n 2010          206           20            26.43         18.16         1.5 \r\n 2010          207           26.948        28.61         16.41         0 \r\n 2010          208           25.276        29.94         17.12         0 \r\n 2010          209           27.819        32.44         21.59         0 \r\n 2010          210           24.268        28.33         17.49         0 \r\n 2010          211           24.349        26.94         14.79         0 \r\n 2010          212           24            25.33         19.23         40.6 \r\n 2010          213           24.815        29.5          18.89         0.2 \r\n 2010          214           27.518        30.22         17.02         0 \r\n 2010          215           8.743         25.63         20.78         9.7 \r\n 2010          216           25.418        31.28         20.92         14 \r\n 2010          217           17.683        29.83         20.82         30.2 \r\n 2010          218           26.657        27            16.48         0 \r\n 2010          219           26.745        28.61         15.67         0 \r\n 2010          220           25.898        30.33         18.59         30.7 \r\n 2010          221           25.351        33.39         21.39         55.1 \r\n 2010          222           17.139        29.17         20.85         37.6 \r\n 2010          223           25.32         31.89         19.9          85.8 \r\n 2010          224           26.46         32.33         20.34         2 \r\n 2010          225           26.1          33.17         21.96         0 \r\n 2010          226           16.623        30.17         23.41         0.5 \r\n 2010          227           20.919        30.33         20.31         0 \r\n 2010          228           26.594        25.97         15.83         0 \r\n 2010          229           23.369        28.39         13.75         0 \r\n 2010          230           5.521         20.96         15.9          12.2 \r\n 2010          231           22.205        27.17         13.95         0 \r\n 2010          232           24.08         29.67         19.07         0 \r\n 2010          233           11.169        26.54         19.81         2.3 \r\n 2010          234           24.557        31.94         20.41         0 \r\n 2010          235           25.08         32.28         19.07         0.2 \r\n 2010          236           25.577        30.06         18.33         0 \r\n 2010          237           21.439        24.99         13.55         0.2 \r\n 2010          238           25.547        25.33         11.06         0 \r\n 2010          239           24.599        27.33         10.08         0 \r\n 2010          240           25.004        28.94         16.54         0 \r\n 2010          241           25.084        30            14.83         0 \r\n 2010          242           23.313        31.78         16.31         0 \r\n 2010          243           23.662        30.83         20.92         0 \r\n 2010          244           11.905        29.56         19.12         118.9 \r\n 2010          245           15.643        26.83         17.66         3.6 \r\n 2010          246           9.756         24.18         13.72         2.3 \r\n 2010          247           24.355        21.15         10.08         0 \r\n 2010          248           24.333        23.08         7.15          0 \r\n 2010          249           17.602        26.58         12.2          0.8 \r\n 2010          250           15.08         27.61         13.65         8.4 \r\n 2010          251           23.869        22.61         11.16         0 \r\n 2010          252           22.719        23.98         7.15          0 \r\n 2010          253           8.218         22.91         15.39         0 \r\n 2010          254           9.243         21.5          15.5          10.9 \r\n 2010          255           22.392        24.92         12.17         0.2 \r\n 2010          256           21.216        30.22         10.32         0 \r\n 2010          257           16.308        27.83         11.93         0.5 \r\n 2010          258           16.058        27.17         11.89         0.2 \r\n 2010          259           16.436        27.28         14.19         0.2 \r\n 2010          260           8.341         17.02         8.94          0 \r\n 2010          261           18.744        27.17         9.17          0.2 \r\n 2010          262           1.384         17.89         8.19          16.5 \r\n 2010          263           3.191         12.87         7.55          5.1 \r\n 2010          264           17.525        31.11         12.71         0 \r\n 2010          265           3.51          23.96         17.99         49 \r\n 2010          266           7.574         26.83         17.89         0.8 \r\n 2010          267           5.376         25.5          12.87         23.6 \r\n 2010          268           19.883        21.36         10.05         0 \r\n 2010          269           2.879         12.47         6.64          18 \r\n 2010          270           20.457        19.88         5.12          0.2 \r\n 2010          271           18.984        22.07         4.32          0 \r\n 2010          272           19.56         23.01         9.92          0 \r\n 2010          273           18.759        29            9.41          0.2 \r\n 2010          274           19.263        24.19         8.41          0 \r\n 2010          275           18.787        25.71         5.74          0 \r\n 2010          276           17.587        14.69         0.99          0 \r\n 2010          277           18.977        15.31        -0.8           0 \r\n 2010          278           18.995        17.93         0.69          0 \r\n 2010          279           18.618        21.5          3.48          0 \r\n 2010          280           16.972        26.11         8.03          0 \r\n 2010          281           18.541        24.87         1.77          0 \r\n 2010          282           16.857        30.11         6.75          0 \r\n 2010          283           17.152        29.78         11.9          0 \r\n 2010          284           15.727        28.11         9.14          0 \r\n 2010          285           7.729         24.12         11.9          0 \r\n 2010          286           13.387        27.67         9.04          10.7 \r\n 2010          287           16.515        20.13         4.36          0 \r\n 2010          288           16.698        23.63         1.79          0 \r\n 2010          289           16.891        19.76         2             0 \r\n 2010          290           15.753        22.91         5.83          0 \r\n 2010          291           15.545        17.8          0.99          0 \r\n 2010          292           14.028        16.89         2.71          0 \r\n 2010          293           13.813        17.5          0.62          0 \r\n 2010          294           15.65         21.78         3.18          0 \r\n 2010          295           15.533        16.48         1.49          0 \r\n 2010          296           13.856        23.82         2.71          0 \r\n 2010          297           8.688         21.74         13.65         2 \r\n 2010          298           1.708         17.46         12.88         0 \r\n 2010          299           5.24          20.43         9.04          0 \r\n 2010          300           4.432         13.77         7.18          7.9 \r\n 2010          301           9.294         11.16         2.33          1.5 \r\n 2010          302           12.843        8.03         -2.11          0 \r\n 2010          303           14.203        17.16        -4.51          0 \r\n 2010          304           13.925        19.89         1.12          0 \r\n 2010          305           10.278        10.67        -0.39          0 \r\n 2010          306           13.815        13.05        -2.28          0 \r\n 2010          307           13.381        13.32        -3.9           0 \r\n 2010          308           13.034        16.59         1.8           0 \r\n 2010          309           13.014        9.55         -1.54          0 \r\n 2010          310           13.524        8.94         -5.48          0 \r\n 2010          311           12.895        14.2         -3.32          0 \r\n 2010          312           12.068        20.6          4.79          0 \r\n 2010          313           12.374        20.9          7.7           0 \r\n 2010          314           11.187        21.74         6.14          0 \r\n 2010          315           8.316         19.79         2.57          0 \r\n 2010          316           12.194        13.56        -3.23          0 \r\n 2010          317           1.009         5.94          2.5           41.9 \r\n 2010          318           2.037         6.38         -0.06          7.6 \r\n 2010          319           6.358         5.13         -0.93          0 \r\n 2010          320           11.053        9.28         -1.77          0.2 \r\n 2010          321           3.059         5.47          0.99          0.2 \r\n 2010          322           4.82          3.45         -1.2           0 \r\n 2010          323           5.025         1.73         -2.08          0 \r\n 2010          324           6.068         6.99         -3.19          0 \r\n 2010          325           5.633         2.94         -4.94          0 \r\n 2010          326           1.264         10.16         0.44          0.5 \r\n 2010          327           2.791         1.77         -3.33          0.2 \r\n 2010          328           11.018        0.04         -9.53          0 \r\n 2010          329           1.02          1.27         -5.59          0.5 \r\n 2010          330           10.133       -3.46         -10.31         0 \r\n 2010          331           3.369         2.62         -9.63          0 \r\n 2010          332           9.781         6.45         -5.42          0 \r\n 2010          333           9.315         12.93        -3.16          0 \r\n 2010          334           3.181         10.09        -3.63          0.2 \r\n 2010          335           2.845        -3.39         -7.84          0 \r\n 2010          336           9.989        -1.23         -11.26         0 \r\n 2010          337           9.092         3.29         -10.04         0 \r\n 2010          338           3.964        -0.93         -10.85         0 \r\n 2010          339           3.073        -2.01         -11.05         0 \r\n 2010          340           9.26         -4.6          -13.21         0 \r\n 2010          341           6.581        -4.57         -13.38         0 \r\n 2010          342           8.166        -5.08         -14.46         0 \r\n 2010          343           9.223        -0.87         -15.2          0 \r\n 2010          344           4.121         7.94         -6.32          0 \r\n 2010          345           7.813         8.75         -6.05          0 \r\n 2010          346           2.381         8.34         -10.48         2.3 \r\n 2010          347           10.014       -10.34        -18.51         0 \r\n 2010          348           8.016        -10.92        -19.63         0 \r\n 2010          349           3.901        -8.52         -17.46         0 \r\n 2010          350           2.909        -5.34         -8.76          1.8 \r\n 2010          351           5.276        -4.54         -15.68         0 \r\n 2010          352           9.196        -5.31         -17.57         0 \r\n 2010          353           9.936        -5.71         -15.5          0 \r\n 2010          354           5.13         -5.41         -19.15         0 \r\n 2010          355           4.019         0.26         -5.61          0 \r\n 2010          356           6.131        -0.08         -9.6           0 \r\n 2010          357           3.525        -2.31         -9.16          0 \r\n 2010          358           3.445        -1.61         -3.72          0 \r\n 2010          359           4.715        -2.24         -8.89          3.3 \r\n 2010          360           5.526        -5.61         -12.5          0 \r\n 2010          361           5.809        -8.99         -13.65         0 \r\n 2010          362           8.027        -7.09         -18.32         0 \r\n 2010          363           9.322        -1.37         -14.7          0 \r\n 2010          364           4.009         1.91         -7.87          0 \r\n 2010          365           3.458         13.6         -7.27          0 \r\n 2011          1             1.452         0.06         -13.95         0.5 \r\n 2011          2             6.084        -9.69         -14.97         0 \r\n 2011          3             9.293        -1.03         -14.42         0 \r\n 2011          4             6.468         2.01         -9.81          0 \r\n 2011          5             9.7          -2.41         -14.29         0 \r\n 2011          6             6.716         4.57         -9.22          0 \r\n 2011          7             1.852        -0.93         -4.57          0 \r\n 2011          8             5.265        -1.73         -13.99         1.3 \r\n 2011          9             10.439       -9.33         -18            0 \r\n 2011          10            4.634        -6.35         -17.83         0 \r\n 2011          11            2.994        -4.59         -6.86          0.2 \r\n 2011          12            8.084        -5.48         -17.84         0.8 \r\n 2011          13            7.734        -11.18        -20.41         0 \r\n 2011          14            7.638        -7.94         -20.95         0 \r\n 2011          15            5.134        -6.49         -15.61         0 \r\n 2011          16            5.491        -6.59         -17.91         0 \r\n 2011          17            5.28         -7.91         -19.63         0 \r\n 2011          18            5.413         0.72         -8.04          1.5 \r\n 2011          19            9.424        -4.87         -15.03         0 \r\n 2011          20            10.171       -12.73        -20.95         0 \r\n 2011          21            10.773       -8.96         -22            0 \r\n 2011          22            7.075        -12.23        -23.14         0 \r\n 2011          23            8.099        -9.28         -15.74         0 \r\n 2011          24            11.299       -10.41        -21.56         0 \r\n 2011          25            11.329       -0.52         -10.54         0 \r\n 2011          26            6.462        -4.8          -10.27         0 \r\n 2011          27            7.277        -6.86         -13.31         0 \r\n 2011          28            11.339        1.33         -8.04          0 \r\n 2011          29            11.254        3.02         -8.86          0 \r\n 2011          30            9.26         -0.32         -11.12         0 \r\n 2011          31            4.514        -4.16         -13.79         0 \r\n 2011          32            3.6          -4.53         -8.76          0.8 \r\n 2011          33            4.264        -8.55         -13.68         0 \r\n 2011          34            9.63         -12.81        -21.69         0 \r\n 2011          35            14.002       -6.82         -22.84         0 \r\n 2011          36            13.668       -1.16         -13.44         0 \r\n 2011          37            8.654        -0.32         -10.13         0 \r\n 2011          38            8.771        -0.93         -6.59          0 \r\n 2011          39            12.197       -4.13         -21.39         0 \r\n 2011          40            11.867       -16.42        -24.64         0 \r\n 2011          41            14.578       -12.27        -20.17         0 \r\n 2011          42            14.995       -5.04         -22.27         0 \r\n 2011          43            9.956         2.11         -10.54         0 \r\n 2011          44            12.605        4.61         -6.53          0 \r\n 2011          45            14.51         9.79          0.87          0 \r\n 2011          46            11.133        4.5          -1.19          0 \r\n 2011          47            12.962        9.02         -1.23          0 \r\n 2011          48            10.384        11.24        -1.74          0 \r\n 2011          49            12.338        18.34         1.33          0 \r\n 2011          50            15.436        8.58         -1.19          0 \r\n 2011          51            15.399        7.09         -3.56          0 \r\n 2011          52            1.26          3.73          0.76          12.7 \r\n 2011          53            3.036         0.89         -5.82          0 \r\n 2011          54            6.912        -0.96         -5.82          0 \r\n 2011          55            11.366        4.67         -5.41          0 \r\n 2011          56            2.199        -1.87         -7.77          0 \r\n 2011          57            11.949       -5.51         -12.61         0 \r\n 2011          58            5.346        -6.76         -12.61         0 \r\n 2011          59            5.403        -0.89         -6.93          0 \r\n 2011          60            17.62         2.41         -11.18         0 \r\n 2011          61            17.058        11.28        -8.86          0 \r\n 2011          62            17.892       -0.79         -13.71         0 \r\n 2011          63            9.357         10.97        -2.84          0.2 \r\n 2011          64            4.556         3.89         -5.72          0 \r\n 2011          65            8.462        -1.03         -7.07          0 \r\n 2011          66            6.665        -0.59         -5.88          0 \r\n 2011          67            6.549         2.21         -3.93          0.2 \r\n 2011          68            3.604         4.44         -0.18          5.6 \r\n 2011          69            8.039         0.83         -0.99          4.6 \r\n 2011          70            10.654       -0.18         -5.14          0 \r\n 2011          71            16.15         13.73        -5.27          0 \r\n 2011          72            18.54         4.1          -3.76          0 \r\n 2011          73            12.325       -1.4          -7.17          0 \r\n 2011          74            20.188        8.54         -4.9           0 \r\n 2011          75            15.473        12.79        -4.22          0 \r\n 2011          76            18.809        17.94        -2.04          0 \r\n 2011          77            10.822        20            5.31          0 \r\n 2011          78            15.615        10.09        -0.99          0 \r\n 2011          79            15.528        13.23        -2.77          0 \r\n 2011          80            5.715         18.12         7.09          2.8 \r\n 2011          81            9.792         11.21         0.59          0 \r\n 2011          82            2.87          11.35         7.29          4.1 \r\n 2011          83            6.324         7.39         -1.71          1 \r\n 2011          84            10.171        0.15         -3.62          0 \r\n 2011          85            10.124        4.2          -2.34          1.5 \r\n 2011          86            10.114        2.08         -3.42          0 \r\n 2011          87            16.91         3.22         -6.29          0 \r\n 2011          88            19.909        6.26         -5.17          0 \r\n 2011          89            9.545         4.51         -2.28          1.3 \r\n 2011          90            22.857        10.09        -5.37          0 \r\n 2011          91            14.946        10.77        -1.83          0.2 \r\n 2011          92            22.393        14.31         1.64          0.2 \r\n 2011          93            18.619        16.16        -1.43          0 \r\n 2011          94            17.548        28.06         5.54          0 \r\n 2011          95            17.363        10.13        -2.98          0 \r\n 2011          96            22.504        19.23        -4.12          0 \r\n 2011          97            21.881        18.15         2.95          0 \r\n 2011          98            7.929         14.42         1.44          13.7 \r\n 2011          99            6.485         11.14         6.99          0 \r\n 2011          100           16.2          25.16         8.65          0 \r\n 2011          101           20.085        30.89         8.17          0 \r\n 2011          102           24.577        18.22         4.3           0 \r\n 2011          103           24.684        21.07         2.86          0 \r\n 2011          104           18.148        23.06         5.64          0 \r\n 2011          105           6.604         13.07         5.17          5.3 \r\n 2011          106           2.016         6.12          2.03          26.2 \r\n 2011          107           17.544        11.07         0.32          2.3 \r\n 2011          108           15            9.08         -0.83          3.6 \r\n 2011          109           7.433         7.5           2.08          1 \r\n 2011          110           2.971         4.44          0.49          21.3 \r\n 2011          111           12.8          9.76         -0.15          0 \r\n 2011          112           7.113         7.97         -1.12          0.5 \r\n 2011          113           3.206         9.69          5.75          1.8 \r\n 2011          114           11.283        10.36         3.69          0.2 \r\n 2011          115           16.752        13.67         0.02          0 \r\n 2011          116           7.064         14.01         2.72          32 \r\n 2011          117           4.091         10.23         5.01          3.6 \r\n 2011          118           12            14.28         2.78          0 \r\n 2011          119           12            17.87         2.21          0 \r\n 2011          120           20.124        21.22         2.21          0 \r\n 2011          121           24.788        20.13         7.19          1 \r\n 2011          122           28.259        16.12         3.22          0 \r\n 2011          123           28.296        14.41        -1.06          0 \r\n 2011          124           28.34         15.22        -3.14          0 \r\n 2011          125           24.157        18.25        -0.08          0 \r\n 2011          126           16.938        20.07         7.8           1.8 \r\n 2011          127           22.435        23.17         4.51          0 \r\n 2011          128           27.067        25.33         6.33          0 \r\n 2011          129           26.908        26.94         8.65          0 \r\n 2011          130           22.529        30.28         17.98         0 \r\n 2011          131           26.055        35.22         18.88         0 \r\n 2011          132           6.861         25.77         16.6          22.4 \r\n 2011          133           24.573        27.06         12.02         4.3 \r\n 2011          134           5.901         12.66         7.94          11.9 \r\n 2011          135           6.469         9.32          6.69          4.3 \r\n 2011          136           19.75         16.23         5.94          7.6 \r\n 2011          137           29.806        17.98         3.23          0 \r\n 2011          138           30.163        19.8          3.33          0 \r\n 2011          139           28.058        21.76         4.27          0 \r\n 2011          140           21.962        22.57         9.56          0 \r\n 2011          141           8.431         19.87         14.24         38.1 \r\n 2011          142           21.805        24.18         15.26         6.9 \r\n 2011          143           18.766        24.92         13.98         0.2 \r\n 2011          144           27.841        26.89         15.19         0 \r\n 2011          145           17.648        26.21         13.33         17.5 \r\n 2011          146           4.347         17.54         11.24         26.9 \r\n 2011          147           29.028        18.02         6.69          0 \r\n 2011          148           8.767         15.19         8.54          0 \r\n 2011          149           10.418        20.17         12.02         0 \r\n 2011          150           5.872         22.97         11.17         1.8 \r\n 2011          151           24.912        30.28         19.46         0 \r\n 2011          152           28.098        27.44         15.16         2.8 \r\n 2011          153           27.517        26.24         10.44         0 \r\n 2011          154           19.056        26.54         18.38         0 \r\n 2011          155           26.758        35.22         21.01         0 \r\n 2011          156           17.776        32.06         18.89         0 \r\n 2011          157           26.045        31.28         18.59         0 \r\n 2011          158           27.28         36.28         20.54         0 \r\n 2011          159           27.567        34.67         23.72         0 \r\n 2011          160           23.241        33.89         17.85         0 \r\n 2011          161           5.033         18.12         13.81         72.9 \r\n 2011          162           5.738         19.2          13.84         5.3 \r\n 2011          163           23.445        22.23         14.31         0 \r\n 2011          164           9.401         18.73         13.13         0.2 \r\n 2011          165           12.986        19.66         12.36         8.4 \r\n 2011          166           12.033        21.72         14.95         16.3 \r\n 2011          167           23.899        25.8          15.03         0 \r\n 2011          168           21.381        28            19.3          0 \r\n 2011          169           23.293        29.61         18.36         0 \r\n 2011          170           10.549        25.59         17.88         0 \r\n 2011          171           24.484        29.89         17.14         0 \r\n 2011          172           20.64         26.72         17            34.5 \r\n 2011          173           15            24.92         16.61         2.8 \r\n 2011          174           7.899         18.52         15.82         2.8 \r\n 2011          175           15            19.03         14.38         0.2 \r\n 2011          176           26.962        24.24         10.91         0 \r\n 2011          177           9.662         20.81         14.32         4.8 \r\n 2011          178           17.214        26.72         15.42         19.1 \r\n 2011          179           25.492        25.87         15.23         0 \r\n 2011          180           29.981        26.31         12.32         0 \r\n 2011          181           29.259        29.22         15.69         0 \r\n 2011          182           28.613        34.56         22.13         0 \r\n 2011          183           28.647        34.17         21.96         1.5 \r\n 2011          184           27.387        29.28         18.26         0.2 \r\n 2011          185           9.853         24.39         16.47         0.2 \r\n 2011          186           30.074        29.17         14.76         0.2 \r\n 2011          187           28            28.61         16.91         0.2 \r\n 2011          188           27.015        30.22         17.45         0 \r\n 2011          189           24.485        29.56         18.89         0 \r\n 2011          190           25.73         31.39         17.92         0 \r\n 2011          191           22            30.06         20.42         0 \r\n 2011          192           21.076        31.44         21.38         0 \r\n 2011          193           23            30.83         20.35         9.4 \r\n 2011          194           17.261        26.48         18.46         0.8 \r\n 2011          195           26.494        26.11         17.88         0 \r\n 2011          196           22.681        28            18.52         0 \r\n 2011          197           21.282        31.89         21.42         0 \r\n 2011          198           18.86         33.22         24.02         1.5 \r\n 2011          199           26.13         34.33         24.06         0 \r\n 2011          200           28.033        34.5          24.36         0 \r\n 2011          201           28.34         35            23.51         0 \r\n 2011          202           28.547        34.78         24.53         0 \r\n 2011          203           11.728        28            19.03         7.6 \r\n 2011          204           19.174        32.22         21.46         15.5 \r\n 2011          205           14.204        30.78         21.86         8.6 \r\n 2011          206           19.976        30.94         21.36         0.5 \r\n 2011          207           24.328        31.61         19.64         0 \r\n 2011          208           27.178        32.28         20.68         0 \r\n 2011          209           18.903        32.67         24.32         0 \r\n 2011          210           9.879         29.11         21.42         7.6 \r\n 2011          211           15.756        28.89         20.58         0 \r\n 2011          212           25.639        30.94         18.79         0 \r\n 2011          213           27.802        31.94         19.44         0 \r\n 2011          214           25.705        34.11         21.49         0.2 \r\n 2011          215           22.737        32.94         23.48         0 \r\n 2011          216           27.762        29.67         17.79         0 \r\n 2011          217           7.081         24.76         17.66         34.5 \r\n 2011          218           8.642         25.68         20.62         15.8 \r\n 2011          219           16.346        29.89         20.89         0 \r\n 2011          220           26.038        29.89         18.86         0 \r\n 2011          221           23.108        26.64         17.59         4.6 \r\n 2011          222           26.642        26.51         13.31         0 \r\n 2011          223           25.149        24.66         12.87         0.2 \r\n 2011          224           27.018        26.44         11.66         0 \r\n 2011          225           20.11         28.44         17.01         0 \r\n 2011          226           22.836        24.09         15.5          0 \r\n 2011          227           26.516        28.11         13.71         0 \r\n 2011          228           25.537        28.11         14.89         0 \r\n 2011          229           12.344        25.2          16.54         9.1 \r\n 2011          230           25.805        28.22         15.97         0 \r\n 2011          231           17.193        28.72         15.84         5.6 \r\n 2011          232           24.379        28.72         14.52         0 \r\n 2011          233           22.137        26.64         16.24         0 \r\n 2011          234           24.846        27.33         16.54         0 \r\n 2011          235           22.663        28.28         17.32         0 \r\n 2011          236           21.443        31.33         18.89         0 \r\n 2011          237           25.125        29.22         13.18         0.2 \r\n 2011          238           25.005        28.5          11.66         0 \r\n 2011          239           11.434        26.38         14.56         0 \r\n 2011          240           22.104        27.94         14.18         0 \r\n 2011          241           11.858        24.9          11.49         0.5 \r\n 2011          242           23.288        26.72         12.79         0.2 \r\n 2011          243           2.51          18.97         16.37         18.3 \r\n 2011          244           21.325        29.83         15.67         0 \r\n 2011          245           21.688        33.72         21.23         0 \r\n 2011          246           14.966        31.56         19.61         17.3 \r\n 2011          247           4.136         22.82         13.41         18.5 \r\n 2011          248           23.484        21.02         9.19          0 \r\n 2011          249           24.344        20.92         7.27          0 \r\n 2011          250           24.274        21.39         5.66          0 \r\n 2011          251           23.493        22.47         6.57          0.2 \r\n 2011          252           22.519        26.45         8.05          0.2 \r\n 2011          253           22.328        27.11         12.33         0 \r\n 2011          254           22.151        27.11         11.46         0 \r\n 2011          255           21.561        29.89         11.72         0 \r\n 2011          256           21.316        31.22         14.99         0 \r\n 2011          257           21.774        22.71         8.46          0 \r\n 2011          258           19.933        16.18         3.83          0 \r\n 2011          259           20.369        14.52         0.33          0 \r\n 2011          260           6.149         11.52         6.94          2 \r\n 2011          261           5.246         14.59         9.13          0 \r\n 2011          262           2.547         15.91         12.16         10.7 \r\n 2011          263           19.788        25.2          10.14         0 \r\n 2011          264           15.68         24.33         11.39         1 \r\n 2011          265           13.248        17.97         8.01          0 \r\n 2011          266           14.219        16.78         3.3           0 \r\n 2011          267           21.118        18.97         1.41          0 \r\n 2011          268           16.429        18.64         1.81          0 \r\n 2011          269           13.374        18.44         2.15          0 \r\n 2011          270           8.518         19.28         7.92          0.2 \r\n 2011          271           10.335        20.7          9.87          0 \r\n 2011          272           18.315        27.72         11.42         0 \r\n 2011          273           14.377        23.05         10.78         0 \r\n 2011          274           19.603        20.06         3.16          0 \r\n 2011          275           19.677        18.44        -0.14          0 \r\n 2011          276           19.208        23.69         1.92          0 \r\n 2011          277           18.808        25.84         1.75          0 \r\n 2011          278           17.65         28.61         7.15          0 \r\n 2011          279           18.08         28.22         10.48         0 \r\n 2011          280           15.69         26.72         8.83          0 \r\n 2011          281           9.997         28.11         15.33         0 \r\n 2011          282           15.238        28.06         16.11         0 \r\n 2011          283           16.821        26.67         11.46         0 \r\n 2011          284           9.581         23.36         10.44         1.3 \r\n 2011          285           14.265        24.56         8.15          0.2 \r\n 2011          286           5.601         19.15         11.69         11.2 \r\n 2011          287           6.982         20.69         7.18          0 \r\n 2011          288           14.824        16.75         6.26          0 \r\n 2011          289           15.524        20.26         2.83          0 \r\n 2011          290           13.467        16.78         2.66          0 \r\n 2011          291           6.65          14.02         0.57          0 \r\n 2011          292           6.557         9.2          -0.78          0 \r\n 2011          293           7.288         9.94          0.93          0 \r\n 2011          294           15.964        12.77        -1.46          0 \r\n 2011          295           15.084        18.23        -3.68          0 \r\n 2011          296           12.843        18.57         2.99          0 \r\n 2011          297           12.852        23.19         3.07          0.2 \r\n 2011          298           13.646        22.99         1.45          0 \r\n 2011          299           11.737        24.87         6.91          0 \r\n 2011          300           5.943         11.97         4.28          0 \r\n 2011          301           12.793        13.01        -1.02          0 \r\n 2011          302           13.944        13.92        -1.08          0 \r\n 2011          303           12.45         14.87        -3.14          0 \r\n 2011          304           12.971        13.42         0.87          0 \r\n 2011          305           13.77         13.62        -3.01          0 \r\n 2011          306           12.844        21.7          2.69          0 \r\n 2011          307           1.083         8.67          2.25          18.5 \r\n 2011          308           12.645        9.6          -2.73          0 \r\n 2011          309           12.905        11.36        -5.4           0 \r\n 2011          310           10.558        12.07         1.45          0 \r\n 2011          311           12.489        12.98         1.15          0 \r\n 2011          312           10.953        14.83        -2.26          6.6 \r\n 2011          313           1.653         6.24          0.53          38.6 \r\n 2011          314           11.592        9.88          0.03          12.4 \r\n 2011          315           12.258        5.59         -2.7           0 \r\n 2011          316           11.811        11.26        -2.06          0 \r\n 2011          317           7.99          12.94         0.71          0 \r\n 2011          318           7.942         13.05         3.94          0 \r\n 2011          319           10.056        15.41         2.39          0 \r\n 2011          320           9.709         13.79        -2.97          0 \r\n 2011          321           11.818        6.13         -7.52          0 \r\n 2011          322           11.68         7.49         -10.19         0 \r\n 2011          323           9.351         13.08         1.78          0 \r\n 2011          324           1.77          12.21        -4.19          0 \r\n 2011          325           9.024         1.04         -7.15          0 \r\n 2011          326           3.3           5.13         -8.07          0 \r\n 2011          327           3.862         6.54          2.09          0 \r\n 2011          328           9.095         10.22         0.68          0 \r\n 2011          329           10.248        19.15         0.68          0.2 \r\n 2011          330           2.079         12.68         6.64          0.5 \r\n 2011          331           1.299         11.56         1.92          3 \r\n 2011          332           2.277         2.12         -1.35          0 \r\n 2011          333           7.568         4.25         -4.42          0 \r\n 2011          334           10.634        5.53         -7.35          0 \r\n 2011          335           9.21          9.95         -9.51          0 \r\n 2011          336           2.583         1.99         -7.66          0 \r\n 2011          337           9.927         2.43         -12.45         0 \r\n 2011          338           1             3.92         -1.38          26.2 \r\n 2011          339           2.995        -1.14         -5.44          0 \r\n 2011          340           3.049        -5.23         -9.08          0 \r\n 2011          341           6.224        -5.3          -14.34         0 \r\n 2011          342           5.316        -2.59         -14.45         0 \r\n 2011          343           3.747        -0.37         -6.14          0 \r\n 2011          344           8.592        -5.69         -16.4          0 \r\n 2011          345           7.311         0.95         -16.81         0 \r\n 2011          346           3.775         4.73         -4.58          0 \r\n 2011          347           1.555         5.33          1.22          0 \r\n 2011          348           2.854         6.68          0.84          7.9 \r\n 2011          349           1.453         10.83         2.83          11.2 \r\n 2011          350           2.638         3.07         -5.22          0 \r\n 2011          351           8.051         0.41         -8.77          0 \r\n 2011          352           8.471         6.01         -5.09          0 \r\n 2011          353           8.971         11.37        -2.79          0 \r\n 2011          354           6.829         2.3          -2.26          0 \r\n 2011          355           2.854         0.04         -4.15          0 \r\n 2011          356           8.754         7.09         -2.97          0 \r\n 2011          357           7.681        -0.43         -10.15         0 \r\n 2011          358           7.257         3.51         -11.07         0 \r\n 2011          359           9.32          8.27         -7.96          0 \r\n 2011          360           9.591         7.79         -4.31          0 \r\n 2011          361           5.502         7.16         -5.76          0 \r\n 2011          362           8.338         3.76         -5.3           0 \r\n 2011          363           8.893         8.84         -6.64          0 \r\n 2011          364           8.669         10.73         0.95          1.8 \r\n 2011          365           2.694         4.52          0.68          4.3 \r\n 2012          1             7             2.5          -7             0 \r\n 2012          2             7             2.5          -7             0 \r\n 2012          3             7             2.5          -7             0 \r\n 2012          4             8             2.6          -7.5           0 \r\n 2012          5             7.597         2.81         -7.85          0 \r\n 2012          6             9.279         6.94         -2.92          0 \r\n 2012          7             9.391         17.07        -1.82          0 \r\n 2012          8             6.266         9.26         -0.51          0 \r\n 2012          9             9.032         4.52         -5.34          0 \r\n 2012          10            5.948         4.41         -6.09          0 \r\n 2012          11            9.974         10.77        -4.97          0 \r\n 2012          12            10.053        13.12        -4.25          0 \r\n 2012          13            3.886         3.16         -8.84          0 \r\n 2012          14            3.834        -9.19         -13.12         0 \r\n 2012          15            8.664        -6.64         -13.53         0 \r\n 2012          16            4.933        -0.17         -10.03         0 \r\n 2012          17            10.198        9.85         -8.18          0.2 \r\n 2012          18            9.326         5.42         -3.41          0 \r\n 2012          19            9.403        -3.91         -16.42         0 \r\n 2012          20            9.98         -2.62         -17.94         0 \r\n 2012          21            8.799        -10.73        -18.06         0 \r\n 2012          22            2.861        -13.07        -16.53         0 \r\n 2012          23            4.771        -5.41         -20.48         0 \r\n 2012          24            1.487         0.79         -5.28          2.3 \r\n 2012          25            5.935         0.01         -4.77          0.8 \r\n 2012          26            8.399        -2.41         -5.24          0.2 \r\n 2012          27            8.691         3.59         -5.62          0.2 \r\n 2012          28            7.295         5.55         -3.21          0 \r\n 2012          29            3.603         2.54         -3.56          0.2 \r\n 2012          30            12.221        5.11         -5.6           0 \r\n 2012          31            11.246        0.56         -5.59          0 \r\n 2012          32            11.793        15.83        -0.36          0 \r\n 2012          33            12.418        13.48         1.17          0 \r\n 2012          34            10.068        12.2         -3.47          0 \r\n 2012          35            10.031        10.39        -3.8           0 \r\n 2012          36            2.134         1.05         -0.48          0.2 \r\n 2012          37            3.161         0.4          -1.61          1.3 \r\n 2012          38            5.68         -1.86         -6.51          0 \r\n 2012          39            9.228        -2.17         -6.96          0 \r\n 2012          40            2.996         0.33         -5.87          0.5 \r\n 2012          41            12.636       -3.42         -11.03         0 \r\n 2012          42            6.404        -0.24         -13.53         0 \r\n 2012          43            12.841       -3.31         -13.13         0 \r\n 2012          44            15.044       -4.78         -16.99         0 \r\n 2012          45            14.994       -4.67         -16.65         0 \r\n 2012          46            4.649        -1.14         -5.23          0 \r\n 2012          47            13.533        2.66         -4.16          0.2 \r\n 2012          48            13.552        6.91         -3.02          0 \r\n 2012          49            15.406        5.53         -3.43          0 \r\n 2012          50            15.181        7.85         -2.44          0 \r\n 2012          51            15.713        3.47         -7.34          0 \r\n 2012          52            15.577        5.34         -6.92          0 \r\n 2012          53            8.576         6.42         -2.48          6.6 \r\n 2012          54            12.794        6.69         -0.41          0.2 \r\n 2012          55            12.696        9.85         -0.32          0 \r\n 2012          56            2.161         2.47         -0.62          7.4 \r\n 2012          57            16.757       -0.47         -5.44          0 \r\n 2012          58            17.594       -3.08         -10.83         0 \r\n 2012          59            16.947        9.13         -4.13          0.2 \r\n 2012          60            17.627        1.04         -8.08          0 \r\n 2012          61            5.438         6.69         -1.55          4.8 \r\n 2012          62            3.245         9.08         -1.07          5.3 \r\n 2012          63            10.785        4.78         -3.44          0 \r\n 2012          64            7.583         4.73         -0.98          0 \r\n 2012          65            10.484       -0.26         -5.36          0 \r\n 2012          66            4.697        -3.07         -8.75          0 \r\n 2012          67            18.238        7.46         -11.41         1.8 \r\n 2012          68            17.25         20.17         0.44          0 \r\n 2012          69            3.979         17.69        -0.42          0 \r\n 2012          70            19.637        7.62         -3.45          0 \r\n 2012          71            19.727        8.42         -5.49          0 \r\n 2012          72            19.887        19.68         3.92          0 \r\n 2012          73            7.233         13.47         3.07          6.3 \r\n 2012          74            14.532        16.23         6.84          2 \r\n 2012          75            19.364        23.27        -0.22          0.2 \r\n 2012          76            16.74         24.97         12.22         0 \r\n 2012          77            18.148        24.49         4.26          0 \r\n 2012          78            17.842        27.22         11.93         0 \r\n 2012          79            15.919        26.66         15.17         0 \r\n 2012          80            17.071        26.67         13.68         0 \r\n 2012          81            10.116        25.98         14.72         17.3 \r\n 2012          82            6.422         17.52         12.72         3.6 \r\n 2012          83            8.065         19.53         13.33         2.5 \r\n 2012          84            5.625         16.58         8.68          3.8 \r\n 2012          85            15.381        19.41         5.94          0.2 \r\n 2012          86            18.542        22.27         10.31         0 \r\n 2012          87            19.108        23.28         8.42          0 \r\n 2012          88            14.613        16.26         9.02          0 \r\n 2012          89            20.395        25.92         8.57          0 \r\n 2012          90            21.323        22.29         6.76          0 \r\n 2012          91            18.094        19.06         8.37          10.9 \r\n 2012          92            10.852        15.91         9.79          5.3 \r\n 2012          93            9.966         20.49         8.86          0 \r\n 2012          94            22.031        28.72         7.93          0 \r\n 2012          95            21.101        29.39         11.36         0 \r\n 2012          96            19.413        19.85         11.47         0 \r\n 2012          97            17.486        19.39         11.69         0 \r\n 2012          98            24.07         17.29         5.61          0 \r\n 2012          99            24.778        15.89         0.44          0 \r\n 2012          100           10.232        17.43         5.43          0.8 \r\n 2012          101           22.669        20.34         1.57          0 \r\n 2012          102           24.465        17.78         2.11          0 \r\n 2012          103           25.593        12.55        -1.18          0 \r\n 2012          104           26.032        12.42        -4.83          0 \r\n 2012          105           16.802        15.07        -2.02          0 \r\n 2012          106           4.736         13.92         7.38          16.3 \r\n 2012          107           4.694         17.39         12.42         45.7 \r\n 2012          108           17.429        23.24         12.85         2.3 \r\n 2012          109           18.337        12.94         4.71          0.8 \r\n 2012          110           22.475        18.58         3.38          0 \r\n 2012          111           17.847        21.11         11.25         5.6 \r\n 2012          112           4.946         16.51         5.25          9.9 \r\n 2012          113           24.503        12.21         3.49          0 \r\n 2012          114           10.958        13.7          1.98          2.3 \r\n 2012          115           12.498        12.72         5.7           0 \r\n 2012          116           26.25         17.75         2.58          0 \r\n 2012          117           26.528        27.33         7.26          0 \r\n 2012          118           19.756        30.94         12.18         0 \r\n 2012          119           26.426        19.16         10.49         0 \r\n 2012          120           14.882        13.53         7.99          2 \r\n 2012          121           6.548         9.77          4.98          12.7 \r\n 2012          122           4.501         8.84          6.78          5.3 \r\n 2012          123           17.013        17.23         7.71          0 \r\n 2012          124           21.765        24.44         10.43         0 \r\n 2012          125           15.527        23.44         15.16         13.5 \r\n 2012          126           21.276        27.39         17.57         0.8 \r\n 2012          127           20.542        27.72         16.95         0 \r\n 2012          128           17.704        28.61         18.77         0 \r\n 2012          129           14.629        25.17         15.84         29 \r\n 2012          130           25.806        20.27         13.29         0 \r\n 2012          131           22.382        17.77         8.02          0 \r\n 2012          132           22.382        18.94         7.84          0 \r\n 2012          133           28.601        23.71         7.99          0 \r\n 2012          134           25.822        25.27         12.86         0 \r\n 2012          135           24.175        21.61         9.59          0 \r\n 2012          136           29.632        23.69         6.73          0 \r\n 2012          137           28.866        26.67         9.34          0 \r\n 2012          138           27.985        31.28         14.85         0 \r\n 2012          139           29.515        24.03         9.49          0 \r\n 2012          140           27.944        26.42         12.36         0 \r\n 2012          141           27.089        30.11         14.88         0 \r\n 2012          142           18.066        28.61         17.57         0 \r\n 2012          143           25            23.44         10.77         0 \r\n 2012          144           29.405        24.9          7.38          0 \r\n 2012          145           28.862        26.94         13.02         0 \r\n 2012          146           26.291        30.61         15.93         0 \r\n 2012          147           14.231        25.95         13.5          3 \r\n 2012          148           7.412         18.92         11.57         5.1 \r\n 2012          149           19.941        31.5          14.4          0.2 \r\n 2012          150           28.57         32.06         22.14         0 \r\n 2012          151           29.392        29.83         16.89         0.8 \r\n 2012          152           30.154        23.28         13.27         0 \r\n 2012          153           25.392        20.61         8.36          4.1 \r\n 2012          154           5.511         11.89         8.58          15.8 \r\n 2012          155           24.579        19.69         6.64          0.2 \r\n 2012          156           25.879        23.36         12.32         1.8 \r\n 2012          157           18.149        27.94         11.45         0 \r\n 2012          158           1.122         19.84         15.71         0 \r\n 2012          159           6.518         28.5          20.28         0 \r\n 2012          160           23.953        24.93         16.65         0 \r\n 2012          161           20.16         25.58         15.06         0 \r\n 2012          162           28.852        29.72         16.19         0 \r\n 2012          163           30.324        30.72         17.06         0 \r\n 2012          164           25.833        31.67         21.78         0.5 \r\n 2012          165           28.451        25.63         16.16         5.1 \r\n 2012          166           31.13         22.57         11.53         0 \r\n 2012          167           23.604        25.48         12.34         0 \r\n 2012          168           28.097        31            16.89         0 \r\n 2012          169           13.732        28.56         19.88         23.4 \r\n 2012          170           17.31         25.64         19.07         1.8 \r\n 2012          171           27.71         28.39         15.04         0 \r\n 2012          172           29.297        33.17         24.81         0 \r\n 2012          173           29.512        31.72         23.62         0 \r\n 2012          174           18.098        29.28         16.63         22.4 \r\n 2012          175           30.703        24.74         15.54         0.2 \r\n 2012          176           29.958        27.33         13.84         0 \r\n 2012          177           10.633        23.12         17.29         2 \r\n 2012          178           27.754        29.44         18.24         0.8 \r\n 2012          179           28.622        26.3          15.35         0 \r\n 2012          180           29.188        27.61         13.71         0 \r\n 2012          181           29.163        35.78         20.24         0 \r\n 2012          182           19.822        30.89         22.7          0 \r\n 2012          183           12.586        29.78         18.73         3.6 \r\n 2012          184           25.595        30.89         18.01         0 \r\n 2012          185           27.246        33.5          21.69         0 \r\n 2012          186           26.787        33.39         21.87         0 \r\n 2012          187           28.137        34.22         22.24         0 \r\n 2012          188           28.302        34.94         22.93         0 \r\n 2012          189           21.46         33.94         24.26         5.6 \r\n 2012          190           28.276        35.5          22.12         0 \r\n 2012          191           27.351        31            22.21         0 \r\n 2012          192           21.571        29            19.34         0 \r\n 2012          193           25.844        29.94         16.07         18 \r\n 2012          194           26.672        27.28         14.59         0 \r\n 2012          195           29.265        28.33         14.92         0 \r\n 2012          196           25.038        30.33         17            0 \r\n 2012          197           15.799        29.56         20.02         6.3 \r\n 2012          198           21.736        31            18.48         0.2 \r\n 2012          199           27.19         32.67         18.61         0 \r\n 2012          200           32.295        32.61         20.61         0 \r\n 2012          201           27.036        34.33         21.32         0 \r\n 2012          202           26.223        34.89         22.21         0 \r\n 2012          203           28.481        31.28         19.01         0 \r\n 2012          204           27.308        29.61         15.4          0 \r\n 2012          205           18.925        30.22         18.58         0 \r\n 2012          206           24.612        36.28         19.53         0 \r\n 2012          207           26.355        37.17         22.31         1 \r\n 2012          208           26.356        34.11         20.7          0 \r\n 2012          209           26.493        37.22         21.27         9.4 \r\n 2012          210           27.482        31.44         20.73         0 \r\n 2012          211           26.924        25.94         16.69         0 \r\n 2012          212           5.225         21.69         14.35         11.9 \r\n 2012          213           25.378        30.5          18.58         7.4 \r\n 2012          214           25.642        32.67         19.29         0 \r\n 2012          215           27.162        30.06         19.09         0 \r\n 2012          216           26.928        32.72         16.76         0 \r\n 2012          217           24.924        32            20.42         0 \r\n 2012          218           25.25         32.67         19.2          0 \r\n 2012          219           15.483        26.37         16.98         15 \r\n 2012          220           28.626        24.32         13.45         0 \r\n 2012          221           27.273        30.56         10.33         0 \r\n 2012          222           21.917        31.28         16.63         0.5 \r\n 2012          223           14.566        28.22         17.69         15.5 \r\n 2012          224           22.927        26.67         15.47         0 \r\n 2012          225           21.503        23.28         11.64         0.2 \r\n 2012          226           22.978        24.38         10.48         0 \r\n 2012          227           6.154         18.75         15.58         2.5 \r\n 2012          228           20.814        24.43         14.03         0.5 \r\n 2012          229           23.114        28            12.68         0 \r\n 2012          230           22.606        29.5          14.6          0 \r\n 2012          231           19.406        23.13         11.27         10.2 \r\n 2012          232           26.379        23.16         8.74          0 \r\n 2012          233           14.027        21.27         6.87          0.2 \r\n 2012          234           18.099        23.18         8.88          0.2 \r\n 2012          235           24.477        25.36         9.39          0 \r\n 2012          236           25.512        26.83         8.11          0 \r\n 2012          237           23.093        33            11.98         0 \r\n 2012          238           23.728        32.17         14.6          0 \r\n 2012          239           23.569        29.22         17.84         0 \r\n 2012          240           4.721         21.43         18.09         10.4 \r\n 2012          241           18.732        28.56         18.13         0 \r\n 2012          242           23.159        30.67         13.83         0 \r\n 2012          243           22.195        32.22         15.03         0 \r\n 2012          244           20.792        33.61         17.27         0 \r\n 2012          245           23.302        34.56         19.91         0 \r\n 2012          246           17.798        31.61         15.2          0 \r\n 2012          247           16.406        27.72         17.47         0 \r\n 2012          248           22.5          31            13.85         0 \r\n 2012          249           6.982         26.31         18.54         3.3 \r\n 2012          250           21.191        34.17         18.7          0 \r\n 2012          251           21.58         29.61         14.57         7.9 \r\n 2012          252           22.381        27.83         9.93          0 \r\n 2012          253           10.883        21.23         13.01         1.3 \r\n 2012          254           23.168        26.01         7.62          0 \r\n 2012          255           23.034        23.67         8.67          0 \r\n 2012          256           23.027        26.72         8.83          0 \r\n 2012          257           20.76         32.44         14.73         0 \r\n 2012          258           11.695        25.63         13            0 \r\n 2012          259           10.499        17.58         9.42          11.9 \r\n 2012          260           22.019        25.06         7.49          0.2 \r\n 2012          261           21.876        25.01         6.18          0 \r\n 2012          262           16.781        24.78         9.89          0 \r\n 2012          263           10.31         17.44         8.43          2.5 \r\n 2012          264           22.2          17.93         4.09          0 \r\n 2012          265           19.298        28.17         8.46          0 \r\n 2012          266           16.154        20.63         6.94          0 \r\n 2012          267           18.094        20.28         8.13          0 \r\n 2012          268           21.153        15.34         3.58          0 \r\n 2012          269           21.21         16.95        -0.47          0 \r\n 2012          270           18.991        24.32         1.37          0 \r\n 2012          271           19.404        28.78         7.31          0 \r\n 2012          272           17.965        22.92         6.91          0 \r\n 2012          273           19.428        22.31         2.45          0 \r\n 2012          274           17.67         23.62         2.99          0 \r\n 2012          275           18.103        27.17         4.66          0 \r\n 2012          276           15.234        28            7.85          0 \r\n 2012          277           14.567        24.08         8.11          0 \r\n 2012          278           18.475        23.87         6.23          0 \r\n 2012          279           18.466        25.26         4.45          0 \r\n 2012          280           14.694        17.02         5.59          0.5 \r\n 2012          281           7.883         9.18         -1.14          0 \r\n 2012          282           8.815         5.61         -4.93          0 \r\n 2012          283           18.816        12.16        -7             0 \r\n 2012          284           13.832        19.13         2.42          0 \r\n 2012          285           5.813         12.77         2.77          0.8 \r\n 2012          286           18.198        14.13        -3.01          0 \r\n 2012          287           13.245        15.84         4.62          0 \r\n 2012          288           16.532        13.92        -3.5           2.8 \r\n 2012          289           7.666         23.06         9.73          12.2 \r\n 2012          290           13.125        16.68         6.52          14.2 \r\n 2012          291           16.151        19.03         2.86          0 \r\n 2012          292           14.813        22.96         9.02          0 \r\n 2012          293           5.736         16.18         8.01          1.5 \r\n 2012          294           3.073         8.71          5.12          14.5 \r\n 2012          295           4.043         7.88          5.48          0.5 \r\n 2012          296           9.987         13.41         6.2           0 \r\n 2012          297           14.581        24.56         5.73          0 \r\n 2012          298           10.339        23.31         15.85         3.3 \r\n 2012          299           4.436         22.02         14.69         0.8 \r\n 2012          300           4.335         23.65         12.24         0 \r\n 2012          301           4.052         11.4          2.42          9.4 \r\n 2012          302           10.566        4.93         -1.37          0 \r\n 2012          303           13.065        6.29         -0.94          0 \r\n 2012          304           14.406        8.1          -2.63          0 \r\n 2012          305           10.54         9.71         -0.57          0 \r\n 2012          306           9.611         10.18        -3.95          0 \r\n 2012          307           11.259        11.38        -2.86          0 \r\n 2012          308           12.368        12.34         0.4           0 \r\n 2012          309           7.925         7.83         -0.83          0 \r\n 2012          310           11.444        10.7          0.06          0 \r\n 2012          311           3.533         9.22          3.32          0.8 \r\n 2012          312           2.998         5.84          3.69          6.1 \r\n 2012          313           7.092         9.87          4.01          0.2 \r\n 2012          314           6.486         6.95         -0.08          0 \r\n 2012          315           12.142        15.29        -0.57          0 \r\n 2012          316           7.523         13.63         2.34          0 \r\n 2012          317           8.604         24.08         11.03         0 \r\n 2012          318           1.781         19.29        -5.21          14 \r\n 2012          319           11.508        1.58         -6.73          0 \r\n 2012          320           10.534        8.68         -6.86          0 \r\n 2012          321           11.331        13.07         2.25          0 \r\n 2012          322           11.12         14.6          0.61          0 \r\n 2012          323           11.642        11.06        -4.61          0 \r\n 2012          324           9.946         15.1         -0.81          0 \r\n 2012          325           7.715         14.92         3.44          0 \r\n 2012          326           10.298        15.43         4.59          2 \r\n 2012          327           10.981        15.59         1.63          0 \r\n 2012          328           10.712        21.69         3.75          0 \r\n 2012          329           8.074         17.8          3.07          0 \r\n 2012          330           9.916         1.96         -8.32          0 \r\n 2012          331           6.741         0.81         -10.29         0 \r\n 2012          332           4.468         2.5          -1.49          0 \r\n 2012          333           5.927        -0.67         -10.63         0 \r\n 2012          334           8.202         1.61         -12.11         0 \r\n 2012          335           9.985         6.33         -9.52          0 \r\n 2012          336           7.826         10.36        -1.63          0 \r\n 2012          337           8.137         9.8          -4.79          0 \r\n 2012          338           1.361         12.91        -0.68          0 \r\n 2012          339           6.214         10.41         3.4           0 \r\n 2012          340           4.407         18.79         2.94          0 \r\n 2012          341           9.589         13.48        -1.22          0 \r\n 2012          342           5.677         5.73         -6.72          0 \r\n 2012          343           1.799         8.65          2.04          1.3 \r\n 2012          344           5.344         4.58         -0.66          0 \r\n 2012          345           5.101         2.76         -6.14          0.8 \r\n 2012          346           1.776         1.47         -8.13          4.3 \r\n 2012          347           7.786        -3.46         -11            0 \r\n 2012          348           6.787         3.64         -8.56          0 \r\n 2012          349           9.362         9.56         -4.07          0 \r\n 2012          350           8.7           10.03        -0.82          0 \r\n 2012          351           8.01          10.18        -6.65          0 \r\n 2012          352           1.339         8.48          2.62          10.7 \r\n 2012          353           3.125         2.31         -3.04          0 \r\n 2012          354           2.566        -0.95         -5.96          0 \r\n 2012          355           2.197         0.83         -1.32          0 \r\n 2012          356           2.303         0.86         -2.85          0 \r\n 2012          357           6.759        -0.43         -10.8          0 \r\n 2012          358           9.374        -7.76         -14.4          0 \r\n 2012          359           9.214        -2.71         -13.78         0 \r\n 2012          360           8.19         -7.38         -12.98         0 \r\n 2012          361           6.74         -7.74         -15.59         0 \r\n 2012          362           8.705        -13.61        -18.91         0 \r\n 2012          363           8.961        -9.59         -17.95         0 \r\n 2012          364           5.158        -5.34         -16.64         0 \r\n 2012          365           5.208        -3.47         -10.41         0 \r\n 2012          366           7.88         -7.96         -14.53         0 \r\n 2013          1             1            -3.55         -9.62          0 \r\n 2013          2             4.807        -8.08         -13.86         0 \r\n 2013          3             9.729        -11.44        -20.5          0 \r\n 2013          4             7.315        -2.05         -15.45         0 \r\n 2013          5             9.807        -1.74         -14.04         0 \r\n 2013          6             10.043       -0.72         -14.27         0 \r\n 2013          7             8.143         1.94         -8.01          0.2 \r\n 2013          8             10.093       -4.77         -11.52         0 \r\n 2013          9             8.98          3.49         -7.16          0 \r\n 2013          10            8.334         4.56         -7.78          0 \r\n 2013          11            8.464         5.45         -2.64          0 \r\n 2013          12            3.438         2.39         -2.96          0.5 \r\n 2013          13            3.498         8.82          0.73          0.5 \r\n 2013          14            5.146         7.89         -9.81          0 \r\n 2013          15            7.026        -8.65         -14.39         0 \r\n 2013          16            10.177       -2.24         -14.83         0 \r\n 2013          17            10.107       -0.12         -10.37         0 \r\n 2013          18            8.096         7.38         -6.72          0 \r\n 2013          19            8.776         0.72         -10.62         0 \r\n 2013          20            9.947         10.59        -4.88          0 \r\n 2013          21            9.869         8.84         -7.61          0 \r\n 2013          22            5.168        -8.98         -15.44         0 \r\n 2013          23            6.872        -14.73        -20.82         0 \r\n 2013          24            7.229        -10.38        -19.13         0 \r\n 2013          25            9.764        -3.73         -15.87         0 \r\n 2013          26            5.308        -7.84         -17.19         0 \r\n 2013          27            11.086        1.06         -11.19         0 \r\n 2013          28            9.021        -0.33         -14.71         0 \r\n 2013          29            1.025         0.34         -2.13          5.1 \r\n 2013          30            4.129         5.25         -0.47          10.7 \r\n 2013          31            1.751         9.88         -0.25          1.3 \r\n 2013          32            8.868        -0.94         -9.67          0 \r\n 2013          33            8.756        -10.58        -18.59         0 \r\n 2013          34            6.712        -5.64         -21.36         0 \r\n 2013          35            8.961        -4.02         -10.88         0 \r\n 2013          36            10.128       -0.28         -9.64          0 \r\n 2013          37            7.144        -1.56         -7.95          0 \r\n 2013          38            11.033        4.33         -6.06          0 \r\n 2013          39            6.355         4.31         -4.68          0 \r\n 2013          40            2.138         1.96         -2.97          1.8 \r\n 2013          41            3.297        -2.68         -5.26          0 \r\n 2013          42            5.13          1.07         -3.41          0 \r\n 2013          43            3.264         6.78         -0.44          5.1 \r\n 2013          44            5.268        -0.83         -3.29          0 \r\n 2013          45            13.893        6.46         -5.81          0 \r\n 2013          46            13.153        8.67         -4.34          0 \r\n 2013          47            6.354         3.56         -4.58          0 \r\n 2013          48            13.747       -3.23         -9.69          0.2 \r\n 2013          49            14.796        0.79         -12.37         0 \r\n 2013          50            13.134        6.41         -7.96          0 \r\n 2013          51            5.348         3.94         -9.37          0 \r\n 2013          52            15.392       -6.74         -14.29         0 \r\n 2013          53            13.363       -5.37         -18.19         0 \r\n 2013          54            3.917        -3.99         -9.34          0 \r\n 2013          55            14.55        -3.05         -6.69          0 \r\n 2013          56            17.087       -2.34         -14.18         0 \r\n 2013          57            15.774        1.81         -12.28         0.2 \r\n 2013          58            10.358        2.93         -3.7           0 \r\n 2013          59            6.515        -1            -2.36          0 \r\n 2013          60            11.001       -1.36         -4.42          0 \r\n 2013          61            10.692       -1.37         -6.37          0 \r\n 2013          62            12.034       -3.28         -4.96          0 \r\n 2013          63            17.738       -1.8          -11.25         0 \r\n 2013          64            15.353       -0.88         -6.97          0 \r\n 2013          65            9.484         0.85         -3.32          0 \r\n 2013          66            9.819        -1.2          -4.46          0.5 \r\n 2013          67            14.643       -3.41         -9.25          0 \r\n 2013          68            17.121       -1.06         -13.37         0 \r\n 2013          69            15.335        3.34         -5.76          1.5 \r\n 2013          70            2.283         3.14          1.07          17.5 \r\n 2013          71            1.587         2.25         -1.31          9.1 \r\n 2013          72            13.336       -1.89         -5.55          0 \r\n 2013          73            14.679       -0.93         -9.15          0.2 \r\n 2013          74            19.817       -1.64         -10.45         0.2 \r\n 2013          75            17.818        5.82         -4.99          0.2 \r\n 2013          76            11.446        8.18         -0.81          0 \r\n 2013          77            10.281        0.96         -3.44          0 \r\n 2013          78            19.281        2.72         -6.82          0 \r\n 2013          79            14.716       -0.26         -7.01          0 \r\n 2013          80            19.14         0.29         -10.09         0 \r\n 2013          81            18.193       -4.48         -10.75         0 \r\n 2013          82            20.437       -0.59         -11.74         0 \r\n 2013          83            15.698        1.7          -7.94          0 \r\n 2013          84            10.96         1.79         -3.16          0 \r\n 2013          85            5.982        -1.01         -3.32          0 \r\n 2013          86            17.314        0.96         -2.98          0 \r\n 2013          87            18.23         2.65         -5.82          0 \r\n 2013          88            21.272        6.68         -4.07          0 \r\n 2013          89            20.517        11.66        -2.15          0 \r\n 2013          90            21.119        15.2         -0.98          0 \r\n 2013          91            6.656         13.23         4.28          3.8 \r\n 2013          92            16.495        8.63         -0.86          0.2 \r\n 2013          93            18.871        1.97         -5.48          0 \r\n 2013          94            20.225        6.04         -5.29          0 \r\n 2013          95            16.424        9.04         -4.29          0 \r\n 2013          96            20.794        15.14        -1.42          0 \r\n 2013          97            14.926        14.4         -2.26          0 \r\n 2013          98            10.284        18.58         5.83          0 \r\n 2013          99            14.806        18.29         0.82          0 \r\n 2013          100           19.576        22.68         8.28          0 \r\n 2013          101           2.041         12.02         4.88          15.2 \r\n 2013          102           3.624         4.36          2.62          19.8 \r\n 2013          103           8.331         4.44          1.55          9.1 \r\n 2013          104           6.938         2.95          0.18          0 \r\n 2013          105           19.91         8.86         -1.79          0.2 \r\n 2013          106           5.207         19.01         4.11          12.4 \r\n 2013          107           7.341         7.68          1.77          0.2 \r\n 2013          108           17.733        9.56         -0.26          0 \r\n 2013          109           1             6.48          3.89          47.2 \r\n 2013          110           6.181         4.52          0.37          18.8 \r\n 2013          111           20.466        4.34         -1.72          0 \r\n 2013          112           23.813        7.31         -4.31          0 \r\n 2013          113           15.225        18.44         3.71          4.3 \r\n 2013          114           9.961         16.76         1.76          14.2 \r\n 2013          115           11.919        4.47         -0.69          0 \r\n 2013          116           26.343        11.71        -3.71          0 \r\n 2013          117           27.009        15.9         -1.43          0 \r\n 2013          118           21.358        18.89         7.62          0 \r\n 2013          119           24.427        18.88         6.47          0 \r\n 2013          120           25.388        24.13         6.48          20 \r\n 2013          121           22.843        26.16         10.97         0.2 \r\n 2013          122           19.585        26.72         13.12         0.2 \r\n 2013          123           9.673         12.89         2.74          1 \r\n 2013          124           9.008         2.58         -0.12          23.4 \r\n 2013          125           9.861         0.26         -0.37          3.8 \r\n 2013          126           6.222         7.07          0.12          12.9 \r\n 2013          127           16.468        13.75         5.11          0.5 \r\n 2013          128           25.164        21.82         6.73          0 \r\n 2013          129           25.098        24.33         8.96          0 \r\n 2013          130           14.319        22.28         10.33         10.7 \r\n 2013          131           12.622        19.48         11.13         58.4 \r\n 2013          132           20.057        18.33         7.97          0 \r\n 2013          133           28.964        12.45         4.98          0 \r\n 2013          134           29.893        15.43         1.02          0 \r\n 2013          135           26.733        24.04         5.19          0 \r\n 2013          136           28.331        35.61         14.66         0 \r\n 2013          137           26.146        27.06         15.59         0 \r\n 2013          138           23.7          27.11         13.78         0 \r\n 2013          139           20.105        26.33         15.72         0 \r\n 2013          140           22.034        28            15.23         0 \r\n 2013          141           23            30.11         16.07         21.3 \r\n 2013          142           24.757        23.52         15.28         9.1 \r\n 2013          143           22            18.93         13.9          0 \r\n 2013          144           12.028        15.76         11.41         0.2 \r\n 2013          145           28.332        20.04         10.76         0.2 \r\n 2013          146           28.521        20.88         6.84          0 \r\n 2013          147           4.409         14.97         10.21         19.1 \r\n 2013          148           5.089         14.85         10.04         6.3 \r\n 2013          149           13.671        22.72         13.22         17.8 \r\n 2013          150           21.303        25.26         16.07         11.9 \r\n 2013          151           9.241         23.51         17.15         6.6 \r\n 2013          152           12.957        21.51         17.88         1.8 \r\n 2013          153           26.216        24.65         15.56         0 \r\n 2013          154           16            20.33         12.82         3.6 \r\n 2013          155           26            17.94         9.92          0 \r\n 2013          156           29.837        21.64         8.39          0 \r\n 2013          157           6.257         17.38         12.84         7.1 \r\n 2013          158           10.354        19.86         13            12.9 \r\n 2013          159           19            19.67         11.53         0 \r\n 2013          160           18.505        19.64         10.36         0 \r\n 2013          161           11.964        20.87         10.81         5.8 \r\n 2013          162           16.843        20.89         14.54         4.6 \r\n 2013          163           18.442        24.44         13.06         0.2 \r\n 2013          164           22.312        29.5          17.19         0 \r\n 2013          165           22.227        30.44         18.08         4.3 \r\n 2013          166           27.825        27.5          15.86         0 \r\n 2013          167           8.333         23.06         17.29         13.5 \r\n 2013          168           13.599        27.28         17.16         8.6 \r\n 2013          169           28.403        28.94         18.54         0 \r\n 2013          170           27.791        30.06         17.02         0 \r\n 2013          171           27.282        27.61         17.56         0 \r\n 2013          172           27.309        28.06         17.34         0 \r\n 2013          173           27.258        30.28         18.99         0 \r\n 2013          174           15.424        31            21.98         0.8 \r\n 2013          175           24.467        31.83         21.04         0 \r\n 2013          176           13.303        26.56         19.41         3.6 \r\n 2013          177           11.201        24.68         19.75         13.5 \r\n 2013          178           19.689        29.89         19.98         11.9 \r\n 2013          179           25.648        31.78         22.39         2.3 \r\n 2013          180           16.307        29.44         19.03         0.2 \r\n 2013          181           29.301        29.44         19.27         0 \r\n 2013          182           21.105        24.04         17.09         2.3 \r\n 2013          183           27.182        25.01         14.51         0 \r\n 2013          184           28.632        27            13.96         0 \r\n 2013          185           25.593        27.78         13.82         0 \r\n 2013          186           26.304        26.36         12.77         0 \r\n 2013          187           26.669        28            16.18         0 \r\n 2013          188           27.941        29.83         18.04         0 \r\n 2013          189           28.147        31.39         20.58         0 \r\n 2013          190           24.627        31.44         22.78         2 \r\n 2013          191           16.744        30.39         23.32         0 \r\n 2013          192           21.189        32.78         22.88         1.5 \r\n 2013          193           29.722        27.22         17.99         0 \r\n 2013          194           29.059        27.78         14.46         0 \r\n 2013          195           28.92         28.94         16.37         0 \r\n 2013          196           13.752        25.12         18.67         0 \r\n 2013          197           28.951        28.78         17.24         0 \r\n 2013          198           23.336        30            16.77         0 \r\n 2013          199           22.936        31.67         21.65         0 \r\n 2013          200           25.767        33.22         21.56         1.5 \r\n 2013          201           26.92         32.5          22.11         0 \r\n 2013          202           23.733        33.39         19.58         0 \r\n 2013          203           27.515        30.39         14.16         0 \r\n 2013          204           20.563        26.22         17.39         0 \r\n 2013          205           27.121        32.39         17.68         16.8 \r\n 2013          206           19.803        24.5          15.99         0 \r\n 2013          207           25.892        25.57         12.83         0 \r\n 2013          208           23.91         28.22         14.96         0 \r\n 2013          209           26.902        23.82         15.41         0 \r\n 2013          210           25.896        20.04         10.49         0 \r\n 2013          211           27.992        23.27         9.01          0 \r\n 2013          212           15.306        21.89         9.78          0 \r\n 2013          213           5.634         20.28         16.96         4.3 \r\n 2013          214           21.114        27.5          16.88         0.2 \r\n 2013          215           24.897        29.17         13.84         0 \r\n 2013          216           15.695        25.95         17.26         0 \r\n 2013          217           23.244        24.68         14.17         0 \r\n 2013          218           24.585        25.6          11.27         0 \r\n 2013          219           15.78         27.94         16.48         0 \r\n 2013          220           23.27         30.22         16.71         0 \r\n 2013          221           26.128        25.24         17.28         1.5 \r\n 2013          222           20.908        25.96         12.49         0 \r\n 2013          223           20.797        25.66         15.24         0 \r\n 2013          224           22.759        27.11         12.03         0 \r\n 2013          225           19.408        28            15.93         51.8 \r\n 2013          226           22.916        26.34         15.66         2.3 \r\n 2013          227           21.905        24.08         12.95         0 \r\n 2013          228           23.351        22.77         10.36         0 \r\n 2013          229           18.248        21.25         12.71         0 \r\n 2013          230           24.432        24.12         9.69          0 \r\n 2013          231           23.135        25.97         10.74         0 \r\n 2013          232           22.837        26.52         11.84         0 \r\n 2013          233           19.236        27.89         14.52         0 \r\n 2013          234           21.963        30.61         19.03         0 \r\n 2013          235           18.445        30.72         20.9          0 \r\n 2013          236           15.239        28.39         18.82         0 \r\n 2013          237           20.067        29            18.06         0 \r\n 2013          238           16.196        30.78         20.33         0 \r\n 2013          239           22.415        32.67         21.69         0 \r\n 2013          240           22.968        34            21.43         0 \r\n 2013          241           22.8          34            22.76         0 \r\n 2013          242           22.615        34.78         19.16         0 \r\n 2013          243           21.971        33.06         19.78         0 \r\n 2013          244           22.326        32.17         18.38         0 \r\n 2013          245           22.952        26.89         15.34         1.8 \r\n 2013          246           24.254        24.57         11.16         0 \r\n 2013          247           23.256        27.78         6.54          0 \r\n 2013          248           20.805        31.78         12.82         0 \r\n 2013          249           19.452        30.78         18.55         0 \r\n 2013          250           21.603        31.67         17.14         0 \r\n 2013          251           12.872        31.89         20.24         0 \r\n 2013          252           13.72         28.67         19.67         0 \r\n 2013          253           20.661        36.33         19.59         0 \r\n 2013          254           20.466        34.61         18.52         6.9 \r\n 2013          255           14.81         29.78         17.34         1.5 \r\n 2013          256           22.061        24.31         10.97         0 \r\n 2013          257           21.67         21.98         6.94          0 \r\n 2013          258           18.258        23.87         6.14          0 \r\n 2013          259           7.745         20.95         10.65         0 \r\n 2013          260           13.286        18.62         8.87          0 \r\n 2013          261           3.256         18.31         10.92         11.2 \r\n 2013          262           17.999        31.5          17.6          0.8 \r\n 2013          263           10.434        29.39         16.18         15.2 \r\n 2013          264           17.364        18.89         7.79          0.2 \r\n 2013          265           20.434        23.13         5.29          0 \r\n 2013          266           19.605        25.02         8.09          0 \r\n 2013          267           19.841        24.24         9.07          0 \r\n 2013          268           9.874         22.93         11.06         0 \r\n 2013          269           17.949        25.66         9.04          0 \r\n 2013          270           18.12         28.44         13.22         0 \r\n 2013          271           17.186        29.78         16.93         0 \r\n 2013          272           6.341         20.61         6.68          3.3 \r\n 2013          273           18.552        24.11         5.29          0.2 \r\n 2013          274           17.521        24.62         10.12         0 \r\n 2013          275           17.197        28.33         12.31         0 \r\n 2013          276           14.921        28.61         10.63         0 \r\n 2013          277           12.481        27.06         17.6          6.3 \r\n 2013          278           5.665         24.35         16.79         53.6 \r\n 2013          279           13.761        19.32         7.08          0 \r\n 2013          280           4.019         9.48          5.02          4.1 \r\n 2013          281           17.001        23.5          4.68          0 \r\n 2013          282           16.926        24.92         8.13          0 \r\n 2013          283           16.633        23.67         8.19          0 \r\n 2013          284           15.966        25.06         7.28          0 \r\n 2013          285           6.832         22.33         11.87         0 \r\n 2013          286           16.565        18.99         4.42          0 \r\n 2013          287           16.082        18.92        -0.01          0 \r\n 2013          288           10.459        17.92         3.53          13.7 \r\n 2013          289           3.93          14.67         7.59          1 \r\n 2013          290           3.916         9.64          2.66          0 \r\n 2013          291           13.565        16.77         1.92          0 \r\n 2013          292           10.502        10.66         1.95          0 \r\n 2013          293           9.268         13.96        -0.31          0 \r\n 2013          294           6.161         17.54         2.96          0 \r\n 2013          295           12.761        9.99         -1.23          0 \r\n 2013          296           3.843         4.86          1.43          4.3 \r\n 2013          297           6.423         5.16         -2.2           0.8 \r\n 2013          298           10.028        7.76         -2.13          0 \r\n 2013          299           12.178        13.32        -4.46          0 \r\n 2013          300           13.559        11.23        -2.23          0 \r\n 2013          301           13.754        17.3         -4.12          0 \r\n 2013          302           10.887        11.64         1.24          0 \r\n 2013          303           6.711         12.78         3.57          0.2 \r\n 2013          304           5.731         17.74         10.08         16.5 \r\n 2013          305           4.75          10.79         4.31          0 \r\n 2013          306           8.744         13.46         3.6           0 \r\n 2013          307           12.49         12.14         1.72          0 \r\n 2013          308           9.913         13.09         0.23          0 \r\n 2013          309           2.867         12.31         4.18          2.3 \r\n 2013          310           1.022         11.03         3.37          21.6 \r\n 2013          311           11.626        6.91         -2.57          0 \r\n 2013          312           11.144        7.49         -3.14          0 \r\n 2013          313           7.573         14.74        -3.34          0.2 \r\n 2013          314           11.735        13.19         0.87          0 \r\n 2013          315           8.768         8.94         -4.83          0 \r\n 2013          316           3.071         7.35         -9.16          0 \r\n 2013          317           11.851       -1.05         -12.7          0 \r\n 2013          318           11.486        10.23        -7.73          0 \r\n 2013          319           8.47          11.21        -0.71          0 \r\n 2013          320           9.1           12.83        -3.04          0 \r\n 2013          321           2.838         18.73         4.62          0.5 \r\n 2013          322           4.846         9.96          3.71          5.8 \r\n 2013          323           10.52         7.59         -1.82          0 \r\n 2013          324           10.126        11.51        -1.45          0 \r\n 2013          325           2.513         6.75          0.33          0.2 \r\n 2013          326           1             2.83         -5.41          0.2 \r\n 2013          327           10.877       -3.48         -12.53         0 \r\n 2013          328           10.799       -8.03         -18.05         0 \r\n 2013          329           10.277       -3.65         -17.43         0 \r\n 2013          330           6.756         1.46         -5.94          0.5 \r\n 2013          331           9.438        -1.44         -10.37         0 \r\n 2013          332           9.557        -4.08         -14.93         0 \r\n 2013          333           9.726        -0.54         -12.33         0 \r\n 2013          334           8.125         2.5          -13.82         0 \r\n 2013          335           9.241         8.85         -3.54          0 \r\n 2013          336           5.794         4.25         -5.06          0 \r\n 2013          337           5.761         7.59         -0.54          0 \r\n 2013          338           1.567         3.21         -0.41          0 \r\n 2013          339           1             2.91         -9.12          0.5 \r\n 2013          340           6.188        -8.64         -15.17         0 \r\n 2013          341           9.423        -10.84        -18.52         0 \r\n 2013          342           7.594        -10.64        -21.16         0 \r\n 2013          343           4.013        -7.93         -12.4          0 \r\n 2013          344           9.495        -11.29        -21.09         0 \r\n 2013          345           8.172        -7.08         -16.15         0 \r\n 2013          346           9.451        -7.63         -21.23         0 \r\n 2013          347           7.562        -1.75         -17.03         0 \r\n 2013          348           6.764        -2.19         -11.52         0 \r\n 2013          349           6.255        -5.51         -12.53         0 \r\n 2013          350           3.563        -9.56         -14.02         0 \r\n 2013          351           3.93         -2.97         -12.4          0 \r\n 2013          352           8.532         1.49         -9.79          0 \r\n 2013          353           6.895         7.19         -10.03         0 \r\n 2013          354           3.895         0.51         -4.53          0 \r\n 2013          355           1            -3.75         -7.33          0 \r\n 2013          356           2.228        -4.52         -8.54          0 \r\n 2013          357           6.319        -4.62         -15.88         0 \r\n 2013          358           9.238        -14.36        -23.84         0 \r\n 2013          359           5.422        -9.15         -27.16         0 \r\n 2013          360           5.041         0.28         -11.38         0 \r\n 2013          361           6.5           1.59         -10.84         0 \r\n 2013          362           8.326         5.91         -10.71         0 \r\n 2013          363           8.784         8.75         -6.66          0 \r\n 2013          364           8.364        -6.66         -19.23         0 \r\n 2013          365           4.044        -11.55        -19.64         0 \r\n 2014          1             5.341        -12.5         -18.32         2 \r\n 2014          2             4.778        -13.38        -16.22         0 \r\n 2014          3             9.513        -15           -24.86         0 \r\n 2014          4             8.517        -0.26         -24.89         0 \r\n 2014          5             3.642         1.46         -14.77         0 \r\n 2014          6             7.769        -14.56        -25.33         0 \r\n 2014          7             8.593        -19.91        -26.75         0 \r\n 2014          8             6.385        -9.46         -24.14         0 \r\n 2014          9             6.702        -8.94         -17.1          0 \r\n 2014          10            5.988        -6.27         -18.45         0 \r\n 2014          11            1.567        -0.16         -6.54          0.2 \r\n 2014          12            5.604        -0.74         -6.78          0 \r\n 2014          13            4.753         5.81         -6             0 \r\n 2014          14            7.951         6.67         -0.3           0 \r\n 2014          15            2.8           4.1          -10.27         0.2 \r\n 2014          16            8.01         -1.41         -11.34         0 \r\n 2014          17            3.154         2.58         -14.05         0 \r\n 2014          18            10.344       -5.46         -16.49         0 \r\n 2014          19            1.908         2.64         -11.34         0.2 \r\n 2014          20            10.093        11.01        -9.55          0 \r\n 2014          21            5.212         6.28         -16.09         0 \r\n 2014          22            6.028        -11.21        -22.21         0 \r\n 2014          23            6.66         -8.1          -21.03         0 \r\n 2014          24            11.157       -13.48        -22.82         0 \r\n 2014          25            4.681         4.54         -16.99         0 \r\n 2014          26            10.714        2.37         -10.33         0 \r\n 2014          27            5.322         7.47         -17.74         0 \r\n 2014          28            11.6         -15.31        -21.49         0 \r\n 2014          29            11.735       -9.42         -23.29         0 \r\n 2014          30            11.886        3.62         -19.12         0 \r\n 2014          31            6.888         4.71         -13.92         0 \r\n 2014          32            7.365        -7.83         -15.37         2.8 \r\n 2014          33            8.747        -4.22         -15.27         0 \r\n 2014          34            13.005       -7.43         -24.24         0 \r\n 2014          35            11.93        -1.31         -17.47         1 \r\n 2014          36            4.287        -6.71         -15.58         1 \r\n 2014          37            12.224       -13.92        -22.42         0 \r\n 2014          38            13.154       -12.67        -26.52         0 \r\n 2014          39            12.06        -9.49         -24.14         0 \r\n 2014          40            8.189        -5.94         -12.53         1.8 \r\n 2014          41            11.371       -11.48        -24.04         0 \r\n 2014          42            14.226       -14.05        -28.48         0 \r\n 2014          43            13.783       -9.52         -27.22         0 \r\n 2014          44            11.557       -3.78         -13.88         0 \r\n 2014          45            13.765        5.48         -9.96          0.2 \r\n 2014          46            12.656       -9.12         -18.01         0 \r\n 2014          47            8.395         1.27         -18.65         0 \r\n 2014          48            12.171       -4.89         -8.92          0 \r\n 2014          49            13.418        5.54         -5.97          2.5 \r\n 2014          50            13.655        10.87        -3.71          0 \r\n 2014          51            12.836        8.54         -2.72          0 \r\n 2014          52            2.411         4.13         -4.93          8.1 \r\n 2014          53            14.803        0.44         -8.88          0.2 \r\n 2014          54            15.502       -3.55         -10.43         0 \r\n 2014          55            15.797       -5.2          -12.67         0 \r\n 2014          56            10.379       -6.04         -12.84         1 \r\n 2014          57            13.955       -12.27        -19.77         0 \r\n 2014          58            17.337       -4.24         -22.55         0 \r\n 2014          59            17.494       -11.35        -21.53         0 \r\n 2014          60            12.499       -0.53         -19.46         5.2 \r\n 2014          61            8.217        -7.63         -19.6          3.5 \r\n 2014          62            16.952       -19.44        -23.88         0 \r\n 2014          63            16.781       -9.28         -24.82         0 \r\n 2014          64            17.141       -4.25         -15.37         0 \r\n 2014          65            10.528       -5.27         -7.83          0 \r\n 2014          66            15.291        1.52         -7.73          0 \r\n 2014          67            9.954         3.72         -5.09          0 \r\n 2014          68            16.745       -2.19         -9.25          0 \r\n 2014          69            16.11         9.49         -8.77          0 \r\n 2014          70            15.707        16.23         2.91          0 \r\n 2014          71            6.904         5.61          0.51          0 \r\n 2014          72            10.575        0.74         -2.9           0 \r\n 2014          73            18.598        15.76        -2.36          0 \r\n 2014          74            16.978        11.01        -0.77          2.5 \r\n 2014          75            14.676        6.28         -2.53          0 \r\n 2014          76            17.329       -0.5          -7.42          0 \r\n 2014          77            17.01         7.9          -5.94          0 \r\n 2014          78            7.941         8.95          0.34          1 \r\n 2014          79            7.029         5.72         -1.45          0 \r\n 2014          80            19.218        11.92        -2.42          0 \r\n 2014          81            18.241        13.67        -2.9           0 \r\n 2014          82            17.419       -0.97         -7.69          0 \r\n 2014          83            20.691        0.01         -9.89          0 \r\n 2014          84            12.4          3.89         -5.09          0 \r\n 2014          85            20.283       -0.23         -7.7           0 \r\n 2014          86            17.289        11.95        -7.49          0 \r\n 2014          87            1.587         11.18         0.61          11.7 \r\n 2014          88            4.726         2.03         -0.47          0 \r\n 2014          89            21.711        9.72         -2.05          0 \r\n 2014          90            17.903        20.42         0.65          0 \r\n 2014          91            17.094        23.01        -4.35          2.8 \r\n 2014          92            15.37         5.96         -6.98          0 \r\n 2014          93            11.678        8.9          -1.7           0.2 \r\n 2014          94            21.202        5.6          -2.2           14.5 \r\n 2014          95            26.214        4.4          -5.6           0 \r\n 2014          96            14.55         12.8         -3.3           0 \r\n 2014          97            18.479        14.4          1.1           0 \r\n 2014          98            26.78         17.2          1.7           0.2 \r\n 2014          99            26.716        13.3         -2.8           0 \r\n 2014          100           25.18         23.3          0.6           0 \r\n 2014          101           19.427        19            6.86          0 \r\n 2014          102           21.62         24.7          2.85          0 \r\n 2014          103           16.954        29.28         12.59         5.1 \r\n 2014          104           1.049         14.01        -0.5           52.3 \r\n 2014          105           17.121        3.11         -3.17          0 \r\n 2014          106           24.599        6.01         -5.26          0 \r\n 2014          107           15.107        17.18         1.16          0.2 \r\n 2014          108           20.055        11.75        -0.6           0 \r\n 2014          109           24.116        17.08        -2.72          0 \r\n 2014          110           20.414        24.63         4.94          0 \r\n 2014          111           19.64         28.67         11.52         1 \r\n 2014          112           15.205        22.51         8.92          0 \r\n 2014          113           25.713        18.19         2.61          0 \r\n 2014          114           3.891         10.44         6.01          10.9 \r\n 2014          115           5.043         13.01         5.44          2.5 \r\n 2014          116           24.627        24.52         3.32          0 \r\n 2014          117           18.514        22.11         6.89          0.8 \r\n 2014          118           6.135         16.38         4.79          42.7 \r\n 2014          119           3.487         13.95         9.19          12.9 \r\n 2014          120           3.462         9.29          1.92          5.6 \r\n 2014          121           6.189         5.44          2.31          9.9 \r\n 2014          122           6.995         7.8           4.12          0.2 \r\n 2014          123           20.524        18.79         2.88          0 \r\n 2014          124           22.637        21.56         4.84          1.3 \r\n 2014          125           22.768        16.78         6.25          0.2 \r\n 2014          126           26.303        21.09         6.82          0 \r\n 2014          127           24.173        23.69         7.39          0 \r\n 2014          128           25.541        31.39         11.52         0 \r\n 2014          129           12.262        26.12         11.92         0.2 \r\n 2014          130           18.826        19.94         8.82          0 \r\n 2014          131           15.161        26.78         6.42          0 \r\n 2014          132           10.656        24.77         9.69          23.1 \r\n 2014          133           7.548         22.88         8.54          5.1 \r\n 2014          134           20.733        14.25         7.03          0 \r\n 2014          135           17.949        16.13         2.88          7.4 \r\n 2014          136           14.604        9.19          2.81          0.5 \r\n 2014          137           21.668        12.53         0.78          0 \r\n 2014          138           26.95         18.86         3.39          0 \r\n 2014          139           27.242        21.19         5.21          0 \r\n 2014          140           11.318        23.12         12.33         0.8 \r\n 2014          141           15.985        28.78         15.5          48.3 \r\n 2014          142           27.182        26.48         13.61         0 \r\n 2014          143           19.752        25.72         10.68         0 \r\n 2014          144           27.536        25.23         9.59          0 \r\n 2014          145           22.754        25.88         12.43         0 \r\n 2014          146           10.883        24.61         15.5          2.8 \r\n 2014          147           13.722        25.84         17.08         1.8 \r\n 2014          148           23.89         28.28         16.61         1.5 \r\n 2014          149           15.739        27.5          16.84         0 \r\n 2014          150           22.433        29            15.66         0 \r\n 2014          151           19.837        30.33         17.82         1 \r\n 2014          152           23.111        29.72         19.41         0.5 \r\n 2014          153           23.087        30.39         18.03         15 \r\n 2014          154           25.978        27.94         16.78         0.2 \r\n 2014          155           14.501        25.61         13.38         25.6 \r\n 2014          156           17.439        25.1          15.63         2.8 \r\n 2014          157           18.556        22.98         14.05         0 \r\n 2014          158           25.401        29.22         14.69         0 \r\n 2014          159           7.878         21.77         14.72         10.2 \r\n 2014          160           23.796        22.61         13.64         0 \r\n 2014          161           15.304        23.05         13.01         0 \r\n 2014          162           19.832        23.08         13.64         0 \r\n 2014          163           28.093        27.33         12.16         0 \r\n 2014          164           26.647        23.32         13.64         0 \r\n 2014          165           27.87         23.93         8.75          0 \r\n 2014          166           21.91         27.94         13.07         0 \r\n 2014          167           21.672        27.22         17.16         0 \r\n 2014          168           15.192        30.89         16.18         3.8 \r\n 2014          169           20.205        29.06         15.73         28.7 \r\n 2014          170           22.128        30.28         19            0.8 \r\n 2014          171           8.207         25.81         17.72         35.8 \r\n 2014          172           27.839        30.56         15.5          0.2 \r\n 2014          173           25.789        28.5          18.09         0.2 \r\n 2014          174           10.458        24.57         17.96         10.4 \r\n 2014          175           18.094        27.33         16.54         0 \r\n 2014          176           22.622        27.22         16.34         0 \r\n 2014          177           25.519        29.94         14.96         0 \r\n 2014          178           11.572        25.34         18.47         52.8 \r\n 2014          179           9.15          26.18         18.97         13.2 \r\n 2014          180           15.202        29.5          16.88         9.9 \r\n 2014          181           22.271        27.22         16.21         4.8 \r\n 2014          182           3.877         25.14         16.41         29.7 \r\n 2014          183           19.623        24.37         14.14         1 \r\n 2014          184           12.68         20.15         11.48         0 \r\n 2014          185           28.458        24.16         9.66          0 \r\n 2014          186           27.292        25.61         11.99         0.5 \r\n 2014          187           14.311        23.32         16.17         51.6 \r\n 2014          188           20.798        31.11         18.9          0 \r\n 2014          189           22.716        30.17         17.99         0 \r\n 2014          190           26.399        25.84         16.95         0 \r\n 2014          191           25.731        26.25         12.7          0 \r\n 2014          192           26.528        27.72         14.97         0 \r\n 2014          193           6.408         23.66         17.96         3.6 \r\n 2014          194           20.597        28.39         17.28         9.9 \r\n 2014          195           22.198        28.11         16.98         2.3 \r\n 2014          196           26.17         22.57         11.48         0 \r\n 2014          197           21.736        21.46         10.41         0 \r\n 2014          198           27.002        23.99         10.37         0 \r\n 2014          199           27.997        25.71         10            0 \r\n 2014          200           22.106        25.71         12.97         0 \r\n 2014          201           24.322        26.66         16.21         0 \r\n 2014          202           26.582        28.39         16.84         0 \r\n 2014          203           23.083        31.39         19.68         0 \r\n 2014          204           19.308        30.78         19.28         0 \r\n 2014          205           27.459        27.17         14.83         0 \r\n 2014          206           16.299        25.51         13.31         0.8 \r\n 2014          207           18.903        26.18         16.64         11.7 \r\n 2014          208           17.18         28.56         18.47         0 \r\n 2014          209           25.108        24.03         16.01         0.2 \r\n 2014          210           21.317        23.28         13.95         3.8 \r\n 2014          211           24.305        25.21         11.28         0.2 \r\n 2014          212           25.745        26.08         11.86         0 \r\n 2014          213           24.167        27.17         12.17         0 \r\n 2014          214           26.913        28.44         12.16         0 \r\n 2014          215           26            28.44         13.98         0 \r\n 2014          216           26.755        28.78         16.28         0 \r\n 2014          217           22.315        29.72         15.74         0 \r\n 2014          218           13.916        27            15.7          0.2 \r\n 2014          219           4.737         20.08         17.72         37.9 \r\n 2014          220           5.495         20.69         18.87         1.8 \r\n 2014          221           18.266        25.01         17.22         0 \r\n 2014          222           19.235        25.88         17.66         0 \r\n 2014          223           13.935        25.34         16.24         0 \r\n 2014          224           23.505        25.01         15.63         0 \r\n 2014          225           25.43         24.4          11.79         0 \r\n 2014          226           26            26.72         12.02         0 \r\n 2014          227           20.968        26.83         13.31         0 \r\n 2014          228           4.531         21.3          18.46         8.9 \r\n 2014          229           12.567        25.78         17.18         0 \r\n 2014          230           25.101        29.11         16.11         0 \r\n 2014          231           24.164        29.78         18.91         0 \r\n 2014          232           24.477        28.39         17.33         0 \r\n 2014          233           6.301         25.72         16.92         7.6 \r\n 2014          234           15.946        29.83         21.53         8.1 \r\n 2014          235           15.583        30.67         20.89         4.6 \r\n 2014          236           14.072        28.56         20.96         21.3 \r\n 2014          237           23.615        32.44         21.71         0 \r\n 2014          238           23.508        30.17         19.78         0 \r\n 2014          239           16.661        24.91         16.85         14 \r\n 2014          240           9.929         23.59         17.38         0.5 \r\n 2014          241           8.774         25.24         18.03         27.2 \r\n 2014          242           14.456        28.56         17.72         7.1 \r\n 2014          243           17.247        26.18         15.23         0.5 \r\n 2014          244           15.277        30.17         15.07         56.4 \r\n 2014          245           17.661        25.65         15.97         0.2 \r\n 2014          246           23.574        25.78         14.08         0 \r\n 2014          247           21.732        28.44         13.75         0 \r\n 2014          248           21.914        32.44         22.32         0 \r\n 2014          249           8.215         22.96         10.34         8.1 \r\n 2014          250           23.842        23.72         7.91          0.2 \r\n 2014          251           23.584        23.32         8.48          0 \r\n 2014          252           6.484         21.54         11.32         4.1 \r\n 2014          253           6.71          23.18         17.82         39.4 \r\n 2014          254           8.649         19.78         9.56          0.2 \r\n 2014          255           8.773         13.21         8.24          0 \r\n 2014          256           7.971         11.04         2.51          7.6 \r\n 2014          257           22.884        15.57         1.02          0.2 \r\n 2014          258           18.334        21.16         8.43          0 \r\n 2014          259           10.989        16.28         4.71          0 \r\n 2014          260           21.947        19.07         2.04          0 \r\n 2014          261           16.713        23.42         9.05          0 \r\n 2014          262           20.728        22.61         7.74          0 \r\n 2014          263           18.366        26.12         11.83         0 \r\n 2014          264           16.091        28.72         12.23         8.6 \r\n 2014          265           17.082        20.22         8.24          0 \r\n 2014          266           21.053        22.98         5.48          0 \r\n 2014          267           12.515        21.43         8.98          0 \r\n 2014          268           7.404         19.95         12.9          18.8 \r\n 2014          269           15.507        25.65         13.31         0 \r\n 2014          270           17.894        27.61         13.74         0 \r\n 2014          271           15.525        27.78         14.97         2.5 \r\n 2014          272           18.469        27.39         11.02         0 \r\n 2014          273           13.273        27.22         12.23         0 \r\n 2014          274           9.892         19.55         11.99         2.3 \r\n 2014          275           6.267         21.91         12.29         24.4 \r\n 2014          276           2.011         18.6          9.87          2.5 \r\n 2014          277           5.838         10.84         2.27          0 \r\n 2014          278           18.262        11.83         0.34          0 \r\n 2014          279           12.795        18.27         4.74          0 \r\n 2014          280           16.31         18.5          5.51          0 \r\n 2014          281           17.799        20.12         6.93          0 \r\n 2014          282           16.92         21.5          3.96          3.8 \r\n 2014          283           14.179        17.42         6.06          8.1 \r\n 2014          284           11.959        12.94         1.42          0 \r\n 2014          285           17.696        15.43        -0.87          0 \r\n 2014          286           6.739         14.02         2.57          0 \r\n 2014          287           1.936         11.52         10.03         30.7 \r\n 2014          288           7.698         17.46         9.12          0 \r\n 2014          289           17.08         20.09         3.42          0 \r\n 2014          290           14.861        23.56         2.24          0 \r\n 2014          291           10.712        15.91         8.54          0 \r\n 2014          292           11.862        14.46         3.08          0 \r\n 2014          293           13.176        19.51         2.17          0 \r\n 2014          294           15.562        21.5          5.01          0 \r\n 2014          295           15.429        18.84         2.17          0 \r\n 2014          296           9.602         18.57         4.53          3 \r\n 2014          297           10.319        21.74         9.79          9.1 \r\n 2014          298           5.94          21.87         8.18          0.2 \r\n 2014          299           14.527        21.2          5.34          0.2 \r\n 2014          300           13.277        20.79         4.81          0 \r\n 2014          301           8.835         19.89         8.95          0 \r\n 2014          302           12.82         12.54         4.12          0 \r\n 2014          303           13.5          12.16         1.73          0 \r\n 2014          304           11.564        15.94         2.14          0 \r\n 2014          305           14.675        5.34         -6.07          0 \r\n 2014          306           14.318        7.98         -7.59          0 \r\n 2014          307           12.102        15.31         1.06          0 \r\n 2014          308           4.809         16.93         7.51          1.5 \r\n 2014          309           12.019        14.46         3.36          0 \r\n 2014          310           4.86          15.31         2.24          1.8 \r\n 2014          311           12.096        9.02         -3.19          0 \r\n 2014          312           9.007         13.62        -3.26          0 \r\n 2014          313           10.729        9.02         -0.46          0 \r\n 2014          314           5.332         10.95         2.24          0 \r\n 2014          315           7.93          16.25        -2.87          0 \r\n 2014          316           5.381        -2.63         -6.34          0 \r\n 2014          317           8.429        -4.68         -9.76          0 \r\n 2014          318           6.265        -3.03         -11.28         0 \r\n 2014          319           12.458       -2.32         -14.05         0 \r\n 2014          320           3.583        -2.86         -9.79          0 \r\n 2014          321           12.284       -4.75         -13.85         0 \r\n 2014          322           11.181       -9.72         -15.47         0 \r\n 2014          323           8.592        -4.07         -15.95         0 \r\n 2014          324           5.576        -2.18         -8.88          0 \r\n 2014          325           11.785       -3.57         -14.65         0 \r\n 2014          326           9.71          2.58         -13.91         0 \r\n 2014          327           7.356         12.74         1.43          0 \r\n 2014          328           1.971         12.1          0.65          7.1 \r\n 2014          329           2.268         0.65         -5.84          0 \r\n 2014          330           10.927        1.16         -10.19         0 \r\n 2014          331           5.27         -1.31         -7.46          0 \r\n 2014          332           10.695       -7.15         -19.36         0 \r\n 2014          333           9.289         1.16         -12.63         0 \r\n 2014          334           6.804         9.91         -3.33          0 \r\n 2014          335           9.608         0.18         -12.26         0 \r\n 2014          336           6.701        -9.79         -13.85         0 \r\n 2014          337           10.222        2.04         -12.76         0 \r\n 2014          338           9.649         0.69         -7.18          0 \r\n 2014          339           5.165         0.49         -8.4           0 \r\n 2014          340           2.949         2.48         -1.17          0 \r\n 2014          341           9.074         4.67         -2.55          0 \r\n 2014          342           3.043         2.21         -2.86          0.5 \r\n 2014          343           5.028         4.61         -3.13          0 \r\n 2014          344           5.676         0.11         -7.05          0 \r\n 2014          345           1.966        -0.22         -5.93          0 \r\n 2014          346           2.753         1.23         -2.32          0 \r\n 2014          347           4.366         8.18         -0.73          0 \r\n 2014          348           2.455         11.49         4.03          0 \r\n 2014          349           1.625         13.08         7.71          0 \r\n 2014          350           1.113         9.67         -0.6           12.7 \r\n 2014          351           6.144        -0.4          -10.23         0 \r\n 2014          352           8.738        -3.43         -11.47         0 \r\n 2014          353           3.322        -2.76         -9.04          0 \r\n 2014          354           2.037        -0.32         -3.46          0 \r\n 2014          355           1.427         0.89         -1.64          0 \r\n 2014          356           2.195         5.08          0.72          0.2 \r\n 2014          357           1.46          4.74          1.91          9.1 \r\n 2014          358           2.25          2.31         -0.16          4.1 \r\n 2014          359           2.206         0.86         -1.78          3.3 \r\n 2014          360           7.58          8.76         -1.71          0 \r\n 2014          361           1.492         1.44         -2.48          0 \r\n 2014          362           5.378         0.12         -9.18          0 \r\n 2014          363           9.186         0.36         -10.97         0 \r\n 2014          364           5.035        -3.7          -15.64         0 \r\n 2014          365           7.97         -12.73        -19.16         0 \r\n 2015          1             9.55         -6.33         -19.63         0 \r\n 2015          2             8.822         3.83         -11.48         0 \r\n 2015          3             5.432        -0.52         -10.16         0 \r\n 2015          4             5.911         3.8          -10.39         0 \r\n 2015          5             9.539        -10.29        -18.89         0 \r\n 2015          6             2.444        -13.17        -21.12         0 \r\n 2015          7             7.844        -12.02        -25.26         0 \r\n 2015          8             10.041       -15.94        -25.83         0 \r\n 2015          9             5.003        -4.33         -25.26         0 \r\n 2015          10            9.688        -12.36        -20.55         0 \r\n 2015          11            7.886        -0.82         -21.02         0 \r\n 2015          12            9.202        -1.19         -14.96         0 \r\n 2015          13            10.776       -9.14         -22.17         0 \r\n 2015          14            10.609       -7.72         -24.34         0 \r\n 2015          15            5.875        -4.17         -9.48          0 \r\n 2015          16            10.409        3.5          -8.53          0 \r\n 2015          17            10.672        11.89        -6.84          0 \r\n 2015          18            5.806         7.44          0.76          0.2 \r\n 2015          19            9.319         9.13         -2.24          0 \r\n 2015          20            3.123         5.39         -3.53          0.5 \r\n 2015          21            8.437         7.21         -0.93          0 \r\n 2015          22            3.825         0.99         -2.18          0 \r\n 2015          23            2.797        -0.86         -4.64          0 \r\n 2015          24            7.21          6.09         -7.01          0 \r\n 2015          25            9.531         9.94         -4.07          0 \r\n 2015          26            3.495         3.22         -2.01          1.8 \r\n 2015          27            10.939        9.93         -1.84          0 \r\n 2015          28            11.48         6.59         -2.34          0 \r\n 2015          29            9.334         8.46         -2.14          0.2 \r\n 2015          30            4.369         2.21         -5.93          0 \r\n 2015          31            11.741        0.48         -11.34         0 \r\n 2015          32            1.983         2.72         -3.56          3.3 \r\n 2015          33            7.451        -0.05         -14.93         0 \r\n 2015          34            12.657       -11           -24.24         0 \r\n 2015          35            9.045        -4.64         -18.07         0 \r\n 2015          36            10.147       -8.63         -21.36         0 \r\n 2015          37            13.241       -9.28         -27.63         0 \r\n 2015          38            13.205        1.19         -13.67         4.1 \r\n 2015          39            13.081        4.64         -8.19          1 \r\n 2015          40            7.656         2.35         -0.59          0.2 \r\n 2015          41            5.185        -0.25         -2.48          0 \r\n 2015          42            7.788         1.7          -5.66          0 \r\n 2015          43            12.611        1.91         -14.19         0 \r\n 2015          44            13.245       -10.25        -18.07         0 \r\n 2015          45            13.798        2.08         -10.79         0 \r\n 2015          46            13.379       -2.93         -16.62         0 \r\n 2015          47            7.067        -12.32        -16.72         0 \r\n 2015          48            7.599        -3.73         -12.63         0 \r\n 2015          49            12.799       -7.79         -13.67         0 \r\n 2015          50            15.107       -12.79        -20.1          0 \r\n 2015          51            15.982       -11.14        -22.92         0 \r\n 2015          52            13.489        1.5          -11.57         0 \r\n 2015          53            12.484       -0.96         -12.86         0 \r\n 2015          54            15.268       -12.42        -20.61         0 \r\n 2015          55            16.944       -8.5          -23.29         0 \r\n 2015          56            10.895        2.99         -11.03         0 \r\n 2015          57            5.934        -5.38         -14.42         0 \r\n 2015          58            17.191       -13.67        -22.2          0 \r\n 2015          59            17.779       -9.21         -24.92         0 \r\n 2015          60            14.516       -5.86         -22.21         0 \r\n 2015          61            16.536       -1.3          -10.39         0 \r\n 2015          62            10.225       -2.24         -13.06         0 \r\n 2015          63            5.626         0.79         -11.03         0.2 \r\n 2015          64            16.915       -3.36         -15.57         0 \r\n 2015          65            18.682       -6.84         -20.58         0 \r\n 2015          66            17.614        10.03        -12.49         0 \r\n 2015          67            18.41         9.69         -1.37          0 \r\n 2015          68            17.167        10.54        -1.5           0 \r\n 2015          69            19.103        13.31        -2.11          0 \r\n 2015          70            18.581        19.96        -0.45          0 \r\n 2015          71            19.443        15.94        -0.89          0 \r\n 2015          72            18.575        21.43         0.43          0 \r\n 2015          73            19.113        20.49         2.22          0 \r\n 2015          74            19.855        17.43         0.02          0 \r\n 2015          75            12.968        21.41         0.97          0 \r\n 2015          76            18.315        28.72         4.61          0 \r\n 2015          77            15.883        7.95         -0.18          0 \r\n 2015          78            14.36         10.52         0.28          0 \r\n 2015          79            8.735         8.46         -1.27          0 \r\n 2015          80            20.912        17.17        -1.91          0 \r\n 2015          81            21.004        12.54         0.22          0 \r\n 2015          82            19.88         15.14        -1.09          0 \r\n 2015          83            9.368         3.97         -1.67          0.5 \r\n 2015          84            2.332         0.87         -1.94          3.3 \r\n 2015          85            11.727        7.88         -1.37          1.3 \r\n 2015          86            17.963        7.28         -3.9           0 \r\n 2015          87            19.904        3.96         -6.4           0 \r\n 2015          88            21.055        9.3          -2.55          0 \r\n 2015          89            16.249        15.92         0.99          0.5 \r\n 2015          90            21.219        23.91         0.26          0 \r\n 2015          91            22.797        23.02         2.99          0 \r\n 2015          92            22.395        27.39         7.72          0 \r\n 2015          93            19.57         18.81         8.69          15 \r\n 2015          94            22.458        8.76         -1.49          0 \r\n 2015          95            22.618        18.55        -2.31          0 \r\n 2015          96            23.338        21.74         3.83          0 \r\n 2015          97            4.983         14.3          9.31          0.2 \r\n 2015          98            2.846         10.72         5.38          0.8 \r\n 2015          99            4.237         10.45         5.04          21.8 \r\n 2015          100           4.507         9.77          0.66          4.6 \r\n 2015          101           24.72         12.61         1.87          0 \r\n 2015          102           23.647        21.67         0.56          0 \r\n 2015          103           21.224        21.64         8.63          0.5 \r\n 2015          104           24.483        17.97         5.56          0 \r\n 2015          105           22.41         22.32         3.77          0 \r\n 2015          106           18.595        20.77         4.61          0 \r\n 2015          107           20.762        23.09         10.38         0 \r\n 2015          108           19.416        26.06         9.34          0 \r\n 2015          109           6.318         21.41         12.91         21.6 \r\n 2015          110           6.513         17.77         6.67          10.2 \r\n 2015          111           16.974        11.96         1.07          0 \r\n 2015          112           22.211        12.67        -0.25          0 \r\n 2015          113           26.97         12.94        -1.16          0 \r\n 2015          114           24.466        15.98        -0.79          0 \r\n 2015          115           7.702         13.42         7.51          2.3 \r\n 2015          116           5.416         10.48         5.59          11.2 \r\n 2015          117           27.111        16.56         2.11          0 \r\n 2015          118           27.148        19.52         1.44          0 \r\n 2015          119           25.71         22.99         3.77          0 \r\n 2015          120           26.88         21.64         5.69          0 \r\n 2015          121           26.959        21.64         5.8           0 \r\n 2015          122           12.777        20.77         5.09          0.5 \r\n 2015          123           16.533        20.97         10.82         1.3 \r\n 2015          124           24.283        28.28         12.98         0 \r\n 2015          125           9.866         20.6          14.06         2.3 \r\n 2015          126           12.964        24.78         14.43         18.8 \r\n 2015          127           18.096        24.38         15.98         0.2 \r\n 2015          128           11.717        24.98         16.42         2 \r\n 2015          129           15.773        19.62         10.58         0 \r\n 2015          130           25.108        22.38         8.36          0 \r\n 2015          131           6.343         20.41         13.44         7.9 \r\n 2015          132           6.125         13.58         6.46          0 \r\n 2015          133           28.603        18.64         4.61          0 \r\n 2015          134           27.519        21.74         6.13          0 \r\n 2015          135           2.83          15.68         10.68         21.3 \r\n 2015          136           15.867        23.13         11.89         0 \r\n 2015          137           20.678        27.17         15.71         3.6 \r\n 2015          138           15.657        23.53         12.97         7.4 \r\n 2015          139           19.366        13.01         4.94          0 \r\n 2015          140           20.799        13.35         2.62          0 \r\n 2015          141           6.43          9.97          4.88          2.3 \r\n 2015          142           28.235        23.8          3.46          0.2 \r\n 2015          143           21.772        24.28         7.62          0 \r\n 2015          144           14.667        22.72         12.51         0.2 \r\n 2015          145           4.624         20.67         14.5          28.4 \r\n 2015          146           22.841        26.02         15.27         6.6 \r\n 2015          147           12.277        21.71         14.77         23.6 \r\n 2015          148           25.771        27.17         12.88         0.2 \r\n 2015          149           17.465        25.69         14.91         0 \r\n 2015          150           12.648        24.28         14.39         0 \r\n 2015          151           10.222        17.09         11.89         0 \r\n 2015          152           27.012        19.52         7.14          0 \r\n 2015          153           28.142        22.42         8.77          0 \r\n 2015          154           20.891        21.82         11.02         0 \r\n 2015          155           18.268        25.35         14.9          2.5 \r\n 2015          156           17.019        26.67         15.85         0 \r\n 2015          157           21.537        29.22         17.37         0 \r\n 2015          158           12.553        24.41         16.59         0 \r\n 2015          159           22.087        28            17.2          24.1 \r\n 2015          160           26.98         30.06         15.01         0 \r\n 2015          161           27.703        34.33         16.19         0 \r\n 2015          162           25.556        31            19.48         0 \r\n 2015          163           3.923         23.06         16.38         36.1 \r\n 2015          164           6.624         19.29         15.51         1.5 \r\n 2015          165           15.125        23.77         17.29         1 \r\n 2015          166           13.821        26.33         18.54         1.3 \r\n 2015          167           8.77          23.02         15.37         17 \r\n 2015          168           30.583        25.58         13.22         0 \r\n 2015          169           20.999        28.67         18.24         0 \r\n 2015          170           22.198        24.43         14.13         0 \r\n 2015          171           29.855        26.6          13.22         0 \r\n 2015          172           17.718        28.44         16.15         0 \r\n 2015          173           25.17         29.28         16.18         0.2 \r\n 2015          174           15.836        31.56         18.61         1 \r\n 2015          175           27.725        26.78         14.09         0 \r\n 2015          176           7.733         21.98         15.81         75.7 \r\n 2015          177           13.28         24.94         18.61         0.5 \r\n 2015          178           15.129        23.16         15.54         0.8 \r\n 2015          179           28.47         27.5          13.99         0 \r\n 2015          180           25.632        27.89         17.3          10.9 \r\n 2015          181           22.465        27.06         16.66         0 \r\n 2015          182           16.894        26.09         17.19         0 \r\n 2015          183           14.717        23.47         13.89         0 \r\n 2015          184           14.201        20.6          11.96         0 \r\n 2015          185           27.818        25.45         10.64         0 \r\n 2015          186           26.75         26.89         11.79         0 \r\n 2015          187           23.183        29.44         15.64         0 \r\n 2015          188           6.221         24.34         16.72         33.8 \r\n 2015          189           21.051        21.27         11.56         0 \r\n 2015          190           22.323        22.04         10.62         0 \r\n 2015          191           24.05         25.55         12.71         0 \r\n 2015          192           24.744        26.16         15.54         0 \r\n 2015          193           20.812        28.22         19.22         23.6 \r\n 2015          194           27.318        32.56         21.31         0 \r\n 2015          195           28.617        33.39         22.59         0 \r\n 2015          196           27.469        30.33         20.33         0 \r\n 2015          197           11.802        26.57         18.65         5.3 \r\n 2015          198           13.098        29.11         20.39         13.7 \r\n 2015          199           27.973        33.11         19.79         0 \r\n 2015          200           27.089        30.83         21.41         0 \r\n 2015          201           23.07         28.83         17.91         0 \r\n 2015          202           21.304        28.61         15.75         1.3 \r\n 2015          203           28.197        26.36         13.59         0 \r\n 2015          204           20.515        25.14         13.08         0 \r\n 2015          205           25.969        28.61         13.32         0 \r\n 2015          206           24.142        29.72         19.16         0.2 \r\n 2015          207           21.835        30.94         22.28         0 \r\n 2015          208           22.305        30.61         19.45         11.7 \r\n 2015          209           7.386         26.17         20.19         12.4 \r\n 2015          210           4.237         26.37         20.23         66 \r\n 2015          211           27.639        27.5          17.4          0 \r\n 2015          212           27.514        29.39         15.47         0 \r\n 2015          213           25.631        29.17         16.69         0 \r\n 2015          214           24.947        30.72         15.21         0 \r\n 2015          215           26.294        31.67         19.02         0 \r\n 2015          216           27.439        26.67         14.4          0 \r\n 2015          217           18.657        25.62         14.47         0 \r\n 2015          218           13.976        25.58         17.03         0 \r\n 2015          219           20.043        26.78         14.93         0 \r\n 2015          220           22.67         29.39         18.89         0 \r\n 2015          221           17.363        28            18.76         1.8 \r\n 2015          222           19.196        27.56         19.32         52.8 \r\n 2015          223           19.59         26.83         16.36         1.3 \r\n 2015          224           26.664        27.67         14.3          0 \r\n 2015          225           25.977        28.39         14.91         0 \r\n 2015          226           20.346        28.5          16.12         0.2 \r\n 2015          227           24.246        29.83         18.99         0 \r\n 2015          228           25.271        29.22         16.99         0 \r\n 2015          229           22.193        29.83         18.55         0 \r\n 2015          230           7.798         23.63         18.64         17.5 \r\n 2015          231           4.124         20.6          13.92         39.9 \r\n 2015          232           8.664         18.41         12.13         0 \r\n 2015          233           25.428        25.52         9.6           0 \r\n 2015          234           24.352        26.5          15.68         0 \r\n 2015          235           18.808        26.83         16.12         20.3 \r\n 2015          236           25.253        21.38         10.34         0 \r\n 2015          237           25.688        21.72         8.66          0 \r\n 2015          238           25.401        22.82         8.87          0 \r\n 2015          239           22.625        24.41         7.35          0 \r\n 2015          240           9.323         22.26         11.63         1 \r\n 2015          241           2.302         21.11         16.08         41.4 \r\n 2015          242           8.005         21.91         15.88         0 \r\n 2015          243           10.89         23.97         12.91         0 \r\n 2015          244           20.154        30.06         16.12         0.2 \r\n 2015          245           20.096        31            19.16         0.2 \r\n 2015          246           21.305        30.11         19.87         17.8 \r\n 2015          247           21.852        31.78         20.31         0 \r\n 2015          248           19.755        31.28         19.93         0 \r\n 2015          249           19.836        31.83         20.94         0 \r\n 2015          250           19.244        32.67         19.44         59.2 \r\n 2015          251           14.147        29.56         20.91         2.3 \r\n 2015          252           13.949        26            16.66         0 \r\n 2015          253           21.97         26.94         11.29         0 \r\n 2015          254           18.12         27.28         13.86         0.2 \r\n 2015          255           20.145        19.39         8.69          0 \r\n 2015          256           21.642        20.36         6.64          0 \r\n 2015          257           21.608        22.96         6.74          0.2 \r\n 2015          258           18.79         27.06         12.94         0 \r\n 2015          259           19.674        29.06         18.58         0 \r\n 2015          260           20.103        30.39         16.49         0 \r\n 2015          261           8.493         28.17         18.14         19.6 \r\n 2015          262           5.645         20.81         10.11         10.7 \r\n 2015          263           21.225        21.62         8.29          0 \r\n 2015          264           20.786        22.82         6.88          0.2 \r\n 2015          265           18.216        24.48         11.13         0 \r\n 2015          266           11.321        27.72         17.84         1.5 \r\n 2015          267           4.793         21.48         18.11         1.5 \r\n 2015          268           7.331         24.51         16.99         0 \r\n 2015          269           15.374        26.31         13.46         0 \r\n 2015          270           18.777        26.83         11.43         0 \r\n 2015          271           18.41         26.53         12.51         0 \r\n 2015          272           14.031        29.39         13.38         6.1 \r\n 2015          273           17.323        21.95         7.79          16.8 \r\n 2015          274           19.268        18.65         3.22          0 \r\n 2015          275           18.057        17.37         3.16          0 \r\n 2015          276           19.154        17.74         2.96          0 \r\n 2015          277           18.823        17.06         4.17          0 \r\n 2015          278           6.862         13.01         3.49          0 \r\n 2015          279           14.544        20.36         5.46          0 \r\n 2015          280           9.181         21.38         10.68         0 \r\n 2015          281           16.153        25.19         11.29         0 \r\n 2015          282           12.995        26.21         11.69         0 \r\n 2015          283           14.152        17.8          4.71          0 \r\n 2015          284           15.859        21.95         3.02          0 \r\n 2015          285           16.524        29.22         12.07         0 \r\n 2015          286           15.989        21.54         10.01         0 \r\n 2015          287           16.022        20.67         4.11          0 \r\n 2015          288           15.992        20.84         2.79          0 \r\n 2015          289           16.25         20.61         3.8           0 \r\n 2015          290           16.535        11.73         0.63          0 \r\n 2015          291           14.31         13.08        -0.32          0 \r\n 2015          292           15.415        17.94         0.02          0 \r\n 2015          293           13.312        26.72         12.24         0 \r\n 2015          294           10.743        21.34         11.02         0 \r\n 2015          295           9.444         19.36         9.23          10.4 \r\n 2015          296           7.867         16.18         8.12          0 \r\n 2015          297           2.356         16.86         12.17         8.1 \r\n 2015          298           12.095        15.18         2.86          0 \r\n 2015          299           14.668        16.76         0.19          0 \r\n 2015          300           11.341        16.66         1.47          0 \r\n 2015          301           1.894         10.22         5.04          13.2 \r\n 2015          302           3.671         9.51          1.43          0.8 \r\n 2015          303           5.481         7.58          1.03          0 \r\n 2015          304           10.728        12.44        -0.86          3 \r\n 2015          305           13.102        22.77         5.97          0 \r\n 2015          306           13.014        25.43         11.44         0 \r\n 2015          307           9.272         21.27         6.98          0 \r\n 2015          308           5.93          18.01         11.82         0 \r\n 2015          309           6.178         22.09         5.52          0 \r\n 2015          310           11.711        12.01         2.42          0 \r\n 2015          311           12.895        11.51        -0.41          0 \r\n 2015          312           12.717        14.19         1.07          0 \r\n 2015          313           12.507        14.89         0.02          0 \r\n 2015          314           7.947         15.73        -0.27          0 \r\n 2015          315           3.882         15.54         2.84          14.5 \r\n 2015          316           12.091        9.48          2.63          2.3 \r\n 2015          317           12.27         9.88         -0.86          0 \r\n 2015          318           10.782        16.07         0.94          0 \r\n 2015          319           7.906         14.53         5.58          0 \r\n 2015          320           1.089         12.42         8.33          6.1 \r\n 2015          321           1.359         14.32         10.23         5.6 \r\n 2015          322           2.243         14.28         4.08          6.3 \r\n 2015          323           11.609        6.01         -1.17          0 \r\n 2015          324           2.562         1.5          -1.98          0 \r\n 2015          325           11.675       -2.16         -11.5          0 \r\n 2015          326           10.105        0.39         -11.92         0 \r\n 2015          327           11.218        5.73         -3.61          0 \r\n 2015          328           10.268        5.02         -3.27          0 \r\n 2015          329           4.608         12.92         3.78          0.3 \r\n 2015          330           1             5.99         -1.11          17.3 \r\n 2015          331           2.771        -1.27         -4.04          0 \r\n 2015          332           5.449        -0.99         -6.13          0 \r\n 2015          333           3.564         1.08         -1.58          1.8 \r\n 2015          334           1.555         1.97         -0.64          2.8 \r\n 2015          335           2.477         0.71         -1.97          0 \r\n 2015          336           2.703         1.31         -1.54          0.5 \r\n 2015          337           9.829         5.94         -4.81          0 \r\n 2015          338           9.834         9.45         -2.43          0 \r\n 2015          339           7.305         9.45         -0.06          0 \r\n 2015          340           2.8           5.27          0.5           0 \r\n 2015          341           7.562         9.79         -0.74          0 \r\n 2015          342           3.118         9.65          1.08          0 \r\n 2015          343           8.008         10.7         -0.21          0 \r\n 2015          344           7.475         12.53         3.16          0 \r\n 2015          345           5.129         9.82          0.51          0 \r\n 2015          346           2.664         7.56          0.79          4.8 \r\n 2015          347           1             10.04         5.24          55.9 \r\n 2015          348           2.439         6.14          0.21          37.3 \r\n 2015          349           1.747         3.87          0.57          0 \r\n 2015          350           2.268         5.42         -2.53          0.5 \r\n 2015          351           7.895         1.19         -4.82          0 \r\n 2015          352           9.068        -0.64         -8.81          0 \r\n 2015          353           8.941         1.53         -10.59         0 \r\n 2015          354           4.111         9.1          -1.57          0 \r\n 2015          355           1.425         4.78         -1.93          0 \r\n 2015          356           3.077         2.02         -2.56          0 \r\n 2015          357           1             5.51          0.02          16 \r\n 2015          358           2.557         0.09         -3.41          0 \r\n 2015          359           5.15         -1.19         -6.82          0 \r\n 2015          360           2.607         0.42         -1.33          3 \r\n 2015          361           5.62         -0.99         -10.07         0 \r\n 2015          362           3.008        -4.32         -9.92          0 \r\n 2015          363           5.965        -4.26         -6.43          0 \r\n 2015          364           6.463        -3.35         -6.37          0 \r\n 2015          365           9.297        -5.62         -13.36         0 \r\n 2016          1             8.73         -0.48         -7.92          0 \r\n 2016          2             9.645        -0.56         -12.21         0 \r\n 2016          3             4.684        -3.91         -9.53          0 \r\n 2016          4             4.776        -4.62         -9.34          0 \r\n 2016          5             8.914         0.33         -10.59         0 \r\n 2016          6             3.744         0.49         -3.69          1.3 \r\n 2016          7             2.517         0.7          -0.42          9.1 \r\n 2016          8             2.538         0.66         -5.9           3 \r\n 2016          9             8.566        -5.73         -20.75         0 \r\n 2016          10            10.117       -13.46        -22.27         0 \r\n 2016          11            8.223        -2.94         -13.94         0 \r\n 2016          12            10.157       -11.28        -18.85         0 \r\n 2016          13            9.424         1.67         -13.43         0 \r\n 2016          14            8.385         7.73         -2.21          0 \r\n 2016          15            6.322        -0.99         -13.06         0 \r\n 2016          16            5.596        -11.67        -18.28         0 \r\n 2016          17            10.571       -18.04        -23.53         0 \r\n 2016          18            6.739        -13.13        -21.83         0 \r\n 2016          19            4.864        -10.83        -15.97         0 \r\n 2016          20            5.933        -5.76         -13.64         0 \r\n 2016          21            6.808        -4.31         -12.48         0 \r\n 2016          22            6.274        -5.41         -7.82          0 \r\n 2016          23            6.529        -4.09         -9.14          0 \r\n 2016          24            4.682        -1.47         -4.47          0 \r\n 2016          25            2.312        -1.73         -6.36          0 \r\n 2016          26            4.978        -2.01         -4.5           0 \r\n 2016          27            8.288         2.56         -9.11          2 \r\n 2016          28            6.428         2.42         -7.54          0 \r\n 2016          29            10.752        5.22         -7.58          7.4 \r\n 2016          30            7.361         7.19         -1.69          0 \r\n 2016          31            8.017         4.82         -0.82          0 \r\n 2016          32            10.56         6.98         -2.31          0 \r\n 2016          33            2.948         0.83         -0.96          3.8 \r\n 2016          34            9.803        -0.79         -12.02         0 \r\n 2016          35            10.426       -1.06         -12.68         0 \r\n 2016          36            7.799        -1.9          -13.29         0 \r\n 2016          37            9.469         2.6          -2.48          0.8 \r\n 2016          38            10.147        4.24         -3.87          0.3 \r\n 2016          39            8.589        -3.76         -10.86         0 \r\n 2016          40            13.556       -9.18         -14.04         0 \r\n 2016          41            7.588        -9.21         -12.62         0 \r\n 2016          42            10.808       -7.58         -19.83         0 \r\n 2016          43            13.944       -8.22         -16.99         0 \r\n 2016          44            9.094        -10.32        -18.34         0 \r\n 2016          45            9.077        -5.69         -10.83         0 \r\n 2016          46            9.345         2.42         -8.29          1.1 \r\n 2016          47            4.854         1.31         -1.63          1.6 \r\n 2016          48            7.508         0.93         -2.27          0 \r\n 2016          49            9.098         6.24         -1.29          0 \r\n 2016          50            14.59         12.52         3.43          0 \r\n 2016          51            13.869        9.04         -0.11          0 \r\n 2016          52            6.239         5.19         -1.13          0 \r\n 2016          53            7.38          5.16         -2.34          0 \r\n 2016          54            4.887         5.97         -0.86          0 \r\n 2016          55            5.116         2.39         -1.23          0 \r\n 2016          56            5.376        -0.18         -2.34          0 \r\n 2016          57            15.112        8.26         -2             0 \r\n 2016          58            15.798        18.89        -2.61          0 \r\n 2016          59            8.078         11.54        -1.53          0 \r\n 2016          60            3.938         7.27         -2.96          0.5 \r\n 2016          61            12.577       -2.76         -10.36         0 \r\n 2016          62            9.858         0.52         -10.96         0 \r\n 2016          63            4.083         0.12         -2.72          0 \r\n 2016          64            8.563         6.74         -1.77          0 \r\n 2016          65            11.898        5.11         -1.63          0 \r\n 2016          66            13.206        19.19        -0.99          0 \r\n 2016          67            11.102        21.58         6.43          0 \r\n 2016          68            12.27         22.77         7.14          0 \r\n 2016          69            12.107        12.44         0.76          0 \r\n 2016          70            17.531        14.23        -1.84          0.3 \r\n 2016          71            17.611        20.13        -0.48          0 \r\n 2016          72            6.928         13.59         1.74          5.1 \r\n 2016          73            4.449         12.84         8.39          0.8 \r\n 2016          74            11.646        21.38         9.31          0.3 \r\n 2016          75            6.631         18.11         6.91          10.9 \r\n 2016          76            18.589        14.5          2.62          0 \r\n 2016          77            17.802        13.25        -1.6           0 \r\n 2016          78            13.671        6.64         -4.03          0 \r\n 2016          79            7.658         2.69         -1.23          0.5 \r\n 2016          80            17.213        7.38         -2.58          0 \r\n 2016          81            19.469        15.71        -4.27          0 \r\n 2016          82            8.699         17.27         4.58          0 \r\n 2016          83            1.415         10.22         0.06          12.4 \r\n 2016          84            8.129         3.33         -2.74          0 \r\n 2016          85            19.511        11.89        -5.18          0 \r\n 2016          86            5.402         9.88          2.28          3.6 \r\n 2016          87            6.372         8.33         -0.79          0 \r\n 2016          88            21.466        16.76        -3.22          0 \r\n 2016          89            17.431        18.58         1.72          0 \r\n 2016          90            8.366         21.79         8.59          29.2 \r\n 2016          91            9.79          12.08         2.68          8.6 \r\n 2016          92            12.802        7.64         -0.62          10.7 \r\n 2016          93            22.435        7.34         -0.48          0 \r\n 2016          94            20.862        27.33         0.87          0 \r\n 2016          95            23.272        10.01        -0.52          0 \r\n 2016          96            8.872         11.41        -1.13          2.8 \r\n 2016          97            9.148         12.98         2.58          0.3 \r\n 2016          98            11.738        9.51          2.28          2.3 \r\n 2016          99            23.078        7.25         -3.66          0 \r\n 2016          100           23.763        8.93         -7.58          0 \r\n 2016          101           11.781        18.58         4.28          0 \r\n 2016          102           24.604        9.48         -2.31          0 \r\n 2016          103           24.105        14.91        -5.55          0 \r\n 2016          104           23.234        21.99         5.09          0 \r\n 2016          105           23.093        22.26         6.77          0 \r\n 2016          106           20.767        24.68         6.41          0 \r\n 2016          107           22.293        26.14         10.28         0 \r\n 2016          108           16.279        25.46         10.42         0 \r\n 2016          109           11.39         24.52         12.23         3.6 \r\n 2016          110           13.561        17.4          7.24          0 \r\n 2016          111           6.049         17.18         9.03          15.5 \r\n 2016          112           12.799        19.17         7.35          7.6 \r\n 2016          113           9.973         14.87         7.83          0 \r\n 2016          114           22.677        22.32         3.77          0.3 \r\n 2016          115           15.982        26.83         11.67         3.8 \r\n 2016          116           24.316        22.8          10.46         0 \r\n 2016          117           14.456        20.31         7.89          0 \r\n 2016          118           3.451         10.12         5.59          26.2 \r\n 2016          119           7.828         13.15         6.98          1 \r\n 2016          120           5.913         9.34          5.93          0 \r\n 2016          121           3.737         9.88          5.89          37.1 \r\n 2016          122           3.933         10.2          6             3.6 \r\n 2016          123           14.469        17.06         6.92          0 \r\n 2016          124           22.225        20            5.16          0 \r\n 2016          125           27.2          19.39         7.35          0 \r\n 2016          126           25.168        22.26         3.13          0 \r\n 2016          127           26.472        30.44         8.67          0 \r\n 2016          128           13.03         21.56         12.24         0 \r\n 2016          129           19.699        21.88         10.92         2.5 \r\n 2016          130           3.793         16.73         12.61         11.9 \r\n 2016          131           15.958        23.03         12.78         0 \r\n 2016          132           7.495         20.1          10.66         0.8 \r\n 2016          133           19.76         17            7.72          0 \r\n 2016          134           10.927        19.8          4.88          3.6 \r\n 2016          135           26.381        13.72         2.04          0 \r\n 2016          136           23.899        19.53         2.38          0 \r\n 2016          137           16.107        17.23         6.37          0 \r\n 2016          138           19.514        19.46         5.22          0 \r\n 2016          139           19.668        20.57         3.27          0 \r\n 2016          140           25.242        21.82         7.59          0 \r\n 2016          141           21.947        21.86         10.77         0 \r\n 2016          142           25.5          24.65         6.75          0 \r\n 2016          143           27.867        27.78         8             0 \r\n 2016          144           15.497        26.72         15.08         0 \r\n 2016          145           18.599        26.83         14.71         6.6 \r\n 2016          146           18.842        25.29         17.34         7.1 \r\n 2016          147           21.644        27.83         14.09         12.4 \r\n 2016          148           13.336        23.87         15.76         31.5 \r\n 2016          149           13.52         22.17         16.26         8.6 \r\n 2016          150           26.89         27.67         13.89         0 \r\n 2016          151           19.962        30.44         16.06         3.6 \r\n 2016          152           16.355        25.59         16.43         9.9 \r\n 2016          153           27.968        24.31         13.19         0.3 \r\n 2016          154           28.287        26.72         11.37         0 \r\n 2016          155           25.551        29.22         16.13         0.5 \r\n 2016          156           22.9          26.03         13.69         0.3 \r\n 2016          157           27.181        29.44         13.39         0 \r\n 2016          158           29.659        27.44         13.56         0 \r\n 2016          159           29.933        24.56         11.91         0 \r\n 2016          160           26.268        28.61         12.28         0 \r\n 2016          161           26.473        34            20.21         0 \r\n 2016          162           27.962        34.44         22.3          0 \r\n 2016          163           23.33         33.61         20.34         0.8 \r\n 2016          164           28.031        33.39         21.86         0 \r\n 2016          165           24.346        33.17         20.14         6.9 \r\n 2016          166           24.068        32.17         19.16         13.2 \r\n 2016          167           29.179        32.06         18.28         0.3 \r\n 2016          168           29.058        29.83         16.81         0 \r\n 2016          169           27.703        29.67         17.84         0 \r\n 2016          170           25.161        30.28         18.49         0 \r\n 2016          171           28.385        31.72         17.38         0 \r\n 2016          172           26.396        30.33         21.51         0 \r\n 2016          173           27.005        29.94         17.81         0 \r\n 2016          174           23.313        32.39         19.29         1.5 \r\n 2016          175           29.369        26.78         15.79         0 \r\n 2016          176           26.14         29.17         12.62         0 \r\n 2016          177           17.673        32.61         22.84         4.3 \r\n 2016          178           26.046        30.33         19.5          24.4 \r\n 2016          179           27.708        30.33         17.04         0 \r\n 2016          180           26.333        26.41         14.33         0 \r\n 2016          181           15.68         24.82         14.71         2 \r\n 2016          182           22.427        27.56         16.6          3.6 \r\n 2016          183           29.042        24.21         11.5          0 \r\n 2016          184           9.125         18.89         13.12         0.8 \r\n 2016          185           22.36         22.66         12.14         0 \r\n 2016          186           11.72         23.67         12.92         0.3 \r\n 2016          187           21.137        31.11         18.99         0 \r\n 2016          188           23.363        31.78         19.32         9.7 \r\n 2016          189           23.557        28.56         18.66         13.2 \r\n 2016          190           27.993        28.17         16.43         0 \r\n 2016          191           27.048        27.83         14.16         0 \r\n 2016          192           19.121        27.22         18.08         11.4 \r\n 2016          193           26.404        31.72         19.02         16.8 \r\n 2016          194           25.388        29.06         18.35         6.9 \r\n 2016          195           19.083        28.94         17.68         4.6 \r\n 2016          196           27.216        27.61         16.09         0 \r\n 2016          197           20.836        23.98         12.38         0 \r\n 2016          198           26.031        26.64         12.52         0 \r\n 2016          199           16.589        30.06         17.07         25.7 \r\n 2016          200           23.204        28.39         19.19         30.7 \r\n 2016          201           3.401         23.41         19.73         29 \r\n 2016          202           25.936        32.83         20.04         0.3 \r\n 2016          203           25.829        33.44         23.88         0 \r\n 2016          204           24.71         32.33         22.74         0 \r\n 2016          205           14.794        31.83         24.29         1 \r\n 2016          206           21.439        29.61         18.62         0 \r\n 2016          207           27.518        29.44         16.19         0 \r\n 2016          208           27.102        28.94         15.52         0 \r\n 2016          209           16.999        28.67         16.09         0 \r\n 2016          210           20.28         25.09         17.18         0.3 \r\n 2016          211           7.239         21.15         16.06         0 \r\n 2016          212           21.472        27.06         15.58         0 \r\n 2016          213           21.123        27.89         15.99         0 \r\n 2016          214           9.845         24.89         19.67         1.8 \r\n 2016          215           12.177        28.72         18.08         11.7 \r\n 2016          216           25.23         29.72         16.5          0.3 \r\n 2016          217           16.805        31.83         19.9          20.6 \r\n 2016          218           25.232        25.9          15.01         0 \r\n 2016          219           22.395        26.21         15.21         0 \r\n 2016          220           15.882        25.09         15.45         0 \r\n 2016          221           14.941        25.46         14.84         0 \r\n 2016          222           23.04         29.67         17.61         0 \r\n 2016          223           17.008        31.56         18.72         6.9 \r\n 2016          224           18.438        31.5          20.03         93.7 \r\n 2016          225           14.892        26.83         18.66         5.1 \r\n 2016          226           25.004        28.28         16.26         0.3 \r\n 2016          227           24.11         28.44         16.57         0 \r\n 2016          228           16.691        27.44         14.77         0 \r\n 2016          229           19.604        29            16.47         0.3 \r\n 2016          230           21.984        30.44         17.81         0.3 \r\n 2016          231           22.792        32            18.09         0 \r\n 2016          232           13.941        30            18.42         11.2 \r\n 2016          233           16.798        22.6          13.02         1.3 \r\n 2016          234           24.277        24.28         11.23         0 \r\n 2016          235           23.278        27.11         13.16         0 \r\n 2016          236           16.616        27.44         17.86         0 \r\n 2016          237           12.727        27.67         18.08         2.5 \r\n 2016          238           11.708        24.76         14.74         0 \r\n 2016          239           8.533         21.76         12.68         3.8 \r\n 2016          240           12.076        25.69         15.38         0 \r\n 2016          241           19.344        30.61         15.55         1 \r\n 2016          242           11.711        29.44         19.47         2.3 \r\n 2016          243           11.042        25.8          16.97         0 \r\n 2016          244           22.123        25.93         12.78         0 \r\n 2016          245           21.788        24.83         10.36         0.3 \r\n 2016          246           21.853        23.81         9.18          0 \r\n 2016          247           17.053        24.49         13.02         0 \r\n 2016          248           14.457        26.47         14.84         0 \r\n 2016          249           19.136        31.22         17.91         0 \r\n 2016          250           19.355        32.5          22.57         0 \r\n 2016          251           4.137         24.67         20.31         49.5 \r\n 2016          252           21.265        29.28         18.62         0.3 \r\n 2016          253           7.208         26.94         16.63         5.6 \r\n 2016          254           20.393        22.73         10.66         0 \r\n 2016          255           21.068        25.07         9.58          0 \r\n 2016          256           19.503        28.39         12.31         0 \r\n 2016          257           7.73          20.82         14.27         5.1 \r\n 2016          258           14.848        23.64         13.15         0 \r\n 2016          259           16.783        28.72         15.55         25.1 \r\n 2016          260           11.552        22.59         14.94         17.3 \r\n 2016          261           20.121        21.42         12.28         0.3 \r\n 2016          262           18.849        29.28         11.23         0.3 \r\n 2016          263           15.873        30.67         12.62         0 \r\n 2016          264           18.936        30.94         10.29         0 \r\n 2016          265           15.583        33.78         21.73         0 \r\n 2016          266           11.911        29.28         18.12         12.7 \r\n 2016          267           13.821        31            19.33         5.6 \r\n 2016          268           15.585        31.39         18.76         21.8 \r\n 2016          269           11.698        20.21         9.98          3 \r\n 2016          270           19.193        22.54         7.38          0 \r\n 2016          271           18.82         23.52         6.04          0 \r\n 2016          272           5.515         15.62         8.81          0 \r\n 2016          273           18.241        22.97         7.82          0 \r\n 2016          274           7.469         18.39         7.52          0 \r\n 2016          275           5.57          20.24         13.76         0.3 \r\n 2016          276           16.07         23.68         8.63          0 \r\n 2016          277           12.624        22.17         7.69          0.3 \r\n 2016          278           11.637        25.1          14.17         1.5 \r\n 2016          279           11.755        21.93         11.74         0.3 \r\n 2016          280           5.433         21.63         7.14          7.4 \r\n 2016          281           16.93         16.37         3.57          0 \r\n 2016          282           16.581        22.23         2.19          0 \r\n 2016          283           15.591        21.06         2.72          0 \r\n 2016          284           8.027         21.09         9.18          2.5 \r\n 2016          285           14.236        24.19         12.41         0 \r\n 2016          286           6.233         12.55         0.93          1.8 \r\n 2016          287           16.407        13.33        -2.68          0 \r\n 2016          288           6.796         18.83         3.06          0 \r\n 2016          289           3.522         20.35         13.9          0 \r\n 2016          290           8.283         24.77         13.9          0.3 \r\n 2016          291           9.427         29.83         16.19         0 \r\n 2016          292           13.549        21.69         8.43          0 \r\n 2016          293           12.582        21.87         7.04          0 \r\n 2016          294           11.893        12.58         0.43          0 \r\n 2016          295           11.733        14.47        -2.92          0 \r\n 2016          296           14.02         22.81         3.54          0 \r\n 2016          297           13.935        22.14         4.38          0 \r\n 2016          298           12.362        15.72         0.73          0 \r\n 2016          299           5.675         14.82         8.98          0 \r\n 2016          300           3.849         12.36         7.59          3.3 \r\n 2016          301           11.885        16.06         7.19          0 \r\n 2016          302           9.156         26.35         7.48          0 \r\n 2016          303           9.91          22.54         10.52         0 \r\n 2016          304           9.34          13.23         5.56          0 \r\n 2016          305           3.449         16.74         6.78          0 \r\n 2016          306           10.67         23.69         8.91          0 \r\n 2016          307           5.466         19.06         6.04          0.8 \r\n 2016          308           12.254        22.14         3.64          0.3 \r\n 2016          309           11.881        23.35         2.26          0 \r\n 2016          310           9.639         23.01         5.77          0 \r\n 2016          311           11.95         19.21         4.38          0 \r\n 2016          312           6.902         16.74         1.37          0 \r\n 2016          313           11.837        15.99         1.72          0 \r\n 2016          314           11.683        15.14        -1.83          0 \r\n 2016          315           11.455        21.33         2.16          0 \r\n 2016          316           10.75         12.39        -2.92          0 \r\n 2016          317           11.413        12.56        -3.65          0 \r\n 2016          318           11.283        17.34         0.33          0 \r\n 2016          319           10.301        15.59         0.87          0 \r\n 2016          320           9.96          20.59        -1.59          0 \r\n 2016          321           9.578         18.93        -0.72          0 \r\n 2016          322           5.935         22.55         8.57          0 \r\n 2016          323           2.419         14.05        -1.29          0 \r\n 2016          324           10.837        3.87         -7.74          0 \r\n 2016          325           10.29         4.14         -10.32         0 \r\n 2016          326           8.51          7.26         -7.01          0 \r\n 2016          327           1.021         3.92          2.16          17 \r\n 2016          328           1.991         4.3           1.8           7.6 \r\n 2016          329           1.317         3.12          0.88          0 \r\n 2016          330           4.29          6.96          0.93          0 \r\n 2016          331           8.732         12.69         1.42          0 \r\n 2016          332           1.91          11.49        -0.71          12.7 \r\n 2016          333           6.877         14.78         3.98          0 \r\n 2016          334           7.397         6.48          0.33          0 \r\n 2016          335           2.561         1.97          0.13          0 \r\n 2016          336           2.511         2.15         -0.04          0 \r\n 2016          337           2.639         2.83         -0.02          0 \r\n 2016          338           4.271         3.94         -0.07          1 \r\n 2016          339           3.733         0.83         -0.58          6.9 \r\n 2016          340           6.224         8.24          0.36          0.5 \r\n 2016          341           9.599        -0.79         -7.21          0 \r\n 2016          342           5.319        -5.08         -10.18         0 \r\n 2016          343           8.833        -4.51         -12.48         0 \r\n 2016          344           6.842        -5.01         -15.12         0 \r\n 2016          345           2.724        -4.71         -7.44          0 \r\n 2016          346           1.892        -0.3          -13.1          0.3 \r\n 2016          347           9.129        -2.1          -15.49         0 \r\n 2016          348           8.375        -7.24         -16.54         0 \r\n 2016          349           8.704        -7.61         -16.07         0 \r\n 2016          350           5.421        -10.04        -19.15         0 \r\n 2016          351           1            -7.13         -10.77         0 \r\n 2016          352           2.842        -8.41         -22.89         0 \r\n 2016          353           9.067        -16.04        -26.88         0 \r\n 2016          354           9.272        -3.65         -18.3          0 \r\n 2016          355           7.366         5.41         -6.29          0 \r\n 2016          356           6.857         8.21         -5.41          0 \r\n 2016          357           8.163         6.86         -7.3           0 \r\n 2016          358           2.051         2.09         -0.51          3.8 \r\n 2016          359           3.618         0.81         -7.78          0 \r\n 2016          360           1             8.1           0.55          18.3 \r\n 2016          361           8.845        -0.71         -3.62          0 \r\n 2016          362           8.923         5.09         -6.16          0 \r\n 2016          363           4.72          6.49         -1.35          0 \r\n 2016          364           8.88          3.14         -2.23          0 \r\n 2016          365           7.616         6.66         -7.61          0 \r\n 2016          366           6.046         0            -7.09          0 \r\n 2017          1             5.997        -6.59         -13.57         0 \r\n 2017          2             5.997        -6.59         -13.57         0 \r\n 2017          3             5.997        -6.59         -13.57         0 \r\n 2017          4             7.657        -12.19        -16.56         0 \r\n 2017          5             7.323        -13.15        -16.6          0 \r\n 2017          6             7.814        -10.86        -20.65         0 \r\n 2017          7             9.467        -7.08         -15.52         0 \r\n 2017          8             3.672        -5.67         -18.17         0 \r\n 2017          9             1.898        -2.2          -11.41         0 \r\n 2017          10            1.794        -1.3          -5.92          0 \r\n 2017          11            1.549        -5            -9.36          0 \r\n 2017          12            5.645        -6.79         -10.85         0 \r\n 2017          13            2.598        -7.39         -13.87         0 \r\n 2017          14            8.65          0.46         -7.61          0 \r\n 2017          15            3.81         -0.09         -7.39          0 \r\n 2017          16            1.148         0.09         -1.69          0 \r\n 2017          17            2.542         0.63          0.17          3 \r\n 2017          18            8.67          7.93         -1.22          0 \r\n 2017          19            3.179         2.78         -0.82          0.5 \r\n 2017          20            1.818         3.69          0.66          1 \r\n 2017          21            3.693         6.98          1.54          6.1 \r\n 2017          22            2.03          2.39         -0.67          0 \r\n 2017          23            1.32          0.59         -0.87          0 \r\n 2017          24            1             0.01         -0.63          0 \r\n 2017          25            4.116        -0.11         -3.22          0.5 \r\n 2017          26            6.135        -2.66         -6.94          0 \r\n 2017          27            11.125       -2.04         -9.86          0 \r\n 2017          28            6.184        -0.71         -5.54          0 \r\n 2017          29            8.249         0.44         -4.32          0.5 \r\n 2017          30            9.607         6.18         -4.42          0.3 \r\n 2017          31            6.202         3.94          0.99          0 \r\n 2017          32            6.173         0.75         -6.29          0 \r\n 2017          33            10.017       -5.49         -10.42         0 \r\n 2017          34            13.024       -2.84         -10.48         0 \r\n 2017          35            10.361        5.78         -8.53          0 \r\n 2017          36            10.108        0.11         -4.82          0 \r\n 2017          37            9.511         11.48        -4.69          0 \r\n 2017          38            2.417         4.53         -6.62          0 \r\n 2017          39            10.943       -6.87         -10.98         0 \r\n 2017          40            10.946       -6.56         -13.63         0 \r\n 2017          41            11.324        10.82        -7.87          0 \r\n 2017          42            5.548         8.61          0.91          0 \r\n 2017          43            14.305        6.86         -1.63          0 \r\n 2017          44            11.901        7.77         -4.29          0 \r\n 2017          45            12.46         8.06         -1.34          0 \r\n 2017          46            14.469        4.75         -4.25          0 \r\n 2017          47            12.527        13.76        -1.8           0 \r\n 2017          48            14.42         20.43         2.59          0 \r\n 2017          49            14.977        16.38        -0.85          0 \r\n 2017          50            12.597        20.56         1.12          0 \r\n 2017          51            1.481         14.24         8.89          17.3 \r\n 2017          52            15.231        17.5         -0.51          0.3 \r\n 2017          53            15.296        19.95         7.39          0 \r\n 2017          54            3.184         6.43          2.43          3 \r\n 2017          55            4.61          1.51         -6.24          5.6 \r\n 2017          56            16.27        -1.68         -9.88          0 \r\n 2017          57            16.877        3.74         -2.83          1.5 \r\n 2017          58            13.384        10.55        -4.51          0.5 \r\n 2017          59            9.358         14.45         2.99          0.3 \r\n 2017          60            8.824         2.96         -1.9           0.5 \r\n 2017          61            9.689        -0.13         -4.88          0 \r\n 2017          62            13.505        3.09         -8.13          0 \r\n 2017          63            17.158        15.34        -3.23          0 \r\n 2017          64            6.408         14.44         5.71          0 \r\n 2017          65            10.421        23.12         7.4           6.1 \r\n 2017          66            15.17         10.34         1.46          0 \r\n 2017          67            15.454        10.19        -0.93          0 \r\n 2017          68            14.95         6.81         -3.76          0 \r\n 2017          69            11.035       -3.62         -10.12         0 \r\n 2017          70            9.339        -3.23         -8.03          0 \r\n 2017          71            6.613        -0.92         -9.34          0 \r\n 2017          72            11.675       -2.54         -10.68         0 \r\n 2017          73            19.495       -3.87         -15.37         0 \r\n 2017          74            19.716        0.72         -15.36         0 \r\n 2017          75            12.209        7.36         -4.09          0 \r\n 2017          76            19.387        15.66        -0.02          0 \r\n 2017          77            18.257        9.43         -0.82          0 \r\n 2017          78            16.192        19.57        -1.09          0 \r\n 2017          79            18.951        17.75         3.43          0 \r\n 2017          80            14.115        8.34         -0.88          0 \r\n 2017          81            11.44         5.98         -4.14          0 \r\n 2017          82            8.891         10.86         3.35          0 \r\n 2017          83            2.798         11.98         5.09          7.9 \r\n 2017          84            2.813         4.81          2.84          18 \r\n 2017          85            4.573         7.08          3.49          0 \r\n 2017          86            6.581         9.79          4.34          0 \r\n 2017          87            4.846         10.27         6.28          0 \r\n 2017          88            1.568         7.07          4.32          38.6 \r\n 2017          89            3.163         5.52          3.7           0.3 \r\n 2017          90            6.299         6.27          3.38          0 \r\n 2017          91            9.578         10.67         0.54          0 \r\n 2017          92            3.603         9.76          6.68          1.8 \r\n 2017          93            2.52          9.7           8.09          12.7 \r\n 2017          94            11.598        13.56         7.59          0 \r\n 2017          95            8.53          10.97         5.4           2.3 \r\n 2017          96            22.647        11.83         1.99          0 \r\n 2017          97            23.135        15.37        -1.81          0 \r\n 2017          98            17.699        23.35         6.47          0 \r\n 2017          99            13.642        25.32         12.94         0 \r\n 2017          100           10.909        14.79         4.02          0 \r\n 2017          101           22.168        15.36         3.09          0 \r\n 2017          102           12.447        19.76         3.77          0 \r\n 2017          103           16.547        22.67         10.56         0 \r\n 2017          104           6.067         20.32         10.8          11.2 \r\n 2017          105           9.441         21.11         16.17         13.2 \r\n 2017          106           23.86         20.23         9.47          0 \r\n 2017          107           22.611        22.01         7.39          0 \r\n 2017          108           7.479         19.4          12.25         2 \r\n 2017          109           11.859        22.88         7.99          6.1 \r\n 2017          110           7.627         13.02         5.78          0.3 \r\n 2017          111           19.045        14.74         3.24          0 \r\n 2017          112           25.232        18.58         4.12          0 \r\n 2017          113           24.538        21.97         5.78          0 \r\n 2017          114           21.21         22.98         7.68          0 \r\n 2017          115           10.918        21.29         9.23          0 \r\n 2017          116           8.185         8.53          3.45          0 \r\n 2017          117           14.437        9.36          0.73          0 \r\n 2017          118           5             6.07          0.91          10.9 \r\n 2017          119           5.004         6.17          3.83          4.3 \r\n 2017          120           2.388         5.88          3.19          34.5 \r\n 2017          121           8.143         6.32          4.29          8.6 \r\n 2017          122           26.981        16.62         1.33          0 \r\n 2017          123           20.519        15.06         4.21          0 \r\n 2017          124           24.162        20.11         3.85          0 \r\n 2017          125           26.276        24.58         5.66          0 \r\n 2017          126           26.87         21.9          9.02          0 \r\n 2017          127           26.068        25            7.35          0 \r\n 2017          128           18.319        27.56         11.94         0 \r\n 2017          129           24.315        26.15         14.29         0 \r\n 2017          130           7.187         19.93         13.42         31.2 \r\n 2017          131           23.771        20.28         10.34         0 \r\n 2017          132           27.124        23.23         7.18          0 \r\n 2017          133           26.459        26.32         11.19         0 \r\n 2017          134           24.513        28.33         14.18         0 \r\n 2017          135           20.002        31.06         16.84         0 \r\n 2017          136           20.012        29.72         16.82         13 \r\n 2017          137           13.535        24.53         15.55         9.9 \r\n 2017          138           11.665        16.7          11.38         0.3 \r\n 2017          139           3.935         10.53         7.74          20.3 \r\n 2017          140           6.947         16.44         7.15          7.1 \r\n 2017          141           11.926        12.34         6.37          0.8 \r\n 2017          142           20.555        21.21         7.03          3 \r\n 2017          143           13.067        13.92         9.13          2.8 \r\n 2017          144           12.176        16.24         10.02         3.8 \r\n 2017          145           25.875        21.73         6.88          0 \r\n 2017          146           22.599        26.28         13.87         0 \r\n 2017          147           11.127        21.03         12.13         9.7 \r\n 2017          148           26.631        25.41         11.84         0 \r\n 2017          149           25.994        22.05         10.38         0 \r\n 2017          150           26.561        23.11         9.59          0 \r\n 2017          151           28.887        23.71         8.3           0 \r\n 2017          152           28.631        26.62         9.81          0 \r\n 2017          153           26.105        29.67         16.3          0 \r\n 2017          154           27.851        31.39         17.82         0 \r\n 2017          155           27.456        32.78         19.54         0 \r\n 2017          156           27.353        29.83         15.45         0 \r\n 2017          157           27.054        27.17         13.27         0 \r\n 2017          158           26.019        27.33         12.57         0 \r\n 2017          159           22.873        29.33         15.07         0 \r\n 2017          160           24.992        30.61         15.38         0 \r\n 2017          161           25.495        32.11         20.61         0 \r\n 2017          162           25.373        33            23.17         0 \r\n 2017          163           18.18         30.44         23.07         0 \r\n 2017          164           25.118        32.28         23.05         0 \r\n 2017          165           17.914        29.06         17.88         29 \r\n 2017          166           24.811        31.94         17.42         0 \r\n 2017          167           21.066        29.89         18.25         2.3 \r\n 2017          168           11.308        26.6          18.06         0 \r\n 2017          169           24.41         24.24         14.51         0 \r\n 2017          170           21.727        26.52         13.3          1.3 \r\n 2017          171           25.319        31.11         13.59         0 \r\n 2017          172           22.643        31.22         15.97         0.3 \r\n 2017          173           20.122        29.28         21.13         5.3 \r\n 2017          174           23.457        22.54         15.42         0 \r\n 2017          175           25.712        24.09         10.82         0 \r\n 2017          176           27.536        22.18         8.98          0 \r\n 2017          177           21.642        21.81         10.39         1.3 \r\n 2017          178           27.632        24.84         6.97          0 \r\n 2017          179           19.504        27.72         18.77         9.9 \r\n 2017          180           20.717        26.78         17.35         0.5 \r\n 2017          181           21.97         26            16.08         4.1 \r\n 2017          182           27.286        25.76         13.73         0 \r\n 2017          183           16.231        27.72         16.61         1 \r\n 2017          184           24.411        31.06         17.57         0 \r\n 2017          185           22.512        30.67         19.26         0 \r\n 2017          186           26.445        30.94         16.57         0 \r\n 2017          187           26.196        31.61         19.96         0 \r\n 2017          188           24.861        28.39         19.37         0 \r\n 2017          189           25.798        28.67         15.75         0 \r\n 2017          190           25.916        31.94         15.52         0 \r\n 2017          191           23.486        29            19.74         0 \r\n 2017          192           16.375        31.56         18.29         2.5 \r\n 2017          193           12.026        30.22         20.96         2 \r\n 2017          194           23.072        27.72         17.83         0 \r\n 2017          195           26.521        26.94         14.02         0 \r\n 2017          196           24.663        31.78         16.73         0 \r\n 2017          197           23.943        31.28         21.59         0 \r\n 2017          198           22.689        30.61         20.19         0 \r\n 2017          199           16.613        30.06         23.02         0 \r\n 2017          200           24.292        33.44         21.32         0 \r\n 2017          201           23.052        34.56         20.39         50.5 \r\n 2017          202           16.776        29            21.44         1 \r\n 2017          203           18.858        29.28         22.46         0 \r\n 2017          204           25.248        27.61         16.89         0.3 \r\n 2017          205           25.977        25.71         14.26         0 \r\n 2017          206           24.023        31.56         18.27         0 \r\n 2017          207           7.973         26.01         20.22         1.8 \r\n 2017          208           24.02         27.89         17.91         0 \r\n 2017          209           24.088        27.72         16.49         0 \r\n 2017          210           25.326        26.42         13.87         0 \r\n 2017          211           24.794        25.95         12.29         0 \r\n 2017          212           24.803        27.22         13.93         0 \r\n 2017          213           22.755        28.72         14.32         7.6 \r\n 2017          214           24.551        28.72         16.66         4.8 \r\n 2017          215           20.478        23.16         12.16         0.8 \r\n 2017          216           25.652        24.11         9.64          0 \r\n 2017          217           16.056        22.47         10.06         0.3 \r\n 2017          218           16.668        24.23         13.92         0 \r\n 2017          219           23.566        25.17         14.44         0.3 \r\n 2017          220           26.093        26.32         11.02         0 \r\n 2017          221           20.587        26.64         12.99         0 \r\n 2017          222           21.807        27.28         16.1          0 \r\n 2017          223           23.919        24.53         12.56         0 \r\n 2017          224           24.82         25.99         9.84          0 \r\n 2017          225           15.115        24.87         14.88         0 \r\n 2017          226           14.101        27.61         16.14         15.7 \r\n 2017          227           6             21.37         14.85         3.8 \r\n 2017          228           13.591        27            18.54         2.3 \r\n 2017          229           17.371        25.06         17.09         1.3 \r\n 2017          230           21.366        27.33         14.07         0.5 \r\n 2017          231           20.597        27.28         14.73         0.3 \r\n 2017          232           19.683        29            18.82         0.3 \r\n 2017          233           8.763         26.03         17.9          32 \r\n 2017          234           24.507        22.83         13.36         0.3 \r\n 2017          235           23.728        25.12         10.82         0.8 \r\n 2017          236           15.79         24.09         15.51         0 \r\n 2017          237           18.141        24.09         15.98         0 \r\n 2017          238           16.864        25.69         15.44         0 \r\n 2017          239           12.03         25.39         16.26         0.5 \r\n 2017          240           14.63         20.68         13.52         0.5 \r\n 2017          241           19.565        25.07         11.86         0.3 \r\n 2017          242           17.583        26.15         11.81         0.3 \r\n 2017          243           19.01         24.99         13.35         0 \r\n 2017          244           20.596        22.44         11.48         0 \r\n 2017          245           17.482        26.62         15.3          0 \r\n 2017          246           19.945        28.39         11.76         0 \r\n 2017          247           9.726         22.42         13.97         0 \r\n 2017          248           21.164        19.52         9.26          0 \r\n 2017          249           17.82         19.47         5.14          0 \r\n 2017          250           20.953        23.62         6.15          0 \r\n 2017          251           20.621        27.61         8.36          0 \r\n 2017          252           18.598        26.89         12.45         0 \r\n 2017          253           18.195        27.17         15.02         0 \r\n 2017          254           19.308        27            11.99         0 \r\n 2017          255           18.817        28.5          11.31         0 \r\n 2017          256           18.743        30.22         12.98         0 \r\n 2017          257           18.051        31.5          15.49         0 \r\n 2017          258           16.592        32.22         18.54         0 \r\n 2017          259           10.066        24.83         17.68         6.6 \r\n 2017          260           19.086        22.21         11.43         20.1 \r\n 2017          261           5.316         20.92         11.49         9.4 \r\n 2017          262           15.725        27.56         15.85         0.3 \r\n 2017          263           14.733        29.06         19.07         0 \r\n 2017          264           15.247        30.61         16.81         0 \r\n 2017          265           17.998        32.28         21.76         0 \r\n 2017          266           17.936        32.28         20.91         0 \r\n 2017          267           14.537        31.06         18.4          0 \r\n 2017          268           10.119        28.44         17.58         26.9 \r\n 2017          269           7.353         18.63         13.62         1.5 \r\n 2017          270           13.816        19.69         8.64          0 \r\n 2017          271           18.315        25.05         7.87          0 \r\n 2017          272           18.009        22.41         9.95          0 \r\n 2017          273           15.584        21.52         8.07          0 \r\n 2017          274           8.925         22.59         11.42         0 \r\n 2017          275           9.77          28.33         14.31         15.2 \r\n 2017          276           4.689         25.29         15.19         4.3 \r\n 2017          277           15.564        21.38         10.12         1.5 \r\n 2017          278           3.242         16.8          9.17          1.3 \r\n 2017          279           2.635         19.88         15.06         34.3 \r\n 2017          280           5.917         18.68         11.66         36.3 \r\n 2017          281           16.564        27            10.04         0 \r\n 2017          282           15.476        19.02         7.09          0 \r\n 2017          283           3.189         7.7           4.62          16 \r\n 2017          284           11.399        15.33         5.79          0 \r\n 2017          285           9.125         16.63         9.27          0 \r\n 2017          286           2.223         13.54         9.73          4.3 \r\n 2017          287           1.393         16.98         11.47         24.6 \r\n 2017          288           14.202        13.91         4.18          0 \r\n 2017          289           15.685        20.78         1.78          0 \r\n 2017          290           15.036        23.09         8.52          0 \r\n 2017          291           14.145        23.73         9.74          0 \r\n 2017          292           14.747        23.61         5.22          0 \r\n 2017          293           13.08         22.97         12.09         0 \r\n 2017          294           3.341         21.87         10.91         3.3 \r\n 2017          295           11.947        18.83         7.91          0 \r\n 2017          296           9.223         16.66         6.11          0 \r\n 2017          297           17.462        10.59         3.14          0 \r\n 2017          298           14.256        18.32         1.75          0 \r\n 2017          299           12.149        16.66         3.08          0 \r\n 2017          300           6.586         2.59         -0.1           0 \r\n 2017          301           17.698        6.85         -2.17          0 \r\n 2017          302           6.858         9.34         -3.64          1.5 \r\n 2017          303           5.441         7.04          0.28          0.3 \r\n 2017          304           7.843         1.29         -6.12          0 \r\n 2017          305           3.061         8.05         -0.98          0 \r\n 2017          306           8.969         8.92         -0.9           0 \r\n 2017          307           7.497         7.96         -2.24          0.3 \r\n 2017          308           5.982         8.51          4.27          0 \r\n 2017          309           7.754         6.37         -3.38          0 \r\n 2017          310           12.577        3.72         -4.73          0 \r\n 2017          311           11.791        5.61         -5.07          0 \r\n 2017          312           17.29         8.61         -6.71          0 \r\n 2017          313           14.831        4.32         -7             0 \r\n 2017          314           11.798       -0.36         -9.26          0 \r\n 2017          315           3.271         6.33         -0.15          0 \r\n 2017          316           9.996         7.96         -3.32          1.5 \r\n 2017          317           8.717         5.64         -5.18          0.3 \r\n 2017          318           2.582         9.98          4.46          0.3 \r\n 2017          319           12.899        10.54        -4.31          0.5 \r\n 2017          320           16.93         0.58         -8.38          0 \r\n 2017          321           6.532         9.08          0.21          0 \r\n 2017          322           8.933         6.13         -2.67          7.1 \r\n 2017          323           11.385        7.94         -7.66          0 \r\n 2017          324           7.69          14.68         0.89          0 \r\n 2017          325           16.54         5.27         -6.04          0.3 \r\n 2017          326           8.835         2.06         -11            0 \r\n 2017          327           9.222         11.57        -2.94          0 \r\n 2017          328           9.217         19.48         6.96          0 \r\n 2017          329           9.589         12.07        -0.84          0 \r\n 2017          330           6.819         14.66        -3.3           0 \r\n 2017          331           6.709         14.34        -0.77          0 \r\n 2017          332           7.804         13.44        -0.11          0 \r\n 2017          333           8.492         8.35         -6.54          0 \r\n 2017          334           8.713         11.37         0.97          0 \r\n 2017          335           6.309         12.86        -2.21          0 \r\n 2017          336           7.382         13.52        -2.71          0 \r\n 2017          337           7.056         15.29        -0.71          0 \r\n 2017          338           2.953         18.93        -1.18          0 \r\n 2017          339           13.844        0.91         -4.93          0 \r\n 2017          340           5.798         1.55         -6.99          0 \r\n 2017          341           9.065        -3.98         -11.42         0 \r\n 2017          342           7.655         3.46         -9.87          0 \r\n 2017          343           5.984        -1.42         -7.86          0 \r\n 2017          344           7.682         6.94         -7.2           0 \r\n 2017          345           2.476         5.68         -5.88          0 \r\n 2017          346           8.449         0.41         -12.13         0 \r\n 2017          347           1.657         6.91         -2.17          1 \r\n 2017          348           3.846        -0.77         -5.28          0 \r\n 2017          349           5.814         6.89         -3.77          0 \r\n 2017          350           7.772         11.02        -2.47          0 \r\n 2017          351           3.818         2.88         -3.17          0 \r\n 2017          352           7.791         9.11         -6.59          0 \r\n 2017          353           6.686         7.97         -0.85          0 \r\n 2017          354           7.427         4.23         -7.24          0 \r\n 2017          355           1.223         1.48         -4.12          0 \r\n 2017          356           5.628        -2.86         -9.37          0 \r\n 2017          357           6.96         -4.8          -10.92         0 \r\n 2017          358           8.029        -5.69         -11.04         0 \r\n 2017          359           7.412        -10.29        -17.22         0 \r\n 2017          360           7.59         -14.94        -21.32         0 \r\n 2017          361           7.408        -15.17        -25.42         0 \r\n 2017          362           4.362        -8.78         -16.34         0 \r\n 2017          363           2.775        -10.56        -16.51         0 \r\n 2017          364           5.346        -17.07        -22.12         0 \r\n 2017          365           8.416        -21.17        -27.43         0 \r\n 2018          1             8.508        -7.51         -20.13         0 \r\n 2018          2             8.508        -7.51         -20.13         0 \r\n 2018          3             8.508        -7.51         -20.13         0 \r\n 2018          4             4.886        -13.55        -21.57         0 \r\n 2018          5             8.069        -13.54        -21.24         0 \r\n 2018          6             8.45         -10.04        -24.26         0 \r\n 2018          7             6.463         2.78         -11.6          0 \r\n 2018          8             8.384         5.8          -7.56          0 \r\n 2018          9             5.215         5.69         -0.53          0 \r\n 2018          10            1.287         4.99          0.06          0 \r\n 2018          11            3.571         5.1          -15.8          0.8 \r\n 2018          12            8.885        -14.85        -21.31         0 \r\n 2018          13            8.749        -12.01        -19.14         0 \r\n 2018          14            3.439        -5.15         -15.18         0 \r\n 2018          15            7.439        -7.99         -22.02         0 \r\n 2018          16            7.114        -14.71        -22.44         0 \r\n 2018          17            9.251        -4.63         -20.37         0 \r\n 2018          18            8.736         1.23         -8.9           0 \r\n 2018          19            6.756         6.03         -3.48          0 \r\n 2018          20            9.015         8.62         -3.64          0 \r\n 2018          21            1.343         3.99          1.13          1 \r\n 2018          22            1             3.24         -1.76          24.4 \r\n 2018          23            3.645        -1.98         -4.71          0 \r\n 2018          24            3.819        -1.8          -5.17          0 \r\n 2018          25            9.426         6.16         -5.46          0 \r\n 2018          26            6.074         11.47         0.95          0 \r\n 2018          27            9.929         9.21         -2.69          0 \r\n 2018          28            8.454        -1.48         -9.69          0 \r\n 2018          29            10.48        -4.72         -11.15         0 \r\n 2018          30            6.936         3.99         -11.85         0 \r\n 2018          31            3.845         4.48         -0.04          0 \r\n 2018          32            11.032        0.69         -14.61         0 \r\n 2018          33            6.063        -5.56         -17.97         0 \r\n 2018          34            3.136         3.99         -4.83          0.8 \r\n 2018          35            9.126        -6.36         -17.47         0 \r\n 2018          36            3.402        -10.74        -18.49         0 \r\n 2018          37            8.76         -13.41        -24.63         0 \r\n 2018          38            12.084       -10.5         -14.87         0 \r\n 2018          39            6.388        -7.71         -12.61         0 \r\n 2018          40            9.602        -8.38         -15.64         0 \r\n 2018          41            7.757        -12.03        -16.07         0 \r\n 2018          42            12.905       -7.36         -16.36         0 \r\n 2018          43            11.963       -9.99         -21.08         0 \r\n 2018          44            11.233        0.98         -11.7          3.3 \r\n 2018          45            12.169        4.49         -5.89          0.3 \r\n 2018          46            6.99          3.41         -4.33          0 \r\n 2018          47            13.746       -5.19         -14.03         0 \r\n 2018          48            9.618         1.87         -6.86          0.5 \r\n 2018          49            12.259        10.26        -5.51          0 \r\n 2018          50            2.177         4.76         -2.92          3 \r\n 2018          51            4.071        -1.72         -9.51          0 \r\n 2018          52            11.642       -5.49         -12.12         0 \r\n 2018          53            2.982        -0.16         -5.57          0 \r\n 2018          54            8.953        -0.22         -5.25          0 \r\n 2018          55            2.232         0.07         -6.07          0 \r\n 2018          56            14.128        4.13         -6.32          3.6 \r\n 2018          57            17.255        10.53        -3.15          1.3 \r\n 2018          58            14.004        15            1.29          0 \r\n 2018          59            10.417        8.39         -0.48          0 \r\n 2018          60            16.04         5.79         -2.23          0.3 \r\n 2018          61            14.846        8.16         -4.72          0 \r\n 2018          62            15.381        11.48         0.02          0 \r\n 2018          63            10.624        13.14         2.84          0 \r\n 2018          64            2.146         7.63         -1.92          7.6 \r\n 2018          65            10.586       -0.16         -4.04          0.3 \r\n 2018          66            12.707       -1.89         -7.76          0 \r\n 2018          67            17.196       -1.11         -9.75          0 \r\n 2018          68            9.605         2.21         -5.71          0 \r\n 2018          69            10.404        6.15         -3.74          0 \r\n 2018          70            8.288         5.17         -0.41          0 \r\n 2018          71            17.464        5.53         -2.74          0 \r\n 2018          72            17.863        2.81         -4.06          0 \r\n 2018          73            18.277        15.57        -5.93          0 \r\n 2018          74            15.904        10.51        -2.64          0 \r\n 2018          75            3.373         1.32         -1.39          11.4 \r\n 2018          76            12.537        3.66         -0.91          11.9 \r\n 2018          77            5.97          1.96         -0.67          0.3 \r\n 2018          78            15.361        10.56        -0.04          0 \r\n 2018          79            8.534         3.39         -1.07          0.3 \r\n 2018          80            13.731        5.16         -3.51          0 \r\n 2018          81            11.759        9.04         -1.14          0.3 \r\n 2018          82            6.188         7.88         -0.38          5.6 \r\n 2018          83            15.272        1.73         -1.73          11.2 \r\n 2018          84            21.982        3.14         -1.86          0.5 \r\n 2018          85            3.399         2.83         -0.23          6.6 \r\n 2018          86            8.481         6.59          0.35          0 \r\n 2018          87            14.914        12.06        -2.36          0.5 \r\n 2018          88            19.523        5.01         -1.51          0 \r\n 2018          89            15.307        9.98         -1.01          0 \r\n 2018          90            11.706        8.04         -5.02          13 \r\n 2018          91            8.7           0.9          -6.64          0 \r\n 2018          92            7.515         3.14         -7.17          0 \r\n 2018          93            4.245         0.42         -8.28          1.3 \r\n 2018          94            21.422        1.23         -10.74         0 \r\n 2018          95            16.473        10.37        -2.58          0 \r\n 2018          96            12.122        2.53         -8.16          0 \r\n 2018          97            22.755        4.26         -10.04         0 \r\n 2018          98            5.246        -0.06         -5.12          0 \r\n 2018          99            7.518         1.93         -2.67          0.3 \r\n 2018          100           16.76         13.39        -4.33          0 \r\n 2018          101           9.179         15.88         2.22          0 \r\n 2018          102           19.154        17.3          4.39          0 \r\n 2018          103           5.995         12.34         3.02          2 \r\n 2018          104           4.963         3.19         -1.98          18.8 \r\n 2018          105           16.292       -2.65         -5.24          0 \r\n 2018          106           6.418         1.12         -6.03          0 \r\n 2018          107           23.182        9.41         -3.62          0 \r\n 2018          108           6.577         1.99         -1.26          0.3 \r\n 2018          109           24.42         9.65         -1.42          0.3 \r\n 2018          110           17.067        14.09        -2.31          0 \r\n 2018          111           6.402         13.98         4.81          0 \r\n 2018          112           19.368        19.42         3.11          0 \r\n 2018          113           22.909        22.03         3.72          0 \r\n 2018          114           19.344        21.88         5.69          0 \r\n 2018          115           21.911        17.31         5.08          0 \r\n 2018          116           21.006        21.37         2.63          0 \r\n 2018          117           17.667        23.43         2.38          0 \r\n 2018          118           15.374        15.14         1.26          0 \r\n 2018          119           18.144        21.23         1.82          0 \r\n 2018          120           20.219        27.78         10.98         0 \r\n 2018          121           12.757        21.54         13.87         61.2 \r\n 2018          122           9.269         17.67         14.04         7.1 \r\n 2018          123           5.629         19.87         13.47         16.3 \r\n 2018          124           24.485        23.2          11.06         0.5 \r\n 2018          125           18.695        27.5          10.28         0 \r\n 2018          126           30.009        25.66         12.67         0 \r\n 2018          127           24.745        26.17         9.72          0 \r\n 2018          128           17.482        27.33         13.32         0 \r\n 2018          129           21.935        22.21         14.8          2 \r\n 2018          130           22.644        22.79         12            0.3 \r\n 2018          131           8.661         15.51         9.05          1 \r\n 2018          132           8.026         13.91         7.9           0.3 \r\n 2018          133           8.964         16.88         10.74         0.8 \r\n 2018          134           17.63         26.41         14.35         3.8 \r\n 2018          135           22.962        25.92         13.73         0 \r\n 2018          136           23.61         27.39         13.06         0 \r\n 2018          137           23.625        28.17         14.03         0 \r\n 2018          138           19.128        28.5          14.44         0 \r\n 2018          139           9.9           25.83         14.76         8.6 \r\n 2018          140           9.084         15.92         11.59         0.5 \r\n 2018          141           11.919        20.51         13.28         2.8 \r\n 2018          142           21.018        25.31         13.08         0 \r\n 2018          143           24.442        29.94         17.69         0 \r\n 2018          144           26.217        30.61         18.9          0 \r\n 2018          145           25.085        31.61         19.29         0 \r\n 2018          146           26.699        35.67         18.75         0 \r\n 2018          147           28.059        35.89         19.78         0 \r\n 2018          148           29.58         35.94         21.78         0 \r\n 2018          149           31.644        33.78         19.31         1.5 \r\n 2018          150           32.837        27.72         17.57         0 \r\n 2018          151           34.508        32.72         17.92         0 \r\n 2018          152           33.657        33.72         17.82         0 \r\n 2018          153           19.35         24.89         16.08         21.3 \r\n 2018          154           32.942        25.62         13.08         0 \r\n 2018          155           33.115        27.5          10.78         0 \r\n 2018          156           28.144        31.17         15.04         0 \r\n 2018          157           19.978        32.39         17.88         15.7 \r\n 2018          158           20.743        28.56         17.56         0 \r\n 2018          159           26.329        29.17         20.46         0 \r\n 2018          160           27.256        31.06         20.82         0 \r\n 2018          161           18.211        22.72         18.96         11.7 \r\n 2018          162           16.982        25.17         17.59         9.7 \r\n 2018          163           34.487        28.61         18.76         0 \r\n 2018          164           39.173        26.01         14.5          0 \r\n 2018          165           23.137        25.09         14.72         180.8 \r\n 2018          166           26.875        32            19.56         0 \r\n 2018          167           24.468        32            22.44         0 \r\n 2018          168           22.456        31.78         23.16         0 \r\n 2018          169           22.331        32.28         21.54         22.6 \r\n 2018          170           12.242        25.78         20.35         22.4 \r\n 2018          171           21.667        25.8          19.4          19 \r\n 2018          172           34.261        23.14         16.35         8.4 \r\n 2018          173           18.561        21.88         15.06         0 \r\n 2018          174           28.756        25.23         14.7          0 \r\n 2018          175           29.881        25.84         17.36         5.3 \r\n 2018          176           11.977        22.86         17.97         9.4 \r\n 2018          177           21.747        24.79         16.15         20.3 \r\n 2018          178           32.693        27.72         16.98         0 \r\n 2018          179           18.643        26.83         19.26         0.3 \r\n 2018          180           26.36         32.44         20.56         0.3 \r\n 2018          181           19.494        31.61         20.28         59.7 \r\n 2018          182           26.103        25.79         18.05         6.6 \r\n 2018          183           36.728        27.94         16.27         0.3 \r\n 2018          184           34.178        30.94         18.43         0 \r\n 2018          185           21.903        32.39         21.16         15 \r\n 2018          186           22.279        28.28         18.8          20.8 \r\n 2018          187           36.102        26.61         15.87         0.3 \r\n 2018          188           29.955        26.48         15.42         0 \r\n 2018          189           30.295        28.17         16.31         0 \r\n 2018          190           25.68         31.72         17.26         0 \r\n 2018          191           22.031        30.56         21.68         0 \r\n 2018          192           26.377        32.44         20.25         0 \r\n 2018          193           25.288        33.5          22.38         0 \r\n 2018          194           14.907        30.33         21.77         7.6 \r\n 2018          195           17.601        28.22         21.51         0 \r\n 2018          196           22.016        30.06         19.92         0.3 \r\n 2018          197           30.03         27.72         17.91         0 \r\n 2018          198           27.474        28.67         17.29         0 \r\n 2018          199           23.323        28.22         16.12         0 \r\n 2018          200           18.733        27.89         19.18         1 \r\n 2018          201           18.755        25.76         18.88         0 \r\n 2018          202           25.171        26.5          17.13         0 \r\n 2018          203           25.934        27            16.24         0 \r\n 2018          204           25.269        28.06         16.19         0.3 \r\n 2018          205           29.33         27.83         16.44         0 \r\n 2018          206           23.744        27.83         14.41         11.9 \r\n 2018          207           31.526        24.78         14.45         0 \r\n 2018          208           25.379        23.79         11.71         0.3 \r\n 2018          209           18.489        23.73         13.59         0 \r\n 2018          210           27.495        25.68         15.37         0 \r\n 2018          211           31.886        25.54         12.89         2.5 \r\n 2018          212           40.706        27.5          13.76         0 \r\n 2018          213           24.255        28.28         14.88         6.1 \r\n 2018          214           34.698        24.98         13.71         0.3 \r\n 2018          215           33.365        31.78         15.86         0 \r\n 2018          216           10.682        29.39         20.76         0 \r\n 2018          217           13.643        29.72         18.51         3 \r\n 2018          218           17.771        27.33         18.67         23.6 \r\n 2018          219           24.238        27            17.49         17.8 \r\n 2018          220           40.91         29.11         14.17         0.3 \r\n 2018          221           28.355        31.39         18.19         0 \r\n 2018          222           35.699        28.72         16.63         0 \r\n 2018          223           27.11         28.28         16.16         0.3 \r\n 2018          224           27.976        30.28         16.43         0 \r\n 2018          225           29.577        30.72         16.46         0 \r\n 2018          226           12.468        26.01         18.32         11.9 \r\n 2018          227           23.732        27.78         18.53         2.8 \r\n 2018          228           20.369        26.54         18.26         13.2 \r\n 2018          229           38.03         28.17         17.63         0 \r\n 2018          230           30.842        28.28         17.01         0.3 \r\n 2018          231           24.545        26.48         18.08         1.8 \r\n 2018          232           5.461         22.17         17.69         37.1 \r\n 2018          233           19.67         22.29         15.3          0.3 \r\n 2018          234           39.304        24.72         11.73         0 \r\n 2018          235           36.099        23.97         11.69         0 \r\n 2018          236           18.061        26.89         17.72         1 \r\n 2018          237           35.988        30.39         16.77         0 \r\n 2018          238           9.952         27.28         20.11         0.8 \r\n 2018          239           18.289        30.28         21.26         5.6 \r\n 2018          240           15.315        26.83         15.53         10.7 \r\n 2018          241           39.055        22.17         11.87         0 \r\n 2018          242           26.408        24.02         11.59         0 \r\n 2018          243           14.161        28.28         19.28         19.3 \r\n 2018          244           12.55         27.72         19.28         40.4 \r\n 2018          245           7.477         25.86         19.25         15.7 \r\n 2018          246           5.865         24.61         20.08         18.5 \r\n 2018          247           15.893        29.17         20.65         22.1 \r\n 2018          248           6.471         22.98         18.82         9.9 \r\n 2018          249           25.385        23.63         15.87         0 \r\n 2018          250           19.908        18.88         15.02         0 \r\n 2018          251           24.028        22.37         11.81         0 \r\n 2018          252           21.148        22.87         9.91          0 \r\n 2018          253           22.747        24.81         8.34          0 \r\n 2018          254           25.873        26.72         13.15         0 \r\n 2018          255           24.188        27.06         14.65         0 \r\n 2018          256           23.305        28.33         15.13         0 \r\n 2018          257           22.989        30.56         18.82         0 \r\n 2018          258           20.81         32.17         18.4          0 \r\n 2018          259           26.57         30.33         17.29         0 \r\n 2018          260           21.978        32.72         18.78         0 \r\n 2018          261           12.954        26.12         16.81         3.3 \r\n 2018          262           22.122        25.13         17.22         9.9 \r\n 2018          263           24.801        32.5          19.02         14.7 \r\n 2018          264           18.552        19.27         6.78          1.8 \r\n 2018          265           31.41         19.34         5.45          0 \r\n 2018          266           30.008        24.26         8.47          0 \r\n 2018          267           29.291        25.4          10.58         0 \r\n 2018          268           13.447        16.99         7.41          36.1 \r\n 2018          269           15.497        18.57         6.67          0 \r\n 2018          270           19.413        22.82         8.46          0 \r\n 2018          271           6.531         13.04         5.56          0.3 \r\n 2018          272           20.56         9.31          4.1           5.6 \r\n 2018          273           19.338        9.71          7.52          12.4 \r\n 2018          274           21.326        12.33         8.59          9.1 \r\n 2018          275           6.581         14.92         8.97          0.5 \r\n 2018          276           13.896        30.11         11.9          0.5 \r\n 2018          277           7.95          13.49         2.86          0 \r\n 2018          278           14.92         12.94         9.02          8.4 \r\n 2018          279           3.272         11.77         8.02          5.1 \r\n 2018          280           4.199         12.74         7.16          27.2 \r\n 2018          281           5.02          21.09         11.41         17.5 \r\n 2018          282           4.287         20.16         14.28         9.4 \r\n 2018          283           3.297         19.41         3.97          0 \r\n 2018          284           1.169         7.14          0.41          0 \r\n 2018          285           2.835         6.21          1.21          0.3 \r\n 2018          286           12.992        12.44         5.34          0 \r\n 2018          287           5.372         6.94         -0.26          1.8 \r\n 2018          288           8.226         8.47         -1.1           1 \r\n 2018          289           13.739        17.19        -0.18          0 \r\n 2018          290           16.93         12.33         1.4           0 \r\n 2018          291           17.655        20.06         1.18          0 \r\n 2018          292           13.556        20.27         8.37          2 \r\n 2018          293           12.909        8.31         -2.93          0 \r\n 2018          294           7.846         15.83        -4.07          0 \r\n 2018          295           13.511        19.52         2.12          0 \r\n 2018          296           11.735        12.93        -0.29          0 \r\n 2018          297           8.487         13.98        -1.99          0 \r\n 2018          298           6.248         11.38         5.51          0 \r\n 2018          299           6.246         12.34         4.407         0.3 \r\n 2018          300           9.852         20.16         1.4           0.5 \r\n 2018          301           10.699        15.6          2.309         0 \r\n 2018          302           19.036        17.44         0.08          0 \r\n 2018          303           6.239         14.33         5.03          0 \r\n 2018          304           5.427         14.84         1.93          0 \r\n 2018          305           7.268         14.89        -1.19          0 \r\n 2018          306           6.519         11.63         3.88          0 \r\n 2018          307           9.628         6.28          2.45          14.2 \r\n 2018          308           5.18          6.43          4.19          9.9 \r\n 2018          309           5.754         7.21          2.86          8.1 \r\n 2018          310           12.303        5.56         -0.85          0 \r\n 2018          311           4.117         0.54         -2.55          0 \r\n 2018          312           11.626        0.12         -2.04          0 \r\n 2018          313           7.326        -2.07         -9.43          0 \r\n 2018          314           2.068        -2.42         -12.27         0 \r\n 2018          315           5.304         4.82         -6.21          0 \r\n 2018          316           3.982        -4.08         -8.85          0 \r\n 2018          317           11.861       -0.82         -12.84         0 \r\n 2018          318           8.058         5.31         -6.33          0 \r\n 2018          319           5.906         8.61         -5.52          0 \r\n 2018          320           7.048         6.52          0.28          1.3 \r\n 2018          321           7.874         0.18         -7.63          2.5 \r\n 2018          322           1.845        -0.6          -13.75         0 \r\n 2018          323           1             0.43         -7.18          0.3 \r\n 2018          324           4.929         2.09         -8.72          0 \r\n 2018          325           5.763         3.23         -5.72          0 \r\n 2018          326           2.978         11.85        -2.8           0 \r\n 2018          327           18.843        7.48          3.31          4.6 \r\n 2018          328           9.969         10.17        -0.26          0 \r\n 2018          329           9.781        -0.06         -5.34          0 \r\n 2018          330           1            -6.14         -10.69         0 \r\n 2018          331           16.861       -3.4          -12.36         0 \r\n 2018          332           15.524       -2.63         -8.11          0 \r\n 2018          333           5.975         1.66         -8.72          0 \r\n 2018          334           7.506         3.59         -6.01          0.3 \r\n 2018          335           11.66         2.64          0.13          28.7 \r\n 2018          336           4.696         1.01         -2.06          3 \r\n 2018          337           12.95        -2.12         -4.19          0 \r\n 2018          338           2.593        -4.21         -5.38          0 \r\n 2018          339           8.499         2.47         -7.62          0 \r\n 2018          340           5.151        -3.86         -12.09         0 \r\n 2018          341           3.551        -2.39         -11.92         0 \r\n 2018          342           13.973        0.06         -8.76          0 \r\n 2018          343           4.939         0.12         -9.57          0 \r\n 2018          344           6.154        -0.1          -11.46         0 \r\n 2018          345           7.097         5.1          -6.46          0 \r\n 2018          346           3.251         1.72         -6.67          0 \r\n 2018          347           2.496         1.33         -3.57          0 \r\n 2018          348           5.198         7.25         -4.33          0 \r\n 2018          349           8.263         9.17         -6.2           0 \r\n 2018          350           11.383        7.71         -2             0 \r\n 2018          351           11.139        7.38         -4.6           0.3 \r\n 2018          352           8.561         11.68        -1.39          0 \r\n 2018          353           7.015         11.07         2.1           0 \r\n 2018          354           1.918         2.52         -1.93          0 \r\n 2018          355           8.8          -2.27         -5.31          0 \r\n 2018          356           2.634         1.39         -7.31          0 \r\n 2018          357           9.011         2.53         -5.59          0 \r\n 2018          358           5.619         0.77         -9.22          0 \r\n 2018          359           5.785         5.88         -3.66          0 \r\n 2018          360           3.331         2.58         -4.25          15.2 \r\n 2018          361           1.681         9.99         -1.04          14.2 \r\n 2018          362           14.195       -1.87         -11.04         0 \r\n 2018          363           11.656       -9.19         -12.13         0 \r\n 2018          364           3.347         3.56         -9.02          0 \r\n 2018          365           1.188         0.12         -6.83          0.5 \r\n 2019          1             3.287        -7.95         -13.89         0 \r\n 2019          2             1.14          0.02         -10.54         0 \r\n 2019          3             8.631         8.62         -6.42          0.3 \r\n 2019          4             7.95          10.43        -2.68          0 \r\n 2019          5             8.147         11.64        -0.84          0 \r\n 2019          6             3.09          4.62         -1.23          0.3 \r\n 2019          7             4.924         8.13          2.23          0.5 \r\n 2019          8             8.97          6.27         -1.74          0 \r\n 2019          9             8.193        -2.69         -9.14          0 \r\n 2019          10            9.08          0.074        -10.29         0 \r\n 2019          11            2.286         0.276        -5.812         0 \r\n 2019          12            3.816        -1.232        -3.966         9.906 \r\n 2019          13            9.03          3.866        -9.81          3.048 \r\n 2019          14            3.565        -1.636        -11.54         0 \r\n 2019          15            3.744         0.59         -2.304         0 \r\n 2019          16            4.266        -1.91         -10.82         0 \r\n 2019          17            4.861        -1.474        -9.03          0 \r\n 2019          18            2.761        -5.973        -9.87          9.144 \r\n 2019          19            10.35        -9.85         -18.25         0 \r\n 2019          20            6.361        -13.9         -19.45         0 \r\n 2019          21            7.498        -7.962        -17.03         0 \r\n 2019          22            2.34         -3.418        -8.73          3.556 \r\n 2019          23            10.72        -5.385        -13.77         5.588 \r\n 2019          24            11.25        -5.406        -20.56         0 \r\n 2019          25            7.145        -9.05         -23.39         0 \r\n 2019          26            6.08         -2.061        -20.52         0 \r\n 2019          27            5.475        -5.04         -20.84         4.318 \r\n 2019          28            9.25          2.512        -16.52         0.254 \r\n 2019          29            5.249        -15.2         -26.37         0 \r\n 2019          30            7.3          -22.26        -29.89         0 \r\n 2019          31            13.849       -16.97        -27.43         0 \r\n 2019          32            7.972        -6.4          -19.58         0 \r\n 2019          33            3.69          5.62         -7.34          0 \r\n 2019          34            2.53          9.7           5.62          0.3 \r\n 2019          35            6.505         5.82         -12.07         0 \r\n 2019          36            2.023        -7.21         -14.82         0 \r\n 2019          37            2.595        -6.12         -10.26         0 \r\n 2019          38            7.693        -8.38         -18.19         0 \r\n 2019          39            8.448        -13.24        -20.8          0 \r\n 2019          40            9.467        -6.11         -18.22         0 \r\n 2019          41            6.94         -3.83         -6.07          0 \r\n 2019          42            4.298        -2.78         -5.69          0 \r\n 2019          43            9.598        -3.9          -13.99         0 \r\n 2019          44            9.066        -4.25         -16.96         0 \r\n 2019          45            11.049        3.6          -14.81         0.8 \r\n 2019          46            17.127       -11.01        -18.44         0 \r\n 2019          47            10.951       -6.67         -19.14         0 \r\n 2019          48            9.243        -4.52         -7.01          0 \r\n 2019          49            16.893       -7.34         -21.26         0 \r\n 2019          50            9.577        -7.14         -24.34         0 \r\n 2019          51            9.374        -1.42         -10.61         0 \r\n 2019          52            13.343       -4.07         -15.15         0 \r\n 2019          53            10.769       -1.58         -16.5          0 \r\n 2019          54            5.968         0.53         -1.87          3.6 \r\n 2019          55            5.991        -3.34         -16.83         0 \r\n 2019          56            13.142       -13.7         -20.51         0 \r\n 2019          57            8.864        -9.46         -15.98         0 \r\n 2019          58            5.345        -10.62        -16.78         0 \r\n 2019          59            8.548        -7.82         -15.05         0 \r\n 2019          60            10.748       -1.87         -13.19         1 \r\n 2019          61            11.9         -9.29         -14.97         0 \r\n 2019          62            14.562       -14.83        -21.53         0 \r\n 2019          63            4.04         -13.5         -23.26         0 \r\n 2019          64            10.383       -9.07         -15.42         0 \r\n 2019          65            13.185       -1.73         -17.21         0 \r\n 2019          66            9.2          -5.71         -10.9          0 \r\n 2019          67            12.963       -0.03         -5.52          0 \r\n 2019          68            4.362         0.85         -0.17          13.5 \r\n 2019          69            19.078        0.23         -5.83          0 \r\n 2019          70            15.73         2.13         -4.77          0 \r\n 2019          71            4.582         3.57         -4.04          3 \r\n 2019          72            3.078         7.73          1.91          8.6 \r\n 2019          73            3.367         7.66          0.47          1.8 \r\n 2019          74            13.159        4.69         -2             0 \r\n 2019          75            12.982        7.79         -3.31          1 \r\n 2019          76            11.342        4.55         -2.08          0 \r\n 2019          77            16.035        6.79         -2.69          0 \r\n 2019          78            10.474        9.53         -1.51          0.3 \r\n 2019          79            11.986        11.17        -0.886         0 \r\n 2019          80            17.755        11.57        -0.714         0 \r\n 2019          81            12.252        13.04        -0.665         0 \r\n 2019          82            9.709         11.78        -1.91          0.3 \r\n 2019          83            2.296         7.944         5.159         6.6 \r\n 2019          84            6.974         6.794         0.327         0 \r\n 2019          85            15.643        12.62        -0.948         0.3 \r\n 2019          86            9.091         19.35         2.664         0 \r\n 2019          87            11.762        12.94         3.38          0 \r\n 2019          88            5.709         7.823         0.762         1.5 \r\n 2019          89            13.32         4.32         -3.338         0 \r\n 2019          90            14.49         6.602        -5.679         0 \r\n 2019          91            17.344        15.3         -0.067         0 \r\n 2019          92            17.199        11.71         0.246         3 \r\n 2019          93            7.973         12.56        -0.907         4.6 \r\n 2019          94            6.829         11.88         5.614         0 \r\n 2019          95            10.666        18.41         6.248         0 \r\n 2019          96            14.187        24.88         7.198         0.5 \r\n 2019          97            6.541         22.08         8.59          6.3 \r\n 2019          98            24.243        25.03         5.583         0.3 \r\n 2019          99            7.155         18.12         6.148         0.3 \r\n 2019          100           8.992         7.99          3.24          4.1 \r\n 2019          101           5.209         13.21         2.28          1 \r\n 2019          102           1.317         2.83         -0.21          0 \r\n 2019          103           2.467         8.01         -2.29          0 \r\n 2019          104           7.541         9.62         -2.05          0 \r\n 2019          105           13.633        22.13        -0.98          0 \r\n 2019          106           14.459        23.23         7.13          0 \r\n 2019          107           11.747        22.09         7.71          3.6 \r\n 2019          108           6.576         11.86         5.93          0 \r\n 2019          109           22.233        17.01         2.55          0 \r\n 2019          110           24.888        22.52         3.825         0 \r\n 2019          111           16.705        27.89         9.1           0 \r\n 2019          112           13.932        21.53         8.01          4.6 \r\n 2019          113           23.899        18.61         6.53          0 \r\n 2019          114           21.293        19.69         3.47          0 \r\n 2019          115           8.166         17.88         9.06          2 \r\n 2019          116           17.546        16.57         4.09          0 \r\n 2019          117           21.101        9.99          0.47          11.4 \r\n 2019          118           20.413        9.87         -1.41          7.6 \r\n 2019          119           8.401         16.94         6.68          1.3 \r\n"
  },
  {
    "path": "scripts/yieldfx/baseline/crawfordsville.met",
    "content": "[weather.met.weather]\r\nlatitude = 41.938 (DECIMAL DEGREES)\r\ntav = 10.43919 (oC) ! annual average ambient temperature\r\namp = 28.94159 (oC) ! annual amplitude in mean monthly temperature\r\nyear          day           radn          maxt          mint          rain\r\n()            ()            (MJ/m^2)      (oC)          (oC)          (mm)\r\n 1980          1             5.4           3.025        -3.5           0 \r\n 1980          2             6.2           2.55         -4.325         0 \r\n 1980          3             5.7          -0.575        -6.625         0 \r\n 1980          4             6.1          -0.05         -7.65          0 \r\n 1980          5             5.9           1.85         -5.1           0 \r\n 1980          6             3.6           3.875        -5.025         1.35 \r\n 1980          7             8.6           0.525        -12.7          0 \r\n 1980          8             7.5          -5.825        -11.95         0 \r\n 1980          9             8.5          -7.575        -15.35         0 \r\n 1980          10            3.7           7.325        -11.225        0 \r\n 1980          11            8.9           8.775        -6             0 \r\n 1980          12            7.6          -1.975        -14.425        0 \r\n 1980          13            2.7           3.8          -3.275         0 \r\n 1980          14            7.8           5.75         -3.55          0 \r\n 1980          15            3             6.85          2.25          3.9 \r\n 1980          16            1.3           11.075        4.1           18.8 \r\n 1980          17            7.1           5.3          -1.2           1 \r\n 1980          18            9.3           6.925        -2.925         0 \r\n 1980          19            1.9           0.9          -1.575         0.7 \r\n 1980          20            9.1           3.4          -6.45          0 \r\n 1980          21            4.4           3.175        -4.8           0 \r\n 1980          22            9.2           0.425        -9.25          0 \r\n 1980          23            10.6         -7.025        -14.475        0 \r\n 1980          24            3.3           3.825        -11.15         1.425 \r\n 1980          25            10            2.375        -3.925         0 \r\n 1980          26            5            -4.1          -12.525        0 \r\n 1980          27            9.7          -7.95         -15.8          0 \r\n 1980          28            7.5          -7.425        -12.9          0 \r\n 1980          29            11.3         -7.425        -14.325        0 \r\n 1980          30            4.3          -7.175        -11.375        1.425 \r\n 1980          31            11.2         -7.1          -16.175        0 \r\n 1980          32            8.2          -7.3          -15.05         0 \r\n 1980          33            5.8          -4.025        -10.5          0 \r\n 1980          34            9.6          -2.125        -10.775        0 \r\n 1980          35            8.1          -2.075        -11.925        0 \r\n 1980          36            3.1          -0.95         -7             10.701 \r\n 1980          37            5.7          -1.9          -9.075         0 \r\n 1980          38            7.3          -2.3          -10.175        0 \r\n 1980          39            4.1          -2.25         -10.425        0.5 \r\n 1980          40            10.8         -2.6          -14.575        0 \r\n 1980          41            8.6          -2.925        -15            0 \r\n 1980          42            11.6         -4.825        -11.725        0 \r\n 1980          43            10.1         -4.725        -14.925        0 \r\n 1980          44            9.5           0.45         -14.425        0 \r\n 1980          45            11.6         -0.15         -6.85          0 \r\n 1980          46            5.7          -3.25         -7.725         5.65 \r\n 1980          47            13.7         -7.2          -18.275        0 \r\n 1980          48            10.8         -6.225        -16.675        0 \r\n 1980          49            13.3          1.4          -15.3          0 \r\n 1980          50            10.1          4.425        -3.85          0 \r\n 1980          51            11.9          9.7          -0.15          0 \r\n 1980          52            3.6           7.925         0.35          3.775 \r\n 1980          53            9             10.425        1.3           3.175 \r\n 1980          54            10.3          6.325        -0.775         0 \r\n 1980          55            15            6.725        -3.425         0 \r\n 1980          56            12.3         -0.6          -10.175        6.875 \r\n 1980          57            14.4          2.05         -11.625        0 \r\n 1980          58            8.9           0.7          -4.5           0 \r\n 1980          59            16.8          0.65         -5.65          0.7 \r\n 1980          60            8.9          -5.8          -16.7          0 \r\n 1980          61            13.6         -5.65         -12.675        0 \r\n 1980          62            15.5         -1.675        -12.875        0 \r\n 1980          63            10.3          5.1          -7.875         0 \r\n 1980          64            7             7.05         -0.925         0 \r\n 1980          65            16            0.525        -10.9          0 \r\n 1980          66            5.5           3.475        -9.125         0 \r\n 1980          67            4.5           0.675        -4.575         6 \r\n 1980          68            16            1.025        -6.2           3.575 \r\n 1980          69            9.9           8.925        -7.875         0 \r\n 1980          70            9.7           5.4          -3.675         0 \r\n 1980          71            18.4          3.075        -11.2          0 \r\n 1980          72            2.9           0            -4.025         3.05 \r\n 1980          73            7.4           2.125        -3.125         4.05 \r\n 1980          74            18.5          10.475       -5.7           0 \r\n 1980          75            17.8          16.325        1.1           1.4 \r\n 1980          76            3.4           16.375        4.8           0 \r\n 1980          77            10.7          11.6         -1.475         0 \r\n 1980          78            19.6          15.325        0.15          0 \r\n 1980          79            7.7           16.025        2.15          0 \r\n 1980          80            6.7           12.125        3.075         0 \r\n 1980          81            21            8.95         -1.5           0 \r\n 1980          82            10.7          10.175       -2.125         0 \r\n 1980          83            9             14.975        3.5           1.55 \r\n 1980          84            9.9           9.425         2.175         4.725 \r\n 1980          85            15.4          9.1          -2.175         0 \r\n 1980          86            15.8          10.925       -0.7           0 \r\n 1980          87            13.2          17.775        1.45          0 \r\n 1980          88            3.5           12.525        5.825         0 \r\n 1980          89            12.7          13.925        3.15          2.05 \r\n 1980          90            3.3           9.975         4.75          11.426 \r\n 1980          91            22.9          15.325        1.925         1.45 \r\n 1980          92            11.3          15.35         0.6           0.825 \r\n 1980          93            8.8           15.9          4.4           3.75 \r\n 1980          94            12.8          15.525        5.45          10.05 \r\n 1980          95            20.4          12.8          0.575         0 \r\n 1980          96            21.3          18.225        0.65          0 \r\n 1980          97            6.3           18.825        6.7           0 \r\n 1980          98            19.5          22.75         9.875         0 \r\n 1980          99            8.1           15.925        7.2           1.85 \r\n 1980          100           4             9.475         1.425         2.025 \r\n 1980          101           22.9          13.35        -2.625         0 \r\n 1980          102           5.8           7.675         1.4           14.225 \r\n 1980          103           24.2          11.4         -2.6           0 \r\n 1980          104           15.9          9.525        -1.05          0 \r\n 1980          105           9.8           5.725        -0.45          9.3 \r\n 1980          106           23            15.125       -1.525         0 \r\n 1980          107           20            18.45         2.35          0 \r\n 1980          108           8.5           16.75         5.35          1.45 \r\n 1980          109           24.9          22.55         5.25          0 \r\n 1980          110           22.8          23.825        8.4           0 \r\n 1980          111           14.6          26            10.275        0 \r\n 1980          112           24.8          28.25         10.025        0 \r\n 1980          113           25.6          29.375        13.825        0 \r\n 1980          114           22.6          23.7          10.6          0 \r\n 1980          115           27.8          14.6          3.65          0 \r\n 1980          116           25.5          18.45         3.95          1.125 \r\n 1980          117           26.5          18.55         3.8           0 \r\n 1980          118           20.7          19.275        5.325         0 \r\n 1980          119           23.3          19.5          6.425         0 \r\n 1980          120           11.1          18.85         7.125         0 \r\n 1980          121           23.3          21.225        6.9           0 \r\n 1980          122           20.4          23.35         7.7           0 \r\n 1980          123           23.4          24.85         9.9           0 \r\n 1980          124           20.2          25.95         11.5          0 \r\n 1980          125           25            29.3          13.5          0 \r\n 1980          126           18.7          29.075        13.475        0 \r\n 1980          127           26.1          25.875        10.3          0 \r\n 1980          128           27.6          18            4.1           0 \r\n 1980          129           27.4          17.225        1.7           0 \r\n 1980          130           28.2          21.425        5.2           0 \r\n 1980          131           11            23.55         9.775         5.15 \r\n 1980          132           26.8          21.375        7.475         1.075 \r\n 1980          133           11            22.425        7.975         0 \r\n 1980          134           24.9          20.2          11.375        2.275 \r\n 1980          135           25.3          22.625        5.175         0 \r\n 1980          136           21.7          24.175        10.075        4.125 \r\n 1980          137           8.6           19.875        10.025        13.525 \r\n 1980          138           6.6           22.475        10.175        8.425 \r\n 1980          139           14.7          22.5          13.025        4.55 \r\n 1980          140           17.6          22.875        12.05         0 \r\n 1980          141           16.5          22.925        11.5          0 \r\n 1980          142           29            27.675        11.25         0 \r\n 1980          143           29.4          28.35         13.7          0 \r\n 1980          144           16.5          27.7          16            0.7 \r\n 1980          145           10.1          26.175        16.125        0 \r\n 1980          146           26.2          30.075        14.825        0 \r\n 1980          147           22.8          28.6          15.575        1.525 \r\n 1980          148           11.4          27.55         14.725        0 \r\n 1980          149           9             27.775        18.6          10.5 \r\n 1980          150           11.7          29.175        19.2          16.55 \r\n 1980          151           21.4          29.7          18.725        7.125 \r\n 1980          152           28.5          29.175        13.7          0 \r\n 1980          153           12.8          26.1          17.9          33.549 \r\n 1980          154           13.9          26.05         16.15         8.775 \r\n 1980          155           29.2          27.625        14.725        2.725 \r\n 1980          156           19.9          26.8          14.8          5.475 \r\n 1980          157           9.6           27.375        15.575        2.275 \r\n 1980          158           11.5          27.925        20.875        1.075 \r\n 1980          159           15.2          28.5          21.975        0 \r\n 1980          160           32.1          23.85         11.775        0 \r\n 1980          161           30.2          26.475        11.275        0 \r\n 1980          162           30.6          24.55         12.525        0 \r\n 1980          163           31.2          25.25         9.575         0 \r\n 1980          164           30            27.55         11.25         0 \r\n 1980          165           17.2          29.625        15.825        45.399 \r\n 1980          166           10.2          28.475        18.975        18.475 \r\n 1980          167           16.1          27.375        18.05         3.7 \r\n 1980          168           26.2          23.75         9.3           0 \r\n 1980          169           22.5          25.625        10.85         0 \r\n 1980          170           25.3          29.375        12.825        1.825 \r\n 1980          171           28.1          26.325        14.775        0 \r\n 1980          172           24.1          25.925        9.85          0 \r\n 1980          173           31            29.525        11.45         0 \r\n 1980          174           25.1          31.2          15.1          0 \r\n 1980          175           10.1          25.35         19.3          1.85 \r\n 1980          176           24.4          31.25         17.35         0 \r\n 1980          177           22.1          31.325        18.65         0 \r\n 1980          178           18.6          34.375        20.6          0 \r\n 1980          179           13.3          31.025        21.6          1.2 \r\n 1980          180           26.5          32.45         23.575        0 \r\n 1980          181           31            29.075        17.6          0 \r\n 1980          182           29.4          31.275        13.7          0 \r\n 1980          183           16.6          30.4          16.95         0 \r\n 1980          184           21.3          29.975        16.8          0 \r\n 1980          185           19.1          28.2          18.55         0 \r\n 1980          186           15.1          28.725        19.325        9.575 \r\n 1980          187           18.3          30.8          22.425        11.875 \r\n 1980          188           17.5          28.725        18.35         0 \r\n 1980          189           26.9          36.35         22.55         0 \r\n 1980          190           18.5          33.1          23.575        11.875 \r\n 1980          191           16            34.875        23.5          9.575 \r\n 1980          192           24.6          33.35         21.35         1.925 \r\n 1980          193           25.4          37.325        22.6          0 \r\n 1980          194           27.2          36.725        23.625        0 \r\n 1980          195           28.3          36.55         20.4          0 \r\n 1980          196           28.3          39.875        23.025        0 \r\n 1980          197           24.6          40.275        25.45         0 \r\n 1980          198           24.8          32.3          22.95         13.125 \r\n 1980          199           28.7          36.15         19.725        0 \r\n 1980          200           16.5          32.525        21.65         19.224 \r\n 1980          201           19.9          34.8          22.9          0 \r\n 1980          202           26.3          39.825        25            0 \r\n 1980          203           20.3          29.725        20            14.474 \r\n 1980          204           27.9          28.35         16.4          0 \r\n 1980          205           28.4          29.375        16.05         0 \r\n 1980          206           28.4          32.675        15.65         0 \r\n 1980          207           25.6          36            17.35         1.325 \r\n 1980          208           12.4          28.8          20.025        20.949 \r\n 1980          209           23.4          24.875        17.125        0 \r\n 1980          210           27.2          30.575        14.9          0 \r\n 1980          211           27.8          31.45         18.575        0 \r\n 1980          212           22.9          38.25         19.225        0 \r\n 1980          213           25.3          34.1          22.075        0 \r\n 1980          214           24.3          35.35         21.2          0 \r\n 1980          215           14.2          33.675        22.975        0 \r\n 1980          216           27.2          33.55         16.85         0 \r\n 1980          217           20.8          37.8          19.8          30.576 \r\n 1980          218           26.6          34.425        20.15         5.075 \r\n 1980          219           12.9          31.95         22.85         13.05 \r\n 1980          220           18.9          35.9          23.3          0 \r\n 1980          221           20.4          38.875        24.025        6.15 \r\n 1980          222           12.8          31.3          21.975        6.5 \r\n 1980          223           11.6          32.95         23.675        14.625 \r\n 1980          224           13.4          27.8          21.725        8.6 \r\n 1980          225           25.5          31.8          16.8          0 \r\n 1980          226           14.9          34.95         18.6          11.175 \r\n 1980          227           7.5           28.55         21.2          7.45 \r\n 1980          228           12.8          25.775        17.1          0 \r\n 1980          229           7.3           22.6          15.35         60.551 \r\n 1980          230           6.5           27.2          20.5          0 \r\n 1980          231           11.4          27.325        18.65         0 \r\n 1980          232           19            31.15         21.95         0 \r\n 1980          233           21.5          32.5          21.7          0 \r\n 1980          234           23.6          28.35         18.625        7.8 \r\n 1980          235           23.6          29.175        15.25         0 \r\n 1980          236           23.6          29.55         15.925        0 \r\n 1980          237           22.5          31.75         15.25         0 \r\n 1980          238           22.7          34.175        16.275        0 \r\n 1980          239           22.4          36.175        17.1          0 \r\n 1980          240           15.3          31.2          19.575        0 \r\n 1980          241           14.1          32.225        20.425        0 \r\n 1980          242           10.2          28.95         21.125        7.225 \r\n 1980          243           11.2          30.75         18.6          4.85 \r\n 1980          244           10.3          26.625        20.6          37.301 \r\n 1980          245           7.5           26.8          22.325        17.651 \r\n 1980          246           24.1          27.125        15.525        0 \r\n 1980          247           19.9          30.025        16.175        2 \r\n 1980          248           14.2          27.375        20.7          42.952 \r\n 1980          249           14.5          28.325        14.575        5.5 \r\n 1980          250           20.1          29.95         16.7          0 \r\n 1980          251           14.9          32.375        18.225        3.475 \r\n 1980          252           18            32.725        20.5          1.675 \r\n 1980          253           13.2          27.8          19.4          1.8 \r\n 1980          254           22.6          25.025        9.9           0 \r\n 1980          255           16.8          27.25         13.4          0 \r\n 1980          256           6.3           29.575        17.875        29.051 \r\n 1980          257           14.8          29.1          19.95         10.776 \r\n 1980          258           20.5          25.55         14.85         0 \r\n 1980          259           15            26.325        13.3          0 \r\n 1980          260           6.6           22.4          10.6          6.825 \r\n 1980          261           20.2          19.1          5.55          0 \r\n 1980          262           19.3          26.2          9.325         0 \r\n 1980          263           19.1          30            12.25         0 \r\n 1980          264           16.4          32.25         20.225        1.8 \r\n 1980          265           16.8          29.625        17.95         0 \r\n 1980          266           7.5           25.75         16.6          3.7 \r\n 1980          267           19.6          20.9          5.95          0 \r\n 1980          268           14.6          23.275        7.85          0 \r\n 1980          269           17.3          20.3          10.425        0 \r\n 1980          270           18.2          19.45         3.525         0 \r\n 1980          271           15.8          25.175        9.225         0 \r\n 1980          272           14.3          26.275        11.675        0 \r\n 1980          273           17.1          26.25         9.75          0 \r\n 1980          274           15.8          28.425        12            0 \r\n 1980          275           16.5          26.9          13.975        0 \r\n 1980          276           13.7          20.975        8.15          0 \r\n 1980          277           9.3           11.8          3.15          0 \r\n 1980          278           18.4          16.35         4.3           0 \r\n 1980          279           18.4          18.075        1.9           0 \r\n 1980          280           14.2          25.025        5.35          0 \r\n 1980          281           16.9          26.15         9.7           0 \r\n 1980          282           16.7          28.025        10.475        0 \r\n 1980          283           15.4          25.525        9.2           0 \r\n 1980          284           16.8          22.625        9.825         0 \r\n 1980          285           16.2          15.675        7.05          0 \r\n 1980          286           16.4          14.9          0.575         0 \r\n 1980          287           13.3          20.45         4.35          0 \r\n 1980          288           13.5          26.25         9.825         0 \r\n 1980          289           4.7           17.85         6.65          9.825 \r\n 1980          290           3.3           23.15         13.475        2.4 \r\n 1980          291           14.7          21.75         13.425        3 \r\n 1980          292           12.6          15.525        5.4           0 \r\n 1980          293           14            16.2          1.05          0 \r\n 1980          294           13.4          19.225        5.825         0 \r\n 1980          295           13.3          18.55         6.1           0 \r\n 1980          296           12.1          19.8          5.025         0 \r\n 1980          297           11.1          24.35         7.375         1.4 \r\n 1980          298           4.5           17.925        3.9           14.7 \r\n 1980          299           10.6          6.95         -1.9           0.7 \r\n 1980          300           11.6          9.45         -3.375         0 \r\n 1980          301           3.9           5.725         0.25          11.975 \r\n 1980          302           11.1          5.125        -1.55          0.6 \r\n 1980          303           9.6           9.075        -3.875         0 \r\n 1980          304           10.9          13.6         -2.625         0 \r\n 1980          305           9.9           18.9          1.05          0 \r\n 1980          306           13            13.7          0.9           0 \r\n 1980          307           12.5          17.575        0.375         0 \r\n 1980          308           11            20.35         10.4          0 \r\n 1980          309           11.5          15.45         5.125         0 \r\n 1980          310           12.3          13.85         1.9           0 \r\n 1980          311           11.3          22.05         3.725         0 \r\n 1980          312           8.4           20.775        9.225         0 \r\n 1980          313           7.7           22.7          5             0 \r\n 1980          314           11            19.45         6.975         0 \r\n 1980          315           10.9          13.25        -0.225         0 \r\n 1980          316           8.3           9.7          -2.125         0 \r\n 1980          317           9.3           16.125        1.9           0.525 \r\n 1980          318           2.9           15.025        7.575         5.675 \r\n 1980          319           9.2           8.525         1.2           0.9 \r\n 1980          320           7.4           8.125         0.125         0 \r\n 1980          321           8.2           8.95         -2.2           0 \r\n 1980          322           6.7           6.25         -1.15          0 \r\n 1980          323           9.9           6.225        -5.025         0 \r\n 1980          324           9.6           9.85         -3.175         0 \r\n 1980          325           9.5           11.125       -1.8           0 \r\n 1980          326           9.6           10.15        -3.325         0 \r\n 1980          327           9.6           12.8         -1.275         0 \r\n 1980          328           1.3           6.825         1.6           7.625 \r\n 1980          329           9.2           3.6          -4.825         0 \r\n 1980          330           9             4.925        -5.6           0 \r\n 1980          331           5             4.15         -3.4           0 \r\n 1980          332           1.7           2.7          -1.25          1.95 \r\n 1980          333           4.8           3.4          -3.025         0 \r\n 1980          334           8.4           7.225        -0.325         0 \r\n 1980          335           7.2           12.175       -0.15          0 \r\n 1980          336           3             7.075         1.4           3.4 \r\n 1980          337           9.2           3.05         -6.875         2.275 \r\n 1980          338           8.7           3.7          -6.6           0 \r\n 1980          339           5.1           6.575        -1.1           0 \r\n 1980          340           1.5           11.825        3             1 \r\n 1980          341           2             11.2          4.35          9.1 \r\n 1980          342           3.4           8.45          4.125         17.9 \r\n 1980          343           3.6           6.7          -2.05          23.9 \r\n 1980          344           5.6          -0.15         -8.925         0 \r\n 1980          345           8.3          -4.5          -13            0 \r\n 1980          346           8.3          -0.8          -13.7          0 \r\n 1980          347           7.1           6.375        -7.325         0 \r\n 1980          348           8.9           5.725        -8.7           0 \r\n 1980          349           5.8           3.8          -5.025         0 \r\n 1980          350           3.4           1.1          -4             0 \r\n 1980          351           7.8           4.225        -2.05          0 \r\n 1980          352           6.4           8.2          -3.625         0 \r\n 1980          353           3.8           5.425        -1.675         0 \r\n 1980          354           8.9           0.175        -14.65         0 \r\n 1980          355           8.6          -6.125        -14.35         0 \r\n 1980          356           5.1          -2.075        -10.425        0 \r\n 1980          357           3.8           1.875        -6.775         0 \r\n 1980          358           4.1           4.5          -3.675         0 \r\n 1980          359           7.3           1.7          -12.475        2.2 \r\n 1980          360           4.6          -8.275        -15.975        0 \r\n 1980          361           6.9          -1.7          -9.05          0 \r\n 1980          362           6.3           0.6          -7.55          0 \r\n 1980          363           4.3           4.5          -3.725         0 \r\n 1980          364           6.3           4.5          -2.725         0 \r\n 1980          365           2.8           4.3          -6.325         0 \r\n 1980          366           7.4           6            -0.85          0 \r\n 1981          1             7.2           3.45         -3.525         0 \r\n 1981          2             7.2           0.4          -9.375         0 \r\n 1981          3             7.7          -1.4          -14.15         0 \r\n 1981          4             8.6          -9.075        -16.75         0 \r\n 1981          5             6.1          -0.175        -15.475        0 \r\n 1981          6             3             3.425        -4.45          0 \r\n 1981          7             7.8          -2.375        -16.175        0 \r\n 1981          8             8            -1.925        -10.35         0.8 \r\n 1981          9             5.9          -1.375        -11.175        0 \r\n 1981          10            7.1          -6.175        -16.7          0 \r\n 1981          11            9.1          -5.75         -17.5          0 \r\n 1981          12            4.1           1.175        -12.9          0 \r\n 1981          13            6.2           2.375        -6.925         0 \r\n 1981          14            5.1           2.25         -5.9           0 \r\n 1981          15            8.7           0            -9.175         0 \r\n 1981          16            9.4          -4.55         -14.225        0 \r\n 1981          17            9.5           2.475        -13.95         0 \r\n 1981          18            9.6           8.45         -5.825         0 \r\n 1981          19            7.8           9.775         0.125         0 \r\n 1981          20            6.9           9.35          0.6           0 \r\n 1981          21            10            4.5          -6.05          0 \r\n 1981          22            9.8           8.8          -3.1           0 \r\n 1981          23            8.4           10.425       -2.75          0 \r\n 1981          24            9.8           13.25         0.925         0 \r\n 1981          25            6.2           13.25         2.75          0 \r\n 1981          26            9.7           9.525         0.45          0 \r\n 1981          27            7.9           7.4          -1.675         0 \r\n 1981          28            10.4          4.575        -5.775         0 \r\n 1981          29            10.6          1.275        -11            0 \r\n 1981          30            11.9          3.45         -10.875        0 \r\n 1981          31            6.5           4.65         -7.25          0.775 \r\n 1981          32            7.8           0.9          -6.875         4.45 \r\n 1981          33            7.7          -7.675        -16.9          0 \r\n 1981          34            6.5          -8.075        -15.275        0 \r\n 1981          35            11.6         -7.55         -15.425        0 \r\n 1981          36            4.2           0.375        -13.6          0.3 \r\n 1981          37            10.4          1.75         -9.075         0 \r\n 1981          38            11.4          3.4          -3.9           0 \r\n 1981          39            10.9         -2.775        -14.325        0 \r\n 1981          40            10.6         -2.875        -10.025        0 \r\n 1981          41            4.3          -5.525        -14.3          4.45 \r\n 1981          42            14.2         -14.85        -26.025        0 \r\n 1981          43            12.9         -3.3          -19.375        0 \r\n 1981          44            9.2           1.775        -11.375        0 \r\n 1981          45            13.4          6.4          -6.975         0 \r\n 1981          46            10.3          10.475       -1.45          0 \r\n 1981          47            13            14.075        0.8           0 \r\n 1981          48            10.1          17.675        1.95          0 \r\n 1981          49            6.9           16.875        5.8           0 \r\n 1981          50            10.9          16.925        3.425         0 \r\n 1981          51            14.8          18.525        1.2           0 \r\n 1981          52            3.3           13.65         2.55          2.05 \r\n 1981          53            2.9           11.125        2.95          23.727 \r\n 1981          54            8.7           5.125         0.3           3.95 \r\n 1981          55            15.8          15.525       -2.075         0 \r\n 1981          56            15.7          14.625       -1.05          0 \r\n 1981          57            14.9          12.625       -2.5           0.5 \r\n 1981          58            7.3           20.85         2.5           3.225 \r\n 1981          59            13.7          14.775        1.55          0 \r\n 1981          60            14.1          10.775       -4.25          0 \r\n 1981          61            15.3          5.4          -5.2           0 \r\n 1981          62            6.1           6.2          -4.45          0.825 \r\n 1981          63            3.1           7.15          0.55          3.675 \r\n 1981          64            16.2          6.15         -4.475         0 \r\n 1981          65            16.3          4.2          -4.25          0 \r\n 1981          66            16.7          5.775        -5             0 \r\n 1981          67            16.6          8.75         -2.375         0 \r\n 1981          68            10.4          10.275       -1.4           0 \r\n 1981          69            17            10.525       -2.85          0 \r\n 1981          70            17.9          9.95         -4.05          0 \r\n 1981          71            17.6          17.25        -0.8           0 \r\n 1981          72            18.5          10.55        -1.8           0 \r\n 1981          73            19.2          12.75        -2.375         0 \r\n 1981          74            18.1          18.825        2.65          0 \r\n 1981          75            19.8          10.4         -5.5           0 \r\n 1981          76            14.7          9.775         0.275         0 \r\n 1981          77            19.5          6.175        -5.55          0 \r\n 1981          78            13            6.15         -4.35          0 \r\n 1981          79            20.5          10.275       -3.775         0 \r\n 1981          80            4.4           8.575        -0.2           0 \r\n 1981          81            19.9          14.425       -0.275         0 \r\n 1981          82            21            16.85        -0.475         0 \r\n 1981          83            21.2          19.05         2.65          0 \r\n 1981          84            11.1          15.85         0.775         0.4 \r\n 1981          85            9.7           16.85         4.05          0 \r\n 1981          86            21.6          19.625        2.525         0 \r\n 1981          87            19.2          24.825        10.2          0 \r\n 1981          88            8.5           20.4          13.55         2.3 \r\n 1981          89            21.3          20.05         6.075         0.4 \r\n 1981          90            20.7          26.075        8.825         0 \r\n 1981          91            20            18.15         7.6           0 \r\n 1981          92            20            27            6.25          0 \r\n 1981          93            3.6           21.7          11.975        3.325 \r\n 1981          94            17.3          19.975        7.1           8.975 \r\n 1981          95            17.6          12.45        -0.95          0 \r\n 1981          96            22.4          16.65        -1.55          0 \r\n 1981          97            20.6          24.175        5.1           0 \r\n 1981          98            4.6           20.7          12.575        8.1 \r\n 1981          99            22.8          20.85         3.75          0 \r\n 1981          100           5.2           23.85         8.975         23.475 \r\n 1981          101           2.7           21            15.45         25.175 \r\n 1981          102           6.2           23.05         14.775        33.05 \r\n 1981          103           3.8           22.675        15.025        15.075 \r\n 1981          104           25.8          19.975        4.325         4.375 \r\n 1981          105           26.1          17.125       -0.775         0 \r\n 1981          106           8.4           20.975        5.35          0 \r\n 1981          107           21.6          27.65         12.8          0 \r\n 1981          108           24.5          22.225        5.85          0 \r\n 1981          109           2.5           16.175        9.5           2.25 \r\n 1981          110           25.7          14.5          3.625         0 \r\n 1981          111           21.6          17.8         -0.425         0 \r\n 1981          112           3.7           20.5          11.05         11.725 \r\n 1981          113           22            18.05         7.475         0 \r\n 1981          114           27.7          17.65         3.375         0 \r\n 1981          115           23.7          24.2          5.3           0 \r\n 1981          116           22.8          29.35         11.6          0 \r\n 1981          117           18.4          27.875        13            6.375 \r\n 1981          118           11.4          23.775        16.775        6.8 \r\n 1981          119           15.4          21.575        7.875         2.2 \r\n 1981          120           20.3          20.075        8.8           0 \r\n 1981          121           22.3          17.475        5.825         0 \r\n 1981          122           25.9          21.175        5.8           0 \r\n 1981          123           19.4          26.3          8.95          5.275 \r\n 1981          124           16.1          26.575        14.35         4.075 \r\n 1981          125           16.3          22.125        12.85         0 \r\n 1981          126           28.5          18.8          5.275         0 \r\n 1981          127           24.6          18.475        3.3           0 \r\n 1981          128           9.1           18.05         6.925         3.45 \r\n 1981          129           20.1          23.7          9.55          0 \r\n 1981          130           5.3           17.175        3.425         4.75 \r\n 1981          131           29.4          18.375       -0.15          0 \r\n 1981          132           12.3          17.375        4.475         0 \r\n 1981          133           7.3           16.025        6.875         2.5 \r\n 1981          134           11.6          15.1          6.7           18.625 \r\n 1981          135           29.1          23.325        6.075         0 \r\n 1981          136           23.9          24.025        9.8           0 \r\n 1981          137           14.4          21.45         10.65         0 \r\n 1981          138           10.2          15.35         8.225         2.35 \r\n 1981          139           29.3          20.45         5.75          0 \r\n 1981          140           30.6          24.275        7.8           0 \r\n 1981          141           29.9          24.2          9.225         0 \r\n 1981          142           24.4          26.225        12.075        0 \r\n 1981          143           8.5           24.35         15.925        11.4 \r\n 1981          144           28.2          23.675        16.225        2.4 \r\n 1981          145           22            25.8          10.7          0 \r\n 1981          146           16.8          24.75         15.1          3.65 \r\n 1981          147           25.1          26.05         15.375        3.275 \r\n 1981          148           25.8          28.725        14.175        0 \r\n 1981          149           18.5          27.025        18.475        1.2 \r\n 1981          150           15.6          24.65         15.275        0 \r\n 1981          151           30.9          26.275        10.4          0 \r\n 1981          152           25.9          25.725        12.225        0 \r\n 1981          153           16.9          27.475        15.5          0 \r\n 1981          154           28.4          27.675        15.95         0 \r\n 1981          155           23.6          29.975        15.65         0 \r\n 1981          156           20.4          28.675        18.525        2.625 \r\n 1981          157           28.1          29.3          17.55         0 \r\n 1981          158           27.3          31.25         15.95         0 \r\n 1981          159           17.9          30.675        20.7          4.275 \r\n 1981          160           22.7          30.225        16.225        0 \r\n 1981          161           28.6          28.1          17.775        0 \r\n 1981          162           15.5          28.975        16.275        0 \r\n 1981          163           10.5          26.95         17.8          5 \r\n 1981          164           17.4          28.3          21.55         7.05 \r\n 1981          165           11.2          27.4          22.85         17.125 \r\n 1981          166           7.5           25.7          18.45         15.1 \r\n 1981          167           28.7          22.825        13.125        3.65 \r\n 1981          168           31.1          26.3          13.025        0 \r\n 1981          169           29.3          29.725        13.95         0 \r\n 1981          170           24.9          28.325        15.6          0 \r\n 1981          171           20.5          28.975        17.2          2.7 \r\n 1981          172           13.3          29.8          16            3.175 \r\n 1981          173           29.8          27.35         15.475        0 \r\n 1981          174           30.1          29.35         13.65         1.85 \r\n 1981          175           10.5          28.55         21.775        49.874 \r\n 1981          176           30.7          29.25         16.875        0 \r\n 1981          177           31.2          29.125        14.55         0 \r\n 1981          178           26            30.35         14.875        0 \r\n 1981          179           24.7          33.625        19.525        0 \r\n 1981          180           18.6          33.875        20.525        24.374 \r\n 1981          181           25.9          31.05         20.65         3.7 \r\n 1981          182           26.9          31.15         16.25         0 \r\n 1981          183           25.5          30.025        19.875        0 \r\n 1981          184           26.9          32.05         17.925        8.15 \r\n 1981          185           7.8           26.725        20.425        11.675 \r\n 1981          186           28.3          31.025        17.925        0 \r\n 1981          187           29.1          32.725        18.975        0 \r\n 1981          188           27            32.775        18.6          0 \r\n 1981          189           22.6          31.975        22.2          0 \r\n 1981          190           19.7          33.375        22.4          0 \r\n 1981          191           28.9          35.2          17.35         0 \r\n 1981          192           13            29.425        20.85         6.425 \r\n 1981          193           16.8          33.325        22.95         2.475 \r\n 1981          194           15.4          32.075        24.2          6.8 \r\n 1981          195           13.5          29.125        24.05         21.074 \r\n 1981          196           11            27.55         22.375        4.525 \r\n 1981          197           25.9          32.05         20.55         0 \r\n 1981          198           24.2          32.175        18.775        0 \r\n 1981          199           13            28.15         20.95         0 \r\n 1981          200           8.8           25.45         21.325        3.825 \r\n 1981          201           19.8          26.85         20.5          0 \r\n 1981          202           27.8          28.475        17.275        0 \r\n 1981          203           21.8          27.45         17.475        1.825 \r\n 1981          204           15            24.775        17            0 \r\n 1981          205           24.7          29.25         16            0 \r\n 1981          206           11.4          26.125        20.025        22.949 \r\n 1981          207           18.3          25.775        18.45         2.4 \r\n 1981          208           15.5          23.725        16.275        16.499 \r\n 1981          209           23.7          21.025        12.825        8.35 \r\n 1981          210           27.8          24.65         11.4          0 \r\n 1981          211           24.5          26.3          14.025        0 \r\n 1981          212           26.3          29.125        14.425        0 \r\n 1981          213           20            31.275        16.125        3.45 \r\n 1981          214           8.8           26.175        20.325        15.25 \r\n 1981          215           21.7          29.075        19.325        0 \r\n 1981          216           15.1          29.275        18.275        10.1 \r\n 1981          217           7.9           28.425        21.625        15.525 \r\n 1981          218           17.1          29.525        19.35         0 \r\n 1981          219           22.2          26.225        17.475        0 \r\n 1981          220           26            28.4          15.575        0 \r\n 1981          221           20.7          27.775        16.475        0 \r\n 1981          222           23.9          28.7          18.225        0 \r\n 1981          223           23.9          29.4          14.825        0 \r\n 1981          224           24.6          32.875        16.9          0 \r\n 1981          225           13.6          29.625        16.95         0 \r\n 1981          226           9.4           29.6          21.225        24.126 \r\n 1981          227           18.7          27.6          22.5          8.5 \r\n 1981          228           22.8          26.35         16.375        0 \r\n 1981          229           25.1          25.725        11.5          0 \r\n 1981          230           24.2          27.1          11.2          0 \r\n 1981          231           24.1          27.85         12.075        0 \r\n 1981          232           24.6          28.875        12.175        0 \r\n 1981          233           24.1          30.35         14.4          0 \r\n 1981          234           23.2          30.525        15.275        0 \r\n 1981          235           19.6          31.25         16.875        0 \r\n 1981          236           12.7          28.625        18.425        3.35 \r\n 1981          237           18.5          32.275        18.05         0 \r\n 1981          238           5.3           25.25         19.9          4.05 \r\n 1981          239           14.8          25.975        18.275        7.825 \r\n 1981          240           14.2          25.925        18.625        2.125 \r\n 1981          241           18.1          26.325        17.85         2.35 \r\n 1981          242           9.5           28.125        18.625        3.95 \r\n 1981          243           6.2           26.3          21.125        2.5 \r\n 1981          244           16.9          22.95         17.225        0.775 \r\n 1981          245           23.9          25.35         12.625        0 \r\n 1981          246           22.9          26.575        14.4          0 \r\n 1981          247           22.5          27.275        14.825        0 \r\n 1981          248           22.2          27.15         14.2          0 \r\n 1981          249           22.8          27.45         13.55         0 \r\n 1981          250           5.8           22.95         15.375        12.551 \r\n 1981          251           22.8          25            11            0 \r\n 1981          252           21.8          27.95         12.775        0 \r\n 1981          253           21.9          32.15         15.3          0 \r\n 1981          254           17            31.575        15.875        0 \r\n 1981          255           21.1          31.65         16.225        0 \r\n 1981          256           19.7          31.05         17.075        0 \r\n 1981          257           15.4          29.925        17.2          1.425 \r\n 1981          258           20.5          25.1          12.425        0 \r\n 1981          259           15.2          18.375        8.55          0 \r\n 1981          260           20.3          18.5          7.225         0 \r\n 1981          261           19.9          21.875        6.025         0 \r\n 1981          262           19.8          27.75         8.475         0 \r\n 1981          263           19            29.5          11.8          0 \r\n 1981          264           16.8          29.075        14.5          0 \r\n 1981          265           17.9          21.05         8.725         0 \r\n 1981          266           16.4          22.675        6.65          4.975 \r\n 1981          267           5.7           21.3          12.4          22.351 \r\n 1981          268           2.7           23.075        13.725        29.701 \r\n 1981          269           7.3           25.625        17.9          21.276 \r\n 1981          270           17.8          21.625        9             0 \r\n 1981          271           17.3          20.9          4.65          0 \r\n 1981          272           8.2           26.175        12.075        1.075 \r\n 1981          273           11.3          28.5          17.825        0 \r\n 1981          274           18.8          26.225        10.85         0 \r\n 1981          275           19.8          17.075        1.85          0 \r\n 1981          276           13.3          19.85         4.175         0 \r\n 1981          277           15.4          28.575        11.1          15.6 \r\n 1981          278           6             26.225        13.325        3.575 \r\n 1981          279           16.7          23.65         9.275         0.9 \r\n 1981          280           17.9          19.325        3.175         0 \r\n 1981          281           16.7          20.225        4.7           0 \r\n 1981          282           8.5           20.525        5.075         0 \r\n 1981          283           14            23.175        10.6          3.175 \r\n 1981          284           15.9          22.6          7.125         0 \r\n 1981          285           13.8          23.925        8.775         0 \r\n 1981          286           1.1           19.075        12.4          5.225 \r\n 1981          287           2.1           19.475        14.975        47.65 \r\n 1981          288           11.6          20.325        12.125        0.7 \r\n 1981          289           13.8          21.6          6.225         0 \r\n 1981          290           1.3           20.9          11.625        18.4 \r\n 1981          291           10.3          17.15         5.125         1.5 \r\n 1981          292           14.3          16.15        -2             0 \r\n 1981          293           13.3          22.15         7.8           0 \r\n 1981          294           10.5          15.775        6.15          0 \r\n 1981          295           13.1          10.975        1.9           0 \r\n 1981          296           10.9          4.975        -4.075         0 \r\n 1981          297           5.6           7.775        -4.075         0 \r\n 1981          298           2.3           8.025         2.425         0 \r\n 1981          299           4             9.75          1.575         0 \r\n 1981          300           11.2          17.575        0.125         0 \r\n 1981          301           7.9           19            4.75          0 \r\n 1981          302           11            20.4          6             0 \r\n 1981          303           9.7           22.275        8.375         0 \r\n 1981          304           3.8           21.25         11.3          2.2 \r\n 1981          305           9.2           22.3          13.175        4.825 \r\n 1981          306           3.2           19.475        14.95         7.025 \r\n 1981          307           9.3           21.8          12.6          10.326 \r\n 1981          308           3.3           18.025        12.425        11.951 \r\n 1981          309           7.4           15.825        7.375         0 \r\n 1981          310           11.8          14.75         1.575         0 \r\n 1981          311           11.8          17.75         3.15          0 \r\n 1981          312           5.7           14            5.825         0 \r\n 1981          313           11.8          7.75         -3.175         0 \r\n 1981          314           10.9          12.05        -1.9           0 \r\n 1981          315           10.8          11.75        -0.95          0 \r\n 1981          316           10.2          13.8         -1.075         0 \r\n 1981          317           10.5          15.325        1.55          0 \r\n 1981          318           10            17.175        2.1           0 \r\n 1981          319           3.4           13.85         6.525         4.125 \r\n 1981          320           10            14.7          3.875         4.95 \r\n 1981          321           9.8           14.9          1.55          0 \r\n 1981          322           8.2           16.55         2.75          0 \r\n 1981          323           1.6           12.1          2.125         2.625 \r\n 1981          324           8.2           1.5          -4.175         0 \r\n 1981          325           5.9           2.15         -6.15          0 \r\n 1981          326           8.5           5.125        -4.475         0 \r\n 1981          327           1.4           4.15         -0.35          4.525 \r\n 1981          328           8.9           6.65         -2.725         0 \r\n 1981          329           2.5           5.825        -0.35          0 \r\n 1981          330           2.8           12.65         4.1           6.275 \r\n 1981          331           8.6           5.2          -3.6           0 \r\n 1981          332           8.2           5.35         -4.875         0 \r\n 1981          333           8.5           6.8          -3.45          0 \r\n 1981          334           2.9           3.1          -1.35          11.851 \r\n 1981          335           2.7           5.425         0.225         3.1 \r\n 1981          336           7.3           3.675        -6.525         0 \r\n 1981          337           2.9           3.85         -4.725         2.3 \r\n 1981          338           8.1           2.9          -4.625         0 \r\n 1981          339           6.8           5.875        -3.2           0 \r\n 1981          340           8.5           9.15         -0.85          0 \r\n 1981          341           4.5           8.575         1.275         0 \r\n 1981          342           8.8           4.45         -3.85          0 \r\n 1981          343           8.1           1.775        -5.55          0 \r\n 1981          344           6.5           2.575        -8.325         0 \r\n 1981          345           8.3           5.175        -4.275         0 \r\n 1981          346           2.8           3.1          -4             0 \r\n 1981          347           3.2           4.925        -2.7           0 \r\n 1981          348           5.8           2.525        -4.575         0 \r\n 1981          349           4.9          -1.975        -8.175         0 \r\n 1981          350           2.4          -4.35         -10.725        0 \r\n 1981          351           6.8          -5.25         -11.6          0 \r\n 1981          352           8            -6.725        -13.7          0 \r\n 1981          353           8.5          -6.125        -15.075        0 \r\n 1981          354           4.6          -1.925        -14.875        0.975 \r\n 1981          355           3.4           1.9          -2.625         6.875 \r\n 1981          356           3.3           1.1          -5.5           0 \r\n 1981          357           8.3           0.2          -13            0 \r\n 1981          358           8.5           1.2          -10.875        0 \r\n 1981          359           6             1.15         -10.125        0 \r\n 1981          360           7.6           2.125        -3.2           0 \r\n 1981          361           6.9           0.5          -6.925         0 \r\n 1981          362           4.5          -2.275        -9.55          4 \r\n 1981          363           8.3          -3.55         -13.175        0 \r\n 1981          364           4.1           0.525        -10.775        0 \r\n 1981          365           3.1           2.225        -9.025         7.6 \r\n 1982          1             5.2          -8.525        -20.9          0 \r\n 1982          2             2.1           3.4          -9.6           12.875 \r\n 1982          3             3.8           3.5          -11.95         3.125 \r\n 1982          4             6.6          -1.95         -8.35          11.025 \r\n 1982          5             7.3           3.15         -14.025        0 \r\n 1982          6             7.4          -2.375        -13.475        0 \r\n 1982          7             8.3          -12.85        -18.8          0 \r\n 1982          8             4.5          -5.725        -21.55         0 \r\n 1982          9             8.7          -7.925        -22.725        0 \r\n 1982          10            9            -19.8         -33.25         0 \r\n 1982          11            8.2          -12.5         -22            0 \r\n 1982          12            2.6          -10.5         -15.825        2.725 \r\n 1982          13            6.4          -6.4          -14.875        1.4 \r\n 1982          14            7.4          -11.175       -20.025        0 \r\n 1982          15            4.9          -3.2          -20.275        1.3 \r\n 1982          16            10.1         -8.325        -26.85         0 \r\n 1982          17            4.9          -10.1         -30.7          0 \r\n 1982          18            6.1          -3.1          -14.225        0 \r\n 1982          19            8.4           0.65         -12.225        0 \r\n 1982          20            4.5          -0.6          -8.7           1.675 \r\n 1982          21            9.3          -3.375        -14.1          0 \r\n 1982          22            5.3           3.625        -9.85          2.125 \r\n 1982          23            8.4           4.9          -12.95         0 \r\n 1982          24            9.9          -12.5         -22.975        0 \r\n 1982          25            9.1          -10.325       -13.975        4.6 \r\n 1982          26            9.4          -7.425        -21.975        0 \r\n 1982          27            10.1          5.075        -8.325         0 \r\n 1982          28            11.8          3.375        -8.3           0 \r\n 1982          29            5.4           2.6          -10.65         3.9 \r\n 1982          30            5.4           2.3          -5.75          2.175 \r\n 1982          31            6.5          -7.225        -10.825        0 \r\n 1982          32            6.7          -5.325        -20.875        0 \r\n 1982          33            5.1          -2            -11.725        0 \r\n 1982          34            4.8          -5.4          -13.825        0 \r\n 1982          35            9.8          -10.1         -26.45         0.35 \r\n 1982          36            3.7          -10.65        -14.175        3.775 \r\n 1982          37            11.8         -8.7          -25.65         0 \r\n 1982          38            12.1         -0.2          -15.8          0 \r\n 1982          39            7.1          -4.25         -14.075        0 \r\n 1982          40            12.1         -7.825        -15.775        0 \r\n 1982          41            6.7          -9.65         -25.25         0 \r\n 1982          42            12.2         -0.55         -17.675        0 \r\n 1982          43            9.8          -0.525        -8.875         0 \r\n 1982          44            8.7           1.575        -12.05         0 \r\n 1982          45            8.4           3.875        -6.125         0 \r\n 1982          46            8             4.2           3.375         0 \r\n 1982          47            2.5           4.65          2.85          3.2 \r\n 1982          48            3.4           2.75          0.35          0.6 \r\n 1982          49            4.5           2.6           1.4           3.275 \r\n 1982          50            8.5           4.325        -3.725         0 \r\n 1982          51            11.1          6.05          3.925         0 \r\n 1982          52            15.4          5.15         -2.775         0 \r\n 1982          53            15            12.125       -2.45          0 \r\n 1982          54            8.5           9.15          2.025         0 \r\n 1982          55            15.4          4.675        -3.85          0 \r\n 1982          56            15.2          4.05         -5.05          0 \r\n 1982          57            16.7          6.875        -4.425         0 \r\n 1982          58            17.1          8.95         -3.975         0 \r\n 1982          59            15.9          11.975       -2.1           0.35 \r\n 1982          60            9.9           8.725        -0.425         0 \r\n 1982          61            1.2           2.875        -2.2           2.575 \r\n 1982          62            10.6          0.675        -6.45          0 \r\n 1982          63            5.6          -3.675        -7.35          10.626 \r\n 1982          64            12.4         -3.05         -12.8          0 \r\n 1982          65            15.8         -2.325        -15.45         0 \r\n 1982          66            17.6         -5.525        -19.55         0 \r\n 1982          67            8.3           0.425        -14.9          3.575 \r\n 1982          68            7.4          -4.15         -18.6          0 \r\n 1982          69            9.8           8.65         -5.6           0 \r\n 1982          70            16.6          7.4           0.3           0 \r\n 1982          71            2.9           16.875        0.55          4.575 \r\n 1982          72            18.5          15.525        0.775         1.325 \r\n 1982          73            5.8           11.05         2.55          2.975 \r\n 1982          74            4.7           9.925         1.45          1.05 \r\n 1982          75            14.7          14.675        4.55          9.5 \r\n 1982          76            18.7          14.9          0.325         0 \r\n 1982          77            13.7          16.7          3.275         0 \r\n 1982          78            4.2           10            3.975         29.751 \r\n 1982          79            9.9           13.375        1.7           1.05 \r\n 1982          80            17.3          9.325        -1.775         0 \r\n 1982          81            20.4          11.35        -2.6           0 \r\n 1982          82            19.2          14.325        1.2           0 \r\n 1982          83            8.7           10.425        2.725         0 \r\n 1982          84            15.1          6.5           0.775         0 \r\n 1982          85            20.2          4.975        -4.2           0 \r\n 1982          86            23.4          5.6          -5.175         0 \r\n 1982          87            23.2          9.975        -3.25          0 \r\n 1982          88            19.1          14.35        -0.55          0 \r\n 1982          89            16.4          19.05         9.4           18.776 \r\n 1982          90            23.9          16.675        6.475         0 \r\n 1982          91            19.2          19.8          3.175         3.625 \r\n 1982          92            5.9           22.1          8.875         3.425 \r\n 1982          93            17.5          18.15        -5             5.075 \r\n 1982          94            13            5.45         -7.8           0.825 \r\n 1982          95            6.5           0.925        -3.3           7.575 \r\n 1982          96            23.2          1.025        -15.525        0 \r\n 1982          97            7.7           1.7          -6.2           1.7 \r\n 1982          98            6.7           1.825        -4.325         6.675 \r\n 1982          99            17            5            -5             0 \r\n 1982          100           17.3          7.4          -0.35          0 \r\n 1982          101           23.7          13.35        -2.45          0 \r\n 1982          102           10.9          21.05         4.7           0 \r\n 1982          103           23.1          17.3          5.025         0 \r\n 1982          104           22            19.45         3.625         2.625 \r\n 1982          105           20.5          23.95         6.25          3.675 \r\n 1982          106           2.3           21.95         15.9          21.825 \r\n 1982          107           21.5          18            4.875         1 \r\n 1982          108           23.3          18.625        4.25          0 \r\n 1982          109           15.7          18.875        6.375         0 \r\n 1982          110           25            13.925        4.275         0 \r\n 1982          111           25.9          14.9         -1             0.6 \r\n 1982          112           26.5          17.3          2.225         0 \r\n 1982          113           27.2          19.5          4.975         0 \r\n 1982          114           25.9          21.5          6.25          0 \r\n 1982          115           21.3          21.225        8.875         0 \r\n 1982          116           16.4          19.525        12.8          0 \r\n 1982          117           25.2          16.775        3.325         0 \r\n 1982          118           6.3           12.75         3.9           0 \r\n 1982          119           21.2          18.05         5.925         0 \r\n 1982          120           18            20.825        6.875         0 \r\n 1982          121           21.3          23.975        10.8          0 \r\n 1982          122           23.9          25.525        11.05         0 \r\n 1982          123           23.8          26.25         11.525        0 \r\n 1982          124           18.2          27.2          13.3          16.725 \r\n 1982          125           9.2           26.55         17.35         13.275 \r\n 1982          126           4.1           22            12.425        6.075 \r\n 1982          127           21.9          21.25         6.125         0 \r\n 1982          128           16.9          24.375        9.075         0 \r\n 1982          129           25            26.65         11.675        0 \r\n 1982          130           27.5          26.975        12.25         0 \r\n 1982          131           13.6          27.725        14.275        2.6 \r\n 1982          132           16.4          27.575        17.175        4.125 \r\n 1982          133           5.2           24.35         16.8          2.175 \r\n 1982          134           7.3           25.325        15.525        0 \r\n 1982          135           12            24.35         15.5          1.95 \r\n 1982          136           11.4          26.125        14.35         3.875 \r\n 1982          137           9.1           25.7          16.625        4.175 \r\n 1982          138           8             22.75         16.1          7.825 \r\n 1982          139           17.5          26.45         14.45         15.05 \r\n 1982          140           9.3           25.075        16.025        9.6 \r\n 1982          141           7.4           23.7          13.575        8.925 \r\n 1982          142           9.3           20.85         11.15         0 \r\n 1982          143           24.2          24.35         11.35         0 \r\n 1982          144           17.7          23.875        12.875        0 \r\n 1982          145           16.3          24.15         13.2          0 \r\n 1982          146           12.2          23.825        15.6          15.85 \r\n 1982          147           13.1          23.25         15.65         4.825 \r\n 1982          148           22.4          27.3          13.65         0 \r\n 1982          149           6.1           25.2          18.25         10.8 \r\n 1982          150           14.8          27.3          17.325        6 \r\n 1982          151           10.2          23.25         16.5          4.95 \r\n 1982          152           30.7          22.625        7.225         0 \r\n 1982          153           17.7          23.725        10.8          1.175 \r\n 1982          154           14.1          19.275        11.175        2.2 \r\n 1982          155           24.5          22.375        8.475         0 \r\n 1982          156           29.3          24.65         9.625         0 \r\n 1982          157           24.6          27            13.1          0 \r\n 1982          158           20.3          28.8          18.975        2.5 \r\n 1982          159           24.4          27.825        13.2          0 \r\n 1982          160           7.9           25.8          18.15         4.9 \r\n 1982          161           30.2          24.475        8.75          0 \r\n 1982          162           15.3          25            11.725        0.9 \r\n 1982          163           23.3          25.6          13.425        4.25 \r\n 1982          164           31.2          25.55         10.625        0 \r\n 1982          165           17.2          26            13.375        0 \r\n 1982          166           7.8           24.15         19.175        49.199 \r\n 1982          167           27            23.95         12.775        0 \r\n 1982          168           27.8          26.7          12.2          0 \r\n 1982          169           8.4           23.6          17.1          3.35 \r\n 1982          170           26.4          22.8          11.775        0 \r\n 1982          171           28.1          25.475        12.475        0 \r\n 1982          172           29.6          25.7          11.35         0 \r\n 1982          173           30.7          24.65         13.175        0 \r\n 1982          174           29.2          26.375        12.425        0 \r\n 1982          175           29.2          27.95         14            0 \r\n 1982          176           9.8           26.45         18.275        10.425 \r\n 1982          177           21.3          27.2          17.475        2.9 \r\n 1982          178           6.8           25.875        19.3          5.05 \r\n 1982          179           5.7           25.2          20.525        3.025 \r\n 1982          180           16.6          28.45         18.075        0 \r\n 1982          181           25.9          25            14.45         0 \r\n 1982          182           25.1          26.325        15.075        13.274 \r\n 1982          183           9.9           27.6          14.7          11.375 \r\n 1982          184           17            30.15         21.25         7.25 \r\n 1982          185           18            31.375        20.3          0 \r\n 1982          186           14.4          30.85         22.325        15.199 \r\n 1982          187           15.1          30.05         22.15         29.949 \r\n 1982          188           29.2          29.2          15.925        5.35 \r\n 1982          189           28.7          28.675        16.2          0 \r\n 1982          190           26.9          30.35         16.425        0 \r\n 1982          191           14.5          27.55         20.375        21.349 \r\n 1982          192           25            26.7          16.35         0 \r\n 1982          193           20.4          28.625        15.675        0 \r\n 1982          194           18.9          28.975        18.65         2.95 \r\n 1982          195           17.4          28.65         18.9          7.05 \r\n 1982          196           13            29.45         20.275        20.224 \r\n 1982          197           11.8          29.7          21.525        13.45 \r\n 1982          198           9.8           29.45         22.15         59.148 \r\n 1982          199           8.8           29.75         22.75         43.673 \r\n 1982          200           15.3          29.95         20.55         0 \r\n 1982          201           19.8          30.625        19.6          0 \r\n 1982          202           15            31.4          21.85         0 \r\n 1982          203           20            29            20.475        0 \r\n 1982          204           27.1          29.125        16.9          0 \r\n 1982          205           27            30.1          19.15         0 \r\n 1982          206           25.5          31.4          18.875        0 \r\n 1982          207           20.2          31.225        20.625        3.125 \r\n 1982          208           15.4          29.8          21.6          4.85 \r\n 1982          209           27.2          28.325        16.35         0 \r\n 1982          210           20            28.675        17.875        0 \r\n 1982          211           26.4          28.15         17.875        0 \r\n 1982          212           26.9          29.275        15.975        0 \r\n 1982          213           23.3          30.4          18.05         0 \r\n 1982          214           21.3          31.575        19.25         0 \r\n 1982          215           16.3          31.75         21.15         1.575 \r\n 1982          216           18.4          32.65         23.075        20.05 \r\n 1982          217           7.5           29.825        23.7          21.35 \r\n 1982          218           11.4          28            22.4          16.2 \r\n 1982          219           12.1          28.55         22.15         21.276 \r\n 1982          220           26.2          28.15         19.225        0 \r\n 1982          221           20.6          24.15         13.85         0 \r\n 1982          222           22.4          23.05         13.85         1.425 \r\n 1982          223           26.8          23.775        11.375        0 \r\n 1982          224           25.6          24.525        11.375        0 \r\n 1982          225           24            27.15         15.45         0 \r\n 1982          226           23.1          27.475        15.475        0 \r\n 1982          227           13.4          28.075        17.475        0.8 \r\n 1982          228           22.1          28.675        18.825        0 \r\n 1982          229           18.1          28.7          17.875        0 \r\n 1982          230           18            29.175        18.55         0 \r\n 1982          231           19.8          30.75         18.3          0 \r\n 1982          232           22            28.1          22.4          0 \r\n 1982          233           23.4          28.1          14.5          0 \r\n 1982          234           11.9          29.075        15.8          10.85 \r\n 1982          235           22.4          27.975        16.55         0 \r\n 1982          236           11.3          26.825        16.55         2.05 \r\n 1982          237           22.9          26.9          12.75         0 \r\n 1982          238           10.5          24.4          14.975        0 \r\n 1982          239           18.5          24.4          15.825        0 \r\n 1982          240           20.9          23.725        9.1           0 \r\n 1982          241           17.6          27.675        11.3          1.525 \r\n 1982          242           9.8           27.025        19.35         28.801 \r\n 1982          243           8.8           27.425        18.125        2.55 \r\n 1982          244           11.6          30.375        21.95         4.6 \r\n 1982          245           23.7          26.1          17.625        0 \r\n 1982          246           24.3          25.1          12            0 \r\n 1982          247           23.9          26.675        12.8          0 \r\n 1982          248           21.1          28.875        15.3          0.675 \r\n 1982          249           4             23.85         18.1          29.201 \r\n 1982          250           11            23.475        15.35         0 \r\n 1982          251           19.4          26.225        14.15         0 \r\n 1982          252           21.5          28.2          14.825        0 \r\n 1982          253           11.5          28.925        19            1.4 \r\n 1982          254           16.8          29.8          19.025        0 \r\n 1982          255           15.5          28.825        19.125        1.025 \r\n 1982          256           4.7           27.1          21.025        9.6 \r\n 1982          257           7.6           26.375        20.825        6.475 \r\n 1982          258           17.1          23.675        15.65         0 \r\n 1982          259           11.5          20.625        9.075         13.651 \r\n 1982          260           6.9           24            12.1          14.401 \r\n 1982          261           20            19.15         9.225         0 \r\n 1982          262           17.4          23.45         8.75          0 \r\n 1982          263           17.1          18.5          6.625         0 \r\n 1982          264           19.7          18.225        3.475         0 \r\n 1982          265           19.4          21.45         5.45          0 \r\n 1982          266           6.9           22.125        8.9           0 \r\n 1982          267           15.3          21.35         11.15         0 \r\n 1982          268           15.4          19.775        7.3           0 \r\n 1982          269           16.5          21.15         7.375         0 \r\n 1982          270           17            21.625        7.95          0 \r\n 1982          271           14            26.45         10.65         0 \r\n 1982          272           12.3          28.475        15.375        0 \r\n 1982          273           9.4           27.75         14.925        0 \r\n 1982          274           11.6          28.6          16.975        0 \r\n 1982          275           10.8          27.65         15.325        0 \r\n 1982          276           18.4          25.25         11.4          0 \r\n 1982          277           17.1          27            11.45         0 \r\n 1982          278           11.6          28.1          15.275        2.8 \r\n 1982          279           8.7           28.425        17.1          2 \r\n 1982          280           17.7          22.6          6.6           0 \r\n 1982          281           12.1          26.275        10.15         3.7 \r\n 1982          282           11.7          24.725        16.4          22.625 \r\n 1982          283           11.1          17.575        9.25          0 \r\n 1982          284           13.2          17.425        8.15          0 \r\n 1982          285           14.1          19.1          5.775         0 \r\n 1982          286           11.4          16.475        5.85          0 \r\n 1982          287           15.1          20.075        5.225         0 \r\n 1982          288           14.8          20.875        7.7           0 \r\n 1982          289           15.2          16.1          2.75          0 \r\n 1982          290           6.7           16.95         4.75          0 \r\n 1982          291           9.6           21.675        7.55          2.875 \r\n 1982          292           3.5           17.925        12.325        16.05 \r\n 1982          293           13.4          17.725        1.975         1.4 \r\n 1982          294           14            11.3         -3.1           0 \r\n 1982          295           13.6          13.05        -1             0 \r\n 1982          296           13.2          15.125       -0.025         0 \r\n 1982          297           13.3          15.675        0.525         0 \r\n 1982          298           12.6          18.025        1.8           0 \r\n 1982          299           10.5          18.175        3.45          0 \r\n 1982          300           3.6           15.875        5.075         5.975 \r\n 1982          301           3.4           19.2          11.25         3.85 \r\n 1982          302           11.8          17.325        5.65          4.775 \r\n 1982          303           8.8           20.1          7.7           0 \r\n 1982          304           7.2           23.3          10.875        0 \r\n 1982          305           2.4           21.65         16.95         17.926 \r\n 1982          306           7.5           19.85         9.45          1.85 \r\n 1982          307           12.3          10.575        2.05          0 \r\n 1982          308           11.2          3.475        -4.025         0 \r\n 1982          309           11.8          6.025        -4.25          0 \r\n 1982          310           11.5          12.05        -2.825         0 \r\n 1982          311           7.4           18.725        2.9           0 \r\n 1982          312           4.1           15.225        5.825         1.05 \r\n 1982          313           3.6           14.75         6.425         2.9 \r\n 1982          314           4.3           18.35         8.25          3.475 \r\n 1982          315           2.2           19.1          7.475         17.301 \r\n 1982          316           10            17.95        -5.475         10.301 \r\n 1982          317           7             0.15         -8.55          0 \r\n 1982          318           10.1          2.475        -4.175         0 \r\n 1982          319           10.5          4.925        -5.875         0 \r\n 1982          320           8.8           8.35         -2.525         0 \r\n 1982          321           10            10.8         -0.9           0 \r\n 1982          322           5.3           12.9          1.25          0 \r\n 1982          323           1.8           15.95         9.35          2.25 \r\n 1982          324           3.9           19.85         10.825        0 \r\n 1982          325           9.1           11.825        0.8           0 \r\n 1982          326           2.3           7.15         -0.15          0.925 \r\n 1982          327           3.4           4.45         -3.95          2.05 \r\n 1982          328           9.4           1.725        -7.275         0 \r\n 1982          329           5.4           4.725        -4.3           0 \r\n 1982          330           3.5           3.05         -1.1           0 \r\n 1982          331           5.8           3.8          -4.35          0 \r\n 1982          332           3.2           4.1          -0.5           18.001 \r\n 1982          333           4.6           5.85         -0.9           0 \r\n 1982          334           1.1           6.975        -0.275         0 \r\n 1982          335           2.6           14.775        5.925         4.875 \r\n 1982          336           2.5           21.7          14.15         36.525 \r\n 1982          337           2.4           19.75         6.025         5.125 \r\n 1982          338           4.4           10.05         2.45          0.8 \r\n 1982          339           1.2           8.775         5.575         33.2 \r\n 1982          340           8.5           7.075        -3.95          1.1 \r\n 1982          341           4.5           3.675        -0.875         0 \r\n 1982          342           6.2           0.45         -4.95          0 \r\n 1982          343           9.1          -1.225        -9.325         0 \r\n 1982          344           5.1           4.225        -3.425         0 \r\n 1982          345           9.3          -1.025        -11.85         0 \r\n 1982          346           8.9          -2.85         -13.15         0 \r\n 1982          347           7.9           2.5          -7.575         0 \r\n 1982          348           5             4.4          -1.8           0 \r\n 1982          349           5             2.85         -0.975         0 \r\n 1982          350           8.2           2.825        -5.25          0 \r\n 1982          351           5.1           4.35         -5.275         0 \r\n 1982          352           4.8           8.75          1.675         0 \r\n 1982          353           7.9           3.925        -0.25          0 \r\n 1982          354           8             4.3          -0.75          0 \r\n 1982          355           8             5.275        -4.5           0 \r\n 1982          356           3.3           7            -0.825         0 \r\n 1982          357           1             8.15          4.875         2.7 \r\n 1982          358           1.7           15.275        6.55          8.675 \r\n 1982          359           6.7           14.05         1.075         1.5 \r\n 1982          360           7.9           4.8          -4.625         0 \r\n 1982          361           2.1           7.325         0.2           3.975 \r\n 1982          362           7.5           14.075       -5.675         8.475 \r\n 1982          363           8.3          -2.7          -8.2           0 \r\n 1982          364           7.1           2.15         -7.775         0 \r\n 1982          365           8.2           3.35         -3.125         0 \r\n 1983          1             7.7           4.975        -5.375         0 \r\n 1983          2             5.4           1.225        -5.9           0 \r\n 1983          3             6.6           0.125        -9.9           0 \r\n 1983          4             3.9           2.35         -4.325         0 \r\n 1983          5             4.1           2.6          -3.95          0 \r\n 1983          6             5.3           8.925        -1.675         0 \r\n 1983          7             7.4           3.5          -4.3           0 \r\n 1983          8             8.2           4.8          -5.425         0 \r\n 1983          9             3.8           4.35         -2.625         0 \r\n 1983          10            2             4.2           1.2           3.125 \r\n 1983          11            5.7           1.475        -4.95          0 \r\n 1983          12            5.3           1.025        -10.875        0 \r\n 1983          13            8             4.65         -5.3           0 \r\n 1983          14            6.9           2.75         -3.825         0 \r\n 1983          15            9.2          -1.05         -10.2          0 \r\n 1983          16            7.7          -0.275        -10.1          0 \r\n 1983          17            9.3          -3.875        -9.825         0 \r\n 1983          18            9.1          -4.35         -14.9          0 \r\n 1983          19            6.3          -1.425        -9.7           0 \r\n 1983          20            8.8           2.125        -6.375         0 \r\n 1983          21            5.8           2.2          -6.175         0 \r\n 1983          22            1.6           2.4          -1.125         3.1 \r\n 1983          23            4.9           4.6          -0.1           0 \r\n 1983          24            8.5           3.225        -1.275         0 \r\n 1983          25            6.8          -0.625        -5.8           0 \r\n 1983          26            5.9          -1.5          -5.575         1.825 \r\n 1983          27            10.3         -0.375        -11.95         0 \r\n 1983          28            6.1           4.575        -3.35          0.8 \r\n 1983          29            3             3.9          -0.05          1.325 \r\n 1983          30            10.8          1.65         -5.6           0 \r\n 1983          31            8.4           0.05         -7.95          0 \r\n 1983          32            3.6           0.85         -5.725         7.626 \r\n 1983          33            3.2          -1.15         -4.075         9.701 \r\n 1983          34            7.1          -4.95         -9.4           1.65 \r\n 1983          35            11.7         -7.625        -20.225        0 \r\n 1983          36            4.7           0.175        -12.225        3.475 \r\n 1983          37            6.6          -2.25         -8.525         5.425 \r\n 1983          38            10.7         -4.875        -19.5          0 \r\n 1983          39            5.8           1.125        -9.025         0 \r\n 1983          40            5.2           2.225        -2.75          0 \r\n 1983          41            8.4           4.925        -0.75          0 \r\n 1983          42            10            2.925        -3.5           0 \r\n 1983          43            12.8          7.15         -5.35          0 \r\n 1983          44            11.6          9.825        -1.225         0 \r\n 1983          45            4.4           8.65          1             0 \r\n 1983          46            3.1           7             1.7           0 \r\n 1983          47            10.9          9.725         1.175         4.925 \r\n 1983          48            10            8.725        -0.55          0 \r\n 1983          49            9             12.3         -0.475         0 \r\n 1983          50            9.6           17.35         3.1           0 \r\n 1983          51            12.8          18.55         3.675         0 \r\n 1983          52            8.3           13.825        2.025         1.55 \r\n 1983          53            6.4           11.5          3.85          1.4 \r\n 1983          54            11.1          9            -1.525         0 \r\n 1983          55            15.2          5.7           0             1.3 \r\n 1983          56            16.6          3.825        -4.975         0 \r\n 1983          57            15.9          8.25         -2.775         0 \r\n 1983          58            5.9           7.875         0.475         0 \r\n 1983          59            15.6          14.6          2.25          0 \r\n 1983          60            9             15.925        3.3           0 \r\n 1983          61            8.6           16.875        3.825         0 \r\n 1983          62            8.5           20.7          6.75          0 \r\n 1983          63            6.7           20.8          10.8          0 \r\n 1983          64            4.8           20.05         13.025        7.8 \r\n 1983          65            6.2           17.6          10.5          6.575 \r\n 1983          66            11.9          13.3          5.7           0 \r\n 1983          67            8.4           6            -2.775         0 \r\n 1983          68            4.1           0.875        -4.25          0 \r\n 1983          69            12.1          1.725        -5.8           0 \r\n 1983          70            12.5          5.125        -2.925         0 \r\n 1983          71            15.9          8.875        -2.5           0 \r\n 1983          72            16.3          16.2          0.425         0 \r\n 1983          73            18.2          11.725       -0.8           0 \r\n 1983          74            9             14.65         2.175         0.5 \r\n 1983          75            15.4          16.325        2.35          0 \r\n 1983          76            7.6           12.8          2.45          0 \r\n 1983          77            4             8.575         3.075         0 \r\n 1983          78            6.3           6.1          -0.475         0 \r\n 1983          79            4.6           3.275        -2.7           6.55 \r\n 1983          80            7.5          -0.725        -5.625         1.1 \r\n 1983          81            22            1.925        -6.85          0 \r\n 1983          82            20.2          5.55         -4.1           0.5 \r\n 1983          83            21.4          5.975        -3.975         0 \r\n 1983          84            11.3          4.85         -4.825         1.4 \r\n 1983          85            4.3           6.8          -0.425         8.675 \r\n 1983          86            3.6           6.05          1.775         12.151 \r\n 1983          87            22            6.675        -3.7           0 \r\n 1983          88            15.6          10.625       -0.725         0 \r\n 1983          89            9.3           11.55         3.1           3.475 \r\n 1983          90            7.4           11.975        3.825         6.65 \r\n 1983          91            2.2           9.3           5.725         14.15 \r\n 1983          92            1.5           5.2           1.85          37.075 \r\n 1983          93            13.8          8.25          0.5           2.05 \r\n 1983          94            6             8.275        -0.7           2.725 \r\n 1983          95            3.8           9.35          1.825         3.65 \r\n 1983          96            7.6           11.125        2.725         0.9 \r\n 1983          97            19.5          11.575       -1.925         0 \r\n 1983          98            8.6           9.925         0.7           1.525 \r\n 1983          99            4.4           8.2           2.475         16.9 \r\n 1983          100           11            10.1          1.225         0 \r\n 1983          101           20.1          15.425       -0.35          0 \r\n 1983          102           7.1           16.7          4.65          1.925 \r\n 1983          103           9.8           14.775        10.675        6.075 \r\n 1983          104           12.7          9.275         2.875         2.85 \r\n 1983          105           25.7          8.9          -4.05          0 \r\n 1983          106           14.4          10.25        -1.525         0 \r\n 1983          107           5.7           4.9          -3.725         0 \r\n 1983          108           26.1          8.175        -3.75          0 \r\n 1983          109           26.5          10.8         -2.55          0 \r\n 1983          110           25.9          14.075        0.35          0 \r\n 1983          111           22.6          17.9          3.125         0 \r\n 1983          112           22.2          20.2          7.65          0 \r\n 1983          113           14.9          17.825        7.275         0 \r\n 1983          114           27.1          16.475        2.575         0 \r\n 1983          115           27.2          21.075        6             0 \r\n 1983          116           17.4          23.05         8.3           0.8 \r\n 1983          117           22.2          20.05         9.35          0 \r\n 1983          118           26.5          19.8          7.1           1 \r\n 1983          119           8.5           16.45         10.225        0 \r\n 1983          120           27            21.25         9.45          0 \r\n 1983          121           6.9           21.675        9.4           15.55 \r\n 1983          122           4.9           20.3          9.225         4.175 \r\n 1983          123           10.3          15.55         6             2.3 \r\n 1983          124           26.3          18.125        6.8           0 \r\n 1983          125           24.4          21.925        5.525         0 \r\n 1983          126           21.1          25.675        12.475        1.875 \r\n 1983          127           6.9           21.75         10.625        2.75 \r\n 1983          128           28.8          16.975        2.75          0 \r\n 1983          129           28.6          18.15         1.65          0 \r\n 1983          130           27.7          22.55         5.925         0 \r\n 1983          131           18.8          25.9          8.875         2.775 \r\n 1983          132           17            25.8          16.3          6.325 \r\n 1983          133           5             23.925        16.2          1.7 \r\n 1983          134           10            20.875        11.175        0 \r\n 1983          135           29.9          18.775        3.625         0 \r\n 1983          136           16.6          20.375        6.55          0 \r\n 1983          137           14.4          19.85         9.75          1.95 \r\n 1983          138           7.8           19.175        10.35         11.725 \r\n 1983          139           23.3          21.45         12.85         1.95 \r\n 1983          140           12.5          21.55         9.625         4.175 \r\n 1983          141           12.1          23.25         11.275        0 \r\n 1983          142           14.4          23.975        15.4          2.45 \r\n 1983          143           31.2          21.525        8.125         0 \r\n 1983          144           24.6          25.1          11.3          0 \r\n 1983          145           30.5          20.95         13.25         2.7 \r\n 1983          146           31.2          20.825        5.8           0 \r\n 1983          147           16            25.2          9.75          5.175 \r\n 1983          148           11.2          23.575        15.7          4.15 \r\n 1983          149           22.8          21.125        10.2          0 \r\n 1983          150           22.7          18.6          6.55          0 \r\n 1983          151           23.7          19.9          8.15          0 \r\n 1983          152           25.3          25.475        8.75          0 \r\n 1983          153           20.6          26.125        13.1          1.425 \r\n 1983          154           15.4          26.225        15.125        3.95 \r\n 1983          155           26.2          28.675        12.35         1.175 \r\n 1983          156           14.4          24.55         11.625        0 \r\n 1983          157           30.7          23.45         9             0 \r\n 1983          158           30.7          27.9          9.9           0 \r\n 1983          159           29.7          29.3          13.1          0 \r\n 1983          160           17.6          29.55         14.975        3.025 \r\n 1983          161           18.4          29.65         16.75         0 \r\n 1983          162           18.2          29.55         16.775        0 \r\n 1983          163           20            29.7          19.1          0 \r\n 1983          164           22.9          30.925        18.3          0 \r\n 1983          165           14            27.65         19.75         0 \r\n 1983          166           27.2          29.9          13.625        0 \r\n 1983          167           25.9          29.55         13.65         0 \r\n 1983          168           24.7          28.875        14.3          0 \r\n 1983          169           11.3          27.95         16.225        6.95 \r\n 1983          170           17.6          29.525        19.2          4.4 \r\n 1983          171           10.6          30.225        18.575        0 \r\n 1983          172           9.9           30.525        22.175        0 \r\n 1983          173           28.9          32.7          20.375        0 \r\n 1983          174           19.3          32.925        20.625        0 \r\n 1983          175           10.6          31.55         21.775        1.275 \r\n 1983          176           13.2          31.6          21.75         0 \r\n 1983          177           19            32.55         21.45         1.55 \r\n 1983          178           14            29.25         22.05         18.75 \r\n 1983          179           11.8          28.825        21.6          16.45 \r\n 1983          180           9.3           29.1          21.825        12.25 \r\n 1983          181           22            31.4          20.55         9.55 \r\n 1983          182           20.402        31.8          22.575        12.7 \r\n 1983          183           14.927        31.2          23.05         5.575 \r\n 1983          184           21.926        32.625        22.35         4.175 \r\n 1983          185           26.799        30.75         18.325        5.45 \r\n 1983          186           26.25         27.725        15.95         0 \r\n 1983          187           30.35         28.55         12.1          0 \r\n 1983          188           30.65         29.35         13            0 \r\n 1983          189           29.875        31.9          14.8          0 \r\n 1983          190           29.275        33.475        18.325        0 \r\n 1983          191           29.25         33.375        18.8          0 \r\n 1983          192           27.975        35.15         20.025        0 \r\n 1983          193           29.3          33.425        19.825        0 \r\n 1983          194           25            32.85         21.2          0.5 \r\n 1983          195           19.675        34            22.1          0 \r\n 1983          196           20.749        33.3          21.4          0 \r\n 1983          197           24.8          30.95         21.425        0 \r\n 1983          198           26.2          32.15         22.225        0 \r\n 1983          199           21.101        32.35         22.025        0.875 \r\n 1983          200           17.352        35.075        22.9          0 \r\n 1983          201           28.7          36.4          24.3          0 \r\n 1983          202           28.95         36.975        23.45         0 \r\n 1983          203           28.525        37.175        23.7          0 \r\n 1983          204           19.152        34.4          25            0 \r\n 1983          205           16.876        32            20.15         0 \r\n 1983          206           23.274        30.875        19.025        0.725 \r\n 1983          207           26.025        31.75         18.775        0 \r\n 1983          208           23.225        33.725        18.525        0 \r\n 1983          209           24.95         35.2          24.05         0 \r\n 1983          210           14.476        36.575        24.175        3.425 \r\n 1983          211           22.025        33.7          20.925        0 \r\n 1983          212           26.65         32.975        21.725        0 \r\n 1983          213           29.05         32.1          16.7          0 \r\n 1983          214           27.125        33.95         18.25         0 \r\n 1983          215           21.251        35.975        20.75         0.7 \r\n 1983          216           23.525        34.2          24.075        1.175 \r\n 1983          217           18.15         33.2          22.775        0 \r\n 1983          218           17.048        33.85         20.725        0 \r\n 1983          219           26.449        33.975        21.15         0 \r\n 1983          220           27            35.4          21.2          0 \r\n 1983          221           24.5          33.175        18.3          0 \r\n 1983          222           24.175        36.05         18.35         1 \r\n 1983          223           21.502        32.925        18.125        6.1 \r\n 1983          224           24.875        30.325        15.25         0 \r\n 1983          225           23.076        31.675        15.825        0 \r\n 1983          226           15.175        31.225        19.55         2.5 \r\n 1983          227           23.65         34.65         19.525        0 \r\n 1983          228           23.9          37.075        21.3          0 \r\n 1983          229           22.2          35.55         24.825        0.75 \r\n 1983          230           21.326        35.475        23.05         0 \r\n 1983          231           21.25         37.55         23.625        0 \r\n 1983          232           22.25         36.1          23.275        0 \r\n 1983          233           18.801        34.75         23.825        9.025 \r\n 1983          234           8.251         33.15         23.125        8.25 \r\n 1983          235           9.75          32            22.075        1.5 \r\n 1983          236           15.401        32.625        21.575        0 \r\n 1983          237           17.126        34.6          23.025        0 \r\n 1983          238           20.975        35.3          23.775        1.275 \r\n 1983          239           15.627        33.6          24.05         2.825 \r\n 1983          240           23.5          33.5          21.9          0 \r\n 1983          241           23.575        35.025        21.4          13.175 \r\n 1983          242           13.974        34.65         20.825        2.6 \r\n 1983          243           20.6          31.1          18.65         0 \r\n 1983          244           24.825        30.55         16.775        0 \r\n 1983          245           24.35         31.6          18.275        0 \r\n 1983          246           23.8          32.6          18.3          0 \r\n 1983          247           22.2          33.1          17.8          0 \r\n 1983          248           8.75          30.65         21.05         12.751 \r\n 1983          249           20.6          27.975        20.85         10.876 \r\n 1983          250           23.75         28.725        12.3          0 \r\n 1983          251           20.5          31.925        15.85         0 \r\n 1983          252           22.1          34.25         21.55         0 \r\n 1983          253           15.351        33.75         21.625        8.975 \r\n 1983          254           19.274        27.05         12.55         0 \r\n 1983          255           12.776        27.35         15.625        3.5 \r\n 1983          256           21.025        24.15         10.725        0 \r\n 1983          257           19.5          24.5          9.45          0 \r\n 1983          258           1.525         19.15         11.225        30.251 \r\n 1983          259           12.451        21.775        13.125        0 \r\n 1983          260           15.026        28.475        10.975        0.875 \r\n 1983          261           12.1          27.9          21.6          50.027 \r\n 1983          262           16.75         27.975        16.05         15.001 \r\n 1983          263           3.825         25.95         8.175         10.676 \r\n 1983          264           13.401        14.4          2.975         0 \r\n 1983          265           12.026        15.55         1.85          0 \r\n 1983          266           20.325        18.225        1.525         0 \r\n 1983          267           17.125        23.25         4.4           0 \r\n 1983          268           9.649         21.925        11.35         8.775 \r\n 1983          269           12.9          25.35         12.575        0 \r\n 1983          270           18.35         27.85         12.3          0 \r\n 1983          271           16.4          29.55         14            0 \r\n 1983          272           14.8          28.6          14.65         0 \r\n 1983          273           17.775        28.475        13.4          0 \r\n 1983          274           17.475        27.45         13.975        0 \r\n 1983          275           16.476        29.725        16            0 \r\n 1983          276           11.376        26.95         19.125        0 \r\n 1983          277           13.8          21.175        12.925        0 \r\n 1983          278           18.625        23.5          9.4           0 \r\n 1983          279           17.1          21.125        7.95          0 \r\n 1983          280           13.201        26.35         11.2          0 \r\n 1983          281           10.524        21.05         10.35         0 \r\n 1983          282           17.5          18.35         5.375         0 \r\n 1983          283           12.401        21.3          7.1           0 \r\n 1983          284           4.725         25.675        13.125        8.2 \r\n 1983          285           11.576        18.45         5.45          9.85 \r\n 1983          286           7.725         8.9           2             1.5 \r\n 1983          287           16.125        17.85         1.7           0 \r\n 1983          288           6.952         22.7          9.675         6 \r\n 1983          289           14.599        20.4          12.4          2.5 \r\n 1983          290           14.299        19.175        5.3           0 \r\n 1983          291           12.925        18.15         6.65          0 \r\n 1983          292           2.975         13.15         6.975         9.625 \r\n 1983          293           3.175         12.125        8.25          9.725 \r\n 1983          294           1.075         15.975        8.65          2.875 \r\n 1983          295           2.3           14.15         10.575        0 \r\n 1983          296           5.725         15.25         6.9           0 \r\n 1983          297           4.425         15.425        7.5           0 \r\n 1983          298           14.75         15.75         6.675         0 \r\n 1983          299           14.575        17.225        4.375         0 \r\n 1983          300           13.775        21.8          5.625         0 \r\n 1983          301           11.475        20.9          11.75         0 \r\n 1983          302           9.349         14.1          2.525         0 \r\n 1983          303           3.5           16.875        5.65          1.8 \r\n 1983          304           5.725         17.275        8.3           7.725 \r\n 1983          305           4.3           18.525        13.175        19.276 \r\n 1983          306           5.025         21.775        15.95         1.975 \r\n 1983          307           1.9           17.875        8.55          0 \r\n 1983          308           13.375        11.675        2.4           0 \r\n 1983          309           13            14.475        2.125         0 \r\n 1983          310           2.775         13.95         6.35          0 \r\n 1983          311           5.225         14.55         9             0 \r\n 1983          312           8.101         18.275        11.35         3.075 \r\n 1983          313           1.325         16.575        8.975         11.026 \r\n 1983          314           2.275         14.425        2.65          17.801 \r\n 1983          315           10.1          5.225        -2.8           0 \r\n 1983          316           5             2.55         -1.65          0.8 \r\n 1983          317           4.125         7.375        -0.05          1.05 \r\n 1983          318           3.6           9.825         3.4           0 \r\n 1983          319           2.725         7.925         3.15          0 \r\n 1983          320           9.975         7.975        -1.875         0 \r\n 1983          321           9.025         9.375        -1             0 \r\n 1983          322           7.15          12            4.25          1.2 \r\n 1983          323           4.05          19.275        11.6          11.151 \r\n 1983          324           5.051         16.225        4.925         0 \r\n 1983          325           10.2          14.25         2.15          0 \r\n 1983          326           5.551         14.025        2.225         0.95 \r\n 1983          327           2.75          15.8         -1.325         17.451 \r\n 1983          328           8.15          3.9          -4.475         0 \r\n 1983          329           9.925         7.8          -3.125         0 \r\n 1983          330           7.125         12.2          2.85          0 \r\n 1983          331           1.2           7.7           1.325         23.976 \r\n 1983          332           5.225         5.025        -0.075         1.4 \r\n 1983          333           5.925        -0.3          -6.425         0 \r\n 1983          334           7.3          -3.4          -11.05         0 \r\n 1983          335           8.225        -1.65         -11.475        0 \r\n 1983          336           8.925         2.875        -3.725         0 \r\n 1983          337           4.875         0.725        -9.95          2.1 \r\n 1983          338           5.475         1.5          -5.7           0 \r\n 1983          339           3.45          2.2          -2.45          0 \r\n 1983          340           7.225        -0.525        -6.575         5.775 \r\n 1983          341           5.125        -3.2          -9.35          1.2 \r\n 1983          342           4.525        -3.35         -11.35         0 \r\n 1983          343           8.95         -1.7          -7.475         0 \r\n 1983          344           3.425         1.3          -8.425         5.875 \r\n 1983          345           3.775         3.275         1.275         12.85 \r\n 1983          346           7.25          2.475        -8.125         0 \r\n 1983          347           5.125         3.125        -3.75          1 \r\n 1983          348           5             1.55         -3.375         9.35 \r\n 1983          349           6.2          -2.525        -6.95          1.7 \r\n 1983          350           9.25         -7.525        -18.625        0 \r\n 1983          351           8.974        -12.125       -18.5          0 \r\n 1983          352           6.575        -16.6         -23.075        1.3 \r\n 1983          353           6.1          -19.7         -31            0 \r\n 1983          354           7.975        -8.625        -24.275        0 \r\n 1983          355           7.75         -6.275        -10.475        6.1 \r\n 1983          356           8.125        -10.975       -24.125        0 \r\n 1983          357           6.025        -20.15        -25.475        0 \r\n 1983          358           7            -20.925       -29.9          0 \r\n 1983          359           7.15         -17.075       -26.575        0 \r\n 1983          360           8.3          -7.65         -22.15         0 \r\n 1983          361           6.15         -3.725        -12.55         0 \r\n 1983          362           7.9          -5.7          -11.125        3.075 \r\n 1983          363           9.375        -12.4         -18.875        0 \r\n 1983          364           9.675        -8.175        -22.825        0 \r\n 1983          365           6.4          -1.55         -11.425        0 \r\n 1984          1             4.6           2.225        -5.375         5.85 \r\n 1984          2             6.85          0.15         -6.225         0 \r\n 1984          3             5.95          3.9          -6.325         0 \r\n 1984          4             8.95          3.475        -0.575         0 \r\n 1984          5             7.1           4.7          -5.325         0 \r\n 1984          6             9.225         5            -1.1           0 \r\n 1984          7             9.375         2.3          -3.9           0 \r\n 1984          8             6.5          -0.025        -6.6           0 \r\n 1984          9             4.975        -1.725        -7.7           0 \r\n 1984          10            8.025        -6.175        -15.525        0 \r\n 1984          11            5.25         -5.25         -18.9          0 \r\n 1984          12            6.975        -3.925        -12.225        0 \r\n 1984          13            7            -3.275        -8.675         0.5 \r\n 1984          14            7.325        -4.85         -12.625        0 \r\n 1984          15            7.65         -5.3          -15.025        0 \r\n 1984          16            6.375        -2.5          -10.875        0 \r\n 1984          17            7.2          -6.4          -19.975        0 \r\n 1984          18            8.175        -12.4         -18.95         0 \r\n 1984          19            8.4          -8.125        -22.975        0 \r\n 1984          20            8.875        -11.75        -26.575        0 \r\n 1984          21            7.775        -4.975        -27.45         0 \r\n 1984          22            7.225         1.275        -9.45          0 \r\n 1984          23            3.675         3.725        -3.1           0.3 \r\n 1984          24            9.275         4.45         -4.825         0 \r\n 1984          25            10.4          7.575        -4.375         0 \r\n 1984          26            6.876         7.75          3.25          0 \r\n 1984          27            10.8          3.525        -6.825         0 \r\n 1984          28            8.625         6.7          -7.5           1.725 \r\n 1984          29            6.7           1.025        -11.6          2.8 \r\n 1984          30            8.824        -0.175        -7.175         2.9 \r\n 1984          31            9.625         4.35         -8.825         0 \r\n 1984          32            9.351         7.15         -5.95          0 \r\n 1984          33            7.325         5.3           1.45          0 \r\n 1984          34            10.051        6.3          -4.175         0 \r\n 1984          35            8.175         0.625        -5.2           0 \r\n 1984          36            7.9          -4.3          -13.4          3.2 \r\n 1984          37            6.925        -9.6          -21.125        0 \r\n 1984          38            7.676        -1.975        -17.5          0 \r\n 1984          39            9.125         6.35         -9.025         0 \r\n 1984          40            9.95          9.325        -1.4           0 \r\n 1984          41            5             7.15          2.825         0.45 \r\n 1984          42            4.35          8.025         1.375         0 \r\n 1984          43            4.65          16.225        8.075         1.15 \r\n 1984          44            9.701         12.075        0.85          0 \r\n 1984          45            13.4          15.35         1.675         0 \r\n 1984          46            13.6          17.675        3.2           0 \r\n 1984          47            3.05          12.2          4.525         8.101 \r\n 1984          48            4.25          9.825         4.5           3.975 \r\n 1984          49            2.125         12.25         2.5           6.775 \r\n 1984          50            3.75          10.7          2.125         0.3 \r\n 1984          51            16.05         10.275       -3.925         0 \r\n 1984          52            14.6          10.65        -2.325         0 \r\n 1984          53            16.15         16.35         1             0 \r\n 1984          54            10.726        13.925        1.575         0 \r\n 1984          55            7.35          6.625         0.625         0 \r\n 1984          56            11.376        10.45        -1.35          0 \r\n 1984          57            9.924         8.3          -0.05          0 \r\n 1984          58            8.225         3.75         -2.3           0 \r\n 1984          59            14.85         2.35         -3.125         0 \r\n 1984          60            17.025        2.3          -5.475         0 \r\n 1984          61            13.85         5.575        -4.6           0 \r\n 1984          62            12.974        3.9          -2.6           0 \r\n 1984          63            16.025        6.525        -4.525         0 \r\n 1984          64            3.275         5.425        -2.5           5.825 \r\n 1984          65            5.475         2.9          -2.65          0 \r\n 1984          66            18.875       -0.325        -8.275         0 \r\n 1984          67            9.424        -0.075        -6.95          1.45 \r\n 1984          68            11.599       -2.325        -7.05          3.025 \r\n 1984          69            13.2         -1.75         -8.075         0 \r\n 1984          70            12.25         0.35         -9.675         0 \r\n 1984          71            17.025       -0.675        -12.925        0 \r\n 1984          72            6.249        -3.075        -8.3           3.775 \r\n 1984          73            7.25          1.825        -7.8           0 \r\n 1984          74            8.624         8.225        -4.075         0 \r\n 1984          75            7.25          11.925        2.95          9.375 \r\n 1984          76            5.45          7.175        -1.15          0.8 \r\n 1984          77            2.95          2.1          -4.35          6.075 \r\n 1984          78            4.725         3.875        -5.225         0 \r\n 1984          79            2.05          1.425        -3.2           8.9 \r\n 1984          80            3.575         0.075        -2.975         8.875 \r\n 1984          81            3.925         2.5          -5.425         0 \r\n 1984          82            12.001        6.2          -1.75          0 \r\n 1984          83            17.276        10.075       -3.1           0 \r\n 1984          84            6.95          7.075         1.25          0 \r\n 1984          85            18.999        13.1         -0.75          0 \r\n 1984          86            10.299        9.725        -0.15          0.95 \r\n 1984          87            4             8.775         3.2           2.55 \r\n 1984          88            15.249        10.925       -1.225         0 \r\n 1984          89            15.875        8.35         -3.15          0 \r\n 1984          90            12.15         9.05         -2.95          0 \r\n 1984          91            19.773        10.975       -1.525         0 \r\n 1984          92            19.925        13.975        0             0 \r\n 1984          93            7.325         12.45         3.575         2.55 \r\n 1984          94            2.675         11.575        3.6           14.575 \r\n 1984          95            4.25          12.55         0.725         1.2 \r\n 1984          96            23.7          14.55         0.3           0 \r\n 1984          97            25.1          15.55         0.1           0 \r\n 1984          98            11.125        15.05         3.975         0 \r\n 1984          99            2.85          10.25         5.975         7.375 \r\n 1984          100           5.2           17.275        5.05          1.725 \r\n 1984          101           15.575        18.4          7.75          0 \r\n 1984          102           13.326        19.225        6.075         0 \r\n 1984          103           8.75          17.125        12.175        7.7 \r\n 1984          104           5.926         12            8.05          1.825 \r\n 1984          105           6.225         11.4          7.45          2.45 \r\n 1984          106           9.099         14.45         7.3           0 \r\n 1984          107           8.85          12.175        6.1           0 \r\n 1984          108           21.976        13.725        1.075         0 \r\n 1984          109           17.727        14.8          2.15          0 \r\n 1984          110           17.925        15.8          2.925         0 \r\n 1984          111           17.049        15.375        4.725         0.95 \r\n 1984          112           4.2           12.8          7.4           12.55 \r\n 1984          113           1.5           9.625         2.8           12.65 \r\n 1984          114           3.5           9.2           1.6           0 \r\n 1984          115           23.651        20.7          2.7           0 \r\n 1984          116           21.801        20.15         6.7           0 \r\n 1984          117           20.875        23.9          14            0 \r\n 1984          118           23.5          24.5          17.45         0 \r\n 1984          119           26.7          16.6          4.1           0 \r\n 1984          120           3.624         20.425        7.05          24.575 \r\n 1984          121           20.927        20.275        3.925         11.7 \r\n 1984          122           23.799        16.9          1.7           0 \r\n 1984          123           16.426        21.3          6.925         2.3 \r\n 1984          124           3.1           17.8          10.875        34.875 \r\n 1984          125           13.049        17.775        3.825         0 \r\n 1984          126           22.549        20.375        8             0 \r\n 1984          127           15.049        17.925        9.5           0 \r\n 1984          128           13.125        19.35         8.625         0 \r\n 1984          129           20.074        13.975        2.175         0 \r\n 1984          130           25.451        18.075        2.65          0 \r\n 1984          131           12.95         22.95         7.575         0 \r\n 1984          132           11.799        25.125        13.075        0 \r\n 1984          133           24.2          23.4          7.8           0 \r\n 1984          134           26.85         26.2          12.825        0 \r\n 1984          135           27.45         21.275        8.4           0 \r\n 1984          136           17.949        21.75         8.35          0 \r\n 1984          137           25.75         22            5.85          0 \r\n 1984          138           26.225        27.3          9.2           0 \r\n 1984          139           24.351        28.1          15.4          4.175 \r\n 1984          140           6.477         25.325        18.1          11 \r\n 1984          141           23.249        25.975        15.625        2.575 \r\n 1984          142           16.549        27.175        12.325        1.375 \r\n 1984          143           4.125         24.3          18.95         6.425 \r\n 1984          144           30.7          22            9.8           0 \r\n 1984          145           24.426        26.725        11.425        0 \r\n 1984          146           8.575         23.125        16.275        32.425 \r\n 1984          147           28.05         20.825        8.375         0 \r\n 1984          148           7.124         19.575        8.95          17.725 \r\n 1984          149           6.299         14.45         9.1           11.6 \r\n 1984          150           30.4          18.2          4.05          0 \r\n 1984          151           30.55         22.375        6.65          0 \r\n 1984          152           28.376        24.15         8.85          0 \r\n 1984          153           25.075        29.35         12.325        0 \r\n 1984          154           19.375        26.3          16.7          0 \r\n 1984          155           26.5          27.875        11.075        0 \r\n 1984          156           17.701        27.95         15.15         2.125 \r\n 1984          157           22.475        30.275        17.325        2.425 \r\n 1984          158           13.425        27.375        19.25         5.15 \r\n 1984          159           10.05         29.15         19.7          5.475 \r\n 1984          160           27.424        30.55         22.35         16.9 \r\n 1984          161           4.926         29.075        20.525        23.774 \r\n 1984          162           27.625        29.25         19.525        0 \r\n 1984          163           24.825        29.2          14.025        0 \r\n 1984          164           17.151        30.9          20.55         0 \r\n 1984          165           22.551        29.875        20.55         0 \r\n 1984          166           24.825        29.775        16.975        0 \r\n 1984          167           7.825         26.5          15.9          6.65 \r\n 1984          168           18.552        29.625        17.125        0 \r\n 1984          169           23.351        31.15         22.175        4.8 \r\n 1984          170           25.2          30.45         22.475        6.025 \r\n 1984          171           24.099        30.05         16.4          0 \r\n 1984          172           23.498        31            17.75         0 \r\n 1984          173           16.249        28.85         17.675        6.175 \r\n 1984          174           24.875        28.925        20.775        13.8 \r\n 1984          175           25.149        29.775        19.775        0 \r\n 1984          176           27.875        27.675        14.35         0 \r\n 1984          177           26.625        29.25         14.9          0 \r\n 1984          178           20.248        29.175        19.275        2.5 \r\n 1984          179           31.85         27.075        15.925        0 \r\n 1984          180           18.775        29.375        15.65         0 \r\n 1984          181           25.125        26            14.875        0 \r\n 1984          182           19.699        25.85         13.075        0 \r\n 1984          183           25.125        27.55         15.1          0 \r\n 1984          184           25.6          28.625        16.375        0 \r\n 1984          185           11.45         30.975        16.45         0 \r\n 1984          186           13.624        27.225        19.45         0 \r\n 1984          187           28.299        28.725        16.275        0 \r\n 1984          188           29.7          26.05         17.425        5.15 \r\n 1984          189           30.6          25.375        10.4          0 \r\n 1984          190           19.9          29.475        12.475        5.925 \r\n 1984          191           25.775        33.3          21.65         5.425 \r\n 1984          192           22.226        31.9          22            12.4 \r\n 1984          193           27.2          28.975        21            10.675 \r\n 1984          194           26.85         30.05         17.025        0 \r\n 1984          195           25.55         31.2          18.35         0 \r\n 1984          196           22.7          31.775        19.475        4.125 \r\n 1984          197           26.299        29.475        21.475        22.699 \r\n 1984          198           29.374        29.25         15.1          0 \r\n 1984          199           26.3          26.85         17.425        6.725 \r\n 1984          200           28.226        26.25         12.25         0 \r\n 1984          201           25.85         29.45         14.325        0 \r\n 1984          202           22.449        29.275        19.75         11.675 \r\n 1984          203           25.575        31            18.725        0 \r\n 1984          204           25.2          32.7          20.525        0 \r\n 1984          205           24.299        33.35         21            0 \r\n 1984          206           17.301        30.475        21.95         10.075 \r\n 1984          207           6.452         29.375        18.475        0 \r\n 1984          208           8             26.825        19.6          21.699 \r\n 1984          209           17.276        26.4          14.15         1.525 \r\n 1984          210           23.625        26.5          16.05         0 \r\n 1984          211           24.775        27.55         13.825        0 \r\n 1984          212           24.875        27.525        14.575        0 \r\n 1984          213           22.55         29.1          14.65         0 \r\n 1984          214           23.7          30.175        16.75         0 \r\n 1984          215           21.899        31.175        16.65         0 \r\n 1984          216           22.375        30.25         19.475        0 \r\n 1984          217           22.075        29.775        19.1          0 \r\n 1984          218           22.475        30.925        18.75         0 \r\n 1984          219           23.775        32.65         20.2          0 \r\n 1984          220           23.025        32            21.875        2.25 \r\n 1984          221           22.625        30.575        22.475        5.9 \r\n 1984          222           21.499        31.325        20            0 \r\n 1984          223           25.525        28.7          16.175        0 \r\n 1984          224           21.425        29.15         16.725        0 \r\n 1984          225           23.075        28.675        16.075        0 \r\n 1984          226           21.775        29.85         17.8          0 \r\n 1984          227           23.575        30.9          16.95         0 \r\n 1984          228           21.05         32.8          17.275        0 \r\n 1984          229           19.2          32.875        21            1.55 \r\n 1984          230           5.401         29.975        22.25         13.8 \r\n 1984          231           15.449        29.675        19.8          5.9 \r\n 1984          232           24.3          27.8          17.175        0 \r\n 1984          233           22.775        28.5          13.575        0 \r\n 1984          234           7.25          31            14.85         0 \r\n 1984          235           25.125        27.15         15.9          0 \r\n 1984          236           19.5          25.25         10.075        0 \r\n 1984          237           24.15         26.875        11            0 \r\n 1984          238           20.951        28.65         12.4          0 \r\n 1984          239           21.676        31.275        13.75         0 \r\n 1984          240           19.975        32.525        18.925        4.475 \r\n 1984          241           23.25         36.775        20.175        0 \r\n 1984          242           23.55         38.5          20.3          0 \r\n 1984          243           24.7          33.55         14.7          0 \r\n 1984          244           19.076        31.4          12.85         0 \r\n 1984          245           23            37.625        19.925        0 \r\n 1984          246           7.726         31.225        20.725        0 \r\n 1984          247           11.875        24.625        13.4          0 \r\n 1984          248           14.524        27.6          11.6          0.825 \r\n 1984          249           19            26.05         12.25         0 \r\n 1984          250           7.775         26.125        12.3          0.575 \r\n 1984          251           22.1          33.825        18.55         0 \r\n 1984          252           9.45          28.55         19.8          6.275 \r\n 1984          253           8.601         24.4          14.5          5.55 \r\n 1984          254           4.051         28.675        15.5          0 \r\n 1984          255           18.274        26.4          16.1          5.9 \r\n 1984          256           18.975        31.25         17.55         4.05 \r\n 1984          257           5.526         28.45         20.1          3.8 \r\n 1984          258           7.125         20.95         12.55         2.2 \r\n 1984          259           17.95         19.5          6.075         0 \r\n 1984          260           19.7          21.35         6.5           0 \r\n 1984          261           19.325        22.275        7.7           0 \r\n 1984          262           20.775        25.45         9.4           0 \r\n 1984          263           20.85         30.35         12.75         0 \r\n 1984          264           20.55         30.325        14.85         0 \r\n 1984          265           20.15         29.975        15.7          0 \r\n 1984          266           4.85          27.475        17.325        0 \r\n 1984          267           12.949        26.425        18.8          0.775 \r\n 1984          268           15.65         28.1          20.85         17.451 \r\n 1984          269           6.4           25.525        8.875         8.375 \r\n 1984          270           14.625        14.3          1.35          0 \r\n 1984          271           6.475         14.4          5.9           0.6 \r\n 1984          272           6.3           14.425        5.5           0 \r\n 1984          273           17.6          15.5         -0.075         0 \r\n 1984          274           17.075        18.975        2.875         0 \r\n 1984          275           18.875        20.225        5.075         0 \r\n 1984          276           15.6          21.9          5.5           0 \r\n 1984          277           16.825        24.575        9.65          0 \r\n 1984          278           12.75         21.55         8.825         0 \r\n 1984          279           8.625         23.225        13.15         0 \r\n 1984          280           3.6           22.15         13.15         3.875 \r\n 1984          281           7.4           22.95         16.875        2.9 \r\n 1984          282           10.724        23.575        14.275        0 \r\n 1984          283           9.576         23.05         13.875        0 \r\n 1984          284           6.375         22.925        14.85         2.275 \r\n 1984          285           1.601         22.675        17            6.45 \r\n 1984          286           8.525         23.75         17.55         0 \r\n 1984          287           7.024         25            16            0 \r\n 1984          288           5.699         24.025        16.6          0 \r\n 1984          289           4.575         22.525        14.35         19.425 \r\n 1984          290           3.25          23.7          7.15          10 \r\n 1984          291           16.6          21.925        3.8           6.775 \r\n 1984          292           1.625         19.825        7.275         43.175 \r\n 1984          293           14.376        20.975        5.65          16.4 \r\n 1984          294           8.899         14.525        5.825         0 \r\n 1984          295           11.1          13.625        3.175         9.125 \r\n 1984          296           10.101        15.15         2.35          0 \r\n 1984          297           14.35         13.025        0.225         0 \r\n 1984          298           14.025        15.075        1.3           0 \r\n 1984          299           2.4           13.25         6.15          6.925 \r\n 1984          300           11.325        20.025        6.975         0 \r\n 1984          301           1.2           21.4          17.6          13.125 \r\n 1984          302           4.4           19.425        3.075         3.375 \r\n 1984          303           13.3          15.875       -0.6           0 \r\n 1984          304           9.148         12.95         6.15          0 \r\n 1984          305           1.675         19.525        1.175         26.175 \r\n 1984          306           7.575         20.05         0.45          19.601 \r\n 1984          307           11.025        7.1          -5.125         0 \r\n 1984          308           12.176        14           -1.675         0 \r\n 1984          309           12.15         16.6          6.3           0 \r\n 1984          310           8.226         10.05        -0.15          0 \r\n 1984          311           12.65         15.1         -0.725         0 \r\n 1984          312           4.175         14.7          5.2           1.55 \r\n 1984          313           8.825         19.475        9.95          0.75 \r\n 1984          314           3.051         22.9          11.825        17.801 \r\n 1984          315           2.125         16.575        2.55          0.6 \r\n 1984          316           6.675         5.9          -4.6           0 \r\n 1984          317           11.875        9.1          -2.45          0 \r\n 1984          318           10.675        13.6         -0.675         0 \r\n 1984          319           2.325         14.35         4.825         0 \r\n 1984          320           7.101         13.5          2.05          0 \r\n 1984          321           11.225        7.625        -4.225         0 \r\n 1984          322           3.8           5.2          -0.35          0 \r\n 1984          323           4.3           5.625        -1.05          0 \r\n 1984          324           10.425        4            -4.4           0 \r\n 1984          325           9.45          4.775        -4.8           2.025 \r\n 1984          326           9.7           6.325        -2.875         0 \r\n 1984          327           8.075         8.15         -2.7           0 \r\n 1984          328           9.8           5.975        -0.55          0 \r\n 1984          329           9.525         8.125         1.325         0 \r\n 1984          330           4.95          10.025        2.675         0 \r\n 1984          331           6.575         17.625        6.1           5.575 \r\n 1984          332           1.675         14.1          3             15.151 \r\n 1984          333           6.726         6.2          -3.3           0 \r\n 1984          334           6.55          10.275       -1.3           0 \r\n 1984          335           6.7           8.5          -0.125         0 \r\n 1984          336           7.4           7.125        -2.45          0 \r\n 1984          337           2.375         6.9          -1.2           3.475 \r\n 1984          338           9.025         0.475        -7.55          0 \r\n 1984          339           7.324         1.025        -8             0 \r\n 1984          340           4.85          2.55         -6.25          0 \r\n 1984          341           6.075         0.925        -16.225        0 \r\n 1984          342           8.45          7.55         -8.725         0 \r\n 1984          343           8.075         9.325        -0.875         0 \r\n 1984          344           4.676         6.575         2.4           0 \r\n 1984          345           9.1           7.95          0.8           0 \r\n 1984          346           4.9           6.575         0.65          0 \r\n 1984          347           4.7           7.95          0.15          2.975 \r\n 1984          348           2.2           3.35         -2.975         2 \r\n 1984          349           4.375         2.85         -2.15          9.95 \r\n 1984          350           1.6           6.675        -7.65          0 \r\n 1984          351           5.601         14.6          4.025         1 \r\n 1984          352           4.701         6.5          -2.425         0 \r\n 1984          353           7.8           0.35         -8.2           0 \r\n 1984          354           7.749         1.375        -4.6           1.4 \r\n 1984          355           7.149         4.65         -7             0 \r\n 1984          356           3.001         10           -0.4           6.875 \r\n 1984          357           8.75          2.35         -10.325        0 \r\n 1984          358           5.901         7.975        -4.475         0 \r\n 1984          359           2.875         2.3          -13.3          1.5 \r\n 1984          360           5.476        -0.625        -15.375        0 \r\n 1984          361           0.925         3.2          -4.575         12.05 \r\n 1984          362           1.375         8.525         2.475         0 \r\n 1984          363           2.35          21.425        8.05          1.5 \r\n 1984          364           2.85          20.675       -3.975         3.575 \r\n 1984          365           9.075         1.025        -6.225         0 \r\n 1984          366           1.7          -1.1          -4.3           5.975 \r\n 1985          1             4.95         -2.95         -9.775         13.475 \r\n 1985          2             5.375        -9.05         -22.075        0 \r\n 1985          3             5.35         -8.95         -20.8          0 \r\n 1985          4             8.425         0.825        -18.1          0 \r\n 1985          5             9.325         2.4          -4.4           0 \r\n 1985          6             5.175         3.975        -4.15          0 \r\n 1985          7             8.55          4.25         -6.55          0 \r\n 1985          8             7.026         0.175        -11.825        0 \r\n 1985          9             5.825        -3.85         -10.775        1.725 \r\n 1985          10            4.926        -2.475        -9.725         2.875 \r\n 1985          11            6.55         -3.15         -9.1           0.9 \r\n 1985          12            6.05         -6.775        -17            0 \r\n 1985          13            9.95          1.35         -13.725        0 \r\n 1985          14            8.151         0.325        -10.125        0 \r\n 1985          15            6.225        -7.35         -20.45         0 \r\n 1985          16            5.375         0.05         -10.325        1.1 \r\n 1985          17            6.725        -0.925        -9.175         0.875 \r\n 1985          18            8             2.525        -8.65          3.35 \r\n 1985          19            8.175        -10.4         -25.95         0 \r\n 1985          20            8.95         -18.225       -31.225        0 \r\n 1985          21            10.575       -4.675        -19.25         0 \r\n 1985          22            11.3         -3.775        -9.95          0 \r\n 1985          23            9.65         -0.55         -9.925         0 \r\n 1985          24            8.525         0.25         -5             0.8 \r\n 1985          25            9.625         0.375        -15.65         0 \r\n 1985          26            9.851        -4.975        -22.95         0 \r\n 1985          27            11.15         1.175        -8.15          0 \r\n 1985          28            11.625       -4.55         -17.1          0 \r\n 1985          29            6.4          -3.4          -15.45         0 \r\n 1985          30            5.125        -3.1          -11.8          1.325 \r\n 1985          31            7.825        -13.625       -24.55         0 \r\n 1985          32            12.95        -10.8         -24.475        0 \r\n 1985          33            12.95        -11.1         -20.05         0 \r\n 1985          34            13.575       -5.325        -20.475        0 \r\n 1985          35            9.3          -6.1          -14.3          1 \r\n 1985          36            8.55         -1.7          -10.85         0.7 \r\n 1985          37            13.9         -6.275        -17.575        0 \r\n 1985          38            14.275       -7.975        -20.3          0 \r\n 1985          39            12.35        -5.1          -16.25         0 \r\n 1985          40            2            -1.4          -12.75         0 \r\n 1985          41            6.05          1.175        -2.875         1.925 \r\n 1985          42            12.475       -0.75         -3.95          3.475 \r\n 1985          43            14.625       -4.55         -12.8          0 \r\n 1985          44            14.1         -1.125        -16.725        0 \r\n 1985          45            15.55        -3.775        -13.825        0 \r\n 1985          46            13.125       -9.075        -22.55         0 \r\n 1985          47            10.176        3.2          -11.375        0 \r\n 1985          48            15.075        2.675        -7.9           0 \r\n 1985          49            15.55         3.975        -3.575         0 \r\n 1985          50            8.375         1.875        -11.975        0 \r\n 1985          51            11.026        3.025        -4.45          0.5 \r\n 1985          52            3.325         6.75          3.875         25.227 \r\n 1985          53            7.874         8.45          3.125         1.375 \r\n 1985          54            4.925         8.55          5.5           8.176 \r\n 1985          55            7.124         8.575         2.875         4.5 \r\n 1985          56            11.375        10.8          1.1           0 \r\n 1985          57            8.65          5.9           0.675         0 \r\n 1985          58            16.65         5.75         -4             0 \r\n 1985          59            17.75         12.425        0.7           0 \r\n 1985          60            13.749        12.45         3.275         1.45 \r\n 1985          61            16.2          7.95         -2.675         1.3 \r\n 1985          62            2.3           5.95         -1.125         22.701 \r\n 1985          63            8.376         11.625       -1.6           18.926 \r\n 1985          64            14.95         1.375        -5.575         0 \r\n 1985          65            15.95         4.475        -4.425         0 \r\n 1985          66            7.024         8.675         0.75          0 \r\n 1985          67            19.175        13.275       -0.45          0 \r\n 1985          68            19.225        14.675        0.5           0 \r\n 1985          69            12.925        18.5          2.7           0 \r\n 1985          70            4.55          17.025        7.325         6.45 \r\n 1985          71            16.15         11.05        -1.2           0 \r\n 1985          72            7.975         9.825         1.35          2.7 \r\n 1985          73            16.576        10.525       -0.4           0 \r\n 1985          74            20.099        12.35        -1.025         0 \r\n 1985          75            19.099        11.075        1.3           0 \r\n 1985          76            18.775        10.675       -1.075         0 \r\n 1985          77            18.9          14           -2.35          0 \r\n 1985          78            19.575        16.75         6.4           0 \r\n 1985          79            20.8          14.65         3.05          0 \r\n 1985          80            19.949        12.5         -1.325         0 \r\n 1985          81            10.999        15.375       -0.7           0 \r\n 1985          82            4.2           11.025        6.125         3.375 \r\n 1985          83            5.4           10.525        2.25          0 \r\n 1985          84            6.525         13           -1.2           0.725 \r\n 1985          85            19.925        20.3          2.8           0 \r\n 1985          86            15.526        19.9          14.125        2.325 \r\n 1985          87            16.426        23.7          13.8          11.026 \r\n 1985          88            6.974         14.975        5.225         1.325 \r\n 1985          89            3.5           10.05         1.275         5.3 \r\n 1985          90            6.675         3.7           0.6           11.726 \r\n 1985          91            21.476        8.75         -5.075         0 \r\n 1985          92            19.9          16.95        -1.475         0 \r\n 1985          93            22.85         18.65         4.25          0 \r\n 1985          94            9.827         21.4          7             2.65 \r\n 1985          95            5.1           11.65         1.75          4.225 \r\n 1985          96            17.526        12.175        0.75          0.3 \r\n 1985          97            19.201        11.075        1.375         0 \r\n 1985          98            19.325        7.35          0.775         0 \r\n 1985          99            24.325        13.1         -2.325         0 \r\n 1985          100           11.373        17.35         1.35          0 \r\n 1985          101           19.575        22.35         6.575         0 \r\n 1985          102           21.15         24.45         9.45          1 \r\n 1985          103           12.725        21.875        12.1          1.95 \r\n 1985          104           11.925        19.475        7.225         0 \r\n 1985          105           24.825        23.425        6.425         0 \r\n 1985          106           25.2          23.275        9.9           0 \r\n 1985          107           25.275        27.65         5.875         0 \r\n 1985          108           23.4          27.65         15.55         0 \r\n 1985          109           20.175        28.25         18.525        0 \r\n 1985          110           23.1          26.625        15.975        0.4 \r\n 1985          111           18.6          25.75         17.375        3 \r\n 1985          112           11.626        26.2          16.725        4.375 \r\n 1985          113           15.376        24.35         16.375        1.6 \r\n 1985          114           16.476        21.45         9.275         0 \r\n 1985          115           15.552        21.25         8.65          0 \r\n 1985          116           22.15         23.25         9.525         0 \r\n 1985          117           6.225         23.525        11.25         0.625 \r\n 1985          118           26.175        23.5          11.25         0 \r\n 1985          119           26.85         25.55         9.025         0 \r\n 1985          120           7.175         24.9          14.05         2.95 \r\n 1985          121           11.624        20.075        12.375        5.625 \r\n 1985          122           25.55         21.75         5.15          0 \r\n 1985          123           26.45         23.8          7.55          0 \r\n 1985          124           24.675        23.8          9.925         0 \r\n 1985          125           8.302         25.8          12.15         4.35 \r\n 1985          126           25.075        22.775        13.95         1.2 \r\n 1985          127           24.1          26.175        11.525        0 \r\n 1985          128           25.425        26.375        12.5          0 \r\n 1985          129           27.425        26.6          11.8          0 \r\n 1985          130           24.175        26.175        12.8          0 \r\n 1985          131           9.15          25.4          15.8          19.825 \r\n 1985          132           24.876        25            15.75         14.025 \r\n 1985          133           14.15         24.6          10.8          1.75 \r\n 1985          134           18.675        25.725        17.95         18.625 \r\n 1985          135           10.952        22.675        10.95         2.4 \r\n 1985          136           4.949         21.1          10.25         1.85 \r\n 1985          137           27.324        21.075        9.375         0 \r\n 1985          138           28.775        26.35         9.425         0 \r\n 1985          139           28.375        26.45         12.5          0 \r\n 1985          140           23.072        23.3          14.75         3.875 \r\n 1985          141           29.6          23.5          7.9           0 \r\n 1985          142           25.299        23.05         9.1           0 \r\n 1985          143           25.526        25.925        10.4          0 \r\n 1985          144           24.724        27.85         14.3          0 \r\n 1985          145           25.95         29.25         15.575        0 \r\n 1985          146           26.15         29.225        16.525        2.2 \r\n 1985          147           2.975         25.975        18.95         3.175 \r\n 1985          148           26.9          23.9          10.95         0 \r\n 1985          149           20.45         26.45         9.6           0 \r\n 1985          150           20.049        29.65         17.9          3.25 \r\n 1985          151           25.076        26            13.925        0 \r\n 1985          152           17.925        28.1          12.725        0 \r\n 1985          153           21.473        26.425        14.425        1.125 \r\n 1985          154           22.95         24.3          9.325         0 \r\n 1985          155           4.9           20.45         11.45         0 \r\n 1985          156           24.699        25.9          12.15         0 \r\n 1985          157           20.424        26.6          13.275        0 \r\n 1985          158           26.599        28.575        12.1          0 \r\n 1985          159           29.325        31.65         18.275        0 \r\n 1985          160           20.426        28.7          16.9          0 \r\n 1985          161           10.702        27.425        14.15         0 \r\n 1985          162           4.375         23.35         12.775        5.35 \r\n 1985          163           17.6          20.7          10.175        7.675 \r\n 1985          164           27.6          24.55         9.15          1.95 \r\n 1985          165           7.375         24.425        12.975        4.75 \r\n 1985          166           25.376        26.7          16.05         1.775 \r\n 1985          167           19.025        27.575        14.95         0 \r\n 1985          168           26.8          27.15         19.525        1.225 \r\n 1985          169           19.925        22.85         13.375        2.875 \r\n 1985          170           20.75         24.15         11.025        0 \r\n 1985          171           27.198        28.275        13            0.975 \r\n 1985          172           14.825        27.875        18.325        7.15 \r\n 1985          173           27.925        27.6          13.875        7.55 \r\n 1985          174           17.774        29.475        15.55         7.45 \r\n 1985          175           28.475        28.675        19.4          0 \r\n 1985          176           23.65         30.575        19.5          0 \r\n 1985          177           27.9          31.3          20.375        0 \r\n 1985          178           13.3          28.975        21.95         0 \r\n 1985          179           23.326        26.625        14.575        0 \r\n 1985          180           23.076        26.525        16.05         0 \r\n 1985          181           24.524        27            16.05         0 \r\n 1985          182           26.05         28.1          15.05         0 \r\n 1985          183           24.2          29.25         17.65         0 \r\n 1985          184           29.875        29.9          15.35         0 \r\n 1985          185           22.274        30.85         18.55         0 \r\n 1985          186           25.15         27.2          14.55         0 \r\n 1985          187           26.975        29.4          15.675        0 \r\n 1985          188           25.225        31.775        18.5          0 \r\n 1985          189           18.326        34.9          19.2          0 \r\n 1985          190           22.251        31.85         21.9          1.225 \r\n 1985          191           29.85         29.075        16.9          0 \r\n 1985          192           23.875        31.125        17.65         13.3 \r\n 1985          193           3.7           29.7          19.05         1.425 \r\n 1985          194           16.675        33.55         22.65         3.425 \r\n 1985          195           19.024        31.175        22.775        12.175 \r\n 1985          196           27.65         28.5          18.475        0 \r\n 1985          197           29.625        29.1          14.25         0 \r\n 1985          198           28.375        29.8          17            0 \r\n 1985          199           20.401        31.7          16.95         0 \r\n 1985          200           10.875        28.625        19.3          2.5 \r\n 1985          201           25.725        29.55         17.475        0 \r\n 1985          202           20.299        30.8          20.3          1.075 \r\n 1985          203           29.775        27.9          17.275        0 \r\n 1985          204           30            28.35         12.625        0 \r\n 1985          205           23.325        31.6          17.55         0 \r\n 1985          206           14.274        29.475        23.05         17.799 \r\n 1985          207           28.975        28.775        15.5          0 \r\n 1985          208           26.675        30.925        17.55         0 \r\n 1985          209           26.25         31.725        17.675        0 \r\n 1985          210           18.649        30.475        19.625        7.225 \r\n 1985          211           5.524         27.45         19.025        21.474 \r\n 1985          212           5.95          26.7          20.3          3 \r\n 1985          213           23.724        25.725        14.725        0 \r\n 1985          214           26.85         27.625        12.65         0 \r\n 1985          215           11            27.825        15.425        0 \r\n 1985          216           3.751         25.325        17.775        1.55 \r\n 1985          217           21.626        29.925        19.025        0 \r\n 1985          218           17.499        28.175        21.7          0 \r\n 1985          219           27.175        29.125        18.675        0 \r\n 1985          220           26.45         29.9          17.5          0 \r\n 1985          221           26.25         31.4          17.375        7.7 \r\n 1985          222           24.175        27.3          16.2          26.226 \r\n 1985          223           26.826        26.825        12.4          0 \r\n 1985          224           23            30.575        17.3          2.15 \r\n 1985          225           20.274        29.775        21.325        6.15 \r\n 1985          226           8.599         28.15         19.225        1.6 \r\n 1985          227           21.149        25            14.55         0 \r\n 1985          228           19.925        26.975        14.725        0 \r\n 1985          229           18.025        27.775        18.675        0 \r\n 1985          230           25.6          25.65         15.025        0 \r\n 1985          231           20.299        23.825        14.1          2.2 \r\n 1985          232           16.076        24.9          10.575        0 \r\n 1985          233           22.475        26.425        13.05         0 \r\n 1985          234           4.425         26.95         16.225        5.575 \r\n 1985          235           8.375         27.775        15.95         0 \r\n 1985          236           15.701        24.35         16.45         2.175 \r\n 1985          237           5.85          23.65         14.125        0 \r\n 1985          238           12.075        26.55         14.2          0 \r\n 1985          239           20.7          29.4          14.175        0 \r\n 1985          240           19.126        30.475        16.825        0 \r\n 1985          241           8.75          30.05         18.05         3.275 \r\n 1985          242           13.351        28.15         18.725        0 \r\n 1985          243           19.45         30.375        16.825        0 \r\n 1985          244           18.574        32.075        21.275        0 \r\n 1985          245           19.176        29.2          20.775        0 \r\n 1985          246           20.424        31.4          20.025        0 \r\n 1985          247           13.425        29.975        20.75         0 \r\n 1985          248           15.777        33.575        22.025        0 \r\n 1985          249           22.525        31.575        23.15         0 \r\n 1985          250           22.55         32.325        22.6          0 \r\n 1985          251           21.65         30.15         22.45         0 \r\n 1985          252           11.402        28.6          20.475        0 \r\n 1985          253           6.976         26.9          16.45         0 \r\n 1985          254           20.525        24.625        14.45         0 \r\n 1985          255           10.449        23.25         9.975         0 \r\n 1985          256           20.45         21.325        7.875         0 \r\n 1985          257           16.15         22.65         9.05          0 \r\n 1985          258           20.925        24.7          7.45          0 \r\n 1985          259           17            27.7          11.375        0 \r\n 1985          260           14.45         28.35         17            0.875 \r\n 1985          261           19.6          31.5          19.45         0 \r\n 1985          262           19.05         33.275        19.975        0 \r\n 1985          263           7.25          27.925        18.3          1.9 \r\n 1985          264           2.45          18.825        11.075        16.726 \r\n 1985          265           6.025         25.6          16.475        8.45 \r\n 1985          266           6.45          21.75         10.725        26.326 \r\n 1985          267           16.75         17.45         4.075         0 \r\n 1985          268           4.45          16.425        8.525         10.176 \r\n 1985          269           10.75         15.475        9.45          2.4 \r\n 1985          270           19.55         20.975        4.3           0 \r\n 1985          271           11.625        24.975        7.875         0 \r\n 1985          272           4.551         19.95         12.175        9.7 \r\n 1985          273           4.575         13.9          4.1           4.675 \r\n 1985          274           15.676        14.25         1.2           0 \r\n 1985          275           18.825        18.5          3.525         0 \r\n 1985          276           11.35         19.9          5.85          0 \r\n 1985          277           6.726         16.65         9.625         3.85 \r\n 1985          278           11.95         14.45         5.75          0 \r\n 1985          279           17.5          19.675        2.7           0 \r\n 1985          280           9.826         19.5          7.4           0 \r\n 1985          281           6.925         20.275        13.45         9.075 \r\n 1985          282           2.05          16.8          8.35          34.075 \r\n 1985          283           3.425         9.75          5.525         15.4 \r\n 1985          284           3.625         15.2          7.55          4.75 \r\n 1985          285           6.05          23.65         12.7          14.3 \r\n 1985          286           15.5          21.975        8.425         0 \r\n 1985          287           7.324         19.925        8.65          0 \r\n 1985          288           16.45         19.45         5.5           0 \r\n 1985          289           15.325        18.3          4.025         0 \r\n 1985          290           7.451         23.725        10            0 \r\n 1985          291           3.1           22.35         15.975        36.35 \r\n 1985          292           2.475         19.975        11.85         5.8 \r\n 1985          293           3.775         19.6          11.425        0 \r\n 1985          294           4.7           18.125        11.725        0 \r\n 1985          295           6.35          20.875        13.55         4.85 \r\n 1985          296           3.326         22.325        12.875        5.175 \r\n 1985          297           13.151        20.175        11.2          4.175 \r\n 1985          298           14.725        20.3          5.8           0 \r\n 1985          299           12.301        22.5          7.05          0 \r\n 1985          300           13.5          18.975        8.65          0 \r\n 1985          301           11.05         15.775        4.25          0 \r\n 1985          302           5.725         13.175        5.6           0 \r\n 1985          303           12.425        16.175        2.85          0 \r\n 1985          304           3.625         10.7          3.875         13.375 \r\n 1985          305           2.65          12            8.7           35.127 \r\n 1985          306           13.65         11.15         2.2           0 \r\n 1985          307           11.925        12.1          1.7           0 \r\n 1985          308           11.625        10.55        -1.45          0 \r\n 1985          309           12.575        12.9         -0.6           0 \r\n 1985          310           1.85          9.025         3.575         14.101 \r\n 1985          311           11.75         10.875       -1.45          0 \r\n 1985          312           6.55          8.4           0.8           0 \r\n 1985          313           1.05          8.925         2.825         6.775 \r\n 1985          314           2.7           3.425        -1.325         0 \r\n 1985          315           2.775         5.1          -3.425         3.3 \r\n 1985          316           4.225         8.675         2.925         16.076 \r\n 1985          317           5.05          10.875        3.975         10.426 \r\n 1985          318           6.724         7.075         1.15          4.425 \r\n 1985          319           1.975         6.15          0.15          4.525 \r\n 1985          320           3.8           5.6          -0.825         3.525 \r\n 1985          321           11.1          13.475       -1.35          2.8 \r\n 1985          322           2.625         18.8          11.125        23.026 \r\n 1985          323           3.025         17.75         0.2           3.625 \r\n 1985          324           9.55         -1.3          -8             0 \r\n 1985          325           8.55          0.6          -6.15          0 \r\n 1985          326           6.651         1.725        -3.6           0 \r\n 1985          327           3.3           0.85         -5.375         0 \r\n 1985          328           3.6          -3            -11            0 \r\n 1985          329           1.975         2.225        -6.05          0 \r\n 1985          330           4.225         2.525        -1.25          0 \r\n 1985          331           3.775        -2.15         -7.325         0 \r\n 1985          332           4.824        -1.425        -6.275         1.95 \r\n 1985          333           3.3          -4.225        -10.3          1.95 \r\n 1985          334           3.4           0.1          -6.4           1.65 \r\n 1985          335           2.4           1.4          -8.725         33.5 \r\n 1985          336           6.425        -9.35         -14.45         1.2 \r\n 1985          337           3.4          -6.8          -22.375        0 \r\n 1985          338           7.05          2.25         -11.05         0 \r\n 1985          339           7.174         0.5          -7.7           0 \r\n 1985          340           7.275        -2.775        -16.375        0 \r\n 1985          341           7.3           2.425        -8.425         0 \r\n 1985          342           7.526         1.475        -2.4           0 \r\n 1985          343           2.9          -0.45         -10.275        2.425 \r\n 1985          344           1.9           0            -6.8           3.375 \r\n 1985          345           3.275        -2.15         -7.5           3.175 \r\n 1985          346           7.225        -4.85         -16.3          0 \r\n 1985          347           6.225        -9.325        -18.55         0 \r\n 1985          348           6.75         -8.9          -27.125        0 \r\n 1985          349           9.375        -4.175        -11.1          0 \r\n 1985          350           8.325        -2.65         -12.85         0.7 \r\n 1985          351           5.575        -9.875        -15.2          5.325 \r\n 1985          352           5.325        -14.65        -28            0 \r\n 1985          353           6.175        -12.95        -22.4          0 \r\n 1985          354           5.725        -7.15         -14.175        0.3 \r\n 1985          355           3.925        -6.925        -17.925        0 \r\n 1985          356           4.625         3.6          -9.525         0 \r\n 1985          357           5.725         3.6          -0.775         0 \r\n 1985          358           6.75          3.425        -17.95         0 \r\n 1985          359           6            -14.3         -22.45         0 \r\n 1985          360           3.8           3.9          -16.7          0 \r\n 1985          361           8.55          3.45         -9.75          0 \r\n 1985          362           5.4          -2.2          -17.925        0 \r\n 1985          363           7.85         -4.5          -14.775        0 \r\n 1985          364           4.975         3.975        -14.675        0 \r\n 1985          365           9.225         3.825        -9.25          0 \r\n 1986          1             6.225         1.675        -13.375        0.3 \r\n 1986          2             1.3           4.325        -2.275         1.6 \r\n 1986          3             5.65          4.225        -11.05         0 \r\n 1986          4             2.725         1.325        -6.75          0.8 \r\n 1986          5             7.35          1.475        -15.3          0 \r\n 1986          6             5.8          -1.85         -15.8          0 \r\n 1986          7             6.35         -14.35        -25.625        0 \r\n 1986          8             6.025        -5.125        -21.35         0 \r\n 1986          9             8.099         3.6          -7.225         0 \r\n 1986          10            7.4           2.375        -2.575         0 \r\n 1986          11            7.925         6.35         -1.475         0 \r\n 1986          12            7.175         5.625        -2.025         0 \r\n 1986          13            7.725        -3.425        -15.4          0 \r\n 1986          14            9.025        -2.375        -6.775         0 \r\n 1986          15            7.6           4.825        -10.25         0 \r\n 1986          16            7.6           9.375         0.3           0 \r\n 1986          17            7.725         12.1          1.625         0 \r\n 1986          18            6.95          9.5           4.55          0 \r\n 1986          19            4             6.35          0.625         0 \r\n 1986          20            8.275         10.25         1.15          0 \r\n 1986          21            6.75          9.35          2.2           0 \r\n 1986          22            10.5          3.675        -3.8           0 \r\n 1986          23            9.575         7.075        -2.5           0 \r\n 1986          24            2.325         6.45          0.625         2.35 \r\n 1986          25            4.725         4.4          -0.5           0 \r\n 1986          26            9.025        -0.35         -15.5          0 \r\n 1986          27            8.725        -12.6         -21.3          0 \r\n 1986          28            6.4          -0.025        -12.4          0 \r\n 1986          29            8.476        -1.3          -8.6           0 \r\n 1986          30            5.55          0.7          -11.325        0 \r\n 1986          31            7.075         3.875        -2.975         0 \r\n 1986          32            11.05         4.325        -0.6           0 \r\n 1986          33            8.899         7.45         -3.45          0 \r\n 1986          34            3.2           3.85         -0.525         2.7 \r\n 1986          35            3.975         7.75          0.725         13.576 \r\n 1986          36            3.775         2.8          -0.55          8.451 \r\n 1986          37            4.975        -0.275        -4.725         2.775 \r\n 1986          38            5.075        -3.1          -7.05          7.075 \r\n 1986          39            8.075        -3.25         -8.375         0 \r\n 1986          40            8.95         -8.125        -14.825        0 \r\n 1986          41            9.875        -11.175       -17.525        0 \r\n 1986          42            9.925        -10.65        -18.325        0 \r\n 1986          43            9.25         -11.75        -17.45         0 \r\n 1986          44            4.076        -4.925        -17            0 \r\n 1986          45            8.025        -5.35         -11.825        0 \r\n 1986          46            6.5          -2.6          -14.55         0.65 \r\n 1986          47            3.75         -3.55         -9.325         5.2 \r\n 1986          48            10.875       -0.3          -7.925         0 \r\n 1986          49            8.3           3.5          -3.825         0 \r\n 1986          50            15.15         6.175        -4.275         0 \r\n 1986          51            6             0.85         -5.375         0 \r\n 1986          52            15.75        -0.95         -10.325        0 \r\n 1986          53            13.051        3.475        -8.5           0 \r\n 1986          54            4.525        -2.2          -10.35         6.275 \r\n 1986          55            7.925         0.25         -8.625         0 \r\n 1986          56            5.425         2.475        -8.025         0 \r\n 1986          57            7.901         8.55         -0.375         0 \r\n 1986          58            9.499         2.175        -4             0 \r\n 1986          59            17.55        -0.3          -10.6          0 \r\n 1986          60            12.701        7.675        -5.9           0 \r\n 1986          61            6.9           8.775         0.5           0 \r\n 1986          62            8.075         7.175         0             0 \r\n 1986          63            13.575        8.8          -0.95          0 \r\n 1986          64            4.8           6.475         0.8           0 \r\n 1986          65            8.701         7.475        -4.3           0 \r\n 1986          66            18.4         -1.875        -11.675        0 \r\n 1986          67            13.325        6.7          -7.675         0 \r\n 1986          68            10.751        18.925        5             1.7 \r\n 1986          69            2.575         17.675        1.75          8.225 \r\n 1986          70            7.925         10.775       -2.35          0 \r\n 1986          71            1.925         7.5           2.25          8.225 \r\n 1986          72            7.625         11.975        3.95          0.975 \r\n 1986          73            7.751         10.1         -0.65          0 \r\n 1986          74            8.4           10.225       -0.625         0 \r\n 1986          75            12.55         10.075        0.45          0 \r\n 1986          76            10.225        14.75         0.8           1.4 \r\n 1986          77            2.625         17.025        7.625         10.55 \r\n 1986          78            7.875         13.2          1.475         0 \r\n 1986          79            21.875        1.225        -8.475         0 \r\n 1986          80            22.175        7.325        -3.85          0 \r\n 1986          81            17.325        14.025       -0.35          0 \r\n 1986          82            20.074        17            2.675         0 \r\n 1986          83            16.651        16.175       -3.55          0 \r\n 1986          84            19.3          21.575        10.425        0 \r\n 1986          85            21.35         17.125        7.65          4.95 \r\n 1986          86            21            14.35        -1.55          0 \r\n 1986          87            20.825        24.275        6.525         0 \r\n 1986          88            22.275        27.4          13.2          0 \r\n 1986          89            21.675        23.875        12.85         0 \r\n 1986          90            22.85         25.825        13.575        0 \r\n 1986          91            22.725        19.95         7.9           4.025 \r\n 1986          92            20.25         18.525        2.975         0 \r\n 1986          93            7.651         23.275        7.3           9.7 \r\n 1986          94            13.976        20.425        10.025        3.45 \r\n 1986          95            20.501        20.425        12.475        4.825 \r\n 1986          96            15.353        20.075        5.225         0 \r\n 1986          97            22.95         25.9          8.425         0 \r\n 1986          98            22.325        16.2          3.75          0 \r\n 1986          99            24.375        16            0.4           0 \r\n 1986          100           25.025        18.325       -0.175         0 \r\n 1986          101           25.375        22.55         3.8           0 \r\n 1986          102           11.526        21.825        9.875         0 \r\n 1986          103           19.075        20.125        6.5           0 \r\n 1986          104           6.101         16.85         6.3           8.075 \r\n 1986          105           5.699         11.15        -1.2           0 \r\n 1986          106           20.524        17.95         3.125         0 \r\n 1986          107           17.35         16.5          3.8           0 \r\n 1986          108           10.199        22            7.225         0 \r\n 1986          109           22.9          20.55         7.75          0 \r\n 1986          110           17.949        18.725        7.125         0 \r\n 1986          111           8.849         12.6          2.725         0 \r\n 1986          112           27.25         15.525       -3.35          0 \r\n 1986          113           26.175        21.025        1.275         0 \r\n 1986          114           20.5          26.075        8.35          0 \r\n 1986          115           25.225        26.6          15.45         1.325 \r\n 1986          116           20.75         29.35         15.825        0 \r\n 1986          117           18.2          27.4          15.425        1.65 \r\n 1986          118           6.926         23.55         8.95          5.525 \r\n 1986          119           21.85         26.925        6.75          3.925 \r\n 1986          120           3.7           25.25         16.275        17.275 \r\n 1986          121           25.876        20.175        8.5           0 \r\n 1986          122           27.049        17.325        3.075         0 \r\n 1986          123           27.55         20.3          4.65          0 \r\n 1986          124           24.6          25.55         10.65         0 \r\n 1986          125           13.45         25.8          13.5          0 \r\n 1986          126           11.223        25.975        17.3          2.55 \r\n 1986          127           23.1          26.025        11.25         0 \r\n 1986          128           21.95         26.375        13.275        10.9 \r\n 1986          129           19.325        26.35         14.2          1.6 \r\n 1986          130           8.325         24.45         14.65         0 \r\n 1986          131           9.276         22.45         17.075        3.675 \r\n 1986          132           21.151        25.675        16.225        2.1 \r\n 1986          133           16.275        23.675        16.35         2.475 \r\n 1986          134           26.601        24.575        9.95          0 \r\n 1986          135           3.976         21.525        14.8          26.725 \r\n 1986          136           10.725        25.55         11.525        6.525 \r\n 1986          137           2.05          21.3          12.675        53.3 \r\n 1986          138           21.7          19.9          8.85          0 \r\n 1986          139           25.724        20            8.8           0 \r\n 1986          140           26.025        19.55         5.95          0 \r\n 1986          141           30.375        21.25         6.85          0 \r\n 1986          142           29.001        22.3          9.675         0 \r\n 1986          143           24.8          22.85         8.425         0 \r\n 1986          144           16.026        23.95         12.375        4.825 \r\n 1986          145           11.7          23.4          12.55         6.525 \r\n 1986          146           3.551         20.95         14.725        49.325 \r\n 1986          147           6.427         23.75         15.5          4.85 \r\n 1986          148           10.3          23.675        14.225        2.975 \r\n 1986          149           20.449        24.325        16.625        3.75 \r\n 1986          150           24.8          25.95         15.45         0 \r\n 1986          151           26.65         28.975        16.25         0 \r\n 1986          152           24.926        31.325        17.25         0 \r\n 1986          153           30            26.05         10.35         0 \r\n 1986          154           29.425        27.25         9             0 \r\n 1986          155           18.725        26.85         16.925        16.125 \r\n 1986          156           6.376         25.775        19.325        6.2 \r\n 1986          157           8.875         27.525        16.025        0 \r\n 1986          158           20.725        29.825        19.8          0 \r\n 1986          159           27.675        28.95         18.175        0 \r\n 1986          160           16.399        25.05         16.3          6.35 \r\n 1986          161           19.376        29.35         21.05         7.25 \r\n 1986          162           14.475        27.9          21.575        2.4 \r\n 1986          163           15.925        26.05         12.65         0 \r\n 1986          164           28.325        28.85         15.7          0 \r\n 1986          165           7.126         26.55         16.175        5.45 \r\n 1986          166           12.125        29.075        16.925        0 \r\n 1986          167           30.525        30.025        20.35         0 \r\n 1986          168           29.05         27.475        11.55         0 \r\n 1986          169           23.7          30.575        17.925        0 \r\n 1986          170           28.1          31.575        20.475        0 \r\n 1986          171           29.775        33.1          21.05         0 \r\n 1986          172           24.75         32.025        20.925        4.8 \r\n 1986          173           18.125        30.275        22.375        7.3 \r\n 1986          174           30.024        29.05         15.475        0 \r\n 1986          175           29.451        26.2          14.25         0 \r\n 1986          176           31.45         27.6          12.975        0 \r\n 1986          177           21.7          30.975        17.975        0 \r\n 1986          178           11.175        28.675        22.575        3.45 \r\n 1986          179           16.399        30.675        20.875        0 \r\n 1986          180           11.05         30.2          20.3          14.325 \r\n 1986          181           11.428        28.975        21.2          29.999 \r\n 1986          182           3.15          26.85         18.4          3.45 \r\n 1986          183           21.351        26.7          15.4          0 \r\n 1986          184           27.025        29            15.75         0 \r\n 1986          185           28.325        32.2          20            0 \r\n 1986          186           25.825        31.6          22.5          5.1 \r\n 1986          187           10.352        31.7          22.1          14.274 \r\n 1986          188           10.7          30.95         20.525        18.474 \r\n 1986          189           18.926        31            21.9          24.299 \r\n 1986          190           16.95         29.45         23.6          23.974 \r\n 1986          191           15.401        27.825        19.575        3.15 \r\n 1986          192           21.075        28.525        21.85         12.675 \r\n 1986          193           17.399        31.15         19.8          1.325 \r\n 1986          194           27.65         31.575        16.55         0 \r\n 1986          195           17.975        29.85         21.175        0 \r\n 1986          196           23.926        31.2          22.95         0 \r\n 1986          197           26.976        32.8          23.35         0 \r\n 1986          198           29.625        33.375        22.55         0 \r\n 1986          199           29.25         33.7          22.1          0 \r\n 1986          200           27.176        32.3          23.45         3.925 \r\n 1986          201           26.65         29.45         18.3          0 \r\n 1986          202           25.45         29.425        16.35         0 \r\n 1986          203           29.1          31.05         17.85         0 \r\n 1986          204           26.85         31.275        18.925        0 \r\n 1986          205           21.924        31.275        21.9          4.325 \r\n 1986          206           22.275        30.625        22.575        4.75 \r\n 1986          207           20.025        30.85         19.175        0 \r\n 1986          208           20.774        30.475        19.6          0 \r\n 1986          209           26.775        30.875        21.775        4.525 \r\n 1986          210           27.4          31.225        20.775        2.125 \r\n 1986          211           19.199        30.2          20.825        0 \r\n 1986          212           19.599        29.325        20.475        0 \r\n 1986          213           22.825        27.7          14.775        0 \r\n 1986          214           24.85         25.55         16.4          0 \r\n 1986          215           26.6          25.7          12.2          0 \r\n 1986          216           19.375        27.05         14.5          0 \r\n 1986          217           2.625         23.525        17.15         24.226 \r\n 1986          218           5.95          25.15         18.15         8.65 \r\n 1986          219           18.4          26.275        14.75         0 \r\n 1986          220           21.975        27.325        16.625        7.15 \r\n 1986          221           18.001        27.875        15.8          0 \r\n 1986          222           20.75         25.1          17.725        2.325 \r\n 1986          223           26.625        23.45         10.25         0 \r\n 1986          224           16            23.725        12.925        6.825 \r\n 1986          225           5.677         26.4          15.875        11.975 \r\n 1986          226           10.349        29.25         17.4          22.826 \r\n 1986          227           12.073        27.375        19.475        3.275 \r\n 1986          228           14.926        29.575        18.125        0 \r\n 1986          229           15.875        28.925        18.375        1.325 \r\n 1986          230           23.45         27.925        18.05         0 \r\n 1986          231           25.6          26.725        16.15         0 \r\n 1986          232           19.526        28.625        15.15         0 \r\n 1986          233           15.976        28.2          16.9          0 \r\n 1986          234           20.026        29.35         16.9          0 \r\n 1986          235           18.626        25.925        16.6          0 \r\n 1986          236           15.052        25.425        12.25         0 \r\n 1986          237           18.326        30.25         14.6          5.4 \r\n 1986          238           12.226        27.125        20.5          6.35 \r\n 1986          239           17.525        23.4          13.575        0 \r\n 1986          240           20.751        20.625        5.625         0 \r\n 1986          241           23.225        22.675        8             0 \r\n 1986          242           19.426        25.9          10.175        0 \r\n 1986          243           22.875        27.15         11.775        0 \r\n 1986          244           24            28.3          13.075        0 \r\n 1986          245           19.199        28.05         15.225        0 \r\n 1986          246           7.05          27.275        17.8          0 \r\n 1986          247           24.125        26.4          18.7          0 \r\n 1986          248           15.951        25.85         11.85         0 \r\n 1986          249           7             19.725        10.75         0 \r\n 1986          250           18.375        20.125        5.3           0 \r\n 1986          251           24            23.175        7.35          0 \r\n 1986          252           4.776         27.2          11.3          6.05 \r\n 1986          253           9.801         29.65         19.5          7.975 \r\n 1986          254           4.7           25.375        18            10.5 \r\n 1986          255           21.925        23.325        11.725        3.85 \r\n 1986          256           12.126        26.3          12.7          0 \r\n 1986          257           16.351        27.3          12.975        0 \r\n 1986          258           11.327        27.4          14.625        0 \r\n 1986          259           16.2          23.325        10.6          8.375 \r\n 1986          260           2.8           25.075        12.275        0 \r\n 1986          261           6.8           26.55         17.825        24.126 \r\n 1986          262           7.899         27.15         17.975        10.076 \r\n 1986          263           5.776         26.85         20.275        5.075 \r\n 1986          264           16.051        29.025        18.625        4.8 \r\n 1986          265           9.775         27.175        19.975        12.576 \r\n 1986          266           5.775         24.575        16.55         7.275 \r\n 1986          267           2.726         26.25         16.35         26.176 \r\n 1986          268           17.35         29.65         21.4          3.3 \r\n 1986          269           15.799        26.95         21.85         0 \r\n 1986          270           14            28.6          19.9          3.375 \r\n 1986          271           7.451         27.25         16.375        10.851 \r\n 1986          272           2.85          25.25         21.1          24.526 \r\n 1986          273           5.225         22.1          15.15         10.776 \r\n 1986          274           4.425         21.125        13.825        11.875 \r\n 1986          275           7.225         22            15.325        0 \r\n 1986          276           5.4           23.25         19.05         14.6 \r\n 1986          277           4.8           20.775        12.6          3.75 \r\n 1986          278           12.076        22.275        7.3           0 \r\n 1986          279           17.326        16.9          3             0 \r\n 1986          280           17.425        22.8          7.45          0 \r\n 1986          281           12.25         23.275        12.65         0 \r\n 1986          282           11.274        17.475        9.375         0 \r\n 1986          283           15.751        18.95         3.1           0 \r\n 1986          284           5.5           19.575        10.25         2.2 \r\n 1986          285           4             17.9          6.425         14.6 \r\n 1986          286           3.475         8.475         1.45          4.925 \r\n 1986          287           11.801        11.7         -1.05          0 \r\n 1986          288           16.5          15.85         0.5           0 \r\n 1986          289           15.675        20.3          2.4           0 \r\n 1986          290           12.751        15.95         4.425         0 \r\n 1986          291           15.75         17.75         2.15          0 \r\n 1986          292           14.575        21.075        4.35          0 \r\n 1986          293           13.575        24.3          8.825         0 \r\n 1986          294           13.725        24.375        11.525        0 \r\n 1986          295           3.975         21.45         13.15         0 \r\n 1986          296           4.901         20.775        11.225        4.525 \r\n 1986          297           2.425         16.325        13.25         6.475 \r\n 1986          298           2.25          14.975        10.875        30.45 \r\n 1986          299           1.675         12.625        7.65          15.5 \r\n 1986          300           14.325        18.75         4.8           0 \r\n 1986          301           12.1          21.3          7.75          0 \r\n 1986          302           11.726        17            5.8           0 \r\n 1986          303           12.975        17.4          2.975         0 \r\n 1986          304           11.2          20.375        5.975         0 \r\n 1986          305           2.85          16.4          5.2           2.15 \r\n 1986          306           12.95         10.025       -1.1           0 \r\n 1986          307           6.524         13.575        0.875         0 \r\n 1986          308           6.524         9.7           1.375         0 \r\n 1986          309           9.024         12.75         1.65          0 \r\n 1986          310           10.049        13.2          1.65          0 \r\n 1986          311           5.425         17.8          6.225         0 \r\n 1986          312           9.299         16.5          4.3           1.45 \r\n 1986          313           11.825        7.325        -3.05          0 \r\n 1986          314           7.05          7.2          -3.225         0 \r\n 1986          315           8.6           1.475        -7.95          0 \r\n 1986          316           8.374        -1.075        -8.425         0 \r\n 1986          317           10.65        -3.675        -14.4          0 \r\n 1986          318           5.375         3.7          -9.65          0 \r\n 1986          319           9.275         7.375        -5.425         0 \r\n 1986          320           10.85         6.4          -2.25          0 \r\n 1986          321           6.25          6.5          -1             0 \r\n 1986          322           2.45          3.35         -1.45          3.8 \r\n 1986          323           2.05          5.7          -5.45          1.25 \r\n 1986          324           3.275         2            -3.925         5.275 \r\n 1986          325           7.176         4.325        -7.225         0 \r\n 1986          326           9.35          9.925        -0.95          0 \r\n 1986          327           3.825         6.675        -2.65          1.85 \r\n 1986          328           9.475         5.925        -5.825         0 \r\n 1986          329           7.3           8.15         -2.125         0 \r\n 1986          330           4.225         6.55          0.05          0 \r\n 1986          331           9.775         8.1          -2.325         0 \r\n 1986          332           7             9.675        -1.575         0 \r\n 1986          333           8.425         6.175         0.325         0 \r\n 1986          334           2.9           4.55         -0.375         2.85 \r\n 1986          335           2.325         5.4           0.55          9.85 \r\n 1986          336           6.825         6.725         0.3           0.9 \r\n 1986          337           6.576         3.75         -1.5           0 \r\n 1986          338           6.45          0.425        -4.05          0 \r\n 1986          339           10.15         3.15         -6.35          0 \r\n 1986          340           3.925         6.875        -0.375         0.4 \r\n 1986          341           2.625         4.6           2.25          15.65 \r\n 1986          342           2.125         3.925         1.175         2.4 \r\n 1986          343           5.65          2.2          -6.425         0.5 \r\n 1986          344           7.1          -6.175        -14.3          0 \r\n 1986          345           4.8           2.85         -11.175        0 \r\n 1986          346           5.375        -1.35         -12.35         0 \r\n 1986          347           7            -3.975        -14.475        0 \r\n 1986          348           8.75          3.75         -5.425         0 \r\n 1986          349           7.825         4            -2.5           0 \r\n 1986          350           4.1           3.875         0.35          0 \r\n 1986          351           5.175         4.575        -0.6           0 \r\n 1986          352           3.825         3.625        -2.225         0 \r\n 1986          353           9.4           5.65         -3.375         0 \r\n 1986          354           5.376         4.225        -3             0 \r\n 1986          355           8.15          5.525        -3.375         0 \r\n 1986          356           4.2           4.075        -1.45          0 \r\n 1986          357           4.95          2.925        -2.825         0 \r\n 1986          358           4.075         4.15         -2.6           0 \r\n 1986          359           2.975         4.55         -4.4           0 \r\n 1986          360           2.95          3.2          -4.8           0 \r\n 1986          361           8.675         4.725        -4.025         0 \r\n 1986          362           6.126         5.15         -3.225         0 \r\n 1986          363           2.475         3.9          -0.125         0 \r\n 1986          364           3.425         4.725        -4.65          0 \r\n 1986          365           5.975         5.675        -2.875         0 \r\n 1987          1             3.675         1.9          -3.45          0 \r\n 1987          2             4             4.275        -6.125         0 \r\n 1987          3             6.4           3            -5.45          0 \r\n 1987          4             7.925         5.075        -5.25          0 \r\n 1987          5             7.575         5.175        -3.975         0 \r\n 1987          6             5.975         6.825        -0.175         0 \r\n 1987          7             3.875         4.475        -1.3           0 \r\n 1987          8             6.875         3.575        -4.475         3.5 \r\n 1987          9             3.725         1.325        -3.725         4.475 \r\n 1987          10            4.675         0.275        -3.95          1.425 \r\n 1987          11            3.875         0.925        -8.85          0 \r\n 1987          12            8.35          7.15         -3.275         0 \r\n 1987          13            8.875         9.55         -1.625         0 \r\n 1987          14            8.7           6.775        -0.125         0 \r\n 1987          15            9             3.2          -4.15          0 \r\n 1987          16            7.875        -3.075        -8.8           0 \r\n 1987          17            5.275         2.725        -7.25          1.15 \r\n 1987          18            8.5          -0.8          -7.95          0 \r\n 1987          19            10.075        0.025        -9.775         0 \r\n 1987          20            10.5         -1.525        -10.8          0 \r\n 1987          21            6.725        -1.175        -8.95          0 \r\n 1987          22            10.9         -0.05         -8.85          0 \r\n 1987          23            10.6         -8.05         -19.4          0 \r\n 1987          24            10.175       -6.825        -17.2          0 \r\n 1987          25            10.275       -5.35         -15.325        0 \r\n 1987          26            11.299       -1.975        -14.4          0 \r\n 1987          27            5.9           3.025        -10.2          1.25 \r\n 1987          28            9.275         3.525        -6.975         0 \r\n 1987          29            2.65          3.775        -3.65          1.425 \r\n 1987          30            4.8           4.3          -0.85          0 \r\n 1987          31            7.475         6.875        -6.675         0 \r\n 1987          32            10.825        11.95        -0.175         0 \r\n 1987          33            9.5           13.625        0.95          0 \r\n 1987          34            11.6          7.35         -4.175         0 \r\n 1987          35            10.975        8.975        -1.75          0 \r\n 1987          36            5.1           5.75         -1.375         0.2 \r\n 1987          37            12.375        10.85        -1.95          0 \r\n 1987          38            13.025        13.95        -1.1           0 \r\n 1987          39            13.325        9.35         -4.85          0 \r\n 1987          40            11.975        5.825        -6.775         0 \r\n 1987          41            12.6          9.175        -3.1           0 \r\n 1987          42            13.775        14.475        0.65          0 \r\n 1987          43            9.725         9.425        -0.625         0 \r\n 1987          44            9.3           11.075       -2.325         0 \r\n 1987          45            5.05          7.7           0.475         0 \r\n 1987          46            10.075        3.075        -6.025         0 \r\n 1987          47            9.099         2.525        -6.225         0 \r\n 1987          48            11.825        4.5          -5.725         0 \r\n 1987          49            15.775        5.85         -8             0 \r\n 1987          50            14.001        8.95         -3.725         0 \r\n 1987          51            8.575         9.525        -1.35          0 \r\n 1987          52            11.825        10.95        -2.225         0 \r\n 1987          53            9.176         8.2          -2.15          0 \r\n 1987          54            16.25         10.1         -3.05          0 \r\n 1987          55            11.05         10.2         -1             0 \r\n 1987          56            11.45         12.625       -2.2           0 \r\n 1987          57            9.025         12.775       -1.675         0 \r\n 1987          58            7.799         12.375       -0.625         1.15 \r\n 1987          59            3.5           8.45          1.55          4.825 \r\n 1987          60            5.825         4.2          -0.275         7.725 \r\n 1987          61            16.475        12.075       -3.95          0 \r\n 1987          62            17.15         10.075       -3.8           0 \r\n 1987          63            12.8          14.225       -0.9           0 \r\n 1987          64            16.8          15            2.85          0 \r\n 1987          65            17.65         17.725        0.15          0 \r\n 1987          66            18.45         21.425        5.075         0 \r\n 1987          67            17.824        20.625        4.95          0 \r\n 1987          68            7.549         11.8         -2.45          0 \r\n 1987          69            15.975        3.425        -6.675         0 \r\n 1987          70            17.201        6.65         -3.975         0 \r\n 1987          71            9.751         9.5          -0.75          0 \r\n 1987          72            14.126        15.625        2.075         0 \r\n 1987          73            11.225        15.35         3.05          1.9 \r\n 1987          74            4.925         8.725         0.75          9.1 \r\n 1987          75            11.624        10.375       -0.975         0 \r\n 1987          76            10            11.15         0.725         0 \r\n 1987          77            5.301         14.45         3             16.526 \r\n 1987          78            9.4           17.2          5.625         0 \r\n 1987          79            17.15         16.925        2.025         0 \r\n 1987          80            15.35         17.7          1.7           0 \r\n 1987          81            15.549        17.525        7.325         0 \r\n 1987          82            16.475        21.625        8.95          8.225 \r\n 1987          83            5.15          16.275        9.3           10.25 \r\n 1987          84            7.7           11.625        5.475         2.025 \r\n 1987          85            6.925         14.2          3.95          0 \r\n 1987          86            7.85          15.625        3.525         4.575 \r\n 1987          87            10.149        14.5          3.275         2.35 \r\n 1987          88            8.35          9.2           0.875         13.026 \r\n 1987          89            22.425        3.075        -7.475         0 \r\n 1987          90            23.5          7.725        -5.95          0 \r\n 1987          91            9.325         9.4           1.575         0 \r\n 1987          92            21.375        7.3          -4.05          0 \r\n 1987          93            21.4          7.625        -3.85          0 \r\n 1987          94            22.6          12.675       -2.225         0 \r\n 1987          95            22.625        16.8         -0.875         0 \r\n 1987          96            15.974        19.075        1.8           0 \r\n 1987          97            24.275        22.5          2.7           0 \r\n 1987          98            23.575        22.4          6.275         0 \r\n 1987          99            23.5          24.775        6.85          0 \r\n 1987          100           11.999        18.25         8.2           1.725 \r\n 1987          101           8.152         17.1          4.625         1.2 \r\n 1987          102           22.725        21.2          3.05          0 \r\n 1987          103           3.55          15.725        8.85          11.225 \r\n 1987          104           4.452         21.85         10.5          15.325 \r\n 1987          105           14.15         18.4          8             0.3 \r\n 1987          106           21.075        21.95         6.675         0 \r\n 1987          107           23.7          26.75         10.65         0 \r\n 1987          108           24.925        26.6          11.225        0 \r\n 1987          109           23.75         28.05         13.1          0 \r\n 1987          110           20.35         30.225        14.1          0 \r\n 1987          111           5.501         25.425        13.975        0.6 \r\n 1987          112           5.4           17.075        7.95          4.175 \r\n 1987          113           9.024         19.55         6.475         2.725 \r\n 1987          114           25.475        21.35         6.45          0 \r\n 1987          115           25.675        23.25         5.9           0 \r\n 1987          116           22.351        26.25         9.725         2.5 \r\n 1987          117           26.75         22.125        13.475        0.6 \r\n 1987          118           25.275        22.775        5.65          0 \r\n 1987          119           26.7          29.575        11.8          0 \r\n 1987          120           27.55         21.175        5.8           0 \r\n 1987          121           24.975        26.975        6             0 \r\n 1987          122           17.851        27.8          14.175        2.375 \r\n 1987          123           8.024         24.775        11.825        0 \r\n 1987          124           23.849        22.225        8.3           0 \r\n 1987          125           25.225        22.025        4.575         0 \r\n 1987          126           28.45         25.45         8.6           0 \r\n 1987          127           27.55         26.175        9.05          0 \r\n 1987          128           27.85         27.35         10            0 \r\n 1987          129           29.3          29.25         12.25         0 \r\n 1987          130           23.726        29.95         13.9          0 \r\n 1987          131           23.9          28.85         15.85         0 \r\n 1987          132           29.9          25.35         8.975         0 \r\n 1987          133           30            28.85         7.55          0 \r\n 1987          134           21.374        29.125        17.9          0 \r\n 1987          135           30.05         26.2          9.55          0 \r\n 1987          136           30.375        28.45         10.075        0 \r\n 1987          137           19.674        30.925        14.05         2.075 \r\n 1987          138           20.925        27.6          17.8          3.45 \r\n 1987          139           18.276        28.325        19.05         10.975 \r\n 1987          140           19.4          28.175        20.075        9.6 \r\n 1987          141           22.525        28.15         19.875        3.775 \r\n 1987          142           14.9          25.75         10.425        0 \r\n 1987          143           19.377        23.825        8.175         0 \r\n 1987          144           9.15          26.35         10.425        0 \r\n 1987          145           6.802         24.425        12.55         3.875 \r\n 1987          146           18.902        29.2          17.6          1.1 \r\n 1987          147           21.75         28.275        19.525        4.925 \r\n 1987          148           16.85         29.325        18.45         0 \r\n 1987          149           20.125        29.35         19.45         0 \r\n 1987          150           22.9          27.375        18.75         1.7 \r\n 1987          151           22.574        29.225        18.3          3.65 \r\n 1987          152           27.6          30.1          18.825        6.025 \r\n 1987          153           13.924        27.375        18.8          1.675 \r\n 1987          154           28.45         26.775        10.9          0 \r\n 1987          155           30.7          25.7          9             0 \r\n 1987          156           30.15         30.375        13.65         0 \r\n 1987          157           29.2          30.775        15.4          0 \r\n 1987          158           27.65         31.325        16.575        0 \r\n 1987          159           26.35         30.9          18.4          0 \r\n 1987          160           19.024        28.55         16.6          1.125 \r\n 1987          161           11.376        29.05         12.25         0 \r\n 1987          162           14.7          28.375        18.8          3.275 \r\n 1987          163           29.225        32.45         21            0 \r\n 1987          164           29.625        33.45         20.35         0 \r\n 1987          165           31.05         36.25         20.975        0 \r\n 1987          166           30.475        33.95         21.05         0 \r\n 1987          167           30.525        33.625        17.55         0 \r\n 1987          168           23.7          31            21.525        0 \r\n 1987          169           23.5          31.325        22.35         8.25 \r\n 1987          170           13.576        30.05         21.625        15.75 \r\n 1987          171           11.876        27.8          21.725        19.374 \r\n 1987          172           19.924        27.8          20.475        4.25 \r\n 1987          173           23.55         30.025        19.975        0 \r\n 1987          174           19.799        29.525        20.15         0 \r\n 1987          175           26.55         30.825        20.525        12.725 \r\n 1987          176           21.574        28.575        20.4          5.375 \r\n 1987          177           29.35         26.5          15.725        0 \r\n 1987          178           31.7          26.45         11.2          0 \r\n 1987          179           29.525        31.1          15.35         0 \r\n 1987          180           16.824        29.975        19.65         3.25 \r\n 1987          181           17.698        28.975        18.075        0 \r\n 1987          182           25.348        29.6          16.875        0 \r\n 1987          183           25.574        31.225        17.2          0 \r\n 1987          184           29.1          32.25         18.375        0 \r\n 1987          185           25.124        33.85         18.225        0 \r\n 1987          186           16.149        32.45         20.25         4.625 \r\n 1987          187           23.324        31.175        21.325        2.575 \r\n 1987          188           15.474        30.3          22            2.1 \r\n 1987          189           21.5          30.6          21.525        1.625 \r\n 1987          190           21.576        30.75         22.075        1.225 \r\n 1987          191           20.199        30.75         21.75         0 \r\n 1987          192           25.325        30.975        22.425        4.825 \r\n 1987          193           14.25         30.95         22            2.7 \r\n 1987          194           19.775        27.525        17            1.275 \r\n 1987          195           21.85         26.8          12.55         5.725 \r\n 1987          196           25.95         28.25         15.825        8.775 \r\n 1987          197           27.275        30.25         13.3          0 \r\n 1987          198           22.725        32.875        19.825        0 \r\n 1987          199           21            31.925        20.075        0 \r\n 1987          200           23.85         32.375        21.45         0 \r\n 1987          201           24.375        33.55         21.85         0 \r\n 1987          202           22.3          32.7          21.95         0 \r\n 1987          203           22.025        33.8          20.85         0 \r\n 1987          204           24.25         35.35         20.925        0 \r\n 1987          205           18.301        33.95         21.6          1.325 \r\n 1987          206           25.85         33.375        23.225        0.975 \r\n 1987          207           24.05         34.15         22.975        0 \r\n 1987          208           23.65         33.425        23.425        0 \r\n 1987          209           22.825        32.3          22.95         0 \r\n 1987          210           22.249        33.35         22.95         0 \r\n 1987          211           22.574        34.25         24.1          0 \r\n 1987          212           23.4          34.65         23.625        0 \r\n 1987          213           26.224        34.3          22.625        0 \r\n 1987          214           25.724        32.075        24.275        0 \r\n 1987          215           13.052        31.375        22.025        0 \r\n 1987          216           21.423        28.1          19.675        0 \r\n 1987          217           23.076        29.025        16.15         0 \r\n 1987          218           23.2          31.275        17.1          0 \r\n 1987          219           12.877        32.925        20.375        6.225 \r\n 1987          220           8.725         30.975        21.475        24.401 \r\n 1987          221           19.375        28.95         20.15         3.1 \r\n 1987          222           22.45         31.35         18.15         0 \r\n 1987          223           22.326        31.825        18.65         0 \r\n 1987          224           19.45         33.45         17.475        0 \r\n 1987          225           4.275         30.325        20.95         4.05 \r\n 1987          226           10.55         28.625        22.925        4.975 \r\n 1987          227           22.275        31.7          23.45         3.475 \r\n 1987          228           16.652        32            23.55         3.65 \r\n 1987          229           22.926        29.825        17.15         0 \r\n 1987          230           20.225        28.775        18.675        4.65 \r\n 1987          231           18.875        28.375        13.8          0 \r\n 1987          232           19.024        30.85         16.45         0 \r\n 1987          233           22.475        33.125        20.95         15.975 \r\n 1987          234           9.776         30.05         18.3          0 \r\n 1987          235           22.725        24.625        10.775        0 \r\n 1987          236           11.624        24.35         9.85          2.975 \r\n 1987          237           1.35          20.975        12.45         69.627 \r\n 1987          238           2.801         23.4          14.625        18.175 \r\n 1987          239           5             21.85         13.4          2.65 \r\n 1987          240           15.026        24.925        13.875        0 \r\n 1987          241           22.7          27.725        12.975        0 \r\n 1987          242           19.15         27.825        15.4          0 \r\n 1987          243           23.9          24.2          10.75         0 \r\n 1987          244           24.175        26.875        10.05         0 \r\n 1987          245           20.5          24.825        12.475        0 \r\n 1987          246           24.85         25.775        9.25          0 \r\n 1987          247           20.8          30.75         11.85         0 \r\n 1987          248           18.175        32.85         15.35         0 \r\n 1987          249           10.575        27.025        17.875        2.2 \r\n 1987          250           14.625        24.85         17.875        3.375 \r\n 1987          251           17.8          25.5          16.575        0 \r\n 1987          252           22.15         25.65         10.525        0 \r\n 1987          253           6.576         25.625        14.4          1.4 \r\n 1987          254           20.175        26.8          13.65         0 \r\n 1987          255           19.575        23.85         14.5          1.5 \r\n 1987          256           12.177        22.975        9.775         0 \r\n 1987          257           16.375        27.6          12.35         5.975 \r\n 1987          258           4.025         25.45         18.175        9.7 \r\n 1987          259           12.925        22.975        18.5          17.226 \r\n 1987          260           13.2          23.85         16.2          3.275 \r\n 1987          261           8.3           21.425        14.7          0 \r\n 1987          262           11.275        21.55         8.25          0 \r\n 1987          263           11.201        19.825        8.85          0 \r\n 1987          264           10.601        19.425        8.525         0 \r\n 1987          265           10.2          21.775        9.8           0 \r\n 1987          266           19.95         24.825        9.2           0 \r\n 1987          267           20            27.45         10.6          0 \r\n 1987          268           19.95         25.475        8.65          0 \r\n 1987          269           17.724        27.825        11.375        0 \r\n 1987          270           17.575        29.325        15.975        7.625 \r\n 1987          271           7.7           24.4          15.225        2.925 \r\n 1987          272           9.351         21.9          9.85          0 \r\n 1987          273           16.6          21.025        7.6           0 \r\n 1987          274           19.325        27.25         7.075         0 \r\n 1987          275           13.675        22.325        5.2           0 \r\n 1987          276           19.1          17            0.4           0 \r\n 1987          277           19            24.25         4.5           0 \r\n 1987          278           15.925        21.675        11.9          0 \r\n 1987          279           9.876         16.1          6.5           0 \r\n 1987          280           16.725        13.5          2.5           0 \r\n 1987          281           15.9          17.7          2.025         0 \r\n 1987          282           12.575        15.6          6.55          0 \r\n 1987          283           6.475         10.875        2.4           0 \r\n 1987          284           17.15         13.025       -2             0 \r\n 1987          285           16.825        18.775       -0.05          0 \r\n 1987          286           15.475        21.1          3.675         0 \r\n 1987          287           7.975         19.225        8             0 \r\n 1987          288           13.951        25.175        7.55          0 \r\n 1987          289           3.6           21.6          12.35         3.775 \r\n 1987          290           10.375        15.1          5             0.8 \r\n 1987          291           12.351        20.35         4.8           0 \r\n 1987          292           10.024        16.225        5.75          0.45 \r\n 1987          293           10.65         9.65          1.05          0 \r\n 1987          294           14.125        10.65        -2.025         0 \r\n 1987          295           11.624        15.675        2.95          0 \r\n 1987          296           11.376        15.025       -0.95          0 \r\n 1987          297           8.4           11.05         3.9           2.5 \r\n 1987          298           12.45         12.8         -0.625         0 \r\n 1987          299           3.825         15            4.525         0.4 \r\n 1987          300           12.4          13.475        0.35          0 \r\n 1987          301           12.4          13.55        -0.8           0 \r\n 1987          302           10.675        17.125        3             0 \r\n 1987          303           12.75         23.55         4.675         0 \r\n 1987          304           4.475         17.225        5.95          2.75 \r\n 1987          305           5.35          20.65         14.05         8.976 \r\n 1987          306           6.55          22.125        15.1          0.65 \r\n 1987          307           12.125        25.8          13            0 \r\n 1987          308           12.6          21            12.2          0 \r\n 1987          309           12.475        13.675        2.525         0 \r\n 1987          310           4.525         14.75         3.55          0 \r\n 1987          311           4.801         17.525        7.975         2.175 \r\n 1987          312           5.674         18.875        8.45          0 \r\n 1987          313           12.65         9.3          -2.475         0 \r\n 1987          314           12.55         7.125        -4.1           0 \r\n 1987          315           12.05         10.825       -2.7           0 \r\n 1987          316           11.075        15.7         -1.1           0 \r\n 1987          317           6.3           13.6          3.975         0 \r\n 1987          318           10.825        17.775        3.3           0 \r\n 1987          319           7.025         17.4          6.25          0 \r\n 1987          320           3.025         14.85         9.3           20.176 \r\n 1987          321           3.4           13.05         5.075         13.301 \r\n 1987          322           11.125        9.4          -1.65          0 \r\n 1987          323           8.6           9.7           0             0 \r\n 1987          324           10.925        4.425        -5.25          0 \r\n 1987          325           10.675        6.95         -4.525         0 \r\n 1987          326           7.7           12.975       -1.55          0.7 \r\n 1987          327           7.901         10.55         4.1           2.25 \r\n 1987          328           2.8           4.875        -0.15          4.925 \r\n 1987          329           3.9           4.4          -0.65          4.925 \r\n 1987          330           3.55          4.175        -3             1.15 \r\n 1987          331           3.225         3.125        -1.675         8.476 \r\n 1987          332           2.6           7.55          1.475         19.051 \r\n 1987          333           5.475         5.925         1.425         0 \r\n 1987          334           3.85          3.75         -1.375         0 \r\n 1987          335           4.35          2.475        -1.9           0 \r\n 1987          336           6.376         6.125        -3.35          0 \r\n 1987          337           5.45          3.825         0.8           0 \r\n 1987          338           9.075         3.725        -3.5           0 \r\n 1987          339           8.75          6.15         -1.725         0 \r\n 1987          340           2.275         4.9           1.05          2.2 \r\n 1987          341           2.775         5.525         2.725         1.3 \r\n 1987          342           1.8           11.875        3.975         1.975 \r\n 1987          343           6.851         12.55         4.375         3.175 \r\n 1987          344           9.025         10.125       -0.275         0 \r\n 1987          345           9.2           12.225        3.7           0 \r\n 1987          346           4.35          7.175         1.25          0 \r\n 1987          347           7.55          5.525        -1.15          0 \r\n 1987          348           3.625         2.475        -2.075         2 \r\n 1987          349           2.175        -0.85         -3.875         14.45 \r\n 1987          350           7.475        -2.325        -7.6           0 \r\n 1987          351           7.225        -3.225        -16.1          0 \r\n 1987          352           3.525         2.2          -11.05         3.2 \r\n 1987          353           2.75          2.8          -0.925         17.8 \r\n 1987          354           8.525         2.875        -2.175         12.25 \r\n 1987          355           7.075         2.475        -9.625         0 \r\n 1987          356           8.45          3.1          -2.15          0 \r\n 1987          357           6.076         3.275        -4.175         0 \r\n 1987          358           4.125         4.8           1.325         0.9 \r\n 1987          359           3.3           0.225        -10.925        0 \r\n 1987          360           6.374        -4.3          -14.075        0 \r\n 1987          361           3.55          0.925        -9.7           11.15 \r\n 1987          362           2.9           1.175        -2.05          9.425 \r\n 1987          363           4.275        -2.25         -10.825        0 \r\n 1987          364           7.226         1.5          -7.475         0 \r\n 1987          365           5.725         2.1          -8.75          0 \r\n 1988          1             6.001        -7.95         -21.675        0 \r\n 1988          2             9.275         0.1          -18.025        0 \r\n 1988          3             8.275        -0.625        -8.2           0 \r\n 1988          4             6.876        -4.8          -16.7          0 \r\n 1988          5             7.375        -16.725       -26.975        0 \r\n 1988          6             7.075        -14.65        -28.275        0 \r\n 1988          7             5.45         -9.4          -18.55         0 \r\n 1988          8             7.925        -5.975        -17.35         0 \r\n 1988          9             7.826        -11.275       -17.15         0 \r\n 1988          10            8.101        -8.15         -23.575        0 \r\n 1988          11            4.776         1.25         -8.35          0 \r\n 1988          12            7.525         4.625        -6.5           0 \r\n 1988          13            6.1          -6.2          -21.45         0 \r\n 1988          14            5.3          -3.35         -16.625        0 \r\n 1988          15            8.975         3.875        -6.25          0 \r\n 1988          16            6.824         6.675         1.75          0 \r\n 1988          17            5.274         6.3           4.375         1.225 \r\n 1988          18            7.049         4.275        -1.7           4.7 \r\n 1988          19            3.074         4.6           3.075         18.35 \r\n 1988          20            4.75          4.25         -2.275         3.4 \r\n 1988          21            6.899        -0.5          -9.925         0 \r\n 1988          22            6.25          1.975        -8.7           1.5 \r\n 1988          23            5.874         4            -12.3          1.525 \r\n 1988          24            6.375         4.25         -11.575        0 \r\n 1988          25            8.475         2.55         -15.825        0 \r\n 1988          26            7.525        -9.125        -19.125        0 \r\n 1988          27            6.875         1.525        -13.95         0 \r\n 1988          28            9.026         3.8          -6.6           0 \r\n 1988          29            2.326         10.45         0.8           0 \r\n 1988          30            0.65          17.55         10.025        1.6 \r\n 1988          31            4.274         15.875        1.425         4.675 \r\n 1988          32            4.4          -3.35         -10.25         1.275 \r\n 1988          33            10.425       -3.525        -15.275        0.85 \r\n 1988          34            3.9          -3            -7.45          2.875 \r\n 1988          35            8.551        -6.625        -14.825        0 \r\n 1988          36            12.55        -10.575       -18.275        0 \r\n 1988          37            11.75        -10.075       -19.275        0 \r\n 1988          38            12.225       -2.1          -12.675        0 \r\n 1988          39            6.2          -3.075        -14.35         1.525 \r\n 1988          40            13.775       -1.875        -13.1          0 \r\n 1988          41            4.95         -7            -13.125        10.801 \r\n 1988          42            7.6          -9.7          -21.525        0.95 \r\n 1988          43            6.4          -11.15        -25.8          0 \r\n 1988          44            7.05         -3.925        -19.6          0 \r\n 1988          45            8.225         3.35         -7.525         1.925 \r\n 1988          46            11.05         0.35         -10.1          1.35 \r\n 1988          47            5.575         6.425        -8.45          0 \r\n 1988          48            9.275         6.9          -3.925         0 \r\n 1988          49            10.475        8.825        -3.975         0 \r\n 1988          50            10.525        8.4          -0.225         0 \r\n 1988          51            15.325        2.55         -9.475         0 \r\n 1988          52            7.725         4.725        -14.675        0 \r\n 1988          53            10.626        10.325        1.075         0 \r\n 1988          54            13.825        3.475        -7.3           0 \r\n 1988          55            16.575        0            -6.9           0 \r\n 1988          56            17.7          1.25         -11.525        0 \r\n 1988          57            16.925        15           -3.5           0 \r\n 1988          58            17.75         7.975        -2.8           0 \r\n 1988          59            16.85         13.9         -2.475         0 \r\n 1988          60            17.55         12.4         -2.875         0 \r\n 1988          61            16.276        15           -3.25          0 \r\n 1988          62            14.025        9.025        -3.625         0 \r\n 1988          63            12.549        2.3          -3.7           0 \r\n 1988          64            19.2          5.85         -6.7           0 \r\n 1988          65            18.625        9            -2.875         0 \r\n 1988          66            18.675        12.725       -1.55          0 \r\n 1988          67            8.075         13.25        -0.575         0 \r\n 1988          68            15.8          14.75         5.525         0 \r\n 1988          69            5.749         11.8         -1.3           0 \r\n 1988          70            18.125        13.15        -0.625         0 \r\n 1988          71            11.576        17.225       -0.45          0 \r\n 1988          72            4.525         13.475       -0.325         0 \r\n 1988          73            10.101        0.6          -7             0 \r\n 1988          74            9.65          1.3          -6.725         0 \r\n 1988          75            11.275        2.875        -7.15          0 \r\n 1988          76            10.524        7.15         -5.6           0 \r\n 1988          77            9.8           5.425        -0.925         0 \r\n 1988          78            19.375        6.175        -2.6           0 \r\n 1988          79            13.225        10.25        -3.65          0 \r\n 1988          80            18.675        9.15         -3.7           0 \r\n 1988          81            18.575        10.3         -4.475         0 \r\n 1988          82            20.325        22.275       -2.2           0 \r\n 1988          83            18.85         18.55         5.875         0.325 \r\n 1988          84            7.826         22.2          9.525         10.95 \r\n 1988          85            18.625        18.8          3.625         7.475 \r\n 1988          86            14.949        11.55         2.9           0 \r\n 1988          87            20.451        14.7         -3.75          0 \r\n 1988          88            9.15          23.1          7.5           9.375 \r\n 1988          89            4.525         19.6          3.125         14.601 \r\n 1988          90            23.125        15.625       -1.4           0 \r\n 1988          91            18.048        16.7         -1.325         0.35 \r\n 1988          92            11.624        15.575        2.45          2.125 \r\n 1988          93            4.927         21.6          7.65          6.65 \r\n 1988          94            10.226        16.225        7.225         5.675 \r\n 1988          95            20.6          25.725        5.2           0 \r\n 1988          96            16.426        26.325        10.575        0 \r\n 1988          97            22.526        19.625        2.75          1.7 \r\n 1988          98            23.225        23.175        4.475         0 \r\n 1988          99            23.35         22.625        6.825         0 \r\n 1988          100           19.025        23.7          7.4           0 \r\n 1988          101           7.775         15.325        3.8           0 \r\n 1988          102           22.049        17.6          1.75          0 \r\n 1988          103           25.575        20.275        3.375         0 \r\n 1988          104           20.976        23.525        6.425         0 \r\n 1988          105           24.276        16.95         1.35          0 \r\n 1988          106           25.9          13.225       -1.75          0 \r\n 1988          107           25.9          18.975        1.3           0 \r\n 1988          108           23.449        23.475        4.35          0 \r\n 1988          109           26.375        13.95        -0.8           0 \r\n 1988          110           27.8          14.925       -1.675         0 \r\n 1988          111           18.776        20            3.4           1.65 \r\n 1988          112           9.4           17.025        1.325         0 \r\n 1988          113           4.601         16.35         3.025         5.275 \r\n 1988          114           4.375         14.025        5.15          3.625 \r\n 1988          115           25.076        19.275        1.7           0 \r\n 1988          116           21.524        22.4          6.6           2.3 \r\n 1988          117           4.176         17.725        8.725         1.85 \r\n 1988          118           15.274        13.925        2.825         0 \r\n 1988          119           26.875        19.5          2.475         0 \r\n 1988          120           29.175        22.525        5.6           0 \r\n 1988          121           27.126        24.3          8.325         0 \r\n 1988          122           25.6          24.9          8.55          0 \r\n 1988          123           26.525        24.95         7.25          0 \r\n 1988          124           22.948        24.125        8.175         0 \r\n 1988          125           22.275        22.7          6.45          0 \r\n 1988          126           26.55         25.2          8.85          0 \r\n 1988          127           26.875        26.775        10.75         0 \r\n 1988          128           17.626        27.575        11.9          6.925 \r\n 1988          129           8.751         24.125        14.425        9.25 \r\n 1988          130           8.201         22.5          10.35         1.475 \r\n 1988          131           29.5          24.95         8.575         0 \r\n 1988          132           27            26.8          9.625         0 \r\n 1988          133           27.425        28.15         13.375        2.05 \r\n 1988          134           28.175        24.85         11.6          0 \r\n 1988          135           27.65         29.5          7.95          0 \r\n 1988          136           24.349        28.775        17.325        0 \r\n 1988          137           18.303        22.775        9.95          0 \r\n 1988          138           28.05         24.325        7.7           0 \r\n 1988          139           30.225        26.6          8.35          0 \r\n 1988          140           21.151        27.475        10.525        0 \r\n 1988          141           27.875        29.65         13.4          0 \r\n 1988          142           23.499        31.15         13.35         0.3 \r\n 1988          143           11.874        27.85         16.2          1.4 \r\n 1988          144           2.925         23.2          15.725        14.675 \r\n 1988          145           29.174        25.675        11.125        0 \r\n 1988          146           32            23.55         5.15          0 \r\n 1988          147           27.65         26.975        8.5           0 \r\n 1988          148           18.8          28.875        11.8          0 \r\n 1988          149           27.325        30.7          12.75         0 \r\n 1988          150           26.8          31.075        14.525        0 \r\n 1988          151           27.625        32.275        16.25         0 \r\n 1988          152           28.575        33.125        16.05         0 \r\n 1988          153           23.9          30.175        16.15         1.625 \r\n 1988          154           18.599        28.55         17.9          1.875 \r\n 1988          155           25.95         24.775        13.95         0 \r\n 1988          156           31.15         25.475        9.75          0 \r\n 1988          157           30.45         29.225        11.9          0 \r\n 1988          158           30.575        31.05         13.9          0 \r\n 1988          159           29.45         32.5          14.675        0 \r\n 1988          160           11.898        30.25         17.9          13.925 \r\n 1988          161           31.3          23.35         8.55          0 \r\n 1988          162           31.324        26.5          9.325         0 \r\n 1988          163           32.425        29.225        10.625        0 \r\n 1988          164           29.525        31.2          12.625        0 \r\n 1988          165           28.525        33.5          14.3          0 \r\n 1988          166           28.05         33.125        16.25         0 \r\n 1988          167           21.275        31.35         20            0 \r\n 1988          168           26.375        30.725        15.35         0 \r\n 1988          169           18.027        32.775        15.525        0 \r\n 1988          170           22.6          33.125        17.55         0 \r\n 1988          171           19.751        36.35         17.175        0 \r\n 1988          172           27.1          33.25         21.7          0 \r\n 1988          173           27.2          39.35         21.55         0 \r\n 1988          174           18.225        35.75         23.55         0 \r\n 1988          175           27.175        34.65         16.55         0 \r\n 1988          176           18.502        33.025        19.225        1.525 \r\n 1988          177           28.499        41            23.9          0 \r\n 1988          178           29.3          33            17.325        0 \r\n 1988          179           30.575        31.575        13.45         0 \r\n 1988          180           29.224        36.15         16.05         0 \r\n 1988          181           5.525         33.4          20.125        9.425 \r\n 1988          182           21.398        29.125        14.25         0 \r\n 1988          183           26.625        29.275        10.625        0 \r\n 1988          184           23.323        31.9          12.25         0 \r\n 1988          185           29.025        34.475        16.75         0 \r\n 1988          186           30.175        36.95         16.65         0 \r\n 1988          187           24.15         38.625        19.525        0 \r\n 1988          188           24.675        37.25         21.4          0 \r\n 1988          189           24.35         37.175        20.25         0 \r\n 1988          190           24.225        37.8          20.675        0 \r\n 1988          191           19.551        35.575        22.175        6.6 \r\n 1988          192           19.074        29.325        20.825        3.225 \r\n 1988          193           25.65         33.175        16.85         0 \r\n 1988          194           25.725        34.95         15.8          0 \r\n 1988          195           26.975        37.8          18.9          0 \r\n 1988          196           18.747        31.575        22.3          0.875 \r\n 1988          197           26.35         33.125        22.2          0 \r\n 1988          198           16.201        31.4          21.75         2.3 \r\n 1988          199           26.85         33.9          20.15         0 \r\n 1988          200           16.424        31.425        20.525        12.275 \r\n 1988          201           24.75         33.075        17.35         0 \r\n 1988          202           15.55         30.125        17.375        1.825 \r\n 1988          203           25.775        29.1          14.3          0 \r\n 1988          204           25.45         31.7          15.125        0 \r\n 1988          205           24.05         33.65         16.225        0 \r\n 1988          206           23.1          35.525        18.7          0 \r\n 1988          207           27.375        33.85         21.05         0 \r\n 1988          208           28.25         35.125        17.125        0 \r\n 1988          209           27.95         38            18.725        0 \r\n 1988          210           26.7          37.575        20.1          0 \r\n 1988          211           18.549        32.8          19.875        0 \r\n 1988          212           24.4          28.55         20.55         0 \r\n 1988          213           25.125        31.525        20.175        0 \r\n 1988          214           22.251        35            23.3          0 \r\n 1988          215           21.026        33.1          23            0 \r\n 1988          216           21.101        33.875        23.5          4.9 \r\n 1988          217           16.776        32.525        23.15         3.65 \r\n 1988          218           23.049        34.1          21.55         0.725 \r\n 1988          219           25.75         37.725        18.6          0 \r\n 1988          220           23.25         39.4          19.15         0 \r\n 1988          221           15.55         34.15         24.45         22.276 \r\n 1988          222           14.951        29.65         23.5          4.95 \r\n 1988          223           17.275        33.425        20.775        0 \r\n 1988          224           22.126        35.175        21.975        0 \r\n 1988          225           22.35         37.9          22.85         0 \r\n 1988          226           11.65         33.325        22.725        0 \r\n 1988          227           21.825        34.75         23.7          0 \r\n 1988          228           23.05         36.7          24.175        0 \r\n 1988          229           20.975        37.225        23.6          0 \r\n 1988          230           21            40.35         23.775        1.9 \r\n 1988          231           16.426        34.525        24.025        4.05 \r\n 1988          232           6.751         31.15         22.8          8.95 \r\n 1988          233           18.123        29.95         19.65         0 \r\n 1988          234           19.826        33.675        17.175        0 \r\n 1988          235           1.925         29.65         18.625        41.251 \r\n 1988          236           21.276        31.775        17.75         10.575 \r\n 1988          237           22.701        31.9          15.05         0 \r\n 1988          238           22.801        33            16.175        0 \r\n 1988          239           22.376        30.575        12.5          0 \r\n 1988          240           13.623        24.95         16.025        13.675 \r\n 1988          241           21.4          25.6          9.35          0 \r\n 1988          242           21.576        27.825        10.625        0 \r\n 1988          243           20.85         30.075        13.45         0 \r\n 1988          244           19.65         32.15         13.55         0 \r\n 1988          245           22.6          30.95         14.7          0 \r\n 1988          246           13.1          30.65         16.8          0.775 \r\n 1988          247           18.95         26.775        16.625        0 \r\n 1988          248           9.15          21.025        12.9          0.475 \r\n 1988          249           15.726        21.125        7.15          0 \r\n 1988          250           23.2          25            8.55          0 \r\n 1988          251           23.1          26.6          8.825         0 \r\n 1988          252           20.375        31.175        11.775        0 \r\n 1988          253           23.225        30.1          10.65         0 \r\n 1988          254           21.325        31.975        13.225        0 \r\n 1988          255           17.025        31.825        16.375        0 \r\n 1988          256           16.575        32.125        18.575        0 \r\n 1988          257           19.375        26.4          14.45         0 \r\n 1988          258           20.7          30.6          13.65         0 \r\n 1988          259           13.976        30.2          13.375        0 \r\n 1988          260           8.826         31.05         16.225        2.575 \r\n 1988          261           18.725        29.825        18.675        1.8 \r\n 1988          262           7.949         27.65         20.05         2.775 \r\n 1988          263           8.027         23.925        13.675        15.126 \r\n 1988          264           17.226        22.85         9.8           0 \r\n 1988          265           17.076        26.6          7.725         0 \r\n 1988          266           16.15         30.7          17.5          0 \r\n 1988          267           17.95         24.4          10.95         0 \r\n 1988          268           16.199        24.8          8.4           0 \r\n 1988          269           19.05         27.7          10.075        0 \r\n 1988          270           18            28.7          11.475        0 \r\n 1988          271           14.4          24.45         14.925        13.551 \r\n 1988          272           4.402         27.75         14.825        2.6 \r\n 1988          273           8.524         25.425        16.7          0.875 \r\n 1988          274           7.45          25.25         15.275        0 \r\n 1988          275           2.825         21.15         16.6          2.275 \r\n 1988          276           18.875        20.85         9.05          0 \r\n 1988          277           17.8          20.175        4.95          0 \r\n 1988          278           17.725        14.5          2.775         0 \r\n 1988          279           18.125        14.6          0.4           0 \r\n 1988          280           14.125        15.85         2.475         0 \r\n 1988          281           17.325        17.625        1.6           0 \r\n 1988          282           11            18.05         3.55          0 \r\n 1988          283           14.225        20.55         5.325         0 \r\n 1988          284           16.65         20.475        7.925         0 \r\n 1988          285           17.25         14.975        2.825         0 \r\n 1988          286           16.7          13.7         -0.35          0 \r\n 1988          287           15.425        17.925        0.125         0 \r\n 1988          288           10.824        24.525        6.875         0 \r\n 1988          289           14.275        25.925        11.65         0 \r\n 1988          290           14.3          23.75         11.8          0.475 \r\n 1988          291           3.525         21.125        11.425        5.875 \r\n 1988          292           14.225        15.55         2.7           0 \r\n 1988          293           10.875        13.85         1.275         0 \r\n 1988          294           2.05          13.975        4.95          1.85 \r\n 1988          295           8.851         13.3          6.55          4.875 \r\n 1988          296           14.325        15.725       -0.6           0 \r\n 1988          297           11.15         11.025        5.475         16.7 \r\n 1988          298           12.8          12.1         -1.8           0 \r\n 1988          299           13.775        10.575       -0.725         0 \r\n 1988          300           13.225        12.125       -4.65          0 \r\n 1988          301           2.5           13.7          3.975         0 \r\n 1988          302           12.45         8.25         -1.75          0 \r\n 1988          303           5.775         5.4          -4.65          0 \r\n 1988          304           12.75         8            -5.4           0 \r\n 1988          305           10.3          15.825       -2.5           0 \r\n 1988          306           14.05         13.55         1.675         0 \r\n 1988          307           10.2          13.1         -1.075         0 \r\n 1988          308           12.5          20.375        2.75          0 \r\n 1988          309           6.001         18.15         10.55         7.475 \r\n 1988          310           3.55          10.35         1.7           0 \r\n 1988          311           5.625         8.325        -1.15          1.55 \r\n 1988          312           4.8           12.875       -0.65          0 \r\n 1988          313           12.475        15.15         0.2           4.35 \r\n 1988          314           2.525         11.9          4.475         4.225 \r\n 1988          315           5.926         9             3.125         2.975 \r\n 1988          316           10.375        9.525        -2.8           0 \r\n 1988          317           2.375         5.1           1.35          17.176 \r\n 1988          318           11.325        10.75        -3.725         0 \r\n 1988          319           8.5           10.775        1.425         0 \r\n 1988          320           2.65          20            7.875         5.45 \r\n 1988          321           3.475         19.225        0.55          9.776 \r\n 1988          322           11.2          11.8         -3.075         0 \r\n 1988          323           7.75          13.525        2.325         0 \r\n 1988          324           3.9           10.475        3.775         0 \r\n 1988          325           7.35          6.35         -1.95          0 \r\n 1988          326           5.425         4.725        -5.175         0 \r\n 1988          327           9.2           5.425        -4.8           0 \r\n 1988          328           10.4          10.825       -0.4           0 \r\n 1988          329           10.25         13.275        0.05          0 \r\n 1988          330           5.95          9.7           2.775         0 \r\n 1988          331           3.15          14.025        4.475         15.826 \r\n 1988          332           2.75          6.825        -1.525         2.05 \r\n 1988          333           8.725         3.075        -6.95          0 \r\n 1988          334           4.45          7.425        -1.2           0 \r\n 1988          335           5.476         4.6          -1.7           0 \r\n 1988          336           8.45          2.5          -6.45          0 \r\n 1988          337           9.95          11.85        -2.475         0 \r\n 1988          338           8.95          10.275       -0.3           0 \r\n 1988          339           8.225         6.9          -4.075         0 \r\n 1988          340           9.45          10.4         -1.85          0 \r\n 1988          341           9.625         12.65        -1.075         0 \r\n 1988          342           7.925         6.175        -1.425         0 \r\n 1988          343           7.575         3.2          -5.475         0 \r\n 1988          344           5.35          2.575        -7.675         0 \r\n 1988          345           7.9           0.75         -8.75          0 \r\n 1988          346           7.7          -4.225        -13.95         0 \r\n 1988          347           3.4           1.125        -10.2          0 \r\n 1988          348           6.2           8.5          -0.975         0 \r\n 1988          349           4.15          8.075        -0.775         0 \r\n 1988          350           8.475         0.05         -10.075        0 \r\n 1988          351           4.625         1.975        -13.95         0 \r\n 1988          352           6.825        -0.125        -8.75          0 \r\n 1988          353           7.05          7.425        -7.15          0 \r\n 1988          354           6.1           11.25        -1.275         0.6 \r\n 1988          355           4.551         10.8         -0.225         2.1 \r\n 1988          356           8.95          5.825        -3.9           0 \r\n 1988          357           1.95          9.125        -3.15          2.8 \r\n 1988          358           7.175         9.875         0.025         0 \r\n 1988          359           5.35          6.075        -2.575         0.8 \r\n 1988          360           6.65          2.025        -6.15          0 \r\n 1988          361           1.55          2.425        -3.45          12.175 \r\n 1988          362           3.35          5.25         -6.35          12.35 \r\n 1988          363           7.725        -4.775        -15.975        0 \r\n 1988          364           7.775        -3.85         -13.125        0.3 \r\n 1988          365           8.6           2.575        -8.3           0 \r\n 1988          366           6.775        -0.825        -9.1           0 \r\n 1989          1             1.81         -1.707        -10.353        0 \r\n 1989          2             6.52          1.541        -6.38          0 \r\n 1989          3             7.093         4.159        -11.73         0 \r\n 1989          4             7.75          3.721        -1.766         2.743 \r\n 1989          5             0.744         1.347        -0.259         6.147 \r\n 1989          6             1.874         7.132        -6.182         0 \r\n 1989          7             1.318        -5.211        -13.194        0 \r\n 1989          8             7.171         1.459        -15.314        0 \r\n 1989          9             7.291         2.257        -3.007         0 \r\n 1989          10            6.463         4.617        -3.548         0 \r\n 1989          11            1.406         3.996        -6.962         0 \r\n 1989          12            8.903         3.25         -10.401        1 \r\n 1989          13            8.875         3.583        -4.314         0 \r\n 1989          14            6.315         2.358        -5.391         0 \r\n 1989          15            8.074         9.557        -7.941         0 \r\n 1989          16            7.993         10.717       -2.803         0 \r\n 1989          17            7.034         7.344        -0.181         0 \r\n 1989          18            7.774         11.703       -3.29          0 \r\n 1989          19            7.064         3.967        -3.511         0 \r\n 1989          20            9.125         5.97         -7.692         0 \r\n 1989          21            9.096         12.031       -3.911         0 \r\n 1989          22            9.317         10.783       -0.649         0 \r\n 1989          23            6.412         6.917        -0.979         0 \r\n 1989          24            3.905         4.553        -0.198         0 \r\n 1989          25            1.022         2.392        -2.563         0 \r\n 1989          26            9.678         12.539       -3.453         0 \r\n 1989          27            10.023        7.462         0.331         2.896 \r\n 1989          28            1.657         5.459         1.436         7.518 \r\n 1989          29            2.073         10.102       -1.367         0 \r\n 1989          30            10.34         20.414        3.597         0 \r\n 1989          31            10.388        13.613       -3.577         0 \r\n 1989          32            7.956        -2.583        -9.014         0 \r\n 1989          33            4.295        -8.669        -21.637        0 \r\n 1989          34            9.085        -18.579       -20.822        3.429 \r\n 1989          35            4.948        -16.938       -21.663        2.946 \r\n 1989          36            6.088        -11.294       -23.039        0 \r\n 1989          37            10.141       -4.009        -18.824        0 \r\n 1989          38            12.009       -6.321        -17.358        0 \r\n 1989          39            11.382       -5.431        -22.073        0 \r\n 1989          40            11.388       -0.902        -15.777        0 \r\n 1989          41            12.297       -0.147        -10.501        0 \r\n 1989          42            12.708        1.414        -11.778        0 \r\n 1989          43            10.368        3.243        -3.359         7.95 \r\n 1989          44            6.337         0.842        -13.925        0 \r\n 1989          45            9.326        -1.399        -6.526         3.124 \r\n 1989          46            10.384       -3.903        -14.629        0 \r\n 1989          47            13.507       -2.98         -15.097        0 \r\n 1989          48            11.262       -2.497        -9.671         0 \r\n 1989          49            5.557        -3.331        -7.269         0 \r\n 1989          50            8.171        -2.687        -6.974         2.769 \r\n 1989          51            8.161        -1.964        -8.227         0 \r\n 1989          52            9.966        -5.779        -15.949        0 \r\n 1989          53            14.387       -7.433        -22.52         0 \r\n 1989          54            15.113       -0.841        -16.848        0 \r\n 1989          55            14.439        5.91         -8.777         0 \r\n 1989          56            10.269        1.993        -7.217         0 \r\n 1989          57            12.422       -3.266        -14.875        0 \r\n 1989          58            11.939       -2.47         -10.156        0 \r\n 1989          59            14.89        -4.052        -14.533        0 \r\n 1989          60            9.596        -4.623        -8.361         0 \r\n 1989          61            5.677         4.915        -7.043         4.877 \r\n 1989          62            2.06          7.124        -6.357         7.315 \r\n 1989          63            9.6          -5.666        -10.334        0 \r\n 1989          64            15.872       -0.679        -9.088         0 \r\n 1989          65            16.942        0.639        -9.785         0 \r\n 1989          66            16.104        4.772        -6.744         0 \r\n 1989          67            13.493        9.646        -4.189         0 \r\n 1989          68            13.331        16.646       -0.494         0 \r\n 1989          69            15.206        15.543        1.522         0 \r\n 1989          70            13.117        7.891         0.768         0 \r\n 1989          71            5.024         3.977        -1.189         0 \r\n 1989          72            3.772         14.402        0.933         0 \r\n 1989          73            5.986         9.812        -5.442         0 \r\n 1989          74            16.197        11.186       -4.538         0 \r\n 1989          75            14.077        2.787        -4.308         3.048 \r\n 1989          76            2.19          0.269        -9.267         0 \r\n 1989          77            17.538        2.751        -8.731         0 \r\n 1989          78            8.741         3.506        -0.569         0 \r\n 1989          79            8.022         2.863        -8.587         0 \r\n 1989          80            19.281        9.219        -6.085         0 \r\n 1989          81            16.055        15.62        -0.519         0 \r\n 1989          82            18.227        22.248        2.107         0 \r\n 1989          83            13.291        18.855        0.441         0 \r\n 1989          84            15.187        26.997        9.544         0 \r\n 1989          85            13.788        25.819        14.817        0 \r\n 1989          86            17.109        22.757        13.095        18.11 \r\n 1989          87            8.999         16.021        5.215         0 \r\n 1989          88            11.19         10.084        2.321         0 \r\n 1989          89            5.992         8.123        -0.928         0 \r\n 1989          90            19.335        12.278       -2.528         0 \r\n 1989          91            4.694         11.317        6.717         0 \r\n 1989          92            17.804        13.722        7.006         0 \r\n 1989          93            12.425        11.803        2.893         0 \r\n 1989          94            8.641         12.458        0.341         0 \r\n 1989          95            19.543        13.355        0.208         0 \r\n 1989          96            18.952        11.082       -2.687         0 \r\n 1989          97            9.308         5.319        -1.97          17.856 \r\n 1989          98            17.982        4.57         -5.013         0 \r\n 1989          99            20.133        5.641        -5.752         0 \r\n 1989          100           22.566        13.014       -3.774         0 \r\n 1989          101           18.47         11.096       -2.132         0 \r\n 1989          102           22.544        16.318       -4.527         0 \r\n 1989          103           21.14         18.938        7.323         0 \r\n 1989          104           16.62         17.694        1.344         0 \r\n 1989          105           23.043        25.273        6.858         0 \r\n 1989          106           13.924        21.723        8.903         0 \r\n 1989          107           19.315        13.193        4.243         3.861 \r\n 1989          108           19.146        18.543        0.819         2.591 \r\n 1989          109           24.061        21.258        5.803         0 \r\n 1989          110           15.133        26.153        9.008         0 \r\n 1989          111           23.499        22.003        7.281         8.839 \r\n 1989          112           9.186         20.111        11.051        25.832 \r\n 1989          113           16.476        26.264        11.428        0 \r\n 1989          114           19.405        30.428        17.304        0 \r\n 1989          115           21.612        29.018        14.03         0 \r\n 1989          116           15.474        26.327        13.434        11.303 \r\n 1989          117           18.719        21.856        10.436        6.299 \r\n 1989          118           8.162         16.936        8.058         0 \r\n 1989          119           12.205        15.768        1.462         0 \r\n 1989          120           21.46         14.144        2.019         11.913 \r\n 1989          121           13.203        13.893        1.034         9.5 \r\n 1989          122           17.414        17.947        3.242         0 \r\n 1989          123           21.606        19.062        9.473         0 \r\n 1989          124           10.208        17.317        5.302         4.801 \r\n 1989          125           19.26         9.073        -0.818         0 \r\n 1989          126           16.079        16.384       -0.542         0 \r\n 1989          127           26.124        20.185        6.948         0 \r\n 1989          128           12.189        17.969        7.513         9.169 \r\n 1989          129           25.164        20.36         4.981         0 \r\n 1989          130           26.341        20.221        4.21          0 \r\n 1989          131           26.996        21.734        5.069         0 \r\n 1989          132           26.806        21.374        6.263         0 \r\n 1989          133           25.076        21.471        7.506         0 \r\n 1989          134           23.065        25.237        9.443         0 \r\n 1989          135           22.764        28.108        12.431        0 \r\n 1989          136           22.662        26.587        13.322        0 \r\n 1989          137           18.394        25.916        14.597        2.972 \r\n 1989          138           11.264        24.444        16.373        0 \r\n 1989          139           15.264        24.901        13.367        0 \r\n 1989          140           28.167        24.322        10.953        0 \r\n 1989          141           16.033        22.972        12.406        0 \r\n 1989          142           20.605        27.608        8.441         0 \r\n 1989          143           19.494        29.433        17.669        8.534 \r\n 1989          144           7.754         26.382        13.506        0 \r\n 1989          145           20.995        21.081        12.022        0 \r\n 1989          146           23.27         21.14         5.432         0 \r\n 1989          147           28.625        20.23         8.521         0 \r\n 1989          148           8.245         31.556        12.374        9.246 \r\n 1989          149           21.075        31.613        20.088        0 \r\n 1989          150           18.683        28.498        18.061        0 \r\n 1989          151           9.346         23.142        16.732        16.739 \r\n 1989          152           15.659        27.112        12.429        0 \r\n 1989          153           25.072        25.993        16.583        22.454 \r\n 1989          154           22.288        24.108        12.571        0 \r\n 1989          155           22.855        26.876        12.377        0 \r\n 1989          156           24.993        28.516        14.329        0 \r\n 1989          157           22.395        28.017        13.997        0 \r\n 1989          158           21.931        26.912        15.106        0 \r\n 1989          159           14.677        19.183        9.089         0 \r\n 1989          160           15.758        23.611        7.848         0 \r\n 1989          161           21.426        21.858        14.657        5.867 \r\n 1989          162           8.461         27.261        16.459        29.566 \r\n 1989          163           19.026        24.552        12.628        0 \r\n 1989          164           23.005        21.813        11.839        0 \r\n 1989          165           11.565        18.607        11.095        0 \r\n 1989          166           27.451        23.359        7.707         0 \r\n 1989          167           27.014        26.532        12.673        0 \r\n 1989          168           22.846        23.611        17.266        0 \r\n 1989          169           15.181        30.224        15.313        0 \r\n 1989          170           28.292        30.306        17.361        0 \r\n 1989          171           27.405        31.388        17.923        0 \r\n 1989          172           19.351        32.197        20.393        0 \r\n 1989          173           9.578         29.014        18.28         0 \r\n 1989          174           24.163        29.973        15.052        0 \r\n 1989          175           15.659        31.214        19.544        0 \r\n 1989          176           18.749        31.113        19.354        2.54 \r\n 1989          177           16.511        27.612        17.489        13.005 \r\n 1989          178           23.482        29.683        17.611        0 \r\n 1989          179           26.424        28.151        13.597        0 \r\n 1989          180           27.327        29.126        13.638        0 \r\n 1989          181           24.031        30.239        16.924        0 \r\n 1989          182           23.176        30.529        18.182        0 \r\n 1989          183           24.771        31.292        19.101        0 \r\n 1989          184           24.772        32.959        20.126        0 \r\n 1989          185           27.561        32.639        16.228        0 \r\n 1989          186           28.177        34.418        15.983        0 \r\n 1989          187           26.884        35.181        20.812        0 \r\n 1989          188           23.981        36.348        21.101        0 \r\n 1989          189           23.281        35.557        22.818        0 \r\n 1989          190           26.232        36.988        23.109        0 \r\n 1989          191           25.422        35.413        23.859        0 \r\n 1989          192           13.11         30.961        20.822        21.59 \r\n 1989          193           18.969        29.958        19.274        0 \r\n 1989          194           24.212        27.498        14.134        0 \r\n 1989          195           18.716        24.856        18.323        0 \r\n 1989          196           12.674        28.912        13.016        0 \r\n 1989          197           25.957        29.6          13.344        0 \r\n 1989          198           20.854        28.534        17.232        7.645 \r\n 1989          199           17.228        23.255        16.763        16.84 \r\n 1989          200           12.268        27.002        17.055        3.277 \r\n 1989          201           25.529        24.3          14.793        9.677 \r\n 1989          202           21.127        26.336        17.896        0 \r\n 1989          203           15.232        29.276        17.923        0 \r\n 1989          204           19.564        30.586        18.684        0 \r\n 1989          205           22.217        30.822        21.447        5.563 \r\n 1989          206           20.674        30.964        21.211        0 \r\n 1989          207           20.731        33.223        20.359        0 \r\n 1989          208           25.209        31.398        21.444        0 \r\n 1989          209           22.875        28.625        18.995        0 \r\n 1989          210           10.209        27.186        21.122        3.556 \r\n 1989          211           15.44         28.609        19.028        0 \r\n 1989          212           20.767        28.723        16.037        0 \r\n 1989          213           24.218        31.248        16.246        0 \r\n 1989          214           22.164        31.797        22.441        0 \r\n 1989          215           13.419        34.542        24.029        5.969 \r\n 1989          216           23.092        33.754        20.798        0 \r\n 1989          217           20.25         28.613        14.844        0 \r\n 1989          218           15.317        24.956        8.782         0 \r\n 1989          219           24.554        26.836        8.967         0 \r\n 1989          220           22.965        29.072        12.188        0 \r\n 1989          221           23.375        29.388        14.778        0 \r\n 1989          222           21.429        29.473        14.44         0 \r\n 1989          223           19.23         29.829        14.003        0 \r\n 1989          224           17.284        30.46         14.461        0 \r\n 1989          225           12.931        27.141        17.428        0 \r\n 1989          226           13.395        26.791        16.782        0 \r\n 1989          227           19.409        26.458        13.951        0 \r\n 1989          228           19.081        27.485        12.498        0 \r\n 1989          229           22.978        28.666        13.047        0 \r\n 1989          230           22.647        26.4          15.17         4.801 \r\n 1989          231           7.651         29.182        18.891        8.611 \r\n 1989          232           22.96         28.627        16.347        0 \r\n 1989          233           15.488        31.96         19.738        0 \r\n 1989          234           18.112        29.337        18.381        40.538 \r\n 1989          235           13.129        23.838        17.432        9.144 \r\n 1989          236           10.67         26.071        17.516        0 \r\n 1989          237           11.806        27.929        20.708        9.423 \r\n 1989          238           9.695         31.777        21.139        9.906 \r\n 1989          239           15.217        29.184        21.378        0 \r\n 1989          240           11.252        27.639        19.529        7.239 \r\n 1989          241           19.22         29.098        14.107        0 \r\n 1989          242           20.714        27.378        17.935        30.302 \r\n 1989          243           13.226        26.104        18.828        30.963 \r\n 1989          244           12.972        24.333        14.322        0 \r\n 1989          245           21.359        23.847        11.696        0 \r\n 1989          246           6.885         26.082        15.004        0 \r\n 1989          247           14.493        26.236        15.427        0 \r\n 1989          248           13.568        28.141        20.584        35.128 \r\n 1989          249           12.811        26.958        20.053        18.542 \r\n 1989          250           7.011         23.719        18.416        38.303 \r\n 1989          251           5.238         21.617        15.484        43.51 \r\n 1989          252           7.91          22.433        8.919         0 \r\n 1989          253           18.422        22.503        11.548        0 \r\n 1989          254           17.135        17.869        6.602         0 \r\n 1989          255           6.187         13.332        7.791         6.833 \r\n 1989          256           13.605        20.069        7.863         0 \r\n 1989          257           18.629        19.279        6.794         0 \r\n 1989          258           19.827        22.348        9.217         0 \r\n 1989          259           19.472        25.067        9.935         0 \r\n 1989          260           18.839        26.039        11.754        0 \r\n 1989          261           18.483        25.68         12.101        0 \r\n 1989          262           18.232        25.946        11.007        0 \r\n 1989          263           17.777        25.303        10.84         0 \r\n 1989          264           16.097        21.229        12.153        0 \r\n 1989          265           12.393        17.04         1.418         0 \r\n 1989          266           18.882        17.233        0.134         0 \r\n 1989          267           18.432        22.875        4.03          0 \r\n 1989          268           17.9          18.379        4.337         0 \r\n 1989          269           18.084        20.124        2.139         0 \r\n 1989          270           17.406        23.919        4.213         0 \r\n 1989          271           16.741        25.114        9.452         0 \r\n 1989          272           16.985        25.781        6.32          0 \r\n 1989          273           16.918        26.556        10.264        0 \r\n 1989          274           16.414        21.769        7.029         0 \r\n 1989          275           15.255        13.054        1.809         0 \r\n 1989          276           16.304        16.35        -1.741         0 \r\n 1989          277           12.293        16.402        7.995         8.763 \r\n 1989          278           5.04          15.44         5.176         12.243 \r\n 1989          279           16.297        13.891       -0.207         0 \r\n 1989          280           14.752        15.097        1.504         0 \r\n 1989          281           15.842        18.799        2.589         0 \r\n 1989          282           13.142        17.067        3.904         0 \r\n 1989          283           15.246        28.307        7.536         0 \r\n 1989          284           15.171        23.899        6.374         0 \r\n 1989          285           14.817        28.333        7.824         0 \r\n 1989          286           13.472        28.42         13.935        0 \r\n 1989          287           11.741        27.724        15.956        0 \r\n 1989          288           11.997        22.612        8.414         4.14 \r\n 1989          289           2.464         8.469         3.44          3.734 \r\n 1989          290           8.546         6.556        -1.387         0 \r\n 1989          291           9.291         5.484         0.353         0 \r\n 1989          292           11.154        11.013        0.459         0 \r\n 1989          293           12.576        18.918        0.524         0 \r\n 1989          294           14.133        21.181        1.878         0 \r\n 1989          295           12.246        25.804        6.078         0 \r\n 1989          296           12.594        26.124        9.893         0 \r\n 1989          297           12.048        26.64         14.442        0 \r\n 1989          298           11.412        24.599        13.028        0 \r\n 1989          299           10.694        22.808        11.335        0 \r\n 1989          300           3.245         18.672        12.591        0 \r\n 1989          301           2.971         18.424        13.514        0 \r\n 1989          302           5.018         15.013        4.746         9.703 \r\n 1989          303           1.405         10.375        0.297         0 \r\n 1989          304           11.359        10.599        1.122         0 \r\n 1989          305           5.986         4.928        -3.773         0 \r\n 1989          306           5.655         9.415        -2.444         0 \r\n 1989          307           4.648         16.001        5.849         0 \r\n 1989          308           9.678         17.529        6.144         0 \r\n 1989          309           5.065         10.331       -0.742         0 \r\n 1989          310           3.259         12.751        1.004         0 \r\n 1989          311           6.501         10.671        1.922         0 \r\n 1989          312           6.533         12.752       -2.116         0 \r\n 1989          313           8.68          8.093        -2.309         0 \r\n 1989          314           9.265         16.418        2.924         0 \r\n 1989          315           8.18          12.277       -1.428         0 \r\n 1989          316           9.514         23.448        7.173         0 \r\n 1989          317           7.148         15.91         5.519         0 \r\n 1989          318           6.612         8.588         1.301         0 \r\n 1989          319           5.393         1.479        -9.217         0 \r\n 1989          320           9.268         4.834        -11.557        0 \r\n 1989          321           6.817        -2.472        -13.025        0 \r\n 1989          322           5.579         16.585       -3.557         0 \r\n 1989          323           7.658         14.641        5.017         0 \r\n 1989          324           8.855         5.744        -5.213         0 \r\n 1989          325           6.764         0.829        -3.401         0 \r\n 1989          326           3.226         2.183        -10.038        0 \r\n 1989          327           8.48          11.486       -9.089         0 \r\n 1989          328           6.715         12.515        4.146         0 \r\n 1989          329           4.426         10.719       -6.751         0 \r\n 1989          330           5.779         18.327        4.036         0 \r\n 1989          331           2.039         5.25         -11.092        0 \r\n 1989          332           8.183         1.843        -15.944        0 \r\n 1989          333           8.187         8.879        -8.227         0 \r\n 1989          334           8.246         11.86        -6.78          0 \r\n 1989          335           8.122         6.09         -9.167         0 \r\n 1989          336           7.464        -2.636        -14.625        0 \r\n 1989          337           7.312         10.876       -5.097         0 \r\n 1989          338           6.775         15.102       -0.348         0 \r\n 1989          339           5.972         8.636        -5.369         0 \r\n 1989          340           7.768        -4.546        -11.512        0 \r\n 1989          341           2.864        -3.918        -10.132        0 \r\n 1989          342           4.609         5.323        -8.167         0 \r\n 1989          343           6.475        -0.001        -5.503         0 \r\n 1989          344           2.231        -3.141        -15.371        5.258 \r\n 1989          345           7.446        -12.722       -24.623        0 \r\n 1989          346           7.067        -7.058        -17.793        0 \r\n 1989          347           5.414        -13.077       -23.547        0 \r\n 1989          348           5.825        -13.871       -27.402        0 \r\n 1989          349           7.626        -12.502       -23.676        0 \r\n 1989          350           5.022        -8.596        -16.599        0 \r\n 1989          351           6.697        -11.512       -21.952        0 \r\n 1989          352           4.054        -12.652       -21.43         3.912 \r\n 1989          353           5.705        -13.641       -24.204        0 \r\n 1989          354           3.278        -16.122       -28.954        0 \r\n 1989          355           7.643        -21.981       -28.359        0 \r\n 1989          356           7.768        -18.164       -30.849        0 \r\n 1989          357           7.526        -8.543        -19.582        0 \r\n 1989          358           3.914         3.098        -8.611         0 \r\n 1989          359           6.954         1.297        -18.221        0 \r\n 1989          360           3.409         3.624        -8.776         0 \r\n 1989          361           3.226         5.647        -0.93          0 \r\n 1989          362           5.075         4.162        -1.544         0 \r\n 1989          363           0.909        -1.403        -3.363         0 \r\n 1989          364           0.966        -0.403        -3.588         0 \r\n 1989          365           3.678        -0.766        -7.079         0 \r\n 1990          1             7.774         7.193        -4.033         0 \r\n 1990          2             7.677         7.012         0.581         0 \r\n 1990          3             4.206         7.167        -4.488         16.485 \r\n 1990          4             7.914         4.992        -7.639         0 \r\n 1990          5             7.577         1.507        -7.469         0 \r\n 1990          6             5.844         6.602        -3.496         0 \r\n 1990          7             8.032         7.401        -2.183         0 \r\n 1990          8             4.89          6.335        -0.24          0 \r\n 1990          9             3.426         6.412        -5.724         0 \r\n 1990          10            5.275         5.861         0.283         0 \r\n 1990          11            7.288         0.761        -6.571         0 \r\n 1990          12            8.43          1.024        -11.028        0 \r\n 1990          13            7.153         8.929        -3.569         0 \r\n 1990          14            6.67          13.44        -3.592         0 \r\n 1990          15            7.282         14.259        4.179         3.124 \r\n 1990          16            2.422         13.104        0.961         4.293 \r\n 1990          17            2.781         1.792        -3.074         0 \r\n 1990          18            7.199         1.057        -6.135         0 \r\n 1990          19            6.137         0.722        -0.957         5.029 \r\n 1990          20            3.296         3.225        -3.248         0 \r\n 1990          21            7.106         7.473        -1.696         0 \r\n 1990          22            7.897         12.889       -0.612         0 \r\n 1990          23            6.418         8.085        -1.752         0 \r\n 1990          24            4.481         2.195        -6.611         9.779 \r\n 1990          25            8.693         3.397        -12.58         0 \r\n 1990          26            8.643         6.947        -3.256         0 \r\n 1990          27            7.425         3.917        -8.404         0 \r\n 1990          28            10.417        6.371        -7.188         0 \r\n 1990          29            10.129        3.783        -6.261         0 \r\n 1990          30            10.037        7.996        -9.969         0 \r\n 1990          31            8.129         7.191        -2.397         0 \r\n 1990          32            4.352        -2.05         -3.986         0 \r\n 1990          33            2.868        -0.649        -3.513         2.54 \r\n 1990          34            7.737         6.5          -8.233         0 \r\n 1990          35            10.909        13.763       -0.962         0 \r\n 1990          36            10.174        8.278        -0.461         0 \r\n 1990          37            4.882         10.409       -0.461         0 \r\n 1990          38            8.438         16.449        4.333         0 \r\n 1990          39            7.074         9.025        -2.849         0 \r\n 1990          40            11.339        7.708        -5.287         0 \r\n 1990          41            8.254         10.193       -3.725         0 \r\n 1990          42            10.102        20.079       -1.107         0 \r\n 1990          43            8.904         15.959       -1.407         0 \r\n 1990          44            7.291        -1.323        -6.817         3.277 \r\n 1990          45            2.616        -1.138        -5.414         13.945 \r\n 1990          46            2.741        -0.527        -7.153         0 \r\n 1990          47            10.713       -2.609        -17.621        0 \r\n 1990          48            13.829        5.874        -5.471         0 \r\n 1990          49            13.327       -0.353        -9.808         0 \r\n 1990          50            14.089        1.902        -13.284        0 \r\n 1990          51            13.776        8.736        -4.716         0 \r\n 1990          52            11.496        5.184         0.927         7.595 \r\n 1990          53            3.911         4.419        -4.921         7.874 \r\n 1990          54            8.684         2.717        -10.526        0 \r\n 1990          55            14.867       -5.699        -14.541        0 \r\n 1990          56            12.16         4.844        -7.548         0 \r\n 1990          57            14.221        4.209        -3.104         0 \r\n 1990          58            15.194        2.959        -8.818         0 \r\n 1990          59            14.782        8.832        -6.671         0 \r\n 1990          60            15.808        13.373       -1.894         0 \r\n 1990          61            15.506        8.357        -5.259         0 \r\n 1990          62            16.008        12.771       -5.666         0 \r\n 1990          63            14.222        8.819        -0.18          3.124 \r\n 1990          64            3.953         0.18         -1.514         3.683 \r\n 1990          65            2.505         1.186        -2.542         0 \r\n 1990          66            1.179         14.523        0.893         14.199 \r\n 1990          67            3.398         19.802        1.38          0 \r\n 1990          68            13.872        18.646        13.218        19.964 \r\n 1990          69            4.045         22.253        14.387        38.202 \r\n 1990          70            5.399         25.849        13.902        9.931 \r\n 1990          71            17.695        22.539        14.381        4.039 \r\n 1990          72            3.13          19.573        14.024        8.255 \r\n 1990          73            2.996         17.038        5.323         37.084 \r\n 1990          74            5.834         14.248        2.987         0 \r\n 1990          75            9.814         7.944         0.915         0 \r\n 1990          76            11.64         7.387        -2.032         0 \r\n 1990          77            11.043        0.862        -6.343         0 \r\n 1990          78            18.117        10.149       -6.098         0 \r\n 1990          79            18.784        18.186        2.887         0 \r\n 1990          80            16.739        15.522        2.4           0 \r\n 1990          81            8.268         2.542        -5.709         0 \r\n 1990          82            10.725        3.431        -4.831         0 \r\n 1990          83            18.636        7.516        -5.612         0 \r\n 1990          84            20.618        7.458        -4.219         0 \r\n 1990          85            21.136        11.444       -5.964         0 \r\n 1990          86            19.697        9.659         2.242         0 \r\n 1990          87            5.719         7.959         2.516         0 \r\n 1990          88            3.779         5.849         3.362         0 \r\n 1990          89            6.241         8.851         4.789         0 \r\n 1990          90            4.152         17.486        5.537         0 \r\n 1990          91            13.104        7.814         0.293         0 \r\n 1990          92            18.897        10.031       -1.72          0 \r\n 1990          93            20.336        15.737        0.002         0 \r\n 1990          94            22.237        12.573        1.067         0 \r\n 1990          95            19.95         4.496        -5.267         0 \r\n 1990          96            22.949        10.553       -6.886         0 \r\n 1990          97            22.408        20.559        3.059         0 \r\n 1990          98            19.962        17.277        6.876         0 \r\n 1990          99            4.779         10.038        3.597         4.724 \r\n 1990          100           12.484        7.926        -2.635         0 \r\n 1990          101           15.242        10.414       -5.071         0 \r\n 1990          102           21.454        8.38          3.307         3.607 \r\n 1990          103           2.913         14.636        2.957         8.661 \r\n 1990          104           22.581        14.487        6.293         0 \r\n 1990          105           23.316        16.684        0.967         0 \r\n 1990          106           4.517         9.457        -1.995         0 \r\n 1990          107           23.966        14.195       -2.327         0 \r\n 1990          108           20.098        13.314        5.668         0 \r\n 1990          109           6.666         17.331        11.263        5.309 \r\n 1990          110           13.598        20.234        9.804         0 \r\n 1990          111           21.372        24.803        5.951         0 \r\n 1990          112           21.622        27.782        13.766        0 \r\n 1990          113           18.918        29.475        17.374        0 \r\n 1990          114           18.352        29.034        15.91         0 \r\n 1990          115           20.472        28.659        16.504        0 \r\n 1990          116           11.709        24.222        16.251        5.232 \r\n 1990          117           4.427         16.663        4.865         13.945 \r\n 1990          118           14.492        21.585        3.181         0 \r\n 1990          119           6.943         18.29         1.755         0 \r\n 1990          120           21.927        13.776        4.559         0 \r\n 1990          121           24.499        19.195        2.347         0 \r\n 1990          122           23.021        16.252        8.836         0 \r\n 1990          123           9.977         8.974         7.251         42.139 \r\n 1990          124           8.407         19.98         3.766         8.128 \r\n 1990          125           18.368        20.472        5.136         0 \r\n 1990          126           26.545        25.569        9.814         0 \r\n 1990          127           26.184        25.656        14.324        0 \r\n 1990          128           17.27         22.299        9.647         3.023 \r\n 1990          129           7.003         13.317        3.6           2.972 \r\n 1990          130           23.247        18.974        3.821         0 \r\n 1990          131           15.321        15.967        9.388         10.643 \r\n 1990          132           5.262         19.195        5.641         4.496 \r\n 1990          133           24.703        24.654        10.16         0 \r\n 1990          134           17.628        21.813        12.626        0 \r\n 1990          135           8.546         19.756        15.187        2.845 \r\n 1990          136           14.638        19.859        9.446         0 \r\n 1990          137           23.067        26.374        7.707         0 \r\n 1990          138           25.819        24.718        13.459        3.454 \r\n 1990          139           9.572         20.958        9.058         0 \r\n 1990          140           6.67          13.962        8.682         0 \r\n 1990          141           7.721         20.888        7.921         0 \r\n 1990          142           25.55         18.55         11.206        4.674 \r\n 1990          143           15.458        17.208        11.483        12.522 \r\n 1990          144           10.061        19.013        13.362        39.522 \r\n 1990          145           8.048         18.428        13.806        0 \r\n 1990          146           14.475        23.376        10.805        0 \r\n 1990          147           19.608        22.458        13.824        0 \r\n 1990          148           22.503        24.351        11.512        0 \r\n 1990          149           25.556        22.537        8.446         0 \r\n 1990          150           22.406        24.292        9.892         0 \r\n 1990          151           18.961        27.821        17.348        0 \r\n 1990          152           14.856        25.874        17.558        0 \r\n 1990          153           10.753        19.715        9.793         7.468 \r\n 1990          154           11.451        19.193        8.682         0 \r\n 1990          155           26.187        18.374        11.043        3.175 \r\n 1990          156           12.132        26.208        12.441        2.87 \r\n 1990          157           18.755        23.635        11.969        5.258 \r\n 1990          158           8.574         25.511        16.821        5.461 \r\n 1990          159           15.782        26.804        16.318        0 \r\n 1990          160           28.669        28.636        13.829        0 \r\n 1990          161           25.983        27.999        16.442        0 \r\n 1990          162           21.07         31.472        19.946        0 \r\n 1990          163           20.074        30.247        21.687        0 \r\n 1990          164           11.394        28.249        19.219        25.146 \r\n 1990          165           22.698        28.138        19.392        0 \r\n 1990          166           16.125        27.378        20.598        13.437 \r\n 1990          167           7.176         30.112        18.068        42.291 \r\n 1990          168           26.258        29.943        17.218        0 \r\n 1990          169           28.28         28.563        16.013        12.7 \r\n 1990          170           8.193         27.846        17.608        71.196 \r\n 1990          171           27.053        26.622        15.705        0 \r\n 1990          172           9.694         23.347        14.403        15.367 \r\n 1990          173           19.534        24.026        14.098        3.861 \r\n 1990          174           26.889        27.722        13.832        0 \r\n 1990          175           26.097        27.903        17.724        0 \r\n 1990          176           19.516        30.068        19.734        0 \r\n 1990          177           24.787        32.082        21.544        0 \r\n 1990          178           24.072        30.023        20.372        0 \r\n 1990          179           17.27         28.95         20.171        0 \r\n 1990          180           20.515        30.543        21.373        0 \r\n 1990          181           22.997        29.527        20.332        0 \r\n 1990          182           25.043        29.872        17.486        0 \r\n 1990          183           24.034        35.47         22.26         0 \r\n 1990          184           26.894        35.859        24.503        0 \r\n 1990          185           23.944        36.697        17.068        0 \r\n 1990          186           21.599        34.225        19.664        0 \r\n 1990          187           20.481        29.859        17.968        0 \r\n 1990          188           22.642        28.304        15.954        0 \r\n 1990          189           23.572        30.696        20.011        0 \r\n 1990          190           20.449        32.357        20.609        18.745 \r\n 1990          191           11.133        28.234        19.897        38.176 \r\n 1990          192           17.771        24.594        16.141        6.68 \r\n 1990          193           11.133        22.84         14.709        0 \r\n 1990          194           22.652        22.387        13.802        0 \r\n 1990          195           15.368        23.021        13.868        0 \r\n 1990          196           23.62         25.797        14.754        7.264 \r\n 1990          197           23.114        30.08         17.597        0 \r\n 1990          198           26.657        30.22         18.91         0 \r\n 1990          199           15.797        29.12         19.39         0 \r\n 1990          200           19.67         31.19         19.66         9.652 \r\n 1990          201           14.292        28.77         19.77         9.906 \r\n 1990          202           5.147         21.47         18.55         6.096 \r\n 1990          203           19.394        25.4          15.29         0 \r\n 1990          204           22.88         26.42         13.56         0 \r\n 1990          205           20.681        27.96         13.8          0 \r\n 1990          206           25.229        28.58         17.78         0 \r\n 1990          207           14.222        26.17         18.65         11.176 \r\n 1990          208           22.877        30.77         19.59         6.35 \r\n 1990          209           15.198        29.03         21.25         1.524 \r\n 1990          210           17.294        29.58         20.08         2.032 \r\n 1990          211           23.162        26.75         17.81         0.254 \r\n 1990          212           21.107        27.53         14.71         1.27 \r\n 1990          213           23.033        27.18         12.26         0 \r\n 1990          214           21.975        28.21         13.84         0 \r\n 1990          215           11.008        27.28         20.51         0 \r\n 1990          216           19.825        29.2          17.87         0 \r\n 1990          217           21.964        26.21         14.47         0 \r\n 1990          218           23.578        23.92         11.89         0 \r\n 1990          219           23.707        26.73         10.39         0 \r\n 1990          220           19.789        26.14         10.72         0 \r\n 1990          221           26.19         26.95         11.75         0 \r\n 1990          222           22.663        29.5          15.37         0 \r\n 1990          223           20.243        28.69         18.73         0 \r\n 1990          224           4.647         22.79         17.36         0 \r\n 1990          225           17.371        26.61         15.7          0 \r\n 1990          226           22.666        27.87         14.64         0 \r\n 1990          227           18.554        28.69         17.41         0 \r\n 1990          228           10.236        26.47         18.55         0 \r\n 1990          229           17.556        32.88         20.65         0 \r\n 1990          230           23.723        33.21         22.07         0 \r\n 1990          231           20.528        32.54         21.45         0 \r\n 1990          232           3.967         23.09         19.69         0 \r\n 1990          233           7.539         23.01         17.94         0 \r\n 1990          234           10.175        26.06         18.86         0.254 \r\n 1990          235           21.022        28.47         17.6          0 \r\n 1990          236           17.894        30.68         19.62         0.508 \r\n 1990          237           21.011        29.33         19.51         32.512 \r\n 1990          238           23.623        34.38         22.19         0 \r\n 1990          239           23.746        35.99         23.46         0 \r\n 1990          240           21.425        34.08         22.25         10.922 \r\n 1990          241           20.852        30.75         18.12         4.826 \r\n 1990          242           22.206        28.49         16.17         0.254 \r\n 1990          243           22.286        28.47         15.64         0 \r\n 1990          244           21.875        31.38         19.15         3.886 \r\n 1990          245           6.887         25.06         19.4          24.079 \r\n 1990          246           19.77         28.05         17.31         0 \r\n 1990          247           21.8          34.2          20.88         0 \r\n 1990          248           21.754        34.65         19.96         0 \r\n 1990          249           21.825        35.38         22.72         0 \r\n 1990          250           15.822        28.41         20.29         0 \r\n 1990          251           10.805        26.3          16.99         0 \r\n 1990          252           17.732        28.69         16.24         0 \r\n 1990          253           18.219        32.28         17.58         0 \r\n 1990          254           17.146        29.62         17.97         0 \r\n 1990          255           19.894        31.53         15.25         0 \r\n 1990          256           17.049        30.01         17.92         0 \r\n 1990          257           19.691        23.67         10.44         0 \r\n 1990          258           21.315        25.47         7.08          0 \r\n 1990          259           16.362        19.49         8.46          0 \r\n 1990          260           17.579        20.88         7.48          3.2 \r\n 1990          261           2.019         15.08         11.64         4.191 \r\n 1990          262           4.84          16.57         9.9           0 \r\n 1990          263           10.14         20.91         6.732         13.995 \r\n 1990          264           17.839        21.64         8.88          0 \r\n 1990          265           17.785        18.06         6.619         0 \r\n 1990          266           18.144        15.38         2.562         0 \r\n 1990          267           20.261        21.79         1.79          0 \r\n 1990          268           19.431        29.34         10.48         0 \r\n 1990          269           19.2          29.17         9.96          0 \r\n 1990          270           15.912        31.81         8.62          0 \r\n 1990          271           16.118        24.69         11.93         0 \r\n 1990          272           9.496         19.43         8.46          0 \r\n 1990          273           18.658        20.56         3.857         0 \r\n 1990          274           16.249        22.29         6.648         0 \r\n 1990          275           16.212        26.35         6.361         11.1 \r\n 1990          276           4.7           22.75         10.14         5.867 \r\n 1990          277           17.401        21.82         7.34          0 \r\n 1990          278           17.346        30.33         12.79         0 \r\n 1990          279           15.871        29.36         17.378        0 \r\n 1990          280           2.998         17.97         9.86          3.124 \r\n 1990          281           1.359         9.93          5.209         8.001 \r\n 1990          282           2.438         7.25          5.153         4.851 \r\n 1990          283           7.843         12.12         0.521         0 \r\n 1990          284           16.356        17.12        -0.232         0 \r\n 1990          285           15.256        17.09         1.931         0 \r\n 1990          286           15.232        19.88         0.511         0 \r\n 1990          287           7.47          17.51         6.151         0 \r\n 1990          288           7.009         16.37         1.281         0 \r\n 1990          289           11.321        22.42         9.64          0 \r\n 1990          290           5.733         24.04         3.525         3.759 \r\n 1990          291           12.546        10.18        -0.666         0 \r\n 1990          292           14.483        13.88        -3.031         0 \r\n 1990          293           11.216        20            7.77          0 \r\n 1990          294           10.516        13.48         0.042         0 \r\n 1990          295           14.697        14.53        -4.425         0 \r\n 1990          296           6.144         13.272        1.791         0 \r\n 1990          297           10.567        14.16         1.187         0 \r\n 1990          298           13.991        12.82        -2.048         0 \r\n 1990          299           13.266        17.13        -1.106         0 \r\n 1990          300           13.161        15.71         1.555         0 \r\n 1990          301           13.74         14.88        -2.483         0 \r\n 1990          302           12.506        22.36        -0.42          0 \r\n 1990          303           12.326        25.14         11.25         0 \r\n 1990          304           12.04         25.68         7.53          0 \r\n 1990          305           10.275        24.24         10.23         0 \r\n 1990          306           7.237         23.78         15.2          0 \r\n 1990          307           2.436         17.889        3.343         24.714 \r\n 1990          308           1.729         3.432         1.188         8.382 \r\n 1990          309           4.806         5.64         -0.241         0 \r\n 1990          310           3.15          4.545        -0.701         0 \r\n 1990          311           12.324        2.281        -6.581         0 \r\n 1990          312           1.935         1.715        -7.43          11.328 \r\n 1990          313           8.416         9.45         -1.089         0 \r\n 1990          314           8.564         11.21        -1.276         0 \r\n 1990          315           9.181         15.65        -3.467         0 \r\n 1990          316           10.865        12.98        -1.918         0 \r\n 1990          317           10.419        11.93        -0.786         0 \r\n 1990          318           11.063        22.9          1.555         0 \r\n 1990          319           10.484        22.14         8.12          0 \r\n 1990          320           10.414        16.49         0.238         0 \r\n 1990          321           8.385         11.48        -4.036         0 \r\n 1990          322           3.534         9.47         -0.279         0 \r\n 1990          323           8.66          15.19         0.953         0 \r\n 1990          324           5.142         17.14         4.963         6.198 \r\n 1990          325           2.437         19.09         4.526         2.921 \r\n 1990          326           10.089        13.42        -0.759         0 \r\n 1990          327           8.055         10.75         1.085         0 \r\n 1990          328           7.374         14.94        -1.05          0 \r\n 1990          329           7.553         9.71          1.234         0 \r\n 1990          330           2.81          20.97         1.555         16.078 \r\n 1990          331           1.104         19.378       -1.011         0 \r\n 1990          332           9.295         2.357        -4.673         0 \r\n 1990          333           9.299         6.153        -5.22          0 \r\n 1990          334           8.798         12.67         0.747         0 \r\n 1990          335           5.028         9.15         -2.965         0 \r\n 1990          336           3.96          4.368        -4.482         24.587 \r\n 1990          337           4.101         0.08         -5.102         0 \r\n 1990          338           8.48         -3.656        -5.556         0 \r\n 1990          339           7.585         5.517        -7.334         0 \r\n 1990          340           8.379         2.564        -3.898         0 \r\n 1990          341           8.052         5.212        -5.454         0 \r\n 1990          342           8.083         7.483        -3.364         0 \r\n 1990          343           8.163         11.138       -2.227         0 \r\n 1990          344           7.843         8.348        -2.791         0 \r\n 1990          345           7.961         13.018       -0.817         0 \r\n 1990          346           1.98          9.901        -0.841         0 \r\n 1990          347           6.954         2.215        -3.442         0 \r\n 1990          348           1.925         1.984        -4.677         6.706 \r\n 1990          349           2.592         4.399        -1.695         0 \r\n 1990          350           4.956         0.931        -1.966         0 \r\n 1990          351           1.637         2.488        -1.608         3.505 \r\n 1990          352           3.487         2.783        -1.802         0 \r\n 1990          353           1.674         8.357        -6.746         0 \r\n 1990          354           1.877        -6.316        -16.473        0 \r\n 1990          355           2.001        -15.552       -21.939        0 \r\n 1990          356           5.314        -14.683       -21.151        0 \r\n 1990          357           7.564        -4.596        -17.808        0 \r\n 1990          358           7.328        -5.417        -16.507        0 \r\n 1990          359           7.474        -11.039       -21.386        0 \r\n 1990          360           4.642        -4.933        -14.734        0 \r\n 1990          361           6.959         0.88         -6.062         3.226 \r\n 1990          362           1.873         2.209        -16.804        13.31 \r\n 1990          363           2.997        -16.524       -19.451        0 \r\n 1990          364           7.488        -6.609        -20.121        0 \r\n 1990          365           7.828         1.014        -10.669        0 \r\n 1991          1             7.451        -2.964        -12.754        0 \r\n 1991          2             6.042        -9.454        -19.464        0 \r\n 1991          3             7.667        -5.687        -15.441        0 \r\n 1991          4             7.049        -5.398        -14.202        11.633 \r\n 1991          5             4.375        -3.134        -10.464        0 \r\n 1991          6             8.126        -7.941        -13.98         0 \r\n 1991          7             7.829        -4.073        -14.26         0 \r\n 1991          8             4.717        -1.234        -8.838         0 \r\n 1991          9             7.643        -6.001        -10.696        0 \r\n 1991          10            6.148        -1.901        -4.939         3.632 \r\n 1991          11            3.39         -2.133        -5.125         0 \r\n 1991          12            6.273        -2.812        -6.824         0 \r\n 1991          13            8.103         0.617        -5.584         0 \r\n 1991          14            8.352         5.668        -6.183         0 \r\n 1991          15            5.169         0.072        -4.464         7.544 \r\n 1991          16            8.509         0.155        -7.06          0 \r\n 1991          17            9.037        -0.359        -14.3          0 \r\n 1991          18            9.221         2.442        -1.709         0 \r\n 1991          19            9.273         5.06         -2.68          0 \r\n 1991          20            7.254         0.936        -13.14         0 \r\n 1991          21            9.613         1.207        -13.934        0 \r\n 1991          22            8.83          1.989        -6.92          0 \r\n 1991          23            7.932         1.108        -11.202        0 \r\n 1991          24            9.905        -8.167        -11.303        0 \r\n 1991          25            8.092        -5.481        -11.467        0 \r\n 1991          26            10.021       -5.062        -9.084         1.5 \r\n 1991          27            9.821        -0.514        -7.455         0 \r\n 1991          28            8.997        -1.664        -9.143         0 \r\n 1991          29            6.506        -9.504        -13.432        0 \r\n 1991          30            10.046       -5.402        -10.366        0 \r\n 1991          31            10.668       -0.231        -6.273         0 \r\n 1991          32            10.361        4.209        -4.069         0 \r\n 1991          33            10.775        9.986         2.377         0 \r\n 1991          34            10.808        9.777         2.565         0 \r\n 1991          35            9.915         7.161        -2.334         0 \r\n 1991          36            10.845        2.313        -1.484         0 \r\n 1991          37            11.006        3.002        -1.669         0 \r\n 1991          38            11.013        8.362        -3.428         0 \r\n 1991          39            11.26         8.168        -1.573         0 \r\n 1991          40            10.859        3.982        -2.194         0 \r\n 1991          41            11.632       -1.168        -5.462         0 \r\n 1991          42            4.477         4.719        -8.244         0 \r\n 1991          43            11.812        2.888        -1.386         0 \r\n 1991          44            10.049        2.151        -12.896        0 \r\n 1991          45            4.292        -10.767       -19.484        0 \r\n 1991          46            10.929        6.009        -15.263        0 \r\n 1991          47            10.042        7.877        -1.203         0 \r\n 1991          48            11.416        5.3           0.613         6.477 \r\n 1991          49            9.523         2.748        -1.609         0 \r\n 1991          50            9.743         4.683        -4.503         0 \r\n 1991          51            11.77         9.69         -5.009         0 \r\n 1991          52            12.903        10.099       -2.194         0 \r\n 1991          53            13.564        4.836        -4.939         0 \r\n 1991          54            8.498         6.741        -4.474         0 \r\n 1991          55            13.713        1.827        -7.374         0 \r\n 1991          56            14.193       -2.456        -10.536        0 \r\n 1991          57            4.725        -0.314        -9.997         0 \r\n 1991          58            6.666         0.858        -4.773         0 \r\n 1991          59            13.777        10.556       -2.249         6.147 \r\n 1991          60            8.5           11.638        3.988         28.575 \r\n 1991          61            5.877         7.98         -1.288         0 \r\n 1991          62            14.836        0.849        -5.422         0 \r\n 1991          63            12.347        5.209        -6.124         0 \r\n 1991          64            11.66         13.21        -0.523         0 \r\n 1991          65            15.203        9.81         -4.037         0 \r\n 1991          66            15.707        3.151        -6.793         0 \r\n 1991          67            7.942         11.17        -3.873         0 \r\n 1991          68            16.129        4.408        -4.484         0 \r\n 1991          69            15.937        9.75         -5.767         0 \r\n 1991          70            11.98         13.08         2.179         12.116 \r\n 1991          71            7.882         6.898         0.24          13.056 \r\n 1991          72            6.133         1.245        -1.991         0 \r\n 1991          73            17.144        4.057        -4.351         0 \r\n 1991          74            16.661        7.87         -4.188         0 \r\n 1991          75            8.435         12.24         0.616         8.331 \r\n 1991          76            5.583         5.877         3.055         6.68 \r\n 1991          77            11.149        9.96          1.114         0 \r\n 1991          78            17.592        15.69        -0.758         0 \r\n 1991          79            14.563        21.07         2.443         0 \r\n 1991          80            16.866        23.93         9.47          2.616 \r\n 1991          81            11.43         21.93         8.63          8.738 \r\n 1991          82            5.627         9.29          3.534         0 \r\n 1991          83            17.882        14.89         2.246         0 \r\n 1991          84            16.893        25.16         2.858         0 \r\n 1991          85            16.209        28.9          12.77         20.904 \r\n 1991          86            15.452        21.31        -0.176         0 \r\n 1991          87            16.714        13.77        -2.83          0 \r\n 1991          88            17.767        4.538        -4.817         0 \r\n 1991          89            18.117        6.839        -6.307         0 \r\n 1991          90            18.24         14.08        -0.096         0 \r\n 1991          91            19.655        16.69        -0.84          0 \r\n 1991          92            19.418        17.35         3.346         0 \r\n 1991          93            11.455        20.78         6.887         1.016 \r\n 1991          94            10.42         16.19         8.47          3.302 \r\n 1991          95            19.541        26.3          7.92          0 \r\n 1991          96            19.781        29.16         13.61         0 \r\n 1991          97            18.262        26.81         12.54         0 \r\n 1991          98            14.33         26.62         14.2          8.89 \r\n 1991          99            10.333        14.2          2.818         0.254 \r\n 1991          100           21.088        14.13        -0.202         0 \r\n 1991          101           7.503         8.9           5.287         1.524 \r\n 1991          102           4.973         12.43         5.239         0 \r\n 1991          103           11.67         10.38         8.06          15.494 \r\n 1991          104           15.211        13.88         7.7           4.826 \r\n 1991          105           18.584        18.39         3.932         0 \r\n 1991          106           16.004        20.32         4.851         4.826 \r\n 1991          107           20.575        17.98         6.773         1.524 \r\n 1991          108           5.714         13.85         7.12          6.35 \r\n 1991          109           5.447         9.96          6.878         13.716 \r\n 1991          110           11.454        13.62         4.812         0.254 \r\n 1991          111           15.758        15.23         2.056         0 \r\n 1991          112           16.549        17.2          1.557         0.254 \r\n 1991          113           13.988        10.18         3.054         0 \r\n 1991          114           22.649        19.49         1.783         0 \r\n 1991          115           9.248         17.32         6.982         0.762 \r\n 1991          116           21.063        25.96         4.717         0 \r\n 1991          117           19.19         23.52         10.1          5.842 \r\n 1991          118           22.462        24.8          6.457         2.286 \r\n 1991          119           16.907        24.9          9.54          0 \r\n 1991          120           22.587        18.27         8.59          0 \r\n 1991          121           18.612        16.04         4.29          0 \r\n 1991          122           20.857        22.07         3.601         0 \r\n 1991          123           6.186         13.59         7.66          5.334 \r\n 1991          124           22.205        17.29         9.04          0.254 \r\n 1991          125           9.525         17.06         5.906         34.036 \r\n 1991          126           14.366        9.589         3.771         0 \r\n 1991          127           22.974        19.72         1.885         0 \r\n 1991          128           8.919         19.91         11.14         0.762 \r\n 1991          129           20.739        25.25         12.29         0 \r\n 1991          130           18.211        25.72         12.77         0 \r\n 1991          131           13.262        28.11         15.74         0 \r\n 1991          132           19.896        30.02         15.67         0 \r\n 1991          133           20.34         31.07         18.61         0 \r\n 1991          134           22.034        29.77         17.91         2.54 \r\n 1991          135           12.292        28.8          17.72         3.81 \r\n 1991          136           14.561        25.04         17.37         18.796 \r\n 1991          137           18.491        29.7          14.49         0.762 \r\n 1991          138           19.314        15.79         10.03         0.508 \r\n 1991          139           13.303        20.99         9.84          0 \r\n 1991          140           14.609        25.75         14.25         0 \r\n 1991          141           14.44         26.97         18.29         0 \r\n 1991          142           18.795        29.59         20.47         0 \r\n 1991          143           15.746        26.5          19.36         11.684 \r\n 1991          144           20.427        28.3          19.37         2.032 \r\n 1991          145           11.769        26.71         18.79         0 \r\n 1991          146           15.026        28.06         19.19         0 \r\n 1991          147           22.731        31.69         19.31         0.508 \r\n 1991          148           21.769        34.2          22.14         0 \r\n 1991          149           19.248        31.64         19.08         6.096 \r\n 1991          150           18.773        30.67         19.09         0 \r\n 1991          151           16.82         32.35         19.44         6.858 \r\n 1991          152           23.039        30.77         19.03         0 \r\n 1991          153           19.946        32.47         20.05         0 \r\n 1991          154           18.04         31.71         20.89         0 \r\n 1991          155           12.354        23.2          15.31         2.286 \r\n 1991          156           25.762        25.49         14.58         0 \r\n 1991          157           22.846        26.49         12.27         0 \r\n 1991          158           26.374        28.1          12.97         0 \r\n 1991          159           22.707        29.21         13.93         0 \r\n 1991          160           20.465        31.09         17.33         0 \r\n 1991          161           15.992        29.52         19.45         14.478 \r\n 1991          162           17.495        30.07         19.11         2.794 \r\n 1991          163           23.69         32.24         18.4          0 \r\n 1991          164           16.241        31.55         20.06         5.588 \r\n 1991          165           21.798        33.13         21.33         0.254 \r\n 1991          166           19.06         29.3          19.91         5.334 \r\n 1991          167           26.618        27.2          15.54         0 \r\n 1991          168           26.763        30.31         13.19         0 \r\n 1991          169           26.604        30.91         15.13         0 \r\n 1991          170           26.274        31.44         15.55         0 \r\n 1991          171           26.227        32.27         17.1          0 \r\n 1991          172           22.628        31.8          19.23         0 \r\n 1991          173           18.894        21.58         16.1          0 \r\n 1991          174           16.455        23.76         15.35         0 \r\n 1991          175           21.622        28.48         17.72         0 \r\n 1991          176           26.082        30.44         17.64         0 \r\n 1991          177           25.869        34.47         21.26         0 \r\n 1991          178           25.941        33.3          22.75         0 \r\n 1991          179           24.524        32.17         19.74         0 \r\n 1991          180           24.81         35.34         21.18         0 \r\n 1991          181           24.145        34.68         21.94         0 \r\n 1991          182           21.23         33.9          23.31         0 \r\n 1991          183           23.77         33.61         19.39         0 \r\n 1991          184           25.377        30.29         16.35         0 \r\n 1991          185           18.138        28.97         15.2          0 \r\n 1991          186           26.001        34.68         16.06         0 \r\n 1991          187           24.632        35.71         20.47         0 \r\n 1991          188           22.61         33.7          22.52         0 \r\n 1991          189           25.674        29.19         17.47         0 \r\n 1991          190           10.953        22.861        17.77         4.039 \r\n 1991          191           22.177        28.42         16.8          0 \r\n 1991          192           19.928        27.08         20.58         0 \r\n 1991          193           22.378        31.68         19.56         0 \r\n 1991          194           18.544        26.69         16.9          0 \r\n 1991          195           25.116        30.08         15.24         0 \r\n 1991          196           25.348        29.91         15.81         0 \r\n 1991          197           25.304        32.38         15.17         0 \r\n 1991          198           25.162        34.67         17.91         0 \r\n 1991          199           25.329        35.03         17.87         0 \r\n 1991          200           24.406        36.14         19.68         0 \r\n 1991          201           22.146        35.27         22.41         0 \r\n 1991          202           15.501        35.85         25.29         0 \r\n 1991          203           18.866        35.89         22.573        2.769 \r\n 1991          204           18.595        28.58         17.47         0 \r\n 1991          205           25.072        28.67         14.85         0 \r\n 1991          206           24.652        27.23         13.18         0 \r\n 1991          207           24.89         28.18         11.78         0 \r\n 1991          208           19.518        27.03         12.24         0 \r\n 1991          209           14.11         28.63         13.9          0 \r\n 1991          210           23.586        25.91         13.79         0 \r\n 1991          211           24.677        29.01         10.72         0 \r\n 1991          212           23.238        28.52         15.8          0 \r\n 1991          213           24.354        34.12         15.11         0 \r\n 1991          214           20.555        38.21         19.91         4.699 \r\n 1991          215           22.34         28.75         18.79         0 \r\n 1991          216           18.351        27.02         15.75         0 \r\n 1991          217           5.567         18.472        16.38         18.313 \r\n 1991          218           13.914        22.16         17.1          18.39 \r\n 1991          219           14.287        29.6          19.96         18.567 \r\n 1991          220           20.061        27.68         17.98         0 \r\n 1991          221           20.316        26.71         15.64         0 \r\n 1991          222           22.533        28.1          13.17         0 \r\n 1991          223           19.24         30.32         13.23         0 \r\n 1991          224           21.526        30.62         14.01         0 \r\n 1991          225           16.395        28.46         14.33         0 \r\n 1991          226           21.424        31.01         13.12         0 \r\n 1991          227           22.681        30.53         15.54         0 \r\n 1991          228           15.642        29.16         17.69         21.996 \r\n 1991          229           18.36         26.78         17.11         0 \r\n 1991          230           18.07         28.86         15.14         0 \r\n 1991          231           21.535        23.51         12.93         0 \r\n 1991          232           18.473        25.06         10.09         0 \r\n 1991          233           21.041        31.48         16.07         0 \r\n 1991          234           20.27         32.4          17.62         0 \r\n 1991          235           19.477        28.37         17.1          0 \r\n 1991          236           15.809        32.85         17.93         0 \r\n 1991          237           20.594        34.28         18.12         0 \r\n 1991          238           21.272        33.45         18.95         0 \r\n 1991          239           17.289        32.94         18.35         0 \r\n 1991          240           17.368        33.38         20.32         0 \r\n 1991          241           11.882        28.18         21.59         0 \r\n 1991          242           12.381        32.58         19.19         0 \r\n 1991          243           18.961        31.77         18.44         0 \r\n 1991          244           10.335        28.85         14.11         0 \r\n 1991          245           12.822        31.39         18.55         0 \r\n 1991          246           12.076        26.75         15.22         9.754 \r\n 1991          247           20.063        26.02         10.8          0 \r\n 1991          248           18.428        28.57         8.8           0 \r\n 1991          249           19.014        31.89         13.04         0 \r\n 1991          250           17.471        32.31         16.46         0 \r\n 1991          251           11.816        26.11         21.32         0 \r\n 1991          252           16.947        34.2          22.08         5.664 \r\n 1991          253           17.73         29.83         17.5          0 \r\n 1991          254           10.899        29.31         16.15         7.214 \r\n 1991          255           14.82         34.99         20.55         0 \r\n 1991          256           11.565        33.81         18.09         0 \r\n 1991          257           13.361        32.85         22.55         3.886 \r\n 1991          258           12.769        29.9          18.68         5.055 \r\n 1991          259           17.377        22.85         10.59         0 \r\n 1991          260           12.928        28.95         8.54          0 \r\n 1991          261           16.015        15.06         2.175         0 \r\n 1991          262           12.462        13.52        -0.129         0 \r\n 1991          263           16.572        17.74        -2.868         0 \r\n 1991          264           16.764        20.19        -0.825         0 \r\n 1991          265           13.426        18.61         5.502         0 \r\n 1991          266           16.739        20.23         3.92          0 \r\n 1991          267           8.391         19.14         8.58          5.512 \r\n 1991          268           15.13         22.46         6.273         0 \r\n 1991          269           16.872        17.02         3.129         0 \r\n 1991          270           9.394         14.16         7.08          0 \r\n 1991          271           15.839        22.44         2.506         0 \r\n 1991          272           14.229        30.34         8.02          0 \r\n 1991          273           15.453        26.53         9.83          0 \r\n 1991          274           12.505        27.63         4.34          0 \r\n 1991          275           13.493        25.32         14.29         8.179 \r\n 1991          276           8.39          22.089        8.99          29.616 \r\n 1991          277           4.191         11.81         6.255         18.542 \r\n 1991          278           11.609        11.08         0.707         0 \r\n 1991          279           11.731        11.85         0.558         0 \r\n 1991          280           15.029        17.88        -2.822         0 \r\n 1991          281           14.444        25.72         10.19         0 \r\n 1991          282           14.222        24.35         7.58          0 \r\n 1991          283           10.798        18.03         3.847         0 \r\n 1991          284           13.992        21.68         9.13          0 \r\n 1991          285           14.279        16.32         2.647         0 \r\n 1991          286           12.998        14.83         1.547         0 \r\n 1991          287           9.518         12.08         2.8           0 \r\n 1991          288           13.974        11.34        -1.013         0 \r\n 1991          289           13.396        21.93         0.05          0 \r\n 1991          290           11.746        25.72         10.78         2.591 \r\n 1991          291           7.576         13.69        -0.758         0 \r\n 1991          292           9.957         9.92         -5.49          0 \r\n 1991          293           13            14.59        -1.841         0 \r\n 1991          294           12.457        21.61         2.837         0 \r\n 1991          295           11.36         26.43         13.49         9.804 \r\n 1991          296           11.388        23.59         15.82         7.518 \r\n 1991          297           8.09          22.76         10.28         2.743 \r\n 1991          298           11.801        11.44         6.446         13.437 \r\n 1991          299           6.185         11.82         9.63          0 \r\n 1991          300           11.568        12.09         9.1           3.124 \r\n 1991          301           5.549         20.33         11.25         8.814 \r\n 1991          302           6.59          19.58        -0.364         0 \r\n 1991          303           4.275         2.424        -1.068         8.992 \r\n 1991          304           3.546         12.328        1.301         32.791 \r\n 1991          305           2.673         14.289       -3.806         0 \r\n 1991          306           6.832        -3.808        -11.11         0 \r\n 1991          307           6.623        -7.66         -12.96         0 \r\n 1991          308           10.206       -4.742        -15.02         0 \r\n 1991          309           5.499         4.018        -8.7           0 \r\n 1991          310           6.218        -1.051        -9.62          0 \r\n 1991          311           11.001       -5.708        -18.51         0 \r\n 1991          312           10.776       -4.368        -20.26         0 \r\n 1991          313           9.993         1.895        -13.07         0 \r\n 1991          314           6.635         1.174        -5.145         0 \r\n 1991          315           8.697         0.981        -1.447         0 \r\n 1991          316           9.401         3.199        -0.417         0 \r\n 1991          317           9.551         14.65         0.899         0 \r\n 1991          318           2.698         12.7          5.329         12.395 \r\n 1991          319           4.032         13.78         6.574         0 \r\n 1991          320           6.252         8.59          3.184         8.052 \r\n 1991          321           2.511         13.51         4.512         26.645 \r\n 1991          322           8.839         16.65         8.72          0 \r\n 1991          323           6.162         11.32         6.335         0 \r\n 1991          324           8.047         12.07        -0.146         0 \r\n 1991          325           8.6           13.09        -1.073         0 \r\n 1991          326           7.151         6.702        -0.396         8.001 \r\n 1991          327           2.11          2.218        -6.001         0 \r\n 1991          328           7.551        -5.996        -11.72         0 \r\n 1991          329           9.055        -5.212        -15.17         0 \r\n 1991          330           6.409         2.615        -13.89         3.404 \r\n 1991          331           7.774         6.082         0.645         7.849 \r\n 1991          332           3.249         1.902         0.229         11.836 \r\n 1991          333           6.213         15.4          0.208         28.397 \r\n 1991          334           5.857         10.88        -8.54          0 \r\n 1991          335           4.893        -3.574        -9.73          0 \r\n 1991          336           3.176        -3.511        -4.814         6.096 \r\n 1991          337           4.091        -4.814        -17.17         0 \r\n 1991          338           8.505        -10.22        -19.27         0 \r\n 1991          339           6.509         3.84         -10.25         0 \r\n 1991          340           7.861         3.983        -10.81         0 \r\n 1991          341           7.525         9.75          2.657         0 \r\n 1991          342           5.76          15.68        -0.417         0 \r\n 1991          343           7.949         7.22         -3.281         0 \r\n 1991          344           8.056         11.23        -2.888         0 \r\n 1991          345           7.874         7.76         -1.392         9.779 \r\n 1991          346           5.193         16.26         1.808         0 \r\n 1991          347           7.63          6.819        -3.768         0 \r\n 1991          348           7.82          3.358        -6.119         0 \r\n 1991          349           7.815        -2.616        -10.93         0 \r\n 1991          350           7.381         7.18         -10.34         0 \r\n 1991          351           7.694         2.38         -6.495         0 \r\n 1991          352           7.83         -6.131        -12.91         0 \r\n 1991          353           6.902        -1.245        -13.16         6.96 \r\n 1991          354           3.343         2.841        -1.25          9.042 \r\n 1991          355           7.826         5.26         -4.372         0 \r\n 1991          356           7.219         2.135        -1.859         10.135 \r\n 1991          357           6.768         2.792        -2.43          0 \r\n 1991          358           7.556         5.548        -4.225         0 \r\n 1991          359           7.516         5.778        -5.44          0 \r\n 1991          360           7.446         6.723        -2.131         0 \r\n 1991          361           7.574         0.104        -1.226         0 \r\n 1991          362           2.971         3.121        -0.443         0 \r\n 1991          363           6.104         9.92         -1.086         0 \r\n 1991          364           7.506         6.849        -0.708         0 \r\n 1991          365           4.281         7.34         -0.396         0 \r\n 1992          1             3.947         1.632        -1.372         5.283 \r\n 1992          2             3.459         10.56         0.104         0 \r\n 1992          3             7.507         10.74         1.443         0 \r\n 1992          4             7.911         5.053        -0.417         0 \r\n 1992          5             6.833         8.49         -0.527         0 \r\n 1992          6             7.146         10.51         0.916         0 \r\n 1992          7             5.643         9.32          2.652         0 \r\n 1992          8             7.457         8.66          3.347         0 \r\n 1992          9             4.866         9.68         -3.569         0 \r\n 1992          10            8.211         3.825        -8.36          0 \r\n 1992          11            8.036         10.99        -2.605         0 \r\n 1992          12            2.609         4.056         2.012         0 \r\n 1992          13            0.976         3.794        -4.051         0 \r\n 1992          14            8.949        -3.171        -10.32         3.988 \r\n 1992          15            9.055         1.471        -21.61         0 \r\n 1992          16            7.27          1.816        -21.55         0 \r\n 1992          17            8.677         2.334        -13.71         0 \r\n 1992          18            7.275        -10.99        -19            0 \r\n 1992          19            8.654         6.162        -19.48         0 \r\n 1992          20            9.454         4.204        -4.588         0 \r\n 1992          21            9.135         11.205       -2.724         0 \r\n 1992          22            1.645         8.83          0.708         5.537 \r\n 1992          23            3.245         2.266        -6.403         0 \r\n 1992          24            9.346         1.689        -10.78         2.769 \r\n 1992          25            8.492         6.633        -11.32         0 \r\n 1992          26            9.121         3.16         -14.35         0 \r\n 1992          27            7.912         5.757        -4.535         0 \r\n 1992          28            2.301         3.616        -4.646         0 \r\n 1992          29            7.903         9.09         -3.663         0 \r\n 1992          30            6.07          6.126        -1.485         0 \r\n 1992          31            7.694         9.07         -2.961         0 \r\n 1992          32            10.879        5.131        -4.289         0 \r\n 1992          33            10.226        12.37        -2.927         0 \r\n 1992          34            7.979         17.011        2.136         0 \r\n 1992          35            9.122         10.31        -3.679         0 \r\n 1992          36            11.186        5.455        -6.692         0 \r\n 1992          37            6.964         5.482        -2.89          0 \r\n 1992          38            6.978         5.417        -6.669         0 \r\n 1992          39            12.354       -3.927        -12.25         0 \r\n 1992          40            5.599        -1.826        -13.59         0 \r\n 1992          41            4.616         3.703        -1.832         0 \r\n 1992          42            6.696         4.52         -4.477         0 \r\n 1992          43            4.581         1.434        -6.297         0 \r\n 1992          44            2.553         10.63        -3.39          0 \r\n 1992          45            1.4           9.64         -0.354         14.58 \r\n 1992          46            2.946         8.86          0.041         0 \r\n 1992          47            5.373         8.42          0.229         0 \r\n 1992          48            3.542         14.56         0.458         8.992 \r\n 1992          49            1.513         10            1.286         0 \r\n 1992          50            3.073         8.24          0.062         0 \r\n 1992          51            12.44         12.55        -0.667         0 \r\n 1992          52            11.447        6.271        -3.412         0 \r\n 1992          53            13.234        23.889       -0.875         0 \r\n 1992          54            7.913         9.47          0.291         13.284 \r\n 1992          55            1.466         5.017        -1.409         0 \r\n 1992          56            5.793         5.276        -3.637         0 \r\n 1992          57            9.874         7.75         -5.614         0 \r\n 1992          58            4.322         5.935        -0.292         0 \r\n 1992          59            10.781        10.78         1.069         0 \r\n 1992          60            14.347        8.89         -3.198         0 \r\n 1992          61            16.251        22.82         2.907         0 \r\n 1992          62            11.188        22.17         3.398         0 \r\n 1992          63            13.062        15.93         5.459         0 \r\n 1992          64            11.948        20.52         4.406         0 \r\n 1992          65            4.632         15.64         11.84         4.42 \r\n 1992          66            5.574         15.27         9.05          5.258 \r\n 1992          67            3.267         11.33         9.07          0 \r\n 1992          68            11.734        19.47         2.813         0 \r\n 1992          69            2.076         14.16        -4.588         6.401 \r\n 1992          70            15.475       -3.207        -10.44         0 \r\n 1992          71            12.052        1.145        -13.06         0 \r\n 1992          72            19.144       -0.235        -9.84          0 \r\n 1992          73            13.117        2.437        -13.44         2.642 \r\n 1992          74            9.173         5.848        -4.883         0 \r\n 1992          75            19.787        4.163        -4.303         0 \r\n 1992          76            14.254        11.98        -4.498         0 \r\n 1992          77            19.102        11.23         3.247         0 \r\n 1992          78            3.111         3.61         -0.224         0 \r\n 1992          79            19.304        9.09         -2.97          0 \r\n 1992          80            13.229        9.4           0.312         4.039 \r\n 1992          81            4.637         10.46         0.114         0 \r\n 1992          82            20.35         5.191        -3.189         0 \r\n 1992          83            20.407        14.48        -5.471         0 \r\n 1992          84            20.065        17.18         0.27          0 \r\n 1992          85            18.329        13.29         2.73          0 \r\n 1992          86            20.899        7.59         -3.235         0 \r\n 1992          87            21.669        11.11        -5.995         0 \r\n 1992          88            6.577         10.27         0.53          3.556 \r\n 1992          89            4.357         8.22          4.437         0 \r\n 1992          90            18.648        13.19         0.083         0 \r\n 1992          91            14.38         11.67        -1.249         0 \r\n 1992          92            10.22         2.667        -3.715         0 \r\n 1992          93            22.926        7.78         -5.368         0 \r\n 1992          94            10.887        14.64        -2.005         0 \r\n 1992          95            22.956        13.68        -1.341         0 \r\n 1992          96            22.694        16.46        -2.826         0 \r\n 1992          97            20.92         21.58         4.94          0 \r\n 1992          98            19.572        18.71         4.998         0 \r\n 1992          99            11.788        18.73         2.799         3 \r\n 1992          100           13.512        16.33         3.79          0 \r\n 1992          101           15.422        26.76         9.28          0 \r\n 1992          102           6.902         15.6          3.962         6 \r\n 1992          103           15.203        5.182        -0.911         0 \r\n 1992          104           4.159         6.858         1.067         0 \r\n 1992          105           10.25         15.48         5.645         0 \r\n 1992          106           17.985        27.48         8.21          0 \r\n 1992          107           3.663         15.83         8.46          15 \r\n 1992          108           5.51          9.45          6.63          0 \r\n 1992          109           9.013         20.23         8.44          0 \r\n 1992          110           7.385         20.03         15.63         12 \r\n 1992          111           6.55          18.87         4.341         20 \r\n 1992          112           7.785         4.32          0.999         0 \r\n 1992          113           15.015        11.42         0.499         0.254 \r\n 1992          114           4.797         9.01          4.202         11.938 \r\n 1992          115           8.301         8.9           3.83          0 \r\n 1992          116           4.669         5.831         3.826         0 \r\n 1992          117           12.126        10.45         3.446         0.254 \r\n 1992          118           26.917        13.53         2.506         0 \r\n 1992          119           25.874        18.26         0.229         0 \r\n 1992          120           24.207        25.91         8.94          0 \r\n 1992          121           25.142        30.04         10.64         0 \r\n 1992          122           25.869        30.28         18.09         0 \r\n 1992          123           19.674        23.58         12.34         0 \r\n 1992          124           27.47         21.35         8.86          0 \r\n 1992          125           20.797        20.72         9.31          0.254 \r\n 1992          126           23.162        15.74         3.565         0 \r\n 1992          127           28.216        20.11        -0.188         0 \r\n 1992          128           28.293        23.49         3.977         0 \r\n 1992          129           28.001        27.5          4.682         0 \r\n 1992          130           27.732        30.1          7.92          0 \r\n 1992          131           26.786        29.39         11.44         0 \r\n 1992          132           13.664        24.24         16.3          5.588 \r\n 1992          133           14.061        25.13         15.61         0.254 \r\n 1992          134           23.97         22.96         8.83          0.254 \r\n 1992          135           20.737        19.67         10.67         0.508 \r\n 1992          136           23.08         25.45         7.14          0 \r\n 1992          137           24.333        31.76         15.13         0 \r\n 1992          138           20.103        23.6          13.82         0 \r\n 1992          139           24.743        25.7          11.77         0 \r\n 1992          140           26.538        29.52         11.12         0 \r\n 1992          141           19.953        30.07         14.74         2.794 \r\n 1992          142           10.82         25.23         16.42         4.496 \r\n 1992          143           20.623        30.25         18            14.249 \r\n 1992          144           5.132         19.88         9.03          0 \r\n 1992          145           18.65         13.75         5.148         0 \r\n 1992          146           10.42         11.73         3.242         0 \r\n 1992          147           15.145        14.02         5.516         0 \r\n 1992          148           22.054        19.75         3.043         0 \r\n 1992          149           28.837        22.32         4.684         0 \r\n 1992          150           24.464        24.06         8.437         0 \r\n 1992          151           27.343        25.86         7.3           0 \r\n 1992          152           27.697        27.53         8.09          0 \r\n 1992          153           16.746        25.9          14.8          0 \r\n 1992          154           23.251        28.55         14.66         0 \r\n 1992          155           24.052        28.05         12.02         0 \r\n 1992          156           16.822        26.44         17.5          7.747 \r\n 1992          157           29.942        29.02         13.55         2.692 \r\n 1992          158           6.41          25.86         13.78         4.902 \r\n 1992          159           29.834        26.9          11.81         0 \r\n 1992          160           19.032        27.87         11.73         0 \r\n 1992          161           12.373        25.89         17.15         0 \r\n 1992          162           20.683        28.56         16.4          0 \r\n 1992          163           29.005        29.5          12.73         0 \r\n 1992          164           29.318        30.89         14.87         0 \r\n 1992          165           28.299        32.61         13.32         0 \r\n 1992          166           25.737        32.92         12.93         0 \r\n 1992          167           26.106        29.08         19.71         0 \r\n 1992          168           12.568        30.1          21.62         0 \r\n 1992          169           25.666        33.44         19.67         0 \r\n 1992          170           21.386        30.07         18.87         3.658 \r\n 1992          171           16.676        28.36         13.54         5.74 \r\n 1992          172           16.122        20.43         8.6           0 \r\n 1992          173           28.831        21.93         5.483         2.667 \r\n 1992          174           7.061         17.39         8.14          2.718 \r\n 1992          175           23.08         28.92         11.837        4.572 \r\n 1992          176           16.612        24.97         12.72         0 \r\n 1992          177           20.128        28.35         12.83         0 \r\n 1992          178           27.842        24.81         10.48         0 \r\n 1992          179           28.234        24.45         8.09          0 \r\n 1992          180           28.342        28.54         9.88          0 \r\n 1992          181           28.924        31.061        13.99         0 \r\n 1992          182           27.766        31.28         15.59         0 \r\n 1992          183           25.069        31.74         17.02         19.507 \r\n 1992          184           2.361         24.35         17.9          30.632 \r\n 1992          185           20.995        24.07         14.82         0 \r\n 1992          186           23.58         28.78         14.77         0 \r\n 1992          187           14.277        22.56         14.17         0 \r\n 1992          188           27.849        27.71         10.78         40.792 \r\n 1992          189           17.895        31.62         17.59         22.911 \r\n 1992          190           15.746        30.53         21.96         0 \r\n 1992          191           6.784         25.18         18.92         7.29 \r\n 1992          192           16.85         27.39         19.89         0 \r\n 1992          193           15.7          27.67         18.22         7.137 \r\n 1992          194           11.571        28.42         20.87         19.634 \r\n 1992          195           13.96         31.46         20.59         42.266 \r\n 1992          196           5.965         21.62         17.96         2.565 \r\n 1992          197           22.706        25.86         16.96         11.227 \r\n 1992          198           11.337        24.7          17.29         0 \r\n 1992          199           22.458        25.88         15.43         0 \r\n 1992          200           24.016        27.06         14.37         0 \r\n 1992          201           24.912        29.3          17.22         0 \r\n 1992          202           11.18         22.5          14.66         0 \r\n 1992          203           19.291        23.75         12.53         0 \r\n 1992          204           11.883        25.62         15.49         0 \r\n 1992          205           9.146         23.27         17.38         4.14 \r\n 1992          206           11.771        22.83         16.46         8.433 \r\n 1992          207           9.355         29.14         19.65         17.272 \r\n 1992          208           18.603        28.11         17.35         0 \r\n 1992          209           27.573        28.12         15.54         0 \r\n 1992          210           23.714        29.64         15.69         7.595 \r\n 1992          211           8.659         25.07         17.09         30.175 \r\n 1992          212           5.833         18.04         15.45         4.851 \r\n 1992          213           27.575        25.76         14.45         0 \r\n 1992          214           23.066        25.68         11.77         3.759 \r\n 1992          215           18.55         26.43         14.62         0 \r\n 1992          216           18.255        25.48         12.7          0 \r\n 1992          217           26.83         24.14         8.75          0 \r\n 1992          218           24.205        24.44         14.74         0 \r\n 1992          219           23.304        27.05         14.75         0 \r\n 1992          220           9.845         24.94         17.82         2.642 \r\n 1992          221           18.875        32.14         19.89         0 \r\n 1992          222           25.764        33.86         22.06         0 \r\n 1992          223           19.022        31.69         15.95         0 \r\n 1992          224           25.624        27.35         13.99         0 \r\n 1992          225           9.408         22.71         12.54         0 \r\n 1992          226           22.284        21.42         9.71          0 \r\n 1992          227           18.675        21.61         9.22          0 \r\n 1992          228           20.52         22.23         7.14          0 \r\n 1992          229           23.733        25.09         8.66          0 \r\n 1992          230           23.17         25.09         9.21          5.156 \r\n 1992          231           14.692        24.68         13.27         0 \r\n 1992          232           23.957        25.27         11.07         0 \r\n 1992          233           25.446        25.37         9.22          0 \r\n 1992          234           25.552        26.94         9.27          0 \r\n 1992          235           21.698        27.61         11.73         0 \r\n 1992          236           21.408        29.58         17.73         0 \r\n 1992          237           21.279        30.44         17.95         0 \r\n 1992          238           20.219        31.2          18.96         27.813 \r\n 1992          239           4.066         19.98         15.27         6.172 \r\n 1992          240           15.788        21.34         10.35         0 \r\n 1992          241           21.549        23.37         8.31          0 \r\n 1992          242           22.894        29.34         13.23         0 \r\n 1992          243           24.194        22.14         10.68         0 \r\n 1992          244           24.004        24.9          7.9           0 \r\n 1992          245           10.193        23.45         11.47         16.485 \r\n 1992          246           14.623        25.83         16.85         0 \r\n 1992          247           23.433        26.7          14.03         0 \r\n 1992          248           22.724        27.09         11.46         0 \r\n 1992          249           14.661        28.49         16.66         6.553 \r\n 1992          250           12.001        25.62         17.25         0 \r\n 1992          251           8.205         24.96         15.25         18.009 \r\n 1992          252           22.428        20.75         7.91          22.327 \r\n 1992          253           2.293         20.96         12.26         45.999 \r\n 1992          254           19.112        19.08         7.88          0 \r\n 1992          255           21.785        21.91         5.343         0 \r\n 1992          256           20.37         23.84         8.48          0 \r\n 1992          257           19.855        28.39         15.27         0 \r\n 1992          258           6.991         25.58         18.76         13.589 \r\n 1992          259           9.434         29.52         18.38         0 \r\n 1992          260           18.322        29.67         21.2          7.188 \r\n 1992          261           9.497         26.08         18.12         11.659 \r\n 1992          262           19            22.82         6.382         0 \r\n 1992          263           20.64         19.89         3.741         5.969 \r\n 1992          264           1.616         16.71         8.48          8.103 \r\n 1992          265           5.17          19.27         13.84         0 \r\n 1992          266           20.312        17.16         4.168         0 \r\n 1992          267           19.597        19.35         3.252         0 \r\n 1992          268           19.766        20.94         3.96          0 \r\n 1992          269           8.233         22.61         7.61          2.718 \r\n 1992          270           5.303         19.74         10.31         6.375 \r\n 1992          271           18.912        22.8          6.879         0 \r\n 1992          272           19.32         15.82         1.614         0 \r\n 1992          273           18.314        19.14        -0.148         0 \r\n 1992          274           17.828        22.68         3.828         0 \r\n 1992          275           17.662        25.84         7.46          0 \r\n 1992          276           17.406        27.58         9.83          0 \r\n 1992          277           17.209        28.5          11.1          0 \r\n 1992          278           16.035        23.84         9.79          0 \r\n 1992          279           15.3          22.75         9.13          0 \r\n 1992          280           14.36         23.56         7.43          0 \r\n 1992          281           13.735        22.47         7.04          0 \r\n 1992          282           6.405         14.66         5.381         0 \r\n 1992          283           6.143         14.7          5.306         0 \r\n 1992          284           13.823        17.04         5.344         0 \r\n 1992          285           16.011        17.55         3.431         0 \r\n 1992          286           14.034        16.34         6.429         0 \r\n 1992          287           12.67         19.35         2.487         0 \r\n 1992          288           10.689        19.65         8.82          0 \r\n 1992          289           1.531         9.94          7.18          0 \r\n 1992          290           9.445         7.16         -0.61          0 \r\n 1992          291           12.869        11.12        -4.922         0 \r\n 1992          292           14.19         7.37         -5.297         0 \r\n 1992          293           6.367         7.25         -6.231         7.544 \r\n 1992          294           13.154        19.4          3.951         0 \r\n 1992          295           13.374        18.99         1.039         0 \r\n 1992          296           12.869        26.69         11.2          0 \r\n 1992          297           10.926        26.01         12.33         0 \r\n 1992          298           13.048        23.04         6.943         0 \r\n 1992          299           13.348        24.89         5.771         0 \r\n 1992          300           9.658         17.58         2.431         0 \r\n 1992          301           13.34         16.36        -1.843         0 \r\n 1992          302           11.604        14.83         4.167         0 \r\n 1992          303           9.445         10.14         2.053         0 \r\n 1992          304           7.379         11.83         2.178         4.978 \r\n 1992          305           1.41          8.46          4.091         15.926 \r\n 1992          306           0.908         8.36          6.18          12.852 \r\n 1992          307           1.704         9.84          2.761         0 \r\n 1992          308           3.012         3.583        -1.097         0 \r\n 1992          309           2.885         1.65         -0.582         0 \r\n 1992          310           3.841         1.254        -2.142         0 \r\n 1992          311           2.733        -0.219        -2.379         0 \r\n 1992          312           3.815         0.925        -2.737         0 \r\n 1992          313           6.029         11.02        -1.549         0 \r\n 1992          314           3.181         13.54         7.38          4.724 \r\n 1992          315           1.232         12.06         4.321         4.216 \r\n 1992          316           3.837         6.018         1.434         10.719 \r\n 1992          317           4.916         6.726        -0.505         0 \r\n 1992          318           7.366         2.449        -5.259         0 \r\n 1992          319           4.332        -0.691        -6.794         0 \r\n 1992          320           4.17          2.659        -6.172         0 \r\n 1992          321           9.202         15.97        -3.615         0 \r\n 1992          322           2.968         6.372        -0.259         0 \r\n 1992          323           3.513         5.526        -0.072         6.223 \r\n 1992          324           1.224         8.23          2.694         31.674 \r\n 1992          325           1.045         12.17         7.31          32.944 \r\n 1992          326           1.572         7.3           2.065         7.01 \r\n 1992          327           0.608         3.215         1.791         9.246 \r\n 1992          328           2.322         3.525         0.831         0 \r\n 1992          329           0.984         3.931         2.507         7.214 \r\n 1992          330           0.786         3.826         0.314         12.7 \r\n 1992          331           1.469         0.417        -3.777         0 \r\n 1992          332           8.328         2.015        -6.435         0 \r\n 1992          333           8.036         3.933        -8.2           0 \r\n 1992          334           8.276         5.383        -4.549         0 \r\n 1992          335           3.061         2.347        -2.869         0 \r\n 1992          336           3.961         2.123        -6.852         0 \r\n 1992          337           3.73          1.358        -8.17          0 \r\n 1992          338           5.728         1.304        -6.52          0 \r\n 1992          339           7.529        -0.842        -10.08         0 \r\n 1992          340           8.495        -4.271        -13.82         0 \r\n 1992          341           2.058        -2.01         -6.035         0 \r\n 1992          342           4.325        -2.32         -9.9           0 \r\n 1992          343           8.287         3.743        -10.2          5.766 \r\n 1992          344           1.157        -0.55         -2.972         10.033 \r\n 1992          345           3.598         1.631        -1.434         0 \r\n 1992          346           4.338        -0.605        -4.168         0 \r\n 1992          347           7.458         1.624        -10.611        0 \r\n 1992          348           3.466         0.851        -3.238         2.718 \r\n 1992          349           2.595         2.951         0.322         15.519 \r\n 1992          350           0.784         4.918         0.548         17.704 \r\n 1992          351           0.959         0.916        -2.394         0 \r\n 1992          352           1.465        -1.896        -2.885         0 \r\n 1992          353           1.541         2.329        -2.952         0 \r\n 1992          354           2.464         2.169        -8.35          0 \r\n 1992          355           8.035        -0.012        -11.74         0 \r\n 1992          356           6.339         3.951        -4.901         0 \r\n 1992          357           6.811         6.516        -5.563         0 \r\n 1992          358           3.932        -0.015        -16.28         0 \r\n 1992          359           7.986        -3.749        -18.41         0 \r\n 1992          360           8.166        -0.135        -12.22         0 \r\n 1992          361           8.039        -0.388        -15.18         0 \r\n 1992          362           8.15          6.429        -4.655         0 \r\n 1992          363           6.541         7.31         -5.112         5.283 \r\n 1992          364           1.529         5.251         1.027         5.283 \r\n 1992          365           0.632         3.64         -10.2          3.429 \r\n 1992          366           7.295        -10.17        -16.62         0 \r\n 1993          1             7.219        -8.61         -17.81         0 \r\n 1993          2             1.313         0.419        -9.39          3.81 \r\n 1993          3             1.399         6.526         0.381         15.138 \r\n 1993          4             1.79          2.799        -12.14         0 \r\n 1993          5             4.68         -5.716        -13.29         0 \r\n 1993          6             4.93         -4.586        -12.45         0 \r\n 1993          7             2.697        -2.896        -7.77          0 \r\n 1993          8             6.807        -5.891        -10.6          0 \r\n 1993          9             2.43         -4.177        -7.07          5.258 \r\n 1993          10            8.373        -5.105        -8.38          0 \r\n 1993          11            4.8          -3.568        -9.3           3.226 \r\n 1993          12            2.228         0.1          -4.625         4.064 \r\n 1993          13            4.179        -0.578        -7.6           0 \r\n 1993          14            5.27         -4.96         -8.32          0 \r\n 1993          15            6.105        -4.48         -7.339         0 \r\n 1993          16            3.703         0.656        -4.989         0 \r\n 1993          17            9.667        -4.826        -16.6          0 \r\n 1993          18            8.068        -5.151        -16.689        0 \r\n 1993          19            9.7          -3.587        -14.49         3.861 \r\n 1993          20            1.345         0.681        -10.44         4.724 \r\n 1993          21            3.385         1.154        -0.154         0 \r\n 1993          22            10.322        4.739        -1.076         0 \r\n 1993          23            6.098         5.414        -1.388         0 \r\n 1993          24            10.474       -1.359        -8.44          0 \r\n 1993          25            10.391       -0.934        -9.03          0 \r\n 1993          26            10.08         6.183        -4.11          0 \r\n 1993          27            4.657         1.484        -3.267         0 \r\n 1993          28            6.397         0.984        -14.24         0 \r\n 1993          29            11.332       -5.716        -16.14         0 \r\n 1993          30            11.334        3.555        -11.69         0 \r\n 1993          31            10.976        8.49         -1.019         0 \r\n 1993          32            10.821        4.4          -2.264         0 \r\n 1993          33            10.286        3.093        -4.511         0 \r\n 1993          34            10.185        9.09         -4.959         0 \r\n 1993          35            11.13         8.861        -4.112         0 \r\n 1993          36            3.955        -0.652        -4.653         0 \r\n 1993          37            1.757         0.543        -1.349         0 \r\n 1993          38            2.581         0.955        -1.499         0 \r\n 1993          39            1.704         1.013        -1.312         0 \r\n 1993          40            2.397         2.341        -1.001         0 \r\n 1993          41            5.025         4.635         0.607         0 \r\n 1993          42            1.167         1.434        -1.433         4.547 \r\n 1993          43            2.421        -1.368        -3.267         0 \r\n 1993          44            7.569        -2.696        -7.94          0 \r\n 1993          45            11.385       -4.978        -12.19         0 \r\n 1993          46            7.904        -5.045        -10.61         0 \r\n 1993          47            12.715       -6.123        -14.84         0 \r\n 1993          48            14.732       -14.7         -19.58         0 \r\n 1993          49            14.828       -8.1          -20.63         0 \r\n 1993          50            8.662        -1.745        -14.94         0 \r\n 1993          51            5.472        -1.076        -6.007         5.893 \r\n 1993          52            4.213        -0.426        -5.594         0 \r\n 1993          53            11.698       -5.603        -16.27         0 \r\n 1993          54            15.713       -12.25        -20.08         0 \r\n 1993          55            14.28        -6.269        -23.96         0 \r\n 1993          56            6.098        -7.93         -10.73         4.978 \r\n 1993          57            15.98        -0.191        -15.58         0 \r\n 1993          58            14.206       -1.012        -16.5          0 \r\n 1993          59            16.712        3.329        -18.872        0 \r\n 1993          60            15.651        6.184        -5.864         4.14 \r\n 1993          61            2.618         2.017        -2.954         14.783 \r\n 1993          62            2.014         2.718         0.635         10.719 \r\n 1993          63            9.026         3.338        -0.587         0 \r\n 1993          64            17.909        5.623        -2.302         0 \r\n 1993          65            13.325        10.07        -3.56          0 \r\n 1993          66            12.399        10.5         -0.117         0 \r\n 1993          67            8.049         5.033        -0.105         0 \r\n 1993          68            10.477        5.773        -1.161         0 \r\n 1993          69            3.092         3.128        -6.162         0 \r\n 1993          70            15.614       -1.632        -9.52          0 \r\n 1993          71            12.764       -1.943        -11.77         0 \r\n 1993          72            17.276       -5.776        -14.45         0 \r\n 1993          73            19.712       -4.008        -16.33         0 \r\n 1993          74            12.062        13.47        -8.72          0 \r\n 1993          75            3.867         6.535        -7.63          0 \r\n 1993          76            12.898       -0.6          -12.2          0 \r\n 1993          77            11.539        0            -11.1          5.055 \r\n 1993          78            7.301         1.1          -2.8           0 \r\n 1993          79            6.544         2.8           0             0 \r\n 1993          80            4.804         2.8          -1.1           22.428 \r\n 1993          81            4.203         2.8           0.6           15.469 \r\n 1993          82            6.496         1.7           0             0 \r\n 1993          83            11.216        4.4           0.6           0 \r\n 1993          84            12.326        10            1.7           0 \r\n 1993          85            15.906        7.8           2.2           0 \r\n 1993          86            15.362        11.1          1.7           0 \r\n 1993          87            16.896        13.3         -0.6           0 \r\n 1993          88            18.413        19.4          2.2           0 \r\n 1993          89            2.996         20.6          6.7           17.196 \r\n 1993          90            1.849         15.6          4.4           3.404 \r\n 1993          91            17.723        4.4          -2.8           0 \r\n 1993          92            22.854        3.9          -5             0 \r\n 1993          93            22.914        7.2          -2.2           0 \r\n 1993          94            23.083        10.6         -2.2           0 \r\n 1993          95            20.058        9.4          -2.8           0 \r\n 1993          96            10.248        13.3         -0.6           0 \r\n 1993          97            2.166         13.3          7.2           6.248 \r\n 1993          98            4.15          16.7          10.6          0 \r\n 1993          99            20.728        15.6          4.4           0 \r\n 1993          100           17.213        18.9          2.2           0 \r\n 1993          101           5.847         16.7          6.1           0 \r\n 1993          102           12.801        10            2.2           0 \r\n 1993          103           7.371         8.9           2.8           6.731 \r\n 1993          104           2.502         8.3           5             10.135 \r\n 1993          105           4.319         6.7           0             10.287 \r\n 1993          106           23.353        10            0             0 \r\n 1993          107           22.691        18.3         -1.7           0 \r\n 1993          108           13.855        18.3          6.7           15.418 \r\n 1993          109           1.403         21.1          11.1          23.216 \r\n 1993          110           23.226        20.6          2.2           0 \r\n 1993          111           25.676        14.4          1.1           0 \r\n 1993          112           21.06         14.188        6.996         0 \r\n 1993          113           15.586        12.925        7.4935        0 \r\n 1993          114           10.444        11.643        7.991         0 \r\n 1993          115           24.427        13.329        6.462         0 \r\n 1993          116           19.263        15.741        8.638         0 \r\n 1993          117           4.906         16.459        9.697         0 \r\n 1993          118           22.885        16.426        11.527        23.495 \r\n 1993          119           25.23         14.376        6.831         0 \r\n 1993          120           11.04         14.284        12.126        8.941 \r\n 1993          121           4.116         15.584        14.522        0 \r\n 1993          122           5.263         14.598        14.592        0 \r\n 1993          123           4.047         17.416        14.07         30.048 \r\n 1993          124           8.994         25            12.485        4.928 \r\n 1993          125           18.492        27.222        15.639        0 \r\n 1993          126           6.772         27.222        16.072        8.839 \r\n 1993          127           14.914        26.667        17.151        0 \r\n 1993          128           16.139        26.667        15.895        0 \r\n 1993          129           15.31         22.778        15.451        0 \r\n 1993          130           9.495         23.333        17.112        0 \r\n 1993          131           17.666        26.667        14.472        7.798 \r\n 1993          132           24.625        31.111        5.236         0 \r\n 1993          133           24.336        31.111        8.914         0 \r\n 1993          134           21.742        29.444        10.016        0 \r\n 1993          135           14.734        22.778        9.582         0 \r\n 1993          136           23.662        17.222        7.133         0 \r\n 1993          137           4.875         20.556        10.192        0 \r\n 1993          138           17.931        20.556        4.037         0 \r\n 1993          139           15.394        14.444        4.789         0 \r\n 1993          140           17.672        17.778        5.139         0 \r\n 1993          141           26.583        21.438        10.043        2.591 \r\n 1993          142           5.29          21.124        13.668        18.034 \r\n 1993          143           7.275         24.385        12.684        0 \r\n 1993          144           8.834         20.873        7.582         0 \r\n 1993          145           22.52         20.205        7.704         0 \r\n 1993          146           22.571        26.101        13.213        0 \r\n 1993          147           24.28         25.927        13.881        3.023 \r\n 1993          148           13.264        23.781        6.824         3.048 \r\n 1993          149           12.037        20.127        5.122         5.334 \r\n 1993          150           13.955        24.602        4.959         2.87 \r\n 1993          151           28.493        20.132        7.327         0 \r\n 1993          152           11.342        20.33         5.521         17.272 \r\n 1993          153           8.546         16.09         10.277        0 \r\n 1993          154           20.775        13.912        12.173        10.49 \r\n 1993          155           16.091        11.82         9.106         14.224 \r\n 1993          156           29.678        23.03         5.115         0 \r\n 1993          157           10.927        17.77         12.58         0 \r\n 1993          158           5.647         22.54         15.94         44.45 \r\n 1993          159           17.445        28.49         16.44         3.556 \r\n 1993          160           30.035        26.51         16.15         0 \r\n 1993          161           29.505        29.51         14.09         0 \r\n 1993          162           26.137        30.24         16.24         0 \r\n 1993          163           24.359        29.6          16.97         0 \r\n 1993          164           11.461        29.27         18.87         7.112 \r\n 1993          165           30.666        27.56         15.94         0 \r\n 1993          166           30.96         24.45         11.54         0 \r\n 1993          167           20.629        30.03         14.18         0 \r\n 1993          168           21.718        32.9          21.48         0.254 \r\n 1993          169           20.714        30.86         19.36         4.064 \r\n 1993          170           11.206        27.26         17.46         12.954 \r\n 1993          171           27.03         26.04         16.05         0 \r\n 1993          172           29.543        30.76         14.58         0 \r\n 1993          173           30.505        31.68         16.77         0 \r\n 1993          174           25.848        31.7          18.96         0 \r\n 1993          175           8.625         27.01         18.76         32.258 \r\n 1993          176           29.902        29.01         15.12         0 \r\n 1993          177           29.515        29.71         16.58         0 \r\n 1993          178           29.446        31.29         19.08         0 \r\n 1993          179           15.613        28.17         19.2          0 \r\n 1993          180           23.78         28.65         15.95         49.276 \r\n 1993          181           15.772        26.02         16.14         20.828 \r\n 1993          182           21.185        28.34         18.2          5.588 \r\n 1993          183           19.31         30.46         21.89         0 \r\n 1993          184           26.786        31.8          22.24         0 \r\n 1993          185           4.752         25.49         19.91         0 \r\n 1993          186           5.145         25.67         18.68         60 \r\n 1993          187           10.761        23.65         17.65         15 \r\n 1993          188           9.777         24.7          16.56         0 \r\n 1993          189           14.13         29.12         19.32         13 \r\n 1993          190           24.412        28.54         20.48         25 \r\n 1993          191           17.673        29            19.38         0 \r\n 1993          192           24.567        29.52         18.98         8 \r\n 1993          193           29.787        27.28         14.74         0 \r\n 1993          194           11.922        27.24         17.26         0 \r\n 1993          195           12.55         25.5          19.01         0 \r\n 1993          196           17.624        26.07         19.8          0 \r\n 1993          197           14.369        27.68         18.61         0 \r\n 1993          198           21.609        32.8          21.7          0.508 \r\n 1993          199           17.2          29.52         21.5          0.762 \r\n 1993          200           23.745        30.19         18.99         0 \r\n 1993          201           17.655        26.44         16.18         2.286 \r\n 1993          202           24.056        27.3          15.89         0.254 \r\n 1993          203           5.698         20.93         15.75         5.588 \r\n 1993          204           12.933        26.21         19.91         22.606 \r\n 1993          205           10.791        28.34         19.61         53.086 \r\n 1993          206           26.544        30.75         20.31         16.764 \r\n 1993          207           24.254        30.15         17.79         0 \r\n 1993          208           26.86         33.32         20.55         0 \r\n 1993          209           28.238        27.17         19.41         0 \r\n 1993          210           28.292        27.49         16.55         0 \r\n 1993          211           27.566        30.63         14.43         0 \r\n 1993          212           2.964         23.23         18.02         45.72 \r\n 1993          213           22.363        29.2          17.07         0 \r\n 1993          214           24.953        26.07         14.49         0 \r\n 1993          215           16.082        24.04         14.82         0.762 \r\n 1993          216           22.572        23.71         12.34         0 \r\n 1993          217           4.76          17.53         10.99         10.414 \r\n 1993          218           24.829        23.51         13.02         0 \r\n 1993          219           25.066        26.61         10.79         0 \r\n 1993          220           25.197        27.42         13.46         0 \r\n 1993          221           20.274        30.78         18.77         29.972 \r\n 1993          222           20.636        29.17         18.73         14.224 \r\n 1993          223           20.634        29.64         18.01         15.748 \r\n 1993          224           11.539        27.78         20.6          34.798 \r\n 1993          225           19.235        30.28         19.46         0 \r\n 1993          226           20.915        30.35         18.65         12.954 \r\n 1993          227           22.665        32.11         20.28         4.826 \r\n 1993          228           18.992        31.79         20.72         44.704 \r\n 1993          229           20.775        31.37         23.12         0 \r\n 1993          230           17.442        31.2          19.98         22.098 \r\n 1993          231           13.76         29.06         21.59         1.524 \r\n 1993          232           24.773        26.84         17.99         0 \r\n 1993          233           19.16         25.97         17.42         0 \r\n 1993          234           14.372        27.06         19.03         12.7 \r\n 1993          235           21.791        31.84         21.09         0 \r\n 1993          236           24.266        32.18         19.36         0 \r\n 1993          237           21.489        32.05         20.14         0 \r\n 1993          238           23.265        34.02         21.78         0 \r\n 1993          239           21.583        30.78         19.78         0 \r\n 1993          240           7.942         24.81         19.1          0.762 \r\n 1993          241           16.273        29.92         19.44         0 \r\n 1993          242           15.056        31.35         18.84         27.432 \r\n 1993          243           23.955        24.12         12.6          0.254 \r\n 1993          244           23.462        24.55         11.1          0 \r\n 1993          245           11.016        28.17         16.52         17.272 \r\n 1993          246           20.382        23.41         12.86         0.254 \r\n 1993          247           22.626        26.54         11.23         0 \r\n 1993          248           9.193         21.35         12.99         5.842 \r\n 1993          249           22.26         21.89         10.53         2.286 \r\n 1993          250           20.964        24.01         9.65          0.762 \r\n 1993          251           21.239        23.39         13.34         1.27 \r\n 1993          252           19.217        25.12         12.23         0.254 \r\n 1993          253           21.893        19.85         7.14          0 \r\n 1993          254           18.601        22.84         6.2           0 \r\n 1993          255           20.164        32.01         16.98         0 \r\n 1993          256           2.26          23.77         14.54         0 \r\n 1993          257           4.019         14.5          7.37          34.54 \r\n 1993          258           11.288        14.56         6.898         0 \r\n 1993          259           10.849        16.71         9.05          0 \r\n 1993          260           19.73         20.35         6.382         0 \r\n 1993          261           5.936         18.85         10.13         0 \r\n 1993          262           5.974         18.61         12.41         3 \r\n 1993          263           8.15          21.98         14.81         1 \r\n 1993          264           15.53         22.39         11.89         0 \r\n 1993          265           7.409         22.92         15.44         1.5 \r\n 1993          266           19.684        19.04         6.933         0 \r\n 1993          267           15.172        19.35         5.983         0 \r\n 1993          268           1.624         14.26         9.38          10.92 \r\n 1993          269           10.467        18.42         6.505         20 \r\n 1993          270           16.053        15.05         6.422         0 \r\n 1993          271           19.199        18.6          4.52          0 \r\n 1993          272           16.083        14.71         1.603         0 \r\n 1993          273           14.367        19.42         3.165         0 \r\n 1993          274           13.19         19.66         8.1           0 \r\n 1993          275           18.26         13.22         3.385         0 \r\n 1993          276           17.629        23.23         4             0 \r\n 1993          277           17.414        22.9          4.238         0 \r\n 1993          278           17.296        20.41         0.371         0 \r\n 1993          279           15.699        28.16         12.04         0 \r\n 1993          280           16.292        28.91         12.79         0 \r\n 1993          281           8.463         25.82         10.18         0 \r\n 1993          282           14.676        16.506       -0.096         7 \r\n 1993          283           16.882        13.79        -2.584         0 \r\n 1993          284           15.173        13.23         0.139         0 \r\n 1993          285           16.154        15.08         1.583         0 \r\n 1993          286           15.795        16.31        -1.839         0 \r\n 1993          287           8.903         19.15         8.51          0 \r\n 1993          288           5.657         19.5          11.89         1.5 \r\n 1993          289           3.661         18.05         12.57         1.2 \r\n 1993          290           4.909         13.6          4.255         0 \r\n 1993          291           4.739         12.97         2.762         0 \r\n 1993          292           7.393         16.62         10.09         1.1 \r\n 1993          293           3.97          16.33         4.217         0 \r\n 1993          294           14.889        13.83         0.982         1 \r\n 1993          295           14.312        18.91        -1.802         0 \r\n 1993          296           13.958        22.49         4.339         0 \r\n 1993          297           14.115        22.79         5.449         0 \r\n 1993          298           13.957        21.82         5.638         0 \r\n 1993          299           6.177         11.21         4.244         0 \r\n 1993          300           7.09          7.82          1.615         0 \r\n 1993          301           9.696         16.38         0.21          0 \r\n 1993          302           5.426         2.244        -1.915         0 \r\n 1993          303           5.509         2.359        -3.647         0 \r\n 1993          304           11.961        4.416        -7.38          0 \r\n 1993          305           11.105        8.51         -7.66          0 \r\n 1993          306           3.31          9.36         -0.298         0 \r\n 1993          307           10.133        15.27        -1.048         0 \r\n 1993          308           9.935         16.15         5.172         0 \r\n 1993          309           2.437         5.096        -3.588         0 \r\n 1993          310           5.48         -2.961        -8.63          0 \r\n 1993          311           11.696        8.96         -8.66          0 \r\n 1993          312           11.259        12.43        -3.106         0 \r\n 1993          313           11            13.53        -5.142         0 \r\n 1993          314           11.225        13.6         -1.659         0 \r\n 1993          315           8.427         14.04         0.802         6.731 \r\n 1993          316           1.166         10.88         0.044         11.735 \r\n 1993          317           3.322         13.72         4.623         0 \r\n 1993          318           1.835         6.088         3.044         0 \r\n 1993          319           2.331         4.784         0.926         0 \r\n 1993          320           1.211         3.574         1.039         3.023 \r\n 1993          321           5.914         8.12         -1.33          0 \r\n 1993          322           3.177         5.401        -2.094         0 \r\n 1993          323           9.614         6.403        -1.463         0 \r\n 1993          324           9.122         11           -4.007         0 \r\n 1993          325           8.576         12.86         0.69          0 \r\n 1993          326           6.949         12.17        -1.512         0 \r\n 1993          327           5.653         14.13         6.059         3.759 \r\n 1993          328           0.646         6.678         3.583         7.214 \r\n 1993          329           1.191         5.897        -6.804         0 \r\n 1993          330           9.042        -3.701        -10.04         0 \r\n 1993          331           7.332         0.467        -7.03          0 \r\n 1993          332           8.535        -1.554        -10.62         1 \r\n 1993          333           8.703        -0.324        -8.02          0 \r\n 1993          334           3.829         0.175        -8.84          0 \r\n 1993          335           5.746         7.38         -4.539         0 \r\n 1993          336           8.681         11.52        -2.349         0.51 \r\n 1993          337           3.445         5.468        -2.595         0 \r\n 1993          338           1.498         4.255         0.135         0 \r\n 1993          339           1.715         5.164        -0.457         0 \r\n 1993          340           8.259         3.036        -4.389         0 \r\n 1993          341           5.524         8.03         -4.378         0 \r\n 1993          342           7.144         6.565        -3.95          0 \r\n 1993          343           3.96          14.38         1.228         0 \r\n 1993          344           3.108         6.2          -6.173         0 \r\n 1993          345           8.563         1.378        -10.83         0 \r\n 1993          346           4.315         6.498        -4.396         0 \r\n 1993          347           1.661         6.193         2.139         3.962 \r\n 1993          348           0.634         3.291         1.395         0 \r\n 1993          349           6.86          7.76          0.603         0 \r\n 1993          350           2.387         5.229        -1.397         0 \r\n 1993          351           2.049         6.719         2.269         2.7 \r\n 1993          352           2.252         3.355         0.608         1.7 \r\n 1993          353           4.295         6.249        -0.448         0 \r\n 1993          354           2.366        -0.382        -4.579         0 \r\n 1993          355           4.943         0.241        -8             0 \r\n 1993          356           3.36         -3.21         -8.84          0 \r\n 1993          357           6.999        -6.131        -14.39         0 \r\n 1993          358           3.333        -5.687        -14.11         0 \r\n 1993          359           8.318        -6.095        -13.14         3.3 \r\n 1993          360           7.611        -10.02        -15.21         1.78 \r\n 1993          361           4.609        -10.11        -14.32         0 \r\n 1993          362           8.26         -7.34         -18.05         0 \r\n 1993          363           7.24         -4.957        -14.93         0 \r\n 1993          364           3.384        -2.896        -19.7          0 \r\n 1993          365           6.626         5.639        -10.65         0 \r\n 1994          1             1.44          5.052        -3.021         0 \r\n 1994          2             1.851         0.824        -3.371         7.544 \r\n 1994          3             4.653        -1.029        -4.492         0 \r\n 1994          4             6.052        -3.36         -8             0 \r\n 1994          5             3.459        -0.999        -10.07         0 \r\n 1994          6             3.277        -1.038        -15.16         0 \r\n 1994          7             8.916        -15.17        -23.02         0 \r\n 1994          8             6.799        -12.64        -21.57         0 \r\n 1994          9             7.446        -4.29         -19.56         2.845 \r\n 1994          10            2.962         0.853        -4.329         0 \r\n 1994          11            7.137         0.636        -15.35         5 \r\n 1994          12            3.966        -2.049        -8.23          0 \r\n 1994          13            5.14         -7.46         -19.45         0 \r\n 1994          14            9.661        -18.09        -23.61         2.2 \r\n 1994          15            9.788        -23.57        -30.37         0 \r\n 1994          16            3.291        -10.55        -25.81         0 \r\n 1994          17            9.027        -12.01        -26.32         1 \r\n 1994          18            10.136       -24.561       -30.67         0 \r\n 1994          19            5.631        -12.63        -30.12         0 \r\n 1994          20            10.163       -13.73        -26.29         2.5 \r\n 1994          21            10.338       -0.81         -25.75         0 \r\n 1994          22            9.958         3.443        -12.26         0 \r\n 1994          23            7.445         5.764        -3.577         0 \r\n 1994          24            2.398         4.948         0.618         0 \r\n 1994          25            0.856         3.059        -1.613         0.51 \r\n 1994          26            1.655        -1.488        -3.967         1 \r\n 1994          27            2.14          0.957        -3.662         1.7 \r\n 1994          28            3.34         -0.708        -7.27          0 \r\n 1994          29            5.487        -3.435        -9.111         0.5 \r\n 1994          30            8.385        -8.33         -18.722        0.5 \r\n 1994          31            12.057       -13.98        -24.11         0 \r\n 1994          32            9.406        -8.09         -22.85         0 \r\n 1994          33            7.825        -3.273        -15.07         0 \r\n 1994          34            12.2         -0.818        -16.01         0 \r\n 1994          35            12.648       -3.956        -12.84         0 \r\n 1994          36            12.54        -0.69         -10.71         0 \r\n 1994          37            12.335        0.572        -11.99         0 \r\n 1994          38            4.917        -11.94        -16.41         0 \r\n 1994          39            2.794        -10.51        -15.52         0 \r\n 1994          40            13.45        -12.23        -21.68         0.76 \r\n 1994          41            13.378       -4.148        -22.38         0 \r\n 1994          42            13.459       -0.867        -15.92         0 \r\n 1994          43            5.625        -1.997        -8.61          3.15 \r\n 1994          44            14.26         2.886        -16.24         0 \r\n 1994          45            13.047        9.18         -4.177         0 \r\n 1994          46            12.977        3.538        -3.909         0 \r\n 1994          47            12.078        9.87         -5.216         0 \r\n 1994          48            13.631        15.722        2.329         0 \r\n 1994          49            11.618        16.46         2.492         3.607 \r\n 1994          50            2.311         16.16         3.769         13.411 \r\n 1994          51            6.598         3.693        -2.449         0 \r\n 1994          52            14.982        3.518        -4.109         0 \r\n 1994          53            1.921        -0.527        -5.783         11.455 \r\n 1994          54            11           -5.303        -12.4          0 \r\n 1994          55            12.268       -6.19         -17.07         6.198 \r\n 1994          56            14.438       -5.947        -14.58         0 \r\n 1994          57            17.081       -6.869        -18.05         0 \r\n 1994          58            13.896       -4.899        -19.35         0 \r\n 1994          59            9.7          -0.424        -6.987         0 \r\n 1994          60            16.813        0.253        -6.432         0 \r\n 1994          61            14.151        0.589        -8.34          0 \r\n 1994          62            16.472        8.68         -6.393         0 \r\n 1994          63            17.546        9.88          0.412         0 \r\n 1994          64            16.244        15.1         -1.603         0 \r\n 1994          65            12.222        12.69         1.711         0 \r\n 1994          66            16.126        8.09         -1.28          1.27 \r\n 1994          67            14.877        1.869        -3.643         0 \r\n 1994          68            17.827        2.198        -5.525         0 \r\n 1994          69            11.821        4.861        -5.217         0 \r\n 1994          70            16.978        6.966        -6.491         0 \r\n 1994          71            12.46         15.37         0.714         0 \r\n 1994          72            13.671        10.54        -2.802         0 \r\n 1994          73            9.552         17.39        -2.121         0 \r\n 1994          74            19.147        10.14        -2.969         0 \r\n 1994          75            19.932        7.73         -6.5           0 \r\n 1994          76            12.338        11.09        -2.308         0 \r\n 1994          77            20.317        13.18        -1.518         0 \r\n 1994          78            7.811         13.57        -3.607         0 \r\n 1994          79            10.195        17.62         4.501         2.591 \r\n 1994          80            20.006        14.04         3.008         0 \r\n 1994          81            20.513        25.3          2.677         0 \r\n 1994          82            13.107        25.52         3.865         0 \r\n 1994          83            19.984        6.795        -3.711         0 \r\n 1994          84            18.426        8.93         -5.91          0 \r\n 1994          85            2.462         5.489         3.413         3.327 \r\n 1994          86            14.115        10.56         0.542         0 \r\n 1994          87            6.032         4.398        -2.139         0 \r\n 1994          88            12.832        5.63         -5.237         0 \r\n 1994          89            13.187        7.07         -5.583         0 \r\n 1994          90            22.737        16.2         -5.379         0 \r\n 1994          91            22.782        22.02        -0.821         0 \r\n 1994          92            14.425        12.42        -0.898         0 \r\n 1994          93            23.908        11.67        -5.056         0 \r\n 1994          94            18.234        19.45         1.077         0 \r\n 1994          95            9.423         6.403        -0.567         0 \r\n 1994          96            21.826        8.02         -4.97          0 \r\n 1994          97            22.973        13.14        -7.49          0 \r\n 1994          98            8.589         18.71         3.319         0 \r\n 1994          99            10.48         16.6          4.396         0 \r\n 1994          100           23.852        17.28         6.066         0 \r\n 1994          101           4.147         9.51          5.267         1.778 \r\n 1994          102           5.794         11.03         5.07          8.128 \r\n 1994          103           11.828        15.77         5.134         1.27 \r\n 1994          104           22.885        24.79         2.083         1.524 \r\n 1994          105           11.407        18.86         6.697         7.366 \r\n 1994          106           25.606        20.27         4.511         0 \r\n 1994          107           23.123        22.95         2.875         0 \r\n 1994          108           25.521        29.43         10.67         0 \r\n 1994          109           25.242        21.54         7.14          0 \r\n 1994          110           13.808        17.32         3.912         4.064 \r\n 1994          111           17.377        17.08         5.599         0 \r\n 1994          112           26.555        18.68         2.008         0 \r\n 1994          113           26.436        22.33         0.1           0 \r\n 1994          114           17.671        29.34         14.16         0 \r\n 1994          115           16.407        28.78         17.05         14.732 \r\n 1994          116           25.244        27.98         10.29         0 \r\n 1994          117           20.999        15.06         4.527         1.016 \r\n 1994          118           4.545         12.24         3.127         6.35 \r\n 1994          119           20.04         10.95         0.636         0 \r\n 1994          120           6.532         6.907         0.389         17.526 \r\n 1994          121           25.29         14.66         0.749         0 \r\n 1994          122           23.908        15.96         2.771         0.254 \r\n 1994          123           24.539        19.49         3.893         0 \r\n 1994          124           15.095        19.58         4.687         0 \r\n 1994          125           19.558        22.16         6.266         3.556 \r\n 1994          126           4.851         10.8          7.32          17.272 \r\n 1994          127           13.68         15.74         6.142         5.08 \r\n 1994          128           19.721        17.67         3.329         0 \r\n 1994          129           28.853        22.32         9.8           0 \r\n 1994          130           24.087        25.09         5.602         0 \r\n 1994          131           18.635        27.25         13.56         0 \r\n 1994          132           27.542        24.94         9.18          0 \r\n 1994          133           27.563        25.61         8.56          0 \r\n 1994          134           4.266         17.29         13.35         11.684 \r\n 1994          135           28.902        24.4          11.91         0 \r\n 1994          136           28.881        25.03         9.26          0 \r\n 1994          137           29.188        23.57         7.84          0 \r\n 1994          138           29.091        25.48         8.5           0 \r\n 1994          139           29.978        25.78         6.017         0 \r\n 1994          140           29.306        28.56         8.79          0 \r\n 1994          141           28.713        28.85         11.49         0 \r\n 1994          142           27.829        30.03         12.75         0 \r\n 1994          143           22.736        30.66         15.77         11.938 \r\n 1994          144           16.039        26.98         15.19         1.27 \r\n 1994          145           20.926        27.22         13.1          7.112 \r\n 1994          146           24.812        19.3          8.98          0 \r\n 1994          147           30.579        23.25         5.239         0 \r\n 1994          148           30.142        25.43         10.53         0 \r\n 1994          149           17.571        26.15         16.62         0.254 \r\n 1994          150           28.733        30.55         15.36         0 \r\n 1994          151           25.793        29.01         15.29         0 \r\n 1994          152           12.172        24.39         12.57         7.366 \r\n 1994          153           6.745         15.16         10.12         16.51 \r\n 1994          154           28.418        24.13         12.15         0 \r\n 1994          155           29.857        27.21         9.95          0 \r\n 1994          156           19.098        27.41         16.34         0 \r\n 1994          157           25.956        33.1          18.34         0 \r\n 1994          158           22.664        32.91         14.44         18.542 \r\n 1994          159           11.343        18.63         12.71         25.146 \r\n 1994          160           27.1          24.69         12.72         0 \r\n 1994          161           27.362        27.36         13.97         4.572 \r\n 1994          162           25.321        27.01         12.97         1.524 \r\n 1994          163           12.04         26.8          15.05         0 \r\n 1994          164           24.744        32.39         19.46         0 \r\n 1994          165           27.134        33.37         23.21         0 \r\n 1994          166           27.869        32.95         23.38         0 \r\n 1994          167           23.262        32.84         21.69         2.032 \r\n 1994          168           27.934        33.66         20.83         0.254 \r\n 1994          169           24.2          35.23         21.1          0 \r\n 1994          170           23.5          34.33         20.93         0 \r\n 1994          171           19.452        33.95         21.21         0.762 \r\n 1994          172           24.701        31.7          19.17         0 \r\n 1994          173           21.625        30.93         16.55         0.254 \r\n 1994          174           8.259         27.47         16.62         35 \r\n 1994          175           27.328        26.95         16.09         12 \r\n 1994          176           23.001        29.27         15.24         0 \r\n 1994          177           24.025        27.23         17.31         0.254 \r\n 1994          178           25.209        27.39         15.37         0 \r\n 1994          179           27.789        28.68         17.73         0 \r\n 1994          180           22.018        26.05         17.81         0 \r\n 1994          181           29.032        29.98         14.44         0 \r\n 1994          182           22.124        30.22         17.94         0.508 \r\n 1994          183           17.217        23.63         14.79         2.032 \r\n 1994          184           14.09         24.53         13.71         0.254 \r\n 1994          185           22.606        32.24         22.02         0 \r\n 1994          186           27.825        33.5          22.76         0 \r\n 1994          187           23.538        33.02         20.88         0 \r\n 1994          188           26.667        32.44         20.79         0 \r\n 1994          189           14.999        22.02         16.57         0.508 \r\n 1994          190           18.446        24.01         15.83         0 \r\n 1994          191           29.496        26.55         13.29         0 \r\n 1994          192           27.2          31.61         15.93         0 \r\n 1994          193           25.861        33.63         20.39         3.886 \r\n 1994          194           19.521        28.85         17.95         17.958 \r\n 1994          195           16.452        24.12         16.89         0 \r\n 1994          196           26.545        29.45         14.49         0 \r\n 1994          197           8.211         23.63         17.81         4.14 \r\n 1994          198           24.924        29.17         16.06         0 \r\n 1994          199           26.561        30.19         14.48         0 \r\n 1994          200           23.907        33.25         21.81         0 \r\n 1994          201           13.335        27.24         18.59         0 \r\n 1994          202           25.364        28.64         18.15         0 \r\n 1994          203           23.867        27.24         17.33         4.06 \r\n 1994          204           27.002        29.45         16.13         0 \r\n 1994          205           18.029        27.14         15.19         0 \r\n 1994          206           19.905        27.97         13.81         0 \r\n 1994          207           22.034        24.84         12.28         0 \r\n 1994          208           25.278        25.47         13.19         0 \r\n 1994          209           25.686        27.27         12.47         0 \r\n 1994          210           20.089        27.94         14            0 \r\n 1994          211           24.456        29.08         14.09         0 \r\n 1994          212           23.626        30.51         16.2          0 \r\n 1994          213           24.344        31.24         18.96         0 \r\n 1994          214           16.605        28.39         18.35         3.835 \r\n 1994          215           12.844        28.2          19.93         22.098 \r\n 1994          216           17.293        28.31         14.01         0 \r\n 1994          217           28.109        22.03         9.86          0 \r\n 1994          218           24.254        22.77         9.39          0 \r\n 1994          219           19.579        28.41         12.95         0 \r\n 1994          220           23.165        29.81         16.88         0 \r\n 1994          221           17.487        25.64         13.21         0 \r\n 1994          222           6.725         25.43         16.13         0 \r\n 1994          223           11.116        22.35         15.27         0 \r\n 1994          224           5.799         24.74         17.86         2.642 \r\n 1994          225           10.613        27.99         17.21         0 \r\n 1994          226           26.984        21.97         10.42         0 \r\n 1994          227           25.632        26.4          9.15          0 \r\n 1994          228           25.039        27.74         10.25         0 \r\n 1994          229           22.682        33.23         14.83         0 \r\n 1994          230           20.569        32.55         18.58         0 \r\n 1994          231           20.585        32.83         17.38         0 \r\n 1994          232           18.257        24.47         13.39         0 \r\n 1994          233           23.006        25.78         11.17         0 \r\n 1994          234           22.464        27.3          9.26          0 \r\n 1994          235           21.618        29.77         17.03         0 \r\n 1994          236           23.092        34.07         19.25         0 \r\n 1994          237           11.477        31.86         18.99         14.275 \r\n 1994          238           23.365        31.34         19.21         0 \r\n 1994          239           22.06         33.63         19.12         0 \r\n 1994          240           9.816         25.11         12.54         0 \r\n 1994          241           22.826        25.89         9.64          11.938 \r\n 1994          242           7.418         25.37         15.29         5.258 \r\n 1994          243           9.331         19.08         10.92         0 \r\n 1994          244           18.003        23.34         8.48          0 \r\n 1994          245           18.537        23.128        10            0 \r\n 1994          246           18.554        24.22         14.24         8.179 \r\n 1994          247           1.72          16.54         14.71         16.383 \r\n 1994          248           8.567         23.33         14.66         0 \r\n 1994          249           21.658        25.55         11.98         0 \r\n 1994          250           20.874        27.52         8.83          0 \r\n 1994          251           17.444        28.04         12.74         0 \r\n 1994          252           20.985        30.24         13.74         0 \r\n 1994          253           19.861        31.01         15.64         0 \r\n 1994          254           19.521        29.66         15.37         0 \r\n 1994          255           16.878        30.5          15.39         0 \r\n 1994          256           18.411        31.54         16.4          0 \r\n 1994          257           18.28         32.96         20.65         0 \r\n 1994          258           17.988        33.12         20.81         4.674 \r\n 1994          259           18.433        25.68         13.83         0 \r\n 1994          260           18.264        25.01         10.31         0 \r\n 1994          261           20.391        28.12         10.45         0 \r\n 1994          262           20.144        29.78         9.96          0 \r\n 1994          263           17.047        28.85         11.58         0 \r\n 1994          264           17.05         29.23         13.72         14.783 \r\n 1994          265           4.617         18.19         7.44          0 \r\n 1994          266           15.807        19.53         4.52          0 \r\n 1994          267           14.242        20.19         5.155         0 \r\n 1994          268           9.231         21.56         11.47         14.503 \r\n 1994          269           3.906         14.73         9.62          0 \r\n 1994          270           8.78          16.54         9.51          0 \r\n 1994          271           18.806        21.4          7.64          0 \r\n 1994          272           17.601        25.46         4.092         0 \r\n 1994          273           14.844        32.38         12.28         0 \r\n 1994          274           13.687        22.55         13.06         0 \r\n 1994          275           14.352        22.03         10.8          0 \r\n 1994          276           2.333         15.72         10.9          2.642 \r\n 1994          277           11.879        20.57         11.2          0 \r\n 1994          278           12.151        21.21         11.18         0 \r\n 1994          279           9.807         26.75         12.17         3.835 \r\n 1994          280           9.46          25.361        13.04         3.023 \r\n 1994          281           5.917         15.22         6.656         0 \r\n 1994          282           17.218        16.53         2.95          0 \r\n 1994          283           17.101        17.5         -0.918         0 \r\n 1994          284           16.805        19.06         0.355         0 \r\n 1994          285           16.069        20.83         1.491         0 \r\n 1994          286           13.794        21.29         4.774         0 \r\n 1994          287           4.324         18.1          4.813         0 \r\n 1994          288           3.918         19.58         13.98         0 \r\n 1994          289           5.903         20.78         13.78         0 \r\n 1994          290           9.368         25.16         16.86         0 \r\n 1994          291           5.047         22.82         14.16         0 \r\n 1994          292           14.616        21.29         9.73          0 \r\n 1994          293           14.706        20.51         6.707         0 \r\n 1994          294           13            24.61         5.534         0 \r\n 1994          295           11.98         23.43         7.12          0 \r\n 1994          296           14.18         16.05         3.146         0 \r\n 1994          297           13.622        11.57         3.007         0 \r\n 1994          298           9.541         7.55         -0.747         0 \r\n 1994          299           12.403        12.13         1.284         0 \r\n 1994          300           13.352        17.53        -0.474         0 \r\n 1994          301           9.24          19.07         4.594         0 \r\n 1994          302           5.027         16.15         2.845         0 \r\n 1994          303           3.085         12.64        -1.887         21.463 \r\n 1994          304           1.229         7.811         1.236         4.343 \r\n 1994          305           11.136        13.28        -1.78          0 \r\n 1994          306           11.725        17.67         5.99          0 \r\n 1994          307           3.707         22.5          11.128        10.897 \r\n 1994          308           1.483         11.2          7.65          8.103 \r\n 1994          309           1.114         10.67         7.89          6.756 \r\n 1994          310           11.612        12.71         1.096         0 \r\n 1994          311           10.962        16.65         0.729         0 \r\n 1994          312           2.986         15.39         8.66          14.605 \r\n 1994          313           2.148         10.79         0.683         0 \r\n 1994          314           11.655        11.32        -2.065         0 \r\n 1994          315           11.08         13.59        -2.235         0 \r\n 1994          316           5.541         12.5          1.267         0 \r\n 1994          317           1.632         15.79         8.11          11.836 \r\n 1994          318           8.793         15.58         1.17          0 \r\n 1994          319           9.792         10.84        -1.79          0 \r\n 1994          320           10.613        11.57        -5.055         0 \r\n 1994          321           3.485         9.78          1.689         0 \r\n 1994          322           10.539        10.46        -3.873         0 \r\n 1994          323           4.182         6.048        -6.134         3.048 \r\n 1994          324           1.321         9.75          4.659         18.745 \r\n 1994          325           7.879         8.71         -1.858         0 \r\n 1994          326           7.827         3.79         -5.219         0 \r\n 1994          327           10.019        8.73         -3.284         0 \r\n 1994          328           8.881         10.75        -1.405         0 \r\n 1994          329           9.496         10.01        -3.911         0 \r\n 1994          330           6.897         7.88         -1.546         17.729 \r\n 1994          331           3.9           17.602        1.079         3.15 \r\n 1994          332           8.819         5.393        -2.829         0 \r\n 1994          333           8.357         2.454        -6.25          0 \r\n 1994          334           8.744         7.4          -6.5           0 \r\n 1994          335           9.344         15.15        -0.483         0 \r\n 1994          336           8.601         14.95         1.462         0 \r\n 1994          337           2.604         13.93         2.383         0 \r\n 1994          338           2.296         14.65         1.462         0 \r\n 1994          339           2.574         9.95         -2.443         8.23 \r\n 1994          340           0.713        -0.078        -2.121         21.057 \r\n 1994          341           5.477         0.639        -2.877         0 \r\n 1994          342           1.903        -0.22         -2.604         0 \r\n 1994          343           3.297        -0.379        -5.949         0 \r\n 1994          344           3.166        -4.053        -13.08         0 \r\n 1994          345           8.548        -5.496        -16.44         0 \r\n 1994          346           6.135        -1.923        -11.16         0 \r\n 1994          347           3.744        -3.17         -10.97         0 \r\n 1994          348           2.87         -2.337        -7.16          0 \r\n 1994          349           2.729         1.201        -2.337         0 \r\n 1994          350           1.036         1.643        -1.205         2.718 \r\n 1994          351           7.731         6.126        -2.942         0 \r\n 1994          352           4.59         -2.632        -9.08          0 \r\n 1994          353           7.468         6.077        -6.782         0 \r\n 1994          354           3.959         7.01          0.127         0 \r\n 1994          355           4.048         9.36          2.583         0 \r\n 1994          356           4.343         5.212        -0.766         0 \r\n 1994          357           5.392         6.134        -0.745         0 \r\n 1994          358           5.899         2.698        -4.511         0 \r\n 1994          359           8.248         9.59         -7.02          0 \r\n 1994          360           8.766         10.07        -5.086         0 \r\n 1994          361           8.155         13.83        -1.508         0 \r\n 1994          362           1.919         2.99         -1.226         0 \r\n 1994          363           3.089         1.09         -4.836         0 \r\n 1994          364           7.568         4.889        -5.488         0 \r\n 1994          365           2.353        -0.153        -6.278         2.87 \r\n 1995          1             8.903        -6.257        -13.86         0 \r\n 1995          2             9.06         -7.46         -18.52         0 \r\n 1995          3             9.053        -10.29        -19.65         0 \r\n 1995          4             9.274        -15.83        -23.82         0 \r\n 1995          5             9.281        -5.333        -23.33         6.731 \r\n 1995          6             5.216         0.524        -5.922         0 \r\n 1995          7             8.486        -5.105        -17.55         0 \r\n 1995          8             6.198        -8.01         -16.83         0 \r\n 1995          9             6.67         -5.785        -17.43         0 \r\n 1995          10            4.768        -2.404        -6.85          0 \r\n 1995          11            4.244         3            -2.744         0 \r\n 1995          12            2.961         4.445         1.296         0 \r\n 1995          13            2.194         1.832        -0.116         0 \r\n 1995          14            3.276         0.336        -4.797         0 \r\n 1995          15            3.02         -2.366        -5.796         0 \r\n 1995          16            3.65          0.525        -2.564         0 \r\n 1995          17            7.228         7.46         -4.606         0 \r\n 1995          18            7.542         0.42         -6.492         2.972 \r\n 1995          19            2.884        -0.303        -3.758         7.087 \r\n 1995          20            7.524        -3.464        -9.01          0 \r\n 1995          21            8.615        -5.6          -11.11         0 \r\n 1995          22            7.62         -7.23         -10.58         0 \r\n 1995          23            9.75         -7.6          -17.85         0 \r\n 1995          24            11.265       -1.921        -17.71         0 \r\n 1995          25            10.918       -1.453        -16.46         0 \r\n 1995          26            10.494       -1.293        -17.41         5.08 \r\n 1995          27            1.558         0.158        -8.05          7.239 \r\n 1995          28            5.441         0.364        -7.48          0 \r\n 1995          29            7.693        -1.501        -10.52         0 \r\n 1995          30            6.838        -3.701        -8.36          0 \r\n 1995          31            11.085        5.792        -6.076         0 \r\n 1995          32            8.549         2.51         -1.602         0 \r\n 1995          33            6.977         3.708        -0.887         2.845 \r\n 1995          34            3.622         1.23         -5.95          0 \r\n 1995          35            9.948        -5.122        -10.04         0 \r\n 1995          36            12.984       -7.67         -16.88         0 \r\n 1995          37            10.501       -6.034        -18.67         0 \r\n 1995          38            8.274        -6.006        -14.02         0 \r\n 1995          39            13.282       -5.101        -16.58         0 \r\n 1995          40            13.283        5.595        -5.072         0 \r\n 1995          41            13.275        1.983        -13.77         0 \r\n 1995          42            12.484       -9.82         -20.16         0 \r\n 1995          43            12.98        -5.842        -19.81         0 \r\n 1995          44            12.933       -2.668        -12.47         0 \r\n 1995          45            3.315        -1.771        -11            0 \r\n 1995          46            4.936         0.891        -10.72         1 \r\n 1995          47            14.712        1.861        -15.52         0 \r\n 1995          48            14.664        10.31        -10.56         0 \r\n 1995          49            15.21         14.47        -2.301         0 \r\n 1995          50            14.71         9.83         -2.197         0 \r\n 1995          51            15.266        11.59        -2.018         0 \r\n 1995          52            9.203         2.763        -6.25          0 \r\n 1995          53            14.161        17.19        -0.832         0 \r\n 1995          54            15.472        10.34        -1.33          0 \r\n 1995          55            12.771        5.316        -5.872         0 \r\n 1995          56            15.559        17.08        -1.064         0 \r\n 1995          57            1.759         0.742        -1.546         11.913 \r\n 1995          58            2.118        -0.048        -1.462         0 \r\n 1995          59            10.356       -0.736        -9.46          0 \r\n 1995          60            13.778       -6.064        -12.72         0 \r\n 1995          61            17.175       -3.169        -13.63         0 \r\n 1995          62            17.078        2.199        -13.05         0 \r\n 1995          63            11.843        5.251        -9.11          7.417 \r\n 1995          64            9.428         2.773         0.204         0 \r\n 1995          65            1.898         0.75         -0.605         3.683 \r\n 1995          66            13.016       -0.5          -12.57         0 \r\n 1995          67            18.743       -7.47         -17.21         0 \r\n 1995          68            16.718        1.659        -16.86         0 \r\n 1995          69            17.754        14.69        -1.84          0 \r\n 1995          70            17.134        18.63         2.453         0 \r\n 1995          71            16.313        21.09         4.265         0 \r\n 1995          72            13.346        22.82         9.87          0 \r\n 1995          73            15.689        24.31         5.723         0 \r\n 1995          74            16.537        25.86         4.785         0 \r\n 1995          75            16.626        23.65         5.249         0 \r\n 1995          76            15.67         20.91         4.88          0 \r\n 1995          77            9.292         18.339        2.961         0 \r\n 1995          78            13.031        16.75         4.471         4.826 \r\n 1995          79            2.98          13.66         2.632         0 \r\n 1995          80            16.918        12.35        -1.585         0 \r\n 1995          81            9.95          12.48        -0.22          0 \r\n 1995          82            10.907        9.59         -0.434         0 \r\n 1995          83            21.491        14.25        -3.408         0 \r\n 1995          84            16.81         17.94         0.861         9.855 \r\n 1995          85            9.158         13.69         5.431         0 \r\n 1995          86            4.483         9.42          3.697         0 \r\n 1995          87            3.367         6.269         3.319         0 \r\n 1995          88            10.555        8.85          0.512         0 \r\n 1995          89            8.316         4.645        -0.079         0 \r\n 1995          90            6.267         3.574        -2.914         0 \r\n 1995          91            14.008        10.98        -4.415         0 \r\n 1995          92            22.742        20.15        -4.454         0 \r\n 1995          93            19.514        19.37        -3.115         0 \r\n 1995          94            23.994        1.352        -7.92          0 \r\n 1995          95            23.127        17.39        -2.781         0 \r\n 1995          96            22.324        19.46         4.918         0 \r\n 1995          97            13.83         21.839        4.85          14.478 \r\n 1995          98            9.814         14.05         4.672         27.788 \r\n 1995          99            5.464         6.142         1.859         17.78 \r\n 1995          100           1.729         4.445         0.43          33.807 \r\n 1995          101           3.247         12.72         1.144         4.597 \r\n 1995          102           3.209         4.841         1.371         0 \r\n 1995          103           24.812        17.27         0.646         0 \r\n 1995          104           13.539        16.16         3.104         0 \r\n 1995          105           20.127        24.3          7.61          0 \r\n 1995          106           10.178        17.78         6.373         0 \r\n 1995          107           7.381         14.59         8.16          22.885 \r\n 1995          108           13.852        19.25         5.65          3.099 \r\n 1995          109           25.179        14.62         3.045         0 \r\n 1995          110           8.799         15.3          6.189         0 \r\n 1995          111           5.117         8.79          4.139         0 \r\n 1995          112           23.094        17.22        -0.418         0 \r\n 1995          113           11.253        13.92         2.988         0 \r\n 1995          114           16.733        14.47         0.992         0 \r\n 1995          115           15.892        18.05        -0.285         20.65 \r\n 1995          116           1.331         11.89         5.96          19.71 \r\n 1995          117           21.159        11.85         3.563         0 \r\n 1995          118           19.028        18.35         2.478         0 \r\n 1995          119           7.816         15.81         8.55          2.591 \r\n 1995          120           18.762        14.77         5.809         0 \r\n 1995          121           13.275        12.98         4.746         0 \r\n 1995          122           17.718        17.42         4.257         0 \r\n 1995          123           11.38         14.19         6.439         3.15 \r\n 1995          124           13.905        12.39         6.248         0 \r\n 1995          125           19.727        20.74         4.464         0 \r\n 1995          126           14.601        22.23         7.36          0 \r\n 1995          127           14.462        24.23         9.13          53.137 \r\n 1995          128           3.436         19.87         14.48         0 \r\n 1995          129           18.404        22.89         14.57         6.579 \r\n 1995          130           6.329         14.58         11.37         0 \r\n 1995          131           14.7          18.6          8.2           0 \r\n 1995          132           16.439        19.28         6.275         28.27 \r\n 1995          133           9.664         25.5          14.03         2.667 \r\n 1995          134           25.496        19.56         9.65          0 \r\n 1995          135           28.783        23.19         6.216         0 \r\n 1995          136           12.258        26.48         13.78         5.486 \r\n 1995          137           11.738        18.17         11.78         5.055 \r\n 1995          138           10.629        16.33         8.64          0 \r\n 1995          139           29.814        23.05         5.962         0 \r\n 1995          140           27.586        22.1          10.64         0 \r\n 1995          141           29.971        23.93         7.12          0 \r\n 1995          142           16.811        24.21         10.3          32.258 \r\n 1995          143           3.525         18.25         10.8          19.863 \r\n 1995          144           7.217         15.03         10.86         0 \r\n 1995          145           28.332        20.05         10.28         0 \r\n 1995          146           19.205        19.66         8.79          11.024 \r\n 1995          147           1.973         19.81         13.22         11.786 \r\n 1995          148           6.617         18.47         11.81         0 \r\n 1995          149           27.529        23.47         11.13         0 \r\n 1995          150           31.415        27.8          10.5          0 \r\n 1995          151           14.986        24.64         13.02         2.565 \r\n 1995          152           13.699        24.02         15.55         52.832 \r\n 1995          153           15.806        25.14         14.92         0 \r\n 1995          154           27.032        27.04         14.45         0 \r\n 1995          155           16.939        26.83         15.96         0 \r\n 1995          156           23.011        28.52         15.41         15.189 \r\n 1995          157           26.676        28.03         21.2          0 \r\n 1995          158           11.583        31.319        19.492        6.604 \r\n 1995          159           18.347        19.486        11.863        8.941 \r\n 1995          160           17.752        23.476        16.837        0 \r\n 1995          161           21.856        22.292        13.103        0 \r\n 1995          162           25.012        23.587        11.864        0 \r\n 1995          163           25.136        26.945        11.333        0 \r\n 1995          164           25.123        27.558        13.434        0 \r\n 1995          165           24.577        29.904        15.929        0 \r\n 1995          166           23.367        30.033        19.086        0 \r\n 1995          167           24.118        31.381        20.388        0 \r\n 1995          168           22.91         30.976        19.723        0 \r\n 1995          169           24.327        32.501        18.539        0 \r\n 1995          170           23.874        33.433        19.012        0 \r\n 1995          171           23.804        33.919        20.863        0 \r\n 1995          172           23.222        32.918        18.848        0 \r\n 1995          173           23.648        32.472        20.544        0 \r\n 1995          174           13.18         31.058        18.461        10.871 \r\n 1995          175           17.421        28.428        18.518        3.581 \r\n 1995          176           18.017        25.192        18.303        13.106 \r\n 1995          177           7.294         25.771        17.419        16.789 \r\n 1995          178           12.232        25.212        18.669        0 \r\n 1995          179           11.931        26.669        18.306        0 \r\n 1995          180           21.063        24.322        15.933        0 \r\n 1995          181           18.265        22.262        10.088        0 \r\n 1995          182           23.82         24.807        10.025        0 \r\n 1995          183           23.747        26.265        15.612        0 \r\n 1995          184           17.214        27.347        18.101        37.897 \r\n 1995          185           12.785        27.461        17.279        22.25 \r\n 1995          186           11.728        25.875        16.166        4.115 \r\n 1995          187           23.932        26.349        14.273        0 \r\n 1995          188           18.581        28.666        14.868        0 \r\n 1995          189           18.009        28.403        18.563        0 \r\n 1995          190           24.553        30.984        16.523        0 \r\n 1995          191           23.387        32.902        19.835        0 \r\n 1995          192           24.245        35.888        23.182        0 \r\n 1995          193           23.26         37.667        24.906        0 \r\n 1995          194           24.475        36.192        25.291        0 \r\n 1995          195           23.184        34.714        24.252        0 \r\n 1995          196           12.489        32.083        21.641        0 \r\n 1995          197           16.508        28.734        19.414        0 \r\n 1995          198           24.154        28.458        17.336        0 \r\n 1995          199           24.039        31.652        15.759        0 \r\n 1995          200           10.218        29.272        20.244        6.756 \r\n 1995          201           23.466        30.529        16.676        0 \r\n 1995          202           22.615        29.524        19.151        9.296 \r\n 1995          203           17.515        29.807        18.444        8.382 \r\n 1995          204           21.805        29.807        18.572        0 \r\n 1995          205           24.375        29.913        17.651        0 \r\n 1995          206           17.957        30.248        18.307        4.42 \r\n 1995          207           21.849        32.347        18.832        0 \r\n 1995          208           17.929        31.952        18.916        0 \r\n 1995          209           24.117        33.585        18.847        0 \r\n 1995          210           23.524        33.223        21.966        0 \r\n 1995          211           25.924        32.99         22.348        5.004 \r\n 1995          212           11.546        27.757        18.034        0 \r\n 1995          213           22.827        24.073        20.435        6.96 \r\n 1995          214           10.563        27.251        21.613        14.3 \r\n 1995          215           16.24         29.234        20.901        0 \r\n 1995          216           16.376        29.749        19.628        0 \r\n 1995          217           18.657        29.263        20.278        0 \r\n 1995          218           13.443        30.626        20.439        0 \r\n 1995          219           19.49         29.719        21.062        17.678 \r\n 1995          220           16.795        33.966        22.718        4.42 \r\n 1995          221           14.963        32.221        20.709        14.3 \r\n 1995          222           17.805        33.108        21.945        0 \r\n 1995          223           23.959        34.343        22.362        0 \r\n 1995          224           24.21         33.691        24.264        0 \r\n 1995          225           20.786        32.109        23.852        0 \r\n 1995          226           16.094        30.139        20.457        5.893 \r\n 1995          227           11.131        29.155        21.006        10.465 \r\n 1995          228           8.589         33.609        22.044        0 \r\n 1995          229           18.725        33.802        22.518        0 \r\n 1995          230           22.78         31.616        22.792        0 \r\n 1995          231           24.71         28.207        15.549        0 \r\n 1995          232           23.344        29.666        16.535        0 \r\n 1995          233           24.009        30.267        14.888        0 \r\n 1995          234           13.904        31.148        19.321        0 \r\n 1995          235           18.355        30.78         19.58         0 \r\n 1995          236           21.695        30.829        17.865        0 \r\n 1995          237           22.861        31.611        19.794        0 \r\n 1995          238           18.574        33.166        21.271        0 \r\n 1995          239           18.081        32.668        21.613        0 \r\n 1995          240           18.251        33.014        20.363        0 \r\n 1995          241           9.25          33.526        21.377        0 \r\n 1995          242           19.378        30.839        21.192        0 \r\n 1995          243           16.034        27.346        15.027        0 \r\n 1995          244           22.001        26.332        12.661        0 \r\n 1995          245           14.303        29.683        14.532        0 \r\n 1995          246           19.703        29.821        15.757        0 \r\n 1995          247           21.051        29.852        17.327        0 \r\n 1995          248           13.722        26.246        20.558        0 \r\n 1995          249           11.203        23.233        11.819        6.02 \r\n 1995          250           5.601         19.752        11.007        0 \r\n 1995          251           21.482        21.099        6.513         0 \r\n 1995          252           20.714        21.266        6.728         0 \r\n 1995          253           19.281        23.922        7.537         0 \r\n 1995          254           16.15         20.303        14.433        3.124 \r\n 1995          255           7.829         29.291        13.669        2.946 \r\n 1995          256           19.364        26.365        12.862        0 \r\n 1995          257           19.762        27.143        11.268        0 \r\n 1995          258           18.745        26.323        15.422        0 \r\n 1995          259           15.889        23.407        9.493         0 \r\n 1995          260           18.474        21.962        10.003        0 \r\n 1995          261           5.432         18.164        12.835        5.283 \r\n 1995          262           2.385         13.889        9.767         8.23 \r\n 1995          263           6.58          11.764        5.334         7.493 \r\n 1995          264           6.234         11.235       -0.468         3.073 \r\n 1995          265           16.991        14.767        0.349         0 \r\n 1995          266           12.886        16.974        2.331         0 \r\n 1995          267           8.487         20.473        5.854         0 \r\n 1995          268           17.526        25.239        6.009         0 \r\n 1995          269           17.824        26.464        9.857         0 \r\n 1995          270           17.729        26.087        9.402         0 \r\n 1995          271           16.623        21.464        14.945        9.906 \r\n 1995          272           2.085         25.434        17.297        17.526 \r\n 1995          273           9.038         23.081        11.724        0 \r\n 1995          274           16.471        26.029        10.671        0 \r\n 1995          275           5.042         21.662        11.952        0 \r\n 1995          276           15.874        23.045        5.927         0 \r\n 1995          277           15.212        18.062        9.176         0 \r\n 1995          278           5.188         15.814        10.25         3.353 \r\n 1995          279           2.935         13.608        7.379         0 \r\n 1995          280           9.303         19.45         3.729         0 \r\n 1995          281           7.934         19.353        7.552         0 \r\n 1995          282           10.494        23.976        4.674         0 \r\n 1995          283           15.519        27.337        8.46          0 \r\n 1995          284           14.537        27.889        12.748        0 \r\n 1995          285           13.647        25.087        13.217        0 \r\n 1995          286           5.447         14.645        5.55          0 \r\n 1995          287           9.043         16.028        0.606         0 \r\n 1995          288           14.652        18.504       -0.159         0 \r\n 1995          289           13.826        26.082        11.143        0 \r\n 1995          290           12.84         23.254        6.651         0 \r\n 1995          291           11.535        22.566        9.123         0 \r\n 1995          292           2.38          9.236         4.209         0 \r\n 1995          293           2.623         10.778        1.769         0 \r\n 1995          294           7.844         18.35        -1.797         0 \r\n 1995          295           9.494         20.932        10.377        0 \r\n 1995          296           3.958         13.306        4.725         0 \r\n 1995          297           11.423        19.851        1.548         0 \r\n 1995          298           13.601        17.51         3.674         0 \r\n 1995          299           6.492         14.214        6.677         9.093 \r\n 1995          300           2.786         9.762         6.044         0 \r\n 1995          301           8.316         11.97        -0.201         0 \r\n 1995          302           4.208         7.472         1.977         5.74 \r\n 1995          303           7.045         5.535         1.077         11.735 \r\n 1995          304           2.082         14.963        4.845         19.812 \r\n 1995          305           0.874         12.581       -1.333         13.818 \r\n 1995          306           6.581         1.573        -5.176         0 \r\n 1995          307           10.043        1.101        -9.744         0 \r\n 1995          308           12.531        4.08         -3.574         0 \r\n 1995          309           5.229         7.144         0.766         0 \r\n 1995          310           9.318         6.374        -1.468         0 \r\n 1995          311           3.549         0.697        -7.872         0 \r\n 1995          312           9.267         14.94        -3.494         0 \r\n 1995          313           8.238         13.311       -1.646         13.513 \r\n 1995          314           2.911        -1.252        -9.367         15.748 \r\n 1995          315           10.218        2.209        -10.296        0 \r\n 1995          316           7.033         0.267        -6.531         0 \r\n 1995          317           3.519         2.783        -4.877         0 \r\n 1995          318           6.065         2.388        -7.076         0 \r\n 1995          319           4.471         2.723        -1.093         0 \r\n 1995          320           4.392         9.311         1.158         0 \r\n 1995          321           2.768         6.098        -1.726         0 \r\n 1995          322           8.308         16.637       -0.664         0 \r\n 1995          323           7.015         11.619        0.095         0 \r\n 1995          324           7.798         6.644        -3.124         0 \r\n 1995          325           8.85          8.274        -7.594         0 \r\n 1995          326           5.844         4.661        -7.579         0 \r\n 1995          327           5.369         2.654        -11.57         0 \r\n 1995          328           4.181         8.477         0.055         0 \r\n 1995          329           4.624         14.376        1.968         0 \r\n 1995          330           3.263         9.289        -3.974         2.896 \r\n 1995          331           3.027        -3.553        -14.744        4.978 \r\n 1995          332           8.472        -0.46         -14.883        0 \r\n 1995          333           7.661         11.919       -4.921         0 \r\n 1995          334           5.374         10.161        1.527         0 \r\n 1995          335           7.326         14.486       -1.946         0 \r\n 1995          336           7.595         13.416       -1.17          0 \r\n 1995          337           8.095         6.732        -4.547         0 \r\n 1995          338           4.411         7.249        -1.677         0 \r\n 1995          339           8.161        -0.486        -5.811         0 \r\n 1995          340           4.651         1.777        -8.363         0 \r\n 1995          341           2.431        -1.806        -14.278        0 \r\n 1995          342           4.14         -13.522       -19.596        4.369 \r\n 1995          343           8.407        -7.434        -20.464        0 \r\n 1995          344           4.005        -8.14         -13.82         0 \r\n 1995          345           4.644        -6.716        -14.162        0 \r\n 1995          346           4.014         0.189        -6.955         0 \r\n 1995          347           0.699         6.086        -0.819         0 \r\n 1995          348           7.047         2.111        -4.595         0 \r\n 1995          349           7.218         5.476        -7.466         0 \r\n 1995          350           6.086         4.168        -2.746         0 \r\n 1995          351           2.484         2.418        -0.441         0 \r\n 1995          352           3.701         0.623        -4.911         0 \r\n 1995          353           1.813        -2.281        -9.985         0 \r\n 1995          354           2.437        -4.248        -9.081         0 \r\n 1995          355           1.88         -4.387        -6.935         0 \r\n 1995          356           2.412        -3.134        -5.953         0 \r\n 1995          357           1.793        -1.305        -5.287         0 \r\n 1995          358           1.096         0.347        -6.594         0 \r\n 1995          359           1.658         2.765        -6.48          0 \r\n 1995          360           3.582        -0.319        -6.631         0 \r\n 1995          361           2.693        -1.299        -12.633        0 \r\n 1995          362           7.105         2.893        -8.76          0 \r\n 1995          363           1.631         0.558        -4.676         0 \r\n 1995          364           2.507         1.846        -1.507         0 \r\n 1995          365           1.737         1.141        -1.461         3 \r\n 1996          1             1.867         0.613        -7.06          0 \r\n 1996          2             4.522        -3.813        -14.027        0 \r\n 1996          3             6.928        -4.734        -9.018         0 \r\n 1996          4             6.57         -6.088        -13.792        1.2 \r\n 1996          5             6.24         -10.594       -20.666        1.7 \r\n 1996          6             7.91         -8.394        -15.941        0 \r\n 1996          7             7.907        -2.805        -18.718        0 \r\n 1996          8             5.76          3.049        -5.178         0 \r\n 1996          9             2.573         0.26         -5.481         0 \r\n 1996          10            0.979        -0.776        -2.958         0 \r\n 1996          11            2.672         6.008        -4.447         3.6 \r\n 1996          12            8.301         10.954       -1.854         0 \r\n 1996          13            8.022         8.68         -1.759         0 \r\n 1996          14            2.899        -0.091        -4.684         0 \r\n 1996          15            3.204         7.735        -2.677         0 \r\n 1996          16            6.472         13.671       -2.898         0 \r\n 1996          17            1.131         12.941       -17.701        15.85 \r\n 1996          18            1.282        -15.508       -22.866        8.306 \r\n 1996          19            7.93         -6.576        -17.004        0 \r\n 1996          20            7.664         1.748        -10.481        0 \r\n 1996          21            7.189         3.792        -2.661         0 \r\n 1996          22            5.903        -2.263        -5.996         0 \r\n 1996          23            5.132        -5.872        -15.592        3.429 \r\n 1996          24            9.083         2.472        -15.924        0 \r\n 1996          25            5.793         1.08         -10.206        5.791 \r\n 1996          26            2.675        -7.028        -16.608        11.481 \r\n 1996          27            10.162        0.793        -19.022        0 \r\n 1996          28            8.324        -0.174        -19.246        0 \r\n 1996          29            8.638        -15.401       -22.731        0 \r\n 1996          30            10.17        -17.957       -30.162        1 \r\n 1996          31            11.053       -19.438       -24.973        0 \r\n 1996          32            10.608       -22.381       -31.95         0 \r\n 1996          33            11.903       -17.778       -33.981        0 \r\n 1996          34            11.773       -14.574       -30.119        0 \r\n 1996          35            11.552       -5.469        -16.586        0 \r\n 1996          36            11.285        1.934        -20.272        0 \r\n 1996          37            8.516         7.204         0.775         0 \r\n 1996          38            8.585         6.397         1.638         0 \r\n 1996          39            10.98         11.687       -2.56          0 \r\n 1996          40            10.63         8.966         3.095         0 \r\n 1996          41            8.646         3.334        -1.344         0 \r\n 1996          42            5.596        -0.791        -4.538         0 \r\n 1996          43            7.016         6.443        -5.374         0 \r\n 1996          44            8.748         3.354        -1.683         0 \r\n 1996          45            6.708        -1.431        -7.301         0 \r\n 1996          46            8.776        -5.101        -14.128        0 \r\n 1996          47            12.644        0.02         -6.986         1.1 \r\n 1996          48            9.806        -3.261        -12.776        0 \r\n 1996          49            6.278         10.957       -8.628         0 \r\n 1996          50            11.711        14.337        3.655         0 \r\n 1996          51            12.048        5.662         0.181         0 \r\n 1996          52            3.661         5.509        -0.273         0 \r\n 1996          53            2.048         8.786         3.726         1 \r\n 1996          54            8.32          17.624       -1.273         0 \r\n 1996          55            13.935        14.866        4.644         0 \r\n 1996          56            12.439        15.543        7.646         6.782 \r\n 1996          57            6.041         8.594        -4.336         8.357 \r\n 1996          58            9.86         -4.044        -13.079        0 \r\n 1996          59            14.757       -3.983        -16.289        0 \r\n 1996          60            15.294        3.145        -8.589         0 \r\n 1996          61            12.832       -0.758        -9.258         0 \r\n 1996          62            14.555       -2.343        -16.567        0 \r\n 1996          63            15.856        5.543        -7.188         0 \r\n 1996          64            8.15          4.263        -1.178         21.971 \r\n 1996          65            10.636       -0.593        -9.497         0 \r\n 1996          66            11.137       -9.25         -18.926        0 \r\n 1996          67            14.604       -8.888        -20.178        0 \r\n 1996          68            16.743       -1.917        -14.458        0 \r\n 1996          69            17.129        5.957        -8.421         0 \r\n 1996          70            13.4          10.692       -1.165         0 \r\n 1996          71            15.256        13.973        1.724         0 \r\n 1996          72            15.451        18.445        3.137         0 \r\n 1996          73            16.824        16.137        2.976         0 \r\n 1996          74            14.854        12.195       -3.137         0 \r\n 1996          75            18.013        11.889       -1.713         0 \r\n 1996          76            14.393        10.387        0.724         0 \r\n 1996          77            18.205        9.293        -2.407         0 \r\n 1996          78            12.951        3.022        -5.534         0 \r\n 1996          79            7.555         4.891        -3.717         0 \r\n 1996          80            19.003        5.697        -6.676         0 \r\n 1996          81            14.968        8.807        -6.908         0 \r\n 1996          82            18.77         10.242       -3.448         0 \r\n 1996          83            6.313         19.888        4.408         0 \r\n 1996          84            2.198         14.044       -8.357         4.013 \r\n 1996          85            18.395       -1.432        -10.236        0 \r\n 1996          86            20.532        5.532        -8.356         0 \r\n 1996          87            20.598        7.264        -0.2           0 \r\n 1996          88            18.057        14.392        1.093         0 \r\n 1996          89            14.136        10.814        4.564         0 \r\n 1996          90            2.138         9.752         0.492         5.842 \r\n 1996          91            19.638        11.232       -3.63          0 \r\n 1996          92            19.665        23.334        4.459         0 \r\n 1996          93            18.77         25.021        10.118        0 \r\n 1996          94            6.722         17.228        0.266         0 \r\n 1996          95            6.191         7.346        -1.051         0 \r\n 1996          96            14.276        8.636        -4.687         0 \r\n 1996          97            18.546        7.596        -2.697         0 \r\n 1996          98            13.837        9.861        -4.732         0 \r\n 1996          99            10.756        12.902       -5.172         0 \r\n 1996          100           24.239        19.599       -3.768         0 \r\n 1996          101           23.312        27.552        8.566         0 \r\n 1996          102           17.321        26.679        8.943         0 \r\n 1996          103           2.859         11.775        1.283         0 \r\n 1996          104           14.95         10.792       -1.053         0 \r\n 1996          105           4.258         9.652         2.167         16.027 \r\n 1996          106           24.337        13.083       -0.149         0 \r\n 1996          107           25.405        24.581        3.024         0 \r\n 1996          108           24.371        24.128        13.016        0 \r\n 1996          109           11.689        24.262        8.261         4.242 \r\n 1996          110           4.819         20.67         5.338         0 \r\n 1996          111           12.707        20.556       -0.292         0 \r\n 1996          112           9.032         19.359        7.188         5.131 \r\n 1996          113           25.593        15.719        0.216         0 \r\n 1996          114           26.379        19.868        7.554         0 \r\n 1996          115           14.987        20.303        14.189        0 \r\n 1996          116           17.524        16.878        2.418         0 \r\n 1996          117           24.456        16.489        0.107         0 \r\n 1996          118           24.285        14.986        6.408         0 \r\n 1996          119           8.046         9.767         1.382         23.343 \r\n 1996          120           10.69         15.695        0.027         0 \r\n 1996          121           24.192        17.027        4.594         0 \r\n 1996          122           25.941        16.851        2.772         0 \r\n 1996          123           3.49          13.876        5.311         0 \r\n 1996          124           5.398         18.668        8.461         9.576 \r\n 1996          125           19.93         19.04         6.288         0 \r\n 1996          126           16.526        18.162        5.281         0 \r\n 1996          127           9.718         12.451        8.614         3.327 \r\n 1996          128           19.252        24.487        10.681        6.604 \r\n 1996          129           8.913         24.782        14.469        37.821 \r\n 1996          130           3.994         20.213        12.007        77.318 \r\n 1996          131           4.974         14.568        9.154         5.613 \r\n 1996          132           14.588        12.695        3.882         0 \r\n 1996          133           13.598        16.308        1.876         0 \r\n 1996          134           21.536        15.728        5.952         0 \r\n 1996          135           4.891         20.6          10.488        3.912 \r\n 1996          136           9.085         23.399        12.078        0 \r\n 1996          137           13.566        32.027        16.602        40.996 \r\n 1996          138           24.871        31.945        21.918        0 \r\n 1996          139           24.481        30.768        21.405        0 \r\n 1996          140           21.385        28.661        13.156        7.62 \r\n 1996          141           12.537        24.569        9.171         9.703 \r\n 1996          142           25.161        26.586        11.233        0 \r\n 1996          143           7.026         25.237        11.679        26.67 \r\n 1996          144           7.553         17.248        9.668         0 \r\n 1996          145           7.905         13.685        10.96         13.589 \r\n 1996          146           5.046         13.017        9.725         11.659 \r\n 1996          147           4.271         13.417        7.551         32.004 \r\n 1996          148           4.189         13.415        7.788         21.158 \r\n 1996          149           3.536         21.501        9.489         3.226 \r\n 1996          150           24.397        21.238        6.247         0 \r\n 1996          151           27.134        23.146        5.421         0 \r\n 1996          152           9.38          20.679        15.562        5.766 \r\n 1996          153           10.391        25.378        11.076        8.407 \r\n 1996          154           17.168        19.814        11.132        2.845 \r\n 1996          155           7.073         19.262        9.061         0 \r\n 1996          156           25.594        25.408        9.959         0 \r\n 1996          157           11.78         23.927        16.654        8.407 \r\n 1996          158           9.076         20.988        12.077        4.445 \r\n 1996          159           8.687         17.164        12.488        5.817 \r\n 1996          160           27.622        21.165        13.656        0 \r\n 1996          161           26.842        21.312        15.737        3.531 \r\n 1996          162           15.918        25.57         13.687        0 \r\n 1996          163           24.383        28.82         14.361        0 \r\n 1996          164           24.897        31.794        16.007        0 \r\n 1996          165           26.486        31.416        18.123        0 \r\n 1996          166           26.472        31.68         17.326        0 \r\n 1996          167           19.469        30.928        21.974        0 \r\n 1996          168           7.993         29.421        21.473        3.327 \r\n 1996          169           4.587         24.624        18.656        0 \r\n 1996          170           7.496         27.633        18.379        0 \r\n 1996          171           21.394        30.733        17.462        0 \r\n 1996          172           6.019         30.792        19.185        0 \r\n 1996          173           22.127        29.333        18.28         0 \r\n 1996          174           17.189        32.196        18.478        0 \r\n 1996          175           17.577        27.878        17.663        3.962 \r\n 1996          176           27.052        27.736        14.684        0 \r\n 1996          177           26.5          30.082        16.171        0 \r\n 1996          178           25.491        31.501        16.627        0 \r\n 1996          179           25.201        32.697        17.752        0 \r\n 1996          180           24.548        33.989        20.436        0 \r\n 1996          181           23.449        32.609        21.251        10.49 \r\n 1996          182           26.904        30.548        19.168        0 \r\n 1996          183           21.223        29.913        19.288        0 \r\n 1996          184           22.441        27.874        16.143        0 \r\n 1996          185           16.912        27.597        15.196        0 \r\n 1996          186           8.106         29.626        13.983        0 \r\n 1996          187           24.929        31.543        16.388        0 \r\n 1996          188           13.821        30.238        20.109        0 \r\n 1996          189           26.771        29.053        16.286        0 \r\n 1996          190           24.818        24.963        12.818        0 \r\n 1996          191           22.113        26.156        9.997         0 \r\n 1996          192           26.304        27.685        12.607        0 \r\n 1996          193           14.903        29.452        15.962        0 \r\n 1996          194           22.337        29.454        14.647        0 \r\n 1996          195           24.465        29.168        15.508        0 \r\n 1996          196           22.472        30.085        14.926        0 \r\n 1996          197           26.081        30.592        16.93         0 \r\n 1996          198           16.117        32.649        21.396        0 \r\n 1996          199           19.26         34.892        23.666        0 \r\n 1996          200           24.753        33.811        23.831        12.421 \r\n 1996          201           17.096        26.233        15.378        0 \r\n 1996          202           11.356        23.995        16.836        6.909 \r\n 1996          203           16.551        29.804        16.779        7.696 \r\n 1996          204           17.838        28.289        16.498        3.785 \r\n 1996          205           25.141        27.181        17.302        0 \r\n 1996          206           23.108        26.19         15.306        0 \r\n 1996          207           22.378        28.262        13.524        0 \r\n 1996          208           21.127        26.001        16.546        0 \r\n 1996          209           17.524        27.751        17.282        10.084 \r\n 1996          210           18.133        28.337        16.752        0 \r\n 1996          211           12.575        25.762        15.893        8.89 \r\n 1996          212           23.868        26.374        13.653        0 \r\n 1996          213           21.687        26.389        13.892        0 \r\n 1996          214           23.493        28.391        14.234        0 \r\n 1996          215           22.876        28.373        15.773        0 \r\n 1996          216           11.413        26.218        19.532        0 \r\n 1996          217           1.93          32.781        21.184        2.743 \r\n 1996          218           15.895        33.751        24.264        0 \r\n 1996          219           21.7          33.306        22.808        0 \r\n 1996          220           21.67         30.278        15.644        0 \r\n 1996          221           23.387        29.665        14.772        0 \r\n 1996          222           22.639        29.387        15.237        0 \r\n 1996          223           14.264        26.76         15.964        17.526 \r\n 1996          224           20.731        28.158        14.023        0 \r\n 1996          225           21.991        29.448        15.397        0 \r\n 1996          226           20.779        31.392        18.691        0 \r\n 1996          227           21.596        27.091        14.294        0 \r\n 1996          228           21.686        26.198        12.301        0 \r\n 1996          229           15.376        23.337        18.034        0 \r\n 1996          230           17.567        25.414        18.158        0 \r\n 1996          231           10.209        29.834        18.503        0 \r\n 1996          232           9.502         29.407        17.159        3.581 \r\n 1996          233           20.798        32.494        19.463        0 \r\n 1996          234           20.372        31.866        21.761        0 \r\n 1996          235           6.784         26.248        20.112        14.757 \r\n 1996          236           22.073        26.699        12.86         0 \r\n 1996          237           21.769        27.697        13.732        0 \r\n 1996          238           19.528        27.436        14.765        0 \r\n 1996          239           12.178        26.874        14.708        0 \r\n 1996          240           12.503        27.291        15.643        0 \r\n 1996          241           17.417        27.696        17.001        0 \r\n 1996          242           20.62         27.027        12.79         0 \r\n 1996          243           19.451        28.206        14.077        0 \r\n 1996          244           16.614        29.167        14.918        0 \r\n 1996          245           17.679        29.127        14.807        0 \r\n 1996          246           17.891        29.363        14.427        0 \r\n 1996          247           11.267        30.153        14.844        0 \r\n 1996          248           17.78         29.779        16.208        0 \r\n 1996          249           18.221        29.625        16.189        0 \r\n 1996          250           16.795        29.362        17.385        0 \r\n 1996          251           13.149        26.092        18.173        16.789 \r\n 1996          252           8.06          24.758        16.729        5.08 \r\n 1996          253           19.554        27.878        13.856        0 \r\n 1996          254           8.837         26.003        15.224        7.899 \r\n 1996          255           18.389        19.995        7.602         0 \r\n 1996          256           10.171        17.056        6.503         0 \r\n 1996          257           19.578        18.931        3.771         0 \r\n 1996          258           19.666        21.529        4.878         0 \r\n 1996          259           17.985        21.694        8.884         0 \r\n 1996          260           13.1          21.807        7.887         0 \r\n 1996          261           12.638        22.016        7.427         0 \r\n 1996          262           15.911        22.488        9.829         0 \r\n 1996          263           6.892         21.816        12.039        0 \r\n 1996          264           13.337        23.336        9.914         0 \r\n 1996          265           5.38          24.221        9.125         0 \r\n 1996          266           14.75         21.192        11.603        0 \r\n 1996          267           4.077         20.127        9.381         10.922 \r\n 1996          268           17.669        18.474        8.234         0 \r\n 1996          269           4.053         19.231        11.863        10.795 \r\n 1996          270           4.219         16.989        7.071         8.915 \r\n 1996          271           3.148         19.984        7.22          0 \r\n 1996          272           16.511        20.735        6.986         0 \r\n 1996          273           14.973        25.963        10.571        0 \r\n 1996          274           15.447        24.669        10.999        0 \r\n 1996          275           14.821        21.099        9.691         0 \r\n 1996          276           14.451        14.82         1.923         0 \r\n 1996          277           14.348        17.421        3.159         0 \r\n 1996          278           11.72         22.699        4.842         0 \r\n 1996          279           13.667        24.741        13.481        0 \r\n 1996          280           7.835         21.803        6.311         0 \r\n 1996          281           13.08         16.925        2.131         0 \r\n 1996          282           14.101        17.548        3.524         4.801 \r\n 1996          283           12.988        16.141        2.399         0 \r\n 1996          284           14.703        17.016        1.498         0 \r\n 1996          285           13.356        23.967        6.769         0 \r\n 1996          286           11.324        26.518        12.619        0 \r\n 1996          287           13.135        26.859        11.942        0 \r\n 1996          288           12.332        25.453        12.411        0 \r\n 1996          289           13.673        21.926        15.876        0 \r\n 1996          290           11.29         19.991        6.067         0 \r\n 1996          291           3.266         13.581        2.782         0 \r\n 1996          292           13.466        18.628       -1.186         0 \r\n 1996          293           12.452        19.144        5.668         0 \r\n 1996          294           10.029        19.466        7.428         0 \r\n 1996          295           10.87         15.839        2.536         12.852 \r\n 1996          296           2.153         14.411        0.314         11.989 \r\n 1996          297           8.618         17.818        1.314         0 \r\n 1996          298           6.442         20.811        4.481         0 \r\n 1996          299           3.902         23.568        12.436        0 \r\n 1996          300           8.251         19.598        8.366         0 \r\n 1996          301           8.126         16.022        0.879         0 \r\n 1996          302           9.707         21.21         6.082         14.148 \r\n 1996          303           3.736         15.116        0.135         13.513 \r\n 1996          304           11.37         3.551        -2.866         0 \r\n 1996          305           6.654         3.321        -4.173         0 \r\n 1996          306           7.188         3.278        -3.99          0 \r\n 1996          307           10.916        13.569       -3.125         0 \r\n 1996          308           9.965         10.746        2.437         0 \r\n 1996          309           1.31          11.481        5.32          2.87 \r\n 1996          310           3.092         19.017        3.844         0 \r\n 1996          311           4.059         8.228         0.443         0 \r\n 1996          312           9.096         5.087        -0.809         0 \r\n 1996          313           8.256         3.653        -4.416         0 \r\n 1996          314           4.992        -0.149        -6.673         0 \r\n 1996          315           4.121        -0.677        -5.197         0 \r\n 1996          316           4.104        -0.894        -9.381         0 \r\n 1996          317           3.072        -0.613        -4.806         0 \r\n 1996          318           3.593         1.098        -10.797        0 \r\n 1996          319           3.713         6.353        -2.177         0 \r\n 1996          320           0.561         15.087        3.5           0 \r\n 1996          321           0.452         11.244       -2.084         7.188 \r\n 1996          322           5.81          2.158        -4.124         8.179 \r\n 1996          323           4.646         0.734        -3.662         0 \r\n 1996          324           2.17          2.152        -3.424         0 \r\n 1996          325           1.644         2.279        -1.581         0 \r\n 1996          326           2.753         2.126        -4.438         0 \r\n 1996          327           1.967         2.585        -1.303         0 \r\n 1996          328           0.926         2.775        -3.767         0 \r\n 1996          329           6.003        -0.666        -7.512         0 \r\n 1996          330           8.374        -2.196        -11.459        0 \r\n 1996          331           8.99         -2.684        -11.042        0 \r\n 1996          332           3.435         6.112        -10.167        0 \r\n 1996          333           7.563         5.749        -0.499         7.696 \r\n 1996          334           0.811         5.292         1.028         6.477 \r\n 1996          335           2.618         1.579        -3.928         0 \r\n 1996          336           3.268         1.028        -7.991         0 \r\n 1996          337           2.962        -0.778        -6.818         0 \r\n 1996          338           4.841         1.482        -10.546        0 \r\n 1996          339           3.218         1.012        -1.428         2.591 \r\n 1996          340           3.294         5.432        -1.523         0 \r\n 1996          341           5.125         6.923        -3.039         0 \r\n 1996          342           6.865         3.796        -3.013         0 \r\n 1996          343           5.5           4.421        -5.969         0 \r\n 1996          344           3.823         10.638       -1.698         0 \r\n 1996          345           2.846         5.398         0.978         0 \r\n 1996          346           1.643         3.711        -0.624         0 \r\n 1996          347           3.344         4.541        -1.611         0 \r\n 1996          348           5.512         6.146        -2.397         0 \r\n 1996          349           0.695         7.835        -2.911         0.76 \r\n 1996          350           5.568        -0.821        -8.249         2.79 \r\n 1996          351           2.032        -3.486        -10.755        0 \r\n 1996          352           4.08         -9.023        -15.443        0 \r\n 1996          353           3.861        -9.783        -16.193        0 \r\n 1996          354           3.364        -6.278        -19.474        0 \r\n 1996          355           3.225         3.792        -7.387         0 \r\n 1996          356           3.425         4.692         0.709         0 \r\n 1996          357           0.918         2.954        -8.834         0 \r\n 1996          358           1.773        -6.843        -17.669        0 \r\n 1996          359           5.3          -11.699       -15.521        0 \r\n 1996          360           1.612        -7.752        -14.751        0 \r\n 1996          361           5.692         1.817        -13.176        0 \r\n 1996          362           2.449         4.913        -0.347         0 \r\n 1996          363           4.552         1.941        -8.374         0 \r\n 1996          364           5.509         0.929        -10.384        0 \r\n 1996          365           3.034         0.003        -4.485         0 \r\n 1996          366           3.674         7.265        -2.047         0 \r\n 1997          1             3.95          3.875        -1.975         0 \r\n 1997          2             4.926         6.725         2.175         0 \r\n 1997          3             5.1           9.175        -0.35          0 \r\n 1997          4             2.4           13.2          2.975         1.825 \r\n 1997          5             7.15          6            -6.95          0 \r\n 1997          6             9.45         -2.375        -13.125        0 \r\n 1997          7             9.35         -1.15         -14.675        0 \r\n 1997          8             7.375         2.025        -10.2          0 \r\n 1997          9             3.9          -1.9          -6.35          4.3 \r\n 1997          10            4.675        -3.275        -16.1          1.2 \r\n 1997          11            7.15         -13.925       -21.125        0 \r\n 1997          12            6.825        -13.55        -21.425        0 \r\n 1997          13            6.525        -8.625        -17.95         0 \r\n 1997          14            5.45         -5.85         -13.375        0 \r\n 1997          15            3.525        -0.75         -10            5.925 \r\n 1997          16            6.275        -3.925        -22.65         0 \r\n 1997          17            6.65         -11.3         -23.85         0 \r\n 1997          18            5.475        -9.425        -22.125        0 \r\n 1997          19            7.825         2.075        -11.975        0 \r\n 1997          20            11.05         3.675        -3.825         0 \r\n 1997          21            2.875         8.875        -3.95          1.125 \r\n 1997          22            10.65         9.75         -3.9           1.875 \r\n 1997          23            8.6           1.025        -7.8           0 \r\n 1997          24            3.775         0.525        -4.2           9.475 \r\n 1997          25            6.125        -5.45         -17.1          0 \r\n 1997          26            3.976        -8.35         -16.625        5.425 \r\n 1997          27            4.95         -8.1          -13.7          0 \r\n 1997          28            6.525        -11.475       -26.85         0 \r\n 1997          29            5.05         -6.55         -18.05         0 \r\n 1997          30            6.176        -1.6          -13.725        0 \r\n 1997          31            10.5          9.4          -4.075         0 \r\n 1997          32            5.8           4.375        -2.25          0 \r\n 1997          33            12.925        4.7          -1.275         0 \r\n 1997          34            7.674         1.35         -3.35          0.85 \r\n 1997          35            4.075         0.625        -1.5           9.576 \r\n 1997          36            4.5           1.025        -8.325         0 \r\n 1997          37            7.575         0.625        -5.5           0 \r\n 1997          38            7.65         -1.05         -4.95          0 \r\n 1997          39            9.175         1.85         -4.625         0 \r\n 1997          40            10.4          1.625        -5.75          0 \r\n 1997          41            6.8           0.975        -5.5           0 \r\n 1997          42            7.925        -2.525        -8.3           0 \r\n 1997          43            10.65        -3.175        -9.25          0.9 \r\n 1997          44            9.65          0.275        -10.425        0 \r\n 1997          45            12.849        3.325        -6.425         0 \r\n 1997          46            10.5         -0.7          -11.6          0 \r\n 1997          47            5.05         -2.575        -8             5.125 \r\n 1997          48            6.526         9.75         -6.2           0 \r\n 1997          49            10.925        12.925        6.65          0 \r\n 1997          50            16.075        9.5           0.225         0 \r\n 1997          51            3.575         8.95          0.025         6.826 \r\n 1997          52            3.55          6.25          1.35          40.728 \r\n 1997          53            10.901        1            -8.775         0 \r\n 1997          54            14.951       -0.925        -6.125         0 \r\n 1997          55            10.749       -2.325        -6.525         0 \r\n 1997          56            15.226        3.125        -7.45          0 \r\n 1997          57            4.625         2.775         0.275         7.126 \r\n 1997          58            4.675         2.4          -1.725         3.45 \r\n 1997          59            8.575         7.975        -2.875         0 \r\n 1997          60            3.9           7.325         3.775         0.325 \r\n 1997          61            17.65         7.925        -3.925         0 \r\n 1997          62            12.551        8.1          -3.675         0 \r\n 1997          63            9.026         6            -0.475         0 \r\n 1997          64            12.275        3.625        -3.025         0 \r\n 1997          65            17.175        1.575        -5.525         0 \r\n 1997          66            18.175        13.55        -3.85          0 \r\n 1997          67            19.25         12.8         -3.075         0 \r\n 1997          68            12.925        10.1          4.95          14.276 \r\n 1997          69            18.675        15           -0.3           0 \r\n 1997          70            18.675        11.175       -0.575         0 \r\n 1997          71            16.775        11.325       -1.15          0 \r\n 1997          72            6.85          12.475       -1.45          0 \r\n 1997          73            10.725        6.425        -4.875         1.875 \r\n 1997          74            17.75         0.075        -9.95          0 \r\n 1997          75            15.1          7.025        -6             0 \r\n 1997          76            14.375        14.85         0.1           0 \r\n 1997          77            4.55          8             0.6           0 \r\n 1997          78            17.801        11.725       -3.8           0 \r\n 1997          79            18.6          15.175        1.3           0 \r\n 1997          80            18.4          21.85         6.525         0 \r\n 1997          81            16.55         12.55        -0.45          0 \r\n 1997          82            18.45         10.9         -1.15          0.3 \r\n 1997          83            5.201         12.35        -1.7           9.3 \r\n 1997          84            8.501         11.525        1.5           2.775 \r\n 1997          85            21.25         18.8         -1.875         0 \r\n 1997          86            19.65         22.275        4.3           0 \r\n 1997          87            13.825        18.75         8.75          1.825 \r\n 1997          88            10.251        13.7          3.45          0 \r\n 1997          89            18.75         11.55         2.95          1.95 \r\n 1997          90            22.75         15.175       -2.3           0 \r\n 1997          91            19.275        18.35         1.7           0 \r\n 1997          92            17.35         20.025        5.35          0 \r\n 1997          93            11.401        19.675        9.325         1.1 \r\n 1997          94            6.925         19.4          9.6           0.9 \r\n 1997          95            4.776         21.25         12.45         6.475 \r\n 1997          96            11.9          14.6          1.025         1.35 \r\n 1997          97            23.425        7.675        -4.725         0 \r\n 1997          98            19.425        2.625        -4.9           0 \r\n 1997          99            24.65         7.8          -5.5           0 \r\n 1997          100           5.849         4.7          -2.325         6.275 \r\n 1997          101           3.7           1.75         -1.8           6.575 \r\n 1997          102           3.975         3.725        -1.95          5.375 \r\n 1997          103           10.476        10.6         -4.325         0 \r\n 1997          104           18.35         13.225       -1.75          0 \r\n 1997          105           18.55         18.075        2.925         0 \r\n 1997          106           23.051        11.325       -0.625         0 \r\n 1997          107           26.275        12.775       -3.1           0 \r\n 1997          108           17.875        16.65         2.025         1 \r\n 1997          109           20.75         18.1          3.9           0 \r\n 1997          110           8.749         15.45         5.75          0 \r\n 1997          111           11.526        17.8          4.575         0.4 \r\n 1997          112           20.874        16.6          4.4           0 \r\n 1997          113           15.05         14.95         2.85          0 \r\n 1997          114           18.675        13.125        4.65          0 \r\n 1997          115           28.275        18.425        4.275         0 \r\n 1997          116           18.475        18.15         6.85          0 \r\n 1997          117           17.224        18.1          7.25          0 \r\n 1997          118           27.175        20.8          5.025         0 \r\n 1997          119           23.376        22.975        9.35          0 \r\n 1997          120           7.7           20.475        7.725         26.6 \r\n 1997          121           27.925        18.1          2.025         6.75 \r\n 1997          122           4.625         16.075        7.05          7.925 \r\n 1997          123           19.224        15.8          5.6           0 \r\n 1997          124           28.975        19.575        4.125         0 \r\n 1997          125           25.849        22.025        10.375        0 \r\n 1997          126           26.875        21.25         5.3           0 \r\n 1997          127           5.075         20.475        11.475        25.925 \r\n 1997          128           26.2          21.3          12.4          5.475 \r\n 1997          129           26.425        17.65         5.35          0 \r\n 1997          130           29.1          20.95         5.45          0 \r\n 1997          131           13.9          19.525        9.05          0 \r\n 1997          132           25.301        17.05         3.725         1.25 \r\n 1997          133           23.776        15.875        1.825         0 \r\n 1997          134           13.126        15.45         6.575         0 \r\n 1997          135           26.476        14.05         1.25          0 \r\n 1997          136           24.726        20.85         3.025         0 \r\n 1997          137           26.6          25.95         11.275        0 \r\n 1997          138           17.976        25.9          15.1          7.275 \r\n 1997          139           23.125        23.45         11.4          1.1 \r\n 1997          140           30.1          17.95         5.05          0 \r\n 1997          141           31.1          19            4.275         0 \r\n 1997          142           28.124        20.8          5.825         0 \r\n 1997          143           28.326        23.125        7.775         0 \r\n 1997          144           17.424        24.75         12.9          7.825 \r\n 1997          145           9.75          21.925        15.925        13.35 \r\n 1997          146           7.75          16.775        10.4          24.625 \r\n 1997          147           11.399        20.2          7.1           0 \r\n 1997          148           5.95          19.075        10.35         6.025 \r\n 1997          149           9.976         18.7          9.95          0 \r\n 1997          150           18.525        21.95         9.925         0 \r\n 1997          151           30.65         24.175        11.8          0 \r\n 1997          152           29.625        25.625        9.625         0 \r\n 1997          153           23.099        24.425        11            0 \r\n 1997          154           15.474        25.475        12.225        0 \r\n 1997          155           25.625        24.7          12.85         0 \r\n 1997          156           19.276        25.375        11.55         0 \r\n 1997          157           18.076        24.825        12.725        4.175 \r\n 1997          158           23.451        24.5          12.15         4.225 \r\n 1997          159           22.423        22.675        13.15         6.975 \r\n 1997          160           27.2          25.925        10.525        0 \r\n 1997          161           24.274        26.85         12.25         0 \r\n 1997          162           21.825        27            14.2          2.1 \r\n 1997          163           18.3          23.55         16.275        8.575 \r\n 1997          164           18.125        29.075        15.7          0 \r\n 1997          165           28.55         26.825        14.425        0 \r\n 1997          166           23.85         28.15         14.6          2.3 \r\n 1997          167           25.1          27.95         18.9          3.75 \r\n 1997          168           29.649        28.35         12.35         0 \r\n 1997          169           30.15         29.25         16.225        0 \r\n 1997          170           18.025        31.175        16.175        0 \r\n 1997          171           17.75         28.825        21.25         15.025 \r\n 1997          172           24.749        31            21.65         15.3 \r\n 1997          173           23.673        29.325        20.375        0 \r\n 1997          174           27.3          30.45         21.4          0 \r\n 1997          175           18.851        30.45         22.05         4.9 \r\n 1997          176           17.575        28.075        21.7          9.575 \r\n 1997          177           30.25         29.125        15.6          0 \r\n 1997          178           30.699        30.225        16.6          0 \r\n 1997          179           26.6          28.725        18.075        0 \r\n 1997          180           24.3          27.45         19.75         4.7 \r\n 1997          181           24.5          28.75         19.975        4.55 \r\n 1997          182           27.149        30.775        19.3          0 \r\n 1997          183           28.376        26.675        18.675        0 \r\n 1997          184           15.248        24.525        13.45         0 \r\n 1997          185           15.7          20.6          11.625        0 \r\n 1997          186           25.926        25.9          10.3          0 \r\n 1997          187           27.974        26.025        16.125        0 \r\n 1997          188           26.675        28.95         11.275        0 \r\n 1997          189           23.849        28.175        19.225        0 \r\n 1997          190           19.126        26.75         14.45         0 \r\n 1997          191           25.45         29.05         12.15         0 \r\n 1997          192           27.125        32.4          14.975        0 \r\n 1997          193           20.025        30.775        19.225        6.25 \r\n 1997          194           17.377        31.275        21.725        6.05 \r\n 1997          195           29.725        30.425        22.825        4.225 \r\n 1997          196           30.25         34.125        17.125        0 \r\n 1997          197           29.4          36.15         19.2          0 \r\n 1997          198           24.4          34.675        19.05         0 \r\n 1997          199           24.701        32.95         22            0 \r\n 1997          200           20.7          30.45         21.675        7.025 \r\n 1997          201           22.8          30.15         20.725        5.925 \r\n 1997          202           15.15         27.725        21.525        7.125 \r\n 1997          203           8.625         26.8          19.025        1.175 \r\n 1997          204           17.174        29.25         18.65         0 \r\n 1997          205           16.575        31.425        17.75         0 \r\n 1997          206           23.451        32.15         21.375        0 \r\n 1997          207           27.3          34.525        24.15         1.625 \r\n 1997          208           21.876        32.725        23.675        8.8 \r\n 1997          209           17.622        29.9          20.95         0 \r\n 1997          210           27.375        26.8          15.05         0 \r\n 1997          211           26.349        27.375        12.2          0 \r\n 1997          212           27.85         29.75         13.25         0 \r\n 1997          213           19.926        31.075        14.775        0 \r\n 1997          214           25.749        32.55         20.975        0 \r\n 1997          215           21.975        31.375        20.4          0 \r\n 1997          216           24.675        29.675        19.45         4.575 \r\n 1997          217           26.2          25.425        14.9          0 \r\n 1997          218           16.326        26.725        13.075        0 \r\n 1997          219           25.951        28.425        13.95         0 \r\n 1997          220           26.45         28.875        14.3          0 \r\n 1997          221           13.4          30.175        17.75         0 \r\n 1997          222           11.1          27.65         18.325        2.675 \r\n 1997          223           5.225         21.725        14.8          16.5 \r\n 1997          224           6.826         29.025        17.15         3.675 \r\n 1997          225           19.725        26.825        15.55         0 \r\n 1997          226           13.95         28.925        13.175        0 \r\n 1997          227           24.25         30.075        20.35         10.125 \r\n 1997          228           20.626        28.175        22.35         18.875 \r\n 1997          229           11.05         24.75         19.1          24.851 \r\n 1997          230           12.476        23.625        13.275        0 \r\n 1997          231           7.525         24.025        14.9          0 \r\n 1997          232           17.026        24.025        14.475        0 \r\n 1997          233           22.301        23.85         11.525        0.9 \r\n 1997          234           22.325        24.925        11.7          0 \r\n 1997          235           20.425        27.825        13.1          3.875 \r\n 1997          236           21.601        26.4          16.975        0 \r\n 1997          237           10.449        27.05         15.4          2.8 \r\n 1997          238           13.827        28.525        17.7          5.325 \r\n 1997          239           9.8           28.625        16.825        0 \r\n 1997          240           21.5          31.75         16.95         0 \r\n 1997          241           17.3          29.1          16.625        9.475 \r\n 1997          242           12.974        24.825        19.25         27.026 \r\n 1997          243           17.075        27.575        18.85         1.9 \r\n 1997          244           18.75         32.25         18.525        0 \r\n 1997          245           10.7          27.55         21.65         14.151 \r\n 1997          246           23.525        22.35         11.725        0 \r\n 1997          247           23.6          23.6          8.175         0 \r\n 1997          248           19.301        27.325        11.625        0 \r\n 1997          249           22.249        31.425        16.775        2.2 \r\n 1997          250           8.725         26.25         18.6          0 \r\n 1997          251           11.076        22.525        17.9          11.051 \r\n 1997          252           15.125        22.95         15.9          0 \r\n 1997          253           19.8          22.775        11.2          0 \r\n 1997          254           21.65         23.7          9.925         0 \r\n 1997          255           22.125        24.85         10.5          0 \r\n 1997          256           5.3           24.875        13.4          0 \r\n 1997          257           13.05         28.05         15.75         0 \r\n 1997          258           15.65         28.25         16.05         0 \r\n 1997          259           13.476        30.45         17.875        6 \r\n 1997          260           20.7          26.825        14.9          12.951 \r\n 1997          261           12.526        29.55         14.775        0 \r\n 1997          262           7.701         27.95         21.45         1.25 \r\n 1997          263           16.374        20.05         12.45         0 \r\n 1997          264           15            20.775        7.225         0 \r\n 1997          265           7.151         22.825        11.35         1.175 \r\n 1997          266           7.799         18.05         12.55         24.051 \r\n 1997          267           20.075        21.7          6.625         0 \r\n 1997          268           19.6          26.175        9.05          0 \r\n 1997          269           18.225        25.525        10.825        0 \r\n 1997          270           12.65         24.8          12.575        0 \r\n 1997          271           18.225        23.925        12.1          0 \r\n 1997          272           19            25.975        10.375        0 \r\n 1997          273           18.325        22.425        11            0 \r\n 1997          274           18.55         22.775        7.85          0 \r\n 1997          275           17.55         29.925        12            0 \r\n 1997          276           18.25         34.05         17.7          0 \r\n 1997          277           17.7          28.4          16.275        0 \r\n 1997          278           17.575        31.65         17.025        0 \r\n 1997          279           16.3          31.525        16.65         0 \r\n 1997          280           13.3          31.35         18.725        0 \r\n 1997          281           6.85          27.75         20.4          1.9 \r\n 1997          282           16.2          21.675        11.225        0.7 \r\n 1997          283           15.975        24.825        9.075         0 \r\n 1997          284           10.85         27.15         12.5          2.6 \r\n 1997          285           4             22.875        19.525        7.55 \r\n 1997          286           9.6           19.75         8.4           13.4 \r\n 1997          287           14.25         13.95         2.125         0 \r\n 1997          288           8.575         14.45         3.725         0 \r\n 1997          289           15.5          17.475        5.4           0 \r\n 1997          290           13.975        17.15         4.175         0 \r\n 1997          291           15.25         17.65         3.725         0 \r\n 1997          292           8.925         18.375        4.675         0 \r\n 1997          293           14.325        13.775        1.225         0 \r\n 1997          294           15.125        10.35         1             0 \r\n 1997          295           15.175        10.825       -2.4           0 \r\n 1997          296           8.025         14.1          4.025         4.275 \r\n 1997          297           4.15          10.65         7.525         10.7 \r\n 1997          298           5.075         11.3          5.95          0.6 \r\n 1997          299           2.1           7.775         1.175         14.275 \r\n 1997          300           9.025         3.6          -9.175         0.8 \r\n 1997          301           9.551         12.35        -1.75          0 \r\n 1997          302           10.576        16.15         1.925         0 \r\n 1997          303           4.325         16.85         6             0 \r\n 1997          304           8.476         18.75         10.475        0 \r\n 1997          305           4.3           14.5          5.6           0 \r\n 1997          306           4.65          5.85          1.425         1.55 \r\n 1997          307           4.2           5.575        -2.7           0 \r\n 1997          308           4.425         7.325        -3.125         0 \r\n 1997          309           4.125         6.775         1.2           5.875 \r\n 1997          310           3.7           9.65          2.725         3.2 \r\n 1997          311           5.775         10.05         1.05          0 \r\n 1997          312           4.425         10.5          1.2           0 \r\n 1997          313           4.075         7.725         0.825         0 \r\n 1997          314           7.85          4.45         -1.275         0 \r\n 1997          315           9.625         2.65         -4.55          0 \r\n 1997          316           9.075         2.675        -3.525         0 \r\n 1997          317           5.075         2.675        -2.55          0 \r\n 1997          318           6.45          4.625        -2.35          1.55 \r\n 1997          319           5.9           0.975        -3.075         2.65 \r\n 1997          320           9.35         -0.025        -6.325         0 \r\n 1997          321           10.875        5.75         -4.275         0 \r\n 1997          322           11.4          5.775        -2.3           0 \r\n 1997          323           11.075        4.925        -3.55          0 \r\n 1997          324           6.075         6.475         0.825         0 \r\n 1997          325           9.549         5.85         -2.95          0 \r\n 1997          326           4.275         4.025        -2.15          0 \r\n 1997          327           7.95          3.525        -4.075         0 \r\n 1997          328           8.225         4.375        -5.975         0 \r\n 1997          329           8.15          14.25         2.05          0 \r\n 1997          330           10.225        9.55          1.6           0 \r\n 1997          331           3.125         7.55          1.35          2.975 \r\n 1997          332           4.975         13.025        8.45          4.65 \r\n 1997          333           2.45          13.75         8.2           11.126 \r\n 1997          334           7             9             3             1.55 \r\n 1997          335           8.775         6.35         -2.625         0 \r\n 1997          336           7.75          6.875         0.275         0 \r\n 1997          337           5.85          3.3           0.675         10.7 \r\n 1997          338           6.275         0.95         -5.025         0 \r\n 1997          339           6.275        -3            -6.8           0 \r\n 1997          340           7.075        -0.05         -5.35          0 \r\n 1997          341           6.275         1.025        -6.525         0.8 \r\n 1997          342           4.85         -0.7          -4.075         2.9 \r\n 1997          343           5.925         1.475        -3.675         0 \r\n 1997          344           5.775         1.55         -0.875         3.475 \r\n 1997          345           5.025         1.2          -1.6           0 \r\n 1997          346           5.5          -0.475        -4.85          0 \r\n 1997          347           7.675         3.375        -7.275         0 \r\n 1997          348           8.25          2.8          -5.175         0 \r\n 1997          349           9.075         6.6          -3.25          0 \r\n 1997          350           7.176         6.725        -0.725         0 \r\n 1997          351           7.7           6.375        -1.65          0 \r\n 1997          352           6.35          6.625        -1.15          0 \r\n 1997          353           6.35          7.85          0.625         0 \r\n 1997          354           9.05          2.05         -2.75          0 \r\n 1997          355           5.125         2.425        -4.425         0 \r\n 1997          356           4.375         1.9          -1.175         3.5 \r\n 1997          357           7.975         4.25         -3.575         1 \r\n 1997          358           3.075        -0.025        -1.575         8.775 \r\n 1997          359           4.7          -0.1          -4.2           0 \r\n 1997          360           8.425         2.075        -4.425         0 \r\n 1997          361           7.8          -1.75         -9.25          0 \r\n 1997          362           5.475         0.125        -4.725         0 \r\n 1997          363           5.25         -0.55         -5.15          0.9 \r\n 1997          364           4.35         -3.3          -6.425         2.575 \r\n 1997          365           5.5          -4.275        -11.65         0 \r\n 1998          1             8.649         5.449        -9.02          0 \r\n 1998          2             6.002         11.21         2.333         0 \r\n 1998          3             1.82          15.35        -0.004         4.978 \r\n 1998          4             0.905         7.322         0.717         7.087 \r\n 1998          5             0.817         3.74          1.117         11.151 \r\n 1998          6             0.811         3.729         1.572         11.455 \r\n 1998          7             1.79          3.036        -0.146         0 \r\n 1998          8             2.878         0.138        -1.258         0 \r\n 1998          9             4.932        -0.241        -11.52         0 \r\n 1998          10            9.403        -6.028        -14.33         0 \r\n 1998          11            3.993        -7.29         -14.4          0 \r\n 1998          12            2.986        -3.95         -15.32         0 \r\n 1998          13            9.762        -11.38        -19.28         0 \r\n 1998          14            3.952        -5.474        -13.46         0 \r\n 1998          15            10.394       -7.4          -15.56         5 \r\n 1998          16            5.561        -3.35         -9.17          0 \r\n 1998          17            5.462        -2.455        -13.98         1.27 \r\n 1998          18            9.068        -6.4          -16.57         0 \r\n 1998          19            7.85         -2.18         -13.04         0 \r\n 1998          20            6.726        -2.967        -13.02         3.785 \r\n 1998          21            3.741        -0.288        -3.128         0 \r\n 1998          22            3.608         0.728        -1.447         0 \r\n 1998          23            9.527         2.267        -4.088         0 \r\n 1998          24            8.022        -2.85         -9.711         1.52 \r\n 1998          25            10.675        3.652        -6.078         0 \r\n 1998          26            10.884        5.997        -8.139         0 \r\n 1998          27            7.022         0.216        -7.45          0 \r\n 1998          28            10.742        9.289        -2.447         0 \r\n 1998          29            9.103         5.124        -2.094         0 \r\n 1998          30            4.326        -1.022        -3.798         0 \r\n 1998          31            9.549         7.7          -2.456         2.845 \r\n 1998          32            1.121         4.721        -1.314         0 \r\n 1998          33            11.766        4.789        -2.16          0 \r\n 1998          34            6.19          1.288        -2.972         0 \r\n 1998          35            6.325        -0.526        -2.596         0 \r\n 1998          36            6.533         1.601        -3.259         0 \r\n 1998          37            7.401         7.6          -3.748         0 \r\n 1998          38            10.257        6.951        -4.768         0 \r\n 1998          39            4.747         0.767        -4.75          0 \r\n 1998          40            5.399         2.017        -2.179         0 \r\n 1998          41            3.782         7.32          0.794         17.729 \r\n 1998          42            1.202         4.072         0.614         7.95 \r\n 1998          43            7.476         4.579        -2.437         0 \r\n 1998          44            9.372         8.028        -2.091         0 \r\n 1998          45            4.824         5.44         -0.735         0 \r\n 1998          46            8.987         11.99         1.278         0 \r\n 1998          47            3.246         7.63          4.311         5.359 \r\n 1998          48            1.563         7.58          2.909         0 \r\n 1998          49            2.625         5.344         2.418         0 \r\n 1998          50            4.493         5.939         2.513         0 \r\n 1998          51            3.523         6.43          2.702         0 \r\n 1998          52            3.434         7.12          1.43          0 \r\n 1998          53            6.841         10.95        -0.078         0 \r\n 1998          54            7.048         12.88         3.88          0 \r\n 1998          55            15.2          15.84         2.647         0 \r\n 1998          56            8.788         16.12         5.997         7.899 \r\n 1998          57            1.462         11.5          6.544         23.292 \r\n 1998          58            5.747         6.584         0.689         0 \r\n 1998          59            4.3           1.952        -1.547         0 \r\n 1998          60            5.051         0.007        -2.338         0 \r\n 1998          61            6.919         3.026        -3.013         0 \r\n 1998          62            5.806         1.107        -2.519         0 \r\n 1998          63            11.585        4.817        -3.308         0 \r\n 1998          64            7.266         3.041        -2.948         0 \r\n 1998          65            12.786        6.903        -0.578         0 \r\n 1998          66            4.453         4.778        -0.505         18.567 \r\n 1998          67            2.174         2.216         0.033         11.735 \r\n 1998          68            17.168        0.786        -9.92          0 \r\n 1998          69            19.499       -6.861        -12.77         0 \r\n 1998          70            18.128       -6.596        -14.12         0 \r\n 1998          71            18.848       -5.425        -16.89         0 \r\n 1998          72            17.99         7.01         -6.596         0 \r\n 1998          73            19.127       -0.258        -9.24          0 \r\n 1998          74            7.373         0.975        -6.606         0 \r\n 1998          75            9.078         4.272        -2.91          11.963 \r\n 1998          76            1.427         3.346        -0.087         16.637 \r\n 1998          77            3.044         5.086         1.609         0 \r\n 1998          78            3.075         2.755         0.369         0 \r\n 1998          79            11.842        7.06         -0.389         0 \r\n 1998          80            21.362        10.31        -3.375         0 \r\n 1998          81            18.505        10.53        -1.547         0 \r\n 1998          82            12.957        8.39         -2.033         0 \r\n 1998          83            12.843        9.94         -4.681         0 \r\n 1998          84            17.709        20.87         12.99         0 \r\n 1998          85            18.17         24.95         13.828        0 \r\n 1998          86            8.218         24.89         10.2          2.972 \r\n 1998          87            13.311        19.05         7.67          0 \r\n 1998          88            20.934        26.52         8.12          0 \r\n 1998          89            9.663         25.02         14.129        65.075 \r\n 1998          90            4.984         16.46         5.238         7.772 \r\n 1998          91            7.194         7.14          2.329         0 \r\n 1998          92            5.693         7.15          2.338         0 \r\n 1998          93            3.678         8.09          2.931         0 \r\n 1998          94            21.673        13.19         3.094         0 \r\n 1998          95            23.552        14.76         0.428         0 \r\n 1998          96            18.969        20.02         7.32          5.537 \r\n 1998          97            7.379         14.09         9.91          14.859 \r\n 1998          98            4.375         11.4          6.382         8.712 \r\n 1998          99            3.225         7.7           4.864         0 \r\n 1998          100           24.108        15.63         1.896         0 \r\n 1998          101           18.154        20.22         2.732         0 \r\n 1998          102           21.941        23.62         9.93          15.57 \r\n 1998          103           5.497         15.3          10.79         17.018 \r\n 1998          104           22.072        19.98         7.26          0 \r\n 1998          105           10.585        20.01         9.18          3.683 \r\n 1998          106           4.569         10.83         2.199         0 \r\n 1998          107           26.397        14.9          0.428         0 \r\n 1998          108           23.346        16.23         2.846         0 \r\n 1998          109           24.904        17.55         1.975         3.734 \r\n 1998          110           11.18         14.31         6.603         4.978 \r\n 1998          111           4.502         11.28         6.652         0 \r\n 1998          112           23.566        19.94         5.445         0 \r\n 1998          113           26.195        21.67         9.99          0 \r\n 1998          114           25.705        25.23         5.932         0 \r\n 1998          115           13.619        21.25         11.9          4.039 \r\n 1998          116           3.878         16.29         8.13          0 \r\n 1998          117           17.621        13.83         4.134         0 \r\n 1998          118           13.082        15.05         3.418         4.267 \r\n 1998          119           5.23          15.15         7.27          5.969 \r\n 1998          120           3.113         14.73         10.29         19.812 \r\n 1998          121           22.548        23.91         10.79         0 \r\n 1998          122           17.046        16.91         7.59          0 \r\n 1998          123           6.634         17.57         5.273         0 \r\n 1998          124           26.656        23.95         7.01          0 \r\n 1998          125           17.559        24.28         13.59         0.762 \r\n 1998          126           4.436         18.6          14.86         6.858 \r\n 1998          127           3.719         16.36         14.45         4.318 \r\n 1998          128           16.86         22.72         14.12         0.254 \r\n 1998          129           22.863        24.12         12.39         0 \r\n 1998          130           27.925        23.82         9.83          0 \r\n 1998          131           28.389        25.41         8.5           0 \r\n 1998          132           19.112        25.92         14.5          5.842 \r\n 1998          133           27.18         26.26         10.42         0 \r\n 1998          134           26.701        31.4          15.58         0 \r\n 1998          135           12.314        28.42         18.86         0 \r\n 1998          136           29.482        28.71         14.08         0 \r\n 1998          137           27.492        31.37         13.48         0 \r\n 1998          138           26.386        32.44         18.05         0 \r\n 1998          139           13.774        31.36         17.67         0.254 \r\n 1998          140           9.294         23.09         15.45         6.858 \r\n 1998          141           20.75         25.78         13.74         0 \r\n 1998          142           9.636         19.5          10.31         10.668 \r\n 1998          143           8.294         20.28         13.6          8.636 \r\n 1998          144           10.01         19.1          11.49         0.254 \r\n 1998          145           9.337         19.59         13.18         0 \r\n 1998          146           19.787        24.3          12.56         0.508 \r\n 1998          147           21.129        25.6          13.54         0 \r\n 1998          148           25.442        31.88         18.11         0 \r\n 1998          149           21.417        29.68         17.8          4.572 \r\n 1998          150           18.533        30.14         17.66         0 \r\n 1998          151           23.16         27.24         13.12         0 \r\n 1998          152           18.623        22.96         7.3           0 \r\n 1998          153           29.538        24.75         13.02         0 \r\n 1998          154           11.841        14.52         8.81          4.572 \r\n 1998          155           15.716        18.35         9.18          0 \r\n 1998          156           11.415        16.14         9.81          2.286 \r\n 1998          157           22.623        20.26         8.11          0 \r\n 1998          158           20.644        22.39         8.66          0 \r\n 1998          159           3.94          16.49         12.59         37.592 \r\n 1998          160           10.714        23.48         13.31         6.604 \r\n 1998          161           26.738        24.93         12.14         0.508 \r\n 1998          162           9.043         25.8          17.8          5.334 \r\n 1998          163           19.252        25.53         17.01         0.254 \r\n 1998          164           27.717        26.6          15.17         0 \r\n 1998          165           4.404         20.66         17.07         20.32 \r\n 1998          166           20.297        25.5          15.46         9.144 \r\n 1998          167           24.6          25.16         16.92         0.762 \r\n 1998          168           9.38          25.53         15.08         1.524 \r\n 1998          169           7.795         28.49         17.1          18.034 \r\n 1998          170           30.202        29.84         15.24         0 \r\n 1998          171           18.72         28.71         18.71         24.13 \r\n 1998          172           24.949        29.59         17.74         0 \r\n 1998          173           11.256        25.87         16.35         0.508 \r\n 1998          174           17.439        26.82         16.5          0 \r\n 1998          175           20.176        33.11         22.22         0 \r\n 1998          176           20.14         33.53         24.26         0 \r\n 1998          177           27.315        34.34         23.8          0 \r\n 1998          178           27.883        34.31         23.83         0 \r\n 1998          179           23.786        30.83         20.36         3.556 \r\n 1998          180           16.299        30.83         17.18         31.242 \r\n 1998          181           27.148        27.19         17.82         0 \r\n 1998          182           20.07         28.01         16.55         0 \r\n 1998          183           29.38         30.08         14.47         0 \r\n 1998          184           18.337        29.16         19.64         0 \r\n 1998          185           19.705        26.54         17.75         0 \r\n 1998          186           9.425         23.91         16.63         22.606 \r\n 1998          187           23.049        30.55         20.5          0.762 \r\n 1998          188           22.648        32.81         23.43         0.254 \r\n 1998          189           27.1          30.4          20.43         0 \r\n 1998          190           20.179        31.76         20.3          53.848 \r\n 1998          191           23.88         29.88         19.98         0 \r\n 1998          192           27.887        28.48         18.02         0 \r\n 1998          193           28.165        27.59         16.67         0 \r\n 1998          194           26.086        30.69         16.39         0 \r\n 1998          195           27.233        30.11         17.95         0 \r\n 1998          196           24.188        30.87         19.58         0 \r\n 1998          197           28.309        30.87         17.51         0 \r\n 1998          198           19.668        28.9          15.89         0 \r\n 1998          199           27.133        32.93         21.99         4.826 \r\n 1998          200           24.434        33.43         22.75         0 \r\n 1998          201           26.355        35.11         22.74         0 \r\n 1998          202           23.882        33.71         22.67         1.778 \r\n 1998          203           12.043        27.23         19.89         5.588 \r\n 1998          204           26.946        26.75         15.9          0 \r\n 1998          205           25.63         27.18         15.42         0 \r\n 1998          206           20.869        27.6          14.37         0 \r\n 1998          207           24.252        27.73         15.91         0 \r\n 1998          208           26.484        29.53         14            0 \r\n 1998          209           25.463        31.67         17.74         0 \r\n 1998          210           27.031        28.37         16.33         0.254 \r\n 1998          211           21.775        27.33         15.95         0 \r\n 1998          212           24.794        26.91         13.26         0 \r\n 1998          213           27.749        28.07         13.03         0 \r\n 1998          214           17.426        26.13         15.58         0 \r\n 1998          215           13.783        27.66         18.82         5.334 \r\n 1998          216           13.378        29.71         19.09         13.208 \r\n 1998          217           14.947        28.34         19.23         6.35 \r\n 1998          218           13.15         25.59         19.48         3.556 \r\n 1998          219           21.6          27.76         18.68         0.254 \r\n 1998          220           22.492        29.31         18.16         0 \r\n 1998          221           12.873        31.48         18.62         0 \r\n 1998          222           21.038        30.76         17.5          1.27 \r\n 1998          223           23.142        28.81         14.77         0 \r\n 1998          224           17.668        27.02         16.2          0 \r\n 1998          225           19.03         27.97         14.68         0 \r\n 1998          226           21.458        29.53         14.72         0 \r\n 1998          227           22.188        29.68         17.76         0 \r\n 1998          228           21.693        30.34         19.07         0 \r\n 1998          229           13.564        28.07         19.94         5.588 \r\n 1998          230           14.283        28.12         20.4          0.762 \r\n 1998          231           18.684        30.09         18.49         0 \r\n 1998          232           21.363        31.12         20.04         0 \r\n 1998          233           17.371        31.69         18.23         0 \r\n 1998          234           23.299        31.86         19.99         0 \r\n 1998          235           19.975        34.11         20.76         0 \r\n 1998          236           13.689        30.44         21.02         0 \r\n 1998          237           20.473        29.48         15.92         0 \r\n 1998          238           18.809        29.06         13.05         0 \r\n 1998          239           4.879         24.62         19.94         7.112 \r\n 1998          240           12.561        27.88         17.77         2.286 \r\n 1998          241           23.052        30.98         15.75         1.27 \r\n 1998          242           23.144        29.82         16.68         2.032 \r\n 1998          243           11.055        25.63         16.26         2.286 \r\n 1998          244           22.737        26.82         14.62         2.286 \r\n 1998          245           22.064        26.36         12.73         1.016 \r\n 1998          246           21.525        32.91         15.74         0.762 \r\n 1998          247           22.171        29.21         16.33         0.254 \r\n 1998          248           20.833        31.65         13.94         0.254 \r\n 1998          249           19.789        33.11         20.48         0 \r\n 1998          250           19.064        27.06         12.17         0 \r\n 1998          251           22.707        22.56         8.68          0 \r\n 1998          252           22.356        23.76         6.048         0 \r\n 1998          253           21.421        26.08         9.27          0 \r\n 1998          254           21.707        30.13         10.7          0 \r\n 1998          255           20.784        32.8          11.5          0 \r\n 1998          256           14.864        30.74         16.31         21.844 \r\n 1998          257           3.189         22.76         18.55         48.006 \r\n 1998          258           7.944         25.73         18.3          0 \r\n 1998          259           15.706        27.27         17.58         0 \r\n 1998          260           17.72         28.01         15.2          0 \r\n 1998          261           15.386        28.58         15.16         0 \r\n 1998          262           16.718        29.94         16.9          0 \r\n 1998          263           10.374        27.34         16.69         0 \r\n 1998          264           7.267         19.01         13.25         0 \r\n 1998          265           16.602        20.72         8.12          0 \r\n 1998          266           19.094        21.36         3.536         0 \r\n 1998          267           10.114        22.74         12.01         4.064 \r\n 1998          268           11.529        29.48         16.71         0 \r\n 1998          269           17.008        32            21.76         0 \r\n 1998          270           17.78         29            14.59         0 \r\n 1998          271           16.697        27.3          12.57         0 \r\n 1998          272           16.067        28.62         16.24         6.35 \r\n 1998          273           12.93         29.35         9.2           0 \r\n 1998          274           17.707        16.99         3.698         0 \r\n 1998          275           1.608         8.99          7.48          11.176 \r\n 1998          276           1.447         11            8.83          4.826 \r\n 1998          277           3.451         15.16         10.12         14.224 \r\n 1998          278           4.092         21.1          14.24         32.766 \r\n 1998          279           4.753         16.94         8.16          0.254 \r\n 1998          280           6.308         13.67         5.693         0 \r\n 1998          281           15.789        17.5          5.558         0 \r\n 1998          282           14.723        18.52         1.063         0 \r\n 1998          283           15.996        20.53         4.915         0 \r\n 1998          284           13.341        21.05         5.309         0 \r\n 1998          285           16.188        18.25         6.328         0 \r\n 1998          286           15.682        16.59         2.365         0 \r\n 1998          287           13.878        18.96         1.414         6.604 \r\n 1998          288           7.264         20.49         9.77          3.048 \r\n 1998          289           12.962        26.09         14.71         0 \r\n 1998          290           2.358         21.19         13.01         44.958 \r\n 1998          291           7.841         13.02         4.973         2.794 \r\n 1998          292           14.631        17.74         4.113         0 \r\n 1998          293           9.233         16.04         1.927         0.508 \r\n 1998          294           14.206        15.13         1.909         0 \r\n 1998          295           14.601        15.83        -1.747         0 \r\n 1998          296           14.436        17.68         0.864         0 \r\n 1998          297           10.639        18.31         3.211         0 \r\n 1998          298           8.357         21.45         9.18          0.254 \r\n 1998          299           12.091        23.29         7.51          0 \r\n 1998          300           3.785         21.43         13.08         16.002 \r\n 1998          301           3.833         16.05         10.66         1.524 \r\n 1998          302           4.479         21.57         13.74         2.286 \r\n 1998          303           8.966         16.11         9.05          0 \r\n 1998          304           3.99          11.33         7.48          0.254 \r\n 1998          305           1.509         12.23         9             10.16 \r\n 1998          306           1.76          9.41          4.285         7.366 \r\n 1998          307           6.47          7.12          1.054         0 \r\n 1998          308           8.84          7.06         -2.268         0 \r\n 1998          309           6.651         3.684        -3.563         0 \r\n 1998          310           7.921         4.754        -4.64          3.378 \r\n 1998          311           3.757         3.465        -4.736         8.788 \r\n 1998          312           3.522         2.649        -0.057         0 \r\n 1998          313           0.979         10.68         2.629         13.157 \r\n 1998          314           1.925         14.53         2.703         0 \r\n 1998          315           11.449        9.68         -0.304         0 \r\n 1998          316           2.29          6.733         1.519         0 \r\n 1998          317           5.615         9.2           1.566         0 \r\n 1998          318           9.741         16.27         3.369         0 \r\n 1998          319           8.368         6.666        -0.893         0 \r\n 1998          320           3.995         9.98          3.226         0 \r\n 1998          321           9.445         11.15        -2.316         0 \r\n 1998          322           4.006         13.97         4.028         0 \r\n 1998          323           9.944         5.07         -1.433         0 \r\n 1998          324           10.163        4.62         -5.588         0 \r\n 1998          325           9.431         10.32        -6.643         0 \r\n 1998          326           8.099         16.84         5.06          0 \r\n 1998          327           6.098         13.04         0.275         0 \r\n 1998          328           8.562         14.24        -3.184         0 \r\n 1998          329           6.629         16.22         4.41          0 \r\n 1998          330           8.965         17.12         0.19          0 \r\n 1998          331           8.895         20.07        -0.778         0 \r\n 1998          332           3.07          15.75         7.42          0 \r\n 1998          333           2.701         20.89         13.11         10.719 \r\n 1998          334           5.387         19.19         1.415         0 \r\n 1998          335           8.818         15.94         0.627         0 \r\n 1998          336           6.221         16.56         9.14          0 \r\n 1998          337           2.287         17.58         9.82          0 \r\n 1998          338           7.86          21.85         12.62         0 \r\n 1998          339           4.118         17.28         9.82          10.033 \r\n 1998          340           0.671         11.79        -0.237         6.045 \r\n 1998          341           6.38          0.494        -4.958         0 \r\n 1998          342           8.327         6.483        -7.1           0 \r\n 1998          343           8.758         9.57         -3.261         0 \r\n 1998          344           7.6           4.841        -3.442         0 \r\n 1998          345           8.778         10.05        -5.074         0 \r\n 1998          346           8.542         10.27        -4.575         0 \r\n 1998          347           5.965         8.9          -3.768         0 \r\n 1998          348           8.631         11.97        -5.084         0 \r\n 1998          349           8.209         11.31        -0.598         0 \r\n 1998          350           3.3           3.579        -1.043         0 \r\n 1998          351           7.899         3.903        -3.893         0 \r\n 1998          352           7.236         12.82         0.295         0 \r\n 1998          353           4.557         0.342        -6.535         0 \r\n 1998          354           2.022        -1.469        -6.429         0 \r\n 1998          355           2.169        -6.429        -14.92         0 \r\n 1998          356           8.645        -9.08         -16.64         0 \r\n 1998          357           5.768        -4.689        -14.33         0 \r\n 1998          358           8.355        -1.234        -15.63         0 \r\n 1998          359           7.576         1.283        -10.37         0 \r\n 1998          360           4.753        -1.205        -12.15         0 \r\n 1998          361           5.783         5.205        -7.73          0 \r\n 1998          362           5.428         3.322        -12.91         0 \r\n 1998          363           7.531         3.951        -16.4          0 \r\n 1998          364           2.051        -13.22        -19.78         4.394 \r\n 1998          365           9.151        -12.26        -23.2          3.277 \r\n 1999          1             3.782        -8.68         -16.24         14.681 \r\n 1999          2             4.207        -6.054        -9.99          3.073 \r\n 1999          3             7.802        -9.98         -19.05         0 \r\n 1999          4             9.254        -18.93        -30.61         0 \r\n 1999          5             5.906        -6.917        -31.41         0 \r\n 1999          6             6.469        -2.928        -20.5          0 \r\n 1999          7             5.896        -14.36        -21.83         0 \r\n 1999          8             5.499        -9.87         -17.15         0 \r\n 1999          9             9.821        -13.7         -26.6          0 \r\n 1999          10            9.107        -11.5         -16.34         0 \r\n 1999          11            6.189        -4.894        -14.92         0 \r\n 1999          12            7.471        -6.867        -10.89         0 \r\n 1999          13            6.589        -7.54         -10.88         0 \r\n 1999          14            4.859        -5.813        -10.13         0 \r\n 1999          15            5.712         2.163        -13.2          0 \r\n 1999          16            8.581         5.052        -8.89          0 \r\n 1999          17            1.999         2.571        -8.47          0 \r\n 1999          18            6.57          2.399        -7.01          0 \r\n 1999          19            6.595         0.002        -11.51         0 \r\n 1999          20            7.428         0.429        -7.4           6.96 \r\n 1999          21            4.611         2.952        -0.72          8.611 \r\n 1999          22            2.311         2.095         0.675         6.198 \r\n 1999          23            2.949         0.685        -0.321         0 \r\n 1999          24            3.48          0.742        -2.767         0 \r\n 1999          25            11.001       -2.652        -7.72          0 \r\n 1999          26            4.422         4.649        -5.791         0 \r\n 1999          27            8.005         5.887        -0.701         0 \r\n 1999          28            7.167         1.339        -4.368         0 \r\n 1999          29            7.7           1.137        -7.991         0 \r\n 1999          30            6.904         4.453        -4.261         0 \r\n 1999          31            2.004         2.5          -2.201         0 \r\n 1999          32            2.425         3.671        -0.411         0 \r\n 1999          33            12.386        6.977        -1.043         0 \r\n 1999          34            6.771         10.426       -1.137         0 \r\n 1999          35            12.683        1.43         -6.59          0 \r\n 1999          36            2.603         9.557        -5.167         0 \r\n 1999          37            9.08          9.028        -2.734         0 \r\n 1999          38            9.072         6.986        -1.043         0 \r\n 1999          39            8.209         13.713       -0.162         0 \r\n 1999          40            11.837        13.121       -1.805         0 \r\n 1999          41            5.703         17.63         1.828         4.547 \r\n 1999          42            1.905         19           -3.815         4.978 \r\n 1999          43            5.858        -1.928        -8.36          0 \r\n 1999          44            14.04         2.457        -9.29          0 \r\n 1999          45            12.972        12.09        -4.382         0 \r\n 1999          46            12.933        16.1          1.373         0 \r\n 1999          47            2.577         2.751        -1.614         0 \r\n 1999          48            10.17         3.037        -3.73          0 \r\n 1999          49            4.566         2.285        -2.86          0 \r\n 1999          50            4.679         0.153        -3.242         0 \r\n 1999          51            5.907        -0.104        -6.554         0 \r\n 1999          52            15.828        2.714        -9.68          0 \r\n 1999          53            8.615         0.438        -8.67          0 \r\n 1999          54            7.476        -0.787        -5.785         0 \r\n 1999          55            5.708         1.26         -9.43          0 \r\n 1999          56            10.359        3.495        -9.86          0 \r\n 1999          57            3.251         6.474        -1.661         3.962 \r\n 1999          58            11.324        10.65         2.609         0 \r\n 1999          59            2.716         3.008        -0.816         0 \r\n 1999          60            16.476        13.3         -3.336         0 \r\n 1999          61            1.952         7.37         -1.566         0 \r\n 1999          62            15.471        1.915        -5.442         0 \r\n 1999          63            12.399        6.032        -7.96          0 \r\n 1999          64            2.51          4.143        -2.708         6.147 \r\n 1999          65            17.794       -0.996        -14.25         0 \r\n 1999          66            18.293       -0.91         -16.94         7.01 \r\n 1999          67            5.02         -1.357        -5.899         14.148 \r\n 1999          68            11.352        0.282        -3.866         0 \r\n 1999          69            19.432        0.329        -9.21          0 \r\n 1999          70            19.428        2.857        -6.347         0 \r\n 1999          71            18.571        2.296        -9.01          0 \r\n 1999          72            14.325        2.866        -3.317         0 \r\n 1999          73            20.311        5.599        -6.73          0 \r\n 1999          74            19.52         8.69         -6.299         0 \r\n 1999          75            18.616        18            0.892         0 \r\n 1999          76            18.993        14.66         3.017         0 \r\n 1999          77            20.149        10.78        -1.489         0 \r\n 1999          78            19.979        11.22        -3.193         0 \r\n 1999          79            20.262        15.92        -3.758         0 \r\n 1999          80            21.039        10.84        -2.632         0 \r\n 1999          81            12.834        6.931        -5.084         0 \r\n 1999          82            21.46         13.09        -5.84          0 \r\n 1999          83            21.686        9.86         -3.202         0 \r\n 1999          84            21.675        8.88         -5.228         0 \r\n 1999          85            21.476        10.63        -6.623         0 \r\n 1999          86            21.033        15.3         -3.633         5.182 \r\n 1999          87            12.68         15.749        1.137         0 \r\n 1999          88            22.068        17.777        0.058         0 \r\n 1999          89            21.928        22.016        5.024         0 \r\n 1999          90            20.989        21.923        7.42          0 \r\n 1999          91            9.713         20.883        11.88         0.254 \r\n 1999          92            15.096        24.458        10.63         0 \r\n 1999          93            9.767         22.644        15.89         9.906 \r\n 1999          94            23.884        17.689        5.905         0.508 \r\n 1999          95            5.005         17.685        7.52          12.7 \r\n 1999          96            18.871        16.866        5.906         0 \r\n 1999          97            22.164        25.582        3.866         0 \r\n 1999          98            7.679         20.548        7.93          12.446 \r\n 1999          99            3.253         12.382        6.812         0.762 \r\n 1999          100           9.876         16.928        6.378         0.254 \r\n 1999          101           4.098         14.368        2.941         0 \r\n 1999          102           24.145        15.621        0.342         0 \r\n 1999          103           17.633        18.171        4.965         0 \r\n 1999          104           11.998        16.547        6.705         0 \r\n 1999          105           2.459         13.761        5.733         27.686 \r\n 1999          106           5.392         7.918         2.789         8.89 \r\n 1999          107           15.433        12.752        1.659         0 \r\n 1999          108           20.738        13.955        2.2           0 \r\n 1999          109           19.467        16.849       -0.076         0 \r\n 1999          110           7.961         15.771        2.731         1.27 \r\n 1999          111           13.26         18.68         5.388         3.81 \r\n 1999          112           8.264         21.63         8.35          32.512 \r\n 1999          113           8.457         13.17         5.791         0.508 \r\n 1999          114           24.595        16.24         4.765         0 \r\n 1999          115           22.126        18.19         2.56          0 \r\n 1999          116           12.246        18.53         10.12         0.254 \r\n 1999          117           7.282         18.3          10.17         27.94 \r\n 1999          118           5.27          13.21         8.18          0.508 \r\n 1999          119           27.999        19.73         5.206         0 \r\n 1999          120           28.189        21.68         3.761         0 \r\n 1999          121           27.929        23.54         4.448         0 \r\n 1999          122           26.52         24.22         6.715         0 \r\n 1999          123           23.621        25.42         14.12         0 \r\n 1999          124           13.97         25.51         14.99         7.366 \r\n 1999          125           24.619        22.37         10.84         2.032 \r\n 1999          126           5.135         13.58         6.985         0.762 \r\n 1999          127           7.15          14.16         9.36          0.254 \r\n 1999          128           6.964         12.77         9.9           0 \r\n 1999          129           26.096        21.7          9.51          0 \r\n 1999          130           25.385        29.53         11.56         0 \r\n 1999          131           21.526        27.91         16.61         0 \r\n 1999          132           6.599         17.69         12.45         24.359 \r\n 1999          133           5.574         14.15         9.73          0 \r\n 1999          134           27.599        21.62         6.908         0 \r\n 1999          135           7.994         19.09         13.26         3.531 \r\n 1999          136           14.584        28.71         16.27         14.453 \r\n 1999          137           8.14          22.34         13.8          5.639 \r\n 1999          138           29.316        20.52         9.9           0 \r\n 1999          139           28.91         24.54         7.68          0 \r\n 1999          140           20.905        25.43         12.98         5.004 \r\n 1999          141           7.658         19.92         13.98         9.042 \r\n 1999          142           25.337        25.42         11.96         0 \r\n 1999          143           21.775        20.57         10.82         0 \r\n 1999          144           29.635        19.22         9.62          0 \r\n 1999          145           30.311        21.93         9.9           0 \r\n 1999          146           28.827        23.75         8.15          0 \r\n 1999          147           30.105        26.93         9.11          0 \r\n 1999          148           28.771        28.54         12.75         0 \r\n 1999          149           28.374        28.05         13.3          0 \r\n 1999          150           25.219        28.18         14.75         0 \r\n 1999          151           16.988        25.62         14.11         7.214 \r\n 1999          152           10.745        27.31         13.67         12.37 \r\n 1999          153           12.394        21.34         12.83         0 \r\n 1999          154           23.014        25.01         11.06         4.267 \r\n 1999          155           11.095        27.02         15.37         5.537 \r\n 1999          156           25.833        31.51         17.83         0 \r\n 1999          157           16.1          29.5          21.68         4.75 \r\n 1999          158           30.102        30.88         18.64         0 \r\n 1999          159           22.012        32.41         18.81         4.826 \r\n 1999          160           25.191        31.82         18.74         8.458 \r\n 1999          161           14.925        31.57         19.78         5.486 \r\n 1999          162           21.009        28.7          19.13         4.877 \r\n 1999          163           14.503        27.04         18.39         7.163 \r\n 1999          164           19.653        26.49         16.81         0 \r\n 1999          165           31.108        22.96         11.72         0 \r\n 1999          166           24.582        19.06         8.58          0 \r\n 1999          167           17.903        21.52         11.85         0 \r\n 1999          168           30.418        21.38         9.15          0 \r\n 1999          169           29.185        22.95         9.6           0 \r\n 1999          170           22.769        25.59         13.08         0 \r\n 1999          171           23.833        26.97         13.75         0 \r\n 1999          172           21.845        29.12         16.21         0 \r\n 1999          173           16.671        29.46         18.84         9.906 \r\n 1999          174           14.058        26.19         20.01         6.858 \r\n 1999          175           29.414        31.67         19.05         0 \r\n 1999          176           25.623        32.12         17.96         0 \r\n 1999          177           24.489        30.57         20.67         0 \r\n 1999          178           16.453        29.62         19.25         3.302 \r\n 1999          179           14.698        27.08         14.69         0.254 \r\n 1999          180           22.465        22.71         11.64         0 \r\n 1999          181           23.587        26.43         14.2          21.336 \r\n 1999          182           23.528        26.48         16.12         0.254 \r\n 1999          183           22.886        29.23         17.52         0 \r\n 1999          184           24.272        32.88         24.29         0 \r\n 1999          185           29.199        32.72         21.96         0 \r\n 1999          186           28.544        32.88         24.06         0 \r\n 1999          187           29.416        28.81         17.42         1.524 \r\n 1999          188           30.451        29.85         14.79         0 \r\n 1999          189           28.62         31.56         16.89         0 \r\n 1999          190           20.674        28.29         16.88         19.304 \r\n 1999          191           24.913        24.61         13.88         0 \r\n 1999          192           26.761        26.4          12.34         0 \r\n 1999          193           29.016        27.62         11.46         0 \r\n 1999          194           28.035        28.09         13.22         0 \r\n 1999          195           28.555        29.67         15.69         0 \r\n 1999          196           27.331        32.82         19.31         0 \r\n 1999          197           22.308        31.39         21.55         0 \r\n 1999          198           23.187        30.41         18.17         0 \r\n 1999          199           22.959        33.36         17.67         0 \r\n 1999          200           16.128        33.92         22.79         3.302 \r\n 1999          201           24.811        34.52         22.02         0 \r\n 1999          202           27.308        34.67         21.23         0 \r\n 1999          203           27.325        35.16         23.08         0 \r\n 1999          204           25.664        35.7          21.24         27.94 \r\n 1999          205           28.336        33.83         20.32         0 \r\n 1999          206           27.164        35.59         22.95         0 \r\n 1999          207           12.743        30.5          23.35         5.08 \r\n 1999          208           25.634        32.75         20.64         21.844 \r\n 1999          209           26.326        34.9          19.35         17.018 \r\n 1999          210           27.043        38.34         22.44         0 \r\n 1999          211           26.536        36.22         23.95         0 \r\n 1999          212           12.672        30            19.93         1.27 \r\n 1999          213           24.657        27            16.37         0 \r\n 1999          214           14.896        25.5          16.93         0 \r\n 1999          215           21.996        28.75         14.19         0 \r\n 1999          216           24.714        28.04         16.54         0 \r\n 1999          217           25.776        28.42         14.51         0 \r\n 1999          218           18.825        29.25         14.76         3.302 \r\n 1999          219           10.597        28.1          19.06         17.78 \r\n 1999          220           24.953        24.51         13.67         0 \r\n 1999          221           25.77         25.92         11.91         0 \r\n 1999          222           25.971        29.79         18.79         0 \r\n 1999          223           9.675         26.54         16.14         4.826 \r\n 1999          224           9.976         29.63         18.66         36.83 \r\n 1999          225           6.778         23.48         14.27         0 \r\n 1999          226           26.107        23.7          12.01         0 \r\n 1999          227           25.974        26.03         10.77         0 \r\n 1999          228           21.611        32.13         15.64         0 \r\n 1999          229           26.009        30.72         16.18         0 \r\n 1999          230           5.024         22.37         17.28         10.922 \r\n 1999          231           15.245        24.57         15.99         0 \r\n 1999          232           23.468        26.6          12.9          0 \r\n 1999          233           19.562        25.58         12.48         0 \r\n 1999          234           18.819        27.9          13.59         2.794 \r\n 1999          235           18.49         28.65         14.74         1.27 \r\n 1999          236           10.251        24.21         13.84         0.254 \r\n 1999          237           22.161        28.19         16.41         0 \r\n 1999          238           22.911        29.89         14.69         0 \r\n 1999          239           22.492        31.81         15.53         0 \r\n 1999          240           22.735        32.47         17.79         0 \r\n 1999          241           20.828        27.53         15.82         0 \r\n 1999          242           21.35         22.96         12.01         0 \r\n 1999          243           22.89         26.52         12.01         0 \r\n 1999          244           22.543        30.86         11.34         0 \r\n 1999          245           21.5          32.86         13.72         0 \r\n 1999          246           16.08         32.11         19.8          0 \r\n 1999          247           19.935        33.4          17.73         0 \r\n 1999          248           16.878        25.49         14.13         0 \r\n 1999          249           22.356        26.04         10.67         0 \r\n 1999          250           20.529        29.76         11.15         0 \r\n 1999          251           21.946        25.6          10.62         0 \r\n 1999          252           22.266        20.81         8.52          0 \r\n 1999          253           22.657        25.02         6.329         0 \r\n 1999          254           21.457        29.51         5.838         0 \r\n 1999          255           6.227         21.31         12.42         0 \r\n 1999          256           16.712        18.4          6.82          15.4 \r\n 1999          257           21.469        21.76         5.838         0 \r\n 1999          258           16.175        20.58         4.849         0 \r\n 1999          259           20.592        21.96         3.665         0 \r\n 1999          260           19.932        23.93         2.946         0 \r\n 1999          261           19.295        27.02         5.636         0 \r\n 1999          262           13.845        24.74         12.95         0 \r\n 1999          263           12.569        16.86         5.07          0 \r\n 1999          264           18.808        17.77         1.3           0 \r\n 1999          265           18.821        23.63         1.444         0 \r\n 1999          266           17.333        29.69         7.87          0 \r\n 1999          267           15.002        23.52         11.06         0 \r\n 1999          268           17.006        30.2          8.74          0 \r\n 1999          269           14.159        29.14         14.99         17.755 \r\n 1999          270           1.631         15.05         11.3          55.804 \r\n 1999          271           3.654         14.36         8.83          0 \r\n 1999          272           17.705        17.73         4.219         4.572 \r\n 1999          273           16.404        21.63         3.439         0 \r\n 1999          274           15.736        19.11         1.71          0 \r\n 1999          275           12.602        12.58         1.81          1.27 \r\n 1999          276           0.928         5.032         3.151         27.178 \r\n 1999          277           13.334        13.73         3.227         0 \r\n 1999          278           16.731        20.72         1.794         0 \r\n 1999          279           16.559        21.27         3.847         0 \r\n 1999          280           16.402        24.7          10.04         0 \r\n 1999          281           13.227        25.3          10.38         0 \r\n 1999          282           13.495        25.83         8.93          0 \r\n 1999          283           15.315        25.32         9.05          0.254 \r\n 1999          284           15.928        21.71         5.339         0 \r\n 1999          285           12.468        26.94         7.72          0 \r\n 1999          286           12.78         18.86         1.757         0 \r\n 1999          287           15.401        18.36        -0.417         0 \r\n 1999          288           14.231        30.27         10.11         17.272 \r\n 1999          289           12.648        17.89         6.656         37.084 \r\n 1999          290           12.564        11.83         0.114         0 \r\n 1999          291           8.321         13.04        -3.51          0 \r\n 1999          292           9.741         12.01        -0.559         0 \r\n 1999          293           14.689        13.88        -1.872         0 \r\n 1999          294           12.816        23.31         3.503         0 \r\n 1999          295           13.1          14.84         0.21          0 \r\n 1999          296           14.665        9.62         -2.262         0 \r\n 1999          297           14.446        12.27        -5.392         0 \r\n 1999          298           13.112        21.42        -0.265         0 \r\n 1999          299           11.608        20.59         2.1           0 \r\n 1999          300           12.758        23.58         3.294         0 \r\n 1999          301           12.853        24.14         8.28          0 \r\n 1999          302           8.858         25.15         13.17         0 \r\n 1999          303           5.852         19.64         8.82          0 \r\n 1999          304           12.336        21.47         2.323         0 \r\n 1999          305           9.395         21.08         3.837         0 \r\n 1999          306           12.958        7.11         -4.695         0 \r\n 1999          307           12.476        14.42        -7.44          0 \r\n 1999          308           11.72         17.97        -1.11          0 \r\n 1999          309           11.611        19.07         3.914         0 \r\n 1999          310           10.656        16.67         2.866         0 \r\n 1999          311           10.752        19.04         4.552         0 \r\n 1999          312           10.986        25.87         3.123         0 \r\n 1999          313           10.534        24.7          10.91         0 \r\n 1999          314           9.804         18.55         8.74          0 \r\n 1999          315           6.331         11.84         2.114         0 \r\n 1999          316           9.362         20.23         1.443         0 \r\n 1999          317           10.551        24.63         2.048         0 \r\n 1999          318           10.709        13.29        -1.348         0 \r\n 1999          319           7.2           11.62        -3.637         0 \r\n 1999          320           10.495        11.17        -2.605         0 \r\n 1999          321           7.867         12.89        -0.189         0 \r\n 1999          322           9.563         22.45         5.709         0 \r\n 1999          323           2.321         17.06         2.38          0 \r\n 1999          324           9.42          10.74        -4.425         0 \r\n 1999          325           9.06          15.89         1.644         0 \r\n 1999          326           8.371         15.89        -0.673         0.762 \r\n 1999          327           2.804         16            1.889         0 \r\n 1999          328           9.818         9.39         -3.054         0 \r\n 1999          329           9.588         9.27         -5.742         0 \r\n 1999          330           3.619         9.1          -3.906         0 \r\n 1999          331           7.723         10.39        -1.128         0 \r\n 1999          332           6.184         8.85         -3.321         0 \r\n 1999          333           9.206         5.144        -7.34          0 \r\n 1999          334           4.747         3.57         -10.27         0 \r\n 1999          335           5.804         10.41        -1.006         0 \r\n 1999          336           4.768         15.93         5.03          2.997 \r\n 1999          337           2.071         15.78         3.666         5.766 \r\n 1999          338           1.112         7.93          1.858         13.894 \r\n 1999          339           2.662         4.811        -7.36          3.912 \r\n 1999          340           8.537        -0.103        -13.54         0 \r\n 1999          341           8.534         6.883        -4.373         0 \r\n 1999          342           7.604         11.47        -0.284         3.277 \r\n 1999          343           0.528         7.09          0.352         0 \r\n 1999          344           9.059         4.292        -3.551         0 \r\n 1999          345           8.235         5.213        -5.422         0 \r\n 1999          346           4.061         7.56         -3.322         0 \r\n 1999          347           6.179         3.037        -6.602         0 \r\n 1999          348           3.839         3.247        -0.73          0 \r\n 1999          349           2.736         1.376        -4.203         0 \r\n 1999          350           6.834        -4.029        -11.37         2.5 \r\n 1999          351           3.584        -3.896        -6.612         1 \r\n 1999          352           5.323        -2.376        -15.15         0 \r\n 1999          353           3.591         0.427        -5.378         0 \r\n 1999          354           8.843        -4.79         -17.34         2 \r\n 1999          355           7.955        -11.6         -22.41         0 \r\n 1999          356           8.726        -8.44         -17.14         1 \r\n 1999          357           6.596        -3.139        -20.53         0 \r\n 1999          358           5.97         -6.423        -16.52         2 \r\n 1999          359           8.597         2.505        -13.59         0 \r\n 1999          360           8.846         2.706        -5.822         0 \r\n 1999          361           4.393        -2.69         -12.8          0 \r\n 1999          362           6.036         5.221        -11.88         0 \r\n 1999          363           8.679         13.57        -3.072         0 \r\n 1999          364           6.818         9.61         -1.966         0 \r\n 1999          365           9.009         7.87         -5.132         0 \r\n 2000          1             5.965         9.32         -1.499         0 \r\n 2000          2             4.658         14.37         0.804         0 \r\n 2000          3             0.796         1.668        -3.589         3.81 \r\n 2000          4             6.084        -3.56         -15.51         0 \r\n 2000          5             6.775        -1.319        -17.84         0 \r\n 2000          6             9.308         1.013        -7.09          0 \r\n 2000          7             9.249        -0.161        -11.57         0 \r\n 2000          8             7.473         7.31         -3.005         5.232 \r\n 2000          9             1.815         6.622         3.762         0 \r\n 2000          10            8.954         10.22         0.614         0 \r\n 2000          11            6.918         1.468        -5.106         0 \r\n 2000          12            5.599         1.791        -5.532         0 \r\n 2000          13            8.819        -2.08         -10.22         0 \r\n 2000          14            5.265         1.365        -12.61         0 \r\n 2000          15            4.833         7.91         -2.233         0 \r\n 2000          16            6.045         1.022        -5.833         0 \r\n 2000          17            0.905        -3.252        -4.462         0 \r\n 2000          18            6.821         4.507        -5.528         0 \r\n 2000          19            2.282        -2.499        -11.99         6.477 \r\n 2000          20            10.932       -11.95        -21.76         0 \r\n 2000          21            10.551       -7.94         -18.8          3.988 \r\n 2000          22            7.356        -1.917        -10.73         0 \r\n 2000          23            10.279       -8.37         -18.8          0 \r\n 2000          24            10.811       -0.873        -24.98         0 \r\n 2000          25            9.707        -4.858        -17.55         0 \r\n 2000          26            11.772       -9.69         -21.57         0 \r\n 2000          27            11.669       -5.61         -21.61         0 \r\n 2000          28            9.692        -6.028        -16.41         0 \r\n 2000          29            7.273        -3.751        -6.945         5.156 \r\n 2000          30            8.681        -3.732        -10.22         0 \r\n 2000          31            11.911       -0.928        -15.56         0 \r\n 2000          32            10.28        -2.985        -14.47         0 \r\n 2000          33            10.09         1.62         -13.63         0 \r\n 2000          34            6.535         3.343        -5.862         0 \r\n 2000          35            10.914        0.178        -6.772         0 \r\n 2000          36            12.281        0.169        -6.749         0 \r\n 2000          37            8.334         3.01         -7.04          0 \r\n 2000          38            11.236       -0.71         -7.63          0 \r\n 2000          39            8.805         2.428        -8.78          0 \r\n 2000          40            11.631        8.47         -0.249         0 \r\n 2000          41            5.783         3.62         -2.203         0 \r\n 2000          42            9.038        -1.823        -7.17          0 \r\n 2000          43            7.212         1.193        -7.95          0 \r\n 2000          44            2.666         0.51         -2.509         0 \r\n 2000          45            5.696        -0.334        -4.046         0 \r\n 2000          46            11.485        11.75        -4.028         0 \r\n 2000          47            13.719        1.716        -5.697         0 \r\n 2000          48            4.916         1.526        -5.939         15.723 \r\n 2000          49            4.116        -0.881        -4.905         7.95 \r\n 2000          50            10.712       -1.937        -9.64          0 \r\n 2000          51            15.396       -0.667        -11.18         0 \r\n 2000          52            13.132        8.85         -5.308         0 \r\n 2000          53            10.447        13.7          3.152         0 \r\n 2000          54            6.073         13.94         4.87          4.826 \r\n 2000          55            5.005         13.96         6.605         6.401 \r\n 2000          56            6.308         20.94         6.461         6.756 \r\n 2000          57            9.591         16.39         4.995         0 \r\n 2000          58            16.584        12.03         0.125         0 \r\n 2000          59            15.888        16.89        -1.926         0 \r\n 2000          60            9.042         16.89         6.96          5.715 \r\n 2000          61            16.367        9.37         -0.246         0 \r\n 2000          62            14.757        6.975        -3.597         0 \r\n 2000          63            12.043        7.9          -2.926         0 \r\n 2000          64            16.92         19.07        -3.748         0 \r\n 2000          65            17.55         20.33         1.62          0 \r\n 2000          66            15.29         22.1          2.171         0 \r\n 2000          67            15.385        25.82         10.55         0 \r\n 2000          68            13.902        24.3          12.6          0 \r\n 2000          69            6.845         13.52        -0.739         0 \r\n 2000          70            4.524         2.238        -1.29          0 \r\n 2000          71            17.606        6.81         -3.263         0 \r\n 2000          72            14.498        11.38        -6.661         0 \r\n 2000          73            6.856         7.89         -1.014         0 \r\n 2000          74            14.832        14.87        -3.215         0 \r\n 2000          75            7.356         18.84         1.715         0 \r\n 2000          76            19.578        7.23         -5.035         0 \r\n 2000          77            20.534        7.51         -8.44          0 \r\n 2000          78            3.51          2.362        -0.702         8.382 \r\n 2000          79            2.591         2.752         0.188         3.581 \r\n 2000          80            3.201         6.176         1.051         0 \r\n 2000          81            6.721         11.5          4.966         0 \r\n 2000          82            8.519         12.99         7.75          0 \r\n 2000          83            17.613        19.7          5.596         0 \r\n 2000          84            13.037        21.3          9.45          0 \r\n 2000          85            22.213        17.88         3.791         0 \r\n 2000          86            17.617        22.21         0.447         0 \r\n 2000          87            17.355        15.18         1.099         0 \r\n 2000          88            22.529        11.82        -2.766         0 \r\n 2000          89            22.731        14.34        -3.892         0 \r\n 2000          90            21.356        15.96        -1.632         0 \r\n 2000          91            21.629        19.67        -1.804         0 \r\n 2000          92            3.323         12.34         6.453         1.524 \r\n 2000          93            19.745        16.89         2.115         0 \r\n 2000          94            11.48         9.95          2.381         0 \r\n 2000          95            24.764        10.96        -2.118         0 \r\n 2000          96            20.641        26.93        -0.055         0 \r\n 2000          97            15.98         18.31         5.597         0 \r\n 2000          98            2.923         9.28         -1.233         0.508 \r\n 2000          99            25.809        8.43         -4.654         6.35 \r\n 2000          100           23.745        17.39         0.35          0 \r\n 2000          101           7.223         10.8          2.761         9.398 \r\n 2000          102           10.49         8.72         -1.262         0 \r\n 2000          103           23.316        12.77        -3.052         0 \r\n 2000          104           25.017        20.14         1.373         0 \r\n 2000          105           24.105        25.13         5.235         0 \r\n 2000          106           24.136        24.07         8.71          0 \r\n 2000          107           8.841         18.99         5.931         20.066 \r\n 2000          108           5.832         8.31          4.047         0.254 \r\n 2000          109           20.301        18.28         7.29          1.27 \r\n 2000          110           9.196         22.84         10.51         10.16 \r\n 2000          111           3.795         17.82         4.296         29.972 \r\n 2000          112           27.352        15.79         3.038         0 \r\n 2000          113           25.366        21.99         1.623         0 \r\n 2000          114           11.076        18.01         8.55          0 \r\n 2000          115           23.826        19.86         7.27          0 \r\n 2000          116           28.044        19.98         2.447         0 \r\n 2000          117           27.199        22.44         5.196         0 \r\n 2000          118           18.671        19.43         11.61         0.254 \r\n 2000          119           22.436        22.52         8.68          0 \r\n 2000          120           20.946        17.35         7.47          0 \r\n 2000          121           25.223        25.15         5.827         0 \r\n 2000          122           9.769         21.13         8.2           0 \r\n 2000          123           27.053        24.4          5.642         0 \r\n 2000          124           18.196        26.81         10.09         0 \r\n 2000          125           21.657        27.25         15.22         0 \r\n 2000          126           22.215        28.1          13.98         0 \r\n 2000          127           22.362        28.88         15.43         0 \r\n 2000          128           20.211        28.46         17.61         0 \r\n 2000          129           14.628        28.61         16.37         1.524 \r\n 2000          130           3.253         16.41         8.92          34.036 \r\n 2000          131           16.66         19.91         5.863         0 \r\n 2000          132           10.722        29.64         14.97         0 \r\n 2000          133           7.926         23.66         11.79         0 \r\n 2000          134           21.018        13.76         4.506         0 \r\n 2000          135           24.31         20.94         2.05          0 \r\n 2000          136           19.494        23.49         6.613         0 \r\n 2000          137           16.631        24.41         14.57         0.508 \r\n 2000          138           11.751        25.62         16.59         5.08 \r\n 2000          139           15.765        28.95         8.58          9.144 \r\n 2000          140           19.936        17.1          7.46          0 \r\n 2000          141           26.805        20.86         6.189         0 \r\n 2000          142           15.043        21.09         10            1.524 \r\n 2000          143           20.032        29.04         12.9          3.048 \r\n 2000          144           21.141        28.13         15.03         0.254 \r\n 2000          145           26.899        28.81         13.59         0 \r\n 2000          146           29.175        24.57         7.87          0 \r\n 2000          147           2.95          17.96         13.17         22.098 \r\n 2000          148           9.285         21.08         14.32         0.254 \r\n 2000          149           4.823         16.62         11.72         0 \r\n 2000          150           15.749        20.72         12.12         0 \r\n 2000          151           11.689        30.67         15.58         0 \r\n 2000          152           13.595        30.8          19.9          18.288 \r\n 2000          153           27.156        32.77         17.03         2.032 \r\n 2000          154           23.662        22.33         13.29         1.016 \r\n 2000          155           30.135        23.92         10.31         0 \r\n 2000          156           6.505         18.09         13.31         0.254 \r\n 2000          157           13.755        18.77         10.83         0 \r\n 2000          158           30.51         23.58         8.08          0.254 \r\n 2000          159           28.407        26.54         10.53         0 \r\n 2000          160           29.296        32.07         16.36         0 \r\n 2000          161           28.813        31.07         15.51         0 \r\n 2000          162           21.439        30.03         21.08         0 \r\n 2000          163           14.05         27.82         21.68         1.016 \r\n 2000          164           17.142        27.14         18.57         20.828 \r\n 2000          165           11.63         29.88         18.01         35.56 \r\n 2000          166           14.382        24.25         15.35         2.032 \r\n 2000          167           29.915        27.01         13.9          0 \r\n 2000          168           18.314        23.83         13.04         1.524 \r\n 2000          169           26.656        20.85         9.24          0 \r\n 2000          170           31.362        24.8          10.52         0 \r\n 2000          171           27.161        26.79         11.53         0.254 \r\n 2000          172           14.147        26.72         20.08         2.54 \r\n 2000          173           28.318        26.55         15.97         0 \r\n 2000          174           30.785        29.75         16.35         0 \r\n 2000          175           11.858        29.63         15.24         16.764 \r\n 2000          176           6.064         21.3          16.99         19.558 \r\n 2000          177           24.832        28.01         15.59         9.906 \r\n 2000          178           23.489        25.92         14.9          0 \r\n 2000          179           29.692        25.28         13.31         0 \r\n 2000          180           11.378        22.43         13.3          1.27 \r\n 2000          181           30.186        25.21         13.61         0 \r\n 2000          182           27.942        27.11         14.89         0 \r\n 2000          183           25.8          27.95         13.91         0 \r\n 2000          184           24.885        31.93         19.77         40.64 \r\n 2000          185           17.129        27.27         19.52         0 \r\n 2000          186           7.301         25.14         20.33         32.512 \r\n 2000          187           10.62         27.96         20.73         1.27 \r\n 2000          188           14.81         30.56         20            0 \r\n 2000          189           26.535        29.67         17.81         0 \r\n 2000          190           24.342        31.83         20.78         0 \r\n 2000          191           13.204        28.91         21.87         0 \r\n 2000          192           12.21         28.59         20.82         16.002 \r\n 2000          193           13.228        27.84         21.1          0.254 \r\n 2000          194           17.434        29.33         20.78         2.794 \r\n 2000          195           28.975        31.33         18.34         0 \r\n 2000          196           29.064        30.55         19.59         0 \r\n 2000          197           27.434        30.49         16.98         0 \r\n 2000          198           21.486        29.91         17.36         0 \r\n 2000          199           21.78         29.14         17.33         0 \r\n 2000          200           10.283        21.95         14.76         7.366 \r\n 2000          201           16.14         23.15         14.81         0 \r\n 2000          202           20.041        25.24         14.2          0 \r\n 2000          203           26.428        24.42         11.82         0 \r\n 2000          204           25.147        26.64         9.79          0 \r\n 2000          205           26.396        26.24         11.94         0 \r\n 2000          206           25.335        26.2          13.21         0 \r\n 2000          207           18.432        26.32         13.11         0 \r\n 2000          208           13.217        27.77         17.13         13.208 \r\n 2000          209           26.169        30.01         17.29         0 \r\n 2000          210           23.567        29.23         16.03         0 \r\n 2000          211           11.43         25.11         16.89         1.016 \r\n 2000          212           11.897        25.73         16.95         14.732 \r\n 2000          213           23.044        29.07         16.18         0 \r\n 2000          214           23.652        30.09         18.26         0 \r\n 2000          215           26.524        29.34         17.65         0 \r\n 2000          216           21.288        24.7          15.32         0.508 \r\n 2000          217           25.944        26.44         15.47         0 \r\n 2000          218           12.148        29.53         16.4          4.318 \r\n 2000          219           17.779        31.6          17.63         0 \r\n 2000          220           26.098        30.46         16.65         0 \r\n 2000          221           19.64         29.4          19.53         10.668 \r\n 2000          222           25.345        30.64         18.4          19.812 \r\n 2000          223           26.312        29.9          15.89         0 \r\n 2000          224           24.806        30.72         16.18         0 \r\n 2000          225           25.033        29.06         16.76         0 \r\n 2000          226           15.623        28.58         19.71         4.826 \r\n 2000          227           24.008        31.92         19.51         0 \r\n 2000          228           23.283        32.64         18.78         0 \r\n 2000          229           23.477        27.55         16.06         0 \r\n 2000          230           17.494        29.75         16.03         0.254 \r\n 2000          231           21.623        25.72         12.85         0 \r\n 2000          232           15.811        23.37         11.03         0.254 \r\n 2000          233           18.221        24.48         15.57         0 \r\n 2000          234           15.685        26.88         15.22         0 \r\n 2000          235           11.779        28.2          18.2          0.508 \r\n 2000          236           13.171        30.43         18.1          1.778 \r\n 2000          237           23.035        29.75         17.89         0.254 \r\n 2000          238           21.322        30.45         17.21         0 \r\n 2000          239           16.198        31.62         20.33         0.508 \r\n 2000          240           10.836        26.89         19.19         0 \r\n 2000          241           16.839        32.05         20.09         1.27 \r\n 2000          242           13.135        29.51         21.53         0 \r\n 2000          243           15.021        32.09         21.35         0 \r\n 2000          244           21.641        37.01         23.81         0 \r\n 2000          245           16.502        35.21         22.67         0 \r\n 2000          246           22.057        37.44         21.3          0 \r\n 2000          247           11.713        31.29         20.62         0 \r\n 2000          248           13.995        22.6          12.35         0 \r\n 2000          249           23.771        23.71         9.73          0 \r\n 2000          250           22.793        26.41         8.13          0 \r\n 2000          251           18.805        31.51         14.09         0 \r\n 2000          252           18.452        32.17         19.42         0 \r\n 2000          253           14.569        30.18         18.63         0 \r\n 2000          254           15.319        33.63         22.03         0 \r\n 2000          255           18.84         35.81         19.01         0.762 \r\n 2000          256           20.946        23.78         9.98          0 \r\n 2000          257           19.892        29.89         8.7           0 \r\n 2000          258           15.762        26.04         9.73          9.144 \r\n 2000          259           20.439        20.03         5.617         0 \r\n 2000          260           19.811        23.27         2.87          0 \r\n 2000          261           18.913        31.23         11.12         0 \r\n 2000          262           18.218        32.09         13.3          0 \r\n 2000          263           6.997         26.67         16.25         2.794 \r\n 2000          264           4.759         16.89         7.94          21.082 \r\n 2000          265           19.623        18.96         4.209         0 \r\n 2000          266           6.027         23.9          10.94         37.338 \r\n 2000          267           3.257         15.62         11.08         17.018 \r\n 2000          268           2.534         11.17         7.22          3.81 \r\n 2000          269           14.648        16.67         5.588         6.604 \r\n 2000          270           18.301        21.34         2.744         0 \r\n 2000          271           17.056        24.75         6.038         0 \r\n 2000          272           16.838        22.98         8.43          0 \r\n 2000          273           16.828        25.53         8.7           0 \r\n 2000          274           12.259        25.62         13.17         0 \r\n 2000          275           15.002        28.49         15.01         0 \r\n 2000          276           10.316        24.42         9.83          0 \r\n 2000          277           13.115        24.67         8.18          19.304 \r\n 2000          278           15.317        18.38         8.58          4.064 \r\n 2000          279           1.899         12.19         6.232         5.334 \r\n 2000          280           12.674        7.69         -1.491         0 \r\n 2000          281           12.31         7.62         -3.852         0 \r\n 2000          282           17.176        8.82         -2.764         0 \r\n 2000          283           16.811        13.53        -3.592         0 \r\n 2000          284           16.799        17.32        -2.262         0 \r\n 2000          285           16.871        20.1         -1.454         0 \r\n 2000          286           15.166        24.89         9.21          0 \r\n 2000          287           10.853        26.4          12.79         0 \r\n 2000          288           13.494        26.05         13.91         0 \r\n 2000          289           12.905        21.84         8.21          0 \r\n 2000          290           6.08          15.55         3.542         0 \r\n 2000          291           10.751        18.72         3.217         0 \r\n 2000          292           14.788        24.36         4.64          0 \r\n 2000          293           14.64         27            7.3           0 \r\n 2000          294           12.986        26.03         9.96          0 \r\n 2000          295           12.663        25.08         6.395         0 \r\n 2000          296           3.508         16.98         9.45          1.016 \r\n 2000          297           4.354         20.63         13.56         8.382 \r\n 2000          298           8.879         23.06         13.03         0.254 \r\n 2000          299           9.852         25.26         15.15         0 \r\n 2000          300           8.191         23.26         14.09         0 \r\n 2000          301           12.411        20.91         8.34          0 \r\n 2000          302           8.564         15.09         9.09          0 \r\n 2000          303           8.057         16.47         5.887         0 \r\n 2000          304           8.465         21.95         10.44         0 \r\n 2000          305           10.146        23.36         9.82          0 \r\n 2000          306           9.91          26.71         14.82         1.524 \r\n 2000          307           12.973        19.06         7.14          0 \r\n 2000          308           11.066        13.34         0.998         0 \r\n 2000          309           9.663         15.96         0.351         0 \r\n 2000          310           9.897         17.16         2.057         0 \r\n 2000          311           0.978         14.62         6.75          8.509 \r\n 2000          312           3.433         6.813         1.405         0 \r\n 2000          313           7.25          3.151        -3.339         8.788 \r\n 2000          314           2.124         1.387        -0.702         0 \r\n 2000          315           2.883         0.068        -2.215         0 \r\n 2000          316           1.747         4.21         -3.127         0 \r\n 2000          317           1.444         5.721        -0.455         0 \r\n 2000          318           2.708        -0.037        -2.528         0 \r\n 2000          319           3.551         1.359        -6.986         0 \r\n 2000          320           9.951         7.67         -7.9           0 \r\n 2000          321           2.776         6.541        -4.864         0 \r\n 2000          322           4.987        -1.481        -8.86          0 \r\n 2000          323           2.779        -0.987        -8.55          0 \r\n 2000          324           5.911         5.753        -6.172         0 \r\n 2000          325           7.652        -4.49         -11.39         0 \r\n 2000          326           6.392        -2.128        -14.65         0 \r\n 2000          327           10.209        2.267        -13.12         0 \r\n 2000          328           9.996         7.6          -11.05         0 \r\n 2000          329           8.885         9.79         -9.2           0 \r\n 2000          330           3.013         7.82         -1.319         0 \r\n 2000          331           6.886         4.373        -2.7           0 \r\n 2000          332           7.792         7.68         -2.986         0 \r\n 2000          333           6.253         8.45         -7.11          0 \r\n 2000          334           1.655         1.805        -0.103         3.5 \r\n 2000          335           2.701         1.612        -1.129         0 \r\n 2000          336           2.681         1.063        -1.814         0 \r\n 2000          337           6.882         1.374        -7.18          1 \r\n 2000          338           9.49          1.478        -11.15         0 \r\n 2000          339           7.454         5.138        -5.852         0 \r\n 2000          340           6.675        -5.842        -14.01         0 \r\n 2000          341           2.89         -4            -11.47         0 \r\n 2000          342           5.578         9.44         -4.209         0 \r\n 2000          343           4.698        -0.055        -12.43         0 \r\n 2000          344           3.48         -0.33         -11.41         0 \r\n 2000          345           2.23          0.143        -11.53         6.655 \r\n 2000          346           3.025        -11.47        -17.05         4.978 \r\n 2000          347           9.355        -16.84        -25.16         0 \r\n 2000          348           3.679        -10.75        -22.05         3.2 \r\n 2000          349           5.987        -6.989        -13.82         0 \r\n 2000          350           4.24         -0.805        -14.1          0 \r\n 2000          351           4.656         0.05         -17.86         0 \r\n 2000          352           8.611        -14.85        -20.15         0 \r\n 2000          353           4.138        -10.99        -16.37         0 \r\n 2000          354           9.505        -14.61        -23.04         0 \r\n 2000          355           4.115        -8.21         -23.06         3.048 \r\n 2000          356           9.134        -11.97        -19.96         0 \r\n 2000          357           9.671        -14.04        -23.24         0 \r\n 2000          358           5.681        -4.748        -18.04         0 \r\n 2000          359           9.86         -17.72        -26.06         0 \r\n 2000          360           5.453        -12.55        -26.58         0 \r\n 2000          361           5.712        -5.68         -18.09         0 \r\n 2000          362           9.287        -12.07        -20.8          0 \r\n 2000          363           3.668        -8.81         -17.64         5.359 \r\n 2000          364           6.961        -8.08         -12.76         0 \r\n 2000          365           6.79         -8.21         -12.34         0 \r\n 2000          366           6.791        -11.35        -20.48         0 \r\n 2001          1             7.854        -11.4         -23.04         0 \r\n 2001          2             9.652        -10.32        -17.54         0 \r\n 2001          3             6.911        -0.112        -10.38         0 \r\n 2001          4             6.091         3.538        -5.584         0 \r\n 2001          5             9.867         2.21         -10.13         0 \r\n 2001          6             9.608         5.126        -11.98         0 \r\n 2001          7             5.322        -0.888        -7.79          0 \r\n 2001          8             7.337        -6.109        -15.24         0 \r\n 2001          9             8.571        -5.448        -19.18         0 \r\n 2001          10            9.683         2.858        -9.5           0 \r\n 2001          11            3.601         1.517        -3.339         3.226 \r\n 2001          12            3.616         0.624        -1.489         0 \r\n 2001          13            6.004         1.555        -1.413         10.287 \r\n 2001          14            2.845         2.239         0.229         0 \r\n 2001          15            4.932         0.7          -2.871         0 \r\n 2001          16            4.136        -2.814        -9.35          0 \r\n 2001          17            10.859       -3.693        -11.24         0 \r\n 2001          18            9.382         0.349        -9.16          0 \r\n 2001          19            5.23         -1.565        -14.47         0 \r\n 2001          20            11.745       -8.14         -21.19         0 \r\n 2001          21            11.251       -4.896        -12.71         0 \r\n 2001          22            11.226       -1.822        -16.64         0 \r\n 2001          23            11.045        0.881        -6.506         0 \r\n 2001          24            12.114       -4.034        -13.15         0 \r\n 2001          25            11.717       -4.426        -17.59         0 \r\n 2001          26            5.304         0.339        -6.165         0 \r\n 2001          27            12.73        -5.358        -13.23         0 \r\n 2001          28            4.367        -0.624        -10.99         21.184 \r\n 2001          29            2.032         2.981        -0.691         6.325 \r\n 2001          30            6.532         5.205        -0.056         0 \r\n 2001          31            5.282         0.446        -7.46          0 \r\n 2001          32            9.42         -4.787        -19.3          0 \r\n 2001          33            11.461       -9.03         -21.48         0 \r\n 2001          34            8.061         0.521        -11            0 \r\n 2001          35            6.391         0.994        -4.712         0 \r\n 2001          36            7.741         2.637        -6.94          0 \r\n 2001          37            13.95         1.554        -7.9           0 \r\n 2001          38            5.066         1.678        -10.02         8.509 \r\n 2001          39            3.808         5.878         0.434         37.871 \r\n 2001          40            2.995         0.463        -12.92         0 \r\n 2001          41            11.95        -8.61         -16.08         0 \r\n 2001          42            12.08        -2.499        -13.55         0 \r\n 2001          43            12.833        3.325        -7.3           0 \r\n 2001          44            3.642         2.677        -0.191         0 \r\n 2001          45            2.175         0.775        -5.279         0 \r\n 2001          46            5.338        -1.604        -5.454         0 \r\n 2001          47            12.372       -4.324        -13.83         0 \r\n 2001          48            14.345       -10.41        -16.43         0 \r\n 2001          49            14.619        0.13         -11.41         0 \r\n 2001          50            14.882        6.427        -1.413         0 \r\n 2001          51            10.413       -1.357        -10.7          0 \r\n 2001          52            11.897       -6.693        -14.52         0 \r\n 2001          53            9.393        -1.394        -8.53          0 \r\n 2001          54            13.215       -0.007        -13.09         30.963 \r\n 2001          55            0.981         8.72         -0.036         9.83 \r\n 2001          56            12.846        9.23         -3.031         0 \r\n 2001          57            15.188       -1.584        -5.556         5.359 \r\n 2001          58            10.935       -5.262        -12.846        0 \r\n 2001          59            17.997       -3.517        -15.832        0 \r\n 2001          60            6.529        -0.572        -8.521         0 \r\n 2001          61            12.814        3.474        -2.741         0 \r\n 2001          62            17.097        6.185        -5.323         0 \r\n 2001          63            12.088        0.572        -5.141         0 \r\n 2001          64            18.511       -0.873        -7.221         0 \r\n 2001          65            18.562        2.415        -8.922         0 \r\n 2001          66            10.684        2.748        -4.753         0 \r\n 2001          67            10.66         0.743        -3.501         0 \r\n 2001          68            18.989        2.92         -5.869         3.988 \r\n 2001          69            10.513        10.188       -4.443         0 \r\n 2001          70            8.523         5.3          -4.153         3.302 \r\n 2001          71            3.248         8.031        -0.706         0 \r\n 2001          72            9.695         6.44         -0.649         0 \r\n 2001          73            6.843         9.314        -1.639         13.259 \r\n 2001          74            1.38          5.766        -0.577         16.459 \r\n 2001          75            10.372        0.013        -2.018         6.172 \r\n 2001          76            20.886        3.089        -7.502         0 \r\n 2001          77            20.675        7.042        -9.717         0 \r\n 2001          78            18.369        8.94         -2.988         0 \r\n 2001          79            21.637        12.35        -3.029         0 \r\n 2001          80            13.318        12.86        -1.516         0 \r\n 2001          81            18.229        15.02         2.295         0 \r\n 2001          82            7.649         5.706        -2.66          0 \r\n 2001          83            21.366       -1.851        -7.04          0 \r\n 2001          84            15.93        -3.051        -8.91          0 \r\n 2001          85            22.871        2.201        -10.84         0 \r\n 2001          86            22.935        6.985        -9.61          0 \r\n 2001          87            8.25          6.09         -3.46          0 \r\n 2001          88            9.072         9.52          0.946         0 \r\n 2001          89            10.522        12.13         1.811         0 \r\n 2001          90            8.241         7.95         -1.242         0 \r\n 2001          91            21.83         11.56        -4.074         0 \r\n 2001          92            22.881        19.03         0.851         0 \r\n 2001          93            16.648        13.52         0.822         0 \r\n 2001          94            22.013        18.79         1.601         0 \r\n 2001          95            6.244         16.31         8.11          6.604 \r\n 2001          96            4.866         20.49         11.98         11.43 \r\n 2001          97            24.679        25.09         8.44          0 \r\n 2001          98            23.744        28.66         3.238         0 \r\n 2001          99            17.126        25.12         11.15         6.096 \r\n 2001          100           10.191        16.93         8.31          4.572 \r\n 2001          101           8.793         22.08         14.65         0.254 \r\n 2001          102           9.961         14.66         6.185         0 \r\n 2001          103           25.055        18.24         2.894         0 \r\n 2001          104           24.221        20.72         6.996         12.192 \r\n 2001          105           13.945        17.23         2.066         1.524 \r\n 2001          106           16.406        4.756        -0.702         0 \r\n 2001          107           26.286        12.09        -1.849         0 \r\n 2001          108           25.802        15.53        -3.537         0 \r\n 2001          109           17.73         21.26         4.88          0 \r\n 2001          110           18.529        27.28         14.75         0 \r\n 2001          111           23.236        27.04         12.81         0.762 \r\n 2001          112           17.186        26.01         10.99         32.258 \r\n 2001          113           10.644        19.91         6.464         0.254 \r\n 2001          114           27.063        17.64         2.019         2.032 \r\n 2001          115           27.137        20.97         7.16          5.08 \r\n 2001          116           24.262        26.53         8.45          0 \r\n 2001          117           26.231        26.6          11.51         0 \r\n 2001          118           21.113        22.25         8.52          7.874 \r\n 2001          119           26.462        27.33         9.9           0 \r\n 2001          120           19.632        27.23         14.43         1.016 \r\n 2001          121           23.97         28.72         16.19         1.016 \r\n 2001          122           16.963        27.81         17.12         0 \r\n 2001          123           12.213        26.31         16.21         44.45 \r\n 2001          124           11.917        20.81         13.8          0.254 \r\n 2001          125           12.078        22.93         10.73         8.89 \r\n 2001          126           11.642        22.27         15.49         0.762 \r\n 2001          127           26.427        20.24         10.39         0.762 \r\n 2001          128           24.395        22.74         8.75          0 \r\n 2001          129           27.776        27.31         11.76         0 \r\n 2001          130           19.315        27.05         14.57         30.48 \r\n 2001          131           23.324        22.82         11.64         3.302 \r\n 2001          132           28.389        19.79         7.35          0 \r\n 2001          133           8.56          15.59         11.12         1.27 \r\n 2001          134           26.524        28.53         12.01         11.176 \r\n 2001          135           25.313        30.01         19.4          0 \r\n 2001          136           28.369        31.77         19.56         0 \r\n 2001          137           7.498         23.31         18.36         17.526 \r\n 2001          138           26.564        25.71         15.46         0 \r\n 2001          139           29.229        26.94         12.25         0 \r\n 2001          140           15.469        25.34         14.38         8.128 \r\n 2001          141           24.209        18.86         8.89          2.54 \r\n 2001          142           19.009        15.94         7.15          0 \r\n 2001          143           14.094        13.15         5.772         1.27 \r\n 2001          144           10.879        13.78         4.449         8.89 \r\n 2001          145           17.741        15.76         5.964         0 \r\n 2001          146           11.666        16.46         9.71          21.336 \r\n 2001          147           22.295        19.77         8.77          0 \r\n 2001          148           18.761        21.3          9.25          1.778 \r\n 2001          149           28.929        24.44         8.61          0 \r\n 2001          150           5.449         17.49         10.64         0.508 \r\n 2001          151           2.078         10.64         7.49          33.02 \r\n 2001          152           24.961        21.43         8.14          3.048 \r\n 2001          153           15.09         17.25         9.33          0 \r\n 2001          154           18.362        16.96         7.67          0 \r\n 2001          155           18.153        18.46         10.31         2.032 \r\n 2001          156           10.022        21.16         9.85          13.462 \r\n 2001          157           8.567         20.05         12.96         1.524 \r\n 2001          158           19.194        25.02         12.51         0 \r\n 2001          159           23.121        26.55         12.07         0 \r\n 2001          160           29.596        28.36         14.04         0 \r\n 2001          161           26.056        29.71         16.17         0 \r\n 2001          162           28.753        33.37         20.69         0 \r\n 2001          163           12.575        30.05         21.24         0 \r\n 2001          164           28.279        32.32         21.84         0 \r\n 2001          165           9.724         29.82         19            14.478 \r\n 2001          166           26.157        24.49         17.05         1.524 \r\n 2001          167           29.199        28.19         16.7          0 \r\n 2001          168           27.191        30.42         15.39         0.508 \r\n 2001          169           27.809        31.75         20.55         0 \r\n 2001          170           8.304         24.43         15.71         0.508 \r\n 2001          171           10.585        22.76         13.99         12.192 \r\n 2001          172           18.144        24.05         13.77         1.524 \r\n 2001          173           24.81         23.55         12.89         0 \r\n 2001          174           31.136        24.86         10.49         0 \r\n 2001          175           26.45         27.73         13.9          0 \r\n 2001          176           28.952        30.29         18.19         0 \r\n 2001          177           25.348        29.93         18.51         0 \r\n 2001          178           24.359        30.06         16.35         0 \r\n 2001          179           26.655        29.21         17.45         0 \r\n 2001          180           28.21         29.47         17.49         0 \r\n 2001          181           27.067        31.65         18.07         0 \r\n 2001          182           22.338        25.17         14.91         0 \r\n 2001          183           24.218        24.29         13.73         0 \r\n 2001          184           17.464        28.36         18.59         6.35 \r\n 2001          185           29.444        31.13         18.7          0 \r\n 2001          186           31.055        26.81         15.04         0 \r\n 2001          187           25.607        28.64         13.64         0 \r\n 2001          188           23.674        34.31         23.26         0 \r\n 2001          189           8.533         30.27         20.85         0.254 \r\n 2001          190           28.621        33.38         20.02         0 \r\n 2001          191           27.202        33.3          18.44         0 \r\n 2001          192           29.923        27.75         16.87         0 \r\n 2001          193           25.812        28.37         17.04         0 \r\n 2001          194           29.046        29.63         15.19         0 \r\n 2001          195           29.916        30.2          12.4          0 \r\n 2001          196           25.105        28.9          15.92         0 \r\n 2001          197           23.278        30.49         18.07         0 \r\n 2001          198           20.457        31.68         20.89         0 \r\n 2001          199           14.634        28.97         22.31         0 \r\n 2001          200           14.461        27.92         20.75         28.956 \r\n 2001          201           18.39         31.12         20.73         0 \r\n 2001          202           22.465        35.38         23.55         0 \r\n 2001          203           25.325        34.95         23.52         0 \r\n 2001          204           20.874        32.9          23.69         0 \r\n 2001          205           19.7          31.55         20.35         23.368 \r\n 2001          206           8.124         25.39         19.86         3.302 \r\n 2001          207           23.088        26.54         16.62         0 \r\n 2001          208           16.982        25.17         16.06         0 \r\n 2001          209           11.987        28.16         20.76         0.762 \r\n 2001          210           28.402        32.01         18.5          0 \r\n 2001          211           26.988        32.41         18.6          0 \r\n 2001          212           26.669        33.39         23.07         0 \r\n 2001          213           22.299        33.46         24.02         0 \r\n 2001          214           17.335        32.8          23.05         4.572 \r\n 2001          215           15.595        30.13         20.97         0 \r\n 2001          216           26.142        31.76         17.99         0 \r\n 2001          217           25.811        31.32         20.6          0 \r\n 2001          218           26.416        33.63         19.57         0 \r\n 2001          219           26.239        33.9          19.84         0 \r\n 2001          220           23.035        32.78         18.6          0.254 \r\n 2001          221           22.036        35.29         20.41         8.636 \r\n 2001          222           26.757        25.42         15.11         0 \r\n 2001          223           26.019        26.75         13.19         0 \r\n 2001          224           24.936        29.49         13.09         0 \r\n 2001          225           25.144        26.54         12.89         0 \r\n 2001          226           21.286        24.42         9.52          0 \r\n 2001          227           4.731         20.77         16.21         2.286 \r\n 2001          228           18.144        24.99         14.84         0.508 \r\n 2001          229           19.779        25.34         13.34         0 \r\n 2001          230           16.051        24.53         14.64         8.382 \r\n 2001          231           19.736        24.94         13.2          0 \r\n 2001          232           25.107        25.99         10.97         0 \r\n 2001          233           16.867        29.8          15.39         0 \r\n 2001          234           13.05         30.99         19.66         1.27 \r\n 2001          235           16.761        29.52         18.84         0 \r\n 2001          236           6.876         25.01         19.53         2.54 \r\n 2001          237           12.914        26.77         18.73         1.016 \r\n 2001          238           23.88         29.78         16.22         0.254 \r\n 2001          239           20.585        29.79         16.98         0 \r\n 2001          240           24.067        27.8          13.72         0 \r\n 2001          241           22.33         28.4          13.05         0 \r\n 2001          242           15.394        29.69         16.25         0 \r\n 2001          243           23.726        25.59         12.42         0 \r\n 2001          244           19.536        23.67         9.71          0 \r\n 2001          245           18.986        28.01         11.18         0 \r\n 2001          246           20.465        32.46         18.13         0 \r\n 2001          247           20.958        27.43         11.96         0 \r\n 2001          248           21.254        27.79         12.43         0 \r\n 2001          249           13.532        29.28         16.84         0 \r\n 2001          250           15.364        30.26         18.78         5.08 \r\n 2001          251           6.977         22.67         14.57         1.016 \r\n 2001          252           8.367         19.2          10.43         6.096 \r\n 2001          253           20.701        25.26         10.06         0 \r\n 2001          254           20.669        27.47         8.98          0 \r\n 2001          255           20.281        28.84         11.53         0 \r\n 2001          256           7.901         20.63         12.03         2.54 \r\n 2001          257           16.538        18.1          7.57          0 \r\n 2001          258           13.695        19.94         11.12         0 \r\n 2001          259           8.286         20.33         11.73         0.254 \r\n 2001          260           9.835         22            13.54         0.508 \r\n 2001          261           3.57          16.49         11.69         55.626 \r\n 2001          262           10.034        20.62         11.42         0.254 \r\n 2001          263           11.597        24.48         9.6           11.938 \r\n 2001          264           17.785        21.78         11.04         0 \r\n 2001          265           16.325        23.89         8.81          0 \r\n 2001          266           5.448         18.29         11.1          16.51 \r\n 2001          267           18.375        15.24         3.983         0 \r\n 2001          268           18.406        15.6          1.899         0 \r\n 2001          269           17.996        21.18         3.315         0 \r\n 2001          270           17.794        23.56         4.152         0 \r\n 2001          271           17.663        19.99         5.061         0 \r\n 2001          272           8.498         18.2          4.285         0 \r\n 2001          273           17.067        22.74         2.592         0 \r\n 2001          274           15.901        26.55         7.66          0 \r\n 2001          275           16.766        27.2          9.87          0 \r\n 2001          276           14.743        22.58         11.41         0 \r\n 2001          277           2.166         14.83         7.66          35.306 \r\n 2001          278           6.311         12.21         1.491         0 \r\n 2001          279           17.243        13.34        -1.454         0 \r\n 2001          280           16.063        19.59         0.219         0 \r\n 2001          281           13.909        19.6          8.06          0 \r\n 2001          282           9.662         23.16         13.14         0 \r\n 2001          283           3.602         20.6          7.9           5.08 \r\n 2001          284           10.641        18.79         5.55          0 \r\n 2001          285           14.565        20.24         6.768         0 \r\n 2001          286           2.757         16.86         7.89          3.048 \r\n 2001          287           10.936        15.14         4.161         0 \r\n 2001          288           2.251         9.56          3.647         1.27 \r\n 2001          289           10.156        9.6          -0.874         0 \r\n 2001          290           15.078        14.43        -4.9           0 \r\n 2001          291           11.83         18            4.477         0 \r\n 2001          292           12.396        17.27        -0.712         0 \r\n 2001          293           14.444        22.31         3.131         0 \r\n 2001          294           7.28          19.68         6.799         9.652 \r\n 2001          295           4.52          18.85         10.77         42.164 \r\n 2001          296           5.128         20.09         12.86         0.254 \r\n 2001          297           3.795         16.37         4.114         4.572 \r\n 2001          298           14.354        8.27          0.191         0 \r\n 2001          299           9.886         6.231        -0.788         0 \r\n 2001          300           13.783        7.79         -4.564         0 \r\n 2001          301           12.594        17.7         -1.32          0 \r\n 2001          302           12.086        18.98         5.204         0 \r\n 2001          303           2.977         11.73         5.905         2.54 \r\n 2001          304           6.303         17.95         8.39          0 \r\n 2001          305           9.09          23.13         12.9          0 \r\n 2001          306           13.184        19.01         4.496         0 \r\n 2001          307           10.839        22.03         3.179         0 \r\n 2001          308           12.61         21.47         4.448         0 \r\n 2001          309           12.417        17.49         0.504         0 \r\n 2001          310           11.784        21.84         2.857         0 \r\n 2001          311           10.938        23.34         6.594         0 \r\n 2001          312           7.847         16.79        -1.263         0 \r\n 2001          313           12.012        14.02        -3.797         0 \r\n 2001          314           11.779        18.52         2.038         0 \r\n 2001          315           11.441        13.35        -1.225         0 \r\n 2001          316           11.151        16.46        -2.481         0 \r\n 2001          317           7.066         19.04         9.95          1.016 \r\n 2001          318           7.463         21.74         12.91         0 \r\n 2001          319           9.33          23.03         11.72         0.508 \r\n 2001          320           10.468        23.35         7.62          0 \r\n 2001          321           9.675         21.84         4.439         0 \r\n 2001          322           5.09          18.15         10.74         1.524 \r\n 2001          323           11.134        11.25        -2.51          0 \r\n 2001          324           8.554         8.96         -6.465         0 \r\n 2001          325           9.706         14.71         0.333         0 \r\n 2001          326           7.517         15.56         3.104         0 \r\n 2001          327           5.178         15.82         5.048         9.982 \r\n 2001          328           4.602         16.63         6.883         2.692 \r\n 2001          329           1.822         7.55          0.76          0 \r\n 2001          330           1.783         10.63         1.377         0 \r\n 2001          331           2.059         9.33         -0.721         0 \r\n 2001          332           2.326         1.582        -1.091         0 \r\n 2001          333           2.054         4.545         1.045         0 \r\n 2001          334           2.416         5.54          2.466         0 \r\n 2001          335           5.163         7.22         -1.358         0 \r\n 2001          336           9.078         13.91        -2.395         0 \r\n 2001          337           4.572         13.86        -1.519         0 \r\n 2001          338           4.067         18.21         12.09         0 \r\n 2001          339           3.527         19.65         0.863         0 \r\n 2001          340           9.307         12.16        -1.101         0 \r\n 2001          341           8.017         9.75         -2.975         0 \r\n 2001          342           7.012         6.001        -5.462         0 \r\n 2001          343           9.214         6.719        -8.11          0 \r\n 2001          344           9.256         10.76        -4.641         0 \r\n 2001          345           8.469         9.91         -4.774         4.47 \r\n 2001          346           0.947         7.46          3.313         14.148 \r\n 2001          347           2.703         5.704        -1.748         0 \r\n 2001          348           6.054         4.294        -1.786         0 \r\n 2001          349           4.215         8.1           0.797         3.886 \r\n 2001          350           0.824         8.04          5.541         0 \r\n 2001          351           5.602         7.12         -1.149         0 \r\n 2001          352           7.611         10.41        -2.481         0 \r\n 2001          353           9.12          3.57         -4.545         0 \r\n 2001          354           8.981         7.05         -4.988         0 \r\n 2001          355           8.143         6.049        -6.74          11.836 \r\n 2001          356           3.331         11.77        -5.375         4.14 \r\n 2001          357           2.789        -3.922        -7.65          0 \r\n 2001          358           5.415        -6.122        -10.63         0 \r\n 2001          359           5.631        -6.799        -12.24         0 \r\n 2001          360           4.138        -5.015        -13.44         0 \r\n 2001          361           6.215        -1.585        -8.6           0 \r\n 2001          362           3.352        -2.853        -10.52         0 \r\n 2001          363           7.663        -8.56         -13.26         0 \r\n 2001          364           7.501        -5.638        -13.55         0 \r\n 2001          365           9.465        -5.329        -13.92         0 \r\n 2002          1             6.664        -4.989        -16.01         0 \r\n 2002          2             9.059        -3.071        -16.2          0 \r\n 2002          3             9.076        -1.737        -16.17         0 \r\n 2002          4             8.697         6.633        -8.56          0 \r\n 2002          5             2.627         2.466        -4.7           0 \r\n 2002          6             4.605         0.619        -6.465         0 \r\n 2002          7             9.463        -1.842        -12.64         0 \r\n 2002          8             9.073         11.36        -4.352         0 \r\n 2002          9             5.581         12.9          0.239         0 \r\n 2002          10            5.736         7.11          0.096         0 \r\n 2002          11            9.653         10.65        -5.08          0 \r\n 2002          12            9.504         6.929        -4.682         0 \r\n 2002          13            4.969         7.8          -5.414         0 \r\n 2002          14            0.922         2.288        -1.975         0 \r\n 2002          15            3.482        -0.245        -5.095         0 \r\n 2002          16            3.122         1.131        -9.55          0 \r\n 2002          17            10.118        2.562        -11.34         0 \r\n 2002          18            9.074        -4.049        -13.99         0 \r\n 2002          19            4.011         0.353        -9.69          0 \r\n 2002          20            9.64          3.486        -7.45          0 \r\n 2002          21            10.932        10.67        -4.18          0 \r\n 2002          22            9.441         15.31        -1.909         0 \r\n 2002          23            6.886         8.47         -2.786         0 \r\n 2002          24            10.403        5.618        -5.805         0 \r\n 2002          25            11.553        13.84        -7.3           0 \r\n 2002          26            10.644        16.49         1.074         0 \r\n 2002          27            10.29         17.29         0.642         0 \r\n 2002          28            9.984         9.1          -5.115         0 \r\n 2002          29            1.063         1.358        -2.242         5.385 \r\n 2002          30            3.276        -2.013        -2.863         13.259 \r\n 2002          31            4.564        -0.226        -2.776         0 \r\n 2002          32            10.936       -1.69         -17.08         0 \r\n 2002          33            11.118        1.82         -17.5          0 \r\n 2002          34            13.362        2.182        -12.03         0 \r\n 2002          35            13.924       -4.202        -18.23         0 \r\n 2002          36            13.48         1.754        -16.92         0 \r\n 2002          37            13.333        2.542        -12.06         0 \r\n 2002          38            13.042        3.046        -6.046         0 \r\n 2002          39            12.976        4.569        -5.193         0 \r\n 2002          40            11.714        5.276        -1.131         6.299 \r\n 2002          41            3.503         2.19         -5.028         0 \r\n 2002          42            12.616        4.957        -8.59          0 \r\n 2002          43            11.809        5.643        -5.221         0 \r\n 2002          44            14.499        5.204        -8.93          0 \r\n 2002          45            8.833         8.41         -1.129         0 \r\n 2002          46            12.363        7.23          0.418         0 \r\n 2002          47            13.211        8.23         -2.509         0 \r\n 2002          48            15.129        7.87         -5.548         0 \r\n 2002          49            9.815         14.58        -0.093         7.722 \r\n 2002          50            1.919         10.61         6.242         6.096 \r\n 2002          51            1.823         8.67         -0.03          0 \r\n 2002          52            3.894         0.237        -3.442         0 \r\n 2002          53            16.049        7            -8.13          0 \r\n 2002          54            15.378        15.13         0.438         0 \r\n 2002          55            14.256        20.43         2.096         0 \r\n 2002          56            2.218         2.153        -7.14          0 \r\n 2002          57            11.158       -6.603        -10.07         0 \r\n 2002          58            17.691       -3.838        -12.91         0 \r\n 2002          59            14.059        3.906        -9.64          0 \r\n 2002          60            7.547        -0.397        -7.47          7.214 \r\n 2002          61            9.179        -0.482        -11.68         0 \r\n 2002          62            19.256       -11.57        -21.68         0 \r\n 2002          63            11.761       -3.999        -23.15         0 \r\n 2002          64            15.586        7.46         -12.11         0 \r\n 2002          65            17.401        10.96        -0.692         3.099 \r\n 2002          66            7.127         10.38        -1.414         8.966 \r\n 2002          67            5.356         17.99         10.3          11.608 \r\n 2002          68            10.541        16.17        -6.655         0 \r\n 2002          69            18.97        -0.894        -10.96         0 \r\n 2002          70            15.87         11.04        -4.459         0 \r\n 2002          71            17.336        13.29        -4.564         0 \r\n 2002          72            14.756        16.32         3.314         0 \r\n 2002          73            12.409        20.79         3.943         0 \r\n 2002          74            15.641        7.08         -0.21          0 \r\n 2002          75            19.454        9.1          -3.097         0 \r\n 2002          76            4.308         5.436         0.121         0 \r\n 2002          77            16.274        9.64         -5.649         0 \r\n 2002          78            5.248         10.25         1.744         0 \r\n 2002          79            12.101        10.63         1.611         0 \r\n 2002          80            20.53         3.761        -9.72          0 \r\n 2002          81            21.632        3.801        -10.68         0 \r\n 2002          82            19.674        12.47        -6.641         0 \r\n 2002          83            3.396         5.158        -2.432         0 \r\n 2002          84            11.704        0.758        -6.829         0 \r\n 2002          85            21.921        6.724        -5.125         0 \r\n 2002          86            19.722        11.96        -5.771         0 \r\n 2002          87            15.694        16.69         1.887         8.484 \r\n 2002          88            14.509        15.15         4.555         0 \r\n 2002          89            14.187        9.58         -0.663         3.429 \r\n 2002          90            13.293        9.95         -2.071         0 \r\n 2002          91            4.199         4.173        -5.036         3.708 \r\n 2002          92            6.704         4.67         -1.67          0 \r\n 2002          93            20.922        3.668        -5.732         0 \r\n 2002          94            23.112        6.503        -8.07          0 \r\n 2002          95            23.676        13.16        -4.852         0 \r\n 2002          96            22.904        12.74        -4.709         0 \r\n 2002          97            3.392         8.98          5.319         14.986 \r\n 2002          98            1.839         9.79          7.97          25.908 \r\n 2002          99            25.228        15.29         1.611         0.254 \r\n 2002          100           23.744        21            5.369         0 \r\n 2002          101           14.952        23.61         9.78          1.016 \r\n 2002          102           7.373         15.23         3.743         4.572 \r\n 2002          103           20.115        17.87         0.918         0.254 \r\n 2002          104           23.826        26.25         7.99          0 \r\n 2002          105           24.835        30.46         14.52         0 \r\n 2002          106           20.272        30.11         18.79         0 \r\n 2002          107           25.72         28.61         17.86         0 \r\n 2002          108           19.082        31.12         18.98         0 \r\n 2002          109           20.314        21.76         11.18         0.762 \r\n 2002          110           11.781        13.16         4.678         3.81 \r\n 2002          111           2.877         7.66          2.523         9.906 \r\n 2002          112           21.639        11.41         0.134         0 \r\n 2002          113           25.277        19.56         2.846         0.508 \r\n 2002          114           11.022        18.57         3.466         6.096 \r\n 2002          115           27.727        13.38         0.864         0 \r\n 2002          116           18.268        12.44         0.257         0 \r\n 2002          117           2.123         15            5.953         21.844 \r\n 2002          118           5.751         12.07         4.495         0 \r\n 2002          119           27.526        18.65         2.742         0 \r\n 2002          120           8.243         13.82         7.77          4.826 \r\n 2002          121           9.041         16.79         7.36          3.81 \r\n 2002          122           27.296        13            3.685         0 \r\n 2002          123           28.588        18.72         1.814         0 \r\n 2002          124           27.779        21.88         5.263         0 \r\n 2002          125           27.473        26.64         7.96          0 \r\n 2002          126           23.478        27.33         14.51         2.794 \r\n 2002          127           15.044        21.66         13.48         0 \r\n 2002          128           21.052        27.14         11.29         9.906 \r\n 2002          129           27.553        15.17         5.81          3.048 \r\n 2002          130           26.739        19.78         3.322         0 \r\n 2002          131           0.995         13.4          8.85          34.544 \r\n 2002          132           6.499         13.97         8.57          2.54 \r\n 2002          133           25.512        19.74         6.953         0 \r\n 2002          134           29.921        19.71         5.262         0 \r\n 2002          135           21.137        24.36         9.36          1.27 \r\n 2002          136           8.546         20.12         11.66         9.652 \r\n 2002          137           12.412        13.15         3.742         0.508 \r\n 2002          138           25.238        16.33         1.729         0 \r\n 2002          139           26.411        17.99         3.037         0 \r\n 2002          140           23.639        13.28         3.303         0 \r\n 2002          141           30.791        16.43         1.073         0 \r\n 2002          142           27.747        23.31         7.56          0 \r\n 2002          143           5.946         19.34         12.89         17.78 \r\n 2002          144           21.869        19.45         8.6           0.254 \r\n 2002          145           18.59         17.19         6.325         14.224 \r\n 2002          146           29.94         22.85         9.12          0 \r\n 2002          147           14.223        24.01         13.1          0 \r\n 2002          148           21.271        26.37         14.15         0 \r\n 2002          149           24.423        27.76         15.86         0 \r\n 2002          150           27.43         30.1          17.12         0 \r\n 2002          151           27.297        32            19.36         0.508 \r\n 2002          152           26.71         32.36         19.91         0 \r\n 2002          153           10.891        26.1          16.59         7.62 \r\n 2002          154           22.66         31.28         17.47         0 \r\n 2002          155           9.865         24.93         14.77         5.588 \r\n 2002          156           15.183        20.81         12.78         0 \r\n 2002          157           30.364        24.32         9.48          0 \r\n 2002          158           30.225        26.64         13.36         0 \r\n 2002          159           29.262        29.1          14.31         0 \r\n 2002          160           29.693        31.34         16.06         0 \r\n 2002          161           20.906        30.68         22.07         0 \r\n 2002          162           7.72          23.85         19.16         18.796 \r\n 2002          163           19.179        29.74         19.58         6.096 \r\n 2002          164           18.485        25.59         15.68         13.97 \r\n 2002          165           22.645        22.34         12.89         0 \r\n 2002          166           24.639        25.67         13.02         0 \r\n 2002          167           28.977        25.42         10.88         0 \r\n 2002          168           20.119        24.97         12.91         0 \r\n 2002          169           25.101        28.65         16.19         0 \r\n 2002          170           10.905        27.15         21.25         0 \r\n 2002          171           23.997        31.34         21.14         0 \r\n 2002          172           25.239        31.42         20.38         0 \r\n 2002          173           26.696        31.55         19.43         0 \r\n 2002          174           28.624        31.28         19.16         0 \r\n 2002          175           28.781        31.87         16.85         0 \r\n 2002          176           18.792        31.14         20.16         0 \r\n 2002          177           15.228        28.7          18.39         21.844 \r\n 2002          178           28.202        29.08         17.72         0 \r\n 2002          179           24.888        28.7          16.38         0 \r\n 2002          180           26.282        31.83         17.31         0 \r\n 2002          181           27.511        31.85         22.86         0 \r\n 2002          182           28.565        31.54         20.2          0 \r\n 2002          183           28.879        31.49         17.57         0 \r\n 2002          184           28.759        31.58         19.5          0 \r\n 2002          185           26.125        33.7          20.67         0 \r\n 2002          186           27.138        33.06         20.12         0 \r\n 2002          187           20.275        26.56         20.07         0 \r\n 2002          188           25.58         32            19.13         0 \r\n 2002          189           26.269        34.19         21.09         3.302 \r\n 2002          190           25.108        32.75         22.1          0.254 \r\n 2002          191           9.62          25.93         18.92         5.842 \r\n 2002          192           14.877        22.74         17.02         1.016 \r\n 2002          193           27.518        25.86         14.67         0 \r\n 2002          194           29.858        26.19         13.05         0 \r\n 2002          195           30.069        28.79         11.2          0 \r\n 2002          196           29.229        30.49         13.66         0 \r\n 2002          197           25.772        30.18         14.53         0 \r\n 2002          198           22.894        31.23         18.69         0 \r\n 2002          199           25.283        32.92         20.94         0 \r\n 2002          200           22.187        32.19         20.26         0 \r\n 2002          201           25.074        35.48         22.39         0 \r\n 2002          202           27.771        34.92         23.61         0 \r\n 2002          203           19.244        30.72         18.18         1.016 \r\n 2002          204           26.716        26.11         15.42         0.254 \r\n 2002          205           24.592        26.56         13.64         0 \r\n 2002          206           22.15         30.66         16.47         0 \r\n 2002          207           15.73         31.05         21.77         0 \r\n 2002          208           19.789        33.24         20.73         0.508 \r\n 2002          209           18.049        32.36         20.57         0.254 \r\n 2002          210           18.798        29.4          19.5          0.508 \r\n 2002          211           27.42         32.86         18.21         0 \r\n 2002          212           26.825        32.12         18.21         0 \r\n 2002          213           25.096        34.77         21.24         0 \r\n 2002          214           27.685        28.36         16.04         0 \r\n 2002          215           23.577        31.15         17.03         0 \r\n 2002          216           16.738        31.74         22.41         1.524 \r\n 2002          217           15.045        29.9          22.35         1.778 \r\n 2002          218           20.814        25            16            0 \r\n 2002          219           27.912        25.34         12.18         0 \r\n 2002          220           27.027        26.37         12.28         0 \r\n 2002          221           26.8          27.39         13.37         0 \r\n 2002          222           23.563        31.7          15.96         0 \r\n 2002          223           20.5          33.12         17.51         38.608 \r\n 2002          224           17.313        29.05         18.05         14.732 \r\n 2002          225           8.637         22.39         13.91         3.048 \r\n 2002          226           26.596        25.97         11.65         1.27 \r\n 2002          227           23.289        29.68         13.68         0.762 \r\n 2002          228           13.278        25.63         18.1          4.572 \r\n 2002          229           19.362        26.48         13.28         0 \r\n 2002          230           19.844        23.91         10.17         3.048 \r\n 2002          231           20.979        25.12         14            1.778 \r\n 2002          232           11.93         23.48         13.44         0 \r\n 2002          233           16.702        31.52         19.57         0 \r\n 2002          234           17.894        30.82         22.9          12.7 \r\n 2002          235           8.508         26.72         19.61         27.94 \r\n 2002          236           16.566        26.55         18.44         0 \r\n 2002          237           16.654        27.97         17.01         0 \r\n 2002          238           20.646        28.91         16.72         0 \r\n 2002          239           22.091        29            17.3          0 \r\n 2002          240           18.767        27.63         16.78         0 \r\n 2002          241           21.889        27.23         14.37         0 \r\n 2002          242           20.321        28.03         14.56         0 \r\n 2002          243           20.317        28.48         15.84         0 \r\n 2002          244           18.875        30.44         16.81         0 \r\n 2002          245           17.903        31.95         20.81         2.54 \r\n 2002          246           22.565        27.59         13.23         0 \r\n 2002          247           21.47         29.07         11.06         0 \r\n 2002          248           21.035        29.1          12.73         0 \r\n 2002          249           20.578        31.16         12.39         0 \r\n 2002          250           20.795        32.15         14.7          0 \r\n 2002          251           18.815        32.58         18.1          0 \r\n 2002          252           19.255        32.39         18.37         0 \r\n 2002          253           14.477        27.83         14.08         0 \r\n 2002          254           20.701        24.81         9.47          0 \r\n 2002          255           18.444        25.04         7.5           0 \r\n 2002          256           15.857        26.25         9.76          0 \r\n 2002          257           10.107        25.78         15.07         0.254 \r\n 2002          258           14.702        24.4          10.67         0 \r\n 2002          259           19.112        26.32         6.955         0 \r\n 2002          260           11.465        25.97         10.18         0 \r\n 2002          261           13.666        27.89         18.45         0.508 \r\n 2002          262           7.701         27.3          19.94         2.794 \r\n 2002          263           6.051         21.56         12.95         3.556 \r\n 2002          264           18.516        24.15         10.05         0 \r\n 2002          265           18.546        19.4          6.318         0 \r\n 2002          266           15.627        23.72         3.65          0 \r\n 2002          267           18.115        18.97         0.409         0 \r\n 2002          268           17.052        25.38         6.521         0 \r\n 2002          269           17.619        27            5.655         0 \r\n 2002          270           6.846         18.1          9.56          0 \r\n 2002          271           14.704        26.32         8.98          0 \r\n 2002          272           16.492        32.22         16.04         0 \r\n 2002          273           14.95         30.5          18.82         0 \r\n 2002          274           7.373         26.25         18.44         11.938 \r\n 2002          275           3.832         22.58         15.05         12.192 \r\n 2002          276           2.721         19.09         13.7          0 \r\n 2002          277           9.36          21.54         6.589         15.494 \r\n 2002          278           17.384        19.26         3.407         0 \r\n 2002          279           15.891        22.03         7.31          0.254 \r\n 2002          280           17.322        15.38        -0.132         0 \r\n 2002          281           16.948        21.17         4.649         0 \r\n 2002          282           12.619        21.47         8.41          0.508 \r\n 2002          283           16.416        24.28         6.348         0 \r\n 2002          284           15.823        24.98         6.637         0 \r\n 2002          285           2.734         17.03         4.879         0 \r\n 2002          286           16.752        12.49        -0.795         0 \r\n 2002          287           16.611        15.15         0.228         0 \r\n 2002          288           15.779        14.38         1.244         0 \r\n 2002          289           15.113        10.94        -3.107         0 \r\n 2002          290           2.444         6.387         1.679         1.016 \r\n 2002          291           13.194        21.3          3.27          0 \r\n 2002          292           14.78         9.63         -3.49          0 \r\n 2002          293           15.42         12.35        -4.311         0 \r\n 2002          294           9.255         18.25        -0.34          0 \r\n 2002          295           11.948        10.73         1.821         0 \r\n 2002          296           2.884         6.445         1.752         1.524 \r\n 2002          297           1.831         6.175         3.646         17.272 \r\n 2002          298           1.212         7.13          4.611         7.112 \r\n 2002          299           9.51          9.38          0.675         0 \r\n 2002          300           3.305         5.752        -1.937         0 \r\n 2002          301           3.419         7.63          2.893         0.254 \r\n 2002          302           1.99          6.821         3.065         7.112 \r\n 2002          303           3.607         5.263         1.344         4.572 \r\n 2002          304           4.437         3.627        -3.327         0.254 \r\n 2002          305           14.026        4.163        -5.577         0 \r\n 2002          306           13.047        8.08         -5.366         0 \r\n 2002          307           2.417         4.736        -2.277         0 \r\n 2002          308           6.505         3.151        -5.873         0 \r\n 2002          309           1.71          4.736        -1.372         1.524 \r\n 2002          310           9.105         10.38         1.109         0 \r\n 2002          311           12.688        18.61        -3.48          0 \r\n 2002          312           10.172        19.64         6.531         0 \r\n 2002          313           7.108         19.05         8.27          0 \r\n 2002          314           7.175         13.79         2.313         0 \r\n 2002          315           1.885         3.208        -0.208         0 \r\n 2002          316           11.966        10.78        -5.589         0 \r\n 2002          317           7.668         16.46        -2.992         0 \r\n 2002          318           2.561         11.92         0.484         0 \r\n 2002          319           5.183         5.109        -3.413         0 \r\n 2002          320           7.146         3.972        -5.326         0 \r\n 2002          321           11.144        4.345        -8.16          0 \r\n 2002          322           3.046         7.12         -2.992         0 \r\n 2002          323           6.987         13.02        -1.158         2 \r\n 2002          324           9.218         14.09         1.069         0 \r\n 2002          325           2.514         4.573         0.191         0 \r\n 2002          326           10.742        5.206        -4.257         0 \r\n 2002          327           10.458        9.81         -2.261         0 \r\n 2002          328           2.095         1.556        -9.15          3.251 \r\n 2002          329           8.366        -2.566        -11.45         0 \r\n 2002          330           7.017        -0.046        -9.85          0 \r\n 2002          331           8.494        -1.424        -12.41         0 \r\n 2002          332           9.802         5.763        -10.02         0 \r\n 2002          333           6.611         12.11         2.475         0 \r\n 2002          334           8.111         6.06         -12.58         0 \r\n 2002          335           9.602         8.92         -13.25         0 \r\n 2002          336           4.715         3.38         -10.37         0 \r\n 2002          337           8.169        -1.033        -11.46         0 \r\n 2002          338           7.19         -0.482        -8.87          0 \r\n 2002          339           8.707        -4.488        -13.01         0 \r\n 2002          340           9.762         5.072        -14.26         0 \r\n 2002          341           9.565         7.61         -5.174         0 \r\n 2002          342           8.419         0.937        -12.81         0 \r\n 2002          343           9.605         4.173        -14.62         0 \r\n 2002          344           9.201         9.44         -8.11          0 \r\n 2002          345           4.425         5.406        -7.76          0 \r\n 2002          346           1.039         6.475         2.228         0 \r\n 2002          347           6.797         8.26         -5.552         0 \r\n 2002          348           7.434         11.12        -4.623         0 \r\n 2002          349           8.129         15.08        -2.28          0 \r\n 2002          350           3.687         2.525        -3.012         0 \r\n 2002          351           1.55          10.59        -0.815         13.818 \r\n 2002          352           3.85          14.13         2.2           10.846 \r\n 2002          353           4.831         6.619         0.267         0 \r\n 2002          354           2.624         2.138        -0.625         0 \r\n 2002          355           8.751         2.876        -5.649         0 \r\n 2002          356           7.909         1.401        -5.29          0 \r\n 2002          357           7.191        -0.967        -7.84          0 \r\n 2002          358           2.402        -3.748        -8.76          0 \r\n 2002          359           1.767        -4.951        -10.43         0 \r\n 2002          360           9.407         4.373        -12.38         0 \r\n 2002          361           3.825         3.191        -6.455         0 \r\n 2002          362           8.196         12.62        -3.978         0 \r\n 2002          363           7.618         11.54        -3.097         0 \r\n 2002          364           4.943         14.91        -0.749         0 \r\n 2002          365           9.563         4.517        -7.25          0 \r\n 2003          1             8.446         1.459        -7.07          0 \r\n 2003          2             2.752        -0.417        -3.633         0 \r\n 2003          3             9.719         1.887        -11.4          0 \r\n 2003          4             1.972        -0.321        -7.48          0 \r\n 2003          5             1.573         0.742        -1.909         0.5 \r\n 2003          6             8.763         2.353        -7.28          0 \r\n 2003          7             8.964         12.79        -5.801         0 \r\n 2003          8             9.282         19.22        -0.056         0 \r\n 2003          9             8.261         6.214        -6.045         0 \r\n 2003          10            8.932        -4.642        -13.01         0 \r\n 2003          11            10.005       -4.97         -15.11         0 \r\n 2003          12            9.326         5.081        -17.09         0 \r\n 2003          13            4.683        -0.673        -10.62         0 \r\n 2003          14            10.476       -5.658        -14.24         0 \r\n 2003          15            7.626        -5.989        -16.64         0 \r\n 2003          16            8.356        -3.388        -13.39         1 \r\n 2003          17            11.277       -7.33         -17.2          0 \r\n 2003          18            10.259       -4.469        -16.73         0 \r\n 2003          19            5.23          0.419        -17.88         0 \r\n 2003          20            4.097        -4.739        -8.84          0 \r\n 2003          21            10.637       -6.607        -16.53         0 \r\n 2003          22            5.442        -10.91        -17.7          0 \r\n 2003          23            12.524       -12.38        -21.98         0 \r\n 2003          24            4.493        -8.66         -18.94         0 \r\n 2003          25            9.326         2.267        -13.23         0 \r\n 2003          26            13.054       -10.43        -21.36         1.78 \r\n 2003          27            10.161       -4.143        -22.39         0 \r\n 2003          28            3.853         1.887        -6.563         0 \r\n 2003          29            12.478       -3.79         -13.33         0 \r\n 2003          30            8.982         3.133        -10.17         2.997 \r\n 2003          31            2.358         3.438         0.293         0 \r\n 2003          32            10.359        8.93         -0.654         0 \r\n 2003          33            4.51          5.388        -1.728         0 \r\n 2003          34            1.009         1.934        -7.43          0 \r\n 2003          35            13.847       -7.08         -13.63         2.29 \r\n 2003          36            7.47         -2.947        -15.81         0 \r\n 2003          37            11.26        -4.176        -15.93         0 \r\n 2003          38            14.642       -9.28         -20.69         0 \r\n 2003          39            4.986        -0.112        -12.23         0 \r\n 2003          40            6.308        -2.557        -18.36         0 \r\n 2003          41            13.784       -3.297        -14.17         0 \r\n 2003          42            11.239        4.651        -16.66         0 \r\n 2003          43            15.037        0.273        -18.48         0 \r\n 2003          44            14.447        8.52         -12.77         3.404 \r\n 2003          45            1.804         3.485        -4.227         14.478 \r\n 2003          46            6.674        -2.423        -9.77          2.896 \r\n 2003          47            16.049       -4.568        -13.7          0 \r\n 2003          48            11.701       -4.184        -14.26         0 \r\n 2003          49            14.123        3.875        -6.495         0 \r\n 2003          50            16.114        2.401        -6.749         0 \r\n 2003          51            16.443        7.27         -6.045         0 \r\n 2003          52            15.369        5.61         -3.796         0 \r\n 2003          53            3.852         0.495        -4.257         0 \r\n 2003          54            14.589       -3.129        -9.41          0 \r\n 2003          55            15.478       -8.83         -19.06         0.55 \r\n 2003          56            11.802       -10.74        -21.05         0 \r\n 2003          57            16.551       -2.68         -13.96         0 \r\n 2003          58            13.931        1.317        -11.99         0 \r\n 2003          59            10.657        2.468        -9.82          0 \r\n 2003          60            5.028         0.662        -2.812         0 \r\n 2003          61            18.394       -0.055        -13.15         0 \r\n 2003          62            6.771         1.168        -14.32         0 \r\n 2003          63            3.545        -4.189        -10.36         8.052 \r\n 2003          64            17.078       -6.344        -13.42         0 \r\n 2003          65            16.268       -1.245        -17.18         0 \r\n 2003          66            13.416        1.546        -5.289         0 \r\n 2003          67            7.956         0.429        -13.82         0 \r\n 2003          68            18.703       -9.33         -17.53         0 \r\n 2003          69            17.128       -5.05         -15.52         0 \r\n 2003          70            16.629        7.05         -12.51         0 \r\n 2003          71            9.506         6.658         0.538         0 \r\n 2003          72            18.245        6.81         -1.613         0 \r\n 2003          73            9.625         6.558        -2.9           0 \r\n 2003          74            11.708        12.97         0.2           0 \r\n 2003          75            17.901        21.37         3.829         0 \r\n 2003          76            18.238        22.62         7.01          0 \r\n 2003          77            10.872        16.02         6.866         0 \r\n 2003          78            2.12          6.952         2.913         1 \r\n 2003          79            8.131         13.7          2.999         3 \r\n 2003          80            15.567        9.45          0.03          0 \r\n 2003          81            20.441        15.16         0.244         0 \r\n 2003          82            21.06         20.32        -0.341         0 \r\n 2003          83            15.677        14.89         7.729         0 \r\n 2003          84            17.114        13.889       -0.32          0 \r\n 2003          85            15.79         14.986       -1.132         0 \r\n 2003          86            9.219         15.023        6.576         0 \r\n 2003          87            2.689         8.724         0.958         2.54 \r\n 2003          88            11.863        3.737        -3.727         0 \r\n 2003          89            17.163        7.009        -7.288         0 \r\n 2003          90            18.16         15.06        -5.835         0 \r\n 2003          91            22.618        25.563        10.999        0 \r\n 2003          92            22.499        23.784        9.009         0 \r\n 2003          93            5.509         17.9          6.237         0.508 \r\n 2003          94            3.844         15.069       -1.733         5.842 \r\n 2003          95            15.821        2.869        -4.12          0 \r\n 2003          96            10.321        3.983        -2.435         10.998 \r\n 2003          97            3.978        -0.212        -1.362         0 \r\n 2003          98            5.743         2.046        -3.854         0.508 \r\n 2003          99            25.761        11.492       -6.974         0 \r\n 2003          100           25.728        18.989       -3.514         0 \r\n 2003          101           24.161        24.551       -0.542         0 \r\n 2003          102           24.625        21.689        2.472         0 \r\n 2003          103           24.209        24.247        2.382         0 \r\n 2003          104           24.064        30.828        9.487         0 \r\n 2003          105           22.588        30.106        15.69         0 \r\n 2003          106           9.469         22.258        6.203         4.547 \r\n 2003          107           6.49          8.942         3.476         0 \r\n 2003          108           5.704         12.161        5.602         4.724 \r\n 2003          109           8.509         21.374        11.395        19.431 \r\n 2003          110           8.275         12.453        7.198         0 \r\n 2003          111           10.47         13.627        3.908         0 \r\n 2003          112           26.288        18.644        0.678         0 \r\n 2003          113           24.273        19.842        0.171         2.769 \r\n 2003          114           5.461         13.403        8.166         11.049 \r\n 2003          115           19.495        20.727        6.735         0 \r\n 2003          116           25.074        21.937        2.388         0 \r\n 2003          117           24.609        25.291        5.699         2.819 \r\n 2003          118           13.15         21.592        9.958         5.385 \r\n 2003          119           8.239         14.977        7.692         22.581 \r\n 2003          120           8.64          21.129        9.678         32.487 \r\n 2003          121           11.372        13.57         9.46          0 \r\n 2003          122           22.787        19.3          0             0 \r\n 2003          123           27.284        19.85         5.267         0 \r\n 2003          124           1.684         12.24         8.62          18.694 \r\n 2003          125           17.86         19.81         8.52          0 \r\n 2003          126           24.645        22.72         5.1           0 \r\n 2003          127           8.247         15.63         7.57          0 \r\n 2003          128           9.801         16.17         4.214         18.948 \r\n 2003          129           27.211        25.86         14.39         5.105 \r\n 2003          130           14.596        24.46         9.83          20.244 \r\n 2003          131           8.064         12.95         8.46          0 \r\n 2003          132           28.746        20.21         8.13          0 \r\n 2003          133           16.458        21.46         7.97          0 \r\n 2003          134           19.339        25.21         11.99         3.073 \r\n 2003          135           9.186         17.16         10.27         0 \r\n 2003          136           24.482        20.18         6.918         0 \r\n 2003          137           26.62         24.94         9.88          0 \r\n 2003          138           13.723        23.47         11.22         0 \r\n 2003          139           12.612        26.32         11.47         2.743 \r\n 2003          140           29.722        18.31         8.56          0 \r\n 2003          141           29.03         18.44         5.64          0 \r\n 2003          142           27.383        20.73         5.808         3.099 \r\n 2003          143           17.912        19.25         10.81         0 \r\n 2003          144           17.374        20.49         8.09          0 \r\n 2003          145           27.651        24.67         7.72          0 \r\n 2003          146           25.527        25.5          7.76          0 \r\n 2003          147           27.538        28.09         9.53          0 \r\n 2003          148           24.547        26.9          13.36         0 \r\n 2003          149           25.895        26.99         10.25         0 \r\n 2003          150           22.298        30.62         12.76         0 \r\n 2003          151           17.981        22.46         10.89         0 \r\n 2003          152           21.075        20.51         9.6           0 \r\n 2003          153           5.031         16.94         10.63         3.327 \r\n 2003          154           8.51          16.87         10.23         0 \r\n 2003          155           13.309        21.85         9.12          0 \r\n 2003          156           23.788        25.59         8.46          12.776 \r\n 2003          157           6.811         18.5          12.04         8.052 \r\n 2003          158           23.82         23.29         10.31         5.969 \r\n 2003          159           10.657        19.56         11.82         3.607 \r\n 2003          160           28.077        25.8          11.83         13.132 \r\n 2003          161           20.113        25.3          16.51         0 \r\n 2003          162           20.99         25.03         14.86         0 \r\n 2003          163           19.981        26.63         14.14         0 \r\n 2003          164           20.717        28.56         17.94         0 \r\n 2003          165           23.227        29.75         17.29         0 \r\n 2003          166           29.181        29.78         16.24         0 \r\n 2003          167           29.694        29.41         16.75         0 \r\n 2003          168           29.273        31.47         14.56         0 \r\n 2003          169           12.888        27.93         16.91         3.023 \r\n 2003          170           29.947        25.96         12.84         0 \r\n 2003          171           30.55         26.32         9.05          0 \r\n 2003          172           28.483        28.24         11.58         0 \r\n 2003          173           28.339        30.14         12.87         0 \r\n 2003          174           17.135        30.3          19.6          0 \r\n 2003          175           25.567        34.03         21.63         21.641 \r\n 2003          176           16.115        32.97         18.33         33.503 \r\n 2003          177           25.562        22.96         13.04         0 \r\n 2003          178           28.98         28.8          12.05         4.267 \r\n 2003          179           24.748        27.72         16.92         0 \r\n 2003          180           16.384        26.58         17.16         0 \r\n 2003          181           29.582        28.97         14.65         0 \r\n 2003          182           26.816        29.41         17.63         0 \r\n 2003          183           28.337        31.09         17.06         0 \r\n 2003          184           25.139        33.13         20.86         0 \r\n 2003          185           25.838        34.41         23.94         0 \r\n 2003          186           23.308        32.36         20.35         0 \r\n 2003          187           24.35         31.93         18.83         0 \r\n 2003          188           23.578        32.85         22.67         3.912 \r\n 2003          189           9.526         28.28         20.26         15.977 \r\n 2003          190           12.157        28.93         19.29         16.281 \r\n 2003          191           16.377        22.81         16.91         0 \r\n 2003          192           29.287        27.35         14.99         0 \r\n 2003          193           27.919        27.59         14.2          0 \r\n 2003          194           26.559        27.33         14.8          0 \r\n 2003          195           27.293        28.75         15.52         3.988 \r\n 2003          196           28.45         29.54         17.86         0 \r\n 2003          197           27.145        29.05         14.81         0 \r\n 2003          198           25.899        32.82         18.3          12.802 \r\n 2003          199           9.746         24.22         18.06         3.962 \r\n 2003          200           28.741        27.66         13.45         0 \r\n 2003          201           18.705        30.1          16.28         4.242 \r\n 2003          202           26.169        26.35         17.21         0 \r\n 2003          203           23.192        25.22         13.38         0 \r\n 2003          204           27.8          25.88         11.41         0 \r\n 2003          205           25.19         25.95         10.63         0 \r\n 2003          206           26.305        29.79         15.91         0 \r\n 2003          207           24.778        31.46         19.69         0 \r\n 2003          208           8.718         27.63         22.64         0 \r\n 2003          209           18.819        26.899        17.094        0 \r\n 2003          210           23.817        28.923        15.585        0 \r\n 2003          211           21.75         27.77         15.95         0 \r\n 2003          212           23.957        30.7          16.03         0 \r\n 2003          213           18.452        30.32         17.26         3.048 \r\n 2003          214           25.177        28.88         16.8          0.254 \r\n 2003          215           24.516        27.66         16.46         0 \r\n 2003          216           23.928        27.13         13.52         1.016 \r\n 2003          217           12.823        25.56         13.25         0 \r\n 2003          218           23.666        30.41         18.84         0 \r\n 2003          219           25.005        30.59         17.48         0 \r\n 2003          220           24.465        29.1          16.79         0 \r\n 2003          221           24.623        27.88         14.48         0 \r\n 2003          222           22.863        30.38         13.96         0 \r\n 2003          223           20.632        29.59         14.9          3.048 \r\n 2003          224           17.457        26.6          15.79         0 \r\n 2003          225           22.815        27.33         15.1          0 \r\n 2003          226           16.498        29.68         18.99         0 \r\n 2003          227           22.357        33.06         17.52         0 \r\n 2003          228           22.923        34.13         18.58         0 \r\n 2003          229           22.73         32.85         17.84         0 \r\n 2003          230           22.479        31.27         19.01         0 \r\n 2003          231           22.478        31.61         18.44         0 \r\n 2003          232           20.928        36.15         21.01         0 \r\n 2003          233           22.141        33.81         20.6          0 \r\n 2003          234           23.152        29.63         15.8          0 \r\n 2003          235           21.87         28.35         11.71         0 \r\n 2003          236           21.472        33.39         16.09         0 \r\n 2003          237           20.972        35.42         18.52         4.064 \r\n 2003          238           19.535        36.59         20.93         0 \r\n 2003          239           22.478        34.03         19.21         0 \r\n 2003          240           15.129        33.39         16.92         0 \r\n 2003          241           12.231        28.09         18.47         0 \r\n 2003          242           11.131        24.38         16.09         0 \r\n 2003          243           3.307         18.55         14.49         15.494 \r\n 2003          244           9.494         22.7          12.49         0.254 \r\n 2003          245           21.716        25.51         10.52         0 \r\n 2003          246           20.693        28.83         12.75         0 \r\n 2003          247           21.773        24.77         9.56          0 \r\n 2003          248           21.139        26.49         7.93          0 \r\n 2003          249           20.13         28.17         11.29         0 \r\n 2003          250           19.125        30.64         13.26         0 \r\n 2003          251           19.432        29.32         12.16         0 \r\n 2003          252           17.924        27.69         12.49         0 \r\n 2003          253           18.711        28.67         13.97         0 \r\n 2003          254           16.163        30.3          18.33         0 \r\n 2003          255           8.632         24.05         17.37         1.016 \r\n 2003          256           1.65          20.76         14.9          42.672 \r\n 2003          257           18.141        22.66         11.69         11.176 \r\n 2003          258           19.532        25.21         8.52          0 \r\n 2003          259           18.995        27.3          11.79         0 \r\n 2003          260           18.205        27.23         14.66         0 \r\n 2003          261           18.163        28.71         10.4          11.938 \r\n 2003          262           18.928        17.91         6.559         0 \r\n 2003          263           18.925        21.49         3.725         0 \r\n 2003          264           7.726         21.02         6.357         6.604 \r\n 2003          265           11.483        21.24         10.13         3.302 \r\n 2003          266           15.816        22.55         4.208         0 \r\n 2003          267           11.979        23.81         8.41          0 \r\n 2003          268           18.369        17.64         3.714         0 \r\n 2003          269           8.266         20.28         7.81          0.254 \r\n 2003          270           12.436        16.25         6.482         0 \r\n 2003          271           10.123        13.7          2.829         0 \r\n 2003          272           15.684        15.84        -1.35          0 \r\n 2003          273           9.798         13.14         0.474         0 \r\n 2003          274           17.355        13.19        -3.147         0 \r\n 2003          275           17.219        12.72        -6.163         0 \r\n 2003          276           7.992         20.83         3.98          0 \r\n 2003          277           15.264        22.3          4.075         0 \r\n 2003          278           14.767        23.43         4.791         0 \r\n 2003          279           15.737        24.08         6.626         0 \r\n 2003          280           15.951        26.21         8.95          0 \r\n 2003          281           14.905        25.92         10.66         0 \r\n 2003          282           7.729         22.56         11.62         0 \r\n 2003          283           13.624        25.2          12.84         0 \r\n 2003          284           9.089         24.67         9.12          2.54 \r\n 2003          285           16.013        21.01         5.694         0 \r\n 2003          286           12.782        22.55         6.078         11.176 \r\n 2003          287           14.838        17.85         6.646         3.81 \r\n 2003          288           13.596        17.44         2.601         0 \r\n 2003          289           5.689         10.32         0.788         0.508 \r\n 2003          290           14.208        14.64        -2.402         0 \r\n 2003          291           14.476        22.84         5.646         0 \r\n 2003          292           14.459        27.04         6.127         0 \r\n 2003          293           13.232        27.7          11.87         0 \r\n 2003          294           9.337         21.28         8.29          0 \r\n 2003          295           13.652        19.05         4.783         0 \r\n 2003          296           13.77         19.65         4.027         0 \r\n 2003          297           10.379        21.97         3.551         2.032 \r\n 2003          298           7.977         15.22         1.034         0.254 \r\n 2003          299           9.818         6.068        -1.787         0 \r\n 2003          300           10.686        10.66         0.02          0.254 \r\n 2003          301           6.981         10.78         5.877         0.254 \r\n 2003          302           4.344         8.6          -3.705         0 \r\n 2003          303           9.099         22.73         3.274         0 \r\n 2003          304           4.804         16.02         4.496         0 \r\n 2003          305           6.161         8.66         -1.007         0.762 \r\n 2003          306           1.194         8.01          6.337         19.812 \r\n 2003          307           1.055         12.68         6.598         3.353 \r\n 2003          308           2.461         18.81         2.275         0 \r\n 2003          309           3.267         2.313        -0.589         0 \r\n 2003          310           12.164        6.988        -4.504         0 \r\n 2003          311           11.371        6.191        -6.505         0 \r\n 2003          312           10.752        1.781        -9.49          0 \r\n 2003          313           5.416         4.592        -8.44          0 \r\n 2003          314           2.81          8.35         -3.512         0 \r\n 2003          315           3.436         14.42         5.634         0 \r\n 2003          316           8.719         12.56         0.836         0 \r\n 2003          317           11.347        6.45         -4.314         0 \r\n 2003          318           2.558         7.84         -4.005         0 \r\n 2003          319           1.53          7.92          4.573         0 \r\n 2003          320           3.861         12.49         2.009         0 \r\n 2003          321           1.666         13.25         1.178         7.036 \r\n 2003          322           4.498         13.76         3.494         0 \r\n 2003          323           10.484        15.54         0.228         0 \r\n 2003          324           9.505         22.69         5.128         0 \r\n 2003          325           8.895         10.23         2.181         0 \r\n 2003          326           1.751         7.65          1.078         18.593 \r\n 2003          327           1.427         11.93        -5.319         0 \r\n 2003          328           9.975         0.191        -8.26          0 \r\n 2003          329           5.339         4.21         -4.498         0 \r\n 2003          330           8.054         9.2          -6.485         0 \r\n 2003          331           7.932         8.1          -1.12          0 \r\n 2003          332           2.115        -0.474        -7.87          0 \r\n 2003          333           8.22          9.02         -10.37         0 \r\n 2003          334           9.056         15.32        -2.185         0 \r\n 2003          335           9.493         8.4          -3.223         0 \r\n 2003          336           2.869         2.837        -1.672         0 \r\n 2003          337           3.782         5.694        -0.237         0 \r\n 2003          338           1.475         1.894        -0.797         9.449 \r\n 2003          339           7.488         5.071        -3.119         0 \r\n 2003          340           3.662         0.276        -6.23          0 \r\n 2003          341           4.855         4.4          -3.357         0 \r\n 2003          342           6.978         9.81          0.527         6.985 \r\n 2003          343           1.267         6.137         2.664         38.811 \r\n 2003          344           3.664         3.79         -9.11          4.445 \r\n 2003          345           8.893        -7.42         -13.62         0 \r\n 2003          346           7.265        -5.096        -12.96         0 \r\n 2003          347           3.716        -3.723        -11.69         0 \r\n 2003          348           4.224        -2.862        -5.009         0 \r\n 2003          349           6.938         4.249        -4.663         0 \r\n 2003          350           3.468         3.265        -7.07          0 \r\n 2003          351           7.438         0.501        -9.96          3.404 \r\n 2003          352           5.385         0.115        -4.396         0 \r\n 2003          353           8.887        -2.448        -10.54         0 \r\n 2003          354           7.921        -0.105        -13.4          0 \r\n 2003          355           8.537         9.64         -0.455         0 \r\n 2003          356           2.438         3.732         0.36          0 \r\n 2003          357           3.315         0.485        -4.23          0 \r\n 2003          358           8.709         0.661        -9.86          0 \r\n 2003          359           8.515         5.09         -9.92          0 \r\n 2003          360           6.052         6.723        -4.247         0 \r\n 2003          361           2.312         11.02         3.666         6.248 \r\n 2003          362           8.293         11.06         0.271         0 \r\n 2003          363           4.303         2.152        -5.626         0 \r\n 2003          364           8.56          9.41         -7.97          0 \r\n 2003          365           8.688         4.898        -3.356         0 \r\n 2004          1             3.812         12.26        -3.461         0 \r\n 2004          2             2.795         16.74        -2.586         0 \r\n 2004          3             1.467         7.67         -5.542         9.627 \r\n 2004          4             3.745        -5.174        -7.37          5.232 \r\n 2004          5             8.496        -7.35         -20.7          0 \r\n 2004          6             9.678        -10.43        -24.06         0 \r\n 2004          7             8.774        -3.624        -19.03         0 \r\n 2004          8             4.999        -1.309        -9.75          0 \r\n 2004          9             7.119        -0.976        -8.64          0 \r\n 2004          10            5.789        -1.89         -10.55         0 \r\n 2004          11            8.81          5.36         -3.7           0 \r\n 2004          12            9.468         3.837        -3.386         0 \r\n 2004          13            7.401         4.448        -6.054         0 \r\n 2004          14            3.471         4.363        -6.996         0 \r\n 2004          15            6.467         0.141        -11.66         0 \r\n 2004          16            4.048         2.342        -3.426         7.976 \r\n 2004          17            2.484         2.476        -1.642         0 \r\n 2004          18            9.996        -1.69         -14.15         0 \r\n 2004          19            9.976        -6.999        -16.64         0 \r\n 2004          20            5.171        -5.299        -10.78         0 \r\n 2004          21            10.362        6.213        -6.635         0 \r\n 2004          22            10.937       -6.704        -17.96         0 \r\n 2004          23            4.151         7.49         -10.35         0 \r\n 2004          24            10.76        -1.956        -9.24          0 \r\n 2004          25            3.787        -4.575        -7.57          0 \r\n 2004          26            2.451        -5.746        -6.808         2.794 \r\n 2004          27            10.551       -6.103        -16.73         0 \r\n 2004          28            8.878        -12.23        -20.88         0 \r\n 2004          29            6.51         -14.29        -22.27         0 \r\n 2004          30            9.47         -16.59        -24.06         0 \r\n 2004          31            7.716        -10.9         -24.46         0 \r\n 2004          32            4.785        -2.738        -11.45         3.454 \r\n 2004          33            3.014        -0.454        -6.351         4.902 \r\n 2004          34            8.566        -6.36         -17.5          0 \r\n 2004          35            6.841        -7.98         -19.44         0 \r\n 2004          36            3.783        -3.845        -8.34          4.597 \r\n 2004          37            10.636       -3.828        -10.84         0 \r\n 2004          38            10.944       -8.6          -12.33         0 \r\n 2004          39            13.777       -0.692        -13.7          0 \r\n 2004          40            13.499        1.269        -4.056         0 \r\n 2004          41            13.992       -1.877        -13.97         0 \r\n 2004          42            14.083        1.137        -9.85          0 \r\n 2004          43            8.602        -5.154        -14.53         0 \r\n 2004          44            14.807        0.538        -17.16         0 \r\n 2004          45            14.233        1.536        -12.13         0 \r\n 2004          46            14.93        -3.205        -15.02         0 \r\n 2004          47            12.424       -2.098        -14.61         0 \r\n 2004          48            13.801       -3.97         -11.68         0 \r\n 2004          49            14.26         7.4          -12.16         0 \r\n 2004          50            8.414         8.46         -1.5           0 \r\n 2004          51            2.633         6.446         0.358         2.29 \r\n 2004          52            8.287         5.916        -1.898         0 \r\n 2004          53            2.833         4.65         -1.946         0 \r\n 2004          54            5.572         5.59          0.068         1.27 \r\n 2004          55            3.206         2.98          0.519         0 \r\n 2004          56            15.712        5.648        -2.147         0 \r\n 2004          57            15.866        7.59         -4.411         0 \r\n 2004          58            14.65         8.57         -3.613         0 \r\n 2004          59            12.816        13.78         0.134         0 \r\n 2004          60            11.916        15.52         3.218         0 \r\n 2004          61            7.099         14.02         3.609         0 \r\n 2004          62            4.079         6.532         2.504         0 \r\n 2004          63            4.68          6.455         0.974         7.95 \r\n 2004          64            1.749         7.03          3.218         33.452 \r\n 2004          65            4.704         16.51         3.228         0 \r\n 2004          66            17.257        11.58        -0.208         0 \r\n 2004          67            11.152        7.11         -1.233         0 \r\n 2004          68            10.631        8.82         -5.386         0 \r\n 2004          69            16.692        9.07         -1.025         0 \r\n 2004          70            12.497        10.4         -2.745         0 \r\n 2004          71            13.257        2.742        -6.067         0 \r\n 2004          72            18.804        4.258        -10.15         0 \r\n 2004          73            9.671         12.01        -5.841         9.246 \r\n 2004          74            18.203        8.83          0.027         0 \r\n 2004          75            5.561         0.296        -2.944         15.392 \r\n 2004          76            14.007        2.298        -3.043         0 \r\n 2004          77            15.766        5.173        -2.461         0 \r\n 2004          78            11.516        6.949        -1.764         0 \r\n 2004          79            18.056        15.94        -3.796         0 \r\n 2004          80            17.94         14.16        -0.076         0 \r\n 2004          81            18.643        4.01         -4.893         0 \r\n 2004          82            20.322        7.03         -7.83          0 \r\n 2004          83            16.337        16.45        -1.005         0 \r\n 2004          84            11.677        20.71         6.895         0 \r\n 2004          85            4.893         18.26         14.14         17.069 \r\n 2004          86            6.145         19.41         14.41         2.87 \r\n 2004          87            9.94          20.17         12.77         3.81 \r\n 2004          88            4.773         17.92         4.401         2.794 \r\n 2004          89            18.493        17.06         2.37          0 \r\n 2004          90            9.537         7.08         -0.427         0 \r\n 2004          91            11.382        11.42         1.287         0 \r\n 2004          92            18.832        13.12        -0.606         0 \r\n 2004          93            22.83         16.78        -0.806         0 \r\n 2004          94            22.25         14.38         0.428         0 \r\n 2004          95            22.438        13.1         -2.479         0 \r\n 2004          96            21.663        18.18        -0.977         0 \r\n 2004          97            20.121        23.29         7.42          0 \r\n 2004          98            21.322        22.02         2.589         0 \r\n 2004          99            23.682        18.1          4.296         0 \r\n 2004          100           16.152        16.55         2.161         0 \r\n 2004          101           20.71         11.61        -0.047         0 \r\n 2004          102           24.317        11.62        -3.509         0 \r\n 2004          103           22.462        10.84        -2.337         0 \r\n 2004          104           24.084        15.07        -4.611         0 \r\n 2004          105           23.928        21.08        -1.794         0 \r\n 2004          106           16.968        23.8          5.071         0 \r\n 2004          107           22.375        30.22         10.31         0 \r\n 2004          108           22.932        29.97         13.27         1.27 \r\n 2004          109           10.287        26.93         17.37         0 \r\n 2004          110           18.143        21.6          7.87          0 \r\n 2004          111           3.832         20            0             15.189 \r\n 2004          112           15.032        15.58         6.763         0.762 \r\n 2004          113           12.887        14.16         4.965         0 \r\n 2004          114           22.404        19.54         3.579         0 \r\n 2004          115           5.097         14.73         7.45          3.048 \r\n 2004          116           7.625         13.55         6.493         0.254 \r\n 2004          117           25.329        16.33         3.895         0 \r\n 2004          118           24.241        16.71        -0.104         0 \r\n 2004          119           23.346        29.9          9.47          0 \r\n 2004          120           17.943        23.94         13.51         0 \r\n 2004          121           4.86          17.24         8.77          4.064 \r\n 2004          122           14.011        16.43         3.847         0 \r\n 2004          123           16.763        13.19         1.083         2.54 \r\n 2004          124           26.102        15.19         0.437         0 \r\n 2004          125           19.503        22.71         6.751         0 \r\n 2004          126           26.414        25.43         2.741         0 \r\n 2004          127           23.394        31.17         15.82         0 \r\n 2004          128           6.774         19.93         11.31         0 \r\n 2004          129           23.56         30.12         11.33         0 \r\n 2004          130           24.297        29.75         17.53         0 \r\n 2004          131           12.819        24.85         14.74         0 \r\n 2004          132           22.698        28.12         14.14         0 \r\n 2004          133           12.461        25.49         18.62         2.286 \r\n 2004          134           10.319        19.07         9.35          7.112 \r\n 2004          135           15.459        14.16         4.975         0 \r\n 2004          136           28.664        18.16         3.141         0 \r\n 2004          137           25.367        23.54         7.01          0 \r\n 2004          138           18.465        27.35         14.24         5.842 \r\n 2004          139           4.114         18.77         13.84         4.572 \r\n 2004          140           20.505        25.2          12.47         0 \r\n 2004          141           14.866        29.02         19.79         6.604 \r\n 2004          142           19.757        29.9          18.86         0 \r\n 2004          143           10.142        26.32         16.34         20.066 \r\n 2004          144           16.17         25.79         12.37         7.112 \r\n 2004          145           22.154        24.37         9.96          15.494 \r\n 2004          146           21.968        21.01         11.29         0 \r\n 2004          147           24.011        21.61         9.12          0 \r\n 2004          148           13.929        25.7          14.39         0.254 \r\n 2004          149           26.41         23.96         13.09         0 \r\n 2004          150           22.951        27.97         15.21         0 \r\n 2004          151           13.861        26.82         17            72.898 \r\n 2004          152           19.622        22.72         13.12         5.842 \r\n 2004          153           23.93         22.62         12.1          0 \r\n 2004          154           16.944        21.356        10.404        0 \r\n 2004          155           21.585        24.553        10.984        0 \r\n 2004          156           23.897        25.042        14.038        0 \r\n 2004          157           21.027        27.093        13.269        0 \r\n 2004          158           23.032        28.274        16.998        0 \r\n 2004          159           24.607        30.839        19.651        0 \r\n 2004          160           24.826        30.864        22.267        0 \r\n 2004          161           18.323        27.407        20.566        5.512 \r\n 2004          162           10.693        24.129        19.553        20.066 \r\n 2004          163           18.982        29.091        20.028        0 \r\n 2004          164           24.573        30.077        17.474        0 \r\n 2004          165           22.444        27.453        17.751        9.957 \r\n 2004          166           21.271        27.615        17.275        11.354 \r\n 2004          167           18.832        27.528        16.519        0 \r\n 2004          168           17.852        30.376        19.437        3.505 \r\n 2004          169           20.148        26.879        17.279        0 \r\n 2004          170           11.785        21.906        13.797        0 \r\n 2004          171           27.947        21.392        9.409         0 \r\n 2004          172           18.337        22.242        13.614        0 \r\n 2004          173           12.542        24.68         15.457        0 \r\n 2004          174           28.577        24.606        11.894        0 \r\n 2004          175           24.918        28.678        14.211        0 \r\n 2004          176           10.96         18.331        9.831         0 \r\n 2004          177           29.092        22.479        7.376         0 \r\n 2004          178           27.235        26.479        10.679        0 \r\n 2004          179           11.163        24.063        15.721        0 \r\n 2004          180           27.697        24.498        12.545        0 \r\n 2004          181           26.196        27.668        11.783        0 \r\n 2004          182           27.014        28.462        12.3          0 \r\n 2004          183           23.584        30.947        14.838        0 \r\n 2004          184           16.376        28.841        18.483        47.396 \r\n 2004          185           10.285        26.26         19.383        18.288 \r\n 2004          186           23.697        29.363        18.636        0 \r\n 2004          187           19.039        29.047        17.679        7.899 \r\n 2004          188           12.824        24.775        16.088        0 \r\n 2004          189           14.65         21.562        12.642        0 \r\n 2004          190           21.149        24.866        12.303        0 \r\n 2004          191           13.594        27.034        18.807        0 \r\n 2004          192           14.114        28.275        18.271        0 \r\n 2004          193           10.008        27.261        18.471        11.252 \r\n 2004          194           23.287        31.208        18.083        0 \r\n 2004          195           25.572        32.934        18.121        0 \r\n 2004          196           26.53         28.237        15.887        0 \r\n 2004          197           24.89         29.207        15.631        0 \r\n 2004          198           22.439        29.898        16.673        0 \r\n 2004          199           21.716        25.822        15.647        0 \r\n 2004          200           25.534        28.416        13.903        0 \r\n 2004          201           23.738        30.133        14.676        0 \r\n 2004          202           23.903        33.213        19.615        0 \r\n 2004          203           12.664        29.984        21.782        0 \r\n 2004          204           8.658         28.408        18.596        21.844 \r\n 2004          205           16.649        24.066        16.364        0 \r\n 2004          206           7.786         20.067        13.211        0 \r\n 2004          207           24.537        25.032        12.076        0 \r\n 2004          208           24.85         25.723        11.744        0 \r\n 2004          209           25.344        27.267        10.231        0 \r\n 2004          210           24.919        27.829        11.141        0 \r\n 2004          211           17.456        27.565        17.247        4.953 \r\n 2004          212           14.159        25.086        17.607        0 \r\n 2004          213           26.517        29.161        16.243        0 \r\n 2004          214           12.549        29.319        16.553        7.62 \r\n 2004          215           18.491        30.473        16.727        0 \r\n 2004          216           17.764        33.066        18.83         22.758 \r\n 2004          217           11.048        25.308        15.375        0 \r\n 2004          218           24.232        24.158        12.196        0 \r\n 2004          219           23.39         25.623        9.61          0 \r\n 2004          220           17.059        25.076        11.035        0 \r\n 2004          221           20.608        28.196        12.956        0 \r\n 2004          222           22.477        28.202        15.972        0 \r\n 2004          223           10.406        18.369        11.112        0 \r\n 2004          224           16.526        18.07         9.234         0 \r\n 2004          225           16.657        20.313        9.298         0 \r\n 2004          226           16.463        22.596        8.752         0 \r\n 2004          227           19.967        24.109        6.914         0 \r\n 2004          228           22.858        25.099        7.083         0 \r\n 2004          229           16.07         26.549        9.114         9.474 \r\n 2004          230           14.21         26.574        16.036        16.383 \r\n 2004          231           5.907         23.039        15.927        23.901 \r\n 2004          232           19.994        20.949        10.689        3.962 \r\n 2004          233           19.218        24.686        12.271        1.778 \r\n 2004          234           22.481        24.022        9.548         0 \r\n 2004          235           20.884        28.799        12.629        0 \r\n 2004          236           19.165        30.298        16.112        0 \r\n 2004          237           13.136        27.034        18.353        0.254 \r\n 2004          238           11.082        26.137        17.583        11.68 \r\n 2004          239           14.731        31.636        19.154        4 \r\n 2004          240           9.552         26.951        19.608        8 \r\n 2004          241           5.181         22.261        12.558        3.81 \r\n 2004          242           18.348        23.764        10.324        3.05 \r\n 2004          243           20.323        27.478        12.082        0 \r\n 2004          244           20.796        28.29         11.106        0 \r\n 2004          245           18.041        29.619        14.495        0 \r\n 2004          246           20.302        29.729        15.207        0 \r\n 2004          247           17.528        29.026        13.812        0 \r\n 2004          248           17.761        30.806        14.416        0 \r\n 2004          249           17.072        30.956        17.852        0 \r\n 2004          250           15.419        25.259        13.012        8 \r\n 2004          251           19.881        23.236        9.807         0 \r\n 2004          252           19.364        23.723        8.914         0 \r\n 2004          253           19.195        26.245        9.023         0 \r\n 2004          254           18.81         29.524        11.816        0 \r\n 2004          255           18.421        30.544        13.306        0 \r\n 2004          256           18.256        30.394        12.045        0 \r\n 2004          257           17.876        30.854        12.172        0 \r\n 2004          258           17.003        32.096        19.112        0 \r\n 2004          259           5.128         25.204        16.824        7.874 \r\n 2004          260           18.121        24.051        10.026        0 \r\n 2004          261           16.243        24.597        8.115         0 \r\n 2004          262           15.532        28.009        13.588        0 \r\n 2004          263           17.55         30.225        13.232        0 \r\n 2004          264           18.888        27.487        11.168        0 \r\n 2004          265           17.559        29.258        11.04         0 \r\n 2004          266           17.592        28.544        8.83          0 \r\n 2004          267           14.401        28.084        11.278        0.508 \r\n 2004          268           16.556        26.061        10.399        0 \r\n 2004          269           16.235        25.439        8.61          0 \r\n 2004          270           17.169        25.778        6.349         0 \r\n 2004          271           15.776        27.538        5.746         0 \r\n 2004          272           17.62         21.654        5.499         0 \r\n 2004          273           17.388        21.598        2.447         0 \r\n 2004          274           16.561        24.879        2.912         0 \r\n 2004          275           2.96          18.483        3.95          3.556 \r\n 2004          276           17.331        15.202       -0.685         3.556 \r\n 2004          277           16.739        23.798        3.328         0 \r\n 2004          278           17.049        14.045        0.233         0 \r\n 2004          279           16.446        18.743       -2.076         0 \r\n 2004          280           16.19         25.606        3.176         0 \r\n 2004          281           5.33          20.104        7.818         2.286 \r\n 2004          282           7.837         23.329        9.078         3.81 \r\n 2004          283           16.441        23.058        4.126         0.762 \r\n 2004          284           16.018        21.553        3.843         0.508 \r\n 2004          285           11.678        18.912        3.433         0.508 \r\n 2004          286           4.206         15.742        7.086         0.254 \r\n 2004          287           14.324        19.078        6.697         0.254 \r\n 2004          288           1.663         9.859         4.736         2.54 \r\n 2004          289           7.203         12.378        1.643         0.508 \r\n 2004          290           11.448        9.111         0.023         0 \r\n 2004          291           10.013        14.817       -1.696         0 \r\n 2004          292           1.533         11.209        6.546         2.54 \r\n 2004          293           4.112         11.508        7.363         1.778 \r\n 2004          294           2.633         12.004        8.925         0 \r\n 2004          295           5.371         16.133        9.891         0.254 \r\n 2004          296           1.501         17.624        13.084        0 \r\n 2004          297           11.585        20.754        7.898         0 \r\n 2004          298           13.995        21.663        3.063         0 \r\n 2004          299           12.747        20.362        5.126         0 \r\n 2004          300           1.544         14.309        10.784        30.988 \r\n 2004          301           3.301         14.244        10.596        0 \r\n 2004          302           2.41          18.934        10.878        3.759 \r\n 2004          303           9.025         26.758        15.454        13.081 \r\n 2004          304           7.791         17.002        4.126         0 \r\n 2004          305           11.298        15.882        2.211         0 \r\n 2004          306           1.157         10.732        6.61          17.018 \r\n 2004          307           4.489         10.8          5.105         0.254 \r\n 2004          308           8.657         11.983        2.903         5.08 \r\n 2004          309           11.054        12.607        2.242         2.286 \r\n 2004          310           11.508        14.752       -1.896         0 \r\n 2004          311           12.074        22.116        4.648         0 \r\n 2004          312           11.5          15.399        1.191         0 \r\n 2004          313           8.312         10.898       -1.609         0 \r\n 2004          314           9.177         16.103       -2.01          0 \r\n 2004          315           8.532         16.98         5.662         0 \r\n 2004          316           11.804        9.563        -3.342         0 \r\n 2004          317           11.597        9.296        -6.278         0 \r\n 2004          318           11.463        9.986        -6.881         0 \r\n 2004          319           7.3           9.425        -3.109         0 \r\n 2004          320           1.813         9.397         3.931         0.254 \r\n 2004          321           4.262         16.215        8.03          0 \r\n 2004          322           5.253         20.643        13.081        0 \r\n 2004          323           1.991         15.824        9.921         8.382 \r\n 2004          324           2.399         12.942        9.371         1.778 \r\n 2004          325           2.379         9.984         0.494         0 \r\n 2004          326           5.178         6.429        -2.167         0 \r\n 2004          327           3.403         8.181        -1.043         0 \r\n 2004          328           8.081         8.719         1.282         0 \r\n 2004          329           1.833         2.498        -5.727         0 \r\n 2004          330           9.383         5.186        -7.953         0 \r\n 2004          331           4.369         8.986        -1.419         6.147 \r\n 2004          332           1.201         6.675         0.253         0 \r\n 2004          333           6.469         4.528        -3.743         4.597 \r\n 2004          334           2.042         2.37         -1.955         0 \r\n 2004          335           1.575         0.594        -3.877         0 \r\n 2004          336           9.397         4.363        -5.647         0 \r\n 2004          337           8.629         6.935        -4.624         0 \r\n 2004          338           6.851         6.758        -6.998         0 \r\n 2004          339           8.436         10.974       -1.545         0 \r\n 2004          340           4.382         6.642        -4.033         14.986 \r\n 2004          341           1.596         7.371         4.895         7.671 \r\n 2004          342           1.922         7.448         0.929         0 \r\n 2004          343           4.993         7.362        -2.727         0 \r\n 2004          344           5.072         8.819         2.493         0 \r\n 2004          345           0.96          5.029         1.953         0 \r\n 2004          346           1.644         2.86         -0.318         2 \r\n 2004          347           4.4           7.181        -0.751         0 \r\n 2004          348           5.276        -0.643        -9.534         0 \r\n 2004          349           9.181        -1.464        -12.68         0 \r\n 2004          350           7.642         5.744        -8.433         0 \r\n 2004          351           8.625         7.207        -5.309         0 \r\n 2004          352           8.545         1.457        -9.692         0 \r\n 2004          353           6.414         5.568        -10.37         0 \r\n 2004          354           8.93         -9.369        -16.922        0 \r\n 2004          355           7.269         1.713        -10.406        0 \r\n 2004          356           7.588         0.181        -12.649        0 \r\n 2004          357           6.11         -11.634       -17.675        0 \r\n 2004          358           8.941        -11.132       -19.608        0 \r\n 2004          359           9.156        -7.737        -22.338        0 \r\n 2004          360           5.711         0.774        -8.079         0 \r\n 2004          361           8.561        -3.184        -11.923        0 \r\n 2004          362           5.749         1.623        -11.487        0 \r\n 2004          363           4.639         8.606        -3.767         0 \r\n 2004          364           8.041         5.156        -7.314         0 \r\n 2004          365           2.287         16.121       -1.726         0 \r\n 2004          366           8.428         11.463       -3.482         0 \r\n 2005          1             1.166         3.206        -4.425         3.556 \r\n 2005          2             2.692         7.386        -1.572         7.645 \r\n 2005          3             1.428        -1.039        -2.818         9.449 \r\n 2005          4             0.943        -1.729        -4.713         6.706 \r\n 2005          5             1.526        -4.597        -8.129         8.915 \r\n 2005          6             9.802        -7.852        -16.592        0 \r\n 2005          7             5.588        -4.687        -10.908        0 \r\n 2005          8             4.584        -3.832        -8.708         0 \r\n 2005          9             4.449         1.204        -4.635         0 \r\n 2005          10            5.165        -1.382        -8.696         3.251 \r\n 2005          11            3.571         0.304        -3.419         0 \r\n 2005          12            1.424         1.981        -1.476         14.732 \r\n 2005          13            6.871        -1.266        -18.742        0 \r\n 2005          14            7.386        -15.168       -21.444        0 \r\n 2005          15            7.614        -13.722       -20.113        0 \r\n 2005          16            10.395       -11.554       -19.962        0 \r\n 2005          17            10.658       -9.518        -21.083        0 \r\n 2005          18            6.629         1.374        -16.893        0 \r\n 2005          19            5.947         3.407        -5.197         0 \r\n 2005          20            4.143        -0.971        -4.888         0 \r\n 2005          21            6.499        -1.856        -5.043         0 \r\n 2005          22            9.081        -1.608        -15.463        0 \r\n 2005          23            6.345        -5.217        -14.867        0 \r\n 2005          24            10.62         3.402        -7.319         0 \r\n 2005          25            11.057        11.512       -7.583         0 \r\n 2005          26            1.536         2.207        -7.172         0 \r\n 2005          27            7.965        -2.007        -10.828        0 \r\n 2005          28            7.888         0.416        -9.251         0 \r\n 2005          29            3.284         1.504        -3.436         0 \r\n 2005          30            2.693         1.69         -1.413         0 \r\n 2005          31            4.414         2.309        -0.984         0 \r\n 2005          32            5.731         3.873        -1.945         0 \r\n 2005          33            11.082        6.011        -3.739         0 \r\n 2005          34            12.037        9.796        -5.301         0 \r\n 2005          35            12.627        14.223       -3.582         0 \r\n 2005          36            12.197        14.017       -0.997         0 \r\n 2005          37            2.792         7.716         1.248         8.28 \r\n 2005          38            1.49          3.567        -5.679         0 \r\n 2005          39            4.884        -0.96         -6.125         3.251 \r\n 2005          40            4.495        -1.873        -11.276        0 \r\n 2005          41            13.569       -2.223        -13.889        0 \r\n 2005          42            13.785        6.306        -6.164         0 \r\n 2005          43            9.578         9.83         -2.942         4.597 \r\n 2005          44            1.154         6.62          2.024         8.738 \r\n 2005          45            7.321         11.3          1.228         0 \r\n 2005          46            4.438         5.693        -0.443         0 \r\n 2005          47            14.693        2.301        -4.311         0 \r\n 2005          48            13.925        2.426        -8.726         0 \r\n 2005          49            14.13        -0.243        -11.277        0 \r\n 2005          50            3.179         2.482        -5.711         2.972 \r\n 2005          51            1.806         3.874        -0.019         2.54 \r\n 2005          52            5.102         1.876        -1.879         0 \r\n 2005          53            12.858        4.794        -3.613         0 \r\n 2005          54            7.618         3.001        -5.101         0 \r\n 2005          55            10.563        4.681        -5.207         0 \r\n 2005          56            15.9          9.432        -3.983         0 \r\n 2005          57            14.449        7.028        -6.633         0 \r\n 2005          58            5.76          9.337        -2.302         2.819 \r\n 2005          59            7.702        -1.544        -5.723         0 \r\n 2005          60            15.015       -0.221        -8.521         0 \r\n 2005          61            15.915        2.498        -8.036         0 \r\n 2005          62            15.59         6.231        -9.301         0 \r\n 2005          63            14.501        15.374       -6.365         0 \r\n 2005          64            16.445        10.411       -0.963         0 \r\n 2005          65            16.311        22.295        1.851         4.648 \r\n 2005          66            2.42          13.338       -4.278         0 \r\n 2005          67            13.131        2.478        -6.433         0 \r\n 2005          68            18.272        2.418        -9.119         0 \r\n 2005          69            8.008         7.502        -4.378         0 \r\n 2005          70            9.675         7.043        -2.642         0 \r\n 2005          71            3.84          3.018        -8.025         0 \r\n 2005          72            17.915        3.231        -10.612        0 \r\n 2005          73            18.016        2.912        -8.244         0 \r\n 2005          74            17.739        9.134        -10.126        0 \r\n 2005          75            17.422        11.284       -3.721         0 \r\n 2005          76            17.6          13.783       -1.427         0 \r\n 2005          77            10.391        14.415       -1.733         0 \r\n 2005          78            2.617         4.319        -1.463         0 \r\n 2005          79            18.967        9.354        -4.593         0 \r\n 2005          80            16.501        10.696       -0.962         0 \r\n 2005          81            5.078         6.198        -0.679         8.712 \r\n 2005          82            11.65         8.996        -1.868         0 \r\n 2005          83            3.753         4.418        -2.938         14.554 \r\n 2005          84            2.471         3.59          0.608         0 \r\n 2005          85            16.176        10.273       -0.624         0 \r\n 2005          86            19.722        15.302       -3.599         0 \r\n 2005          87            21.057        21.098       -2.451         0 \r\n 2005          88            13.439        23.973        3.959         0 \r\n 2005          89            14.983        23.044        7.552         0 \r\n 2005          90            21.343        16.356        4.508         0 \r\n 2005          91            17.568        14.008        1.114         0 \r\n 2005          92            22.413        15.717       -0.157         0 \r\n 2005          93            21.128        23.142        3.919         0 \r\n 2005          94            21.993        28.147        5.132         0 \r\n 2005          95            16.045        24.946        9.21          0 \r\n 2005          96            5.438         22.511        11.695        0.762 \r\n 2005          97            14.725        18.404        4.783         0.508 \r\n 2005          98            23.475        22.162        1.706         0 \r\n 2005          99            18.744        25.203        6.58          0 \r\n 2005          100           17.749        27.837        12.038        0 \r\n 2005          101           3.237         20.624        13.733        5.842 \r\n 2005          102           9.223         14.764        7.407         15.494 \r\n 2005          103           25.038        16.09         3.226         0 \r\n 2005          104           24.973        20.006        1.433         0 \r\n 2005          105           23.581        22.323        2.894         0 \r\n 2005          106           16.933        22.785        6.222         0 \r\n 2005          107           21.565        27.004        11.571        0 \r\n 2005          108           20.492        27.028        9.942         0 \r\n 2005          109           18.965        25.711        14.963        0 \r\n 2005          110           17.642        25.388        12.211        0 \r\n 2005          111           7.268         15.837        8.796         8.89 \r\n 2005          112           6.368         14.294        4.257         8.382 \r\n 2005          113           25.689        10.067        0.494         2.286 \r\n 2005          114           26.982        15.134       -0.973         2.54 \r\n 2005          115           21.018        18.902        1.697         0.508 \r\n 2005          116           14.882        11.457        2.654         0.762 \r\n 2005          117           21.827        14.311        2.258         0.508 \r\n 2005          118           12.829        12.741        1.898         0.254 \r\n 2005          119           13.676        13.775        3.351         0.254 \r\n 2005          120           21.838        13.165       -0.779         0.508 \r\n 2005          121           14.185        8.832         2.08          0 \r\n 2005          122           12.319        7.763        -1.75          0 \r\n 2005          123           28.257        14.376       -4.426         0 \r\n 2005          124           28.07         19.745       -2.539         0 \r\n 2005          125           21.364        23.451        2.324         0 \r\n 2005          126           19.211        25.539        10.861        0 \r\n 2005          127           23.207        28.332        12.545        0 \r\n 2005          128           11.913        27.533        15.752        3.048 \r\n 2005          129           20.859        24.658        14.608        0.254 \r\n 2005          130           26.999        29.7          11.422        0 \r\n 2005          131           13.288        22.112        9.494         6.35 \r\n 2005          132           6.293         16.878        6.636         3.81 \r\n 2005          133           10.048        21.091        9.459         11.938 \r\n 2005          134           20.589        15.282        6.687         0.508 \r\n 2005          135           17.128        13.361        2.774         0 \r\n 2005          136           25.301        19.328        1.252         0 \r\n 2005          137           25.393        25.856        8.986         0 \r\n 2005          138           12.2          24.383        14.39         1.016 \r\n 2005          139           26.179        28.436        12.505        0.254 \r\n 2005          140           12.484        19.934        11.02         0 \r\n 2005          141           11.654        22.039        8.625         0.762 \r\n 2005          142           29.44         27.853        12.887        0 \r\n 2005          143           29.585        26.851        12.374        0 \r\n 2005          144           27.852        24.883        9.555         0 \r\n 2005          145           21.599        24.141        10.482        0 \r\n 2005          146           26.528        24.289        9.787         0 \r\n 2005          147           24.743        22.296        8.395         0 \r\n 2005          148           23.718        21.928        8.139         0 \r\n 2005          149           10.851        20.653        7.976         2.54 \r\n 2005          150           25.833        25.288        7.985         0 \r\n 2005          151           25.455        27.017        10.398        0 \r\n 2005          152           24.509        28.857        14.123        0 \r\n 2005          153           26.857        30.028        14.299        0 \r\n 2005          154           22.63         27.925        14.039        2.032 \r\n 2005          155           17.911        28.92         17.188        3.81 \r\n 2005          156           27.292        27.336        16.301        4.572 \r\n 2005          157           29.738        32.007        17.398        0.254 \r\n 2005          158           24.833        32.783        18.247        0 \r\n 2005          159           7.408         26.805        17.503        12.954 \r\n 2005          160           20.447        30.052        18.044        2.032 \r\n 2005          161           21.646        31.551        18.837        1.524 \r\n 2005          162           24.909        30.634        18.487        6.858 \r\n 2005          163           22.756        30.508        18.256        17.272 \r\n 2005          164           24.548        28.804        19.439        1.27 \r\n 2005          165           16.754        24.049        17.369        0.254 \r\n 2005          166           16.985        24.087        14.383        0 \r\n 2005          167           30.789        26.631        11.956        0 \r\n 2005          168           30.501        27.349        11.397        0 \r\n 2005          169           30.195        28.016        11.151        0 \r\n 2005          170           30.363        28.506        12.608        0 \r\n 2005          171           27.87         30.192        12.855        0 \r\n 2005          172           25.177        32.568        17.196        0 \r\n 2005          173           25.257        33.528        19.335        0 \r\n 2005          174           28.448        34.396        20.789        0 \r\n 2005          175           27.523        35.123        20.527        0 \r\n 2005          176           22.721        33.145        20.244        0 \r\n 2005          177           25.788        34.633        20.451        0 \r\n 2005          178           25.734        34.317        19.125        4.064 \r\n 2005          179           17.337        29.924        19.254        0.254 \r\n 2005          180           18.681        32.527        19.843        0 \r\n 2005          181           19.557        29.794        18.899        9.652 \r\n 2005          182           29.862        25.048        14.054        0 \r\n 2005          183           26.072        25.978        11.814        0 \r\n 2005          184           16.837        30.198        13.578        1.778 \r\n 2005          185           9.244         25.007        16.479        4.572 \r\n 2005          186           26.382        27.888        14.726        0.254 \r\n 2005          187           29.26         27.978        13.661        0 \r\n 2005          188           26.592        29.062        14.725        0 \r\n 2005          189           26.661        30.512        15.376        0 \r\n 2005          190           23.345        32.603        17.228        0 \r\n 2005          191           26.741        32.8          16.754        0 \r\n 2005          192           23.14         31.441        15.44         0 \r\n 2005          193           20.132        30.566        19.272        0 \r\n 2005          194           20.674        31.489        19.373        0 \r\n 2005          195           27.174        33.092        18.291        0 \r\n 2005          196           25.128        33.757        19.013        0 \r\n 2005          197           25.76         34.79         18.319        0 \r\n 2005          198           25.485        35.833        20.549        0 \r\n 2005          199           23.292        30.672        17.018        0 \r\n 2005          200           28.465        32.301        13.802        0 \r\n 2005          201           19.858        34.668        20.677        2.286 \r\n 2005          202           22.224        33.966        23.222        0.508 \r\n 2005          203           27.557        34.348        19.721        0 \r\n 2005          204           18.069        34.267        22.683        0 \r\n 2005          205           25.827        37.463        22.768        0 \r\n 2005          206           22.689        37.207        21.53         0 \r\n 2005          207           5.008         23.931        15.508        18.542 \r\n 2005          208           26.114        24.524        12.414        4.318 \r\n 2005          209           27.653        26.576        11.411        0 \r\n 2005          210           20.235        29.804        14.508        0 \r\n 2005          211           24.769        31.654        17.247        0 \r\n 2005          212           9.349         26.902        17.126        0 \r\n 2005          213           24.006        33.181        16.272        0 \r\n 2005          214           24.416        34.159        18.481        0 \r\n 2005          215           20.864        35.261        21.991        0 \r\n 2005          216           20.941        29.088        17.97         0 \r\n 2005          217           21.977        28.901        14.515        0 \r\n 2005          218           26.076        30.072        11.753        0 \r\n 2005          219           25.784        32.637        12.387        0 \r\n 2005          220           23.184        33.935        15.344        0 \r\n 2005          221           23.228        36.282        17.846        6.35 \r\n 2005          222           23.072        32.539        19.685        1.524 \r\n 2005          223           15.843        29.621        20.365        12.192 \r\n 2005          224           8.31          27.058        19.101        4.572 \r\n 2005          225           6.519         22.176        16.918        2.54 \r\n 2005          226           16.847        25.743        14.037        2.032 \r\n 2005          227           20.943        28.077        13.074        1.524 \r\n 2005          228           23.508        29.463        14.049        1.27 \r\n 2005          229           20.432        29.473        14.391        0.762 \r\n 2005          230           20.543        33.188        20.357        1.016 \r\n 2005          231           20.843        32.609        18.016        0.762 \r\n 2005          232           19.95         29.993        17.996        0.508 \r\n 2005          233           19.837        29.312        16.597        0.254 \r\n 2005          234           23.234        25.269        14.134        0.254 \r\n 2005          235           19.897        24.612        11.328        0 \r\n 2005          236           17.257        26.697        11.716        0 \r\n 2005          237           7.467         25.177        18.624        2.032 \r\n 2005          238           12.045        28.132        19.534        1.27 \r\n 2005          239           21.528        30.042        15.808        0 \r\n 2005          240           19.949        30.356        14.986        0 \r\n 2005          241           20.684        31.354        13.792        0 \r\n 2005          242           19.873        29.995        13.984        0 \r\n 2005          243           20.255        29.828        12.16         0 \r\n 2005          244           20.737        29.769        13.253        0 \r\n 2005          245           15.342        29.575        12.714        0 \r\n 2005          246           19.861        31.582        10.612        0 \r\n 2005          247           10.797        27.178        14.608        0 \r\n 2005          248           19.353        32.074        15.565        0 \r\n 2005          249           16.881        31.766        16.936        0 \r\n 2005          250           14.647        30.958        16.779        0 \r\n 2005          251           12.812        29.025        15.463        4.064 \r\n 2005          252           17.571        32.489        17.602        0 \r\n 2005          253           17.708        33.353        17.859        0 \r\n 2005          254           17.874        32.923        17.519        0 \r\n 2005          255           15.657        32.171        17.189        0 \r\n 2005          256           9.648         30.043        17.956        0.508 \r\n 2005          257           18.782        25.542        9.431         0 \r\n 2005          258           4.801         19.278        8.337         0.762 \r\n 2005          259           18.385        26.278        9.378         0.254 \r\n 2005          260           18.143        26.995        8.104         0 \r\n 2005          261           17.309        30.625        13.661        0.254 \r\n 2005          262           8.205         29.851        15.621        2.794 \r\n 2005          263           17.823        31.574        10.818        0 \r\n 2005          264           17.801        32.498        12.086        0 \r\n 2005          265           11.04         29.754        17.093        0 \r\n 2005          266           8.548         21.826        14.864        0 \r\n 2005          267           7.624         26.394        16.468        0 \r\n 2005          268           7.592         28.824        17.086        0.508 \r\n 2005          269           7.624         22.319        9.127         0.508 \r\n 2005          270           17.266        25.717        6.12          0 \r\n 2005          271           3.066         18.234        6.673         7.112 \r\n 2005          272           17.585        18.809        2.033         2.286 \r\n 2005          273           16.685        23.725        5.082         0 \r\n 2005          274           15.316        29.801        9.964         0 \r\n 2005          275           7.026         27.184        15.104        0 \r\n 2005          276           11.691        31.037        20.618        0 \r\n 2005          277           13.592        31.312        20.976        0 \r\n 2005          278           13.305        29.166        8.6           5.334 \r\n 2005          279           14.661        10.724        2.831         0 \r\n 2005          280           6.877         10.686        1.55          0 \r\n 2005          281           15.753        15.691       -0.167         0 \r\n 2005          282           11.064        15.48         1.239         0 \r\n 2005          283           15.221        20.293        3.744         0 \r\n 2005          284           7.744         18.689        4.563         0 \r\n 2005          285           9.863         21.418        11.062        0 \r\n 2005          286           10.217        19.596        7.346         0.254 \r\n 2005          287           14.807        27.259        4.019         0 \r\n 2005          288           15.208        22.158        4.152         0 \r\n 2005          289           13.664        21.828        1.164         0 \r\n 2005          290           13.275        25.984        7.731         0.254 \r\n 2005          291           14.446        26.265        4.44          0 \r\n 2005          292           12.658        18.172        8.931         0 \r\n 2005          293           0.796         11.982        6.794         19.05 \r\n 2005          294           12.818        16.024        3.582         9.144 \r\n 2005          295           13.818        12.081        2.093         3.556 \r\n 2005          296           5.367         7.792         0.108         1.524 \r\n 2005          297           4.875         8.366         1.172         0.762 \r\n 2005          298           13.953        13.226       -0.038         0 \r\n 2005          299           12.046        13.777       -1.941         0 \r\n 2005          300           12.619        14.737       -2.474         0 \r\n 2005          301           13.043        16.48        -2.793         0 \r\n 2005          302           12.612        20.089        0.534         0 \r\n 2005          303           3.571         14.498        8.041         0 \r\n 2005          304           3.796         13.592        2.917         0 \r\n 2005          305           12.543        17.369       -2.135         0 \r\n 2005          306           12.128        22.982       -0.759         0 \r\n 2005          307           10.517        22.058        9.107         0 \r\n 2005          308           10.212        17.606        2.968         0 \r\n 2005          309           2.856         13.336        5.733         2.032 \r\n 2005          310           7.432         12.263        4.832         1.778 \r\n 2005          311           10.082        20.178        4.886         0 \r\n 2005          312           7.645         21.039        6.031         0 \r\n 2005          313           9.014         17.844        0.414         0 \r\n 2005          314           11.629        12.798       -3.875         0 \r\n 2005          315           9.607         19.269       -0.391         0 \r\n 2005          316           5.272         19.202        8.152         3.378 \r\n 2005          317           6.708         13.648       -0.403         0 \r\n 2005          318           1.65          6.373        -2.033         0 \r\n 2005          319           0.831         5.231        -1.177         11.811 \r\n 2005          320           6.263        -1.223        -10.637        0 \r\n 2005          321           10.707       -2.261        -14.164        0 \r\n 2005          322           9.171         8.496        -5.206         0 \r\n 2005          323           8.913         9.183         0.852         0 \r\n 2005          324           2.988         5.608         2.087         0 \r\n 2005          325           9.146         11.291       -0.586         0 \r\n 2005          326           8.618         5.362        -3.31          0 \r\n 2005          327           8.094         12.507        1.389         0 \r\n 2005          328           10.091        1.404        -10.388        0 \r\n 2005          329           3.028        -2.371        -8.526         0 \r\n 2005          330           8.812         12.281       -7.594         0 \r\n 2005          331           1.113         13.143        5.552         10.465 \r\n 2005          332           1.171         13.197       -1.316         0 \r\n 2005          333           2.801        -0.951        -6.489         0 \r\n 2005          334           7.474        -1.738        -9.848         5.842 \r\n 2005          335           8.986        -4.142        -14.414        0 \r\n 2005          336           5.246        -6.06         -14.758        0 \r\n 2005          337           4.987        -3.912        -8.532         0 \r\n 2005          338           9.432        -7.002        -16.887        0 \r\n 2005          339           9.038        -9.769        -20.361        0 \r\n 2005          340           7.793        -11.294       -20.532        0 \r\n 2005          341           8.287        -10.79        -24.258        5.766 \r\n 2005          342           5.303        -7.912        -16.315        2.718 \r\n 2005          343           9.651        -6.889        -21.887        0 \r\n 2005          344           4.633         2.339        -9.13          0 \r\n 2005          345           5.883         2.525        -3.416         0 \r\n 2005          346           4.231        -0.318        -6.041         0 \r\n 2005          347           8.256         4.697        -9.791         6.934 \r\n 2005          348           2.398         2.387        -1.161         0 \r\n 2005          349           4.848         1.254        -5.377         0 \r\n 2005          350           6.222        -4.475        -8.406         0 \r\n 2005          351           8.711        -6.909        -13.944        0 \r\n 2005          352           8.863        -9.949        -16.341        0 \r\n 2005          353           9.345        -9.307        -18.996        0 \r\n 2005          354           8.836        -2.777        -15.341        0 \r\n 2005          355           8.207         0.03         -17.077        0 \r\n 2005          356           8.791         7.517        -13.369        0 \r\n 2005          357           6.234         7.276         0.335         0 \r\n 2005          358           2.667         3.233         0.597         0 \r\n 2005          359           1.401         1.631         0.059         1 \r\n 2005          360           2.126         1.228        -0.948         0 \r\n 2005          361           7.213         8.399        -2.788         0 \r\n 2005          362           1.106         0.803        -0.234         0 \r\n 2005          363           1.346         1.867        -0.34          0 \r\n 2005          364           1.028         3.146         0.389         0 \r\n 2005          365           4.012         1.919        -2.707         0 \r\n 2006          1             2.344         4.253        -0.073         0 \r\n 2006          2             0.676         6.586         2.562         3.81 \r\n 2006          3             1.62          3.974         1.815         10.41 \r\n 2006          4             1.778         5.061         0.822         0 \r\n 2006          5             0.903         1.327        -1.849         0 \r\n 2006          6             3.276         0.916        -3.506         0 \r\n 2006          7             8.003         9.933        -1.999         0 \r\n 2006          8             8.567         7.256        -1.532         0 \r\n 2006          9             1.854         2.241        -6.802         0 \r\n 2006          10            2.046         1.722        -9.039         0 \r\n 2006          11            6.608         7.957        -1.258         2.79 \r\n 2006          12            9.168         12.919        0.694         0 \r\n 2006          13            3.621         1.954        -2.921         0 \r\n 2006          14            9.623         5.729        -6.86          0 \r\n 2006          15            9.153         11.75        -1.779         0 \r\n 2006          16            8.746         8.517        -3.262         0 \r\n 2006          17            4.697        -0.472        -5.432         0 \r\n 2006          18            8.648         6.207        -7.571         0 \r\n 2006          19            6.849         12.796       -4.952         0 \r\n 2006          20            1.388        -0.031        -3.349         0 \r\n 2006          21            6.194        -1.385        -5.205         9.65 \r\n 2006          22            6.101         1.133        -4.051         0 \r\n 2006          23            7.997         0.264        -7.237         0 \r\n 2006          24            9.788         5.052        -3.276         0 \r\n 2006          25            11.447        3.716        -6.541         0 \r\n 2006          26            10.953        11.326       -6.891         0 \r\n 2006          27            8.41          13.365        2.416         0 \r\n 2006          28            0.872         8.953         4.715         0 \r\n 2006          29            1.639         8.788         1.866         29.97 \r\n 2006          30            3.49          3.754        -0.351         0.51 \r\n 2006          31            11.054        9.191        -2.337         0 \r\n 2006          32            6.331         8.169        -0.957         0 \r\n 2006          33            8.539         11.714       -0.763         0 \r\n 2006          34            2.979         4.813        -6.762         4.32 \r\n 2006          35            4.793        -3.64         -9.794         0 \r\n 2006          36            12.619        0.443        -10.939        0 \r\n 2006          37            12.385        2.881        -10.513        0 \r\n 2006          38            6.466         2.508        -5.608         0 \r\n 2006          39            13.333       -0.168        -10.151        0 \r\n 2006          40            7.621        -0.492        -14.114        0 \r\n 2006          41            5.44          3.623        -6.107         0 \r\n 2006          42            12.365        0.919        -10.269        0 \r\n 2006          43            5.541        -2.261        -9.924         0.25 \r\n 2006          44            13.133        10.011       -11.817        0 \r\n 2006          45            14.09         17.109       -7.404         0 \r\n 2006          46            4.61          3.217        -3.077         0 \r\n 2006          47            1.736        -1.794        -9.401         2.29 \r\n 2006          48            11.792       -9.259        -19.848        7.11 \r\n 2006          49            15.198       -13.466       -23.108        0 \r\n 2006          50            8.561        -7.217        -19.346        0 \r\n 2006          51            14.785        1.199        -11.379        0 \r\n 2006          52            14.785        5.557        -9.953         0 \r\n 2006          53            15.239        8.048        -6.247         0 \r\n 2006          54            15.524        4.14         -4.59          0 \r\n 2006          55            13.813        13.27        -5.529         0 \r\n 2006          56            16.21         3.333        -8.334         0 \r\n 2006          57            15.832        4.449        -12.694        0 \r\n 2006          58            12.208        12.348       -3.519         0 \r\n 2006          59            9.716         8.02         -4.385         0 \r\n 2006          60            10.463        14.928        0.473         0 \r\n 2006          61            8.111         3.918        -1.677         0 \r\n 2006          62            16.919        7.868        -6.33          0 \r\n 2006          63            11.884        7.242        -7.201         0 \r\n 2006          64            1.961         2.633        -0.902         22.61 \r\n 2006          65            11.897        5.006        -1.666         7.37 \r\n 2006          66            7.907         5.545        -1.697         0 \r\n 2006          67            2.418         9.966         0.634         16.26 \r\n 2006          68            2.509         8.78          2.102         7.87 \r\n 2006          69            15.502        14.539       -1.322         0 \r\n 2006          70            15.255        21.96         3.96          0 \r\n 2006          71            3.103         8.903        -0.188         0 \r\n 2006          72            3.894         9.896        -3.97          28.19 \r\n 2006          73            18.692        8.256        -18.315        0 \r\n 2006          74            18.119        7.696        -7.182         0 \r\n 2006          75            13.662        11.842       -0.252         1.02 \r\n 2006          76            19.163        2.599        -23.27         0 \r\n 2006          77            19.45         13.358       -14.763        0 \r\n 2006          78            14.863        8.87         -19.275        0 \r\n 2006          79            7.892         5.364        -2.512         0 \r\n 2006          80            15.196        1.791        -5.354         6.35 \r\n 2006          81            20.979        5.947        -29.401        1.78 \r\n 2006          82            10.702        6.551        -4.873         0 \r\n 2006          83            8.473         3.271        -1.606         0 \r\n 2006          84            13.284        8.496        -25.626        0 \r\n 2006          85            21.055        28.331       -12.651        0 \r\n 2006          86            1.372         6.194         1.534         0 \r\n 2006          87            3.628         7.18         -1.128         17.02 \r\n 2006          88            14.584        13.29         0.407         0 \r\n 2006          89            11.277        18.08         3.993         0 \r\n 2006          90            9.871         13.76         4.859         0 \r\n 2006          91            6.679         8.3           4.259         0 \r\n 2006          92            6.558         14.49         4.459         17.78 \r\n 2006          93            19.005        11.09         2.593         0.254 \r\n 2006          94            22.854        14.88        -0.454         0 \r\n 2006          95            19.684        20.668       -1.254         2.54 \r\n 2006          96            5.099         16.244        10.252        13.716 \r\n 2006          97            16.811        14.447        1.084         0.254 \r\n 2006          98            23.306        11.706       -2.622         0 \r\n 2006          99            21.767        16.061       -2.085         0 \r\n 2006          100           22.552        24.916        5.196         0 \r\n 2006          101           13.126        23.293        11.922        3.048 \r\n 2006          102           23.475        23.764        10.316        0 \r\n 2006          103           22.11         30.385        11.301        0 \r\n 2006          104           17.347        28.982        12.443        0 \r\n 2006          105           17.417        25.816        7.79          3.556 \r\n 2006          106           10.56         18.516        10.589        10.16 \r\n 2006          107           20.027        17.831        8.984         0 \r\n 2006          108           23.047        21.357        6.589         0 \r\n 2006          109           25.333        20.357        6.454         0 \r\n 2006          110           25.038        17.814        4.794         0 \r\n 2006          111           23.588        19.591        3.954         0 \r\n 2006          112           25.37         19.846        5.832         0 \r\n 2006          113           26.025        22.948        2.871         0 \r\n 2006          114           20.485        22.728        6.378         0 \r\n 2006          115           8.766         12.223        0.761         4.064 \r\n 2006          116           26.589        17.309       -0.115         0 \r\n 2006          117           25.931        20.367        2.364         0 \r\n 2006          118           9.242         19.146        7.582         0 \r\n 2006          119           2.219         13.441        10.938        16.256 \r\n 2006          120           11.113        15.32         11.877        4.064 \r\n 2006          121           18.211        15.164        9.056         0 \r\n 2006          122           24.806        23.184        5.957         0 \r\n 2006          123           11.342        19.541        8.964         12.446 \r\n 2006          124           22.751        17.108        6.877         0 \r\n 2006          125           22.408        12.642        2.897         0 \r\n 2006          126           25.213        17.537       -0.625         0 \r\n 2006          127           27.079        21.212        2.307         0 \r\n 2006          128           16.172        22.593        10.761        0 \r\n 2006          129           9.845         22.048        11.363        5.842 \r\n 2006          130           16.565        18.864        8.857         0 \r\n 2006          131           16.394        12.853        6.638         0 \r\n 2006          132           8.283         12.916        4.237         6.604 \r\n 2006          133           5.994         9.816         4.408         1.778 \r\n 2006          134           4.546         13.354        5.173         2.286 \r\n 2006          135           14.641        18.539        9.85          0.254 \r\n 2006          136           15.986        21.829        10.151        0 \r\n 2006          137           23.615        25.423        9.502         0 \r\n 2006          138           27.688        20.893        8.308         0 \r\n 2006          139           27.046        26.905        8.286         0 \r\n 2006          140           22.387        23.697        7.719         0 \r\n 2006          141           24.292        19.441        10.987        0 \r\n 2006          142           25.523        23.422        9.324         0 \r\n 2006          143           27.668        27.676        9.907         0 \r\n 2006          144           23.324        29.819        16.301        1.524 \r\n 2006          145           13.515        25.203        17.336        0 \r\n 2006          146           25.348        27.601        15.692        0 \r\n 2006          147           19.937        30.738        17.134        0.254 \r\n 2006          148           26.508        33.281        20.244        0 \r\n 2006          149           24.105        32.037        21.682        0 \r\n 2006          150           13.484        25.579        16.663        0 \r\n 2006          151           13.127        28.009        15.852        0 \r\n 2006          152           26.265        28.458        13.87         0 \r\n 2006          153           28.466        29.887        12.854        0 \r\n 2006          154           28.874        29.783        13.951        0 \r\n 2006          155           27.962        27.519        14.961        0.508 \r\n 2006          156           28.101        28.266        12.836        0 \r\n 2006          157           14.611        28.436        17.124        13.97 \r\n 2006          158           28.961        30.621        16.893        0.254 \r\n 2006          159           25.77         31.552        16.068        0 \r\n 2006          160           15.765        25.286        16.371        0 \r\n 2006          161           8.576         17.116        9.966         1.27 \r\n 2006          162           8.48          16.233        10.508        0 \r\n 2006          163           28.582        23.594        8.647         0 \r\n 2006          164           29.215        28.012        10.474        0 \r\n 2006          165           15.378        25.641        15.151        0 \r\n 2006          166           14.502        27.612        17.113        0 \r\n 2006          167           26.232        31.834        20.321        0 \r\n 2006          168           22.014        31.073        20.466        0 \r\n 2006          169           18.971        29.834        19.755        0 \r\n 2006          170           29.606        30.068        15.833        0 \r\n 2006          171           10.868        27.262        14.363        0.508 \r\n 2006          172           13.892        30.064        20.179        0.254 \r\n 2006          173           13.73         26.341        17.678        11.684 \r\n 2006          174           26.372        28.363        15.597        0 \r\n 2006          175           20.49         28.209        15.044        0 \r\n 2006          176           19.162        24.564        15.942        11.176 \r\n 2006          177           12.19         23.982        14.111        0 \r\n 2006          178           25.839        27.021        12.284        0 \r\n 2006          179           26.157        27.291        13.245        0 \r\n 2006          180           27.421        29.307        13.01         0 \r\n 2006          181           14.989        28.887        17.227        0.508 \r\n 2006          182           18.978        33.271        19.333        0.508 \r\n 2006          183           13.372        30.341        21.413        0 \r\n 2006          184           15.491        31.017        20.748        25.4 \r\n 2006          185           28.758        28.084        16.196        0 \r\n 2006          186           27.912        27.444        13.484        0 \r\n 2006          187           27.743        29.045        12.17         0 \r\n 2006          188           25.241        28.574        12.927        0 \r\n 2006          189           25.896        29.271        13.547        0 \r\n 2006          190           28.258        33.091        18.806        0 \r\n 2006          191           18.91         28.827        20.072        0 \r\n 2006          192           9.512         28.305        21.297        0.762 \r\n 2006          193           14.174        28.506        20.73         0 \r\n 2006          194           17.147        32.519        19.921        6.096 \r\n 2006          195           18.676        31.829        19.545        0 \r\n 2006          196           19.26         34.481        19.408        0 \r\n 2006          197           19.111        35.268        20.759        0 \r\n 2006          198           18.676        36.851        22.865        1.778 \r\n 2006          199           20.283        32.149        19.416        0 \r\n 2006          200           14.707        31.664        18.209        0 \r\n 2006          201           16.892        31.074        21.483        0 \r\n 2006          202           5.878         23.894        15.965        11.43 \r\n 2006          203           19.653        28.792        14.877        0 \r\n 2006          204           20.434        30.682        14.904        0 \r\n 2006          205           13.585        32.12         19.508        0 \r\n 2006          206           14.154        32.943        19.281        6.858 \r\n 2006          207           15.866        31.35         21.061        15.494 \r\n 2006          208           14.721        30.534        21.253        0 \r\n 2006          209           22.259        32.574        20.483        0 \r\n 2006          210           20.81         35.261        21.402        0 \r\n 2006          211           21.797        36.473        23.602        0 \r\n 2006          212           22.178        36.531        23.7          0 \r\n 2006          213           19.615        34.982        23.829        0 \r\n 2006          214           15.157        34.045        23.944        0 \r\n 2006          215           20.643        29.47         19.016        18.796 \r\n 2006          216           23.22         31.806        16.249        0 \r\n 2006          217           13.057        30.115        16.329        0 \r\n 2006          218           19.009        32.381        19.752        0 \r\n 2006          219           11.116        29.859        20.506        17.018 \r\n 2006          220           7.425         25.118        18.353        0 \r\n 2006          221           10.17         29.539        17.849        25.908 \r\n 2006          222           11.353        29.497        20.652        1.016 \r\n 2006          223           11.322        27.14         18.965        0 \r\n 2006          224           20.455        29.077        16.643        0 \r\n 2006          225           17.35         30.413        16.697        2.286 \r\n 2006          226           15.596        26.916        16.715        0 \r\n 2006          227           22.15         29.316        14.834        0 \r\n 2006          228           20.807        29.186        14.76         0 \r\n 2006          229           10.294        27.752        18.191        2.794 \r\n 2006          230           4.773         25.361        19.894        14.478 \r\n 2006          231           7.157         26.051        17.953        0.254 \r\n 2006          232           19.023        27.346        14.903        0 \r\n 2006          233           17.546        29.201        14.246        0 \r\n 2006          234           19.2          30.082        15.288        0 \r\n 2006          235           19.193        30.703        17.702        0 \r\n 2006          236           18.358        32.589        18.919        0 \r\n 2006          237           15.123        30.678        19.509        0 \r\n 2006          238           8.516         27.439        20.354        10.922 \r\n 2006          239           4.862         25.322        18.572        8.636 \r\n 2006          240           2.803         20.958        15.154        9.652 \r\n 2006          241           14.604        24.276        15.288        0.254 \r\n 2006          242           17.671        26.77         13.186        0 \r\n 2006          243           18.759        26.351        12.471        0 \r\n 2006          244           14.52         25.436        12.658        0 \r\n 2006          245           17.176        26.874        13.758        0 \r\n 2006          246           4.678         20.854        12.022        3.81 \r\n 2006          247           11.084        22.845        11.065        7.874 \r\n 2006          248           15.217        26.501        11.316        0 \r\n 2006          249           17.45         29.479        12.373        0 \r\n 2006          250           17.847        28.464        12.008        0 \r\n 2006          251           16.489        30.249        12.118        0 \r\n 2006          252           5.709         22.467        13.904        1.524 \r\n 2006          253           6.777         19.749        14.839        0.254 \r\n 2006          254           5.782         21.344        14.593        7.874 \r\n 2006          255           3.401         16.552        13.111        0 \r\n 2006          256           14.279        23.311        10.614        0 \r\n 2006          257           18.18         26.275        9.182         0 \r\n 2006          258           17.746        27.687        10.253        0 \r\n 2006          259           12.927        30.716        15.309        0 \r\n 2006          260           5.594         25.406        9.98          4.572 \r\n 2006          261           16.64         18.267        7.642         0.254 \r\n 2006          262           8.058         13.505        5.34          0 \r\n 2006          263           17.829        18.545        1.872         0 \r\n 2006          264           9.552         21.066        8.429         0 \r\n 2006          265           9.019         25.324        11.963        2 \r\n 2006          266           6.452         21.857        10.302        0 \r\n 2006          267           14.942        20.891        8.996         0.5 \r\n 2006          268           16.937        24.783        6.82          0 \r\n 2006          269           16.814        25.894        5.917         0 \r\n 2006          270           10.941        19.162        8.319         0 \r\n 2006          271           15.319        16.638        5.277         0 \r\n 2006          272           10.933        20.444        6.651         0 \r\n 2006          273           13.146        24.458        7.936         0 \r\n 2006          274           15.857        31.617        6.459         0 \r\n 2006          275           11.136        31.153        17.819        0 \r\n 2006          276           14.364        34.187        15.245        0 \r\n 2006          277           5.536         26.724        12.649        0 \r\n 2006          278           15.695        19.842        5.414         0 \r\n 2006          279           16.065        21.487        1.534         0 \r\n 2006          280           15.765        25.084        4.413         0 \r\n 2006          281           13.637        25.937        6.981         0 \r\n 2006          282           12.708        20.345        9.707         0 \r\n 2006          283           5.934         14.109        9.283         4.064 \r\n 2006          284           5.275         9.936        -0.271         0.762 \r\n 2006          285           13.207        6.392        -1.309         0 \r\n 2006          286           15.753        12.072       -1.434         0 \r\n 2006          287           15.549        12.113       -1.616         0 \r\n 2006          288           3.872         12.539        1.164         0.762 \r\n 2006          289           1.585         13.857        9.347         9.652 \r\n 2006          290           4.834         16.421        9.204         3.048 \r\n 2006          291           1.676         11.073        4.117         9.144 \r\n 2006          292           8.421         8.409        -0.142         0 \r\n 2006          293           8.397         14.076       -1.622         0 \r\n 2006          294           2.356         10.83         2.226         7.62 \r\n 2006          295           10.521        5.329        -0.732         0 \r\n 2006          296           7.235         5.061        -3.633         0 \r\n 2006          297           13.817        9.897        -5.093         0 \r\n 2006          298           7.039         12.958       -1.913         0 \r\n 2006          299           1.66          7.537         5.368         7.112 \r\n 2006          300           2.63          10.023        2.671         0 \r\n 2006          301           8.048         11.931        1.855         0 \r\n 2006          302           12.9          18.172       -1.516         0 \r\n 2006          303           7.773         21.685        1.824         0 \r\n 2006          304           11.93         5.633        -4.089         0 \r\n 2006          305           10.95         7.403        -6.151         0 \r\n 2006          306           12.704        3.907        -7.77          0 \r\n 2006          307           11.925        10.546       -9.257         0 \r\n 2006          308           5.447         12.944        1.524         0 \r\n 2006          309           5.253         15.088       -1.802         0 \r\n 2006          310           8.012         16.02         6.902         0 \r\n 2006          311           8.563         17.561        3.826         0 \r\n 2006          312           11.063        23.954        5.819         0 \r\n 2006          313           11.053        19.769        5.854         0 \r\n 2006          314           0.755         8.654         0.292         0 \r\n 2006          315           9.132         4.526        -5.066         24.89 \r\n 2006          316           10.565        9.443        -5.717         0 \r\n 2006          317           3.895         8.221         0.827         2.29 \r\n 2006          318           2.378         6.406        -0.321         0 \r\n 2006          319           2.552         7.228         1.137         0 \r\n 2006          320           4.52          4.107        -2.084         0 \r\n 2006          321           9.723         10.394       -2.571         0 \r\n 2006          322           1.492         4.584        -1.492         0 \r\n 2006          323           10.447        6.214        -4.394         0 \r\n 2006          324           10.279        11.259       -6.625         0 \r\n 2006          325           9.225         13.882       -0.119         0 \r\n 2006          326           9.611         16.848       -1.738         0 \r\n 2006          327           8.063         17.79        -1.893         0 \r\n 2006          328           7.577         16.562        3.543         0 \r\n 2006          329           5.94          14.639        3.677         0 \r\n 2006          330           5.456         16.763        4.982         0 \r\n 2006          331           2.797         16.749        11.581        0 \r\n 2006          332           4.505         18.741        10.283        33.02 \r\n 2006          333           0.782         12.744       -2.622         5.84 \r\n 2006          334           1.999        -2.528        -8.617         11.43 \r\n 2006          335           7.346        -1.218        -8.047         0 \r\n 2006          336           9.098        -0.457        -10.011        0 \r\n 2006          337           8.731        -6.594        -12.932        0 \r\n 2006          338           7.586         4.452        -12.858        0 \r\n 2006          339           4.225         3.171        -13.054        0 \r\n 2006          340           4.446         3.679        -7.723         0 \r\n 2006          341           9.302        -6.882        -15.044        0.25 \r\n 2006          342           8.405        -0.804        -16.169        0 \r\n 2006          343           8.83          7.146        -6.233         0 \r\n 2006          344           5.8           9.468         0.181         0 \r\n 2006          345           1.444         8.48          0.013         0 \r\n 2006          346           3.537         12.478        0.323         0 \r\n 2006          347           8.459         10.442       -4.584         0 \r\n 2006          348           6.819         15.273        0.169         0 \r\n 2006          349           7.323         7.644        -1.292         0 \r\n 2006          350           3.227         14.938        1.913         0 \r\n 2006          351           2.878         8.121         1.064         0 \r\n 2006          352           7.743         4.521        -5.73          0 \r\n 2006          353           8.639         7.919        -9.787         0 \r\n 2006          354           0.937         3.881        -5.95          0 \r\n 2006          355           1.271         8.896         3.724         40.64 \r\n 2006          356           2.224         5.747         2.543         1.52 \r\n 2006          357           7.692         5.322        -2.899         19.05 \r\n 2006          358           6.504         6.231        -5.701         0 \r\n 2006          359           3.64          1.798        -1.924         0 \r\n 2006          360           8.679         3.654        -6.088         0 \r\n 2006          361           3.256         6.174        -2.246         0 \r\n 2006          362           6.745         11.359       -0.565         0 \r\n 2006          363           4.99          12.883        2.71          0 \r\n 2006          364           1.987         11.574        2.886         0.25 \r\n 2006          365           2.698         11.618        0.052         15.24 \r\n 2007          1             8.951         4.444        -4.591         0.25 \r\n 2007          2             7.293         4.926        -7.542         0 \r\n 2007          3             8.806         10.714       -0.932         0 \r\n 2007          4             5.558         11.268        3.08          0 \r\n 2007          5             7.176         10.572        0.777         0 \r\n 2007          6             8.906         6.895        -3.41          0 \r\n 2007          7             6.162         6.748        -5.904         0 \r\n 2007          8             7.681         5.568        -5.015         0 \r\n 2007          9             9.092         2.377        -7.595         0 \r\n 2007          10            7.603         6.567        -10.112        0 \r\n 2007          11            2.651         10.261        1.417         0 \r\n 2007          12            1.642         4.769        -7.611         1.02 \r\n 2007          13            1.267        -3.023        -7.603         0 \r\n 2007          14            1.21         -1.022        -4.093         1.78 \r\n 2007          15            4.89         -3.572        -14.887        8.13 \r\n 2007          16            9.592        -10.353       -20.017        1.27 \r\n 2007          17            7.78         -5.097        -20.324        0 \r\n 2007          18            3.427        -0.097        -5.938         0 \r\n 2007          19            10.415       -1.661        -11.407        0 \r\n 2007          20            8.311        -3.011        -16.058        0 \r\n 2007          21            4.977        -0.558        -5.006         8.89 \r\n 2007          22            5.873        -2.261        -5.24          1.02 \r\n 2007          23            8.09         -2.057        -9.508         0 \r\n 2007          24            5.04         -1.027        -11.174        1.52 \r\n 2007          25            9.583         1.488        -15.185        0 \r\n 2007          26            11.316        8.014        -10.932        0 \r\n 2007          27            9.501        -0.114        -14.665        0 \r\n 2007          28            11.764       -10.358       -18.091        0 \r\n 2007          29            9.263        -1.413        -13.548        0 \r\n 2007          30            11.753       -11.555       -17.057        0 \r\n 2007          31            7.323        -5.97         -19.039        0 \r\n 2007          32            12.202       -6.2          -15.462        0 \r\n 2007          33            12.724       -10.559       -19.472        0 \r\n 2007          34            12.711       -10.615       -21.631        0 \r\n 2007          35            12.386       -14.942       -21.912        0 \r\n 2007          36            8.271        -12.702       -22.975        0 \r\n 2007          37            5.723        -11.784       -18.553        1.27 \r\n 2007          38            9.645        -11.289       -18.832        1.78 \r\n 2007          39            13.47        -11.555       -19.879        0 \r\n 2007          40            12.741       -9.778        -16.579        0 \r\n 2007          41            13.873       -10.588       -20.253        0 \r\n 2007          42            9.509         3.653        -10.988        0 \r\n 2007          43            4.824        -0.238        -4.046         0 \r\n 2007          44            6.547        -3.964        -11.408        3.05 \r\n 2007          45            14.546       -8.446        -18.171        4.32 \r\n 2007          46            14.687       -12.15        -21.632        0 \r\n 2007          47            10.573       -4.976        -22.781        0 \r\n 2007          48            8.644        -5            -22.781        1.27 \r\n 2007          49            13.472       -0.144        -11.839        0 \r\n 2007          50            11.216        8.072        -5.149         0 \r\n 2007          51            12.27         7.897        -2.749         0 \r\n 2007          52            14.588        12.86        -3.679         0 \r\n 2007          53            15.433        5.314        -1.996         0 \r\n 2007          54            4.123         3.373        -1.618         0 \r\n 2007          55            0.925         1.522        -1.77          0.51 \r\n 2007          56            3.262         2.875        -1.322         33.02 \r\n 2007          57            12.693       -0.293        -3.906         0 \r\n 2007          58            7.59          1.069        -3.277         0 \r\n 2007          59            3.07          2.099        -2.316         0 \r\n 2007          60            3.008         7.359        -2.56          15.24 \r\n 2007          61            8.408        -1.547        -5.781         1.27 \r\n 2007          62            13.645       -4.063        -10.727        0 \r\n 2007          63            17.453        2.242        -12.697        0 \r\n 2007          64            15.493        3.392        -5.542         0 \r\n 2007          65            12.655        1.506        -7.362         0 \r\n 2007          66            9.85         -0.037        -5.298         0 \r\n 2007          67            16.81         8.523        -5.312         0 \r\n 2007          68            2.031         6.097        -1.754         0 \r\n 2007          69            17.62         13.304       -1.891         6.86 \r\n 2007          70            16.07         14.316       -3.392         0 \r\n 2007          71            16.926        20.856        2.621         0 \r\n 2007          72            17.044        24.979        8.434         0 \r\n 2007          73            11.753        17.726        2.047         0 \r\n 2007          74            14.767        9.14         -2.405         0 \r\n 2007          75            10.178        4.634        -4.071         0 \r\n 2007          76            11.517        6.551        -4.516         0 \r\n 2007          77            17.239        10.571       -5.456         0 \r\n 2007          78            18.535        16.154        1.464         0 \r\n 2007          79            17.801        13.619       -3.859         0 \r\n 2007          80            6.137         20.404        7.062         22.1 \r\n 2007          81            16.283        19.016        7.031         13.46 \r\n 2007          82            6.971         19.736        8.032         13.46 \r\n 2007          83            9.031         21.798        13.102        3.3 \r\n 2007          84            15.408        26.722        13.358        4.57 \r\n 2007          85            16.148        25.564        15.982        0 \r\n 2007          86            13.59         24.993        12.617        0 \r\n 2007          87            4.202         15.808        10.534        0 \r\n 2007          88            6.659         15.509        8.067         0 \r\n 2007          89            7.571         18.147        11.638        19.812 \r\n 2007          90            7.597         22.996        9.325         8.89 \r\n 2007          91            6.69          12.59         5.236         0.762 \r\n 2007          92            16.765        17.204        2.861         0 \r\n 2007          93            5.368         16.609       -2.448         5.334 \r\n 2007          94            13.417        1.572        -5.845         0 \r\n 2007          95            22.924        4.881        -5.051         0 \r\n 2007          96            17.636        0.962        -6.221         0 \r\n 2007          97            20.628        3.609        -8.209         0 \r\n 2007          98            13.958        4.762        -3.779         0 \r\n 2007          99            20.144        9.612        -3.103         0 \r\n 2007          100           6.505         10.807       -2.757         0 \r\n 2007          101           1.754         3.7          -0.526         17.27 \r\n 2007          102           10.08         5.938        -0.847         13.97 \r\n 2007          103           18.309        10.462       -1.891         0 \r\n 2007          104           12.403        10.952        0.082         0 \r\n 2007          105           22.609        18.034       -1.773         0 \r\n 2007          106           25.021        22.741        1.616         0 \r\n 2007          107           16.623        25.044        6.507         0 \r\n 2007          108           25.09         17.618        3.496         0 \r\n 2007          109           18.955        16.713        4.422         0 \r\n 2007          110           24.886        22.926        2.471         0 \r\n 2007          111           24.86         27.56         6.071         0 \r\n 2007          112           18.431        29.157        10.419        0.254 \r\n 2007          113           6.948         20.472        9.184         0 \r\n 2007          114           8.847         19.887        6.293         9.652 \r\n 2007          115           2.339         11.652        7.623         25.654 \r\n 2007          116           4.003         10.295        6.539         10.922 \r\n 2007          117           21.85         21.304        7.151         7.112 \r\n 2007          118           26.196        24.845        10.943        0 \r\n 2007          119           26.086        31.486        11.354        0 \r\n 2007          120           25.94         31.792        15.477        0 \r\n 2007          121           20.348        27.464        13.646        0 \r\n 2007          122           20.618        22.328        11.383        0 \r\n 2007          123           4.362         19.428        11.653        0.508 \r\n 2007          124           4.363         18.239        12.339        19.05 \r\n 2007          125           17.598        25.979        15.887        0 \r\n 2007          126           1.801         18.124        10.598        22.86 \r\n 2007          127           20.234        25.811        13.476        0.254 \r\n 2007          128           24.791        26.434        15.419        0 \r\n 2007          129           26.632        28.027        13.551        0 \r\n 2007          130           21.831        29.736        12.164        0 \r\n 2007          131           26.884        31.796        14.871        0 \r\n 2007          132           24.636        27.44         10.797        0 \r\n 2007          133           26.292        28.668        11.933        0 \r\n 2007          134           26.52         32.861        17.58         0 \r\n 2007          135           5.851         23.109        10.763        8.382 \r\n 2007          136           21.442        22.874        8.023         0 \r\n 2007          137           28.45         19.883        5.718         0 \r\n 2007          138           29.342        23.409        3.34          0 \r\n 2007          139           27.153        28.395        9.524         0 \r\n 2007          140           24.79         29.162        15.323        0 \r\n 2007          141           26.933        30.302        13.371        0 \r\n 2007          142           17.386        29.213        15.779        0 \r\n 2007          143           24.206        30.669        20.76         0 \r\n 2007          144           11.93         27.696        11.243        4.572 \r\n 2007          145           25.406        23.242        8.617         0 \r\n 2007          146           8.691         23.508        16.296        21.082 \r\n 2007          147           28.058        23.866        11.934        6.604 \r\n 2007          148           15.123        27.766        14.309        1.524 \r\n 2007          149           24.731        30.512        18.574        0.762 \r\n 2007          150           17.646        27.638        18.117        1.27 \r\n 2007          151           20.189        26.828        16.222        4.318 \r\n 2007          152           14.513        26.454        16.374        3.048 \r\n 2007          153           17.083        25.467        16.111        2.286 \r\n 2007          154           19.272        23.738        15.567        1.778 \r\n 2007          155           19.779        26.194        15.666        1.524 \r\n 2007          156           28.397        23.048        11.615        1.27 \r\n 2007          157           18.147        29.081        11.337        1.27 \r\n 2007          158           14.834        30.621        21.155        1.016 \r\n 2007          159           30.125        23.503        11.182        0.762 \r\n 2007          160           29.883        26.69         8.768         0 \r\n 2007          161           14.851        26.827        12.176        0 \r\n 2007          162           27.706        30.996        14.247        0 \r\n 2007          163           27.429        33.02         14.629        0 \r\n 2007          164           29.027        32.707        14.492        0 \r\n 2007          165           27.364        34.364        15.982        0 \r\n 2007          166           24.267        34.012        17.532        0 \r\n 2007          167           26.858        33.707        18.871        0 \r\n 2007          168           24.596        33.241        20.573        0 \r\n 2007          169           13.877        28.673        20.914        18.542 \r\n 2007          170           28.06         26.736        13.833        0 \r\n 2007          171           29.59         30.799        12.572        0 \r\n 2007          172           22.099        32.583        18.553        26.924 \r\n 2007          173           17.093        26.018        17.513        3.048 \r\n 2007          174           7.625         21.156        16.595        76 \r\n 2007          175           9.16          24.759        17.449        0.508 \r\n 2007          176           26.813        30.79         16.956        1.016 \r\n 2007          177           26.056        32.579        20.601        0.508 \r\n 2007          178           12.126        30.369        20.472        12.5 \r\n 2007          179           16.092        24.784        16.373        0 \r\n 2007          180           20.352        24.475        13.423        0.254 \r\n 2007          181           22.833        26.254        12.049        0 \r\n 2007          182           28.661        28.741        12.073        0 \r\n 2007          183           28.386        28.898        13.508        0 \r\n 2007          184           24.722        30.719        16.227        0 \r\n 2007          185           25.843        31.61         20.176        0 \r\n 2007          186           29.009        32.447        19.044        0 \r\n 2007          187           27.904        32.778        17.144        0 \r\n 2007          188           27.484        33.671        19.148        0 \r\n 2007          189           27.804        33.758        22.062        0 \r\n 2007          190           23.099        32.446        20.936        4.064 \r\n 2007          191           21.222        30.748        17.644        0 \r\n 2007          192           28.335        26.332        13.974        0 \r\n 2007          193           25.345        27.867        13.691        0 \r\n 2007          194           29.261        27.217        12.579        0 \r\n 2007          195           25.885        30.742        15.603        0 \r\n 2007          196           26.833        29.71         14.036        0 \r\n 2007          197           13.85         28.998        16.784        13.208 \r\n 2007          198           20.914        30.853        18.986        2.54 \r\n 2007          199           15.437        31.901        21.066        0.254 \r\n 2007          200           18.316        30.123        17.463        52 \r\n 2007          201           26.287        25.616        13.946        0 \r\n 2007          202           27.728        26.472        12.362        0 \r\n 2007          203           19.969        26.807        13.661        0 \r\n 2007          204           27.602        28.257        15.748        0 \r\n 2007          205           26.678        29.521        15.09         0 \r\n 2007          206           25.912        30.674        16.574        0 \r\n 2007          207           25.564        31.617        17.559        7.112 \r\n 2007          208           15.762        29.606        20.892        13.462 \r\n 2007          209           24.651        28.529        20.056        0 \r\n 2007          210           21.738        29.966        18.726        0 \r\n 2007          211           26.831        30.349        16.734        0 \r\n 2007          212           26.087        31.487        16.012        0 \r\n 2007          213           25.365        32.191        17.892        0 \r\n 2007          214           21.619        31.807        18.669        0 \r\n 2007          215           25.487        31.243        16.409        0 \r\n 2007          216           7.468         26.435        18.222        31.75 \r\n 2007          217           20.264        32.343        22.547        0.762 \r\n 2007          218           14.199        31.099        23.571        0.508 \r\n 2007          219           22.526        32.972        21.811        15.494 \r\n 2007          220           13.525        28.953        20.38         2.032 \r\n 2007          221           19.118        30.885        20.39         59 \r\n 2007          222           23.756        34.186        20.698        1.27 \r\n 2007          223           23.176        33.453        19.642        0.508 \r\n 2007          224           23.413        33.432        21.641        0 \r\n 2007          225           21.109        32.746        21.244        0 \r\n 2007          226           20.127        32.348        22.279        0 \r\n 2007          227           16.574        31.599        22.784        5.59 \r\n 2007          228           6.793         28.005        17.978        0 \r\n 2007          229           20.881        28.141        15.828        1.78 \r\n 2007          230           17.836        28.124        17.15         6.86 \r\n 2007          231           7.659         29.032        20.556        0 \r\n 2007          232           7.532         27.341        20.398        17.02 \r\n 2007          233           18.082        32.259        20.929        8.89 \r\n 2007          234           17.656        32.376        20.797        0 \r\n 2007          235           12.855        29.326        20.22         22.1 \r\n 2007          236           8.413         24.757        19.427        25.65 \r\n 2007          237           20.404        27.279        15.582        3.3 \r\n 2007          238           20.723        28.207        13.499        0 \r\n 2007          239           19.45         31.53         18.408        0 \r\n 2007          240           17.058        33.4          20.707        0 \r\n 2007          241           13.259        27.745        18.422        0 \r\n 2007          242           15.269        27.418        13.673        0.25 \r\n 2007          243           17.032        27.246        11.701        0 \r\n 2007          244           17.2          28.322        11.814        0 \r\n 2007          245           17.23         30.557        11.861        0 \r\n 2007          246           16.813        32.033        12.969        0 \r\n 2007          247           16.273        33.111        14.159        0 \r\n 2007          248           15.174        31.593        17.739        0 \r\n 2007          249           10.05         28.427        20.522        0 \r\n 2007          250           14.062        28.171        15.664        8.636 \r\n 2007          251           19.116        28.526        12.867        0 \r\n 2007          252           17.583        28.154        13.14         0 \r\n 2007          253           4.929         19.572        10.518        1.524 \r\n 2007          254           19.243        22.733        7.844         0.254 \r\n 2007          255           19.55         21.657        3.797         0 \r\n 2007          256           18.613        28.285        6.886         0 \r\n 2007          257           19.01         17.657        3.528         0 \r\n 2007          258           19.418        18.531        0.222         0.254 \r\n 2007          259           17.609        24.732        9.996         0 \r\n 2007          260           16.321        32.072        15.223        0 \r\n 2007          261           16.904        30.745        17.764        1.778 \r\n 2007          262           15.941        27.367        14.031        4.572 \r\n 2007          263           17.352        30.863        12.449        0 \r\n 2007          264           16.835        31.523        16.483        0.254 \r\n 2007          265           18.463        25.947        8.952         0 \r\n 2007          266           16.564        32.162        10.039        0 \r\n 2007          267           11.554        30.648        18.046        5.588 \r\n 2007          268           1.996         24.74         12.077        0.254 \r\n 2007          269           18.102        21.638        7.641         0 \r\n 2007          270           15.252        25.925        10.118        0 \r\n 2007          271           17.808        25.156        7.697         0 \r\n 2007          272           15.849        27.754        9.058         0 \r\n 2007          273           15.436        29.226        13.383        0 \r\n 2007          274           6.174         22.799        13.777        8.13 \r\n 2007          275           5.524         23.442        12.037        0 \r\n 2007          276           17.122        24.397        8.82          9.4 \r\n 2007          277           14.298        28.688        9.543         0 \r\n 2007          278           13.797        30.704        16.343        0 \r\n 2007          279           12.295        30.729        19.323        0 \r\n 2007          280           12.861        31.048        18.979        0 \r\n 2007          281           8.038         23.997        12.832        0.254 \r\n 2007          282           16.054        23.758        9.027         0 \r\n 2007          283           10.004        13.287        6.262         0 \r\n 2007          284           14.582        14.819        3.668         0 \r\n 2007          285           11.156        17.283        4.026         0 \r\n 2007          286           3.554         16.462        9.98          2.5 \r\n 2007          287           7.465         21.32         11.645        0 \r\n 2007          288           5.988         18.622        9.965         2 \r\n 2007          289           3.7           14.737        7.843         1 \r\n 2007          290           3.668         17.751        7.274         0 \r\n 2007          291           9.173         20.03         12.718        61 \r\n 2007          292           4.893         15.602        8.641         0 \r\n 2007          293           14.419        24.678        5.675         0 \r\n 2007          294           10.83         24.643        12.126        0 \r\n 2007          295           2.412         12.809        6.951         0 \r\n 2007          296           14.479        16.846        1.178         1 \r\n 2007          297           14.555        14.661        1.991         0 \r\n 2007          298           14.275        15.133       -0.15          0 \r\n 2007          299           6.518         14.284        9.273         0 \r\n 2007          300           13.486        15.212        1.676         0 \r\n 2007          301           13.63         15.87        -1.926         0 \r\n 2007          302           13.078        18.941        2.865         0 \r\n 2007          303           12.122        20.992        4.368         0 \r\n 2007          304           9.988         15.316        2.797         0 \r\n 2007          305           13.156        14.558       -1.334         0 \r\n 2007          306           11.83         16.046       -1.709         0 \r\n 2007          307           11.884        14.081       -1.173         0 \r\n 2007          308           12.312        16.685        3.325         0 \r\n 2007          309           10.179        11.048        1.509         0 \r\n 2007          310           12.27         7.286        -3.679         0 \r\n 2007          311           10.408        7.71         -7.038         0 \r\n 2007          312           9.656         10.954        0.062         0 \r\n 2007          313           11.358        10.519       -2.492         0 \r\n 2007          314           8.566         12.666       -3.212         0 \r\n 2007          315           2.768         18.337        10.241        0 \r\n 2007          316           5.551         16.713        2.332         0 \r\n 2007          317           9.476         16.276       -4.858         0 \r\n 2007          318           5.219         11.349        4.101         0 \r\n 2007          319           9.058         6.971        -1.588         0 \r\n 2007          320           9.111         12.973       -2.396         0 \r\n 2007          321           10.622        11.334        2.034         0 \r\n 2007          322           2.105         6.223         1.392         0 \r\n 2007          323           5.169         18.693        1.671         1.78 \r\n 2007          324           2.368         14.257        4.975         0 \r\n 2007          325           0.853         5.177        -0.667         1.02 \r\n 2007          326           4.695         0.464        -3.436         6.35 \r\n 2007          327           9.622         0.564        -7.922         0 \r\n 2007          328           9.111         3.681        -3.829         0 \r\n 2007          329           5.37          5.066        -3.759         0 \r\n 2007          330           5.654         5.741        -2.617         0 \r\n 2007          331           8.72          1.501        -5.556         0 \r\n 2007          332           2.607         8.139        -5.166         0 \r\n 2007          333           8.835         4.388        -7.892         0 \r\n 2007          334           8.961         1.853        -7.054         0 \r\n 2007          335           0.562         3.089        -6.722         0 \r\n 2007          336           2.715         3.734        -7.072         23.88 \r\n 2007          337           8.466        -0.196        -9.454         2.54 \r\n 2007          338           3.723         0.743        -6.155         0 \r\n 2007          339           8.479        -0.388        -11.297        0 \r\n 2007          340           3.557        -2.222        -12.022        0 \r\n 2007          341           3.856        -1.216        -7.689         3.56 \r\n 2007          342           2.447        -7.185        -10.027        0 \r\n 2007          343           2.457        -6.612        -9.932         0 \r\n 2007          344           6.019        -1.281        -7.55          0 \r\n 2007          345           1.814         0.003        -3.763         23.37 \r\n 2007          346           6.901        -0.776        -5.887         11.18 \r\n 2007          347           5.744         0.942        -4.053         0 \r\n 2007          348           7.975        -3.489        -10.209        0 \r\n 2007          349           3.44         -3.979        -8.046         1.27 \r\n 2007          350           5.637        -5.398        -12.399        1.78 \r\n 2007          351           9.069        -0.501        -11.836        0 \r\n 2007          352           8.589         2.729        -8.68          0 \r\n 2007          353           8.286         0.601        -11.432        0 \r\n 2007          354           2.854         2.124        -3.178         0 \r\n 2007          355           3.441         3.653        -0.06          0 \r\n 2007          356           0.762         4.952        -7.787         0 \r\n 2007          357           6.214        -4.227        -12.087        16.76 \r\n 2007          358           3.575        -2.894        -7.807         0 \r\n 2007          359           8.683         6.478        -9.766         0 \r\n 2007          360           6.852         3.273        -7.605         0 \r\n 2007          361           3.63         -1.091        -5.727         1.27 \r\n 2007          362           4.35         -0.356        -5.894         2.54 \r\n 2007          363           7.56         -1.532        -11.76         6.35 \r\n 2007          364           6.501         0.156        -14.164        0 \r\n 2007          365           3.353        -5.123        -12.572        0 \r\n 2008          1             8.124        -6.579        -15.021        4.202 \r\n 2008          2             9.506        -9.397        -19.607        0 \r\n 2008          3             9.609        -2.624        -19.47         0 \r\n 2008          4             6.928         3.105        -3.673         0 \r\n 2008          5             5.404         7.391        -1.472         0 \r\n 2008          6             6.389         10.439        0.613         0 \r\n 2008          7             2.756         11.435       -0.169         0 \r\n 2008          8             1.439         1.871        -2.331         0 \r\n 2008          9             3.323         1.382        -4.05          3.3 \r\n 2008          10            2.744         3.453        -1.738         0 \r\n 2008          11            6.385         0.572        -4.943         7.87 \r\n 2008          12            7.104         1.9          -5.658         0 \r\n 2008          13            6.377        -1.725        -6.85          0 \r\n 2008          14            9.496        -4.833        -14.234        0 \r\n 2008          15            9.998        -1.885        -14.541        0 \r\n 2008          16            8.128         2.267        -9.196         0 \r\n 2008          17            7.608        -3.026        -13.379        1.27 \r\n 2008          18            6.913        -9.78         -18.573        0.51 \r\n 2008          19            11.239       -14.329       -20.259        0 \r\n 2008          20            10.509       -9.197        -19.804        0 \r\n 2008          21            2.769        -1.897        -10.88         0 \r\n 2008          22            11.38        -4.806        -17.87         1.78 \r\n 2008          23            6.923        -6.326        -16.988        0 \r\n 2008          24            11.939       -13.236       -24.929        0.25 \r\n 2008          25            3.999        -4.333        -21.316        0 \r\n 2008          26            11.312        1.1          -8.494         0 \r\n 2008          27            11.268        9.684        -14.969        0 \r\n 2008          28            6.193         11.831        1.467         0 \r\n 2008          29            1.468         8.013        -16.423        0 \r\n 2008          30            9.937        -10.296       -18.418        0.51 \r\n 2008          31            4.879        -3.276        -10.348        0 \r\n 2008          32            8.199        -1.388        -8.303         1.27 \r\n 2008          33            4.626         0.268        -5.829         0.25 \r\n 2008          34            1.983        -1.046        -3.752         0 \r\n 2008          35            4.158         3.154        -1.863         5.84 \r\n 2008          36            1.477         1.279        -1.276         0.76 \r\n 2008          37            8.014        -0.849        -6.206         21.84 \r\n 2008          38            8.358        -2.657        -8.315         6.86 \r\n 2008          39            10.744        2.771        -7.325         0.25 \r\n 2008          40            9.826        -0.347        -12.626        0 \r\n 2008          41            14.048       -12.454       -18.341        0 \r\n 2008          42            7.969        -13.361       -17.578        0 \r\n 2008          43            8.768        -8.269        -16.761        0.51 \r\n 2008          44            14.092       -4.291        -21.617        0.25 \r\n 2008          45            9.837         1.961        -11.026        0 \r\n 2008          46            14.974       -7.009        -17.249        0 \r\n 2008          47            14.291        3.292        -17.229        0 \r\n 2008          48            5.648         0.886        -2.881         23.11 \r\n 2008          49            14.948       -1.875        -15.739        11.18 \r\n 2008          50            12.689       -7.724        -19.66         0 \r\n 2008          51            16.353       -9.549        -19.556        0.51 \r\n 2008          52            8.88         -6.047        -18.905        0 \r\n 2008          53            13.202       -1.781        -14.075        0.25 \r\n 2008          54            15.923        2.756        -16.586        0 \r\n 2008          55            15.544        3.689        -12.717        0 \r\n 2008          56            5.464         2.146        -2.633         0 \r\n 2008          57            12.897       -0.564        -6.543         8.64 \r\n 2008          58            16.489       -4.664        -12.386        0 \r\n 2008          59            12.054        0.193        -13.102        0 \r\n 2008          60            17.063        3.068        -1.119         2.54 \r\n 2008          61            14.56         5.189        -5.875         0 \r\n 2008          62            14.771        14.421       -0.369         0 \r\n 2008          63            9.375         0.556        -8.064         24.38 \r\n 2008          64            17.562       -0.675        -9.891         0 \r\n 2008          65            9.635         2.798        -6.891         0 \r\n 2008          66            17.878       -0.494        -10.83         0 \r\n 2008          67            17.753       -4.978        -13.01         0 \r\n 2008          68            18.018       -3.084        -15.396        0 \r\n 2008          69            15.845        1.334        -5.403         0 \r\n 2008          70            17.353        0.316        -7.119         0 \r\n 2008          71            16.758        9.648        -5.861         0 \r\n 2008          72            15.686        12.828       -1.296         0 \r\n 2008          73            17.531        12.472       -0.864         0 \r\n 2008          74            17.539        11.989       -1.609         0 \r\n 2008          75            13.025        4.734        -1.995         0 \r\n 2008          76            14.735        6.107        -3.089         0 \r\n 2008          77            2.824         4.503         0.278         0 \r\n 2008          78            5.142         6.756         2.091         6.6 \r\n 2008          79            18.226        10.525        0.569         0 \r\n 2008          80            17.131        13.645       -0.382         0 \r\n 2008          81            11.137        9.849         0.136         0 \r\n 2008          82            7.747         3.903        -1.908         0 \r\n 2008          83            7.674         2.653        -2.172         0 \r\n 2008          84            20.257        8.042        -3.988         0.51 \r\n 2008          85            18.02         14.332       -0.469         0 \r\n 2008          86            14.704        12.18        -3.264         0 \r\n 2008          87            2.544         6.354        -1.097         0 \r\n 2008          88            21.945        7.338        -5.59          23.37 \r\n 2008          89            19.857        10.577       -2.729         0 \r\n 2008          90            11.766        12.367        4.271         0 \r\n 2008          91            7.095         17.157        3.032         3.81 \r\n 2008          92            9.137         7.483        -0.779         8.89 \r\n 2008          93            19.328        12.254       -3.528         0 \r\n 2008          94            5.199         8.179        -0.687         8.128 \r\n 2008          95            16.293        14.203        1.051         0 \r\n 2008          96            21.649        17.669        3.305         0 \r\n 2008          97            14.12         17.484        4.787         1.016 \r\n 2008          98            17.307        10.452        0.549         1.524 \r\n 2008          99            1.611         5.819         1.968         38.608 \r\n 2008          100           12.491        10.366        1.418         0 \r\n 2008          101           2.949         15.329        4.009         18.796 \r\n 2008          102           5.661         12.207        2.742         0.508 \r\n 2008          103           8.642         3.727         1.025         1.27 \r\n 2008          104           13.597        8.202         0.329         0 \r\n 2008          105           24.321        12.475       -2.686         0 \r\n 2008          106           23.958        17.854        1.222         0 \r\n 2008          107           22.126        24.418        8.303         0 \r\n 2008          108           11.201        19.076        8.012         14.732 \r\n 2008          109           4.858         16.146        9.079         10.922 \r\n 2008          110           7.377         14.047        8.411         0 \r\n 2008          111           19.659        21.383        8.602         0 \r\n 2008          112           21.567        25.768        8.784         0 \r\n 2008          113           20.617        22.518        10.777        0 \r\n 2008          114           24.326        25.829        8.699         0 \r\n 2008          115           5.549         20.001        14.577        13.208 \r\n 2008          116           9.671         23.131        3.693         12.192 \r\n 2008          117           25.387        14.136        2.637         0 \r\n 2008          118           15.702        12.834        4.882         0 \r\n 2008          119           13.314        6.916         0.73          1.016 \r\n 2008          120           21.93         12.516       -1.016         0 \r\n 2008          121           23.42         21.846        1.739         0 \r\n 2008          122           14.626        25.128        10.302        0 \r\n 2008          123           11.121        21.469        10.098        4.318 \r\n 2008          124           19.301        15.398        4.312         0.254 \r\n 2008          125           27.246        20.765        1.054         0 \r\n 2008          126           26.383        25.303        7.536         0 \r\n 2008          127           21.53         27.407        9.42          0 \r\n 2008          128           11.461        21.152        11.483        8.636 \r\n 2008          129           25.631        19.706        9.144         0 \r\n 2008          130           18.095        19.392        7.568         0 \r\n 2008          131           17.411        19.566        6.582         21.844 \r\n 2008          132           13.049        15.369        5.406         46.482 \r\n 2008          133           27.19         19.795        2.77          0 \r\n 2008          134           7.56          19.978        10.291        0.508 \r\n 2008          135           27.858        20.427        7.331         0 \r\n 2008          136           13.891        18.36         5.794         0 \r\n 2008          137           26.461        24.709        5.102         0 \r\n 2008          138           25.951        27.489        11.706        0 \r\n 2008          139           28.97         19.941        7.664         0 \r\n 2008          140           13.217        20.559        7.506         4.826 \r\n 2008          141           22.843        20.41         7.255         0 \r\n 2008          142           29.438        22.132        5.643         0 \r\n 2008          143           9.661         18.854        6.553         0 \r\n 2008          144           11.927        15.201        8.737         13.208 \r\n 2008          145           10.165        20.777        8.511         0 \r\n 2008          146           12.689        28.39         13.812        12.7 \r\n 2008          147           19.554        27.387        16.803        0.762 \r\n 2008          148           7.318         18.491        8.614         4.826 \r\n 2008          149           25.681        20.341        7.178         0 \r\n 2008          150           17.449        23.132        9.358         0 \r\n 2008          151           14.296        26.485        16.806        18.288 \r\n 2008          152           26.325        28.158        15.657        0 \r\n 2008          153           29.588        29.793        13.481        0 \r\n 2008          154           18.998        28.701        15.677        0.254 \r\n 2008          155           12.714        23.477        14.594        24.892 \r\n 2008          156           12.899        26.848        16.595        0 \r\n 2008          157           19.41         30.572        20.818        0.762 \r\n 2008          158           24.843        27.872        18.007        9.144 \r\n 2008          159           20.082        31.921        16.796        0.508 \r\n 2008          160           12.532        29.419        18.819        9.144 \r\n 2008          161           9.562         23.886        15.458        5.842 \r\n 2008          162           28.897        27.888        12.421        4.064 \r\n 2008          163           11.532        28.397        19.539        0 \r\n 2008          164           7.704         28.191        17.967        42.418 \r\n 2008          165           20.705        25.862        15.679        0.762 \r\n 2008          166           29.208        29.485        14.215        0 \r\n 2008          167           20.868        28.478        15.946        1.016 \r\n 2008          168           30.135        23.489        13.711        0 \r\n 2008          169           30.252        25.786        10.969        0 \r\n 2008          170           28.28         28.702        13.791        0 \r\n 2008          171           21.135        29.308        12.688        0 \r\n 2008          172           24.158        29.809        14.996        0 \r\n 2008          173           26.781        29.464        17.051        0 \r\n 2008          174           28.264        28.041        14.83         0 \r\n 2008          175           26.61         28.321        13.138        0 \r\n 2008          176           16.935        29.303        16.698        0.762 \r\n 2008          177           18.154        30.666        18.697        31.496 \r\n 2008          178           7.057         24.227        17.993        0.762 \r\n 2008          179           15.504        27.994        18.774        10.16 \r\n 2008          180           29.841        26.318        17.221        2.032 \r\n 2008          181           18.569        25.906        15.769        0 \r\n 2008          182           27.553        28.271        13.735        0 \r\n 2008          183           28.871        28.805        12.575        0 \r\n 2008          184           12.976        29.622        17.976        17.018 \r\n 2008          185           23.297        24.624        14.092        0 \r\n 2008          186           28.883        25.487        12.528        0 \r\n 2008          187           29.568        26.632        12.842        0 \r\n 2008          188           24.73         30.38         17.798        0.254 \r\n 2008          189           24.175        32.723        20.312        14.224 \r\n 2008          190           14.115        28.51         19.339        21.336 \r\n 2008          191           27.607        28.319        15.727        0 \r\n 2008          192           20.891        30.284        18.904        0 \r\n 2008          193           25.386        30.644        21.439        0 \r\n 2008          194           15.184        25.333        14.608        2.286 \r\n 2008          195           28.858        26.622        13.07         0 \r\n 2008          196           28.863        30.369        13.516        0 \r\n 2008          197           24.27         30.91         18.198        0 \r\n 2008          198           21.621        28.756        20.437        0 \r\n 2008          199           27.214        30.788        19.034        0 \r\n 2008          200           9.927         26.906        19.874        0.254 \r\n 2008          201           20.266        29.218        19.271        11.938 \r\n 2008          202           25.83         31.209        18.676        0.254 \r\n 2008          203           22.275        28.956        17.971        18.034 \r\n 2008          204           26.514        28.279        16.731        0 \r\n 2008          205           26.425        26.077        14.665        0 \r\n 2008          206           5.407         21.444        17.118        4.572 \r\n 2008          207           12.15         26.746        18.701        0 \r\n 2008          208           21.416        27.777        16.638        0 \r\n 2008          209           21.983        29.371        15.868        4.318 \r\n 2008          210           21.409        29.362        17.969        0 \r\n 2008          211           16.315        29.504        20.103        0 \r\n 2008          212           25.563        29.413        19.103        0 \r\n 2008          213           23.718        30.067        18.348        0 \r\n 2008          214           24.372        30.113        18.027        0 \r\n 2008          215           26.697        28.279        14.947        0 \r\n 2008          216           22.581        31.691        19.326        4.064 \r\n 2008          217           21.791        33.377        22.982        0 \r\n 2008          218           18.758        29.197        15.572        9.652 \r\n 2008          219           21.359        26.955        14.268        0 \r\n 2008          220           24.094        27.863        14.456        0 \r\n 2008          221           23.848        27.951        12.168        0 \r\n 2008          222           14.289        27.919        15.498        3.556 \r\n 2008          223           23.712        25.673        13.761        0 \r\n 2008          224           23.135        25.155        11.481        0 \r\n 2008          225           14.408        23.307        14.443        0 \r\n 2008          226           20.465        28.663        13.704        0 \r\n 2008          227           19.442        27.487        15.301        0 \r\n 2008          228           22.54         26.007        13.409        0 \r\n 2008          229           21.903        26.638        12.048        0 \r\n 2008          230           20.744        27.85         13.938        0 \r\n 2008          231           20.969        28.962        12.857        0 \r\n 2008          232           17.718        30.784        15.353        0 \r\n 2008          233           19.649        27.916        15.987        0 \r\n 2008          234           5.039         22.289        17.891        9.906 \r\n 2008          235           11.018        28.748        19.838        0 \r\n 2008          236           15.513        26.509        14.78         2.032 \r\n 2008          237           12.801        25.002        11.543        0 \r\n 2008          238           14.556        25.035        10.32         0 \r\n 2008          239           19.928        25.106        11.103        0 \r\n 2008          240           16.956        25.521        11.952        0 \r\n 2008          241           7.136         28.158        17.534        50.546 \r\n 2008          242           20.341        27.957        11.307        0 \r\n 2008          243           19.45         27.908        11.913        0 \r\n 2008          244           20.182        28.577        13.748        0 \r\n 2008          245           18.612        30.949        17.246        0 \r\n 2008          246           16.093        30.147        15.095        0.508 \r\n 2008          247           5.465         18.568        12.914        0.508 \r\n 2008          248           3.006         16.014        11.176        41.402 \r\n 2008          249           18.692        21.016        7.959         0 \r\n 2008          250           15.009        19.967        9.231         0.254 \r\n 2008          251           16.077        21.849        8.936         0.254 \r\n 2008          252           2.41          14.333        6.752         23.114 \r\n 2008          253           18.188        20.429        5.504         1.524 \r\n 2008          254           17.817        22.549        7.943         0 \r\n 2008          255           10.622        24.289        15.036        1.27 \r\n 2008          256           4.296         21.412        18.074        41.656 \r\n 2008          257           3.896         24.438        16.774        54.356 \r\n 2008          258           8.333         17.972        11.416        14.986 \r\n 2008          259           9.003         18.452        6.668         0.254 \r\n 2008          260           17.407        24.771        6.482         0 \r\n 2008          261           17.217        28.339        10.137        0 \r\n 2008          262           16.414        26.643        12.834        0 \r\n 2008          263           16.77         25.356        11.642        0 \r\n 2008          264           16.11         27.444        11.687        0 \r\n 2008          265           12.664        25.661        11.032        1.016 \r\n 2008          266           13.906        25.401        13.408        0 \r\n 2008          267           15.786        27.523        14.963        0 \r\n 2008          268           11.25         26.939        12.159        0 \r\n 2008          269           15.055        27.026        10.276        0 \r\n 2008          270           16.106        28.003        12.538        0 \r\n 2008          271           15.784        27.428        11.455        0 \r\n 2008          272           7.159         23.937        11.884        0 \r\n 2008          273           10.034        20.872        9.549         9.906 \r\n 2008          274           16.435        17.662        6.234         0 \r\n 2008          275           15.826        16.395        3.919         0 \r\n 2008          276           16.586        18.769        2.526         0 \r\n 2008          277           15.931        19.497        3.603         0 \r\n 2008          278           15.959        20.414        2.016         0 \r\n 2008          279           13.911        24.656        9.329         0 \r\n 2008          280           12.594        25.904        12.396        0 \r\n 2008          281           1.568         16.842        8.226         14.732 \r\n 2008          282           16.387        20.897        5.112         0.254 \r\n 2008          283           16.149        21.042        5.008         0 \r\n 2008          284           15.604        24.437        4.822         0 \r\n 2008          285           15.16         26.276        8.972         0 \r\n 2008          286           9.984         26.728        14.775        0 \r\n 2008          287           7.872         23.923        8.821         1.016 \r\n 2008          288           12.056        15.74         5.781         0 \r\n 2008          289           3.445         13.314        3.89          11.176 \r\n 2008          290           15.529        14.243        0.714         0 \r\n 2008          291           2.827         9.38          1.934         0.254 \r\n 2008          292           13.237        13.791        1.149         0 \r\n 2008          293           12.712        20.484        4.862         0 \r\n 2008          294           6.256         17.643        1.618         0 \r\n 2008          295           12.058        12.574       -0.921         0 \r\n 2008          296           2.161         10.918        5.284         0.762 \r\n 2008          297           1.067         8.386         4.218         7.112 \r\n 2008          298           2.143         8.149         2.775         1.016 \r\n 2008          299           13.343        15.946        1.138         0.254 \r\n 2008          300           12.602        10.878        0.701         0.254 \r\n 2008          301           5.93          5.481        -3.053         0.254 \r\n 2008          302           13.297        9.014        -5.119         4.064 \r\n 2008          303           13.262        16.451       -2.632         0 \r\n 2008          304           12.973        21.837        0.182         0 \r\n 2008          305           12.209        23.662        4.691         0 \r\n 2008          306           10.069        19.403        4.169         0 \r\n 2008          307           8.814         21.768        8.023         0 \r\n 2008          308           11.388        24.174        11.857        0 \r\n 2008          309           11.497        22.605        13.083        0 \r\n 2008          310           9.617         21.368        12.965        0 \r\n 2008          311           9.517         16.512        5.054         4.826 \r\n 2008          312           2.66          5.339        -0.126         0 \r\n 2008          313           3.158         1.314        -1.625         0 \r\n 2008          314           3.341        -1.059        -5.4           0 \r\n 2008          315           9.046         2.23         -6.182         0 \r\n 2008          316           0.915         4.874         0.221         0 \r\n 2008          317           2.218         7.166         3.752         6 \r\n 2008          318           5.436         12.532        2.758         0 \r\n 2008          319           5.116         8.427         2.053         7 \r\n 2008          320           2.82          3.051        -4.029         0 \r\n 2008          321           7.876         5.402        -5.104         0 \r\n 2008          322           6.853         2.437        -5.794         0 \r\n 2008          323           10.881        1.003        -10.059        0 \r\n 2008          324           9.941         9.514        -3.288         0 \r\n 2008          325           4.438        -0.2          -8.936         0 \r\n 2008          326           10.204       -3.212        -12.619        0 \r\n 2008          327           3.328         0.768        -6.322         0 \r\n 2008          328           9.753         9.816        -7.908         0 \r\n 2008          329           10.006        7.179        -2.181         0 \r\n 2008          330           10.094        2.949        -9.003         0 \r\n 2008          331           9.631         8.464        -8.843         0 \r\n 2008          332           9.173         6.894        -7.624         0 \r\n 2008          333           9.342         7.882        -7.657         0 \r\n 2008          334           3.753         4.672        -8.335         0 \r\n 2008          335           4.212         0.266        -2.857         5.33 \r\n 2008          336           6.018        -2.434        -12.202        3.3 \r\n 2008          337           9.306         3.209        -14.878        0 \r\n 2008          338           2.754         0.717        -12.056        0 \r\n 2008          339           8.555        -6.579        -16.917        4.83 \r\n 2008          340           9.036        -0.311        -16.013        0 \r\n 2008          341           7.25          0.867        -14.664        0.25 \r\n 2008          342           3.404        -7.569        -16.884        0 \r\n 2008          343           3.913         0.053        -11.397        0 \r\n 2008          344           1.239         0.042        -11.203        15.75 \r\n 2008          345           8.229        -4.491        -15.063        2.03 \r\n 2008          346           7.292        -0.482        -10.493        0 \r\n 2008          347           6.296        -1.361        -13.307        0.25 \r\n 2008          348           2.641         6.597        -1.797         0 \r\n 2008          349           3.154         11.686       -17.126        0 \r\n 2008          350           8.706        -14.59        -19.433        2.79 \r\n 2008          351           1.813        -12.94        -19.04         0 \r\n 2008          352           7.704        -11.484       -19.914        5.59 \r\n 2008          353           6.93         -7.29         -17.84         0 \r\n 2008          354           4.244        -3.528        -8.649         20.83 \r\n 2008          355           2.264        -3.759        -21.433        0 \r\n 2008          356           8.021        -19.146       -22.458        1.27 \r\n 2008          357           8.318        -12.325       -23.733        0 \r\n 2008          358           4.433        -0.556        -12.42         1.02 \r\n 2008          359           7.95         -2.46         -20.038        3.81 \r\n 2008          360           5.086        -0.978        -21.966        0 \r\n 2008          361           4.458         10.77        -1.354         0.76 \r\n 2008          362           4.2           10.77        -1.354         3.56 \r\n 2008          363           8.933         0.884        -9.023         15.75 \r\n 2008          364           8.566         3.677        -4.83          0 \r\n 2008          365           6.362         2.668        -11.175        0 \r\n 2008          366           9.01         -6.762        -16.358        0 \r\n 2009          1             4.578         0.222        -8.164         0 \r\n 2009          2             7.491        -0.664        -9.489         0 \r\n 2009          3             1.428        -0.283        -7.889         0 \r\n 2009          4             8.425        -1.899        -14.137        0 \r\n 2009          5             9.375        -1.111        -14.292        0 \r\n 2009          6             6.596        -1.538        -11.024        0 \r\n 2009          7             5.239        -6.034        -13.574        0 \r\n 2009          8             8.09         -5.972        -15.411        0 \r\n 2009          9             4.569        -3.568        -8.666         0 \r\n 2009          10            8.006        -7.296        -19.437        1.02 \r\n 2009          11            6.283        -4.596        -16.178        1.27 \r\n 2009          12            4.445        -0.294        -13.439        0 \r\n 2009          13            10.497       -12.292       -23.721        2.03 \r\n 2009          14            9.801        -14.909       -27.672        5.59 \r\n 2009          15            11.776       -23.93        -32.387        0 \r\n 2009          16            10.261        18.15        -33.765        0 \r\n 2009          17            4.665        -2.104        -11.427        0 \r\n 2009          18            4.915        -2.288        -10.933        0 \r\n 2009          19            6.594        -7.577        -15.031        0.25 \r\n 2009          20            9.599        -6.223        -14.499        0 \r\n 2009          21            10.004       -4.323        -13.017        0 \r\n 2009          22            10.381        3.026        -11.776        0 \r\n 2009          23            7.13         -3.113        -18.453        0 \r\n 2009          24            11.022       -15.724       -22.855        0 \r\n 2009          25            9.688        -11.774       -16.811        2.03 \r\n 2009          26            6.806        -10.313       -17.344        0 \r\n 2009          27            6.836        -9.983        -20.064        0 \r\n 2009          28            11.947       -4.694        -23.126        0 \r\n 2009          29            6.294        -3.963        -11.471        0 \r\n 2009          30            12.529       -6.401        -17.021        0 \r\n 2009          31            11.806        6.961        -8.366         0 \r\n 2009          32            6.971         2.349        -3.879         0 \r\n 2009          33            12.469       -2.96         -17.271        0 \r\n 2009          34            13.068       -10.261       -18.274        0 \r\n 2009          35            13.304       -7.437        -19.569        0 \r\n 2009          36            12.49         7.264        -12.626        0 \r\n 2009          37            11.776        10.966       -7.34          0 \r\n 2009          38            12.622        11.039       -1.134         0 \r\n 2009          39            5.659         4.213        -4.108         0 \r\n 2009          40            7.655         13.78        -0.071         0 \r\n 2009          41            13.645        15.22         2.154         0.76 \r\n 2009          42            3.092         5.748        -0.838         0.25 \r\n 2009          43            13.857        6.281        -3.449         4.57 \r\n 2009          44            4.794        -0.519        -5.783         0 \r\n 2009          45            12.871       -1.916        -11.989        2.79 \r\n 2009          46            14.266       -3.113        -15.259        0 \r\n 2009          47            14.743        0.977        -15.894        0 \r\n 2009          48            6.037         4.944        -4.727         0 \r\n 2009          49            1.507         1.976        -10.167        4.06 \r\n 2009          50            15.118       -4.183        -13.399        0 \r\n 2009          51            9.143         0.886        -11.936        0 \r\n 2009          52            10.247       -3.582        -11.788        2.29 \r\n 2009          53            15.69        -4.034        -14.304        0 \r\n 2009          54            15.429       -1.358        -14.482        0 \r\n 2009          55            14.809        8.813        -4.427         0 \r\n 2009          56            13.856        13.337        0.175         0 \r\n 2009          57            1.806         4.867        -3.415         0 \r\n 2009          58            7.191        -1.5          -7.845         9.91 \r\n 2009          59            13.86        -1.542        -9.089         0 \r\n 2009          60            16.98        -3.972        -13.132        0 \r\n 2009          61            16.75        -1.203        -11.134        0 \r\n 2009          62            9.234         0.124        -9.509         0 \r\n 2009          63            16.396        10.389       -5.993         0 \r\n 2009          64            14.519        21.472        2.323         0 \r\n 2009          65            16.785        15.173        0.722         0 \r\n 2009          66            1.867         6.115         2.457         10.92 \r\n 2009          67            3.272         4.128        -0.315         50.29 \r\n 2009          68            3.128         4.383        -0.238         9.14 \r\n 2009          69            5.469         7.603        -10.582        23.62 \r\n 2009          70            18.187       -5.164        -12.917        0.76 \r\n 2009          71            17.186       -2.206        -13.831        0 \r\n 2009          72            11.74         5.804        -5.606         0 \r\n 2009          73            18.557        10.433       -5.799         0 \r\n 2009          74            17.869        14.791       -1.588         0 \r\n 2009          75            18.024        20.092        0.637         0 \r\n 2009          76            18.158        23.166        6.192         0 \r\n 2009          77            7.199         13.791        1.538         0 \r\n 2009          78            19.015        11.147       -3.561         0 \r\n 2009          79            16.914        12.125       -2.193         0 \r\n 2009          80            18.147        18.963        1.645         0 \r\n 2009          81            3.984         14.872        5.438         0 \r\n 2009          82            11.213        19.917        9.498         3.3 \r\n 2009          83            3.359         14.061        2.616         1.78 \r\n 2009          84            8.183         8.666        -0.01          10.67 \r\n 2009          85            11.938        10.829       -1.491         0.25 \r\n 2009          86            18.264        3.323        -4.234         0.51 \r\n 2009          87            3.184         0.986        -2.277         0 \r\n 2009          88            21.35         6.786        -4.264         8.89 \r\n 2009          89            17.121        12.949       -2.184         0 \r\n 2009          90            12.568        12.813        1.023         0.25 \r\n 2009          91            20.592        12.192        0.256         0 \r\n 2009          92            4.577         10.588        1.853         0 \r\n 2009          93            21.797        10.483       -1.944         3.56 \r\n 2009          94            18.377        13.351       -1.466         0 \r\n 2009          95            3.361         10.593        1.082         3.05 \r\n 2009          96            15.103        5.174        -2.338         2.54 \r\n 2009          97            22.251        7.964        -3.582         0 \r\n 2009          98            22.082        12.403       -5.237         0 \r\n 2009          99            13.546        11.983       -2.343         0 \r\n 2009          100           19.01         13.584        1.328         0 \r\n 2009          101           22.934        15.211       -2.833         0 \r\n 2009          102           15.475        13.801       -2.794         0 \r\n 2009          103           2.363         7.536         1.91          15.24 \r\n 2009          104           18.66         14.794        1.011         0 \r\n 2009          105           23.842        18.067       -1.657         0 \r\n 2009          106           22.198        20.376        2.261         0 \r\n 2009          107           23.608        22.916        2.298         0 \r\n 2009          108           6.944         18.398        6.322         0.508 \r\n 2009          109           3.592         15.043        5.482         1.524 \r\n 2009          110           12.633        11.623        2.661         0 \r\n 2009          111           23.602        15.373        3.001         0 \r\n 2009          112           24.027        21.555        2.987         0 \r\n 2009          113           13.257        24.151        7.237         1.016 \r\n 2009          114           22.526        28.793        7.829         0.254 \r\n 2009          115           6.581         22.439        9.476         14.986 \r\n 2009          116           13.523        26.377        9.066         6.604 \r\n 2009          117           9.067         17.943        7.237         3.556 \r\n 2009          118           11.031        15.281        4.692         0 \r\n 2009          119           6.971         16.318        8.586         26.924 \r\n 2009          120           10.847        20.908        12.198        36.576 \r\n 2009          121           12.984        15.833        8.427         0.254 \r\n 2009          122           25.369        19.232        6.114         0 \r\n 2009          123           24.274        22.401        4.682         0 \r\n 2009          124           15.087        22.626        7.501         0 \r\n 2009          125           18.959        24.044        10.937        0 \r\n 2009          126           16.595        23.053        12.806        0.762 \r\n 2009          127           14.048        24.643        10.338        0.254 \r\n 2009          128           18.324        25.156        9.107         14.224 \r\n 2009          129           23.102        16.933        6.922         0.254 \r\n 2009          130           21.021        18.002        5.057         0 \r\n 2009          131           27.516        19.952        4.182         0 \r\n 2009          132           17.814        23.587        5.526         7.62 \r\n 2009          133           4.304         21.664        11.964        17.018 \r\n 2009          134           27.619        19.272        7.676         0 \r\n 2009          135           0.572         15.205        11.507        42.164 \r\n 2009          136           27.295        15.077        4.561         0 \r\n 2009          137           21.691        16.419        2.334         0 \r\n 2009          138           21.559        21.149        9.442         0 \r\n 2009          139           27.039        28.077        10.982        0 \r\n 2009          140           27.733        28.224        13.718        0 \r\n 2009          141           24.364        28.672        13.097        0 \r\n 2009          142           25.292        28.59         12.751        0 \r\n 2009          143           19.88         29.437        14.027        5.105 \r\n 2009          144           24.102        27.5          14.461        0 \r\n 2009          145           9.638         21.03         13.232        3.861 \r\n 2009          146           8.225         24.015        15.756        37.77 \r\n 2009          147           5.892         18.719        12.628        0 \r\n 2009          148           10.675        19.234        10.833        0 \r\n 2009          149           24.17         25.322        10.269        0 \r\n 2009          150           24.149        27.793        9.112         0 \r\n 2009          151           24.893        26.529        7.036         0 \r\n 2009          152           13.367        27.005        15.6          14.605 \r\n 2009          153           5.299         16.218        11.807        6.096 \r\n 2009          154           25.127        21.32         10.991        0 \r\n 2009          155           27.317        23.249        9.726         0 \r\n 2009          156           27.46         26.783        10.768        0 \r\n 2009          157           15.69         25.851        13.546        5.334 \r\n 2009          158           13.729        26.441        17.802        28.448 \r\n 2009          159           20.513        23.528        11.978        7.62 \r\n 2009          160           17.648        19.848        9.221         0 \r\n 2009          161           13.984        22.941        13.571        0.254 \r\n 2009          162           23.194        25.124        15.336        12.446 \r\n 2009          163           18.569        24.597        15.205        2.286 \r\n 2009          164           7.442         19.743        12.034        2.286 \r\n 2009          165           13.806        23.336        10.389        0 \r\n 2009          166           13.909        24.952        13.649        0 \r\n 2009          167           10.026        23.313        16.504        19.558 \r\n 2009          168           23.851        30.033        19.079        0.762 \r\n 2009          169           18.681        31.028        18.445        27.686 \r\n 2009          170           17.001        30.517        19.479        5.334 \r\n 2009          171           22.35         29.968        18.722        0 \r\n 2009          172           17.013        30.016        20.686        43.18 \r\n 2009          173           28.342        34.074        20.986        0.254 \r\n 2009          174           24.952        35.014        19.828        12.446 \r\n 2009          175           24.58         31.028        18.331        0 \r\n 2009          176           27.362        32.728        21.662        0 \r\n 2009          177           25.032        31.341        19.257        0 \r\n 2009          178           22.799        33.558        18.883        7.874 \r\n 2009          179           29.577        27.982        16.329        0 \r\n 2009          180           29.869        27.966        14.853        0 \r\n 2009          181           18.523        22.294        14.345        0 \r\n 2009          182           12.754        22.421        14.724        0 \r\n 2009          183           23.015        25.101        14.276        0 \r\n 2009          184           19.425        27.936        12.883        4.826 \r\n 2009          185           3.912         19.916        15.81         33.782 \r\n 2009          186           26.828        27.844        14.096        0 \r\n 2009          187           25.276        28.914        14.813        0 \r\n 2009          188           21.186        28.461        15.422        6.858 \r\n 2009          189           16.346        22.953        15.603        0 \r\n 2009          190           13.355        25.223        15.381        0 \r\n 2009          191           16.688        27.889        18.635        32.258 \r\n 2009          192           25.953        28.148        17.072        0.254 \r\n 2009          193           18.227        25.808        15.123        0 \r\n 2009          194           27.17         28.101        14.6          0 \r\n 2009          195           16.335        26.703        17.836        0 \r\n 2009          196           27.58         27.714        17.846        0.254 \r\n 2009          197           20.41         26.045        13.539        0 \r\n 2009          198           19.346        19.642        11.378        0 \r\n 2009          199           12.055        20.349        11.182        0 \r\n 2009          200           22.407        23.656        10.683        0 \r\n 2009          201           25.031        25.613        9.732         0 \r\n 2009          202           3.728         20.593        14.792        27.686 \r\n 2009          203           17.924        25.816        14.103        0 \r\n 2009          204           23.674        28.063        13.144        0 \r\n 2009          205           22.807        29.64         13.811        8.001 \r\n 2009          206           24.043        26.474        15.692        0 \r\n 2009          207           24.002        27.09         15.078        0 \r\n 2009          208           21.544        28.898        15.247        0 \r\n 2009          209           18.859        26.774        14.456        0 \r\n 2009          210           22.221        25.352        11.426        0 \r\n 2009          211           19.278        24.726        14.346        0 \r\n 2009          212           24.904        26.152        11.914        0 \r\n 2009          213           16.234        23.917        12.799        4.064 \r\n 2009          214           24.498        27.032        11.011        0 \r\n 2009          215           20.97         29.077        18.329        1.016 \r\n 2009          216           18.008        28.584        15.572        0 \r\n 2009          217           19.255        25.893        12.083        0 \r\n 2009          218           22.147        26.829        12.788        0 \r\n 2009          219           6.699         25.671        16.576        17.78 \r\n 2009          220           19.693        32.078        22.611        0 \r\n 2009          221           19.631        29.841        18.877        17.526 \r\n 2009          222           18.121        27.666        17.904        0.508 \r\n 2009          223           22.831        28.312        16.249        0.254 \r\n 2009          224           22.514        29.133        14.122        0 \r\n 2009          225           20.368        29.445        18.753        1.016 \r\n 2009          226           21.863        29.954        17.905        0 \r\n 2009          227           22.392        28.943        16.199        0.254 \r\n 2009          228           8.794         26.996        20.126        8.382 \r\n 2009          229           9.322         25.218        17.566        7.62 \r\n 2009          230           17.419        26.199        14.812        0 \r\n 2009          231           11.627        25.698        14.277        10.16 \r\n 2009          232           18.978        23.708        15.812        15.494 \r\n 2009          233           12.575        20.28         13.799        2.032 \r\n 2009          234           20.699        22.662        10.943        0 \r\n 2009          235           20.625        25.238        9.571         0 \r\n 2009          236           20.225        26.266        11.057        0 \r\n 2009          237           19.532        28.444        15.305        0 \r\n 2009          238           2.583         22.172        16.518        56.388 \r\n 2009          239           4.151         18.329        15.389        65.278 \r\n 2009          240           9.435         24.033        14.751        9.906 \r\n 2009          241           19.469        19.957        9.846         0 \r\n 2009          242           16.247        18.788        7.301         0 \r\n 2009          243           16.049        20.754        6.478         0 \r\n 2009          244           17.694        20.686        6.576         0 \r\n 2009          245           18.38         22.441        7.865         0 \r\n 2009          246           17.109        22.942        8.744         0 \r\n 2009          247           9.131         24.832        9.708         0 \r\n 2009          248           16.508        24.866        11.398        0 \r\n 2009          249           9.507         24.817        10.229        0 \r\n 2009          250           14.12         25.237        12.696        0 \r\n 2009          251           15.284        25.682        12.718        0 \r\n 2009          252           13.576        26.447        12.437        0 \r\n 2009          253           13.104        26.95         13.108        0 \r\n 2009          254           12.359        27.381        14.204        0 \r\n 2009          255           16.132        27.478        12.978        0 \r\n 2009          256           17.224        26.661        11.312        0 \r\n 2009          257           18.261        26.828        9.291         0 \r\n 2009          258           15            27.991        10.802        0 \r\n 2009          259           16.852        26.961        12.272        0 \r\n 2009          260           16.152        24.199        8.482         0 \r\n 2009          261           16.864        26.317        7.029         0 \r\n 2009          262           16.763        26.278        11.982        0 \r\n 2009          263           7.562         22.527        11.484        0 \r\n 2009          264           11.267        24.126        11.772        5.588 \r\n 2009          265           6.097         21.512        14.029        1.778 \r\n 2009          266           11.949        24.087        11.361        0 \r\n 2009          267           4.445         22.687        15.024        5.08 \r\n 2009          268           13.357        22.875        11.056        17.78 \r\n 2009          269           6.2           21.489        9.699         0 \r\n 2009          270           13.956        25.962        8.78          0 \r\n 2009          271           11.747        16.21         9.497         0 \r\n 2009          272           16.376        17.296        4.327         0 \r\n 2009          273           16.508        19.202        2.741         0 \r\n 2009          274           1.624         14.622        9.274         30.226 \r\n 2009          275           3.688         10.318        7.048         2.794 \r\n 2009          276           5.02          11.641        5.494         1.27 \r\n 2009          277           15.911        14.977        2.545         0.254 \r\n 2009          278           16.091        17.97         0.928         0 \r\n 2009          279           7.997         16.864        6.717         6.35 \r\n 2009          280           16.284        17.796        2.444         0 \r\n 2009          281           2.011         11.521        6.576         1.524 \r\n 2009          282           3.68          10.194       -0.253         2.54 \r\n 2009          283           5.018         4.703        -3.713         0 \r\n 2009          284           7.044         5.111        -3.193         0 \r\n 2009          285           3.367         6.499         1.653         0 \r\n 2009          286           12.946        9.742        -2.792         0.762 \r\n 2009          287           5.188         7.822         3.046         3.302 \r\n 2009          288           3.091         6.374         3.646         3.81 \r\n 2009          289           7.143         9.746         1.017         0 \r\n 2009          290           12.234        10.147       -1.682         0 \r\n 2009          291           14.66         14.868       -2.242         0 \r\n 2009          292           13.479        19.943        5.994         0 \r\n 2009          293           7.013         19.809        8.692         0 \r\n 2009          294           10.632        21.824        11.341        0.508 \r\n 2009          295           1.197         11.944        6.594         13.462 \r\n 2009          296           3.211         8.347         2.949         10.922 \r\n 2009          297           13.809        13.274        1.028         4.572 \r\n 2009          298           8.846         16.995        5.497         1.016 \r\n 2009          299           4.56          10.3          0.242         0.508 \r\n 2009          300           11.763        13.451       -1.964         18.288 \r\n 2009          301           3.662         13.448        7.9           0 \r\n 2009          302           0.495         15.551        9.967         16.51 \r\n 2009          303           7.247         17.81         4.288         22.606 \r\n 2009          304           12.505        9.412        -1.244         7.366 \r\n 2009          305           6.567         16.319       -0.754         0.508 \r\n 2009          306           11.841        13.798        0.913         0 \r\n 2009          307           11.103        10.652       -3.746         0 \r\n 2009          308           11.899        11.039       -1.326         0 \r\n 2009          309           12.223        14.674       -4.166         0 \r\n 2009          310           10.482        20.857        8.195         0 \r\n 2009          311           11.529        22.569        5.932         0 \r\n 2009          312           10.919        23.083        4.456         0 \r\n 2009          313           6.861         18.548        7.354         0 \r\n 2009          314           9.79          16.194        0.628         15.494 \r\n 2009          315           11.568        15.018       -1.685         0 \r\n 2009          316           8.537         13.049       -1.964         0 \r\n 2009          317           5.981         14.321        5.009         0 \r\n 2009          318           2.278         12.276        3.054         0.254 \r\n 2009          319           4.024         6.838         0.563         0 \r\n 2009          320           0.938         7.414         3.017         15.494 \r\n 2009          321           0.8           7.042         3.438         13.97 \r\n 2009          322           3.045         7.532         3.822         0 \r\n 2009          323           3.169         8.939         2.202         0 \r\n 2009          324           9.057         11.503       -0.861         0 \r\n 2009          325           4.82          11.69        -2.256         0 \r\n 2009          326           5.896         15.403        5.286         0 \r\n 2009          327           8.866         13.984        3.483         0 \r\n 2009          328           1.47          9.673         3.491         0 \r\n 2009          329           2.504         7.437         1.207         0 \r\n 2009          330           1.669         2.436        -2.806         0 \r\n 2009          331           8.853         8.052        -4.967         0 \r\n 2009          332           9.523         15.38        -3.401         0 \r\n 2009          333           6.174         6.592        -0.219         0 \r\n 2009          334           9.144         7.75         -1.68          0 \r\n 2009          335           9.166         14.527        0.43          0 \r\n 2009          336           3.099         3.457        -2.124         0 \r\n 2009          337           7.238        -0.4          -6.82          0 \r\n 2009          338           6.307        -4.483        -10.357        0 \r\n 2009          339           8.973         3.473        -10.695        0 \r\n 2009          340           5.829         1.468        -5.938         0 \r\n 2009          341           2.391        -2.614        -5.51          2.03 \r\n 2009          342           3.223        -1.084        -5.25          4.32 \r\n 2009          343           4.789        -1.746        -17.959        16.76 \r\n 2009          344           6.418        -11.003       -20.89         0.76 \r\n 2009          345           8.764        -3.259        -20.418        0 \r\n 2009          346           5.651         1.297        -15.874        0 \r\n 2009          347           4.208         1.972        -1.5           0 \r\n 2009          348           2.824         0.705        -13.689        0.51 \r\n 2009          349           9.173        -12.722       -18.673        0.25 \r\n 2009          350           8.546        -4.081        -17.553        0 \r\n 2009          351           6.666         3.306        -7.247         0 \r\n 2009          352           3.344        -0.916        -5.626         0 \r\n 2009          353           2.663        -2.663        -5.125         0 \r\n 2009          354           2.73         -2.996        -5.303         0 \r\n 2009          355           3.483        -2.764        -5.443         2.29 \r\n 2009          356           3.284         0.035        -3.092         0 \r\n 2009          357           1.167         0.861        -1.143         0 \r\n 2009          358           0.947         2.341        -0.459         7.62 \r\n 2009          359           1.744         3.381        -9.489         15.49 \r\n 2009          360           4.466        -4.637        -13.425        2.03 \r\n 2009          361           5.508        -3.608        -11.613        3.56 \r\n 2009          362           5.345        -2.979        -13.886        0 \r\n 2009          363           8.001        -5.696        -19.203        0 \r\n 2009          364           5.189        -0.433        -9.264         0.25 \r\n 2009          365           9.265        -6.132        -18.186        1.27 \r\n 2010          1             7.62         -14.814       -22.667        0 \r\n 2010          2             10.221       -14.748       -25.468        0 \r\n 2010          3             9.654        -13.416       -24.463        0 \r\n 2010          4             9.637        -14.55        -22.008        0 \r\n 2010          5             9.862        -11.854       -20.873        0 \r\n 2010          6             5.039        -9.126        -19.103        0 \r\n 2010          7             4.72         -10.236       -16.949        5.33 \r\n 2010          8             8.035        -14.36        -22.928        2.03 \r\n 2010          9             10.405       -11.406       -25.766        0 \r\n 2010          10            9.74         -6.286        -21.169        0 \r\n 2010          11            8.913        -5.476        -10.824        0 \r\n 2010          12            7.128        -1.944        -10.08         0 \r\n 2010          13            10.08         3.456        -8.275         0 \r\n 2010          14            4.594         1.168        -4.994         0 \r\n 2010          15            2.447        -2.306        -4.942         0 \r\n 2010          16            5.372        -0.892        -4.679         0 \r\n 2010          17            3.384        -0.605        -4.243         0 \r\n 2010          18            2.704        -2.112        -6.793         0 \r\n 2010          19            3.582        -2.181        -6.353         0 \r\n 2010          20            1.447        -0.387        -4.483         2.03 \r\n 2010          21            1.752         0.117        -1.268         20.32 \r\n 2010          22            3.205         0.701        -1.316         0.25 \r\n 2010          23            3.205         0            -1.316         0 \r\n 2010          24            5.224         1.009        -4.746         21.59 \r\n 2010          25            4.445        -3.734        -11.643        0.25 \r\n 2010          26            10.536       -8.184        -13.17         1.27 \r\n 2010          27            4.498        -7.378        -14.632        0 \r\n 2010          28            10.989       -11.161       -17.428        0 \r\n 2010          29            10.781       -6.462        -17.114        0 \r\n 2010          30            10.585       -5.017        -15.638        0 \r\n 2010          31            11.325       -3.489        -13.297        0 \r\n 2010          32            7.113         0.477        -11.222        0 \r\n 2010          33            8.85         -2.031        -14.217        0.76 \r\n 2010          34            12.122        0.156        -12.343        0 \r\n 2010          35            4.109         0.679        -6.169         0 \r\n 2010          36            4.52          0.443        -3.825         0 \r\n 2010          37            12.278       -1.333        -7.427         1.52 \r\n 2010          38            8.828        -1.917        -11.502        0 \r\n 2010          39            8.251        -2.515        -13.203        2.03 \r\n 2010          40            9.638        -5.167        -15.599        7.87 \r\n 2010          41            14.417       -6.117        -18.58         1.52 \r\n 2010          42            12.181        0.265        -19.343        0 \r\n 2010          43            12.381       -1.047        -12.548        0.25 \r\n 2010          44            9.866        -2.789        -16.018        0 \r\n 2010          45            10.305       -3.423        -12.564        1.52 \r\n 2010          46            11.859       -3.085        -11.209        0.25 \r\n 2010          47            15.231       -2.956        -10.442        0 \r\n 2010          48            13.122       -1.811        -11.534        0 \r\n 2010          49            15.425       -0.876        -13.028        0 \r\n 2010          50            9.483         0.682        -10.762        0 \r\n 2010          51            8.029         1.274        -3.574         4.83 \r\n 2010          52            5.849        -1.362        -6.482         0 \r\n 2010          53            14.02        -3.632        -12.139        5.84 \r\n 2010          54            14.99        -6.182        -16.184        0 \r\n 2010          55            16.581       -7.294        -18.826        0 \r\n 2010          56            16.732        1.424        -19.348        0 \r\n 2010          57            16.498       -1.295        -15.595        0 \r\n 2010          58            15.787        0.261        -12.223        0 \r\n 2010          59            16.553        2.763        -9.806         0 \r\n 2010          60            11.076        2.874        -7.464         0 \r\n 2010          61            17.132        3.271        -9.757         0 \r\n 2010          62            17.439        4.169        -9.763         0 \r\n 2010          63            17.579        5.741        -9.244         0 \r\n 2010          64            17.953        6.654        -7.56          0 \r\n 2010          65            16.979        7.063        -3.799         0 \r\n 2010          66            8.175         6.117         0.656         1.52 \r\n 2010          67            3.916         4.699         0.795         0 \r\n 2010          68            4.218         10.167        2.729         1.27 \r\n 2010          69            8.056         12.338        5.498         12.45 \r\n 2010          70            9.752         11.161        3.68          4.32 \r\n 2010          71            4.649         7.916         3.505         0.51 \r\n 2010          72            2.973         9.695         4.257         40.64 \r\n 2010          73            11.333        14.221        4.071         6.35 \r\n 2010          74            18.583        14.437        2.306         0 \r\n 2010          75            5.193         9.836         3.478         0 \r\n 2010          76            12.908        15.879        1.272         0 \r\n 2010          77            18.342        14.384       -0.319         0 \r\n 2010          78            16.247        12.779       -0.862         0 \r\n 2010          79            9.631         4.199        -2.277         2.03 \r\n 2010          80            17.354        11.192       -2.419         0 \r\n 2010          81            19.402        15.504       -2.084         0 \r\n 2010          82            18.931        15.516       -0.053         0 \r\n 2010          83            5.1           11.671        2.55          1.02 \r\n 2010          84            15.967        10.68        -3.081         8.89 \r\n 2010          85            20.193        10.922       -2.758         0 \r\n 2010          86            12.16         12.584        1.298         0 \r\n 2010          87            15.579        13.774       -0.098         0 \r\n 2010          88            20.421        18.055        0.088         0 \r\n 2010          89            18.551        24.259        5.042         0 \r\n 2010          90            19.004        26.827        10.673        0 \r\n 2010          91            19.37         26.934        9.358         0 \r\n 2010          92            4.634         20.336        8.132         0 \r\n 2010          93            20.801        17.304        4.671         11.18 \r\n 2010          94            10.586        20.383        5.072         0 \r\n 2010          95            13.256        22.445        5.215         9.91 \r\n 2010          96            16.643        19.014        8.938         0.25 \r\n 2010          97            4.503         12.968        2.638         1.52 \r\n 2010          98            7.952         13.209       -0.611         14.48 \r\n 2010          99            9.801         20.007        0.411         0 \r\n 2010          100           9.75          22.023        5.848         0 \r\n 2010          101           8.104         22.631        7.645         0 \r\n 2010          102           9.182         25.746        8.299         0 \r\n 2010          103           9.452         27.924        9.688         0 \r\n 2010          104           9.5           28.056        10.706        0 \r\n 2010          105           8.588         24.46         9.907         2.286 \r\n 2010          106           17.153        17.913        4.552         0 \r\n 2010          107           20.19         18.687        0.678         0 \r\n 2010          108           20.551        19.757        2.638         0 \r\n 2010          109           16.195        19.377        3.701         0 \r\n 2010          110           18.62         21.273        3.888         0 \r\n 2010          111           15.558        22.898        4.129         0 \r\n 2010          112           18.483        20.702        5.558         0 \r\n 2010          113           2.338         15.558        9.09          12.446 \r\n 2010          114           5.343         17.072        11.085        52.578 \r\n 2010          115           2.971         13.469        8.638         5.588 \r\n 2010          116           14.876        15.865        6.759         2.794 \r\n 2010          117           23.651        17.146        4.036         0 \r\n 2010          118           22.02         22.444        5.213         0 \r\n 2010          119           21.8          26.131        11.921        0 \r\n 2010          120           9.339         22.551        13.068        13.208 \r\n 2010          121           17.095        20.16         10.206        5.842 \r\n 2010          122           15.554        20.851        9.096         0.254 \r\n 2010          123           24.24         22.499        7.89          0 \r\n 2010          124           23.431        25.534        8.088         0 \r\n 2010          125           22.754        20.772        7.294         3.302 \r\n 2010          126           23.473        18.077        5.042         21.082 \r\n 2010          127           6.442         11.928        5.28          0 \r\n 2010          128           12.461        12.113        2.026         0 \r\n 2010          129           24.921        15.109        2.779         0 \r\n 2010          130           7.493         14.036        7.315         17.78 \r\n 2010          131           6.778         12.689        7.027         13.208 \r\n 2010          132           2.957         12.967        7.064         16.51 \r\n 2010          133           7.76          18.388        6.9           27.432 \r\n 2010          134           20.668        19.382        7.121         0.254 \r\n 2010          135           12.019        19.463        7.821         0 \r\n 2010          136           6.978         18.448        10.184        3.81 \r\n 2010          137           13.532        21.822        9.418         10.922 \r\n 2010          138           19.237        23.447        9.084         0.254 \r\n 2010          139           25.305        23.483        9.864         0.254 \r\n 2010          140           7.417         20.117        11.639        4.826 \r\n 2010          141           7.836         22.266        12.677        1.016 \r\n 2010          142           24.513        28.758        14.723        0 \r\n 2010          143           20.616        32.252        20.799        0 \r\n 2010          144           24.92         32.472        19.699        0 \r\n 2010          145           15.842        30.32         18.296        9.906 \r\n 2010          146           18.684        28.838        16.234        9.398 \r\n 2010          147           25.912        29.221        14.247        0 \r\n 2010          148           28.159        29.709        13.013        0 \r\n 2010          149           27.841        32.016        14.708        0 \r\n 2010          150           24.341        31.508        15.868        0 \r\n 2010          151           19.378        28.788        14.514        0.762 \r\n 2010          152           24.748        29.479        14.638        28.956 \r\n 2010          153           20.17         26.175        16.237        7.874 \r\n 2010          154           21.694        27.397        16.526        0 \r\n 2010          155           19.852        29.055        16.472        3.048 \r\n 2010          156           11.852        27.816        14.306        28.702 \r\n 2010          157           27.439        27.011        12.999        0 \r\n 2010          158           9.202         25.147        14.234        0.254 \r\n 2010          159           10.576        26.258        15.547        13.208 \r\n 2010          160           26.209        27.129        15.644        0.762 \r\n 2010          161           12.58         27.486        16.104        7.112 \r\n 2010          162           20.489        29.479        18.986        0 \r\n 2010          163           8.011         25.855        19.639        42.926 \r\n 2010          164           11.716        25.553        18.703        15.24 \r\n 2010          165           15.345        26.148        17.779        16.51 \r\n 2010          166           12.276        25.864        16.552        9.144 \r\n 2010          167           29.71         29.005        15.788        0 \r\n 2010          168           26.982        30.344        16.742        0 \r\n 2010          169           16.646        27.103        16.648        47.244 \r\n 2010          170           27.434        27.467        17.726        0.254 \r\n 2010          171           21.839        28.266        18.693        8.89 \r\n 2010          172           19.006        29.562        18.363        24.384 \r\n 2010          173           20.751        30.886        17.794        7.62 \r\n 2010          174           16.541        30.194        17.59         27.686 \r\n 2010          175           26.957        29.048        17.106        0 \r\n 2010          176           28.911        30.453        17.526        0 \r\n 2010          177           23.641        30.989        18.777        27.94 \r\n 2010          178           20.372        28.002        18.789        3.556 \r\n 2010          179           29.457        26.3          14.861        0 \r\n 2010          180           28.054        26.212        13.157        0 \r\n 2010          181           29.936        27.164        12.563        0 \r\n 2010          182           29.385        28.321        14.086        0 \r\n 2010          183           30.36         29.865        14.051        0 \r\n 2010          184           28.498        30.856        16.442        0 \r\n 2010          185           12.871        26.946        20.899        2.286 \r\n 2010          186           10.522        28.259        21.161        14.986 \r\n 2010          187           15.587        29.789        21.172        5.08 \r\n 2010          188           9.757         28.465        20.394        23.622 \r\n 2010          189           19.547        28.811        18.948        0 \r\n 2010          190           28.617        29.816        17.09         0 \r\n 2010          191           28.166        28.638        17.326        0 \r\n 2010          192           14.008        27.737        17.734        2.54 \r\n 2010          193           19.034        28.887        17.431        8.636 \r\n 2010          194           25.781        31.521        18.861        4.572 \r\n 2010          195           24.589        32.228        20.122        0 \r\n 2010          196           28.876        29.754        17.706        0 \r\n 2010          197           26.983        31.444        17.999        0 \r\n 2010          198           26.949        32.723        19.299        0 \r\n 2010          199           23.319        29.087        18.739        4.826 \r\n 2010          200           7.486         26.559        17.879        33.02 \r\n 2010          201           21.95         29.669        18.974        16.51 \r\n 2010          202           18.625        31.646        20.688        1.27 \r\n 2010          203           16.425        31.365        22.81         0 \r\n 2010          204           13.786        30.497        20.499        5.588 \r\n 2010          205           12.565        29.58         19.309        19.558 \r\n 2010          206           26.801        30.252        18.066        0 \r\n 2010          207           21.649        30.633        18.744        0 \r\n 2010          208           24.026        31.673        19.079        0 \r\n 2010          209           21.537        30.427        17.367        0.254 \r\n 2010          210           23.678        28.273        16.932        0 \r\n 2010          211           6.018         26.811        19.069        14.732 \r\n 2010          212           22.821        30.527        19.265        0.254 \r\n 2010          213           23.347        29.693        19.228        0 \r\n 2010          214           22.297        32.794        20.637        0.762 \r\n 2010          215           21.917        31.125        21.051        13.462 \r\n 2010          216           5.948         27.726        19.321        6.604 \r\n 2010          217           23.39         27.933        16.092        0 \r\n 2010          218           22.621        28.762        15.678        0 \r\n 2010          219           16.473        30.469        19.238        0.254 \r\n 2010          220           19.252        33.147        20.393        0 \r\n 2010          221           16.785        32.415        21.116        20.828 \r\n 2010          222           19.421        33.012        20.651        12.7 \r\n 2010          223           21.063        32.601        20.322        20.066 \r\n 2010          224           22.147        33.177        21.721        0 \r\n 2010          225           15.415        31.383        21.109        25.654 \r\n 2010          226           20.37         30.024        19.17         0.254 \r\n 2010          227           22.401        27.336        16.392        0 \r\n 2010          228           21.833        25.936        16.061        0 \r\n 2010          229           3.494         23.221        16.167        4.826 \r\n 2010          230           21.148        29.389        16.419        0 \r\n 2010          231           19.483        31.113        18.339        0 \r\n 2010          232           13.322        30.828        20.143        7.112 \r\n 2010          233           8.141         30.297        19.198        0 \r\n 2010          234           19.53         31.582        18.331        0 \r\n 2010          235           20.041        29.051        15.661        0 \r\n 2010          236           15.344        26.558        12.284        0 \r\n 2010          237           19.716        26.124        10.892        0 \r\n 2010          238           19.366        27.219        11.898        0 \r\n 2010          239           19.101        29.421        14.17         0 \r\n 2010          240           19.704        31.556        13.611        0 \r\n 2010          241           18.337        32.279        17.232        0 \r\n 2010          242           11.656        29.921        19.988        0 \r\n 2010          243           13.085        28.9          19.188        1.016 \r\n 2010          244           10.601        27.378        16.929        45.974 \r\n 2010          245           15.342        26.125        14.128        4.318 \r\n 2010          246           18.982        21.797        10.608        0 \r\n 2010          247           18.826        23.241        9.169         0 \r\n 2010          248           16.987        27.546        11.318        0.508 \r\n 2010          249           12.979        27.732        13.459        3.048 \r\n 2010          250           18.936        23.668        9.747         0 \r\n 2010          251           18.951        24.196        9.572         0 \r\n 2010          252           17.947        24.694        12.931        0.254 \r\n 2010          253           7.937         23.848        12.683        14.732 \r\n 2010          254           15.963        26.051        12.176        0.762 \r\n 2010          255           18.815        29.747        11.456        0 \r\n 2010          256           18.322        29.246        14.332        2.032 \r\n 2010          257           17.735        27.727        12.193        0 \r\n 2010          258           12.683        26.136        12.103        0 \r\n 2010          259           5.771         20.693        10.311        0 \r\n 2010          260           17.714        25.168        8.277         0 \r\n 2010          261           3.489         17.74         10.84         11.938 \r\n 2010          262           3.26          19.284        10.722        20.574 \r\n 2010          263           15.436        31.492        14.773        0.254 \r\n 2010          264           11.241        28.321        17.166        0.254 \r\n 2010          265           11.52         26.709        17.092        0 \r\n 2010          266           11.615        26.913        16.692        6.096 \r\n 2010          267           16.213        19.452        10.073        5.842 \r\n 2010          268           2.622         13.558        6.736         14.732 \r\n 2010          269           15.124        19.548        4.728         0.254 \r\n 2010          270           16.711        21.286        4.613         0 \r\n 2010          271           14.877        23.968        7.655         0 \r\n 2010          272           16.99         25.914        6.803         0 \r\n 2010          273           17.203        24.602        6.963         0 \r\n 2010          274           16.867        22.233        4.673         0 \r\n 2010          275           15.435        14.977        2.339         1.27 \r\n 2010          276           16.673        16.373        0.051         0 \r\n 2010          277           16.658        19.069       -0.044         0 \r\n 2010          278           16.479        22.682        1.511         0 \r\n 2010          279           15.267        26.423        3.531         0 \r\n 2010          280           16.509        25.645        4.401         0 \r\n 2010          281           15.76         29.169        5.396         0 \r\n 2010          282           14.681        30.61         8.742         0 \r\n 2010          283           13.716        28.328        8.021         0 \r\n 2010          284           11.917        26.826        8.497         0 \r\n 2010          285           13.639        26.051        7.667         0 \r\n 2010          286           14.213        20.557        5.483         0 \r\n 2010          287           14.989        21.24         1.883         0 \r\n 2010          288           14.841        19.931        2.862         0 \r\n 2010          289           13.302        23.062        2.722         0 \r\n 2010          290           14.496        18.988        2.593         0 \r\n 2010          291           10.344        17.386        2.088         0 \r\n 2010          292           12.659        18.753        0.584         0 \r\n 2010          293           14.176        20.356        3.826         0 \r\n 2010          294           14.42         16.622        0.167         0 \r\n 2010          295           10.943        21.756        2.74          0 \r\n 2010          296           8.689         20.601        12.757        25.4 \r\n 2010          297           2.737         19.163        11.987        1.27 \r\n 2010          298           7.074         20.844        9.486         0.508 \r\n 2010          299           3.613         16.861        7.677         5.588 \r\n 2010          300           12.853        12.063        2.242         0 \r\n 2010          301           6.845         8.566        -3.475         0 \r\n 2010          302           13.911        15.779       -2.333         0.254 \r\n 2010          303           10.882        17.182        1.8           0 \r\n 2010          304           12.216        12.142       -1.594         0.254 \r\n 2010          305           12.344        13.234       -1.352         0 \r\n 2010          306           13.04         14.463       -1.814         0 \r\n 2010          307           11.527        15.258       -0.764         0 \r\n 2010          308           11.403        9.629        -3.212         0 \r\n 2010          309           13.704        8.445        -5.662         0 \r\n 2010          310           12.733        13.373       -3.402         0 \r\n 2010          311           11.558        19.479        2.257         0 \r\n 2010          312           11.774        20.63         3.678         0 \r\n 2010          313           11.342        22.259        4.319         0 \r\n 2010          314           10.013        18.792        2.938         0 \r\n 2010          315           4.592         12.401        3.35          0.762 \r\n 2010          316           5.945         11.436        4.546         6.858 \r\n 2010          317           1.916         9.036         0.837         3.81 \r\n 2010          318           9.257         8.383        -1.421         0 \r\n 2010          319           8.47          11.381       -3.445         0.254 \r\n 2010          320           9.152         10.713       -1.709         0 \r\n 2010          321           3.364         4.8          -1.24          0 \r\n 2010          322           3.927         3.969        -2.063         0 \r\n 2010          323           8.892         8.195        -2.984         0 \r\n 2010          324           7.933         7.448        -2.363         0 \r\n 2010          325           2.111         13.423        1.797         0 \r\n 2010          326           5.593         5.149        -3.929         7.874 \r\n 2010          327           11.271        0.397        -7.056         0 \r\n 2010          328           0.943         2.094        -6.536         1.524 \r\n 2010          329           5.7           1.527        -8.532         0 \r\n 2010          330           6.606         1.694        -8.36          0 \r\n 2010          331           10.028        5.295        -6.102         0 \r\n 2010          332           9.127         11.123       -4.566         0 \r\n 2010          333           1.933         9.593         0.424         9.652 \r\n 2010          334           1.179        -3.321        -8.11          0.254 \r\n 2010          335           6.33         -2.964        -8.117         0 \r\n 2010          336           4.764        -0.034        -7.841         0 \r\n 2010          337           2.896        -2.536        -9.791         0 \r\n 2010          338           2.205        -3.184        -8.855         0 \r\n 2010          339           10.074       -5.734        -12.591        0 \r\n 2010          340           3.377        -7.051        -13.691        0 \r\n 2010          341           9.281        -7.089        -14.287        0 \r\n 2010          342           9.545        -2.45         -14.127        0 \r\n 2010          343           3.476         3.169        -11.021        0 \r\n 2010          344           8.461         6.621        -5.529         0 \r\n 2010          345           0.824         1.949        -10.281        8.636 \r\n 2010          346           9.317        -6.274        -16.753        1.778 \r\n 2010          347           10.319       -10.482       -19.167        0 \r\n 2010          348           5.054        -8.132        -17.108        0 \r\n 2010          349           3.32         -5.349        -10.524        0.254 \r\n 2010          350           3.945        -6.534        -12.106        0.508 \r\n 2010          351           9.41         -7.351        -17.147        0 \r\n 2010          352           9.576        -6.259        -18.909        0 \r\n 2010          353           5.319        -3.274        -17.359        0 \r\n 2010          354           3.227         0.444        -7.789         1.016 \r\n 2010          355           5.838         3.735        -9.528         6.096 \r\n 2010          356           3.333        -0.634        -8.757         0 \r\n 2010          357           3.52         -1.492        -6.729         1.524 \r\n 2010          358           3.285        -2.344        -6.567         2.286 \r\n 2010          359           5.525        -4.213        -8.733         0 \r\n 2010          360           7.889        -6.618        -13.842        0 \r\n 2010          361           7.392        -5.884        -14.036        0 \r\n 2010          362           8.783        -0.121        -13.102        1.016 \r\n 2010          363           3.894         3.498        -10.908        0.254 \r\n 2010          364           2.143         8.333        -1.746         0.762 \r\n 2010          365           4.019         5.151        -7.732         6.096 \r\n 2011          1             6.726        -4.266        -12.486        0 \r\n 2011          2             9.191        -0.228        -12.485        0 \r\n 2011          3             5.754        -0.714        -9.113         0 \r\n 2011          4             9.477        -1.77         -12.965        0 \r\n 2011          5             7.052         1.019        -12.038        0 \r\n 2011          6             3.386        -3.33         -8.161         0 \r\n 2011          7             3.078        -6.058        -13.564        0.762 \r\n 2011          8             10.128       -5.852        -16.418        0 \r\n 2011          9             5.838        -4.186        -15.421        0 \r\n 2011          10            2.693        -2.431        -7.074         6.858 \r\n 2011          11            6.548        -4.684        -11.816        1.778 \r\n 2011          12            9.872        -8.008        -17.239        0 \r\n 2011          13            6.619        -8.225        -19.405        0.508 \r\n 2011          14            5.948        -5.698        -16.803        0.762 \r\n 2011          15            5.932        -5.276        -16.908        0.254 \r\n 2011          16            6.08         -4.713        -16.069        0 \r\n 2011          17            2.296        -0.192        -7.976         20.828 \r\n 2011          18            3.761        -2.676        -11.198        0.762 \r\n 2011          19            9.13         -9.273        -15.889        0 \r\n 2011          20            9.523        -9.444        -22.593        0.508 \r\n 2011          21            8.174        -12.081       -22.429        0 \r\n 2011          22            6.059        -7.901        -16.358        0 \r\n 2011          23            8.259        -6.271        -15.35         0.254 \r\n 2011          24            6.951        -4.353        -8.943         0 \r\n 2011          25            4.38         -4.882        -7.941         0 \r\n 2011          26            3.626        -4.273        -8.804         0 \r\n 2011          27            8.787        -1.066        -7.539         0 \r\n 2011          28            6.252         0.947        -5.111         0 \r\n 2011          29            9.987         4.22         -5.924         0 \r\n 2011          30            2.564        -1.983        -6.789         0 \r\n 2011          31            2.341        -3.605        -7.451         1.524 \r\n 2011          32            2.294        -4.4          -8.3           20.32 \r\n 2011          33            11.094       -7.8          -12.2          0.254 \r\n 2011          34            13.97        -12.2         -26.1          0 \r\n 2011          35            13.594       -6.7          -26.1          0 \r\n 2011          36            12.288        0            -16.7          0.508 \r\n 2011          37            8.133         1.1          -16.1          1.27 \r\n 2011          38            9.078        -0.6          -5.6           0 \r\n 2011          39            13.502       -4.4          -22.8          0 \r\n 2011          40            13.078       -15           -22.2          0 \r\n 2011          41            14.76        -11.7         -28.3          0 \r\n 2011          42            10.657       -4.4          -22.8          0 \r\n 2011          43            11.731        2.2          -6.7           0 \r\n 2011          44            13.699        7.8          -6.7           0 \r\n 2011          45            14.137        10.6          1.7           0 \r\n 2011          46            6.836         5.6          -2.2           0 \r\n 2011          47            6.335         5.6           0.6           0 \r\n 2011          48            6.567         10.6          2.2           0 \r\n 2011          49            15.025        19.4          0             0 \r\n 2011          50            11.941        10.6         -2.2           1.524 \r\n 2011          51            2.993         6.7          -1.1           18.542 \r\n 2011          52            2.124         10            0.6           1.524 \r\n 2011          53            3.452         1.7          -4.4           0 \r\n 2011          54            3.026        -0.6          -3.3           0.508 \r\n 2011          55            2.833         2.2          -3.3           5.842 \r\n 2011          56            14.421        0.6          -8.9           2.54 \r\n 2011          57            6.54         -3.3          -8.9           0 \r\n 2011          58            5.77         -5            -8.3           13.208 \r\n 2011          59            14.146        0            -8.9           0 \r\n 2011          60            16.082        0            -9.4           0 \r\n 2011          61            16.55         8.9          -7.8           0 \r\n 2011          62            10.996        3.3          -7.8           0.254 \r\n 2011          63            5.438         11.7         -1.7           16.764 \r\n 2011          64            3.503         9.4          -1.7           0 \r\n 2011          65            15.035        0.6          -5.6           0.254 \r\n 2011          66            3.99          3.9          -5             0 \r\n 2011          67            5.949         2.8          -1.1           18.796 \r\n 2011          68            2.035         6.7           0.6           2.032 \r\n 2011          69            9.084         2.8           0.6           0 \r\n 2011          70            14.934        3.9          -4.4           0 \r\n 2011          71            15.93         12.8         -4.4           0 \r\n 2011          72            8.493         0.116        -7.793         0 \r\n 2011          73            15.628        7.887        -5.746         0 \r\n 2011          74            18.612        12.664       -4.498         0 \r\n 2011          75            17.184        17.762       -3.229         0 \r\n 2011          76            6.404         20.254        5.415         0 \r\n 2011          77            11.151        11.138       -0.964         0 \r\n 2011          78            16.477        15.082       -4.493         0 \r\n 2011          79            13.172        20.314        6.469         6.096 \r\n 2011          80            14.152        15.182        6.388         0 \r\n 2011          81            6.571         14.237        6.066         7.366 \r\n 2011          82            6.085         9.367        -2.364         0.254 \r\n 2011          83            14.441        4.849        -4.067         0 \r\n 2011          84            5.184         4.035        -0.686         0.762 \r\n 2011          85            15.32         2.997        -3.564         0 \r\n 2011          86            19.635        5.143        -6.067         0 \r\n 2011          87            20.745        6.323        -4.967         0.254 \r\n 2011          88            13.538        8.259        -2.157         2.032 \r\n 2011          89            21.258        10.2         -3.247         0 \r\n 2011          90            20.109        11.383       -4.829         0 \r\n 2011          91            13.618        13.373        2.582         0 \r\n 2011          92            20.824        16.445        0.908         0 \r\n 2011          93            13.549        28.099        8.732         6.096 \r\n 2011          94            10.609        9.487         1.303         0 \r\n 2011          95            21.119        16.844       -1.912         0 \r\n 2011          96            15.609        18.492        5.117         0 \r\n 2011          97            5.245         14.814        0.521         25.4 \r\n 2011          98            4.977         12.819        7.617         0.762 \r\n 2011          99            16.028        25.336        8.178         1.778 \r\n 2011          100           16.45         29.47         11.823        4.572 \r\n 2011          101           21.156        19.734        7.253         0 \r\n 2011          102           23.171        19.473        2.979         0 \r\n 2011          103           21.649        22.873        5.311         0 \r\n 2011          104           14.622        16.672        6.777         0 \r\n 2011          105           1.846         9.796         5.732         22.606 \r\n 2011          106           8.274         9.251         0.101         1.524 \r\n 2011          107           19.967        10.966        0.688         3.556 \r\n 2011          108           7.018         7.664         3.694         3.302 \r\n 2011          109           1.742         4.848         0.928         16.51 \r\n 2011          110           11.337        9.271         0.865         0 \r\n 2011          111           7.572         10.806       -1.96          3.048 \r\n 2011          112           2.754         8.76          5.731         4.318 \r\n 2011          113           21.256        14.286        7.034         1.016 \r\n 2011          114           18.923        15.452        2.774         0 \r\n 2011          115           3.367         13.068        6.092         9.144 \r\n 2011          116           7.33          14.188        7.708         8.636 \r\n 2011          117           11.435        9.808         4.266         0 \r\n 2011          118           13.874        13.795        3.227         0 \r\n 2011          119           25.385        20.401       -0.941         0 \r\n 2011          120           11.148        23.296        8.881         0.762 \r\n 2011          121           19.808        15.996        4.428         0 \r\n 2011          122           25.363        14.754        1.048         0 \r\n 2011          123           13.889        12.283       -0.978         0 \r\n 2011          124           25.364        17.732       -3.348         0 \r\n 2011          125           9.079         17.048        6.921         3.048 \r\n 2011          126           23.942        22.321        4.652         0 \r\n 2011          127           26.54         26.104        10.959        0 \r\n 2011          128           25.712        25.522        8.657         0 \r\n 2011          129           17.184        29.421        15.157        7.112 \r\n 2011          130           23.836        34.332        16.646        0 \r\n 2011          131           18.247        31.548        18.301        5.588 \r\n 2011          132           19.652        29.783        14.936        0 \r\n 2011          133           9.288         18.616        11.568        5.08 \r\n 2011          134           2.003         11.792        8.649         30.48 \r\n 2011          135           11.69         18.111        5.585         1.778 \r\n 2011          136           28.951        17.994        1.914         0 \r\n 2011          137           29.191        20.065        1.052         0 \r\n 2011          138           27.453        22.158        4.009         0 \r\n 2011          139           18.608        24.829        8.627         0 \r\n 2011          140           14.783        27.888        14.013        11.43 \r\n 2011          141           20.184        28.05         16.741        0.508 \r\n 2011          142           18.822        27.616        13.916        11.43 \r\n 2011          143           23.815        26.382        16.643        0 \r\n 2011          144           21.743        28.979        14.662        2.286 \r\n 2011          145           13.841        18.945        9.992         38.354 \r\n 2011          146           20.527        18.926        7.515         2.286 \r\n 2011          147           18.06         18.442        5.744         1.778 \r\n 2011          148           11.283        22.233        11.652        2.286 \r\n 2011          149           10.814        25.058        11.746        16.764 \r\n 2011          150           25.617        32.255        16.834        0 \r\n 2011          151           19.365        28.625        16.763        0.508 \r\n 2011          152           27.401        29.244        11.706        0 \r\n 2011          153           6.519         21.458        15.906        17.526 \r\n 2011          154           24.716        33.398        18.569        0 \r\n 2011          155           14.729        31.17         18.849        0.762 \r\n 2011          156           22.375        30.693        17.141        10.668 \r\n 2011          157           26.702        34.973        19.77         0 \r\n 2011          158           27.042        34.537        21.421        0 \r\n 2011          159           20.835        33.487        20.651        0 \r\n 2011          160           4.709         21.166        13.81         19.05 \r\n 2011          161           13.296        22.207        11.556        19.558 \r\n 2011          162           13.72         20.593        12.735        1.016 \r\n 2011          163           19.878        22.148        10.452        0 \r\n 2011          164           17.456        23.208        12.747        3.556 \r\n 2011          165           9.062         23.754        13.841        31.242 \r\n 2011          166           16.964        25.387        15.882        15.748 \r\n 2011          167           25.98         29.323        13.538        0 \r\n 2011          168           13.867        27.708        16.511        0 \r\n 2011          169           9.651         25.509        17.043        0 \r\n 2011          170           17.482        29.513        18.27         11.938 \r\n 2011          171           14.47         28.027        18.824        21.59 \r\n 2011          172           22.017        28.479        18.457        0 \r\n 2011          173           6.901         20.697        16.916        0.254 \r\n 2011          174           9.591         19.961        15.709        0 \r\n 2011          175           26.737        24.036        13.743        0 \r\n 2011          176           6.019         20.929        13.198        8.382 \r\n 2011          177           19.187        27.631        14.216        16.002 \r\n 2011          178           22.007        28.373        16.857        13.462 \r\n 2011          179           30.433        26.99         13.312        0 \r\n 2011          180           29.117        29.089        13.387        0 \r\n 2011          181           27.36         34.258        18.549        0 \r\n 2011          182           26.081        34.848        24.441        0 \r\n 2011          183           28.077        31.579        19.203        0 \r\n 2011          184           13.38         28.274        17.513        0.254 \r\n 2011          185           29.109        30.959        16.263        0 \r\n 2011          186           19.009        29.971        15.376        0 \r\n 2011          187           26.011        31.964        17.364        0 \r\n 2011          188           15.94         28.892        18.596        0 \r\n 2011          189           26.323        32.554        17.024        0 \r\n 2011          190           26.441        32.094        17.281        0 \r\n 2011          191           22.694        34.078        20.295        0 \r\n 2011          192           15.223        30.961        21.358        0.254 \r\n 2011          193           16.352        29.413        18.353        2.54 \r\n 2011          194           19.863        26.894        17.803        0.254 \r\n 2011          195           20.506        29.338        15.423        0 \r\n 2011          196           22.603        31.924        19.548        0 \r\n 2011          197           18.284        32.337        21.766        0.254 \r\n 2011          198           24.718        34.526        22.243        0 \r\n 2011          199           24.022        35.626        25.276        0 \r\n 2011          200           25.118        37.016        25.8          0 \r\n 2011          201           24.76         35.955        24.714        0 \r\n 2011          202           23.261        31.389        21.807        6.096 \r\n 2011          203           20.83         29.861        19.879        0.762 \r\n 2011          204           19.352        28.699        21.135        0.508 \r\n 2011          205           8.701         28.951        19.862        13.208 \r\n 2011          206           22.565        30.246        17.096        0 \r\n 2011          207           24.081        32.128        20.137        0 \r\n 2011          208           20.048        32.374        22.648        0 \r\n 2011          209           15.388        29.943        21.098        5.08 \r\n 2011          210           19.16         29.641        19.285        0 \r\n 2011          211           23.385        30.425        18.071        0 \r\n 2011          212           24.004        32.118        18.193        0 \r\n 2011          213           22.286        32.811        19.857        0 \r\n 2011          214           22.223        33.326        23.716        0 \r\n 2011          215           21.96         30.118        17.679        0 \r\n 2011          216           17.668        26.949        16.627        0 \r\n 2011          217           13.356        27.625        19.917        1.016 \r\n 2011          218           20.017        29.927        20.503        0 \r\n 2011          219           22.916        29.458        18.311        6.35 \r\n 2011          220           17.824        26.348        16.775        0 \r\n 2011          221           22.808        26.16         15.376        0 \r\n 2011          222           22.479        24.714        11.991        0 \r\n 2011          223           21.785        27.046        10.661        0 \r\n 2011          224           17.028        27.631        14.436        0 \r\n 2011          225           19.607        24.257        16.007        0.254 \r\n 2011          226           22.04         27.162        13.588        0 \r\n 2011          227           21.459        27.118        12.584        0 \r\n 2011          228           15.43         26.289        14.294        0 \r\n 2011          229           18.313        28.737        14.904        0 \r\n 2011          230           18.891        28.896        12.668        0.508 \r\n 2011          231           20.42         29.967        13.885        0 \r\n 2011          232           18.101        26.937        16.704        5.08 \r\n 2011          233           20.279        27.263        13.372        0 \r\n 2011          234           17.743        28.952        12.509        0 \r\n 2011          235           15.966        30.376        19.243        0 \r\n 2011          236           18.866        29.671        16.22         0 \r\n 2011          237           19.987        28.248        13.071        0 \r\n 2011          238           17.2          27.349        12.837        0 \r\n 2011          239           19.814        28.014        15.289        0 \r\n 2011          240           15.155        24.568        12.666        0 \r\n 2011          241           19.333        26.608        11.407        0 \r\n 2011          242           5.818         20.339        14.867        15.24 \r\n 2011          243           18.227        29.545        15.901        0 \r\n 2011          244           17.309        34.402        20.606        0 \r\n 2011          245           17.752        31.283        21.214        0 \r\n 2011          246           10.286        23.466        14.842        25.908 \r\n 2011          247           19.8          21.079        11.116        0 \r\n 2011          248           18.894        20.413        6.654         0 \r\n 2011          249           18.972        20.941        5.581         0 \r\n 2011          250           18.741        22.834        5.974         0 \r\n 2011          251           16.801        26.303        9.682         0 \r\n 2011          252           15.777        26.134        11.832        1.778 \r\n 2011          253           16.283        27.259        11.301        0 \r\n 2011          254           17.597        29.674        11.096        0 \r\n 2011          255           17.448        30.58         13.062        0 \r\n 2011          256           17.034        22.151        9.977         0 \r\n 2011          257           7.726         16.263        4.094         1.016 \r\n 2011          258           18.509        15.257        1.299         0 \r\n 2011          259           5.045         11.464        6.177         4.826 \r\n 2011          260           7.235         16.839        7.547         0 \r\n 2011          261           3.525         15.926        13.251        3.048 \r\n 2011          262           13.982        23.943        8.558         0 \r\n 2011          263           16.64         25.263        7.376         0 \r\n 2011          264           16.974        18.169        9.156         0 \r\n 2011          265           12.501        16.449        4.21          0 \r\n 2011          266           11.582        17.207        2.4           0 \r\n 2011          267           11.413        17.257        1.374         0 \r\n 2011          268           11.23         18.445        4.077         0 \r\n 2011          269           2.462         15.992        8.918         12.192 \r\n 2011          270           14.443        19.091        9.96          1.27 \r\n 2011          271           11.368        21.734        9.355         0 \r\n 2011          272           8.136         21.768        9.373         0 \r\n 2011          273           16.041        18.699        5.505         0 \r\n 2011          274           16.609        17.461       -0.067         0 \r\n 2011          275           16.373        22.687       -0.595         0 \r\n 2011          276           15.628        26.392        2.786         0 \r\n 2011          277           15.625        27.567        5.421         0 \r\n 2011          278           15.527        28.674        6.753         0 \r\n 2011          279           14.771        28.62         7.353         0 \r\n 2011          280           15.335        29.79         11.214        0 \r\n 2011          281           14.917        29.692        11.669        0 \r\n 2011          282           14.716        28.075        9.038         0 \r\n 2011          283           11.832        26.521        7.119         0 \r\n 2011          284           11.659        24.969        11.901        3.81 \r\n 2011          285           5.423         19.983        10.194        13.462 \r\n 2011          286           14.358        20.658        9.716         0 \r\n 2011          287           11.646        15.769        7.683         0 \r\n 2011          288           14.961        18.678        4.508         0 \r\n 2011          289           7.948         16.137        4.23          0 \r\n 2011          290           5.196         12.859        0.81          0.254 \r\n 2011          291           6.392         10.979        4.096         0 \r\n 2011          292           6.977         1.776         0.443         0 \r\n 2011          293           7.85          2.348        -0.162         0 \r\n 2011          294           14.58         16.241       -2.056         0 \r\n 2011          295           13.615        19.801        0.387         0 \r\n 2011          296           12.286        22.703        2.237         0.508 \r\n 2011          297           13.662        20.978        2.731         0 \r\n 2011          298           9.681         25.356        9.935         0 \r\n 2011          299           4.097         11.252        5.696         0 \r\n 2011          300           10.713        13.462       -0.893         0 \r\n 2011          301           10.486        15.013       -3.747         0 \r\n 2011          302           13.476        14.414       -2.897         0 \r\n 2011          303           7.332         12.953        1.176         1.016 \r\n 2011          304           13.435        12.496       -0.819         0 \r\n 2011          305           12.533        23.312       -0.5           0 \r\n 2011          306           2.779         15.109        2.98          24.13 \r\n 2011          307           6.335         10.558       -0.439         11.938 \r\n 2011          308           13.214        12.984       -4.076         0 \r\n 2011          309           3.696         11.903        0.297         0 \r\n 2011          310           6.94          17.303        4.393         0 \r\n 2011          311           8.203         16.006        0.329         3.81 \r\n 2011          312           1.533         8.31          4.11          20.066 \r\n 2011          313           7.08          7.819         0.575         17.272 \r\n 2011          314           10.292        4.837        -2.434         0 \r\n 2011          315           11.113        11.045       -4.072         0 \r\n 2011          316           8.009         15.602       -2.316         0 \r\n 2011          317           9.303         17.332        4.309         0 \r\n 2011          318           8.651         16.442       -0.382         0 \r\n 2011          319           10.807        16.021       -2.824         0 \r\n 2011          320           11.413        6.248        -5.129         0 \r\n 2011          321           12.168        5.854        -7.164         0 \r\n 2011          322           9.564         13.739       -0.537         0 \r\n 2011          323           1.77          12.543        0.74          0 \r\n 2011          324           3.078         3.374        -2.256         0 \r\n 2011          325           8.552         7.939        -4.926         0 \r\n 2011          326           1.483         6.096        -0.117         4.064 \r\n 2011          327           4.819         7.784        -2.776         0 \r\n 2011          328           9.188         15.812        4.486         0 \r\n 2011          329           5.828         12.495        6.257         0 \r\n 2011          330           1.023         12.996        3.257         11.176 \r\n 2011          331           1.248         3.549         0.077         0 \r\n 2011          332           3.261         1.894        -4.319         0 \r\n 2011          333           9.517         5.527        -4.792         0 \r\n 2011          334           9.009         7.238        -9.266         0 \r\n 2011          335           5.805         4.801        -4.279         0 \r\n 2011          336           9.535         5.247        -8.751         0 \r\n 2011          337           2.084         9.703         2.041         19.304 \r\n 2011          338           1.686         7.037        -2.934         0.254 \r\n 2011          339           3.605        -2.038        -5.005         0 \r\n 2011          340           4.021        -2.39         -6.884         3.048 \r\n 2011          341           8.623        -0.966        -10.842        0 \r\n 2011          342           5.384         1.22         -6.678         0.254 \r\n 2011          343           9.501        -5.172        -14.448        1.524 \r\n 2011          344           8.247        -1.6          -17.113        0 \r\n 2011          345           8.101         2.759        -6.324         0 \r\n 2011          346           2.893         4.559        -1.179         0 \r\n 2011          347           1.627         6.174         1.138         13.208 \r\n 2011          348           0.939         12.809        4.029         18.034 \r\n 2011          349           1.792         9.59         -3.246         0 \r\n 2011          350           9.036         1.516        -7.678         0 \r\n 2011          351           8.073         4.392        -3.86          0 \r\n 2011          352           8.2           10.768       -5.658         0 \r\n 2011          353           4.787         6.434        -0.09          0 \r\n 2011          354           0.983         2.639        -1.175         1.778 \r\n 2011          355           4.27          5.355        -0.8           0 \r\n 2011          356           1.385         0.803        -7.664         0 \r\n 2011          357           8.615         0.124        -11.108        0 \r\n 2011          358           8.764         7.013        -8.546         0 \r\n 2011          359           8.866         8.001        -3.218         0 \r\n 2011          360           6.157         7.232        -7.032         1.778 \r\n 2011          361           2.349         3.554        -3.534         0 \r\n 2011          362           7.649         6.341        -6.065         0 \r\n 2011          363           8.528         10.4         -0.068         2.54 \r\n 2011          364           1.015         4.636         0.936         14.732 \r\n 2011          365           8.227         10.838        1.271         0 \r\n 2012          1             7.693748      6.067778     -5.085556      1.524 \r\n 2012          2             5.300196     -3.371111     -10.92444      0.508 \r\n 2012          3             8.981942      0.945        -14.19556      0 \r\n 2012          4             9.20535       7.459445     -3.473333      0 \r\n 2012          5             8.919642      15.97833     -2.327222      0 \r\n 2012          6             8.120382      12.72111     -2.170556      0 \r\n 2012          7             8.527675      4.858889     -4.24          0 \r\n 2012          8             4.427331      5.378889     -6.634444      0 \r\n 2012          9             9.08322       10.15278     -6.715         0 \r\n 2012          10            9.346989      13.01278     -5.244444      0 \r\n 2012          11            9.16838       11.57611     -7.826111      0 \r\n 2012          12            4.97329      -6.405        -11.66111      8.128 \r\n 2012          13            6.839766     -8.692223     -18.085        0 \r\n 2012          14            9.789952     -0.6433333    -18.91778      0 \r\n 2012          15            10.17614      5.162222     -11.57111      0 \r\n 2012          16            3.346886      5.618889     -3.061667      0 \r\n 2012          17            3.959499     -4.666667E-02               -14.12111      5.588 \r\n 2012          18            4.870002     -2.436667     -18.70444      0 \r\n 2012          19            5.211101     -4.625556     -18.83055      2.286 \r\n 2012          20            1.31386      -11.30167     -17.66611      3.048 \r\n 2012          21            3.069971     -5.502222     -14.32111      0 \r\n 2012          22            1.436659      2.185555     -8.271667      0 \r\n 2012          23            3.391894      3.200556     -3.477222      1.016 \r\n 2012          24            6.608236     -0.3911111    -5.954444      0 \r\n 2012          25            4.679042      1.996111     -6.795556      0 \r\n 2012          26            3.714361      3.321667     -1.874444      0 \r\n 2012          27            3.177823      2.215556     -6.051667      2.794 \r\n 2012          28            10.83791      3.997222     -5.607778      0 \r\n 2012          29            10.32356      0.425        -5.932222      0 \r\n 2012          30            10.03877      14.28556     -2.282778      0 \r\n 2012          31            5.823001      14.14111      2.666667      0 \r\n 2012          32            6.349408      6.352222     -3.363333      0 \r\n 2012          33            8.606386      8.834444     -4.370555      0 \r\n 2012          34            4.034191      2.303333     -0.4355555     1.524 \r\n 2012          35            1.343753      2.871667     -0.1966667     8.128 \r\n 2012          36            4.258143      1.041667     -3.057222      0 \r\n 2012          37            3.632593     -0.9361111    -6.734445      0 \r\n 2012          38            1.562179      0.3044444    -6.142222      0 \r\n 2012          39            4.334385     -0.8538889    -7.670556      0 \r\n 2012          40            6.518638     -6.555556E-02               -10.89333      0 \r\n 2012          41            4.483728      0.2422222    -10.98889      0.254 \r\n 2012          42            14.40598     -4.165555     -13.955        0 \r\n 2012          43            14.50559      1.097778     -12.80056      0 \r\n 2012          44            4.516217     -0.895        -10.04167      3.048 \r\n 2012          45            6.012412      1.955556     -2.356111      0 \r\n 2012          46            6.886826      6.682222     -4.948333      2.794 \r\n 2012          47            13.89771      7.556111     -2.62          0 \r\n 2012          48            12.99084      10.19        -5.398334      0 \r\n 2012          49            14.28758      4.579444     -6.417778      0 \r\n 2012          50            14.37822      6.044445     -7.926667      0 \r\n 2012          51            11.2218       7.714445     -6.187222      1.27 \r\n 2012          52            11.76298      8.713889     -1.28          1.524 \r\n 2012          53            10.155        9.889444     -2.452222      0.762 \r\n 2012          54            0.9411926     2.957778     -3.055556      13.716 \r\n 2012          55            10.96226     -5.777778E-02               -5.49          2.286 \r\n 2012          56            15.61287     -2.480556     -9.625         0 \r\n 2012          57            15.41454      12.86889     -5.982778      0 \r\n 2012          58            16.13015      2.956667     -6.430555      0 \r\n 2012          59            6.623811      9.102222     -4.379445      2.794 \r\n 2012          60            9.248013      10.78222      5.833333E-02                5.588 \r\n 2012          61            12.08403      6.735        -8.944444E-02                0 \r\n 2012          62            3.724577      3.126667     -0.6022222     4.826 \r\n 2012          63            6.01932       0.33         -3.801667      0 \r\n 2012          64            7.872649     -1.286111     -9.462222      4.318 \r\n 2012          65            15.97641      2.93         -13.27389      0 \r\n 2012          66            16.09197      21.44278     -0.3705555     0 \r\n 2012          67            4.56043       19.24667      1.507778      2.794 \r\n 2012          68            15.5674       7.42         -1.864444      0.254 \r\n 2012          69            18.1898       7.324444     -4.411111      0 \r\n 2012          70            18.21551      18.755        8.166666E-02                0 \r\n 2012          71            12.92143      19.43278      1.735         2.794 \r\n 2012          72            7.427676      16.44667      8.067223      3.556 \r\n 2012          73            17.96485      22.96         1.258333      0 \r\n 2012          74            13.48258      25.31667      8.068889      0 \r\n 2012          75            15.14864      27.07111      12.04889      0 \r\n 2012          76            15.77239      27.89889      11.43167      0 \r\n 2012          77            15.32134      28.495        13.65611      0 \r\n 2012          78            13.48212      28.52389      14.80056      0 \r\n 2012          79            15.34923      27.93778      14.58222      2.286 \r\n 2012          80            16.65618      25.66222      13.43722      0 \r\n 2012          81            11.14911      25.54667      13.98056      0 \r\n 2012          82            3.87392       20.74667      11.75         2.032 \r\n 2012          83            14.34004      20.06222      7.989444      0 \r\n 2012          84            6.464629      20.34167      9.142222      0 \r\n 2012          85            18.12667      23.97333      8.043889      0 \r\n 2012          86            16.09929      14.14889      5.978333      0 \r\n 2012          87            10.91804      25.72556      7.608889      0 \r\n 2012          88            19.83631      21.58111      7.208333      0 \r\n 2012          89            10.2716       17.90333      5.472222      0.254 \r\n 2012          90            6.57897       14.78611      6.248889      8.382 \r\n 2012          91            14.51132      18.59         6.553333      1.016 \r\n 2012          92            19.89705      27.00833      9.138333      0 \r\n 2012          93            19.43492      27.06611      9.324445      0 \r\n 2012          94            17.30007      24.52222      9.345         0.254 \r\n 2012          95            15.97997      20.24         9.306111      0 \r\n 2012          96            20.43569      16.55278      4.498889      0 \r\n 2012          97            21.7086       17.74722     -1.857222      0 \r\n 2012          98            6.030206      15.97444     -4.444445E-03                1.27 \r\n 2012          99            21.25341      19.895        0.7288889     0 \r\n 2012          100           20.89741      17.86778      2.64          0 \r\n 2012          101           22.54542      13.10611     -1.567778      0 \r\n 2012          102           22.44489      14.29444     -3.724444      0 \r\n 2012          103           21.51362      18.23778     -2.828333      0 \r\n 2012          104           4.847268      12.22167      7.565556      6.096 \r\n 2012          105           8.489783      20.91055      10.43278      26.162 \r\n 2012          106           7.484951      23.30611      14.51278      6.096 \r\n 2012          107           14.58309      15.47389      6.167222      0.254 \r\n 2012          108           22.5226       18.78056      1.222222      0 \r\n 2012          109           18.17234      23.38333      9.408334      0 \r\n 2012          110           7.334436      18.31667      9.132222      3.556 \r\n 2012          111           8.133403      14.08333      2.194444      0.254 \r\n 2012          112           15.75443      13.58556     -5.555556E-02                0.508 \r\n 2012          113           19.037        14.58778      3.256667      0.254 \r\n 2012          114           21.11081      18.14444      2.508333      0 \r\n 2012          115           18.56289      25.71111      7.060555      0 \r\n 2012          116           16.90764      27.34056      11.00889      0 \r\n 2012          117           22.08143      19.68778      8.191112      0 \r\n 2012          118           15.61161      15.11722      5.438889      1.778 \r\n 2012          119           9.756458      10.69556      4.175         12.446 \r\n 2012          120           3.473537      10.89444      6.366667      14.732 \r\n 2012          121           6.680165      15.96167      6.63          0 \r\n 2012          122           8.85839       18.99889      6.345556      4.318 \r\n 2012          123           10.49359      25.07889      15.10889      13.716 \r\n 2012          124           14.38266      29.16667      17.00389      87.884 \r\n 2012          125           15.04627      26.93389      15.75889      11.938 \r\n 2012          126           20.80693      27.99833      14.73111      0 \r\n 2012          127           15.41211      27.51222      15.91444      7.112 \r\n 2012          128           18.88452      23.03167      12.97667      13.208 \r\n 2012          129           23.31918      20.4          9.903334      0 \r\n 2012          130           21.53732      20.59222      7.502778      0 \r\n 2012          131           25.74782      23.11444      5.515555      0 \r\n 2012          132           23.15066      27.93556      9.931666      0 \r\n 2012          133           14.95299      21.27278      12.18056      0 \r\n 2012          134           25.12515      25.00111      9.207222      0 \r\n 2012          135           26.45806      27.325        6.674445      0 \r\n 2012          136           25.14743      31.50056      13.97833      0.254 \r\n 2012          137           26.68047      23.82167      10.10111      0 \r\n 2012          138           25.61103      27.30944      8.245         0 \r\n 2012          139           25.77453      31.675        9.714444      0 \r\n 2012          140           22.31799      32.09945      14.73222      0 \r\n 2012          141           23.41778      26.97722      11.99833      0 \r\n 2012          142           28.83679      25.15778      8.820556      0 \r\n 2012          143           27.31473      28.11333      8.127222      0 \r\n 2012          144           26.18065      30.48389      13.25222      0 \r\n 2012          145           23.30695      31.97222      15.58944      0 \r\n 2012          146           20.93769      25.80667      12.48056      0 \r\n 2012          147           21.41866      33.07944      17.26722      0 \r\n 2012          148           26.0931       34.24         20.69222      0 \r\n 2012          149           17.56304      31.83667      16.24111      6.096 \r\n 2012          150           28.58567      26.03667      11.56944      0 \r\n 2012          151           28.65257      22.33556      9.678889      0.254 \r\n 2012          152           4.708936      14.40222      8.835         16.51 \r\n 2012          153           23.56951      20.82722      7.516111      0 \r\n 2012          154           18.38248      23.42278      12.63         0 \r\n 2012          155           24.15867      28.16333      10.04944      0 \r\n 2012          156           16.60435      27.54056      15.58833      0.254 \r\n 2012          157           23.64625      27.725        13.81833      0 \r\n 2012          158           29.18534      26.39333      12.26667      0 \r\n 2012          159           26.56533      28.34278      11.59611      0 \r\n 2012          160           28.6944       29.99111      13.46056      0 \r\n 2012          161           28.49389      32.30389      15.99833      0 \r\n 2012          162           26.70693      32.35722      19.41         0 \r\n 2012          163           20.8694       28.82722      16.91167      2.794 \r\n 2012          164           31.29009      23.72944      11.41944      0 \r\n 2012          165           21.99858      25.60556      9.656667      0 \r\n 2012          166           28.97743      31.84945      13.14333      0 \r\n 2012          167           25.35417      33.54167      17.20889      3.556 \r\n 2012          168           16.13697      29.73333      19.13667      27.94 \r\n 2012          169           28.57319      29.92389      17.055        0 \r\n 2012          170           27.08562      33.43111      23.49         0 \r\n 2012          171           26.88332      33.52444      22.09         0 \r\n 2012          172           26.75298      32.76         20.62222      0 \r\n 2012          173           26.32371      27.48611      15.93333      1.016 \r\n 2012          174           27.5007       29.40611      13.40667      0 \r\n 2012          175           11.54569      27.35222      15.01944      0.762 \r\n 2012          176           21.75834      31.95555      18.05889      3.048 \r\n 2012          177           30.05821      27.15222      15.72222      0 \r\n 2012          178           28.03862      29.21944      9.535         0 \r\n 2012          179           26.99716      35.36778      15.31722      0 \r\n 2012          180           25.13792      35.635        22.64333      0 \r\n 2012          181           20.46533      32.91889      19.35556      23.114 \r\n 2012          182           20.28304      32.12944      18.26278      22.352 \r\n 2012          183           20.50042      32.93389      21.18667      5.334 \r\n 2012          184           26.02682      34.84833      20.97556      0 \r\n 2012          185           25.70963      34.58222      21.80056      0 \r\n 2012          186           25.80584      35.52945      22.73833      0 \r\n 2012          187           25.30648      36.04833      22.04611      0 \r\n 2012          188           26.03386      36.46833      21.94722      0 \r\n 2012          189           26.53799      36.45778      22.19444      0 \r\n 2012          190           26.61088      31.09833      19.63167      0 \r\n 2012          191           26.18743      32.88667      16.99055      0 \r\n 2012          192           25.99425      29.685        16.94555      0 \r\n 2012          193           27.28341      31.56333      15.17722      0 \r\n 2012          194           23.40358      33.30556      14.64222      0 \r\n 2012          195           13.8326       30.10167      20.38833      2.286 \r\n 2012          196           24.7766       31.31         19.22056      0 \r\n 2012          197           23.57005      34.61222      18.81722      0 \r\n 2012          198           25.68828      34.77         20.93444      0 \r\n 2012          199           25.56012      35.95333      21.75111      0 \r\n 2012          200           24.77568      37.23555      21.41167      3.048 \r\n 2012          201           25.82347      31.19611      19.45444      0 \r\n 2012          202           15.58448      30.43667      18.43722      0 \r\n 2012          203           18.74049      30.23167      17.36722      0 \r\n 2012          204           19.35227      35.07333      18.765        0 \r\n 2012          205           23.47807      38.71556      22.50556      0 \r\n 2012          206           23.13693      35.17445      24.27555      0 \r\n 2012          207           24.34859      38.645        22.1          0 \r\n 2012          208           19.88207      32.89167      20.44222      2.032 \r\n 2012          209           24.69479      28.84833      17.95555      0.508 \r\n 2012          210           11.45575      26.74111      15.545        1.27 \r\n 2012          211           20.46956      31.51167      18.15722      3.048 \r\n 2012          212           20.15446      34.17889      18.85667      0 \r\n 2012          213           24.61583      33.31111      18.36778      0 \r\n 2012          214           24.39376      34.97445      15.86278      0 \r\n 2012          215           20.23937      34.60222      18.81889      0 \r\n 2012          216           22.76221      35.39611      17.69         0 \r\n 2012          217           12.15106      31.46278      18.61833      11.684 \r\n 2012          218           24.94843      27.11833      13.78111      0 \r\n 2012          219           24.6237       30.60944      10.75556      0 \r\n 2012          220           22.60767      34.70667      15.16944      0 \r\n 2012          221           10.87153      29.82         17.68667      1.27 \r\n 2012          222           16.71994      27.14         15.18889      2.032 \r\n 2012          223           20.33177      25.885        12.77278      0 \r\n 2012          224           23.49125      26.65667      10.77167      0 \r\n 2012          225           6.510139      21.25167      13.925        17.018 \r\n 2012          226           7.632871      25.23667      14.83778      6.35 \r\n 2012          227           20.64704      28.47889      13.61056      0 \r\n 2012          228           20.16467      29.76722      15.49         0.254 \r\n 2012          229           11.52036      23.81778      13.10056      6.858 \r\n 2012          230           22.12715      24.565        9.570556      0 \r\n 2012          231           20.60215      24.69278      8.036667      0 \r\n 2012          232           21.69533      25.66167      11.22056      0.508 \r\n 2012          233           20.65353      26.98333      9.638333      0 \r\n 2012          234           21.54318      27.75611      8.11          0 \r\n 2012          235           21.2352       32.96944      10.18         0 \r\n 2012          236           19.05459      33.58944      13.87444      0 \r\n 2012          237           19.44471      32.68167      15.94667      0 \r\n 2012          238           16.39827      31.42667      14.40444      0.762 \r\n 2012          239           4.993806      24.61056      17.22389      27.686 \r\n 2012          240           19.52334      31.06722      15.89         0 \r\n 2012          241           18.55293      33.01611      16.15         0 \r\n 2012          242           18.75063      33.27555      17.14056      0 \r\n 2012          243           18.90709      33.66222      17.88278      0 \r\n 2012          244           12.27771      31.12056      16.35         0 \r\n 2012          245           4.932553      26.35722      19.39778      9.652 \r\n 2012          246           9.318603      31.04667      18.30611      0 \r\n 2012          247           17.10701      31.49722      18.02555      0 \r\n 2012          248           17.73901      34.24889      20.25111      0 \r\n 2012          249           17.70313      29.76056      16.58389      12.446 \r\n 2012          250           18.86572      29.26944      13.48056      0 \r\n 2012          251           9.424989      22.94         12.16667      24.384 \r\n 2012          252           18.77709      23.82167      9.006667      0 \r\n 2012          253           18.21141      24.21667      9.53          0 \r\n 2012          254           18.74874      26.52555      7.771111      0 \r\n 2012          255           19.03537      31.25889      12.15944      0 \r\n 2012          256           18.16519      30.18389      12.49278      0 \r\n 2012          257           1.90491       17.78722      8.189445      3.048 \r\n 2012          258           15.72704      23.98667      6.812222      0 \r\n 2012          259           17.97829      26.39611      6.437222      0 \r\n 2012          260           17.02818      25.11333      6.902222      0 \r\n 2012          261           9.273092      22.16167      7.448333      7.874 \r\n 2012          262           16.64031      17.95389      4.663333      0 \r\n 2012          263           17.08403      26.52389      4.972778      0 \r\n 2012          264           16.74414      21.42945      7.382778      0 \r\n 2012          265           9.168297      18.81611      5.894444      0.508 \r\n 2012          266           17.5833       15.95111      2.931111      0 \r\n 2012          267           17.44078      17.29556     -0.3372222     0 \r\n 2012          268           16.87385      23.91889     -1.322222      0 \r\n 2012          269           14.95634      28.78889      8.129444      0 \r\n 2012          270           14.5874       23.955        8.505         0 \r\n 2012          271           16.46568      21.90889      4.052778      0 \r\n 2012          272           16.7459       23.64444      2.168333      0 \r\n 2012          273           15.76071      27.95833      4.082778      0 \r\n 2012          274           15.83607      25.08556      5.287222      0 \r\n 2012          275           9.953196      22.45056      5.775556      0 \r\n 2012          276           15.74647      24.58167      5.363333      0 \r\n 2012          277           15.54396      26.14056      5.141111      0 \r\n 2012          278           5.283365      16.50222      5.597778      3.302 \r\n 2012          279           3.519173      8.807777     -0.085         0.254 \r\n 2012          280           10.27202      7.930555     -2.070555      0 \r\n 2012          281           17.77816      11.75833     -1.822778      0 \r\n 2012          282           16.54498      17.96778      0.6877778     0 \r\n 2012          283           10.0541       16.00778      3.152778      0.762 \r\n 2012          284           16.70906      13.12889     -1.803889      0 \r\n 2012          285           15.52126      20.45167      0.4           0 \r\n 2012          286           16.82692      14.79444      1.255556      1.27 \r\n 2012          287           2.200205      20.27667      8.421667      18.288 \r\n 2012          288           2.796741      17.55056      5.417778      18.542 \r\n 2012          289           15.29019      18.78944      3.321111      0 \r\n 2012          290           12.3967       24.95778      5.081666      0 \r\n 2012          291           2.756045      18.22333      7.508889      9.398 \r\n 2012          292           4.148574      8.901111      5.893333      4.064 \r\n 2012          293           6.832272      11.38056      5.111667      0.508 \r\n 2012          294           9.981499      13.75833      3.232778      0 \r\n 2012          295           13.72839      23.44611      2.388333      0 \r\n 2012          296           3.02668       21.38         12.765        7.112 \r\n 2012          297           7.031312      23.50167      14.96         0.508 \r\n 2012          298           11.71052      26.85667      15.925        0.508 \r\n 2012          299           2.504292      20.69056      2.997222      3.556 \r\n 2012          300           13.51934      8.270555     -1.654444      0 \r\n 2012          301           11.08552      7.720556     -3.567778      0 \r\n 2012          302           13.15212      10.41389     -4.928333      0 \r\n 2012          303           12.56815      11.39944     -4.155         0 \r\n 2012          304           13.10841      12.65333     -1.902222      0 \r\n 2012          305           13.64855      11.07778     -3.519444      0 \r\n 2012          306           11.65287      15.15833     -0.2744444     0 \r\n 2012          307           8.690289      8.965        -2.912222      0 \r\n 2012          308           8.302299      10.22167     -1.573889      0 \r\n 2012          309           5.84134       9.905        -1.832222      3.81 \r\n 2012          310           4.836717      8.868889      1.017222      2.286 \r\n 2012          311           1.568501      7.957222      2.632222      3.302 \r\n 2012          312           4.07204       7.207222      2.353333      0 \r\n 2012          313           11.66564      13.46111      8.277778E-02                0 \r\n 2012          314           8.526167      15.19333      2.287778      0 \r\n 2012          315           7.459999      22.83333      11.64556      0 \r\n 2012          316           1.030874      18.29445     -2.833889      19.558 \r\n 2012          317           10.64686      1.617222     -5.830555      0 \r\n 2012          318           11.71249      7.615556     -7.519444      0 \r\n 2012          319           10.48103      13.18167      0.5488889     0 \r\n 2012          320           9.360973      13.78222     -1.866667      0 \r\n 2012          321           10.84674      13.805       -2.631111      0 \r\n 2012          322           9.948548      14.91389     -3.187222      0 \r\n 2012          323           8.550995      16.24778     -1.598333      0 \r\n 2012          324           3.517414      13.10722      2.117222      0 \r\n 2012          325           3.216676      10.35611      0.605         0 \r\n 2012          326           9.302902      18.48778      1.334444      0 \r\n 2012          327           4.115876      17.83444      3.338333      0.762 \r\n 2012          328           10.04531      3.843333     -6.566111      0 \r\n 2012          329           5.238315     -0.5116667    -9.514444      0 \r\n 2012          330           6.059891      4.969444     -3.14          0 \r\n 2012          331           3.869148     -0.425        -9.553333      0 \r\n 2012          332           9.016567      1.426667     -12.775        0 \r\n 2012          333           9.658236      8.451667     -7.863333      0 \r\n 2012          334           7.717361      12.00167     -5.448333      0 \r\n 2012          335           8.232379      11.39556     -3.503333      0 \r\n 2012          336           1.879622      14.515       -2.412222      0 \r\n 2012          337           3.770423      16.20722      4.042222      0 \r\n 2012          338           3.446364      20.66111      6.441111      0.254 \r\n 2012          339           8.828663      14.83722      0.065         0 \r\n 2012          340           7.89731       5.894444     -4.667778      0 \r\n 2012          341           2.787488      10.32667      2.766111      2.032 \r\n 2012          342           1.381435      5.528889      0.9688889     4.318 \r\n 2012          343           6.500175      5.368333     -2.368889      0 \r\n 2012          344           1.514031      3.314445     -4.602778      1.524 \r\n 2012          345           5.604785     -3.045        -10.10722      0 \r\n 2012          346           8.38771       3.141667     -10.83111      0 \r\n 2012          347           8.838167      9.427222     -4.562778      0 \r\n 2012          348           8.54685       10.36056     -3.372778      0 \r\n 2012          349           6.336177      10.98        -6.533889      2.286 \r\n 2012          350           1.56377       9.115         3.787222      7.112 \r\n 2012          351           1.410784      6.359445     -1.373889      0 \r\n 2012          352           1.839303      0.1172222    -4.534444      0 \r\n 2012          353           4.245583      5.560555     -3.181667      0 \r\n 2012          354           1.931622      2.332778     -0.3477778     22.86 \r\n 2012          355           2.563913      1.597778     -9.868333      43.942 \r\n 2012          356           9.786561     -6.101111     -12.58444      0 \r\n 2012          357           9.495369     -0.2827778    -15.4          0 \r\n 2012          358           8.188836     -3.802222     -12.02167      0 \r\n 2012          359           4.128478     -4.378889     -9.109445      0 \r\n 2012          360           8.665001     -6.921667     -14.51556      0 \r\n 2012          361           4.428965     -4.091667     -11.42722      0 \r\n 2012          362           7.679805     -1.535        -14.01778      0 \r\n 2012          363           3.533157     -1.006667     -5.684444      0 \r\n 2012          364           5.990097     -4.003889     -13.88         0 \r\n 2012          365           7.561612      2.123889     -15.99889      0 \r\n 2012          366           3.467717      0.7588889    -11.01222      0 \r\n 2013          1             9.628217     -8.446111     -17.62444      0 \r\n 2013          2             9.229884     -0.9711111    -16.95944      0 \r\n 2013          3             8.070518     -1.614444     -12.80778      0 \r\n 2013          4             9.561354      1.633333     -12.79444      0 \r\n 2013          5             3.800903      2.846111     -10.96722      0.762 \r\n 2013          6             8.920606     -3.151667     -11.53333      0 \r\n 2013          7             8.688866      4.727222     -10.95722      0 \r\n 2013          8             7.045003      6.826667     -6.240556      0 \r\n 2013          9             8.129929      6.797778     -4.215         0 \r\n 2013          10            2.885501      4.61         -4.513889      8.382 \r\n 2013          11            3.050544      11.00278      1.797778      0 \r\n 2013          12            4.805358      10.48667     -7.852222      4.318 \r\n 2013          13            8.252309     -7.275        -12.48889      0.254 \r\n 2013          14            10.12201     -0.1588889    -15.18         0 \r\n 2013          15            9.948883     -9.444445E-02               -13.6          0 \r\n 2013          16            7.884791      5.3          -9.265555      0 \r\n 2013          17            9.874694      1.245        -8.932222      0 \r\n 2013          18            10.09262      11.01778     -6.302222      0 \r\n 2013          19            8.241715      11.01722     -7.696111      0 \r\n 2013          20            4.441064     -7.447778     -13.05222      1.016 \r\n 2013          21            11.04415     -12.07111     -18.31833      0 \r\n 2013          22            9.224776     -10.32667     -19.26444      0 \r\n 2013          23            10.30665     -1.753889     -13.62278      0 \r\n 2013          24            7.006233     -6.222778     -16.18167      0 \r\n 2013          25            11.16117      1.851111     -10.875        0 \r\n 2013          26            11.33945     -0.2383333    -15.11167      0 \r\n 2013          27            0.6166319     3.253333     -2.300555      11.176 \r\n 2013          28            3.390094      8.323334      1.688333      0 \r\n 2013          29            1.048751      14.59         0.6383333     23.114 \r\n 2013          30            5.113758      0.7333333    -10.30944      5.842 \r\n 2013          31            12.15135     -8.433333     -17.86944      0 \r\n 2013          32            11.04499     -6.635        -20.80278      0 \r\n 2013          33            6.673801     -3.485        -10.29611      0 \r\n 2013          34            10.50179     -3.541111     -9.883333      0 \r\n 2013          35            10.39779     -2.847222     -11.33722      0 \r\n 2013          36            11.10071      3.257778     -10.33444      0 \r\n 2013          37            9.998497      6.200555     -8.523889      0.508 \r\n 2013          38            1.578549      2.997222     -1.130556      16.002 \r\n 2013          39            3.270477     -0.7072222    -3.026111      0 \r\n 2013          40            5.306643      1.683333     -3.091111      0 \r\n 2013          41            3.719804      9.706667     -0.1266667     10.922 \r\n 2013          42            5.336119      1.476667     -2.735556      0 \r\n 2013          43            11.68703      4.276111     -4.008889      0 \r\n 2013          44            13.25658      7.113889     -3.793889      0 \r\n 2013          45            4.739374      4.936666     -3.005556      0 \r\n 2013          46            14.08079     -1.892778     -8.511111      0 \r\n 2013          47            13.33027     -2.67         -11.54944      0 \r\n 2013          48            13.59433      4.086667     -10.70556      0 \r\n 2013          49            5.200215      10.97833     -8.836111      6.096 \r\n 2013          50            15.27901     -5.991667     -14.92389      0 \r\n 2013          51            13.54321     -3.722222     -16.93389      0 \r\n 2013          52            4.124082     -2.720556     -10.40722      5.842 \r\n 2013          53            9.466815     -1.761111     -5.345         0.762 \r\n 2013          54            15.56987     -1.887778     -12.89944      0 \r\n 2013          55            15.86378      2.86         -15.65111      0 \r\n 2013          56            11.0282       4.321111     -8.141666      0 \r\n 2013          57            4.234571      1.801111     -1.622222      14.478 \r\n 2013          58            8.930988     -1.444444E-02               -2.369444      3.302 \r\n 2013          59            9.745279      1.475        -2.981111      0.508 \r\n 2013          60            13.65927     -0.9333333    -5.691667      0 \r\n 2013          61            17.58297     -0.7472222    -12.68222      0 \r\n 2013          62            15.01198      0.2738889    -14.44278      0 \r\n 2013          63            16.16138      1.768889     -4.293334      4.318 \r\n 2013          64            10.92575     -0.275        -3.309444      9.398 \r\n 2013          65            12.90104     -2.131111     -11.03389      0 \r\n 2013          66            15.34102     -0.1105556    -17.40055      0 \r\n 2013          67            17.16776      5.087222     -9.426666      0 \r\n 2013          68            2.000453      4.202222      1.344444      20.828 \r\n 2013          69            2.010334      5.79          0.9488889     38.862 \r\n 2013          70            2.425581      1.185        -3.645         0 \r\n 2013          71            7.861387      0.8888889    -5.703333      0.254 \r\n 2013          72            18.61853      0.7766666    -7.588333      0 \r\n 2013          73            16.08837      9.401667     -5.503889      0.254 \r\n 2013          74            9.578855      8.506667     -2.562778      0 \r\n 2013          75            6.343923      1.989444     -2.73          0 \r\n 2013          76            13.37628      2.865556     -4.636111      0 \r\n 2013          77            6.982913      1.471111     -7.519444      2.032 \r\n 2013          78            19.56337      0.4727778    -9.576111      0 \r\n 2013          79            18.92643     -3.918889     -10.82222      0 \r\n 2013          80            19.84267      0.6677778    -12.92833      0 \r\n 2013          81            19.81156      5.048889     -9.196667      0 \r\n 2013          82            15.07562      5.973889     -4.21          0.254 \r\n 2013          83            8.548567     -0.11         -2.449445      8.128 \r\n 2013          84            14.79703      1.847222     -2.755556      0 \r\n 2013          85            21.1021       3.928889     -4.404444      0 \r\n 2013          86            20.01977      7.730556     -3.441667      0 \r\n 2013          87            20.14613      11.74389     -4.933333      0 \r\n 2013          88            20.56937      15.02889     -2.215         0 \r\n 2013          89            4.924514      12.52444      0.2755556     0.254 \r\n 2013          90            18.20077      11.61722     -0.2205556     0 \r\n 2013          91            22.01327      4.426667     -4.815         0 \r\n 2013          92            22.11057      6.94         -6.778333      0 \r\n 2013          93            21.67996      9.883889     -6.823889      0 \r\n 2013          94            21.835        16.12833     -3.925555      0 \r\n 2013          95            20.00005      13.86667     -1.092222      0 \r\n 2013          96            9.682561      19.53555      5.872222      0 \r\n 2013          97            17.93244      18.00611      1.264444      0 \r\n 2013          98            19.12371      22.91167      8.394444      17.526 \r\n 2013          99            13.09489      19.60333      6.316111      0.254 \r\n 2013          100           3.442219      6.455555      2.713333      40.386 \r\n 2013          101           7.10253       8.076111      2.068889      0 \r\n 2013          102           6.721405      4.958333      1.358333      0 \r\n 2013          103           22.14641      10.26167      0.1922222     0 \r\n 2013          104           16.65538      23.17667      4.453333      3.556 \r\n 2013          105           9.314332      13.95667      3.410556      1.524 \r\n 2013          106           10.40018      10.79222     -4.333333E-02                0 \r\n 2013          107           0.7057689     10.34611      4.475         46.99 \r\n 2013          108           4.644794      13.38944      1.636667      32.766 \r\n 2013          109           7.868044      4.189445     -0.195         0 \r\n 2013          110           24.67524      9.126667     -2.809444      0 \r\n 2013          111           19.85514      17.33278      2.182778      0 \r\n 2013          112           20.23472      20.055        7.136667      0.762 \r\n 2013          113           4.351885      10.07         1.776111      6.604 \r\n 2013          114           25.10296      11.91278     -0.6633334     0 \r\n 2013          115           24.86222      13.77889      0.6927778     0.254 \r\n 2013          116           23.1219       20.24722      4.788889      0 \r\n 2013          117           16.49289      19.08111      4.975         0 \r\n 2013          118           25.20441      23.16389      6.76          0 \r\n 2013          119           22.43091      27.48611      9.855556      0 \r\n 2013          120           23.38378      30.76556      14.42167      0 \r\n 2013          121           21.98861      25.795        7.685         0 \r\n 2013          122           5.671146      7.815         1.626111      4.064 \r\n 2013          123           3.495727      7.399445      1.1           50.038 \r\n 2013          124           10.63878      17.60611      7.328889      14.732 \r\n 2013          125           20.29154      22.30667      7.941111      0.508 \r\n 2013          126           20.61392      24.93667      9.020555      0 \r\n 2013          127           22.14981      26.23278      9.033334      0 \r\n 2013          128           18.20659      26.19222      9.548333      0.762 \r\n 2013          129           9.554235      20.57444      13.59889      8.382 \r\n 2013          130           6.548825      15.98389      7.871666      0 \r\n 2013          131           26.21125      14.36944      3.815         0 \r\n 2013          132           27.45067      15.18556      0.8183333     0 \r\n 2013          133           25.90679      22.54944      1.25          0 \r\n 2013          134           25.72613      34.99611      13.085        0 \r\n 2013          135           19.38786      28.21722      14.60111      1.778 \r\n 2013          136           23.64031      29.73611      12.81833      5.334 \r\n 2013          137           18.30536      27.92278      15.10444      0 \r\n 2013          138           21.25433      29.54111      15.20333      0 \r\n 2013          139           12.47855      29.88611      17.07444      6.35 \r\n 2013          140           22.23396      26.915        16.38445      1.524 \r\n 2013          141           22.93144      24.06333      15.26556      0.762 \r\n 2013          142           12.81324      19.09222      13.17833      0 \r\n 2013          143           15.88422      20.905        10.09167      0 \r\n 2013          144           27.91189      21.53         5.773334      0 \r\n 2013          145           4.707512      14.56611      8.233889      19.304 \r\n 2013          146           6.600029      14.70278      9.498333      58.42 \r\n 2013          147           9.577263      22.58778      13.63611      2.032 \r\n 2013          148           11.8646       25.86167      16.22556      26.924 \r\n 2013          149           22.33009      28.65722      16.62         13.716 \r\n 2013          150           11.89219      26.86667      16.73056      12.7 \r\n 2013          151           12.85029      24.71111      16.06833      3.302 \r\n 2013          152           20.2042       23.08611      15.62778      0 \r\n 2013          153           14.7506       18.20889      9.375556      0 \r\n 2013          154           26.9238       22.33945      7.908333      0 \r\n 2013          155           14.86377      20.64778      11.42611      0 \r\n 2013          156           7.832079      19.97722      14.21667      2.54 \r\n 2013          157           19.86264      20.90944      13.60944      3.81 \r\n 2013          158           17.4729       21.55722      13.18333      0 \r\n 2013          159           22.1601       24.69111      12.30556      0 \r\n 2013          160           9.425408      22.39167      15.20833      7.112 \r\n 2013          161           17.80914      25.87889      14.625        0 \r\n 2013          162           17.07415      31.10667      15.28722      5.588 \r\n 2013          163           19.05207      31.96278      19.78333      0.508 \r\n 2013          164           27.28081      29.13222      16.84167      0 \r\n 2013          165           13.67208      27.14556      15.60611      1.016 \r\n 2013          166           14.13928      26.93167      18.25389      12.7 \r\n 2013          167           20.17468      29.86222      17.89667      0 \r\n 2013          168           21.73008      31.43611      16.52611      0 \r\n 2013          169           26.09151      27.82222      16.77333      0 \r\n 2013          170           26.83747      29.97278      14.57333      0 \r\n 2013          171           25.83415      33.24445      16.775        0 \r\n 2013          172           17.13092      29.80944      21.34945      2.794 \r\n 2013          173           22.59068      34.15722      22.34389      0 \r\n 2013          174           13.67991      28.75         20.59833      2.794 \r\n 2013          175           8.961761      24.75722      18.79556      9.652 \r\n 2013          176           14.40033      30.74333      18.91722      0.508 \r\n 2013          177           20.47755      30.16778      19.62667      14.224 \r\n 2013          178           19.75429      30.97278      20.32444      0 \r\n 2013          179           27.99026      28.97722      18.72333      0 \r\n 2013          180           13.82753      24.08278      17.19778      15.748 \r\n 2013          181           19.53762      26.74         15.295        0 \r\n 2013          182           28.90466      27.26611      13.815        0 \r\n 2013          183           26.9779       28.15611      12.81389      0 \r\n 2013          184           20.27864      26.60722      13.51389      0 \r\n 2013          185           27.59055      29.75333      14.08167      0 \r\n 2013          186           25.50653      31.11611      15.84556      0 \r\n 2013          187           26.21167      32.40278      17.36722      0 \r\n 2013          188           23.5724       32.19944      19.33111      0 \r\n 2013          189           18.77612      31.34611      22.70111      5.334 \r\n 2013          190           13.25809      31.83278      22.95555      0.508 \r\n 2013          191           26.99125      27.95         16.91889      0 \r\n 2013          192           27.45205      28.395        14.44222      0 \r\n 2013          193           27.3007       29.41167      13.70556      0 \r\n 2013          194           15.3391       27.50945      14.66889      0 \r\n 2013          195           25.99191      31.22333      15.83778      0 \r\n 2013          196           23.36821      33.17         19.17111      0 \r\n 2013          197           21.5137       33.76833      21.47056      0 \r\n 2013          198           24.92787      34.25111      21.96389      0 \r\n 2013          199           24.75337      33.90445      21.61778      0 \r\n 2013          200           23.97592      34.04167      21.13167      0 \r\n 2013          201           25.18884      31.75611      16.87611      0 \r\n 2013          202           12.32787      29.49944      17.57722      10.414 \r\n 2013          203           21.18806      31.73         16.26167      0 \r\n 2013          204           16.16205      25.44389      15.44889      0 \r\n 2013          205           21.11114      25.53         12.45278      0 \r\n 2013          206           21.77814      28.23778      12.79556      0 \r\n 2013          207           17.35064      25.875        15.26222      8.128 \r\n 2013          208           22.85721      19.43611      11.89667      0 \r\n 2013          209           24.48487      21.91055      10.975        0 \r\n 2013          210           20.33056      24.61667      8.873889      0 \r\n 2013          211           4.010201      20.18167      16.965        14.478 \r\n 2013          212           15.01487      27.31667      17.24722      0 \r\n 2013          213           23.28807      28.40722      14.02944      0 \r\n 2013          214           20.59583      28.52167      17.84389      0.508 \r\n 2013          215           22.08797      26.735        14.55056      0 \r\n 2013          216           23.8661       26.84778      11.95556      0 \r\n 2013          217           11.9835       26.18222      14.14556      0 \r\n 2013          218           14.46682      30.35944      18.41611      2.286 \r\n 2013          219           20.77247      28.43667      15.79056      0.508 \r\n 2013          220           19.00208      27.45611      13.84556      0 \r\n 2013          221           16.52681      26.91667      15.42111      0.254 \r\n 2013          222           22.36409      27.32222      13.46722      0 \r\n 2013          223           19.29633      28.27056      15.43778      0 \r\n 2013          224           14.10688      28.25611      16.21111      0 \r\n 2013          225           18.5613       24.54556      11.85722      0 \r\n 2013          226           18.0006       24.53222      9.201667      0 \r\n 2013          227           17.60843      24.47111      12.17944      0 \r\n 2013          228           18.46693      27.09667      10.41889      0 \r\n 2013          229           20.29095      27.91055      11.88944      0 \r\n 2013          230           20.45511      28.36333      11.31889      0 \r\n 2013          231           18.21509      28.76278      13.55         0 \r\n 2013          232           19.5591       31.11944      16.14833      0 \r\n 2013          233           18.00224      31.66222      20.04611      0 \r\n 2013          234           9.178429      27.73889      18.43167      0.254 \r\n 2013          235           18.76252      30.05167      15.73833      0 \r\n 2013          236           18.20073      31.89944      18.16333      0 \r\n 2013          237           19.02963      32.76556      19.63556      0 \r\n 2013          238           18.98069      33.65389      19.72167      0 \r\n 2013          239           18.70093      35.00444      23.34667      0 \r\n 2013          240           17.9378       35.91167      23.09         0 \r\n 2013          241           18.15526      33.24556      21.97333      0 \r\n 2013          242           18.03447      36.43389      22.04333      0 \r\n 2013          243           15.30188      31.19722      20.98         0 \r\n 2013          244           16.44705      29.95389      16.68333      0 \r\n 2013          245           18.46852      25.38722      12.07889      0 \r\n 2013          246           19.30638      26.68944      8.610556      0 \r\n 2013          247           18.17699      30.80389      10.88389      0 \r\n 2013          248           18.11084      32.53667      16.52167      0 \r\n 2013          249           17.99721      32.05111      16.21167      0 \r\n 2013          250           15.14156      34.04445      18.37056      0 \r\n 2013          251           13.52161      30.51611      21.55111      0 \r\n 2013          252           17.02642      37.43444      19.82722      0 \r\n 2013          253           17.37803      35.75611      21.31278      0 \r\n 2013          254           9.121781      28.84         20.67889      3.048 \r\n 2013          255           17.79285      26.21778      11.49667      0.762 \r\n 2013          256           17.04497      22.98944      8.031111      0 \r\n 2013          257           18.85458      24.57944      5.271667      0 \r\n 2013          258           4.326053      20.55944      9.300555      6.858 \r\n 2013          259           9.216696      20.82611      9.372222      0 \r\n 2013          260           7.084945      20.41667      8.904445      0 \r\n 2013          261           16.13794      31.95389      15.99278      0 \r\n 2013          262           13.93752      33.04722      18.495        10.414 \r\n 2013          263           11.54665      22.93         9.835         2.032 \r\n 2013          264           18.6298       21.54445      7.79          0 \r\n 2013          265           18.25608      24.45278      6.453889      0 \r\n 2013          266           18.34819      24.91167      8.321667      0 \r\n 2013          267           14.36742      21.86944      7.857222      0 \r\n 2013          268           16.87703      26.28111      9.575         0 \r\n 2013          269           16.84567      29.86278      11.44611      0 \r\n 2013          270           13.00596      30.23556      12.66833      0 \r\n 2013          271           5.317278      25.95444      10.00333      5.08 \r\n 2013          272           16.93569      23.47556      5.561111      0 \r\n 2013          273           16.29791      26.15389      6.154444      0 \r\n 2013          274           15.9968       28.94333      12.35444      0 \r\n 2013          275           14.10596      29.57389      11.80889      0 \r\n 2013          276           9.17914       27.70167      15.32944      1.778 \r\n 2013          277           5.067661      27.28944      17.30111      2.032 \r\n 2013          278           7.31346       22.09611      6.024445      0 \r\n 2013          279           5.236891      10.85444      4.434444      1.524 \r\n 2013          280           15.43116      23.09389      6.366111      0 \r\n 2013          281           15.59357      26.34111      5.922222      0 \r\n 2013          282           15.21898      24.76444      6.11          0 \r\n 2013          283           11.52174      25.72056      5.499444      0 \r\n 2013          284           10.27989      26.04667      9.145         0 \r\n 2013          285           14.33983      20.615        6.270555      0 \r\n 2013          286           15.1931       19.41778      1.650556      0 \r\n 2013          287           13.31641      19.20056      1.018889      0.254 \r\n 2013          288           7.530965      17.04056      9.237223      2.032 \r\n 2013          289           2.619053      10.76833      7.451111      0 \r\n 2013          290           12.58301      16.91444      5.086111      1.27 \r\n 2013          291           5.609809      10.64889      4.170556      0 \r\n 2013          292           9.080792      12.75056      1.563333      0 \r\n 2013          293           6.982201      16.46167      1.791111      0.254 \r\n 2013          294           12.73457      9.076667     -2.363889      0 \r\n 2013          295           2.509735      3.898889     -0.7783333     3.048 \r\n 2013          296           8.089903      6.357778     -1.517778      0.254 \r\n 2013          297           4.647725      6.539444     -2.353333      0 \r\n 2013          298           9.714129      13.20389     -4.448889      0 \r\n 2013          299           12.5336       11.63944     -0.33          0 \r\n 2013          300           12.62986      15.17667     -4.722778      0 \r\n 2013          301           10.79135      14.14444     -0.9672222     0 \r\n 2013          302           5.739391      15.02167      3.543333      0 \r\n 2013          303           1.700427      16.58389      10.62833      44.958 \r\n 2013          304           2.520328      16.08444      5.636667      10.16 \r\n 2013          305           4.305035      10.54778      5.569445      0.254 \r\n 2013          306           10.88091      11.62556     -0.5033333     0 \r\n 2013          307           10.36346      13.74167     -2.639444      0 \r\n 2013          308           4.254208      12.95         6.229445      2.032 \r\n 2013          309           1.223802      12.42056      6.497222      6.35 \r\n 2013          310           4.80653       12.06889     -1.09          8.636 \r\n 2013          311           6.180429      8.193889     -3.227778      0 \r\n 2013          312           4.294736      10.65111     -4.975         0 \r\n 2013          313           10.32285      13.93722      2.08          0 \r\n 2013          314           9.368928      9.091111     -1.310556      0 \r\n 2013          315           1.224262      9.106667     -7.766667      3.81 \r\n 2013          316           10.73077     -1.240556     -11.18444      0 \r\n 2013          317           10.45971      7.783889     -8.348889      0 \r\n 2013          318           8.483419      11.60889     -0.1588889     0 \r\n 2013          319           6.830555      13.42222     -0.805         0 \r\n 2013          320           1.933883      17.22778      4.438889      3.302 \r\n 2013          321           4.106079      16.43167      4.797222      11.176 \r\n 2013          322           9.491769      7.072778     -2.875         0 \r\n 2013          323           9.374538      9.869445     -5.364444      0 \r\n 2013          324           1.446498      4.637222      2.081667      6.604 \r\n 2013          325           1.937358      5.186111     -0.2788889     0.762 \r\n 2013          326           6.859192      1.698333     -7.816111      0.508 \r\n 2013          327           8.972229     -4.936666     -13.88556      0 \r\n 2013          328           9.1361       -1.970556     -14.99         0 \r\n 2013          329           4.5472        2.676111     -5.945556      2.54 \r\n 2013          330           5.974689      0.1044444    -9.561666      0 \r\n 2013          331           8.506154     -2.927222     -13.07444      0 \r\n 2013          332           6.601746      1.513889     -9.555555      0 \r\n 2013          333           5.980299      3.207222     -12.09722      0 \r\n 2013          334           8.348228      10.6         -6.596667      0 \r\n 2013          335           7.249361      8.243333     -3.784444      0 \r\n 2013          336           3.52068       7.099444     -0.1744444     0.254 \r\n 2013          337           1.851445      7.121666      0.7816667     0.254 \r\n 2013          338           1.616314      10.62889     -4.731111      0 \r\n 2013          339           6.366364     -4.507222     -10.825        1.27 \r\n 2013          340           6.349115     -8.233334     -15.14333      0 \r\n 2013          341           7.981422     -8.317778     -18.64667      0 \r\n 2013          342           3.026889     -6.672222     -11.29167      6.096 \r\n 2013          343           8.174267     -7.515555     -23.57111      0.254 \r\n 2013          344           7.872524     -7.05         -20.40722      0 \r\n 2013          345           8.541491     -7.803889     -20.42         0.508 \r\n 2013          346           5.079049     -3.822222     -20.90556      0 \r\n 2013          347           5.475665     -0.3922222    -14.82333      4.572 \r\n 2013          348           4.330784     -3.493889     -10.86556      0.254 \r\n 2013          349           3.970677     -9.243889     -13.45389      3.048 \r\n 2013          350           4.0846       -4.942222     -11.30944      0 \r\n 2013          351           7.56224       1.658333     -9.632778      0.508 \r\n 2013          352           7.171193      5.320556     -11.15         0 \r\n 2013          353           3.359405      3.536111     -5.560555      0.762 \r\n 2013          354           0.7414404    -2.388889E-02               -4.307778      0.254 \r\n 2013          355           1.353844     -2.433333     -5.051111      3.302 \r\n 2013          356           6.033639     -2.602222     -11.38222      6.35 \r\n 2013          357           8.156808     -11.005       -21.22778      0 \r\n 2013          358           6.685943     -8.477777     -26.20389      0.508 \r\n 2013          359           3.349231     -1.726667     -8.573889      0 \r\n 2013          360           4.391074      2.372222     -7.601111      0 \r\n 2013          361           7.894379      4.677778     -7.293334      0 \r\n 2013          362           6.116957      8.218333     -1.233333      0 \r\n 2013          363           6.116957     -5.778889     -19.34         0 \r\n 2013          364           4.367754     -12.46222     -20.87         3.81 \r\n 2013          365           2.439983     -10.62778     -19.77         0 \r\n 2014          1             4.476        -10.52        -13.3          1.27 \r\n 2014          2             8            -11.84        -23.03         0 \r\n 2014          3             7.892        -4.534        -25.21         0 \r\n 2014          4             3.228         0.024        -8.41          6.604 \r\n 2014          5             4.665        -8.25         -23.7          4.318 \r\n 2014          6             9.66         -21.29        -26.34         0 \r\n 2014          7             5.607        -11.65        -22.48         0 \r\n 2014          8             6.14         -10.62        -17.56         0 \r\n 2014          9             4.504        -3.418        -17.79         0 \r\n 2014          10            1.708         2.38         -3.358         2.032 \r\n 2014          11            8.95          2.198        -3.196         0 \r\n 2014          12            7.622         7.884        -3.844         0 \r\n 2014          13            9.14          3.704        -1.566         0 \r\n 2014          14            3.469         2.865        -8.49          1.016 \r\n 2014          15            10.03        -3.652        -12.29         0.762 \r\n 2014          16            5.03          3.946        -13.43         2.032 \r\n 2014          17            6.393        -8.67         -15.22         0 \r\n 2014          18            3.571        -1.889        -13.33         3.81 \r\n 2014          19            10.8          7.965        -12.11         0 \r\n 2014          20            8.11          4.754        -9.82          2.286 \r\n 2014          21            9.63         -10.12        -19.54         0.254 \r\n 2014          22            8.88         -8.3          -19.13         0.508 \r\n 2014          23            11.76        -15.53        -22.19         0 \r\n 2014          24            6.435         1.935        -19.2          2.54 \r\n 2014          25            11.85         2.774        -11.71         0.762 \r\n 2014          26            7.007         5.805        -16.14         3.302 \r\n 2014          27            11.08        -15.87        -21.28         0 \r\n 2014          28            11.73        -9.48         -22.6          0 \r\n 2014          29            12.42         0.914        -17.72         0 \r\n 2014          30            3.992         3.34         -9.77          1.016 \r\n 2014          31            4.021        -9.67         -13.7          1.27 \r\n 2014          32            6.518        -5.254        -10.8          3.81 \r\n 2014          33            10.96        -10.64        -21.8          0 \r\n 2014          34            13.25        -8.11         -26.93         0 \r\n 2014          35            5.643        -7.282        -13.77         7.62 \r\n 2014          36            11.76        -9.03         -20.15         3.048 \r\n 2014          37            14           -15.08        -23.97         0 \r\n 2014          38            14.14        -9.53         -23.2          0 \r\n 2014          39            7.608        -7.09         -12.37         2.54 \r\n 2014          40            11.14        -8.61         -22.32         0.762 \r\n 2014          41            14.81        -16.5         -26.32         0 \r\n 2014          42            14.9         -11.92        -27.23         0 \r\n 2014          43            10.86        -3.267        -15.28         0 \r\n 2014          44            13.66         5.159        -10.08         0.254 \r\n 2014          45            11.37        -8.61         -16.22         3.81 \r\n 2014          46            7.949        -6.126        -19.86         2.54 \r\n 2014          47            14.22         5.18         -11.06         0 \r\n 2014          48            9.52          4.39         -6.338         8.128 \r\n 2014          49            15.53         8.72         -5.516         0 \r\n 2014          50            14.42         8.91         -2.832         2.54 \r\n 2014          51            2.719         5.583        -0.684         23.368 \r\n 2014          52            14.96         2.6265       -4.352         0.508 \r\n 2014          53            9.39         -0.33         -8.02          0 \r\n 2014          54            14.93        -3.905        -9.18          0 \r\n 2014          55            11.15        -4.828        -10.04         3.302 \r\n 2014          56            14.12        -9.81         -16.28         0.254 \r\n 2014          57            17.55        -5.03         -19.95         0 \r\n 2014          58            17.83        -8.07         -17.8          0 \r\n 2014          59            13.45         2.411        -16.22         0 \r\n 2014          60            7.183        -4.087        -16.28         3.556 \r\n 2014          61            14.25        -16.2         -21.42         3.302 \r\n 2014          62            17.92        -9.88         -23.91         0 \r\n 2014          63            17.82        -0.36         -13.84         0.508 \r\n 2014          64            9.48         -4.938        -8.17          5.334 \r\n 2014          65            17.47        -1.14         -15.4          0 \r\n 2014          66            14.56         3.705        -10.6005       0 \r\n 2014          67            5.443         6.1275       -8.20075       1.27 \r\n 2014          68            17.59         8.55         -5.801         0 \r\n 2014          69            16.13         15.48         2.026         0 \r\n 2014          70            8.77          9.98          0.145         3.81 \r\n 2014          71            17.74         1.379        -4.311         5.588 \r\n 2014          72            16.79         13.05        -5.03          0 \r\n 2014          73            16.7          11.69         1.582         0 \r\n 2014          74            16.31         8.59         -1.474         0.762 \r\n 2014          75            18.3         -0.766        -8.33          6.858 \r\n 2014          76            18.52         3.31         -10.42         0 \r\n 2014          77            13.65         12.95         0.327         1.016 \r\n 2014          78            4.785         5.3          -1.535         4.826 \r\n 2014          79            20.23         11.17        -1.272         0 \r\n 2014          80            14.88         15.53        -0.584         0 \r\n 2014          81            16.22         3.068        -5.03          0 \r\n 2014          82            21.95         0.346        -10.17         0 \r\n 2014          83            15.51         2.592        -6.196         1.016 \r\n 2014          84            20.86        -2.71         -9.1           0.508 \r\n 2014          85            17.69         6.814        -9.63          0 \r\n 2014          86            4.458         12.13         2.562         6.35 \r\n 2014          87            5.238         3.401         1.186         0 \r\n 2014          88            14.43         11.01         0.346         0 \r\n 2014          89            21.2          18.02        -1.535         0 \r\n 2014          90            14.58         21.04         1.096         1.524 \r\n 2014          91            18.67         8.51         -2.81          0 \r\n 2014          92            7.356         8.64         -0.563         0.254 \r\n 2014          93            3.821         6.976         3.32          20.574 \r\n 2014          94            7.836         6.804         0.489         0.254 \r\n 2014          95            23.46         12.34        -3.064         0 \r\n 2014          96            16.28         15.46         1.622         0 \r\n 2014          97            17.87         17.885       -0.007         0 \r\n 2014          98            24.37         15.32         1.702         0 \r\n 2014          99            24.09         20.31        -1.636         0 \r\n 2014          100           13.17         18.35         5.906         0 \r\n 2014          101           24.18         24.05         2.198         0 \r\n 2014          102           17.6          28.97         11.65         0 \r\n 2014          103           3.237         19.3          7.561         18.796 \r\n 2014          104           6.387         7.157        -2.244         2.794 \r\n 2014          105           25.4          6.047        -4.513         0 \r\n 2014          106           22.65         15.32        -0.684         0 \r\n 2014          107           20.5          12.32         0.944         0 \r\n 2014          108           25.86         17.81        -3.074         0 \r\n 2014          109           24.28         24.16         3.886         0 \r\n 2014          110           16.5          17.56         16.32         0 \r\n 2014          111           9.248         21.14         8.93          1.778 \r\n 2014          112           26.917        18.6          3.804         0 \r\n 2014          113           8.5           12.87         2.552         2.897 \r\n 2014          114           6.6           16.2          7.782         12.907 \r\n 2014          115           26.083        24.5          4.038         0 \r\n 2014          116           24.033        24.32         7.843         0 \r\n 2014          117           13.417        25            6.088         32.388 \r\n 2014          118           9.287         20.35         8.91          7.11 \r\n 2014          119           11.575        13.85         3.946         0.263 \r\n 2014          120           8.785         9.78          3.229         1.843 \r\n 2014          121           9.603         10.59         5.159         1.053 \r\n 2014          122           15.933        18.86         6.854         0 \r\n 2014          123           24.383        22.29         7.138         0.527 \r\n 2014          124           21.467        18.77         6.875         0 \r\n 2014          125           24.867        21.65         6.834         0 \r\n 2014          126           24.083        26.19         7.036         0 \r\n 2014          127           18.117        32            14.91         0.527 \r\n 2014          128           8.487         25.74         18.71         0 \r\n 2014          129           25.15         20.88         9.84          0 \r\n 2014          130           23.033        27.82         8.75          0 \r\n 2014          131           9.657         26.64         13.83         13.167 \r\n 2014          132           11.572        29            12.42         17.645 \r\n 2014          133           9.433         13.65         7.097         0.527 \r\n 2014          134           13.115        13.79         3.987         0 \r\n 2014          135           17.183        12.93         4.966         0.527 \r\n 2014          136           11.16         10.52         3.159         3.16 \r\n 2014          137           28.067        17.81         3.28          0 \r\n 2014          138           28.2          21.9          5.946         0 \r\n 2014          139           18.733        25.06         12.72         0 \r\n 2014          140           21.35         30.26         17.19         0 \r\n 2014          141           27.067        31.89         16.34         0.527 \r\n 2014          142           13.132        22.41         10.85         0 \r\n 2014          143           28.967        27.11         8.45          0 \r\n 2014          144           20.817        26.24         12.06         0 \r\n 2014          145           16.5          29.28         13.36         0 \r\n 2014          146           16.317        29.78         17.53         8.429 \r\n 2014          147           15.75         29.44         18.41         0.527 \r\n 2014          148           20.467        30.71         16.48         0 \r\n 2014          149           26.233        30.14         15.76         0 \r\n 2014          150           24.25         32.9          17.46         0 \r\n 2014          151           23.5          32.67         17.33         0.79 \r\n 2014          152           24.1          32.56         21.04         0 \r\n 2014          153           24.717        29.06         19.48         9.217 \r\n 2014          154           26.933        29.89         16.1          16.329 \r\n 2014          155           19.067        24.03         15.68         7.9 \r\n 2014          156           23.417        24.86         13.37         0 \r\n 2014          157           25.483        29.54         13.75         0 \r\n 2014          158           7.902         24.95         15.28         14.483 \r\n 2014          159           11.352        21.33         14.64         0 \r\n 2014          160           26.367        26.23         13.91         0 \r\n 2014          161           5.487         19.31         15.16         2.897 \r\n 2014          162           19.78         26.45         15.84         0.263 \r\n 2014          163           18.233        24.66         12.5          0 \r\n 2014          164           30.333        25.88         8.27          0 \r\n 2014          165           28.7          27.12         11.68         0 \r\n 2014          166           24.333        28.68         18.19         0 \r\n 2014          167           21.867        31.01         16.02         1.053 \r\n 2014          168           24.483        31.99         17.61         1.843 \r\n 2014          169           17.1          31.9          20.56         33.974 \r\n 2014          170           10.363        28.01         18.82         52.666 \r\n 2014          171           29.15         32.03         18.31         0 \r\n 2014          172           25.283        30.07         19.4          0 \r\n 2014          173           15.033        29.99         17.25         47.928 \r\n 2014          174           11.112        26.15         18.36         0 \r\n 2014          175           27.417        28.75         18.1          0 \r\n 2014          176           29.067        30.55         16.67         0 \r\n 2014          177           18.167        29.54         16.97         0.79 \r\n 2014          178           19.3          30.26         20.55         0 \r\n 2014          179           18.65         29.98         19.25         24.228 \r\n 2014          180           18.567        29.59         19.06         0 \r\n 2014          181           11.89         29.25         19.23         44.507 \r\n 2014          182           26.3          26.97         17.95         0 \r\n 2014          183           10.601        19.13         13.45         0.527 \r\n 2014          184           25.267        25.38         11.15         0 \r\n 2014          185           27.783        26.21         12.37         0 \r\n 2014          186           3.218         20.07         13.09         37.395 \r\n 2014          187           24.8          30.28         19.17         0 \r\n 2014          188           26.383        30.14         21.61         0 \r\n 2014          189           26.617        26.9          17.83         0 \r\n 2014          190           27.533        26.72         15.56         0 \r\n 2014          191           26.983        28.17         13.65         0 \r\n 2014          192           16.8          27.61         15.45         0 \r\n 2014          193           19.233        32.07         20.22         6.32 \r\n 2014          194           24.95         29.64         18.39         7.373 \r\n 2014          195           24.033        25.56         12.36         0 \r\n 2014          196           14.755        21.55         10.92         0 \r\n 2014          197           26.933        24.66         9.1           0 \r\n 2014          198           25.817        27.07         10.65         0 \r\n 2014          199           26            27.2          11.9          0 \r\n 2014          200           25.233        27.34         12.7          0 \r\n 2014          201           24.617        28.65         14.91         0 \r\n 2014          202           25.867        30.82         17.01         0 \r\n 2014          203           15.217        31            22.05         10.274 \r\n 2014          204           28.65         27.07         14.63         0 \r\n 2014          205           25.35         27.28         13.45         0 \r\n 2014          206           14.367        25.82         15.6          11.321 \r\n 2014          207           14.233        28.17         17.89         0 \r\n 2014          208           25.783        26.6          17.14         0 \r\n 2014          209           25.6          24.19         13.2          0 \r\n 2014          210           26.517        26.33         12.1          0 \r\n 2014          211           25.567        27.61         12.16         0 \r\n 2014          212           24.167        28.41         13.63         0 \r\n 2014          213           24.95         29.64         15.46         0 \r\n 2014          214           25.85         30.25         13.69         0 \r\n 2014          215           25.1          30.52         15.02         0 \r\n 2014          216           23.85         30.88         17.07         8.429 \r\n 2014          217           4.707         24.52         17.12         0 \r\n 2014          218           9.21          23.76         17.53         3.687 \r\n 2014          219           6.849         22.15         18.55         3.423 \r\n 2014          220           14.84         25.89         17.3          0 \r\n 2014          221           18.79         27.85         17.21         0 \r\n 2014          222           16.81         26.83         16.07         0 \r\n 2014          223           20.84         27.12         16.02         0 \r\n 2014          224           25.77         25.92         13.54         0 \r\n 2014          225           25.77         28.02         10.84         0 \r\n 2014          226           23.94         27.93         14.59         0 \r\n 2014          227           8.9           22.39         15.09         0 \r\n 2014          228           6.808         23.71         17.27         0 \r\n 2014          229           19.53         28.24         16.46         0 \r\n 2014          230           19.58         29.87         17.44         0 \r\n 2014          231           20.69         30.35         16.83         0 \r\n 2014          232           8.36          28.02         15.8          4.213 \r\n 2014          233           14.7          31.06         21.45         0.263 \r\n 2014          234           17.5          32.25         23.5          5.53 \r\n 2014          235           10.68         28.62         21.53         7.9 \r\n 2014          236           23.4          34.44         21.21         0 \r\n 2014          237           23.45         34.77         23.81         0 \r\n 2014          238           21.33         29.43         19.61         0 \r\n 2014          239           11.95         26.58         18.08         0 \r\n 2014          240           5.053         22.27         18.63         25.804 \r\n 2014          241           19.15         31.59         19.67         0.79 \r\n 2014          242           20.06         28.76         17.66         11.062 \r\n 2014          243           22.48         32.19         15.25         0 \r\n 2014          244           20.13         28.52         18.47         26.862 \r\n 2014          245           21.28         27.58         14.5          0 \r\n 2014          246           22.22         30.33         13.77         0 \r\n 2014          247           20.71         34.01         19.43         22.383 \r\n 2014          248           12.78         26.42         14.11         6.847 \r\n 2014          249           23.26         24.29         11.57         0 \r\n 2014          250           22.84         27.12         9.2           0 \r\n 2014          251           19.4          28.13         9.32          0.79 \r\n 2014          252           7.716         24.67         17.1          4.74 \r\n 2014          253           11.11         25.29         12.22         1.843 \r\n 2014          254           12.38         17.04         9.74          0.79 \r\n 2014          255           6.084         13.32         3.391         43.709 \r\n 2014          256           22.98         17.89         1.966         0 \r\n 2014          257           19.28         21.87         2.976         0 \r\n 2014          258           8.94          21.34         5.906         3.16 \r\n 2014          259           22.13         21.76         3.584         0 \r\n 2014          260           15.42         23.69         6.905         0 \r\n 2014          261           20.01         25.46         6.31          0 \r\n 2014          262           19.39         26.64         9.09          0 \r\n 2014          263           10.19         27.96         16.65         0 \r\n 2014          264           15.97         20.48         8.23          0 \r\n 2014          265           20.62         24.35         5.432         0 \r\n 2014          266           17            25.62         4.937         0 \r\n 2014          267           14.7          27.6          11.16         0 \r\n 2014          268           15.12         28.05         10.5          0 \r\n 2014          269           14.63         30.64         11.45         0 \r\n 2014          270           18.3          30.68         12.53         0 \r\n 2014          271           15.13         30.76         11.94         0 \r\n 2014          272           17.94         30.44         11.07         0 \r\n 2014          273           12.38         22.34         12.44         0 \r\n 2014          274           5.687         21.19         10.95         1.58 \r\n 2014          275           3.436         20.33         13.79         31.6 \r\n 2014          276           9.18          13.79         4.654         8.688 \r\n 2014          277           14.21         12.82         1.258         0 \r\n 2014          278           12.21         17.36         1.298         0.263 \r\n 2014          279           17.05         17.71         6.248         0 \r\n 2014          280           14.99         23.15         5.764         0 \r\n 2014          281           17.53         21.84         3.664         3.16 \r\n 2014          282           11.36         19.36         9.22          10.533 \r\n 2014          283           11.71         16.25         2.046         0 \r\n 2014          284           16.39         17.48         0.346         0 \r\n 2014          285           3.865         11.88         1.449         0.527 \r\n 2014          286           1.733         17.78         11.71         35.55 \r\n 2014          287           2.183         16.18         10.51         29.495 \r\n 2014          288           11.57         18.44         6.714         0 \r\n 2014          289           16.23         23.92         3.36          0 \r\n 2014          290           7.922         16.85         9.58          0 \r\n 2014          291           5.266         12.9          2.44          0 \r\n 2014          292           13.74         19.18         1.096         0 \r\n 2014          293           15.06         21.88         5.805         0 \r\n 2014          294           15.08         17.55         2.612         0 \r\n 2014          295           15.09         18.07         0.832         0 \r\n 2014          296           7.255         20.94         5.824         0 \r\n 2014          297           6.396         19.8          7.359         0.263 \r\n 2014          298           14.28         23.7          7.551         0 \r\n 2014          299           13.45         22.63         2.814         0 \r\n 2014          300           9.61          26.34         13.7          0 \r\n 2014          301           13.36         15.38         4.624         0 \r\n 2014          302           12.09         11.37         0.711         0 \r\n 2014          303           8.4           14.51        -0.502         0 \r\n 2014          304           13.79         9.22         -5.994         0 \r\n 2014          305           13.63         8.85         -7.962         0 \r\n 2014          306           5.766         12.08        -0.026         0 \r\n 2014          307           8.56          20.97         5.624         3.16 \r\n 2014          308           6.41          15.4          4.532         0.527 \r\n 2014          309           7.111         17.65         1.358         2.897 \r\n 2014          310           9.99          8.81         -2.426         0.263 \r\n 2014          311           9.98          12.75        -4.908         0 \r\n 2014          312           9.79          9.42         -1.059         0 \r\n 2014          313           8.9           14.98        -1.312         0 \r\n 2014          314           10.88         21.41         4.562         0 \r\n 2014          315           5.198         4.552        -3.642         0.527 \r\n 2014          316           5.917        -3.317        -6.866         0 \r\n 2014          317           4.32         -2.71         -9.33          0 \r\n 2014          318           10.92        -2.426        -12.51         0 \r\n 2014          319           4.009        -0.999        -11.03         0 \r\n 2014          320           5.993        -1.859        -11.98         0.263 \r\n 2014          321           10.95        -7.414        -13.65         0 \r\n 2014          322           9.21         -5.324        -14.1          0 \r\n 2014          323           3.929        -2.082        -7.739         0 \r\n 2014          324           11.05        -1.292        -12.15         0 \r\n 2014          325           9.88          2.734        -14.08         1.58 \r\n 2014          326           2.608         13.57         0.752         1.317 \r\n 2014          327           0.722         11.25         4.31          33.704 \r\n 2014          328           2.926         4.29         -4.352         1.58 \r\n 2014          329           10.41        -0.766        -7.566         0.263 \r\n 2014          330           3.858        -0.644        -6.643         0 \r\n 2014          331           9.78         -3.176        -16.08         0 \r\n 2014          332           9.38          3.562        -11.11         0.263 \r\n 2014          333           6.899         10.87        -0.461         0 \r\n 2014          334           5.137         5.098        -8.36          0 \r\n 2014          335           5.137        -6.928        -12.51         0 \r\n 2014          336           5.91         -1.232        -12.9          0 \r\n 2014          337           9.22          2.288        -6.684         0 \r\n 2014          338           3.517         0.67         -6.562         0 \r\n 2014          339           1.82          3.552         0.044         0 \r\n 2014          340           5.518         5.462        -2.912         0 \r\n 2014          341           4.68          3.068        -4.291         0.263 \r\n 2014          342           1.568         5.018        -0.897         0.263 \r\n 2014          343           4.634         2.552        -3.966         0 \r\n 2014          344           2.282         0.711        -1.13          0 \r\n 2014          345           6.5           3.179        -4.98          0 \r\n 2014          346           2.559         5.138        -1.15          0 \r\n 2014          347           2.423         10.87        -0.806         0 \r\n 2014          348           2.58          13.2          8.07          0 \r\n 2014          349           0.998         9.97          7.4           5.267 \r\n 2014          350           2.234         8.28         -7.252         2.37 \r\n 2014          351           8.38         -1.515        -9.18          0 \r\n 2014          352           4.2          -1.272        -9.25          0 \r\n 2014          353           2.78         -0.766        -3.378         0 \r\n 2014          354           1.617         1.562        -0.948         0 \r\n 2014          355           1.744         5.462         1.48          0 \r\n 2014          356           1.164         6.088         2.794         13.426 \r\n 2014          357           4.026         6.753         2.32          0.79 \r\n 2014          358           0.788         2.794         0.732         0 \r\n 2014          359           8.11          9.31         -0.461         0 \r\n 2014          360           5.445         11.41         3.32          0 \r\n 2014          361           2.369         6.41         -3.398         0 \r\n 2014          362           9.19          3.866        -8.84          0 \r\n 2014          363           6.146         0.53         -10.5          0 \r\n 2014          364           9.07         -8.47         -15.69         0 \r\n 2014          365           9.37         -4.777        -17.78         0 \r\n 2015          1             8.25          1.753        -9.76          0 \r\n 2015          2             6.279         2.966        -10.16         0 \r\n 2015          3             1.957         1.328        -0.725         2.107 \r\n 2015          4             7.756         0.53         -17.62         0 \r\n 2015          5             4.419        -12.78        -19.54         0 \r\n 2015          6             8.72         -10.68        -22.15         0 \r\n 2015          7             10.16        -13.02        -24.95         0 \r\n 2015          8             4.715        -4.798        -25.27         0 \r\n 2015          9             10.03        -11.4         -20.4          0 \r\n 2015          10            8.07         -2.254        -20.37         0 \r\n 2015          11            5.562         0.934        -8.68          0 \r\n 2015          12            10.79        -2.507        -20.06         0 \r\n 2015          13            10.85        -7.617        -21.46         0 \r\n 2015          14            7            -2.426        -18.5          0 \r\n 2015          15            10.63         3.917        -10.61         0.263 \r\n 2015          16            10.69         5.442        -7.678         0 \r\n 2015          17            4.995         7.349         2.168         0 \r\n 2015          18            10.87         7.874        -3.46          0 \r\n 2015          19            6.913         7.118        -4.311         1.053 \r\n 2015          20            6.645         6.421        -0.057         0 \r\n 2015          21            2.293         4.149         0.084         0 \r\n 2015          22            2.464         0.104        -1.697         0 \r\n 2015          23            10.53         4.594        -5.913         0 \r\n 2015          24            10.49         10.34        -2.832         0 \r\n 2015          25            4.184         4.956        -7.354         4.213 \r\n 2015          26            5.674         4.31         -7.21          0.79 \r\n 2015          27            3.543         2.077        -2.294         0 \r\n 2015          28            9.89          6.007        -2.628         0 \r\n 2015          29            2.863         3.816        -3.216         0 \r\n 2015          30            12.31         1.763        -9.02          0 \r\n 2015          31            2.373         2.552        -3.925         6.583 \r\n 2015          32            6.101         0.631        -11.27         0.79 \r\n 2015          33            13.11        -9.26         -19.01         0 \r\n 2015          34            9.48         -2.162        -13.32         0.263 \r\n 2015          35            7.866        -6.38         -18.66         0 \r\n 2015          36            14.03        -10.19        -24.72         0 \r\n 2015          37            12.24         2.693        -13.89         5.53 \r\n 2015          38            13.17         9.02         -4.311         3.16 \r\n 2015          39            9.96          5.805        -1.535         0 \r\n 2015          40            6.617        -1.09         -6.957         0 \r\n 2015          41            10.64        -0.078        -8.53          0 \r\n 2015          42            9.78          1.966        -9.62          0 \r\n 2015          43            14.11        -9.21         -15.36         0 \r\n 2015          44            11.83         1.277        -12.06         0 \r\n 2015          45            13.84        -1.252        -16.69         0 \r\n 2015          46            5.755        -11.28        -16.71         0 \r\n 2015          47            11.18        -4.98         -13.08         0 \r\n 2015          48            12.73        -4.98         -12.13         0 \r\n 2015          49            13.73        -11.5         -18.62         0 \r\n 2015          50            15.93        -9            -20.84         0 \r\n 2015          51            13.16         0.388        -12.84         0 \r\n 2015          52            4.507         1.076        -7.698         0 \r\n 2015          53            15.04        -7.617        -18.25         0 \r\n 2015          54            16.85        -7.87         -20.92         0 \r\n 2015          55            11.11         3.674        -13.17         0 \r\n 2015          56            5.929        -3.125        -9.69          0 \r\n 2015          57            17.24        -9.43         -23.09         0 \r\n 2015          58            18.09        -5.852        -26.11         1.317 \r\n 2015          59            15.45        -6.319        -23.64         0 \r\n 2015          60            12.79        -1.687        -14.57         0 \r\n 2015          61            14.7          2.228        -12.87         0 \r\n 2015          62            5.404         2.067        -8.2           4.213 \r\n 2015          63            15.58        -6.044        -11.74         0 \r\n 2015          64            19.03        -9.26         -18.74         0 \r\n 2015          65            18.04         7.036        -15.6          0 \r\n 2015          66            18.13         8.49         -0.563         0 \r\n 2015          67            16.24         10.4         -1.048         0 \r\n 2015          68            18.87         12.68        -2.568         0 \r\n 2015          69            16.73         18.51         1.147         0 \r\n 2015          70            19.21         14.62         0.508         0 \r\n 2015          71            18.88         17.21        -0.584         0 \r\n 2015          72            15.97         22.27         2.188         0 \r\n 2015          73            17.98         17.12         2.754         0 \r\n 2015          74            15.49         19.78        -0.604         0 \r\n 2015          75            17.74         27.44         6.178         0 \r\n 2015          76            19.79         10.22         0.126         0 \r\n 2015          77            15.32         10.81        -0.694         0 \r\n 2015          78            4.641         7.238        -1.21          0 \r\n 2015          79            19.86         16.16        -2.345         0 \r\n 2015          80            20.92         15.55         0.884         0 \r\n 2015          81            20.15         12.78        -0.35          0 \r\n 2015          82            6.697         3.32         -0.584         1.58 \r\n 2015          83            7.238         5.351        -1.454         2.633 \r\n 2015          84            7.044         8.95          1.258         0 \r\n 2015          85            22.26         9.05         -4.178         0 \r\n 2015          86            22.74         4.664        -5.406         0 \r\n 2015          87            22.91         7.359        -5.932         0 \r\n 2015          88            13.23         15.79        -1.21          1.58 \r\n 2015          89            22.37         22.97        -0.584         0 \r\n 2015          90            23.06         22.85         4.29          0 \r\n 2015          91            22.92         26.72         4.27          0 \r\n 2015          92            14.65         21.71         9.29          0.527 \r\n 2015          93            15.35         9.74         -2.74          0 \r\n 2015          94            19.11         19.08        -5.101         0 \r\n 2015          95            22.95         21.96         4.512         0 \r\n 2015          96            9.64          17.69         5.592         0 \r\n 2015          97            4.928         13.72         6.914         1.58 \r\n 2015          98            7.504         14.91         7.5           6.057 \r\n 2015          99            10.39         25.74         4.068         0.263 \r\n 2015          100           24.45         16.77         2.875         0 \r\n 2015          101           24.17         21.05        -1.15          0 \r\n 2015          102           9.48          19.72         10.04         0 \r\n 2015          103           16.27         18.92         6.35          11.591 \r\n 2015          104           19.96         21.02         3.562         0 \r\n 2015          105           16.362        23.6          6.178         0 \r\n 2015          106           21.9          25.04         8.58          0 \r\n 2015          107           17.49         27.39         9.44          0 \r\n 2015          108           15.91         28.48         12.26         11.062 \r\n 2015          109           12.92         22.74         8.7           9.217 \r\n 2015          110           15.41         12.11         1.986         0 \r\n 2015          111           20.72         14.76         0.064         0 \r\n 2015          112           26.92         13.77        -0.24          0 \r\n 2015          113           27.15         16.48        -1.818         0 \r\n 2015          114           6.038         18.53         4.795         7.11 \r\n 2015          115           3.638         10.12         6.168         18.433 \r\n 2015          116           27.09         16.22         2.44          0 \r\n 2015          117           27.17         19.83         2.128         0 \r\n 2015          118           26.62         23.32         3.078         0 \r\n 2015          119           26.01         24.34         5.835         0 \r\n 2015          120           27.39         20.14         3.461         0 \r\n 2015          121           22.9          22.19         2.208         0 \r\n 2015          122           16.62         24.88         8.85          8.163 \r\n 2015          123           20.11         28.94         13.08         1.053 \r\n 2015          124           16.39         26.34         15.56         6.847 \r\n 2015          125           21.49         27.72         16.14         5.003 \r\n 2015          126           19.99         29.38         15.26         4.213 \r\n 2015          127           19.63         28.47         17.3          2.37 \r\n 2015          128           7.071         19.88         16.3          1.58 \r\n 2015          129           19.56         23.79         11.35         0 \r\n 2015          130           6.989         20.26         13.73         13.167 \r\n 2015          131           19.31         19.28         10.22         0.527 \r\n 2015          132           25.84         19.47         8.1           0 \r\n 2015          133           26.53         22.01         4.694         0 \r\n 2015          134           4.663         16.52         11.58         6.847 \r\n 2015          135           20.25         26.28         15.08         0 \r\n 2015          136           17.19         28            16.85         3.16 \r\n 2015          137           19.74         26.86         17.1          0.79 \r\n 2015          138           27.94         20.05         7.561         5.003 \r\n 2015          139           20.04         16.69         4.573         0 \r\n 2015          140           6.934         11.23         4.532         2.897 \r\n 2015          141           25.78         23.19         2.724         0 \r\n 2015          142           24.64         26.46         8.16          0 \r\n 2015          143           24.61         27.41         10.41         0 \r\n 2015          144           8.18          25.33         15.42         38.971 \r\n 2015          145           24.04         26.78         17.54         3.95 \r\n 2015          146           13.608        23.9          17.38         15.541 \r\n 2015          147           23.91         27.09         14.97         0 \r\n 2015          148           22.19         28.8          14.45         0 \r\n 2015          149           16.34         27.43         18.07         1.317 \r\n 2015          150           5.534         20.3          12.43         0 \r\n 2015          151           24.12         20.9          8.11          0 \r\n 2015          152           21.314        22.49         8.68          0 \r\n 2015          153           24.68         23.93         10.87         0 \r\n 2015          154           20.57         26.52         13.23         0 \r\n 2015          155           21.65         29.94         15.72         0 \r\n 2015          156           21.14         30.67         18.43         0 \r\n 2015          157           20.93         26.89         14.31         0 \r\n 2015          158           12.91         30.11         19.36         11.321 \r\n 2015          159           25.45         29.86         15.77         0 \r\n 2015          160           27.93         33.97         15.57         0 \r\n 2015          161           24.49         34.24         22.53         0.527 \r\n 2015          162           8.68          27.49         20.53         32.916 \r\n 2015          163           10.22         25.47         19.82         3.687 \r\n 2015          164           10.3          27.81         19.13         41.604 \r\n 2015          165           20.16         29.47         20.3          0.79 \r\n 2015          166           9.931         28.19         19.16         32.388 \r\n 2015          167           25.33         27.1          16.44         2.633 \r\n 2015          168           13.59         27.49         15.22         8.688 \r\n 2015          169           19.31         26.66         18.15         0 \r\n 2015          170           26.61         26.55         16.28         0 \r\n 2015          171           22.07         30.41         14.11         15.541 \r\n 2015          172           16.89         29.19         18.47         0.263 \r\n 2015          173           10.55         29.86         22.6          0 \r\n 2015          174           25            27.29         16.78         0 \r\n 2015          175           6.921         22.39         17.03         79.787 \r\n 2015          176           13.75         27.61         18.64         5.53 \r\n 2015          177           11.07         22.73         16.56         0.263 \r\n 2015          178           23.71         26.94         14.94         0 \r\n 2015          179           10.59         24.35         15.69         2.107 \r\n 2015          180           14.15         27.73         17.23         1.843 \r\n 2015          181           16.16         28.16         17.35         0 \r\n 2015          182           15.38         24.41         17.37         0 \r\n 2015          183           19.19         23.21         14.06         0 \r\n 2015          184           23.32         27.09         15.04         0 \r\n 2015          185           22.83         27.99         12.97         0 \r\n 2015          186           22.47         29.54         16.38         0 \r\n 2015          187           9.15          30.32         19            32.128 \r\n 2015          188           23.81         23.22         14.94         0 \r\n 2015          189           9.21          18.19         14.68         0.263 \r\n 2015          190           22.62         27.21         13.72         0 \r\n 2015          191           23.66         26.98         14.59         0 \r\n 2015          192           10.82         29.18         19.64         42.921 \r\n 2015          193           25.52         32.01         20.24         0 \r\n 2015          194           21.46         33.76         23.39         0 \r\n 2015          195           26.31         31.07         20.74         0 \r\n 2015          196           19.01         26.85         18.98         0.263 \r\n 2015          197           7.744         28.22         19.31         32.657 \r\n 2015          198           26.82         33.86         21.73         3.95 \r\n 2015          199           21.38         32.02         24.07         0 \r\n 2015          200           17.34         28.93         20.14         0 \r\n 2015          201           13.226        29.07         18.19         4.477 \r\n 2015          202           27.84         27.71         15.42         0 \r\n 2015          203           24.12         28.25         14.03         0 \r\n 2015          204           21.53         28.48         15.82         0 \r\n 2015          205           17.33         29.23         16.82         2.633 \r\n 2015          206           19.54         32.12         22.21         0 \r\n 2015          207           11.144        29.82         22.3          3.95 \r\n 2015          208           17.84         30.76         21.56         2.633 \r\n 2015          209           16.76         30.65         21.36         19.491 \r\n 2015          210           26.49         27.92         18.03         4.213 \r\n 2015          211           27.18         29.96         16.95         0 \r\n 2015          212           26.69         30.21         16.87         0 \r\n 2015          213           24.21         30.56         14.76         0 \r\n 2015          214           23.34         32.14         18.85         0 \r\n 2015          215           26.61         27.13         14.98         0 \r\n 2015          216           17.37         26.49         13.55         0 \r\n 2015          217           21.72         27.78         16.59         0 \r\n 2015          218           23.79         27.9          15.75         0 \r\n 2015          219           22.25         31.18         18.67         0 \r\n 2015          220           11.34         27.93         17.52         1.053 \r\n 2015          221           13.03         27.2          19.84         58.461 \r\n 2015          222           21.43         28.74         18.3          0 \r\n 2015          223           22.89         27.61         16.16         0 \r\n 2015          224           25.66         28.89         15.02         0 \r\n 2015          225           23.73         29.69         15.42         0 \r\n 2015          226           20.19         30.68         19.62         9.217 \r\n 2015          227           24.04         30.96         18.14         0 \r\n 2015          228           23.52         30.28         19.23         0 \r\n 2015          229           18.91         30.98         19.87         6.583 \r\n 2015          230           10.87         27.22         18.34         19.221 \r\n 2015          231           12.56         20.1          13.27         0 \r\n 2015          232           25.62         25.09         12.87         0 \r\n 2015          233           24.33         27.52         14.58         0 \r\n 2015          234           17.6          26.14         15.84         0 \r\n 2015          235           24.54         23.29         11.58         7.11 \r\n 2015          236           25.2          22.63         10.93         0 \r\n 2015          237           24.89         23.37         10.63         0 \r\n 2015          238           24            25.89         9.14          0 \r\n 2015          239           15.92         23.11         11.01         0 \r\n 2015          240           6.358         22.37         13.93         0 \r\n 2015          241           7.869         25.18         16.99         0 \r\n 2015          242           14.86         28.18         16.5          0 \r\n 2015          243           19.62         31.2          16.16         0 \r\n 2015          244           20.21         32.44         20.37         0 \r\n 2015          245           11.7          29.36         20.16         0 \r\n 2015          246           21.44         33.68         20.14         0 \r\n 2015          247           20.18         33.81         20.7          0 \r\n 2015          248           19.86         34.13         21.19         0 \r\n 2015          249           20.31         34.95         21.89         0 \r\n 2015          250           16.81         31.88         21.19         14.742 \r\n 2015          251           10.46         27.73         18.83         2.107 \r\n 2015          252           21.42         29.33         15.69         0 \r\n 2015          253           16.49         29.45         16.94         5.267 \r\n 2015          254           19.34         22.08         8.34          0.79 \r\n 2015          255           19.47         20.73         7.016         0 \r\n 2015          256           21.67         24.09         6.168         0 \r\n 2015          257           19.8          30.84         12.62         0 \r\n 2015          258           19.78         31.2          17.27         0 \r\n 2015          259           18.87         32.04         15.93         0 \r\n 2015          260           10.59         34.02         20.67         4.74 \r\n 2015          261           3.151         23.91         15.52         40.816 \r\n 2015          262           20.8          22.75         8.6           0 \r\n 2015          263           20.31         25.2          6.633         0 \r\n 2015          264           20.01         26.8          7.4           0 \r\n 2015          265           13.33         30.01         12.74         0 \r\n 2015          266           17.67         30.38         13.91         0 \r\n 2015          267           15.14         30.85         15.13         0 \r\n 2015          268           16.35         27.84         12.31         0 \r\n 2015          269           18.05         28.39         12.09         0 \r\n 2015          270           11.3          26.98         12.24         0 \r\n 2015          271           14.7          29.61         14.83         0 \r\n 2015          272           5.934         19.73         8.14          4.477 \r\n 2015          273           19.02         19.57         5.643         0 \r\n 2015          274           18.4          19.16         4.654         0 \r\n 2015          275           18.55         20.59         4.785         0 \r\n 2015          276           18.26         18.83         4.411         0 \r\n 2015          277           5.035         15.07         9.62          0 \r\n 2015          278           6.311         17.71         11.45         0 \r\n 2015          279           11.02         25.09         11.55         0 \r\n 2015          280           15.05         27.73         12.92         0 \r\n 2015          281           13.88         29.13         11.08         0 \r\n 2015          282           7.429         17.67         4.39          0 \r\n 2015          283           16.13         20.64         2.148         0 \r\n 2015          284           16.05         29.2          10.09         0 \r\n 2015          285           14.48         24.51         11.45         0 \r\n 2015          286           15.67         19.56         6.572         0 \r\n 2015          287           16.11         20.11         4.028         0 \r\n 2015          288           14.61         22.59         4.714         0 \r\n 2015          289           15.84         13.41         0.368         0 \r\n 2015          290           15.78         14.28        -3.742         0 \r\n 2015          291           14.77         18.01        -0.624         0 \r\n 2015          292           13.14         26.08         9.34          0 \r\n 2015          293           7.168         22.58         14.31         2.897 \r\n 2015          294           10.79         25.45         12.48         0 \r\n 2015          295           12.75         21.27         10.48         0 \r\n 2015          296           2.175         18.83         12.18         7.373 \r\n 2015          297           4.262         18.89         3.664         0.527 \r\n 2015          298           14.29         17.83         0.428         0 \r\n 2015          299           11.34         17.32         2.249         0 \r\n 2015          300           1.954         11.59         3.623         32.128 \r\n 2015          301           2.047         11.35         2.268         2.37 \r\n 2015          302           6.537         10.7          0.67          0 \r\n 2015          303           9.5           12.22        -2.012         1.58 \r\n 2015          304           2.521         12.5          6.976         8.163 \r\n 2015          305           13            23.39         5.219         0 \r\n 2015          306           12.71         24.25         7.772         0 \r\n 2015          307           9.77          17.82         5.946         0 \r\n 2015          308           4.836         16.58         10.32         0 \r\n 2015          309           6.41          21            8.69          5.267 \r\n 2015          310           11.72         12.74         3.36          0 \r\n 2015          311           12.04         11.98        -0.542         0 \r\n 2015          312           12.28         13.42        -2.568         0 \r\n 2015          313           12.05         13.85        -2.366         0 \r\n 2015          314           11.54         16.43        -1.898         0 \r\n 2015          315           4.822         18.27         4.684         18.433 \r\n 2015          316           9.86          11.46         4.532         0.79 \r\n 2015          317           11.8          10.71        -0.644         0 \r\n 2015          318           10.82         19.38        -1.616         0 \r\n 2015          319           10.31         19.26         2.956         0 \r\n 2015          320           1.687         12.99         8.69          1.58 \r\n 2015          321           1.03          17.18         10.48         29.226 \r\n 2015          322           4.231         17.35         6.209         1.053 \r\n 2015          323           11.11         7.884        -0.704         0.263 \r\n 2015          324           5.357         5.664        -2.73          1.58 \r\n 2015          325           9.34         -0.026        -14.28         0 \r\n 2015          326           8.97          1.52         -15.16         1.58 \r\n 2015          327           10.7          5.361        -3.48          2.107 \r\n 2015          328           9.37          6.946        -4.898         0 \r\n 2015          329           4.776         14.4          4.966         0 \r\n 2015          330           0.815         16.5          2.946         40.288 \r\n 2015          331           1.814         3.017        -0.3           2.37 \r\n 2015          332           3.499         1.611        -1.434         0 \r\n 2015          333           2.957         2.674        -1.687         2.633 \r\n 2015          334           1.643         4.452         1.298         10.274 \r\n 2015          335           4.494         4.966        -0.826         0.263 \r\n 2015          336           4.767         2.067        -1.343         0 \r\n 2015          337           4.976         5.462        -0.816         0 \r\n 2015          338           9.72          10.53        -3.327         0 \r\n 2015          339           8.93          10.59        -0.3           0 \r\n 2015          340           1.661         5.209        -0.442         0 \r\n 2015          341           4.643         7.642         1.804         0 \r\n 2015          342           4.007         9.51         -0.846         0 \r\n 2015          343           7.923         11.23         1.722         0 \r\n 2015          344           5.279         13.76         4.835         0 \r\n 2015          345           4.47          11.74         1.196         0 \r\n 2015          346           3.476         15.94         7.924         0.263 \r\n 2015          347           0.757         17.09         14.7          35.809 \r\n 2015          348           3.022         15.5          3.442         5.267 \r\n 2015          349           2.766         6.442         2.106         0 \r\n 2015          350           5.557         8.47         -0.928         0 \r\n 2015          351           4.577         2.268        -3.784         0 \r\n 2015          352           8.03          3.148        -8.17          0 \r\n 2015          353           8.91          1.986        -10.22         0 \r\n 2015          354           3.716         11.6          0.57          0 \r\n 2015          355           1.447         10.3          1.014         21.066 \r\n 2015          356           2.435         5.411        -0.34          0 \r\n 2015          357           4.051         16.61         2.471         17.645 \r\n 2015          358           4.39          5.3          -0.958         0 \r\n 2015          359           2.286         1.238        -1.869         0 \r\n 2015          360           1.126         4.522         1.035         0.263 \r\n 2015          361           3.24          2.572         0.145         0.263 \r\n 2015          362           1.317         0.55         -2.325         0 \r\n 2015          363           6.295        -2.274        -4.189         0 \r\n 2015          364           7.143        -2.142        -4.524         0.527 \r\n 2015          365           7.971        -2.264        -7.344         0 \r\n 2016          1             8.61          1.783        -7.21          0 \r\n 2016          2             9.38          0.55         -9.57          0 \r\n 2016          3             3.864        -2.71         -9.04          0 \r\n 2016          4             9.45         -0.219        -9.3           0.2633306 \r\n 2016          5             8.6           1.309        -8.99          0 \r\n 2016          6             5.48          1.763        -5.791         0.5266612 \r\n 2016          7             2.519         2.956         1.238         3.949959 \r\n 2016          8             2.23          3.562         0.57          1.843314 \r\n 2016          9             3.019         0.631        -16.85         0 \r\n 2016          10            10.1         -13.45        -19.48         0 \r\n 2016          11            5.269        -2.548        -13.5          0 \r\n 2016          12            10.1         -3.267        -16.3          0 \r\n 2016          13            8.08          2.481        -16.26         0 \r\n 2016          14            8.56          9.42         -1.544         0 \r\n 2016          15            1.481         4.33         -7.15          0 \r\n 2016          16            9.84         -5.426        -14.76         0 \r\n 2016          17            10.48        -14.51        -20.49         0 \r\n 2016          18            9.36         -12.77        -20.27         0 \r\n 2016          19            6.094        -8.49         -15.69         0 \r\n 2016          20            8.66         -4.048        -15.2          1.316653 \r\n 2016          21            7.727        -1.09         -12.9          0 \r\n 2016          22            4.203        -3.358        -9.38          0 \r\n 2016          23            10.21        -0.219        -12.72         0 \r\n 2016          24            9.14          3.36         -5.77          0 \r\n 2016          25            2.509         2.674        -2.882         3.686629 \r\n 2016          26            2.294        -1.726        -3.601         0 \r\n 2016          27            9.9           4.835        -3.378         0 \r\n 2016          28            8.19          4.552        -0.806         0 \r\n 2016          29            10.71         4.916        -5.224         0 \r\n 2016          30            6.934         8.12         -0.604         0 \r\n 2016          31            5.534         5.956        -0.542         1.579984 \r\n 2016          32            3.82          0.408        -1.069         0 \r\n 2016          33            1.325         2.158        -0.522         11.84988 \r\n 2016          34            3.166         2.754        -7.414         0.2633306 \r\n 2016          35            8.41          2.896        -8.75          0 \r\n 2016          36            6.769        -1.535        -7.942         0 \r\n 2016          37            12.31         7.076        -5.67          0 \r\n 2016          38            11.34         7.59          0.358         0.2633306 \r\n 2016          39            4.973         0.914        -8.68          0.2633306 \r\n 2016          40            10.29        -8.43         -12.22         0 \r\n 2016          41            6.412        -7.495        -13.41         0 \r\n 2016          42            13.08        -2.679        -15.44         0 \r\n 2016          43            11.29        -4.736        -13.8          0 \r\n 2016          44            12.36        -6.664        -16.65         0 \r\n 2016          45            5.69         -5.244        -9.34          0 \r\n 2016          46            9.12          0.934        -6.42          2.106645 \r\n 2016          47            8.18          3.623        -5.689         0 \r\n 2016          48            5.941         3.078        -1.363         0 \r\n 2016          49            8.29          7.804        -1.454         0 \r\n 2016          50            14.85         15.21         4.38          0 \r\n 2016          51            14.61         13.65         0.985         0 \r\n 2016          52            9.46          7.4          -1.048         0 \r\n 2016          53            12.29         8.47         -3.499         0 \r\n 2016          54            10.99         8.08         -2.598         0 \r\n 2016          55            3.718         4.33          0.832         0 \r\n 2016          56            9.65          3.623        -2.71          0 \r\n 2016          57            10.06         5.522        -2.963         0 \r\n 2016          58            16.2          18.36        -3.064         0 \r\n 2016          59            11.96         17.98        -0.057         0 \r\n 2016          60            12.62         18.53        -2.184         0 \r\n 2016          61            4.404         2.814        -9.14          0 \r\n 2016          62            11.23         1.906        -11.6          0 \r\n 2016          63            4.459         2.552        -0.553         0.2633306 \r\n 2016          64            6.768         5.482        -0.826         0 \r\n 2016          65            11.67         6.471        -4.168         0 \r\n 2016          66            13.73         14.17        -3.51          0 \r\n 2016          67            8.75          22.27         8.31          1.316653 \r\n 2016          68            10.85         23.34         14.36         12.37861 \r\n 2016          69            13.76         14.55         3.866         0 \r\n 2016          70            14.31         14.61         2.602         0 \r\n 2016          71            18.52         18.57        -0.907         0 \r\n 2016          72            5.949         12.81         1.945         5.529943 \r\n 2016          73            2.797         11.81         9.48          4.21329 \r\n 2016          74            9.55          18.09         8.83          0.2633306 \r\n 2016          75            7.764         19.43         9.92          22.64229 \r\n 2016          76            19.73         15.4          5.148         0 \r\n 2016          77            19.32         15.66         1.52          0 \r\n 2016          78            14.8          8.3          -2.264         0 \r\n 2016          79            11.11         5.583        -2.669         0 \r\n 2016          80            13.01         8.87         -2             0 \r\n 2016          81            20.23         14.14        -3.844         0 \r\n 2016          82            11.12         20.28         5.361         0 \r\n 2016          83            3.207         9.59          5.3           8.687837 \r\n 2016          84            3.349         5.744        -1.069         2.896637 \r\n 2016          85            21.01         10.77        -3.733         0 \r\n 2016          86            10.18         12.46         0.914         0 \r\n 2016          87            3.135         7.178         1.338         6.846596 \r\n 2016          88            22.36         16.89        -1.11          0 \r\n 2016          89            21.29         17.93         2.43          0 \r\n 2016          90            10.39         21.6          7.965         9.475755 \r\n 2016          91            7.583         15.23         3.159         0.2633306 \r\n 2016          92            11.22         9.74          0.469         3.686629 \r\n 2016          93            23.21         7.076        -2.142         0 \r\n 2016          94            21.51         27.2         -2.345         0 \r\n 2016          95            21.29         13.51        -1.048         0 \r\n 2016          96            12.09         10.04        -3.034         0 \r\n 2016          97            11            14.11         4.219         1.316653 \r\n 2016          98            14.77         10.22         1.662         0 \r\n 2016          99            17.49         8.53         -3.155         0 \r\n 2016          100           24.3          8.81         -7.78          0 \r\n 2016          101           4.584         12.43         4.937         6.846596 \r\n 2016          102           22.4          11.31        -1.434         0 \r\n 2016          103           24.98         14.66        -4.898         0 \r\n 2016          104           24.65         20.04         1.338         0 \r\n 2016          105           24.76         21.81         3.401         0 \r\n 2016          106           23.11         26.65         6.452         0 \r\n 2016          107           22.67         28.12         10.25         0 \r\n 2016          108           21.51         28.4          11.9          0 \r\n 2016          109           17.57         28.2          12.15         1.579984 \r\n 2016          110           10.19         22.09         11.19         3.159967 \r\n 2016          111           8.08          19.54         9.59          1.579984 \r\n 2016          112           11.57         19.89         7.984         0.5266612 \r\n 2016          113           17.38         19.12         7.864         0 \r\n 2016          114           21.04         21.34         7.814         0 \r\n 2016          115           22.5          28.26         10.44         0 \r\n 2016          116           22.14         27.51         13.89         0 \r\n 2016          117           8.24          16.75         8             24.48767 \r\n 2016          118           4.613         13.11         7.198         11.06196 \r\n 2016          119           7.867         15.15         8.24          0 \r\n 2016          120           7.674         11.2          7.299         0 \r\n 2016          121           2.713         11.19         6.834         23.44057 \r\n 2016          122           3.18          10.3          7.44          6.319935 \r\n 2016          123           10.34         14.97         7.48          0 \r\n 2016          124           24.71         20.42         5.38          0 \r\n 2016          125           25.32         19.2          6.582         0 \r\n 2016          126           27.39         21.28         3.906         0 \r\n 2016          127           25.57         30.9          8.09          0 \r\n 2016          128           14.18         25.13         13.37         0 \r\n 2016          129           17.18         22.99         12.32         0.7899919 \r\n 2016          130           5.02          19            13.81         17.37567 \r\n 2016          131           15.49         24.13         15.24         0.5266612 \r\n 2016          132           12.8          25.32         13.9          4.21329 \r\n 2016          133           21.55         19.95         8.37          0 \r\n 2016          134           16.36         22.36         4.916         9.216572 \r\n 2016          135           26.49         13.59         4.604         0 \r\n 2016          136           26.27         18.17         3.704         0 \r\n 2016          137           14.13         18.32         7.38          0 \r\n 2016          138           15.46         18.86         6.35          0 \r\n 2016          139           28.3          21.36         5.25          0 \r\n 2016          140           27.42         23.69         6.743         0 \r\n 2016          141           10.04         20.12         9.87          0 \r\n 2016          142           25.53         26.81         6.34          0 \r\n 2016          143           27.91         29.83         9.46          0 \r\n 2016          144           26.11         30.79         13.04         0 \r\n 2016          145           23.61         31.17         17.55         0 \r\n 2016          146           18.22         30.11         16.76         0 \r\n 2016          147           21.68         31.45         16.96         6.583265 \r\n 2016          148           13.825        28.69         17.02         14.99 \r\n 2016          149           24.26         27.3          16.71         3.81 \r\n 2016          150           27.84         28.6          16.81         0 \r\n 2016          151           21.99         30.48         17.73         9.475755 \r\n 2016          152           18.77         28.12         16.14         18.96188 \r\n 2016          153           27.45         27.3          15.73         0.2633306 \r\n 2016          154           29.21         27.81         14.02         0 \r\n 2016          155           28.82         30.62         15.89         0 \r\n 2016          156           26.23         28.57         17.07         1.053322 \r\n 2016          157           28.53         29.67         16.73         0 \r\n 2016          158           29.3          30.03         15.56         0 \r\n 2016          159           30.45         24.9          12.15         0 \r\n 2016          160           29.05         28.67         9.88          0 \r\n 2016          161           24.17         34.76         19.96         0.2633306 \r\n 2016          162           28.36         34.72         19.98         0 \r\n 2016          163           24.37         34.79         21.58         0 \r\n 2016          164           22.74         32.7          20.87         0 \r\n 2016          165           26.96         34.79         18.22         2.794 \r\n 2016          166           24.5          33.61         20.94         6.35 \r\n 2016          167           28.79         36.06         20.81         0 \r\n 2016          168           29.23         31.77         18.68         0 \r\n 2016          169           27.73         30.53         16.03         0 \r\n 2016          170           29.25         32.07         16.14         0 \r\n 2016          171           29.15         33.18         15.8          0 \r\n 2016          172           16.95         32.01         19.85         0 \r\n 2016          173           29.44         31.76         17.28         6.604 \r\n 2016          174           21.31         33.02         19.5          6.35 \r\n 2016          175           24.53         28.51         17.64         0 \r\n 2016          176           28.11         30.12         14.83         0 \r\n 2016          177           26.26         34.79         19.94         0 \r\n 2016          178           15.868        33.62         19.27         0 \r\n 2016          179           27.76         31.93         16.59         0 \r\n 2016          180           24.52         25.89         13.1          0 \r\n 2016          181           24.26         26.76         10.07         0 \r\n 2016          182           16.76         28.49         16.63         11.43 \r\n 2016          183           28.67         25.25         14.71         0.254 \r\n 2016          184           7.985         19.18         13.89         1.016 \r\n 2016          185           12.37         19.78         13.62         0 \r\n 2016          186           13.11         26.39         17.34         0 \r\n 2016          187           27.01         32.06         17.83         0 \r\n 2016          188           14.41         27.94         20.08         14.22 \r\n 2016          189           13.709        29.21         20.12         4.572 \r\n 2016          190           28.88         29.6          17.45         0 \r\n 2016          191           29.21         29.34         15.2          0 \r\n 2016          192           14.01         28            17.28         18.8 \r\n 2016          193           28.82         32.18         19.77         0 \r\n 2016          194           20.54         29.69         19.12         14.22 \r\n 2016          195           15.95         29.84         19.24         41.4 \r\n 2016          196           28.62         29.2          18.19         0 \r\n 2016          197           15.918        25.17         15.26         0 \r\n 2016          198           27.98         27.38         14.41         0 \r\n 2016          199           13.54         31.41         18.17         14.22 \r\n 2016          200           20.03         30.9          20.46         1.27 \r\n 2016          201           8.6           28.14         19.1          11.68 \r\n 2016          202           22.16         31.66         19.24         4.064 \r\n 2016          203           27.24         34.44         22.79         0 \r\n 2016          204           21.09         33.2          20.39         39.62 \r\n 2016          205           22.94         33.92         23.49         0 \r\n 2016          206           16.84         33.04         22.22         0 \r\n 2016          207           24.66         30.09         18.65         0 \r\n 2016          208           26.34         30.28         17.13         0 \r\n 2016          209           22.17         31.83         17.6          0 \r\n 2016          210           24.98         27.9          17.87         0 \r\n 2016          211           15.25         26.49         17.27         0 \r\n 2016          212           21.37         29.42         18.35         0 \r\n 2016          213           19.95         28.94         17.1          0 \r\n 2016          214           14.57         29.64         19.5          0 \r\n 2016          215           11.54         28.43         20.24         2.032 \r\n 2016          216           23.75         32.35         19.64         0 \r\n 2016          217           25.13         32.66         20.7          53.85 \r\n 2016          218           23.92         27.98         17.73         0.254 \r\n 2016          219           24.33         27.67         15.44         0 \r\n 2016          220           16.95         26.61         14.29         0 \r\n 2016          221           25.41         29.4          17.37         0 \r\n 2016          222           17.35         31.35         18.33         0 \r\n 2016          223           23.62         32.4          20.13         0 \r\n 2016          224           17.88         32.24         22.79         8.38 \r\n 2016          225           11.38         29.04         21.98         45.97 \r\n 2016          226           24.09         28.6          19.06         0 \r\n 2016          227           16.02         29            17.6          3.81 \r\n 2016          228           16.34         27.38         18.41         0 \r\n 2016          229           25.12         30.23         17.06         0 \r\n 2016          230           18.51         30.87         19.67         1.27 \r\n 2016          231           22.75         32.32         20.69         0 \r\n 2016          232           18.53         32.14         19.92         25.65 \r\n 2016          233           16.47         25.08         15.01         7.112 \r\n 2016          234           24.26         24.7          12.87         0 \r\n 2016          235           24.36         27.52         11.63         0 \r\n 2016          236           19.19         27.86         15.44         0 \r\n 2016          237           20.68         31.19         20.34         14.73 \r\n 2016          238           13.89         27.12         16.92         1.27 \r\n 2016          239           16.1          27.04         16.83         0.508 \r\n 2016          240           19.26         30.92         19.31         1.27 \r\n 2016          241           20.41         32.68         19.31         0 \r\n 2016          242           18.93         33.42         19.8          0.508 \r\n 2016          243           13.7          30.38         20.65         0.254 \r\n 2016          244           19.13         27.5          14.28         0 \r\n 2016          245           21.81         26.08         12.56         0 \r\n 2016          246           21.76         25.85         10.88         0 \r\n 2016          247           18.93         26.5          11.1          0 \r\n 2016          248           14.47         27.98         14.25         0 \r\n 2016          249           21.11         32.31         17.26         0 \r\n 2016          250           20.31         34.04         21.58         0 \r\n 2016          251           12.43         32.2          22.93         17.78 \r\n 2016          252           17.22         31.4          20.76         10.67 \r\n 2016          253           16.72         29.35         18.13         1.27 \r\n 2016          254           19.63         24.27         11.26         0.508 \r\n 2016          255           22            26.82         9.48          0 \r\n 2016          256           20.32         29.15         11.34         0 \r\n 2016          257           7.513         25.11         16.64         0 \r\n 2016          258           15.3          25.42         15.53         1.016 \r\n 2016          259           15.89         30.61         14.45         0 \r\n 2016          260           14.67         30.16         17.55         1.778 \r\n 2016          261           19.9          28.73         12.71         0 \r\n 2016          262           20.29         31.06         10.52         0 \r\n 2016          263           18.91         33.55         13.37         0 \r\n 2016          264           19.48         33.93         16.42         0 \r\n 2016          265           13.28         34.44         20.65         0 \r\n 2016          266           11.43         33.18         20.12         0 \r\n 2016          267           12.47         29.03         20.24         3.556 \r\n 2016          268           15.05         33.41         18.39         0 \r\n 2016          269           12.86         29.19         15.22         0 \r\n 2016          270           19.64         24.01         9.07          0 \r\n 2016          271           19.3          24.7          6.582         0 \r\n 2016          272           9.27          19.34         8.69          0 \r\n 2016          273           18.41         25.98         9.52          0 \r\n 2016          274           7.476         20.18         9.7           0 \r\n 2016          275           5.458         20.21         14.98         0 \r\n 2016          276           8.04          22.34         10.41         0 \r\n 2016          277           6.237         21.48         9.8           0 \r\n 2016          278           15.63         28.03         14.42         0 \r\n 2016          279           15.58         27.94         14.88         2.032 \r\n 2016          280           6.052         24.16         16.5          26.67 \r\n 2016          281           14.85         18.83         4.38          1.524 \r\n 2016          282           16.94         22.89         2.541         0 \r\n 2016          283           15.8          22.87         6.248         0 \r\n 2016          284           9.03          23.41         7.076         0 \r\n 2016          285           15.25         27.07         12.68         0.254 \r\n 2016          286           3.89          20.82         1.874         0 \r\n 2016          287           16.37         15.84        -1.454         0 \r\n 2016          288           11.68         20.1          2.128         0 \r\n 2016          289           6.408         27.19         13.65         0.508 \r\n 2016          290           10.94         27.75         19.4          0 \r\n 2016          291           13.54         32.81         21.27         0 \r\n 2016          292           14.22         24.95         9.86          0 \r\n 2016          293           7.675         21.24         7.157         0 \r\n 2016          294           11.19         14.88         2.259         0 \r\n 2016          295           14.3          14.79        -0.886         0 \r\n 2016          296           14.22         21.8          3.542         0 \r\n 2016          297           13.88         24.75         6.613         0 \r\n 2016          298           13.96         17.73         2.956         0 \r\n 2016          299           6.642         15.14         6.34          0.762 \r\n 2016          300           3.23          17.61         8.77          4.572 \r\n 2016          301           7.727         13.97         6.29          0 \r\n 2016          302           9.35          25.2          6.168         0 \r\n 2016          303           11.46         26.81         14.83         0 \r\n 2016          304           4.896         15.5          5.238         0 \r\n 2016          305           9.69          20.85         6.199         0 \r\n 2016          306           11.08         26.15         14.96         0 \r\n 2016          307           1.977         19.18         14.67         2.794 \r\n 2016          308           11.5          21.87         6.834         0 \r\n 2016          309           12.36         21.81         3.036         0 \r\n 2016          310           10.46         23.15         6.936         0 \r\n 2016          311           12.15         20.42         4.502         0 \r\n 2016          312           9.04          21            5.108         0 \r\n 2016          313           10.97         18.2          2.936         0 \r\n 2016          314           11.72         15.25        -1.838         0 \r\n 2016          315           11.96         20.24         1.196         0 \r\n 2016          316           9.44          14.5         -0.3           0 \r\n 2016          317           11.84         12.46        -4.087         0 \r\n 2016          318           11.37         16.88        -1.392         0 \r\n 2016          319           9.81          17.65         2.916         0 \r\n 2016          320           10.81         17.09         0.216         0 \r\n 2016          321           10.6          18.7          0.286         0 \r\n 2016          322           7.964         25.5          12.12         0 \r\n 2016          323           5.146         20.02         2.836         0 \r\n 2016          324           10.61         4.674        -7.334         0 \r\n 2016          325           10.9          5.624        -8.65          0 \r\n 2016          326           9.78          7.944        -7.11          0 \r\n 2016          327           2.49          7.571         2.288         0.508 \r\n 2016          328           1.234         7.843         3.34          0.508 \r\n 2016          329           1.562         4.008         2.43          0 \r\n 2016          330           2.97          7.118        -3.601         0 \r\n 2016          331           9.27          13.24        -5.952         0 \r\n 2016          332           2.24          8.07          0.307         10.16 \r\n 2016          333           1.787         10.93         5.562         1.016 \r\n 2016          334           9.06          12.14         0.226         0 \r\n 2016          335           2.133         3.401        -0.684         0 \r\n 2016          336           2.568         4.118         1.702         0 \r\n 2016          337           3.867         4.876        -1.312         0 \r\n 2016          338           4.116         4.411        -1.494         0 \r\n 2016          339           4.13          1.591         0.145         8.13 \r\n 2016          340           5.593         1.642        -0.725         0 \r\n 2016          341           7.804         2.067        -3.804         0 \r\n 2016          342           5.889        -2.184        -7.354         0 \r\n 2016          343           4.108        -5            -10.56         0 \r\n 2016          344           6.696        -4.756        -11.66         0 \r\n 2016          345           2.815        -2.568        -6.622         0 \r\n 2016          346           1.195         2.43         -4.493         0.254 \r\n 2016          347           9.13         -4.068        -13.25         0 \r\n 2016          348           8.59         -3.499        -16.38         0 \r\n 2016          349           8.17         -5.75         -14.85         0 \r\n 2016          350           7.518        -9.75         -17.93         0 \r\n 2016          351           1.389        -4.96         -9.89          0 \r\n 2016          352           3.063        -5.04         -16.59         0 \r\n 2016          353           9.35         -16.52        -25.46         0 \r\n 2016          354           9.33         -6.734        -21.68         0 \r\n 2016          355           7.364         0.368        -9.42          0 \r\n 2016          356           6.566         5.604        -8             0 \r\n 2016          357           8.69          4.462        -4.412         0 \r\n 2016          358           1.881         3.299        -0.725         0.254 \r\n 2016          359           2.336         3.674         0.53          0 \r\n 2016          360           0.805         12.82         1.439         5.842 \r\n 2016          361           9.04          9.46         -1.494         1.016 \r\n 2016          362           9.11          4.108        -4.818         0 \r\n 2016          363           4.739         6.168        -3.358         0 \r\n 2016          364           8.17          4.856        -0.644         0 \r\n 2016          365           7.566         6.269        -6.48          0 \r\n 2016          366           6.719         4.835        -8.42          0 \r\n 2017          1             7.101         4.018        -9.59          0 \r\n 2017          2             1.861         3.27         -2             0.25 \r\n 2017          3             2.801         1.824        -10.75         2.29 \r\n 2017          4             8.96         -8.22         -13.96         0 \r\n 2017          5             4.665        -10.23        -19.42         0 \r\n 2017          6             9.44         -12.73        -20.11         0 \r\n 2017          7             9.41         -5.588        -17.3          0 \r\n 2017          8             6.568        -4.463        -20.07         0 \r\n 2017          9             2.538         2.35         -9.98          0 \r\n 2017          10            1.011         9.68         -4.564         2.29 \r\n 2017          11            2.693         6.814        -6.136         0.51 \r\n 2017          12            5.743        -4.352        -8.81          0 \r\n 2017          13            6.433        -2.638        -10.54         0 \r\n 2017          14            5.503         0.722        -6.602         1.52 \r\n 2017          15            2.773         0.994        -7.16          0 \r\n 2017          16            1.167         3.017        -0.654         4.06 \r\n 2017          17            2.289         2.46          1.004         12.95 \r\n 2017          18            6.601         6.057        -1.576         0 \r\n 2017          19            2.032         4.028        -1.009         0 \r\n 2017          20            3.22          6.956         1.925         0 \r\n 2017          21            3.132         8.33         -0.442         3.05 \r\n 2017          22            2.511         2.855        -1.716         0.25 \r\n 2017          23            2.953         3.542         0.165         0 \r\n 2017          24            2.271         3.542        -0.522         0 \r\n 2017          25            1.872         3.846        -1.171         14.73 \r\n 2017          26            3.331        -0.522        -2.507         0.76 \r\n 2017          27            7.613         0.448        -5.375         0 \r\n 2017          28            6.438         1.176        -4.432         0 \r\n 2017          29            3.094         0.62         -8.21          0 \r\n 2017          30            7.888         9.24         -9.93          0 \r\n 2017          31            5.679         6.007         1.662         0 \r\n 2017          32            10.06         3.078        -5.628         0 \r\n 2017          33            8.75         -4.108        -10.2          0 \r\n 2017          34            12.71        -1.069        -10.48         0 \r\n 2017          35            3.539         2.592        -10.8          0 \r\n 2017          36            11.28         4.472        -3.378         0 \r\n 2017          37            10.74         13.32        -5.091         0 \r\n 2017          38            2.41          7.722        -4.412         0 \r\n 2017          39            7.624        -4.068        -12.33         0.25 \r\n 2017          40            12.79        -5.04         -13.61         0 \r\n 2017          41            10.94         12.63        -10            0 \r\n 2017          42            8.73          13.23         0.469         0 \r\n 2017          43            14.32         8.45         -3.499         4.06 \r\n 2017          44            12.32         10.57        -6.358         0 \r\n 2017          45            13.3          11.6         -0.746         0 \r\n 2017          46            14.5          5.764        -4.949         0 \r\n 2017          47            11.78         15.44        -6.024         0 \r\n 2017          48            14.62         23.8          0.6           0 \r\n 2017          49            14.88         20.27         1.986         0 \r\n 2017          50            12.8          23.41        -0.35          0 \r\n 2017          51            4.734         18.92         9.48          5.08 \r\n 2017          52            14.81         22.01         4.532         4.06 \r\n 2017          53            15.01         24.74         6.592         0 \r\n 2017          54            3.322         10.36         4.209         0 \r\n 2017          55            4.042         4.24         -4.34          30.99 \r\n 2017          56            15.7          0.024        -8.12          4.06 \r\n 2017          57            12.28         11.52        -4.614         0 \r\n 2017          58            15.08         14.52        -2.456         0 \r\n 2017          59            6.612         20.89         8.16          0 \r\n 2017          60            5.642         8.75         -0.684         2.03 \r\n 2017          61            10.85         3.422        -8.3           1.52 \r\n 2017          62            15.71         4.411        -10.22         0 \r\n 2017          63            16.66         15.83        -1.434         0 \r\n 2017          64            12            20.17         5.098         0 \r\n 2017          65            6.82          20.86         11.33         0 \r\n 2017          66            16.57         12.56         1.763         7.62 \r\n 2017          67            16.76         13.35        -0.542         0 \r\n 2017          68            1.176         8.07          0.448         0 \r\n 2017          69            15.14         0.61         -6.319         0 \r\n 2017          70            11.91         0.964        -6.176         2.03 \r\n 2017          71            9.65          2.33         -9.48          1.02 \r\n 2017          72            10.25        -0.34         -5.385         10.16 \r\n 2017          73            20.16        -3.499        -12.43         0 \r\n 2017          74            20.15         2.602        -14.1          0 \r\n 2017          75            12.7          7.561        -6.745         0 \r\n 2017          76            18.92         18.32         2.512         0 \r\n 2017          77            16.19         9.86         -1.889         0 \r\n 2017          78            18.62         17.27        -3.642         0 \r\n 2017          79            17.49         19.38         5.2           0 \r\n 2017          80            8.22          11.17        -0.502         0 \r\n 2017          81            19            8.69         -2.882         0.76 \r\n 2017          82            5.235         9.39          2.674         0 \r\n 2017          83            7.924         25.45         7.642         4.32 \r\n 2017          84            4.279         12.46         5.583         5.08 \r\n 2017          85            4.17          10.67         7.944         4.32 \r\n 2017          86            4.325         11.29         7.419         0 \r\n 2017          87            4.46          10.93         3.794         0 \r\n 2017          88            2.479         8.53          3.674         2.54 \r\n 2017          89            2.125         7.924         4.775         32.51 \r\n 2017          90            4.633         6.37          0.752         0 \r\n 2017          91            16.79         14.69        -0.159         0 \r\n 2017          92            3.894         12.04         7.44          0.508 \r\n 2017          93            5.757         13.77         8.71          5.588 \r\n 2017          94            6.537         12.92         8.7           2.032 \r\n 2017          95            3.846         8.71          4.27          25.65 \r\n 2017          96            22.92         12.42         1.642         0 \r\n 2017          97            23.93         15.69        -1.332         0 \r\n 2017          98            20.81         25.75         3.927         0 \r\n 2017          99            18.79         27.13         13.99         0 \r\n 2017          100           12.2          22.64         8.51          3.81 \r\n 2017          101           19.67         15.62         4.37          0 \r\n 2017          102           18.8          22.39         2.046         0 \r\n 2017          103           20.68         25.58         9.81          0 \r\n 2017          104           12.63         24.92         9.99          2.54 \r\n 2017          105           18.84         28.85         15.34         3.048 \r\n 2017          106           19.82         22.12         10.32         3.302 \r\n 2017          107           22.6          24.25         5.098         0 \r\n 2017          108           18.67         25.47         8.83          0 \r\n 2017          109           13.83         26.69         12.16         6.35 \r\n 2017          110           12.34         22.03         9.8           0 \r\n 2017          111           18.17         14.69         4.512         0 \r\n 2017          112           25.77         19.11         3.138         0 \r\n 2017          113           26.04         23.79         1.722         0 \r\n 2017          114           25.37         26.35         6.269         0 \r\n 2017          115           16.67         26.53         10.24         3.556 \r\n 2017          116           5.328         16.38         5.604         2.794 \r\n 2017          117           10.95         11.48         3.218         9.91 \r\n 2017          118           3.126         7.804         3.522         5.08 \r\n 2017          119           2.104         8.51          4.674         24.64 \r\n 2017          120           3.89          12.78         5.28          11.18 \r\n 2017          121           10.25         11.85         5.926         2.286 \r\n 2017          122           23.03         16.18         4.754         0 \r\n 2017          123           13.62         13.89         2.592         0 \r\n 2017          124           23.36         20.28         3.542         0 \r\n 2017          125           26.67         23.47         4.411         0 \r\n 2017          126           27.01         21.72         8.73          0 \r\n 2017          127           25.18         22.4          4.552         0 \r\n 2017          128           20.33         26.16         8.85          0 \r\n 2017          129           25.8          24.66         15.16         0 \r\n 2017          130           8.66          22.53         14.21         13.46 \r\n 2017          131           20.82         22.51         13.28         0 \r\n 2017          132           25.3          24.49         10.9          0 \r\n 2017          133           26.87         28.26         8.91          0 \r\n 2017          134           26.23         29.27         12.68         0 \r\n 2017          135           24.05         33.23         16.37         0 \r\n 2017          136           26.14         31.92         18.97         0.254 \r\n 2017          137           18.03         29.74         19.09         6.604 \r\n 2017          138           22.26         23.48         14.92         0 \r\n 2017          139           5.557         15.21         8.57          17.02 \r\n 2017          140           9.15          22.9          9.15          6.096 \r\n 2017          141           9.97          14.35         7.762         0 \r\n 2017          142           15.73         20.98         6.724         0 \r\n 2017          143           12.69         18.62         9.05          0 \r\n 2017          144           15.03         19            8.54          0 \r\n 2017          145           27.51         24.58         6.956         0 \r\n 2017          146           9.5           21.06         13.99         17.53 \r\n 2017          147           9.62          24.06         12.08         0.254 \r\n 2017          148           19.89         27.06         14.32         0 \r\n 2017          149           21.65         25.63         12.8          0 \r\n 2017          150           24.57         26.69         9.99          0 \r\n 2017          151           27.56         25.38         8.94          0 \r\n 2017          152           27.98         28.74         9.65          0 \r\n 2017          153           25.97         31.81         15.24         0 \r\n 2017          154           23.98         33.5          18.39         0 \r\n 2017          155           21.17         34.21         19.76         0 \r\n 2017          156           28.23         32.62         15.07         0 \r\n 2017          157           29.53         27.69         11.82         0 \r\n 2017          158           29.48         27.47         10.91         0 \r\n 2017          159           27.65         29.8          12.68         0 \r\n 2017          160           27.8          32.68         16.45         0 \r\n 2017          161           28.74         32.78         17.11         0 \r\n 2017          162           28.17         33.97         21.6          0 \r\n 2017          163           27.19         34.97         22.23         0 \r\n 2017          164           26.65         35.45         22.85         0 \r\n 2017          165           17.03         33.18         21.19         5.842 \r\n 2017          166           27.83         34.41         19.26         0.254 \r\n 2017          167           26.56         32.51         19.17         3.556 \r\n 2017          168           23.6          31.78         21            16 \r\n 2017          169           27.09         26.73         17.06         0 \r\n 2017          170           21.71         28.31         14.63         0.254 \r\n 2017          171           27.08         33.18         13.26         0 \r\n 2017          172           16.64         29.52         16.14         1.27 \r\n 2017          173           24.91         31.72         21.72         0 \r\n 2017          174           25.78         28.39         16.69         2.286 \r\n 2017          175           29.26         24.88         11.96         0 \r\n 2017          176           25.95         23.8          8.8           0 \r\n 2017          177           19.08         24.01         9.33          0 \r\n 2017          178           28.9          25.78         6.41          0 \r\n 2017          179           14.64         29.94         18.01         4.318 \r\n 2017          180           10.52         26.22         18.05         0.508 \r\n 2017          181           15.13         27.88         18.11         0 \r\n 2017          182           28.97         28.64         13.94         0 \r\n 2017          183           19.96         31.61         12.95         0 \r\n 2017          184           25.33         34.21         17.39         0 \r\n 2017          185           20.81         31.32         19.05         0 \r\n 2017          186           23.86         32.35         17.6          0 \r\n 2017          187           27.43         33.92         16.72         0 \r\n 2017          188           27.5          30.71         17.94         1.524 \r\n 2017          189           26.63         29.64         15.15         0 \r\n 2017          190           25.8          34.22         17.59         0 \r\n 2017          191           18.24         32.94         19.23         27.69 \r\n 2017          192           18.13         33.06         20.58         6.604 \r\n 2017          193           14.83         32.1          22.85         3.556 \r\n 2017          194           21.93         29.23         19.12         0 \r\n 2017          195           29.14         26.45         15.65         0 \r\n 2017          196           26.9          31.66         11.89         0 \r\n 2017          197           22.68         31.86         19.61         0 \r\n 2017          198           27.93         28.49         15.95         0 \r\n 2017          199           20.59         33.95         18.22         21.84 \r\n 2017          200           25.74         34.28         20.93         0 \r\n 2017          201           24.61         35.96         22.77         4.318 \r\n 2017          202           24.53         34.04         22.28         1.27 \r\n 2017          203           22.59         31.95         21.31         3.302 \r\n 2017          204           26.57         31.13         17.68         0 \r\n 2017          205           23.51         26.56         15.96         0 \r\n 2017          206           26.57         29.53         15.31         0 \r\n 2017          207           14.04         31.12         21.13         6.35 \r\n 2017          208           21.38         29.76         18.68         0.254 \r\n 2017          209           26.72         27.93         14.95         0 \r\n 2017          210           25.84         26.58         12.88         0 \r\n 2017          211           20.63         28.38         12.02         0 \r\n 2017          212           18.18         28.14         12.89         0 \r\n 2017          213           22.33         30.32         16.14         0 \r\n 2017          214           24.99         31.47         15.73         0 \r\n 2017          215           16.87         28.21         12.12         1.778 \r\n 2017          216           26.2          24.59         10.91         0 \r\n 2017          217           19.43         26.85         9.59          0 \r\n 2017          218           11.4          22.56         14.25         0 \r\n 2017          219           23.84         26.53         12.88         0 \r\n 2017          220           26.81         28.62         10.01         0 \r\n 2017          221           26.05         28.31         9.54          0 \r\n 2017          222           20.32         31.56         16.89         19.3 \r\n 2017          223           24.28         25.2          13.77         0 \r\n 2017          224           24.02         26.24         10.88         0 \r\n 2017          225           19.87         25.44         9.81          0 \r\n 2017          226           17.14         28.62         13.77         11.94 \r\n 2017          227           19.56         28.17         16.53         0 \r\n 2017          228           16.62         28.74         19.9          0 \r\n 2017          229           21.59         27.18         18.17         0 \r\n 2017          230           20.14         30.75         14.53         0 \r\n 2017          231           23.91         28.76         16.76         4.064 \r\n 2017          232           14.25         28.42         17.21         0.762 \r\n 2017          233           10.95         28.78         18.27         20.83 \r\n 2017          234           23.66         24.51         12.54         0.508 \r\n 2017          235           24.92         25.42         10.77         0 \r\n 2017          236           15.1          26.61         12.34         0 \r\n 2017          237           16.1          23.22         14.65         0 \r\n 2017          238           12.93         25.63         13.28         0 \r\n 2017          239           7.422         24.06         16.13         6.858 \r\n 2017          240           20.67         25.4          14.43         0 \r\n 2017          241           19.36         26.18         12.1          0 \r\n 2017          242           22.52         28.16         11.59         0 \r\n 2017          243           18.07         24.43         11.67         0 \r\n 2017          244           23.14         22.77         7.732         0 \r\n 2017          245           17.13         26.49         6.41          5.842 \r\n 2017          246           21.85         30.35         13.08         0.254 \r\n 2017          247           10.99         26.8          15.1          0 \r\n 2017          248           19.55         21.19         8.44          0 \r\n 2017          249           17.75         19.71         6.452         0 \r\n 2017          250           21            22.95         5.562         0 \r\n 2017          251           21.66         28.98         8.87          0 \r\n 2017          252           20.39         27.86         11.13         0 \r\n 2017          253           21.41         26.31         9.72          0 \r\n 2017          254           21.92         26.06         6.774         0 \r\n 2017          255           19.84         27.63         8.5           0 \r\n 2017          256           21.09         30.66         7.874         0 \r\n 2017          257           19.29         32.14         12.36         0 \r\n 2017          258           18.65         33.23         15.1          0 \r\n 2017          259           17.4          32.75         18.29         0 \r\n 2017          260           11.75         23.6          11.76         5.334 \r\n 2017          261           14.01         27.87         8.74          3.302 \r\n 2017          262           13.56         28.96         14.17         0 \r\n 2017          263           17.82         35.1          19.73         4.318 \r\n 2017          264           11.73         31.47         19.57         53.85 \r\n 2017          265           18.56         34.58         21.17         0 \r\n 2017          266           17.92         35.53         18.23         0 \r\n 2017          267           16.43         33.72         18.17         0 \r\n 2017          268           16.99         34.22         16.84         2.54 \r\n 2017          269           8.96          25.54         15.66         0 \r\n 2017          270           13.85         21.4          8.07          0 \r\n 2017          271           18.64         25.8          5.361         0 \r\n 2017          272           18.47         24.85         7.4           0 \r\n 2017          273           17.83         23.31         4.39          0 \r\n 2017          274           16.87         25.38         9.98          0 \r\n 2017          275           15.35         31.5          17.87         0 \r\n 2017          276           10.16         29.25         18.55         0 \r\n 2017          277           8.41          21.27         13.97         11.94 \r\n 2017          278           7.111         21.87         11.4          0 \r\n 2017          279           2.817         22.11         19.44         11.94 \r\n 2017          280           5.259         22.39         11.35         1.524 \r\n 2017          281           17.36         27.75         10.42         0 \r\n 2017          282           16.48         25.98         9.17          0 \r\n 2017          283           1.112         14.26         10.18         18.8 \r\n 2017          284           3.596         13.26         9.09          0.508 \r\n 2017          285           5.359         16.44         11.96         0 \r\n 2017          286           11.71         25.9          12.04         3.556 \r\n 2017          287           2.154         20.94         15.54         51.05 \r\n 2017          288           7.195         16.71         3.35          0 \r\n 2017          289           16.28         20            1.935         0 \r\n 2017          290           15.5          23.07         6.613         0 \r\n 2017          291           14.86         24.22         9.16          0 \r\n 2017          292           14.69         25.63         5.986         0 \r\n 2017          293           13.67         25.66         9.85          0 \r\n 2017          294           12.21         28.37         15.32         6.858 \r\n 2017          295           3.01          16.29         7.248         12.7 \r\n 2017          296           7.801         16.56         6.209         0 \r\n 2017          297           4.723         11.2          4.018         0 \r\n 2017          298           13.08         17.69         2.33          0 \r\n 2017          299           11.81         21.79         4.432         0 \r\n 2017          300           4.476         4.583         1.014         0 \r\n 2017          301           3.366         3.664        -5             0 \r\n 2017          302           6.047         11.33        -5.375         4.064 \r\n 2017          303           6.277         9.05          1.896         0 \r\n 2017          304           10.46         4.472        -3.308         0 \r\n 2017          305           3.181         7.258         1.238         0 \r\n 2017          306           2.779         11.25         2.734         0 \r\n 2017          307           11.86         10.52        -1.069         0 \r\n 2017          308           2.274         9.94          5.976         0 \r\n 2017          309           3.307         12.02        -1.15          0.254 \r\n 2017          310           9.03          6.248        -3.216         0 \r\n 2017          311           5.594         7.238        -3.885         0 \r\n 2017          312           11.95         9.67         -6.664         0 \r\n 2017          313           11.14         4.775        -7.739         0 \r\n 2017          314           11.16         1.562        -7.424         0 \r\n 2017          315           5.759         8.91         -0.118         4.064 \r\n 2017          316           2.453         4.937        -0.482         13.97 \r\n 2017          317           4.959         7.066        -4.148         0 \r\n 2017          318           1.413         9.67          3.058         0 \r\n 2017          319           10.16         13.32        -2.548         2.286 \r\n 2017          320           5.692         2.278        -7.454         0 \r\n 2017          321           1.97          9.07         -1.048         0 \r\n 2017          322           2.798         8.37         -2.446         5.588 \r\n 2017          323           9.79          4.654        -6.136         0 \r\n 2017          324           10.47         16.43        -0.148         0 \r\n 2017          325           5.754         9.42         -7.344         0 \r\n 2017          326           9.97          2.926        -10.66         0 \r\n 2017          327           9.76          11.35        -1.656         0 \r\n 2017          328           9.7           22.95         2.026         0 \r\n 2017          329           10.02         13.43        -0.26          0 \r\n 2017          330           8.33          15.19        -4.878         0 \r\n 2017          331           7.609         17.38         0.508         0 \r\n 2017          332           3.361         15.72         0.489         0 \r\n 2017          333           8.72          9.51         -5.162         0 \r\n 2017          334           9.84          12.13        -1.778         0 \r\n 2017          335           9.61          12.96        -4.96          0 \r\n 2017          336           9.21          15.55        -1.232         0 \r\n 2017          337           8.5           16.93        -3.196         0 \r\n 2017          338           2.115         19.56         1.753         0 \r\n 2017          339           7.405         2.208        -3.499         0 \r\n 2017          340           3.829         2.087        -4.949         0 \r\n 2017          341           9.43         -2.528        -9.57          0 \r\n 2017          342           8.61          3.917        -10.07         0 \r\n 2017          343           6.891         0.54         -7.82          0 \r\n 2017          344           7.817         5.886        -7.495         0 \r\n 2017          345           5.029         7.542        -2.892         0.254 \r\n 2017          346           8.71         -0.938        -9.57          0 \r\n 2017          347           2.271         9.36         -3.094         0.254 \r\n 2017          348           5.746        -1.332        -10.54         0 \r\n 2017          349           3.639         6.168        -5.132         0 \r\n 2017          350           8.66          12.06        -2.335         0 \r\n 2017          351           2.555         5.714        -2.122         0.762 \r\n 2017          352           8.35          10.61         1.045         0 \r\n 2017          353           8.12          11.02        -0.837         0 \r\n 2017          354           7.346         5.432        -3.784         0 \r\n 2017          355           1.238         2.836        -1.96          1.27 \r\n 2017          356           2.716         1.358        -4.675         0 \r\n 2017          357           7.779        -3.834        -9.68          0 \r\n 2017          358           5.512        -5.264        -11.68         0 \r\n 2017          359           8.66         -9.24         -15.99         0 \r\n 2017          360           8.82         -13.39        -21.62         0 \r\n 2017          361           8.9          -13.77        -24.5          0 \r\n 2017          362           4.249        -10.27        -16.95         3.302 \r\n 2017          363           3.349        -9.06         -15.61         4.318 \r\n 2017          364           7.45         -11.86        -20.4          0 \r\n 2017          365           9.6          -17.87        -26.54         0 \r\n 2018          1             9.72         -19.48        -28.28         0 \r\n 2018          2             9.85         -9.57         -28.1          0 \r\n 2018          3             9.61         -7.272        -21.4          0.51 \r\n 2018          4             5.887        -13.9         -23.76         0 \r\n 2018          5             9.64         -11.9         -21.07         0 \r\n 2018          6             9.83         -9.87         -25.32         0 \r\n 2018          7             3.486         0.813        -9.93          0 \r\n 2018          8             9.71          4.29         -2.244         0 \r\n 2018          9             4.794         1.864        -3.52          0 \r\n 2018          10            4.241         11.17         0.975         0 \r\n 2018          11            1.712         10.55        -13.08         0.51 \r\n 2018          12            10.27        -8.73         -15.37         5.08 \r\n 2018          13            10.27        -10.01        -16.65         0 \r\n 2018          14            4.614        -4.291        -17.01         0 \r\n 2018          15            7.275        -3.257        -19.48         2.03 \r\n 2018          16            8.77         -11.93        -21.03         0 \r\n 2018          17            10.47        -4.452        -20.31         0 \r\n 2018          18            10.1          2.906        -8.84          0 \r\n 2018          19            8.58          6.724        -3.196         0 \r\n 2018          20            4.874         7.5          -1.181         0 \r\n 2018          21            1.568         9.62          3.866         0 \r\n 2018          22            8.04          13.13         1.035         15.49 \r\n 2018          23            4.855         1.763        -2.669         10.41 \r\n 2018          24            10.31         1.692        -5.203         0 \r\n 2018          25            11.18         11.37        -2.69          0 \r\n 2018          26            8.38          14.25         1.844         0 \r\n 2018          27            11.46         11.1         -1.232         0 \r\n 2018          28            8.63          2.674        -6.684         0 \r\n 2018          29            11.47        -2.264        -11.35         0 \r\n 2018          30            6.493         2.087        -13.49         0 \r\n 2018          31            5.584         7.157        -1.758         0 \r\n 2018          32            11.83         0.59         -14.79         0 \r\n 2018          33            11.04        -4.412        -18.93         0 \r\n 2018          34            4.794         8.59         -7.495         0 \r\n 2018          35            7.03          4.966        -18.34         0 \r\n 2018          36            2.904        -10.68        -19.93         0.25 \r\n 2018          37            10.93        -2.082        -22.95         9.91 \r\n 2018          38            12.45        -8.75         -18.32         1.52 \r\n 2018          39            9.87         -3.662        -13.71         0.76 \r\n 2018          40            7.162        -5.324        -10.95         12.95 \r\n 2018          41            8.78         -9.12         -12.82         2.03 \r\n 2018          42            11.96        -7.841        -17.64         0 \r\n 2018          43            14.04        -5.406        -22.03         0 \r\n 2018          44            11.85         1.601        -15.97         0.25 \r\n 2018          45            10.37         5.946        -4.048         0 \r\n 2018          46            8.89          6.673         1.318         0 \r\n 2018          47            14.5          1.48         -10.76         0 \r\n 2018          48            7.166         0.964        -10            0.51 \r\n 2018          49            13.3          8.78         -8.75          2.29 \r\n 2018          50            4.731         19.12         1.734         0 \r\n 2018          51            1.855         2.288        -5.426         2.29 \r\n 2018          52            10.33        -1.97         -7.718         0 \r\n 2018          53            3.679         2.836        -3.226         3.3 \r\n 2018          54            8.73          4.402        -2.184         8.38 \r\n 2018          55            3.451         4.624        -2.395         0 \r\n 2018          56            16.35         8.59         -1.798         3.56 \r\n 2018          57            16.38         13.76        -1.554         0 \r\n 2018          58            15.22         18.26         1.642         0 \r\n 2018          59            5.339         14.18         6.39          0 \r\n 2018          60            16.57         10.75        -1.544         0 \r\n 2018          61            14.39         10.2         -5.507         0 \r\n 2018          62            16.9          12.1         -0.624         0 \r\n 2018          63            16.13         13.67        -1.292         0 \r\n 2018          64            1.401         7.43         -1.038         0 \r\n 2018          65            6.181         1.439        -0.886         10.41 \r\n 2018          66            13.81         1.277        -5.791         1.27 \r\n 2018          67            17.46         2.43         -7.902         0 \r\n 2018          68            13.53         5.3          -7.678         0 \r\n 2018          69            13.73         8.76         -4.432         2.03 \r\n 2018          70            12.12         8.57         -0.563         2.03 \r\n 2018          71            18            8.43         -4.736         0 \r\n 2018          72            18.91         5.462        -6.054         0 \r\n 2018          73            19.24         16.14        -7.454         0 \r\n 2018          74            18.7          13.94        -4.646         0 \r\n 2018          75            7.39          5.482        -1.666         0 \r\n 2018          76            8.15          5.966        -1.515         11.18 \r\n 2018          77            17.28         10.67        -5.02          0 \r\n 2018          78            15.81         13.17         0.236         0 \r\n 2018          79            11.96         5.583        -2.466         0.51 \r\n 2018          80            20.36         8.65         -5.497         3.05 \r\n 2018          81            12.01         10.22        -6.136         0 \r\n 2018          82            9.07          10.38        -2.304         0.25 \r\n 2018          83            4.39          1.056        -0.928         29.21 \r\n 2018          84            21.48         3.784        -1.849         6.1 \r\n 2018          85            4.655         5.27         -0.563         0.51 \r\n 2018          86            6.525         5.542         1.298         1.52 \r\n 2018          87            8.37          7.652         0.286         0 \r\n 2018          88            14.27         10.81         1.379         1.27 \r\n 2018          89            20.3          11.49        -1.21          0 \r\n 2018          90            17.78         15.44        -3.936         0.51 \r\n 2018          91            6.706        -0.725        -7.454         0 \r\n 2018          92            17.41         5.31         -9.79          0 \r\n 2018          93            3.323         4.37         -4.656         3.048 \r\n 2018          94            23.15         3.068        -8.75          0 \r\n 2018          95            13.72         11.19        -5.436         0 \r\n 2018          96            7.423         4.199        -8.18          0 \r\n 2018          97            23.64         5.462        -10.07         0 \r\n 2018          98            6.739         2.188        -7.474         2.794 \r\n 2018          99            13.67         3.159        -1.758         5.588 \r\n 2018          100           20.4          9.68         -6.562         0 \r\n 2018          101           13.98         19.72         2.612         0 \r\n 2018          102           20.04         23.77         10.15         0 \r\n 2018          103           7.919         19.4          7.016         2.286 \r\n 2018          104           3.095         6.996         2.067         6.35 \r\n 2018          105           7.647         2.116        -2.75          6.858 \r\n 2018          106           12.89         3.644        -3.226         0 \r\n 2018          107           23.62         13.19        -3.925         0 \r\n 2018          108           3.676         2.602         0.346         0.254 \r\n 2018          109           25.66         14.07        -0.866         0 \r\n 2018          110           22.11         16.96        -3.378         0 \r\n 2018          111           12.25         18.22         4.826         0 \r\n 2018          112           21.26         22.41         7.4           0 \r\n 2018          113           18.34         22.33         7.782         0 \r\n 2018          114           24.42         24.72         3.442         0 \r\n 2018          115           22.37         19.77         5.219         0 \r\n 2018          116           23.57         22.62         2.026         0 \r\n 2018          117           23.18         25.63         2.633         0 \r\n 2018          118           26.95         16.97        -0.078         0 \r\n 2018          119           27.17         20.86         0.692         0 \r\n 2018          120           25.57         29.76         8.19          0 \r\n 2018          121           12.59         28.05         14.57         7.62 \r\n 2018          122           16.99         28.5          16.44         21.08 \r\n 2018          123           9.64          23.22         14.92         7.112 \r\n 2018          124           24.24         25.78         13.37         0 \r\n 2018          125           25.52         28.89         10            0 \r\n 2018          126           25.34         30.21         13.75         0 \r\n 2018          127           26.1          27.94         11.45         0 \r\n 2018          128           21.59         29.57         12.32         0 \r\n 2018          129           22.79         27.63         14.99         7.62 \r\n 2018          130           25.8          28.57         12.16         0 \r\n 2018          131           11.51         20.92         11.39         0.254 \r\n 2018          132           4.675         14.18         8.91          12.19 \r\n 2018          133           7.944         20.02         10.89         3.048 \r\n 2018          134           17.97         27.15         14.37         14.48 \r\n 2018          135           16.73         24.36         17.37         15.49 \r\n 2018          136           26.71         27.35         12.64         0 \r\n 2018          137           24.05         29.37         14.13         0 \r\n 2018          138           14.59         24.92         14.77         0 \r\n 2018          139           21.55         28.26         13.72         0 \r\n 2018          140           10.14         22.97         14.94         7.62 \r\n 2018          141           13.24         24.41         13.57         2.54 \r\n 2018          142           18.44         27.74         12.57         0 \r\n 2018          143           21.64         30.92         15.95         0 \r\n 2018          144           22.12         32.99         17.51         0 \r\n 2018          145           15.61         30.26         20.22         0 \r\n 2018          146           25.55         34.29         18.01         13.21 \r\n 2018          147           22.35         37.08         20.05         0 \r\n 2018          148           24.18         37.09         20.97         0 \r\n 2018          149           21.23         34.5          20.33         0 \r\n 2018          150           22.22         30.83         20.28         0 \r\n 2018          151           22.6          32.38         19.32         0 \r\n 2018          152           27            35.08         17.49         0 \r\n 2018          153           15.21         27.59         15.56         0.508 \r\n 2018          154           29.17         28.1          12.76         0 \r\n 2018          155           28.42         28.86         10.24         0 \r\n 2018          156           28.14         32.58         13.75         0 \r\n 2018          157           22.34         32.53         14.69         3.048 \r\n 2018          158           25.95         33.62         19.29         0 \r\n 2018          159           22.31         29.84         17.88         7.874 \r\n 2018          160           16.17         28.49         20.62         4.064 \r\n 2018          161           15.75         28.44         19.59         2.032 \r\n 2018          162           10.82         24.05         18.35         0 \r\n 2018          163           23.18         32.06         20.12         0 \r\n 2018          164           29.23         28.44         15.82         0 \r\n 2018          165           5.09          22.94         15.63         17.27 \r\n 2018          166           28.21         33.45         18.53         0 \r\n 2018          167           27.22         34.74         22.49         0 \r\n 2018          168           26.46         34.81         22.36         0 \r\n 2018          169           26.8          34.77         24.43         0 \r\n 2018          170           14.75         31.7          21.02         14.48001 \r\n 2018          171           17.29         30.83         20.4          23.61999 \r\n 2018          172           14.14         25.09         17.85         0.508 \r\n 2018          173           6.998         22.25         17.15         0.762 \r\n 2018          174           16.86         26.45         16.63         0 \r\n 2018          175           26.95         28.82         15.09         0 \r\n 2018          176           19.146        27.96         17.09         0 \r\n 2018          177           18.27         28.04         19.6          5.08 \r\n 2018          178           26.63         31.18         18.19         0 \r\n 2018          179           16.11         30.87         18.54         3.81 \r\n 2018          180           28.73         33.85         20.04         0 \r\n 2018          181           28.2          33.66         23.54         0 \r\n 2018          182           23.57         29.47         17.97         0.508 \r\n 2018          183           30.06         29.65         14.34         0 \r\n 2018          184           27.22         32.88         17.6          0 \r\n 2018          185           27.27         34.5          21.76         0 \r\n 2018          186           24.49         32.6          21.69         0 \r\n 2018          187           29.01         28.67         14.39         0 \r\n 2018          188           29.04         28.5          11.14         0 \r\n 2018          189           29.21         30.21         11.57         0 \r\n 2018          190           28.33         33.86         15.68         0 \r\n 2018          191           27.23         33.86         18.63         0 \r\n 2018          192           28.05         31.9          17.93         0 \r\n 2018          193           25.87         33.7          18.83         0 \r\n 2018          194           20.54         34.68         20.62         6.096 \r\n 2018          195           20.55         32.81         21.34         1.016 \r\n 2018          196           17.86         31.65         19.78         0 \r\n 2018          197           26.72         30.92         17.66         0 \r\n 2018          198           24.88         32.34         14.69         0 \r\n 2018          199           26.3          30.41         17.3          0 \r\n 2018          200           13.43         28.34         15.83         27.94 \r\n 2018          201           11.54         25.26         19.08         0 \r\n 2018          202           17.571        27.71         18.25         0 \r\n 2018          203           13.111        25.71         16.97         0 \r\n 2018          204           25.11         29.42         16.61         0 \r\n 2018          205           27.46         29.52         16.99         0 \r\n 2018          206           20.91         29.65         13.65         0.762 \r\n 2018          207           24.41         26.6          13.79         0.254 \r\n 2018          208           25.12         25.75         12.48         0 \r\n 2018          209           17.22         27.14         10.46         0 \r\n 2018          210           22.54         26.62         14.22         0 \r\n 2018          211           22.33         27.88         12.26         0 \r\n 2018          212           23.68         29.34         13.14         0 \r\n 2018          213           24.71         30.69         14.21         0 \r\n 2018          214           25.38         27.41         17.8          2.54 \r\n 2018          215           23.19         33.74         15.84         0 \r\n 2018          216           19.16         32.83         17.67         0 \r\n 2018          217           20.65         34.54         20.12         0 \r\n 2018          218           15.85         29.39         19.93         14.73 \r\n 2018          219           14.22         29.24         18.25         0.762 \r\n 2018          220           23.71         30.23         16.96         0 \r\n 2018          221           25.41         33.74         16.89         0 \r\n 2018          222           21.03         31.3          17.38         1.27 \r\n 2018          223           22.54         32.15         15.51         0 \r\n 2018          224           23.55         33.26         15.8          0 \r\n 2018          225           22.74         33.02         15.42         0 \r\n 2018          226           13.49         31.25         18.04         7.112 \r\n 2018          227           18.37         30.63         21.07         0 \r\n 2018          228           15.23         31.13         19.87         0 \r\n 2018          229           12.98         29.28         18.98         0.762 \r\n 2018          230           21.23         31.21         17.6          0 \r\n 2018          231           16.97         29.79         16.33         0 \r\n 2018          232           12.66         26.98         19.16         14.99 \r\n 2018          233           19.32         24.84         14.94         2.794 \r\n 2018          234           23.64         26.87         11.58         0 \r\n 2018          235           22.11         28.18         9.92          0 \r\n 2018          236           6.106         25.04         16.85         25.65 \r\n 2018          237           20.96         33.29         20.55         2.794 \r\n 2018          238           14.86         33.68         20.6          0 \r\n 2018          239           10.7          33.87         23.2          0 \r\n 2018          240           8.8           31.24         19.68         59.94 \r\n 2018          241           19.76         25            13.28         7.366 \r\n 2018          242           18.26         27.68         12.25         0 \r\n 2018          243           11.14         29.66         18.07         0 \r\n 2018          244           13.29         31.63         20.54         18.54 \r\n 2018          245           16.37         32.42         19.89         35.56 \r\n 2018          246           9.26          31.63         20.79         1.778 \r\n 2018          247           12.84         33.52         21.92         0 \r\n 2018          248           4.802         25.52         20.74         12.7 \r\n 2018          249           4.21          20.84         17.44         40.89 \r\n 2018          250           3.953         19.46         16.04         1.778 \r\n 2018          251           9.3           21.14         13.93         0 \r\n 2018          252           21.76         24.88         10.42         0 \r\n 2018          253           21.53         27.13         7.682         0 \r\n 2018          254           20.75         29.75         9.17          0 \r\n 2018          255           19.09         29.97         13.25         0 \r\n 2018          256           19.95         30.89         12.98         0 \r\n 2018          257           17.02         33.96         15.8          0 \r\n 2018          258           17.76         33.72         16.23         0 \r\n 2018          259           17.55         33.33         15.36         0 \r\n 2018          260           18.34         34.38         15.45         0 \r\n 2018          261           9.46          33.83         17.22         18.8 \r\n 2018          262           12            30.24         17.62         1.524 \r\n 2018          263           18.46         36.42         19.78         0 \r\n 2018          264           13.83         27.68         9.05          0.762 \r\n 2018          265           19.82         23.22         6.35          0 \r\n 2018          266           19.51         26.72         7.46          0 \r\n 2018          267           14.08         28.05         9.96          0 \r\n 2018          268           9.25          27.48         8.9           29.21 \r\n 2018          269           17.45         19.99         7.238         0 \r\n 2018          270           18.31         23.51         5.542         0 \r\n 2018          271           12.8          13.1          4.532         1.524 \r\n 2018          272           12.48         12.9          2.208         1.524 \r\n 2018          273           4.487         16.34         10.15         3.556 \r\n 2018          274           8.52          26.03         12.1          0 \r\n 2018          275           5.85          18.99         11.92         0 \r\n 2018          276           15.6          32.81         17.77         1.27 \r\n 2018          277           16.13         17.76         6.582         0 \r\n 2018          278           4.33          18.03         10.2          14.73 \r\n 2018          279           3.133         16.97         11.84         6.858 \r\n 2018          280           2.867         17.13         12.11         20.32 \r\n 2018          281           9.16          27.64         17.1          20.57 \r\n 2018          282           10.6          29.13         18.92         14.73 \r\n 2018          283           6.122         21.15         7.419         20.83 \r\n 2018          284           10.17         10.4          0.205         0 \r\n 2018          285           4.139         6.248         0.327         2.032 \r\n 2018          286           11.12         10.96         0.975         0 \r\n 2018          287           5.924         12.78         0.61          2.794 \r\n 2018          288           15.62         9.78         -0.674         1.524 \r\n 2018          289           15.68         18.37        -0.542         0 \r\n 2018          290           15.57         13.49        -0.826         0 \r\n 2018          291           15.06         18.55        -1.838         0 \r\n 2018          292           3.593         16.81         6.633         0.254 \r\n 2018          293           14.97         11.77        -3.145         0 \r\n 2018          294           14.64         14.09        -5.244         0 \r\n 2018          295           13.59         21.47         2.764         0 \r\n 2018          296           14.58         15.41        -1.009         0 \r\n 2018          297           13.32         15.19        -2.405         0 \r\n 2018          298           6.176         13.35         4.31          0 \r\n 2018          299           7.265         14.43         6.209         3.302 \r\n 2018          300           12.57         19.31         4.209         0 \r\n 2018          301           13.42         16.34         3.644         0 \r\n 2018          302           12.31         19.08        -0.644         0 \r\n 2018          303           3.276         17.72         9.03          0 \r\n 2018          304           6.719         15.04         6.814         0 \r\n 2018          305           5.124         13.15         2.522         0 \r\n 2018          306           7.007         14.59         1.338         0 \r\n 2018          307           3.76          10.97         3.34          2.286 \r\n 2018          308           1.209         12.04         6.067         34.04 \r\n 2018          309           3.903         9.78          4.532         4.064 \r\n 2018          310           4.409         9.03          0.368         0 \r\n 2018          311           5.025         2.168        -1.19          0 \r\n 2018          312           3.373         1.4          -1.343         0 \r\n 2018          313           7.197        -0.563        -7.76          0 \r\n 2018          314           10           -2.233        -11.92         0 \r\n 2018          315           10.07         6.956        -3.236         0.254 \r\n 2018          316           2.335         0.044        -7.15          0 \r\n 2018          317           11.23        -1.748        -9.57          0 \r\n 2018          318           11.09         4.209        -10.18         0 \r\n 2018          319           10.68         6.148        -9.69          0 \r\n 2018          320           5.86          7.44          0.692         0 \r\n 2018          321           2.415         1.439        -2.943         2.794 \r\n 2018          322           11.23        -1.353        -13.37         0.762 \r\n 2018          323           8.69          2.016        -12.51         0.508 \r\n 2018          324           7.984         0.762        -4.048         0 \r\n 2018          325           9.99          5.462        -5.142         0 \r\n 2018          326           9.88          12.32        -2.426         0 \r\n 2018          327           2.352         9.34          4.209         4.572 \r\n 2018          328           9.76          11.93         2.148         0 \r\n 2018          329           1             2.178        -2.274         3.048 \r\n 2018          330           6.437        -2.112        -8.1           0 \r\n 2018          331           9.69         -5.526        -13.54         0 \r\n 2018          332           5.857        -2.69         -14.49         0 \r\n 2018          333           6.925         3.572        -6.674         2.286 \r\n 2018          334           8.93          2.804        -6.764         2.032 \r\n 2018          335           2.058         3.856         1.137         8.64 \r\n 2018          336           2.535         5.138         0.661         22.86 \r\n 2018          337           3.24          0.873        -1.353         0 \r\n 2018          338           2.187        -1.232        -3.834         0 \r\n 2018          339           9.46          4.452        -6.248         0 \r\n 2018          340           7.826        -0.078        -9.4           0 \r\n 2018          341           9.01         -2.061        -12.62         0 \r\n 2018          342           8.94          0.246        -10.53         0 \r\n 2018          343           8.53          0.165        -12.82         0 \r\n 2018          344           8.51          3.956        -10.09         0 \r\n 2018          345           8.39          9.09         -4.554         0 \r\n 2018          346           4.095         5.3          -3.804         0 \r\n 2018          347           1.94          2.936        -4.675         0 \r\n 2018          348           2.393         2.188        -4.716         0 \r\n 2018          349           9.36          10.57        -6.38          0 \r\n 2018          350           7.896         9.94         -3.541         0 \r\n 2018          351           9.01          9.75         -4.168         0 \r\n 2018          352           8.48          11.27        -3.186         0 \r\n 2018          353           4.403         11.79         2.3           0 \r\n 2018          354           1.319         7.762         0.67          0 \r\n 2018          355           1.844         0.732        -2.588         0 \r\n 2018          356           5.892         2.855        -6.846         0 \r\n 2018          357           9             4.856        -5.497         0 \r\n 2018          358           6.39          4.594        -9.71          0 \r\n 2018          359           8.91          10.41        -2.528         0 \r\n 2018          360           2.316         4.795        -4.23          0 \r\n 2018          361           1.616         11.9          4.27          28.19 \r\n 2018          362           1.484         4.976        -7.718         3.81 \r\n 2018          363           3.1          -4.756        -8.85          0 \r\n 2018          364           9.26          4.604        -8.63          0 \r\n 2018          365           1             2.612         0.408         0 \r\n 2019          1             1.87          0.518        -6.217         0 \r\n 2019          2             4.115        -1.13         -6.319         0 \r\n 2019          3             9.29          7.814        -5.548         0 \r\n 2019          4             8.97          9.17         -3.358         0 \r\n 2019          5             9.24          12.92        -1.009         0 \r\n 2019          6             4.608         7.118        -0.461         1.778 \r\n 2019          7             5.137         14.64         2.35          7.62 \r\n 2019          8             9.55          7.752        -2.446         0 \r\n 2019          9             9.62         -2.405        -9.08          0 \r\n 2019          10            9.23         -0.907        -10.18         0 \r\n 2019          11            3.022         0.469        -7.292         0 \r\n 2019          12            4.466        -0.806        -2.172         13.716 \r\n 2019          13            7.086         0.458        -9             1.524 \r\n 2019          14            5.391        -2.345        -9.06          0 \r\n 2019          15            5.223         1.238        -2.82          2.032 \r\n 2019          16            5.094         1.268        -2.568         0.254 \r\n 2019          17            5.22          0.954        -2.953         0 \r\n 2019          18            4.28         -1.576        -4.594         5.334 \r\n 2019          19            9.43         -4.087        -17.62         0 \r\n 2019          20            7.592        -10.49        -20.09         0 \r\n 2019          21            7.488        -8.01         -20.95         0 \r\n 2019          22            2.518         0.044        -8.93          3.81 \r\n 2019          23            9.83         -2.953        -15.5          3.81 \r\n 2019          24            9.94         -5.598        -19.52         0 \r\n 2019          25            6.658        -11.75        -23.87         0 \r\n 2019          26            6.17         -8.61         -26.75         0 \r\n 2019          27            8.35         -6.592        -22.07         0 \r\n 2019          28            7.267         2.956        -17.13         3.302 \r\n 2019          29            11.29        -14.81        -25.23         0 \r\n 2019          30            12.46        -22.29        -29.82         0 \r\n 2019          31            6.794        -16.16        -30.94         0 \r\n 2019          32            11.83        -6.876        -19.62         0 \r\n 2019          33            10.38         6.178        -7.495         0.762 \r\n 2019          34            5.518         7.49          3.098         0 \r\n 2019          35            3.932         8.95         -8.43          0 \r\n 2019          36            5.254        -0.826        -9.79          9.144 \r\n 2019          37            4.037        -0.006        -3.216         0.254 \r\n 2019          38            6.23          0.246        -14.51         9.906 \r\n 2019          39            16.63        -10.97        -16.94         0 \r\n 2019          40            14.07        -4.33         -14.67         0 \r\n 2019          41            5.311        -1.697        -4.392         4.318 \r\n 2019          42            5.567         0.205        -3.206         18.034 \r\n 2019          43            11            0.104        -11.05         3.81 \r\n 2019          44            14.08         1.844        -13.27         0 \r\n 2019          45            12.34         7.318        -12.46         9.91 \r\n 2019          46            7.136        -10.72        -15.99         0 \r\n 2019          47            14.41        -1.656        -14.96         0 \r\n 2019          48            7.084        -2.162        -5.244         1.524 \r\n 2019          49            15.11        -4.189        -15.65         0.254 \r\n 2019          50            11.5         -2.304        -17.5          0 \r\n 2019          51            6.03          2.087        -4.918         2.54 \r\n 2019          52            13.61         0.165        -9.01          0 \r\n 2019          53            15.19         2.836        -9.91          0.254 \r\n 2019          54            4.002         4.552         0.732         38.35 \r\n 2019          55            13.68         2.106        -12.66         0 \r\n 2019          56            10.46        -7.739        -15.25         0 \r\n 2019          57            8.6          -1.98         -9.61          0 \r\n 2019          58            11.43        -3.784        -12.51         0 \r\n 2019          59            9.95         -4.128        -12.82         0 \r\n 2019          60            15.02         4.775        -7.495         0 \r\n 2019          61            11.09        -0.694        -7.668         0 \r\n 2019          62            14.32        -7.252        -18.31         0 \r\n 2019          63            17.27        -9.85         -19.03         0 \r\n 2019          64            16.38        -6.643        -12.55         0 \r\n 2019          65            15.79         1.52         -12.53         0 \r\n 2019          66            6.729        -3.723        -7.232         4.826 \r\n 2019          67            8.41          2.512        -3.713         0.762 \r\n 2019          68            1.639         2.814         0.832         23.88 \r\n 2019          69            18.39         2.633        -1.566         0 \r\n 2019          70            17.43         7.712        -1.484         0 \r\n 2019          71            6.786         6.29         -1.312         6.858 \r\n 2019          72            5.382         14.61         4.674         0.762 \r\n 2019          73            5.311         13.77         2.087         0 \r\n 2019          74            15.65         7.338        -1.353         0 \r\n 2019          75            15.88         9.58         -3.784         0 \r\n 2019          76            18.79         7.076        -2.041         0 \r\n 2019          77            18.13         8.8          -3.864         0 \r\n 2019          78            15.68         11.87        -1.859         0.762 \r\n 2019          79            14.35         11.9          1.763         4.064 \r\n 2019          80            19.66         12.07        -0.047         0 \r\n 2019          81            20.73         14.08        -0.837         0 \r\n 2019          82            16.59         14.63        -1.92          0 \r\n 2019          83            5.614         12.78         6.067         2.794 \r\n 2019          84            16.61         9.94         -1.262         0 \r\n 2019          85            21.71         12.08        -5.122         0 \r\n 2019          86            17.21         19.12         2.208         0 \r\n 2019          87            10.18         17.6          8.81          0 \r\n 2019          88            9.85          15            4.452         7.874 \r\n 2019          89            10.06         7.419        -2.69          3.81 \r\n 2019          90            22.52         6.834        -6.115         0 \r\n 2019          91            21.04         13.59         0.185         0 \r\n 2019          92            16.31         10.95         0.003         0 \r\n 2019          93            11            14.39        -1.15          0.254 \r\n 2019          94            6.91          10.24         6.784         1.016 \r\n 2019          95            8.45          15.44         5.754         0.254 \r\n 2019          96            20.84         23.23         1.692         0 \r\n 2019          97            11.73         23.71         12.36         3.302 \r\n 2019          98            22.61         26.05         5.966         0 \r\n 2019          99            19.17         21.33         5.462         0.254 \r\n 2019          100           8.72          9.88          4.512         6.604 \r\n 2019          101           4.483         15.98         4.956         2.032 \r\n 2019          102           14.72         9.09         -1.19          0 \r\n 2019          103           22.67         13.59        -2.446         0 \r\n 2019          104           15.16         8.65         -1.454         0 \r\n 2019          105           15.52         17.74        -2.872         0 \r\n 2019          106           18.8          26.26         10.2          0.508 \r\n 2019          107           12.75         26.45         11.26         0 \r\n 2019          108           10.56         14.22         7.198         0 \r\n 2019          109           25.54         18.44         3.026         0 \r\n 2019          110           25.55         22.96        -1.14          0 \r\n 2019          111           23.78         30.61         7.742         0 \r\n 2019          112           15.75         27.9          11.35         0 \r\n 2019          113           13.56         17.51         7.804         0 \r\n 2019          114           13.76         19.5          4.976         0.254 \r\n 2019          115           14.31         24.05         6.572         11.94 \r\n 2019          116           26.23         18.09         5.886         0 \r\n 2019          117           1.725         11.71         1.966         4.826 \r\n 2019          118           17.16         14.11        -1.392         7.112 \r\n 2019          119           8.3           16.29         8.07          38.86 \r\n 2019          120           4.253         11.96         8.85          36.83 \r\n 2019          121           9.03          14.8          8.05          0.762 \r\n 2019          122           8.49          15.9          8.86          13.97 \r\n 2019          123           12.16         13.79         5.664         0 \r\n 2019          124           25.88         19.92         3.31          0 \r\n 2019          125           22.26         24.39         8.53          0 \r\n 2019          126           18.06         23.76         13.03         1.524 \r\n 2019          127           8.45          15.67         10.12         0.254 \r\n 2019          128           7.217         22.93         7.59          3.556 \r\n 2019          129           9.31          16.81         6.572         0 \r\n 2019          130           23.27         18.99         2.826         0 \r\n 2019          131           6.9           12.28         5.138         1.778 \r\n 2019          132           7.164         10.91         5.442         3.048 \r\n 2019          133           23.93         19.79         3.522         0 \r\n 2019          134           5.735         15.23         6.905         6.858 \r\n 2019          135           23.36         26.44         8.71          0.254 \r\n 2019          136           20.32         33.62         14.56         13.21 \r\n 2019          137           9.7           26.25         14.47         32 \r\n 2019          138           8.5           24.67         12.54         28.96 \r\n 2019          139           10.71         20.02         10.06         3.048 \r\n 2019          140           10.426        13.14         5.562         5.842 \r\n 2019          141           4.39          14.67         7.632         17.27 \r\n 2019          142           24.33         26.33         14.23         0.762 \r\n 2019          143           25.57         24.29         11.63         0 \r\n 2019          144           14.81         28.8          14.52         12.95 \r\n 2019          145           18.538        27.72         18.32         9.4 \r\n 2019          146           17.957        27.67         17.42         14.48 \r\n 2019          147           12.82         26.14         19.06         12.19 \r\n 2019          148           7.688         20.65         13.03         50.29 \r\n 2019          149           15.69         24.97         16.24         14.73 \r\n 2019          150           20.84         23.97         15.66         1.27 \r\n 2019          151           21.75         27.48         13.99         0 \r\n 2019          152           20.87         28.02         17.44         0 \r\n 2019          153           27.28         25.52         12.69         0 \r\n 2019          154           20.54         27.75         12.91         2.032 \r\n 2019          155           19.83         29.47         17.17         1.016 \r\n 2019          156           22            31.24         18.75         5.588 \r\n 2019          157           21.62         32.16         18.32         0 \r\n 2019          158           26.52         30.73         18.43         0 \r\n 2019          159           27.74         31.56         15.5          0 \r\n 2019          160           23.52         31.51         17.43         0 \r\n 2019          161           26.83         28.23         13.57         0 \r\n 2019          162           22.75         29.3          11.32         0 \r\n 2019          163           13.24         22.41         12.23         3.048 \r\n 2019          164           28.28         24.6          10.1          0 \r\n 2019          165           15.67         26.13         13.61         0 \r\n 2019          166           11.7          28.33         18.3          34.54 \r\n 2019          167           17.67         23.84         16.93         0 \r\n 2019          168           13.06         23.65         15.84         0 \r\n 2019          169           20.41         27.69         12.8          0 \r\n 2019          170           5.585         21.5          17.83         10.16 \r\n 2019          171           24.05         27.85         14.82         0.254 \r\n 2019          172           6.442         22.09         16.2          3.81 \r\n 2019          173           14.6          26.03         16.93         5.334 \r\n 2019          174           18.23         26.74         20            3.81 \r\n 2019          175           20.087        25.41         18.18         0 \r\n 2019          176           25.11         30.16         17.12         0 \r\n 2019          177           24.77         32.43         18.29         0 \r\n 2019          178           24.81         34.28         20.07         3.302 \r\n 2019          179           7.593         27.64         20.58         0.254 \r\n 2019          180           25.07         35.31         20.83         0 \r\n 2019          181           23.28         34.45         20.87         7.112 \r\n 2019          182           12.69         33.53         24.74         0 \r\n 2019          183           25.02         34.58         23.17         0 \r\n 2019          184           24.06         35.06         21.72         0 \r\n 2019          185           23.84         33.09         22.08         0 \r\n 2019          186           25.94         34.66         21.71         1.778 \r\n 2019          187           24.58         32.07         21.86         0 \r\n 2019          188           27.15         29.83         19.84         0 \r\n 2019          189           27.25         30.31         18.21         0 \r\n 2019          190           21.62         32.75         20.14         0 \r\n 2019          191           26.06         31.95         22.33         0 \r\n 2019          192           22.8          30.31         18.64         0 \r\n 2019          193           27.62         32.29         15.62         0 \r\n 2019          194           23.69         34.07         19.93         0 \r\n 2019          195           24.16         33.78         23.48         0 \r\n 2019          196           26.61         31.6          19.82         0 \r\n 2019          197           17.05         31.47         19.59         0 \r\n 2019          198           14.55         32.89         20.4          30.23 \r\n 2019          199           24.51         33.55         22.38         0 \r\n 2019          200           26.68         34.72         26.06         0 \r\n 2019          201           26.66         35.13         23.22         0.762 \r\n 2019          202           16.96         28.62         20.66         0 \r\n 2019          203           25.68         27.68         14.29         0 \r\n 2019          204           25.29         28.23         12.96         0 \r\n 2019          205           22.87         31.42         15.4          0 \r\n 2019          206           20.16         29.21         15.55         0 \r\n 2019          207           20.79         30.18         20.12         0.762 \r\n 2019          208           21.42         31.91         19.17         0 \r\n 2019          209           23.11         31.77         19.82         0.508 \r\n 2019          210           20.75         29.64         17.93         1.27 \r\n 2019          211           26.07         27.12         14.47         0 \r\n 2019          212           25.21         27.55         12.12         0 \r\n 2019          213           26.67         28.27         14.31         0 \r\n 2019          214           24.19         29.15         12.38         0 \r\n 2019          215           24.83         31.36         16.79         0 \r\n 2019          216           23.97         33.92         16.18         0 \r\n 2019          217           22.06         30.89         16.96         2.794 \r\n 2019          218           23.06         29.34         17.19         3.302 \r\n 2019          219           25.02         30.48         15.99         0.508 \r\n 2019          220           20.83         28.84         16.95         0 \r\n 2019          221           26.03         27.87         12.93         0.254 \r\n 2019          222           21.92         28.73         16.29         0 \r\n 2019          223           13.57         29.47         20.09         0.254 \r\n 2019          224           9.3           28.79         19.4          3.81 \r\n 2019          225           13.63         29.18         19.77         0 \r\n 2019          226           20.525        25.22         16.91         0 \r\n 2019          227           18.56         26.54         13.93         0.254 \r\n 2019          228           19.09         28.72         17.89         3.048 \r\n 2019          229           18.68         28.04         20.5          4.318 \r\n 2019          230           16.57         29.57         18.21         4.318 \r\n 2019          231           20.96         30.46         20.26         0 \r\n 2019          232           15.82         28.98         19.6          14.99 \r\n 2019          233           7.705         25.25         18.75         1.524 \r\n 2019          234           21.79         26.19         14.92         0 \r\n 2019          235           22.3          26            13.51         0 \r\n 2019          236           19.91         24.86         12.58         0 \r\n 2019          237           10.27         23.05         14.37         12.45 \r\n 2019          238           7.054         22.83         17.44         4.318 \r\n 2019          239           23.9          25.99         13.95         0 \r\n 2019          240           23.53         25.77         12.9          0 \r\n 2019          241           14.59         29.52         13.81         0 \r\n 2019          242           15.36         23.17         12.33         0 \r\n 2019          243           11.47         22.2          11.82         4.572 \r\n 2019          244           12.29         26.11         16.45         0.254 \r\n 2019          245           19.22         28.89         16.12         0 \r\n 2019          246           18.11         31.5          17.26         0 \r\n 2019          247           21.61         23.97         11.98         0 \r\n 2019          248           20.75         26.5          9.34          0 \r\n 2019          249           21.24         26.84         13            0 \r\n 2019          250           17.96         27.32         10.34         3.556 \r\n 2019          251           9.94          21.24         15.82         17.02 \r\n 2019          252           14.11         30.33         18.2          1.778 \r\n 2019          253           13.11         29.9          22.51         2.794 \r\n 2019          254           18.3          32.19         22.59         0 \r\n 2019          255           17.36         32.59         20.86         5.842 \r\n 2019          256           16.61         23.05         13            0 \r\n 2019          257           16.98         27.69         12.82         0 \r\n 2019          258           16.23         31.64         19.74         6.858 \r\n 2019          259           18.4          30.78         19.2          0 \r\n 2019          260           18.6          28.6          18.13         0 \r\n 2019          261           18.3          31.96         18.89         0 \r\n 2019          262           10.28         26.25         20.3          0 \r\n 2019          263           17.49         32.58         20.14         0.762 \r\n 2019          264           4.165         26.03         21.78         18.29 \r\n 2019          265           4.179         23.17         14.35         19.56 \r\n 2019          266           19.62         26.68         10.63         0 \r\n 2019          267           19.2          28.72         13.89         0 \r\n 2019          268           18.28         26.74         15.85         0 \r\n 2019          269           18.79         25.28         9.45          0 \r\n 2019          270           6.374         28            16.64         11.68 \r\n 2019          271           4.298         19.1          14.49         23.11 \r\n 2019          272           2.63          21.3          13.12         8.64 \r\n 2019          273           16.33         32.43         19.2          0 \r\n 2019          274           12.78         32.51         21.28         0 \r\n 2019          275           6.75          25.96         16.97         8.89 \r\n 2019          276           12.81         17.81         6.209         0 \r\n 2019          277           15.05         17.69         3.017         0 \r\n 2019          278           3.012         15.98         8.95          10.16 \r\n 2019          279           6.813         17.35         6.37          0 \r\n 2019          280           17.26         22.52         5.038         0 \r\n 2019          281           16.86         23.07         6.057         0 \r\n 2019          282           11.9          22.09         8.59          0 \r\n 2019          283           4.328         20.2          11.94         5.08 \r\n 2019          284           6.708         11.9          1.662         0.254 \r\n 2019          285           16.23         17.38        -0.938         0 \r\n 2019          286           15.27         14.49        -1.009         0 \r\n 2019          287           15.81         17.78        -1.312         0 \r\n 2019          288           12.65         19.46         6.442         0 \r\n 2019          289           6.093         11.47         2.026         0 \r\n 2019          290           14.95         17.17        -1.494         0 \r\n 2019          291           13.67         21.13         5.744         0 \r\n 2019          292           4.518         15.73         4.674         1.016 \r\n 2019          293           13.25         18.77         2.826         0 \r\n 2019          294           9.75          15.9          8.86          6.858 \r\n 2019          295           10.61         14.13         2.804         0 \r\n 2019          296           9.02          16.38         1.551         0 \r\n 2019          297           9.47          10.68        -0.866         0 \r\n 2019          298           9.26          12.05        -1.768         0 \r\n 2019          299           4.265         9.94         -1.879         0 \r\n 2019          300           13.29         15.28         0.226         0 \r\n 2019          301           3.247         6.814         0.226         5.588 \r\n 2019          302           13.62         5.421        -4.756         4.572 \r\n 2019          303           3.537         3.584        -1.94          0 \r\n 2019          304           11.22         1.986        -5             6.604 \r\n 2019          305           7.772         5.856        -5.598         1.016 \r\n 2019          306           10.37         8.91         -0.694         0 \r\n 2019          307           10.06         13.67         0.53          0 \r\n 2019          308           6.953         8.63         -0.684         0 \r\n 2019          309           11.81         7.662        -3.57          0 \r\n 2019          310           10.88         15.18        -1.353         0 \r\n 2019          311           11.84        -0.118        -9.28          0 \r\n 2019          312           9.77          2.734        -11.66         0 \r\n 2019          313           10.8          14.56        -1.92          0 \r\n 2019          314           8.06          7.814         0.722         0 \r\n 2019          315           6.794         0.732        -13.03         0 \r\n 2019          316           11.73        -6.076        -17.39         0 \r\n 2019          317           5.755         0.165        -10.3          0 \r\n 2019          318           9.34         -0.37         -8.94          0 \r\n 2019          319           10.47         12.69        -8.69          0 \r\n 2019          320           9.84          8.05         -4.168         0 \r\n 2019          321           2.66          6.128         0.651         1.27 \r\n 2019          322           5.319         5.128         0.67          0.254 \r\n 2019          323           4.275         10.76        -0.542         0.508 \r\n 2019          324           7.959         13.69        -2.021         1.524 \r\n 2019          325           1.966         12.97        -0.573         5.08 \r\n 2019          326           7.807         2.532        -3.956         0 \r\n 2019          327           7.266         8.35         -3.499         0 \r\n 2019          328           9.37          14.7         -1.252         0 \r\n 2019          329           7.618         13.08        -0.32          0 \r\n 2019          330           1.638         11.74        -1.11          4.572 \r\n 2019          331           3.729         10.68        -0.553         0 \r\n 2019          332           2.471         0.975        -0.786         0.254 \r\n 2019          333           2.614         3.724         0.044         11.68 \r\n 2019          334           1.013         7.843         2.552         4.318 \r\n 2019          335           1.601         3.542        -0.057         0 \r\n 2019          336           6.495         1.642        -3.814         0 \r\n 2019          337           7.923         9.92         -2.325         0 \r\n 2019          338           9.04          10.19        -1.859         0 \r\n 2019          339           8.72          14.55        -3.439         0 \r\n 2019          340           8.4           5.522        -6.42          0 \r\n 2019          341           7.977         6.471        -6.906         0 \r\n 2019          342           4.36          10.08         0.489         0 \r\n 2019          343           1.761         8.27         -10.32         0 \r\n 2019          344           6.48         -4.22         -13.33         0 \r\n 2019          345           7.187        -1.434        -11.33         0 \r\n 2019          346           1.596         8.65         -7.282         0 \r\n 2019          347           4.003         2.774        -4.412         0 \r\n 2019          348           2.97         -0.036        -11.31         0 \r\n 2019          349           3.443        -6.258        -13.23         4.064 \r\n 2019          350           5.498        -2.446        -9             0 \r\n 2019          351           3.714        -2.244        -10.16         0 \r\n 2019          352           7.962        -3.682        -14.18         0.254 \r\n 2019          353           8.71          7.46         -7.598         0.508 \r\n 2019          354           6.818         8.06         -2.548         0 \r\n 2019          355           8.28          11.16        -3.996         0 \r\n 2019          356           8.32          12.9         -1.382         0 \r\n 2019          357           7.702         12.19        -0.725         0 \r\n 2019          358           7.24          15.66        -2.366         0 \r\n 2019          359           7.493         17.78         4.724         0 \r\n 2019          360           1.906         9.09          0.104         0 \r\n 2019          361           7.861         7.4          -1.028         0 \r\n 2019          362           1.115         14.37         1.449         21.34 \r\n 2019          363           5.47          14.43         1.42          0.254 \r\n 2019          364           1.525         1.47         -2.538         0 \r\n 2019          365           4.117         2.016        -5.416         0 \r\n 2020          1             8.76          9.65         -7.292         0 \r\n 2020          2             9.88416       11.6          0.873         0 \r\n 2020          3             2.361312      2.309        -0.502         0 \r\n 2020          4             3.033504      1.106        -5.74          0 \r\n 2020          5             7.36992       8.43         -3.804         0 \r\n 2020          6             5.655744      5.926        -5.516         0 \r\n 2020          7             7.70688       5.128        -4.006         0 \r\n 2020          8             7.56864      -0.988        -9.67          0 \r\n 2020          9             5.843232      15.94        -2             0 \r\n 2020          10            1.854144      2.855        -2.71          10.414 \r\n 2020          11            3.016224     -0.482        -5.04          6.35 \r\n 2020          12            5.018976     -1.626        -6.866         0 \r\n 2020          13            4.001184      1.338        -1.656         1.524 \r\n 2020          14            8.44992       3.34         -3.034         0.254 \r\n 2020          15            2.057184      0.813        -11.94         1.016 \r\n 2020          16            9.68544      -8.73         -16.12         0 \r\n 2020          17            1.696896     -0.016        -11.49         14.478 \r\n 2020          18            7.02432       1.46         -17.22         0 \r\n 2020          19            7.40448      -12.94        -18.56         0 \r\n 2020          20            7.57728      -9.69         -17.68         0 \r\n 2020          21            8.62272      -4.463        -19.09         0 \r\n 2020          22            5.08032      -0.229        -4.574         5.588 \r\n 2020          23            5.036256      1.5          -0.866         8.382 \r\n 2020          24            5.718816      1.176        -0.036         4.064 \r\n 2020          25            7.61184       1.52         -4.878         0 \r\n 2020          26            6.9984       -1.666        -10.39         0 \r\n 2020          27            5.190048      0.57         -3.246         0 \r\n 2020          28            5.764608     -3.257        -5.832         0 \r\n 2020          29            7.0848       -1.363        -5.952         0 \r\n 2020          30            6.61824      -0.968        -4.33          0 \r\n 2020          31            7.4304        2.188        -4.168         0.254 \r\n 2020          32            8.91648       3.946         0.832         0 \r\n 2020          33            12.01824      11.59        -0.928         0 \r\n 2020          34            9.77184       5.38         -1.048         0 \r\n 2020          35            6.42384       2.178        -2.446         0 \r\n 2020          36            2.552256     -2            -4.371         0 \r\n 2020          37            12.45888      2.946        -8.67          0 \r\n 2020          38            7.28352       1.591        -7.658         0 \r\n 2020          39            11.72448      0.246        -7.13          0 \r\n 2020          40            1.855008      4.997        -4.068         1.27 \r\n 2020          41            10.56672      4.008        -4.838         0 \r\n 2020          42            10.73952      1.945        -4.382         0 \r\n 2020          43            2.945376      1.601        -6.978         4.826 \r\n 2020          44            12.64896     -6.928        -21.09         0 \r\n 2020          45            14.73984     -8.94         -23.05         0 \r\n 2020          46            9.42624       5.32         -8.94          0.762 \r\n 2020          47            12.68352      6.814        -6.552         0 \r\n 2020          48            3.773088      5.704         0.408         2.54 \r\n 2020          49            14.76576      2.046        -4.483         0 \r\n 2020          50            13.05504     -1.332        -9.89          0 \r\n 2020          51            14.89536     -4.594        -14.34         0 \r\n 2020          52            15.10272      4.997        -12.33         0 \r\n 2020          53            14.71392      12.46        -3.834         0 \r\n 2020          54            15.13728      16.42        -0.856         0 \r\n 2020          55            5.035392      5.764         0.813         0 \r\n 2020          56            8.53632       5.18          0.094         0 \r\n 2020          57            10.63584      2.734        -6.238         0 \r\n 2020          58            13.88448      3.714        -6.329         0 \r\n 2020          59            7.344         1.814        -8.66          0 \r\n 2020          60            16.07904      7.46         -11.31         0 \r\n 2020          61            11.98368      18.5          0.954         0 \r\n 2020          62            8.73504       5.067        -3.257         0 \r\n 2020          63            16.87392      12.04        -2.162         0 \r\n 2020          64            16.8048       12.04        -1.554         0 \r\n 2020          65            13.8672       12.74         1.176         0 \r\n 2020          66            18.03168      9.43         -2.345         0 \r\n 2020          67            16.85664      16.98        -2.304         0 \r\n 2020          68            17.05536      22.52         5.785         0 \r\n 2020          69            1.185408      15.7          2.401         37.592 \r\n 2020          70            16.56288      10.41         0.346         0.254 \r\n 2020          71            6.94656       11.03         3.138         0 \r\n 2020          72            7.28352       16.14         1.864         0 \r\n 2020          73            16.18272      10.43        -0.846         0 \r\n 2020          74            3.877632      4.633         0.024         6.35 \r\n 2020          75            8.83872       3.584        -2.162         0 \r\n 2020          76            4.823712      6.743         0.944         0.254 \r\n 2020          77            18.7488       10.52        -1.758         0 \r\n 2020          78            3.012768      8.9           5.34          13.97 \r\n 2020          79            3.307392      18.23         7.44          2.794 \r\n 2020          80            6.854976      7.44         -0.33          1.524 \r\n 2020          81            13.55616      4.643        -1.332         0 \r\n 2020          82            4.987872      1.217        -2.142         2.54 \r\n 2020          83            8.9424        5.734        -0.704         1.016 \r\n 2020          84            11.81088      10.19         0.944         0 \r\n 2020          85            8.47584       13.88         0.864         0 \r\n 2020          86            4.394304      11.4          6.521         0.254 \r\n 2020          87            3.640032      12.14         6.128         7.366 \r\n 2020          88            12.59712      22.31         9.82          8.128 \r\n 2020          89            9.59904       13.27         3.036         0 \r\n 2020          90            21.78144      17.29         0.53          0 \r\n 2020          91            18.13536      13.58        -0.522         0 \r\n 2020          92            18.51552      16.1         -1.292         0 \r\n 2020          93            11.42208      18.82         6.834         9.906 \r\n 2020          94            4.184352      12.05        -0.542         1.27 \r\n 2020          95            17.70336      11.86        -1.778         0 \r\n 2020          96            21.14208      16.61         2.288         0 \r\n 2020          97            10.18656      18.82         4.856         0 \r\n 2020          98            16.72704      26.24         12.88         0 \r\n 2020          99            19.10304      26.94         4.956         0 \r\n 2020          100           17.13312      11.63        -0.159         0 \r\n 2020          101           22.14432      12.9         -2.69          0 \r\n 2020          102           11.12832      20.49         4.209         0 \r\n 2020          103           13.3056       20.64         1.318         8.636 \r\n 2020          104           21.82464      6.875        -3.135         0 \r\n 2020          105           20.6496       7.076        -5.04          0 \r\n 2020          106           21.7728       4.856        -7.921         3.048 \r\n 2020          107           12.8304       6.592        -4.21          6.35 \r\n 2020          108           17.95392      7.782         0.044         3.302 \r\n 2020          109           24.80544      16.5         -0.219         0 \r\n 2020          110           24.03648      18.05         3.422         0 \r\n 2020          111           14.67936      20.11         1.147         0 \r\n 2020          112           25.56576      15.94         1.702         0 \r\n 2020          113           17.68608      26.54         5.219         0 \r\n 2020          114           20.18304      23.87         9.2           0 \r\n 2020          115           10.2816       14.3          9.42          2.286 \r\n 2020          116           14.04         16.63         4.643         2.794 \r\n 2020          117           25.0992       22.22         0.388         0 \r\n 2020          118           15.10272      25.22         8.62          0.254 \r\n 2020          119           13.80672      24.83         10.36         0 \r\n 2020          120           3.112128      14.35         8.28          3.556 \r\n 2020          121           26.84448      22.78         6.057         0 \r\n 2020          122           17.55648      24.86         5.39          0 \r\n 2020          123           15.35328      25.67         11.77         0.254 \r\n 2020          124           18.16128      25.47         11.84         0 \r\n 2020          125           10.30752      16.08         7.814         3.048 \r\n 2020          126           3.424896      8.61          5.018         7.112 \r\n 2020          127           21.62592      18.35         3.28          0 \r\n 2020          128           20.16576      20.21         6.652         0 \r\n 2020          129           27.40608      13.63         1.744         0 \r\n 2020          130           26.96544      19.52        -2.446         0.508 \r\n 2020          131           10.48032      13.17         5.684         0.762 \r\n 2020          132           15.30144      13.96         2.309         0 \r\n 2020          133           20.05344      18.34         1.749         0 \r\n 2020          134           10.86048      15.72         5.542         0 \r\n 2020          135           12.16512      24.97         12.25         47.244 \r\n 2020          136           23.62176      23.17         13.45         1.778 \r\n 2020          137           16.56288      24.05         10.96         0.254 \r\n 2020          138           12.1392       19.7          13.53         6.858 \r\n 2020          139           8.60544       15.72         11.59         3.81 \r\n 2020          140           8.64          15.6          11.34         0 \r\n 2020          141           7.56          17.92         13.74         0 \r\n 2020          142           9.79776       17.92         12.64         0.254 \r\n 2020          143           12.40704      23.4          13.69         0 \r\n 2020          144           18.71424      25.42         15.7          0 \r\n 2020          145           18.23904      30.36         14.48         0.508 \r\n 2020          146           21.13344      31.62         18.15         1.27 \r\n 2020          147           21.53088      31.21         18.74         6.35 \r\n 2020          148           12.9168       26.62         20.45         1.016 \r\n 2020          149           5.234112      22.78         16.75         27.178 \r\n 2020          150           25.3584       20.71         11.67         0 \r\n 2020          151           28.49472      24.41         9.66          0 \r\n 2020          152           26.66304      25.72         10.42         0 \r\n 2020          153           18.20448      28.57         17.77         0 \r\n 2020          154           25.51392      33.47         19.62         0 \r\n 2020          155           16.36416      30.89         20.82         3.048 \r\n 2020          156           24.14016      33.74         19.67         0 \r\n 2020          157           19.1376       32.65         18.39         5.588 \r\n 2020          158           26.84448      28.93         18.27         0 \r\n 2020          159           28.04544      30            19            0 \r\n 2020          160           28.4256       34.45         19.66         0 \r\n 2020          161           4.110048      25.7          20.38         56.388 \r\n 2020          162           18.67968      23.29         15.81         0.508 \r\n 2020          163           28.93536      27.95         13.09         0 \r\n 2020          164           29.15136      30.56         13.78         0 \r\n 2020          165           27.29376      25.76         14.1          0 \r\n 2020          166           27.25056      26.5          13.79         0 \r\n 2020          167           26.73216      28.18         14.68         0 \r\n 2020          168           29.27232      29.35         14.88         0 \r\n 2020          169           28.58112      30.4          14.99         0 \r\n 2020          170           26.54208      31.42         16.43         0 \r\n 2020          171           9.10656       27.38         19.94         10.922 \r\n 2020          172           14.69664      28.28         19.08         7.62 \r\n 2020          173           24.14016      30.84         17.73         0.254 \r\n 2020          174           7.62048       23.8          14.82         39.116 \r\n 2020          175           19.50048      24.88         14.05         0 \r\n 2020          176           24.28704      27.53         14.33         0.508 \r\n 2020          177           26.90496      29.95         14.59         9.398 \r\n 2020          178           15.41376      31.33         21.27         48.26 \r\n 2020          179           16.99488      29.95         20.61         3.81 \r\n 2020          180           15.10272      29.62         19.54         16.51 \r\n 2020          181           22.87008      31.95         23.52         0 \r\n 2020          182           10.67904      27.2          20.77         0 \r\n 2020          183           9.09792       27.21         20.5          5.334 \r\n 2020          184           21.2976       31.35         20.43         0 \r\n 2020          185           22.09248      31.29         20            0 \r\n 2020          186           23.65632      33.2          19.47         0 \r\n 2020          187           22.60224      34.28         20            0 \r\n 2020          188           23.99328      34.16         19.83         0 \r\n 2020          189           22.44672      34.11         20            61.976 \r\n 2020          190           21.67776      34.19         22            0 \r\n 2020          191           18.69696      32.63         20.29         10.16 \r\n 2020          192           24.64128      30.98         18.48         0 \r\n 2020          193           22.41216      32.5          18.49         0 \r\n 2020          194           24.13152      30.15         17.31         0 \r\n 2020          195           24.7104       30.67         16.06         0 \r\n 2020          196           18.85248      30.92         18.78         0 \r\n 2020          197           5.532192      25.34         17.48         38.1 \r\n 2020          198           20.62368      31.02         16.79         0 \r\n 2020          199           21.99744      31.84         17.73         0 \r\n 2020          200           20.67552      33.54         23.61         0 \r\n 2020          201           17.57376      30.53         19.78         0 \r\n 2020          202           9.607681      26.79         18.77         0 \r\n 2020          203           11.48256      28.6          19.75         14.732 \r\n 2020          204           22.45536      28.61         17.44         0 \r\n 2020          205           23.43168      29.51         15.47         0 \r\n 2020          206           23.82912      31.73         16.9          6.096 \r\n 2020          207           21.89376      33.48         21.37         0 \r\n 2020          208           18.42048      34.21         23.06         18.288 \r\n 2020          209           18.80928      29.16         18.73         5.08 \r\n 2020          210           24.64128      30.3          15.51         0 \r\n 2020          211           20.14848      32.67         18.08         0 \r\n 2020          212           9.607681      26.41         19.02         10.922 \r\n 2020          213           15.984        25.77         16.28         0 \r\n 2020          214           20.01024      30.2          15.39         0 \r\n 2020          215           13.3056       27.57         15.59         6.604 \r\n 2020          216           18.61056      23.86         11.36         0 \r\n 2020          217           24.21792      26.12         11.33         0 \r\n 2020          218           18.74016      26.67         9.86          0 \r\n 2020          219           20.94336      27.04         13.81         0 \r\n 2020          220           22.23936      28.78         15.51         0 \r\n 2020          221           23.57856      31.35         20.06         0 \r\n 2020          222           16.77024      33.93         21.08         0 \r\n 2020          223           12.94272      32.27         17.25         3.302 \r\n 2020          224           24.07104      29.48         13.73         0 \r\n 2020          225           21.10752      30.2          14.83         0 \r\n 2020          226           22.71456      31.4          17.49         0 \r\n 2020          227           23.3712       31.47         16.93         0 \r\n 2020          228           21.58272      28.79         14.28         0 \r\n 2020          229           23.5008       30.54         11.57         0 \r\n 2020          230           20.27808      30.33         13.84         0 \r\n 2020          231           22.94784      27.53         12.12         0 \r\n 2020          232           24.26112      28.79         10.32         0 \r\n 2020          233           24.42528      29.51         10.52         0 \r\n 2020          234           23.4144       30.65         11.76         0 \r\n 2020          235           15.60384      30.16         14.36         0 \r\n 2020          236           22.5072       37.59         19.3          0 \r\n 2020          237           20.83968      36.59         19.4          0 \r\n 2020          238           20.4768       35.73         18.94         0 \r\n 2020          239           21.58272      35.51         20.78         0 \r\n 2020          240           22.13568      34.38         21.99         0 \r\n 2020          241           21.21984      34.27         19.58         0 \r\n 2020          242           21.168        27.78         13.41         0 \r\n 2020          243           21.5568       27.47         10.13         0 \r\n 2020          244           10.98144      26.89         15.09         0 \r\n 2020          245           8.26848       24.32         15.16         4.572 \r\n 2020          246           22.1616       31.79         16.4          0 \r\n 2020          247           21.14208      27.91         10.91         0 \r\n 2020          248           22.17888      29.37         8.11          0 \r\n 2020          249           21.09888      31.76         12.96         0 \r\n 2020          250           15.75936      33.76         19.08         0 \r\n 2020          251           17.52192      25.82         13.06         10.922 \r\n 2020          252           2.671488      13.08         10.24         18.542 \r\n 2020          253           3.824928      13.59         10.18         0 \r\n 2020          254           2.98944       13.65         10.17         0 \r\n 2020          255           2.491776      19.68         13.27         4.318 \r\n 2020          256           10.65312      23.8          16.04         6.857999 \r\n 2020          257           20.53728      27            11.13         0 \r\n 2020          258           17.81568      27.94         9.98          0 \r\n 2020          259           19.4832       29.86         10.24         0 \r\n 2020          260           19.12896      29.97         11.66         0 \r\n 2020          261           17.30592      24.56         10.33         0 \r\n 2020          262           14.5152       21.21         7.883         0 \r\n 2020          263           18.41184      22.09         6.45          0 \r\n 2020          264           16.32096      24.13         7.106         0 \r\n 2020          265           17.27136      26.79         6.198         0 \r\n 2020          266           16.96896      28.31         8.37          0 \r\n 2020          267           15.32736      28.38         11.25         0 \r\n 2020          268           13.392        27.99         13.83         0 \r\n 2020          269           17.27136      30.06         13.71         0 \r\n 2020          270           12.2688       29.84         16.83         0 \r\n 2020          271           2.619648      21.66         10.04         28.194 \r\n 2020          272           13.22784      18.16         8.47          9.144 \r\n 2020          273           12.00096      18.08         7.187         0 \r\n 2020          274           15.8976       21.51         7.722         0 \r\n 2020          275           8.90784       15.42         4.077         0.254 \r\n 2020          276           14.6016       16.04         1.622         0 \r\n 2020          277           2.75184       10.37         4.532         10.414 \r\n 2020          278           17.1072       16.19         1.379         0 \r\n 2020          279           15.8544       19.37         1.52          0 \r\n 2020          280           15.88896      26.76         10.42         0 \r\n 2020          281           15.77664      28.84         10.43         0 \r\n 2020          282           15.57792      25.86         6.107         0 \r\n 2020          283           15.04224      30            11.55         0 \r\n 2020          284           13.25376      28.74         15.64         0 \r\n 2020          285           14.16096      28.82         12.04         0 \r\n 2020          286           13.05504      20.81         5.229         1.27 \r\n 2020          287           14.82624      23.53         5.199         0 \r\n 2020          288           13.15872      27.55         5.471         0 \r\n 2020          289           14.54976      13.91        -0.543         0 \r\n 2020          290           12.02688      13.93        -1.262         0 \r\n 2020          291           6.129216      20.72         5.531         0 \r\n 2020          292           5.073408      12.77         1.864         1.524 \r\n 2020          293           3.0456        3.916         0.215         0.254 \r\n 2020          294           3.40848       8.92          0.651         0.508 \r\n 2020          295           9.46944       13.77         1.803         25.654 \r\n 2020          296           8.92512       27.26         7.459         4.064 \r\n 2020          297           3.81888       7.54          2.724         5.08 \r\n 2020          298           6.90768       6.975        -0.583         0 \r\n 2020          299           12.15         4.855         1.126         0 \r\n 2020          300           4.035744      1.186        -1.799         0.254 \r\n 2020          301           12.18         2.34         -3.074         0 \r\n 2020          302           8.44128       9.96         -4.128         0 \r\n 2020          303           4.016736      7.722        -1.19          0 \r\n 2020          304           11.2752       10.87        -0.401         0 \r\n 2020          305           12.01824      20.21         0.448         0 \r\n 2020          306           12.45888      7.842        -4.574         0 \r\n 2020          307           11.59488      16.1         -7.08          0 \r\n 2020          308           11.9664       23.14         0.823         0 \r\n 2020          309           11.05056      23.38         8.17          0 \r\n 2020          310           11.09376      23.21         8.41          0 \r\n 2020          311           10.99008      25.18         6.168         0 \r\n 2020          312           11.09376      23.11         9.7           0 \r\n 2020          313           10.20384      25.2          12.18         0 \r\n 2020          314           7.24896       25.13         16.64         0 \r\n 2020          315           1.295136      19.24         0.589         20.32 \r\n 2020          316           11.1888       10.1         -2.335         0 \r\n 2020          317           7.88832       13.04        -1.555         0 \r\n 2020          318           10.90368      5.37         -6.439         0 \r\n 2020          319           1.52496       12.26        -2.021         5.334 \r\n 2020          320           6.16032       11.33        -0.947         0.762 \r\n 2020          321           10.37664      14.57        -3.378         0 \r\n 2020          322           6.525792      5.562        -4.645         0 \r\n 2020          323           9.866881      14.09         0.408         0 \r\n 2020          324           8.856         21.76         8.33          0 \r\n 2020          325           8.60544       16.17         1.965         0 \r\n 2020          326           5.755968      8.25          0.549         0 \r\n 2020          327           5.090688      10.59        -1.677         0 \r\n 2020          328           5.743008      5.057        -5.73          1.27 \r\n 2020          329           0.952128      7.349         0.792         31.242 \r\n 2020          330           1.699488      7.43          4.733         15.494 \r\n 2020          331           7.87968       10.26         0.751         0 \r\n 2020          332           7.0416        7.268        -2.325         0 \r\n 2020          333           9.331199      13.86        -2.396         0 \r\n 2020          334           5.078592      6.107        -2.426         0 \r\n 2020          335           8.96832       0.731        -8.5           0 \r\n 2020          336           9.322561      4.401        -10.56         0 \r\n 2020          337           9.14976       10.46        -9.1           0 \r\n 2020          338           8.95104       7.268        -7.628         0 \r\n 2020          339           8.6832        9.23         -3.732         0 \r\n 2020          340           8.67456       10.88        -5.405         0 \r\n 2020          341           3.707424      4.926        -3.013         0 \r\n 2020          342           1.375488      1.095        -1.838         0 \r\n 2020          343           2.422656      3.401        -0.3           0 \r\n 2020          344           8.562239      14.36        -0.219         0 \r\n 2020          345           8.39808       17.15        -3.682         0 \r\n 2020          346           0.765504      5.138         2.006         19.558 \r\n 2020          347           1.924128      2.147        -0.644         6.096 \r\n 2020          348           6.361632     -0.665        -5.243         0 \r\n 2020          349           7.75008      -2.527        -7.982         0 \r\n 2020          350           5.089824     -2.062        -8.12          0 \r\n 2020          351           7.6464       -0.755        -9.61          0 \r\n 2020          352           3.887136     -0.159        -9.69          0 \r\n 2020          353           4.845312      5.461        -3.581         0 \r\n 2020          354           1.898208      3.966        -1.453         0 \r\n 2020          355           8.09568       5.168        -5.456         0 \r\n 2020          356           8.64          8.89         -0.087         0 \r\n 2020          357           6.698592      8.67         -5.324         0 \r\n 2020          358           4.10832       15.52        -9.68          0 \r\n 2020          359           8.67456      -9.65         -15.02         0 \r\n 2020          360           8.588159     -3.854        -16.69         0 \r\n 2020          361           8.64          4.573        -9.04          0 \r\n 2020          362           4.075488      6.369        -5.202         0 \r\n 2020          363           3.638304     -2.638        -9.2           0 \r\n 2020          364           1.279584      0.306        -9.06          33.782 \r\n 2020          365           7.45632       0.529        -4.533         0.508 \r\n 2020          366           6.8256        1.419        -5.922         5.588 \r\n 2021          1             2.43648      -1.171        -7.769         12.192 \r\n 2021          2             6.176736     -4.452        -10.97         0 \r\n 2021          3             6.372864     -3.013        -8.56          0 \r\n 2021          4             4.561056      0.367        -3.459         1.27 \r\n 2021          5             6.94656       6.248        -8.45          4.318 \r\n 2021          6             5.428512      0.792        -3.743         0.762 \r\n 2021          7             5.480352      0.529        -6.044         0.508 \r\n 2021          8             5.8752        0.367        -5.162         0.508 \r\n 2021          9             4.213728     -2            -4.564         0 \r\n 2021          10            4.019328     -2.162        -6.298         0 \r\n 2021          11            8.99424       3.208        -2.618         0.254 \r\n 2021          12            9.81504       5.188        -4.513         0 \r\n 2021          13            6.299424      4.168        -0.603         0 \r\n 2021          14            4.080672      3.704         0.043         1.27 \r\n 2021          15            5.939136      1.186        -3.257         1.016 \r\n 2021          16            4.205089      1.166        -2.588         0 \r\n 2021          17            8.14752      -1.018        -4.99          3.048 \r\n 2021          18            9.16704      -0.563        -9.55          0.254 \r\n 2021          19            7.48224       2.855        -10.94         0 \r\n 2021          20            10.77408      5.259        -14.43         0 \r\n 2021          21            10.87776      4.916        -3.905         0 \r\n 2021          22            10.81728     -3.439        -14.55         0 \r\n 2021          23            9.08928      -0.927        -16.97         0 \r\n 2021          24            6.763392      1.641        -2.507         0 \r\n 2021          25            3.575232     -1.14         -4.229         9.906 \r\n 2021          26            8.13024      -3.885        -13.24         0 \r\n 2021          27            7.49088      -5.892        -15.67         0 \r\n 2021          28            11.71584     -4.878        -18.28         0.508 \r\n 2021          29            11.3184      -0.796        -10.6          0.508 \r\n 2021          30            2.995488      1.52         -1.838         17.018 \r\n 2021          31            7.24032       0.529        -0.806         1.778 \r\n 2021          32            6.772032     -0.665        -8.96          0 \r\n 2021          33            7.6464       -3.175        -7.089         0 \r\n 2021          34            8.873279      2.127        -7.363         0 \r\n 2021          35            4.709664      2.562        -9.12          5.842 \r\n 2021          36            13.03776     -7.556        -14.34         0 \r\n 2021          37            7.3872       -13.31        -22.16         0 \r\n 2021          38            9.14976      -16.56        -25.46         0 \r\n 2021          39            7.6032       -14.87        -18.74         0 \r\n 2021          40            11.37024     -14.69        -25.09         0 \r\n 2021          41            8.01792      -11.98        -15.75         0 \r\n 2021          42            10.61856     -13.06        -18.36         0 \r\n 2021          43            9.79776      -15.51        -20.07         0 \r\n 2021          44            11.11968     -17.75        -22.58         0 \r\n 2021          45            9.73728      -19.56        -21.91         0 \r\n 2021          46            9.08928      -17.91        -22.08         2.794 \r\n 2021          47            15.06816     -12.96        -22.7          0 \r\n 2021          48            12.89952     -7.181        -24.66         0.254 \r\n 2021          49            15.13728     -8.17         -17.62         0 \r\n 2021          50            12.38976     -3.52         -17.37         0.254 \r\n 2021          51            15.5088       1.126        -14.61         0 \r\n 2021          52            4.904928      1.965        -8.12          2.54 \r\n 2021          53            14.58432      5.804        -3.703         0 \r\n 2021          54            16.0272       9.72          0.812         0 \r\n 2021          55            15.01632      5.238        -5             0 \r\n 2021          56            14.75712      5.552        -6.988         0 \r\n 2021          57            14.59296      4.895        -6.095         0 \r\n 2021          58            15.39648      8.54         -1.859         0 \r\n 2021          59            11.448        6.592        -2.73          0 \r\n 2021          60            15.58656      3.31         -5.547         0 \r\n 2021          61            15.71616      10.99        -6.278         0 \r\n 2021          62            15.83712      12.48         0.57          0 \r\n 2021          63            15.96672      8.21         -1.109         0 \r\n 2021          64            12.54528      8.68         -2.922         0 \r\n 2021          65            15.52608      14.29         0.61          0 \r\n 2021          66            14.83488      18.67         0.974         0 \r\n 2021          67            15.2064       20.68         6.047         0 \r\n 2021          68            15.90624      22.1          6.067         0 \r\n 2021          69            6.712416      21.46         8.96          1.27 \r\n 2021          70            15.61248      11.59         0.893         0 \r\n 2021          71            10.29888      10.46        -2.081         0 \r\n 2021          72            14.01408      15.57        -1.859         0 \r\n 2021          73            4.433184      10.44         2.511         1.27 \r\n 2021          74            2.985984      3.258        -0.138         17.78 \r\n 2021          75            5.107968      3.976         0.448         0 \r\n 2021          76            1.84464       3.057         1.581         4.318 \r\n 2021          77            11.11104      10.99         2.006         1.778 \r\n 2021          78            19.75968      11.11        -4.098         0 \r\n 2021          79            19.85472      14.98        -2.518         0 \r\n 2021          80            18.25632      20.12         3.006         0 \r\n 2021          81            9.65088       18.23         7.722         0 \r\n 2021          82            3.500928      13.32         8.55          18.542 \r\n 2021          83            5.178816      13.06         6.107         0.508 \r\n 2021          84            1.232928      7.459         5.34          5.334 \r\n 2021          85            2.100384      10.81         5.784         0 \r\n 2021          86            10.90368      16.97         5.159         8.128 \r\n 2021          87            16.65792      9.09          0.63          0 \r\n 2021          88            18.78336      22.74         0.742         0 \r\n 2021          89            13.33152      13.98         0.802         0 \r\n 2021          90            18.46368      6.198        -5.284         0 \r\n 2021          91            19.9584       8.37         -6.846         0 \r\n 2021          92            19.2672       14.16        -3.065         0 \r\n 2021          93            18.90432      23.11         5.885         0 \r\n 2021          94            18.16128      27.08         4.602         0 \r\n 2021          95            18.41184      27.43         14.67         0 \r\n 2021          96            15.43104      27.03         14.46         0 \r\n 2021          97            9.918721      23.13         13.48         23.876 \r\n 2021          98            6.100704      14.85         9.13          0.762 \r\n 2021          99            8.32032       13.94         9.06          0 \r\n 2021          100           2.763072      10.63         7.399         41.402 \r\n 2021          101           9.158399      14.11         6.198         4.572 \r\n 2021          102           22.87008      15.16         5.704         0 \r\n 2021          103           22.18752      13.94         1.338         0 \r\n 2021          104           19.88064      11.05        -1.049         0 \r\n 2021          105           13.19328      11.61         0.468         0 \r\n 2021          106           17.1072       15.92         0.802         0 \r\n 2021          107           20.28672      18.41         5.542         0.508 \r\n 2021          108           16.01856      17.74         4.269         0 \r\n 2021          109           7.87968       8.5           2.168         2.794 \r\n 2021          110           12.45888      7.601        -1.474         0 \r\n 2021          111           19.1808       9.98         -4.078         0 \r\n 2021          112           24.52896      15.96        -2.628         0 \r\n 2021          113           8.00064       13.52         7.116         0 \r\n 2021          114           20.76192      17.41         4.068         0 \r\n 2021          115           22.00608      17.22         0.145         0 \r\n 2021          116           24.54624      30.6          7.238         0 \r\n 2021          117           23.14656      31.14         15.86         0 \r\n 2021          118           9.45216       22.33         13.07         9.652 \r\n 2021          119           21.56544      24.35         8.63          0.254 \r\n 2021          120           21.31488      23.55         7.126         0 \r\n 2021          121           25.16832      30.61         11.98         0 \r\n 2021          122           23.90688      29.81         14.36         0 \r\n 2021          123           7.56          22.29         12.9          12.446 \r\n 2021          124           19.7424       17.5          6.612         0 \r\n 2021          125           25.0992       20            3.158         0 \r\n 2021          126           16.88256      18.17         5.411         0 \r\n 2021          127           26.15328      19.44         3.764         0 \r\n 2021          128           9.68544       14.88         3.168         32.258 \r\n 2021          129           19.63008      15.03         4.108         35.052 \r\n 2021          130           18.76608      17.37         5.865         0 \r\n 2021          131           25.89408      15.64         5.078         0 \r\n 2021          132           25.00416      18.33         2.693         0 \r\n 2021          133           26.54208      20.62         4.502         0 \r\n 2021          134           19.68192      21.78         6.087         2.54 \r\n 2021          135           4.628448      14.7          10.32         15.494 \r\n 2021          136           10.99872      19.74         12.66         6.096 \r\n 2021          137           7.58592       19.08         14.4          12.192 \r\n 2021          138           4.442688      20.18         16            10.414 \r\n 2021          139           14.99904      25.77         18.03         1.778 \r\n 2021          140           12.744        26.29         19.08         0.762 \r\n 2021          141           11.41344      24.54         18.27         0.508 \r\n 2021          142           8.527681      24.01         17.65         5.08 \r\n 2021          143           18.22176      28.72         18.33         0 \r\n 2021          144           16.7616       29.65         18.65         0.254 \r\n 2021          145           13.176        26.84         20.26         1.778 \r\n 2021          146           26.38656      28.23         16.89         4.064 \r\n 2021          147           9.23616       20.26         8.79          8.382 \r\n 2021          148           5.459616      9.59          7.449         0.254 \r\n 2021          149           20.31264      18.51         4.876         0 \r\n 2021          150           16.5024       21.49         6.541         0 \r\n 2021          151           8.2512        18.96         11.34         0 \r\n 2021          152           25.34112      26.08         8.84          0.254 \r\n 2021          153           22.09248      27.95         11.38         0 \r\n 2021          154           25.80768      31.24         13.95         0 \r\n 2021          155           28.14048      31.63         15.26         0 \r\n 2021          156           26.0928       33.48         19.21         0 \r\n 2021          157           21.5136       31.49         17.85         0 \r\n 2021          158           19.88928      30.77         20.8          5.08 \r\n 2021          159           22.54176      31.36         19.46         0 \r\n 2021          160           24.64128      33.45         19.83         0 \r\n 2021          161           26.27424      35.73         20.18         0 \r\n 2021          162           24.52896      35.43         22.11         0 \r\n 2021          163           23.9328       33.14         17.78         0 \r\n 2021          164           28.83168      33.8          15.18         0 \r\n 2021          165           24.1056       31.36         18.39         0 \r\n 2021          166           28.84896      32.34         15.22         0 \r\n 2021          167           28.96128      31.06         15.09         0 \r\n 2021          168           22.5072       34.92         19.33         4.826 \r\n 2021          169           14.61024      32.49         19.05         41.148 \r\n 2021          170           28.40832      31.85         20.07         2.286 \r\n 2021          171           12.45888      28.43         20.08         6.096 \r\n 2021          172           19.02528      21.81         10.5          0 \r\n 2021          173           19.73376      27.16         8.68          22.098 \r\n 2021          174           24.47712      28.32         16.5          2.032 \r\n 2021          175           12.57984      27.84         20.15         14.986 \r\n 2021          176           12.04416      27.18         20.82         57.912 \r\n 2021          177           12.29472      27.09         20.84         3.048 \r\n 2021          178           19.49184      27.82         19.32         0 \r\n 2021          179           12.82176      27.61         20.32         3.302 \r\n 2021          180           8.80416       25.67         20.83         8.636 \r\n 2021          181           17.8416       29.89         21.05         9.144 \r\n 2021          182           28.728        29.08         19.17         0 \r\n 2021          183           26.15328      27.97         17.85         0 \r\n 2021          184           26.60256      29.48         15.44         0 \r\n 2021          185           26.83584      30.7          18.49         0 \r\n 2021          186           27.38016      32.41         20.46         0 \r\n 2021          187           27.55296      31.66         20.59         0 \r\n 2021          188           15.30144      30.14         20.12         3.048 \r\n 2021          189           16.69248      26.08         17.05         0 \r\n 2021          190           15.54336      26.49         16.31         14.986 \r\n 2021          191           9.1584        22.82         18.18         14.732 \r\n 2021          192           5.759424      21.4          17.76         7.112 \r\n 2021          193           9.33984       23.17         17.42         5.08 \r\n 2021          194           19.12896      28.2          18.43         0 \r\n 2021          195           13.61664      30.58         19.58         6.858 \r\n 2021          196           9.99648       26.06         18.66         51.562 \r\n 2021          197           14.80896      27.07         17.51         0 \r\n 2021          198           23.83776      28            15.1          0 \r\n 2021          199           23.95872      28.31         16.11         0 \r\n 2021          200           23.61312      29.76         17.82         0 \r\n 2021          201           20.78784      29.52         17.53         0 \r\n 2021          202           18.94752      32            18.86         0 \r\n 2021          203           19.63872      30.64         20.02         0 \r\n 2021          204           22.69728      32.2          20.9          0 \r\n 2021          205           23.34528      33.57         22.02         0 \r\n 2021          206           22.18752      31.98         17.89         0 \r\n 2021          207           24.41664      33.02         16.26         0 \r\n 2021          208           24.93504      31.79         17.75         0 \r\n 2021          209           19.42272      33.28         22.82         0 \r\n 2021          210           14.20416      32.64         22.29         4.064 \r\n 2021          211           15.32736      25.76         18.95         0 \r\n 2021          212           12.30336      25.6          16.52         10.668 \r\n 2021          213           21.10752      27.46         14.67         0 \r\n 2021          214           19.0944       27.43         11.97         0 \r\n 2021          215           22.25664      28.97         12.54         0 \r\n 2021          216           23.44896      28.59         13.54         0 \r\n 2021          217           9.4176        25.64         16.2          1.27 \r\n 2021          218           20.31264      28.94         20.28         0.254 \r\n 2021          219           15.12864      30.56         19.86         0 \r\n 2021          220           15.31008      29.58         22.16         0 \r\n 2021          221           16.2          33.08         21.62         0 \r\n 2021          222           19.75104      32.8          23.83         0 \r\n 2021          223           13.61664      31.71         22.49         1.016 \r\n 2021          224           3.527712      26.05         19.73         0 \r\n 2021          225           17.34048      28.7          16.53         0 \r\n 2021          226           24.3216       28.58         12.48         0 \r\n 2021          227           24.39072      27.19         10.99         0 \r\n 2021          228           22.2912       27.6          10.34         0 \r\n 2021          229           21.5568       29.88         14.43         0 \r\n 2021          230           22.7664       31.61         15.23         0 \r\n 2021          231           20.89152      31.82         18.49         0 \r\n 2021          232           21.7296       31.86         18.02         0 \r\n 2021          233           15.47424      29.52         15.96         12.192 \r\n 2021          234           23.72544      28.19         13.11         0 \r\n 2021          235           18.97344      31.79         17.49         1.778 \r\n 2021          236           21.62592      34.53         20.92         4.064 \r\n 2021          237           14.85216      32.04         20.68         2.286 \r\n 2021          238           15.84576      31.2          19.32         0.254 \r\n 2021          239           20.80512      33.84         21.43         0.508 \r\n 2021          240           20.66688      34.17         22.59         0 \r\n 2021          241           17.60832      30            19.02         0 \r\n 2021          242           20.23488      30.28         16.19         0 \r\n 2021          243           5.687712      25.16         17.91         28.956 \r\n 2021          244           20.1312       26.92         15.07         0 \r\n 2021          245           18.21312      25.92         12.82         0 \r\n 2021          246           5.488992      22.52         16.93         9.144 \r\n 2021          247           6.76512       23.43         14.59         0 \r\n 2021          248           21.72096      27.79         13.28         0 \r\n 2021          249           19.7856       30.88         15.46         0 \r\n 2021          250           18.41184      30.81         13.49         0 \r\n 2021          251           20.63232      26.71         12.34         0 \r\n 2021          252           18.95616      26.52         10.04         0 \r\n 2021          253           19.34496      29.11         10.27         0 \r\n 2021          254           17.72928      31.94         16.64         0 \r\n 2021          255           15.56928      31.83         18.81         0 \r\n 2021          256           17.22816      31.93         18.66         0 \r\n 2021          257           13.49568      28.15         14.47         0 \r\n 2021          258           20.07936      27.55         10.34         0 \r\n 2021          259           19.38816      30.64         11.64         0 \r\n 2021          260           16.45056      31.87         13.85         0 \r\n 2021          261           18.22176      31.57         14.55         0 \r\n 2021          262           16.17408      33.72         17.47         0 \r\n 2021          263           9.87552       31.2          16.67         24.384 \r\n 2021          264           14.7744       23.67         12.5          0.254 \r\n 2021          265           17.69472      22.95         7.904         0 \r\n 2021          266           18.4032       23.94         5.421         0 \r\n 2021          267           13.27968      28.29         9.3           1.016 \r\n 2021          268           17.59968      24.05         6.461         0 \r\n 2021          269           17.20224      32.03         10.32         0 \r\n 2021          270           17.04672      31.84         16.21         0 \r\n 2021          271           15.37056      30.57         14.21         0 \r\n 2021          272           15.26688      32.7          14.15         0 \r\n 2021          273           13.6944       31.91         16.99         0 \r\n 2021          274           11.12832      29.28         15.73         0 \r\n 2021          275           8.05248       27.51         18.19         1.27 \r\n 2021          276           7.9488        25.22         11.76         0 \r\n 2021          277           7.11072       24.3          11.25         0 \r\n 2021          278           7.11072       22.43         13.23         0 \r\n 2021          279           3.725568      21.44         17.54         0 \r\n 2021          280           3.201984      23.06         15.11         0.254 \r\n 2021          281           8.93376       27.48         14.26         0.254 \r\n 2021          282           9.88416       29.2          14.89         0 \r\n 2021          283           7.87968       28.92         15.98         6.858 \r\n 2021          284           2.854656      20.44         13.63         10.922 \r\n 2021          285           15.2496       23.3          9.49          0.254 \r\n 2021          286           5.635008      23.56         14            10.16 \r\n 2021          287           13.12416      22.85         10.66         0 \r\n 2021          288           5.97024       16.54         4.552         0 \r\n 2021          289           14.83488      17.79         4.451         0 \r\n 2021          290           14.80032      22.25         5.259         0 \r\n 2021          291           14.48064      24.56         6.047         0 \r\n 2021          292           12.86496      24.17         8.33          0 \r\n 2021          293           8.26848       24.03         11.45         0 \r\n 2021          294           3.386016      11.82         6.733         0 \r\n 2021          295           9.87552       13.12         1.277         3.048 \r\n 2021          296           13.18464      14.76        -0.421         0 \r\n 2021          297           1.033344      10.25         7.005         40.894 \r\n 2021          298           7.74144       13.99         0.954         1.27 \r\n 2021          299           13.25376      15.44        -0.016         0 \r\n 2021          300           5.97024       14.81         8.23          0 \r\n 2021          301           1.241568      10.3          7.802         11.43 \r\n 2021          302           1.931904      11.73         7.409         2.032 \r\n 2021          303           8.40672       16.1          3.956         0 \r\n 2021          304           13.02912      12.79        -0.522         0 \r\n 2021          305           6.9552        9.75         -2.69          0 \r\n 2021          306           11.30976      9.71         -4.026         0 \r\n 2021          307           11.47392      10.92        -5.628         0 \r\n 2021          308           9.65952       12.54        -1.19          0 \r\n 2021          309           11.7936       13.24        -0.543         0 \r\n 2021          310           11.54304      18.75         2.288         0 \r\n 2021          311           10.08288      20.44         4.149         0 \r\n 2021          312           10.59264      21.37         7.137         0 \r\n 2021          313           8.71776       17.79         6.007         0 \r\n 2021          314           2.03904       15.46         4.613         0 \r\n 2021          315           9.56448       15.05         3.764         11.176 \r\n 2021          316           4.305312      3.784         0.398         1.27 \r\n 2021          317           3.55968       3.734         0.782         0.254 \r\n 2021          318           2.965248      6.713        -1.879         0 \r\n 2021          319           6.772032      8.69         -1.768         0 \r\n 2021          320           8.62272       16.02        -0.887         0 \r\n 2021          321           5.562432      15.94         1.662         0 \r\n 2021          322           8.15616       2.915        -5.812         0 \r\n 2021          323           7.56          6.753        -8.21          0 \r\n 2021          324           8.22528       13.87         2.228         0 \r\n 2021          325           9.66816       14.06        -4.169         0 \r\n 2021          326           8.62272       2.309        -8.41          0 \r\n 2021          327           9.12384       12.38        -5.831         0 \r\n 2021          328           4.625856      15.6          4.068         0 \r\n 2021          329           7.05888       4.885        -10.56         0 \r\n 2021          330           7.9488        4.956        -10.72         0 \r\n 2021          331           6.829056      16.42        -2.953         0.762 \r\n 2021          332           9.49536       6.531        -3.794         0 \r\n 2021          333           7.22304       15.13        -1.09          0 \r\n 2021          334           9.01152       14.59        -1.13          0 \r\n 2021          335           6.9552        13.33         3.582         0.254 \r\n 2021          336           8.52768       15.38         0.367         0 \r\n 2021          337           8.74368       15.1         -0.067         0 \r\n 2021          338           7.776         7.642        -3.439         0 \r\n 2021          339           1.28304       7.802         0.286         0 \r\n 2021          340           9.21024       0.964        -13.02         0 \r\n 2021          341           5.698944     -0.34         -14.67         0 \r\n 2021          342           8.83872       3.431        -6.48          0 \r\n 2021          343           6.284736      13.02        -0.907         0 \r\n 2021          344           2.227392      13.8         -3.297         6.35 \r\n 2021          345           8.70048       7.621        -1.028         0 \r\n 2021          346           8.9424        12.11        -2.75          0 \r\n 2021          347           8.79552       13.43        -0.725         0 \r\n 2021          348           5.126976      13.9         -0.249         0 \r\n 2021          349           5.737824      24.53         12.21         2.286 \r\n 2021          350           8.73504       12.42        -4.554         0 \r\n 2021          351           7.28352       4.814        -8.73          0 \r\n 2021          352           7.91424       2.288        -7.049         0 \r\n 2021          353           6.610464      0.711        -10.64         0 \r\n 2021          354           8.4672        5.562        -6.643         0 \r\n 2021          355           7.74144       4.936        -10.22         0 \r\n 2021          356           7.87968       2.986        -11.39         0 \r\n 2021          357           5.684256      13.07        -2.912         0 \r\n 2021          358           3.943296      19.33         3.623         0 \r\n 2021          359           8.56224       13           -2             0 \r\n 2021          360           4.342464      8.36         -6.764         0.508 \r\n 2021          361           4.295808      6.935        -3.732         0 \r\n 2021          362           0.98064       4.269        -2.344         14.732 \r\n 2021          363           3.597696     -0.421        -10.02         0 \r\n 2021          364           1.29168      -0.006        -4.585         0 \r\n 2021          365           1.725408      0.943        -5.507         0 \r\n 2022          1             2.41488      -1.535        -13.57         11.43 \r\n 2022          2             9.58176      -13.57        -21.82         0 \r\n 2022          3             9.46944      -4.736        -22.33         0 \r\n 2022          4             7.19712       1.308        -6.389         0 \r\n 2022          5             8.66592      -3.257        -14.41         0 \r\n 2022          6             9.26208      -14.4         -21.23         0 \r\n 2022          7             7.09344      -12.25        -22.4          0 \r\n 2022          8             2.808864     -0.138        -12.39         0 \r\n 2022          9             9.85824      -0.219        -13.8          0 \r\n 2022          10            9.65088      -7.932        -15.44         0 \r\n 2022          11            9.29664       6.995        -15.83         0 \r\n 2022          12            6.96384       9.5          -2.203         0 \r\n 2022          13            9.288         8.23         -1.707         0 \r\n 2022          14            2.191104      0.731        -4.219         1.27 \r\n 2022          15            6.753888     -4.21         -12.09         4.572 \r\n 2022          16            7.83648      -1.666        -16.85         0 \r\n 2022          17            8.64864      -1.687        -8.23          0 \r\n 2022          18            8.93376       5.795        -3.338         0.508 \r\n 2022          19            6.781536      1.217        -16.14         0 \r\n 2022          20            10.96416     -14.14        -21.66         0 \r\n 2022          21            11.02464     -8.69         -23.4          0 \r\n 2022          22            10.73952      2.643        -8.88          0 \r\n 2022          23            10.16064      5.461        -10.89         0 \r\n 2022          24            3.474144     -0.097        -15.53         0 \r\n 2022          25            11.45664     -11.74        -19.84         0 \r\n 2022          26            11.60352     -5.101        -22.43         0 \r\n 2022          27            6.32448       2.187        -6.764         0 \r\n 2022          28            11.80224     -6.399        -15.71         0 \r\n 2022          29            11.2752       1.317        -15.85         0 \r\n 2022          30            9.94464      -2.253        -9.79          0 \r\n 2022          31            10.81728      5.279        -10.89         0 \r\n 2022          32            6.012576      5.683        -8.04          0 \r\n 2022          33            6.322752     -6.886        -11.44         0 \r\n 2022          34            7.84512      -7.597        -15.57         0 \r\n 2022          35            8.9424       -4.189        -18.7          0 \r\n 2022          36            12.45888     -1.96         -18.36         0 \r\n 2022          37            10.68768      6.895        -9.59          0 \r\n 2022          38            11.11104      0.246        -14.02         0 \r\n 2022          39            11.60352      14.03        -7.657         0 \r\n 2022          40            6.225984      7.601        -2.344         0 \r\n 2022          41            9.53856       4.451        -4.929         1.27 \r\n 2022          42            7.89696       8.5          -10.04         0.254 \r\n 2022          43            13.74624     -7.394        -15.23         0 \r\n 2022          44            11.448       -8.55         -14.53         0 \r\n 2022          45            13.67712      0.448        -13.29         0 \r\n 2022          46            11.93184      10.14        -9.18          0 \r\n 2022          47            3.791232      14.87        -0.412         4.318 \r\n 2022          48            2.863296     -0.401        -12.31         3.048 \r\n 2022          49            14.7312       4.28         -13.51         0.254 \r\n 2022          50            15.12864     -2.385        -13.43         0 \r\n 2022          51            14.37696      14.77        -6.197         0 \r\n 2022          52            13.46976      15.19        -1.312         0 \r\n 2022          53            3.25728       2.905        -12.21         2.286 \r\n 2022          54            9.26208      -7.708        -14.85         0 \r\n 2022          55            4.712256     -4.047        -9.02          0 \r\n 2022          56            16.70112     -5.903        -15.42         0 \r\n 2022          57            16.51968      2.41         -15.87         0.254 \r\n 2022          58            16.30368      7.642        -7.191         0 \r\n 2022          59            15.38784      14.93        -2.031         0 \r\n 2022          60            14.2992       17.27         1.176         0 \r\n 2022          61            12.97728      20            0.064         0 \r\n 2022          62            12.2688       4.835        -3.357         0 \r\n 2022          63            12.81312      9.46         -4.239         0 \r\n 2022          64            8.26848       20.76         4.936         12.192 \r\n 2022          65            12.19104      4.936        -1.009         0 \r\n 2022          66            15.05088     -0.918        -8.63          0.254 \r\n 2022          67            18.67968      3.36         -11.76         0.762 \r\n 2022          68            17.72064      0.823        -4.432         0 \r\n 2022          69            8.57088      -4.452        -8.02          0 \r\n 2022          70            17.496       -2.568        -11.95         0 \r\n 2022          71            19.224       -2.882        -13.95         0 \r\n 2022          72            18.77472      13.87        -4.705         0 \r\n 2022          73            17.90208      17.14         2.309         0 \r\n 2022          74            18.02304      16.92         0.256         0 \r\n 2022          75            17.2368       21.69         2.39          0 \r\n 2022          76            14.7744       20.35         5.602         0 \r\n 2022          77            2.312928      7.944         1.419         24.638 \r\n 2022          78            18.95616      12.36         1.742         0.254 \r\n 2022          79            19.02528      21.99         0.327         0 \r\n 2022          80            18.13536      24.86         8.36          4.318 \r\n 2022          81            2.77776       14.16         9.63          12.446 \r\n 2022          82            3.44736       11.57         2.955         1.778 \r\n 2022          83            5.742144      5.835         1.298         1.778 \r\n 2022          84            15.5088       11.31         1.904         0 \r\n 2022          85            21.7296       5.026        -3.074         0 \r\n 2022          86            20.98656      4.512        -6.298         0 \r\n 2022          87            18.80928      7.328        -6.724         0 \r\n 2022          88            6.48864       9.35          0.63          0 \r\n 2022          89            2.287872      12.74         0.468         9.398 \r\n 2022          90            4.399488      3.168         0.286         2.794 \r\n 2022          91            20.26944      9.2          -2.244         0 \r\n 2022          92            10.08288      11.21         1.5           2.794 \r\n 2022          93            11.94912      12.28        -0.907         3.302 \r\n 2022          94            12.56256      10.16         0.145         0.254 \r\n 2022          95            5.753376      11.74        -0.684         15.494 \r\n 2022          96            11.26656      11.97         4.613         0 \r\n 2022          97            7.15392       6.026         1.075         6.858 \r\n 2022          98            6.300288      4.411         0.043         0 \r\n 2022          99            24.3216       14.35        -2.537         0 \r\n 2022          100           20.9088       23.66         2.369         0 \r\n 2022          101           19.5264       18.96         5.583         0 \r\n 2022          102           10.95552      22.24         3.198         0 \r\n 2022          103           2.85984       20.76         0.265         8.382 \r\n 2022          104           24.9696       12.2         -1.272         0 \r\n 2022          105           15.27552      10.79         0.296         0 \r\n 2022          106           24.82272      11.15        -2.75          0 \r\n 2022          107           9.16704       7.419        -4.037         3.302 \r\n 2022          108           20.84832      7.409        -2.143         0.254 \r\n 2022          109           18.86976      10.36        -4.777         0 \r\n 2022          110           2.395872      10.96         6.683         18.542 \r\n 2022          111           23.14656      22.78         5.743         0.762 \r\n 2022          112           7.06752       27.44         12.93         0.762 \r\n 2022          113           19.40544      29.32         14.63         2.794 \r\n 2022          114           24.03648      19.71         8.68          4.318 \r\n 2022          115           9.60768       8.88         -0.958         0 \r\n 2022          116           25.9632       13.86        -2.487         0 \r\n 2022          117           20.25216      21.9          2.753         0 \r\n 2022          118           12.03552      19.18         4.542         0 \r\n 2022          119           6.5664        16.79         12.32         9.906 \r\n 2022          120           10.35072      20.99         10.02         5.08 \r\n 2022          121           8.11296       13.04         7.883         0 \r\n 2022          122           16.81344      14.35         4.118         5.08 \r\n 2022          123           5.245344      10.9          7.016         12.446 \r\n 2022          124           23.6736       16.9          2.581         0 \r\n 2022          125           7.1712        14.75         10.51         0.508 \r\n 2022          126           12.88224      17.49         6.461         0 \r\n 2022          127           27.80352      22.28         4.108         0 \r\n 2022          128           14.17824      23.38         11.03         0 \r\n 2022          129           25.8336       32.18         15.64         0 \r\n 2022          130           22.01472      33.53         20.89         0 \r\n 2022          131           23.85504      35.45         20.48         0 \r\n 2022          132           26.61984      36.48         22.87         0 \r\n 2022          133           27.03456      32.26         17.77         0 \r\n 2022          134           26.6976       33.44         14.13         0 \r\n 2022          135           6.801408      23.51         10.66         1.27 \r\n 2022          136           27.94176      28.74         10.32         0 \r\n 2022          137           15.71616      27.94         9.99          2.794 \r\n 2022          138           15.08544      24.13         15.28         5.334 \r\n 2022          139           24.74496      31.99         15.06         0 \r\n 2022          140           4.517856      21.62         13.06         0 \r\n 2022          141           11.86272      19.29         8.51          0.254 \r\n 2022          142           28.3824       20.38         4.269         0 \r\n 2022          143           23.49216      21.23         8.25          0 \r\n 2022          144           10.152        22.27         11.56         6.35 \r\n 2022          145           9.78048       24.17         11.44         18.796 \r\n 2022          146           14.61888      22.52         14.21         3.302 \r\n 2022          147           17.09856      23.49         13.02         0 \r\n 2022          148           25.488        26.76         12.8          0 \r\n 2022          149           18.792        31.64         18.07         0 \r\n 2022          150           25.56576      32.93         20.3          0 \r\n 2022          151           10.69632      26.94         20.23         3.048 \r\n 2022          152           22.7664       25.52         14.66         0.508 \r\n 2022          153           30.10176      27.05         11.08         0 \r\n 2022          154           29.7216       29.6          13.83         0 \r\n 2022          155           17.66016      28.18         13.68         0 \r\n 2022          156           24.64128      30.5          14.15         3.556 \r\n 2022          157           16.57152      27.55         18.08         7.366 \r\n 2022          158           24.28704      27.21         15.69         0 \r\n 2022          159           20.32992      24.17         14.32         7.366 \r\n 2022          160           25.23744      28.17         12.81         0 \r\n 2022          161           10.0224       21.93         16.04         2.032 \r\n 2022          162           14.1696       27.52         14.58         0.254 \r\n 2022          163           22.75776      31.89         19.98         0 \r\n 2022          164           15.71616      34.08         21.21         0 \r\n 2022          165           28.84032      36.97         24.33         0 \r\n 2022          166           23.96736      35.49         23.18         11.938 \r\n 2022          167           29.51424      33.61         17.64         0.254 \r\n 2022          168           29.34144      32.12         18.81         0 \r\n 2022          169           29.8944       29.13         16.06         0 \r\n 2022          170           30.05856      30.67         12.31         0 \r\n 2022          171           23.9328       33.61         22.09         0 \r\n 2022          172           26.68032      35.81         19.66         0.762 \r\n 2022          173           28.39104      31.1          18.71         0 \r\n 2022          174           29.17728      32.74         15.62         0 \r\n 2022          175           12.89088      29.2          18.57         0.508 \r\n 2022          176           17.7984       30.47         19.17         18.288 \r\n 2022          177           29.47968      25.24         13.33         0 \r\n 2022          178           30.07584      27.83         11.09         0 \r\n 2022          179           29.36736      29.13         12.48         0 \r\n 2022          180           29.09088      33.47         16.69         0 \r\n 2022          181           28.728        32.43         18.75         0 \r\n 2022          182           7.43904       25.52         16.81         12.446 \r\n 2022          183           21.28896      28.11         13.47         0 \r\n 2022          184           28.92672      30.36         13.99         0 \r\n 2022          185           18.576        34.46         20.44         0 \r\n 2022          186           26.6544       36.64         21.97         3.556 \r\n 2022          187           13.10688      29.27         20.18         0.254 \r\n 2022          188           12.528        30.08         21.38         3.556 \r\n 2022          189           8.47584       25.56         20.18         1.524 \r\n 2022          190           24.78816      28.88         16.67         0 \r\n 2022          191           27.0432       29.6          15.14         0 \r\n 2022          192           16.78752      30.62         19.74         22.606 \r\n"
  },
  {
    "path": "scripts/yieldfx/baseline/kanawha.met",
    "content": "[weather.met.weather]\r\nlatitude = 42.915 (DECIMAL DEGREES)\r\ntav = 7.994143 (oC) ! annual average ambient temperature\r\namp = 30.93629 (oC) ! annual amplitude in mean monthly temperature\r\nyear          day           radn          maxt          mint          rain\r\n()            ()            (MJ/m^2)      (oC)          (oC)          (mm)\r\n 1980          1             4.7          -0.5          -4             0 \r\n 1980          2             6.6          -1.5          -6             0 \r\n 1980          3             5.1          -3.5          -11.5          0 \r\n 1980          4             3.6          -2            -8             1.02 \r\n 1980          5             4.4          -2.5          -5.5           3.05 \r\n 1980          6             2.4          -1            -10.5          1.78 \r\n 1980          7             8            -8.5          -19            3.05 \r\n 1980          8             7.2          -12.5         -21            0 \r\n 1980          9             8.2          -15.5         -24.5          1.27 \r\n 1980          10            4.6           2            -19.5          0 \r\n 1980          11            8.9           6.5          -14.5          0.25 \r\n 1980          12            5.1          -4            -18.5          0 \r\n 1980          13            8.3           7.5          -6             0 \r\n 1980          14            5.8           6            -7             0 \r\n 1980          15            2.8           5.5          -0.5           0.25 \r\n 1980          16            3             4            -0.5           12.95 \r\n 1980          17            4.6           0            -4.5           8.13 \r\n 1980          18            6.3          -1            -6             0 \r\n 1980          19            3.7          -1.5          -7.5           0 \r\n 1980          20            6            -0.5          -11.5          0 \r\n 1980          21            7.7           0            -9             0 \r\n 1980          22            7.5          -1.5          -11.5          0 \r\n 1980          23            8.7          -7.5          -16.5          0.25 \r\n 1980          24            3.3           4.5          -11.5          2.29 \r\n 1980          25            9.8           3.5          -11.5          0 \r\n 1980          26            4.6          -8            -20            0 \r\n 1980          27            7.3          -12.5         -18.5          0 \r\n 1980          28            6.1          -12.5         -17            0 \r\n 1980          29            10.1         -12.5         -20.5          0 \r\n 1980          30            4.2          -12.5         -18.5          2.03 \r\n 1980          31            7.9          -12.5         -24            0.76 \r\n 1980          32            6.9          -10.5         -23.5          0 \r\n 1980          33            8.3          -7            -17            0 \r\n 1980          34            9.5          -7            -16.5          0 \r\n 1980          35            5.8          -6            -15            0.51 \r\n 1980          36            3.1          -5            -10.5          5.84 \r\n 1980          37            9.2          -4.5          -14.5          1.02 \r\n 1980          38            5.6          -6.5          -19.5          0 \r\n 1980          39            4.7          -5.5          -16.5          0 \r\n 1980          40            8.9          -6.5          -19.5          0 \r\n 1980          41            11.6         -4            -14.5          0 \r\n 1980          42            9.7          -6            -15.5          0 \r\n 1980          43            9.8          -4            -21            0 \r\n 1980          44            7            -1            -12.5          0 \r\n 1980          45            8.3          -2.5          -12            0 \r\n 1980          46            5.3          -5            -13            0.25 \r\n 1980          47            9.7          -9.5          -20            0 \r\n 1980          48            11.4         -4.5          -19            0 \r\n 1980          49            9.1           0            -12            0 \r\n 1980          50            9.1           3            -2.5           0 \r\n 1980          51            8.4           2            -0.5           0 \r\n 1980          52            4.7           2.5          -0.5           1.78 \r\n 1980          53            10.6          3            -0.5           2.03 \r\n 1980          54            12.7          1.5          -6.5           0 \r\n 1980          55            12.5         -1            -6             0.25 \r\n 1980          56            12.9         -2.5          -17            3.3 \r\n 1980          57            14.3          0.5          -18            0 \r\n 1980          58            6.7           1.5          -10.5          0.25 \r\n 1980          59            14.7         -4            -12.5          1.52 \r\n 1980          60            7.2          -6            -15.5          0 \r\n 1980          61            14.7         -8            -18.5          0 \r\n 1980          62            14.4         -7.5          -20            0 \r\n 1980          63            12.2         -2.5          -18            0 \r\n 1980          64            1.8           4.5          -9.5           1.78 \r\n 1980          65            12.5          3.5          -10.5          2.79 \r\n 1980          66            8.1          -5.5          -17            0 \r\n 1980          67            14.3         -3            -13.5          0 \r\n 1980          68            15.1         -0.5          -11.5          0 \r\n 1980          69            11.5          2.5          -10            0 \r\n 1980          70            16.3          7            -5.5           0 \r\n 1980          71            15            4.5          -8             0 \r\n 1980          72            6.7          -2            -12.5          1.52 \r\n 1980          73            7.3           0            -6.5           5.59 \r\n 1980          74            17.7         -0.5          -7.5           0 \r\n 1980          75            13.2          5.5          -12.5          0 \r\n 1980          76            2.9           13           -1.5           0.25 \r\n 1980          77            16.2          11           -0.5           0 \r\n 1980          78            19            4            -5.5           0 \r\n 1980          79            17.5          11.5         -2.5           0 \r\n 1980          80            6.2           15            1.5           0 \r\n 1980          81            20            12.5          0             0 \r\n 1980          82            6.2           5.5          -3             0 \r\n 1980          83            19.3          4            -3.5           0 \r\n 1980          84            18.6          2            -2             0 \r\n 1980          85            12.1          1.5          -3             0 \r\n 1980          86            8             5.5          -5.5           0.25 \r\n 1980          87            16.1          4.5          -3             0.51 \r\n 1980          88            3.7           7.5          -0.5           0.76 \r\n 1980          89            11.1          5.5           0             5.84 \r\n 1980          90            4.9           6            -0.5           0.25 \r\n 1980          91            23.2          6.5          -0.5           0 \r\n 1980          92            6.3           11           -1             0 \r\n 1980          93            14.3          10            0             0 \r\n 1980          94            4             11           -0.5           8 \r\n 1980          95            20.7          8.5           0             16 \r\n 1980          96            19.8          8.5          -1.5           7 \r\n 1980          97            13.1          15            0             0 \r\n 1980          98            15.6          19            6.5           0 \r\n 1980          99            4.5           16            6             0 \r\n 1980          100           11.4          10.5          1.5           4 \r\n 1980          101           23.3          3            -1             6 \r\n 1980          102           4.4           5            -2.5           0 \r\n 1980          103           23.7          7.5          -2.5           0 \r\n 1980          104           16.7          9            -2             0 \r\n 1980          105           9             6.5          -3             0 \r\n 1980          106           25.1          8.5          -3.5           0 \r\n 1980          107           12.5          14            0             0 \r\n 1980          108           20.3          18           -1             0 \r\n 1980          109           25            20.5          5             0 \r\n 1980          110           22.9          22.5          4.5           0 \r\n 1980          111           20.4          26            7             0 \r\n 1980          112           25.9          29            6.5           0 \r\n 1980          113           23.8          33            10.5          0 \r\n 1980          114           24.3          34.5          13            0 \r\n 1980          115           27.7          26.5          6.5           0 \r\n 1980          116           23.6          16           -0.5           0 \r\n 1980          117           24.4          13.5          0             0 \r\n 1980          118           26.6          16            3             0 \r\n 1980          119           28.8          20.5          4.5           0 \r\n 1980          120           18.1          21            2             0 \r\n 1980          121           20.5          20.5          3.5           0 \r\n 1980          122           20.5          23            8.5           0 \r\n 1980          123           24.8          26            7             0 \r\n 1980          124           22.3          27.5          8             0 \r\n 1980          125           25.1          28.5          8.5           0 \r\n 1980          126           24.2          30.5          8.5           0 \r\n 1980          127           23.7          29            12.5          0 \r\n 1980          128           22.6          24            5             0 \r\n 1980          129           28            16           -0.5           0 \r\n 1980          130           28.2          15            1             0 \r\n 1980          131           10.4          21.5          0.5           0 \r\n 1980          132           21.5          22.5          9.5           5 \r\n 1980          133           17            18            2.5           8 \r\n 1980          134           23.2          19            3.5           0 \r\n 1980          135           15.4          16.5          5             11 \r\n 1980          136           26.4          17            4.5           0 \r\n 1980          137           8.7           20            4             0 \r\n 1980          138           7             18.5          8.5           0 \r\n 1980          139           4.6           13            8.5           5 \r\n 1980          140           22.5          13            10            6 \r\n 1980          141           22.9          19            9.5           1 \r\n 1980          142           29.2          23            8             0 \r\n 1980          143           29.9          26.5          8.5           0 \r\n 1980          144           24            28.5          10.5          0 \r\n 1980          145           14            28.5          12            0 \r\n 1980          146           24.4          28.5          15.5          0 \r\n 1980          147           10.3          30.5          14.5          0 \r\n 1980          148           10.5          30            16.5          0 \r\n 1980          149           14.2          32            17            0 \r\n 1980          150           7.4           32            16.5          0 \r\n 1980          151           17.1          30            17.5          7 \r\n 1980          152           21.7          27            13.5          34 \r\n 1980          153           24.1          23.5          11.5          6 \r\n 1980          154           20.9          24.5          13.5          0 \r\n 1980          155           29.6          23.5          12.5          0 \r\n 1980          156           14.8          26            9.5           0 \r\n 1980          157           9.6           26            17            0 \r\n 1980          158           11.3          30.5          17.5          6 \r\n 1980          159           24.1          31.5          16.5          0 \r\n 1980          160           31.8          26            16            9 \r\n 1980          161           30.4          22.5          8             0 \r\n 1980          162           30.8          26.5          11.5          0 \r\n 1980          163           31.4          26            11.5          0 \r\n 1980          164           21.9          28            9.5           0 \r\n 1980          165           13.5          29.5          16            0 \r\n 1980          166           19            32.5          18.5          0 \r\n 1980          167           24            30.5          16.5          34 \r\n 1980          168           25.6          26.5          13.5          14 \r\n 1980          169           22.2          22.5          9.5           0 \r\n 1980          170           15.3          24.5          10.5          0 \r\n 1980          171           29.9          28.5          14            0 \r\n 1980          172           29.1          26            11.5          9 \r\n 1980          173           25            24            9             0 \r\n 1980          174           14.1          28            12            0 \r\n 1980          175           26.7          28            16            0 \r\n 1980          176           27.9          29            17            0 \r\n 1980          177           19.2          30            16            0 \r\n 1980          178           16.6          32.5          17            0 \r\n 1980          179           13.8          35.5          21            0 \r\n 1980          180           30.4          35.5          23            0 \r\n 1980          181           31.1          33.5          16            0 \r\n 1980          182           26.3          28.5          13.5          0 \r\n 1980          183           25.6          27.5          10.5          0 \r\n 1980          184           26            29            17            0 \r\n 1980          185           27.5          27.5          12            0 \r\n 1980          186           13.5          26.5          12.5          0 \r\n 1980          187           26.9          31.5          16.5          0 \r\n 1980          188           20.1          32.5          18.5          4 \r\n 1980          189           25.7          32            18            0 \r\n 1980          190           27.2          37.5          22.5          0 \r\n 1980          191           21.7          35            18.5          0 \r\n 1980          192           28.7          31            20            28 \r\n 1980          193           20.9          33            20            0 \r\n 1980          194           24.3          35            21.5          0 \r\n 1980          195           26.4          34            21            0 \r\n 1980          196           18.1          33.5          18.5          0 \r\n 1980          197           15.6          35            22.5          2 \r\n 1980          198           29.4          34            20.5          14 \r\n 1980          199           28.7          31.5          18            0 \r\n 1980          200           22.5          33.5          17            0 \r\n 1980          201           22.9          32            19.5          7 \r\n 1980          202           19.4          31            17.5          0 \r\n 1980          203           28            29            19            16 \r\n 1980          204           28.4          27            15.5          0 \r\n 1980          205           28.6          27            13            0 \r\n 1980          206           27.8          26.5          10.5          0 \r\n 1980          207           12.4          31            13.5          0 \r\n 1980          208           25.2          29.5          18            0 \r\n 1980          209           27.3          26            15.5          0 \r\n 1980          210           21            27.5          10.5          0 \r\n 1980          211           27.5          30.5          14.5          0 \r\n 1980          212           23            31            14            0 \r\n 1980          213           27.6          32.5          19.5          0 \r\n 1980          214           28.2          30.5          15            0 \r\n 1980          215           24            32            16            0 \r\n 1980          216           26.4          30.5          17.5          5 \r\n 1980          217           12.5          29            13.5          0 \r\n 1980          218           28.8          27            15.5          15 \r\n 1980          219           8             28            13            33 \r\n 1980          220           23            30.5          18            9 \r\n 1980          221           8.7           33            21.5          0 \r\n 1980          222           6.2           32            20            0 \r\n 1980          223           13.8          26.5          17            15 \r\n 1980          224           23.5          28            18            61 \r\n 1980          225           24.6          26            16.5          9 \r\n 1980          226           6.2           26            11.5          0 \r\n 1980          227           21.3          27.5          15            24 \r\n 1980          228           19.6          25.5          15.5          5 \r\n 1980          229           6.8           25            13.5          0 \r\n 1980          230           20.9          22            12.5          23 \r\n 1980          231           10.8          23.5          14            16 \r\n 1980          232           17.9          29            13.5          0 \r\n 1980          233           8.2           31.5          16.5          8 \r\n 1980          234           24            30            20            0 \r\n 1980          235           23.6          27.5          14            0 \r\n 1980          236           22.9          28            12            0 \r\n 1980          237           22.4          28            15.5          0 \r\n 1980          238           21.9          30            17            0 \r\n 1980          239           11.9          32            18.5          0 \r\n 1980          240           18.9          29.5          17            5 \r\n 1980          241           12.3          21.5          14            19 \r\n 1980          242           14.7          24.5          15            0 \r\n 1980          243           10.5          29.5          18.5          0 \r\n 1980          244           14.8          28.5          18            10 \r\n 1980          245           21.9          24.5          16            4 \r\n 1980          246           24            25.5          14.5          3 \r\n 1980          247           19.8          25.5          10            0 \r\n 1980          248           24.3          30            15            0 \r\n 1980          249           23            29            13            19 \r\n 1980          250           13.6          28.5          11            0 \r\n 1980          251           19.2          28.5          14            0 \r\n 1980          252           16.7          32.5          17.5          10 \r\n 1980          253           17.8          33            19            0 \r\n 1980          254           22.3          30            11.5          0 \r\n 1980          255           12.9          23.5          6.5           0 \r\n 1980          256           19.5          25.5          11.5          0 \r\n 1980          257           18            31            16            0 \r\n 1980          258           18.7          29            16.5          0 \r\n 1980          259           13.9          20            13.5          0 \r\n 1980          260           9.4           23            12.5          0 \r\n 1980          261           18.8          22            9.5           0 \r\n 1980          262           19            17.5          2             0 \r\n 1980          263           16            19            7.5           0 \r\n 1980          264           7.6           28            10.5          0 \r\n 1980          265           14.9          28.5          15            26 \r\n 1980          266           12.8          26            12.5          22 \r\n 1980          267           18.4          23.5          10.5          20 \r\n 1980          268           11.8          19.5          2.5           3 \r\n 1980          269           15.7          22            8.5           0 \r\n 1980          270           17.2          19            8             0 \r\n 1980          271           16.2          18.5          0             0 \r\n 1980          272           12.1          22.5          6.5           0 \r\n 1980          273           14.9          24.5          10            0 \r\n 1980          274           15.7          22.5          9.5           0 \r\n 1980          275           15.7          25            9.5           0 \r\n 1980          276           16.1          23.5          10.5          0 \r\n 1980          277           8.2           17.5          6             0 \r\n 1980          278           15.9          10            1.5           0 \r\n 1980          279           17.3          12            2             1 \r\n 1980          280           16.5          17.5          0             0 \r\n 1980          281           16.9          22            4.5           0 \r\n 1980          282           16.6          27            6.5           0 \r\n 1980          283           16.2          26            8.5           0 \r\n 1980          284           16.7          26            6             0 \r\n 1980          285           16.3          23            7.5           0 \r\n 1980          286           16.2          16            4.5           0 \r\n 1980          287           8.8           13           -3.5           0 \r\n 1980          288           14.4          15.5          1.5           0 \r\n 1980          289           6.5           14.5          5.5           0 \r\n 1980          290           2.8           13.5          5.5           0 \r\n 1980          291           12.5          18.5          7.5           13 \r\n 1980          292           12.4          17.5          5             12 \r\n 1980          293           13.1          8             2.5           0 \r\n 1980          294           11.9          12.5         -1             0 \r\n 1980          295           10.6          17.5          2.5           0 \r\n 1980          296           5.8           15.5          2             0 \r\n 1980          297           3.1           14.5          4             1 \r\n 1980          298           5.9           13.5          5.5           0 \r\n 1980          299           11.9          7             0.5           19 \r\n 1980          300           10.6          4.5          -0.5           0 \r\n 1980          301           2.4           4.5          -2             0 \r\n 1980          302           12.3          2.5          -1.5           0 \r\n 1980          303           11.1          4.5          -5.5           0 \r\n 1980          304           9.1           7.5          -5.5           0 \r\n 1980          305           6.9           14.5         -2.5           0 \r\n 1980          306           12.2          16           -1.5           0 \r\n 1980          307           9.9           12.5         -2             0 \r\n 1980          308           9.2           14.5          0.5           0 \r\n 1980          309           8.3           15.5          6             0 \r\n 1980          310           11.7          12.5          1.5           0 \r\n 1980          311           7.3           14           -2.5           0 \r\n 1980          312           9             22            3             0 \r\n 1980          313           7.2           20.5          3.5           0 \r\n 1980          314           10.7          20.5          3             0 \r\n 1980          315           10.3          17.5          1             0 \r\n 1980          316           4.8           10           -3.5           0 \r\n 1980          317           5.9           7             0.5           0 \r\n 1980          318           1.1           13            3.5           0 \r\n 1980          319           7.3           13            1             0 \r\n 1980          320           3.1           1.5          -2             5 \r\n 1980          321           8.6           2.5          -3.5           0 \r\n 1980          322           9.6           6.5          -6.5           0 \r\n 1980          323           9.6           4.5          -5.5           0 \r\n 1980          324           7.9           4.5          -9.5           0 \r\n 1980          325           9.1           9            -6             0 \r\n 1980          326           7.4           7.5          -3             0 \r\n 1980          327           9.1           9.5          -7             0 \r\n 1980          328           5.5           12.5         -0.5           0 \r\n 1980          329           8.9           9.5          -1.5           0 \r\n 1980          330           5.3           2            -9.5           0 \r\n 1980          331           8.4           4.5          -12            0 \r\n 1980          332           3.4           6.5          -8.5           0 \r\n 1980          333           4.3           4.5          -5.5           0 \r\n 1980          334           8             5            -9             0 \r\n 1980          335           7.3           7.5          -2.5           0 \r\n 1980          336           6.6           12           -2             0.76 \r\n 1980          337           9.6           7.5          -9             5.33 \r\n 1980          338           7.1          -7.5          -18.5          0 \r\n 1980          339           7            -5.5          -19.5          0 \r\n 1980          340           5.3           0.5          -8.5           0 \r\n 1980          341           3.6           5            -2             0 \r\n 1980          342           3             4.5          -1             0.51 \r\n 1980          343           8             0.5          -5             0.51 \r\n 1980          344           4            -3            -10.5          0 \r\n 1980          345           6.5          -1.5          -10.5          0 \r\n 1980          346           7.8          -3            -15            0 \r\n 1980          347           7.4          -5            -13            0 \r\n 1980          348           8.2           6.5          -6.5           0 \r\n 1980          349           3.6           4            -13            0 \r\n 1980          350           4.1           1            -7.5           0 \r\n 1980          351           7             2            -8.5           0 \r\n 1980          352           5             0.5          -4.5           0 \r\n 1980          353           5             9            -1.5           0 \r\n 1980          354           8.4           6            -9             0 \r\n 1980          355           7.8          -6            -19            0 \r\n 1980          356           5.4          -12.5         -21            0 \r\n 1980          357           2            -7            -15.5          0 \r\n 1980          358           2            -1.5          -9.5           3.56 \r\n 1980          359           8.3          -1            -8.5           0.76 \r\n 1980          360           4.4          -5.5          -21            0 \r\n 1980          361           6.6          -10.5         -24            0 \r\n 1980          362           4.8          -5.5          -14            0 \r\n 1980          363           3.1          -1.5          -8.5           0 \r\n 1980          364           7.3           2.5          -5.5           0.25 \r\n 1980          365           3.4           4.5          -6.5           0 \r\n 1980          366           7.4           7.5          -4             0 \r\n 1981          1             7.5           0.5          -4.5           0 \r\n 1981          2             6.9          -1            -13            0 \r\n 1981          3             7.8          -3            -18            0 \r\n 1981          4             7.9          -11           -18            0 \r\n 1981          5             2.5          -2            -16            0 \r\n 1981          6             4.8           0            -10.5          0 \r\n 1981          7             6.3          -7            -18            0.25 \r\n 1981          8             7.9          -8            -18.5          0.25 \r\n 1981          9             6.5          -9.5          -17            0 \r\n 1981          10            4.6          -11           -21.5          0.25 \r\n 1981          11            8.5          -9.5          -22.5          0.76 \r\n 1981          12            4.8           5            -16            0 \r\n 1981          13            4.6           4.5          -8.5           0 \r\n 1981          14            6.5           0            -8.5           0 \r\n 1981          15            7.7          -2.5          -13.5          0 \r\n 1981          16            7.6          -7.5          -17.5          0 \r\n 1981          17            8.7           3.5          -16            0 \r\n 1981          18            9.1           9            -10            0 \r\n 1981          19            7.7           10           -7.5           0 \r\n 1981          20            8.5           6.5          -8             0 \r\n 1981          21            9.1           7            -11            0 \r\n 1981          22            9             9            -7.5           0 \r\n 1981          23            8.9           12           -7             0 \r\n 1981          24            9.5           15.5         -4.5           0 \r\n 1981          25            8.7           14            0.5           0 \r\n 1981          26            9.3           7            -0.5           0 \r\n 1981          27            9.2           1            -7.5           0 \r\n 1981          28            10.2         -4.5          -14.5          0 \r\n 1981          29            11.3         -5            -17.5          0 \r\n 1981          30            11.2         -0.5          -16.5          0 \r\n 1981          31            3.8          -1            -9             0.51 \r\n 1981          32            6.1          -3            -15            4.83 \r\n 1981          33            6.9          -13           -21.5          0 \r\n 1981          34            6.4          -10.5         -22.5          0 \r\n 1981          35            9.3          -9.5          -20            0 \r\n 1981          36            5            -3            -16            0.51 \r\n 1981          37            9.2           0            -10            0.51 \r\n 1981          38            9.2          -1.5          -11            0 \r\n 1981          39            8.2          -7            -18.5          0 \r\n 1981          40            8            -9            -18            0.25 \r\n 1981          41            3.6          -13           -21            3.81 \r\n 1981          42            12.8         -15.5         -29            1.52 \r\n 1981          43            12.1         -5.5          -23            0 \r\n 1981          44            10.2          3.5          -14.5          0 \r\n 1981          45            10.7          8.5          -6.5           0 \r\n 1981          46            9.3           10.5          0.5           0 \r\n 1981          47            12.4          15.5          0             0.25 \r\n 1981          48            11.4          18.5          2             0 \r\n 1981          49            12.8          18            4.5           0 \r\n 1981          50            12.8          15            0.5           0 \r\n 1981          51            13.6          15.5         -3             0 \r\n 1981          52            2.2           12.5          1             1.78 \r\n 1981          53            7.7           5             1             6.86 \r\n 1981          54            15            6.5          -2.5           4.83 \r\n 1981          55            14.9          12.5         -2.5           0 \r\n 1981          56            15.1          10           -1             0 \r\n 1981          57            14.2          5            -2             0 \r\n 1981          58            5.6           8.5          -0.5           5.08 \r\n 1981          59            14.2          6.5          -1             1.52 \r\n 1981          60            13.2          8            -2.5           0 \r\n 1981          61            14.5          5            -8.5           0 \r\n 1981          62            4.8           2.5          -8             0.25 \r\n 1981          63            6.2           4            -3.5           0.25 \r\n 1981          64            15.2          5            -6.5           0 \r\n 1981          65            15.7          2.5          -6.5           0 \r\n 1981          66            15.8          3.5          -10.5          0 \r\n 1981          67            14            7.5          -8             0 \r\n 1981          68            8.1           9            -3.5           0 \r\n 1981          69            15.6          11.5         -6.5           0 \r\n 1981          70            16.8          11.5         -6             0 \r\n 1981          71            16.8          13           -1.5           0 \r\n 1981          72            17.9          10.5         -4.5           0 \r\n 1981          73            18.2          14.5         -8.5           0 \r\n 1981          74            16            14.5          0.5           0 \r\n 1981          75            19            12.5         -6.5           0 \r\n 1981          76            15.5          10           -2             0 \r\n 1981          77            19.3          5.5          -7             0 \r\n 1981          78            19.5          6.5          -6             0 \r\n 1981          79            18.6          8.5          -8.5           0 \r\n 1981          80            5.9           9.5          -1.5           0 \r\n 1981          81            20.1          13           -3             0 \r\n 1981          82            14.9          16           -3.5           0 \r\n 1981          83            19.7          18           -1.5           0 \r\n 1981          84            14.6          19            2             0.25 \r\n 1981          85            16.9          16            1             0.76 \r\n 1981          86            20.9          17.5         -1             0 \r\n 1981          87            10.2          23            8             1.02 \r\n 1981          88            13.8          20.5          9             8.38 \r\n 1981          89            14            13            6             4.06 \r\n 1981          90            18.9          16            5             0.25 \r\n 1981          91            19.9          16.5          4             1 \r\n 1981          92            19.7          26            4.5           0 \r\n 1981          93            6.1           25            10            0 \r\n 1981          94            11.7          14            1             22 \r\n 1981          95            20.8          8            -1             0 \r\n 1981          96            21.7          15.5         -1             0 \r\n 1981          97            18.9          19.5          5.5           0 \r\n 1981          98            20            16.5          5.5           7 \r\n 1981          99            22.5          19            1.5           0 \r\n 1981          100           8.1           22            8             0 \r\n 1981          101           9.7           19            9.5           0 \r\n 1981          102           18.6          15.5          6.5           8 \r\n 1981          103           9.5           16            7             0 \r\n 1981          104           25.6          12.5         -0.5           0 \r\n 1981          105           25.7          15.5         -2             0 \r\n 1981          106           6.3           15            6             0 \r\n 1981          107           20            22            8             3 \r\n 1981          108           22.1          21.5          2.5           0 \r\n 1981          109           15.1          16.5          7             5 \r\n 1981          110           25.1          11.5          1.5           0 \r\n 1981          111           14.3          11            2             0 \r\n 1981          112           4             15.5          7             0 \r\n 1981          113           25.4          13.5          4             0 \r\n 1981          114           27.9          16.5          2             0 \r\n 1981          115           25.2          22.5          4.5           0 \r\n 1981          116           26.2          26            9             0 \r\n 1981          117           15.2          31            12.5          0 \r\n 1981          118           11.5          25.5          9.5           3 \r\n 1981          119           22            20.5          6.5           0 \r\n 1981          120           21.9          20.5          8.5           2 \r\n 1981          121           24.6          17.5          5             0 \r\n 1981          122           25.3          22.5          5.5           0 \r\n 1981          123           10.7          23            12.5          0 \r\n 1981          124           3.5           19            11.5          19 \r\n 1981          125           22.1          16            8             8 \r\n 1981          126           27.1          15.5          4             0 \r\n 1981          127           22            17            2.5           0 \r\n 1981          128           16.8          17.5          7             0 \r\n 1981          129           10.1          16            5.5           0 \r\n 1981          130           25.7          14           -1.5           0 \r\n 1981          131           29.5          17.5          0             0 \r\n 1981          132           13.2          16.5          4             0 \r\n 1981          133           15.4          16            6.5           9 \r\n 1981          134           28.1          20.5          5             0 \r\n 1981          135           29.1          24            5.5           0 \r\n 1981          136           13.9          24.5          8.5           0 \r\n 1981          137           8.8           21.5          10.5          1 \r\n 1981          138           7.4           17.5          7.5           1 \r\n 1981          139           29.2          22            3             0 \r\n 1981          140           30.9          25.5          5.5           0 \r\n 1981          141           27.7          27.5          8             0 \r\n 1981          142           20.3          25.5          13.5          2 \r\n 1981          143           5.4           23            13.5          17 \r\n 1981          144           18.8          20.5          8.5           28 \r\n 1981          145           27.8          19.5          8.5           0 \r\n 1981          146           26.1          20.5          10.5          0 \r\n 1981          147           27.2          24            11            0 \r\n 1981          148           12            26.5          14.5          0 \r\n 1981          149           26.4          28            14.5          17 \r\n 1981          150           28.8          26.5          10.5          0 \r\n 1981          151           29.6          27.5          10.5          0 \r\n 1981          152           28.6          29            12.5          0 \r\n 1981          153           9.9           27            16.5          3 \r\n 1981          154           29            25            11.5          0 \r\n 1981          155           24.9          28.5          13            0 \r\n 1981          156           29.3          32.5          17.5          0 \r\n 1981          157           31.5          31            12.5          0 \r\n 1981          158           14.7          32            16.5          0 \r\n 1981          159           22.3          29.5          15            0 \r\n 1981          160           27.5          21.5          13            8 \r\n 1981          161           30.3          24.5          12            16 \r\n 1981          162           14.8          27.5          15            0 \r\n 1981          163           14.7          29            15            0 \r\n 1981          164           16.1          32            17.5          29 \r\n 1981          165           9.8           30.5          21            0 \r\n 1981          166           9.6           26.5          14.5          16 \r\n 1981          167           29.5          24.5          10.5          0 \r\n 1981          168           29.2          27.5          12.5          0 \r\n 1981          169           26.6          27            16            0 \r\n 1981          170           22.2          25            10            0 \r\n 1981          171           25.9          26.5          16            4 \r\n 1981          172           11.8          25            14            0 \r\n 1981          173           30.3          24.5          12.5          9 \r\n 1981          174           27.6          29.5          13            0 \r\n 1981          175           25            28            16            87 \r\n 1981          176           31.7          27            12.5          0 \r\n 1981          177           31.3          27.5          12            0 \r\n 1981          178           18.6          27            16            0 \r\n 1981          179           22.4          31.5          19            0 \r\n 1981          180           12.3          30.5          18            15 \r\n 1981          181           30.3          27            13            5 \r\n 1981          182           30.5          27.5          15            0 \r\n 1981          183           25.9          28.5          16            0 \r\n 1981          184           18.1          27.5          18            0 \r\n 1981          185           27.4          29            18            8 \r\n 1981          186           29.7          30            18            0 \r\n 1981          187           30.5          31            16.5          0 \r\n 1981          188           29.6          31            19            0 \r\n 1981          189           25.4          32            21            0 \r\n 1981          190           30.2          31            14            0 \r\n 1981          191           25.3          31.5          13.5          0 \r\n 1981          192           14.5          33.5          21            0 \r\n 1981          193           19.6          34.5          23            0 \r\n 1981          194           8.1           34            22.5          0 \r\n 1981          195           15.9          34.5          22            0 \r\n 1981          196           17.1          32            19            27 \r\n 1981          197           27.5          29            18.5          0 \r\n 1981          198           15.9          30            20            0 \r\n 1981          199           13.9          30.5          19            0 \r\n 1981          200           24.8          29.5          19.5          23 \r\n 1981          201           19            29.5          17            7 \r\n 1981          202           25.1          27.5          15.5          3 \r\n 1981          203           24.3          25.5          16            3 \r\n 1981          204           15.5          24.5          14.5          25 \r\n 1981          205           16.4          27.5          16.5          13 \r\n 1981          206           15.5          26.5          18            17 \r\n 1981          207           18.2          21.5          13            11 \r\n 1981          208           13.1          19            12.5          0 \r\n 1981          209           23.9          20            11            13 \r\n 1981          210           23.9          22.5          10.5          0 \r\n 1981          211           20.2          26.5          16.5          0 \r\n 1981          212           15.7          28.5          18            0 \r\n 1981          213           8.1           27.5          19            0 \r\n 1981          214           18            28            18.5          22 \r\n 1981          215           20.3          29            16.5          0 \r\n 1981          216           13.3          30.5          18.5          3 \r\n 1981          217           11.2          29.5          20            7 \r\n 1981          218           22.7          29            18            0 \r\n 1981          219           20.9          26.5          16            0 \r\n 1981          220           23            27            13.5          4 \r\n 1981          221           24.6          26            13.5          1 \r\n 1981          222           26.5          25.5          10            0 \r\n 1981          223           24.4          27.5          13            0 \r\n 1981          224           25.3          30            15.5          0 \r\n 1981          225           9.9           29            16            0 \r\n 1981          226           8.4           29            19            14 \r\n 1981          227           23.7          28            16.5          0 \r\n 1981          228           25.1          24.5          11.5          0 \r\n 1981          229           26.1          23            8.5           0 \r\n 1981          230           25.5          24            11            0 \r\n 1981          231           25.3          24.5          9             0 \r\n 1981          232           24.4          25.5          9             0 \r\n 1981          233           16.8          26            11            0 \r\n 1981          234           22.3          27            13            0 \r\n 1981          235           9.3           27.5          14.5          0 \r\n 1981          236           20.2          27            15.5          8 \r\n 1981          237           6.4           28            16.5          0 \r\n 1981          238           6.2           26.5          15.5          6 \r\n 1981          239           4.9           24            17            7 \r\n 1981          240           11.1          24            16.5          17 \r\n 1981          241           18.3          25            16.5          4 \r\n 1981          242           7.2           26            15            0 \r\n 1981          243           6.7           27.5          17.5          0 \r\n 1981          244           22.8          23            10.5          0 \r\n 1981          245           24.9          22            7             0 \r\n 1981          246           23.2          24.5          9.5           0 \r\n 1981          247           22.9          24            13            0 \r\n 1981          248           23.1          25.5          10.5          0 \r\n 1981          249           20.6          26.5          12.5          0 \r\n 1981          250           19.7          25            14            14 \r\n 1981          251           22.5          24            9             0 \r\n 1981          252           17.2          28.5          11            0 \r\n 1981          253           22            31.5          13.5          0 \r\n 1981          254           18.9          30            14.5          0 \r\n 1981          255           21.8          29            10.5          0 \r\n 1981          256           20.8          30            12            0 \r\n 1981          257           21.2          28            12            0 \r\n 1981          258           14.4          21            9             0 \r\n 1981          259           13.7          17            5.5           0 \r\n 1981          260           19.8          16.5          3             0 \r\n 1981          261           19.8          20.5          3.5           0 \r\n 1981          262           19.5          25.5          7             0 \r\n 1981          263           18.7          26.5          7.5           0 \r\n 1981          264           17            25            11            0 \r\n 1981          265           16.1          19            6             0 \r\n 1981          266           14.1          20            7.5           0 \r\n 1981          267           5.1           21            11            0 \r\n 1981          268           7.3           20.5          13            17 \r\n 1981          269           12            20.5          12.5          3 \r\n 1981          270           17.4          19            7             0 \r\n 1981          271           16.2          20            2             0 \r\n 1981          272           7.6           26            9             0 \r\n 1981          273           7.3           25            12            0 \r\n 1981          274           17.6          17            5.5           2 \r\n 1981          275           18.9          14           -2.5           0 \r\n 1981          276           4.1           13            3             0 \r\n 1981          277           11.4          15.5          7             17 \r\n 1981          278           7.7           15            10            0 \r\n 1981          279           17.5          15            6.5           1 \r\n 1981          280           17.3          16.5         -0.5           0 \r\n 1981          281           14.8          17.5          1.5           0 \r\n 1981          282           5.6           15            4.5           0 \r\n 1981          283           12.7          18.5          8             0 \r\n 1981          284           15.4          18.5          4.5           0 \r\n 1981          285           13.8          17            8.5           0 \r\n 1981          286           3.7           16.5          12            3 \r\n 1981          287           3             16            11            4 \r\n 1981          288           14.8          17            5             7 \r\n 1981          289           14.1          18.5          2.5           0 \r\n 1981          290           3.1           17.5          8             9 \r\n 1981          291           12.3          11.5          2             4 \r\n 1981          292           14            16           -3.5           0 \r\n 1981          293           9.8           16            4             0 \r\n 1981          294           11.1          11            2.5           1 \r\n 1981          295           8.2           9            -4             0 \r\n 1981          296           11.1          3.5          -7             0 \r\n 1981          297           2.4           1.5          -5.5           0 \r\n 1981          298           7.1           6            -2.5           2 \r\n 1981          299           12.3          10           -5.5           0 \r\n 1981          300           11.2          17           -1             0 \r\n 1981          301           8.6           19            3             0 \r\n 1981          302           10.6          18.5          6             0 \r\n 1981          303           7.5           18            9.5           0 \r\n 1981          304           6.1           17.5          7             2 \r\n 1981          305           4.6           13.5          6.5           0 \r\n 1981          306           4.3           14.5          8.5           0 \r\n 1981          307           6.9           17.5          9.5           0 \r\n 1981          308           6.2           16            10.5          2 \r\n 1981          309           10.8          13            5.5           5 \r\n 1981          310           11.5          16            0             0 \r\n 1981          311           10.7          17           -1             0 \r\n 1981          312           11.2          12            0             0 \r\n 1981          313           11.5          6            -8             0 \r\n 1981          314           10.5          12           -3.5           0 \r\n 1981          315           10.4          12.5         -4.5           0 \r\n 1981          316           10.3          13.5         -1             0 \r\n 1981          317           9.2           16            0             0 \r\n 1981          318           8.1           17.5          4             0 \r\n 1981          319           2             15.5          7             0 \r\n 1981          320           9             13.5         -1             0 \r\n 1981          321           9.2           14.5         -3             0 \r\n 1981          322           6.6           12            1.5           0 \r\n 1981          323           4             8            -1.5           5 \r\n 1981          324           8.8          -1            -7             6 \r\n 1981          325           8.5          -3.5          -10            0 \r\n 1981          326           8.7           2            -9             0 \r\n 1981          327           2.5           2.5          -2.5           7 \r\n 1981          328           6.1           2            -1.5           5 \r\n 1981          329           2.9           2            -1             0 \r\n 1981          330           3.2           2            -0.5           1 \r\n 1981          331           8.4           1            -3             0 \r\n 1981          332           5.8           1            -5             0 \r\n 1981          333           8.1           2.5          -6.5           0 \r\n 1981          334           1.9           2            -2.5           0 \r\n 1981          335           4.1           0.5          -3             12.19 \r\n 1981          336           6.4          -1.5          -10.5          0.25 \r\n 1981          337           5             1            -11            0.51 \r\n 1981          338           6.8           1.5          -6.5           0.25 \r\n 1981          339           5.5          -0.5          -11            0.25 \r\n 1981          340           7.7           3            -5             0 \r\n 1981          341           8.2           4            -2.5           0 \r\n 1981          342           7.9           1.5          -4.5           0 \r\n 1981          343           7.9          -1.5          -8             0 \r\n 1981          344           3.7          -3            -12.5          0 \r\n 1981          345           7.7          -0.5          -6             0 \r\n 1981          346           6.1           1            -2.5           0 \r\n 1981          347           1.8           1            -1.5           0.51 \r\n 1981          348           8.2           0            -13.5          4.06 \r\n 1981          349           5.6          -9.5          -16            0.51 \r\n 1981          350           2.9          -12.5         -22.5          0.51 \r\n 1981          351           6.6          -14           -22            0 \r\n 1981          352           6.8          -13.5         -24            0 \r\n 1981          353           8.4          -13           -25            0 \r\n 1981          354           2.5          -4            -20.5          0 \r\n 1981          355           3.6           2            -6.5           1.52 \r\n 1981          356           5.7           0.5          -8.5           0 \r\n 1981          357           8.1           0            -12.5          0 \r\n 1981          358           8            -0.5          -11.5          0 \r\n 1981          359           4.7          -1            -12.5          0 \r\n 1981          360           3.7           0            -6.5           0.76 \r\n 1981          361           6            -1.5          -7.5           0.51 \r\n 1981          362           6.5          -5            -16.5          0 \r\n 1981          363           6.2          -6.5          -18.5          0 \r\n 1981          364           3.1          -1.5          -16            0 \r\n 1981          365           2.6          -1            -14.5          1.02 \r\n 1982          1             7.1          -10           -23            0.51 \r\n 1982          2             2.4          -2.5          -13.5          2.79 \r\n 1982          3             2.8          -5            -20            4.57 \r\n 1982          4             6.5          -10           -17.5          1.52 \r\n 1982          5             5.8          -5.5          -16.5          0 \r\n 1982          6             4.5          -12           -20.5          0.51 \r\n 1982          7             7.7          -15           -26.5          0 \r\n 1982          8             3.6          -11           -22            0 \r\n 1982          9             7.3          -15.5         -28            0.51 \r\n 1982          10            8.7          -21.5         -32            0.51 \r\n 1982          11            7.1          -14.5         -25            0 \r\n 1982          12            1.8          -13           -19.5          1.27 \r\n 1982          13            4.7          -14           -23            1.02 \r\n 1982          14            7.1          -15           -31.5          0 \r\n 1982          15            4.9          -9.5          -24.5          0.76 \r\n 1982          16            9.8          -16           -28.5          0.25 \r\n 1982          17            6.1          -11.5         -27.5          1.02 \r\n 1982          18            6.9          -6            -16            0.76 \r\n 1982          19            5.8          -4.5          -15            0.25 \r\n 1982          20            7            -6.5          -17            0 \r\n 1982          21            8.3          -6            -10            0.51 \r\n 1982          22            5.2          -5            -9.5           12.7 \r\n 1982          23            7.5          -5.5          -19.5          9.4 \r\n 1982          24            7.3          -16           -25            1.52 \r\n 1982          25            8.4          -16.5         -24            1.52 \r\n 1982          26            8.5          -11           -26.5          0 \r\n 1982          27            6.4           2            -16            0 \r\n 1982          28            11.1          2.5          -16            0 \r\n 1982          29            3.2          -1            -12.5          2.03 \r\n 1982          30            7.9          -3            -16            1.02 \r\n 1982          31            11.2         -9.5          -25            0 \r\n 1982          32            5.3          -9.5          -25            0.51 \r\n 1982          33            3.7          -7            -17            2.03 \r\n 1982          34            10.1         -14           -26.5          0.25 \r\n 1982          35            3.3          -17           -28            0 \r\n 1982          36            4.6          -17.5         -24            1.52 \r\n 1982          37            10.9         -14           -28            0 \r\n 1982          38            9.3          -3.5          -19            0 \r\n 1982          39            7            -6.5          -19.5          0 \r\n 1982          40            10.5         -13.5         -24.5          0 \r\n 1982          41            8.3          -11           -25.5          0.25 \r\n 1982          42            12           -8            -20            0 \r\n 1982          43            11.3         -5.5          -18.5          0 \r\n 1982          44            8.7          -1            -11.5          0.25 \r\n 1982          45            5.3           2            -10            0 \r\n 1982          46            4.5           4            -5             0 \r\n 1982          47            5.9           3            -3.5           0 \r\n 1982          48            5             1.5          -2             0 \r\n 1982          49            6.6           1.5          -1             1.52 \r\n 1982          50            7             4            -3             0 \r\n 1982          51            12.7          6.5          -0.5           0 \r\n 1982          52            12.3          6            -3             0 \r\n 1982          53            14.2          9.5          -1.5           0 \r\n 1982          54            9.5           7            -2             0 \r\n 1982          55            11.6          0            -5             0 \r\n 1982          56            15.6         -1.5          -9.5           0 \r\n 1982          57            16.2          0.5          -7.5           0 \r\n 1982          58            14.9          2.5          -6             0 \r\n 1982          59            9.2           5            -4             0 \r\n 1982          60            10.3          4.5          -3.5           0 \r\n 1982          61            1.5           0            -6.5           0.51 \r\n 1982          62            7.5          -5            -9.5           2.03 \r\n 1982          63            7.4          -3            -8             3.05 \r\n 1982          64            14.7         -3            -12            0 \r\n 1982          65            12.9         -1.5          -15.5          0 \r\n 1982          66            15.6         -5.5          -17.5          0 \r\n 1982          67            12.6         -3.5          -14.5          0.76 \r\n 1982          68            7.8          -6            -18            0.25 \r\n 1982          69            12.2          4            -11            0 \r\n 1982          70            17            5            -4.5           0 \r\n 1982          71            2.3           5            -2.5           0.51 \r\n 1982          72            17.6          9.5          -0.5           0.51 \r\n 1982          73            7             9            -2.5           0 \r\n 1982          74            5.2           5.5           0.5           0 \r\n 1982          75            11.9          4.5           0.5           6.6 \r\n 1982          76            17            3.5          -0.5           0 \r\n 1982          77            13.7          6             0             0.25 \r\n 1982          78            5.4           4.5           0.5           16.51 \r\n 1982          79            16            4.5          -0.5           4.57 \r\n 1982          80            15.9          4.5          -2             0 \r\n 1982          81            19.8          6.5          -3             0 \r\n 1982          82            13.7          12           -1.5           0 \r\n 1982          83            10.6          9            -1             0.51 \r\n 1982          84            10.5          5.5          -3             0 \r\n 1982          85            16.7          2            -5.5           0 \r\n 1982          86            23.2          2.5          -7.5           0 \r\n 1982          87            21.9          8.5          -3             0 \r\n 1982          88            14.3          12.5          1             0 \r\n 1982          89            13.9          13.5          6             1.78 \r\n 1982          90            23.7          16            1.5           0 \r\n 1982          91            17.2          19            2             0 \r\n 1982          92            3.6           23            5             0 \r\n 1982          93            19.8          14.5         -7.5           5 \r\n 1982          94            18.2          0            -8.5           0 \r\n 1982          95            4.2           0            -7             4 \r\n 1982          96            22.1         -0.5          -14            3 \r\n 1982          97            7.3          -1.5          -7.5           0 \r\n 1982          98            5.3          -1.5          -6             4 \r\n 1982          99            20.3          2            -7.5           3 \r\n 1982          100           18.9          3            -3             0 \r\n 1982          101           23.5          7.5          -5.5           0 \r\n 1982          102           11.2          15            2             0 \r\n 1982          103           23.9          15.5          4             0 \r\n 1982          104           18.5          17.5          3.5           0 \r\n 1982          105           10.7          19.5          8             7 \r\n 1982          106           8.2           18            8             29 \r\n 1982          107           18.2          14.5          2.5           10 \r\n 1982          108           21.9          18            2.5           0 \r\n 1982          109           6.1           16            5             6 \r\n 1982          110           26.6          8            -0.5           0 \r\n 1982          111           12.6          11.5         -2.5           0 \r\n 1982          112           26.6          15            0             0 \r\n 1982          113           27.4          19            3.5           0 \r\n 1982          114           26.5          21.5          5             0 \r\n 1982          115           2.7           21            9.5           0 \r\n 1982          116           27.4          18            6.5           0 \r\n 1982          117           25            16            3             0 \r\n 1982          118           3.5           15            3             0 \r\n 1982          119           26.7          17.5          6             0 \r\n 1982          120           16.8          19            7             0 \r\n 1982          121           24.2          21            3.5           0 \r\n 1982          122           25.3          24.5          4.5           0 \r\n 1982          123           19.1          27.5          9             0 \r\n 1982          124           9.6           27.5          14            0 \r\n 1982          125           5.5           25            9             29 \r\n 1982          126           13.2          14.5          6             20 \r\n 1982          127           22.2          19            4.5           10 \r\n 1982          128           19.2          21.5          6             6 \r\n 1982          129           12.7          23.5          12.5          0 \r\n 1982          130           18.6          27.5          13.5          0 \r\n 1982          131           8.1           25.5          14.5          19 \r\n 1982          132           5.4           22.5          15            13 \r\n 1982          133           5.5           21.5          14.5          15 \r\n 1982          134           4.8           21            12.5          21 \r\n 1982          135           5.7           21            12            7 \r\n 1982          136           10.2          24            12.5          9 \r\n 1982          137           6.7           23.5          15            3 \r\n 1982          138           18.2          24            11.5          7 \r\n 1982          139           16.9          25.5          12            6 \r\n 1982          140           14.2          24            13            0 \r\n 1982          141           4.8           16            7.5           24 \r\n 1982          142           6.7           14            7.5           14 \r\n 1982          143           18.8          16.5          9.5           1 \r\n 1982          144           14.9          18            11            0 \r\n 1982          145           21.3          18            13            0 \r\n 1982          146           8.2           18            13            20 \r\n 1982          147           24.8          21.5          13.5          6 \r\n 1982          148           21            23.5          13            0 \r\n 1982          149           18.3          23.5          15.5          0 \r\n 1982          150           12.6          23            12.5          6 \r\n 1982          151           15.2          20.5          11            0 \r\n 1982          152           30.9          23            6.5           0 \r\n 1982          153           17.6          22            8.5           0 \r\n 1982          154           26.9          19.5          9             0 \r\n 1982          155           30.4          22            7.5           0 \r\n 1982          156           30            23.5          9.5           0 \r\n 1982          157           17.4          22.5          13            0 \r\n 1982          158           30.4          23.5          12.5          14 \r\n 1982          159           22.5          22.5          11            0 \r\n 1982          160           21.9          20            13            0 \r\n 1982          161           29.7          24            8.5           0 \r\n 1982          162           17.2          24            10.5          0 \r\n 1982          163           21.5          24.5          11            0 \r\n 1982          164           31.6          26.5          8.5           0 \r\n 1982          165           7.1           24.5          16            0 \r\n 1982          166           15.7          22.5          14            8 \r\n 1982          167           31.2          25.5          9.5           0 \r\n 1982          168           10.6          25            14            0 \r\n 1982          169           16.9          22            12.5          2 \r\n 1982          170           29.5          22            9.5           3 \r\n 1982          171           29            22.5          12            0 \r\n 1982          172           26.8          25            10            0 \r\n 1982          173           30.9          25            7.5           0 \r\n 1982          174           30.1          28            13            0 \r\n 1982          175           15.8          30.5          17.5          0 \r\n 1982          176           16.1          26            15            7 \r\n 1982          177           19.6          21            13.5          0 \r\n 1982          178           24.9          27.5          15            0 \r\n 1982          179           23.4          30.5          16            0 \r\n 1982          180           26.1          29.5          15.5          0 \r\n 1982          181           13.3          23.5          15            0 \r\n 1982          182           15.1          26            13.5          0 \r\n 1982          183           10.2          25.5          16            0 \r\n 1982          184           22.3          32.5          16.5          1 \r\n 1982          185           20.7          35.5          19.5          0 \r\n 1982          186           14.5          35            22.5          0 \r\n 1982          187           11            31.5          18            13 \r\n 1982          188           29.1          28            15            18 \r\n 1982          189           26.3          28.5          15            0 \r\n 1982          190           15.7          27.5          17.5          20 \r\n 1982          191           10.9          26.5          16.5          60 \r\n 1982          192           28.8          26            15.5          5 \r\n 1982          193           25.6          29            16            3 \r\n 1982          194           24.1          29            15.5          0 \r\n 1982          195           19.3          29.5          18.5          0 \r\n 1982          196           7.2           30.5          21            0 \r\n 1982          197           10.8          31.5          19.5          6 \r\n 1982          198           7.5           32            23            0 \r\n 1982          199           26.2          30            17.5          11 \r\n 1982          200           23.2          29.5          17            0 \r\n 1982          201           15.8          31            19.5          0 \r\n 1982          202           15.7          29            18.5          16 \r\n 1982          203           25.4          29.5          17            0 \r\n 1982          204           23            29.5          17.5          0 \r\n 1982          205           27            29.5          18.5          0 \r\n 1982          206           18.7          31.5          19.5          0 \r\n 1982          207           17.7          31            19.5          0 \r\n 1982          208           25.4          28.5          18.5          5 \r\n 1982          209           26.2          28.5          15            0 \r\n 1982          210           20.2          29            17.5          0 \r\n 1982          211           26.8          28            14            0 \r\n 1982          212           23.6          29            14            0 \r\n 1982          213           20.6          31.5          17            0 \r\n 1982          214           23.1          33            19            0 \r\n 1982          215           15.6          34.5          23            0 \r\n 1982          216           7.6           30.5          19            16 \r\n 1982          217           20.9          28.5          20            12 \r\n 1982          218           23.1          28.5          19            0 \r\n 1982          219           21.5          29            18.5          0 \r\n 1982          220           28            28            16            0 \r\n 1982          221           16.3          23            12.5          0 \r\n 1982          222           24.3          22            9.5           0 \r\n 1982          223           27.5          23.5          6.5           0 \r\n 1982          224           22.2          24            10.5          0 \r\n 1982          225           12.7          24.5          13.5          3 \r\n 1982          226           16.3          25            16.5          0 \r\n 1982          227           14.7          26            16.5          0 \r\n 1982          228           22.4          29            16            0 \r\n 1982          229           14.1          30            16.5          0 \r\n 1982          230           12.5          29            17.5          0 \r\n 1982          231           15.9          30.5          18.5          0 \r\n 1982          232           24.1          29            19            0 \r\n 1982          233           23.3          28.5          12.5          0 \r\n 1982          234           17.5          27.5          17            0 \r\n 1982          235           23.2          28            14            0 \r\n 1982          236           14.2          25.5          15.5          7 \r\n 1982          237           22.5          26.5          10            6 \r\n 1982          238           19.9          26.5          14            0 \r\n 1982          239           22.5          24            10            0 \r\n 1982          240           20.1          20            9             0 \r\n 1982          241           6.8           21            14            0 \r\n 1982          242           15.7          23.5          15.5          37 \r\n 1982          243           5.6           27            16.5          0 \r\n 1982          244           19.4          27            15.5          17 \r\n 1982          245           24.6          25            12.5          0 \r\n 1982          246           24.2          24.5          10            0 \r\n 1982          247           23.1          26.5          11            0 \r\n 1982          248           9             25.5          15            7 \r\n 1982          249           3.3           22            14            0 \r\n 1982          250           14.4          21            13            0 \r\n 1982          251           15.9          23            12            0 \r\n 1982          252           12.7          26            16.5          0 \r\n 1982          253           14.4          28            19            0 \r\n 1982          254           17.8          30            17.5          0 \r\n 1982          255           7.5           28.5          18            0 \r\n 1982          256           6.2           23.5          12            19 \r\n 1982          257           3.9           15            11.5          3 \r\n 1982          258           13.6          14.5          9.5           1 \r\n 1982          259           14.3          14            6             0 \r\n 1982          260           8.7           17.5          9.5           0 \r\n 1982          261           19.9          20            4.5           0 \r\n 1982          262           17.4          20            7             0 \r\n 1982          263           18.3          16            6             0 \r\n 1982          264           19.2          16.5          0             0 \r\n 1982          265           18.8          20            2             0 \r\n 1982          266           12.4          25            8.5           0 \r\n 1982          267           10            22.5          10.5          0 \r\n 1982          268           16.8          18.5          6.5           0 \r\n 1982          269           17.5          19.5          5             0 \r\n 1982          270           15.3          20.5          4             0 \r\n 1982          271           11.6          23.5          12.5          0 \r\n 1982          272           4.3           25            16            7 \r\n 1982          273           4.9           23.5          14            18 \r\n 1982          274           5             22            11.5          18 \r\n 1982          275           5.8           21.5          13.5          5 \r\n 1982          276           18.2          21            8             9 \r\n 1982          277           16.4          24            7.5           0 \r\n 1982          278           10.6          26.5          10.5          0 \r\n 1982          279           6             23.5          9             0 \r\n 1982          280           17.1          21            5.5           7 \r\n 1982          281           6.9           20            7             0 \r\n 1982          282           14.4          18.5          9.5           7 \r\n 1982          283           9.9           16            8.5           2 \r\n 1982          284           12            12.5          6.5           0 \r\n 1982          285           10.4          10.5          5.5           0 \r\n 1982          286           10            11            5.5           0 \r\n 1982          287           14.8          20.5          2.5           0 \r\n 1982          288           14.7          18            6             0 \r\n 1982          289           14.6          15           -1             0 \r\n 1982          290           13.2          19            4.5           0 \r\n 1982          291           9.2           20.5          8             0 \r\n 1982          292           4.1           17.5          6.5           0 \r\n 1982          293           14.2          8            -0.5           24 \r\n 1982          294           13.8          7.5          -4             0 \r\n 1982          295           13.1          12           -3             0 \r\n 1982          296           11.9          15            0.5           0 \r\n 1982          297           11.8          16            2             0 \r\n 1982          298           12            19.5          2             0 \r\n 1982          299           8.3           18.5          3             0 \r\n 1982          300           4.8           16            6.5           0 \r\n 1982          301           1.1           14.5          7.5           2 \r\n 1982          302           8.9           15.5          4.5           3 \r\n 1982          303           9.8           14            3             0 \r\n 1982          304           7.5           14.5          3.5           0 \r\n 1982          305           8.1           14.5          6.5           0 \r\n 1982          306           7.1           12.5          3.5           2 \r\n 1982          307           7.8           8            -3             0 \r\n 1982          308           7.1           1            -7             0 \r\n 1982          309           10.6         -1            -5.5           0 \r\n 1982          310           11.5          10           -6.5           0 \r\n 1982          311           2             14            0             0 \r\n 1982          312           7.3           9            -3.5           0 \r\n 1982          313           1.7           6             1             9 \r\n 1982          314           10.3          8             3             22 \r\n 1982          315           2.5           7.5           0.5           9 \r\n 1982          316           10.2          6.5          -10            18 \r\n 1982          317           3.5          -3.5          -12.5          0 \r\n 1982          318           10.2         -3.5          -10            0 \r\n 1982          319           9.6           2.5          -9.5           0 \r\n 1982          320           9.7           6            -7             0 \r\n 1982          321           9.6           9            -6             0 \r\n 1982          322           5.1           9.5          -1.5           0 \r\n 1982          323           2             12.5          4.5           7 \r\n 1982          324           6.2           14.5          2.5           0 \r\n 1982          325           7.1           7.5          -3             0 \r\n 1982          326           4.4           4            -4             0 \r\n 1982          327           7.6          -1.5          -11.5          0 \r\n 1982          328           8.9           0            -12.5          0 \r\n 1982          329           6             1.5          -10            0 \r\n 1982          330           8.4           1.5          -9.5           0 \r\n 1982          331           6.9           0.5          -11.5          0 \r\n 1982          332           2.4           1            -4.5           8 \r\n 1982          333           4.8           2.5          -1             2 \r\n 1982          334           3.7           5.5           0             0 \r\n 1982          335           1.6           13            2.5           0 \r\n 1982          336           2.6           15.5          8.5           2.03 \r\n 1982          337           5.6           12           -1             0 \r\n 1982          338           5.7           4            -3.5           1.78 \r\n 1982          339           2.4           4            -1.5           19.05 \r\n 1982          340           7.2           3            -7             7.11 \r\n 1982          341           5.5          -0.5          -9             2.29 \r\n 1982          342           6.2          -4.5          -14            0 \r\n 1982          343           8.3          -5.5          -20.5          0 \r\n 1982          344           8            -1            -12            0 \r\n 1982          345           9.1          -5            -19.5          0 \r\n 1982          346           5.2          -6.5          -19.5          0 \r\n 1982          347           6.5          -0.5          -13            0 \r\n 1982          348           4.7           2            -3             0 \r\n 1982          349           3             0.5          -5             0 \r\n 1982          350           6.2          -3            -9             0 \r\n 1982          351           4.3           1.5          -8.5           0 \r\n 1982          352           7.8           5.5          -1.5           0 \r\n 1982          353           7.9           3.5          -2.5           0 \r\n 1982          354           7.6           1            -5             0 \r\n 1982          355           6.4           2.5          -7             0 \r\n 1982          356           2.4           4.5          -2.5           0.25 \r\n 1982          357           3.9           4            -0.5           0.25 \r\n 1982          358           1.5           4            -2             10.92 \r\n 1982          359           6             4.5          -6             4.57 \r\n 1982          360           7.9           2.5          -9.5           0 \r\n 1982          361           2.4           1.5          -5             5.84 \r\n 1982          362           6.1          -0.5          -12            28.7 \r\n 1982          363           6            -6.5          -13.5          0 \r\n 1982          364           5.3          -4.5          -12            0 \r\n 1982          365           6.7          -2            -9.5           0 \r\n 1983          1             7.4          -2            -8             0 \r\n 1983          2             7.2          -3            -9.5           0 \r\n 1983          3             5.5          -3            -11            0 \r\n 1983          4             5.9           0.5          -6.5           0 \r\n 1983          5             5.4          -0.5          -8             0 \r\n 1983          6             6.1           3            -3.5           0 \r\n 1983          7             6.9           1            -8.5           0 \r\n 1983          8             7.2          -1            -8             0 \r\n 1983          9             3.1           3            -5             0.25 \r\n 1983          10            4.4           2.5          -5             4.06 \r\n 1983          11            6.6          -2            -13            1.02 \r\n 1983          12            7            -2            -16            0 \r\n 1983          13            6.8           1.5          -9             0 \r\n 1983          14            6.5           1.5          -8.5           0 \r\n 1983          15            8.6          -6            -15            0 \r\n 1983          16            6.6          -4            -15            0 \r\n 1983          17            8.6          -5            -13.5          0 \r\n 1983          18            7.4          -8.5          -16.5          0 \r\n 1983          19            7.5          -5.5          -13.5          0 \r\n 1983          20            7.5          -3            -8             0 \r\n 1983          21            9.8          -0.5          -6.5           0 \r\n 1983          22            5.5          -1            -8             0 \r\n 1983          23            7.6           1            -5             0.25 \r\n 1983          24            7.8          -0.5          -6.5           0 \r\n 1983          25            4.5          -3.5          -12            0.76 \r\n 1983          26            9.8          -10           -16.5          0.76 \r\n 1983          27            8.6          -6.5          -21            0 \r\n 1983          28            4.9           2            -9             0 \r\n 1983          29            2.6           2            -3.5           10.16 \r\n 1983          30            10.8         -1.5          -10            2.03 \r\n 1983          31            9.7          -6.5          -15            0 \r\n 1983          32            2.9          -6            -14            1.27 \r\n 1983          33            2.1          -5            -9             11.18 \r\n 1983          34            4.7          -6.5          -16.5          4.32 \r\n 1983          35            10.3         -9.5          -18            0 \r\n 1983          36            2.5          -3.5          -15.5          0.76 \r\n 1983          37            8.7          -5            -18.5          1.78 \r\n 1983          38            8.5          -8.5          -23            0 \r\n 1983          39            5.7          -4            -16.5          0 \r\n 1983          40            3.5          -1            -7             0 \r\n 1983          41            5             0            -4             0.25 \r\n 1983          42            5.6           0.5          -3.5           0 \r\n 1983          43            7.5           1            -3             0 \r\n 1983          44            8.1           3.5          -1.5           0 \r\n 1983          45            3.2           5            -3             0 \r\n 1983          46            3             2.5          -0.5           3.81 \r\n 1983          47            8.3           3            -1             5.08 \r\n 1983          48            8.2           3            -1.5           0 \r\n 1983          49            7.7           5            -1.5           0 \r\n 1983          50            3.5           8.5           0.5           0 \r\n 1983          51            3.5           8            -0.5           0 \r\n 1983          52            7             4.5          -0.5           0 \r\n 1983          53            5.4           5.5          -0.5           0 \r\n 1983          54            5.7           3            -3             0.25 \r\n 1983          55            15.1          1.5          -4.5           0.76 \r\n 1983          56            16.1         -0.5          -9             0 \r\n 1983          57            11.7          3.5          -5.5           0 \r\n 1983          58            7.7           7.5           0.5           0 \r\n 1983          59            15.7          10           -1             0 \r\n 1983          60            9.4           13.5          1             0 \r\n 1983          61            6.2           16.5         -1             0 \r\n 1983          62            6.7           19.5          3             0 \r\n 1983          63            1.1           18.5          7             0 \r\n 1983          64            2             14.5          10.5          2.54 \r\n 1983          65            1.9           12.5          6.5           20.32 \r\n 1983          66            7.7           8.5          -2             6.1 \r\n 1983          67            4.5          -1.5          -9.5           0 \r\n 1983          68            11.7         -3            -8.5           0.25 \r\n 1983          69            12.3         -2.5          -7.5           0 \r\n 1983          70            15.8          0.5          -5.5           0 \r\n 1983          71            14.4          4.5          -4             0 \r\n 1983          72            13            10           -1             0 \r\n 1983          73            16.4          8.5          -0.5           2.79 \r\n 1983          74            4.4           4            -0.5           11.18 \r\n 1983          75            4.7           1.5          -1             10.92 \r\n 1983          76            6             2.5          -0.5           0 \r\n 1983          77            12            2.5          -0.5           0.51 \r\n 1983          78            9.4           1.5          -2             0 \r\n 1983          79            2.9           0            -6             2.29 \r\n 1983          80            16.7         -2            -8             3.56 \r\n 1983          81            21.4          0            -11.5          0 \r\n 1983          82            20.8          2            -10.5          0 \r\n 1983          83            19.5          3            -5.5           0 \r\n 1983          84            8.2           2.5          -3             0.51 \r\n 1983          85            3.5           1            -2.5           6.35 \r\n 1983          86            6.7           1            -2.5           9.14 \r\n 1983          87            22.2          4.5          -6             0 \r\n 1983          88            8.9           4            -5.5           0 \r\n 1983          89            13.1          5.5          -1             0.25 \r\n 1983          90            8.2           9             1.5           3.3 \r\n 1983          91            1.5           8             2             2 \r\n 1983          92            2.9           6             1             0 \r\n 1983          93            11            5            -0.5           1 \r\n 1983          94            3.4           5            -1             0 \r\n 1983          95            4.8           4.5           0             0 \r\n 1983          96            8.5           4.5           0             8 \r\n 1983          97            13.4          5.5           0             0 \r\n 1983          98            11.9          7.5          -3             0 \r\n 1983          99            6.1           7            -1             5 \r\n 1983          100           9.7           5.5          -0.5           9 \r\n 1983          101           15.4          10.5         -1.5           0 \r\n 1983          102           4.4           9.5           2             8 \r\n 1983          103           5.4           8             3             17 \r\n 1983          104           9.4           5.5          -2.5           12 \r\n 1983          105           26.8          4            -5             2 \r\n 1983          106           18.2          4.5          -3.5           0 \r\n 1983          107           4.4           4            -3.5           0 \r\n 1983          108           26.2          5.5          -5             0 \r\n 1983          109           25.7          9            -2.5           0 \r\n 1983          110           18            13            0.5           0 \r\n 1983          111           21.7          16            2.5           0 \r\n 1983          112           23            17.5          3             0 \r\n 1983          113           18.3          16.5          4.5           0 \r\n 1983          114           28            18            2             0 \r\n 1983          115           27.2          21.5          4.5           0 \r\n 1983          116           21.4          24.5          10.5          0 \r\n 1983          117           8.1           22.5          4             0 \r\n 1983          118           16            19.5          9             0 \r\n 1983          119           21.7          18            3.5           0 \r\n 1983          120           24.2          16            5             0 \r\n 1983          121           4.4           16            6             0 \r\n 1983          122           3.8           12            4             19 \r\n 1983          123           17.9          16.5          4.5           9 \r\n 1983          124           26            17            4             0 \r\n 1983          125           16.2          20            5             0 \r\n 1983          126           14.1          21.5          9.5           3 \r\n 1983          127           10.7          19.5          7             13 \r\n 1983          128           28.6          14.5          0             0 \r\n 1983          129           27.6          16.5          3.5           0 \r\n 1983          130           27.3          21            6.5           0 \r\n 1983          131           13.9          24.5          8.5           0 \r\n 1983          132           16            24            13            3 \r\n 1983          133           14.5          21.5          7.5           7 \r\n 1983          134           8.6           18.5          3.5           2 \r\n 1983          135           29.1          16.5         -1             4 \r\n 1983          136           17.8          19            4             0 \r\n 1983          137           7.9           17.5          6.5           0 \r\n 1983          138           10.5          13            8             12 \r\n 1983          139           13.5          13            7.5           24 \r\n 1983          140           19            18.5          5.5           0 \r\n 1983          141           23.7          21            5             0 \r\n 1983          142           23.4          21            10.5          2 \r\n 1983          143           30.4          23            4             0 \r\n 1983          144           14.8          27            10.5          0 \r\n 1983          145           31.4          24.5          6.5           0 \r\n 1983          146           29.9          21.5          3.5           0 \r\n 1983          147           10.3          26            10.5          0 \r\n 1983          148           15.1          26            11.5          8 \r\n 1983          149           22.4          19.5          8             5 \r\n 1983          150           17.1          16.5          5.5           0 \r\n 1983          151           14.8          19.5          7             0 \r\n 1983          152           21.8          21.5          8.5           0 \r\n 1983          153           19.1          21.5          11.5          0 \r\n 1983          154           23.5          24            11.5          0 \r\n 1983          155           18.5          25            9.5           0 \r\n 1983          156           20.5          22.5          9             0 \r\n 1983          157           31.2          22            6.5           0 \r\n 1983          158           29.8          27            7.5           0 \r\n 1983          159           28.1          29.5          12            0 \r\n 1983          160           23.3          30            11.5          0 \r\n 1983          161           17.2          30.5          17            0 \r\n 1983          162           17.6          29            17            0 \r\n 1983          163           12.7          27.5          18.5          5 \r\n 1983          164           17.1          29            18            0 \r\n 1983          165           24            26.5          15.5          37 \r\n 1983          166           28.1          23.5          12            4 \r\n 1983          167           27.2          24.5          9             0 \r\n 1983          168           12.1          24.5          11.5          0 \r\n 1983          169           20.6          22            14            22 \r\n 1983          170           19.8          24            14            12 \r\n 1983          171           9.1           25.5          17            0 \r\n 1983          172           9.1           31            19.5          25 \r\n 1983          173           17.2          33            22.5          0 \r\n 1983          174           17.9          33.5          20.5          0 \r\n 1983          175           9.7           33            20            0 \r\n 1983          176           16.1          33            19            0 \r\n 1983          177           14.1          32            20            0 \r\n 1983          178           12.1          27            19            23 \r\n 1983          179           10.6          22.5          16            11 \r\n 1983          180           9.1           22            16.5          8 \r\n 1983          181           16.2          29.5          16            12 \r\n 1983          182           25.7          30            16            22 \r\n 1983          183           17.6          28.5          18.5          14 \r\n 1983          184           12.2          30            19.5          0 \r\n 1983          185           26.7          27            13.5          5 \r\n 1983          186           25.7          24.5          13            0 \r\n 1983          187           28.8          27.5          12.5          0 \r\n 1983          188           29.2          29.5          15.5          0 \r\n 1983          189           29.2          32            16.5          0 \r\n 1983          190           28.8          33            17.5          0 \r\n 1983          191           28.9          33            17.5          0 \r\n 1983          192           28.8          32            19            0 \r\n 1983          193           30.6          31            14.5          0 \r\n 1983          194           27.3          33.5          19            0 \r\n 1983          195           22.2          33.5          19            0 \r\n 1983          196           22.5          32            20            0 \r\n 1983          197           17.6          31            21            0 \r\n 1983          198           21.5          32            20            0 \r\n 1983          199           15.1          32            20            0 \r\n 1983          200           26.5          34            21            16 \r\n 1983          201           27.7          35.5          22            0 \r\n 1983          202           28.3          36            23            0 \r\n 1983          203           24.3          35.5          23            0 \r\n 1983          204           9.3           32.5          20            2 \r\n 1983          205           8.9           27            17.5          0 \r\n 1983          206           24.1          28            15            2 \r\n 1983          207           24.8          30            16            0 \r\n 1983          208           12.5          29.5          16.5          0 \r\n 1983          209           7.8           29.5          20.5          2 \r\n 1983          210           18.7          31            19.5          9 \r\n 1983          211           22.7          32            18            0 \r\n 1983          212           27.3          31            18            0 \r\n 1983          213           28.9          29.5          14            0 \r\n 1983          214           26            32            17            0 \r\n 1983          215           16.4          33.5          22            0 \r\n 1983          216           24.5          33            19.5          4 \r\n 1983          217           19.9          32.5          19            0 \r\n 1983          218           22.8          33.5          19.5          0 \r\n 1983          219           26.9          34            16.5          0 \r\n 1983          220           27.2          34.5          16.5          0 \r\n 1983          221           24            32            17            0 \r\n 1983          222           22.1          34.5          19.5          0 \r\n 1983          223           23.3          30.5          13            0 \r\n 1983          224           24.8          27            11            0 \r\n 1983          225           14.5          29            13.5          0 \r\n 1983          226           23.5          31.5          16            0 \r\n 1983          227           22.3          33.5          17.5          0 \r\n 1983          228           21.2          36.5          19.5          0 \r\n 1983          229           21.5          35            19.5          0 \r\n 1983          230           21.3          35            18.5          0 \r\n 1983          231           24.2          36.5          22.5          0 \r\n 1983          232           20.1          35.5          19.5          0 \r\n 1983          233           17.6          32.5          22            20 \r\n 1983          234           9.6           29.5          19            5 \r\n 1983          235           6.7           25.5          17.5          0 \r\n 1983          236           14.5          29            19            0 \r\n 1983          237           10.5          29.5          20.5          0 \r\n 1983          238           13.7          30.5          20.5          4 \r\n 1983          239           20.2          30.5          18.5          19 \r\n 1983          240           24.1          31.5          16.5          0 \r\n 1983          241           22.2          32.5          18            0 \r\n 1983          242           18.4          31            19            20 \r\n 1983          243           21.7          28.5          15            0 \r\n 1983          244           24.2          29.5          16.5          0 \r\n 1983          245           24            31.5          17.5          0 \r\n 1983          246           18.6          32.5          18            0 \r\n 1983          247           11.4          31.5          19.5          0 \r\n 1983          248           12.5          28.5          18.5          5 \r\n 1983          249           21.1          25.5          13.5          11 \r\n 1983          250           23.1          26.5          8.5           0 \r\n 1983          251           20.9          32.5          14            0 \r\n 1983          252           20.4          33.5          20.5          0 \r\n 1983          253           7.4           31            16            0 \r\n 1983          254           20.6          24            6             3 \r\n 1983          255           10.4          21            9             0 \r\n 1983          256           18.6          20.5          4             0 \r\n 1983          257           13.1          22            9.5           0 \r\n 1983          258           3.4           19            9.5           9 \r\n 1983          259           9.1           17.5          9             17 \r\n 1983          260           14.2          23            9             0 \r\n 1983          261           18.7          23.5          11.5          7 \r\n 1983          262           4.5           21.5          9             29 \r\n 1983          263           6.3           16.5          6             86 \r\n 1983          264           12.4          10.5          0.5           0 \r\n 1983          265           14.3          10.5         -1             0 \r\n 1983          266           19.1          14.5         -2             0 \r\n 1983          267           12.6          20.5          5             0 \r\n 1983          268           18.4          25.5          10            0 \r\n 1983          269           18.3          28            10.5          0 \r\n 1983          270           17.9          29            12.5          0 \r\n 1983          271           11.8          29            15.5          0 \r\n 1983          272           8.6           27.5          16            0 \r\n 1983          273           15.6          27            14.5          0 \r\n 1983          274           16.1          28            14            0 \r\n 1983          275           12            29            16            0 \r\n 1983          276           6.4           25.5          10            14 \r\n 1983          277           9             16            4.5           0 \r\n 1983          278           17.9          20.5          6.5           0 \r\n 1983          279           12.9          19            2             0 \r\n 1983          280           6.7           18.5          8.5           0 \r\n 1983          281           15.6          16.5          5.5           0 \r\n 1983          282           13.1          15.5          1.5           0 \r\n 1983          283           5.3           16            7             0 \r\n 1983          284           4.2           15.5          7.5           23 \r\n 1983          285           7.9           10           -2             6 \r\n 1983          286           7.2           7            -3.5           0 \r\n 1983          287           15.9          12           -1.5           2 \r\n 1983          288           6.8           15.5          6.5           5 \r\n 1983          289           14.4          15            3             0 \r\n 1983          290           15            15.5         -1.5           0 \r\n 1983          291           7.9           15            3             0 \r\n 1983          292           1.7           13            5             11 \r\n 1983          293           3.4           8.5           5.5           15 \r\n 1983          294           2.6           8.5           4.5           1 \r\n 1983          295           3.5           11            5             3 \r\n 1983          296           13.7          14            2             0 \r\n 1983          297           5.1           12            1.5           0 \r\n 1983          298           12.5          13           -1             0 \r\n 1983          299           13.7          16.5          1             0 \r\n 1983          300           13.3          22.5          3             0 \r\n 1983          301           12.7          19.5          7             0 \r\n 1983          302           9.5           12.5         -1.5           0 \r\n 1983          303           5.9           12            1.5           0 \r\n 1983          304           3.3           11            5             0 \r\n 1983          305           6.5           18            8.5           0 \r\n 1983          306           3.8           18            11.5          0 \r\n 1983          307           2.3           16            5.5           0 \r\n 1983          308           11.8          9            -1.5           0 \r\n 1983          309           6.4           10           -1.5           0 \r\n 1983          310           7             12.5          4.5           0 \r\n 1983          311           5.9           12.5          0.5           0 \r\n 1983          312           2             12            5             0 \r\n 1983          313           1.9           7.5           1             13 \r\n 1983          314           4.2           1.5          -2             17 \r\n 1983          315           6.3           1            -3             0 \r\n 1983          316           3.2           1            -3             0 \r\n 1983          317           3.4           2.5          -2             2 \r\n 1983          318           2.8           6             0             0 \r\n 1983          319           5.1           4.5           0             0 \r\n 1983          320           8.9           4            -3.5           0 \r\n 1983          321           7.3           5.5          -4             0 \r\n 1983          322           4.8           8            -1             0 \r\n 1983          323           3.2           14            4             9 \r\n 1983          324           5.2           11            1.5           2 \r\n 1983          325           8.7           5            -2             0 \r\n 1983          326           2.4           3            -1             0 \r\n 1983          327           1.3           0            -5.5           13 \r\n 1983          328           4.5          -1            -9             11 \r\n 1983          329           5.5           0.5          -11.5          0 \r\n 1983          330           6.2           0            -6.5           0 \r\n 1983          331           3.1          -1            -6             4 \r\n 1983          332           3.6          -1            -4.5           19 \r\n 1983          333           3.7          -3            -9.5           8 \r\n 1983          334           4.1          -6.5          -13.5          0 \r\n 1983          335           4.9          -6.5          -17.5          0 \r\n 1983          336           8.6          -5.5          -16            0 \r\n 1983          337           4.9          -6            -20            0 \r\n 1983          338           5.7          -1            -9             0 \r\n 1983          339           5.8          -1.5          -9             0.76 \r\n 1983          340           8.4          -6.5          -12.5          0 \r\n 1983          341           6.8          -7.5          -16.5          0 \r\n 1983          342           3.7          -6.5          -18.5          0.25 \r\n 1983          343           7            -7            -15            1.27 \r\n 1983          344           4.9          -4.5          -13.5          0.51 \r\n 1983          345           7.2           0            -7.5           1.78 \r\n 1983          346           5.3          -3            -15.5          0.25 \r\n 1983          347           4.6          -2            -11            2.29 \r\n 1983          348           4.3          -1.5          -5             3.3 \r\n 1983          349           4.5          -4            -15            3.05 \r\n 1983          350           8            -13.5         -23            1.02 \r\n 1983          351           7.7          -18.5         -26            0.25 \r\n 1983          352           7.2          -20.5         -30.5          0 \r\n 1983          353           5.1          -23           -32            0 \r\n 1983          354           5.7          -18.5         -30            0.25 \r\n 1983          355           5.2          -14           -25            3.81 \r\n 1983          356           5.1          -20.5         -29.5          0 \r\n 1983          357           5            -25.5         -29.5          0 \r\n 1983          358           5.3          -25           -31            0 \r\n 1983          359           6.5          -19.5         -28            0 \r\n 1983          360           7.1          -12.5         -22.5          0 \r\n 1983          361           5.2          -9.5          -15.5          0.25 \r\n 1983          362           7.7          -11           -19.5          1.02 \r\n 1983          363           6.4          -15.5         -22.5          0 \r\n 1983          364           8.3          -10.5         -22.5          0 \r\n 1983          365           6.9          -4            -13.5          0 \r\n 1984          1             6.2          -1.5          -10.5          0 \r\n 1984          2             6.5          -1.5          -11.5          0.25 \r\n 1984          3             5.8           2            -9.5           0 \r\n 1984          4             8.4           2.5          -4             0 \r\n 1984          5             6.3           4.5          -4.5           0 \r\n 1984          6             7.5           4            -3.5           0 \r\n 1984          7             7.5           3            -7             0 \r\n 1984          8             6.1          -0.5          -7             0 \r\n 1984          9             5.6          -4            -9             0 \r\n 1984          10            6.6          -7.5          -22            0 \r\n 1984          11            4.3          -10           -20            0 \r\n 1984          12            4.1          -8.5          -12            0 \r\n 1984          13            5.4          -8.5          -15            0.76 \r\n 1984          14            6.2          -9.5          -17            0 \r\n 1984          15            5.9          -9            -19.5          0 \r\n 1984          16            6.1          -9            -16.5          0 \r\n 1984          17            6.4          -12.5         -22            0 \r\n 1984          18            5.9          -16.5         -27            0 \r\n 1984          19            6.9          -15           -25.5          0 \r\n 1984          20            7.3          -19           -29.5          0 \r\n 1984          21            6.6          -12.5         -27.5          0 \r\n 1984          22            6.9          -5.5          -17.5          0.25 \r\n 1984          23            5.9          -1            -9             0 \r\n 1984          24            6.9           1            -10.5          0.51 \r\n 1984          25            7.8           1.5          -9.5           0 \r\n 1984          26            6.8           0.5          -6.5           0 \r\n 1984          27            9.2          -3            -15.5          0 \r\n 1984          28            10.6          2.5          -11            0 \r\n 1984          29            3.9          -2            -11.5          2.79 \r\n 1984          30            7.7          -7            -14            7.62 \r\n 1984          31            9.2          -3            -15            0 \r\n 1984          32            8.8           1            -11            0 \r\n 1984          33            6.1           3.5          -5.5           0 \r\n 1984          34            10.2          3.5          -4.5           0 \r\n 1984          35            8.3           0.5          -10.5          0 \r\n 1984          36            8.6          -6.5          -22            2.03 \r\n 1984          37            6.6          -13           -25            0 \r\n 1984          38            7.4          -8.5          -21            0 \r\n 1984          39            11.1         -1.5          -14            0 \r\n 1984          40            12.2          4.5          -8             0 \r\n 1984          41            10.8          3            -5.5           0 \r\n 1984          42            5.7           2.5          -1.5           1.78 \r\n 1984          43            7.9           5.5           0             3.3 \r\n 1984          44            5.3           2.5          -1             0 \r\n 1984          45            9.5           5            -3.5           0.25 \r\n 1984          46            11.6          9             1.5           0 \r\n 1984          47            5.4           7.5           2             2.03 \r\n 1984          48            7.7           3.5           0             0.51 \r\n 1984          49            2.2           1.5          -0.5           3.81 \r\n 1984          50            5.9           1            -3             7.37 \r\n 1984          51            14.7          3            -6.5           0 \r\n 1984          52            10.9          6.5          -6             0 \r\n 1984          53            14.5          11           -2             0 \r\n 1984          54            7.3           9            -1             0 \r\n 1984          55            13.1          4            -3.5           0 \r\n 1984          56            12.9          6.5          -4             0 \r\n 1984          57            9.6           4.5          -2.5           0 \r\n 1984          58            12.2          0.5          -6.5           0.25 \r\n 1984          59            9.9          -1.5          -6.5           0 \r\n 1984          60            15.5         -1            -8             0 \r\n 1984          61            14.8         -0.5          -9.5           0 \r\n 1984          62            12.4          3            -6             0 \r\n 1984          63            14.3          2.5          -6.5           0 \r\n 1984          64            3.2           4            -6             3.05 \r\n 1984          65            6.5           3            -4.5           2.29 \r\n 1984          66            15.4         -1.5          -10            0 \r\n 1984          67            8.4          -7            -18.5          0.51 \r\n 1984          68            11.4         -5.5          -16            2.79 \r\n 1984          69            10.3         -5.5          -15.5          0 \r\n 1984          70            13.9         -6.5          -23            0 \r\n 1984          71            15.4         -3.5          -20.5          0.25 \r\n 1984          72            7.5          -5            -16.5          1.78 \r\n 1984          73            6.8          -7.5          -14            0.25 \r\n 1984          74            10           -3            -9             1.02 \r\n 1984          75            9.5           0.5          -4.5           11.18 \r\n 1984          76            8.3           2            -5             0.51 \r\n 1984          77            5.5           0.5          -7.5           3.05 \r\n 1984          78            7.6          -1            -6             1.78 \r\n 1984          79            3.6          -1.5          -7             1.27 \r\n 1984          80            6            -1            -6             4.57 \r\n 1984          81            6.2           0            -4.5           2.03 \r\n 1984          82            13.9          1.5          -2.5           0 \r\n 1984          83            18.7          3            -3             0 \r\n 1984          84            18            6.5          -5.5           0 \r\n 1984          85            22.2          9            -4.5           0 \r\n 1984          86            6.8           10           -3             0 \r\n 1984          87            3.6           8            -1.5           1.78 \r\n 1984          88            15.4          4.5           0             0.76 \r\n 1984          89            10.9          6.5           0.5           0 \r\n 1984          90            18.1          5            -3             0 \r\n 1984          91            18.1          5            -4             0 \r\n 1984          92            17.6          7.5          -3.5           0 \r\n 1984          93            8.6           10           -3             0 \r\n 1984          94            3.9           10            0.5           0 \r\n 1984          95            15            7.5           0             9 \r\n 1984          96            24.5          7.5           1             8 \r\n 1984          97            24.7          12           -0.5           0 \r\n 1984          98            5.4           15           -2             0 \r\n 1984          99            3.5           13            1             0 \r\n 1984          100           4.5           9.5           3             7 \r\n 1984          101           7.1           9.5           2             3 \r\n 1984          102           3.3           12            5             0 \r\n 1984          103           6.4           11.5          4.5           1 \r\n 1984          104           4.9           12            6             13 \r\n 1984          105           3             10.5          4.5           7 \r\n 1984          106           16.1          8.5           4.5           5 \r\n 1984          107           24.8          12.5          4             1 \r\n 1984          108           26            14.5          4             0 \r\n 1984          109           24            14.5          1             0 \r\n 1984          110           20            14           -1             0 \r\n 1984          111           16.2          15            1             0 \r\n 1984          112           3.9           15            4             0 \r\n 1984          113           1.7           13            5             0 \r\n 1984          114           20.5          8.5          -0.5           17 \r\n 1984          115           23.4          12.5          0.5           3 \r\n 1984          116           16.9          17            1.5           0 \r\n 1984          117           19.2          18.5          2             0 \r\n 1984          118           23.8          24.5          9             0 \r\n 1984          119           27            22.5          9             34 \r\n 1984          120           2.5           14.5          2.5           0 \r\n 1984          121           17.8          11            2             0 \r\n 1984          122           23.8          7.5          -0.5           48 \r\n 1984          123           10.2          12            0             0 \r\n 1984          124           12.9          13            3.5           4 \r\n 1984          125           12.7          13.5          5             0 \r\n 1984          126           24.2          14.5          3             0 \r\n 1984          127           12.7          17.5          4.5           3 \r\n 1984          128           9.4           18.5          8             4 \r\n 1984          129           20.4          15.5          6             11 \r\n 1984          130           26.6          12            1.5           0 \r\n 1984          131           23.5          16            3             0 \r\n 1984          132           21.6          21.5          5.5           1 \r\n 1984          133           12.8          23            10            2 \r\n 1984          134           26.5          21.5          6             0 \r\n 1984          135           28.7          21.5          10            0 \r\n 1984          136           14.8          21.5          6             0 \r\n 1984          137           20.2          21            9.5           0 \r\n 1984          138           17.7          22.5          10            0 \r\n 1984          139           8             27            11.5          0 \r\n 1984          140           12.8          26            14            6 \r\n 1984          141           26.9          23            14.5          11 \r\n 1984          142           25.8          26.5          10.5          0 \r\n 1984          143           12.8          28.5          12.5          0 \r\n 1984          144           31            26            13.5          15 \r\n 1984          145           11.7          22            7.5           1 \r\n 1984          146           11.9          23.5          12.5          0 \r\n 1984          147           26.9          20.5          9             16 \r\n 1984          148           3.7           18            4             0 \r\n 1984          149           20.9          16            8             4 \r\n 1984          150           29.9          16            7.5           14 \r\n 1984          151           31.2          18.5          4.5           0 \r\n 1984          152           30.6          21.5          6             0 \r\n 1984          153           20.8          26            10            0 \r\n 1984          154           28.2          30            15            0 \r\n 1984          155           31.2          28.5          10.5          5 \r\n 1984          156           11.3          27.5          9.5           0 \r\n 1984          157           24.5          26            14            10 \r\n 1984          158           17.5          28.5          16.5          7 \r\n 1984          159           10.9          29.5          18.5          0 \r\n 1984          160           30.2          27.5          18            0 \r\n 1984          161           8.4           26            15.5          66 \r\n 1984          162           23.2          24.5          15            0 \r\n 1984          163           10.4          22.5          12.5          5 \r\n 1984          164           14.2          22.5          10.5          0 \r\n 1984          165           25.1          25.5          15            23 \r\n 1984          166           16.9          26            16.5          38 \r\n 1984          167           12.7          25            14.5          0 \r\n 1984          168           10.3          23            16.5          7 \r\n 1984          169           14.2          25            16            15 \r\n 1984          170           28.9          27.5          18            29 \r\n 1984          171           28.4          27.5          17            14 \r\n 1984          172           15.5          28.5          14            0 \r\n 1984          173           18.6          28.5          17            0 \r\n 1984          174           25            28.5          17.5          0 \r\n 1984          175           21.5          30            15.5          12 \r\n 1984          176           28.8          27            16            17 \r\n 1984          177           27.4          28            13.5          0 \r\n 1984          178           29            29.5          14            0 \r\n 1984          179           30.7          32.5          17.5          0 \r\n 1984          180           20.9          30.5          15.5          0 \r\n 1984          181           29.6          28.5          14.5          0 \r\n 1984          182           27.8          27            13            0 \r\n 1984          183           24.5          26.5          12.5          0 \r\n 1984          184           25.4          28            12.5          0 \r\n 1984          185           21.5          29            15.5          0 \r\n 1984          186           18.4          30            17.5          0 \r\n 1984          187           22            29            16            0 \r\n 1984          188           29.5          29            15.5          0 \r\n 1984          189           31.3          24.5          12            2 \r\n 1984          190           18.2          24.5          8             0 \r\n 1984          191           14.7          28            13.5          19 \r\n 1984          192           11.7          31            20.5          0 \r\n 1984          193           27.5          29            19            7 \r\n 1984          194           27.7          29.5          14            4 \r\n 1984          195           21.4          31            16.5          0 \r\n 1984          196           14.6          31            18            0 \r\n 1984          197           27.3          32            17.5          0 \r\n 1984          198           27.8          29            13.5          21 \r\n 1984          199           27.1          29.5          13.5          0 \r\n 1984          200           29.7          26.5          14            14 \r\n 1984          201           17.6          26            10.5          0 \r\n 1984          202           25.2          28.5          15            0 \r\n 1984          203           24.6          30            17.5          0 \r\n 1984          204           23.6          31            17.5          0 \r\n 1984          205           23.2          33            21            0 \r\n 1984          206           16.6          32            20            0 \r\n 1984          207           11.1          29            17.5          0 \r\n 1984          208           16.1          26.5          18            0 \r\n 1984          209           18.2          25            16.5          6 \r\n 1984          210           24.2          26            14            7 \r\n 1984          211           25            26            12.5          4 \r\n 1984          212           24.5          27            13            0 \r\n 1984          213           17.8          27            13.5          0 \r\n 1984          214           17.9          28            15.5          0 \r\n 1984          215           23.4          29            18            0 \r\n 1984          216           15.4          30.5          19            0 \r\n 1984          217           18.8          31.5          18.5          0 \r\n 1984          218           21.7          31            20            1 \r\n 1984          219           25.9          32            20.5          0 \r\n 1984          220           15.3          34            21            0 \r\n 1984          221           25.7          33.5          20.5          0 \r\n 1984          222           26.1          32.5          18            5 \r\n 1984          223           25.9          31            17            0 \r\n 1984          224           23.8          29.5          13            0 \r\n 1984          225           23.3          29            13.5          0 \r\n 1984          226           22.8          30            15.5          0 \r\n 1984          227           25.8          30            16            0 \r\n 1984          228           15.2          31            16            0 \r\n 1984          229           15.6          31            17.5          0 \r\n 1984          230           3.3           31.5          19            0 \r\n 1984          231           14.6          28            20            2 \r\n 1984          232           24.2          27            17            6 \r\n 1984          233           23.3          28            13            0 \r\n 1984          234           13.5          27.5          12.5          0 \r\n 1984          235           24.4          27            16            0 \r\n 1984          236           19.2          24.5          12.5          7 \r\n 1984          237           19.2          24            9             0 \r\n 1984          238           17.1          24            9.5           0 \r\n 1984          239           18.8          27.5          13.5          0 \r\n 1984          240           23.9          31            16.5          0 \r\n 1984          241           23.7          35.5          19            0 \r\n 1984          242           21.1          36            17            0 \r\n 1984          243           24.3          33.5          17            0 \r\n 1984          244           17.8          29.5          11            0 \r\n 1984          245           13.3          29            9             0 \r\n 1984          246           5.5           31.5          14.5          0 \r\n 1984          247           22.1          25.5          14            9 \r\n 1984          248           20.2          21.5          9.5           0 \r\n 1984          249           22.8          24            10.5          2 \r\n 1984          250           8.2           23            6             0 \r\n 1984          251           17.5          22            10.5          0 \r\n 1984          252           18.2          28.5          14.5          0 \r\n 1984          253           11.1          26.5          12            10 \r\n 1984          254           4.1           24            10            0 \r\n 1984          255           19.1          21.5          10.5          7 \r\n 1984          256           18.2          22            9             2 \r\n 1984          257           10.2          30            16            0 \r\n 1984          258           8.1           29            15.5          0 \r\n 1984          259           18.4          20            9.5           1 \r\n 1984          260           18.6          17.5          1.5           0 \r\n 1984          261           18.8          20.5          2.5           0 \r\n 1984          262           20.6          23            5             0 \r\n 1984          263           20.4          28.5          10            0 \r\n 1984          264           18.6          33            11            0 \r\n 1984          265           19            30            13            0 \r\n 1984          266           4.7           28.5          11.5          0 \r\n 1984          267           14.2          27            15.5          0 \r\n 1984          268           5.2           26.5          12            0 \r\n 1984          269           8.5           25.5          10.5          1 \r\n 1984          270           15.6          14.5          2.5           4 \r\n 1984          271           14            12           -3.5           0 \r\n 1984          272           13.9          15            1.5           0 \r\n 1984          273           16.5          12.5          1             1 \r\n 1984          274           16.6          14           -3.5           0 \r\n 1984          275           17.7          17.5         -2             0 \r\n 1984          276           16.3          19.5          1             0 \r\n 1984          277           15.4          23            5             0 \r\n 1984          278           8             23            6             0 \r\n 1984          279           6.9           22.5          5.5           0 \r\n 1984          280           1             23            10.5          0 \r\n 1984          281           2.7           19.5          13            0 \r\n 1984          282           1.3           18            13.5          11 \r\n 1984          283           7.3           18.5          12.5          9 \r\n 1984          284           8.5           19            9.5           5 \r\n 1984          285           4.3           21.5          12.5          0 \r\n 1984          286           8.3           20.5          14            0 \r\n 1984          287           6.4           21            15            2 \r\n 1984          288           4.6           21.5          13            0 \r\n 1984          289           3.6           19.5          13            0 \r\n 1984          290           1.7           19            8             23 \r\n 1984          291           12.7          11.5          3.5           18 \r\n 1984          292           1.4           13.5          0             24 \r\n 1984          293           9.9           13            5             2 \r\n 1984          294           13.5          12.5          3.5           5 \r\n 1984          295           7             13            0             0 \r\n 1984          296           9.3           10.5         -0.5           0 \r\n 1984          297           13.3          10           -1             0 \r\n 1984          298           12.7          11.5         -4.5           0 \r\n 1984          299           2.3           13           -1             0 \r\n 1984          300           13.4          11.5          3.5           0 \r\n 1984          301           3.8           15.5          4.5           8 \r\n 1984          302           9.9           19.5          6.5           0 \r\n 1984          303           10            14           -1.5           5 \r\n 1984          304           10.9          12.5         -2             0 \r\n 1984          305           1.4           10.5         -2             0 \r\n 1984          306           11.4          9.5          -2             0 \r\n 1984          307           8.5           9.5          -6             21 \r\n 1984          308           8.7           1            -9             0 \r\n 1984          309           10.7          8.5          -2.5           0 \r\n 1984          310           10.5          12.5         -0.5           0 \r\n 1984          311           12.3          9.5          -4             0 \r\n 1984          312           8.4           12           -5             0 \r\n 1984          313           9.7           15.5          3             0 \r\n 1984          314           1.2           16            2             0 \r\n 1984          315           3.3           11            2.5           6 \r\n 1984          316           5.6           5.5          -2             20 \r\n 1984          317           7.9           1            -4.5           0 \r\n 1984          318           8.4           3            -6.5           0 \r\n 1984          319           6             10           -1             0 \r\n 1984          320           5.3           14            5             0 \r\n 1984          321           9.8           10.5         -3.5           0 \r\n 1984          322           5.9           6            -7             0 \r\n 1984          323           10.3          7.5          -3.5           0 \r\n 1984          324           9.2           5            -6.5           0 \r\n 1984          325           8.4           1            -8             0 \r\n 1984          326           9.3           1.5          -10.5          0 \r\n 1984          327           4.1           4.5          -8             0 \r\n 1984          328           9.1           5.5          -4             0 \r\n 1984          329           7.8           8.5          -7             0 \r\n 1984          330           5.2           13           -3             0 \r\n 1984          331           4.6           12.5          0.5           0 \r\n 1984          332           2.1           10            4             1 \r\n 1984          333           4.9           7            -3             2 \r\n 1984          334           3.8           0            -6.5           2 \r\n 1984          335           3.4           2            -4             1 \r\n 1984          336           3.7           1            -5.5           0 \r\n 1984          337           3             0.5          -6.5           1.02 \r\n 1984          338           5.9           0            -10            0 \r\n 1984          339           5.4          -5            -16            0 \r\n 1984          340           4.2          -6.5          -16            0 \r\n 1984          341           5.3          -3.5          -16.5          0.25 \r\n 1984          342           7.7          -6            -21            0 \r\n 1984          343           6.9           5            -13            0 \r\n 1984          344           3.3           10.5         -5             0.51 \r\n 1984          345           5.5           6.5          -3             0.51 \r\n 1984          346           3.9           3.5          -4             0 \r\n 1984          347           3.6           6.5          -2             0.25 \r\n 1984          348           4.8           4.5          -9             0.25 \r\n 1984          349           4.3          -3.5          -12            11.43 \r\n 1984          350           2.2          -2            -10            0.76 \r\n 1984          351           2.9           2.5          -11.5          9.14 \r\n 1984          352           7.1           7.5          -4.5           2.03 \r\n 1984          353           6.8          -1            -10.5          0 \r\n 1984          354           8.6          -5.5          -14.5          0 \r\n 1984          355           7.9          -4            -12            0 \r\n 1984          356           2.4          -0.5          -11.5          7.87 \r\n 1984          357           4.3           0.5          -8             5.33 \r\n 1984          358           4.1          -3            -15.5          0 \r\n 1984          359           3.5          -4.5          -13.5          0.76 \r\n 1984          360           4.9          -8.5          -18.5          0.25 \r\n 1984          361           2.4          -8            -19.5          1.02 \r\n 1984          362           1.3          -1            -12.5          1.02 \r\n 1984          363           2.5           4            -1.5           0.76 \r\n 1984          364           5.7           12           -0.5           0 \r\n 1984          365           7.6           6            -12.5          0 \r\n 1984          366           2.9          -6            -14.5          0.51 \r\n 1985          1             5.4          -10.5         -17            1.27 \r\n 1985          2             5.7          -9.5          -22            0 \r\n 1985          3             6.2          -4            -19            0 \r\n 1985          4             8.7           1            -12            0 \r\n 1985          5             8.7           3.5          -9             0 \r\n 1985          6             3.5           4            -5.5           0 \r\n 1985          7             8.4           2            -6.5           0.25 \r\n 1985          8             7.4          -2.5          -17.5          0 \r\n 1985          9             4.1          -5            -13.5          0.51 \r\n 1985          10            2.7          -5            -11.5          1.78 \r\n 1985          11            5.4          -7.5          -18.5          0.76 \r\n 1985          12            5.6          -9.5          -19.5          0 \r\n 1985          13            9.3          -0.5          -14.5          0 \r\n 1985          14            8.4           1.5          -14.5          0 \r\n 1985          15            5.5          -8.5          -17.5          0 \r\n 1985          16            4.3          -7.5          -13            0 \r\n 1985          17            4            -2.5          -13.5          0.51 \r\n 1985          18            8.3          -0.5          -14.5          1.27 \r\n 1985          19            8.5          -14           -29.5          0 \r\n 1985          20            4.2          -20           -31            0 \r\n 1985          21            10.2         -6            -21            0 \r\n 1985          22            10           -3            -12.5          0 \r\n 1985          23            8            -2.5          -11.5          0 \r\n 1985          24            7.9          -1            -9.5           0.51 \r\n 1985          25            9.9          -3            -20.5          0 \r\n 1985          26            8.1          -5            -19            0 \r\n 1985          27            8.6          -2            -12.5          0 \r\n 1985          28            11           -6            -18            0 \r\n 1985          29            3.3          -3.5          -12.5          2.79 \r\n 1985          30            5.5          -4.5          -20.5          1.52 \r\n 1985          31            7.7          -16.5         -29            0 \r\n 1985          32            11.5         -16           -27            0 \r\n 1985          33            11.8         -11.5         -27            0 \r\n 1985          34            12.4         -11           -23.5          0 \r\n 1985          35            7.1          -13           -21.5          0.25 \r\n 1985          36            6.2          -11           -20            1.02 \r\n 1985          37            11.3         -9.5          -21.5          0 \r\n 1985          38            13.7         -10.5         -23            0 \r\n 1985          39            10           -9.5          -20.5          0 \r\n 1985          40            4.7          -6.5          -14            0 \r\n 1985          41            7.7          -6            -10.5          0.25 \r\n 1985          42            11.9         -6            -16            1.27 \r\n 1985          43            12.9         -6.5          -18.5          0 \r\n 1985          44            10.9         -5.5          -16            0 \r\n 1985          45            13.7         -6            -16.5          0 \r\n 1985          46            9.6          -7            -20.5          0 \r\n 1985          47            12.6          2            -13            0 \r\n 1985          48            15.2          5            -7             0 \r\n 1985          49            12.8          3            -5.5           0 \r\n 1985          50            15.2          5            -8             0 \r\n 1985          51            9             5.5          -2.5           0.25 \r\n 1985          52            4             5.5          -0.5           1.52 \r\n 1985          53            7.2           3            -2.5           2.29 \r\n 1985          54            4.6           1.5          -1             1.52 \r\n 1985          55            7.6           1            -2.5           2.54 \r\n 1985          56            11.1          5            -2.5           0 \r\n 1985          57            10.1          5.5          -5             0 \r\n 1985          58            14.3          2.5          -10            0 \r\n 1985          59            17.1          9            -2             0 \r\n 1985          60            17.3          10           -1             0 \r\n 1985          61            7.6           5.5          -3.5           0 \r\n 1985          62            2             0.5          -2.5           4.32 \r\n 1985          63            6.4           1            -5             14.73 \r\n 1985          64            11.5         -2            -10            0.51 \r\n 1985          65            10.3          1            -8.5           0 \r\n 1985          66            11.2          6.5          -2             0 \r\n 1985          67            16.9          9            -2.5           0 \r\n 1985          68            19            11.5         -2.5           0 \r\n 1985          69            16            14           -0.5           0 \r\n 1985          70            4.5           12.5          1.5           0.76 \r\n 1985          71            13.1          6.5          -2             1.02 \r\n 1985          72            15.9          7.5          -1             1.52 \r\n 1985          73            14.5          7            -2             0 \r\n 1985          74            20.2          10.5         -4             0 \r\n 1985          75            19.9          10.5         -1             0 \r\n 1985          76            19.8          10           -2             0 \r\n 1985          77            19.3          14           -1.5           0 \r\n 1985          78            20.6          14.5          0.5           0 \r\n 1985          79            21.4          14.5         -1.5           0 \r\n 1985          80            20.9          15           -0.5           0 \r\n 1985          81            20.1          14           -2.5           0 \r\n 1985          82            7             11            0.5           4.57 \r\n 1985          83            5.8           4.5          -0.5           4.06 \r\n 1985          84            6.8           4.5           0.5           0 \r\n 1985          85            17.6          16.5          1             0 \r\n 1985          86            16            17.5          4             5.59 \r\n 1985          87            6.6           9.5           2             1.78 \r\n 1985          88            9.1           7            -0.5           0.76 \r\n 1985          89            8.5           4            -1             0.25 \r\n 1985          90            4.3           1.5          -3.5           8.13 \r\n 1985          91            6.7           3            -6.5           3 \r\n 1985          92            13.6          11           -3.5           0 \r\n 1985          93            20.1          14.5          1             0 \r\n 1985          94            5.2           11            1             10 \r\n 1985          95            13.6          6             0             0 \r\n 1985          96            17.8          8            -1.5           0 \r\n 1985          97            18.7          8            -1             0 \r\n 1985          98            21.3          6            -4             0 \r\n 1985          99            24.5          10.5         -6             0 \r\n 1985          100           23.9          19            1             0 \r\n 1985          101           23.6          23            4             0 \r\n 1985          102           20.6          27            7.5           0 \r\n 1985          103           6.8           22.5          6             0 \r\n 1985          104           9.4           10.5          3             0 \r\n 1985          105           25.1          21            0             0 \r\n 1985          106           20.6          23            7             0 \r\n 1985          107           25.2          27.5          7             0 \r\n 1985          108           25.5          32.5          14            0 \r\n 1985          109           24.1          31            17            0 \r\n 1985          110           23.8          29            14.5          0 \r\n 1985          111           20.9          29            14            14 \r\n 1985          112           6.3           26            15            4 \r\n 1985          113           6.4           19.5          11.5          11 \r\n 1985          114           24.1          19            6             7 \r\n 1985          115           5.5           16            5             0 \r\n 1985          116           7.7           12            6             24 \r\n 1985          117           14.1          15            6.5           2 \r\n 1985          118           25.3          19.5          4.5           0 \r\n 1985          119           24.4          23.5          7             0 \r\n 1985          120           11.7          24.5          11            0 \r\n 1985          121           22.7          23            9.5           0 \r\n 1985          122           26.2          23            5             0 \r\n 1985          123           23.4          25            7.5           0 \r\n 1985          124           22.8          27.5          12.5          0 \r\n 1985          125           8.6           25.5          12.5          0 \r\n 1985          126           27.6          22            6             7 \r\n 1985          127           29            23.5          8.5           0 \r\n 1985          128           24.8          27.5          7.5           0 \r\n 1985          129           27.2          30            14            0 \r\n 1985          130           17.8          29            16.5          0 \r\n 1985          131           10.1          26            15.5          3 \r\n 1985          132           19.3          22.5          11.5          10 \r\n 1985          133           11.3          20            6             0 \r\n 1985          134           13.2          21.5          10.5          5 \r\n 1985          135           3.8           19.5          9             1 \r\n 1985          136           5             14.5          9.5           4 \r\n 1985          137           28.6          19.5          7             0 \r\n 1985          138           26.9          26            8             0 \r\n 1985          139           26            28.5          11.5          0 \r\n 1985          140           29.2          26            9             10 \r\n 1985          141           31.5          22            5             0 \r\n 1985          142           29.6          24.5          8             0 \r\n 1985          143           12.1          24.5          12.5          0 \r\n 1985          144           25.6          26            9.5           6 \r\n 1985          145           28.7          29            13            0 \r\n 1985          146           21.4          30.5          16            0 \r\n 1985          147           27.1          27            11            0 \r\n 1985          148           28            25.5          11.5          0 \r\n 1985          149           21            28            12.5          0 \r\n 1985          150           27.4          30.5          14.5          4 \r\n 1985          151           22.7          27.5          13            7 \r\n 1985          152           18.5          25            9             0 \r\n 1985          153           20.4          22.5          6             0 \r\n 1985          154           21            20            5.5           0 \r\n 1985          155           7.4           19.5          10            0 \r\n 1985          156           29.6          22.5          7             0 \r\n 1985          157           28.4          27            10.5          0 \r\n 1985          158           27.1          32.5          13.5          0 \r\n 1985          159           28.2          37.5          17.5          0 \r\n 1985          160           21.1          34.5          16.5          0 \r\n 1985          161           6.2           25.5          13            0 \r\n 1985          162           9.8           18.5          10            14 \r\n 1985          163           26.4          18.5          8.5           16 \r\n 1985          164           27.9          22            7.5           0 \r\n 1985          165           13.7          22            13.5          4 \r\n 1985          166           26.7          24            11.5          9 \r\n 1985          167           19            27            12.5          0 \r\n 1985          168           26.6          26            11            1 \r\n 1985          169           18.8          23            13            0 \r\n 1985          170           24.4          22.5          10            0 \r\n 1985          171           29.2          27.5          9.5           0 \r\n 1985          172           10.6          29.5          16.5          0 \r\n 1985          173           28.8          29.5          11.5          0 \r\n 1985          174           26.6          28.5          16.5          0 \r\n 1985          175           30.1          29.5          14.5          0 \r\n 1985          176           24.5          32.5          20            0 \r\n 1985          177           11.5          31            20.5          12 \r\n 1985          178           11            24            14.5          26 \r\n 1985          179           24.1          22            9             0 \r\n 1985          180           26.3          23.5          12            0 \r\n 1985          181           25.9          26.5          13.5          0 \r\n 1985          182           26.6          29            15            0 \r\n 1985          183           27.8          28.5          16.5          0 \r\n 1985          184           30.2          30            12.5          0 \r\n 1985          185           29.6          30.5          16.5          4 \r\n 1985          186           27.9          29            14            0 \r\n 1985          187           29.1          30            13            0 \r\n 1985          188           29            33            19            0 \r\n 1985          189           14.3          33            18.5          0 \r\n 1985          190           26.9          32.5          18            0 \r\n 1985          191           27            30.5          13            0 \r\n 1985          192           29.1          29            16            0 \r\n 1985          193           14.3          29            17            3 \r\n 1985          194           13.8          29.5          18.5          0 \r\n 1985          195           23.7          32            18            0 \r\n 1985          196           30.9          29            13.5          0 \r\n 1985          197           28.8          28.5          11.5          0 \r\n 1985          198           23.6          30            16            0 \r\n 1985          199           14.9          30            19.5          0 \r\n 1985          200           20            28.5          18.5          12 \r\n 1985          201           13            26.5          14.5          0 \r\n 1985          202           25.3          27.5          12.5          0 \r\n 1985          203           30.3          27.5          11.5          0 \r\n 1985          204           27.8          28            11.5          0 \r\n 1985          205           12.3          29            17            0 \r\n 1985          206           26.5          28            17            20 \r\n 1985          207           28.7          28            12            0 \r\n 1985          208           27.9          29            15            0 \r\n 1985          209           20.3          29            15            0 \r\n 1985          210           21.6          27            14            0 \r\n 1985          211           4             22.5          15.5          0 \r\n 1985          212           8.4           19            14            7 \r\n 1985          213           22.9          23.5          10.5          0 \r\n 1985          214           26.3          25.5          12            0 \r\n 1985          215           18.2          26            15            0 \r\n 1985          216           8.9           24.5          16            0 \r\n 1985          217           25.6          29            17.5          0 \r\n 1985          218           23.5          32.5          15.5          0 \r\n 1985          219           28.1          32            13.5          0 \r\n 1985          220           25.6          30.5          15            0 \r\n 1985          221           16.7          32.5          16.5          0 \r\n 1985          222           22.9          27.5          10.5          5 \r\n 1985          223           22.6          24.5          9             0 \r\n 1985          224           9.4           29            16            0 \r\n 1985          225           22.2          29            13            0 \r\n 1985          226           9.2           25            14.5          3 \r\n 1985          227           23.4          23.5          9.5           0 \r\n 1985          228           17.1          26            14.5          0 \r\n 1985          229           12.9          25.5          15.5          8 \r\n 1985          230           24.5          23.5          9.5           5 \r\n 1985          231           19.5          23            9             0 \r\n 1985          232           18            21.5          7             0 \r\n 1985          233           19.5          23.5          11.5          0 \r\n 1985          234           4.5           23.5          14.5          31 \r\n 1985          235           14.7          25            16            23 \r\n 1985          236           13.6          24            12            0 \r\n 1985          237           18.5          23            13.5          0 \r\n 1985          238           19.9          24            11            0 \r\n 1985          239           16.9          26            12.5          0 \r\n 1985          240           6.6           26            14.5          0 \r\n 1985          241           9.5           26            17.5          83 \r\n 1985          242           9             23.5          16            0 \r\n 1985          243           9.6           24.5          13.5          0 \r\n 1985          244           12.4          25.5          17.5          0 \r\n 1985          245           14.3          28.5          14.5          0 \r\n 1985          246           17.1          30            19            0 \r\n 1985          247           9.6           30            17.5          0 \r\n 1985          248           14.6          29            17.5          77 \r\n 1985          249           22.3          31.5          19            6 \r\n 1985          250           21.1          33.5          20.5          0 \r\n 1985          251           14.7          32            19.5          0 \r\n 1985          252           6.3           26.5          14            0 \r\n 1985          253           11            19.5          13            0 \r\n 1985          254           14.5          21.5          10.5          0 \r\n 1985          255           8.1           19.5          10.5          0 \r\n 1985          256           14.9          17.5          7.5           0 \r\n 1985          257           18.8          19.5          9             0 \r\n 1985          258           20.7          22            6.5           0 \r\n 1985          259           8.9           23.5          11.5          0 \r\n 1985          260           11.1          27            17.5          0 \r\n 1985          261           20.2          30.5          18.5          0 \r\n 1985          262           14.6          31.5          20            0 \r\n 1985          263           12            28            9.5           21 \r\n 1985          264           5.5           14            7.5           1 \r\n 1985          265           7.6           15.5          10            3 \r\n 1985          266           4.7           15            5             18 \r\n 1985          267           16.5          12            1.5           7 \r\n 1985          268           5.1           12            4.5           5 \r\n 1985          269           19.4          13.5          1             5 \r\n 1985          270           18.7          18.5          1.5           0 \r\n 1985          271           2.6           16            3.5           0 \r\n 1985          272           3.7           7             2             18 \r\n 1985          273           5.8           7             2             17 \r\n 1985          274           13.6          10.5         -1.5           0 \r\n 1985          275           15.7          16.5          1             0 \r\n 1985          276           6.8           16.5          5             0 \r\n 1985          277           6.8           15            4             4 \r\n 1985          278           10.4          12            2             8 \r\n 1985          279           16.6          17.5          0.5           0 \r\n 1985          280           6.4           18            3.5           0 \r\n 1985          281           10.2          15.5          6.5           3 \r\n 1985          282           4.8           9.5          -0.5           0 \r\n 1985          283           13.8          8.5          -1             1 \r\n 1985          284           8.2           12.5          0.5           0 \r\n 1985          285           6.9           14.5          6             9 \r\n 1985          286           6.7           15.5          2.5           0 \r\n 1985          287           7.8           15            4.5           0 \r\n 1985          288           12.2          16            0             0 \r\n 1985          289           11.4          16.5         -0.5           0 \r\n 1985          290           5.9           16            6.5           0 \r\n 1985          291           4.2           15            8.5           13 \r\n 1985          292           10.3          15.5          7             1 \r\n 1985          293           8.9           15.5          7             0 \r\n 1985          294           4.7           13.5          8.5           0 \r\n 1985          295           9.1           17.5          10.5          0 \r\n 1985          296           10.2          19.5          10.5          0 \r\n 1985          297           13.8          18.5          5.5           0 \r\n 1985          298           11.8          20.5          1.5           0 \r\n 1985          299           8.8           22            7.5           0 \r\n 1985          300           12.6          19            1.5           0 \r\n 1985          301           9.9           15.5          1.5           0 \r\n 1985          302           8.8           15.5          3.5           0 \r\n 1985          303           9.1           14            3             0 \r\n 1985          304           7.2           12            1             0 \r\n 1985          305           9.5           12            2.5           3 \r\n 1985          306           13            11.5         -2.5           0 \r\n 1985          307           10.3          10.5         -1.5           0 \r\n 1985          308           12.3          10.5         -5.5           0 \r\n 1985          309           11.8          13           -3.5           0 \r\n 1985          310           5.3           10.5         -0.5           1 \r\n 1985          311           8.6           8.5          -4.5           0 \r\n 1985          312           3.6           4            -4.5           0 \r\n 1985          313           2            -1.5          -4             5 \r\n 1985          314           2.7          -2.5          -4.5           5 \r\n 1985          315           2.1          -1.5          -4             0 \r\n 1985          316           2.9           1.5          -2             0 \r\n 1985          317           4             1.5          -1             0 \r\n 1985          318           6             1            -6             0 \r\n 1985          319           2             1.5          -6             0 \r\n 1985          320           2.8           2.5          -2             4 \r\n 1985          321           7.1           8            -3.5           0 \r\n 1985          322           4.8           13.5          0.5           0 \r\n 1985          323           1             8            -10.5          3 \r\n 1985          324           6.7          -7.5          -15            4 \r\n 1985          325           5.9          -7            -17.5          0 \r\n 1985          326           7.2          -3.5          -13            2 \r\n 1985          327           8.1          -6.5          -16            0 \r\n 1985          328           6.2          -8.5          -19            0 \r\n 1985          329           3.6          -4.5          -13            0 \r\n 1985          330           6.1          -2            -13.5          0 \r\n 1985          331           7.3          -8.5          -19            0 \r\n 1985          332           7.3          -11           -18            1 \r\n 1985          333           4.7          -12.5         -19.5          0 \r\n 1985          334           3.4          -11.5         -15            0 \r\n 1985          335           3.1          -11           -16            10.41 \r\n 1985          336           4.9          -13           -22.5          6.35 \r\n 1985          337           5.9          -12.5         -25            0 \r\n 1985          338           3.4          -5.5          -13.5          0.51 \r\n 1985          339           8.5          -5.5          -15.5          1.52 \r\n 1985          340           4.1          -8            -21.5          0 \r\n 1985          341           7.7          -3            -14            0 \r\n 1985          342           7            -3.5          -11.5          0 \r\n 1985          343           1.1          -4.5          -10.5          0.25 \r\n 1985          344           2.6          -4.5          -9             1.78 \r\n 1985          345           7.1          -7            -17.5          0 \r\n 1985          346           5.6          -11.5         -23.5          0 \r\n 1985          347           4.4          -16           -28            0 \r\n 1985          348           3.6          -10.5         -27.5          0 \r\n 1985          349           5.7          -2            -19.5          0 \r\n 1985          350           3.9          -6.5          -17            0.25 \r\n 1985          351           4.2          -13.5         -24.5          2.03 \r\n 1985          352           1.6          -17           -28            0 \r\n 1985          353           3.8          -15.5         -28            0.25 \r\n 1985          354           4.4          -15           -27            0.76 \r\n 1985          355           2.9          -9.5          -28            0 \r\n 1985          356           5.8           2            -10            0 \r\n 1985          357           6.2           2.5          -8             0 \r\n 1985          358           6            -5            -23.5          0 \r\n 1985          359           5            -14           -23            0 \r\n 1985          360           4.4           1            -18.5          0 \r\n 1985          361           5.1          -2.5          -15.5          0.51 \r\n 1985          362           5.8          -7.5          -18            0 \r\n 1985          363           5.5          -7            -17.5          0 \r\n 1985          364           4.8          -1.5          -16.5          0 \r\n 1985          365           6.3          -1.5          -12.5          0 \r\n 1986          1             5.6          -3            -14            0 \r\n 1986          2             3.5          -2            -11.5          0.76 \r\n 1986          3             4.7          -2            -7             1.52 \r\n 1986          4             4.3          -2.5          -11            4.06 \r\n 1986          5             4.9          -6            -17.5          0.51 \r\n 1986          6             4.9          -9            -23            0 \r\n 1986          7             4.1          -18.5         -28.5          0 \r\n 1986          8             4.2          -7            -24            0 \r\n 1986          9             8.2           1.5          -9             0 \r\n 1986          10            8.8           2.5          -4.5           0 \r\n 1986          11            8.4           4.5          -5             0 \r\n 1986          12            7.6           4            -5.5           0 \r\n 1986          13            6.5           0            -12.5          0 \r\n 1986          14            8.2          -2            -10            0 \r\n 1986          15            8.8           2            -10.5          0 \r\n 1986          16            8.4           5            -3.5           0 \r\n 1986          17            5.3           4.5          -3             0 \r\n 1986          18            6.9           3.5          -1             0 \r\n 1986          19            4.3           1.5          -2             0 \r\n 1986          20            7.7           2.5          -3             0 \r\n 1986          21            3.6           2            -4.5           0 \r\n 1986          22            6.3          -1.5          -14            0.25 \r\n 1986          23            9.3           0            -12.5          0 \r\n 1986          24            6.1           3            -6             0 \r\n 1986          25            5.6           0.5          -6             0.25 \r\n 1986          26            9.2          -4            -21.5          0 \r\n 1986          27            5.4          -15           -25.5          0 \r\n 1986          28            5.6          -5            -16.5          0 \r\n 1986          29            8.5          -4.5          -15.5          0 \r\n 1986          30            5.2          -5.5          -15            0 \r\n 1986          31            4.9          -3.5          -8.5           0.25 \r\n 1986          32            11.1         -1            -6             0 \r\n 1986          33            9.4           1.5          -5.5           0.25 \r\n 1986          34            5.8           0.5          -2.5           0.76 \r\n 1986          35            3.9           0.5          -1.5           3.81 \r\n 1986          36            5.8           0.5          -2             10.16 \r\n 1986          37            6.1          -0.5          -4             0.25 \r\n 1986          38            5.5          -3            -8             6.35 \r\n 1986          39            8.7          -6.5          -16            0.76 \r\n 1986          40            9            -11.5         -22.5          0 \r\n 1986          41            9.1          -13           -25.5          0 \r\n 1986          42            9.3          -13.5         -24.5          0 \r\n 1986          43            9            -13.5         -25.5          0 \r\n 1986          44            4.2          -8            -24            0 \r\n 1986          45            9.6          -7            -18.5          0 \r\n 1986          46            4.1          -7.5          -19.5          0 \r\n 1986          47            6.1          -6            -11            0 \r\n 1986          48            8.9          -2            -7             0 \r\n 1986          49            6.3          -0.5          -6             0 \r\n 1986          50            11.5         -2            -10            0 \r\n 1986          51            8.4          -3.5          -15.5          0 \r\n 1986          52            13.3         -7.5          -19            0 \r\n 1986          53            15.2         -2.5          -12            0.25 \r\n 1986          54            6.1          -4            -11            0 \r\n 1986          55            8.1          -4.5          -13            0 \r\n 1986          56            8.7           0.5          -10            0 \r\n 1986          57            10.1          4.5          -3             0 \r\n 1986          58            9.8           3            -6.5           0 \r\n 1986          59            15.3         -2            -12.5          0 \r\n 1986          60            9.9           3            -10            0.51 \r\n 1986          61            12.7          5.5          -1.5           0 \r\n 1986          62            5.5           4            -0.5           0 \r\n 1986          63            13.9          5            -1.5           0 \r\n 1986          64            5             4.5          -2.5           0 \r\n 1986          65            10            1            -8.5           0 \r\n 1986          66            15.2         -4.5          -18.5          0 \r\n 1986          67            10.7          1            -12            1.02 \r\n 1986          68            5.8           10.5         -2.5           0 \r\n 1986          69            8.2           10           -2             0 \r\n 1986          70            11.6          2.5          -4.5           0 \r\n 1986          71            3.2           2.5          -1             1.27 \r\n 1986          72            4.1           2.5          -1             8.89 \r\n 1986          73            4.5           2.5          -0.5           0 \r\n 1986          74            18.2          6            -1             0 \r\n 1986          75            10.1          6.5          -3             0.25 \r\n 1986          76            7.6           7.5           0             2.03 \r\n 1986          77            2.7           9             1             26.42 \r\n 1986          78            14            5            -6             5.08 \r\n 1986          79            19.8         -0.5          -11.5          0 \r\n 1986          80            19.7          5.5          -8             0 \r\n 1986          81            14.9          11.5         -0.5           0 \r\n 1986          82            21.2          12           -1.5           0 \r\n 1986          83            13.1          13           -2.5           0 \r\n 1986          84            11.6          18            5.5           0 \r\n 1986          85            14.2          13.5          0             0 \r\n 1986          86            18.7          14.5         -4             0 \r\n 1986          87            18.8          24.5          4             0 \r\n 1986          88            20.7          28.5          4.5           0 \r\n 1986          89            19.6          25            5             0 \r\n 1986          90            22.4          26            9             0.76 \r\n 1986          91            23.2          23            3.5           13 \r\n 1986          92            15.2          15.5          2             0 \r\n 1986          93            5.5           13            5             9 \r\n 1986          94            4.4           12.5          5             10 \r\n 1986          95            6.1           12.5          6.5           17 \r\n 1986          96            13            14            5.5           0 \r\n 1986          97            23.4          18.5          6.5           0 \r\n 1986          98            21.9          16            3             0 \r\n 1986          99            23.6          13.5         -1             0 \r\n 1986          100           24.7          17.5         -1             0 \r\n 1986          101           24.6          21.5          1             0 \r\n 1986          102           9.5           19            3             0 \r\n 1986          103           13.2          12.5          0.5           0 \r\n 1986          104           6.6           14           -2             13 \r\n 1986          105           7.2           7.5          -2.5           0 \r\n 1986          106           24.9          13            1             0 \r\n 1986          107           10.5          13.5          3.5           0 \r\n 1986          108           2.7           13            7.5           5 \r\n 1986          109           20.5          15.5          6.5           7 \r\n 1986          110           16.8          15            4             0 \r\n 1986          111           13.6          11           -1             0 \r\n 1986          112           26.6          12           -5             0 \r\n 1986          113           26.5          21.5          4             0 \r\n 1986          114           20.7          23.5          11            0 \r\n 1986          115           16            26.5          10.5          0 \r\n 1986          116           15.5          27            10.5          11 \r\n 1986          117           9.5           25            14.5          11 \r\n 1986          118           7.6           19.5          6             16 \r\n 1986          119           16.4          20            6             3 \r\n 1986          120           15.9          21.5          10            0 \r\n 1986          121           23.4          17.5          4.5           1 \r\n 1986          122           24.7          15.5          0.5           0 \r\n 1986          123           19.3          18            5             0 \r\n 1986          124           25            25            12.5          0 \r\n 1986          125           26.6          28.5          15.5          0 \r\n 1986          126           26.8          27            7             0 \r\n 1986          127           24.8          25            6.5           0 \r\n 1986          128           18.1          26.5          13.5          0 \r\n 1986          129           9.4           24.5          12.5          9 \r\n 1986          130           3.4           20.5          13            21 \r\n 1986          131           16.3          20            13            19 \r\n 1986          132           25.4          24.5          12            0 \r\n 1986          133           5.8           23            11            10 \r\n 1986          134           29.8          22.5          7.5           17 \r\n 1986          135           7.6           22.5          12            4 \r\n 1986          136           8             19.5          9             5 \r\n 1986          137           12.1          18            9             6 \r\n 1986          138           29.5          17            6             0 \r\n 1986          139           28.1          18.5          6.5           0 \r\n 1986          140           30.2          19.5          4.5           0 \r\n 1986          141           31.9          21            4.5           0 \r\n 1986          142           31.7          22            6             0 \r\n 1986          143           9.3           20            9             0 \r\n 1986          144           18.8          21.5          8             0 \r\n 1986          145           14.1          21.5          10.5          4 \r\n 1986          146           6.3           18            11.5          12 \r\n 1986          147           6.3           17.5          13            9 \r\n 1986          148           15.4          21            14            3 \r\n 1986          149           12.1          21.5          14.5          10 \r\n 1986          150           26.7          26            12            5 \r\n 1986          151           25.8          29.5          14.5          0 \r\n 1986          152           28.7          29            15.5          0 \r\n 1986          153           32.5          24            8.5           0 \r\n 1986          154           31            27            9.5           0 \r\n 1986          155           11.1          28.5          16.5          0 \r\n 1986          156           7.1           22.5          14.5          1 \r\n 1986          157           12.5          23            14            0 \r\n 1986          158           20.7          25.5          15.5          1 \r\n 1986          159           29.1          26.5          12.5          0 \r\n 1986          160           22.3          27.5          14.5          0 \r\n 1986          161           20.5          30.5          18            0 \r\n 1986          162           6.2           27            14.5          6 \r\n 1986          163           27            25.5          12            1 \r\n 1986          164           13.6          26            12.5          0 \r\n 1986          165           17.2          24.5          15            0 \r\n 1986          166           25            26.5          14.5          0 \r\n 1986          167           31.5          27            16            0 \r\n 1986          168           28.9          28            12.5          0 \r\n 1986          169           24.7          29.5          16.5          8 \r\n 1986          170           29.5          32.5          19.5          0 \r\n 1986          171           25.9          33.5          21            0 \r\n 1986          172           13.6          31.5          20            17 \r\n 1986          173           23.3          27.5          17            6 \r\n 1986          174           30.2          28.5          13            0 \r\n 1986          175           32            27.5          12            0 \r\n 1986          176           29.4          29            13            0 \r\n 1986          177           18.7          32.5          21            0 \r\n 1986          178           25            33            21            5 \r\n 1986          179           14.8          30            18            8 \r\n 1986          180           12.3          26            17.5          18 \r\n 1986          181           5.8           23            16            9 \r\n 1986          182           14.1          22.5          15            0 \r\n 1986          183           27.2          26            15            0 \r\n 1986          184           30.9          28            13            0 \r\n 1986          185           25.2          31            21.5          0 \r\n 1986          186           20.4          33            21.5          0 \r\n 1986          187           12.9          30            17            46 \r\n 1986          188           26.9          25.5          14.5          0 \r\n 1986          189           14.9          29            19            0 \r\n 1986          190           18.8          28.5          18            24 \r\n 1986          191           11.3          25.5          18            8 \r\n 1986          192           21.5          26            17            8 \r\n 1986          193           18.2          27            17            0 \r\n 1986          194           30.3          27.5          15            9 \r\n 1986          195           17.2          29            17            0 \r\n 1986          196           14.3          30            21            1 \r\n 1986          197           26.1          32            21            0 \r\n 1986          198           29.6          33            22.5          0 \r\n 1986          199           28.3          34            22.5          0 \r\n 1986          200           23.6          32.5          20.5          0 \r\n 1986          201           24.8          27.5          15.5          0 \r\n 1986          202           24.8          26.5          12            0 \r\n 1986          203           28.1          29            14.5          12 \r\n 1986          204           24.8          31            17.5          0 \r\n 1986          205           22            32            20.5          0 \r\n 1986          206           24            30.5          18.5          36 \r\n 1986          207           22.4          29.5          16.5          0 \r\n 1986          208           19.6          30.5          19.5          0 \r\n 1986          209           25.1          31            18.5          0 \r\n 1986          210           25.6          30.5          15.5          8 \r\n 1986          211           23            31            19.5          0 \r\n 1986          212           23.6          29.5          17            0 \r\n 1986          213           18.4          26            13            0 \r\n 1986          214           24.8          24.5          12            0 \r\n 1986          215           26.6          24.5          11            0 \r\n 1986          216           20.5          25.5          11.5          0 \r\n 1986          217           11            24            15            2 \r\n 1986          218           21.9          25.5          14            0 \r\n 1986          219           19.4          27.5          15.5          0 \r\n 1986          220           26.8          27.5          13            0 \r\n 1986          221           11.2          26            14            0 \r\n 1986          222           21.7          23.5          13.5          4 \r\n 1986          223           27.7          23            7             0 \r\n 1986          224           11.5          23            14            0 \r\n 1986          225           5.3           22            15.5          11 \r\n 1986          226           20.4          26.5          17            6 \r\n 1986          227           26.4          29            14.5          0 \r\n 1986          228           25.2          30.5          17            0 \r\n 1986          229           24.8          29            17.5          1 \r\n 1986          230           18.6          27            13            0 \r\n 1986          231           21.5          27            14            0 \r\n 1986          232           5.8           25            14.5          0 \r\n 1986          233           23.4          24            12            0 \r\n 1986          234           8.8           26            14.5          0 \r\n 1986          235           22.2          25            11            0 \r\n 1986          236           9.6           22.5          10            0 \r\n 1986          237           19.4          29            15            5 \r\n 1986          238           13.8          28.5          15.5          36 \r\n 1986          239           19.2          20.5          7.5           0 \r\n 1986          240           18.9          19            4             0 \r\n 1986          241           14.2          20            6.5           0 \r\n 1986          242           20.9          24            13            0 \r\n 1986          243           22.8          27.5          13.5          0 \r\n 1986          244           21.7          28            13            0 \r\n 1986          245           15.1          27            12.5          0 \r\n 1986          246           12.9          27            15.5          6 \r\n 1986          247           23.7          25            12.5          7 \r\n 1986          248           20.1          22.5          8             0 \r\n 1986          249           13.5          19.5          8             0 \r\n 1986          250           22.1          18            3             0 \r\n 1986          251           23.1          20            2.5           0 \r\n 1986          252           5.7           20.5          9.5           1 \r\n 1986          253           6.6           26            16            7 \r\n 1986          254           4.6           24            13            6 \r\n 1986          255           20.6          21.5          6             0 \r\n 1986          256           14.7          21            9             7 \r\n 1986          257           2.7           18            10.5          4 \r\n 1986          258           6             17.5          11.5          17 \r\n 1986          259           6.8           17            9             0 \r\n 1986          260           5.5           20            11            0 \r\n 1986          261           5.1           21            14            1 \r\n 1986          262           9.6           24            15            16 \r\n 1986          263           7.2           24.5          14.5          6 \r\n 1986          264           10.7          27.5          17.5          8 \r\n 1986          265           3.7           27.5          16            2 \r\n 1986          266           10.5          22            11.5          0 \r\n 1986          267           2.7           21.5          12.5          0 \r\n 1986          268           19.3          26.5          17            18 \r\n 1986          269           18.9          30            17.5          0 \r\n 1986          270           18.4          29            14            20 \r\n 1986          271           7.5           26.5          10            0 \r\n 1986          272           11.4          23.5          13.5          13 \r\n 1986          273           13.6          20.5          11            3 \r\n 1986          274           17.4          19.5          7             5 \r\n 1986          275           6             18.5          8.5           0 \r\n 1986          276           4.1           16            10.5          13 \r\n 1986          277           15            14.5          6.5           14 \r\n 1986          278           13.2          15.5          4             0 \r\n 1986          279           14.9          16           -1.5           0 \r\n 1986          280           16            22.5          6             0 \r\n 1986          281           12.8          21.5          9             0 \r\n 1986          282           17.1          15.5          5             0 \r\n 1986          283           7.6           14            3             0 \r\n 1986          284           1             14            4.5           23 \r\n 1986          285           4.5           7             1.5           40 \r\n 1986          286           6.5           5             0             0 \r\n 1986          287           13.5          9.5          -2.5           0 \r\n 1986          288           15.8          12           -0.5           0 \r\n 1986          289           14.9          18.5          1.5           0 \r\n 1986          290           14.1          17.5          2.5           0 \r\n 1986          291           14.8          15            2             0 \r\n 1986          292           13.5          19.5          3             0 \r\n 1986          293           13.6          23.5          6.5           0 \r\n 1986          294           13            23.5          7.5           0 \r\n 1986          295           2.6           19.5          9.5           0 \r\n 1986          296           4             15            10.5          3 \r\n 1986          297           2.4           13.5          10            0 \r\n 1986          298           4             12            8             2 \r\n 1986          299           8.7           13            5.5           0 \r\n 1986          300           13.2          19.5          1             0 \r\n 1986          301           11.1          20.5          6             0 \r\n 1986          302           12.9          16.5          1.5           0 \r\n 1986          303           7.7           14.5          1.5           0 \r\n 1986          304           7             14            4.5           0 \r\n 1986          305           6.3           8            -2             5 \r\n 1986          306           12.8          4.5          -6.5           0 \r\n 1986          307           5.8           10           -1.5           0 \r\n 1986          308           11.4          8            -4             0 \r\n 1986          309           10.7          10.5         -4             0 \r\n 1986          310           9.5           15.5         -1             0 \r\n 1986          311           2.7           14.5          3.5           0 \r\n 1986          312           9.8           12.5         -1.5           7 \r\n 1986          313           10.6          3            -5.5           0 \r\n 1986          314           3.5          -3            -11            0 \r\n 1986          315           5.1          -6.5          -21.5          0 \r\n 1986          316           6.9          -6.5          -17.5          0 \r\n 1986          317           7.5          -8.5          -20            0 \r\n 1986          318           8.4          -1            -13            0 \r\n 1986          319           8             1.5          -9             0 \r\n 1986          320           9.7           5            -8.5           0 \r\n 1986          321           4.9           4            -3.5           0 \r\n 1986          322           3            -1            -8.5           10 \r\n 1986          323           2.75         -1            -13            0 \r\n 1986          324           2.5           0            -8             6 \r\n 1986          325           5.3           1            -14.5          0 \r\n 1986          326           6.7           5            -4             0 \r\n 1986          327           4.9           2.5          -6.5           0 \r\n 1986          328           8.2           3.5          -10.5          0 \r\n 1986          329           8.3           6.5          -3             0 \r\n 1986          330           9.4           5            -2.5           0 \r\n 1986          331           9             6            -5.5           0 \r\n 1986          332           7.2           8.5          -3             0 \r\n 1986          333           6.6           6            -3.5           0 \r\n 1986          334           2.4           3            -1             0 \r\n 1986          335           4.5           1            -1             1.02 \r\n 1986          336           4.4           1            -1             5.84 \r\n 1986          337           6.2           1            -4             0.25 \r\n 1986          338           7.1          -1            -8.5           0 \r\n 1986          339           8.4          -0.5          -12.5          0 \r\n 1986          340           5.9           0.5          -7             0 \r\n 1986          341           5.2          -1.5          -5.5           2.29 \r\n 1986          342           3.7          -0.5          -6.5           3.56 \r\n 1986          343           4.2          -1.5          -13.5          0.76 \r\n 1986          344           4.9          -9            -18.5          0 \r\n 1986          345           5.3          -2.5          -15.5          0 \r\n 1986          346           5.2          -8            -18.5          0 \r\n 1986          347           5            -8            -23            0 \r\n 1986          348           7.4          -0.5          -13.5          0 \r\n 1986          349           7.1           1            -9.5           0 \r\n 1986          350           6.9           0.5          -8             0 \r\n 1986          351           5.6           1            -5.5           0 \r\n 1986          352           7.9           1.5          -4.5           0 \r\n 1986          353           7             1.5          -9             0 \r\n 1986          354           7.4           0            -9.5           0 \r\n 1986          355           5.4          -1.5          -11.5          0 \r\n 1986          356           4.9           0            -7             0 \r\n 1986          357           4.7          -0.5          -6             0 \r\n 1986          358           5.1          -1.5          -6.5           0 \r\n 1986          359           6.7          -0.5          -6.5           0 \r\n 1986          360           6.7          -1            -10            0 \r\n 1986          361           4.1          -1.5          -9             0 \r\n 1986          362           3            -1            -4             0 \r\n 1986          363           3.5           0            -3.5           0 \r\n 1986          364           7.7           1            -5             0 \r\n 1986          365           6             3.5          -6             0 \r\n 1987          1             5.2           1.5          -9             0 \r\n 1987          2             5.8          -0.5          -8.5           0 \r\n 1987          3             3.8           1            -7             0 \r\n 1987          4             5.2           2.5          -2.5           0 \r\n 1987          5             3.5           1.5          -3             0 \r\n 1987          6             3.2           1.5          -2             0.25 \r\n 1987          7             4.6           0            -3.5           0.51 \r\n 1987          8             8             1.5          -5.5           0 \r\n 1987          9             5.3           0            -7             0.51 \r\n 1987          10            4.1          -2.5          -8.5           1.27 \r\n 1987          11            6.8           2.5          -11            0 \r\n 1987          12            8.3           8.5          -3.5           0 \r\n 1987          13            7.9           11           -1.5           0 \r\n 1987          14            8.5           7            -3             0 \r\n 1987          15            7.6           1.5          -12.5          0 \r\n 1987          16            8.8          -7.5          -15.5          0 \r\n 1987          17            5.3          -5.5          -13            0 \r\n 1987          18            9.3          -2.5          -14.5          0.25 \r\n 1987          19            4.7          -2            -14.5          0 \r\n 1987          20            6.4          -2.5          -14.5          0 \r\n 1987          21            4.9           0.5          -11            0.51 \r\n 1987          22            7.4          -3            -16            0.51 \r\n 1987          23            8.1          -12.5         -24.5          0 \r\n 1987          24            6.7          -10.5         -20.5          0 \r\n 1987          25            6.3          -7.5          -16            0 \r\n 1987          26            6            -4            -14            0 \r\n 1987          27            7.8           3            -8.5           0.51 \r\n 1987          28            8.6           2.5          -5.5           0 \r\n 1987          29            4             2.5          -3             0.25 \r\n 1987          30            6.7           2.5          -4.5           0.25 \r\n 1987          31            7.1           7            -8             0 \r\n 1987          32            9.9           10           -3             0 \r\n 1987          33            9.8           12           -3             0 \r\n 1987          34            9.8           4.5          -8.5           0 \r\n 1987          35            8.5           2.5          -7.5           0 \r\n 1987          36            7.5           4.5          -4             0 \r\n 1987          37            11.4          9.5          -4.5           0 \r\n 1987          38            10.4          15           -3.5           0 \r\n 1987          39            12.8          9.5          -6             0 \r\n 1987          40            11.6          5.5          -10.5          0 \r\n 1987          41            11.5          8.5          -6.5           0 \r\n 1987          42            13.4          11.5         -4.5           0 \r\n 1987          43            8.7           8            -3             0 \r\n 1987          44            8             9            -5             0 \r\n 1987          45            5.9           5.5          -3.5           0 \r\n 1987          46            8.7          -0.5          -7             0 \r\n 1987          47            12            0            -9             0 \r\n 1987          48            12.8          0.5          -11.5          0 \r\n 1987          49            14            4            -11            0 \r\n 1987          50            11.8          6.5          -8             0 \r\n 1987          51            10.9          7.5          -6             0 \r\n 1987          52            10.1          8            -6.5           0 \r\n 1987          53            8.3           5.5          -5             0.25 \r\n 1987          54            12.8          7            -8.5           0 \r\n 1987          55            11.7          8            -4             0 \r\n 1987          56            11.2          8.5          -3.5           0 \r\n 1987          57            15.3          10           -3.5           0 \r\n 1987          58            6.8           7.5          -1.5           0.25 \r\n 1987          59            3.3           4.5           0             1.78 \r\n 1987          60            5.4           2            -3.5           9.4 \r\n 1987          61            11            5.5          -7.5           0 \r\n 1987          62            14.3          6.5          -8             0 \r\n 1987          63            11.8          14           -3             0 \r\n 1987          64            16            16           -0.5           0 \r\n 1987          65            17.1          18.5          1             0 \r\n 1987          66            17.7          21.5          4             0 \r\n 1987          67            10.3          15.5          0             0 \r\n 1987          68            13.5          4.5          -6             0 \r\n 1987          69            14.7         -0.5          -10            0 \r\n 1987          70            15            4            -6             0 \r\n 1987          71            9.6           5.5          -2             0 \r\n 1987          72            11.4          10.5         -0.5           0.25 \r\n 1987          73            8.7           10            0.5           0.25 \r\n 1987          74            5.5           4            -1             5.08 \r\n 1987          75            7.6           2.5          -1             0.76 \r\n 1987          76            8.5           5.5          -0.5           0.25 \r\n 1987          77            4.6           6             0.5           6.1 \r\n 1987          78            13.6          9.5           1.5           3.56 \r\n 1987          79            14            15            4             0 \r\n 1987          80            15.3          16            3.5           0.76 \r\n 1987          81            17.6          18.5         -1             0 \r\n 1987          82            12.2          20            6.5           2.03 \r\n 1987          83            7.8           17            7.5           2.54 \r\n 1987          84            7.1           9.5           4.5           6.1 \r\n 1987          85            9.1           7             1             1.02 \r\n 1987          86            19.5          10           -1             0 \r\n 1987          87            9             9.5          -3             1.27 \r\n 1987          88            13            1            -8             12.45 \r\n 1987          89            17.6          1.5          -13            0 \r\n 1987          90            19.2          4            -9.5           0 \r\n 1987          91            9.6           5.5          -3             0 \r\n 1987          92            19.3          4.5          -6             0 \r\n 1987          93            20.3          6.5          -8             0 \r\n 1987          94            21.8          11           -5             0 \r\n 1987          95            23.3          16           -2             0 \r\n 1987          96            21.2          19           -1             0 \r\n 1987          97            24            22            1.5           0 \r\n 1987          98            23.2          24            2             0 \r\n 1987          99            22.3          25            3.5           0 \r\n 1987          100           21.3          21            4             0 \r\n 1987          101           8.9           14.5          1.5           7 \r\n 1987          102           22.5          17.5          2             1 \r\n 1987          103           5.7           17            6             2 \r\n 1987          104           3             10.5          7.5           11 \r\n 1987          105           6             11.5          7             22 \r\n 1987          106           22.7          20.5          2.5           0 \r\n 1987          107           22.2          26            5             0 \r\n 1987          108           24.9          27            9             0 \r\n 1987          109           21.4          29.5          12.5          0 \r\n 1987          110           14.4          29            12.5          0 \r\n 1987          111           7.7           17            5             1 \r\n 1987          112           4.6           7             4.5           3 \r\n 1987          113           25.7          17            3             5 \r\n 1987          114           25.6          20.5          6             0 \r\n 1987          115           26.9          26.5          8             0 \r\n 1987          116           23.6          28.5          10            0 \r\n 1987          117           26.3          25.5          8             3 \r\n 1987          118           25.6          25.5          2             0 \r\n 1987          119           26.9          27            10            0 \r\n 1987          120           28            24            4.5           0 \r\n 1987          121           23.4          28            7.5           0 \r\n 1987          122           14            28            11            0 \r\n 1987          123           14.5          21            9.5           0 \r\n 1987          124           21.7          20.5          6             0 \r\n 1987          125           23            21            4.5           0 \r\n 1987          126           27            26            6.5           0 \r\n 1987          127           26.7          27.5          6             0 \r\n 1987          128           29.2          28.5          7             0 \r\n 1987          129           28.3          31.5          13            0 \r\n 1987          130           25.5          32.5          17.5          0 \r\n 1987          131           26.8          30            16.5          0 \r\n 1987          132           28.5          26.5          7             0 \r\n 1987          133           20.6          30            10            0 \r\n 1987          134           29.1          29            13.5          3 \r\n 1987          135           29            27            7.5           0 \r\n 1987          136           30.5          30.5          12            0 \r\n 1987          137           27.8          33            13.5          0 \r\n 1987          138           16.9          31.5          15            0 \r\n 1987          139           20            28.5          15            4 \r\n 1987          140           16.6          29.5          17.5          2 \r\n 1987          141           13.9          27            13            4 \r\n 1987          142           14.2          17            6             0 \r\n 1987          143           25.7          17.5          6.5           0 \r\n 1987          144           8.9           18            9.5           0 \r\n 1987          145           6             17            11            0 \r\n 1987          146           12            23.5          13.5          21 \r\n 1987          147           17.6          25.5          17            4 \r\n 1987          148           18.3          25.5          17            0 \r\n 1987          149           15            26            17.5          3 \r\n 1987          150           23.5          27            15            7 \r\n 1987          151           27.9          28            15.5          5 \r\n 1987          152           26            31            16.5          0 \r\n 1987          153           19.3          27.5          13.5          7 \r\n 1987          154           28.1          23.5          10.5          0 \r\n 1987          155           30.8          26            6             0 \r\n 1987          156           30.4          30.5          13            0 \r\n 1987          157           28.7          32            16            0 \r\n 1987          158           27.6          34            19            0 \r\n 1987          159           26.4          32.5          18            0 \r\n 1987          160           18.8          26            14.5          0 \r\n 1987          161           11.1          22            14.5          0 \r\n 1987          162           16.7          28            15.5          3 \r\n 1987          163           29.8          33            16.5          0 \r\n 1987          164           29.5          36.5          17.5          0 \r\n 1987          165           31.6          37            19.5          0 \r\n 1987          166           31            35            18.5          0 \r\n 1987          167           21.9          32.5          17.5          0 \r\n 1987          168           14.8          31.5          20            0 \r\n 1987          169           26            32.5          18.5          3 \r\n 1987          170           17            31.5          20            0 \r\n 1987          171           9.3           27            18.5          0 \r\n 1987          172           22.4          28.5          17.5          0 \r\n 1987          173           26.2          31            18.5          0 \r\n 1987          174           23.5          32            20.5          0 \r\n 1987          175           23.5          30.5          16.5          0 \r\n 1987          176           26.3          27.5          16            10 \r\n 1987          177           30.5          25            11.5          0 \r\n 1987          178           30.4          26.5          9.5           0 \r\n 1987          179           28            31            14.5          0 \r\n 1987          180           22.2          29            16            2 \r\n 1987          181           28.3          27            11.5          0 \r\n 1987          182           31            27.5          12            0 \r\n 1987          183           27.7          30.5          15.5          0 \r\n 1987          184           28.1          29            13            0 \r\n 1987          185           24.5          28.5          14            0 \r\n 1987          186           20.5          29.5          17.5          0 \r\n 1987          187           24.1          31.5          19            0 \r\n 1987          188           19.4          30.5          18.5          2 \r\n 1987          189           20.5          30            18            0 \r\n 1987          190           22.2          29.5          19            22 \r\n 1987          191           16.4          29.5          19.5          0 \r\n 1987          192           19            30.5          20            0 \r\n 1987          193           12.7          26            17            58 \r\n 1987          194           26.5          23.5          13            0 \r\n 1987          195           18.3          24            12            0 \r\n 1987          196           25.9          25.5          11            23 \r\n 1987          197           28.8          28.5          15            0 \r\n 1987          198           23.6          30.5          20            0 \r\n 1987          199           12            28.5          21            0 \r\n 1987          200           20.7          31            19            14 \r\n 1987          201           26.2          32.5          23.5          0 \r\n 1987          202           23.6          31.5          20            6 \r\n 1987          203           23.6          30.5          20            0 \r\n 1987          204           25.7          31.5          20.5          0 \r\n 1987          205           18            31            21            0 \r\n 1987          206           26.7          32.5          19.5          7 \r\n 1987          207           25.1          33.5          22            0 \r\n 1987          208           24.8          34            22.5          0 \r\n 1987          209           24.4          34            20.5          0 \r\n 1987          210           26.2          35            22            0 \r\n 1987          211           26.5          35            22            0 \r\n 1987          212           26.4          35.5          22            0 \r\n 1987          213           20.8          35            22.5          0 \r\n 1987          214           26.8          34.5          21.5          0 \r\n 1987          215           11            31.5          20            0 \r\n 1987          216           20.9          26.5          15.5          13 \r\n 1987          217           26.3          26.5          11.5          0 \r\n 1987          218           19.3          29            16            0 \r\n 1987          219           8.7           26.5          17            0 \r\n 1987          220           5.7           24            18.5          28 \r\n 1987          221           27            27.5          14.5          2 \r\n 1987          222           23.2          29            16            0 \r\n 1987          223           23.9          29            17            0 \r\n 1987          224           6.4           26.5          18            0 \r\n 1987          225           8.4           25            18.5          28 \r\n 1987          226           10.6          28            20            3 \r\n 1987          227           23            31            21            0 \r\n 1987          228           16.6          29.5          19            13 \r\n 1987          229           17.3          26.5          15            0 \r\n 1987          230           22.4          25.5          14.5          8 \r\n 1987          231           13.7          23.5          12            0 \r\n 1987          232           16.7          25.5          13            0 \r\n 1987          233           14.6          30            17.5          0 \r\n 1987          234           10.9          26.5          13.5          0 \r\n 1987          235           24.2          21            8             0 \r\n 1987          236           12.3          20            8.5           0 \r\n 1987          237           2             15.5          10            10 \r\n 1987          238           3             15            11.5          8 \r\n 1987          239           8.6           19            13.5          0 \r\n 1987          240           14.2          21.5          12            0 \r\n 1987          241           22.4          26.5          9             0 \r\n 1987          242           19.1          25            12            0 \r\n 1987          243           23.5          21.5          8             0 \r\n 1987          244           23            26            8.5           0 \r\n 1987          245           23.7          25            9             0 \r\n 1987          246           23            24            10            0 \r\n 1987          247           21.2          29.5          13            0 \r\n 1987          248           13.1          30            16.5          0 \r\n 1987          249           13.8          27.5          16            8 \r\n 1987          250           14.1          26.5          13            3 \r\n 1987          251           21.5          24            11.5          4 \r\n 1987          252           10.6          20.5          7.5           0 \r\n 1987          253           15.5          24            9             0 \r\n 1987          254           18.8          22.5          11            7 \r\n 1987          255           16            20.5          9             0 \r\n 1987          256           21.1          21            10            8 \r\n 1987          257           6.9           22            10            0 \r\n 1987          258           6.9           21.5          12            31 \r\n 1987          259           7             23            15.5          3 \r\n 1987          260           8.7           23            14.5          5 \r\n 1987          261           14.9          21.5          12            0 \r\n 1987          262           7.4           19            7.5           2 \r\n 1987          263           10.7          17            9             4 \r\n 1987          264           11.2          18            7.5           0 \r\n 1987          265           13            20            7             0 \r\n 1987          266           20.2          25            7             0 \r\n 1987          267           20            25            8             0 \r\n 1987          268           19.1          24            7             0 \r\n 1987          269           18.9          28            8.5           0 \r\n 1987          270           17            29            14            0 \r\n 1987          271           13.4          26            13.5          0 \r\n 1987          272           17.6          22.5          11.5          0 \r\n 1987          273           16.2          20.5          7.5           0 \r\n 1987          274           16.7          26            6             0 \r\n 1987          275           17.3          19.5          2.5           0 \r\n 1987          276           18            16           -3             0 \r\n 1987          277           18.1          23            3.5           0 \r\n 1987          278           9.5           21            8.5           0 \r\n 1987          279           14.9          15            4.5           0 \r\n 1987          280           17.1          13           -1             0 \r\n 1987          281           13.9          16.5         -2             0 \r\n 1987          282           9.9           13            1             0 \r\n 1987          283           12.4          7.5          -2             0 \r\n 1987          284           15.8          10.5         -8             0 \r\n 1987          285           16.2          17.5         -3.5           0 \r\n 1987          286           13.1          22.5          0.5           0 \r\n 1987          287           4.2           19            6.5           0 \r\n 1987          288           5.7           14.5          8.5           4 \r\n 1987          289           7.6           14            7.5           14 \r\n 1987          290           13.9          14            4             2 \r\n 1987          291           10.6          12.5          3             0 \r\n 1987          292           10.9          12            0             0 \r\n 1987          293           8.6           8            -1             0 \r\n 1987          294           13.7          6            -3.5           0 \r\n 1987          295           13.7          10           -0.5           0 \r\n 1987          296           10.3          10           -4             0 \r\n 1987          297           11.4          7.5          -3             0 \r\n 1987          298           10.6          9            -5             0 \r\n 1987          299           5.9           11            1.5           1 \r\n 1987          300           11            10.5         -1             0 \r\n 1987          301           9.9           12.5         -4             0 \r\n 1987          302           12.3          16           -0.5           0 \r\n 1987          303           12.5          19.5          1.5           0 \r\n 1987          304           5             14.5          3.5           0 \r\n 1987          305           4.4           13            8             6 \r\n 1987          306           4.4           18            12            1 \r\n 1987          307           5.2           17.5          12.5          0 \r\n 1987          308           11.8          15.5          6             0 \r\n 1987          309           12            12           -2.5           0 \r\n 1987          310           9.8           13.5          2             0 \r\n 1987          311           3.6           12            2.5           0 \r\n 1987          312           4.8           9.5           1.5           4 \r\n 1987          313           12            5.5          -6             1 \r\n 1987          314           11.5          6            -7             0 \r\n 1987          315           11.3          10.5         -5             0 \r\n 1987          316           9.8           15.5         -2.5           0 \r\n 1987          317           5.9           13.5          1.5           0 \r\n 1987          318           8.9           15           -1             0 \r\n 1987          319           3.2           13.5          6             0 \r\n 1987          320           4.2           13.5          5             10 \r\n 1987          321           3.2           7.5          -1             4 \r\n 1987          322           9.6           5.5          -5             3 \r\n 1987          323           9.9           7.5          -3             0 \r\n 1987          324           10.2          3            -8.5           0 \r\n 1987          325           10.1          6            -8.5           0 \r\n 1987          326           7.3           10.5         -2             0 \r\n 1987          327           3.4           8.5          -2.5           0 \r\n 1987          328           6.6           3            -6.5           0 \r\n 1987          329           4.9           3.5          -1.5           0 \r\n 1987          330           4             2.5           0             0 \r\n 1987          331           3.7           1.5          -0.5           0 \r\n 1987          332           2.6           1            -0.5           13 \r\n 1987          333           3.4           2.5          -1             12 \r\n 1987          334           4.1           0            -2.5           0 \r\n 1987          335           4.7          -2            -4.5           0 \r\n 1987          336           4.2          -1            -6             0 \r\n 1987          337           5.6          -1            -5.5           0.25 \r\n 1987          338           6.9          -0.5          -11            0 \r\n 1987          339           5.5           2            -8             0 \r\n 1987          340           2.7           1.5          -2             1.27 \r\n 1987          341           3             1            -0.5           0.25 \r\n 1987          342           1.7           4.5           0.5           0.76 \r\n 1987          343           5.9           5             0             10.92 \r\n 1987          344           7.3           7            -4.5           0 \r\n 1987          345           8.2           8            -0.5           0.25 \r\n 1987          346           3.8           4.5          -2             0 \r\n 1987          347           5.1           0.5          -4.5           0 \r\n 1987          348           3.8          -2            -7.5           0 \r\n 1987          349           3.2          -4            -7.5           2.54 \r\n 1987          350           6.5          -5.5          -11            0 \r\n 1987          351           7            -4            -15            0 \r\n 1987          352           4.7           0.5          -9             0.51 \r\n 1987          353           2.4           1            -6             0.25 \r\n 1987          354           8.4           2            -6.5           2.54 \r\n 1987          355           5.6           3            -8             0 \r\n 1987          356           7.4           3.5          -5.5           0 \r\n 1987          357           3             3.5          -3             0 \r\n 1987          358           2.3           1.5          -5.5           0.76 \r\n 1987          359           5            -3.5          -11.5          0 \r\n 1987          360           7.9          -2            -15            0 \r\n 1987          361           2.8          -1.5          -11.5          1.02 \r\n 1987          362           3            -2            -7             16.26 \r\n 1987          363           1.7          -4            -9.5           1.02 \r\n 1987          364           3.3          -0.5          -8             0 \r\n 1987          365           2.5          -2.5          -17.5          0 \r\n 1988          1             5.9          -12           -25.5          0 \r\n 1988          2             8.1          -8.5          -22            0 \r\n 1988          3             6.5          -6.5          -17.5          0 \r\n 1988          4             5.2          -12.5         -24.5          0 \r\n 1988          5             4.9          -21           -29            0 \r\n 1988          6             5.1          -20.5         -32            0 \r\n 1988          7             4.4          -15.5         -29.5          0 \r\n 1988          8             6.7          -14.5         -23            0 \r\n 1988          9             6.6          -17           -28.5          0 \r\n 1988          10            8            -11.5         -26.5          0 \r\n 1988          11            5            -3            -14            0 \r\n 1988          12            3.9           0            -14.5          0.51 \r\n 1988          13            5.1          -10           -25            0.76 \r\n 1988          14            6.3          -6            -21            0 \r\n 1988          15            7.2          -0.5          -11.5          0 \r\n 1988          16            6.1           3            -4             0 \r\n 1988          17            6.3           2            -6.5           0 \r\n 1988          18            6.8           0            -4             0 \r\n 1988          19            3.5           0.5          -2             3.56 \r\n 1988          20            5            -0.5          -8.5           7.62 \r\n 1988          21            9.5          -6.5          -13            0.25 \r\n 1988          22            6.7          -4            -17            0.25 \r\n 1988          23            4.6          -3.5          -18            2.03 \r\n 1988          24            7.5          -1            -17.5          3.05 \r\n 1988          25            7.8          -9            -23            1.02 \r\n 1988          26            7.2          -16.5         -27            0 \r\n 1988          27            7.8          -6            -20            0 \r\n 1988          28            7.9          -2.5          -13            0 \r\n 1988          29            9.009         3            -7             0 \r\n 1988          30            8.83575       5.5          -0.5           0 \r\n 1988          31            10.4          2.5          -12            0 \r\n 1988          32            7.6          -11.5         -19.5          0.51 \r\n 1988          33            9.9          -12.5         -23            0.25 \r\n 1988          34            5.2          -10           -19            0 \r\n 1988          35            9.7          -13           -20.5          0.51 \r\n 1988          36            10.3         -16.5         -25            0.51 \r\n 1988          37            8.2          -13           -23.5          0 \r\n 1988          38            13.1         -7.5          -18.5          0 \r\n 1988          39            8.3          -6.5          -18            0.76 \r\n 1988          40            10.1         -7.5          -18            1.52 \r\n 1988          41            5.1          -12.5         -21.5          4.32 \r\n 1988          42            8.4          -18           -29            0 \r\n 1988          43            9.6          -14           -29.5          0.25 \r\n 1988          44            11.1         -6.5          -16.5          0 \r\n 1988          45            8.1          -4.5          -11            0.25 \r\n 1988          46            13.4         -6            -19            0.25 \r\n 1988          47            6.8           1.5          -12            2.79 \r\n 1988          48            8.9           3.5          -8             0 \r\n 1988          49            11.4          5.5          -4             0 \r\n 1988          50            8.7           5.5          -3             0 \r\n 1988          51            12.8          0.5          -15            0 \r\n 1988          52            8             0            -15            0 \r\n 1988          53            11.2          5            -6             0 \r\n 1988          54            13.7         -0.5          -10            0 \r\n 1988          55            14.6         -3.5          -11.5          0 \r\n 1988          56            16.3          0            -13            0 \r\n 1988          57            15.2          7            -4.5           0 \r\n 1988          58            16.2          7            -3             0 \r\n 1988          59            14.4          6.5          -1             0 \r\n 1988          60            17.2          6.75         -1.75          0 \r\n 1988          61            13.2          7            -2.5           0 \r\n 1988          62            11.2          11           -3             0 \r\n 1988          63            16.2          7            -4.5           0 \r\n 1988          64            17            0            -7             0 \r\n 1988          65            17.5          2            -8.5           0 \r\n 1988          66            18.1          6            -5.5           0 \r\n 1988          67            11.6          11           -2.5           0 \r\n 1988          68            3.6           11           -1             0.25 \r\n 1988          69            16.7          8             1             0 \r\n 1988          70            15.9          7            -1             0 \r\n 1988          71            15.7          10.5         -2.5           0 \r\n 1988          72            5.1           13            0             0.51 \r\n 1988          73            9.1           9.5          -5.5           1.02 \r\n 1988          74            13.2         -3.5          -11.5          0.25 \r\n 1988          75            10.8         -4            -12            0 \r\n 1988          76            10.8         -2.5          -10.5          0 \r\n 1988          77            13.7          1            -6             0 \r\n 1988          78            18.4          4            -4             0 \r\n 1988          79            10.3          4.5          -5.5           0 \r\n 1988          80            19.1          9            -5.5           0 \r\n 1988          81            17.9          10           -5             0 \r\n 1988          82            20            9            -4.5           0 \r\n 1988          83            17.8          19           -1             0 \r\n 1988          84            3.9           19           -1             1.52 \r\n 1988          85            19.8          15.5          3             6.86 \r\n 1988          86            17.4          16            2             0 \r\n 1988          87            21.8          10.5         -4             0 \r\n 1988          88            4.4           13.5         -4.5           8.38 \r\n 1988          89            18.6          14            3             0.51 \r\n 1988          90            21.5          9            -1             0 \r\n 1988          91            19.7          13           -4             0 \r\n 1988          92            7.8           14           -1             0 \r\n 1988          93            2.7           12.5         -1             0 \r\n 1988          94            6             11.5          4             13 \r\n 1988          95            18.2          11.5          3.5           7 \r\n 1988          96            7.5           20.5          3.5           0 \r\n 1988          97            21.5          20            6             0 \r\n 1988          98            22.1          15.5          3             4 \r\n 1988          99            22.2          23            2.5           0 \r\n 1988          100           9.3           26.5          8.5           0 \r\n 1988          101           18            23            3.5           0 \r\n 1988          102           24.6          10.5         -1.5           1 \r\n 1988          103           24.8          14.5         -1.5           0 \r\n 1988          104           13.9          19           -0.5           0 \r\n 1988          105           23.2          20            2.5           0 \r\n 1988          106           25.7          14           -2             1 \r\n 1988          107           25.4          12           -4.5           0 \r\n 1988          108           23.9          17.5         -3.5           0 \r\n 1988          109           27.1          17.5          3.5           0 \r\n 1988          110           27.3          13           -4             0 \r\n 1988          111           26            13.5         -5.5           0 \r\n 1988          112           7.7           14.5          1             7 \r\n 1988          113           1.3           11.5          0.5           5 \r\n 1988          114           10.7          5             1             4 \r\n 1988          115           20.1          7.5           0             7 \r\n 1988          116           22.5          15           -1.5           0 \r\n 1988          117           3.1           17            3             0 \r\n 1988          118           20            12            1             9 \r\n 1988          119           27            9             0.5           22 \r\n 1988          120           28.5          16            1             0 \r\n 1988          121           20            21            2.5           0 \r\n 1988          122           23.3          23            5.5           0 \r\n 1988          123           24.9          24.5          8.5           0 \r\n 1988          124           22.5          25.5          9             0 \r\n 1988          125           23.6          25            9.5           0 \r\n 1988          126           28.3          25            5.5           0 \r\n 1988          127           19.5          26.5          8             0 \r\n 1988          128           18.3          27.5          9             0 \r\n 1988          129           9             27.5          12            0 \r\n 1988          130           14.8          25.5          12            10 \r\n 1988          131           22.1          20            9.5           7 \r\n 1988          132           22.9          22            7.5           2 \r\n 1988          133           26.7          25.5          8             0 \r\n 1988          134           29.7          29            9.5           0 \r\n 1988          135           22.4          26.5          6             0 \r\n 1988          136           26.8          29            9             0 \r\n 1988          137           21.2          30.5          12            0 \r\n 1988          138           31.1          22.5          7             0 \r\n 1988          139           23.3          21            3             0 \r\n 1988          140           18.8          26            10.5          0 \r\n 1988          141           26.5          27            14            0 \r\n 1988          142           19            29            13            0 \r\n 1988          143           9.6           29.5          12.5          0 \r\n 1988          144           24.6          26            16            8 \r\n 1988          145           31.4          25.5          15            0 \r\n 1988          146           32.2          26            11            0 \r\n 1988          147           17.4          25            7.5           0 \r\n 1988          148           22.8          27            11.5          0 \r\n 1988          149           28.1          28.5          14            5 \r\n 1988          150           26.6          31            16.5          0 \r\n 1988          151           25.7          31.5          17            0 \r\n 1988          152           26.5          31.5          17.5          0 \r\n 1988          153           20.8          32            17            0 \r\n 1988          154           17.3          32            17            0 \r\n 1988          155           23.6          31            17            0 \r\n 1988          156           27.3          28            16.5          5 \r\n 1988          157           31            27.5          14.5          0 \r\n 1988          158           31.7          29.5          13            0 \r\n 1988          159           26.6          31            13            0 \r\n 1988          160           27.6          32.5          14            0 \r\n 1988          161           32.1          32.5          16.5          0 \r\n 1988          162           33            28.5          7.5           0 \r\n 1988          163           30            26            7             0 \r\n 1988          164           26.7          29            11            0 \r\n 1988          165           23.8          31.5          15.5          0 \r\n 1988          166           25.5          33.5          17.5          0 \r\n 1988          167           26.9          34            18.5          1 \r\n 1988          168           27.7          30.5          14            0 \r\n 1988          169           10.3          29            11            0 \r\n 1988          170           27.1          27            14            15 \r\n 1988          171           25.3          29.5          15.5          20 \r\n 1988          172           29.7          33.5          20.5          0 \r\n 1988          173           26.6          36            21            0 \r\n 1988          174           28.5          37            22            0 \r\n 1988          175           17.4          36            22.5          2 \r\n 1988          176           27            31.5          16            0 \r\n 1988          177           29.4          33.5          19            15 \r\n 1988          178           32.3          33.5          21            0 \r\n 1988          179           30.4          28.5          15            0 \r\n 1988          180           28.1          27.5          13.5          0 \r\n 1988          181           4.7           33.5          14.5          0 \r\n 1988          182           22.7          31.5          15            16 \r\n 1988          183           25.9          22            13            7 \r\n 1988          184           26.6          24.5          10            0 \r\n 1988          185           28.3          26            12            0 \r\n 1988          186           29.4          28.5          13.5          0 \r\n 1988          187           25.4          31            15            0 \r\n 1988          188           25.2          34            18.5          0 \r\n 1988          189           23.7          34.5          19.5          0 \r\n 1988          190           17.2          34.5          21            0 \r\n 1988          191           11.7          32.5          20.5          0 \r\n 1988          192           24.4          29            19            0 \r\n 1988          193           13.3          27.5          18.5          17 \r\n 1988          194           28.6          26            15            0 \r\n 1988          195           27.7          27.5          15.5          1 \r\n 1988          196           26.6          32            19.5          7 \r\n 1988          197           24.9          34            20            0 \r\n 1988          198           25.4          34.5          23.5          0 \r\n 1988          199           17.3          32.5          21            13 \r\n 1988          200           24.5          30.5          17.5          0 \r\n 1988          201           8.7           29.5          18            6 \r\n 1988          202           24.7          27.5          15.5          0 \r\n 1988          203           26.4          25.5          13.5          1 \r\n 1988          204           24.9          27.5          11            0 \r\n 1988          205           25            28.5          12.5          0 \r\n 1988          206           19.5          30            14            0 \r\n 1988          207           27.9          30.5          16.5          0 \r\n 1988          208           27.1          29            13.5          0 \r\n 1988          209           27.2          29.5          12            0 \r\n 1988          210           26.8          32            14.5          0 \r\n 1988          211           21.9          33            17            0 \r\n 1988          212           26            32.5          18.5          0 \r\n 1988          213           25.7          34            20            0 \r\n 1988          214           24.4          37            20.5          0 \r\n 1988          215           23.2          37            21.5          0 \r\n 1988          216           17.8          36.5          23            0 \r\n 1988          217           10.5          36            21            0 \r\n 1988          218           23.6          31.5          21            4 \r\n 1988          219           27.3          28            15            0 \r\n 1988          220           23.2          32            13.5          0 \r\n 1988          221           7.3           35.5          17            0 \r\n 1988          222           22.3          33            21            30 \r\n 1988          223           22.6          29            17.5          2 \r\n 1988          224           22.2          31            15.5          0 \r\n 1988          225           20.1          33.5          20            0 \r\n 1988          226           13.3          33.5          21.5          0 \r\n 1988          227           21.8          32.5          22            0 \r\n 1988          228           22.4          33.5          19.5          0 \r\n 1988          229           21.6          37.5          20.5          0 \r\n 1988          230           19            38.5          23            0 \r\n 1988          231           7.9           38.5          23            0 \r\n 1988          232           5.3           34            20            0 \r\n 1988          233           18.1          25.5          19.5          0 \r\n 1988          234           15.7          28            14.5          0 \r\n 1988          235           4.6           31            16.5          0 \r\n 1988          236           21.6          28.5          17.5          46 \r\n 1988          237           21.8          26.5          13.5          13 \r\n 1988          238           21            28            13            0 \r\n 1988          239           18.6          26.5          13.5          0 \r\n 1988          240           21.2          25.5          9             0 \r\n 1988          241           21.8          23.5          11.5          9 \r\n 1988          242           15.6          21.5          6.5           0 \r\n 1988          243           22            23            6.5           0 \r\n 1988          244           17.6          26            9.5           0 \r\n 1988          245           10.1          28.5          12.5          0 \r\n 1988          246           20.7          28            15            0 \r\n 1988          247           10.4          30.5          13.5          0 \r\n 1988          248           15.1          26            12            0 \r\n 1988          249           19.1          23            13            7 \r\n 1988          250           23.2          22            7             0 \r\n 1988          251           21.2          22.5          5             0 \r\n 1988          252           17.4          25            8.5           0 \r\n 1988          253           21.5          26.5          12            0 \r\n 1988          254           19.1          27.5          5             0 \r\n 1988          255           19.5          29            8.5           0 \r\n 1988          256           12.6          30            14            0 \r\n 1988          257           18.5          26.5          14            0 \r\n 1988          258           19            22.5          9             0 \r\n 1988          259           2.4           26            7.5           0 \r\n 1988          260           16.1          23.5          12            3 \r\n 1988          261           20.2          24.5          15            17 \r\n 1988          262           15.2          31            16            0 \r\n 1988          263           3.2           31.5          19            0 \r\n 1988          264           18            25.5          11.5          13 \r\n 1988          265           13.7          18.5          8.5           9 \r\n 1988          266           8.5           19            7             0 \r\n 1988          267           17.3          22            11.5          11 \r\n 1988          268           17.2          21            5             0 \r\n 1988          269           18.7          22            5             0 \r\n 1988          270           16.6          25            7             0 \r\n 1988          271           15.5          28            12.5          0 \r\n 1988          272           1.1           25.5          12            0 \r\n 1988          273           4.2           19.5          11.5          0 \r\n 1988          274           10            19.5          12.5          28 \r\n 1988          275           12.5          21.5          13            0 \r\n 1988          276           18.3          21.5          11            0 \r\n 1988          277           10.7          18.5          5             0 \r\n 1988          278           17.8          17            1.5           0 \r\n 1988          279           17.3          13           -1             0 \r\n 1988          280           17.2          12.5         -3             0 \r\n 1988          281           16.6          14           -0.5           0 \r\n 1988          282           11.1          16           -0.5           0 \r\n 1988          283           15.7          16            0.5           0 \r\n 1988          284           16.5          19.5          2.5           0 \r\n 1988          285           16.6          19.5          6             0 \r\n 1988          286           15.9          15.5          1             0 \r\n 1988          287           15.6          13           -2.5           0 \r\n 1988          288           15.2          17           -1             0 \r\n 1988          289           12.1          21.5          4             0 \r\n 1988          290           13.6          24.5          8.5           0 \r\n 1988          291           2.7           22            8.5           2 \r\n 1988          292           10.8          16            7.5           4 \r\n 1988          293           8.4           14.5          0.5           3 \r\n 1988          294           1.2           12           -1.5           0 \r\n 1988          295           11.9          9.5           2.5           0 \r\n 1988          296           12.2          10.5          3             3 \r\n 1988          297           12.2          12           -3             0 \r\n 1988          298           12.9          11            0             0 \r\n 1988          299           13.7          9.5          -4             0 \r\n 1988          300           11.2          9            -4.5           0 \r\n 1988          301           4.8           11           -6.5           0 \r\n 1988          302           13            12.5         -0.5           0 \r\n 1988          303           7.5           7.5          -4.5           0 \r\n 1988          304           12.2          4            -5             0 \r\n 1988          305           10.9          6.5          -9             0 \r\n 1988          306           12.4          15           -3             0 \r\n 1988          307           10.3          13.5         -2             0 \r\n 1988          308           10.5          11.5         -2.5           0 \r\n 1988          309           4.5           15.5          0             0 \r\n 1988          310           3.7           13.5          4             2 \r\n 1988          311           11.5          7            -0.5           3 \r\n 1988          312           6.1           5            -3             0 \r\n 1988          313           7.8           7            -4             0 \r\n 1988          314           4.7           10.5         -3.5           0 \r\n 1988          315           5.7           10.5          1             0 \r\n 1988          316           8             7            -4             0 \r\n 1988          317           2.7           4            -8.5           0 \r\n 1988          318           10            4            -2             7 \r\n 1988          319           7.8           10            0             2 \r\n 1988          320           2.9           11           -0.5           0 \r\n 1988          321           4.8           15.5          2             0 \r\n 1988          322           7.6           8.5          -3.5           26 \r\n 1988          323           8.3           1.5          -7             0 \r\n 1988          324           5             7.5          -2.5           0 \r\n 1988          325           6.3           6            -3             0 \r\n 1988          326           7.8          -1.5          -10.5          0 \r\n 1988          327           8            -1            -10.5          0 \r\n 1988          328           8.9           5            -5.5           0 \r\n 1988          329           9.8           10.5         -1.5           0 \r\n 1988          330           5.3           13.5          1             0 \r\n 1988          331           3             10            1             0 \r\n 1988          332           4.1           4.5           0.5           5 \r\n 1988          333           6.7           1.5          -6.5           1 \r\n 1988          334           2.4          -1            -13            2 \r\n 1988          335           3.3           0            -6.5           9 \r\n 1988          336           3.1          -0.5          -10            0 \r\n 1988          337           5.1          -4            -18.5          0 \r\n 1988          338           5.1           1.5          -9.5           0 \r\n 1988          339           4.5           4            -7             0 \r\n 1988          340           6.2           1            -12.5          0 \r\n 1988          341           6.5           2.5          -7.5           0 \r\n 1988          342           5.4           4            -5.5           0 \r\n 1988          343           5.7           2            -8             0 \r\n 1988          344           4.8          -4            -15.5          0 \r\n 1988          345           5            -5            -17            0 \r\n 1988          346           4.9          -7.5          -18            0 \r\n 1988          347           3.4          -12           -22            0 \r\n 1988          348           3.2          -2.5          -15.5          0 \r\n 1988          349           6             3            -5.5           0 \r\n 1988          350           7             4            -7             0 \r\n 1988          351           4.3          -4.5          -18.5          0 \r\n 1988          352           5.3          -5            -20.5          0 \r\n 1988          353           5.8          -3.5          -11            0 \r\n 1988          354           6.3           1            -10.5          0 \r\n 1988          355           5.8           5            -5             11.94 \r\n 1988          356           6.6           5            -4             0 \r\n 1988          357           5.5           0            -8.5           0 \r\n 1988          358           6.7           3.5          -4.5           0.25 \r\n 1988          359           5.8           3.5          -2             0.25 \r\n 1988          360           5.4           1.5          -7.5           0 \r\n 1988          361           2.4          -5.5          -12.5          0.51 \r\n 1988          362           6.4          -2            -9.5           6.35 \r\n 1988          363           6.2           0            -12.5          0 \r\n 1988          364           7            -10.5         -15.5          0 \r\n 1988          365           7.8          -5            -17            0 \r\n 1988          366           8.1          -0.5          -11.5          0 \r\n 1989          1             4.3          -0.5          -9.5           0 \r\n 1989          2             7.4          -4.5          -15.5          0 \r\n 1989          3             7.3          -1.5          -11.5          0 \r\n 1989          4             8.8           2.5          -12            0 \r\n 1989          5             1.8           2            -6             2.29 \r\n 1989          6             4             0            -5             6.6 \r\n 1989          7             2.9           0            -10            1.52 \r\n 1989          8             5.7          -7            -18            0.76 \r\n 1989          9             7            -6            -19            0 \r\n 1989          10            6.6          -4            -17.5          0 \r\n 1989          11            2.2          -2.5          -13            0 \r\n 1989          12            7.8          -1            -12            0.25 \r\n 1989          13            9             0.5          -12.5          0 \r\n 1989          14            8.3           2.5          -8             0 \r\n 1989          15            9.5           3            -5             0 \r\n 1989          16            8.1           3.5          -8.5           0 \r\n 1989          17            4.9           4            -5.5           0 \r\n 1989          18            7.2           3.5          -3.5           0 \r\n 1989          19            9.3           5            -2             0 \r\n 1989          20            10.4          3            -7.5           0 \r\n 1989          21            10.2          3            -6.5           0 \r\n 1989          22            9.7           7.5          -3.5           0 \r\n 1989          23            8.1           6            -3             0 \r\n 1989          24            4.1           2.5          -1.5           0 \r\n 1989          25            2.6           0.5          -2             0.25 \r\n 1989          26            5            -1.5          -13            2.29 \r\n 1989          27            7.7           3            -8.5           0 \r\n 1989          28            4.5           4.5          -1.5           0 \r\n 1989          29            4.7           1.5          -1.5           1.78 \r\n 1989          30            11            5            -2.5           0 \r\n 1989          31            9.7           10           -2             0 \r\n 1989          32            9             3.5          -15            0 \r\n 1989          33            3.7          -13.5         -21.5          1.02 \r\n 1989          34            7.6          -20.5         -29.5          0.51 \r\n 1989          35            5.4          -20.5         -26.5          0.25 \r\n 1989          36            3.9          -17.5         -24            0.51 \r\n 1989          37            4.1          -13.5         -23            0.76 \r\n 1989          38            4.9          -6.5          -18.5          0 \r\n 1989          39            8.7          -6.5          -19            0 \r\n 1989          40            9.5          -6            -21.5          0 \r\n 1989          41            12            0            -17.5          0 \r\n 1989          42            14.2          1            -12.5          0 \r\n 1989          43            12.6          1            -11.5          0 \r\n 1989          44            10.5          1            -7             1.27 \r\n 1989          45            5.6          -1            -13.5          0 \r\n 1989          46            12.3         -3            -12            0 \r\n 1989          47            11.1         -3            -16            0 \r\n 1989          48            8.9          -2.5          -12            0 \r\n 1989          49            4.6          -3.5          -12            0.25 \r\n 1989          50            7.1          -6            -21            0.76 \r\n 1989          51            4.7          -6            -14            1.02 \r\n 1989          52            6.1          -4            -11            0.51 \r\n 1989          53            10           -7            -17.5          0 \r\n 1989          54            10.3         -9            -22.5          0 \r\n 1989          55            12.9          0            -15.5          0 \r\n 1989          56            10.3          4.5          -8             0 \r\n 1989          57            16.4          2            -11.5          0 \r\n 1989          58            10.7         -3            -15.5          0 \r\n 1989          59            15.2         -2.5          -14            0.25 \r\n 1989          60            14.4         -7            -15.5          0 \r\n 1989          61            4.8          -11           -16.5          2.29 \r\n 1989          62            2.1          -6.5          -14.5          6.1 \r\n 1989          63            9.4          -6            -12.5          8.64 \r\n 1989          64            13           -8            -17            0 \r\n 1989          65            10.4         -4.5          -19            0 \r\n 1989          66            12.4         -2.5          -13            0 \r\n 1989          67            13.4          1            -8             0 \r\n 1989          68            12.4          5            -3             0 \r\n 1989          69            17            9.5           0             0 \r\n 1989          70            10.8          8.5           0             0 \r\n 1989          71            4.8           4             0.5           0 \r\n 1989          72            7.5           4             0             0.25 \r\n 1989          73            1.7           4            -3             1.52 \r\n 1989          74            15.7          1.5          -11.5          3.3 \r\n 1989          75            14.3          0            -9             0 \r\n 1989          76            3.6          -5.5          -11.5          0.25 \r\n 1989          77            12.3         -7            -15            1.27 \r\n 1989          78            10.6         -1            -10.5          0 \r\n 1989          79            13.5          0.5          -7.5           0.25 \r\n 1989          80            17.4          0            -12.5          0 \r\n 1989          81            16.1          5.5          -7             0 \r\n 1989          82            16            12           -1             0 \r\n 1989          83            12.8          15.5          1.5           0 \r\n 1989          84            11.1          13.5          0             0 \r\n 1989          85            15.3          19            2.5           0 \r\n 1989          86            18.7          23.5          8             0 \r\n 1989          87            7.9           20            5.5           0.51 \r\n 1989          88            7.5           10.5          3             0.25 \r\n 1989          89            7.4           8.5           0             0.25 \r\n 1989          90            18.7          5.5          -3.5           0 \r\n 1989          91            8.2           10.5         -2             0 \r\n 1989          92            19.8          14.5         -1             0 \r\n 1989          93            16.2          15            3.5           3 \r\n 1989          94            9.6           12            0.5           0 \r\n 1989          95            19.9          10.5         -2             0 \r\n 1989          96            20            11.5         -2             0 \r\n 1989          97            8.4           9            -3             0 \r\n 1989          98            12.8          4            -4.5           10 \r\n 1989          99            18.8          0.5          -8.5           0 \r\n 1989          100           22.9          3.5          -7.5           0 \r\n 1989          101           18.8          6.5          -4.5           0 \r\n 1989          102           23.1          8            -4.5           0 \r\n 1989          103           21.4          15           -2.5           0 \r\n 1989          104           18.2          18            1.5           0 \r\n 1989          105           25.6          16.5         -2.5           0 \r\n 1989          106           18.1          21            5             0 \r\n 1989          107           25.1          18.5          2             0 \r\n 1989          108           20.2          12            1.5           0 \r\n 1989          109           26            18           -2             0 \r\n 1989          110           18.2          23.5          4             0 \r\n 1989          111           25.9          25.5          5.5           0 \r\n 1989          112           11.1          21.5          7.5           15 \r\n 1989          113           17.2          19            8.5           18 \r\n 1989          114           11.6          22.5          10            0 \r\n 1989          115           24.1          25.5          13            0 \r\n 1989          116           11.6          25            12            0 \r\n 1989          117           18.8          23.5          12            7 \r\n 1989          118           5.1           19.5          7.5           13 \r\n 1989          119           8.6           10.5          3.5           1 \r\n 1989          120           17.9          9.5           0             0 \r\n 1989          121           14            11            2.5           0 \r\n 1989          122           19.6          12.5         -0.5           0 \r\n 1989          123           25.4          16.5          1             0 \r\n 1989          124           10.2          18            6.5           3 \r\n 1989          125           23.3          14            1             6 \r\n 1989          126           18            10.5         -2.5           0 \r\n 1989          127           26.5          17           -1.5           0 \r\n 1989          128           11.4          20.5          7             0 \r\n 1989          129           27.2          19.5          4.5           1 \r\n 1989          130           29            22            4.5           0 \r\n 1989          131           29.2          23            5.5           0 \r\n 1989          132           30.2          24.5          5             0 \r\n 1989          133           27            24.5          5             0 \r\n 1989          134           22.7          23.5          9             0 \r\n 1989          135           20.6          25.5          10.5          0 \r\n 1989          136           24.2          28            10            0 \r\n 1989          137           22.8          28.5          14            0 \r\n 1989          138           4.9           24.5          14.5          3 \r\n 1989          139           15.6          23.5          14            18 \r\n 1989          140           31            25.5          7.5           0 \r\n 1989          141           25            26.5          9             0 \r\n 1989          142           23.7          26.5          10.5          0 \r\n 1989          143           20.4          28            13            0 \r\n 1989          144           11.2          28            15            20 \r\n 1989          145           20.8          25.5          9.5           0 \r\n 1989          146           25.2          21.5          9             0 \r\n 1989          147           30.8          20.5          4             0 \r\n 1989          148           16            21            9.5           0 \r\n 1989          149           19.5          26.5          13            6 \r\n 1989          150           17.6          30            13            0 \r\n 1989          151           15.3          24.5          12.5          3 \r\n 1989          152           22.1          23            12            0 \r\n 1989          153           24.7          28            12            0 \r\n 1989          154           25.9          28            14            7 \r\n 1989          155           28.8          25.5          8.5           0 \r\n 1989          156           22.4          27.5          10.5          0 \r\n 1989          157           21.9          30            16.5          0 \r\n 1989          158           24.3          30            16.5          3 \r\n 1989          159           13.5          24.5          11.5          9 \r\n 1989          160           19.6          18.5          8.5           0 \r\n 1989          161           31.3          22            7             0 \r\n 1989          162           16.2          24            14            0 \r\n 1989          163           20.1          25.5          16            3 \r\n 1989          164           18.9          23.5          9             0 \r\n 1989          165           8.4           19            8.5           0 \r\n 1989          166           30.4          19            5             0 \r\n 1989          167           28.4          24            7             0 \r\n 1989          168           24.6          27.5          11            0 \r\n 1989          169           21.7          29            15.5          0 \r\n 1989          170           31.8          30.5          13            0 \r\n 1989          171           29.4          32.5          18            0 \r\n 1989          172           16.4          33.5          20.5          0 \r\n 1989          173           10.8          29.5          16            7 \r\n 1989          174           26.1          25            15.5          5 \r\n 1989          175           12.6          26.5          13.5          0 \r\n 1989          176           19.9          27            17            17 \r\n 1989          177           21.1          27            17            15 \r\n 1989          178           29.3          27            16.5          15 \r\n 1989          179           29.6          29            15.5          0 \r\n 1989          180           28.1          29.5          16.5          0 \r\n 1989          181           25.1          28.5          15.5          0 \r\n 1989          182           25.3          29.5          16            0 \r\n 1989          183           26            30.5          18            0 \r\n 1989          184           26            32            17            0 \r\n 1989          185           28            33            17.5          0 \r\n 1989          186           31.4          33.5          17.5          0 \r\n 1989          187           29.6          34.5          18.5          0 \r\n 1989          188           27.6          34            19.5          0 \r\n 1989          189           27.1          34            19            0 \r\n 1989          190           28.1          35            19.5          0 \r\n 1989          191           27.5          36            21            0 \r\n 1989          192           13.1          32.5          19.5          24 \r\n 1989          193           18.7          28            20            13 \r\n 1989          194           25.1          28            17.5          0 \r\n 1989          195           17.3          26            14            0 \r\n 1989          196           21.6          25            16            1 \r\n 1989          197           26.3          26.5          14            0 \r\n 1989          198           21.7          27.5          13            0 \r\n 1989          199           15.8          25.5          16            22 \r\n 1989          200           20.1          24            15.5          11 \r\n 1989          201           25.2          26            13            0 \r\n 1989          202           26            27            15            0 \r\n 1989          203           18.5          26.5          14.5          0 \r\n 1989          204           21            27            16.5          0 \r\n 1989          205           21.6          28.5          17            0 \r\n 1989          206           21.1          29.5          19            0 \r\n 1989          207           23.7          30.5          19.5          0 \r\n 1989          208           27.3          32            20            0 \r\n 1989          209           24            31.5          17.5          0 \r\n 1989          210           16.3          29.5          19            0 \r\n 1989          211           14.5          28.5          19            6 \r\n 1989          212           22.6          28.5          17.5          0 \r\n 1989          213           24.1          29            16.5          0 \r\n 1989          214           23.8          30            16.5          0 \r\n 1989          215           16.6          30.5          21            0 \r\n 1989          216           21            32.5          21.5          0 \r\n 1989          217           21.7          32            17.5          0 \r\n 1989          218           18.2          25.5          12.5          2 \r\n 1989          219           27.4          23            8             0 \r\n 1989          220           25.7          25.5          9.5           0 \r\n 1989          221           26.3          27.5          10.5          0 \r\n 1989          222           25.5          29            12.5          0 \r\n 1989          223           19.9          29            15.5          0 \r\n 1989          224           17.5          29            14.5          0 \r\n 1989          225           14.9          27            15.5          4 \r\n 1989          226           17.5          26            16.5          12 \r\n 1989          227           20.2          26            12.5          0 \r\n 1989          228           23            25.5          13.5          0 \r\n 1989          229           25            26.5          12            0 \r\n 1989          230           23.8          27            12.5          0 \r\n 1989          231           8.3           25.5          15            0 \r\n 1989          232           21.9          26.5          14            13 \r\n 1989          233           19.4          29            16            0 \r\n 1989          234           24.4          31            18            0 \r\n 1989          235           17.5          30            18.5          15 \r\n 1989          236           17.2          26.5          16.5          0 \r\n 1989          237           10.4          25            15.5          0 \r\n 1989          238           8.7           25.5          17.5          8 \r\n 1989          239           14.7          26.5          15.5          11 \r\n 1989          240           13.7          27            18            11 \r\n 1989          241           22.8          27            16.5          0 \r\n 1989          242           19.6          27.5          15.5          0 \r\n 1989          243           14.8          30.5          19            0 \r\n 1989          244           16.4          28            17            0 \r\n 1989          245           23.9          24            10            0 \r\n 1989          246           9.2           23.5          13.5          3 \r\n 1989          247           17.9          24.5          15            33 \r\n 1989          248           18.9          26.5          10.5          0 \r\n 1989          249           9.8           27            15.5          0 \r\n 1989          250           6.9           25.5          19            10 \r\n 1989          251           8.9           23.5          16.5          16 \r\n 1989          252           9.4           20            11.5          5 \r\n 1989          253           18.9          18.5          6             0 \r\n 1989          254           18.2          17.5          7.5           0 \r\n 1989          255           9             14            6             0 \r\n 1989          256           17.7          15.5          5             0 \r\n 1989          257           21.9          19.5          3.5           0 \r\n 1989          258           22.1          21            4.5           0 \r\n 1989          259           21.4          23            5.5           0 \r\n 1989          260           21            26            9             0 \r\n 1989          261           20.4          28            14            0 \r\n 1989          262           16            28            13.5          0 \r\n 1989          263           16.5          27.5          14.5          0 \r\n 1989          264           16.6          27            13            0 \r\n 1989          265           16.2          23.5          9             2 \r\n 1989          266           19.7          16.5         -1.5           0 \r\n 1989          267           18.7          15.5         -0.5           0 \r\n 1989          268           19            20.5          3             0 \r\n 1989          269           18.6          20            0.5           0 \r\n 1989          270           17.3          20            2.5           0 \r\n 1989          271           15.6          25            5.5           0 \r\n 1989          272           17.2          26.5          7.5           0 \r\n 1989          273           16.7          26.5          7             0 \r\n 1989          274           17.8          27.5          10.5          0 \r\n 1989          275           15.4          21            3.5           0 \r\n 1989          276           16.2          11           -1.5           0 \r\n 1989          277           11.4          12.5         -3.5           0 \r\n 1989          278           8.2           16.5          4.5           10 \r\n 1989          279           15.8          15            2.5           0 \r\n 1989          280           14.8          13           -2.5           0 \r\n 1989          281           16            14           -0.5           0 \r\n 1989          282           13.9          18.5          1.5           0 \r\n 1989          283           15.1          19.5          1.5           0 \r\n 1989          284           15.2          24            6.5           0 \r\n 1989          285           15            25            1.5           0 \r\n 1989          286           13.3          25.5          4.5           0 \r\n 1989          287           12.2          27            7.5           0 \r\n 1989          288           11.1          25.5          10.5          0 \r\n 1989          289           7             18            4.5           0 \r\n 1989          290           10.9          7.5          -1             0 \r\n 1989          291           9.7           6.5          -4             0 \r\n 1989          292           13            6            -5.5           0 \r\n 1989          293           12.2          11.5         -5.5           0 \r\n 1989          294           13.8          17           -2.5           0 \r\n 1989          295           11.6          20.5          1             0 \r\n 1989          296           13.7          24.5          5             0 \r\n 1989          297           13.6          26            7             0 \r\n 1989          298           12            26            11.5          0 \r\n 1989          299           11.2          25.5          13.5          0 \r\n 1989          300           9.1           22            11.5          1 \r\n 1989          301           5.6           18            10            0 \r\n 1989          302           4.9           16            9             6 \r\n 1989          303           3.6           11            1.5           6 \r\n 1989          304           11.9          8            -4             8 \r\n 1989          305           5.3           7            -2             0 \r\n 1989          306           7.1           2            -5             0 \r\n 1989          307           5.1           2.5          -8             0 \r\n 1989          308           8.9           11           -1.5           2 \r\n 1989          309           4.3           12.5          2             0 \r\n 1989          310           6.2           8.5          -1             0 \r\n 1989          311           7.2           9.5          -0.5           2 \r\n 1989          312           5.9           8.5          -1             0 \r\n 1989          313           8.2           8.5          -4.5           0 \r\n 1989          314           10.1          9            -5.5           0 \r\n 1989          315           9.1           10           -0.5           0 \r\n 1989          316           9.6           10           -5             0 \r\n 1989          317           10.7          10.5         -1             0 \r\n 1989          318           8.1           9            -5             0 \r\n 1989          319           5.4           5            -6             0 \r\n 1989          320           8.7          -2            -14            0 \r\n 1989          321           6.5          -3            -14            0 \r\n 1989          322           5.8          -2.5          -17            0 \r\n 1989          323           8.5           11           -10.5          0 \r\n 1989          324           10.3          14           -2             0 \r\n 1989          325           4.4           5            -6.5           0 \r\n 1989          326           4.2          -0.5          -10            2 \r\n 1989          327           6.6          -3.5          -18.5          1 \r\n 1989          328           6.1           3            -14            0 \r\n 1989          329           5.5           5.5          -5.5           0 \r\n 1989          330           6.1           6            -10            0 \r\n 1989          331           2.1           6            -8             0 \r\n 1989          332           4.6          -3            -17            4 \r\n 1989          333           5.9          -3.5          -19            0 \r\n 1989          334           6.6           3            -11.5          0 \r\n 1989          335           7.6           5            -9.5           0 \r\n 1989          336           7.9           3            -11.5          0 \r\n 1989          337           5.6          -3.5          -17            0 \r\n 1989          338           8.1           6.5          -8             0 \r\n 1989          339           6.6           10.5         -1             0 \r\n 1989          340           8.5           5            -8             0 \r\n 1989          341           4.9          -7            -11            0 \r\n 1989          342           6.5          -5.5          -11.5          0 \r\n 1989          343           7.6           2.5          -8.5           0 \r\n 1989          344           4            -0.5          -10.5          0.25 \r\n 1989          345           5.4          -9            -18.5          0.25 \r\n 1989          346           6.1          -11           -24.5          0 \r\n 1989          347           5.2          -10.5         -21            1.52 \r\n 1989          348           5.7          -16.5         -26            0 \r\n 1989          349           5.5          -17.5         -26.5          0 \r\n 1989          350           4.1          -11.5         -21            0 \r\n 1989          351           4.3          -11           -19            0 \r\n 1989          352           4.4          -13.5         -23            0 \r\n 1989          353           4.1          -15.5         -25.5          0.25 \r\n 1989          354           3.5          -18           -25.5          0.25 \r\n 1989          355           4.5          -22           -30.5          0.25 \r\n 1989          356           4.6          -22.5         -30.5          0 \r\n 1989          357           4.2          -17.5         -30.5          0 \r\n 1989          358           3.6          -5.5          -21            1.02 \r\n 1989          359           5.4           2.5          -12            0 \r\n 1989          360           4             0            -20            0 \r\n 1989          361           5.4           2            -10.5          0 \r\n 1989          362           6.8           6            -3             0 \r\n 1989          363           3.7           4            -5             0 \r\n 1989          364           5            -3.5          -6             0 \r\n 1989          365           5.9          -2            -7.5           0 \r\n 1990          1             6.6          -1.5          -14.5          0 \r\n 1990          2             8.2           4            -9.5           0 \r\n 1990          3             6.8           6.5          -5             0 \r\n 1990          4             8.8           3.5          -8             0 \r\n 1990          5             6.8           3            -9.5           0 \r\n 1990          6             6.6           3.5          -11            0 \r\n 1990          7             8.8           7            -7.5           0 \r\n 1990          8             5.2           9.5          -3.5           0 \r\n 1990          9             3.5           5.5          -3             1.02 \r\n 1990          10            5.8           5.5          -9             0 \r\n 1990          11            6.3           7            -4             0 \r\n 1990          12            8.1          -1            -10.5          0 \r\n 1990          13            7.5          -0.5          -14.5          0 \r\n 1990          14            8.2           6.5          -8             0 \r\n 1990          15            8.7           11.5         -6.5           0 \r\n 1990          16            4.4           11.5         -4             0 \r\n 1990          17            4.3           5.5          -2             0.51 \r\n 1990          18            9.5           2            -7             0 \r\n 1990          19            7.7           1.5          -11.5          0 \r\n 1990          20            2.3           0            -7.5           2.29 \r\n 1990          21            4.3          -1.5          -12            6.35 \r\n 1990          22            5.9           1            -7.5           0 \r\n 1990          23            5.3           3            -4.5           0 \r\n 1990          24            5.4           2            -7             0.51 \r\n 1990          25            7.5          -1            -9.5           0.51 \r\n 1990          26            6.3           1.5          -14.5          0 \r\n 1990          27            6             2.5          -8.5           0.25 \r\n 1990          28            9.4           2.5          -9             0.25 \r\n 1990          29            9.1           6            -9             0 \r\n 1990          30            9.7           4.5          -12            0 \r\n 1990          31            6.5           1            -13.5          0 \r\n 1990          32            7.8           3.5          -13            0 \r\n 1990          33            5.5          -6.5          -12            0.25 \r\n 1990          34            6.1          -3.5          -10.5          3.56 \r\n 1990          35            8.2           1.5          -15.5          0 \r\n 1990          36            10.8          6.5          -6             0 \r\n 1990          37            9.4           5.5          -6             0 \r\n 1990          38            11.1          6.5          -7             0 \r\n 1990          39            7.5           7            -4             0 \r\n 1990          40            12.1          4            -5.5           0 \r\n 1990          41            10.1          3.5          -6.5           0 \r\n 1990          42            12.3          6.5          -3.5           0 \r\n 1990          43            8.2           13.5         -1.5           0 \r\n 1990          44            7.9           10.5         -8.5           0 \r\n 1990          45            5.4          -6            -12.5          0 \r\n 1990          46            3.3          -5            -9             1.02 \r\n 1990          47            5.7          -3.5          -12            5.84 \r\n 1990          48            6.6          -6            -23.5          0 \r\n 1990          49            9.8          -3            -13.5          0 \r\n 1990          50            13.2         -3.5          -14.5          0 \r\n 1990          51            14.5         -1            -14.5          0 \r\n 1990          52            8.9           4            -8             0 \r\n 1990          53            8.1           5            -3             0 \r\n 1990          54            8.4           5            -6.5           0 \r\n 1990          55            15.6          1.5          -15.5          0.25 \r\n 1990          56            11.8         -4            -17            0 \r\n 1990          57            15.7          3            -11            0 \r\n 1990          58            16.8          4.5          -8             0 \r\n 1990          59            17            4            -12            0 \r\n 1990          60            16.9          10           -8.5           0 \r\n 1990          61            15.6          12           -4.5           0 \r\n 1990          62            15.3          6.5          -9.5           0 \r\n 1990          63            16.8          10           -7             0 \r\n 1990          64            7.7           7.5          -5             0 \r\n 1990          65            5.4           1            -4             0 \r\n 1990          66            2.7           1.5          -3.5           2.79 \r\n 1990          67            3.8           1.5          -1.5           18.29 \r\n 1990          68            13.8          10            0             3.05 \r\n 1990          69            5.9           11            1             0.25 \r\n 1990          70            6.9           16            5             17.02 \r\n 1990          71            18.8          20.5          10            1.02 \r\n 1990          72            4.8           19.5          6.5           7.87 \r\n 1990          73            4.2           16.5          6.5           25.15 \r\n 1990          74            5.6           9             0             15.75 \r\n 1990          75            8.4           4             0             1.52 \r\n 1990          76            10.8          4.5           0             0.76 \r\n 1990          77            13.5          2            -4.5           0.25 \r\n 1990          78            19.5          1            -10.5          0 \r\n 1990          79            20.1          10           -7             0 \r\n 1990          80            20.2          16            0             0 \r\n 1990          81            11.9          13           -2             5.59 \r\n 1990          82            16.8          0            -10            0 \r\n 1990          83            19.6          0.5          -8             0 \r\n 1990          84            21.9          6            -7             0 \r\n 1990          85            23.1          7            -7.5           0 \r\n 1990          86            22            10.5         -5.5           0 \r\n 1990          87            9.2           11.5         -2             0 \r\n 1990          88            9.7           10.5          1             0.25 \r\n 1990          89            18.6          11           -3             0 \r\n 1990          90            6.8           9.5           0.5           0 \r\n 1990          91            9.9           10            2.5           0 \r\n 1990          92            21.3          10           -2.5           2 \r\n 1990          93            22.7          12           -6.5           0 \r\n 1990          94            22.1          15            0             0 \r\n 1990          95            21.2          11           -4             0 \r\n 1990          96            24.6          4.5          -8.5           0 \r\n 1990          97            24.5          9            -10.5          0 \r\n 1990          98            19.3          16           -3.5           0 \r\n 1990          99            6.2           16            4             0 \r\n 1990          100           17.1          11            0             20 \r\n 1990          101           15.2          7            -5.5           0 \r\n 1990          102           24.5          8.5          -7.5           0 \r\n 1990          103           8             8.5          -3.5           0 \r\n 1990          104           23.6          13           -1             5 \r\n 1990          105           26.3          15.5         -1             2 \r\n 1990          106           8.4           10           -0.5           0 \r\n 1990          107           26.7          8            -5.5           3 \r\n 1990          108           18.8          12.5         -3.5           0 \r\n 1990          109           7.9           16            3.5           0 \r\n 1990          110           19.9          19.5          8.5           0 \r\n 1990          111           23.5          24            8             0 \r\n 1990          112           24.5          26            8.5           0 \r\n 1990          113           16.7          28            13            0 \r\n 1990          114           16.8          28.5          16            0 \r\n 1990          115           22            28            15.5          0 \r\n 1990          116           10.9          26.5          16.5          0 \r\n 1990          117           6.3           22.5          11.5          2 \r\n 1990          118           13.6          14.5          1.5           10 \r\n 1990          119           6.4           11            2             0 \r\n 1990          120           24.8          13.5         -1             1 \r\n 1990          121           26.4          15           -1.5           0 \r\n 1990          122           24.3          18            0             0 \r\n 1990          123           19.8          19            3             0 \r\n 1990          124           18            18.5          6.5           0 \r\n 1990          125           19.4          19.5          6.5           0 \r\n 1990          126           28.7          22.5          3.5           0 \r\n 1990          127           28.7          28            9             0 \r\n 1990          128           21.2          27.5          12.5          0 \r\n 1990          129           7             19.5          7             23 \r\n 1990          130           26.9          12.5          2.5           12 \r\n 1990          131           16.9          16.5          2             0 \r\n 1990          132           7.7           15.5          7             3 \r\n 1990          133           21.2          17.5          3.5           0 \r\n 1990          134           15.9          20            9             0 \r\n 1990          135           7.1           19            9.5           0 \r\n 1990          136           15.4          17.5          11            12 \r\n 1990          137           25.6          19            7             0 \r\n 1990          138           29.2          21.5          5             0 \r\n 1990          139           4.5           20            8.5           43 \r\n 1990          140           8.8           13            6             7 \r\n 1990          141           10.9          13.5          6.5           0 \r\n 1990          142           27.1          18.5          5             0 \r\n 1990          143           18.3          21            10            4 \r\n 1990          144           11            20            10            0 \r\n 1990          145           5             17            12.5          7 \r\n 1990          146           15.3          19            13            3 \r\n 1990          147           19.3          21            10.5          0 \r\n 1990          148           27.1          23            10            0 \r\n 1990          149           26.8          24.5          10.5          0 \r\n 1990          150           27.8          23.5          11            0 \r\n 1990          151           23            23.5          8.5           0 \r\n 1990          152           19.3          26            14.5          0 \r\n 1990          153           7.9           25.5          14.5          0 \r\n 1990          154           11.5          18            7             20 \r\n 1990          155           26.8          15            4             2 \r\n 1990          156           20.8          23            10            3 \r\n 1990          157           18.8          24            10.5          7 \r\n 1990          158           12.7          22            9.5           0 \r\n 1990          159           21.3          25            14            5 \r\n 1990          160           30.8          28            12.5          2 \r\n 1990          161           27.6          29.5          14            0 \r\n 1990          162           20.1          30.5          18            0 \r\n 1990          163           17.3          30.5          21            0 \r\n 1990          164           23            30            18.5          20 \r\n 1990          165           26.7          28.5          17.5          0 \r\n 1990          166           20.1          27.5          15.5          13 \r\n 1990          167           10.8          25.5          18            14 \r\n 1990          168           30            26            17.5          25 \r\n 1990          169           31            29.5          16.5          0 \r\n 1990          170           16            28.5          17            16 \r\n 1990          171           28.6          25.5          16            13 \r\n 1990          172           12.6          25            15            0 \r\n 1990          173           18.8          24.5          14.5          20 \r\n 1990          174           28.1          24.5          13            6 \r\n 1990          175           29.4          26.5          14            0 \r\n 1990          176           25.4          29            18            0 \r\n 1990          177           26.4          31.5          19            0 \r\n 1990          178           24.7          34            19.5          0 \r\n 1990          179           16.2          31.5          19.5          4 \r\n 1990          180           25.1          31            21.5          16 \r\n 1990          181           30.1          32.5          22            0 \r\n 1990          182           25.9          32            18            0 \r\n 1990          183           26.4          31            19.5          0 \r\n 1990          184           29.3          35            22.5          0 \r\n 1990          185           25.9          35            21.5          0 \r\n 1990          186           25.9          29.5          16            6 \r\n 1990          187           25.8          27            15            0 \r\n 1990          188           18.9          29            18            2 \r\n 1990          189           22.3          30.5          20.5          0 \r\n 1990          190           16.4          29            17            0 \r\n 1990          191           9.4           26.5          17.5          0 \r\n 1990          192           16.7          25.5          13.5          4 \r\n 1990          193           15            23.5          13            14 \r\n 1990          194           29.9          22            10.5          2 \r\n 1990          195           21.9          23.5          11            0 \r\n 1990          196           27.6          25.5          13            4 \r\n 1990          197           28.2          28.5          14.5          0 \r\n 1990          198           24.1          30.5          18.5          0 \r\n 1990          199           18.1          29.5          18            0 \r\n 1990          200           9             27            18            35 \r\n 1990          201           24.6          24.5          17.5          28 \r\n 1990          202           17.3          25            16            0 \r\n 1990          203           24.8          24            14            0 \r\n 1990          204           25.8          24.5          12            0 \r\n 1990          205           16            25.5          13            0 \r\n 1990          206           14.7          25.5          17            5 \r\n 1990          207           5.6           24.5          18            16 \r\n 1990          208           17.6          26.5          19            26 \r\n 1990          209           15.4          28.5          20            9 \r\n 1990          210           24            28            19            17 \r\n 1990          211           25.2          26.5          15.5          0 \r\n 1990          212           26.4          25            11.5          0 \r\n 1990          213           24.5          25            12.5          0 \r\n 1990          214           16.1          26            15.5          0 \r\n 1990          215           13.4          26.5          17.5          3 \r\n 1990          216           26.5          25.5          15.5          0 \r\n 1990          217           25.5          24.5          12            0 \r\n 1990          218           28            23.5          9.5           0 \r\n 1990          219           26            24.5          10            0 \r\n 1990          220           28.3          25            10.5          0 \r\n 1990          221           26            26.5          13.5          0 \r\n 1990          222           19.4          28.5          16            0 \r\n 1990          223           22.9          27            15            2 \r\n 1990          224           22            25            13.5          0 \r\n 1990          225           23            24.5          11.5          0 \r\n 1990          226           25            27            14.5          0 \r\n 1990          227           21.7          28.5          17            0 \r\n 1990          228           18            28.5          17            0 \r\n 1990          229           21.2          29.5          19.5          10 \r\n 1990          230           22.9          31.5          21            0 \r\n 1990          231           11.6          30            20            16 \r\n 1990          232           6.3           25.5          19            19 \r\n 1990          233           8.4           21.5          16.5          4 \r\n 1990          234           12            22            17.5          0 \r\n 1990          235           16.1          26            18            0 \r\n 1990          236           13.9          28            19            6 \r\n 1990          237           22.4          29.5          17.5          40 \r\n 1990          238           22.5          31            20            0 \r\n 1990          239           22.3          31.5          21            0 \r\n 1990          240           20.2          31.5          21.5          0 \r\n 1990          241           19.1          30            16.5          0 \r\n 1990          242           23.9          28.5          14            3 \r\n 1990          243           18.6          29            17            0 \r\n 1990          244           15.2          29.5          18.5          0 \r\n 1990          245           8.8           26.5          17.5          0 \r\n 1990          246           18.4          26            18            3 \r\n 1990          247           23            30            19.5          0 \r\n 1990          248           23.2          32.5          20            0 \r\n 1990          249           22.3          32.5          20.5          0 \r\n 1990          250           18            30.5          16.5          0 \r\n 1990          251           18.5          28            14            21 \r\n 1990          252           18.6          28            16            0 \r\n 1990          253           21.1          29            15.5          0 \r\n 1990          254           21.8          29.5          16.5          0 \r\n 1990          255           22.1          30.5          17            0 \r\n 1990          256           19.7          30.5          16.5          0 \r\n 1990          257           18.4          27.5          12.5          0 \r\n 1990          258           20.9          24            7.5           0 \r\n 1990          259           17            23            6.5           0 \r\n 1990          260           14.7          18            6.5           0 \r\n 1990          261           2.7           16.5          9.5           12 \r\n 1990          262           16.3          18            11.5          10 \r\n 1990          263           11.5          20.5          10.5          0 \r\n 1990          264           17.5          21            10.5          0 \r\n 1990          265           13.5          18            7             0 \r\n 1990          266           18.3          14.5          3             0 \r\n 1990          267           19.1          21            3.5           0 \r\n 1990          268           19.3          27.5          8.5           0 \r\n 1990          269           18.7          29.5          9             0 \r\n 1990          270           7.9           26.5          10.5          0 \r\n 1990          271           15.9          21.5          9             0 \r\n 1990          272           9.5           19            8             0 \r\n 1990          273           14.4          18.5          2.5           0 \r\n 1990          274           16.5          20.5          5             0 \r\n 1990          275           14.8          24            7.5           0 \r\n 1990          276           8.5           23.5          10.5          12 \r\n 1990          277           18.2          20            6             10 \r\n 1990          278           16.7          26            10            0 \r\n 1990          279           16.2          26.5          11            0 \r\n 1990          280           13.8          16            3.5           0 \r\n 1990          281           4.6           11            3.5           0 \r\n 1990          282           12.7          9             2.5           3 \r\n 1990          283           16            11           -2             0 \r\n 1990          284           15.9          16           -0.5           0 \r\n 1990          285           15.2          17.5          2             0 \r\n 1990          286           12.2          16            2             0 \r\n 1990          287           12.4          17            4             0 \r\n 1990          288           8             15            0.5           0 \r\n 1990          289           11.1          17.5          3.5           0 \r\n 1990          290           3.3           20            4.5           0 \r\n 1990          291           12.8          12           -1.5           7 \r\n 1990          292           12.2          10.5         -3             0 \r\n 1990          293           4.3           13.5          3             0 \r\n 1990          294           13.7          11.5          0.5           7 \r\n 1990          295           11.9          12.5         -2             0 \r\n 1990          296           12.3          17.5          2             0 \r\n 1990          297           11.3          16.5         -0.5           0 \r\n 1990          298           13            13           -4             0 \r\n 1990          299           12.8          15.5         -0.5           0 \r\n 1990          300           12.7          16            3.5           0 \r\n 1990          301           12.2          13           -4             0 \r\n 1990          302           13.6          18.5          0.5           0 \r\n 1990          303           11.9          21.5          4             0 \r\n 1990          304           13.1          22            3.5           0 \r\n 1990          305           8             23.5          8.5           0 \r\n 1990          306           5.1           20            7             0 \r\n 1990          307           2.9           9.5           1.5           5 \r\n 1990          308           8             2.5          -3             6 \r\n 1990          309           9.5           3            -4             0 \r\n 1990          310           3.3           2.5          -4             0 \r\n 1990          311           8.1           0            -10.5          3 \r\n 1990          312           3.1           0.5          -9.5           0 \r\n 1990          313           9.1           4.5          -3.5           0 \r\n 1990          314           8.4           7            -2             0 \r\n 1990          315           8.8           9.5          -4             0 \r\n 1990          316           7.5           9.5          -4             0 \r\n 1990          317           9.1           9.5          -2.5           0 \r\n 1990          318           10.7          18            1             0 \r\n 1990          319           10.2          21            6.5           0 \r\n 1990          320           7.5           16.5          0.5           0 \r\n 1990          321           7.7           11           -6             0 \r\n 1990          322           9.1           12.5          0.5           0 \r\n 1990          323           9.7           14.5         -2             0 \r\n 1990          324           2.7           15.5          3             0 \r\n 1990          325           7.2           19.5          5             0 \r\n 1990          326           9             16           -3             0 \r\n 1990          327           7.9           11            0.5           0 \r\n 1990          328           6.9           13           -1             0 \r\n 1990          329           7.3           11           -4.5           0 \r\n 1990          330           2.3           7.5          -5             0 \r\n 1990          331           3             8            -5.5           0 \r\n 1990          332           7.5           0.5          -10            1 \r\n 1990          333           8             4            -11            0 \r\n 1990          334           8.5           9.5          -4.5           0 \r\n 1990          335           9.2           9            -4             0 \r\n 1990          336           4.9           3.5          -9.5           0 \r\n 1990          337           2.3          -1            -6.5           12.95 \r\n 1990          338           4.8          -4.5          -15            3.3 \r\n 1990          339           3.8           0.5          -10.5          0 \r\n 1990          340           6.3           3            -8             0 \r\n 1990          341           5.8           3            -7             0 \r\n 1990          342           7.3           5.5          -6.5           0 \r\n 1990          343           7.9           7.5          -5             0 \r\n 1990          344           8.2           7            -4             0 \r\n 1990          345           8.5           7            -3             0 \r\n 1990          346           3.5           5.5          -2.5           0 \r\n 1990          347           7.6           0.5          -7.5           0 \r\n 1990          348           2.6          -1            -8             0 \r\n 1990          349           1.9           0            -4.5           7.62 \r\n 1990          350           5.4          -0.5          -10            0 \r\n 1990          351           2             0.5          -9             3.56 \r\n 1990          352           3.7          -3.5          -20            6.1 \r\n 1990          353           7.4          -1.5          -11.5          0.25 \r\n 1990          354           7.7           0.5          -16.5          0.51 \r\n 1990          355           5.1          -15.5         -24            0.25 \r\n 1990          356           5.1          -22           -28.5          1.78 \r\n 1990          357           4.7          -21.5         -31            0 \r\n 1990          358           4.6          -13           -26.5          0 \r\n 1990          359           5.1          -7.5          -23.5          0 \r\n 1990          360           4.9          -15.5         -29            0 \r\n 1990          361           7.2          -10.5         -21            0 \r\n 1990          362           3.5          -2            -13.5          0 \r\n 1990          363           6.6          -5            -23            1.02 \r\n 1990          364           5.1          -21           -25            0.25 \r\n 1990          365           5.5          -13.5         -24.5          0 \r\n 1991          1             6.2          -4.5          -17.5          0 \r\n 1991          2             3.9          -9            -21.5          0.76 \r\n 1991          3             4.4          -15           -26.5          1.27 \r\n 1991          4             3.5          -12           -25            0 \r\n 1991          5             5            -8.5          -18.5          7.62 \r\n 1991          6             4.5          -11           -22.5          0 \r\n 1991          7             7.2          -12.5         -24            0 \r\n 1991          8             4.9          -6            -16            0 \r\n 1991          9             8            -7            -18            0 \r\n 1991          10            4.1          -8            -17            0 \r\n 1991          11            5.3          -5            -9             4.83 \r\n 1991          12            5.8          -5.5          -12            0.76 \r\n 1991          13            6.1          -3.5          -11            0 \r\n 1991          14            8.8          -0.5          -7.5           0 \r\n 1991          15            6            -1            -7             0 \r\n 1991          16            7.7          -3.5          -9             0 \r\n 1991          17            7.2          -3            -11            0 \r\n 1991          18            9.4          -2.5          -15.5          0 \r\n 1991          19            4             1.5          -5.5           0 \r\n 1991          20            4.6           0.5          -16.5          0 \r\n 1991          21            4.9          -14           -26            0 \r\n 1991          22            3.7          -7            -26            0 \r\n 1991          23            8            -0.5          -15.5          0.51 \r\n 1991          24            5.5          -10.5         -25            0 \r\n 1991          25            5.1          -15           -22.5          0 \r\n 1991          26            8.2          -10           -23            0 \r\n 1991          27            7.9          -4.5          -14            0 \r\n 1991          28            8.2          -3.5          -12            0 \r\n 1991          29            6.1          -9.5          -20.5          0 \r\n 1991          30            5.4          -11           -27.5          0 \r\n 1991          31            5            -7            -22.5          0 \r\n 1991          32            5.4          -2.5          -17.5          0 \r\n 1991          33            8.1           2.5          -11            0 \r\n 1991          34            7.1           4.5          -3.5           0 \r\n 1991          35            8.7           5            -2.5           0 \r\n 1991          36            12.2          4.5          -5.5           0 \r\n 1991          37            9.2           4            -8.5           0 \r\n 1991          38            11.1          3.5          -6             0 \r\n 1991          39            11.9          4.5          -6             0 \r\n 1991          40            10.5          4.5          -5             0 \r\n 1991          41            9.9           2            -7             0 \r\n 1991          42            8.7          -1            -9             0.51 \r\n 1991          43            10.6         -2            -13            0 \r\n 1991          44            6.1           1.5          -7.5           0 \r\n 1991          45            10.5          0            -14            0 \r\n 1991          46            12.3         -10.5         -21.5          0 \r\n 1991          47            9.3          -1.5          -18            0 \r\n 1991          48            11.3          2            -6.5           0 \r\n 1991          49            3.1           1            -3             1.78 \r\n 1991          50            8.2           0            -7.5           3.56 \r\n 1991          51            10.9          3.5          -8             0 \r\n 1991          52            10.8          6.5          -2.5           0 \r\n 1991          53            13.2          5.5          -4             0 \r\n 1991          54            6             0.5          -6             0 \r\n 1991          55            13.2         -0.5          -13            0 \r\n 1991          56            15.1         -5            -15.5          0 \r\n 1991          57            7.7          -3            -11            0.25 \r\n 1991          58            8.3          -0.5          -10            0.51 \r\n 1991          59            14.8          4            -6             0 \r\n 1991          60            3.9           6            -1             1.78 \r\n 1991          61            8.9           3.5          -9             9.65 \r\n 1991          62            14.3         -4            -12.5          0 \r\n 1991          63            16.1          3            -8.5           0 \r\n 1991          64            11.5          11           -2             0 \r\n 1991          65            14.6          8.5          -6.5           0 \r\n 1991          66            16.9         -0.5          -10.5          0 \r\n 1991          67            11.4          5            -5.5           0 \r\n 1991          68            19.3          7            -7             0 \r\n 1991          69            10.5          6            -4             0 \r\n 1991          70            16.5          9            -0.5           0 \r\n 1991          71            1.8           8.5          -0.5           6.6 \r\n 1991          72            5.4           1            -3.5           26.16 \r\n 1991          73            9.8           2            -7.5           0 \r\n 1991          74            12.6          4            -6             0 \r\n 1991          75            5.5           3.5          -2             2.03 \r\n 1991          76            5.6           4             0.5           0.76 \r\n 1991          77            9.4           6            -1             2.79 \r\n 1991          78            19.9          10.5         -1.5           0 \r\n 1991          79            8.4           15.5          0.5           0.25 \r\n 1991          80            9.7           14            4             3.3 \r\n 1991          81            6.5           10.5          3             2.54 \r\n 1991          82            4.8           7.5           0             26.92 \r\n 1991          83            19.5          7.5          -0.5           4.06 \r\n 1991          84            13.7          14            1.5           0 \r\n 1991          85            16.7          22            7             0 \r\n 1991          86            4.3           21            1.5           10.16 \r\n 1991          87            12.8          6.5          -4.5           2.29 \r\n 1991          88            19.4          3.5          -6             0 \r\n 1991          89            17.1          4.5          -7.5           0 \r\n 1991          90            21.1          9.5          -1.5           0.76 \r\n 1991          91            22.1          13           -2             0 \r\n 1991          92            19.8          16            2             0 \r\n 1991          93            17.4          18.5          4             0 \r\n 1991          94            19.2          21            5.5           0 \r\n 1991          95            20.4          26.5          7.5           0 \r\n 1991          96            20.8          30.5          13            0 \r\n 1991          97            19.9          30            14            0 \r\n 1991          98            4.2           25            9             0 \r\n 1991          99            6.1           10            1.5           13 \r\n 1991          100           23.8          8.5          -2.5           0 \r\n 1991          101           5             10            1.5           0 \r\n 1991          102           2.5           5.5           2             19 \r\n 1991          103           5.8           5.5           2             18 \r\n 1991          104           11.2          8.5           3             20 \r\n 1991          105           14.5          11            2             1 \r\n 1991          106           17.8          11.5          1.5           0 \r\n 1991          107           24.4          14.5          1.5           0 \r\n 1991          108           5.2           14.5          5             3 \r\n 1991          109           7.7           9.5           6             20 \r\n 1991          110           22.6          10.5          3             1 \r\n 1991          111           25.4          12.5          0             0 \r\n 1991          112           16.2          15            2             0 \r\n 1991          113           15            13.5          2             6 \r\n 1991          114           27.1          14.5          0             0 \r\n 1991          115           11.8          17            4.5           0 \r\n 1991          116           7.1           16.5          7             0 \r\n 1991          117           24.4          17.5          8             49 \r\n 1991          118           25.2          20            6.5           0 \r\n 1991          119           11.4          21.5          9.5           4 \r\n 1991          120           10.2          16.5          6.5           7 \r\n 1991          121           16.7          14            4             0 \r\n 1991          122           19.1          13.5          3             0 \r\n 1991          123           2.8           12            4.5           3 \r\n 1991          124           7.2           10.5          6             7 \r\n 1991          125           4.5           10.5          4             26 \r\n 1991          126           11.4          8             2.5           8 \r\n 1991          127           20.5          11.5          1             0 \r\n 1991          128           15.3          17            6             7 \r\n 1991          129           21.9          23.5          9.5           0 \r\n 1991          130           14.6          24            12            0 \r\n 1991          131           19.3          24            14.5          0 \r\n 1991          132           22.2          28            16            0 \r\n 1991          133           27.6          30            16.5          3 \r\n 1991          134           20            30.5          16.5          0 \r\n 1991          135           14.4          28.5          16.5          15 \r\n 1991          136           12.6          25.5          17.5          33 \r\n 1991          137           8             24            14            26 \r\n 1991          138           3.7           16            7             28 \r\n 1991          139           12.3          13.5          7.5           0 \r\n 1991          140           19.1          20            9.5           0 \r\n 1991          141           11.6          23.5          15.5          0 \r\n 1991          142           18.6          26.5          18.5          0 \r\n 1991          143           12.9          27            19            2 \r\n 1991          144           13.8          24            15.5          4 \r\n 1991          145           9.7           23            16.5          0 \r\n 1991          146           20.8          25.5          17            38 \r\n 1991          147           27.3          29            17            0 \r\n 1991          148           21.7          32            19            0 \r\n 1991          149           21.7          31.5          19            0 \r\n 1991          150           20.5          29            17.5          11 \r\n 1991          151           9             26.5          18            17 \r\n 1991          152           17.9          26            17            22 \r\n 1991          153           23.3          28            18.5          0 \r\n 1991          154           23.1          29.5          19.5          0 \r\n 1991          155           11.9          27            12            38 \r\n 1991          156           23.7          22            13            6 \r\n 1991          157           30.1          24            12.5          0 \r\n 1991          158           27            25.5          13.5          0 \r\n 1991          159           18.9          26            14            0 \r\n 1991          160           22.2          27.5          17            0 \r\n 1991          161           17.9          28            18.5          0 \r\n 1991          162           25.9          28.5          15.5          0 \r\n 1991          163           28.5          31            17            0 \r\n 1991          164           13.5          31            20            0 \r\n 1991          165           15.9          29            18            17 \r\n 1991          166           19.3          28            17.5          21 \r\n 1991          167           31.8          26            13            0 \r\n 1991          168           29.3          27.5          14.5          0 \r\n 1991          169           26.2          30            16.5          0 \r\n 1991          170           26.8          32            18            0 \r\n 1991          171           23.4          32            18            19 \r\n 1991          172           14.6          29.5          17            8 \r\n 1991          173           8.9           23.5          14            4 \r\n 1991          174           18.6          21            14.5          0 \r\n 1991          175           20            25.5          17            0 \r\n 1991          176           24.9          29.5          18            0 \r\n 1991          177           25.4          33.5          21.5          0 \r\n 1991          178           28.8          35.5          22.5          0 \r\n 1991          179           26.6          34.5          23            0 \r\n 1991          180           23.8          34.5          22.5          0 \r\n 1991          181           26.5          35            22.5          0 \r\n 1991          182           29.5          33.5          20.5          7 \r\n 1991          183           28.7          31            18            0 \r\n 1991          184           17.6          28            17            0 \r\n 1991          185           21.4          25            15            0 \r\n 1991          186           29.9          31            14.5          0 \r\n 1991          187           29.3          33.5          18.5          3 \r\n 1991          188           15.4          31.5          18.5          0 \r\n 1991          189           23.9          27            14            4 \r\n 1991          190           16.3          25.5          15.5          0 \r\n 1991          191           20.3          28            17.5          0 \r\n 1991          192           17.3          28            19            0 \r\n 1991          193           24.9          28            18            12 \r\n 1991          194           15.8          27            17            0 \r\n 1991          195           29.3          26            13            0 \r\n 1991          196           29.3          29            14            0 \r\n 1991          197           29.1          32.5          19            0 \r\n 1991          198           26.2          34.5          21            0 \r\n 1991          199           26.8          35            20.5          0 \r\n 1991          200           17            33            22            0 \r\n 1991          201           13.3          30.5          22            10 \r\n 1991          202           17.4          32            23            1 \r\n 1991          203           19.3          31.5          22            3 \r\n 1991          204           21.3          28.5          14            0 \r\n 1991          205           24.6          26.5          12.5          0 \r\n 1991          206           23.6          25.5          10.5          0 \r\n 1991          207           24.1          24.5          10            0 \r\n 1991          208           18.5          25.5          14            0 \r\n 1991          209           6.9           23.5          15            38 \r\n 1991          210           21.3          20.5          13            6 \r\n 1991          211           26.2          24.5          12            0 \r\n 1991          212           24.4          27.5          15.5          0 \r\n 1991          213           26            29.5          14.5          0 \r\n 1991          214           10.3          29.5          18.5          0 \r\n 1991          215           20.1          27.5          17.5          0 \r\n 1991          216           23.4          25            14            0 \r\n 1991          217           14.7          24            14.5          0 \r\n 1991          218           6.8           22.5          15.5          3 \r\n 1991          219           11.5          24            17.5          7 \r\n 1991          220           5.2           24            17.5          54 \r\n 1991          221           23.6          23            13            2 \r\n 1991          222           26.5          25.5          13            0 \r\n 1991          223           23.7          26.5          13            0 \r\n 1991          224           25            27.5          13.5          0 \r\n 1991          225           22.8          27.5          15.5          0 \r\n 1991          226           25.1          27            14            0 \r\n 1991          227           23.4          28            14            0 \r\n 1991          228           5.8           27            17            0 \r\n 1991          229           23.9          26            15.5          8 \r\n 1991          230           22            26            15.5          0 \r\n 1991          231           25.8          22.5          10            0 \r\n 1991          232           12.9          22            10            0 \r\n 1991          233           23.7          26            13            0 \r\n 1991          234           23.5          29.5          14            0 \r\n 1991          235           14.2          27.5          16.5          19 \r\n 1991          236           22.4          28            17            2 \r\n 1991          237           21.1          30            18.5          0 \r\n 1991          238           22.9          31            19.5          0 \r\n 1991          239           22            31            19            0 \r\n 1991          240           20.5          31            19.5          0 \r\n 1991          241           18.1          30.5          20            0 \r\n 1991          242           19.1          30            20.5          6 \r\n 1991          243           23.3          29.5          15.5          5 \r\n 1991          244           23            27            12.5          0 \r\n 1991          245           14.8          27.5          15.5          0 \r\n 1991          246           16.4          27            17.5          0 \r\n 1991          247           24.4          25            8.5           0 \r\n 1991          248           12.7          24.5          10.5          0 \r\n 1991          249           22.9          27            11.5          2 \r\n 1991          250           18.1          29.5          14.5          0 \r\n 1991          251           5.7           27.5          18            3 \r\n 1991          252           16            27            20            5 \r\n 1991          253           10.7          26            15.5          0 \r\n 1991          254           8.1           22.5          15            0 \r\n 1991          255           7.5           24            16.5          22 \r\n 1991          256           15.2          26            18            17 \r\n 1991          257           6.4           27.5          19.5          6 \r\n 1991          258           8.9           25.5          19            4 \r\n 1991          259           18.6          23.5          10            0 \r\n 1991          260           7.5           20            8.5           0 \r\n 1991          261           11.2          15.5          3.5           5 \r\n 1991          262           16.6          9.5           0             0 \r\n 1991          263           21.1          14.5         -1             0 \r\n 1991          264           14            18.5          2             0 \r\n 1991          265           14.1          18.5          6             0 \r\n 1991          266           12.4          16.5          2             0 \r\n 1991          267           7             13.5          5             3 \r\n 1991          268           16.4          16            3.5           0 \r\n 1991          269           17.7          18            2             0 \r\n 1991          270           13.3          16            3.5           1 \r\n 1991          271           17.6          17            0.5           0 \r\n 1991          272           15.6          23.5          5             0 \r\n 1991          273           11.2          25            10            0 \r\n 1991          274           15.5          22            4.5           0 \r\n 1991          275           10.3          25            10            0 \r\n 1991          276           3.5           19            5             0 \r\n 1991          277           3.3           11            5             6 \r\n 1991          278           11.1          9             1             8 \r\n 1991          279           14.7          9            -1             0 \r\n 1991          280           17.5          15           -3.5           0 \r\n 1991          281           13.7          23            2.5           0 \r\n 1991          282           12.5          23.5          5             0 \r\n 1991          283           12.7          20.5          2.5           0 \r\n 1991          284           14.8          20.5          7.5           0 \r\n 1991          285           15.8          19.5          3             0 \r\n 1991          286           8.6           17            4             0 \r\n 1991          287           8.3           14.5          3.5           0 \r\n 1991          288           14            10           -3.5           0 \r\n 1991          289           14.9          19.5          1             0 \r\n 1991          290           14.9          25            7             0 \r\n 1991          291           5.3           18            0.5           0 \r\n 1991          292           11.3          8            -7             2 \r\n 1991          293           11.3          13           -3.5           0 \r\n 1991          294           13.1          19            2.5           0 \r\n 1991          295           12.8          22            8             0 \r\n 1991          296           10.1          22.5          6             0 \r\n 1991          297           2.5           19            4.5           8 \r\n 1991          298           10.5          8.5          -1             15 \r\n 1991          299           4.9           9             2.5           3 \r\n 1991          300           5.6           10.5          6.5           0 \r\n 1991          301           2.6           14.5          8.5           0 \r\n 1991          302           6             17.5         -2             10 \r\n 1991          303           11.6          0.5          -6.5           0 \r\n 1991          304           3.2          -1            -4.5           6 \r\n 1991          305           4.6          -0.5          -5.5           45 \r\n 1991          306           9.6          -3            -12            3 \r\n 1991          307           9.3          -9.5          -14.5          0 \r\n 1991          308           9.5          -8            -18.5          0 \r\n 1991          309           5.5          -1            -13            0 \r\n 1991          310           6.8          -2.5          -13            1 \r\n 1991          311           8.8          -10           -20            0 \r\n 1991          312           8.9          -6            -18.5          0 \r\n 1991          313           9.4          -0.5          -12            0 \r\n 1991          314           7.3           1.5          -4.5           0 \r\n 1991          315           3.6          -1            -2.5           0 \r\n 1991          316           5.5           0.5          -2             1 \r\n 1991          317           8.3           5.5          -1.5           0 \r\n 1991          318           3.1           7.5          -2             0 \r\n 1991          319           6.4           6             0             4 \r\n 1991          320           8.9           5            -3             0 \r\n 1991          321           2.4           7.5           0             4 \r\n 1991          322           9.6           9.5           2.5           10 \r\n 1991          323           6.7           9             1             0 \r\n 1991          324           10.6          8.5          -2.5           0 \r\n 1991          325           5.8           8.5          -0.5           0 \r\n 1991          326           4.8           5.5          -3.5           3 \r\n 1991          327           5.2          -3            -9             8 \r\n 1991          328           6.6          -7            -13            2 \r\n 1991          329           6.1          -8            -18            0 \r\n 1991          330           5.7          -3.5          -15            0 \r\n 1991          331           6.1           1            -7             4 \r\n 1991          332           4.4          -2            -5.5           2 \r\n 1991          333           4            -1            -5.5           4 \r\n 1991          334           6.7           1            -10.5          26 \r\n 1991          335           6            -6            -16.5          0 \r\n 1991          336           4.5          -6            -16.5          0.25 \r\n 1991          337           4.8          -7.5          -16            1.27 \r\n 1991          338           4.2          -11.5         -22            0.76 \r\n 1991          339           5.2          -6.5          -18            0 \r\n 1991          340           3.4           0.5          -15            0 \r\n 1991          341           6             5            -6             0 \r\n 1991          342           5.2           4            -2             0 \r\n 1991          343           8.6           2.5          -5             0 \r\n 1991          344           8.5           3.5          -4             0 \r\n 1991          345           7.5           4.5          -6.5           0 \r\n 1991          346           2.7           3.5          -3.5           15.24 \r\n 1991          347           4.2           2.5          -5.5           9.65 \r\n 1991          348           6.8           1.5          -9             0.25 \r\n 1991          349           6.3          -2.5          -13.5          0 \r\n 1991          350           6.8           1            -11            0 \r\n 1991          351           8.6           2.5          -7.5           0 \r\n 1991          352           6.9          -4.5          -16            0 \r\n 1991          353           3.8          -5.5          -14.5          0 \r\n 1991          354           3.1           0.5          -7             6.86 \r\n 1991          355           8.2           1.5          -7             1.52 \r\n 1991          356           3.9           2            -4.5           0 \r\n 1991          357           7.8           1            -3.5           0 \r\n 1991          358           8.3           2.5          -5.5           0 \r\n 1991          359           8             3            -7             0 \r\n 1991          360           8.4           2.5          -5             0 \r\n 1991          361           3.8           0.5          -3.5           0 \r\n 1991          362           2.7          -1            -3             0 \r\n 1991          363           3.8           0            -2             0 \r\n 1991          364           3             0            -2             0 \r\n 1991          365           2.8           0            -1.5           0 \r\n 1992          1             2.3           0            -1.5           0 \r\n 1992          2             3.2          -0.5          -1.5           0.51 \r\n 1992          3             4.2           1            -1.5           0 \r\n 1992          4             3.6           1            -2.5           0 \r\n 1992          5             2.5           0            -2             0 \r\n 1992          6             4.6          -0.5          -1.5           0.51 \r\n 1992          7             2.5           0.5          -1.5           0 \r\n 1992          8             3.2           3            -1.5           2.54 \r\n 1992          9             6.5           0.5          -8             0.51 \r\n 1992          10            8.8          -1.5          -9.5           0 \r\n 1992          11            9.2           6            -5.5           0 \r\n 1992          12            2.5           6            -2             0.51 \r\n 1992          13            5.2           0            -9             3.05 \r\n 1992          14            5.1          -4            -13.5          0 \r\n 1992          15            4.5          -4            -24            4.32 \r\n 1992          16            4.9          -4.5          -21            0 \r\n 1992          17            6.9           1            -14.5          0 \r\n 1992          18            7.1          -9.5          -19.5          0 \r\n 1992          19            7.1          -3.5          -19            0 \r\n 1992          20            9.2           3            -11            0 \r\n 1992          21            9.6           4            -8             0 \r\n 1992          22            3             4            -2.5           1.52 \r\n 1992          23            7.5           2.5          -6.5           6.6 \r\n 1992          24            7.5          -4.5          -14.5          0 \r\n 1992          25            4.7          -3.5          -12.5          6.86 \r\n 1992          26            7.8          -1            -14.5          0 \r\n 1992          27            4.8           1.5          -10            0 \r\n 1992          28            4.3          -4            -14            0 \r\n 1992          29            5.8           0.5          -8             0 \r\n 1992          30            7.3           4            -1.5           0 \r\n 1992          31            7.1           4            -1.5           0 \r\n 1992          32            10.6          3            -3.5           0 \r\n 1992          33            10.1          6            -2.5           0 \r\n 1992          34            5.9           6.5          -1             0 \r\n 1992          35            7.9           3            -3.5           0 \r\n 1992          36            11.4          3            -5             0 \r\n 1992          37            7.7           5            -2             0 \r\n 1992          38            8.6           1            -7             0 \r\n 1992          39            11           -5.5          -13            0 \r\n 1992          40            6.2          -7            -13.5          0 \r\n 1992          41            7.9           0.5          -9.5           0 \r\n 1992          42            6            -1.5          -10.5          0.25 \r\n 1992          43            7.1          -3.5          -9.5           0.25 \r\n 1992          44            4            -0.5          -6             0.25 \r\n 1992          45            3.5           0            -2.5           0.51 \r\n 1992          46            4             0            -2             11.43 \r\n 1992          47            5.5           1.5          -1             0 \r\n 1992          48            4.1           3             0.5           0.25 \r\n 1992          49            3.6           1.5          -0.5           7.87 \r\n 1992          50            4.4           0            -3             3.81 \r\n 1992          51            8.3           2.5          -4.5           0 \r\n 1992          52            6.9           2            -7.5           0 \r\n 1992          53            7.4           0.5          -6             0 \r\n 1992          54            7.3           2.5          -4             0 \r\n 1992          55            5.7           2            -4             1.27 \r\n 1992          56            9.7          -2            -9.5           0.51 \r\n 1992          57            10.3          3            -8             0 \r\n 1992          58            12.1          7.5          -0.5           0 \r\n 1992          59            11.1          7.5           0.5           0 \r\n 1992          60            13.8          7.5          -1             0 \r\n 1992          61            17            7.5          -2.5           0 \r\n 1992          62            11.4          14.5          0.5           0 \r\n 1992          63            5.8           18            0             0 \r\n 1992          64            6.3           12            1             0 \r\n 1992          65            3.6           7             2.5           5.59 \r\n 1992          66            5.4           11.5          5             9.65 \r\n 1992          67            5.6           13            7.5           1.52 \r\n 1992          68            8.6           12.5          6.5           0.51 \r\n 1992          69            3.6           10.5          4             23.37 \r\n 1992          70            11.5          8.5          -4             2.29 \r\n 1992          71            4.5          -3.5          -11.5          0.25 \r\n 1992          72            9.8          -3.5          -10.5          0.76 \r\n 1992          73            5.1          -3            -13            0 \r\n 1992          74            8.1          -1.5          -12            1.02 \r\n 1992          75            15.1          2            -5             0 \r\n 1992          76            12.3          2.5          -7             0 \r\n 1992          77            17.4          8            -3.5           0 \r\n 1992          78            11.1          9.5          -1.5           0 \r\n 1992          79            17.2          4            -2             0 \r\n 1992          80            12.3          5.5          -4.5           0 \r\n 1992          81            4.8           5.5          -2.5           1.02 \r\n 1992          82            18.4          3.5          -2.5           0 \r\n 1992          83            21.8          3.5          -7.5           0 \r\n 1992          84            22.2          9.5          -5             0 \r\n 1992          85            22.2          16           -2.5           0 \r\n 1992          86            19.5          15           -0.5           0 \r\n 1992          87            21.5          9            -4.5           0 \r\n 1992          88            3.9           7.5          -7             1.52 \r\n 1992          89            4.5           7            -1             11.68 \r\n 1992          90            23.3          4.5           1.5           0.76 \r\n 1992          91            14.5          9            -1.5           0 \r\n 1992          92            14.5          9.5          -1             0 \r\n 1992          93            21.9          3.5          -5             0 \r\n 1992          94            18.5          5.5          -8             0 \r\n 1992          95            23.7          13           -2             0 \r\n 1992          96            22.2          15           -1.5           0 \r\n 1992          97            15.5          15            1             0 \r\n 1992          98            17.5          20.5          4.5           0 \r\n 1992          99            4.6           21            4             0 \r\n 1992          100           14.3          14.5          0.5           0 \r\n 1992          101           8.2           10.5         -1             6 \r\n 1992          102           9.6           14            3             0 \r\n 1992          103           8.9           12            2             0 \r\n 1992          104           4.6           4.5          -6.5           0 \r\n 1992          105           13.3          2            -4             0 \r\n 1992          106           13.1          10.5          1             0 \r\n 1992          107           6.5           19            4             0 \r\n 1992          108           4.2           17            3.5           14 \r\n 1992          109           6.9           8             4.5           0 \r\n 1992          110           8.3           13            6             1 \r\n 1992          111           3.3           17            8.5           11 \r\n 1992          112           6.7           13            4.5           9 \r\n 1992          113           9.8           8.5           0.5           20 \r\n 1992          114           8.4           4            -0.5           2 \r\n 1992          115           14.5          5.5           0.5           0 \r\n 1992          116           9.3           8             2             0 \r\n 1992          117           9.3           8             0.5           0 \r\n 1992          118           26.8          7.5           2             0 \r\n 1992          119           20            11           -0.5           0 \r\n 1992          120           26.4          16.5          1.5           0 \r\n 1992          121           26.5          23            6.5           0 \r\n 1992          122           26.1          28.5          8.5           0 \r\n 1992          123           25.3          32            13.5          0 \r\n 1992          124           26.6          29.5          13            0 \r\n 1992          125           23.6          22            6             0 \r\n 1992          126           28.4          20            7             0 \r\n 1992          127           29.3          18            1.5           0 \r\n 1992          128           29.6          17.5          0             0 \r\n 1992          129           30            22.5          3             0 \r\n 1992          130           22.3          25.5          6             0 \r\n 1992          131           22.1          28            10            0 \r\n 1992          132           11.8          28.5          12            0 \r\n 1992          133           21            26.5          15.5          0 \r\n 1992          134           13            24.5          12.5          0 \r\n 1992          135           19.2          21            5.5           0 \r\n 1992          136           13.9          19.5          8             0 \r\n 1992          137           17.3          23            10            6 \r\n 1992          138           10.8          26            13            0 \r\n 1992          139           28            24.5          9.5           25 \r\n 1992          140           29.4          20            7.5           0 \r\n 1992          141           21            25            10            0 \r\n 1992          142           13.5          28.5          13.5          0 \r\n 1992          143           17            27            16.5          0 \r\n 1992          144           22.6          26.5          15            2 \r\n 1992          145           29.3          22            6.5           4 \r\n 1992          146           5             16.5          4.5           0 \r\n 1992          147           19.5          14            3             11 \r\n 1992          148           24.2          11.5          3             10 \r\n 1992          149           25.6          16            3             0 \r\n 1992          150           27.8          19            5             0 \r\n 1992          151           28.8          21.5          7             0 \r\n 1992          152           26.3          23.5          7.5           0 \r\n 1992          153           10.3          25.5          9             0 \r\n 1992          154           20.5          24.5          13.5          0 \r\n 1992          155           23.7          25            11            0 \r\n 1992          156           19.8          27.5          11.5          0 \r\n 1992          157           27.3          27            13.5          0 \r\n 1992          158           23.5          27.5          10            0 \r\n 1992          159           28.4          27            13            1 \r\n 1992          160           10.8          24.5          8             0 \r\n 1992          161           20.3          24.5          13            0 \r\n 1992          162           24.6          26            16            0 \r\n 1992          163           24.2          28            14.5          0 \r\n 1992          164           21.3          29.5          13.5          0 \r\n 1992          165           22.4          30.5          15            0 \r\n 1992          166           23.3          31.5          15.5          0 \r\n 1992          167           23.6          31.5          14.5          0 \r\n 1992          168           19.2          31            18            0 \r\n 1992          169           24.5          30            17            49 \r\n 1992          170           24.4          28.5          18            16 \r\n 1992          171           18            25.5          16            0 \r\n 1992          172           30            26            14.5          3 \r\n 1992          173           31            22            8.5           0 \r\n 1992          174           16.6          20            5.5           0 \r\n 1992          175           26.7          22            10.5          6 \r\n 1992          176           21            25            12            11 \r\n 1992          177           29.2          26.5          13            0 \r\n 1992          178           32            24.5          14            4 \r\n 1992          179           25.8          22.5          9.5           0 \r\n 1992          180           23.7          23            8.5           0 \r\n 1992          181           17.9          26.5          14            0 \r\n 1992          182           23.4          27            15            0 \r\n 1992          183           20.4          26            14            0 \r\n 1992          184           5.8           29.5          16.5          0 \r\n 1992          185           24.7          29            16.5          6 \r\n 1992          186           24.1          22            11.5          1 \r\n 1992          187           20.3          24            13            0 \r\n 1992          188           23.1          24            13            0 \r\n 1992          189           15            24.5          11            0 \r\n 1992          190           25.4          26.5          14.5          5 \r\n 1992          191           16.4          27.5          18.5          7 \r\n 1992          192           21.8          27.5          15.5          0 \r\n 1992          193           12.3          26            14.5          32 \r\n 1992          194           14.9          24.5          13.5          0 \r\n 1992          195           5             24.5          16.5          31 \r\n 1992          196           10            24            16.5          8 \r\n 1992          197           21.1          21            15            20 \r\n 1992          198           24.1          23            12.5          0 \r\n 1992          199           21.2          25.5          13            16 \r\n 1992          200           25.1          25.5          14            0 \r\n 1992          201           17.5          25            13            6 \r\n 1992          202           21.4          27            13.5          0 \r\n 1992          203           23.7          25            13            0 \r\n 1992          204           3.7           22            9             0 \r\n 1992          205           5.4           20.5          11.5          25 \r\n 1992          206           4.1           17            12            8 \r\n 1992          207           11.2          18            13            0 \r\n 1992          208           25.4          24.5          15.5          2 \r\n 1992          209           28.4          27            17            2 \r\n 1992          210           20.5          27            14.5          0 \r\n 1992          211           14.2          27.5          16            0 \r\n 1992          212           8.2           25            14.5          2 \r\n 1992          213           24.2          20.5          13            8 \r\n 1992          214           28.8          21.5          10            12 \r\n 1992          215           27            25            12            0 \r\n 1992          216           24.1          26            15.5          15 \r\n 1992          217           23.3          24            13.5          0 \r\n 1992          218           20.4          22.5          9             0 \r\n 1992          219           20.5          23            12            0 \r\n 1992          220           13.3          24            15            0 \r\n 1992          221           26.6          26            17            17 \r\n 1992          222           25.8          28.5          16.5          27 \r\n 1992          223           27.7          31            19.5          0 \r\n 1992          224           26.6          29.5          20            0 \r\n 1992          225           19.7          26.5          13            0 \r\n 1992          226           14.9          24.5          13            8 \r\n 1992          227           20.9          21            10            0 \r\n 1992          228           20.2          20.5          8             9 \r\n 1992          229           21.8          21.5          7             0 \r\n 1992          230           17.6          22            8.5           0 \r\n 1992          231           19.8          23.5          11.5          0 \r\n 1992          232           22.9          24            14            0 \r\n 1992          233           24            24            9.5           0 \r\n 1992          234           22.2          25            10.5          0 \r\n 1992          235           23            25.5          13            0 \r\n 1992          236           20.9          26.5          12.5          0 \r\n 1992          237           18.1          27            16            0 \r\n 1992          238           4.9           28.5          17.5          0 \r\n 1992          239           14.1          25.5          15            0 \r\n 1992          240           14.7          19            12.5          5 \r\n 1992          241           21.3          20.5          11            0 \r\n 1992          242           20.1          22            7.5           0 \r\n 1992          243           22.2          26            10.5          0 \r\n 1992          244           22.1          25            10            0 \r\n 1992          245           7.5           22            6.5           0 \r\n 1992          246           6.9           21.5          9             0 \r\n 1992          247           24            22            14.5          10 \r\n 1992          248           21.4          24.5          10.5          6 \r\n 1992          249           6.1           25.5          11.5          0 \r\n 1992          250           21.7          25.5          15            0 \r\n 1992          251           9.7           24            13            15 \r\n 1992          252           20.8          23.5          12.5          0 \r\n 1992          253           15.5          22            4.5           12 \r\n 1992          254           14.6          20.5          8.5           8 \r\n 1992          255           21            21            6.5           0 \r\n 1992          256           16            19.5          5             0 \r\n 1992          257           10.9          23            9.5           0 \r\n 1992          258           7.6           25.5          15            0 \r\n 1992          259           15.4          25.5          14            18 \r\n 1992          260           10.3          25.5          15.5          6 \r\n 1992          261           12.6          28            18.5          19 \r\n 1992          262           19.3          27.5          14.5          3 \r\n 1992          263           17            24.5          10            0 \r\n 1992          264           7.7           17.5          3.5           0 \r\n 1992          265           10.7          19.5          7.5           0 \r\n 1992          266           20.2          22            12            0 \r\n 1992          267           19.3          21.5          3             0 \r\n 1992          268           20            18            3.5           0 \r\n 1992          269           15.4          20            6             0 \r\n 1992          270           6.5           21            6.5           0 \r\n 1992          271           18            20.5          8             2 \r\n 1992          272           18.4          21            3             0 \r\n 1992          273           17.7          21.5          1.5           0 \r\n 1992          274           16.5          16.5         -1             0 \r\n 1992          275           18.8          22.5          1.5           0 \r\n 1992          276           18.7          27.5          6             0 \r\n 1992          277           16.3          30            8.5           0 \r\n 1992          278           16            29            8             0 \r\n 1992          279           14.8          25.5          8             0 \r\n 1992          280           10.3          23.5          8.5           0 \r\n 1992          281           4.1           22            9             0 \r\n 1992          282           3.3           18            9.5           23 \r\n 1992          283           6.8           13            6.5           21 \r\n 1992          284           11.8          12            4             9 \r\n 1992          285           16            13            3.5           0 \r\n 1992          286           13.8          16.5          0.5           0 \r\n 1992          287           9.9           16.5          4             0 \r\n 1992          288           7.9           14            2             0 \r\n 1992          289           6.1           13            3             0 \r\n 1992          290           10.6          9             1.5           0 \r\n 1992          291           9.1           8.5           0             1 \r\n 1992          292           12.9          8            -4.5           0 \r\n 1992          293           3.6           7.5          -5             0 \r\n 1992          294           13.7          5.5          -4.5           0 \r\n 1992          295           12.4          10           -2             0 \r\n 1992          296           12.3          16.5         -0.5           0 \r\n 1992          297           11.8          23            5.5           0 \r\n 1992          298           12.5          25            12.5          0 \r\n 1992          299           13            22.5          5             0 \r\n 1992          300           13.4          25            4             0 \r\n 1992          301           13.4          22            2.5           0 \r\n 1992          302           10.7          16           -2.5           0 \r\n 1992          303           11.1          15           -0.5           0 \r\n 1992          304           8.3           9.5          -4             0 \r\n 1992          305           3.2           7.5          -3.5           0 \r\n 1992          306           1.6           7.5           2             0 \r\n 1992          307           3.2           6.5           2.5           26 \r\n 1992          308           4.6           4.5           0.5           44 \r\n 1992          309           4             1            -2             5 \r\n 1992          310           4.8          -0.5          -3             0 \r\n 1992          311           4            -1            -3.5           0 \r\n 1992          312           5            -2            -6             0 \r\n 1992          313           4.2          -3            -6             0 \r\n 1992          314           6.3           3            -3.5           0 \r\n 1992          315           8             10            1.5           1 \r\n 1992          316           7.5           12            3             1 \r\n 1992          317           10            7            -5             0 \r\n 1992          318           6.6           5.5          -2             0 \r\n 1992          319           7.3           3            -5.5           0 \r\n 1992          320           8.2          -0.5          -7             0 \r\n 1992          321           9             0.5          -6             0 \r\n 1992          322           3.3           6.5          -4             0 \r\n 1992          323           6.1           7            -1.5           0 \r\n 1992          324           2.2           4            -0.5           0 \r\n 1992          325           2.4           4.5           0             0 \r\n 1992          326           3.3           6             1.5           20 \r\n 1992          327           2.8           4            -0.5           2 \r\n 1992          328           3.7           0.5          -2             0 \r\n 1992          329           3.2           0.5          -1.5           0 \r\n 1992          330           2.2           1.5          -0.5           0 \r\n 1992          331           5.8           1            -1             0 \r\n 1992          332           8.1           0            -5.5           2 \r\n 1992          333           7.9           0            -10.5          0 \r\n 1992          334           4.9           1            -11            0 \r\n 1992          335           3.9           0.5          -10            0 \r\n 1992          336           5             0            -8.5           0.25 \r\n 1992          337           7.3           0.5          -9.5           1.27 \r\n 1992          338           4.3           2            -6             0.51 \r\n 1992          339           7            -1            -7             2.29 \r\n 1992          340           7.4          -2.5          -12.5          0 \r\n 1992          341           3            -6.5          -18.5          1.52 \r\n 1992          342           3.1          -4            -12.5          1.27 \r\n 1992          343           4.2          -3            -9             0 \r\n 1992          344           3.6          -2.5          -12.5          1.52 \r\n 1992          345           8.6           1            -7             2.03 \r\n 1992          346           4.3           1            -2             0 \r\n 1992          347           5.2           0            -8             0 \r\n 1992          348           2.3          -1            -6             1.78 \r\n 1992          349           2.3           0.5          -2.5           8.64 \r\n 1992          350           3.6           0.5          -1             6.86 \r\n 1992          351           4.1           1.5          -1             3.56 \r\n 1992          352           6.2          -0.5          -5             0 \r\n 1992          353           2.3          -3            -7             0 \r\n 1992          354           6.9          -2            -6             1.02 \r\n 1992          355           7.9          -1.5          -10            0 \r\n 1992          356           8.2          -2            -15.5          0 \r\n 1992          357           5.1           1            -9             0 \r\n 1992          358           5.8           3            -9.5           0.25 \r\n 1992          359           5             0            -15            0.25 \r\n 1992          360           6.8          -6.5          -21            0 \r\n 1992          361           5.7          -1            -16            0 \r\n 1992          362           8            -6            -14.5          0 \r\n 1992          363           3.5           1            -11            0 \r\n 1992          364           3.1           1            -9.5           12.45 \r\n 1992          365           2.5          -1            -11            0.25 \r\n 1992          366           3.9          -7.5          -14.5          0.25 \r\n 1993          1             6            -16           -24            0 \r\n 1993          2             3.1          -5            -18.5          0 \r\n 1993          3             3.9           0.5          -8             0.76 \r\n 1993          4             6.1          -3            -16            1.27 \r\n 1993          5             7.2          -11.5         -20            0 \r\n 1993          6             7.7          -11           -19            0 \r\n 1993          7             3.6          -11           -18.5          0 \r\n 1993          8             4.9          -10.5         -21            0.25 \r\n 1993          9             4.5          -10           -15.5          0 \r\n 1993          10            9            -8.5          -13.5          0.25 \r\n 1993          11            4.6          -7            -14.5          0.25 \r\n 1993          12            3.6          -3.5          -8             11.18 \r\n 1993          13            7.8          -3            -7.5           6.86 \r\n 1993          14            6.7          -6            -13.5          0 \r\n 1993          15            6.4          -8            -18            0 \r\n 1993          16            8.8          -3.5          -13.5          0 \r\n 1993          17            4.7          -5            -20            0 \r\n 1993          18            4            -10.5         -24            0 \r\n 1993          19            6.4          -8.5          -18.5          0 \r\n 1993          20            4.4          -5            -16.5          0.51 \r\n 1993          21            9.5          -1            -6.5           2.54 \r\n 1993          22            9.5           0.5          -6.5           1.02 \r\n 1993          23            10.1          2.5          -7             0 \r\n 1993          24            8.1          -2            -15.5          0 \r\n 1993          25            7.6          -6.5          -18.5          0 \r\n 1993          26            10.7          1.5          -12.5          0 \r\n 1993          27            5.4           1            -9.5           0 \r\n 1993          28            7.9          -2            -13            0 \r\n 1993          29            7.1          -6            -23            0 \r\n 1993          30            10.5         -5.5          -19.5          0 \r\n 1993          31            11.5          2            -8             0 \r\n 1993          32            11.9          4.5          -5             0 \r\n 1993          33            9.4           2.5          -6             0 \r\n 1993          34            10.2          2            -9             0 \r\n 1993          35            10.2          0.5          -8.5           0 \r\n 1993          36            12.2         -1            -8             0 \r\n 1993          37            12.7          0            -4             0 \r\n 1993          38            12.7         -1            -2.5           0 \r\n 1993          39            6            -1            -4             0 \r\n 1993          40            12.9         -0.5          -2.5           1.52 \r\n 1993          41            6.9           0            -3             1.52 \r\n 1993          42            3.9          -0.5          -6             3.3 \r\n 1993          43            10.3         -5            -8             1.27 \r\n 1993          44            10.3         -5.5          -10.5          2.29 \r\n 1993          45            11.3         -7            -17            0 \r\n 1993          46            8.5          -10           -17            0 \r\n 1993          47            7.9          -12           -19            0 \r\n 1993          48            9.2          -14.5         -25            0 \r\n 1993          49            10.2         -13           -23.5          0 \r\n 1993          50            9.3          -7.5          -19            0 \r\n 1993          51            7.6          -5            -12.5          0 \r\n 1993          52            8.3          -5            -8.5           15.24 \r\n 1993          53            6.8          -6            -15.5          4.83 \r\n 1993          54            8.1          -13           -24            0 \r\n 1993          55            6.8          -14           -28            0 \r\n 1993          56            7.2          -11           -21            1.52 \r\n 1993          57            9.4          -9            -18            1.27 \r\n 1993          58            14.1         -7.5          -17.5          0 \r\n 1993          59            17.2         -2.5          -19            0 \r\n 1993          60            11.8          1.5          -12.5          0 \r\n 1993          61            6.1           1            -5             0.76 \r\n 1993          62            8             1.5          -1             6.6 \r\n 1993          63            17.3          2            -5             0 \r\n 1993          64            18.3          2            -5             0 \r\n 1993          65            16.7          2            -5.5           0 \r\n 1993          66            16.9          2.5          -3             0 \r\n 1993          67            13.8          3.5          -2             0 \r\n 1993          68            7.7           2            -5             0 \r\n 1993          69            11.6          2            -6             3.3 \r\n 1993          70            17.6         -4            -16.5          0 \r\n 1993          71            11.9         -7            -19            0.25 \r\n 1993          72            16.2         -8.5          -21.5          0 \r\n 1993          73            17.5         -10.5         -21.5          0 \r\n 1993          74            13           -0.5          -16            0 \r\n 1993          75            12.7          5            -10            0.25 \r\n 1993          76            18.2         -3.5          -18            0 \r\n 1993          77            10.9         -6.5          -16.5          0 \r\n 1993          78            6.9          -1            -8             2.03 \r\n 1993          79            7.9           1            -3.5           0.25 \r\n 1993          80            5.2          -1            -4             2.54 \r\n 1993          81            4.1           0            -3             10.16 \r\n 1993          82            7             1            -1.5           1.52 \r\n 1993          83            13.2          3            -1             0 \r\n 1993          84            16.3          4.5           0             0 \r\n 1993          85            12.9          5.5          -1             0 \r\n 1993          86            12.6          5.5          -1.5           0 \r\n 1993          87            17.5          7            -1.5           0 \r\n 1993          88            19.9          10.5         -0.5           0 \r\n 1993          89            4.4           11.5          3             16 \r\n 1993          90            1.8           8             2             22.61 \r\n 1993          91            10.5          3.5          -5             12 \r\n 1993          92            20            1            -7             0 \r\n 1993          93            22.6          5.5          -4.5           0 \r\n 1993          94            25.3          8.5          -4             0 \r\n 1993          95            21.6          9.5          -3.5           0 \r\n 1993          96            11.7          9.5          -1             0 \r\n 1993          97            1.6           9             2             13 \r\n 1993          98            2.9           8.5           4             4 \r\n 1993          99            20.3          9.5          -0.5           1 \r\n 1993          100           16.6          13           -2             0 \r\n 1993          101           8.1           12.5          1.5           2 \r\n 1993          102           12.1          7.5           1             0 \r\n 1993          103           5.5           8.5           0.5           0 \r\n 1993          104           3.5           5.5           0.5           8 \r\n 1993          105           4             2.5           0             4 \r\n 1993          106           23.1          7.5           0             3 \r\n 1993          107           22.9          15.5         -0.5           0 \r\n 1993          108           14.9          18.5          3             0 \r\n 1993          109           1.3           16.5          4.5           19 \r\n 1993          110           20            10           -1             29 \r\n 1993          111           26.8          11.5         -1.5           0 \r\n 1993          112           22.9          15            0.5           0 \r\n 1993          113           14.6          18.5          4             0 \r\n 1993          114           9.7           18            6.5           0 \r\n 1993          115           24.3          15            3.5           0 \r\n 1993          116           19.3          16            1.5           0 \r\n 1993          117           5             17            6.5           1 \r\n 1993          118           19.7          19.5          4.5           5 \r\n 1993          119           25.3          21.5          6.5           0 \r\n 1993          120           12.7          18.5          7             0 \r\n 1993          121           5.7           14            8.5           4 \r\n 1993          122           5.8           13.5          8             10 \r\n 1993          123           5.9           11.5          8             4 \r\n 1993          124           9.2           15            9.5           7 \r\n 1993          125           20.2          20            8             0 \r\n 1993          126           10.1          22            13            0 \r\n 1993          127           16.8          22.5          15.5          14 \r\n 1993          128           15            24            16            0 \r\n 1993          129           15.2          23            13            15 \r\n 1993          130           9             20            13            13 \r\n 1993          131           15.4          22.5          14            13 \r\n 1993          132           29.1          25            12.5          0 \r\n 1993          133           30.5          24            5.5           0 \r\n 1993          134           25.3          24.5          8             0 \r\n 1993          135           17.3          22.5          7.5           0 \r\n 1993          136           29.6          18.5          3.5           3 \r\n 1993          137           9.3           18            6.5           0 \r\n 1993          138           20.1          16            5             5 \r\n 1993          139           16.5          14.5          4             0 \r\n 1993          140           15.7          15            3             0 \r\n 1993          141           29.5          18.5          4.5           0 \r\n 1993          142           6.8           20.5          8             0 \r\n 1993          143           6.2           18.5          13            3 \r\n 1993          144           11.5          19            10            2 \r\n 1993          145           26.5          18.5          5.5           0 \r\n 1993          146           27.2          24            6.5           0 \r\n 1993          147           22.9          28            12            8 \r\n 1993          148           9.1           26.5          9.5           0 \r\n 1993          149           9.2           15            7             3 \r\n 1993          150           8             16.5          9.5           23 \r\n 1993          151           27.6          18            5.5           3 \r\n 1993          152           8.2           17            4             0 \r\n 1993          153           3.8           13            7.5           27 \r\n 1993          154           21.1          16            6             1 \r\n 1993          155           11.4          19            9             6 \r\n 1993          156           23.1          20            7             2 \r\n 1993          157           10.8          21.5          12.5          0 \r\n 1993          158           5.1           21            15            9 \r\n 1993          159           18.4          24.5          15.5          40 \r\n 1993          160           22.7          26            13            0 \r\n 1993          161           27.3          26            12.5          0 \r\n 1993          162           24.7          29            14            0 \r\n 1993          163           17.5          28            16.5          0 \r\n 1993          164           13.6          26.5          17            18 \r\n 1993          165           28.9          25            13.5          10 \r\n 1993          166           30.7          23.5          10            0 \r\n 1993          167           19.7          24            13            20 \r\n 1993          168           15.6          26            16.5          19 \r\n 1993          169           9.1           25.5          16.5          34 \r\n 1993          170           4.8           22.5          16.5          10 \r\n 1993          171           14.1          20.5          14.5          3 \r\n 1993          172           32.1          26            13.5          0 \r\n 1993          173           29.1          29.5          16            0 \r\n 1993          174           21.1          30            19.5          0 \r\n 1993          175           12.2          28.5          17            7 \r\n 1993          176           30.1          24.5          12.5          5 \r\n 1993          177           28.5          27.5          14.5          0 \r\n 1993          178           28.9          29.5          13            0 \r\n 1993          179           18.2          28            14.5          0 \r\n 1993          180           19.5          25.5          14            0 \r\n 1993          181           3.3           25            16            42 \r\n 1993          182           11.4          22            16            0 \r\n 1993          183           19.3          25.5          18            0 \r\n 1993          184           23.1          29.5          18            0 \r\n 1993          185           17.9          31.5          20.5          1 \r\n 1993          186           5.8           27.5          18            1 \r\n 1993          187           25.6          25            16.5          4 \r\n 1993          188           11.4          27            15.5          0 \r\n 1993          189           20.3          26.5          17            3 \r\n 1993          190           24.8          28.5          17.5          48 \r\n 1993          191           14.1          26.5          16.5          0 \r\n 1993          192           19.9          24.5          16.5          41 \r\n 1993          193           27.7          24            12            0 \r\n 1993          194           12.7          24            15            10 \r\n 1993          195           12.5          24.5          16.5          16 \r\n 1993          196           18.2          24.5          17            0 \r\n 1993          197           13.4          25.5          17.5          0 \r\n 1993          198           12            26            19.5          39 \r\n 1993          199           14.1          28            20            37 \r\n 1993          200           28.4          27.5          17            0 \r\n 1993          201           15.1          25.5          15            0 \r\n 1993          202           20.3          23.5          13.5          0 \r\n 1993          203           4             23.5          15            0 \r\n 1993          204           12.3          22.5          16            5 \r\n 1993          205           13.6          27            18            0 \r\n 1993          206           24.1          27            18.5          9 \r\n 1993          207           19.2          27.5          16.5          0 \r\n 1993          208           13.9          27.5          19            7 \r\n 1993          209           21.1          28            16.5          0 \r\n 1993          210           27.9          26.5          14.5          0 \r\n 1993          211           24.9          28.5          15            0 \r\n 1993          212           14.9          28.5          18            0 \r\n 1993          213           28.5          26            17.5          25 \r\n 1993          214           24.6          27            13            0 \r\n 1993          215           20.7          25            13            2 \r\n 1993          216           21.7          22.5          10.5          0 \r\n 1993          217           14.8          23            11.5          0 \r\n 1993          218           21.5          23            10.5          2 \r\n 1993          219           17            22.5          10.5          0 \r\n 1993          220           15.9          24.5          14.5          0 \r\n 1993          221           13.5          27            18.5          0 \r\n 1993          222           23.9          29.5          17            32 \r\n 1993          223           24            29.5          16.5          0 \r\n 1993          224           19.7          29            18.5          0 \r\n 1993          225           10            28            18.5          0 \r\n 1993          226           6             25            18.5          14 \r\n 1993          227           15.2          26            18.5          41 \r\n 1993          228           16.6          29            19            12 \r\n 1993          229           20.3          28.5          18            0 \r\n 1993          230           9.3           28            19            0 \r\n 1993          231           18.8          26.5          17            17 \r\n 1993          232           20.9          27.5          15.5          0 \r\n 1993          233           20.6          25            14            0 \r\n 1993          234           12.9          26.5          17            12 \r\n 1993          235           20            27.5          19.5          0 \r\n 1993          236           24.9          29            17            0 \r\n 1993          237           21.3          31            19            0 \r\n 1993          238           22.6          31            19.5          4 \r\n 1993          239           12.1          30            19.5          0 \r\n 1993          240           8             23.5          14            0 \r\n 1993          241           7.5           23            16            20 \r\n 1993          242           5.5           23.5          16.5          35 \r\n 1993          243           22.8          21.5          10.5          6 \r\n 1993          244           22.8          22            9             0 \r\n 1993          245           11.7          23.5          14            0 \r\n 1993          246           21.9          23            11.5          0 \r\n 1993          247           23.3          23            10.5          0 \r\n 1993          248           8.4           22            10.5          0 \r\n 1993          249           21            18.5          8             0 \r\n 1993          250           16.3          21.5          8             0 \r\n 1993          251           20.9          22            7             7 \r\n 1993          252           16.9          21.5          9.5           0 \r\n 1993          253           23.1          20.5          7.5           0 \r\n 1993          254           16.9          21.5          7             0 \r\n 1993          255           18.6          27            13            0 \r\n 1993          256           6.2           29            13            0 \r\n 1993          257           6             17.5          6.5           13 \r\n 1993          258           13.9          12            2.5           0 \r\n 1993          259           19.7          15.5          4             0 \r\n 1993          260           12.4          18            7.5           0 \r\n 1993          261           7.9           17            8.5           3 \r\n 1993          262           4.6           15.5          10.5          4 \r\n 1993          263           7             16            12.5          6 \r\n 1993          264           14.2          18.5          12            0 \r\n 1993          265           9             20            12.5          8 \r\n 1993          266           20.4          18            5             5 \r\n 1993          267           17.2          17.5          4.5           0 \r\n 1993          268           8.5           18            7.5           0 \r\n 1993          269           11            16            7             3 \r\n 1993          270           12.9          15.5          1.5           0 \r\n 1993          271           18            15.5          4             0 \r\n 1993          272           14.8          14            0.5           0 \r\n 1993          273           17.1          17.5          3.5           0 \r\n 1993          274           15.2          19.5          7             0 \r\n 1993          275           16.7          14           -1.5           0 \r\n 1993          276           18.1          18.5          3             0 \r\n 1993          277           18.2          22.5          8             0 \r\n 1993          278           15.2          17.5          1.5           0 \r\n 1993          279           16.6          24            9.5           0 \r\n 1993          280           16.1          29.5          16.5          0 \r\n 1993          281           5.3           27.5          9             0 \r\n 1993          282           16.8          10           -1             24 \r\n 1993          283           15.2          9            -3.5           0 \r\n 1993          284           15.2          14           -1             0 \r\n 1993          285           14.7          15            0.5           0 \r\n 1993          286           12.9          12.5         -2.5           0 \r\n 1993          287           12.4          17.5          2             0 \r\n 1993          288           4.3           18.5          9             0 \r\n 1993          289           5.3           14.5          9.5           0 \r\n 1993          290           10.4          12.5          6.5           0 \r\n 1993          291           8.1           14            2             0 \r\n 1993          292           12.4          14.5          2             0 \r\n 1993          293           5.2           15            3             0 \r\n 1993          294           13.7          12           -0.5           6 \r\n 1993          295           14.4          15           -1.5           0 \r\n 1993          296           13.6          20            2             0 \r\n 1993          297           13.5          21.5          4             0 \r\n 1993          298           12            21            5.5           0 \r\n 1993          299           6.4           16            4             0 \r\n 1993          300           11.4          8             2             0 \r\n 1993          301           9.6           10            3             0 \r\n 1993          302           6.6           8            -3.5           0 \r\n 1993          303           7.3           0.5          -4.5           0 \r\n 1993          304           11.8          1            -8.5           0 \r\n 1993          305           8.9           6.5          -6.5           0 \r\n 1993          306           10.7          11           -2             0 \r\n 1993          307           9             12.5         -0.5           0 \r\n 1993          308           9.3           14.5          3.5           0 \r\n 1993          309           5.1           11           -4.5           0 \r\n 1993          310           8.6          -0.5          -7.5           0 \r\n 1993          311           9.7           5.5          -8             0 \r\n 1993          312           9.4           7.5          -5.5           0 \r\n 1993          313           8.6           7            -7.5           0 \r\n 1993          314           9.2           8.5          -4.5           0 \r\n 1993          315           10.7          7.5          -3             0 \r\n 1993          316           3             7            -5             0 \r\n 1993          317           4             12           -1             9 \r\n 1993          318           3.4           4            -0.5           0 \r\n 1993          319           8             2            -6             4 \r\n 1993          320           4.5           2.5          -3.5           0 \r\n 1993          321           10.7          4.5          -2             0 \r\n 1993          322           7.5           7            -2.5           0 \r\n 1993          323           10.6          5.5          -1.5           0 \r\n 1993          324           8.6           7            -5             0 \r\n 1993          325           8.7           11           -1             0 \r\n 1993          326           6.6           10.5         -2.5           0 \r\n 1993          327           7.6           8            -1             0 \r\n 1993          328           3.2           6            -0.5           0 \r\n 1993          329           5.3           1.5          -8             10 \r\n 1993          330           8            -6            -17            0 \r\n 1993          331           5.6          -6.5          -16            1 \r\n 1993          332           6.3          -4.5          -14            0 \r\n 1993          333           6.3          -1.5          -9.5           0 \r\n 1993          334           7.8          -2            -9             0 \r\n 1993          335           3.2           1            -5             0 \r\n 1993          336           9.1           2.5          -5             0 \r\n 1993          337           6.7           2.5          -6.5           0 \r\n 1993          338           3.8           2            -3.5           0 \r\n 1993          339           3.2           0.5          -3             0 \r\n 1993          340           7.2           1            -6.5           0.76 \r\n 1993          341           6.6           0            -7.5           0 \r\n 1993          342           7.1           4.5          -7             0 \r\n 1993          343           5.2           6.5          -3.5           0 \r\n 1993          344           5.2           4            -5             0 \r\n 1993          345           7.9           0.5          -13            0 \r\n 1993          346           5.1           5            -6.5           0 \r\n 1993          347           2.3           7.5          -1             0.51 \r\n 1993          348           3.1           3             0             8.64 \r\n 1993          349           7.7           4             0             1.52 \r\n 1993          350           6.2           5            -1.5           0 \r\n 1993          351           3.9           3             0             2.54 \r\n 1993          352           3.6           2            -1.5           0.76 \r\n 1993          353           7.2           1            -2.5           0 \r\n 1993          354           4.5           0            -6.5           0 \r\n 1993          355           3.4          -2            -12            0 \r\n 1993          356           6            -3.5          -13.5          0.51 \r\n 1993          357           6.7          -10           -17.5          0 \r\n 1993          358           4.2          -9.5          -17.5          0.25 \r\n 1993          359           5.5          -9            -17.5          1.52 \r\n 1993          360           4.8          -13.5         -17.5          2.54 \r\n 1993          361           5.7          -13.5         -20.5          0 \r\n 1993          362           5.2          -14           -28            0 \r\n 1993          363           7.6          -6            -22            0 \r\n 1993          364           6.2          -4            -21            0.76 \r\n 1993          365           5.5           2            -12.5          1.52 \r\n 1994          1             8.2           2            -8.5           0 \r\n 1994          2             3.8          -4            -10            2.29 \r\n 1994          3             4.7          -6.5          -20.5          6.35 \r\n 1994          4             6.8          -8            -17.5          0 \r\n 1994          5             3.2          -9            -15.5          0.25 \r\n 1994          6             6.3          -10           -17            1.02 \r\n 1994          7             5.9          -14           -25            0 \r\n 1994          8             5.5          -16           -25            0 \r\n 1994          9             4.1          -12           -23.5          0 \r\n 1994          10            5.9          -2            -15.5          0.76 \r\n 1994          11            5.7          -3.5          -18.5          1.27 \r\n 1994          12            8.8          -6.5          -15.5          0 \r\n 1994          13            6            -7.5          -18.5          1.27 \r\n 1994          14            6.8          -16.5         -26            0.76 \r\n 1994          15            6.5          -22.5         -31.5          0 \r\n 1994          16            5.3          -17           -29            1.02 \r\n 1994          17            7.3          -15           -26.5          1.78 \r\n 1994          18            7.1          -24           -31            0 \r\n 1994          19            5.2          -18.5         -31            1.02 \r\n 1994          20            5.9          -17           -31.5          1.78 \r\n 1994          21            8.1          -9            -27            0 \r\n 1994          22            7.7          -3.5          -16.5          0 \r\n 1994          23            10.1         -0.5          -12            0 \r\n 1994          24            9.9           1.5          -10            0 \r\n 1994          25            7.9          -2            -8             0.51 \r\n 1994          26            6.6          -4.5          -9             0.51 \r\n 1994          27            6.6          -5.5          -9.5           12.95 \r\n 1994          28            8.2          -5.5          -11            1.52 \r\n 1994          29            7.9          -7            -16.5          0.51 \r\n 1994          30            7.7          -14           -24.5          0 \r\n 1994          31            7.8          -18.5         -30.5          0 \r\n 1994          32            7.5          -14.5         -27            0 \r\n 1994          33            7.6          -10.5         -22.5          0.25 \r\n 1994          34            8.3          -9.5          -20.5          0.25 \r\n 1994          35            8.9          -8.5          -21.5          0 \r\n 1994          36            10.7         -7            -18.5          0 \r\n 1994          37            9.9          -5            -17.5          0 \r\n 1994          38            6.7          -13           -25            0.25 \r\n 1994          39            5.4          -18           -24            2.54 \r\n 1994          40            8.6          -17           -28.5          1.02 \r\n 1994          41            8.4          -13           -27            0 \r\n 1994          42            3.8          -7            -19.5          0 \r\n 1994          43            5.3          -5            -13.5          0.25 \r\n 1994          44            6.6          -3            -16            0 \r\n 1994          45            7             1.5          -11            0 \r\n 1994          46            6.8           2            -7             0 \r\n 1994          47            8.1           2            -8             0 \r\n 1994          48            6.8           4            -6.5           0 \r\n 1994          49            8             6.5          -2             0 \r\n 1994          50            5.8           8.5          -0.5           0 \r\n 1994          51            14.8          5            -8             0 \r\n 1994          52            15           -2.5          -10.5          0 \r\n 1994          53            7.2          -3.5          -9.5           0 \r\n 1994          54            5.4          -5.5          -12            10.41 \r\n 1994          55            7            -8            -19.5          0 \r\n 1994          56            7.3          -8.5          -18            4.83 \r\n 1994          57            5.7          -9            -20.5          0 \r\n 1994          58            6.7          -7            -19.5          0 \r\n 1994          59            5.4          -4            -11.5          0 \r\n 1994          60            8.9          -1            -13.5          0 \r\n 1994          61            10.7          2            -10.5          0 \r\n 1994          62            14.8          7            -4.5           0 \r\n 1994          63            17.2          11            0             0 \r\n 1994          64            13.5          12.5          0             0 \r\n 1994          65            7.8           11.5          0             0 \r\n 1994          66            15            3.5          -3.5           0 \r\n 1994          67            15.5          1            -6             0 \r\n 1994          68            15.9         -0.5          -8.5           0 \r\n 1994          69            16.9          0            -7             0 \r\n 1994          70            15.2          2.5          -7.5           0 \r\n 1994          71            14.4          6.5          -3.5           0 \r\n 1994          72            19.2          7.5          -2             0 \r\n 1994          73            12.1          11.5         -0.5           0 \r\n 1994          74            19            12            0             0 \r\n 1994          75            17.5          7            -5.5           0 \r\n 1994          76            11            7            -3             0 \r\n 1994          77            17.2          9            -0.5           0 \r\n 1994          78            13.7          11.5         -1             0 \r\n 1994          79            12.9          14            1             0 \r\n 1994          80            20            15           -1.5           1.02 \r\n 1994          81            21            18           -0.5           0 \r\n 1994          82            17.2          22            1.5           0.25 \r\n 1994          83            13.5          15.5         -4             0 \r\n 1994          84            17.4          4            -7             0 \r\n 1994          85            14.1          7.5          -3.5           0.51 \r\n 1994          86            12.1          8.5          -3.5           0.25 \r\n 1994          87            7.3           5            -2.5           0.25 \r\n 1994          88            11.7          2            -6.5           0 \r\n 1994          89            21.9          5            -7.5           0 \r\n 1994          90            23.5          11.5         -4.5           0 \r\n 1994          91            23            19           -2.5           0 \r\n 1994          92            13.4          16.5         -1             0 \r\n 1994          93            21.4          8            -7.5           0 \r\n 1994          94            9.8           13           -3             0 \r\n 1994          95            9.8           8.5          -7             3 \r\n 1994          96            20            3            -8             0 \r\n 1994          97            19.9          9            -6.5           0 \r\n 1994          98            12.4          14.5         -1             0 \r\n 1994          99            17.4          16.5          0             2 \r\n 1994          100           23.5          14           -0.5           0 \r\n 1994          101           10.8          14            0.5           0 \r\n 1994          102           2.8           12            2             8 \r\n 1994          103           22.7          12            3             19 \r\n 1994          104           18.1          19.5          3.5           0 \r\n 1994          105           13.6          19            4             7 \r\n 1994          106           25.2          15            2.5           0 \r\n 1994          107           22            20            1             0 \r\n 1994          108           22.2          27            4             0 \r\n 1994          109           24            29            3.5           0 \r\n 1994          110           7.5           16.5          1.5           0 \r\n 1994          111           20            14            2.5           4 \r\n 1994          112           26.6          17.5          1             0 \r\n 1994          113           25.7          22.5          3.5           0 \r\n 1994          114           19.5          28            11.5          0 \r\n 1994          115           15.4          29            15.5          5 \r\n 1994          116           21.8          26            12            2 \r\n 1994          117           8.9           15            2.5           0 \r\n 1994          118           1.7           5.5           1.5           0 \r\n 1994          119           13.5          5            -1             13 \r\n 1994          120           6.6           6.5           0.5           1 \r\n 1994          121           19.5          9            -0.5           3 \r\n 1994          122           20.7          14.5          0             0 \r\n 1994          123           21.7          17.5          2             0 \r\n 1994          124           11.3          19            5             0 \r\n 1994          125           9.5           16.5          4             6 \r\n 1994          126           11.7          11.5          3             11 \r\n 1994          127           13.4          13.5          4             5 \r\n 1994          128           21.3          17.5          2.5           0 \r\n 1994          129           25.6          20.5          4.5           0 \r\n 1994          130           26.1          24.5          5.5           0 \r\n 1994          131           23            27            11.5          0 \r\n 1994          132           27.8          24.5          7             0 \r\n 1994          133           21.9          25            8.5           0 \r\n 1994          134           6.2           25.5          12.5          0 \r\n 1994          135           27.3          22            10            5 \r\n 1994          136           28.7          25            8             0 \r\n 1994          137           27.4          26.5          11            0 \r\n 1994          138           29            27            9             0 \r\n 1994          139           28.8          27.5          10            0 \r\n 1994          140           30.5          28.5          9             0 \r\n 1994          141           27.2          29.5          11            0 \r\n 1994          142           20.9          30            15            0 \r\n 1994          143           14.5          29            16            0 \r\n 1994          144           20.4          26.5          14.5          15 \r\n 1994          145           16.4          24.5          12            0 \r\n 1994          146           25.5          21.5          7.5           3 \r\n 1994          147           29.5          21.5          6.5           0 \r\n 1994          148           29.9          26            10            0 \r\n 1994          149           18            27.5          16            2 \r\n 1994          150           28.1          30            16            0 \r\n 1994          151           27.4          32            14.5          0 \r\n 1994          152           12.5          26.5          10.5          0 \r\n 1994          153           19.7          21            12            1 \r\n 1994          154           30.2          22.5          8             0 \r\n 1994          155           27.7          26            9.5           0 \r\n 1994          156           16.1          27            15            18 \r\n 1994          157           26.8          28            17            7 \r\n 1994          158           12.4          28            17.5          6 \r\n 1994          159           15.7          23            13            0 \r\n 1994          160           18.9          22            11            0 \r\n 1994          161           20            24.5          12            0 \r\n 1994          162           27.4          26.5          12.5          7 \r\n 1994          163           16.6          27            13            0 \r\n 1994          164           27.2          28.5          16            34 \r\n 1994          165           28.1          30.5          20            0 \r\n 1994          166           18            32.5          22.5          0 \r\n 1994          167           18.3          30.5          20.5          0 \r\n 1994          168           21.4          31            22            0 \r\n 1994          169           24.2          31.5          19.5          7 \r\n 1994          170           18.2          31.5          19.5          5 \r\n 1994          171           10.8          31            20.5          0 \r\n 1994          172           29.5          29            18            12 \r\n 1994          173           15            28            15.5          0 \r\n 1994          174           6.1           25            16.5          67 \r\n 1994          175           24.1          24            14.5          15 \r\n 1994          176           13.2          27            15            0 \r\n 1994          177           25.5          26            15            10 \r\n 1994          178           19.7          26.5          14.5          0 \r\n 1994          179           21.7          27            16            0 \r\n 1994          180           24.7          25.5          16            1 \r\n 1994          181           30.2          26.5          12.5          0 \r\n 1994          182           28.4          27.5          15.5          6 \r\n 1994          183           25.7          26.5          13.5          0 \r\n 1994          184           9.3           24            13.5          0 \r\n 1994          185           15.8          25            17            17 \r\n 1994          186           18.2          29.5          19.5          12 \r\n 1994          187           18.9          29.5          20            2 \r\n 1994          188           18.4          29            19.5          0 \r\n 1994          189           7.9           26.5          13.5          14 \r\n 1994          190           19.1          21            14            0 \r\n 1994          191           27.6          25            12.5          0 \r\n 1994          192           18.7          26.5          16.5          0 \r\n 1994          193           8.5           28            17.5          5 \r\n 1994          194           3.3           22            14.5          15 \r\n 1994          195           12.1          22            15.5          15 \r\n 1994          196           24            24.5          13.5          0 \r\n 1994          197           14.6          26.5          15.5          15 \r\n 1994          198           26.8          27            15.5          10 \r\n 1994          199           22.2          28            15.5          0 \r\n 1994          200           10.8          29            17.5          9 \r\n 1994          201           20.9          28.5          14.5          4 \r\n 1994          202           16.3          27.5          14.5          0 \r\n 1994          203           22.5          25            15            3 \r\n 1994          204           27.3          27.5          14            0 \r\n 1994          205           24            28            13.5          0 \r\n 1994          206           24.7          26            14            0 \r\n 1994          207           20.8          24.5          10.5          0 \r\n 1994          208           22.9          23.5          12            0 \r\n 1994          209           21.6          24.5          10.5          0 \r\n 1994          210           24.3          25.5          12            0 \r\n 1994          211           23.1          26            13            0 \r\n 1994          212           22.2          28.5          16            0 \r\n 1994          213           18.8          30            17            15 \r\n 1994          214           16.3          28            17            0 \r\n 1994          215           9.2           26            18.5          0 \r\n 1994          216           17.2          25            17            7 \r\n 1994          217           27.8          23            8             0 \r\n 1994          218           23.1          22            10            0 \r\n 1994          219           17.7          25            13.5          0 \r\n 1994          220           18.2          26            15            10 \r\n 1994          221           7.4           21            10.5          0 \r\n 1994          222           5.2           22            13.5          14 \r\n 1994          223           6.7           22            14            2 \r\n 1994          224           4.4           21.5          15            10 \r\n 1994          225           12.3          25            16.5          19 \r\n 1994          226           26.3          24            7.5           0 \r\n 1994          227           26.8          22.5          7.5           0 \r\n 1994          228           25.2          24.5          10.5          0 \r\n 1994          229           10.2          26.5          14.5          0 \r\n 1994          230           19.2          28            15.5          0 \r\n 1994          231           18.9          28            17            0 \r\n 1994          232           19.1          26            13            0 \r\n 1994          233           20.6          24.5          11            0 \r\n 1994          234           22.1          25            11.5          0 \r\n 1994          235           19.4          26.5          14            0 \r\n 1994          236           24.5          30            14.5          0 \r\n 1994          237           10.7          31.5          16.5          0 \r\n 1994          238           19            29            16            19 \r\n 1994          239           18            29.5          17            0 \r\n 1994          240           17.8          30            13            0 \r\n 1994          241           16.1          22.5          9             0 \r\n 1994          242           9.3           23.5          13            0 \r\n 1994          243           14.9          22.5          12            0 \r\n 1994          244           11.6          20            9             0 \r\n 1994          245           1.5           18            10.5          6 \r\n 1994          246           15.2          18            12            9 \r\n 1994          247           1.5           21.5          13.5          7 \r\n 1994          248           18.7          20.5          14            17 \r\n 1994          249           21.6          25.5          10.5          0 \r\n 1994          250           19.3          25.5          9.5           0 \r\n 1994          251           21.2          28            11.5          0 \r\n 1994          252           20.7          29.5          14            0 \r\n 1994          253           17.8          30            14            0 \r\n 1994          254           19.4          28.5          15.5          0 \r\n 1994          255           13.9          29            16.5          0 \r\n 1994          256           19.8          31            18.5          0 \r\n 1994          257           19.3          32.5          19.5          0 \r\n 1994          258           10.9          31.5          20            0 \r\n 1994          259           16.6          26.5          13            5 \r\n 1994          260           21.4          24            9.5           0 \r\n 1994          261           21.3          25            8.5           0 \r\n 1994          262           21            27.5          9             0 \r\n 1994          263           8.9           27.5          11.5          0 \r\n 1994          264           11.7          26.5          14            4 \r\n 1994          265           2.7           22            10.5          27 \r\n 1994          266           9.2           13            6             7 \r\n 1994          267           5.3           17            8             2 \r\n 1994          268           10.1          21.5          13.5          6 \r\n 1994          269           6.9           20.5          7.5           2 \r\n 1994          270           12.6          15            5             0 \r\n 1994          271           19.1          20            5             0 \r\n 1994          272           16.3          22            4.5           0 \r\n 1994          273           13.6          24.5          9.5           0 \r\n 1994          274           8.6           25            12.5          0 \r\n 1994          275           5             16.5          8.5           6 \r\n 1994          276           6.1           14.5          8             15 \r\n 1994          277           10.5          15.5          9.5           0 \r\n 1994          278           14.3          19            9.5           0 \r\n 1994          279           8.4           22.5          11            0 \r\n 1994          280           7.8           21.5          11.5          19 \r\n 1994          281           15.1          16            6.5           0 \r\n 1994          282           17.1          15            2.5           0 \r\n 1994          283           17            16           -0.5           0 \r\n 1994          284           17            17.5          1             0 \r\n 1994          285           16.3          18.5          1.5           0 \r\n 1994          286           14            20.5          3             0 \r\n 1994          287           12.7          20.5          3.5           0 \r\n 1994          288           3.1           17.5          8             0 \r\n 1994          289           3.7           16.5          13.5          8 \r\n 1994          290           3             18            15            14 \r\n 1994          291           13.5          19            13.5          16 \r\n 1994          292           8.8           18.5          8             0 \r\n 1994          293           15.2          19            3.5           0 \r\n 1994          294           12.9          21.5          5.5           0 \r\n 1994          295           8.7           21            9             0 \r\n 1994          296           12.6          15            3.5           0 \r\n 1994          297           11.5          12            2.5           0 \r\n 1994          298           8.8           8            -1             0 \r\n 1994          299           13            9.5          -5             0 \r\n 1994          300           11.6          16           -1.5           0 \r\n 1994          301           9.9           19.5          6             0 \r\n 1994          302           11.5          18            6.5           0 \r\n 1994          303           6.9           14.5          0             0 \r\n 1994          304           9.6           14            0.5           0 \r\n 1994          305           6.5           12.5         -3.5           0 \r\n 1994          306           9.6           13.5          1.5           0 \r\n 1994          307           4             14.5          5             0 \r\n 1994          308           4.9           8.5           2             1 \r\n 1994          309           6.5           8            -1             0 \r\n 1994          310           12.3          10           -2             0 \r\n 1994          311           11.2          15            0.5           0 \r\n 1994          312           3             16.5          5.5           0 \r\n 1994          313           8.1           11.5          3             0 \r\n 1994          314           9.6           11           -4.5           0 \r\n 1994          315           4.4           10           -2             0 \r\n 1994          316           4.1           10            2             0 \r\n 1994          317           1.9           13.5          7             0 \r\n 1994          318           10.8          12.5          2             3 \r\n 1994          319           10.3          10.5         -4             0 \r\n 1994          320           9.6           10           -5             0 \r\n 1994          321           6.5           11           -1             0 \r\n 1994          322           8.6           11.5         -1             0 \r\n 1994          323           4.3           3            -9             0 \r\n 1994          324           1.6           4.5          -3.5           0 \r\n 1994          325           9.1           5.5          -0.5           16 \r\n 1994          326           10.3          3            -8             0 \r\n 1994          327           10.4          4.5          -7             0 \r\n 1994          328           8.6           7.5          -4             0 \r\n 1994          329           9.5           8            -5.5           0 \r\n 1994          330           7.2           6.5          -4.5           0 \r\n 1994          331           1.4           3.5          -2.5           5 \r\n 1994          332           4.8           0.5          -5             8 \r\n 1994          333           3.1          -3            -6.5           0 \r\n 1994          334           7.8          -1            -10.5          0 \r\n 1994          335           5.9           6.5          -6.5           0 \r\n 1994          336           8.9           10.5         -3             0 \r\n 1994          337           2.6           7.5          -1.5           0 \r\n 1994          338           1.4           3.5          -2.5           0 \r\n 1994          339           5.4           3            -9.5           0 \r\n 1994          340           3.7          -6.5          -10            1.52 \r\n 1994          341           4.4          -6.5          -9.5           12.7 \r\n 1994          342           1            -4            -9.5           0.25 \r\n 1994          343           2.6          -4            -11.5          0.51 \r\n 1994          344           3.7          -7            -15.5          0 \r\n 1994          345           2.9          -9            -23.5          0 \r\n 1994          346           3.4          -9.5          -20            0 \r\n 1994          347           3.8          -7            -17            0 \r\n 1994          348           2.1          -7            -14            0 \r\n 1994          349           3.1          -2.5          -9.5           6.1 \r\n 1994          350           5.8           0            -8.5           0 \r\n 1994          351           7.7           0.5          -9             1.02 \r\n 1994          352           3.5          -2            -12.5          0 \r\n 1994          353           6            -2            -13.5          0 \r\n 1994          354           5.2           2            -7.5           0 \r\n 1994          355           7.2           2.5          -2.5           0 \r\n 1994          356           8             2            -2.5           0 \r\n 1994          357           7.8           1            -9             0 \r\n 1994          358           8             1            -11            0 \r\n 1994          359           6             1.5          -10.5          0 \r\n 1994          360           6.8           2.5          -8.5           0 \r\n 1994          361           8.1           3.5          -5             0 \r\n 1994          362           4.1           3            -4.5           0 \r\n 1994          363           5.3          -1            -9             0 \r\n 1994          364           1.6          -0.5          -6             0 \r\n 1994          365           4.6          -1.5          -8.5           1.27 \r\n 1995          1             5.3          -6            -17            0 \r\n 1995          2             4.9          -10           -17            0 \r\n 1995          3             6            -9            -19.5          0 \r\n 1995          4             6            -16           -23.5          0 \r\n 1995          5             7            -12.5         -22            0 \r\n 1995          6             4.2          -4.5          -17            5.33 \r\n 1995          7             5.4          -7            -23            0.25 \r\n 1995          8             5.8          -11.5         -20.5          0 \r\n 1995          9             3.9          -9            -15.5          0 \r\n 1995          10            7.1          -7            -12            0 \r\n 1995          11            4.3          -2            -7.5           0 \r\n 1995          12            7             0.5          -2.5           0 \r\n 1995          13            5.3           0            -4             0 \r\n 1995          14            4.8          -2.5          -8.5           0 \r\n 1995          15            7.5          -3            -12.5          0 \r\n 1995          16            4.5          -1            -9             0 \r\n 1995          17            6.1           1.5          -5             2.03 \r\n 1995          18            8.9           0.5          -12            0 \r\n 1995          19            8.2          -2            -10.5          0 \r\n 1995          20            6.3          -3            -10.5          0 \r\n 1995          21            8.1          -7            -12.5          0 \r\n 1995          22            4.6          -7.5          -13.5          0.51 \r\n 1995          23            8.8          -8.5          -16.5          0.25 \r\n 1995          24            9.4          -7            -18            0 \r\n 1995          25            10.3         -5.5          -16            0 \r\n 1995          26            10.6         -3            -14.5          0 \r\n 1995          27            3.8          -1.5          -11            2.03 \r\n 1995          28            8.7          -1            -7             6.35 \r\n 1995          29            7.4          -2.5          -9.5           0 \r\n 1995          30            7.3          -5            -13.5          0 \r\n 1995          31            7.9           0.5          -10.5          0 \r\n 1995          32            6             3            -5.5           0 \r\n 1995          33            9.3           1            -4.5           1.02 \r\n 1995          34            5.7           1.5          -5.5           0 \r\n 1995          35            7            -1.5          -12.5          0 \r\n 1995          36            9.8          -6.5          -17            0 \r\n 1995          37            5.5          -8.5          -19            0 \r\n 1995          38            8.9          -7            -15            0 \r\n 1995          39            9.3          -7.5          -19            0 \r\n 1995          40            8            -1            -13            0 \r\n 1995          41            12.1          1.5          -12            0 \r\n 1995          42            10.3         -7.5          -22.5          0 \r\n 1995          43            12.7         -12           -21.5          0 \r\n 1995          44            11.7         -8.5          -19            0 \r\n 1995          45            6.1          -7            -16.5          0 \r\n 1995          46            11.9         -3            -12.5          0.25 \r\n 1995          47            7.1          -1.5          -18            0 \r\n 1995          48            7             2.5          -14            0 \r\n 1995          49            8.2           6            -4.5           0 \r\n 1995          50            11.9          5.5          -7             0 \r\n 1995          51            14            4.5          -4.5           0 \r\n 1995          52            9.4           3.5          -6.5           0 \r\n 1995          53            12.8          6            -3.5           0 \r\n 1995          54            11.2          6.5          -2             0 \r\n 1995          55            10.1          4            -6             0 \r\n 1995          56            15.2          5.5          -4.5           0 \r\n 1995          57            6.1           4.5          -4             0 \r\n 1995          58            7.4          -1            -4.5           1.02 \r\n 1995          59            14.7         -2            -14            0 \r\n 1995          60            14.5         -7            -17            0 \r\n 1995          61            16.2         -7            -18            0 \r\n 1995          62            16           -2            -14.5          0 \r\n 1995          63            8.7           2.5          -9             0 \r\n 1995          64            4.4           1            -5.5           2.79 \r\n 1995          65            2.3          -0.5          -5             2.03 \r\n 1995          66            4.2          -2.5          -13            14.48 \r\n 1995          67            4.3          -10.5         -22.5          0 \r\n 1995          68            3.9          -8.5          -23            0 \r\n 1995          69            8.2           2.5          -13            0 \r\n 1995          70            16            10            0.5           0 \r\n 1995          71            8.7           15            4             0 \r\n 1995          72            7.1           15.5          7.5           1.27 \r\n 1995          73            5.3           14.5          6.5           7.37 \r\n 1995          74            19            16            0.5           1.02 \r\n 1995          75            16.4          19.5          2             0 \r\n 1995          76            18.8          18.5          3             0 \r\n 1995          77            5             12            3             2.29 \r\n 1995          78            5.8           7             1.5           2.03 \r\n 1995          79            5.9           8.5           1             7.37 \r\n 1995          80            15.9          8            -2             0 \r\n 1995          81            9.8           9.5          -0.5           0.76 \r\n 1995          82            7.4           9             1.5           2.79 \r\n 1995          83            20.2          10.5         -0.5           0 \r\n 1995          84            3.3           10.5          1.5           4.06 \r\n 1995          85            5.1           10            3.5           23.88 \r\n 1995          86            5.2           8.5           2             1.52 \r\n 1995          87            5.7           4             0.5           2.54 \r\n 1995          88            7.4           3.5           0             0.25 \r\n 1995          89            7.5           3            -2             0.25 \r\n 1995          90            7.7           1.5          -2             0 \r\n 1995          91            17            5            -3             0 \r\n 1995          92            20.5          16           -3             0 \r\n 1995          93            17.2          22           -1             0 \r\n 1995          94            21.2          12.5         -12            0 \r\n 1995          95            17.6          11.5         -8             0 \r\n 1995          96            23.7          19           -0.5           0 \r\n 1995          97            6             11.5          2.5           0 \r\n 1995          98            7.1           8             2.5           14 \r\n 1995          99            3.5           6.5           0             5 \r\n 1995          100           2.4           2.5          -1.5           6 \r\n 1995          101           3.3           3            -1.5           6 \r\n 1995          102           6.6           4.5           0.5           16 \r\n 1995          103           24.3          10            0             0 \r\n 1995          104           18.5          16            1.5           0 \r\n 1995          105           13.6          15            5             0 \r\n 1995          106           5.4           15            4             0 \r\n 1995          107           8.9           8.5           3             4 \r\n 1995          108           8.9           12.5          3.5           4 \r\n 1995          109           23.3          14.5          0             5 \r\n 1995          110           5.5           12            1             0 \r\n 1995          111           10.1          8.5           0.5           17 \r\n 1995          112           27.3          12            0             0 \r\n 1995          113           24            15            0.5           0 \r\n 1995          114           19            15            3.5           0 \r\n 1995          115           20.9          14.5          0             0 \r\n 1995          116           7.4           14.5          2.5           5 \r\n 1995          117           15            12           -0.5           3 \r\n 1995          118           13.4          14            0             0 \r\n 1995          119           5.8           13.5          5             5 \r\n 1995          120           12.7          13            5.5           11 \r\n 1995          121           12.9          13            5             0 \r\n 1995          122           18.4          14            3             0 \r\n 1995          123           8.3           14.5          5.5           0 \r\n 1995          124           8.3           13            6             6 \r\n 1995          125           22.6          16            3             1 \r\n 1995          126           15            20.5          5.5           0 \r\n 1995          127           11            19            10            0 \r\n 1995          128           5.6           18.5          11.5          5 \r\n 1995          129           8.9           16.5          10            11 \r\n 1995          130           7.1           15            7.5           2 \r\n 1995          131           21            16            6             0 \r\n 1995          132           19.2          18.5          5             0 \r\n 1995          133           10.9          20.5          9             11 \r\n 1995          134           24.2          20            8             12 \r\n 1995          135           25.3          20.5          5             0 \r\n 1995          136           15.5          24            9.5           0 \r\n 1995          137           27.6          24            6             0 \r\n 1995          138           25.7          19            7             0 \r\n 1995          139           29.5          22            6             0 \r\n 1995          140           26.8          24.5          8             0 \r\n 1995          141           28.6          21.5          5.5           0 \r\n 1995          142           15.5          23.5          9.5           0 \r\n 1995          143           14.3          21            8             16 \r\n 1995          144           27.3          18            6             3 \r\n 1995          145           27.1          21            6.5           0 \r\n 1995          146           10.4          20            9.5           0 \r\n 1995          147           5.5           19            11.5          0 \r\n 1995          148           5.7           16.5          10.5          44 \r\n 1995          149           27.9          20            8             4 \r\n 1995          150           28.5          24.5          9.5           0 \r\n 1995          151           13.6          25            11.5          0 \r\n 1995          152           11.3          22            13.5          0 \r\n 1995          153           15.2          22            14            4 \r\n 1995          154           27.6          24.5          12            2 \r\n 1995          155           14.7          26.5          14.5          0 \r\n 1995          156           10.6          26            16.5          0 \r\n 1995          157           23.5          26.5          16.5          17 \r\n 1995          158           23.1          28            16.5          15 \r\n 1995          159           7.7           23.5          6.5           0 \r\n 1995          160           11.1          15            8.5           5 \r\n 1995          161           11.1          18.5          11            2 \r\n 1995          162           25.9          20            8.5           0 \r\n 1995          163           31.6          23.5          9             0 \r\n 1995          164           28.8          26.5          10.5          0 \r\n 1995          165           27            28            14            0 \r\n 1995          166           25.6          28.5          16            0 \r\n 1995          167           28.2          30.5          19            0 \r\n 1995          168           27.3          32.5          20.5          0 \r\n 1995          169           24.7          33            20.5          0 \r\n 1995          170           24.8          31.5          18            0 \r\n 1995          171           29.4          32            18.5          0 \r\n 1995          172           27            33            18.5          0 \r\n 1995          173           25.9          33.5          21            0 \r\n 1995          174           24.6          33.5          19            0 \r\n 1995          175           22.5          31            19.5          21 \r\n 1995          176           6.1           27            18.5          0 \r\n 1995          177           7.4           24.5          17.5          16 \r\n 1995          178           11.1          24.5          17.5          16 \r\n 1995          179           13.6          25            18            14 \r\n 1995          180           25.9          24            17            15 \r\n 1995          181           21            22            13            0 \r\n 1995          182           25.9          20.5          8.5           0 \r\n 1995          183           25.1          22.5          10            0 \r\n 1995          184           21.5          25.5          13.5          0 \r\n 1995          185           13.3          26            17.5          5 \r\n 1995          186           12.9          25            16            4 \r\n 1995          187           28.1          24.5          12.5          1 \r\n 1995          188           20.6          25            12.5          0 \r\n 1995          189           21.5          27            13.5          0 \r\n 1995          190           29.8          28.5          16.5          0 \r\n 1995          191           27.6          29.5          18            0 \r\n 1995          192           27.7          32.5          19.5          0 \r\n 1995          193           28.6          34            21.5          0 \r\n 1995          194           27.9          37            23            0 \r\n 1995          195           27.9          37            24.5          0 \r\n 1995          196           11.6          33.5          20.5          19 \r\n 1995          197           19.3          29            19.5          17 \r\n 1995          198           29.6          28.5          15.5          0 \r\n 1995          199           27.4          29            14            0 \r\n 1995          200           13.6          27.5          16            0 \r\n 1995          201           24.3          26            16            10 \r\n 1995          202           26.6          27.5          13.5          0 \r\n 1995          203           19.7          28            16.5          6 \r\n 1995          204           21.2          28            16            5 \r\n 1995          205           27.7          29            15.5          2 \r\n 1995          206           18.8          29.5          16.5          0 \r\n 1995          207           26.3          28.5          16            9 \r\n 1995          208           22.9          28.5          17.5          0 \r\n 1995          209           29.2          31.5          16.5          0 \r\n 1995          210           28.3          32            18            0 \r\n 1995          211           27.3          32.5          20.5          0 \r\n 1995          212           9.4           31.5          18.5          0 \r\n 1995          213           22.4          25            12.5          11 \r\n 1995          214           13.6          24.5          14.5          0 \r\n 1995          215           18.8          27            18.5          0 \r\n 1995          216           17.2          29.5          19            0 \r\n 1995          217           15.2          29.5          17.5          10 \r\n 1995          218           17.5          28.5          18.5          9 \r\n 1995          219           19.1          28.5          19.5          0 \r\n 1995          220           23.2          30.5          21            0 \r\n 1995          221           24.4          31            22            0 \r\n 1995          222           21.8          29.5          20            11 \r\n 1995          223           26            31.5          21            20 \r\n 1995          224           25.1          32            22            0 \r\n 1995          225           19            32.5          23            0 \r\n 1995          226           14.3          31.5          18.5          10 \r\n 1995          227           9.8           25.5          18            0 \r\n 1995          228           12.1          25.5          19.5          1 \r\n 1995          229           20.5          29            20            2 \r\n 1995          230           24.6          31            21.5          0 \r\n 1995          231           26            31            16            0 \r\n 1995          232           23            26.5          12            0 \r\n 1995          233           25.4          29            13.5          0 \r\n 1995          234           14.4          28.5          14.5          0 \r\n 1995          235           17.6          28            17            3 \r\n 1995          236           22            30.5          19            0 \r\n 1995          237           23.7          31            17            0 \r\n 1995          238           16.2          30.5          17            0 \r\n 1995          239           18.4          31            19            0 \r\n 1995          240           17.6          32            20.5          0 \r\n 1995          241           12            31            19.5          68 \r\n 1995          242           18.3          30.5          20.5          16 \r\n 1995          243           15.3          30.5          15.5          0 \r\n 1995          244           23.7          24.5          12            0 \r\n 1995          245           16.7          26.5          13            0 \r\n 1995          246           21.9          28            15.5          1 \r\n 1995          247           23.4          28.5          14.5          0 \r\n 1995          248           10.4          28            15            0 \r\n 1995          249           11            28            17            21 \r\n 1995          250           8.1           26            11.5          4 \r\n 1995          251           22.8          16            4             0 \r\n 1995          252           22.6          19            4             0 \r\n 1995          253           20.5          20.5          5.5           0 \r\n 1995          254           15            22            7             0 \r\n 1995          255           10.9          22.5          11.5          3 \r\n 1995          256           20.1          25.5          13            4 \r\n 1995          257           19.4          27            9             0 \r\n 1995          258           19.2          24.5          9.5           0 \r\n 1995          259           17.4          27            12.5          0 \r\n 1995          260           17.5          24            6             0 \r\n 1995          261           8.5           18.5          8.5           0 \r\n 1995          262           5.4           16.5          9             43 \r\n 1995          263           4.8           11            3             12 \r\n 1995          264           7.4           10            2             1 \r\n 1995          265           17.1          10.5         -1.5           0 \r\n 1995          266           12.4          12.5         -0.5           0 \r\n 1995          267           12.3          14.5          3.5           4 \r\n 1995          268           18.2          18            2.5           3 \r\n 1995          269           18            22.5          4             0 \r\n 1995          270           17.6          26            4.5           0 \r\n 1995          271           15.9          26.5          7             0 \r\n 1995          272           3.5           24            12.5          0 \r\n 1995          273           9.8           23            13            13 \r\n 1995          274           18.7          24            9             0 \r\n 1995          275           8.3           21.5          9             0 \r\n 1995          276           16.5          20            5             5 \r\n 1995          277           13.1          20.5          5             0 \r\n 1995          278           3.4           20.5          8             0 \r\n 1995          279           4.9           13            8             13 \r\n 1995          280           13.8          12            5.5           1 \r\n 1995          281           5.5           15            2             0 \r\n 1995          282           14.2          16.5          5             4 \r\n 1995          283           17            20            5             0 \r\n 1995          284           16.5          25.5          8             0 \r\n 1995          285           15            29            13            0 \r\n 1995          286           4.7           27            12            0 \r\n 1995          287           12.8          14.5          4.5           0 \r\n 1995          288           14.1          12.5          0             0 \r\n 1995          289           13.8          15           -1.5           0 \r\n 1995          290           13.4          19.5          3.5           0 \r\n 1995          291           10.7          21            2             0 \r\n 1995          292           4.6           17.5          5             0 \r\n 1995          293           4.7           11.5          3             0 \r\n 1995          294           11.8          7             0.5           0 \r\n 1995          295           10.3          10.5         -4.5           0 \r\n 1995          296           4             14           -1             10 \r\n 1995          297           13.1          14            0.5           10 \r\n 1995          298           12.8          13.5          0             0 \r\n 1995          299           5.6           16            1             0 \r\n 1995          300           4             12.5          3.5           0 \r\n 1995          301           9.6           9.5           3.5           2 \r\n 1995          302           4.2           8.5          -0.5           1 \r\n 1995          303           5.5           5            -0.5           4 \r\n 1995          304           2.5           4            -1             2 \r\n 1995          305           2.7           3             0             5 \r\n 1995          306           9.5           2.5          -3             10 \r\n 1995          307           10.4         -1.5          -8.5           0 \r\n 1995          308           12.7          1            -13            0 \r\n 1995          309           9.5           5.5          -7             1 \r\n 1995          310           8.5           8             0             0 \r\n 1995          311           4.8           7            -4             0 \r\n 1995          312           8.3          -1.5          -10            0 \r\n 1995          313           8.3           4.5          -7             1 \r\n 1995          314           4             10.5         -5             0 \r\n 1995          315           11.6         -2.5          -11.5          0 \r\n 1995          316           8.4          -1            -10            0 \r\n 1995          317           6.9           1            -6.5           0 \r\n 1995          318           6.8           1            -6.5           0 \r\n 1995          319           4.9           2.5          -7.5           0 \r\n 1995          320           6.1           3.5          -5             0 \r\n 1995          321           4.2           3            -3.5           0 \r\n 1995          322           9.7           5.5          -3             0 \r\n 1995          323           8             8            -1.5           0 \r\n 1995          324           8.4           9            -1.5           0 \r\n 1995          325           9.9           4.5          -6.5           0 \r\n 1995          326           7.5           4            -10            0 \r\n 1995          327           7             2            -12            0 \r\n 1995          328           5.8          -0.5          -13            0 \r\n 1995          329           6.6           3            -7             0 \r\n 1995          330           3.8           3            -3.5           0 \r\n 1995          331           2.7           2            -7.5           3 \r\n 1995          332           4.2          -5            -15.5          2 \r\n 1995          333           4.5          -5.5          -16            0 \r\n 1995          334           4.9           3.5          -10            0 \r\n 1995          335           8.7           7            -3.5           0 \r\n 1995          336           8.4           7            -3             0 \r\n 1995          337           9             11           -2.5           0 \r\n 1995          338           4.3           7            -8.5           0 \r\n 1995          339           8.2           4.5          -6             0 \r\n 1995          340           7.7           1            -8.5           0 \r\n 1995          341           5.3          -0.5          -10.5          0 \r\n 1995          342           2.9          -1            -13.5          3.05 \r\n 1995          343           4.5          -7.5          -22            3.56 \r\n 1995          344           3.7          -14.5         -22            0 \r\n 1995          345           3            -12.5         -20.5          0 \r\n 1995          346           3.1          -13           -18            0 \r\n 1995          347           1.4          -6            -15            0.25 \r\n 1995          348           6.7           2            -9.5           1.02 \r\n 1995          349           7.1           3.5          -12            0 \r\n 1995          350           7             0            -10.5          0 \r\n 1995          351           3.4           2.5          -7             0 \r\n 1995          352           4.7           1            -3.5           0 \r\n 1995          353           4.7           0.5          -4             0 \r\n 1995          354           5.4          -1            -9.5           0 \r\n 1995          355           4.4          -5            -9             0 \r\n 1995          356           6.1          -6            -11.5          0 \r\n 1995          357           6.2          -5            -9.5           0 \r\n 1995          358           4.3          -3.5          -7.5           0 \r\n 1995          359           5.9          -3            -7             0 \r\n 1995          360           5.6          -1.5          -7.5           0 \r\n 1995          361           5.2          -1            -9             0 \r\n 1995          362           8.1          -2.5          -15            0 \r\n 1995          363           4.4          -1            -12            0 \r\n 1995          364           2.4           0            -5.5           0 \r\n 1995          365           3.7           0            -1.5           0.51 \r\n 1996          1             4.3           0.5          -2             0.25 \r\n 1996          2             4.6          -0.5          -7.5           0.76 \r\n 1996          3             5.4          -5            -19.5          0 \r\n 1996          4             5.1          -7.5          -18            1.02 \r\n 1996          5             5.9          -10.5         -22.5          0 \r\n 1996          6             5.5          -17           -25.5          0 \r\n 1996          7             5.8          -16           -26            0 \r\n 1996          8             4.1          -7            -21            0 \r\n 1996          9             6.2           1            -9             0 \r\n 1996          10            2.9           0.5          -2.5           0 \r\n 1996          11            3.9           0            -2.5           2.54 \r\n 1996          12            8.8           2            -6.5           0 \r\n 1996          13            7.9           8.5          -4.5           0 \r\n 1996          14            5.8           8.5          -6.5           0 \r\n 1996          15            3.5          -2.5          -16            0 \r\n 1996          16            7.9           2.5          -10.5          0 \r\n 1996          17            3             6.5          -6.5           0.51 \r\n 1996          18            3             8.5          -17            12.95 \r\n 1996          19            7.6          -12           -25            5.33 \r\n 1996          20            7.6          -14.5         -23            0 \r\n 1996          21            7.8          -5            -16.5          0 \r\n 1996          22            7.8          -1.5          -14            0 \r\n 1996          23            3.8          -8.5          -17            0.51 \r\n 1996          24            6.7          -10           -18            3.56 \r\n 1996          25            4.8          -10.5         -19.5          1.52 \r\n 1996          26            3.7          -11           -17.5          2.29 \r\n 1996          27            7.2          -12           -20.5          8.13 \r\n 1996          28            7.9          -8.5          -21            0 \r\n 1996          29            7.8          -3.5          -22.5          0.25 \r\n 1996          30            9.1          -18.5         -26            0 \r\n 1996          31            9.5          -18.5         -29            0 \r\n 1996          32            5.4          -16.5         -29.5          0 \r\n 1996          33            5.7          -22.5         -34.5          0 \r\n 1996          34            5.8          -24           -33.5          0 \r\n 1996          35            6            -17           -31            0 \r\n 1996          36            5.8          -10.5         -24            0 \r\n 1996          37            6.1          -4            -18            0 \r\n 1996          38            8             4            -8             0 \r\n 1996          39            12            7.5           0             0.51 \r\n 1996          40            11.4          8.5          -2.5           0 \r\n 1996          41            8.3           8            -1.5           0 \r\n 1996          42            8             3.5          -3.5           0 \r\n 1996          43            10.1         -1.5          -6             0 \r\n 1996          44            11.2          1            -6             0 \r\n 1996          45            8.8           3            -3.5           0 \r\n 1996          46            7.8          -1.5          -9.5           0.25 \r\n 1996          47            9            -5            -18.5          0.76 \r\n 1996          48            9.3          -1.5          -15            0 \r\n 1996          49            6.6          -4            -13.5          0.25 \r\n 1996          50            11.2          1.5          -10            0.51 \r\n 1996          51            13.5          7.5          -4.5           0 \r\n 1996          52            7.8           4.5          -4             0 \r\n 1996          53            3.7           2            -2.5           0 \r\n 1996          54            8.9           6            -0.5           0.25 \r\n 1996          55            16.3          10.5         -2             0 \r\n 1996          56            13.1          13.5         -1.5           0 \r\n 1996          57            7.9           9            -3.5           0 \r\n 1996          58            10.3          0.5          -8.5           0 \r\n 1996          59            14.3         -6            -17.5          0 \r\n 1996          60            16.3         -6.25         -18.25         0 \r\n 1996          61            13.5         -6.5          -19            0 \r\n 1996          62            14.3         -2.5          -15.5          0 \r\n 1996          63            14.8         -3.5          -13.5          0 \r\n 1996          64            9.3          -6.5          -19.5          0 \r\n 1996          65            9            -0.5          -14.5          0 \r\n 1996          66            7.6           1.5          -8             1.52 \r\n 1996          67            11.5         -3            -14            0 \r\n 1996          68            13.3         -10           -21.5          0 \r\n 1996          69            15.9         -10           -21.5          0 \r\n 1996          70            14.1         -3            -18.5          0 \r\n 1996          71            13.6          4.5          -11.5          0 \r\n 1996          72            15.9          11           -4             0 \r\n 1996          73            18.6          14.5          0             0 \r\n 1996          74            16.6          17.5          0             0.25 \r\n 1996          75            19.5          16           -0.5           0 \r\n 1996          76            15.8          9.5          -4             0 \r\n 1996          77            20.1          10.5         -4.5           2.03 \r\n 1996          78            15.2          10           -3.5           0 \r\n 1996          79            8.9           6.5          -5.5           0 \r\n 1996          80            19.1          1.5          -7             0 \r\n 1996          81            19.4          1.5          -5.5           0 \r\n 1996          82            22            4            -11            0 \r\n 1996          83            7.9           5.5          -9.5           0 \r\n 1996          84            3.6           8            -5.5           6.35 \r\n 1996          85            9             8.5          -1.5           29.97 \r\n 1996          86            12.8          4.5          -12.5          0.51 \r\n 1996          87            18.4         -7.5          -16.5          0 \r\n 1996          88            18.8         -1            -12.5          0 \r\n 1996          89            16.2          6            -6.5           0 \r\n 1996          90            4.6           9            -1.5           0.76 \r\n 1996          91            18.5          9             0             5.08 \r\n 1996          92            20.2          4            -4.5           10 \r\n 1996          93            20.8          5.5          -3.5           0 \r\n 1996          94            9.9           13            0             0 \r\n 1996          95            7.8           16.5          2             0 \r\n 1996          96            14.2          8            -3             0 \r\n 1996          97            20.6          2            -4.5           0 \r\n 1996          98            17.1          5.5          -5             0 \r\n 1996          99            16.6          6            -3             0 \r\n 1996          100           25.3          7            -4             0 \r\n 1996          101           25.1          10           -4             0 \r\n 1996          102           18.2          16           -3             0 \r\n 1996          103           6.3           24            3             0 \r\n 1996          104           15.3          22.5          3             0 \r\n 1996          105           4.7           8            -2.5           1 \r\n 1996          106           14.8          5.5          -2             0 \r\n 1996          107           25.9          5.5          -1.5           6 \r\n 1996          108           25.3          11           -2             0 \r\n 1996          109           13.2          18.5          0             0 \r\n 1996          110           10.9          24.5          6             0 \r\n 1996          111           14.4          19            3.5           2 \r\n 1996          112           13.4          17            2             6 \r\n 1996          113           20.7          14.5          1             0 \r\n 1996          114           28.2          16            1             3 \r\n 1996          115           16.2          11.5         -3             0 \r\n 1996          116           17.7          19            0             0 \r\n 1996          117           27.4          20            5.5           0 \r\n 1996          118           24.3          15.5          0             1 \r\n 1996          119           14.4          13           -1             0 \r\n 1996          120           12.9          16.5          3             0 \r\n 1996          121           27.3          13.5          3.5           3 \r\n 1996          122           28.1          12           -1.5           0 \r\n 1996          123           6.1           16.5          0             0 \r\n 1996          124           7.5           15            1             0 \r\n 1996          125           16.7          12            4             6 \r\n 1996          126           15.4          13.5          4             5 \r\n 1996          127           8.6           16.5          6             0 \r\n 1996          128           19.7          14            3.5           0 \r\n 1996          129           11.4          15            3             0 \r\n 1996          130           7.3           19            7.5           0 \r\n 1996          131           7.5           17            10            16 \r\n 1996          132           18.2          15            8.5           6 \r\n 1996          133           14.3          12            4.5           0 \r\n 1996          134           20.8          12.5          1.5           0 \r\n 1996          135           6.5           14            2.5           0 \r\n 1996          136           13            15.5          5.5           1 \r\n 1996          137           12.7          15            9             5 \r\n 1996          138           27.5          20            12            1 \r\n 1996          139           25.9          26.5          15.5          0 \r\n 1996          140           20.3          31.5          15.5          4 \r\n 1996          141           11.7          31            17.5          0 \r\n 1996          142           28.6          27.5          15            0 \r\n 1996          143           10.8          23            9.5           2 \r\n 1996          144           9.8           23.5          11            0 \r\n 1996          145           9.7           21            13.5          9 \r\n 1996          146           5.7           17.5          7.5           6 \r\n 1996          147           5.1           13.5          7.5           22 \r\n 1996          148           4.2           11.5          7.5           0 \r\n 1996          149           9.4           12            7.5           5 \r\n 1996          150           23.5          13            7.5           17 \r\n 1996          151           29.6          17.5          8             4 \r\n 1996          152           11.5          22            7.5           0 \r\n 1996          153           13.9          21.5          9             0 \r\n 1996          154           18.4          20            12            2 \r\n 1996          155           9.4           20.5          11            9 \r\n 1996          156           26.7          20            9.5           1 \r\n 1996          157           14.8          17            5.5           0 \r\n 1996          158           10.5          21            8.5           0 \r\n 1996          159           10.8          21.5          11.5          12 \r\n 1996          160           30.9          20            11            3 \r\n 1996          161           29.4          21.5          8.5           0 \r\n 1996          162           25.7          24.5          11            0 \r\n 1996          163           27.6          26            13            0 \r\n 1996          164           27.2          26            15            2 \r\n 1996          165           28.6          29.5          15            0 \r\n 1996          166           27.4          32            17            0 \r\n 1996          167           20.1          31.5          16            0 \r\n 1996          168           7.1           32            17.5          0 \r\n 1996          169           7.1           30            19            16 \r\n 1996          170           12.2          24            18.5          28 \r\n 1996          171           21.7          22            16            2 \r\n 1996          172           13.1          23            16.5          0 \r\n 1996          173           22.6          26            17.5          0 \r\n 1996          174           19.7          27.5          18            14 \r\n 1996          175           20.8          27.5          15            3 \r\n 1996          176           30.1          25            14            16 \r\n 1996          177           29.4          27            14.5          0 \r\n 1996          178           28.4          27.5          14.5          0 \r\n 1996          179           28.1          30            16.5          0 \r\n 1996          180           26.8          32            18.5          0 \r\n 1996          181           26            33            21            0 \r\n 1996          182           30.5          34            24            0 \r\n 1996          183           21.6          33.5          19.5          0 \r\n 1996          184           27            30.5          16.5          0 \r\n 1996          185           18.2          29.5          18            0 \r\n 1996          186           13.9          27.5          14            0 \r\n 1996          187           28.5          27.5          16.5          0 \r\n 1996          188           15.6          28            15            0 \r\n 1996          189           30.3          29            17.5          0 \r\n 1996          190           26.8          29            16            6 \r\n 1996          191           26.7          27            16            0 \r\n 1996          192           30.6          23            12            0 \r\n 1996          193           18.7          24            9             0 \r\n 1996          194           22.2          25.5          12            0 \r\n 1996          195           24.9          26            15.5          11 \r\n 1996          196           23.5          26.5          14            0 \r\n 1996          197           28.5          26            14.5          0 \r\n 1996          198           19.1          27            14.5          0 \r\n 1996          199           19.9          29            14            0 \r\n 1996          200           28.2          29.5          17            19 \r\n 1996          201           17.3          31.5          21            0 \r\n 1996          202           14.2          31.5          18.5          0 \r\n 1996          203           14.9          25            16.5          0 \r\n 1996          204           20.6          24.5          17            0 \r\n 1996          205           26.9          26.5          17.5          0 \r\n 1996          206           24.6          27.5          12.5          0 \r\n 1996          207           24.8          26.5          13.5          8 \r\n 1996          208           23.5          24.5          12.5          0 \r\n 1996          209           18.4          26            11.5          0 \r\n 1996          210           16.8          26.5          14.5          0 \r\n 1996          211           16.5          25            14.5          18 \r\n 1996          212           24.1          24.5          14.5          2 \r\n 1996          213           24.4          24.5          11            0 \r\n 1996          214           24.5          24.5          12            0 \r\n 1996          215           25.5          25.5          12            0 \r\n 1996          216           14.1          26.5          13            0 \r\n 1996          217           6.1           26.5          14.5          0 \r\n 1996          218           18.7          25            18            0 \r\n 1996          219           23.9          25            19            41 \r\n 1996          220           25            29.5          20            9 \r\n 1996          221           27.8          30.5          18.5          14 \r\n 1996          222           26.1          27.5          15            0 \r\n 1996          223           13.9          27.5          13            0 \r\n 1996          224           20.2          26.5          14.5          0 \r\n 1996          225           26.1          25.5          15            17 \r\n 1996          226           23.7          25.5          13.5          0 \r\n 1996          227           23.2          27            15            0 \r\n 1996          228           24.6          27            16            0 \r\n 1996          229           17            25            12            0 \r\n 1996          230           21.7          24.5          11            0 \r\n 1996          231           10.7          25            11.5          0 \r\n 1996          232           10            25            13.5          0 \r\n 1996          233           25.1          25            16            0 \r\n 1996          234           23            26.5          15            27 \r\n 1996          235           12            28            16.5          0 \r\n 1996          236           25.4          28            17.5          20 \r\n 1996          237           25.2          24.5          11.5          12 \r\n 1996          238           22.4          25            10.5          0 \r\n 1996          239           13.4          26.5          13            0 \r\n 1996          240           17.2          27            14.5          23 \r\n 1996          241           19.6          24            13.5          6 \r\n 1996          242           19.4          24.5          13            0 \r\n 1996          243           21.1          26.5          14            0 \r\n 1996          244           17.9          26            13            0 \r\n 1996          245           20.8          25.5          13            0 \r\n 1996          246           18.9          26            13.5          0 \r\n 1996          247           15.2          27            15.5          0 \r\n 1996          248           21.7          27            17            0 \r\n 1996          249           20.1          27.5          17.5          0 \r\n 1996          250           19.4          28.5          17            0 \r\n 1996          251           11.7          28            15.5          0 \r\n 1996          252           12.9          27.5          14.5          0 \r\n 1996          253           22.4          25.5          15.5          9 \r\n 1996          254           13.2          23.5          10.5          5 \r\n 1996          255           21.1          25.5          11            0 \r\n 1996          256           10.5          23.5          12            0 \r\n 1996          257           22.6          19            6.5           0 \r\n 1996          258           22.5          17.5          4             0 \r\n 1996          259           18.2          17.5          2             0 \r\n 1996          260           14.6          20            3             0 \r\n 1996          261           13.7          21            6.5           0 \r\n 1996          262           15.4          20            7             0 \r\n 1996          263           7.3           21            6             0 \r\n 1996          264           11.2          20.5          7             0 \r\n 1996          265           7.7           20            9.5           9 \r\n 1996          266           15.5          19.5          10.5          0 \r\n 1996          267           7             19            7             0 \r\n 1996          268           19.7          20            8.5           4 \r\n 1996          269           6.3           17            4.5           2 \r\n 1996          270           5.6           18            6             0 \r\n 1996          271           5.6           14            9             8 \r\n 1996          272           18.2          12            5.5           2 \r\n 1996          273           17.3          14.5          6             1 \r\n 1996          274           17            18.5          7.5           0 \r\n 1996          275           17            22            8.5           0 \r\n 1996          276           17.3          27            11.5          0 \r\n 1996          277           16.6          23.5          7.5           0 \r\n 1996          278           12            13.5         -1.5           0 \r\n 1996          279           16.9          15            1.5           0 \r\n 1996          280           11.4          20.5          7             0 \r\n 1996          281           15.7          23            10.5          0 \r\n 1996          282           13.8          19.5          5.5           0 \r\n 1996          283           14.2          16           -1.5           0 \r\n 1996          284           15.9          16            1.5           1 \r\n 1996          285           14.7          14           -0.5           0 \r\n 1996          286           13.8          15           -0.5           0 \r\n 1996          287           14.9          21            4.5           0 \r\n 1996          288           14.1          25            8             0 \r\n 1996          289           14.4          26.5          10.5          0 \r\n 1996          290           12.6          25.5          10.5          1 \r\n 1996          291           4.7           24.5          8             0 \r\n 1996          292           13.8          23            7.5           3 \r\n 1996          293           13.2          13            0.5           0 \r\n 1996          294           10.9          14.5         -1             0 \r\n 1996          295           11.7          19            4             0 \r\n 1996          296           3.7           17            4.5           0 \r\n 1996          297           10.3          10.5          2             3 \r\n 1996          298           6.8           7.5           1.5           33 \r\n 1996          299           6             10.5         -1             2 \r\n 1996          300           7.9           12.5          2             2 \r\n 1996          301           9.7           18            8             0 \r\n 1996          302           10.9          20.5          5             0 \r\n 1996          303           3.5           12           -3.5           0 \r\n 1996          304           11.4          15.5          1.5           8 \r\n 1996          305           8.4           15           -3.5           8 \r\n 1996          306           9.4           0            -6.5           0 \r\n 1996          307           12.1          0            -8.5           0 \r\n 1996          308           12.3          1.5          -10            0 \r\n 1996          309           3.1           8            -8             0 \r\n 1996          310           4.3           12.5          0             2 \r\n 1996          311           5.6           7.5           4.5           4 \r\n 1996          312           11.7          8.5           3.5           2 \r\n 1996          313           9.6           10           -2             0 \r\n 1996          314           6.8           8.5          -1.5           0 \r\n 1996          315           6.3           4            -3.5           0 \r\n 1996          316           7.9           1            -6.5           0 \r\n 1996          317           6.4          -3            -8             0 \r\n 1996          318           4.7          -3.5          -13            0 \r\n 1996          319           6.4          -4            -10.5          1 \r\n 1996          320           2            -4            -14            1 \r\n 1996          321           2.4           1            -9             5 \r\n 1996          322           7.1           9.5           1             22 \r\n 1996          323           5.5           11.5         -5.5           24 \r\n 1996          324           3.2          -2.5          -8             0 \r\n 1996          325           2.7          -3            -7             0 \r\n 1996          326           7.8          -2.5          -5             1 \r\n 1996          327           4.5          -2            -5             2 \r\n 1996          328           3.5          -1.5          -7.5           0 \r\n 1996          329           6.9           0.5          -6             6 \r\n 1996          330           7.3          -3            -11            2 \r\n 1996          331           6.2          -9.5          -17.5          0 \r\n 1996          332           4.2          -11           -21            0 \r\n 1996          333           7            -7.5          -17.5          0 \r\n 1996          334           2.6          -1.5          -10.5          7 \r\n 1996          335           5.7           2.5          -5.5           0 \r\n 1996          336           5.9           1.5          -3             0 \r\n 1996          337           4.4          -1.5          -6.5           0 \r\n 1996          338           5.4          -3.5          -7.5           3.81 \r\n 1996          339           4            -5.5          -15            0 \r\n 1996          340           4.7          -4            -13            1.52 \r\n 1996          341           8.3          -1.5          -6.5           0.25 \r\n 1996          342           8.3          -1            -5             0.25 \r\n 1996          343           6.1           0            -8.5           0 \r\n 1996          344           5.6          -2.5          -8             0 \r\n 1996          345           3.2          -3.5          -9             0 \r\n 1996          346           4            -0.5          -6.5           0 \r\n 1996          347           7.9           1            -3             0 \r\n 1996          348           5.7           1            -1.5           0 \r\n 1996          349           2.1           1.5          -3.5           1.52 \r\n 1996          350           4.2           2.5          -5.5           9.4 \r\n 1996          351           7.3           1            -8             0 \r\n 1996          352           6.5          -2.5          -11            0 \r\n 1996          353           5.6          -3            -14            0.25 \r\n 1996          354           5.1          -11           -18.5          0 \r\n 1996          355           5.3          -17           -20            0 \r\n 1996          356           5.5          -12           -22.5          0 \r\n 1996          357           4.3          -1.5          -17            0 \r\n 1996          358           3.9          -3.5          -13            0.51 \r\n 1996          359           5.1          -9            -14            2.29 \r\n 1996          360           3.9          -11.5         -22            0.51 \r\n 1996          361           4.4          -19           -22.5          8.13 \r\n 1996          362           5.8          -18.5         -22.5          0 \r\n 1996          363           7.7          -9.5          -24            0 \r\n 1996          364           4.8          -3            -13.5          0 \r\n 1996          365           3.4          -5.5          -18.5          0 \r\n 1996          366           4.6          -10           -18            0 \r\n 1997          1             4.755033      3.108889     -3.554445      0 \r\n 1997          2             3.729869      4.337778      0.2538889     0 \r\n 1997          3             3.896768      3.088889      0.4505556     0 \r\n 1997          4             1.425782      1.585556     -12.17611      5.33 \r\n 1997          5             4.565288     -10.50667     -16.69611      1.27 \r\n 1997          6             5.684801     -8.217222     -18.48333      0 \r\n 1997          7             4.822018     -2.252222     -15.75278      0 \r\n 1997          8             4.40638      -0.9022222    -8.477222      0 \r\n 1997          9             1.889662     -6.296111     -22.29667      0.25 \r\n 1997          10            3.474603     -20.22445     -23.92667      2.29 \r\n 1997          11            5.744004     -18.91611     -25.36722      0 \r\n 1997          12            5.662082     -16.03611     -23.17389      0 \r\n 1997          13            6.647372     -12.74722     -20.69778      0 \r\n 1997          14            2.966121     -8.705556     -15.84833      0 \r\n 1997          15            4.778044     -7.221667     -22.00056      3.81 \r\n 1997          16            7.135979     -17.37667     -25.57444      0.51 \r\n 1997          17            7.225433     -14.76167     -24.92556      0 \r\n 1997          18            3.472636     -1.831667     -17.31         0 \r\n 1997          19            7.515928      1.908333     -6.767222      0.25 \r\n 1997          20            7.424759      3.465556     -4.517222      0 \r\n 1997          21            1.403314      5.357778     -6.738889      0 \r\n 1997          22            6.185333     -5.039444     -15.68833      0.25 \r\n 1997          23            4.945321     -4.945556     -15.48667      0 \r\n 1997          24            6.150856     -7.243333     -23.42667      5.84 \r\n 1997          25            7.209534     -18.82611     -23.98833      0.25 \r\n 1997          26            5.779987     -15.52944     -22.26278      1.78 \r\n 1997          27            6.457544     -16.07556     -25.80944      1.78 \r\n 1997          28            7.355472     -12.45778     -23.36         0.25 \r\n 1997          29            7.239073     -7.055555     -17.72556      0 \r\n 1997          30            7.305347      3.951667     -13.425        0 \r\n 1997          31            6.933181      4.808333     -1.125         0 \r\n 1997          32            1.49306       2.335556     -4.381111      0 \r\n 1997          33            2.58044      -1.200556     -5.711667      0 \r\n 1997          34            2.880851     -0.2244444    -5.522222      0 \r\n 1997          35            6.057261     -3.637778     -5.301667      14.99 \r\n 1997          36            4.818545     -3.871111     -8.161667      2.29 \r\n 1997          37            6.174119     -5.02         -10.01611      0 \r\n 1997          38            4.836536     -4.708333     -10.16167      0 \r\n 1997          39            9.376804     -4.221667     -20.07556      0 \r\n 1997          40            7.142799     -3.917222     -13.79167      0 \r\n 1997          41            4.967621     -4.401667     -14.00667      0 \r\n 1997          42            5.173558     -5.965        -19.77056      0.51 \r\n 1997          43            10.75129     -11.86278     -21.50556      2.29 \r\n 1997          44            7.660904     -6.408889     -17.12556      0 \r\n 1997          45            8.489587     -5.111111     -22.805        0.25 \r\n 1997          46            7.010627     -7.502778     -19.60167      0.76 \r\n 1997          47            9.081665     -2.743889     -13.42556      4.57 \r\n 1997          48            9.610899      4.741667     -6.836667      0 \r\n 1997          49            10.54293      6.478889     -5.508333      0 \r\n 1997          50            10.91137      2.576667     -5.078333      0 \r\n 1997          51            7.250077      5.173333     -2.856667      0.25 \r\n 1997          52            2.424126     -1.251111     -9.950556      0 \r\n 1997          53            5.108915      0.4361111    -13.49222      0 \r\n 1997          54            10.59849     -5.144444     -12.85833      0 \r\n 1997          55            10.59272     -3.545        -10.98333      0 \r\n 1997          56            11.69725      3.802222     -6.333889      0 \r\n 1997          57            8.110056      0.6883333    -6.49          0 \r\n 1997          58            3.60142      -0.8166667    -5.821111      0.25 \r\n 1997          59            2.972983      3.499444     -4.109445      0 \r\n 1997          60            4.815909      2.353889     -7.910555      1.02 \r\n 1997          61            11.4791       2.765556     -6.375556      0 \r\n 1997          62            4.408221      1.832222     -5.908333      0 \r\n 1997          63            4.445584     -3.221667     -13.07556      0 \r\n 1997          64            10.67309     -2.841111     -12.95167      0 \r\n 1997          65            11.47989     -3.349444     -11.56833      0 \r\n 1997          66            10.96455      7.687778     -8.288889      0 \r\n 1997          67            11.58621      8.81         -4.601666      0 \r\n 1997          68            13.24027      7.253889     -0.7555556     6.86 \r\n 1997          69            13.35462      12.26556     -1.140556      0 \r\n 1997          70            12.774        5.360556     -1.469444      0 \r\n 1997          71            6.900462      2.893889     -1.905556      0 \r\n 1997          72            10.03355      9.388889E-02               -9.374444      7.11 \r\n 1997          73            13.16663     -7.862778     -15.60556      18.29 \r\n 1997          74            12.54087     -1.888333     -12.95278      0 \r\n 1997          75            11.12325      5.862778     -4.934444      0 \r\n 1997          76            9.046728      4.922222     -0.1588889     0 \r\n 1997          77            3.047207      1.975        -3.276111      1.27 \r\n 1997          78            8.747991      9.261666     -0.9288889     1.27 \r\n 1997          79            12.47928      12.48111      1.666667E-02                0 \r\n 1997          80            10.13842      11.54833     -1.194444      0 \r\n 1997          81            12.63237      8.46         -2.731667      0 \r\n 1997          82            10.83689      3.78         -1.793333      0.25 \r\n 1997          83            1.047255      2.341111     -0.4816667     1.52 \r\n 1997          84            7.062801      7.901111     -2.658333      8.64 \r\n 1997          85            7.062801      20.395        1.264444      0 \r\n 1997          86            7.062801      21.54667      3.395555      0 \r\n 1997          87            7.062801      6.903333      1.552778      0 \r\n 1997          88            8.409003      11.37944     -0.5422222     0 \r\n 1997          89            13.75461      12.47333     -4.250556      0 \r\n 1997          90            13.80917      16.71833     -0.5122222     0 \r\n 1997          91            13.49185      19.35111      5.117222      0 \r\n 1997          92            3.761249      14.42778      2.846667      0 \r\n 1997          93            7.510866      13.62722      4.166111      0 \r\n 1997          94            2.492576      13.44111      9.425555      3.7338 \r\n 1997          95            1.808576      13.41278     -2.626667      20.1676 \r\n 1997          96            6.813393     -0.7683333    -7.463333      0 \r\n 1997          97            16.10534      2.183333     -10.26389      0 \r\n 1997          98            11.1586      -2.114444     -11.45278      0 \r\n 1997          99            14.25589      1.238889     -7.24          0 \r\n 1997          100           5.647312     -0.1116667    -2.373333      0 \r\n 1997          101           6.499593      2.281667     -2.704444      2.7686 \r\n 1997          102           14.41229      6.257222     -2.777778      0 \r\n 1997          103           15.87037      10.72389     -3.788333      0 \r\n 1997          104           17.10089      13.13333     -2.052222      0 \r\n 1997          105           11.16588      12.17444     -3.574445      0 \r\n 1997          106           17.82773      8.083889     -4.444445      0 \r\n 1997          107           17.78744      15.08        -2.460556      0 \r\n 1997          108           12.09017      20.89222      0.965         2.8956 \r\n 1997          109           16.83688      18.67667      2.982778      0 \r\n 1997          110           7.451913      17.40167      5.658333      0 \r\n 1997          111           7.11552       16.21833      4.997778      0 \r\n 1997          112           7.239952      13.975        4.660555      0 \r\n 1997          113           12.42794      13.48389     -0.5777778     0 \r\n 1997          114           13.58741      14.83778      0.4416667     0 \r\n 1997          115           13.11086      18.25333      2.798889      0 \r\n 1997          116           11.32006      16.94111      6.853889      0 \r\n 1997          117           11.58173      18.88111      0.86          0 \r\n 1997          118           17.15118      22.64444      2.598889      0 \r\n 1997          119           12.18389      21.99889      5.626111      10.3886 \r\n 1997          120           2.138401      8.468333     -0.5638889     29.083 \r\n 1997          121           15.84556      14.91833      1.800556      6.5532 \r\n 1997          122           2.605419      9.887777      4.125556      12.7508 \r\n 1997          123           14.59484      16.14278      1.381667      0 \r\n 1997          124           18.41629      22.06         5.601111      0 \r\n 1997          125           18.83227      22.63         1.071111      0 \r\n 1997          126           12.02954      21.55056      5.293334      2.9972 \r\n 1997          127           2.058151      12.93611      7.096667      25.0952 \r\n 1997          128           12.7322       15.525        2.754444      0 \r\n 1997          129           17.94304      19.39778      1.639444      0 \r\n 1997          130           16.47216      24.28555      7.256111      0 \r\n 1997          131           10.25381      15.66167      1.981111      0 \r\n 1997          132           12.02553      15.13889     -2.744444      0 \r\n 1997          133           10.84986      13.18278      1.873889      0 \r\n 1997          134           11.81106      13.635       -0.9205555     0 \r\n 1997          135           19.26573      16.98         0.365         0 \r\n 1997          136           12.17979      28.60333      5.279444      0 \r\n 1997          137           17.66414      28.40556      12.52333      11.049 \r\n 1997          138           17.62066      26.44444      4.805555      0 \r\n 1997          139           19.03737      15.30722      2.368333      0 \r\n 1997          140           18.748        18.15778      3.036667      0 \r\n 1997          141           18.71888      21.05778      6.312222      0 \r\n 1997          142           17.77313      23.34778      10.57222      0 \r\n 1997          143           7.630863      23.39611      11.88667      11.2776 \r\n 1997          144           2.05288       15.96833      10.65222      0 \r\n 1997          145           1.849244      14.24389      7.861111      0 \r\n 1997          146           3.4618        13.13833      6.925         3.0734 \r\n 1997          147           1.935309      14.83278      8.296111      0 \r\n 1997          148           1.975517      10.87278      8.122222      4.8006 \r\n 1997          149           2.947377      15.18556      7.863333      0 \r\n 1997          150           17.62092      23.06111      8.865556      0 \r\n 1997          151           18.99494      27.44389      11.13056      0 \r\n 1997          152           19.11088      27.835        10.40722      0 \r\n 1997          153           18.49085      27.01         12.26389      0 \r\n 1997          154           10.10963      26.08167      12.70778      0 \r\n 1997          155           14.54823      27.54778      13.58556      0 \r\n 1997          156           11.79198      28.36611      11.94278      0 \r\n 1997          157           18.29136      24.25111      11.38722      0 \r\n 1997          158           12.66434      25.58222      11.84944      0 \r\n 1997          159           17.67564      24.53944      10.74611      0 \r\n 1997          160           18.07873      26.50444      11.80778      0 \r\n 1997          161           17.01875      27.30556      12.96944      0 \r\n 1997          162           14.30342      27.135        14.48222      0 \r\n 1997          163           7.971482      27.67945      14.18833      0 \r\n 1997          164           18.78101      30.02944      13.63889      0 \r\n 1997          165           20.52081      29.08833      15.59833      0 \r\n 1997          166           14.50978      31.18889      14.08222      6.1976 \r\n 1997          167           22.19666      26.97         11.18333      0 \r\n 1997          168           15.7974       29.48444      13.76         2.8702 \r\n 1997          169           14.66647      26.56556      14.925        0 \r\n 1997          170           19.15531      34.00056      17.28278      2.921 \r\n 1997          171           12.36954      28.69667      18.33055      39.624 \r\n 1997          172           16.36229      28.76722      18.065        2.5654 \r\n 1997          173           18.40797      31.38944      18.73111      7.5692 \r\n 1997          174           19.61037      31.20333      21.855        0 \r\n 1997          175           13.93029      28.80667      19.17389      6.6802 \r\n 1997          176           19.53962      27.74611      14.16722      0 \r\n 1997          177           21.79994      28.88333      16.05389      0 \r\n 1997          178           21.6781       29.925        19.13222      0 \r\n 1997          179           20.9651       31.17444      18.18556      18.2372 \r\n 1997          180           6.351438      26.32556      17.38778      29.2608 \r\n 1997          181           18.62056      29.58278      18.975        0 \r\n 1997          182           15.4598       28.57055      14.80389      0 \r\n 1997          183           16.71031      20.26944      13.92056      0 \r\n 1997          184           10.28038      19.38389      10.715        0 \r\n 1997          185           20.16864      22.56778      9.416111      0 \r\n 1997          186           14.73852      24.87111      11.98667      9.525 \r\n 1997          187           20.02772      23.39444      10.42167      0 \r\n 1997          188           10.83154      25.52111      13.85         0 \r\n 1997          189           21.63672      25.68278      12.04611      0 \r\n 1997          190           20.97067      23.40444      13.11056      0 \r\n 1997          191           23.0379       26.37944      15.36278      0 \r\n 1997          192           21.6617       30.11333      19.12444      7.9756 \r\n 1997          193           22.67293      30.73556      21.025        3.9116 \r\n 1997          194           19.44702      30.51333      17.50778      0 \r\n 1997          195           28.06686      28.58778      15.70389      0 \r\n 1997          196           28.73914      32.98389      17.95555      0 \r\n 1997          197           27.32905      32.87056      19.65167      0 \r\n 1997          198           24.0444       31.69333      20.56389      0 \r\n 1997          199           18.25668      31.69111      21.90667      0 \r\n 1997          200           16.77412      31.57222      18.71556      6.223 \r\n 1997          201           21.87366      31.04445      19.31667      17.526 \r\n 1997          202           21.19886      28.135        19.77555      0 \r\n 1997          203           13.55005      25.71833      18.86278      0 \r\n 1997          204           19.41824      27.16278      19.69389      0 \r\n 1997          205           22.47406      29.83167      21.23611      3.429 \r\n 1997          206           22.0893       32.95278      22.93944      2.8194 \r\n 1997          207           23.71311      31.34667      23.55445      0 \r\n 1997          208           6.696701      28.45555      19.49167      16.002 \r\n 1997          209           26.61652      25.90167      14.55556      0 \r\n 1997          210           23.6445       24.82389      13.83         0 \r\n 1997          211           22.98254      24.13445      13.04778      0 \r\n 1997          212           24.16101      26.28889      14.09389      0 \r\n 1997          213           17.73359      29.30667      17.12611      0 \r\n 1997          214           26.77526      31.79556      18.27333      0 \r\n 1997          215           25.45512      31.42333      17.28778      0 \r\n 1997          216           25.62194      27.78944      11.96833      0 \r\n 1997          217           26.30786      24.24167      12.31889      0 \r\n 1997          218           19.14812      25.92778      13.85444      0 \r\n 1997          219           23.26773      27.39722      14.42444      0 \r\n 1997          220           24.4323       26.74333      13.44222      0 \r\n 1997          221           17.55774      26.30889      13.25333      0 \r\n 1997          222           13.89912      18.93389      12.99222      0 \r\n 1997          223           10.24749      19.11555      13.60889      6.985 \r\n 1997          224           7.283423      19.71333      13.38222      0 \r\n 1997          225           24.15704      22.70778      12.30556      0 \r\n 1997          226           12.10126      25.55         13.93722      3.9624 \r\n 1997          227           24.27406      28.89222      15.36667      0 \r\n 1997          228           21.04544      27.76722      16.64722      0 \r\n 1997          229           10.79041      18.71167      12.26889      0 \r\n 1997          230           12.69032      21.24611      13.68833      0 \r\n 1997          231           10.31155      20.64444      15.92611      8.6614 \r\n 1997          232           19.70438      22.90389      11.39833      0 \r\n 1997          233           23.0825       25.29056      9.974444      0 \r\n 1997          234           22.19947      24.28333      10.62667      0 \r\n 1997          235           19.59053      28.83611      13.69056      0 \r\n 1997          236           19.21824      29.38556      15.81222      0 \r\n 1997          237           15.03562      23.16556      16.28         0 \r\n 1997          238           17.75472      30.46778      17.305        0 \r\n 1997          239           10.5577       25.83611      16.24389      0 \r\n 1997          240           18.26375      28.17722      16.81667      0 \r\n 1997          241           18.77449      28.55611      19.06333      3.9878 \r\n 1997          242           17.92555      29.78444      15.41944      0 \r\n 1997          243           20.43989      28.39389      15.84722      0 \r\n 1997          244           17.77773      30.69056      18.74167      2.667 \r\n 1997          245           13.50127      22.45667      7.478333      0 \r\n 1997          246           20.62415      20.28833      7.564445      0 \r\n 1997          247           20.00826      21.07444      9.281667      0 \r\n 1997          248           13.56854      26.44555      13.23667      0 \r\n 1997          249           21.63392      29.32444      14.32667      0 \r\n 1997          250           9.120241      24.78611      17.41222      0.3302 \r\n 1997          251           10.47301      25.19889      12.14333      0.0762 \r\n 1997          252           20.78653      22.49722      7.781667      0 \r\n 1997          253           19.91751      21.64556      6.195         0 \r\n 1997          254           21.65015      23.36167      6.696667      0 \r\n 1997          255           19.0577       25.84056      11.51833      0 \r\n 1997          256           5.870445      23.29556      15.05444      0.0508 \r\n 1997          257           10.15101      25.44389      14.165        0 \r\n 1997          258           17.27427      26.82055      14.43111      0 \r\n 1997          259           4.359477      26.34722      10.59944      1.0922 \r\n 1997          260           20.578        27.21056      10.65167      0 \r\n 1997          261           9.76897       29.98056      15.55833      0 \r\n 1997          262           10.05771      19.05167      6.325555      0 \r\n 1997          263           15.11177      15.98889      3.288333      0 \r\n 1997          264           15.27135      17.3          6.084445      0 \r\n 1997          265           2.699893      13.505        9.166667      1.2192 \r\n 1997          266           16.74776      19.61833      4.624444      0.0508 \r\n 1997          267           19.34598      22.57611      5.117222      0 \r\n 1997          268           18.50851      27.39         9.757778      0 \r\n 1997          269           13.80745      27.02611      10.09111      0 \r\n 1997          270           7.8914        24.86833      8.956667      0.0254 \r\n 1997          271           17.93932      23.75278      9.103889      0 \r\n 1997          272           17.6446       24.70667      8.757778      0 \r\n 1997          273           17.12135      24.42889      6.047778      0 \r\n 1997          274           15.9325       23.70333      6.657222      0 \r\n 1997          275           15.64147      32.95667      13.78056      0 \r\n 1997          276           15.55364      34.23389      9.941667      0 \r\n 1997          277           16.70546      28.57833      7.657778      0 \r\n 1997          278           16.1999       28.75222      18.14611      0 \r\n 1997          279           14.45815      32.77611      20.03667      0 \r\n 1997          280           11.68035      30.08833      23.425        0 \r\n 1997          281           3.12139       22.49667      10.95944      0.127 \r\n 1997          282           16.06062      18.54389      6.286667      0 \r\n 1997          283           11.42035      21.64056      8.141111      0 \r\n 1997          284           10.05892      27.42278      20.625        0 \r\n 1997          285           11.51882      18.30556      7.838333      1.651 \r\n 1997          286           12.97873      10.33222      0.9722222     0 \r\n 1997          287           14.63605      13.87         6.385         0 \r\n 1997          288           4.208016      11.58         7.66          0 \r\n 1997          289           13.69189      17.58         6.941111      0 \r\n 1997          290           14.26681      16.71         0.9627778     0 \r\n 1997          291           13.40893      18.88         4.571111      0 \r\n 1997          292           13.0596       13.41         1.261111      0 \r\n 1997          293           11.77482      10.6         -4.468889      0 \r\n 1997          294           12.98542      6.26         -5.683889      0 \r\n 1997          295           8.740376      7.04         -6.457778      0 \r\n 1997          296           10.45431      14.62         2.315         0 \r\n 1997          297           1.87916       8.13          5.377778      0 \r\n 1997          298           3.56117       5.387778      0.6338889     0 \r\n 1997          299           7.335431      4.607778     -6.77          0 \r\n 1997          300           13.05881      5.67         -10.14         0 \r\n 1997          301           7.315766      10.04        -3.832222      0 \r\n 1997          302           9.355968      15.31        -3.783889      0 \r\n 1997          303           4.270902      14            4.723889      0 \r\n 1997          304           5.870863      16.14         1.706111      0.0254 \r\n 1997          305           2.902524      8.46          3.287778      0 \r\n 1997          306           3.117247      3.307222     -2.827778      0 \r\n 1997          307           4.988458     -1.077222     -2.981111      0 \r\n 1997          308           3.390212     -7.888889E-02               -2.543889      0 \r\n 1997          309           1.943008      1.383889     -0.5038889     0 \r\n 1997          310           2.798803      4.541111     -0.6722222     0 \r\n 1997          311           2.423205      5.815        -1.798889      0 \r\n 1997          312           3.936809      6.968889     -1.281111      0 \r\n 1997          313           5.171445      4.35         -0.86          0 \r\n 1997          314           6.406081     -0.1538889    -7.94          0 \r\n 1997          315           7.827051     -0.07         -8.99          0 \r\n 1997          316           8.827571     -0.1372222    -11.78         0 \r\n 1997          317           1.197461     -0.625        -8.19          0 \r\n 1997          318           4.20718      -0.8588889    -2.827222      9.0678 \r\n 1997          319           7.10531      -1.828889     -9.84          0 \r\n 1997          320           11.04086     -7.02         -17.79         0 \r\n 1997          321           10.50138      1.6          -11.02         0 \r\n 1997          322           6.066465     -4.832778     -13.32         0 \r\n 1997          323           6.536705     -0.2677778    -11.63333      0 \r\n 1997          324           5.68911       1.885        -6.127778      0 \r\n 1997          325           7.935374      0.605        -6.127778      0 \r\n 1997          326           9.127145      0.475        -7.62          0 \r\n 1997          327           5.268953     -2.376111     -13            0 \r\n 1997          328           8.184114      2.337222     -14.53         0 \r\n 1997          329           6.9177        6.842778     -3.008889      0 \r\n 1997          330           9.332914      4.005        -2.647778      0 \r\n 1997          331           5.477735      11.53        -1.388889E-02                0 \r\n 1997          332           6.924018      7.55         -1.218889      0 \r\n 1997          333           2.450778      0.1372222    -1.988889      0 \r\n 1997          334           4.419768      2.073889     -2.716111      0 \r\n 1997          335           1.276664      1.168889     -3.888889E-03                0 \r\n 1997          336           1.910833      3.672222      0.2127778     0 \r\n 1997          337           2.092084      0.2311111    -4.382778      3.05 \r\n 1997          338           4.131198     -2.892778     -6.391111      0.51 \r\n 1997          339           5.335102     -5.502222     -10.27         1.52 \r\n 1997          340           3.462176     -2.697222     -5.571111      0 \r\n 1997          341           3.396027     -4.107778     -6.088889      0 \r\n 1997          342           2.096142     -2.621111     -5.327222      0.25 \r\n 1997          343           5.588443     -1.847222     -5.127778      5.08 \r\n 1997          344           5.453969     -0.6888889    -4.545         1.27 \r\n 1997          345           3.803298     -2.836111     -5.731111      0 \r\n 1997          346           7.299114     -4.48         -9.21          0 \r\n 1997          347           7.860565      0.4572222    -9.4           0 \r\n 1997          348           7.382793      0.9322222    -11.87         0 \r\n 1997          349           8.290177      3.571111     -5.78          0 \r\n 1997          350           7.846381      3.652778     -5.386111      0 \r\n 1997          351           6.058474      1.997778     -9.3           0 \r\n 1997          352           5.258535      5.567222     -2.442222      0 \r\n 1997          353           3.405023      2.487222     -2.13          0 \r\n 1997          354           8.100349      0.54         -8.23          0 \r\n 1997          355           2.06175      -1.942222     -8.99          0 \r\n 1997          356           2.692362     -0.5111111    -2.413889      0.25 \r\n 1997          357           2.58521      -0.9922222    -4.356111      0.25 \r\n 1997          358           1.496073     -3.005        -5.108889      0 \r\n 1997          359           3.577446     -1.158889     -5.77          0 \r\n 1997          360           8.113696      3.062778     -7.28          0 \r\n 1997          361           7.606637     -0.6622222    -12.13         0 \r\n 1997          362           1.687658     -1.357778     -5.771111      0 \r\n 1997          363           3.661962     -3.263889     -11.55         0.25 \r\n 1997          364           4.604074     -2.697222     -9.66          2.03 \r\n 1997          365           8.328294     -7.64         -20.11         0.76 \r\n 1998          1             8.25135       5.063889     -7.69          0 \r\n 1998          2             3.681543      8.64         -0.7277778     0 \r\n 1998          3             5.343177      5.275        -9.62          0 \r\n 1998          4             3.498221     -0.6172222    -7.57          0.76 \r\n 1998          5             1.653266      0.2227778    -0.6922222     12.19 \r\n 1998          6             3.094905      9.111111E-02               -3.337778      0.25 \r\n 1998          7             1.822258     -0.8788889    -5.692222      0 \r\n 1998          8             10.35322      1.602222     -5.022222      0 \r\n 1998          9             3.226952     -3.717778     -15.85         0 \r\n 1998          10            10.51017     -10.68        -16.95         0 \r\n 1998          11            3.265486     -9.39         -16.27         0 \r\n 1998          12            5.320793     -8.92         -20.53         0 \r\n 1998          13            9.06267      -11.58        -21.85         0.25 \r\n 1998          14            6.63256      -6.485        -15.65         0.51 \r\n 1998          15            10.96585     -6.251111     -16.02         0.76 \r\n 1998          16            3.87702      -5.317222     -8.82          0.25 \r\n 1998          17            9.407807     -5.067778     -20.73         3.81 \r\n 1998          18            5.828563     -7.7          -22.22         0 \r\n 1998          19            9.763322     -5.932778     -19.55         0 \r\n 1998          20            5.125902     -3.29         -17.48         0 \r\n 1998          21            4.873565     -2.676111     -5.03          5.84 \r\n 1998          22            4.372406     -1.403889     -4.963889      1.52 \r\n 1998          23            5.036783     -2.931111     -9.872222      0.51 \r\n 1998          24            7.613876     -3.357778     -7.47          0.25 \r\n 1998          25            9.574331     -0.4922222    -6.542778      0.25 \r\n 1998          26            6.479342      1.157778     -2.956111      0 \r\n 1998          27            5.672332     -0.275        -2.97          0 \r\n 1998          28            4.934526      0.3811111    -3.661111      0 \r\n 1998          29            11.07057     -0.3511111    -9.477777      0 \r\n 1998          30            7.266729     -0.3911111    -10.06         0 \r\n 1998          31            8.051606      3.497778     -2.412778      0 \r\n 1998          32            5.666057      8.777778E-02               -5.502778      3.81 \r\n 1998          33            6.747537     -0.435        -15.81         6.6 \r\n 1998          34            7.347774     -5.6          -21.35         1.02 \r\n 1998          35            7.663875     -6.422222     -7.68          0 \r\n 1998          36            9.018026     -5.216667     -11.32         0 \r\n 1998          37            12.38079     -2.638889     -14.75         0 \r\n 1998          38            9.867085     -0.3833333    -14.98         0 \r\n 1998          39            12.34062      2.212778     -10.1          0 \r\n 1998          40            10.46946      2.527222     -4.185         0 \r\n 1998          41            4.803608      0.8227777    -2.007222      0 \r\n 1998          42            7.944621     -0.5322222    -3.896111      2.54 \r\n 1998          43            9.026101     -0.9061111    -5.841111      0 \r\n 1998          44            7.150791     -1.582778     -5.366111      0 \r\n 1998          45            6.683731      1.735        -3.602222      0 \r\n 1998          46            8.471512      5.644444      1.677778      0 \r\n 1998          47            4.837206      4.393889      1.102778      0.51 \r\n 1998          48            1.354026      2.072778      1.122222      3.56 \r\n 1998          49            3.402094      3.326111      0.8227777     2.03 \r\n 1998          50            3.145741      3.417778      0.4377778     1.52 \r\n 1998          51            4.0371        3.816111     -3.111111E-02                1.27 \r\n 1998          52            3.965888      3.703889      0.57          0.25 \r\n 1998          53            7.030417      9.75          1.838889      0 \r\n 1998          54            6.588126      12.59         1.651111      0.25 \r\n 1998          55            12.7281       13.44        -0.1522222     0 \r\n 1998          56            3.639201      11.68         5.237222      0 \r\n 1998          57            3.324941      11.27         1.556111      2.54 \r\n 1998          58            2.048445      1.556111     -2.673889      0.76 \r\n 1998          59            9.610229     -2.12         -3.851111      2.54 \r\n 1998          60            11.62771     -1.497778     -7.2           2.03 \r\n 1998          61            8.979366      2.918889     -4.592778      1.02 \r\n 1998          62            6.233909     -1.338889     -5.155         0.76 \r\n 1998          63            12.25987      7.222223E-02               -6.456111      0.51 \r\n 1998          64            4.147264     -0.2472222    -3.32          0 \r\n 1998          65            15.0596      -0.1438889    -7.25          1.02 \r\n 1998          66            8.346076      1.217222     -3.055         0 \r\n 1998          67            7.28062      -0.5472222    -6.866111      6.1 \r\n 1998          68            18.88946     -6.827222     -15.44         5.33 \r\n 1998          69            17.92103     -9.62         -17.85         0 \r\n 1998          70            19.521       -10.49        -18.42         0 \r\n 1998          71            15.0642      -8.78         -20.66         0 \r\n 1998          72            15.10742      6.54         -11.19         0 \r\n 1998          73            16.72286     -2.893889     -12.29         0 \r\n 1998          74            6.905023     -0.8677778    -5.242778      0 \r\n 1998          75            6.984811      1.322222     -3.831111      0.25 \r\n 1998          76            3.036496      0.8311111    -1.498889      0.25 \r\n 1998          77            5.343721      1.435        -0.2572222     8.38 \r\n 1998          78            8.72682       2.808889     -0.925         2.54 \r\n 1998          79            18.78946      4.697778     -3.946111      0 \r\n 1998          80            13.54788      7.31         -3.045         0 \r\n 1998          81            12.43857      6.017222     -2.497778      0 \r\n 1998          82            8.23156       3.882778     -2.213889      0 \r\n 1998          83            6.139518      2.591111     -3.697222      0 \r\n 1998          84            8.65088       16.24         7.36          2.79 \r\n 1998          85            14.26037      24.03         6.071111      0 \r\n 1998          86            2.438435      18.05         10.94         0.25 \r\n 1998          87            4.945948      12.7          8.82          12.7 \r\n 1998          88            12.41246      24.87         8.86          2.03 \r\n 1998          89            2.646757      9.344444      5.236111      4.57 \r\n 1998          90            3.356572      10.4          3.703889      6.6 \r\n 1998          91            4.671562      3.752222      0.88          0 \r\n 1998          92            5.991405      5.066111      1.838889      0 \r\n 1998          93            3.932458      6.282778      0.4572222     0 \r\n 1998          94            21.35685      13.71        -0.07          0 \r\n 1998          95            16.63345      14.84         0.5788889     0 \r\n 1998          96            11.88503      20.53         6.778889      45.3898 \r\n 1998          97            3.395358      12.02         8.47          7.7724 \r\n 1998          98            2.913779      8.63          5.852222      0 \r\n 1998          99            12.54593      12.26         2.392778      0 \r\n 1998          100           21.97976      16.66        -8.388889E-02                0 \r\n 1998          101           18.42019      23.51         5.453889      0 \r\n 1998          102           11.1186       22.35         11.06         10.2108 \r\n 1998          103           11.41625      17.52         8.97          0 \r\n 1998          104           13.32788      16.52         5.087222      0 \r\n 1998          105           1.673265      10.8          4.422778      32.639 \r\n 1998          106           20.45959      10.86         1.546111      0 \r\n 1998          107           22.0055       14.47         8.222222E-02                0 \r\n 1998          108           22.31068      17.52         2.007778      0 \r\n 1998          109           12.20184      16.91         5.806111      20.9804 \r\n 1998          110           7.682117      12.34         4.978889      11.2014 \r\n 1998          111           19.7594       17.26         3.335         0 \r\n 1998          112           23.98541      20.15         2.431111      0 \r\n 1998          113           24.02177      22.82         9.25          0 \r\n 1998          114           23.59801      25.99         6.521111      0 \r\n 1998          115           8.643391      19.23         12.8          8.8392 \r\n 1998          116           5.381335      14.1          6.187222      0 \r\n 1998          117           24.98174      16            1.827778      0 \r\n 1998          118           20.41424      17.71         2.448889      0 \r\n 1998          119           11.40061      15.99         5.18          0 \r\n 1998          120           12.38033      19.87         10.71         0 \r\n 1998          121           19.43456      26.02         7.55          0 \r\n 1998          122           15.70594      15.04         6.376111      0.254 \r\n 1998          123           22.15332      23.88         8.35          0 \r\n 1998          124           24.34067      28.22         6.767222      1.524 \r\n 1998          125           25.38395      24.89         6.912778      0 \r\n 1998          126           18.19467      24.28         8.55          0 \r\n 1998          127           8.557075      18.93         10.64         1.016 \r\n 1998          128           8.439713      16.62         10.91         0.508 \r\n 1998          129           11.27688      22.84         10.26         2.286 \r\n 1998          130           20.43114      24.84         8.66          0 \r\n 1998          131           21.3466       27.36         10.17         0 \r\n 1998          132           17.19226      21.76         8.51          3.81 \r\n 1998          133           24.0862       27.12         4.241111      0 \r\n 1998          134           21.60735      32.57         17.08         0 \r\n 1998          135           9.670186      26.95         13.91         6.858 \r\n 1998          136           26.79045      26.15         13.14         0 \r\n 1998          137           21.12799      32.75         13.99         0 \r\n 1998          138           24.0408       34.45         19.02         0 \r\n 1998          139           18.92323      34.25         16.62         0 \r\n 1998          140           18.02835      25.53         15.1          0.254 \r\n 1998          141           16.83202      25.43         10.47         0.254 \r\n 1998          142           13.90803      22.06         10.08         1.524 \r\n 1998          143           4.910552      18.47         12.21         19.304 \r\n 1998          144           11.44265      20.48         11.25         2.032 \r\n 1998          145           18.48717      21.27         11.69         0 \r\n 1998          146           22.66841      23.93         8.8           0 \r\n 1998          147           22.95966      28.94         14.4          0 \r\n 1998          148           17.16411      33.63         18.54         9.144 \r\n 1998          149           23.34074      29.36         16.89         0 \r\n 1998          150           11.5342       26.91         16.47         1.524 \r\n 1998          151           24.53552      21.06         9.23          0 \r\n 1998          152           10.72811      20.06         6.002778      8.128 \r\n 1998          153           21.05673      19.73         9.91          0 \r\n 1998          154           9.836751      12.51         5.537778      1.016 \r\n 1998          155           13.96669      18.15         4.693889      1.778 \r\n 1998          156           15.10914      16.33         8.06          6.35 \r\n 1998          157           18.21873      19.01         6.796111      0 \r\n 1998          158           18.35989      20.33         7.26          0.508 \r\n 1998          159           6.024081      16.81         12.35         12.7 \r\n 1998          160           7.05778       17.38         12.17         0.762 \r\n 1998          161           21.93491      23.19         11.13         0 \r\n 1998          162           5.841868      20.73         15.9          16.764 \r\n 1998          163           22.42557      23.86         13.54         0.254 \r\n 1998          164           26.46129      27.29         13.23         0 \r\n 1998          165           3.758864      20            16.1          14.732 \r\n 1998          166           10.37532      21.33         15.56         0.762 \r\n 1998          167           21.76831      24.86         15.14         0 \r\n 1998          168           18.59993      26.28         14.25         1.016 \r\n 1998          169           7.052467      23.34         16.05         29.464 \r\n 1998          170           26.45577      28.36         14.82         0 \r\n 1998          171           14.85186      30.83         18.98         26.67 \r\n 1998          172           26.68405      26.47         15.21         0 \r\n 1998          173           23.77533      28.9          15.41         0 \r\n 1998          174           17.91986      27.6          16.56         20.828 \r\n 1998          175           20.6275       30.07         17.69         3.81 \r\n 1998          176           23.72734      30.98         20.72         0 \r\n 1998          177           21.83814      32.78         19.9          0 \r\n 1998          178           21.70939      33.37         19.8          9.398 \r\n 1998          179           27.53457      29.53         19.55         0 \r\n 1998          180           13.5708       26.97         17.44         0.762 \r\n 1998          181           22.71544      25.93         15.55         0 \r\n 1998          182           24.65958      28.44         14.95         0 \r\n 1998          183           22.07679      28.56         15.49         0 \r\n 1998          184           7.787094      25.63         19.01         1.27 \r\n 1998          185           18.64939      26.73         19.08         0 \r\n 1998          186           14.6709       23            16.46         0.508 \r\n 1998          187           12.02523      28.25         20.66         7.366 \r\n 1998          188           22.88589      29.54         19.85         1.016 \r\n 1998          189           22.78435      29.86         17.64         0 \r\n 1998          190           23.40212      30.77         19.94         0 \r\n 1998          191           26.20648      28.79         18.87         0 \r\n 1998          192           23.20835      27.97         18.65         0 \r\n 1998          193           23.89939      28.84         16.88         0 \r\n 1998          194           23.96524      31.57         19.12         0 \r\n 1998          195           25.10392      30.42         19.24         0 \r\n 1998          196           25.92741      29.25         17.13         27.94 \r\n 1998          197           26.28041      25.6          16.1          0 \r\n 1998          198           21.48739      27.58         16.21         0 \r\n 1998          199           24.20101      29.73         16.1          5.334 \r\n 1998          200           25.68896      30.93         19.44         1.524 \r\n 1998          201           23.14903      33.51         19.37         0 \r\n 1998          202           11.45408      26.62         18.8          1.778 \r\n 1998          203           22.90744      27.18         14.63         0 \r\n 1998          204           24.41557      23.85         12.43         0 \r\n 1998          205           24.10478      25.53         12.66         0 \r\n 1998          206           14.15489      24.47         15.48         0.508 \r\n 1998          207           23.50789      26.95         12.94         0 \r\n 1998          208           25.26634      28.21         15.73         0 \r\n 1998          209           24.35724      30.5          13.43         0 \r\n 1998          210           16.29651      26.07         9.82          0 \r\n 1998          211           21.92048      25.74         11.63         0 \r\n 1998          212           23.74562      26.86         9.15          0 \r\n 1998          213           23.81495      26.72         12.43         0 \r\n 1998          214           7.774876      22.76         15.23         4.572 \r\n 1998          215           13.7626       26.47         18.4          17.018 \r\n 1998          216           5.290124      21.54         18.89         21.844 \r\n 1998          217           5.009252      20.91         17.46         8.382 \r\n 1998          218           3.264859      20.07         17.11         0 \r\n 1998          219           14.12426      25.51         16.03         5.334 \r\n 1998          220           18.92055      27.25         14.95         0 \r\n 1998          221           18.01894      29.76         18.47         0 \r\n 1998          222           20.77753      26.44         17.87         0 \r\n 1998          223           21.96424      28.4          13.78         0 \r\n 1998          224           13.37591      25.71         16.94         0 \r\n 1998          225           20.01797      28.66         17.4          0 \r\n 1998          226           20.01793      29.58         15.98         0 \r\n 1998          227           23.03827      27.25         13.66         0 \r\n 1998          228           20.10667      29.57         17.48         0 \r\n 1998          229           17.86606      30.22         19.86         5.842 \r\n 1998          230           17.54021      28.29         19.88         0 \r\n 1998          231           14.90956      29.41         20.52         0 \r\n 1998          232           17.07014      32.21         20.94         3.302 \r\n 1998          233           13.77072      27.58         20.32         0 \r\n 1998          234           19.40594      30.61         21.45         0.254 \r\n 1998          235           19.3638       32.16         18.94         0 \r\n 1998          236           12.25176      26.6          16.97         18.034 \r\n 1998          237           22.37201      27.36         14.64         0 \r\n 1998          238           17.25298      26.85         13.19         0 \r\n 1998          239           3.675058      23.69         18.28         4.318 \r\n 1998          240           20.41319      28.65         17.15         0.762 \r\n 1998          241           21.42848      29.73         15.22         0 \r\n 1998          242           21.26685      26.97         12.64         0 \r\n 1998          243           10.23155      23.34         11.95         0 \r\n 1998          244           20.6308       27.4          9.51          0 \r\n 1998          245           18.26303      24.77         7.01          0 \r\n 1998          246           20.08998      27.04         15.09         0 \r\n 1998          247           20.70377      29.54         10.1          0 \r\n 1998          248           18.96791      32.08         13.92         0 \r\n 1998          249           17.65882      34.6          17.66         0 \r\n 1998          250           20.357        24.42         8.82          0 \r\n 1998          251           20.89356      22.62         6.156111      0 \r\n 1998          252           19.7317       24.47         6.498889      0 \r\n 1998          253           18.57311      29.96         14.08         0 \r\n 1998          254           19.16372      33.43         12.7          0 \r\n 1998          255           18.98415      34.04         13.24         0 \r\n 1998          256           15.15997      32.61         17.22         0 \r\n 1998          257           8.617576      27.23         18.42         0 \r\n 1998          258           17.37423      29.01         14.75         0 \r\n 1998          259           16.14388      28.04         12.22         0 \r\n 1998          260           14.53986      28.8          12.79         0 \r\n 1998          261           16.20986      30.92         15.65         0 \r\n 1998          262           16.79462      33.17         18.14         21.082 \r\n 1998          263           11.61198      27.09         11.34         0.508 \r\n 1998          264           10.38113      16.13         7.23          0 \r\n 1998          265           18.53629      18.77         4.08          0 \r\n 1998          266           9.859011      19.59         3.682222      23.368 \r\n 1998          267           15.99125      25.27         11.97         0 \r\n 1998          268           11.11919      28.67         15.82         0 \r\n 1998          269           13.45491      32.38         18.28         0 \r\n 1998          270           16.65056      24.3          11.17         0 \r\n 1998          271           16.2476       28.17         9.78          0 \r\n 1998          272           16.21697      27.31         13.59         5.08 \r\n 1998          273           8.083571      20.68         3.936111      0.254 \r\n 1998          274           16.36463      15.58         0.155         0 \r\n 1998          275           3.091139      8.89          5.68          7.112 \r\n 1998          276           2.128359      9.85          6.25          12.7 \r\n 1998          277           3.184108      13.05         9.57          10.414 \r\n 1998          278           2.639937      17.14         10.43         1.778 \r\n 1998          279           3.929906      11.88         5.685         0 \r\n 1998          280           9.26074       14.97         1.377222      0.254 \r\n 1998          281           15.38243      18.36         0.8611111     0 \r\n 1998          282           14.52743      20.23         6.157778      0 \r\n 1998          283           14.29736      23.11         6.863889      0 \r\n 1998          284           9.501027      21.24         7.52          0.254 \r\n 1998          285           14.81826      15.1          1.405         0 \r\n 1998          286           14.64095      12.84         0.6727778     0 \r\n 1998          287           3.778905      12.53         1.387222      53.086 \r\n 1998          288           5.20544       17.21         9.31          0.508 \r\n 1998          289           2.476217      20.16         15.52         8.128 \r\n 1998          290           3.047416      19.64         5.958889      0 \r\n 1998          291           12.07548      14.87         4.923889      0 \r\n 1998          292           13.0417       14.9          2.195         0 \r\n 1998          293           6.252151      12.63        -0.7722222     0 \r\n 1998          294           13.07981      14.23         0.1022222     0 \r\n 1998          295           12.54602      18.03        -1.498889      0 \r\n 1998          296           12.74886      19.44         3.95          0 \r\n 1998          297           11.28396      21.36         6.137778      0 \r\n 1998          298           10.2326       20.86         8.9           0 \r\n 1998          299           8.28365       23.05         5.95          3.048 \r\n 1998          300           4.800387      19.2          10.02         6.35 \r\n 1998          301           10.82551      19.33         6.532222      8.128 \r\n 1998          302           6.384868      20.64         10.87         0 \r\n 1998          303           3.897856      12.28         6.576111      0 \r\n 1998          304           2.908382      8.73          4.732222      0 \r\n 1998          305           1.695817      10.06         5.368889      0 \r\n 1998          306           5.508696      7.97          0.5038889     0 \r\n 1998          307           5.024398      4.06         -3.28          0 \r\n 1998          308           7.130456      2.88         -4.976111      0 \r\n 1998          309           7.022258      3.618889     -3.623889      0 \r\n 1998          310           7.880188      1.837778     -6.127222      0 \r\n 1998          311           3.089256      0.8127778    -6.502222      0 \r\n 1998          312           2.886667      2.192778     -1.245         0 \r\n 1998          313           2.173609      5.863889      1.462222      14.9352 \r\n 1998          314           1.460551      11.73        -1.347222      5.08 \r\n 1998          315           10.31933      4.507222     -3.442222      0 \r\n 1998          316           10.13833      1.416111     -4.727778      0 \r\n 1998          317           5.169415      7.3          -2.657778      0 \r\n 1998          318           5.567732      10.09        -1.298889      0 \r\n 1998          319           4.825533      5.312778     -1.715         0 \r\n 1998          320           2.180366      5.672778      1.026111      0 \r\n 1998          321           2.110577      4.707778      0.7277778     0 \r\n 1998          322           3.92773       11.17        -0.1438889     0 \r\n 1998          323           5.744883      3.398889     -5.107778      0 \r\n 1998          324           9.365298      2.296111     -7.41          0 \r\n 1998          325           6.948745      11.45        -6.66          0 \r\n 1998          326           6.114832      16.53         3.855         0 \r\n 1998          327           8.959283      13.03        -2.158889      0 \r\n 1998          328           7.295181      13.59        -3.52          0 \r\n 1998          329           8.601718      13.85        -1.477778      0 \r\n 1998          330           8.509169      18.81        -3.015         0 \r\n 1998          331           7.989181      21.41        -1.222222E-02                0 \r\n 1998          332           3.11185       14.86         2.375         0 \r\n 1998          333           2.424419      19.84         11.14         0 \r\n 1998          334           5.872913      11.14        -1.608889      0 \r\n 1998          335           7.621909      20.44        -8.777778E-02                0 \r\n 1998          336           6.724441      17.19         6.157778      0 \r\n 1998          337           4.544452      13.32         3.997222      0 \r\n 1998          338           1.376829      14.53         3.636111      0 \r\n 1998          339           4.835323      15.25         0.3438889     0.25 \r\n 1998          340           1.604355      0.3538889    -7.35          0 \r\n 1998          341           5.343554      4.247778     -10.15         0 \r\n 1998          342           7.976545      8.92         -7.9           0 \r\n 1998          343           6.953934      8.39         -7.54          0 \r\n 1998          344           7.907634      7.69         -7.79          0 \r\n 1998          345           7.617892      10.28        -5.298889      0 \r\n 1998          346           7.631825      10.54        -5.702222      0 \r\n 1998          347           5.615346      11.06        -3.868889      0 \r\n 1998          348           7.540154      13.2         -3.716111      0 \r\n 1998          349           7.225935      7.94         -4.06          0 \r\n 1998          350           2.371156      2.965        -4.993889      0 \r\n 1998          351           3.681794      2.337778     -7.36          0.51 \r\n 1998          352           5.148454      3.95         -4.713889      0 \r\n 1998          353           5.050213     -4.713889     -13.16         0 \r\n 1998          354           4.063752     -9.78         -17.91         0.51 \r\n 1998          355           5.50422      -15.5         -18.73         0.76 \r\n 1998          356           7.872238     -10.1         -22.49         0 \r\n 1998          357           7.586303     -7.21         -16.18         0 \r\n 1998          358           8.170892     -3.573889     -17.45         0 \r\n 1998          359           3.852418      0.345        -13.27         0 \r\n 1998          360           3.056119     -6.31         -18.67         0 \r\n 1998          361           7.653289     -2.053889     -13.72         1.02 \r\n 1998          362           3.681         2.073889     -12.98         0 \r\n 1998          363           8.228715      0.2988889    -22.77         0.51 \r\n 1998          364           2.543035     -15.33        -23.67         0.25 \r\n 1998          365           5.539281     -12.89        -24.28         3.56 \r\n 1999          1             3.186283     -12.11        -22.2          0.25 \r\n 1999          2             4.981094     -9.34         -12.27         10.92 \r\n 1999          3             6.754189     -10.19        -21.59         4.57 \r\n 1999          4             8.608622     -21.59        -30.71         0 \r\n 1999          5             3.871999     -8.62         -28.94         0 \r\n 1999          6             6.786281     -7.36         -27.12         1.02 \r\n 1999          7             5.497065     -14.92        -27.58         0 \r\n 1999          8             6.956151     -13.06        -23.92         2.79 \r\n 1999          9             8.974136     -12.49        -31.01         0.76 \r\n 1999          10            8.58197      -11.72        -19.73         0.25 \r\n 1999          11            6.582101     -7.71         -16.31         0.25 \r\n 1999          12            4.050656     -8.49         -19.57         0 \r\n 1999          13            6.570219     -10.95        -20.04         0 \r\n 1999          14            7.894957     -8.21         -22.41         0.76 \r\n 1999          15            6.16345      -1.533889     -21.29         0.25 \r\n 1999          16            9.431405      2.373889     -6.387778      0 \r\n 1999          17            3.471549      1.351111     -5.761111      0.25 \r\n 1999          18            8.682762     -1.971111     -14.67         4.06 \r\n 1999          19            9.649224     -1.638889     -12.71         0 \r\n 1999          20            6.554571      1.5          -11.63         0 \r\n 1999          21            5.807852      0.5127778    -4.782778      0 \r\n 1999          22            3.126201      0.3072222    -1.752778      5.84 \r\n 1999          23            4.36864      -0.7261111    -4.467222      0.25 \r\n 1999          24            3.836561     -4.275        -9.3           0.51 \r\n 1999          25            10.91208     -7.47         -18.75         2.03 \r\n 1999          26            5.42079       0.9472222    -7.47          0 \r\n 1999          27            4.320566      1.845        -3.572778      0.25 \r\n 1999          28            8.930329     -2.591111     -6.196111      0 \r\n 1999          29            5.646852     -2.827222     -7.94          0 \r\n 1999          30            8.031732     -1.196111     -11.01         0 \r\n 1999          31            9.465547      0.9472222    -4.267778      0 \r\n 1999          32            3.880325      0.965         4.277778E-02                0.25 \r\n 1999          33            10.9871       2.787222     -5.137778      0.25 \r\n 1999          34            8.215619      4.703889     -4.917222      0 \r\n 1999          35            11.49194     -3.262222     -12.98         0 \r\n 1999          36            7.005732      6.952222     -3.347778      0 \r\n 1999          37            10.38544      2.676111     -5.213889      0 \r\n 1999          38            8.530088      6.37         -3.6           0 \r\n 1999          39            10.58761      12.16         1.111111      0 \r\n 1999          40            11.23304      10.01        -1.383889      0 \r\n 1999          41            4.586208      12.47         2.202778      0 \r\n 1999          42            1.216749     -0.4944444    -6.833889      2.29 \r\n 1999          43            8.620337     -4.427222     -9.67          4.32 \r\n 1999          44            12.20912      0.57         -11.69         0 \r\n 1999          45            12.64133      8.82         -3.012778      0 \r\n 1999          46            7.495218      8.44          7.222222E-03                0 \r\n 1999          47            2.365341      0.2311111    -5.443889      0 \r\n 1999          48            4.637462     -2.288889     -6.298889      0 \r\n 1999          49            8.221601     -1.223889     -5.531111      0.25 \r\n 1999          50            11.78871     -0.1827778    -9.01          0.25 \r\n 1999          51            5.178788     -0.8877778    -7.52          0 \r\n 1999          52            14.53944      1.292778     -10.02         0 \r\n 1999          53            4.290524     -1.242778     -6.28          0 \r\n 1999          54            7.290034     -2.251111     -5.702778      2.54 \r\n 1999          55            8.166624      3.11         -3.631111      0 \r\n 1999          56            13.5557       8.27         -6.61          0.25 \r\n 1999          57            1.604815      1.172222     -1.582222      0 \r\n 1999          58            3.271344      3.788889     -0.8411111     6.6 \r\n 1999          59            3.458034      0.9088889    -1.912222      0 \r\n 1999          60            13.42148      11.73        -2.418889      0 \r\n 1999          61            5.454722      4.897222     -5.048889      0 \r\n 1999          62            16.28438     -0.1727778    -8.1           0 \r\n 1999          63            12.07996      4.26         -4.697778      0 \r\n 1999          64            5.628275      0.9838889    -3.725         0 \r\n 1999          65            9.903947     -3.713889     -9.73          0.51 \r\n 1999          66            13.37734      0.7688889    -10.95         0 \r\n 1999          67            5.382465     -2.808889     -6.775         5.08 \r\n 1999          68            11.09697      0.3922222    -6.727778      9.14 \r\n 1999          69            16.48458     -1.122222     -7.65          0 \r\n 1999          70            17.0526       1.432778     -11.12         0.25 \r\n 1999          71            17.20603      1.377778     -9.19          0 \r\n 1999          72            18.17057      2.298889     -8.38          0 \r\n 1999          73            18.16438      6.197778     -8.04          0 \r\n 1999          74            17.61514      8.25         -2.808889      0 \r\n 1999          75            16.80746      15.5          0.1388889     0 \r\n 1999          76            14.58655      9.33          0.645         0 \r\n 1999          77            18.67014      7.33         -2.025         0 \r\n 1999          78            18.38793      10.99        -3.906111      0 \r\n 1999          79            18.4001       11.38        -1.372778      0 \r\n 1999          80            19.22498      8.03         -2.346111      0 \r\n 1999          81            18.43793      8.98         -4.581111      0 \r\n 1999          82            19.53392      13.01        -5.031111      0 \r\n 1999          83            20.23182      6.196111     -4.295         0 \r\n 1999          84            20.15132      8.66         -6.592222      0 \r\n 1999          85            19.85936      12.76        -5.167222      0 \r\n 1999          86            17.01687      17.21        -0.5377778     0 \r\n 1999          87            14.9178       12.44        -0.3222222     6.35 \r\n 1999          88            20.44127      17.42        -1.308889      0 \r\n 1999          89            17.60255      23.09         2.213889      0 \r\n 1999          90            5.451794      17.22         10.8          0 \r\n 1999          91            5.707897      18.66         8.12          0 \r\n 1999          92            12.5671       16.16         2.506111      11.684 \r\n 1999          93            6.515785      19.86         5.338889      20.828 \r\n 1999          94            21.33811      15.46         0.4177778     0 \r\n 1999          95            19.44184      9.95          5.348889      46.736 \r\n 1999          96            17.54556      14.67         1.997778      0.254 \r\n 1999          97            20.8536       22.03         5.597222      0 \r\n 1999          98            1.844391      10.62         5.172222      23.876 \r\n 1999          99            9.44697       11.5          4.563889      2.54 \r\n 1999          100           3.062646      10.02         4.573889      2.286 \r\n 1999          101           5.575808      7.72          0.7388889     0.254 \r\n 1999          102           20.92038      15.65        -0.8577778     0 \r\n 1999          103           9.579896      16.65         7.09          0 \r\n 1999          104           11.08379      16.06         5.455         4.064 \r\n 1999          105           3.328623      5.767778      1.103889      17.272 \r\n 1999          106           7.157778      3.275556     -0.6627778     1.524 \r\n 1999          107           13.11253      9.23         -4.222222E-02                0 \r\n 1999          108           18.91879      11.18        -2.082222      0 \r\n 1999          109           21.83634      15.08         2.035         1.27 \r\n 1999          110           14.86508      17.88         2.975         1.27 \r\n 1999          111           9.316261      15.56         6.5           21.59 \r\n 1999          112           3.92614       9.94          2.532222      31.242 \r\n 1999          113           19.01825      13.47         1.586111      1.778 \r\n 1999          114           23.24409      15.68         3.966111      0 \r\n 1999          115           20.41298      17.3          3.098889      0 \r\n 1999          116           5.568402      16.42         8.21          0 \r\n 1999          117           3.575103      13.4          7.86          4.572 \r\n 1999          118           20.83875      18.44         8.08          0 \r\n 1999          119           25.41424      20.06         4.648889      0 \r\n 1999          120           25.18923      22.4          3.053889      0 \r\n 1999          121           25.23036      23.04         5.226111      0 \r\n 1999          122           20.83159      24.61         6.368889      0 \r\n 1999          123           22.18344      25.75         13.64         0 \r\n 1999          124           10.57058      22.2          16.26         0.762 \r\n 1999          125           7.032718      17.86         9.63          2.794 \r\n 1999          126           5.788271      13.6          9.6           6.858 \r\n 1999          127           4.26086       12.16         7.93          5.842 \r\n 1999          128           7.47777       10.86         3.346111      0 \r\n 1999          129           24.1249       20.72         0.3627778     0 \r\n 1999          130           17.5723       29.13         11.94         1.778 \r\n 1999          131           4.24789       17.62         10.03         12.954 \r\n 1999          132           4.136805      11.33         9.28          33.02 \r\n 1999          133           7.627892      13.5          8.94          0 \r\n 1999          134           19.74061      20.22         7.15          0 \r\n 1999          135           8.083697      17.89         12.8          2.032 \r\n 1999          136           4.497716      22.49         15.31         25.654 \r\n 1999          137           9.013926      17.41         11.82         4.826 \r\n 1999          138           26.36058      21.3          8.28          0 \r\n 1999          139           23.62809      25.41         11.4          0 \r\n 1999          140           5.135525      20.98         14.95         20.574 \r\n 1999          141           13.06776      22.29         13.19         8.382 \r\n 1999          142           21.53492      25.38         9.78          0 \r\n 1999          143           19.32648      16.43         9.41          0 \r\n 1999          144           22.74648      18.07         8.94          0 \r\n 1999          145           27.31696      21.41         8.52          0 \r\n 1999          146           27.68076      24.5          7.03          0 \r\n 1999          147           16.16484      30.21         10.68         0.762 \r\n 1999          148           24.5333       29.91         12.56         0 \r\n 1999          149           25.98929      29.64         13.27         0 \r\n 1999          150           18.79085      29.37         15.05         0 \r\n 1999          151           18.70842      21.02         14.39         0 \r\n 1999          152           9.999258      25.09         11.28         2.032 \r\n 1999          153           19.5361       23.16         8.65          0 \r\n 1999          154           20.47076      27.42         12.57         0 \r\n 1999          155           10.61686      25.55         15.29         31.242 \r\n 1999          156           19.85743      31.58         19.22         0.508 \r\n 1999          157           12.10481      30.06         16.64         19.558 \r\n 1999          158           27.19316      31.56         16.39         0 \r\n 1999          159           17.37791      31.95         17.81         35.56 \r\n 1999          160           19.72564      31.41         17.97         15.494 \r\n 1999          161           10.73552      22.98         17.46         9.144 \r\n 1999          162           9.439606      21.9          16.15         6.35 \r\n 1999          163           22.95012      25.38         15.53         0 \r\n 1999          164           19.10251      24.52         14            0 \r\n 1999          165           28.1656       20.87         10.74         0 \r\n 1999          166           9.01857       15.41         9.06          0.762 \r\n 1999          167           15.13491      19.22         8.95          0 \r\n 1999          168           27.32361      22.2          7.06          0 \r\n 1999          169           19.4179       23.24         12.9          0.508 \r\n 1999          170           11.6052       23.17         14.37         0.762 \r\n 1999          171           13.36918      26.92         17.97         0 \r\n 1999          172           19.98906      30.32         18.73         0 \r\n 1999          173           14.76864      29.33         20.1          0.762 \r\n 1999          174           17.65627      29.05         16.98         4.318 \r\n 1999          175           25.50378      31.44         15.22         0 \r\n 1999          176           25.57746      32.26         18.78         0 \r\n 1999          177           24.57217      32.21         19.68         0.508 \r\n 1999          178           13.05379      26.45         15.93         0.762 \r\n 1999          179           11.62441      20.89         11.63         0 \r\n 1999          180           19.91182      22.44         9.64          0 \r\n 1999          181           15.47155      25.07         14.78         7.874 \r\n 1999          182           19.342        24.8          13.73         0 \r\n 1999          183           2.89424       24.95         14.38         14.986 \r\n 1999          184           21.51384      31.52         20.88         12.446 \r\n 1999          185           26.03255      33.25         21.86         0 \r\n 1999          186           22.83577      32.92         23            0 \r\n 1999          187           27.75967      27.54         15.77         0 \r\n 1999          188           25.89687      29.82         12.9          0 \r\n 1999          189           22.68795      33.41         19.58         2.54 \r\n 1999          190           26.00477      27.22         14.85         0 \r\n 1999          191           24.54757      24.68         11.74         0 \r\n 1999          192           21.92671      26.6          10.81         0 \r\n 1999          193           24.73192      27.68         12.48         0 \r\n 1999          194           25.04178      29.81         16.77         0 \r\n 1999          195           25.48993      32.16         20.28         0 \r\n 1999          196           23.92043      33.34         19.78         0 \r\n 1999          197           7.928847      26.36         18.63         32.258 \r\n 1999          198           26.0613       27.86         15.7          0 \r\n 1999          199           14.36723      30.68         19.15         29.464 \r\n 1999          200           19.64363      30.77         22.61         0 \r\n 1999          201           18.09183      31.78         22.52         9.144 \r\n 1999          202           17.84995      30.91         21.94         0 \r\n 1999          203           24.30921      33.04         23.05         0 \r\n 1999          204           22.18039      31.38         22.36         0 \r\n 1999          205           23.66567      33            21.45         0 \r\n 1999          206           24.66527      33.43         23.11         1.778 \r\n 1999          207           17.64899      30.19         20.66         15.494 \r\n 1999          208           19.94973      30.1          19.88         3.556 \r\n 1999          209           24.73899      33.14         20.48         0 \r\n 1999          210           24.43523      35.28         23.92         0 \r\n 1999          211           22.50979      33.35         22.93         0.254 \r\n 1999          212           22.81154      27.56         15.95         0 \r\n 1999          213           23.12643      23.76         13.07         0 \r\n 1999          214           24.24218      25.42         14.31         0 \r\n 1999          215           21.58676      26.67         13.4          0 \r\n 1999          216           24.39849      25.53         15.19         0 \r\n 1999          217           22.62134      27.27         11.97         0 \r\n 1999          218           17.96702      27.11         13.53         1.016 \r\n 1999          219           10.29272      25            17.59         0.762 \r\n 1999          220           25.04877      23.89         13.5          0 \r\n 1999          221           18.31977      27.66         13.55         0 \r\n 1999          222           23.62931      28.45         15.54         0 \r\n 1999          223           14.26133      27.49         15.63         0 \r\n 1999          224           13.19763      29.13         16.93         6.604 \r\n 1999          225           10.66167      19.7          10.95         0 \r\n 1999          226           23.63395      22.64         7.2           0 \r\n 1999          227           13.86343      24.6          13.98         0.254 \r\n 1999          228           22.1152       29.22         15.31         0 \r\n 1999          229           22.99619      29.32         11.37         0 \r\n 1999          230           12.65819      25.09         16.5          0 \r\n 1999          231           13.26679      22.55         12.76         0 \r\n 1999          232           18.71474      25.63         11.48         0 \r\n 1999          233           12.6571       25.82         17.27         1.524 \r\n 1999          234           5.575264      22.1          17.21         20.828 \r\n 1999          235           18.1109       23.16         15.9          0 \r\n 1999          236           17.09051      24.18         15.38         0 \r\n 1999          237           19.49242      27.29         13.76         0 \r\n 1999          238           19.33163      28.27         15.96         0 \r\n 1999          239           20.56277      31.96         18.29         0 \r\n 1999          240           19.79906      31.4          17.26         0 \r\n 1999          241           13.59557      25.25         17.31         0 \r\n 1999          242           16.66228      23.76         14.11         0 \r\n 1999          243           19.59932      26.41         14.49         0 \r\n 1999          244           18.85649      29.55         16.7          0 \r\n 1999          245           19.44966      31.69         19.33         0 \r\n 1999          246           18.57616      31.13         18.81         0 \r\n 1999          247           8.112316      25.41         17.71         1.524 \r\n 1999          248           20.6854       22.13         9.5           4.572 \r\n 1999          249           20.69892      25.27         8.16          0 \r\n 1999          250           18.09413      30.03         15.2          14.478 \r\n 1999          251           20.48825      22.58         9.45          0 \r\n 1999          252           19.42188      19.19         6.537778      0 \r\n 1999          253           21.13983      23.39         4.865         0 \r\n 1999          254           19.20402      26.76         5.832778      1.778 \r\n 1999          255           14.99412      21.66         9.26          1.016 \r\n 1999          256           9.904783      17.04         5.57          0.254 \r\n 1999          257           17.50673      17.18         4.221111      1.27 \r\n 1999          258           13.46905      18.96         2.785         0 \r\n 1999          259           19.73346      22.1          2.062778      0 \r\n 1999          260           19.23787      23.06         5.236111      0 \r\n 1999          261           18.17743      26.29         7.44          0 \r\n 1999          262           9.575921      18.63         7.35          0 \r\n 1999          263           14.91178      13.48         4.277778E-02                0 \r\n 1999          264           18.8944       18.27        -2.723889      0 \r\n 1999          265           18.34136      26.92         1.46          0 \r\n 1999          266           16.91026      28.52         7.81          0 \r\n 1999          267           17.06591      23.87         6.661111      0 \r\n 1999          268           13.40608      29.65         12.16         0 \r\n 1999          269           5.537775      19.77         10.98         0 \r\n 1999          270           9.60797       16.66         8.08          0.254 \r\n 1999          271           13.55649      18.89         6.347222      0 \r\n 1999          272           17.44929      17.37        -8.888889E-02                0 \r\n 1999          273           16.84985      20.91         3.286111      0 \r\n 1999          274           6.355371      11.08        -1.208889      7.366 \r\n 1999          275           16.96399      8.3           3.888889E-03                1.524 \r\n 1999          276           9.837881      8.34         -2.517222      0 \r\n 1999          277           16.23534      14.31        -4.356111      0 \r\n 1999          278           16.34367      19.9          3.22          0 \r\n 1999          279           15.64364      20.11         1.017778      0 \r\n 1999          280           14.61015      26.11         11.26         0 \r\n 1999          281           8.996814      22.01         7.56          0.762 \r\n 1999          282           15.10056      24.75         4.911111      0 \r\n 1999          283           15.05441      20.02         5.613889      0 \r\n 1999          284           14.46074      20.41         0.4272222     0 \r\n 1999          285           9.871562      24.23         9.87          0 \r\n 1999          286           12.98613      13.14         0.1827778     0 \r\n 1999          287           14.24497      19.36         1.152222      0 \r\n 1999          288           13.08048      23.99         7.26          1.27 \r\n 1999          289           14.02109      14.24         1.206111      0 \r\n 1999          290           13.27043      10.46        -3.566111      0 \r\n 1999          291           4.142495      9.67         -2.938889      0 \r\n 1999          292           6.40198       8.51         -1.171111      0 \r\n 1999          293           13.60499      14.29        -5.531111      0 \r\n 1999          294           11.57081      24.22         2.288889      0 \r\n 1999          295           13.66068      10.76         0.595         0 \r\n 1999          296           14.13774      7.88         -5.627778      0 \r\n 1999          297           13.74528      13.56        -8.65          0 \r\n 1999          298           12.1123       20.74         1.13          0 \r\n 1999          299           11.18044      18.9         -1.537222      0 \r\n 1999          300           11.82122      24.77         8.32          0 \r\n 1999          301           11.28312      16.41         4.162222      0 \r\n 1999          302           8.879117      25.2          5.622778      13.97 \r\n 1999          303           5.868938      15.97         3.313889      0.254 \r\n 1999          304           11.83168      18.66         1.197222      0 \r\n 1999          305           11.0112       11.8          1.47          0 \r\n 1999          306           12.43209      6.997222     -6.012222      0 \r\n 1999          307           11.99938      14.54        -6.758889      0 \r\n 1999          308           8.381515      15.65        -4.096111      0 \r\n 1999          309           9.305216      13.52        -1.698889      0 \r\n 1999          310           11.13659      14.99        -3.387222      0 \r\n 1999          311           10.27954      19.37         0.305         0 \r\n 1999          312           10.26724      26.29         6.317222      0 \r\n 1999          313           9.424335      22.23         8.76          0 \r\n 1999          314           7.64262       12.87         3.492222      0 \r\n 1999          315           4.860051      11.89         4.921111      0 \r\n 1999          316           8.587493      18.19         0.2561111     0 \r\n 1999          317           9.771398      24.36         4.343889      0 \r\n 1999          318           9.818216      10.59        -3.177222      0 \r\n 1999          319           9.459438      15.31        -5.557778      0 \r\n 1999          320           9.592908      11.39        -1.902778      0 \r\n 1999          321           8.965182      13.4          0.7961111     0 \r\n 1999          322           8.222857      22.64         2.955         0 \r\n 1999          323           7.811402      5.081111     -4.842222      0 \r\n 1999          324           7.399948      7.82         -10.19         0 \r\n 1999          325           7.204178      15.93         0.2861111     0 \r\n 1999          326           8.999575      12.34        -2.385         0 \r\n 1999          327           1.311893      5.387222     -0.4272222     0 \r\n 1999          328           9.356972      6.832778     -3.491111      0 \r\n 1999          329           9.086853      7.85         -3.14          0 \r\n 1999          330           4.319561      6.93          1.467778      0 \r\n 1999          331           8.903845      6.442222     -3.056111      0 \r\n 1999          332           6.39516       7.2          -3.642778      0 \r\n 1999          333           8.901794      3.702222     -6.815         0 \r\n 1999          334           2.746085      4.012222     -5.146111      0 \r\n 1999          335           4.238852      8.74          0.11          0 \r\n 1999          336           2.730646      12.17         4.771111      0 \r\n 1999          337           1.038971      8.82          4.827778      0.51 \r\n 1999          338           2.155011      5.007222     -1.706111      5.59 \r\n 1999          339           7.273424      0.8761111    -6.863889      0 \r\n 1999          340           6.880797      2.73         -9.66          0 \r\n 1999          341           8.026502      7.32         -3.396111      0 \r\n 1999          342           7.730819      9.19         -1.942222      0 \r\n 1999          343           6.488003      4.543889     -5.741111      0 \r\n 1999          344           6.892429      2.177222     -10            0 \r\n 1999          345           5.734632      4.332222     -6.301111      0 \r\n 1999          346           8.16926       8.6          -7.24          0 \r\n 1999          347           8.293818      7.04         -9.57          0 \r\n 1999          348           1.702679     -0.04         -6.31          0 \r\n 1999          349           1.452225     -0.1072222    -12.52         0 \r\n 1999          350           5.081343     -7.32         -17.74         0 \r\n 1999          351           5.163767     -5.607778     -17.34         1.02 \r\n 1999          352           6.977657     -4.153889     -18.14         0 \r\n 1999          353           3.180468     -1.217778     -13.56         0.25 \r\n 1999          354           8.934681     -12.77        -24.71         5.08 \r\n 1999          355           7.052216     -14.34        -27.18         0 \r\n 1999          356           8.487453     -14.18        -23.9          1.52 \r\n 1999          357           4.586752     -1.507222     -23.7          0 \r\n 1999          358           6.025462     -7.31         -22.03         1.02 \r\n 1999          359           8.402392      2.882222     -12.47         0 \r\n 1999          360           8.427748      2.533889     -7.63          0 \r\n 1999          361           8.039347     -1.082778     -15.11         1.02 \r\n 1999          362           7.926546      4.062222     -8.82          0 \r\n 1999          363           8.294152      7.1          -4.917778      0 \r\n 1999          364           7.466808      6.478889     -4.84          0 \r\n 1999          365           8.110182      5.302222     -6.215         0 \r\n 2000          1             3.772378      1.292778     -3.376111      0 \r\n 2000          2             1.939619      1.272222     -3.25          1.02 \r\n 2000          3             2.994112     -1.322222     -8.29          2.54 \r\n 2000          4             7.600278     -8.29         -15.49         3.05 \r\n 2000          5             3.390421     -0.4661111    -14.89         0 \r\n 2000          6             6.92975      -1.947778     -11.52         1.02 \r\n 2000          7             8.84962       0.9238889    -19.8          0.51 \r\n 2000          8             8.875561      3.721111     -6.562222      0 \r\n 2000          9             2.2348        3.062222     -5.242778      0 \r\n 2000          10            7.040207      2.732778     -3.527222      0.25 \r\n 2000          11            6.818916     -3.282222     -9.86          0 \r\n 2000          12            4.076639     -1.686111     -10.16         0 \r\n 2000          13            9.362829     -6.368889     -14.09         0 \r\n 2000          14            7.030375      4.497222     -12.07         0 \r\n 2000          15            7.118908      7.96         -8.23          0 \r\n 2000          16            4.432153     -4.487222     -14            0 \r\n 2000          17            1.202021     -3.13         -6.192778      0 \r\n 2000          18            9.985242     -2.448889     -9.36          0 \r\n 2000          19            4.847959     -3.103889     -19.81         0.76 \r\n 2000          20            10.29293     -10.48        -22.71         9.14 \r\n 2000          21            8.017757     -11.29        -24.76         0 \r\n 2000          22            7.803578     -4.048889     -11.7          0.76 \r\n 2000          23            11.20262     -10.74        -21.97         0 \r\n 2000          24            8.932338     -2.383889     -21.96         0 \r\n 2000          25            10.25599     -5.568889     -18.09         0 \r\n 2000          26            11.45219     -7.57         -23.04         0 \r\n 2000          27            10.73359     -6.846111     -20.38         0 \r\n 2000          28            8.950664     -6.37         -16.2          0 \r\n 2000          29            8.456533     -3.462222     -8.44          0.25 \r\n 2000          30            8.617241     -5.637222     -16.2          0.51 \r\n 2000          31            11.01346     -3.285        -17.48         0 \r\n 2000          32            5.639488     -4.421111     -12.81         0 \r\n 2000          33            8.682009      1.713889     -12.6          0 \r\n 2000          34            3.621796      0.8061111    -7.52          0 \r\n 2000          35            5.137492     -4.202222     -10.33         0 \r\n 2000          36            10.70815      1.472222     -13.51         0 \r\n 2000          37            8.104198      4.316111     -3.858889      0 \r\n 2000          38            12.09678     -2.037778     -9.25          0.51 \r\n 2000          39            10.58711      7.98         -10.51         0 \r\n 2000          40            9.564959      5.302222     -1.292222      0 \r\n 2000          41            1.894515      1.367778     -7.16          0 \r\n 2000          42            13.40943     -5.686111     -13.11         0 \r\n 2000          43            4.013502      0.165        -10.14         0 \r\n 2000          44            7.929977     -3.053889     -6.803889      3.56 \r\n 2000          45            12.66815     -1.651111     -7.58          0.25 \r\n 2000          46            10.07076      8.16         -6.661111      0 \r\n 2000          47            13.64666     -2.29         -10.12         0 \r\n 2000          48            5.238828     -1.28         -6.417222      0 \r\n 2000          49            7.664962     -2.666111     -5.5           6.6 \r\n 2000          50            14.14033     -1.462222     -11.3          1.52 \r\n 2000          51            14.61099      3.145        -14.61         0 \r\n 2000          52            11.7793       9.19         -1.997222      0 \r\n 2000          53            9.885369      14.16         1.33          0 \r\n 2000          54            5.36121       14.54         5.35          1.78 \r\n 2000          55            4.210401      11.54         4.722778      2.03 \r\n 2000          56            5.393469      15.78         7.66          6.86 \r\n 2000          57            5.782748      7.76          1.452222      4.57 \r\n 2000          58            15.59703      10.27        -0.52          0 \r\n 2000          59            14.34112      16.78        -1.056111      0 \r\n 2000          60            5.994793      14.59         0.9238889     0 \r\n 2000          61            15.87322      9.08         -1.827222      9.4 \r\n 2000          62            15.68782      7.14         -4.572222      0 \r\n 2000          63            16.5032       11.24        -3.982778      0 \r\n 2000          64            16.08869      20.13        -1.271111      0 \r\n 2000          65            16.32865      21.09         2.762778      0 \r\n 2000          66            14.22882      22.56         5.102778      0 \r\n 2000          67            13.76862      25.08         8.87          0 \r\n 2000          68            9.608849      21.45         4.628889      0.51 \r\n 2000          69            5.071845      4.647778     -3.611111      4.83 \r\n 2000          70            7.988469      0.3511111    -5.768889      0 \r\n 2000          71            18.45023      6.527778     -7.95          0 \r\n 2000          72            6.122322      3.467222     -5.088889      0 \r\n 2000          73            14.53693      9.68         -3.242778      0.76 \r\n 2000          74            15.11922      14.54        -3.442222      0.25 \r\n 2000          75            4.738547      7.27         -5.108889      1.27 \r\n 2000          76            19.61899      1.855        -8.57          2.54 \r\n 2000          77            19.69036      6.701111     -10.09         0 \r\n 2000          78            8.528708      2.762222     -1.245         2.54 \r\n 2000          79            8.098048      1.916111     -1.133889      2.79 \r\n 2000          80            4.592609      5.16          0.09          0 \r\n 2000          81            4.217053      8.46          3.37          0 \r\n 2000          82            6.685404      12.37         4.145         0 \r\n 2000          83            10.73639      18.88         7.04          0 \r\n 2000          84            5.20657       15.57         4.525         6.1 \r\n 2000          85            20.16901      15.7          0.7672222     0.51 \r\n 2000          86            11.21944      18.68        -8.222222E-02                0 \r\n 2000          87            15.87506      13.55        -3.641111      0.25 \r\n 2000          88            21.35689      12           -3.585         0 \r\n 2000          89            21.20384      14.11        -5.012222      0 \r\n 2000          90            15.79598      17.03        -2.346111      0 \r\n 2000          91            14.74898      15.45        -1.262778      0 \r\n 2000          92            11.5924       14.66         3.287222      0 \r\n 2000          93            15.31373      17.96         0.6622222     0 \r\n 2000          94            11.84449      8.25         -1.225         0 \r\n 2000          95            22.51636      11.44        -5.377222      0 \r\n 2000          96            19.58673      26.47         2.391111      0 \r\n 2000          97            21.41129      14.93        -0.1061111     0 \r\n 2000          98            9.711147      7.5          -4.45          30.734 \r\n 2000          99            24.20595      8.61         -9.82          0.254 \r\n 2000          100           21.75019      11.89        -0.2972222     0 \r\n 2000          101           2.445255      4.982222      0.6827778     1.016 \r\n 2000          102           9.608974      6.49         -3.936111      0 \r\n 2000          103           10.68928      10.06        -4.343889      0 \r\n 2000          104           18.67047      22.95         4.706111      0 \r\n 2000          105           20.86406      27.95         5.272778      0 \r\n 2000          106           6.916445      7.55          1.14          0 \r\n 2000          107           3.03612       4.516111      1.752778      13.208 \r\n 2000          108           7.045312      6.862778      1.187778      0 \r\n 2000          109           19.7217       22.57         3.842778      0 \r\n 2000          110           3.10252       12.45         9.45          13.97 \r\n 2000          111           4.004757      9.45          3.221111      0 \r\n 2000          112           24.84074      16.82        -0.7738889     0 \r\n 2000          113           21.06037      25.57         2.41          0 \r\n 2000          114           22.5531       20.65         5.872222      0 \r\n 2000          115           24.41941      20.73         2.392778      0 \r\n 2000          116           25.08074      21.3          4.431111      0 \r\n 2000          117           22.39699      23.67         2.136111      1.778 \r\n 2000          118           8.037506      17.42         10.08         1.27 \r\n 2000          119           22.41611      20.62         6.375         0 \r\n 2000          120           25.39495      19.48         1.911111      0 \r\n 2000          121           20.73314      25.47         6.14          0 \r\n 2000          122           24.0662       25.16         6.672222      0 \r\n 2000          123           25.47868      26.85         5.975         0 \r\n 2000          124           18.37274      27.54         10.47         0 \r\n 2000          125           24.3831       30.98         13.19         0 \r\n 2000          126           24.50268      30.65         15.12         0 \r\n 2000          127           19.60773      29.59         14.56         0 \r\n 2000          128           16.42576      31.3          16.27         0 \r\n 2000          129           6.057219      24.06         12.22         10.16 \r\n 2000          130           13.40072      18.57         7.25          0 \r\n 2000          131           8.718786      22.71         5.063889      0.254 \r\n 2000          132           19.19389      28.73         13.06         10.922 \r\n 2000          133           18.02978      20.64         6.1           0.254 \r\n 2000          134           21.63806      12.71         3.212778      0 \r\n 2000          135           26.62493      19.75         1.047222      0 \r\n 2000          136           15.50887      22.82         5.196111      6.35 \r\n 2000          137           22.91577      22.59         10.17         3.302 \r\n 2000          138           5.724298      22.83         14.88         1.778 \r\n 2000          139           7.466055      15.93         9.75          12.7 \r\n 2000          140           26.76233      17.01         3.342778      0 \r\n 2000          141           25.27207      23.05         5.13          0 \r\n 2000          142           23.03773      24.78         12.05         0 \r\n 2000          143           19.7217       28.71         13.04         2.286 \r\n 2000          144           21.27765      28.43         12.75         0.254 \r\n 2000          145           20.96544      24.44         10.34         0 \r\n 2000          146           26.59643      25.13         6.432222      4.699 \r\n 2000          147           5.840027      20.61         11.17         31.3944 \r\n 2000          148           3.482762      15.39         10.15         2.7686 \r\n 2000          149           8.448291      17.23         9.83          0 \r\n 2000          150           17.80869      21.43         10.78         3.2258 \r\n 2000          151           15.80958      29.14         15.46         6.2484 \r\n 2000          152           5.194352      20.01         15.58         27.686 \r\n 2000          153           9.925034      28.18         12.57         5.588 \r\n 2000          154           25.66282      19.87         8.19          0 \r\n 2000          155           23.47425      24.93         7.69          0.254 \r\n 2000          156           7.657808      18.77         11.15         13.208 \r\n 2000          157           20.58105      18.98         9.53          0 \r\n 2000          158           26.97508      24.13         7.41          0 \r\n 2000          159           19.60158      30.93         14.11         0 \r\n 2000          160           26.29623      35.61         17.86         0 \r\n 2000          161           26.89341      33.01         18.21         0 \r\n 2000          162           10.61004      29.28         20.32         5.334 \r\n 2000          163           24.90534      28.51         16.76         0 \r\n 2000          164           11.99515      24.72         15.9          0 \r\n 2000          165           5.160462      21.22         14.88         37.084 \r\n 2000          166           12.53405      20.68         13.91         0.254 \r\n 2000          167           12.00302      23.46         10.68         6.858 \r\n 2000          168           22.53511      18.36         8.34          0.254 \r\n 2000          169           17.23988      19.26         5.91          0 \r\n 2000          170           25.7488       25.06         9.87          0 \r\n 2000          171           23.68136      27.9          12.8          1.778 \r\n 2000          172           20.58503      26.66         14.61         4.064 \r\n 2000          173           27.26324      27.42         12.68         0 \r\n 2000          174           27.8059       29.95         11.78         0 \r\n 2000          175           18.55031      28.8          15.1          0.762 \r\n 2000          176           15.18051      27.76         15.66         2.032 \r\n 2000          177           9.345926      26.08         14.03         5.08 \r\n 2000          178           26.24908      25.27         14.34         0 \r\n 2000          179           24.65686      24.18         11.39         0 \r\n 2000          180           19.79576      22.8          12.23         3.302 \r\n 2000          181           24.10026      25.06         10.91         0 \r\n 2000          182           25.36964      27.38         12.11         0 \r\n 2000          183           26.17305      28.3          15.6          0 \r\n 2000          184           11.2291       31.01         18.56         4.064 \r\n 2000          185           9.342914      23.88         19.11         0 \r\n 2000          186           8.771588      25.9          20.25         5.588 \r\n 2000          187           15.36298      28.47         19.87         0 \r\n 2000          188           23.61989      29.8          19.26         0 \r\n 2000          189           19.36435      28.85         19.98         0 \r\n 2000          190           25.34512      32.57         23.57         0 \r\n 2000          191           18.00752      30.05         18.91         43.434 \r\n 2000          192           22.21323      28.78         19.38         38.1 \r\n 2000          193           18.70809      26.85         19.5          4.318 \r\n 2000          194           19.79798      28.1          18.42         0.254 \r\n 2000          195           26.01502      31.1          16.92         0 \r\n 2000          196           26.40916      29.23         17.28         0 \r\n 2000          197           25.07392      29.4          16.06         0 \r\n 2000          198           18.48575      28.71         17.78         2.54 \r\n 2000          199           26.11837      25.01         13.87         0 \r\n 2000          200           8.861378      17.86         12.31         0.254 \r\n 2000          201           11.76645      19.21         12.2          0 \r\n 2000          202           19.39903      23.14         9.68          0 \r\n 2000          203           24.24452      23.37         8.59          0 \r\n 2000          204           24.13971      24.98         7.84          0 \r\n 2000          205           22.46967      26.58         9.75          0 \r\n 2000          206           19.73325      26.44         15.22         0 \r\n 2000          207           17.57042      26.67         17.75         10.922 \r\n 2000          208           20.74072      28.05         15.71         3.556 \r\n 2000          209           25.05162      28.86         13.01         0 \r\n 2000          210           22.77088      24.83         14.95         0 \r\n 2000          211           16.2117       25.43         15.87         0 \r\n 2000          212           22.35499      27.53         14.69         0 \r\n 2000          213           23.60684      28.74         14.3          0 \r\n 2000          214           23.34726      29.54         17.09         0 \r\n 2000          215           24.18168      26.8          14.11         0 \r\n 2000          216           19.1523       25.76         12.18         0 \r\n 2000          217           22.07487      27.03         15.7          0 \r\n 2000          218           10.57594      26.7          17.55         17.018 \r\n 2000          219           21.09276      26            16.35         0 \r\n 2000          220           22.98932      30.05         15.35         0 \r\n 2000          221           18.14316      28.94         17.7          6.858 \r\n 2000          222           24.60707      28.16         16.3          0 \r\n 2000          223           23.54136      29.61         13.45         0 \r\n 2000          224           21.96391      28.72         15.89         0 \r\n 2000          225           20.95033      30.33         19.9          0 \r\n 2000          226           13.80779      29.54         19.86         0 \r\n 2000          227           22.14173      31.6          19.78         0 \r\n 2000          228           21.0723       27.19         13.69         0 \r\n 2000          229           10.13549      21.56         11.59         50.038 \r\n 2000          230           7.765295      20.81         15.07         23.622 \r\n 2000          231           22.11073      23.47         12.89         0 \r\n 2000          232           9.366261      20.45         11.59         0 \r\n 2000          233           18.60989      23.61         15.06         0 \r\n 2000          234           5.996174      21.95         15.6          0 \r\n 2000          235           8.738786      24.99         16.17         3.556 \r\n 2000          236           14.51522      27.51         15.03         0.254 \r\n 2000          237           21.30221      28.54         12.85         0 \r\n 2000          238           17.32728      29.33         18.01         0 \r\n 2000          239           16.41354      28.42         17.2          0 \r\n 2000          240           17.23168      26.16         15.67         0 \r\n 2000          241           7.494381      26.56         19.47         0 \r\n 2000          242           9.808635      20.75         14.48         0 \r\n 2000          243           14.48543      31.03         15.55         0 \r\n 2000          244           18.49265      32.86         18.82         0 \r\n 2000          245           12.61058      27.71         17.5          1.778 \r\n 2000          246           13.9823       32.17         17.06         0 \r\n 2000          247           20.32951      31.04         14.92         0.254 \r\n 2000          248           9.040997      22            12.47         0 \r\n 2000          249           21.34534      23.15         9.08          0 \r\n 2000          250           20.19734      25.93         9.56          0 \r\n 2000          251           15.1375       25.56         10.43         0.254 \r\n 2000          252           20.46076      28.65         8.36          0 \r\n 2000          253           18.99235      32.15         19.36         0 \r\n 2000          254           18.25253      33.28         12.97         5.334 \r\n 2000          255           18.81352      34.56         11            0 \r\n 2000          256           20.52177      24.56         6.742222      0 \r\n 2000          257           18.89871      32.6          10.98         8.89 \r\n 2000          258           19.73882      23.58         7.36          0.254 \r\n 2000          259           18.89448      20.35         3.523889      0 \r\n 2000          260           18.42203      27.41         5.462222      0 \r\n 2000          261           18.14973      31.25         8.89          0 \r\n 2000          262           10.12833      30.86         17.77         0 \r\n 2000          263           3.476946      25.16         12.04         4.064 \r\n 2000          264           9.105012      16.37         3.303889      2.794 \r\n 2000          265           15.32875      18.49        -0.135         0 \r\n 2000          266           2.016521      12.92         9.14          15.748 \r\n 2000          267           2.773323      11.96         7.62          1.016 \r\n 2000          268           5.547817      9.84          3.306111      0 \r\n 2000          269           18.33709      18.09        -0.67          0 \r\n 2000          270           17.84786      25.2          2.572222      0 \r\n 2000          271           17.08787      23.09         3.617778      0 \r\n 2000          272           16.85227      26            6.131111      0 \r\n 2000          273           15.41448      28.8          11.58         0 \r\n 2000          274           14.21585      28.8          15.95         0 \r\n 2000          275           8.067882      26.41         13.58         0 \r\n 2000          276           14.86127      20.7          7.04          1.524 \r\n 2000          277           6.075042      18.38         6.1           4.572 \r\n 2000          278           12.05988      14.65         3.483889      0 \r\n 2000          279           3.214986      9.49          0.4172222     3.556 \r\n 2000          280           8.79686       4.732222     -4.268889      0 \r\n 2000          281           7.425847      4.817778     -5.481111      0 \r\n 2000          282           16.7224       8.25         -6.932222      0 \r\n 2000          283           16.20212      13.74        -7.19          0 \r\n 2000          284           16.01811      17.32        -4.208889      0 \r\n 2000          285           15.27081      20.14        -1.207222      0 \r\n 2000          286           10.87309      22.59         9.51          0 \r\n 2000          287           11.84248      26.77         14.07         3.81 \r\n 2000          288           13.92276      19.69         7.75          0.254 \r\n 2000          289           12.89153      14.18         2.672778      1.524 \r\n 2000          290           7.377396      14.87         1.123889      10.414 \r\n 2000          291           11.87628      18.46         7.25          0.508 \r\n 2000          292           13.54311      24.5          4.948889      0 \r\n 2000          293           13.13977      27.76         9             0 \r\n 2000          294           11.23195      21.61         4.951111      0 \r\n 2000          295           9.988254      23.06         4.583889      0 \r\n 2000          296           3.495648      16.37         9.8           4.572 \r\n 2000          297           3.803507      20.77         14.24         7.366 \r\n 2000          298           6.761009      21.81         13.56         0 \r\n 2000          299           5.794212      22.15         16.29         8.89 \r\n 2000          300           7.433085      21.47         8.84          0.254 \r\n 2000          301           3.193982      11.82         7.49          0 \r\n 2000          302           5.702206      12.89         7.33          0 \r\n 2000          303           3.970407      14.01         8.05          0.508 \r\n 2000          304           7.511493      19.96         8.91          1.778 \r\n 2000          305           7.494716      21.9          9.46          0 \r\n 2000          306           1.257585      19.28         10.4          29.972 \r\n 2000          307           11.41345      14.46         1.847778      0 \r\n 2000          308           11.56884      11.03         0.86          0 \r\n 2000          309           10.99861      14.89         2.741111      0 \r\n 2000          310           3.372597      13.48         3.957222      2.286 \r\n 2000          311           3.061893      9.63          6.978889      27.9654 \r\n 2000          312           2.751189      7.54         -3.546111      0 \r\n 2000          313           5.533758     -2.167222     -5.052222      0 \r\n 2000          314           1.435614     -1.846111     -3.962778      0 \r\n 2000          315           9.440066      2.76         -4.172778      0 \r\n 2000          316           5.080757      2.055        -3.537778      3.048 \r\n 2000          317           2.194299      1.162222     -3.536111      9.9568 \r\n 2000          318           4.107977      0.345        -4.82          0 \r\n 2000          319           10.35126     -2.182778     -9.07          0 \r\n 2000          320           7.587349      3.722222     -10.4          4.0894 \r\n 2000          321           5.434221      2.797222     -6.417778      0 \r\n 2000          322           5.26774      -5.282222     -12.67         0 \r\n 2000          323           5.291965     -3.85         -12.25         0 \r\n 2000          324           4.386798      0.26         -8.84          0 \r\n 2000          325           7.932278     -7.92         -15.65         0 \r\n 2000          326           9.473873     -2.223889     -17.95         0 \r\n 2000          327           8.713431     -5.328889     -13.66         0 \r\n 2000          328           8.302646      2.806111     -10.68         0 \r\n 2000          329           8.512892      7.1          -9.11          0 \r\n 2000          330           4.715996      4.222778     -3.396111      0 \r\n 2000          331           2.071247     -2.553889     -5.07          0 \r\n 2000          332           7.365681      4.781111     -6.117222      0 \r\n 2000          333           2.682823      2.862778     -6.631111      0 \r\n 2000          334           1.875855      0.43         -3.262222      0 \r\n 2000          335           2.789222     -0.8127778    -4.231111      2.8702 \r\n 2000          336           6.214412     -0.7072222    -5.052222      3.81 \r\n 2000          337           9.206724     -1.337222     -15.86         0.76 \r\n 2000          338           7.897928     -1.158889     -13.97         0 \r\n 2000          339           2.698387      1.33         -14.33         0 \r\n 2000          340           6.723646     -11.8         -17.45         0 \r\n 2000          341           3.647025     -4.057778     -14.19         0 \r\n 2000          342           2.818468      2.187778     -9.7           0 \r\n 2000          343           8.392393     -8.14         -14.25         0 \r\n 2000          344           1.101229     -1.535        -8.79          0 \r\n 2000          345           6.318886     -1.413889     -19.41         0.25 \r\n 2000          346           3.470795     -17.08        -21.74         6.86 \r\n 2000          347           7.588856     -17.99        -26.38         4.06 \r\n 2000          348           4.064881     -11.84        -18.03         0.25 \r\n 2000          349           6.888077     -11.77        -21.32         2.29 \r\n 2000          350           6.072658     -7.43         -14.14         0 \r\n 2000          351           5.45535      -7.01         -19.1          2.29 \r\n 2000          352           8.417747     -12.82        -21.64         1.27 \r\n 2000          353           5.235314     -11.88        -16.89         4.32 \r\n 2000          354           9.106936     -15.38        -22.74         5.59 \r\n 2000          355           4.71859      -8.51         -18.2          0.76 \r\n 2000          356           7.389781     -18.15        -21.39         2.29 \r\n 2000          357           9.19455      -16.37        -27.07         0 \r\n 2000          358           7.326812     -12.4         -23.18         4.83 \r\n 2000          359           9.281576     -21           -28.67         0 \r\n 2000          360           6.015546     -11.98        -29.23         0 \r\n 2000          361           7.776257     -9.99         -20.55         0 \r\n 2000          362           7.510154     -10.75        -22            0 \r\n 2000          363           2.296681     -10.18        -12.36         1.52 \r\n 2000          364           7.329322     -11.72        -17.03         6.86 \r\n 2000          365           6.525952     -14.15        -20.04         0 \r\n 2000          366           6.181442     -13           -15.5          1.02 \r\n 2001          1             5.854546     -9.9          -16.14         2.03 \r\n 2001          2             8.364444     -5.271111     -19.82         0 \r\n 2001          3             5.824546     -2.202778     -8.4           0 \r\n 2001          4             4.968207      3.138889     -8.05          0 \r\n 2001          5             8.525904      0.7022222    -10.3          0 \r\n 2001          6             8.636194      2.537222     -7.72          0 \r\n 2001          7             5.046741      0.3738889    -9.78          0 \r\n 2001          8             8.25294      -5.376111     -19.66         0.25 \r\n 2001          9             8.509921     -4.382222     -20.91         0 \r\n 2001          10            8.346453      2.865        -6.642222      0 \r\n 2001          11            2.641234      1.913889     -0.6511111     0 \r\n 2001          12            3.189965     -0.5388889    -3.367222      1.27 \r\n 2001          13            3.905555      0.445        -2.023889      0 \r\n 2001          14            5.223682      0.7772222    -0.9422222     7.62 \r\n 2001          15            4.743484     -3.888889E-03               -6.932222      0 \r\n 2001          16            8.843261     -6.862222     -12.37         0 \r\n 2001          17            8.369758     -6.717778     -10.52         0 \r\n 2001          18            5.664592     -0.895        -14.3          0 \r\n 2001          19            10.632       -14.28        -24.71         0 \r\n 2001          20            10.44331     -9.75         -26.16         0 \r\n 2001          21            10.49263     -10.49        -19.31         0 \r\n 2001          22            9.599936     -3.376111     -18            0 \r\n 2001          23            9.811898     -3.716111     -12.64         0 \r\n 2001          24            10.09888     -9.97         -19.92         0 \r\n 2001          25            10.11566     -6.502778     -23.62         0 \r\n 2001          26            4.270776     -2.345        -14.03         1.52 \r\n 2001          27            11.20839     -5.887222     -20.09         1.02 \r\n 2001          28            6.773101     -3.327778     -13.42         0 \r\n 2001          29            2.445464      0.7011111    -4.04          1.52 \r\n 2001          30            5.249455      0.6622222    -4.277222      14.73 \r\n 2001          31            10.68786     -3.982222     -13.14         0 \r\n 2001          32            12.58907     -10.43        -23.61         0 \r\n 2001          33            9.498726     -14.2         -26.74         0 \r\n 2001          34            6.194956     -1.997222     -15.94         1.02 \r\n 2001          35            6.113451     -0.6688889    -8.78          2.03 \r\n 2001          36            7.600194      2.121667     -7.222222      0.25 \r\n 2001          37            12.35439     -1.323333     -12.03056      0 \r\n 2001          38            3.225822     -1.652778     -10.50944      0 \r\n 2001          39            2.460485     -0.9055555    -5.883889      3.3 \r\n 2001          40            7.126273     -6.008333     -19.72889      8.64 \r\n 2001          41            13.36332     -11.735       -22.37722      0.25 \r\n 2001          42            10.57665     -6.505        -19.65944      0 \r\n 2001          43            9.153629      0.355        -8.053333      0 \r\n 2001          44            4.631019      0.2161111    -8.017222      0 \r\n 2001          45            6.119895     -1.179444     -14.12722      0.51 \r\n 2001          46            11.16756     -7.705555     -13.53056      3.3 \r\n 2001          47            14.50681     -9.371667     -18.79445      0 \r\n 2001          48            14.5545      -13.36222     -22.01167      0 \r\n 2001          49            14.2474      -2.085556     -16.085        0 \r\n 2001          50            14.35413      0.2322222    -8.717222      0 \r\n 2001          51            14.31945     -5.896111     -15.66333      0 \r\n 2001          52            13.63997     -11.48444     -20.28278      0 \r\n 2001          53            14.30773     -1.573333     -12.17222      0 \r\n 2001          54            14.2346      -3.665555     -15.45444      0 \r\n 2001          55            9.199152      5.003334     -2.795556      3.81 \r\n 2001          56            15.1819       3.405555     -8.262222      12.19 \r\n 2001          57            12.01687     -1.077778     -10.98167      0 \r\n 2001          58            12.80275     -10.06389     -18.12167      0 \r\n 2001          59            16.17857     -4.592778     -20.29167      0 \r\n 2001          60            11.03898     -2.419445     -11.72         0 \r\n 2001          61            16.75282      0.8011111    -6.389444      0.76 \r\n 2001          62            16.16656      2.296667     -10.24444      0 \r\n 2001          63            17.61954     -2.631111     -9.145         0 \r\n 2001          64            15.57013      0            -11.55722      0 \r\n 2001          65            17.12105     -1.301111     -12.26889      0 \r\n 2001          66            10.75062     -1.255        -7.295556      0 \r\n 2001          67            13.88912     -1.728333     -6.336667      0 \r\n 2001          68            14.45882     -1.677778     -8.801111      0 \r\n 2001          69            9.55588       2.45         -4.748889      0.25 \r\n 2001          70            15.71741     -0.4855556    -9.831667      0 \r\n 2001          71            9.894909      0.7933334    -2.34          16 \r\n 2001          72            10.63284      1.948889     -2.845556      0.25 \r\n 2001          73            17.33142      6.155        -2.622778      0 \r\n 2001          74            15.41344      0.2511111    -2.245556      0 \r\n 2001          75            13.89795     -1.882222     -4.718333      0 \r\n 2001          76            19.8735      -4.722222E-02               -9.485         0 \r\n 2001          77            17.40306      1.433333     -10.85389      0 \r\n 2001          78            12.90228      2.952778     -5.679444      0 \r\n 2001          79            19.80266      5.328889     -6.262778      0 \r\n 2001          80            13.41014      5.706111     -0.7888889     0 \r\n 2001          81            9.794827      8.644444     -2.288333      0 \r\n 2001          82            9.799514     -0.3977778    -6.732222      0 \r\n 2001          83            17.27762     -6.537222     -11.05         0 \r\n 2001          84            17.60343     -6.246111     -10.9          0 \r\n 2001          85            20.90983     -3.097222     -12.37         0 \r\n 2001          86            21.39953      2.922222     -12.48         0 \r\n 2001          87            4.086847      1.787778     -1.212778      0 \r\n 2001          88            9.379272      4.816111      0.5861111     2.79 \r\n 2001          89            14.90199      8.96          6.111111E-02                0.25 \r\n 2001          90            15.83983      4.968889     -1.476111      4.32 \r\n 2001          91            16.52935      8.34         -2.442778      0 \r\n 2001          92            18.88557      8.6           0.4188889     0 \r\n 2001          93            13.91088      8.98          0.24          0 \r\n 2001          94            18.16074      13.9          0.5222222     0 \r\n 2001          95            4.051075      13.42         5.482222      2.032 \r\n 2001          96            4.156385      15.81         3.686111      5.08 \r\n 2001          97            8.489629      17.81         5.663889      0 \r\n 2001          98            20.90243      16.83        -0.425         0 \r\n 2001          99            7.109076      10.49         4.063889      0 \r\n 2001          100           10.97338      16            5.246111      1.27 \r\n 2001          101           5.611581      17.92         9.77          64.262 \r\n 2001          102           8.611843      11.17         2.436111      1.27 \r\n 2001          103           16.57383      14.78        -5.777778E-02                3.556 \r\n 2001          104           18.90812      17.85         0.5872222     0.254 \r\n 2001          105           20.03153      12.28        -0.8088889     0.762 \r\n 2001          106           9.66617       0.4011111    -2.792778      0 \r\n 2001          107           23.88658      9.02         -2.49          0 \r\n 2001          108           22.95547      16.55        -3.248889      0 \r\n 2001          109           15.90853      21.18         5.255         0 \r\n 2001          110           20.09726      26.67         10.3          4.064 \r\n 2001          111           6.304744      16.81         5.245         0 \r\n 2001          112           5.284769      22.21         5.567778      7.62 \r\n 2001          113           6.133786      17.9          2.042778      0 \r\n 2001          114           20.6244       18.75        -0.8727778     2.286 \r\n 2001          115           23.86265      22.24         2.361111      0.254 \r\n 2001          116           23.85993      26.91         9.13          0 \r\n 2001          117           24.42778      26.55         7.92          0 \r\n 2001          118           19.21581      27.63         10.89         0 \r\n 2001          119           22.21625      29.1          13.29         0 \r\n 2001          120           4.466838      19.88         12.74         18.796 \r\n 2001          121           18.25701      28.12         10.95         14.224 \r\n 2001          122           4.334038      15.85         11.92         45.974 \r\n 2001          123           6.914227      15.6          10.7          20.066 \r\n 2001          124           7.199242      14.99         11.04         1.27 \r\n 2001          125           3.696941      16.05         9.91          7.112 \r\n 2001          126           11.71558      21.75         11.42         7.366 \r\n 2001          127           24.21101      18.43         8.02          0 \r\n 2001          128           25.51654      22.86         6.908889      0 \r\n 2001          129           20.68578      28.6          11.1          0 \r\n 2001          130           7.967299      21.94         10.38         1.27 \r\n 2001          131           21.78776      19.55         9.01          0 \r\n 2001          132           21.00753      20.77         5.653889      0 \r\n 2001          133           11.19668      17.87         12.15         1.016 \r\n 2001          134           25.17253      33.57         12.25         0 \r\n 2001          135           21.16317      34.68         19.53         0 \r\n 2001          136           23.77876      29.53         15.16         0 \r\n 2001          137           20.54725      27.39         12.73         0 \r\n 2001          138           19.03641      26.27         10.26         0 \r\n 2001          139           21.76835      29.79         11.49         0.762 \r\n 2001          140           2.963778      19.01         10.15         52.07 \r\n 2001          141           15.62837      14.15         7.82          2.794 \r\n 2001          142           11.03145      11.11         6.032222      0.508 \r\n 2001          143           13.54445      9.22          4.667778      0.508 \r\n 2001          144           14.60078      14.06         4.981111      4.572 \r\n 2001          145           8.473771      14.59         9.77          21.844 \r\n 2001          146           10.87986      15.24         9.53          16.002 \r\n 2001          147           13.96987      17.62         9.15          0 \r\n 2001          148           24.57251      21.57         10.23         0 \r\n 2001          149           19.74689      23.76         8.15          0 \r\n 2001          150           12.79869      18.86         11.9          0 \r\n 2001          151           7.587307      13.59         7.7           1.016 \r\n 2001          152           16.98369      21.58         4.753889      3.81 \r\n 2001          153           16.82319      19.47         9.15          0 \r\n 2001          154           24.61435      18.47         7.5           0 \r\n 2001          155           14.58735      17.17         8.95          4.064 \r\n 2001          156           6.828413      14.62         9.85          10.414 \r\n 2001          157           18.93507      22.97         13.07         0 \r\n 2001          158           15.56825      24.81         14.18         0 \r\n 2001          159           21.71312      26.45         11.11         0 \r\n 2001          160           20.9654       29.71         13.87         0 \r\n 2001          161           23.75219      31.08         18.08         2.286 \r\n 2001          162           19.511        36.79         17.29         26.924 \r\n 2001          163           6.216964      25.7          18.98         4.826 \r\n 2001          164           20.8118       30.97         19.94         3.556 \r\n 2001          165           5.914963      24.27         17.08         38.862 \r\n 2001          166           24.70807      23.87         13.46         1.778 \r\n 2001          167           27.19793      27.12         12.95         0 \r\n 2001          168           21.77977      30.49         15.03         0 \r\n 2001          169           24.60979      34.62         17.11         0 \r\n 2001          170           19.69472      23.48         12.98         0 \r\n 2001          171           21.3043       26.84         12.52         0 \r\n 2001          172           22.33649      24.17         13.88         0 \r\n 2001          173           27.1355       24.02         10.07         0 \r\n 2001          174           26.60647      27.48         11.71         0 \r\n 2001          175           25.56386      33.65         16.75         0 \r\n 2001          176           26.12761      34.25         21.3          0 \r\n 2001          177           23.6724       32.63         21.39         0 \r\n 2001          178           23.51755      31.87         19.11         0 \r\n 2001          179           23.9334       30.73         16.4          0 \r\n 2001          180           25.20613      32.05         16.98         0 \r\n 2001          181           15.74205      31.91         19.98         3.302 \r\n 2001          182           17.4464       21.67         11.95         0.508 \r\n 2001          183           18.77537      24.83         10.54         0 \r\n 2001          184           24.55025      30.29         18.4          7.874 \r\n 2001          185           26.3051       29.47         15.83         0 \r\n 2001          186           27.54444      26.93         10.55         0 \r\n 2001          187           20.74126      30.95         14.99         0 \r\n 2001          188           12.82078      30.47         21.47         0 \r\n 2001          189           16.00698      33.54         19.43         0 \r\n 2001          190           23.24409      32.66         16.9          0 \r\n 2001          191           20.70616      30.95         16.02         0 \r\n 2001          192           21.47007      27.19         13.41         0 \r\n 2001          193           22.71987      28.08         14.72         0 \r\n 2001          194           26.89099      28.87         14.37         0 \r\n 2001          195           22.74799      29.58         13.65         0 \r\n 2001          196           21.99663      28.94         15.4          0 \r\n 2001          197           13.61792      29.95         18.12         1.27 \r\n 2001          198           20.05295      30.81         21.62         0 \r\n 2001          199           20.85251      31.29         21.99         0 \r\n 2001          200           16.45333      28.74         20.57         35.306 \r\n 2001          201           9.102208      27.43         21.79         0 \r\n 2001          202           13.39985      30.02         22.81         2.286 \r\n 2001          203           3.62326       26.22         21.06         15.494 \r\n 2001          204           20.93146      29.97         21.48         8.636 \r\n 2001          205           9.634623      26.16         17.28         54.356 \r\n 2001          206           22.42787      26.39         15.86         0 \r\n 2001          207           25.18806      24.35         16.65         0 \r\n 2001          208           11.71185      24.37         16.95         0 \r\n 2001          209           22.83292      26.77         16.37         1.778 \r\n 2001          210           23.26869      29.39         14.32         0 \r\n 2001          211           22.49431      32.19         20.63         0 \r\n 2001          212           23.93466      32.9          24.59         0 \r\n 2001          213           10.63016      31.36         24.49         3.81 \r\n 2001          214           14.94073      29.75         22.29         1.27 \r\n 2001          215           18.17099      29.04         21.6          0.762 \r\n 2001          216           23.32128      31.3          20.07         0 \r\n 2001          217           23.95294      31.8          22.9          0 \r\n 2001          218           22.43507      32.7          22.33         0 \r\n 2001          219           22.99288      32.18         21.11         0 \r\n 2001          220           23.70901      30.68         17.63         0 \r\n 2001          221           18.07927      26.33         13.07         0 \r\n 2001          222           22.6974       22.45         10.72         0 \r\n 2001          223           24.5538       24.72         8.67          0 \r\n 2001          224           19.99613      27.83         14.4          0 \r\n 2001          225           24.72041      24.57         10.27         0 \r\n 2001          226           10.00206      21.45         10.28         2.286 \r\n 2001          227           2.220407      18.16         13.51         43.688 \r\n 2001          228           17.67347      23.09         12.13         0 \r\n 2001          229           22.7028       25.61         9.46          0.254 \r\n 2001          230           12.20406      20.55         13.32         3.81 \r\n 2001          231           22.54138      24.75         12.75         0 \r\n 2001          232           22.49444      24.57         11.37         0 \r\n 2001          233           13.01379      25.9          16            0 \r\n 2001          234           14.23347      27.62         19.09         0 \r\n 2001          235           19.80777      28.82         18.29         0 \r\n 2001          236           4.977412      21.76         19.38         0 \r\n 2001          237           13.95628      26.55         15.87         1.778 \r\n 2001          238           21.92508      28.82         12.99         0 \r\n 2001          239           21.14251      26.8          13.25         0 \r\n 2001          240           21.68212      27.55         10.41         0 \r\n 2001          241           19.66225      28.64         16.22         0 \r\n 2001          242           20.88649      26.29         11.99         1.778 \r\n 2001          243           22.08976      22.13         9.63          0 \r\n 2001          244           16.96687      23.1          7.98          0 \r\n 2001          245           19.96822      25.55         14.71         0 \r\n 2001          246           20.63884      27.48         11.39         0 \r\n 2001          247           20.1304       26.78         9.25          0 \r\n 2001          248           19.91672      27.81         13.26         0 \r\n 2001          249           5.446522      23.9          19.04         8.89 \r\n 2001          250           8.122566      23.85         15.4          22.352 \r\n 2001          251           14.66643      19.14         11.44         5.588 \r\n 2001          252           11.31605      19.42         10.07         0 \r\n 2001          253           20.55708      22.7          8.2           0 \r\n 2001          254           20.08613      26.34         10.73         0 \r\n 2001          255           18.4173       25.26         12.4          0 \r\n 2001          256           6.673061      18.68         9.6           0 \r\n 2001          257           2.927043      12.33         10.22         9.652 \r\n 2001          258           6.702642      16.02         10.91         0 \r\n 2001          259           6.153074      17.23         11.41         6.35 \r\n 2001          260           8.447078      19.24         12.42         0 \r\n 2001          261           5.083016      16.5          11.88         0 \r\n 2001          262           8.73979       20.63         8.77          0 \r\n 2001          263           13.77327      24.63         8.17          13.97 \r\n 2001          264           14.58463      21.59         9.39          0 \r\n 2001          265           12.03461      24.7          7.15          5.588 \r\n 2001          266           4.234334      14.46         3.852222      0 \r\n 2001          267           18.5465       14.91         0.72          0 \r\n 2001          268           18.53144      17.61         0.4111111     0 \r\n 2001          269           17.88555      22.23        -0.01          0 \r\n 2001          270           17.55849      25.67         3.297222      0 \r\n 2001          271           17.38343      23.01         5.837222      0 \r\n 2001          272           15.38139      20.71         6.207222      0 \r\n 2001          273           16.31781      25.14         5.136111      0 \r\n 2001          274           16.263        26.28         8.33          0 \r\n 2001          275           15.74176      30.47         9.88          0 \r\n 2001          276           15.4513       18.11         8.88          0 \r\n 2001          277           4.052957      15.38         6.95          0 \r\n 2001          278           14.56513      12.54        -2.565         0 \r\n 2001          279           15.81016      10.91        -3.677778      0 \r\n 2001          280           14.83751      20.4          0.1172222     0 \r\n 2001          281           10.85225      20.55         9.52          0 \r\n 2001          282           2.774076      18.1          12.05         4.572 \r\n 2001          283           4.820805      17.57         4.408889      2.286 \r\n 2001          284           14.111        20.34         2.01          0 \r\n 2001          285           10.41138      17.86         2.94          0 \r\n 2001          286           4.030656      12.28         2.168889      15.748 \r\n 2001          287           8.658663      12.11         1.362778      0 \r\n 2001          288           5.932242      8.68          0.715         0 \r\n 2001          289           13.31223      9.73         -3.412778      0 \r\n 2001          290           13.33269      16.42        -4.01          0 \r\n 2001          291           9.567469      14.64         0.265         0 \r\n 2001          292           12.18176      16.95        -2.388889E-02                0 \r\n 2001          293           9.469062      17.91        -0.4161111     0 \r\n 2001          294           11.62449      19.02         3.983889      0 \r\n 2001          295           4.662775      17.82         2.477778      11.43 \r\n 2001          296           12.06155      19.03         9.68          0.508 \r\n 2001          297           6.073369      13.36         0.8088889     0 \r\n 2001          298           4.694825      4.305        -1.853889      0 \r\n 2001          299           12.96852      5.401111     -5.546111      0 \r\n 2001          300           12.14163      8.12         -9.05          0 \r\n 2001          301           11.7211       20.74         1.558889      0 \r\n 2001          302           9.082543      14.49         4.852222      0 \r\n 2001          303           3.435357      12.92         4.238889      0 \r\n 2001          304           4.504494      17.76         9.48          0 \r\n 2001          305           10.08273      21.52         4.522222      0 \r\n 2001          306           11.58797      17.15        -1.235         0 \r\n 2001          307           8.976646      21            7.777778E-02                0 \r\n 2001          308           10.87677      19.5         -0.3822222     0 \r\n 2001          309           10.6351       21.41         4.371111      0 \r\n 2001          310           9.750937      22.23         8.92          0 \r\n 2001          311           9.511697      24.34         8.35          0 \r\n 2001          312           10.14068      8.61         -4.723889      0 \r\n 2001          313           10.521        17           -4.78          0 \r\n 2001          314           10.47515      14.61        -1.458889      0 \r\n 2001          315           10.28247      14.77        -2.701111      0 \r\n 2001          316           8.832884      18.04         2.197222      3.048 \r\n 2001          317           2.857463      16.34         11.87         4.064 \r\n 2001          318           1.677533      17.33         13.29         0 \r\n 2001          319           4.474621      19.14         6.227222      0 \r\n 2001          320           9.134048      22.51         2.846111      0 \r\n 2001          321           7.765462      20.76         5.43          0 \r\n 2001          322           1.906523      15.38         3.372222      3.048 \r\n 2001          323           9.915411      6.846111     -5.66          0 \r\n 2001          324           6.225876      12.09        -7.17          0 \r\n 2001          325           9.214884      17.83        -1.177778      0 \r\n 2001          326           7.851695      15.88         2.047778      0 \r\n 2001          327           1.737908      11.69         5.543889      20.9042 \r\n 2001          328           2.969218      13.06         2.357222      24.9428 \r\n 2001          329           1.153445      2.912222      0.255         0 \r\n 2001          330           1.169721      8.4           0.4911111     11.4046 \r\n 2001          331           1.185997      5.3          -1.873889      0 \r\n 2001          332           1.351306     -0.9072222    -2.015         0 \r\n 2001          333           1.179762      0.4438889    -2.098889      0 \r\n 2001          334           1.295827      0.865        -0.5688889     0 \r\n 2001          335           6.859919      4.928889     -3.522778      0 \r\n 2001          336           5.824337      10.73        -0.5772222     0 \r\n 2001          337           4.692691      10.81        -3.371111      0 \r\n 2001          338           2.294798      14.53         7.75          0.25 \r\n 2001          339           1.48645       16.15         0.8188889     0.76 \r\n 2001          340           7.98985       7.32         -1.422222      7.87 \r\n 2001          341           2.209528      3.231111     -3.027222      0 \r\n 2001          342           8.452182      1.183889     -5.057222      0 \r\n 2001          343           7.900229      9.05         -5.162222      0 \r\n 2001          344           7.460155      6.886111     -3.041111      0 \r\n 2001          345           8.028259      8.98         -2.117778      0 \r\n 2001          346           1.037632      5.117222     -2.297222      3.05 \r\n 2001          347           2.753197     -1.611111     -5.127222      0.25 \r\n 2001          348           5.064439      2.582778     -5.287222      0 \r\n 2001          349           4.97963       8.17          1.232222      0 \r\n 2001          350           6.170291      6.57         -0.2511111     0.51 \r\n 2001          351           7.360953      7.83         -5.835         0 \r\n 2001          352           4.782312      6.703889     -4.415         0 \r\n 2001          353           8.213778      3.872222     -8.17          0 \r\n 2001          354           7.884288      6.935        -9.26          0 \r\n 2001          355           5.493341      4.833889     -10.27         0 \r\n 2001          356           1.025749      4.957222     -8.94          0.76 \r\n 2001          357           6.008517     -6.018889     -11.15         5.33 \r\n 2001          358           7.433964     -7.43         -13.4          0 \r\n 2001          359           7.892739     -10.21        -15.51         0 \r\n 2001          360           3.772587     -4.812222     -13.79         0 \r\n 2001          361           2.41011      -3.626111     -11.1          0 \r\n 2001          362           4.252074     -6.347222     -13.78         0.25 \r\n 2001          363           7.026944     -11.2         -17.1          0 \r\n 2001          364           6.759127     -8.6          -18.76         0 \r\n 2001          365           8.945392     -9.9          -18.77         0 \r\n 2002          1             6.094247     -10.58        -16.27         0 \r\n 2002          2             7.912111     -8.42         -18.35         0 \r\n 2002          3             8.326746     -2.852778     -19.29         0 \r\n 2002          4             6.501894      2.507778     -7.98          0 \r\n 2002          5             4.754154      3.702778     -4.337778      0 \r\n 2002          6             4.244208     -0.9977778    -13.78         0 \r\n 2002          7             7.805587      0.6322222    -15.85         0 \r\n 2002          8             7.692702      13.22        -5.377222      0 \r\n 2002          9             5.071803      10.21        -1.562778      0 \r\n 2002          10            4.470144      3.74         -3.417778      0 \r\n 2002          11            8.659918      8.81         -6.165         0 \r\n 2002          12            8.87987       4.636111     -4.603889      0 \r\n 2002          13            4.793274      8.75         -5.578889      0 \r\n 2002          14            2.35986      -0.2222222    -4.281111      2.03 \r\n 2002          15            3.501966     -3.417778     -6.068889      0 \r\n 2002          16            7.431035     -5.053889     -11.96         0.51 \r\n 2002          17            7.220119     -4.472222     -13.32         0.25 \r\n 2002          18            10.0293      -7.19         -19.48         0 \r\n 2002          19            7.891442      0.9788889    -8.85          0.51 \r\n 2002          20            9.162333      6.83         -9.76          0 \r\n 2002          21            9.358353      8.82         -9.73          0 \r\n 2002          22            8.556908      12.58        -1.836111      0 \r\n 2002          23            4.014715     -1.065        -11.04         0 \r\n 2002          24            10.11386      6.695        -14.98         0 \r\n 2002          25            9.856081      13.38        -8.58          0 \r\n 2002          26            10.30984      18.02        -2.212222      0 \r\n 2002          27            7.231416      13.15        -5.945         0 \r\n 2002          28            1.447371     -2.088889     -7.17          0 \r\n 2002          29            2.645941     -1.252778     -7.36          0 \r\n 2002          30            3.84451      -4.613889     -10.26         0.51 \r\n 2002          31            4.067517     -3.305        -5.665         2.29 \r\n 2002          32            8.867737     -5.646111     -15.33         8.13 \r\n 2002          33            10.80459     -0.935        -13.77         0 \r\n 2002          34            11.66311     -3.578889     -16.88         0 \r\n 2002          35            12.73873     -10.46        -23.87         0 \r\n 2002          36            11.89959     -3.827222     -14.6          0 \r\n 2002          37            10.39565      0.8472222    -12.57         0 \r\n 2002          38            11.75896      2.037778     -12.32         0 \r\n 2002          39            12.00113      4.607222     -6.98          0 \r\n 2002          40            2.136225      3.778889      0.2288889     0 \r\n 2002          41            13.00249      0.3977778    -9.53          7.62 \r\n 2002          42            8.977107      3.778889     -8.74          0 \r\n 2002          43            10.97731      1.552222     -9.82          0 \r\n 2002          44            13.27583      4.012778     -11.51         0 \r\n 2002          45            7.789144      6.112778     -0.08          0 \r\n 2002          46            11.67913      7            -0.8972222     0 \r\n 2002          47            11.76315      6.826111     -1.477222      0 \r\n 2002          48            13.09538      7.21         -4.632222      0 \r\n 2002          49            2.579143      6.962222      1.326111      0 \r\n 2002          50            1.267543      8.23          1.531111      3.56 \r\n 2002          51            2.215679      1.531111     -1.977222      5.33 \r\n 2002          52            13.21663      2.227778     -4.005         0.76 \r\n 2002          53            10.47142      3.252778     -6.808889      0 \r\n 2002          54            11.98331      14.59         1.251111      0 \r\n 2002          55            5.078413      9.8          -3.202222      0 \r\n 2002          56            11.00467     -3.126111     -11.22         0 \r\n 2002          57            12.42301     -7.38         -13.26         0.25 \r\n 2002          58            16.39379     -2.088889     -15.29         0 \r\n 2002          59            13.86101     -0.165        -12.5          0 \r\n 2002          60            5.800614     -8.41         -14.3          0 \r\n 2002          61            14.30112     -8.1          -15.2          5.33 \r\n 2002          62            16.83989     -14.63        -22.47         0 \r\n 2002          63            7.370744     -0.765        -21.94         0 \r\n 2002          64            15.2101       4.907778     -13.96         0.25 \r\n 2002          65            5.469367     -1.487778     -6.532778      0 \r\n 2002          66            4.220819      1.851111     -6.107778      0 \r\n 2002          67            2.517053      0.97         -1.967222      1.52 \r\n 2002          68            11.64031     -0.55         -12.09         9.4 \r\n 2002          69            16.48345     -3.597222     -15.77         0.51 \r\n 2002          70            10.32942      3.211111     -3.626111      0 \r\n 2002          71            11.9695       8.94         -4.975         0 \r\n 2002          72            6.222319      2.538889     -0.1461111     0 \r\n 2002          73            1.102819      1.278889     -1.177778      0 \r\n 2002          74            9.900682     -0.4088889    -4.127778      1.02 \r\n 2002          75            17.76857      6.626111     -7.05          0 \r\n 2002          76            3.386697      1.597222     -0.6338889     0 \r\n 2002          77            12.17389      6.683889     -2.117222      0 \r\n 2002          78            3.342807      3.222222     -1.083889      3.56 \r\n 2002          79            18.26416      8.38         -6.108889      0 \r\n 2002          80            17.83631     -6.098889     -12.39         0 \r\n 2002          81            20.43842      1.728889     -11.98         0 \r\n 2002          82            16.96637      4.681111     -8.85          0 \r\n 2002          83            12.4666       3.125        -5.473889      0 \r\n 2002          84            20.80469      2.321111     -9.23          0 \r\n 2002          85            20.32298      5.761111     -10.84         0 \r\n 2002          86            16.91641      15.42        -4.727778      0 \r\n 2002          87            19.36619      13.78         0.55          0 \r\n 2002          88            18.76926      13.82         0.09          0 \r\n 2002          89            14.89592      8.89         -2.09          0 \r\n 2002          90            18.58675      5.818889     -6.988889      0.76 \r\n 2002          91            10.33758      3.947778     -7.04          3.556 \r\n 2002          92            10.59092      1.673889     -5.588889      0 \r\n 2002          93            11.83302     -1.337778     -7.24          0 \r\n 2002          94            21.57044      5.647222     -9.58          0 \r\n 2002          95            22.31461      10.24        -4.612778      0 \r\n 2002          96            18.4373       13.6         -5.31          0 \r\n 2002          97            3.135824      12.62         8.14          0 \r\n 2002          98            7.950437      11.69         1.525         0.762 \r\n 2002          99            22.89033      16.42        -3.777778      0 \r\n 2002          100           17.74116      24.63         6.522778      0 \r\n 2002          101           1.611802      15.52         6.085         23.622 \r\n 2002          102           12.62652      14.77         3.763889      0 \r\n 2002          103           16.16635      17.76         1.197778      0 \r\n 2002          104           17.23193      24.9          7.21          0 \r\n 2002          105           20.62084      33.32         14.55         0 \r\n 2002          106           14.0841       30.29         14.55         1.778 \r\n 2002          107           23.04045      22.84         8.36          0 \r\n 2002          108           17.49171      31.13         8.66          0 \r\n 2002          109           10.06532      13.31         4.555         0 \r\n 2002          110           16.62759      13.04         2.962222      4.318 \r\n 2002          111           5.341169      4.488889     -0.2122222     5.588 \r\n 2002          112           18.81495      10.55        -0.2561111     0.254 \r\n 2002          113           23.48542      22.06         2.342222      0 \r\n 2002          114           18.43186      15.28         0.9622222     0.508 \r\n 2002          115           24.63648      11.83        -1.393889      0 \r\n 2002          116           23.65508      14.11        -4.176111      0 \r\n 2002          117           2.053842      8.96          3.478889      27.686 \r\n 2002          118           6.415369      6.06          1.591111      0 \r\n 2002          119           25.29801      19.57         1.855         0 \r\n 2002          120           18.75921      18.18         6.422222      0 \r\n 2002          121           2.993108      10.75         3.602778      14.986 \r\n 2002          122           20.74762      13.58        -0.3138889     0 \r\n 2002          123           25.76444      19.89        -0.7172222     0 \r\n 2002          124           23.56479      20.72         5.312222      0 \r\n 2002          125           17.59385      25.39         3.575         3.81 \r\n 2002          126           20.85582      26.5          10.76         0 \r\n 2002          127           16.85805      21.7          6.281111      0 \r\n 2002          128           15.23206      27.57         7.77          0 \r\n 2002          129           19.26991      12.36         2.5           0 \r\n 2002          130           17.88212      17.42        -1.063889      0 \r\n 2002          131           2.535211      12.69         6.908889      33.02 \r\n 2002          132           7.097989      9.76          3.882778      0.254 \r\n 2002          133           25.25902      19.69         3.298889      0 \r\n 2002          134           27.03454      20.87         2.932222      0 \r\n 2002          135           16.66872      25.36         11.83         0 \r\n 2002          136           12.13598      19.3          8.21          0 \r\n 2002          137           24.83622      15.1          3.468889      0 \r\n 2002          138           24.84664      16.38         1.037222      0 \r\n 2002          139           28.00636      17.2          2.388889      0 \r\n 2002          140           28.34844      15.91         1.092778      0 \r\n 2002          141           27.65561      19.73         3.327778      0 \r\n 2002          142           16.47944      25.54         8.68          0 \r\n 2002          143           23.23664      22.46         7.24          0 \r\n 2002          144           21.95056      17.84         4.167222      2.54 \r\n 2002          145           17.56606      20.21         7.73          8.128 \r\n 2002          146           23.82068      28.51         10.62         0 \r\n 2002          147           24.59146      29.13         13.13         0 \r\n 2002          148           14.58727      27.89         16.22         0 \r\n 2002          149           23.6706       29.73         17.09         0 \r\n 2002          150           23.10267      33.63         17.83         0 \r\n 2002          151           18.66959      30.18         15.67         0 \r\n 2002          152           16.83181      31.96         14.65         0 \r\n 2002          153           9.496341      21.53         14.85         3.556 \r\n 2002          154           9.165303      21.33         12.35         0 \r\n 2002          155           8.351222      15.11         10.21         22.352 \r\n 2002          156           23.45852      22.98         9.2           0 \r\n 2002          157           24.89183      27.47         11.1          0 \r\n 2002          158           24.33469      31.26         15.75         0 \r\n 2002          159           18.89323      31.79         19.98         0 \r\n 2002          160           21.3961       31.94         19.41         0 \r\n 2002          161           9.382746      29.41         20.41         0 \r\n 2002          162           12.75547      27.3          19.28         16.764 \r\n 2002          163           23.09447      26.43         16.89         0 \r\n 2002          164           22.6974       22.23         13.53         0 \r\n 2002          165           24.16377      24.32         12.05         0 \r\n 2002          166           15.90037      23.89         11.71         0.254 \r\n 2002          167           25.70825      26.32         7.38          0 \r\n 2002          168           11.96197      23.58         12.05         4.318 \r\n 2002          169           19.39025      28.52         16.57         0.254 \r\n 2002          170           21.06761      29.46         20.18         3.556 \r\n 2002          171           19.87488      26.57         15.36         6.35 \r\n 2002          172           19.97885      31.53         18.99         0 \r\n 2002          173           23.70039      32.54         21.02         0 \r\n 2002          174           25.6016       32.68         20.74         0 \r\n 2002          175           25.75139      31.64         18.87         0 \r\n 2002          176           23.41542      33.14         19.03         0 \r\n 2002          177           25.98553      31.12         16.35         0 \r\n 2002          178           22.75171      29.58         14.78         0 \r\n 2002          179           25.54696      31.03         14.79         0 \r\n 2002          180           25.58533      35.05         19.18         0 \r\n 2002          181           26.45577      34.25         21.99         0 \r\n 2002          182           26.59514      32.52         21.76         0 \r\n 2002          183           23.19467      32.07         18.86         0 \r\n 2002          184           23.25128      32.02         19.64         0 \r\n 2002          185           20.66729      31.14         20.32         0 \r\n 2002          186           20.74026      31.38         20.98         0 \r\n 2002          187           18.66646      33.66         18.69         1.524 \r\n 2002          188           22.59394      30.53         19.32         0 \r\n 2002          189           22.21139      32.34         21.4          0 \r\n 2002          190           23.77349      31.29         18.82         0 \r\n 2002          191           14.91458      26.57         17.53         40.386 \r\n 2002          192           6.572102      20.07         15.16         0.254 \r\n 2002          193           26.57555      24.88         12.29         0 \r\n 2002          194           27.70544      26.48         11.84         0 \r\n 2002          195           26.7063       27.71         12.19         0 \r\n 2002          196           25.83762      28.23         13.31         0 \r\n 2002          197           25.35538      29.9          16.84         0 \r\n 2002          198           25.05408      31.24         17.84         0 \r\n 2002          199           15.43524      31.32         21.71         0 \r\n 2002          200           21.10008      32.64         20.63         0 \r\n 2002          201           21.1133       33.73         23.12         0 \r\n 2002          202           24.80392      33.38         20.34         17.526 \r\n 2002          203           24.40494      26.71         14.91         31.496 \r\n 2002          204           24.34205      24.94         12.86         0 \r\n 2002          205           18.67256      25.35         15.44         0.762 \r\n 2002          206           19.1677       28.53         17.89         0 \r\n 2002          207           23.26045      30.51         18.6          0 \r\n 2002          208           16.90579      31.18         19.66         6.604 \r\n 2002          209           23.7296       30.78         18.19         1.778 \r\n 2002          210           24.43586      30.2          18.91         0 \r\n 2002          211           24.98087      32            19.29         0 \r\n 2002          212           24.54535      31.33         22.01         0 \r\n 2002          213           18.06752      27.77         12.32         0 \r\n 2002          214           25.67181      25.08         9.29          0 \r\n 2002          215           21.61555      30.95         14.31         20.828 \r\n 2002          216           16.63822      29.36         20.29         44.45 \r\n 2002          217           9.813488      26.61         20.76         30.226 \r\n 2002          218           13.30043      22.77         15.84         1.524 \r\n 2002          219           22.8092       24.82         15.34         0 \r\n 2002          220           24.61698      25.7          14.24         0 \r\n 2002          221           21.36928      26.31         14.73         0 \r\n 2002          222           21.1284       28.08         16.6          0 \r\n 2002          223           20.66553      29.93         17.08         0 \r\n 2002          224           9.481571      24.62         14.19         56.134 \r\n 2002          225           11.35592      22.43         12.82         0.762 \r\n 2002          226           24.31147      26.71         11.03         0.254 \r\n 2002          227           22.46139      26.9          14.47         0 \r\n 2002          228           13.19964      25.41         11.66         7.366 \r\n 2002          229           22.47247      23.92         9.47          14.224 \r\n 2002          230           19.76379      22.35         6.095         0 \r\n 2002          231           24.07557      23.68         9.88          0 \r\n 2002          232           17.13298      25.79         10.03         0 \r\n 2002          233           10.35619      27.92         19.76         19.05 \r\n 2002          234           16.47371      27.37         19.48         18.288 \r\n 2002          235           8.73636       24.39         17.02         1.778 \r\n 2002          236           19.36489      26.61         16.33         0.254 \r\n 2002          237           19.07327      27.99         16.44         0 \r\n 2002          238           18.58483      30.2          15.57         4.064 \r\n 2002          239           19.98161      26.9          16.52         0 \r\n 2002          240           18.78942      27.41         16.31         0 \r\n 2002          241           18.92344      27.07         16.64         0 \r\n 2002          242           14.16686      26.23         14.63         0 \r\n 2002          243           15.95045      28.01         16.43         0 \r\n 2002          244           15.09688      29.65         18.42         0 \r\n 2002          245           16.55634      29.99         13.37         0 \r\n 2002          246           18.43115      28.04         10.2          0 \r\n 2002          247           17.43845      28.47         11.69         0 \r\n 2002          248           16.06472      30.35         16.43         0 \r\n 2002          249           15.92849      31.29         18.24         0 \r\n 2002          250           17.63021      33.18         18.87         0 \r\n 2002          251           17.13026      33.31         16.99         0 \r\n 2002          252           16.89809      31.9          18.29         0 \r\n 2002          253           13.32207      23.9          9.31          2.54 \r\n 2002          254           17.44962      24.05         6.75          0 \r\n 2002          255           18.48048      26.18         8.5           0 \r\n 2002          256           6.587875      21.78         12.92         0 \r\n 2002          257           5.287781      21.37         8.63          2.54 \r\n 2002          258           20.05672      21.86         5.087778      0 \r\n 2002          259           19.29096      28.36         6.483889      0 \r\n 2002          260           14.94993      26.57         10.79         0 \r\n 2002          261           6.815736      25.21         17.6          12.446 \r\n 2002          262           4.835491      19.29         14.48         0 \r\n 2002          263           13.79657      24.14         11.51         0.254 \r\n 2002          264           3.00407       14.8          6.408889      0 \r\n 2002          265           18.79792      16.85         2.977222      0 \r\n 2002          266           16.66813      15.59         2             0 \r\n 2002          267           15.34344      19.35        -1.157778      0.508 \r\n 2002          268           8.899451      22.81         11.39         0 \r\n 2002          269           3.318665      12.14         8.54          3.81 \r\n 2002          270           15.21348      19.36         6.287222      0.254 \r\n 2002          271           8.697281      21.56         5.385         0 \r\n 2002          272           10.30498      27.51         13.27         0 \r\n 2002          273           13.40453      31.39         13.81         0 \r\n 2002          274           9.767507      27.27         9.63          5.842 \r\n 2002          275           1.467705      13.71         7.28          28.194 \r\n 2002          276           2.616548      14.61         8.43          15.24 \r\n 2002          277           5.863918      16.65         2.637778      41.656 \r\n 2002          278           12.13808      18.79         0.8272222     0 \r\n 2002          279           8.764141      15.17        -0.2138889     1.524 \r\n 2002          280           12.95019      17.08        -2.933889      0 \r\n 2002          281           9.984823      19.48         6.687222      1.524 \r\n 2002          282           14.78471      18.84        -1.132778      0 \r\n 2002          283           11.98143      24.65         11.95         0 \r\n 2002          284           14.01414      24.88         10.88         0 \r\n 2002          285           7.934077      16.2         -1.817778      1.524 \r\n 2002          286           15.2083       14.01        -5.01          0 \r\n 2002          287           14.62601      17.1          3.503889      0 \r\n 2002          288           13.06395      9.46         -3.965         0 \r\n 2002          289           5.02716       5.327222     -4.267222      1.27 \r\n 2002          290           9.355592      9.61          0.1711111     0 \r\n 2002          291           4.034171      14.57         2.45          0 \r\n 2002          292           7.111754      5.5          -6.095         0 \r\n 2002          293           8.550966      10.53        -6.152222      0 \r\n 2002          294           3.174777      6.907222      0.4438889     0 \r\n 2002          295           4.994943      5.766111     -3.657222      0 \r\n 2002          296           6.733018      2.347778     -2.852778      0 \r\n 2002          297           3.618951      2.706111     -1.507778      4.572 \r\n 2002          298           2.298522      6.231111      2.432222      1.27 \r\n 2002          299           8.494524      8.06         -3.901111      0 \r\n 2002          300           2.23434       3.882222     -4.755         0.508 \r\n 2002          301           3.038212      4.241111      2.111111E-02                4.318 \r\n 2002          302           2.949301      6.878889      2.961111      0 \r\n 2002          303           5.307362      6.822222     -2.317222      0 \r\n 2002          304           9.541904      0.8372222    -7.43          0 \r\n 2002          305           12.5292       3.307778     -8.57          0 \r\n 2002          306           10.71405      7.69         -9.38          0 \r\n 2002          307           8.831546      9.65         -5.358889      0 \r\n 2002          308           3.552551      0.03         -2.75          0 \r\n 2002          309           3.907228      2.641111     -1.771111      2.54 \r\n 2002          310           9.765665      9.61         -3.438889      0 \r\n 2002          311           10.93078      18.84        -3.948889      0 \r\n 2002          312           6.998953      16.26         3.121111      0 \r\n 2002          313           3.190509      14.8          2.596111      0 \r\n 2002          314           3.074403      6.432222     -2.617778      0 \r\n 2002          315           3.46544      -1.468889     -10.55556      0 \r\n 2002          316           10.29005      12.74        -9.18          0 \r\n 2002          317           4.158687      11.28        -5.446111      0 \r\n 2002          318           1.956982      2.462778     -4.442778      0 \r\n 2002          319           3.57255       0.4261111    -4.347778      0 \r\n 2002          320           6.8895        1.477222     -8.51          0 \r\n 2002          321           7.81567       3.987222     -9.15          0 \r\n 2002          322           4.912811      8.63         -4.091111      0 \r\n 2002          323           7.914496      13.12        -3.797222      0 \r\n 2002          324           8.040686      11.89        -2.116111      0 \r\n 2002          325           4.43596       5.122222     -2.636111      0 \r\n 2002          326           9.111916      4.055        -8.36          0 \r\n 2002          327           8.972086      7.07         -1.778889      0 \r\n 2002          328           4.023585      0.8127778    -6.707222      0 \r\n 2002          329           8.05399      -1.393889     -9.97          0 \r\n 2002          330           8.414694     -1.12         -10.56         0 \r\n 2002          331           5.076991     -2.663889     -11.23         0 \r\n 2002          332           8.334193      7.65         -11.48         0 \r\n 2002          333           4.11329       9.11         -6.155         0 \r\n 2002          334           8.938195     -4.728889     -14.82         0 \r\n 2002          335           8.428375      9.61         -13.61         0 \r\n 2002          336           7.479569     -1.3          -14.91         0 \r\n 2002          337           8.204615     -2.617778     -17.28         0 \r\n 2002          338           2.964615     -5.062778     -14.07         0 \r\n 2002          339           9.013759     -8.09         -20.4          0.51 \r\n 2002          340           8.286244      7.54         -17.46         0 \r\n 2002          341           8.115914      2.37         -9.5           0 \r\n 2002          342           8.834056     -2.87         -16.09         0 \r\n 2002          343           7.662326      4.94         -16.03         0 \r\n 2002          344           7.290913      4.655        -6.747222      0 \r\n 2002          345           1.108551      2.933889     -3.778889      0 \r\n 2002          346           4.029819      4.553889     -5.895         0 \r\n 2002          347           7.600738      9.09         -9.47          0 \r\n 2002          348           7.416265      12.6         -8.64          0 \r\n 2002          349           5.814044      10.55        -6.891111      0 \r\n 2002          350           1.521763      0.57         -3.861111      0 \r\n 2002          351           1.160558      2.597222     -1.587778      0 \r\n 2002          352           1.690545      7.99          1.882778      5.08 \r\n 2002          353           2.1102        2.258889     -1.381111      0 \r\n 2002          354           2.80805      -0.6022222    -2.537222      0 \r\n 2002          355           3.335276     -1.681111     -4.155         0.25 \r\n 2002          356           6.665991     -0.9772222    -6.492778      0 \r\n 2002          357           7.791235     -0.3588889    -10.32         0 \r\n 2002          358           4.570393     -6.317778     -12.08         0 \r\n 2002          359           6.982552     -1.833889     -12.28         0 \r\n 2002          360           7.468231      6.018889     -14.86         0 \r\n 2002          361           4.647001      4.402222     -8.74          0 \r\n 2002          362           6.488798      14.12        -4.602778      0 \r\n 2002          363           5.342089      8.21         -3.047222      0 \r\n 2002          364           7.22832       5.551111     -6.715         0 \r\n 2002          365           8.105663      2.013889     -11.53         0 \r\n 2003          1             1.820124     -1.991111     -5.903889      0 \r\n 2003          2             6.954729      0.1572222    -13.27         0 \r\n 2003          3             7.423922      2.991111     -15.7          0 \r\n 2003          4             3.087834      6.285        -4.935         0 \r\n 2003          5             1.174951     -1.193889     -3.093889      0.76 \r\n 2003          6             5.506646     -1.54         -7.51          0 \r\n 2003          7             7.475804      14.17        -5.672222      0 \r\n 2003          8             8.092818      14.67        -3.831111      0 \r\n 2003          9             5.469701      2.755        -7.92          0 \r\n 2003          10            9.62956      -6.392778     -16.36         0 \r\n 2003          11            9.107354     -7.6          -20.14         0 \r\n 2003          12            9.090828      6.892778     -20.02         0 \r\n 2003          13            3.628239     -8.29         -15.64         0 \r\n 2003          14            9.612823     -5.952222     -17.86         0.25 \r\n 2003          15            5.680157     -7.72         -19.48         0 \r\n 2003          16            8.185285     -2.312778     -14.51         0 \r\n 2003          17            10.38632     -5.328889     -20.71         0 \r\n 2003          18            10.16436     -7.43         -18.87         0 \r\n 2003          19            2.804744      0.2872222    -20.82         0 \r\n 2003          20            3.969863     -8.81         -15.21         0 \r\n 2003          21            9.224506     -9.47         -21.37         0 \r\n 2003          22            8.573016     -12.33        -21.25         0 \r\n 2003          23            11.2168      -13.9         -25.18         0 \r\n 2003          24            3.129967     -7.26         -20.03         0 \r\n 2003          25            4.178017     -8.08         -16.27         0 \r\n 2003          26            11.53018     -12.35        -22.74         0.25 \r\n 2003          27            8.876188     -3.125        -14.75         1.52 \r\n 2003          28            3.113733     -0.3788889    -8.71          0.25 \r\n 2003          29            7.48049      -6.687778     -15.34         3.05 \r\n 2003          30            6.258385      1.712222     -9.12          0 \r\n 2003          31            2.138944      1.073889     -1.092778      1.02 \r\n 2003          32            6.820422      6.236111     -2.368889      0 \r\n 2003          33            3.060554      4.531111     -0.5361111     0 \r\n 2003          34            2.824326      0.9427778    -11.48         0.51 \r\n 2003          35            11.90461     -9.22         -16.44         2.03 \r\n 2003          36            7.934872     -0.3588889    -16.43         0 \r\n 2003          37            12.76103     -10.83        -22.4          0.51 \r\n 2003          38            13.21776     -6.93         -26.67         0 \r\n 2003          39            10.81794     -3.652222     -19.28         0 \r\n 2003          40            10.56883     -1.561111     -22.55         0 \r\n 2003          41            13.33064     -6.32         -20.46         0.51 \r\n 2003          42            8.74184       4.298889     -17.86         0 \r\n 2003          43            13.78172     -2.747778     -20.68         0 \r\n 2003          44            12.81078      3.605        -13.98         0 \r\n 2003          45            3.000974      1.367222     -6.775         0 \r\n 2003          46            11.06421     -5.627222     -13.77         7.11 \r\n 2003          47            14.7127      -2.358889     -20.79         0 \r\n 2003          48            12.70702     -0.4138889    -16.08         0 \r\n 2003          49            12.35493      5.961111     -7.97          0 \r\n 2003          50            14.03607      5.942222     -12.08         0 \r\n 2003          51            13.81302      11.55        -2.302222      0 \r\n 2003          52            9.148567      6.007222     -3.917222      0 \r\n 2003          53            8.714394     -2.613889     -11.25         0 \r\n 2003          54            6.512898     -9.45         -16.06         0 \r\n 2003          55            15.07746     -13.94        -23.5          1.02 \r\n 2003          56            15.70251     -9.36         -25.91         0 \r\n 2003          57            15.82627     -2.933889     -19.68         0 \r\n 2003          58            15.34884      2.908889     -15.94         0 \r\n 2003          59            13.67499      5.4          -11.35         0 \r\n 2003          60            5.738147      1.578889     -9.5           0 \r\n 2003          61            17.95275     -8.71         -20.21         0 \r\n 2003          62            6.525826      1.187778     -13.24         0.51 \r\n 2003          63            7.666594     -7.85         -15.4          1.78 \r\n 2003          64            15.41222     -8.44         -22.43         3.81 \r\n 2003          65            12.93007     -2.612778     -15.62         0 \r\n 2003          66            14.67245     -2.067778     -12.78         0 \r\n 2003          67            12.12916     -6.666111     -18.32         0 \r\n 2003          68            17.22427     -10.28        -19.44         0.76 \r\n 2003          69            13.81607     -9.23         -19.44444      0 \r\n 2003          70            14.18594      7.198333     -13.65389      0 \r\n 2003          71            6.710508      3.407778     -7.709445      0 \r\n 2003          72            13.47549      4.423333     -6.256111      0 \r\n 2003          73            16.99261      10.20889     -5.7           0 \r\n 2003          74            16.93775      18.42667     -3.232222      0 \r\n 2003          75            14.85056      20.22944     -0.055         0 \r\n 2003          76            13.82866      20.29056     -0.4422222     0 \r\n 2003          77            9.149571      12.97833      0.2088889     0 \r\n 2003          78            3.875388      4.971111     -3.215556      0.25 \r\n 2003          79            5.417276      5.758889     -5.26          8.64 \r\n 2003          80            8.719121      4.568889     -5.98          0.25 \r\n 2003          81            18.71897      11.97389     -5.316667      0 \r\n 2003          82            17.6869       19.18889     -3.648889      0 \r\n 2003          83            12.29092      15.1         -0.2861111     0 \r\n 2003          84            19.07624      14.99167      0.6016667     0 \r\n 2003          85            11.48839      13.46222      0.1805556     0.25 \r\n 2003          86            4.128311      12.10889      3.437222      11.43 \r\n 2003          87            4.330105      2.949445     -1.597222      12.19 \r\n 2003          88            15.41256      4.190556     -3.67          0 \r\n 2003          89            19.11749      7.588889     -6.493333      0 \r\n 2003          90            13.9969       19.21722     -5.461667      0 \r\n 2003          91            22.24884      30.01833      7.353889      0 \r\n 2003          92            21.25928      27.3          7.649445      0 \r\n 2003          93            11.85122      19.95944      0.8977778     0 \r\n 2003          94            4.21287      -1.111111E-03               -5.666667      7.5438 \r\n 2003          95            15.94255     -2.354445     -6.799445      0 \r\n 2003          96            9.392243      3.027778     -5.627222      10.1092 \r\n 2003          97            11.69336     -2.882778     -4.337222      0 \r\n 2003          98            23.21685      0.2816667    -7.076111      0 \r\n 2003          99            24.62008      8.492778     -8.972222      0 \r\n 2003          100           23.68985      17.84        -1.015         0 \r\n 2003          101           24.00248      20.76         0.6438889     0 \r\n 2003          102           24.54996      20.62         0.9161111     0 \r\n 2003          103           22.7005       26.48         5.211111      0 \r\n 2003          104           21.95123      32.21         12.98         0 \r\n 2003          105           18.70641      30.31         15.05         0 \r\n 2003          106           7.064349      19.47         2.821111      7.874 \r\n 2003          107           7.401956      7.28          1.768889      0 \r\n 2003          108           4.367761      9.29          2.997778      1.524 \r\n 2003          109           3.839782      12.3          6.681111      21.082 \r\n 2003          110           4.14852       7.65          5.447778      0.762 \r\n 2003          111           20.92611      16.17         3.008889      0 \r\n 2003          112           26.02766      18.79        -1.776111      0 \r\n 2003          113           23.78265      21.17         3.093889      0 \r\n 2003          114           5.369704      11.83         8.83          0 \r\n 2003          115           25.43751      21.61         3.48          0 \r\n 2003          116           23.95269      24.81         4.722778      0 \r\n 2003          117           20.84188      25.63         7.29          0 \r\n 2003          118           24.23519      20.62         7.26          0 \r\n 2003          119           8.202313      15.69         3.666111      0 \r\n 2003          120           4.351527      11.67         7.99          16.256 \r\n 2003          121           15.05688      18.18         6.69          0.254 \r\n 2003          122           13.13772      19.12         8.56          5.08 \r\n 2003          123           23.21685      19.82         8.33          0 \r\n 2003          124           15.50115      11.89         7.16          52.832 \r\n 2003          125           7.785462      13.96         8.56          4.064 \r\n 2003          126           20.58687      19            6.395         4.064 \r\n 2003          127           23.67993      18.95         7.4           0 \r\n 2003          128           6.515199      12.09         6.12          17.78 \r\n 2003          129           17.33837      17.54         10.33         0.254 \r\n 2003          130           6.908872      14.04         6.575         11.176 \r\n 2003          131           7.13803       13.11         5.266111      0.508 \r\n 2003          132           28.13736      19.1          5.601111      0 \r\n 2003          133           19.46819      21.85         5.297778      4.318 \r\n 2003          134           19.93981      22.62         11.35         0.254 \r\n 2003          135           14.03263      19.35         9.25          0 \r\n 2003          136           25.79821      21.65         6.223889      0 \r\n 2003          137           27.26491      23.23         8.09          0 \r\n 2003          138           20.69427      25.94         12.31         0 \r\n 2003          139           6.679338      22.14         7.85          0.762 \r\n 2003          140           29.19499      15.65         4.743889      0 \r\n 2003          141           18.60788      18.4          3.235         0 \r\n 2003          142           7.611198      18.3          5.015         6.858 \r\n 2003          143           24.22745      19.07         6.737778      0.254 \r\n 2003          144           6.452649      17.07         10.35         0 \r\n 2003          145           28.4248       24.34         6.376111      0 \r\n 2003          146           28.33547      25.98         7.2           0 \r\n 2003          147           26.80894      28.68         9.19          0 \r\n 2003          148           25.2781       26.68         13.6          1.27 \r\n 2003          149           21.4338       25.78         10.03         0 \r\n 2003          150           26.58798      29.11         12.56         0.508 \r\n 2003          151           25.48177      21.76         10.4          0 \r\n 2003          152           17.44548      23.97         11.99         0 \r\n 2003          153           5.32096       16.65         9.79          4.318 \r\n 2003          154           15.76489      20.21         9.32          0 \r\n 2003          155           23.55161      23.02         9.52          0 \r\n 2003          156           14.14426      23.15         8.78          1.016 \r\n 2003          157           12.60292      18.94         10.76         8.89 \r\n 2003          158           13.10387      19.81         8.78          8.636 \r\n 2003          159           15.71544      20.89         11.67         11.684 \r\n 2003          160           26.63656      26.1          9.59          8.636 \r\n 2003          161           22.39942      23.58         14.52         0.508 \r\n 2003          162           18.59784      24.04         14.18         0 \r\n 2003          163           11.63135      24.99         14.51         0.508 \r\n 2003          164           28.03251      29.06         15.79         0 \r\n 2003          165           24.15273      28.82         14.99         0 \r\n 2003          166           27.98552      29.67         15.07         0 \r\n 2003          167           24.34707      31.16         15.68         0 \r\n 2003          168           14.96424      29.94         16.88         2.286 \r\n 2003          169           22.05311      29.78         16.75         0 \r\n 2003          170           28.86659      26.02         12.4          0 \r\n 2003          171           29.66694      27.37         9.99          0 \r\n 2003          172           25.33621      29.54         13.44         0 \r\n 2003          173           13.27675      29.15         17.13         3.048 \r\n 2003          174           25.00187      32.7          19.52         0 \r\n 2003          175           19.8117       32.02         18.9          29.718 \r\n 2003          176           3.874384      25.73         14.27         40.64 \r\n 2003          177           25.47416      21.65         11.47         0 \r\n 2003          178           26.74915      27.68         11.51         2.54 \r\n 2003          179           24.38351      26.38         15.88         1.27 \r\n 2003          180           25.87118      26.68         13.05         0 \r\n 2003          181           25.47437      28.62         12.08         0 \r\n 2003          182           25.94097      29.42         14.15         0 \r\n 2003          183           27.11684      31.28         18.61         0 \r\n 2003          184           27.30859      34.48         21.84         0 \r\n 2003          185           13.84929      27.88         19.24         20.828 \r\n 2003          186           26.6043       28.35         17.22         7.62 \r\n 2003          187           24.76351      28.48         19.17         6.35 \r\n 2003          188           20.61239      29.13         17.57         0 \r\n 2003          189           14.43643      23.64         15.09         21.336 \r\n 2003          190           14.36292      24.74         17.56         10.922 \r\n 2003          191           18.1199       22.99         15.69         0 \r\n 2003          192           26.3546       26.12         13.35         0 \r\n 2003          193           27.53394      26.15         13.47         0 \r\n 2003          194           26.83283      27.01         13.34         0 \r\n 2003          195           20.14604      28.88         18.64         3.81 \r\n 2003          196           28.59965      26.4          15.56         0 \r\n 2003          197           18.19563      27.59         13.35         0 \r\n 2003          198           21.38488      30.89         17.21         0 \r\n 2003          199           24.44983      25.99         15.96         0 \r\n 2003          200           26.80149      27.35         12.87         0 \r\n 2003          201           10.5964       27.43         19.28         1.524 \r\n 2003          202           21.70931      23.74         14.88         0 \r\n 2003          203           21.9309       23.31         11.66         0 \r\n 2003          204           26.59158      24.77         8.34          0 \r\n 2003          205           24.02892      25.88         11.2          0 \r\n 2003          206           24.92949      30.8          17.89         0 \r\n 2003          207           23.65956      32.57         22.15         0 \r\n 2003          208           19.843        28.02         19.43         0 \r\n 2003          209           25.09484      27.63         15.34         0 \r\n 2003          210           25.09203      28.45         12.39         0 \r\n 2003          211           25.286        29.05         16.22         0.254 \r\n 2003          212           24.69911      29.57         15.6          1.016 \r\n 2003          213           24.9343       26.99         15.82         0 \r\n 2003          214           22.24917      26.04         14.66         7.366 \r\n 2003          215           21.54099      26.12         13.45         0 \r\n 2003          216           23.34894      26.65         11.44         0 \r\n 2003          217           8.118508      21.3          15.15         8.636 \r\n 2003          218           22.32009      27.16         17.08         0 \r\n 2003          219           24.34686      28.47         15.76         0 \r\n 2003          220           25.34571      26.57         15.24         0 \r\n 2003          221           23.62977      28.3          13.48         0 \r\n 2003          222           15.47306      27.13         14.76         5.334 \r\n 2003          223           24.30465      27.66         15.26         0 \r\n 2003          224           24.00152      25.68         13.28         0 \r\n 2003          225           22.30817      26.93         14.82         0 \r\n 2003          226           18.61382      28.27         15.76         0 \r\n 2003          227           23.03359      30.8          18.77         0 \r\n 2003          228           23.29706      32.89         17.19         0 \r\n 2003          229           22.87372      32.17         19.22         0 \r\n 2003          230           21.48589      32.23         21.09         20.066 \r\n 2003          231           19.08619      29.94         19.44         0 \r\n 2003          232           19.18192      30.76         20.77         3.81 \r\n 2003          233           22.11365      26.77         15.86         0 \r\n 2003          234           22.14758      26.17         12.52         0 \r\n 2003          235           20.52348      27.44         14.69         0 \r\n 2003          236           21.50764      32.86         16.96         0 \r\n 2003          237           19.86609      33.01         20.16         13.97 \r\n 2003          238           21.25593      31.92         16.4          0 \r\n 2003          239           22.26804      30.76         15.13         0 \r\n 2003          240           14.63994      29.65         16.83         0 \r\n 2003          241           21.15455      26.07         13.32         0 \r\n 2003          242           17.32766      22.45         11.94         0 \r\n 2003          243           11.97298      22.03         11.58         0 \r\n 2003          244           21.60705      25.52         9.69          0 \r\n 2003          245           21.5463       26.91         8.8           0 \r\n 2003          246           21.97433      22.23         10.84         0 \r\n 2003          247           22.00642      24.4          6.458889      0 \r\n 2003          248           21.33999      28.84         6.536111      0 \r\n 2003          249           20.24257      31.25         13.02         0 \r\n 2003          250           20.26818      31.05         12.26         0 \r\n 2003          251           20.89414      29.46         13.73         0 \r\n 2003          252           17.50912      28.91         13.73         0 \r\n 2003          253           14.30995      29.03         16.84         0 \r\n 2003          254           6.925231      28.41         18.06         24.892 \r\n 2003          255           19.91597      24.6          13.16         1.016 \r\n 2003          256           9.670939      20.3          12.19         0 \r\n 2003          257           16.26501      20.63         7.14          0 \r\n 2003          258           20.42537      25.74         3.81          0 \r\n 2003          259           19.0667       29.07         12.4          0 \r\n 2003          260           17.60807      28.56         17.71         0 \r\n 2003          261           3.658824      21.06         7.99          5.334 \r\n 2003          262           20.16663      18.08         4.792222      0.254 \r\n 2003          263           19.41066      22.76         4.112222      0 \r\n 2003          264           3.692547      15.17         7.89          3.556 \r\n 2003          265           13.32796      17.44         3.292222      1.524 \r\n 2003          266           14.1828       25.08         0.645         0 \r\n 2003          267           18.14421      18.6          6.86          0 \r\n 2003          268           15.75063      16.08        -9.611111E-02                0 \r\n 2003          269           6.965649      18.45         4.772778      1.524 \r\n 2003          270           9.2771        13.87         4.658889      0 \r\n 2003          271           14.5548       13.6         -5.888889E-02                0 \r\n 2003          272           13.25784      16.5         -2.585         0 \r\n 2003          273           16.27103      14.55        -4.315         0 \r\n 2003          274           17.8084       10.84        -3.547222      0 \r\n 2003          275           16.39496      15.06        -5.861111      0 \r\n 2003          276           13.80833      18.12         4.602222      0 \r\n 2003          277           15.18662      23.81         2.146111      0 \r\n 2003          278           15.98321      24.53         6.452222      0 \r\n 2003          279           15.68544      29.37         7.31          0 \r\n 2003          280           15.71121      27.81         10.18         0 \r\n 2003          281           14.09113      27.54         13.46         0 \r\n 2003          282           14.79358      25.99         13.93         7.112 \r\n 2003          283           9.642739      23.4          11.06         0 \r\n 2003          284           3.337535      18.96         5.17          5.588 \r\n 2003          285           15.52055      20.4          1.602222      0 \r\n 2003          286           5.154353      18.41         5.358889      1.778 \r\n 2003          287           14.49513      16.84         2.972778      0 \r\n 2003          288           11.87838      15.72        -1.822778      0 \r\n 2003          289           8.17357       10.58        -4.638889      0 \r\n 2003          290           11.32492      16.19        -3.253889      0 \r\n 2003          291           13.83184      27.32         5.102778      0 \r\n 2003          292           13.94879      29.56         5.691111      0 \r\n 2003          293           13.3747       28.39         9.25          0 \r\n 2003          294           9.978631      21.57         3.141111      0 \r\n 2003          295           12.82262      24.6          0.3538889     0 \r\n 2003          296           12.88044      15.79         1.647778      0 \r\n 2003          297           3.567822      13.74         1.086111      0.254 \r\n 2003          298           10.59774      10.06        -3.33          0 \r\n 2003          299           6.979414      3.952222     -6.478889      0 \r\n 2003          300           7.378024      8.15         -8.41          0.508 \r\n 2003          301           3.769198      7.74          1.376111      0 \r\n 2003          302           3.759115      4.622222     -4.61          0 \r\n 2003          303           7.94483       10.74         2.081111      0 \r\n 2003          304           5.181256      5.862222     -0.3872222     0 \r\n 2003          305           2.997041      1.921111     -1.475         0 \r\n 2003          306           5.973162      7.72          0.5888889     0.254 \r\n 2003          307           1.092066      2.766111     -2.111111E-02                18.6182 \r\n 2003          308           3.084989      3.452778     -2.105         0 \r\n 2003          309           4.178645     -0.3211111    -5.202222      0 \r\n 2003          310           11.62198      3.001111     -10.56         0 \r\n 2003          311           11.34818     -2.125        -12.19         0 \r\n 2003          312           10.39096     -6.777778E-02               -13.82         0 \r\n 2003          313           10.37766      6.968889     -9.87          0 \r\n 2003          314           1.771715      7.36          0.635         0 \r\n 2003          315           8.297792      14.51         7.277778E-02                0 \r\n 2003          316           5.384683      5.256111     -2.49          0 \r\n 2003          317           10.74359      5.138889     -6.675         0 \r\n 2003          318           4.668633      9.24         -2.367222      0 \r\n 2003          319           1.258254      7.19          1.461111      0 \r\n 2003          320           6.959959      10.43         1.79          0 \r\n 2003          321           1.403314      10.91         2.248889      18.8722 \r\n 2003          322           9.891479      11.53        -0.16          0 \r\n 2003          323           9.647718      14.74        -0.1222222     0 \r\n 2003          324           8.420969      18.18         0.5227778     0 \r\n 2003          325           5.358658      3.132778     -3.593889      0 \r\n 2003          326           3.554977      0.655        -1.183889      3.7338 \r\n 2003          327           1.751297      0.2988889    -9.53          0 \r\n 2003          328           9.125555     -4.247222     -13.55         0 \r\n 2003          329           7.71312       4.188889     -5.258889      0 \r\n 2003          330           4.653989      2.832222     -7.76          0 \r\n 2003          331           8.946982      2.915        -6.887778      0 \r\n 2003          332           5.176612     -3.065        -12.24         0 \r\n 2003          333           7.559317      7.11         -12.07         0 \r\n 2003          334           8.607617      13.14        -3.178889      0 \r\n 2003          335           8.090978      5.023889     -4.791111      0 \r\n 2003          336           2.246055      1.377222     -3.246111      0 \r\n 2003          337           5.496186      1.001111     -7.3           8.38 \r\n 2003          338           2.895119     -0.5927778    -7.46          0 \r\n 2003          339           4.985571     -0.7238889    -3.983889      5.08 \r\n 2003          340           4.792396     -2.518889     -4.362778      0 \r\n 2003          341           4.961387      1.827778     -4.077222      0 \r\n 2003          342           7.480824      3.351111     -2.828889      0 \r\n 2003          343           1.068008      0.7211111    -6.831111      0.25 \r\n 2003          344           7.399906     -6.821111     -13.48         5.33 \r\n 2003          345           8.445613     -13.37        -18.21         0 \r\n 2003          346           8.331473     -9.08         -18.35         0 \r\n 2003          347           7.216228     -3.736111     -14.42         0 \r\n 2003          348           2.42103      -3.348889     -4.962778      0 \r\n 2003          349           3.049425      0.1872222    -3.508889      0 \r\n 2003          350           6.860212     -2.406111     -11.28         1.52 \r\n 2003          351           4.9503       -0.6672222    -14.53         0 \r\n 2003          352           7.922571     -0.8177778    -6.046111      1.27 \r\n 2003          353           8.138633     -2.988889     -13            0 \r\n 2003          354           7.84023       0.7488889    -10.64         0 \r\n 2003          355           6.977322      2.902222     -1.417778      0 \r\n 2003          356           3.99731       2.837778     -3.065         0 \r\n 2003          357           5.022515     -0.93         -9.99          0 \r\n 2003          358           6.672978     -1.54         -13.84         0 \r\n 2003          359           7.368945      2.462778     -9.83          0 \r\n 2003          360           6.52658       4.166111     -1.671111      0 \r\n 2003          361           4.840763      10.33         1.855         0 \r\n 2003          362           7.390116      2.892778     -1.313889      0.51 \r\n 2003          363           2.823196     -0.2922222    -7.46          0 \r\n 2003          364           7.238445      4.297222     -9.15          0 \r\n 2003          365           7.726342     -2.151111     -10.17         0 \r\n 2004          1             2.888633      5.79         -5.182222      0 \r\n 2004          2             1.697867      5.723889     -3.537222      0 \r\n 2004          3             3.284649     -3.245        -10.36         0 \r\n 2004          4             2.8806       -8.07         -14.17         0 \r\n 2004          5             7.738266     -14.15        -20.17         0.25 \r\n 2004          6             8.159177     -8.04         -18.96         0 \r\n 2004          7             7.212128     -2.235        -16.02         0 \r\n 2004          8             2.582239     -3.007778     -13.4          0 \r\n 2004          9             5.29594      -5.021111     -17.61         0.51 \r\n 2004          10            2.515755     -4.171111     -9.1           0 \r\n 2004          11            7.510113      8.74         -5.902222      0 \r\n 2004          12            8.697239      7.54         -8.54          0 \r\n 2004          13            8.535527     -0.2722222    -7.01          0 \r\n 2004          14            5.402799      3.462778     -11.56         0 \r\n 2004          15            6.131359      3.176111     -13.83         0 \r\n 2004          16            5.786346      3.516111     -3.338889      0 \r\n 2004          17            2.239988      0.6          -10.27         5.33 \r\n 2004          18            8.839746     -10.27        -19.1          0 \r\n 2004          19            6.836447     -10.55        -20.19         0 \r\n 2004          20            3.181304     -7.33         -12.1          0 \r\n 2004          21            4.205506      1.687222     -16.85         0 \r\n 2004          22            9.938255     -9.36         -21.61         0 \r\n 2004          23            5.967723      7.43         -9.71          0 \r\n 2004          24            9.564331     -5.69         -13.76         0 \r\n 2004          25            5.623422     -3.86         -11.03         0 \r\n 2004          26            6.491016     -7.42         -13.25         5.33 \r\n 2004          27            10.39188     -13.23        -23.49         5.33 \r\n 2004          28            7.184221     -18.86        -23.9          0 \r\n 2004          29            8.49398      -20.96        -27.21         0.25 \r\n 2004          30            10.54464     -21.44        -27.02         0 \r\n 2004          31            6.621598     -11.66        -25.39         0 \r\n 2004          32            4.919045     -7.28         -11.68         0.51 \r\n 2004          33            7.022551     -6.353889     -15.9          13.21 \r\n 2004          34            12.10891     -15.9         -21.91         3.56 \r\n 2004          35            7.155393     -9.42         -19.02         0 \r\n 2004          36            5.916678     -5.097222     -9.99          0.25 \r\n 2004          37            9.21526      -5.843889     -13.68         7.37 \r\n 2004          38            11.81842     -12.16        -22.79         0.76 \r\n 2004          39            9.114175     -3.546111     -23.16         0 \r\n 2004          40            8.04282      -3.387222     -11.7          0.25 \r\n 2004          41            13.10308     -5.796111     -18.23         0 \r\n 2004          42            12.49539     -1.668889     -11.06         0 \r\n 2004          43            13.03211     -8.99         -19.16         0 \r\n 2004          44            13.77544     -4.877222     -18.54         0 \r\n 2004          45            13.76875     -9.37         -19.47         0 \r\n 2004          46            13.89883     -10.56        -24.53         0 \r\n 2004          47            12.65811     -4.657778     -14.2          0 \r\n 2004          48            11.89532     -3.08         -16.01         0 \r\n 2004          49            13.71498      2.702778     -7.95          0 \r\n 2004          50            9.549269      1.831111     -5.45          0 \r\n 2004          51            6.647581      1.043889     -1.136111      4.06 \r\n 2004          52            14.70622      0.9572222    -5.442222      0 \r\n 2004          53            8.880414      4.143889     -3.328889      0.51 \r\n 2004          54            4.220819      0.6288889    -2.546111      1.02 \r\n 2004          55            3.786353      0.3311111    -1.182778      0 \r\n 2004          56            5.773627      0.8388889    -3.717222      0 \r\n 2004          57            15.82929      3.645        -4.857222      0 \r\n 2004          58            13.99012      5.146111     -1.107222      0 \r\n 2004          59            11.67416      9.36          0.8888889     0 \r\n 2004          60            10.1544       10.83         2.695         0 \r\n 2004          61            4.88846       10.38         2.197222      1.27 \r\n 2004          62            3.19963       2.206111      0.1377778     3.05 \r\n 2004          63            2.972314      2.002222     -0.2727778     0 \r\n 2004          64            2.775331      2.723889      0.1377778     0.76 \r\n 2004          65            5.020633      2.406111     -0.4977778     24.13 \r\n 2004          66            13.25374      10.36        -1.07          0.25 \r\n 2004          67            9.298605      3.156111     -1.257222      0 \r\n 2004          68            14.28631      11.57        -3.745         0 \r\n 2004          69            16.73977      7.95         -1.172778      0 \r\n 2004          70            9.123965      10.95        -0.6572222     0 \r\n 2004          71            13.62478      0.5527778    -11.64         1.02 \r\n 2004          72            18.68332      3.832778     -11.46         0 \r\n 2004          73            7.373589      12.38        -0.7322222     0.25 \r\n 2004          74            15.4903       6.16         -1.858889      2.03 \r\n 2004          75            5.622083     -1.23         -2.961111      0.25 \r\n 2004          76            12.18243      0.6688889    -8.61          3.05 \r\n 2004          77            12.8135       7.58         -5.892778      1.27 \r\n 2004          78            7.899392      5.942222     -2.507778      1.52 \r\n 2004          79            11.5565       15.64        -1.022222      0 \r\n 2004          80            19.27715      10.58        -4.335         0 \r\n 2004          81            19.6253       1.356111     -7.79          0 \r\n 2004          82            18.60554      7.57         -8.51          0 \r\n 2004          83            17.94806      16.95        -1.277222      0 \r\n 2004          84            18.98611      23.98         6.911111      7.37 \r\n 2004          85            2.04129       17.15         12.77         1.02 \r\n 2004          86            9.759347      19.03         10.81         16.51 \r\n 2004          87            2.440987      16.91         13.35         0.25 \r\n 2004          88            4.597547      13.34         5.217222      23.88 \r\n 2004          89            17.63941      12.51        -8.611111E-02                0.51 \r\n 2004          90            6.045712      1.488889     -3.736111      0.25 \r\n 2004          91            22.54628      8.57         -4.238889      0 \r\n 2004          92            23.0325       13.1         -4.03          0 \r\n 2004          93            23.2748       17.36        -3.422778      0 \r\n 2004          94            20.75892      13.35         1.34          0 \r\n 2004          95            22.88543      13.56        -5.557222      0 \r\n 2004          96            21.58019      22.04         0.1772222     0 \r\n 2004          97            23.32367      20.8          3.32          0 \r\n 2004          98            19.20962      22.17        -0.8077778     0 \r\n 2004          99            24.16921      15.22         1.038889      0 \r\n 2004          100           12.01318      12.8         -3.443889      0 \r\n 2004          101           24.46372      7.55         -6.247778      0 \r\n 2004          102           20.72486      8.74         -9.15          0 \r\n 2004          103           18.34349      10.44        -3.878889      0 \r\n 2004          104           24.5441       15.65        -6.385         0 \r\n 2004          105           23.41659      22.89        -0.9861111     0 \r\n 2004          106           17.28716      22.1          8.52          0 \r\n 2004          107           19.29983      31.35         3.716111      0 \r\n 2004          108           22.87853      26.14         7.04          0 \r\n 2004          109           14.7676       29.05         12.25         16.51 \r\n 2004          110           12.17544      14.16         3.782222      0 \r\n 2004          111           3.56435       11.31         4.377222      11.938 \r\n 2004          112           11.64056      13.97         5.776111      0 \r\n 2004          113           18.87934      16.33         2.981111      0 \r\n 2004          114           22.37591      19.02         3.97          0 \r\n 2004          115           6.65256       13.54         2.456111      28.194 \r\n 2004          116           13.44231      15.32         4.818889      9.144 \r\n 2004          117           24.57786      13.5          1.227222      0 \r\n 2004          118           22.05679      21.59        -1.793889      0 \r\n 2004          119           25.4155       31.44         10.37         0 \r\n 2004          120           19.78053      20.22         6.1           0 \r\n 2004          121           9.672445      13.62         5.357778      1.27 \r\n 2004          122           20.80406      13.93         0.5138889     0 \r\n 2004          123           18.22262      12.86        -0.4711111     0 \r\n 2004          124           23.49082      17.08        -2.517778      0 \r\n 2004          125           27.06048      20.26         4.206111      0 \r\n 2004          126           21.78073      29.16         2.417778      0 \r\n 2004          127           16.99122      25.22         12.68         0 \r\n 2004          128           9.034929      17.35         10.55         0 \r\n 2004          129           14.16242      21.85         10.27         6.35 \r\n 2004          130           23.64073      30.45         14.14         0 \r\n 2004          131           14.02268      25.8          13.58         1.524 \r\n 2004          132           22.4882       29.43         12.84         0 \r\n 2004          133           8.526532      24.52         11.19         1.524 \r\n 2004          134           7.505008      11.21         4.592778      12.7 \r\n 2004          135           23.51128      13.48         2.362222      1.27 \r\n 2004          136           20.29399      17.09         0.2422222     0 \r\n 2004          137           21.09644      25.38         8.91          0 \r\n 2004          138           8.545402      21.75         11.14         6.35 \r\n 2004          139           24.48268      21.16         8.16          0 \r\n 2004          140           9.318103      22.61         11.35         0 \r\n 2004          141           24.28532      25.42         16.57         0 \r\n 2004          142           9.465714      21.87         15.02         90.424 \r\n 2004          143           20.22198      25.22         15.76         26.67 \r\n 2004          144           6.884312      18.12         8.87          20.828 \r\n 2004          145           13.39357      16.74         7.82          7.62 \r\n 2004          146           19.60083      15.88         7.86          0 \r\n 2004          147           27.75251      20.58         7.29          0 \r\n 2004          148           25.3647       23.71         12.38         0 \r\n 2004          149           25.83842      24.92         10.27         5.08 \r\n 2004          150           14.13318      24.51         16.01         9.906 \r\n 2004          151           19.34288      22.87         14.06         3.302 \r\n 2004          152           23.47274      22.78         12.45         2.032 \r\n 2004          153           10.17925      16.58         12.31         1.016 \r\n 2004          154           18.07756      22.08         11.87         0 \r\n 2004          155           30.02941      23.1          8.48          0 \r\n 2004          156           25.27973      26.82         13.47         0 \r\n 2004          157           10.7428       24.57         16.11         1.27 \r\n 2004          158           26.09736      29.38         15.55         0 \r\n 2004          159           28.0477       33.94         20.65         0 \r\n 2004          160           12.3882       32.74         21.7          2.032 \r\n 2004          161           18.88536      29.54         17.93         0 \r\n 2004          162           8.13219       23.6          16.57         4.826 \r\n 2004          163           14.39476      29.44         16.54         40.386 \r\n 2004          164           21.84098      29.04         15.3          2.54 \r\n 2004          165           26.90358      26.87         15.36         0 \r\n 2004          166           26.78672      25.42         15.26         0 \r\n 2004          167           24.6469       27.51         14.34         0 \r\n 2004          168           6.658125      24.58         14.97         58.42 \r\n 2004          169           23.061        23.87         13.54         0 \r\n 2004          170           17.97149      18.99         12.15         0.762 \r\n 2004          171           28.14635      18.93         7.37          0 \r\n 2004          172           9.867043      19.61         12.71         0 \r\n 2004          173           19.05912      23.62         12.2          9.652 \r\n 2004          174           25.80536      25.23         7.89          0 \r\n 2004          175           25.89909      27.39         14.07         0.254 \r\n 2004          176           16.27275      17.07         7.77          4.826 \r\n 2004          177           26.68513      22.72         5.435         0 \r\n 2004          178           27.44997      24.63         7.59          0 \r\n 2004          179           11.63683      22.36         11.09         0 \r\n 2004          180           27.01019      24.52         8.57          0 \r\n 2004          181           28.78073      26.94         9.57          0 \r\n 2004          182           28.03828      27.79         11.98         0 \r\n 2004          183           27.05508      29.94         15.63         0 \r\n 2004          184           18.20492      28.68         18.83         0 \r\n 2004          185           6.667873      21.89         18.38         20.066 \r\n 2004          186           26.07896      29.09         16.33         0.762 \r\n 2004          187           13.32286      25.71         15.73         7.366 \r\n 2004          188           14.10694      20.98         14.04         0 \r\n 2004          189           9.676378      18.35         9.86          0 \r\n 2004          190           28.01054      23.63         9.18          0 \r\n 2004          191           13.0414       24.78         17.37         38.1 \r\n 2004          192           23.24492      28.07         16.9          0 \r\n 2004          193           17.14407      28.28         19.96         11.684 \r\n 2004          194           27.2573       29.59         18.65         0 \r\n 2004          195           27.77264      27.46         17.54         1.524 \r\n 2004          196           28.56831      26.69         15.45         0 \r\n 2004          197           27.28989      28.14         14.85         0 \r\n 2004          198           24.63987      26.99         17.4          0 \r\n 2004          199           25.06178      25.05         13.4          0 \r\n 2004          200           25.35098      26.26         12.42         0 \r\n 2004          201           23.01175      30.28         17.13         0 \r\n 2004          202           19.62802      30.64         17.34         0 \r\n 2004          203           18.65487      30.55         21.18         21.082 \r\n 2004          204           20.73143      26.75         18.86         0 \r\n 2004          205           22.72887      23.18         13.37         0 \r\n 2004          206           22.95255      22.73         11.86         0 \r\n 2004          207           23.91219      24.7          9.61          0 \r\n 2004          208           27.08818      25.18         10.2          0 \r\n 2004          209           27.11002      25.13         10.87         0 \r\n 2004          210           21.45288      26.47         14.91         0 \r\n 2004          211           26.27736      27.08         14.58         0 \r\n 2004          212           19.47556      25.96         11.75         0 \r\n 2004          213           25.72231      28.04         9.75          0 \r\n 2004          214           17.97618      27.44         17.54         0.762 \r\n 2004          215           23.63475      29.25         19.13         3.048 \r\n 2004          216           9.412285      26.78         19.05         5.08 \r\n 2004          217           16.70818      24.54         13.81         0 \r\n 2004          218           27.19265      21.92         10.47         0 \r\n 2004          219           26.08243      23.6          8.84          0 \r\n 2004          220           21.55245      24.71         14.63         0 \r\n 2004          221           16.99373      26.76         16.64         0 \r\n 2004          222           19.11544      22.18         13.42         0 \r\n 2004          223           13.52976      17.18         10.34         0 \r\n 2004          224           19.61162      16.66         6.537222      0 \r\n 2004          225           21.2784       20.75         6.212778      0 \r\n 2004          226           18.82432      22.27         6.688889      0 \r\n 2004          227           22.82786      22.96         6.241111      0 \r\n 2004          228           24.09612      23.88         6.995         0 \r\n 2004          229           15.30001      25.71         14.05         5.08 \r\n 2004          230           19.26196      25.02         13.25         0 \r\n 2004          231           14.96968      25.21         9.18          0 \r\n 2004          232           23.72002      20.78         4.782778      0 \r\n 2004          233           22.1178       21.76         6.612222      0 \r\n 2004          234           24.04934      22.24         2.146111      0 \r\n 2004          235           17.58669      27.78         15.59         0 \r\n 2004          236           18.28015      28.42         17.99         3.81 \r\n 2004          237           14.80086      25.82         17.57         0 \r\n 2004          238           11.46014      24.77         16.84         0 \r\n 2004          239           16.29932      31.01         17            17.018 \r\n 2004          240           19.60028      25.23         14.03         0 \r\n 2004          241           15.0878       21.67         10.83         0 \r\n 2004          242           18.48157      23.1          8.84          0 \r\n 2004          243           23.51345      25.22         11.91         0 \r\n 2004          244           16.76039      27.1          11.84         2.794 \r\n 2004          245           22.28331      30.1          15.69         0 \r\n 2004          246           22.26076      28.11         17.78         0 \r\n 2004          247           21.51681      28.28         16.05         0 \r\n 2004          248           18.51826      28.66         16.17         0 \r\n 2004          249           10.96221      28.12         19.22         14.224 \r\n 2004          250           22.3003       23.95         10.27         0 \r\n 2004          251           22.35264      20.44         7.67          0 \r\n 2004          252           19.89919      21.59         7.54          0 \r\n 2004          253           20.08115      25.23         10.35         0 \r\n 2004          254           18.46625      28.68         15.19         0 \r\n 2004          255           19.55359      29.46         15.23         0 \r\n 2004          256           20.04638      29.23         13.03         0 \r\n 2004          257           18.61332      30.52         18.86         0 \r\n 2004          258           8.126416      25.83         17.49         42.418 \r\n 2004          259           14.45969      23.68         11.7          0 \r\n 2004          260           20.40867      22.67         7.92          0 \r\n 2004          261           2.522868      17.74         10.23         3.048 \r\n 2004          262           16.06995      26.97         12.75         0 \r\n 2004          263           18.21002      30.73         16.37         0 \r\n 2004          264           17.49569      27.22         16.33         0 \r\n 2004          265           14.04565      27.09         13.8          0 \r\n 2004          266           17.9999       28.88         16.11         0 \r\n 2004          267           9.699935      23.48         13.95         4.826 \r\n 2004          268           18.85771      23.04         8.54          0 \r\n 2004          269           18.73014      22.84         5.056111      0 \r\n 2004          270           18.31839      26.11         7.19          0 \r\n 2004          271           12.08247      26.89         10.72         0 \r\n 2004          272           18.8357       19.71         4.385         0 \r\n 2004          273           18.40797      21.25         2.626111      0 \r\n 2004          274           11.91884      24.9          9.19          0 \r\n 2004          275           3.787943      18.41         0.8427778     12.7 \r\n 2004          276           18.21308      14.7         -3.158889      0 \r\n 2004          277           17.13306      24.4          5.161111      0 \r\n 2004          278           17.65673      11.34        -1.268889      0 \r\n 2004          279           16.30442      20.39        -0.9477777     0 \r\n 2004          280           13.66344      25.48         7.2           0 \r\n 2004          281           6.048725      19.65         11.46         1.27 \r\n 2004          282           14.65417      22.42         5.057222      0 \r\n 2004          283           16.43814      22.1          0.5688889     0 \r\n 2004          284           15.38817      21.83         3.962222      0 \r\n 2004          285           12.89927      18.32         4.658889      0 \r\n 2004          286           11.96381      17.91         1.957778      0 \r\n 2004          287           2.708136      11.61         4.177778      0.508 \r\n 2004          288           6.040315      9.39         -1.11          0 \r\n 2004          289           5.490203      10.26         3.133889      0 \r\n 2004          290           8.275283      7.35         -4.506111      0 \r\n 2004          291           6.810506      10.7         -4.581111      0 \r\n 2004          292           4.663863      12.62         5.822778      0 \r\n 2004          293           3.289796      10.53         5.88          0 \r\n 2004          294           1.949953      9.54          8.24          0 \r\n 2004          295           2.694663      13.22         8.82          0 \r\n 2004          296           1.287668      18.66         12.25         0.508 \r\n 2004          297           4.357678      17.27         1.817222      0 \r\n 2004          298           13.1842       21.48        -1.111111E-02                0 \r\n 2004          299           13.1814       15.47         4.96          0 \r\n 2004          300           2.80918       11.92         6.746111      0 \r\n 2004          301           2.197144      11.84         7.63          0 \r\n 2004          302           1.236498      19.47         10.98         5.334 \r\n 2004          303           8.555318      26.55         10.39         10.922 \r\n 2004          304           4.007268      10.38         1.253889      1.27 \r\n 2004          305           10.92221      12.36         1.79          0 \r\n 2004          306           1.388084      7.84          5.975         8.89 \r\n 2004          307           2.974406      6.993889     -1.887778      0 \r\n 2004          308           8.200263      8.2          -3.822222      0.254 \r\n 2004          309           11.69846      10.03        -2.621111      0 \r\n 2004          310           10.23883      14.87        -3.508889      0 \r\n 2004          311           11.19412      23.1          0.5522223     0 \r\n 2004          312           9.694537      10.31        -2.01          0 \r\n 2004          313           7.079495      9.62         -2.745         0 \r\n 2004          314           8.005373      17.18         0.1477778     0 \r\n 2004          315           2.905663      13.24         1.77          1.016 \r\n 2004          316           10.9876       5.377222     -8.43          0 \r\n 2004          317           9.711524      6.812222     -10.54         0 \r\n 2004          318           10.62803      8.56         -8.56          0 \r\n 2004          319           6.700425      8.68         -4.733889      0 \r\n 2004          320           5.8435        12.87         2.861111      0 \r\n 2004          321           2.054637      14.22         3.668889      0 \r\n 2004          322           6.790381      19.37         7.31          3.048 \r\n 2004          323           2.584708      10.27         6.888889      3.048 \r\n 2004          324           2.638347      11.32         5.34          10.922 \r\n 2004          325           2.691986      5.35         -1.586111      0 \r\n 2004          326           4.986701      4.291111     -2.622222      0 \r\n 2004          327           2.379399      6.222778      0.945         0 \r\n 2004          328           7.465553      2.23         -2.755         0 \r\n 2004          329           9.247352      2.078889     -7.92          0 \r\n 2004          330           5.674299      4.357778     -9.58          4.0132 \r\n 2004          331           1.987316      5.9          -1.568889      8.1534 \r\n 2004          332           2.585252      4.027222     -3.707778      0 \r\n 2004          333           6.209935     -1.006111     -11.96         0 \r\n 2004          334           6.947574     -1.887222     -13.35         0 \r\n 2004          335           8.246455      9.111111E-02               -14.37         0 \r\n 2004          336           8.915812      2.06         -9.23          0 \r\n 2004          337           7.404467      4.442778     -5.325         0 \r\n 2004          338           7.864748      3.847778     -5.46          0 \r\n 2004          339           6.353529      8.16         -1.841111      0 \r\n 2004          340           4.333453      3.197778     -4.058889      0 \r\n 2004          341           1.787698      5.188889      0.4288889     4.06 \r\n 2004          342           1.629794      3.122778     -1.042222      0.25 \r\n 2004          343           3.108545      4.226111     -2.001111      0 \r\n 2004          344           2.427808      4.886111      0.7288889     0 \r\n 2004          345           1.112316      2.991111     -0.105         0 \r\n 2004          346           3.372262      0.9638889    -2.161111      0 \r\n 2004          347           2.591319      4.717778     -4.65          0 \r\n 2004          348           6.617247     -4.621111     -12.65         0 \r\n 2004          349           8.333147     -0.93         -16.6          0 \r\n 2004          350           6.595281      6.081111     -8.41          0 \r\n 2004          351           4.785534      2.738889     -8.09          0 \r\n 2004          352           7.43455       0.355        -13.86         0 \r\n 2004          353           7.562538      1.125        -15.04         0 \r\n 2004          354           6.430724     -9.64         -20.86         0 \r\n 2004          355           1.791631     -2.235        -9.67          0.25 \r\n 2004          356           7.736593     -0.3088889    -18.56         3.05 \r\n 2004          357           8.320093     -14.4         -22.38         0 \r\n 2004          358           8.306077     -16.37        -25.52         0 \r\n 2004          359           7.569651     -7.47         -26.51         0 \r\n 2004          360           3.184233     -3.576111     -7.5           0 \r\n 2004          361           7.176439     -7.35         -13.55         0.51 \r\n 2004          362           6.00676      -1.456111     -10.21         0 \r\n 2004          363           3.490586      1.122778     -9.36          0 \r\n 2004          364           2.509898     -0.845        -9.27          0 \r\n 2004          365           1.695901      13.91        -0.845         0 \r\n 2004          366           7.963491      4.537222     -7.96          0 \r\n 2005          1             7.516347     -0.2538889    -8.27          0.25 \r\n 2005          2             7.069203     -0.7611111    -9.67          5.59 \r\n 2005          3             2.182081     -7.54         -11.11         0 \r\n 2005          4             2.335049     -7.01         -11.73         0.25 \r\n 2005          5             3.083483     -11.41        -13.46         5.08 \r\n 2005          6             6.648878     -12.91        -19.97         8.89 \r\n 2005          7             4.526167     -7.53         -17.78         0 \r\n 2005          8             6.720048     -7.67         -15.05         0 \r\n 2005          9             3.192727     -0.6961111    -12.26         0 \r\n 2005          10            4.483742     -8.08         -12.78         0 \r\n 2005          11            4.22107      -1.238889     -8.25          0 \r\n 2005          12            2.524123     -0.7788889    -5.585         0.25 \r\n 2005          13            9.131162     -5.576111     -22.68         0 \r\n 2005          14            7.897384     -19.16        -25.84         0 \r\n 2005          15            9.684956     -15.44        -27.72         0 \r\n 2005          16            9.880181     -13.67        -26.55         0 \r\n 2005          17            9.606255     -14.85        -27.23         0 \r\n 2005          18            5.157868      1.426111     -18.42         0 \r\n 2005          19            7.992361      2.515        -7.73          0 \r\n 2005          20            3.697652     -4.221111     -6.558889      0 \r\n 2005          21            2.480945     -2.818889     -8.46          0 \r\n 2005          22            8.304612     -8.37         -17.75         5.08 \r\n 2005          23            6.302987     -5.835        -17.23         0 \r\n 2005          24            9.580858      3.247778     -9.01          0 \r\n 2005          25            9.86834       8.34         -5.297222      0 \r\n 2005          26            2.569896      1.012222     -5.497778      0 \r\n 2005          27            9.767297     -3.907778     -8.98          0 \r\n 2005          28            6.425996     -1.248889     -7.98          0 \r\n 2005          29            2.361491     -0.1888889    -4.82          0 \r\n 2005          30            3.554392      7.277778E-02               -2.668889      0 \r\n 2005          31            2.132292      1.077222     -1.625         0 \r\n 2005          32            3.428872      2.191111     -0.62          0 \r\n 2005          33            10.33795      5.627778     -1.633889      0 \r\n 2005          34            11.09371      11.31        -2.085         0 \r\n 2005          35            11.43688      14.06         8.277778E-02                0 \r\n 2005          36            9.457723      12.33         1.517778      0 \r\n 2005          37            1.757991      7.01         -6.375         2.54 \r\n 2005          38            9.860642     -6.355        -10.62         6.86 \r\n 2005          39            5.2018       -5.546111     -11.04         0 \r\n 2005          40            11.31023     -6.957222     -13.53         2.03 \r\n 2005          41            11.77298     -3.178889     -17.64         0 \r\n 2005          42            12.99425      5.686111     -9.26          0 \r\n 2005          43            10.57125      9.75         -3.622222      0 \r\n 2005          44            1.692344      3.585         0.7861111     6.35 \r\n 2005          45            9.981978      11.54         0.355         16.76 \r\n 2005          46            5.113685      2.221111     -3.328889      0 \r\n 2005          47            11.18249     -0.3211111    -8.54          0 \r\n 2005          48            12.39891      7.111111E-02               -9.33          0 \r\n 2005          49            13.9454       1.751111     -12.74         0 \r\n 2005          50            2.141162      0.1861111    -5.833889      0 \r\n 2005          51            2.580942      1.863889     -3.661111      2.03 \r\n 2005          52            7.020585     -2.66         -6.132778      1.27 \r\n 2005          53            10.2708       4.206111     -4.6           0.76 \r\n 2005          54            12.35159      0.7938889    -7.84          0 \r\n 2005          55            5.543758     -0.1138889    -4.733889      0.51 \r\n 2005          56            15.00855      2.783889     -5.911111      0 \r\n 2005          57            14.8181       5.026111     -7.84          0 \r\n 2005          58            3.128251      2.352778     -4.382222      0.25 \r\n 2005          59            6.578294     -4.353889     -9.38          0.51 \r\n 2005          60            15.55561     -2.048889     -12            0 \r\n 2005          61            14.81065      1.855        -6.887778      0 \r\n 2005          62            16.20191      6.208889     -9.19          0 \r\n 2005          63            11.16149      8.99         -3.868889      0 \r\n 2005          64            7.838431      4.121111     -1.953889      0 \r\n 2005          65            16.36668      20.85        -1.813889      0 \r\n 2005          66            6.993347      6.112222     -6.732778      1.78 \r\n 2005          67            15.38248     -1.258889     -9.69          0 \r\n 2005          68            17.91861      1.112778     -10.67         0 \r\n 2005          69            5.129626      5.018889     -3.662222      1.52 \r\n 2005          70            11.3809       5.701111     -5.826111      0 \r\n 2005          71            7.837301     -3.812778     -10.04         0 \r\n 2005          72            13.65344     -0.03         -13.45         0 \r\n 2005          73            10.5515      -0.3772222    -10.81         0 \r\n 2005          74            18.86499      7.58         -11.94         0 \r\n 2005          75            17.07444      5.51         -6.113889      0 \r\n 2005          76            13.69005      4.971111     -4.172778      0.25 \r\n 2005          77            3.276658      3.038889     -4.392222      1.52 \r\n 2005          78            16.6419      -2.218889     -12.82         8.89 \r\n 2005          79            18.09881      2.245        -11.19         0 \r\n 2005          80            18.62244      6.982222     -2.583889      0 \r\n 2005          81            11.40897      2.473889     -2.782222      0 \r\n 2005          82            19.9804       6.267222     -3.301111      0 \r\n 2005          83            3.212643      2.897778     -0.9861111     0 \r\n 2005          84            7.748517      3.32         -2.338889      3.3 \r\n 2005          85            20.58486      8.93         -3.631111      0 \r\n 2005          86            20.76532      15.35        -1.952778      0 \r\n 2005          87            19.54162      22.1          0.58          0 \r\n 2005          88            16.26116      22.29         6.962222      0 \r\n 2005          89            8.642931      20.29         4.083889      0.51 \r\n 2005          90            22.3575       12.99         0.7672222     11.68 \r\n 2005          91            20.35478      10.26        -0.3111111     0 \r\n 2005          92            22.61921      15.29        -3.67          0 \r\n 2005          93            20.89615      22.4          1.197778      0 \r\n 2005          94            21.04698      27.28         7.37          0 \r\n 2005          95            10.42096      23.49         11.24         0 \r\n 2005          96            15.04604      17.52         6.332778      0 \r\n 2005          97            23.0715       18.62         3.887778      0 \r\n 2005          98            22.99581      22.33         1.132778      0 \r\n 2005          99            20.347        25.74         8.44          0 \r\n 2005          100           12.73057      25.76         12.15         0 \r\n 2005          101           10.44686      20.51         12.18         70.612 \r\n 2005          102           5.403511      12.52         6.257222      7.62 \r\n 2005          103           24.9499       14.62         2.052778      0 \r\n 2005          104           24.85413      19.42         0.9538889     0 \r\n 2005          105           21.63555      21.88         3.511111      0.254 \r\n 2005          106           8.074284      18.37         9.6           2.54 \r\n 2005          107           21.19815      26.39         7.08          0 \r\n 2005          108           20.95757      26.91         12.36         0 \r\n 2005          109           9.199904      22.7          12.71         21.844 \r\n 2005          110           7.55781       17.95         11.88         0 \r\n 2005          111           8.682177      13.62         9.2           3.81 \r\n 2005          112           18.88507      15            3.152222      7.62 \r\n 2005          113           26.43635      8.84         -1.41          0 \r\n 2005          114           26.49577      14.7         -1.417778      0 \r\n 2005          115           10.71995      11.84         0.205         3.048 \r\n 2005          116           10.30314      7.96          1.34          4.318 \r\n 2005          117           21.13372      11.45         9.222222E-02                0 \r\n 2005          118           24.09356      11.48        -2.328889      0 \r\n 2005          119           17.41326      11.64        -1.943889      0 \r\n 2005          120           15.84368      9.61         -3.046111      0 \r\n 2005          121           11.82993      6.541111     -0.9677778     0.254 \r\n 2005          122           14.6668       9.92         -1.615         0 \r\n 2005          123           27.54942      13.02        -4.172222      0 \r\n 2005          124           25.99862      20.99        -1.943889      0 \r\n 2005          125           24.50686      24.39         8.85          4.318 \r\n 2005          126           23.90369      25.58         9.16          5.08 \r\n 2005          127           16.11162      24.95         14.17         42.418 \r\n 2005          128           14.14221      25.08         13.29         31.496 \r\n 2005          129           13.02651      18.22         12.81         0 \r\n 2005          130           21.38961      22.24         11.16         0 \r\n 2005          131           5.107576      15.28         10.34         18.034 \r\n 2005          132           2.638849      11.13         4.521111      19.05 \r\n 2005          133           7.583375      14.17         6.837222      6.096 \r\n 2005          134           11.78683      8.77          4.426111      0 \r\n 2005          135           20.72331      12.84         2.278889      0 \r\n 2005          136           11.43793      18.11         3.867778      1.778 \r\n 2005          137           17.15013      25.35         10.18         0 \r\n 2005          138           6.677371      17.86         11.78         10.668 \r\n 2005          139           27.48398      24.7          8.71          0 \r\n 2005          140           10.0316       17.52         11.23         0 \r\n 2005          141           7.421077      21.27         10.6          8.89 \r\n 2005          142           28.82153      24.02         9.93          0 \r\n 2005          143           28.8127       24.53         11.22         0 \r\n 2005          144           26.81915      25.71         10.79         0 \r\n 2005          145           4.768463      17.99         8.92          12.7 \r\n 2005          146           23.64387      21.1          8.02          0.254 \r\n 2005          147           19.26259      18.71         7.85          0 \r\n 2005          148           22.43201      21.85         9.32          0 \r\n 2005          149           20.37261      20.21         9.53          0.508 \r\n 2005          150           27.82142      23.88         8.35          0 \r\n 2005          151           8.22792       22.2          12.85         0 \r\n 2005          152           10.80351      26.69         13.94         0 \r\n 2005          153           25.47127      29.88         12.73         0 \r\n 2005          154           11.56939      27.73         16.26         0.508 \r\n 2005          155           15.66498      26.67         17.81         2.794 \r\n 2005          156           18.8362       25.24         14.78         0.508 \r\n 2005          157           27.176        33.67         13.26         0 \r\n 2005          158           23.37768      34.73         20.33         0 \r\n 2005          159           14.54308      25.37         15.84         19.812 \r\n 2005          160           18.32776      26.43         17.85         0 \r\n 2005          161           17.29971      26.08         19.18         2.794 \r\n 2005          162           17.43381      27.38         18.78         0 \r\n 2005          163           25.26734      27.49         13.29         0 \r\n 2005          164           21.37831      29.48         16.63         3.302 \r\n 2005          165           14.60609      22.96         15.52         0 \r\n 2005          166           12.41083      21.1          12.34         0 \r\n 2005          167           28.33689      27.15         10.74         0 \r\n 2005          168           30.11468      28.42         11.16         0 \r\n 2005          169           29.71602      29.98         12.13         0 \r\n 2005          170           29.25131      30.36         14.86         0 \r\n 2005          171           22.79698      32.4          18.74         9.398 \r\n 2005          172           23.11819      29.54         18.96         0 \r\n 2005          173           27.02157      32.86         18.32         0 \r\n 2005          174           28.55379      34.15         21.87         0 \r\n 2005          175           15.64707      29.3          17.85         13.716 \r\n 2005          176           11.40663      25.75         18.12         20.32 \r\n 2005          177           25.50248      31.02         20.02         24.13 \r\n 2005          178           13.61474      30.95         18.79         0.508 \r\n 2005          179           19.84023      28.72         18.78         1.27 \r\n 2005          180           11.5088       29.27         19.75         1.016 \r\n 2005          181           25.3191       25.88         14.79         0 \r\n 2005          182           29.96744      24.47         12.04         0 \r\n 2005          183           26.55719      27.06         12.67         0 \r\n 2005          184           17.34783      29.02         18.3          1.524 \r\n 2005          185           19.80329      27.27         15.33         0 \r\n 2005          186           27.15173      24.45         13.41         0 \r\n 2005          187           27.07592      27.29         12.36         0 \r\n 2005          188           24.21942      28.69         16.95         0 \r\n 2005          189           18.71591      28.33         18.11         0 \r\n 2005          190           27.08065      31.2          19.76         0 \r\n 2005          191           27.15403      31.76         19.3          0 \r\n 2005          192           27.34006      29.97         15.96         0 \r\n 2005          193           26.1346       29.51         15            0 \r\n 2005          194           26.04536      31.12         17.46         0 \r\n 2005          195           27.34319      32.52         18.66         0 \r\n 2005          196           26.48045      32.2          18.68         0 \r\n 2005          197           25.88386      32.26         19.34         0 \r\n 2005          198           25.8444       32.62         20.3          20.574 \r\n 2005          199           27.58407      26.72         16.21         1.016 \r\n 2005          200           28.06301      28.91         13.33         0 \r\n 2005          201           22.76586      33.06         20.17         32.512 \r\n 2005          202           22.84899      30.29         21.01         9.906 \r\n 2005          203           24.56205      29.98         19.86         0.254 \r\n 2005          204           24.571        33.22         22.52         0 \r\n 2005          205           25.81955      32.75         21.56         0 \r\n 2005          206           14.57208      30.55         20.01         34.29 \r\n 2005          207           15.39745      20.04         12.96         0.254 \r\n 2005          208           26.53208      22.84         9.85          0 \r\n 2005          209           26.96245      26.15         10.41         0 \r\n 2005          210           19.7863       26.6          14.69         0 \r\n 2005          211           20.65888      28.34         19            0 \r\n 2005          212           16.89838      27.35         17.75         6.858 \r\n 2005          213           26.11795      29.7          17.15         0 \r\n 2005          214           25.2604       30.61         20.01         0 \r\n 2005          215           19.9635       30.13         19.4          17.018 \r\n 2005          216           14.91378      24.47         12.71         2.54 \r\n 2005          217           27.45947      26.35         10.61         0 \r\n 2005          218           27.35955      25.64         10.72         0 \r\n 2005          219           25.68365      29.15         12.82         0 \r\n 2005          220           22.21779      30.37         17.58         0 \r\n 2005          221           20.6075       31.75         19.61         11.684 \r\n 2005          222           23.09505      27.32         17.99         0 \r\n 2005          223           5.574092      23.91         17.52         12.954 \r\n 2005          224           13.95828      24.27         16.6          0.254 \r\n 2005          225           16.8693       23.5          14.02         0 \r\n 2005          226           24.06633      22.86         10.82         0 \r\n 2005          227           25.04312      25.72         10.53         0 \r\n 2005          228           23.09631      26.46         12.99         0 \r\n 2005          229           15.27599      25.98         16.04         17.526 \r\n 2005          230           22.10027      27.74         16.49         5.588 \r\n 2005          231           23.05978      30.44         13.93         0 \r\n 2005          232           24.91534      27.53         16.2          0 \r\n 2005          233           24.36289      25.01         13.09         0 \r\n 2005          234           24.68259      22.04         10.76         0 \r\n 2005          235           20.84962      22.21         10.23         0 \r\n 2005          236           14.80496      22.44         12.25         0 \r\n 2005          237           16.20384      27.22         17.73         0 \r\n 2005          238           10.39937      26.63         13.59         6.858 \r\n 2005          239           21.86337      28.37         10.95         0 \r\n 2005          240           23.20036      26.24         9.67          0 \r\n 2005          241           22.63243      27.98         11.39         0 \r\n 2005          242           22.701        26.79         11.98         0 \r\n 2005          243           14.09987      25.17         10.91         0 \r\n 2005          244           23.30124      27.8          7.42          0 \r\n 2005          245           22.72653      26.95         7.88          0 \r\n 2005          246           21.11698      28.94         11.21         0 \r\n 2005          247           18.11572      28.7          16.96         0 \r\n 2005          248           18.48617      30.89         17.13         0 \r\n 2005          249           17.65548      29.66         16.81         2.032 \r\n 2005          250           10.8069       23.01         14.26         6.35 \r\n 2005          251           10.64188      24.43         14.53         25.654 \r\n 2005          252           18.00425      31.7          16.99         0 \r\n 2005          253           19.44012      31.69         20.37         0 \r\n 2005          254           18.07609      32.1          19.2          0 \r\n 2005          255           11.31559      30.41222      19.87556      0 \r\n 2005          256           8.24817       27.86333      12.76444      0 \r\n 2005          257           18.86654      23.18667      8.382222      0 \r\n 2005          258           12.2974       23.23611      7.825         0 \r\n 2005          259           18.17915      25.91667      5.878889      0 \r\n 2005          260           11.55148      26.87556      9.186666      0 \r\n 2005          261           16.77043      28.535        15.36278      26.797 \r\n 2005          262           12.90994      26.28056      12.89722      0 \r\n 2005          263           18.63177      30.79167      9.842778      0 \r\n 2005          264           17.04382      33.20611      14.54389      0 \r\n 2005          265           9.026646      22.41         7.65          0.254 \r\n 2005          266           17.08306      21.95         7.52          0 \r\n 2005          267           1.470509      19.8          13.35         32.004 \r\n 2005          268           2.106728      19.44         14.7          29.718 \r\n 2005          269           15.97121      20.69         8.46          0.254 \r\n 2005          270           18.07756      25.69         7.19          0 \r\n 2005          271           5.695889      15.47         2.482778      3.048 \r\n 2005          272           17.04386      18.05        -0.6022222     0 \r\n 2005          273           17.58895      26.31         7.01          0 \r\n 2005          274           15.11227      29.39         11.57         0 \r\n 2005          275           10.73455      27.78         17.33         0 \r\n 2005          276           13.01316      32.64         20.21         0 \r\n 2005          277           12.3          32.32         21.43         0.254 \r\n 2005          278           5.401251      22.71         4.64          2.794 \r\n 2005          279           9.982313      7.83          2.84          0 \r\n 2005          280           15.87071      11.13        -0.9872222     0 \r\n 2005          281           16.36655      14.54        -1.887778      0 \r\n 2005          282           15.0196       15.23         1.32          0 \r\n 2005          283           15.41281      18            2.473889      0 \r\n 2005          284           11.52031      18.72         4.896111      0 \r\n 2005          285           2.688722      15.24         7.32          0.508 \r\n 2005          286           11.18346      20.49         5.425         0 \r\n 2005          287           14.56614      26.64         4.857778      0 \r\n 2005          288           15.06462      19.98         1.798889      0 \r\n 2005          289           12.55794      22.04         3.282778      0 \r\n 2005          290           14.20585      22.04         7.07          0 \r\n 2005          291           13.72331      27.4          4.517222      0 \r\n 2005          292           12.96291      15.09         3.272778      0 \r\n 2005          293           10.06185      15.02        -0.1327778     0 \r\n 2005          294           6.473568      14.55        -1.521111      0 \r\n 2005          295           9.192039      10.54        -3.766111      1.27 \r\n 2005          296           3.814302      7.89         -0.63          1.778 \r\n 2005          297           5.06059       6.851111     -0.3122222     0 \r\n 2005          298           13.0555       11.31        -2.302222      0 \r\n 2005          299           8.469922      12.05        -2.208889      0 \r\n 2005          300           12.64677      13.94        -2.857778      0 \r\n 2005          301           12.59225      16.26        -1.483889      0 \r\n 2005          302           10.22699      20.97         5.227222      0 \r\n 2005          303           1.691717      13.47         7.82          4.318 \r\n 2005          304           10.15306      11.64        -1.277778      0 \r\n 2005          305           11.72453      16.57        -3.622778      0 \r\n 2005          306           9.566047      24.7         -1.785         0 \r\n 2005          307           9.350738      17.99         3.282222      0 \r\n 2005          308           7.513083      10.29        -1.005         0 \r\n 2005          309           2.183546      9.57          1.947778      0.254 \r\n 2005          310           7.281876      13.04         3.931111      0 \r\n 2005          311           10.22975      17.88         5.367778      0 \r\n 2005          312           7.484465      19.79         5.017778      0 \r\n 2005          313           10.58284      11.5         -4.012222      0 \r\n 2005          314           10.65355      14.92        -6.788889      0 \r\n 2005          315           8.552849      19.12         1.432778      0 \r\n 2005          316           3.190175      16.83         6.172778      7.6454 \r\n 2005          317           7.205476      9.16         -3.785         0 \r\n 2005          318           3.448034      7.42         -3.68          0 \r\n 2005          319           1.005499      2.878889     -4.848889      11.43 \r\n 2005          320           9.477638     -4.821111     -14.31         0 \r\n 2005          321           8.075664     -4.172222     -16.84         0 \r\n 2005          322           9.571569      5.882222     -6.23          0 \r\n 2005          323           1.799789      4.887222      0.7111111     0 \r\n 2005          324           1.80845       1.686111     -0.1611111     0 \r\n 2005          325           6.812054      8.43         -1.061111      0 \r\n 2005          326           3.441633      2.408889     -2.067222      0 \r\n 2005          327           6.750591      9.34         -2.113889      0 \r\n 2005          328           9.556842     -2.105        -10.64         0 \r\n 2005          329           2.388562     -3.225        -8.08          0 \r\n 2005          330           8.723515      6.583889     -8.4           0 \r\n 2005          331           1.299467      10.8          4.877222      17.5006 \r\n 2005          332           1.180265      11.13        -6.115         4.9022 \r\n 2005          333           6.06839      -6.077222     -9.94          0 \r\n 2005          334           6.000442     -6.212222     -13.8          4.6228 \r\n 2005          335           8.638412     -8.07         -17.12         6.35 \r\n 2005          336           5.485391     -11.06        -24.12         0 \r\n 2005          337           4.942266     -7.76         -14.64         3.56 \r\n 2005          338           7.573249     -10.98        -24.33         1.52 \r\n 2005          339           6.945984     -13.27        -25.99         0 \r\n 2005          340           8.353523     -17.88        -26.04         0 \r\n 2005          341           8.471805     -14.45        -27            0 \r\n 2005          342           5.819567     -9.75         -23.7          1.52 \r\n 2005          343           7.38635      -9.69         -27.03         1.52 \r\n 2005          344           4.375586      1.631111     -11.53         0 \r\n 2005          345           4.403116      0.12         -5.94          0.51 \r\n 2005          346           4.93666       0.5977778    -7.06          2.03 \r\n 2005          347           5.487567      1.067778     -6.84          0 \r\n 2005          348           5.357738      0.74         -3.292778      8.38 \r\n 2005          349           5.373219     -3.292778     -8.91          1.52 \r\n 2005          350           5.529909     -8.02         -17.22         1.02 \r\n 2005          351           8.306161     -13.2         -22.46         0 \r\n 2005          352           8.155621     -15.1         -23.04         0 \r\n 2005          353           8.126583     -12.66        -26.81         0 \r\n 2005          354           8.158381     -11.15        -20.43         0 \r\n 2005          355           8.204364     -8.67         -22.56         0 \r\n 2005          356           7.083638      2.768889     -8.67          0 \r\n 2005          357           7.764709      3.122778     -5.546111      0 \r\n 2005          358           3.688447      2.307222     -0.2261111     0 \r\n 2005          359           4.268266     -0.18         -1.371111      0 \r\n 2005          360           4.06053      -0.3477778    -3.253889      0 \r\n 2005          361           4.168854     -0.2461111    -2.217222      0 \r\n 2005          362           3.159464     -0.245        -1.897222      0 \r\n 2005          363           3.233437      0.2622222    -1.597222      0 \r\n 2005          364           2.984991      0.505        -1.362222      1.78 \r\n 2005          365           4.80319      -0.9777778    -3.338889      0 \r\n 2006          1             4.154001      1.021111     -5.172778      0 \r\n 2006          2             2.460569      1.011111      7.388889E-02                3.81 \r\n 2006          3             3.787901      0.6461111    -7.611111E-02                1.02 \r\n 2006          4             3.682255      0.5238889    -2.245         0 \r\n 2006          5             2.729307     -2.188889     -4.772222      0 \r\n 2006          6             4.099776      0.3277778    -6.422778      0 \r\n 2006          7             7.096189      2.051111     -6.191111      0 \r\n 2006          8             5.302425      0.8038889    -1.822222      0 \r\n 2006          9             9.130408     -0.4138889    -12.1          0 \r\n 2006          10            9.045431     -2.038889     -10.77         0 \r\n 2006          11            8.321097      2.155        -6.732222      0 \r\n 2006          12            8.699289      2.922222     -2.971111      0 \r\n 2006          13            6.597038     -1.287222     -7.86          0 \r\n 2006          14            8.905895      1.301111     -11.74         0 \r\n 2006          15            8.981834      3.865        -1.342222      0 \r\n 2006          16            2.913152      0.29         -6.481111      0 \r\n 2006          17            5.779108     -3.878889     -8.2           0.25 \r\n 2006          18            8.221016      1.78         -9.14          0 \r\n 2006          19            6.452105      1.272778     -3.973889      0 \r\n 2006          20            2.700605     -2.583889     -5.172778      0 \r\n 2006          21            4.804738     -1.792778     -8.81          0.25 \r\n 2006          22            3.527279     -1.662222     -13.41         0 \r\n 2006          23            6.257883      2.345        -15.09         0 \r\n 2006          24            9.071665      2.297778     -7.72          0 \r\n 2006          25            10.48979     -2.222222E-03               -10.31         0 \r\n 2006          26            9.108317      6.09         -4.942778      0 \r\n 2006          27            9.692863      10.09         0.3738889     0 \r\n 2006          28            1.123362      3.913889     -1.888889E-02                0.51 \r\n 2006          29            1.669249      2.033889     -0.8272222     4.57 \r\n 2006          30            4.965404     -0.3388889    -2.151111      1.27 \r\n 2006          31            9.061289      6.457778     -3.566111      0 \r\n 2006          32            5.765385      3.377778     -0.5822222     0 \r\n 2006          33            10.98049      11.78         0.4872222     0 \r\n 2006          34            7.334552      0.675        -11.9          0 \r\n 2006          35            11.45537     -5.106111     -14.24         0 \r\n 2006          36            10.69447     -2.537778     -13.7          0 \r\n 2006          37            11.0953      -0.6577778    -12.77         0 \r\n 2006          38            3.945261      0.3272222    -4.762778      0 \r\n 2006          39            10.44908     -4.563889     -17.15         1.27 \r\n 2006          40            4.656081     -2.31         -20.25         0.25 \r\n 2006          41            8.954137      0.2972222    -12.9          2.29 \r\n 2006          42            9.923486     -3.612778     -12.81         0 \r\n 2006          43            10.90187     -6.666111     -16.31         0 \r\n 2006          44            12.06138      2.517778     -16.32         0 \r\n 2006          45            10.89007      7.6          -5.172222      0 \r\n 2006          46            6.7467       -1.521111     -8.97          0 \r\n 2006          47            6.713354     -8.64         -14.85         3.56 \r\n 2006          48            13.78369     -14.83        -24.47         5.08 \r\n 2006          49            15.20189     -14.19        -27.12         0 \r\n 2006          50            14.62848     -6.831111     -22.47         0 \r\n 2006          51            14.81542     -1.023889     -14.11         0 \r\n 2006          52            14.14414      3.283889     -15.09         0 \r\n 2006          53            14.60626      6.656111     -7.23          0 \r\n 2006          54            15.42528      0.1588889    -7.97          0 \r\n 2006          55            14.59978      13.4         -5.317222      0 \r\n 2006          56            15.76786     -1.568889     -10.2          0 \r\n 2006          57            13.73306      6.152778     -12.73         0 \r\n 2006          58            15.03504      7.58         -4.515         0 \r\n 2006          59            8.667365      6.65         -5             0 \r\n 2006          60            7.758475      12.51278      0.3955556     0 \r\n 2006          61            7.152464      2.197222     -3.532778      0 \r\n 2006          62            16.68378      6.124444     -7.868333      0 \r\n 2006          63            7.974913      6.622778     -5.440556      0 \r\n 2006          64            4.540351      3.018889     -1.191111      5.08 \r\n 2006          65            13.79046      2.608333     -3.411667      4.32 \r\n 2006          66            4.498846      2.22         -3.88          0 \r\n 2006          67            3.31264       3.469445     -2.236667      3.81 \r\n 2006          68            14.72776      9.701667     -0.2988889     10.16 \r\n 2006          69            17.1257       14.53833     -2.033889      0 \r\n 2006          70            16.0738       16.53333     -0.5994444     0 \r\n 2006          71            2.741064      4.639444     -1.938889      0.51 \r\n 2006          72            14.35183      1.911667     -5.85          6.6 \r\n 2006          73            18.63223      4.393889     -7.906111      0.51 \r\n 2006          74            13.36332      3.01         -7.91          0 \r\n 2006          75            2.710395      2.241111     -2.896111      1.02 \r\n 2006          76            19.8358       2.998889     -8.69          2.03 \r\n 2006          77            19.52869      4.506111     -5.268889      0 \r\n 2006          78            13.89335      4.762778     -3.67          0 \r\n 2006          79            6.664652      2.682222     -0.715         0 \r\n 2006          80            11.99624      1.028889     -6.191111      0.51 \r\n 2006          81            19.24184      4.261111     -8.26          0 \r\n 2006          82            14.67597      5.043889     -5.316111      0 \r\n 2006          83            6.601725      2.502778     -1.992222      0 \r\n 2006          84            10.47615      4.978889     -5.507778      0 \r\n 2006          85            20.84301      11.68        -6.442222      0 \r\n 2006          86            2.727382      6.147222      0.4761111     0.76 \r\n 2006          87            8.503729      8.31          7.777778E-03                5.84 \r\n 2006          88            15.67552      14.51         0.2427778     0 \r\n 2006          89            4.627755      16.85         8.33          0.51 \r\n 2006          90            2.60864       9.22          2.991111      28.45 \r\n 2006          91            6.914186      7.65          2.625         0 \r\n 2006          92            2.717173      7.19          3.668889      24.892 \r\n 2006          93            23.07016      9.74         -0.17          0 \r\n 2006          94            23.10145      14.85        -1.962778      0 \r\n 2006          95            20.16429      21.25         3.877222      0 \r\n 2006          96            5.749234      15.47         9.79          8.382 \r\n 2006          97            12.74543      10.34        -0.4988889     4.318 \r\n 2006          98            23.54194      10.47        -3.527778      0 \r\n 2006          99            19.21527      16.77        -0.3288889     0 \r\n 2006          100           23.22383      27.1          5.881111      0 \r\n 2006          101           14.23585      24.2          13.5          0 \r\n 2006          102           22.37323      24.3          8.91          0 \r\n 2006          103           22.48477      31.55         7.43          0 \r\n 2006          104           23.70851      26.63         8.52          0 \r\n 2006          105           17.27507      26.55         7.34          9.906 \r\n 2006          106           6.481184      13.86         10.61         9.144 \r\n 2006          107           20.19039      18.77         9.19          0 \r\n 2006          108           17.03478      20.71         6.417778      6.096 \r\n 2006          109           21.93688      17.59         2.212778      0 \r\n 2006          110           15.46515      14.72         3.726111      0.254 \r\n 2006          111           15.28796      16.82         4.357778      0 \r\n 2006          112           20.38859      18.54         4.983889      0 \r\n 2006          113           26.07942      22.86         1.817778      0 \r\n 2006          114           13.56896      20.03         4.881111      0 \r\n 2006          115           16.24133      11.66         1.03          1.778 \r\n 2006          116           26.89668      18.3         -2.593889      0 \r\n 2006          117           24.55372      22.44         0.4111111     0 \r\n 2006          118           5.851282      14.37         11.06         6.096 \r\n 2006          119           1.552013      12.31         10.68         27.178 \r\n 2006          120           5.300584      15.66         11.17         11.176 \r\n 2006          121           4.787919      14.34         8.13          0.508 \r\n 2006          122           18.29789      21.6          5.277222      0 \r\n 2006          123           21.43555      18.02         7.47          0 \r\n 2006          124           16.14915      13.49         3.838889      0 \r\n 2006          125           10.56401      10.01         0.5327778     0 \r\n 2006          126           27.91669      19.36        -1.568889      0 \r\n 2006          127           24.90505      22.29         5.136111      0 \r\n 2006          128           11.67156      23.15         12.82         0.508 \r\n 2006          129           19.86509      23.42         11.2          0 \r\n 2006          130           20.20219      19.08         6.761111      0 \r\n 2006          131           11.15325      13.67         5.942222      0.254 \r\n 2006          132           5.709821      9.56          3.575         5.588 \r\n 2006          133           5.797769      9.56          3.877222      0.762 \r\n 2006          134           11.16877      16.05         3.971111      0 \r\n 2006          135           11.93482      18.22         8.16          2.032 \r\n 2006          136           23.52358      22.54         9.46          0 \r\n 2006          137           23.13321      24.56         6.342222      0 \r\n 2006          138           21.10067      20.89         6.847778      0 \r\n 2006          139           27.60373      27.01         8.86          0 \r\n 2006          140           22.27177      26.93         6.161111      0 \r\n 2006          141           10.08888      15.86         7.86          0 \r\n 2006          142           27.83381      24.87         6.008889      0 \r\n 2006          143           21.07878      30.02         13.16         0 \r\n 2006          144           18.809        26.33         16.09         5.588 \r\n 2006          145           12.6489       25.29         16.8          2.286 \r\n 2006          146           24.63987      28.05         14.87         0 \r\n 2006          147           20.44507      30.48         16.8          0 \r\n 2006          148           25.93804      35.24         20.76         0 \r\n 2006          149           19.68999      31.6          22.08         0 \r\n 2006          150           13.97669      27.35         16.15         0.762 \r\n 2006          151           25.82561      29.07         14.47         0 \r\n 2006          152           25.78687      28.31         14.19         0 \r\n 2006          153           28.31459      31.82         11.77         0 \r\n 2006          154           26.97927      30.69         15.88         2.54 \r\n 2006          155           26.01523      28.62         16.34         0 \r\n 2006          156           25.39475      29.99         15.93         0 \r\n 2006          157           29.15051      30.9          18.09         0 \r\n 2006          158           27.01571      31.48         15.72         0 \r\n 2006          159           22.74879      29.3          15.04         0 \r\n 2006          160           20.94347      24.52         13.58         16.764 \r\n 2006          161           4.341695      13.61         8.15          3.81 \r\n 2006          162           12.50832      15.82         7.63          0 \r\n 2006          163           27.0901       23.23         5.197778      0 \r\n 2006          164           26.67911      29.12         10.7          0 \r\n 2006          165           6.989707      25.83         17.18         5.334 \r\n 2006          166           11.50098      27.16         18.18         5.588 \r\n 2006          167           24.38686      32.14         20.56         0 \r\n 2006          168           24.88806      29.11         19.24         0 \r\n 2006          169           25.13295      29.4          15.3          0 \r\n 2006          170           29.99125      26.64         13.51         0 \r\n 2006          171           14.44242      26.13         13.08         16.256 \r\n 2006          172           15.95631      25.82         16.93         6.096 \r\n 2006          173           23.20313      26.06         14.11         0 \r\n 2006          174           22.32256      27.07         12.77         0 \r\n 2006          175           20.64034      27.33         13.85         0 \r\n 2006          176           13.06525      21.77         13.15         5.842 \r\n 2006          177           28.79429      25.72         11.29         0 \r\n 2006          178           27.03697      25.11         12.66         0 \r\n 2006          179           26.19791      26.18         9.99          0 \r\n 2006          180           26.77162      28.49         12.08         0 \r\n 2006          181           23.21731      31.94         17.11         0 \r\n 2006          182           15.79071      29.93         19.1          2.794 \r\n 2006          183           26.16318      29.89         17.41         0 \r\n 2006          184           15.62753      28.01         16.1          0.254 \r\n 2006          185           26.0572       24.53         12.19         0 \r\n 2006          186           28.07552      26.01         9.68          0 \r\n 2006          187           25.33399      26.84         10.52         0 \r\n 2006          188           25.70005      27.25         13.64         0 \r\n 2006          189           11.84352      25.44         17.73         1.524 \r\n 2006          190           27.23441      31.78         15.96         0 \r\n 2006          191           17.22892      26.75         15.16         0.254 \r\n 2006          192           10.04177      24.01         19.76         3.302 \r\n 2006          193           13.37934      27.06         18.9          0.254 \r\n 2006          194           19.67689      30.09         17.84         3.302 \r\n 2006          195           27.42813      31.13         15.32         0 \r\n 2006          196           27.408        32.62         18.64         0 \r\n 2006          197           27.14759      33.83         20.05         0 \r\n 2006          198           20.83791      32.41         15.45         6.096 \r\n 2006          199           27.90456      29.46         12.05         0 \r\n 2006          200           14.40158      26.64         19            20.066 \r\n 2006          201           24.87421      27.92         19.01         0 \r\n 2006          202           11.87674      23.25         15.28         0 \r\n 2006          203           26.51296      27.58         13.27         0 \r\n 2006          204           23.8942       30.84         13.31         0 \r\n 2006          205           20.1696       30.18         17.93         0 \r\n 2006          206           17.58569      30.76         19.88         12.446 \r\n 2006          207           23.05342      30.62         19.27         28.702 \r\n 2006          208           26.29527      29.79         20.07         0 \r\n 2006          209           25.4755       32.24         18.84         0 \r\n 2006          210           24.64288      32.2          21.42         0 \r\n 2006          211           25.67524      33.6          22.09         0 \r\n 2006          212           25.71277      33.72         22.55         0 \r\n 2006          213           15.74079      28.66         20.95         23.876 \r\n 2006          214           12.32816      24.53         17.47         1.778 \r\n 2006          215           28.52262      28.36         15.55556      0 \r\n 2006          216           25.90222      28.35         12.8          0 \r\n 2006          217           19.0641       27.99         17.99         1.016 \r\n 2006          218           16.65889      29.01         15.74         0 \r\n 2006          219           22.92799      26.52         14.81         0 \r\n 2006          220           13.8767       25            15.11         0 \r\n 2006          221           19.29155      29.01         18.51         10.668 \r\n 2006          222           16.19091      27.87         21.09         5.334 \r\n 2006          223           17.21963      25            18.83         0 \r\n 2006          224           20.76523      26.67         17.32         0 \r\n 2006          225           5.414598      23.97         18.41         4.826 \r\n 2006          226           25.56646      25.71         13.92         0 \r\n 2006          227           24.76769      27.74         12.12         0 \r\n 2006          228           20.58913      27.67         14.79         2.794 \r\n 2006          229           5.188913      22.79         18.57         4.572 \r\n 2006          230           6.366123      22.78         19.33         0.254 \r\n 2006          231           10.78376      22.8          12.24         0 \r\n 2006          232           21.79927      25.19         10.48         0 \r\n 2006          233           21.71199      27.84         13.51         0 \r\n 2006          234           20.25575      29.37         14.81         7.874 \r\n 2006          235           22.45432      29.96222      16.59611      0 \r\n 2006          236           20.98142      31.25         19.65         0 \r\n 2006          237           7.744919      24.35056      19.51056      2.5908 \r\n 2006          238           18.48027      25.75         12.79         0 \r\n 2006          239           20.94958      25.82         11.47         0 \r\n 2006          240           7.075604      20.25         15.83         11.176 \r\n 2006          241           20.53942      24.86         12.14         0 \r\n 2006          242           21.80784      26.75         10.77         0 \r\n 2006          243           22.43628      25.13         11.75         0 \r\n 2006          244           17.23289      25.11         8.95          0 \r\n 2006          245           9.376177      24.36         14.57         61.722 \r\n 2006          246           17.09838      22.02         10.99         8.89 \r\n 2006          247           11.14212      21.81         11.13         6.604 \r\n 2006          248           21.55814      26.9          9.31          0.254 \r\n 2006          249           19.26418      27.26         10.89         0 \r\n 2006          250           19.24774      27.77         11.01         0 \r\n 2006          251           17.21862      29.02         12.52         0 \r\n 2006          252           6.121067      16.48         12.24         0 \r\n 2006          253           3.479833      15.54         12.25         10.668 \r\n 2006          254           3.957729      15.93         11.83         2.032 \r\n 2006          255           7.737764      18.52         8.15          0 \r\n 2006          256           20.63281      24.31         5.011111      0 \r\n 2006          257           19.20335      27            7.97          0 \r\n 2006          258           18.71085      28.08         12.72         0 \r\n 2006          259           18.07827      29.38         16.08         42.418 \r\n 2006          260           17.77932      19.58         6.538889      1.524 \r\n 2006          261           7.540656      14.26         6.141111      0 \r\n 2006          262           7.989767      10.82         3.191111      0 \r\n 2006          263           19.53811      16.96        -1.012778      0 \r\n 2006          264           2.58429       14.98         9.3           10.668 \r\n 2006          265           3.667402      18.9          9.32          5.842 \r\n 2006          266           4.021912      15.71         7.34          0 \r\n 2006          267           17.97434      19.48         5.796111      0 \r\n 2006          268           17.55669      22.24         4.065         0 \r\n 2006          269           17.79723      25.37         1.836111      0 \r\n 2006          270           11.63784      16.96         5.248889      0 \r\n 2006          271           14.89224      14.14         2.652222      0 \r\n 2006          272           15.03386      21.44         5.265         2.032 \r\n 2006          273           13.3711       22.92         6.502778      0 \r\n 2006          274           15.50189      31.23         8.99          0 \r\n 2006          275           12.03611      30.4          15.79         0 \r\n 2006          276           14.57132      32.05         15.68         0 \r\n 2006          277           8.255199      19.45         4.726111      0 \r\n 2006          278           16.32032      19.51         4.14          0 \r\n 2006          279           15.31988      20.85         6.266111      0 \r\n 2006          280           14.98232      26.19         10.42         0 \r\n 2006          281           11.06296      20.22         10.29         0 \r\n 2006          282           6.458464      11.61         4.548889      0 \r\n 2006          283           5.911783      11.85         2.522222      3.556 \r\n 2006          284           5.696014      7.31         -3.552778      1.778 \r\n 2006          285           8.143152      2.69         -4.787222      0 \r\n 2006          286           15.59494      10.05        -2.918889      0 \r\n 2006          287           15.33578      10.51        -5.6           0 \r\n 2006          288           7.100164      14.69        -1.751111      0 \r\n 2006          289           1.9733        12.66         8.69          9.144 \r\n 2006          290           3.593512      15.29         5.348889      0.508 \r\n 2006          291           3.263102      5.367778      1.432222      6.096 \r\n 2006          292           9.588055      7.09          8.222222E-02                0 \r\n 2006          293           10.31716      14.63         1.901111      0 \r\n 2006          294           3.904174      5.445        -1.127778      0.508 \r\n 2006          295           8.45942       4.867778     -4.085         0 \r\n 2006          296           4.36546       3.706111     -6.108889      0 \r\n 2006          297           10.83685      8.67         -8.24          0 \r\n 2006          298           12.59597      13.25        -2.181111      0 \r\n 2006          299           1.48532       7.27          4.131111      12.192 \r\n 2006          300           12.02331      13.52         3.575         0 \r\n 2006          301           4.581061      10.52        -1.183889      0 \r\n 2006          302           12.28468      16.43        -3.842222      0 \r\n 2006          303           9.924867      19.62        -1.052222      0 \r\n 2006          304           12.4574       2.945        -8.53          0 \r\n 2006          305           11.75286      3.952778     -10.93         0 \r\n 2006          306           11.61345      1.452778     -9.56          0 \r\n 2006          307           10.64573      8.59         -11.51         0 \r\n 2006          308           9.837965      14.13         0.2888889     0 \r\n 2006          309           10.85828      16.89        -1.972778      0 \r\n 2006          310           1.587744      9.63          4.361111      0 \r\n 2006          311           8.181854      18.1          4.152222      0 \r\n 2006          312           10.48506      27.12         5.532778      0 \r\n 2006          313           10.03365      11.64         3.35          0 \r\n 2006          314           4.842729      4.51         -7.59          0 \r\n 2006          315           10.99605     -2.785        -13.86         0 \r\n 2006          316           7.975164      4.632222     -3.705         0 \r\n 2006          317           9.883613      8.06         -0.3577778     0 \r\n 2006          318           4.575371      5.533889      0.4938889     0 \r\n 2006          319           3.996431      2.862222     -0.6327778     0 \r\n 2006          320           3.053902     -0.03         -2.851111      0 \r\n 2006          321           8.310888      6.471111     -2.462778      0 \r\n 2006          322           4.364874      3.207778     -6.157778      0 \r\n 2006          323           8.852214      4.135        -8.94          0 \r\n 2006          324           8.602806      9.17         -8.53          0 \r\n 2006          325           8.318085      11.63        -0.5           0 \r\n 2006          326           6.386207      14.98        -8.611111E-02                0 \r\n 2006          327           7.733161      16           -1.55          0 \r\n 2006          328           7.127904      12.23        -2.341111      0 \r\n 2006          329           5.111718      11.49        -2.603889      0 \r\n 2006          330           2.255971      10.74         0.1572222     0 \r\n 2006          331           2.371638      10.39         2.655         0 \r\n 2006          332           2.487304      17.46         0.5711111     0 \r\n 2006          333           6.930503      0.5811111    -11.96         0 \r\n 2006          334           8.118968     -8.52         -14.17         0 \r\n 2006          335           8.592555     -2.595        -14.23         0 \r\n 2006          336           8.153528     -5.685        -13.59         0 \r\n 2006          337           6.45495      -9.59         -15.77         0 \r\n 2006          338           8.477872     -2.687778     -15.39         0 \r\n 2006          339           3.835766      4.312222     -15.37         0 \r\n 2006          340           3.665979      0.6261111    -15.56         0 \r\n 2006          341           8.425948     -9.05         -18.7          0 \r\n 2006          342           7.662996      2.408889     -14.81         0 \r\n 2006          343           8.078927      11.29        -6.18          0 \r\n 2006          344           7.780441      9.7          -0.5361111     0 \r\n 2006          345           1.456701      7.88         -1.877778      0 \r\n 2006          346           3.888045      5.182222     -2.02          7.37 \r\n 2006          347           6.319388      7.24         -4.905         0 \r\n 2006          348           7.67764       10.71         0.4761111     0.51 \r\n 2006          349           4.722774      2.26         -3.613889      0 \r\n 2006          350           4.30906       8            -0.4138889     0 \r\n 2006          351           4.333578      1.84         -4.133889      0 \r\n 2006          352           5.923414      0.7777778    -7.23          0 \r\n 2006          353           8.04897       5.915        -8.68          0 \r\n 2006          354           1.321935      2.551111     -3.603889      0.25 \r\n 2006          355           1.314153      3.72          0.8427778     16.76 \r\n 2006          356           1.320638      1.866111      0.1672222     4.06 \r\n 2006          357           5.985589      2.806111     -3.141111      0.51 \r\n 2006          358           7.096357      4.571111     -4.487222      0 \r\n 2006          359           6.093327      0.3377778    -5.737222      0 \r\n 2006          360           7.780064      4.316111     -8.6           0 \r\n 2006          361           3.183229      3.345        -2.367778      0 \r\n 2006          362           5.931155      6.275        -0.2361111     0 \r\n 2006          363           2.093674      6.601111      0.9           0 \r\n 2006          364           1.5           8.74          2.422778      0.51 \r\n 2006          365           1.4           8.73         -3.557778      22.1 \r\n 2007          1             8.222481     -1.333889     -6.302778      11.68 \r\n 2007          2             8.276328      1.162778     -6.316111      0 \r\n 2007          3             7.994955      6.076111     -3.178889      0 \r\n 2007          4             3.11595       6.457222      0.7027778     0 \r\n 2007          5             1.349549      1.313889     -0.9861111     0 \r\n 2007          6             8.292061      4.352778     -3.878889      0.25 \r\n 2007          7             2.176098      0.8072222    -6.295         0 \r\n 2007          8             4.294207      2.808889     -7.09          0 \r\n 2007          9             6.622644      0.01         -10.09         0.25 \r\n 2007          10            7.92755       6.247778     -10.07         0 \r\n 2007          11            3.365819      3.523889     -10.76         0 \r\n 2007          12            7.754626     -10.76        -17.41         0 \r\n 2007          13            3.07775      -10.65        -16.88         0 \r\n 2007          14            2.257394     -8.09         -10.73         0.76 \r\n 2007          15            8.155495     -10.05        -21.99         7.62 \r\n 2007          16            9.914072     -16.48        -27.63         0 \r\n 2007          17            9.491237     -7.77         -18.91         0 \r\n 2007          18            4.620265     -3.481111     -11.54         0 \r\n 2007          19            9.402285     -4.62         -18.1          0 \r\n 2007          20            8.762383     -5.842778     -19.03         0 \r\n 2007          21            6.686032     -4.258889     -14.33         6.6 \r\n 2007          22            7.125938     -6.012778     -14.98         1.78 \r\n 2007          23            7.346811     -2.405        -15.19         0 \r\n 2007          24            5.85534      -2.753889     -7.7           0 \r\n 2007          25            6.950168     -5.487222     -8.28          0 \r\n 2007          26            10.55138      2.441111     -8.83          0 \r\n 2007          27            9.797213     -6.005        -19.8          0 \r\n 2007          28            10.99162     -13.2         -22.85         0 \r\n 2007          29            8.960957     -4.63         -17.25         0 \r\n 2007          30            11.13199     -13.79        -22.68         0.25 \r\n 2007          31            7.026066     -6.23         -23.16         0 \r\n 2007          32            11.43864     -10.68        -24.49         0.25 \r\n 2007          33            11.4301      -13.55        -25.07         0 \r\n 2007          34            12.06511     -17.36        -26.84         0 \r\n 2007          35            12.01942     -19.28        -27.77         0 \r\n 2007          36            11.9531      -17.5         -29.39         0 \r\n 2007          37            7.830816     -14.68        -21.71         2.29 \r\n 2007          38            9.224298     -15.34        -23.78         1.52 \r\n 2007          39            11.94611     -13.27        -26.3          0 \r\n 2007          40            11.09287     -13.68        -20.8          0 \r\n 2007          41            12.06381     -11.43        -26.31         0 \r\n 2007          42            5.190043     -1.051111     -11.46         0 \r\n 2007          43            6.126338     -3.518889     -8.65          3.05 \r\n 2007          44            10.81903     -8.62         -20.13         1.02 \r\n 2007          45            13.05621     -15.75        -24.94         0.51 \r\n 2007          46            14.03109     -15.48        -26.86         0 \r\n 2007          47            9.997584     -7.06         -23.76         0 \r\n 2007          48            7.451913     -7.06         -9.444445      2.29 \r\n 2007          49            12.83199     -3.283889     -12.8          0 \r\n 2007          50            11.15668      2.882778     -5.853889      0 \r\n 2007          51            14.33836      3.09         -5.507778      0 \r\n 2007          52            14.05652      6.057778     -2.497222      0 \r\n 2007          53            14.86763      0.9011111    -5.087222      0 \r\n 2007          54            4.167306      0.6211111    -1.642778      0 \r\n 2007          55            1.242313     -0.5061111    -3.141111      8.38 \r\n 2007          56            8.587493     -0.7888889    -4.601111      25.4 \r\n 2007          57            10.88162     -1.576111     -9.51          3.56 \r\n 2007          58            12.94538     -0.4861111    -5.231111      0.25 \r\n 2007          59            5.827642     -0.6661111    -5.738889      0 \r\n 2007          60            4.356506      0.3411111    -4.477222      0.76 \r\n 2007          61            13.47871     -4.315        -8.13          20.57 \r\n 2007          62            16.03844     -7.77         -16.85         2.03 \r\n 2007          63            16.02681     -1.048889     -20.52         0 \r\n 2007          64            16.27844     -5.192222     -15.42         0 \r\n 2007          65            13.79051     -2.112778     -16.44         0 \r\n 2007          66            12.27703     -0.6638889    -6.927778      0 \r\n 2007          67            17.13658      2.263889     -4.733889      0 \r\n 2007          68            11.05894      3.682222     -2.912778      0 \r\n 2007          69            18.06517      6.312222     -6.907222      0 \r\n 2007          70            17.33214      3.95         -5.286111      0 \r\n 2007          71            11.11346      5.877222      1.447222      0 \r\n 2007          72            15.92899      13.71         2.432222      0 \r\n 2007          73            4.40299       4.052222      0.3688889     0 \r\n 2007          74            12.94488      6.685        -2.442222      0 \r\n 2007          75            15.28938      0.2827778    -4.237222      0 \r\n 2007          76            17.73648      4.54         -2.713889      0 \r\n 2007          77            12.32565      6.22         -2.421111      0 \r\n 2007          78            19.01879      7.09         -1.797778      0 \r\n 2007          79            16.38425      10.98        -2.543889      0 \r\n 2007          80            5.07423       18.16         5.753889      1.78 \r\n 2007          81            19.82321      13.84        -3.277778E-02                3.81 \r\n 2007          82            9.665459      15.88         3.222778      0 \r\n 2007          83            4.281446      17.03         7.99          0 \r\n 2007          84            19.4115       24.16         11.02         5.08 \r\n 2007          85            15.86196      25.66         9.23          0 \r\n 2007          86            12.553        19.48         8.14          0 \r\n 2007          87            3.665937      12.28         7.64          4.06 \r\n 2007          88            5.479115      12.06         7.67          2.29 \r\n 2007          89            4.813023      16.65         9.86          9.91 \r\n 2007          90            2.522994      14.05         6.528889      12.95 \r\n 2007          91            4.6547        8.12          1.836111      1.524 \r\n 2007          92            11.09337      11.46         1.338889      8.89 \r\n 2007          93            6.932219      7.39         -7.68          4.572 \r\n 2007          94            14.17455     -1.796111     -8.73          0 \r\n 2007          95            23.41061      0.895        -8.19          0 \r\n 2007          96            18.72888     -1.676111     -8.91          0 \r\n 2007          97            22.62071      1.907222     -10.01         0 \r\n 2007          98            22.80393      4.683889     -9             0 \r\n 2007          99            24.0531       6.976111     -8.36          0 \r\n 2007          100           4.63286       4.698889     -1.282222      0 \r\n 2007          101           9.858801      0.5311111    -1.685         0 \r\n 2007          102           23.71721      3.3          -2.391111      0 \r\n 2007          103           19.96082      8.77         -3.085         0 \r\n 2007          104           21.21568      12           -1.54          0 \r\n 2007          105           25.2168       16.57        -0.48          0 \r\n 2007          106           24.5838       24.99         0.4122222     0 \r\n 2007          107           24.87388      20.18         6.991111      0 \r\n 2007          108           24.94856      17.76         3.05          0 \r\n 2007          109           19.44987      16.44         2.503889      0 \r\n 2007          110           21.734        23.52         5.94          0 \r\n 2007          111           23.88399      28.01         10.95         0 \r\n 2007          112           11.0904       24.42         10.73         19.304 \r\n 2007          113           23.73433      19.31         7.86          0.254 \r\n 2007          114           2.549562      10.84         7.24          36.576 \r\n 2007          115           2.113297      10.03         6.056111      8.636 \r\n 2007          116           12.18711      12.58         5.162778      0 \r\n 2007          117           21.08125      21.61         4.963889      0 \r\n 2007          118           25.43964      24.95         5.741111      0 \r\n 2007          119           25.34228      32.1          9.69          0 \r\n 2007          120           25.64913      32.53         12.8          0 \r\n 2007          121           24.06122      22.57         9.54          0 \r\n 2007          122           26.11695      21.56         6.302778      0 \r\n 2007          123           7.162924      19.08         8.91          0 \r\n 2007          124           7.499151      16.82         12.47         0 \r\n 2007          125           8.140098      24.7          13.95         0 \r\n 2007          126           6.229599      16.66         10.57         20.32 \r\n 2007          127           11.86909      22.69         13.31         2.794 \r\n 2007          128           22.35879      23.03         11.59         0 \r\n 2007          129           23.88884      26.44         9.94          0 \r\n 2007          130           26.21594      29.98         11.99         0 \r\n 2007          131           27.19232      28.02         12.27         0 \r\n 2007          132           21.67735      27.78         13.04         0 \r\n 2007          133           25.41508      32.14         15.01         0 \r\n 2007          134           23.96039      33.68         17.64         9.906 \r\n 2007          135           11.06183      17.65         7.87          0 \r\n 2007          136           27.72021      19.05         4.057778      0 \r\n 2007          137           29.02914      20.69         2.908889      0 \r\n 2007          138           25.15094      26.55         9.07          0 \r\n 2007          139           26.89797      29.63         12.96         0 \r\n 2007          140           24.87275      29.91         15.21         0.254 \r\n 2007          141           22.94773      29.49         16.8          0 \r\n 2007          142           14.20978      26.99         16.83         0 \r\n 2007          143           14.88571      28.35         16.91         31.75 \r\n 2007          144           10.49895      17.03         9.07          34.798 \r\n 2007          145           29.50595      19.45         5.93          0 \r\n 2007          146           17.30138      22.92         7.86          0 \r\n 2007          147           28.92073      22.23         5.662778      0 \r\n 2007          148           21.08309      28.1          14.47         0 \r\n 2007          149           22.2752       28.62         18.06         0 \r\n 2007          150           14.61475      25.97         14.95         4.826 \r\n 2007          151           24.21758      24.61         11.6          0.254 \r\n 2007          152           12.68534      21.27         14.83         4.064 \r\n 2007          153           19.53451      22.1          13.05         2.032 \r\n 2007          154           13.23194      21.35         13.76         10.922 \r\n 2007          155           22.39239      24.58         14.1          0 \r\n 2007          156           29.66092      22.83         9.85          0 \r\n 2007          157           16.55136      28.04         11.62         3.556 \r\n 2007          158           27.23788      30.51         13.6          0 \r\n 2007          159           30.08648      22.52         10.27         0 \r\n 2007          160           27.33236      28.76         8.76          0 \r\n 2007          161           28.08715      30.67         14.26         0 \r\n 2007          162           27.2693       31.04         17.34         0 \r\n 2007          163           28.25798      31.12         17.72         0 \r\n 2007          164           27.72557      31.3          17.11         0 \r\n 2007          165           27.82134      31.92         15.59         0 \r\n 2007          166           26.72639      31.8          16.29         0 \r\n 2007          167           20.27349      31.95         19.68         0.508 \r\n 2007          168           25.4542       31.4          19.13         0 \r\n 2007          169           12.48167      27.16         15.76         22.352 \r\n 2007          170           28.83014      25.64         11.8          0 \r\n 2007          171           29.35001      30.46         11.73         0 \r\n 2007          172           16.41818      30.9          19.5          20.32 \r\n 2007          173           8.154909      22.27         17.66         39.624 \r\n 2007          174           20.53097      24.98         16.27         0 \r\n 2007          175           15.01931      23.11         14.45         0 \r\n 2007          176           27.43319      29.75         16.13         0 \r\n 2007          177           26.76291      31.64         21.28         0 \r\n 2007          178           27.4334       26.34         15.94         0 \r\n 2007          179           25.62315      23.42         12.61         0 \r\n 2007          180           27.28859      25.33         12.34         0 \r\n 2007          181           27.25131      25.64         11.84         0 \r\n 2007          182           28.85299      26.27         13.26         0 \r\n 2007          183           25.76896      27.89         14.49         0 \r\n 2007          184           20.9264       30.64         19.37         0.254 \r\n 2007          185           27.41934      29.6          16.97         0 \r\n 2007          186           29.05144      29.73         16.93         0 \r\n 2007          187           29.15558      30.3          15.09         0 \r\n 2007          188           28.55588      32.77         18.97         0 \r\n 2007          189           28.01238      33.7          20            7.366 \r\n 2007          190           23.9075       28.57         18.17         0.254 \r\n 2007          191           26.55012      25.41         14.4          0 \r\n 2007          192           27.05734      24.33         11.21         0 \r\n 2007          193           22.84778      25.13         10.52         0 \r\n 2007          194           29.0778       25.65         9.17          0 \r\n 2007          195           27.37767      27.48         14            0 \r\n 2007          196           27.84607      28.18         10.63         0 \r\n 2007          197           23.55968      31.62         16.46         3.302 \r\n 2007          198           23.07254      32.75         18.74         0 \r\n 2007          199           11.34521      29.67         19.74         15.24 \r\n 2007          200           26.93927      26.68         14.42         0.508 \r\n 2007          201           28.66115      24.4          12            0 \r\n 2007          202           28.17259      25.33         12.57         0 \r\n 2007          203           20.7921       26.67         15.98         0 \r\n 2007          204           18.01162      27.77         19.36         0.762 \r\n 2007          205           22.74347      28.31         19.14         0 \r\n 2007          206           24.91292      29.89         18.2          0 \r\n 2007          207           21.31874      30.37         19.65         15.748 \r\n 2007          208           19.9222       28.35         18.19         0 \r\n 2007          209           22.77234      26.81         15.27         0 \r\n 2007          210           26.85166      27.7          14.76         0 \r\n 2007          211           23.18296      28.39         16.4          0 \r\n 2007          212           26.69472      28.21         15.64         0 \r\n 2007          213           25.53985      29.57         18.28         0 \r\n 2007          214           25.32931      27.51         13.35         0 \r\n 2007          215           21.03251      26.95         10.14         0 \r\n 2007          216           7.386057      22.95         16.67         43.942 \r\n 2007          217           11.79281      24.92         20.6          0 \r\n 2007          218           8.149553      25.5          20.09         5.08 \r\n 2007          219           14.05104      28.8          20.4          0.508 \r\n 2007          220           12.71748      27.08         18.49         4.318 \r\n 2007          221           25.64654      29.85         18.9          0 \r\n 2007          222           22.62594      30.24         18.34         0 \r\n 2007          223           20.41704      31.57         22.33         2.032 \r\n 2007          224           23.40396      28.5          19.07         0 \r\n 2007          225           23.02773      30.16         17.64         0 \r\n 2007          226           13.6872       29.13         21.47         0 \r\n 2007          227           15.06926      27.81         17.48         10.922 \r\n 2007          228           17.58067      27.1          14.65         0 \r\n 2007          229           22.18913      24.17         12.7          0.508 \r\n 2007          230           7.699271      24.66         14.14         49.784 \r\n 2007          231           12.64589      29.34         18.18         79.248 \r\n 2007          232           11.12998      27.77         19.7          32.512 \r\n 2007          233           19.65262      29.6          20.23         23.114 \r\n 2007          234           4.126595      24.22         18.52         18.034 \r\n 2007          235           8.748409      24.21         17.27         2.032 \r\n 2007          236           18.80909      25.1          14.88         0 \r\n 2007          237           22.42478      24.68         12.01         0 \r\n 2007          238           22.3249       26.39         14.41         0 \r\n 2007          239           20.9554       31.44         19.91         0 \r\n 2007          240           18.53345      31.04         18.84         25.4 \r\n 2007          241           19.78768      24.37         11.98         0 \r\n 2007          242           23.43806      25.12         9.7           0 \r\n 2007          243           22.81351      26.53         11.33         0 \r\n 2007          244           22.99121      26.39         13.57         0 \r\n 2007          245           21.52706      29.68         14.64         0 \r\n 2007          246           21.61182      31.22         15.29         0 \r\n 2007          247           21.36116      31.61         16.52         0 \r\n 2007          248           18.84553      30.61         19.89         0 \r\n 2007          249           10.89936      27.69         19.24         1.524 \r\n 2007          250           19.46234      25.32         12.11         0.762 \r\n 2007          251           19.82396      26.03         10.19         0 \r\n 2007          252           14.70714      20.97         12.92         3.302 \r\n 2007          253           8.414275      17.65         9.27          10.668 \r\n 2007          254           21.58492      18.61         4.08          0 \r\n 2007          255           20.92038      21.4          0.8627778     0 \r\n 2007          256           15.79155      24.96         8.04          0 \r\n 2007          257           19.68559      13.55         0.4222222     0 \r\n 2007          258           19.01151      17.54        -2.618889      0 \r\n 2007          259           19.64087      24.9          9.37          0 \r\n 2007          260           14.77793      33.23         16.54         0 \r\n 2007          261           4.956073      24.06         17.01         17.526 \r\n 2007          262           18.17764      25.2          12.22         0 \r\n 2007          263           16.00033      29.4          11.34         0 \r\n 2007          264           13.25939      31.3          9.64          0 \r\n 2007          265           19.51447      25.69         5.546111      0 \r\n 2007          266           15.69109      30.61         11.71         0 \r\n 2007          267           9.812568      29.9          17.66         9.398 \r\n 2007          268           9.760309      17.67         6.972222      1.778 \r\n 2007          269           17.16465      21.66         3.995         0 \r\n 2007          270           12.88262      22.77778      6.111111      0 \r\n 2007          271           16.72516      23.25         2.143889      0 \r\n 2007          272           8.821337      26.66667      14.44444      4.9784 \r\n 2007          273           4.308265      25            16.11111      0.762 \r\n 2007          274           10.83125      23.33333      13.33333      0 \r\n 2007          275           2.142961      19.07         7.59          17.018 \r\n 2007          276           17.21105      24.04         5.28          0 \r\n 2007          277           15.30574      26.66667      11.11111      0 \r\n 2007          278           12.03511      30            19.44444      0.254 \r\n 2007          279           15.20231      30.98         11.84         0 \r\n 2007          280           5.678818      27.77         17.06         0.762 \r\n 2007          281           12.99073      20.53         8.72          15.748 \r\n 2007          282           16.14526      16.76         8.43          0 \r\n 2007          283           10.73322      9.93          3.532222      0 \r\n 2007          284           11.36592      11.86         0.9022222     0 \r\n 2007          285           9.589352      17.11         6.391111      0 \r\n 2007          286           2.955745      13.44         7.53          3.556 \r\n 2007          287           1.362059      13.69         11.34         29.464 \r\n 2007          288           2.114761      14.42         12.03         2.032 \r\n 2007          289           2.93516       12.5          7.14          0 \r\n 2007          290           4.601354      15.68         8.584444      6.2992 \r\n 2007          291           2.999635      15.55556      11.11111      22.606 \r\n 2007          292           4.831851      15            5             0.508 \r\n 2007          293           13.32056      23.66         4.587778      0 \r\n 2007          294           6.885023      15.7          8.97          0 \r\n 2007          295           5.696139      12.91        -0.6238889     0 \r\n 2007          296           13.44943      20.02        -1.83          0 \r\n 2007          297           13.4442       13.03         0.6277778     0 \r\n 2007          298           13.25679      14.99        -1.335         0 \r\n 2007          299           4.590225      13.85         1.225         0 \r\n 2007          300           12.9368       12.22222      1.111111      0 \r\n 2007          301           12.53828      15.81        -4.061111      0 \r\n 2007          302           12.09046      21.45         2.515         0 \r\n 2007          303           8.527369      22.42         7.84          0 \r\n 2007          304           11.72645      13.1         -2.923889      0 \r\n 2007          305           11.64294      15.11        -5.536111      0 \r\n 2007          306           10.0516       13.38        -2.933889      0 \r\n 2007          307           8.089094      11.66667     -4.444445      0 \r\n 2007          308           10.30369      17.22222     -1.111111      0 \r\n 2007          309           9.024427      7.777778     -4.407222      0 \r\n 2007          310           11.39621      4.362222     -8.43          0 \r\n 2007          311           7.535258      7.7          -9.81          0 \r\n 2007          312           6.103912      6.171111     -3.468889      0 \r\n 2007          313           10.12156      11.11111     -4.444445      0 \r\n 2007          314           5.598485      10.97        -5.187222      0 \r\n 2007          315           6.567164      19.97         3.447778      0 \r\n 2007          316           5.964417      11.54        -5.457778      0 \r\n 2007          317           5.850571      13.88889     -6.111111      0 \r\n 2007          318           4.217179      7.222222      2.222222      0 \r\n 2007          319           9.779681      5.586111     -6.546111      0 \r\n 2007          320           8.041732      11.45         0.9677778     0 \r\n 2007          321           4.694657      5             0.5555556     0 \r\n 2007          322           2.400068      4.995         1.737778      0 \r\n 2007          323           7.189283      12.69611      2.401111      0 \r\n 2007          324           1.223904      5.588333      1.009444      0 \r\n 2007          325           2.13133       1.198333     -2.273889      0 \r\n 2007          326           3.645143     -0.6644444    -5.722778      0 \r\n 2007          327           8.930079      1.115556     -7.673889      0 \r\n 2007          328           5.370708      2.368889     -3.501111      0 \r\n 2007          329           8.770836      5.393333     -5.452222      0 \r\n 2007          330           7.908555      3.972222     -3.685         0 \r\n 2007          331           6.828413      0.16         -11.91778      0 \r\n 2007          332           4.640432      0.115        -6.533333      0 \r\n 2007          333           6.738541     -1.040556     -10.82056      0 \r\n 2007          334           8.314737     -3.066667     -8.719444      0 \r\n 2007          335           6.388822      0.4255556    -5.522222      0.25 \r\n 2007          336           4.462905     -0.3561111    -8.677222      24.89 \r\n 2007          337           7.391998     -2.216667     -14.51722      0 \r\n 2007          338           4.056765     -1.518333     -6.901667      0 \r\n 2007          339           8.692302     -3.970556     -14.915        0.51 \r\n 2007          340           2.85604      -3.046111     -10.70556      0 \r\n 2007          341           6.682225     -2.55         -9.283334      4.83 \r\n 2007          342           2.881688     -8.171667     -10.615        0 \r\n 2007          343           3.400295     -10.59611     -13.79056      3.81 \r\n 2007          344           6.367169     -4.244444     -10.46167      0 \r\n 2007          345           3.42678      -2.887222     -8.216666      2.29 \r\n 2007          346           5.018499     -3.332778     -8.26          0.51 \r\n 2007          347           7.681113     -0.4888889    -12.30667      0 \r\n 2007          348           7.365012     -7.196111     -11.30056      0 \r\n 2007          349           6.39014      -4.746111     -10.38611      0 \r\n 2007          350           5.020381     -4.770555     -11.31944      0 \r\n 2007          351           7.581073     -2.512222     -13.415        0 \r\n 2007          352           7.622662     -0.9633333    -6.313889      0 \r\n 2007          353           6.19165      -1.686667     -11.88111      0 \r\n 2007          354           6.471225     -0.8461111    -3.666111      0 \r\n 2007          355           4.134964      1.256111     -1.127778      0 \r\n 2007          356           2.280949      1.122778     -12.9          0 \r\n 2007          357           5.131383     -5.942778     -16.28         0.25 \r\n 2007          358           3.049718     -5.441111     -7.95          0 \r\n 2007          359           7.239366      2.172778     -7.42          0 \r\n 2007          360           4.750848     -3.215        -7             0 \r\n 2007          361           2.771733     -3.797778     -6.95          0.25 \r\n 2007          362           5.04536      -4.122778     -11.05         0 \r\n 2007          363           4.095299     -4.458889     -15.69         1.78 \r\n 2007          364           5.044858     -3.653889     -15.54         0 \r\n 2007          365           4.704615     -6.842222     -12.59         0 \r\n 2008          1             6.700634     -10.87        -17.18         0.25 \r\n 2008          2             8.619249     -11.3         -19.91         0 \r\n 2008          3             7.951608     -2.777778     -14.44444      0 \r\n 2008          4             5.758983     -1.111111     -6.111111      0 \r\n 2008          5             4.563949      2.222222     -4.444445      0 \r\n 2008          6             5.901448      3.888889      0.5555556     0 \r\n 2008          7             4.717293      3.333333     -1.111111      0 \r\n 2008          8             3.391509      0            -5.555555      1.02 \r\n 2008          9             4.957831      1.111111     -8.333333      0 \r\n 2008          10            2.372537      0            -4.444445      0.25 \r\n 2008          11            3.78037      -2.777778     -7.777778      0.25 \r\n 2008          12            1.58105      -3.888889     -8.888889      0 \r\n 2008          13            5.155065     -5.555555     -11.66667      0.25 \r\n 2008          14            8.974052     -12.76        -17.2          0.25 \r\n 2008          15            8.818324     -5.741111     -18.14         0 \r\n 2008          16            1.921084     -3.538889     -12.43         0 \r\n 2008          17            7.313172     -12.38        -21.11         3.3 \r\n 2008          18            8.212606     -11.75        -22.03         0.76 \r\n 2008          19            10.15745     -17.75        -25.24         0 \r\n 2008          20            9.214674     -13.33        -25.94         0 \r\n 2008          21            5.63225      -12.69        -14.89         2.03 \r\n 2008          22            10.37038     -12.72        -26.97         3.3 \r\n 2008          23            8.155411     -14.58        -27.41         0 \r\n 2008          24            10.72669     -15.55556     -29.44444      0.25 \r\n 2008          25            4.527758     -5.555555     -19.44444      0.25 \r\n 2008          26            10.32025     -5.555555     -14.44444      1.02 \r\n 2008          27            10.06721      1.666667     -12.77778      0 \r\n 2008          28            7.002552      3.888889      1.666667      0 \r\n 2008          29            4.477884      2.222222     -21.11111      0.25 \r\n 2008          30            10.94028     -15.11        -29.75         1.78 \r\n 2008          31            10.09595     -9.02         -17.04         0 \r\n 2008          32            7.303967     -2.672778     -13.27         0 \r\n 2008          33            3.552007     -2.227222     -8.79          0 \r\n 2008          34            3.444227     -2.226111     -10            0 \r\n 2008          35            2.341032      0.3388889    -3.682778      0.25 \r\n 2008          36            2.293167     -0.73         -8.21          4.57 \r\n 2008          37            4.222911     -5.973889     -10.12         1.02 \r\n 2008          38            5.550955     -5.555555     -11.11111      0 \r\n 2008          39            8.481972     -2.777778     -7.222222      0 \r\n 2008          40            6.330601     -3.888889     -17.77778      0 \r\n 2008          41            12.28615     -9.51         -22.87         0 \r\n 2008          42            5.973246     -13.88889     -18.33333      0.25 \r\n 2008          43            11.21412     -12.77778     -25.55556      5.33 \r\n 2008          44            8.671382     -4.571111     -22.45         0.25 \r\n 2008          45            6.350893     -2.747778     -19.35         0.25 \r\n 2008          46            13.70716     -11.22        -21.73         2.54 \r\n 2008          47            13.64373     -1.338889     -13.67         0 \r\n 2008          48            6.263239      0.1088889    -11.51         0.25 \r\n 2008          49            12.88475     -11.5         -19.44         1.52 \r\n 2008          50            12.74639     -7.38         -24.36         0 \r\n 2008          51            15.02282     -15.52        -27.17         0.25 \r\n 2008          52            8.568999     -8.98         -19.25         0 \r\n 2008          53            14.1833      -4.862778     -20.73         0 \r\n 2008          54            14.61626     -0.3561111    -14.84         0 \r\n 2008          55            7.193384      1.462222     -7.13          0 \r\n 2008          56            2.294213      0.2811111    -6.335         0.25 \r\n 2008          57            8.385698     -3.893889     -11.16         6.86 \r\n 2008          58            12.74886     -4.343889     -14.3          0 \r\n 2008          59            7.303465     -1.428889     -10.81         0 \r\n 2008          60            16.18074      2.12         -4.852222      2.29 \r\n 2008          61            13.85657      0.2222222    -7.43          0 \r\n 2008          62            8.029096      6.49         -3.378889      0 \r\n 2008          63            16.36588     -3.378889     -11.46         2.79 \r\n 2008          64            11.87959     -1.526111     -10.76         0 \r\n 2008          65            10.53962     -2.997222     -14.72         1.27 \r\n 2008          66            16.12589     -3.753889     -15.07         1.27 \r\n 2008          67            18.34789     -9.15         -19.63         0.76 \r\n 2008          68            14.25196     -5.275        -17.64         0 \r\n 2008          69            9.99294      -4.653889     -8.48          0 \r\n 2008          70            18.06074     -1.357778     -11.94         0 \r\n 2008          71            14.97997      5.837778     -4.486111      0 \r\n 2008          72            11.03547      6.116111      0.705         0 \r\n 2008          73            18.60892      10.87         0.5438889     0 \r\n 2008          74            14.08962      4.807222     -0.825         0.25 \r\n 2008          75            7.296519     -0.5072222    -2.672778      0 \r\n 2008          76            8.242898      2.717222     -1.808889      0 \r\n 2008          77            5.064523      1.622222     -0.6088889     1.78 \r\n 2008          78            5.839776      4.892778      0.1211111     1.78 \r\n 2008          79            17.52452      10           -1.213889      0 \r\n 2008          80            12.04226      9.97          1.282778      0.25 \r\n 2008          81            1.271308      3.333333     -0.4233333     0.51 \r\n 2008          82            7.306478      2.832222     -1.408889      0 \r\n 2008          83            6.72147       0.3111111    -3.228889      0.25 \r\n 2008          84            18.52332      6.956111     -5             0 \r\n 2008          85            19.87915      9.708333     -1.587778      0 \r\n 2008          86            12.35933      9.393333     -2.816111      0 \r\n 2008          87            8.35662       2.205555     -2.958333      4.83 \r\n 2008          88            22.54134      4.473889     -9.444445      3.56 \r\n 2008          89            18.2504       7.376111     -1.762222      0 \r\n 2008          90            5.013855      8.12          2.161111      0 \r\n 2008          91            2.182835      4.318333      0.6222222     1.02 \r\n 2008          92            19.10532      5.111111     -2.547222      0 \r\n 2008          93            16.18559      9.879444     -2.956667      0 \r\n 2008          94            7.370744      7.77         -0.625         0 \r\n 2008          95            19.65346      15.16        -1.798889      0 \r\n 2008          96            21.12217      17.96         1.952778      0 \r\n 2008          97            6.479887      14.56         0.2422222     0 \r\n 2008          98            11.57922      10.45        -6.777778E-02                0 \r\n 2008          99            4.498511      3.772778     -0.9938889     0 \r\n 2008          100           12.10239      7.59          0.9488889     0 \r\n 2008          101           2.060243      6.516111      1.79          0 \r\n 2008          102           4.072999      7.1          -0.3622222     4.2418 \r\n 2008          103           5.155609      0.2627778    -1.117778      0 \r\n 2008          104           23.84679      6.903889     -2.862778      0 \r\n 2008          105           25.23086      11.7         -4.027222      0 \r\n 2008          106           24.5551       19.45         1.397222      0 \r\n 2008          107           22.43051      23.55         3.992778      0 \r\n 2008          108           3.3613        8.91          3.917222      0 \r\n 2008          109           2.316848      7.24          4.742222      0 \r\n 2008          110           6.362484      10.61         4.677222      0 \r\n 2008          111           15.15826      19.3          7.47          0 \r\n 2008          112           11.87712      22.85         6.407778      0 \r\n 2008          113           23.82533      20.97         4.05          9.144 \r\n 2008          114           25.82624      24.54         3.917222      0 \r\n 2008          115           8.41917       20.94         12.98         21.59 \r\n 2008          116           7.723496      14.3          6.111111E-03                38.8874 \r\n 2008          117           25.92662      9.89         -0.2472222     0 \r\n 2008          118           18.62508      10.59        -1.222222      0 \r\n 2008          119           14.25489      4.362222     -2.338889      0 \r\n 2008          120           20.31211      9.75         -3.757778      0 \r\n 2008          121           20.53737      17.8          1.511111      0 \r\n 2008          122           7.633415      20.31         9             0 \r\n 2008          123           5.659864      20.95         4.477222      12.3952 \r\n 2008          124           27.34152      12.26         1.388889      0 \r\n 2008          125           25.25642      21.45         1.463889      0 \r\n 2008          126           22.79912      23.38         3.073889      0 \r\n 2008          127           22.14261      27.78         7.81          28.2448 \r\n 2008          128           19.10854      17.4          6.757222      0 \r\n 2008          129           19.88919      18.52         4.365         0 \r\n 2008          130           11.78947      16.02         8.52          0 \r\n 2008          131           4.613571      12.45         7.7           6.985 \r\n 2008          132           26.34577      14.65         3.69          0 \r\n 2008          133           26.14607      20.41         2.155         0 \r\n 2008          134           5.671872      18.78         6.782222      0 \r\n 2008          135           27.98975      19.68         5.462222      0 \r\n 2008          136           27.12102      21.78         4.49          0 \r\n 2008          137           26.8309       25.6          6.657778      0 \r\n 2008          138           27.28792      26.79         10.21         0 \r\n 2008          139           28.58931      19.29         4.985         0 \r\n 2008          140           17.80543      23.68         8.75          0 \r\n 2008          141           25.27479      19.85         5.605         0 \r\n 2008          142           29.28436      22.21         3.178889      0 \r\n 2008          143           8.769036      19.55         7.28          0 \r\n 2008          144           13.19621      16.27         10.3          14.4272 \r\n 2008          145           16.00761      20.8          9.1           0 \r\n 2008          146           14.58634      31.34         13.86         2.9718 \r\n 2008          147           27.45047      24.48         12.41         0 \r\n 2008          148           14.0897       16.72         7.66          9.5758 \r\n 2008          149           24.00219      20.68         8.84          0 \r\n 2008          150           2.301618      17.5          10.05         63.6524 \r\n 2008          151           17.91472      24.59         15.97         17.2212 \r\n 2008          152           28.30443      26.7          12.42         0 \r\n 2008          153           29.03591      28.42         12.25         0 \r\n 2008          154           7.845711      21.31         13.73         10.3378 \r\n 2008          155           7.935709      18.56         14.66         22.5298 \r\n 2008          156           17.5346       23.76         14.51         6.985 \r\n 2008          157           14.59208      26.54         17.62         28.0162 \r\n 2008          158           18.70039      22.91         17.46         5.6642 \r\n 2008          159           17.00101      31.78         16.31         7.4676 \r\n 2008          160           3.869154      20.28         17.14         34.0868 \r\n 2008          161           24.72639      23.06         14.22         2.9718 \r\n 2008          162           27.37541      26.91         13.06         0 \r\n 2008          163           11.37379      26.58         17.5          36.5252 \r\n 2008          164           22.66222      25.1          15.46         12.9794 \r\n 2008          165           28.98788      24.14         13.14         0 \r\n 2008          166           28.72454      29.46         13.16         0 \r\n 2008          167           20.95443      24.68         15.42         0 \r\n 2008          168           29.86866      23.44         11.24         0 \r\n 2008          169           28.40513      25.83         10.27         0 \r\n 2008          170           28.39672      27.48         12.81         0 \r\n 2008          171           21.824        29.3          12.44         0 \r\n 2008          172           27.16211      29.83         15.18         0 \r\n 2008          173           26.65907      27.32         14.17         0 \r\n 2008          174           27.57369      26.84         12.34         0 \r\n 2008          175           26.21046      26.83         11.9          0 \r\n 2008          176           22.12169      28.5          17.27         0 \r\n 2008          177           19.47598      29.98         15.93         0 \r\n 2008          178           11.39165      24.09         16.02         21.0312 \r\n 2008          179           18.52073      27.99         18.22         5.461 \r\n 2008          180           14.54856      21.96         12.04         0 \r\n 2008          181           26.86572      25.78         15.04         0 \r\n 2008          182           29.30557      26.81         12.76         0 \r\n 2008          183           28.24196      29.65         13.94         0 \r\n 2008          184           23.22944      28.93         15.04         0 \r\n 2008          185           28.2653       25.63         12.81         0 \r\n 2008          186           23.85386      26.43278      13.57556      0 \r\n 2008          187           28.16326      27.47         14.68889      0 \r\n 2008          188           16.47019      32.23         19.35         0 \r\n 2008          189           19.24084      32.58722      19.44444      0 \r\n 2008          190           24.44682      27.13         16.36         0 \r\n 2008          191           23.54027      28.5          14.17         0 \r\n 2008          192           24.06009      30.91         17.38         0 \r\n 2008          193           26.34924      31.36         20.8          0 \r\n 2008          194           25.32655      25.14         14.48         0 \r\n 2008          195           27.8249       26.17         11.02         0 \r\n 2008          196           27.71356      30.27         11.86         0 \r\n 2008          197           27.02353      31.36         18.75         0 \r\n 2008          198           22.9423       29.05         18.09         0 \r\n 2008          199           12.04837      29.57         19.28         23.6728 \r\n 2008          200           19.87798      27.94         19.04         2.9972 \r\n 2008          201           18.88925      26.88         17.77         13.9954 \r\n 2008          202           21.83027      28.98         16.46         0 \r\n 2008          203           25.42341      27.52         17.15         10.4902 \r\n 2008          204           26.57815      26.76         14.29         0 \r\n 2008          205           23.47948      25.29         14.96         0 \r\n 2008          206           8.269969      20.74         16.4          9.4742 \r\n 2008          207           19.69618      28.19         18.8          0 \r\n 2008          208           25.0207       26.92         13.24         0 \r\n 2008          209           12.823        26.95         16.58         14.6558 \r\n 2008          210           23.29375      29.21         17.95         0 \r\n 2008          211           21.08096      29.84         20.84         5.3086 \r\n 2008          212           22.19855      30.21         18.99         0 \r\n 2008          213           19.53643      29.48         18.95         0 \r\n 2008          214           26.95078      27.59         14.72         0 \r\n 2008          215           25.40608      27.32         11.42         0 \r\n 2008          216           23.97344      32.1          20.13         0 \r\n 2008          217           9.615125      25.9          20.96         0 \r\n 2008          218           23.21509      26.94         15.22         0 \r\n 2008          219           14.48848      26.17         12.88         0 \r\n 2008          220           26.42225      25.55         13.41         0 \r\n 2008          221           22.8569       26.22         11.22         0 \r\n 2008          222           19.33753      29.04         18.03         0 \r\n 2008          223           26.05841      24.74         13.79         0 \r\n 2008          224           19.26418      24.15         12.48         0 \r\n 2008          225           16.49207      24.36         15.37         8.2804 \r\n 2008          226           18.64135      27.2          14.15         0 \r\n 2008          227           18.64135      27.2          15.23222      0 \r\n 2008          228           23.19036      24.93         12.35         0 \r\n 2008          229           24.20285      26.18         9.52          0 \r\n 2008          230           23.77257      26.96         12.58         0 \r\n 2008          231           23.24241      28.53         12.59         0 \r\n 2008          232           18.2045       29.26         15.14         0 \r\n 2008          233           20.25558      27.19         16.33         0 \r\n 2008          234           8.107169      23.03         16.79         0 \r\n 2008          235           17.78694      29.05         18.99         0 \r\n 2008          236           24.10352      23.4          9.96          0 \r\n 2008          237           24.18507      23.95         8.41          0 \r\n 2008          238           24.13808      24.75         7.84          0 \r\n 2008          239           21.95403      24.63         10.23         0 \r\n 2008          240           10.7479       25.37         13.82         5.842 \r\n 2008          241           20.96209      26.73         13.22         13.0302 \r\n 2008          242           23.3268       26.8          9.11          0 \r\n 2008          243           22.57469      28.27         13.28         0 \r\n 2008          244           21.99838      27.63         14.62         0 \r\n 2008          245           19.95458      29.54         17.79         0 \r\n 2008          246           10.81551      25.94         11.77         7.493 \r\n 2008          247           20.59118      20.13         7.31          0 \r\n 2008          248           12.52782      18.83         8.14          0 \r\n 2008          249           10.36427      20.1          6.007222      0 \r\n 2008          250           11.53905      17.72         6.612222      0 \r\n 2008          251           16.07476      21.3          6.918889      0 \r\n 2008          252           8.420091      17.06         4.851111      4.2926 \r\n 2008          253           20.42466      20.85         2.041111      0 \r\n 2008          254           12.53263      20.85         10.81         0 \r\n 2008          255           9.746042      26.58         15.64         15.5702 \r\n 2008          256           5.928309      18.98         14.84         6.4008 \r\n 2008          257           7.853242      23.58         13.4          0 \r\n 2008          258           5.379745      15.16         10.35         0 \r\n 2008          259           18.73336      19.79         6.045         0 \r\n 2008          260           20.10797      27.43         7.25          0 \r\n 2008          261           19.66735      28.63         8.93          0 \r\n 2008          262           18.37696      27.22         12.97         0 \r\n 2008          263           19.15967      26.49         12.84         0 \r\n 2008          264           18.18299      27.07         12.4          0 \r\n 2008          265           17.9317       26.16         11.71         0 \r\n 2008          266           9.490567      23.91         15.22         0 \r\n 2008          267           9.792067      27.79         16.59         5.8166 \r\n 2008          268           17.54351      25.45         12.02         4.7498 \r\n 2008          269           12.99287      26.67         11.18         0 \r\n 2008          270           17.35879      28.62         14.69         0 \r\n 2008          271           16.41856      24.22         8.47          0 \r\n 2008          272           8.96263       21.05         10.68         0 \r\n 2008          273           15.5985       19.27         6.506111      13.2588 \r\n 2008          274           16.68064      18.64         3.91          0 \r\n 2008          275           14.91935      16.24         2.608889      0 \r\n 2008          276           16.94177      19.57         1.361111      0 \r\n 2008          277           16.68638      18.05         3.651111      0 \r\n 2008          278           15.69251      20.54         2.323889      0 \r\n 2008          279           10.48176      24.34         11.25         0 \r\n 2008          280           11.04149      24.77         13.88         8.636 \r\n 2008          281           2.263209      16.67         4.746111      21.717 \r\n 2008          282           15.8451       22.76         2.297222      0 \r\n 2008          283           12.15439      18.14         1.983889      0 \r\n 2008          284           15.32905      23.77         9.89          0 \r\n 2008          285           8.336118      26.32         11.94         0 \r\n 2008          286           8.281894      25.64         16.72         0 \r\n 2008          287           2.00422       19.2          2.467222      6.7056 \r\n 2008          288           6.815736      11.93         1.285         0 \r\n 2008          289           12.41962      13.34         0.9061111     0 \r\n 2008          290           14.60241      14.05        -1.817778      0 \r\n 2008          291           3.374815      8.57          5.393889      0 \r\n 2008          292           12.32991      14           -0.3327778     0 \r\n 2008          293           11.31015      22.07         7.77          0 \r\n 2008          294           13.92276      15.43        -2.158889      0 \r\n 2008          295           6.899039      9.95         -3.007222      0 \r\n 2008          296           2.665082      8.62          4.775         21.6154 \r\n 2008          297           2.262289      8.33          4.946111      5.3848 \r\n 2008          298           2.852944      7.56         -0.02          0 \r\n 2008          299           12.4566       17.82         0.2072222     0 \r\n 2008          300           8.709958      12.63         0.4377778     0 \r\n 2008          301           11.27981      5.345        -6.04          0 \r\n 2008          302           12.55765      10.03        -8.3           0 \r\n 2008          303           12.3036       17.1         -4.987222      0 \r\n 2008          304           11.87641      22.21         3.235         0 \r\n 2008          305           11.07697      20.82         2.921111      0 \r\n 2008          306           10.76844      17.3          2.058889      0 \r\n 2008          307           8.59038       23.23         9.05          0 \r\n 2008          308           10.561        24.67         10.61         0 \r\n 2008          309           9.036896      22.63         12.02         0 \r\n 2008          310           5.261589      18.54         12.48         8.636 \r\n 2008          311           2.75098       12.68         2.532222      10.287 \r\n 2008          312           2.792485      2.551111     -0.7027778     0 \r\n 2008          313           3.591336      0.3277778    -2.911111      0 \r\n 2008          314           3.246951     -2.911111     -6.081111      0 \r\n 2008          315           8.858867     -0.2588889    -7.11          0 \r\n 2008          316           1.136751      2.163889     -1.042778      0 \r\n 2008          317           2.767214      4.522778      1.962778      0 \r\n 2008          318           2.562282      9.68          1.623889      0 \r\n 2008          319           2.916583      6.993889     -1.006111      0 \r\n 2008          320           4.947915      1.167778     -5.757222      0 \r\n 2008          321           4.686624      3.183889     -5.776111      0 \r\n 2008          322           8.743807      0.6011111    -9.38          0 \r\n 2008          323           6.222738     -0.3238889    -11.46         0 \r\n 2008          324           5.061636      3.555        -4.687778      0 \r\n 2008          325           7.555593     -2.143889     -12.06         0 \r\n 2008          326           8.540883     -4.352778     -16.16         0 \r\n 2008          327           3.637319     -1.545        -7.59          0 \r\n 2008          328           5.969522      4.562778     -9.82          0 \r\n 2008          329           9.310362      4.787222     -6.792778      0 \r\n 2008          330           9.444669      2.821111     -11.2          0 \r\n 2008          331           8.930748      5.876111     -8.26          0 \r\n 2008          332           6.836405      6.307222     -8.56          0 \r\n 2008          333           9.017692      7.61         -7.74          0 \r\n 2008          334           3.3754        3.84         -9.84          0 \r\n 2008          335           4.736665     -0.145        -5.692222      0 \r\n 2008          336           6.879709     -4.152778     -15.77         2.03 \r\n 2008          337           7.90366       3.392222     -14.89         0 \r\n 2008          338           7.729982     -0.1372222    -13.44         0.76 \r\n 2008          339           7.290913     -7.75         -14.3          0 \r\n 2008          340           6.551349      0.1888889    -15.395        0 \r\n 2008          341           8.212941      1.076111     -15.85556      0.25 \r\n 2008          342           3.164526     -8.41         -16.26         0 \r\n 2008          343           2.935871     -2.188889     -11.11111      0.51 \r\n 2008          344           4.746832     -3.889444     -15.84056      11.18 \r\n 2008          345           5.039753     -4.241111     -18.18278      0 \r\n 2008          346           5.630367     -1.458333     -8.803889      0 \r\n 2008          347           6.735194     -1.322778     -14.43556      0 \r\n 2008          348           7.165978      5.953889     -3.006667      0 \r\n 2008          349           2.494459      6.660555     -19.98778      0 \r\n 2008          350           7.981273     -17.53333     -22.20833      0 \r\n 2008          351           2.957711     -14.49333     -21.60778      0 \r\n 2008          352           5.206486     -12.70111     -21.42945      5.08 \r\n 2008          353           6.323781     -7.465556     -17.62611      0 \r\n 2008          354           6.222612     -6.444445     -11.45222      16 \r\n 2008          355           4.958751     -5.942778     -22.11         0 \r\n 2008          356           7.392124     -19.345       -23.34         3.05 \r\n 2008          357           7.566136     -12.83222     -26.67167      0 \r\n 2008          358           5.441418     -2.91         -13.64722      1.52 \r\n 2008          359           7.787135     -9.159445     -20.78         0.76 \r\n 2008          360           5.516227     -2.237778     -21.13722      0 \r\n 2008          361           4.360899      6.065556     -3.32          0.51 \r\n 2008          362           6.141694     -6.111111     -3.32          0 \r\n 2008          363           7.85659       0.6261111    -11.16111      0 \r\n 2008          364           7.950018      2.316111     -6.961667      0 \r\n 2008          365           5.332257      1.222222E-02               -14.05389      0 \r\n 2008          366           8.063865     -8.134444     -20.255        0 \r\n 2009          1             4.606375      0.235        -9.161667      0 \r\n 2009          2             7.129494     -4.015        -12.64         0 \r\n 2009          3             1.198842     -1.973333     -10.02167      0 \r\n 2009          4             8.179636     -6.181111     -17.31722      1.27 \r\n 2009          5             8.333817     -0.75         -15.40111      0 \r\n 2009          6             7.453419     -0.8733333    -10.71389      0 \r\n 2009          7             5.773836     -6.541111     -15.09444      0 \r\n 2009          8             7.555718     -6.997778     -17.09         0 \r\n 2009          9             4.204        -5.424445     -10.21833      2.79 \r\n 2009          10            8.216455     -8.618333     -17.81778      5.08 \r\n 2009          11            6.292192     -4.492222     -12.33222      1.02 \r\n 2009          12            4.423576     -2.203333     -17.53611      0.25 \r\n 2009          13            8.311726     -15.27833     -25.53555      4.06 \r\n 2009          14            9.215135     -16.10056     -28.31         5.84 \r\n 2009          15            10.14026     -23.70056     -32.20111      0 \r\n 2009          16            7.415136     -11.82167     -30.925        0 \r\n 2009          17            4.17764      -2.64         -12.33278      0 \r\n 2009          18            7.125896     -1.711111     -8.919444      0 \r\n 2009          19            5.563465     -6.857778     -14.57         0.25 \r\n 2009          20            8.578455     -6.283333     -14.49667      0 \r\n 2009          21            9.603995     -3.368333     -13.32         0 \r\n 2009          22            9.976873      3.447778     -12.67278      0 \r\n 2009          23            7.027153     -3.707222     -19.74444      0 \r\n 2009          24            9.892482     -15.52056     -23.99222      0 \r\n 2009          25            9.225092     -12.06278     -18.47944      0 \r\n 2009          26            7.180915     -11.69556     -17.99444      0 \r\n 2009          27            6.956611     -11.03        -20.95056      0 \r\n 2009          28            8.957818     -5.118889     -23.765        0.25 \r\n 2009          29            9.566047     -3.180556     -13.12167      0 \r\n 2009          30            9.345215     -5.663333     -18.56722      0 \r\n 2009          31            11.02764      4.480556     -8.083333      0 \r\n 2009          32            10.47427      1.670556     -5.592222      0 \r\n 2009          33            10.60824     -4.662778     -19.32222      0 \r\n 2009          34            11.9334      -12.27333     -20.91278      0 \r\n 2009          35            11.75486     -8.186111     -21.36778      0 \r\n 2009          36            11.68976      2.508889     -11.04333      0 \r\n 2009          37            10.50305      7.283889     -7.47          0 \r\n 2009          38            11.63913      6.361111     -2.948889      0 \r\n 2009          39            11.19484      2.647778     -7.295556      0 \r\n 2009          40            4.405334      10.78222      8.722222E-02                0 \r\n 2009          41            12.5479       11.36778      1.739444      1.78 \r\n 2009          42            4.145884      2.711667     -1.018889      0 \r\n 2009          43            12.7894       4.324444     -2.826111      0 \r\n 2009          44            3.364187     -2.132778     -7.083333      0 \r\n 2009          45            13.16332     -1.025556     -10.50889      0 \r\n 2009          46            13.3216      -1.145        -11.53222      0 \r\n 2009          47            13.39072      2.256111     -9.631667      0 \r\n 2009          48            7.761822      6.305        -4.48          0 \r\n 2009          49            5.559155      0.5705556    -12.65389      1.27 \r\n 2009          50            14.41283     -4.82         -15.49389      0 \r\n 2009          51            9.828467      0.9894444    -11.72944      0 \r\n 2009          52            12.34757     -4.41         -12.94611      3.05 \r\n 2009          53            15.12357     -5.762778     -16.12722      0 \r\n 2009          54            13.2378      -2.758889     -16.32222      0 \r\n 2009          55            14.41719      9.123333     -5.437222      0 \r\n 2009          56            14.5458       9.66         -1.322222      0.25 \r\n 2009          57            2.476719      2.585556     -6.026111      0 \r\n 2009          58            11.96047     -4.251667     -10.12778      11.68 \r\n 2009          59            15.44896     -3.873889     -10.64667      0 \r\n 2009          60            16.44053     -5.942778     -15.04278      0 \r\n 2009          61            15.76067     -2.02         -11.39556      0 \r\n 2009          62            10.3226      -1.222222E-02               -8.188334      0 \r\n 2009          63            16.0751       10.17944     -6.083333      0 \r\n 2009          64            15.20729      19.51444      0.4183333     0 \r\n 2009          65            16.09179      12.91278     -0.5622222     0 \r\n 2009          66            2.380487      4.229445      0.335         3.05 \r\n 2009          67            3.326364      1.767778     -0.4094445     2.29 \r\n 2009          68            3.43134       2.482778     -0.53          10.41 \r\n 2009          69            3.006915      3.335556     -12.75778      2.54 \r\n 2009          70            17.77903     -8.153889     -14.94611      0.76 \r\n 2009          71            17.71991     -3.347778     -15.57833      0 \r\n 2009          72            15.34126      5.336111     -6.048333      0 \r\n 2009          73            19.11071      9.951667     -4.503889      0 \r\n 2009          74            18.07321      14.89833     -1.301111      0 \r\n 2009          75            18.60964      19.97556      1.05          0 \r\n 2009          76            18.57466      18.26556      3.550555      0 \r\n 2009          77            14.09991      13.37778      0.7538889     0 \r\n 2009          78            18.21308      8.841666     -2.782222      0 \r\n 2009          79            9.007733      11.41889     -0.2683333     0 \r\n 2009          80            19.19615      19.57722      3.888889E-02                0.25 \r\n 2009          81            10.91731      15.91722      5.246111      0 \r\n 2009          82            5.892202      16.62333      7.81          10.16 \r\n 2009          83            9.024135      11.74944      0.1866667     25.65 \r\n 2009          84            10.23093      6.909444     -1.966111      2.54 \r\n 2009          85            11.39056      4.774445     -3.908333      0 \r\n 2009          86            18.44044      0.1894444    -6.716667      0 \r\n 2009          87            10.89522      2.485        -4.417778      0 \r\n 2009          88            21.63735      7.69         -5.158889      0 \r\n 2009          89            19.24297      12.27722     -0.5194445     0 \r\n 2009          90            6.807368      9.321667     -0.7022222     1.02 \r\n 2009          91            21.50229      9.413889     -2.361667      0 \r\n 2009          92            17.35954      8.756667     -4.28          0 \r\n 2009          93            22.05997      11.77833     -4.915         0 \r\n 2009          94            8.500716      9.915         0.5955555     0 \r\n 2009          95            11.69457      3.544445     -2.205555      0 \r\n 2009          96            21.58329      3.672778     -3.771111      0 \r\n 2009          97            23.73424      8.327778     -5.436666      0 \r\n 2009          98            23.14568      12.20778     -3.218889      0 \r\n 2009          99            14.56049      10.79889     -2.186111      0 \r\n 2009          100           20.91519      11.84056     -0.3527778     0 \r\n 2009          101           23.30413      15.21944     -2.198889      0 \r\n 2009          102           16.12346      12.90056      0.6505556     0 \r\n 2009          103           9.449145      10.38778      0.6194444     0 \r\n 2009          104           24.07105      17.11555      0.1333333     0 \r\n 2009          105           22.40109      18.94944      0.2316667     0 \r\n 2009          106           18.10952      20.25         2.532778      0 \r\n 2009          107           23.7493       22.57         1.89          0 \r\n 2009          108           7.07573       19.96         7.77          5.08 \r\n 2009          109           10.71539      11.57         0.7477778     3.048 \r\n 2009          110           8.597199      8.74         -0.9438889     0 \r\n 2009          111           25.74474      15.69         0.1827778     0 \r\n 2009          112           25.3219       20.48         1.387778      0 \r\n 2009          113           24.66292      29.15         9.22          0 \r\n 2009          114           23.47969      32.62         8.22          2.794 \r\n 2009          115           5.574427      9.68          5.165         11.684 \r\n 2009          116           3.502677      18.78         7.03          37.592 \r\n 2009          117           9.200993      10.97         2.563889      1.27 \r\n 2009          118           17.9817       13.85         1.07          0.254 \r\n 2009          119           4.86457       12.73         7.82          5.334 \r\n 2009          120           11.20174      18.12         7.72          0 \r\n 2009          121           23.05597      15.97         3.997222      0 \r\n 2009          122           26.16272      18.43         2.008889      0 \r\n 2009          123           26.01444      21.56         1.922778      0 \r\n 2009          124           21.62329      23.48         6.701111      0 \r\n 2009          125           17.66485      24.54         11.51         15.24 \r\n 2009          126           8.876147      19.08         11.39         8.636 \r\n 2009          127           14.45505      21.95         7.91          2.54 \r\n 2009          128           12.44188      21.04         7.95          23.368 \r\n 2009          129           21.75299      15.32         4.073889      1.524 \r\n 2009          130           24.59778      13.6          3.961111      0.254 \r\n 2009          131           27.64691      19.55         0.7022222     0 \r\n 2009          132           16.67772      23.31         9.94          9.398 \r\n 2009          133           10.14863      21.14         8.02          3.048 \r\n 2009          134           19.7089       18.26         4.951111      0 \r\n 2009          135           8.706151      17.04         6.641111      13.97 \r\n 2009          136           29.18788      14.59         3.145         0 \r\n 2009          137           10.41356      13.67         1.103889      0 \r\n 2009          138           26.52961      27.11         8.17          0 \r\n 2009          139           26.96885      33.18         13.39         0 \r\n 2009          140           27.19968      31.76         16.26         0 \r\n 2009          141           15.07516      22.52         14.48         0 \r\n 2009          142           4.882854      19.23         14.59         0 \r\n 2009          143           13.81967      22.88         14.03         14.478 \r\n 2009          144           27.9869       24.09         11.56         0 \r\n 2009          145           19.69451      25.02         13            1.778 \r\n 2009          146           6.407963      17.81         12.28         10.414 \r\n 2009          147           7.670527      14.77         9.1           24.892 \r\n 2009          148           26.11607      25.6          7.89          0 \r\n 2009          149           26.59953      25.14         12.12         0 \r\n 2009          150           29.57021      23.67         10.51         0 \r\n 2009          151           22.23281      28.07         7.1           0 \r\n 2009          152           22.95062      25.89         15.2          0 \r\n 2009          153           19.16272      24.84         12.8          0 \r\n 2009          154           26.87421      21.43         7.93          0 \r\n 2009          155           29.60749      23.75         8.73          0 \r\n 2009          156           26.85241      27.31         12.42         0 \r\n 2009          157           3.197204      16.15         10.77         4.572 \r\n 2009          158           6.240561      16.29         10.89         2.794 \r\n 2009          159           7.273256      16.02         10.02         7.62 \r\n 2009          160           14.96085      19.02         6.702222      0 \r\n 2009          161           15.67954      21.29         11.77         0 \r\n 2009          162           21.53848      22.23         12.25         0 \r\n 2009          163           9.064176      22.45         11.7          5.334 \r\n 2009          164           17.1029       22.82         10.33         0 \r\n 2009          165           20.39332      25.85         12.17         0 \r\n 2009          166           8.945936      22.61         13.6          3.302 \r\n 2009          167           4.869465      20.11         16.29         4.572 \r\n 2009          168           16.11242      31.35         16.13         0.254 \r\n 2009          169           12.79325      27.85         18.67         11.43 \r\n 2009          170           9.678805      24.99         16.9          0.762 \r\n 2009          171           20.80239      28.82         16.22         0 \r\n 2009          172           10.509        29.69         19.95         2.286 \r\n 2009          173           24.3469       34.24         18.05         0 \r\n 2009          174           13.11713      34.41         17.58         35.56 \r\n 2009          175           9.174885      27.74         17            2.032 \r\n 2009          176           20.51064      31.07         19.78         0 \r\n 2009          177           19.13875      30.5          17.01         0 \r\n 2009          178           15.4936       27.82         16.85         0 \r\n 2009          179           23.14953      26.98         12.98         0 \r\n 2009          180           23.98001      25.96         12.83         0 \r\n 2009          181           14.90613      23.05         13.99         0 \r\n 2009          182           19.05385      25.11         14.93         0 \r\n 2009          183           22.44611      27.11         12.31         0 \r\n 2009          184           9.247142      25.26         14.24         9.652 \r\n 2009          185           7.52756       22.68         15.21         24.13 \r\n 2009          186           21.67889      26.53         13.34         0 \r\n 2009          187           21.20882      28.05         15.56         0 \r\n 2009          188           16.85294      26.71         16.32         22.86 \r\n 2009          189           16.14953      24.66         16.75         10.414 \r\n 2009          190           6.102155      21.94         15.03         2.032 \r\n 2009          191           14.84538      27.75         17.78         20.828 \r\n 2009          192           18.71725      25.24         15.71         2.032 \r\n 2009          193           12.41941      25.05         14.72         0 \r\n 2009          194           13.35047      25.92         14.51         0 \r\n 2009          195           13.34759      27.53         17.49         6.096 \r\n 2009          196           20.12274      24.58         15.23         7.874 \r\n 2009          197           18.14513      21.7          10.03         0 \r\n 2009          198           10.40038      17.84         9.82          0 \r\n 2009          199           16.55329      20.55         11.39         0 \r\n 2009          200           22.0347       22.6          8.49          0 \r\n 2009          201           15.6003       25.22         12.62         0 \r\n 2009          202           14.31242      24.59         14.33         0.254 \r\n 2009          203           20.18659      27.2          11.07         0 \r\n 2009          204           19.94007      27.95         12.55         0 \r\n 2009          205           18.25128      29.37         13.82         0 \r\n 2009          206           18.69679      25.02         12.41         0 \r\n 2009          207           20.5552       26.23         12.48         0 \r\n 2009          208           18.09839      29.01         15.28         0 \r\n 2009          209           20.18989      23.4          10.94         0 \r\n 2009          210           18.15509      24.95         8.97          1.27 \r\n 2009          211           17.16838      23.16         13.43         6.858 \r\n 2009          212           20.51265      24.88         9.73          0 \r\n 2009          213           18.68026      21.37         9.73          0 \r\n 2009          214           20.7808       27.81         8.56          0 \r\n 2009          215           19.2077       27.73         15.82         0 \r\n 2009          216           18.81817      23.95         12.81         0 \r\n 2009          217           19.05381      25.07         9.88          0 \r\n 2009          218           16.24379      25.09         11.26         0.508 \r\n 2009          219           8.186373      25.31         17.76         9.652 \r\n 2009          220           18.33467      31.25         21.63         0 \r\n 2009          221           6.573315      25.1          18.48         1.016 \r\n 2009          222           17.80288      27.74         16.72         2.286 \r\n 2009          223           19.85555      28.45         14.54         0 \r\n 2009          224           20.12763      28.72         16.49         0 \r\n 2009          225           15.11851      28.26         20.23         4.318 \r\n 2009          226           20.11667      29.02         19.09         0 \r\n 2009          227           8.576488      25.44         18.99         0 \r\n 2009          228           11.75804      23.75         15.67         5.08 \r\n 2009          229           15.32871      25.03         11.96         0 \r\n 2009          230           20.38688      25.02         10.36         0 \r\n 2009          231           8.832089      25.14         16.21         1.778 \r\n 2009          232           14.58593      22.15         14.29         7.874 \r\n 2009          233           11.28688      20.69         12.64         2.286 \r\n 2009          234           19.92894      22.77         11.22         0 \r\n 2009          235           19.75367      24.56         9.76          0 \r\n 2009          236           20.02383      26.09         13.41         0 \r\n 2009          237           10.07461      26.45         17.73         0 \r\n 2009          238           10.67485      23.34         14.91         0 \r\n 2009          239           7.45572       20.14         14.7          0 \r\n 2009          240           18.13823      25.18         13.04         0 \r\n 2009          241           19.69656      19.33         8.05          0 \r\n 2009          242           16.96583      18.75         5.582778      0 \r\n 2009          243           19.16628      20.77         3.84          0 \r\n 2009          244           18.39692      20.95         5.178889      0 \r\n 2009          245           18.72641      22.91         7.84          0 \r\n 2009          246           17.83593      22.95         8             0 \r\n 2009          247           16.75014      24.41         8.53          0 \r\n 2009          248           14.33811      25.24         11.6          0 \r\n 2009          249           18.4027       25.38         9.96          0 \r\n 2009          250           14.55346      25.84         11.03         0 \r\n 2009          251           15.85422      26.29         12.77         0 \r\n 2009          252           16.18903      26.94         12.48         0 \r\n 2009          253           14.79496      27.28         11.23         0 \r\n 2009          254           13.34407      27.68         13.15         0 \r\n 2009          255           12.88513      27.44         14.29         0 \r\n 2009          256           14.76195      27.07         11.67         0 \r\n 2009          257           12.50807      25.66         10.27         0 \r\n 2009          258           15.68084      26.99         11.08         0 \r\n 2009          259           15.18955      27.71         11.64         0 \r\n 2009          260           16.35931      26.78         10.37         0 \r\n 2009          261           15.48825      28.08         9.17          0 \r\n 2009          262           12.79258      27.21         10.93         0 \r\n 2009          263           12.94948      25.92         12.6          0 \r\n 2009          264           6.771846      22.98         13.07         26.416 \r\n 2009          265           11.08894      21.87         11.52         0 \r\n 2009          266           6.790548      22.76         10.11         0 \r\n 2009          267           7.584504      24.24         16.39         8.128 \r\n 2009          268           8.791253      21.96         11.32         26.416 \r\n 2009          269           11.71838      22.43         9.98          0 \r\n 2009          270           14.56563      24.95         10.45         0 \r\n 2009          271           11.24178      16.09         7.9           0 \r\n 2009          272           15.67611      17.38         4.503889      0 \r\n 2009          273           14.7617       18.66         0.8561111     0 \r\n 2009          274           1.049096      13.25         7.71          46.736 \r\n 2009          275           3.792503      11.02         6.656111      4.826 \r\n 2009          276           5.124019      10.64         2.982778      2.032 \r\n 2009          277           8.164197      12.95         0.4961111     0 \r\n 2009          278           3.229462      10.93         2.285         2.54 \r\n 2009          279           4.294081      11.44         2.976111      8.128 \r\n 2009          280           14.17171      20.66        -0.7438889     0 \r\n 2009          281           6.818456      11.87         2.795         3.048 \r\n 2009          282           13.40219      9.53         -2.215         0 \r\n 2009          283           10.37837      5.096111     -5.187222      0 \r\n 2009          284           6.268343      3.627222     -7.14          0 \r\n 2009          285           2.951812      3.08         -2.97          1.27 \r\n 2009          286           10.53971      7.78         -5.178889      0.254 \r\n 2009          287           2.978966      5.89          0.2877778     7.366 \r\n 2009          288           2.304882      5.592222      2.625         3.556 \r\n 2009          289           6.473903      6.782222     -8.111111E-02                1.524 \r\n 2009          290           5.79438       8.14          7.111111E-02                0 \r\n 2009          291           12.41259      16.44        -0.2411111     0 \r\n 2009          292           11.25433      21.43         5.078889      0 \r\n 2009          293           4.589681      18.53         7.95          2.54 \r\n 2009          294           1.275241      16.13         5.237222      23.876 \r\n 2009          295           1.224322      5.267222      3.431111      21.336 \r\n 2009          296           2.237436      4.611111      1.487778      8.636 \r\n 2009          297           8.576196      12.32        -3.196111      4.826 \r\n 2009          298           4.909799      9.15          0.5438889     0.254 \r\n 2009          299           7.043764      11.54         0.1177778     0 \r\n 2009          300           11.6557       12.82        -1.131111      0 \r\n 2009          301           2.709098      12.82         3.772778      0 \r\n 2009          302           1.211854      12.32         9.83          34.798 \r\n 2009          303           4.135591      15.98         2.227778      3.302 \r\n 2009          304           9.552072      8.16         -0.2338889     0 \r\n 2009          305           7.639147      17.65         2.153889      0 \r\n 2009          306           10.80514      11.55        -1.566111      0 \r\n 2009          307           5.06059       8.57         -5.648889      0.254 \r\n 2009          308           7.29882       9.81         -3.883889      0 \r\n 2009          309           9.87583       14.79        -4.986111      0 \r\n 2009          310           8.446575      19.51         5.835         0 \r\n 2009          311           9.773782      19.69         3.238889      0 \r\n 2009          312           9.04949       21.85         5.222222      0 \r\n 2009          313           7.643038      15.84         1.563889      0 \r\n 2009          314           9.462995      16.32        -0.705         0 \r\n 2009          315           8.73364       14.63        -1.227222      0 \r\n 2009          316           4.203079      14.08         2.986111      0 \r\n 2009          317           1.268589      11.71         6.677778      0 \r\n 2009          318           4.107014      9.83         -3.588889      0 \r\n 2009          319           4.659554      6.295        -5.132222      0 \r\n 2009          320           5.867767      9.56          0.6961111     0 \r\n 2009          321           8.680294      10.08        -3.018889      0 \r\n 2009          322           4.138813      7.7          -1.317778      0 \r\n 2009          323           5.179332      10.18        -1.795         0 \r\n 2009          324           7.511828      10.95        -3.017222      0 \r\n 2009          325           7.222212      8.84         -4.842778      0 \r\n 2009          326           4.038439      14.02         6.466111      0 \r\n 2009          327           4.334708      12.23         5.67          0 \r\n 2009          328           2.669748      7.95          4.353889      0 \r\n 2009          329           1.004788      4.535         0.3838889     0 \r\n 2009          330           3.001936      0.535        -4.141111      0 \r\n 2009          331           6.639799      6.638889     -4.602778      0 \r\n 2009          332           7.508523      11.53        -3.36          0 \r\n 2009          333           2.540818      3.212778     -0.27          0 \r\n 2009          334           7.615005      8.32         -3.636111      0 \r\n 2009          335           8.128424      11.68        -1.118889      0 \r\n 2009          336           2.874826      1.147778     -3.047778      0 \r\n 2009          337           5.405226     -3.018889     -15.07         0.25 \r\n 2009          338           4.960592     -7.41         -18.08         1.02 \r\n 2009          339           7.212714     -1.605        -14.51         0 \r\n 2009          340           4.41094      -5.713889     -12.22         0 \r\n 2009          341           7.320368     -7.07         -12.31         2.03 \r\n 2009          342           3.387199     -5.018889     -8.69          1.02 \r\n 2009          343           5.015193     -7.29         -20.44         16.26 \r\n 2009          344           7.910229     -12.09        -23.68         1.27 \r\n 2009          345           7.334176     -8.26         -21.66         0 \r\n 2009          346           6.663062     -0.6561111    -15.03         0 \r\n 2009          347           3.118042     -0.715        -12.59         0 \r\n 2009          348           4.570769     -6.746111     -19.74         0.76 \r\n 2009          349           7.854791     -15.5         -24.33         0.76 \r\n 2009          350           6.525576     -8.92         -20.85         0 \r\n 2009          351           5.725093     -4.646111     -10.65         0 \r\n 2009          352           6.057302     -3.422222     -13.24         0 \r\n 2009          353           3.562927     -4.971111     -13.49         0 \r\n 2009          354           3.858778     -4.413889     -7.99          0 \r\n 2009          355           3.783968     -5.597778     -8.35          3.05 \r\n 2009          356           2.979385     -1.671111     -5.927778      2.54 \r\n 2009          357           1.734896     -0.1288889    -2.041111      0.25 \r\n 2009          358           1.708913      0.6761111    -6.512778      11.68 \r\n 2009          359           2.407181      1.691111     -10.11         17.78 \r\n 2009          360           7.527351     -9.23         -13.87         6.1 \r\n 2009          361           2.073423     -3.837222     -18.82         3.05 \r\n 2009          362           6.424155     -4.135        -18.6          0 \r\n 2009          363           7.127109     -10.39        -22.56         0 \r\n 2009          364           4.227262     -1.898889     -12.29         0 \r\n 2009          365           8.00144      -12.27        -21.32         2.54 \r\n 2010          1             7.228864     -17.44        -27.88         0 \r\n 2010          2             8.579962     -23.09        -32.74         0 \r\n 2010          3             8.397748     -17.5         -28.08         0 \r\n 2010          4             8.36436      -19.47        -29.46         0 \r\n 2010          5             8.419337     -17.77        -27.59         0 \r\n 2010          6             3.845682     -10.98        -22.31         0 \r\n 2010          7             5.572167     -11           -20.78         7.87 \r\n 2010          8             8.586405     -19.01        -25.81         1.27 \r\n 2010          9             8.795981     -19.69        -28.37         0 \r\n 2010          10            7.675046     -7.4          -21.97         0 \r\n 2010          11            8.191226     -7.95         -11.9          0 \r\n 2010          12            7.067487     -8.74         -12.91         0 \r\n 2010          13            8.663348      0.2088889    -11.46         0 \r\n 2010          14            5.125442     -1.642778     -11.09         0 \r\n 2010          15            4.943061     -2.802222     -6.132222      0 \r\n 2010          16            8.053028     -2.038889     -9.8           0 \r\n 2010          17            4.476043     -1.54         -9.22          0 \r\n 2010          18            7.593918     -2.215        -14.46         0 \r\n 2010          19            4.294667     -6.568889     -14.37         0 \r\n 2010          20            4.105843     -2.228889     -8.47          0.25 \r\n 2010          21            3.868317     -1.17         -2.555         1.78 \r\n 2010          22            4.173456      0.24         -1.872222      0 \r\n 2010          23            4.173456      0            -1.872222      1.02 \r\n 2010          24            7.809227      0.9672222    -3.288889      9.14 \r\n 2010          25            5.76618      -2.355        -13.35         2.03 \r\n 2010          26            10.2985      -12.32        -17.09         4.06 \r\n 2010          27            8.531093     -7.84         -16.77         0 \r\n 2010          28            9.689977     -16.18        -21.88         0 \r\n 2010          29            11.26124     -13.18        -23.78         0 \r\n 2010          30            9.229235     -9.2          -16.56         0 \r\n 2010          31            10.44444     -13.02        -17.3          0 \r\n 2010          32            5.879106     -4.892222     -13.08         0 \r\n 2010          33            7.576471     -5.221111     -18.92         5.33 \r\n 2010          34            10.89848     -5.335        -21.27         0 \r\n 2010          35            6.197215     -0.5077778    -6.181111      0 \r\n 2010          36            6.707998      0.7788889    -3.487222      0.25 \r\n 2010          37            8.898699     -1.197222     -10.72         0.51 \r\n 2010          38            8.045497     -4.145        -8.92          0.51 \r\n 2010          39            7.594755     -3.456111     -17.71         4.57 \r\n 2010          40            10.39636     -5.341111     -17.09         9.91 \r\n 2010          41            12.83116     -11.18        -24.83         0.25 \r\n 2010          42            8.216539     -7.09         -25.34         0 \r\n 2010          43            8.242062     -5.418889     -10.67         0.76 \r\n 2010          44            8.040728     -5.513889     -8.91          0 \r\n 2010          45            12.74798     -7.62         -14.68         1.78 \r\n 2010          46            9.710772     -6.807778     -10.59         3.05 \r\n 2010          47            13.68122     -6.207222     -13.4          0 \r\n 2010          48            13.39767     -4.771111     -15.26         0 \r\n 2010          49            11.75809     -6.075        -18.75         0 \r\n 2010          50            9.155513     -3.097222     -15.78         0 \r\n 2010          51            12.83446     -3.345        -11.81         2.29 \r\n 2010          52            10.75414     -5.202778     -14.37         0 \r\n 2010          53            12.15506     -5.835        -16.93         0 \r\n 2010          54            12.39954     -7.85         -20.01         0 \r\n 2010          55            15.40227     -14.2         -23.4          0 \r\n 2010          56            15.4331      -4.436111     -24.71         0 \r\n 2010          57            10.62761     -3.871111     -21.84         0 \r\n 2010          58            16.00263     -3.852222     -17.53         0 \r\n 2010          59            14.82002     -5.342222     -15            0 \r\n 2010          60            16.06518     -1.656111     -15.44         0 \r\n 2010          61            15.74862     -1.506111     -15.68         0 \r\n 2010          62            16.18928     -1.657222     -14.63         0 \r\n 2010          63            14.70161      0.3011111    -17.24         0 \r\n 2010          64            16.75056      1.797778     -9.14          0 \r\n 2010          65            7.385262      1.755        -6.696111      0 \r\n 2010          66            8.916606      3.502778      0.2772222     10.67 \r\n 2010          67            9.663324      0.9088889    -0.2611111     0 \r\n 2010          68            4.776371      2.407778      0.1261111     0.25 \r\n 2010          69            9.24505       2.472222      0.5911111     8.89 \r\n 2010          70            6.420641      3.762778      0.58          9.14 \r\n 2010          71            12.30916      6.413889      0.6938889     3.56 \r\n 2010          72            4.740765      3.752778      1.233889      0 \r\n 2010          73            10.1926       5.211111      1.641111      0 \r\n 2010          74            6.929415      5.246111      0.7777778     0 \r\n 2010          75            3.525773      4.667222      0.8838889     0 \r\n 2010          76            16.20187      11.51         0.2122222     0.25 \r\n 2010          77            16.04459      15.92         0.9122222     0 \r\n 2010          78            3.206785      6.395        -1.711111      0 \r\n 2010          79            16.56517      2.852222     -3.437778      1.52 \r\n 2010          80            19.78438      8.17         -5.922778      0 \r\n 2010          81            19.16615      12.24        -3.265         0 \r\n 2010          82            18.66056      14.43        -0.27          0 \r\n 2010          83            9.279652      10.84         0.5138889     0 \r\n 2010          84            19.95387      7.04         -3.686111      0 \r\n 2010          85            16.96001      10.49        -5.007222      0 \r\n 2010          86            3.911245      7.97          1.222222      0 \r\n 2010          87            20.08241      11.42        -3.136111      0.51 \r\n 2010          88            20.05998      16.99        -4.165         0 \r\n 2010          89            14.22426      25.63         5.467222      0 \r\n 2010          90            17.17691      27.97         8.89          0 \r\n 2010          91            17.39017      33.94         5.243889      0 \r\n 2010          92            6.834271      19.74         3.971111      0 \r\n 2010          93            19.945        17.89        -0.3172222     0 \r\n 2010          94            14.16225      18.26         4.622222      0 \r\n 2010          95            13.73381      19.63        -0.2022222     0 \r\n 2010          96            2.457054      10.16         5.707778      0 \r\n 2010          97            10.20423      11.94         1.357222      0 \r\n 2010          98            23.0484       11.56        -3.18          0 \r\n 2010          99            22.27344      21.83        -4.007778      0 \r\n 2010          100           15.34059      17.27         0.4877778     0 \r\n 2010          101           23.13078      21.04        -0.9027778     0 \r\n 2010          102           1.476952      16.17         6.937222      0 \r\n 2010          103           18.22739      25.23         8.77          0 \r\n 2010          104           15.14378      25.33         11.24         0 \r\n 2010          105           12.491        24.23         9.89          1.778 \r\n 2010          106           21.16723      15.87         3.86          0 \r\n 2010          107           23.98972      17.76        -0.42          0 \r\n 2010          108           22.16047      19.84         2.388889E-02                0 \r\n 2010          109           20.28838      20.64         4.697778      0 \r\n 2010          110           18.58608      21.47         4.277778      0 \r\n 2010          111           20.31809      23.73         3.642778      0 \r\n 2010          112           22.63967      22.89         4.565         0 \r\n 2010          113           4.785241      15.71         8.1           7.112 \r\n 2010          114           17.28009      20.46         11.62         4.064 \r\n 2010          115           4.531816      11.65         8.42          5.842 \r\n 2010          116           6.88063       11.58         6.49          7.874 \r\n 2010          117           24.70589      16.59         3.813889      0 \r\n 2010          118           19.08009      20.44         1.907778      0 \r\n 2010          119           18.31906      28.65         12.66         23.368 \r\n 2010          120           13.06236      19.67         10.18         14.478 \r\n 2010          121           25.65583      19.85         6.535         0 \r\n 2010          122           22.7005       21.74         4.078889      0 \r\n 2010          123           23.15643      18.38         3.613889      2.032 \r\n 2010          124           20.74804      30.19         8.16          0 \r\n 2010          125           25.61056      16.75         5.48          0 \r\n 2010          126           12.49782      15.95         3.252778      3.302 \r\n 2010          127           6.805653      10.74         3.232778      0 \r\n 2010          128           13.76578      10.31         1.167222      0.254 \r\n 2010          129           17.59711      14.28        -2.758889      0.254 \r\n 2010          130           6.106674      13.46         6.967222      6.096 \r\n 2010          131           6.339053      8.66          5.452222      5.588 \r\n 2010          132           4.694197      9.39          5.261111      10.414 \r\n 2010          133           8.781044      12.44         6.717222      9.652 \r\n 2010          134           26.48183      20.74         3.962778      0 \r\n 2010          135           19.53053      21.66         5.682778      0 \r\n 2010          136           20.7703       21.41         10.64         0 \r\n 2010          137           24.48908      22.34         9.4           0 \r\n 2010          138           29.02997      23.92         7.63          0 \r\n 2010          139           24.96149      26.03         9.05          0 \r\n 2010          140           17.00005      23.92         10.55         0.762 \r\n 2010          141           8.999743      19.94         12.69         1.27 \r\n 2010          142           22.13503      30.01         12.06         0 \r\n 2010          143           14.85437      30.67         21.87         0 \r\n 2010          144           26.4966       34.71         21.53         0 \r\n 2010          145           22.19984      32.8          15.84         7.874 \r\n 2010          146           26.4856       28.2          13.49         0 \r\n 2010          147           29.01855      29.58         10.48         0 \r\n 2010          148           29.15859      30.53         12.09         0.254 \r\n 2010          149           28.94441      31.94         13.96         0 \r\n 2010          150           19.2551       31.13         14.36         9.144 \r\n 2010          151           28.99039      25.96         11.26         0.508 \r\n 2010          152           17.39214      29.7          12.62         10.414 \r\n 2010          153           11.58696      21.16         12.14         0 \r\n 2010          154           24.87417      26.32         9.43          1.524 \r\n 2010          155           25.16479      28.78         16.96         8.89 \r\n 2010          156           14.06318      26.48         12.36         5.334 \r\n 2010          157           28.62103      26.08         11.17         0 \r\n 2010          158           16.33731      26.09         13.91         0 \r\n 2010          159           11.02827      24.6          15.11         10.668 \r\n 2010          160           29.08064      26.29         14.01         0 \r\n 2010          161           7.330535      21.67         15.75         14.478 \r\n 2010          162           19.28569      28            18.25         17.78 \r\n 2010          163           13.47754      26.21         16.36         15.24 \r\n 2010          164           6.091402      19.58         15.46         1.27 \r\n 2010          165           8.488875      21.78         15.64         6.35 \r\n 2010          166           20.30349      23.37         14.09         0.254 \r\n 2010          167           28.93922      27.77         12.58         0 \r\n 2010          168           23.61357      31.94         16.23         15.494 \r\n 2010          169           5.885884      23.36         16.51         19.812 \r\n 2010          170           28.56137      26.83         12.36         0.254 \r\n 2010          171           18.66599      27.1          17.87         1.524 \r\n 2010          172           14.5763       26.95         18.83         0.254 \r\n 2010          173           25.87063      31.17         17.88         12.7 \r\n 2010          174           23.37818      25.56         17.02         47.244 \r\n 2010          175           28.5668       26.77         15.62         0 \r\n 2010          176           27.8718       29.44         16.42         20.828 \r\n 2010          177           24.37239      30.09         19.46         16.002 \r\n 2010          178           19.44644      26.56         18.44         13.716 \r\n 2010          179           28.60241      22.93         14.45         0 \r\n 2010          180           28.9355       23.95         11.99         0 \r\n 2010          181           28.77245      26.06         11.89         0 \r\n 2010          182           28.64057      27.48         15.51         0 \r\n 2010          183           28.16024      28.48         16.39         0 \r\n 2010          184           24.58899      30.88         19.73         0 \r\n 2010          185           6.997447      23.98         20.95         11.176 \r\n 2010          186           16.05823      26.37         20.47         2.032 \r\n 2010          187           22.9669       29.22         19.55         0 \r\n 2010          188           15.71423      27.17         18.83         3.048 \r\n 2010          189           27.4193       26.62         16.69         0 \r\n 2010          190           27.85715      29.28         15.1          0.254 \r\n 2010          191           27.86749      29.14         16.38         0 \r\n 2010          192           19.66422      27.66         17.68         16.764 \r\n 2010          193           13.38202      23.53         17.47         0.762 \r\n 2010          194           24.47636      28.21         17.11         0 \r\n 2010          195           21.21627      33.42         21.94         8.382 \r\n 2010          196           27.70306      27.79         17.92         0 \r\n 2010          197           27.63042      30.11         16.43         12.954 \r\n 2010          198           27.34336      30.97         16.53         1.016 \r\n 2010          199           27.32709      27.69         19.03         1.27 \r\n 2010          200           15.57619      27.01         16.97         3.302 \r\n 2010          201           22.53712      28.76         16.69         0 \r\n 2010          202           25.36617      28.59         15.62         0 \r\n 2010          203           12.17452      28.5          20.54         46.99 \r\n 2010          204           17.49519      30.29         22.27         13.97 \r\n 2010          205           22.66603      26.04         17.33         12.7 \r\n 2010          206           24.93664      28.14         15.5          0 \r\n 2010          207           20.9364       27.98         17.13         0 \r\n 2010          208           25.6098       31.97         21.98         0 \r\n 2010          209           25.7198       25.58         15.78         5.08 \r\n 2010          210           16.052        25.73         15.05         0 \r\n 2010          211           13.41993      25.67         18.6          15.24 \r\n 2010          212           23.92905      28.71         17.5          0.254 \r\n 2010          213           25.41826      29.74         17.66         0 \r\n 2010          214           25.41826      29.43778      21.66667      0 \r\n 2010          215           14.93002      28.87         21.33         0 \r\n 2010          216           23.77776      29.65         19.82         0 \r\n 2010          217           25.75331      25.33         15.68         0 \r\n 2010          218           24.95539      28.45         13.85         0 \r\n 2010          219           22.98815      29.8          17.93         2.032 \r\n 2010          220           23.19087      32.74         20.66         23.114 \r\n 2010          221           16.82721      29.65         20.64         0.508 \r\n 2010          222           18.8831       29.99         21.01         6.096 \r\n 2010          223           24.65824      32.94         20.38         0 \r\n 2010          224           25.07191      32.46         22.37         0 \r\n 2010          225           20.82004      31.18         22.81         0 \r\n 2010          226           23.97574      30.09         18.41         0 \r\n 2010          227           24.31804      25.15         14.41         0 \r\n 2010          228           23.32044      26.83         11.37         0 \r\n 2010          229           13.31202      22.85         15.65         0 \r\n 2010          230           20.97799      25.56         15.49         0 \r\n 2010          231           23.01505      30.28         19.1          0 \r\n 2010          232           15.85493      29.68         20.52         0 \r\n 2010          233           21.05347      31.28         19.28         0 \r\n 2010          234           23.04543      32.36         19.44         0 \r\n 2010          235           23.40136      30.38         19.96         0 \r\n 2010          236           20.90364      24.56         13.05         1.778 \r\n 2010          237           23.78541      22.73         9.38          0 \r\n 2010          238           22.63561      27.93         8.45          0 \r\n 2010          239           23.18346      30.01         15.72         0 \r\n 2010          240           23.27321      31.5          16.54         0 \r\n 2010          241           21.57224      32.94         16.61         0 \r\n 2010          242           21.16832      31.86         21.2          0 \r\n 2010          243           10.98894      29.3          19.67         17.272 \r\n 2010          244           18.85189      25.33         14.82         0 \r\n 2010          245           10.69192      23.61         12.99         1.778 \r\n 2010          246           20.75745      20.85         9.39          0 \r\n 2010          247           22.36996      21.63         4.937222      0 \r\n 2010          248           14.96215      26.8          10.24         0 \r\n 2010          249           9.84855       29.01         12.47         0 \r\n 2010          250           20.79816      22.02         8.11          0 \r\n 2010          251           18.75595      23.06         3.793889      3.556 \r\n 2010          252           10.16118      23.16         13.61         4.318 \r\n 2010          253           6.95113       21.85         14.72         29.21 \r\n 2010          254           20.24131      23.87         11.42         0.254 \r\n 2010          255           19.76124      29.71         8.89          0 \r\n 2010          256           20.53285      26.76         9.36          0 \r\n 2010          257           18.8967       26.68         11.41         0 \r\n 2010          258           13.14659      28.51         15.47         0.254 \r\n 2010          259           6.122908      15.48         8.44          0 \r\n 2010          260           12.30782      21.68         9.83          0 \r\n 2010          261           4.291821      15.79         9.02          1.27 \r\n 2010          262           5.988225      15.56         10.04         0 \r\n 2010          263           13.79628      32.36         10.97         0 \r\n 2010          264           6.907575      24.68         13.6          3.048 \r\n 2010          265           3.359375      22.28         14.07         0 \r\n 2010          266           3.122519      23.95         12.61         16.002 \r\n 2010          267           16.44622      19.28         7.46          0.254 \r\n 2010          268           4.673863      13.98         4.337222      9.906 \r\n 2010          269           18.3886       20.1          2.485         0 \r\n 2010          270           17.78953      23.37         4.452222      0 \r\n 2010          271           16.97917      22.82         9.95          0 \r\n 2010          272           16.97708      28.18         9.43          0 \r\n 2010          273           17.23122      22.91         6.717222      0 \r\n 2010          274           16.5209       24.65         4.888889      0 \r\n 2010          275           15.42582      13.97         0.555         0 \r\n 2010          276           17.0939       16.17        -2.481111      0 \r\n 2010          277           16.90683      19.09         0.82          0 \r\n 2010          278           16.27714      23.31         3.51          0 \r\n 2010          279           15.17198      25.75         6.437778      0 \r\n 2010          280           16.43337      25.03         1.046111      0 \r\n 2010          281           14.65643      31.76         8.74          0 \r\n 2010          282           14.98525      31.38         12.35         0 \r\n 2010          283           12.36644      27.06         9.01          0 \r\n 2010          284           11.83708      26.81         7.86          0 \r\n 2010          285           13.58733      25.07         7.7           0 \r\n 2010          286           14.29012      19.29         1.498889      0 \r\n 2010          287           14.33543      21.74        -0.6738889     0 \r\n 2010          288           14.52927      18.42        -1.576111      0 \r\n 2010          289           13.56311      21.02         4.336111      0 \r\n 2010          290           12.86994      17.21        -1.147778      0 \r\n 2010          291           13.56821      15.42         0.07          0 \r\n 2010          292           12.68606      17.1         -1.422778      0 \r\n 2010          293           13.04333      21.67         0.4111111     0 \r\n 2010          294           13.25269      13.86        -0.5711111     0 \r\n 2010          295           12.13649      22.87         1.605         0 \r\n 2010          296           8.142148      21.71         13.75         1.27 \r\n 2010          297           2.305049      16.3          12.34         0 \r\n 2010          298           3.58778       18.83         10.87         0.254 \r\n 2010          299           3.122101      16.99         5.45          7.366 \r\n 2010          300           4.112412      6.773889      2.852222      0.254 \r\n 2010          301           9.432451      6.187222     -3.441111      0 \r\n 2010          302           12.25368      17.06        -6.077222      0 \r\n 2010          303           12.01431      15           -2.107222      0 \r\n 2010          304           11.12735      10.62        -4.001111      0 \r\n 2010          305           10.73757      12.09        -4.382778      0 \r\n 2010          306           11.52311      13.95        -1.811111      0 \r\n 2010          307           11.52441      14.96         0.4877778     0 \r\n 2010          308           11.61432      8.24         -4.312778      0 \r\n 2010          309           11.66708      8.22         -7.86          0 \r\n 2010          310           10.69045      14.83        -6.263889      0 \r\n 2010          311           10.4128       20.61         1.557222      0 \r\n 2010          312           10.6433       21.48         8.41          0 \r\n 2010          313           9.980472      21.17         4.172778      0 \r\n 2010          314           7.256144      19.8          0.8738889     0 \r\n 2010          315           10.52276      12.9         -4.317222      0 \r\n 2010          316           6.284954      5.498889      0.7127778     33.02 \r\n 2010          317           2.047148      2.352222      0.1461111     21.59 \r\n 2010          318           2.548725      2.503889     -1.052778      0 \r\n 2010          319           9.597636      8.59         -2.008889      0 \r\n 2010          320           2.742319      4.41          1.611111E-02                0.508 \r\n 2010          321           7.00343       3.09         -1.707778      0 \r\n 2010          322           2.851898     -0.6172222    -3.686111      0 \r\n 2010          323           5.341838      3.585        -4.682222      0 \r\n 2010          324           6.155878      0.8377778    -6.09          0 \r\n 2010          325           3.972792      4.993889     -0.8927778     0 \r\n 2010          326           1.789706      0.1188889    -6.726111      0 \r\n 2010          327           9.619853     -3.506111     -11.18         0 \r\n 2010          328           1.175913     -0.005        -6.642222      0 \r\n 2010          329           7.683707     -5.917778     -11.79         0 \r\n 2010          330           1.899871      0.2622222    -10.81         0 \r\n 2010          331           7.706259      3.953889     -8.42          0 \r\n 2010          332           8.956228      10.8         -2.188889      0 \r\n 2010          333           1.543436      7.95         -4.022222      0 \r\n 2010          334           3.589244     -0.2455555    -4.02          0 \r\n 2010          335           8.334486     -3.647778     -11.4          0 \r\n 2010          336           3.432051     -1.587222     -8.94          0 \r\n 2010          337           2.351994     -3.79         -11.49         0 \r\n 2010          338           4.167682     -4.172778     -13.51         0 \r\n 2010          339           6.611766     -8.94         -15.58         0 \r\n 2010          340           4.270107     -8.17         -15.9          0 \r\n 2010          341           7.050291     -8.52         -17.73         0 \r\n 2010          342           8.041941     -6.201111     -15.78         0 \r\n 2010          343           3.739659      3.44         -7.94          0.25 \r\n 2010          344           6.600009      5.145        -8.1           1.27 \r\n 2010          345           1.851002      4.403889     -11.88         7.87 \r\n 2010          346           8.787697     -11.79        -20.27         0.76 \r\n 2010          347           8.004159     -15.9         -21.39         0 \r\n 2010          348           4.019025     -9.02         -17.73         0 \r\n 2010          349           3.001016     -6.6          -9.03          1.27 \r\n 2010          350           5.683713     -6.786111     -17.68         0.51 \r\n 2010          351           7.671866     -7.43         -19.85         0 \r\n 2010          352           8.020017     -8.92         -18.48         0 \r\n 2010          353           6.256251     -7.34         -20.75         0 \r\n 2010          354           2.82692      -2.115        -8.59          1.02 \r\n 2010          355           7.814206     -0.9788889    -8.58          0 \r\n 2010          356           3.719199     -3.966111     -7.02          0 \r\n 2010          357           3.704556     -2.337222     -4.653889      1.02 \r\n 2010          358           4.26358      -3.668889     -9.82          2.29 \r\n 2010          359           5.211423     -5.955        -12.29         0 \r\n 2010          360           4.974608     -7.61         -12.74         0 \r\n 2010          361           7.25878      -6.686111     -15.21         0 \r\n 2010          362           9.046018     -3.862222     -14.78         0.51 \r\n 2010          363           4.62763       1.647778     -6.637222      0.51 \r\n 2010          364           2.127982      6.37         -6.122778      1.27 \r\n 2010          365           1.840081     -4.777778     -15.13         0.51 \r\n 2011          1             6.271858     -11.93        -17.08         0 \r\n 2011          2             8.337583     -3.221111     -15.15         0 \r\n 2011          3             5.30619       0.6172222    -13.07         0.25 \r\n 2011          4             8.155202     -5.395        -15.59         0 \r\n 2011          5             4.129231     -0.5172222    -9.55          0 \r\n 2011          6             2.405926     -5.498889     -7.67          0 \r\n 2011          7             5.624426     -6.901111     -14.96         0.25 \r\n 2011          8             8.981417     -10.79        -18.21         0 \r\n 2011          9             4.671854     -8.16         -18.56         0 \r\n 2011          10            2.797004     -5.713889     -8.29          1.02 \r\n 2011          11            6.109895     -6.032778     -14.82         0 \r\n 2011          12            8.419589     -12.01        -20.41         0 \r\n 2011          13            7.497561     -9.11         -20.16         0 \r\n 2011          14            5.042389     -6.97         -17.68         0 \r\n 2011          15            6.300895     -7.04         -18.92         0 \r\n 2011          16            5.475517     -8.57         -20.8          0 \r\n 2011          17            4.880887     -0.575        -8.97          1.52 \r\n 2011          18            9.277016     -8.97         -17.77         0 \r\n 2011          19            9.817756     -14.74        -22.5          0 \r\n 2011          20            9.354588     -11.66        -24.85         0 \r\n 2011          21            6.288217     -13.55        -26.94         0 \r\n 2011          22            7.591826     -10.93        -22.07         0 \r\n 2011          23            9.642154     -12.2         -27.74         0 \r\n 2011          24            9.523997     -1.453889     -12.3          0 \r\n 2011          25            6.688668     -6.082222     -15.86         0 \r\n 2011          26            6.047009     -6.016111     -9.72          0 \r\n 2011          27            8.437747     -4.722222E-02               -9.83          0.51 \r\n 2011          28            8.259341     -0.3288889    -9.7           0.25 \r\n 2011          29            4.534117     -1.042222     -14.11         0.25 \r\n 2011          30            7.166188     -5.347222     -14.55         0 \r\n 2011          31            6.147718     -5.567778     -9.05          0.51 \r\n 2011          32            5.725428     -9.03         -14.33         0.51 \r\n 2011          33            11.2714      -14.31        -22.93         0.25 \r\n 2011          34            12.08578     -7.1          -22.56         0 \r\n 2011          35            11.0225       0.1911111    -12.27         0 \r\n 2011          36            9.352704     -1.522778     -12.73         0 \r\n 2011          37            8.16675      -1.227778     -7.53          0.51 \r\n 2011          38            10.6615      -7.52         -22.8          0 \r\n 2011          39            12.55589     -16.98        -25.47         0 \r\n 2011          40            13.01638     -14.5         -22.04         0 \r\n 2011          41            13.72201     -9.76         -23.46         0 \r\n 2011          42            7.358819      1.297778     -13.92         0 \r\n 2011          43            10.97099      2.102222     -10.53         0 \r\n 2011          44            12.94638      5.056111     -1.688889      0 \r\n 2011          45            9.976999      3.878333     -1.118333      0 \r\n 2011          46            10.50393      7.44         -0.3572222     0 \r\n 2011          47            11.53102      9.12         -0.46          0 \r\n 2011          48            11.00032      15.75         0.4288889     0 \r\n 2011          49            14.24564      4.922222     -4.04          0 \r\n 2011          50            14.04765      3.022778     -6.393889      0 \r\n 2011          51            1.203318      0.6361111     0.05          14.73 \r\n 2011          52            3.359627      8.888889E-02               -6.383889      0.25 \r\n 2011          53            7.773663     -3.083889     -7.91          0 \r\n 2011          54            7.373003      0.6727778    -5.221111      0.25 \r\n 2011          55            4.666164     -4.576111     -11.16         0 \r\n 2011          56            11.38851     -11.11        -15.27         0 \r\n 2011          57            8.201644     -8.29         -16.24         0 \r\n 2011          58            5.429242     -1.652778     -9.59          0 \r\n 2011          59            16.41664     -1.992222     -14.49         0 \r\n 2011          60            13.61674      4.648889     -13.16         0 \r\n 2011          61            16.5414      -5.045        -16.75         0 \r\n 2011          62            9.197603      5.993889     -5.075         0.51 \r\n 2011          63            3.367953      1.752778     -8.16          0 \r\n 2011          64            9.277184     -3.133889     -9.73          0 \r\n 2011          65            7.316059     -0.26         -11.68         0.25 \r\n 2011          66            4.684699      0.345        -2.231111      0.76 \r\n 2011          67            6.597792      3.733889     -0.2038889     1.02 \r\n 2011          68            9.958339      0.21         -1.975         3.56 \r\n 2011          69            12.12573     -1.493889     -8.01          0 \r\n 2011          70            15.5318       8.61         -7.94          0.25 \r\n 2011          71            10.96572      1.545        -8.58          0 \r\n 2011          72            9.622531     -3.668889     -11.12         0 \r\n 2011          73            18.21078      6.471111     -8.82          0 \r\n 2011          74            12.38184      8.34         -0.9877778     0 \r\n 2011          75            16.26045      15.28        -1.196111      0.25 \r\n 2011          76            9.300279      12.87         1.205         0 \r\n 2011          77            13.28228      5.428889     -2.315         0.25 \r\n 2011          78            16.18677      10.93        -3.647778      0.25 \r\n 2011          79            3.414897      11.89         3.961111      10.67 \r\n 2011          80            12.87028      9.9           1.461111      0 \r\n 2011          81            1.418962      6.338889      2.623889      12.7 \r\n 2011          82            4.935488      3.565        -2.486111      0.25 \r\n 2011          83            17.5069       1.496111     -5.518889      0 \r\n 2011          84            11.7665       3.562778     -2.218889      0 \r\n 2011          85            16.30731      1.186111     -3.952222      0 \r\n 2011          86            18.71612      2.746111     -5.935         0 \r\n 2011          87            18.87724      4.21         -4.603889      0 \r\n 2011          88            11.06714      5.077778     -3.122222      0.25 \r\n 2011          89            19.15226      7.5          -2.988889      0 \r\n 2011          90            10.96815      9.43         -1.026111      1.02 \r\n 2011          91            18.29663      12.34         0.2961111     0 \r\n 2011          92            20.28838      14.1         -1.383889      0 \r\n 2011          93            15.78477      23.54         4.335         0 \r\n 2011          94            15.85987      8.32         -3.377778      0 \r\n 2011          95            19.7179       16.57        -5.17          0 \r\n 2011          96            22.96179      15.21         0.4477778     0 \r\n 2011          97            12.57476      15.67         0.12          0 \r\n 2011          98            17.61297      17.37         7.37          0 \r\n 2011          99            10.78083      23.83         8.05          3.556 \r\n 2011          100           16.42638      27.26         7.06          1.524 \r\n 2011          101           23.82232      16.12         2.815         0 \r\n 2011          102           23.64383      21.72        -1.517222      0 \r\n 2011          103           17.16653      17.18         5.125         0 \r\n 2011          104           7.684125      13.16         4.412222      1.778 \r\n 2011          105           3.3513        7.57          0.43          16.256 \r\n 2011          106           14.08782      8.25         -0.08          0.254 \r\n 2011          107           10.26034      7.62          0.1472222     13.208 \r\n 2011          108           6.746867      6.65          0.5627778     8.382 \r\n 2011          109           9.076477      3.337778      0.175         18.542 \r\n 2011          110           11.74817      7.53         -1.042778      0 \r\n 2011          111           9.650187      8.33         -2.73          0 \r\n 2011          112           3.261805      7.68          4.497222      1.524 \r\n 2011          113           5.752832      7.86          4.182778      0 \r\n 2011          114           19.61028      14.32        -0.5338889     0 \r\n 2011          115           14.52614      15.16         0.1188889     20.32 \r\n 2011          116           6.117301      10.17         4.286111      8.636 \r\n 2011          117           12.30577      10.23         1.132222      0 \r\n 2011          118           17.04783      12.75         1.632778      0 \r\n 2011          119           16.60295      19.56         5.388889E-02                0 \r\n 2011          120           18.47144      18.43         5.067778      1.524 \r\n 2011          121           26.45033      14.39         0.6588889     0 \r\n 2011          122           27.72908      12.15        -2.646111      0 \r\n 2011          123           27.73528      15.02        -3.567222      0 \r\n 2011          124           23.20965      19.34        -1.441111      0 \r\n 2011          125           18.19831      19.45         3.517222      0 \r\n 2011          126           18.81068      22.56         5.222222E-02                3.048 \r\n 2011          127           23.34086      22.33         8.16          0 \r\n 2011          128           17.76083      24.66         10.05         2.54 \r\n 2011          129           17.31645      24.99         13.91         2.286 \r\n 2011          130           25.44106      37.13         15.12         0 \r\n 2011          131           11.36609      27.8          17.75         0.254 \r\n 2011          132           19.39786      24.2          10.16         9.906 \r\n 2011          133           9.319526      12.23         7.42          0 \r\n 2011          134           5.075317      8.76          6.37          9.906 \r\n 2011          135           23.79805      17.67         5.622778      5.08 \r\n 2011          136           29.61586      18.72         2.163889      0 \r\n 2011          137           29.75757      19.87         2.097778      0 \r\n 2011          138           27.5129       22.36         4.013889      0 \r\n 2011          139           21.39493      23.79         8.86          0 \r\n 2011          140           7.867133      21.32         14.48         14.478 \r\n 2011          141           20.8818       24.34         15.03         6.35 \r\n 2011          142           15.61795      23.18         13.77         0 \r\n 2011          143           24.36385      24.64         12.74         0 \r\n 2011          144           17.04583      25.73         12.51         0 \r\n 2011          145           4.288475      16.35         9.29          37.338 \r\n 2011          146           28.88491      17.72         6.812778      0 \r\n 2011          147           6.87745       14.28         7.24          0.254 \r\n 2011          148           16.3194       22.77         10.43         0 \r\n 2011          149           7.204095      19.77         11.87         0.762 \r\n 2011          150           23.35952      32.36         19.36         0 \r\n 2011          151           28.51898      25.93         14.33         0 \r\n 2011          152           26.22878      27.25         9.31          0 \r\n 2011          153           21.75308      27.78         18.27         0 \r\n 2011          154           24.87417      37.49         20.68         0 \r\n 2011          155           20.47612      31.3          17.89         0 \r\n 2011          156           24.71141      31.99         17.19         0 \r\n 2011          157           27.5431       37.11         21.24         0 \r\n 2011          158           27.18311      37.74         22.71         0 \r\n 2011          159           28.19455      30.44         15.74         0 \r\n 2011          160           10.02658      19.04         12.42         16.764 \r\n 2011          161           7.345096      16.4          12.59         4.064 \r\n 2011          162           20.88875      21.1          11.41         0 \r\n 2011          163           12.8871       20.17         11.17         0.254 \r\n 2011          164           18.51295      22.47         12.06         0 \r\n 2011          165           9.004763      22.69         15.35         29.21 \r\n 2011          166           21.59793      23.97         13.8          18.796 \r\n 2011          167           28.80073      29.65         12.46         0 \r\n 2011          168           21.67295      30.81         17.48         0 \r\n 2011          169           7.453001      24.42         18.37         0 \r\n 2011          170           18.67445      28.58         16.78         0 \r\n 2011          171           15.47277      25.65         16.67         26.416 \r\n 2011          172           15.75079      22.46         16.76         11.938 \r\n 2011          173           8.084826      20.69         15.34         5.08 \r\n 2011          174           10.28523      17.82         12.81         0.254 \r\n 2011          175           25.15002      23.25         10.24         0 \r\n 2011          176           15.36766      22.92         13.55         0 \r\n 2011          177           22.13679      27.66         15.26         19.558 \r\n 2011          178           24.73485      24.78         14.55         0.254 \r\n 2011          179           27.28085      25.85         11.62         0 \r\n 2011          180           28.44647      29.02         15.42         0 \r\n 2011          181           25.85888      35.07         21.24         0 \r\n 2011          182           27.67423      34.66         20.41         2.54 \r\n 2011          183           27.58804      28.69         17.64         0 \r\n 2011          184           13.66737      25.84         15.86         0 \r\n 2011          185           27.40532      29.59         13.32         0 \r\n 2011          186           10.96702      26.92         16.9          0.508 \r\n 2011          187           27.64787      28.62         16.72         0 \r\n 2011          188           16.8024       29.78         17.44         1.016 \r\n 2011          189           25.7452       30.5          15.51         0 \r\n 2011          190           23.95244      30.02         20.4          0 \r\n 2011          191           20.56884      31.64         22.08         0 \r\n 2011          192           24.19252      28.89         20.24         14.224 \r\n 2011          193           9.343751      22.1          15.35         3.556 \r\n 2011          194           26.72568      24.92         13.77         0 \r\n 2011          195           14.27815      25.84         16.84         8.382 \r\n 2011          196           18.37391      30.61         21.38         2.794 \r\n 2011          197           24.09386      31.28         22.71         6.096 \r\n 2011          198           24.43188      33.24         24.97         0 \r\n 2011          199           26.15987      34.17         23.44         0 \r\n 2011          200           26.70543      33.9          24.5          0 \r\n 2011          201           26.67195      33.54         23.3          0 \r\n 2011          202           13.34554      26.58         20.07         1.27 \r\n 2011          203           12.7807       29.73         20.94         0.508 \r\n 2011          204           22.32248      29.65         21.12         1.778 \r\n 2011          205           18.70796      27.87         15.93         0 \r\n 2011          206           22.48825      29.88         13.07         0 \r\n 2011          207           23.63701      31.33         20.42         0 \r\n 2011          208           17.13741      30.63         23.78         0 \r\n 2011          209           13.60541      30.23         21.17         0 \r\n 2011          210           25.46387      30.94         17.71         0 \r\n 2011          211           24.2726       30.45         18.67         0 \r\n 2011          212           22.90983      31.22         20.98         0 \r\n 2011          213           20.79992      32.52         21.73         0 \r\n 2011          214           22.63519      31.79         21.95         0 \r\n 2011          215           26.36874      29.05         15.34         0 \r\n 2011          216           17.20975      27.62         14.7          0 \r\n 2011          217           10.7851       27.44         20.54         1.27 \r\n 2011          218           19.87739      29.63         19.03         0 \r\n 2011          219           23.70546      27.98         18.11         1.27 \r\n 2011          220           18.6234       27.58         17.82         1.778 \r\n 2011          221           22.83502      24.68         12.25         0 \r\n 2011          222           24.26975      25.32         10.37         0 \r\n 2011          223           25.41487      26.27         9.68          0 \r\n 2011          224           19.52229      27.22         15.36         0 \r\n 2011          225           17.78208      23.57         14.97         0.254 \r\n 2011          226           22.90757      27.66         10.93         0 \r\n 2011          227           23.12869      27.51         14.4          0 \r\n 2011          228           19.18791      26            15.39         0 \r\n 2011          229           25.54261      27.05         13.75         0 \r\n 2011          230           19.33435      28.09         13.99         0 \r\n 2011          231           23.29459      29.96         13.78         0 \r\n 2011          232           21.13163      25.39         14.98         1.778 \r\n 2011          233           24.43063      27.15         10.03         0 \r\n 2011          234           21.40518      28.3          11.97         0 \r\n 2011          235           21.15602      30.96         17.75         25.146 \r\n 2011          236           24.23846      27.29         13.47         0 \r\n 2011          237           23.92533      27.85         10.66         0 \r\n 2011          238           16.25078      29.24         15.01         0 \r\n 2011          239           19.1687       26.09         11.51         0 \r\n 2011          240           14.6953       24.66         11.11         0 \r\n 2011          241           21.42764      26.4          11.28         0 \r\n 2011          242           3.000012      18.34         16.69         3.81 \r\n 2011          243           18.87352      28.97         17.39         0 \r\n 2011          244           21.49639      33.84         21.55         0 \r\n 2011          245           14.51156      33.5          19.5          6.6 \r\n 2011          246           7.526723      25.16         10.35         9.652 \r\n 2011          247           22.04073      20.12         8.89          0 \r\n 2011          248           22.62624      21.23         4.822778      0 \r\n 2011          249           22.43047      21.74         5.386111      0 \r\n 2011          250           22.21131      23.49         5.577222      0 \r\n 2011          251           18.90942      26.91         7.96          0 \r\n 2011          252           20.51545      28.19         12.26         0 \r\n 2011          253           21.15179      28.74         8.97          0 \r\n 2011          254           19.89927      30.18         10.54         0 \r\n 2011          255           19.45309      31.74         13.6          0 \r\n 2011          256           20.89732      21.23         8.12          0 \r\n 2011          257           19.12946      15.17         0.8488889     0 \r\n 2011          258           18.24203      15           -2.045         0 \r\n 2011          259           6.578838      12.45         7.43          0.254 \r\n 2011          260           6.003203      16.05         9.21          0 \r\n 2011          261           2.841354      14.59         12.26         3.556 \r\n 2011          262           19.52033      24.37         9.23          0.254 \r\n 2011          263           13.73415      23.19         10.79         2.032 \r\n 2011          264           7.495092      16.5          10.25         0 \r\n 2011          265           10.08068      15.69         2.571111      0 \r\n 2011          266           18.95369      18.92        -0.2661111     0 \r\n 2011          267           15.50352      18.28         1.69          0 \r\n 2011          268           12.3356       18.71         2.163889      0 \r\n 2011          269           6.684609      18.65         5.021111      0.762 \r\n 2011          270           6.699797      19.74         11.04         0.254 \r\n 2011          271           17.50038      27.66         9.8           0 \r\n 2011          272           15.15767      21.57         10.1          0 \r\n 2011          273           18.26006      19.27         4.743889      0 \r\n 2011          274           18.2122       18.75        -1.173889      0 \r\n 2011          275           17.54615      25.19         2.892222      0 \r\n 2011          276           17.19649      26.7          4.631111      0 \r\n 2011          277           16.39986      29.37         7.34          0 \r\n 2011          278           16.49626      28.85         11.71         0 \r\n 2011          279           15.15872      27.29         9.47          0 \r\n 2011          280           12.00436      28.92         17.91         0 \r\n 2011          281           9.10589       28.84         17.37         0 \r\n 2011          282           14.7145       27.33         12.32         0 \r\n 2011          283           8.632094      23.45         10.21         0 \r\n 2011          284           10.68435      23.79         7.56          0.254 \r\n 2011          285           5.409996      18.96         11.05         16.764 \r\n 2011          286           13.82117      18.79         6.042778      0 \r\n 2011          287           8.556154      14.6          3.945         0 \r\n 2011          288           13.75105      17.67         2.711111      0 \r\n 2011          289           14.76826      15.2          2.272222      0.254 \r\n 2011          290           10.97999      14.51        -1.688889      0 \r\n 2011          291           4.818545      7.54         -1.867778      0 \r\n 2011          292           5.54477       8            -0.5           0 \r\n 2011          293           11.74173      9.5          -1             0 \r\n 2011          294           13.27152      17.92        -7.34          0 \r\n 2011          295           13.09174      17.72         0.6961111     0 \r\n 2011          296           10.36766      22.58         1.215         0 \r\n 2011          297           12.30519      22.13        -2.877222      0 \r\n 2011          298           10.71899      21.59         5.916111      0 \r\n 2011          299           7.516347      11.05         4.22          0 \r\n 2011          300           12.22159      11.66        -3.073889      0 \r\n 2011          301           12.19         12.72        -2.891111      0 \r\n 2011          302           11.22111      13.53        -8.56          0 \r\n 2011          303           10.19687      12.11         5.115         0 \r\n 2011          304           12.12285      12.85        -4.657222      0 \r\n 2011          305           11.18982      19.94         4.237778      0 \r\n 2011          306           11.39849      7.9           2.397222      4.064 \r\n 2011          307           11.60717      10.41        -4.37          0 \r\n 2011          308           11.01384      11.08        -5.823889      0 \r\n 2011          309           8.742049      12.57         2.645         0 \r\n 2011          310           10.35398      11.74        -1.33          0 \r\n 2011          311           10.68635      13.61        -5.025         0 \r\n 2011          312           4.460688      9.48          4.352222      0 \r\n 2011          313           9.627342      9.58         -0.43          0 \r\n 2011          314           10.80748      5.497222     -7.2           0 \r\n 2011          315           10.58615      12.85        -6.477778      0 \r\n 2011          316           7.614294      14.04        -2.58          0 \r\n 2011          317           4.964776      12.29         1.462222      0 \r\n 2011          318           9.034428      13.6         -2.117222      0 \r\n 2011          319           8.131813      12.4         -7.09          0 \r\n 2011          320           10.44653      5.612222     -11.5          0 \r\n 2011          321           10.24411      3.922778     -13.44         0 \r\n 2011          322           7.401538      12.46         0.5238889     0 \r\n 2011          323           7.992193      3.28         -5.635         1.016 \r\n 2011          324           8.582849     -1.048889     -10.11         0 \r\n 2011          325           2.45015       2.947222     -10.02         0 \r\n 2011          326           4.671562      7.43         -0.2988889     0 \r\n 2011          327           8.440341      11.41        -1.282778      0 \r\n 2011          328           8.757907      18.42         0.6388889     0 \r\n 2011          329           1.954095      11.35         6.042222      3.302 \r\n 2011          330           1.084242      10.16         0.975         1.27 \r\n 2011          331           2.10564       0.985        -2.137222      0 \r\n 2011          332           5.994668      2.833889     -4.893889      0 \r\n 2011          333           9.436594      4.008889     -12.22         0 \r\n 2011          334           6.581348      10.25        -12.1          0 \r\n 2011          335           1.87552       1.187778     -11.15         0 \r\n 2011          336           9.127355      2.15         -16.26         0 \r\n 2011          337           6.8472        1.242222     -2.63          7.37 \r\n 2011          338           4.567045     -2.611111     -8.11          0 \r\n 2011          339           5.352256     -6.482778     -13.79         0 \r\n 2011          340           7.444173     -9.55         -22.12         0 \r\n 2011          341           6.933725     -3.767222     -17.93         0 \r\n 2011          342           6.108347     -3.812778     -13.45         0 \r\n 2011          343           9.467304     -8.68         -23.73         0 \r\n 2011          344           7.697012     -4.015        -23.08         0 \r\n 2011          345           5.015486      1.997778     -6.346111      0 \r\n 2011          346           1.56377       2.528889      0.815         0 \r\n 2011          347           2.046018      3.637222      0.5311111     3.56 \r\n 2011          348           1.311391      7.73          2.585         5.08 \r\n 2011          349           2.021416      3.286111     -6.831111      0 \r\n 2011          350           6.582938     -0.86         -10.28         0.76 \r\n 2011          351           5.120212      3.182778     -4.248889      0 \r\n 2011          352           8.018636      9.96         -4.652778      0 \r\n 2011          353           6.845066      1.306111     -4.336111      0 \r\n 2011          354           5.045025     -0.7072222    -9.14          0 \r\n 2011          355           7.416056      4.207778     -5.336111      0.76 \r\n 2011          356           8.120014     -1.037778     -13.13         0.51 \r\n 2011          357           4.262994      1.261111     -12.88         0 \r\n 2011          358           8.242605      7.07         -10.92         0 \r\n 2011          359           8.236664      6.231111     -5.646111      0 \r\n 2011          360           5.83986       8.07         -5.096111      0.51 \r\n 2011          361           5.084648      4.307222     -6.941111      0 \r\n 2011          362           6.439218      7.64         -6.987778      0.25 \r\n 2011          363           7.752952      6.047778     -1.482222      1.02 \r\n 2011          364           2.32848       2.898889      0.2288889     7.37 \r\n 2011          365           3.644557      6.982222      0.2288889     0 \r\n 2012          1             5.066196      0.7411111    -5.81          18.29 \r\n 2012          2             8.699582     -5.626111     -13.4          0 \r\n 2012          3             6.760591      1.442222     -13.94         0 \r\n 2012          4             8.121311      5.283889     -6.112778      0 \r\n 2012          5             8.486323      14.72        -3.667778      0 \r\n 2012          6             4.113918      6.138889     -0.98          0 \r\n 2012          7             5.732373      1.982222     -6.835         0 \r\n 2012          8             7.702116      6.475        -8.43          0 \r\n 2012          9             8.577493      9.96         -4.642778      0 \r\n 2012          10            8.633809      13.13        -5.141111      0 \r\n 2012          11            2.262707      2.047222     -10.48         0.51 \r\n 2012          12            2.971644     -10.47        -13.51         0 \r\n 2012          13            6.559675     -7.67         -14.91         0 \r\n 2012          14            3.819155     -0.5727777    -14.68         0 \r\n 2012          15            8.876188      8.73         -11.43         0 \r\n 2012          16            5.561331      1.272222     -6.713889      0 \r\n 2012          17            7.815921     -6.627222     -20.08         0.25 \r\n 2012          18            9.289694     -2.545        -20.54         0 \r\n 2012          19            10.03629     -15.1         -20.97         0 \r\n 2012          20            5.428405     -14.28        -23.46         6.6 \r\n 2012          21            8.086835     -5.715        -26.95         0 \r\n 2012          22            2.66981       0.4372222    -6.376111      0.25 \r\n 2012          23            4.669888      8.888889E-02               -5.782778      1.27 \r\n 2012          24            6.484823     -4.531111     -6.541111      0.25 \r\n 2012          25            7.347941      0.4838889    -5.135         0.51 \r\n 2012          26            8.527034      3.057222     -5.812222      0 \r\n 2012          27            3.780035      1.412778     -8.53          0.76 \r\n 2012          28            11.00074      0.5972222    -8.54          0 \r\n 2012          29            9.648973     -0.5738889    -7.43          0 \r\n 2012          30            10.36502      10.75        -2.306111      0 \r\n 2012          31            9.873236      8.18         -0.5922222     0 \r\n 2012          32            6.722767      7.51         -2.345         0 \r\n 2012          33            9.460526      9.67         -3.695         0 \r\n 2012          34            2.720102      0.4111111    -1.322222      0.25 \r\n 2012          35            6.815443      3.336111     -2.743889      0.25 \r\n 2012          36            2.586089     -2.201111     -3.792222      0 \r\n 2012          37            10.14963      5.496111     -5.047778      0 \r\n 2012          38            2.000287     -0.1661111    -4.441111      0 \r\n 2012          39            12.80886     -1.275        -11.05         0 \r\n 2012          40            9.495086      2.603889     -12.3          0 \r\n 2012          41            11.02769     -3.611111     -14.16         0 \r\n 2012          42            13.61557     -4.972222     -18.14         0 \r\n 2012          43            13.76896      0.495        -16.93         0 \r\n 2012          44            4.936953     -1.49         -5.815         1.52 \r\n 2012          45            11.28211      3.232778     -4.53          0.25 \r\n 2012          46            10.66912      7.1          -3.972778      0 \r\n 2012          47            14.0228       3.905        -4.49          0 \r\n 2012          48            13.23717      5.227778     -4.747778      0 \r\n 2012          49            14.48112      2.818889     -8.54          0 \r\n 2012          50            14.08351      6.021111     -8.48          0 \r\n 2012          51            8.288838      7.32         -3.017222      3.81 \r\n 2012          52            12.11302      4.361111     -1.887778      0 \r\n 2012          53            11.41722      7.82         -2.572222      0.25 \r\n 2012          54            3.805599      3.182778     -3.112778      3.05 \r\n 2012          55            14.96119     -1.566111     -7.96          0 \r\n 2012          56            16.1676      -3.785        -12.32         0 \r\n 2012          57            15.88029      5.602778     -6.17          0 \r\n 2012          58            15.91422      0.54         -8.76          0 \r\n 2012          59            1.933133      4.163889     -2.932222      11.68 \r\n 2012          60            3.186995      6.632222     -0.3738889     9.4 \r\n 2012          61            8.143403      1.751111     -1.065         0.25 \r\n 2012          62            7.179284      3.831111     -1.727778      0.76 \r\n 2012          63            9.20639      -1.037222     -5.317222      0 \r\n 2012          64            5.731494     -2.247778     -13.86         1.78 \r\n 2012          65            13.1691       3.003889     -12.8          0 \r\n 2012          66            16.9685       18.91         0.6861111     0 \r\n 2012          67            2.220742      13.33        -1.763889      0 \r\n 2012          68            17.90794      5.657222     -4.467778      0 \r\n 2012          69            18.17421      4.867778     -5.817222      0 \r\n 2012          70            18.22002      18.53         1.593889      0 \r\n 2012          71            10.06189      16.84         1.631111      2.29 \r\n 2012          72            11.35697      14.72         3.687222      0.76 \r\n 2012          73            18.1999       21.32        -0.4411111     0 \r\n 2012          74            18.00103      25.41         8.19          0 \r\n 2012          75            15.16051      23.99         2.227778      0 \r\n 2012          76            14.84161      27.55         9.4           0 \r\n 2012          77            14.25049      26.81         14.53         0 \r\n 2012          78            14.87098      27.21         14.29         0 \r\n 2012          79            10.14118      26.93         14.38         13.46 \r\n 2012          80            5.307027      17.54         12.97         3.56 \r\n 2012          81            6.687706      18.9          13.7          0.25 \r\n 2012          82            3.038337      17.48         8.81          3.05 \r\n 2012          83            20.18357      20.09         6.86          0 \r\n 2012          84            16.53274      21.77         9.27          0 \r\n 2012          85            17.48251      19.56         6.17          0 \r\n 2012          86            12.8427       13.66         6.628889      1.52 \r\n 2012          87            20.03889      24.05         8.22          0 \r\n 2012          88            21.91805      17.71         4.315         0 \r\n 2012          89            18.36793      20.59         4.097778      3.56 \r\n 2012          90            8.525318      14.83         7.41          3.56 \r\n 2012          91            5.54585       13.52         7.4           0 \r\n 2012          92            20.51842      24.66         5.805         0 \r\n 2012          93            19.17126      27.14         9.27          0 \r\n 2012          94            16.64855      17.52         10.73         0 \r\n 2012          95            20.37625      18.76         8.55          0 \r\n 2012          96            23.27208      16.84         2.741111      0 \r\n 2012          97            23.56475      16.97        -1.49          0 \r\n 2012          98            10.9779       16.72         1.953889      0 \r\n 2012          99            19.53773      19.9         -2.037778      0 \r\n 2012          100           24.26205      15.4         -2.122778      0 \r\n 2012          101           25.06739      9.85         -5.282222      0 \r\n 2012          102           25.41056      13.16        -8.31          0 \r\n 2012          103           17.90455      16.41        -3.443889      0 \r\n 2012          104           3.844343      12.75         7.73          0 \r\n 2012          105           13.65143      21.24         10.07         0 \r\n 2012          106           17.07616      23.85         10.34         0 \r\n 2012          107           11.71152      10.34         2.283889      0 \r\n 2012          108           22.59214      19.15        -1.157222      0 \r\n 2012          109           20.77323      19.76         7.71          0 \r\n 2012          110           1.569502      8.34          2.822778      34.036 \r\n 2012          111           25.72223      12.74         2.765         0 \r\n 2012          112           6.424741      10.32         0.9988889     3.81 \r\n 2012          113           12.32544      12.84         3.85          0.254 \r\n 2012          114           25.53671      18.45         0.1477778     0 \r\n 2012          115           25.35772      27.76         5.605         0 \r\n 2012          116           20.39867      29.92         12.37         0 \r\n 2012          117           26.52765      17.89         7.74          0 \r\n 2012          118           16.69157      15.89         5.613889      1.016 \r\n 2012          119           5.059753      8.38          3.3           7.112 \r\n 2012          120           5.149416      9.99          5.746111      12.954 \r\n 2012          121           17.40318      18.42         7.88          0 \r\n 2012          122           19.87459      25.14         9.62          7.874 \r\n 2012          123           14.02259      23.57         14.63         5.08 \r\n 2012          124           19.75024      27.48         18.03         3.556 \r\n 2012          125           18.72064      29.26         15.69         17.78 \r\n 2012          126           11.95469      24.09         15.15         0 \r\n 2012          127           13.79816      21.34         14.65         11.43 \r\n 2012          128           25.73746      20.05         8.61          0 \r\n 2012          129           16.41743      15.93         6.697778      0.508 \r\n 2012          130           22.10328      18.36         6.822778      0 \r\n 2012          131           27.78038      25.25         6.2           0 \r\n 2012          132           25.92871      22.94         10.41         0 \r\n 2012          133           23.58098      21.24         7.18          0 \r\n 2012          134           29.056        23.96         5.193889      0 \r\n 2012          135           28.21639      27.86         7.44          0 \r\n 2012          136           28.14619      27.94         11.43         0 \r\n 2012          137           29.02792      24.94         5.67          0 \r\n 2012          138           26.51204      29.33         13.2          0 \r\n 2012          139           25.30981      33.09         15.86         0.254 \r\n 2012          140           19.85425      30.53         17.82         0 \r\n 2012          141           14.27376      20.43         6.726111      0 \r\n 2012          142           28.26652      25.24         4.706111      0 \r\n 2012          143           27.7067       29.53         12.62         0 \r\n 2012          144           24.29967      32.55         17.02         0 \r\n 2012          145           4.828001      25.65         10.24         3.81 \r\n 2012          146           10.91656      20.54         8.57          1.778 \r\n 2012          147           17.92162      27.13         14.51         10.414 \r\n 2012          148           26.86203      35.05         21.01         0 \r\n 2012          149           28.27217      27.39         13.2          3.048 \r\n 2012          150           28.23664      20.56         9.83          0 \r\n 2012          151           22.47846      18.78         6.841111      4.318 \r\n 2012          152           7.484757      14.34         6.976111      4.572 \r\n 2012          153           24.38167      20.61         5.498889      0 \r\n 2012          154           22.20206      23.27         11.71         0 \r\n 2012          155           17.81995      29.36         9.71          0.254 \r\n 2012          156           28.0269       29.83         14.17         0 \r\n 2012          157           21.32129      29.06         14.9          0 \r\n 2012          158           22.47904      26.62         15.21         0 \r\n 2012          159           18.44098      27.58         14.91         0 \r\n 2012          160           28.63212      32.05         16.24         0 \r\n 2012          161           29.77686      31.61         16.14         0 \r\n 2012          162           24.36448      33.01         19.48         3.048 \r\n 2012          163           29.55737      24.76         10.87         0 \r\n 2012          164           29.33114      21.55         9.03          0 \r\n 2012          165           16.00828      25.13         11.31         0 \r\n 2012          166           24.06248      32.33         18.37         0 \r\n 2012          167           13.35947      29.54         19.17         4.826 \r\n 2012          168           20.59541      28.11         14.35         0.762 \r\n 2012          169           25.34295      29.17         10.54         0 \r\n 2012          170           24.54719      33.09         23.74         0 \r\n 2012          171           28.6809       32.96         22.86         0 \r\n 2012          172           10.1098       29.26         15.51         27.432 \r\n 2012          173           29.90338      24.82         14.38         0.254 \r\n 2012          174           26.08962      27            11.82         0 \r\n 2012          175           13.468        25.72         16.24         0.508 \r\n 2012          176           27.70795      28.86         17.5          0 \r\n 2012          177           29.24348      25.76         13.38         0 \r\n 2012          178           26.76421      27.53         12.26         0 \r\n 2012          179           28.24756      35.53         20.24         0 \r\n 2012          180           25.50976      31.98         18.17         0 \r\n 2012          181           6.268762      25.47         17            0 \r\n 2012          182           24.30272      31.64         16.43         0 \r\n 2012          183           25.48236      32.8          17.54         0 \r\n 2012          184           26.56995      33.64         22.09         0 \r\n 2012          185           25.26542      34.47         21.35         0 \r\n 2012          186           27.17462      34.86         22.37         0 \r\n 2012          187           19.80317      33.88         22.78         0 \r\n 2012          188           27.91573      36.08         22.47         0 \r\n 2012          189           25.00555      28.62         17.56         0 \r\n 2012          190           16.33233      27.91         16.64         1.27 \r\n 2012          191           27.55256      29.51         13.47         0 \r\n 2012          192           28.62103      29.31         12.14         0 \r\n 2012          193           28.96638      29.19         12.22         0 \r\n 2012          194           22.65167      30.65         15.69         1.016 \r\n 2012          195           22.52519      30.64         20.37         0.762 \r\n 2012          196           26.47472      32.35         18.76         0 \r\n 2012          197           26.00984      33.01         15.41         0 \r\n 2012          198           27.72377      33.72         20.6          0 \r\n 2012          199           27.6349       35.23         20.8          0 \r\n 2012          200           19.95822      33.72         18.65         1.778 \r\n 2012          201           26.12314      30.12         17.23         0 \r\n 2012          202           21.40635      29.61         16.26         0 \r\n 2012          203           13.19035      29.62         18.24         0.508 \r\n 2012          204           21.13899      34.95         20.76         3.048 \r\n 2012          205           23.8975       37.41         21.61         0 \r\n 2012          206           25.02187      33.56         22.68         0 \r\n 2012          207           25.17362      35.49         19.62         17.018 \r\n 2012          208           25.85566      30.29         17.48         0 \r\n 2012          209           20.45658      25.93         14.57         0 \r\n 2012          210           3.471381      19.63         13.83         6.604 \r\n 2012          211           12.28552      24.85         17.66         2.032 \r\n 2012          212           26.11222      33.15         16.92         0 \r\n 2012          213           27.44704      30.41         15.35         0 \r\n 2012          214           26.12255      32.43         16.74         0 \r\n 2012          215           25.3301       32.27         19.63         1.016 \r\n 2012          216           24.41218      32.74         19.87         0 \r\n 2012          217           18.10141      25.68         14.8          1.778 \r\n 2012          218           28.01523      24.53         11.75         0 \r\n 2012          219           26.3528       29.99         9.59          0 \r\n 2012          220           24.99028      33.66         16.57         0 \r\n 2012          221           17.50096      28.71         16.32         0.508 \r\n 2012          222           24.95074      27.59         12.74         0 \r\n 2012          223           17.60514      24.54         9.95          0 \r\n 2012          224           22.39582      24.57         6.957222      0.254 \r\n 2012          225           3.062395      16.78         14.48         10.414 \r\n 2012          226           22.34336      25.82         14.07         0.762 \r\n 2012          227           22.21721      27.93         12.03         0 \r\n 2012          228           18.71043      28.99         16.05         0 \r\n 2012          229           23.28781      23.66         10.99         0.762 \r\n 2012          230           25.34994      23.13         5.958889      0 \r\n 2012          231           14.69295      21.25         6.517222      0 \r\n 2012          232           18.34604      24.21         6.61          0.762 \r\n 2012          233           21.02565      25.65         7.77          0 \r\n 2012          234           25.04743      27.44         8.68          0 \r\n 2012          235           18.74562      33.08         13.19         0 \r\n 2012          236           21.5794       32.43         16.26         0 \r\n 2012          237           22.47733      30.9          18.33         0 \r\n 2012          238           5.281672      23.18         16.7          4.572 \r\n 2012          239           20.33064      29.18         14.15         0 \r\n 2012          240           22.23595      31.61         10.01         0 \r\n 2012          241           20.33386      33.32         15.86         0 \r\n 2012          242           22.28018      34.78         20.52         0 \r\n 2012          243           22.5244       36.02         19.64         0 \r\n 2012          244           19.68099      32.56         15.52         0 \r\n 2012          245           21.56262      30.85         16.02         0 \r\n 2012          246           21.7804       32.62         12.82         0 \r\n 2012          247           8.571342      28.32         15.2          0 \r\n 2012          248           21.02146      35.23         16.43         6.604 \r\n 2012          249           18.6575       28.09         11.47         3.048 \r\n 2012          250           21.50262      28.59         7.34          2.54 \r\n 2012          251           11.33211      22.33         8.7           3.302 \r\n 2012          252           20.68741      26.99         4.527778      0 \r\n 2012          253           22.28273      24.04         6.492778      0 \r\n 2012          254           22.04248      27.92         9.62          0 \r\n 2012          255           18.39805      33.34         14.73         0 \r\n 2012          256           4.815701      21.35         10.55         14.478 \r\n 2012          257           15.87477      21.56         9.42          6.096 \r\n 2012          258           20.89603      26.72         7.78          0 \r\n 2012          259           20.43876      26.61         9.25          0 \r\n 2012          260           16.96323      26.5          10.43         0 \r\n 2012          261           11.01124      17.95         5.813889      1.524 \r\n 2012          262           19.26498      17.1          1.985         0 \r\n 2012          263           17.16281      27.41         7.65          0 \r\n 2012          264           16.80123      20.06         3.603889      0 \r\n 2012          265           15.55582      21.35         7.59          0 \r\n 2012          266           17.24536      14.91         1.417222      0 \r\n 2012          267           20.24332      16.02        -3.195         0 \r\n 2012          268           18.82536      25.4          1.53          0 \r\n 2012          269           18.65106      26.62         4.38          0 \r\n 2012          270           18.95833      21.66         7.777778E-03                0 \r\n 2012          271           18.48077      21.84         2.937778      0 \r\n 2012          272           17.13448      24.21         3.431111      0 \r\n 2012          273           17.26406      27.87         4.952778      0 \r\n 2012          274           14.59777      28.18         6.53          0 \r\n 2012          275           15.71046      23.44         7.04          0 \r\n 2012          276           17.76539      23.49         2.093889      0 \r\n 2012          277           17.14218      25.31         4.647222      0 \r\n 2012          278           15.25754      15.67        -1.5           0 \r\n 2012          279           11.81733      10.94        -4.576111      0 \r\n 2012          280           6.193241      5.841111     -6.012778      0 \r\n 2012          281           17.64205      12.57        -10.47         0 \r\n 2012          282           12.89576      21.04         1.79          1.27 \r\n 2012          283           4.448763      10.43        -1.177222      4.318 \r\n 2012          284           16.94595      13.17        -3.216111      0 \r\n 2012          285           8.934807      10.5         -2.878889      0 \r\n 2012          286           16.07116      13           -5.752222      0 \r\n 2012          287           6.94452       22.18         8.31          4.826 \r\n 2012          288           9.471028      14.45         3.333889      4.064 \r\n 2012          289           14.14623      18.26        -0.9872222     0 \r\n 2012          290           12.43238      21.67         9.14          0 \r\n 2012          291           6.575198      15.79         7.53          0.254 \r\n 2012          292           3.440629      7.98          4.132222      2.54 \r\n 2012          293           2.881479      8.28          6.125         1.27 \r\n 2012          294           5.099836      10.89         4.415         0 \r\n 2012          295           13.29495      23.19         5.103889      0 \r\n 2012          296           9.150534      23.59         12.86         0 \r\n 2012          297           2.876709      19.86         15.18         0 \r\n 2012          298           1.557117      17.92         9.43          7.62 \r\n 2012          299           2.892232      9.46          1.202778      28.448 \r\n 2012          300           5.842496      4.112778     -0.7227778     0 \r\n 2012          301           12.85576      5.636111     -3.348889      0 \r\n 2012          302           12.83019      8.39         -2.672778      0 \r\n 2012          303           8.531385      10.16        -2.445         0 \r\n 2012          304           8.369381      9.65         -4.582778      0 \r\n 2012          305           11.85009      11.53        -4.975         0 \r\n 2012          306           11.68043      10.51        -3.207778      0 \r\n 2012          307           5.637731      6.557778     -3.76          0 \r\n 2012          308           7.192212      9.63          0.4011111     0 \r\n 2012          309           2.358814      7.27          3.382222      0.508 \r\n 2012          310           3.190384      6.587222      3.961111      1.27 \r\n 2012          311           4.824027      8.39          3.341111      3.048 \r\n 2012          312           4.662273      6.258889      3.222222E-02                0 \r\n 2012          313           10.71468      14.42        -3.222222E-02                0 \r\n 2012          314           8.27135       13.64         1.148889      0 \r\n 2012          315           9.779263      25.07         9.54          0 \r\n 2012          316           1.721088      14.56        -7.39          0 \r\n 2012          317           6.215834     -0.8861111    -8.87          0 \r\n 2012          318           9.881939      8.16         -9.55          0 \r\n 2012          319           9.793865      13.15         0.2288889     0 \r\n 2012          320           9.933402      12.27        -3.102222      0 \r\n 2012          321           10.27118      10.22        -8.33          0 \r\n 2012          322           8.333315      14.84         0.4672222     0 \r\n 2012          323           7.176606      15.46         5.027778      0 \r\n 2012          324           8.771714      15.49         0.4938889     0 \r\n 2012          325           9.671441      14.27        -2.952222      0 \r\n 2012          326           9.043674      21.4          3.638889      0 \r\n 2012          327           8.781631      16.77        -1.416111      0 \r\n 2012          328           7.71517      -0.5738889    -11.15         0 \r\n 2012          329           4.537171     -0.3188889    -13.2          0 \r\n 2012          330           6.830547      1.73         -6.467778      0 \r\n 2012          331           6.412356     -3.603889     -14.11         0 \r\n 2012          332           6.461226      1.95         -13.77         0 \r\n 2012          333           7.373003      6.272222     -11.81         0 \r\n 2012          334           8.088342      10.5         -5.606111      0 \r\n 2012          335           6.696701      8.06         -2.838889      0 \r\n 2012          336           1.524817      11.06        -1.037778      0 \r\n 2012          337           8.223401      15.33        -4.038889      0 \r\n 2012          338           4.953521      17.54        -1.13          0 \r\n 2012          339           8.491261      7.65         -8.14          0 \r\n 2012          340           5.902034      6.685        -8.3           0 \r\n 2012          341           2.922608      7             1.26          2.29 \r\n 2012          342           3.491213      3.24         -2.697222      0.76 \r\n 2012          343           3.648741      1.848889     -6.337222      0.25 \r\n 2012          344           1.053071      0.495        -9.68          1.27 \r\n 2012          345           7.358903     -5.047778     -12.67         0 \r\n 2012          346           4.918375      1.932222     -9.39          0 \r\n 2012          347           7.813243      9.95         -4.907778      0 \r\n 2012          348           7.428692      8.6          -7.56          0 \r\n 2012          349           7.417395      11.72        -7.97          0 \r\n 2012          350           1.068092      7.2           0.3327778     12.7 \r\n 2012          351           2.727884      0.3522222    -6.617778      0 \r\n 2012          352           2.717885     -2.221111     -6.978889      0.51 \r\n 2012          353           1.33729       4.222222E-02               -2.352778      1.02 \r\n 2012          354           3.430838      1.477778     -3.675         2.29 \r\n 2012          355           5.126948     -1.256111     -13.19         2.79 \r\n 2012          356           9.003424     -8.25         -15.58         0 \r\n 2012          357           8.151646     -1.466111     -13.44         0 \r\n 2012          358           4.448387     -7.18         -13.11         0 \r\n 2012          359           6.199475     -8.12         -18.55         0 \r\n 2012          360           8.841252     -13.5         -20.3          0 \r\n 2012          361           8.11173      -8            -18.74         0 \r\n 2012          362           3.600416     -6.206111     -14.68         0.25 \r\n 2012          363           5.931364     -5.023889     -10.46         0.51 \r\n 2012          364           7.753161     -9.48         -18.06         0 \r\n 2012          365           7.680861     -1.852778     -18.39         0 \r\n 2012          366           6.31989      -8.1          -19.82         0 \r\n 2013          1             4.249647     -10.38        -22.76         0 \r\n 2013          2             5.560703     -1.955        -16.56         0 \r\n 2013          3             8.411974     -4.04         -14.41         0 \r\n 2013          4             8.935308     -2.795        -12.28         0 \r\n 2013          5             9.022713     -1.911111     -12.12         0 \r\n 2013          6             9.054259     -5.922222     -14.19         0 \r\n 2013          7             6.450138      0.8522222    -10.89         0 \r\n 2013          8             7.047278      2.963889     -11.29         0 \r\n 2013          9             8.98196       4.551111     -6.923889      0 \r\n 2013          10            3.379166      3.306111     -3.773889      3.3 \r\n 2013          11            1.589334      6.426111      0.9           0 \r\n 2013          12            6.14433       2.102222     -12.77         0 \r\n 2013          13            5.477107     -9.87         -15.73         0 \r\n 2013          14            9.196557     -4.015        -15.83         0 \r\n 2013          15            9.044218     -0.1311111    -12.08         0 \r\n 2013          16            5.470998      5.916111     -7.77          0 \r\n 2013          17            7.514673     -0.3861111    -13.41         0 \r\n 2013          18            9.309442      8.67         -4.185         0 \r\n 2013          19            9.028528      7.6          -13.29         0 \r\n 2013          20            4.756915     -11.53        -16.25         0.25 \r\n 2013          21            10.67004     -14.44        -22.94         0 \r\n 2013          22            8.45122      -10.53        -20.75         0 \r\n 2013          23            7.103093     -5.968889     -18.15         0 \r\n 2013          24            5.113811     -8.52         -18.45         0 \r\n 2013          25            6.260938     -1.537778     -15.45         0 \r\n 2013          26            7.079705     -0.8288889    -17.79         0 \r\n 2013          27            5.416962      0.1261111    -3.287778      4.83 \r\n 2013          28            3.75422       2.595        -1.938889      0.76 \r\n 2013          29            1.64791       2.358889     -2.213889      0.76 \r\n 2013          30            6.273155     -2.013889     -13.4          2.79 \r\n 2013          31            10.21883     -13.17        -21.14         0 \r\n 2013          32            9.553578     -7.33         -22.76         0.51 \r\n 2013          33            8.811545     -2.207778     -14.91         0.25 \r\n 2013          34            6.017638     -3.526111     -13.24         0 \r\n 2013          35            10.80121     -5.042778     -10.2          0.25 \r\n 2013          36            4.807541      2.567222     -10.09         0.25 \r\n 2013          37            4.731184      2.851111     -10.97         2.03 \r\n 2013          38            1.757824      1.372778     -5.598889      0.25 \r\n 2013          39            3.851288     -2.173889     -7.31          0 \r\n 2013          40            3.15938       0.5411111    -4.156111      0 \r\n 2013          41            1.72862       3.837778     -2.48          7.87 \r\n 2013          42            7.583751     -2.383889     -6.612222      0.25 \r\n 2013          43            13.32625      3.371111     -7.3           0 \r\n 2013          44            11.91787      6.903889     -4.932222      0.76 \r\n 2013          45            3.796771      2.067222     -8.08          0.25 \r\n 2013          46            13.80201     -5.525        -12.03         0 \r\n 2013          47            11.35186     -2.223889     -14.25         0 \r\n 2013          48            11.78896      2.632222     -8.48          0 \r\n 2013          49            3.930366      2.056111     -14.24         2.79 \r\n 2013          50            14.76835     -9.73         -18.92         0 \r\n 2013          51            13.37001     -5.127778     -19.79         0 \r\n 2013          52            6.692308     -4.203889     -11.55         5.84 \r\n 2013          53            12.90459     -4.457778     -14.77         3.05 \r\n 2013          54            15.97121     -4.737222     -17.11         0 \r\n 2013          55            13.00638     -1.238889     -15.29         0 \r\n 2013          56            11.10475     -0.3511111    -8.68          0 \r\n 2013          57            8.332812      2.222222E-03               -6.857222      1.52 \r\n 2013          58            9.856792     -1.503889     -6.551111      1.27 \r\n 2013          59            7.127109     -2.565        -8.01          0 \r\n 2013          60            11.23304     -3.672222     -11.39         0 \r\n 2013          61            16.4294      -3.128889     -16.07         0 \r\n 2013          62            14.60375     -0.6522222    -6.707222      1.02 \r\n 2013          63            8.532348     -1.417778     -4.892778      3.56 \r\n 2013          64            11.50391     -2.052222     -5.735         4.32 \r\n 2013          65            14.98127     -4.37         -14.42         0 \r\n 2013          66            16.19547     -3.271111     -17.01         0 \r\n 2013          67            16.29057      2.103889     -9.35          0.76 \r\n 2013          68            1.859621      2.33          1.003889      17.53 \r\n 2013          69            1.538248      1.062778     -2.736111      9.14 \r\n 2013          70            16.42839     -2.726111     -6.19          1.78 \r\n 2013          71            16.57864     -2.042222     -8.41          0 \r\n 2013          72            20.01877     -3.882778     -12.73         0 \r\n 2013          73            18.88327      2.998889     -6.612222      1.02 \r\n 2013          74            13.53583      2.907222     -2.257778      0.76 \r\n 2013          75            13.9072       0.2188889    -7.41          0 \r\n 2013          76            18.56391     -0.47         -10.06         0 \r\n 2013          77            16.66839     -0.2688889    -10.7          1.78 \r\n 2013          78            20.48863     -2.527778     -12.54         0 \r\n 2013          79            20.92603     -5.697778     -12.9          0 \r\n 2013          80            21.62885     -3.652778     -14.33         0 \r\n 2013          81            19.40891     -0.8222222    -10.41         0 \r\n 2013          82            16.86692      0.955        -5.692222      0 \r\n 2013          83            8.51034      -1.217778     -4.107222      0.25 \r\n 2013          84            17.4705       0.5127778    -4.135         0 \r\n 2013          85            21.32405      2.403889     -6.86          0 \r\n 2013          86            21.40267      4.425        -4.507778      0 \r\n 2013          87            18.9421       9.09         -1.652778      0 \r\n 2013          88            20.60336      12.85        -0.015         0 \r\n 2013          89            8.841126      13.45         1.951111      0.25 \r\n 2013          90            17.75953      5.122778     -4.287778      0 \r\n 2013          91            22.70879      1.277778     -6.613889      0 \r\n 2013          92            20.55984      3.943889     -5.292778      0 \r\n 2013          93            21.64492      7.78         -3.571111      0 \r\n 2013          94            18.32772      12.37        -0.3738889     0 \r\n 2013          95            12.04611      11.18        -1.877778      0 \r\n 2013          96            7.332795      15.33         1.942778      1.27 \r\n 2013          97            13.55365      13.05         0.08          0.508 \r\n 2013          98            20.64754      20.93         5.631111      4.826 \r\n 2013          99            2.627385      6.657778      2.51          52.07 \r\n 2013          100           2.660187      2.673889      0.4577778     5.842 \r\n 2013          101           7.404467      5.24          0.1           20.32 \r\n 2013          102           6.863852      1.392222     -1.036111      0.254 \r\n 2013          103           15.38875      6.407222     -2.047778      0 \r\n 2013          104           4.430103      13.42         1.726111      27.432 \r\n 2013          105           14.04259      6.262778     -0.2011111     0 \r\n 2013          106           23.0748       9.6          -1.168889      0 \r\n 2013          107           1.765522      4.441111      2.737778      23.114 \r\n 2013          108           4.875322      2.767222     -0.8272222     10.16 \r\n 2013          109           12.18444      1.668889     -2.257222      0.254 \r\n 2013          110           24.63778      6.876111     -4.362222      0 \r\n 2013          111           11.80767      17.48         2.115         5.842 \r\n 2013          112           3.163481      10.37        -0.1372222     15.24 \r\n 2013          113           16.98926      3.868889     -2.457222      0 \r\n 2013          114           23.83043      11.82        -4.573889      0 \r\n 2013          115           26.55212      15.06        -3.187222      0 \r\n 2013          116           24.95953      23.08         6.956111      0 \r\n 2013          117           24.48017      22.03         5.287778      0 \r\n 2013          118           24.76815      26.33         6.602222      0 \r\n 2013          119           21.12619      24.86         11.34         4.064 \r\n 2013          120           20.94217      23.06         10.92         14.224 \r\n 2013          121           3.880911      11            6.111111E-02                6.096 \r\n 2013          122           19.64518      2.793889     -6.277778E-02                17.526 \r\n 2013          123           14.13046      0.9322222    -0.5061111     0.762 \r\n 2013          124           14.73622      3.862222      0.1561111     0.762 \r\n 2013          125           16.97553      12.5          2.757778      0 \r\n 2013          126           25.97067      21.68         4.26          0 \r\n 2013          127           22.33587      23.55         6.746111      0 \r\n 2013          128           14.7191       24.83         9.91          2.032 \r\n 2013          129           6.864312      17.11         7.88          1.524 \r\n 2013          130           27.3237       19.17         5.402778      0 \r\n 2013          131           26.84333      12.71         1.602222      0 \r\n 2013          132           29.40394      15.51        -0.8538889     0 \r\n 2013          133           20.03408      25.7          2.248889      0 \r\n 2013          134           26.35071      39.22         10.1          0 \r\n 2013          135           21.80462      26.61         12.43         0 \r\n 2013          136           24.54707      30.52         9.42          10.414 \r\n 2013          137           16.22116      26.79         15.32         0 \r\n 2013          138           19.23573      29.04         14.24         0 \r\n 2013          139           17.49008      26.1          16.67         42.418 \r\n 2013          140           16.44588      23.09         15.19         4.318 \r\n 2013          141           12.16218      17.98         12.95         0 \r\n 2013          142           6.925106      14.47         10.39         2.54 \r\n 2013          143           29.60686      17.96         7.25          0 \r\n 2013          144           27.39918      22.48         4.966111      0.254 \r\n 2013          145           3.282892      14.37         9.95          25.654 \r\n 2013          146           3.611754      12.52         8.71          58.42 \r\n 2013          147           4.965362      18.63         12.03         20.066 \r\n 2013          148           21.30761      23.92         14.23         1.27 \r\n 2013          149           10.0316       23.83         15.57         4.826 \r\n 2013          150           12.67175      21.68         17.15         1.27 \r\n 2013          151           26.32845      25.29         14.46         0 \r\n 2013          152           13.81477      20.79         11.29         0 \r\n 2013          153           25.53248      19.08         8.5           0 \r\n 2013          154           28.90604      22.28         7.83          0 \r\n 2013          155           4.633027      16.89         12.35         13.716 \r\n 2013          156           15.70741      20.34         12.44         0.762 \r\n 2013          157           11.43993      16.6          11.09         0 \r\n 2013          158           16.96428      19.53         8.91          0 \r\n 2013          159           8.67816       20.27         10.06         9.906 \r\n 2013          160           17.72501      22.08         15.01         4.318 \r\n 2013          161           17.17486      25.39         12.98         0.254 \r\n 2013          162           24.81798      31.54         17.11         0 \r\n 2013          163           14.0351       28.36         16.79         9.906 \r\n 2013          164           29.11474      26.26         13.85         0 \r\n 2013          165           12.05846      24.7          16.35         17.526 \r\n 2013          166           15.07432      26.12         16.85         18.034 \r\n 2013          167           27.53315      29.37         15.38         0 \r\n 2013          168           27.57536      29.62         14.55         0 \r\n 2013          169           25.91331      26.54         15.56         0 \r\n 2013          170           23.88215      30.1          16.63         0 \r\n 2013          171           23.37705      32.4          19.89         0 \r\n 2013          172           15.10294      30.86         17.93         0.254 \r\n 2013          173           22.72276      33.96         18.5          4.572 \r\n 2013          174           18.05965      27.12         19.3          4.318 \r\n 2013          175           8.808576      25.59         18.81         21.082 \r\n 2013          176           22.12119      31.21         19.12         0 \r\n 2013          177           23.01874      31.72         20.07         0 \r\n 2013          178           17.90576      30.64         17.95         0 \r\n 2013          179           25.49642      27.82         17.98         0 \r\n 2013          180           16.41952      23.91         14.74         0.508 \r\n 2013          181           25.99473      25.23         12.94         0 \r\n 2013          182           26.30079      27.84         12.93         0 \r\n 2013          183           27.39897      27.91         14.99         0 \r\n 2013          184           27.53352      28.08         13.68         0 \r\n 2013          185           26.61928      30.26         16.41         0 \r\n 2013          186           21.28334      31.98         18.13         0 \r\n 2013          187           26.66204      33.33         20.4          0 \r\n 2013          188           24.10001      32.85         21.05         0 \r\n 2013          189           27.12901      33.81         20.36         0 \r\n 2013          190           24.22285      33.18         21.33         1.016 \r\n 2013          191           28.42555      26.78         15.52         0 \r\n 2013          192           27.95514      29.18         13.55         0 \r\n 2013          193           27.52771      30.52         17.49         0 \r\n 2013          194           8.939911      25.91         17.68         0.508 \r\n 2013          195           27.77331      29.77         17.65         0 \r\n 2013          196           24.55627      31.14         16.54         0 \r\n 2013          197           22.99974      32.84         21.89         0 \r\n 2013          198           24.69995      34.09         19.7          0 \r\n 2013          199           26.3897       33.18         21.32         0 \r\n 2013          200           25.52135      31.54         17.3          0 \r\n 2013          201           22.40812      29.17         13.11         0 \r\n 2013          202           16.78094      29.55         17.84         0 \r\n 2013          203           22.45432      32.64         17.75         0 \r\n 2013          204           20.33696      24.19         13.22         0 \r\n 2013          205           23.42781      26.61         9.96          0 \r\n 2013          206           20.50223      29.25         14.29         63.246 \r\n 2013          207           20.01446      21.03         12.16         0 \r\n 2013          208           21.35317      19.8          8.75          0 \r\n 2013          209           23.52077      21.74         8.34          0 \r\n 2013          210           22.82142      23.78         8.32          0 \r\n 2013          211           7.08255       22.58         16.17         0 \r\n 2013          212           18.97059      26.39         14.82         0 \r\n 2013          213           20.05052      28.89         12.84         6.604 \r\n 2013          214           12.10511      23.98         14.42         1.27 \r\n 2013          215           21.63538      24.08         10.9          0 \r\n 2013          216           21.6276       25.28         11.74         0 \r\n 2013          217           14.0815       27.36         17.22         0 \r\n 2013          218           17.50502      29.66         14.54         0 \r\n 2013          219           16.43036      24.05         13.14         0 \r\n 2013          220           14.94157      24.98         11.34         0 \r\n 2013          221           20.31742      24.7          14.25         0 \r\n 2013          222           18.94239      26.15         10.69         0 \r\n 2013          223           8.517243      25.34         17.05         22.606 \r\n 2013          224           25.22651      24.9          13.84         0.254 \r\n 2013          225           23.47345      22.93         11.19         0 \r\n 2013          226           23.46115      23.02         8.31          0 \r\n 2013          227           21.41836      22.57         10.98         0 \r\n 2013          228           24.00143      24.44         10.03         0 \r\n 2013          229           24.31753      26.04         10.9          0 \r\n 2013          230           22.64992      26.3          11.87         0 \r\n 2013          231           18.91231      27.8          13.6          0 \r\n 2013          232           20.55168      30.61         19.94         0 \r\n 2013          233           10.16252      29.91         20.19         3.048 \r\n 2013          234           16.67512      27.38         18.41         31.75 \r\n 2013          235           17.64828      27.06         17.85         0 \r\n 2013          236           11.82649      28.52         20.26         0 \r\n 2013          237           21.95755      31.72         20.96         0 \r\n 2013          238           22.13637      32.47         20.91         0 \r\n 2013          239           21.92654      32.9          22.17         0 \r\n 2013          240           20.1924       33.02         20.86         0 \r\n 2013          241           21.46057      31.98         20.55         0 \r\n 2013          242           20.81741      31.25         18.73         0 \r\n 2013          243           22.12554      29.38         16.76         0 \r\n 2013          244           19.91517      24.73         14.4          0.762 \r\n 2013          245           22.95798      22.24         9.39          0 \r\n 2013          246           21.16962      26.05         5.681111      0 \r\n 2013          247           20.34282      30.43         13.78         0 \r\n 2013          248           19.64643      30.74         16.67         0 \r\n 2013          249           19.87676      31.1          18.96         0 \r\n 2013          250           16.19057      31.41         18.1          0 \r\n 2013          251           6.289556      23.41         19.71         0 \r\n 2013          252           18.62257      35.71         19.68         0 \r\n 2013          253           17.30741      30.06         17.01         1.016 \r\n 2013          254           16.44839      29.15         14.83         0 \r\n 2013          255           20.78544      23.56         9.49          0 \r\n 2013          256           20.66842      21.23         6.458889      0 \r\n 2013          257           15.69042      24.13         6.588889      1.778 \r\n 2013          258           6.80628       18.52         10.11         4.572 \r\n 2013          259           15.34695      18.92         8.18          0.254 \r\n 2013          260           2.538809      17.18         9.34          1.27 \r\n 2013          261           15.14809      30.96         17.17         2.794 \r\n 2013          262           10.37222      27.17         14.36         1.778 \r\n 2013          263           7.772366      16.93         6.248889      0.254 \r\n 2013          264           19.46861      21.97         4.401111      0 \r\n 2013          265           18.53935      25.97         8.3           0 \r\n 2013          266           18.34713      24.53         10.62         0 \r\n 2013          267           12.30088      23.11         9.68          0 \r\n 2013          268           17.7438       24.77         8.8           0 \r\n 2013          269           17.51037      28.92         12.57         0 \r\n 2013          270           15.45578      30.66         17.77         0 \r\n 2013          271           5.227866      20.51         5.215         2.794 \r\n 2013          272           17.63234      24.74         5.166111      0 \r\n 2013          273           16.48111      25.87         11.24         0 \r\n 2013          274           17.52351      26.21         9.42          0 \r\n 2013          275           14.71726      28.58         8.21          0 \r\n 2013          276           9.447305      25.97         14.16         4.318 \r\n 2013          277           7.12849       22.04         15.12         22.86 \r\n 2013          278           13.03814      18.41         6.08          0 \r\n 2013          279           3.768822      9.52          5.862222      3.556 \r\n 2013          280           15.91037      22.33         3.187778      0.254 \r\n 2013          281           15.98426      25.28         8.65          0 \r\n 2013          282           15.81389      24.18         10.65         0 \r\n 2013          283           14.90144      25.62         8.35          0 \r\n 2013          284           6.687036      23.4          10.66         1.016 \r\n 2013          285           15.43298      17.72         2.242778      0 \r\n 2013          286           15.34541      17.33        -2.327222      0 \r\n 2013          287           6.51135       16.46         3.157222      15.494 \r\n 2013          288           2.481321      13.31         6.956111      1.778 \r\n 2013          289           3.341677      9.26          1.01          0.254 \r\n 2013          290           12.5774       15.43        -0.7472222     0.254 \r\n 2013          291           12.30309      10.81         0.6311111     0 \r\n 2013          292           7.314134      10.34        -1.75          0.254 \r\n 2013          293           7.450574      15.62        -0.6522222     0 \r\n 2013          294           7.41091       6.83         -3.652222      0 \r\n 2013          295           8.198088      6.733889     -1.877222      0.762 \r\n 2013          296           4.302449      3.995        -4.397222      0.762 \r\n 2013          297           9.556423      7.56         -5.08          0 \r\n 2013          298           11.14827      13.14        -6.945         0 \r\n 2013          299           12.40623      9.54         -4.916111      0 \r\n 2013          300           12.57476      18.15        -5.901111      0 \r\n 2013          301           10.75903      8.1           1.413889      0 \r\n 2013          302           8.209761      13.88         2.928889      0 \r\n 2013          303           6.194998      19.06         9.13          0.762 \r\n 2013          304           2.908215      10.14         3.442222      0.254 \r\n 2013          305           8.544021      12.99         4.037778      0 \r\n 2013          306           10.42586      11.08        -0.5322222     0 \r\n 2013          307           9.212331      12.89        -4.888889E-02                0 \r\n 2013          308           2.746712      10.78        -1.25          0 \r\n 2013          309           1.021984      5.406111     -4.63          27.178 \r\n 2013          310           11.11216      5.333889     -3.05          0 \r\n 2013          311           7.159075      5.708889     -3.757222      0 \r\n 2013          312           6.319807      10.36        -4.771111      0 \r\n 2013          313           9.230991      10.61        -0.4661111     0 \r\n 2013          314           6.829543      4.89         -6.535         0 \r\n 2013          315           5.015068      3.433889     -11.94         0 \r\n 2013          316           11.01727     -3.942778     -15.84         0 \r\n 2013          317           10.5182       10.58        -8.59          0 \r\n 2013          318           6.340183      9.79         -2.295         0 \r\n 2013          319           8.460006      12.95        -4.562778      0 \r\n 2013          320           1.779037      17.06         3.593889      0 \r\n 2013          321           4.11852       8.7           0.835         0 \r\n 2013          322           9.32145       4.953889     -3.586111      0 \r\n 2013          323           9.410234      8.53         -3.663889      0 \r\n 2013          324           2.382495      5.385         1.072778      0 \r\n 2013          325           1.745272      3.062778     -6.381111      0 \r\n 2013          326           9.26392      -3.202222     -12.28         0 \r\n 2013          327           10.06909     -8.1          -18.06         0 \r\n 2013          328           9.410276     -3.945        -17.68         0 \r\n 2013          329           6.28077       5.346111     -5.322222      0 \r\n 2013          330           8.882256     -0.1272222    -11.73         0 \r\n 2013          331           8.594605     -4.203889     -15.4          0 \r\n 2013          332           8.906314     -0.5172222    -13.2          0 \r\n 2013          333           5.565013      6.222222E-02               -14.48         0 \r\n 2013          334           8.416911      9.07         -6.022778      0 \r\n 2013          335           4.367008      3.621111     -6.647778      0 \r\n 2013          336           3.615729      6.18         -4.756111      0.25 \r\n 2013          337           2.761691      4.773889     -2.79          0.25 \r\n 2013          338           4.837478      2.067778     -9.57          1.02 \r\n 2013          339           6.913265     -9.58         -16.5          1.02 \r\n 2013          340           8.839118     -12.29        -20            0 \r\n 2013          341           8.297165     -12.25        -22.2          0 \r\n 2013          342           4.148436     -9.09         -14.26         0.76 \r\n 2013          343           9.648304     -14.26        -23.31         2.54 \r\n 2013          344           7.159996     -8.38         -14.72         0 \r\n 2013          345           9.234507     -8.78         -23.97         2.79 \r\n 2013          346           5.906762     -6.062778     -18.53         0 \r\n 2013          347           5.378448     -4.951111     -14.79         0 \r\n 2013          348           5.931866     -8.19         -14.88         0 \r\n 2013          349           3.928149     -12.85        -16.32         0.25 \r\n 2013          350           4.632776     -7.39         -13.62         1.02 \r\n 2013          351           8.087421     -0.4911111    -14.22         0 \r\n 2013          352           7.414508      3.515        -13.93         0 \r\n 2013          353           3.217622     -0.255        -6.647222      0 \r\n 2013          354           1.311893     -6.306111     -9.24          0.25 \r\n 2013          355           2.432912     -5.383889     -11.57         0 \r\n 2013          356           4.562652     -5.51         -18.56         2.03 \r\n 2013          357           8.860666     -16.08        -23.93         0 \r\n 2013          358           4.541188     -11.16        -26.79         0.76 \r\n 2013          359           4.067601     -0.885        -11.17         1.02 \r\n 2013          360           6.913767     -0.5727777    -9.29          0.76 \r\n 2013          361           7.141795      4.551111     -13.04         0 \r\n 2013          362           7.946462      7.48         -10.42         0 \r\n 2013          363           9.511027     -9.187778     -20.86555      0 \r\n 2013          364           3.865263     -14.27        -23.31         0.25 \r\n 2013          365           4.148185     -15.5         -23.57         2.29 \r\n 2014          1             6.080356     -16.39        -19.35         3.05 \r\n 2014          2             9.504375     -16.89        -27.86         0 \r\n 2014          3             7.2938       -2.92         -27.16         0 \r\n 2014          4             4.014506      8.111111E-02               -16.93         0 \r\n 2014          5             8.162189     -16.92        -26.75         0 \r\n 2014          6             9.139822     -21.96        -29            0 \r\n 2014          7             7.179786     -11.6         -23.82         0 \r\n 2014          8             8.410635     -12.87        -20.16         0 \r\n 2014          9             6.300769     -6.588889     -19.43         0 \r\n 2014          10            1.478375     -0.6588889    -7.67          0 \r\n 2014          11            3.603344     -0.6022222    -10.06         0.51 \r\n 2014          12            3.402596      3.213889     -5.732778      0 \r\n 2014          13            9.000663      2.965        -2.782778      0 \r\n 2014          14            2.736252      2.617778     -12.13         0.76 \r\n 2014          15            7.19874      -2.492222     -13.12         0 \r\n 2014          16            4.578844      1.275        -15.41         0.25 \r\n 2014          17            9.734452     -6.902778     -17.73         0 \r\n 2014          18            4.858084      0.5922222    -14.02         1.27 \r\n 2014          19            8.984847      8.47         -9.46          0.51 \r\n 2014          20            3.206869     -0.6388889    -18            0 \r\n 2014          21            6.441017     -12.68        -24.5          1.52 \r\n 2014          22            6.837828     -10.05        -22.41         0.25 \r\n 2014          23            10.74108     -16.06        -24.55         0 \r\n 2014          24            6.560637      2.32         -17.58         0 \r\n 2014          25            10.40921      0.3727778    -13.07         0.76 \r\n 2014          26            3.629871      0.6227778    -19.8          2.03 \r\n 2014          27            10.31992     -18.82        -23.94         0.76 \r\n 2014          28            11.16329     -12.87        -24.97         0 \r\n 2014          29            11.20178      2.332222     -20.63         0 \r\n 2014          30            7.967507     -6.111111E-02               -17.18         0.51 \r\n 2014          31            8.460843     -9.22         -18            2.29 \r\n 2014          32            9.051373     -6.572222     -17.52         1.27 \r\n 2014          33            12.33937     -9.96         -24.23         0.25 \r\n 2014          34            11.25161     -6.28         -17.58         0 \r\n 2014          35            6.37696      -9.85         -16.02         0 \r\n 2014          36            9.965283     -14.69        -21.9          0.76 \r\n 2014          37            12.65166     -15.06        -24.57         0 \r\n 2014          38            13.03416     -9.46         -24.1          0 \r\n 2014          39            10.52833     -7.29         -19.31         0.25 \r\n 2014          40            12.55355     -15.58        -27.01         1.78 \r\n 2014          41            14.03607     -17.81        -29.63         0 \r\n 2014          42            11.05007     -9.9          -32            0 \r\n 2014          43            9.873446     -5.602222     -14.68         0.51 \r\n 2014          44            11.91222      2.387778     -13.08         0.51 \r\n 2014          45            12.89982     -11.35        -19.28         1.52 \r\n 2014          46            6.121234     -3.846111     -19.87         0 \r\n 2014          47            11.14563     -6.402222     -11.05         3.05 \r\n 2014          48            12.10645      2.357778     -6.872778      2.79 \r\n 2014          49            13.73712      6.692778     -3.902222      3.05 \r\n 2014          50            14.00109      8.63         -3.751111      0 \r\n 2014          51            1.664855      2.257222     -8.12          1.02 \r\n 2014          52            15.47507     -4.175        -15.37         18.29 \r\n 2014          53            15.32737     -4.042778     -16.51         0 \r\n 2014          54            15.97828     -7.39         -20.51         0 \r\n 2014          55            13.06688     -8.74         -18.12         0 \r\n 2014          56            16.15739     -12.55        -23.2          1.02 \r\n 2014          57            17.15076     -7.86         -26.8          0 \r\n 2014          58            17.92467     -15.91        -24.8          0 \r\n 2014          59            12.2987      -7.24         -23.62         0.25 \r\n 2014          60            8.677867     -12.64        -22.3          2.03 \r\n 2014          61            17.90936     -19.02        -25.84         3.3 \r\n 2014          62            15.87539     -11.87        -26.04         0 \r\n 2014          63            15.70276     -8.22         -17.56         1.02 \r\n 2014          64            15.27294     -6.738889     -10.77         2.54 \r\n 2014          65            13.56695     -2.273889     -9.23          0 \r\n 2014          66            10.63686      1.055        -5.976111      0 \r\n 2014          67            17.83221     -4.245        -13.49         0 \r\n 2014          68            16.32392      3.81         -12.8          0 \r\n 2014          69            15.80021      11.43         0.58          0 \r\n 2014          70            3.756102      4.183889     -0.9311111     0.25 \r\n 2014          71            11.38667     -0.9022222    -4.49          0.76 \r\n 2014          72            18.51859      13.51        -1.821111      0 \r\n 2014          73            15.86673      7.52          0.1661111     0 \r\n 2014          74            9.787045      1.657778     -3.627222      0 \r\n 2014          75            17.88673     -1.777222     -8.32          1.02 \r\n 2014          76            15.00403      6.513889     -4.998889      0 \r\n 2014          77            9.052126      8.25         -0.2877778     0 \r\n 2014          78            10.46925      4.251111     -3.055         3.05 \r\n 2014          79            19.20699      9.42         -2.132778      0.25 \r\n 2014          80            15.72209      11.52        -4.757778      0 \r\n 2014          81            18.44542     -3.648889     -9.19          0 \r\n 2014          82            17.6397      -1.635        -10.6          0 \r\n 2014          83            11.5493       1.057222     -5.346111      0.51 \r\n 2014          84            16.15501     -2.913889     -9.84          0.76 \r\n 2014          85            18.55416      9.39         -7.66          0 \r\n 2014          86            1.311224      5.737222      0.1372222     0.25 \r\n 2014          87            6.410181      1.857778     -0.9311111     9.65 \r\n 2014          88            22.02148      7.96         -2.921111      0 \r\n 2014          89            17.92564      18.88         1.537778      0 \r\n 2014          90            15.2065       19.41        -5.356111      0.76 \r\n 2014          91            18.89306      5.668889     -6.405         0 \r\n 2014          92            15.92514      7.8          -2.922778      0 \r\n 2014          93            2.64571       4.146111     -2.277778E-02                0 \r\n 2014          94            14.84998      3.992222     -3.046111      0 \r\n 2014          95            22.61511      10.88        -3.95          0 \r\n 2014          96            8.397413      14.13         2.36          0 \r\n 2014          97            12.57392      15.63         2.083889      0 \r\n 2014          98            23.09995      10.31        -0.3538889     0 \r\n 2014          99            20.74808      22.25        -1.478889      0 \r\n 2014          100           21.17585      17.02         3.033889      0 \r\n 2014          101           22.00663      22.21         2.391111      0 \r\n 2014          102           14.64224      25.11         8.32          0 \r\n 2014          103           1.36026       8.86         -0.9222222     0 \r\n 2014          104           18.67323      3.052222     -4.027222      0 \r\n 2014          105           25.07948      4.18         -7.03          0 \r\n 2014          106           9.059364      15.72        -0.155         0 \r\n 2014          107           17.95831      7.2          -2.532778      0 \r\n 2014          108           23.96353      15.75        -3.255         0 \r\n 2014          109           18.33081      25.19         4.782222      0 \r\n 2014          110           15.36394      22.84         11.64         13.462 \r\n 2014          111           14.9401       20.07         5.173889      5.588 \r\n 2014          112           25.64654      16.34         0.885         0 \r\n 2014          113           5.295         10.29         6.108         1.524 \r\n 2014          114           7.99833       11.29         2.693         7.112 \r\n 2014          115           25            21.62         1.43          0 \r\n 2014          116           19.5167       19.16         5.572         0 \r\n 2014          117           4.45167       12.62         4.228         34.54 \r\n 2014          118           3.34167       9.69          6.462         12.95 \r\n 2014          119           4.77667       6.521         1.318         6.096 \r\n 2014          120           3.77333       5.4           1.238         6.604 \r\n 2014          121           8.775         7.712         3.38          1.016 \r\n 2014          122           19.3667       18.09         0.508         0 \r\n 2014          123           22.7          18.9          2.116         0 \r\n 2014          124           18.4667       13.27         4.228         2.794 \r\n 2014          125           25.4333       19.63         5.462         0 \r\n 2014          126           24.0833       21.85         5.684         0 \r\n 2014          127           21.3333       31.4          11.02         0.254 \r\n 2014          128           12.4167       26.07         11.15         1.27 \r\n 2014          129           14.7565       18.78         5.2           0 \r\n 2014          130           8.04667       18.42         3.765         6.858 \r\n 2014          131           13.0767       21.66         7.782         32 \r\n 2014          132           4.365         18.7          7.712         17.27 \r\n 2014          133           13.8547       12.87         4.472         0 \r\n 2014          134           20.5          16.49         0.752         0 \r\n 2014          135           10.2767       8.86          2.622         1.27 \r\n 2014          136           15.9262       11.92         0.145         0 \r\n 2014          137           24.3833       19.03         0.003         0 \r\n 2014          138           27.8333       22.21         3.987         0 \r\n 2014          139           6.88667       20.42         12.05         1.524 \r\n 2014          140           23.8          30.09         12            0 \r\n 2014          141           28.6          24.95         9.76          0 \r\n 2014          142           26.15         25.28         6.986         0 \r\n 2014          143           28.3333       26.97         7.016         0 \r\n 2014          144           23.8167       28            11.35         0 \r\n 2014          145           16.25         26.56         12.74         0 \r\n 2014          146           16.15         29.36         17.13         10.67 \r\n 2014          147           15.0667       24.6          16.25         12.7 \r\n 2014          148           19.3          25.97         14.82         0 \r\n 2014          149           26.2          30.3          13.39         0 \r\n 2014          150           23.7833       32            17.27         0.254 \r\n 2014          151           20.25         31.31         17.87         3.048 \r\n 2014          152           15.5167       30.52         17.46         21.34 \r\n 2014          153           24.2333       26.28         15.82         0 \r\n 2014          154           18.9167       25.63         11.49         7.112 \r\n 2014          155           20.2          23.81         14.22         0 \r\n 2014          156           16.5667       23.91         12.12         0 \r\n 2014          157           22.9333       30.18         14.39         0 \r\n 2014          158           12.3167       23.91         13.91         0 \r\n 2014          159           24.8833       24.79         10.62         0 \r\n 2014          160           16.45         23.41         14.03         0 \r\n 2014          161           14.8333       25.54         14.15         0 \r\n 2014          162           25.0667       28.76         11.37         0 \r\n 2014          163           22.7833       22.61         10.91         0 \r\n 2014          164           26.4          25.52         6.189         0 \r\n 2014          165           8.76167       25.74         14.11         11.94 \r\n 2014          166           23.9667       25.29         14.23         0.508 \r\n 2014          167           11.8567       27.64         13.89         67.56 \r\n 2014          168           17.0667       26.47         15.75         10.92 \r\n 2014          169           19.0833       28.07         17.32         35.05 \r\n 2014          170           8.51833       25.04         18.32         26.16 \r\n 2014          171           24.9333       29.79         18.26         0 \r\n 2014          172           27.2167       29.96         19.09         0 \r\n 2014          173           9.65833       24.04         17.8          22.86 \r\n 2014          174           22            27.12         16.9          0 \r\n 2014          175           25.5667       27.62         14.95         0 \r\n 2014          176           25.3833       27.7          15.51         0 \r\n 2014          177           23.2667       28.37         18.26         4.064 \r\n 2014          178           15.05         26.37         18.74         8.38 \r\n 2014          179           14.6333       28.05         16.39         5.588 \r\n 2014          180           15.1333       26.22         15.45         17.78 \r\n 2014          181           5.33333       22.12         16.2          34.29 \r\n 2014          182           17.5833       22.51         12.32         0.762 \r\n 2014          183           12.4127       21.34         11.37         0 \r\n 2014          184           28.8667       24.13         9.4           0 \r\n 2014          185           27.9          25.54         11.13         0.762 \r\n 2014          186           16.8167       24.33         16.71         6.35 \r\n 2014          187           18.1          31.16         19.33         0 \r\n 2014          188           18            26.98         16.55         0 \r\n 2014          189           26.2167       25.61         14.83         0 \r\n 2014          190           23.5          26.32         11.24         0 \r\n 2014          191           25.7667       27.94         15.59         0 \r\n 2014          192           15.3167       25.84         18.71         0 \r\n 2014          193           8.28          24.34         16.67         38.61 \r\n 2014          194           27.15         26.4          15.28         0 \r\n 2014          195           25.3667       19.95         11.56         0 \r\n 2014          196           18.3168       20.48         9.32          0 \r\n 2014          197           24.9667       23.46         8.45          0 \r\n 2014          198           25.8333       24.7          9.72          0 \r\n 2014          199           23.5667       25.41         12.46         0 \r\n 2014          200           22.7167       25.83         15.44         0 \r\n 2014          201           25.0167       28.47         18.94         0 \r\n 2014          202           21.5833       29.86         20.28         0 \r\n 2014          203           24.65         28.77         16.19         0 \r\n 2014          204           25.4833       26.43         12.52         0 \r\n 2014          205           15.9833       24.99         12.49         5.334 \r\n 2014          206           15.65         25.18         16.91         54.1 \r\n 2014          207           15            27.82         17.93         0 \r\n 2014          208           18.1333       21.68         15.02         0 \r\n 2014          209           17.7757       22.78         12.64         0 \r\n 2014          210           25.25         23.91         10.44         0 \r\n 2014          211           25.1167       25.33         11.19         0 \r\n 2014          212           25.3833       26.4          10.62         0 \r\n 2014          213           24.9333       28.01         12.09         0 \r\n 2014          214           24.8667       27.73         13.26         0 \r\n 2014          215           24.95         28.63         15.96         0 \r\n 2014          216           22.25         28.84         15.79         0 \r\n 2014          217           9.06          23.92         17.59         0 \r\n 2014          218           6.338         19.69         17.48         2.286 \r\n 2014          219           13.59         23.35         16.74         0 \r\n 2014          220           20.78         25.24         15.94         0 \r\n 2014          221           16.43         26.04         15.86         0 \r\n 2014          222           14.96         25.56         15.39         0 \r\n 2014          223           18.67         23.78         13.12         0 \r\n 2014          224           25.27         23.21         10.07         0 \r\n 2014          225           24.99         26.72         10.14         0 \r\n 2014          226           17.64         25.47         11.72         0 \r\n 2014          227           8.95          22.64         16.74         1.27 \r\n 2014          228           21.5          28.06         17.15         0 \r\n 2014          229           22.81         28.62         15.28         0 \r\n 2014          230           23.58         29.4          18.9          1.778 \r\n 2014          231           22.35         27.39         15.4          0 \r\n 2014          232           7.422         24.54         14.65         0.508 \r\n 2014          233           17.5          29.96         20.24         0.508 \r\n 2014          234           18.32         29.76         19.46         0 \r\n 2014          235           14.69         26.78         20.04         48.77 \r\n 2014          236           21.31         31.09         17.71         17.02 \r\n 2014          237           21.07         26.48         17.79         11.94 \r\n 2014          238           20.23         22.91         14.94         0.254 \r\n 2014          239           15.53         22.85         13.61         0.254 \r\n 2014          240           3.108         21.88         16.46         22.86 \r\n 2014          241           13.88         25.82         18.16         36.07 \r\n 2014          242           15.48         25.11         14.37         0 \r\n 2014          243           14.47         29.26         14.02         29.21 \r\n 2014          244           17.09         24.99         14.09         0.762 \r\n 2014          245           22.6          24.59         12.44         2.286 \r\n 2014          246           17.17         27.64         13.12         0 \r\n 2014          247           17.66         30.76         19.06         1.016 \r\n 2014          248           9.07          19.32         8.36          11.94 \r\n 2014          249           22.37         23.51         6.148         0 \r\n 2014          250           22.13         23.06         7.722         0 \r\n 2014          251           5.038         22.31         11.45         2.032 \r\n 2014          252           5.397         21.39         16.59         2.794 \r\n 2014          253           7.042         17.37         8.09          5.588 \r\n 2014          254           11.49         13.17         4.856         0 \r\n 2014          255           8.33          11.13         1.622         9.91 \r\n 2014          256           20.47         15.94        -0.665         0 \r\n 2014          257           16.6          20            6.764         0 \r\n 2014          258           9.93          16.32         3.098         1.778 \r\n 2014          259           20.65         19.53         1.277         0 \r\n 2014          260           19.16         24.79         7.37          0 \r\n 2014          261           19.92         23.26         8.17          0 \r\n 2014          262           17.41         27.14         11.42         6.604 \r\n 2014          263           16.42         27.34         11.34         8.38 \r\n 2014          264           15.44         19.3          7.44          0 \r\n 2014          265           19.26         22.79         4.189         0 \r\n 2014          266           13.64         22.63         9.24          0 \r\n 2014          267           12.45         20.79         11.95         14.73 \r\n 2014          268           12.41         26.2          13.63         0 \r\n 2014          269           15.89         27.6          12.73         0 \r\n 2014          270           13.28         27.64         14.01         0 \r\n 2014          271           15.7          27.67         12.38         0 \r\n 2014          272           10.8          20.14         10.26         0 \r\n 2014          273           9.4           19.66         9.52          4.318 \r\n 2014          274           5.451         20.32         10.71         12.19 \r\n 2014          275           2.617         17.56         6.976         1.27 \r\n 2014          276           5.605         9.04          1.156         0 \r\n 2014          277           14.58         10.18        -0.714         0 \r\n 2014          278           8.36          14.83         0.55          0 \r\n 2014          279           13.96         16.93        -0.28          0 \r\n 2014          280           13.67         17.55         3.804         0 \r\n 2014          281           15.22         19.96         1.096         6.096 \r\n 2014          282           10.98         13.18         1.713         2.286 \r\n 2014          283           13.95         13.04        -1.474         0 \r\n 2014          284           15.94         15.15        -2.953         0 \r\n 2014          285           8.5           15.22         2.886         0 \r\n 2014          286           2.338         11.97         9.56          21.34 \r\n 2014          287           13.23         16.47         4.714         2.794 \r\n 2014          288           15.4          19            1.035         0 \r\n 2014          289           12.86         22.71         1.734         0 \r\n 2014          290           4.78          12.14         4.532         0 \r\n 2014          291           10.06         13.77         1.834         0 \r\n 2014          292           12.28         20.02         2.006         0 \r\n 2014          293           14            19.8          2.481         0 \r\n 2014          294           13.89         17.55         2.056         0 \r\n 2014          295           8.99          17.29         4.532         0 \r\n 2014          296           10.61         19.92         7.45          9.4 \r\n 2014          297           6.424         21.13         8.07          0 \r\n 2014          298           13.07         19.12         3.442         0 \r\n 2014          299           8.53          17.57         1.794         0 \r\n 2014          300           7.302         19.03         5.643         0 \r\n 2014          301           7.588         10.44         2.148         0 \r\n 2014          302           9.5           10.63        -0.088         0 \r\n 2014          303           8.47          13.4          1.217         0 \r\n 2014          304           12.65         4.108        -7.373         0 \r\n 2014          305           11.61         6.743        -7.78          0 \r\n 2014          306           10.51         14.61         0.651         0 \r\n 2014          307           4.306         14.01         5.986         2.54 \r\n 2014          308           11.42         13.98        -1.464         0 \r\n 2014          309           4.178         10.93        -0.928         0 \r\n 2014          310           11.27         6.28         -4.594         0 \r\n 2014          311           8.18          12           -4.818         0 \r\n 2014          312           7.684         6.007        -0.208         0 \r\n 2014          313           5.222         8.61          0.832         0 \r\n 2014          314           4.884         12.9         -4.371         0 \r\n 2014          315           5.105        -4.038        -8.32          0 \r\n 2014          316           7.058        -4.98         -11.54         0 \r\n 2014          317           5.503        -6.105        -12.86         0 \r\n 2014          318           10.57        -4.371        -17            0 \r\n 2014          319           4.449        -5.04         -12.92         0 \r\n 2014          320           10.67        -6.054        -17.85         0 \r\n 2014          321           9.65         -11.77        -16.71         0 \r\n 2014          322           7.772        -7.322        -17.13         0 \r\n 2014          323           6.728        -4.048        -12.7          0 \r\n 2014          324           10.09        -7.09         -18.25         0 \r\n 2014          325           8.85          0.57         -18.23         0 \r\n 2014          326           2.846         10.67         0.165         0 \r\n 2014          327           1.361         10.55        -0.846         0.508 \r\n 2014          328           1.991        -0.846        -8.51          0 \r\n 2014          329           9.17         -0.289        -12.98         0 \r\n 2014          330           5.288        -2.456        -12.35         0 \r\n 2014          331           9.51         -12.01        -24.52         0 \r\n 2014          332           7.255        -2.609        -12.05         0.254 \r\n 2014          333           8.39          4.856        -5.77          1.016 \r\n 2014          334           8.29         -5.588        -15.57         0 \r\n 2014          335           8.2          -10.4         -17.77         0 \r\n 2014          336           8.04         -0.32         -12.59         0 \r\n 2014          337           8.48         -2.466        -12.7          0 \r\n 2014          338           7.566         0.852        -9.01          0 \r\n 2014          339           2.709         0.499        -2.233         0 \r\n 2014          340           7.354         2.754        -4.392         0 \r\n 2014          341           2.5           0.286        -2.973         0 \r\n 2014          342           1.446         1.622        -6.034         2.03 \r\n 2014          343           3.274        -1.818        -8.29          0 \r\n 2014          344           1.647        -1.282        -6.217         0 \r\n 2014          345           1.893        -0.422        -3.398         0 \r\n 2014          346           2.133         3.108        -0.452         0 \r\n 2014          347           2.093         8.36          0.388         0 \r\n 2014          348           1.8205        10.7          7.359         0 \r\n 2014          349           1.548         9.17         -1.636         1.52 \r\n 2014          350           4.184        -1.525        -10.9          7.87 \r\n 2014          351           8.09         -5.71         -12.32         0 \r\n 2014          352           3.891        -4.594        -12.59         0 \r\n 2014          353           1.401        -0.988        -4.736         0 \r\n 2014          354           1.48         -0.219        -2.456         0 \r\n 2014          355           1.5945        2.956        -0.35          0 \r\n 2014          356           1.709         3.036        -0.098         0.76 \r\n 2014          357           4.3           0.6          -0.32          13.46 \r\n 2014          358           3.594         0.327        -3.226         3.05 \r\n 2014          359           6.41          1.783        -3.196         0 \r\n 2014          360           2.438         0.408        -4.918         0 \r\n 2014          361           7.859        -1.454        -13.51         3.05 \r\n 2014          362           8.03         -5.365        -14.67         0.25 \r\n 2014          363           6.845        -7.718        -19.07         0 \r\n 2014          364           8.27         -16.03        -22.74         0 \r\n 2014          365           8.68         -9.1          -22.66         0 \r\n 2015          1             7.824        -2.142        -13.88         0 \r\n 2015          2             4.583        -3.46         -13.8          0 \r\n 2015          3             5.902         0.954        -12.57         0 \r\n 2015          4             8.44         -11.84        -21.07         2.03 \r\n 2015          5             3.641        -14.55        -25.1          0 \r\n 2015          6             6.08         -13.84        -27.83         5.08 \r\n 2015          7             7.813        -18.21        -24.38         0 \r\n 2015          8             5.203        -5.994        -23.99         0 \r\n 2015          9             8.58         -15.39        -21.47         3.3 \r\n 2015          10            6.581        -3.176        -21.8          0 \r\n 2015          11            7.098        -7.09         -15.95         0 \r\n 2015          12            9.58         -9.81         -23.21         0.25 \r\n 2015          13            9.68         -9.72         -24.07         0 \r\n 2015          14            5.938        -5.061        -9.78          0 \r\n 2015          15            9.36          0.813        -10.03         0 \r\n 2015          16            9.55          2.541        -8.52          0 \r\n 2015          17            5.12          3.179        -0.684         0 \r\n 2015          18            9.53          4.138        -3.176         0 \r\n 2015          19            6.652         3.401        -2.781         0 \r\n 2015          20            2.27          1.925        -0.401         2.54 \r\n 2015          21            3.65         -0.249        -3.044         0.51 \r\n 2015          22            3.082        -2.021        -5.76          0 \r\n 2015          23            5.045         1.541        -6.866         0 \r\n 2015          24            8.38          4.209        -4.98          0 \r\n 2015          25            2.115         1.014        -3.135         2.29 \r\n 2015          26            9.6           7.37         -2.76          1.02 \r\n 2015          27            8.15          3.34         -2.466         0 \r\n 2015          28            3.448         1.986        -2.294         0 \r\n 2015          29            4.782         0.094        -8.63          0 \r\n 2015          30            10.9         -1.14         -11.68         0 \r\n 2015          31            2.764         0.246        -5.932         0 \r\n 2015          32            7.299        -3.378        -17.42         6.35 \r\n 2015          33            11.3         -12.66        -23.55         4.83 \r\n 2015          34            5.923        -8.54         -19.25         0 \r\n 2015          35            10.45        -9.48         -21.07         2.29 \r\n 2015          36            12.06        -10.38        -24.32         0 \r\n 2015          37            11.91        -0.127        -13.18         0 \r\n 2015          38            11.27         4.835        -5.487         0 \r\n 2015          39            6.538         1.196        -1.687         0.25 \r\n 2015          40            6.44         -0.866        -3.257         1.27 \r\n 2015          41            3.195         0.994        -4.798         0 \r\n 2015          42            10.36         1.035        -16.42         1.27 \r\n 2015          43            10.88        -11.09        -18.74         0.51 \r\n 2015          44            12.36         1.763        -11.6          0 \r\n 2015          45            12.3         -7.373        -17.1          0 \r\n 2015          46            6.009        -12.19        -17.44         0 \r\n 2015          47            4.761        -4.534        -13.16         0 \r\n 2015          48            11.03        -9.5          -16.34         0 \r\n 2015          49            13.15        -14.69        -21.19         0 \r\n 2015          50            14.37        -10.09        -22.46         0 \r\n 2015          51            8.86         -0.118        -12.57         0.76 \r\n 2015          52            8.49         -1.038        -16.01         0 \r\n 2015          53            15           -13.82        -20.38         0 \r\n 2015          54            15.52        -7.942        -23.13         0 \r\n 2015          55            11.66         2.674        -10.17         0 \r\n 2015          56            8.5          -7.171        -17.3          0.25 \r\n 2015          57            16.37        -15.77        -25.79         4.57 \r\n 2015          58            16.72        -12.39        -29.78         0 \r\n 2015          59            15.8         -8.75         -24.17         0 \r\n 2015          60            15.34        -2.648        -14.81         0 \r\n 2015          61            10.89        -4.493        -17.61         0 \r\n 2015          62            7.125        -0.493        -13.43         0.07 \r\n 2015          63            16.08        -8.63         -18.21         0.01 \r\n 2015          64            17.69        -8.85         -21.01         0.03 \r\n 2015          65            16.79         8.25         -14.11         0 \r\n 2015          66            17.46         6.694        -2.012         0 \r\n 2015          67            15.21         9.09         -0.604         2.45 \r\n 2015          68            17.61         11.49        -1.09          0.56 \r\n 2015          69            17.49         17.21         0.398         0 \r\n 2015          70            18.1          12.65        -1.048         0 \r\n 2015          71            15.27         18.01         1.844         0 \r\n 2015          72            17.7          17.85         1.42          0 \r\n 2015          73            19.02         15.66        -0.461         0 \r\n 2015          74            13.71         18.82         1.562         0 \r\n 2015          75            15.59         23.64         2.492         0 \r\n 2015          76            18.7          6.714        -1.09          0 \r\n 2015          77            7.371         6.199        -0.067         0 \r\n 2015          78            9.88          8.73          0.126         0.05 \r\n 2015          79            18.89         15.42        -2.436         0 \r\n 2015          80            19.82         9.15         -1.312         0 \r\n 2015          81            14.52         8.41         -1.353         0 \r\n 2015          82            7.417         2.158        -2.304         4.79 \r\n 2015          83            5.294         3.159        -3.094         0.01 \r\n 2015          84            11.21         5.583        -1.262         12.06 \r\n 2015          85            15.26         3.188        -3.774         0 \r\n 2015          86            19.09         2.208        -6.928         0 \r\n 2015          87            20            7.056        -3.662         0.03 \r\n 2015          88            17.16         13.33        -0.907         1.69 \r\n 2015          89            19.37         22.06        -1.544         0 \r\n 2015          90            21.7          21.29        -0.24          0 \r\n 2015          91            21.03         26.9          4.654         9.4 \r\n 2015          92            18.82         17.5          4.502         11.18 \r\n 2015          93            20.45         6.038        -3.034         0 \r\n 2015          94            22.19         17.33        -2.953         0 \r\n 2015          95            19.69         20.65        -0.118         0 \r\n 2015          96            4.692         12.8          3.36          0 \r\n 2015          97            2.916         5.724         3.017         6.604 \r\n 2015          98            4.838         7.722         3.058         0.762 \r\n 2015          99            3.112         6.532        -0.401         20.07 \r\n 2015          100           22.93         10.06         0.064         0.508 \r\n 2015          101           22.97         20.68         0.631         0 \r\n 2015          102           22.62         21.95         7.642         3.048 \r\n 2015          103           24.68         17.38         3.331         0 \r\n 2015          104           22.51         21.23         0.205         0 \r\n 2015          105           16.21         19.48         2.643         0 \r\n 2015          106           16.68         22.32         8.79          0 \r\n 2015          107           20.38         25.5          6.774         0 \r\n 2015          108           4.333         17.25         11.22         10.92 \r\n 2015          109           7.705         17.15         5.724         12.95 \r\n 2015          110           14.03         7.782         1.541         0 \r\n 2015          111           21.94         9.78         -0.461         0 \r\n 2015          112           26.08         10.67        -2.132         0 \r\n 2015          113           24.56         14.72        -4.696         0 \r\n 2015          114           3.533         8.27          3.784         14.73 \r\n 2015          115           14.75         13.13         2.148         0 \r\n 2015          116           26.19         16.79        -0.412         0 \r\n 2015          117           26.44         19.48        -0.33          0 \r\n 2015          118           20.63         21.48         2.278         0 \r\n 2015          119           26.63         20.6          4.734         0 \r\n 2015          120           25.96         20.97         1.217         0 \r\n 2015          121           7.92          18.36         6.29          0 \r\n 2015          122           24.58         25.43         7.561         0 \r\n 2015          123           22.85         30.68         12.64         3.556 \r\n 2015          124           19.92         20.64         10.71         0.254 \r\n 2015          125           5.404         14.18         12.18         3.302 \r\n 2015          126           15.39         24.52         13.51         1.27 \r\n 2015          127           13.66         25.82         15.1          14.99 \r\n 2015          128           24.19         18.34         8.39          0 \r\n 2015          129           25.64         21.88         4.704         0 \r\n 2015          130           5.545         16.76         13.14         10.92 \r\n 2015          131           5.802         15.7          5.057         0 \r\n 2015          132           26.51         16.88         3.946         0 \r\n 2015          133           27.12         22.74         6.168         0 \r\n 2015          134           2.78          14.2          9.24          29.97 \r\n 2015          135           14.47         20.72         11.38         0.254 \r\n 2015          136           14.8          26.62         15.52         0.508 \r\n 2015          137           14.09         22.59         8.65          6.35 \r\n 2015          138           11.19         8.63          2.026         0 \r\n 2015          139           21.14         11.69         1.906         0 \r\n 2015          140           8.62          10.97         4.432         5.08 \r\n 2015          141           27.82         23.31         3.118         0 \r\n 2015          142           23.55         23.32         4.411         0 \r\n 2015          143           16.07         23.86         12.36         0 \r\n 2015          144           3.356         17.99         14.26         12.45 \r\n 2015          145           19.22         25.13         15.02         0 \r\n 2015          146           7.767         17.15         13.49         6.35 \r\n 2015          147           26.17         28.04         11.72         0 \r\n 2015          148           22.64         28.22         14.63         0 \r\n 2015          149           9.66          24.21         12.25         11.18 \r\n 2015          150           15.77         15.83         9.47          0 \r\n 2015          151           27.36         19.64         8.08          0 \r\n 2015          152           28.94         22.25         9.06          0 \r\n 2015          153           27.32         24.32         11.88         0 \r\n 2015          154           16.85         25.89         14.21         11.43 \r\n 2015          155           21.76         26.81         14.48         0 \r\n 2015          156           25.61         29            15.3          0 \r\n 2015          157           14.98         26.42         15.26         5.334 \r\n 2015          158           22.91         26.33         15.67         10.92 \r\n 2015          159           26            28.83         14.86         0 \r\n 2015          160           26.91         34.72         15.41         0 \r\n 2015          161           27.2          29.68         19.31         0 \r\n 2015          162           4.19          20.99         15.26         22.86 \r\n 2015          163           8.6           19.42         13.79         0 \r\n 2015          164           13.86         24.05         16.05         1.016 \r\n 2015          165           19.33         28.45         15.88         0 \r\n 2015          166           10.88         22.8          13.28         10.92 \r\n 2015          167           27.28         25            12.02         0 \r\n 2015          168           18.77         26.88         16.53         11.18 \r\n 2015          169           22.88         24.19         13.53         0 \r\n 2015          170           27.62         27.06         13.08         0 \r\n 2015          171           15.192        27.72         16.49         25.65 \r\n 2015          172           24.27         29.28         15.38         0 \r\n 2015          173           20.77         28.18         15.83         23.88 \r\n 2015          174           16.79         23.98         12.95         0 \r\n 2015          175           16.56         23.86         14.17         0 \r\n 2015          176           22.75         26.46         17.8          0 \r\n 2015          177           16.57         24.41         15.74         16.51 \r\n 2015          178           25.96         27.52         12.8          0 \r\n 2015          179           23.9          26.54         16.14         0.254 \r\n 2015          180           21.43         26.78         15.53         0 \r\n 2015          181           14.07         24.74         15.5          0 \r\n 2015          182           9.07          19.52         11.07         0 \r\n 2015          183           17.6          22.08         9.56          0 \r\n 2015          184           22.9          25.5          9.05          0 \r\n 2015          185           22.3          26.92         11.95         0 \r\n 2015          186           21.1          30            15.18         0 \r\n 2015          187           13.84         26.02         13.68         5.588 \r\n 2015          188           26.95         20.89         9.31          0 \r\n 2015          189           21.17         23.8          8.79          0 \r\n 2015          190           25.29         26.37         11.48         0 \r\n 2015          191           22.97         28.22         14.8          0 \r\n 2015          192           20.3          29.02         18.81         0 \r\n 2015          193           19.8          33            20.53         0 \r\n 2015          194           26.28         32.18         20.3          0 \r\n 2015          195           25.43         30.2          17.46         0 \r\n 2015          196           14.15         27.34         17.16         1.016 \r\n 2015          197           10.6          27.38         18.98         17.53 \r\n 2015          198           26.36         33.03         18.08         0 \r\n 2015          199           25.26         29.62         19.44         0 \r\n 2015          200           25.31         28.2          14.32         0 \r\n 2015          201           21.39         26.39         14.34         0.762 \r\n 2015          202           27.2          26.96         11.29         0 \r\n 2015          203           24.44         27.97         12.56         0 \r\n 2015          204           26.8          29.15         13.19         0 \r\n 2015          205           16.73         29.81         18.88         13.72 \r\n 2015          206           22.9          30.38         17.37         0 \r\n 2015          207           25.55         31.18         18.47         17.02 \r\n 2015          208           10.57         27.01         19.22         1.524 \r\n 2015          209           13.08         28.27         18.88         21.84 \r\n 2015          210           27.75         26.65         13.73         0 \r\n 2015          211           27.07         29.1          12.68         0 \r\n 2015          212           27.34         27.33         14.88         0 \r\n 2015          213           22.68         29.82         13.55         0 \r\n 2015          214           26            30.33         16.21         0 \r\n 2015          215           27            25.63         11.17         0 \r\n 2015          216           21.65         26.49         10.77         0 \r\n 2015          217           19.54         26.44         13.32         0 \r\n 2015          218           17.65         27.24         15.54         0 \r\n 2015          219           23.26         28.3          17.01         0 \r\n 2015          220           16.41         29.49         16.9          3.81 \r\n 2015          221           19.63         28.7          17.57         6.604 \r\n 2015          222           22.77         25.47         14.82         5.334 \r\n 2015          223           24.93         27.74         13.25         1.524 \r\n 2015          224           24.49         28.33         11.6          0.508 \r\n 2015          225           18.15         27.62         16.06         0 \r\n 2015          226           23.14         29.78         18.9          0 \r\n 2015          227           24.1          28.48         16.64         0 \r\n 2015          228           18.64         29            18.74         8.89 \r\n 2015          229           8.31          23.13         17.77         9.4 \r\n 2015          230           4.821         19.57         12.75         6.35 \r\n 2015          231           9.69          17.71         11.27         2.54 \r\n 2015          232           24.8          24.35         7.833         6.604 \r\n 2015          233           22.62         25.5          14.13         3.81 \r\n 2015          234           18.79         27.08         14.86         3.302 \r\n 2015          235           22.53         19.98         9.27          2.54 \r\n 2015          236           24.63         19.94         7.4           0.762 \r\n 2015          237           24.71         21.81         5.724         0.762 \r\n 2015          238           22.1          25.11         5.421         0.508 \r\n 2015          239           9.92          22.63         10.59         0.508 \r\n 2015          240           1.77          16.82         14.44         1.524 \r\n 2015          241           11.39         23.49         12.55         1.778 \r\n 2015          242           12.6          23.15         11.84         1.27 \r\n 2015          243           19.43         28.78         15.68         0.762 \r\n 2015          244           18.29         29.07         17.66         0.508 \r\n 2015          245           21.22         29.05         20.04         2.794 \r\n 2015          246           19.82         31.98         18.83         0 \r\n 2015          247           18.29         31.42         19.64         0 \r\n 2015          248           16.11         31.39         20.83         0 \r\n 2015          249           11.84         31.15         20.45         9.14 \r\n 2015          250           15.55         28.92         19.44         0 \r\n 2015          251           16.13         25.51         13            24.13 \r\n 2015          252           18            25.65         9.08          2.54 \r\n 2015          253           16.4          25.01         11.35         0.508 \r\n 2015          254           17.98         18.81         6.875         0 \r\n 2015          255           20            20.68         3.966         0 \r\n 2015          256           20.59         23.85         4.744         0 \r\n 2015          257           16.52         27.5          13.05         0 \r\n 2015          258           18.55         29.96         17.01         0 \r\n 2015          259           15.44         30.88         17.23         0 \r\n 2015          260           7.815         26.25         15.51         2.54 \r\n 2015          261           8.97          20.01         9.03          0.254 \r\n 2015          262           19.79         21.04         6.37          0.254 \r\n 2015          263           17.38         24.63         5.482         0 \r\n 2015          264           16.91         26.66         11.86         0 \r\n 2015          265           12.97         29.84         16.13         0 \r\n 2015          266           5.455         23.56         17.24         19.05 \r\n 2015          267           7.309         25.26         15.51         0.508 \r\n 2015          268           12.61         26.73         12.94         0 \r\n 2015          269           17.67         28.25         11.53         0 \r\n 2015          270           17.84         27.96         10.84         0 \r\n 2015          271           11.34         27.35         15.08         0.762 \r\n 2015          272           18.06         22.3          5.522         5.334 \r\n 2015          273           18.03         20.14         1.652         0 \r\n 2015          274           17.8          18.74         1.137         0 \r\n 2015          275           17.69         18.26         3.422         0 \r\n 2015          276           16.56         17.79         3.502         0 \r\n 2015          277           16.74         16.89         1.47          0 \r\n 2015          278           15.69         22.52         1.298         0 \r\n 2015          279           7.547         22.07         8.2           0 \r\n 2015          280           14.74         24.74         5.856         0 \r\n 2015          281           10.79         22.57         10.5          0 \r\n 2015          282           15.87         18.3          2.572         0 \r\n 2015          283           14.83         23.32         2.855         0 \r\n 2015          284           15.36         30.45         10.56         0 \r\n 2015          285           10.03         18.86         8.77          0 \r\n 2015          286           14.5          19.26         1.783         0 \r\n 2015          287           14.85         21.08         0.145         0 \r\n 2015          288           15.05         17.05         4.633         0 \r\n 2015          289           11.94         8.97         -3.104         0 \r\n 2015          290           14.26         13.42        -5.71          0 \r\n 2015          291           14.06         18.83        -1.2           0 \r\n 2015          292           10.62         25.54         9             0 \r\n 2015          293           11.7          23.83         9.3           0 \r\n 2015          294           9.6           18.14         2.087         0 \r\n 2015          295           7.869         15.14        -1.353         0 \r\n 2015          296           2.471         15.5          9.62          6.604 \r\n 2015          297           9.77          13.42         1.288         0.254 \r\n 2015          298           12.82         16.16        -2.082         0 \r\n 2015          299           10.44         16.25         3.29          0 \r\n 2015          300           3.005         10.93         6.996         9.91 \r\n 2015          301           2.409         8.61          0.286         0.254 \r\n 2015          302           5.677         8.23          1.176         0 \r\n 2015          303           10.82         12.16         0.327         1.778 \r\n 2015          304           3.279         9.56          3.804         7.62 \r\n 2015          305           10.88         18.74         2.512         0 \r\n 2015          306           10.88         20.9          6.067         0 \r\n 2015          307           10.06         19.3          5.209         0 \r\n 2015          308           2.782         16.38         10.65         0 \r\n 2015          309           6.692         21.91         3.927         0 \r\n 2015          310           10.63         10.88        -2.204         0 \r\n 2015          311           11.31         10.75        -2.73          0 \r\n 2015          312           11.15         14.17        -0.188         0 \r\n 2015          313           10.9          15.65         0.772         0 \r\n 2015          314           7.401         15.14        -0.28          0 \r\n 2015          315           2.311         13            2.664         18.29 \r\n 2015          316           9.78          8.02         -0.756         1.778 \r\n 2015          317           10.78         7.53         -2.082         0 \r\n 2015          318           10.21         15.4         -0.502         0 \r\n 2015          319           9.08          14.76         3.179         0 \r\n 2015          320           1.115         10.99         7.561         5.588 \r\n 2015          321           1.1565        13.03         9.27          9.4 \r\n 2015          322           1.198         13.7          2.683         8.89 \r\n 2015          323           9.58          3.058        -3.348         0 \r\n 2015          324           2.036        -0.633        -5.791         0 \r\n 2015          325           10.26        -4.554        -19.56         0 \r\n 2015          326           9.11         -2.669        -17.09         0 \r\n 2015          327           9.6           0.327        -12.01         0.762 \r\n 2015          328           9.21          3.401        -7.87          0 \r\n 2015          329           7.081         10.9          2.026         0 \r\n 2015          330           5.901         2.208        -3.58          13.97 \r\n 2015          331           4.721        -3.439        -6.906         0 \r\n 2015          332           8.41         -0.118        -9.93          0.254 \r\n 2015          333           2.546        -0.098        -3.986         0 \r\n 2015          334           1.664        -0.026        -2             5.334 \r\n 2015          335           5.169        -0.37         -3.885         7.87 \r\n 2015          336           4.666        -0.036        -5.203         0.25 \r\n 2015          337           8.99         -0.624        -9.09          0 \r\n 2015          338           8.87          5.624        -5.264         0 \r\n 2015          339           6.75          6.491         0.772         0 \r\n 2015          340           1.736         2.997        -1.392         0.25 \r\n 2015          341           6.295         6.905        -2.122         0 \r\n 2015          342           2.525         6.652        -0.108         0 \r\n 2015          343           7.084         10.62        -1.413         0.25 \r\n 2015          344           4.901         9.83          0.094         0 \r\n 2015          345           4.274         5.785        -0.907         1.52 \r\n 2015          346           2.929         6.39          0.67          0 \r\n 2015          347           2.763         6.067         3.118         15.49 \r\n 2015          348           2.597         3.775        -0.047         32.51 \r\n 2015          349           2.027         2.168        -0.604         13.72 \r\n 2015          350           1.361         5.664        -4.048         1.52 \r\n 2015          351           6.881        -1.069        -8.19          0 \r\n 2015          352           5.181        -2.912        -12.11         0 \r\n 2015          353           7.603        -0.098        -13.53         0 \r\n 2015          354           3.965         6.248        -1.535         0 \r\n 2015          355           1.074        -0.442        -2.851         0 \r\n 2015          356           2.391         1.51         -4.026         0 \r\n 2015          357           3.2455        2.249        -0.958         2.29 \r\n 2015          358           4.1          -0.886        -4.818         10.92 \r\n 2015          359           4.134        -2.284        -6.745         3.05 \r\n 2015          360           2.269        -0.846        -2.638         6.86 \r\n 2015          361           9.23         -2.162        -14.28         1.52 \r\n 2015          362           2.274        -5.628        -13.69         0 \r\n 2015          363           5.795        -4.534        -7.636         12.95 \r\n 2015          364           6.881        -5.466        -10.7          0.25 \r\n 2015          365           7.778        -6.602        -16.75         0.51 \r\n 2016          1             7.509        -2.264        -12.39         0 \r\n 2016          2             8.86         -3.703        -14.58         0 \r\n 2016          3             5.101        -3.56         -9.77          0 \r\n 2016          4             5.461        -5.67         -9.92          0 \r\n 2016          5             8.1          -2.982        -10.97         0 \r\n 2016          6             4.298        -0.522        -6.258         0 \r\n 2016          7             4.252         0.368        -1.292         2.54 \r\n 2016          8             3.758        -0.078        -9.18          6.6 \r\n 2016          9             7.857        -9.08         -22.91         3.05 \r\n 2016          10            9.37         -17.75        -24.62         0 \r\n 2016          11            5.307        -6.947        -22.56         0 \r\n 2016          12            9.4          -15.79        -21.58         0 \r\n 2016          13            8.87         -3.499        -15.81         0 \r\n 2016          14            9.45          2.268        -8.85          0 \r\n 2016          15            7.114        -4.96         -16.77         0 \r\n 2016          16            6.33         -13.66        -23.52         0.25 \r\n 2016          17            9.98         -21.47        -26.52         0.51 \r\n 2016          18            6.983        -15.61        -25.49         0 \r\n 2016          19            6.595        -12.9         -19.7          0 \r\n 2016          20            6.009        -7.434        -13            1.27 \r\n 2016          21            9.84         -1.232        -10            0 \r\n 2016          22            7.412        -5.628        -10.24         0.76 \r\n 2016          23            6.747        -4.938        -9.87          0 \r\n 2016          24            5.516        -1.616        -4.96          0 \r\n 2016          25            2.908        -2.963        -6.268         0 \r\n 2016          26            6.011        -3.46         -6.44          2.03 \r\n 2016          27            8.65          0.631        -11.13         0 \r\n 2016          28            6.874         1.024        -4.938         0.25 \r\n 2016          29            10.02         0.489        -6.46          0 \r\n 2016          30            7.902         2.106        -6.45          0 \r\n 2016          31            9.02          2.734        -4.048         2.03 \r\n 2016          32            10.26         4.775        -7.678         0 \r\n 2016          33            5.624        -0.644        -3.774         1.02 \r\n 2016          34            11.7         -3.317        -16.52         20.32 \r\n 2016          35            9.17         -3.723        -16.67         0 \r\n 2016          36            9.28         -3.642        -18.74         0 \r\n 2016          37            8.87         -0.32         -4.412         0.25 \r\n 2016          38            10.96         1.925        -8.12          0 \r\n 2016          39            9.04         -8.03         -13.23         0.25 \r\n 2016          40            12.77        -9.79         -15.81         0 \r\n 2016          41            8.67         -11.71        -17.3          0 \r\n 2016          42            10.83        -10.35        -21.91         0.76 \r\n 2016          43            13.13        -9.67         -19.64         0.25 \r\n 2016          44            9.33         -12.19        -22.03         0 \r\n 2016          45            7.706        -7.474        -12.35         1.52 \r\n 2016          46            9.82          0.975        -8.04          1.02 \r\n 2016          47            5.614         0.185        -3.905         0.51 \r\n 2016          48            7.662        -0.897        -7.627         0 \r\n 2016          49            10.17         3.27         -2.72          0.25 \r\n 2016          50            10.03         8.23          1.622         0 \r\n 2016          51            11.24         4.714        -0.573         0 \r\n 2016          52            7.618         3.239        -0.907         0 \r\n 2016          53            3.37          1.541        -1.21          2.03 \r\n 2016          54            3.582         3.644        -0.391         0 \r\n 2016          55            3.618         1.46         -1.312         0 \r\n 2016          56            4.843        -1.1          -4.006         0 \r\n 2016          57            11.87         5.442        -2.609         0 \r\n 2016          58            11.98         14.88        -1.596         0 \r\n 2016          59            5.704         5.684        -1.474         0 \r\n 2016          60            4.803         2.188        -6.076         0.25 \r\n 2016          61            13.38        -6.086        -17.66         8.13 \r\n 2016          62            11.94        -2.992        -17.77         0 \r\n 2016          63            7.22         -0.34         -5.142         0.25 \r\n 2016          64            6.184         2.168        -3.439         0.25 \r\n 2016          65            7.964         3.058        -2.021         1.78 \r\n 2016          66            11.85         15.69        -1.171         0 \r\n 2016          67            9.14          19.49         5.34          0 \r\n 2016          68            11.19         20.3          4.29          0.25 \r\n 2016          69            6.338         9.76         -0.866         0.25 \r\n 2016          70            10.44         9.44         -2.912         0 \r\n 2016          71            13.75         19.57        -2.051         0 \r\n 2016          72            8.6           16.89         3.632         0 \r\n 2016          73            3.787         10.49         7.076         6.35 \r\n 2016          74            7.203         16.92         8.51          1.78 \r\n 2016          75            6.238         15.69         6.552         5.08 \r\n 2016          76            13.83         11.04         1.896         9.4 \r\n 2016          77            17.83         10.56        -3.966         0.51 \r\n 2016          78            6.746         2.35         -5.081         0 \r\n 2016          79            6.5           2.208        -1.828         1.27 \r\n 2016          80            13.56         3.734        -5.061         3.3 \r\n 2016          81            17.33         15.48        -4.818         0 \r\n 2016          82            11.32         16.49         4.956         0 \r\n 2016          83            1.224         8.87         -1.738         0 \r\n 2016          84            20.71         0.711        -5.406         22.35 \r\n 2016          85            17.98         9.48         -6.846         0.25 \r\n 2016          86            6.477         9.82          2.168         1.27 \r\n 2016          87            8.11          6.996        -1.069         3.05 \r\n 2016          88            20.46         14.88        -3.864         0 \r\n 2016          89            13.38         17.15         3.28          0 \r\n 2016          90            2.424         10.48         5.946         6.35 \r\n 2016          91            7.459         8.97          3.694         12.45 \r\n 2016          92            15.49         5.522        -0.948         5.08 \r\n 2016          93            21.59         4.754        -3.054         0 \r\n 2016          94            18.87         24.47        -1.554         0 \r\n 2016          95            21.64         6.875        -2.973         0 \r\n 2016          96            5.691         7.218        -3.338         1.778 \r\n 2016          97            12.37         12.11         1.309         0 \r\n 2016          98            6.672         6.642         0.762         0.508 \r\n 2016          99            19.85         3.522        -5.791         0 \r\n 2016          100           22.56         8.05         -9.59          0 \r\n 2016          101           12.43         15.39         2.693         1.524 \r\n 2016          102           23.77         7.178        -4.26          0 \r\n 2016          103           19.27         14.55        -8.71          0 \r\n 2016          104           21.88         22.83         5.038         0 \r\n 2016          105           22.07         23.52         7.43          0 \r\n 2016          106           19.08         24.41         7.975         0 \r\n 2016          107           22.27         26.41         11.27         0 \r\n 2016          108           13.8          25.28         11.26         0 \r\n 2016          109           11.2          25.7          13.3          1.27 \r\n 2016          110           10.57         18.71         8.93          0 \r\n 2016          111           5.066         14.89         7.188         9.91 \r\n 2016          112           19.73         19.4          4.614         0 \r\n 2016          113           18.18         18.31         6.623         0 \r\n 2016          114           20.67         23.43         3.058         0 \r\n 2016          115           9.88          26.5          12.36         0.508 \r\n 2016          116           14.68         17.36         7.561         0 \r\n 2016          117           9.37          15.71         5.684         0 \r\n 2016          118           3.942         7.551         4.674         13.21 \r\n 2016          119           5.03          7.006         4.25          0.508 \r\n 2016          120           8.07          8.21          4.149         0 \r\n 2016          121           1.679         6.774         4.664         19.56 \r\n 2016          122           6.886         11.37         4.594         1.524 \r\n 2016          123           16.61         16.89         1.864         0 \r\n 2016          124           23.15         20.02         3.098         0 \r\n 2016          125           27.17         19.76         5.937         0 \r\n 2016          126           25.34         23.79         1.156         0 \r\n 2016          127           26.2          31.24         7.178         0 \r\n 2016          128           17.77         20.77         5.824         0.508 \r\n 2016          129           23.23         23.03         4.876         0 \r\n 2016          130           3.171         15.69         11.89         23.11 \r\n 2016          131           9.68          19.42         10.68         0 \r\n 2016          132           5.759         15.15         8.69          1.778 \r\n 2016          133           15.71         14.35         4.876         0 \r\n 2016          134           9.56          12.14         3.34          2.794 \r\n 2016          135           25.47         12.38         0.145         0 \r\n 2016          136           24.05         18.07        -1.474         0 \r\n 2016          137           18.88         19.68         4.452         0.254 \r\n 2016          138           27.21         19.11         5.542         0 \r\n 2016          139           25.95         20.48         2.268         0 \r\n 2016          140           21.56         23.02         7.843         0 \r\n 2016          141           19.35         23.23         7.419         0 \r\n 2016          142           26.53         26.29         6.36          0 \r\n 2016          143           27.86         29.56         7.782         0 \r\n 2016          144           6.826         23.59         16.29         13.21 \r\n 2016          145           21.99         26.02         14.7          0 \r\n 2016          146           15.46         27.02         16.46         1.778 \r\n 2016          147           23.89         26.95         13.44         24.89 \r\n 2016          148           14.2          23.7          15.04         5.08 \r\n 2016          149           14.17         22.47         15.86         7.366 \r\n 2016          150           24.12         26.44         14.07         0 \r\n 2016          151           24.22         30.11         13.38         19.3 \r\n 2016          152           13.52         23.82         13.9          1.27 \r\n 2016          153           26.14         22.35         11.17         0 \r\n 2016          154           27.52         26.18         8.85          0 \r\n 2016          155           16.86         30.21         13.82         9.91 \r\n 2016          156           23.09         23.02         11.96         0 \r\n 2016          157           26.44         29.36         10.69         0 \r\n 2016          158           21.151        22.92         11.63         0 \r\n 2016          159           29.88         23.07         9.85          0 \r\n 2016          160           20.43         27.29         10.06         8.64 \r\n 2016          161           26.32         33.88         18.31         0 \r\n 2016          162           26.16         35.38         18.83         25.4 \r\n 2016          163           20.34         33.38         19.38         0 \r\n 2016          164           26.83         32.62         20.56         0 \r\n 2016          165           19.11         29.4          19.58         0 \r\n 2016          166           16.01         30.85         17.14         13.46 \r\n 2016          167           29.27         29.02         16.77         0 \r\n 2016          168           26.84         29.09         14.44         0 \r\n 2016          169           25.93         29.72         16.91         0 \r\n 2016          170           19.95         29.4          18.67         0 \r\n 2016          171           28.14         31.26         18.06         0 \r\n 2016          172           29.16         27.22         15.17         1.27 \r\n 2016          173           29.08         29.5          11.76         0 \r\n 2016          174           24.29         30.05         16.22         17.78 \r\n 2016          175           27.36         23.7          13.78         0 \r\n 2016          176           22.92         27.97         14.15         0 \r\n 2016          177           23.59         31.58         21.73         0.254 \r\n 2016          178           29.8          30.23         16.58         0 \r\n 2016          179           28.6          26.35         15.36         0 \r\n 2016          180           24.653        25.34         11.68         0 \r\n 2016          181           19.001        24.05         12.64         0 \r\n 2016          182           22.87         26.78         13.08         0 \r\n 2016          183           25.9          24.17         9.22          0 \r\n 2016          184           23.1          23.33         11.17         0 \r\n 2016          185           29.38         24.43         9.7           0 \r\n 2016          186           11.83         23.67         12.85         0 \r\n 2016          187           25.53         30.65         17.45         0 \r\n 2016          188           25.16         28.25         17.73         0.508 \r\n 2016          189           22.12         28.22         17.19         14.73 \r\n 2016          190           29.28         25.47         14.63         0 \r\n 2016          191           28.38         27.62         12.64         0 \r\n 2016          192           10.55         26.76         17.06         22.86 \r\n 2016          193           24.29         30.5          18.16         18.54 \r\n 2016          194           26.46         27.44         17.92         2.032 \r\n 2016          195           17.87         27.91         16.7          0.254 \r\n 2016          196           27.18         25.43         13.9          0 \r\n 2016          197           22.54         23.92         11.82         0 \r\n 2016          198           23.99         25.46         11.5          0 \r\n 2016          199           17.72         27.91         16.25         46.23 \r\n 2016          200           24.65         28.86         15.06         0 \r\n 2016          201           6.724         24.82         19.39         18.8 \r\n 2016          202           18.75         31.95         19.7          0 \r\n 2016          203           22.68         32.37         23.62         0 \r\n 2016          204           19.28         31.54         22.64         2.54 \r\n 2016          205           8.34          29.28         23.62         3.81 \r\n 2016          206           23.37         27.4          17.99         0 \r\n 2016          207           28.13         28.6          14.52         0 \r\n 2016          208           26.15         30.4          15.84         0 \r\n 2016          209           17.48         27.43         16.38         0 \r\n 2016          210           16.64         23.58         15.79         0 \r\n 2016          211           9.08          21.81         15.27         0.508 \r\n 2016          212           23.35         27.78         15.12         0 \r\n 2016          213           20.04         26.56         15.4          0 \r\n 2016          214           18.85         26.74         18.63         0 \r\n 2016          215           16.15         28.24         16.53         0 \r\n 2016          216           25.01         29.88         16.64         0 \r\n 2016          217           17.98         30.68         16.48         0.508 \r\n 2016          218           26.28         24.29         12.79         0 \r\n 2016          219           25.31         25.59         11.41         0 \r\n 2016          220           18.48         25.25         12.28         0 \r\n 2016          221           19.2          26.48         13.21         0 \r\n 2016          222           21.74         29.47         16.82         0 \r\n 2016          223           21.65         31.24         18.82         0 \r\n 2016          224           9.85          27.26         19.22         19.56 \r\n 2016          225           10.13         23.43         16.67         7.62 \r\n 2016          226           22.56         27.05         14.83         0 \r\n 2016          227           25.68         26.78         13.83         0 \r\n 2016          228           19.94         26.72         12.71         0 \r\n 2016          229           22.26         28.07         14.92         0 \r\n 2016          230           23.61         31            16.28         0 \r\n 2016          231           23.49         31.01         16.19         0 \r\n 2016          232           5.789         24.72         17.44         21.59 \r\n 2016          233           15.87         20.88         11.7          0.254 \r\n 2016          234           23.15         23.63         9.15          0 \r\n 2016          235           22.91         26.4          12.76         0 \r\n 2016          236           15.46         26.54         16.14         35.56 \r\n 2016          237           11.69         25.62         16.25         0 \r\n 2016          238           16.73         24.41         13.67         0 \r\n 2016          239           10.94         20.18         10.22         0 \r\n 2016          240           12.9          25.65         15.01         0 \r\n 2016          241           18.87         29.36         14.89         0 \r\n 2016          242           8.87          26.24         17.2          3.048 \r\n 2016          243           12.27         25.34         12.72         0 \r\n 2016          244           22.18         24.57         10.26         0 \r\n 2016          245           22.65         23.29         10.06         0 \r\n 2016          246           21.39         23.42         9.96          0 \r\n 2016          247           18.88         24.27         12.24         0 \r\n 2016          248           17.64         26.03         14.47         0 \r\n 2016          249           16.45         30.88         18.03         0.762 \r\n 2016          250           16.12         31.78         21.69         0 \r\n 2016          251           9.46          24.7          18.65         34.29 \r\n 2016          252           20.54         29.05         14.86         0 \r\n 2016          253           5.467         22.82         14.51         24.64 \r\n 2016          254           19.72         22.07         9.84          0 \r\n 2016          255           20.73         25.63         9.45          0 \r\n 2016          256           17.56         28.28         13.77         7.874 \r\n 2016          257           10.15         18.44         11.22         0 \r\n 2016          258           19.37         23.67         7.178         0 \r\n 2016          259           13.35         27.5          12.79         39.12 \r\n 2016          260           16.08         24.9          13.75         10.67 \r\n 2016          261           9.8           21            11.33         0 \r\n 2016          262           19.35         28.94         11.11         0 \r\n 2016          263           14.38         27.61         11.53         0 \r\n 2016          264           19.38         30.57         10.16         0 \r\n 2016          265           15.65         34.28         21.68         0 \r\n 2016          266           7.803         24.36         16.86         70.87 \r\n 2016          267           11.23         25.63         17.92         43.18 \r\n 2016          268           13.88         29.05         18.65         7.62 \r\n 2016          269           8.76          19.2          9.48          6.858 \r\n 2016          270           18.85         20.71         6.936         0 \r\n 2016          271           18.54         21.89         4.552         0 \r\n 2016          272           7.534         17.09         9.11          0 \r\n 2016          273           16.1          22.12         7.138         0 \r\n 2016          274           11.95         21.17         6.844         0 \r\n 2016          275           6.58          19.99         9.64          0 \r\n 2016          276           16.89         25.44         6.946         0 \r\n 2016          277           16.2          23.69         8.53          0 \r\n 2016          278           10.1          23.76         14.19         9.14 \r\n 2016          279           15.47         20.32         9.76          2.286 \r\n 2016          280           6.16          17.22         5.502         3.302 \r\n 2016          281           16.57         13.87         2.138         0 \r\n 2016          282           15.68         21.06         0.67          0 \r\n 2016          283           15.88         19.46        -0.057         0 \r\n 2016          284           10.49         19.96         9.35          0 \r\n 2016          285           14.26         25.56         8.05          0 \r\n 2016          286           8.11          9.46         -1.94          2.794 \r\n 2016          287           15.77         13.37        -4.077         0 \r\n 2016          288           7.396         17.9          2.067         0 \r\n 2016          289           4.5           22.11         13.75         0 \r\n 2016          290           10.25         23.49         9.74          0 \r\n 2016          291           5.17          26.87         14.41         0 \r\n 2016          292           11.66         19.97         5.542         0 \r\n 2016          293           6.568         16.48         5.219         0 \r\n 2016          294           12.3          11.21        -0.461         0 \r\n 2016          295           12.27         14.18        -3.48          0 \r\n 2016          296           13.32         21.51         1.207         0 \r\n 2016          297           13.29         17.93         1.824         0 \r\n 2016          298           12.41         14.25        -0.38          0 \r\n 2016          299           5.967         14.39         6.128         9.14 \r\n 2016          300           2.583         8.01          5.522         9.14 \r\n 2016          301           9.28          14.28         6.37          0 \r\n 2016          302           8.76          24.56         7.703         0 \r\n 2016          303           7.029         15.78         6.895         0.254 \r\n 2016          304           4.638         9.74          3.37          0 \r\n 2016          305           1.868         13.74         4.997         0 \r\n 2016          306           11.07         20.71         3.664         0 \r\n 2016          307           7.698         17.73         6.209         0 \r\n 2016          308           11.61         20.1          1.722         0 \r\n 2016          309           11.16         22.14         1.52          0 \r\n 2016          310           10.98         22.72         2.562         0 \r\n 2016          311           11.14         19.59         4.462         0 \r\n 2016          312           7.313         17.51         3.613         0 \r\n 2016          313           11.13         14.12        -0.907         0 \r\n 2016          314           11.01         14.57        -4.513         0 \r\n 2016          315           10.6          19.45         1.642         0 \r\n 2016          316           10.23         10.93        -2.902         0 \r\n 2016          317           10.6          12.27        -4.502         0 \r\n 2016          318           10.33         17.46         0.489         0 \r\n 2016          319           7.223         9.78         -0.684         0 \r\n 2016          320           9.45          17.37        -2.851         0 \r\n 2016          321           8.71          17.09        -2.73          0 \r\n 2016          322           5.519         19.44         6.35          0 \r\n 2016          323           2.095         8.23         -2.244         0.254 \r\n 2016          324           9.98          0.236        -9.1           0 \r\n 2016          325           7.94          3.108        -11.58         0 \r\n 2016          326           8.78          6.37         -6.988         0 \r\n 2016          327           5.323         2.067         0.448         10.16 \r\n 2016          328           1.866         2.46          0.56          9.14 \r\n 2016          329           1.354         2.239         0.448         0 \r\n 2016          330           4.499         5.926        -0.442         0 \r\n 2016          331           8.03          8.57         -1.464         0 \r\n 2016          332           2.704         9.2          -2.791         7.874 \r\n 2016          333           5.833         12.49         1.986         0 \r\n 2016          334           2.754         2.916        -0.178         0 \r\n 2016          335           2.741         1.338        -0.573         2.286 \r\n 2016          336           1.932         1.622        -0.036         1.52 \r\n 2016          337           2.895         0.641        -1.322         0 \r\n 2016          338           5.044         3.118        -1.038         0 \r\n 2016          339           3.086         1.379        -1.232         6.35 \r\n 2016          340           5.346         4.472        -1.818         1.27 \r\n 2016          341           6.829         1.328        -9.3           2.29 \r\n 2016          342           6.723        -5.344        -11.96         0 \r\n 2016          343           5.151        -4.696        -12.84         0 \r\n 2016          344           6.591        -6.918        -13.81         0.25 \r\n 2016          345           2.817        -6.602        -11.78         0.25 \r\n 2016          346           3.487        -2.345        -14.85         6.1 \r\n 2016          347           8.51         -9            -21.27         0 \r\n 2016          348           8.46         -10.87        -21.7          0 \r\n 2016          349           8.17         -9.89         -20.25         0 \r\n 2016          350           6.729        -12.26        -24.11         0 \r\n 2016          351           1.518        -8.92         -12.37         1.02 \r\n 2016          352           4.483        -11.64        -25.68         5.08 \r\n 2016          353           8.53         -18.87        -30.74         0.51 \r\n 2016          354           8.48         -5.507        -19.07         0 \r\n 2016          355           7.342         2.138        -8.04          0 \r\n 2016          356           4.14          3.34         -7.394         0 \r\n 2016          357           7.717         2.39         -9.3           0 \r\n 2016          358           2.146         0.772        -1.93          0 \r\n 2016          359           4.689        -0.198        -8.33          3.3 \r\n 2016          360           1.43          3.966        -0.26          0 \r\n 2016          361           5.969         4.502        -6.217         9.91 \r\n 2016          362           8.13          1.096        -9.04          0 \r\n 2016          363           5.639         3.38         -2.184         0 \r\n 2016          364           7.602         0.994        -4.21          0 \r\n 2016          365           6.117         2.956        -8.81          0 \r\n 2016          366           5.691        -0.948        -7.181         0 \r\n 2017          1             4.651         0.185        -8.51          0 \r\n 2017          2             5.064        -0.219        -1.535         0 \r\n 2017          3             5.477        -0.36         -16.41         2.29 \r\n 2017          4             7.283        -14.6         -19.13         0 \r\n 2017          5             6.585        -14.61        -20.33         0 \r\n 2017          6             5.899        -11.35        -21.46         0 \r\n 2017          7             8.95         -11.6         -18.21         0 \r\n 2017          8             4.37         -7.262        -19.84         0 \r\n 2017          9             1.909        -2.254        -11.27         0.25 \r\n 2017          10            3.674         0.256        -10.14         2.54 \r\n 2017          11            4.568        -6.076        -14.46         6.35 \r\n 2017          12            7.139        -6.541        -16.81         1.27 \r\n 2017          13            3.006        -11.35        -18.02         0 \r\n 2017          14            9.33         -2.184        -13.8          0.76 \r\n 2017          15            7.867         1.024        -12.25         0 \r\n 2017          16            1.843        -0.26         -3.094         4.32 \r\n 2017          17            2.847        -0.219        -2.588         9.4 \r\n 2017          18            10.12         4.684        -2.862         0 \r\n 2017          19            4.239         2.411        -0.968         0 \r\n 2017          20            2.103         2.128         0.084         0.76 \r\n 2017          21            2.298         4.452        -0.28          4.57 \r\n 2017          22            1.836         2.36         -0.563         0 \r\n 2017          23            1.248         0.126        -0.928         0 \r\n 2017          24            1.124        -0.401        -1.454         0 \r\n 2017          25            6.121        -0.391        -4.614         16.76 \r\n 2017          26            7.276        -2.771        -6.724         4.06 \r\n 2017          27            10.43        -3.288        -13.45         0 \r\n 2017          28            6.497        -2.588        -12.07         0 \r\n 2017          29            7.9          -0.826        -13.57         0 \r\n 2017          30            8.45          3.623        -10.77         0 \r\n 2017          31            6.481         1.39         -0.816         0 \r\n 2017          32            8.43         -0.594        -10.77         0 \r\n 2017          33            9.47         -6.806        -12.19         0 \r\n 2017          34            12.26        -5.608        -14.13         0 \r\n 2017          35            10.49         2.633        -10.58         0 \r\n 2017          36            9.42         -1.606        -7.912         0 \r\n 2017          37            9.72          5.805        -7.13          0 \r\n 2017          38            3.372         2.45         -10.91         0 \r\n 2017          39            11.02        -8.94         -13.41         0.51 \r\n 2017          40            11.89        -5.832        -14.59         0 \r\n 2017          41            10.32         6.623        -8.19          0 \r\n 2017          42            3.847         4.795         0.55          0 \r\n 2017          43            13.26         3.836        -1.758         4.06 \r\n 2017          44            12.85         7.248        -2.386         0 \r\n 2017          45            13.47         6.673        -2.304         0 \r\n 2017          46            13.59         2.046        -5.203         0 \r\n 2017          47            10.6          9.01         -1.292         0 \r\n 2017          48            13.8          15.94         0.934         0 \r\n 2017          49            14.17         13.41        -0.522         0 \r\n 2017          50            11.79         16.93         0.813         0 \r\n 2017          51            1.26          12.81         2.956         0 \r\n 2017          52            14.11         15.73        -1.009         20.57 \r\n 2017          53            13.64         17.17         1.814         0 \r\n 2017          54            2.726         3.017        -0.614         0 \r\n 2017          55            9.9          -0.482        -10.3          15.75 \r\n 2017          56            15.72        -4.21         -13.27         4.06 \r\n 2017          57            16.34        -1.859        -10.72         0 \r\n 2017          58            14.93         3.804        -11.19         0 \r\n 2017          59            8.02          3.724         0.246         1.78 \r\n 2017          60            10.68         1.42         -6.238         2.54 \r\n 2017          61            13.5         -2.82         -10.39         0.76 \r\n 2017          62            12.29        -0.907        -12.28         0.25 \r\n 2017          63            16.29         6.592        -4.554         0 \r\n 2017          64            6.771         12.3          2.148         0 \r\n 2017          65            10.73         21.37         2.168         0 \r\n 2017          66            14.75         10.06        -0.016         12.95 \r\n 2017          67            16.77         6.613        -2.71          0.51 \r\n 2017          68            2.404         2.804        -6.826         1.02 \r\n 2017          69            10.64        -6.42         -12.84         0.51 \r\n 2017          70            10.63        -4.006        -9.57          0.25 \r\n 2017          71            5.177        -3.996        -12.19         0.25 \r\n 2017          72            15.73        -5.588        -19.27         8.64 \r\n 2017          73            19.8         -5.598        -19.93         0.25 \r\n 2017          74            18.79        -2.507        -22.01         0 \r\n 2017          75            12.93         2.106        -7.08          0 \r\n 2017          76            14.72         9.09         -1.92          0 \r\n 2017          77            14.86         6.028        -1.11          0 \r\n 2017          78            14.52         16.17        -1.13          0 \r\n 2017          79            16.63         15.5          0.762         0 \r\n 2017          80            15.01         5.442        -4.23          0 \r\n 2017          81            10.37         3.623        -6.115         0 \r\n 2017          82            2.83          5.926         1.156         0 \r\n 2017          83            2.81          5.937         3.26          7.37 \r\n 2017          84            2.12          3.623         2.228         2.79 \r\n 2017          85            5.631         7.056         2.026         3.56 \r\n 2017          86            7.474         8.47          0.752         0 \r\n 2017          87            18.99         14.66        -1.343         0 \r\n 2017          88            2.449         6.32          2.612         0 \r\n 2017          89            3.329         4.916         2.188         18.29 \r\n 2017          90            6.931         5.633        -0.826         0 \r\n 2017          91            15.22         14.96        -0.968         0 \r\n 2017          92            4.08          9.66          6.148         0 \r\n 2017          93            3.473         9.38          6.714         4.826 \r\n 2017          94            14.39         14.21         5.038         6.604 \r\n 2017          95            9.63          11.45         2.997         0 \r\n 2017          96            22.97         11.39        -0.928         0 \r\n 2017          97            21.39         15.56        -3.966         0 \r\n 2017          98            16.95         24.17         5.624         0 \r\n 2017          99            7.959         25.45         10.49         7.112 \r\n 2017          100           7.425         10.71         1.925         0.762 \r\n 2017          101           18.67         13.93         1.925         0 \r\n 2017          102           9.27          18.53         2.713         10.67 \r\n 2017          103           11.61         14.88         7.37          0 \r\n 2017          104           7.602         17.81         8.7           11.68 \r\n 2017          105           5.489         19.69         11.11         1.778 \r\n 2017          106           24.44         19.64         5.896         0 \r\n 2017          107           23.94         20.28         6.966         0 \r\n 2017          108           7.823         20            8.16          3.81 \r\n 2017          109           4.986         14.76         6.774         19.56 \r\n 2017          110           7.566         9.8           4.552         0 \r\n 2017          111           20.76         14.3          0.823         0 \r\n 2017          112           25.22         19.64         1.996         0 \r\n 2017          113           24.43         22.51         2.997         0 \r\n 2017          114           17.27         23.55         8.18          0 \r\n 2017          115           7.769         14.64         6.996         4.318 \r\n 2017          116           6.799         7.076         0.064         0.254 \r\n 2017          117           7.984         4.472        -1.494         0 \r\n 2017          118           6.594         6.673        -3.703         0 \r\n 2017          119           8.79          8.63          0.742         0.254 \r\n 2017          120           3.649         5.229         2.674         22.61 \r\n 2017          121           6.506         4.966         2.916         4.064 \r\n 2017          122           26.52         15.57         1.318         0 \r\n 2017          123           20.57         17.54         2.087         0 \r\n 2017          124           26.21         19.77         3.744         0 \r\n 2017          125           26.83         24.29         4.27          0 \r\n 2017          126           27.48         22.02         6.633         0 \r\n 2017          127           26.24         24.97         4.826         0 \r\n 2017          128           21.51         30.28         10.22         0 \r\n 2017          129           24.73         25.37         10.09         2.032 \r\n 2017          130           5.323         15.92         9.42          9.14 \r\n 2017          131           27.66         19.95         5.906         0 \r\n 2017          132           27.47         24.19         4.149         0 \r\n 2017          133           27.2          28.74         8.93          0 \r\n 2017          134           26.45         30.49         12.45         0 \r\n 2017          135           12.14         29.78         16.74         8.89 \r\n 2017          136           19.38         30.44         15.56         11.94 \r\n 2017          137           11.92         24.46         14.2          20.32 \r\n 2017          138           10.677        14.88         8.32          0.254 \r\n 2017          139           6.197         8.36          5.238         8.64 \r\n 2017          140           5.073         14.09         5.159         8.89 \r\n 2017          141           7.634         10.12         4.633         0.508 \r\n 2017          142           22.46         21.57         3.987         2.032 \r\n 2017          143           12.07         14.11         8.9           1.27 \r\n 2017          144           14.845        16.5          7.955         0.254 \r\n 2017          145           24.97         22.48         6.057         0 \r\n 2017          146           19.92         26.68         11.69         0 \r\n 2017          147           12.79         21.52         10.06         0 \r\n 2017          148           26.71         24.86         9.4           0 \r\n 2017          149           19.53         20.7          8.69          0 \r\n 2017          150           21.81         21.13         7.612         0 \r\n 2017          151           30.08         23.65         4.472         0 \r\n 2017          152           29.54         28.18         7.218         0 \r\n 2017          153           25.75         32.53         15.3          0 \r\n 2017          154           26.3          33.99         17.63         0.254 \r\n 2017          155           28.84         32.27         16.2          0 \r\n 2017          156           29.51         30            14.17         0 \r\n 2017          157           29.54         28.34         11.28         0 \r\n 2017          158           26.71         29.73         11.77         0 \r\n 2017          159           16.57         30.65         16.61         18.29 \r\n 2017          160           23.5          29.76         15.16         2.54 \r\n 2017          161           25.57         33.88         18.41         0 \r\n 2017          162           20.24         34.52         22.92         0 \r\n 2017          163           11.47         29.51         20.35         0 \r\n 2017          164           26.53         34.07         19.9          0 \r\n 2017          165           20.95         28.16         17.71         12.19 \r\n 2017          166           27.26         31.51         14.78         0 \r\n 2017          167           17.83         30.64         16.2          16.26 \r\n 2017          168           11.15         26.29         15.76         5.08 \r\n 2017          169           17.13         22.53         12.39         0.254 \r\n 2017          170           28.3          25.26         11.17         0.254 \r\n 2017          171           28.26         26.2          11.87         0 \r\n 2017          172           14.58         25.27         13.59         7.874 \r\n 2017          173           10.91         26.6          17.87         13.21 \r\n 2017          174           18.11         20.9          10.79         3.81 \r\n 2017          175           21.58         22.19         7.864         1.524 \r\n 2017          176           26.15         20.76         6.926         0.762 \r\n 2017          177           26.04         21.43         9.3           0.508 \r\n 2017          178           27.12         25.28         6.774         0 \r\n 2017          179           12.17         26.96         18.13         7.366 \r\n 2017          180           17.6          26.63         14.65         1.778 \r\n 2017          181           20.99         25.54         13.59         0.762 \r\n 2017          182           26.7          23.87         11.78         0.254 \r\n 2017          183           22.66         29.05         15.59         3.81 \r\n 2017          184           24.98         29.82         15.68         0 \r\n 2017          185           21.65         31.03         18.28         49.5 \r\n 2017          186           25.73         29.84         16.73         0 \r\n 2017          187           26.38         31.65         18.45         0 \r\n 2017          188           27.64         27.3          15.97         0 \r\n 2017          189           26.82         28.76         13.38         0 \r\n 2017          190           26.39         31.76         11.65         0 \r\n 2017          191           16.82         26.23         17.02         3.81 \r\n 2017          192           14.87         30.22         15.66         0 \r\n 2017          193           20.93         31.56         18.87         0 \r\n 2017          194           25.89         24.65         12.87         0 \r\n 2017          195           26.06         27.75         10.59         0 \r\n 2017          196           24.09         32.47         15.38         0 \r\n 2017          197           26.36         31.54         17.92         0 \r\n 2017          198           24.81         31.96         17.46         0 \r\n 2017          199           18.95         30.04         20.4          0 \r\n 2017          200           20.16         32.59         19.86         0 \r\n 2017          201           21.72         30.85         20.97         0 \r\n 2017          202           8.32          25.2          20.55         13.2 \r\n 2017          203           18.88         29.53         19.76         0 \r\n 2017          204           24.99         25.2          15.01         0 \r\n 2017          205           25.57         26.94         11.27         0 \r\n 2017          206           23.27         31.22         17.2          0 \r\n 2017          207           8.29          26.04         18.14         11 \r\n 2017          208           25.84         29.01         15.41         0 \r\n 2017          209           24.56         29.76         14.25         0 \r\n 2017          210           25.88         28.4          13.18         0 \r\n 2017          211           24.23         29.43         12.1          0 \r\n 2017          212           25.31         28.59         12.28         77 \r\n 2017          213           24.3          30.05         13.44         14 \r\n 2017          214           16.32         28.04         14.22         0 \r\n 2017          215           15.69         20.36         9.08          57 \r\n 2017          216           25.19         24.34         7.218         0 \r\n 2017          217           12.94         22.38         8.62          0 \r\n 2017          218           14.01         25.35         13.85         0 \r\n 2017          219           23.38         27.26         11.88         0 \r\n 2017          220           24.53         28.18         9.66          0 \r\n 2017          221           12.8          24.2          12.16         2.28 \r\n 2017          222           22.25         24.47         14.1          0 \r\n 2017          223           24.24         25.01         11.04         0 \r\n 2017          224           22.52         27.85         9.07          0 \r\n 2017          225           13.56         24.97         13.13         0 \r\n 2017          226           17.74         25.8          14.08         33 \r\n 2017          227           7.843         21.02         13.02         0 \r\n 2017          228           11.86         26.7          16.85         14 \r\n 2017          229           15.23         23.82         13.53         0 \r\n 2017          230           19.29         26.52         11.82         0 \r\n 2017          231           22.85         27.4          12.36         0 \r\n 2017          232           20.93         30.89         17.68         22 \r\n 2017          233           2.559         21.09         16.38         30 \r\n 2017          234           23.42         22.03         10.77         0 \r\n 2017          235           22.87         25.53         7.338         3.8 \r\n 2017          236           8.31          20.2          14.87         4 \r\n 2017          237           17.07         24.4          14.52         0 \r\n 2017          238           7.377         24.13         15.38         18 \r\n 2017          239           18.71         26.18         13.28         0 \r\n 2017          240           12.41         22.85         11.04         0 \r\n 2017          241           20.43         27.06         10.16         0 \r\n 2017          242           21.43         27.58         11.01         0 \r\n 2017          243           7.656         21.1          13.71         0 \r\n 2017          244           19.45         23.71         9.98          0.5 \r\n 2017          245           14.88         25.28         11.67         0 \r\n 2017          246           19.34         27.22         9.47          0 \r\n 2017          247           15.54         21.6          8.73          0 \r\n 2017          248           18.38         18.43         6.936         0 \r\n 2017          249           18.96         19.53         4.966         0 \r\n 2017          250           20.27         23.31         2.612         0 \r\n 2017          251           19.92         26.91         7.49          0 \r\n 2017          252           18.35         26.39         10.4          0 \r\n 2017          253           18.07         27.42         14.23         0 \r\n 2017          254           18.66         27.64         12.07         0 \r\n 2017          255           18.47         30.58         11.17         0 \r\n 2017          256           18.31         29.29         11.99         0 \r\n 2017          257           17.6          31.47         14.65         0 \r\n 2017          258           13.06         32.08         17.92         0 \r\n 2017          259           9.85          27.15         13.77         8.13 \r\n 2017          260           18.61         22.51         8.91          0 \r\n 2017          261           3.895         18.29         11.27         23.11 \r\n 2017          262           14.62         27.79         15.8          0 \r\n 2017          263           17.78         26.39         11.11         0 \r\n 2017          264           14.3          31.67         10.48         0 \r\n 2017          265           16.3          33.38         21.75         0 \r\n 2017          266           14.82         32.8          19.49         0 \r\n 2017          267           16.17         32.92         17.94         0 \r\n 2017          268           9.25          24.93         15.18         8.13 \r\n 2017          269           9.26          18.67         8.75          4.826 \r\n 2017          270           15.03         20.59         5.542         0 \r\n 2017          271           17.36         24.51         4.754         0 \r\n 2017          272           17.48         21.75         6.269         0 \r\n 2017          273           12.82         22.22         5.764         0 \r\n 2017          274           3.494         17.62         11.95         8.89 \r\n 2017          275           8.94          26.98         12.84         6.604 \r\n 2017          276           2.538         22.8          8.99          1.016 \r\n 2017          277           16.34         20.12         7.258         0 \r\n 2017          278           4.075         16.81         8.75          2.794 \r\n 2017          279           2.224         15.29         12.56         44.7 \r\n 2017          280           4.227         18.23         8.78          25.15 \r\n 2017          281           15.35         25.93         8.71          0 \r\n 2017          282           13.73         17.61         3.37          4.572 \r\n 2017          283           2.07          6.128         3.461         18.54 \r\n 2017          284           9.62          15.79         3.27          0 \r\n 2017          285           8.8           17.64         9.15          0 \r\n 2017          286           5.702         15.81         6.542         0 \r\n 2017          287           1.9           14.23         6.875         4.318 \r\n 2017          288           12.51         13.39        -0.047         0 \r\n 2017          289           14.4          20.48        -2.395         0 \r\n 2017          290           13.89         22.62         4.674         0 \r\n 2017          291           13            23.45         4.674         0 \r\n 2017          292           13.26         24.25         2.006         0 \r\n 2017          293           12.49         25.25         10.2          0 \r\n 2017          294           3.173         21.44         8.92          15.24 \r\n 2017          295           12.02         18.27         5.937         0 \r\n 2017          296           6.727         15.7          3.502         0 \r\n 2017          297           11.79         9.27         -1.697         0 \r\n 2017          298           12.29         17.29        -1.454         0 \r\n 2017          299           7.401         15.47         0.205         0 \r\n 2017          300           3.942         1.176        -1.454         0.508 \r\n 2017          301           9.76          5.592        -4.392         0 \r\n 2017          302           4.289         7.703        -3.692         2.032 \r\n 2017          303           3.334         4.633        -2.568         0.254 \r\n 2017          304           8.2           0.205        -8.47          0 \r\n 2017          305           2.154         5.138        -3.278         0 \r\n 2017          306           4.349         5.824         0.003         0 \r\n 2017          307           8.07          6.219        -2.669         0 \r\n 2017          308           1.882         5.896         1.562         0.762 \r\n 2017          309           4.867         5.754        -5.142         0 \r\n 2017          310           3.727         0.216        -7.21          0 \r\n 2017          311           8.82          4.754        -6.664         0 \r\n 2017          312           10.5          7.823        -8.43          0 \r\n 2017          313           10.65         3.966        -11.94         0 \r\n 2017          314           5.374        -1.353        -11.54         0 \r\n 2017          315           1.547         2.228        -1.392         0 \r\n 2017          316           9.71          5.664        -5.244         0 \r\n 2017          317           3.725         5.219        -6.43          0 \r\n 2017          318           1.673         9.44          3.572         0.254 \r\n 2017          319           3.933         9.2          -6.217         0.254 \r\n 2017          320           3.839        -0.26         -7.13          0 \r\n 2017          321           7.761         6.189        -0.442         0.762 \r\n 2017          322           7.705         2.693        -6.278         2.032 \r\n 2017          323           8.59          7.38         -10.5          0 \r\n 2017          324           6.884         11.77        -2.648         0 \r\n 2017          325           8.68          2.875        -8.67          0 \r\n 2017          326           7.579         0.692        -13.37         0 \r\n 2017          327           8.37          9.82         -6.389         0 \r\n 2017          328           8.31          17.66         1.763         0 \r\n 2017          329           8.84          8.73         -5.304         0 \r\n 2017          330           7.267         12.72        -5.832         0 \r\n 2017          331           6.173         14.93        -2.466         0 \r\n 2017          332           5.113         10.36        -7.434         0 \r\n 2017          333           8.5           8.16         -9.73          0 \r\n 2017          334           8.58          10.59        -5.548         0 \r\n 2017          335           7.976         12.42        -4.918         0 \r\n 2017          336           6.084         11.61        -6.806         0 \r\n 2017          337           4.78          13.69        -4.452         0 \r\n 2017          338           3.039         18.66        -4.26          0.76 \r\n 2017          339           8.35         -3.116        -8             0 \r\n 2017          340           7.836        -2.345        -10.79         0 \r\n 2017          341           8.14         -5.02         -13.88         0 \r\n 2017          342           7.46          1.824        -11.17         0 \r\n 2017          343           5.191        -1.898        -10.48         0 \r\n 2017          344           7.266         3.492        -7.739         0 \r\n 2017          345           1.57          3.522        -10.38         0 \r\n 2017          346           6.637         0.975        -13.61         0 \r\n 2017          347           1.324         4.31         -5.71          0.254 \r\n 2017          348           2.375        -2.264        -12.43         0 \r\n 2017          349           4.552         5.704        -7.8           0 \r\n 2017          350           6.096         8.15         -6.886         0 \r\n 2017          351           1.398        -1.849        -7.556         0 \r\n 2017          352           6.658         7.328        -9.23          0 \r\n 2017          353           7.021         5.18         -8.68          0 \r\n 2017          354           3.86         -0.38         -9.78          0 \r\n 2017          355           1.999        -1.898        -6.764         0 \r\n 2017          356           5.711        -5.02         -14.08         0 \r\n 2017          357           5.843        -6.176        -15.77         0 \r\n 2017          358           6.398        -6.45         -14.39         0 \r\n 2017          359           5.664        -13.88        -20.82         0 \r\n 2017          360           7.434        -15.73        -25.58         0 \r\n 2017          361           7.543        -13.3         -27.31         0 \r\n 2017          362           4.137        -10.87        -16.73         0 \r\n 2017          363           3.82         -11.91        -19.82         6.604 \r\n 2017          364           7.226        -19.8         -24.87         0 \r\n 2017          365           8.49         -23.01        -31.97         0 \r\n 2018          1             8.54         -21.99        -34.12         0 \r\n 2018          2             8.26         -9.22         -31.48         0 \r\n 2018          3             8.05         -9.26         -25.09         0.25 \r\n 2018          4             4.298        -13.41        -24.32         0 \r\n 2018          5             8.94         -15.26        -27.85         0.76 \r\n 2018          6             7.951        -11.62        -30.49         0 \r\n 2018          7             5.484         0.327        -11.78         0.25 \r\n 2018          8             8.26          3.584        -10.2          0 \r\n 2018          9             4.44          2.896        -3.014         0 \r\n 2018          10            1.496         2.541        -0.776         0 \r\n 2018          11            3.377         1.551        -19.99         1.52 \r\n 2018          12            9.09         -16.32        -23.85         5.59 \r\n 2018          13            9.26         -15.14        -24.15         0 \r\n 2018          14            3.057        -6.684        -23.19         0 \r\n 2018          15            6.891        -14.94        -23.48         1.52 \r\n 2018          16            8.16         -15.87        -23.29         0 \r\n 2018          17            9.38         -5.324        -21.4          0 \r\n 2018          18            8.65          0.994        -11.11         0 \r\n 2018          19            6.89          5.361        -6.704         0 \r\n 2018          20            9.54          10           -5.456         0 \r\n 2018          21            1.687         1.854        -3.703         0 \r\n 2018          22            1             1.935        -3.642         13.97 \r\n 2018          23            9.1          -3.298        -7.313         12.7 \r\n 2018          24            3.187        -2.992        -6.713         0.25 \r\n 2018          25            6.45          2.532        -7.76          0 \r\n 2018          26            8.77          9.15         -0.24          0 \r\n 2018          27            8.92          6.29         -3.439         0 \r\n 2018          28            9.35         -2.294        -11.62         0.76 \r\n 2018          29            10.65        -9.91         -17.01         0 \r\n 2018          30            5.98          0.508        -16.58         0 \r\n 2018          31            7.884         0.924        -8.96          0 \r\n 2018          32            11.04        -8.94         -18.03         0 \r\n 2018          33            4.391        -7.617        -20.31         0 \r\n 2018          34            3.573         2.38         -10.24         0.51 \r\n 2018          35            10.74        -10.2         -19.23         1.78 \r\n 2018          36            4.228        -11.68        -20.82         0 \r\n 2018          37            8.48         -12.76        -26.4          5.59 \r\n 2018          38            12.39        -12.82        -21.25         1.78 \r\n 2018          39            8.22         -6.937        -14.14         0.76 \r\n 2018          40            12.41        -10.77        -18.4          8.64 \r\n 2018          41            10.2         -12.49        -21.54         1.78 \r\n 2018          42            13.26        -11.05        -22.74         0.25 \r\n 2018          43            11.66        -10.35        -23.56         0 \r\n 2018          44            12.74        -3.317        -12.28         0.76 \r\n 2018          45            13.3          2.936        -11.02         0 \r\n 2018          46            6.525         1.672        -10.05         0 \r\n 2018          47            14.15        -8.39         -17.22         0 \r\n 2018          48            10.36         0.003        -11.78         0 \r\n 2018          49            12.13         4.694        -12.17         2.79 \r\n 2018          50            1.988         1.925        -4.25          0 \r\n 2018          51            6.279        -3.378        -12.49         8.89 \r\n 2018          52            13.99        -5.112        -15.53         0 \r\n 2018          53            7.485        -0.461        -7.13          3.81 \r\n 2018          54            12.62        -0.584        -15.02         9.91 \r\n 2018          55            5.78         -0.32         -14.43         0 \r\n 2018          56            15.85        -1.272        -11.59         4.83 \r\n 2018          57            15.99         3.694        -10.36         0 \r\n 2018          58            14.84         11.78        -4.502         0 \r\n 2018          59            13.87         3.744        -5.112         0 \r\n 2018          60            16.26         2.006        -5.385         0 \r\n 2018          61            12.4          4.896        -5.02          0 \r\n 2018          62            15.39         8.24         -0.461         0 \r\n 2018          63            10.76         8.81          1.056         0 \r\n 2018          64            1.557         3.644        -4.138         0.51 \r\n 2018          65            12.01        -0.644        -7.354         6.6 \r\n 2018          66            18.09        -3.946        -11.74         1.27 \r\n 2018          67            18.12        -3.986        -12.41         0 \r\n 2018          68            15.49         0.732        -11.78         0 \r\n 2018          69            7.961         0.53         -6.238         0.25 \r\n 2018          70            9.2           1.906        -2.325         3.56 \r\n 2018          71            18.29         1.47         -5.903         0.25 \r\n 2018          72            17.9         -0.401        -6.41          0 \r\n 2018          73            18.53         9.27         -4.21          0 \r\n 2018          74            17.05         5.795        -3.418         0 \r\n 2018          75            11.13         2.664        -3.601         0 \r\n 2018          76            14.81         7.419        -1.292         6.1 \r\n 2018          77            4.98          2.826        -1.99          0 \r\n 2018          78            15.45         8.95         -0.422         0 \r\n 2018          79            8.35          0.752        -2.284         0 \r\n 2018          80            11.9          5.078        -4.594         2.79 \r\n 2018          81            8.89          5.643        -1.596         0 \r\n 2018          82            7.395         5.26         -0.614         0 \r\n 2018          83            15.07        -0.542        -4.21          18.8 \r\n 2018          84            21.34        -0.928        -6.196         10.41 \r\n 2018          85            11.09         0.489        -3.499         0.51 \r\n 2018          86            17.08         2.411        -4.798         3.56 \r\n 2018          87            20.42         7.359        -5.77          0 \r\n 2018          88            21.95         0.388        -4.452         0.51 \r\n 2018          89            19.63         6.753        -3.348         0 \r\n 2018          90            11.82         4.997        -7.82          1.52 \r\n 2018          91            21.02         0.126        -9.08          0 \r\n 2018          92            11.99         1.722        -5.932         0 \r\n 2018          93            10           -0.604        -11.68         2.794 \r\n 2018          94            23.4         -3.034        -14.2          0.254 \r\n 2018          95            15.9          4.351        -4.838         0 \r\n 2018          96            20.8         -1.96         -9.65          0 \r\n 2018          97            23.41         1.096        -10.49         0 \r\n 2018          98            7.357        -2.304        -5.568         4.318 \r\n 2018          99            21.3          0.53         -4.178         1.016 \r\n 2018          100           17.55         10.28        -4.291         0 \r\n 2018          101           10.16         9.05         -0.391         0 \r\n 2018          102           16.63         11.77        -0.735         0 \r\n 2018          103           1.397         5.906         1.46          44.7 \r\n 2018          104           7.354         1.824        -5.324         2.794 \r\n 2018          105           18.76        -3.358        -6.784         8.89 \r\n 2018          106           23.99        -1.474        -8.31          0.254 \r\n 2018          107           25.24         0.884        -9.02          0.254 \r\n 2018          108           17.97        -0.512        -2.902         8.38 \r\n 2018          109           26.25         8.41         -10.07         0 \r\n 2018          110           22.33         3.906        -7.434         0 \r\n 2018          111           18.91         10.41         1.46          0 \r\n 2018          112           24.94         16.32         2.956         0 \r\n 2018          113           24.47         18.5          2.106         0 \r\n 2018          114           20.83         19.18         3.784         0 \r\n 2018          115           25.69         14.09         1.804         0 \r\n 2018          116           22.61         18.15         1.966         0 \r\n 2018          117           24.97         18.25        -0.138         0 \r\n 2018          118           26.56         14.11         0.174         0 \r\n 2018          119           26.02         21.41         1.156         0 \r\n 2018          120           21.75         28.95         10.1          0 \r\n 2018          121           14.58         25.01         13.43         27.69 \r\n 2018          122           9.23          15.66         9.54          5.334 \r\n 2018          123           6.696         16.99         7.52          37.85 \r\n 2018          124           26.38         22.27         9.54          0.254 \r\n 2018          125           22.31         25.83         8.09          0 \r\n 2018          126           25.75         24.26         9.76          0 \r\n 2018          127           26.79         26.96         7.45          0 \r\n 2018          128           12.31         26.57         13.5          8.38 \r\n 2018          129           11.88         18.98         11.03         0.254 \r\n 2018          130           19.68         17.8          8.39          0 \r\n 2018          131           6.343         9.49          6.946         24.13 \r\n 2018          132           3.036         10.07         6.168         3.048 \r\n 2018          133           8.65          15.85         8.2           1.27 \r\n 2018          134           10.79         21.64         10.87         0 \r\n 2018          135           25.64         26.42         10.67         0 \r\n 2018          136           24.37         28.68         11.49         0 \r\n 2018          137           26.62         29.43         12.52         0 \r\n 2018          138           25.78         29.24         12.94         0 \r\n 2018          139           19.24         22.19         11.55         0 \r\n 2018          140           9.33          16.11         8.81          0 \r\n 2018          141           5.652         16.75         11.98         6.604 \r\n 2018          142           22.95         26.55         10.91         0 \r\n 2018          143           22.87         27.99         15.83         41.91 \r\n 2018          144           24            31.51         18.58         0 \r\n 2018          145           26.27         32.94         18.68         0 \r\n 2018          146           28.06         34.18         17.32         0 \r\n 2018          147           24.64         37.94         17.59         0 \r\n 2018          148           15.16         36.45         19.6          5.08 \r\n 2018          149           21.9          35.42         18.01         7.874 \r\n 2018          150           20.74         26.35         17.63         1.778 \r\n 2018          151           25.41         32.13         15.43         0 \r\n 2018          152           28.36         34.34         17.36         0 \r\n 2018          153           20.85         24.07         14.25         17.78 \r\n 2018          154           29.68         24.23         12.48         0 \r\n 2018          155           27.81         29.48         10.12         0 \r\n 2018          156           26.32         33.32         15.48         0 \r\n 2018          157           16.99         31.75         18.68         0.254 \r\n 2018          158           15.29         28.54         16.83         0.508 \r\n 2018          159           19.84         28.42         15.93         18.03 \r\n 2018          160           20.87         30.72         18.08         0 \r\n 2018          161           18.63         25.06         17.11         0 \r\n 2018          162           15.17         25.36         16.28         1.524 \r\n 2018          163           15.18         27.55         17.71         0 \r\n 2018          164           26.14         26.44         11.43         0 \r\n 2018          165           14.06         24.91         15.58         15.49 \r\n 2018          166           24.53         33.12         18.57         0 \r\n 2018          167           22.47         32.98         22.09         0 \r\n 2018          168           21.35         32.77         22.94         0 \r\n 2018          169           11.6          29.4          20.61         35.04999 \r\n 2018          170           15.36         27.01         20.27         1.778 \r\n 2018          171           10.83         24.74         18.59         84.10001 \r\n 2018          172           6.793         20.12         13.48         14.72999 \r\n 2018          173           18.65         24.1          13.75         0 \r\n 2018          174           23.07         25.66         13.98         0 \r\n 2018          175           14.19         26.66         16.43         30.22999 \r\n 2018          176           14.62         23.13         17.57         19.56001 \r\n 2018          177           16.66         24.45         16.89         4.064 \r\n 2018          178           19.49         28.22         16.54         0 \r\n 2018          179           14.13         27.88         17.38         0 \r\n 2018          180           23.75         32.65         21.36         0 \r\n 2018          181           12.73         29.98         18.96         63.5 \r\n 2018          182           20.438        23.85         16.34         2.794 \r\n 2018          183           24.299        27.87         15.75         0 \r\n 2018          184           23.705        30.38         17.38         0 \r\n 2018          185           14.916        31.43         20.77         6.604 \r\n 2018          186           20.152        27.2          17.07         1.524 \r\n 2018          187           26.026        26.52         14            0 \r\n 2018          188           26.169        26.86         14.71         0 \r\n 2018          189           26.719        28.56         15.46         0 \r\n 2018          190           25.531        32.26         16.64         0 \r\n 2018          191           20.702        29.91         17.1          0 \r\n 2018          192           23.177        31.73         19.13         0 \r\n 2018          193           24.959        32.7          21.27         0 \r\n 2018          194           10.197        28.82         19.61         23.62 \r\n 2018          195           14.168        28.85         19.82         0 \r\n 2018          196           24.112        30.36         18.96         0 \r\n 2018          197           27.005        29.17         15.95         0 \r\n 2018          198           24.926        31.11         14.09         0 \r\n 2018          199           22.671        28.91         15.8          0 \r\n 2018          200           11            25.72         18.63         11.94 \r\n 2018          201           15.246        25.01         17.39         4.318 \r\n 2018          202           23.067        26.71         15.75         0 \r\n 2018          203           25.355        27.53         14.88         0 \r\n 2018          204           22.484        29.26         14.7          0 \r\n 2018          205           25.377        27.17         13.49         0 \r\n 2018          206           19.602        27.28         13.44         6.604 \r\n 2018          207           24.332        21.9          12.17         0 \r\n 2018          208           24.794        24.57         9.9           0 \r\n 2018          209           21.153        25.63         10.14         0 \r\n 2018          210           23.254        28.44         9.96          0 \r\n 2018          211           20.372        28.98         10.93         3.302 \r\n 2018          212           25.267        28.04         11.94         0 \r\n 2018          213           17.435        27.67         12.54         5.842 \r\n 2018          214           25.278        25.57         11.53         0 \r\n 2018          215           23.892        31.44         14.83         0 \r\n 2018          216           12.199        28.2          18.09         0 \r\n 2018          217           9.581         26.47         17.89         32 \r\n 2018          218           17.963        28.89         16.71         16 \r\n 2018          219           17.358        26.58         14.51         19.56 \r\n 2018          220           24.596        28.78         13.07         0 \r\n 2018          221           23.551        29.37         17.55         0 \r\n 2018          222           23.584        30.33         15.55         0 \r\n 2018          223           19.459        29.15         13.89         0 \r\n 2018          224           23.397        30.91         14.11         0 \r\n 2018          225           23.595        30.96         16.97         0 \r\n 2018          226           13.75         28.32         17.55         0 \r\n 2018          227           18.172        30.93         18.78         0 \r\n 2018          228           8.866         23.5          16.99         1.016 \r\n 2018          229           21.538        28.62         15.54         0 \r\n 2018          230           20.856        29.62         13.28         0 \r\n 2018          231           15.532        27.89         15.75         1.27 \r\n 2018          232           2.9117        20.35         15.59         74.42 \r\n 2018          233           14.883        21.87         12.28         0 \r\n 2018          234           22.957        25.44         8.87          0 \r\n 2018          235           16.291        25.04         10.06         0 \r\n 2018          236           11.429        26.4          16.67         0.508 \r\n 2018          237           19.338        28.73         14.63         0 \r\n 2018          238           10.56         27.68         18.55         3.302 \r\n 2018          239           18.04         30.19         20.4          0 \r\n 2018          240           4.9192        23.79         12.07         35.81 \r\n 2018          241           23.309        22.52         9.22          0 \r\n 2018          242           17.93         24.61         10.28         0 \r\n 2018          243           14.894        29.27         18.82         0 \r\n 2018          244           12.31         28.82         19.64         1.27 \r\n 2018          245           10.07         27.67         18.19         18.54 \r\n 2018          246           5.535         23.89         19.36         3.556 \r\n 2018          247           10.57         28.87         18.95         24.13 \r\n 2018          248           8.01          22.59         11.95         7.874 \r\n 2018          249           20.15         23.86         9.09          0 \r\n 2018          250           14.63         21.13         10.57         0 \r\n 2018          251           19.38         22.84         8.89          0 \r\n 2018          252           18.04         23.73         8.13          0 \r\n 2018          253           18.84         26.67         7.248         0 \r\n 2018          254           18.58         28.08         13.37         0 \r\n 2018          255           18.62         28.87         15.36         0 \r\n 2018          256           15.62         30.03         14.88         0 \r\n 2018          257           15.4          31.86         18            0 \r\n 2018          258           16.26         33.87         19.39         0 \r\n 2018          259           16.32         32.45         18.66         0 \r\n 2018          260           15.63         34.09         17.51         0 \r\n 2018          261           3.487         20.14         14.73         21.59 \r\n 2018          262           6.757         27.24         15.98         59.18 \r\n 2018          263           10.55         32.51         17.17         42.67 \r\n 2018          264           13.32         18            4.088         0 \r\n 2018          265           18            21.19         3.512         0 \r\n 2018          266           17.19         26            7.843         0 \r\n 2018          267           15.96         26.86         10.24         0 \r\n 2018          268           3.959         15.65         5.916         8.13 \r\n 2018          269           17.23         17.67         5.592         0 \r\n 2018          270           7.802         17.77         8.7           0.254 \r\n 2018          271           8.57          12.65         0.711         0 \r\n 2018          272           13.02         9.41         -1.494         0.254 \r\n 2018          273           5.023         12.17         5.704         3.048 \r\n 2018          274           3.15          11.53         7.542         7.874 \r\n 2018          275           4.725         13.79         7.238         0.254 \r\n 2018          276           8.09          30.09         4.411         4.826 \r\n 2018          277           8.62          9.71          0.226         0 \r\n 2018          278           3.762         12.5          6.43          5.588 \r\n 2018          279           6.979         11.1          5.33          0 \r\n 2018          280           2.578         11.15         5.764         4.064 \r\n 2018          281           3.312         16.34         9.92          36.58 \r\n 2018          282           2.566         18.44         9.95          14.22 \r\n 2018          283           4.833         18.16         1.5           0 \r\n 2018          284           6.273         4.714        -1.98          0 \r\n 2018          285           7.783         6.148        -3.632         0 \r\n 2018          286           10.12         13.71         3.179         0 \r\n 2018          287           1.933         6.128        -0.806         3.556 \r\n 2018          288           14.41         7.772        -1.392         0.762 \r\n 2018          289           13.22         16.26        -0.522         0 \r\n 2018          290           14.03         11.53        -2.386         0 \r\n 2018          291           13.42         21.56        -1.474         0 \r\n 2018          292           9.32          19.01         4.814         6.604 \r\n 2018          293           13.32         6.209        -5.284         0 \r\n 2018          294           12.82         15.88        -5.73          0 \r\n 2018          295           12.91         19.04        -2.466         0 \r\n 2018          296           13.04         10.83        -3.905         0 \r\n 2018          297           10.62         13.95        -3.439         0 \r\n 2018          298           4.118         11.28         4.633         0 \r\n 2018          299           3.156         9.58          1.014         0 \r\n 2018          300           7.918         16.2         -0.148         1.778 \r\n 2018          301           12.13         13.36        -0.38          0 \r\n 2018          302           9.67          15.5         -3.135         0 \r\n 2018          303           6.43          11.78         2.896         0 \r\n 2018          304           8.66          13.92        -0.786         0 \r\n 2018          305           10.92         14.41        -3.682         0 \r\n 2018          306           5.684         10.36         3.522         0 \r\n 2018          307           2.445         7.147         1.622         8.13 \r\n 2018          308           2.227         4.108         2.188         5.334 \r\n 2018          309           2.693         8.02          1.096         8.13 \r\n 2018          310           2.35          5.32         -1.353         0.254 \r\n 2018          311           3.986        -0.078        -2.992         0 \r\n 2018          312           4.441        -1.869        -5.416         0 \r\n 2018          313           7.918        -4.077        -11.94         0 \r\n 2018          314           4.121        -4.108        -16.31         0 \r\n 2018          315           4.81          2.744        -6.319         0 \r\n 2018          316           4.23         -5.984        -9.59          0 \r\n 2018          317           10.07        -1.372        -15.1          0 \r\n 2018          318           9.61          6.189        -7.13          0 \r\n 2018          319           9.26          6.926        -5.872         0 \r\n 2018          320           4.392         0.55         -3.48          0 \r\n 2018          321           6.123        -2.609        -17.01         0 \r\n 2018          322           9.97         -4.311        -21.81         0 \r\n 2018          323           5.405        -3.51         -11.03         0 \r\n 2018          324           7.654        -0.28         -15.42         0.254 \r\n 2018          325           4.478        -0.148        -9.55          0.762 \r\n 2018          326           6.686         3.542        -4.605         0 \r\n 2018          327           1.75          4.684         1.4           5.334 \r\n 2018          328           4.035         2.44         -1.738         0 \r\n 2018          329           3.038        -1.413        -8.25          0 \r\n 2018          330           3.971        -8.2          -12.16         0 \r\n 2018          331           8.72         -3.764        -13.16         0 \r\n 2018          332           2.409        -3.116        -11.84         4.318 \r\n 2018          333           5.332         0.346        -7.556         0 \r\n 2018          334           3.069         1.348        -5.284         0 \r\n 2018          335           1.48          0.448        -1.96          2.29 \r\n 2018          336           3.732         0.034        -3.642         15.24 \r\n 2018          337           3.222        -3.317        -5.487         1.02 \r\n 2018          338           2.038        -5.385        -7.495         0 \r\n 2018          339           8.29         -1.09         -10.6          0 \r\n 2018          340           8.08         -6.217        -16.13         0 \r\n 2018          341           3.957        -4.858        -13.02         0 \r\n 2018          342           5.664        -1.96         -8.92          0 \r\n 2018          343           7.814        -2.486        -10.5          0 \r\n 2018          344           6.325        -3.094        -8.43          0 \r\n 2018          345           6.62         -0.036        -11.21         0 \r\n 2018          346           3.282        -2.244        -7.444         0 \r\n 2018          347           4.269         0.185        -4.614         0 \r\n 2018          348           7.096         3.927        -6.238         0 \r\n 2018          349           7.737         6.028        -7.464         0 \r\n 2018          350           6.86          4.492        -3.206         0 \r\n 2018          351           7.635         4.976        -6.602         0 \r\n 2018          352           6.891         7.328        -2.345         0 \r\n 2018          353           4.436         6.592         0.307         0 \r\n 2018          354           1.158         1.156        -3.946         0.25 \r\n 2018          355           2.503        -3.733        -6.389         0 \r\n 2018          356           1.776         0.631        -7.556         0 \r\n 2018          357           3.572        -1.392        -8.29          0 \r\n 2018          358           5.646         0.084        -9.54          0 \r\n 2018          359           2.677         3.017        -2.325         0 \r\n 2018          360           2.156         1.804        -1.232         0 \r\n 2018          361           1.155         6.491        -3.186         20.32 \r\n 2018          362           1.704        -3.094        -13.32         12.7 \r\n 2018          363           6.97         -10.26        -13.94         1.02 \r\n 2018          364           7.406         0.803        -10.38         0 \r\n 2018          365           1.766        -1.566        -13.14         0 \r\n 2019          1             7.453        -12.13        -18.17         0 \r\n 2019          2             7.11         -2.041        -13.61         0 \r\n 2019          3             7.71          6.209        -8.81          0 \r\n 2019          4             7.87          7.349        -4.158         0 \r\n 2019          5             7.729         9.7          -2.648         0 \r\n 2019          6             3.079         3.674        -1.838         3.048 \r\n 2019          7             2.565         5.19          0.165         0 \r\n 2019          8             7.769         3.138        -8.1           0 \r\n 2019          9             8.45         -7.921        -13.49         0 \r\n 2019          10            8.32         -1.171        -12.19         0 \r\n 2019          11            3.049        -0.35         -6.928         0 \r\n 2019          12            2.637        -1.343        -3.966         0 \r\n 2019          13            6.166         1.43         -6.541         0.254 \r\n 2019          14            1.028        -1.738        -7.576         0 \r\n 2019          15            1.761        -0.016        -4.352         0 \r\n 2019          16            4.339        -4.352        -11.98         0 \r\n 2019          17            3.955        -4.848        -14.18         0 \r\n 2019          18            2.721        -8.85         -14.65         4.572 \r\n 2019          19            9.79         -12.66        -21.33         0 \r\n 2019          20            7.892        -15.17        -23.44         0 \r\n 2019          21            5.069        -9.87         -19.56         0 \r\n 2019          22            2.398        -5.73         -11.2          0 \r\n 2019          23            6.712        -5.02         -12.74         0 \r\n 2019          24            9.4          -6.217        -23.54         0 \r\n 2019          25            6.443        -12.14        -24.87         0 \r\n 2019          26            4.832        -8.11         -22.17         0 \r\n 2019          27            5.887        -10.42        -24.27         6.858 \r\n 2019          28            8.44         -9.77         -18.32         0 \r\n 2019          29            9.12         -16.24        -31.13         0 \r\n 2019          30            11.23        -25.66        -33.46         0 \r\n 2019          31            6.468        -17.68        -32.05         0 \r\n 2019          32            10.88        -8.12         -20.68         0 \r\n 2019          33            3.125         3.804        -8.2           3.048 \r\n 2019          34            1.822         6.976         3.38          0 \r\n 2019          35            6.963         5.462        -17.17         0 \r\n 2019          36            1.864        -8.84         -17.93         0 \r\n 2019          37            3.889        -8.59         -13.25         0 \r\n 2019          38            8.37         -11.75        -20.62         4.572 \r\n 2019          39            13.1         -15.22        -22.78         0 \r\n 2019          40            7.584        -8.06         -21.23         0 \r\n 2019          41            5.158        -5.061        -8.1           4.318 \r\n 2019          42            3.766        -3.662        -6.745         3.556 \r\n 2019          43            10.25        -5.507        -16.52         4.572 \r\n 2019          44            10.87        -5.244        -20.27         0 \r\n 2019          45            9.91         -2.304        -18.19         0 \r\n 2019          46            11.38        -12.77        -21.22         0 \r\n 2019          47            12.56        -7.434        -20.23         0 \r\n 2019          48            9.27         -5.952        -8.98          6.35 \r\n 2019          49            14.36        -8.43         -26.89         0 \r\n 2019          50            12.29        -8.43         -28            0 \r\n 2019          51            10.3         -2.152        -13.4          8.636 \r\n 2019          52            14.87        -3.014        -19.6          0.254 \r\n 2019          53            13.25        -2.284        -15.18         5.08 \r\n 2019          54            6.711         0.094        -5.122         2.032 \r\n 2019          55            15.13        -5.132        -21.3          0 \r\n 2019          56            10.85        -16.83        -20.99         0 \r\n 2019          57            10.88        -13.49        -18.42         0 \r\n 2019          58            15.93        -13.53        -20.64         0 \r\n 2019          59            11.45        -9.38         -19.6          0 \r\n 2019          60            11.17        -4.23         -15.28         3.048 \r\n 2019          61            13.42        -10.22        -19.19         0 \r\n 2019          62            17.27        -19.19        -25.78         0 \r\n 2019          63            17.19        -15.16        -26.62         0 \r\n 2019          64            17.66        -10.45        -20.6          0 \r\n 2019          65            16.86        -6.278        -20.87         0 \r\n 2019          66            13.32        -6.886        -16.75         0 \r\n 2019          67            13.11        -0.532        -7.048         0 \r\n 2019          68            5.543         0.327        -1.252         11.68 \r\n 2019          69            18.69        -0.806        -9.27          0 \r\n 2019          70            17.63         2.026        -9.67          0.762 \r\n 2019          71            6.342         2.026        -6.176         8.13 \r\n 2019          72            4.925         4.835         1.096         12.7 \r\n 2019          73            5.116         5.078        -1.252         1.524 \r\n 2019          74            15.88         0.914        -3.418         0 \r\n 2019          75            15.76         2.966        -5.203         0 \r\n 2019          76            11.6          2.674        -4.108         0 \r\n 2019          77            17.63         4.39         -3.905         0 \r\n 2019          78            17.56         8.87         -1.413         0 \r\n 2019          79            14.2          6.834        -2.021         0 \r\n 2019          80            19.65         9.11         -1.494         0 \r\n 2019          81            20.34         9.14         -1.535         0 \r\n 2019          82            15            10.84        -1.879         0 \r\n 2019          83            4.284         9.46          0.842         1.27 \r\n 2019          84            12.35         7.551        -0.948         0 \r\n 2019          85            17.71         10.95        -2.122         0 \r\n 2019          86            16.83         18.34         2.744         0 \r\n 2019          87            13.48         9.85          0.742         0 \r\n 2019          88            11.04         5.795        -1.262         0 \r\n 2019          89            18.57         2.703        -4.026         0 \r\n 2019          90            18.97         4.744        -6.784         0 \r\n 2019          91            18.32         9.54         -0.138         0.254 \r\n 2019          92            20.69         9.48         -4.017         2.286 \r\n 2019          93            8.44          10.05        -2.335         6.604 \r\n 2019          94            3.158         6.814         3.896         4.318 \r\n 2019          95            8.14          16.18         4.27          0 \r\n 2019          96            14.25         21.88         7.238         3.048 \r\n 2019          97            11.51         19.39         5.048         3.81 \r\n 2019          98            22.23         22.6          2.693         0 \r\n 2019          99            10.38         17.07         1.137         2.794 \r\n 2019          100           2.246         4.594        -0.138         16 \r\n 2019          101           2.641         6.764         0.145         4.318 \r\n 2019          102           5.512         1.024        -1.738         0.254 \r\n 2019          103           14.46         6.43         -2.142         0 \r\n 2019          104           21.32         7.884        -3.46          0 \r\n 2019          105           19.7          19.81        -3.51          2.032 \r\n 2019          106           18.53         19.45         5.482         0 \r\n 2019          107           6.12          18.94         5.38          11.68 \r\n 2019          108           10.15         10.83         1.601         0 \r\n 2019          109           24.55         16.14         0.012         0 \r\n 2019          110           24.16         24.99         0.499         0 \r\n 2019          111           17.79         29.29         11.01         0 \r\n 2019          112           5.951         18.16         6.238         5.588 \r\n 2019          113           24.69         19.06         1.5           0 \r\n 2019          114           5.953         23.19         2.916         0 \r\n 2019          115           5.373         18.53         7.984         5.08 \r\n 2019          116           22.54         15.86         3.179         0 \r\n 2019          117           5.548         8.31         -1.544         21.84 \r\n 2019          118           11.33         8.68         -2.476         0 \r\n 2019          119           10.53         16.99         4.594         0 \r\n 2019          120           3.895         10.07         4.512         1.524 \r\n 2019          121           8.21          8.75          3.936         2.794 \r\n 2019          122           16.496        13.54         2.32          0 \r\n 2019          123           8.83          16.42         0.67          0 \r\n 2019          124           27.6          20.84         4.29          0 \r\n 2019          125           18.84         20.8          6.592         0 \r\n 2019          126           7.083         16.25         7.289         0.762 \r\n 2019          127           7.713         19.65         5.018         0 \r\n 2019          128           2.489         13.23         4.27          24.64 \r\n 2019          129           8.36          8.44          1.4           0 \r\n 2019          130           6.334         16.77         1.156         0 \r\n 2019          131           5.983         12.95         4.896         0 \r\n 2019          132           18.52         15.41         3.804         3.048 \r\n 2019          133           26.4          19.02         1.966         0 \r\n 2019          134           18.01         19.48         9.71          3.556 \r\n 2019          135           26.1          26.3          5.785         0 \r\n 2019          136           23.75         31.29         14.89         0 \r\n 2019          137           4.045         17.93         11.18         9.14 \r\n 2019          138           19.85         25.45         10.32         25.4 \r\n 2019          139           6.184         14.07         3.27          12.95 \r\n 2019          140           10.66         13.87         2.006         0 \r\n 2019          141           4.375         10.46         7.278         13.97 \r\n 2019          142           17.69         18.99         9.05          16 \r\n 2019          143           23.49         18.65         7.076         6.604 \r\n 2019          144           14.24         23.17         10.97         32 \r\n 2019          145           30.19         23.21         12.62         0 \r\n 2019          146           30.87         25.78         9.92          0 \r\n 2019          147           17.68         22.1          11.48         12.19 \r\n 2019          148           17.5          14.55         9.9           1.778 \r\n 2019          149           21.95         20.86         12.23         21.08 \r\n 2019          150           26.37         24.7          11.9          0 \r\n 2019          151           28.58         30.61         13.34         0 \r\n 2019          152           27.4          23.31         11.86         0 \r\n 2019          153           31.32         24.77         8.55          0 \r\n 2019          154           15.44         24.13         11.92         0 \r\n 2019          155           26.298        30.88         14.69         3.048 \r\n 2019          156           27.207        30.08         15.49         0.254 \r\n 2019          157           27.675        31.33         16.87         0 \r\n 2019          158           27.558        32.08         17.35         0 \r\n 2019          159           28.224        30.85         16.57         0 \r\n 2019          160           17.89         21.45         11.5          0 \r\n 2019          161           28.6          25.49         8.55          0 \r\n 2019          162           13.01         21.72         12.06         1.524 \r\n 2019          163           27.072        20.55         9.79          5.08 \r\n 2019          164           29.889        23.45         5.946         0 \r\n 2019          165           21.942        25.51         13.86         0 \r\n 2019          166           16.5          29.41         15.66         29.21 \r\n 2019          167           12.42         24.97         15.78         0 \r\n 2019          168           13.23         23.84         14.76         16.26 \r\n 2019          169           8.89          21.64         15.28         4.318 \r\n 2019          170           27            24.84         12.68         0 \r\n 2019          171           17.3          23.95         14.13         0 \r\n 2019          172           12            19.02         15.05         4.318 \r\n 2019          173           12            21.1          13.99         8.38 \r\n 2019          174           15.56         24.45         17.12         1.524 \r\n 2019          175           22.65         22.84         15.19         1.524 \r\n 2019          176           28.5          27.52         13.9          0 \r\n 2019          177           23.57         28.74         13.36         0 \r\n 2019          178           9.13          26.51         17.15         24.89 \r\n 2019          179           22.54         30.8          19.33         0 \r\n 2019          180           27.6          34.08         18.95         0 \r\n 2019          181           24.6          34.25         23.04         0 \r\n 2019          182           23.883        31.44         20.75         0 \r\n 2019          183           28.5665       30.92         20.16         0.254 \r\n 2019          184           22.116        29.6          19.08         19.81 \r\n 2019          185           21.166        29.82         18.83         52.58 \r\n 2019          186           27.0275       29.64         16.9          2.032 \r\n 2019          187           25.612        26.8          17.88         0 \r\n 2019          188           29.4595       28.07         16.1          0 \r\n 2019          189           27.74         29.28         15.74         0 \r\n 2019          190           16.397        29.26         16.7          3.048 \r\n 2019          191           25.764        25.9          18.18         0 \r\n 2019          192           27.284        27.32         16.32         0 \r\n 2019          193           27.835        31.15         14.5          0 \r\n 2019          194           16.986        29.16         19.35         6.604 \r\n 2019          195           27.018        31.78         20.3          0 \r\n 2019          196           26.478        29.73         22.16         0.254 \r\n 2019          197           20.628        28.17         20.26         4.572 \r\n 2019          198           13.604        27.89         18.9          20.07 \r\n 2019          199           25.992        31.92         21.72         0 \r\n 2019          200           27.93         32.75         23.83         0 \r\n 2019          201           14.8295       27.4          17.49         10.16 \r\n 2019          202           23.199        24.97         15.45         0 \r\n 2019          203           26.991        22.83         14.06         0 \r\n 2019          204           27.171        25.41         11.38         0 \r\n 2019          205           27.117        26.52         11.51         0 \r\n 2019          206           7.7235        23.76         13.78         6.858 \r\n 2019          207           26.8375       28.52         18.9          0 \r\n 2019          208           26.4005       30.92         17.71         5.08 \r\n 2019          209           15.656        26.16         19.39         4.064 \r\n 2019          210           25.327        24.92         14.17         0.254 \r\n 2019          211           28.272        26.08         9.72          0 \r\n 2019          212           26.676        24.64         12.21         0 \r\n 2019          213           26.714        26.88         13.37         0 \r\n 2019          214           26.9515       26.65         14.42         0 \r\n 2019          215           27.1795       28.5          15.04         0 \r\n 2019          216           25.2605       29.25         14.61         0 \r\n 2019          217           23.123        29.14         18.1          15.75 \r\n 2019          218           26.6665       27.61         15.5          0 \r\n 2019          219           26.334        28.81         15.68         0 \r\n 2019          220           26.695        23.79         12.57         0 \r\n 2019          221           26.5145       26.41         9.99          0 \r\n 2019          222           19.42         27.61         16.35         5.08 \r\n 2019          223           4.88          26.06         18.01         0 \r\n 2019          224           5.11          26.2          17.69         0.508 \r\n 2019          225           25.49         28.42         15.18         0.254 \r\n 2019          226           11.47         22.59         12.97         0 \r\n 2019          227           21.49         23.96         12.91         0 \r\n 2019          228           26.02         26.57         12.62         0 \r\n 2019          229           13.94         26.84         12.08         0.762 \r\n 2019          230           17.06         24.72         13.36         13.72 \r\n 2019          231           26.1          26.78         12.08         0 \r\n 2019          232           24.58         28.06         18.13         14.73 \r\n 2019          233           14.03         21.38         11.79         0 \r\n 2019          234           25.81         23.7          9.91          0 \r\n 2019          235           23.02         24.36         11.15         0 \r\n 2019          236           25.75         22.72         13.03         0 \r\n 2019          237           11.59         21.13         13.3          0 \r\n 2019          238           6.94          23.38         14.39         1.27 \r\n 2019          239           25.11         22.97         10.69         0 \r\n 2019          240           24.92         23.62         8.95          0 \r\n 2019          241           22.71         25.13         10.18         0 \r\n 2019          242           23.77         22.73         6.986         0 \r\n 2019          243           13.98         18.2          11.57         2.794 \r\n 2019          244           18.2          24.01         10.26         0 \r\n 2019          245           15.58         27.15         16.73         0 \r\n 2019          246           16.01         26.23         11.72         2.794 \r\n 2019          247           22.24         23.55         7.581         0 \r\n 2019          248           20.66         27.67         10.12         0 \r\n 2019          249           21.72         24.74         11.88         0 \r\n 2019          250           9.84          20.93         11.88         0.254 \r\n 2019          251           4.99          17.25         13.46         0.508 \r\n 2019          252           6.82          22.93         15.06         7.874 \r\n 2019          253           17.13         28.24         17.22         9.4 \r\n 2019          254           7.57          23.74         18.05         13.46 \r\n 2019          255           2.53          24.93         14.51         18.8 \r\n 2019          256           14.2          20.13         9.14          0 \r\n 2019          257           15.93         23.39         9.17          0 \r\n 2019          258           16.12         30.98         14.87         0 \r\n 2019          259           20.17         30.01         15.11         0 \r\n 2019          260           20.07         30.88         18.94         0 \r\n 2019          261           11.3          27.29         20.12         13.21 \r\n 2019          262           19.28         27.3          19.45         3.048 \r\n 2019          263           19.31         31.16         18.67         16 \r\n 2019          264           5.01          25.01         20.54         0 \r\n 2019          265           11.11         20.51         9.24          8.89 \r\n 2019          266           19.64         25.28         7.299         0 \r\n 2019          267           18.81         29.54         16.75         13.97 \r\n 2019          268           16.45         17.5          9.56          0 \r\n 2019          269           18.56         21.67         5.462         0 \r\n 2019          270           9.33          22.77         8.93          0.254 \r\n 2019          271           18.36         20.5          8.99          2.032 \r\n 2019          272           1.23638       19.18         10.46         1.27 \r\n 2019          273           17.31         32.25         18.49         0 \r\n 2019          274           2.46413       19.74         10.77         73.152 \r\n 2019          275           2.396736      12.78         9.55          14.478 \r\n 2019          276           7.26624       12.2          5.552         0 \r\n 2019          277           2.361312      13.63         3.704         0 \r\n 2019          278           5.9           16.07         6.481         36.068 \r\n 2019          279           17.28         19.1          3.37          0 \r\n 2019          280           17.27         20.7          2.33          0 \r\n 2019          281           16.87         21.72         7.602         0 \r\n 2019          282           12.93         21.16         9.68          6.604 \r\n 2019          283           2.9           17.38         3.118         15.748 \r\n 2019          284           12.1          3.239        -0.725         0.254 \r\n 2019          285           3.849984      3.38         -2.658         3.556 \r\n 2019          286           7.76736       7.823        -0.34          0 \r\n 2019          287           15.75         15.1         -4.513         0 \r\n 2019          288           12.96         12.06         4.472         0 \r\n 2019          289           6.707232      9.89          1.076         0 \r\n 2019          290           15.04         16.85        -1.656         0 \r\n 2019          291           14.87         22.25         6.057         0 \r\n 2019          292           13.25         19.56         2.976         0.508 \r\n 2019          293           9.92          18.15         0.894         3.048 \r\n 2019          294           2             12.62         4.937         38.862 \r\n 2019          295           3.673728      10.02        -0.461         0.508 \r\n 2019          296           2.428704      9.2          -2.376         2.032 \r\n 2019          297           14.11         8.19         -4.22          0 \r\n 2019          298           13.73         11.91        -5.689         0 \r\n 2019          299           13.1          10.82        -1.009         0 \r\n 2019          300           4.517856      6.814        -0.866         0 \r\n 2019          301           9.504         2.754        -4.534         0 \r\n 2019          302           11.1888       5.209        -8.17          0.254 \r\n 2019          303           5.971968      0.216        -4.858         0 \r\n 2019          304           11.97504      3.218        -8.52          0 \r\n 2019          305           4.06944       6.219        -3.57          0 \r\n 2019          306           8.06976       6.914        -3.723         0 \r\n 2019          307           5.99616       7.48         -3.804         5.842 \r\n 2019          308           5.627232      5.845        -1.778         0 \r\n 2019          309           7.2144       -0.32         -7.627         0 \r\n 2019          310           4.295808      0.388        -10.37         4.318 \r\n 2019          311           11.75904     -4.442        -16.54         0 \r\n 2019          312           9.73728       2.37         -8.96          0 \r\n 2019          313           1.751328      8.45         -3.541         0 \r\n 2019          314           2.538432      1.076        -7.028         4.826 \r\n 2019          315           8.7264       -6.988        -15.67         0 \r\n 2019          316           10.22112     -8.9          -20.03         0 \r\n 2019          317           3.332448     -0.968        -9.51          0 \r\n 2019          318           10.10016      0.327        -9.75          0 \r\n 2019          319           10.39         11.19        -8.63          0.254 \r\n 2019          320           4.796928      7.662        -1.048         0 \r\n 2019          321           2.350944      3.755        -0.219         1.778 \r\n 2019          322           4.670784      7.318        -1.19          4.318 \r\n 2019          323           2.6136        8.28         -1.372         0.254 \r\n 2019          324           8.21          11.69        -1.16          6.096 \r\n 2019          325           2.07792       10.46        -6.258         11.176 \r\n 2019          326           7.776        -1.505        -9.16          0 \r\n 2019          327           2.731968      4.856        -8.61          0 \r\n 2019          328           9.14          8.21         -1.96          0 \r\n 2019          329           2.7           8.19         -0.088         0 \r\n 2019          330           1.270944      2.966        -0.654         9.652 \r\n 2019          331           5.804352     -0.472        -3.956         5.334 \r\n 2019          332           5.030208     -2.75         -5.416         0 \r\n 2019          333           3.843072      0.216        -2.8           6.35 \r\n 2019          334           1.852416      2.006         0.165         5.08 \r\n 2019          335           4.547232      0.964        -8.58          3.048 \r\n 2019          336           8.19936      -2.304        -13.31         0 \r\n 2019          337           8.62          2.228        -5.67          0.254 \r\n 2019          338           8.05          4.795        -3.57          0 \r\n 2019          339           8.42          7.965        -3.864         0.254 \r\n 2019          340           5.182272     -1.312        -8.28          0 \r\n 2019          341           8.26          4.734        -4.777         0 \r\n 2019          342           1             3.401        -1.738         0 \r\n 2019          343           5.699808     -0.897        -15.79         0 \r\n 2019          344           7.45632      -10.99        -17.48         0 \r\n 2019          345           8.6832       -8.9          -22.35         0 \r\n 2019          346           1             0.692        -13.35         0.254 \r\n 2019          347           2.007072     -3.074        -14.2          0 \r\n 2019          348           7.22304      -4.068        -17.46         0 \r\n 2019          349           4.127328     -9.59         -18.66         0 \r\n 2019          350           4.212        -5.122        -16.14         0 \r\n 2019          351           1            -2.466        -14.02         0 \r\n 2019          352           5.925312     -5.952        -17.62         0 \r\n 2019          353           8.47          2.946        -10.01         0 \r\n 2019          354           8.35          4.814        -5.122         0 \r\n 2019          355           8.3           6.914        -7.474         0 \r\n 2019          356           8.34          8.17         -2.152         0 \r\n 2019          357           0.0278208     4.947        -2.244         0 \r\n 2019          358           7.02          6.733        -0.968         0 \r\n 2019          359           7.2           10.73        -1.869         0 \r\n 2019          360           1.2           0.57         -3.246         0 \r\n 2019          361           8.46          4.098        -5.406         0 \r\n 2019          362           1             3.804        -0.502         20.828 \r\n 2019          363           1             5.238        -2.223         1.27 \r\n 2019          364           3.431808     -2.213        -6.602         0 \r\n 2019          365           3.713472     -3.46         -10.77         0 \r\n 2020          1             3.4           2.128        -8.94          0 \r\n 2020          2             2.39          1.824        -1.697         0.254 \r\n 2020          3             1            -0.401        -5.142         12.192 \r\n 2020          4             6            -1.93         -9.38          0 \r\n 2020          5             6.8           3.058        -9.77          5.588 \r\n 2020          6             1.346112      1.196        -11.78         0 \r\n 2020          7             8.04         -0.714        -14.39         0 \r\n 2020          8             7.85376      -5.385        -18.64         0 \r\n 2020          9             7.14          4.552        -6.054         0 \r\n 2020          10            2.948832     -5.112        -12.94         0 \r\n 2020          11            8.38944      -9.65         -16.73         0 \r\n 2020          12            2.353536     -4.463        -17.26         3.81 \r\n 2020          13            1.82         -0.684        -6.836         3.048 \r\n 2020          14            4.8           0.114        -14.22         0.508 \r\n 2020          15            2.383776     -5.061        -20.11         0 \r\n 2020          16            9.0288       -16.27        -23.85         0 \r\n 2020          17            2.281824     -3.196        -18.81         11.176 \r\n 2020          18            6.828192     -2.7          -20.15         0 \r\n 2020          19            6.93792      -15.74        -20.68         0 \r\n 2020          20            7.3872       -13.3         -21.87         0 \r\n 2020          21            8.52768      -6.866        -21.99         0 \r\n 2020          22            5.1           0.236        -6.846         4.572 \r\n 2020          23            2.287008     -0.563        -2.041         0.254 \r\n 2020          24            1.540512     -1.09         -3.044         0 \r\n 2020          25            2.6          -1.12         -7.78          0 \r\n 2020          26            4.69         -1.758        -8.29          3.048 \r\n 2020          27            0.1689984    -2.912        -8.17          0 \r\n 2020          28            3.05424      -7.313        -10.36         0 \r\n 2020          29            8.02         -4.858        -15.46         0.254 \r\n 2020          30            1.92672      -3.58         -14.47         0 \r\n 2020          31            1.8          -0.188        -3.642         2.794 \r\n 2020          32            12.21         2.43         -8.19          0 \r\n 2020          33            10.17         4.078        -2.791         0 \r\n 2020          34            12.11        -0.968        -6.014         0 \r\n 2020          35            9.43488      -5.994        -11.68         0 \r\n 2020          36            2.517696     -4.777        -14.83         0 \r\n 2020          37            3.141504     -1.697        -16.28         0 \r\n 2020          38            1.7          -4.798        -14.18         0 \r\n 2020          39            10.61856     -6.713        -22.27         0 \r\n 2020          40            1.990656     -0.442        -13.84         1.016 \r\n 2020          41            3.362688     -1.292        -18.42         0 \r\n 2020          42            9.7          -1.707        -11.52         0 \r\n 2020          43            9.1           0.508        -23.72         0.254 \r\n 2020          44            13.65984     -18.76        -27.1          0 \r\n 2020          45            12.77856     -8.79         -26.05         0 \r\n 2020          46            12.1          1.48         -10.09         0 \r\n 2020          47            13.2          0.246        -9.14          0 \r\n 2020          48            4.7           0.165        -5.101         11.684 \r\n 2020          49            13.2         -4.352        -13.47         0 \r\n 2020          50            12.72672     -11.6         -18.19         0 \r\n 2020          51            15.12864     -10.16        -21.68         0 \r\n 2020          52            15.76         2.956        -12.51         0 \r\n 2020          53            15.72         3.603        -5.304         0 \r\n 2020          54            15.8          6.452        -2.71          0 \r\n 2020          55            15.89         1.702        -3.52          0 \r\n 2020          56            16.34         0.852        -3.632         0 \r\n 2020          57            16.76        -2.132        -8.94          0 \r\n 2020          58            12.73        -2.446        -8.72          0 \r\n 2020          59            10.5         -3.298        -8.73          0 \r\n 2020          60            16.81         6.148        -8.92          0 \r\n 2020          61            11.61         7.782        -0.148         0 \r\n 2020          62            8.1           2.411        -1.697         0 \r\n 2020          63            17.55         7.48         -0.229         2.286 \r\n 2020          64            16.52         10           -2.031         0.254 \r\n 2020          65            6.5           4.594        -1.312         0 \r\n 2020          66            18.49         5.744        -3.601         0 \r\n 2020          67            18.23         16.06         0.195         0 \r\n 2020          68            18.29         18.45         2.622         0 \r\n 2020          69            1.78416       10.76        -3.004         2.54 \r\n 2020          70            1.874016      4.542        -4.898         4.064 \r\n 2020          71            10.07         10            0.185         0 \r\n 2020          72            13.56         12.74        -0.766         0 \r\n 2020          73            19.87         5.482        -3.236         0 \r\n 2020          74            10.0224      -0.563        -4.908         6.096 \r\n 2020          75            12.32064      3.644        -5.832         0 \r\n 2020          76            1.1664        4.795        -1.738         0 \r\n 2020          77            18.84         6.724        -4.798         0.254 \r\n 2020          78            5.6           6.491         2.32          7.366 \r\n 2020          79            2.1           5.604        -0.38          46.99 \r\n 2020          80            16.82208     -0.36         -7.272         2.794 \r\n 2020          81            19.04         3.694        -4.291         0 \r\n 2020          82            6.187968      4.047        -1.726         0.254 \r\n 2020          83            0.813024      5.966        -0.553         0.508 \r\n 2020          84            5.7           7.571         2.278         0 \r\n 2020          85            12.7          8.57          2.916         2.286 \r\n 2020          86            6.7           9.15          2.268         0 \r\n 2020          87            11.9          10.71         3.098         0.254 \r\n 2020          88            4             10.83         1.773         13.208 \r\n 2020          89            12.03         11.9          0.934         0.254 \r\n 2020          90            24.06         15           -2.041         0 \r\n 2020          91            23.73         13.53        -0.665         0 \r\n 2020          92            21.19         15.65         1.106         1.524 \r\n 2020          93            22.14         18.2          0.813         1.524 \r\n 2020          94            5.311872      0.852        -4.524         5.08 \r\n 2020          95            11.03328      6.774        -7.516         3.81 \r\n 2020          96            24.72         15.69        -3.186         0 \r\n 2020          97            1.76          14.67         2.512         0 \r\n 2020          98            18.57         24.6          7.581         0 \r\n 2020          99            13.83         13.1          0.458         0.254 \r\n 2020          100           11.1024       5.18         -3.236         0 \r\n 2020          101           25.82         10.75        -6.745         0 \r\n 2020          102           13.36         14.37        -0.098         4.064 \r\n 2020          103           3.07584       7.43         -4.605         6.35 \r\n 2020          104           16.82208      1.196        -7.232         1.778 \r\n 2020          105           26.59         0.651        -6.745         0 \r\n 2020          106           27.31         1.379        -9.33          0 \r\n 2020          107           24.01         4.956        -8.39          0 \r\n 2020          108           24            10.42        -1.353         0 \r\n 2020          109           27.03         21.14        -1.96          0 \r\n 2020          110           27.55         12.38        -2.072         0 \r\n 2020          111           26.33         18.94        -4.33          0 \r\n 2020          112           27.6          15.28        -4.087         0 \r\n 2020          113           23.1          27.82         6.733         0 \r\n 2020          114           26.52         22.38         4.028         0 \r\n 2020          115           23.78         17.21         6.219         0 \r\n 2020          116           21.67         18.43         1.379         0 \r\n 2020          117           27.92         21.24         4.674         0 \r\n 2020          118           27.79         25.4          8.57          0 \r\n 2020          119           7.24          20.47         7.036         3.81 \r\n 2020          120           26.11         16.46         5.018         0 \r\n 2020          121           29.64         22.1          1.783         0 \r\n 2020          122           23.91         28.27         4.866         0 \r\n 2020          123           14.14         22.5          5.916         0 \r\n 2020          124           29.1          26.33         3.26          0 \r\n 2020          125           16.32         14.85         6.128         0 \r\n 2020          126           5.2704        9.07          5.3           5.08 \r\n 2020          127           17.33184      16.44         3.401         0 \r\n 2020          128           13.4352       16.41         0.864         0 \r\n 2020          129           27.28512      12.5         -0.289         0 \r\n 2020          130           20.20896      20.12        -4.736         1.27 \r\n 2020          131           13.7808       8.13          2.198         0.762 \r\n 2020          132           23.20704      13.03         1.702         0 \r\n 2020          133           23.59584      16.34        -0.502         0 \r\n 2020          134           12.95136      16.71         3.917         2.286 \r\n 2020          135           25.55712      23.75         10.97         0 \r\n 2020          136           26.93952      22.79         6.592         0 \r\n 2020          137           18.76608      24.07         7.864         12.192 \r\n 2020          138           5.01552       14.4          10.13         11.43 \r\n 2020          139           12.096        15.04         8.89          0 \r\n 2020          140           10.13472      17.01         9.72          0 \r\n 2020          141           7.4736        17.23         12.18         0.254 \r\n 2020          142           7.128         16.38         12.48         0 \r\n 2020          143           9.14112       20.47         12.48         1.27 \r\n 2020          144           10.4112       20.96         12.04         3.302 \r\n 2020          145           17.07264      26.96         11.26         30.988 \r\n 2020          146           16.52832      24.88         16.56         15.24 \r\n 2020          147           14.70528      25.25         17.73         11.684 \r\n 2020          148           14.36832      25.6          17.76         0 \r\n 2020          149           16.42464      25.09         12.95         0 \r\n 2020          150           25.4016       21.08         9.42          0.762 \r\n 2020          151           26.42976      23.18         7.814         0 \r\n 2020          152           18.68832      23.97         10            0 \r\n 2020          153           23.98464      33.4          16.33         0 \r\n 2020          154           24.84864      37.32         19.42         0 \r\n 2020          155           26.70624      31.67         16.64         0 \r\n 2020          156           25.62624      34.4          17.63         0 \r\n 2020          157           26.02368      28.68         18.74         18.288 \r\n 2020          158           20.38176      27.97         16.58         0 \r\n 2020          159           26.60256      33.09         19.45         0 \r\n 2020          160           27.76896      34.81         21.52         0 \r\n 2020          161           8.70048       25.75         16.24         3.556 \r\n 2020          162           20.78784      22.89         13.25         1.016 \r\n 2020          163           27.44064      27.89         9.9           0 \r\n 2020          164           28.47744      30.92         9.98          0 \r\n 2020          165           24.25248      26.08         14.87         0 \r\n 2020          166           27.3456       27.18         13.02         0 \r\n 2020          167           26.3088       31.91         17.35         0 \r\n 2020          168           27.93312      31.03         18.13         0 \r\n 2020          169           28.15776      30.94         16.18         0 \r\n 2020          170           19.7856       31.13         18.96         54.102 \r\n 2020          171           14.35104      22.59         17.09         0.762 \r\n 2020          172           16.10496      24.82         16.09         3.302 \r\n 2020          173           19.17216      28.59         16            5.08 \r\n 2020          174           11.29248      22.23         16.33         24.384 \r\n 2020          175           20.90016      22.65         12.66         0 \r\n 2020          176           24.33888      26.12         10.42         0 \r\n 2020          177           26.18784      28.57         13.93         17.526 \r\n 2020          178           19.80288      27.59         18.1          1.778 \r\n 2020          179           25.10784      29.86         17.1          0 \r\n 2020          180           16.06176      29.53         18.3          0 \r\n 2020          181           15.552        29.62         22.24         0 \r\n 2020          182           18.08352      29.02         21.4          0 \r\n 2020          183           22.23936      29            19.08         0 \r\n 2020          184           26.84448      30.57         17.99         0 \r\n 2020          185           26.0928       30.8          18.13         0 \r\n 2020          186           20.51136      32.8          17.69         4.318 \r\n 2020          187           26.24832      31.91         17.02         0 \r\n 2020          188           24.22656      30.66         18.34         0 \r\n 2020          189           24.21792      30.77         18.96         0 \r\n 2020          190           25.71264      32.79         20.38         0 \r\n 2020          191           10.57536      28.21         16.77         13.208 \r\n 2020          192           26.87904      31.27         15.84         0 \r\n 2020          193           21.43584      30.62         17.1          23.876 \r\n 2020          194           27.2592       28.79         14.87         0 \r\n 2020          195           25.84224      29.24         14.22         0 \r\n 2020          196           17.34048      29.22         16.41         0 \r\n 2020          197           10.35072      24.25         10.32         0.254 \r\n 2020          198           27.57024      29.42         7.097         0.254 \r\n 2020          199           23.544        31.08         16.17         0 \r\n 2020          200           22.48128      32.52         21.24         0.762 \r\n 2020          201           24.05376      28.25         17.74         0 \r\n 2020          202           14.27328      27.65         15.26         0 \r\n 2020          203           14.63616      27.19         15.32         4.572 \r\n 2020          204           26.49888      26.8          12.74         0 \r\n 2020          205           24.83136      28.98         13.45         0 \r\n 2020          206           25.21152      32.58         18.74         0 \r\n 2020          207           20.66688      32.63         22.55         0 \r\n 2020          208           11.45664      28.43         19.64         1.016 \r\n 2020          209           26.2224       27.97         13.61         0 \r\n 2020          210           22.79232      29.71         14.15         0 \r\n 2020          211           24.45984      30.85         17.81         0 \r\n 2020          212           25.15968      27.24         13.43         0 \r\n 2020          213           25.02144      28.38         12.28         0 \r\n 2020          214           22.94784      28.67         11.01         0 \r\n 2020          215           23.1984       24.58         11.02         0 \r\n 2020          216           20.6064       24.32         7.662         0 \r\n 2020          217           24.93504      26.13         5.26          0 \r\n 2020          218           15.01632      22.78         8.37          0 \r\n 2020          219           21.15936      27.54         15.72         0.254 \r\n 2020          220           19.56096      29.85         16.91         0 \r\n 2020          221           14.6016       30.28         20.11         0 \r\n 2020          222           18.2736       31.02         18.95         26.924 \r\n 2020          223           9.69408       25.32         12.44         2.794 \r\n 2020          224           25.12512      29.13         10.2          0 \r\n 2020          225           15.35328      28.46         14.23         0 \r\n 2020          226           18.86976      31.21         20.85         0 \r\n 2020          227           21.26304      29.89         18.81         0 \r\n 2020          228           23.86368      27.89         11.96         0 \r\n 2020          229           23.16384      29.98         12.37         0 \r\n 2020          230           23.30208      25.59         12.02         0 \r\n 2020          231           23.976        27.76         8.65          0 \r\n 2020          232           24.07104      28.72         9.09          0 \r\n 2020          233           20.41632      28.84         13.83         0 \r\n 2020          234           18.7056       31.32         16.71         0 \r\n 2020          235           20.09664      30.75         17.22         13.97 \r\n 2020          236           21.62592      32.83         15.6          0 \r\n 2020          237           19.46592      32.91         17.67         0 \r\n 2020          238           20.736        32.93         16.63         0 \r\n 2020          239           21.35808      32.52         18.74         0 \r\n 2020          240           19.77696      33.6          19.4          0 \r\n 2020          241           16.77888      30.13         17.11         10.668 \r\n 2020          242           21.33216      25.54         10.87         0 \r\n 2020          243           17.60832      26.5          8.66          0 \r\n 2020          244           21.09024      24.41         7.622         4.064 \r\n 2020          245           14.79168      24.09         7.318         0 \r\n 2020          246           22.10976      30.06         10.48         0 \r\n 2020          247           21.76416      22.89         7.46          0 \r\n 2020          248           18.21312      27.68         6.016         0 \r\n 2020          249           19.73376      30.4          7.147         0.762 \r\n 2020          250           18.4896       32.06         15.18         38.354 \r\n 2020          251           16.39008      20.67         8.53          0 \r\n 2020          252           1.813536      9.3           6.016         21.082 \r\n 2020          253           3.374784      8.59          6.491         8.636 \r\n 2020          254           7.76736       13.73         6.452         7.874 \r\n 2020          255           3.245184      13.99         9.58          1.27 \r\n 2020          256           8.51904       17.83         8.57          5.08 \r\n 2020          257           19.03392      26.36         6.35          0.254 \r\n 2020          258           15.56064      26.39         9.82          0 \r\n 2020          259           17.68608      28.04         12.33         0 \r\n 2020          260           16.13088      24.54         7.682         0 \r\n 2020          261           17.40096      21.48         4.856         0 \r\n 2020          262           19.04256      20.89         1.945         0 \r\n 2020          263           15.12864      21.49         6.329         0 \r\n 2020          264           15.18048      24.01         9.2           0 \r\n 2020          265           13.09824      26.39         10.67         0 \r\n 2020          266           16.7184       28.18         11.75         0 \r\n 2020          267           16.94304      28.33         10.55         0 \r\n 2020          268           12.16512      28.31         13.93         0 \r\n 2020          269           15.94944      31.72         13.75         0 \r\n 2020          270           12.16512      29.64         13.2          0 \r\n 2020          271           6.024672      19.92         9.7           0 \r\n 2020          272           9.32256       14.96         8.43          0.254 \r\n 2020          273           10.60128      20.16         5.614         0 \r\n 2020          274           15.38784      18.96         7.612         0.762 \r\n 2020          275           9.73728       14.11        -0.766         0 \r\n 2020          276           14.9472       13.98        -3.004         0 \r\n 2020          277           7.3872        14.17         0.67          0 \r\n 2020          278           16.70112      16.32        -3.034         0 \r\n 2020          279           14.9904       23.44         4.614         0 \r\n 2020          280           14.78304      27.19         4.876         0 \r\n 2020          281           15.15456      25.59         4.432         0 \r\n 2020          282           14.472        24.61         1.896         0 \r\n 2020          283           12.3552       28.99         14.37         0 \r\n 2020          284           14.66208      26.2          6.814         0 \r\n 2020          285           13.20192      27.6          9.26          0 \r\n 2020          286           14.99904      20.35         6.35          8.89 \r\n 2020          287           14.13504      16.69         2.087         0 \r\n 2020          288           4.077216      17.89         3.017         0 \r\n 2020          289           14.4288       10.58        -2.69          0 \r\n 2020          290           11.00736      9.03         -3.196         0 \r\n 2020          291           10.03104      18.38         2.411         0 \r\n 2020          292           11.88864      4.199        -2.304         0 \r\n 2020          293           4.169664      1.096        -2.021         0 \r\n 2020          294           2.376864      3.927        -0.24          1.016 \r\n 2020          295           7.01568       7.147         0.975         0 \r\n 2020          296           1.336608      3.765         0.914         9.652 \r\n 2020          297           4.130784      1.906        -6.095         0 \r\n 2020          298           7.76736       0.934        -8.92          0 \r\n 2020          299           4.4496       -2.122        -5.679         0 \r\n 2020          300           11.3616      -2.851        -9.93          1.27 \r\n 2020          301           12.7008       0.428        -12.62         0 \r\n 2020          302           11.7936       11.36        -4.614         0 \r\n 2020          303           5.748192      3.804        -3.014         0 \r\n 2020          304           8.8992        8.8          -0.886         0 \r\n 2020          305           9.78048       15.43         0.752         0 \r\n 2020          306           11.7504       4.835        -7.688         0 \r\n 2020          307           10.6704       16.85        -7.048         0 \r\n 2020          308           11.07648      24.85        -2.041         0 \r\n 2020          309           10.47168      22.56         2.734         0 \r\n 2020          310           10.46304      23.13         1.035         0 \r\n 2020          311           10.35072      24.26         2.966         0 \r\n 2020          312           10.29024      22.01         10.91         0 \r\n 2020          313           9.55584       21.84         11.29         0 \r\n 2020          314           1.804032      18.51        -0.786         18.796 \r\n 2020          315           2.013984     -0.159        -4.614         10.414 \r\n 2020          316           11.232        6.602        -5.913         4.318 \r\n 2020          317           5.374944      2.158        -7.12          0 \r\n 2020          318           9.97056       3.522        -10.46         0 \r\n 2020          319           1.380672      7.46         -1.98          0.254 \r\n 2020          320           3.642624      3.138        -5.324         0 \r\n 2020          321           9.32256       8.46         -5.964         0 \r\n 2020          322           4.30272       2.826        -9.03          0 \r\n 2020          323           7.91424       15.76        -0.584         0 \r\n 2020          324           7.27488       17.95         3.866         0 \r\n 2020          325           6.103296      6.956        -4.636         0 \r\n 2020          326           8.95968       6.774        -8.85          0 \r\n 2020          327           8.32896       8.45         -5.304         0 \r\n 2020          328           6.335712      4.088        -10.24         0 \r\n 2020          329           0.76896       3.492        -0.159         20.32 \r\n 2020          330           2.395872      3.058         0.813         0 \r\n 2020          331           6.213024      4.594        -2.456         0 \r\n 2020          332           8.44128       3.542        -4.442         0 \r\n 2020          333           8.2944        10.41        -3.885         0 \r\n 2020          334           5.387904      1.713        -6.582         0 \r\n 2020          335           8.02656      -0.988        -11.17         0 \r\n 2020          336           8.19072       4.512        -12.68         0 \r\n 2020          337           8.23392       7.581        -11.29         0 \r\n 2020          338           7.9056        6.36         -7.15          0 \r\n 2020          339           7.72416       7.722        -6.46          0 \r\n 2020          340           7.61184       7.258        -8.85          0 \r\n 2020          341           2.771712      1.966        -5.548         0 \r\n 2020          342           1.498176     -0.866        -7.841         0 \r\n 2020          343           6.054048      9.22         -3.662         0 \r\n 2020          344           7.44768       11.75        -3.439         0 \r\n 2020          345           6.424704      9.73         -2.71          0 \r\n 2020          346           2.781216      4.29         -0.31          0 \r\n 2020          347           5.994432      0.954        -8.85          0 \r\n 2020          348           3.0672       -1.859        -8.65          0 \r\n 2020          349           5.349024     -6.755        -13.21         0 \r\n 2020          350           3.33072      -4.291        -13.03         0 \r\n 2020          351           6.598368     -0.886        -12.96         0 \r\n 2020          352           1.704672     -3.196        -8.35          0 \r\n 2020          353           3.672         4.108        -5.081         0 \r\n 2020          354           2.745792     -0.786        -11.42         0 \r\n 2020          355           6.7392        5.814        -11.66         0 \r\n 2020          356           5.544288      6.028        -7.414         0 \r\n 2020          357           6.784128      7.722        -9             0 \r\n 2020          358           0.831168      7.762        -16.36         0 \r\n 2020          359           7.78464      -14.73        -19.93         0 \r\n 2020          360           7.49952      -5.689        -21.98         0 \r\n 2020          361           6.88608      -0.482        -14.19         0 \r\n 2020          362           2.333664     -3.51         -7.313         0 \r\n 2020          363           7.18848      -4.554        -15.99         0 \r\n 2020          364           1.848096     -3.58         -13.55         2.794 \r\n 2020          365           5.077728     -3.622        -14.57         0 \r\n 2020          366           5.150304     -6.358        -11.93         0 \r\n 2021          1             4.334688     -3.662        -15.1          0 \r\n 2021          2             6.671808     -4.168        -16.87         0.508 \r\n 2021          3             6.716736     -1.778        -15.11         0 \r\n 2021          4             6.770304      3.148        -6.724         0.254 \r\n 2021          5             6.11712       1.702        -11.27         0 \r\n 2021          6             3.560544      0.174        -5.081         1.524 \r\n 2021          7             5.02416       0.145        -5.913         0 \r\n 2021          8             1.750464     -2.142        -7.313         0 \r\n 2021          9             2.153952     -6.784        -7.982         0 \r\n 2021          10            2.606688     -1.392        -7.749         0 \r\n 2021          11            8.26848       4.532        -5.588         0 \r\n 2021          12            8.13024       6.714        -7.678         0 \r\n 2021          13            6.200928      7.742        -2.851         0 \r\n 2021          14            1.708128      2.492        -1.332         3.81 \r\n 2021          15            4.042656      0.975        -3.844         3.81 \r\n 2021          16            3.30912      -3.774        -6.43          0 \r\n 2021          17            5.320512     -2.102        -9.12          0 \r\n 2021          18            8.95968      -3.52         -8.96          0 \r\n 2021          19            6.118848      0.327        -16.52         0.254 \r\n 2021          20            9.75456       3.218        -16.87         0 \r\n 2021          21            8.93376       1.39         -11.88         0 \r\n 2021          22            9.49536      -8.17         -15.57         0 \r\n 2021          23            4.711392     -6.704        -15.1          0 \r\n 2021          24            9.2448       -4.949        -14.2          0 \r\n 2021          25            4.656096     -6.348        -15.38         0 \r\n 2021          26            9.72864      -8.31         -13.63         0 \r\n 2021          27            9.68544      -4.818        -17.75         0.254 \r\n 2021          28            9.51264      -7.424        -18.56         0 \r\n 2021          29            9.072        -4.656        -8.88          0 \r\n 2021          30            2.727648     -1.898        -4.696         0 \r\n 2021          31            4.76064      -1.372        -4.605         0 \r\n 2021          32            5.196096     -4.352        -6.856         0 \r\n 2021          33            6.75648      -6.176        -9.16          0 \r\n 2021          34            8.66592       0.864        -9.93          0 \r\n 2021          35            7.75008       0.873        -14.33         4.826 \r\n 2021          36            11.68128     -11.7         -19.29         0 \r\n 2021          37            8.62272      -14.85        -27.39         0 \r\n 2021          38            9.44352      -19.18        -26.99         0 \r\n 2021          39            10.77408     -17.89        -26.71         0 \r\n 2021          40            13.24512     -12.88        -28.53         0 \r\n 2021          41            11.74176     -11.52        -23.36         0 \r\n 2021          42            8.27712      -18.99        -24.33         0 \r\n 2021          43            10.48032     -22.07        -25.32         0 \r\n 2021          44            12.6144      -18.7         -27.03         0 \r\n 2021          45            10.41984     -23.89        -27.4          0 \r\n 2021          46            13.1328      -21.24        -30.43         0 \r\n 2021          47            13.53024     -14.68        -30.96         0 \r\n 2021          48            10.30752     -12.62        -21.51         0 \r\n 2021          49            13.09824     -9.78         -16.76         0 \r\n 2021          50            14.36832     -5.71         -21.6          0.762 \r\n 2021          51            13.84128     -5.913        -22.84         0 \r\n 2021          52            5.411232     -4.473        -12.49         8.382 \r\n 2021          53            13.2192       2.471        -9.71          3.302 \r\n 2021          54            13.66848      3.784        -6.988         0 \r\n 2021          55            12.13056      0.944        -7.495         0 \r\n 2021          56            11.59488     -0.928        -9.57          0 \r\n 2021          57            14.82624      1.824        -7.069         0 \r\n 2021          58            14.54112      4.33         -7.8           0 \r\n 2021          59            11.04192      1.309        -7.89          0 \r\n 2021          60            14.39424     -3.57         -8.66          0 \r\n 2021          61            15.9408       6.43         -8.09          0 \r\n 2021          62            15.91488      12.79        -2.538         0 \r\n 2021          63            15.66432      7.328        -1.16          0 \r\n 2021          64            12.80448      6.704        -2.75          0 \r\n 2021          65            16.07904      9.55         -1.879         0 \r\n 2021          66            15.6816       16.2          0.772         0 \r\n 2021          67            15.61248      16.24        -0.573         0 \r\n 2021          68            14.54112      18.05         4.482         0 \r\n 2021          69            7.0848        19.6         -0.826         13.716 \r\n 2021          70            17.29728      9.88         -0.928         0 \r\n 2021          71            17.08992      9.71         -4.199         0 \r\n 2021          72            15.73344      14.09        -2.953         0 \r\n 2021          73            2.141856      5.624         0.499         1.778 \r\n 2021          74            7.59456       0.55         -1.94          2.286 \r\n 2021          75            8.8992        0.894        -2.254         0.762 \r\n 2021          76            9.581761      3.34         -0.826         0 \r\n 2021          77            17.50464      7.732        -2.528         0 \r\n 2021          78            19.50048      10.78        -3.966         0 \r\n 2021          79            19.30176      15.56        -1.818         0 \r\n 2021          80            15.05088      17.64         2.976         0 \r\n 2021          81            7.23168       13.58        -1.413         2.794 \r\n 2021          82            3.272832      10.52         6.108         17.526 \r\n 2021          83            4.7952        8.79          3.058         6.35 \r\n 2021          84            14.23872      9.63          0.53          0 \r\n 2021          85            11.43936      11.5         -1.15          0 \r\n 2021          86            5.302368      8.96          1.137         12.7 \r\n 2021          87            20.75328      8.55         -1.16          0 \r\n 2021          88            20.58048      22.93         2.35          0 \r\n 2021          89            16.07904      10.57        -4.736         0 \r\n 2021          90            14.45472      2.45         -8.12          0 \r\n 2021          91            21.79872      8.41         -10.33         0 \r\n 2021          92            21.0384       18.21        -1.879         0 \r\n 2021          93            21.6          22.81         2.218         0 \r\n 2021          94            20.304        29.23         2.532         0 \r\n 2021          95            20.09664      28.9          12.16         0 \r\n 2021          96            14.09184      25.2          13.13         0 \r\n 2021          97            13.88448      24.9          13.61         11.176 \r\n 2021          98            6.89904       13.89         8.51          4.064 \r\n 2021          99            6.800544      9.74          5.835         1.27 \r\n 2021          100           10.20384      10.78         5.604         0 \r\n 2021          101           16.29504      13.29         1.804         0 \r\n 2021          102           20.4336       13            2.572         0 \r\n 2021          103           16.81344      7.076         0.55          0 \r\n 2021          104           17.54784      8.82         -1.322         0 \r\n 2021          105           12.096        9.05         -0.026         0 \r\n 2021          106           10.40256      13.13         4.29          0 \r\n 2021          107           20.54592      16.22         1.096         0 \r\n 2021          108           21.80736      17.73        -0.866         0 \r\n 2021          109           13.62528      5.2          -4.898         0.254 \r\n 2021          110           16.13952      7.128        -6.115         0 \r\n 2021          111           22.9824       8.07         -7.394         0 \r\n 2021          112           24.56352      16.92        -5.548         0 \r\n 2021          113           9.16704       15.54         3.37          0 \r\n 2021          114           20.39904      12.28        -1.19          0 \r\n 2021          115           11.20608      9.62         -2.609         3.556 \r\n 2021          116           13.71168      28.52         5.26          0 \r\n 2021          117           13.9536       21.76         8.84          0 \r\n 2021          118           18.74016      18.68         6.269         0 \r\n 2021          119           24.192        21.77         3.026         0 \r\n 2021          120           23.976        21.82         4.896         0 \r\n 2021          121           24.54624      34.2          12.06         0 \r\n 2021          122           20.77056      29            14.36         9.906 \r\n 2021          123           14.67936      19.74         7.662         3.302 \r\n 2021          124           26.86176      16.1          2.34          0 \r\n 2021          125           16.7616       16.21        -0.3           0 \r\n 2021          126           21.41856      16.04         2.38          0 \r\n 2021          127           27.75168      16.71         5.038         0 \r\n 2021          128           6.699456      11.49         1.369         17.78 \r\n 2021          129           21.96288      16.28         2.875         0.254 \r\n 2021          130           20.72736      15.96         2.046         0 \r\n 2021          131           26.87904      16.1         -0.766         0 \r\n 2021          132           25.03008      19.03         0.873         0 \r\n 2021          133           27.01728      21            1.966         0 \r\n 2021          134           8.77824       16.92         6.854         0 \r\n 2021          135           21.2112       23.42         5.472         2.032 \r\n 2021          136           11.24928      19.94         8.59          0 \r\n 2021          137           13.59936      21.46         8.67          0 \r\n 2021          138           3.658176      17.5          12.92         1.778 \r\n 2021          139           8.6832        25.22         16.91         6.604 \r\n 2021          140           7.2576        22.3          16.02         26.416 \r\n 2021          141           15.38784      25.54         18.27         12.7 \r\n 2021          142           15.88032      26.29         16.18         0 \r\n 2021          143           16.10496      29.1          18.03         0 \r\n 2021          144           22.80096      30.66         18.82         0 \r\n 2021          145           21.66048      30.4          16.26         0 \r\n 2021          146           28.10592      22.89         11.03         0 \r\n 2021          147           4.991328      15.42         5.491         13.97 \r\n 2021          148           9.5472        10.01         3.25          0.254 \r\n 2021          149           26.60256      16.82         0.469         0 \r\n 2021          150           6.496416      14.7          8.59          2.032 \r\n 2021          151           24.3216       24.58         7.056         4.826 \r\n 2021          152           27.3456       26.31         8.07          0 \r\n 2021          153           25.52256      29.27         11.29         0 \r\n 2021          154           28.48608      30.74         11.99         0 \r\n 2021          155           28.30464      34.38         16.46         0 \r\n 2021          156           28.48608      34.99         18.41         0 \r\n 2021          157           24.8832       31.83         18.5          0 \r\n 2021          158           27.09504      33.06         18.96         0 \r\n 2021          159           25.93728      33.78         18.25         0 \r\n 2021          160           24.58944      33.92         18.25         0 \r\n 2021          161           26.61984      36            19.71         0 \r\n 2021          162           17.7552       30.39         21.62         0 \r\n 2021          163           29.6352       29.47         15.46         0 \r\n 2021          164           28.52064      33.68         11.27         0 \r\n 2021          165           27.98496      30.08         13.6          0 \r\n 2021          166           29.40192      30.28         10.8          0 \r\n 2021          167           26.74944      31.91         13.12         0 \r\n 2021          168           20.63232      37.62         20.78         1.27 \r\n 2021          169           24.94368      34.08         14.14         0 \r\n 2021          170           28.70208      28.52         15.55         0 \r\n 2021          171           18.4032       27.56         14.26         5.08 \r\n 2021          172           29.19456      19.61         6.178         0 \r\n 2021          173           22.2048       26.58         4.896         3.302 \r\n 2021          174           27.87264      30.12         15.67         0 \r\n 2021          175           18.80064      29.19         20.6          0.254 \r\n 2021          176           16.31232      31            17.81         5.334 \r\n 2021          177           11.09376      25.45         17.99         72.644 \r\n 2021          178           21.99744      26.43         16.61         1.27 \r\n 2021          179           19.656        28.16         16.83         24.638 \r\n 2021          180           23.48352      27.84         17.32         0.508 \r\n 2021          181           25.30656      28.05         15.22         0 \r\n 2021          182           26.34336      30            14.26         0 \r\n 2021          183           25.97184      28            14.33         0 \r\n 2021          184           26.36064      29.2          12.91         0 \r\n 2021          185           26.59392      29.91         18.53         0 \r\n 2021          186           25.3152       31.8          20.24         4.318 \r\n 2021          187           23.6304       30.2          19.1          22.352 \r\n 2021          188           18.23904      21.63         12.75         3.81 \r\n 2021          189           11.1456       22.2          12.11         0 \r\n 2021          190           11.7504       23.61         16.04         1.524 \r\n 2021          191           6.658848      19.08         14.65         27.432 \r\n 2021          192           27.55296      24.82         12.64         0 \r\n 2021          193           20.24352      25.7          11.63         0 \r\n 2021          194           19.008        26.29         12.38         0 \r\n 2021          195           8.4672        26.04         16.53         24.892 \r\n 2021          196           24.72768      25.52         14.09         0 \r\n 2021          197           22.74912      27.46         12.22         0 \r\n 2021          198           24.34752      28.92         14.71         0 \r\n 2021          199           25.0992       29.08         15.49         0 \r\n 2021          200           25.23744      28.98         12.94         0 \r\n 2021          201           23.75136      28.99         14.23         0 \r\n 2021          202           22.95648      29.15         15.46         0 \r\n 2021          203           18.4896       28.07         17.99         0 \r\n 2021          204           24.21792      30.81         18.55         0 \r\n 2021          205           22.74048      29.71         16.95         0.762 \r\n 2021          206           24.46848      32.96         15.52         0 \r\n 2021          207           24.01056      29.19         16.77         0 \r\n 2021          208           24.35616      32.07         15.97         0 \r\n 2021          209           19.45728      32.25         22.74         0 \r\n 2021          210           18.99936      29.53         16.86         4.572 \r\n 2021          211           5.256576      22.2          15.38         8.128 \r\n 2021          212           23.05152      26.55         14.78         0 \r\n 2021          213           24.3648       24.29         12.08         0 \r\n 2021          214           23.99328      26.64         10.3          0 \r\n 2021          215           23.8464       26.65         9.58          0 \r\n 2021          216           23.99328      26.48         11.27         0 \r\n 2021          217           12.69216      25.53         17.41         10.668 \r\n 2021          218           22.73184      28.54         15.64         0 \r\n 2021          219           11.1024       27.32         21.39         0 \r\n 2021          220           14.17824      25.63         18.9          3.81 \r\n 2021          221           20.53728      27.98         17.93         0.254 \r\n 2021          222           15.0336       30.49         20.97         0 \r\n 2021          223           22.05792      29.16         14.77         0 \r\n 2021          224           22.77504      27.93         12.22         0 \r\n 2021          225           24.30432      26.18         9.38          0 \r\n 2021          226           24.48576      28.23         6.694         0 \r\n 2021          227           24.57216      25.92         9.26          0 \r\n 2021          228           23.63904      27.16         12.64         0 \r\n 2021          229           21.40128      29            14.19         0 \r\n 2021          230           21.23712      29.73         17.32         0 \r\n 2021          231           21.02112      30.03         18.14         0 \r\n 2021          232           17.40096      30.19         18.46         66.548 \r\n 2021          233           23.12928      23.6          11.15         0.254 \r\n 2021          234           22.54176      24.88         9.32          0 \r\n 2021          235           13.49568      30.1          18.45         0 \r\n 2021          236           11.15424      29.96         18.86         8.128 \r\n 2021          237           19.37088      28.77         17.19         0 \r\n 2021          238           7.45632       27.09         17.96         8.382 \r\n 2021          239           11.77632      28.16         18.43         18.796 \r\n 2021          240           14.35104      30.28         19.51         3.556 \r\n 2021          241           17.77248      26.92         14.12         14.224 \r\n 2021          242           21.74688      28            11.92         3.048 \r\n 2021          243           18.1008       25.13         13.84         0 \r\n 2021          244           21.62592      24.31         12.04         0 \r\n 2021          245           9.40032       21.44         13.11         6.604 \r\n 2021          246           4.208544      19.9          15.72         26.67 \r\n 2021          247           14.62752      24.42         11.69         0 \r\n 2021          248           20.32128      26.86         8.7           0 \r\n 2021          249           21.02112      28.63         7.804         0 \r\n 2021          250           18.68832      25.53         10.71         0 \r\n 2021          251           20.16576      24.36         8.29          0 \r\n 2021          252           19.96704      25.13         6.966         0 \r\n 2021          253           18.80064      28.49         9.54          0 \r\n 2021          254           15.15456      31.4          13.63         0 \r\n 2021          255           10.13472      23.69         14.34         0.508 \r\n 2021          256           11.8368       28.18         13.9          3.81 \r\n 2021          257           10.52352      20.94         10.78         0 \r\n 2021          258           18.58464      26.83         7.4           0 \r\n 2021          259           18.63648      31.04         14.91         1.27 \r\n 2021          260           12.67488      22.14         8.51          7.112 \r\n 2021          261           17.47008      29.32         6.996         4.826 \r\n 2021          262           18.08352      32.24         18.19         13.208 \r\n 2021          263           6.96384       26.73         12.15         12.7 \r\n 2021          264           17.17632      21.1          5.048         0.508 \r\n 2021          265           18.74016      21.25         2.268         1.016 \r\n 2021          266           18.36         24.48         2.481         0 \r\n 2021          267           10.8432       19.72         4.452         3.302 \r\n 2021          268           17.86752      23.48        -0.078         1.016 \r\n 2021          269           15.62976      31.94         10.61         1.016 \r\n 2021          270           16.78752      30.75         9.71          0.508 \r\n 2021          271           16.60608      29.72         12.64         0 \r\n 2021          272           13.6512       31.13         14.4          0 \r\n 2021          273           10.4112       28.34         15.38         8.128 \r\n 2021          274           10.37664      26.61         15.5          0 \r\n 2021          275           7.24896       22.29         14.71         1.524 \r\n 2021          276           16.00128      23.43         7.238         9.398 \r\n 2021          277           15.88032      24.7          5.966         1.016 \r\n 2021          278           10.41984      22.58         9.27          0.508 \r\n 2021          279           9.52992       22.57         13.08         2.54 \r\n 2021          280           7.18848       24.3          15.56         3.81 \r\n 2021          281           13.15872      28.55         12.66         41.91 \r\n 2021          282           9.03744       26.32         13.86         0 \r\n 2021          283           12.19104      20.96         9.68          0 \r\n 2021          284           7.30944       19.74         7.106         5.588 \r\n 2021          285           14.03136      20.85         6.108         0.508 \r\n 2021          286           7.71552       22.47         8.84          7.112 \r\n 2021          287           14.256        15.62         4.734         6.096 \r\n 2021          288           14.30784      14.24         1.238         0 \r\n 2021          289           14.1264       16.85        -0.604         0.254 \r\n 2021          290           13.74624      21.65        -0.938         0.254 \r\n 2021          291           13.5216       24.84         5.007         0.254 \r\n 2021          292           12.64032      24.38         9.57          0 \r\n 2021          293           1.898208      15.14         5.361         1.27 \r\n 2021          294           3.586464      8.65         -0.826         0.508 \r\n 2021          295           6.740928      8.79         -2.679         3.302 \r\n 2021          296           12.96864      12.06        -3.622         0.762 \r\n 2021          297           1.162944      5.835         3.704         23.368 \r\n 2021          298           12.01824      11.3          0.104         0 \r\n 2021          299           11.7072       13.52         2.471         0.508 \r\n 2021          300           1.893888      10.91         7.712         14.224 \r\n 2021          301           1.538784      8.08          6.34          14.7 \r\n 2021          302           7.11072       11.35         1.49          6.7 \r\n 2021          303           11.90592      15.08        -1.96          11.176 \r\n 2021          304           11.3184       9.08         -3.742         0 \r\n 2021          305           8.86464       6.926        -4.99          0 \r\n 2021          306           9.87552       6.37         -7.464         2.286 \r\n 2021          307           5.699808      6.834        -6.886         1.34 \r\n 2021          308           7.82784       11.06        -1.818         5.588 \r\n 2021          309           9.08064       14.73         1.137         0 \r\n 2021          310           10.43712      19.68         1.692         0 \r\n 2021          311           8.6832        18.64         4.068         0 \r\n 2021          312           9.2448        17.26         0.772         0 \r\n 2021          313           7.93152       14.92         0.084         0 \r\n 2021          314           2.199744      9.7           1.096         22.86 \r\n 2021          315           8.18208       7.934        -0.24          3.81 \r\n 2021          316           3.780864      0.286        -1.677         0 \r\n 2021          317           3.413664      2.754        -2.325         0 \r\n 2021          318           3.708288      1.945        -3.418         0 \r\n 2021          319           5.9616        3.502        -2.81          0 \r\n 2021          320           6.450624      11.6         -2.041         0 \r\n 2021          321           6.422112      6.421        -3.642         0 \r\n 2021          322           6.820416      1.116        -10.01         0 \r\n 2021          323           4.055616      3.572        -9.63          0 \r\n 2021          324           5.018976      8.61         -1.272         0 \r\n 2021          325           8.208         4.522        -8.96          0 \r\n 2021          326           6.011712      2.976        -11.48         0 \r\n 2021          327           7.96608       13.45        -4.756         0 \r\n 2021          328           4.417632      10.81        -6.704         0 \r\n 2021          329           8.71776      -4.311        -13.58         0 \r\n 2021          330           5.541696      3.804        -10.89         0 \r\n 2021          331           8.06112       10.64        -3.378         0 \r\n 2021          332           6.93792       5.482        -7.556         0 \r\n 2021          333           7.56864       17.54        -1.312         0 \r\n 2021          334           8.208         10.5         -3.764         0 \r\n 2021          335           6.371136      13.49         0.084         0 \r\n 2021          336           6.261408      10.69         3.058         0 \r\n 2021          337           8.37216       11.87        -1.343         0 \r\n 2021          338           2.396736      1.884        -4.918         0 \r\n 2021          339           3.996         7.662        -2.446         0 \r\n 2021          340           8.00928      -2.366        -17.32         0 \r\n 2021          341           2.48832       1.722        -14.2          0 \r\n 2021          342           7.2144       -0.34         -14.89         0 \r\n 2021          343           6.98976       9.1          -4.908         0 \r\n 2021          344           0.952128      0.226        -4.21          5.588 \r\n 2021          345           8.09568      -2.75         -6.978         0 \r\n 2021          346           7.27488       3.32         -5.832         0 \r\n 2021          347           7.55136       6.067        -5.942         0 \r\n 2021          348           4.47984       6.31         -1.515         0 \r\n 2021          349           5.622912      19.52         0.346         6.35 \r\n 2021          350           7.39584       0.438        -8.29          0 \r\n 2021          351           5.980608     -0.886        -8.79          0 \r\n 2021          352           3.189024     -3.976        -10.16         0 \r\n 2021          353           4.623264     -0.968        -11.48         0 \r\n 2021          354           6.149952     -2.405        -13.77         0 \r\n 2021          355           5.779296      0.469        -14.2          0 \r\n 2021          356           6.683904      2.926        -13.47         0 \r\n 2021          357           4.41504       4.542        -6.014         0 \r\n 2021          358           3.917376      9.1          -1.048         0 \r\n 2021          359           5.881248      1.277        -7.556         0 \r\n 2021          360           2.061504      1.783        -9.59          0 \r\n 2021          361           7.09344       1.318        -8.17          0 \r\n 2021          362           1.911168     -1.372        -16.42         0 \r\n 2021          363           5.349888     -10.26        -18.38         0 \r\n 2021          364           2.727648     -3.742        -11.52         0 \r\n 2021          365           1.512864     -3.51         -16.79         0 \r\n 2022          1             2.359584     -16.81        -22.77         0 \r\n 2022          2             7.9056       -10.17        -23.74         0 \r\n 2022          3             7.72416       2.288        -15.76         0 \r\n 2022          4             3.207168      1.5          -11.23         0 \r\n 2022          5             6.185376     -11.18        -20.31         0 \r\n 2022          6             7.84512      -17.89        -24.12         0 \r\n 2022          7             4.932576     -12.12        -23.93         0 \r\n 2022          8             2.526336     -1.454        -13.18         0 \r\n 2022          9             8.30304      -6.684        -17.17         0 \r\n 2022          10            8.0784       -9.77         -17.28         0 \r\n 2022          11            7.40448       9.22         -13.77         0 \r\n 2022          12            7.48224       8.85         -3.145         0 \r\n 2022          13            7.2576        5.795        -5.03          0 \r\n 2022          14            3.564        -0.532        -9.85          16.51 \r\n 2022          15            8.88192      -9.84         -24.72         0 \r\n 2022          16            6.159456      0.358        -22.61         0 \r\n 2022          17            7.67232      -1.697        -14.34         0 \r\n 2022          18            8.01792       3.26         -12.41         0 \r\n 2022          19            9.53856      -12.41        -22.42         0 \r\n 2022          20            9.77184      -18.5         -28.24         0 \r\n 2022          21            8.93376      -6.755        -28.96         0 \r\n 2022          22            8.70912      -2.204        -12.58         0 \r\n 2022          23            8.76096      -9.53         -22.23         0 \r\n 2022          24            9.00288      -2.669        -22.72         0 \r\n 2022          25            10.38528     -17.58        -28.18         0 \r\n 2022          26            9.21888      -4.148        -29.57         0 \r\n 2022          27            7.8624        0.246        -19.27         0 \r\n 2022          28            10.48896     -11.38        -26.34         0 \r\n 2022          29            10.13472     -2.486        -15.03         0 \r\n 2022          30            7.58592      -7.76         -14.65         0 \r\n 2022          31            9.08064       0.954        -11.92         0 \r\n 2022          32            10.5408      -0.704        -15.16         0 \r\n 2022          33            9.42624      -15.14        -20.17         0 \r\n 2022          34            11.50848     -16.18        -24.54         0 \r\n 2022          35            10.1952      -12.49        -25.75         0 \r\n 2022          36            9.33984      -0.108        -21.95         0 \r\n 2022          37            9.5472       -2.507        -18.07         0 \r\n 2022          38            9.936        -5.142        -20.25         0 \r\n 2022          39            8.79552       3.896        -9.53          0 \r\n 2022          40            4.741632      1.369        -5.72          0 \r\n 2022          41            7.43904       3.138        -8.98          3.048 \r\n 2022          42            9.02016       3.058        -18.19         0 \r\n 2022          43            10.81728     -11.58        -21.5          0 \r\n 2022          44            12.85632     -11.64        -19.6          0 \r\n 2022          45            11.78496     -6.389        -13.1          0 \r\n 2022          46            10.64448      3.401        -12.15         0 \r\n 2022          47            7.62048       2.654        -8.21          0 \r\n 2022          48            9.96192      -8.17         -15.89         0 \r\n 2022          49            9.27936       5.007        -14.26         0 \r\n 2022          50            13.6512      -2.69         -16.44         0 \r\n 2022          51            13.31424      10.33        -5.942         0 \r\n 2022          52            5.798304      1.864        -5.456         0 \r\n 2022          53            8.25984      -5.365        -18.98         0 \r\n 2022          54            12.07872     -13.35        -21.19         0 \r\n 2022          55            7.83648      -8.69         -16.71         0 \r\n 2022          56            15.09408     -8.59         -18.91         0 \r\n 2022          57            15.336        3.35         -16.66         0 \r\n 2022          58            14.91264      6.694        -10.18         0 \r\n 2022          59            14.46336      13.59        -3.925         0 \r\n 2022          60            13.35744      9.8          -0.36          1.524 \r\n 2022          61            12.88224      10.12        -2.012         0 \r\n 2022          62            7.45632      -1.028        -3.601         0 \r\n 2022          63            10.82592      5.39         -3.804         1.27 \r\n 2022          64            2.508192      10.27        -1.697         8.382 \r\n 2022          65            10.27296     -0.219        -4.656         0.254 \r\n 2022          66            16.7616       0.378        -6.806         0 \r\n 2022          67            16.74432      5.614        -6.602         0 \r\n 2022          68            11.55168     -2.71         -9.42          0 \r\n 2022          69            12.70944     -3.439        -11.11         0 \r\n 2022          70            16.81344     -7.536        -14.9          0 \r\n 2022          71            17.24544     -1.292        -17.64         0 \r\n 2022          72            17.50464      14.8         -5.892         0 \r\n 2022          73            12.49344      11.45        -1.424         0 \r\n 2022          74            16.07904      12.89        -3.257         0 \r\n 2022          75            16.62336      20.8          1.622         0 \r\n 2022          76            5.569344      8.97          1.156         0 \r\n 2022          77            8.13888       7.056        -2.436         0 \r\n 2022          78            18.98208      14.88        -5.304         0 \r\n 2022          79            16.60608      18.7         -3.885         0 \r\n 2022          80            12.2688       22.07         7.581         0 \r\n 2022          81            1.958688      9.15          0.975         18.542 \r\n 2022          82            4.408128      1.5          -0.159         0.762 \r\n 2022          83            5.426784      3.684        -0.563         0 \r\n 2022          84            13.6944       7.056        -1.98          0 \r\n 2022          85            20.25216      0.378        -6.664         0 \r\n 2022          86            19.85472      0.256        -8.81          0 \r\n 2022          87            17.3664       5.361        -7.414         0 \r\n 2022          88            6.444576      4.17         -0.208         0 \r\n 2022          89            2.457216      2.875        -0.796         0.508 \r\n 2022          90            6.653664      0.003        -4.038         0.254 \r\n 2022          91            18.88704      8.64         -8.49          3.302 \r\n 2022          92            14.69664      11.04        -0.532         11.938 \r\n 2022          93            6.9984        7.794        -2.832         0 \r\n 2022          94            18.32544      10.73        -0.968         0 \r\n 2022          95            3.75408       9.15          0.832         2.286 \r\n 2022          96            5.494176      4.37          1.277         1.27 \r\n 2022          97            7.89696       3.068        -1.494         0.762 \r\n 2022          98            14.57568      6.512        -2.304         0 \r\n 2022          99            23.01696      12.71        -5.842         0 \r\n 2022          100           20.66688      21.59         1.258         0 \r\n 2022          101           22.65408      16.5         -1.838         0 \r\n 2022          102           5.647968      21.01         2.116         42.672 \r\n 2022          103           8.37216       13.63        -1.322         4.064 \r\n 2022          104           16.83936      4.452        -4.148         0 \r\n 2022          105           15.3792       5.724        -4.361         0 \r\n 2022          106           23.47488      5.421        -5.264         0 \r\n 2022          107           7.82784       5.542        -5.284         0.762 \r\n 2022          108           16.87392      4.452        -5.142         0.254 \r\n 2022          109           11.81952      6.047        -7.962         0 \r\n 2022          110           2.070144      8.53          1.186         10.668 \r\n 2022          111           23            15.64         6.572         0.762 \r\n 2022          112           5.886432      19.08         8.56          4.826 \r\n 2022          113           10.90368      22.48         8             8.128 \r\n 2022          114           12.94272      9.58          2.683         0 \r\n 2022          115           9.99648       2.956        -3.034         0 \r\n 2022          116           23.16384      10.41        -4.726         0 \r\n 2022          117           18.55008      13.43         0.205         0 \r\n 2022          118           12.79584      12.78         2.896         9.906 \r\n 2022          119           4.146336      12.54         7.086         6.604 \r\n 2022          120           6.188832      15.12         7.328         6.604 \r\n 2022          121           5.271264      8.71          4.199         0 \r\n 2022          122           6.02208       6.168         3.28          5.08 \r\n 2022          123           11.68992      11.15         1.541         6.096 \r\n 2022          124           15.18912      13.77         0.327         0 \r\n 2022          125           9.06336       14.76         5.734         0.254 \r\n 2022          126           23.94144      19.43         7.612         0 \r\n 2022          127           26.2224       23.19         5.704         0 \r\n 2022          128           5.478624      14.76         10.14         2.794 \r\n 2022          129           19.224        33.63         14.07         0 \r\n 2022          130           18.43776      27.07         14.25         0 \r\n 2022          131           22.55904      34.76         17.96         0 \r\n 2022          132           25.41888      35.58         19.41         0 \r\n 2022          133           20.31264      26.24         11.67         0 \r\n 2022          134           22.74048      31.21         8.95          0 \r\n 2022          135           22.04064      25.47         8.01          0 \r\n 2022          136           27.41472      26.42         5.694         0 \r\n 2022          137           8.04384       19.45         10.2          0.254 \r\n 2022          138           26.05824      28.03         11.35         0.254 \r\n 2022          139           20.11392      33.49         12.25         0.254 \r\n 2022          140           12.7008       18.82         7.984         82.042 \r\n 2022          141           17.93664      14.31         5.057         0 \r\n 2022          142           24.5376       16.33         0.975         0 \r\n 2022          143           17.72064      17.85         1.014         0 \r\n 2022          144           13.5648       19.29         8.55          11.43 \r\n 2022          145           5.709312      12.06         7.742         14.224 \r\n 2022          146           8.18208       12.68         7.703         4.572 \r\n 2022          147           28.30464      24.41         4.876         0 \r\n 2022          148           25.55712      30.94         14.35         0 \r\n 2022          149           16.5456       29.22         17.83         0 \r\n 2022          150           18.32544      33.25         17.04         2.286 \r\n 2022          151           22.9392       25.18         11.77         0 \r\n 2022          152           22.1184       21.85         8.24          0 \r\n 2022          153           26.99136      26.36         5.664         0 \r\n 2022          154           28.93536      24.59         8.29          0 \r\n 2022          155           7.06752       17.6          12.9          1.27 \r\n 2022          156           12.76992      25.34         12.14         11.176 \r\n 2022          157           11.0592       21.45         15.4          0 \r\n 2022          158           19.3104       24.74         12.17         7.366 \r\n 2022          159           25.34112      24.72         14.17         0.508 \r\n 2022          160           21.5136       26.35         12.89         0 \r\n 2022          161           15.52608      23.11         14.24         15.748 \r\n 2022          162           10.44576      25.09         16.27         3.048 \r\n 2022          163           24.28704      30.73         16.81         0 \r\n 2022          164           11.00736      27.64         21.05         7.112 \r\n 2022          165           24.07968      35.36         22.55         1.27 \r\n 2022          166           9.65952       23.65         15.97         42.672 \r\n 2022          167           28.95264      30            15.22         0 \r\n 2022          168           28.84032      29.46         13.3          0 \r\n 2022          169           26.79264      29.22         14.92         0 \r\n 2022          170           27.11232      33.81         18.88         0 \r\n 2022          171           26.9568       35.31         21.45         0 \r\n 2022          172           22.92192      31.12         16.67         0 \r\n 2022          173           28.21824      29.68         14.27         0 \r\n 2022          174           28.27008      32.41         14.77         0 \r\n 2022          175           24.26112      29.24         19.32         0.254 \r\n 2022          176           20.45088      27.71         16.37         8.128 \r\n 2022          177           28.65024      23.66         11.05         0 \r\n 2022          178           27.19008      27.98         8.53          0 \r\n 2022          179           26.07552      29.45         12.9          0 \r\n 2022          180           27.84672      32.82         13.14         0 \r\n 2022          181           14.8608       28.92         20.9          0 \r\n 2022          182           20.54592      27.06         14.58         0 \r\n 2022          183           23.112        28.6          12.53         0 \r\n 2022          184           26.3088       29.72         13.28         0 \r\n 2022          185           14.36832      31.26         20.02         11.176 \r\n 2022          186           21.7296       32.66         18.62         19.05 \r\n 2022          187           18.61056      27.64         17.34         0 \r\n 2022          188           19.89792      28.46         18.92         0 \r\n 2022          189           21.0816       28.07         19.18         3.302 \r\n 2022          190           24.02784      28.41         17.19         0.254 \r\n 2022          191           24.28704      29.76         17.7          1.27 \r\n 2022          192           20.75328      27.03         15.41         1.524 \r\n"
  },
  {
    "path": "scripts/yieldfx/baseline/lewis.met",
    "content": "[weather.met.weather]\r\nlatitude = 41.31 (DECIMAL DEGREES)\r\ntav = 10.2145 (oC) ! annual average ambient temperature\r\namp = 28.98075 (oC) ! annual amplitude in mean monthly temperature\r\nyear          day           radn          maxt          mint          rain\r\n()            ()            (MJ/m^2)      (oC)          (oC)          (mm)\r\n 1980          1             5.4           2.775        -4.85          0 \r\n 1980          2             6.1           0.275        -6.45          0 \r\n 1980          3             5.4          -3.225        -10.225        0 \r\n 1980          4             6.1           1.125        -7.8           0 \r\n 1980          5             6.7           0.425        -8.4           0 \r\n 1980          6             2.9           0.85         -9.025         1.15 \r\n 1980          7             8.7          -7.825        -16.5          0 \r\n 1980          8             5.9          -6.7          -13.975        0 \r\n 1980          9             6.9          -9.7          -18.125        0 \r\n 1980          10            4.3           6.575        -11.4          0 \r\n 1980          11            9.1           5.9          -11.475        0 \r\n 1980          12            7.2           2.75         -14.875        0 \r\n 1980          13            8.5           8.875        -0.875         0 \r\n 1980          14            8.6           9.325        -1.775         0 \r\n 1980          15            4.3           10.4          1.2           0 \r\n 1980          16            2.6           7.35         -0.7           20.126 \r\n 1980          17            7.7           3.15         -5.775         0 \r\n 1980          18            9             8.4          -4.075         0 \r\n 1980          19            2.1           3.075        -6.75          3.6 \r\n 1980          20            7.8           1.2          -7.325         0 \r\n 1980          21            9             1.125        -5.725         0 \r\n 1980          22            9.2           0.65         -5.15          0 \r\n 1980          23            9.3          -1.4          -9             0 \r\n 1980          24            4.6           7.3          -4.175         0 \r\n 1980          25            7.8           3.25         -5.15          0 \r\n 1980          26            6.5          -4.825        -15.5          0 \r\n 1980          27            5.4          -9.85         -14.925        0 \r\n 1980          28            5.4          -9.075        -13.5          0 \r\n 1980          29            9.5          -7.725        -14.825        0 \r\n 1980          30            6            -9.875        -15.65         3.15 \r\n 1980          31            8            -10.7         -23            0 \r\n 1980          32            5.8          -6.65         -22.975        0 \r\n 1980          33            8.1          -2.025        -10.8          0 \r\n 1980          34            7.4          -3.525        -13.55         0 \r\n 1980          35            3.7          -2            -10.9          5.3 \r\n 1980          36            8.2          -1.625        -6.475         0.7 \r\n 1980          37            8.7          -3.15         -14.3          0 \r\n 1980          38            2.4          -4.9          -15.2          1 \r\n 1980          39            3.9          -4.825        -11.25         1.1 \r\n 1980          40            7.5          -4.4          -14.975        0 \r\n 1980          41            10.9         -0.775        -14.975        0 \r\n 1980          42            9.2          -4.375        -14.85         0 \r\n 1980          43            10.1         -3.075        -16.55         0 \r\n 1980          44            9            -0.025        -11.575        0 \r\n 1980          45            6.3          -1.25         -9.225         0 \r\n 1980          46            4.2          -4.075        -11.775        0 \r\n 1980          47            9.9          -8.825        -17.025        0 \r\n 1980          48            12.7         -4.2          -20.75         0 \r\n 1980          49            9.8           0.55         -12.15         0 \r\n 1980          50            8.4           0.7          -4.95          0 \r\n 1980          51            6.7           0.6          -5.1           0 \r\n 1980          52            1.7           1.85         -1.35          3.725 \r\n 1980          53            9             6.7          -1.5           0 \r\n 1980          54            13            5.025        -2.175         0 \r\n 1980          55            14.1          6.65         -3.15          0 \r\n 1980          56            16.9          2.9          -10.225        0 \r\n 1980          57            14.9          7.8          -12.375        0 \r\n 1980          58            11            5.8          -3.275         0 \r\n 1980          59            15.8          4.2          -3.375         0 \r\n 1980          60            4.9          -3.6          -13.725        1.375 \r\n 1980          61            13.7         -7.475        -17.45         0 \r\n 1980          62            15.7         -2.85         -16.675        0 \r\n 1980          63            13.6          6.1          -8.375         0 \r\n 1980          64            2.5           2.1          -9.25          5.725 \r\n 1980          65            16           -6            -17.55         0 \r\n 1980          66            13.5          2.1          -12.55         0 \r\n 1980          67            11.6          2.65         -7.2           0 \r\n 1980          68            15.1          5.1          -7.15          0.7 \r\n 1980          69            13.4          10.625       -2.6           0 \r\n 1980          70            11.2          2.65         -4.475         0 \r\n 1980          71            15.4          4.75         -7.625         0 \r\n 1980          72            10.3          3.775        -3.075         4 \r\n 1980          73            12.7          3.575        -3.975         1.25 \r\n 1980          74            18.1          13.7         -3.425         0 \r\n 1980          75            17.5          18.325       -0.4           0 \r\n 1980          76            4.9           13            3.65          0 \r\n 1980          77            16.1          7.15         -4.9           0 \r\n 1980          78            19.8          15.925       -2.35          0 \r\n 1980          79            17.3          17.275        1.825         0 \r\n 1980          80            7.1           11            0.725         0 \r\n 1980          81            20.8          8.575        -5             0 \r\n 1980          82            13.4          14.3         -2.475         0 \r\n 1980          83            14.4          9.825        -4.15          0 \r\n 1980          84            19            8.3          -2.825         0 \r\n 1980          85            13.2          7.45         -4.65          0 \r\n 1980          86            9             9.5          -3.525         0.9 \r\n 1980          87            13.4          12.6         -0.075         0 \r\n 1980          88            2             8             3.075         5.525 \r\n 1980          89            2             6.975        -0.15          8.275 \r\n 1980          90            4.7           6.2           0.375         2.475 \r\n 1980          91            23.1          13.95        -2.575         0 \r\n 1980          92            6.2           12.225        1.6           7.475 \r\n 1980          93            3.9           11.15         2.2           0 \r\n 1980          94            3.4           7.975         1.775         16.775 \r\n 1980          95            18.9          13.05        -3.4           0 \r\n 1980          96            20.8          18.75         0.325         0 \r\n 1980          97            16.3          20.55         7.45          0 \r\n 1980          98            20.4          20.15         4.55          0 \r\n 1980          99            3.3           14.525        2.9           2.175 \r\n 1980          100           21.5          13.2          1.325         0 \r\n 1980          101           20.6          16.85        -2.55          0 \r\n 1980          102           5.2           11.45         1.925         3.45 \r\n 1980          103           24.7          11.925       -3.975         0 \r\n 1980          104           19.3          8.85         -3.05          0 \r\n 1980          105           14.1          10.425       -4             0 \r\n 1980          106           25.4          16.975        0.2           0 \r\n 1980          107           4.3           15.625        4.875         1.175 \r\n 1980          108           8.9           17.725        5.525         4.45 \r\n 1980          109           24.6          21.525        4.3           0 \r\n 1980          110           24.8          24.55         6.925         0 \r\n 1980          111           23.3          28.2          10.1          0 \r\n 1980          112           26.1          29.35         11.775        0 \r\n 1980          113           26.1          29.35         11.55         0 \r\n 1980          114           26.1          23.45         7.975         0 \r\n 1980          115           27.3          16.15         3.225         0 \r\n 1980          116           25.6          19.4          2.65          0 \r\n 1980          117           25.9          18.425        4.475         0 \r\n 1980          118           25.6          20.225        4.075         0 \r\n 1980          119           28.2          21.125        5.45          0 \r\n 1980          120           27.4          22.075        5.325         0 \r\n 1980          121           23.5          21.775        7.55          0 \r\n 1980          122           21.8          22.95         6.8           0 \r\n 1980          123           20            24.9          9.425         0 \r\n 1980          124           21.9          26.375        11.475        0 \r\n 1980          125           22.5          28.675        11.625        0 \r\n 1980          126           24.4          28.725        11.9          0 \r\n 1980          127           26.7          26.3          8.725         0 \r\n 1980          128           28.4          19.475        3.35          0 \r\n 1980          129           28.3          16.65        -0.75          0 \r\n 1980          130           27.6          20.9          3.35          0 \r\n 1980          131           15.7          23.2          8.15          0 \r\n 1980          132           24.9          20.35         3.675         0 \r\n 1980          133           11.7          20.55         6.4           0.75 \r\n 1980          134           21.4          18.5          4.975         0 \r\n 1980          135           19.3          22.65         5.525         0 \r\n 1980          136           14.7          22.175        8.025         1.35 \r\n 1980          137           8             18.4          9.55          14.051 \r\n 1980          138           11.1          20.475        8.625         5.05 \r\n 1980          139           13            19.3          8.9           0.75 \r\n 1980          140           23.2          23.475        9.5           0 \r\n 1980          141           22.2          23.65         9.65          0 \r\n 1980          142           27.3          26.725        10.075        0 \r\n 1980          143           29.3          27.425        11.725        0 \r\n 1980          144           23.8          27.95         12.15         0 \r\n 1980          145           23.1          28.55         13.025        0 \r\n 1980          146           13.1          26.55         14.45         0 \r\n 1980          147           9             28.55         16.6          4.925 \r\n 1980          148           16.6          30.25         16.85         6.875 \r\n 1980          149           11.6          26.425        14.7          0 \r\n 1980          150           10.2          27.65         17.45         3.275 \r\n 1980          151           23.7          26.45         15.6          6.875 \r\n 1980          152           19.8          27.15         10.9          0 \r\n 1980          153           26.2          27.75         16.875        55.651 \r\n 1980          154           20.4          26.275        14.8          0 \r\n 1980          155           28.9          29.55         12.9          0 \r\n 1980          156           12.3          25.85         17.35         28.25 \r\n 1980          157           17.7          28.15         20.15         10.625 \r\n 1980          158           13.8          28.9          20.975        14.575 \r\n 1980          159           25.9          28.1          20.75         4.25 \r\n 1980          160           32.3          21.975        9.2           0 \r\n 1980          161           31.1          26.025        10.1          0 \r\n 1980          162           30.7          28.425        13.175        0 \r\n 1980          163           30.6          28.775        11.3          0 \r\n 1980          164           24.2          30.1          16            10.775 \r\n 1980          165           16.5          29.3          18.425        5.375 \r\n 1980          166           15.4          29.625        19.275        25.375 \r\n 1980          167           26.3          26.375        18.45         16.625 \r\n 1980          168           23.7          24.5          11.425        0 \r\n 1980          169           28.1          27.5          12.825        0 \r\n 1980          170           15.9          26.475        15.625        0 \r\n 1980          171           30.8          26            15.85         0 \r\n 1980          172           17.8          23.925        10.975        0 \r\n 1980          173           28.3          28.8          12.15         2.5 \r\n 1980          174           12            26.475        17.225        5.65 \r\n 1980          175           26.9          30            16.75         0 \r\n 1980          176           27.3          32.8          15.7          0 \r\n 1980          177           19.5          31.575        18.8          0 \r\n 1980          178           28.2          35.925        20.75         0 \r\n 1980          179           24.3          37.9          22.175        0 \r\n 1980          180           29.5          33.325        16.5          0 \r\n 1980          181           31.6          28.95         16.825        0 \r\n 1980          182           28.7          34.7          15.35         0 \r\n 1980          183           25.5          30.05         19.225        2.95 \r\n 1980          184           21.8          26.2          15.375        0 \r\n 1980          185           28.1          30.475        16.225        0 \r\n 1980          186           20.9          31.575        19.35         18.874 \r\n 1980          187           20.9          29.875        20.275        11.824 \r\n 1980          188           28.3          36.75         20.575        2.825 \r\n 1980          189           28.8          37.2          22.925        0 \r\n 1980          190           22.6          34.825        22.05         0 \r\n 1980          191           23.1          31.45         24.475        0 \r\n 1980          192           27.6          36.55         21.7          0 \r\n 1980          193           22.8          38.5          23.7          0 \r\n 1980          194           28.6          36.45         21.675        0 \r\n 1980          195           28.9          39.05         21.65         0 \r\n 1980          196           26.4          40.65         26.425        0 \r\n 1980          197           24.2          39.5          26.35         7.35 \r\n 1980          198           29.5          33.275        20.5          5.3 \r\n 1980          199           29.4          37.6          19.45         0 \r\n 1980          200           26.1          34.75         21.15         3.9 \r\n 1980          201           28.3          38.4          20.55         0 \r\n 1980          202           25            35.775        25.825        1.925 \r\n 1980          203           26.9          28.875        18.375        0 \r\n 1980          204           29.6          27.05         14.575        0 \r\n 1980          205           29.7          29            13.8          0 \r\n 1980          206           28.5          33.075        16.125        0 \r\n 1980          207           19.5          33.1          19.425        20.074 \r\n 1980          208           27.1          26.775        14.825        0 \r\n 1980          209           28.4          30.425        13.65         0 \r\n 1980          210           26.5          34.975        15.8          0 \r\n 1980          211           28            35.425        16.9          0 \r\n 1980          212           25.1          37.8          24.6          0 \r\n 1980          213           26.6          35.475        17.9          0 \r\n 1980          214           26.3          38.875        20.375        0 \r\n 1980          215           23.9          34.475        23.75         0 \r\n 1980          216           26.5          35.7          17.45         0 \r\n 1980          217           16.3          31.475        24.3          12.575 \r\n 1980          218           26.4          34.625        15.4          0 \r\n 1980          219           14.6          29.65         20.35         5.075 \r\n 1980          220           25.8          37.025        21.6          0 \r\n 1980          221           15.7          34.725        23.35         0 \r\n 1980          222           12.5          32.75         21.25         6.95 \r\n 1980          223           15.6          32.8          21.2          4.125 \r\n 1980          224           24            27.5          17.1          37.901 \r\n 1980          225           24.1          28.35         14.6          0 \r\n 1980          226           17.1          30.325        20.1          12.2 \r\n 1980          227           11.9          25.975        17.7          11.025 \r\n 1980          228           13.5          26.025        15.525        7.875 \r\n 1980          229           13.7          26.7          17.5          51.376 \r\n 1980          230           23.9          25.55         20.4          5.5 \r\n 1980          231           12.3          27.975        18.45         0 \r\n 1980          232           22.2          31.025        19.775        0 \r\n 1980          233           10.9          29.15         22.1          0 \r\n 1980          234           25.1          28.1          14.175        0 \r\n 1980          235           24.4          29.525        15.025        0 \r\n 1980          236           24            31.225        15.4          0 \r\n 1980          237           23.7          35.1          17.375        0 \r\n 1980          238           23.5          36.825        20.1          0 \r\n 1980          239           19.7          33.375        18.55         4.2 \r\n 1980          240           18.2          29.575        14.125        0 \r\n 1980          241           11.6          29.075        18.35         0 \r\n 1980          242           18            30.675        18.575        4.6 \r\n 1980          243           12.1          26.85         20            19.775 \r\n 1980          244           20            27.125        17.875        17.725 \r\n 1980          245           24            28.475        16.05         0 \r\n 1980          246           24.3          28.425        13.05         0 \r\n 1980          247           17            30.25         18.825        1.3 \r\n 1980          248           24.1          27.55         16.2          14.85 \r\n 1980          249           9.6           26.725        15            0 \r\n 1980          250           19            33.175        19.3          0 \r\n 1980          251           13.1          31.75         20.375        0 \r\n 1980          252           13.7          30.2          19.7          0 \r\n 1980          253           10.4          26            15.5          0 \r\n 1980          254           22.4          25.525        9.125         0 \r\n 1980          255           13.4          27.425        13.625        0 \r\n 1980          256           17.9          32.375        18.5          2.65 \r\n 1980          257           20.8          26.65         15.725        3.25 \r\n 1980          258           20.6          25.375        11.925        0 \r\n 1980          259           12.9          26.375        12.95         1.775 \r\n 1980          260           7.2           20.825        9.975         1.2 \r\n 1980          261           20.4          19.775        3.475         0 \r\n 1980          262           19.7          27.15         9.475         0 \r\n 1980          263           15.6          29.325        15.5          0 \r\n 1980          264           16.6          30.525        19.45         0 \r\n 1980          265           17.3          29.825        10.875        0 \r\n 1980          266           13            23.925        11.85         0 \r\n 1980          267           19.5          21.375        5.25          0 \r\n 1980          268           11.6          22.7          7.55          5.15 \r\n 1980          269           18.4          17.55         8.65          0 \r\n 1980          270           18            20.575        3.525         0 \r\n 1980          271           16.2          25.575        10.875        0 \r\n 1980          272           16.3          23.65         8.95          0 \r\n 1980          273           13            24.375        10.05         0 \r\n 1980          274           16.9          28.35         10.95         0 \r\n 1980          275           18.6          24.3          12.675        0 \r\n 1980          276           15.7          17.65         9.55          0 \r\n 1980          277           12.2          17.525        1.525         0 \r\n 1980          278           18.1          18.625        1.3           0 \r\n 1980          279           17.6          22.925        3.9           0 \r\n 1980          280           17.4          27.175        9.375         0 \r\n 1980          281           14.3          28.55         10.075        0 \r\n 1980          282           17.2          28.975        11.375        0 \r\n 1980          283           17            29.2          10.025        0 \r\n 1980          284           17.6          21.65         9.975         0 \r\n 1980          285           16.9          16.75         7.2           0 \r\n 1980          286           16.3          18.225        0.35          0 \r\n 1980          287           14            27.775        5.25          0 \r\n 1980          288           15.7          22.675        9.425         0 \r\n 1980          289           4.6           17.425        6.525         6.125 \r\n 1980          290           5.1           22.825        12.875        23.501 \r\n 1980          291           13.9          18.275        4.8           0 \r\n 1980          292           14.1          12.875        1.625         0 \r\n 1980          293           14            18.775       -0.125         0 \r\n 1980          294           13.6          20.775        4.9           0 \r\n 1980          295           13.4          20.15         5.125         0 \r\n 1980          296           12.6          24.375        3.875         0 \r\n 1980          297           1.4           17.8          5.075         10.851 \r\n 1980          298           12.4          9.8          -0.425         0 \r\n 1980          299           12.9          8.2          -1.5           0 \r\n 1980          300           11            9.35         -4.825         0 \r\n 1980          301           3.9           4.275        -1.875         10.951 \r\n 1980          302           12.6          0.35         -5.875         0 \r\n 1980          303           9.1           0.975        -11.75         0.575 \r\n 1980          304           11.2          11.925       -4.425         0 \r\n 1980          305           9.3           16.875        1.55          0 \r\n 1980          306           13.3          14.4         -0.15          0 \r\n 1980          307           11.6          20.075        1.075         0 \r\n 1980          308           11.4          18.425        6.125         0 \r\n 1980          309           10.8          16.575        2.95          0 \r\n 1980          310           10.4          17            2.175         0 \r\n 1980          311           11.6          24.925        5.225         0 \r\n 1980          312           11            22.275        7.8           0 \r\n 1980          313           9.1           23.625        7.825         0 \r\n 1980          314           11.5          20.05         5.025         0 \r\n 1980          315           11            12.55        -1.75          0 \r\n 1980          316           3.7           9.475         0.25          0 \r\n 1980          317           9.6           21.275        3.925         0 \r\n 1980          318           1.9           16.7          2.275         3.5 \r\n 1980          319           6.9           5.375        -3.025         0 \r\n 1980          320           9.9           7.65         -2.925         0 \r\n 1980          321           9             8            -4.65          0 \r\n 1980          322           9.4           5.1          -5.375         0 \r\n 1980          323           10.2          6.05         -6.5           0 \r\n 1980          324           9.1           11.175       -2.675         0 \r\n 1980          325           9.7           9.525        -2.875         0 \r\n 1980          326           9.7           12.175       -3.95          0 \r\n 1980          327           9.4           13.125       -0.55          0 \r\n 1980          328           5.3           9.325         0.15          0 \r\n 1980          329           8.7           4.925        -5.8           0 \r\n 1980          330           8.2           6.625        -5.45          0 \r\n 1980          331           9             7.1          -4.8           0 \r\n 1980          332           5.2           5.1          -2.875         0 \r\n 1980          333           5.2           8.575        -5.55          0 \r\n 1980          334           8.7           9.375        -2.5           0 \r\n 1980          335           7.9           12.775       -0.025         0.5 \r\n 1980          336           6.2           8.2          -3.05          1.8 \r\n 1980          337           10.1         -2            -11.525        0.8 \r\n 1980          338           8.7           6.025        -7.35          0 \r\n 1980          339           3.7           6.85         -2.15          0 \r\n 1980          340           0.7           8.575         1.925         0 \r\n 1980          341           3             5.95         -0.75          6.1 \r\n 1980          342           1.8           3.075        -2.425         4.9 \r\n 1980          343           8.4          -0.125        -8.575         2.675 \r\n 1980          344           6             0.4          -15.1          0 \r\n 1980          345           6.1          -1.825        -17.65         0 \r\n 1980          346           7.4           1.825        -13.75         0 \r\n 1980          347           8.2           7.275        -4.75          0 \r\n 1980          348           9             6.7          -9.35          0 \r\n 1980          349           7.7           3.175        -7.675         0 \r\n 1980          350           5.1           5.7          -7.35          0 \r\n 1980          351           6.2           4.35         -4.675         0 \r\n 1980          352           2.8           9.275        -3.375         0 \r\n 1980          353           4.1           7.875        -2.675         0 \r\n 1980          354           8.9          -0.85         -14.725        0 \r\n 1980          355           8.7          -5.45         -15.05         0 \r\n 1980          356           7.6          -1.025        -10.7          0 \r\n 1980          357           3.5           4            -6.55          1.625 \r\n 1980          358           2             2.525        -4.25          0 \r\n 1980          359           8.5          -1.95         -14.775        0 \r\n 1980          360           5.3          -5.025        -16.4          0 \r\n 1980          361           7.9          -1.05         -9.075         0 \r\n 1980          362           4.9           3.075        -8.45          0 \r\n 1980          363           2             4.925        -1.075         0 \r\n 1980          364           5.7           6            -1.6           0 \r\n 1980          365           4.6           9.6          -0.225         0 \r\n 1980          366           8.5           9.775        -0.675         0 \r\n 1981          1             7.8           2.95         -3.075         0 \r\n 1981          2             7.9           7.325        -8.775         0 \r\n 1981          3             6.9           3.4          -14.325        0 \r\n 1981          4             8.1          -4.525        -15.875        0 \r\n 1981          5             7.3           3.05         -13.5          0 \r\n 1981          6             4.5           4.4          -5.2           0.2 \r\n 1981          7             6.8          -1.825        -14.65         0 \r\n 1981          8             8.4          -0.95         -12.35         0 \r\n 1981          9             8            -2            -10.65         0 \r\n 1981          10            8.1          -3.175        -17.8          0 \r\n 1981          11            9            -3.825        -17.525        0 \r\n 1981          12            8.2           7.275        -12.3          0 \r\n 1981          13            2.5           3.875        -7.1           0 \r\n 1981          14            7.2           3.55         -6.5           0 \r\n 1981          15            9.3           0.25         -10.6          0 \r\n 1981          16            9.3          -5.3          -16.95         0 \r\n 1981          17            9.6           4.3          -14.75         0 \r\n 1981          18            9.1           8.025        -8.75          0 \r\n 1981          19            6.8           8.4          -2.55          0 \r\n 1981          20            9.2           6.275        -2.3           0 \r\n 1981          21            10            4.975        -8.35          0 \r\n 1981          22            10            10.475       -4.075         0 \r\n 1981          23            9.8           12.2         -0.775         0 \r\n 1981          24            10            15.75         1.625         0 \r\n 1981          25            9.6           13.825       -0.45          0 \r\n 1981          26            10.6          8.75         -2.55          0 \r\n 1981          27            10.3          5.525        -5.15          0 \r\n 1981          28            9.8           5.325        -6.3           0 \r\n 1981          29            6.5          -1.475        -11.125        0 \r\n 1981          30            11            2.85         -12.65         0 \r\n 1981          31            3.4           2.4          -7.875         6.45 \r\n 1981          32            6.8          -2.35         -12.725        3.325 \r\n 1981          33            8            -10.8         -18.75         0 \r\n 1981          34            10           -5.375        -17.35         0 \r\n 1981          35            11.4         -6.425        -16.925        0 \r\n 1981          36            9.1           1.625        -13.8          0 \r\n 1981          37            7             1.15         -10.475        0 \r\n 1981          38            10.4          0.8          -7.8           0 \r\n 1981          39            7.5          -7.45         -18.65         0 \r\n 1981          40            5.5          -6.925        -14.85         1.2 \r\n 1981          41            3.6          -9.9          -21.3          10.675 \r\n 1981          42            13.4         -11.8         -27.95         0 \r\n 1981          43            12.7         -0.325        -16.025        0 \r\n 1981          44            10.2          4.4          -10.35         0 \r\n 1981          45            11.9          8.975        -6.125         0 \r\n 1981          46            10.7          11.4         -1.6           0 \r\n 1981          47            13.1          16.5         -1.35          1.1 \r\n 1981          48            11.9          18.7          0.775         0 \r\n 1981          49            13.3          17.375        1.9           0 \r\n 1981          50            14.2          15.85        -0.55          0 \r\n 1981          51            13.2          18.325        1.025         0 \r\n 1981          52            4             10.95         0.125         0 \r\n 1981          53            4.8           6.675        -0.9           1 \r\n 1981          54            15.7          11.175       -3.95          0 \r\n 1981          55            15.6          17.9         -1.475         0 \r\n 1981          56            15.4          14.775       -1.4           0 \r\n 1981          57            8.6           12.575       -2.225         0 \r\n 1981          58            11.7          16.95         6.025         0 \r\n 1981          59            16.4          9.1          -2.25          0 \r\n 1981          60            10.1          10.375       -5.3           0 \r\n 1981          61            15.3          6.375        -7.65          0 \r\n 1981          62            4.3           7.425        -5.3           3.45 \r\n 1981          63            3             3.8          -1.45          4.725 \r\n 1981          64            15.6          5.675        -8.075         0 \r\n 1981          65            13.5          4.5          -6.475         0 \r\n 1981          66            16.5          4.7          -8.2           0 \r\n 1981          67            16.2          7.775        -5.4           0 \r\n 1981          68            14.8          10.85        -4.15          0 \r\n 1981          69            16.5          12.5         -4.55          0 \r\n 1981          70            17.3          11.9         -6.075         0 \r\n 1981          71            17.5          16.875       -2.15          0 \r\n 1981          72            18.5          11           -3.75          0 \r\n 1981          73            17.7          14.775       -4.575         0 \r\n 1981          74            17.6          16.075        0.95          0 \r\n 1981          75            19.6          13.375       -5.425         0 \r\n 1981          76            9.7           10.375       -0.4           0 \r\n 1981          77            20.5          5.6          -7.875         0 \r\n 1981          78            20            8.825        -6.325         0 \r\n 1981          79            10.5          7.925        -5.9           0 \r\n 1981          80            2.6           4.825        -0.975         4.15 \r\n 1981          81            19            14.05        -1.325         0 \r\n 1981          82            21.1          16.65        -1.25          0 \r\n 1981          83            14.9          17.65         2.3           2.875 \r\n 1981          84            20.3          20.175        3.05          0 \r\n 1981          85            9.3           17.775        2.925         0 \r\n 1981          86            19.6          21.75         2.575         0 \r\n 1981          87            11.5          21.875        11.525        1 \r\n 1981          88            18.2          17.825        9.55          9.025 \r\n 1981          89            21.2          20.425        2.025         0 \r\n 1981          90            22.5          19.175        7.65          0 \r\n 1981          91            21.2          19.55         4.75          0 \r\n 1981          92            20.7          26.825        7.175         0 \r\n 1981          93            3.5           21.35         13.4          9.6 \r\n 1981          94            18.4          17.175        2.175         1.175 \r\n 1981          95            20.3          13.575       -0.35          0 \r\n 1981          96            21.9          19.625        1.35          0 \r\n 1981          97            21.2          22.875        6.55          0 \r\n 1981          98            19.5          20.125        7.4           4.45 \r\n 1981          99            22.5          21.175        4.2           0 \r\n 1981          100           6.9           23.45         10.8          0 \r\n 1981          101           6.3           21.025        10.2          1.475 \r\n 1981          102           12.5          23.475        9.8           1.6 \r\n 1981          103           11            25.175        14.15         5.4 \r\n 1981          104           25.3          15.125        1.075         0 \r\n 1981          105           25.1          17.225       -0.15          0 \r\n 1981          106           12.8          21.825        7.3           2.75 \r\n 1981          107           24.2          26.25         10.1          0 \r\n 1981          108           11.2          21.35         6.525         1.35 \r\n 1981          109           7.3           19.6          12.5          0.9 \r\n 1981          110           11.9          14.9          7.375         0 \r\n 1981          111           14.5          19.9          2.65          1.675 \r\n 1981          112           8             19.95         12.175        13.125 \r\n 1981          113           26.8          19.825        5.375         0 \r\n 1981          114           27.1          22.475        2.925         0 \r\n 1981          115           24.1          30.125        8.4           0 \r\n 1981          116           18            30.225        12.775        0 \r\n 1981          117           16.5          29.075        14.85         0 \r\n 1981          118           15.3          22.775        12.6          0 \r\n 1981          119           26            26.15         10.625        0 \r\n 1981          120           27            23.4          8.6           0 \r\n 1981          121           26.6          18.775        5.9           0 \r\n 1981          122           25.5          25.225        6.3           0 \r\n 1981          123           8.7           24            14.1          18.601 \r\n 1981          124           3.9           21.525        15.35         21.301 \r\n 1981          125           24.1          21.9          7.525         0 \r\n 1981          126           22.2          18.5          5.3           0 \r\n 1981          127           21.2          18.15         3.2           0 \r\n 1981          128           11.2          19.2          6.6           0 \r\n 1981          129           11.9          17.825        8.95          0 \r\n 1981          130           28.1          16.5          2             0 \r\n 1981          131           28.9          20.375        1.575         0 \r\n 1981          132           14.2          18.375        5.3           4.825 \r\n 1981          133           14.5          18.55         6.425         0 \r\n 1981          134           27.9          22.325        7.15          1.925 \r\n 1981          135           25.9          24.3          7.925         0 \r\n 1981          136           21.3          23.225        10.7          0 \r\n 1981          137           14.5          19.425        9.55          9.35 \r\n 1981          138           5             14.575        6.575         12.726 \r\n 1981          139           26.5          20.125        3.925         0 \r\n 1981          140           30.5          22.925        6.5           0 \r\n 1981          141           26.6          24.725        8.8           0 \r\n 1981          142           17.2          24.1          12.5          3.175 \r\n 1981          143           9.6           22.375        16.25         3.425 \r\n 1981          144           30            22.55         9.225         0 \r\n 1981          145           27.5          24.95         9.875         0 \r\n 1981          146           24.5          24.7          12.775        0 \r\n 1981          147           26.6          27.35         13.8          0 \r\n 1981          148           6.2           23.75         16.325        1.1 \r\n 1981          149           24.5          27.525        14.35         0 \r\n 1981          150           27.8          25.05         13.075        0 \r\n 1981          151           30.2          26.9          11.325        0 \r\n 1981          152           28.7          29.25         11.5          0 \r\n 1981          153           10.2          25.025        17.05         16.1 \r\n 1981          154           29.8          28.4          12.575        0 \r\n 1981          155           27.6          31.525        15.125        0 \r\n 1981          156           25.4          31.7          16.4          0 \r\n 1981          157           31.5          30.95         16.3          0 \r\n 1981          158           17.1          30.375        16.925        3.6 \r\n 1981          159           16.6          30.3          18.3          0 \r\n 1981          160           25.5          33.275        18            0 \r\n 1981          161           28.8          30.45         15.575        3.3 \r\n 1981          162           10.8          26.55         15.625        2.4 \r\n 1981          163           11.1          28.15         16.9          0 \r\n 1981          164           19.2          30.925        20.4          1.925 \r\n 1981          165           10.7          27.925        21.975        16.1 \r\n 1981          166           13.7          25.25         13.8          13.6 \r\n 1981          167           31.3          25.925        10.625        0 \r\n 1981          168           31.4          29.675        12.75         0 \r\n 1981          169           29.1          28.2          14.45         0 \r\n 1981          170           29            30.4          13            0 \r\n 1981          171           26.6          31.05         17.025        0 \r\n 1981          172           14.6          26.175        14.825        7.325 \r\n 1981          173           29.6          29.05         13.1          0 \r\n 1981          174           23.1          31.025        14.8          0 \r\n 1981          175           22.3          31.1          20.725        0 \r\n 1981          176           31.1          31.3          16.05         0 \r\n 1981          177           30.4          32.725        15.475        3.225 \r\n 1981          178           15.2          29.325        18.475        5.25 \r\n 1981          179           28.2          34.9          19.8          9.875 \r\n 1981          180           15.4          31            21.875        22.8 \r\n 1981          181           28.8          30.525        17.25         0 \r\n 1981          182           29.8          31.525        16.675        0 \r\n 1981          183           26            32.2          18.225        0 \r\n 1981          184           6.4           28.175        20.45         18.899 \r\n 1981          185           25.9          30.775        19.175        0 \r\n 1981          186           29.7          31.95         18.6          0 \r\n 1981          187           30.6          33.25         18.2          0 \r\n 1981          188           26.2          32.35         19.4          7.625 \r\n 1981          189           23.3          31.625        22.4          3.325 \r\n 1981          190           25.9          33.65         20.3          0 \r\n 1981          191           16.9          30.95         21.2          0 \r\n 1981          192           22            34.05         22.4          0 \r\n 1981          193           22.1          36.675        23.95         0 \r\n 1981          194           19.8          34.6          23.675        0 \r\n 1981          195           19.1          32.875        22.075        1.75 \r\n 1981          196           15.5          30.85         22.55         18.824 \r\n 1981          197           18.1          28.3          20.65         0 \r\n 1981          198           10.7          27.125        20.2          6.075 \r\n 1981          199           11.1          27.55         20.825        6.575 \r\n 1981          200           17.1          27.7          21.125        2.5 \r\n 1981          201           26.4          29            19.9          2.15 \r\n 1981          202           20.6          29.075        17.65         0 \r\n 1981          203           22.6          29.6          17.05         0 \r\n 1981          204           18.2          27.85         18.875        0 \r\n 1981          205           18.4          29.675        18.1          2.35 \r\n 1981          206           9.5           25.775        20.8          15.774 \r\n 1981          207           21.4          26.375        16.225        0 \r\n 1981          208           11.8          23            15.225        19.174 \r\n 1981          209           18.5          20.625        12.425        0 \r\n 1981          210           19.8          24.45         11.9          0 \r\n 1981          211           24.8          28.025        16            0 \r\n 1981          212           14.4          27.15         18.375        1.85 \r\n 1981          213           12.1          28.675        19.825        8.125 \r\n 1981          214           20.7          27.975        20.375        25.45 \r\n 1981          215           26.3          28.85         17.4          0 \r\n 1981          216           17.9          29.025        18.85         5.925 \r\n 1981          217           10.6          28.875        22.025        7.525 \r\n 1981          218           20.4          28.75         19.225        0 \r\n 1981          219           27.2          26.375        15.325        0 \r\n 1981          220           20.2          27.075        14.5          0 \r\n 1981          221           24            27.275        15.8          0 \r\n 1981          222           25.8          25.825        12.775        0 \r\n 1981          223           26.6          28.4          12.975        0 \r\n 1981          224           26.5          29.55         15.425        0 \r\n 1981          225           5.9           25.175        16.875        13.65 \r\n 1981          226           15.7          29.3          20.625        0 \r\n 1981          227           23.7          28.55         19.65         0 \r\n 1981          228           23.8          25.85         13.95         0 \r\n 1981          229           25.7          24.775        11.2          0 \r\n 1981          230           25.3          25.6          10.85         0 \r\n 1981          231           26            26.425        11.075        0 \r\n 1981          232           25.3          27.35         11.925        0 \r\n 1981          233           25.1          28.275        12.825        0 \r\n 1981          234           24.8          29.375        13.4          2.125 \r\n 1981          235           10.3          27.175        16.05         16.2 \r\n 1981          236           21.3          29.6          15.225        5.575 \r\n 1981          237           9.1           28.5          16.9          5.5 \r\n 1981          238           17.7          24.075        18.85         19.875 \r\n 1981          239           16.4          23.025        15.35         6.125 \r\n 1981          240           12.8          23            16.125        2.975 \r\n 1981          241           18.5          26.775        13.85         0 \r\n 1981          242           14.3          30.675        18.575        0 \r\n 1981          243           10.9          28.025        20.075        0 \r\n 1981          244           21.2          22.325        9.925         0 \r\n 1981          245           25.2          24.35         8.675         0 \r\n 1981          246           21.4          27.55         11            1.85 \r\n 1981          247           21.6          25.425        14.5          21.175 \r\n 1981          248           16            26.225        14.7          2.225 \r\n 1981          249           15.9          27.325        15.925        2.225 \r\n 1981          250           20.8          23.375        16.2          18.55 \r\n 1981          251           22.9          26.1          11.1          0 \r\n 1981          252           22.5          28.7          12.15         0 \r\n 1981          253           22.9          29.75         13.325        0 \r\n 1981          254           18.2          29.675        16.1          0 \r\n 1981          255           22.5          28.175        12.15         0 \r\n 1981          256           20.1          30.825        13.425        0 \r\n 1981          257           21.3          26.975        14.1          0 \r\n 1981          258           17.6          23.55         10.275        0 \r\n 1981          259           18.3          17.3          6.25          0 \r\n 1981          260           20.6          18.25         3.325         0 \r\n 1981          261           20.6          22.2          5.15          0 \r\n 1981          262           20.4          27.8          7.525         0 \r\n 1981          263           19.5          29.025        10.35         0 \r\n 1981          264           16.3          27.075        12.675        0 \r\n 1981          265           14.2          21.75         7.525         0 \r\n 1981          266           11.2          26.225        9.25          0 \r\n 1981          267           3             21.925        15.9          7 \r\n 1981          268           9.1           24.125        16.9          1.8 \r\n 1981          269           16.5          21.6          16.2          0.9 \r\n 1981          270           17.8          20.35         7.375         0 \r\n 1981          271           16.8          22.55         5.3           0 \r\n 1981          272           16.1          30.625        16.175        0 \r\n 1981          273           12.3          27.65         15.8          0 \r\n 1981          274           19.4          18.9          8.575         0 \r\n 1981          275           19.1          17.1          1.85          0 \r\n 1981          276           2.2           17.4          7.7           37.802 \r\n 1981          277           16.6          23.85         12.45         0.8 \r\n 1981          278           4.8           23.425        11.95         0 \r\n 1981          279           18.3          16.925        5.5           0 \r\n 1981          280           17.6          17.775        2.85          0 \r\n 1981          281           16.4          17.725        4.3           0 \r\n 1981          282           6.4           17.525        6.5           0 \r\n 1981          283           11.3          18.55         6.325         0 \r\n 1981          284           14.5          20.25         6.525         0 \r\n 1981          285           10.3          21.85         11.35         0 \r\n 1981          286           3.9           20.5          13.5          3.125 \r\n 1981          287           10.3          19.75         12.775        1.2 \r\n 1981          288           14.6          18.45         6.75          0.575 \r\n 1981          289           12.6          20.175        7.25          0 \r\n 1981          290           7.2           18.225        10.725        12.851 \r\n 1981          291           14.1          10.1          4.425         0 \r\n 1981          292           14.7          19.7          0.525         0 \r\n 1981          293           13.9          19.1          5.925         0 \r\n 1981          294           13            12.25         2.1           0 \r\n 1981          295           12            8.125        -2.6           0 \r\n 1981          296           14.1          3.975        -6.6           0 \r\n 1981          297           2.7           4.725        -2.85          3.025 \r\n 1981          298           5.4           7.7           0.65          0 \r\n 1981          299           12.7          11.45        -2.45          0 \r\n 1981          300           11.5          17.725        1.075         0 \r\n 1981          301           9.6           18.375        5.825         0 \r\n 1981          302           10.3          19.8          6.5           0 \r\n 1981          303           5.9           19.95         11.025        0 \r\n 1981          304           3.5           16.7          8.8           5.7 \r\n 1981          305           2             14.9          6.575         14 \r\n 1981          306           2.5           17            13.275        7.55 \r\n 1981          307           7             18            10            1.55 \r\n 1981          308           7.1           15.875        5.8           0 \r\n 1981          309           11.4          13.925        6.35          0 \r\n 1981          310           12.7          15.45        -0.8           0 \r\n 1981          311           11.6          16.9          2.2           0 \r\n 1981          312           8.8           11.25         3.6           0 \r\n 1981          313           12.2          7.2          -6.025         0 \r\n 1981          314           11.3          13.2         -2.85          0 \r\n 1981          315           10.9          13.675       -0.55          0 \r\n 1981          316           10.8          15.675       -0.025         0 \r\n 1981          317           10.6          16.95         2.325         0 \r\n 1981          318           5.3           14.825        4.2           0 \r\n 1981          319           6.8           17.825        7.225         0 \r\n 1981          320           8.1           16.225        2.15          0 \r\n 1981          321           9.9           17.2          2.125         0 \r\n 1981          322           4.4           15.525        5.1           0.575 \r\n 1981          323           3             10.925       -2.375         3.125 \r\n 1981          324           10           -0.6          -8.2           0 \r\n 1981          325           9.6           2.875        -8             0 \r\n 1981          326           8             8.6          -3.4           0 \r\n 1981          327           5.9           8.275         1             0.6 \r\n 1981          328           6.9           8.225        -2.325         0 \r\n 1981          329           4.6           11.35        -0.05          0 \r\n 1981          330           6.3           8.2           0.5           0 \r\n 1981          331           7.9           4.9          -5.525         0 \r\n 1981          332           8.4           5.3          -5.2           0 \r\n 1981          333           8.3           7.125        -4.05          0 \r\n 1981          334           3.7           3.1          -0.525         29.051 \r\n 1981          335           5.3           2.95         -1.75          10.876 \r\n 1981          336           7.3           1.875        -8.95          0 \r\n 1981          337           8.5           4.5          -1.8           0 \r\n 1981          338           8.3           4.45         -3             0 \r\n 1981          339           4.2           5.225        -5.925         0 \r\n 1981          340           6.1           9.5          -1.5           0 \r\n 1981          341           8.1           10.675        1.325         0 \r\n 1981          342           6.6           6.375        -2.8           0 \r\n 1981          343           8.6           2.8          -4.875         0 \r\n 1981          344           3.6           2.05         -4.275         0 \r\n 1981          345           6.7           4.9          -2.125         0 \r\n 1981          346           6.1           6.325        -0.475         0 \r\n 1981          347           1.2           2.875        -0.475         1.075 \r\n 1981          348           8.6           1.775        -5.525         0 \r\n 1981          349           4.1          -1.425        -5.175         4.85 \r\n 1981          350           2.2          -5.425        -11.3          7.025 \r\n 1981          351           7.2          -11.1         -19.35         0 \r\n 1981          352           6.3          -11.8         -23.55         0 \r\n 1981          353           5.8          -12.25        -21.15         0 \r\n 1981          354           4.3           0.6          -18.025        0 \r\n 1981          355           2.2           1.525        -2.475         0 \r\n 1981          356           2.8           1.25         -4.7           0 \r\n 1981          357           8.5           1.1          -10.925        0 \r\n 1981          358           8.7           0.575        -12.825        0 \r\n 1981          359           4.1           0.975        -10.825        0 \r\n 1981          360           5.9           0.55         -8.35          5.275 \r\n 1981          361           2.7          -1.5          -9.575         2.125 \r\n 1981          362           7.3          -3.4          -12.7          3.425 \r\n 1981          363           6.7          -0.05         -15.225        0 \r\n 1981          364           5.2           2.65         -18.775        0 \r\n 1981          365           4.6           1.85         -12.8          0 \r\n 1982          1             2.6          -8.6          -22.975        0 \r\n 1982          2             3             1.85         -8.05          7.05 \r\n 1982          3             3.2          -4.925        -17.825        1.075 \r\n 1982          4             8.4          -6.75         -17.075        1.425 \r\n 1982          5             8.1           1.05         -13.7          0 \r\n 1982          6             6.4          -10.25        -17.425        0 \r\n 1982          7             8.1          -12.575       -22.525        0 \r\n 1982          8             4.3          -5.475        -15.275        0 \r\n 1982          9             8.2          -10           -22.55         1.025 \r\n 1982          10            9.3          -17.45        -35.075        0 \r\n 1982          11            7.4          -13.025       -24.525        0 \r\n 1982          12            2            -11.575       -14.7          1.975 \r\n 1982          13            6.3          -11.45        -21.275        0 \r\n 1982          14            7.1          -11.55        -24.575        0 \r\n 1982          15            7             1.825        -14.3          0 \r\n 1982          16            10.2         -13.5         -27.05         0 \r\n 1982          17            8.2          -2.45         -27.425        0 \r\n 1982          18            6.4          -0.225        -7.275         0 \r\n 1982          19            6.8           0.425        -9.675         0 \r\n 1982          20            7.1          -4.45         -13.6          0 \r\n 1982          21            7            -4.425        -12.125        1.15 \r\n 1982          22            5             2.35         -8.325         22.501 \r\n 1982          23            9.3          -3.875        -17.775        0 \r\n 1982          24            7.6          -10.775       -23.9          0 \r\n 1982          25            10.8         -2.725        -16.4          0 \r\n 1982          26            9.5           0.55         -20.825        0 \r\n 1982          27            8.4           3.4           0.05          0 \r\n 1982          28            11            3.65         -10            0 \r\n 1982          29            3.4           2.825        -5.525         3.25 \r\n 1982          30            6.1           1.475        -7.975         0 \r\n 1982          31            12.1         -9.4          -18.625        0 \r\n 1982          32            3.3          -5.525        -21.7          2.525 \r\n 1982          33            3.7          -4.85         -10.275        0 \r\n 1982          34            10.1         -9.625        -24.85         0 \r\n 1982          35            3.4          -14.675       -29.075        1.8 \r\n 1982          36            6.6          -14.775       -19.15         1.775 \r\n 1982          37            11.8         -6.8          -27.15         0 \r\n 1982          38            10.8         -0.35         -17.375        0 \r\n 1982          39            4.6          -7.575        -17.275        0 \r\n 1982          40            12.5         -10.6         -23.425        0 \r\n 1982          41            6.3          -8.475        -23.975        0 \r\n 1982          42            11.7         -0.45         -19.275        0 \r\n 1982          43            12.1         -0.425        -12.425        0 \r\n 1982          44            11.3          2.25         -12.575        0 \r\n 1982          45            9.6           4.775        -5.625         0 \r\n 1982          46            3.3           4.35          0.25          0 \r\n 1982          47            3.4           1.925         0.425         0.7 \r\n 1982          48            5.5           2.075        -1.225         2.525 \r\n 1982          49            5.2           3.375        -1.85          2.625 \r\n 1982          50            8.7           12.325       -0.425         0 \r\n 1982          51            13.7          14.325        2.55          0 \r\n 1982          52            12.3          13.9         -0.225         0 \r\n 1982          53            14.3          20.55         2.45          0 \r\n 1982          54            9.6           13.7         -1.975         0 \r\n 1982          55            15            5.15         -3.15          0 \r\n 1982          56            14.1          3.8          -5.2           0 \r\n 1982          57            16.6          6.3          -5.35          0 \r\n 1982          58            16            8.4          -3.8           0 \r\n 1982          59            14.5          13.225       -1.525         0 \r\n 1982          60            12            11.325       -2.4           0 \r\n 1982          61            2.1           7.05         -3.85          4.825 \r\n 1982          62            7.7          -0.5          -7.5           2.475 \r\n 1982          63            6.5          -4.075        -8.65          8.65 \r\n 1982          64            14.9         -5.3          -12.825        0 \r\n 1982          65            14.9          0.175        -12.925        0 \r\n 1982          66            11.2         -3.075        -12.775        0 \r\n 1982          67            16.2          1.975        -6.975         0 \r\n 1982          68            7.1          -1.05         -13.6          0 \r\n 1982          69            14.6          14.475       -3.875         0 \r\n 1982          70            16.8          7.35         -3.525         0 \r\n 1982          71            6.6           18.275       -0.875         0 \r\n 1982          72            18.1          12.6         -2.5           0 \r\n 1982          73            4.4           7.6           2.325         2.75 \r\n 1982          74            6.3           9.425        -0.375         0 \r\n 1982          75            15            14.425        1.55          1.95 \r\n 1982          76            17.5          15.5         -0.4           0 \r\n 1982          77            5.6           12.75         2.15          8.175 \r\n 1982          78            5.4           16.525        3             41.924 \r\n 1982          79            20.2          12.775        0.3           0 \r\n 1982          80            18.8          6.8          -5.025         0 \r\n 1982          81            20.8          10.2         -5.25          0 \r\n 1982          82            13.9          13.25        -1.15          4.8 \r\n 1982          83            4.3           7.475        -1.975         1.85 \r\n 1982          84            15.4          3.35         -4.15          0 \r\n 1982          85            22.1          7.125        -5.55          0 \r\n 1982          86            22.5          6.925        -6.3           0 \r\n 1982          87            21.5          10.525       -4.5           1.725 \r\n 1982          88            13.6          13.475        0.725         1.3 \r\n 1982          89            20.5          15.1          8.05          1.3 \r\n 1982          90            23.7          16.3          0.6           0 \r\n 1982          91            20.3          21.7          4.225         0 \r\n 1982          92            4.7           22.675        12.55         0 \r\n 1982          93            22.3          17.35        -6.75          0 \r\n 1982          94            16.9          6.075        -6.7           0 \r\n 1982          95            7.2           1.725        -3.95          2.775 \r\n 1982          96            16.9          3.375        -8.725         0 \r\n 1982          97            12.9          4.6          -4.5           2.35 \r\n 1982          98            8.8           4.65         -4.875         2.275 \r\n 1982          99            22.1          9.175        -5             0 \r\n 1982          100           23.8          10.65        -2.4           0 \r\n 1982          101           23.1          19.525       -1.85          0 \r\n 1982          102           17.1          23.15         8.675         0 \r\n 1982          103           22.6          20.15         5.85          0 \r\n 1982          104           17.9          23.475        6.175         2.925 \r\n 1982          105           7.6           21.55         11.8          10.375 \r\n 1982          106           7.8           20.5          8.075         17.05 \r\n 1982          107           24.6          16.65         1.9           0 \r\n 1982          108           22.8          19.65         4.2           0 \r\n 1982          109           18            17.675        7.2           2.975 \r\n 1982          110           26.4          11.725        1.35          0 \r\n 1982          111           21.9          15           -0.7           0 \r\n 1982          112           26.4          16.75        -0.25          0 \r\n 1982          113           27            20.3          3.375         0 \r\n 1982          114           22.9          21.075        5.675         0 \r\n 1982          115           9.5           18.95         7.7           2.175 \r\n 1982          116           26.2          17.65         5.475         0 \r\n 1982          117           10.6          14.9          3.25          0 \r\n 1982          118           4.3           10.525        5.15          6.725 \r\n 1982          119           22.3          17.375        2.675         0 \r\n 1982          120           19.6          20.85         8.2           0 \r\n 1982          121           22.1          22.25         8.425         0 \r\n 1982          122           25.2          23.25         8.2           0 \r\n 1982          123           15.5          24.35         11.525        0 \r\n 1982          124           10.6          25.45         15.1          19.601 \r\n 1982          125           4.9           21.075        11.225        15.726 \r\n 1982          126           17.8          16.9          2.675         11.826 \r\n 1982          127           25.4          21.925        4.175         0 \r\n 1982          128           18            22.825        7.725         0 \r\n 1982          129           15.3          24.4          11.7          0 \r\n 1982          130           17.2          25.1          13.625        11.476 \r\n 1982          131           7.2           22.725        14.05         12.526 \r\n 1982          132           8             22.525        15.15         11.801 \r\n 1982          133           7.1           21.225        15.1          0 \r\n 1982          134           7.9           20.625        15.15         7.3 \r\n 1982          135           8.9           20.225        12.85         3.925 \r\n 1982          136           7.5           21.7          12.45         4.35 \r\n 1982          137           9.8           21.525        14.9          7.375 \r\n 1982          138           16.9          22.5          11.775        0 \r\n 1982          139           15.7          24.625        13.6          9.65 \r\n 1982          140           6.2           22.2          15.1          22.851 \r\n 1982          141           7.2           19.5          13.75         21.751 \r\n 1982          142           18            21.175        8.35          0 \r\n 1982          143           24.9          23.45         9.725         0 \r\n 1982          144           8.5           21.45         13.15         12.726 \r\n 1982          145           4.3           18.975        12.95         13.676 \r\n 1982          146           13.4          21.575        13.65         7.075 \r\n 1982          147           22.4          24.1          11.55         4.525 \r\n 1982          148           11.9          23.3          13.125        0 \r\n 1982          149           21.3          24.35         16.75         15.076 \r\n 1982          150           7.8           23.05         14.575        0 \r\n 1982          151           19.3          20.075        9.425         0 \r\n 1982          152           31.3          22.375        5.525         0 \r\n 1982          153           18            20.65         11.225        2.175 \r\n 1982          154           24.2          20.475        8.375         0 \r\n 1982          155           26.8          22.65         10.775        0 \r\n 1982          156           26.2          23.175        9.4           0 \r\n 1982          157           16.9          27.325        14.5          0.9 \r\n 1982          158           27.8          26.1          11.2          11.2 \r\n 1982          159           14.4          25.25         11.9          1.75 \r\n 1982          160           14.1          22.3          16.175        2.5 \r\n 1982          161           31            25.075        8.2           0 \r\n 1982          162           16.7          23.2          12.65         1.325 \r\n 1982          163           25.9          25.8          11.025        0.8 \r\n 1982          164           29.2          26.15         11.825        1.3 \r\n 1982          165           13.7          25.175        15.025        24.975 \r\n 1982          166           18.3          23.15         17.15         26.575 \r\n 1982          167           31.3          25.25         9.7           0 \r\n 1982          168           14.2          25.1          12.075        2.1 \r\n 1982          169           21.5          22.925        13.7          0 \r\n 1982          170           29.7          22.525        10.025        0 \r\n 1982          171           30.8          25            11.95         0 \r\n 1982          172           27.8          27.1          12.1          0 \r\n 1982          173           30.3          25.5          12.775        0 \r\n 1982          174           22.1          26.45         13.025        0 \r\n 1982          175           16            26.325        16.325        0 \r\n 1982          176           13.3          24.625        18.025        0 \r\n 1982          177           21.3          26.15         16.65         0 \r\n 1982          178           13.7          25.625        17.85         0 \r\n 1982          179           20.6          28            17.15         0 \r\n 1982          180           17.1          28.875        18.975        17.025 \r\n 1982          181           17.1          24.85         14.55         1.2 \r\n 1982          182           19.7          27.725        15.675        5.375 \r\n 1982          183           9.1           28.85         18.8          6.45 \r\n 1982          184           21.5          32.225        21.075        0 \r\n 1982          185           11.7          31.25         21.625        0 \r\n 1982          186           16.1          30.8          22.3          9.7 \r\n 1982          187           14.1          29.225        21.25         17.274 \r\n 1982          188           30.1          29.7          14.05         0 \r\n 1982          189           23.7          29.775        17.5          0 \r\n 1982          190           13.6          29.3          18.35         11.424 \r\n 1982          191           20.1          26.75         20.2          7.65 \r\n 1982          192           29.6          28.15         14.2          0 \r\n 1982          193           18.4          29.525        17.475        0 \r\n 1982          194           20.9          29.45         17.55         0 \r\n 1982          195           14.1          28.925        19.9          0 \r\n 1982          196           8.2           28.25         20.725        0 \r\n 1982          197           12.8          29.775        21.65         0 \r\n 1982          198           11.9          29.9          22.275        5.575 \r\n 1982          199           20            30.15         20.275        3.45 \r\n 1982          200           18            31.625        19.85         5.1 \r\n 1982          201           12.3          31.875        22.2          1.8 \r\n 1982          202           23.6          32.7          22            1.35 \r\n 1982          203           27.5          30.3          19.5          0 \r\n 1982          204           27.3          30.1          17.925        0 \r\n 1982          205           27.6          30.3          18.05         0 \r\n 1982          206           27.5          31.55         18.975        0 \r\n 1982          207           24.9          32.075        19.35         0 \r\n 1982          208           21.2          29.6          20.925        0 \r\n 1982          209           27.8          28.8          16.55         0 \r\n 1982          210           16            28.1          17.9          0 \r\n 1982          211           28.1          27.85         15.95         0 \r\n 1982          212           24            29.85         15.775        0 \r\n 1982          213           24.9          30.1          17.85         0 \r\n 1982          214           25.5          30.3          20.1          0 \r\n 1982          215           23.4          31.8          22.7          4.675 \r\n 1982          216           13.7          30.575        22.275        15.35 \r\n 1982          217           16.8          28.375        22.5          27.526 \r\n 1982          218           21.9          27.6          20.65         0 \r\n 1982          219           20.4          27.775        20.75         0 \r\n 1982          220           27.7          26.55         18.5          0 \r\n 1982          221           23.3          24.05         13.825        4.475 \r\n 1982          222           10.2          20.05         12.275        28.6 \r\n 1982          223           27.1          22.1          10.25         0 \r\n 1982          224           13.9          24.225        11.425        13.75 \r\n 1982          225           19.1          27.375        17.225        8.05 \r\n 1982          226           15.4          27            17.05         4.6 \r\n 1982          227           14.7          28.125        19.6          0 \r\n 1982          228           20            27.375        18.35         0 \r\n 1982          229           20.7          27.65         16.875        0 \r\n 1982          230           21.4          28.05         19.45         0 \r\n 1982          231           18.9          30.2          18.55         0 \r\n 1982          232           23.3          27.425        21.45         0 \r\n 1982          233           24.6          26.85         14.375        0 \r\n 1982          234           23            29.875        17.025        2.075 \r\n 1982          235           23.8          28.25         17.175        11.925 \r\n 1982          236           19.1          25.675        16.75         0 \r\n 1982          237           22.5          25.675        12.6          0 \r\n 1982          238           10.3          22.85         14.05         0 \r\n 1982          239           21.5          22.4          15.45         0 \r\n 1982          240           18.4          23.6          10.3          4.65 \r\n 1982          241           7.2           25.55         15.55         27.626 \r\n 1982          242           10.2          26.175        19.8          9.375 \r\n 1982          243           8.5           28.375        19.45         0 \r\n 1982          244           19.7          28.025        20.975        1.4 \r\n 1982          245           24.3          25.2          17.675        0 \r\n 1982          246           24.5          26.2          13.725        0 \r\n 1982          247           23.1          28.35         13.65         0 \r\n 1982          248           12            27.425        18.125        0 \r\n 1982          249           3.3           24            18            0 \r\n 1982          250           12.7          23.425        16.6          0 \r\n 1982          251           14.9          25.6          15.95         2.225 \r\n 1982          252           8.8           26.175        18.6          0 \r\n 1982          253           18.4          28.6          18.65         1.3 \r\n 1982          254           18.4          28.9          18.25         11.05 \r\n 1982          255           6.6           25.675        19.1          17.925 \r\n 1982          256           6.1           22.65         13.6          9.55 \r\n 1982          257           8.5           20.15         11.25         4.35 \r\n 1982          258           17.7          18.5          10.925        0 \r\n 1982          259           11.8          20.15         9.425         1.425 \r\n 1982          260           5.3           18.175        14.2          17.975 \r\n 1982          261           21            19.575        6.65          0 \r\n 1982          262           16.4          23.325        9.05          0 \r\n 1982          263           18.8          16.675        5.525         0 \r\n 1982          264           19.9          18.175        3.175         0 \r\n 1982          265           19.4          20.375        5.625         0 \r\n 1982          266           13.5          24.05         9.4           2.275 \r\n 1982          267           17.6          19.55         9.05          0 \r\n 1982          268           15.8          18.625        5.4           0 \r\n 1982          269           17.3          20.2          6.85          0 \r\n 1982          270           16.7          21.925        7.95          0 \r\n 1982          271           9.9           26.275        13.95         0 \r\n 1982          272           5.1           23.775        17.7          13.75 \r\n 1982          273           2.7           23.3          17.375        3.225 \r\n 1982          274           9             25.45         17.25         5.075 \r\n 1982          275           9.9           22.025        16            9.425 \r\n 1982          276           18.7          23.825        9.3           0 \r\n 1982          277           17.7          24.1          10.3          0 \r\n 1982          278           12.5          27.6          15.15         2.025 \r\n 1982          279           6.8           23.475        12.725        0 \r\n 1982          280           17.7          22.525        6.725         0 \r\n 1982          281           3.3           22.9          11.55         8.025 \r\n 1982          282           14            20.975        8.75          1.175 \r\n 1982          283           11.3          14.95         7.075         0 \r\n 1982          284           16.4          16.1          3.9           0 \r\n 1982          285           14.6          15.3          2.6           0 \r\n 1982          286           13            14.175        3.65          0 \r\n 1982          287           15.6          20.15         3.025         0 \r\n 1982          288           15.2          19.45         8.15          0 \r\n 1982          289           15.2          17.375        2.6           0 \r\n 1982          290           14.4          20.575        7.075         0 \r\n 1982          291           9.4           22.2          9.325         1.425 \r\n 1982          292           2             17.45         2.75          11.851 \r\n 1982          293           14.8          8.4          -1.925         0 \r\n 1982          294           14.2          12.85        -2.95          0 \r\n 1982          295           13.8          14.7         -0.625         0 \r\n 1982          296           9.2           14.9          0.8           0 \r\n 1982          297           12.8          17.65         1.925         0 \r\n 1982          298           12.7          19.375        3.975         0 \r\n 1982          299           11.1          18.85         6.15          0 \r\n 1982          300           6.7           18.925        7.7           0 \r\n 1982          301           2.1           17.05         9.15          9.525 \r\n 1982          302           11.2          18.175        3.7           0 \r\n 1982          303           10.3          18.375        5.975         0 \r\n 1982          304           7.4           20.55         8.425         0 \r\n 1982          305           4.3           16.675        9.45          0 \r\n 1982          306           11            14.775        5.2           0 \r\n 1982          307           9.1           8.375        -2.225         0 \r\n 1982          308           12            2.45         -6.75          0 \r\n 1982          309           12.8          4.85         -6.225         0 \r\n 1982          310           12.2          12.85        -3.175         0 \r\n 1982          311           2.7           12.3          2.6           0 \r\n 1982          312           3.6           8.85          1.3           0.75 \r\n 1982          313           3             16.275        4.275         1.25 \r\n 1982          314           10.2          13.925        5.825         0 \r\n 1982          315           1.8           19.55         1.8           31.476 \r\n 1982          316           11.3          16.45        -7.7           0 \r\n 1982          317           4.8           2.325        -8.75          0 \r\n 1982          318           10.9          0.125        -6.5           0 \r\n 1982          319           10.1          6.2          -6.3           0 \r\n 1982          320           10.4          7.775        -3.375         0 \r\n 1982          321           10.4          10.55        -1.5           0 \r\n 1982          322           1.2           7.2          -0.25          0.525 \r\n 1982          323           3             15.45         5.35          3.2 \r\n 1982          324           8.4           15.25         5.025         0 \r\n 1982          325           6.4           10.325       -1.5           0 \r\n 1982          326           5.5           10.325       -0.1           0 \r\n 1982          327           8.3           2.575        -7.025         0 \r\n 1982          328           9.6           3.4          -7.825         0 \r\n 1982          329           7             5.05         -4.25          0 \r\n 1982          330           6.9           2.65         -5.15          0 \r\n 1982          331           4.9           2.75         -8             0 \r\n 1982          332           2.4           3.125        -1.8           10.45 \r\n 1982          333           5.1           4.75         -2.975         0 \r\n 1982          334           2.8           4.25         -1.85          0 \r\n 1982          335           2             14.2          2.05          0.625 \r\n 1982          336           3.2           15.4          9.3           1.325 \r\n 1982          337           5.6           9.35         -1.5           0 \r\n 1982          338           3             6.85         -1.35          1.925 \r\n 1982          339           1.7           4.7           1.225         6.6 \r\n 1982          340           6.5           5.675        -6.225         0 \r\n 1982          341           3.9           0.875        -4.7           0 \r\n 1982          342           7            -0.375        -6.875         0 \r\n 1982          343           7.3          -2.225        -13.95         0 \r\n 1982          344           8.2           4.825        -3.95          0 \r\n 1982          345           9.4          -1.7          -14.025        0 \r\n 1982          346           7.1          -0.15         -12.1          0 \r\n 1982          347           7             4.75         -6.45          0 \r\n 1982          348           4.5           3.95         -2.25          0 \r\n 1982          349           4.9           0.125        -5.95          0 \r\n 1982          350           7.3           1.8          -8.475         0 \r\n 1982          351           5.4           6.9          -5.55          0 \r\n 1982          352           8.3           10.075        0.175         0 \r\n 1982          353           7.9           7.25         -2.2           0 \r\n 1982          354           8.3           6.8          -1.9           0 \r\n 1982          355           8             8.15         -1.6           0 \r\n 1982          356           1.5           4.35          0.35          0 \r\n 1982          357           3.4           5.925        -0.45          0.5 \r\n 1982          358           1.3           10.325        0.85          11.901 \r\n 1982          359           7.4           9.975        -5.2           4.675 \r\n 1982          360           8.3           4.05         -6.15          0 \r\n 1982          361           1.7           3.025        -2.9           18.401 \r\n 1982          362           7.6           1.225        -11.5          15.151 \r\n 1982          363           6            -6.825        -20.725        0 \r\n 1982          364           3.8          -3.875        -15.825        0 \r\n 1982          365           7.5          -2.175        -13.5          0 \r\n 1983          1             7.8           1.575        -9.825         0 \r\n 1983          2             5.6          -1.175        -8.3           0 \r\n 1983          3             5.8          -1.95         -7.525         0 \r\n 1983          4             6.2           1.725        -6.15          0 \r\n 1983          5             4.9           0.525        -9.975         0 \r\n 1983          6             8             5.725        -2.1           0 \r\n 1983          7             3.2           2.275        -6.125         0 \r\n 1983          8             7.4           3.675        -6.425         1.725 \r\n 1983          9             1.2           3.6           0.825         2.25 \r\n 1983          10            7.6           2.85         -1.875         3.775 \r\n 1983          11            7.6          -0.175        -8.65          0 \r\n 1983          12            8.6           4.275        -14.125        0 \r\n 1983          13            8.8           7.75         -2.025         0 \r\n 1983          14            8.3           5.525        -5.75          0 \r\n 1983          15            8.8          -4.225        -15            0 \r\n 1983          16            8.6           1.05         -8.9           0 \r\n 1983          17            9.7          -2.775        -10.8          0 \r\n 1983          18            7.9          -3.525        -13.975        0 \r\n 1983          19            2.8          -2.05         -6.2           1.15 \r\n 1983          20            7.9           1.1          -4.675         0 \r\n 1983          21            9.8           1.45         -7.7           0 \r\n 1983          22            6.4           0.85         -5.95          0 \r\n 1983          23            7.4           2.8          -7.325         0 \r\n 1983          24            7             2.55         -4.4           0 \r\n 1983          25            3.2           0.45         -3.45          0 \r\n 1983          26            9.2          -3.275        -9.25          1.7 \r\n 1983          27            8.4           0.175        -13.65         0 \r\n 1983          28            3.7           4.225        -1.3           0 \r\n 1983          29            3             3.575         0.3           6.1 \r\n 1983          30            7             0.225        -7.025         0 \r\n 1983          31            7.5          -3.4          -10.575        0.975 \r\n 1983          32            2.6          -3.1          -10.975        9.25 \r\n 1983          33            3.8          -4.35         -7.875         4.2 \r\n 1983          34            8.6          -6.9          -15.225        0 \r\n 1983          35            10.3         -4.125        -20.35         0 \r\n 1983          36            3            -1.7          -9.225         5 \r\n 1983          37            10.5         -4.2          -16.525        0 \r\n 1983          38            8            -2.375        -20.375        0 \r\n 1983          39            8.1           0.525        -5.9           0 \r\n 1983          40            6.2           0.025        -9.575         0 \r\n 1983          41            3.1           0.95         -4.675         0 \r\n 1983          42            3.3           1.2          -1.075         0 \r\n 1983          43            7.8           2.55         -3.8           0 \r\n 1983          44            9.9           7.875        -2.25          0 \r\n 1983          45            4             7.35          0.3           0 \r\n 1983          46            2             4.05          0.9           3.975 \r\n 1983          47            9.2           9.225        -1.4           0 \r\n 1983          48            8.8           8.325        -2.025         0 \r\n 1983          49            6.1           10.475        0.55          0 \r\n 1983          50            4.8           15.05         2.925         0 \r\n 1983          51            3.7           10.85         3.95          0 \r\n 1983          52            5.1           9.25         -1.05          0 \r\n 1983          53            4.4           8.175         1.525         0 \r\n 1983          54            9             8.75         -1.925         0 \r\n 1983          55            13.9          4.875        -1.75          0 \r\n 1983          56            14.4          4.4          -4.375         0 \r\n 1983          57            13.4          11.575       -2.375         0 \r\n 1983          58            8.8           11.1          2.6           0 \r\n 1983          59            16.2          15.225        0             0 \r\n 1983          60            13.3          16.55         3.7           0 \r\n 1983          61            10.1          20.125        2.175         0 \r\n 1983          62            6.2           20.725        7.225         0 \r\n 1983          63            3.3           16.725        10.7          8.875 \r\n 1983          64            5.5           17.275        11.075        13.575 \r\n 1983          65            1.6           13.05         7.9           16.25 \r\n 1983          66            6.3           6.9          -0.8           0 \r\n 1983          67            9            -1.175        -6.825         0 \r\n 1983          68            15.8          1.05         -7.4           0 \r\n 1983          69            14.6          0.775        -7.975         0 \r\n 1983          70            15.1          5.075        -6.6           0 \r\n 1983          71            15.9          10.175       -3.4           0 \r\n 1983          72            13            15            0.05          0 \r\n 1983          73            14.8          11.25        -3.025         0 \r\n 1983          74            1.9           11.625        2.7           19.7 \r\n 1983          75            7.6           8.725         1.35          2.175 \r\n 1983          76            11.5          8.175        -1.475         0 \r\n 1983          77            11.1          8.625        -2.5           0 \r\n 1983          78            5.7           4.2          -2.625         0 \r\n 1983          79            8.5          -0.3          -4.375         1.225 \r\n 1983          80            19.8          2.05         -6.075         0 \r\n 1983          81            21.3          3.9          -6.7           0 \r\n 1983          82            20.5          6.75         -3.95          0 \r\n 1983          83            18.6          7.675        -3.2           1.7 \r\n 1983          84            5.3           3.2          -3.15          7.9 \r\n 1983          85            4.1           0.925        -1.1           20.4 \r\n 1983          86            10.2          0.25         -2.65          2.1 \r\n 1983          87            20.3          0.8          -9.925         0 \r\n 1983          88            7.5           6.15         -5.475         0 \r\n 1983          89            11.2          11.375        0.025         0 \r\n 1983          90            10.5          15.55         3.3           3.95 \r\n 1983          91            2.7           11.075        5             0 \r\n 1983          92            5.7           7.425         2.75          0 \r\n 1983          93            17.2          8.9          -2.05          0 \r\n 1983          94            6.1           4.775        -0.65          3.65 \r\n 1983          95            7.1           6.525        -0.35          3.175 \r\n 1983          96            7.1           6.85         -1.25          0.8 \r\n 1983          97            21.6          10.425       -2.4           0.4 \r\n 1983          98            8.1           7.7          -0.575         1.575 \r\n 1983          99            2.4           3.025        -0.525         9.875 \r\n 1983          100           20.7          9.6          -0.4           0.5 \r\n 1983          101           13.3          13.125        0.975         0 \r\n 1983          102           4.4           16.875        5.125         11.75 \r\n 1983          103           4.7           12.725        4             0.9 \r\n 1983          104           18.3          4.65         -1.3           5.625 \r\n 1983          105           25.1          8.35         -5.525         0 \r\n 1983          106           24.6          8.7           0.25          0 \r\n 1983          107           8.4           7.725        -1.2           0 \r\n 1983          108           24.9          8.65         -4.25          0 \r\n 1983          109           25.2          10.6         -2.625         0 \r\n 1983          110           22.9          14.35         0.475         0 \r\n 1983          111           19.9          17.85         4.525         0 \r\n 1983          112           15.8          17.6          9.25          0 \r\n 1983          113           25.1          15.3          6.175         0 \r\n 1983          114           27.4          17.15         2.95          0 \r\n 1983          115           26.2          19.125        6.2           0 \r\n 1983          116           24.4          22.775        11.3          0 \r\n 1983          117           6             16.85         6.8           0 \r\n 1983          118           22.4          19            2.6           0 \r\n 1983          119           16.5          17.1          9.275         0 \r\n 1983          120           23.3          18.025        5.125         0 \r\n 1983          121           7.4           21.75         8.95          50.427 \r\n 1983          122           11.1          13.2          3.55          5.225 \r\n 1983          123           23.8          18.225        4.15          8.825 \r\n 1983          124           25.3          18.9          5.7           0 \r\n 1983          125           20.7          23.25         6.975         0 \r\n 1983          126           22.5          24.225        13.15         0 \r\n 1983          127           8.7           21.4          7.9           2.8 \r\n 1983          128           28.5          17.275        2.375         0 \r\n 1983          129           26.9          19.725        3.55          0 \r\n 1983          130           25.4          22.25         7.35          0 \r\n 1983          131           9.3           22.775        10.975        2.55 \r\n 1983          132           7.2           23.1          13.875        0 \r\n 1983          133           10.8          20.475        9.525         4.225 \r\n 1983          134           10.2          15.75         5.375         2.05 \r\n 1983          135           28.5          18.15         1.5           0 \r\n 1983          136           24            20.25         8.225         0 \r\n 1983          137           16            16.625        9             17.426 \r\n 1983          138           6.9           16.85         8.85          10.05 \r\n 1983          139           21.1          19.325        10.325        5.525 \r\n 1983          140           11.2          19.725        8.775         1.45 \r\n 1983          141           17.1          21.35         9.25          0 \r\n 1983          142           28.2          22.025        10.875        0 \r\n 1983          143           30.5          21.975        6.25          0 \r\n 1983          144           17.4          24.725        10.35         5.325 \r\n 1983          145           30.3          21.05         9.35          0 \r\n 1983          146           29.3          22.2          6.5           0 \r\n 1983          147           13.1          25.875        12.925        1.55 \r\n 1983          148           13.4          24.125        14.75         0 \r\n 1983          149           28.3          20.7          10.35         0 \r\n 1983          150           19.4          16.45         6.45          1.55 \r\n 1983          151           16.4          17.625        7.05          1.75 \r\n 1983          152           17.4          21.375        8.05          0 \r\n 1983          153           12.5          21.95         10.85         0 \r\n 1983          154           25.5          25.4          13.475        0 \r\n 1983          155           17.2          26            11.55         2.1 \r\n 1983          156           16.4          21.85         10.375        4.425 \r\n 1983          157           30.2          22.35         6.575         0 \r\n 1983          158           30.7          25.5          9.65          0 \r\n 1983          159           30.1          27.575        11.8          0 \r\n 1983          160           17.8          26.975        14.225        2.875 \r\n 1983          161           19.2          27.275        16.775        2.1 \r\n 1983          162           14.6          26.35         16.95         0 \r\n 1983          163           17            26.9          18.175        13.175 \r\n 1983          164           16.8          27.1          17.9          13.325 \r\n 1983          165           27.7          25.25         13.1          18.775 \r\n 1983          166           26            27.625        13.175        4.9 \r\n 1983          167           16.4          24.55         14.85         0 \r\n 1983          168           14.8          25.9          14.725        6.65 \r\n 1983          169           23.9          27.075        16.1          28.65 \r\n 1983          170           18.3          28.15         16.95         0 \r\n 1983          171           18.6          30.425        20.6          0 \r\n 1983          172           18            29.825        21.025        0 \r\n 1983          173           19.9          30            20.325        0 \r\n 1983          174           10.3          28.95         20.425        0 \r\n 1983          175           18.3          29.825        20.575        0 \r\n 1983          176           18.7          28.95         19.55         0 \r\n 1983          177           12.5          27.6          19.6          3.8 \r\n 1983          178           18.7          27.325        19.825        23.975 \r\n 1983          179           20            27.275        18.1          14.95 \r\n 1983          180           13.9          26.575        18.85         4.775 \r\n 1983          181           18.5          30.175        17.5          2.2 \r\n 1983          182           24.6          30.8          21.2          1.1 \r\n 1983          183           24.65         29.775        22.425        0 \r\n 1983          184           24.85         31.6          22.7          0 \r\n 1983          185           27.6          29            14.075        0 \r\n 1983          186           27.8          28.3          14.35         0 \r\n 1983          187           29.8          30            15.35         0 \r\n 1983          188           29.975        30            16.025        0 \r\n 1983          189           29.625        31.5          17.875        0 \r\n 1983          190           29.95         31.875        16.925        0 \r\n 1983          191           30.075        32.55         17.55         0 \r\n 1983          192           29.025        32.125        19.2          0 \r\n 1983          193           28            30.8          16.425        0 \r\n 1983          194           28.1          31.225        21.625        0 \r\n 1983          195           20.749        30.9          20.05         0 \r\n 1983          196           22.45         28.95         20.275        0 \r\n 1983          197           15.376        29.55         20.7          0 \r\n 1983          198           23.65         29.525        21.1          0 \r\n 1983          199           25.851        31.525        22.3          0.5 \r\n 1983          200           28.25         35            23            0 \r\n 1983          201           28.575        34.75         22.5          0 \r\n 1983          202           28.725        34.7          22.875        0 \r\n 1983          203           27.95         35.275        21.65         0 \r\n 1983          204           14.053        33.55         22.975        1.875 \r\n 1983          205           9.1           29.9          19.475        0 \r\n 1983          206           26.025        28.6          17.3          0 \r\n 1983          207           25.75         30.325        17.025        0 \r\n 1983          208           23            32.775        19.275        7.75 \r\n 1983          209           18.227        34.05         23.65         1.55 \r\n 1983          210           23.1          32.6          24.175        16.624 \r\n 1983          211           24.451        32.025        20.775        0 \r\n 1983          212           27.175        31.725        19.7          0.5 \r\n 1983          213           25.475        32.375        18.975        0 \r\n 1983          214           26.65         34.25         19.95         0 \r\n 1983          215           16.252        33.375        22.925        0 \r\n 1983          216           24.374        33.35         22.675        0 \r\n 1983          217           20.175        33.475        21.775        0 \r\n 1983          218           9.924         32.375        23.15         1 \r\n 1983          219           26.55         32.275        21.025        0 \r\n 1983          220           26.4          33.3          19.55         0 \r\n 1983          221           25.65         33.05         20.125        0 \r\n 1983          222           24.65         34.5          20.8          0 \r\n 1983          223           27.475        32.125        17.45         0 \r\n 1983          224           26.8          29.05         14.5          0 \r\n 1983          225           17.101        31.1          16.15         0 \r\n 1983          226           19.999        32.2          20.025        0 \r\n 1983          227           24.05         33.65         20.7          0 \r\n 1983          228           23.875        35.225        22.65         0 \r\n 1983          229           24.9          34.625        23.6          0 \r\n 1983          230           23.25         36.325        22.75         0 \r\n 1983          231           24.425        35.625        22.25         4.9 \r\n 1983          232           10.225        33.1          21.575        10.4 \r\n 1983          233           22.725        31.975        22.25         12.45 \r\n 1983          234           9.851         30.8          22.5          3.2 \r\n 1983          235           10.149        30            21.05         0 \r\n 1983          236           22.7          32.95         22.2          0 \r\n 1983          237           22.675        34.2          22.05         0 \r\n 1983          238           22.851        35.175        21.725        1.1 \r\n 1983          239           15.099        33.25         23.025        1.825 \r\n 1983          240           23.85         32.575        21.3          0 \r\n 1983          241           19.074        32.875        20.7          1.7 \r\n 1983          242           12.874        32.275        20.775        1.225 \r\n 1983          243           21.7          29.9          18.975        0 \r\n 1983          244           24.4          29.9          16.975        0 \r\n 1983          245           24.325        31.9          17.475        0 \r\n 1983          246           23            32.275        18.2          0 \r\n 1983          247           17.551        32.5          18.725        0 \r\n 1983          248           18.95         29.25         20.325        3.55 \r\n 1983          249           23.65         26            17.7          1.3 \r\n 1983          250           23.75         28.425        12.3          0 \r\n 1983          251           21.725        32.875        19.55         0 \r\n 1983          252           21.375        33.975        21.525        0.95 \r\n 1983          253           10.424        30.35         18.875        0 \r\n 1983          254           19.05         25.825        9.775         0 \r\n 1983          255           17.35         23.65         12.125        0 \r\n 1983          256           15.601        23.1          7.925         0 \r\n 1983          257           10.101        22.525        10.85         2.65 \r\n 1983          258           11.727        24.6          12.45         15.625 \r\n 1983          259           19.301        23.025        9.225         0 \r\n 1983          260           17.85         27.35         12.5          0.875 \r\n 1983          261           17.049        26.275        15.325        0 \r\n 1983          262           16.001        28.725        14.05         9.85 \r\n 1983          263           9.15          26.025        2.65          18.55 \r\n 1983          264           18.6          15.25         0.9           0 \r\n 1983          265           17.725        15.3          3.875         0 \r\n 1983          266           19.75         18.425        1.15          0 \r\n 1983          267           9.677         25.275        6.25          0 \r\n 1983          268           17.9          27.15         12.525        0 \r\n 1983          269           18.25         28.375        12.2          0 \r\n 1983          270           17.65         29.85         13.35         0 \r\n 1983          271           7.301         29.025        17.625        4.1 \r\n 1983          272           10.926        28.625        16.9          4.625 \r\n 1983          273           15.525        28.425        14.8          0 \r\n 1983          274           17.85         27.775        15.675        0 \r\n 1983          275           14.076        28.625        17.425        0 \r\n 1983          276           7.85          24.4          14.075        11.651 \r\n 1983          277           7.476         19.375        7.425         0 \r\n 1983          278           18.4          22.025        7.95          0 \r\n 1983          279           11.801        21.35         8.425         0 \r\n 1983          280           7.725         24.7          11.35         0 \r\n 1983          281           12.25         18.55         8             0 \r\n 1983          282           12.575        17.825        4.7           0 \r\n 1983          283           5.075         24.025        9.125         12.576 \r\n 1983          284           4.624         19.55         8.9           28.101 \r\n 1983          285           15.175        11.55         0.5           0 \r\n 1983          286           10.651        8.975        -1.025         0 \r\n 1983          287           15.975        18.15         0.775         0 \r\n 1983          288           10.1          21.525        11.55         0 \r\n 1983          289           15.65         17.575        5.45          0 \r\n 1983          290           15.025        17.725        3.8           0 \r\n 1983          291           3.851         16.85         6.95          0.8 \r\n 1983          292           1.8           15.6          8.85          15.801 \r\n 1983          293           3             12.475        7             2.375 \r\n 1983          294           2.125         9.9           5.775         3.125 \r\n 1983          295           3.475         13.475        6.8           0 \r\n 1983          296           9.075         14.125        3.9           0 \r\n 1983          297           4.95          13.825        4.125         0 \r\n 1983          298           14.625        14.65         0.925         0 \r\n 1983          299           14.55         17.2          3.55          0 \r\n 1983          300           14.2          21.925        6.775         0 \r\n 1983          301           12.05         17.5          9.475         0 \r\n 1983          302           5.499         11.125        2.65          0 \r\n 1983          303           3.7           13.425        4.875         1.225 \r\n 1983          304           3.15          15.15         6.825         0 \r\n 1983          305           6.65          20.95         13.575        0 \r\n 1983          306           6.025         21.025        14.6          11.925 \r\n 1983          307           3.101         17.875        11.45         12.35 \r\n 1983          308           5.675         12.425        3.475         0 \r\n 1983          309           4.9           14.05         1.65          0 \r\n 1983          310           4.1           14.45         7.925         0 \r\n 1983          311           8.375         17.6          7.025         0 \r\n 1983          312           2.275         14.025        10.15         7.7 \r\n 1983          313           2.35          10.775        1.6           13.25 \r\n 1983          314           9.125         3.55         -2.375         0 \r\n 1983          315           6.55          4.4          -3.7           0 \r\n 1983          316           2.55          2.8          -2.025         5.15 \r\n 1983          317           10.825        8            -0.25          0 \r\n 1983          318           6.076         9.8           3.05          0 \r\n 1983          319           4.875         6.275        -0.9           0 \r\n 1983          320           5.2           9.425        -4.1           0 \r\n 1983          321           9.5           12.125       -1.45          0 \r\n 1983          322           5.9           11.7          2.05          0 \r\n 1983          323           3.325         14.2          5.15          9.5 \r\n 1983          324           10.9          11.05         0.375         0 \r\n 1983          325           9.725         10.9         -0.525         0 \r\n 1983          326           3.325         7.925         0.6           3.65 \r\n 1983          327           2.85          3.5          -5.9           3.3 \r\n 1983          328           7.225         2.4          -13.65         0 \r\n 1983          329           8.575         6.3          -7.325         0 \r\n 1983          330           5.7           4.95         -3.3           1.975 \r\n 1983          331           2.75          0.025        -4.6           25.926 \r\n 1983          332           3.725         1.05         -5.7           1.975 \r\n 1983          333           6.05         -2.425        -15.125        0 \r\n 1983          334           6.351        -4.3          -16.45         0 \r\n 1983          335           6.125        -3.55         -16.05         0 \r\n 1983          336           8.475        -3.675        -9.35          0 \r\n 1983          337           4.45         -5.35         -14.05         0 \r\n 1983          338           6.499        -1.3          -12.6          0 \r\n 1983          339           4.3          -2.9          -7.725         1.625 \r\n 1983          340           9.6          -3.4          -10.175        0 \r\n 1983          341           7.5          -4.65         -14.075        0 \r\n 1983          342           5.05          1.4          -15.725        0 \r\n 1983          343           8.875         1.1          -13.15         0 \r\n 1983          344           3.9           0.25         -9.35          0 \r\n 1983          345           8.35          1.4          -1.35          0 \r\n 1983          346           6.075        -3.225        -14.35         0 \r\n 1983          347           6.426        -1.65         -7.675         2.825 \r\n 1983          348           4.7          -2.45         -13.825        5.525 \r\n 1983          349           5.275        -4.4          -10.45         0 \r\n 1983          350           9            -11.4         -22.175        0 \r\n 1983          351           6.5          -13.875       -23.4          3.025 \r\n 1983          352           5.975        -17.95        -28.075        0 \r\n 1983          353           5.75         -19.9         -28.425        3.425 \r\n 1983          354           4.875        -17.375       -28.225        3.625 \r\n 1983          355           4.975        -17.4         -20.6          2.375 \r\n 1983          356           4.975        -18.9         -30.425        0 \r\n 1983          357           5.25         -21           -25.3          0 \r\n 1983          358           6.325        -22.975       -30.525        0 \r\n 1983          359           6.675        -16.775       -29.475        0 \r\n 1983          360           9.225        -7.1          -21.45         0 \r\n 1983          361           5.1          -5.975        -12.875        3.925 \r\n 1983          362           8.375        -8.75         -14.925        0 \r\n 1983          363           7.775        -12.95        -20.45         0 \r\n 1983          364           9.45         -5.8          -21.3          0 \r\n 1983          365           5.625        -0.6          -8.3           2.175 \r\n 1984          1             5.626         1.55         -5.05          12.951 \r\n 1984          2             8.075         1.625        -8.525         0 \r\n 1984          3             7.4           2.4          -7.125         0 \r\n 1984          4             9.525         3.325        -2.075         0 \r\n 1984          5             8.05          4.225        -4.65          0 \r\n 1984          6             8.675         4.175        -3.3           0 \r\n 1984          7             8.25          1.775        -6.35          0 \r\n 1984          8             8.7           1.525        -6.175         0 \r\n 1984          9             5.575        -2.925        -8.675         0 \r\n 1984          10            7.15         -7.375        -21.475        0 \r\n 1984          11            5.276        -4.375        -17.625        0 \r\n 1984          12            4.25         -5.325        -9.9           0.9 \r\n 1984          13            7            -6.875        -13.525        0 \r\n 1984          14            6.4          -7.775        -14.45         0 \r\n 1984          15            6.325        -6.85         -13.025        0 \r\n 1984          16            6.35         -6.875        -16.375        0 \r\n 1984          17            6.3          -9.6          -18.3          0 \r\n 1984          18            6.875        -12.55        -24.925        0 \r\n 1984          19            7.425        -8.8          -23.95         0 \r\n 1984          20            8.15         -13.825       -29.75         0 \r\n 1984          21            6.6          -5.775        -25.05         0 \r\n 1984          22            7.725         0.075        -13.3          0 \r\n 1984          23            8.325         1.45         -4.85          0.5 \r\n 1984          24            7.175         2.65         -8.625         0 \r\n 1984          25            9.9           4.85         -6.175         0 \r\n 1984          26            5.525         4.675         0.325         0 \r\n 1984          27            8.3           1.825        -10.1          0 \r\n 1984          28            10.825        3.575        -2.3           0 \r\n 1984          29            8.3           5.25         -5.875         1.225 \r\n 1984          30            10.925        2.975        -10            0.5 \r\n 1984          31            12.5          4.525        -9.15          0 \r\n 1984          32            11.975        8.1          -4.125         0 \r\n 1984          33            6.6           6.025         0.05          0 \r\n 1984          34            12.075        8.125        -3.325         0 \r\n 1984          35            6.45          2.775        -2.525         0 \r\n 1984          36            10.4          0.775        -21.075        0 \r\n 1984          37            8.926         0.825        -18.6          0 \r\n 1984          38            9.476         2.825        -10.25         0 \r\n 1984          39            11.8          10.35        -3.775         0 \r\n 1984          40            9.399         10.35        -0.625         0 \r\n 1984          41            5.85          8.95          0.9           0 \r\n 1984          42            5.826         11.375        0.375         1 \r\n 1984          43            5.4           12.2          0.25          1 \r\n 1984          44            12.226        9.175        -2.6           0 \r\n 1984          45            10.326        15.05         1.05          0 \r\n 1984          46            6.075         16.95         5.125         1.325 \r\n 1984          47            4.225         11.025        3.875         2.275 \r\n 1984          48            7.8           8.3          -2.175         0 \r\n 1984          49            2.7           2.175        -0.65          10.575 \r\n 1984          50            7.5           1.25         -2.525         0 \r\n 1984          51            14.925        2.625        -12.075        0 \r\n 1984          52            13.975        6.25         -7.425         0 \r\n 1984          53            15.8          13.225       -1.95          0 \r\n 1984          54            8.075         8.15          0.1           0 \r\n 1984          55            13.4          6.025        -2.975         0 \r\n 1984          56            9.924         7.525        -1.625         0 \r\n 1984          57            10.074        7.525        -0.475         0 \r\n 1984          58            10.075        2.75         -1.825         0.7 \r\n 1984          59            10.075        2.45         -5.1           0 \r\n 1984          60            17            4.275        -5.075         0 \r\n 1984          61            16.55         7.175        -3.375         0 \r\n 1984          62            7.351         3.9          -3.975         1.75 \r\n 1984          63            9.701         7.075        -3.825         0 \r\n 1984          64            5.151         2.45         -1.5           4.5 \r\n 1984          65            11.7         -0.375        -4.65          0 \r\n 1984          66            17.55        -0.325        -10.075        0 \r\n 1984          67            8.326         1.55         -6.625         4.1 \r\n 1984          68            11.726       -2.3          -12.775        0 \r\n 1984          69            6.85         -4.375        -11.05         1.85 \r\n 1984          70            11.3          4.375        -9.95          0 \r\n 1984          71            15.55        -0.625        -11.075        0 \r\n 1984          72            8.024        -0.975        -8.3           4.35 \r\n 1984          73            7.1           4.3          -7.575         0 \r\n 1984          74            12.8          9.5          -1.275         0 \r\n 1984          75            6.974         9.625         0.95          1.6 \r\n 1984          76            6.725         2.95         -6.525         0 \r\n 1984          77            4.5           0.625        -6.05          12.7 \r\n 1984          78            3.25          1.75         -5.25          0 \r\n 1984          79            2.825        -1.95         -4.95          9.825 \r\n 1984          80            4.225         2.725        -9.1           0 \r\n 1984          81            6.3           6.025        -1.75          0 \r\n 1984          82            13.225        7.35         -3.975         0 \r\n 1984          83            16.074        9.575        -3.45          0 \r\n 1984          84            11.948        8.5          -1.25          0 \r\n 1984          85            20.925        12.4         -1.725         0 \r\n 1984          86            3.975         6.275         1.65          13.375 \r\n 1984          87            4.725         6.575         1.25          0.875 \r\n 1984          88            6.449         8.125         0.425         1.8 \r\n 1984          89            14.976        7.125        -2.75          0 \r\n 1984          90            18.775        7.65         -3.8           0 \r\n 1984          91            12.175        10.25        -1.8           0 \r\n 1984          92            13.923        11.825       -2             0 \r\n 1984          93            3.075         8.475         1.7           18.55 \r\n 1984          94            1.95          9.8           0.925         10.8 \r\n 1984          95            16.999        10.35        -0.875         0 \r\n 1984          96            24.4          13.475       -1.3           0 \r\n 1984          97            24.1          15.85         1.575         0 \r\n 1984          98            4.125         12.025        3.85          8.2 \r\n 1984          99            2.65          9             4.85          12.125 \r\n 1984          100           4.675         12.6          3.725         0 \r\n 1984          101           5.425         12.05         6.85          0 \r\n 1984          102           4.601         16.875        7.6           3.75 \r\n 1984          103           5.85          13.7          5.475         12.425 \r\n 1984          104           4.201         11.275        3.725         2.075 \r\n 1984          105           3.175         10.625        5.95          0 \r\n 1984          106           15.1          12.775        6.15          0 \r\n 1984          107           25.375        14.725        3.95          0 \r\n 1984          108           26.075        13.1          0.05          0 \r\n 1984          109           26.475        15.675        0.75          0 \r\n 1984          110           25.45         15.75         0.925         0 \r\n 1984          111           10.348        12.8          3.775         0 \r\n 1984          112           1.175         10.825        3.475         29.076 \r\n 1984          113           4.625         8.075         0.9           2.775 \r\n 1984          114           25.975        15.2          0.1           0 \r\n 1984          115           26.475        18.45         4.375         0 \r\n 1984          116           23.326        20.2          7.075         0 \r\n 1984          117           17.4          21.85         15.1          9.775 \r\n 1984          118           26.35         19.725        10.95         11.525 \r\n 1984          119           25.274        14.3          0.55          0 \r\n 1984          120           2.775         11.775        4.35          48.376 \r\n 1984          121           21.65         9.775        -0.05          2.825 \r\n 1984          122           13.924        13.825        0.825         1.925 \r\n 1984          123           13.675        16.8          5.65          5.625 \r\n 1984          124           14.075        15.95         7.7           5.75 \r\n 1984          125           9.85          15.725        4.525         2.675 \r\n 1984          126           16.474        18.425        5             3.275 \r\n 1984          127           5.799         16.775        6.85          2.675 \r\n 1984          128           10.001        14.5          7.4           0 \r\n 1984          129           20.601        12.175        1.975         0 \r\n 1984          130           27            16.875        0.475         0 \r\n 1984          131           23.95         22.9          7.35          0 \r\n 1984          132           20.551        23.1          11.125        0 \r\n 1984          133           12.001        22.275        9.45          5.625 \r\n 1984          134           27.075        23.25         14.725        0 \r\n 1984          135           25.45         21            7.25          0 \r\n 1984          136           11.774        20.7          10.425        0 \r\n 1984          137           23.375        24.05         10.75         0 \r\n 1984          138           20.851        26.25         13.9          6.575 \r\n 1984          139           14.077        26.15         16.425        10.876 \r\n 1984          140           5.774         22.7          16.9          15.626 \r\n 1984          141           28.074        25.15         13.05         0 \r\n 1984          142           27.349        25.9          13.175        0 \r\n 1984          143           14.974        23.325        15.075        27.126 \r\n 1984          144           31.725        23.5          8.075         0 \r\n 1984          145           11.226        24.65         12.05         5.525 \r\n 1984          146           6.825         22.2          10.075        25.576 \r\n 1984          147           21.448        20.375        7.35          0 \r\n 1984          148           2.65          16.4          8.8           8.1 \r\n 1984          149           16.749        15.9          7.225         0 \r\n 1984          150           27.9          19.275        5.675         0 \r\n 1984          151           28.05         21.05         6.975         0 \r\n 1984          152           28.95         25.45         9.8           0 \r\n 1984          153           23.625        29.025        14.1          7.55 \r\n 1984          154           27.774        26.225        12.825        8.85 \r\n 1984          155           27.55         26.175        10.7          0 \r\n 1984          156           11.376        26.875        15.375        24 \r\n 1984          157           24.925        28.025        16.25         2.95 \r\n 1984          158           18.7          26.5          18.875        0 \r\n 1984          159           12.55         28.275        19.575        2.4 \r\n 1984          160           29.225        28.15         15.125        0 \r\n 1984          161           6.574         26.125        17.45         27.875 \r\n 1984          162           28.15         25.675        12.725        0 \r\n 1984          163           15.975        26.425        13.225        19.6 \r\n 1984          164           14.875        27.575        19.375        21.15 \r\n 1984          165           23.576        29.75         19.875        12.475 \r\n 1984          166           22.351        27.3          18.05         10.025 \r\n 1984          167           9.324         26.85         20.25         31.7 \r\n 1984          168           20.102        29.125        20.5          12.975 \r\n 1984          169           12.651        28.775        20.975        3.15 \r\n 1984          170           28.674        29.3          18.45         0 \r\n 1984          171           25.949        29            16.75         0 \r\n 1984          172           16.422        28.325        18.125        2.1 \r\n 1984          173           20.175        26.975        19.825        0 \r\n 1984          174           21.85         29.8          18.425        0 \r\n 1984          175           24.126        27.85         20.375        0 \r\n 1984          176           30.825        27.25         13.125        0 \r\n 1984          177           28.625        29.475        17.2          0 \r\n 1984          178           28.8          29.325        19.275        0 \r\n 1984          179           29.476        27.925        14.7          0 \r\n 1984          180           19.076        27.65         16.175        2.025 \r\n 1984          181           29.299        26.225        15.8          0 \r\n 1984          182           28.15         26.45         13.25         0 \r\n 1984          183           22.85         28.175        14.45         0 \r\n 1984          184           27.45         28.5          15.35         0 \r\n 1984          185           19.348        31.05         17.475        5.3 \r\n 1984          186           18.875        28.175        19.075        3.9 \r\n 1984          187           27.051        29.15         15.275        0 \r\n 1984          188           29.174        27.15         15.025        0 \r\n 1984          189           26.698        26.6          11.6          0 \r\n 1984          190           27.225        33.225        15.375        0 \r\n 1984          191           22.702        33.7          22.65         0 \r\n 1984          192           12.225        31.3          21.95         4 \r\n 1984          193           28.75         28.9          18.975        0 \r\n 1984          194           28.825        30.75         16.575        0 \r\n 1984          195           27.275        30.65         16.425        0 \r\n 1984          196           20.001        32.325        19.825        19.699 \r\n 1984          197           27.749        29.225        19.925        2.45 \r\n 1984          198           28.525        30.075        18.025        7.55 \r\n 1984          199           29.45         27.625        17.7          0 \r\n 1984          200           28.6          28.7          13.4          0 \r\n 1984          201           27.725        31.75         16.925        3.725 \r\n 1984          202           23.373        31.3          20.35         4.3 \r\n 1984          203           24.9          31.975        19.775        0 \r\n 1984          204           25.875        32.5          19.625        0 \r\n 1984          205           26.225        33.475        19.55         0 \r\n 1984          206           21.7          31.425        20.6          2.15 \r\n 1984          207           14.302        29.3          18.75         20.274 \r\n 1984          208           17.65         27.85         20.15         2.95 \r\n 1984          209           24.5          27.475        15.15         0 \r\n 1984          210           24.625        28            14.55         0 \r\n 1984          211           25.15         27.775        14.45         0 \r\n 1984          212           25.6          28.5          14.175        0 \r\n 1984          213           22.775        29.525        15.225        0 \r\n 1984          214           22.25         32.125        17.775        7.925 \r\n 1984          215           23.275        31.375        17.675        0 \r\n 1984          216           21.7          32.15         17.2          0 \r\n 1984          217           14.55         31.4          19.4          0.6 \r\n 1984          218           24.8          32.3          19.65         0 \r\n 1984          219           26.475        33.725        20.3          2.525 \r\n 1984          220           18.501        32.475        22.35         4.35 \r\n 1984          221           24.675        31.95         20.525        0.875 \r\n 1984          222           25.899        30.675        19.5          0 \r\n 1984          223           27.15         29.4          15.3          0 \r\n 1984          224           24.275        30.075        15.65         0 \r\n 1984          225           24.375        30.4          16.775        0 \r\n 1984          226           22.175        30.55         17.175        0 \r\n 1984          227           23.725        31.475        16.825        0 \r\n 1984          228           21.875        33            18.6          0 \r\n 1984          229           15.252        33.825        20.75         0 \r\n 1984          230           8.377         33.65         19.275        0 \r\n 1984          231           12.449        29.575        19.975        0 \r\n 1984          232           21.974        28.825        18.925        0 \r\n 1984          233           22.15         29.225        14.675        0 \r\n 1984          234           10.675        28.325        18.15         10.55 \r\n 1984          235           25.8          27.125        14.8          0 \r\n 1984          236           23.75         24.825        8.425         0 \r\n 1984          237           21.401        26.975        10.675        0 \r\n 1984          238           16.126        30.075        12.9          0 \r\n 1984          239           21.075        32.8          17.45         0 \r\n 1984          240           24.025        34.75         20            0 \r\n 1984          241           24.975        35.9          19.15         0 \r\n 1984          242           24.2          34.05         19.45         0 \r\n 1984          243           24.625        28            14.5          0 \r\n 1984          244           17.851        32.95         13.575        1.375 \r\n 1984          245           21.275        33.75         22.625        1.875 \r\n 1984          246           15.174        29.4          16.625        19.275 \r\n 1984          247           22.7          23.85         10.825        0 \r\n 1984          248           23.05         25            14.25         0 \r\n 1984          249           20.9          24.075        9.75          0 \r\n 1984          250           13.201        30.65         13.95         0 \r\n 1984          251           19.95         31.05         21.5          0 \r\n 1984          252           21.95         24.65         13.65         8.775 \r\n 1984          253           15.574        25.625        11.925        4.15 \r\n 1984          254           7.5           27.975        14.25         3.45 \r\n 1984          255           10.276        26.45         12.35         0 \r\n 1984          256           18.675        31.9          19.575        0 \r\n 1984          257           6.65          28.325        18.45         0.7 \r\n 1984          258           7.925         19.275        11.95         0 \r\n 1984          259           20.05         19.125        4.775         0 \r\n 1984          260           16.95         19.6          5.375         0 \r\n 1984          261           18.174        24.275        8.85          0 \r\n 1984          262           20.725        26.8          10.45         0 \r\n 1984          263           20.6          29.875        13.2          0 \r\n 1984          264           19.425        28            12.85         0 \r\n 1984          265           17.925        27.525        13.75         0 \r\n 1984          266           9.7           26.05         16.4          2.2 \r\n 1984          267           12.75         27.225        15.575        0.7 \r\n 1984          268           8.827         24.85         13.675        8.45 \r\n 1984          269           14.925        14.075        3.175         6.475 \r\n 1984          270           10.374        13.125        0.425         0 \r\n 1984          271           7.924         15.6          3.6           0 \r\n 1984          272           13.626        13.15         3.125         0 \r\n 1984          273           17.4          15.3         -0.975         0 \r\n 1984          274           17.525        16.9          1             0 \r\n 1984          275           19.1          19.075        2.95          0 \r\n 1984          276           17.825        22.95         6.7           0 \r\n 1984          277           16.075        24.65         9.7           0 \r\n 1984          278           9.075         24.625        10.925        12.801 \r\n 1984          279           5.124         20.125        14.425        4.25 \r\n 1984          280           4.001         22.675        15.3          17.526 \r\n 1984          281           9.65          21.65         13.775        0 \r\n 1984          282           4.576         20.5          9.725         9.7 \r\n 1984          283           7.501         20.875        12.55         4.075 \r\n 1984          284           8.625         23.05         14.05         0 \r\n 1984          285           8.851         23.8          15.225        0 \r\n 1984          286           12.425        22.55         13.8          0 \r\n 1984          287           5             23.825        13.45         0 \r\n 1984          288           4             21.2          16.9          13.401 \r\n 1984          289           5.325         19.1          8.825         22.701 \r\n 1984          290           1.35          13.25         4.7           12.776 \r\n 1984          291           8.75          13.075        0.55          0 \r\n 1984          292           1.8           18.475        8.15          5.8 \r\n 1984          293           16.05         14.525        3.225         0 \r\n 1984          294           10.424        15.475        4.475         0 \r\n 1984          295           13.576        13.275        2.25          0 \r\n 1984          296           10.925        12.825        2.125         0 \r\n 1984          297           14.575        13.05        -0.65          0 \r\n 1984          298           11.9          13.25         1.275         0 \r\n 1984          299           3.275         12.525        4.925         4.775 \r\n 1984          300           13.8          20.675        4.95          0 \r\n 1984          301           3.425         22.25         14.525        0 \r\n 1984          302           8.449         12.325       -0.6           0 \r\n 1984          303           13.4          15.1         -0.45          0 \r\n 1984          304           11.2          10.1          3.6           0 \r\n 1984          305           1.2           15.35         0.375         6.925 \r\n 1984          306           12.7          17.975       -2.825         8.6 \r\n 1984          307           11.575        6.525        -4.95          0 \r\n 1984          308           11.55         15.55         0.775         0 \r\n 1984          309           11.5          16.575        3.225         0 \r\n 1984          310           12.8          11.9         -0.125         0 \r\n 1984          311           12.1          15.875        0.425         0 \r\n 1984          312           12.375        19.2          7.55          0 \r\n 1984          313           10.375        18.8          5             0 \r\n 1984          314           2.026         15.15         9.025         8.2 \r\n 1984          315           4.275         8.8          -1.5           2.5 \r\n 1984          316           6.401         4.9          -5.75          0 \r\n 1984          317           9.525         10.225       -2.85          0 \r\n 1984          318           9.475         16.025        0.725         0 \r\n 1984          319           9.925         19.3          8.6           0 \r\n 1984          320           10.275        12.95        -0.075         0 \r\n 1984          321           10.775        9.525        -5.075         0.3 \r\n 1984          322           4.874         5             0.85          0 \r\n 1984          323           7.124         7.35         -1.125         0 \r\n 1984          324           10.45         5.025        -5.175         0 \r\n 1984          325           8.625         5.95         -5.05          0 \r\n 1984          326           9.8           7.875        -3.55          0 \r\n 1984          327           6.975         8.9          -0.775         0 \r\n 1984          328           9.325         9.95         -0.725         0 \r\n 1984          329           9.525         15.225        0.9           0 \r\n 1984          330           4.825         14.1          2.25          0 \r\n 1984          331           4.6           12.05         4.425         2.95 \r\n 1984          332           2.925         7.85         -2.575         0.6 \r\n 1984          333           6.225         7.725        -4.8           0 \r\n 1984          334           7.05          10.05        -1.3           0 \r\n 1984          335           6.926         7.3          -2.075         0 \r\n 1984          336           5.926         9.05         -3.825         0 \r\n 1984          337           5.35          5.725        -5.075         0 \r\n 1984          338           9.25          0.875        -7.975         0 \r\n 1984          339           8.925         2.05         -7.575         0 \r\n 1984          340           3.85          3.175        -6.55          0 \r\n 1984          341           7.75         -3.525        -17.7          0 \r\n 1984          342           9.65          9.1          -6.1           0 \r\n 1984          343           5.851         10           -2.325         0 \r\n 1984          344           2.776         9.775         1.1           7.725 \r\n 1984          345           8.075         8.725        -2             0 \r\n 1984          346           5.5           10.125        1.475         0 \r\n 1984          347           6.825         7.4          -4.35          1.175 \r\n 1984          348           4.7          -0.175        -6.725         2.375 \r\n 1984          349           4.95         -0.05         -9.425         8.175 \r\n 1984          350           0.9           5            -9.6           16.051 \r\n 1984          351           7.225         10.075       -2.4           14.876 \r\n 1984          352           7.975        -0.8          -8.5           0 \r\n 1984          353           6.9          -1.75         -12.55         0 \r\n 1984          354           7.95         -0.2          -10.05         0 \r\n 1984          355           8.375         3.9          -7.9           0 \r\n 1984          356           3.075         2.925        -2.5           12.301 \r\n 1984          357           6.451         1.65         -12.65         0 \r\n 1984          358           4.851         3.15         -6.375         0 \r\n 1984          359           4.876        -3            -16.125        0 \r\n 1984          360           5.251         0.65         -15.5          0 \r\n 1984          361           2.5           4.275        -4.925         3.875 \r\n 1984          362           2.175         10.85        -1.8           0 \r\n 1984          363           4.275         19.2          9             0 \r\n 1984          364           5.924         15.35        -8.5           0 \r\n 1984          365           9.35          1.475        -8.775         0 \r\n 1984          366           2.725        -2.3          -10.825        0 \r\n 1985          1             5.925        -8.7          -14.825        0 \r\n 1985          2             6.875        -2.1          -15.95         0 \r\n 1985          3             7.375        -2.775        -13.35         0 \r\n 1985          4             8.975         6.025        -8.825         0 \r\n 1985          5             9.4           4.7          -6.275         0 \r\n 1985          6             6.75          8.95         -2.775         0 \r\n 1985          7             9.625         5.45         -3.85          0 \r\n 1985          8             6.75          0.925        -10.9          0 \r\n 1985          9             2.7          -4.1          -8.3           8 \r\n 1985          10            2.7          -2.125        -8.65          2.275 \r\n 1985          11            5.85         -5.575        -18.7          0 \r\n 1985          12            5.55         -6.625        -18.35         0 \r\n 1985          13            8.2           3.375        -12.075        0 \r\n 1985          14            8.225         0.625        -10.8          0 \r\n 1985          15            6.875        -4.6          -12.625        0 \r\n 1985          16            5.5          -0.925        -11.175        0 \r\n 1985          17            5.85          2.575        -8.05          0 \r\n 1985          18            9.85          2.375        -8.7           0 \r\n 1985          19            7.675        -7.425        -26.825        0.6 \r\n 1985          20            7.476        -14.075       -29.4          0 \r\n 1985          21            9.775        -5.3          -18.525        0 \r\n 1985          22            10.725       -2.325        -13.275        0 \r\n 1985          23            9.725         1.175        -10.825        0 \r\n 1985          24            6.575         3.1          -4.35          0 \r\n 1985          25            10.925        1.6          -19.8          0 \r\n 1985          26            8.975         3.05         -14.6          0 \r\n 1985          27            7.726         1.85         -7.775         0 \r\n 1985          28            11.525       -2.65         -13.55         0 \r\n 1985          29            4.45          0.425        -8.275         0.95 \r\n 1985          30            5.125        -1.175        -19.6          0.675 \r\n 1985          31            8.8          -11.8         -23.7          0 \r\n 1985          32            12.725       -11           -19.075        0 \r\n 1985          33            13.525       -6.925        -17.45         0 \r\n 1985          34            11.35        -5.425        -14.3          0 \r\n 1985          35            5.975        -8.925        -14.675        2.475 \r\n 1985          36            8.175        -8.15         -18.35         0 \r\n 1985          37            13.025       -6.4          -17.1          0 \r\n 1985          38            13.2         -9.375        -21.75         0 \r\n 1985          39            9.025        -5.025        -17.775        0 \r\n 1985          40            6.2          -1.425        -9.95          1.075 \r\n 1985          41            7.075        -3.625        -10.425        0 \r\n 1985          42            14.375       -6.325        -16.05         0 \r\n 1985          43            13.525       -4.125        -22.4          0 \r\n 1985          44            13.4         -0.9          -15.2          0 \r\n 1985          45            13.05        -4.775        -15.8          0 \r\n 1985          46            9.95         -0.8          -17.4          0 \r\n 1985          47            12.249        5.3          -3.4           0 \r\n 1985          48            12.1          7.6          -6.375         0 \r\n 1985          49            15.65         5.15         -4.05          0 \r\n 1985          50            16.05         9.4          -4.125         0 \r\n 1985          51            5.675         7.025        -1.2           1.975 \r\n 1985          52            3.9           7.9           3.4           15.675 \r\n 1985          53            5.325         9.475        -1.8           0 \r\n 1985          54            3.35          5.6           0.725         3.975 \r\n 1985          55            9.8           8.125        -3.4           0 \r\n 1985          56            15.5          13.15        -1.9           0 \r\n 1985          57            10.125        7.3          -3.525         0 \r\n 1985          58            16.7          8.85         -5.15          0 \r\n 1985          59            17.55         12.75        -2.3           0 \r\n 1985          60            17.675        13.125        1             0.7 \r\n 1985          61            12.801        8.725        -3.05          0 \r\n 1985          62            1.75          11           -0.425         13.675 \r\n 1985          63            10.5          13.075       -6.175         0 \r\n 1985          64            17.3          2.575        -7.6           0 \r\n 1985          65            14.8          5.1          -5.2           0 \r\n 1985          66            10.624        11.05         3.35          0 \r\n 1985          67            19.025        13.525       -1.4           0 \r\n 1985          68            17.949        16.05         0.25          0 \r\n 1985          69            12.573        18.375        1.1           0 \r\n 1985          70            4.951         12.05         5.025         0 \r\n 1985          71            11.625        8.4          -3.95          0 \r\n 1985          72            15.801        9            -0.55          3.35 \r\n 1985          73            20.525        10.85        -1.875         0 \r\n 1985          74            20.475        14.125       -1.5           0 \r\n 1985          75            20.15         10.85        -0.825         0 \r\n 1985          76            18.375        15.5         -0.375         0 \r\n 1985          77            20.175        19.275       -0.875         0 \r\n 1985          78            20.475        15.975        2.4           0 \r\n 1985          79            20.7          17.15         2.325         0 \r\n 1985          80            20.425        15.4          0.475         0 \r\n 1985          81            12.099        15.375       -0.55          0 \r\n 1985          82            15.876        11.425        2.375         6.45 \r\n 1985          83            9.902         9.425        -1.725         0 \r\n 1985          84            19.726        13.9         -2.25          0 \r\n 1985          85            14.725        22.175        4.6           0 \r\n 1985          86            17.65         17.125        4.775         6.125 \r\n 1985          87            15.176        16.7          5.975         0.6 \r\n 1985          88            9.674         11.25         0.725         2.35 \r\n 1985          89            4.225         5.2          -0.8           7.025 \r\n 1985          90            5.025         1.125        -4.5           4.625 \r\n 1985          91            10.327        8.75         -7.025         0 \r\n 1985          92            16.577        20.225       -0.025         0 \r\n 1985          93            21.825        19.025        3.5           0 \r\n 1985          94            7.827         15.7          4.35          0.5 \r\n 1985          95            9.726         6.95         -0.55          0 \r\n 1985          96            15.825        12.45        -2.925         0 \r\n 1985          97            20.826        9.675        -1.525         0 \r\n 1985          98            22.176        8.975        -3.325         0 \r\n 1985          99            20.773        15.425       -2.625         0 \r\n 1985          100           17.798        20.2          4.125         0 \r\n 1985          101           23.925        22.85         6.125         1.775 \r\n 1985          102           18.701        22.075        8.95          2.55 \r\n 1985          103           11.027        17.975        9.15          1.075 \r\n 1985          104           14.876        17.8          1.675         0 \r\n 1985          105           25.75         22.925        3.225         0 \r\n 1985          106           25.25         24.325        8.35          0 \r\n 1985          107           26.3          27.05         10.575        0 \r\n 1985          108           24.499        26.75         14.975        0 \r\n 1985          109           23.775        26.125        15.375        1.375 \r\n 1985          110           21.6          25.95         14.975        4.425 \r\n 1985          111           23.225        23.675        16.8          6.425 \r\n 1985          112           10.475        22.125        16.35         5.225 \r\n 1985          113           5.15          18.95         11.35         2.575 \r\n 1985          114           25.8          22.825        2.725         0 \r\n 1985          115           3.651         18.025        7.075         18.65 \r\n 1985          116           5.351         19.475        7.05          4.075 \r\n 1985          117           16.324        19.85         8.125         0 \r\n 1985          118           18.049        22.925        6.925         0 \r\n 1985          119           16.55         25.55         9.95          0 \r\n 1985          120           4.525         21.05         14.725        15.4 \r\n 1985          121           20.024        21.55         13.425        0 \r\n 1985          122           25.25         22.875        8.4           0 \r\n 1985          123           24.925        23.475        8.4           0 \r\n 1985          124           25.15         25.325        10.25         0 \r\n 1985          125           13.074        23.45         13.2          7.2 \r\n 1985          126           24.474        23.35         11.6          0 \r\n 1985          127           25.524        26            13.2          0 \r\n 1985          128           25.475        26.175        12.575        0 \r\n 1985          129           26.6          27.1          12.225        0 \r\n 1985          130           13.399        26.05         14.55         0 \r\n 1985          131           18.75         25.725        17.575        2.55 \r\n 1985          132           25.426        22.525        11.75         0 \r\n 1985          133           4.375         19.8          10            17.351 \r\n 1985          134           6.525         19.3          14.825        11.226 \r\n 1985          135           13.678        19.625        7.65          0 \r\n 1985          136           12.976        21.2          8.85          0 \r\n 1985          137           27.275        21.6          7.825         0 \r\n 1985          138           27.75         25.475        9.575         0 \r\n 1985          139           24.951        25.3          11.05         8.95 \r\n 1985          140           28.149        23.475        14.05         4.225 \r\n 1985          141           29.35         22.8          7.875         0 \r\n 1985          142           29.4          23.95         8.875         0 \r\n 1985          143           21.275        25.05         12.1          3.675 \r\n 1985          144           25.3          25.675        14.45         0 \r\n 1985          145           29.2          28.1          14.125        0 \r\n 1985          146           17.699        28.875        15.65         4.375 \r\n 1985          147           18.848        24.725        13.975        3.725 \r\n 1985          148           25.774        24.625        12.5          0 \r\n 1985          149           21.349        26            13.5          3.15 \r\n 1985          150           22.05         26.825        17.375        2.75 \r\n 1985          151           22.475        25.7          11.15         0 \r\n 1985          152           15.978        28.575        13.85         0 \r\n 1985          153           23.049        25            9.3           0 \r\n 1985          154           23.499        23.65         7.75          0 \r\n 1985          155           4.925         19.975        11.65         4.95 \r\n 1985          156           24.774        24.8          9.8           0 \r\n 1985          157           21.023        26.625        12.75         0 \r\n 1985          158           24.45         30            14.85         0 \r\n 1985          159           29.626        33.9          18.9          0 \r\n 1985          160           18.399        30.675        14.85         0 \r\n 1985          161           11.102        23.825        15.075        4.35 \r\n 1985          162           13.026        21.925        11.75         5.55 \r\n 1985          163           21.324        20.95         8.575         0 \r\n 1985          164           26.125        24.55         9.575         0 \r\n 1985          165           13.249        24.9          13.325        5.65 \r\n 1985          166           25.051        28.025        14.325        0 \r\n 1985          167           22.95         30.175        16.9          7.35 \r\n 1985          168           27.65         27.025        13.875        0 \r\n 1985          169           23.551        23.35         13.225        0 \r\n 1985          170           24.35         25.175        10.4          0 \r\n 1985          171           30            29.2          13.45         0 \r\n 1985          172           12.849        28.1          17.95         0 \r\n 1985          173           29.1          28.175        12            0 \r\n 1985          174           14.926        29.2          16.75         26.225 \r\n 1985          175           25.475        29.075        20.1          2.15 \r\n 1985          176           27.775        30.175        21.6          4.2 \r\n 1985          177           14.299        29.1          21.575        13.325 \r\n 1985          178           20.326        26.225        13.775        4.575 \r\n 1985          179           30.65         25.75         11.3          0 \r\n 1985          180           29.625        27.325        12.425        0 \r\n 1985          181           28.55         27.625        13.375        0 \r\n 1985          182           27.25         27.55         14.1          0 \r\n 1985          183           23.401        27.525        16            0 \r\n 1985          184           30.6          29.9          13.95         0 \r\n 1985          185           28.399        30.825        17.575        0 \r\n 1985          186           29.35         27.575        14.025        0 \r\n 1985          187           30.05         30.025        15.325        0 \r\n 1985          188           29.05         32.775        17.15         0 \r\n 1985          189           15.078        34.075        18.25         0 \r\n 1985          190           27.775        33.675        20            0 \r\n 1985          191           30.65         30.8          15.825        0 \r\n 1985          192           29.9          31.825        18.8          0 \r\n 1985          193           11.374        36.225        19.325        0 \r\n 1985          194           14.699        36.625        22.075        1.875 \r\n 1985          195           26.049        32.575        21.825        1.55 \r\n 1985          196           29.849        27.7          16.525        0 \r\n 1985          197           21.377        29.8          13.875        0 \r\n 1985          198           27.75         32.875        16.05         0 \r\n 1985          199           15.7          32.65         18.825        9 \r\n 1985          200           10.025        28.825        21.6          53.073 \r\n 1985          201           18.102        28.95         16.075        0 \r\n 1985          202           21.873        28.975        19.15         0 \r\n 1985          203           27.774        27.85         17.05         0 \r\n 1985          204           25.501        30.675        14            0 \r\n 1985          205           15.076        29.1          20.65         9.975 \r\n 1985          206           26.475        27.75         21.3          5.775 \r\n 1985          207           29.125        29            14.75         0 \r\n 1985          208           29.275        29.55         17.375        0 \r\n 1985          209           22.201        31.3          16.275        1.2 \r\n 1985          210           15.85         28            18.8          0 \r\n 1985          211           13            28.025        15.75         23.499 \r\n 1985          212           8.049         26.05         18            0 \r\n 1985          213           17.174        24.55         13.5          0 \r\n 1985          214           22.875        25.95         13.7          0 \r\n 1985          215           12.948        23.3          16.175        5.325 \r\n 1985          216           7.275         27.825        17.7          0 \r\n 1985          217           27.8          28.1          18.65         5.3 \r\n 1985          218           26.175        29.25         20.025        5.3 \r\n 1985          219           27.4          28.825        17.75         0 \r\n 1985          220           27.35         29.05         16.575        0 \r\n 1985          221           12.475        29.475        20.9          4.75 \r\n 1985          222           22.75         25.725        11.1          1.875 \r\n 1985          223           23.475        24.2          12.775        0 \r\n 1985          224           13.401        28.25         19.075        0 \r\n 1985          225           21.723        28.35         14.825        0 \r\n 1985          226           7.374         23.6          17.05         6.85 \r\n 1985          227           22.148        24.55         12.4          0 \r\n 1985          228           19.025        26.7          14.825        11.4 \r\n 1985          229           13.649        26.475        18.325        12.15 \r\n 1985          230           20.374        25.025        11.9          0 \r\n 1985          231           24.4          24.7          14.55         0 \r\n 1985          232           18.876        25.7          12.875        0 \r\n 1985          233           8.7           26.35         15.075        11.925 \r\n 1985          234           13.625        28.925        18.85         8.375 \r\n 1985          235           13.075        27.25         16.3          7.875 \r\n 1985          236           15.076        22.8          13.675        0 \r\n 1985          237           12.525        24.025        13.525        0 \r\n 1985          238           21.725        26.7          13.65         0 \r\n 1985          239           20.65         29            13.8          0 \r\n 1985          240           17.926        28.55         16.425        0 \r\n 1985          241           17.85         25.775        19.475        5.4 \r\n 1985          242           9.152         28.1          17.45         0 \r\n 1985          243           19.451        34.15         17.475        0 \r\n 1985          244           21.274        29.65         20.65         0 \r\n 1985          245           22.825        32.6          20.975        0 \r\n 1985          246           18.951        30.65         21.025        0 \r\n 1985          247           8.126         31.175        20.45         2.225 \r\n 1985          248           21.525        30.85         21.45         8.45 \r\n 1985          249           22.75         35.2          21.95         0 \r\n 1985          250           23            31.5          22.475        0 \r\n 1985          251           21.576        32.45         22.25         0 \r\n 1985          252           11.677        26.575        13.225        0 \r\n 1985          253           6.075         22.9          14.225        0 \r\n 1985          254           7.6           24.425        13.9          0 \r\n 1985          255           5.451         21.6          14.425        1.3 \r\n 1985          256           3.875         17.875        10.35         16.1 \r\n 1985          257           17.225        21.9          10.275        0 \r\n 1985          258           20.85         23.85         8.45          0 \r\n 1985          259           5.95          24.975        15.7          0 \r\n 1985          260           15.901        26.575        18.05         0 \r\n 1985          261           20.1          28.225        18.55         2.375 \r\n 1985          262           15.75         28.35         20.35         2.2 \r\n 1985          263           9.799         23.875        10.4          10.225 \r\n 1985          264           3.325         12.9          8.4           10.25 \r\n 1985          265           9.85          20.7          10.025        0 \r\n 1985          266           8.15          16.7          7.125         14.95 \r\n 1985          267           16            13.8          3.55          0 \r\n 1985          268           8.251         13.45         7.55          5.5 \r\n 1985          269           18.9          14.3          2.425         0 \r\n 1985          270           18.175        20.25         4.25          0 \r\n 1985          271           2.425         14.85         6.45          14.7 \r\n 1985          272           3.6           5.225         2.175         12.8 \r\n 1985          273           9.975         7.425         1.2           0 \r\n 1985          274           19.2          14.875       -0.375         0 \r\n 1985          275           16            18.275        3.4           0 \r\n 1985          276           9.05          20.925        7.275         0 \r\n 1985          277           8.675         16.375        6.05          0 \r\n 1985          278           16.375        13.725        3             0 \r\n 1985          279           18.15         21.025        3.95          0 \r\n 1985          280           5.426         19.2          7.775         0 \r\n 1985          281           8.35          18.4          8.975         0 \r\n 1985          282           5.299         10.425        2.25          13.726 \r\n 1985          283           6.275         9.025         1.725         3.725 \r\n 1985          284           4.425         14.55         4.625         0 \r\n 1985          285           14.276        17.725        11.2          8.125 \r\n 1985          286           12.476        21.875        7.2           0 \r\n 1985          287           5.775         14.4          7.525         0 \r\n 1985          288           15.925        20.325        4.175         0 \r\n 1985          289           14.7          21.15         3.725         8.1 \r\n 1985          290           5.575         19.725        9.1           5 \r\n 1985          291           3.7           19.925        14.225        24.851 \r\n 1985          292           7.124         16.775        8.85          2.525 \r\n 1985          293           4.775         17.95         7.35          0 \r\n 1985          294           5.575         18.475        9.225         0 \r\n 1985          295           12.45         22.25         10.85         0 \r\n 1985          296           10.5          21.625        14.25         1.825 \r\n 1985          297           14.5          19.825        8.575         0 \r\n 1985          298           13.775        21.025        7.1           0 \r\n 1985          299           6.126         22.475        11.225        0 \r\n 1985          300           11.524        17.975        5.775         0 \r\n 1985          301           9.575         17.35         5.425         0 \r\n 1985          302           8.225         14.7          5.4           0 \r\n 1985          303           7.274         13.325        1.7           0 \r\n 1985          304           8.55          13.325        1.55          0 \r\n 1985          305           12.075        13.1          2.775         0 \r\n 1985          306           11.75         12.825       -1.275         0 \r\n 1985          307           10.325        14.5          4.3           0 \r\n 1985          308           12.9          13.625       -0.725         0 \r\n 1985          309           12.325        17.025        1.8           0 \r\n 1985          310           9.125         12.225        3.25          0 \r\n 1985          311           11.075        13.8         -1.1           0 \r\n 1985          312           6.101         9.425        -0.45          0 \r\n 1985          313           2.225         6.625        -3             0 \r\n 1985          314           2.9           1.125        -5.225         0.775 \r\n 1985          315           2.925         3.875        -5.075         0.55 \r\n 1985          316           4.15          6.875        -0.9           1.15 \r\n 1985          317           4.25          6.125        -0.5           0 \r\n 1985          318           5.199         2.35         -3.8           0 \r\n 1985          319           0.775         1.225        -2.85          5.65 \r\n 1985          320           5.876         1.075        -7.525         0 \r\n 1985          321           8.425         6.025        -6.45          0 \r\n 1985          322           7.276         13.2          3.175         4.575 \r\n 1985          323           1.925         3.775        -9.2           0.825 \r\n 1985          324           7.701        -3.55         -10.725        0 \r\n 1985          325           3.825        -2.375        -9.75          0 \r\n 1985          326           7.25         -3.7          -8.125         0 \r\n 1985          327           7.575        -5.175        -11            0 \r\n 1985          328           4.375        -4.6          -13.45         0 \r\n 1985          329           3.5           1.825        -8.725         0 \r\n 1985          330           5.95         -0.725        -9.55          0 \r\n 1985          331           8.399        -7.525        -14.775        0 \r\n 1985          332           9.15         -9.025        -13.175        0 \r\n 1985          333           3.625        -8.8          -14.4          3.1 \r\n 1985          334           3.25         -8.125        -15.875        0.8 \r\n 1985          335           5.25         -9.775        -16.025        5.675 \r\n 1985          336           6.35         -12.775       -20.65         0 \r\n 1985          337           5.15         -5.875        -19.925        0 \r\n 1985          338           6.5           0.825        -8.575         0.6 \r\n 1985          339           7.751        -2.775        -11.725        0 \r\n 1985          340           5.726        -4.175        -18            0 \r\n 1985          341           5.925         2.475        -6.55          0 \r\n 1985          342           7.3           1.85         -5.325         2.6 \r\n 1985          343           1.625        -2.55         -10.5          1.5 \r\n 1985          344           2.725        -2.6          -8.275         0 \r\n 1985          345           5.825        -5.7          -12.925        0 \r\n 1985          346           5.85         -7.375        -16.6          0 \r\n 1985          347           6.3          -12.475       -28.55         0 \r\n 1985          348           6.425        -2.6          -24.875        0 \r\n 1985          349           7.276         0.625        -4.75          0 \r\n 1985          350           6.276        -1.8          -9.425         0 \r\n 1985          351           5.05         -0.85         -17.1          0.9 \r\n 1985          352           5.925        -12           -27.6          0 \r\n 1985          353           2.775        -7.2          -20.35         3.025 \r\n 1985          354           4.2          -8.625        -19.075        0 \r\n 1985          355           2.875        -0.45         -18.125        0 \r\n 1985          356           4.7           3.45         -2.175         0 \r\n 1985          357           5.875         3.925        -2.3           0 \r\n 1985          358           7.15          1.525        -20.85         0 \r\n 1985          359           7.475        -13.7         -23.7          0 \r\n 1985          360           4.65          4            -15.575        0 \r\n 1985          361           6.9           3.225        -8.85          0 \r\n 1985          362           8.45          0.775        -12.1          0 \r\n 1985          363           8.425        -2.375        -13.025        0 \r\n 1985          364           5.2           3.45         -8.7           0 \r\n 1985          365           9.35          1.575        -6.775         0 \r\n 1986          1             7.225         4.525        -6.575         0 \r\n 1986          2             5.4           4.975        -2.725         0 \r\n 1986          3             9.05          5.625        -7.25          0 \r\n 1986          4             5.7           2.325        -8.825         1.55 \r\n 1986          5             8.101         4.425        -11.15         0 \r\n 1986          6             5.775        -1.2          -15.125        0 \r\n 1986          7             7.575        -10.075       -25.3          0 \r\n 1986          8             7.2           0.975        -16.675        0 \r\n 1986          9             8.475         7.325        -5.725         0 \r\n 1986          10            8.85          6.175        -5.375         0 \r\n 1986          11            9.55          11.925       -0.9           0 \r\n 1986          12            9.475         7.225        -0.4           0 \r\n 1986          13            9.1           6.5          -7.025         0 \r\n 1986          14            10.05         4.275        -4.45          0 \r\n 1986          15            9.725         11.3         -2.975         0 \r\n 1986          16            9.825         11.275        2.3           0 \r\n 1986          17            6.5           14.5          2.75          0 \r\n 1986          18            6.551         11.725        0.325         0 \r\n 1986          19            7.7           8.725        -2.575         0 \r\n 1986          20            9.575         15.3          2.025         0 \r\n 1986          21            2.975         9.025        -1.8           0 \r\n 1986          22            9.225         5.55         -7.075         0 \r\n 1986          23            7.825         9.65         -1.15          0 \r\n 1986          24            6.951         8.775         1.075         0 \r\n 1986          25            4.45          6.4          -0.2           0 \r\n 1986          26            10.85         3.025        -14.35         0 \r\n 1986          27            8.5          -5.95         -20.575        0 \r\n 1986          28            7.575         4.975        -9.4           0 \r\n 1986          29            10.875        5.55         -10.175        0 \r\n 1986          30            6.65          6            -8.45          0 \r\n 1986          31            4.375         5.95         -3.55          1.6 \r\n 1986          32            11.65         5            -5.05          0 \r\n 1986          33            9.399         8.675        -1.125         0 \r\n 1986          34            2.425         4.875        -0.65          10.975 \r\n 1986          35            1.425         2.05         -1.05          17.475 \r\n 1986          36            1.5           3.35         -3.975         1.3 \r\n 1986          37            5.35         -2.15         -5.85          3.075 \r\n 1986          38            5.225        -3.3          -7.075         2.575 \r\n 1986          39            7.45         -6.5          -11.675        0 \r\n 1986          40            8.575        -7.375        -15.4          0 \r\n 1986          41            8.85         -7.725        -17            0 \r\n 1986          42            8.625        -11.125       -17.375        0.925 \r\n 1986          43            9.776        -10.225       -19.175        0 \r\n 1986          44            4.325        -1.25         -16.55         0 \r\n 1986          45            7.475        -4.075        -13.85         0 \r\n 1986          46            4.276        -1.075        -12.5          0 \r\n 1986          47            6.15         -1.775        -7.4           0 \r\n 1986          48            12.225        6.65         -8.575         0 \r\n 1986          49            5.375         4.15         -1.95          0 \r\n 1986          50            7.3           3.35         -8.3           0 \r\n 1986          51            9.2          -1.375        -13.25         0 \r\n 1986          52            8.8          -1.9          -15.65         0 \r\n 1986          53            12.126        2.4          -8.95          0 \r\n 1986          54            10.05         3.575        -5.05          0 \r\n 1986          55            9.401         1.625        -7.925         0 \r\n 1986          56            13.526        9.95         -4.95          0 \r\n 1986          57            13.324        12.6          0.725         0 \r\n 1986          58            4.9           7.075        -3.575         0 \r\n 1986          59            12.55         2.35         -8.65          0 \r\n 1986          60            14.125        11.825       -3.55          0 \r\n 1986          61            18.25         12.675       -0.575         0 \r\n 1986          62            5.725         10.05        -2.45          0 \r\n 1986          63            17.3          11.45        -2.075         0 \r\n 1986          64            7.7           6.8           0.8           0 \r\n 1986          65            14.701        10.25        -3.35          0 \r\n 1986          66            12.275        0.65         -11.825        0 \r\n 1986          67            11.326        9.075        -6.375         0 \r\n 1986          68            12.25         19.525        3.325         0 \r\n 1986          69            15.975        15.05        -1.025         1.775 \r\n 1986          70            7.25          8.775        -1.325         4.3 \r\n 1986          71            1.65          4.6           0.65          24.474 \r\n 1986          72            5.225         5.125        -0.975         1.45 \r\n 1986          73            7.301         8.075        -2.85          0 \r\n 1986          74            18.825        9.45         -2.55          0 \r\n 1986          75            4.65          10.45        -0.125         11.65 \r\n 1986          76            2.425         13.2          1.1           10.425 \r\n 1986          77            4.776         16.65         4.525         9.075 \r\n 1986          78            19.175        4.725        -2.85          0 \r\n 1986          79            22.2          3.8          -10.225        0 \r\n 1986          80            21.45         10.275       -4.35          0 \r\n 1986          81            15.975        18.6         -0.15          0 \r\n 1986          82            13.474        16.075        3.275         0 \r\n 1986          83            18.125        21.325       -1.9           0 \r\n 1986          84            15.55         20.65         9.975         0 \r\n 1986          85            20.575        15.025        3.05          0 \r\n 1986          86            18.976        20.65         0.225         0 \r\n 1986          87            21.5          26.5          8.625         0 \r\n 1986          88            22.525        27.425        8.825         0 \r\n 1986          89            21.25         23.75         7.525         0 \r\n 1986          90            22.475        26.15         12.95         3.85 \r\n 1986          91            22.575        18.025        4.625         8.775 \r\n 1986          92            6.325         11.8          4.05          19.976 \r\n 1986          93            6.025         20.325        10.5          20.701 \r\n 1986          94            9.351         21.05         11.15         20.326 \r\n 1986          95            13.927        17.175        4.725         0 \r\n 1986          96            22.7          21.65         2.925         0 \r\n 1986          97            17.549        23.7          8.525         0 \r\n 1986          98            22.625        15.3          4.05          0 \r\n 1986          99            23.55         15.625       -0.95          0 \r\n 1986          100           23.9          18.875        1.65          0 \r\n 1986          101           22.3          21.675        5.425         0 \r\n 1986          102           11.9          16.35         4.85          0 \r\n 1986          103           11.452        18.75         1.4           0 \r\n 1986          104           7.526         16.65        -3.025         17.2 \r\n 1986          105           6.6           11.1         -2.65          0 \r\n 1986          106           22.425        16.925       -1.075         2.475 \r\n 1986          107           8.325         11.6          4.4           11.9 \r\n 1986          108           8.351         19.1          6.125         2.275 \r\n 1986          109           24.775        18.9          4.05          2.075 \r\n 1986          110           14.501        16.25         4.475         0 \r\n 1986          111           10.45         11.625       -0.025         0 \r\n 1986          112           25.775        15.575       -2.125         0 \r\n 1986          113           25.35         22.35         3.875         0 \r\n 1986          114           22.625        24.85         10.3          0 \r\n 1986          115           13.501        25.925        12.625        11.15 \r\n 1986          116           18.577        24.325        14.55         16.875 \r\n 1986          117           4.75          21.65         15.65         24.576 \r\n 1986          118           19.851        17.7          1.925         7.5 \r\n 1986          119           15.375        24.625        9.875         0 \r\n 1986          120           21.599        21            16.4          6.375 \r\n 1986          121           26.625        17.75         5.425         0 \r\n 1986          122           24.225        18.85         2.5           0 \r\n 1986          123           11.026        21.65         6.975         8.925 \r\n 1986          124           24.85         25.675        11.325        0 \r\n 1986          125           26.2          26.725        15.7          0 \r\n 1986          126           23.174        24.425        10.925        0 \r\n 1986          127           24.025        24.375        9.1           0 \r\n 1986          128           17.526        23.4          16.975        14.176 \r\n 1986          129           16.9          23.925        17.5          23.826 \r\n 1986          130           5.4           21.3          17.075        26.151 \r\n 1986          131           26.225        26.7          14.2          2.575 \r\n 1986          132           22.426        25.275        13.9          2.8 \r\n 1986          133           18.225        23.05         13.1          4.425 \r\n 1986          134           28.725        25.1          10.975        0 \r\n 1986          135           14.025        22.125        14.625        23.826 \r\n 1986          136           7.175         21.625        12.075        6.25 \r\n 1986          137           11.474        17.75         7.4           2.05 \r\n 1986          138           26.699        19            6.275         0 \r\n 1986          139           29.199        21.225        5.85          0 \r\n 1986          140           27.225        21.95         7.325         0 \r\n 1986          141           27.525        22.65         7.95          0 \r\n 1986          142           29.374        22.6          8.225         0 \r\n 1986          143           11.9          18.225        9.25          0 \r\n 1986          144           25.05         24.775        9.725         0 \r\n 1986          145           20.25         21.25         11.525        0 \r\n 1986          146           16.95         22.775        10.525        2.75 \r\n 1986          147           4.201         20.25         13.225        5.675 \r\n 1986          148           15.101        20.375        11.525        2.575 \r\n 1986          149           13.275        23.55         14.15         3.375 \r\n 1986          150           26.425        26.325        12.95         0 \r\n 1986          151           23.45         27.925        14.725        0 \r\n 1986          152           25.8          31.025        16.2          0 \r\n 1986          153           30.925        26.65         12.65         0 \r\n 1986          154           28.724        28.45         11.675        3.05 \r\n 1986          155           20.55         26.95         19.05         11 \r\n 1986          156           8.826         28.125        17.325        0 \r\n 1986          157           13.05         28.675        17.85         2.1 \r\n 1986          158           21.476        29.325        18.225        0 \r\n 1986          159           29.675        28.15         13            0 \r\n 1986          160           18.724        28.475        13.925        3 \r\n 1986          161           24.925        28.35         19.5          8.65 \r\n 1986          162           5.3           26.55         16.275        11.175 \r\n 1986          163           28.55         28.35         14.075        0 \r\n 1986          164           23.827        28.9          15.75         0 \r\n 1986          165           20.6          28.125        15.9          33.625 \r\n 1986          166           23.3          29.125        14.475        0 \r\n 1986          167           30.625        29.925        18.95         0 \r\n 1986          168           27.276        30.175        13.1          0 \r\n 1986          169           25.775        29.9          18.325        0 \r\n 1986          170           26.8          30.65         19.7          2.4 \r\n 1986          171           22.376        29.95         19.925        3.825 \r\n 1986          172           11.527        29.8          21.675        6.05 \r\n 1986          173           23.749        28.65         20.4          0 \r\n 1986          174           30.774        30.4          14.825        0 \r\n 1986          175           31.375        27.95         13.45         0 \r\n 1986          176           27.875        29.75         14.575        0 \r\n 1986          177           22.375        30.825        20.925        2.05 \r\n 1986          178           24.749        30            21.425        0 \r\n 1986          179           23.6          30.15         19.4          6.85 \r\n 1986          180           18.975        29.15         20.1          15.3 \r\n 1986          181           15.252        28.9          21.35         11.675 \r\n 1986          182           15.024        28.475        19.475        0 \r\n 1986          183           29.3          28.525        16.15         0 \r\n 1986          184           29.375        29.4          15.1          0 \r\n 1986          185           29.75         31.375        20.875        2.35 \r\n 1986          186           21.226        31.05         22.025        19.774 \r\n 1986          187           8.974         28.95         20.3          33.849 \r\n 1986          188           26.524        29.95         16.5          3.35 \r\n 1986          189           23.451        30.275        20.8          14.174 \r\n 1986          190           18.676        30            20.375        5.3 \r\n 1986          191           20.525        29.85         20.05         33.249 \r\n 1986          192           25.6          29.7          19.2          13.724 \r\n 1986          193           23.625        28.575        19.525        14.774 \r\n 1986          194           20.725        30.375        16.625        0 \r\n 1986          195           15            30.15         21.2          11.475 \r\n 1986          196           27.95         32.4          20.775        0 \r\n 1986          197           29.4          33.075        20.575        0 \r\n 1986          198           29.925        32.8          21.65         0 \r\n 1986          199           29.325        33.625        20.875        0 \r\n 1986          200           28.125        31.875        21.825        0 \r\n 1986          201           27.725        27.725        16.025        0 \r\n 1986          202           27.225        29.075        13.725        0 \r\n 1986          203           26.125        30.175        16.5          0 \r\n 1986          204           26.1          29.6          18.075        0 \r\n 1986          205           27.675        31.975        21.2          4.8 \r\n 1986          206           26.775        29.35         20.975        8 \r\n 1986          207           24.749        29.425        17.6          0 \r\n 1986          208           21.399        31.4          19.05         0 \r\n 1986          209           27.95         33.225        19.7          1.25 \r\n 1986          210           28.05         32.4          20.475        1.85 \r\n 1986          211           21.425        30.625        19.825        0 \r\n 1986          212           18.55         28.55         19.625        0 \r\n 1986          213           10.45         26.7          15.2          0 \r\n 1986          214           27.05         24.675        14.075        0 \r\n 1986          215           28.15         25.45         11.35         0 \r\n 1986          216           6.624         26.2          13.35         11.525 \r\n 1986          217           6.524         23.225        16.075        10.525 \r\n 1986          218           21.149        26.025        14.95         2.875 \r\n 1986          219           21.126        26.2          15.9          3.125 \r\n 1986          220           26.925        27.45         13.9          0 \r\n 1986          221           4.775         24.7          15.825        5.125 \r\n 1986          222           22.9          23.55         13.95         0 \r\n 1986          223           22.449        24.475        10.95         0 \r\n 1986          224           6.625         24.2          13.6          3.4 \r\n 1986          225           9.424         26.75         17.625        27.026 \r\n 1986          226           19.499        25.375        19.275        0 \r\n 1986          227           24.274        27.175        17.975        0 \r\n 1986          228           26            28.725        16.225        2.075 \r\n 1986          229           18.374        27.675        17.25         0 \r\n 1986          230           15.5          26.475        16.6          0 \r\n 1986          231           20.1          26.175        17.25         1.275 \r\n 1986          232           14.877        28.175        15.45         2.65 \r\n 1986          233           9.925         25.25         16.225        17.75 \r\n 1986          234           14.426        29.225        16            0 \r\n 1986          235           22.599        25.65         13.05         0 \r\n 1986          236           16.826        25.975        11.8          0 \r\n 1986          237           20.1          29.225        19.15         0 \r\n 1986          238           10.5          25.95         19.675        3.7 \r\n 1986          239           22            21.525        9.8           0 \r\n 1986          240           23.95         20.075        5.6           0 \r\n 1986          241           18.776        23.675        9.05          0 \r\n 1986          242           22.299        27.3          13.275        0 \r\n 1986          243           22.85         27.225        15.25         0 \r\n 1986          244           20.775        27.9          13.625        0 \r\n 1986          245           15.875        26.075        13.775        4.65 \r\n 1986          246           14.975        27            17.05         8.575 \r\n 1986          247           24.05         26.025        15.525        5.95 \r\n 1986          248           12.225        27.45         12.875        0 \r\n 1986          249           3.175         20.9          10.675        15.225 \r\n 1986          250           20.45         20            6.25          0 \r\n 1986          251           17.325        21.85         5.9           0 \r\n 1986          252           5.525         25.5          12.725        0 \r\n 1986          253           11.35         27.825        19.95         0 \r\n 1986          254           9.576         24.6          13.375        0 \r\n 1986          255           22.3          25.55         9             0 \r\n 1986          256           13.677        24.975        13.125        0 \r\n 1986          257           10.777        25.15         12.95         5.575 \r\n 1986          258           7.927         25.25         14.975        24.6 \r\n 1986          259           4.75          22.95         11.5          10.575 \r\n 1986          260           12.35         25            16.15         4.55 \r\n 1986          261           8.076         24.9          16.9          18.875 \r\n 1986          262           13.15         26.925        18.8          34.575 \r\n 1986          263           12.602        26.4          17.35         0 \r\n 1986          264           16.051        27.525        19.475        8.55 \r\n 1986          265           5.25          24.85         18.15         10.05 \r\n 1986          266           6.7           21.075        12.9          5.975 \r\n 1986          267           3.626         25.425        15.8          4.95 \r\n 1986          268           20.1          26.55         15.875        0 \r\n 1986          269           17.425        27.9          19.775        0 \r\n 1986          270           16.6          25.3          18.75         7.125 \r\n 1986          271           9.075         26.3          14.225        5.975 \r\n 1986          272           9.574         24.5          13.925        31.825 \r\n 1986          273           14.099        16.525        10.225        0 \r\n 1986          274           10.575        21.9          9.2           5.4 \r\n 1986          275           4.425         21.075        11.1          0 \r\n 1986          276           3.2           19.625        14.55         3.775 \r\n 1986          277           16.175        15.45         7.125         8.325 \r\n 1986          278           11.701        21.175        6.225         0 \r\n 1986          279           16.651        18.425        2.85          0 \r\n 1986          280           17.925        24.15         9.55          0 \r\n 1986          281           13.875        21.25         11.4          0 \r\n 1986          282           13.473        15.55         6.5           0 \r\n 1986          283           5.85          18.225        4.25          0 \r\n 1986          284           1.025         18.825        4.75          67.303 \r\n 1986          285           7.875         7.775         0             0 \r\n 1986          286           9.675         9.225        -1.3           0 \r\n 1986          287           16.425        11.85        -2.3           0 \r\n 1986          288           16.45         13.2         -1.25          0 \r\n 1986          289           15.9          21.5          2.8           0 \r\n 1986          290           15.525        19.475        6.225         0 \r\n 1986          291           14.925        18.075        3.625         0 \r\n 1986          292           14.25         22.325        6.05          0 \r\n 1986          293           13.15         23.35         10.7          0 \r\n 1986          294           11.1          21.6          9.5           0 \r\n 1986          295           1.525         15.7          10.475        10.276 \r\n 1986          296           3.051         18.075        10.725        10.376 \r\n 1986          297           1.725         16.6          10.775        6.325 \r\n 1986          298           2.65          13.9          9.2           0 \r\n 1986          299           4.7           12.5          6.875         0 \r\n 1986          300           14.425        19.425        3.625         0 \r\n 1986          301           11.65         20.5          7.675         0 \r\n 1986          302           13.25         15.625        2.8           0 \r\n 1986          303           11.576        16.85         4.45          1.75 \r\n 1986          304           1.05          16.725        8.125         2.6 \r\n 1986          305           2.65          12.05        -0.425         3.7 \r\n 1986          306           12.924        10.3         -2.6           0 \r\n 1986          307           10.199        11.2          0.5           0 \r\n 1986          308           8.85          8.425        -1.675         0 \r\n 1986          309           11.75         13.075       -3.15          0 \r\n 1986          310           12.3          15.375        2.175         0 \r\n 1986          311           1.325         15.775        4.875         2.95 \r\n 1986          312           12.95         15.45        -1.6           7.575 \r\n 1986          313           11.5          4.725        -6.1           0 \r\n 1986          314           3.65          1.1          -7.825         2.9 \r\n 1986          315           6.075         0.275        -12.075        0 \r\n 1986          316           7.55         -0.675        -13.3          0 \r\n 1986          317           7.65         -3.45         -16.8          0 \r\n 1986          318           7.775         3.025        -10.475        0 \r\n 1986          319           8.351         6.775        -6.65          0 \r\n 1986          320           9.55          6.5          -6.75          0 \r\n 1986          321           4.476         6.45         -2.75          0 \r\n 1986          322           4.525         2.725        -4.125         1.8 \r\n 1986          323           1.85          3.025        -7.225         4.775 \r\n 1986          324           4.125         2.225        -7.275         0 \r\n 1986          325           9.376         6.85         -7.75          0 \r\n 1986          326           8.325         9.4          -0.675         0 \r\n 1986          327           4.15          3.975        -4.125         0 \r\n 1986          328           9.775         8.475        -5.825         0 \r\n 1986          329           8.35          8.225        -2.65          0 \r\n 1986          330           9.325         6.4          -4.25          0 \r\n 1986          331           9.625         8.725        -4.775         0 \r\n 1986          332           8.55          10.425       -2.15          0 \r\n 1986          333           6.526         10.125        0.75          0 \r\n 1986          334           3.65          5.85         -0.925         0 \r\n 1986          335           2.424         1.95         -1.225         7.55 \r\n 1986          336           6.7           3.375        -4.9           0.975 \r\n 1986          337           8.3           1.925        -6.525         0 \r\n 1986          338           7.125        -1            -8.125         0 \r\n 1986          339           7.625         2.8          -12.225        0 \r\n 1986          340           5.224         2.05         -0.975         0.625 \r\n 1986          341           4.975         1.9          -1.3           10.15 \r\n 1986          342           4.6           0.9          -4.675         6.375 \r\n 1986          343           6.201        -1.175        -9.125         0 \r\n 1986          344           6.4          -7.425        -20.375        0 \r\n 1986          345           5.775         1.55         -12.875        0 \r\n 1986          346           4.575        -0.775        -11.6          0 \r\n 1986          347           6.2          -1.75         -22.25         0 \r\n 1986          348           8.825         2.075        -5.15          0 \r\n 1986          349           7.174         2.875        -3.575         0 \r\n 1986          350           4.425         2.925        -5.025         0 \r\n 1986          351           6.576         4.75         -2.975         0 \r\n 1986          352           7.676         4.55         -6.075         0 \r\n 1986          353           6.825         6.1          -4.375         0 \r\n 1986          354           6.1           3            -3.2           0 \r\n 1986          355           5.2           3.025        -4.25          0 \r\n 1986          356           5.725         4.475        -5.425         0 \r\n 1986          357           6.125         5.05         -3.85          0 \r\n 1986          358           7.425         4.4          -5.1           0 \r\n 1986          359           9.3           5.15         -4.25          0 \r\n 1986          360           8.474         3.85         -6.3           0 \r\n 1986          361           5.525         4.325        -5.275         0 \r\n 1986          362           3.925         4.775        -4.175         0 \r\n 1986          363           3.975         3.125        -3.25          0 \r\n 1986          364           8.55          4.9          -6.175         0 \r\n 1986          365           7.5           6.175        -3.525         0 \r\n 1987          1             6             2.45         -7.45          0 \r\n 1987          2             7.375         3.575        -9.45          0 \r\n 1987          3             3.35          6.2          -3.65          0 \r\n 1987          4             5.85          5.75         -4.225         0 \r\n 1987          5             5.875         4.925        -2.875         0 \r\n 1987          6             3.65          5.55         -1             0 \r\n 1987          7             3.825         2.55         -4.6           0 \r\n 1987          8             8.825         3            -7.875         2.075 \r\n 1987          9             5.325         4.45         -3.725         0 \r\n 1987          10            3.8          -0.1          -7.6           0 \r\n 1987          11            7.8           6.65         -9.65          0 \r\n 1987          12            8.5           9.875        -2.5           0 \r\n 1987          13            10.4          11.875       -0.175         0 \r\n 1987          14            8.075         8.075        -1.475         0 \r\n 1987          15            8.425         3.1          -8             0 \r\n 1987          16            7.125        -3.2          -11.975        0 \r\n 1987          17            6.4          -2.6          -9.3           0 \r\n 1987          18            10.7         -0.3          -12.05         2.075 \r\n 1987          19            5.275         3.35         -12.95         0 \r\n 1987          20            9.875         1.225        -13.075        0 \r\n 1987          21            6.9           5.75         -7.2           0 \r\n 1987          22            7.951         1.5          -11.4          0 \r\n 1987          23            8.95         -4.3          -19.925        0 \r\n 1987          24            9.375        -3.6          -16.675        0 \r\n 1987          25            7.675        -3.5          -12.2          0 \r\n 1987          26            7.675         1.825        -11.55         0 \r\n 1987          27            10.15         6.4          -3.925         0 \r\n 1987          28            9.025         6.05         -7.075         0 \r\n 1987          29            6.751         8.9          -1             0 \r\n 1987          30            11.15         7.625        -2.5           0 \r\n 1987          31            8.775         10.025       -0.05          0 \r\n 1987          32            12.1          12.625       -2.4           0 \r\n 1987          33            9.675         14.4         -0.225         0 \r\n 1987          34            7.675         8.125        -5.825         0 \r\n 1987          35            6.1           6.375        -2.775         0.3 \r\n 1987          36            4.55          4.525        -2.85          0.925 \r\n 1987          37            12.125        10.45        -4.4           0 \r\n 1987          38            11.55         15.5         -2.95          0 \r\n 1987          39            13.425        10.4         -6.15          0 \r\n 1987          40            13.25         7.75         -7.325         0 \r\n 1987          41            13.2          11.3         -3.45          0 \r\n 1987          42            13.775        12.975       -1.15          0 \r\n 1987          43            10.101        9.95         -3.275         0 \r\n 1987          44            9.175         14.925       -2.575         0 \r\n 1987          45            6.175         10.55        -2.1           0 \r\n 1987          46            5.625         4.3          -5.775         0 \r\n 1987          47            10.9          3.775        -8.125         0 \r\n 1987          48            14            3.75         -6.85          0 \r\n 1987          49            14.2          6.05         -6.8           0 \r\n 1987          50            8.601         7.275        -3             0 \r\n 1987          51            10.875        8.85         -2.925         0 \r\n 1987          52            12.251        10.35        -4.1           0 \r\n 1987          53            8.875         5.75         -5.8           0 \r\n 1987          54            15.6          9.35         -4.625         0 \r\n 1987          55            13.525        11.425       -2.475         0 \r\n 1987          56            8.325         12.275       -3.575         0 \r\n 1987          57            14.25         14.025       -2.3           0 \r\n 1987          58            3.3           8.65         -2.05          2.025 \r\n 1987          59            2.95          6.3          -0.625         9.2 \r\n 1987          60            9.451         6.9          -3.05          0 \r\n 1987          61            14.8          12.225       -3.7           0 \r\n 1987          62            15.725        11.125       -5.35          0 \r\n 1987          63            13.1          17.575        0.025         0 \r\n 1987          64            17.15         17.625        0.925         0 \r\n 1987          65            17.5          18.425        2.275         0 \r\n 1987          66            17.6          20.425        4.5           0 \r\n 1987          67            10.126        16.425        2.925         0 \r\n 1987          68            10.949        7.325        -5.625         0 \r\n 1987          69            15.15         3.575        -8.025         0 \r\n 1987          70            17.95         8.85         -5.35          0 \r\n 1987          71            8.601         10.9         -2.375         0 \r\n 1987          72            16.775        17.475       -0.55          0 \r\n 1987          73            10.874        17.4          2.375         1.675 \r\n 1987          74            4.875         11.725       -0.75          2.425 \r\n 1987          75            6.174         7.425        -1.175         1.975 \r\n 1987          76            5.4           9.6           2.425         7.75 \r\n 1987          77            4.925         9.975         0             22.824 \r\n 1987          78            18.075        15.475        1.575         0 \r\n 1987          79            16.101        18.45         4.75          0 \r\n 1987          80            20.925        15.15         3.3           5.575 \r\n 1987          81            19.225        18.625        1.225         2.25 \r\n 1987          82            9.876         17.9          8.1           13.475 \r\n 1987          83            7.15          15.15         6.6           8.125 \r\n 1987          84            7.425         12.625        2.875         0 \r\n 1987          85            14.601        11.625       -2.45          0 \r\n 1987          86            19.426        14.625       -1.625         0 \r\n 1987          87            6.25          9.775        -1.05          16.45 \r\n 1987          88            9.825        -0.35         -10            6.725 \r\n 1987          89            14.402       -0.35         -18.55         0 \r\n 1987          90            18.126        8.625        -13.4          0 \r\n 1987          91            8.85          8.7          -2.2           0 \r\n 1987          92            17.976        6.35         -6.925         0 \r\n 1987          93            18.35         9.95         -5.5           0 \r\n 1987          94            21.45         12.9         -4.45          0 \r\n 1987          95            23.9          16.95        -1.5           0 \r\n 1987          96            16.423        17.05         0.375         0 \r\n 1987          97            23.35         21.95         2.025         0 \r\n 1987          98            22.625        23.15         4.3           0 \r\n 1987          99            22.275        23.525        5.825         0 \r\n 1987          100           20.95         17.025        2.125         1.2 \r\n 1987          101           11.927        13            0.725         2.225 \r\n 1987          102           18.45         17.975        0.4           0.7 \r\n 1987          103           3.425         14.375        6.25          8.95 \r\n 1987          104           2.675         12.4          5.1           23.176 \r\n 1987          105           9.45          15.375        5.75          1.975 \r\n 1987          106           24.2          24.7          3.35          0 \r\n 1987          107           23.775        26.575        8.6           0 \r\n 1987          108           24.3          26.8          9.625         0 \r\n 1987          109           21.75         29.825        12.475        0 \r\n 1987          110           11.175        26.825        15.125        0 \r\n 1987          111           10.976        17.825        6.8           0.4 \r\n 1987          112           6.501         13.85         4.15          3.25 \r\n 1987          113           25.475        22.575        2.275         2.15 \r\n 1987          114           26.725        24.05         7.35          0 \r\n 1987          115           26.3          27.025        7.725         0 \r\n 1987          116           25.876        29.325        13.375        0 \r\n 1987          117           27.5          25.55         10.175        0 \r\n 1987          118           26.8          24.3          5.6           0 \r\n 1987          119           26.5          30.5          9.55          0 \r\n 1987          120           27.4          22.425        5.2           0 \r\n 1987          121           27.125        29.425        8.2           3.175 \r\n 1987          122           20.926        24.925        13.65         4.15 \r\n 1987          123           7.676         23.725        14.7          4.4 \r\n 1987          124           6.225         20.6          8.3           3.625 \r\n 1987          125           11.05         18.5          8.325         0 \r\n 1987          126           27.125        26.275        9.15          0 \r\n 1987          127           28.6          25.9          8.65          0 \r\n 1987          128           28.8          27            9.4           0 \r\n 1987          129           29.7          28.075        12.2          0 \r\n 1987          130           28.175        29.3          12.425        0 \r\n 1987          131           19.65         27.2          14.775        0 \r\n 1987          132           29.7          25.425        7.775         0 \r\n 1987          133           26.949        26.275        10.275        0 \r\n 1987          134           26.474        27.9          16.425        0 \r\n 1987          135           29.15         26.9          10.3          0 \r\n 1987          136           30.75         28            11.275        0 \r\n 1987          137           25.775        28.5          14.225        0 \r\n 1987          138           15.027        26.85         15.2          5.725 \r\n 1987          139           21.774        26.625        14.95         8.825 \r\n 1987          140           19.825        27.2          18.875        19.101 \r\n 1987          141           10.5          25.325        18.05         11.776 \r\n 1987          142           14.201        20.85         4.2           0 \r\n 1987          143           24.375        21.9          7.875         0 \r\n 1987          144           5.975         23.7          10.85         11.401 \r\n 1987          145           15.402        24.05         13.85         42.977 \r\n 1987          146           5.226         24.575        16.95         43.827 \r\n 1987          147           8.274         24.975        17.725        3.575 \r\n 1987          148           20.376        26.975        16.675        0 \r\n 1987          149           20.1          26.925        16.825        5.125 \r\n 1987          150           27.699        25.475        15.5          5.725 \r\n 1987          151           26.15         26.15         16.2          7.9 \r\n 1987          152           29.225        29.75         17.4          3.3 \r\n 1987          153           15.723        26.825        14.6          5.1 \r\n 1987          154           28.2          25.475        9.8           0 \r\n 1987          155           30.05         27.475        9.85          0 \r\n 1987          156           30.6          29.575        12.8          0 \r\n 1987          157           29.4          30.475        14.1          0 \r\n 1987          158           27.6          31.6          15.475        0 \r\n 1987          159           24.325        29.875        17.325        0 \r\n 1987          160           12.75         27.55         15.3          2.4 \r\n 1987          161           8.85          27.5          17.025        1.825 \r\n 1987          162           19.65         28.65         18.9          0 \r\n 1987          163           23.226        32.625        18.575        2.3 \r\n 1987          164           28.575        34.525        18.425        0 \r\n 1987          165           31.175        35.55         19.6          0 \r\n 1987          166           30.675        33.375        18.475        0 \r\n 1987          167           24.626        31.325        20.4          2.225 \r\n 1987          168           18.351        30.225        21.325        0 \r\n 1987          169           20.4          30.575        20.675        6.45 \r\n 1987          170           13.85         28.95         17.125        1.65 \r\n 1987          171           13.776        27.75         18.925        0 \r\n 1987          172           26.55         28.725        19.05         0 \r\n 1987          173           27.775        30.825        19.5          3.85 \r\n 1987          174           27.149        29.125        20.275        5.2 \r\n 1987          175           22.076        29.4          18.425        9.25 \r\n 1987          176           27.575        27.6          18.375        20.525 \r\n 1987          177           31.7          26.9          12.3          0 \r\n 1987          178           31.4          28.925        12.575        0 \r\n 1987          179           30.05         30.8          15.175        0 \r\n 1987          180           22.099        27.875        19.55         9.275 \r\n 1987          181           25.949        27.45         14.3          0 \r\n 1987          182           26.125        28.525        13.025        0 \r\n 1987          183           26.1          29.975        15.15         0 \r\n 1987          184           23.124        30.2          17.6          0 \r\n 1987          185           17.024        28.325        17.975        0 \r\n 1987          186           17.849        28.425        19.7          5.3 \r\n 1987          187           30.15         31.05         20.425        13.824 \r\n 1987          188           13.273        29.55         20.6          14.774 \r\n 1987          189           15.549        28.6          20.375        27.699 \r\n 1987          190           15.401        28.8          20.2          25.049 \r\n 1987          191           17.2          29.05         20.575        8.9 \r\n 1987          192           22.551        30.25         20.75         12.25 \r\n 1987          193           12.775        27.925        18.9          16.174 \r\n 1987          194           27.4          24.725        12.125        2.25 \r\n 1987          195           17.325        27.25         12.3          4.425 \r\n 1987          196           28.7          31.025        13.675        0 \r\n 1987          197           28.775        31.5          17.625        0 \r\n 1987          198           21.05         29.425        21            11.65 \r\n 1987          199           16.026        29.875        20.025        7.625 \r\n 1987          200           21.876        30.425        21.65         0 \r\n 1987          201           26.3          30.9          21.1          0 \r\n 1987          202           22.65         31.275        20.75         0 \r\n 1987          203           24.2          31.575        19.675        0 \r\n 1987          204           25.025        32.35         19.925        0 \r\n 1987          205           24.526        31.5          21.85         2.15 \r\n 1987          206           27.025        32.9          21.375        0 \r\n 1987          207           26.675        33.575        21.4          0 \r\n 1987          208           26.575        33.525        21.375        0 \r\n 1987          209           25.9          34.25         21.3          0 \r\n 1987          210           26.7          34.675        21.6          0 \r\n 1987          211           27.45         35.475        21.575        0 \r\n 1987          212           26.575        35.775        22.125        0 \r\n 1987          213           26.95         34.475        22.25         0 \r\n 1987          214           26.899        32.7          23.125        0 \r\n 1987          215           8.002         30.25         23.175        5.325 \r\n 1987          216           26            26.675        16.125        0 \r\n 1987          217           27.15         27.925        14.275        0 \r\n 1987          218           10.298        29.65         16.4          8.375 \r\n 1987          219           7.7           28.375        18.975        40.776 \r\n 1987          220           11.8          27.2          21.3          55.826 \r\n 1987          221           23.899        27.725        15.25         0 \r\n 1987          222           22.075        29.725        16.975        0 \r\n 1987          223           24.224        29.8          16.65         0 \r\n 1987          224           6.326         27.475        19.875        12.95 \r\n 1987          225           9.899         27.675        19.475        4.95 \r\n 1987          226           16.525        28.125        19.975        6.825 \r\n 1987          227           24.95         30.35         22.05         6.225 \r\n 1987          228           22.325        28.55         21.35         0 \r\n 1987          229           12.352        28.15         15.95         6.725 \r\n 1987          230           25.35         26.125        16.675        7.975 \r\n 1987          231           10.452        25.925        13.6          0 \r\n 1987          232           12.052        28.275        14.575        0 \r\n 1987          233           22.826        31.975        20.975        0 \r\n 1987          234           5.801         29.075        15.05         0 \r\n 1987          235           19.949        23.2          9.65          0 \r\n 1987          236           3.75          18.525        11.375        10.15 \r\n 1987          237           2.351         21.35         10.725        90.077 \r\n 1987          238           3.4           19.225        12.15         17.55 \r\n 1987          239           9.5           20.475        9.75          0 \r\n 1987          240           17.576        23.4          11            0 \r\n 1987          241           23.475        26.875        11.65         0 \r\n 1987          242           21.25         23.35         13.6          0 \r\n 1987          243           23.925        23.125        9.375         0 \r\n 1987          244           22.299        26.55         10.475        0 \r\n 1987          245           24.475        24.325        10.275        0 \r\n 1987          246           18.548        26.825        10.825        0 \r\n 1987          247           22.6          30.475        15.275        1.2 \r\n 1987          248           14.85         29.125        17.375        2.3 \r\n 1987          249           12.998        24.2          17.225        3.425 \r\n 1987          250           10.7          24.575        14.55         0 \r\n 1987          251           22.575        22.975        11.6          0 \r\n 1987          252           10.927        24.225        10.3          7.3 \r\n 1987          253           18.2          25.875        12.475        0 \r\n 1987          254           16.451        24.35         10.5          0 \r\n 1987          255           20.325        20.225        6.45          0 \r\n 1987          256           21.15         25.4          9.8           0 \r\n 1987          257           15.274        25.275        15.025        3.725 \r\n 1987          258           3.401         24.1          17.9          29.45 \r\n 1987          259           6.474         21.7          15.35         7.775 \r\n 1987          260           11.026        23.925        13.675        0.6 \r\n 1987          261           18.05         21.35         10.2          0 \r\n 1987          262           12.725        20.675        6.35          0 \r\n 1987          263           16.475        20.025        7.45          0 \r\n 1987          264           14.125        20.15         6.9           0 \r\n 1987          265           14.875        21.775        6.525         0 \r\n 1987          266           20.3          25.35         7.675         0 \r\n 1987          267           20.525        27.05         10.1          0 \r\n 1987          268           19.15         25.525        9.25          0 \r\n 1987          269           19.35         28.15         11.75         0 \r\n 1987          270           17.95         27.125        16.475        3.275 \r\n 1987          271           14.975        22.875        13.175        8.175 \r\n 1987          272           19.475        21.4          8.75          0 \r\n 1987          273           17.3          22.125        6.6           0 \r\n 1987          274           19.275        27.6          9.075         0 \r\n 1987          275           17.95         22.175        2.25          0 \r\n 1987          276           19            17.675       -0.1           0 \r\n 1987          277           19.05         24.875        4.2           0 \r\n 1987          278           16.325        20.1          10.7          0 \r\n 1987          279           15.476        18.3          5.1           0 \r\n 1987          280           17.45         15            0.925         0 \r\n 1987          281           15.175        19.425        2.075         0 \r\n 1987          282           7.05          14.425        4.05          0 \r\n 1987          283           7.25          8.8          -0.35          0 \r\n 1987          284           15.975        13           -4.275         0 \r\n 1987          285           16.6          20.275       -1.325         0 \r\n 1987          286           13.375        22.65         4.375         0 \r\n 1987          287           8.226         17.6          8.6           6.475 \r\n 1987          288           6.551         16.7          9.5           5.5 \r\n 1987          289           4.475         15.575        8.95          3.125 \r\n 1987          290           15.575        18.3          0.475         0 \r\n 1987          291           12.751        17.775        3.15          0 \r\n 1987          292           9.35          12.625        0.625         0 \r\n 1987          293           10.726        7.85         -1.55          0 \r\n 1987          294           14.075        10.35        -5.15          0 \r\n 1987          295           12.675        15.075        0.85          0 \r\n 1987          296           12.95         15.45        -1.9           0 \r\n 1987          297           13.075        10.75        -0.1           0 \r\n 1987          298           6.25          10.075       -1.45          4.05 \r\n 1987          299           7.875         14.775        4.175         0 \r\n 1987          300           13.05         12.45        -0.325         0 \r\n 1987          301           11.125        13.925       -2.25          0 \r\n 1987          302           12.6          20.025        2.6           0 \r\n 1987          303           12.55         23.075        5.225         0 \r\n 1987          304           3.75          20.325        7.675         5.825 \r\n 1987          305           4.6           19.15         12.4          0 \r\n 1987          306           5.975         20.475        14.125        0 \r\n 1987          307           12.575        21.65         13.15         0 \r\n 1987          308           13.25         17.9          7.375         0 \r\n 1987          309           10.925        13.475       -0.025         0 \r\n 1987          310           12.225        17.475        1.675         0 \r\n 1987          311           7.55          15.6          7.475         4.1 \r\n 1987          312           5.125         13.375        4.35          0 \r\n 1987          313           12.925        7.525        -5.525         0 \r\n 1987          314           12.6          8.825        -4.2           0 \r\n 1987          315           12            11.75        -2.775         0 \r\n 1987          316           10.9          16.175       -2.225         0 \r\n 1987          317           6.575         18.05         4.175         0 \r\n 1987          318           9.7           15.175        2.15          0 \r\n 1987          319           3.075         15.1          7.525         7.6 \r\n 1987          320           3.9           13.125        5.8           5.05 \r\n 1987          321           3.55          6.8          -0.6           2.05 \r\n 1987          322           11.075        8.8          -5.275         0 \r\n 1987          323           9.75          10           -2.65          0 \r\n 1987          324           10.65         6.05         -5.675         0 \r\n 1987          325           11.1          10.8         -3.325         0 \r\n 1987          326           7.325         14.625        2.675         0 \r\n 1987          327           11.05         11.175       -1.675         0 \r\n 1987          328           5.399         6.35         -0.85          0 \r\n 1987          329           4.35          6.55         -2.375         0 \r\n 1987          330           7             5.125        -3.15          2.4 \r\n 1987          331           4.975         2.9          -1.8           8 \r\n 1987          332           3.925         1.1          -3.675         16 \r\n 1987          333           6.525         1.025        -3.25          6.125 \r\n 1987          334           6.175         0.65         -10.175        0 \r\n 1987          335           3.85          0            -7.425         0 \r\n 1987          336           4.175         4.55         -10.65         0 \r\n 1987          337           6.251         5.9          -0.875         0 \r\n 1987          338           5.8           2.825        -7.2           0 \r\n 1987          339           3.7           6.875        -2.75          0 \r\n 1987          340           3.2           7.65          0.8           1.025 \r\n 1987          341           2.625         8.3          -1.25          1.725 \r\n 1987          342           1.2           8.925         4.125         6.45 \r\n 1987          343           8.55          8.7          -1.15          0 \r\n 1987          344           6.775         9.1          -2.1           0 \r\n 1987          345           9.55          11.1          1.9           0 \r\n 1987          346           6.351         6.375        -0.225         0 \r\n 1987          347           7.075         4            -3.05          0 \r\n 1987          348           3.2           0.575        -3.425         0 \r\n 1987          349           3.575        -1.325        -5.025         1.225 \r\n 1987          350           6            -0.4          -7.1           0 \r\n 1987          351           6.675         0.55         -8.35          0 \r\n 1987          352           4.725         4            -4.85          0 \r\n 1987          353           1.925         2.75         -0.475         2.25 \r\n 1987          354           9.15          4.3          -3.875         0 \r\n 1987          355           6.825         4.875        -5.525         0 \r\n 1987          356           9.475         6.55         -1.475         0 \r\n 1987          357           2.875         5.575        -0.975         0 \r\n 1987          358           2.5           3.35         -2.425         0.675 \r\n 1987          359           4.9          -2.1          -7.45          0 \r\n 1987          360           8.925         2            -10.35         0 \r\n 1987          361           3.05          0.7          -6.5           9.05 \r\n 1987          362           3.525        -1.825        -7.575         0.7 \r\n 1987          363           3.575        -3.8          -13.25         0 \r\n 1987          364           5             1.925        -7.525         1.175 \r\n 1987          365           6.151         1.175        -13            0 \r\n 1988          1             7.325        -5.5          -19.875        0 \r\n 1988          2             9.25          1.275        -14.975        0 \r\n 1988          3             7.226        -1.725        -12.775        0 \r\n 1988          4             7.75         -5.275        -19.375        0 \r\n 1988          5             7.425        -13.725       -23.35         0 \r\n 1988          6             7.2          -13.8         -24.1          0 \r\n 1988          7             9.05         -7.425        -18.5          0 \r\n 1988          8             9.025        -9.5          -15.65         0 \r\n 1988          9             8.45         -11.025       -20.1          0 \r\n 1988          10            8.525        -4.175        -18.85         0 \r\n 1988          11            4.575         3.075        -7.875         0 \r\n 1988          12            7.2           0.75         -13.95         0 \r\n 1988          13            8.275        -4            -20.925        0 \r\n 1988          14            7.55          1.9          -11.975        0 \r\n 1988          15            9.45          7.025        -5.95          0 \r\n 1988          16            6.275         9.15         -0.5           0 \r\n 1988          17            7.575         6.625        -0.675         0 \r\n 1988          18            8.675         7.45         -2.25          0 \r\n 1988          19            2.025         3.8          -0.85          9.251 \r\n 1988          20            4.05         -0.175        -6.75          0.625 \r\n 1988          21            6.875        -4.9          -14.8          0 \r\n 1988          22            4.75          1.325        -11.375        0.65 \r\n 1988          23            6.35          7.5          -8.4           0.8 \r\n 1988          24            6.501         5.625        -12.3          0 \r\n 1988          25            8.9           1.675        -18.275        0 \r\n 1988          26            7.301        -6.45         -19.65         0 \r\n 1988          27            8.451         5.725        -10.5          0 \r\n 1988          28            10.226        7.7          -5.35          0 \r\n 1988          29            4.675         11.425       -0.15          0 \r\n 1988          30            3.85          11.075        2.675         0 \r\n 1988          31            7.525         7.125        -5.375         0 \r\n 1988          32            4.075        -6.325        -14.75         0 \r\n 1988          33            10.775       -6.2          -20.2          0 \r\n 1988          34            2.775        -5.25         -11.4          0.925 \r\n 1988          35            8.999        -5.025        -15.625        0 \r\n 1988          36            11.099       -12.275       -20.975        0 \r\n 1988          37            10.8         -6.95         -20.25         0 \r\n 1988          38            11.625       -3.625        -11.65         0 \r\n 1988          39            11.55         3.3          -11.15         0 \r\n 1988          40            12.15        -0.1          -13.1          0 \r\n 1988          41            5.475        -4.2          -19.275        8.8 \r\n 1988          42            6            -14.15        -26.95         0 \r\n 1988          43            3.425        -5.6          -20.65         2.525 \r\n 1988          44            5.676         0.675        -14.475        0 \r\n 1988          45            4.025         2.25         -7.475         0 \r\n 1988          46            8.351        -2.825        -18.95         0 \r\n 1988          47            10.9          7.25         -6.125         0 \r\n 1988          48            10.675        7.725        -4.75          0 \r\n 1988          49            14.125        9.175        -4.35          0 \r\n 1988          50            11.451        8.95         -3.7           0 \r\n 1988          51            14.25         1.975        -7.2           0 \r\n 1988          52            11.551        11.025       -7.825         0 \r\n 1988          53            11.501        9.9          -0.25          0 \r\n 1988          54            13.375        2.9          -8.475         0 \r\n 1988          55            16.6          1.8          -7.6           0 \r\n 1988          56            17.45         5.95         -8.15          0 \r\n 1988          57            17.45         15.475       -1.9           0 \r\n 1988          58            17.55         11.25        -3.5           0 \r\n 1988          59            15.3          12.775       -1.875         0 \r\n 1988          60            18.2          12.85        -3.9           0 \r\n 1988          61            15.5          15.2          0.35          0 \r\n 1988          62            13.125        9.4          -4.2           0 \r\n 1988          63            15.449        3.725        -5             0 \r\n 1988          64            16.625        5.325        -5.75          0 \r\n 1988          65            14.625        7.225        -2.525         0 \r\n 1988          66            16.775        13.2         -2.85          0 \r\n 1988          67            12.325        15.85         0.45          0 \r\n 1988          68            6.551         12.675       -0.7           0 \r\n 1988          69            19.025        12.4         -3.4           0 \r\n 1988          70            17.675        14.35        -0.1           0 \r\n 1988          71            19.3          17.175        2.275         0 \r\n 1988          72            7.351         8.4          -3.5           0.3 \r\n 1988          73            15.076       -0.65         -8.525         0 \r\n 1988          74            17.725       -0.375        -9.825         0 \r\n 1988          75            18.575        1.7          -10.125        0 \r\n 1988          76            14.425        5.5          -6.45          0 \r\n 1988          77            11.449        3.7          -1.85          0.65 \r\n 1988          78            19.674        6.875        -3.925         0 \r\n 1988          79            15.325        13.35        -1.275         0 \r\n 1988          80            20.15         15.05        -2.625         0 \r\n 1988          81            19.6          15.625       -2.95          0 \r\n 1988          82            20.2          23.625        3.625         0 \r\n 1988          83            20.4          18.3          1.525         0 \r\n 1988          84            6.425         20.375        9.325         0.7 \r\n 1988          85            17.95         16.65         2.225         0 \r\n 1988          86            22.325        10.875        1.55          0 \r\n 1988          87            22.075        21.275        0.55          0 \r\n 1988          88            5.475         17.275        8.725         0.3 \r\n 1988          89            17.199        7.275        -0.35          0 \r\n 1988          90            23.225        14.575       -1.075         0 \r\n 1988          91            21.175        14.85        -0.6           0 \r\n 1988          92            3.45          9.6           2.175         3.75 \r\n 1988          93            7             15.725        6.675         9.275 \r\n 1988          94            11.776        15.375        1.75          0 \r\n 1988          95            18.625        25.5          5.225         0 \r\n 1988          96            8.651         19.3          7.125         3.55 \r\n 1988          97            21.5          16.425        0.85          0 \r\n 1988          98            22.275        24.7          5.525         0 \r\n 1988          99            23.05         25.075        8.5           0 \r\n 1988          100           7.45          19.45         4.725         6.125 \r\n 1988          101           18.975        12.15        -0.15          0 \r\n 1988          102           25.05         15.45        -0.675         0 \r\n 1988          103           26.05         19.575        1.8           0 \r\n 1988          104           19.176        22            4.875         0 \r\n 1988          105           24.775        13.175       -1.2           0 \r\n 1988          106           26.25         13.9         -2.425         0 \r\n 1988          107           25.95         17.975       -0.3           0 \r\n 1988          108           19.798        19.2          4.825         0 \r\n 1988          109           26.825        12.175       -3.65          0 \r\n 1988          110           27.75         16.5         -2.375         0 \r\n 1988          111           26.35         20.425        4.85          0 \r\n 1988          112           7.325         16.425        1.6           0 \r\n 1988          113           2.851         14.375        1.925         2.25 \r\n 1988          114           11.475        12.75         0.6           0 \r\n 1988          115           23.151        20.4          2.15          0 \r\n 1988          116           19.424        20.1          6.825         3.85 \r\n 1988          117           5.501         15.625        6.075         8.975 \r\n 1988          118           24.826        15.15        -0.85          0 \r\n 1988          119           28.05         20.275        3.025         0 \r\n 1988          120           26.925        22.75         6.075         0 \r\n 1988          121           23.025        24            8.1           0 \r\n 1988          122           21.625        25.7          9.775         0 \r\n 1988          123           24.475        25.1          10.05         0 \r\n 1988          124           9.075         20.1          10.4          5.125 \r\n 1988          125           23.875        23.65         8.5           0 \r\n 1988          126           27.1          26.225        8.6           0 \r\n 1988          127           16.426        25.2          11.6          7.675 \r\n 1988          128           22.225        26.625        13.425        1.65 \r\n 1988          129           14.575        22.925        15.225        3.475 \r\n 1988          130           27            22.275        10.25         0 \r\n 1988          131           24.126        28.425        8.7           0 \r\n 1988          132           25.675        27.15         10.05         0 \r\n 1988          133           27.475        29.325        12.65         1.55 \r\n 1988          134           28.425        25.275        10.2          0 \r\n 1988          135           24.399        31.4          10.75         0 \r\n 1988          136           28.175        27.95         14.175        0 \r\n 1988          137           30.2          24.075        9.375         0 \r\n 1988          138           30.25         26.275        7.275         0 \r\n 1988          139           20.451        30.275        11.725        0 \r\n 1988          140           24.099        29.15         13.925        0 \r\n 1988          141           20.024        29.1          15            5.65 \r\n 1988          142           7.974         23.8          15.775        11.301 \r\n 1988          143           5.55          21.625        14.975        7.65 \r\n 1988          144           13.048        23.175        15.15         0 \r\n 1988          145           29.8          27.825        11.25         0 \r\n 1988          146           30.95         25.45         9.875         0 \r\n 1988          147           27.626        28.4          11.125        7.6 \r\n 1988          148           24.4          29.775        13.65         0 \r\n 1988          149           22.8          30.325        15.325        0 \r\n 1988          150           19.551        29.325        16.175        0 \r\n 1988          151           25.349        28.425        16.3          3.075 \r\n 1988          152           18.625        28.925        16.15         5.925 \r\n 1988          153           15.624        27.125        17.125        0.7 \r\n 1988          154           22.049        27.925        14.025        0 \r\n 1988          155           22.625        28.4          15.725        0 \r\n 1988          156           25.05         26.925        15.45         0.8 \r\n 1988          157           30.5          28            14            0 \r\n 1988          158           31.35         29.65         12.75         0 \r\n 1988          159           22.901        31.55         15.175        3.05 \r\n 1988          160           29.025        32.325        18.225        3.575 \r\n 1988          161           28.624        28.05         13.65         0 \r\n 1988          162           32.975        27.5          8.85          0 \r\n 1988          163           29.226        29.15         11.6          0 \r\n 1988          164           27.825        31.875        14.95         0 \r\n 1988          165           25.425        33.425        17.475        0 \r\n 1988          166           22.45         33.25         18.7          0 \r\n 1988          167           25.023        30.6          16.075        0 \r\n 1988          168           24.101        32.15         15.425        0 \r\n 1988          169           18.376        31.55         17.825        0.6 \r\n 1988          170           27.075        34.075        19.925        0 \r\n 1988          171           28.525        33.95         20.775        0 \r\n 1988          172           28.225        36.625        21.15         0 \r\n 1988          173           28.225        40.075        22.275        0 \r\n 1988          174           25.723        36.725        20.775        0 \r\n 1988          175           26.8          35.25         19.125        0 \r\n 1988          176           29.725        39.525        22.9          0 \r\n 1988          177           29.1          40.525        23.475        0 \r\n 1988          178           32.075        34.725        18.9          0 \r\n 1988          179           31.9          34.225        16.05         0 \r\n 1988          180           28.025        36.225        17.45         7.275 \r\n 1988          181           16.176        31.25         23.45         16.7 \r\n 1988          182           5.875         24.825        14.35         2.7 \r\n 1988          183           9.324         21.625        13.425        0 \r\n 1988          184           19.149        28.35         14.65         0 \r\n 1988          185           22.724        31.2          13.825        0 \r\n 1988          186           29.85         34.45         17.725        0 \r\n 1988          187           26.375        31.3          20.675        0 \r\n 1988          188           26.65         32.55         20.275        0 \r\n 1988          189           22.7          28.775        19.925        3.7 \r\n 1988          190           18.526        28.6          19.025        18.224 \r\n 1988          191           10.152        27.625        18.2          9.525 \r\n 1988          192           22.824        31.175        16.55         2.45 \r\n 1988          193           20.052        29.05         17.225        0 \r\n 1988          194           28.325        31.75         16.625        0 \r\n 1988          195           28.1          30.325        20.1          0 \r\n 1988          196           22.549        30.05         21.55         11.875 \r\n 1988          197           13.777        30.125        21.6          16.924 \r\n 1988          198           26.6          30.5          21.05         9.775 \r\n 1988          199           15.674        28.275        21            9.125 \r\n 1988          200           20.025        28.475        19.15         2.575 \r\n 1988          201           5.45          29.325        17.75         2.35 \r\n 1988          202           27.675        28.575        15.2          0 \r\n 1988          203           28.625        27.875        12.75         0 \r\n 1988          204           27.725        30.3          14.7          0 \r\n 1988          205           27.9          32.1          15.65         0 \r\n 1988          206           24.099        28.125        18.775        0 \r\n 1988          207           27.65         30.725        17.9          0 \r\n 1988          208           26.7          34.15         15.725        0 \r\n 1988          209           28.025        34.55         17.425        0 \r\n 1988          210           26.15         34.45         19.025        0 \r\n 1988          211           21.176        31.95         18.65         0 \r\n 1988          212           26.1          29.95         20.6          0 \r\n 1988          213           26.75         38.275        20.375        0 \r\n 1988          214           26.35         35.225        22.65         0 \r\n 1988          215           26.775        33.775        22.325        0 \r\n 1988          216           23.95         32.5          22.475        2.175 \r\n 1988          217           11.601        30.075        21.425        2.375 \r\n 1988          218           26.35         31.5          15.4          0 \r\n 1988          219           26.625        35.8          16.725        0 \r\n 1988          220           24.825        34.75         20.95         1.125 \r\n 1988          221           10.326        31.825        22.75         1.925 \r\n 1988          222           19.699        31            18.975        0 \r\n 1988          223           24.725        33.2          18.65         0 \r\n 1988          224           24.85         31.325        21.25         0 \r\n 1988          225           20.599        30.4          21.55         2.725 \r\n 1988          226           18.249        31.5          20.775        1.4 \r\n 1988          227           24.6          38.025        20.925        0 \r\n 1988          228           25.35         37.875        21.75         0 \r\n 1988          229           24.525        35.3          23.05         0 \r\n 1988          230           22.65         37.75         22.2          0 \r\n 1988          231           17.45         32.7          22.4          1.975 \r\n 1988          232           11.874        31.325        19.45         0 \r\n 1988          233           17            32.425        16.025        0 \r\n 1988          234           20.275        32.775        16.75         7.925 \r\n 1988          235           7.1           30.1          20.925        45.176 \r\n 1988          236           25.25         28.75         15.175        0 \r\n 1988          237           25.475        30.875        14.375        0 \r\n 1988          238           25.125        31.6          16.025        0 \r\n 1988          239           20.45         30.35         11.625        0 \r\n 1988          240           15.324        25.6          15.375        2.025 \r\n 1988          241           24.375        26.175        8.725         0 \r\n 1988          242           17.576        28.65         10.075        0 \r\n 1988          243           22.975        30.6          13.15         0 \r\n 1988          244           18.625        32.675        15.1          0 \r\n 1988          245           20.976        31.15         14.775        0.7 \r\n 1988          246           17.624        30.7          17.25         3.025 \r\n 1988          247           14.801        25.6          12.1          0.85 \r\n 1988          248           21.675        26.225        10.7          0 \r\n 1988          249           22.55         22.925        8.85          0 \r\n 1988          250           23.975        24.725        7.3           0 \r\n 1988          251           21.15         29.6          9.675         0 \r\n 1988          252           19.976        31.575        14.575        0 \r\n 1988          253           20.05         31.175        9.8           0 \r\n 1988          254           19.825        31.925        13.875        0 \r\n 1988          255           19.3          32.925        16.4          0 \r\n 1988          256           11.001        28.2          16.475        0 \r\n 1988          257           17.15         26.75         11.925        0 \r\n 1988          258           14.451        30.4          13.8          0 \r\n 1988          259           2.075         24.55         14.575        28.35 \r\n 1988          260           18.2          27.775        16.275        7.95 \r\n 1988          261           20.25         28.85         17.7          0 \r\n 1988          262           11.475        25.7          18.7          1.2 \r\n 1988          263           7.052         22.075        6.975         2.05 \r\n 1988          264           21.05         23.55         4.4           0 \r\n 1988          265           7.976         26.525        10.925        4.35 \r\n 1988          266           11.602        25.775        18.5          0 \r\n 1988          267           14.899        23.175        7.775         0 \r\n 1988          268           17.825        23.8          6.55          0 \r\n 1988          269           19.175        28.175        8.325         0 \r\n 1988          270           17.975        28.85         11.725        0 \r\n 1988          271           12.775        23.825        14.85         4.55 \r\n 1988          272           1.701         19.475        13.725        45.95 \r\n 1988          273           7.475         20.525        12.125        1.15 \r\n 1988          274           9.075         22.675        9.2           0 \r\n 1988          275           9.976         23.45         10.4          0 \r\n 1988          276           18.825        19.95         6.025         0 \r\n 1988          277           11.052        20.95         5.175         0 \r\n 1988          278           17.925        15.375        0.1           0 \r\n 1988          279           17.674        15.45        -1.7           0 \r\n 1988          280           12.473        15.85         1.525         0 \r\n 1988          281           17.75         16.775        0.425         0 \r\n 1988          282           7.874         18.45         2.5           0 \r\n 1988          283           16.524        20.35         3.175         0 \r\n 1988          284           17.45         20.4          6.2           0 \r\n 1988          285           17.2          16.375        2.1           0 \r\n 1988          286           16.25         17.55         1.225         0 \r\n 1988          287           15.85         22.725        3.575         0 \r\n 1988          288           15.1          26.825        10.425        0 \r\n 1988          289           12.45         26.125        11.1          0 \r\n 1988          290           11.25         22.15         8.7           0 \r\n 1988          291           6.026         18.05         10.725        0 \r\n 1988          292           14.5          17.075        0.6           0 \r\n 1988          293           4.275         12.175        2.05          1.025 \r\n 1988          294           4.5           13.35         2.575         2.925 \r\n 1988          295           14.675        16.125        3.725         0 \r\n 1988          296           13.175        20.35         1.575         0 \r\n 1988          297           14.7          16.9          5             1.75 \r\n 1988          298           12.125        15.8         -1.375         0 \r\n 1988          299           12.3          11.875        0.625         0 \r\n 1988          300           12.575        16.05        -1.8           0 \r\n 1988          301           8.575         14.25         5.725         0 \r\n 1988          302           12.45         7.75         -4.675         0 \r\n 1988          303           6.499         8.6          -3.2           0 \r\n 1988          304           11.5          9.675        -5.25          0 \r\n 1988          305           12.075        19.05        -0.5           0 \r\n 1988          306           11.1          16.25         2.95          0 \r\n 1988          307           11.575        16.65         0.975         0 \r\n 1988          308           8.075         19.475        4.95          0.925 \r\n 1988          309           9.025         16.925        6.7           0 \r\n 1988          310           4.95          12.175        3.025         0 \r\n 1988          311           13.2          10.75        -1.525         0 \r\n 1988          312           10.525        13.025        1.65          0 \r\n 1988          313           7.651         16.25        -0.05          0 \r\n 1988          314           3.5           10.425        4.15          0 \r\n 1988          315           11.7          8.725        -1.3           0 \r\n 1988          316           6.625         8.5          -3.4           3.25 \r\n 1988          317           3.225         8.925         0.65          15.95 \r\n 1988          318           11.925        16.35         1.825         0 \r\n 1988          319           7.65          14.15         0.7           0 \r\n 1988          320           2.7           19.425        8.925         26.651 \r\n 1988          321           6.176         11.85        -4.375         3.5 \r\n 1988          322           7.35          9.65         -4.75          0 \r\n 1988          323           7.975         12.825        2.575         0 \r\n 1988          324           5.125         8.475        -3.225         0 \r\n 1988          325           9.675         4.2          -4.975         0 \r\n 1988          326           9.35          8.575        -4.525         0 \r\n 1988          327           9.55          9.6          -3.65          1.025 \r\n 1988          328           9.325         14.825       -0.35          0 \r\n 1988          329           10.6          15.375        0.875         0 \r\n 1988          330           5.675         10.625       -1.45          0 \r\n 1988          331           2.875         4.65         -1.95          5.725 \r\n 1988          332           4.325         1.05         -4.525         0 \r\n 1988          333           8.3           3.675        -8.725         0 \r\n 1988          334           4.825         4.85         -2.3           1.925 \r\n 1988          335           5.45          4.825        -5.025         0 \r\n 1988          336           7.85          6.65         -5.075         0 \r\n 1988          337           10.05         13.325       -0.025         0 \r\n 1988          338           8.1           10.175       -2.15          0 \r\n 1988          339           7.75          5.2          -6.15          0 \r\n 1988          340           9.65          10.5         -3.575         0 \r\n 1988          341           9.7           12.225       -2.325         0 \r\n 1988          342           7.275         4.95         -3.375         0 \r\n 1988          343           7.05          1.5          -6.225         0 \r\n 1988          344           6.875         4.85         -5.95          0 \r\n 1988          345           7.775         0.85         -8.8           0 \r\n 1988          346           3.85         -5.875        -13.325        0.7 \r\n 1988          347           3.7           5.275        -10.5          0 \r\n 1988          348           6.575         8.75         -2.525         0 \r\n 1988          349           5.825         5.3          -2.2           0 \r\n 1988          350           8.025        -0.95         -11.775        0 \r\n 1988          351           7.051         3.475        -13.35         0 \r\n 1988          352           8.775         1.325        -9.325         0 \r\n 1988          353           7.6           9.175        -6.225         0 \r\n 1988          354           5.25          6.525        -1.6           0.95 \r\n 1988          355           7.225         6.3          -1.775         7.05 \r\n 1988          356           7.1           5.875        -3.625         0 \r\n 1988          357           7.725         13.15        -1.75          0 \r\n 1988          358           4.825         6.875        -3.65          0 \r\n 1988          359           7.45          2.825        -5.45          2.075 \r\n 1988          360           4.025         0.9          -7.725         0 \r\n 1988          361           1.825         5.575        -3.9           2.9 \r\n 1988          362           6.925         6.325        -9.275         0.825 \r\n 1988          363           8.15         -2.825        -13.275        0 \r\n 1988          364           8.9           3.875        -12.05         0 \r\n 1988          365           8.85          5.375        -7.475         0 \r\n 1988          366           8.725         5.7          -6.75          0 \r\n 1989          1             3.85          0.825        -5.75          0 \r\n 1989          2             7.95          0.175        -12.675        0 \r\n 1989          3             9.5           4.9          -5.65          0 \r\n 1989          4             9.525         9.45         -5.975         0 \r\n 1989          5             1.6           7.175        -0.175         6.875 \r\n 1989          6             4.7           4.875        -2.4           0 \r\n 1989          7             3.6           1.975        -9.55          0.8 \r\n 1989          8             7.675        -8            -15.4          0 \r\n 1989          9             7.625         3.2          -14.825        0 \r\n 1989          10            7.376         1.55         -11.125        0 \r\n 1989          11            3.325         3.75         -5.8           0 \r\n 1989          12            9.45          2.2          -8.325         0 \r\n 1989          13            10.45         6.1          -8.625         0 \r\n 1989          14            9.55          5.575        -3.375         0 \r\n 1989          15            9.9           6.575        -5.525         0 \r\n 1989          16            9.625         7.35         -6.45          0 \r\n 1989          17            8.725         11.375       -2.85          0 \r\n 1989          18            9.875         9.475         0.7           0 \r\n 1989          19            8.65          12.25        -1.35          0 \r\n 1989          20            10.225        4.1          -4.2           0 \r\n 1989          21            10.45         9.65         -3.2           0 \r\n 1989          22            10.5          12.375       -1.55          0 \r\n 1989          23            7.925         10.675       -1.525         0 \r\n 1989          24            5.501         9.125        -2.025         0.9 \r\n 1989          25            3.025         6.95         -2.175         2 \r\n 1989          26            9.101         5.575        -5.55          0 \r\n 1989          27            11.175        12.6         -2.35          0 \r\n 1989          28            3.2           5.7           0.675         15.676 \r\n 1989          29            4.9           5.2          -1.65          0.75 \r\n 1989          30            11.925        11           -2.725         0 \r\n 1989          31            12.275        15.75         1.275         0 \r\n 1989          32            11.55         4.75         -13.75         0 \r\n 1989          33            4.7          -11.075       -19.225        0 \r\n 1989          34            7.525        -18.4         -26.925        0 \r\n 1989          35            3.5          -18.75        -23.55         4.375 \r\n 1989          36            2.7          -16.475       -22.975        0.775 \r\n 1989          37            5.175        -8.225        -20.5          0 \r\n 1989          38            6.55         -2.5          -16.2          0 \r\n 1989          39            8.875        -6.525        -18.275        0 \r\n 1989          40            11.15        -1.6          -19.1          0 \r\n 1989          41            13.35         2.525        -13.525        0 \r\n 1989          42            14.225        0.9          -11.525        0 \r\n 1989          43            10.275        2.3          -11.5          0.9 \r\n 1989          44            10.175        1.1          -6.725         4.5 \r\n 1989          45            3.075        -1.05         -10.725        0 \r\n 1989          46            7.324         0.875        -8.525         0 \r\n 1989          47            11.775       -0.75         -14.2          0 \r\n 1989          48            10            0.225        -12.275        0 \r\n 1989          49            5            -0.775        -9.9           1.1 \r\n 1989          50            6.925        -4.175        -13.85         2.175 \r\n 1989          51            5.475        -0.9          -7.75          4.975 \r\n 1989          52            8.375        -1.475        -11.2          0 \r\n 1989          53            7.725        -7.575        -15.475        0 \r\n 1989          54            8.375        -4.7          -19.825        0 \r\n 1989          55            12.524        5.025        -10.475        0 \r\n 1989          56            16.575        11.475       -4.9           0 \r\n 1989          57            11.674        1.75         -6.925         0 \r\n 1989          58            11.9          1.025        -10.675        0 \r\n 1989          59            15.9         -1.35         -11.125        0 \r\n 1989          60            5.875        -2.4          -9.05          1.7 \r\n 1989          61            2.651         1.15         -10.925        2.775 \r\n 1989          62            1.5           3.3          -5.55          4.2 \r\n 1989          63            9.226        -0.75         -13.35         0 \r\n 1989          64            11.426       -6.675        -14.225        0 \r\n 1989          65            12.951       -0.875        -17.35         0 \r\n 1989          66            13.126        3.4          -10.125        0 \r\n 1989          67            14.251        8.375        -4.575         0 \r\n 1989          68            15.375        13.875       -1.95          0 \r\n 1989          69            18.025        19.725       -0.275         0 \r\n 1989          70            17.975        18.025        2.675         0 \r\n 1989          71            7.9           10.35         0.4           0 \r\n 1989          72            4             13.025       -1.95          0 \r\n 1989          73            7.676         15.475        0.975         0.8 \r\n 1989          74            18.225        4.9          -8.175         0 \r\n 1989          75            16.276        10.375       -3.4           0 \r\n 1989          76            4.9           1.35         -6.925         0 \r\n 1989          77            19.426        1.1          -10.775        0 \r\n 1989          78            8.45          4.275        -4.45          0 \r\n 1989          79            9.024         1.625        -2.5           0 \r\n 1989          80            19.9          3.575        -9.925         0 \r\n 1989          81            15.8          7.4          -4.575         0 \r\n 1989          82            18.35         15.925       -1.65          0 \r\n 1989          83            15.975        20.35         3.4           0 \r\n 1989          84            15.401        17.15        -0.8           0 \r\n 1989          85            17.025        22.075        10            0 \r\n 1989          86            17.775        23.35         13.25         0 \r\n 1989          87            18.125        20.25         12.325        0.85 \r\n 1989          88            13.651        21.475        4.025         0.7 \r\n 1989          89            6.8           14.275        4.15          0.4 \r\n 1989          90            20.2          11.5         -3.725         0 \r\n 1989          91            9.875         15.4          1.75          0 \r\n 1989          92            19.825        19.7          3.425         0 \r\n 1989          93            17.549        17.45         3.55          0 \r\n 1989          94            16.076        12.725        0.95          0 \r\n 1989          95            16.825        12.25        -2.975         0 \r\n 1989          96            11.249        10.25         2.2           1.675 \r\n 1989          97            12.301        13.925       -1.825         1 \r\n 1989          98            23.825        13.75        -1.6           0 \r\n 1989          99            21.524        7            -4             0 \r\n 1989          100           24.975        8.625        -6.725         0 \r\n 1989          101           23.525        15.475       -3.15          0 \r\n 1989          102           24.95         14.6         -3.2           0 \r\n 1989          103           20.3          20.65        -0.75          0 \r\n 1989          104           16.8          18.625        4.275         0 \r\n 1989          105           25.225        20.05         0.375         0 \r\n 1989          106           14.65         22.5          9.5           0 \r\n 1989          107           20.774        19.1          6.1           0 \r\n 1989          108           9             16.45         1.125         5.625 \r\n 1989          109           26.5          21.85         0.65          0 \r\n 1989          110           21.3          28.65         7.175         0 \r\n 1989          111           26.325        29.625        9.775         0 \r\n 1989          112           21.2          29.125        14.85         0 \r\n 1989          113           16.698        25.95         15.575        0 \r\n 1989          114           23.574        32.45         15.1          0 \r\n 1989          115           23.85         32.875        16.625        0 \r\n 1989          116           23.801        28.35         15.9          1.475 \r\n 1989          117           22.425        26.675        17.15         7.175 \r\n 1989          118           17.852        24.125        13.175        14.5 \r\n 1989          119           17.526        18.025        5.175         0 \r\n 1989          120           19            18.7          3.8           3.55 \r\n 1989          121           16.9          14.65         2.35          1.1 \r\n 1989          122           17.598        18.75         1.625         0.3 \r\n 1989          123           20.799        18.625        1.75          0 \r\n 1989          124           18.276        19.675        8.575         3.875 \r\n 1989          125           13.575        16.2          5.05          0 \r\n 1989          126           25.701        14.75        -2.15          0 \r\n 1989          127           27.15         23.2          1.2           0 \r\n 1989          128           22.226        28.375        8.45          0 \r\n 1989          129           27.35         20.5          6.25          0 \r\n 1989          130           29.925        24.325        5.9           0 \r\n 1989          131           28.349        23.675        6.9           0 \r\n 1989          132           28.5          25.1          6.275         0 \r\n 1989          133           27.674        26.85         7.525         0 \r\n 1989          134           24.2          23.975        9.525         0 \r\n 1989          135           25.05         27.65         8.85          0 \r\n 1989          136           21.524        27.825        11.9          0 \r\n 1989          137           12.124        24.075        13.65         1.225 \r\n 1989          138           9.901         22.9          13.025        5.8 \r\n 1989          139           20.975        27.775        11.9          0 \r\n 1989          140           31.025        27.125        9             0 \r\n 1989          141           16.548        24.525        11.625        0 \r\n 1989          142           26.475        26.875        10.975        1.1 \r\n 1989          143           25.875        27.1          12.45         1.35 \r\n 1989          144           15.375        28.1          18.425        0.6 \r\n 1989          145           25            26.725        8.925         0 \r\n 1989          146           25.624        22.1          9.325         0 \r\n 1989          147           30.25         24.925        6.45          0 \r\n 1989          148           5.6           24.7          9.4           18.701 \r\n 1989          149           26.025        31.325        16.8          1.75 \r\n 1989          150           24.575        27.575        18.225        0 \r\n 1989          151           10.875        24.975        13.25         0 \r\n 1989          152           17.998        25.475        10.725        0 \r\n 1989          153           26.624        26.275        12.125        8.15 \r\n 1989          154           27.599        25.575        14.575        18.925 \r\n 1989          155           24.424        23.975        10.9          0 \r\n 1989          156           25.325        27.775        12.1          0 \r\n 1989          157           24.9          27.925        13.4          0 \r\n 1989          158           24.074        25.625        14.875        8.65 \r\n 1989          159           26.376        23.975        14.275        16.325 \r\n 1989          160           26.05         23.85         7.325         0 \r\n 1989          161           12.449        25.875        12.425        4.25 \r\n 1989          162           12.825        23.375        15.1          8.775 \r\n 1989          163           25.275        27.975        15.275        0 \r\n 1989          164           25.875        25.45         11.1          0 \r\n 1989          165           13.85         20.8          9.425         0 \r\n 1989          166           30.575        22.875        9.85          0 \r\n 1989          167           30.8          26.7          9             0 \r\n 1989          168           13.325        29.825        12.775        10.675 \r\n 1989          169           18.699        28.5          15.225        0 \r\n 1989          170           31.825        32.65         14.45         0 \r\n 1989          171           30.175        35.25         17.875        0 \r\n 1989          172           19.876        35.175        21.1          52.601 \r\n 1989          173           13.675        25.775        15.475        9.05 \r\n 1989          174           26.875        28.825        14.45         0 \r\n 1989          175           5.975         26.85         17.4          36.125 \r\n 1989          176           24.775        25.8          18.15         24.15 \r\n 1989          177           24.55         25.65         18.275        4 \r\n 1989          178           24.525        28.05         17.05         0 \r\n 1989          179           28.625        31            15.8          0 \r\n 1989          180           28.325        30.325        16.725        0 \r\n 1989          181           20.951        31.1          16            0 \r\n 1989          182           21.249        28.45         18.05         3.4 \r\n 1989          183           26.275        33.125        18.45         0 \r\n 1989          184           27.75         31.975        19.025        0 \r\n 1989          185           27.551        37.225        21.375        0 \r\n 1989          186           31.275        37.05         19.475        0 \r\n 1989          187           30.325        39.3          19.625        0 \r\n 1989          188           24.601        34.325        22.925        0 \r\n 1989          189           27.9          33.025        22.2          0 \r\n 1989          190           29.075        39.875        21.15         0 \r\n 1989          191           29.25         34.775        21.825        0 \r\n 1989          192           18.025        29.5          21.9          0 \r\n 1989          193           20.3          28.425        21            1.15 \r\n 1989          194           27.5          31.675        19.525        0 \r\n 1989          195           15.076        31.35         17.675        0 \r\n 1989          196           6.874         26.05         15.175        20.149 \r\n 1989          197           19.347        29.4          15            2.175 \r\n 1989          198           18.7          29.425        15.7          9.6 \r\n 1989          199           21.65         23.625        17.75         29.449 \r\n 1989          200           22.85         26.175        14.35         0 \r\n 1989          201           27.6          28.95         14.05         0 \r\n 1989          202           25.925        28.975        15.675        0 \r\n 1989          203           18.825        25.875        14.55         1.55 \r\n 1989          204           19.675        24.15         15.4          1.75 \r\n 1989          205           22.925        28.55         15.65         0 \r\n 1989          206           22.075        27.325        17.6          0 \r\n 1989          207           24.824        28.6          18.875        0 \r\n 1989          208           28.5          33.2          19.4          0 \r\n 1989          209           26.35         30.525        19.85         25.149 \r\n 1989          210           14.477        28.1          20.575        16.274 \r\n 1989          211           18.548        27.625        21.2          4 \r\n 1989          212           19.6          28.8          19.575        0 \r\n 1989          213           24.925        31.225        17.3          0 \r\n 1989          214           20.975        30.05         17.825        0 \r\n 1989          215           14.725        29.275        20.95         0 \r\n 1989          216           27.125        33.3          21.4          0 \r\n 1989          217           26.55         32.55         20.85         0 \r\n 1989          218           16.976        27.5          14.525        0 \r\n 1989          219           26.15         25.975        8.725         0 \r\n 1989          220           25.7          28.8          11.8          0 \r\n 1989          221           27.475        29.95         13.45         0 \r\n 1989          222           26.025        30.025        14.6          0 \r\n 1989          223           23.625        29.8          14.875        0 \r\n 1989          224           20.575        30.95         16.1          0 \r\n 1989          225           21.2          30            17.575        4.475 \r\n 1989          226           13.175        26.375        15.55         3.125 \r\n 1989          227           16.374        28.425        13.45         0 \r\n 1989          228           22.775        30.475        14.225        0 \r\n 1989          229           23.575        30.35         13.875        0 \r\n 1989          230           24.7          31.25         14.025        0 \r\n 1989          231           15.876        26.5          18.625        16.325 \r\n 1989          232           23.9          31.45         15.475        0 \r\n 1989          233           18.249        27.15         18.4          3.325 \r\n 1989          234           20.175        28.1          19.95         5.4 \r\n 1989          235           21.1          30.45         19.075        6.425 \r\n 1989          236           11.5          30.1          16.375        0 \r\n 1989          237           14.575        26.15         16.6          7.525 \r\n 1989          238           14.527        29.3          19.725        23.025 \r\n 1989          239           7.1           29.375        19.375        12.45 \r\n 1989          240           10.4          27.7          19.2          6.525 \r\n 1989          241           20.65         25.9          19.35         0 \r\n 1989          242           20.049        27.4          16.675        0 \r\n 1989          243           19.499        28.25         19.725        0 \r\n 1989          244           18.874        26.725        18.25         0 \r\n 1989          245           24.175        28.3          13.8          0 \r\n 1989          246           10.274        25.7          17.25         50 \r\n 1989          247           17.025        27.45         16.175        9.825 \r\n 1989          248           11.674        27.4          15.55         0 \r\n 1989          249           16.7          27.65         19.475        7.575 \r\n 1989          250           9.301         26.025        20.325        81.326 \r\n 1989          251           3.75          24.85         19.875        47.175 \r\n 1989          252           11.775        21.3          10.35         14.2 \r\n 1989          253           15.826        20.875        7.325         0 \r\n 1989          254           18.85         17.65         9.725         0.825 \r\n 1989          255           6.875         13.75         6.35          2.225 \r\n 1989          256           16.274        17.3          4.425         0 \r\n 1989          257           21.199        20.925        5.175         0 \r\n 1989          258           22.65         21.5          6.1           0 \r\n 1989          259           21.9          25.1          7.675         0 \r\n 1989          260           21.7          27.8          11.6          0 \r\n 1989          261           21.275        27.575        15.025        0 \r\n 1989          262           20.55         27            13.15         0 \r\n 1989          263           20.075        27.5          13.225        0 \r\n 1989          264           18.075        27.65         12.6          0 \r\n 1989          265           17.475        22.1          10.525        0 \r\n 1989          266           20.2          14.725        0.2           0 \r\n 1989          267           20.05         17.775        2.1           0 \r\n 1989          268           19.425        23.275        4.05          0 \r\n 1989          269           19.325        19.95         3.375         0 \r\n 1989          270           18.825        21.65         5.3           0 \r\n 1989          271           18.525        26.025        6.275         0 \r\n 1989          272           18.35         27.3          10.975        0 \r\n 1989          273           18.075        27.1          9.55          0 \r\n 1989          274           19.125        28.475        11.475        0 \r\n 1989          275           17.7          22.075        4.65          0 \r\n 1989          276           16.875        15.425        0.525         0 \r\n 1989          277           9.975         19.225        2.2           0 \r\n 1989          278           6.8           17.3          11.85         21.826 \r\n 1989          279           17.6          17.475        4.25          0 \r\n 1989          280           8.9           12.85         0.4           1.825 \r\n 1989          281           17.25         19.375        1.75          0 \r\n 1989          282           16.375        24            5.75          0 \r\n 1989          283           17.075        20.65         2.8           0 \r\n 1989          284           16.625        29.7          10.775        0 \r\n 1989          285           16.05         24.9          7.625         0 \r\n 1989          286           15.625        28.6          9.6           0 \r\n 1989          287           12.301        27.875        10.925        0 \r\n 1989          288           12.251        27.525        14.475        4.475 \r\n 1989          289           5.725         21.25         5.375         13.001 \r\n 1989          290           13.175        8.65          0.875         0.85 \r\n 1989          291           9.95          7.6          -0.95          0 \r\n 1989          292           14            8.35         -4.85          0 \r\n 1989          293           14.025        14.85        -3.925         0 \r\n 1989          294           13.7          20.9          1.825         0 \r\n 1989          295           12.275        20.675        4.25          0 \r\n 1989          296           14.85         25.05         6.5           0 \r\n 1989          297           13.8          25.625        8.675         0 \r\n 1989          298           13.05         24.625        13.6          0 \r\n 1989          299           10.85         24.8          13.4          0 \r\n 1989          300           9.049         20.25         11.75         0 \r\n 1989          301           4.775         18.975        12.825        4.275 \r\n 1989          302           4.75          18.275        10.225        6.825 \r\n 1989          303           4.05          10.85         1.925         0.975 \r\n 1989          304           12.2          13.5         -3             0 \r\n 1989          305           5.975         8.425        -0.525         0 \r\n 1989          306           9.876         8.85         -5.425         0 \r\n 1989          307           7.201         11.7         -6.1           0 \r\n 1989          308           10.875        17.775       -0.35          0 \r\n 1989          309           6.726         14.75         3.125         0 \r\n 1989          310           5.3           11.475       -1.125         0 \r\n 1989          311           7.975         12.475       -2             0 \r\n 1989          312           9.826         10.7         -0.35          0 \r\n 1989          313           11.6          16.625       -2.35          0 \r\n 1989          314           10.7          12.625       -2.175         0 \r\n 1989          315           12.15         18.6          3.95          0 \r\n 1989          316           11.05         14.425       -3.4           0 \r\n 1989          317           11.45         15.325        5.95          0 \r\n 1989          318           10.375        13.375       -3.65          0 \r\n 1989          319           5.375         7.075        -4.35          0 \r\n 1989          320           10.625        0.425        -12.15         0 \r\n 1989          321           8.8           5.35         -9.175         0 \r\n 1989          322           6.351         3.25         -9.55          0 \r\n 1989          323           8.775         13.45        -2.175         0 \r\n 1989          324           11            12.925        0.375         0 \r\n 1989          325           9.9           6.375        -6.975         0 \r\n 1989          326           5.85          1.775        -6.425         0 \r\n 1989          327           9.95          5.375        -8.375         0 \r\n 1989          328           7.475         8.7          -5.2           0 \r\n 1989          329           5.301         8.4          -2.175         0 \r\n 1989          330           7.05          8            -3.725         0 \r\n 1989          331           3.25          6.15         -3.15          1.7 \r\n 1989          332           6.176        -1.35         -12.8          0.575 \r\n 1989          333           6.4           7.325        -10.275        0 \r\n 1989          334           9.1           8.575        -5.75          0 \r\n 1989          335           9.9           7.7          -4.3           0 \r\n 1989          336           9.6           3.125        -7.85          0 \r\n 1989          337           7.85          2.15         -15.4          0 \r\n 1989          338           9.025         10.6         -3.375         0 \r\n 1989          339           7.95          11.925        0.3           0 \r\n 1989          340           8.175         4.775        -5.825         2.925 \r\n 1989          341           4.575        -2.5          -7.85          0 \r\n 1989          342           6.325         1.575        -10.15         0 \r\n 1989          343           7.05          7.8          -5.825         0 \r\n 1989          344           3.55          0.5          -7.875         1.725 \r\n 1989          345           4.975        -6.575        -16.525        0 \r\n 1989          346           5.525        -1.925        -18            0 \r\n 1989          347           5.425        -2.2          -14            0 \r\n 1989          348           4.6          -12.6         -19.35         0 \r\n 1989          349           4.9          -14.225       -25.175        0 \r\n 1989          350           4.725        -8.775        -21.7          0 \r\n 1989          351           5            -8.75         -17.85         2.025 \r\n 1989          352           3.65         -9.15         -17.175        1.45 \r\n 1989          353           3.7          -10.775       -19.9          0 \r\n 1989          354           2.975        -10.95        -18.625        1.65 \r\n 1989          355           3.9          -17.45        -29.375        0 \r\n 1989          356           3.9          -19.1         -29.325        0 \r\n 1989          357           3.625        -14           -25.95         0 \r\n 1989          358           3.15         -0.55         -17.375        0 \r\n 1989          359           6.1           4.475        -6.45          0 \r\n 1989          360           4.3           1            -15.95         2.925 \r\n 1989          361           6.6           5.3          -4.55          0 \r\n 1989          362           6.1           6.025        -2.725         0 \r\n 1989          363           2.6           3.175        -6.475         0 \r\n 1989          364           3.5           1.1          -9.15          0 \r\n 1989          365           5.15          1.225        -8.875         0 \r\n 1990          1             7.825         1.95         -11.35         0 \r\n 1990          2             9.575         7.675        -4.775         0 \r\n 1990          3             7.125         6.35         -1.35          0 \r\n 1990          4             7.574         3.5          -6.925         1.05 \r\n 1990          5             7.774         3.95         -7.35          0 \r\n 1990          6             7.674         4.125        -10.1          0 \r\n 1990          7             8.724         6.5          -5.625         0 \r\n 1990          8             5.15          7.75         -3.525         0 \r\n 1990          9             7.226         6.35         -0.325         0 \r\n 1990          10            9.225         11.425       -1.4           0 \r\n 1990          11            9.4           8.25         -1.35          0 \r\n 1990          12            9.125         0.4          -6.55          0 \r\n 1990          13            8.95          5.125        -7.95          0 \r\n 1990          14            8.275         9.2          -3.5           0 \r\n 1990          15            8.7           11.025        0.15          0 \r\n 1990          16            6.725         9.675         1.575         0 \r\n 1990          17            4.85          7.375        -2.45          0.5 \r\n 1990          18            9.375         4.675        -4.5           0 \r\n 1990          19            5.225         2.775        -3.8           0 \r\n 1990          20            3.6           2.55         -3.925         17.451 \r\n 1990          21            4.3           2.85         -7.75          0 \r\n 1990          22            4.976         8.225        -3.275         0 \r\n 1990          23            8.051         9.325        -2.5           0 \r\n 1990          24            5.225         6.425        -2.25          1.125 \r\n 1990          25            7.45          4.175        -7.05          0 \r\n 1990          26            8.775         10.2         -4.5           0 \r\n 1990          27            9             4.75         -2.6           0 \r\n 1990          28            12.35         7.45         -5.925         0 \r\n 1990          29            12.1          10.075       -6.3           0 \r\n 1990          30            11.2          4.9          -6.425         0 \r\n 1990          31            8.7           10.425       -6.9           0 \r\n 1990          32            7.25          5.225        -7.7           0 \r\n 1990          33            3.6           0.15         -10.2          1.9 \r\n 1990          34            6.8           2.15         -8.6           1.5 \r\n 1990          35            10.701        9            -7.15          0 \r\n 1990          36            12.475        10.225       -0.625         0 \r\n 1990          37            10.724        9.175        -1.75          0 \r\n 1990          38            13.1          12.975       -2.1           0 \r\n 1990          39            9.65          9.55         -0.7           0 \r\n 1990          40            13.55         8.275        -4             0 \r\n 1990          41            11.625        9.675        -3.575         0 \r\n 1990          42            12.625        13.825       -1.75          0 \r\n 1990          43            11            18.925        2.075         0 \r\n 1990          44            8.8           12.275       -6.95          0 \r\n 1990          45            3.175        -3.475        -9.65          3.025 \r\n 1990          46            3.075        -0.775        -7.6           3.275 \r\n 1990          47            7.45         -3.55         -12.025        0 \r\n 1990          48            7.6          -0.8          -13.2          0 \r\n 1990          49            9.6           1.625        -5.975         0 \r\n 1990          50            14.6          2.2          -9.575         0 \r\n 1990          51            14.525        5.925        -9.1           0 \r\n 1990          52            9.5           8.45         -3.9           0 \r\n 1990          53            7.375         6.375        -1             0 \r\n 1990          54            13.975        11.3         -5.05          0 \r\n 1990          55            17.1          4.575        -8.95          0 \r\n 1990          56            6.2          -0.375        -9.675         0 \r\n 1990          57            16.15         9.475        -9.05          0 \r\n 1990          58            14.55         3.55         -3.9           0.4 \r\n 1990          59            15.799        7.175        -6.475         0 \r\n 1990          60            16.65         9.5          -4.675         0 \r\n 1990          61            16.575        12.775       -2.4           0 \r\n 1990          62            14.451        7.225        -6.1           0 \r\n 1990          63            14.925        14.425       -2.85          0 \r\n 1990          64            11.651        11.9         -0.875         0 \r\n 1990          65            3.225         5.9          -1.825         1.6 \r\n 1990          66            2.025         2.325        -1.125         20.924 \r\n 1990          67            5             7.7           1.35          7.35 \r\n 1990          68            16.049        17.275       -0.05          0 \r\n 1990          69            5.55          18.25         5.325         6.55 \r\n 1990          70            5.325         19.625        14.5          2.55 \r\n 1990          71            19.375        22.75         9.75          0 \r\n 1990          72            5.85          18.975        13.05         29.124 \r\n 1990          73            5.2           15.9          4.2           15.175 \r\n 1990          74            4.15          6.575        -2.125         9.275 \r\n 1990          75            8.051         7.05         -1.65          0 \r\n 1990          76            16.3          10.6         -0.625         0 \r\n 1990          77            13.676        6.625        -2             0 \r\n 1990          78            21.25         5.325        -6.675         0 \r\n 1990          79            20.425        15.175       -3.05          0 \r\n 1990          80            21.4          21.05         2.25          0 \r\n 1990          81            6.775         14.25         4.55          0 \r\n 1990          82            7.299         2.825        -5.275         0 \r\n 1990          83            12.298        1.325        -6             0 \r\n 1990          84            18.749        7.675        -5.65          0 \r\n 1990          85            23.25         9.35         -4.475         0 \r\n 1990          86            20.1          12.675       -1.975         0 \r\n 1990          87            5.8           7.725         1.625         2.25 \r\n 1990          88            4.95          8.875         0.55          4.5 \r\n 1990          89            10.523        14           -0.95          0 \r\n 1990          90            6.925         13            4.775         3.475 \r\n 1990          91            18.7          16.075        2.4           0 \r\n 1990          92            22.975        11.45        -4.15          0 \r\n 1990          93            23.2          15.675       -3.65          0 \r\n 1990          94            22.475        16.3          3.275         0 \r\n 1990          95            19.999        9.875        -1.825         0 \r\n 1990          96            24.725        6.65         -5.35          0 \r\n 1990          97            22.65         15.3         -4.45          0 \r\n 1990          98            21.475        20.025        1.8           0 \r\n 1990          99            4.75          15.925        5.525         4.8 \r\n 1990          100           15.95         12.875        1.45          0 \r\n 1990          101           20.026        8.5          -5.65          0 \r\n 1990          102           16.1          12.35        -4.225         3.85 \r\n 1990          103           4.6           10.9          0.15          3.3 \r\n 1990          104           23.675        18.875       -1.15          0 \r\n 1990          105           26.15         16.15         1.8           1.1 \r\n 1990          106           5.25          16.575        3.275         3.85 \r\n 1990          107           24.625        12.4         -5.025         0 \r\n 1990          108           11.85         14.775        1.475         0 \r\n 1990          109           8.95          20.75         4.55          0 \r\n 1990          110           15.449        23.475        11.225        0.4 \r\n 1990          111           22.675        24.675        10.925        0 \r\n 1990          112           25.025        24.575        10.925        0 \r\n 1990          113           19.3          25.1          14.975        0 \r\n 1990          114           19.15         24.175        15.725        0 \r\n 1990          115           14.099        23.575        14.9          0 \r\n 1990          116           18.025        23.625        15.95         0 \r\n 1990          117           7.899         19.9          13.45         1.775 \r\n 1990          118           24.925        17.025       -0.6           0.4 \r\n 1990          119           8.3           15.375        7.125         0.4 \r\n 1990          120           25.149        16.625       -0.075         0 \r\n 1990          121           26.824        15.9          2.05          0 \r\n 1990          122           21.3          18.15         3.5           0 \r\n 1990          123           6.924         13.125        6.45          5.975 \r\n 1990          124           16.549        17.725        3.2           11.501 \r\n 1990          125           17.176        20.025        6             0 \r\n 1990          126           28.7          22.4          6.225         0 \r\n 1990          127           29.775        26.1          9.4           0 \r\n 1990          128           17.774        23.475        11.95         0 \r\n 1990          129           5.925         18.5          8.9           29.251 \r\n 1990          130           28.525        16.3          1.9           0 \r\n 1990          131           13.749        17.7          5.625         4.225 \r\n 1990          132           5.949         13.825        6.5           8.6 \r\n 1990          133           21.75         19.55         5.2           0 \r\n 1990          134           22.2          23.575        9.8           0 \r\n 1990          135           11.1          21.975        11.525        7.075 \r\n 1990          136           16.15         20.375        10.7          0 \r\n 1990          137           29.3          19.975        6.45          0 \r\n 1990          138           27.725        24.85         9.05          4.825 \r\n 1990          139           14.303        23.175        13.575        13.401 \r\n 1990          140           8.301         19.575        4.5           0 \r\n 1990          141           9.376         20.175        7.525         0 \r\n 1990          142           26.975        23.525        6.65          0 \r\n 1990          143           16.725        24.575        12.75         20.851 \r\n 1990          144           10.851        23.325        13.375        12.526 \r\n 1990          145           11.926        24.9          13.875        7.7 \r\n 1990          146           17.324        24.75         13.65         0 \r\n 1990          147           21.375        22.875        11.825        0 \r\n 1990          148           25.875        23.375        10.625        0 \r\n 1990          149           25.875        24.875        11.65         0 \r\n 1990          150           16.024        20.6          13.675        0 \r\n 1990          151           10.224        22.525        9.475         0 \r\n 1990          152           18.6          25.775        14.675        0 \r\n 1990          153           9.501         23.875        16.075        4.4 \r\n 1990          154           21.926        21.5          11.775        0 \r\n 1990          155           27.975        24.875        5.575         0 \r\n 1990          156           23.124        28.325        12.425        0 \r\n 1990          157           24.824        25.975        13.95         11.2 \r\n 1990          158           9.8           25.175        13.05         8.55 \r\n 1990          159           14.7          28.55         15.25         0 \r\n 1990          160           30.75         30.35         14.425        0 \r\n 1990          161           20.898        29.975        16.5          0 \r\n 1990          162           23.85         28.825        17.075        0 \r\n 1990          163           18.751        29.525        21.2          16.5 \r\n 1990          164           20.525        27.35         21.275        14.4 \r\n 1990          165           23.35         27.475        19.375        12.525 \r\n 1990          166           21.575        29.025        19.525        19.1 \r\n 1990          167           15.427        28.925        20.75         31.7 \r\n 1990          168           31.65         29.775        21.05         7.55 \r\n 1990          169           30.9          31.95         16.45         0 \r\n 1990          170           18.251        29.2          19.3          6.525 \r\n 1990          171           29.424        28.15         17.85         11.15 \r\n 1990          172           7.652         26.725        16.45         11 \r\n 1990          173           24.951        23.175        12.2          2.925 \r\n 1990          174           28.301        26.45         11.9          0 \r\n 1990          175           27            29.175        14.5          0 \r\n 1990          176           25.025        31.575        17.35         0 \r\n 1990          177           28.775        31            19.5          0 \r\n 1990          178           28            32.375        19.275        0 \r\n 1990          179           29.15         30.75         22.2          0 \r\n 1990          180           23.523        32.025        22.725        0 \r\n 1990          181           25.249        30.1          22.825        0 \r\n 1990          182           26.975        31.825        20.7          0 \r\n 1990          183           24.176        32.625        20.475        0 \r\n 1990          184           29.55         35.6          22.25         0 \r\n 1990          185           28.85         36.6          23.45         0 \r\n 1990          186           19.249        31.35         17.925        14.374 \r\n 1990          187           11.824        28.375        17.375        0 \r\n 1990          188           26.701        31.925        21.3          0 \r\n 1990          189           28.3          34.125        22.15         5 \r\n 1990          190           23.075        29.95         20.275        5.3 \r\n 1990          191           6.925         28.3          19.65         15.724 \r\n 1990          192           22.449        26.35         16.65         0 \r\n 1990          193           7.675         22.975        14.725        8.825 \r\n 1990          194           26.05         23.625        11.6          0 \r\n 1990          195           28.575        25.5          10.825        0 \r\n 1990          196           29.425        28.625        12.5          0 \r\n 1990          197           27.125        30.875        18.575        0 \r\n 1990          198           27.375        30.85         19.225        0 \r\n 1990          199           25.076        28.45         19.925        4.2 \r\n 1990          200           14.626        28.75         20.45         8.925 \r\n 1990          201           12.001        27            19.5          3.9 \r\n 1990          202           11.449        26.575        16.9          2.35 \r\n 1990          203           24.2          26.15         14.55         0 \r\n 1990          204           24.076        26.25         13.95         2.55 \r\n 1990          205           21.975        27.425        14.725        37.398 \r\n 1990          206           6.127         26.525        17.8          43.723 \r\n 1990          207           16.375        27            19.7          16.524 \r\n 1990          208           24.5          29.975        21.2          0 \r\n 1990          209           16.699        28.725        21.275        4.2 \r\n 1990          210           27.125        28.575        18.9          0 \r\n 1990          211           23.175        26.45         16.45         0 \r\n 1990          212           25.425        26.8          12.775        0 \r\n 1990          213           24.725        27.325        14.025        0 \r\n 1990          214           13.326        27.775        17.575        10.15 \r\n 1990          215           9.875         27.05         20.55         6.525 \r\n 1990          216           27.15         26.225        18.95         0 \r\n 1990          217           26.774        24.9          11.925        0 \r\n 1990          218           27.75         25.475        11.35         0 \r\n 1990          219           27.05         24.975        11.525        0 \r\n 1990          220           27.225        26.475        11.875        0 \r\n 1990          221           26.95         28.65         14.3          0 \r\n 1990          222           15.8          27.45         17.7          8.075 \r\n 1990          223           19.7          27.35         17.35         11.225 \r\n 1990          224           15.098        25.375        17.45         8.65 \r\n 1990          225           23.575        26.6          13.55         0 \r\n 1990          226           20.7          28            15.05         0 \r\n 1990          227           19.124        27.45         17.825        0 \r\n 1990          228           16.026        28.4          19.55         0 \r\n 1990          229           24.85         31.575        20.875        0 \r\n 1990          230           25.2          32            20.975        0 \r\n 1990          231           13.076        28.2          21.1          4.5 \r\n 1990          232           11.875        27.2          18.725        3 \r\n 1990          233           14.95         28.2          17.95         0 \r\n 1990          234           14.076        28.425        17.25         0 \r\n 1990          235           23            29.9          18.6          5.825 \r\n 1990          236           15.2          28.675        21.15         7.525 \r\n 1990          237           23.075        31.425        21.1          2.35 \r\n 1990          238           23.9          33.7          21.75         0 \r\n 1990          239           23.65         34.925        21.925        0 \r\n 1990          240           18.851        33.5          20.975        0 \r\n 1990          241           23.425        30.05         18.6          0 \r\n 1990          242           23.475        32.725        18.45         0 \r\n 1990          243           22.725        35.525        19.55         0 \r\n 1990          244           20.876        32.225        20.55         5.025 \r\n 1990          245           8.176         30            20.95         5.05 \r\n 1990          246           21.325        32.775        18.95         0 \r\n 1990          247           23.9          34.925        21.575        0 \r\n 1990          248           23.475        34.15         21.525        0 \r\n 1990          249           23.325        36.45         21.975        0 \r\n 1990          250           14.8          33.425        20.325        0 \r\n 1990          251           20.025        31.45         17.025        0 \r\n 1990          252           23.025        33.625        15.9          0 \r\n 1990          253           21.925        33.2          16.95         0 \r\n 1990          254           21.675        29.625        16.15         0 \r\n 1990          255           22.35         32.775        16.525        0 \r\n 1990          256           19.45         32.375        17.3          0 \r\n 1990          257           21.85         28.1          14.35         0 \r\n 1990          258           21.7          30.775        11.15         0 \r\n 1990          259           20.95         23.8          8.425         0 \r\n 1990          260           12.175        21.45         8             0.7 \r\n 1990          261           3.8           19            11            16.3 \r\n 1990          262           13.874        19.75         10.475        0 \r\n 1990          263           8.225         22.7          10.625        0 \r\n 1990          264           17.6          22.475        11.2          0 \r\n 1990          265           17.3          18.5          9.1           0 \r\n 1990          266           18.925        17.35         2.375         0 \r\n 1990          267           19.05         26            4.725         0 \r\n 1990          268           19.825        29.15         10.575        0 \r\n 1990          269           19.425        31.1          12.35         0 \r\n 1990          270           6.801         30            13.675        1.3 \r\n 1990          271           15.775        24.55         11.15         0 \r\n 1990          272           5.05          17.375        9.05          0.7 \r\n 1990          273           16.6          20.825        5.075         0 \r\n 1990          274           17.7          24.25         8.875         0 \r\n 1990          275           13.1          25.95         12.075        4.375 \r\n 1990          276           13.326        21.05         10.45         25.901 \r\n 1990          277           18.45         23.95         7.825         0 \r\n 1990          278           18.825        30.975        13.75         0 \r\n 1990          279           17.2          25.55         12.6          0 \r\n 1990          280           13.2          16.475        3.55          0 \r\n 1990          281           4.2           10.75         2.525         4.35 \r\n 1990          282           7.575         9.775         0.875         0 \r\n 1990          283           16.575        14.75        -1.7           0 \r\n 1990          284           16.55         21.225        2.95          0 \r\n 1990          285           16.425        18.15         1.9           0 \r\n 1990          286           12.301        22.375        4.65          0 \r\n 1990          287           15.275        18.925        5.525         0 \r\n 1990          288           11.826        19.825        4.025         0 \r\n 1990          289           13.3          25.825        6.9           0 \r\n 1990          290           3.675         21.625        4.2           0.9 \r\n 1990          291           14.3          12.45        -2.45          0 \r\n 1990          292           14.4          18.975        2.3           0 \r\n 1990          293           5.65          17.975        8.15          3.025 \r\n 1990          294           13.7          12.4         -0.125         3.875 \r\n 1990          295           13.3          18.3          0.125         0 \r\n 1990          296           11.425        20.925        4.575         0 \r\n 1990          297           12.775        15            2.7           0 \r\n 1990          298           13.15         16.15        -1.225         0 \r\n 1990          299           13.75         21.6          2.225         0 \r\n 1990          300           13.225        16.4          8.125         0 \r\n 1990          301           12.6          16.375       -0.1           0 \r\n 1990          302           13.35         24.85         4.625         0 \r\n 1990          303           13.075        23.1          9.025         0 \r\n 1990          304           13.05         25.3          7.925         0 \r\n 1990          305           10.076        25.125        11.9          0 \r\n 1990          306           4.325         22.875        13.3          0 \r\n 1990          307           2.275         13.975        0.925         22.151 \r\n 1990          308           6.825         2.5          -1.825         0 \r\n 1990          309           10.8          6.575        -5.25          0 \r\n 1990          310           2.275         5.8          -1.05          9.975 \r\n 1990          311           6.652         4.55         -8.475         0 \r\n 1990          312           2.375         5.6          -4.775         2.75 \r\n 1990          313           10.626        10.5         -2.775         0 \r\n 1990          314           9.3           13.7         -1             0 \r\n 1990          315           10.4          15.8          0.55          0 \r\n 1990          316           10.475        14.5         -1.975         0 \r\n 1990          317           11.275        15.2          0.725         0 \r\n 1990          318           11.25         21.6          6.825         0 \r\n 1990          319           10.5          21.55         9.425         0 \r\n 1990          320           9.276         16.65         2.35          0 \r\n 1990          321           8.25          10.725       -1.525         0 \r\n 1990          322           9.775         15.35         1.825         0 \r\n 1990          323           9.05          14.85         2.25          0 \r\n 1990          324           2.825         18.375        6.225         0 \r\n 1990          325           9.625         18.85         7.775         0 \r\n 1990          326           10.075        14.725        0.425         0 \r\n 1990          327           7.75          13.8          2.725         0 \r\n 1990          328           7.075         17.875        1.55          0 \r\n 1990          329           8.45          12.275       -1.9           0 \r\n 1990          330           3.7           16.025       -0.35          2.975 \r\n 1990          331           2.025         9.5          -4.575         1.45 \r\n 1990          332           9.8           6.125        -7.4           0 \r\n 1990          333           9.225         8.025        -5.9           0 \r\n 1990          334           9.425         12.325       -1.525         0 \r\n 1990          335           9.225         7.4          -0.7           0 \r\n 1990          336           3.25          2.7          -5.675         3.275 \r\n 1990          337           2.875        -1.45         -7.825         7.275 \r\n 1990          338           3.7          -1.825        -16.275        0 \r\n 1990          339           4.15          3.5          -7.675         0 \r\n 1990          340           6.7           2.55         -7.9           0 \r\n 1990          341           5.7           6.075        -5.3           0 \r\n 1990          342           7.45          9.475        -2.1           0 \r\n 1990          343           8.675         10.075       -1.125         0 \r\n 1990          344           8.675         11.5         -0.45          0 \r\n 1990          345           9.55          13.025       -1.75          0 \r\n 1990          346           3.975         8.2          -1.4           0 \r\n 1990          347           7.55          2.35         -5.85          0 \r\n 1990          348           2.3           3.6          -5.175         1.625 \r\n 1990          349           3.05          3.5          -2.575         1.45 \r\n 1990          350           6.3           4.3          -4.875         1.375 \r\n 1990          351           3.55          2.3          -3.975         7.65 \r\n 1990          352           6.25          3.25         -8.3           0 \r\n 1990          353           5.2           1.5          -5.525         0 \r\n 1990          354           6.3          -3.7          -15.775        1.9 \r\n 1990          355           5.849        -14.35        -20.375        0.8 \r\n 1990          356           5.85         -14.9         -22.5          0 \r\n 1990          357           6.3          -10           -19.325        0 \r\n 1990          358           6.451        -2.75         -15.45         0 \r\n 1990          359           6.575        -6.4          -14.925        0 \r\n 1990          360           5            -8.9          -17.65         0 \r\n 1990          361           8.1          -1.925        -14.35         0 \r\n 1990          362           2.975         0.025        -8.55          0 \r\n 1990          363           7.099        -0.525        -20.45         0 \r\n 1990          364           5            -15.675       -23            1.95 \r\n 1990          365           7.124        -4.1          -19.175        0 \r\n 1991          1             9.175        -0.15         -12.9          0 \r\n 1991          2             5.525        -5.65         -19.2          0 \r\n 1991          3             5.9          -8.8          -18.4          0 \r\n 1991          4             4.45         -6.925        -15.85         0.4 \r\n 1991          5             6            -6.575        -13.5          14.676 \r\n 1991          6             5.051        -11.825       -20.575        0 \r\n 1991          7             7.65         -11.475       -24.875        0 \r\n 1991          8             4.325        -5.65         -15.375        0 \r\n 1991          9             7.326        -9.3          -20.875        0 \r\n 1991          10            3.925        -6.45         -17.875        3.825 \r\n 1991          11            6.175        -5.5          -12.825        2.2 \r\n 1991          12            6.2          -5.25         -17.875        0 \r\n 1991          13            7.85          2.625        -13.6          0 \r\n 1991          14            9.6           2            -6.225         0 \r\n 1991          15            5.275        -1.75         -7.2           0 \r\n 1991          16            4.775        -1.375        -11.525        0 \r\n 1991          17            5.675        -1.25         -8.375         0 \r\n 1991          18            8.65          4.725        -8.95          0 \r\n 1991          19            6.851         6.1          -3.55          0 \r\n 1991          20            5.751        -1.025        -12.7          0 \r\n 1991          21            6.676        -8.225        -18.8          0 \r\n 1991          22            5.376         1.9          -13.975        0 \r\n 1991          23            7.45         -0.475        -6.6           0 \r\n 1991          24            6.951        -2.975        -13.55         0 \r\n 1991          25            5.425        -7.8          -13.25         3.3 \r\n 1991          26            5.825        -1.925        -15.25         0 \r\n 1991          27            6.275         0.75         -12.325        0 \r\n 1991          28            10.775       -0.775        -9.575         0 \r\n 1991          29            4.9          -8.9          -15.675        0.6 \r\n 1991          30            5.601        -0.45         -17.85         0 \r\n 1991          31            7.55          3.9          -12.825        0 \r\n 1991          32            5.375         8.025        -5.075         0 \r\n 1991          33            7.825         9.675        -1.025         0 \r\n 1991          34            8.026         12.225        0.625         0 \r\n 1991          35            10.35         13.275       -0.475         0 \r\n 1991          36            12.9          13.325       -1.8           0 \r\n 1991          37            9.201         10.45        -2.375         0 \r\n 1991          38            11.026        9.025        -4.25          0 \r\n 1991          39            11.776        13.35        -2.45          0 \r\n 1991          40            10.7          8.925        -1.475         0 \r\n 1991          41            12.9          8.1          -4.025         0 \r\n 1991          42            10.826        4.55         -4.55          0 \r\n 1991          43            12.65         9.5          -6.6           0 \r\n 1991          44            7.5           11.025       -0.875         0 \r\n 1991          45            11.35         4.8          -8.925         0 \r\n 1991          46            13.4         -5.725        -17.4          0 \r\n 1991          47            10.1          7.525        -10.15         0 \r\n 1991          48            10.8          6.375        -1.425         0 \r\n 1991          49            3.85          4.55         -0.825         8.5 \r\n 1991          50            11.326        4.3          -6.55          0 \r\n 1991          51            15.375        15.225       -2.825         0 \r\n 1991          52            14.65         18.475        1.6           0 \r\n 1991          53            14.2          6.975        -3.5           0 \r\n 1991          54            9.675         8.35         -4.65          0 \r\n 1991          55            14.9          2.375        -9             0 \r\n 1991          56            11.1          1.25         -7.55          0 \r\n 1991          57            8.15          1.8          -4.8           0.3 \r\n 1991          58            12.85         6.925        -5.325         0 \r\n 1991          59            17.05         12.6         -2.625         0 \r\n 1991          60            3.925         14.875        6.125         27.349 \r\n 1991          61            6.05          7.025        -9             4.425 \r\n 1991          62            12.35         2.1          -9.225         0 \r\n 1991          63            16.55         12.95        -3.975         0 \r\n 1991          64            10.124        22.3          4.475         0 \r\n 1991          65            16.525        13.45        -4.525         0 \r\n 1991          66            17.35         6.175        -6.6           0 \r\n 1991          67            13.675        11.65        -2.525         0 \r\n 1991          68            19.4          10.025       -4.25          0 \r\n 1991          69            10.225        16.225       -1.7           0 \r\n 1991          70            16.425        17.95         2.1           0 \r\n 1991          71            2.625         11.9          1.9           10.275 \r\n 1991          72            3.2           0.5          -2.6           1.75 \r\n 1991          73            10.875        3.675        -8.35          0 \r\n 1991          74            12.6          6.55         -4.425         0 \r\n 1991          75            7.025         8.65         -1.925         1.65 \r\n 1991          76            4.475         6.05          0.75          14.725 \r\n 1991          77            12.025        11.725       -1.375         0 \r\n 1991          78            19.95         16            0.2           0 \r\n 1991          79            13.002        20.6          6.2           3.45 \r\n 1991          80            19.3          19.8          4.45          4.3 \r\n 1991          81            7.426         18.525        6.875         12.175 \r\n 1991          82            9.802         13.475        1.825         1.25 \r\n 1991          83            19.825        18.5          1.125         0 \r\n 1991          84            14.35         22.45         4.975         0 \r\n 1991          85            19.625        26.975        14.85         0 \r\n 1991          86            8.726         19.65         0.8           15.05 \r\n 1991          87            21.675        13.625       -2.975         0 \r\n 1991          88            23.175        5.925        -5.75          0 \r\n 1991          89            19.076        9.925        -6.75          0 \r\n 1991          90            20.45         16.175        0.775         0 \r\n 1991          91            20.4          19.25         1.925         0 \r\n 1991          92            17.324        20.45         4.3           0 \r\n 1991          93            13.975        17.675        7.8           0 \r\n 1991          94            20.2          22.6          6.85          0 \r\n 1991          95            20.675        27.1          9.925         0 \r\n 1991          96            21.425        27.9          11.95         0 \r\n 1991          97            19            24.625        12.775        0 \r\n 1991          98            3.3           20.3          12.5          9.35 \r\n 1991          99            14.875        13.1          3.7           0 \r\n 1991          100           19.975        13.425       -0.675         3.95 \r\n 1991          101           3.65          10.725        3.95          23.751 \r\n 1991          102           8.726         20.275        5.075         12.9 \r\n 1991          103           7.976         20.7          9.725         12.35 \r\n 1991          104           14.749        16.175        6.3           23.451 \r\n 1991          105           24.825        17.4          3.15          0 \r\n 1991          106           18.351        17.675        3.15          2.075 \r\n 1991          107           13.174        17.675        3.7           0 \r\n 1991          108           5.35          12.975        8.275         14.025 \r\n 1991          109           5             14.65         3.625         3.025 \r\n 1991          110           13.176        14.375        3.5           1.975 \r\n 1991          111           18.224        14.55         2.725         0 \r\n 1991          112           20.5          17.475        3.6           2.375 \r\n 1991          113           22.626        14.675        2.55          0 \r\n 1991          114           27.15         18.35         3.3           0 \r\n 1991          115           9.85          20.1          8.35          2.05 \r\n 1991          116           13.626        21.7          8.025         7.15 \r\n 1991          117           26.8          19.825        7.975         9.675 \r\n 1991          118           17.974        22.05         7.275         0 \r\n 1991          119           14.9          19.725        12.125        5.225 \r\n 1991          120           20.802        18.45         5.6           0 \r\n 1991          121           26.425        17.65         3.55          0 \r\n 1991          122           23.376        24.225        5.825         0 \r\n 1991          123           5.7           19.275        8.8           12.676 \r\n 1991          124           7.1           20.6          4.425         0 \r\n 1991          125           7.975         14.075        2.525         16.851 \r\n 1991          126           18.002        16.325        1.325         0 \r\n 1991          127           18.701        18.825        4.35          0 \r\n 1991          128           23.375        24.15         10.7          0 \r\n 1991          129           25.475        25.55         13.3          0 \r\n 1991          130           15.75         26.175        13.125        0 \r\n 1991          131           19.85         27.6          15.725        0 \r\n 1991          132           20.175        25.225        17.775        1.25 \r\n 1991          133           27.55         29.225        16.825        0 \r\n 1991          134           18.75         29.1          18.2          3.175 \r\n 1991          135           16.05         25.5          17.675        3.2 \r\n 1991          136           19.425        24.3          16.85         16.301 \r\n 1991          137           16.775        23.325        16.8          11.601 \r\n 1991          138           8.55          21.7          13.575        0 \r\n 1991          139           9.925         23.5          8.375         0 \r\n 1991          140           11.1          25.75         14.05         1.75 \r\n 1991          141           16.126        26.575        17.225        4.375 \r\n 1991          142           17.474        26.2          19.05         1.425 \r\n 1991          143           12.124        24.4          18.575        0 \r\n 1991          144           18.448        27.65         17.65         0 \r\n 1991          145           15.5          25.675        15.7          3.475 \r\n 1991          146           23.825        28.75         15.55         0 \r\n 1991          147           26.949        28.175        19            0 \r\n 1991          148           24.825        29.15         21.175        6.625 \r\n 1991          149           19.726        28.375        19.825        5.225 \r\n 1991          150           23.725        25.1          19.225        3.95 \r\n 1991          151           17.401        26.15         19.725        16.326 \r\n 1991          152           14.026        27.1          19.7          17.825 \r\n 1991          153           24.5          28.85         19.2          0 \r\n 1991          154           24.2          28.575        18.55         3.5 \r\n 1991          155           19.377        26.225        19.125        19.725 \r\n 1991          156           11.276        27.2          15.7          5.15 \r\n 1991          157           27.15         26.1          13.475        0 \r\n 1991          158           28.325        26.375        12.7          0 \r\n 1991          159           10.7          25.7          14.425        2.3 \r\n 1991          160           19.024        26.075        17            7.375 \r\n 1991          161           15.8          26.1          17.275        0 \r\n 1991          162           26.75         30.475        16.2          0 \r\n 1991          163           28.149        28.825        17.95         4.825 \r\n 1991          164           17.527        27.35         20.125        23.3 \r\n 1991          165           26.4          27.475        20.825        47.701 \r\n 1991          166           20.375        26.4          20.325        17.3 \r\n 1991          167           31.574        27.275        13.525        0 \r\n 1991          168           28.6          29.075        14.55         0 \r\n 1991          169           28.55         28.6          16.825        0 \r\n 1991          170           26.575        29.025        18.975        0 \r\n 1991          171           28.575        31.25         17.725        0 \r\n 1991          172           8.126         28            19.05         22.925 \r\n 1991          173           6.05          24.7          17.075        0 \r\n 1991          174           7.025         26.9          13.75         0 \r\n 1991          175           18.5          28.5          17.25         0 \r\n 1991          176           27.225        28.6          19.1          0 \r\n 1991          177           28.125        34.55         22.15         0 \r\n 1991          178           28.925        32.025        21.625        0 \r\n 1991          179           29.925        32.725        21.95         0 \r\n 1991          180           29.35         32.55         21.575        0 \r\n 1991          181           30.8          33.675        22.25         0 \r\n 1991          182           27.1          29.625        21.7          3.15 \r\n 1991          183           29.4          29.15         19.675        0 \r\n 1991          184           25.326        26.9          16.35         0 \r\n 1991          185           28.45         28.5          15.325        0 \r\n 1991          186           30.7          33.25         17.6          0 \r\n 1991          187           30.475        31.4          19.75         0 \r\n 1991          188           21.073        33.775        21.175        1.05 \r\n 1991          189           18.474        26.775        14.45         0 \r\n 1991          190           15.825        24.9          16.5          41.523 \r\n 1991          191           6.701         25.925        17.45         2.8 \r\n 1991          192           8.851         27.375        20.35         4.7 \r\n 1991          193           25.175        28.5          17.675        0 \r\n 1991          194           19.876        25.45         15.625        0 \r\n 1991          195           27            27.925        14.375        0 \r\n 1991          196           30.5          30.875        16.7          0 \r\n 1991          197           29.7          32.55         18.775        0 \r\n 1991          198           28.675        34.4          21.175        0 \r\n 1991          199           28.225        35.175        20.425        0 \r\n 1991          200           21.602        32.525        22.1          1.2 \r\n 1991          201           22.175        33.225        22.575        5.85 \r\n 1991          202           14.4          33.725        22.85         0 \r\n 1991          203           25.976        31.8          23.15         1 \r\n 1991          204           14.852        27.575        16.15         0 \r\n 1991          205           24.25         28.75         14.025        0 \r\n 1991          206           28.7          27.55         14.05         0 \r\n 1991          207           27.625        29.375        12.675        0 \r\n 1991          208           18.776        30.875        14.75         0 \r\n 1991          209           11.826        27.5          18.475        1.85 \r\n 1991          210           24.375        27.95         12.95         0 \r\n 1991          211           21.849        32.75         14.725        8.925 \r\n 1991          212           25.325        32.45         20            0 \r\n 1991          213           26.55         35.8          17.85         0 \r\n 1991          214           15.052        38            21.325        0 \r\n 1991          215           12.624        31.225        19.075        0 \r\n 1991          216           16.249        28.675        14.875        2.85 \r\n 1991          217           4.4           23.05         16.35         7.775 \r\n 1991          218           14.201        26.225        15.275        2.125 \r\n 1991          219           25.45         31            19.8          14.5 \r\n 1991          220           7.301         25.1          20.45         18.525 \r\n 1991          221           21.149        23.95         14.9          0 \r\n 1991          222           23.4          26.175        13.075        0 \r\n 1991          223           21.675        27.275        14.325        0 \r\n 1991          224           17.074        28.525        14.85         0 \r\n 1991          225           22.175        28.625        14.7          0 \r\n 1991          226           24.85         30.125        15.525        0 \r\n 1991          227           26.525        32.6          16.725        0 \r\n 1991          228           9.7           28.775        18.925        22.425 \r\n 1991          229           25.65         29.1          15.5          1.375 \r\n 1991          230           19.85         26.325        18.175        1.575 \r\n 1991          231           26.925        26.4          11.425        0 \r\n 1991          232           21.075        28.375        12.125        0 \r\n 1991          233           22.9          30.2          15.925        0 \r\n 1991          234           24.125        34.35         15.9          0 \r\n 1991          235           9.65          31.05         20.2          0.7 \r\n 1991          236           19.049        30.375        18.325        0 \r\n 1991          237           21.025        33.2          19.575        0 \r\n 1991          238           22.275        34.425        19.4          0 \r\n 1991          239           22.824        34.35         19.85         0 \r\n 1991          240           20.574        29            19.825        0 \r\n 1991          241           20.85         28.375        19.5          6.025 \r\n 1991          242           12.5          26.975        19.6          10.125 \r\n 1991          243           22.675        31            16.375        0 \r\n 1991          244           21.424        31.75         17.05         0.6 \r\n 1991          245           12.75         27.625        19.2          0.6 \r\n 1991          246           14.35         27.55         19.8          0 \r\n 1991          247           24.25         28.625        10.5          0 \r\n 1991          248           18.55         30.675        13.625        0 \r\n 1991          249           22.025        33.875        14.875        0 \r\n 1991          250           14.85         28.525        18.275        14.375 \r\n 1991          251           9.425         27.75         19.775        16.825 \r\n 1991          252           15.225        28.25         20.475        0 \r\n 1991          253           17.551        28.575        15.9          0 \r\n 1991          254           16.726        30.625        17.425        9.925 \r\n 1991          255           17.626        30.725        19.95         5.125 \r\n 1991          256           19.1          32.05         19.425        1.1 \r\n 1991          257           8.775         26.975        20.6          3.8 \r\n 1991          258           8.05          26.525        19.4          0 \r\n 1991          259           21.6          24.025        10.1          0 \r\n 1991          260           10.7          26.225        10.925        0 \r\n 1991          261           18.9          18.7          3.975         0 \r\n 1991          262           21.9          16.75        -0.325         0 \r\n 1991          263           20.175        19.775        1.525         0 \r\n 1991          264           13.875        22.225        4.225         0 \r\n 1991          265           17.025        19.65         9.625         0 \r\n 1991          266           15.201        22.175        4.725         0 \r\n 1991          267           9.275         16.275        6.3           0 \r\n 1991          268           19.55         22.875        4.95          0 \r\n 1991          269           19.05         21.05         2.65          0 \r\n 1991          270           17.55         26.275        6.95          0 \r\n 1991          271           17.55         23.95         3.775         0 \r\n 1991          272           16.625        29.2          11.775        0 \r\n 1991          273           12.326        24.55         11.625        0 \r\n 1991          274           17.575        28.075        8.725         0 \r\n 1991          275           9.526         27.075        13.05         0 \r\n 1991          276           3.35          20.9          8.925         2.825 \r\n 1991          277           3.3           11.15         5.775         7.3 \r\n 1991          278           10.15         9.25          1.175         0 \r\n 1991          279           18.5          12.85        -2.75          0 \r\n 1991          280           17.4          22.05         0.825         0 \r\n 1991          281           14.95         24.2          8.85          0 \r\n 1991          282           15.6          25            7.125         0 \r\n 1991          283           13.975        22.6          6.275         0 \r\n 1991          284           13.701        25.35         9.175         0 \r\n 1991          285           16.325        21.05         6.75          0 \r\n 1991          286           9.15          21.975        7.4           0 \r\n 1991          287           12.725        16.45         4.525         0 \r\n 1991          288           14.175        14.85        -0.65          0 \r\n 1991          289           15.45         25.525        4.925         0 \r\n 1991          290           15.425        25.525        9.6           0 \r\n 1991          291           6.975         16.825        2.9           0 \r\n 1991          292           13.2          12.125       -3.45          0 \r\n 1991          293           12.7          18.375       -0.575         0 \r\n 1991          294           13.575        23.475        4.025         0 \r\n 1991          295           13.125        27            12.5          0 \r\n 1991          296           10.326        23.3          10.775        4.7 \r\n 1991          297           1.975         20.225        5.8           2.625 \r\n 1991          298           11.3          14.125       -1.775         0 \r\n 1991          299           4.3           17.775        6             3.525 \r\n 1991          300           7.451         18.175        9.05          4.175 \r\n 1991          301           4.55          21.25         11            12.801 \r\n 1991          302           9.85          18.975       -3.55          0 \r\n 1991          303           12.5          3.8          -7.675         0 \r\n 1991          304           2.725         3.325        -5.1           19.001 \r\n 1991          305           5.55         -0.3          -6.875         20.901 \r\n 1991          306           10.5         -8.25         -12.05         2.175 \r\n 1991          307           9.5          -8.125        -14.75         0 \r\n 1991          308           10.3         -4.225        -23.275        0 \r\n 1991          309           7             1.375        -8.05          4.925 \r\n 1991          310           5.65         -0.2          -10.875        2.55 \r\n 1991          311           8.825        -6.225        -22.85         0 \r\n 1991          312           8.5          -2.175        -20.825        0 \r\n 1991          313           9.5           2.625        -7.65          0 \r\n 1991          314           7.55          1.625        -3.2           0 \r\n 1991          315           3.55          1.375        -7.325         0 \r\n 1991          316           6.776         9.275        -4.075         0 \r\n 1991          317           10.276        13.275        1.35          0 \r\n 1991          318           3.225         15.025        5.85          0 \r\n 1991          319           3.95          13.55         4             0 \r\n 1991          320           4.599         9.025         0.075         0 \r\n 1991          321           4.825         15.875        4.575         12 \r\n 1991          322           11.2          12.225        1.65          0 \r\n 1991          323           6.225         9.6           3.9           0 \r\n 1991          324           11.5          12.3         -1.15          0 \r\n 1991          325           6.951         10.125        0.65          0 \r\n 1991          326           3.675         5.525        -1.9           8.15 \r\n 1991          327           5.2          -2.575        -6.55          4.775 \r\n 1991          328           6.275        -3.575        -11            0 \r\n 1991          329           5.025        -3.625        -10.95         2.525 \r\n 1991          330           3.9           2.575        -8.45          2.575 \r\n 1991          331           5.425         4.725        -3.5           0 \r\n 1991          332           2.65          1.125        -2.15          9.7 \r\n 1991          333           2.525         10.8         -3.075         11.65 \r\n 1991          334           7.6           12.025       -6.825         3.1 \r\n 1991          335           5.525         2.825        -7.75          0 \r\n 1991          336           3.1           3.4          -5.675         0 \r\n 1991          337           5.051        -1.825        -13.375        0 \r\n 1991          338           4.926        -2.3          -16.125        0 \r\n 1991          339           8.401         5.675        -5.975         0 \r\n 1991          340           6.551         11.15        -4.3           0 \r\n 1991          341           7.95          11.475        0.325         0 \r\n 1991          342           8.625         9.75          0.925         0 \r\n 1991          343           9.6           9.2          -0.475         0 \r\n 1991          344           9.3           12.525        0.3           0 \r\n 1991          345           8.675         10.425       -1.125         0 \r\n 1991          346           2.95          7.825         2.475         28.026 \r\n 1991          347           4.725         8.525        -1.975         0 \r\n 1991          348           8.2           3.875        -4.15          0 \r\n 1991          349           8.125         1.225        -4.65          0 \r\n 1991          350           8.7           8.125        -3.55          0 \r\n 1991          351           9.525         4.35         -2.2           0 \r\n 1991          352           8.725        -0.6          -10.65         0 \r\n 1991          353           2.4           2.025        -8.6           1.125 \r\n 1991          354           2.9           2.4          -0.025         7.8 \r\n 1991          355           7.649         2.625        -5.6           0 \r\n 1991          356           3.85          5.2          -4.3           0.75 \r\n 1991          357           8.375         2.95         -3.975         7.5 \r\n 1991          358           8.9           1.75         -10.275        0 \r\n 1991          359           9.2           3.325        -6.675         0 \r\n 1991          360           9.2           2.9          -4.825         0 \r\n 1991          361           3.2           1.575        -6.525         0 \r\n 1991          362           3.4           2.65         -1.75          0 \r\n 1991          363           4.225         3.35         -2.675         0 \r\n 1991          364           2.525         4.6          -1.55          0 \r\n 1991          365           3.4           3.95         -0.475         0.325 \r\n 1992          1             2.25          2.675        -0.6           3.275 \r\n 1992          2             4.1           3.7          -0.875         0 \r\n 1992          3             6.075         6.325        -1.95          0 \r\n 1992          4             4.3           3.8          -3.625         1.025 \r\n 1992          5             1.95          3.475        -1.05          6.575 \r\n 1992          6             3.85          1.925        -3.35          0 \r\n 1992          7             1.7           5.7          -0.3           1.8 \r\n 1992          8             3.6           7.225        -0.9           0.9 \r\n 1992          9             7.85          0.525        -7.45          0 \r\n 1992          10            9.6           5.125        -7.625         1.525 \r\n 1992          11            9.775         10.225       -1.375         0 \r\n 1992          12            2.5           5.325         1             6.4 \r\n 1992          13            6.924         1.675        -4.475         0 \r\n 1992          14            7.525         2.775        -8.25          0 \r\n 1992          15            8.225         1            -19.7          0 \r\n 1992          16            7.45          8.35         -13.025        0 \r\n 1992          17            9.075         4.725        -6.45          0 \r\n 1992          18            6.625        -4.075        -12.7          0 \r\n 1992          19            8.975         6.825        -10.675        0 \r\n 1992          20            10.775        8.725        -3.175         0 \r\n 1992          21            10.075        9.3          -1.575         1.725 \r\n 1992          22            2.65          4.1           1.325         7.9 \r\n 1992          23            7.775         3.525        -2.125         0 \r\n 1992          24            5.475         1.725        -7.375         0 \r\n 1992          25            10.125        3.55         -7.025         0 \r\n 1992          26            11.25         8.95         -5.6           0 \r\n 1992          27            5.726         4.525        -2.775         0 \r\n 1992          28            6.15          5.85         -7.625         0 \r\n 1992          29            7.651         5.625        -0.85          0 \r\n 1992          30            7.751         10.6         -1.475         0 \r\n 1992          31            11.15         11.575       -0.95          0 \r\n 1992          32            11.925        9.3          -1.475         0 \r\n 1992          33            10.925        12.925        1.525         0 \r\n 1992          34            9.25          11.9          4.4           0 \r\n 1992          35            9.45          5.75         -2.7           0 \r\n 1992          36            10.025        9.45         -3.55          0 \r\n 1992          37            10.1          7.625        -1.425         0 \r\n 1992          38            10            2.9          -4.1           0 \r\n 1992          39            11.475       -0.75         -8.625         0 \r\n 1992          40            4.675         2.4          -7.9           0 \r\n 1992          41            10.75         8.175        -1.875         2.775 \r\n 1992          42            9.475        -0.55         -8.7           0 \r\n 1992          43            4.25          3.15         -6.5           0 \r\n 1992          44            5.575         7.725        -4.95          1.2 \r\n 1992          45            3.05          3.575        -1.2           10.175 \r\n 1992          46            5.3           8            -2.05          2.225 \r\n 1992          47            11.475        12.325       -0.925         0 \r\n 1992          48            3             7.075         0.9           10.475 \r\n 1992          49            4             5.15          0.5           5.5 \r\n 1992          50            5.7           6.95         -2.225         0 \r\n 1992          51            12.95         11.925       -1.875         0 \r\n 1992          52            8.825         4.525        -4.825         0 \r\n 1992          53            15.1          12.6         -2.3           0 \r\n 1992          54            7.55          7             0.175         0 \r\n 1992          55            6.8           5.7          -0.8           1.375 \r\n 1992          56            14.95         6.175        -6.125         0 \r\n 1992          57            9.75          12.3         -3.15          0 \r\n 1992          58            12.775        13.775       -0.975         0 \r\n 1992          59            16.875        14.65         4.3           0 \r\n 1992          60            17.725        16.275       -1.575         0 \r\n 1992          61            16.25         21.5          4.375         0 \r\n 1992          62            11.45         17.45         5.975         0 \r\n 1992          63            8.375         19.875        7.35          1.55 \r\n 1992          64            5.774         16.05         11.125        9.425 \r\n 1992          65            3.95          16.35         9.825         8.95 \r\n 1992          66            9.825         16.55         9             1.625 \r\n 1992          67            12.801        17.825        4.15          0 \r\n 1992          68            13.851        19            6.925         1.3 \r\n 1992          69            3.95          15.1         -3.425         12.3 \r\n 1992          70            15.751       -0.475        -10.5          0 \r\n 1992          71            7.401         9.225        -7.5           0 \r\n 1992          72            14.45         4.625        -5.3           0 \r\n 1992          73            13.726        13.375       -5.425         0 \r\n 1992          74            17.876        11.225       -2.175         0 \r\n 1992          75            20.65         9.35         -4.25          0 \r\n 1992          76            16.475        17.875       -1.55          0 \r\n 1992          77            16.049        13.5         -1.175         0 \r\n 1992          78            4.649         5.8          -0.4           5.625 \r\n 1992          79            15.525        9.05         -3.925         0 \r\n 1992          80            18.675        13.3         -3.325         0 \r\n 1992          81            7.499         13.625        1.2           0 \r\n 1992          82            19.726        8.475        -6.4           0 \r\n 1992          83            22.25         15.95        -2.8           0 \r\n 1992          84            21.175        17.675        0.025         0 \r\n 1992          85            22.9          13.825        0.625         0 \r\n 1992          86            21.45         8.425        -0.775         0 \r\n 1992          87            19.175        11.3         -4.4           2.725 \r\n 1992          88            1.5           7.9           0.1           28.549 \r\n 1992          89            3.675         9.325         3.55          1.4 \r\n 1992          90            22.95         14.775        0.05          0 \r\n 1992          91            15.549        8.95          0.75          0 \r\n 1992          92            15.3          5.35         -6.25          0 \r\n 1992          93            22.975        8.675        -5.325         0 \r\n 1992          94            18.3          16.35        -0.4           0 \r\n 1992          95            23.875        14.475       -0.05          0 \r\n 1992          96            22.4          18.65         0.475         0 \r\n 1992          97            18.8          20.8          6.025         2.875 \r\n 1992          98            17.925        18.95         8.075         5.225 \r\n 1992          99            7.551         17.975        4.95          0 \r\n 1992          100           11.477        17.675        2.65          0 \r\n 1992          101           15.226        22.575        6.35          0 \r\n 1992          102           12.85         18.45         5.8           0 \r\n 1992          103           11.902        8.325        -3.95          0 \r\n 1992          104           6.526         13.375       -0.45          0 \r\n 1992          105           12.051        21.65         5.75          0 \r\n 1992          106           14.575        22.4          13.9          4.425 \r\n 1992          107           4.674         17.6          6.275         2.675 \r\n 1992          108           4.075         16.9          3.075         0 \r\n 1992          109           8.75          21.4          8             8 \r\n 1992          110           7.325         15.425        7.3           19.926 \r\n 1992          111           2.4           11.05         2.6           11.325 \r\n 1992          112           3.9           1.35         -3.275         12.4 \r\n 1992          113           16.05         9.975        -6.2           0 \r\n 1992          114           15.675        15.425        0.25          9.6 \r\n 1992          115           12.551        13.4          2.525         1.375 \r\n 1992          116           10.001        10.55         0.05          0 \r\n 1992          117           14.375        12.675        0.05          0 \r\n 1992          118           27.675        15           -0.2           0 \r\n 1992          119           20.65         18.75         2.3           0 \r\n 1992          120           25.075        26.675        8.925         0 \r\n 1992          121           27.225        27.95         13.175        0 \r\n 1992          122           26.025        28.975        14.575        0 \r\n 1992          123           24.049        25.85         10.35         0 \r\n 1992          124           28.15         24.9          7.175         0 \r\n 1992          125           23.775        21.55         6.9           0 \r\n 1992          126           26.925        17.25         4.4           0 \r\n 1992          127           29.1          20            2.5           0 \r\n 1992          128           29.65         22.625        4.35          0 \r\n 1992          129           27.349        25.75         8             0 \r\n 1992          130           25.9          27.05         12.4          0 \r\n 1992          131           19.349        24.6          12.6          0.55 \r\n 1992          132           13.026        22.35         15.425        0 \r\n 1992          133           23.226        24.575        13.4          0 \r\n 1992          134           21.1          21.75         6.875         0 \r\n 1992          135           25.074        23.75         8.825         0 \r\n 1992          136           17.277        25.175        9.95          3.475 \r\n 1992          137           20.801        27.675        16.375        7.8 \r\n 1992          138           18.227        24.175        12            5.275 \r\n 1992          139           28.5          25.15         8.75          0 \r\n 1992          140           27.574        27.45         11.875        0 \r\n 1992          141           18.574        26.05         17.125        12.126 \r\n 1992          142           12.975        24.15         17.225        7.2 \r\n 1992          143           16.326        25.925        17.225        3.925 \r\n 1992          144           14.074        20.675        7.85          0.525 \r\n 1992          145           26.775        21.15         5.25          0 \r\n 1992          146           5.525         17.225        6.7           6.1 \r\n 1992          147           12.35         17.15         2.725         0.425 \r\n 1992          148           20.774        19.4          3.225         0 \r\n 1992          149           28.575        21.25         5.75          0 \r\n 1992          150           28.3          22.6          6.95          0 \r\n 1992          151           29.825        24.8          8.625         0 \r\n 1992          152           21.874        24.325        10.325        0 \r\n 1992          153           6.1           21.675        11.975        5.65 \r\n 1992          154           21.349        24.8          13.125        0 \r\n 1992          155           23.174        25.35         11.85         0 \r\n 1992          156           23.1          26.2          13.4          0 \r\n 1992          157           26.824        27.6          11.65         0 \r\n 1992          158           23.774        24.15         14.275        3.8 \r\n 1992          159           27.35         26.775        10.6          0 \r\n 1992          160           8.725         24.55         13.65         1.55 \r\n 1992          161           12.624        24.85         14.15         1.25 \r\n 1992          162           12.823        24.95         14.725        0 \r\n 1992          163           27.475        27.775        12.5          0 \r\n 1992          164           25.226        29.425        14.25         0 \r\n 1992          165           26            29.925        16.125        0 \r\n 1992          166           18.973        28.525        15.075        0 \r\n 1992          167           24.425        27.275        16.475        3.1 \r\n 1992          168           19.225        27.7          19.75         13.6 \r\n 1992          169           28.475        27.725        16.7          8.55 \r\n 1992          170           30.925        29.325        15.2          0 \r\n 1992          171           17.049        27.375        16            1.2 \r\n 1992          172           19.349        23.225        10.75         0 \r\n 1992          173           30.175        23.925        7.25          0 \r\n 1992          174           21.8          27.95         11.775        1.1 \r\n 1992          175           26.275        30.025        14.675        0 \r\n 1992          176           21            28.65         15            0 \r\n 1992          177           27.349        28.275        14.65         0 \r\n 1992          178           29.475        26.225        11.175        0 \r\n 1992          179           23.375        26.475        11.3          0 \r\n 1992          180           23.825        30.25         15            0 \r\n 1992          181           20.351        28.475        16.225        1.5 \r\n 1992          182           25.1          30.75         16.9          0 \r\n 1992          183           25.226        29.975        18.05         3.8 \r\n 1992          184           10.75         27.425        18.075        16.074 \r\n 1992          185           28.175        26.8          11.025        0 \r\n 1992          186           20.602        29.075        15.35         7.225 \r\n 1992          187           11.674        27.275        16.35         6.85 \r\n 1992          188           16.901        29            13.2          0 \r\n 1992          189           23.174        29.65         20.725        6.375 \r\n 1992          190           24.075        29.575        21.35         2.45 \r\n 1992          191           7.075         27.65         19.575        0 \r\n 1992          192           23.025        26.875        18.5          0 \r\n 1992          193           9.776         25.05         16.675        13.524 \r\n 1992          194           17.05         27.025        20.35         16.924 \r\n 1992          195           7.101         24.375        20.25         24.799 \r\n 1992          196           17.825        25.2          14.6          0 \r\n 1992          197           23.626        28.825        14.7          0 \r\n 1992          198           21.524        26.425        14.6          0 \r\n 1992          199           23.976        25.5          14.5          0 \r\n 1992          200           27.551        27.35         14            0 \r\n 1992          201           14.102        29.125        16.4          4.5 \r\n 1992          202           12.548        24.175        14.75         0 \r\n 1992          203           21.65         24.6          11.475        0 \r\n 1992          204           8.727         25.7          15.35         17.024 \r\n 1992          205           9.626         25            14.125        7.325 \r\n 1992          206           6.077         26.45         12.7          12.824 \r\n 1992          207           11.599        28.4          21.075        16.574 \r\n 1992          208           18.973        27.25         19.075        0 \r\n 1992          209           29.425        28.45         14.7          0 \r\n 1992          210           15.451        29.35         16.375        11.675 \r\n 1992          211           16.076        25.8          17.6          14.849 \r\n 1992          212           10.927        22.45         17.15         13.274 \r\n 1992          213           24.375        24.25         10.225        0 \r\n 1992          214           29.1          26.075        12.225        2.125 \r\n 1992          215           21.399        25.575        16.575        4.7 \r\n 1992          216           22.5          24.95         13            0 \r\n 1992          217           23.776        24            11.425        0 \r\n 1992          218           10.851        22.575        13.175        4.45 \r\n 1992          219           12.125        25.85         14.275        5.225 \r\n 1992          220           19.074        27.725        18.175        14.7 \r\n 1992          221           25.574        30.1          18.525        0 \r\n 1992          222           24.725        29.95         22.5          0 \r\n 1992          223           26.25         28.3          21.775        0 \r\n 1992          224           21.2          23.7          16.4          3.4 \r\n 1992          225           18.574        21.9          16.625        0 \r\n 1992          226           20.676        22.1          10.1          0 \r\n 1992          227           18.874        21.775        10.15         0 \r\n 1992          228           21.825        22.45         8.925         0 \r\n 1992          229           19.025        24.475        10.025        3.4 \r\n 1992          230           18.674        25.15         14.4          2.325 \r\n 1992          231           22.974        27.15         15.325        0 \r\n 1992          232           25.025        26.95         12.225        0 \r\n 1992          233           24.95         28.45         13.4          0 \r\n 1992          234           23.65         29.45         13.75         0 \r\n 1992          235           23.575        29.3          14.525        0 \r\n 1992          236           22.2          31.3          16.575        0 \r\n 1992          237           19.725        32.025        18.575        0 \r\n 1992          238           5.901         26.8          15.05         6.925 \r\n 1992          239           7.824         22.6          11.525        0 \r\n 1992          240           18.225        23.025        9.375         0 \r\n 1992          241           23.175        28.6          9.875         0 \r\n 1992          242           21.15         31.75         13.925        0 \r\n 1992          243           22.575        25.1          11.45         0 \r\n 1992          244           21.299        27.55         9.95          0 \r\n 1992          245           7.95          23.825        14.975        29.45 \r\n 1992          246           18.475        25.85         16.1          16.675 \r\n 1992          247           24.35         30.3          12.7          0 \r\n 1992          248           22.1          30.525        14.225        10.6 \r\n 1992          249           3.85          25.325        17.675        7.225 \r\n 1992          250           20.424        28.45         14.3          0 \r\n 1992          251           13.549        24.05         15.925        17.225 \r\n 1992          252           19.451        20.65         5.8           0 \r\n 1992          253           17.824        25.4          13.075        17.825 \r\n 1992          254           22.875        22.525        6.925         0 \r\n 1992          255           21.7          25.65         7.675         0 \r\n 1992          256           16.075        27.975        11.15         0 \r\n 1992          257           16.726        27            17.9          21.675 \r\n 1992          258           4.376         24.6          17.85         20.725 \r\n 1992          259           14.551        25.25         18.4          14.85 \r\n 1992          260           12.65         28.175        19            5.45 \r\n 1992          261           17.225        27.125        17.3          6.475 \r\n 1992          262           21.775        23.575        10.075        0 \r\n 1992          263           20.825        21.175        4.325         0 \r\n 1992          264           6.924         21.55         11.725        0 \r\n 1992          265           8.925         24.875        12.15         0 \r\n 1992          266           20.625        20.325        5.675         0 \r\n 1992          267           20.45         23.1          6.075         0 \r\n 1992          268           20.7          21.85         6             0 \r\n 1992          269           18.35         23.525        6.65          0 \r\n 1992          270           12.625        19.075        10.775        16.05 \r\n 1992          271           19.5          24.9          7.05          0 \r\n 1992          272           19.725        19.3          3.825         0 \r\n 1992          273           18.8          20.125        1.825         0 \r\n 1992          274           18.3          25.1          5.95          0 \r\n 1992          275           19.45         27.825        9.3           0 \r\n 1992          276           19.525        29.45         10.725        0 \r\n 1992          277           18.15         30.3          10.95         0 \r\n 1992          278           16.301        27.925        10.65         0 \r\n 1992          279           13.601        26.275        10.875        0 \r\n 1992          280           13.05         24.7          11.15         4.775 \r\n 1992          281           3.751         19.875        9.2           13.301 \r\n 1992          282           4.925         11.625        6.45          31.627 \r\n 1992          283           11.25         14.85         3.225         0 \r\n 1992          284           15.326        15.475        4.325         0 \r\n 1992          285           16.925        19.75         1.575         0 \r\n 1992          286           14.7          16.725        7.75          0 \r\n 1992          287           13.225        22.75         4.2           0 \r\n 1992          288           10.625        17.45         6.375         0 \r\n 1992          289           3.5           12.625        0.7           0 \r\n 1992          290           12.2          9.15         -2.325         0 \r\n 1992          291           10.375        11.575       -2.15          0 \r\n 1992          292           13.8          10.625       -3.875         0 \r\n 1992          293           3.45          11.275       -0.4           0 \r\n 1992          294           14.525        19.225        3.3           0 \r\n 1992          295           14.375        24.5          5.5           0 \r\n 1992          296           12.1          26.35         13            0 \r\n 1992          297           13.125        23.35         12.5          0 \r\n 1992          298           13.9          23.45         7.4           0 \r\n 1992          299           13.525        24.4          8.5           0 \r\n 1992          300           13.675        18            6.275         0 \r\n 1992          301           14.15         18.5          2.175         0 \r\n 1992          302           7.099         14.325        4.425         0 \r\n 1992          303           8.924         9.675         0.5           0 \r\n 1992          304           7.574         12           -0.425         0 \r\n 1992          305           2.55          10.025        4.45          8.125 \r\n 1992          306           0.875         8.5           3.7           36.451 \r\n 1992          307           3             3.9          -0.225         7.35 \r\n 1992          308           5.45          3.95         -2.8           0 \r\n 1992          309           4.2           2.25         -3.025         0 \r\n 1992          310           3.7           2.325        -4             0 \r\n 1992          311           4.125         2.75         -4.9           0 \r\n 1992          312           4.075         4.65         -3.875         0 \r\n 1992          313           7.751         11.725       -2.925         0 \r\n 1992          314           3.15          13.125        5.525         0.95 \r\n 1992          315           7.974         12.325        4.775         0 \r\n 1992          316           4.675         8.925         0.525         0 \r\n 1992          317           11.05         6.75         -0.35          0 \r\n 1992          318           10.125        2.3          -4.25          0 \r\n 1992          319           11.1          4.55         -3.35          0 \r\n 1992          320           10.875        9.05         -1.75          0 \r\n 1992          321           9.6           14.2          0.925         0 \r\n 1992          322           4.15          8.9          -0.575         0 \r\n 1992          323           1.3           4.875        -0.975         5.775 \r\n 1992          324           1.3           4.95          0.6           25.701 \r\n 1992          325           3.025         6.8           1.45          2.025 \r\n 1992          326           2.75          5.2          -1.85          0 \r\n 1992          327           2.675         3.275        -2.6           0 \r\n 1992          328           2.875         3.325        -4.375         0 \r\n 1992          329           2.975         3.65         -1             0 \r\n 1992          330           2.25          1.525        -1.45          6.75 \r\n 1992          331           4.25          1.025        -5.1           0 \r\n 1992          332           6.2           3.3          -6.075         0 \r\n 1992          333           7             3.5          -5.675         0 \r\n 1992          334           5.5           2.625        -4.4           0 \r\n 1992          335           5.226         2.05         -3.2           0 \r\n 1992          336           4.875         8.5          -1.9           0 \r\n 1992          337           9.625         4.9          -0.85          0 \r\n 1992          338           6.9           6.3          -1.2           0 \r\n 1992          339           8.225         1.825        -5.9           0 \r\n 1992          340           9             1            -10.65         0 \r\n 1992          341           2.225        -0.125        -4.075         5.775 \r\n 1992          342           3.575         2.8          -6.15          0 \r\n 1992          343           4.276         4.45         -4.85          0 \r\n 1992          344           2.95          4.1           0.4           3.125 \r\n 1992          345           9.3           7             1.25          0 \r\n 1992          346           8.725         7.225        -3.325         0 \r\n 1992          347           5.7           7.25         -0.3           0 \r\n 1992          348           1.625         4.35          1.95          16.376 \r\n 1992          349           2.1           3.15          0.65          4.375 \r\n 1992          350           2.875         2.35         -7.5           0 \r\n 1992          351           3.125        -0.775        -7.775         0 \r\n 1992          352           4.1           0.725        -5.875         0 \r\n 1992          353           2.375         2.325        -6             0 \r\n 1992          354           5.85          0.825        -9.75          0 \r\n 1992          355           9.05         -1.5          -15.625        0 \r\n 1992          356           9.225         2.725        -8.05          0 \r\n 1992          357           8.05          3.625        -5.375         0 \r\n 1992          358           6.75          0.55         -13.475        0 \r\n 1992          359           8.1          -0.95         -18.825        0 \r\n 1992          360           9.1           1.5          -9.8           0 \r\n 1992          361           9.325         3.75         -10.225        0 \r\n 1992          362           9.025         5.95         -3.25          0 \r\n 1992          363           2.6           2.4          -4.5           1.025 \r\n 1992          364           2.625         2.45         -6.325         3.65 \r\n 1992          365           2.05         -1.45         -8.675         0.7 \r\n 1992          366           6.4          -10.125       -19.85         0 \r\n 1993          1             7.4          -9.25         -20.95         0 \r\n 1993          2             3.175         1.8          -10.15         0 \r\n 1993          3             2.75          2.175        -4.025         1.65 \r\n 1993          4             7.026        -4.5          -12.525        1.65 \r\n 1993          5             6.875        -3.95         -17.1          0 \r\n 1993          6             6.825        -5.875        -15.375        1.05 \r\n 1993          7             3.3          -1.1          -12.175        1.05 \r\n 1993          8             5.525        -5.925        -14.325        0 \r\n 1993          9             3.5          -6.7          -11.5          3.65 \r\n 1993          10            6.624        -5.45         -13.775        0 \r\n 1993          11            4.75         -3            -10.3          5.325 \r\n 1993          12            5.575        -0.375        -5.525         8.4 \r\n 1993          13            7.4          -3.825        -13.575        0 \r\n 1993          14            5.4          -4.275        -14.325        0 \r\n 1993          15            7.9          -3.8          -14.7          0 \r\n 1993          16            6.676        -1.025        -10.275        0 \r\n 1993          17            6.575        -3.1          -17.5          0 \r\n 1993          18            7.201        -4.05         -14.7          0 \r\n 1993          19            9.1          -4.175        -17.625        0 \r\n 1993          20            7.326        -0.55         -10.55         7.225 \r\n 1993          21            7.975         0.5          -6.55          0 \r\n 1993          22            8.5           1.25         -6.3           0 \r\n 1993          23            7.099         1.85         -1.125         0 \r\n 1993          24            9.425        -1.9          -15.625        0 \r\n 1993          25            8.925        -0.375        -11.325        0 \r\n 1993          26            10.676        2.8          -5.8           0 \r\n 1993          27            11.1          1.425        -9.1           0 \r\n 1993          28            8.701         2.375        -8.775         0 \r\n 1993          29            9.05         -7.15         -23.725        0 \r\n 1993          30            11.575        2.5          -15.75         0 \r\n 1993          31            12.05         4.275        -3.325         0 \r\n 1993          32            11.849        2.55         -6.525         0 \r\n 1993          33            11.95         5.175        -4.25          0 \r\n 1993          34            6.125         6.85         -2.2           0 \r\n 1993          35            10.951        3.8          -3.7           0 \r\n 1993          36            9.574         6.675        -3.725         0 \r\n 1993          37            10.374        5.25         -3.625         0 \r\n 1993          38            12.3          7.9          -2.275         0 \r\n 1993          39            4.5          -0.15         -4.15          0 \r\n 1993          40            8.424         5.325        -3.15          0 \r\n 1993          41            7.85          3.85         -0.05          1.925 \r\n 1993          42            3.175        -0.05         -3.5           4.275 \r\n 1993          43            6.25         -2.375        -6.525         3.675 \r\n 1993          44            7.375        -1.775        -8.75          1.775 \r\n 1993          45            11.225       -2.1          -9.1           0 \r\n 1993          46            7.575        -6.275        -8.825         0 \r\n 1993          47            7.576        -9.85         -15.35         0 \r\n 1993          48            11.35        -13.375       -21.35         0 \r\n 1993          49            12.351       -6.125        -21.05         0 \r\n 1993          50            7.65         -3.625        -10.925        0 \r\n 1993          51            2.25         -1.825        -8.6           1.5 \r\n 1993          52            7.95         -4.65         -8.325         3.275 \r\n 1993          53            13.801       -8.75         -14.95         0 \r\n 1993          54            13.326       -10.3         -22.7          0 \r\n 1993          55            7.949        -9.575        -19.075        1.825 \r\n 1993          56            4.475        -10.35        -14.425        5.95 \r\n 1993          57            8.976        -4.325        -19.225        0 \r\n 1993          58            11.45        -3.375        -18.1          0 \r\n 1993          59            17.4          2.25         -14.375        0 \r\n 1993          60            6.875         4.4          -4.675         0 \r\n 1993          61            3.6           1.9          -0.65          14.275 \r\n 1993          62            5.025         2.975        -2.2           0 \r\n 1993          63            16.95         5.75         -2.75          0 \r\n 1993          64            15.299        8.45         -3.55          0 \r\n 1993          65            14.75         10.15        -2.425         0 \r\n 1993          66            15.001        12.475       -2.85          0 \r\n 1993          67            17.625        9.025        -2.8           0 \r\n 1993          68            11.202        9.475        -2.825         0 \r\n 1993          69            13.575        5.15         -2.4           0 \r\n 1993          70            17.225        0.425        -8.475         0 \r\n 1993          71            9.625        -2.325        -6.9           0 \r\n 1993          72            19.775       -3.65         -15.6          0 \r\n 1993          73            19.476       -0.375        -11.45         0 \r\n 1993          74            11.425        6.075        -4.8           0 \r\n 1993          75            12.65         4.55         -2.6           0 \r\n 1993          76            18.425       -2.425        -10.925        0 \r\n 1993          77            4.225         1.675        -7.125         1.8 \r\n 1993          78            6.2           6.075        -3.9           2.275 \r\n 1993          79            12.2          7.5          -1.975         0 \r\n 1993          80            4.975         4.55         -2.05          2.25 \r\n 1993          81            2.925         6.15         -2.05          2.175 \r\n 1993          82            7.125         9.475        -3.35          0 \r\n 1993          83            8.675         12.75        -1.475         0 \r\n 1993          84            11.376        11.475       -3.225         0 \r\n 1993          85            21.875        12.55        -1.5           0 \r\n 1993          86            20.625        18.3         -0.35          0 \r\n 1993          87            15.574        17.2          3.875         0 \r\n 1993          88            18.374        18.55         3.8           5.775 \r\n 1993          89            5.475         14.4          7.975         8.55 \r\n 1993          90            1.35          9.325         2.3           23.974 \r\n 1993          91            7.05          5.325        -4.7           0 \r\n 1993          92            20.475        8.15         -6.3           0 \r\n 1993          93            10.274        4.925        -2.4           0 \r\n 1993          94            19.649        10.75        -2.775         0 \r\n 1993          95            22.725        12.1         -3.05          0 \r\n 1993          96            10.275        9.7           0.35          4.35 \r\n 1993          97            2.025         14.275        3.15          7.9 \r\n 1993          98            5.45          12.575        3.775         0 \r\n 1993          99            23.725        18.625        1.175         0 \r\n 1993          100           15.676        17.925        1.975         0 \r\n 1993          101           18.851        14.3          1.075         0 \r\n 1993          102           6.825         10.45         0.45          5.4 \r\n 1993          103           2.775         8.875         0.95          4.05 \r\n 1993          104           3.725         7.175        -0.225         1.575 \r\n 1993          105           4.55          6.05          0.2           2.075 \r\n 1993          106           25.55         15.4          0.65          0.7 \r\n 1993          107           11.475        16.625        3.05          0.675 \r\n 1993          108           17.425        18.325        4.575         0 \r\n 1993          109           8.001         18.575        8.5           14.7 \r\n 1993          110           19.225        11.45        -0.475         5.825 \r\n 1993          111           24.425        14.7          0.4           0 \r\n 1993          112           26.15         19.325        2.275         0 \r\n 1993          113           15.725        19.775        7.275         0 \r\n 1993          114           15.025        17.825        8.025         0 \r\n 1993          115           18.075        17.85         7.45          0 \r\n 1993          116           23.751        20.8          3.55          0 \r\n 1993          117           5.9           20.1          10.6          1.375 \r\n 1993          118           11.123        18.5          6.65          0 \r\n 1993          119           24.425        21.05         6.425         0 \r\n 1993          120           10.301        21.85         8.225         1.875 \r\n 1993          121           8.776         18.05         11.375        19.201 \r\n 1993          122           6.1           15.1          7.3           4.325 \r\n 1993          123           7.825         16.5          7             0 \r\n 1993          124           19.951        23.375        7.275         0 \r\n 1993          125           22.775        24.225        11.725        1.45 \r\n 1993          126           11.175        23.05         14.425        9 \r\n 1993          127           17.4          22.85         15.45         22.976 \r\n 1993          128           7.5           22.5          15.9          15.726 \r\n 1993          129           10.974        22.575        12.175        3.525 \r\n 1993          130           8.875         17.75         10.95         38.827 \r\n 1993          131           9.476         22.15         13.925        15.701 \r\n 1993          132           26.974        26.675        14            0 \r\n 1993          133           30.625        21.95         5.45          0 \r\n 1993          134           28.576        26.95         8.025         5.375 \r\n 1993          135           23.876        25.3          9.525         0 \r\n 1993          136           28.5          21.225        7.325         0 \r\n 1993          137           17.798        20.75         8.625         0 \r\n 1993          138           27.05         17.55         9.075         0 \r\n 1993          139           13.625        15.55         5.375         0 \r\n 1993          140           20.926        17.675        3.8           0 \r\n 1993          141           29.749        23.1          6.825         0 \r\n 1993          142           8.125         22.475        11.175        20.301 \r\n 1993          143           13.426        22.85         15.55         14.101 \r\n 1993          144           24.301        20.85         9.525         0 \r\n 1993          145           26.5          21.4          6.9           0 \r\n 1993          146           25.751        24.975        9.15          0 \r\n 1993          147           27.675        26.725        13.8          5.425 \r\n 1993          148           11.5          24.825        12.425        5.375 \r\n 1993          149           11.376        22.35         9.15          0 \r\n 1993          150           17.65         24.175        16.05         3.175 \r\n 1993          151           27.574        21.475        5.85          2.15 \r\n 1993          152           15.176        21.725        7.75          8.775 \r\n 1993          153           4.801         20.625        11.625        2.2 \r\n 1993          154           8.574         20.575        8.75          6.175 \r\n 1993          155           12.399        17.65         9.775         16.05 \r\n 1993          156           20.45         22.975        6.625         0 \r\n 1993          157           3.525         26.325        10.85         9.15 \r\n 1993          158           7.901         26.4          19.375        2 \r\n 1993          159           24.474        26.425        17.15         0 \r\n 1993          160           30.525        26.7          10.775        0 \r\n 1993          161           26.775        28.975        13.925        0 \r\n 1993          162           23.125        26.75         15.4          8.05 \r\n 1993          163           15.776        26.85         15.825        23.225 \r\n 1993          164           10.078        27.05         17.9          10.7 \r\n 1993          165           29.225        27.45         13.2          0 \r\n 1993          166           30.65         27.5          10.925        0 \r\n 1993          167           23.425        28.3          16.2          0 \r\n 1993          168           17.848        26.7          21.125        18.875 \r\n 1993          169           11.151        25.9          18.025        12.975 \r\n 1993          170           7.175         24.175        14.35         5.35 \r\n 1993          171           24.05         27.4          13.725        0 \r\n 1993          172           30.124        29.65         16.2          0 \r\n 1993          173           26.35         28.6          18.7          0 \r\n 1993          174           14.349        27.35         19.075        34.15 \r\n 1993          175           15.675        24.75         17.175        0 \r\n 1993          176           31.8          26.45         12.25         0 \r\n 1993          177           30.35         28            13.975        0 \r\n 1993          178           29.55         27.35         18.175        8.85 \r\n 1993          179           17.178        26.4          18.75         9.75 \r\n 1993          180           14.527        27.85         17.175        13.125 \r\n 1993          181           3.5           28.075        21.05         17.7 \r\n 1993          182           11.426        27.5          19.9          8 \r\n 1993          183           19.4          28.5          20.15         0 \r\n 1993          184           26.9          30.325        20.425        0 \r\n 1993          185           18.373        28.675        20.3          0 \r\n 1993          186           8.2           26.675        18.175        18.724 \r\n 1993          187           23.299        27.85         13.975        0 \r\n 1993          188           21.701        26.375        15.575        32.124 \r\n 1993          189           14.948        27.55         18.425        33.824 \r\n 1993          190           21.65         26.6          19.375        19.274 \r\n 1993          191           17.451        28.65         18.875        8.5 \r\n 1993          192           19            27.15         19.375        5.2 \r\n 1993          193           24.075        26.6          12.675        25.949 \r\n 1993          194           19.099        28.025        16.4          11 \r\n 1993          195           7.674         26.05         17.925        0 \r\n 1993          196           11.075        27.85         17.55         0 \r\n 1993          197           10.45         28.375        18.6          4.525 \r\n 1993          198           15.452        28.95         21.3          9.775 \r\n 1993          199           14.95         27.5          18.4          0 \r\n 1993          200           22.698        27.75         18            9.675 \r\n 1993          201           9.15          25.7          15.575        9.5 \r\n 1993          202           6.499         25.675        15.375        0 \r\n 1993          203           9.426         28.2          18.55         44.123 \r\n 1993          204           16.775        29.65         20.6          13.099 \r\n 1993          205           17.202        29.7          21.85         20.349 \r\n 1993          206           28.45         27.2          19.2          10.175 \r\n 1993          207           11.976        30.6          16.9          4.9 \r\n 1993          208           13.478        30.475        20.725        3.85 \r\n 1993          209           28.95         27.1          14.675        0 \r\n 1993          210           28.8          29.45         15.25         0 \r\n 1993          211           26.4          31.1          18.15         0 \r\n 1993          212           16.873        30.775        23            0 \r\n 1993          213           25.4          28.475        21.825        0 \r\n 1993          214           21.825        27.35         13            0 \r\n 1993          215           19.323        23.675        13.875        0 \r\n 1993          216           23.825        24.45         10.55         0 \r\n 1993          217           7.825         22.55         15            12.3 \r\n 1993          218           23.1          23.725        13.15         0 \r\n 1993          219           17.375        25.45         12.6          0 \r\n 1993          220           19.925        28.225        15.575        0 \r\n 1993          221           21.701        31.225        21.125        0 \r\n 1993          222           20.124        30.925        22.2          9.625 \r\n 1993          223           15.473        29.225        20.7          9.25 \r\n 1993          224           21.025        29.825        20.45         2.225 \r\n 1993          225           14.575        27.975        21.1          2.85 \r\n 1993          226           23.8          29.15         20.35         1.55 \r\n 1993          227           15.902        31.125        22.625        1.825 \r\n 1993          228           23.975        30.85         22.175        8.45 \r\n 1993          229           21.525        30.3          21.275        3.425 \r\n 1993          230           21.15         32.425        23.25         9.775 \r\n 1993          231           18.849        28.675        20.95         1.8 \r\n 1993          232           21.248        28.05         18.225        0 \r\n 1993          233           7.824         26.575        15.45         0 \r\n 1993          234           22.575        31.225        18.525        6.625 \r\n 1993          235           21.075        29.325        19.65         3.925 \r\n 1993          236           25.4          31.65         17.95         0 \r\n 1993          237           19.25         30.15         20.2          0 \r\n 1993          238           23.5          32.025        20.85         0 \r\n 1993          239           13.276        29.5          19.575        0 \r\n 1993          240           3.15          24.65         17.075        45.976 \r\n 1993          241           10.303        28.775        19.45         27.126 \r\n 1993          242           4.926         27.125        16.225        23.65 \r\n 1993          243           22.875        23.325        9.65          0 \r\n 1993          244           24.225        23.7          10.75         0 \r\n 1993          245           8.5           24.225        16            3.45 \r\n 1993          246           19.7          22.15         11            0 \r\n 1993          247           24.5          25.45         11.7          0 \r\n 1993          248           2.75          19.975        11.275        12.6 \r\n 1993          249           20.026        20.95         8.5           0 \r\n 1993          250           14.349        21.8          9.75          0 \r\n 1993          251           20.25         22            10.675        0 \r\n 1993          252           22.025        23.575        11.575        0 \r\n 1993          253           23.575        21.05         8.75          0 \r\n 1993          254           20.7          25.4          10.7          0 \r\n 1993          255           21.9          29.55         17.675        0 \r\n 1993          256           5.6           25.75         11.15         7.075 \r\n 1993          257           7.225         12.85         5.95          1.35 \r\n 1993          258           21.6          18.25         2.3           0 \r\n 1993          259           22.3          19.275        5.175         0 \r\n 1993          260           14.251        22.05         7.4           2.6 \r\n 1993          261           5.899         21.225        11.4          3.625 \r\n 1993          262           6.05          19.65         12.1          14.75 \r\n 1993          263           11.677        19.45         10.1          0 \r\n 1993          264           16.799        24.1          8.1           1.6 \r\n 1993          265           5.35          22            14.925        33.425 \r\n 1993          266           18.625        17.15         6.5           0 \r\n 1993          267           8.849         18.125        8.8           4.725 \r\n 1993          268           11.95         17.925        10.25         22.275 \r\n 1993          269           14.776        16.15         9.675         0 \r\n 1993          270           16.126        19.025        1.3           0 \r\n 1993          271           19.3          18.4          6.45          0 \r\n 1993          272           17.3          17.35         2.625         0 \r\n 1993          273           16.975        23.1          6.475         0 \r\n 1993          274           14.9          20.625        10.925        0 \r\n 1993          275           15.476        16.85         3.25          0 \r\n 1993          276           18.75         23.9          6.2           0 \r\n 1993          277           18.825        21.9          10.675        0 \r\n 1993          278           16.925        22.075        5.7           0 \r\n 1993          279           17.425        27.175        13.45         0 \r\n 1993          280           17.275        27.85         16.4          0 \r\n 1993          281           3.475         22.775        13.35         15.926 \r\n 1993          282           16.65         12.8         -0.05          2.525 \r\n 1993          283           14.374        13.4         -1.425         0 \r\n 1993          284           16.15         16.225        2.25          0 \r\n 1993          285           14.549        16.45         2.7           0 \r\n 1993          286           11.425        17.9          2.6           0 \r\n 1993          287           7.725         17.625        7.725         4.775 \r\n 1993          288           6.425         19.825        11.5          14.951 \r\n 1993          289           5.825         16.65         10.825        0 \r\n 1993          290           6.025         17.775        9.25          2.15 \r\n 1993          291           4.55          13.9          7.775         2.05 \r\n 1993          292           6.7           16.35         6.95          0 \r\n 1993          293           5.85          11.875        5.85          1.25 \r\n 1993          294           15.55         15           -0.85          0 \r\n 1993          295           15.45         20.075        3.575         0 \r\n 1993          296           13.75         19.7          5.4           0 \r\n 1993          297           14.5          20.85         4.8           0 \r\n 1993          298           13.8          19.5          5.3           0 \r\n 1993          299           8.4           12.95         4.85          0 \r\n 1993          300           13.7          10.825       -2.3           0 \r\n 1993          301           12.075        15.125        5.45          0 \r\n 1993          302           7.9           7.1          -2.65          0 \r\n 1993          303           7.75          2.025        -4.75          0 \r\n 1993          304           12.35         5.3          -6.375         0 \r\n 1993          305           10.425        8.55         -3.65          0 \r\n 1993          306           12.025        10.6          1.2           0 \r\n 1993          307           9.35          14.975       -1.175         0 \r\n 1993          308           11.875        15.275        2.25          0 \r\n 1993          309           5.975         6.55         -4.375         0 \r\n 1993          310           11.65         1.1          -7.5           0 \r\n 1993          311           12.6          8.6          -5             0 \r\n 1993          312           12.35         9.375        -1.675         0 \r\n 1993          313           10.501        10.225       -1.65          0 \r\n 1993          314           11.6          10.8         -2.6           0 \r\n 1993          315           10.975        12.175       -0.225         0 \r\n 1993          316           1.175         13.4          0.625         10.3 \r\n 1993          317           5.251         13.025        1.9           0 \r\n 1993          318           3.35          5.725        -0.7           3.15 \r\n 1993          319           7.875         6.35         -4.775         0 \r\n 1993          320           4.525         7.375        -2.225         0 \r\n 1993          321           11.2          9.5          -2.25          0 \r\n 1993          322           5.975         7.375        -0.925         0 \r\n 1993          323           11.45         6.05         -0.475         0 \r\n 1993          324           9.925         9.325        -3.825         0 \r\n 1993          325           10.15         12.6         -2.125         0 \r\n 1993          326           6.125         9.025        -0.875         0 \r\n 1993          327           7.2           7.6          -1.45          0 \r\n 1993          328           3.275         2.775        -6.05          4.75 \r\n 1993          329           7.1          -2.275        -12.5          2.625 \r\n 1993          330           7.9          -5.075        -10.9          0 \r\n 1993          331           5.45         -3.175        -9.125         1.675 \r\n 1993          332           7.15          2.775        -8.475         0 \r\n 1993          333           5.825         0.75         -7.05          0 \r\n 1993          334           9.05          4.725        -4.7           0 \r\n 1993          335           3.675         6.5          -0.9           0 \r\n 1993          336           9.95          8.975        -2.375         0 \r\n 1993          337           7.925         3.55         -0.625         0 \r\n 1993          338           3.875         5.175        -1.8           0 \r\n 1993          339           6.2           8.25         -2.275         0 \r\n 1993          340           8.95          3.575        -4.8           0 \r\n 1993          341           9.2           5.45         -3.45          0 \r\n 1993          342           8.975         9.55         -3.75          0 \r\n 1993          343           6.775         9.65          0.05          0 \r\n 1993          344           6.4           6.35         -3.725         0 \r\n 1993          345           8.55          4.05         -7.05          0 \r\n 1993          346           6.2           10.7         -1.625         0 \r\n 1993          347           2.075         6.575        -0.5           10.076 \r\n 1993          348           2.4           3.525        -3.2           1.9 \r\n 1993          349           5.625         6.15         -2             0 \r\n 1993          350           4.675         4.225        -2.55          0 \r\n 1993          351           3.375         4.025        -1.85          2.3 \r\n 1993          352           3.2           3.625        -3.075         0 \r\n 1993          353           8.575         5.4          -3.05          0 \r\n 1993          354           6.3           0.35         -4.95          0 \r\n 1993          355           7             4.65         -6.85          0 \r\n 1993          356           8.35          0.2          -12.425        0 \r\n 1993          357           4.375        -2.475        -11.925        1.425 \r\n 1993          358           3.325         0.725        -12.125        0.8 \r\n 1993          359           5.2           1.55         -12.175        0 \r\n 1993          360           4.901        -0.475        -8.4           0 \r\n 1993          361           4.35         -4.925        -13            0 \r\n 1993          362           4.75         -5.5          -15.25         0 \r\n 1993          363           7.775        -4.175        -10.925        0 \r\n 1993          364           7.25          4.775        -12.875        0 \r\n 1993          365           5.75          6.8          -5.175         0 \r\n 1994          1             7.5           5.65         -2.5           0 \r\n 1994          2             2.775         2.75         -3.3           3.725 \r\n 1994          3             4.2          -1.6          -13.275        0 \r\n 1994          4             3.75         -2.125        -10.575        2.375 \r\n 1994          5             1.9           0.525        -7.375         0 \r\n 1994          6             5.675         0.175        -15.225        0 \r\n 1994          7             6.95         -12.925       -24.4          0 \r\n 1994          8             8.6          -7.275        -21.6          0 \r\n 1994          9             5.725        -5.8          -16.8          0 \r\n 1994          10            6.7           3.05         -5.7           0 \r\n 1994          11            8.126        -0.75         -17.125        0 \r\n 1994          12            8.475         2.2          -8.875         0 \r\n 1994          13            6.6          -1.925        -13.175        0 \r\n 1994          14            8.175        -12.4         -18            0 \r\n 1994          15            8.55         -15.925       -26.45         0 \r\n 1994          16            4.5          -3.125        -20.525        0 \r\n 1994          17            7.55         -13.6         -23.075        0 \r\n 1994          18            9.725        -17.825       -27.3          0 \r\n 1994          19            6            -5.825        -21.7          0 \r\n 1994          20            8.076        -8.35         -20.35         0 \r\n 1994          21            7.976         4.025        -14.875        0 \r\n 1994          22            9.751         5.475        -4.425         0 \r\n 1994          23            10.325        11.5         -1.475         0 \r\n 1994          24            4.175         6.35          0.125         0 \r\n 1994          25            3.725         4.675        -1.2           3.975 \r\n 1994          26            3.375        -1.525        -7.85          5.525 \r\n 1994          27            4.175         0.2          -6.45          2.075 \r\n 1994          28            7.7          -0.925        -10.825        0 \r\n 1994          29            9.25         -3.5          -8.525         0 \r\n 1994          30            9.975        -7.475        -17.025        0 \r\n 1994          31            10.125       -7.625        -18.65         0 \r\n 1994          32            6.15         -3.35         -14.3          0 \r\n 1994          33            7.05         -1.45         -16.925        0 \r\n 1994          34            8.576        -2            -13.8          0 \r\n 1994          35            9.976        -3.05         -14.25         0 \r\n 1994          36            11.276        0.075        -12.775        0 \r\n 1994          37            11.676       -2.3          -10.375        0 \r\n 1994          38            3.625        -10.775       -22.55         0 \r\n 1994          39            4.975        -12.8         -20.15         0 \r\n 1994          40            7.55         -13.825       -24.8          1 \r\n 1994          41            8.126        -2.95         -19.4          0 \r\n 1994          42            7.676        -0.475        -13.8          0 \r\n 1994          43            5.7          -0.875        -8.075         0 \r\n 1994          44            11.576        4.925        -12.875        0 \r\n 1994          45            11.175        9.375        -4.9           0 \r\n 1994          46            14.95         6.575        -5.175         0 \r\n 1994          47            13.475        11.95        -2.475         0 \r\n 1994          48            14.375        11.15        -2.275         0 \r\n 1994          49            10.425        16.55         4.175         0 \r\n 1994          50            6.15          13.225        3.875         1.325 \r\n 1994          51            13.524        4.25         -7.45          0 \r\n 1994          52            14.325        1            -6.7           0 \r\n 1994          53            3.8          -0.275        -5.15          10.875 \r\n 1994          54            5.8          -4.825        -11.025        2.875 \r\n 1994          55            5.325        -4.6          -13.25         1 \r\n 1994          56            6.801        -7.175        -19.225        4.375 \r\n 1994          57            5.9          -5.025        -20.4          0 \r\n 1994          58            7            -2.2          -17.025        0 \r\n 1994          59            6.575        -0.05         -10.475        0 \r\n 1994          60            9.95          2.35         -9.475         0 \r\n 1994          61            11.825        8.125        -8.425         0 \r\n 1994          62            13.75         16.125       -0.75          0 \r\n 1994          63            17.05         16.75        -0.95          0 \r\n 1994          64            17.275        20.325        2.5           0 \r\n 1994          65            8.1           12.5         -0.35          0 \r\n 1994          66            14.575        8.875        -2.575         0 \r\n 1994          67            15.649        3.75         -5.3           0 \r\n 1994          68            15.626        7.575        -5.675         0 \r\n 1994          69            18.55         7.3          -3.725         0 \r\n 1994          70            16.65         11.4         -5.575         0 \r\n 1994          71            14.424        12.3          0.875         0 \r\n 1994          72            19.8          14.8         -2.125         0 \r\n 1994          73            12.675        19.9          1.475         0 \r\n 1994          74            19.725        12.625       -1.85          0 \r\n 1994          75            18.4          11.325       -4             0 \r\n 1994          76            14.001        18.775       -0.075         0 \r\n 1994          77            20.175        16.775        0.85          0 \r\n 1994          78            16.525        18.625        3.9           0 \r\n 1994          79            13.249        16.9          4.725         1.1 \r\n 1994          80            20.575        16.4         -1.85          0 \r\n 1994          81            21.4          22.15         3.8           0 \r\n 1994          82            19.875        22.8          8.325         0.95 \r\n 1994          83            19.025        8.6          -5.4           0 \r\n 1994          84            18.9          7.75         -5.2           0 \r\n 1994          85            15.149        10.2         -1.375         0 \r\n 1994          86            11.651        8.05         -4             0 \r\n 1994          87            10.226        6.225        -3.6           0 \r\n 1994          88            10.225        4.55         -2.1           0 \r\n 1994          89            23.05         8.35         -4.9           0 \r\n 1994          90            23.35         17.4         -3.225         0 \r\n 1994          91            21.85         20.375        2.4           0 \r\n 1994          92            13.849        14.55         4.5           0 \r\n 1994          93            20.925        14.125       -4.3           0 \r\n 1994          94            12.65         17.525        3.3           0 \r\n 1994          95            7.874         12.2         -4.975         0 \r\n 1994          96            22.575        10.075       -4.325         0 \r\n 1994          97            17.225        12.975       -1.725         0 \r\n 1994          98            20.05         19.3          5.05          0 \r\n 1994          99            9.898         14.175        3.65          0 \r\n 1994          100           20.799        15.925        2.6           0 \r\n 1994          101           4.3           11.2          0.425         6.025 \r\n 1994          102           3.65          7.275         0.65          6.925 \r\n 1994          103           25.1          19.15        -1.3           0.575 \r\n 1994          104           21.85         24.125        7.075         1.975 \r\n 1994          105           19.801        19.4          4.675         3.75 \r\n 1994          106           24.4          22.8          4             0 \r\n 1994          107           23.675        25.225        7.275         0 \r\n 1994          108           25.6          29.325        10.75         0 \r\n 1994          109           21.425        25.075        7.475         0 \r\n 1994          110           12.326        21.825        7.225         2.375 \r\n 1994          111           10.099        18.75         7.4           6.8 \r\n 1994          112           25.8          20.475        4.85          0 \r\n 1994          113           24.6          25            5.425         0 \r\n 1994          114           19.85         26.775        15.35         0.475 \r\n 1994          115           20.874        25.275        16.975        0 \r\n 1994          116           24.401        21.2          11.95         0 \r\n 1994          117           10.299        13.05         0.65          3.05 \r\n 1994          118           3.276         12.875        3.7           7.7 \r\n 1994          119           15.451        12.8         -1.45          0 \r\n 1994          120           6.8           9.225         0.85          7.7 \r\n 1994          121           17.875        14.35        -1.225         0 \r\n 1994          122           13.024        15.975        3.525         0 \r\n 1994          123           20.749        18.325        4.075         0 \r\n 1994          124           14.25         19.85         7.475         0 \r\n 1994          125           17.727        24.5          8.35          0 \r\n 1994          126           2.5           20.475        7.75          6.55 \r\n 1994          127           9.875         17.25         4.225         0.65 \r\n 1994          128           17.6          19.25         4.375         0 \r\n 1994          129           26.875        22.2          6.975         0 \r\n 1994          130           28.325        25.8          9.5           0 \r\n 1994          131           24.325        26.9          12.6          0 \r\n 1994          132           25.825        23.85         9.475         0 \r\n 1994          133           18.699        24.625        10.35         3.375 \r\n 1994          134           7.224         20.95         15.95         1.75 \r\n 1994          135           25.051        25.3          10.2          0 \r\n 1994          136           27.475        26.7          12            0 \r\n 1994          137           25.6          26.25         12.95         0 \r\n 1994          138           27.35         26.4          11.05         0 \r\n 1994          139           25.65         26.3          11.6          0 \r\n 1994          140           29.325        25.45         10.375        0 \r\n 1994          141           26.9          26.6          12.4          0 \r\n 1994          142           23.35         28.25         14.65         0 \r\n 1994          143           24.851        27.825        16            0 \r\n 1994          144           20.525        26.4          16.825        1.75 \r\n 1994          145           21.651        25.275        13.225        1.325 \r\n 1994          146           24.875        21.85         9.65          0 \r\n 1994          147           28.274        24.35         8.975         0 \r\n 1994          148           30.05         25.825        10.9          0 \r\n 1994          149           15.124        23.45         16.925        17.101 \r\n 1994          150           30.175        28.55         15.85         1.35 \r\n 1994          151           27.274        26.625        15.725        4.925 \r\n 1994          152           11.202        25.525        13            7.425 \r\n 1994          153           6.45          22.15         12.925        14.2 \r\n 1994          154           22.872        24.8          9.2           0 \r\n 1994          155           19.725        27.325        12.5          5.425 \r\n 1994          156           16.999        26.475        18.225        24 \r\n 1994          157           28.05         27.425        18            0 \r\n 1994          158           10.35         28.875        18.2          0 \r\n 1994          159           8.7           25.175        14.225        0 \r\n 1994          160           12.474        25.825        11.725        2.85 \r\n 1994          161           21.55         25.075        14.5          7.85 \r\n 1994          162           22.424        27.175        14.175        8.25 \r\n 1994          163           20.101        27.925        16.325        15.65 \r\n 1994          164           25.924        30.45         20.85         0 \r\n 1994          165           28.45         30.85         21.75         0 \r\n 1994          166           21.6          28.35         21.3          0 \r\n 1994          167           16.126        28.825        19.75         0 \r\n 1994          168           22.9          29.05         20.35         12 \r\n 1994          169           25.399        29.475        21.325        7.325 \r\n 1994          170           19.101        29.15         21.425        0 \r\n 1994          171           24.425        29.5          22.075        0 \r\n 1994          172           26.024        29.65         21.625        15.85 \r\n 1994          173           9.55          28.075        19.525        10.65 \r\n 1994          174           6.3           25.225        20.475        33.525 \r\n 1994          175           27.6          28.025        14.075        0 \r\n 1994          176           25.375        30.15         17.025        0 \r\n 1994          177           27.4          26.3          15.475        0 \r\n 1994          178           21.949        29.05         15.1          0 \r\n 1994          179           30.2          28.25         15.25         0 \r\n 1994          180           31.6          28.5          15.85         0 \r\n 1994          181           30.425        27.85         15.175        3.75 \r\n 1994          182           24.026        28.25         18.825        13.524 \r\n 1994          183           21.35         24.925        16.075        7.15 \r\n 1994          184           6.85          23.2          14.85         16.224 \r\n 1994          185           27.025        28.775        20.475        2.95 \r\n 1994          186           22.876        29.875        20.3          6.25 \r\n 1994          187           23.3          29.15         19.925        3.3 \r\n 1994          188           19.399        27.45         20.5          0 \r\n 1994          189           18.551        23.65         11.35         0 \r\n 1994          190           29.8          24.9          12.075        0 \r\n 1994          191           29.75         27.8          14.15         0 \r\n 1994          192           26.451        29.3          18.175        8.7 \r\n 1994          193           18.151        27.75         17.7          7.25 \r\n 1994          194           15.476        26.625        18.15         2.45 \r\n 1994          195           17.375        26.05         17.575        0 \r\n 1994          196           15.625        27.45         14.9          0 \r\n 1994          197           22.699        27.25         17.35         4.2 \r\n 1994          198           23.024        28.625        17.625        0 \r\n 1994          199           25.524        28.425        17.525        0 \r\n 1994          200           28.1          31.975        20.275        0 \r\n 1994          201           18.474        28.85         16.15         0 \r\n 1994          202           24            27.35         16.25         0 \r\n 1994          203           24.125        26.925        15.525        0 \r\n 1994          204           28.75         29.825        15.675        0 \r\n 1994          205           12.574        28.35         18.35         3.8 \r\n 1994          206           23.75         28.3          16.85         0 \r\n 1994          207           24.05         25.35         12.825        0 \r\n 1994          208           24.675        24.925        13.3          0 \r\n 1994          209           22.95         26.8          11.65         0 \r\n 1994          210           24.9          27.6          13.675        0 \r\n 1994          211           24.25         27.975        13.9          0 \r\n 1994          212           23.175        27.925        17.875        5.2 \r\n 1994          213           13.075        26.025        18.9          4.85 \r\n 1994          214           19.7          26.1          17.2          5.225 \r\n 1994          215           3.525         24.25         19.7          19.175 \r\n 1994          216           20            24.125        16.825        0 \r\n 1994          217           27.525        21.5          9.6           0 \r\n 1994          218           23.349        24.225        10.275        0 \r\n 1994          219           14.701        27.525        15.375        5.125 \r\n 1994          220           18.876        25            19            8.9 \r\n 1994          221           9.9           26.75         13.8          0 \r\n 1994          222           14.974        28.425        20.25         7.275 \r\n 1994          223           8.551         25.25         14.125        0 \r\n 1994          224           13.002        31.175        16.15         5.025 \r\n 1994          225           14.274        29            20.9          0 \r\n 1994          226           26.7          23.9          9.875         0 \r\n 1994          227           23.85         25.925        10.725        0 \r\n 1994          228           22.25         30.675        12.625        0 \r\n 1994          229           14.551        29.65         17.4          0 \r\n 1994          230           24.625        31.425        16.6          0 \r\n 1994          231           16.2          29.85         18            0 \r\n 1994          232           20.45         25.575        13.325        0 \r\n 1994          233           22.125        26.95         12.2          0 \r\n 1994          234           24.3          29.075        12.9          0 \r\n 1994          235           20.425        31.85         15.75         0 \r\n 1994          236           24.275        34.875        18.55         0 \r\n 1994          237           19.176        33.025        20.025        20.175 \r\n 1994          238           23            31.925        18.725        1.825 \r\n 1994          239           21.8          34.625        19.425        0 \r\n 1994          240           7.424         30.325        17.15         1.725 \r\n 1994          241           17.699        28.925        11.375        0 \r\n 1994          242           14.875        25.525        17.55         8.425 \r\n 1994          243           10.074        22.775        11.725        0 \r\n 1994          244           11.927        24.375        10.8          0 \r\n 1994          245           15.025        24.75         10.475        0 \r\n 1994          246           14.225        27.825        12.775        0 \r\n 1994          247           7.275         25.7          17.2          37.425 \r\n 1994          248           19.95         27.275        17            0 \r\n 1994          249           22.5          26.325        12.15         0 \r\n 1994          250           17.874        28.3          13.05         0 \r\n 1994          251           23.05         28.825        13.5          0 \r\n 1994          252           20.926        31.225        14.9          0 \r\n 1994          253           17.35         28.025        15.875        0 \r\n 1994          254           19.75         30.275        15.575        0 \r\n 1994          255           20.6          30.7          18.125        0 \r\n 1994          256           21.925        31.475        19.6          0 \r\n 1994          257           19.7          29.125        20.875        2.1 \r\n 1994          258           11.15         25.65         20.55         1.7 \r\n 1994          259           21.525        24.6          13.975        0 \r\n 1994          260           22.175        24.55         9.875         0 \r\n 1994          261           22.05         27.775        9.95          0 \r\n 1994          262           21.625        28.45         11.825        0 \r\n 1994          263           15.151        29.125        14.975        7.225 \r\n 1994          264           11.451        25.125        14.575        6.1 \r\n 1994          265           3.2           16.825        5.425         22.475 \r\n 1994          266           7.749         13.275        4.9           2.025 \r\n 1994          267           7.827         18.7          6.025         7.2 \r\n 1994          268           13.2          19.9          12.35         2.8 \r\n 1994          269           14.926        17            6.225         0 \r\n 1994          270           15.775        22.175        3.525         0 \r\n 1994          271           19.65         21.9          5.725         0 \r\n 1994          272           18.75         27.275        8.725         0 \r\n 1994          273           16.926        30.175        16.1          0 \r\n 1994          274           8.327         26.1          13.125        0 \r\n 1994          275           10.001        22.3          11.975        3.85 \r\n 1994          276           9.676         19.3          13.45         5.75 \r\n 1994          277           9.701         21.475        8.525         0 \r\n 1994          278           7.749         23.9          8.7           0 \r\n 1994          279           5.275         24.25         16.3          9.976 \r\n 1994          280           7.651         20.8          10.15         1.65 \r\n 1994          281           16.9          17.625        6.175         0 \r\n 1994          282           17.975        18.55         3.85          0 \r\n 1994          283           17.4          19.8          3.75          0 \r\n 1994          284           17.575        19.175        4.025         0 \r\n 1994          285           16.875        20.95         3.025         0 \r\n 1994          286           13.475        23.375        7.35          0 \r\n 1994          287           15.1          21.65         6.8           0 \r\n 1994          288           3.85          17.05         11            5.4 \r\n 1994          289           4.075         21.2          13.125        8.55 \r\n 1994          290           2.575         21.65         15.45         20.726 \r\n 1994          291           13.5          21.775        10.275        5.9 \r\n 1994          292           15.05         20.1          7.85          0 \r\n 1994          293           15.85         22.85         6.625         0 \r\n 1994          294           13.875        23.475        9.625         0 \r\n 1994          295           13.5          19.775        9.65          0 \r\n 1994          296           11.4          14.75         3.825         0 \r\n 1994          297           13.85         10.85         4.75          0 \r\n 1994          298           13.4          10.85        -1.2           0 \r\n 1994          299           13.95         14.525       -1.9           0 \r\n 1994          300           12.25         19.225        2.95          0 \r\n 1994          301           11.2          21.1          8.25          0 \r\n 1994          302           11.55         17.175        7.05          0 \r\n 1994          303           4.15          13.55         3.15          0 \r\n 1994          304           10.45         12.55         2.5           0 \r\n 1994          305           7.15          15.275        1.35          0 \r\n 1994          306           10.4          17.85         4.35          0 \r\n 1994          307           6.425         12.625        4.5           0 \r\n 1994          308           3.45          9.85          1.675         3.9 \r\n 1994          309           9.575         13.55        -0.175         0 \r\n 1994          310           13.15         15.25         0.45          0 \r\n 1994          311           11.875        20.375        6.9           0 \r\n 1994          312           2.75          15.05         8.425         0 \r\n 1994          313           6.35          10.275        1.65          0 \r\n 1994          314           11.65         11.375       -1.55          0 \r\n 1994          315           3.9           12.45         0.125         0 \r\n 1994          316           6.301         14.45         2.85          0 \r\n 1994          317           2.2           16.625        9.225         1.825 \r\n 1994          318           11.75         14.075        2.4           0 \r\n 1994          319           11.45         11.725       -1.025         0 \r\n 1994          320           9.725         11.625       -1.875         0 \r\n 1994          321           4.05          11.25         5.175         3.6 \r\n 1994          322           11.075        10.35         0.4           0 \r\n 1994          323           3.925         10.3         -2.65          0 \r\n 1994          324           1.275         7.625         2.75          14.625 \r\n 1994          325           11.55         6.95          1.4           1.4 \r\n 1994          326           9.425         6.1          -4.275         0 \r\n 1994          327           11.35         7.9          -5.75          0 \r\n 1994          328           8.8           7.275        -2             0 \r\n 1994          329           9.025         9.125        -2.35          0 \r\n 1994          330           2.425         8.5           0.175         0 \r\n 1994          331           2.35          6.675        -0.3           10.45 \r\n 1994          332           9.875         3.875        -4.175         0 \r\n 1994          333           5.65         -0.375        -7.35          0 \r\n 1994          334           9.45          6.7          -4.675         0 \r\n 1994          335           9.475         13.55         1.25          0 \r\n 1994          336           9.9           13.25        -0.225         0 \r\n 1994          337           6.9           9.675         0.95          0 \r\n 1994          338           1.85          10.3          0.3           0 \r\n 1994          339           4.875         6.45         -6             0 \r\n 1994          340           1.45         -0.625        -4.35          14.926 \r\n 1994          341           5.3          -1.2          -12.025        5.1 \r\n 1994          342           2.175        -0.45         -7             0 \r\n 1994          343           5.95         -2.125        -12.475        0 \r\n 1994          344           4.751        -3.025        -12.775        0 \r\n 1994          345           4.65         -8.775        -23.425        0 \r\n 1994          346           5.4          -0.775        -14.35         0 \r\n 1994          347           3.5          -2.225        -13.6          0 \r\n 1994          348           1.775        -1.325        -11.375        1.875 \r\n 1994          349           4.926         0.575        -8.8           1.925 \r\n 1994          350           6.15          0.9          -6.175         0 \r\n 1994          351           8.7           2.6          -7.65          0 \r\n 1994          352           7.051         1.35         -13.8          0 \r\n 1994          353           8.6           5.075        -5             0 \r\n 1994          354           3.449         4.975        -4.175         0 \r\n 1994          355           3.65          3             0.6           0 \r\n 1994          356           3.875         3.225        -2.175         0 \r\n 1994          357           6.2           4.65         -3.475         0 \r\n 1994          358           6.575         7.175        -2.875         0 \r\n 1994          359           8.025         7.575        -1.275         0 \r\n 1994          360           7.725         9.425        -1.55          0 \r\n 1994          361           8.925         10.4         -0.35          0 \r\n 1994          362           2.675         6.275        -2.05          0 \r\n 1994          363           1.825         5.375        -3.9           0 \r\n 1994          364           1.375         5.175        -2.45          0.525 \r\n 1994          365           2.75          1.025        -5.7           3.95 \r\n 1995          1             5.975        -7.7          -13.9          0.45 \r\n 1995          2             5.925        -4.3          -12.775        0 \r\n 1995          3             6.45         -6.15         -14.875        0 \r\n 1995          4             6.6          -12.05        -18.4          0 \r\n 1995          5             5.875        -3.8          -16.375        0 \r\n 1995          6             3.875        -3.575        -10.875        11.126 \r\n 1995          7             5.6          -10.025       -26.075        0 \r\n 1995          8             4.45         -7.025        -14.4          0 \r\n 1995          9             6.875        -4.025        -17.475        0 \r\n 1995          10            8.575        -1.275        -8.575         0 \r\n 1995          11            5.2           0.5          -4.85          0 \r\n 1995          12            6.325         0.925        -5.175         0 \r\n 1995          13            3.75          1.625        -5.25          0 \r\n 1995          14            4.4          -0.725        -8.625         0 \r\n 1995          15            8.425         1.5          -7.575         0 \r\n 1995          16            4.575         4.1          -2.775         0 \r\n 1995          17            7.926         3.2          -5.05          0 \r\n 1995          18            8.65          1.65         -7.125         0 \r\n 1995          19            10.175        2.75         -6.275         0 \r\n 1995          20            6.725        -2.3          -9.775         0 \r\n 1995          21            9.6          -3.25         -12.075        0 \r\n 1995          22            8.25         -5.125        -11.65         0 \r\n 1995          23            6.401        -1.8          -12.125        0 \r\n 1995          24            11.45         2.05         -11.05         0 \r\n 1995          25            5.851         1.475        -10.275        0 \r\n 1995          26            11.325        4.125        -9.125         0 \r\n 1995          27            3             2.7          -2.575         8.5 \r\n 1995          28            4.825         1.775        -3.45          1.1 \r\n 1995          29            5.1          -0.475        -5.3           0 \r\n 1995          30            9.375        -0.65         -12.075        0 \r\n 1995          31            12.275        8.4          -4.575         0 \r\n 1995          32            8.4           5.425        -1.15          1.5 \r\n 1995          33            5.176         3.925        -1.775         2.1 \r\n 1995          34            6.875         3.875        -2.85          5.175 \r\n 1995          35            6.45          0.575        -8             0 \r\n 1995          36            7.375        -2.925        -11.3          0 \r\n 1995          37            3.8           0.95         -9.25          0 \r\n 1995          38            8.825        -1.95         -10.125        0 \r\n 1995          39            10.5         -1            -15.8          0 \r\n 1995          40            11.326        6.575        -6.425         0 \r\n 1995          41            12.15         2.6          -7.125         0 \r\n 1995          42            11.75        -4.175        -17.5          0 \r\n 1995          43            10.499       -3.2          -16.7          0 \r\n 1995          44            7.999        -2.7          -11.3          0 \r\n 1995          45            4.425         2.275        -8.5           0 \r\n 1995          46            12.2         -1.2          -9.125         0 \r\n 1995          47            12.575        5.525        -12.3          0 \r\n 1995          48            10.226        9.825        -3.45          0 \r\n 1995          49            13.775        13.625       -2.1           0 \r\n 1995          50            14.9          10.55        -3.7           0 \r\n 1995          51            15.575        13.025        1.2           0 \r\n 1995          52            12.225        14.525       -5.225         0 \r\n 1995          53            14.775        16.7          1.475         0 \r\n 1995          54            15            11.175       -1.375         0 \r\n 1995          55            13.95         9.5          -4.75          0 \r\n 1995          56            16.375        17.25        -1.325         2.075 \r\n 1995          57            6.675         11.35        -3.675         0 \r\n 1995          58            4.925         5.775        -2.625         1.6 \r\n 1995          59            13.35         0.425        -8.325         0.975 \r\n 1995          60            12.5         -5.65         -11.1          0 \r\n 1995          61            15.525       -2.725        -12.875        0 \r\n 1995          62            15.85         1.525        -9.95          0 \r\n 1995          63            4.35          2.225        -5.3           1.1 \r\n 1995          64            5.075         3.65         -3.375         2.225 \r\n 1995          65            2.05          1.5          -4.65          7.625 \r\n 1995          66            5.95         -4.825        -14.6          0 \r\n 1995          67            6.226        -7.75         -22.15         0 \r\n 1995          68            7.301         1.7          -15.9          0 \r\n 1995          69            12.127        10.575       -2.4           0 \r\n 1995          70            16.725        15.9          0.75          0 \r\n 1995          71            6.8           16.275        9             2.175 \r\n 1995          72            5.525         14.45         9.975         11.675 \r\n 1995          73            5.725         13.825        7.225         5.75 \r\n 1995          74            17.8          20.25         5.475         0 \r\n 1995          75            18.5          20.875        6.575         0 \r\n 1995          76            15.575        17            3.45          0 \r\n 1995          77            9.926         17.575        6             2.25 \r\n 1995          78            11.426        17.375        1.9           0 \r\n 1995          79            8.951         13.9          4.05          3.975 \r\n 1995          80            18.25         17.4         -0.85          0 \r\n 1995          81            6.776         13.825        1.525         0 \r\n 1995          82            12.476        11.775        2.775         0 \r\n 1995          83            18.65         13.55        -0.875         0 \r\n 1995          84            3.775         13.375        5.95          9.475 \r\n 1995          85            10.801        18.975        6             14.3 \r\n 1995          86            5.25          11.775        1.55          0 \r\n 1995          87            5.975         8.175        -0.875         0 \r\n 1995          88            7.425         7.3          -1.925         0 \r\n 1995          89            7.801         6.1          -5.175         0 \r\n 1995          90            16.801        8.15         -4.825         0 \r\n 1995          91            20.375        13.4         -1.225         0 \r\n 1995          92            21.4          22.775        2.2           0 \r\n 1995          93            17.526        17.95         4.85          0 \r\n 1995          94            13.7          10.4         -6.05          0 \r\n 1995          95            20.175        21.6         -3.55          0 \r\n 1995          96            22.349        18.175        5.175         0 \r\n 1995          97            5.076         18.275        6.325         6.8 \r\n 1995          98            9.601         15.275        4.85          2.375 \r\n 1995          99            3.925         10.05         3.2           19.65 \r\n 1995          100           2.675         4.2          -0.7           10.85 \r\n 1995          101           4             7.425         1.175         8.875 \r\n 1995          102           8.475         7.25         -1.725         0 \r\n 1995          103           21.775        19.775       -2.075         0 \r\n 1995          104           20.2          21.225        6.175         0 \r\n 1995          105           20.276        18.675        8.45          0 \r\n 1995          106           6.651         13.675        6.175         2.475 \r\n 1995          107           6.874         12.425        1.875         0 \r\n 1995          108           7.55          13.75         6.975         8.475 \r\n 1995          109           22.3          15.5         -0.275         0 \r\n 1995          110           5.451         11.775        2.475         13.725 \r\n 1995          111           11.85         11.2          1.775         0 \r\n 1995          112           25.299        14.925        1.325         0 \r\n 1995          113           20.925        17.775        4.325         0 \r\n 1995          114           18.8          12.975        3.375         3.825 \r\n 1995          115           13.577        16.825        2.975         2.475 \r\n 1995          116           4.15          12.7          5.775         33.326 \r\n 1995          117           22.226        14.25        -0.95          0 \r\n 1995          118           14.076        16.7          3.375         0.975 \r\n 1995          119           4.35          12.725        6.8           3.625 \r\n 1995          120           8.95          11.9          3.575         0 \r\n 1995          121           11.475        11.15         5             0 \r\n 1995          122           17.425        16.325        2.275         0 \r\n 1995          123           5.425         13.125        6.5           14.276 \r\n 1995          124           7.25          16.95         7.15          9.65 \r\n 1995          125           18.698        20.65         6.1           0 \r\n 1995          126           9.95          19.475        9.85          13.276 \r\n 1995          127           5.475         20.05         10.75         6.875 \r\n 1995          128           9.6           21.025        15.525        36.627 \r\n 1995          129           10.276        18.475        11.8          12.201 \r\n 1995          130           7.925         16.5          9.875         0 \r\n 1995          131           14.05         18.975        7.725         0 \r\n 1995          132           7.824         17.525        8.1           1.85 \r\n 1995          133           21.576        23            12.65         1.925 \r\n 1995          134           24.1          19.6          8             0 \r\n 1995          135           25.075        23.7          9.15          0 \r\n 1995          136           13.2          24.675        14.975        7.5 \r\n 1995          137           21.648        20.7          7.775         0 \r\n 1995          138           23.149        18.2          6.375         4.925 \r\n 1995          139           28.45         22.75         6.925         0 \r\n 1995          140           21.849        19.3          10.4          0 \r\n 1995          141           24.35         22.675        8.525         7.675 \r\n 1995          142           10.325        21.825        12.625        6.55 \r\n 1995          143           14.149        18.95         9.775         12.951 \r\n 1995          144           24.549        18.4          9.3           0 \r\n 1995          145           26.25         21.35         7.6           0 \r\n 1995          146           8.3           19.425        9.55          4.375 \r\n 1995          147           15.1          21.1          13.125        28.576 \r\n 1995          148           7.65          19.55         12.525        5.675 \r\n 1995          149           27.775        23            8.1           0 \r\n 1995          150           25.724        24.025        11.75         0 \r\n 1995          151           14.449        21.125        15.15         3.925 \r\n 1995          152           11.525        21.9          14.9          2.9 \r\n 1995          153           22.975        24.15         13.825        0 \r\n 1995          154           22.949        27.025        15.2          1.25 \r\n 1995          155           8.951         24.75         17.1          4.9 \r\n 1995          156           12.926        25.325        18.75         2.8 \r\n 1995          157           25.625        28.05         18.025        1.2 \r\n 1995          158           30            30.125        19.775        3.4 \r\n 1995          159           7.55          25.7          13.1          0 \r\n 1995          160           8.776         24.15         11.55         0 \r\n 1995          161           16.753        22.4          10.675        2.4 \r\n 1995          162           27.45         24.55         9.5           0 \r\n 1995          163           30.875        25.3          10.175        0 \r\n 1995          164           27.2          27.45         12.35         0 \r\n 1995          165           29.925        28.025        15.2          0 \r\n 1995          166           26.775        27.25         18.2          0 \r\n 1995          167           26.2          27.925        20.05         0 \r\n 1995          168           27.949        28.9          19.4          0 \r\n 1995          169           25.25         29.675        19.15         0 \r\n 1995          170           28.4          30.075        18.325        0 \r\n 1995          171           26.725        30.8          18.15         0 \r\n 1995          172           28.225        32.325        19.825        0 \r\n 1995          173           24.8          29.1          21.1          1.7 \r\n 1995          174           24.074        29            19.65         0 \r\n 1995          175           19.424        26.275        19.85         12.15 \r\n 1995          176           6.925         23.875        18.15         9.75 \r\n 1995          177           9.426         23.1          17.2          3.3 \r\n 1995          178           22.001        24.65         17.35         8.85 \r\n 1995          179           21.201        26.45         17            1.9 \r\n 1995          180           26.7          25.725        16.7          0 \r\n 1995          181           26.425        23.55         13.05         0 \r\n 1995          182           26.175        24.975        10.6          0 \r\n 1995          183           21.2          26.075        12.1          0 \r\n 1995          184           19.625        27.175        15.15         2.75 \r\n 1995          185           13.051        26.1          18.95         7.225 \r\n 1995          186           15.202        25            17.2          1.15 \r\n 1995          187           30.8          28.425        14.525        0 \r\n 1995          188           24.674        30.2          17.125        0 \r\n 1995          189           26.324        29.85         17.3          0 \r\n 1995          190           30.35         29.25         18.9          0 \r\n 1995          191           26.7          31.95         18.475        0 \r\n 1995          192           29.05         33.025        22.3          0 \r\n 1995          193           29.55         36.025        23.55         0 \r\n 1995          194           28.075        36.4          23.05         0 \r\n 1995          195           27.95         32.875        23.775        3.4 \r\n 1995          196           16.726        30.975        22.15         5.95 \r\n 1995          197           26.225        30.1          20.725        0 \r\n 1995          198           29.925        28.475        17.2          0 \r\n 1995          199           26.875        30.675        17.775        3 \r\n 1995          200           18.175        31.05         19.65         0 \r\n 1995          201           23.9          27.8          19.3          1.4 \r\n 1995          202           26.025        29.5          16.875        5.1 \r\n 1995          203           24.024        29.85         20.825        10.075 \r\n 1995          204           18.826        28.85         19.2          1.25 \r\n 1995          205           22.6          30.825        19.55         3.725 \r\n 1995          206           24.426        30.15         18.275        0 \r\n 1995          207           28.9          31.275        18.975        0 \r\n 1995          208           28.325        32.025        21            0 \r\n 1995          209           29.575        32.825        18.6          0 \r\n 1995          210           28.125        32.725        19.3          0 \r\n 1995          211           27.725        31.7          21.3          3.2 \r\n 1995          212           10.826        28.975        21.6          6.25 \r\n 1995          213           18.824        25.975        14.425        0 \r\n 1995          214           10.775        28.05         18.525        0 \r\n 1995          215           18.9          28.775        20.675        0 \r\n 1995          216           23.15         29.9          20.975        1.4 \r\n 1995          217           19.876        28.8          19.4          1.2 \r\n 1995          218           23.95         28            19.8          0.8 \r\n 1995          219           24.45         30            20.525        0 \r\n 1995          220           26.7          32.75         23.375        0 \r\n 1995          221           21.6          30.625        22.25         2.175 \r\n 1995          222           26.5          32.2          23.2          3.475 \r\n 1995          223           27.375        33.15         21.95         0 \r\n 1995          224           26.7          33.45         22.55         0 \r\n 1995          225           21.851        32.7          23.425        1.575 \r\n 1995          226           8.275         29.9          22.025        2.925 \r\n 1995          227           6.4           27.85         18.5          14.8 \r\n 1995          228           13.326        30.1          20.8          4.6 \r\n 1995          229           25.625        32.2          23.45         0 \r\n 1995          230           25.375        33.2          23.1          0 \r\n 1995          231           23.424        30.15         17.175        0 \r\n 1995          232           20.351        29.05         14.125        0 \r\n 1995          233           16.35         30.975        18.3          0 \r\n 1995          234           10.501        29.275        17.25         13.125 \r\n 1995          235           13.876        32.125        20.875        3.725 \r\n 1995          236           24.15         32.025        20.2          0 \r\n 1995          237           25.275        31.775        18            0 \r\n 1995          238           19.026        32.6          17.875        0 \r\n 1995          239           23.3          32.65         21.2          0 \r\n 1995          240           23.025        33.6          22.05         0 \r\n 1995          241           21.675        33.95         20.9          1.1 \r\n 1995          242           13.101        34.525        21.65         0 \r\n 1995          243           11.024        30.45         16.725        0 \r\n 1995          244           24.175        27.85         15.575        0.6 \r\n 1995          245           17.049        28.95         16.65         4.55 \r\n 1995          246           20.6          28.9          18.85         0 \r\n 1995          247           23.875        30.85         17            0 \r\n 1995          248           10.451        29.875        17.175        0 \r\n 1995          249           13.725        27.35         20.125        0.8 \r\n 1995          250           6.225         24.45         12.85         0 \r\n 1995          251           20.448        22.1          7.275         0 \r\n 1995          252           22.65         22.225        7.6           0 \r\n 1995          253           22.8          23.25         7.7           0 \r\n 1995          254           11.775        23.95         10.05         7.225 \r\n 1995          255           17.15         24.225        14.425        0 \r\n 1995          256           21.9          29.875        14.175        0 \r\n 1995          257           20.675        25.1          12.15         0 \r\n 1995          258           21.325        28.275        12.2          0 \r\n 1995          259           17.499        27.075        16.85         0 \r\n 1995          260           20.125        22.925        8.7           0 \r\n 1995          261           16.301        26.475        9.75          6.025 \r\n 1995          262           5.175         21.625        11.125        13.825 \r\n 1995          263           4.726         13.675        3.825         0.6 \r\n 1995          264           8.925         10.1          2.7           1.6 \r\n 1995          265           20.7          13.7         -2.2           0 \r\n 1995          266           15.801        17.55         1.725         0 \r\n 1995          267           12.899        18.3          4.175         0.5 \r\n 1995          268           19.675        21.2          4.3           0 \r\n 1995          269           19.425        24.9          6.425         0 \r\n 1995          270           18.875        26.325        8.275         0 \r\n 1995          271           16.625        25.475        10.5          3.325 \r\n 1995          272           6.125         23.65         16.9          11.25 \r\n 1995          273           9.2           23.2          15.175        1.675 \r\n 1995          274           19.15         23.65         8.625         0 \r\n 1995          275           10.124        22.65         13            2.125 \r\n 1995          276           18.875        21.5          6.775         0 \r\n 1995          277           14.426        23.05         9.6           0 \r\n 1995          278           3.425         17.95         9.175         10.751 \r\n 1995          279           6.225         13.875        6.65          1.825 \r\n 1995          280           17.7          17.65         3.775         0 \r\n 1995          281           5.226         18.525        6.2           0.9 \r\n 1995          282           17.475        19.6          5.925         0 \r\n 1995          283           17.225        24            6.9           0 \r\n 1995          284           17.125        27.2          11            0 \r\n 1995          285           15.875        29.1          15.3          0 \r\n 1995          286           6.275         24.05         11.9          0 \r\n 1995          287           14.6          16.625        4.05          0 \r\n 1995          288           15.225        20.65         6.325         0 \r\n 1995          289           14.075        22.325        5.2           0 \r\n 1995          290           14.35         23.75         13.925        0 \r\n 1995          291           13.3          22.85         6.025         0 \r\n 1995          292           5.725         18.325        9.875         0 \r\n 1995          293           10.175        11.225        4.325         0 \r\n 1995          294           13.4          13.5         -1.875         0 \r\n 1995          295           13.225        18.375        2.925         0 \r\n 1995          296           5.175         17.025        4.95          1.95 \r\n 1995          297           13.875        14.4          0.8           0 \r\n 1995          298           13.975        18.175        2.275         0 \r\n 1995          299           4.85          15.425        3.9           0 \r\n 1995          300           4.176         12.675        5.975         0 \r\n 1995          301           13.325        13.575        3.325         0 \r\n 1995          302           8.401         16.225        2.55          1.75 \r\n 1995          303           2.15          8.525         0.4           3.55 \r\n 1995          304           2.55          4.975        -1.775         2.575 \r\n 1995          305           2.75          6.45          1.05          17.875 \r\n 1995          306           12.275        2.55         -4.85          0 \r\n 1995          307           12.95         1.75         -8.3           0 \r\n 1995          308           12.05         4.45         -8.2           0 \r\n 1995          309           12.925        7.575        -3.15          2.475 \r\n 1995          310           10.875        7.55         -1.05          0 \r\n 1995          311           5.676         5.35         -3.75          0 \r\n 1995          312           7.4           3.325        -6.425         0 \r\n 1995          313           10.626        16           -3.2           0 \r\n 1995          314           3.925         11.9         -5.5           5.6 \r\n 1995          315           9.099        -1.825        -11.275        0 \r\n 1995          316           7.325         4.15         -6.85          0 \r\n 1995          317           6.525         4.5          -5.25          0 \r\n 1995          318           9.076         4.875        -4.375         0 \r\n 1995          319           4.7           5.85         -4.4           1.075 \r\n 1995          320           7.676         10.625       -2.825         0 \r\n 1995          321           3.725         8.675         0.4           0 \r\n 1995          322           10.725        12.85        -2.6           0 \r\n 1995          323           9.95          12.7          1.5           0 \r\n 1995          324           11.025        9.9          -0.225         0 \r\n 1995          325           9.375         6.075        -4.475         0 \r\n 1995          326           5.45          5.475        -2.55          0 \r\n 1995          327           5.325         2.3          -6.7           0 \r\n 1995          328           7.175         6.825        -6.225         0 \r\n 1995          329           7.95          8.9          -0.275         0 \r\n 1995          330           5.15          8.525         0.275         0 \r\n 1995          331           3.15          4.175        -7.8           6.85 \r\n 1995          332           6            -0.6          -11.175        0 \r\n 1995          333           6.625         3.55         -5.65          1.175 \r\n 1995          334           6.201         11.675       -1.825         0 \r\n 1995          335           9.7           9.7           1.55          0 \r\n 1995          336           9.175         11.9          2.975         0 \r\n 1995          337           9.125         12.35         0.275         0 \r\n 1995          338           5.5           8.025        -2.4           0 \r\n 1995          339           8.6           7.75         -2.025         0 \r\n 1995          340           4.525         1.35         -3.2           3.55 \r\n 1995          341           6.125         1.775        -5.975         0 \r\n 1995          342           5.15         -0.775        -16.9          6.1 \r\n 1995          343           7.525        -11.575       -21.85         0 \r\n 1995          344           5.75         -3.575        -22.225        0 \r\n 1995          345           4.9          -7.45         -18.175        0 \r\n 1995          346           4.925        -6.1          -16.2          0 \r\n 1995          347           2.1           1.75         -9.1           0.425 \r\n 1995          348           7.15          3            -2.75          0 \r\n 1995          349           8.275         3            -3             0 \r\n 1995          350           7.075         3.55         -2.025         0 \r\n 1995          351           2.2           5.575        -0.575         0 \r\n 1995          352           3.075         2.35         -1.25          0 \r\n 1995          353           4.4           1.475        -5.2           0 \r\n 1995          354           4.85          0.625        -5.45          0 \r\n 1995          355           6.2           0            -5             0 \r\n 1995          356           6.525        -2.475        -6.45          0 \r\n 1995          357           6.6           0.3          -6.95          0 \r\n 1995          358           4.925         0.5          -7.475         0 \r\n 1995          359           6.4           1.925        -4.975         0 \r\n 1995          360           9.125         4.575        -4.2           0 \r\n 1995          361           6.075         0.375        -4.1           0 \r\n 1995          362           7.375         0.95         -6.7           0 \r\n 1995          363           6.226         4.2          -5.775         0 \r\n 1995          364           2.825         2.75         -1.05          1.025 \r\n 1995          365           4.05          3.925        -3.025         0 \r\n 1996          1             4.7           1.9          -4.275         0 \r\n 1996          2             4.775        -1.25         -6.225         0.7 \r\n 1996          3             5.45         -3.975        -11.9          0 \r\n 1996          4             5.65         -3.9          -7.925         3.875 \r\n 1996          5             6.025        -7.225        -14.35         0 \r\n 1996          6             5.85         -11.275       -18.5          0 \r\n 1996          7             6.225        -10.825       -21.05         0 \r\n 1996          8             5.075        -0.1          -15.15         0 \r\n 1996          9             9.175         2.5          -5.1           0 \r\n 1996          10            4.15          0.825        -5.85          0 \r\n 1996          11            5.425         3.175        -0.9           0 \r\n 1996          12            9.925         8.05         -3.125         0 \r\n 1996          13            9.9           9            -1.6           0 \r\n 1996          14            8.651         5.75         -4.45          0 \r\n 1996          15            4.7           0.4          -12.825        0 \r\n 1996          16            8.5           8.575        -2.575         0 \r\n 1996          17            2.125         10.375       -1.025         12.601 \r\n 1996          18            3.25          9.675        -19.775        5.8 \r\n 1996          19            7.7          -15.75        -25.925        0 \r\n 1996          20            8.5          -5.5          -18.075        0 \r\n 1996          21            9.826         4            -10.55         0 \r\n 1996          22            8.275         1.325        -9.075         0 \r\n 1996          23            4.525        -7.45         -13.4          0.95 \r\n 1996          24            7.375        -4.625        -13.85         0 \r\n 1996          25            6.15         -1.45         -10.625        0.65 \r\n 1996          26            4.2          -8.375        -15.775        7.775 \r\n 1996          27            7.125        -9.55         -25.625        0 \r\n 1996          28            10.725        1.45         -19.825        0.7 \r\n 1996          29            8.85          0.6          -27.25         0 \r\n 1996          30            6.5          -17.3         -21.75         1.65 \r\n 1996          31            7.875        -13.5         -32.725        0 \r\n 1996          32            5.325        -15.45        -29.35         0 \r\n 1996          33            5.8          -19.1         -37.7          0 \r\n 1996          34            6.025        -19.4         -35.65         0 \r\n 1996          35            6.225        -7.65         -30.175        0 \r\n 1996          36            6.5          -5            -13.825        0 \r\n 1996          37            7.35          3.025        -15.975        0 \r\n 1996          38            8.225         9.375        -1.5           0 \r\n 1996          39            12.324        9.5           1.925         0 \r\n 1996          40            13            14.375        1.375         0 \r\n 1996          41            12.875        9.225         1.875         0 \r\n 1996          42            14.275        3.55         -4.1           0 \r\n 1996          43            14.05         3.925        -7.275         0 \r\n 1996          44            10.825        9.6          -1.025         0 \r\n 1996          45            5.926         7.575        -0.675         0 \r\n 1996          46            8.5           1.675        -9.05          0 \r\n 1996          47            13.075        0.9          -14.475        0 \r\n 1996          48            10.7          0.6          -3.8           0 \r\n 1996          49            11.025        5.625        -7.175         0 \r\n 1996          50            13.8          13.875       -1.3           0 \r\n 1996          51            14.925        11.75         1.3           0 \r\n 1996          52            3.476         10.125       -1.95          5.4 \r\n 1996          53            3.6           9.375        -2.95          0 \r\n 1996          54            12.45         10.2          1.95          0 \r\n 1996          55            15.975        16.65        -2.4           0 \r\n 1996          56            11.2          16.05         1.75          0 \r\n 1996          57            5.8           10.825       -5.5           0 \r\n 1996          58            15.225       -0.2          -9.375         0.4 \r\n 1996          59            15.125       -5.775        -14.65         0 \r\n 1996          60            16.225       -1.675        -15.4          0 \r\n 1996          61            11.725        0.1          -9.65          0 \r\n 1996          62            15.875       -1.975        -9.425         0 \r\n 1996          63            8.025        -1.825        -14.275        0 \r\n 1996          64            11.475        3.225        -10            0 \r\n 1996          65            12.25         3.925        -6.425         0 \r\n 1996          66            8.475        -0.925        -11.15         0.5 \r\n 1996          67            15.15        -8.9          -20.725        0 \r\n 1996          68            15.775       -4.225        -19.4          0 \r\n 1996          69            17.8          1.375        -15.725        0 \r\n 1996          70            15.4          7.75         -8.25          0 \r\n 1996          71            14.276        10.05        -3.6           0 \r\n 1996          72            17.725        15.55        -0.275         0 \r\n 1996          73            18.6          19.85         1.15          0 \r\n 1996          74            14.524        13.775        0.925         0 \r\n 1996          75            20            14.25        -1.825         0 \r\n 1996          76            10.775        15.975       -1.725         0.3 \r\n 1996          77            19.875        11.175       -3.5           0 \r\n 1996          78            19.425        8.2          -4.675         0 \r\n 1996          79            11.976        1.375        -6.275         0 \r\n 1996          80            19.35         6.45         -5.925         0 \r\n 1996          81            19.175        5.55         -8             0 \r\n 1996          82            21.825        11.55        -4.35          0 \r\n 1996          83            6.725         11.025       -1.225         4.15 \r\n 1996          84            4.65          15.4          6.725         5.025 \r\n 1996          85            13.051        5.55         -14.5          2.175 \r\n 1996          86            18.351        2.575        -12.1          0 \r\n 1996          87            20.825        9.25         -6.75          0 \r\n 1996          88            17.725        12.075       -3.225         0 \r\n 1996          89            13.25         13.675       -3.5           0 \r\n 1996          90            4.1           9.225         1.4           2.55 \r\n 1996          91            18.025        10.55        -6.875         0 \r\n 1996          92            19.876        13.3         -3.325         0 \r\n 1996          93            22.325        22.2          4.1           0 \r\n 1996          94            11.551        18.4          6.275         0 \r\n 1996          95            9.05          7.475        -3.7           0 \r\n 1996          96            16.426        8.275        -3.85          0 \r\n 1996          97            20.325        11           -4.2           0 \r\n 1996          98            20.5          10.85        -1.025         0 \r\n 1996          99            11.376        9.375        -2.4           0 \r\n 1996          100           24.125        14.525       -1.65          0 \r\n 1996          101           25.3          21.225        0.775         0 \r\n 1996          102           18.475        27.625        9.575         0 \r\n 1996          103           9.352         22.475        5.225         0 \r\n 1996          104           19.25         11.9         -4.3           0 \r\n 1996          105           3.8           7.425         0.025         14.025 \r\n 1996          106           20.3          12.4         -2.1           0.675 \r\n 1996          107           22.9          16.5         -2.35          0 \r\n 1996          108           23.275        23.95         7.45          0 \r\n 1996          109           19.876        21.35         11.55         0 \r\n 1996          110           15.578        22.95         9.9           0.675 \r\n 1996          111           24.425        16.575        2.65          9.575 \r\n 1996          112           13.351        18.4          5.725         0 \r\n 1996          113           24.249        14.3          2.4           0 \r\n 1996          114           27.075        17.775       -1.225         0 \r\n 1996          115           19.05         24.9          7.375         0 \r\n 1996          116           20.25         20.8          10.45         0 \r\n 1996          117           25.55         14.45         0.125         0.875 \r\n 1996          118           16.574        20.125        4             0 \r\n 1996          119           6.274         14.9          5.875         21.051 \r\n 1996          120           18.7          11.3          2.85          7.25 \r\n 1996          121           23.749        17.775        1.2           0 \r\n 1996          122           25            17.35         1.725         0 \r\n 1996          123           17.351        17.85         6.6           15.101 \r\n 1996          124           9.352         16.875        4.7           7.6 \r\n 1996          125           9.25          19.825        5.25          0 \r\n 1996          126           21.075        19.65         9.6           0 \r\n 1996          127           9.849         12.975        3.15          0 \r\n 1996          128           17.424        18.325        6.5           0 \r\n 1996          129           14.325        23.125        11.15         22.576 \r\n 1996          130           10.325        23.275        16.25         26.176 \r\n 1996          131           8.325         19.05         9.175         13.351 \r\n 1996          132           19.975        17            3.8           0 \r\n 1996          133           5.8           11.6          4.25          6.775 \r\n 1996          134           11.725        17.55         3.15          6.075 \r\n 1996          135           5.15          18.425        7.325         3.5 \r\n 1996          136           12.277        24.975        13.9          0 \r\n 1996          137           15.175        25.075        17.975        5.025 \r\n 1996          138           28.475        29.65         18.95         2.025 \r\n 1996          139           26.4          29.6          17.6          0 \r\n 1996          140           22.6          27.275        20.85         0 \r\n 1996          141           15.201        22.825        14.275        2.875 \r\n 1996          142           29.2          24.4          11.325        0 \r\n 1996          143           13.026        25.575        13.375        0 \r\n 1996          144           11.952        23.025        14.05         22.101 \r\n 1996          145           6.85          20.125        11.625        23.426 \r\n 1996          146           5.55          18.975        11.25         13.576 \r\n 1996          147           5.125         16.55         9.1           8 \r\n 1996          148           8.85          19.85         11.625        25.326 \r\n 1996          149           6.5           15.625        8.375         2.35 \r\n 1996          150           17.598        19.925        9.3           0 \r\n 1996          151           25.85         21.225        8.025         0 \r\n 1996          152           9.624         20.925        9.575         13.701 \r\n 1996          153           24.825        23.45         16.6          5.65 \r\n 1996          154           24.302        24.2          13.75         0 \r\n 1996          155           16.178        20.35         9.05          0 \r\n 1996          156           28.375        23.7          8.075         0 \r\n 1996          157           14.7          26.025        12.05         4.725 \r\n 1996          158           14.076        22.775        18.05         5.025 \r\n 1996          159           12.051        20.25         12.775        0 \r\n 1996          160           29.05         23.875        10.3          0 \r\n 1996          161           28.275        24.475        11.225        0 \r\n 1996          162           28.475        26.1          12.875        0 \r\n 1996          163           29.55         29.425        14.9          3.525 \r\n 1996          164           20.85         30.25         16.45         0 \r\n 1996          165           27.525        29.2          18.4          0 \r\n 1996          166           24.275        28.65         18.45         2.5 \r\n 1996          167           13.6          28.2          19.15         0 \r\n 1996          168           14.176        26.575        21.35         13.975 \r\n 1996          169           15.176        26.075        20.15         3.25 \r\n 1996          170           27.701        27.775        15.3          0 \r\n 1996          171           30.275        28.1          16.425        5.25 \r\n 1996          172           18.952        28.125        21.15         34.125 \r\n 1996          173           24.124        30.525        21.125        12.225 \r\n 1996          174           18.024        27.825        16.55         22.925 \r\n 1996          175           22.101        29.375        18            4.55 \r\n 1996          176           27.25         26.9          16.3          0 \r\n 1996          177           23.25         28.15         16.025        0 \r\n 1996          178           26.9          28.325        18.3          0 \r\n 1996          179           24.825        29.1          19.35         0 \r\n 1996          180           25.326        31.6          22.875        0 \r\n 1996          181           25.65         31.725        23.125        0 \r\n 1996          182           30.275        30.25         20.3          0 \r\n 1996          183           27.625        30.575        18.375        0 \r\n 1996          184           29.775        29.3          20.15         1.6 \r\n 1996          185           19.902        27.95         15.9          3.15 \r\n 1996          186           15.975        25.2          16.875        16.074 \r\n 1996          187           28.075        29.025        14.6          0 \r\n 1996          188           15.95         29.175        18.175        0 \r\n 1996          189           27.05         28.075        18.2          0 \r\n 1996          190           29.999        25.5          18.75         0 \r\n 1996          191           29.525        23.3          13.3          0 \r\n 1996          192           24.474        25.5          12.15         0 \r\n 1996          193           16.2          27.375        13.65         0 \r\n 1996          194           27.475        28.5          19.15         0 \r\n 1996          195           24.199        27.725        16.6          0 \r\n 1996          196           25.574        26.95         17.525        0 \r\n 1996          197           29.3          30.025        16.6          3.15 \r\n 1996          198           12.676        30.175        19.125        20.449 \r\n 1996          199           24.25         30.05         22.6          27.099 \r\n 1996          200           28.725        32.85         23.725        1.65 \r\n 1996          201           19.3          31            22.725        0 \r\n 1996          202           4.949         27.7          19.775        5.7 \r\n 1996          203           15.849        26.875        18.075        1.3 \r\n 1996          204           12.975        27            19.225        3.4 \r\n 1996          205           25.4          28.175        15.5          0 \r\n 1996          206           28.575        25.95         16.875        0 \r\n 1996          207           28.75         25.9          14.125        0 \r\n 1996          208           19.598        27.5          15            0 \r\n 1996          209           21.601        25.45         17.4          3.8 \r\n 1996          210           26.025        28.1          17.55         0 \r\n 1996          211           23.551        27.5          17.35         0 \r\n 1996          212           24.524        25.4          14.9          0 \r\n 1996          213           17.474        27.325        15.275        0 \r\n 1996          214           17.449        27.225        14.875        0 \r\n 1996          215           22.3          28.575        14.95         0 \r\n 1996          216           15.376        27.675        16.875        9.35 \r\n 1996          217           8.852         28.075        20.45         25.426 \r\n 1996          218           21.375        29.475        21.875        10.375 \r\n 1996          219           26.05         31.3          22.25         4.05 \r\n 1996          220           24.174        27.9          20.875        1.525 \r\n 1996          221           27.65         29.7          15.1          0 \r\n 1996          222           26.1          30.725        16.85         0 \r\n 1996          223           12.049        26.45         18.35         0 \r\n 1996          224           11.824        23.425        15.15         0 \r\n 1996          225           23.825        27.025        13.2          0 \r\n 1996          226           25.225        29.725        15.425        0 \r\n 1996          227           21.174        30.55         17.875        0 \r\n 1996          228           23.675        28.125        14.75         0 \r\n 1996          229           7.399         25.325        13.8          3.625 \r\n 1996          230           9.749         25            17.025        0 \r\n 1996          231           10.426        26.65         17.575        7.525 \r\n 1996          232           10.052        26.925        18.1          5.325 \r\n 1996          233           18.976        26.775        19.3          0 \r\n 1996          234           21.224        28.4          18.9          1.1 \r\n 1996          235           9.35          26.1          20.55         5.875 \r\n 1996          236           22.974        25.75         14.15         0 \r\n 1996          237           22.774        27            12.9          0 \r\n 1996          238           18.399        27.35         15.475        1.2 \r\n 1996          239           12.376        25.45         17.975        3.125 \r\n 1996          240           13.35         25.7          17.125        0 \r\n 1996          241           18.05         26.45         17.7          0 \r\n 1996          242           19.8          26.975        16.925        0 \r\n 1996          243           19.175        27.5          14.85         0 \r\n 1996          244           17.151        27.3          15.625        0 \r\n 1996          245           19.275        27.125        14.5          0 \r\n 1996          246           20.301        26.825        15.85         4.95 \r\n 1996          247           14.401        27.475        16.45         3.125 \r\n 1996          248           22.6          28.35         17.375        0 \r\n 1996          249           21.975        28.75         16.975        0 \r\n 1996          250           20.6          29.15         15.725        1.2 \r\n 1996          251           10.125        28.85         16.475        3.65 \r\n 1996          252           15.625        22.3          17.65         14.55 \r\n 1996          253           23.6          27.325        10.075        0 \r\n 1996          254           21.051        29.25         13.15         0 \r\n 1996          255           17.524        25.725        16.15         1.3 \r\n 1996          256           19.751        20.8          7.325         0 \r\n 1996          257           19.825        20.7          7.475         0 \r\n 1996          258           20.999        21.35         5.5           0 \r\n 1996          259           7.349         15.95         8.825         0 \r\n 1996          260           17.35         22.25         10.125        0 \r\n 1996          261           18.525        22.575        7.875         0 \r\n 1996          262           8.25          22.225        9.1           2.5 \r\n 1996          263           4.175         17.5          12.7          20.575 \r\n 1996          264           17.625        21.3          7.625         0 \r\n 1996          265           20.35         20.95         8.475         0 \r\n 1996          266           15.001        24.45         8.975         0 \r\n 1996          267           10.599        20.775        11.875        15.05 \r\n 1996          268           17.749        20.3          5.45          4.075 \r\n 1996          269           5.6           20.45         9.525         8.7 \r\n 1996          270           6.025         13.9          6.25          17.275 \r\n 1996          271           11.176        15.475        2.9           0 \r\n 1996          272           19.075        19.4          4             0 \r\n 1996          273           18.9          21            7.75          0 \r\n 1996          274           18.075        24.875        11.225        0 \r\n 1996          275           18.375        25.925        11.775        0 \r\n 1996          276           16.499        20.9          7.6           0 \r\n 1996          277           16.125        17.325        2.75          0 \r\n 1996          278           14.35         21.2          4.9           0 \r\n 1996          279           18.075        25.625        8.925         0 \r\n 1996          280           13.674        24.675        11.65         0 \r\n 1996          281           12.874        20            7.475         0 \r\n 1996          282           15.975        20.275        2.775         0 \r\n 1996          283           15.475        19.15         7.025         0 \r\n 1996          284           17.75         15.625        1.3           0 \r\n 1996          285           16.3          21.175        3.55          0 \r\n 1996          286           16.25         26.2          9.65          0 \r\n 1996          287           16            27.825        13.5          0 \r\n 1996          288           14.675        27.35         13.175        0 \r\n 1996          289           14.6          26.55         13.425        0 \r\n 1996          290           14.625        23.975        14.35         0.475 \r\n 1996          291           6.725         20.475        4.925         0.675 \r\n 1996          292           15            13.75         1.8           0 \r\n 1996          293           14.15         19.9          3.05          0 \r\n 1996          294           11.5          20.975        9.075         0 \r\n 1996          295           11.15         17.9          3.7           0.45 \r\n 1996          296           2.875         7.45          0.225         30.052 \r\n 1996          297           12.725        12.15        -0.1           8.425 \r\n 1996          298           11.875        14.925        1.825         0 \r\n 1996          299           6.425         17.175        6.95          0 \r\n 1996          300           12.65         23.25         11.95         0 \r\n 1996          301           9.325         16.875        3.25          0 \r\n 1996          302           9.349         16.95         1.7           0 \r\n 1996          303           8.426         18.825        8.85          14.576 \r\n 1996          304           11.25         14.25        -2.775         0 \r\n 1996          305           5.2           4.125        -4             0 \r\n 1996          306           9.051         5.375        -5             0 \r\n 1996          307           13.35         5.525        -6.6           0 \r\n 1996          308           13.1          14.35        -1.55          1.025 \r\n 1996          309           3.275         9.625         4.2           9.025 \r\n 1996          310           7.551         9.2           3.525         0 \r\n 1996          311           10.3          10.5          5             0 \r\n 1996          312           12.775        11.9          0.2           0 \r\n 1996          313           10.05         6.475        -1.025         0 \r\n 1996          314           5.8           4.775        -1.625         0 \r\n 1996          315           5.275         0.35         -5.3           0 \r\n 1996          316           6.675        -0.35         -4.675         0 \r\n 1996          317           8.375         1.35         -5.075         0 \r\n 1996          318           5.975         1.75         -4.5           0.75 \r\n 1996          319           6.5          -0.025        -4.925         0 \r\n 1996          320           3             10.15        -2.05          13.45 \r\n 1996          321           2.85          14.375        8.55          37.301 \r\n 1996          322           10.825        10.9         -7.75          2.575 \r\n 1996          323           9.101         4.95         -4.725         0 \r\n 1996          324           7.1           6.025        -2.9           0 \r\n 1996          325           3.675         4.875        -3.6           0 \r\n 1996          326           3.275         3.05         -2.425         0 \r\n 1996          327           2.175         4.35         -3.475         0 \r\n 1996          328           3.1           3.875        -0.775         1.25 \r\n 1996          329           6.8          -2.125        -9.525         0 \r\n 1996          330           9.075        -3.3          -9.125         0 \r\n 1996          331           8.3          -3.725        -14.125        0 \r\n 1996          332           4.725        -1.35         -7.025         1.3 \r\n 1996          333           9.75          5.525        -6.825         0 \r\n 1996          334           1.95          1.625        -0.1           17.275 \r\n 1996          335           5.2           0.175        -4.75          0 \r\n 1996          336           9.65         -0.425        -8.225         0 \r\n 1996          337           4.8           0.075        -8.575         0.95 \r\n 1996          338           7.776        -1            -9.625         0 \r\n 1996          339           3.925         2.825        -7.35          0 \r\n 1996          340           6.025         0.8          -7.4           1.225 \r\n 1996          341           8.325         3.975        -4.6           0 \r\n 1996          342           9.55          5.6          -5.325         0 \r\n 1996          343           7.85          1.125        -6.1           0 \r\n 1996          344           5.875         5.35         -7.175         0 \r\n 1996          345           4.025         6.875        -0.975         0 \r\n 1996          346           3.975         2.775        -2.075         0 \r\n 1996          347           6.35          5.2          -3.1           0 \r\n 1996          348           7.075         4.9          -2.075         2.025 \r\n 1996          349           1.25          3.525        -2.75          5.05 \r\n 1996          350           7.325         0.775        -8.325         0 \r\n 1996          351           5             0.625        -7.55          0 \r\n 1996          352           6.425        -4.525        -12.05         0 \r\n 1996          353           7.15         -10.825       -16.75         0 \r\n 1996          354           7.025        -12.275       -19.45         0 \r\n 1996          355           8.2          -2.375        -18.625        0 \r\n 1996          356           5.85          0.375        -5.45          0 \r\n 1996          357           4.325        -2.975        -11.125        0 \r\n 1996          358           5.575        -5.675        -15.8          0 \r\n 1996          359           7.225        -12.75        -21.125        0 \r\n 1996          360           4.451        -10.125       -19.05         0.525 \r\n 1996          361           3.8          -11.6         -18.425        0.85 \r\n 1996          362           3.75         -0.6          -14.85         0 \r\n 1996          363           6.026         1.275        -9.125         0 \r\n 1996          364           4.951        -4.425        -15.025        0 \r\n 1996          365           5.001         3.4          -10.675        0 \r\n 1996          366           3.875         0.575        -10.95         0 \r\n 1997          1             4.91          10.16         0.931         0 \r\n 1997          2             6.454         10.281       -1.009         0 \r\n 1997          3             1.937         10.482       -2.019         0 \r\n 1997          4             3.089         0.142        -9.99          0 \r\n 1997          5             4.179        -2.987        -13.671        0 \r\n 1997          6             9.004         0.39         -16.079        0 \r\n 1997          7             8.9           4.407        -10.222        0 \r\n 1997          8             6.28         -2.223        -14.801        0 \r\n 1997          9             3.89         -12.168       -24.679        0 \r\n 1997          10            6.503        -16.163       -24.212        0 \r\n 1997          11            8.843        -16.344       -23.624        0 \r\n 1997          12            7.582        -12.841       -19.202        0 \r\n 1997          13            5.844        -10.564       -16.384        0 \r\n 1997          14            1.935        -5.283        -12.984        3.937 \r\n 1997          15            6.421        -7.97         -21.613        0 \r\n 1997          16            10.354       -13.215       -29.24         0 \r\n 1997          17            10.343       -5.712        -24.191        0 \r\n 1997          18            7.812         5.095        -9.183         0 \r\n 1997          19            9.371         9.496        -5.066         0 \r\n 1997          20            9.829         10.084        0.036         0 \r\n 1997          21            2.127         6.197        -8.276         0 \r\n 1997          22            7.947        -2.371        -14.038        0 \r\n 1997          23            5.729        -2.678        -15.047        3.505 \r\n 1997          24            8.796        -11.548       -21.153        0 \r\n 1997          25            9.613        -15.513       -20.546        3.531 \r\n 1997          26            6.419        -14.067       -23.443        0 \r\n 1997          27            9.194        -10.133       -25.613        0 \r\n 1997          28            11.555       -5.975        -17.712        0 \r\n 1997          29            9.869         0.238        -17.278        0 \r\n 1997          30            10.689        9.179        -4.661         0 \r\n 1997          31            10.324        10.116       -0.273         0 \r\n 1997          32            7.309         8.764        -3.618         0 \r\n 1997          33            10.509        4.957        -2.536         2.642 \r\n 1997          34            2.743        -0.241        -3.217         10.998 \r\n 1997          35            6.437        -1.94         -5.258         0 \r\n 1997          36            5.435        -4.367        -7.56          0 \r\n 1997          37            5.628        -4.118        -7.231         2.921 \r\n 1997          38            6.558        -4.266        -11.305        0 \r\n 1997          39            12.325       -3.764        -13.345        0 \r\n 1997          40            6.622        -3.195        -7.963         0 \r\n 1997          41            6.693        -4.018        -8.122         0 \r\n 1997          42            5.573        -4.783        -16.201        0 \r\n 1997          43            14.195       -4.958        -16.855        0 \r\n 1997          44            12.525       -0.293        -11.05         0 \r\n 1997          45            12.905        0.247        -16.238        0 \r\n 1997          46            5.883        -0.356        -10.253        0 \r\n 1997          47            9.712         6.222        -5.307         0 \r\n 1997          48            12.208        13.062        1.315         0 \r\n 1997          49            12.424        10.154       -3.3           0 \r\n 1997          50            14.836        8.541        -0.776         2.997 \r\n 1997          51            3.92          5.088        -5.272         0 \r\n 1997          52            7.822         1.956        -7.573         0 \r\n 1997          53            13.746        3.394        -10.759        0 \r\n 1997          54            13.431       -0.564        -7.662         0 \r\n 1997          55            9.821         3.184        -9.347         0 \r\n 1997          56            15.318        3.368        -5.159         6.452 \r\n 1997          57            3.378         0.771        -6.462         0 \r\n 1997          58            13.29         3.88         -4.301         0 \r\n 1997          59            6.921         6.611        -2.774         0 \r\n 1997          60            12.27         6.491        -6.649         0 \r\n 1997          61            15.421        7.307        -0.722         0 \r\n 1997          62            13.6          4.707        -5.453         0 \r\n 1997          63            13.025        1.847        -11.109        0 \r\n 1997          64            17.395        2.893        -9.706         0 \r\n 1997          65            16.025        9.851        -5.929         0 \r\n 1997          66            17.473        15.806       -7.138         0 \r\n 1997          67            17.395        13.354       -0.102         8.052 \r\n 1997          68            18.276        16.383        0.379         0 \r\n 1997          69            18.308        14.291       -2.903         0 \r\n 1997          70            18.018        14.851        0.154         0 \r\n 1997          71            14.056        10.288       -0.324         7.823 \r\n 1997          72            3.543         1.512        -9.778         3.734 \r\n 1997          73            17.822       -1.133        -11.628        0 \r\n 1997          74            17.316        7.934        -7.153         0 \r\n 1997          75            17.921        11.156        0.791         0 \r\n 1997          76            4.896         7.232        -0.126         0 \r\n 1997          77            1.452         8.641        -1.794         0 \r\n 1997          78            15.702        18.143       -1.624         0 \r\n 1997          79            18.288        19.468        1.714         0 \r\n 1997          80            19.086        16.195       -3.517         0 \r\n 1997          81            20.752        12.427       -3.308         0 \r\n 1997          82            14.75         8.156         1.742         11.659 \r\n 1997          83            7.79          10.086       -1.552         0 \r\n 1997          84            20.505        18.865       -2.178         0 \r\n 1997          85            21.844        24.662        3.19          0 \r\n 1997          86            19.753        20.111        5.068         0 \r\n 1997          87            3.671         13.33        -0.662         0 \r\n 1997          88            13.377        15.337       -1.148         0 \r\n 1997          89            22.505        20.817       -1.331         0 \r\n 1997          90            22.321        21.602        3.016         0 \r\n 1997          91            15.662        17.643        8.419         0 \r\n 1997          92            4.113         15.594        5.247         3.581 \r\n 1997          93            8.842         15.056        5.329         4.191 \r\n 1997          94            2.457         15.259        8.053         19.533 \r\n 1997          95            7.211         9.687        -2.187         9.144 \r\n 1997          96            14.295        4.487        -6.334         0 \r\n 1997          97            21.509        3.867        -6.295         0 \r\n 1997          98            20.523        1.643        -7.261         0 \r\n 1997          99            8.018         0.484        -2.982         7.391 \r\n 1997          100           8.015        -0.007        -2.081         3.124 \r\n 1997          101           7.362         1.329        -3.439         6.579 \r\n 1997          102           22.282        4.615        -6.736         4.572 \r\n 1997          103           25.676        11.254       -5.511         0 \r\n 1997          104           24.889        15.487        0.391         0 \r\n 1997          105           13.496        12.705       -2.054         0 \r\n 1997          106           25.538        14.565       -6.081         0 \r\n 1997          107           24.917        21.928        1.656         0 \r\n 1997          108           23.906        23.028        4.779         0 \r\n 1997          109           18.065        18.436        5.686         13.767 \r\n 1997          110           5.536         13.429        3.395         4.115 \r\n 1997          111           4.905         13.434        4.747         8.509 \r\n 1997          112           11.103        14.101        3.855         0 \r\n 1997          113           18.895        13.843       -0.297         0 \r\n 1997          114           19.123        18.256       -1.177         0 \r\n 1997          115           24.714        19.557        3.934         0 \r\n 1997          116           10.247        18.926        5.468         0 \r\n 1997          117           22.191        22.093        1.793         0 \r\n 1997          118           23.641        21.349        5.622         0 \r\n 1997          119           21.929        18.303        2.559         34.696 \r\n 1997          120           10.56         13.213       -0.039         7.417 \r\n 1997          121           16.341        15.007        4.536         6.375 \r\n 1997          122           9.508         15.094        4.242         0 \r\n 1997          123           22.527        21.659        0.697         0 \r\n 1997          124           27.111        24.108        7.598         0 \r\n 1997          125           27.583        20.118        4.43          0 \r\n 1997          126           15.774        24.324        10.628        2.54 \r\n 1997          127           18.968        24.219        6.629         0 \r\n 1997          128           21.219        20.416        3.432         0 \r\n 1997          129           28.664        22.516        0.508         0 \r\n 1997          130           28.144        22.638        11.474        0 \r\n 1997          131           14.971        17.848        2.184         0 \r\n 1997          132           17.737        17.966       -2.401         0 \r\n 1997          133           24.577        17.406        4.596         0 \r\n 1997          134           28.138        17.075        1.948         0 \r\n 1997          135           28.103        24.553        3.155         0 \r\n 1997          136           25.86         30.313        7.147         0 \r\n 1997          137           20.87         30.174        16.088        0 \r\n 1997          138           24.882        26.908        7.676         0 \r\n 1997          139           27.489        18.973        1.773         0 \r\n 1997          140           28.581        21.318        4.832         0 \r\n 1997          141           29.007        22.858        8.208         0 \r\n 1997          142           25.588        24.546        12.556        0 \r\n 1997          143           11.541        23.778        12.476        7.798 \r\n 1997          144           13.258        18.618        12.879        3.581 \r\n 1997          145           6.746         18.293        9.169         31.852 \r\n 1997          146           5.565         12.272        6.908         5.461 \r\n 1997          147           3.919         12.2          8.608         7.188 \r\n 1997          148           4.926         15.939        9.068         0 \r\n 1997          149           21.789        21.609        6.529         0 \r\n 1997          150           22.919        24.849        6.242         0 \r\n 1997          151           29.233        27.063        8.258         0 \r\n 1997          152           30.318        27.418        10.121        0 \r\n 1997          153           26.998        25.951        12.276        0 \r\n 1997          154           10.219        25.106        14.251        0 \r\n 1997          155           22.752        27.776        12.987        0 \r\n 1997          156           23.144        28.653        12.654        0 \r\n 1997          157           29.146        28.078        9.512         0 \r\n 1997          158           26.96         26.25         12.808        0 \r\n 1997          159           29.428        24.185        9.244         0 \r\n 1997          160           19.759        25.462        11.161        0 \r\n 1997          161           18.899        25.503        12.124        0 \r\n 1997          162           15.171        26.573        15.949        0 \r\n 1997          163           25.767        28.628        15.566        0 \r\n 1997          164           17.461        28.902        12.913        0 \r\n 1997          165           27.119        30.514        18.451        0 \r\n 1997          166           16.855        30.383        15.474        0 \r\n 1997          167           24.42         31.132        13.421        0 \r\n 1997          168           26.784        31.345        14.352        0 \r\n 1997          169           29.735        32.469        19.854        0 \r\n 1997          170           25.632        34.059        21.644        4.648 \r\n 1997          171           21.509        32.354        18.616        20.32 \r\n 1997          172           19.117        31.334        19.737        0 \r\n 1997          173           27.78         32.458        21.035        0 \r\n 1997          174           20.52         30.719        20.388        6.934 \r\n 1997          175           15.735        28.906        17.884        34.087 \r\n 1997          176           24.839        28.741        13.616        0 \r\n 1997          177           25.726        30.374        15.544        0 \r\n 1997          178           27.801        31.993        17.65         0 \r\n 1997          179           27.715        31.615        18.063        0 \r\n 1997          180           19.43         31.688        15.912        9.068 \r\n 1997          181           28.366        32.066        17.736        3.581 \r\n 1997          182           25.433        30.427        16.164        0 \r\n 1997          183           29.919        24.023        12.552        0 \r\n 1997          184           14.979        21.978        11.382        0 \r\n 1997          185           23.176        23.077        8.092         0 \r\n 1997          186           19.155        24.626        11.967        0 \r\n 1997          187           26.43         26.058        13.525        0 \r\n 1997          188           23.144        29.669        16.362        0 \r\n 1997          189           25.407        30.302        15.736        0 \r\n 1997          190           24.53         27.995        17.288        0 \r\n 1997          191           14.225        29.028        18.991        3.683 \r\n 1997          192           20.238        31.419        21.323        0 \r\n 1997          193           24.063        32.951        22.931        0 \r\n 1997          194           24.729        31.504        15.547        0 \r\n 1997          195           28.715        31.758        15.21         0 \r\n 1997          196           27.88         33.379        18.362        0 \r\n 1997          197           27.406        33.078        19.766        0 \r\n 1997          198           27.255        33.574        19.024        0 \r\n 1997          199           26.543        32.706        21.292        0 \r\n 1997          200           23.711        31.756        20.775        0 \r\n 1997          201           16.373        29.908        20.181        0 \r\n 1997          202           21.456        30.418        19.094        0 \r\n 1997          203           23.429        31.474        19.524        9.398 \r\n 1997          204           24.206        32.617        21.061        0 \r\n 1997          205           24.43         34.718        24.078        0 \r\n 1997          206           26.247        36.165        23.997        0 \r\n 1997          207           26.429        34.21         22.778        0 \r\n 1997          208           16.086        30.536        20.761        4.039 \r\n 1997          209           15.259        28.176        14.167        0 \r\n 1997          210           23.652        27.244        14.812        0 \r\n 1997          211           22.342        26.953        15.076        0 \r\n 1997          212           25.904        27.393        16.708        0 \r\n 1997          213           16.959        30.875        18.362        0 \r\n 1997          214           23.257        32.979        20.869        0 \r\n 1997          215           23.672        33.186        19.373        0 \r\n 1997          216           24.121        29.78         14.036        0 \r\n 1997          217           21.093        27.323        11.586        0 \r\n 1997          218           24.808        28.287        13.701        0 \r\n 1997          219           23.213        28.729        14.873        0 \r\n 1997          220           25.325        28.517        15.096        0 \r\n 1997          221           18.038        26.227        16.525        0 \r\n 1997          222           8.529         21.491        14.417        6.807 \r\n 1997          223           3.575         20.863        16.393        5.944 \r\n 1997          224           7.392         24.347        14.041        0 \r\n 1997          225           23.192        26.823        15.517        0 \r\n 1997          226           13.478        29.431        15.678        0 \r\n 1997          227           24.525        31.818        17.575        0 \r\n 1997          228           23.05         29.012        17.372        21.996 \r\n 1997          229           14.277        24.463        11.825        0 \r\n 1997          230           15.555        24.064        15.141        5.817 \r\n 1997          231           6.413         25.616        17.227        0 \r\n 1997          232           20.032        27.269        11.632        0 \r\n 1997          233           17.207        27.739        12.342        0 \r\n 1997          234           22.19         28.868        14.191        0 \r\n 1997          235           21.236        30.121        17.482        0 \r\n 1997          236           19.463        31.215        19.501        0 \r\n 1997          237           21.203        30.879        20.457        0 \r\n 1997          238           21.347        30.828        21.214        0 \r\n 1997          239           5.091         30.46         21.883        0 \r\n 1997          240           13.037        30.957        21.234        0 \r\n 1997          241           13.419        32.226        21.984        0 \r\n 1997          242           18.758        32.379        17.857        0 \r\n 1997          243           20.999        32.312        19.119        0 \r\n 1997          244           12.256        29.449        19.949        37.135 \r\n 1997          245           5.392         25.194        13.106        0 \r\n 1997          246           13.836        22.718        9.457         0 \r\n 1997          247           19.523        25.219        11.841        0 \r\n 1997          248           19.186        30.707        15.768        0 \r\n 1997          249           20.309        31.135        19.807        0 \r\n 1997          250           15.7          28.401        18.166        0 \r\n 1997          251           11.569        25.977        14.754        0 \r\n 1997          252           21.557        24.64         8.52          0 \r\n 1997          253           20.76         24.348        7.293         0 \r\n 1997          254           20.066        26.359        10.577        0 \r\n 1997          255           18.289        26.289        15.438        0.051 \r\n 1997          256           10.448        27.189        16.599        0 \r\n 1997          257           16.067        29.636        16.362        0 \r\n 1997          258           18.936        29.733        18.072        0 \r\n 1997          259           7.36          29.607        11.087        0.051 \r\n 1997          260           20.333        31.367        15.371        0 \r\n 1997          261           14.722        30.396        17.814        0 \r\n 1997          262           11.743        22.646        9.478         0 \r\n 1997          263           16.063        19.147        5.123         0 \r\n 1997          264           11.149        17.448        9.501         0.051 \r\n 1997          265           1.848         17.253        12.647        1.372 \r\n 1997          266           2.41          19.949        11.067        0.254 \r\n 1997          267           17.42         26.044        9.326         0 \r\n 1997          268           19.147        28.527        10.03         0 \r\n 1997          269           14.18         26.936        13.954        0 \r\n 1997          270           9.825         25.326        11.219        0 \r\n 1997          271           18.539        25.936        10.567        0 \r\n 1997          272           18.049        27.111        8.829         0 \r\n 1997          273           17.894        27.531        6.536         0 \r\n 1997          274           16.215        30.244        10.784        0 \r\n 1997          275           17.044        32.672        15.78         0 \r\n 1997          276           15.993        28.92         9.002         0 \r\n 1997          277           17.155        27.52         10.348        0 \r\n 1997          278           16.008        28.962        16.356        0 \r\n 1997          279           15.378        29.991        15.994        0 \r\n 1997          280           9.727         26.267        17.613        0 \r\n 1997          281           4.042         21.151        12.731        0.965 \r\n 1997          282           16.996        19            6.874         0 \r\n 1997          283           10.233        22.89         6.958         0 \r\n 1997          284           11.889        25.338        15.672        0 \r\n 1997          285           0.877         20.912        11.243        31 \r\n 1997          286           15.219        14.306        3.543         0 \r\n 1997          287           16.042        14.77         8.14          0 \r\n 1997          288           8.009         14.84         10.15         0 \r\n 1997          289           13.883        16.82         10.65         0 \r\n 1997          290           15.056        17.93         3.158         0 \r\n 1997          291           13.868        18.77         4.913         0 \r\n 1997          292           10.633        15.15         4.044         0 \r\n 1997          293           10.414        12.63        -1.041         0 \r\n 1997          294           14.518        10.12        -1.896         0 \r\n 1997          295           3.682         6.207        -1.137         0 \r\n 1997          296           6.193         13.81         4.167         0.076 \r\n 1997          297           0.933         10.28         6.716         1.27 \r\n 1997          298           0.956         6.736         0.212         38.1 \r\n 1997          299           7.768         3.128        -5.269         0.33 \r\n 1997          300           13.03        -0.263        -11.22         0.229 \r\n 1997          301           13.085        9.14         -1.277         0 \r\n 1997          302           11.881        12.7         -1.62          0 \r\n 1997          303           7.389         17.02         6.971         0 \r\n 1997          304           5.197         16.61         3.965         0.025 \r\n 1997          305           9.793         13.19         2.956         0 \r\n 1997          306           4.838         5.45         -2.134         0 \r\n 1997          307           5.492        -0.593        -4.612         0 \r\n 1997          308           7.433         5.845        -5.171         0 \r\n 1997          309           4.185         6.113         0.553         0 \r\n 1997          310           3.99          5.084         0.581         0 \r\n 1997          311           5.361         7.35          1.2           0 \r\n 1997          312           10.181        10.91        -0.565         0 \r\n 1997          313           1.568         3.454        -1.069         0 \r\n 1997          314           8.766         1.095        -6.387         0 \r\n 1997          315           8.048         3.234        -9.25          0 \r\n 1997          316           6.604         0.877        -7.78          0 \r\n 1997          317           1.663         1.718        -2.077         0 \r\n 1997          318           5.39         -0.291        -7.95          0 \r\n 1997          319           7.822        -1.542        -8.15          0 \r\n 1997          320           11.32         0.792        -12.67         0 \r\n 1997          321           10.441        7.79         -6.289         0 \r\n 1997          322           10.313        11.63        -6.036         0 \r\n 1997          323           9.559         10.51        -8.2           0 \r\n 1997          324           6.763         10.81        -3.986         0 \r\n 1997          325           5.266         0.675        -5.849         0 \r\n 1997          326           8.884         2.357        -5.027         0 \r\n 1997          327           7.724         8.13         -5.608         0 \r\n 1997          328           8.437         9.62         -5.793         0 \r\n 1997          329           7.789         16.06         2.556         0 \r\n 1997          330           9.369         10.82        -0.443         0 \r\n 1997          331           5.445         13.4          2.747         0 \r\n 1997          332           4.651         10.04         2.634         17.094 \r\n 1997          333           0.576         5.795         1.426         29.235 \r\n 1997          334           8.98          6.323        -1.021         0 \r\n 1997          335           1.49          0.922        -0.786         0 \r\n 1997          336           2.285         3.451         0.106         8.153 \r\n 1997          337           2.846         0.134        -7.78          0 \r\n 1997          338           5.406        -0.442        -9.41          0 \r\n 1997          339           5.489        -5.152        -11.01         0 \r\n 1997          340           6.227        -2.429        -8.65          0 \r\n 1997          341           5.592        -3.918        -10.73         4.318 \r\n 1997          342           3.548        -0.479        -3.938         0 \r\n 1997          343           2.623        -1.523        -3.537         0 \r\n 1997          344           4.033        -0.933        -4.38          0 \r\n 1997          345           5.096        -2.532        -6.387         0 \r\n 1997          346           7.623        -4.497        -9.14          0 \r\n 1997          347           7.578         1.673        -8.47          0 \r\n 1997          348           7.866         3.613        -7.79          0 \r\n 1997          349           8.255         4.261        -2.468         0 \r\n 1997          350           7.752         4.663        -1.916         0 \r\n 1997          351           5.808         3.652        -7.21          0 \r\n 1997          352           6.521         5.565        -1.356         0 \r\n 1997          353           7.012         4.979        -2.22          0 \r\n 1997          354           7.62          0.317        -6.112         0 \r\n 1997          355           2.468        -0.811        -7.78          0 \r\n 1997          356           2.745         0.58         -2.037         0 \r\n 1997          357           1.542        -0.602        -2.285         1 \r\n 1997          358           1.873        -0.611        -3.337         0 \r\n 1997          359           2.456        -0.005        -4.861         2 \r\n 1997          360           6.494         2.293        -7.58          0 \r\n 1997          361           5.017         0.972        -10.9          0 \r\n 1997          362           3.685         0.647        -3.451         0 \r\n 1997          363           3.544        -0.387        -7.13          0 \r\n 1997          364           3.237         2.568        -5.383         0 \r\n 1997          365           7.628         1.113        -8.17          0 \r\n 1998          1             7.725         6.516         0.495         0 \r\n 1998          2             5.028         12.44         2.12          0 \r\n 1998          3             2.6           10.05        -8.65          3.302 \r\n 1998          4             1.041        -1.982        -9             5.944 \r\n 1998          5             1.859        -0.709        -3.699         0 \r\n 1998          6             2.407         0.214        -1.517         0 \r\n 1998          7             2.054        -1.497        -3.162         0 \r\n 1998          8             6.437         1.6          -3.747         0 \r\n 1998          9             4.376        -2.81         -14.95         0 \r\n 1998          10            8.518        -7.41         -17.16         0 \r\n 1998          11            4.776        -6.289        -13.83         0 \r\n 1998          12            4.628        -6.917        -18.54         0 \r\n 1998          13            8.563        -9.45         -20.08         0 \r\n 1998          14            3.407        -4.939        -10.3          0 \r\n 1998          15            3.939        -4.552        -6.582         0 \r\n 1998          16            1.261        -0.175        -5.335         3.988 \r\n 1998          17            1.316        -3.164        -15.18         0 \r\n 1998          18            1.465        -7.29         -15.01         0 \r\n 1998          19            1.229        -4.592        -11.45         2.845 \r\n 1998          20            0.614        -2.789        -5.151         7.341 \r\n 1998          21            1.035        -2.789        -5.308         0 \r\n 1998          22            1.246        -1.723        -7.57          0 \r\n 1998          23            1.692        -1.725        -10.66         0 \r\n 1998          24            2.41         -2.705        -8.09          0 \r\n 1998          25            8.143         2.75         -6.563         0 \r\n 1998          26            10.121        3.52         -9.57          0 \r\n 1998          27            10.508        4.491        -8.62          0 \r\n 1998          28            9.778         5.787        -2.612         0 \r\n 1998          29            10.427        5.443        -1.885         0 \r\n 1998          30            10.884        8.56         -3.851         3.454 \r\n 1998          31            5.785         6.673         0.717         25.298 \r\n 1998          32            3.692         2.539        -2.21          0 \r\n 1998          33            3.871        -0.07         -3.709         0 \r\n 1998          34            7.96         -3.296        -12.81         0 \r\n 1998          35            7.016        -1.59         -4.735         0 \r\n 1998          36            8.756        -0.924        -7.67          0 \r\n 1998          37            11.885        4.294        -8.13          0 \r\n 1998          38            12.037        5.988        -7.42          0 \r\n 1998          39            12.856        8.06         -3.278         0 \r\n 1998          40            6.548         7            -0.526         7.544 \r\n 1998          41            0.745         2.54         -1.247         9.271 \r\n 1998          42            1.965        -0.715        -4.678         0 \r\n 1998          43            7.056         2.778        -6.641         0 \r\n 1998          44            10.109        5.568        -2.447         0 \r\n 1998          45            5.404         4.367        -3.44          0 \r\n 1998          46            8.695         11.828        3.842         0 \r\n 1998          47            4.287         6.472         0.659         3.251 \r\n 1998          48            2.201         5.178         0.185         5.08 \r\n 1998          49            1.901         3.013         0.896         0 \r\n 1998          50            1.921         2.738         1.321         0 \r\n 1998          51            3.711         4.761         0.612         0 \r\n 1998          52            9.435         10.03         0.345         0 \r\n 1998          53            11.333        13.98         4.147         2.5 \r\n 1998          54            6.693         15.222        4.054         0 \r\n 1998          55            10.427        14.25         0.638         0 \r\n 1998          56            3.438         15.67         6.315         0 \r\n 1998          57            12.351        11.689        0.613         0 \r\n 1998          58            4.685         1.396        -3.343         0 \r\n 1998          59            7.173        -1.58         -4.669         0.76 \r\n 1998          60            7.139        -0.972        -4.949         0 \r\n 1998          61            6.129         1.714        -4.494         0 \r\n 1998          62            5.719        -1.133        -4.756         0 \r\n 1998          63            5.062        -0.092        -5.442         0 \r\n 1998          64            4.852         2.947        -6.395         0 \r\n 1998          65            9.118         2.245        -8.84          0 \r\n 1998          66            2.221        -0.994        -2.228         17.678 \r\n 1998          67            8.314        -0.87         -9.87          8.407 \r\n 1998          68            19.434       -8.73         -14.86         0 \r\n 1998          69            19.217       -6.682        -18.81         0 \r\n 1998          70            19.019       -11.88        -20.89         0 \r\n 1998          71            14.866       -6.985        -24.77         0 \r\n 1998          72            19.285        6.337        -9.54          0 \r\n 1998          73            19.596       -0.63         -10.98         0 \r\n 1998          74            4.847        -1.238        -9.11          0 \r\n 1998          75            7.855         1.627        -2.971         6.883 \r\n 1998          76            1.966         0.38         -0.387         6.172 \r\n 1998          77            3.004         0.877        -0.464         0 \r\n 1998          78            5.046         0.793        -0.776         0 \r\n 1998          79            19.944        5.023        -3.287         0 \r\n 1998          80            19.787        10.32        -3.957         0 \r\n 1998          81            11.163        8.88         -2.504         0 \r\n 1998          82            8.187         4.591        -1.334         0 \r\n 1998          83            6.861         5.971        -3.756         0 \r\n 1998          84            10.32         17.19         4.239         0 \r\n 1998          85            16.158        24.91         11.78         2.642 \r\n 1998          86            2.403         18.94         9.84          9.728 \r\n 1998          87            9.819         15.14         8.45          0 \r\n 1998          88            14.688        24.03         10.18         19.71 \r\n 1998          89            3.403         18.72         5.174         5.664 \r\n 1998          90            6.53          6.857         0.696         3.531 \r\n 1998          91            7.185         7.41         -0.318         0 \r\n 1998          92            21.263        11.8         -1.543         0 \r\n 1998          93            4.557         7.27          1.539         0 \r\n 1998          94            22.622        15.44        -0.665         0 \r\n 1998          95            18.313        13.43         0.935         0 \r\n 1998          96            8.324         21.43         5.115         30.455 \r\n 1998          97            5.022         15.93         9.73          10.363 \r\n 1998          98            2.299         9.75          4.008         2.54 \r\n 1998          99            15.199        12.43         4.512         0 \r\n 1998          100           23.57         18.4          1.825         0 \r\n 1998          101           21.788        22.98         6.179         0 \r\n 1998          102           11.474        21.49         13.25         0 \r\n 1998          103           13.525        19.75         10.36         0 \r\n 1998          104           14.339        20.42         6.905         0 \r\n 1998          105           2.232         10.74         3.254         2.667 \r\n 1998          106           16.607        11.8          1.97          0 \r\n 1998          107           24.623        16.65         0.46          0 \r\n 1998          108           23.416        18.11         2.597         0 \r\n 1998          109           15.481        18.62         6.401         7.874 \r\n 1998          110           9.596         12.84         3.395         0 \r\n 1998          111           22.54         18.2          4.081         0 \r\n 1998          112           24.217        20.29         3.845         0 \r\n 1998          113           25.139        23.44         6.711         0 \r\n 1998          114           21.88         23.82         8.61          0 \r\n 1998          115           21.605        28.46         12.68         0 \r\n 1998          116           4.323         13.67         7.21          0 \r\n 1998          117           17.193        13.91         4.31          0 \r\n 1998          118           7.39          11.16         5.265         6.68 \r\n 1998          119           2.676         9.91          6.634         7.874 \r\n 1998          120           6.355         17.01         8.94          0.508 \r\n 1998          121           12.219        24.49         8.17          0 \r\n 1998          122           8.463         12.96         6.094         1.778 \r\n 1998          123           19.359        23.51         8.79          0 \r\n 1998          124           24.111        26.42         9.83          0 \r\n 1998          125           19.616        23.84         10.14         0 \r\n 1998          126           7.41          19.77         12.59         10.16 \r\n 1998          127           19.522        19.98         10.05         0 \r\n 1998          128           24.31         22.68         5.518         0 \r\n 1998          129           16.429        23.47         9.52          0 \r\n 1998          130           22.157        24.9          11.58         0 \r\n 1998          131           23.388        25.43         11.98         3.81 \r\n 1998          132           23.576        22.54         12.85         0 \r\n 1998          133           22.811        25.66         9.83          0 \r\n 1998          134           16.511        27.95         17.52         0 \r\n 1998          135           9.256         23.92         14.17         26.924 \r\n 1998          136           26.793        27.13         12.74         0 \r\n 1998          137           19.999        27.61         16.19         0 \r\n 1998          138           24.445        30.67         18.2          0 \r\n 1998          139           21.047        32.93         19.57         0 \r\n 1998          140           19.375        24.61         15.07         20.574 \r\n 1998          141           11.537        21.18         15.54         1.27 \r\n 1998          142           11.438        17.69         13.28         21.082 \r\n 1998          143           3.11          15.27         12.63         4.318 \r\n 1998          144           15.024        22.55         12.93         0.254 \r\n 1998          145           10.96         19.88         12.74         0 \r\n 1998          146           14.756        23            13.83         0 \r\n 1998          147           17.495        28.32         13.2          0 \r\n 1998          148           22.4          32.28         19.2          0 \r\n 1998          149           19.444        27.39         17.14         17.018 \r\n 1998          150           14.645        30.51         17.63         0 \r\n 1998          151           19.701        25.61         14.22         0 \r\n 1998          152           18.105        29.34         10.77         1.27 \r\n 1998          153           27.816        26.34         13.31         0 \r\n 1998          154           14.876        13.3          4.617         19.304 \r\n 1998          155           8.204         14.5          7.73          0.762 \r\n 1998          156           12.595        16.29         8.12          0 \r\n 1998          157           20.983        20.05         9.36          0 \r\n 1998          158           12.768        18.42         8.56          1.016 \r\n 1998          159           2.612         15.4          12.62         51.054 \r\n 1998          160           10.586        19.12         13.47         0.254 \r\n 1998          161           19.268        24            11.04         1.524 \r\n 1998          162           16.041        25.16         15.04         13.97 \r\n 1998          163           25.479        25.41         13.99         0 \r\n 1998          164           28.005        27.13         13.48         9.144 \r\n 1998          165           1.396         18.54         16.13         68.021 \r\n 1998          166           12.293        21.42         14.75         10.414 \r\n 1998          167           28.565        26.19         13.65         0.254 \r\n 1998          168           23.346        29.34         16.86         3.81 \r\n 1998          169           24.266        27.91         17            0 \r\n 1998          170           29.159        31.44         15.19         0 \r\n 1998          171           13.953        28.76         18.89         0 \r\n 1998          172           25.429        27.73         15.72         0 \r\n 1998          173           21.639        28.38         17.14         0 \r\n 1998          174           17.645        28.78         17.84         0.254 \r\n 1998          175           26.406        32.35         21.41         0 \r\n 1998          176           26.948        32.97         20.19         1.27 \r\n 1998          177           23.808        32.98         22.91         0 \r\n 1998          178           24.039        32.58         21.71         0 \r\n 1998          179           22.898        30.67         19.12         0 \r\n 1998          180           19.685        30.09         19.95         0 \r\n 1998          181           26.696        27.5          17.22         0 \r\n 1998          182           21.883        29.33         16.75         0 \r\n 1998          183           24.613        29.66         17.65         0 \r\n 1998          184           14.966        29.85         18.69         18.796 \r\n 1998          185           19.681        28.48         21.21         9.144 \r\n 1998          186           5.788         24.09         19.58         39.878 \r\n 1998          187           21.6          31.71         20.83         12.7 \r\n 1998          188           25.342        28.94         19.99         0 \r\n 1998          189           25.252        30.14         19.08         0 \r\n 1998          190           13.094        28.31         21.36         0 \r\n 1998          191           13.294        27.11         20.22         0.508 \r\n 1998          192           22.611        27.81         18.79         0 \r\n 1998          193           21.626        28.84         18.59         0 \r\n 1998          194           24.942        30.76         19.74         0 \r\n 1998          195           23.962        30.89         19.92         0 \r\n 1998          196           24.546        29.31         17.55         8.128 \r\n 1998          197           19.468        29.67         21.23         0 \r\n 1998          198           24.232        31.52         20.46         0 \r\n 1998          199           19.629        32.3          22.44         0 \r\n 1998          200           24.567        32.82         21.83         0 \r\n 1998          201           25.981        35.35         22.66         0 \r\n 1998          202           22.689        32.95         20.21         26.162 \r\n 1998          203           16.381        27.1          19.82         32.512 \r\n 1998          204           18.612        26.76         17.51         0 \r\n 1998          205           22.736        26.53         18.03         0 \r\n 1998          206           12.208        23.81         16.07         0 \r\n 1998          207           22.465        25.76         16.65         1.016 \r\n 1998          208           22.859        28.13         16.27         0 \r\n 1998          209           25.286        30.8          18.92         0 \r\n 1998          210           21.003        27.28         18.55         0 \r\n 1998          211           19.296        25.52         16.85         0 \r\n 1998          212           19.661        25.74         14.02         0 \r\n 1998          213           24.335        26.76         16            0 \r\n 1998          214           4.064         21.95         17.75         16.256 \r\n 1998          215           20.221        28.28         18.2          0.762 \r\n 1998          216           18.676        26.16         18.7          8.89 \r\n 1998          217           7.464         22.62         17.98         0.762 \r\n 1998          218           6.181         19.68         17.09         1.524 \r\n 1998          219           13.241        23.14         17.54         0.254 \r\n 1998          220           21.959        27.66         15.21         0 \r\n 1998          221           22.891        30.61         17.87         0 \r\n 1998          222           21.118        28.12         17.34         0 \r\n 1998          223           22.522        28.2          15.94         0 \r\n 1998          224           18.236        27.1          17.93         0 \r\n 1998          225           14.452        26.62         18.47         18.542 \r\n 1998          226           21.434        28.72         15.9          0.254 \r\n 1998          227           20.459        28.98         18.46         0.508 \r\n 1998          228           22.289        29.56         19.11         0 \r\n 1998          229           21.212        32.11         21.79         0 \r\n 1998          230           20.272        32.36         21.68         0 \r\n 1998          231           22.12         33.05         23.23         0 \r\n 1998          232           20.054        33.36         19.03         2.54 \r\n 1998          233           12.835        27.34         19.84         16.51 \r\n 1998          234           21.778        31.21         19.24         0 \r\n 1998          235           22.074        31.39         21.45         0 \r\n 1998          236           12.625        31.04         21.46         0 \r\n 1998          237           21.188        27.29         17.57         0 \r\n 1998          238           11.023        25.99         16.86         0 \r\n 1998          239           11.6          28.36         18.71         13.462 \r\n 1998          240           18.391        28.35         20.18         4.5 \r\n 1998          241           22.003        30.57         16            0 \r\n 1998          242           19.061        28.58         16.02         0 \r\n 1998          243           12.827        26.87         17.31         0 \r\n 1998          244           20.562        26.77         16.02         0 \r\n 1998          245           20.41         29.33         15.47         0 \r\n 1998          246           21.147        30.07         17.36         0 \r\n 1998          247           20.739        30.13         16.19         0 \r\n 1998          248           19.291        32.46         17.92         0 \r\n 1998          249           19.132        34.07         19.79         0 \r\n 1998          250           20.249        26.01         13.82         0 \r\n 1998          251           21.33         22.78         9.98          0 \r\n 1998          252           19.98         24.55         10.39         0 \r\n 1998          253           19.613        28.89         12.34         0 \r\n 1998          254           20.715        31.21         11.09         0 \r\n 1998          255           18.7          32.3          15.02         0 \r\n 1998          256           14.671        29.33         18.01         0 \r\n 1998          257           12.402        28.38         17.51         0.762 \r\n 1998          258           17.935        28.49         16.98         0 \r\n 1998          259           14.198        27.09         14.32         0 \r\n 1998          260           16.626        29.34         16.12         0 \r\n 1998          261           16.552        30.21         16.12         0 \r\n 1998          262           17.217        32.76         17.22         16.256 \r\n 1998          263           10.258        24.3          16.32         3.81 \r\n 1998          264           3.682         16.33         9.74          3.302 \r\n 1998          265           16.949        19.22         7.75          0 \r\n 1998          266           13.731        22.29         7.59          0 \r\n 1998          267           14.655        25.31         12.89         0 \r\n 1998          268           14.102        32.16         15.53         0 \r\n 1998          269           15.89         31.9          19.79         0 \r\n 1998          270           15.736        27.74         14.13         0 \r\n 1998          271           15.864        28.49         14.77         0 \r\n 1998          272           16.666        32.13         17.06         0 \r\n 1998          273           15.016        26.98         9.16          0 \r\n 1998          274           15.501        16.29         3.328         1.27 \r\n 1998          275           1.368         9             6.659         27.432 \r\n 1998          276           2.402         10.44         6.764         4.826 \r\n 1998          277           1.257         16.5          10.04         12.446 \r\n 1998          278           7.375         15.42         9.21          0.254 \r\n 1998          279           6.416         12.89         4.645         0 \r\n 1998          280           16.254        17.54         7.72          0 \r\n 1998          281           16.6          18.96         3.357         0 \r\n 1998          282           15.292        20.59         4.995         0 \r\n 1998          283           15.202        23.45         7.7           0 \r\n 1998          284           10.165        22.68         8.28          0 \r\n 1998          285           15.398        17.43         4.865         0 \r\n 1998          286           15.17         20.15         3.413         0 \r\n 1998          287           8.824         23.78         7.69          0 \r\n 1998          288           9.872         27.24         14.62         0 \r\n 1998          289           1.829         21.19         16.8          18.288 \r\n 1998          290           3.801         20.87         6.517         3.048 \r\n 1998          291           14.412        16.19         5.15          0 \r\n 1998          292           14.296        17.46         4.712         0 \r\n 1998          293           3.609         12.22         4.672         0 \r\n 1998          294           14.168        17.03         3.499         0 \r\n 1998          295           14.048        18.16         2.073         0 \r\n 1998          296           13.571        18.12         3.746         0 \r\n 1998          297           8.716         17.7          7.34          0 \r\n 1998          298           11.925        21.61         7.4           0 \r\n 1998          299           6.505         20.47         9.67          0.762 \r\n 1998          300           8.362         22.87         13.29         0 \r\n 1998          301           6.418         22.34         13.28         6.096 \r\n 1998          302           11.735        20.49         10.2          0 \r\n 1998          303           11.072        13.36         4.559         0 \r\n 1998          304           3.934         9.58          5.238         0 \r\n 1998          305           2.219         9.5           5.977         9.398 \r\n 1998          306           1.287         8.17          2.869         14.732 \r\n 1998          307           4.556         3.634         0.544         2.54 \r\n 1998          308           4.885         5.278         0.45          0 \r\n 1998          309           9.903         4.434        -2.329         0 \r\n 1998          310           8.856         4.999        -4.886         2.769 \r\n 1998          311           2.826         0.659        -0.528         5.994 \r\n 1998          312           3.492         3.042        -0.092         0 \r\n 1998          313           0.69          9.46          3.024         6.782 \r\n 1998          314           2.859         3.753        -0.86          0 \r\n 1998          315           10.305        9.41         -3.079         0 \r\n 1998          316           5.988         6.467        -1.573         0 \r\n 1998          317           9.245         13.53        -2.868         0 \r\n 1998          318           10.093        15.2          1.74          0 \r\n 1998          319           7.541         10.93        -0.206         0 \r\n 1998          320           7.332         9.35         -0.433         0 \r\n 1998          321           9.123         16.89        -1.439         0 \r\n 1998          322           3.936         16.89        -0.063         0 \r\n 1998          323           10.159        5.564        -3.595         0 \r\n 1998          324           9.899         5.068        -5.561         0 \r\n 1998          325           7.263         13.24        -4.296         0 \r\n 1998          326           8.404         15.94         5.4           0 \r\n 1998          327           8.639         13.98         1.844         0 \r\n 1998          328           7.208         13.81        -2.173         0 \r\n 1998          329           9.714         15.03         4.176         0 \r\n 1998          330           9.438         16.72        -0.237         0 \r\n 1998          331           8.749         19.52         1.455         0 \r\n 1998          332           1.926         16.01         7.11          0 \r\n 1998          333           4.784         20.56         11.35         0 \r\n 1998          334           8.602         12.13         2.291         0 \r\n 1998          335           8.504         18.56         1.778         0 \r\n 1998          336           4.609         14.14         7.49          0 \r\n 1998          337           5.396         16.37         7.53          0 \r\n 1998          338           3.726         18.4          10.09         0 \r\n 1998          339           2.821         11.9          1.854         0 \r\n 1998          340           0.991         1.882        -4.334         0 \r\n 1998          341           7.547         5.5          -6.389         0 \r\n 1998          342           8.984         8.04         -5.939         0 \r\n 1998          343           8.39          8.6          -3.978         0 \r\n 1998          344           8.855         7.96         -4.591         0 \r\n 1998          345           8.829         8.91         -5.336         0 \r\n 1998          346           8.438         10.51        -3.815         0 \r\n 1998          347           5.912         11.38        -1.906         0 \r\n 1998          348           8.416         12.07        -2.457         0 \r\n 1998          349           8.06          9.55         -0.708         0 \r\n 1998          350           8.195         7.63         -4.362         0 \r\n 1998          351           8.192         6.933        -6.743         0 \r\n 1998          352           6.712         7.16         -2.352         0 \r\n 1998          353           5.055        -1.591        -9.58          0 \r\n 1998          354           1.757        -9.57         -14.19         0 \r\n 1998          355           6.103        -11.9         -18.47         0 \r\n 1998          356           8.606        -10.59        -20.52         0 \r\n 1998          357           8.469        -6.201        -15.86         0 \r\n 1998          358           8.612        -2.468        -14.87         0 \r\n 1998          359           5.371         1.901        -12.29         0 \r\n 1998          360           2.583        -0.499        -11.22         0 \r\n 1998          361           7.343         4.779        -6.475         0 \r\n 1998          362           2.433         4.138        -7.28          0 \r\n 1998          363           9.073         4.274        -16.21         0 \r\n 1998          364           4.072        -11.84        -21.23         4.394 \r\n 1998          365           8.05         -11.48        -23.05         2.718 \r\n 1999          1             3.079        -10.66        -14.53         6.934 \r\n 1999          2             5.589        -9.62         -13.17         0 \r\n 1999          3             9.38         -13.16        -19.97         0 \r\n 1999          4             10.235       -18.94        -26.76         0 \r\n 1999          5             4.75         -3.222        -26.5          0 \r\n 1999          6             4.796         1.627        -18.3          0 \r\n 1999          7             5.473        -12.92        -18.16         0 \r\n 1999          8             6.222        -10.63        -19.87         0 \r\n 1999          9             7.589        -10.62        -25.67         0 \r\n 1999          10            9.321        -6.888        -14.14         0 \r\n 1999          11            8.093         5.018        -11.97         0 \r\n 1999          12            5.605         2.443        -16.1          0 \r\n 1999          13            4.565        -9.24         -17.66         0 \r\n 1999          14            9.566        -1.326        -13.07         0 \r\n 1999          15            7.794         4.826        -10.75         0 \r\n 1999          16            9.802         9.45         -1.801         0 \r\n 1999          17            4.186         4.673        -0.585         0 \r\n 1999          18            9.97          1.941        -3.738         0 \r\n 1999          19            8.336         3.88         -4.813         0 \r\n 1999          20            3.964         3.565        -5.765         0 \r\n 1999          21            5.355         3.634        -3.758         4.597 \r\n 1999          22            2.134         0.574        -1.374         0 \r\n 1999          23            4.673        -0.773        -2.315         0 \r\n 1999          24            1.668        -1.09         -6.731         0 \r\n 1999          25            8.085        -3.028        -10.71         0 \r\n 1999          26            3.888         7.03         -5.481         0 \r\n 1999          27            3.303         7.47         -3.248         0 \r\n 1999          28            7.973         0.537        -4.113         0 \r\n 1999          29            11.783        5.756        -7.09          0 \r\n 1999          30            6.489         1.626        -5.403         0 \r\n 1999          31            2.853         1.819        -0.631         0 \r\n 1999          32            2.147         2.93         -0.621         0 \r\n 1999          33            12.03         8.84         -3.538         0 \r\n 1999          34            10.163        11.63        -1.476         0 \r\n 1999          35            11.899        5.047        -6.182         0 \r\n 1999          36            8.679         15.83        -0.024         0 \r\n 1999          37            5.412         5.728        -3.661         0 \r\n 1999          38            11.483        10.21        -2.772         0 \r\n 1999          39            10.764        14.16         2.319         0 \r\n 1999          40            10.345        12.94         1.237         0 \r\n 1999          41            7.258         21.91         3.175         3.785 \r\n 1999          42            3.441         0.603        -5.88          0 \r\n 1999          43            13.453       -1.611        -6.654         0 \r\n 1999          44            13.482        3.987        -10.12         0 \r\n 1999          45            13.943        15.37        -1.014         0 \r\n 1999          46            12.999        12.72        -1.191         0 \r\n 1999          47            5.298         1.246        -5.718         0 \r\n 1999          48            4.32          0.419        -8.45          3.023 \r\n 1999          49            4.974        -0.375        -3.459         4.978 \r\n 1999          50            10.159       -1.565        -7.62          3.327 \r\n 1999          51            11.366       -1.726        -6.33          0 \r\n 1999          52            15.675        1.636        -10.02         0 \r\n 1999          53            5            -3.039        -8.12          10.617 \r\n 1999          54            10.047       -0.765        -3.889         0 \r\n 1999          55            12.223        1.494        -5.569         0 \r\n 1999          56            15.36         4.751        -11.327        0 \r\n 1999          57            5.467         5.692        -7.129         0 \r\n 1999          58            7.549         5.311         1.859         0 \r\n 1999          59            16.398        7.929        -0.605         0 \r\n 1999          60            15.447        16.099       -2.655         0 \r\n 1999          61            5.824         6.299        -2.897         2 \r\n 1999          62            17.491        2.909        -7.583         0 \r\n 1999          63            14.289        11.313       -5.668         0 \r\n 1999          64            5.841         3.204        -0.483         0 \r\n 1999          65            6.486        -1.044        -2.769         0 \r\n 1999          66            16.272        3.204        -7.407         8.839 \r\n 1999          67            7.966        -1.044        -4.81          5.41 \r\n 1999          68            18.653       -1.068        -5.935         0 \r\n 1999          69            11.186       -1.564        -3.783         0 \r\n 1999          70            17.857        0.288        -7.1           0 \r\n 1999          71            15.517       -0.26         -8.2           0 \r\n 1999          72            16.771        1.921        -5.502         0 \r\n 1999          73            19.671        5.342        -7.65          0 \r\n 1999          74            18.959        14.13        -4.101         0 \r\n 1999          75            18.673        23.45         0.904         0 \r\n 1999          76            19.135        12.88         0.203         0 \r\n 1999          77            19.839        10.74        -2.782         0 \r\n 1999          78            18.978        13.07        -3.707         0 \r\n 1999          79            19.562        16.84        -1.847         0 \r\n 1999          80            20.25         11.77        -3.728         0 \r\n 1999          81            4.15          4.604         0.015         0 \r\n 1999          82            20.633        12.68        -4.4           0 \r\n 1999          83            20.927        10.37        -4.217         0 \r\n 1999          84            21.136        9.93         -7.14          0 \r\n 1999          85            21.137        12.88        -5.802         0 \r\n 1999          86            12.629        15.82         0.109         0 \r\n 1999          87            20.23         13.73         4.29          0 \r\n 1999          88            20.725        19.6          1.854         0 \r\n 1999          89            20.174        22.42         3.976         0 \r\n 1999          90            6.968         16.4          12.2          0 \r\n 1999          91            14.158        26.23         6.391         0 \r\n 1999          92            4.455         10.71         2.383         4.572 \r\n 1999          93            9.871         15.99         3.134         4.826 \r\n 1999          94            22.498        16.51         0.156         0 \r\n 1999          95            2.246         15.52         3.329         62.992 \r\n 1999          96            22.255        15.7          3.034         0 \r\n 1999          97            22.518        23.98         7.31          0 \r\n 1999          98            6.693         20.64         8.46          18.288 \r\n 1999          99            4.622         10.91         5.45          0 \r\n 1999          100           11.377        18.14         5.355         0 \r\n 1999          101           15.793        13.34         3.966         0 \r\n 1999          102           22.595        18.26         3.078         0 \r\n 1999          103           10.102        17.88         8.5           1.27 \r\n 1999          104           1.838         11.81         4.368         56.134 \r\n 1999          105           6.865         5.053         0.856         14.224 \r\n 1999          106           8.991         2.094        -0.7           0.762 \r\n 1999          107           9.91          7.78          0.279         0 \r\n 1999          108           24.26         16.31         0.202         0 \r\n 1999          109           25.073        18.49         3.41          0 \r\n 1999          110           17.013        22.63         8.41          0.508 \r\n 1999          111           8.129         19.47         7.04          18.288 \r\n 1999          112           3.455         10.69         4.78          1.016 \r\n 1999          113           5.347         8.55          2.785         0 \r\n 1999          114           18.129        15.68         6.757         0 \r\n 1999          115           13.466        16.24         7.36          0 \r\n 1999          116           5.092         14.18         8.63          14.986 \r\n 1999          117           4.654         13.72         8.62          10.668 \r\n 1999          118           5.417         14.51         8.58          0 \r\n 1999          119           24.678        20.17         8.7           0 \r\n 1999          120           26.3          20.54         4.461         0 \r\n 1999          121           25.027        21.81         6.884         0 \r\n 1999          122           16.261        21.72         9.78          0 \r\n 1999          123           14.119        23.21         12.55         0 \r\n 1999          124           6.797         19.74         12.9          3.81 \r\n 1999          125           7.685         15.47         8.56          2.794 \r\n 1999          126           5.531         11.17         8.34          1.524 \r\n 1999          127           7.913         12.78         7.71          0.254 \r\n 1999          128           14.714        17.91         6.391         0 \r\n 1999          129           24.644        23.5          5.557         0 \r\n 1999          130           9.564         23.83         15.91         0 \r\n 1999          131           9.893         17.87         9.46          7.112 \r\n 1999          132           20.882        18.12         7.41          0 \r\n 1999          133           25.864        20.26         5.737         0 \r\n 1999          134           15.922        21.14         11.09         0.254 \r\n 1999          135           12.393        22.03         13.42         6.858 \r\n 1999          136           7.075         25.55         12.94         70.104 \r\n 1999          137           10.25         17.48         10.64         17.272 \r\n 1999          138           27.051        21.4          8.72          0 \r\n 1999          139           25.771        25.22         10.97         0 \r\n 1999          140           5.293         21.9          15.1          26.67 \r\n 1999          141           21.35         23.43         15.31         1.778 \r\n 1999          142           23.725        25.27         13.18         11.176 \r\n 1999          143           22.139        18.27         10.97         0 \r\n 1999          144           23.239        19.89         11.06         0 \r\n 1999          145           28.195        22            9.2           0 \r\n 1999          146           28.662        23.97         9.56          0 \r\n 1999          147           27.331        27.98         11.51         0 \r\n 1999          148           26.913        26.95         15.62         0 \r\n 1999          149           26.607        27.14         13.88         0 \r\n 1999          150           19.373        28.12         15.56         7.62 \r\n 1999          151           13.27         18.44         13.95         0 \r\n 1999          152           14.315        20.34         13.18         2.032 \r\n 1999          153           27.058        25.37         10.82         0 \r\n 1999          154           18.579        26.43         15.09         0 \r\n 1999          155           15.056        31.05         18.28         0 \r\n 1999          156           19.096        31.83         22.94         0 \r\n 1999          157           15.956        30.35         18.05         16.51 \r\n 1999          158           27.839        32.09         16.38         0 \r\n 1999          159           23.993        31.57         21.3          0 \r\n 1999          160           20.234        30.99         19.86         6.096 \r\n 1999          161           11.144        24.27         18.01         15.494 \r\n 1999          162           13.769        25.54         17.22         0 \r\n 1999          163           15.297        25.6          17.37         3.048 \r\n 1999          164           11.346        24.07         14.86         9.398 \r\n 1999          165           26.713        23.82         12.29         0 \r\n 1999          166           4.307         14.42         10.83         6.35 \r\n 1999          167           18.546        18.79         10.56         0.254 \r\n 1999          168           26.53         21.57         9.26          0 \r\n 1999          169           19.276        22.38         12.92         0 \r\n 1999          170           11.169        21.62         15.36         0 \r\n 1999          171           15.753        25.98         17.55         0 \r\n 1999          172           23.447        29.33         18.01         0 \r\n 1999          173           6.323         23.56         20.04         35.814 \r\n 1999          174           21.74         27.24         17.56         9.144 \r\n 1999          175           24.238        30.37         18.97         0 \r\n 1999          176           24.67         30.48         19.72         0 \r\n 1999          177           23.221        30.98         19.22         0 \r\n 1999          178           15.637        26.73         18.5          47.752 \r\n 1999          179           13.86         22.6          13.3          0 \r\n 1999          180           9.748         18.17         11.74         1.27 \r\n 1999          181           15.285        23.53         13.74         25.146 \r\n 1999          182           17.97         26.15         14.94         0 \r\n 1999          183           11.597        29.42         16.25         0 \r\n 1999          184           22.454        32.05         24.17         0 \r\n 1999          185           26.55         32.12         23.37         0 \r\n 1999          186           25.39         32.96         20.7          56.388 \r\n 1999          187           27.287        27.47         17.78         0 \r\n 1999          188           26.467        28.7          18.08         0 \r\n 1999          189           24.348        32.8          19.99         0.508 \r\n 1999          190           23.94         27.03         16.86         24.892 \r\n 1999          191           21.4          22.97         14.68         0 \r\n 1999          192           22.141        25.54         14.78         0 \r\n 1999          193           26.634        26            14.5          0 \r\n 1999          194           25.888        28.69         16.74         0 \r\n 1999          195           25.628        30.84         18.38         0 \r\n 1999          196           24.811        31.78         22.02         0 \r\n 1999          197           10.132        25.97         20.31         9.144 \r\n 1999          198           17.495        27.56         18.42         0.254 \r\n 1999          199           19.483        31.48         21.97         0 \r\n 1999          200           21.347        32.44         21.08         32.512 \r\n 1999          201           24.766        33.27         21.48         0 \r\n 1999          202           25.038        33.26         23.37         0 \r\n 1999          203           25.38         33.53         23.25         0 \r\n 1999          204           20.205        31.43         23.08         0 \r\n 1999          205           25.216        34.15         20.43         0 \r\n 1999          206           25.008        34.11         23.34         0 \r\n 1999          207           9.66          29.81         24.08         1.27 \r\n 1999          208           22.306        33.73         23.11         0 \r\n 1999          209           24.71         35.19         21.9          0 \r\n 1999          210           24.78         35.59         24.4          0 \r\n 1999          211           22.393        34.85         22.95         2.032 \r\n 1999          212           17.575        28.69         18.63         0 \r\n 1999          213           17.108        24.43         14.48         0.254 \r\n 1999          214           6.298         20.71         16.47         1.524 \r\n 1999          215           14.433        25.08         14.89         0 \r\n 1999          216           21.696        26.9          17.85         0 \r\n 1999          217           21.768        27.91         14.89         0 \r\n 1999          218           4.353         22.51         17.09         44.45 \r\n 1999          219           16.446        27.17         18.91         54.102 \r\n 1999          220           21.235        26.82         17.14         0 \r\n 1999          221           24.401        28.97         15.42         0 \r\n 1999          222           24.586        30.07         19.82         0 \r\n 1999          223           6.497         23.51         18.29         10.16 \r\n 1999          224           20.575        30.21         16.33         0.254 \r\n 1999          225           11.448        19.83         14.19         0 \r\n 1999          226           25.224        24.2          10.59         0 \r\n 1999          227           19.726        28.83         14.82         2.032 \r\n 1999          228           17.747        29.76         19.35         1.524 \r\n 1999          229           24.362        30.14         15.75         0 \r\n 1999          230           19.836        27.23         17.47         13.97 \r\n 1999          231           20.043        23.66         14.24         0 \r\n 1999          232           22.26         25.91         14.36         0 \r\n 1999          233           22.913        27.81         15.93         0 \r\n 1999          234           14.877        28.64         17.75         0 \r\n 1999          235           22.497        25.78         16.29         0 \r\n 1999          236           17.85         24.83         15            0 \r\n 1999          237           23.14         26.98         14.15         0 \r\n 1999          238           19.937        29.49         18.19         0 \r\n 1999          239           22.752        31.31         16.81         0 \r\n 1999          240           21.719        31.68         17.57         0 \r\n 1999          241           15.397        30.44         19.82         0 \r\n 1999          242           20.072        27.46         17.54         0 \r\n 1999          243           20.552        29.11         16.47         0 \r\n 1999          244           11.78         28.83         18.09         0 \r\n 1999          245           19.962        32.06         20.37         0 \r\n 1999          246           19.78         31.28         20.09         0 \r\n 1999          247           6.278         24.2          18.08         22.352 \r\n 1999          248           19.731        22.79         13.44         0 \r\n 1999          249           19.856        26.31         11.86         0 \r\n 1999          250           17.729        31.7          16.29         19.05 \r\n 1999          251           21.89         23.6          12.05         0 \r\n 1999          252           21.627        20.61         9.03          0 \r\n 1999          253           21.303        25.73         9.46          0 \r\n 1999          254           18.479        25.5          11.25         0.254 \r\n 1999          255           13.87         21.08         9.57          0.254 \r\n 1999          256           16.528        18.36         7.39          0 \r\n 1999          257           18.55         19.15         7.86          0 \r\n 1999          258           17.766        20.3          5.459         0 \r\n 1999          259           19.367        22.09         5.449         0 \r\n 1999          260           17.13         22.269        6.821         0 \r\n 1999          261           18.422        26.64         9.41          0 \r\n 1999          262           2.579         17.16         11.42         1.27 \r\n 1999          263           16.017        15.03         4.881         1.778 \r\n 1999          264           19.57         18.23         2.005         0 \r\n 1999          265           18.999        24.79         4.388         0 \r\n 1999          266           18.38         29.49         10.25         0 \r\n 1999          267           17.789        27.51         9.24          0 \r\n 1999          268           16.821        28            13.58         0 \r\n 1999          269           8.162         21.71         11.22         3.302 \r\n 1999          270           10.659        18.45         9.58          5.08 \r\n 1999          271           11.313        18.88         8.11          0 \r\n 1999          272           18.062        16.74         2.507         0 \r\n 1999          273           15.872        22.34         6.417         0 \r\n 1999          274           11.199        19.73         2.642         0 \r\n 1999          275           16.81         12.31         0.467         0 \r\n 1999          276           5.403         7.94          0.467         1.27 \r\n 1999          277           16.611        14.77        -2.954         0 \r\n 1999          278           16.905        23.57         5.206         0 \r\n 1999          279           16.018        23.09         4.576         0 \r\n 1999          280           15.577        24.99         14.25         0 \r\n 1999          281           13.392        23.66         11.03         0 \r\n 1999          282           15.871        24.62         8.06          0 \r\n 1999          283           15.525        22.69         9.01          0 \r\n 1999          284           15.501        22.54         5.6           0 \r\n 1999          285           11.714        29.98         11.52         0 \r\n 1999          286           15.489        15.1          4.91          0 \r\n 1999          287           14.839        20.77         3.156         0 \r\n 1999          288           13.843        25.76         10.84         0 \r\n 1999          289           14.237        15.52         6.453         0 \r\n 1999          290           15.16         10.72         0.037         0 \r\n 1999          291           7.193         13.19        -1.821         0 \r\n 1999          292           10.107        9.36          1.228         0 \r\n 1999          293           14.139        17.83        -3.032         0 \r\n 1999          294           12.672        25.04         5.101         0 \r\n 1999          295           14.052        14.33         0.875         0 \r\n 1999          296           14.454        8.53         -3.683         0 \r\n 1999          297           14.132        13.31        -4.182         0 \r\n 1999          298           12.001        20.83         2.775         0 \r\n 1999          299           12.114        22.36         2.042         0 \r\n 1999          300           12.444        28.39         7.31          0 \r\n 1999          301           11.773        16.01         4.173         0 \r\n 1999          302           7.719         24.35         8.26          15.24 \r\n 1999          303           10.161        14.84         4.917         0 \r\n 1999          304           13.059        20.08         2.546         0 \r\n 1999          305           12.43         13.61         1.759         0 \r\n 1999          306           13.017        9.57         -3.052         0 \r\n 1999          307           12.47         16.36        -3.137         0 \r\n 1999          308           10.659        17.65        -0.719         0 \r\n 1999          309           11.854        15.92         3.002         0 \r\n 1999          310           11.145        18.48         2.253         0 \r\n 1999          311           10.967        21.61         3.652         0 \r\n 1999          312           10.9          26.04         7.67          0 \r\n 1999          313           10.218        22.45         12.23         0 \r\n 1999          314           10.885        16.66         2.994         0 \r\n 1999          315           7.443         13.74         1.179         0 \r\n 1999          316           10.311        20.07         4.645         0 \r\n 1999          317           10.683        27.48         5.281         0 \r\n 1999          318           10.571        13.75         2.524         0 \r\n 1999          319           10.478        16.47         0.551         0 \r\n 1999          320           10.347        14.64         1.548         0 \r\n 1999          321           10.004        16.33         3.088         0 \r\n 1999          322           8.579         21.2          5.908         0 \r\n 1999          323           1.786         5.918        -1.792         0 \r\n 1999          324           8.643         10.2         -4.758         0 \r\n 1999          325           8.979         13.84         1.645         0 \r\n 1999          326           9.345         13.11        -0.927         16.002 \r\n 1999          327           2.74          6.293        -0.556         0 \r\n 1999          328           10.431        7.77         -3.33          0 \r\n 1999          329           10.015        9.15         -4.208         0 \r\n 1999          330           6.795         10.26         3.268         0 \r\n 1999          331           7.521         9.1           1.408         0 \r\n 1999          332           6.285         8.6           1.282         0 \r\n 1999          333           9.424         8.06         -3.425         0 \r\n 1999          334           7.358         10.11        -0.941         0 \r\n 1999          335           4.784         11.18         3.049         0 \r\n 1999          336           4.533         14.88         5.666         0 \r\n 1999          337           3.336         12.18         5.082         0 \r\n 1999          338           2.784         5.121        -0.103         0 \r\n 1999          339           9.243         1.871        -5.059         0 \r\n 1999          340           7.967         7.07         -8.41          0 \r\n 1999          341           8.93          10.52        -3.288         0 \r\n 1999          342           7.152         9.68         -2.04          0 \r\n 1999          343           7.675         6.563        -4.382         0 \r\n 1999          344           8.19          6.698        -7.19          0 \r\n 1999          345           7.877         8.01         -5.318         0 \r\n 1999          346           9.025         9.74         -5.814         0 \r\n 1999          347           9.127         8.9          -4.912         0 \r\n 1999          348           3.517        -0.185        -3.587         4.039 \r\n 1999          349           6.869        -0.71         -9.99          0 \r\n 1999          350           4.737        -4.429        -14.48         0 \r\n 1999          351           4.034        -5.327        -10.65         0 \r\n 1999          352           4.762        -3.262        -15.45         0 \r\n 1999          353           3.288        -0.74         -10.42         0 \r\n 1999          354           10.1         -10.1         -17.99         0 \r\n 1999          355           5.716        -9.72         -22.52         0 \r\n 1999          356           8.039        -10.47        -20.55         0 \r\n 1999          357           5.972         3.364        -17.82         0 \r\n 1999          358           8.052        -1.182        -13.73         0 \r\n 1999          359           9.022         5.283        -8.91          0 \r\n 1999          360           9.116         3.984        -4.198         0 \r\n 1999          361           5.583         2.273        -10.93         0 \r\n 1999          362           8.83          7.61         -7.04          0 \r\n 1999          363           9.086         11.39        -1.955         0 \r\n 1999          364           8.55          9.52         -0.929         0 \r\n 1999          365           8.61          9.53         -3.613         0 \r\n 2000          1             4.082         6.423        -1.7           0 \r\n 2000          2             2.357         4.957        -1.433         0 \r\n 2000          3             1.233        -0.323        -7.16          0 \r\n 2000          4             9.427        -7.15         -14.77         0 \r\n 2000          5             4.898         5.304        -12.11         0 \r\n 2000          6             9.419         4.93         -6.252         0 \r\n 2000          7             9.402         8.25         -8.99          0 \r\n 2000          8             9.221         8.54         -4.429         0 \r\n 2000          9             2.461         6.893        -1.296         0 \r\n 2000          10            7.494         6.774        -3.404         0 \r\n 2000          11            4.156        -0.804        -6.988         0 \r\n 2000          12            6.653         5.565        -5.91          0 \r\n 2000          13            9.889        -0.479        -12.77         0 \r\n 2000          14            7.245         8.39         -9.2           0 \r\n 2000          15            6.17          11.23        -2.763         0 \r\n 2000          16            5.153        -2.715        -9.05          0 \r\n 2000          17            1.804        -1.003        -3.282         1 \r\n 2000          18            9.311         7.81         -2.192         0 \r\n 2000          19            3.729         5.226        -13.66         0 \r\n 2000          20            10.438       -2.554        -15.84         0 \r\n 2000          21            9.835         2.033        -13.56         0 \r\n 2000          22            9.393         8.02         -7.19          0 \r\n 2000          23            9.226        -3.566        -13.36         0 \r\n 2000          24            8.327         4.49         -14.63         0 \r\n 2000          25            9.704        -2.973        -14.45         0 \r\n 2000          26            11.511       -4.179        -17.93         0 \r\n 2000          27            7.544        -2.877        -13.99         0 \r\n 2000          28            4.81         -3.375        -9.5           3.327 \r\n 2000          29            8.52         -5.191        -10.17         0 \r\n 2000          30            10.899       -5.958        -13.06         0 \r\n 2000          31            9.532        -0.546        -13.64         0 \r\n 2000          32            5.879        -3.014        -10.04         0 \r\n 2000          33            9.805         6.756        -10.6          0 \r\n 2000          34            12.288        6.544        -4.563         0 \r\n 2000          35            5.26         -1.743        -8.65          0 \r\n 2000          36            10.286        4.031        -11.49         0 \r\n 2000          37            11.893        9.34         -1.914         0 \r\n 2000          38            12.911        4.358        -6.192         0 \r\n 2000          39            12.412        13.77        -9.71          0 \r\n 2000          40            9.597         15.58        -0.741         0 \r\n 2000          41            2.863         2.661        -6.486         0 \r\n 2000          42            8.595        -2.771        -11.83         0 \r\n 2000          43            3.443        -2.051        -5.842         1.5 \r\n 2000          44            6.398        -2.766        -6.809         0 \r\n 2000          45            12.87         2.431        -10.46         0 \r\n 2000          46            13.366        15.37        -5.513         0 \r\n 2000          47            13.858        2.776        -10.01         0 \r\n 2000          48            2.263         3.575        -2.715         10.058 \r\n 2000          49            9.833        -1.744        -8.8           0 \r\n 2000          50            12.725        1.113        -8.07          0 \r\n 2000          51            15.24         7.81         -9.09          0 \r\n 2000          52            13.168        17.5          1.006         0 \r\n 2000          53            5.178         17.16         4.078         5.537 \r\n 2000          54            5.081         15.37         8.69          6.198 \r\n 2000          55            3.793         12.32         6.921         9.093 \r\n 2000          56            7.971         17.4          7.86          2.591 \r\n 2000          57            5.74          7.9           0.906         0 \r\n 2000          58            16.268        13.47        -2.58          0 \r\n 2000          59            14.324        19.34         0.417         3.962 \r\n 2000          60            4.25          14.38         1.946         6.706 \r\n 2000          61            15.929        8.69         -1.079         0 \r\n 2000          62            9.038         7.36         -2.619         0 \r\n 2000          63            11.89         11.81        -0.897         0 \r\n 2000          64            17.31         19.28        -0.435         0 \r\n 2000          65            17.41         20.08         0.885         0 \r\n 2000          66            17.022        22.73         6.582         0 \r\n 2000          67            11.005        24.66         13.43         0 \r\n 2000          68            8.14          18.08        -0.776         0 \r\n 2000          69            9.353         0.364        -4.555         0 \r\n 2000          70            13.085        3.108        -5.793         0 \r\n 2000          71            19.237        7.61         -7.76          0 \r\n 2000          72            7.256         11.66        -3.586         0 \r\n 2000          73            17.963        10.63        -2.629         0 \r\n 2000          74            15.836        14            0.256         0 \r\n 2000          75            4.475         10.28        -3.852         0 \r\n 2000          76            20.361        5.719        -8.84          0 \r\n 2000          77            18.369        8.78         -7.41          0 \r\n 2000          78            2.902         4.053         0.712         3 \r\n 2000          79            4.648         3.001        -0.37          0 \r\n 2000          80            5.98          6.816        -0.142         0 \r\n 2000          81            10.34         12.71         4.885         0 \r\n 2000          82            9.801         16.88         5.19          0 \r\n 2000          83            6.683         18.67         8.45          4.648 \r\n 2000          84            11.154        15.15         5.361         0 \r\n 2000          85            21.154        18.09         0.475         0 \r\n 2000          86            16.128        20.4          5.227         0 \r\n 2000          87            21.524        16.89        -4.22          0 \r\n 2000          88            22.433        13.98        -6.251         0 \r\n 2000          89            18.818        15.12        -1.601         0 \r\n 2000          90            16.481        17.43         2.806         0 \r\n 2000          91            14.929        16.36         2.739         1.27 \r\n 2000          92            16.829        13.77         3.772         4.064 \r\n 2000          93            20.006        18.34         0.645         0 \r\n 2000          94            19.93         11.56        -1.803         0 \r\n 2000          95            23.261        12.32        -5.176         0 \r\n 2000          96            22.016        29.99         3.718         0 \r\n 2000          97            23.248        17.59         0.855         0 \r\n 2000          98            8.415         10.1         -3.463         1.016 \r\n 2000          99            24.519        12.84        -5.588         0 \r\n 2000          100           23.526        17.88         0.861         0 \r\n 2000          101           1.558         8.31          3.658         16.764 \r\n 2000          102           12.345        8.81          1.222         0 \r\n 2000          103           22.716        13.85        -1.091         0 \r\n 2000          104           22.944        22.13         4.051         0 \r\n 2000          105           21.17         24.91         7.29          0 \r\n 2000          106           5.848         8.39          2.908         0 \r\n 2000          107           1.739         7.74          2.193         8.382 \r\n 2000          108           9.961         9.25          0.921         0 \r\n 2000          109           16.691        22.92         3.078         0 \r\n 2000          110           20.001        24.99         13.82         0 \r\n 2000          111           3.424         13.97         3.612         1.524 \r\n 2000          112           24.253        18.54         0.482         0 \r\n 2000          113           19.375        24.72         5.752         0 \r\n 2000          114           19.168        22.9          12.01         0 \r\n 2000          115           23.32         19.17         7.27          0 \r\n 2000          116           20.309        20.3          4.967         0 \r\n 2000          117           17.835        20.92         5.053         1.524 \r\n 2000          118           10.219        16.49         10.04         6.35 \r\n 2000          119           24.13         21.21         8.44          0 \r\n 2000          120           26.556        20.39         4.097         0 \r\n 2000          121           18.427        25.21         8.22          0.254 \r\n 2000          122           16.947        21.65         11.6          0 \r\n 2000          123           26.506        25.68         6.226         0 \r\n 2000          124           17.914        25.77         12.34         0 \r\n 2000          125           23.657        27.73         12.3          0 \r\n 2000          126           25.028        27.38         13.42         0 \r\n 2000          127           19.447        26.35         13.14         0 \r\n 2000          128           14.482        28.65         16.47         0 \r\n 2000          129           7.189         22.83         12.68         21.59 \r\n 2000          130           17.4          19.07         10.6          1.016 \r\n 2000          131           13.815        22.54         8.05          0 \r\n 2000          132           22.821        34.67         16.28         0 \r\n 2000          133           18.958        21.15         7.23          5.334 \r\n 2000          134           25.214        15.47         4.354         0 \r\n 2000          135           15.493        19.96         6.224         0 \r\n 2000          136           21.574        22.98         8.08          0 \r\n 2000          137           22.648        26.8          12.08         0 \r\n 2000          138           12.092        25.25         18.65         0 \r\n 2000          139           9.167         20.15         9.66          2.794 \r\n 2000          140           17.415        18.05         8.25          0 \r\n 2000          141           27.431        23.89         5.983         0.254 \r\n 2000          142           25.467        25.77         12.04         0 \r\n 2000          143           20.799        31.15         16.93         0 \r\n 2000          144           16.207        29.64         15.72         0 \r\n 2000          145           22.801        28.33         13.82         0 \r\n 2000          146           19.094        22.97         12.74         0 \r\n 2000          147           1.701         17.17         13.36         31.75 \r\n 2000          148           7.647         18            12.23         0 \r\n 2000          149           23.171        22.59         9.56          0 \r\n 2000          150           24.417        29.95         12.4          0 \r\n 2000          151           17.383        34.36         19.4          2.54 \r\n 2000          152           18.652        33.46         18.28         0.508 \r\n 2000          153           20.471        29.84         16.12         0 \r\n 2000          154           28.47         24.46         11.14         0 \r\n 2000          155           28.094        25.75         10.95         8.128 \r\n 2000          156           11.869        21.66         11.53         9.398 \r\n 2000          157           26.038        19.59         9.61          0 \r\n 2000          158           29.242        24.25         8.77          0 \r\n 2000          159           27.418        30.23         13.63         0 \r\n 2000          160           28.265        33.61         17.92         0 \r\n 2000          161           27.556        31.54         18.29         0 \r\n 2000          162           17.517        29.08         22.99         0 \r\n 2000          163           15.247        28.93         17.32         0 \r\n 2000          164           17.786        30.53         16.51         0.254 \r\n 2000          165           12.338        28.09         17.6          33.274 \r\n 2000          166           14.793        20.24         14.24         0.254 \r\n 2000          167           25.451        29.75         11.58         3.048 \r\n 2000          168           23.629        21.22         12.61         1.524 \r\n 2000          169           13.567        19.36         10.47         0.254 \r\n 2000          170           27.842        24.42         10.87         0 \r\n 2000          171           21.11         28.16         12.5          0.508 \r\n 2000          172           21.586        26.41         15.94         5.08 \r\n 2000          173           29.001        27.68         12.87         0 \r\n 2000          174           28.327        30.32         14.8          0 \r\n 2000          175           17.004        29.97         20.13         14.732 \r\n 2000          176           23.276        28.56         18.35         0.254 \r\n 2000          177           6.554         26.11         17.13         33.274 \r\n 2000          178           29.314        24.77         15.51         0 \r\n 2000          179           25.931        25.65         15.45         0 \r\n 2000          180           16.141        22.71         14.25         0.762 \r\n 2000          181           26.559        26.17         12.25         0 \r\n 2000          182           28.574        27.09         16.41         0 \r\n 2000          183           25.384        28.23         16.25         0 \r\n 2000          184           24.029        30.94         18.5          4.826 \r\n 2000          185           21.684        27.07         17.33         0 \r\n 2000          186           16.263        28.47         20.36         4.826 \r\n 2000          187           13.788        26.84         20.19         11.43 \r\n 2000          188           20.032        29.12         19.43         5.842 \r\n 2000          189           26.169        31.91         22.53         0 \r\n 2000          190           26.636        31.79         21.78         0 \r\n 2000          191           21.839        32.36         23.22         0 \r\n 2000          192           19.243        30.97         23            0 \r\n 2000          193           14.782        29.46         19.59         10.922 \r\n 2000          194           25.226        29.14         18.81         1.524 \r\n 2000          195           26.192        30.46         18.14         0 \r\n 2000          196           25.918        31.58         19.64         0 \r\n 2000          197           16.86         28.8          20.63         1.778 \r\n 2000          198           15.744        28.28         20.49         0.508 \r\n 2000          199           23.045        27.34         18.53         0 \r\n 2000          200           3.053         18.7          15.84         13.716 \r\n 2000          201           9.964         22.27         15.7          0 \r\n 2000          202           17.102        24.33         14.62         0 \r\n 2000          203           25.15         24.22         11.54         0 \r\n 2000          204           21.522        25.46         12.79         0 \r\n 2000          205           16.588        25.4          15.66         0 \r\n 2000          206           20.377        26.32         15.89         0 \r\n 2000          207           21.173        27.9          17.86         4.826 \r\n 2000          208           17.203        28.53         16.43         45.466 \r\n 2000          209           15.495        27.83         16.14         0 \r\n 2000          210           15.93         27.96         17.17         1.016 \r\n 2000          211           13.764        24.76         15.53         0 \r\n 2000          212           21.531        27.63         16.24         0 \r\n 2000          213           22.628        28.57         16.72         0 \r\n 2000          214           16.673        28.92         18.34         0 \r\n 2000          215           19.395        30.16         18.41         0 \r\n 2000          216           12.061        26.44         17.94         7.62 \r\n 2000          217           18.733        28.44         18.38         0 \r\n 2000          218           18.934        31.16         20.41         0 \r\n 2000          219           20.396        28.64         19            0 \r\n 2000          220           22.864        32.42         17.57         0 \r\n 2000          221           21.86         31.49         19.9          4.318 \r\n 2000          222           22.032        30.31         20.98         0 \r\n 2000          223           19.074        29.69         19.8          0 \r\n 2000          224           19.802        29.52         18.3          0 \r\n 2000          225           18.921        32.09         19.95         0 \r\n 2000          226           3.794         25.93         21.87         18.034 \r\n 2000          227           17.443        31.57         21.93         1.27 \r\n 2000          228           20.492        29.52         18.05         0 \r\n 2000          229           19.105        30.71         16.7          0 \r\n 2000          230           7.829         25.27         14.48         0 \r\n 2000          231           20.38         24.94         13.43         0 \r\n 2000          232           3.292         18.12         15.7          2.54 \r\n 2000          233           11.716        24.63         15.67         0 \r\n 2000          234           12.038        28.14         18.57         3.302 \r\n 2000          235           10.137        28.52         19.04         0.254 \r\n 2000          236           11.792        28.96         19.7          2.794 \r\n 2000          237           18.859        30.11         20.54         0 \r\n 2000          238           19.312        31.51         18.79         0 \r\n 2000          239           20.411        33.14         20.3          0 \r\n 2000          240           13.847        29.21         19.62         0 \r\n 2000          241           16.453        36.66         22.36         0 \r\n 2000          242           17.65         28.23         17.54         0 \r\n 2000          243           20.04         35.24         19.12         0 \r\n 2000          244           18.618        35.04         19.29         0 \r\n 2000          245           15.909        30.96         17.9          0 \r\n 2000          246           17.67         37.35         19.85         0 \r\n 2000          247           19.104        35.78         21.56         0 \r\n 2000          248           13.972        26.86         15.76         1 \r\n 2000          249           20.489        25.8          12.14         0 \r\n 2000          250           20.234        27.53         11.27         0 \r\n 2000          251           15.054        27.03         15.83         0 \r\n 2000          252           19.473        31.57         12.96         0 \r\n 2000          253           18.251        32.02         19.26         0 \r\n 2000          254           16.833        33.72         18.11         0 \r\n 2000          255           18.438        34.91         15.07         0 \r\n 2000          256           19.27         26.13         8.6           0 \r\n 2000          257           17.546        32.31         13.23         0 \r\n 2000          258           19.002        26.6          10.46         0 \r\n 2000          259           18.963        22.6          6.389         0 \r\n 2000          260           18.365        27.44         8.46          0 \r\n 2000          261           17.641        32.56         11.11         0 \r\n 2000          262           15.117        33.52         13.61         0 \r\n 2000          263           3.8           24.91         11.23         2.54 \r\n 2000          264           10.943        17.61         5.637         2.032 \r\n 2000          265           15.573        19.03         2.946         0 \r\n 2000          266           8.474         22.7          9.82          12.7 \r\n 2000          267           3.54          12.22         8.19          0 \r\n 2000          268           4.459         9.38          5.148         0.508 \r\n 2000          269           18.037        18.43         2.392         0 \r\n 2000          270           17.808        23.87         2.565         0 \r\n 2000          271           17.232        26.18         6.574         0 \r\n 2000          272           16.967        26.61         9.83          0 \r\n 2000          273           16.152        28.11         10.69         0 \r\n 2000          274           15.65         27.27         18.34         0 \r\n 2000          275           10.76         29.41         13.28         0 \r\n 2000          276           14.494        24.34         11.42         0 \r\n 2000          277           10.943        23.62         9.38          0 \r\n 2000          278           11.717        18.74         6.321         0.762 \r\n 2000          279           2.878         10.53         0.066         7.62 \r\n 2000          280           14.997        7.35         -4.132         0 \r\n 2000          281           9.397         4.66         -4.218         0 \r\n 2000          282           16.333        8.2          -5.668         0 \r\n 2000          283           15.983        12.45        -5.075         0 \r\n 2000          284           15.934        16.64        -2.622         0 \r\n 2000          285           14.515        20.23         1.27          0 \r\n 2000          286           11.559        24.49         10.28         0 \r\n 2000          287           13.001        26.65         15.57         11.684 \r\n 2000          288           12.339        23.85         10.88         0.254 \r\n 2000          289           13.966        19.63         6.893         0 \r\n 2000          290           11.708        19.68         7.52          0 \r\n 2000          291           12.61         21.75         9.07          2.032 \r\n 2000          292           13.733        26.47         7.6           0 \r\n 2000          293           13.397        26.66         8.73          0 \r\n 2000          294           11.113        22.9          10.8          0 \r\n 2000          295           11.738        23.61         9.03          0 \r\n 2000          296           2.087         17.18         12.27         1.524 \r\n 2000          297           6.844         22.71         14.3          3.556 \r\n 2000          298           3.901         19.75         13.5          2.032 \r\n 2000          299           3.908         19.92         15.49         0 \r\n 2000          300           10.069        22.41         12.5          0.254 \r\n 2000          301           11.746        18.27         7.64          0 \r\n 2000          302           5.314         16.63         7.16          0 \r\n 2000          303           1.169         13.81         10.59         17.272 \r\n 2000          304           11.321        21.72         10.27         0 \r\n 2000          305           2.424         20.58         11.41         0 \r\n 2000          306           2.867         19.16         8.65          10.922 \r\n 2000          307           10.783        15.09         3.852         0 \r\n 2000          308           9.754         12.59         1.529         0 \r\n 2000          309           11.442        15.37         3.238         0 \r\n 2000          310           1.626         13.3          4.27          2.794 \r\n 2000          311           1.096         12.84         0.305         14.986 \r\n 2000          312           5.424         0.323        -5.29          0 \r\n 2000          313           6.422        -2.535        -6.526         0 \r\n 2000          314           1.748        -3.769        -7.34          0 \r\n 2000          315           8.237         3.011        -6.683         0 \r\n 2000          316           2.032        -0.449        -4.42          2.921 \r\n 2000          317           3.325        -0.273        -5.181         0 \r\n 2000          318           5.302        -3.221        -8.49          0 \r\n 2000          319           10.399       -0.473        -7.19          0 \r\n 2000          320           5.489         7.08         -8.77          0 \r\n 2000          321           4.039         0.162        -8.91          0 \r\n 2000          322           10.206       -0.377        -10.01         0 \r\n 2000          323           8.847         2.916        -8.83          0 \r\n 2000          324           7.441         3.623        -8.37          0 \r\n 2000          325           7.916        -6.957        -14.61         0 \r\n 2000          326           9.743         3.325        -14.63         0 \r\n 2000          327           8.341         2.916        -10.32         0 \r\n 2000          328           9.289         9.58         -8.28          0 \r\n 2000          329           9.048         9.67         -7.23          0 \r\n 2000          330           5.474         6.466        -5.706         0 \r\n 2000          331           1.955        -2.004        -7.26          0 \r\n 2000          332           8.364         10.68        -9.01          0 \r\n 2000          333           3.983         8.94         -4.391         0 \r\n 2000          334           3.032         3.091        -4.006         0 \r\n 2000          335           2.353         0.069        -5.26          0 \r\n 2000          336           3.083        -0.376        -3.798         1 \r\n 2000          337           7.284        -0.347        -9.13          0 \r\n 2000          338           7.691         0.989        -11.14         0 \r\n 2000          339           4.689         3.631        -7.63          0 \r\n 2000          340           4.54         -7.63         -13.48         0 \r\n 2000          341           5.168         1.162        -10.94         0 \r\n 2000          342           7.41          9.99         -0.899         0 \r\n 2000          343           8.523         1.265        -8.59          0 \r\n 2000          344           2.64          3.93         -5.377         0 \r\n 2000          345           3.858         2.005        -17.47         7.722 \r\n 2000          346           4.616        -16.03        -21.36         0 \r\n 2000          347           8.627        -14.98        -24.69         0 \r\n 2000          348           4.168        -9.16         -15            0 \r\n 2000          349           7.763        -9.52         -17.94         0 \r\n 2000          350           3.247        -2.935        -9.53          0 \r\n 2000          351           7.182        -2.991        -20.11         0 \r\n 2000          352           8.327        -11.46        -21.73         0 \r\n 2000          353           5.109        -10.23        -17.33         2 \r\n 2000          354           9.064        -13.74        -20.93         1 \r\n 2000          355           4.53         -5.588        -17.22         0 \r\n 2000          356           9.362        -16.31        -20.93         0 \r\n 2000          357           7.751        -11.09        -25.4          0 \r\n 2000          358           8.497        -9.75         -19.97         0 \r\n 2000          359           9.231        -16.51        -23.5          0 \r\n 2000          360           4.746        -10.66        -22.7          0 \r\n 2000          361           8.183        -8.78         -16.35         0 \r\n 2000          362           7.131        -9.08         -18.89         0 \r\n 2000          363           4.038        -5.287        -13.04         0 \r\n 2000          364           8.279        -10.5         -15.6          0 \r\n 2000          365           8.863        -11.29        -18.41         0 \r\n 2000          366           7.69         -13.38        -19.98         0 \r\n 2001          1             8.001        -8.77         -16.87         0 \r\n 2001          2             5.815        -4.871        -22.34         0 \r\n 2001          3             7.813        -0.564        -7.52          0 \r\n 2001          4             7.158         4.709        -10.06         0 \r\n 2001          5             8.509         2.784        -2.794         0 \r\n 2001          6             7.958         6.323        -3.462         0 \r\n 2001          7             3.148         1.788        -3.316         0 \r\n 2001          8             7.629        -0.583        -8.19          0 \r\n 2001          9             8.91          1.786        -11.95         0 \r\n 2001          10            7.302         5.891        -3.041         0 \r\n 2001          11            1.592         2.748        -0.385         0 \r\n 2001          12            3.237         0.119        -3.114         0 \r\n 2001          13            2.745         1.72         -1.175         6.147 \r\n 2001          14            2.422         1.32         -3.076         0 \r\n 2001          15            4.577        -3.029        -5.948         0 \r\n 2001          16            4.931        -5.928        -8.02          0 \r\n 2001          17            7.556        -1.745        -9.39          0 \r\n 2001          18            5.525         0.136        -8.64          0 \r\n 2001          19            10.605       -8.65         -19.8          0 \r\n 2001          20            9.059        -2.765        -20.09         0 \r\n 2001          21            10.276       -5.523        -12.77         0 \r\n 2001          22            9.704         5.347        -12.4          0 \r\n 2001          23            10.235        2.474        -5.579         0 \r\n 2001          24            10.819       -3.24         -14.99         0 \r\n 2001          25            8.439        -1.832        -16.6          4.521 \r\n 2001          26            3.651        -1.328        -11.82         0 \r\n 2001          27            10.736       -4.114        -15.48         0 \r\n 2001          28            4.704        -0.833        -6.464         12.878 \r\n 2001          29            1.836         0.059        -2.078         6.147 \r\n 2001          30            2.811         1.74         -4.469         0 \r\n 2001          31            12.889       -2.048        -8.03          0 \r\n 2001          32            13.351       -4.36         -23.04         0 \r\n 2001          33            8.721        -8.43         -24.37         0 \r\n 2001          34            8.201         1.378        -9.1           0 \r\n 2001          35            5.185         2.084        -5.415         0 \r\n 2001          36            7.086         3.07         -7.85          0 \r\n 2001          37            12.221        0.801        -7.18          0 \r\n 2001          38            2.065        -1.019        -5.93          4.14 \r\n 2001          39            1.79         -1.134        -8.88          13.564 \r\n 2001          40            7.636        -8.87         -18.77         0 \r\n 2001          41            13.945       -11           -21.27         0 \r\n 2001          42            11.163       -3.511        -13.73         0 \r\n 2001          43            11.642        3.919        -3.53          0 \r\n 2001          44            5.015         1.9          -2.009         2.921 \r\n 2001          45            5.826        -0.44         -12.24         0 \r\n 2001          46            9.351        -6.321        -11.54         0 \r\n 2001          47            13.233       -7.1          -17.12         0 \r\n 2001          48            12.163       -9.85         -17.57         0 \r\n 2001          49            12.398        0.004        -13.77         0 \r\n 2001          50            12.879        1.544        -4.748         0 \r\n 2001          51            11.862       -3.555        -10.83         0 \r\n 2001          52            8.213        -9.47         -15.44         0 \r\n 2001          53            11.508        0.023        -9.5           0 \r\n 2001          54            9.292         0.157        -10.73         10.922 \r\n 2001          55            2.672         2.964        -2.8           9.525 \r\n 2001          56            14.414       -1.979        -7.43          0 \r\n 2001          57            8.235         1.417        -10.17         0 \r\n 2001          58            6.453        -10.05        -15.01         0 \r\n 2001          59            14.438       -6.142        -16.94         0 \r\n 2001          60            7.744        -1.277        -9.9           0 \r\n 2001          61            16.069        1.131        -6.377         0 \r\n 2001          62            16.626        5.287        -5.378         0 \r\n 2001          63            16.707       -2.227        -7.41          0 \r\n 2001          64            16.988       -1.915        -8.96          0 \r\n 2001          65            12.802       -0.327        -9.89          0 \r\n 2001          66            6.885        -0.187        -3.976         0 \r\n 2001          67            14.572       -2.257        -5.556         0 \r\n 2001          68            16.299        1.523        -7.066         3.302 \r\n 2001          69            4.241         2.695        -1.569         3.454 \r\n 2001          70            4.627        -0.448        -4.917         9.576 \r\n 2001          71            8.731         3.026        -2.668         0 \r\n 2001          72            13.147        9.22          0.024         0 \r\n 2001          73            12.851        13.361        1.13          0 \r\n 2001          74            2.746         4.009        -1.658         0 \r\n 2001          75            11.596        4.684        -3.296         0 \r\n 2001          76            18.969        7.271        -5.564         0 \r\n 2001          77            17.183        7.478        -4.078         0 \r\n 2001          78            12.588        8.961        -0.724         0 \r\n 2001          79            18.754        14.911       -1.721         0 \r\n 2001          80            8.831         9.678         2.035         0 \r\n 2001          81            10.886        14.663        2.757         0 \r\n 2001          82            3.44          2.759        -3.428         0 \r\n 2001          83            19.608        0.204        -6.878         0 \r\n 2001          84            16.792       -1.762        -8.74          0 \r\n 2001          85            20.834        3.513        -11.1          0 \r\n 2001          86            19.829        7.68         -7.43          0 \r\n 2001          87            8.593         7.24          1.428         0 \r\n 2001          88            9.909         11.05         2.958         0 \r\n 2001          89            16.915        15.04         2.178         3.404 \r\n 2001          90            18.855        9.87         -0.46          0 \r\n 2001          91            9.071         9.47         -2.409         0 \r\n 2001          92            18.591        15.71         0.278         0 \r\n 2001          93            5.243         10.61         1.683         7.112 \r\n 2001          94            11.823        18.63         3.156         0 \r\n 2001          95            3.643         18.06         8.79          11.684 \r\n 2001          96            3.261         19.62         8.14          0.508 \r\n 2001          97            20.505        20.89         5.407         0 \r\n 2001          98            21.152        28.49         2.701         3.302 \r\n 2001          99            21.36         20.51         5.274         0.254 \r\n 2001          100           4.696         15.07         7.63          35.56 \r\n 2001          101           10.654        20.13         6.58          23.368 \r\n 2001          102           14.336        13.99         4.129         0 \r\n 2001          103           18.946        19.09         2.016         1.524 \r\n 2001          104           20.924        19.96         3.853         0 \r\n 2001          105           23.26         15.01         1.218         0 \r\n 2001          106           22.435        5.987        -1.907         0 \r\n 2001          107           21.826        10.9         -0.129         0 \r\n 2001          108           22.223        16.76        -1.544         0 \r\n 2001          109           14.912        21.6          6.902         0 \r\n 2001          110           16.611        26.23         12.02         2.794 \r\n 2001          111           22.191        20.11         10.04         5.588 \r\n 2001          112           6.301         23.12         9.2           2.032 \r\n 2001          113           13.185        17.23         2.501         0 \r\n 2001          114           29.963        20.92         0.069         0 \r\n 2001          115           30.11         24.04         7.39          0 \r\n 2001          116           24.008        29.16         11.09         0 \r\n 2001          117           23.871        29.14         13.4          0 \r\n 2001          118           23.144        27.67         14.34         0 \r\n 2001          119           18.186        27.62         13.13         0 \r\n 2001          120           8.923         21.19         15.2          6.35 \r\n 2001          121           22.154        29.68         13.07         0 \r\n 2001          122           2.174         21.69         11.28         11.176 \r\n 2001          123           5.862         15.4          9.86          21.336 \r\n 2001          124           5.397         16.35         11.95         5.842 \r\n 2001          125           6.489         20.15         14.29         12.446 \r\n 2001          126           19.396        21.45         9.64          0 \r\n 2001          127           24.545        20.59         6.711         0 \r\n 2001          128           31.698        22.37         10.18         0 \r\n 2001          129           29.099        29.22         11.95         10.414 \r\n 2001          130           17.238        26.66         13.16         8.382 \r\n 2001          131           24.43         21.89         10.48         0 \r\n 2001          132           12.63         18.8          8.13          1.27 \r\n 2001          133           20.592        22.73         9.68          34.29 \r\n 2001          134           23.687        31.24         17.53         0 \r\n 2001          135           23.672        32.39         20.13         0 \r\n 2001          136           24.778        29.91         17.04         0 \r\n 2001          137           10.201        28.66         16.77         0 \r\n 2001          138           32.5          26.27         14.71         0 \r\n 2001          139           32.558        28.1          12.96         0 \r\n 2001          140           3.174         20.58         10.42         45.212 \r\n 2001          141           16.232        14.24         7.58          0 \r\n 2001          142           22.559        17.35         5.948         0 \r\n 2001          143           12.684        14.06         7.19          1.524 \r\n 2001          144           14.766        15.04         4.912         0.254 \r\n 2001          145           23.947        19.93         8.22          0.254 \r\n 2001          146           8.442         19.35         10.91         0 \r\n 2001          147           10.442        24.65         11.36         2.286 \r\n 2001          148           8.38          22.16         11.34         3.302 \r\n 2001          149           13.836        22.11         10.38         0.508 \r\n 2001          150           2.028         16.21         10.24         30.48 \r\n 2001          151           6.858         12.76         6.853         8.636 \r\n 2001          152           32.987        23.61         6.006         5.08 \r\n 2001          153           21.703        21.31         9.16          0 \r\n 2001          154           3.658         18.52         10.29         0 \r\n 2001          155           3.649         15.88         10.79         3.81 \r\n 2001          156           11.006        19.24         13.51         11.176 \r\n 2001          157           25.622        24.37         14.48         0 \r\n 2001          158           7.845         26.61         16.67         0 \r\n 2001          159           32.929        27.46         14.2          0 \r\n 2001          160           22.958        28.1          15.75         0 \r\n 2001          161           25.195        30.05         17.11         18.796 \r\n 2001          162           26.644        33.82         21.27         0 \r\n 2001          163           18.267        30.48         22.39         0 \r\n 2001          164           11.873        30.3          22.59         0 \r\n 2001          165           8.869         26.04         17.58         11.684 \r\n 2001          166           28.15         26.07         12.85         0 \r\n 2001          167           24.546        28.89         15.42         0 \r\n 2001          168           16.339        28.47         16.73         0 \r\n 2001          169           25.07         32.14         17.8          10.922 \r\n 2001          170           6.274         20.56         12.95         5.08 \r\n 2001          171           10.347        20            14.3          0.762 \r\n 2001          172           32.144        24.65         13.41         0.254 \r\n 2001          173           20.552        23.77         11.51         0 \r\n 2001          174           19.041        25.93         11.95         0 \r\n 2001          175           21.726        31.99         17.91         0 \r\n 2001          176           27.374        31.25         19.26         0 \r\n 2001          177           18.497        29.76         18.42         0 \r\n 2001          178           23.799        30.35         19.33         0 \r\n 2001          179           26.033        29.35         17.22         0 \r\n 2001          180           23.718        29.5          18.53         0 \r\n 2001          181           25.004        31.39         19.13         0 \r\n 2001          182           12.769        23.87         13.88         0 \r\n 2001          183           16.799        28.86         13.43         0.254 \r\n 2001          184           19.427        30.93         18.66         11.938 \r\n 2001          185           23.796        30.66         19.79         0 \r\n 2001          186           27.603        28.65         16.32         0 \r\n 2001          187           24.043        33.16         18.08         0 \r\n 2001          188           21.289        33.43         22.98         0 \r\n 2001          189           12.143        29.88         22.36         0 \r\n 2001          190           20.686        32.62         20.79         0 \r\n 2001          191           13.297        29.37         18.64         0.254 \r\n 2001          192           14.508        27.06         18.69         1.27 \r\n 2001          193           19.51         26.39         17.69         1.524 \r\n 2001          194           16.822        28.97         14.76         0 \r\n 2001          195           24.41         27.86         17.68         0 \r\n 2001          196           7.741         25.71         16.99         0 \r\n 2001          197           18.646        30.38         20.14         0 \r\n 2001          198           22.627        34.93         20.66         7.112 \r\n 2001          199           11.748        30.5          20.7          0 \r\n 2001          200           12.219        29.28         21.62         4.318 \r\n 2001          201           16.199        31            23.25         0 \r\n 2001          202           24.971        33.87         22.75         0 \r\n 2001          203           24.961        34.94         24.15         0 \r\n 2001          204           18.602        31.94         23.78         0.254 \r\n 2001          205           12.454        30.61         19.21         0 \r\n 2001          206           10.813        27.28         19.02         0 \r\n 2001          207           14.639        27.2          19.87         0 \r\n 2001          208           6.052         23.86         19.19         0 \r\n 2001          209           21.52         30.32         21.12         0 \r\n 2001          210           24.604        31.37         19.27         0 \r\n 2001          211           21.34         34.78         22.15         0 \r\n 2001          212           24.215        34.11         24.75         0 \r\n 2001          213           22.772        34.44         24.65         0 \r\n 2001          214           22.566        33.33         23.85         0 \r\n 2001          215           17.027        30.02         22.84         0 \r\n 2001          216           23.847        34.94         21.14         0 \r\n 2001          217           23.533        34.42         22.34         0 \r\n 2001          218           22.767        34.69         22            0 \r\n 2001          219           23.964        32.94         20.54         0 \r\n 2001          220           23.109        33.25         19.62         0 \r\n 2001          221           21.359        30.09         16.63         0 \r\n 2001          222           22.954        24.92         12.41         0 \r\n 2001          223           24.256        27.14         13.36         0 \r\n 2001          224           20.222        30.43         15.16         0 \r\n 2001          225           23.851        28.15         13.01         0 \r\n 2001          226           13.424        27.12         14.21         0 \r\n 2001          227           4.197         20.05         13.76         29.718 \r\n 2001          228           23.584        24.33         13.7          0 \r\n 2001          229           22.464        26.38         13.18         11.176 \r\n 2001          230           22.664        23.53         14.71         0 \r\n 2001          231           24.049        26.84         12.78         0 \r\n 2001          232           21.738        26.88         14.52         0 \r\n 2001          233           21.056        32.93         19.18         0 \r\n 2001          234           9.907         29.98         21.52         0 \r\n 2001          235           20.491        29.3          19.65         0 \r\n 2001          236           11.495        26.15         19.22         1.016 \r\n 2001          237           16.131        26.58         19.16         0 \r\n 2001          238           21.849        29.97         16.92         0 \r\n 2001          239           21.771        30.52         16.93         0 \r\n 2001          240           20.902        28.87         13.17         0 \r\n 2001          241           20.804        32.58         18.33         0 \r\n 2001          242           17.858        27.32         16.31         0 \r\n 2001          243           21.93         25.63         12.95         0 \r\n 2001          244           19.27         26.51         12.39         0 \r\n 2001          245           20.722        30.41         15.38         0 \r\n 2001          246           19.991        32.79         16.62         0 \r\n 2001          247           20.256        31.12         13.26         0 \r\n 2001          248           17.807        30.72         15.26         0 \r\n 2001          249           6.994         26.03         19.48         7.112 \r\n 2001          250           5.639         23.17         17.09         29.21 \r\n 2001          251           18.134        20.93         12.81         3.048 \r\n 2001          252           17.203        21.23         11.82         0.762 \r\n 2001          253           21.038        26.34         9.52          0 \r\n 2001          254           20.767        26.43         13.03         0 \r\n 2001          255           19.242        29.66         13.02         0 \r\n 2001          256           10.099        20.85         15.46         0 \r\n 2001          257           5.53          16.4          12.12         0 \r\n 2001          258           2.062         14.86         11.01         4.318 \r\n 2001          259           5.605         17.31         12.5          12.954 \r\n 2001          260           13.94         21.26         13.64         0.762 \r\n 2001          261           5.771         17.59         11.8          5.588 \r\n 2001          262           16.142        23.71         11.13         0 \r\n 2001          263           10.477        26.85         13.23         1.524 \r\n 2001          264           19.208        23.78         11.54         0 \r\n 2001          265           12.152        24.48         11.55         1.016 \r\n 2001          266           6.278         18.08         7.48          0 \r\n 2001          267           19.352        16.34         2.881         0 \r\n 2001          268           18.92         18.69         2.215         0 \r\n 2001          269           18.786        21.11         2.318         0 \r\n 2001          270           17.931        24.46         4.244         0 \r\n 2001          271           17.884        23.74         5.863         0 \r\n 2001          272           17.783        21.1          7.14          0 \r\n 2001          273           17.476        24.07         6.218         0 \r\n 2001          274           15.905        28.37         10.52         0 \r\n 2001          275           16.978        29.32         10.89         0 \r\n 2001          276           14.842        22.35         11.03         0 \r\n 2001          277           1.95          13.33         7.32          6.604 \r\n 2001          278           11.079        14.06         3.796         0 \r\n 2001          279           16.292        17.15        -0.557         0 \r\n 2001          280           15.975        20.07         1.741         0 \r\n 2001          281           14.893        22.36         10.44         0 \r\n 2001          282           3.247         20.14         13.12         1.778 \r\n 2001          283           10.972        17.88         6.882         17.272 \r\n 2001          284           14.394        19.94         4.842         0 \r\n 2001          285           10.367        17.28         4.547         0 \r\n 2001          286           12.056        16.2          7.48          19.558 \r\n 2001          287           12.737        13.94         5.508         0 \r\n 2001          288           5.818         10.78         1.615         0 \r\n 2001          289           15.518        10.9         -1.735         0 \r\n 2001          290           14.289        19.46         0.657         0 \r\n 2001          291           12.008        16.72         6.517         0 \r\n 2001          292           9.688         17.95         0.884         0 \r\n 2001          293           13.537        22.89         3.602         0 \r\n 2001          294           9.664         18.36         7.38          0 \r\n 2001          295           1.962         13.88         8.14          10.668 \r\n 2001          296           11.909        19.18         8.88          0 \r\n 2001          297           11.593        14.05         1.511         3.048 \r\n 2001          298           13.917        8.91         -0.414         0 \r\n 2001          299           14.001        6.73         -3.967         0 \r\n 2001          300           13.213        10.81        -6.631         0 \r\n 2001          301           12.321        21.58         4.545         0 \r\n 2001          302           9.512         15.41         5.459         0 \r\n 2001          303           7.798         19.73         7.13          0.762 \r\n 2001          304           6.286         19.69         12.34         0 \r\n 2001          305           11.532        22.9          8.32          0 \r\n 2001          306           12.193        19.05         2.968         0 \r\n 2001          307           10.684        21.33         5.891         0 \r\n 2001          308           11.957        22.09         7.6           0 \r\n 2001          309           10.815        20.93         4.11          0 \r\n 2001          310           10.851        23.13         9.11          0 \r\n 2001          311           10.716        24.13         9.7           0 \r\n 2001          312           10.082        10.23         0.819         0 \r\n 2001          313           11.703        15.55        -2.277         0 \r\n 2001          314           11.308        19            1.243         0 \r\n 2001          315           11.15         16.43         2.072         0 \r\n 2001          316           8.423         18.11         3.824         0 \r\n 2001          317           2.833         16.92         12.55         0 \r\n 2001          318           1.984         18.63         14.85         0 \r\n 2001          319           9.73          23.29         11.61         0 \r\n 2001          320           9.637         21.91         8.99          0 \r\n 2001          321           6.815         19.61         8.39          0 \r\n 2001          322           2.73          15.27         5.172         0 \r\n 2001          323           10.601        8.33         -2.668         0 \r\n 2001          324           8.775         12.51        -5.531         0 \r\n 2001          325           9.278         13.91        -0.423         0 \r\n 2001          326           9.598         17.43         3.765         2.642 \r\n 2001          327           0.767         12.61         7.39          21.641 \r\n 2001          328           1.959         12.96         3.881         4.267 \r\n 2001          329           2.661         5.113         2.647         6.121 \r\n 2001          330           5.901         12.82         0.797         0 \r\n 2001          331           2.207         0.787        -4.825         0 \r\n 2001          332           2.001        -2.783        -4.998         0 \r\n 2001          333           2.168        -0.671        -3.815         0 \r\n 2001          334           1.525         1.513        -1.858         0 \r\n 2001          335           8.719         8.62         -4.401         0 \r\n 2001          336           8.844         14.41        -1.973         0 \r\n 2001          337           2.352         11.09        -0.604         0 \r\n 2001          338           2.156         17.57         10.48         2.591 \r\n 2001          339           4.521         18.69         1.33          0 \r\n 2001          340           8.89          11.06        -2.773         0 \r\n 2001          341           3.231         5.686        -1.849         0 \r\n 2001          342           9.025         3.839        -4.142         0 \r\n 2001          343           8.804         11.12        -4.468         0 \r\n 2001          344           8.294         9.32         -2.112         0 \r\n 2001          345           8.76          10.71        -0.538         6.248 \r\n 2001          346           1.269         6.016        -1.678         0 \r\n 2001          347           7.602         2.859        -3.7           0 \r\n 2001          348           4.571         4.462        -5.028         0 \r\n 2001          349           7.636         10.52         1.957         0 \r\n 2001          350           1.28          7.25         -1.574         0 \r\n 2001          351           8.577         8.11         -5.325         0 \r\n 2001          352           4.007         8.45         -2.782         0 \r\n 2001          353           8.981         3.562        -7.43          0 \r\n 2001          354           8.75          9.38         -6.613         0 \r\n 2001          355           6.042         8.36         -6.565         2.921 \r\n 2001          356           1.993         6.98         -7.84          0 \r\n 2001          357           8.037        -3.787        -8.94          0 \r\n 2001          358           8.48         -6.145        -13.24         0 \r\n 2001          359           7.537        -6.242        -14.7          0 \r\n 2001          360           5.644        -4.131        -15.33         0 \r\n 2001          361           3.316        -1.449        -6.948         0 \r\n 2001          362           4.965        -3.574        -12.07         0 \r\n 2001          363           8.247        -9.32         -14.85         0 \r\n 2001          364           7.286        -7.31         -14.99         0 \r\n 2001          365           9.625        -8.05         -17.27         0 \r\n 2002          1             7.973        -7.74         -16.76         0 \r\n 2002          2             5.419        -7.61         -16.59         0 \r\n 2002          3             9.18         -0.767        -17.36         0 \r\n 2002          4             6.93          4.022        -7.73          0 \r\n 2002          5             6.147         6.847        -2.325         0 \r\n 2002          6             3.163         0.971        -13.9          0 \r\n 2002          7             8.586         0.761        -15.74         0 \r\n 2002          8             7.138         15.36        -4.784         0 \r\n 2002          9             5.017         13.9          3.357         0 \r\n 2002          10            8.557         6.229        -5.192         0 \r\n 2002          11            9.077         11.26        -6.375         0 \r\n 2002          12            9.641         6.817        -4.246         0 \r\n 2002          13            5.856         11.49         0.362         0 \r\n 2002          14            3.762         2.443        -2.155         0 \r\n 2002          15            4.666        -1.098        -5.395         0 \r\n 2002          16            6.309        -0.681        -8.71          0 \r\n 2002          17            8.223         4.435        -10.39         0 \r\n 2002          18            7.728        -3.593        -13.72         0 \r\n 2002          19            9.097         1.513        -6.278         1.1 \r\n 2002          20            9.338         5.976        -8.65          0 \r\n 2002          21            10.421        10.98        -8.71          0 \r\n 2002          22            9.896         13.28        -2.335         0 \r\n 2002          23            6.404         3.187        -9.17          0 \r\n 2002          24            10.877        6.563        -12.85         0 \r\n 2002          25            10.494        15.13        -6.141         0 \r\n 2002          26            10.438        18.7          0.896         0 \r\n 2002          27            8.154         15.3         -5.877         0 \r\n 2002          28            2.538        -3.949        -7.54          0 \r\n 2002          29            1.797        -5.792        -8.76          3.048 \r\n 2002          30            2.637        -4.727        -9.79          8.661 \r\n 2002          31            6.59         -3.125        -6.542         3.607 \r\n 2002          32            12.7         -5.549        -14.84         0 \r\n 2002          33            11.161        1.172        -12.48         0 \r\n 2002          34            12.247       -0.575        -12.01         0 \r\n 2002          35            13.37        -7.39         -19.61         0 \r\n 2002          36            12.36         0.043        -14.05         0 \r\n 2002          37            7.089         0.602        -8.95          0 \r\n 2002          38            10.877        1.533        -4.643         0 \r\n 2002          39            11.418        6.508        -2.783         7.874 \r\n 2002          40            1.167         4.206         0.165         10.185 \r\n 2002          41            14.09         0.318        -8.4           0 \r\n 2002          42            11.734        6.043        -9.05          0 \r\n 2002          43            12.994        3.138        -3.949         0 \r\n 2002          44            13.751        7.29         -5.579         0 \r\n 2002          45            7.909         9.07          0.773         0 \r\n 2002          46            14.312        8.15         -0.612         0 \r\n 2002          47            14.123        8.55         -0.024         0 \r\n 2002          48            12.633        11.94        -3.968         3.048 \r\n 2002          49            6.182         13.89         2.72          3.353 \r\n 2002          50            2.073         11.13         2.129         3.353 \r\n 2002          51            3.063         4.54          0.951         0 \r\n 2002          52            13.68         8.09         -3.901         0 \r\n 2002          53            10.966        7.73         -8.04          0 \r\n 2002          54            14.121        17.94         2.127         0 \r\n 2002          55            9.262         14.7         -3.375         0 \r\n 2002          56            12.866       -2.039        -11.13         0 \r\n 2002          57            11.709       -7.08         -14.22         0 \r\n 2002          58            16.862       -1.202        -16.41         0 \r\n 2002          59            14.35         4.34         -7.95          2.87 \r\n 2002          60            6.451        -2.908        -11.94         4.75 \r\n 2002          61            16.791       -9.84         -17.02         0 \r\n 2002          62            17.385       -13.49        -21.27         0 \r\n 2002          63            12.797        5.653        -20.54         0 \r\n 2002          64            15.145        15.53        -4.247         0 \r\n 2002          65            7.181         4.175        -3.279         0 \r\n 2002          66            2.509         6.466        -3.598         3.048 \r\n 2002          67            1.788         2.585        -3.593         4.089 \r\n 2002          68            15.714       -3.564        -11.1          0 \r\n 2002          69            17.523        2.939        -12.62         0 \r\n 2002          70            14.821        8.78         -3.358         0 \r\n 2002          71            14.704        14.64        -5.434         0 \r\n 2002          72            10.559        10.07        -0.66          0 \r\n 2002          73            10.549        20.45        -1.525         0 \r\n 2002          74            14.389        3.203        -4.276         0 \r\n 2002          75            16.786        8.59         -5.81          0 \r\n 2002          76            10.01         8.08         -0.765         0 \r\n 2002          77            17.126        12.57        -4.583         0 \r\n 2002          78            4.123         5.546        -0.499         2 \r\n 2002          79            15.06         12.32        -4.479         0 \r\n 2002          80            19.77        -4.401        -12.61         0 \r\n 2002          81            21.153        4.074        -14.18         0 \r\n 2002          82            17.008        11.31        -5.83          0 \r\n 2002          83            2.702         1.476        -3.527         3.861 \r\n 2002          84            17.339        1.434        -6.575         0 \r\n 2002          85            20.467        4.789        -9.2           0 \r\n 2002          86            19.171        12.81        -5.293         0 \r\n 2002          87            19.576        15.99         2.578         0 \r\n 2002          88            19.968        15.55         3.567         0 \r\n 2002          89            6.965         8.59          0.214         0 \r\n 2002          90            19.641        10.44        -1.315         0.5 \r\n 2002          91            14.666        22.37        -0.414         0 \r\n 2002          92            10.376        5.162        -3.901         0 \r\n 2002          93            23.149        3.147        -9.44          0 \r\n 2002          94            22.435        9.04         -9.26          0 \r\n 2002          95            22.246        14.67        -3.135         0 \r\n 2002          96            17.288        16.59        -2.25          0 \r\n 2002          97            3.057         11.86         7.96          0.508 \r\n 2002          98            4.935         12.61         3.519         2.54 \r\n 2002          99            22.517        17.4         -1.906         0 \r\n 2002          100           14.93         23.67         6.564         0 \r\n 2002          101           5.058         18.59         7.98          6.096 \r\n 2002          102           19.547        17.95         6.276         0 \r\n 2002          103           15.608        19.5          5.276         0 \r\n 2002          104           20.705        27.88         10.19         0 \r\n 2002          105           20.548        31.75         14.68         0 \r\n 2002          106           12.887        28.12         15.85         0 \r\n 2002          107           23.228        26.26         8.95          0 \r\n 2002          108           18.08         30.86         13.85         0 \r\n 2002          109           12.064        13.86         4.999         0 \r\n 2002          110           3.47          10.1          5.776         10.414 \r\n 2002          111           4.483         7.01          1.303         2.032 \r\n 2002          112           18.012        16.28        -0.074         6.35 \r\n 2002          113           24.091        25.69         6.546         0 \r\n 2002          114           20.846        18.25         2.178         2.286 \r\n 2002          115           22.712        13.35        -0.112         0 \r\n 2002          116           9.905         11.29         4.48          0 \r\n 2002          117           1.941         15.44         3.71          31.75 \r\n 2002          118           8.895         7.56          2.13          0 \r\n 2002          119           21.823        20.48         2.331         0 \r\n 2002          120           13.982        17.59         7.4           5.588 \r\n 2002          121           11.63         15.57         2.519         3.556 \r\n 2002          122           26.382        14.72         1.494         0 \r\n 2002          123           26.165        19.6          3.195         0 \r\n 2002          124           19.612        19.5          6.749         0 \r\n 2002          125           22.939        27.92         7.9           0.762 \r\n 2002          126           20.188        25.97         14.01         2.794 \r\n 2002          127           20.07         23.58         10.65         0 \r\n 2002          128           16.16         25.31         8.78          0 \r\n 2002          129           27.345        14.94         4.798         0 \r\n 2002          130           19.349        18.56         4.138         0.508 \r\n 2002          131           2.412         14.53         9.14          63.754 \r\n 2002          132           7.827         11.01         5.22          0 \r\n 2002          133           26.529        21.08         3.72          0 \r\n 2002          134           18.16         22.45         6.408         0 \r\n 2002          135           13.234        23.52         13.95         0 \r\n 2002          136           12.556        18.15         10.12         0 \r\n 2002          137           23.727        17.15         6.305         0.254 \r\n 2002          138           27.732        16.78         2.966         0 \r\n 2002          139           22.861        18.64         4.321         0 \r\n 2002          140           28.452        17.28         4.128         0 \r\n 2002          141           25.894        18.91         4.425         0 \r\n 2002          142           13.137        23.76         11.47         5.842 \r\n 2002          143           17.898        19.6          9.01          1.778 \r\n 2002          144           9.989         13.1          4.787         8.128 \r\n 2002          145           32.832        19.68         7.81          1.016 \r\n 2002          146           27.729        24.88         11.43         0 \r\n 2002          147           14.208        27.58         13.81         0 \r\n 2002          148           17.635        27.31         15.73         0.762 \r\n 2002          149           16.111        29.04         16.52         5.842 \r\n 2002          150           25.982        32.57         17.7          0 \r\n 2002          151           26.158        32.84         19.41         0 \r\n 2002          152           25.728        33.51         20.63         0 \r\n 2002          153           22.027        33.67         19.38         0 \r\n 2002          154           14.65         28.95         20.1          0 \r\n 2002          155           16.127        21.15         14.29         0 \r\n 2002          156           24.692        25.06         12.27         0 \r\n 2002          157           27.358        28.91         13.07         0 \r\n 2002          158           27.331        30.15         15.02         0 \r\n 2002          159           24.707        31.01         17.55         0 \r\n 2002          160           22.113        30.73         20.48         0 \r\n 2002          161           10.359        28.35         19.07         10.922 \r\n 2002          162           16.402        28.06         18.47         22.352 \r\n 2002          163           14.954        27.93         18.23         0.508 \r\n 2002          164           21.921        22.63         13.889        0 \r\n 2002          165           26.924        24.88         11.64         0 \r\n 2002          166           23.68         26.84         12.41         0 \r\n 2002          167           28.464        26.34         13.35         0 \r\n 2002          168           21.308        28.29         14.49         0 \r\n 2002          169           17.823        27.03         19.17         0 \r\n 2002          170           24.952        31.46         20.72         0 \r\n 2002          171           18.146        31.01         19.97         0 \r\n 2002          172           23.048        31.92         21.78         0 \r\n 2002          173           25.497        32.23         20.41         0 \r\n 2002          174           27.456        32.26         20.39         0 \r\n 2002          175           27.211        32            18.35         0 \r\n 2002          176           26.423        32.9          19.7          0 \r\n 2002          177           23.528        33.87         21.48         0 \r\n 2002          178           28.078        30.87         17.87         0 \r\n 2002          179           26.145        31.43         16.74         0 \r\n 2002          180           26.447        34.65         20.88         0 \r\n 2002          181           26.914        33.18         23.06         0 \r\n 2002          182           26.543        31.44         21.83         0 \r\n 2002          183           24.559        30.95         18.84         0 \r\n 2002          184           23.425        31.94         19.07         0 \r\n 2002          185           20.54         31.7          21.51         0 \r\n 2002          186           22.017        32.72         19.7          0 \r\n 2002          187           22.515        33.03         20.41         0 \r\n 2002          188           24.252        34.09         19.35         0 \r\n 2002          189           25.575        36.07         23.22         0 \r\n 2002          190           21.913        32.57         21.08         0 \r\n 2002          191           16.729        28.38         17.88         9.652 \r\n 2002          192           12.194        23.49         17.43         5.08 \r\n 2002          193           18.265        24.96         16.12         7.366 \r\n 2002          194           25.3          27.1          15.16         0 \r\n 2002          195           25.871        28.32         14.68         0 \r\n 2002          196           24.025        29.89         15.44         0 \r\n 2002          197           24.227        30.87         18.01         0 \r\n 2002          198           25.537        33.26         19.04         0 \r\n 2002          199           21.675        33.72         20.77         0 \r\n 2002          200           21.12         33.48         22.03         0 \r\n 2002          201           25.722        37.2          21.48         0 \r\n 2002          202           25.298        36.93         23.78         0 \r\n 2002          203           17.618        29.41         18.48         2.032 \r\n 2002          204           26.501        27.66         13.81         0 \r\n 2002          205           23.613        30.62         16.22         0.254 \r\n 2002          206           23.631        31.39         19.12         16.002 \r\n 2002          207           4.934         25.51         22.04         11.176 \r\n 2002          208           23.753        33.53         23.03         0 \r\n 2002          209           15.024        30.9          23.08         0 \r\n 2002          210           25.6          31.74         19.29         0 \r\n 2002          211           21.261        31.94         20.72         0 \r\n 2002          212           24.494        33.77         20.47         0 \r\n 2002          213           21.831        30.39         15.67         0 \r\n 2002          214           24.914        27.46         12.11         0 \r\n 2002          215           23.804        35.06         17.59         0 \r\n 2002          216           17.554        34.33         21.28         3.302 \r\n 2002          217           13.717        30.53         22.05         0.254 \r\n 2002          218           17.253        27.57         19.69         0.254 \r\n 2002          219           23.639        29.37         17.36         0 \r\n 2002          220           23.866        28.92         14.21         0 \r\n 2002          221           20.681        29.2          14.6          0 \r\n 2002          222           19.5          30.65         18.51         0 \r\n 2002          223           22.092        33.82         18.45         0 \r\n 2002          224           15.445        29.07         14.28         16.51 \r\n 2002          225           14.61         23.94         13.98         13.208 \r\n 2002          226           24.93         29.04         12.98         0 \r\n 2002          227           22.67         28.84         15.51         0 \r\n 2002          228           11.338        26.5          13.72         0 \r\n 2002          229           21.426        24.89         12.51         11.684 \r\n 2002          230           7.201         19.43         12.06         0 \r\n 2002          231           19.855        24.53         14.46         0.254 \r\n 2002          232           17.733        30.38         15.8          3.302 \r\n 2002          233           13.12         29.5          20.96         12.7 \r\n 2002          234           17.443        29.52         19.69         15.24 \r\n 2002          235           16.605        28.02         19.4          5.08 \r\n 2002          236           16.829        26.46         17.36         0.254 \r\n 2002          237           19.196        28.85         19.04         0 \r\n 2002          238           17.863        29.48         17.94         0 \r\n 2002          239           19.702        27.97         18.43         0 \r\n 2002          240           16.801        28.39         19.09         0 \r\n 2002          241           17.309        27.27         16.93         0 \r\n 2002          242           19.65         27.18         17.74         0 \r\n 2002          243           20.718        29.85         17.13         0 \r\n 2002          244           19.091        31.15         18.46         0 \r\n 2002          245           20.978        31.51         15.49         0 \r\n 2002          246           22.256        28.47         13.26         0 \r\n 2002          247           20.382        30.4          14.72         0 \r\n 2002          248           18.902        32.68         18.16         0 \r\n 2002          249           20.418        34.25         19.11         0 \r\n 2002          250           20.577        33.89         19.75         0 \r\n 2002          251           20.136        33.1          18.63         0 \r\n 2002          252           19.728        31.18         18.84         0 \r\n 2002          253           11.312        23.89         13.84         0 \r\n 2002          254           20.047        25.25         11.29         0 \r\n 2002          255           16.935        25            11.94         0 \r\n 2002          256           8.759         24.61         16.25         0 \r\n 2002          257           8.968         23.97         11.21         1.778 \r\n 2002          258           20.772        23.38         7.39          0 \r\n 2002          259           20.67         26.72         8.6           0 \r\n 2002          260           11.637        25.7          12.16         0 \r\n 2002          261           7.179         27.39         17.8          24.384 \r\n 2002          262           4.066         18.52         14.3          3.81 \r\n 2002          263           18.816        24.16         13.81         0 \r\n 2002          264           13.254        18.76         9.44          0 \r\n 2002          265           19.486        18.8          6.447         0 \r\n 2002          266           19.213        17.85         6.352         0 \r\n 2002          267           18.092        20.89         3.592         0 \r\n 2002          268           12.621        26.25         11.41         0 \r\n 2002          269           12.469        17.39         9.47          0 \r\n 2002          270           5.794         14.35         8.36          8.128 \r\n 2002          271           8.287         24.06         10.71         0 \r\n 2002          272           14.473        31.56         14.7          0 \r\n 2002          273           16.788        31.25         19.62         0 \r\n 2002          274           12.709        29.11         16.88         13.97 \r\n 2002          275           2.079         18.24         7.9           14.224 \r\n 2002          276           4.152         18.92         7.96          17.526 \r\n 2002          277           9.994         19            5.961         26.924 \r\n 2002          278           13.504        20.84         3.268         0 \r\n 2002          279           15.619        14.87         1.592         0 \r\n 2002          280           16.008        17.84        -0.623         0 \r\n 2002          281           15.588        22.01         6.311         0 \r\n 2002          282           15.046        20.43         7.4           0 \r\n 2002          283           14.493        23.01         9.2           0 \r\n 2002          284           12.432        21.78         9.14          0 \r\n 2002          285           10.21         16.07         1.245         0.254 \r\n 2002          286           15.875        15.6         -1.175         0 \r\n 2002          287           15.862        17.16         2.62          0 \r\n 2002          288           14.03         12.57         1.217         0 \r\n 2002          289           3.949         6.435        -1.648         7.366 \r\n 2002          290           10.606        13.05         2.137         0 \r\n 2002          291           14.418        20.97         5.056         0 \r\n 2002          292           12.993        8.87         -1.203         0 \r\n 2002          293           12.683        14.68        -2.659         0 \r\n 2002          294           6.375         8.6          -0.15          0.508 \r\n 2002          295           4.799         4.716        -0.326         0 \r\n 2002          296           2.552         0.866        -1.726         0 \r\n 2002          297           4.063         0.702        -1.745         8.382 \r\n 2002          298           5.865         6.575         0.552         1.27 \r\n 2002          299           9.42          10.43         1.661         0 \r\n 2002          300           2.008         4.632         1.102         2.286 \r\n 2002          301           2.202         5.047         2.146         0.508 \r\n 2002          302           1.806         6.381         4.043         1.016 \r\n 2002          303           3.01          4.119        -1.127         4.826 \r\n 2002          304           7.628        -0.026        -6.684         0 \r\n 2002          305           12.909        3.624        -8.18          0 \r\n 2002          306           8.282         4.435        -6.386         0 \r\n 2002          307           6.426         7.253        -2.066         0 \r\n 2002          308           10.2          7.321        -5.913         5.105 \r\n 2002          309           3.749         6.844        -0.235         0 \r\n 2002          310           9.747         13.314       -4.586         0 \r\n 2002          311           11.998        18.872       -1.174         0 \r\n 2002          312           9.306         14.567        2.328         0 \r\n 2002          313           9.162         15.404        1.947         0 \r\n 2002          314           9.228         8.298        -2.153         0 \r\n 2002          315           10.524        4.917        -5.919         0 \r\n 2002          316           11.147        13.788       -5.667         0 \r\n 2002          317           7.488         14.503       -1.286         0 \r\n 2002          318           3.63          8.147        -1.297         0 \r\n 2002          319           5.96          3.026        -3.733         0 \r\n 2002          320           7.771         5.843        -4.116         0 \r\n 2002          321           9.365         7.729        -5.28          0 \r\n 2002          322           8.348         10.933       -1.756         0 \r\n 2002          323           5.852         10.127       -1.536         0 \r\n 2002          324           9.749         13.7         -0.607         0 \r\n 2002          325           3.029         7.69         -0.817         0 \r\n 2002          326           10.402        7.72         -2.258         0 \r\n 2002          327           10.045        9.29         -0.625         0 \r\n 2002          328           3.996         2.165        -9.12          0 \r\n 2002          329           7.62         -1.547        -11.83         0 \r\n 2002          330           7.67         -1.401        -8.96          0 \r\n 2002          331           5.1          -1.925        -12.12         0 \r\n 2002          332           9.903         8.37         -9.94          0 \r\n 2002          333           6.322         10.95        -1.374         0 \r\n 2002          334           10.114       -1.374        -9.96          0 \r\n 2002          335           9.749         12.32        -9.48          0 \r\n 2002          336           8.392         2.83         -8.95          0 \r\n 2002          337           6.157        -2.953        -10.6          0 \r\n 2002          338           3.079        -2.696        -8.64          0 \r\n 2002          339           9.443        -2.487        -12.1          0 \r\n 2002          340           9.46          9.86         -10.92         0 \r\n 2002          341           9.292         8.97         -5.202         0 \r\n 2002          342           7.617         0.124        -9.17          0 \r\n 2002          343           9.084         5.927        -10.91         0 \r\n 2002          344           3.334         4.071        -5.143         0 \r\n 2002          345           1.733         3.795         0.544         0 \r\n 2002          346           3.677         5.505        -2.566         0 \r\n 2002          347           9.187         10.27        -5.066         0 \r\n 2002          348           8.875         11.51        -6.427         0 \r\n 2002          349           7.657         16.98        -3.635         0 \r\n 2002          350           7.889         8.09         -0.851         0 \r\n 2002          351           1.026         7.95          0.932         0 \r\n 2002          352           1.871         6.823        -1.385         0 \r\n 2002          353           7.084         7.25         -2.08          0 \r\n 2002          354           5.708         3.012        -7.65          0 \r\n 2002          355           7.328         1.072        -8.87          0 \r\n 2002          356           8.997         0.969        -8.91          0 \r\n 2002          357           6.514        -1.89         -9.49          0 \r\n 2002          358           6.951        -3.74         -11.72         0 \r\n 2002          359           9.045        -1.225        -14.99         0 \r\n 2002          360           8.224         5.661        -10.42         0 \r\n 2002          361           7.286         4.834        -5.505         0 \r\n 2002          362           6.417         13.89        -4.95          0 \r\n 2002          363           6.972         10.12        -3.272         0 \r\n 2002          364           8.249         8.71         -5.494         0 \r\n 2002          365           9.216         6.398        -7.78          0 \r\n 2003          1             3.498        -0.18         -4.365         0 \r\n 2003          2             8.685         0.438        -9.28          0 \r\n 2003          3             7.6           4.747        -12.75         0 \r\n 2003          4             5.015         9.99         -2.879         0 \r\n 2003          5             3.857         2.098        -3.138         0 \r\n 2003          6             4.522        -1.08         -5.629         0 \r\n 2003          7             9.386         16.95        -5.35          0 \r\n 2003          8             9.741         18.25         0.209         0 \r\n 2003          9             9.524         3.067        -5.03          0 \r\n 2003          10            10.107       -3.758        -14.28         0 \r\n 2003          11            10.174       -1.366        -15.78         0 \r\n 2003          12            9.959         7.39         -14.99         0 \r\n 2003          13            7.133        -2.157        -10.14         0 \r\n 2003          14            10.161       -5.01         -14.21         0 \r\n 2003          15            2.946        -6.573        -15.05         4.597 \r\n 2003          16            10.122       -7.74         -15.83         0 \r\n 2003          17            11.371       -12.55        -21.78         0 \r\n 2003          18            10.557       -6.261        -13.64         0 \r\n 2003          19            9.75          3.651        -16.93         0 \r\n 2003          20            6.673        -3.691        -9.52          0 \r\n 2003          21            7.099        -9.3          -14.46         0 \r\n 2003          22            9.013        -11.44        -22.57         0 \r\n 2003          23            11.811       -16.53        -25.9          0 \r\n 2003          24            8.383        -6.988        -17.03         0 \r\n 2003          25            7.413        -1.679        -14.25         0 \r\n 2003          26            11.304       -13.74        -19.41         0 \r\n 2003          27            10.838       -0.605        -13.84         0 \r\n 2003          28            2.528         0.922        -5.155         0 \r\n 2003          29            9.281        -3.154        -10.85         0 \r\n 2003          30            7.576         4.194        -6.92          0 \r\n 2003          31            2.596         2.652        -3.041         0 \r\n 2003          32            9.413         10.37        -2.324         0 \r\n 2003          33            5.804         6.388        -0.366         0 \r\n 2003          34            2.961         1.824        -10            0 \r\n 2003          35            12.749       -7.05         -12.61         0 \r\n 2003          36            6.955        -1.726        -10.77         0 \r\n 2003          37            11.825       -4.558        -18.75         0 \r\n 2003          38            14.156       -5.455        -22.96         0 \r\n 2003          39            7.634         0.449        -12.25         0 \r\n 2003          40            8.141        -2.954        -13.51         0 \r\n 2003          41            10.308       -4.769        -11.61         0 \r\n 2003          42            10.749        5.304        -12.62         0 \r\n 2003          43            13.791        3.411        -13.98         0 \r\n 2003          44            12.988        9.28         -8.25          5.944 \r\n 2003          45            1.304         3.297        -1.461         14.199 \r\n 2003          46            10.124       -1.461        -12.5          0 \r\n 2003          47            15.998       -5.803        -16.87         0 \r\n 2003          48            13.793        0.381        -16.58         0 \r\n 2003          49            14.835        5.868        -5.61          0 \r\n 2003          50            16.145        4.162        -7.28          0 \r\n 2003          51            16.02         9.97         -1.091         0 \r\n 2003          52            12.673        7.01         -2.725         0 \r\n 2003          53            8.618        -2.535        -7.22          0 \r\n 2003          54            5.718        -7.19         -15.03         0 \r\n 2003          55            16.455       -13.62        -19.86         1.78 \r\n 2003          56            12.086       -9.42         -21.5          0 \r\n 2003          57            17.176       -3.452        -16.47         0 \r\n 2003          58            14.773        1.227        -13.01         0 \r\n 2003          59            13.792        3.331        -7.43          0 \r\n 2003          60            4.864         0.725        -5.465         0 \r\n 2003          61            18.23        -5.455        -14.74         0 \r\n 2003          62            10.905        5.858        -6.812         4.572 \r\n 2003          63            3.667        -2.452        -14.12         3.2 \r\n 2003          64            13.601       -9.87         -15.78         0 \r\n 2003          65            18.535        0.875        -15.83         0 \r\n 2003          66            15.871       -0.067        -8.67          0 \r\n 2003          67            8.824        -3.929        -15.4          0 \r\n 2003          68            18.671       -7.82         -16.07         0 \r\n 2003          69            17.434       -0.063        -12.222        0 \r\n 2003          70            17.52         14.328       -4.418         0 \r\n 2003          71            5.282         8.509        -1.715         0 \r\n 2003          72            13.051        8.582        -0.671         0 \r\n 2003          73            18.017        19.578        0.172         0 \r\n 2003          74            19.528        26.358        2.849         0 \r\n 2003          75            19.3          24.802        6.155         0 \r\n 2003          76            15.71         22.349        7.358         0 \r\n 2003          77            11.99         20.397        5.318         4.953 \r\n 2003          78            1.504         9.642         1.825         4.902 \r\n 2003          79            5.009         7.1          -0.598         0 \r\n 2003          80            20.708        12.33        -2.07          0 \r\n 2003          81            21.777        16.49        -0.142         0 \r\n 2003          82            18.129        22.24         1.822         0 \r\n 2003          83            15.51         18.49         6.012         0 \r\n 2003          84            21.829        17.04         3.143         0 \r\n 2003          85            8.117         16.07         1.168         0 \r\n 2003          86            5.415         14.13         1.68          0 \r\n 2003          87            10.262        8.62         -2.343         0 \r\n 2003          88            17.613        5.793        -3.03          0 \r\n 2003          89            23.062        10.25        -4.766         0 \r\n 2003          90            17.445        25.31        -0.33          0 \r\n 2003          91            23.481        29.96         9.03          0 \r\n 2003          92            22.875        29.29         8.2           0 \r\n 2003          93            14.567        23.93         2.981         0 \r\n 2003          94            4.444         3.039        -1.965         4.064 \r\n 2003          95            18.091        1.615        -4.79          0.762 \r\n 2003          96            3.76          0.249        -1.994         11.481 \r\n 2003          97            11.782       -0.092        -3.081         0 \r\n 2003          98            24.571        2.565        -3.933         3.048 \r\n 2003          99            25.789        12.87        -5.97          0 \r\n 2003          100           23.986        20.2         -0.011         0.508 \r\n 2003          101           24.336        23.69         5.578         0 \r\n 2003          102           25.12         23.47         5.24          0 \r\n 2003          103           23.62         27.87         9.6           0 \r\n 2003          104           23.593        31.5          15.05         0 \r\n 2003          105           14.702        27.28         16.33         2.286 \r\n 2003          106           22.145        20.95         7.78          0.762 \r\n 2003          107           7.424         10.13         5.7           0 \r\n 2003          108           6.156         14.46         6.037         6.858 \r\n 2003          109           3.081         11.72         6.666         11.938 \r\n 2003          110           6.131         9.19          5.949         0 \r\n 2003          111           26.747        18.36         6.807         0 \r\n 2003          112           26.973        20.43         4.125         0 \r\n 2003          113           17.576        19.18         7.46          6.35 \r\n 2003          114           3.286         10.43         8.66          3.556 \r\n 2003          115           24.726        19.83         8             0 \r\n 2003          116           26.369        21.56         6.059         0 \r\n 2003          117           19.201        24.08         7.14          0 \r\n 2003          118           24.946        21.06         9.53          5.08 \r\n 2003          119           11.167        13.94         7.87          11.938 \r\n 2003          120           6.775         14.3          9.59          36.068 \r\n 2003          121           18.155        17.09         8.65          0 \r\n 2003          122           21.425        20.29         9.59          0 \r\n 2003          123           24.198        21.19         7.42          0 \r\n 2003          124           1.28          15.3          10.33         30.988 \r\n 2003          125           14.352        18.12         8.85          5.842 \r\n 2003          126           14.148        18.04         7.41          6.096 \r\n 2003          127           28.412        20.85         5.859         0.254 \r\n 2003          128           3.704         13.4          9.42          23.876 \r\n 2003          129           27.937        20.64         10.44         0 \r\n 2003          130           3.293         12.57         6.414         6.858 \r\n 2003          131           13.864        14.81         6.579         0 \r\n 2003          132           27.348        20.38         4.775         0.254 \r\n 2003          133           24.079        24.86         11.23         17.018 \r\n 2003          134           21.28         22.85         9.57          6.35 \r\n 2003          135           11.223        16.9          8.02          0 \r\n 2003          136           24.069        19.42         7.77          0 \r\n 2003          137           29.064        22.69         8.05          0 \r\n 2003          138           24.311        25.04         11.5          0 \r\n 2003          139           3.795         18.19         7.98          6.096 \r\n 2003          140           28.994        15.45         5.187         0 \r\n 2003          141           29.082        19.05         4.348         0 \r\n 2003          142           21.396        22.12         7.71          0 \r\n 2003          143           23.59         20.96         11.97         0 \r\n 2003          144           4.902         14.74         11.43         2.54 \r\n 2003          145           28.597        22.73         8.37          0 \r\n 2003          146           25.67         25.76         12            0 \r\n 2003          147           28.407        26.43         11.81         2.54 \r\n 2003          148           28.242        27.76         15.03         2.286 \r\n 2003          149           22.671        27.36         13.06         7.874 \r\n 2003          150           29.291        29.09         14.75         0 \r\n 2003          151           28.038        23.2          11.41         0 \r\n 2003          152           17.708        23.63         13.67         0 \r\n 2003          153           4.111         14.09         9.56          9.398 \r\n 2003          154           14.141        17.11         9.9           0 \r\n 2003          155           22.757        21.28         9.39          0 \r\n 2003          156           15.615        22.67         13.09         3.81 \r\n 2003          157           24.416        22.92         12.92         2.286 \r\n 2003          158           9.723         18.48         10.63         3.81 \r\n 2003          159           20.204        20.38         10.67         1.016 \r\n 2003          160           26.247        28.56         11.16         16.51 \r\n 2003          161           21.487        22.33         14.85         0 \r\n 2003          162           27.502        25.25         12.95         0 \r\n 2003          163           8.559         23.6          16.8          0 \r\n 2003          164           28.055        29.6          14.85         0 \r\n 2003          165           28.723        29.92         15.76         0 \r\n 2003          166           18.235        29.06         17.76         9.398 \r\n 2003          167           23.561        29.76         17.44         0 \r\n 2003          168           21.367        29.64         17.17         0 \r\n 2003          169           15.353        28.73         18.01         1.778 \r\n 2003          170           27.618        25.86         14.73         0 \r\n 2003          171           28.93         25.19         13.23         0 \r\n 2003          172           21.807        26.98         14.22         0 \r\n 2003          173           14.594        28.38         18.45         0.254 \r\n 2003          174           23.605        30.5          19.91         1.524 \r\n 2003          175           20.739        32.22         21.58         0 \r\n 2003          176           6.105         27.49         12.67         8.89 \r\n 2003          177           28.211        24.39         10.79         0 \r\n 2003          178           28.885        29.59         13.13         1.778 \r\n 2003          179           29.09         28.06         15.57         1.27 \r\n 2003          180           25.899        26.91         16.65         0 \r\n 2003          181           28.942        27.92         13.35         0 \r\n 2003          182           27.705        29.82         16.77         0 \r\n 2003          183           28.398        31.5          18.13         0 \r\n 2003          184           27.892        34.64         22.04         0 \r\n 2003          185           23.066        31.53         21.34         0 \r\n 2003          186           24.879        33.2          17.48         7.112 \r\n 2003          187           27.466        32.34         17.88         8.636 \r\n 2003          188           25.076        32.34         22.42         0 \r\n 2003          189           22.945        31.52         19.25         0.762 \r\n 2003          190           14.412        28.56         19.34         19.812 \r\n 2003          191           28.675        26.02         17.17         0 \r\n 2003          192           28.918        27.56         14.97         0 \r\n 2003          193           29.122        26.63         14.78         0 \r\n 2003          194           28.234        28.86         16.08         0 \r\n 2003          195           25.576        32.87         19.05         0 \r\n 2003          196           28.524        30.23         19.41         0 \r\n 2003          197           20.962        30.64         17.17         0 \r\n 2003          198           24.22         34.16         21.51         0 \r\n 2003          199           22.077        28.78         19.69         0.508 \r\n 2003          200           17.613        27.46         19.65         0 \r\n 2003          201           22.905        33.15         18.99         6.096 \r\n 2003          202           21.65         25.6          16.34         0 \r\n 2003          203           22.994        25.36         14.67         2.032 \r\n 2003          204           26.726        24.98         12.55         0.254 \r\n 2003          205           26.149        27.84         13.12         0 \r\n 2003          206           24.1          32.62         17.76         0 \r\n 2003          207           26.271        35.71         22.72         0 \r\n 2003          208           5.007         27.32         20.16         6.604 \r\n 2003          209           25.496        28.03         18.93         0 \r\n 2003          210           25.954        28.92         16.48         0 \r\n 2003          211           24.066        29.59         18.13         2.794 \r\n 2003          212           13.13         28.03         17.73         0 \r\n 2003          213           14.1          28.62         16.94         0 \r\n 2003          214           26.034        28.44         17.19         0 \r\n 2003          215           24.428        28.79         15.39         0 \r\n 2003          216           22.863        28.81         14.43         0 \r\n 2003          217           24.551        30.15         18.21         0.762 \r\n 2003          218           18.663        26.99         17.67         0 \r\n 2003          219           24.463        29.69         16.32         0 \r\n 2003          220           24.723        29.67         16.58         0 \r\n 2003          221           22.989        29.46         15.83         0 \r\n 2003          222           21.479        30.52         17            16.002 \r\n 2003          223           21.396        27.89         16.31         0.254 \r\n 2003          224           24.007        26.78         16.43         0 \r\n 2003          225           22.788        27.76         15.97         0 \r\n 2003          226           22.278        29.27         17.32         0 \r\n 2003          227           24.02         32.05         18.92         0 \r\n 2003          228           24.281        35.33         20.1          0 \r\n 2003          229           22.734        36.13         21.11         0 \r\n 2003          230           20.229        36.6          21.6          0 \r\n 2003          231           19.766        35.35         20.92         0.254 \r\n 2003          232           20.198        35.5          20.23         0 \r\n 2003          233           22.504        31.56         18.32         0 \r\n 2003          234           22.925        29.36         15.59         0 \r\n 2003          235           21.818        31.88         17.76         0 \r\n 2003          236           22.65         36.12         18.57         0 \r\n 2003          237           22.653        37.64         21.31         0 \r\n 2003          238           17.485        35.36         21.3          0 \r\n 2003          239           22.107        34.83         20.3          0 \r\n 2003          240           13.01         29.7          21.48         0 \r\n 2003          241           22.255        30.81         16.64         0 \r\n 2003          242           11.509        22.39         14.21         0 \r\n 2003          243           6.643         19.52         13.29         0 \r\n 2003          244           23.008        25.69         10.47         0 \r\n 2003          245           22.741        28.32         11.56         0 \r\n 2003          246           22.205        27.74         12.93         0 \r\n 2003          247           23.511        26.81         9.85          0 \r\n 2003          248           22.396        29.75         11.29         0 \r\n 2003          249           22.193        30.91         13.2          0 \r\n 2003          250           22.042        29.97         12.79         0 \r\n 2003          251           22.22         29.17         13.24         0 \r\n 2003          252           8.565         25.37         15.38         0.254 \r\n 2003          253           14.908        30.09         18.03         0 \r\n 2003          254           4.326         24.46         13.88         14.986 \r\n 2003          255           20.834        25.43         12.56         0 \r\n 2003          256           9.935         21.87         12.05         0 \r\n 2003          257           20.399        21.56         10.18         0 \r\n 2003          258           21.229        27.66         7.18          0 \r\n 2003          259           19.892        28.65         13.51         0 \r\n 2003          260           19.587        30.59         17.64         0 \r\n 2003          261           2.827         21.53         4.564         10.16 \r\n 2003          262           21.254        19.56         3.114         0 \r\n 2003          263           18.91         21.9          5.678         0 \r\n 2003          264           3.439         17.37         10.95         23.622 \r\n 2003          265           16.86         19.87         7.75          0 \r\n 2003          266           18.693        26.28         4.362         0 \r\n 2003          267           19.167        20.09         7.1           0 \r\n 2003          268           18.873        19.67         3.942         0 \r\n 2003          269           12.07         23.03         8.46          0 \r\n 2003          270           12.227        16.7          5.438         0 \r\n 2003          271           17.415        15.15         3.486         0 \r\n 2003          272           12.419        15.6          2.1           0 \r\n 2003          273           12.374        13.94         2.744         0 \r\n 2003          274           18.621        15.62         0.691         0 \r\n 2003          275           17.967        17.68        -0.938         0 \r\n 2003          276           13.785        21.25         8.97          0 \r\n 2003          277           17.442        25.35         6.13          0 \r\n 2003          278           17.274        28.12         7.62          0 \r\n 2003          279           17.077        27.23         9.26          0 \r\n 2003          280           16.809        26.77         11.46         0 \r\n 2003          281           12.962        26.5          13.11         0 \r\n 2003          282           15.916        25.92         12.93         0.254 \r\n 2003          283           10.788        23.17         13.62         0 \r\n 2003          284           6.234         18            7.98          7.874 \r\n 2003          285           16.74         20.69         5.123         0 \r\n 2003          286           5.945         16.19         5.389         8.382 \r\n 2003          287           15.914        18.15         5.743         0.254 \r\n 2003          288           5.391         13.79         3.06          0 \r\n 2003          289           4.754         8.59          2.126         0.254 \r\n 2003          290           13.623        15.12        -0.709         0 \r\n 2003          291           15.176        28.73         4.74          0 \r\n 2003          292           15.099        30.53         8.92          0 \r\n 2003          293           14.675        29.21         11.91         0 \r\n 2003          294           12.821        27.97         10.32         0 \r\n 2003          295           14.041        26.42         6.197         0 \r\n 2003          296           12.597        19.76         6.024         0 \r\n 2003          297           6.738         16.29         4.336         0 \r\n 2003          298           11.442        12.37         2.409         0 \r\n 2003          299           7.644         7.45         -0.731         0 \r\n 2003          300           8.855         9.99         -1.222         1.016 \r\n 2003          301           10.762        10.58         0.116         0 \r\n 2003          302           11.317        18.53         1.169         0 \r\n 2003          303           10.183        11.87         3.84          0 \r\n 2003          304           5.242         6.948         0.61          0 \r\n 2003          305           2.975         2.781        -2.144         0.254 \r\n 2003          306           2.033         4.631         1.708         10.414 \r\n 2003          307           1.094         5.197         1.783         53.264 \r\n 2003          308           2.789         4.649        -1.545         0 \r\n 2003          309           4.883         0.297        -4.739         0 \r\n 2003          310           12.06         3.937        -8.51          0 \r\n 2003          311           10.789        5.42         -6.978         0 \r\n 2003          312           8.622         1.452        -9.34          0 \r\n 2003          313           10.076        9.27         -4.306         0 \r\n 2003          314           1.833         9.21          3.862         0 \r\n 2003          315           7.291         15.21         5.467         0 \r\n 2003          316           11.431        9.13         -1.832         0 \r\n 2003          317           8.298         6.7          -6.644         0 \r\n 2003          318           5.717         9.43          1.252         0 \r\n 2003          319           8.047         13.11         4.472         0 \r\n 2003          320           10.745        14.28         2.129         9.652 \r\n 2003          321           1.632         14.49         5.408         19.075 \r\n 2003          322           10.197        11.91         2.165         0 \r\n 2003          323           10.442        18.26         0.703         0 \r\n 2003          324           10.499        20.77         2.309         0 \r\n 2003          325           7.387         5.486        -1.869         0 \r\n 2003          326           1.186         1.82          0.198         0 \r\n 2003          327           1.964         1.61         -10.03         1 \r\n 2003          328           10.112       -0.88         -12.43         0 \r\n 2003          329           7.891         7.4          -2.611         0 \r\n 2003          330           6.45          7.84         -2.325         0 \r\n 2003          331           10.036        5.632        -5.609         0 \r\n 2003          332           8.955        -2.029        -9.54          0 \r\n 2003          333           9.105         11.69        -10.78         0 \r\n 2003          334           8.826         17.25        -0.778         0 \r\n 2003          335           7.343         7.96         -4.911         0 \r\n 2003          336           2.276         5.39         -0.465         7.544 \r\n 2003          337           4.006         0.16         -2.395         0 \r\n 2003          338           4.013         0.229        -3.194         0 \r\n 2003          339           3.802        -1.335        -3.911         0 \r\n 2003          340           3.233         0.022        -4.113         0 \r\n 2003          341           3.702         5            -1.46          0 \r\n 2003          342           8.484         7.7          -0.769         4.394 \r\n 2003          343           1.064         0.493        -7.87          7.341 \r\n 2003          344           9.868        -6.721        -11.56         0 \r\n 2003          345           7.436        -8.79         -13.82         0 \r\n 2003          346           8.934        -6.028        -12.72         0 \r\n 2003          347           6.158        -2.669        -9.91          0 \r\n 2003          348           3.212        -2.6          -4.276         0 \r\n 2003          349           3.43          2.401        -2.64          3.683 \r\n 2003          350           7.117        -2.65         -8.16          0 \r\n 2003          351           3.894         3.256        -10.22         0 \r\n 2003          352           9.018         3.546        -0.95          0 \r\n 2003          353           8.077        -0.576        -6.076         0 \r\n 2003          354           8.713         5.498        -7.38          0 \r\n 2003          355           7.111         8.2           1.726         0 \r\n 2003          356           4.849         6.112        -1.25          0 \r\n 2003          357           4.154        -0.91         -7.17          0 \r\n 2003          358           8.751         1.851        -9.36          0 \r\n 2003          359           6.378         5.535        -6.37          0 \r\n 2003          360           2.758         7.08          0.531         0 \r\n 2003          361           6.309         14.96         2.526         0 \r\n 2003          362           8.961         5.152        -2.72          0 \r\n 2003          363           4.448         0.097        -6.116         0 \r\n 2003          364           8.486         8.14         -7.38          0 \r\n 2003          365           8.591         2.147        -8.9           0 \r\n 2004          1             6.538         9.8          -1.744         0 \r\n 2004          2             5.901         12.72        -1.09          0 \r\n 2004          3             1.057        -1.099        -7.58          5.461 \r\n 2004          4             4.653        -7.5          -13.88         0 \r\n 2004          5             9.05         -13.65        -24.05         0 \r\n 2004          6             10.004       -9.57         -24.07         0 \r\n 2004          7             7.796        -4.612        -19.26         0 \r\n 2004          8             7.365         0.25         -7.39          0 \r\n 2004          9             9.318        -3.806        -12.94         0 \r\n 2004          10            9.374         0.647        -11.37         0 \r\n 2004          11            9.667         7.82         -2.774         0 \r\n 2004          12            9.744         4.886        -5.318         0 \r\n 2004          13            9.792         3.93         -4.343         0 \r\n 2004          14            6.272         3.945        -7.55          0 \r\n 2004          15            9.649         4.904        -9.78          6.706 \r\n 2004          16            1.589         4.338        -1.753         7.112 \r\n 2004          17            1.591         1.853        -3.298         0 \r\n 2004          18            10.408       -3.05         -15.29         0 \r\n 2004          19            8.06         -7.83         -16.95         0 \r\n 2004          20            2.138        -3.939        -10.4          0 \r\n 2004          21            9.742         8.33         -9.2           0 \r\n 2004          22            10.865       -6.722        -14.09         0 \r\n 2004          23            8.563         14.03        -7.33          0 \r\n 2004          24            4.355        -4.267        -9.18          2.769 \r\n 2004          25            1.746        -5.181        -8.02          12.776 \r\n 2004          26            6.34         -7.83         -15.4          3.15 \r\n 2004          27            12.125       -15.41        -23.77         0 \r\n 2004          28            9.598        -17.22        -22.81         0 \r\n 2004          29            9.215        -17.3         -23.11         0 \r\n 2004          30            9.091        -16.92        -22.69         0 \r\n 2004          31            9.436        -9.6          -20.88         0 \r\n 2004          32            4.82         -8.19         -10.55         13.106 \r\n 2004          33            9.7          -7.58         -15.42         0 \r\n 2004          34            13           -11.97        -21.56         0 \r\n 2004          35            7.052        -4.96         -16.3          7.112 \r\n 2004          36            5.787        -4.306        -7.05          5.893 \r\n 2004          37            10.289       -6.674        -15.33         0 \r\n 2004          38            13.612       -12.59        -20            0 \r\n 2004          39            10.981        0.469        -21.78         0 \r\n 2004          40            13.511       -0.407        -10.3          0 \r\n 2004          41            13.712       -3.968        -8.32          0 \r\n 2004          42            13.575       -3.03         -12.7          0 \r\n 2004          43            13.919       -11.3         -17.59         0 \r\n 2004          44            15.591       -1.915        -18.02         0 \r\n 2004          45            14.697       -6.614        -16.8          0 \r\n 2004          46            15.089       -9            -20.72         0 \r\n 2004          47            12.461       -1.354        -12.53         0 \r\n 2004          48            14.103       -2.117        -15.55         0 \r\n 2004          49            14.57         5.545        -4.815         0 \r\n 2004          50            12.968        8            -0.613         0 \r\n 2004          51            10.52         2.357        -1.023         1.27 \r\n 2004          52            15.784        7.31         -4.903         0 \r\n 2004          53            11.902        10.64         0.42          1.27 \r\n 2004          54            6.177         1.597        -1.128         0 \r\n 2004          55            3.022        -0.12         -1.157         0 \r\n 2004          56            10.498        3.48         -1.231         0 \r\n 2004          57            15.698        7.95         -4.112         0 \r\n 2004          58            14.802        12.18        -0.68          0 \r\n 2004          59            10.828        12.04         1.284         0 \r\n 2004          60            4.802         13.03         4.995         7.442 \r\n 2004          61            3.292         6.89          0.688         0 \r\n 2004          62            4.083         2.17         -0.318         0 \r\n 2004          63            2.624         3.423        -0.226         5.664 \r\n 2004          64            1.427         3.444         0.278         19.38 \r\n 2004          65            5.626         4.253         0.231         0 \r\n 2004          66            16.245        14.88        -2.686         0 \r\n 2004          67            18.064        9.15         -0.444         0 \r\n 2004          68            14.105        17.21        -4.142         0 \r\n 2004          69            19.106        12.19        -1.382         0 \r\n 2004          70            10.448        13.37        -1.677         0 \r\n 2004          71            19.397        1.464        -7.31          0 \r\n 2004          72            19.45         10.29        -9.94          0 \r\n 2004          73            12.007        14.89         3.691         0 \r\n 2004          74            18.384        10.54        -0.282         10.82 \r\n 2004          75            5.38          3.109        -4.199         8.534 \r\n 2004          76            13.998        0.702        -4.237         0 \r\n 2004          77            13.875        7.43         -4.912         0 \r\n 2004          78            20.158        5.571        -0.653         0 \r\n 2004          79            16.964        20.42        -0.851         0 \r\n 2004          80            20.814        14.92        -1.82          0 \r\n 2004          81            20.219        3.957        -6.799         0 \r\n 2004          82            19.605        10.28        -3.941         0 \r\n 2004          83            9.175         14.54         0.818         0 \r\n 2004          84            17.762        23.7          9.26          0 \r\n 2004          85            3.278         19.01         14.08         0 \r\n 2004          86            5.753         20.21         14.2          15.57 \r\n 2004          87            1.306         16.27         9.24          42.85 \r\n 2004          88            11.774        13.67         5.881         0 \r\n 2004          89            18.571        14.7          1.74          0 \r\n 2004          90            10.481        5.69         -2.516         0 \r\n 2004          91            23.104        9.9          -4.797         0 \r\n 2004          92            23.566        14.12        -2.087         0 \r\n 2004          93            23.564        17.62         0.24          0 \r\n 2004          94            23.278        14.44         1.946         0 \r\n 2004          95            23.869        15.85        -1.558         0 \r\n 2004          96            20.332        20.17         2.804         0 \r\n 2004          97            21.062        23            7.6           0 \r\n 2004          98            21.743        24.08         5.975         0 \r\n 2004          99            23.446        16.86         1.413         0 \r\n 2004          100           13.071        15.09         5.197         0 \r\n 2004          101           23.758        9.11         -1.346         0 \r\n 2004          102           13.354        9.51         -3.961         0 \r\n 2004          103           15.359        9.94          1.065         0 \r\n 2004          104           24.718        15.08        -2.441         0 \r\n 2004          105           25.029        21.16         0.713         0 \r\n 2004          106           18.205        23.63         0             0 \r\n 2004          107           23.373        30.85         9.14          0 \r\n 2004          108           23.998        29.74         10.11         0 \r\n 2004          109           11.19         25.2          14.15         0.254 \r\n 2004          110           16.195        16.46         8             0 \r\n 2004          111           11.535        22.42         9.21          9.652 \r\n 2004          112           24.551        19.94         6.054         0 \r\n 2004          113           16.09         15.09         6.902         0 \r\n 2004          114           16.926        18.41         7.52          0 \r\n 2004          115           1.727         12.55         5.589         35.052 \r\n 2004          116           21.065        16.61         7.27          0.254 \r\n 2004          117           26.939        17.18         4.491         0 \r\n 2004          118           26.814        22.69         2.633         0 \r\n 2004          119           26.414        29.83         14.38         0 \r\n 2004          120           8.566         19.35         10.35         0 \r\n 2004          121           5.405         10.5          6.186         0.254 \r\n 2004          122           21.85         14.98         3.364         0 \r\n 2004          123           19.732        12.39         2.84          1.778 \r\n 2004          124           25.828        16.9          0.039         0 \r\n 2004          125           24.526        23.66         8.26          0.254 \r\n 2004          126           27.462        29.45         8.51          0 \r\n 2004          127           24.684        30.04         17.64         0 \r\n 2004          128           11.128        29.424        13.84         0 \r\n 2004          129           24.246        31.41         13.44         30.48 \r\n 2004          130           24.49         27.25         16.32         0.762 \r\n 2004          131           23.122        24.68         16.21         1.27 \r\n 2004          132           23.257        27.22         16.7          0 \r\n 2004          133           6.511         21.81         11.68         4.826 \r\n 2004          134           5.783         12.34         4.483         26.67 \r\n 2004          135           26.67         13.29         1.996         0 \r\n 2004          136           20.474        17.43         2.423         0 \r\n 2004          137           23.122        24.23         8.1           0 \r\n 2004          138           15.486        25.69         13.69         17.78 \r\n 2004          139           17.282        19.99         12.78         1.27 \r\n 2004          140           11.506        26.55         14.36         0 \r\n 2004          141           18.451        27.59         19.6          0 \r\n 2004          142           21.933        29.74         18.74         0 \r\n 2004          143           22.546        28.36         16.09         54.864 \r\n 2004          144           16.1          18.89         11.12         2.286 \r\n 2004          145           15.384        24.36         10.53         9.398 \r\n 2004          146           23.251        17.96         9.18          0 \r\n 2004          147           26.979        22.56         9.49          0.508 \r\n 2004          148           22.646        26.43         14.36         0 \r\n 2004          149           26.994        27.54         12.65         0 \r\n 2004          150           20.972        27.64         16.9          22.098 \r\n 2004          151           13.835        20.36         12.13         17.272 \r\n 2004          152           25.777        22.64         11.79         1.016 \r\n 2004          153           23.759        21.88         10.72         0 \r\n 2004          154           20.304        20.181        10.658        0 \r\n 2004          155           27.265        24.941        11.478        0 \r\n 2004          156           27.422        26.339        12.501        0 \r\n 2004          157           11.554        21.793        14.836        1.27 \r\n 2004          158           24.618        25.857        14.912        0 \r\n 2004          159           28.171        29.628        19.409        0 \r\n 2004          160           18.275        28.95         19.706        0 \r\n 2004          161           17.163        26.06         19.54         0 \r\n 2004          162           13.869        27.78         19.79         1.524 \r\n 2004          163           24.863        31.81         18.81         0 \r\n 2004          164           14.757        29.78         15.44         37.084 \r\n 2004          165           26.104        26.35         14            0.254 \r\n 2004          166           28.316        27.14         16.47         0 \r\n 2004          167           21.705        27.91         17.5          0 \r\n 2004          168           17.416        28.03         15.6          0 \r\n 2004          169           24.577        25.4          14.23         0 \r\n 2004          170           8.071         18.49         12.91         4.826 \r\n 2004          171           25.974        19.93         10.8          0.254 \r\n 2004          172           12.206        21.05         12.95         0 \r\n 2004          173           19.726        25.32         12.41         17.78 \r\n 2004          174           28.74         24.94         11.82         0 \r\n 2004          175           27.736        27.01         15.06         0 \r\n 2004          176           8.617         18.59         10.08         4.064 \r\n 2004          177           28.27         22.61         8.16          0 \r\n 2004          178           15.701        21.57         11.71         0 \r\n 2004          179           20.991        23.8          15.34         0 \r\n 2004          180           29.217        24.75         11.54         0 \r\n 2004          181           26.779        25.65         11.87         0 \r\n 2004          182           27.024        27.79         13.9          0 \r\n 2004          183           21.462        29.3          15.65         0.254 \r\n 2004          184           8.831         26.44         19.38         33.02 \r\n 2004          185           17.548        27.3          19.45         4.826 \r\n 2004          186           24.367        28.93         16.06         8.128 \r\n 2004          187           10.304        23.53         17.67         1.778 \r\n 2004          188           15.775        21.37         13.19         0 \r\n 2004          189           13.835        20.25         11.76         2.286 \r\n 2004          190           11.341        21.42         15.64         0 \r\n 2004          191           23.387        29.02         18.44         26.416 \r\n 2004          192           20.181        28.95         20.9          0 \r\n 2004          193           14.015        29.36         20.61         2.286 \r\n 2004          194           19.004        31            19.06         0 \r\n 2004          195           14.313        31.58         18.93         0 \r\n 2004          196           17.746        26.02         17.46         0 \r\n 2004          197           19.195        27.43         16.31         3.556 \r\n 2004          198           17.64         28.08         18.78         7.112 \r\n 2004          199           16.316        26.64         16.43         0 \r\n 2004          200           18.29         26.41         14.74         0 \r\n 2004          201           19.114        32.05         17.74         0 \r\n 2004          202           20.781        32.75         20.89         0 \r\n 2004          203           13.091        30.37         22.3          3.81 \r\n 2004          204           10.386        27.25         20.07         22.352 \r\n 2004          205           17.69         23.75         17.34         0 \r\n 2004          206           6.45          19.41         13.55         1.778 \r\n 2004          207           20.249        22.64         11.32         0 \r\n 2004          208           20.741        24.62         11.69         0 \r\n 2004          209           22.146        24.98         13.04         0 \r\n 2004          210           17.953        25.69         14.62         0 \r\n 2004          211           10.442        27.05         17.87         8.636 \r\n 2004          212           14.58         25.29         16.96         2.032 \r\n 2004          213           19.018        29.03         15.74         0 \r\n 2004          214           15.044        28.16         18.69         0 \r\n 2004          215           16.817        30.47         20.05         0.508 \r\n 2004          216           18.205        32.49         20.24         54.864 \r\n 2004          217           8.976         24.71         18.19         0 \r\n 2004          218           23.334        24.85         14.77         0 \r\n 2004          219           24.872        23.48         12.49         0 \r\n 2004          220           24.297        25.03         14.22         0 \r\n 2004          221           18.751        27            17.33         0 \r\n 2004          222           24.608        24.95         14.29         0 \r\n 2004          223           20.217        20.91         10.48         0 \r\n 2004          224           15.041        17.38         8.9           0 \r\n 2004          225           16.087        20.91         8.61          0 \r\n 2004          226           19.327        21.2          10.84         0.25 \r\n 2004          227           22.159        23.29         10.7          0 \r\n 2004          228           22.656        23.6          10.6          0 \r\n 2004          229           19.361        26.73         14.12         0 \r\n 2004          230           14.422        26.34         16.37         0 \r\n 2004          231           14.16         27.32         13.53         0 \r\n 2004          232           20.368        19.7          8.14          0 \r\n 2004          233           18.558        24.76         10.52         0 \r\n 2004          234           22.37         25.11         9.77          0 \r\n 2004          235           22.503        28.72         16.15         0 \r\n 2004          236           15.965        27.66         17.96         0 \r\n 2004          237           17.138        27.23         18.66         13.97 \r\n 2004          238           13.008        26.47         18.22         13.716 \r\n 2004          239           18.824        30.43         17.83         5.842 \r\n 2004          240           20.901        27.22         17.61         0 \r\n 2004          241           15.565        22.47         14.3          0 \r\n 2004          242           22.137        23.61         10.76         0 \r\n 2004          243           22.445        27.35         13.63         1.27 \r\n 2004          244           20.003        28.53         14.94         0 \r\n 2004          245           21.562        30.1          17.26         0 \r\n 2004          246           21.447        27.76         15.69         0 \r\n 2004          247           20.434        28.33         16.19         0 \r\n 2004          248           19.458        28.74         17.32         0 \r\n 2004          249           9.794         26.61         16.17         20.574 \r\n 2004          250           21.78         24.41         11.97         0 \r\n 2004          251           21.289        23.1          9.94          0 \r\n 2004          252           20.547        22.99         9.78          0 \r\n 2004          253           20.251        25.73         12.49         0 \r\n 2004          254           20.091        28.39         14.75         0 \r\n 2004          255           20.057        28.78         14.05         0 \r\n 2004          256           19.137        30.05         14.11         0 \r\n 2004          257           18.449        31.14         17.96         0 \r\n 2004          258           15.288        30.93         18.59         0 \r\n 2004          259           16.537        25.41         12.63         1.016 \r\n 2004          260           19.7          25.08         10.01         0 \r\n 2004          261           16.309        24.86         11.62         0 \r\n 2004          262           17.872        29.32         16.95         0 \r\n 2004          263           18.335        30.328        18.889        0 \r\n 2004          264           17.871        27.9          16.8          0 \r\n 2004          265           15.194        28.36         15.73         0 \r\n 2004          266           17.954        28.28         15.29         0 \r\n 2004          267           12.515        23.43         13.38         6.35 \r\n 2004          268           17.704        26.03         9.05          0 \r\n 2004          269           18.32         24.85         9.7           0 \r\n 2004          270           17.2          26.2          9.48          0 \r\n 2004          271           13.192        27.48         12.93         0 \r\n 2004          272           18.698        21.4          8.04          0 \r\n 2004          273           18.114        21.01         5.152         0 \r\n 2004          274           14.625        26.58         12.18         0 \r\n 2004          275           4.841         20.85         0.89          4.572 \r\n 2004          276           16.993        16.13        -2.135         0 \r\n 2004          277           16.871        24.38         5.477         0 \r\n 2004          278           16.918        14.89         2.233         0 \r\n 2004          279           16.624        21.67         3.04          0 \r\n 2004          280           12.219        24.13         6.612         0 \r\n 2004          281           6.363         21.66         12.77         0 \r\n 2004          282           14.056        24.19         9             0 \r\n 2004          283           16.429        21.61         4.938         0 \r\n 2004          284           12.644        21.68         6.815         0 \r\n 2004          285           7.856         16.27         7.6           0 \r\n 2004          286           7.589         17.23         8.16          0 \r\n 2004          287           9.374         15.53         6.573         0 \r\n 2004          288           9.312         12.17         3.633         0 \r\n 2004          289           10.332        11.83         1.948         0 \r\n 2004          290           15.036        10.64        -2.061         0 \r\n 2004          291           13.301        18.08         4.176         0 \r\n 2004          292           4.266         13.98         6.093         0 \r\n 2004          293           5.427         12.71         6.296         0 \r\n 2004          294           2.604         10.77         8.41          0 \r\n 2004          295           1.853         13.71         8.76          0.762 \r\n 2004          296           4.642         23.17         13.64         0.254 \r\n 2004          297           10.188        18.31         7.82          0 \r\n 2004          298           13.752        23.41         3.585         0 \r\n 2004          299           13.009        17.62         4.653         0 \r\n 2004          300           4.441         16.45         10.29         3.81 \r\n 2004          301           2.84          14.42         10.9          0 \r\n 2004          302           3.76          23.24         12.89         10.414 \r\n 2004          303           10.985        26.99         10.44         1.27 \r\n 2004          304           8.442         14.67         5.216         0 \r\n 2004          305           9.207         18.71         0.154         1.778 \r\n 2004          306           1.509         11.15         6.778         9.906 \r\n 2004          307           2.684         6.911         1.625         0 \r\n 2004          308           10.253        9.87         -5.075         0.254 \r\n 2004          309           12.357        11.57        -0.407         0 \r\n 2004          310           11.394        18.36        -3.357         0 \r\n 2004          311           11.802        24.36         3.965         0 \r\n 2004          312           11.182        14.62         1.271         0 \r\n 2004          313           10.068        13.67        -0.368         0 \r\n 2004          314           8.936         19.22         2.414         0 \r\n 2004          315           3.077         13.05         2.653         16.002 \r\n 2004          316           11.553        4.883        -4.085         0 \r\n 2004          317           9.339         7.67         -7.44          0 \r\n 2004          318           10.306        8.82         -4.698         0 \r\n 2004          319           6.17          8.66         -1.517         0 \r\n 2004          320           4.591         11.52         2.345         0 \r\n 2004          321           2.747         15.64         8.64          0 \r\n 2004          322           2.214         18.08         14.16         0 \r\n 2004          323           1.994         15.72         8.76          7.366 \r\n 2004          324           1.459         11.65         5.728         3.302 \r\n 2004          325           8.289         6.787         0.287         0 \r\n 2004          326           5.402         6.17         -0.41          0 \r\n 2004          327           2.498         8.18          2.585         0 \r\n 2004          328           6.528         6.276        -1.064         0 \r\n 2004          329           9.205         3.993        -4.91          0 \r\n 2004          330           6.156         7.53         -6.986         0 \r\n 2004          331           4.554         10.09         2.718         4.42 \r\n 2004          332           3.539         7.05         -3.501         0 \r\n 2004          333           2.509         0.562        -5.442         0 \r\n 2004          334           4.96         -0.046        -6.094         0 \r\n 2004          335           7.572         1.5          -9.51          0 \r\n 2004          336           8.736         5.556        -9.16          0 \r\n 2004          337           9.202         7.14         -5.589         0 \r\n 2004          338           7.235         6.294        -6.329         0 \r\n 2004          339           8.639         11.79        -0.586         3.404 \r\n 2004          340           2.907         5.421        -2.296         7.112 \r\n 2004          341           1.028         4.933         1.996         0 \r\n 2004          342           2.974         3.643        -1.498         0 \r\n 2004          343           3.368         7.71         -2.326         0 \r\n 2004          344           3.767         10.41        -2.023         0 \r\n 2004          345           1.701         1.579        -0.784         0 \r\n 2004          346           3.435         2.3          -3.509         0 \r\n 2004          347           7.27          7.24         -2.821         0 \r\n 2004          348           8.999        -2.821        -11.15         0 \r\n 2004          349           9.001         0.41         -15.55         0 \r\n 2004          350           6.522         6.958        -5.677         0 \r\n 2004          351           8.587         7.55         -5.406         0 \r\n 2004          352           7.54          5.218        -7.11          0 \r\n 2004          353           3.953         6.536        -12.45         0 \r\n 2004          354           7.475        -8.2          -19.14         0 \r\n 2004          355           6.601         4.52         -9.08          0 \r\n 2004          356           8.463         1.292        -14.64         0 \r\n 2004          357           8.585        -9.92         -18.95         0 \r\n 2004          358           8.505        -12.28        -20.85         0 \r\n 2004          359           7.595        -3.52         -22.86         0 \r\n 2004          360           3.303         4.922        -6.086         0 \r\n 2004          361           7.775         0.07         -7.94          0 \r\n 2004          362           5.556         6.663        -7.64          0 \r\n 2004          363           6.892         8.97         -4.71          0 \r\n 2004          364           7.488         9.88         -9.39          0 \r\n 2004          365           4.775         17.32         7.66          0 \r\n 2004          366           6.286         8.68         -4.479         0 \r\n 2005          1             0.941         5.699        -4.719         0 \r\n 2005          2             5.025        -1.278        -9.12          2.946 \r\n 2005          3             1.927        -4.278        -8.08          2.591 \r\n 2005          4             0.973        -7.02         -10.53         11.76 \r\n 2005          5             3.834        -10.47        -13.66         5.309 \r\n 2005          6             7.156        -11.46        -20.34         0 \r\n 2005          7             4.117        -6.827        -15.45         0 \r\n 2005          8             7.299        -3.394        -18.01         0 \r\n 2005          9             3.576        -0.045        -6.624         0 \r\n 2005          10            5.678        -6.279        -11.46         0 \r\n 2005          11            3.772        -4.142        -8.38          0 \r\n 2005          12            4.143        -3.375        -6.085         0 \r\n 2005          13            9.779        -6.036        -21.2          0 \r\n 2005          14            5.444        -17.26        -22.67         0 \r\n 2005          15            9.022        -14.16        -22.25         0 \r\n 2005          16            10.291       -12.21        -22.37         0 \r\n 2005          17            9.69         -9.02         -23.66         0 \r\n 2005          18            6.992         1.922        -13.85         0 \r\n 2005          19            5.262         2.927        -1.554         0 \r\n 2005          20            9.868         6.527        -3.126         0 \r\n 2005          21            2.185         0.943        -6.027         0 \r\n 2005          22            8.717        -6.027        -17.18         0 \r\n 2005          23            6.432        -4.053        -14.31         0 \r\n 2005          24            10.438        7.15         -5.532         0 \r\n 2005          25            10.649        9.67         -2.115         0 \r\n 2005          26            2.84          2.463        -4.92          0 \r\n 2005          27            5.817         0.165        -4.834         0 \r\n 2005          28            6.636         0.516        -4.622         0 \r\n 2005          29            5.152         2.387        -4.227         0 \r\n 2005          30            3.109         0.83         -1.906         0 \r\n 2005          31            2.046         1.818        -0.727         0 \r\n 2005          32            2.576         2.035        -0.405         0 \r\n 2005          33            11.338        6.441        -2.897         0 \r\n 2005          34            11.975        11.86        -3.737         0 \r\n 2005          35            12.381        14.92        -1.677         0 \r\n 2005          36            10.349        14            1.179         11.506 \r\n 2005          37            1.764         7.77         -5.211         6.96 \r\n 2005          38            7.733        -5.181        -12.08         8.712 \r\n 2005          39            5.217        -7.33         -13.29         2.896 \r\n 2005          40            13.423       -7.56         -12.88         0 \r\n 2005          41            12.315       -1.916        -15.4          0 \r\n 2005          42            13.667        5.238        -6.007         3.277 \r\n 2005          43            7.026         5.737        -2.477         20.853 \r\n 2005          44            2.058         8.25          3.214         2.642 \r\n 2005          45            11.428        15.71         1.607         0 \r\n 2005          46            3.587         4.128        -2.401         0 \r\n 2005          47            13.096        4.837        -5.144         0 \r\n 2005          48            14.189        7.19         -8.34          0 \r\n 2005          49            13.174        3.935        -6.175         0 \r\n 2005          50            1.507         3.188        -1.399         0 \r\n 2005          51            2.828         7.06         -1.582         1.78 \r\n 2005          52            3.069         0.773        -2.648         0 \r\n 2005          53            11.914        6.701        -3.528         0 \r\n 2005          54            9.569         4.289        -4.238         0 \r\n 2005          55            4.411         0.079        -5.949         0 \r\n 2005          56            15.972        10.5         -5.745         0 \r\n 2005          57            13.7          11.37        -6.183         0 \r\n 2005          58            8.385         6.254        -5.882         0 \r\n 2005          59            5.649        -4.109        -8.1           0 \r\n 2005          60            16.87         1.988        -11.81         0 \r\n 2005          61            15.437        9.95         -7.58          0 \r\n 2005          62            13.628        12.08        -5.687         0 \r\n 2005          63            16.138        15.3         -3.451         0 \r\n 2005          64            16.646        11.92        -1.622         0 \r\n 2005          65            15.748        21.82         1.833         0 \r\n 2005          66            11.148        11.82        -5.686         0 \r\n 2005          67            12.956        4.815        -7.98          0 \r\n 2005          68            17.538        3.287        -6.595         0 \r\n 2005          69            11.701        10.69        -0.851         0 \r\n 2005          70            9.843         10.88        -6.636         0 \r\n 2005          71            6.87          6.035        -7.67          0 \r\n 2005          72            15.098        5.86         -10.97         0 \r\n 2005          73            15.947        4.355        -10.13         0 \r\n 2005          74            16.614        10.04        -8.62          0 \r\n 2005          75            18.413        14.53        -5.269         0 \r\n 2005          76            10.496        15.81        -1.888         0 \r\n 2005          77            9.904         11.38        -3.327         0 \r\n 2005          78            15.043        6.786        -3.787         0 \r\n 2005          79            12.522        10.66        -6.155         0 \r\n 2005          80            11.111        11.26         3.153         0 \r\n 2005          81            3.68          4.547        -0.053         0 \r\n 2005          82            20.163        12.21        -1.468         3.2 \r\n 2005          83            1.558         3.504         0.259         5.105 \r\n 2005          84            4.85          3.631        -0.015         0 \r\n 2005          85            16.476        9.43         -1.231         0 \r\n 2005          86            21.303        15.63        -0.236         0 \r\n 2005          87            19.843        23.02        -0.49          0 \r\n 2005          88            13.977        24.86         9.95          0 \r\n 2005          89            6.63          17.61         5.274         10.058 \r\n 2005          90            21.778        14.9          0.487         0 \r\n 2005          91            22.96         12.85         0.041         0 \r\n 2005          92            22.723        17.12        -2.281         0 \r\n 2005          93            20.087        24.95         3.566         0 \r\n 2005          94            21.94         26.33         9.4           0 \r\n 2005          95            11.057        21.64         13.41         0 \r\n 2005          96            7.945         18.26         9.31          0 \r\n 2005          97            21.072        20.03         4.678         0 \r\n 2005          98            21.174        20.51         1.615         0 \r\n 2005          99            19.721        24.8          11.93         0 \r\n 2005          100           12.411        24.71         14.07         7.62 \r\n 2005          101           12.449        19.23         9.44          22.86 \r\n 2005          102           5.921         9.4           5.072         0.508 \r\n 2005          103           23.746        16.58         4.346         0 \r\n 2005          104           25.05         19.62         3.231         0 \r\n 2005          105           21.162        21.64         5.436         0 \r\n 2005          106           11.357        22.77         11.23         3.556 \r\n 2005          107           22.309        26.6          9.84          0 \r\n 2005          108           15.792        25.28         12.44         0.508 \r\n 2005          109           13.835        25.53         16.44         1.524 \r\n 2005          110           11.982        23.15         13.08         17.526 \r\n 2005          111           6.738         17.03         11.36         19.304 \r\n 2005          112           13.611        13.63         4.824         13.208 \r\n 2005          113           25.729        10.68        -0.367         0 \r\n 2005          114           26.504        14.93        -1.984         0 \r\n 2005          115           14.186        16.44         4.254         0 \r\n 2005          116           12.374        11.49         1.664         0.508 \r\n 2005          117           21.392        15.35        -0.006         0 \r\n 2005          118           10.014        9.59          3.375         0 \r\n 2005          119           18.282        12.29         0.856         0 \r\n 2005          120           22.141        12.45        -1.64          0 \r\n 2005          121           14.783        7.6          -1.184         0 \r\n 2005          122           25.593        11.92         0.095         0 \r\n 2005          123           27.483        14.62         0.335         0 \r\n 2005          124           24.32         19.5          2.024         0 \r\n 2005          125           23.362        21.53         5.665         0 \r\n 2005          126           20.781        26.71         9.02          0 \r\n 2005          127           21.12         27.36         17.43         0 \r\n 2005          128           16.078        27.28         14.79         6.35 \r\n 2005          129           20.557        22.87         11.22         0 \r\n 2005          130           23.707        30.81         9.14          13.716 \r\n 2005          131           8.389         18.45         13.55         37.592 \r\n 2005          132           6.877         19.15         9.26          63.246 \r\n 2005          133           7.078         16.21         7.85          0.508 \r\n 2005          134           21.422        11.42         5.851         0 \r\n 2005          135           27.835        16.49         3.002         0 \r\n 2005          136           23.795        21.86         6.203         0 \r\n 2005          137           23.889        25.74         13.32         0 \r\n 2005          138           14.952        25.42         15.4          1.27 \r\n 2005          139           28.157        29.67         13.99         0 \r\n 2005          140           27.222        25.57         13.02         0 \r\n 2005          141           25.278        26.63         12.66         0 \r\n 2005          142           27.498        27.52         13.96         0 \r\n 2005          143           27.69         29.43         12.64         0 \r\n 2005          144           25.781        27.08         14.41         0 \r\n 2005          145           9.193         24.96         9.98          5.08 \r\n 2005          146           27.856        23.41         8.49          1.27 \r\n 2005          147           24.815        21.58         9             0 \r\n 2005          148           29.47         23.75         7.75          0 \r\n 2005          149           7.171         16.31         9.26          6.096 \r\n 2005          150           16.278        22            6.832         0 \r\n 2005          151           9.581         21.36         14.05         8.382 \r\n 2005          152           11.317        23.02         15.21         2.54 \r\n 2005          153           20.981        25.87         14.01         0 \r\n 2005          154           12.249        23            16.16         12.192 \r\n 2005          155           15.191        26.1          16.99         1.778 \r\n 2005          156           18.828        24.5          15.6          0 \r\n 2005          157           26.35         30.69         15.95         0 \r\n 2005          158           23.526        31.34         20.17         0 \r\n 2005          159           14.285        26.21         16.66         14.478 \r\n 2005          160           12.089        25.75         18.92         5.08 \r\n 2005          161           17.891        26.86         17.04         15.24 \r\n 2005          162           17.415        25.98         17.39         5.08 \r\n 2005          163           16.249        25.95         13.69         2.032 \r\n 2005          164           21.824        26.53         16.48         6.604 \r\n 2005          165           21.32         25.09         14.5          0 \r\n 2005          166           28.926        26.81         14.2          0 \r\n 2005          167           24.052        27.31         14.59         0 \r\n 2005          168           28.716        27.5          16.32         0 \r\n 2005          169           29.174        28.16         15.02         0 \r\n 2005          170           28.042        28.64         15.62         0 \r\n 2005          171           26.658        30.42         17.69         0 \r\n 2005          172           24.265        32.69         19.72         0 \r\n 2005          173           26.192        32.49         19.62         0 \r\n 2005          174           27.789        32.03         20.8          0 \r\n 2005          175           26.329        33.59         21.67         0 \r\n 2005          176           11.629        30.14         19.6          0.762 \r\n 2005          177           26.354        32.88         22.47         0 \r\n 2005          178           17.979        33.48         20.04         8.128 \r\n 2005          179           23.931        30.74         18.31         3.302 \r\n 2005          180           13.849        31.4          20.47         3.556 \r\n 2005          181           26.03         29.86         17.68         0 \r\n 2005          182           28.056        25.95         14.43         0 \r\n 2005          183           26.124        28.48         16.94         0 \r\n 2005          184           17.137        27.82         18.58         0 \r\n 2005          185           20.773        27.29         18.07         13.97 \r\n 2005          186           27.288        28.57         15.89         0 \r\n 2005          187           25.182        29.05         17.23         0 \r\n 2005          188           24.902        29.75         16.83         0 \r\n 2005          189           25.249        30.51         18.29         0 \r\n 2005          190           26.321        31.27         20.21         0 \r\n 2005          191           26.053        31.51         19.93         0 \r\n 2005          192           26.101        31.94         19.7          0 \r\n 2005          193           21.912        31.01         18.46         0 \r\n 2005          194           24.721        31.15         19.27         0 \r\n 2005          195           24.491        32.38         18.89         0 \r\n 2005          196           25.005        33.22         19.57         0 \r\n 2005          197           26.2          33.23         20.58         0 \r\n 2005          198           25.727        33.08         19.6          11.938 \r\n 2005          199           26.55         27.86         18.25         6.096 \r\n 2005          200           26.831        29.94         17.19         0 \r\n 2005          201           15.434        32.93         23.26         0 \r\n 2005          202           18.135        30.4          21.83         4.572 \r\n 2005          203           23.345        34.73         21.73         0 \r\n 2005          204           25.385        35.43         23.62         0 \r\n 2005          205           25.3          34.38         23.78         0 \r\n 2005          206           23.326        33.8          21.4          23.114 \r\n 2005          207           12.502        21.84         12.81         10.922 \r\n 2005          208           26.292        22.74         10.81         0 \r\n 2005          209           26.944        26.59         12.43         0 \r\n 2005          210           18.192        28.34         17.11         0 \r\n 2005          211           19.278        29.44         17.75         0 \r\n 2005          212           18.974        29.56         19.51         0.254 \r\n 2005          213           18.15         29.62         19.11         0 \r\n 2005          214           15.924        31.27         20.98         0.762 \r\n 2005          215           24.57         34.15         20.39         0 \r\n 2005          216           20.126        25.74         16.49         1.016 \r\n 2005          217           24.333        27.15         14.54         0 \r\n 2005          218           27.348        27.88         11.95         0 \r\n 2005          219           25.502        31.89         15.87         0 \r\n 2005          220           24.773        33.25         19.59         0 \r\n 2005          221           24.302        39.33         20.34         0 \r\n 2005          222           20.666        31.29         19.73         14.732 \r\n 2005          223           11.763        30.5          19.79         25.146 \r\n 2005          224           6.386         22.08         19.1          1.27 \r\n 2005          225           10.476        21.16         15.2          2.286 \r\n 2005          226           24.509        23.16         11.83         0 \r\n 2005          227           24.642        26.32         13.14         0 \r\n 2005          228           24.119        27.7          14.94         0 \r\n 2005          229           17.129        26.24         16.85         0 \r\n 2005          230           24.307        31.67         21.46         0 \r\n 2005          231           17.421        30.08         18.21         0 \r\n 2005          232           20.046        31.21         18.78         0 \r\n 2005          233           20.669        31.2          19.81         0 \r\n 2005          234           17.749        25.22         17.46         0 \r\n 2005          235           14.846        25.47         15.81         0 \r\n 2005          236           11.437        23.72         14.24         0 \r\n 2005          237           9.969         27.96         18.64         0 \r\n 2005          238           16.652        28.17         16.97         4.318 \r\n 2005          239           22.723        29.47         14.66         0 \r\n 2005          240           16.921        28.65         15.76         0.254 \r\n 2005          241           23.698        29.92         13.44         0 \r\n 2005          242           21.393        29.65         14.41         0 \r\n 2005          243           20.059        27.21         14.18         0 \r\n 2005          244           23.109        28.77         11.59         0 \r\n 2005          245           20.429        29.08         12.57         0 \r\n 2005          246           21.234        31.67         16.85         0 \r\n 2005          247           21.212        32.1          19.22         0 \r\n 2005          248           12.274        29.04         17.6          0 \r\n 2005          249           6.101         28.09         17.59         0 \r\n 2005          250           12.162        28.65         17.18         2.54 \r\n 2005          251           17.104        31.83         17.26         0 \r\n 2005          252           20.049        33.08         17.8          0 \r\n 2005          253           20.427        32.31         18.86         0 \r\n 2005          254           16.912        31.68         17.74         0 \r\n 2005          255           16.734        31.09         21.78         0 \r\n 2005          256           9.785         24.34         12.85         10.922 \r\n 2005          257           20.658        25.17         9.07          0 \r\n 2005          258           11.817        22.39         11.21         0 \r\n 2005          259           20.232        26.3          7.61          0 \r\n 2005          260           16.152        24.56         10.49         0 \r\n 2005          261           19.078        31.13         14.19         0 \r\n 2005          262           18.573        29.85         15.89         0 \r\n 2005          263           19.901        32.7          11.49         0 \r\n 2005          264           17.771        34.48         15.98         0 \r\n 2005          265           13.409        25.62         13.24         0 \r\n 2005          266           5.587         20.02         9.69          0 \r\n 2005          267           11.652        30.22         16.65         0 \r\n 2005          268           7.183         22.85         16.64         1.524 \r\n 2005          269           12.729        21.43         10.28         0 \r\n 2005          270           18.811        27.12         8.01          0 \r\n 2005          271           8.542         16.25         3.965         3.556 \r\n 2005          272           18.716        18.93         1.309         0 \r\n 2005          273           17.695        26.18         5.986         0 \r\n 2005          274           11.372        24.91         13.44         2.54 \r\n 2005          275           9.464         29.73         17.6          0 \r\n 2005          276           10.183        29.58         19.9          0 \r\n 2005          277           15.175        31.54         21.24         0 \r\n 2005          278           3.841         22.56         4.394         2.032 \r\n 2005          279           16.546        11.39        -0.085         0 \r\n 2005          280           17.667        12.7         -2.317         0 \r\n 2005          281           17.278        16.14        -0.739         0 \r\n 2005          282           13.193        16.99         2.202         0 \r\n 2005          283           14.687        19.2          2.118         0 \r\n 2005          284           11.53         19.56         5.504         0 \r\n 2005          285           4.215         16.72         10.49         2.032 \r\n 2005          286           15.505        21.54         4.557         0.254 \r\n 2005          287           15.722        28.09         7.94          0 \r\n 2005          288           15.653        22.73         6.755         0 \r\n 2005          289           9.811         23.71         7.68          0 \r\n 2005          290           14.959        25.6          12.16         0 \r\n 2005          291           14.488        28.61         7.85          0 \r\n 2005          292           6.898         14.52         5.382         0 \r\n 2005          293           5.728         11.43         5.102         8.89 \r\n 2005          294           8.649         15.5          0.826         0 \r\n 2005          295           5.564         8.51         -0.625         0.508 \r\n 2005          296           3.626         6.359        -1.671         0.254 \r\n 2005          297           13.255        10.45        -2.318         0 \r\n 2005          298           14.148        11.77        -3.134         0 \r\n 2005          299           10.018        13.44        -1.271         0 \r\n 2005          300           13.808        15.19        -1.366         0 \r\n 2005          301           13.616        17.69         0.685         0 \r\n 2005          302           11.077        20.43         5.65          0 \r\n 2005          303           11.197        19.18         8.6           0.254 \r\n 2005          304           10.821        15.32         2.242         0 \r\n 2005          305           12.75         20.7         -2.764         0 \r\n 2005          306           12.827        25.84         3.18          0 \r\n 2005          307           10.909        20.68         6.794         0 \r\n 2005          308           12.621        16.9          1.815         0 \r\n 2005          309           4.452         13.85         3.317         0 \r\n 2005          310           11.684        15.06        -0.168         0 \r\n 2005          311           11.101        20.54         6.697         0 \r\n 2005          312           10.481        21.76         6.041         0 \r\n 2005          313           6.736         11.09        -2.289         0 \r\n 2005          314           11.403        15.44        -4.192         0 \r\n 2005          315           10.099        22.29         1.293         0 \r\n 2005          316           3.262         21.69         8.95          0 \r\n 2005          317           11.373        10.3          0.741         0 \r\n 2005          318           5.427         8.35          0.845         5.486 \r\n 2005          319           2.326         2.869        -5.959         3.48 \r\n 2005          320           11.813       -5.92         -13.81         0 \r\n 2005          321           8.245        -3.128        -14.07         0 \r\n 2005          322           10.762        6.13         -5.209         0 \r\n 2005          323           2.671         5.986         1.253         0 \r\n 2005          324           2.595         2.784        -0.823         0 \r\n 2005          325           7.123         11.85        -2.249         0 \r\n 2005          326           5.124         7.74         -0.87          0 \r\n 2005          327           9.902         15.03         1.31          0 \r\n 2005          328           10.48         3.429        -9.18          0 \r\n 2005          329           7.369         7.82         -7.16          0 \r\n 2005          330           9.751         14.93        -3.318         3.073 \r\n 2005          331           0.772         12.86         7.42          12.37 \r\n 2005          332           1.391         7.45         -6.469         0 \r\n 2005          333           6.508        -3.31         -7.65          0 \r\n 2005          334           4.025        -2.831        -10.18         0 \r\n 2005          335           10.21        -4.992        -14.15         0 \r\n 2005          336           5.319        -7.15         -10.75         0 \r\n 2005          337           4.509        -6.614        -14.93         0 \r\n 2005          338           8.873        -11.73        -17.34         0 \r\n 2005          339           8.184        -7.99         -19.61         0 \r\n 2005          340           10.123       -13.14        -22.55         0 \r\n 2005          341           6.594        -14.37        -23.38         5.258 \r\n 2005          342           8.446        -12.68        -19.36         0 \r\n 2005          343           9.631        -9.47         -22            0 \r\n 2005          344           4.431         2.263        -9.5           0 \r\n 2005          345           4.712         4.063        -1.118         0 \r\n 2005          346           6.598         4.536        -1.878         3.454 \r\n 2005          347           5.679         5.017        -4.902         7.315 \r\n 2005          348           3.183         3.186        -1.269         0 \r\n 2005          349           4.394        -0.51         -5.894         0 \r\n 2005          350           6.99         -3.951        -11.72         0 \r\n 2005          351           8.294        -6.028        -12.67         0 \r\n 2005          352           9.031        -8.14         -15.6          0 \r\n 2005          353           9.226        -3.28         -17.04         0 \r\n 2005          354           9.203        -0.113        -10.2          0 \r\n 2005          355           9.358         2.432        -12.89         0 \r\n 2005          356           8.16          10.25        -5.299         0 \r\n 2005          357           4.809         8.31         -0.207         11.481 \r\n 2005          358           1.336         4.177         1.055         0 \r\n 2005          359           1.938         1.208        -1.221         0 \r\n 2005          360           6.308         9.13         -1.698         0 \r\n 2005          361           4.971         4.013        -1.973         0 \r\n 2005          362           1.372         0.76         -0.814         0 \r\n 2005          363           2.694         2.167        -2.125         0 \r\n 2005          364           1.976         1.322        -1.546         0 \r\n 2005          365           6.623         3.672        -4.61          0 \r\n 2006          1             4.128         2.678        -2.471         0 \r\n 2006          2             1.633         1.683        -0.332         5.84 \r\n 2006          3             4.759         6.91         -1.433         0 \r\n 2006          4             8.818         9.64         -0.349         0 \r\n 2006          5             1.968        -0.016        -3.069         0 \r\n 2006          6             5.638         3.488        -4.823         0 \r\n 2006          7             6.419         10.29        -0.948         0 \r\n 2006          8             3.065         2.871        -1.897         0 \r\n 2006          9             7.958         1.627        -6.78          0 \r\n 2006          10            9.7           4.346        -9.56          0 \r\n 2006          11            9.239         10.95        -5.783         0 \r\n 2006          12            9.36          11.26        -1.231         0 \r\n 2006          13            6.212         2.186        -5.588         0 \r\n 2006          14            9.842         10.03        -8.77          0 \r\n 2006          15            9.949         14.85         0.754         0 \r\n 2006          16            2.224         5.897        -3.766         0 \r\n 2006          17            3.649        -2.106        -9.32          0 \r\n 2006          18            7.691         9.87         -10.33         0 \r\n 2006          19            5.846         8.83         -1.424         0 \r\n 2006          20            2.503         0.856        -3.651         0 \r\n 2006          21            6.924         1.369        -10.53         1.27 \r\n 2006          22            3.006        -0.017        -4.901         0 \r\n 2006          23            6.19          4.884        -5.318         0 \r\n 2006          24            11.122        9.03         -6.437         0 \r\n 2006          25            11.199        8.74         -7.15          0 \r\n 2006          26            5.798         14.84        -2.706         0 \r\n 2006          27            11.159        14.39         4.354         0 \r\n 2006          28            0.938         8.91          5.43          0 \r\n 2006          29            2.674         5.42          0.105         0 \r\n 2006          30            3.468         2.311        -3.098         12.45 \r\n 2006          31            9.946         11.59        -4.6           0 \r\n 2006          32            9.392         8.71          0.801         0 \r\n 2006          33            8.017         11.85         0.658         0 \r\n 2006          34            10.048        2.728        -6.544         0 \r\n 2006          35            12.947       -1.024        -14.99         0 \r\n 2006          36            10.238        0.536        -12.68         0 \r\n 2006          37            11.823        4.051        -11.67         0 \r\n 2006          38            6.985         5.429        -4.874         0 \r\n 2006          39            13.421       -0.852        -10.87         0 \r\n 2006          40            7.808         2.3          -15.39         0 \r\n 2006          41            10.079        2.501        -6.693         0.25 \r\n 2006          42            9.187        -3.364        -7.54          0.75 \r\n 2006          43            10.921       -2.228        -10.4          0 \r\n 2006          44            14.121        11.99        -11.06         0 \r\n 2006          45            14.375        16.95        -3.767         0 \r\n 2006          46            7.242         2.159        -4.911         0 \r\n 2006          47            6.733        -4.931        -13.46         0 \r\n 2006          48            11.934       -13.29        -19.02         1.02 \r\n 2006          49            15.869       -12.6         -23.35         0 \r\n 2006          50            9.775        -4.468        -18.66         0 \r\n 2006          51            15.759        5.686        -13.38         0 \r\n 2006          52            14.836        8.12         -9.34          0 \r\n 2006          53            16.041        9.79         -6.614         0 \r\n 2006          54            16.123        6.177        -5.162         0 \r\n 2006          55            15.865        17.09        -4.979         0 \r\n 2006          56            16.585        1.958        -9.79          0 \r\n 2006          57            16.184        8.76         -7.29          0 \r\n 2006          58            15.549        18.86        -2.479         0 \r\n 2006          59            11.71         17.21        -2.964         0 \r\n 2006          60            11.868        22.21         0.343         0 \r\n 2006          61            17.07         4.602        -7.32          0 \r\n 2006          62            17.754        8.13         -9.68          0 \r\n 2006          63            3.726         4.135        -0.736         0.25 \r\n 2006          64            7.928         9.36          0.838         6.35 \r\n 2006          65            18.531        8.42         -3.402         0 \r\n 2006          66            6.998         8.23         -1.71          0 \r\n 2006          67            3.204         6.709        -0.006         0 \r\n 2006          68            13.551        11.79         0.867         2.29 \r\n 2006          69            17.668        15.21        -0.501         0 \r\n 2006          70            17.446        13.23        -0.661         0 \r\n 2006          71            2.703         3.65         -0.338         0 \r\n 2006          72            10.734        1.683        -5.348         2.54 \r\n 2006          73            19.605        11.08        -8.35          0 \r\n 2006          74            15.345        4.709        -6.111         0 \r\n 2006          75            2.92          11.267       -0.668         0.25 \r\n 2006          76            18.888        6.603        -1.423         0 \r\n 2006          77            7.502         6.474        -0.109         0 \r\n 2006          78            5.118         5.337        -0.426         0 \r\n 2006          79            5.648         3.224        -0.939         8.13 \r\n 2006          80            18.004        0.864        -4.483         7.87 \r\n 2006          81            22.248        1.515        -6.487         0 \r\n 2006          82            22.265        3.661        -7.103         0 \r\n 2006          83            6.879         2.628        -7.089         0 \r\n 2006          84            8.19          5.256        -2.491         0 \r\n 2006          85            19.61         13.829       -4.042         0 \r\n 2006          86            2.607         8.603         3.957         0.25 \r\n 2006          87            18.098        9.983         2.696         0 \r\n 2006          88            15.91         24.64         2.201         0 \r\n 2006          89            3.516         19.53         8.97          0 \r\n 2006          90            8.506         10.33         3.658         26.92 \r\n 2006          91            16.953        16.77         0.811         4.318 \r\n 2006          92            3.687         14.15         5.697         25.4 \r\n 2006          93            23.353        11.91         2.148         0 \r\n 2006          94            21.63         16.91         0.667         0 \r\n 2006          95            16.651        24.28         7.98          0 \r\n 2006          96            17.635        27.27         12.29         6.096 \r\n 2006          97            7.209         16.26         0.93          0 \r\n 2006          98            24.65         12.78        -3.339         0 \r\n 2006          99            21.03         18.85         0.229         0 \r\n 2006          100           23.1          26.51         7.59          0 \r\n 2006          101           13.895        28.31         12.93         7.112 \r\n 2006          102           24.345        24.56         8.81          0 \r\n 2006          103           23.464        31.01         9.66          0 \r\n 2006          104           24.498        30.48         14.12         0 \r\n 2006          105           14.564        27.86         11.9          16.51 \r\n 2006          106           7.403         17.3          11.52         0 \r\n 2006          107           9.831         17.15         9.65          0 \r\n 2006          108           6.73          19.48         7.09          0 \r\n 2006          109           23.941        19.73         1.575         0 \r\n 2006          110           22.894        16.81         4.288         0 \r\n 2006          111           24.101        20.78         4.432         0 \r\n 2006          112           25.555        22.2          5.33          0 \r\n 2006          113           23.968        23.48         6.55          0 \r\n 2006          114           14.833        22.41         6.254         1.27 \r\n 2006          115           3.581         6.235         2.348         12.7 \r\n 2006          116           26.623        15.81         3.621         0 \r\n 2006          117           12.408        17.63         2.682         0 \r\n 2006          118           4.169         14.4          10.71         9.398 \r\n 2006          119           2.38          13.18         10.54         16.002 \r\n 2006          120           3.055         11.87         10.09         27.686 \r\n 2006          121           12.841        17.86         9.34          0 \r\n 2006          122           23.829        23.84         7.02          0 \r\n 2006          123           14.705        18.76         8.99          2.54 \r\n 2006          124           20.746        16.18         7             0 \r\n 2006          125           17.396        16.55         5.733         0 \r\n 2006          126           20.712        18.12         2.801         0 \r\n 2006          127           13.993        16.08         5.053         0 \r\n 2006          128           17.045        24.47         12.06         5.08 \r\n 2006          129           24.156        24.37         11.98         0.254 \r\n 2006          130           19.961        19.1          6.938         0 \r\n 2006          131           15.657        15.15         4.778         0.254 \r\n 2006          132           29.118        19.3          2.756         0 \r\n 2006          133           13.775        14.23         3.937         0 \r\n 2006          134           13.546        15.38         6.446         0 \r\n 2006          135           13.096        18.52         8.62          0 \r\n 2006          136           16.699        22.8          8.39          0 \r\n 2006          137           21.148        28.29         8.12          0 \r\n 2006          138           23.323        24.32         8.45          0 \r\n 2006          139           27.837        32.6          11.67         0 \r\n 2006          140           15.145        22.87         13.28         1.524 \r\n 2006          141           17.267        22.18         11.58         0 \r\n 2006          142           26.195        26.77         9.83          0 \r\n 2006          143           22.619        30.17         14.57         14.224 \r\n 2006          144           28.089        29.24         15.72         0.508 \r\n 2006          145           24.965        26.88         16            0 \r\n 2006          146           20.331        27.49         13.79         0 \r\n 2006          147           16.589        30.54         17.59         26.67 \r\n 2006          148           24.793        31.59         21.03         0 \r\n 2006          149           17.412        29.09         21.3          0 \r\n 2006          150           22.531        27.05         16.28         19.304 \r\n 2006          151           26.247        28.04         17.03         0 \r\n 2006          152           22.236        27.64         16.82         0 \r\n 2006          153           24.01         29.98         13.45         0 \r\n 2006          154           28.299        29.65         16.5          0 \r\n 2006          155           22.287        27.65         18.24         0 \r\n 2006          156           19.155        25.46         15.98         0 \r\n 2006          157           28.507        31.09         17.54         0 \r\n 2006          158           25.111        31.91         16.61         0 \r\n 2006          159           12.481        29.18         19.09         0 \r\n 2006          160           27.408        34.36         19.97         1.016 \r\n 2006          161           19.549        25.62         12.72         0.762 \r\n 2006          162           18.717        20.45         11.7          0 \r\n 2006          163           24.118        24            12.85         0 \r\n 2006          164           28.528        27.97         12.82         0 \r\n 2006          165           25.986        29.98         15.28         0 \r\n 2006          166           12.812        28.59         19.37         0.762 \r\n 2006          167           26.699        32.6          20.82         0 \r\n 2006          168           22.512        26.94         18.12         3.048 \r\n 2006          169           27.02         29.98         17.59         6.858 \r\n 2006          170           29.012        29.54         16.01         2.54 \r\n 2006          171           19.899        31.48         18.42         1.27 \r\n 2006          172           26.083        29.1          19.63         0.508 \r\n 2006          173           21.581        27.52         17.52         0.762 \r\n 2006          174           29.528        29.32         16.14         0.508 \r\n 2006          175           14.121        26.04         16.15         0 \r\n 2006          176           24.456        24.02         14.12         0.508 \r\n 2006          177           27.226        26.97         11.77         0.508 \r\n 2006          178           25.598        27.72         14.87         0.508 \r\n 2006          179           27.43         28.15         11.96         0 \r\n 2006          180           27.987        31.54         16.23         0 \r\n 2006          181           13.536        28.61         18.66         0 \r\n 2006          182           21.837        33.89         20.31         0 \r\n 2006          183           15.122        28.58         20.16         3.302 \r\n 2006          184           20.758        29.93         18.83         0 \r\n 2006          185           28.231        26.59         14.74         0 \r\n 2006          186           29.062        25.75         12.09         0 \r\n 2006          187           28.215        27.18         12.7          0 \r\n 2006          188           27.678        28.43         14.71         0 \r\n 2006          189           10.287        24.99         16.51         1.778 \r\n 2006          190           28.175        30.84         17.19         0 \r\n 2006          191           4.409         22.6          19.63         37.338 \r\n 2006          192           15.495        27.68         19.8          5.334 \r\n 2006          193           20.963        28.19         18.27         2.794 \r\n 2006          194           20.862        32.79         18.57         1.524 \r\n 2006          195           28.104        32.11         17.2          0.254 \r\n 2006          196           28.719        33.06         19.62         0 \r\n 2006          197           28.709        34.4          20.23         0 \r\n 2006          198           26.355        32.66         19.77         0 \r\n 2006          199           27.744        31.44         15.62         0 \r\n 2006          200           26.682        35.24         22.51         0 \r\n 2006          201           24.725        29.91         20.32         0 \r\n 2006          202           20.526        25.76         16.08         14.732 \r\n 2006          203           28.265        27.87         14.47         0 \r\n 2006          204           27.511        29.34         16.4          0 \r\n 2006          205           25.547        30.6          18.08         0 \r\n 2006          206           14.768        30.16         19.89         0 \r\n 2006          207           26.725        31.73         20.91         1.778 \r\n 2006          208           18.001        30.04         19.21         9.144 \r\n 2006          209           27.057        31.46         19.48         0 \r\n 2006          210           26.42         33.42         22.13         0 \r\n 2006          211           26.733        34.09         22.1          0 \r\n 2006          212           26.724        34.76         23.63         0 \r\n 2006          213           21.247        32.4          21.78         17.78 \r\n 2006          214           12.028        27.65         20.54         0 \r\n 2006          215           27.601        28.25         17.29         0 \r\n 2006          216           27.256        28.64         15.35         0 \r\n 2006          217           22.841        31.4          18.2          3.048 \r\n 2006          218           13.461        30.92         20.81         2.032 \r\n 2006          219           11.656        25.2          16.95         8.636 \r\n 2006          220           9.132         24.16         18.31         28.194 \r\n 2006          221           20.981        31.94         20.57         0 \r\n 2006          222           20.453        30.5          21.38         0 \r\n 2006          223           18.308        28.03         19.82         3.81 \r\n 2006          224           22.741        27.84         19.12         0 \r\n 2006          225           5.516         25.47         20.79         7.62 \r\n 2006          226           26.437        26.72         15.47         0 \r\n 2006          227           25.12         27.48         14.6          0 \r\n 2006          228           17.295        27.18         15.62         4.572 \r\n 2006          229           15.162        28.89         18.18         17.526 \r\n 2006          230           11.723        27.55         19.7          27.178 \r\n 2006          231           11.745        24.65         15.88         0.254 \r\n 2006          232           22.327        25.99         13.82         0 \r\n 2006          233           20.927        27.94         15.56         0 \r\n 2006          234           23.688        28.76         17.14         0 \r\n 2006          235           23.533        30            17.56         0 \r\n 2006          236           22.178        31.13         19.25         0 \r\n 2006          237           10.081        24.15         19.16         0 \r\n 2006          238           14.097        25.01         16.37         0.254 \r\n 2006          239           6.768         22.51         15.4          15.494 \r\n 2006          240           4.208         20.28         15.88         7.874 \r\n 2006          241           19.038        25.37         14.44         0 \r\n 2006          242           22.045        26            12.11         0 \r\n 2006          243           23.264        25.73         14.08         0 \r\n 2006          244           16.781        24.76         13.96         0 \r\n 2006          245           6.24          16.77         11.96         5.334 \r\n 2006          246           18.488        22.82         9.87          14.478 \r\n 2006          247           19.65         22.04         11.38         0.254 \r\n 2006          248           21.796        25.86         11.7          0 \r\n 2006          249           21.825        27.26         13.52         0 \r\n 2006          250           19.698        26.96         13.93         0 \r\n 2006          251           21.134        28.35         12.89         0 \r\n 2006          252           10.347        21.89         13.33         5.08 \r\n 2006          253           2.773         18.72         16.25         28.956 \r\n 2006          254           4.256         17.29         13.17         0.254 \r\n 2006          255           15.695        21.37         11.56         0 \r\n 2006          256           21.463        24.7          9.5           0 \r\n 2006          257           20.604        27.35         12.72         0 \r\n 2006          258           18.812        27.38         13.27         0 \r\n 2006          259           19.212        31.34         18.26         51.308 \r\n 2006          260           18.946        20.22         9.73          2.286 \r\n 2006          261           13.494        15.35         6.562         0 \r\n 2006          262           18.385        15.73         4.883         0 \r\n 2006          263           19.258        18.72         2.764         0.508 \r\n 2006          264           1.823         14.17         11.57         27.178 \r\n 2006          265           13.991        22.21         11.65         0 \r\n 2006          266           7.062         16.06         9.71          0.254 \r\n 2006          267           18.307        19.5          8.38          0 \r\n 2006          268           19.386        23.74         6.486         0 \r\n 2006          269           18.954        26.4          8.09          0 \r\n 2006          270           11.552        18.5          8.13          0 \r\n 2006          271           16.393        14.69         4.205         0 \r\n 2006          272           16.546        23.22         6.476         0 \r\n 2006          273           16.069        25.53         10.42         0 \r\n 2006          274           17.125        31.49         10.53         0 \r\n 2006          275           15.025        30.5          18.45         0 \r\n 2006          276           15.468        31.86         16.27         0 \r\n 2006          277           6.975         20.35         12.71         0 \r\n 2006          278           17.222        20.22         10.54         0 \r\n 2006          279           15.616        21.16         8.15          0 \r\n 2006          280           16.086        26.52         11.24         0 \r\n 2006          281           10.599        21.12         12            0 \r\n 2006          282           6.357         14.08         7.59          0 \r\n 2006          283           2.572         8.99          6.939         7.366 \r\n 2006          284           8.808         7.21         -2.281         0.254 \r\n 2006          285           16.489        7.87         -3.576         0 \r\n 2006          286           16.863        11.25        -3.961         0 \r\n 2006          287           16.532        12.78        -4.316         0 \r\n 2006          288           4.416         11.78         4.414         5.08 \r\n 2006          289           2.476         12.71         10.75         3.81 \r\n 2006          290           4.04          15.23         6.208         0.254 \r\n 2006          291           3.961         6.294         1.758         8.89 \r\n 2006          292           13.55         8.84         -0.235         0 \r\n 2006          293           4.083         13.82        -0.548         1.27 \r\n 2006          294           2.256         7.8          -3.119         3.302 \r\n 2006          295           5.64          4.939        -3.339         0 \r\n 2006          296           14.735        6.766        -5.609         0 \r\n 2006          297           13.664        10.71        -4.565         0 \r\n 2006          298           6.978         11.01        -0.122         0 \r\n 2006          299           2.6           6.892         4.941         4.318 \r\n 2006          300           11.372        13.98         3.658         0 \r\n 2006          301           11.908        15.49         0.232         0 \r\n 2006          302           13.761        23.11         0.505         0 \r\n 2006          303           11.587        20.32        -0.967         0 \r\n 2006          304           13.189        3.614        -5.086         0 \r\n 2006          305           12.516        6.322        -5.775         0 \r\n 2006          306           13.207        5.008        -7.01          0 \r\n 2006          307           11.31         12.44        -6.603         0 \r\n 2006          308           11.869        14.99         3.565         0 \r\n 2006          309           12.102        17.24         0.827         0 \r\n 2006          310           5.143         15.8          4.814         0 \r\n 2006          311           10.085        19.63         1.378         0 \r\n 2006          312           11.678        25.74         5.689         0 \r\n 2006          313           11.556        14.82         5.035         0 \r\n 2006          314           2.008         5.286        -1.985         0 \r\n 2006          315           11.835        5.785        -7.56          0 \r\n 2006          316           4.763         10.58        -0.539         3.124 \r\n 2006          317           10.942        10.35         0.059         0 \r\n 2006          318           9.856         10.08         0.297         0 \r\n 2006          319           4.229         3.975        -0.272         0 \r\n 2006          320           9.066         4.816        -2.031         0 \r\n 2006          321           10.403        7.83         -3.062         0 \r\n 2006          322           10.823        5.972        -4.576         0 \r\n 2006          323           7.841         7.4          -6.263         0 \r\n 2006          324           9.629         10.02        -6.821         0 \r\n 2006          325           9.924         13.92         2.623         0 \r\n 2006          326           8.802         16.16         1.065         0 \r\n 2006          327           8.559         17.4          0.107         0 \r\n 2006          328           8.78          14.46         1.188         0 \r\n 2006          329           5.668         12.86         0.94          0 \r\n 2006          330           3.083         15.06         3.212         0 \r\n 2006          331           1.297         7.61          1.634         0 \r\n 2006          332           5.257         18.49        -0.824         3.56 \r\n 2006          333           6.044        -0.833        -9.32          2.03 \r\n 2006          334           5.949        -7.37         -13.55         0 \r\n 2006          335           8.61         -1.041        -14.6          0 \r\n 2006          336           9.718        -4.383        -12.54         0 \r\n 2006          337           9.702        -7.51         -14.65         0 \r\n 2006          338           9.382         4.835        -8.88          0 \r\n 2006          339           8.294         12.95        -6.145         0 \r\n 2006          340           5.747         7.16         -12.62         0 \r\n 2006          341           9.762        -8.05         -17.15         0 \r\n 2006          342           8.943         2.956        -13.48         0 \r\n 2006          343           9.322         11.12        -3.932         0 \r\n 2006          344           8.965         10.35         0.702         0 \r\n 2006          345           1.349         8.76         -1.128         0 \r\n 2006          346           1.351         6.602        -3.838         9.14 \r\n 2006          347           8.854         11.46        -3.541         0 \r\n 2006          348           6.544         12.99         2.367         0 \r\n 2006          349           6.476         7.19         -2.89          0 \r\n 2006          350           2.948         10.36         2.063         0 \r\n 2006          351           5.207         4.158        -3.48          0 \r\n 2006          352           8.24          4.215        -5.678         0 \r\n 2006          353           8.513         5.516        -7.46          0 \r\n 2006          354           0.689         2.23         -0.292         0 \r\n 2006          355           4.491         8.8           1.617         24.38 \r\n 2006          356           1.764         2.451        -1.013         9.4 \r\n 2006          357           6.769         4.119        -3.682         0 \r\n 2006          358           8.383         6.603        -5.173         0 \r\n 2006          359           8.814         2.187        -6.487         0 \r\n 2006          360           8.716         6.16         -8.27          0 \r\n 2006          361           5.121         6.681        -2.515         0 \r\n 2006          362           4.052         6.726         0.155         0 \r\n 2006          363           1.756         10.98         5.259         0 \r\n 2006          364           0.992         10.39         8.01          4.57 \r\n 2006          365           1.887         10.12        -4.972         28.96 \r\n 2007          1             9.051        -2.201        -8.31          14.48 \r\n 2007          2             9.286         1.843        -9.84          0 \r\n 2007          3             9.236         6.324        -2.649         0 \r\n 2007          4             5.386         9.42         -1.489         0 \r\n 2007          5             3.067         4.081        -0.395         0 \r\n 2007          6             9.616         5.208        -4.555         0 \r\n 2007          7             5.083         2.45         -4.259         0 \r\n 2007          8             9.536         9.26         -4.961         0 \r\n 2007          9             9.575         1.387        -6.008         0 \r\n 2007          10            9.555         11.57        -6.741         0 \r\n 2007          11            2.975         9.52         -8.41          0 \r\n 2007          12            4.876        -8.33         -14.22         0 \r\n 2007          13            2.384        -10.88        -16.31         0.25 \r\n 2007          14            1.608        -7.87         -11.02         0.51 \r\n 2007          15            10.261       -10.2         -22.33         5.59 \r\n 2007          16            11.061       -12.88        -24.47         0 \r\n 2007          17            9.443        -5.715        -18.5          0 \r\n 2007          18            8.62         -1.469        -9.18          0 \r\n 2007          19            10.812       -0.72         -11.13         0 \r\n 2007          20            6.729        -1.383        -12.4          0 \r\n 2007          21            7.515        -2.66         -5.677         5.86 \r\n 2007          22            6.737        -5.191        -12.45         0.51 \r\n 2007          23            7.511        -0.253        -12.96         0 \r\n 2007          24            6.186         0.156        -7.97          0 \r\n 2007          25            8.12         -2.373        -13.93         0 \r\n 2007          26            11.645        4.568        -4.286         0 \r\n 2007          27            11.691       -4.256        -15.86         0 \r\n 2007          28            11.84        -10.4         -20.33         0 \r\n 2007          29            9.124        -2.022        -16.64         0 \r\n 2007          30            12.486       -13.55        -19.3          0 \r\n 2007          31            6.898        -5.241        -19.86         0 \r\n 2007          32            12.659       -6.416        -17.41         0 \r\n 2007          33            13.146       -9.8          -21.03         0 \r\n 2007          34            13.321       -14.21        -21.56         0 \r\n 2007          35            12.981       -13.96        -20.9          0 \r\n 2007          36            8.608        -12.19        -16.71         0 \r\n 2007          37            10.963       -4.795        -13.58         0.25 \r\n 2007          38            6.414        -10.95        -14.64         0 \r\n 2007          39            7.216        -9.05         -11.96         0 \r\n 2007          40            11.094       -10.02        -16.14         2.29 \r\n 2007          41            11.959       -8.33         -19.36         0 \r\n 2007          42            9.485         0.516        -8.33          0 \r\n 2007          43            3.738         0.136        -6.653         0.25 \r\n 2007          44            11.072       -6.652        -17.97         4.06 \r\n 2007          45            14.166       -13.04        -22.48         2.03 \r\n 2007          46            15.697       -14.51        -20.75         0 \r\n 2007          47            9.704        -0.158        -20.15         0 \r\n 2007          48            7.798        -0.356        -7.778         0.76 \r\n 2007          49            14.419        3.888        -10.62         0 \r\n 2007          50            12.656        5.487         0.307         0 \r\n 2007          51            14.939        8.17         -0.386         0.25 \r\n 2007          52            15.326        10.84        -1.344         0 \r\n 2007          53            15.513        6.331        -3.691         0 \r\n 2007          54            12.274        8.02         -1.278         0 \r\n 2007          55            0.992         5.533        -1.251         5.59 \r\n 2007          56            11.776       -1.242        -5.424         17.27 \r\n 2007          57            15.143       -1.868        -5.56          0 \r\n 2007          58            16.432       -0.237        -5.638         0 \r\n 2007          59            3.009         1.216        -2.353         0 \r\n 2007          60            6.411         0.012        -5.193         2.79 \r\n 2007          61            13.428       -4.459        -9.69          36.32 \r\n 2007          62            18.256       -7.87         -13.3          3.05 \r\n 2007          63            18.32         2.775        -14.98         0 \r\n 2007          64            17.014        1.094        -10            0 \r\n 2007          65            16.178        4.359        -11.1          0 \r\n 2007          66            6.472        -1.611        -4.247         0 \r\n 2007          67            18.166        6.999        -5.686         0 \r\n 2007          68            12.899        8.92          0.638         0 \r\n 2007          69            16.751        11.15        -2.248         0.51 \r\n 2007          70            16.945        14.86         1.682         0 \r\n 2007          71            13.706        19.62         3.603         0 \r\n 2007          72            18.671        23.54         7.15          0 \r\n 2007          73            11.785        12.74         0.039         0 \r\n 2007          74            12.068        9.23         -2.039         0 \r\n 2007          75            16.28         6.478        -3.911         0 \r\n 2007          76            13.665        6.209        -1.993         1.02 \r\n 2007          77            15.517        12.97        -2.726         0 \r\n 2007          78            19.907        14.35         1.17          0 \r\n 2007          79            7.386         10.5         -1.545         0 \r\n 2007          80            7.317         22.26         6.94          3.3 \r\n 2007          81            14.472        15.79         1.994         0.25 \r\n 2007          82            19.662        21.43         6.207         0 \r\n 2007          83            6.489         22.24         13.33         0 \r\n 2007          84            20.733        25.69         14.1          18.54 \r\n 2007          85            16.242        25.85         14.15         0 \r\n 2007          86            7.325         17.9          10.22         0 \r\n 2007          87            13.234        21.65         13.34         0 \r\n 2007          88            5.866         19.72         13.57         3.302 \r\n 2007          89            13.79         22.97         14.16         12.446 \r\n 2007          90            12.499        20.25         4.863         15.748 \r\n 2007          91            15.824        17.01         3.64          2.794 \r\n 2007          92            20.261        19.1          4.71          0 \r\n 2007          93            13.745        10.69        -5.435         1.524 \r\n 2007          94            22.37         3.279        -6.899         0 \r\n 2007          95            21.898        4.215        -7.1           0 \r\n 2007          96            21.224        0.392        -8.17          0 \r\n 2007          97            24.506        2.09         -9.69          0 \r\n 2007          98            24.809        5.148        -9.75          0 \r\n 2007          99            20.031        9.93         -6.673         0 \r\n 2007          100           3.045         8.44          1.236         0 \r\n 2007          101           6.848         2.271        -0.282         14.5 \r\n 2007          102           15.044        7.65         -1.508         0 \r\n 2007          103           16.506        9.93         -1.498         0 \r\n 2007          104           20.339        12.99         1.823         0 \r\n 2007          105           25.68         19.18         0.61          0 \r\n 2007          106           25.562        23.88         3.154         0 \r\n 2007          107           18.162        22.16         6.803         0 \r\n 2007          108           25.714        19.53         4.689         0 \r\n 2007          109           25.515        18.06         4.65          0 \r\n 2007          110           24.483        24.8          7.68          0 \r\n 2007          111           25.074        26.38         11.1          0 \r\n 2007          112           10.925        21.59         12.15         3.556 \r\n 2007          113           25.82         20.96         9.27          0.762 \r\n 2007          114           2.512         12.81         9.34          94.234 \r\n 2007          115           3.998         10.51         6.458         13.208 \r\n 2007          116           11.362        14            5.435         0 \r\n 2007          117           17.285        20.18         4.984         0 \r\n 2007          118           26.915        25.16         9.22          0 \r\n 2007          119           26.299        30.86         10.39         0 \r\n 2007          120           25.867        30.03         14.38         0 \r\n 2007          121           23.159        25.77         10.44         0 \r\n 2007          122           22.031        21.98         7.34          0 \r\n 2007          123           4.788         15.63         12.49         7.62 \r\n 2007          124           15.711        24.03         14.49         16.51 \r\n 2007          125           13.704        25.95         16.94         9.398 \r\n 2007          126           6.91          20.07         15.44         111.506 \r\n 2007          127           9.689         20.98         12.97         6.604 \r\n 2007          128           26.555        23.62         12.13         0 \r\n 2007          129           24.182        25.3          13.22         0 \r\n 2007          130           25.715        28.04         13.19         0 \r\n 2007          131           27.909        29.18         13.96         0 \r\n 2007          132           25.575        31.07         14.05         0 \r\n 2007          133           25.917        30.23         17.12         0 \r\n 2007          134           25.005        30.71         17.68         0 \r\n 2007          135           13.788        18.1          9.49          9.906 \r\n 2007          136           22.653        21.85         6.899         0 \r\n 2007          137           29.608        19.99         6.206         0 \r\n 2007          138           27.884        24.13         9.26          0 \r\n 2007          139           27.944        26.25         13.06         0 \r\n 2007          140           24.047        27.19         14.54         0 \r\n 2007          141           24.977        28.3          15.77         0 \r\n 2007          142           12.358        26.78         17.99         0 \r\n 2007          143           7.572         25.03         16.64         11.684 \r\n 2007          144           15.73         17.94         10.1          44.958 \r\n 2007          145           27.963        20.77         7.95          0 \r\n 2007          146           12.548        21.92         11.47         6.35 \r\n 2007          147           22.253        22.63         8.15          0 \r\n 2007          148           18.024        26.2          15.79         7.874 \r\n 2007          149           18.514        26.48         17.32         0 \r\n 2007          150           13.132        23.05         13.68         4.318 \r\n 2007          151           21.877        25.05         11.4          13.462 \r\n 2007          152           15.749        23.57         14.71         0.254 \r\n 2007          153           23.463        22.11         13.17         0.762 \r\n 2007          154           19.445        24.7          13.61         0 \r\n 2007          155           25.15         26.83         13.87         3.81 \r\n 2007          156           30.132        23.96         11.12         0 \r\n 2007          157           23.79         30.5          14.86         0 \r\n 2007          158           28.197        28.87         13.74         0 \r\n 2007          159           29.893        22.22         11.02         0 \r\n 2007          160           29.493        26.98         10.32         0 \r\n 2007          161           21.102        28.45         16.06         4.572 \r\n 2007          162           21.025        28.46         17.82         0 \r\n 2007          163           23.482        28.8          18.53         0 \r\n 2007          164           21.24         28.47         19.23         0 \r\n 2007          165           28.703        29.92         17.13         0 \r\n 2007          166           27.794        31.43         18.33         0 \r\n 2007          167           25.276        32.01         19.46         0 \r\n 2007          168           25.041        30.17         19.12         0 \r\n 2007          169           16.273        26.99         18.63         0 \r\n 2007          170           18.325        26.17         13.24         0 \r\n 2007          171           27.384        29.98         13.92         0 \r\n 2007          172           21.171        31.41         20.29         2.286 \r\n 2007          173           17.683        30.46         15.67         28.448 \r\n 2007          174           12.707        24.87         18.26         0 \r\n 2007          175           23.283        26.81         17.9          0 \r\n 2007          176           26.576        30.85         17.7          0 \r\n 2007          177           27.11         30.64         20.84         0 \r\n 2007          178           20.277        27.61         18.57         0 \r\n 2007          179           22.756        23.58         15.09         0 \r\n 2007          180           21.982        24.65         14.37         0 \r\n 2007          181           29.407        24.87         12.92         0 \r\n 2007          182           26.065        27.12         13.78         0 \r\n 2007          183           26.443        28.34         15.88         0 \r\n 2007          184           24.912        30.71         18.87         0 \r\n 2007          185           27.645        31.01         21.33         0 \r\n 2007          186           29.588        31.63         18.9          0 \r\n 2007          187           27.768        32.09         19.13         0 \r\n 2007          188           28.491        33.65         20.98         0 \r\n 2007          189           29.467        32.79         20.67         0 \r\n 2007          190           22.989        29.36         21.32         0 \r\n 2007          191           27.434        27.39         15.23         0 \r\n 2007          192           28.484        26.06         12.49         0 \r\n 2007          193           15.938        27.72         15.82         11.684 \r\n 2007          194           29.46         26.04         12.54         0 \r\n 2007          195           27.716        31.14         16.63         0 \r\n 2007          196           26.403        30.17         16.22         0 \r\n 2007          197           27.553        32.27         19.77         4.064 \r\n 2007          198           27.064        33.91         21.37         0 \r\n 2007          199           19.033        32.61         22.14         0 \r\n 2007          200           22.465        28.87         18            32.512 \r\n 2007          201           27.532        27.61         15.61         0 \r\n 2007          202           25.073        27.03         17.92         0 \r\n 2007          203           26.442        30.67         17.87         0 \r\n 2007          204           16.977        28.48         18.64         0.508 \r\n 2007          205           23.691        29.3          18.99         0 \r\n 2007          206           22.966        30.33         19.88         0 \r\n 2007          207           24.946        31.82         19.07         2.032 \r\n 2007          208           23.63         29.29         20.61         8.382 \r\n 2007          209           20.582        29.6          19.24         0 \r\n 2007          210           22.463        28.26         19.77         0 \r\n 2007          211           25.148        29.15         19.64         0 \r\n 2007          212           25.339        29.67         17.87         0 \r\n 2007          213           17.717        29            18.47         0 \r\n 2007          214           22.127        30.92         18.22         0 \r\n 2007          215           23.92         29.8          15.29         0 \r\n 2007          216           23.125        32.91         20.51         0.254 \r\n 2007          217           19.643        31.89         22.66         0 \r\n 2007          218           11.048        30.35         20.46         62.738 \r\n 2007          219           13.739        30.64         20.32         16.002 \r\n 2007          220           6.844         25.68         21.13         10.668 \r\n 2007          221           23.171        32.08         21.52         0.254 \r\n 2007          222           25.493        31.53         18.68         2.286 \r\n 2007          223           24.057        32.85         22.93         0 \r\n 2007          224           19.58         31.75         20.08         29.21 \r\n 2007          225           22.629        31.23         19.55         0 \r\n 2007          226           21.971        32.9          23.15         0 \r\n 2007          227           12.228        29.64         23.35         0 \r\n 2007          228           17.02         28.12         20.21         9.144 \r\n 2007          229           19.747        26.72         16.78         0 \r\n 2007          230           22.589        30.71         19.61         0 \r\n 2007          231           19.364        30.2          22.14         0 \r\n 2007          232           17.406        28.96         20.08         3.81 \r\n 2007          233           23.537        31.48         20.51         0 \r\n 2007          234           9.757         28.27         18.6          46.228 \r\n 2007          235           11.97         28.3          18.05         30.734 \r\n 2007          236           11.715        24.31         16.75         3.048 \r\n 2007          237           24.752        26.11         13.93         0 \r\n 2007          238           21.835        27.53         16.74         0 \r\n 2007          239           23.329        32.05         21.49         0 \r\n 2007          240           21.431        32.05         19.14         36.83 \r\n 2007          241           12.352        24.67         14.85         0.508 \r\n 2007          242           23.53         25.55         11.98         0 \r\n 2007          243           23.555        26.36         13.46         0 \r\n 2007          244           23.621        26.54         14.93         0 \r\n 2007          245           23.026        29.11         13.94         0 \r\n 2007          246           22.482        30            16.26         0 \r\n 2007          247           21.514        30.3          16.45         0 \r\n 2007          248           15.663        28.44         19.13         0 \r\n 2007          249           12.917        28.43         19.69         40.894 \r\n 2007          250           17.565        24.76         15.42         0 \r\n 2007          251           22.106        27.09         13.28         0 \r\n 2007          252           14.638        20.83         13.38         0 \r\n 2007          253           4.103         15.67         8.67          8.89 \r\n 2007          254           22.03         21.55         7.93          0 \r\n 2007          255           21.474        22.39         5.823         0 \r\n 2007          256           18.97         25.86         8.05          0 \r\n 2007          257           21.872        15.92         4.709         0 \r\n 2007          258           10.678        14.28         1.853         0 \r\n 2007          259           14.644        23.86         7.72          0 \r\n 2007          260           18.223        30.2          18.64         0 \r\n 2007          261           5.996         23.56         14.47         41.402 \r\n 2007          262           15.337        24.61         13.5          0 \r\n 2007          263           15.662        29.75         14.85         0 \r\n 2007          264           15.532        30.84         12.14         0 \r\n 2007          265           20.482        24.74         7.79          0 \r\n 2007          266           17.944        29.63         14.34         0 \r\n 2007          267           13.203        29.35         16.07         1.778 \r\n 2007          268           9.503         17.66         9.52          20.32 \r\n 2007          269           18.909        21.9          5.717         0 \r\n 2007          270           18.788        25.82         10.82         0 \r\n 2007          271           18.534        24.88         7.85          0 \r\n 2007          272           14.902        27.3          17.26         0 \r\n 2007          273           9.232         27.9          14.19         0 \r\n 2007          274           18.088        25.28         10.37         0 \r\n 2007          275           5.838         22.69         11.33         23.876 \r\n 2007          276           17.989        23.55         7.55          0 \r\n 2007          277           10.826        27.29         11.93         0 \r\n 2007          278           13.48         29.26         19.16         11.43 \r\n 2007          279           13.246        29.65         20.29         0 \r\n 2007          280           7.973         28.21         14.04         12.7 \r\n 2007          281           15.769        23.29         9.79          12.954 \r\n 2007          282           16.631        22.39         8.17          0 \r\n 2007          283           13.462        13.89         3.621         0 \r\n 2007          284           14.939        14.92         1.986         0 \r\n 2007          285           13.415        21.05         7.3           6.35 \r\n 2007          286           2.818         15.48         11.5          10.16 \r\n 2007          287           0.53          15            12.3          116.815 \r\n 2007          288           3.935         17.98         10.43         8.382 \r\n 2007          289           5.052         14.13         9.01          0 \r\n 2007          290           3.462         17.23         11.57         2.286 \r\n 2007          291           2.669         15.02         10.96         7.112 \r\n 2007          292           15.019        16.9          8.17          0 \r\n 2007          293           14.789        26.23         6.322         0 \r\n 2007          294           5.883         18.9          9.71          0 \r\n 2007          295           6.094         14.17         4.164         0 \r\n 2007          296           14.215        19.99         0.258         0 \r\n 2007          297           14.308        13.99         2.631         0 \r\n 2007          298           14.221        15.39        -0.329         0 \r\n 2007          299           5.197         13.15         2.954         0.762 \r\n 2007          300           13.449        13.86         3.689         0 \r\n 2007          301           13.46         15.58        -0.369         0 \r\n 2007          302           13.003        20.43         3.448         0 \r\n 2007          303           10.092        22.17         8.09          0 \r\n 2007          304           12.49         12.88         1.673         0 \r\n 2007          305           13.05         13.69        -1.11          0 \r\n 2007          306           12.217        14.88         1.861         0 \r\n 2007          307           8.537         13.17        -1.292         0 \r\n 2007          308           11.1          18.35         0.875         0 \r\n 2007          309           12.097        10.2         -2.031         0 \r\n 2007          310           12.208        5.477        -5.473         0 \r\n 2007          311           9.306         10.59        -6.438         0 \r\n 2007          312           8.349         10.64        -1.443         0 \r\n 2007          313           11.055        12.58        -3.338         0 \r\n 2007          314           6.436         13.84         0.306         0 \r\n 2007          315           3.283         19.02         7.68          0 \r\n 2007          316           8.938         14.04         1.739         0 \r\n 2007          317           8.202         16.73        -3.023         0 \r\n 2007          318           10.093        10.62         0.293         0 \r\n 2007          319           10.664        7.83         -3.682         0 \r\n 2007          320           10.617        13.06        -0.319         0 \r\n 2007          321           8.974         14.6          2.395         0 \r\n 2007          322           5.973         9.87          2.176         2.54 \r\n 2007          323           10.311        21.33         2.386         0 \r\n 2007          324           0.869         5.676         0.23          0 \r\n 2007          325           2.645         0.333        -8.38          0 \r\n 2007          326           3.621        -4.393        -10.74         0 \r\n 2007          327           9.136        -1.488        -12.71         0 \r\n 2007          328           3.323        -0.102        -4.623         0 \r\n 2007          329           10.007        6.079        -4.989         0 \r\n 2007          330           8.999         6.108        -4.413         0 \r\n 2007          331           6.73          1.368        -7.77          0 \r\n 2007          332           6.63          3.678        -7.59          0 \r\n 2007          333           7.646         6.958        -8.15          0 \r\n 2007          334           7.292        -0.634        -10.43         0 \r\n 2007          335           0.382         10.62        -4.893         1.27 \r\n 2007          336           5.495         0.819        -8.67          26.42 \r\n 2007          337           8.24          4.626        -10.26         0 \r\n 2007          338           5.054         6.291        -4.489         0 \r\n 2007          339           7.758         4.072        -9.36          0 \r\n 2007          340           2.438        -3.443        -9.04          0 \r\n 2007          341           6.193        -3.128        -6.89          6.6 \r\n 2007          342           2.224        -6.654        -12.53         0 \r\n 2007          343           3.392        -10           -12.6          1.02 \r\n 2007          344           5.037        -3.357        -11.78         0 \r\n 2007          345           3.384        -2.374        -5.911         9.4 \r\n 2007          346           5.147        -4.153        -7.57          2.54 \r\n 2007          347           10.28         1.456        -6.145         0 \r\n 2007          348           6.741        -5.423        -12.04         0 \r\n 2007          349           5.986        -8.32         -14.24         4.57 \r\n 2007          350           10.205       -5.327        -17.47         0.51 \r\n 2007          351           8.282         0.239        -15.6          0 \r\n 2007          352           9.047         0.278        -6.174         0 \r\n 2007          353           6.799         1.027        -10.36         0 \r\n 2007          354           8.619         2.871        -6.233         0 \r\n 2007          355           4.564         2.823        -5.677         0 \r\n 2007          356           2.245         1.512        -11.43         0 \r\n 2007          357           8.114        -5.619        -12.95         0 \r\n 2007          358           8.711        -2.248        -10.17         0 \r\n 2007          359           8.443         4.163        -4.864         0 \r\n 2007          360           5.397        -0.806        -7.93          0 \r\n 2007          361           3.443        -5.231        -9.34          0 \r\n 2007          362           5.65         -3.624        -9.11          0 \r\n 2007          363           8.338        -4.584        -13.46         0.25 \r\n 2007          364           7.441        -3.959        -10.77         0 \r\n 2007          365           7.417        -3.911        -11.26         0 \r\n 2008          1             8.309        -9.08         -15.21         0 \r\n 2008          2             9.311        -8.69         -17.92         0 \r\n 2008          3             9.169        -1.677        -14.85         0 \r\n 2008          4             6.122         1.036        -3.969         0 \r\n 2008          5             8.351         5.848        -2.706         0 \r\n 2008          6             5.711         5.371        -0.215         0 \r\n 2008          7             7.559         5.411        -0.699         0.51 \r\n 2008          8             5.177         2.091        -4.815         0 \r\n 2008          9             3.436         2.643        -5.833         0 \r\n 2008          10            2.04          0.364        -6.527         0 \r\n 2008          11            9.421         2.47         -10.47         0.25 \r\n 2008          12            3.25         -2.163        -8.02          0 \r\n 2008          13            6.235        -1.383        -11.26         0 \r\n 2008          14            9.821        -4.112        -14.3          0 \r\n 2008          15            9.038         0.592        -14.86         0 \r\n 2008          16            1.73         -0.404        -10.24         0 \r\n 2008          17            10.626       -10.25        -16.44         3 \r\n 2008          18            9.681        -8.59         -19.41         0 \r\n 2008          19            11.082       -14.71        -23.91         0.25 \r\n 2008          20            7.254        -10.01        -20.26         0 \r\n 2008          21            3.78         -6.712        -14.16         0 \r\n 2008          22            11.198       -8.68         -19.27         2.03 \r\n 2008          23            6.509        -8.05         -21.89         0 \r\n 2008          24            11.487       -11.76        -24.43         0 \r\n 2008          25            7.955        -1.943        -17.5          0 \r\n 2008          26            11.417        3.44         -9.86          0 \r\n 2008          27            10.455        6.909        -6.672         0 \r\n 2008          28            8.073         12.4          2.69          0 \r\n 2008          29            5.199         4.623        -16.43         0 \r\n 2008          30            5.131        -11.15        -17.11         0 \r\n 2008          31            9.365        -2.82         -12.76         0 \r\n 2008          32            5.792        -0.879        -9.32          0 \r\n 2008          33            10.26         0.165        -6.811         0 \r\n 2008          34            4.487         0.099        -8.5           0 \r\n 2008          35            4.115         1.531        -2.257         0.76 \r\n 2008          36            2.787        -0.67         -7.18          0 \r\n 2008          37            7.333        -5.571        -11.97         7.11 \r\n 2008          38            10.949       -3.651        -14.4          0 \r\n 2008          39            12.001        2.013        -10.27         0 \r\n 2008          40            11.467        1.027        -13.6          0 \r\n 2008          41            7.727        -13.54        -17.01         0 \r\n 2008          42            10.106       -11.14        -17.06         0 \r\n 2008          43            13.325       -9.39         -17.07         0 \r\n 2008          44            12.879        0.478        -17.03         0 \r\n 2008          45            3.724         1.274        -15.44         0 \r\n 2008          46            14.267       -5.308        -17.61         0 \r\n 2008          47            12.83         1.917        -12.22         0 \r\n 2008          48            6.035         1.132        -4.017         0 \r\n 2008          49            12.508       -3.893        -15.65         0.51 \r\n 2008          50            7.186        -3.241        -18.52         0 \r\n 2008          51            15.193       -12.83        -23.58         0 \r\n 2008          52            4.808        -9.1          -16.58         0 \r\n 2008          53            15.696       -0.653        -13.79         0 \r\n 2008          54            15.447        2.706        -10.53         0 \r\n 2008          55            10.643        7.06         -4.421         0 \r\n 2008          56            2.354         2.89         -7.19          0.51 \r\n 2008          57            13.076       -4.092        -9.82          7.87 \r\n 2008          58            14.659        0.455        -9.52          0 \r\n 2008          59            5.94          1.414        -4.056         0 \r\n 2008          60            17.077        5.84         -0.659         1 \r\n 2008          61            15.352        15.56        -1.012         0 \r\n 2008          62            8.018         17.54        -1.354         0 \r\n 2008          63            16.506       -1.373        -8.44          9.91 \r\n 2008          64            13.261       -0.444        -9.04          0 \r\n 2008          65            6.681        -0.861        -9.54          0 \r\n 2008          66            17.02         2.539        -10.49         0 \r\n 2008          67            17.956       -2.983        -15.77         0.25 \r\n 2008          68            15.415       -1.402        -16.42         0 \r\n 2008          69            12.48         2.241        -7.45          0 \r\n 2008          70            18.92         4.634        -10.8          0 \r\n 2008          71            18.027        16.79        -2.773         0 \r\n 2008          72            15.806        17.04         1.349         0 \r\n 2008          73            15.466        14.77         0.684         0 \r\n 2008          74            15.567        10.11        -0.294         0 \r\n 2008          75            5.918         0.522        -2.296         0 \r\n 2008          76            13.521        4.921        -5.257         0 \r\n 2008          77            2.447         3.497         1.15          0.25 \r\n 2008          78            13.345        9.84         -0.643         1.52 \r\n 2008          79            19.064        12.2         -2.258         0 \r\n 2008          80            15.91         15.32         1.073         0 \r\n 2008          81            7.955         7.64          1.075         0 \r\n 2008          82            9.841         6.219        -1.536         0 \r\n 2008          83            10.957        2.488        -4.267         0 \r\n 2008          84            18.209        13.17        -8.05          0 \r\n 2008          85            19.68         14.34         0.541         0 \r\n 2008          86            14.779        13.74        -0.596         0 \r\n 2008          87            3.021         6.073        -2.648         0 \r\n 2008          88            18.323        9.78         -3.662         1.52 \r\n 2008          89            16.23         11.99         0.173         0 \r\n 2008          90            6.789         11.48         4.605         0 \r\n 2008          91            2.577         6.65          0.164         13.21 \r\n 2008          92            11.42         5.919        -0.701         30 \r\n 2008          93            18.841        11.47        -2.106         0 \r\n 2008          94            3.367         3.934         0.485         22.352 \r\n 2008          95            18.714        14.88        -1.763         0 \r\n 2008          96            21.971        17.34         3.153         0 \r\n 2008          97            14.937        16.38        -0.329         0 \r\n 2008          98            15.495        11.82        -2.012         1.524 \r\n 2008          99            4.099         4.826        -0.928         2.54 \r\n 2008          100           15.401        9.61         -4.603         3.302 \r\n 2008          101           2.842         13.1          3.271         28.702 \r\n 2008          102           4.605         7.17         -0.245         2.54 \r\n 2008          103           7.206         2.28         -1.098         0.254 \r\n 2008          104           24.801        8.38         -2.63          0 \r\n 2008          105           25.389        12.44        -4.122         0 \r\n 2008          106           25.015        20.98         2.792         0 \r\n 2008          107           22.896        22.14         9.08          0 \r\n 2008          108           2.414         9.13          4.089         23.622 \r\n 2008          109           3.169         7.04          4.826         10.668 \r\n 2008          110           19.045        17.46         4.214         0 \r\n 2008          111           15.597        19.88         5.544         0 \r\n 2008          112           5.584         18.52         8.06          0 \r\n 2008          113           25.837        21.98         5.361         0.762 \r\n 2008          114           23.374        24.96         7.31          1.27 \r\n 2008          115           10.564        23.95         14.38         2.032 \r\n 2008          116           9.541         17.72         0.106         19.304 \r\n 2008          117           20.183        13.16        -0.463         1.524 \r\n 2008          118           25.373        12.51         0.495         0.254 \r\n 2008          119           25.864        10.3         -1.564         0 \r\n 2008          120           26.205        14.81        -1.346         0 \r\n 2008          121           20.474        23.79         4.549         0 \r\n 2008          122           17.631        29.01         11.35         0 \r\n 2008          123           5.423         12.58         4.701         6.604 \r\n 2008          124           27.757        14.41         2.147         0 \r\n 2008          125           26.883        21.35         1.522         0 \r\n 2008          126           26.403        26.44         8.83          0 \r\n 2008          127           23.159        25.82         11.14         2.794 \r\n 2008          128           14.228        18.58         8.1           0.254 \r\n 2008          129           26.199        20.15         5.405         0 \r\n 2008          130           14.742        17.52         8.17          29.972 \r\n 2008          131           7.357         15.7          4.721         13.462 \r\n 2008          132           28.514        15.73         1.967         0 \r\n 2008          133           27.447        21.59         4.553         0 \r\n 2008          134           7.436         18.51         6.312         0 \r\n 2008          135           27.246        19.34         3.383         0 \r\n 2008          136           27.516        22.1          6.437         0 \r\n 2008          137           27.86         24.46         9.14          0 \r\n 2008          138           27.294        27.9          11.47         0 \r\n 2008          139           27.926        22.73         8.14          0 \r\n 2008          140           25.351        27.52         12.95         0 \r\n 2008          141           28.012        20.75         8.58          0 \r\n 2008          142           26.349        22.56         7.09          0 \r\n 2008          143           9.814         16.23         11.42         5.334 \r\n 2008          144           6.693         14.14         10.57         23.622 \r\n 2008          145           16.477        23.61         9.58          23.114 \r\n 2008          146           21.303        30.48         16.93         10.668 \r\n 2008          147           17.932        24.62         14.69         0.508 \r\n 2008          148           6.005         16.25         9.2           6.35 \r\n 2008          149           9.282         14.91         7.01          7.62 \r\n 2008          150           12.653        26.66         14.75         5.842 \r\n 2008          151           24.783        26.7          15.88         37.084 \r\n 2008          152           25.416        27.73         14.45         0 \r\n 2008          153           28.478        29.44         16.6          0 \r\n 2008          154           19.75         27.67         18.53         0.508 \r\n 2008          155           18.922        27.84         17.26         36.576 \r\n 2008          156           10.026        24.67         15.85         35.306 \r\n 2008          157           11.347        26.5          16.84         19.304 \r\n 2008          158           26.085        24.67         17.08         0 \r\n 2008          159           22.36         30.73         17.54         0 \r\n 2008          160           6.582         26.53         17.98         46.736 \r\n 2008          161           26.762        25.86         14.17         3.556 \r\n 2008          162           27.577        28.18         12.58         0 \r\n 2008          163           15.487        28.28         16.16         110.998 \r\n 2008          164           23.479        26.31         15.12         2.032 \r\n 2008          165           28.871        24.94         14.79         0 \r\n 2008          166           29.106        29.32         14            0 \r\n 2008          167           20.942        28.1          16.09         10.414 \r\n 2008          168           28.977        24.05         13.34         0 \r\n 2008          169           28.002        26.21         12.2          0 \r\n 2008          170           25.333        28.34         15.81         0 \r\n 2008          171           15.348        28.38         17.04         1.016 \r\n 2008          172           23.902        29.26         15.09         0 \r\n 2008          173           25.871        28.99         15.57         2.032 \r\n 2008          174           29.276        27.33         15.13         0 \r\n 2008          175           25.008        27.27         13.53         0 \r\n 2008          176           5.824         22.75         17.25         1.778 \r\n 2008          177           20.636        30.35         16.68         0.254 \r\n 2008          178           9.045         24.05         17.28         17.272 \r\n 2008          179           22.797        29.16         16.32         18.288 \r\n 2008          180           21.492        22.62         13.48         0 \r\n 2008          181           27.516        26.2          16.05         0.508 \r\n 2008          182           29.626        27.4          14.01         0 \r\n 2008          183           27.936        28.93         14.58         0 \r\n 2008          184           19.855        31.95         18.35         0 \r\n 2008          185           23.798        25.46         13.96         0 \r\n 2008          186           21.961        26.06         15.76         0 \r\n 2008          187           24.169        26.73         15.47         0 \r\n 2008          188           7.968         29.21         19.96         0 \r\n 2008          189           22.701        33.06         19.04         35.052 \r\n 2008          190           15.456        28.52         20.04         3.048 \r\n 2008          191           21.119        28.31         17.33         0 \r\n 2008          192           25.425        30.34         20.45         0 \r\n 2008          193           26.886        31.7          21.55         3.302 \r\n 2008          194           19.837        23.7          15.18         1.016 \r\n 2008          195           29.33         27.11         13.77         0 \r\n 2008          196           28.113        30.35         16.73         0 \r\n 2008          197           23.195        31.87         20.65         5.08 \r\n 2008          198           16.427        28.77         19.67         0 \r\n 2008          199           20.84         30.15         19.72         1.778 \r\n 2008          200           16.29         26.46         19.11         0.254 \r\n 2008          201           21.048        30.5          18.96         0 \r\n 2008          202           20.751        31.65         19.4          0 \r\n 2008          203           21.882        29.81         18.97         0 \r\n 2008          204           26.932        28.51         18.64         0 \r\n 2008          205           23.159        27.35         17.78         1.016 \r\n 2008          206           10.411        25.45         18.62         41.402 \r\n 2008          207           11.691        28.02         20.74         0 \r\n 2008          208           17.714        26.97         19.01         0 \r\n 2008          209           25.942        30.68         18.82         0 \r\n 2008          210           25.337        29.5          19.88         0 \r\n 2008          211           11.767        26.37         18.49         0 \r\n 2008          212           24.527        30.06         17.43         0 \r\n 2008          213           23.029        29.96         19.3          0 \r\n 2008          214           24.794        29.27         19.32         0 \r\n 2008          215           24.517        29.29         17.62         0 \r\n 2008          216           25.796        34.5          21.71         0 \r\n 2008          217           19.107        32.88         22.75         0 \r\n 2008          218           14.172        26.1          18.59         0 \r\n 2008          219           17.438        27.84         16.1          0 \r\n 2008          220           24.911        29.34         14.76         0 \r\n 2008          221           23.817        29.14         16.17         0 \r\n 2008          222           25.167        28.14         17.55         0 \r\n 2008          223           23.842        27.57         16.84         0 \r\n 2008          224           16.796        25.6          16.06         0 \r\n 2008          225           19.883        27            17.24         0.762 \r\n 2008          226           23.388        30.27         14.87         0 \r\n 2008          227           18.707        27.706        16.993        0 \r\n 2008          228           22.163        25.98         14.76         0 \r\n 2008          229           24.437        26.31         12.48         0 \r\n 2008          230           20.81         27.06         13.42         0 \r\n 2008          231           22.465        28.21         15.21         0 \r\n 2008          232           20.76         28.35         15.4          0 \r\n 2008          233           18.26         27.84         14.07         0 \r\n 2008          234           6.651         23.24         18.11         0 \r\n 2008          235           21.044        31.79         18.8          4.064 \r\n 2008          236           23.127        26.81         13.86         0 \r\n 2008          237           22.632        25.15         12.37         0 \r\n 2008          238           23.766        25.75         12.37         0 \r\n 2008          239           23.166        25.19         12.67         0 \r\n 2008          240           11.889        27.33         16.56         26.416 \r\n 2008          241           20.682        29.1          14.02         0 \r\n 2008          242           23.799        27.59         12.18         0 \r\n 2008          243           23.132        28.37         13            0 \r\n 2008          244           21.287        29.14         15.42         0 \r\n 2008          245           21.254        30.53         18.12         0 \r\n 2008          246           12.142        23.88         13.73         0 \r\n 2008          247           18.684        19.83         9.41          0 \r\n 2008          248           19.782        21.96         11.13         0 \r\n 2008          249           7.96          19.31         10.47         0.254 \r\n 2008          250           8.551         17            7.01          1.524 \r\n 2008          251           10.523        18.82         7.61          0 \r\n 2008          252           8.74          15.58         7.73          13.462 \r\n 2008          253           21.639        20.3          3.46          0 \r\n 2008          254           17.382        24.7          12.52         0 \r\n 2008          255           7.969         24.8          19.08         23.114 \r\n 2008          256           2.174         19.18         17.41         26.416 \r\n 2008          257           13.339        24.94         14.89         0.254 \r\n 2008          258           7.128         15.65         7.89          0 \r\n 2008          259           21.075        21.55         5.803         0 \r\n 2008          260           20.822        26.54         9.66          0 \r\n 2008          261           20.173        27.94         11.94         0 \r\n 2008          262           19.613        25.79         12.03         0 \r\n 2008          263           18.322        25.12         11.95         0 \r\n 2008          264           18.3          26.38         12.61         0 \r\n 2008          265           18.544        24.19         13.59         0 \r\n 2008          266           12.108        27.1          15.74         1.524 \r\n 2008          267           13.511        27.53         16.19         19.05 \r\n 2008          268           12.341        25.65         15.01         0.254 \r\n 2008          269           17.145        26.66         15.18         0 \r\n 2008          270           18.212        27.75         14.98         0 \r\n 2008          271           16.722        26.62         13.74         0 \r\n 2008          272           14.374        25.71         11.1          14.732 \r\n 2008          273           15.646        20.72         8.69          5.588 \r\n 2008          274           18.177        20.76         6.283         0 \r\n 2008          275           18.214        18.19         6.543         0 \r\n 2008          276           17.827        20.39         4.692         0 \r\n 2008          277           17.341        23.9          5.812         0 \r\n 2008          278           15.47         22.91         8.16          0 \r\n 2008          279           13.632        27.3          14.93         0 \r\n 2008          280           9.429         24.11         15.97         7.366 \r\n 2008          281           9.182         17.48         7.55          4.318 \r\n 2008          282           16.702        23.2          3.623         0 \r\n 2008          283           16.734        20.58         5.735         0 \r\n 2008          284           16.4          23.74         11            0 \r\n 2008          285           14.284        26.26         13.21         0 \r\n 2008          286           10.662        25.49         17.75         0 \r\n 2008          287           2.618         19.82         6.081         14.224 \r\n 2008          288           4.633         12.48         4.472         17.78 \r\n 2008          289           10.455        14.49         2.432         10.414 \r\n 2008          290           15.4          15.33        -0.434         0 \r\n 2008          291           6.819         12.81         3.974         2.286 \r\n 2008          292           14.503        15.73         1.565         0 \r\n 2008          293           13.342        22.53         8.73          0 \r\n 2008          294           14.219        17.1          5.406         0 \r\n 2008          295           4.586         11.67         4.863         7.112 \r\n 2008          296           0.796         10.17         7.11          65.278 \r\n 2008          297           5.792         9             5.686         5.334 \r\n 2008          298           4.334         8.5           3.033         7.874 \r\n 2008          299           14.059        18.53         2.062         0 \r\n 2008          300           13.113        10.51        -1.127         0 \r\n 2008          301           13.764        5.091        -3.377         0 \r\n 2008          302           13.655        11.42        -4.798         0 \r\n 2008          303           13.308        18.81        -0.499         0 \r\n 2008          304           12.64         23.23         3.84          0 \r\n 2008          305           12.28         22.81         7.12          0 \r\n 2008          306           12.007        20.95         3.374         0 \r\n 2008          307           11.205        23.17         9.88          0 \r\n 2008          308           11.784        24.46         12.54         0 \r\n 2008          309           10.082        22.48         14.11         0 \r\n 2008          310           4.256         19.7          8.02          12.192 \r\n 2008          311           4.623         8.26          1.074         2.794 \r\n 2008          312           2.777         1.339        -1.042         0 \r\n 2008          313           3.379         0.305        -2.897         0 \r\n 2008          314           8.255         1.103        -5.378         0 \r\n 2008          315           4.632         1.394        -5.34          0 \r\n 2008          316           0.96          4.865         0.039         12.45 \r\n 2008          317           2.388         3.613         1.312         0 \r\n 2008          318           3.095         11.35         1.51          0 \r\n 2008          319           2.667         8.12          0.086         1.27 \r\n 2008          320           8.093         2.413        -4.182         1.78 \r\n 2008          321           9.328         8.19         -3.366         0 \r\n 2008          322           8.407         3.575        -5.903         0 \r\n 2008          323           7.971         3.243        -8.25          0 \r\n 2008          324           10.148        13.13        -2.342         0 \r\n 2008          325           9.048         0.344        -10.84         0 \r\n 2008          326           9.366        -2.001        -14.22         0 \r\n 2008          327           2.429         3.174        -6.243         0 \r\n 2008          328           7.005         10.63        -6.76          0 \r\n 2008          329           10.224        8.38         -3.719         0 \r\n 2008          330           9.861         6.304        -7.01          0 \r\n 2008          331           9.784         11.33        -3.853         0 \r\n 2008          332           7.409         7            -4.508         0 \r\n 2008          333           9.981         8            -5.329         0 \r\n 2008          334           2.319         1.558        -2.621         0 \r\n 2008          335           5.408        -0.89         -3.308         2.79 \r\n 2008          336           5.327        -2.687        -10.19         0.25 \r\n 2008          337           9.246         8.24         -9.76          0 \r\n 2008          338           8.11          0.989        -10.92         0 \r\n 2008          339           9.112        -6.781        -12.08         0 \r\n 2008          340           7.47          2.509        -13.96         0 \r\n 2008          341           9.059         2.68         -12.49         0 \r\n 2008          342           7.318         0.45         -10.82         0 \r\n 2008          343           3.034         5.621        -2.726         0 \r\n 2008          344           3.182        -2.344        -13.64         0.5 \r\n 2008          345           5.996        -1.356        -14.57         0 \r\n 2008          346           3.293         3.175        -6.615         0 \r\n 2008          347           8.643         4.908        -6.871         0 \r\n 2008          348           7.406         11.95        -0.311         0 \r\n 2008          349           2.835         10.63        -19.16         0 \r\n 2008          350           9.001        -15.1         -21.52         0 \r\n 2008          351           3.036        -13.23        -19.48         0 \r\n 2008          352           7.084        -7.42         -17.79         2.79 \r\n 2008          353           5.994        -2.23         -15.26         0 \r\n 2008          354           5.005        -2.325        -8.82          16.76 \r\n 2008          355           6.403        -6.458        -21.52         0 \r\n 2008          356           8.382        -18.83        -22.18         0.25 \r\n 2008          357           8.373        -8.93         -23.67         0 \r\n 2008          358           3.638        -0.433        -11.11         1.27 \r\n 2008          359           9.076        -11.06        -18.23         0.25 \r\n 2008          360           3.804         2.689        -17.6          0 \r\n 2008          361           5.981         14.56        -1.354         0 \r\n 2008          362           3.574        -1.667        -5.017         0 \r\n 2008          363           8.816         4.674        -8.03          0 \r\n 2008          364           8.883         6.263        -3.777         0 \r\n 2008          365           8.137         6.514        -11.02         0 \r\n 2008          366           9.347        -4.825        -16.03         0 \r\n 2009          1             4.777         2.273        -6.86          0 \r\n 2009          2             8.278         4.616        -5.821         0 \r\n 2009          3             0.868         1.804        -11.02         0 \r\n 2009          4             8.84         -7.42         -16.09         0.51 \r\n 2009          5             9.511         0.714        -14.22         0 \r\n 2009          6             8.156         2.924        -11.42         0 \r\n 2009          7             3.597        -3.03         -13.64         0 \r\n 2009          8             3.824        -2.115        -16.3          0 \r\n 2009          9             5.362         2.412        -8.84          0 \r\n 2009          10            9.541        -6.948        -12.67         4.57 \r\n 2009          11            5.275        -1.277        -7.71          0 \r\n 2009          12            5.439         1.427        -18.56         2.03 \r\n 2009          13            7.786        -1.725        -23.18         2.03 \r\n 2009          14            9.83         -0.311        -25.83         0 \r\n 2009          15            11.408       -18.54        -28.86         0 \r\n 2009          16            6.878        -8.93         -25.37         0 \r\n 2009          17            3.701         0.837        -9.16          0 \r\n 2009          18            9.679         3.241        -5.56          0 \r\n 2009          19            5.267        -2.918        -12.09         0 \r\n 2009          20            9.458        -2.497        -7.77          0 \r\n 2009          21            10.702        4.531        -8.14          0 \r\n 2009          22            10.818        9.02         -4.75          0 \r\n 2009          23            4.867         1.891        -16.58         0 \r\n 2009          24            10.115       -9.78         -19.6          0 \r\n 2009          25            8.526        -11.82        -15.69         2.54 \r\n 2009          26            7.899        -11.09        -18.16         0 \r\n 2009          27            6.664        -10.64        -18.55         0.25 \r\n 2009          28            11.029       -3.461        -21.33         0 \r\n 2009          29            9.995        -1.278        -9.4           0 \r\n 2009          30            5.921        -0.918        -11.27         0 \r\n 2009          31            11.716        11.72        -4.854         0 \r\n 2009          32            10.444        4.616        -4.441         0 \r\n 2009          33            10.98         1.692        -16.97         0 \r\n 2009          34            12.577       -8.21         -18.67         0 \r\n 2009          35            11.604       -2.24         -17.36         0 \r\n 2009          36            12.888        10.49        -7.09          0 \r\n 2009          37            10.35         15.8         -1.164         0 \r\n 2009          38            12.613        13.7         -3.874         0 \r\n 2009          39            9.788         6.363        -5.221         0 \r\n 2009          40            7.121         15.09         3.851         0.25 \r\n 2009          41            13.48         15.74         3.222         3.05 \r\n 2009          42            6.849         5.332        -0.967         0 \r\n 2009          43            13.525        7.86         -3.155         0 \r\n 2009          44            4.322        -0.397        -10.66         0 \r\n 2009          45            12.288       -3.25         -14.61         9.14 \r\n 2009          46            14.475       -0.434        -9.59          0 \r\n 2009          47            14.708        1.32         -11.46         0 \r\n 2009          48            6.469         5.707        -3.194         0 \r\n 2009          49            7.82          2.5          -10.25         0 \r\n 2009          50            15.135       -2.404        -13.84         0 \r\n 2009          51            8.407         4.071        -8.45          0 \r\n 2009          52            13.029       -3.518        -11.9          0 \r\n 2009          53            15.371       -0.824        -14.47         0 \r\n 2009          54            14.271        3.214        -11.6          0 \r\n 2009          55            14.706        12.9         -1.815         0 \r\n 2009          56            14.232        14.48        -0.008         0 \r\n 2009          57            2.615         4.777        -8.62          0 \r\n 2009          58            7.515        -4.498        -9.96          5.59 \r\n 2009          59            15.816       -7.36         -14.71         7.37 \r\n 2009          60            16.907       -7.02         -17.76         0.76 \r\n 2009          61            15.91        -2.593        -11.78         0 \r\n 2009          62            15.258        1.909        -7.76          0 \r\n 2009          63            17.03         8.53         -4.268         0 \r\n 2009          64            17.309        21            3.166         0 \r\n 2009          65            15.904        13.98         0.505         0 \r\n 2009          66            1.433         6.198        -0.131         16.76 \r\n 2009          67            3.328         1.968         0.22          6.6 \r\n 2009          68            5.25          6.014        -0.339         0 \r\n 2009          69            3.32          3.249        -11.94         6.86 \r\n 2009          70            18.6         -6.055        -14.46         0 \r\n 2009          71            18.049        0.108        -12.98         0 \r\n 2009          72            15.981        6.667        -3.051         0 \r\n 2009          73            19.513        10.66        -4.188         0 \r\n 2009          74            16.786        14.09        -0.548         0 \r\n 2009          75            19.303        22.21         2.28          0 \r\n 2009          76            19.035        20.66         4.204         0 \r\n 2009          77            10.331        14.14         0.702         0 \r\n 2009          78            19.269        14.07        -1.622         0 \r\n 2009          79            7.702         13.79         1.644         0 \r\n 2009          80            19.29         20.5          3.257         0 \r\n 2009          81            11.475        20.74         7.46          0.508 \r\n 2009          82            3.593         18.75         10.29         8.89 \r\n 2009          83            15.445        10.69        -0.324         7.112 \r\n 2009          84            20.818        11.72        -0.722         0 \r\n 2009          85            16.259        8.69         -3.374         0 \r\n 2009          86            19.213        2.354        -6.065         0 \r\n 2009          87            14.038        6.233        -3.889         0 \r\n 2009          88            22.276        10.9         -6.464         0 \r\n 2009          89            19.74         18.2          2.043         0 \r\n 2009          90            3.693         7.94         -0.824         0 \r\n 2009          91            20.476        11.61        -4.834         0 \r\n 2009          92            17.523        11.6         -1.271         0 \r\n 2009          93            22.42         14.4         -3.73          0 \r\n 2009          94            3.482         12.49         4.106         0 \r\n 2009          95            7.214         5.13         -2.478         0 \r\n 2009          96            21.547        4.259        -4.98          0 \r\n 2009          97            24.026        10.7         -6.428         0 \r\n 2009          98            23.837        15.63        -1.574         0 \r\n 2009          99            4.78          8.26          0.402         1.27 \r\n 2009          100           21.99         14            0.903         0 \r\n 2009          101           23.134        16.3         -2.03          0 \r\n 2009          102           10.484        11.38         4.349         0.508 \r\n 2009          103           9.671         9.57          1.123         2.032 \r\n 2009          104           24.964        17.77        -1.413         0 \r\n 2009          105           17.129        19.16         3.363         0 \r\n 2009          106           15.723        20.05         8.53          0 \r\n 2009          107           22.299        20.87         6.593         0 \r\n 2009          108           11.537        19.12         9.59          1.524 \r\n 2009          109           20.259        16.07         5.149         0 \r\n 2009          110           24.751        14.25         2.202         0 \r\n 2009          111           17.86         17.74         0.778         0 \r\n 2009          112           25.748        25.78         6.244         0 \r\n 2009          113           22.441        27.1          11.46         0 \r\n 2009          114           23.729        30.97         9.84          1.016 \r\n 2009          115           2.563         10.45         6.128         1.27 \r\n 2009          116           2.811         20.47         8.36          80.518 \r\n 2009          117           7.916         10.14         3.497         2.032 \r\n 2009          118           23.748        16.11         1.451         0 \r\n 2009          119           4.637         16            9.19          2.286 \r\n 2009          120           8.585         18.86         8.3           0 \r\n 2009          121           16.502        15.46         6.146         1.016 \r\n 2009          122           26.89         19.16         6.111         0 \r\n 2009          123           21.39         21.18         9.79          0 \r\n 2009          124           13.62         19.79         11.57         0.762 \r\n 2009          125           21.236        22.86         9.08          0 \r\n 2009          126           11.878        20.68         13.47         2.032 \r\n 2009          127           19.942        23.23         12.27         0.254 \r\n 2009          128           22.619        24.43         8.22          0 \r\n 2009          129           27.116        19.55         5.822         0 \r\n 2009          130           17.171        17.89         7.62          0 \r\n 2009          131           25.749        19.64         4.95          0 \r\n 2009          132           8.857         19.25         10.22         8.636 \r\n 2009          133           12.129        23.13         7.26          13.208 \r\n 2009          134           26.696        17.99         3.775         1.27 \r\n 2009          135           2.783         17.76         8.59          6.096 \r\n 2009          136           29.542        16.62         4.079         0 \r\n 2009          137           17.266        18.66         5.074         0 \r\n 2009          138           27.98         26.25         8.91          0 \r\n 2009          139           28.55         30.64         13.75         0 \r\n 2009          140           28.213        28.6          15.8          0 \r\n 2009          141           26.071        26.08         13.99         0 \r\n 2009          142           27.024        28.12         13.17         0 \r\n 2009          143           18.912        29            17.38         0 \r\n 2009          144           22.159        26.51         16.62         0 \r\n 2009          145           19.432        24.38         15.51         0 \r\n 2009          146           4.871         17.46         12.37         19.05 \r\n 2009          147           5.706         14.91         11.17         0 \r\n 2009          148           24.431        24.94         11.78         0 \r\n 2009          149           29.159        26.17         13.21         0 \r\n 2009          150           29.976        27.68         13.72         0 \r\n 2009          151           25.752        28.12         10.37         0 \r\n 2009          152           8.584         24.57         17.51         5.08 \r\n 2009          153           10.77         20.27         14.43         6.858 \r\n 2009          154           28.736        22.27         10.26         0 \r\n 2009          155           22.202        23.7          12.26         0 \r\n 2009          156           28.455        27            11.9          0 \r\n 2009          157           15.613        27.72         10.94         29.718 \r\n 2009          158           12.679        24.86         16.2          32.258 \r\n 2009          159           12.834        19.58         11.58         8.89 \r\n 2009          160           15.224        18.71         9.3           2.54 \r\n 2009          161           14.255        21.32         12.19         0 \r\n 2009          162           18.156        22.52         13.46         0 \r\n 2009          163           7.538         21.39         13.68         16.764 \r\n 2009          164           18.729        22.76         13.34         0 \r\n 2009          165           19.496        23.53         13.33         0 \r\n 2009          166           11.434        24.23         16.9          0.254 \r\n 2009          167           15.411        26.72         17.84         0.508 \r\n 2009          168           24.314        31.79         17.26         0.254 \r\n 2009          169           24.382        32.67         19.49         0 \r\n 2009          170           15.151        26.34         18.49         25.4 \r\n 2009          171           19.845        28.64         17.86         1.016 \r\n 2009          172           19.917        30.79         19.77         21.844 \r\n 2009          173           26.807        33.26         21.97         0 \r\n 2009          174           23.615        34.79         21.1          0.254 \r\n 2009          175           18.864        29.45         19.74         0 \r\n 2009          176           28.6          32.84         20.5          3.556 \r\n 2009          177           14.093        29.76         21.7          0 \r\n 2009          178           20.184        27.82         18.27         0 \r\n 2009          179           29.387        27.54         13.59         0 \r\n 2009          180           29.68         29.1          14.74         0 \r\n 2009          181           29.623        25.87         14.58         0 \r\n 2009          182           28.661        27.83         13.46         0 \r\n 2009          183           28.86         29.56         15.16         0 \r\n 2009          184           7.091         23.07         17.24         26.67 \r\n 2009          185           7.065         19.79         16.59         4.318 \r\n 2009          186           26.574        27.38         14.97         0 \r\n 2009          187           26.766        28.56         17.24         0 \r\n 2009          188           27.023        28.49         16.67         17.272 \r\n 2009          189           13.955        25.1          16.23         7.874 \r\n 2009          190           14.476        28.41         17.33         12.954 \r\n 2009          191           11.405        26.66         20.97         0 \r\n 2009          192           19.722        26.53         17.93         0 \r\n 2009          193           16.121        25.13         15.64         12.7 \r\n 2009          194           18.274        25.78         16.11         0 \r\n 2009          195           21.085        28.59         18.7          3.302 \r\n 2009          196           25.859        26.58         17.68         0 \r\n 2009          197           16.081        23.54         11.69         3.048 \r\n 2009          198           26.443        21.8          10.19         0 \r\n 2009          199           26.011        23.8          11.35         0 \r\n 2009          200           28.053        26.06         12.26         0 \r\n 2009          201           7.12          20.71         15.53         10.668 \r\n 2009          202           17.534        24.66         15.68         2.794 \r\n 2009          203           26.261        27.14         14.42         0 \r\n 2009          204           27.462        28.32         14.96         0 \r\n 2009          205           26.299        30.43         16.53         0 \r\n 2009          206           27.62         26.88         17.02         0 \r\n 2009          207           26.495        27.23         14.96         0 \r\n 2009          208           17.351        26.99         16.42         0 \r\n 2009          209           15.615        24.87         15.28         0 \r\n 2009          210           19.268        24.42         12.59         0 \r\n 2009          211           23.646        23.27         13.85         0 \r\n 2009          212           26.823        26.39         12.02         3.556 \r\n 2009          213           25.246        23.11         14.02         0 \r\n 2009          214           26.343        29.1          12.29         0 \r\n 2009          215           22.489        31.42         17.26         0 \r\n 2009          216           23.039        27.98         15.12         0 \r\n 2009          217           22.043        25.91         12.65         0 \r\n 2009          218           24.096        26.27         13.33         0 \r\n 2009          219           20.344        30.6          19.09         71.374 \r\n 2009          220           24.412        32.57         24.47         0 \r\n 2009          221           12.158        26.59         18.07         18.034 \r\n 2009          222           20.044        27.7          17.37         0 \r\n 2009          223           25.293        28.49         16.18         0 \r\n 2009          224           24.265        31.04         18.43         0 \r\n 2009          225           23.93         30.14         18.99         0 \r\n 2009          226           24.953        29.16         19.95         0 \r\n 2009          227           11.556        26.38         18.48         44.45 \r\n 2009          228           17.159        24.78         17.34         12.192 \r\n 2009          229           16.736        25.44         14.69         0 \r\n 2009          230           23.58         26.48         14.21         0 \r\n 2009          231           18.304        26.3          15.9          48.514 \r\n 2009          232           19.688        21.14         13.66         0 \r\n 2009          233           18.127        21.95         13.14         0.254 \r\n 2009          234           21.682        24.1          10.83         0 \r\n 2009          235           24.415        24.85         12.78         0 \r\n 2009          236           23.368        27.73         13.68         0 \r\n 2009          237           10.601        26.1          18.06         0.508 \r\n 2009          238           3.698         22.27         18.52         18.542 \r\n 2009          239           6.946         20.49         16.42         0 \r\n 2009          240           18.179        23.55         15.24         0 \r\n 2009          241           22.575        20.89         10.49         0 \r\n 2009          242           16.414        17.53         7.74          0 \r\n 2009          243           12.426        17.98         9.86          0 \r\n 2009          244           22.018        21.42         8.97          0 \r\n 2009          245           19.487        23.68         13.25         0 \r\n 2009          246           7.97          20.63         14            1.778 \r\n 2009          247           21.781        24.97         11.22         0 \r\n 2009          248           19.889        25.15         13.86         0 \r\n 2009          249           20.664        25.22         11.71         0 \r\n 2009          250           14.898        25.01         13.77         0 \r\n 2009          251           14.66         26.33         16.13         0 \r\n 2009          252           14.612        26.23         16.14         0 \r\n 2009          253           16.49         25.94         12.51         0 \r\n 2009          254           19.261        26.4          13.9          0 \r\n 2009          255           16.745        27.35         16.62         0.254 \r\n 2009          256           17.058        25.79         14.21         0 \r\n 2009          257           14.392        24.41         13.29         0 \r\n 2009          258           14.223        25.13         13.28         0 \r\n 2009          259           18.6          26.78         12.32         0 \r\n 2009          260           18.845        26.67         11.94         0 \r\n 2009          261           19.147        26.24         11.04         0 \r\n 2009          262           19.337        24.92         10.67         0 \r\n 2009          263           18.03         26.19         11.38         0 \r\n 2009          264           5.52          21.54         11.08         9.398 \r\n 2009          265           14.467        20.7          8.35          0 \r\n 2009          266           15.782        23.36         8.23          0 \r\n 2009          267           17.81         23.36         8.53          0 \r\n 2009          268           14.282        23.15         10.34         2.286 \r\n 2009          269           8.617         20.83         11.93         0.762 \r\n 2009          270           18.036        26.27         10.12         0 \r\n 2009          271           18.746        17.87         6.482         0 \r\n 2009          272           18.747        20.46         3.412         0 \r\n 2009          273           16.756        21.85         3.879         0 \r\n 2009          274           2.101         17.06         7.53          15.494 \r\n 2009          275           5.054         9.76          6.748         1.778 \r\n 2009          276           6.86          12.34         2.641         0 \r\n 2009          277           13.216        15.25         1.15          0 \r\n 2009          278           8.757         17.76         5.138         4.318 \r\n 2009          279           6.667         11.78         1.803         1.27 \r\n 2009          280           16.555        20.6          0.02          0 \r\n 2009          281           2.976         10.45         6.101         0.254 \r\n 2009          282           15.988        11.9          0.921         0 \r\n 2009          283           9.944         3.803        -4.075         3.81 \r\n 2009          284           5.794         3.783        -2.422         0 \r\n 2009          285           5.685         6.447         0.286         1.016 \r\n 2009          286           11.034        7.88         -2.64          4.572 \r\n 2009          287           3.311         6.342         2.156         4.826 \r\n 2009          288           4.314         8.79          4.377         0.762 \r\n 2009          289           5.264         8.16          3.845         0 \r\n 2009          290           5.45          7.37         -0.197         0 \r\n 2009          291           14.922        16.42        -0.074         0 \r\n 2009          292           12.008        20.39         8.03          0 \r\n 2009          293           2.729         15.76         11.88         0 \r\n 2009          294           2.108         17.08         6.158         18.288 \r\n 2009          295           1.371         6.168         2.177         57.15 \r\n 2009          296           4.39          6.573         0.448         0.762 \r\n 2009          297           7.703         11.87        -1.173         1.27 \r\n 2009          298           8.201         14.32         4.536         0 \r\n 2009          299           13.449        12.7          0.959         0 \r\n 2009          300           13.933        13.65        -0.587         0 \r\n 2009          301           8.443         16.07         6.92          0 \r\n 2009          302           1.451         14.62         9.89          47.244 \r\n 2009          303           4.007         15.24         2.033         0.508 \r\n 2009          304           13.093        11.58        -0.889         0 \r\n 2009          305           11.641        21.05         5.736         0 \r\n 2009          306           9.907         13            1.386         0 \r\n 2009          307           5.159         10.27        -2.374         0 \r\n 2009          308           12.33         12.99         0.408         0 \r\n 2009          309           11.804        16.44        -2.571         0 \r\n 2009          310           9.598         19.95         6.822         0 \r\n 2009          311           11.723        21.61         7.04          0 \r\n 2009          312           11.008        23.3          7.66          0 \r\n 2009          313           11.319        17.66         4.418         0 \r\n 2009          314           11.398        16.2          2.831         0 \r\n 2009          315           10.736        15.29         2.241         0 \r\n 2009          316           5.713         17.35         4.315         0 \r\n 2009          317           2.644         14.58         7.96          0 \r\n 2009          318           6.768         11.52         3.486         0 \r\n 2009          319           2.85          5.289        -0.311         0 \r\n 2009          320           1.58          7.07          2.299         1.524 \r\n 2009          321           8.958         10.29         0.457         0 \r\n 2009          322           2.674         7.47          1.045         0 \r\n 2009          323           3.08          8.35          3.136         0 \r\n 2009          324           8.225         10.42        -2.64          0 \r\n 2009          325           7.543         13.51        -1.783         0 \r\n 2009          326           3.452         11.91         6.714         0 \r\n 2009          327           5.537         13.7          5.429         0 \r\n 2009          328           0.806         8.2           1.586         17.53 \r\n 2009          329           2.231         4.231         1.073         2.29 \r\n 2009          330           9.114         4.712        -3.213         0 \r\n 2009          331           9.923         14.72        -2.898         0 \r\n 2009          332           9.576         15.76        -0.764         0 \r\n 2009          333           5.801         5.784        -3.883         0 \r\n 2009          334           9.447         11.52        -6.332         0 \r\n 2009          335           9.592         15.12        -0.671         0 \r\n 2009          336           3.924         1.282        -6.133         0 \r\n 2009          337           3.382        -4.354        -11.58         0 \r\n 2009          338           7.575        -3.978        -12.89         0 \r\n 2009          339           8.871         4.681        -10.22         0 \r\n 2009          340           2.988        -3.488        -8.38          0 \r\n 2009          341           7.711        -7.17         -13.69         4.06 \r\n 2009          342           2.855        -4.066        -9.16          4.57 \r\n 2009          343           7.841        -9.16         -20.76         17.02 \r\n 2009          344           9.982        -10.37        -23.7          0 \r\n 2009          345           9.361        -6.008        -16.17         0 \r\n 2009          346           5.618         0.656        -12.45         0 \r\n 2009          347           4.639        -0.579        -6.183         0 \r\n 2009          348           4.232        -3.912        -18.5          0.51 \r\n 2009          349           9.45         -14.18        -20.64         0.25 \r\n 2009          350           7.569        -4.393        -19            0 \r\n 2009          351           6.209         1.807        -7.88          0 \r\n 2009          352           7.705        -1.639        -8.55          0 \r\n 2009          353           2.828        -5.192        -8.44          0 \r\n 2009          354           3.859        -0.017        -6.811         0 \r\n 2009          355           4.08         -0.556        -3.979         0 \r\n 2009          356           2.553        -0.815        -4.788         0 \r\n 2009          357           1.117         0.002        -1.264         0 \r\n 2009          358           1.75         -0.028        -12.67         18.54 \r\n 2009          359           3.48         -5.094        -13.88         14.73 \r\n 2009          360           5.406        -6.005        -10.84         1.52 \r\n 2009          361           9.344        -3.061        -12.26         2.03 \r\n 2009          362           6.856        -4.219        -16.58         0 \r\n 2009          363           8.62         -8.21         -19.08         0 \r\n 2009          364           4.493        -0.651        -10.66         0.51 \r\n 2009          365           8.036        -10.51        -18.1          1.02 \r\n 2010          1             8.349        -13.08        -23.46         0 \r\n 2010          2             5.867        -18.16        -27.68         0 \r\n 2010          3             9.038        -14           -24.03         1.27 \r\n 2010          4             9.59         -16.58        -27.01         0 \r\n 2010          5             10.146       -14.94        -25.55         0 \r\n 2010          6             4.114        -9.79         -18.03         0 \r\n 2010          7             8.635        -13.15        -21.3          5.59 \r\n 2010          8             5.831        -17.47        -21.35         0 \r\n 2010          9             8.588        -13.62        -20.05         0 \r\n 2010          10            7.492        -5.976        -19.9          0 \r\n 2010          11            8.224        -5.531        -15.12         0 \r\n 2010          12            10.055       -6.173        -19.09         0 \r\n 2010          13            10.265        1.875        -7.27          0 \r\n 2010          14            9.285        -0.157        -6.517         0 \r\n 2010          15            5.524        -3.565        -6.711         0 \r\n 2010          16            4.558        -0.38         -7.91          0 \r\n 2010          17            4.843        -0.186        -1.993         0 \r\n 2010          18            4.948        -2.012        -5.282         0 \r\n 2010          19            3.786        -1.715        -5.05          0 \r\n 2010          20            2.087        -0.217        -2.039         11.94 \r\n 2010          21            3.839         0.042        -1.567         5.84 \r\n 2010          22            3.881         1.028        -1.793         0 \r\n 2010          23            2.918         6.972         0.963         5.08 \r\n 2010          24            6.435         0.448        -4.884         1.27 \r\n 2010          25            7.586        -4.864        -10.97         1.27 \r\n 2010          26            10.395       -9.35         -12.09         0 \r\n 2010          27            7.005        -4.516        -12.66         0 \r\n 2010          28            10.423       -10.37        -17.41         0 \r\n 2010          29            10.152       -10.2         -16.43         0 \r\n 2010          30            8.677        -4.66         -14.94         0 \r\n 2010          31            9.006        -6.067        -10.23         0 \r\n 2010          32            3.743        -2.411        -9.83          0 \r\n 2010          33            12.212       -5.579        -14.08         0.25 \r\n 2010          34            9.759         0.039        -15.53         0 \r\n 2010          35            5.2           1.636        -2.022         0 \r\n 2010          36            8            -0.976        -2.639         4.83 \r\n 2010          37            8.291        -0.698        -4.816         0.76 \r\n 2010          38            8.437        -0.386        -5.533         1.27 \r\n 2010          39            9.904        -0.442        -22.09         2.54 \r\n 2010          40            10.834       -5.278        -24.95         0.25 \r\n 2010          41            14.21        -6.006        -18.29         0 \r\n 2010          42            9.438        -2.839        -13.91         0 \r\n 2010          43            8.977        -0.623        -6.407         0 \r\n 2010          44            8.678        -0.689        -6.381         0 \r\n 2010          45            10.112       -6.381        -15.53         0 \r\n 2010          46            11.891       -7.52         -10.91         1.02 \r\n 2010          47            14.38        -3.574        -12.69         0 \r\n 2010          48            15.467       -4.331        -15.11         0 \r\n 2010          49            13.438        3.473        -14.2          0 \r\n 2010          50            7.06         -3.022        -8.25          0 \r\n 2010          51            11.037       -2.304        -5.933         3.3 \r\n 2010          52            9.972        -3.911        -10.72         0 \r\n 2010          53            14.536       -5.638        -14.18         0 \r\n 2010          54            14.679       -6.136        -16.7          0 \r\n 2010          55            16.875       -9.38         -21.71         0 \r\n 2010          56            15.443       -5.58         -20.68         0 \r\n 2010          57            16.231       -0.678        -8.76          0 \r\n 2010          58            17.077       -0.917        -10.58         0 \r\n 2010          59            15.361        0.07         -12.95         0 \r\n 2010          60            15.169        0.726        -9.53          0 \r\n 2010          61            15.546        1.096        -11.81         0 \r\n 2010          62            18.082        5.346        -10.45         0 \r\n 2010          63            16.131        3.882        -8.35          0 \r\n 2010          64            17.391        4.349        -3.547         0 \r\n 2010          65            4.964         3.652         0.258         0 \r\n 2010          66            5.585         2.87          0.325         8.38 \r\n 2010          67            12.354        5.921         0.288         0 \r\n 2010          68            4.092         3.921         1.654         9.65 \r\n 2010          69            5.86          4.998         0.569         2.79 \r\n 2010          70            3.2           1.973         0.446         12.95 \r\n 2010          71            6.263         4.694         0.021         1.78 \r\n 2010          72            4.64          5.42          0.02          0.51 \r\n 2010          73            12.618        10.27         2.044         0 \r\n 2010          74            6.605         7.97          2.196         0 \r\n 2010          75            4.684         4.625        -0.083         0 \r\n 2010          76            13.185        12.84         1.585         0.25 \r\n 2010          77            19.638        16.83         1.226         0 \r\n 2010          78            3.094         6.697        -3.818         0 \r\n 2010          79            16.192        0.25         -6.35          5.33 \r\n 2010          80            21.376        8.22         -6.945         0 \r\n 2010          81            19.113        12.76        -4.037         0 \r\n 2010          82            15.101        14.41        -0.33          0 \r\n 2010          83            4.34          8.01          2.69          0 \r\n 2010          84            21.24         11.25        -1.643         0.25 \r\n 2010          85            18.299        13.96        -2.491         0 \r\n 2010          86            7.723         9.59          3.109         0 \r\n 2010          87            21.646        13.43         1.844         2.29 \r\n 2010          88            20.211        18.46        -1.517         0 \r\n 2010          89            19.057        23.27         9.44          0 \r\n 2010          90            19.232        26.14         12.76         0 \r\n 2010          91            20.421        28.91         12.63         0 \r\n 2010          92            13.916        19.71         3.088         0 \r\n 2010          93            21.282        17.11        -0.217         4.32 \r\n 2010          94            11.604        17.95         5.333         0 \r\n 2010          95            7.709         16.26         2.118         0 \r\n 2010          96            19.26         25.56         6.709         21.84 \r\n 2010          97            7.552         10.41         0.899         1.27 \r\n 2010          98            24.945        14.61        -0.739         10.67 \r\n 2010          99            23.988        22.35         2.242         0 \r\n 2010          100           17.605        17.62         5.728         0 \r\n 2010          101           22.323        22            5.851         0 \r\n 2010          102           21.002        26.36         10.23         0 \r\n 2010          103           22.346        26.26         13.25         0 \r\n 2010          104           10.947        24.16         13.71         0.508 \r\n 2010          105           15.266        24.69         13.85         2.794 \r\n 2010          106           20.19         16.08         4.439         0 \r\n 2010          107           25.785        17.75         0.408         0 \r\n 2010          108           20.024        18.89         4.335         0 \r\n 2010          109           24.215        20.8          5.026         0 \r\n 2010          110           17.788        21.86         5.398         0 \r\n 2010          111           13.916        17.88         8.65          5.08 \r\n 2010          112           17.409        19.69         5.667         0 \r\n 2010          113           6.231         19.44         11.93         26.924 \r\n 2010          114           13.091        19.11         10.83         0.254 \r\n 2010          115           3.955         13.28         8.68          0 \r\n 2010          116           7.692         10.64         4.72          4.572 \r\n 2010          117           26.821        18.27         4.748         0 \r\n 2010          118           25.219        20.5          5.583         0 \r\n 2010          119           24.148        28.37         13.42         40.386 \r\n 2010          120           19.258        19.31         9.17          2.54 \r\n 2010          121           25.504        19.66         5.369         0.254 \r\n 2010          122           22.646        22.3          8.7           1.27 \r\n 2010          123           25.666        19.5          6.099         0.508 \r\n 2010          124           27.441        27.64         8.27          0 \r\n 2010          125           28.533        19.74         6.843         0.508 \r\n 2010          126           22.193        17.91         4             9.906 \r\n 2010          127           13.597        12.21         4.213         0 \r\n 2010          128           18.652        12.8          1.899         0.254 \r\n 2010          129           20.471        16.04         3.202         0.254 \r\n 2010          130           2.697         10.81         7.84          16.51 \r\n 2010          131           9.688         12.59         7.58          1.524 \r\n 2010          132           2.906         9.73          6.591         13.97 \r\n 2010          133           13.695        14.6          7.08          0.254 \r\n 2010          134           27.178        20.62         4.824         0 \r\n 2010          135           21.274        20.31         7.05          0 \r\n 2010          136           11.466        17.14         12.12         0 \r\n 2010          137           19.337        21.23         11            0 \r\n 2010          138           28.916        24.15         9.33          0.254 \r\n 2010          139           23.114        22.52         10.18         0.254 \r\n 2010          140           4.086         14.75         12.79         7.62 \r\n 2010          141           19.757        21.44         12.67         0 \r\n 2010          142           20.272        30.12         13.57         1.778 \r\n 2010          143           20.004        30.19         21.55         0 \r\n 2010          144           27.062        31.71         21.32         0 \r\n 2010          145           19.16         29.72         16.96         0 \r\n 2010          146           20.287        27.9          16.34         0 \r\n 2010          147           29.195        29.25         14.06         0 \r\n 2010          148           29.285        29.25         13.45         0 \r\n 2010          149           28.719        29.54         16.86         0 \r\n 2010          150           16.246        28.04         15.1          11.176 \r\n 2010          151           30.192        25.98         12.52         0 \r\n 2010          152           14.931        29.5          14.56         21.082 \r\n 2010          153           18.127        24.04         14.57         0.762 \r\n 2010          154           25.156        26.3          13.25         1.778 \r\n 2010          155           25.001        30.33         19.75         1.524 \r\n 2010          156           18.347        28.97         14.22         50.8 \r\n 2010          157           27.904        27.63         13.19         0.508 \r\n 2010          158           18.309        26.49         16.18         0.254 \r\n 2010          159           17.371        27.13         17.35         0.254 \r\n 2010          160           29.472        29.05         15.93         0.508 \r\n 2010          161           11.584        25.16         17.73         0.508 \r\n 2010          162           21.159        29.18         18.28         40 \r\n 2010          163           20.43         28.68         18.96         0.254 \r\n 2010          164           9.009         22.28         16.02         0.254 \r\n 2010          165           19.115        27.03         18.25         0 \r\n 2010          166           22.247        24.86         16.32         0 \r\n 2010          167           26.449        30.08         15.12         0 \r\n 2010          168           26.754        31.82         19.33         8.89 \r\n 2010          169           17.29         29.47         14.67         15.748 \r\n 2010          170           20.566        28.01         17.28         0 \r\n 2010          171           2.404         22.91         18.28         21.082 \r\n 2010          172           22.189        28.4          17.54         9.652 \r\n 2010          173           21.24         32.34         19.25         5.842 \r\n 2010          174           23.874        26.29         17.12         9.398 \r\n 2010          175           29.12         27.28         15.3          0 \r\n 2010          176           28.236        30.76         17.13         0 \r\n 2010          177           26.88         32.64         20.78         0 \r\n 2010          178           22.427        27.05         19.1          47.244 \r\n 2010          179           29.691        28.16         16.37         0 \r\n 2010          180           29.758        25.29         13.54         0 \r\n 2010          181           29.394        26.95         13.77         0 \r\n 2010          182           29.762        27.83         15.8          0 \r\n 2010          183           26.574        29.18         15.96         0 \r\n 2010          184           22.864        30.03         19.37         0 \r\n 2010          185           4.761         23.5          18.93         64.77 \r\n 2010          186           10.213        24.45         18.07         4.064 \r\n 2010          187           26.804        29.21         19.33         0 \r\n 2010          188           14.364        27.02         19.57         0 \r\n 2010          189           22.453        26.3          18.45         0 \r\n 2010          190           29.24         29.43         16.45         0 \r\n 2010          191           27.95         28.24         16.74         0 \r\n 2010          192           19.287        28.72         18.21         20.574 \r\n 2010          193           15.485        26.1          19.9          1.524 \r\n 2010          194           26.419        30.14         17.6          0 \r\n 2010          195           24.537        33.24         19.86         26.67 \r\n 2010          196           27.337        28.62         20.06         0 \r\n 2010          197           27.347        30.82         18.78         0 \r\n 2010          198           28.124        32.58         21.27         0 \r\n 2010          199           25.856        30.6          20            0.254 \r\n 2010          200           18.695        26.72         17.98         16.256 \r\n 2010          201           19.453        28.69         20.15         6.858 \r\n 2010          202           19.567        28.36         20.31         6.858 \r\n 2010          203           25.642        32.34         24.39         0.508 \r\n 2010          204           16.484        31            22.54         2.032 \r\n 2010          205           17.304        26.47         18.45         0 \r\n 2010          206           25.235        28.51         16.74         0 \r\n 2010          207           23.871        29.65         18.48         0 \r\n 2010          208           26.575        32.05         20.92         0 \r\n 2010          209           19.553        28.61         18.76         0 \r\n 2010          210           21.561        27.27         16.63         0 \r\n 2010          211           15.595        30.54         20.82         7.874 \r\n 2010          212           25.483        30.17         20.94         0 \r\n 2010          213           25.679        29.26         19.62         0 \r\n 2010          214           25.679        33.93         22.62         0 \r\n 2010          215           24.526        31.4          20.77         0 \r\n 2010          216           16.667        29.87         19.97         32.004 \r\n 2010          217           25.329        28.42         18.8          0 \r\n 2010          218           19.582        27.32         18.53         0 \r\n 2010          219           25.401        29.96         20.64         0 \r\n 2010          220           24.012        33.06         22.35         0 \r\n 2010          221           22.739        32.67         22.45         0 \r\n 2010          222           24.146        33.35         20.39         17.272 \r\n 2010          223           25.779        32.76         20.81         0.254 \r\n 2010          224           25.549        33.04         22.75         0 \r\n 2010          225           19.193        31.09         23.14         0 \r\n 2010          226           22.279        30.65         18.3          0 \r\n 2010          227           23.644        26.65         15.55         0 \r\n 2010          228           24.506        28.18         15.25         3.048 \r\n 2010          229           3.472         19.59         16.35         36.068 \r\n 2010          230           18.938        25.69         15.52         0 \r\n 2010          231           21.841        28.99         17.78         0 \r\n 2010          232           12.24         27.57         19.9          12.446 \r\n 2010          233           23.69         32.59         19.39         0 \r\n 2010          234           23.915        31.57         19.83         0 \r\n 2010          235           23.71         30.14         20.29         0 \r\n 2010          236           22.488        24.72         15.08         13.716 \r\n 2010          237           24.095        26.32         12.91         0 \r\n 2010          238           23.404        27.34         13.78         0 \r\n 2010          239           24.031        27.72         16.38         0 \r\n 2010          240           23.419        29.2          14.66         0 \r\n 2010          241           22.143        30.8          16.46         0 \r\n 2010          242           21.918        30.38         20.31         0 \r\n 2010          243           12.877        30.36         20.48         20.066 \r\n 2010          244           13.923        26.01         18.5          4.318 \r\n 2010          245           9.08          22.39         12.19         2.286 \r\n 2010          246           23.385        21.08         9.75          0 \r\n 2010          247           22.651        23.18         8.15          0 \r\n 2010          248           19.117        27.59         12.37         0 \r\n 2010          249           16.205        30.02         12.23         0 \r\n 2010          250           22.539        23.29         9.52          0 \r\n 2010          251           15.774        24.3          9.69          0 \r\n 2010          252           16.018        25.16         15.23         0.254 \r\n 2010          253           3.526         19.27         16.09         1.524 \r\n 2010          254           21.467        25.54         11.81         0 \r\n 2010          255           20.872        29.02         11.23         0 \r\n 2010          256           14.212        28.69         14.83         21.844 \r\n 2010          257           19.2          27.73         14.96         0.254 \r\n 2010          258           11.291        26.05         15.31         0 \r\n 2010          259           10.247        18.86         10.92         0 \r\n 2010          260           18.425        28.42         10.81         0 \r\n 2010          261           4.8           18.47         7.93          87.376 \r\n 2010          262           3.545         13.02         8.13          24.892 \r\n 2010          263           17.933        31.62         13.02         0 \r\n 2010          264           5.68          23.62         18.77         2.794 \r\n 2010          265           10.001        27.04         18.6          0 \r\n 2010          266           3.785         23.11         12.37         21.082 \r\n 2010          267           18.992        23.946        9.658         0 \r\n 2010          268           6.601         17.773        9.971         19.812 \r\n 2010          269           18.818        20.444        6.978         0 \r\n 2010          270           16.431        23.828        5.959         0 \r\n 2010          271           18.618        25.233        11.145        0 \r\n 2010          272           17.699        29.696        10.04         0 \r\n 2010          273           18.343        25.024        9.509         0 \r\n 2010          274           17.704        27.099        7.22          0 \r\n 2010          275           15.569        17.121        4.107         0 \r\n 2010          276           17.853        16.758        1.106         0 \r\n 2010          277           17.767        19.912        2.778         0 \r\n 2010          278           17.098        24.349        6.589         0 \r\n 2010          279           15.334        26.906        9.363         0 \r\n 2010          280           17.047        24.968        5.583         0 \r\n 2010          281           15.899        32.673        10.387        0 \r\n 2010          282           15.924        28.28         9.68          0 \r\n 2010          283           14.632        27.11         11.19         0 \r\n 2010          284           7.727         22.53         13.18         1.016 \r\n 2010          285           14.132        26.28         10.31         0 \r\n 2010          286           15.75         20.01         4.671         0 \r\n 2010          287           15.435        23.29         4.325         0 \r\n 2010          288           15.642        20.56         4.897         0 \r\n 2010          289           14.027        23.63         5.463         0 \r\n 2010          290           14.823        18.77         2.745         0 \r\n 2010          291           9.954         16.76         4.088         0 \r\n 2010          292           12.891        18.29         1.849         0 \r\n 2010          293           14.226        22.05         5.052         0 \r\n 2010          294           14.118        17.37         3.445         0 \r\n 2010          295           10.795        23.99         6.822         0 \r\n 2010          296           8.782         23.44         14.09         4.064 \r\n 2010          297           4.549         16.07         8.38          0 \r\n 2010          298           5.743         19.87         8.22          0 \r\n 2010          299           6.927         14.76         6.88          5.08 \r\n 2010          300           11.219        11.99         2.228         0 \r\n 2010          301           14.032        10.12        -0.284         0 \r\n 2010          302           13.555        18.13        -3.693         0 \r\n 2010          303           11.856        20.75         3.61          0 \r\n 2010          304           8.065         10.64         1.005         0 \r\n 2010          305           12.531        14            0.54          0 \r\n 2010          306           12.517        14.36        -1.005         0 \r\n 2010          307           12.456        16.76         3.571         0 \r\n 2010          308           12.847        10.65        -1.222         0 \r\n 2010          309           12.823        9.444        -4.239         0 \r\n 2010          310           12.29         16.32        -2.689         0 \r\n 2010          311           11.394        20.86         4.737         0 \r\n 2010          312           11.72         20.65         9.16          0 \r\n 2010          313           10.203        21.61         7.31          0 \r\n 2010          314           5.511         15.556        0.418         0 \r\n 2010          315           11.116        14.07        -3.673         0.508 \r\n 2010          316           0.956         5.655         0.15          38.1 \r\n 2010          317           2.956         7.188        -1.075         5.334 \r\n 2010          318           7.978         6.438        -2.002         0 \r\n 2010          319           10.996        9.75         -2.115         0 \r\n 2010          320           8.468         9.657        -0.498         0 \r\n 2010          321           3.588         2.723        -2.555         0 \r\n 2010          322           9.719         4.299        -4.672         0 \r\n 2010          323           8.109         6.882        -2.746         0 \r\n 2010          324           5.798         3.76         -3.932         0 \r\n 2010          325           1.635         6.678        -0.161         0 \r\n 2010          326           2.796         1.839        -4.621         0 \r\n 2010          327           10.783        0.743        -9.232         0 \r\n 2010          328           1.115         5.288        -8.997         0 \r\n 2010          329           9.989        -0.925        -10.961        0 \r\n 2010          330           8.7           8.231        -10            0 \r\n 2010          331           9.034         12.176       -7.104         0 \r\n 2010          332           8.356         13.708        1.628         0 \r\n 2010          333           3.801         12.049       -4.338         0 \r\n 2010          334           4.412        -3.139        -6.821         0 \r\n 2010          335           9.607         0.743        -10.751        0 \r\n 2010          336           9.151         7.059        -5.929         0 \r\n 2010          337           4.28          4.962        -5.974         0 \r\n 2010          338           7.183         0.898        -6.582         0 \r\n 2010          339           8.71         -2.083        -10.978        0 \r\n 2010          340           8.74          1.957        -12.517        0 \r\n 2010          341           7.396        -0.662        -11.9          0 \r\n 2010          342           8.753         3.431        -13.889        0 \r\n 2010          343           7.518         11.475       -1.981         0 \r\n 2010          344           5.245         12.744       -4.684         0 \r\n 2010          345           3.602         8.432        -13.397        0 \r\n 2010          346           8.286         6.667        -17.586        0 \r\n 2010          347           4.391        -7.906        -16.667        0 \r\n 2010          348           6.976        -1.212        -18.889        0 \r\n 2010          349           2.628        -2.703        -9.444         0 \r\n 2010          350           4.681        -1.592        -7.222         2.5 \r\n 2010          351           3.088        -2.037        -8.181         0 \r\n 2010          352           6.252        -1.332        -11.111        0 \r\n 2010          353           3.902         1.738        -10.556        0 \r\n 2010          354           5.292         5.869        -6.667         0 \r\n 2010          355           7.027         1.562        -8.387         0 \r\n 2010          356           3.11         -2.129        -9.893         0 \r\n 2010          357           2.642         0.129        -3.552         0 \r\n 2010          358           1.126        -0.752        -4.265         5 \r\n 2010          359           2.4          -3.951        -10.101        1.5 \r\n 2010          360           5.43         -6.446        -13.203        0 \r\n 2010          361           6.752         0.877        -13.922        0 \r\n 2010          362           8.057         6.872        -9.238         0 \r\n 2010          363           1.65          7.749        -3.033         0 \r\n 2010          364           6.27          17.406       -9.488         0 \r\n 2010          365           2.557        -4.392        -15.23         0 \r\n 2011          1             8.821        -8.86         -15            1.52 \r\n 2011          2             9.046         0.171        -13.57         0 \r\n 2011          3             7.765         3.376        -10.09         0 \r\n 2011          4             9.469         0.715        -14.32         0 \r\n 2011          5             7.465         4.174        -8.89          0 \r\n 2011          6             5.824         3.22         -5.511         0 \r\n 2011          7             1.499         0.486        -10.5          0 \r\n 2011          8             8.973        -6.536        -11.159        0 \r\n 2011          9             3.241        -6.008        -9.459         0 \r\n 2011          10            3.133        -4.211        -12.66         8.1 \r\n 2011          11            10.313       -12.66        -19.12         7.1 \r\n 2011          12            8.224        -14.06        -21.09         0 \r\n 2011          13            8.458        -8.09         -22.48         0 \r\n 2011          14            5.715        -4.661        -13.16         0 \r\n 2011          15            6.167        -6.35         -14.78         0 \r\n 2011          16            6.297        -6.516        -16.07         0 \r\n 2011          17            5.659         1.48         -7.15          0 \r\n 2011          18            9.698        -7.17         -14.71         0 \r\n 2011          19            6.747        -14.16        -20.6          1 \r\n 2011          20            11.515       -8.35         -18.51         1 \r\n 2011          21            7.278        -10.45        -17.66         0 \r\n 2011          22            6.424        -5.686        -14.57         1 \r\n 2011          23            10.958       -11.27        -19.64         3 \r\n 2011          24            10.95        -0.559        -11.46         0 \r\n 2011          25            10.239       -2.641        -9.59          0 \r\n 2011          26            6.55         -6.281        -10.25         0 \r\n 2011          27            11.499        3.367        -9.17          0 \r\n 2011          28            10.405        6.15         -8.889         0 \r\n 2011          29            7.659         3.646        -6.201         0 \r\n 2011          30            6.714        -5.466        -13.369        0 \r\n 2011          31            2.619        -3.018        -14.699        0 \r\n 2011          32            4.341        -10.557       -15.984        3.3 \r\n 2011          33            10.933       -12.927       -20.026        2.5 \r\n 2011          34            13.636       -4.668        -20.317        0 \r\n 2011          35            13.289        1.926        -12.222        0 \r\n 2011          36            9.842         2.422        -8.455         0 \r\n 2011          37            6.159         0.908        -3.205         5.8 \r\n 2011          38            12.906       -2.942        -17.719        0 \r\n 2011          39            10.941       -15.864       -21.792        0 \r\n 2011          40            13.666       -8.911        -17.492        0 \r\n 2011          41            13.299       -0.826        -16.513        0 \r\n 2011          42            11.795        5.929        -8.164         0 \r\n 2011          43            12.779        7.817        -3.021         0 \r\n 2011          44            14.371        14.713        0.713         0 \r\n 2011          45            14.13         9.369         0.051         0 \r\n 2011          46            13.475        12.508       -0.385         0 \r\n 2011          47            9.375         11.294       -1.094         0 \r\n 2011          48            13.576        20.325        3.815         0 \r\n 2011          49            14.405        12.482       -1.832         0 \r\n 2011          50            14.468        11.004        0.583         0 \r\n 2011          51            3.863         14.977       -5.04          1 \r\n 2011          52            7.73         -2.498        -9.469         0 \r\n 2011          53            14.174        2.486        -12.456        0 \r\n 2011          54            13.628        10.793       -4.445         0 \r\n 2011          55            2.547        -1.898        -9.212         0 \r\n 2011          56            11.894       -6.843        -12.345        1.52 \r\n 2011          57            8.375        -3.707        -10.658        1.78 \r\n 2011          58            6.684         1.003        -4.125         0 \r\n 2011          59            16.989        1.302        -9.99          0 \r\n 2011          60            16.913        13.242       -5.893         0 \r\n 2011          61            17.326        2.952        -11.161        0 \r\n 2011          62            12.941        15.272       -1.212         0 \r\n 2011          63            3.622         3.089        -6.831         0 \r\n 2011          64            18.146        2.272        -10.579        0 \r\n 2011          65            8.558         5.913        -6.872         0 \r\n 2011          66            8.502         5.053        -1.559         0 \r\n 2011          67            2.654         3.089        -0.308         0.76 \r\n 2011          68            5.192         1.946        -4.756         6 \r\n 2011          69            18.647        11.416       -8.287         0 \r\n 2011          70            17.091        19.732        0.813         0 \r\n 2011          71            17.896        7.251        -1.896         0 \r\n 2011          72            11.659        3.308        -4.381         0 \r\n 2011          73            19.144        11.343       -3.392         0 \r\n 2011          74            17.66         15.718       -4.038         0 \r\n 2011          75            18            22.153       -0.382         0 \r\n 2011          76            13.023        21.021        6.386         0 \r\n 2011          77            15.399        15.182        3.113         0 \r\n 2011          78            12.302        14.502        0.198         0 \r\n 2011          79            10.174        23.435        7.491         0.51 \r\n 2011          80            5.863         20.566        4.779         0 \r\n 2011          81            7.542         24.995        6.492         0 \r\n 2011          82            6.283         8.326        -0.588         4 \r\n 2011          83            11.375        6.079        -2.412         0 \r\n 2011          84            11.742        2.392        -1.104         5.8 \r\n 2011          85            7.964         1.505        -1.186         0.76 \r\n 2011          86            13.678        3.768        -2.472         0.51 \r\n 2011          87            15.487        7.02         -4.378         0 \r\n 2011          88            9.407         4.176        -1.048         5.59 \r\n 2011          89            12.531        8.142        -3.083         0 \r\n 2011          90            7.73          7.211         1.089         0 \r\n 2011          91            23.117        16.649        1.431         0.51 \r\n 2011          92            16.769        21.867        0.512         0 \r\n 2011          93            18.593        25.543        6.567         0 \r\n 2011          94            19.615        11.019       -0.249         0 \r\n 2011          95            22.981        22.721       -1.304         0 \r\n 2011          96            22.775        19.516        8.468         0 \r\n 2011          97            4.537         13.198        6.53          0 \r\n 2011          98            6.276         14.672        7.137         18.03 \r\n 2011          99            21.272        30.342        10.079        0 \r\n 2011          100           21.302        26.747        8.032         0 \r\n 2011          101           24.9          19.173        4.253         0 \r\n 2011          102           24.573        23.211        1.855         0 \r\n 2011          103           16.428        24.049        9.627         0 \r\n 2011          104           7.796         18.522        9.468         11.938 \r\n 2011          105           1.954         10.711        1.978         25.908 \r\n 2011          106           20.595        16.438        0.663         0 \r\n 2011          107           12.982        14.558        0.811         0.254 \r\n 2011          108           7.122         10.896        3.821         0 \r\n 2011          109           4.649         5.728         2.133         33.528 \r\n 2011          110           19.086        12.048        1.374         0 \r\n 2011          111           6.339         11.345        3.155         0 \r\n 2011          112           8.72          19.834        6.601         1.778 \r\n 2011          113           12.366        12.358        4.031         0 \r\n 2011          114           16.284        15.031        0.853         0 \r\n 2011          115           3.973         11.107        6.602         12.192 \r\n 2011          116           7.228         12.501        6.036         1.524 \r\n 2011          117           16.701        17.342        4.109         0 \r\n 2011          118           24.711        21.297        6.824         0 \r\n 2011          119           18.089        25.377        6.053         2.032 \r\n 2011          120           23.482        19.993        8.071         0 \r\n 2011          121           26.715        17.524        3.827         0 \r\n 2011          122           28.476        15.349        1.209         0 \r\n 2011          123           28.77         17.028       -0.227         0 \r\n 2011          124           23.28         23.073        5.864         0 \r\n 2011          125           22.896        19.833        7.578         0 \r\n 2011          126           25.941        26.187        4.264         0 \r\n 2011          127           27.53         27.913        12.364        0 \r\n 2011          128           26.072        29.939        13.483        0 \r\n 2011          129           26.578        35.509        20.067        0 \r\n 2011          130           26.499        35.67         21.673        0 \r\n 2011          131           3.739         28.929        16.356        27.178 \r\n 2011          132           22.72         24.879        2.201         16.764 \r\n 2011          133           5.02          11.914        0.655         1.524 \r\n 2011          134           10.254        11.785        5.985         0.254 \r\n 2011          135           14.532        16.268        6.172         4.826 \r\n 2011          136           29.827        19.694        4.045         0 \r\n 2011          137           30.074        20.913        3.828         0 \r\n 2011          138           25.641        20.721        7.133         0 \r\n 2011          139           11.113        20.563        12.968        1.016 \r\n 2011          140           7.635         20.701        15.027        11.938 \r\n 2011          141           20.721        26.056        15.041        5.08 \r\n 2011          142           22.704        25.186        14.882        0 \r\n 2011          143           27.353        27.532        13.571        0 \r\n 2011          144           14.581        23.034        14.633        25.146 \r\n 2011          145           5.654         20.692        10.942        4.572 \r\n 2011          146           29.196        19.95         7.97          0 \r\n 2011          147           7.478         16.04         10.162        0 \r\n 2011          148           9.896         24.186        12.192        1.778 \r\n 2011          149           10.925        28.236        14.356        5.842 \r\n 2011          150           25.225        30.427        20.779        3.302 \r\n 2011          151           29.882        27.067        14.274        15.24 \r\n 2011          152           27.368        29.153        12.186        0 \r\n 2011          153           20.827        29.793        19            0 \r\n 2011          154           26.397        33.43         22.495        0 \r\n 2011          155           15.496        30.484        19.979        0 \r\n 2011          156           27.91         34.753        19.012        0 \r\n 2011          157           27.732        36.733        22.317        0 \r\n 2011          158           27.304        35.613        24.155        0 \r\n 2011          159           26.763        30.815        20.279        0 \r\n 2011          160           9.429         23.274        15.237        21.59 \r\n 2011          161           4.034         18.674        14.469        0.762 \r\n 2011          162           25.647        24.166        12.239        0 \r\n 2011          163           17.521        24.081        15.786        2.794 \r\n 2011          164           12.265        22.729        16.27         7.62 \r\n 2011          165           14.608        27.273        16.897        0.254 \r\n 2011          166           29.996        28.667        15.207        0 \r\n 2011          167           20.759        27.931        15.517        0 \r\n 2011          168           25.147        31.626        18.858        0 \r\n 2011          169           17.208        28.106        16.631        0.762 \r\n 2011          170           26.662        30.074        18.646        0 \r\n 2011          171           20.107        30.366        16.468        19.812 \r\n 2011          172           12.246        23.483        16.063        5.588 \r\n 2011          173           8.714         21.621        15.422        1.016 \r\n 2011          174           18.381        24.477        13.912        0 \r\n 2011          175           26.822        25.898        12.664        0 \r\n 2011          176           19.529        25.896        16.02         20.574 \r\n 2011          177           8.105         27.187        17.554        21.59 \r\n 2011          178           27.628        25.941        15.961        0 \r\n 2011          179           30.274        25.865        12.873        0 \r\n 2011          180           28.089        30.575        17.002        0 \r\n 2011          181           28.873        34.855        23.561        0 \r\n 2011          182           28.79         35.198        23.242        0 \r\n 2011          183           26.582        30.098        19.154        0 \r\n 2011          184           8.746         27.109        18.575        7.112 \r\n 2011          185           27.556        29.053        18.485        0 \r\n 2011          186           12.376        30.569        19.952        0 \r\n 2011          187           26.329        30.494        19.345        0 \r\n 2011          188           21.379        29.935        19.395        0 \r\n 2011          189           28.798        30.192        18.022        0 \r\n 2011          190           23.78         31.153        21.332        0 \r\n 2011          191           24.587        32.844        23.328        0 \r\n 2011          192           21.632        32.603        22.046        10.668 \r\n 2011          193           15.464        29.067        20.954        9.652 \r\n 2011          194           17.984        28.682        20.146        0 \r\n 2011          195           21.06         30.549        22.003        0 \r\n 2011          196           21.14         33.003        24.112        13.97 \r\n 2011          197           22.855        34.016        25.149        1.524 \r\n 2011          198           26.348        35.467        24.783        0 \r\n 2011          199           27.493        35.977        24.784        0 \r\n 2011          200           27.891        35.771        24.228        0 \r\n 2011          201           27.772        36.744        24.539        0 \r\n 2011          202           16.82         32.72         23.576        4.826 \r\n 2011          203           24.372        34.045        23.403        0.254 \r\n 2011          204           13.91         35.76         23.849        10.922 \r\n 2011          205           25.867        32.173        21.959        0 \r\n 2011          206           22.232        32.364        20.717        0 \r\n 2011          207           26.604        33.568        22.058        0 \r\n 2011          208           23.626        36.176        23.072        0 \r\n 2011          209           11.81         30.964        23.072        0.254 \r\n 2011          210           11.204        28.737        22.332        0 \r\n 2011          211           22.565        31.43         22.274        0 \r\n 2011          212           26.662        33.256        22.297        0 \r\n 2011          213           27.061        36.181        24.582        0 \r\n 2011          214           22.496        34.496        24.067        0 \r\n 2011          215           27.18         31.142        22.123        0 \r\n 2011          216           14.414        30.173        22.091        0 \r\n 2011          217           10.548        30.131        22.081        3.556 \r\n 2011          218           23.55         33.035        18.991        3.556 \r\n 2011          219           25.781        30.073        18.397        0 \r\n 2011          220           25.41         30.569        19.442        0 \r\n 2011          221           23.988        28.518        17.537        0 \r\n 2011          222           25.519        26.717        15.806        0 \r\n 2011          223           26.015        27.381        14.084        0.762 \r\n 2011          224           20.038        28.551        16.923        12.192 \r\n 2011          225           24.828        27.128        16.594        0 \r\n 2011          226           26.365        27.417        14.784        0 \r\n 2011          227           23.629        25.164        17.961        0 \r\n 2011          228           9.82          26.184        18.816        41.91 \r\n 2011          229           23.969        30.085        19.708        0 \r\n 2011          230           18.396        30.178        17.628        65.532 \r\n 2011          231           22.279        28.389        16.022        0 \r\n 2011          232           20.939        27.024        17.509        0 \r\n 2011          233           21.303        28.323        16.753        0 \r\n 2011          234           20.979        30.29         19.138        56.896 \r\n 2011          235           18.741        34.048        21.703        0 \r\n 2011          236           24.24         31.492        17.673        0 \r\n 2011          237           24.419        27.467        13.446        0 \r\n 2011          238           8.807         28.766        16.48         0.508 \r\n 2011          239           21.925        30.188        16.758        0 \r\n 2011          240           12.874        25.597        15.827        3.302 \r\n 2011          241           20.87         27.33         14.727        0 \r\n 2011          242           8.2           27.669        18.324        35.306 \r\n 2011          243           22.696        32.08         19.187        0 \r\n 2011          244           22.232        34.685        23.277        0 \r\n 2011          245           17.972        32.156        21.946        7.62 \r\n 2011          246           4.549         26.829        15.786        5.08 \r\n 2011          247           22.365        23.025        11.056        0 \r\n 2011          248           22.707        23.056        8.182         0 \r\n 2011          249           23.431        23.646        7.792         0 \r\n 2011          250           22.707        25.348        8.606         0 \r\n 2011          251           21.782        25.132        9.618         0 \r\n 2011          252           20.253        28.084        14.066        0 \r\n 2011          253           21.135        28.302        12.593        0 \r\n 2011          254           20.229        30.147        13.447        0 \r\n 2011          255           20.084        32.924        15.566        0 \r\n 2011          256           14.124        23.19         13.441        0 \r\n 2011          257           17.892        17.65         5.401         1.016 \r\n 2011          258           15.717        14.169        3.806         0 \r\n 2011          259           6.253         12.248        7.476         2.54 \r\n 2011          260           2.603         13.393        10.113        0.508 \r\n 2011          261           3.272         19.594        10.313        15.494 \r\n 2011          262           19.56         27.108        8.317         0.254 \r\n 2011          263           17.877        24.489        11.907        1.27 \r\n 2011          264           18.928        20.645        7.404         0 \r\n 2011          265           18.237        20.38         4.399         0 \r\n 2011          266           19.898        21.346        3.616         0 \r\n 2011          267           18.666        21.459        5.066         0 \r\n 2011          268           15.299        20.548        3.855         0 \r\n 2011          269           16.089        22.708        4.687         0 \r\n 2011          270           15.236        26.661        9.706         0 \r\n 2011          271           18.318        29.438        8.916         0 \r\n 2011          272           13.999        23.7          10.993        0 \r\n 2011          273           18.937        21.773        5.405         0 \r\n 2011          274           18.845        21.693        3.153         0 \r\n 2011          275           18.274        25.754        6.102         0 \r\n 2011          276           18.137        27.502        8.417         0 \r\n 2011          277           16.025        32.349        14.848        0 \r\n 2011          278           17.497        29.038        14.043        0 \r\n 2011          279           13.87         28.339        14.14         0 \r\n 2011          280           11.63         28.449        18.672        0 \r\n 2011          281           10.402        26.5          16.627        0 \r\n 2011          282           14.656        27.294        14.818        0 \r\n 2011          283           10.314        22.613        12.711        0.762 \r\n 2011          284           13.568        25.433        9.891         0 \r\n 2011          285           4.517         21.21         12.042        3.556 \r\n 2011          286           15.618        22.795        8.324         0 \r\n 2011          287           14.558        17.166        6.287         0 \r\n 2011          288           15.848        22.964        2.561         0 \r\n 2011          289           9.495         18.663        4.296         0 \r\n 2011          290           4.52          12.094        3.419         2.54 \r\n 2011          291           9.178         12.096        1.916         0 \r\n 2011          292           10.313        10.6         -1.7           0 \r\n 2011          293           11.737        8.3          -2.2           0 \r\n 2011          294           14.564        21.844       -1.81          0 \r\n 2011          295           6.845         16.829        4.778         0 \r\n 2011          296           14.315        26.07         3.389         0 \r\n 2011          297           12.392        25.687        4.068         0 \r\n 2011          298           12.577        24.441        8.12          0 \r\n 2011          299           4.408         11.751        5.353         0 \r\n 2011          300           12.961        14.022        0.127         0 \r\n 2011          301           13.884        14.58        -0.158         0 \r\n 2011          302           10.403        17.614       -1.748         0 \r\n 2011          303           13.062        15.771        2.094         0 \r\n 2011          304           13.427        18.942       -3.262         0 \r\n 2011          305           12.253        21.144        7.294         0 \r\n 2011          306           1.055         10.437        1.116         21.59 \r\n 2011          307           13.408        10.864       -2.298         0 \r\n 2011          308           12.836        12.83        -3.614         0 \r\n 2011          309           10.337        15.375        5.508         0 \r\n 2011          310           12.179        14.488        1.602         0 \r\n 2011          311           9.227         14.518       -1.701         8.382 \r\n 2011          312           1.965         7.257         2.394         21.082 \r\n 2011          313           12.046        9.736        -0.665         0.254 \r\n 2011          314           12.011        8.721        -2.576         0 \r\n 2011          315           11.788        18.401       -1.732         0 \r\n 2011          316           6.167         14.376        2.017         0 \r\n 2011          317           7.319         13.114        3.595         0 \r\n 2011          318           10.896        15.098        3.901         0 \r\n 2011          319           10.549        13.812       -0.703         0 \r\n 2011          320           10.573        6.625        -5.016         0 \r\n 2011          321           11.687        9.204        -7.347         0 \r\n 2011          322           9.883         14.517        2.273         0 \r\n 2011          323           2.562         12.054       -4.255         0 \r\n 2011          324           9.318         1.823        -7.176         0 \r\n 2011          325           3.4           3.654        -6.987         0 \r\n 2011          326           3.48          6.028        -0.125         0 \r\n 2011          327           4.203         11.092       -0.934         0 \r\n 2011          328           10.257        21.746        2.229         0 \r\n 2011          329           3.037         14.586        6.277         2.794 \r\n 2011          330           3.314         10.94         2.122         0 \r\n 2011          331           6.608         4.194        -7.244         0 \r\n 2011          332           9.803         8.636        -9.421         0 \r\n 2011          333           10.254        7.123        -5.402         0 \r\n 2011          334           6.434         10.928       -6.436         0 \r\n 2011          335           2.46          3.659        -7.881         0 \r\n 2011          336           9.575         3.184        -12.643        4.826 \r\n 2011          337           0.568         3.688        -2.602         23.368 \r\n 2011          338           3.341        -1.103        -10.423        0 \r\n 2011          339           3.573        -5.161        -12.402        0 \r\n 2011          340           10.103       -6.456        -15.378        0 \r\n 2011          341           4.896        -0.233        -11.602        0 \r\n 2011          342           4.042        -1.316        -10.014        0 \r\n 2011          343           4.781        -3.347        -15.406        0 \r\n 2011          344           8.672         3.45         -16.711        0 \r\n 2011          345           6.826         5.946        -3.024         0 \r\n 2011          346           1.751         6.344         1.993         0 \r\n 2011          347           2.197         4.979         1.457         0 \r\n 2011          348           1.274         11.526        1.326         16 \r\n 2011          349           5.887         1.912        -5.696         0 \r\n 2011          350           7.259         3.131        -8.804         0 \r\n 2011          351           8.125         9.484        -5.093         0 \r\n 2011          352           7.059         13.002       -1.118         0 \r\n 2011          353           4.833         4.259        -1.819         0 \r\n 2011          354           4.034         1.002        -3.645         0 \r\n 2011          355           7.328         7.455        -4.422         0 \r\n 2011          356           8.059         0.883        -8.112         0 \r\n 2011          357           9.008         4.316        -10.658        0 \r\n 2011          358           9.11          9.739        -7.031         0 \r\n 2011          359           9.219         8.856        -4.486         0 \r\n 2011          360           5.444         9.965        -4.729         0 \r\n 2011          361           8.604         6.367        -2.135         0 \r\n 2011          362           8.816         11.933       -4.691         0 \r\n 2011          363           6.861         13.316        0.189         0 \r\n 2011          364           3.294         9.814        -1.249         1.27 \r\n 2011          365           4.48          13.072       -0.306         0 \r\n 2012          1             9.598992      5.193333     -4.205555      1.52 \r\n 2012          2             7.499689      0.225        -10.50889      0 \r\n 2012          3             8.079017      8.907778     -10.59778      0 \r\n 2012          4             9.18496       12.65722     -1.733333      0 \r\n 2012          5             5.717033      19.40222     -0.9783334     0 \r\n 2012          6             7.502704      12.205       -1.041667      0 \r\n 2012          7             5.863739      6.713889     -5.461111      0 \r\n 2012          8             9.515131      7.907778     -4.355         0 \r\n 2012          9             9.589782      11.83944     -5.17          0 \r\n 2012          10            2.77141       15.00278     -4.097778      0 \r\n 2012          11            3.754136      4.185        -7.243889      0 \r\n 2012          12            3.070348     -7.072778     -12.85556      0 \r\n 2012          13            10.39779     -1.579444     -15.43833      0 \r\n 2012          14            6.36896       6.959445     -6.226111      0 \r\n 2012          15            10.12825      13.32167     -3.787778      0 \r\n 2012          16            8.558783      6.634444     -5.807778      2.29 \r\n 2012          17            10.74647     -4.855        -15.21444      0 \r\n 2012          18            10.3836       3.286667     -15.37278      0 \r\n 2012          19            10.93747     -7.561666     -15.41278      0 \r\n 2012          20            5.93391      -7.261111     -14.43389      0 \r\n 2012          21            5.494924     -4.087778     -14.01         0 \r\n 2012          22            1.672166      8.573889     -4.864444      0 \r\n 2012          23            5.008752      0.2372222    -7.999444      0 \r\n 2012          24            8.101835      2.536667     -10.87889      0 \r\n 2012          25            8.369874      6.080555     -4.137222      0 \r\n 2012          26            8.099113      9.070556     -5.168334      0 \r\n 2012          27            3.377868      5.122778     -4.193889      0 \r\n 2012          28            11.46195      7.310555     -6.986111      0 \r\n 2012          29            10.55961      5.270555     -6.114444      0 \r\n 2012          30            11.83051      20.21         3.172222      0 \r\n 2012          31            11.85811      15.43111      1.007222      0 \r\n 2012          32            10.72369      16.22833     -3.218889      0 \r\n 2012          33            8.57285       13.52333     -3.897778      0 \r\n 2012          34            2.071712      7.787778      1.114444      0 \r\n 2012          35            5.704096      1.298333     -1.726111      9 \r\n 2012          36            8.210775     -1.176111     -7.72          7 \r\n 2012          37            10.61622      3.405555     -11.64889      0 \r\n 2012          38            5.184933      0.395        -3.532222      0 \r\n 2012          39            13.76314     -0.4083333    -7.201667      0 \r\n 2012          40            8.209101      2.452778     -5.010556      0 \r\n 2012          41            15.00365     -1.358889     -15.40611      0 \r\n 2012          42            15.53345     -8.205        -18.35833      0 \r\n 2012          43            15.03999     -0.1394444    -19.35111      0 \r\n 2012          44            5.51816      -0.3927778    -5.353889      0.76 \r\n 2012          45            13.57373      6.083333     -9.835556      1.76 \r\n 2012          46            12.58502      5.518333     -4.087778      0 \r\n 2012          47            15.00658      6.396111     -4.808889      0 \r\n 2012          48            14.97032      7.623333     -2.661667      0 \r\n 2012          49            15.28538      5.211667     -7.2           0 \r\n 2012          50            14.91472      7.311111     -7.475         0 \r\n 2012          51            3.36916       5.735556      0.6994445     3.56 \r\n 2012          52            14.30864      8.407778      2.944444E-02                0 \r\n 2012          53            14.35976      12.095        1.493333      0 \r\n 2012          54            2.862473      7.628334     -1.008333      0 \r\n 2012          55            13.81857      4.871666     -4.201667      7 \r\n 2012          56            16.80129      3.329444     -9.224444      0 \r\n 2012          57            16.11127      12.475       -1.408333      0 \r\n 2012          58            16.74125      4.095556     -8.263333      0 \r\n 2012          59            3.547853      12.70611      0.7211111     0 \r\n 2012          60            7.288968      8.831667     -3.271667      12 \r\n 2012          61            14.99017      11.36611     -5.651111      0 \r\n 2012          62            11.88289      8.883333     -1.745         0 \r\n 2012          63            16.42536      5.460556     -4.731667      0 \r\n 2012          64            12.24719      11.79556     -6.09          0 \r\n 2012          65            17.42056      14.27167     -6.809444      0 \r\n 2012          66            16.41799      22.35667      7.861667      0 \r\n 2012          67            4.461915      17.44667      0.3977778     0 \r\n 2012          68            18.95586      11.19556     -4.792778      0 \r\n 2012          69            18.94816      16.88        -3.205555      0 \r\n 2012          70            19.3176       20.60611      3.546667      0 \r\n 2012          71            4.319815      10.21333      5.627778      0 \r\n 2012          72            15.70557      20.42611      5.821667      9.4 \r\n 2012          73            19.23307      27.16389      4.418889      0 \r\n 2012          74            15.40282      27.48278      11.04833      0 \r\n 2012          75            12.09198      25.84889      7.007222      0 \r\n 2012          76            14.09306      26.22222      11.76056      0 \r\n 2012          77            14.60653      27.68444      15.92722      0 \r\n 2012          78            15.82527      27.17389      17.55222      0 \r\n 2012          79            5.226173      22.92333      13.22944      0 \r\n 2012          80            5.102244      14.5          11.93056      3.05 \r\n 2012          81            6.757579      17.015        12.14833      9.14 \r\n 2012          82            16.57642      18.59667      8.621111      4.06 \r\n 2012          83            16.81511      21.35222      6.97          0 \r\n 2012          84            21.55084      26.07889      7.466667      0 \r\n 2012          85            20.54994      27.13778      7.240556      0 \r\n 2012          86            16.23193      27.46056      13.29167      0 \r\n 2012          87            21.57826      26.33222      11.88333      0 \r\n 2012          88            19.47544      24.78278      6.516667      0 \r\n 2012          89            8.960924      20.51278      12.28833      7.37 \r\n 2012          90            16.78413      24.34056      10.53944      27.94 \r\n 2012          91            17.51816      31.235        12.72389      0.25 \r\n 2012          92            21.98589      31.48611      13.90611      0 \r\n 2012          93            21.5279       32.2          14.00056      0 \r\n 2012          94            19.92272      21.69889      10.12889      0 \r\n 2012          95            9.664307      17.92         10.63889      0 \r\n 2012          96            22.54043      18.65167      5.818889      0.25 \r\n 2012          97            23.53375      18.39111      3.602222      0 \r\n 2012          98            16.09188      17.49055      5.113333      0 \r\n 2012          99            24.23885      21.7          0.9533333     1.52 \r\n 2012          100           24.6322       20.19167      2.523889      0 \r\n 2012          101           24.9864       16.64611      0.2844445     0 \r\n 2012          102           26.3464       14.94667     -0.5372222     0 \r\n 2012          103           4.939921      10.71667      3.956111      0 \r\n 2012          104           12.29605      24.04833      8.937778      14.22 \r\n 2012          105           2.841874      20.91556      9.523889      0.25 \r\n 2012          106           19.61817      21.92278      6.493889      77.98 \r\n 2012          107           22.01913      15.81778      4.632778      0 \r\n 2012          108           21.34929      22.70222      4.168334      0 \r\n 2012          109           17.92796      23.74944      11.34444      0.762 \r\n 2012          110           7.403728      18.49556      6.318889      5.842 \r\n 2012          111           26.76944      15.14444      2.963333      0 \r\n 2012          112           18.89578      22.51667      3.818333      0 \r\n 2012          113           13.53814      15.61556      4.334445      0 \r\n 2012          114           27.00482      21.27778      1.648889      0 \r\n 2012          115           23.63671      31.57667      8.479445      0 \r\n 2012          116           23.86656      33.23722      14.01778      0 \r\n 2012          117           24.61298      23.21722      11.985        0 \r\n 2012          118           12.87093      16.36722      8.802778      5.08 \r\n 2012          119           13.79002      16.80445      7.739444      0 \r\n 2012          120           3.44582       10.75111      8.058333      14.224 \r\n 2012          121           19.99088      20.78         8.788333      0 \r\n 2012          122           22.58481      28.83444      13.48889      11.684 \r\n 2012          123           13.52981      28.14611      17.80889      10.16 \r\n 2012          124           24.85954      28.17556      16.07389      4.318 \r\n 2012          125           22.13377      31.19722      18.59611      0 \r\n 2012          126           25.16623      32.45778      20.41889      0 \r\n 2012          127           18.26927      25.845        14.68         23.876 \r\n 2012          128           25.53923      20.79389      10.66278      0 \r\n 2012          129           21.93678      20.28555      8.016111      0 \r\n 2012          130           26.55918      21.41222      5.915555      0 \r\n 2012          131           28.21162      28.60111      9.94          0 \r\n 2012          132           24.35838      24.06444      11.81222      0 \r\n 2012          133           21.94155      21.76278      10.12222      0 \r\n 2012          134           28.00417      24.98056      10.10778      0 \r\n 2012          135           28.50708      28.32167      9.392222      0 \r\n 2012          136           28.34556      31.06667      14.45111      0 \r\n 2012          137           29.24467      26.71778      8.623889      0 \r\n 2012          138           26.34075      31.89056      13.87833      0 \r\n 2012          139           25.15074      32.20278      18.305        0 \r\n 2012          140           19.60272      30.13611      16.84833      3.81 \r\n 2012          141           23.6437       22.42722      11.43278      0.254 \r\n 2012          142           29.67386      25.16         7.12          0 \r\n 2012          143           27.46625      29.34945      13.51056      0 \r\n 2012          144           26.36964      33.18945      17.47         0 \r\n 2012          145           14.36571      24.83667      13.55944      0 \r\n 2012          146           13.87296      23.88833      12.59278      0 \r\n 2012          147           15.94622      34.10778      17.06889      0 \r\n 2012          148           27.59721      33.5          20.36         0 \r\n 2012          149           30.09371      28.50111      15.21556      0 \r\n 2012          150           30.30427      25.67778      11.82556      0 \r\n 2012          151           19.01159      22.09         9.795555      7.112 \r\n 2012          152           11.0614       16.08222      7.073889      0 \r\n 2012          153           21.56813      20.32778      5.641111      0 \r\n 2012          154           30.57721      28.16055      8.973333      0 \r\n 2012          155           22.29764      31.51944      14.19833      0 \r\n 2012          156           29.63982      32.29778      17.92444      0 \r\n 2012          157           27.35299      30.655        15.43833      0 \r\n 2012          158           26.24085      30.09056      15.40222      0 \r\n 2012          159           25.15689      29.57556      16.88333      0 \r\n 2012          160           29.1104       31.205        16.32389      0 \r\n 2012          161           30.40998      32.72667      17.30944      0 \r\n 2012          162           20.85219      32.28444      18.69722      40.64 \r\n 2012          163           29.06204      27.41444      14.71611      0 \r\n 2012          164           28.78655      25.40389      12.68056      0 \r\n 2012          165           22.05908      29.07944      15.14056      0 \r\n 2012          166           24.42315      33.21222      18.18222      11.43 \r\n 2012          167           7.471135      25.18667      17.215        33.528 \r\n 2012          168           18.36561      27.2          16.81278      1.27 \r\n 2012          169           26.70002      32.82333      16.71278      0.254 \r\n 2012          170           28.74619      34.32167      24.02056      0 \r\n 2012          171           28.82009      32.69944      23.36778      0 \r\n 2012          172           13.49133      29.97833      16.10833      20.828 \r\n 2012          173           30.31046      27.82944      14.40056      0 \r\n 2012          174           29.77748      28.59889      13.225        0 \r\n 2012          175           18.38378      29.97222      17.29722      4.572 \r\n 2012          176           28.28585      32.91945      22.94111      0 \r\n 2012          177           28.20903      30.09389      21.69         0 \r\n 2012          178           28.69779      30.43611      18.63833      0 \r\n 2012          179           29.11329      37.46722      23.88167      0 \r\n 2012          180           23.89491      36.30167      24.05278      0 \r\n 2012          181           18.12139      34.00222      23.55667      1.27 \r\n 2012          182           23.43599      34.20778      21.04722      0 \r\n 2012          183           26.13853      34.085        20.705        0 \r\n 2012          184           27.44263      34.24222      22.68333      0 \r\n 2012          185           27.60295      35.93889      23.78889      0 \r\n 2012          186           27.97029      36.59333      24.43222      0 \r\n 2012          187           28.24763      37.33611      24.88889      0 \r\n 2012          188           28.45944      38.02         24.22944      0 \r\n 2012          189           27.9569       34.425        22.565        0 \r\n 2012          190           16.78312      29.52056      21.39222      0 \r\n 2012          191           27.86571      32.14611      20.35833      0 \r\n 2012          192           29.85209      30.53944      17.71389      0 \r\n 2012          193           27.08462      32.65111      15.78         0 \r\n 2012          194           27.53679      34.74         17.96611      0 \r\n 2012          195           25.32231      33.60889      20.09889      0 \r\n 2012          196           21.93749      35.32611      19.07222      0 \r\n 2012          197           28.3729       35.92445      20.05611      0 \r\n 2012          198           28.53652      34.61555      20.21667      0 \r\n 2012          199           27.97197      37.01278      22.53111      0 \r\n 2012          200           26.36127      38.32222      23.61722      0 \r\n 2012          201           28.70047      37.28722      21.93389      0 \r\n 2012          202           27.62618      34.53611      21.02611      0 \r\n 2012          203           27.05008      35.31389      19.06833      0 \r\n 2012          204           26.72091      39.79667      21.88         0 \r\n 2012          205           27.54018      39.33167      21.27         0 \r\n 2012          206           27.4603       38.74778      24.91722      0 \r\n 2012          207           26.3227       40.425        22.65389      0 \r\n 2012          208           24.8837       36.16611      21.385        0 \r\n 2012          209           29.30923      30.87         17.525        0 \r\n 2012          210           23.53287      32.355        17.24111      0 \r\n 2012          211           28.04122      36.84         19.64556      0 \r\n 2012          212           22.10815      35.94833      20.7          0 \r\n 2012          213           26.62009      36.26667      17.98611      0 \r\n 2012          214           26.3727       36.96         20.35667      0 \r\n 2012          215           24.52711      35.795        20.72111      0 \r\n 2012          216           24.17571      35.63278      19.41945      0 \r\n 2012          217           18.85023      29.27944      15.35444      0 \r\n 2012          218           28.76981      30.81111      13.29889      0 \r\n 2012          219           27.55488      34.83111      16.99833      0 \r\n 2012          220           25.00018      38.375        19.31167      2.54 \r\n 2012          221           21.79012      36.12722      18.26056      0 \r\n 2012          222           23.97332      30.18722      17.12556      0 \r\n 2012          223           26.57492      26.96222      12.73278      0 \r\n 2012          224           23.50017      27.73278      10.51278      0.762 \r\n 2012          225           15.33194      30.525        18.13278      0 \r\n 2012          226           20.64046      27.93778      13.78389      0 \r\n 2012          227           25.20081      29.17556      12.04889      0 \r\n 2012          228           23.84006      34.19667      14.14778      0 \r\n 2012          229           20.64683      26.10722      11.36333      0 \r\n 2012          230           27.09747      27.21333      8.192778      0 \r\n 2012          231           10.87806      24.59222      7.547222      0.254 \r\n 2012          232           24.59841      27.88278      9.272223      0.254 \r\n 2012          233           25.00474      32.17222      10.09167      0 \r\n 2012          234           25.17276      35.00056      12.43556      0 \r\n 2012          235           23.47765      34.18278      15.01722      0 \r\n 2012          236           20.90679      33.52333      19.56556      0 \r\n 2012          237           17.5187       25.56944      19.25945      0.508 \r\n 2012          238           2.446934      23.36944      18.95555      60.706 \r\n 2012          239           19.02938      29.91778      18.84778      0 \r\n 2012          240           23.0874       32.60444      16.215        0 \r\n 2012          241           22.62827      34.31055      16.90167      0 \r\n 2012          242           22.39017      35.20722      16.98556      0 \r\n 2012          243           22.92704      36.11833      18.905        0 \r\n 2012          244           18.40082      33.63667      15.54444      0 \r\n 2012          245           18.08358      32.74611      19.29611      0 \r\n 2012          246           22.46951      33.22889      14.97667      0 \r\n 2012          247           8.590099      30.66111      19.64611      0 \r\n 2012          248           22.12741      36.50611      18.71611      0 \r\n 2012          249           21.3353       31.565        15.47667      0 \r\n 2012          250           21.74394      31.93833      11.29944      0 \r\n 2012          251           10.82706      24.18111      11.53667      0 \r\n 2012          252           22.97511      28.97778      7.736667      0 \r\n 2012          253           23.01028      25.87611      8.211111      0 \r\n 2012          254           22.48952      29.89611      9.886111      0 \r\n 2012          255           19.8497       34.41833      14.32389      0 \r\n 2012          256           7.896012      26.97778      12.57         32.766 \r\n 2012          257           12.37518      18.26333      9.815         3.81 \r\n 2012          258           21.71982      25.15833      7.336667      0 \r\n 2012          259           21.49352      25.60778      6.880556      0 \r\n 2012          260           11.50708      24.81         12.63833      0 \r\n 2012          261           8.247242      19.35444      9.212778      4.826 \r\n 2012          262           21.06697      21.90833      3.494444      0 \r\n 2012          263           19.31538      31.89222      9.963889      0 \r\n 2012          264           13.15304      24.99222      8.013333      0 \r\n 2012          265           20.14416      24.96         8.367222      0 \r\n 2012          266           21.73401      18.57389      2.844445      0 \r\n 2012          267           20.29669      21.40167      8.777778E-02                0 \r\n 2012          268           13.76687      23.49667      5.992778      0 \r\n 2012          269           18.64265      30.035        10.66722      0 \r\n 2012          270           15.82217      25.48556      8.052222      0 \r\n 2012          271           18.77227      27.08389      3.778333      0 \r\n 2012          272           13.87158      24.84333      3.557222      0 \r\n 2012          273           17.89413      26.97         4.041667      0 \r\n 2012          274           16.08275      28.27278      7.530556      0 \r\n 2012          275           16.60472      24.78333      8.443889      0 \r\n 2012          276           18.57825      24.64556      5.002222      0 \r\n 2012          277           18.4789       27.53111      3.821667      0 \r\n 2012          278           15.74861      16.49778      6.392222      0 \r\n 2012          279           9.143511      11.58889      0.5627778     0 \r\n 2012          280           16.57579      9.456111     -2.232222      0 \r\n 2012          281           19.41222      14.42889     -5.177778      0 \r\n 2012          282           18.2897       21.88722      3.472778      0 \r\n 2012          283           7.350471      14.74111      0.6822222     0 \r\n 2012          284           18.76716      18.69944     -2.306667      0 \r\n 2012          285           15.7309       21.61667      6.37          0 \r\n 2012          286           14.05798      13.35389      3.405         0 \r\n 2012          287           7.589789      24.47222      11.25722      27.432 \r\n 2012          288           15.36124      19.55944      8.529445      13.208 \r\n 2012          289           15.49091      24.235        3.781111      0 \r\n 2012          290           15.57322      26.91667      10.94111      0 \r\n 2012          291           8.984328      19.03056      10.255        1.524 \r\n 2012          292           3.886313      11.25556      6.848333      10.16 \r\n 2012          293           5.908454      9.737223      2.121667      1.27 \r\n 2012          294           15.22756      19.96333      0.525         0 \r\n 2012          295           13.48179      27.19056      7.769444      0 \r\n 2012          296           5.340682      25.235        13.78389      6.604 \r\n 2012          297           7.394768      27.85778      11.86722      0 \r\n 2012          298           5.879733      22.42389      9.556666      6.096 \r\n 2012          299           4.307128      9.793333      0.6294444     20.828 \r\n 2012          300           9.903749      7.324444     -2.844445      0 \r\n 2012          301           13.18021      8.303333     -5.287222      0 \r\n 2012          302           13.46219      11.52222     -1.149444      0 \r\n 2012          303           11.66556      15.03389      4.218333      0 \r\n 2012          304           7.490771      13.11333      0.5666667     0 \r\n 2012          305           11.97852      16.67945     -1.802222      0 \r\n 2012          306           12.15956      17.99389      3.196111      0 \r\n 2012          307           7.66804       13.79333      2.330555      0 \r\n 2012          308           12.59142      13.88222     -2.051111      0 \r\n 2012          309           7.495251      16.88667      1.73          1.778 \r\n 2012          310           1.965451      8.019444      4.58          2.286 \r\n 2012          311           11.35979      14.56278      2.263889      0 \r\n 2012          312           11.26484      13.51111     -1.021111      0 \r\n 2012          313           11.28372      20.33722      3.424444      0 \r\n 2012          314           10.36794      21.62722      6.678333      0 \r\n 2012          315           8.557359      24.79222      11.445        0 \r\n 2012          316           5.83351       11.81444     -5.308333      9.4 \r\n 2012          317           11.61921      6.042222     -6.757222      0 \r\n 2012          318           10.51163      13.59667     -6.071111      0 \r\n 2012          319           10.90368      15.04667      0.4222222     0 \r\n 2012          320           9.322454      15.27056      0.8683333     0 \r\n 2012          321           10.99939      14.14444     -4.282778      0 \r\n 2012          322           10.18983      16.98778      2.931667      0 \r\n 2012          323           7.947719      17.62         5.214445      0 \r\n 2012          324           10.10543      18.205        4.826111      0 \r\n 2012          325           10.36208      18.44389      2.277778E-02                0 \r\n 2012          326           10.04196      23.27611      5.244444      0 \r\n 2012          327           8.814721      18.665        2.952778      0 \r\n 2012          328           10.84134      5.506667     -8.318889      0 \r\n 2012          329           7.132214      8.87         -8.601111      0 \r\n 2012          330           4.451866      7.690556     -1.803333      0 \r\n 2012          331           5.457996      1.513333     -10.64056      0 \r\n 2012          332           8.746141      6.393889     -11.925        0 \r\n 2012          333           9.904629      10.20278     -8.59          0 \r\n 2012          334           9.106458      13.67611     -1.403333      0 \r\n 2012          335           7.609174      10.01722     -1.172222      0 \r\n 2012          336           1.504987      17.51389      1.625         0 \r\n 2012          337           5.78218       15.735        0.4533333     0 \r\n 2012          338           6.45412       17.89778      3.103333      0 \r\n 2012          339           9.448184      17.265       -3.317778      0 \r\n 2012          340           4.068398      16.67778     -1.832222      0 \r\n 2012          341           2.332592      10.67333      5.239444      0 \r\n 2012          342           6.351418      8.893333     -1.531667      0 \r\n 2012          343           4.152803      4.684444     -4.471667      0 \r\n 2012          344           5.201262      3.27         -9.167778      1.52 \r\n 2012          345           9.692484     -1.081111     -14.60111      0 \r\n 2012          346           9.011668      7.620555     -8.598333      0 \r\n 2012          347           8.909845      12.10167     -2.758889      0 \r\n 2012          348           7.905306      12.64722     -1.664444      0 \r\n 2012          349           6.596889      13.23389     -3.382222      0 \r\n 2012          350           1.764024      9.305555      0.6972222     11.43 \r\n 2012          351           2.973675      3.441111     -2.067778      0.76 \r\n 2012          352           2.353903      3.500556     -4.458333      0.51 \r\n 2012          353           3.541698      8.267222     -2.957222      0 \r\n 2012          354           2.188189      3.221667     -1.590556      0 \r\n 2012          355           7.086913      0            -8.795555      13.72 \r\n 2012          356           9.374204      0.8411111    -12.69722      0 \r\n 2012          357           9.056341      5.693333     -7.865         0 \r\n 2012          358           8.221075     -3.087222     -11.79056      0 \r\n 2012          359           7.472852     -6.713889     -13.105        0 \r\n 2012          360           8.602324     -9.537778     -15.49889      0 \r\n 2012          361           9.617331     -5.741667     -16.62444      0 \r\n 2012          362           4.68281      -3.622222     -13.05833      0 \r\n 2012          363           4.832739     -3.51         -8.213889      1.52 \r\n 2012          364           8.973652      0.2216667    -13.37333      0 \r\n 2012          365           8.078389      7.323333     -9.782778      0 \r\n 2012          366           4.120523     -1.725        -9.022223      0 \r\n 2013          1             9.647392     -6.388889     -16.36         0 \r\n 2013          2             6.064371      0.6416667    -10.55111      0 \r\n 2013          3             8.756315     -0.5766667    -10.20556      0 \r\n 2013          4             9.615447      2.185        -9.766111      0 \r\n 2013          5             7.786778      4.112778     -7.874444      0 \r\n 2013          6             9.867115      3.937222     -10.19611      0 \r\n 2013          7             7.443251      7.611111     -4.579444      0 \r\n 2013          8             9.311234      8.753333     -4.489444      0 \r\n 2013          9             7.622614      9.966111     -4.959445      0 \r\n 2013          10            2.116553      5.011667      0.29          0 \r\n 2013          11            3.811663      12.35389     -0.8655556     2.03 \r\n 2013          12            4.807995     -0.7577778    -10.67389      0 \r\n 2013          13            10.06574     -4.899445     -13.47444      0 \r\n 2013          14            10.18703     -0.6672222    -15.28056      0 \r\n 2013          15            10.06423      2.11         -11.27167      0 \r\n 2013          16            9.070577      11.47833     -6.605         0 \r\n 2013          17            9.965547      6.152222     -5.128889      0 \r\n 2013          18            10.6248       13.51389     -1.820556      0 \r\n 2013          19            10.13314      13.51444     -3.570555      0 \r\n 2013          20            3.387372     -3.350556     -11.11111      0 \r\n 2013          21            6.364522     -9.162778     -12.85778      0 \r\n 2013          22            3.98621      -3.970556     -12.17722      0 \r\n 2013          23            10.40227      2.163889     -11.87111      0 \r\n 2013          24            6.742967     -5.961667     -16.44889      0 \r\n 2013          25            11.33978      10.48278     -10.25722      0 \r\n 2013          26            9.022387      9.430555     -7.661667      0 \r\n 2013          27            1.123193      8.241111      1.803889      3.3 \r\n 2013          28            3.439038      12.55722      0.7355555     1.27 \r\n 2013          29            1.485435      10.12889     -0.5927778     0.51 \r\n 2013          30            8.613838     -0.3288889    -10.60944      3.56 \r\n 2013          31            11.16749     -8.186111     -19.40667      0 \r\n 2013          32            8.701259     -3.016111     -20.58111      0 \r\n 2013          33            7.270629      4.191111     -5             0 \r\n 2013          34            12.04559      6.522222     -5.314445      0 \r\n 2013          35            9.10495       3.354445     -5.387222      0 \r\n 2013          36            12.94374      11.04111     -4.156111      0 \r\n 2013          37            8.035474      15.17778     -1.213333      0 \r\n 2013          38            3.78516       7.281111     -1.456667      0 \r\n 2013          39            5.331639      1.683333     -3.627222      0 \r\n 2013          40            11.56336      10.055       -1.868889      0 \r\n 2013          41            3.869566      8.478333     -3.944444E-02                0.76 \r\n 2013          42            7.518446      4.863333     -5.170556      0 \r\n 2013          43            12.48169      10.12833     -7.688334      0 \r\n 2013          44            13.1754       12.93056     -4.497778      0 \r\n 2013          45            7.873905      8.059444     -3.595         0 \r\n 2013          46            10.46235      1.136667     -11.09167      0 \r\n 2013          47            11.19374      0.6172222    -12.77167      0 \r\n 2013          48            13.46391      13.50833     -4.334445      0 \r\n 2013          49            5.885427      7.378334     -6.185555      0 \r\n 2013          50            15.91738     -2.067778     -11.94278      0.51 \r\n 2013          51            9.628217     -3.802222     -14.61778      0 \r\n 2013          52            3.418187     -4.577222     -6.837778      0 \r\n 2013          53            15.3252      -4.046667     -13.74278      10.67 \r\n 2013          54            15.75225      2.201111     -16.73056      0 \r\n 2013          55            14.91702      5.042778     -8.270555      0 \r\n 2013          56            9.110142      2.678889     -1.631667      0 \r\n 2013          57            5.390798      0.3055556    -2.71          0 \r\n 2013          58            10.2824       3.767222     -3.811111      2.03 \r\n 2013          59            9.031597      0.4638889    -3.428333      0 \r\n 2013          60            8.249545     -1.253333     -4.856667      0 \r\n 2013          61            14.71329      2.289444     -7.624444      0 \r\n 2013          62            11.96198      6.083333     -3.3           0 \r\n 2013          63            12.34361      7.427222     -0.74          0 \r\n 2013          64            4.208697      1.236667     -4.448889      0 \r\n 2013          65            18.30875      4.434444     -5.753889      0 \r\n 2013          66            16.80967      11.21889     -5.138333      0 \r\n 2013          67            11.43796      14.51056     -1.323333      0 \r\n 2013          68            2.595062      13.19556      3.853333      4.06 \r\n 2013          69            4.965001      4.273334     -4.94          1.78 \r\n 2013          70            16.78195      0.5911111    -7.362778      7.87 \r\n 2013          71            10.40428      2.734444     -6.238889      0 \r\n 2013          72            19.34716      4.583889     -8.994445      0 \r\n 2013          73            19.04341      17.70389      7.944445E-02                0 \r\n 2013          74            12.73298      20.61056      0.8033333     0 \r\n 2013          75            5.676254      4.607222     -1.982222      0 \r\n 2013          76            18.15895      7.883889     -4.054444      0 \r\n 2013          77            18.9209       5.857222     -3.923333      3.05 \r\n 2013          78            18.38361      10.20444     -4.924445      0 \r\n 2013          79            21.57747      2.960556     -8.567223      0 \r\n 2013          80            10.22232      0.8477778    -6.355556      0 \r\n 2013          81            6.101089      2.238889     -2.521111      0 \r\n 2013          82            8.381931      3.612222     -2.318333      0 \r\n 2013          83            10.32528     -1.218889     -4.817222      0.76 \r\n 2013          84            10.43355     -0.3822222    -5.483333      0.76 \r\n 2013          85            22.20884      5.897222     -9.129444      0 \r\n 2013          86            18.75749      11.46        -3.852222      0 \r\n 2013          87            20.54283      16.30889     -3.567778      0 \r\n 2013          88            21.46815      21.04333     -0.1516667     0 \r\n 2013          89            18.22543      20.19333      7.067222      0.51 \r\n 2013          90            22.06465      15.45889      0.4444444     0.51 \r\n 2013          91            23.39927      5.866111     -5.029444      1.52 \r\n 2013          92            23.08488      11.86389     -6.838333      0 \r\n 2013          93            18.56595      12.29611     -1.323889      0 \r\n 2013          94            22.7759       19.01222     -2.772778      0 \r\n 2013          95            16.23808      21.92111      1.445556      0 \r\n 2013          96            18.62465      22.17444      9.846666      0 \r\n 2013          97            15.08144      24.86667      4.206666      0 \r\n 2013          98            16.14535      20.71722      7.568333      7.62 \r\n 2013          99            1.95578       19.755        1.993889      21.844 \r\n 2013          100           3.943714      4.172222      0.3744445     10.414 \r\n 2013          101           6.079904      2.972222     -0.8283333     0.508 \r\n 2013          102           6.944436      7.676111     -1.147778      0 \r\n 2013          103           16.64144      13.79444     -3.801111      1.27 \r\n 2013          104           11.74222      21.62889      6.063889      4.318 \r\n 2013          105           7.361692      8.322778      1.867778      0 \r\n 2013          106           16.3528       10.16722      1.114444      0 \r\n 2013          107           0.8205709     7.731111      2.175555      44.45 \r\n 2013          108           5.893382      3.372778     -5.888889E-02                9.906 \r\n 2013          109           23.92375      8.965        -2.216111      0 \r\n 2013          110           15.94777      10.07722     -4.68          0 \r\n 2013          111           19.63781      20.48944      6.377222      18.542 \r\n 2013          112           8.140144      15.48722      0.63          10.414 \r\n 2013          113           15.16191      5.235556     -1.968333      0 \r\n 2013          114           26.39128      15.19944     -4.281111      0.508 \r\n 2013          115           26.72259      21.14389     -0.9572222     0 \r\n 2013          116           20.78683      20.00111      8.976666      0 \r\n 2013          117           19.00154      19.54445      8.008333      0 \r\n 2013          118           23.66451      27.39056      7.218333      0 \r\n 2013          119           20.15802      29.67889      11.955        0 \r\n 2013          120           20.83021      27.86167      14.65056      0 \r\n 2013          121           3.730313      15.07889      1.396111      34.29 \r\n 2013          122           14.39501      7.923889      0.165         18.034 \r\n 2013          123           8.415971      7.621111      0.2261111     0 \r\n 2013          124           7.563538      7.666667      1.665556      2.032 \r\n 2013          125           8.323191      12.18444      5.428333      0 \r\n 2013          126           23.18482      19.88056      9.045         0 \r\n 2013          127           26.14372      23.84833      5.288333      0 \r\n 2013          128           9.812477      22.665        13.39278      6.35 \r\n 2013          129           11.89587      21.09667      13.21667      11.684 \r\n 2013          130           23.31114      21.54722      9.698334      0 \r\n 2013          131           29.37199      17.20667      4.139444      0 \r\n 2013          132           29.55383      20.09556      0.4411111     0 \r\n 2013          133           27.19419      28.25444      8.154445      0 \r\n 2013          134           27.92198      36.87778      16.89167      0 \r\n 2013          135           27.52578      29.50945      16.58833      0.762 \r\n 2013          136           16.58379      29.465        16.47222      5.334 \r\n 2013          137           22.63979      29.41556      15.67167      0 \r\n 2013          138           23.41284      29.49667      16.31833      2.54 \r\n 2013          139           13.26211      27.77555      14.75333      7.366 \r\n 2013          140           23.40434      24.56444      13.44444      0 \r\n 2013          141           18.84332      19.78944      12.18167      0 \r\n 2013          142           9.832951      16.95278      10.98667      1.27 \r\n 2013          143           24.89258      22.76278      10.69722      0 \r\n 2013          144           25.14207      24.13722      8.489445      2.794 \r\n 2013          145           18.01546      28.32944      15.66722      12.7 \r\n 2013          146           14.93804      30.13222      18.63056      2.54 \r\n 2013          147           12.29228      25.44667      15.35278      30.734 \r\n 2013          148           23.08334      28.08945      16.70611      0 \r\n 2013          149           4.615989      25.47611      16.785        34.798 \r\n 2013          150           15.1769       23.78889      14.45556      4.318 \r\n 2013          151           27.53717      27.09667      13.58889      0 \r\n 2013          152           9.351092      17.865        12.28389      0.254 \r\n 2013          153           19.57764      20.40556      10.34389      0 \r\n 2013          154           29.94006      24.18667      9.032222      0 \r\n 2013          155           9.872056      24.21833      15.78722      20.574 \r\n 2013          156           19.59707      22.98056      12.87389      0 \r\n 2013          157           23.20107      24.37556      11.12333      0 \r\n 2013          158           22.04928      24.01167      10.125        0 \r\n 2013          159           6.076847      24.42278      13.02333      30.226 \r\n 2013          160           5.803365      22.22389      14.92611      6.096 \r\n 2013          161           22.70267      27.08278      12.51111      0 \r\n 2013          162           15.60755      33.75611      19.97389      0 \r\n 2013          163           25.14697      32.35556      16.86222      0 \r\n 2013          164           21.6332       27.59889      13.78556      0 \r\n 2013          165           11.63495      32.11945      16.29944      16.51 \r\n 2013          166           14.93076      28.94278      19.15278      2.794 \r\n 2013          167           27.89497      30.00778      18.00889      0 \r\n 2013          168           29.01122      32.32389      17.77167      0 \r\n 2013          169           23.612        29.97222      16.59389      1.524 \r\n 2013          170           23.72685      31.14556      17.305        0 \r\n 2013          171           24.41227      33.08222      21.14333      0.254 \r\n 2013          172           23.11909      35.37222      24.91111      2.032 \r\n 2013          173           25.07366      33.73333      23.12722      0 \r\n 2013          174           13.69603      28.43722      17.685        19.558 \r\n 2013          175           11.92803      28.43667      21.46722      26.924 \r\n 2013          176           19.09265      31.57055      21.66833      0 \r\n 2013          177           29.37915      34.56667      20.77278      0 \r\n 2013          178           12.9365       27.00611      18.74278      2.032 \r\n 2013          179           29.69844      29.96167      19.11333      0 \r\n 2013          180           21.38354      27.95111      16.56056      2.794 \r\n 2013          181           27.63079      26.75111      14.09056      0 \r\n 2013          182           27.4083       29.14444      11.99889      0 \r\n 2013          183           23.75938      29.32833      12.56778      5.842 \r\n 2013          184           22.64079      29.61833      13.95167      0 \r\n 2013          185           26.59007      30.43222      14.24167      0 \r\n 2013          186           19.7702       31.31         18.7          0 \r\n 2013          187           21.99803      31.32167      20.26056      0 \r\n 2013          188           25.917        32.58         22.28         1.317 \r\n 2013          189           29.5          27.9          18.29         0 \r\n 2013          190           26.667        28.3          14.39         0 \r\n 2013          191           26.7          30.02         17.27         0 \r\n 2013          192           20.833        27.62         20.73         0 \r\n 2013          193           29.45         29.09         19            0 \r\n 2013          194           25.1          30.45         17.35         0 \r\n 2013          195           27.7          31.84         19.61         0 \r\n 2013          196           28.3          32.53         20.47         0 \r\n 2013          197           28.367        32.03         21.97         0 \r\n 2013          198           26.133        32.45         20.02         0 \r\n 2013          199           24.333        30.05         16.25         0 \r\n 2013          200           21.75         29.34         18.53         0.263 \r\n 2013          201           27.5          32.03         18.83         0 \r\n 2013          202           23.3          25.98         16.19         0 \r\n 2013          203           28.617        27.39         12.93         0 \r\n 2013          204           18.167        27.34         16.67         5.267 \r\n 2013          205           28.983        24.03         12.05         0 \r\n 2013          206           27.333        21.6          9.6           0 \r\n 2013          207           29.283        24.17         8.61          0 \r\n 2013          208           8.508         19.59         10.55         0.79 \r\n 2013          209           9.732         22.95         16.87         0.263 \r\n 2013          210           25.633        27.94         15.08         0 \r\n 2013          211           23.7          29.78         16.98         0.79 \r\n 2013          212           20.583        28.06         16.57         0 \r\n 2013          213           22.483        26.1          15.21         0 \r\n 2013          214           21.9          27.5          12.56         0 \r\n 2013          215           12.42         28.64         18.53         0 \r\n 2013          216           19            30.75         19.2          3.95 \r\n 2013          217           24.9          27.4          17.02         0 \r\n 2013          218           14.667        25.74         14.57         0 \r\n 2013          219           21.6          26.33         16.47         0 \r\n 2013          220           23.217        27.53         12.36         0 \r\n 2013          221           21.667        28.72         15.8          0 \r\n 2013          222           23.3          28.41         16.34         0 \r\n 2013          223           22.817        26.06         12.04         0 \r\n 2013          224           19.233        25.06         10.67         0 \r\n 2013          225           6.598         18.35         13.6          39.24 \r\n 2013          226           18.283        23.67         14.47         5.53 \r\n 2013          227           25.167        25.7          11.55         0 \r\n 2013          228           25.867        25.28         12.5          0 \r\n 2013          229           22.533        27.52         15.56         0 \r\n 2013          230           23.967        29.22         18.87         0 \r\n 2013          231           21.833        30.23         19.75         0 \r\n 2013          232           12.223        26.46         19.16         0 \r\n 2013          233           21.333        30.7          18.25         0 \r\n 2013          234           18.5          31.43         20.33         0 \r\n 2013          235           23.583        31.62         21.04         0 \r\n 2013          236           23.917        32.45         21.69         0 \r\n 2013          237           24.15         32.71         21.41         0 \r\n 2013          238           23.3          32.7          19.04         0 \r\n 2013          239           23.583        33.47         20            0 \r\n 2013          240           23.2          33.61         21.24         0 \r\n 2013          241           17.417        31.73         18.92         0 \r\n 2013          242           23.367        26.74         15.91         7.11 \r\n 2013          243           24.567        25.01         12.24         0 \r\n 2013          244           22.9          27.35         9.67          0 \r\n 2013          245           20.083        28.7          15.73         0 \r\n 2013          246           12.427        27.61         19.16         1.58 \r\n 2013          247           21.733        31.33         18.53         0 \r\n 2013          248           18.367        31.58         20.24         0 \r\n 2013          249           20.733        33.57         19.12         0 \r\n 2013          250           21.683        34.7          21.14         0 \r\n 2013          251           20.3          33.92         18.81         1.053 \r\n 2013          252           14.183        28.75         19.94         8.429 \r\n 2013          253           21.883        25.57         13.32         0 \r\n 2013          254           22.2          23.44         8.81          0 \r\n 2013          255           16.683        23.73         8.23          0 \r\n 2013          256           6.507         19.33         15.4          3.687 \r\n 2013          257           14.067        18.33         9.82          6.583 \r\n 2013          258           5.25          19.36         12.34         15.271 \r\n 2013          259           15.01546      22.56         8.39          0.762 \r\n 2013          260           4.656726      19.94         12.54         60.9 \r\n 2013          261           18.08074      31.63         18.19         0 \r\n 2013          262           6.854503      25.8          13.53         0 \r\n 2013          263           20.14994      19.96         6.996111      0 \r\n 2013          264           20.23443      24.63         5.652778      0 \r\n 2013          265           19.7475       27.15         10.14         0 \r\n 2013          266           19.12195      25.88         10.92         0 \r\n 2013          267           13.92107      22.77         12.94         0 \r\n 2013          268           17.18765      26.62         11.29         0 \r\n 2013          269           16.93088      30.43         15.91         0 \r\n 2013          270           12.41097      31.22         18.57         0 \r\n 2013          271           14.30889      22.15         9.48          7.112 \r\n 2013          272           18.20798      25.97         8.29          0 \r\n 2013          273           16.98874      27.06         10.23         0 \r\n 2013          274           17.79009      27.05         13.69         0 \r\n 2013          275           14.10466      29.45         13.4          0 \r\n 2013          276           10.99391      25.54         14.92         8.89 \r\n 2013          277           7.67968       25.04         9.15          48.26 \r\n 2013          278           12.04747      12.47         4.037778      0 \r\n 2013          279           3.451933      9.01          3.866111      2.794 \r\n 2013          280           16.89771      24.72         3.997222      0.254 \r\n 2013          281           15.97298      25.76         9.15          0 \r\n 2013          282           16.37135      26.35         11.25         0 \r\n 2013          283           15.3893       27.66         11.81         0 \r\n 2013          284           11.01325      26.01         9.51          0 \r\n 2013          285           16.15288      18.78         6.157778      0 \r\n 2013          286           15.53989      21.43         2.248889      0 \r\n 2013          287           1.973741      14.12         7.056111      37.846 \r\n 2013          288           2.604566      12.04         5.763889      0 \r\n 2013          289           12.54646      13.6          3.602778      0.254 \r\n 2013          290           12.35688      15.35        -0.6838889     0 \r\n 2013          291           11.06174      12.07        -7.777778E-02                0 \r\n 2013          292           13.65182      15.59         1.337778      0 \r\n 2013          293           9.420928      17.23         3.461111      0 \r\n 2013          294           11.44093      11.24        -1.666111      0 \r\n 2013          295           3.882838      5.472222     -5.722222E-02                3.048 \r\n 2013          296           3.036435      4.673889     -1.403889      1.778 \r\n 2013          297           13.6166       9.71         -2.102222      0 \r\n 2013          298           12.3395       15.36        -1.535         0 \r\n 2013          299           12.9419       9.9          -0.5322222     0 \r\n 2013          300           13.24415      20.08        -2.253889      0 \r\n 2013          301           9.652458      10.62         2.147778      0.254 \r\n 2013          302           3.538809      10.06         2.997222      1.016 \r\n 2013          303           4.021087      6.328889      3.38          2.286 \r\n 2013          304           10.35865      13.55         1.076111      20 \r\n 2013          305           10.09592      16.12167      3.525556      0 \r\n 2013          306           12.14122      14.975        1.617778      1.52 \r\n 2013          307           7.716398      14.54389      3.195         0 \r\n 2013          308           8.8102        11.91         3.217778      0 \r\n 2013          309           0.732062      4.208889     -0.1977778     0 \r\n 2013          310           6.619833      4.532222     -1.15          23.8 \r\n 2013          311           11.85392      6.167778     -1.92          0 \r\n 2013          312           8.694853      14.68        -0.8561111     0 \r\n 2013          313           11.17922      12.69         1.906111      0 \r\n 2013          314           9.777517      10.88        -3.946111      0 \r\n 2013          315           4.100008      7.5          -11.18         0 \r\n 2013          316           11.28933     -1.292222     -13.82         0 \r\n 2013          317           10.91566      11.49        -4.98          0 \r\n 2013          318           6.396677      11.44         0.6311111     0 \r\n 2013          319           9.620974      12.14        -1.332222      0 \r\n 2013          320           6.842697      16.01         6.41          0 \r\n 2013          321           8.370795      10.85         3.017222      1.78 \r\n 2013          322           9.996153      10.23        -2.446111      1.27 \r\n 2013          323           9.251614      15.23        -1.2           0 \r\n 2013          324           7.554997      11.03         1.056111      0 \r\n 2013          325           2.046299      1.39         -7.861111      0 \r\n 2013          326           6.576542     -2.345        -12.7          3.05 \r\n 2013          327           9.883109     -7.506111     -13.98         0 \r\n 2013          328           9.599328     -0.9377778    -14.36         0 \r\n 2013          329           8.057371      5.956111     -3.46          0 \r\n 2013          330           8.919977     -2.527778     -10.24         0 \r\n 2013          331           9.197394     -0.9677778    -13.96         0 \r\n 2013          332           8.217055     -7.777778E-02               -10.28         0 \r\n 2013          333           8.817317      5.18         -10.85         0 \r\n 2013          334           8.891842      10.49        -0.8661111     0 \r\n 2013          335           5.766521      5.906111     -5.122222      0 \r\n 2013          336           8.483253      11.65        -2.456111      0 \r\n 2013          337           5.405494      6.652222     -3.611111E-02                0 \r\n 2013          338           1.161335     -0.1177778    -11.68         0 \r\n 2013          339           7.453969     -11.46        -16.97         0 \r\n 2013          340           8.615472     -14.06        -21.17         0 \r\n 2013          341           5.840168     -13           -22.25         0 \r\n 2013          342           4.839773     -9.21         -14.89         0 \r\n 2013          343           9.042441     -10.48        -20.41         3 \r\n 2013          344           7.176636     -3.833889     -12.23         0 \r\n 2013          345           8.952383     -7.697778     -20.2          0.51 \r\n 2013          346           8.637452      0.5177778    -11.48         0 \r\n 2013          347           8.020066     -0.7861111    -8.96          0 \r\n 2013          348           4.37127      -8.53         -13.02         0 \r\n 2013          349           3.670107     -6.398889     -12.28         0 \r\n 2013          350           7.283692      2.552222     -14.08         0 \r\n 2013          351           8.494096      2.067222     -5.791111      0 \r\n 2013          352           5.552283      8.05         -6.562222      0 \r\n 2013          353           4.518018      1.702222     -9.16          0 \r\n 2013          354           2.172824     -9.2          -11.54         0 \r\n 2013          355           3.684468     -6.095        -12.21         0 \r\n 2013          356           7.909451     -7.992222     -17.83         4.57 \r\n 2013          357           8.521436     -14.75        -22.93         0 \r\n 2013          358           2.49885      -6.38         -23.29         0 \r\n 2013          359           4.399155      3.017222     -7.88          0 \r\n 2013          360           7.262716      6.996111     -5.466111      0 \r\n 2013          361           7.860633      15.21        -4.696111      0 \r\n 2013          362           8.287017      14.96        -13.18         0 \r\n 2013          363           8.362882     -13.51        -19.52         0 \r\n 2013          364           3.715199      0.4844444    -16.10389      0 \r\n 2013          365           7.975561     -8.37         -15.75         0 \r\n 2014          1             9.337         0            -14.4          0 \r\n 2014          2             3.258        -13.3         -20            1.78 \r\n 2014          3             8.727        -15           -21.7          0 \r\n 2014          4             9.215         0            -16.1          0 \r\n 2014          5             8.918         0.6          -18.3          0 \r\n 2014          6             6.522        -14.4         -26.1          0 \r\n 2014          7             6.328        -16.1         -26.1          0 \r\n 2014          8             1.787        -6.7          -16.1          0 \r\n 2014          9             10.128       -7.8          -15            0 \r\n 2014          10            6.453        -2.2          -14.4          0 \r\n 2014          11            9.655         0            -5             0 \r\n 2014          12            9.117         3.9          -4.4           0 \r\n 2014          13            8.742         10           -1.7           0 \r\n 2014          14            4.25          6.1          -1.7           0 \r\n 2014          15            10.702        1.1          -13.3          0 \r\n 2014          16            2.307         5.6          -13.9          0 \r\n 2014          17            10.815        4.4          -13.9          0 \r\n 2014          18            7.772         2.8          -14.4          0 \r\n 2014          19            6.723         3.9          -9.4           0 \r\n 2014          20            6.322         15.6         -5             0 \r\n 2014          21            11.507        7.8          -21.7          0 \r\n 2014          22            7.555        -5            -21.7          0 \r\n 2014          23            11.52        -5.6          -22.8          0 \r\n 2014          24            6.142        -10.6         -22.8          0 \r\n 2014          25            11.993        8.9          -10.6          0 \r\n 2014          26            12.083        8.3          -5.6           0 \r\n 2014          27            12.263        10           -20            0 \r\n 2014          28            9.585        -13.3         -21.7          0 \r\n 2014          29            8.703        -7.8          -21.1          0 \r\n 2014          30            10.12         5            -17.2          0 \r\n 2014          31            13.225        4.4          -11.7          0 \r\n 2014          32            10.122       -3.9          -12.2          1.27 \r\n 2014          33            4.44         -6.1          -20            0 \r\n 2014          34            12.912       -5            -19.4          0 \r\n 2014          35            13.883       -2.2          -15.6          1.52 \r\n 2014          36            12.94        -6.1          -18.3          4.83 \r\n 2014          37            7.32         -13.3         -22.8          0 \r\n 2014          38            9.75         -12.8         -23.9          0 \r\n 2014          39            14.567       -10           -19.4          0 \r\n 2014          40            11.803       -5            -13.3          1.02 \r\n 2014          41            9.892        -12.8         -22.8          0 \r\n 2014          42            14.733       -13.3         -22.8          0 \r\n 2014          43            14.183       -8.3          -19.4          0 \r\n 2014          44            11.462       -2.8          -8.9           0 \r\n 2014          45            8.248         8.9          -8.9           2.54 \r\n 2014          46            15.317       -4.4          -13.3          0 \r\n 2014          47            13.433        7.8          -7.8           0 \r\n 2014          48            11.133       -1.7          -7.8           3.05 \r\n 2014          49            3.868         9.4          -2.8           0 \r\n 2014          50            15.817        16.1         -2.2           0 \r\n 2014          51            14.85         8.9          -2.2           0 \r\n 2014          52            12.533        3.3          -7.2           9.4 \r\n 2014          53            5.22          5.6          -6.7           0 \r\n 2014          54            11.855        1.1          -8.3           0 \r\n 2014          55            17.567       -2.8          -8.9           0 \r\n 2014          56            16.167       -4.4          -13.9          0.51 \r\n 2014          57            13.103       -9.4          -19.4          0 \r\n 2014          58            4.148         0            -19.4          0 \r\n 2014          59            15.217       -10           -18.3          0 \r\n 2014          60            16.35         6.1          -14.4          0.51 \r\n 2014          61            1.382        -13.9         -20.6          1.52 \r\n 2014          62            10.13        -17.8         -22.2          0 \r\n 2014          63            14.05        -8.9          -22.2          0 \r\n 2014          64            8.03          0            -13.3          0 \r\n 2014          65            18.99        -0.6          -7.2           0 \r\n 2014          66            16.83         4.4          -5.6           0 \r\n 2014          67            16.95         5.6          -8.9           0 \r\n 2014          68            9.24          1.1          -8.9           0 \r\n 2014          69            14.44         18.3         -4.4           0 \r\n 2014          70            20.16         22.2          3.3           0 \r\n 2014          71            20.03         7.8          -3.3           0 \r\n 2014          72            19.43         8.9          -2.8           0 \r\n 2014          73            18.9          18.3         -2.2           0 \r\n 2014          74            17.18         13.3         -0.6           0 \r\n 2014          75            10.72         14.4         -5.6           0 \r\n 2014          76            16.64         1.7          -6.1           0 \r\n 2014          77            21.34         12.2         -6.1           0 \r\n 2014          78            20.28         11.1         -1.1           0 \r\n 2014          79            16.81         10           -2.2           0 \r\n 2014          80            22.27         16.7         -2.8           0 \r\n 2014          81            11.62         13.9         -6.7           0 \r\n 2014          82            20.79         0.6          -10            0 \r\n 2014          83            19.38         2.2          -10            0 \r\n 2014          84            2.134         6.7          -7.8           0 \r\n 2014          85            6.755         2.2          -7.8           0 \r\n 2014          86            23.43         17.2         -3.9           0 \r\n 2014          87            19.23         12.2         -2.2           0.76 \r\n 2014          88            21.19         3.3          -4.4           0 \r\n 2014          89            16.86         12.2         -4.4           0 \r\n 2014          90            7.851         23.3          4.4           0 \r\n 2014          91            3.195         23.9         -6.1           0 \r\n 2014          92            10.08         6.7          -6.7           0 \r\n 2014          93            22.96         8.3          -1.1           0.51 \r\n 2014          94            10.25         3.9          -1.7           3.81 \r\n 2014          95            14.36         4.4          -5             0 \r\n 2014          96            7.333         14.4         -5.6           0 \r\n 2014          97            24.07         17.2          6.1           0 \r\n 2014          98            20.19         17.8          2.2           2.29 \r\n 2014          99            25.52         13.9          0             0 \r\n 2014          100           18.03         25.6          0             0 \r\n 2014          101           1.821         18.9          5             0 \r\n 2014          102           20.77         25            5             0 \r\n 2014          103           25.57         28.9          8.3           21.34 \r\n 2014          104           18.67         8.3          -3.9           51.05 \r\n 2014          105           24.21         5            -6.7           0 \r\n 2014          106           26.27         10.6         -6.7           0 \r\n 2014          107           21.29         20            0             0 \r\n 2014          108           22.09         13.3         -2.2           0 \r\n 2014          109           18.91         19.4         -1.7           0 \r\n 2014          110           26.76         25.6          10            0 \r\n 2014          111           3.803         28.9          13.9          4.83 \r\n 2014          112           8.55          23.3          2.8           4.32 \r\n 2014          113           27.1          20.6          3.3           0 \r\n 2014          114           20.4          12.2          7.2           4.83 \r\n 2014          115           5.294         15            6.7           5.08 \r\n 2014          116           8.28          26.7          6.7           0 \r\n 2014          117           4.806         26.1          8.9           0 \r\n 2014          118           9.5           17.8          11.7          16.26 \r\n 2014          119           5.623         19.4          7.8           0 \r\n 2014          120           20.79         8.3           3.3           3.05 \r\n 2014          121           22.76         7.2           3.9           1.78 \r\n 2014          122           22.67         8.3           2.8           0.51 \r\n 2014          123           26.69         22.2          3.3           0 \r\n 2014          124           24.97         21.1          7.2           0 \r\n 2014          125           26.5          19.4          6.7           0 \r\n 2014          126           12.02         22.8          6.7           0 \r\n 2014          127           27.9          26.1          9.4           0 \r\n 2014          128           17.05         35.6          17.2          0 \r\n 2014          129           6.496         27.8          7.2           0 \r\n 2014          130           5.799         20.6          7.2           0 \r\n 2014          131           24.13         28.3          12.2          2.03 \r\n 2014          132           20.16         24.4          13.3          76.2 \r\n 2014          133           23.05         15            6.1           0.51 \r\n 2014          134           22.97         15.6          5             0 \r\n 2014          135           29.17         18.9          1.7           0 \r\n 2014          136           27.52         11.7          0             0 \r\n 2014          137           9.91          15            3.3           0 \r\n 2014          138           19.14         19.4          6.1           0 \r\n 2014          139           28.14         22.8          6.7           0 \r\n 2014          140           16.61         26.7          14.4          0 \r\n 2014          141           24.78         30            15.6          0 \r\n 2014          142           14.68         28.3          12.8          0 \r\n 2014          143           13.2          23.9          11.7          4.83 \r\n 2014          144           19.48         27.2          12.8          0 \r\n 2014          145           26.2          25            15.6          1.52 \r\n 2014          146           24.42         27.2          16.7          18.54 \r\n 2014          147           23.17         28.3          16.7          0.51 \r\n 2014          148           27.2          30            16.7          0 \r\n 2014          149           20.99         28.3          16.1          0 \r\n 2014          150           22.03         28.9          16.7          0 \r\n 2014          151           26.14         31.7          19.4          0 \r\n 2014          152           20.23         31.1          19.4          0 \r\n 2014          153           19.64         31.7          16.1          37.08 \r\n 2014          154           15.24         27.8          15.6          0 \r\n 2014          155           28.3          30.6          15            114.05 \r\n 2014          156           12.57         25.6          16.1          0 \r\n 2014          157           13.59         25.6          16.7          0 \r\n 2014          158           11.82         30            17.2          0 \r\n 2014          159           28.01         23.3          11.7          30.99 \r\n 2014          160           30.31         21.1          12.2          0 \r\n 2014          161           29.78         21.7          13.3          0 \r\n 2014          162           32.66         25.6          13.3          0 \r\n 2014          163           17.72         27.8          13.9          0 \r\n 2014          164           24.69         22.2          10            0 \r\n 2014          165           13.45         25.6          10.6          0 \r\n 2014          166           21.44         29.4          16.1          9.4 \r\n 2014          167           23.54         27.2          16.7          0 \r\n 2014          168           14.38         31.1          16.7          2.29 \r\n 2014          169           29.13         32.2          17.8          0 \r\n 2014          170           26.02         33.3          22.8          0 \r\n 2014          171           16.12         30.6          18.9          3.56 \r\n 2014          172           23.68         32.2          17.2          33.78 \r\n 2014          173           23.75         30            18.3          0 \r\n 2014          174           24            26.1          17.8          5.59 \r\n 2014          175           18.66         27.8          16.7          0 \r\n 2014          176           9.9           27.2          17.2          0 \r\n 2014          177           20.23         30            18.9          3.05 \r\n 2014          178           19            29.4          18.9          19.05 \r\n 2014          179           6.894         26.7          18.3          17.78 \r\n 2014          180           21.16         26.7          17.2          6.86 \r\n 2014          181           7.147         29.4          19.4          0 \r\n 2014          182           28.29         25.6          17.2          1.27 \r\n 2014          183           27.48         26.7          12.2          0 \r\n 2014          184           13.52         21.1          11.7          0 \r\n 2014          185           25.46         25.6          11.7          0 \r\n 2014          186           20.23         27.2          16.7          53.34 \r\n 2014          187           29.02         27.8          17.8          1.52 \r\n 2014          188           25.7          31.7          19.4          0 \r\n 2014          189           27.69         31.1          16.7          3.81 \r\n 2014          190           8.62          26.1          15.6          0 \r\n 2014          191           16.2          27.8          16.1          0 \r\n 2014          192           27.31         28.3          17.2          0 \r\n 2014          193           26.6          26.7          19.4          0 \r\n 2014          194           17.778        31.7          17.8          0 \r\n 2014          195           23.14         30            16.1          2.03 \r\n 2014          196           24.303        23.3          10.6          0 \r\n 2014          197           21.61         22.2          10.6          0 \r\n 2014          198           25.69         24.4          12.2          0 \r\n 2014          199           26.85         25.6          13.3          0 \r\n 2014          200           25.14         25            15            0 \r\n 2014          201           24.44         27.2          15.6          0 \r\n 2014          202           29.33         30            17.2          0 \r\n 2014          203           17.81         33.3          21.1          0 \r\n 2014          204           25.95         32.2          16.1          0 \r\n 2014          205           17.35         28.3          16.1          0 \r\n 2014          206           29.1          26.1          16.7          0 \r\n 2014          207           22.371        31.7          19.4          0 \r\n 2014          208           21.8          29.4          18.3          0 \r\n 2014          209           24.41         26.1          13.3          0 \r\n 2014          210           20.86         25            13.3          0 \r\n 2014          211           22.52         24.4          13.3          0 \r\n 2014          212           25.58         26.7          13.3          0 \r\n 2014          213           22.5          27.8          13.9          1.78 \r\n 2014          214           22.47         27.8          15.6          0 \r\n 2014          215           19.43         29.4          16.7          1.27 \r\n 2014          216           5.745         28.9          17.2          0 \r\n 2014          217           5.932         28.9          18.9          0.51 \r\n 2014          218           15.13         28.9          18.9          7.11 \r\n 2014          219           15.76         21.7          18.9          9.91 \r\n 2014          220           8.4           23.3          18.9          18.29 \r\n 2014          221           25.63         26.1          18.9          0 \r\n 2014          222           26.96         26.7          18.9          1.27 \r\n 2014          223           27.03         23.9          17.8          26.92 \r\n 2014          224           25.15         23.9          12.8          0 \r\n 2014          225           9.01          23.3          12.2          0 \r\n 2014          226           17.68         26.7          12.8          0 \r\n 2014          227           22.07         27.2          15            0 \r\n 2014          228           24.64         23.3          18.9          0.25 \r\n 2014          229           23.45         27.8          16.7          0 \r\n 2014          230           15.39         29.4          17.2          0 \r\n 2014          231           18.96         30.6          18.9          0 \r\n 2014          232           17.36         29.4          20            0 \r\n 2014          233           19.92         30.6          20.6          0 \r\n 2014          234           21.65         31.1          20            41.66 \r\n 2014          235           24.53         31.1          20            49.78 \r\n 2014          236           16.32         31.1          20            1.78 \r\n 2014          237           4.029         31.7          20.6          0 \r\n 2014          238           10.904        28.3          17.2          27.18 \r\n 2014          239           9.09          25.6          17.8          0 \r\n 2014          240           16.14         21.7          18.3          56.39 \r\n 2014          241           12.01         27.8          19.4          7.37 \r\n 2014          242           19.59         24.4          18.3          5.08 \r\n 2014          243           24.27         26.1          17.8          0 \r\n 2014          244           19.38         28.3          18.3          6.1 \r\n 2014          245           21.47         25.6          13.3          0 \r\n 2014          246           8.49          26.1          13.3          0 \r\n 2014          247           24.26         28.3          18.3          0 \r\n 2014          248           23.85         32.2          13.9          2.54 \r\n 2014          249           14.95         20            9.4           0.51 \r\n 2014          250           6.542         22.2          9.4           0 \r\n 2014          251           7.454         23.9          10            0 \r\n 2014          252           6.399         26.7          12.8          0 \r\n 2014          253           8.3           25            17.8          119.63 \r\n 2014          254           22.29         18.3          9.4           0 \r\n 2014          255           20.8          12.2          6.1           10.16 \r\n 2014          256           12.5          11.1          2.8           4.06 \r\n 2014          257           21.71         16.7          2.2           0 \r\n 2014          258           20.17         22.2          8.3           7.62 \r\n 2014          259           19.75         16.1          5             0 \r\n 2014          260           16.01         20.6          6.1           0 \r\n 2014          261           16.48         26.1          12.2          0 \r\n 2014          262           20.43         22.8          13.9          0 \r\n 2014          263           20.3          26.7          15            22.1 \r\n 2014          264           9.84          28.3          11.1          0 \r\n 2014          265           11.85         21.1          8.9           0 \r\n 2014          266           19.38         22.8          8.9           0 \r\n 2014          267           17.73         22.2          12.8          0.76 \r\n 2014          268           17.77         22.2          13.3          1.27 \r\n 2014          269           18.31         27.2          14.4          0 \r\n 2014          270           17.31         27.8          14.4          0 \r\n 2014          271           9.18          26.7          11.7          0 \r\n 2014          272           7.454         27.2          11.7          0 \r\n 2014          273           3.941         28.3          13.3          0 \r\n 2014          274           8.81          26.7          15            103.89 \r\n 2014          275           17.15         23.3          15.6          6.86 \r\n 2014          276           15.59         16.7          7.2           1.02 \r\n 2014          277           14.23         10            0.6           0 \r\n 2014          278           17.94         11.7          0.6           0 \r\n 2014          279           16.29         19.4          4.4           0 \r\n 2014          280           10.97         18.9          6.1           0 \r\n 2014          281           9.99          21.1          6.7           0 \r\n 2014          282           17.09         20.6          6.1           0.25 \r\n 2014          283           8.41          18.3          5.6           0 \r\n 2014          284           1.612         11.7          1.7           0 \r\n 2014          285           16.74         16.7          1.7           0 \r\n 2014          286           16.71         15            6.1           4.06 \r\n 2014          287           15.75         11.7          8.9           24.89 \r\n 2014          288           14.43         17.8          4.4           0 \r\n 2014          289           12.24         19.4          4.4           0 \r\n 2014          290           12.09         22.8          7.2           0 \r\n 2014          291           15.32         16.1          1.7           0 \r\n 2014          292           15.09         13.3          2.2           0 \r\n 2014          293           13.19         20            3.9           0 \r\n 2014          294           12.47         21.1          5             0 \r\n 2014          295           9.94          22.8          5.6           0 \r\n 2014          296           14.3          21.7          10.6          21.84 \r\n 2014          297           13.56         22.2          11.7          0 \r\n 2014          298           9.49          22.2          10.6          0 \r\n 2014          299           13.97         23.3          9.4           0 \r\n 2014          300           13.92         24.4          10.6          0 \r\n 2014          301           13.29         20            5.6           0 \r\n 2014          302           13.82         13.3          0.6           0 \r\n 2014          303           13.41         12.2          0             0 \r\n 2014          304           12.36         16.1         -2.8           0 \r\n 2014          305           5.435         5            -5             0 \r\n 2014          306           12.52         8.9          -5             0 \r\n 2014          307           7.776         16.1          5.6           0 \r\n 2014          308           12.36         16.1          3.9           1.02 \r\n 2014          309           9.47          14.4          2.8           0 \r\n 2014          310           11.54         17.2          2.8           0 \r\n 2014          311           7.883         9.4           0             0 \r\n 2014          312           8.11          15.6          2.2           0 \r\n 2014          313           8.89          8.3           0.6           0 \r\n 2014          314           7.373         13.9          2.8           0 \r\n 2014          315           10.16         15           -8.3           0.76 \r\n 2014          316           10.32        -3.9          -10.6          0 \r\n 2014          317           3.54         -5.6          -11.7          0 \r\n 2014          318           11.37        -3.3          -15            0 \r\n 2014          319           11.22        -2.8          -15            0 \r\n 2014          320           10.85        -3.3          -14.4          3.05 \r\n 2014          321           6.345        -6.7          -15            0 \r\n 2014          322           8.46         -8.9          -15            0 \r\n 2014          323           8.57         -1.1          -13.3          0 \r\n 2014          324           5.475        -3.9          -11.7          0 \r\n 2014          325           1.573        -3.3          -11.7          0 \r\n 2014          326           3.524         3.9          -8.9           0 \r\n 2014          327           9.35          12.2          1.7           0 \r\n 2014          328           2.719         11.7         -3.9           1.27 \r\n 2014          329           5.837         0            -10            0 \r\n 2014          330           9.49          3.9          -10            2.54 \r\n 2014          331           8.09          1.1          -11.7          0 \r\n 2014          332           8.63         -2.8          -12.8          0 \r\n 2014          333           7.991         8.9          -3.9           0 \r\n 2014          334           9.43          16.1         -8.9           0 \r\n 2014          335           7.865        -6.7          -11.7          0 \r\n 2014          336           4.644        -6.7          -12.2          0 \r\n 2014          337           3.221         3.3          -11.1          0 \r\n 2014          338           5.049         1.7          -7.2           0 \r\n 2014          339           1.43          2.8          -6.1           0 \r\n 2014          340           9.15          4.4          -1.7           0 \r\n 2014          341           4.419         1.7          -3.3           0 \r\n 2014          342           2.196         2.8          -1.1           0 \r\n 2014          343           3.04          8.3          -6.7           0 \r\n 2014          344           6.189        -1.1          -5.6           0 \r\n 2014          345           2.193         0            -3.9           0 \r\n 2014          346           1.669         2.8          -1.7           0 \r\n 2014          347           0.776         11.7          1.7           0 \r\n 2014          348           7.068         11.1          7.2           0.25 \r\n 2014          349           6.919         13.9          8.9           3.05 \r\n 2014          350           3.499         9.4          -6.1           7.87 \r\n 2014          351           1.788        -2.2          -10            0 \r\n 2014          352           1.569        -3.3          -10            0 \r\n 2014          353           1.434        -1.7          -5             0.51 \r\n 2014          354           1.32         -0.6          -2.2           0 \r\n 2014          355           2.408         1.7          -1.7           0 \r\n 2014          356           1.893         5             1.7           1.78 \r\n 2014          357           8.32          5             0             14.48 \r\n 2014          358           1.482         1.7           0             5.59 \r\n 2014          359           5.367         0            -2.8           0 \r\n 2014          360           8.98          8.3          -2.2           0 \r\n 2014          361           4.269         0.6          -5             1.02 \r\n 2014          362           6.891        -3.3          -11.1          0 \r\n 2014          363           9.24          0.6          -10.6          0 \r\n 2014          364           7.216        -5.6          -18.9          0 \r\n 2014          365           5.697        -13.9         -20.6          0 \r\n 2015          1             8.95          3.794        -9.65          0 \r\n 2015          2             10.21        -9.26         -20.74         0 \r\n 2015          3             9.73         -5.324        -22.87         0 \r\n 2015          4             8.24          1.116        -10.75         0.51 \r\n 2015          5             10.1          5.633        -8.3           0.25 \r\n 2015          6             10.26         15.14        -4.918         1.02 \r\n 2015          7             6.852         9.71          0.317         0 \r\n 2015          8             10.43         13.2         -3.662         0 \r\n 2015          9             5.431         9.05         -2.832         0 \r\n 2015          10            9.73          8.25         -2.061         0 \r\n 2015          11            5.151         3.906        -4.098         0 \r\n 2015          12            5.502         1.915        -7.028         0 \r\n 2015          13            8.53          6.633        -7.942         0 \r\n 2015          14            8.99          10.78        -3.054         0 \r\n 2015          15            4.06          5.986        -2.598         0 \r\n 2015          16            11.2          11.74        -4.636         0 \r\n 2015          17            11.58         10.17        -2.122         0 \r\n 2015          18            9.71          15.12        -2.204         0 \r\n 2015          19            3.465         3.461        -5.852         0 \r\n 2015          20            11.47         1.582        -10.58         0 \r\n 2015          21            1.714         1.369        -1.554         0 \r\n 2015          22            7.956        -0.746        -16.26         0 \r\n 2015          23            13.12        -12.11        -22.54         0 \r\n 2015          24            9.78         -1.656        -15.65         0 \r\n 2015          25            10.68        -8.79         -19.68         0.51 \r\n 2015          26            13.51        -7.556        -22.84         0 \r\n 2015          27            13.1          2.278        -9.55          0 \r\n 2015          28            13.79         5.604        -2.325         0 \r\n 2015          29            11.89         5.734        -1.372         0 \r\n 2015          30            4.761        -0.138        -1.98          0 \r\n 2015          31            7.1           3.664        -3.692         0 \r\n 2015          32            11.05         1.358        -12.72         22.61 \r\n 2015          33            11.58        -9.16         -17.05         2.03 \r\n 2015          34            14.33         3.825        -10.5          0 \r\n 2015          35            12.83         1.682        -13.73         0.76 \r\n 2015          36            5.81         -10.07        -15.87         2.29 \r\n 2015          37            6.92         -2.122        -12.02         0 \r\n 2015          38            10.8         -5.101        -14.41         0 \r\n 2015          39            15.91        -11.48        -19.48         0 \r\n 2015          40            12.23        -7.485        -20.44         0 \r\n 2015          41            12.74         2.208        -12.06         0 \r\n 2015          42            9.62         -0.633        -10.65         0 \r\n 2015          43            14.05        -9.3          -18.88         0 \r\n 2015          44            17.1         -6.724        -20.88         0.25 \r\n 2015          45            13.07         5.845        -11.6          0 \r\n 2015          46            6.028         6.41         -14.65         0 \r\n 2015          47            17.85        -14.47        -20.99         0 \r\n 2015          48            18.07        -9.73         -23.05         0 \r\n 2015          49            11.37        -6.338        -17.58         0 \r\n 2015          50            17.42         0.954        -9.34          0 \r\n 2015          51            9.8           2.784        -10.18         0 \r\n 2015          52            4.199        -0.219        -10.97         0 \r\n 2015          53            18.02        -1.808        -16.3          0 \r\n 2015          54            18.66        -3.601        -20.02         0 \r\n 2015          55            18.32         14.36        -7.749         0 \r\n 2015          56            18.38         11.93        -0.078         0 \r\n 2015          57            18.48         12.4         -1.585         1.02 \r\n 2015          58            19.5          14.29        -1.15          0 \r\n 2015          59            18.68         20.64         0.964         0 \r\n 2015          60            19.63         18.75         0.762         0 \r\n 2015          61            18.27         22.57         3.623         0 \r\n 2015          62            19.49         21.8          4.573         0 \r\n 2015          63            19.72         18.44        -0.219         0.25 \r\n 2015          64            17.21         23.04         1.268         0 \r\n 2015          65            19.33         29.04         3.825         0 \r\n 2015          66            21.4          9.01         -1.272         0 \r\n 2015          67            16.13         10.87        -1.92          0 \r\n 2015          68            7.732         8.88          0.165         0 \r\n 2015          69            19.84         19.07        -2.932         0 \r\n 2015          70            20.14         15.21         0.852         0 \r\n 2015          71            19.34         22.36        -0.746         0 \r\n 2015          72            16.98         8.28         -2.618         0 \r\n 2015          73            1.757         0.873        -1.028         0 \r\n 2015          74            9.44          6.694        -2.223         0 \r\n 2015          75            18.67         7.975        -4.736         0 \r\n 2015          76            16.7          4.583        -8.25          0 \r\n 2015          77            17.88         10.04        -1.494         0 \r\n 2015          78            17.97         15.28         2.592         0 \r\n 2015          79            21.08         24.09        -0.118         0 \r\n 2015          80            24.11         24.4          5.664         0 \r\n 2015          81            22.71         27.68         8.31          0 \r\n 2015          82            18.83         17.62         8.17          0 \r\n 2015          83            22.4          8.51          0.174         0 \r\n 2015          84            23.02         18.25        -1.626         11.68 \r\n 2015          85            21.02         20.4          2.45          0 \r\n 2015          86            4.597         11.92         8.69          0.51 \r\n 2015          87            3.026         10.55         5.785         0 \r\n 2015          88            3.315         9.22          4.189         0 \r\n 2015          89            5.098         10.01         0.104         0 \r\n 2015          90            25.81         14.71         1.439         0 \r\n 2015          91            22.48         22.15         3.036         0 \r\n 2015          92            19.65         22.81         9.84          29.46 \r\n 2015          93            22.91         18.16         3.32          0.51 \r\n 2015          94            24.9          20.44         3.562         0 \r\n 2015          95            6.415         14.39         6.582         0 \r\n 2015          96            16.37         22.26         9.84          0 \r\n 2015          97            22.29         24.7          10.12         0 \r\n 2015          98            3.421         17.65         12.78         0.25 \r\n 2015          99            3.726         13.08         5.38          5.08 \r\n 2015          100           24.89         13.12         2.411         5.33 \r\n 2015          101           22.03         14.72         0.084         0 \r\n 2015          102           27.53         12.64        -2.81          0 \r\n 2015          103           26.3          16.77        -0.542         6.6 \r\n 2015          104           11.123        18.12         10.67         0 \r\n 2015          105           3.906         11.39         6.39          0 \r\n 2015          106           28.29         16.09         2.734         2.54 \r\n 2015          107           28.57         19.62         3.299         0 \r\n 2015          108           28.1          22.68         7.338         0 \r\n 2015          109           28.65         21.59         5.28          28.45 \r\n 2015          110           28.71         23.6          6.895         14.48 \r\n 2015          111           5.021         17.19         7.602         0 \r\n 2015          112           16.97         20.34         9.51          0 \r\n 2015          113           21.03         26.62         14.53         0 \r\n 2015          114           7.416         19.35         13.2          0 \r\n 2015          115           18.96         25.01         14.23         18.03 \r\n 2015          116           16.35         23.18         14.82         1.02 \r\n 2015          117           12.57         24.77         14            0 \r\n 2015          118           10.97         16.97         8.98          0 \r\n 2015          119           22.17         21.41         7.551         0 \r\n 2015          120           8.95          21.19         8.53          0 \r\n 2015          121           8.32          9.71          5.088         0 \r\n 2015          122           28.8          20.02         2.643         0 \r\n 2015          123           26.27         21.97         7.722         10.92 \r\n 2015          124           4.275         17.34         10.83         0 \r\n 2015          125           11.24         20.94         11.53         1.78 \r\n 2015          126           18.72         25.56         16.53         5.08 \r\n 2015          127           17.909        24.33         11.71         11.94 \r\n 2015          128           27.84         13.69         4.068         0 \r\n 2015          129           18.99         11.7          2.087         0 \r\n 2015          130           4.68          9.52          4.17          0.51 \r\n 2015          131           23.2          22.03         2.956         3.3 \r\n 2015          132           13.21         21.78         8.73          0 \r\n 2015          133           9.48          19.04         12.14         0 \r\n 2015          134           4.962         19.6          14.32         24.64 \r\n 2015          135           19.17         25.65         15.42         12.45 \r\n 2015          136           11.1          21.64         14.04         0 \r\n 2015          137           22.92         28.2          11.82         0 \r\n 2015          138           10.99         22.37         14.83         0.79 \r\n 2015          139           9.67          23.61         11.62         6.32 \r\n 2015          140           14.3          18.33         9.39          0 \r\n 2015          141           21.68         18.91         9.05          0 \r\n 2015          142           23.09         22.53         10.17         0 \r\n 2015          143           19.01         23.32         11.16         0 \r\n 2015          144           14.48         25.38         16.03         4.477 \r\n 2015          145           8.63          25.02         16.9          0.527 \r\n 2015          146           18.44         28.96         16.28         0 \r\n 2015          147           11.78         27.04         18.93         0.527 \r\n 2015          148           21.34         28.24         15.9          0.263 \r\n 2015          149           26.07         30.17         15.02         0 \r\n 2015          150           25.87         35.21         18.24         0 \r\n 2015          151           25.31         32.72         21.7          0 \r\n 2015          152           1.538         23.66         16.22         59.509 \r\n 2015          153           6.921         19.12         15.12         0 \r\n 2015          154           11.03         24.45         16.75         0 \r\n 2015          155           14.12         27.04         18.38         13.954 \r\n 2015          156           10.26         22.95         15.48         49.504 \r\n 2015          157           28.73         25.75         13.3          0 \r\n 2015          158           19.91         29.11         17.58         0 \r\n 2015          159           12.35         23.49         15.9          0 \r\n 2015          160           7.131         27.99         19.24         0 \r\n 2015          161           18.61         31.9          18.09         0 \r\n 2015          162           16.008        30.1          17.89         0 \r\n 2015          163           15.88         32.1          17.99         0.527 \r\n 2015          164           25.4          27.43         14.83         0 \r\n 2015          165           13.95         28.26         17.57         4.477 \r\n 2015          166           15.12         25.97         19.09         0.263 \r\n 2015          167           19.02         25.22         16.81         0.79 \r\n 2015          168           27.17         28.81         14.59         0 \r\n 2015          169           29.1          29.3          17.58         0.263 \r\n 2015          170           22.52         28.06         16.14         0 \r\n 2015          171           8.79          25.09         17.95         13.167 \r\n 2015          172           20.87         25.79         17.62         4.213 \r\n 2015          173           8.92          20.57         14.38         0.263 \r\n 2015          174           27.15         25.93         12.87         0 \r\n 2015          175           27.5          27.08         12.42         0 \r\n 2015          176           19.05         29.49         16.33         0 \r\n 2015          177           6.429         26.05         15.89         13.954 \r\n 2015          178           30.01         21.67         10.67         0 \r\n 2015          179           22.38         24.59         10.81         0 \r\n 2015          180           24.43         27.88         13.49         0 \r\n 2015          181           20.6          26.24         15.82         0 \r\n 2015          182           22.69         30.22         20.12         29.495 \r\n 2015          183           27.86         32.24         22.22         0 \r\n 2015          184           25.06         32.46         21.79         0 \r\n 2015          185           27.74         31.47         20.55         0 \r\n 2015          186           6.122         23.79         20.38         20.009 \r\n 2015          187           21.36         30.08         19.62         20.538 \r\n 2015          188           27.78         33.1          21.24         0 \r\n 2015          189           26.2          31.44         20.57         0 \r\n 2015          190           21.85         28.24         19.2          0 \r\n 2015          191           24.14         28.08         17.68         0 \r\n 2015          192           28.39         26.54         14.43         0 \r\n 2015          193           20.3          25.61         14.07         0 \r\n 2015          194           27.24         28.8          15.66         0 \r\n 2015          195           25.43         33.29         20.33         2.37 \r\n 2015          196           14.99         28.08         20.38         1.317 \r\n 2015          197           23.56         31.53         19.03         13.954 \r\n 2015          198           15.41         27.04         22.73         0.263 \r\n 2015          199           18.92         31.06         20.55         1.843 \r\n 2015          200           25.4          26.88         16.19         0 \r\n 2015          201           27.89         28.72         15.42         0 \r\n 2015          202           22.18         31.34         18.75         0.263 \r\n 2015          203           16.8          28.46         17.51         0 \r\n 2015          204           25.34         31.34         19.53         2.107 \r\n 2015          205           21.06         27.06         17.28         0 \r\n 2015          206           11.88         23.3          16.96         0 \r\n 2015          207           16.12         27.76         17.38         0 \r\n 2015          208           16.82         26.24         17.41         0 \r\n 2015          209           24.72         31.27         19.56         0 \r\n 2015          210           17.74         29.16         19.97         14.224 \r\n 2015          211           18.77         31.68         19.12         48.457 \r\n 2015          212           25.13         26.56         16.61         0 \r\n 2015          213           19.84         28.11         14.98         0 \r\n 2015          214           18.44         28.31         15.84         0 \r\n 2015          215           18.76         28.79         16.93         0 \r\n 2015          216           18.49         28.96         18.25         0 \r\n 2015          217           18.89         28.18         17.73         0 \r\n 2015          218           15.99         28.87         17.83         0 \r\n 2015          219           5.877         23.35         19.31         3.16 \r\n 2015          220           6.249         21.27         13.02         50.821 \r\n 2015          221           13.23         22.01         10.46         0 \r\n 2015          222           24.48         25.54         10.5          0 \r\n 2015          223           23.9          25.63         14.68         0 \r\n 2015          224           17.37         27.68         15.92         5.003 \r\n 2015          225           25.31         20.12         10.46         0 \r\n 2015          226           24.94         22.67         9.33          0 \r\n 2015          227           23.95         24.35         9.59          0 \r\n 2015          228           18.98         24.03         9.36          0 \r\n 2015          229           14.45         26.02         13.45         0.79 \r\n 2015          230           6.059         23.72         17.11         21.326 \r\n 2015          231           9.76          21.45         14.7          0 \r\n 2015          232           12.32         23.83         15.12         0 \r\n 2015          233           20.75         28.31         17.55         0 \r\n 2015          234           19.02         29.63         18.21         0 \r\n 2015          235           19.57         29.06         20.86         0 \r\n 2015          236           21.1          31.09         20.12         0 \r\n 2015          237           15.64         30.26         19.81         0 \r\n 2015          238           20.72         31.13         20.03         0 \r\n 2015          239           20.52         32.7          22.14         0 \r\n 2015          240           9.72          28.77         20.62         0.79 \r\n 2015          241           15.28         26.45         16.83         41.075 \r\n 2015          242           21.15         26.81         13.21         0.527 \r\n 2015          243           20.48         27.13         15.11         0.263 \r\n 2015          244           21.9          18.55         9.24          0 \r\n 2015          245           22.27         20.52         6.662         0 \r\n 2015          246           21.48         23.49         8.36          0 \r\n 2015          247           20.12         27.77         13.61         0 \r\n 2015          248           19.58         29.24         17.04         0 \r\n 2015          249           19.71         30            16.22         0 \r\n 2015          250           15.9          30.3          16.72         5.53 \r\n 2015          251           5.444         18.21         9.07          6.847 \r\n 2015          252           21.53         20.52         6.442         0.263 \r\n 2015          253           20.7          22.84         8.69          0 \r\n 2015          254           13.01         24.09         11.97         0 \r\n 2015          255           16.29         30.2          15.3          0 \r\n 2015          256           2.797         21.27         16.1          34.492 \r\n 2015          257           7.408         24.23         17.55         15.271 \r\n 2015          258           16.9          27.19         14.17         1.317 \r\n 2015          259           19.05         27.12         12.06         0 \r\n 2015          260           18.97         27.12         13.28         0 \r\n 2015          261           15.68         29.53         14.3          0 \r\n 2015          262           18.17         20.98         9.46          14.742 \r\n 2015          263           18.95         19.06         5.421         0 \r\n 2015          264           18.52         17.71         4.573         0 \r\n 2015          265           18.65         16.83         2.855         0 \r\n 2015          266           16.43         16.99         3.936         0 \r\n 2015          267           16.68         16.2          2.997         0 \r\n 2015          268           12.94         19.68         6.199         0 \r\n 2015          269           12.26         24.03         11.57         0 \r\n 2015          270           13.99         25.36         12.68         0 \r\n 2015          271           13.96         26.37         11.07         0 \r\n 2015          272           13.86         17.14         7.39          0 \r\n 2015          273           16.14         23.18         5.26          0 \r\n 2015          274           16.76         30.24         11            0 \r\n 2015          275           16.51         21.9          7.542         0 \r\n 2015          276           16.41         23.53         3.684         0 \r\n 2015          277           15.88         22.79         5.219         0 \r\n 2015          278           13.93         20.38         4.128         0 \r\n 2015          279           16.26         13.27         0.327         0 \r\n 2015          280           15.42         14.55         1.642         0 \r\n 2015          281           14.84         20.38         3.29          0 \r\n 2015          282           13.53         26.77         13.13         0 \r\n 2015          283           13.63         24.74         12.38         0 \r\n 2015          284           11.42         20.07         12.01         0 \r\n 2015          285           7.188         18.3          10.38         0 \r\n 2015          286           3.776         19.44         10.26         15.271 \r\n 2015          287           14.41         15.34         5.764         0 \r\n 2015          288           14.3          17.6          2.087         0 \r\n 2015          289           8.96          16.32         3.138         0 \r\n 2015          290           1.949         9.16          6.521         12.638 \r\n 2015          291           10.63         8.81          0.266         0.263 \r\n 2015          292           12.54         10.3         -0.907         0 \r\n 2015          293           9.44          12.14        -1.069         5.003 \r\n 2015          294           5.51          11.37         5.754         1.843 \r\n 2015          295           12.83         23.23         4.128         0 \r\n 2015          296           12.93         24.7          9.84          0 \r\n 2015          297           10.97         20.76         6.733         0 \r\n 2015          298           7.185         19.58         11.89         0 \r\n 2015          299           11.65         22.18         2.886         0 \r\n 2015          300           11.11         11.88         1.056         0 \r\n 2015          301           12.53         12.42        -0.28          0 \r\n 2015          302           12.39         14.83        -0.38          0 \r\n 2015          303           12.17         15.71         0.003         0 \r\n 2015          304           4.171         14.14         2.592         0 \r\n 2015          305           3.737         15.28        -0.422         9.476 \r\n 2015          306           11.82         10.22         1.238         0 \r\n 2015          307           11.62         11.92        -1.898         0 \r\n 2015          308           10.99         17.8          1.166         0 \r\n 2015          309           7.51          13.79         2.249         0 \r\n 2015          310           1.037         12.05         8.33          6.32 \r\n 2015          311           1.174         14.78         8.92          32.916 \r\n 2015          312           2.938         9.07          2.734         0.527 \r\n 2015          313           11.15         6.491        -1.606         0 \r\n 2015          314           1.489         3.765        -2.69          0.263 \r\n 2015          315           10.99        -2.548        -8.79          0.79 \r\n 2015          316           10.54         6.29         -6.582         0 \r\n 2015          317           10.52         13.88        -0.988         0 \r\n 2015          318           9.92          11.9         -0.856         0 \r\n 2015          319           2.643         12.9          2.693         0 \r\n 2015          320           0.917         3.412        -4.624         19.75 \r\n 2015          321           2.69         -4.432        -7.21          0 \r\n 2015          322           4.455        -2.061        -6.38          0 \r\n 2015          323           2.672        -0.532        -2.304         0 \r\n 2015          324           1.857        -0.32         -1.677         0.263 \r\n 2015          325           3.291        -1.372        -4.777         0 \r\n 2015          326           5.749         1.744        -5.832         0 \r\n 2015          327           9.47          6.5          -7.16          0.263 \r\n 2015          328           9.62          9.02         -3.946         0 \r\n 2015          329           6.866         8.84          0.428         0 \r\n 2015          330           3.232         5.209        -3.885         0 \r\n 2015          331           8.99          11.02        -4.148         0 \r\n 2015          332           6.063         10.63        -0.584         0 \r\n 2015          333           5.988         12.06         0.126         0 \r\n 2015          334           8.98          13.56         2.148         0 \r\n 2015          335           5.613         12.66        -0.563         0 \r\n 2015          336           3.619         7.38          0.064         14.483 \r\n 2015          337           0.609         8.02          3.239         53.724 \r\n 2015          338           4.414         3.29         -0.684         29.226 \r\n 2015          339           2.961         6.5          -0.604         0.263 \r\n 2015          340           2.754         4.937        -2.791         0 \r\n 2015          341           8.14          0.104        -7.658         0 \r\n 2015          342           9             0.044        -10.44         0 \r\n 2015          343           8.57          3.603        -11.21         0 \r\n 2015          344           3.853         8.58         -0.472         0 \r\n 2015          345           1.404        -0.26         -4.189         0 \r\n 2015          346           5.983         6.31         -4.432         0 \r\n 2015          347           0.888         5.219        -2.061         20.538 \r\n 2015          348           4.732        -1.697        -7.82          0 \r\n 2015          349           5.487        -0.26         -5.689         0 \r\n 2015          350           3.092         0.126        -3.885         7.373 \r\n 2015          351           6.519        -3.48         -12.33         0 \r\n 2015          352           4.659        -5.913        -12.25         0 \r\n 2015          353           6.744        -5.71         -9.12          0 \r\n 2015          354           7.983        -5.304        -7.982         0.263 \r\n 2015          355           9.26         -5.952        -15.73         0 \r\n 2015          356           9.65         -1.91         -10.53         0.527 \r\n 2015          357           9.79         -1.656        -12.7          0 \r\n 2015          358           6.868        -5.932        -12.61         0 \r\n 2015          359           5.846        -5.832        -10.01         0 \r\n 2015          360           8.96         -0.401        -11.4          0 \r\n 2015          361           3.567         0.165        -2.648         1.317 \r\n 2015          362           2.545         0.388        -0.563         7.9 \r\n 2015          363           3.786         0.064        -6.937         2.107 \r\n 2015          364           8.72         -6.886        -20.84         0 \r\n 2015          365           10.1         -11.7         -22.76         0 \r\n 2016          1             9.65         -1.91         -10.53         0.5266612 \r\n 2016          2             9.79         -1.656        -12.7          0 \r\n 2016          3             6.868        -5.932        -12.61         0 \r\n 2016          4             5.846        -5.832        -10.01         0 \r\n 2016          5             8.96         -0.401        -11.4          0 \r\n 2016          6             3.567         0.165        -2.648         1.316653 \r\n 2016          7             2.545         0.388        -0.563         7.899919 \r\n 2016          8             3.786         0.064        -6.937         2.106645 \r\n 2016          9             8.72         -6.886        -20.84         0 \r\n 2016          10            10.1         -11.7         -22.76         0 \r\n 2016          11            8.12         -0.006        -12.31         0 \r\n 2016          12            10.18        -4.726        -17.87         0 \r\n 2016          13            9.98          3.765        -11.11         0 \r\n 2016          14            9.35          6.572        -0.958         0 \r\n 2016          15            7.97          1.601        -11.53         0 \r\n 2016          16            7.073        -6.176        -16.93         0 \r\n 2016          17            10.82        -16.69        -23.15         0 \r\n 2016          18            10.12        -10.09        -21.15         0 \r\n 2016          19            5.909        -9.39         -12.43         0 \r\n 2016          20            7.097        -5.689        -10.43         0 \r\n 2016          21            7.655        -3.713        -11.05         0.5266612 \r\n 2016          22            8.46         -5.638        -9.4           0 \r\n 2016          23            6.392        -4.452        -9.85          0 \r\n 2016          24            9.65          0.114        -6.653         2.369976 \r\n 2016          25            3.027        -2.578        -7.14          0 \r\n 2016          26            6.595        -2            -7.21          0 \r\n 2016          27            8.7           1.996        -11.64         0 \r\n 2016          28            11.55         2.249        -2.75          0.2633306 \r\n 2016          29            11.28         7.581        -4.311         0 \r\n 2016          30            7.231         8.29         -1.606         0 \r\n 2016          31            10.32         5.502        -0.178         0 \r\n 2016          32            8.61          5.592        -3.094         0 \r\n 2016          33            2.966         0.59         -3.682         4.21329 \r\n 2016          34            12.29        -3.682        -11.46         0 \r\n 2016          35            12.86        -3.398        -12.49         0 \r\n 2016          36            8.35         -2.184        -10.62         0 \r\n 2016          37            11.56         2.713        -4.442         5.793273 \r\n 2016          38            11.61         3.804        -4.32          0 \r\n 2016          39            10.24        -3.864        -8.32          0 \r\n 2016          40            14.09        -6.38         -14.75         0 \r\n 2016          41            11.31         0.692        -9.53          0 \r\n 2016          42            5.877        -5.365        -12.98         0 \r\n 2016          43            14.06        -6.572        -15.42         0 \r\n 2016          44            5.636        -9.42         -16.62         0 \r\n 2016          45            8.8          -0.928        -9.6           0 \r\n 2016          46            13.83         7.278        -3.226         2.896637 \r\n 2016          47            4.326         3.724        -1.343         6.583265 \r\n 2016          48            11.6          7.682        -1.404         0 \r\n 2016          49            10.57         16.33         0.246         0 \r\n 2016          50            15.59         15.82         5.785         0 \r\n 2016          51            14.41         11.38        -0.33          0 \r\n 2016          52            10.09         6.895        -1.312         0 \r\n 2016          53            4.9           4.492        -0.31          0 \r\n 2016          54            9.91          7.118        -1.454         0 \r\n 2016          55            9.05          3.422        -3.996         0 \r\n 2016          56            6.282         1.925        -2.973         0 \r\n 2016          57            16.14         9.34         -6.217         0 \r\n 2016          58            17.07         20.9         -1.505         0 \r\n 2016          59            12.72         12.04        -0.461         0 \r\n 2016          60            11.54         14.97        -3.054         0 \r\n 2016          61            8.66         -3.034        -9.63          0 \r\n 2016          62            9.73          8.84         -10.81         0 \r\n 2016          63            10.34         4.694        -4.513         0 \r\n 2016          64            11.03         11.33        -4.473         0 \r\n 2016          65            18.46         12.4         -2.122         0 \r\n 2016          66            11.97         21.77         2.522         0 \r\n 2016          67            12.27         23.75         9.44          0 \r\n 2016          68            13.39         19.56         6.41          0 \r\n 2016          69            16.44         14.94        -0.32          0 \r\n 2016          70            18.65         18.62        -0.34          0 \r\n 2016          71            16.83         20.72         3.471         0 \r\n 2016          72            3.2           11.17         4.047         1.579984 \r\n 2016          73            7.752         17.65         9.32          0.2633306 \r\n 2016          74            13.37         23.54         9.46          0 \r\n 2016          75            10.46         14.76         5.462         9.745306 \r\n 2016          76            15.9          13.2          0.732         0 \r\n 2016          77            16.03         13.36        -1.372         0 \r\n 2016          78            13.03         6.471        -3.278         0 \r\n 2016          79            9.84          3.866        -4.838         0 \r\n 2016          80            17.95         6.895        -4.848         0 \r\n 2016          81            19.7          18.31        -3.844         0 \r\n 2016          82            8.59          17.09         7.692         0 \r\n 2016          83            4.677         11.31        -0.198         11.84988 \r\n 2016          84            15.34         5.653        -3.713         0 \r\n 2016          85            15.09         11.57        -5.638         0 \r\n 2016          86            3.107         7.542        -0.401         6.846596 \r\n 2016          87            19.26         8.69         -0.24          0 \r\n 2016          88            20.32         18.36        -3.834         0 \r\n 2016          89            13.44         18.4          4.785         0 \r\n 2016          90            11.97         23.73         6.552         0 \r\n 2016          91            10.12         11.92         0.408         0.5266612 \r\n 2016          92            13.46         7.278        -2.73          0.5266612 \r\n 2016          93            22.61         10.74        -1.738         0 \r\n 2016          94            22.34         27.53         1.986         0 \r\n 2016          95            20.53         13.25         0.205         0 \r\n 2016          96            17.78         17.68         1.874         0.7899919 \r\n 2016          97            14.35         11.31         0.832         0 \r\n 2016          98            14.66         11.82        -1.434         0 \r\n 2016          99            24.79         10.46        -4.25          0 \r\n 2016          100           24.65         11.15        -7.749         0 \r\n 2016          101           15.74         18.44         6.209         0 \r\n 2016          102           26.66         10.34        -1.636         0 \r\n 2016          103           24.75         16.67        -4.96          0 \r\n 2016          104           23.23         22.61         4.018         0 \r\n 2016          105           24.92         22.52         7.076         0 \r\n 2016          106           23.2          23.8          8.37          0 \r\n 2016          107           15.56         23.23         13.15         0 \r\n 2016          108           14.94         24.48         13.1          0 \r\n 2016          109           4.515         17.76         9.05          13.69527 \r\n 2016          110           14.38         16.56         6.076         0.2633306 \r\n 2016          111           7.12          13.37         9.31          32.91633 \r\n 2016          112           12.36         17.54         9.09          5.003282 \r\n 2016          113           18.38         18.57         8.87          0 \r\n 2016          114           26.03         23.7          7.076         0 \r\n 2016          115           17.69         27.03         13.35         7.109927 \r\n 2016          116           27.89         21.81         11.16         0 \r\n 2016          117           17.93         21.27         9.24          8.428653 \r\n 2016          118           2.57          13.05         6.057         54.24196 \r\n 2016          119           5             10.51         4.856         0 \r\n 2016          120           5.232         8.09          5.098         0.7899919 \r\n 2016          121           3.253         8.8           5.542         37.92376 \r\n 2016          122           4.681         9.22          5.532         2.106645 \r\n 2016          123           17.86         18.14         4.674         0 \r\n 2016          124           24.03         19.71         5.3           0 \r\n 2016          125           29.03         19.18         7.118         0 \r\n 2016          126           26.61         23.49         7.056         0 \r\n 2016          127           28.87         29.47         8.75          0 \r\n 2016          128           19.86         20.72         11.65         0 \r\n 2016          129           20.33         21.19         9.67          0 \r\n 2016          130           9.46          20.96         12.42         43.97829 \r\n 2016          131           27.14         23.69         10.99         0 \r\n 2016          132           12.523        19.71         11.86         20.53771 \r\n 2016          133           26.99         19.63         8.41          0 \r\n 2016          134           13.75         20.92         5.028         0.2633306 \r\n 2016          135           30.78         14.08         1.5           0 \r\n 2016          136           26.72         18.62         2.654         0 \r\n 2016          137           9             11.46         7.581         2.106645 \r\n 2016          138           19.44         18.37         5.724         0 \r\n 2016          139           25.05         21.45         7.984         0 \r\n 2016          140           19.69         20.68         8.87          0 \r\n 2016          141           16.87         20.36         10.73         0 \r\n 2016          142           16.14         21.5          7.076         0 \r\n 2016          143           28.15         26.87         10.42         0 \r\n 2016          144           17.15         24.84         16.32         0 \r\n 2016          145           21.61         27.76         15.22         4.47662 \r\n 2016          146           14.97         25.86         17.33         10.79241 \r\n 2016          147           17.64         27.3          14.51         82.93877 \r\n 2016          148           14.95         25.24         14.61         4.739951 \r\n 2016          149           11.46         21.73         14.88         4.21329 \r\n 2016          150           15.83         29.11         11.85         0 \r\n 2016          151           12.2          30.34         16.97         2.633306 \r\n 2016          152           6.26          23.48         16.06         1.579984 \r\n 2016          153           11.66         25.35         12.62         0 \r\n 2016          154           9.87          28.75         14.11         0 \r\n 2016          155           11.2          28.92         16.32         4.21329 \r\n 2016          156           14.98         25.29         14.1          0 \r\n 2016          157           19.34         29.74         13.24         0 \r\n 2016          158           19.92         27.62         13.49         0 \r\n 2016          159           14.06         26.63         11.32         0 \r\n 2016          160           18.03         29.75         13.4          0 \r\n 2016          161           23.53         33.5          20.07         0 \r\n 2016          162           24.45         34.02         22.23         0 \r\n 2016          163           18.62         33.66         23.02         0 \r\n 2016          164           25.32         33.54         21.48         0 \r\n 2016          165           21.86         33.97         20.6          0 \r\n 2016          166           17.77         32.28         20.6          0 \r\n 2016          167           24.76         35.47         19.79         0 \r\n 2016          168           27.76         34.52         18.98         0 \r\n 2016          169           23.88         33.02         21.13         0 \r\n 2016          170           22.77         30.89         20.46         0 \r\n 2016          171           23.45         32.06         18.43         0 \r\n 2016          172           6.635         28.11         15.8          28.19 \r\n 2016          173           22.21         29.47         16.67         0 \r\n 2016          174           21.64         31.96         21.25         0 \r\n 2016          175           21.79         27.39         15.58         0 \r\n 2016          176           23.56         30.47         15.39         0 \r\n 2016          177           16.32         31.52         22.94         0.254 \r\n 2016          178           16.73         31.19         19.78         20.83 \r\n 2016          179           15.28         31.63         17.11         10.16 \r\n 2016          180           17.01         27.77         15.53         0.254 \r\n 2016          181           15.53         27.24         17.1          0 \r\n 2016          182           19.14         28.64         16.2          0 \r\n 2016          183           26.25         25.28         11.03         0 \r\n 2016          184           4.177         18.33         14.81         19.56 \r\n 2016          185           9.7           20.2          14.23         0 \r\n 2016          186           12.55         25.5          15.98         0 \r\n 2016          187           22.14         31.9          18.35         0 \r\n 2016          188           22.18         31.24         20.72         0.508 \r\n 2016          189           21.31         28.48         17.31         24.89 \r\n 2016          190           25.58         28.98         16.62         0 \r\n 2016          191           23.31         28.58         17.02         0 \r\n 2016          192           22.91         30.41         20.81         0 \r\n 2016          193           23.06         31.4          16.65         27.94 \r\n 2016          194           22.49         29.08         16.91         0.508 \r\n 2016          195           16.15         30.01         18.59         0.254 \r\n 2016          196           23.09         29.1          16.73         0 \r\n 2016          197           14.87         22.8          12.71         0 \r\n 2016          198           24.41         28.81         12.87         0 \r\n 2016          199           16.97         30.02         19.81         8.64 \r\n 2016          200           21.07         29.12         17.15         61.98 \r\n 2016          201           9.55          27.5          19.55         6.096 \r\n 2016          202           26.42         32.14         21.13         0 \r\n 2016          203           25.55         33.03         24.27         0 \r\n 2016          204           25.42         31.76         24.63         0 \r\n 2016          205           16.31         31.44         23.81         0.254 \r\n 2016          206           19.49         29.14         19.02         0 \r\n 2016          207           27.21         29.52         16.45         0 \r\n 2016          208           26.89         29.69         16.07         0 \r\n 2016          209           19.49         29.51         17.91         0 \r\n 2016          210           25.58         27.73         18.17         0 \r\n 2016          211           23.07         26.24         15.48         0 \r\n 2016          212           23.12         26.66         14.41         0 \r\n 2016          213           18.32         27.41         18.14         6.35 \r\n 2016          214           17.75         28.68         19.51         9.91 \r\n 2016          215           22.59         29.49         20.17         1.524 \r\n 2016          216           24.42         30.15         18.18         0 \r\n 2016          217           19.47         32.62         19.94         0 \r\n 2016          218           24.76         26.48         16.83         0 \r\n 2016          219           19.39         25.91         15.92         0 \r\n 2016          220           16.86         25.99         16.28         0 \r\n 2016          221           15.23         26.24         14.61         0 \r\n 2016          222           21.06         30.35         18.73         0 \r\n 2016          223           23.42         32.4          21.97         0 \r\n 2016          224           22.33         33.43         19.02         37.85 \r\n 2016          225           13.96         26.38         17.61         0.254 \r\n 2016          226           25.06         29.18         14.35         0 \r\n 2016          227           23.84         28.38         15.41         0 \r\n 2016          228           16.7          28.38         15.2          0 \r\n 2016          229           9.38          26.99         17.15         4.318 \r\n 2016          230           23.12         32.34         17.81         0 \r\n 2016          231           21.2          30.34         19.54         0 \r\n 2016          232           16.08         30.04         18.19         5.588 \r\n 2016          233           19.25         21.97         12.72         0.254 \r\n 2016          234           25.25         25.67         11.22         0 \r\n 2016          235           24.47         26.2          12.94         0 \r\n 2016          236           9.17          26.66         16.34         35.81 \r\n 2016          237           11.6          27.63         16.07         1.27 \r\n 2016          238           11.73         25            13.73         0.254 \r\n 2016          239           7.167         20.92         12.76         0.508 \r\n 2016          240           15.95         27.21         17.39         0.254 \r\n 2016          241           18.34         30.91         17.32         6.096 \r\n 2016          242           14.62         30.79         19.34         25.4 \r\n 2016          243           12.43         27.49         19.16         0.254 \r\n 2016          244           22.67         26.08         14.66         0 \r\n 2016          245           23.04         25.54         12.66         0 \r\n 2016          246           21.73         24.5          12.14         0 \r\n 2016          247           17.04         24.26         13.28         0 \r\n 2016          248           10.62         25.75         15.32         3.81 \r\n 2016          249           20.64         30.77         18.73         0 \r\n 2016          250           19.61         31.59         22.29         0 \r\n 2016          251           8.35          26            18.65         15.49 \r\n 2016          252           20.32         28.72         19.58         0 \r\n 2016          253           5.815         26.19         13.91         15.24 \r\n 2016          254           21.99         23.31         10.02         0 \r\n 2016          255           21.89         25.28         11.17         0 \r\n 2016          256           17.95         29.06         13.18         0 \r\n 2016          257           4.462         17.73         12.96         17.27 \r\n 2016          258           8.22          21.19         11.86         0 \r\n 2016          259           14.45         28.77         15.68         11.18 \r\n 2016          260           13.21         24.77         14.96         34.54 \r\n 2016          261           20.8          26.12         13.06         0 \r\n 2016          262           20.23         28.69         13.98         0 \r\n 2016          263           18.98         31.1          16.03         0 \r\n 2016          264           19.04         32.66         13.46         0 \r\n 2016          265           13.56         32.28         21.91         0 \r\n 2016          266           14.56         32.34         20.94         0 \r\n 2016          267           18.48         31.38         19.78         0 \r\n 2016          268           11.2          31.29         18.71         14.22 \r\n 2016          269           11.74         21.7          8.47          12.95 \r\n 2016          270           19.73         23.53         5.583         0 \r\n 2016          271           19.41         24.68         8.59          0 \r\n 2016          272           15.57         18.37         6.128         0 \r\n 2016          273           19.09         21.47         6.007         0 \r\n 2016          274           18.62         22.77         6.986         0 \r\n 2016          275           5.279         18.36         12.66         0 \r\n 2016          276           10.67         22.47         12.52         0 \r\n 2016          277           16.67         24.25         9.92          0 \r\n 2016          278           3.163         19.41         14.88         51.31 \r\n 2016          279           14.07         22.77         11.57         0 \r\n 2016          280           2.942         17.73         5.159         11.68 \r\n 2016          281           17.73         17.19         1.5           0 \r\n 2016          282           17.33         22.25         4.896         0 \r\n 2016          283           17.06         22.7          3.804         0 \r\n 2016          284           6.344         17.49         9.41          0 \r\n 2016          285           15.04         24.7          10.24         0 \r\n 2016          286           11.87         11.15         0.792         1.524 \r\n 2016          287           16.59         14.54        -1.13          0 \r\n 2016          288           4.646         16.04         4.39          0 \r\n 2016          289           5.554         20.24         13.93         0 \r\n 2016          290           7.708         27.13         13.47         0.254 \r\n 2016          291           14.41         29.8          15.22         0 \r\n 2016          292           15.21         21.19         9.64          0 \r\n 2016          293           12.4          22.01         9.78          0 \r\n 2016          294           14.43         13.37         2.946         0.508 \r\n 2016          295           13.8          16.5          0.246         0 \r\n 2016          296           14.69         22.44         3.765         0 \r\n 2016          297           14.53         21.56         5.643         0 \r\n 2016          298           14.08         16.85         2.633         0 \r\n 2016          299           9.91          19.09         8.45          2.54 \r\n 2016          300           5.683         17.5          6.34          0 \r\n 2016          301           12.75         21.06         3.562         0 \r\n 2016          302           10.29         26.75         11.92         0 \r\n 2016          303           9.81          24.58         10.08         0 \r\n 2016          304           8.26          13.33         5.724         0 \r\n 2016          305           4.312         19.35         8.88          0 \r\n 2016          306           10.72         22.71         9.82          1.016 \r\n 2016          307           4.559         17.63         8.53          6.35 \r\n 2016          308           12.64         22.39         6.057         0 \r\n 2016          309           12.08         22.95         5.462         0 \r\n 2016          310           9.76          21.76         7.338         0 \r\n 2016          311           11.96         18.21         4.876         0 \r\n 2016          312           4.736         14.92         4.876         0 \r\n 2016          313           12.26         15.72         4.594         0 \r\n 2016          314           12.29         14.73        -0.036         0 \r\n 2016          315           12.05         20.38         2.33          0 \r\n 2016          316           9.97          11.19         0.692         0 \r\n 2016          317           11.89         11.69        -2.061         0 \r\n 2016          318           11.59         16.71         0.044         0 \r\n 2016          319           11.09         15.76         2.814         0 \r\n 2016          320           10.31         20.21         1.176         0 \r\n 2016          321           10.53         20.38         0.711         0 \r\n 2016          322           6.786         20.97         5.814         0 \r\n 2016          323           3.003         7.248        -0.968         0 \r\n 2016          324           11.14         4.896        -6.886         0 \r\n 2016          325           9.86          6.471        -7.962         0 \r\n 2016          326           6.048         7.843        -5.699         0 \r\n 2016          327           1.553         5.108         3.078         21.08 \r\n 2016          328           2.901         3.422         1.196         0 \r\n 2016          329           1.187         1.824         0.448         0 \r\n 2016          330           9.92          10           -0.988         0 \r\n 2016          331           9.25          14.11         0.489         0 \r\n 2016          332           1.229         12.46         0.934         10.16 \r\n 2016          333           9.47          11.2          1.804         0 \r\n 2016          334           7.486         5.26         -1.738         0 \r\n 2016          335           2.542         0.61         -0.988         0 \r\n 2016          336           3.108         1.076        -1.636         0 \r\n 2016          337           5.534         3.594        -3.116         0 \r\n 2016          338           3.362         2.411        -5.244         0 \r\n 2016          339           6.271         3.542        -1.91          15.24 \r\n 2016          340           9.8           9.36         -2.386         0 \r\n 2016          341           9.75         -0.078        -7.698         0 \r\n 2016          342           5.213        -5.791        -11.27         0 \r\n 2016          343           8.63         -5.67         -13.61         0 \r\n 2016          344           4.933        -7.444        -16.5          0 \r\n 2016          345           3.895        -2.284        -7.576         0 \r\n 2016          346           2.48          0.732        -12.9          0 \r\n 2016          347           7.035        -1.312        -15.79         0 \r\n 2016          348           8.37         -7.028        -16.46         0 \r\n 2016          349           7.986        -5.892        -16.42         0 \r\n 2016          350           3.53         -9.83         -18.05         0 \r\n 2016          351           1.158        -5.852        -9.84          0 \r\n 2016          352           2.947        -7.841        -24.04         0 \r\n 2016          353           9.55         -15.34        -27.3          0 \r\n 2016          354           9.21         -5            -18.21         0 \r\n 2016          355           6.376         4.532        -8.55          0 \r\n 2016          356           5.885         8.47         -5.689         0 \r\n 2016          357           7.674         4.199        -8.57          0 \r\n 2016          358           1.835         1.48         -1.95          5.842 \r\n 2016          359           5.403         1.884        -6.136         0 \r\n 2016          360           0.917         10.52        -0.098         16.51 \r\n 2016          361           9.13          4.29         -4.534         0 \r\n 2016          362           9.08          6.794        -5.913         0 \r\n 2016          363           5.651         6.31         -1.656         0 \r\n 2016          364           9.41          4.704        -4.168         0 \r\n 2016          365           7.613         6.895        -8.08          0 \r\n 2016          366           6.929         0.418        -7.8           0 \r\n 2017          1             3.85          1.52         -8.87          0 \r\n 2017          2             1.148         2.148        -0.452         0 \r\n 2017          3             8.25         -0.24         -15.12         1.78 \r\n 2017          4             6.475        -11.82        -16.56         0 \r\n 2017          5             7.346        -14.04        -20.64         0 \r\n 2017          6             9.95         -10.93        -22.66         0 \r\n 2017          7             9.92         -6.745        -17.91         0 \r\n 2017          8             4.381        -3.905        -17.44         0 \r\n 2017          9             4.984         0.368        -12.75         0 \r\n 2017          10            6.779         2.33         -5.973         0.51 \r\n 2017          11            5.019         0.408        -12.83         3.05 \r\n 2017          12            6.527        -6.918        -13.43         0 \r\n 2017          13            6.263        -4.392        -13.23         0 \r\n 2017          14            8.65          2.138        -7.444         0 \r\n 2017          15            2.955        -0.24         -4.352         0 \r\n 2017          16            1.797        -0.502        -1.666         6.35 \r\n 2017          17            4.68         -0.644        -3.155         10.67 \r\n 2017          18            10.41         7.51         -4.402         0 \r\n 2017          19            3.132         4.552        -0.057         0 \r\n 2017          20            1.759         4.008         1.147         0.51 \r\n 2017          21            5.823         6.976        -0.644         3.81 \r\n 2017          22            3.227         1.804        -3.236         0 \r\n 2017          23            2.285        -0.624        -2.061         0 \r\n 2017          24            2.778        -0.746        -2.943         0 \r\n 2017          25            7.442        -1.232        -5.324         5.33 \r\n 2017          26            8.2          -4.624        -10            2.03 \r\n 2017          27            11.32        -0.584        -14.24         0 \r\n 2017          28            9.62          0.104        -6.014         0 \r\n 2017          29            6.106         1.035        -1.576         0 \r\n 2017          30            9.83          8.21         -3.499         0 \r\n 2017          31            5.76          3.804        -0.604         0 \r\n 2017          32            6.068        -0.34         -8.63          0 \r\n 2017          33            7.962        -5.892        -10.97         0 \r\n 2017          34            12.5         -2.588        -9.83          0 \r\n 2017          35            12.59         7.4          -7.861         0 \r\n 2017          36            10.06         0.174        -8.79          0 \r\n 2017          37            7.755         7.43         -4.108         0 \r\n 2017          38            3.339         5.159        -7.354         0 \r\n 2017          39            13.05        -6.998        -17            2.29 \r\n 2017          40            11.12        -4.636        -17.05         0.51 \r\n 2017          41            10.5          12.56        -5.254         0 \r\n 2017          42            7.958         9.9           2.056         0 \r\n 2017          43            14.03         6.694        -1.98          0 \r\n 2017          44            9.48          8.31         -3.986         0 \r\n 2017          45            13.57         8.47         -2.528         0 \r\n 2017          46            14.78         7.4          -5.304         0 \r\n 2017          47            14.14         17.03        -0.846         0 \r\n 2017          48            14.9          20.83         1.783         0 \r\n 2017          49            15.19         18.04         0.307         0 \r\n 2017          50            12.85         20.13         3.522         0 \r\n 2017          51            2.064         14.38         4.795         9.91 \r\n 2017          52            15.34         17.92         0.61          1.27 \r\n 2017          53            15.75         20.22         5.038         0 \r\n 2017          54            3.483         5.442        -0.563         0 \r\n 2017          55            6.656        -0.159        -8.02          6.86 \r\n 2017          56            16.17        -0.886        -10.56         1.52 \r\n 2017          57            17.15         4.39         -5.132         0 \r\n 2017          58            12.51         10.51        -4.878         0 \r\n 2017          59            10.13         12.59         1.338         0 \r\n 2017          60            9             3.866        -5.052         5.33 \r\n 2017          61            14.97         5.3          -7.171         0 \r\n 2017          62            15.27         7.076        -8.71          0 \r\n 2017          63            16.77         20.54        -3.864         0 \r\n 2017          64            5.19          14.19         8.97          0 \r\n 2017          65            11.75         23.89         2.228         0 \r\n 2017          66            16.9          11.78        -0.826         6.35 \r\n 2017          67            17.45         11.92        -2.204         0 \r\n 2017          68            2.909         7.642        -4.412         0 \r\n 2017          69            7.683        -4.422        -10.87         0 \r\n 2017          70            7.577        -2.648        -8.14          0.51 \r\n 2017          71            6.468         2.592        -5.892         0 \r\n 2017          72            10.97        -0.432        -8.55          2.79 \r\n 2017          73            14.05        -2.204        -11.31         0 \r\n 2017          74            14.26         1.338        -11.31         0 \r\n 2017          75            17.14         16.49        -2.791         0 \r\n 2017          76            18.98         18.01         0.842         0 \r\n 2017          77            18.48         14.77        -4.798         0 \r\n 2017          78            18.63         24.11         2.471         0 \r\n 2017          79            18.52         17.99         5.421         0 \r\n 2017          80            11.32         7.782         0.104         0 \r\n 2017          81            11.89         8.71         -2.426         3.3 \r\n 2017          82            10.16         23.09         4.754         1.78 \r\n 2017          83            3.451         19.6          3.794         2.03 \r\n 2017          84            4.148         4.552         2.713         16 \r\n 2017          85            7.56          8.06          2.532         6.6 \r\n 2017          86            7.342         9.89          3.179         0 \r\n 2017          87            4.399         8.81          5.604         0 \r\n 2017          88            1.994         7.5           3.886         7.37 \r\n 2017          89            3.794         5.018         3.159         22.35 \r\n 2017          90            11.88         10.86         2.754         0 \r\n 2017          91            6.922         9.05          3.422         0 \r\n 2017          92            4.824         10.15         5.814         4.064 \r\n 2017          93            2.94          9.94          6.794         6.096 \r\n 2017          94            13.65         13.53         6.613         0 \r\n 2017          95            14.58         13.32         3.179         1.016 \r\n 2017          96            19.22         13.1          0.084         0 \r\n 2017          97            19.62         15.8         -1.95          0 \r\n 2017          98            16.36         23.04         7.359         0 \r\n 2017          99            10.89         26.9          12.42         0 \r\n 2017          100           9.32          14.71         0.711         0 \r\n 2017          101           21.95         16.77        -3.499         0 \r\n 2017          102           8.75          20.42         5.27          0 \r\n 2017          103           16.95         25.6          9.61          0 \r\n 2017          104           4.119         20.07         14.32         23.37 \r\n 2017          105           9.56          21.87         13.32         4.064 \r\n 2017          106           20.29         20.34         8.07          0 \r\n 2017          107           25.55         21.88         5.614         0 \r\n 2017          108           4.482         19.01         10.61         8.13 \r\n 2017          109           9.25          24.82         8.77          6.858 \r\n 2017          110           17.128        14.29         4.209         0 \r\n 2017          111           16.49         13.43         2.734         0 \r\n 2017          112           24            18.55         4.018         0 \r\n 2017          113           26.78         21.47         5.562         0 \r\n 2017          114           22.2          22.62         7.036         0 \r\n 2017          115           9.46          16.08         4.422         0.508 \r\n 2017          116           7.43          5.067         1.41          0 \r\n 2017          117           24.4          12.47         0.762         0 \r\n 2017          118           4.042         6.3           0.852         14.99 \r\n 2017          119           4.025         5.39          2.754         6.35 \r\n 2017          120           4.141         5.361         2.43          27.18 \r\n 2017          121           11.02         8.07          1.642         8.38 \r\n 2017          122           28.47         18.28         2.713         0 \r\n 2017          123           21.28         16.9          5.34          0 \r\n 2017          124           25.69         19.78         3.594         0 \r\n 2017          125           28.69         24.43         6.936         0 \r\n 2017          126           29.17         24.03         9.24          0 \r\n 2017          127           27.22         27.37         7.823         0 \r\n 2017          128           25.96         32.01         15.56         0 \r\n 2017          129           27.02         27.11         13.75         0 \r\n 2017          130           8.97          19.68         11.03         34.29 \r\n 2017          131           23.85         20.68         9.92          0 \r\n 2017          132           28.89         23.1          5.542         0 \r\n 2017          133           27.27         26.06         10.57         0 \r\n 2017          134           25.91         30.69         12.92         0 \r\n 2017          135           22.58         33.4          17.8          0 \r\n 2017          136           24.04         31.16         13.77         44.7 \r\n 2017          137           15.75         23.43         13.46         10.92 \r\n 2017          138           15.28         16.34         9.64          14.48 \r\n 2017          139           4.72          11.19         7.782         15.24 \r\n 2017          140           7.599         15.2          6.753         17.27 \r\n 2017          141           20.629        16.75         4.492         0 \r\n 2017          142           21.51         20.24         8.38          1.27 \r\n 2017          143           16.35         14.47         7.006         1.27 \r\n 2017          144           20.35         19.05         8.51          0 \r\n 2017          145           25.86         23.83         7.48          0 \r\n 2017          146           26.82         27.75         14.55         0 \r\n 2017          147           14.47         19.62         12.52         12.45 \r\n 2017          148           22.04         25.89         10.26         0 \r\n 2017          149           25.75         22.77         10.69         0 \r\n 2017          150           28.82         25.13         9.36          0 \r\n 2017          151           28.26         25.04         8.39          0 \r\n 2017          152           27.84         28.24         11.53         0 \r\n 2017          153           19.61         29.63         17.15         14.73 \r\n 2017          154           24.31         30.88         17.05         0 \r\n 2017          155           25.37         33.45         19.77         0 \r\n 2017          156           25.88         31.7          17.52         0 \r\n 2017          157           26.54         27.69         15.92         0 \r\n 2017          158           25.11         28.01         14.67         0 \r\n 2017          159           25.87         29.13         14.49         0 \r\n 2017          160           26.94         30.45         15.75         0 \r\n 2017          161           27.13         32.42         19.76         0 \r\n 2017          162           23.71         33.37         21.99         0 \r\n 2017          163           10.1          29.49         22.27         2.286 \r\n 2017          164           27.76         32.33         19            6.35 \r\n 2017          165           19.243        28.18         16.18         27.94 \r\n 2017          166           26.85         32.72         17.99         2.794 \r\n 2017          167           22.23         29.78         16.96         58.67 \r\n 2017          168           14.72         27.5          15.39         0.762 \r\n 2017          169           23.49         24.17         13.53         0 \r\n 2017          170           23.61         27.27         14.03         0 \r\n 2017          171           25.27         32.05         15.15         0 \r\n 2017          172           24.02         32.54         17.41         0 \r\n 2017          173           21.07         29.9          18.91         7.366 \r\n 2017          174           20.65         22.35         12.1          2.032 \r\n 2017          175           24.26         25.17         9.56          0 \r\n 2017          176           28.83         22.29         8.71          0 \r\n 2017          177           22.38         23.67         11.38         1.016 \r\n 2017          178           28.95         25.74         10.1          0 \r\n 2017          179           19.94         29.48         17.06         6.35 \r\n 2017          180           21.26         26.26         17.85         3.302 \r\n 2017          181           23.43         25.59         14.2          7.366 \r\n 2017          182           25.41         27.72         13.06         0.254 \r\n 2017          183           13.27         27.24         16.61         3.556 \r\n 2017          184           22.51         30.39         17.45         0 \r\n 2017          185           23.73         29.42         18.98         0 \r\n 2017          186           25.98         31.35         16.87         0 \r\n 2017          187           27.33         30.84         19.25         0 \r\n 2017          188           21.59         27.04         17.75         0 \r\n 2017          189           26.83         29.12         15.51         0 \r\n 2017          190           27.5          31.27         17.33         0 \r\n 2017          191           26.25         31.7          21.92         0 \r\n 2017          192           23.73         31.76         19.54         1.27 \r\n 2017          193           12.109        30.02         21.52         0 \r\n 2017          194           19.97         29.03         19.34         2.032 \r\n 2017          195           26.08         30.02         15.71         0 \r\n 2017          196           27.19         30.88         18.74         0 \r\n 2017          197           25.46         33.35         19.54         0 \r\n 2017          198           28.01         31.82         20.31         0 \r\n 2017          199           21.01         29.96         20.95         2.286 \r\n 2017          200           25.26         32.16         21.19         4.064 \r\n 2017          201           23.51         32.67         22.55         0 \r\n 2017          202           25.02         34.17         23.67         0 \r\n 2017          203           19.57         31.11         20.98         0 \r\n 2017          204           23.46         29.38         17.13         0 \r\n 2017          205           25.81         27.83         14.09         0 \r\n 2017          206           25.11         31.48         18.83         0 \r\n 2017          207           4.817         25.08         20.22         9.65 \r\n 2017          208           25.38         27.28         17.77         0 \r\n 2017          209           19.101        28.15         15.87         0 \r\n 2017          210           24.51         28.36         15.74         0 \r\n 2017          211           25.33         27.26         14.32         0 \r\n 2017          212           27.91         27.93         13.47         0 \r\n 2017          213           25.78         29.27         15.74         0 \r\n 2017          214           23.91         29.1          15.72         0 \r\n 2017          215           16.056        22.31         9.93          6.604 \r\n 2017          216           27.92         25.87         8.79          0 \r\n 2017          217           9.61          19.4          11.82         2.54 \r\n 2017          218           17.88         23.63         14.27         1.016 \r\n 2017          219           22.19         24.91         13.84         0 \r\n 2017          220           25.12         26.56         12.4          0 \r\n 2017          221           19.33         25.4          13.52         0 \r\n 2017          222           18.73         26.48         15.3          0 \r\n 2017          223           24.23         25.72         13.42         0 \r\n 2017          224           25.55         26.74         11.66         0 \r\n 2017          225           16.76         25.11         15.08         0 \r\n 2017          226           20.19         29.26         17.04         0 \r\n 2017          227           13.94         27.18         16.83         26.42 \r\n 2017          228           16.241        26.58         17.36         25.4 \r\n 2017          229           25.3          25.44         16.18         0 \r\n 2017          230           24.58         27.57         14.73         0 \r\n 2017          231           24.94         28.5          13.34         0 \r\n 2017          232           9.64          25.29         18.33         15.75 \r\n 2017          233           12.9          26.6          16.45         93.7 \r\n 2017          234           25.97         22.56         13.43         0.254 \r\n 2017          235           24.8          24.91         11.33         0 \r\n 2017          236           20.44         24.82         13.67         0 \r\n 2017          237           17.93         25.5          15.32         7.366 \r\n 2017          238           19.79         26.96         15.78         0 \r\n 2017          239           14.43         26.39         16.2          0 \r\n 2017          240           21.77         24.28         13.56         0 \r\n 2017          241           23.7          24.84         12.11         0 \r\n 2017          242           24.71         27.62         12.6          0 \r\n 2017          243           22.19         26.69         13.8          0 \r\n 2017          244           19.99         23.86         13.34         0 \r\n 2017          245           18.7          25.95         14.25         0 \r\n 2017          246           21.16         27.87         12.26         0 \r\n 2017          247           14.04         23.25         12.46         0 \r\n 2017          248           21.17         19.08         8.02          0 \r\n 2017          249           20.92         20.04         6.602         0 \r\n 2017          250           22.51         23.72         7.036         0 \r\n 2017          251           21.9          28.75         9.32          0 \r\n 2017          252           19.61         27.68         12.88         0 \r\n 2017          253           19.58         28.02         15.34         0 \r\n 2017          254           20.75         28.48         13.37         0 \r\n 2017          255           20.14         29.06         12.98         0 \r\n 2017          256           20.06         29.58         13.59         0 \r\n 2017          257           19.98         31.54         16.36         0 \r\n 2017          258           19.2          31.27         17.36         0 \r\n 2017          259           11.38         27            12.57         16.26 \r\n 2017          260           19.81         22.22         9.62          0.254 \r\n 2017          261           6.322         23.11         13.65         7.62 \r\n 2017          262           17.77         29.18         17.13         0 \r\n 2017          263           18.35         27.88         16.27         0 \r\n 2017          264           15.05         31.61         16.08         0 \r\n 2017          265           18.65         32.73         21.77         0 \r\n 2017          266           18.72         31.88         18.88         0 \r\n 2017          267           15.69         31.34         18.53         0 \r\n 2017          268           9.58          24.34         16.1          34.54 \r\n 2017          269           11.17         18.42         11.46         1.27 \r\n 2017          270           14.6          21.72         8.77          0 \r\n 2017          271           19.1          24.95         8.37          0 \r\n 2017          272           18.62         24.18         9.38          0 \r\n 2017          273           17.17         24.65         9.97          0 \r\n 2017          274           11.09         23.91         12.36         0.254 \r\n 2017          275           10.49         28.38         14.19         11.94 \r\n 2017          276           3.862         23.53         13.78         1.524 \r\n 2017          277           10.63         19.44         10.04         1.524 \r\n 2017          278           1.854         18.46         12.12         15.24 \r\n 2017          279           2.241         20.47         12.76         32 \r\n 2017          280           9.59          20.02         11.29         10.41 \r\n 2017          281           17.24         26.7          9.57          0 \r\n 2017          282           11.35         17.33         5.038         0 \r\n 2017          283           2.818         6.613         2.754         14.48 \r\n 2017          284           15.73         16.95         4.209         0 \r\n 2017          285           12.52         18.54         6.452         0 \r\n 2017          286           4.329         14.15         9.22          0 \r\n 2017          287           1.399         16.5          7.359         19.3 \r\n 2017          288           15.18         14.1          5.078         0 \r\n 2017          289           16.01         21.6          1.814         0 \r\n 2017          290           15.66         21.77         7.561         0 \r\n 2017          291           14.69         23.07         7.46          0 \r\n 2017          292           15.2          24.97         6.38          0 \r\n 2017          293           12.92         23.99         11.35         0 \r\n 2017          294           4.908         22.73         8.73          12.45 \r\n 2017          295           14.98         19.14         5.684         0 \r\n 2017          296           10.62         16.7          5.643         0 \r\n 2017          297           14.98         10.48         2.35          0 \r\n 2017          298           13.5          19.28         1.702         0 \r\n 2017          299           10.64         16            0.631         0 \r\n 2017          300           3.896         0.68         -4.24          0 \r\n 2017          301           13.58         8            -4.33          0 \r\n 2017          302           6.674         15.03        -0.988         0 \r\n 2017          303           7.223         7.178        -2.932         0 \r\n 2017          304           6.045         1.116        -7.474         0 \r\n 2017          305           4.486         7.742        -2.466         0 \r\n 2017          306           8.77          11.76        -1.818         0 \r\n 2017          307           10.96         8.77         -2.932         0 \r\n 2017          308           4.885         9.79          4.532         0 \r\n 2017          309           8.1           8.12         -3.723         0 \r\n 2017          310           9.51          4.209        -5.203         0 \r\n 2017          311           6.377         5.229        -4.402         0 \r\n 2017          312           12.01         8.61         -6.126         0 \r\n 2017          313           10.74         1.47         -8.57          0 \r\n 2017          314           4.428        -0.118        -10.03         0 \r\n 2017          315           2.338         4.633        -0.159         1.778 \r\n 2017          316           11.02         9.07         -0.118         2.794 \r\n 2017          317           1.986         5.148        -2.486         0 \r\n 2017          318           1.912         11.48         4.856         0.508 \r\n 2017          319           11.11         10.99        -5.182         0 \r\n 2017          320           10.77         7.602        -6.664         0 \r\n 2017          321           1.54          11.56         4.31          0.254 \r\n 2017          322           9.64          7.056        -3.662         6.35 \r\n 2017          323           10.69         9.24         -7.11          0 \r\n 2017          324           8.63          13.65         0.55          0 \r\n 2017          325           9.65          5.986        -9.26          1.016 \r\n 2017          326           9.19          1.5          -12.25         0 \r\n 2017          327           9.81          15.76        -2.669         0 \r\n 2017          328           9.67          19.62         2.956         0 \r\n 2017          329           10.15         13.19        -0.138         0 \r\n 2017          330           6.52          13.39        -0.28          0 \r\n 2017          331           7.609         17.46         1.277         0 \r\n 2017          332           7.819         12.7         -0.624         0 \r\n 2017          333           8.53          9.1          -4.716         0 \r\n 2017          334           9.28          10.79        -1.232         0 \r\n 2017          335           9.4           12.2         -3.622         0 \r\n 2017          336           9.14          15.43        -1.535         0 \r\n 2017          337           7.137         14.88         0.458         0 \r\n 2017          338           5.299         17.19        -4.017         0 \r\n 2017          339           8.5           3.603        -7.21          0 \r\n 2017          340           5.714         4.149        -9.67          0 \r\n 2017          341           9.44         -4.96         -13.1          0 \r\n 2017          342           8.33          2.633        -10.89         0 \r\n 2017          343           8.96         -1.232        -7.272         0 \r\n 2017          344           8.67          9.09         -5.67          0 \r\n 2017          345           2.755         6.966        -6.988         0 \r\n 2017          346           8.84          2.026        -12.43         0 \r\n 2017          347           7.625         8.27         -2.578         0 \r\n 2017          348           3.633         2.188        -3.56          0 \r\n 2017          349           7.863         7.268        -2.548         0 \r\n 2017          350           8.53          12.36        -2.992         0 \r\n 2017          351           4.303         3.36         -4.949         0.254 \r\n 2017          352           8.62          9.79         -6.947         0.254 \r\n 2017          353           9.31          8.13         -3.895         0 \r\n 2017          354           8.48          6.976        -7.272         0 \r\n 2017          355           1.149         4.118        -6.42          3.302 \r\n 2017          356           7.799        -3.298        -10.77         0 \r\n 2017          357           5.223        -6.258        -10.28         0 \r\n 2017          358           9.16         -8.18         -14.89         3.048 \r\n 2017          359           7.446        -12.25        -18.85         0 \r\n 2017          360           9.38         -15.8         -23.68         0 \r\n 2017          361           7.534        -15.88        -25.44         0 \r\n 2017          362           7.84         -8.24         -16.39         0 \r\n 2017          363           3.132        -9.95         -16.42         0 \r\n 2017          364           6.367        -16.34        -21.33         0 \r\n 2017          365           9.62         -21.21        -29.78         0 \r\n 2018          1             9.78         -21.35        -30.86         0 \r\n 2018          2             9.58         -7.8          -28.38         0 \r\n 2018          3             9.62         -6.531        -19.82         0 \r\n 2018          4             6.713        -12.09        -22.06         0 \r\n 2018          5             6.621        -11.46        -15.36         0 \r\n 2018          6             7.889        -8.47         -18.13         0 \r\n 2018          7             6.05          2.37         -8.65          0 \r\n 2018          8             9.95          4.976        -7.464         0 \r\n 2018          9             4.437         6.209        -1.554         0 \r\n 2018          10            2.848         7.722         1.014         0 \r\n 2018          11            7.704         4.604        -16.5          0 \r\n 2018          12            8.86         -13.86        -20.82         6.1 \r\n 2018          13            5.408        -12.47        -15.62         0 \r\n 2018          14            4.087        -3.116        -12.59         0.25 \r\n 2018          15            9.89         -8.14         -22.38         3.05 \r\n 2018          16            9.14         -15.75        -22.56         0 \r\n 2018          17            10.56        -5.182        -19.96         0 \r\n 2018          18            9.61         -0.502        -10.52         0 \r\n 2018          19            8.56          5.835        -2.325         0 \r\n 2018          20            9.9           8.19         -4.291         0 \r\n 2018          21            1.183         3.482         1.42          0 \r\n 2018          22            2.443         1.884        -2.81          5.33 \r\n 2018          23            5.128        -2.73         -7.334         11.18 \r\n 2018          24            5.888        -0.036        -9.48          0 \r\n 2018          25            11.03         7.762        -3.723         0 \r\n 2018          26            8.37          10.79        -0.118         0 \r\n 2018          27            11.3          8.23         -3.752         0 \r\n 2018          28            6.226        -0.948        -13.63         0 \r\n 2018          29            11.68        -4.554        -15.14         0 \r\n 2018          30            9.81          5.684        -9.59          0 \r\n 2018          31            4.323         3.179        -1.353         0 \r\n 2018          32            12.33        -0.27         -16.3          0 \r\n 2018          33            7.438        -2.548        -17.4          0 \r\n 2018          34            5.045         6.854        -7.038         0 \r\n 2018          35            10.97        -7.069        -19.09         1.02 \r\n 2018          36            4.301        -10.91        -19.91         0 \r\n 2018          37            8.51         -13.08        -22.84         7.87 \r\n 2018          38            13.64        -9.05         -16.46         0.76 \r\n 2018          39            7.908        -5.224        -12.2          0 \r\n 2018          40            8.36         -8.53         -16.28         3.3 \r\n 2018          41            9.13         -13           -17.15         7.87 \r\n 2018          42            14.55        -6.156        -17.66         1.27 \r\n 2018          43            12.8         -9.52         -18.79         0 \r\n 2018          44            13.28         2.411        -9.68          0 \r\n 2018          45            10.97         5.624        -1.898         0 \r\n 2018          46            8.17          5.684        -6.876         0 \r\n 2018          47            15.1         -2.558        -13.35         0 \r\n 2018          48            13.76         5.795        -5.03          0 \r\n 2018          49            13.21         11.7         -4.756         0 \r\n 2018          50            2.31          7.581        -6.196         0 \r\n 2018          51            8.29         -5.071        -12.86         4.83 \r\n 2018          52            13.75        -5.061        -15.06         0 \r\n 2018          53            5.04         -1.363        -7.09          3.56 \r\n 2018          54            16           -1.535        -7.454         5.84 \r\n 2018          55            2.864        -1.677        -7.576         0 \r\n 2018          56            16.6          3.825        -7.302         2.54 \r\n 2018          57            16.58         10.95        -3.439         0 \r\n 2018          58            15.25         15.28         1.056         0 \r\n 2018          59            4.115         6.532        -1.048         0 \r\n 2018          60            17.66         7.147        -4.24          0 \r\n 2018          61            16.43         9.83         -5.142         0 \r\n 2018          62            16.83         15.92         1.014         0 \r\n 2018          63            8.37          14.35         4.573         0 \r\n 2018          64            4.991         8.45         -2.264         0 \r\n 2018          65            9.22         -1.1          -5.122         4.57 \r\n 2018          66            6.925        -2.648        -8.81          1.27 \r\n 2018          67            17.99         1.954        -8.9           0 \r\n 2018          68            15.13         6.028        -4.087         0 \r\n 2018          69            11.1          7.602        -4.006         0 \r\n 2018          70            3.677         2.411        -2.162         0.25 \r\n 2018          71            19.62         7.561        -5.04          0 \r\n 2018          72            19.89         6.37         -7.008         0 \r\n 2018          73            19.91         17.69        -5.568         0 \r\n 2018          74            17.6          13.61        -1.818         0 \r\n 2018          75            2.498         4.228        -1.048         2.54 \r\n 2018          76            5.092         1.976        -0.918         20.32 \r\n 2018          77            4.191         3.502        -0.27          0 \r\n 2018          78            11.16         10.37         0.722         0 \r\n 2018          79            4.62          2.552        -0.584         0.25 \r\n 2018          80            17.42         10.06        -0.654         1.78 \r\n 2018          81            15.03         14.48         0.832         1.02 \r\n 2018          82            9.45          8.57          2.097         0.25 \r\n 2018          83            4.18          3.239        -1.454         10.67 \r\n 2018          84            6.143         5.351        -1.687         0 \r\n 2018          85            2.671         4.512         1.258         0.76 \r\n 2018          86            11.33         8.45          0.722         6.35 \r\n 2018          87            12.35         10.03        -2.679         0 \r\n 2018          88            17.76         6.532        -2.669         2.54 \r\n 2018          89            19.14         12.06        -2.304         0 \r\n 2018          90            14.68         8.91         -6.358         0.51 \r\n 2018          91            10.33         1.722        -8.33          0 \r\n 2018          92            9.78          1.309        -9.71          0 \r\n 2018          93            4.176         0.368        -10.54         0 \r\n 2018          94            22.97         4.492        -12.74         0 \r\n 2018          95            16.72         12.88        -4.311         0 \r\n 2018          96            9.39          2.3          -10.01         4.572 \r\n 2018          97            18.85         5.502        -11.8          0 \r\n 2018          98            2.381        -0.168        -4.534         0 \r\n 2018          99            5.722         0.832        -2             1.27 \r\n 2018          100           21.42         15.49        -4.493         0 \r\n 2018          101           9.82          21.19         2.512         0 \r\n 2018          102           17.01         19.86         4.008         0 \r\n 2018          103           1             23.2222       6.94444       4.572 \r\n 2018          104           4.729         7.05556      -2.88889       1.778 \r\n 2018          105           12.38        -0.444444     -4.66667       0 \r\n 2018          106           19.6          7.55556      -4.94444       0.254 \r\n 2018          107           22.56         14.2222      -2.16667       0 \r\n 2018          108           7.355         5.5           0.222222      1.27 \r\n 2018          109           23.73         14.1111      -2.61111       0.762 \r\n 2018          110           19.57         16.7222       0.222222      0 \r\n 2018          111           5.471         13.3889       7.44444       0 \r\n 2018          112           18.56         20.6111       6.16667       0 \r\n 2018          113           26.71         23.1111       2.88889       0 \r\n 2018          114           21.13         23.6667       4.22222       0.254 \r\n 2018          115           17.49         16.5          4.72222       0.508 \r\n 2018          116           24.36         21.2778       1.38889       0 \r\n 2018          117           26.83         25.6667       1.83333       0 \r\n 2018          118           26.82         18.6111       2.94444       0 \r\n 2018          119           18.72         24.1111       5.66667       0 \r\n 2018          120           21.41         28.6667       14.9444       0 \r\n 2018          121           8.41          25.6111       15.5556       10.41 \r\n 2018          122           6.252         18.8889       13.2778       24.13 \r\n 2018          123           4.037         21.4444       11.8333       22.61 \r\n 2018          124           27.06         24.8333       10.7222       0 \r\n 2018          125           15.41         27.9444       9.66667       0.508 \r\n 2018          126           26.1          27.8333       10.7778       0 \r\n 2018          127           28.84         27.4444       8.44444       0 \r\n 2018          128           22.22         29.8889       16.9444       0 \r\n 2018          129           26.89         27.0556       14            0 \r\n 2018          130           26.58         26            11.6111       0 \r\n 2018          131           9.15          19.5556       10.3333       6.096 \r\n 2018          132           8.28          16.5556       9.66667       2.54 \r\n 2018          133           18.53         24.1667       12.5556       0 \r\n 2018          134           15.21         25.1111       15.6111       4.572 \r\n 2018          135           8.12          25.0556       14.3333       0 \r\n 2018          136           20.58         27.8889       13            0 \r\n 2018          137           14.06         28.9444       14.2778       0 \r\n 2018          138           1             29.1667       13.6667       0 \r\n 2018          139           15.074        22.2778       14.9444       0 \r\n 2018          140           12.095        17.6111       12.8333       0 \r\n 2018          141           1             23.4444       13.6667       0 \r\n 2018          142           14.238        27.8889       14.0556       4.572 \r\n 2018          143           28.013        32.2778       17.8889       0 \r\n 2018          144           25.621        31.8889       19.5556       0 \r\n 2018          145           27.987        33.6667       18.2222       0 \r\n 2018          146           29.919        36.3889       17.7222       0 \r\n 2018          147           1.608         37.3333       18.1111       0 \r\n 2018          148           29.097        35.5556       19.5556       0 \r\n 2018          149           19.368        32.2778       18.3333       9.91 \r\n 2018          150           25.158        29.1667       17.6667       0 \r\n 2018          151           28.588        33.5          18.1667       0 \r\n 2018          152           29.305        34.5556       17            0 \r\n 2018          153           25.837        26.4444       16.4444       55.12 \r\n 2018          154           30.813        26.7778       13.4444       0 \r\n 2018          155           21.57         25.7778       11.2778       0 \r\n 2018          156           25.95         32.1111       14.8333       0 \r\n 2018          157           1             34.0556       18.9444       3.81 \r\n 2018          158           14.59         29            18.5          2.794 \r\n 2018          159           23.93         31.8333       18.7222       0 \r\n 2018          160           17.36         32.3889       20.2778       0.762 \r\n 2018          161           1             29.5556       20.3333       18.29001 \r\n 2018          162           4.008         30.5556       19.3333       43.93999 \r\n 2018          163           23.43         28.7222       18.0556       0 \r\n 2018          164           22.74         26.6667       15.8889       0 \r\n 2018          165           23.03         30.2778       19.1111       0 \r\n 2018          166           29.43         32.82         21.72         0 \r\n 2018          167           28.97         32.78         22.19         0 \r\n 2018          168           24.584        32.67         23.49         0 \r\n 2018          169           21.17         32.77         20.48         9.400006 \r\n 2018          170           11.38         27.14         19.48         38.61001 \r\n 2018          171           14.035        23.21         16.69         6.096 \r\n 2018          172           15.827        24.79         15            6.096 \r\n 2018          173           13.45         23.32         14.11         0 \r\n 2018          174           15.44         24.54         14.7          0 \r\n 2018          175           22.03         29.72         17.03         11.94001 \r\n 2018          176           7.407         24.67         17.09         18.03001 \r\n 2018          177           20.559        26.33         16.93         0.508 \r\n 2018          178           29.42         30.31         16.67         0 \r\n 2018          179           14.08         29.94         18.81         3.302 \r\n 2018          180           28.67         32.97         23.77         0 \r\n 2018          181           20.7          31.54         20.26         10.16 \r\n 2018          182           24.481        26.75         17.77         17.26999 \r\n 2018          183           29.63         28.39         16.67         0 \r\n 2018          184           27.52         32.16         18.74         0 \r\n 2018          185           26.73         32.13         20.68         0 \r\n 2018          186           17.11         28.29         18.28         3.556 \r\n 2018          187           29.02         28.41         16.03         0 \r\n 2018          188           28.58         28.85         16.74         0 \r\n 2018          189           28.73         29.54         15.7          0 \r\n 2018          190           28.06         32.07         17.58         0 \r\n 2018          191           27.46         32.92         20.34         0 \r\n 2018          192           27.31         33.1          21.5          0 \r\n 2018          193           27.75         34.11         22.34         0 \r\n 2018          194           16.81         32.43         21.07         4.064 \r\n 2018          195           23.61         30.92         19.69         0.254 \r\n 2018          196           27.74         32.51         18.75         0 \r\n 2018          197           27.22         30.29         18.8          0 \r\n 2018          198           10.84         26.38         18.27         2.794 \r\n 2018          199           19.649        28.38         16.74         0 \r\n 2018          200           25.94         29.27         19.43         0.762 \r\n 2018          201           27.2          29            15.96         0 \r\n 2018          202           26.44         28.87         16.33         0 \r\n 2018          203           24.47         28.49         16.11         0 \r\n 2018          204           19.21         29.63         17.13         0 \r\n 2018          205           26.2          29.45         15.06         0 \r\n 2018          206           16.7          28.44         15.4          0 \r\n 2018          207           24.8          27.58         13.85         0 \r\n 2018          208           23.28         26.13         11.29         0 \r\n 2018          209           8.72          22.57         14.01         5.334 \r\n 2018          210           18.47         26.25         15.23         0 \r\n 2018          211           23.45         27.92         13.5          0 \r\n 2018          212           25.18         29.22         13.97         0 \r\n 2018          213           22.81         29.11         14.37         0 \r\n 2018          214           25.92         29.22         13.82         0 \r\n 2018          215           25.87         32.48         18.22         0 \r\n 2018          216           16.82         31.07         19.12         0 \r\n 2018          217           19.11         33.97         20.7          0 \r\n 2018          218           20.42         31.56         19.12         5.588 \r\n 2018          219           22.95         29.28         18.64         4.064 \r\n 2018          220           24.91         30.79         15.42         0 \r\n 2018          221           25.51         32.67         18.35         0 \r\n 2018          222           25.74         30.82         18.12         0 \r\n 2018          223           22.18         31.06         16.2          0 \r\n 2018          224           25.53         31.93         16.3          0 \r\n 2018          225           23.37         33.12         17.7          0 \r\n 2018          226           5.841         23.73         18.14         36.07 \r\n 2018          227           18.69         30.14         19.19         3.048 \r\n 2018          228           20.98         28.19         17.45         18.29 \r\n 2018          229           23.64         30.05         17.3          0 \r\n 2018          230           20.3          29.38         16.93         0 \r\n 2018          231           8.74          25.54         17.69         74.93 \r\n 2018          232           6.053         21.24         16.5          77.47 \r\n 2018          233           13.97         23.22         14.23         0 \r\n 2018          234           22.86         25.22         11.63         0 \r\n 2018          235           8.01          21.55         13.54         0.508 \r\n 2018          236           14.62         28.78         18.74         3.048 \r\n 2018          237           22.99         31.45         18.07         0 \r\n 2018          238           9.72          28.96         20.48         13.97 \r\n 2018          239           21.6          32.33         21.84         2.286 \r\n 2018          240           6.813         27.82         13.91         11.18 \r\n 2018          241           23.83         24.88         10.41         0 \r\n 2018          242           11.77         27.52         12.43         0 \r\n 2018          243           12.06         27.33         18.7          7.366 \r\n 2018          244           13.71         30.75         17.43         40.89 \r\n 2018          245           10.08         26.64         18.68         13.21 \r\n 2018          246           8.86          26.74         19.46         10.67 \r\n 2018          247           9.89          27.77         20.48         19.05 \r\n 2018          248           10.7          24.67         17.29         16.51 \r\n 2018          249           13.15         25.47         15.56         0 \r\n 2018          250           7.899         21.04         15.12         8.89 \r\n 2018          251           21.15         24.04         11.18         0 \r\n 2018          252           21.15         24.36         9.84          0 \r\n 2018          253           21.78         26.5          12.32         0 \r\n 2018          254           21.56         27.9          13.88         0 \r\n 2018          255           21.68         27.92         14.72         0 \r\n 2018          256           17.3          29.14         16.58         0 \r\n 2018          257           18.2          32.56         18.43         0 \r\n 2018          258           19.55         33.42         19.77         0 \r\n 2018          259           20.51         32.14         18.63         0 \r\n 2018          260           17.68         34.15         18.81         0 \r\n 2018          261           10.31         31.59         17.12         2.286 \r\n 2018          262           14.35         31.48         17.8          0 \r\n 2018          263           19.22         33.88         17.91         19.3 \r\n 2018          264           17.96         19.16         7.056         0 \r\n 2018          265           20.88         22.16         4.512         0 \r\n 2018          266           20.29         26.1          8.81          0 \r\n 2018          267           19.41         26.22         12.05         0 \r\n 2018          268           5.62          18.01         8.45          13.46 \r\n 2018          269           20.26         20.64         6.521         0 \r\n 2018          270           16.93         24.66         8.75          0 \r\n 2018          271           2.362         12.53         4.361         1.778 \r\n 2018          272           2.368         9.31          5.28          4.318 \r\n 2018          273           2.905         10.32         8.5           5.588 \r\n 2018          274           2.105         12.85         9.03          3.048 \r\n 2018          275           6.88          23.1          9.81          0 \r\n 2018          276           14.86         32.1          8.76          0 \r\n 2018          277           13.94         14.76         2.966         2.032 \r\n 2018          278           3.188         13.98         9.14          3.302 \r\n 2018          279           3.445         9.95          6.532         1.016 \r\n 2018          280           2.055         13.56         6.552         21.34 \r\n 2018          281           4.629         21.16         12.84         29.21 \r\n 2018          282           2.637         19.77         13.49         15.49 \r\n 2018          283           6.575         14.26         2.855         0 \r\n 2018          284           12.3          9.71          0.852         0 \r\n 2018          285           4.165         6.43          1.572         2.794 \r\n 2018          286           13.39         15.62         3.987         0 \r\n 2018          287           2.767         7.742        -0.766         9.398 \r\n 2018          288           16.61         8.11         -2.386         5.334 \r\n 2018          289           15.71         18.71        -0.633         0 \r\n 2018          290           15.52         17.17         1.996         0 \r\n 2018          291           15.28         20.64         3.422         0 \r\n 2018          292           13.57         22.17         6.662         0.254 \r\n 2018          293           15.61         11.91        -0.31          0 \r\n 2018          294           14.78         18.47        -2.862         0 \r\n 2018          295           14.99         22.19         3.603         0 \r\n 2018          296           14.93         15.63         0.792         0 \r\n 2018          297           11.65         15.53         0.59          0 \r\n 2018          298           3.086         9.3           6.189         5.08 \r\n 2018          299           6.989         12.94         5.018         0 \r\n 2018          300           13.54         20.84         3.846         0 \r\n 2018          301           13.41         16.99         5.098         0 \r\n 2018          302           9.73          19.7          1.358         0 \r\n 2018          303           9.11          15.21         6.269         0 \r\n 2018          304           7.744         15.32         3.825         0 \r\n 2018          305           11.87         16.2         -0.036         0 \r\n 2018          306           8.84          13.39         1.662         0 \r\n 2018          307           1.235         5.824         4.351         14.73 \r\n 2018          308           2.381         5.856         1.196         0.254 \r\n 2018          309           1.324         7.47          0.975         7.62 \r\n 2018          310           11.35         6.814        -2.832         0 \r\n 2018          311           11.91         2.148        -4.636         0 \r\n 2018          312           4.064         0.236        -3.48          0 \r\n 2018          313           7.653        -1.808        -12.45         0 \r\n 2018          314           7.401        -2.233        -14.39         0 \r\n 2018          315           7.91          5.057        -6.562         0 \r\n 2018          316           4.224        -3.742        -11.63         0 \r\n 2018          317           11.65         0.914        -13.14         0 \r\n 2018          318           10.8          6.148        -7.636         0 \r\n 2018          319           10.69         8.86         -5.628         0 \r\n 2018          320           10.69         10.99        -2.162         0 \r\n 2018          321           2.237         5.34         -7.598         0 \r\n 2018          322           11.59        -2.902        -14.87         0.254 \r\n 2018          323           7.02          4.624        -8.67          0 \r\n 2018          324           9.43          2.734        -11.88         0 \r\n 2018          325           10.39         9.94         -4.646         0 \r\n 2018          326           10.5          13.04        -1.636         0 \r\n 2018          327           1.756         9.63          5.098         2.286 \r\n 2018          328           7.634         11.79         0.226         0.254 \r\n 2018          329           1.999         0.388        -8.55          11.43 \r\n 2018          330           10.31        -3.125        -10.96         0 \r\n 2018          331           10.38        -3.915        -14            0 \r\n 2018          332           4.188        -0.594        -8.03          0 \r\n 2018          333           2.777         0.56         -8.13          1.778 \r\n 2018          334           4.276         3.704        -3.176         0.254 \r\n 2018          335           1.782         1.966        -0.229         6.1 \r\n 2018          336           5.485         0.084        -3.905         31.5 \r\n 2018          337           4.779        -3.48         -5.304         0.76 \r\n 2018          338           6.094        -4.087        -7.424         0 \r\n 2018          339           9.56         -1.596        -9.14          0 \r\n 2018          340           9            -3.966        -10.47         0 \r\n 2018          341           9.74         -4.858        -12.25         0 \r\n 2018          342           9.35         -2.791        -11.8          0 \r\n 2018          343           9.49         -2.609        -11.35         0 \r\n 2018          344           8.26         -3.135        -15.4          0 \r\n 2018          345           7.653         1.986        -6.633         0 \r\n 2018          346           9.39          2.006        -5.507         0 \r\n 2018          347           6.287         1.014        -3.672         0 \r\n 2018          348           9.16          3.623        -9.63          0 \r\n 2018          349           9.45          4.876        -6.806         0 \r\n 2018          350           9.18          4.643        -2.73          0 \r\n 2018          351           9.27          5.684        -7.698         0 \r\n 2018          352           8.38          8.66         -0.725         0 \r\n 2018          353           6.753         8.89          1.186         0 \r\n 2018          354           2.443         2.471        -2.973         0 \r\n 2018          355           4.807         0.813        -3.46          0 \r\n 2018          356           5.967         5.007        -2.345         0 \r\n 2018          357           9.04          4.866        -4.868         0 \r\n 2018          358           4.15          4.775        -6.278         0 \r\n 2018          359           4.401         6.804        -0.866         0 \r\n 2018          360           1.67          6.028        -1.748         0 \r\n 2018          361           2.323         11.79        -6.238         27.43 \r\n 2018          362           3.11         -6.076        -15.42         2.29 \r\n 2018          363           7.621        -7.942        -16.46         0.51 \r\n 2018          364           9.2           3.906        -8.31          0 \r\n 2018          365           2.244         0.752        -10.71         0 \r\n 2019          1             3.338        -10.57        -14.65         0 \r\n 2019          2             9.38          0.711        -11.03         0 \r\n 2019          3             9.32          10.31        -6.674         0 \r\n 2019          4             9.17          12.2         -2.832         0 \r\n 2019          5             9.11          15.42        -1.454         0 \r\n 2019          6             3.531         9.97          0.832         0 \r\n 2019          7             8.43          11.26         2.411         0 \r\n 2019          8             9.7           7.309        -2.244         0 \r\n 2019          9             9.72         -1.11         -8.14          0 \r\n 2019          10            9.06          3.128        -9.71          0 \r\n 2019          11            1.807         2.168        -3.034         0 \r\n 2019          12            5.335        -1.069        -3.541         8.89 \r\n 2019          13            10.1          5.522        -9.59          4.826 \r\n 2019          14            4.63         -1.585        -7.636         0 \r\n 2019          15            4.851         0.012        -1.626         0 \r\n 2019          16            7.419        -0.604        -9.97          0 \r\n 2019          17            5.668        -2.223        -5.132         0.254 \r\n 2019          18            2.314        -3.48         -10.68         0 \r\n 2019          19            11.07        -10.66        -15.71         0 \r\n 2019          20            6.264        -11.38        -14.78         0 \r\n 2019          21            9            -6.095        -14.39         0 \r\n 2019          22            2.891        -2.184        -9.67          8.128 \r\n 2019          23            11.59        -6.076        -12.57         4.826 \r\n 2019          24            11.77        -3.784        -21.19         0 \r\n 2019          25            8.56         -2.609        -23.64         0 \r\n 2019          26            9.37          0.732        -13.12         0.254 \r\n 2019          27            5.784         2.116        -14.67         4.318 \r\n 2019          28            11.24         3.098        -16.82         0 \r\n 2019          29            12.62        -13.55        -25.28         0 \r\n 2019          30            12.16        -19.7         -30.12         0 \r\n 2019          31            11.61        -9.59         -22.82         0 \r\n 2019          32            12.48         1.601        -15.64         0 \r\n 2019          33            3.718         6.926         1.42          0.254 \r\n 2019          34            3.152         11.16         5.462         0 \r\n 2019          35            10.82         9.54         -12.86         0 \r\n 2019          36            3.649        -9.25         -13.88         0 \r\n 2019          37            10.36        -8.19         -11.09         0 \r\n 2019          38            11.31        -11.01        -18.25         8.89 \r\n 2019          39            14.06        -10.7         -20.7          0 \r\n 2019          40            11.96        -3.834        -17.31         0 \r\n 2019          41            7.904        -0.886        -5.284         3.302 \r\n 2019          42            5.84         -3.58         -5.791         0 \r\n 2019          43            13.64        -3.57         -13.27         0 \r\n 2019          44            13.53         0.003        -15.63         0.254 \r\n 2019          45            9.99          1.196        -16.62         0 \r\n 2019          46            8.76         -11.19        -17.54         0 \r\n 2019          47            13.47        -7.587        -18.36         8.89 \r\n 2019          48            11.97        -4.23         -11.3          3.302 \r\n 2019          49            15.93        -6.156        -16.66         0 \r\n 2019          50            12.3         -6.014        -22.11         5.842 \r\n 2019          51            13.22        -2.213        -10.33         3.048 \r\n 2019          52            15.9         -0.806        -13.57         0 \r\n 2019          53            13.26        -1.272        -9.79          0 \r\n 2019          54            5.361         0.813        -5.65          7.874 \r\n 2019          55            17.28        -5.568        -18.32         0 \r\n 2019          56            15.6         -11.76        -21.06         0 \r\n 2019          57            14.25        -8.84         -16.65         0 \r\n 2019          58            16.43        -10.54        -16.01         0 \r\n 2019          59            14.79        -2.264        -16.56         0 \r\n 2019          60            14.98        -2.376        -13.8          0 \r\n 2019          61            11.48        -9.23         -13.94         0 \r\n 2019          62            18.36        -13.25        -22            0 \r\n 2019          63            19.27        -12.07        -22.33         0 \r\n 2019          64            19.06        -8.41         -15.87         0 \r\n 2019          65            16.49        -2.204        -17.26         0.254 \r\n 2019          66            9.94         -4.048        -8.71          4.064 \r\n 2019          67            14.69         1.854        -4.726         1.016 \r\n 2019          68            4.337         2.532        -1.898         18.8 \r\n 2019          69            20.51        -0.016        -7.048         0 \r\n 2019          70            19.69         4.896        -5.619         0 \r\n 2019          71            4.076         5.38         -1.474         10.16 \r\n 2019          72            5.317         13.45         3.906         21.84 \r\n 2019          73            2.676         10.05         0.034         1.27 \r\n 2019          74            19.2          6.38         -2.345         0 \r\n 2019          75            18.62         10.06        -3.764         0 \r\n 2019          76            16.11         7.622        -1.818         0 \r\n 2019          77            19.89         8.64         -5.244         0 \r\n 2019          78            5.947         6.914         0.114         3.302 \r\n 2019          79            18.2          13.17        -0.442         0 \r\n 2019          80            21.71         12.74        -2.76          0 \r\n 2019          81            21.8          15.82        -0.118         0 \r\n 2019          82            6.046         11.76        -0.412         3.302 \r\n 2019          83            3.127         9.35          6.047         2.286 \r\n 2019          84            11.05         9.87          1.147         0 \r\n 2019          85            12            14.37         1.541         0 \r\n 2019          86            16.29         21.53         6.694         0 \r\n 2019          87            6.569         12.87         4.24          0 \r\n 2019          88            5.377         7.157         0.904         9.4 \r\n 2019          89            17.51         5.3          -4.128         0 \r\n 2019          90            23.03         8.08         -7.454         0 \r\n 2019          91            20.42         15.37        -1.13          0 \r\n 2019          92            19.08         12.14        -0.28          2.286 \r\n 2019          93            4.005         7.994        -0.28          3.556 \r\n 2019          94            2.494         11.44         5.604         2.032 \r\n 2019          95            12.21         20.03         6.844         0 \r\n 2019          96            18.99         24.99         8.26          0 \r\n 2019          97            11.09         19.68         9.56          1.778 \r\n 2019          98            19.65         26.36         6.753         0 \r\n 2019          99            14.47         21            5.542         0 \r\n 2019          100           13.55         15.32         3.017         3.556 \r\n 2019          101           3.582         10.68        -0.36          0 \r\n 2019          102           8.21          5.078        -2.568         0 \r\n 2019          103           21.36         10.72        -3.317         0 \r\n 2019          104           25.1          11.94        -2.598         0 \r\n 2019          105           21.16         24.33         4.422         0 \r\n 2019          106           20.72         25.78         9.11          0 \r\n 2019          107           13.79         23.23         6.764         0 \r\n 2019          108           14.14         14.25         3.846         0 \r\n 2019          109           26            18.32         0.641         0 \r\n 2019          110           22.89         27            3.594         0 \r\n 2019          111           20.4          30.04         10.83         0 \r\n 2019          112           8.92          19.46         8.45          3.048 \r\n 2019          113           24            19.87         7.066         0 \r\n 2019          114           26.8          24.25         3.138         0 \r\n 2019          115           18.589        20.92         8.87          0 \r\n 2019          116           22.36         18.25         2.592         0 \r\n 2019          117           8.74          14.03         0.772         17.53 \r\n 2019          118           11.58         11.57         0.864         0.762 \r\n 2019          119           25.35         16.77         6.673         0.254 \r\n 2019          120           4.356         11.01         6.854         2.794 \r\n 2019          121           9.45          11.83         5.614         0.762 \r\n 2019          122           26.91         17.19         4.937         0 \r\n 2019          123           17.08         17.35         5.3           0 \r\n 2019          124           25.89         24.33         6.936         4.572 \r\n 2019          125           24.64         25.92         9.7           0 \r\n 2019          126           18            19.72         8.45          5.842 \r\n 2019          127           5.883         14.27         7.924         0.762 \r\n 2019          128           4.984         15.71         6.39          30.48 \r\n 2019          129           8.21          9.38          2.33          0 \r\n 2019          130           28.54         17.6          2.946         0 \r\n 2019          131           11.801        15.56         8.17          4.572 \r\n 2019          132           9.7           12.67         7.178         2.54 \r\n 2019          133           24.49         19.5          1.996         0 \r\n 2019          134           26.43         28.12         11            1.778 \r\n 2019          135           26.77         28.24         10.8          0 \r\n 2019          136           26.26         34.34         17.43         0 \r\n 2019          137           15.48         29.73         17.33         9.4 \r\n 2019          138           11.61         26.03         14.18         9.91 \r\n 2019          139           8.89          14.48         7.703         0.508 \r\n 2019          140           13.69         11.55         3.603         0 \r\n 2019          141           3.091         13.68         7.4           14.99 \r\n 2019          142           25.17         19.46         9.9           0.254 \r\n 2019          143           17.6          20.64         7.309         17.27 \r\n 2019          144           16.44         24.85         12.75         21.59 \r\n 2019          145           20.09         27.85         16.69         0 \r\n 2019          146           28.6          26.78         13.69         8.38 \r\n 2019          147           24.79         26.15         14.26         8.38 \r\n 2019          148           9.34          16.87         11.21         28.45 \r\n 2019          149           17.01         21.36         13.08         0.254 \r\n 2019          150           21.62         24.07         12.7          1.016 \r\n 2019          151           22.38         28.34         13.99         0 \r\n 2019          152           25.6          27.32         14.51         2.032 \r\n 2019          153           26.01         24.77         10.59         0 \r\n 2019          154           7.337         21.44         14.37         15.49 \r\n 2019          155           20.72         29.43         17.1          0 \r\n 2019          156           26.19         31.67         19.49         0 \r\n 2019          157           20.37         30.59         19.27         0 \r\n 2019          158           27.86         31.08         18.19         0 \r\n 2019          159           29.5          30.69         17.97         0 \r\n 2019          160           16.04         22.29         12.5          0 \r\n 2019          161           30.22         26.62         10.57         0 \r\n 2019          162           15.96         25.45         13.99         3.556 \r\n 2019          163           24.44         22.09         10.65         1.524 \r\n 2019          164           29.32         25.57         9.79          0 \r\n 2019          165           17.79         27.3          15.86         0.508 \r\n 2019          166           21.06         29.61         18.67         0 \r\n 2019          167           24.43         29.21         15.9          0 \r\n 2019          168           18.33         28.63         16.96         0 \r\n 2019          169           6.883         24.38         17.59         43.94 \r\n 2019          170           15.05         23.8          16.63         0 \r\n 2019          171           19.72         27.33         14.68         0 \r\n 2019          172           16.72         25.51         18.41         8.64 \r\n 2019          173           14.34         27.2          18.33         8.13 \r\n 2019          174           10.68         24.72         16.46         2.794 \r\n 2019          175           22.85         26.24         15.09         0.508 \r\n 2019          176           19.66         28.84         17.12         3.556 \r\n 2019          177           14.56         28.37         17.67         0.254 \r\n 2019          178           24            31.45         20.73         0 \r\n 2019          179           24.66         32.72         22.87         0 \r\n 2019          180           22.23         34.69         23.09         0 \r\n 2019          181           22.29         33.31         23.79         0 \r\n 2019          182           21.98         31.38         21.72         0 \r\n 2019          183           24.79         32.85         21.99         0 \r\n 2019          184           19.88         31.87         19.72         43.69 \r\n 2019          185           22.67         29.32         19.76         0 \r\n 2019          186           14.23         29.63         19.18         0 \r\n 2019          187           20.01         29.02         19.09         0 \r\n 2019          188           24.4          28.46         17.11         0 \r\n 2019          189           22.1          30.09         18.12         0 \r\n 2019          190           23.32         30.2          20.42         0 \r\n 2019          191           23.18         27.85         18.34         0 \r\n 2019          192           27.92         28.28         16.15         0 \r\n 2019          193           27.43         30.8          17.15         0 \r\n 2019          194           17.2          31.3          19.87         0 \r\n 2019          195           26.41         31.74         20.27         0 \r\n 2019          196           25.37         30.47         21.77         0 \r\n 2019          197           21.64         30.88         20.3          45.47 \r\n 2019          198           23.97         32.97         22.53         0 \r\n 2019          199           22.62         32.72         25.88         0 \r\n 2019          200           26.7          32.95         24.84         0 \r\n 2019          201           21.46         32.1          20.47         0 \r\n 2019          202           5.135         22.23         19.13         1.27 \r\n 2019          203           27.35         25.35         14.65         0 \r\n 2019          204           27.03         26.83         12.08         0 \r\n 2019          205           25.77         27.03         12.9          0 \r\n 2019          206           12.27         25.4          14.43         2.794 \r\n 2019          207           24.59         29.33         18.46         0 \r\n 2019          208           26.03         30.57         19.21         0 \r\n 2019          209           10.24         27.4          19.06         3.302 \r\n 2019          210           27.95         27.75         15.85         0 \r\n 2019          211           16.11         24.34         14.08         4.318 \r\n 2019          212           7.21          21.75         16.2          18.8 \r\n 2019          213           25.07         28.24         16.7          0 \r\n 2019          214           22.023        27.26         16.53         0 \r\n 2019          215           24.62         27.95         17.96         0 \r\n 2019          216           22.89         28.98         16.97         0 \r\n 2019          217           21.22         30.41         18.66         0 \r\n 2019          218           27.33         28.86         17.06         0 \r\n 2019          219           25.07         30.99         18.19         0 \r\n 2019          220           21.95         29.47         17.62         0 \r\n 2019          221           24.91         29.08         15.16         0 \r\n 2019          222           20.72         30.85         19.92         0 \r\n 2019          223           12.75         28.21         20.12         55.88 \r\n 2019          224           17.12         28.1          20.16         9.91 \r\n 2019          225           26.23         29.29         18.65         0 \r\n 2019          226           22.622        23.99         14.17         0 \r\n 2019          227           12.04         23.38         14.33         2.032 \r\n 2019          228           19.78         28.77         16.14         0 \r\n 2019          229           20.69         28.23         18.08         0 \r\n 2019          230           16.19         28.22         17.73         16.76 \r\n 2019          231           24.56         29.65         17.15         0 \r\n 2019          232           18.57         32.57         20.94         0.254 \r\n 2019          233           5.829         25.26         17.03         27.94 \r\n 2019          234           25.27         25.63         14.07         0 \r\n 2019          235           24.49         25.78         13.61         0 \r\n 2019          236           17.38         23.67         15.25         0 \r\n 2019          237           6.721         20.24         16.73         0 \r\n 2019          238           10.11         24.84         16.42         6.858 \r\n 2019          239           23.88         23.8          12.99         0 \r\n 2019          240           24.32         25.79         12            0 \r\n 2019          241           23.25         30.22         17.15         3.048 \r\n 2019          242           21.75         24.26         14.11         0 \r\n 2019          243           14.3          21.63         14.15         0 \r\n 2019          244           15.11         24.38         12.49         0 \r\n 2019          245           18.82         28.92         16.96         0 \r\n 2019          246           15.87         29.74         14.53         0 \r\n 2019          247           22.96         24.74         11.03         0 \r\n 2019          248           15.2          29.77         14.46         0 \r\n 2019          249           22.94         26.78         15.32         0 \r\n 2019          250           12.85         24.84         13.95         5.08 \r\n 2019          251           9.47          22.15         15.29         0 \r\n 2019          252           11.06         28.24         18.57         0.508 \r\n 2019          253           17.6          29.4          18.09         18.29 \r\n 2019          254           19.65         30.97         19.86         0.508 \r\n 2019          255           9.82          26.96         15.94         9.4 \r\n 2019          256           22.44         24.33         12.12         0 \r\n 2019          257           13.41         28.41         13.74         2.794 \r\n 2019          258           21.12         33.86         19.65         2.794 \r\n 2019          259           16.61         31.89         19.53         0 \r\n 2019          260           18.97         32.08         20.82         0 \r\n 2019          261           8.63          29.58         20.71         4.064 \r\n 2019          262           12.34         30.98         18.27         32.26 \r\n 2019          263           18            30.5          19.45         0 \r\n 2019          264           3.389         25.74         17.64         41.66 \r\n 2019          265           10.26         22.37         13.29         24.38 \r\n 2019          266           19.83         27.17         11.64         0 \r\n 2019          267           17.54         29.84         15.41         31.24 \r\n 2019          268           15.6          24.12         12.72         0 \r\n 2019          269           17.05         23.26         10.08         0 \r\n 2019          270           5.237         23.37         13.37         1.016 \r\n 2019          271           12.88         21.49         7.994         6.35 \r\n 2019          272           8.85          23.68         16.25         6.096 \r\n 2019          273           17.15         32.13         21.96         0 \r\n 2019          274           5.274         27.2          12.84         51.05 \r\n 2019          275           2.557         13.11         8.57          4.318 \r\n 2019          276           12.27         14.85         4.814         0 \r\n 2019          277           10.51         13.63         3.36          0 \r\n 2019          278           12.77         20.68         9.38          19.3 \r\n 2019          279           9.19          19.01         7.338         0 \r\n 2019          280           17.7          22.63         6.108         0 \r\n 2019          281           17.23         21.79         7.056         0 \r\n 2019          282           6.251         18.02         10.42         4.318 \r\n 2019          283           1.839         17.61         2.036         24.89 \r\n 2019          284           7.262         4.118        -2.204         0 \r\n 2019          285           16.77         13.99        -2.902         0 \r\n 2019          286           16.47         13.92        -1.94          0 \r\n 2019          287           15.22         19.92        -2             0 \r\n 2019          288           14.27         14.04         5.896         0 \r\n 2019          289           10.7          12.8          2.886         0 \r\n 2019          290           14.8          19.26         2.198         0 \r\n 2019          291           15.04         23.95         9.02          0 \r\n 2019          292           12.9          19.89         7.924         3.302 \r\n 2019          293           6.959         17.29         5.138         4.572 \r\n 2019          294           4.476         11.38         4.31          2.032 \r\n 2019          295           14.75         12.32         2.794         0 \r\n 2019          296           10.22         14.88         4.26          0 \r\n 2019          297           12.44         9.36          0.286         0 \r\n 2019          298           13.39         12.82        -2.041         0 \r\n 2019          299           12.97         14.04        -1.525         0 \r\n 2019          300           6.291         8.34          1.328         0 \r\n 2019          301           8.91          4.008        -3.996         4.572 \r\n 2019          302           9.72          3.744        -5.324         0.508 \r\n 2019          303           6.289         1.176        -3.794         5.334 \r\n 2019          304           13.07         5.32         -7.607         0 \r\n 2019          305           4.546         6.824        -3.601         1.27 \r\n 2019          306           13.04         9.69         -2.244         0 \r\n 2019          307           6.6           11.06        -0.38          0 \r\n 2019          308           9.32          8.85         -0.27          0 \r\n 2019          309           5.242         4.937        -3.317         0 \r\n 2019          310           10.03         7.47         -6.592         0 \r\n 2019          311           12.64         0.57         -11.9          0 \r\n 2019          312           11.16         6.067        -9.5           0 \r\n 2019          313           10.61         17.31        -1.069         0 \r\n 2019          314           9.32          7.157        -4.918         0 \r\n 2019          315           10.52        -4.918        -16.5          4.064 \r\n 2019          316           11.81        -5.892        -18.03         0 \r\n 2019          317           3.473         1.277        -6.664         0 \r\n 2019          318           6.863         2.46         -7.636         0 \r\n 2019          319           9.22          13.51        -4.605         0 \r\n 2019          320           7.907         12.45         0.165         0 \r\n 2019          321           4.457         8.29          0.236         1.27 \r\n 2019          322           6.103         12.12        -2.284         0.254 \r\n 2019          323           10.23         13.99         1.439         0 \r\n 2019          324           6.527         16.64         3.239         8.64 \r\n 2019          325           2.296         15.25        -3.905         2.032 \r\n 2019          326           9.54          2.43         -8.58          0 \r\n 2019          327           9.83          6.814        -4.048         0 \r\n 2019          328           8.7           14.16        -1.515         0 \r\n 2019          329           8.29          11.45         0.368         0 \r\n 2019          330           1.232         1.277        -2.102         4.318 \r\n 2019          331           3.56          0.126        -2.953         0 \r\n 2019          332           2.316        -1.11         -3.784         0 \r\n 2019          333           1.698         1.48         -1.454         2.54 \r\n 2019          334           5.259         10.77         0.55          1.016 \r\n 2019          335           2.907         0.53         -6.196         1.27 \r\n 2019          336           9.75          3.198        -9.98          0 \r\n 2019          337           9.36          10.27        -0.978         0 \r\n 2019          338           9.16          9.78         -1.15          0 \r\n 2019          339           8.89          13.51        -1.748         0 \r\n 2019          340           8.42          1.024        -5.628         0 \r\n 2019          341           8.51          8.55         -5.588         0 \r\n 2019          342           5.674         8.61         -0.442         0 \r\n 2019          343           7.642         2.309        -12.62         3.048 \r\n 2019          344           7.206        -5.385        -12.37         0 \r\n 2019          345           8.35         -2.264        -8.92          0 \r\n 2019          346           5.481         6.067        -7.648         0 \r\n 2019          347           5.463         3.906        -7.77          0 \r\n 2019          348           4.992        -1.596        -11.58         0 \r\n 2019          349           2.925        -7.302        -11.57         3.048 \r\n 2019          350           4.184        -4.777        -9.06          0 \r\n 2019          351           8.83          1.338        -8.36          0.508 \r\n 2019          352           8.88          1.126        -12.39         0 \r\n 2019          353           8.66          8.4          -6.947         0 \r\n 2019          354           7.065         7.38         -2.486         0 \r\n 2019          355           9.03          9.24         -5.487         0 \r\n 2019          356           7.807         10.34        -1.292         0 \r\n 2019          357           7.643         10.69        -1.13          0 \r\n 2019          358           6.167         10.93         0.448         0 \r\n 2019          359           8.47          14.98        -0.786         0 \r\n 2019          360           2.427         0.832        -3.56          0 \r\n 2019          361           7.315         5.583        -1.312         0 \r\n 2019          362           1             9.13          2.44          11.94 \r\n 2019          363           1.752         9.09         -5.193         4.318 \r\n 2019          364           3.318        -2.609        -5.507         0 \r\n 2019          365           6.41          0.63         -5.831         0 \r\n 2020          1             7.699         7.642        -5.425         0 \r\n 2020          2             5.908         6.491        -3.135         0 \r\n 2020          3             5.243         3.815        -5.425         0 \r\n 2020          4             9.43          4.219        -9.02          0 \r\n 2020          5             9.52          7.157        -3.479         0 \r\n 2020          6             5.031         3.764        -4.798         0 \r\n 2020          7             9.31          7.642        -6.319         0 \r\n 2020          8             9.28          1.288        -9.99          0 \r\n 2020          9             7.693         10.91        -4.959         0 \r\n 2020          10            1.961        -3.794        -11.96         5.842 \r\n 2020          11            8.38         -5.852        -16.01         0 \r\n 2020          12            3.077        -3.277        -13.31         0 \r\n 2020          13            3.605         0.468        -4.199         1.524 \r\n 2020          14            8.22          0.408        -6.176         0 \r\n 2020          15            2.160864     -7.678        -17.13         0 \r\n 2020          16            8.83872      -10.97        -20.4          0 \r\n 2020          17            2.794176     -0.34         -12.21         10.16 \r\n 2020          18            9.40896      -0.006        -16.44         0 \r\n 2020          19            10.79136     -14.34        -20.48         0 \r\n 2020          20            8.39808      -14.18        -22.7          0 \r\n 2020          21            9.4608       -2.426        -21.27         0 \r\n 2020          22            4.02624       0.711        -2.446         5.588 \r\n 2020          23            4.940352      1.236        -0.826         1.27 \r\n 2020          24            3.506112     -0.3          -2.344         0 \r\n 2020          25            10.50624     -0.725        -4.27          0 \r\n 2020          26            7.0416       -0.219        -4.97          0 \r\n 2020          27            6.092928      1.105        -5.547         0 \r\n 2020          28            4.04352      -1.372        -5.355         0 \r\n 2020          29            6.555168      0.458        -5.558         1.524 \r\n 2020          30            7.01568       0.387        -3.601         0 \r\n 2020          31            3.575232      0.904        -1.312         0 \r\n 2020          32            11.88864      5.118        -3.237         0 \r\n 2020          33            12.19104      14.46        -0.482         0 \r\n 2020          34            8.54496       0.67         -3.703         0 \r\n 2020          35            7.3872       -3.692        -7.598         0 \r\n 2020          36            8.05248      -0.178        -9.4           0 \r\n 2020          37            12.60576      2.268        -11.51         0 \r\n 2020          38            4.478112     -1.576        -9.63          0 \r\n 2020          39            11.9232       1.076        -13.65         0 \r\n 2020          40            5.334336      3.594        -8.52          0 \r\n 2020          41            13.09824      4.17         -10.01         0 \r\n 2020          42            13.6944       3.886        -6.095         0 \r\n 2020          43            4.256064      2.734        -17.6          0 \r\n 2020          44            14.84352     -12.43        -22.03         0 \r\n 2020          45            13.63392     -4.614        -19.7          0 \r\n 2020          46            14.65344      7.016        -7.21          0 \r\n 2020          47            10.87776      10.27        -2.882         0 \r\n 2020          48            5.426784      9.86         -3.196         3.302 \r\n 2020          49            15.02496      4.189        -7.028         0 \r\n 2020          50            4.497984     -3.165        -12.03         0 \r\n 2020          51            15.87168     -3.278        -17.4          0 \r\n 2020          52            15.82848      8.19         -9.5           0 \r\n 2020          53            15.8112       12.48        -3.368         0 \r\n 2020          54            12.64896      17.21        -0.928         0 \r\n 2020          55            11.85408      7.542        -1.596         0 \r\n 2020          56            10.4976       4.583        -4.128         0 \r\n 2020          57            16.85664      2.106        -7.14          0 \r\n 2020          58            13.27968      4.734        -7.495         0 \r\n 2020          59            10.5408       6.41         -4.33          0 \r\n 2020          60            15.69024      14.41        -6.44          0 \r\n 2020          61            15.18048      15.64        -1.656         0 \r\n 2020          62            12.89088      8.39         -2.669         0 \r\n 2020          63            17.59104      13.71        -0.28          0 \r\n 2020          64            17.72928      14.86        -2.75          0 \r\n 2020          65            15.53472      9.43         -0.684         0 \r\n 2020          66            18.48096      10.78        -6.694         0 \r\n 2020          67            16.13088      19.7          0.428         0 \r\n 2020          68            17.03808      21.59         7.904         0 \r\n 2020          69            2.353536      12.34        -3.742         11.176 \r\n 2020          70            7.776         4.947        -6.095         1.27 \r\n 2020          71            14.7312       16.06         2.006         0 \r\n 2020          72            12.1392       15.48        -0.907         0.254 \r\n 2020          73            10.98144      8.67         -4.168         4.572 \r\n 2020          74            12.51072      1.358        -2.194         5.08 \r\n 2020          75            5.004288      0.994        -1.98          0 \r\n 2020          76            5.571072      5.26         -0.422         0 \r\n 2020          77            13.76352      9.49         -1.859         0.762 \r\n 2020          78            6.437664      12.88         4.724         18.796 \r\n 2020          79            4.69152       16.41        -0.422         10.922 \r\n 2020          80            21.67776     -0.412        -8.08          0 \r\n 2020          81            19.5264       6.39         -8             0 \r\n 2020          82            4.86432       3.846         0.489         0.508 \r\n 2020          83            6.217344      7.934         1.814         0.254 \r\n 2020          84            11.34432      12.68         4.956         0 \r\n 2020          85            6.602688      15.02         6.39          0 \r\n 2020          86            8.65728       14.45         4.744         0 \r\n 2020          87            1.269216      8             6.491         0.508 \r\n 2020          88            6.05232       19.39         2.067         1.016 \r\n 2020          89            21.09024      14.73         2.44          0 \r\n 2020          90            20.07936      19.5          0.034         0 \r\n 2020          91            19.60416      18.99         2.046         0 \r\n 2020          92            18.98208      22.72         3.976         0 \r\n 2020          93            9.90144       19.62        -2.872         0 \r\n 2020          94            6.912        -1.616        -4.98          3.81 \r\n 2020          95            19.71648      9.67         -5.02          1.524 \r\n 2020          96            20.42496      16.32        -2.284         0 \r\n 2020          97            5.821632      20.17         7.924         0 \r\n 2020          98            19.86336      29.66         9.6           0 \r\n 2020          99            21.53952      22.49         1.945         0 \r\n 2020          100           24.4944       10.13        -4.544         0 \r\n 2020          101           17.28864      11.02        -7.008         0 \r\n 2020          102           15.90624      21.42         3.936         0.508 \r\n 2020          103           2.956608      9.88         -3.135         3.556 \r\n 2020          104           23.9328       4.594        -7.018         0 \r\n 2020          105           21.82464      6.956        -6.156         0 \r\n 2020          106           22.79232      9.62         -7.902         0 \r\n 2020          107           5.052672      2.228        -1.596         12.192 \r\n 2020          108           25.59168      7.046        -2.902         4.826 \r\n 2020          109           23.60448      20.55         0.114         0 \r\n 2020          110           25.13376      17.31         4.39          0 \r\n 2020          111           22.75776      20.42         4.956         0 \r\n 2020          112           24.70176      20.96         2.087         0 \r\n 2020          113           23.544        26.47         11.39         0.762 \r\n 2020          114           22.88736      27.03         9.5           0 \r\n 2020          115           10.53216      18.68         9             10.922 \r\n 2020          116           20.80512      19.05         5.714         3.81 \r\n 2020          117           25.09056      20.14         3.886         0 \r\n 2020          118           23.40576      26.98         10.41         2.54 \r\n 2020          119           19.20672      22.07         9.7           0.508 \r\n 2020          120           25.7472       20.42         8.71          0 \r\n 2020          121           28.13184      23.45         5.219         0 \r\n 2020          122           21.98016      28.39         11.37         0 \r\n 2020          123           12.43296      22.07         10.53         0 \r\n 2020          124           22.65408      25.66         10.16         0 \r\n 2020          125           3.643488      16.61         8.23          6.604 \r\n 2020          126           12.37248      13.44         4.674         0.254 \r\n 2020          127           15.00768      16.56         3.401         0 \r\n 2020          128           10.64448      16.83         4.25          7.62 \r\n 2020          129           29.31552      13.57         1.986         0.254 \r\n 2020          130           24.93504      19.26         2.532         0.762 \r\n 2020          131           27.70848      13.43         0.772         0 \r\n 2020          132           23.30208      13.97        -0.907         0 \r\n 2020          133           13.64256      16.01         6.067         0 \r\n 2020          134           5.488992      12.87         4.604         2.54 \r\n 2020          135           4.47984       19.87         12.46         11.176 \r\n 2020          136           25.23744      25.25         10.22         0 \r\n 2020          137           12.76992      23.21         9.8           17.018 \r\n 2020          138           9.4176        14.08         10.46         0.254 \r\n 2020          139           7.63776       14.43         10.09         0 \r\n 2020          140           8.48448       15.9          10.26         0.254 \r\n 2020          141           6.748704      19.02         12.5          0 \r\n 2020          142           11.15424      19.88         13.23         0 \r\n 2020          143           5.347296      19.49         13.66         2.794 \r\n 2020          144           19.58688      27.53         14.21         6.096 \r\n 2020          145           12.3552       26.7          16.07         34.036 \r\n 2020          146           9.83232       22.98         16.3          9.906 \r\n 2020          147           7.46496       23.02         16.56         9.398 \r\n 2020          148           7.6032        23.73         16.52         0.254 \r\n 2020          149           15.3792       26.24         12.8          0 \r\n 2020          150           22.17024      23.92         10.85         0 \r\n 2020          151           12.95         16.95         11.46         1.524 \r\n 2020          152           14.6016       23.86         13.91         0 \r\n 2020          153           19.69056      31.68         18.77         0 \r\n 2020          154           20.25216      34.26         19.12         0 \r\n 2020          155           21.91104      34.29         18.97         0.508 \r\n 2020          156           22.19616      33.35         18.9          0 \r\n 2020          157           21.24576      34.24         20.7          0 \r\n 2020          158           19.03392      34.04         21.59         0 \r\n 2020          159           23.112        33.94         22.76         0 \r\n 2020          160           21.4272       33.71         22.24         0 \r\n 2020          161           18.20448      31.16         16.95         17.526 \r\n 2020          162           21.07296      23.23         13.17         2.032 \r\n 2020          163           24.64128      29.98         12.32         0 \r\n 2020          164           25.33248      31.87         16.28         0 \r\n 2020          165           24.21792      32.27         17.24         0 \r\n 2020          166           22.71456      30.35         17.28         0 \r\n 2020          167           23.3712       32.21         20.18         0 \r\n 2020          168           22.83552      31.91         20.31         0 \r\n 2020          169           24.13152      31.12         19.05         0 \r\n 2020          170           16.44192      32.12         18.59         1.524 \r\n 2020          171           8.08704       22.74         18.41         5.588 \r\n 2020          172           17.55648      27.46         15.54         0 \r\n 2020          173           19.56096      29.9          17.85         0 \r\n 2020          174           13.91904      26.29         16.94         0 \r\n 2020          175           21.40992      25.16         12.52         0 \r\n 2020          176           23.27616      28.84         13.05         0 \r\n 2020          177           24.29568      31.11         14.29         0 \r\n 2020          178           16.32096      30.39         20.82         4.826 \r\n 2020          179           19.89792      29.3          19.64         0 \r\n 2020          180           18.47232      30.07         19.39         3.302 \r\n 2020          181           9.97056       28.55         22.72         0 \r\n 2020          182           13.20192      29.63         23.43         0 \r\n 2020          183           20.71872      30.45         17.91         31.75 \r\n 2020          184           20.62368      30.27         18.74         0 \r\n 2020          185           21.0816       30.96         20.72         0 \r\n 2020          186           21.9456       30.22         17.84         0 \r\n 2020          187           22.39488      31.12         19.69         0 \r\n 2020          188           23.5008       31.67         19.85         0 \r\n 2020          189           22.1184       31.97         19.71         0 \r\n 2020          190           24.78816      32.4          21.79         0 \r\n 2020          191           18.86976      28.75         19.04         0 \r\n 2020          192           23.6736       31.46         16.41         0 \r\n 2020          193           25.49664      30.5          17.56         0.254 \r\n 2020          194           25.04736      30.29         15.13         0 \r\n 2020          195           25.30656      31.27         17.38         0 \r\n 2020          196           22.2048       32.67         20.12         0 \r\n 2020          197           10.35072      25.87         16.95         7.112 \r\n 2020          198           23.08608      29.2          14.05         0 \r\n 2020          199           21.30624      32.44         20.16         0 \r\n 2020          200           23.66496      32.85         24.13         3.556 \r\n 2020          201           18.93888      30.7          21.72         0 \r\n 2020          202           19.10304      26.82         18.28         8.89 \r\n 2020          203           19.90656      28.94         18.74         2.794 \r\n 2020          204           24.52896      29.81         16            0 \r\n 2020          205           17.72064      30.01         18.11         60.198 \r\n 2020          206           22.68864      31.63         21.3          0 \r\n 2020          207           23.95008      32.16         22.86         0 \r\n 2020          208           4.763232      26.56         21.94         26.924 \r\n 2020          209           24.07104      30.81         19.36         0 \r\n 2020          210           25.62624      29.54         17.15         0 \r\n 2020          211           14.24736      29.56         19.8          16.256 \r\n 2020          212           22.74048      27.93         17.77         0 \r\n 2020          213           21.32352      28.29         15.26         0 \r\n 2020          214           17.05536      27.56         14.19         1.524 \r\n 2020          215           21.54816      26.37         13.42         0 \r\n 2020          216           24.20064      24.23         10.71         0 \r\n 2020          217           23.48352      25.96         9.45          0 \r\n 2020          218           19.0512       23.78         14.22         0.508 \r\n 2020          219           20.42496      27.23         17.19         0 \r\n 2020          220           19.7424       28.7          18.68         0 \r\n 2020          221           17.34912      29.83         20.38         0 \r\n 2020          222           20.97792      30.7          22.19         1.524 \r\n 2020          223           17.8416       27.83         15.97         0.254 \r\n 2020          224           24.67584      29.7          13.85         0 \r\n 2020          225           15.25824      28.77         18.44         0 \r\n 2020          226           22.32576      31.11         21.63         0 \r\n 2020          227           19.41408      31.08         20.24         0 \r\n 2020          228           24.77952      30.23         15.42         0 \r\n 2020          229           21.47904      29.42         16.07         0 \r\n 2020          230           24.59808      27.57         15.38         0 \r\n 2020          231           22.42944      29.11         12.4          0 \r\n 2020          232           24.39936      28.04         11.92         0 \r\n 2020          233           20.55456      28            14.24         0 \r\n 2020          234           22.69728      31.43         16.05         0 \r\n 2020          235           19.77696      31.24         17.25         0 \r\n 2020          236           22.26528      34.63         19.77         0 \r\n 2020          237           22.06656      34.21         19.72         0 \r\n 2020          238           21.22848      33.36         19.3          0 \r\n 2020          239           22.38624      33.59         19.76         0 \r\n 2020          240           21.13344      33.64         20.98         0 \r\n 2020          241           19.02528      34.22         19.6          0 \r\n 2020          242           21.97152      27.67         13.43         0 \r\n 2020          243           19.1376       27.61         10.24         0 \r\n 2020          244           21.15936      26.71         12.64         0 \r\n 2020          245           6.426432      20.63         13.37         0 \r\n 2020          246           23.06016      32.67         13.63         0 \r\n 2020          247           22.35168      26.11         12.15         0 \r\n 2020          248           21.84192      29.18         9.31          0 \r\n 2020          249           20.41632      32.93         12.1          0 \r\n 2020          250           17.7552       34.81         18.92         0 \r\n 2020          251           14.98176      25.34         8.81          6.35 \r\n 2020          252           3.124224      10.67         6.28          19.304 \r\n 2020          253           3.466368      8.97          6.38          30.988 \r\n 2020          254           5.90112       11.86         7.49          13.462 \r\n 2020          255           3.684096      14.69         10.81         5.08 \r\n 2020          256           10.368        21.36         10.87         0 \r\n 2020          257           20.51136      28.24         8.41          0 \r\n 2020          258           18.28224      26.42         11.67         0 \r\n 2020          259           20.40768      28.34         13.19         0 \r\n 2020          260           17.54784      27.43         11.39         0 \r\n 2020          261           16.62336      22.91         8             0 \r\n 2020          262           19.37952      22.49         6.804         0 \r\n 2020          263           15.32736      21.86         12.28         0 \r\n 2020          264           16.25184      24.72         10.46         0 \r\n 2020          265           17.22816      27.35         10.87         0 \r\n 2020          266           18.36         27.83         11.92         0 \r\n 2020          267           11.78496      24.63         13.08         0 \r\n 2020          268           16.65792      29.88         14.86         0 \r\n 2020          269           16.21728      31.8          15.02         0 \r\n 2020          270           13.824        34.46         18.31         0 \r\n 2020          271           2.925504      19.9          9.76          2.794 \r\n 2020          272           10.79136      17.8          7.299         0 \r\n 2020          273           17.6256       24.91         4.39          0 \r\n 2020          274           17.4096       21.08         7.44          0 \r\n 2020          275           13.9104       17.73         3.684         0 \r\n 2020          276           14.904        16.41         0.842         5.588 \r\n 2020          277           6.93792       13.86         5.38          0.762 \r\n 2020          278           17.17632      17.24         1.804         0 \r\n 2020          279           14.76576      25.13         7.118         0 \r\n 2020          280           16.60608      28.76         8.92          0 \r\n 2020          281           16.25184      29.15         9.72          0 \r\n 2020          282           14.63616      26.86         9.12          0 \r\n 2020          283           14.10048      31.12         16.28         0 \r\n 2020          284           15.38784      27.1          11.42         0 \r\n 2020          285           14.95584      29.21         10.04         7.366001 \r\n 2020          286           16.30368      20.14         7.4           0.508 \r\n 2020          287           15.7248       20.98         7.338         0 \r\n 2020          288           13.3488       24.46         8.16          0 \r\n 2020          289           15.768        12.82         1.137         0 \r\n 2020          290           12.79584      13.24        -0.138         0 \r\n 2020          291           9.78912       19.56         4.008         0 \r\n 2020          292           9.84096       5.996        -0.108         4.826 \r\n 2020          293           6.461856      6.4          -1.454         0.254 \r\n 2020          294           2.638656      5.432        -1.636         0.508 \r\n 2020          295           6.686496      9.01          0.692         1.524 \r\n 2020          296           1.212192      8.69          1.076         2.032 \r\n 2020          297           4.312224      3.148        -3.236         0 \r\n 2020          298           9.633601      2.208        -6.278         0 \r\n 2020          299           1.791072      0.145        -4.656         0 \r\n 2020          300           10.82592     -0.098        -6.48          0.508 \r\n 2020          301           13.81536      3.966        -7.598         0 \r\n 2020          302           11.49984      12.12        -5.497         0 \r\n 2020          303           12.73536      5.886        -2.648         0 \r\n 2020          304           12.96864      13.46        -3.145         0 \r\n 2020          305           12.43296      18.51         3.299         0 \r\n 2020          306           11.18016      8.86         -1.96          0 \r\n 2020          307           12.66624      17.83        -1.282         0 \r\n 2020          308           12.54528      25.67         2.826         0 \r\n 2020          309           12.19968      22.35         6.29          0 \r\n 2020          310           11.80224      24.38         4.795         0 \r\n 2020          311           11.43936      23.61         5.805         0 \r\n 2020          312           11.09376      22.11         12.26         0 \r\n 2020          313           8.83008       22.26         11.58         0 \r\n 2020          314           2.270592      18.39         2.158         11.176 \r\n 2020          315           2.759616      2.886        -4.25          18.034 \r\n 2020          316           11.48256      10.36        -5.224         0 \r\n 2020          317           7.58592       7.934        -7.982         0 \r\n 2020          318           11.3184       5.542        -8.95          0 \r\n 2020          319           5.541696      17.84        -0.746         0 \r\n 2020          320           11.16288      8.88         -0.704         0 \r\n 2020          321           10.74816      14.43        -3.541         0 \r\n 2020          322           8.99424       11.21        -3.925         0 \r\n 2020          323           10.11744      21.34         2.592         0 \r\n 2020          324           9.87552       22.09         6.905         0 \r\n 2020          325           6.871392      13.81         1.986         0 \r\n 2020          326           4.856544      7.44          0.692         0 \r\n 2020          327           10.29888      9.14         -1.585         0.762 \r\n 2020          328           1.626912      0.852        -6.126         4.318 \r\n 2020          329           0.943488      6.471         0.732         7.112 \r\n 2020          330           2.638656      3.704        -0.461         0 \r\n 2020          331           9.305279      7.561        -2.204         0 \r\n 2020          332           9.78912       7.914        -4.636         0 \r\n 2020          333           9.73728       13.56        -1.282         0 \r\n 2020          334           8.15616       3.684        -4.34          0 \r\n 2020          335           9.83232       3.603        -9.93          0 \r\n 2020          336           9.51264       8.19         -10.24         0 \r\n 2020          337           8.91648       10.16        -6.684         0 \r\n 2020          338           9.16704       6.673        -7.921         0 \r\n 2020          339           9.17568       9.8          -3.723         0 \r\n 2020          340           8.847359      8.3          -3.642         0 \r\n 2020          341           3.976992      2.622        -4.098         0 \r\n 2020          342           8.70048       9.64         -5.224         0 \r\n 2020          343           6.96384       12.89        -4.199         0 \r\n 2020          344           8.821439      16.36         2.106         0 \r\n 2020          345           7.8192        13.21        -0.098         0 \r\n 2020          346           1.33056       2.572        -0.665         3.302 \r\n 2020          347           8.01792      -0.644        -8.29          3.302 \r\n 2020          348           5.044896     -3.864        -9.08          0 \r\n 2020          349           6.813504     -6.46         -13.98         0 \r\n 2020          350           4.886784     -5.67         -11.52         0 \r\n 2020          351           4.900608     -5.588        -11.15         0 \r\n 2020          352           5.652288     -3.56         -9.48          1.27 \r\n 2020          353           7.0848        6.016        -6.794         0.254 \r\n 2020          354           5.793984     -0.644        -6.48          0 \r\n 2020          355           8.13888       4.411        -5.932         0 \r\n 2020          356           8.8992        9.38         -0.098         0 \r\n 2020          357           8.35488       12.12        -3.338         0 \r\n 2020          358           2.064096      11.25        -12.66         0 \r\n 2020          359           9.21888      -9.87         -17.46         0 \r\n 2020          360           8.76096      -0.866        -17.56         0 \r\n 2020          361           8.19072       5.4          -10.01         0 \r\n 2020          362           3.01104       1.722        -4.068         0 \r\n 2020          363           5.979744     -1.343        -8.09          0 \r\n 2020          364           2.275776     -0.866        -7.77          11.176 \r\n 2020          365           8.78688      -2.204        -8.37          0 \r\n 2020          366           7.49088      -4.168        -17.6          0 \r\n 2021          1             4.969728     -3.054        -12.08         0 \r\n 2021          2             6.828192     -1.09         -11.95         1.016 \r\n 2021          3             7.58592       0.327        -13.15         0.508 \r\n 2021          4             8.96832       4.654        -4.138         0 \r\n 2021          5             7.18848       4.149        -7.962         0 \r\n 2021          6             3.055104      3.38         -0.461         3.556 \r\n 2021          7             5.055264      0.55         -4.402         2.286 \r\n 2021          8             6.46272       0.155        -5.588         0 \r\n 2021          9             4.451328     -2.609        -6.268         0 \r\n 2021          10            4.051296      0.246        -6.684         0 \r\n 2021          11            9.936         3.765        -5.446         0 \r\n 2021          12            9.7632        5.442        -4.736         0 \r\n 2021          13            8.73504       5.824        -0.746         0 \r\n 2021          14            3.01968       4.724        -1.98          3.048 \r\n 2021          15            3.967488     -0.928        -2.791         6.604 \r\n 2021          16            4.84704      -2.405        -7.302         0 \r\n 2021          17            7.54272       0.185        -6.724         0.762 \r\n 2021          18            6.776352      2.046        -5.71          0 \r\n 2021          19            8.06112       3.088        -7.364         0 \r\n 2021          20            10.8          8.16         -9.26          0 \r\n 2021          21            10.70496      5.764        -3.145         0 \r\n 2021          22            9.12384      -2.771        -10.48         0 \r\n 2021          23            5.362848     -1.596        -10.72         0 \r\n 2021          24            7.2576       -1.464        -5.426         0 \r\n 2021          25            3.017952     -4.291        -8.12          17.526 \r\n 2021          26            9.72         -6.622        -13.27         0 \r\n 2021          27            11.61216     -3.854        -13.51         2.286 \r\n 2021          28            6.97248      -3.682        -15.36         0 \r\n 2021          29            11.016        2.188        -9.18          1.016 \r\n 2021          30            2.940192      2.654        -2.082         0 \r\n 2021          31            5.508864     -1.11         -4.432         0 \r\n 2021          32            6.55344      -2.648        -6.541         0 \r\n 2021          33            10.80864     -0.38         -7.962         0 \r\n 2021          34            12.12192      5.229        -6.004         0 \r\n 2021          35            11.24064      4.028        -10.52         4.318 \r\n 2021          36            12.5712      -6.684        -14.26         0 \r\n 2021          37            8.40672      -10.5         -21.84         0 \r\n 2021          38            11.33568     -16.4         -22.74         0 \r\n 2021          39            9.42624      -15.36        -23.6          0 \r\n 2021          40            13.35744     -9.3          -25.75         0.254 \r\n 2021          41            12.83904     -10.6         -18.99         0 \r\n 2021          42            11.67264     -15.53        -21.27         0 \r\n 2021          43            8.80416      -19.78        -23.89         0 \r\n 2021          44            14.18688     -15.14        -22.07         0 \r\n 2021          45            11.12832     -20.09        -24.45         0 \r\n 2021          46            11.12832     -20.79        -27.61         0 \r\n 2021          47            15.21504     -14.85        -30.06         0 \r\n 2021          48            11.4912      -9.16         -19.11         0 \r\n 2021          49            15.27552     -7.636        -14.52         0.254 \r\n 2021          50            14.89536      0.458        -15.55         0 \r\n 2021          51            15.79392     -0.522        -12.09         0 \r\n 2021          52            9.288         0.53         -4.696         6.35 \r\n 2021          53            15.77664      4.643        -7.373         0 \r\n 2021          54            16.45056      9.38         -1.14          0 \r\n 2021          55            12.00096      3.623        -4.605         0 \r\n 2021          56            16.39872      4.18         -5             0 \r\n 2021          57            13.27968      6.642        -4.23          0 \r\n 2021          58            16.78752      11.38        -2.507         0 \r\n 2021          59            9.357119      5.522        -4.452         0 \r\n 2021          60            17.14176      2.522        -5.73          0 \r\n 2021          61            17.54784      13.03        -4.352         0 \r\n 2021          62            16.30368      18.45         0.165         0 \r\n 2021          63            17.48736      16.13        -0.502         0 \r\n 2021          64            17.81568      13.69        -3.257         0 \r\n 2021          65            17.5392       17.77        -0.24          0 \r\n 2021          66            17.51328      19.18         2.33          0 \r\n 2021          67            15.14592      20.11         2.36          0 \r\n 2021          68            16.72704      22.07         7.642         0 \r\n 2021          69            15.768        24.24         0.246         1.016 \r\n 2021          70            16.72704      12.88        -1.19          0 \r\n 2021          71            9.2448        10.3         -2.669         0 \r\n 2021          72            9.944641      13.67        -0.088         8.89 \r\n 2021          73            1.323648      6.613         0.67          63.5 \r\n 2021          74            2.819232      2.45         -0.036         3.048 \r\n 2021          75            4.09104       7.138         0.772         0.254 \r\n 2021          76            4.126464      4.402         0.428         0.254 \r\n 2021          77            19.84608      11.08        -1.353         0 \r\n 2021          78            20.2176       12.6         -3.966         0 \r\n 2021          79            19.86336      16.4         -2.274         0 \r\n 2021          80            15.62976      19.39         5.724         0 \r\n 2021          81            2.244672      8.45          4.492         3.556 \r\n 2021          82            3.005856      12.88         7.49          18.288 \r\n 2021          83            4.614624      8.73          3.482         0.762 \r\n 2021          84            5.01552       6.814         2.45          0.254 \r\n 2021          85            14.41152      13.51         3.28          2.032 \r\n 2021          86            11.1456       12.36         1.906         0 \r\n 2021          87            20.32128      13.05        -1.818         0 \r\n 2021          88            20.64096      24.97         5.633         0 \r\n 2021          89            18.74016      12.2         -1.474         0 \r\n 2021          90            22.32576      6.774        -6.713         0 \r\n 2021          91            22.23936      10.59        -6.684         0 \r\n 2021          92            20.05344      20.82         0.378         0 \r\n 2021          93            21.61728      26.06         6.572         0 \r\n 2021          94            17.87616      30.3          8.14          0 \r\n 2021          95            18.29088      27.47         14.21         0 \r\n 2021          96            7.8192        25.7          16.05         0 \r\n 2021          97            7.71552       18.33         10.35         10.922 \r\n 2021          98            5.06736       10.38         6.875         8.382 \r\n 2021          99            14.7744       15.18         6.248         0 \r\n 2021          100           15.50016      15.82         3.724         0 \r\n 2021          101           24.73632      19.92         0.174         0 \r\n 2021          102           25.32384      14.53         1.591         0 \r\n 2021          103           23.112        12.12        -1.434         0 \r\n 2021          104           17.65152      9.46         -2.264         0 \r\n 2021          105           16.68384      11.76        -2.832         0 \r\n 2021          106           5.66784       9.07          2.492         3.81 \r\n 2021          107           15.984        14.14         3.755         3.302 \r\n 2021          108           22.8528       16.89         4.744         0 \r\n 2021          109           7.98336       8.67         -2.112         0 \r\n 2021          110           16.70112      7.652        -1.748         0 \r\n 2021          111           22.41216      7.843        -3.034         0 \r\n 2021          112           21.70368      14.88        -3.642         0 \r\n 2021          113           13.36608      16.97         6.673         0 \r\n 2021          114           25.4016       16.19         1.976         0 \r\n 2021          115           20.72736      22.65         2.562         0 \r\n 2021          116           23.5872       32.12         12.41         0 \r\n 2021          117           20.03616      29.31         11.04         0 \r\n 2021          118           13.55616      20            8.12          0 \r\n 2021          119           26.1792       24.83         6.532         0.254 \r\n 2021          120           25.19424      27.74         7.318         0 \r\n 2021          121           26.76672      30.87         13.04         0 \r\n 2021          122           20.24352      28.18         14.94         0 \r\n 2021          123           12.51072      20.15         9.18          0.254 \r\n 2021          124           27.45792      17.2          4.734         0 \r\n 2021          125           15.08544      18.18         1.379         0 \r\n 2021          126           25.38432      18.34         4.351         0 \r\n 2021          127           23.79456      21.55         6.028         0 \r\n 2021          128           5.372352      12.28         5.18          36.83 \r\n 2021          129           19.2672       14.57         4.532         3.302 \r\n 2021          130           21.10752      17.4          3.976         0 \r\n 2021          131           22.92192      15.75         3.391         0 \r\n 2021          132           27.54432      17.79         4.37          0 \r\n 2021          133           27.36288      19.88         5.542         0 \r\n 2021          134           8.985601      20.68         9.78          0.762 \r\n 2021          135           21.7728       23.31         10.94         0 \r\n 2021          136           5.495904      15.98         11.61         3.81 \r\n 2021          137           9.642239      20.96         13.68         1.27 \r\n 2021          138           7.65504       21.07         15.2          0.508 \r\n 2021          139           12.07008      24.72         16.23         3.81 \r\n 2021          140           7.344         22.19         16.38         9.398 \r\n 2021          141           14.54112      25.98         18.7          0 \r\n 2021          142           12.096        25.53         18.07         2.794 \r\n 2021          143           19.17216      27.75         17.63         0 \r\n 2021          144           22.7664       27.65         18.83         0 \r\n 2021          145           14.39424      27.82         17.47         4.318 \r\n 2021          146           25.49664      27.94         13.7          0 \r\n 2021          147           11.90592      21.7          8.09          25.146 \r\n 2021          148           7.75872       10.46         6.138         0 \r\n 2021          149           24.0624       19.54         3.825         0 \r\n 2021          150           9.71136       17.43         9.38          0 \r\n 2021          151           21.27168      24.77         9.69          0 \r\n 2021          152           16.9776       25.38         10.53         0 \r\n 2021          153           22.01472      27.53         12.02         0 \r\n 2021          154           22.91328      30.4          13.02         0 \r\n 2021          155           24.48576      33.42         15.26         0 \r\n 2021          156           23.40576      33.31         18.83         0 \r\n 2021          157           17.94528      27.91         16.41         0 \r\n 2021          158           25.17696      32.04         18.11         0 \r\n 2021          159           25.53984      32.39         18.86         0 \r\n 2021          160           20.49408      32.89         19.46         0 \r\n 2021          161           22.02336      34.54         21.11         0 \r\n 2021          162           8.36352       28.44         19.7          2.286 \r\n 2021          163           28.18368      30.79         16.02         0 \r\n 2021          164           27.31968      33.72         15.5          0 \r\n 2021          165           24.16608      33.44         17.77         0 \r\n 2021          166           26.9136       32.85         16.08         0 \r\n 2021          167           24.3216       33.11         16.3          1.524 \r\n 2021          168           22.13568      38.23         21.78         1.778 \r\n 2021          169           15.18048      30.6          20.42         24.13 \r\n 2021          170           26.66304      31.62         17.75         0 \r\n 2021          171           21.78144      29.83         15.9          14.478 \r\n 2021          172           19.31904      22.75         12.86         0 \r\n 2021          173           13.87584      30.25         11.31         0 \r\n 2021          174           26.87904      30.64         19.06         0 \r\n 2021          175           13.54752      27.57         19.34         22.098 \r\n 2021          176           19.94976      29.68         19.78         0.254 \r\n 2021          177           6.746976      23.13         16.8          3.556 \r\n 2021          178           21.04704      27.31         16.02         0 \r\n 2021          179           15.84576      28.42         18.34         5.842 \r\n 2021          180           13.1328       27.15         19.65         1.27 \r\n 2021          181           18.69696      28.88         18.08         0.254 \r\n 2021          182           24.90048      28.74         16.95         0 \r\n 2021          183           23.64768      30.34         18.4          0 \r\n 2021          184           23.08608      30.81         17.55         0 \r\n 2021          185           21.54816      30.11         19.09         0 \r\n 2021          186           21.82464      30.88         18.44         0 \r\n 2021          187           22.69728      30.29         19.22         0 \r\n 2021          188           12.14784      24.25         15.82         10.16 \r\n 2021          189           19.15488      24.47         12.93         0.762 \r\n 2021          190           20.96064      31.7          15.91         7.112 \r\n 2021          191           11.82816      25.4          15.87         52.07 \r\n 2021          192           21.816        25.18         15.98         1.27 \r\n 2021          193           23.0256       27.59         12.94         6.35 \r\n 2021          194           20.63232      27.9          15.26         0.254 \r\n 2021          195           12.45888      29.53         20.79         0.254 \r\n 2021          196           19.56096      25.54         16.96         7.366 \r\n 2021          197           19.50912      27.32         15.37         0 \r\n 2021          198           15.05952      27.66         16.22         0 \r\n 2021          199           21.3408       27.86         15.13         0 \r\n 2021          200           17.13312      28.41         16.26         0 \r\n 2021          201           22.12704      29.92         16.94         0 \r\n 2021          202           22.75776      28.74         17.07         0 \r\n 2021          203           14.13504      28.64         18.45         0 \r\n 2021          204           21.4704       31.25         19.08         0 \r\n 2021          205           14.45472      32.3          22.03         0 \r\n 2021          206           16.38144      29.8          19.2          0 \r\n 2021          207           21.95424      30.93         17.86         0 \r\n 2021          208           22.95648      32.36         18.65         0 \r\n 2021          209           21.88512      33.32         21.53         0 \r\n 2021          210           15.6384       32.6          21.65         0 \r\n 2021          211           14.96448      30.06         19.4          19.05 \r\n 2021          212           13.62528      26.46         17.85         68.834 \r\n 2021          213           19.12032      26.04         14.05         0 \r\n 2021          214           19.28448      26.51         12.56         0 \r\n 2021          215           20.24352      26.17         13.28         0 \r\n 2021          216           19.02528      25.9          13.75         0 \r\n 2021          217           12.46752      28.65         18.05         0 \r\n 2021          218           14.31648      30.1          17.78         1.778 \r\n 2021          219           9.34848       27.92         20.18         3.81 \r\n 2021          220           16.68384      27.72         18.03         6.604 \r\n 2021          221           21.36672      32            19.96         0 \r\n 2021          222           18.45504      32.03         24.1          0 \r\n 2021          223           21.44448      31.54         20.46         0 \r\n 2021          224           20.87424      30.53         18.18         0 \r\n 2021          225           22.464        28.02         16.48         0 \r\n 2021          226           23.81184      27.53         12.53         0 \r\n 2021          227           23.14656      27.98         12.43         0 \r\n 2021          228           23.12928      28.8          15.26         0 \r\n 2021          229           20.83968      29.85         17.08         0 \r\n 2021          230           19.99296      29.66         18.4          0 \r\n 2021          231           20.41632      30.66         19.38         0 \r\n 2021          232           16.65792      31.36         21.24         0 \r\n 2021          233           22.92192      24.15         14.37         0 \r\n 2021          234           21.80736      28.49         12.58         0 \r\n 2021          235           20.01024      34.13         22.03         0 \r\n 2021          236           20.4768       33.02         21.46         0 \r\n 2021          237           21.53952      33.87         20.93         3.81 \r\n 2021          238           19.76832      31.83         21.33         0 \r\n 2021          239           19.3536       33.06         22.16         0 \r\n 2021          240           20.8224       31.86         23.21         0 \r\n 2021          241           14.79168      26.55         17.92         4.318 \r\n 2021          242           19.49184      30.2          16.27         1.27 \r\n 2021          243           15.88896      26.29         16.57         48.514 \r\n 2021          244           19.83744      26.42         13.73         0 \r\n 2021          245           8.96832       23.81         16.67         3.048 \r\n 2021          246           8.6832        23.8          18.22         4.826 \r\n 2021          247           14.41152      25.08         15.75         0 \r\n 2021          248           20.19168      28.03         14.24         0 \r\n 2021          249           19.9584       30.42         15.37         0 \r\n 2021          250           19.46592      28.27         14.31         0 \r\n 2021          251           20.76192      26.22         12.18         0 \r\n 2021          252           20.18304      26.5          11.53         0 \r\n 2021          253           17.85888      29.29         13.77         0 \r\n 2021          254           17.76384      31.69         16.99         0 \r\n 2021          255           6.98112       23.3          18.54         0 \r\n 2021          256           15.65568      29.69         16.75         0 \r\n 2021          257           12.9168       25.85         14.29         0 \r\n 2021          258           18.792        27.35         10.89         0 \r\n 2021          259           18.51552      31.43         13.7          0 \r\n 2021          260           14.07456      25.27         13.39         2.54 \r\n 2021          261           18.0144       30.6          12.66         0 \r\n 2021          262           18.86976      31.54         17.5          0 \r\n 2021          263           9.90144       26.68         12.19         1.27 \r\n 2021          264           18.94752      22.47         9.03          0 \r\n 2021          265           19.5696       22.58         6.269         0 \r\n 2021          266           18.86976      26.26         4.856         0 \r\n 2021          267           8.31168       21.68         9.31          0 \r\n 2021          268           18.69696      25.92         5.653         0 \r\n 2021          269           18.21312      31.48         11.09         0 \r\n 2021          270           17.91072      34.26         13.96         0 \r\n 2021          271           17.52192      33.86         13.66         0 \r\n 2021          272           10.60128      29.87         14.17         0 \r\n 2021          273           14.31648      29.18         17.04         49.784 \r\n 2021          274           7.92288       24.75         15.4          0.254 \r\n 2021          275           7.56864       21.72         15.01         0.254 \r\n 2021          276           17.15904      25.29         12.5          0 \r\n 2021          277           17.07264      26.89         8.74          0 \r\n 2021          278           13.0464       25.04         10.05         0 \r\n 2021          279           6.781536      23.52         11.34         0 \r\n 2021          280           7.35264       24.46         15.2          0 \r\n 2021          281           14.23008      29.53         11.79         0 \r\n 2021          282           6.24672       23.96         16.46         0 \r\n 2021          283           6.85152       19.67         13.18         1.524 \r\n 2021          284           8.41536       22.29         11.32         0 \r\n 2021          285           14.82624      26.14         6.753         0 \r\n 2021          286           14.11776      21.93         9.18          27.686 \r\n 2021          287           14.70528      18.1          4.29          0 \r\n 2021          288           13.88448      15.73         4.956         0 \r\n 2021          289           15.38784      17.6          2.168         0 \r\n 2021          290           14.98176      23.05         4.25          0 \r\n 2021          291           14.82624      24.16         7.258         0 \r\n 2021          292           13.70304      24.09         9.46          0 \r\n 2021          293           3.519936      16.81         5.624         0 \r\n 2021          294           4.94208       9.23          1.642         0 \r\n 2021          295           11.448        12.41        -0.512         0 \r\n 2021          296           11.9232       14.26         1.217         0 \r\n 2021          297           1.078272      9.74          5.744         43.688 \r\n 2021          298           13.2192       12.44         2.128         0 \r\n 2021          299           6.912         14.25         2.774         0 \r\n 2021          300           2.680992      12.68         9.68          21.336 \r\n 2021          301           2.184192      9.84          8.25          19.304 \r\n 2021          302           12.0096       14.82         3.32          0 \r\n 2021          303           12.98592      18.3          1.217         0 \r\n 2021          304           10.61856      10.16         0.61          0 \r\n 2021          305           4.981824      6.572        -1.444         0 \r\n 2021          306           9.78912       9.8          -3.804         0 \r\n 2021          307           4.24656       8.14         -2.366         0 \r\n 2021          308           10.55808      13.04         0.246         0 \r\n 2021          309           11.0592       15.62         1.217         0 \r\n 2021          310           10.64448      19.38         3.784         0 \r\n 2021          311           9.12384       20.64         6.814         0 \r\n 2021          312           9.91008       17.05         3.906         0 \r\n 2021          313           10.91232      16.29         3.542         0 \r\n 2021          314           0.957312      12.06         6.582         27.178 \r\n 2021          315           9.27936       10.71         0.772         0 \r\n 2021          316           3.51648       1.348        -2.041         0 \r\n 2021          317           6.767712      6.875        -3.206         0.508 \r\n 2021          318           9.92736       7.682        -1.353         0 \r\n 2021          319           8.79552       13.14         1.46          0 \r\n 2021          320           8.3808        21.08         2.046         0 \r\n 2021          321           5.469984      8.66         -2             0 \r\n 2021          322           10.54944      4.28         -5.466         0 \r\n 2021          323           6.161184      8.38         -6.502         0 \r\n 2021          324           9.09792       15.07         1.309         0 \r\n 2021          325           9.91008       9.46         -4.726         0 \r\n 2021          326           9.31392       6.753        -4.97          0 \r\n 2021          327           9.27936       17.44        -2.963         0 \r\n 2021          328           3.821472      12.15        -2.992         0 \r\n 2021          329           9.936        -0.38         -8.21          0 \r\n 2021          330           9.1152        9.58         -7.414         0 \r\n 2021          331           8.73504       15.82         0.894         0 \r\n 2021          332           8.04384       7.703        -3.642         0 \r\n 2021          333           8.6832        17.73         0.408         0 \r\n 2021          334           8.75232       15.34         2.288         0 \r\n 2021          335           6.899904      15.86         2.502         0 \r\n 2021          336           8.13888       18.34         5.512         0 \r\n 2021          337           8.82144       14.71         0.205         0 \r\n 2021          338           7.11072       6.875        -2.152         0 \r\n 2021          339           6.301152      10.46        -1.636         0 \r\n 2021          340           8.49312      -1.464        -11.2          0 \r\n 2021          341           7.63776       4.986        -10.91         0 \r\n 2021          342           8.57952       5.482        -7.627         0 \r\n 2021          343           8.37216       13.28         0.205         0 \r\n 2021          344           1.610496      2.794        -2.244         0 \r\n 2021          345           8.856         4.937        -4.026         0 \r\n 2021          346           8.14752       12.42        -2.791         0 \r\n 2021          347           7.92288       11.96        -1.656         0 \r\n 2021          348           6.483456      14.17         0.346         0 \r\n 2021          349           5.80608       22.29        -1.798         2.032 \r\n 2021          350           8.65728       4.916        -4.564         0 \r\n 2021          351           4.828896      4.047        -6.248         0 \r\n 2021          352           3.167424     -1.494        -11.27         0 \r\n 2021          353           8.70912       1.562        -13            0 \r\n 2021          354           8.3808        2.582        -9.51          0 \r\n 2021          355           7.50816       6.269        -11.19         0 \r\n 2021          356           8.44992       9.64         -9.04          0 \r\n 2021          357           3.959712      8.25         -0.725         0 \r\n 2021          358           6.028992      11.03         1.52          0 \r\n 2021          359           8.45856       8.09         -6.298         0 \r\n 2021          360           3.233952      7.712        -6.206         0 \r\n 2021          361           4.549824      3.623        -5.487         0 \r\n 2021          362           4.705344      6.602        -13.06         0 \r\n 2021          363           3.26592      -5.872        -14.28         0 \r\n 2021          364           6.221664      1.986        -10.21         0 \r\n 2021          365           1.397088     -1.079        -13.27         0 \r\n 2022          1             2.024352     -13.27        -18.7          0 \r\n 2022          2             9.30528      -12.76        -23.74         0 \r\n 2022          3             7.98336       1.116        -17.24         0 \r\n 2022          4             6.858432      3.584        -10.87         0 \r\n 2022          5             8.23392      -10.79        -16.83         0 \r\n 2022          6             9.21024      -14.6         -20.01         0 \r\n 2022          7             7.19712      -7.354        -18.01         0 \r\n 2022          8             2.97216      -0.078        -9.93          0 \r\n 2022          9             9.40032      -4.554        -15.09         0 \r\n 2022          10            9.2448       -0.482        -12.59         0 \r\n 2022          11            8.64          9.55         -9.98          0 \r\n 2022          12            8.90784       12.04        -2.072         0 \r\n 2022          13            9.288         11.01        -3.611         0 \r\n 2022          14            1.242432      1.207        -7.059         3.302 \r\n 2022          15            9.58176      -7.028        -17.68         0 \r\n 2022          16            8.22528       2.674        -16.26         0 \r\n 2022          17            8.48448       2.067        -8.11          3.048 \r\n 2022          18            9.95328       6.41         -4.27          0 \r\n 2022          19            9.05472      -3.014        -17.07         0 \r\n 2022          20            10.82592     -10.68        -21.23         0 \r\n 2022          21            9.8064       -3.966        -20.71         0 \r\n 2022          22            9.83232       5.057        -7.658         0 \r\n 2022          23            7.24896       4.906        -12.8          0 \r\n 2022          24            6.05232       3.502        -15.7          0 \r\n 2022          25            10.77408     -8.19         -19.82         0 \r\n 2022          26            11.04192     -0.746        -19.74         0 \r\n 2022          27            7.49088       3.724        -13.1          0 \r\n 2022          28            11.51712     -3.723        -19.52         0 \r\n 2022          29            11.4912       7.884        -10.62         0 \r\n 2022          30            9.87552      -0.36         -8.51          0 \r\n 2022          31            9.57312       9.91         -3.439         0 \r\n 2022          32            9.68544       4.228        -8.26          0 \r\n 2022          33            8.97696      -8.23         -16.95         0 \r\n 2022          34            12.24288     -9.95         -20.4          0 \r\n 2022          35            11.3616      -3.55         -18.54         0 \r\n 2022          36            11.85408      10.71        -14.65         0 \r\n 2022          37            10.48896      6.452        -7.322         0 \r\n 2022          38            9.98784       11.51        -8.47          0 \r\n 2022          39            9.27936       13.43        -1.544         0 \r\n 2022          40            12.0528       8.31         -4.28          0 \r\n 2022          41            10.22112      8.23         -9.26          0.254 \r\n 2022          42            11.03328      6.41         -12.53         3.302 \r\n 2022          43            12.75264     -4.432        -17.24         0 \r\n 2022          44            14.01408     -6.217        -13.43         0 \r\n 2022          45            14.19552      2.138        -10            0 \r\n 2022          46            11.82816      14.92        -7.495         0 \r\n 2022          47            9.82368       9.96         -5.832         0 \r\n 2022          48            9.44352      -4.675        -13.02         0 \r\n 2022          49            14.07456      13.51        -12.98         0 \r\n 2022          50            14.45472      1.147        -14.87         0 \r\n 2022          51            14.65344      18.29        -3.642         0 \r\n 2022          52            11.16288      14.53        -3.135         0 \r\n 2022          53            9.87552      -2.648        -17.91         0 \r\n 2022          54            14.67072     -9.99         -20.17         0 \r\n 2022          55            6.92928      -8.53         -16.99         0 \r\n 2022          56            16.69248     -5.264        -20.66         0 \r\n 2022          57            16.38144      6.148        -12.76         0 \r\n 2022          58            16.66656      12.16        -7.21          0 \r\n 2022          59            15.36192      18.54        -3.642         0 \r\n 2022          60            16.32096      21.58         0.692         0 \r\n 2022          61            15.5088       24.9          0.358         0 \r\n 2022          62            16.85664      8.57         -3.784         0 \r\n 2022          63            12.63168      14.77        -4.787         0 \r\n 2022          64            4.30272       17.45        -2.284         14.224 \r\n 2022          65            10.85184      1.126        -4.432         0 \r\n 2022          66            17.25408     -0.178        -5.932         0.254 \r\n 2022          67            17.28864      8.13         -8.61          0 \r\n 2022          68            14.62752     -1.738        -7.536         0 \r\n 2022          69            9.0288       -3.824        -8.63          0.254 \r\n 2022          70            19.18944     -3.611        -15.48         0 \r\n 2022          71            16.83072     -0.756        -16.78         0 \r\n 2022          72            19.1808       16.95        -2.992         0 \r\n 2022          73            15.93216      16.01        -0.32          0 \r\n 2022          74            18.4032       14.85        -4.352         0 \r\n 2022          75            18.17856      23.02         2.077         0 \r\n 2022          76            5.791392      10.3          0.924         20.066 \r\n 2022          77            9.072         5.219        -0.178         26.162 \r\n 2022          78            20.61504      15.51        -4.026         0 \r\n 2022          79            17.37504      22.8          3.218         0 \r\n 2022          80            11.03328      20.4          6.814         9.144 \r\n 2022          81            3.112128      7.036         2.006         18.034 \r\n 2022          82            5.260896      2.875         0.651         0 \r\n 2022          83            5.18832       4.492        -0.159         0 \r\n 2022          84            21.87648      11.42        -1.808         0 \r\n 2022          85            21.40992      6.794        -3.622         0 \r\n 2022          86            16.16544      4.452        -7.617         0 \r\n 2022          87            18.86112      10.65        -4.818         0 \r\n 2022          88            14.28192      17.62         2.148         1.27 \r\n 2022          89            3.85344       12.82        -1.596         0 \r\n 2022          90            8.17344       2.664        -3.48          0 \r\n 2022          91            19.44864      14.16        -7.1           1.27 \r\n 2022          92            19.75104      15            0.711         0 \r\n 2022          93            3.608928      11.18        -2.345         0.254 \r\n 2022          94            20.2608       14.73        -0.786         0 \r\n 2022          95            4.547232      14.74         3.098         3.302 \r\n 2022          96            10.7136       10.46         1.976         0 \r\n 2022          97            9.46944       5.986        -0.512         0 \r\n 2022          98            22.12704      10.46        -1.677         0 \r\n 2022          99            24.15744      16.15        -4.21          0 \r\n 2022          100           13.97952      22.52         4.552         0 \r\n 2022          101           21.52224      18.13         1.298         0 \r\n 2022          102           8.05248       30.11         4.997         11.176 \r\n 2022          103           14.48928      9.43         -1.494         0 \r\n 2022          104           23.25024      12.18        -3.388         0 \r\n 2022          105           20.81376      10           -4.017         0 \r\n 2022          106           24.80544      10.15        -4.026         0 \r\n 2022          107           4.383936      2.875        -1.13          0.508 \r\n 2022          108           24.84         10.99        -3.014         0 \r\n 2022          109           6.809184      8.2          -5.77          0 \r\n 2022          110           2.575584      10.59         2.552         0.508 \r\n 2022          111           14.6016       19.34         1.734         2.032 \r\n 2022          112           8.22528       26.96         12.32         13.97 \r\n 2022          113           14.58432      25.04         6.784         6.858 \r\n 2022          114           22.97376      13.61         4.39          0 \r\n 2022          115           21.97152      9.92          0.711         0 \r\n 2022          116           24.91776      19.98        -1.444         0 \r\n 2022          117           22.74048      26.46         8.27          0 \r\n 2022          118           21.45312      24.59         12.14         2.54 \r\n 2022          119           6.537024      17.17         11.39         41.91 \r\n 2022          120           6.048         13.38         6.067         1.778 \r\n 2022          121           13.25376      12.92         3.784         0 \r\n 2022          122           3.445632      6.148         1.39          24.638 \r\n 2022          123           9.5472        10.96         4.128         0.762 \r\n 2022          124           5.800032      11.38         6.946         0 \r\n 2022          125           3.714336      13.17         9.52          0 \r\n 2022          126           19.29312      21.06         9.78          0 \r\n 2022          127           25.49664      22.38         8.41          0 \r\n 2022          128           3.678048      18.42         12.62         3.302 \r\n 2022          129           23.34528      34.75         17.38         0 \r\n 2022          130           16.04448      32.76         18.68         0 \r\n 2022          131           20.96928      33.38         22.87         0 \r\n 2022          132           25.36704      34.21         16.62         7.366 \r\n 2022          133           19.47456      27.65         14.71         1.778 \r\n 2022          134           22.3344       30.58         11.15         1.016 \r\n 2022          135           15.21504      21.24         12.56         0 \r\n 2022          136           26.81856      27.9          10.87         0 \r\n 2022          137           14.2992       26.99         12.8          4.064 \r\n 2022          138           27.01728      27.75         16.09         17.78 \r\n 2022          139           24.37344      31.44         15.58         0 \r\n 2022          140           15.92352      21.38         9.94          0 \r\n 2022          141           10.00512      15.74         6.088         0 \r\n 2022          142           29.92032      19.36         2.016         0 \r\n 2022          143           15.19776      17.87         7.39          0 \r\n 2022          144           5.679936      14.19         8.91          23.876 \r\n 2022          145           4.364928      11.69         9.65          13.97 \r\n 2022          146           8.52768       14.1          8.2           0 \r\n 2022          147           27.94176      25.47         7.006         0 \r\n 2022          148           25.41888      29.53         15.7          0 \r\n 2022          149           19.11168      30.22         18.92         1.016 \r\n 2022          150           19.8288       29.34         15.5          5.842 \r\n 2022          151           22.96512      25.84         14.07         0 \r\n 2022          152           23.74272      22.35         10.18         0 \r\n 2022          153           28.65888      26.45         9.26          0 \r\n 2022          154           27.432        28.66         13.79         0.254 \r\n 2022          155           14.92128      24.85         15.11         0 \r\n 2022          156           19.68192      28.71         13.93         2.032 \r\n 2022          157           18.17856      25.62         16.31         0 \r\n 2022          158           21.02976      28.47         14.81         21.59 \r\n 2022          159           22.80096      25.18         15.34         0.254 \r\n 2022          160           11.16288      24.84         13.72         0.762 \r\n 2022          161           16.66656      27.44         15.5          0 \r\n 2022          162           20.40768      30.9          16.5          0 \r\n 2022          163           18.55008      32.1          17.97         0.254 \r\n 2022          164           17.8416       37.4          24.72         1.524 \r\n 2022          165           20.57184      34.6          17.97         36.068 \r\n 2022          166           16.39008      26.13         17.42         4.572 \r\n 2022          167           21.89376      31.16         16.45         0 \r\n 2022          168           18.82656      32.29         18.59         0 \r\n 2022          169           22.23072      32.34         21.4          0 \r\n 2022          170           21.45312      32.39         20.62         0 \r\n 2022          171           19.42272      33.01         22.19         0 \r\n 2022          172           20.07072      32.54         20.45         0 \r\n 2022          173           23.76         32.3          18.29         0 \r\n 2022          174           19.88064      28.52         17.57         17.272 \r\n 2022          175           16.47648      27.21         18.3          0 \r\n 2022          176           10.47168      28.6          17.37         0.508 \r\n 2022          177           21.98016      25.24         11.86         0 \r\n 2022          178           20.87424      27.35         12.7          0 \r\n 2022          179           18.06624      29.08         13.79         0 \r\n 2022          180           21.72096      31.98         17.07         0 \r\n 2022          181           18.07488      32.22         19.6          0 \r\n 2022          182           11.37888      26.74         16.92         2.032 \r\n 2022          183           19.73376      28.02         15.29         0 \r\n 2022          184           20.15712      30.16         16.62         0 \r\n 2022          185           17.1504       33.6          22.23         3.302 \r\n 2022          186           24.4944       34.12         20.4          7.112 \r\n 2022          187           7.9488        26.02         20.31         1.27 \r\n 2022          188           13.7376       28.22         21.25         7.366 \r\n 2022          189           17.96256      28.97         19.92         0 \r\n 2022          190           23.13792      29.46         18.41         0 \r\n 2022          191           22.43808      30.22         19.09         0 \r\n 2022          192           17.15904      28.54         17.11         0.254 \r\n"
  },
  {
    "path": "scripts/yieldfx/baseline/mcnay.met",
    "content": "[weather.met.weather]\r\nlatitude = 40.927 (DECIMAL DEGREES)\r\ntav = 10.2595 (oC) ! annual average ambient temperature\r\namp = 29.1036 (oC) ! annual amplitude in mean monthly temperature\r\nyear          day           radn          maxt          mint          rain\r\n()            ()            (MJ/m^2)      (oC)          (oC)          (mm)\r\n 1980          1             6.2           0            -3             0 \r\n 1980          2             6.2          -1            -4             0 \r\n 1980          3             5.7          -1.5          -5             0 \r\n 1980          4             6.2          -1            -5             0 \r\n 1980          5             6            -0.5          -4             1.78 \r\n 1980          6             2.9           0.5          -7.5           0 \r\n 1980          7             9.4          -5            -16            0.25 \r\n 1980          8             6.5          -8.5          -16.5          0 \r\n 1980          9             8.1          -8.5          -18            0 \r\n 1980          10            4.9           8            -12.5          0 \r\n 1980          11            10            11           -10            0 \r\n 1980          12            7.4           1            -13.5          0 \r\n 1980          13            5.6           9            -2             0 \r\n 1980          14            9.1           10           -5.5           0 \r\n 1980          15            3.8           10            3.5           0 \r\n 1980          16            6.45          9             1.5           33.27 \r\n 1980          17            9.1           3            -3.5           1.27 \r\n 1980          18            10            0            -5             0 \r\n 1980          19            2.5           0            -4             2.03 \r\n 1980          20            9.4           1            -9.5           1.78 \r\n 1980          21            6.5           1            -5             0 \r\n 1980          22            10.3          0.5          -6             0 \r\n 1980          23            11.1         -3            -10.5          0 \r\n 1980          24            4.1           5.5          -7             0 \r\n 1980          25            9.1           4            -5.5           1.27 \r\n 1980          26            6            -3.5          -13            0 \r\n 1980          27            8.5          -9            -15.5          0 \r\n 1980          28            6.2          -9.5          -15            0 \r\n 1980          29            10.2         -8.5          -15.5          0 \r\n 1980          30            5.2          -9.5          -14            2.79 \r\n 1980          31            9            -10.5         -22.5          1.02 \r\n 1980          32            7.2          -8.5          -24            0 \r\n 1980          33            6.9          -5            -14            0 \r\n 1980          34            10.8         -4.5          -15            0 \r\n 1980          35            4.2          -3.5          -13.5          0 \r\n 1980          36            6.9          -1.5          -8.5           3.3 \r\n 1980          37            9.6          -3            -11.5          0.76 \r\n 1980          38            3            -3            -14.5          0 \r\n 1980          39            3.6          -3            -10            0 \r\n 1980          40            8.7          -3.5          -15.5          0 \r\n 1980          41            10.1         -1.5          -15.5          0 \r\n 1980          42            11.3         -2.5          -12            0 \r\n 1980          43            11.1         -4            -17.5          0 \r\n 1980          44            9             1.5          -11.5          0 \r\n 1980          45            7.9           1.5          -5             0 \r\n 1980          46            4.3          -2            -9             4.32 \r\n 1980          47            11.8         -7            -17            2.03 \r\n 1980          48            13.4         -4.5          -18.5          0 \r\n 1980          49            13.2          1.5          -13.5          0 \r\n 1980          50            8.3           5            -2.5           0 \r\n 1980          51            7.9           4             0             0 \r\n 1980          52            1.7           4             1             1.78 \r\n 1980          53            9.2           4.5           1             4.57 \r\n 1980          54            9.7           4            -2             0 \r\n 1980          55            15.4          5            -4.5           0 \r\n 1980          56            16.6          3            -12.5          2.29 \r\n 1980          57            14.7          2.5          -15.5          0 \r\n 1980          58            12            3            -6             0 \r\n 1980          59            17            1            -5             0 \r\n 1980          60            7.1          -1            -9.75          0 \r\n 1980          61            14.1         -3            -14.5          1.52 \r\n 1980          62            16.5         -6            -16.5          0 \r\n 1980          63            12.8         -4            -18            0 \r\n 1980          64            7.6           3.5          -10            0 \r\n 1980          65            16.7          3            -6             3.3 \r\n 1980          66            11.5         -2            -16            0 \r\n 1980          67            5.8           2            -14            1.52 \r\n 1980          68            16.1          2            -4.5           11.94 \r\n 1980          69            11.7          3.5          -4             0 \r\n 1980          70            10.2          8            -7             0 \r\n 1980          71            17.7          6            -4.5           0 \r\n 1980          72            6.3           1.5          -10.5          1.27 \r\n 1980          73            5.2           0.5          -4             3.56 \r\n 1980          74            18.9          0            -5             0 \r\n 1980          75            19.1          9            -9.5           0 \r\n 1980          76            5.2           15            0             0 \r\n 1980          77            12.7          15            2             0 \r\n 1980          78            20.4          8            -3             0 \r\n 1980          79            13.3          15           -3             0 \r\n 1980          80            5.3           18            2.5           0 \r\n 1980          81            21.6          15.5          3.5           0 \r\n 1980          82            14.5          8.5          -2             0 \r\n 1980          83            12.9          13           -3             0 \r\n 1980          84            13            11           -0.5           4.06 \r\n 1980          85            13.5          3.5          -0.5           0 \r\n 1980          86            12.8          6            -3             0 \r\n 1980          87            7.7           6.5          -2             0 \r\n 1980          88            3             13            1.5           0 \r\n 1980          89            3.6           12.5          4.5           4.06 \r\n 1980          90            3.2           8.5           2.5           1.02 \r\n 1980          91            23.9          7.5           1.5           13.72 \r\n 1980          92            8.9           12.5          0             14 \r\n 1980          93            4.7           12            1.5           3 \r\n 1980          94            10            9             3.5           5 \r\n 1980          95            20.8          9.5           3.5           8 \r\n 1980          96            21.6          12.5          0             0 \r\n 1980          97            11            18           -0.5           0 \r\n 1980          98            17.4          19            9             0 \r\n 1980          99            7.6           20.5          7             0 \r\n 1980          100           14.1          17.5          4.5           3 \r\n 1980          101           23.7          9             1             6 \r\n 1980          102           8.9           14.5         -3             0 \r\n 1980          103           25            12.5          0             10 \r\n 1980          104           15.2          9            -4.5           0 \r\n 1980          105           3.5           8.5          -2             0 \r\n 1980          106           25.6          7            -1.5           0 \r\n 1980          107           13.5          14.5         -0.5           0 \r\n 1980          108           10.7          19            1             0 \r\n 1980          109           25.2          17            6.5           3 \r\n 1980          110           24.5          21.5          4             0 \r\n 1980          111           19.5          24            8             0 \r\n 1980          112           26.3          29            9.5           0 \r\n 1980          113           26.6          31            11.5          0 \r\n 1980          114           27            32            16            0 \r\n 1980          115           28.3          28.5          10            0 \r\n 1980          116           26.2          18.5          3.5           0 \r\n 1980          117           27.5          17.5          1             0 \r\n 1980          118           24            18            3.5           0 \r\n 1980          119           28.2          20            8             0 \r\n 1980          120           21.3          20.5          3.5           0 \r\n 1980          121           24.7          20            4.5           0 \r\n 1980          122           22.2          20            9             0 \r\n 1980          123           20.6          22            5.5           0 \r\n 1980          124           17.1          26            8             0 \r\n 1980          125           22            27            8.5           0 \r\n 1980          126           22.8          28.5          8.5           0 \r\n 1980          127           27.2          29            13.5          0 \r\n 1980          128           28.6          27.5          9             0 \r\n 1980          129           28.6          23.5          5             0 \r\n 1980          130           28.5          16            0.5           0 \r\n 1980          131           13.2          20.5          1             0 \r\n 1980          132           27.1          23.5          10.5          0 \r\n 1980          133           13.6          23            6.5           5 \r\n 1980          134           26.3          21            6.5           0 \r\n 1980          135           21.3          18            8             2 \r\n 1980          136           18.4          22.5          3             0 \r\n 1980          137           9.7           23            9             0 \r\n 1980          138           12.6          21.5          10            0 \r\n 1980          139           16.8          17.5          10.5          13 \r\n 1980          140           21            16.5          11            3 \r\n 1980          141           18            19.5          10.5          0 \r\n 1980          142           28.1          22.5          9.5           0 \r\n 1980          143           29.1          25.5          9.5           0 \r\n 1980          144           17.1          27            10.5          0 \r\n 1980          145           15.8          26            12.5          0 \r\n 1980          146           21.7          25.5          14.5          0 \r\n 1980          147           10            29            12.5          0 \r\n 1980          148           8.2           28            15.5          0 \r\n 1980          149           9.5           30.5          17            0 \r\n 1980          150           11.2          31            16            0 \r\n 1980          151           28.3          31.5          18.5          0 \r\n 1980          152           25            30            15.5          9 \r\n 1980          153           18.3          26.5          11.5          0 \r\n 1980          154           16.2          26.5          14.5          53 \r\n 1980          155           29.1          25.5          15.5          43 \r\n 1980          156           14.8          26.5          13            0 \r\n 1980          157           14            26            15.5          47 \r\n 1980          158           12.6          31            18            0 \r\n 1980          159           20.9          31            20.5          0 \r\n 1980          160           32.1          29.5          20            10 \r\n 1980          161           30.9          23.5          10            0 \r\n 1980          162           30.2          26.5          10.5          0 \r\n 1980          163           31.2          27            13            0 \r\n 1980          164           28.2          26.5          10            0 \r\n 1980          165           18.7          28            15.5          0 \r\n 1980          166           17.1          31            18            15 \r\n 1980          167           21.8          31            19            0 \r\n 1980          168           26.1          29            16.5          45 \r\n 1980          169           28.2          22.5          10.5          0 \r\n 1980          170           19.7          23.5          12            0 \r\n 1980          171           30.4          27.5          13            0 \r\n 1980          172           18.2          24            13.5          32 \r\n 1980          173           31            22.5          9.5           0 \r\n 1980          174           18            27            11.5          0 \r\n 1980          175           24.6          28.5          14            0 \r\n 1980          176           27.9          28            16.5          15 \r\n 1980          177           24.2          28            17            0 \r\n 1980          178           25.1          31            16.5          0 \r\n 1980          179           17.6          34            19.5          0 \r\n 1980          180           29.3          35.5          22            0 \r\n 1980          181           31.6          35            19.5          0 \r\n 1980          182           29.7          29.5          15.5          0 \r\n 1980          183           23.3          28            13            0 \r\n 1980          184           15.3          32.5          19.5          0 \r\n 1980          185           21.9          30.5          17            0 \r\n 1980          186           16.2          26.5          15.5          0 \r\n 1980          187           16.3          32.5          19            0 \r\n 1980          188           17.4          33.5          19            35 \r\n 1980          189           29.1          33            20            16 \r\n 1980          190           25.3          35.5          23.5          0 \r\n 1980          191           18.7          35.5          23.5          0 \r\n 1980          192           22.5          36            24.5          0 \r\n 1980          193           21.1          35.5          22.5          0 \r\n 1980          194           29.2          34.5          24            2 \r\n 1980          195           28.4          34            23.5          0 \r\n 1980          196           28.8          35            20            0 \r\n 1980          197           28.2          38.5          23.5          0 \r\n 1980          198           27.7          38            23.5          0 \r\n 1980          199           29.2          35.5          22            0 \r\n 1980          200           20.6          35.5          17.5          0 \r\n 1980          201           25.4          34.5          20            21 \r\n 1980          202           26.8          35.5          22            0 \r\n 1980          203           20.2          36.5          23            0 \r\n 1980          204           28.8          31.5          19.5          7 \r\n 1980          205           29.2          28.5          15            0 \r\n 1980          206           28.8          27.5          13.5          0 \r\n 1980          207           24.5          31            15            0 \r\n 1980          208           16.4          31            18.5          0 \r\n 1980          209           26.9          27            17.5          10 \r\n 1980          210           27.2          26.5          14            0 \r\n 1980          211           27.8          31            13.5          0 \r\n 1980          212           24.3          32            17            0 \r\n 1980          213           25.2          38.5          20            0 \r\n 1980          214           24.4          36            20            0 \r\n 1980          215           19            36.5          19            3 \r\n 1980          216           28.1          34.5          22            0 \r\n 1980          217           13.7          31.5          14.5          0 \r\n 1980          218           25            30.5          18.5          0 \r\n 1980          219           14.6          32            14.5          14 \r\n 1980          220           22.2          33            20            0 \r\n 1980          221           18.8          36.5          22.5          0 \r\n 1980          222           15.9          37            23.5          0 \r\n 1980          223           12.4          36.5          21.5          0 \r\n 1980          224           21.2          34            21            0 \r\n 1980          225           26.6          30.5          18            20 \r\n 1980          226           18.2          29            14            0 \r\n 1980          227           8.6           33            18            6 \r\n 1980          228           15.8          31            19            12 \r\n 1980          229           8.1           23.5          17            3 \r\n 1980          230           13.3          27            16.5          46 \r\n 1980          231           12.3          29            18.5          19 \r\n 1980          232           20.7          31            17.5          0 \r\n 1980          233           16.2          33            21            0 \r\n 1980          234           24.8          33            22            0 \r\n 1980          235           24.7          31            16            0 \r\n 1980          236           24.4          29.5          14.5          0 \r\n 1980          237           24.2          29            15.5          0 \r\n 1980          238           24.1          30.5          16            0 \r\n 1980          239           23.5          33            18            0 \r\n 1980          240           14            34            16.5          0 \r\n 1980          241           15            32            18            0 \r\n 1980          242           15.6          29.5          18            0 \r\n 1980          243           7.1           31.5          18.5          0 \r\n 1980          244           11            29.5          19            0 \r\n 1980          245           10.4          29            17.5          77 \r\n 1980          246           24.5          28.5          17.5          29 \r\n 1980          247           20            28            13            0 \r\n 1980          248           21.7          30            17            0 \r\n 1980          249           6             29.5          17.5          16 \r\n 1980          250           11            29            15.5          24 \r\n 1980          251           16            32            18.5          0 \r\n 1980          252           17.3          33            19.5          0 \r\n 1980          253           11.7          32.5          20.5          0 \r\n 1980          254           23            30.5          16            0 \r\n 1980          255           15.9          24            7.5           0 \r\n 1980          256           10            26            12.5          0 \r\n 1980          257           19.9          31            17.5          4 \r\n 1980          258           20.7          29.5          16.5          7 \r\n 1980          259           15.3          22.5          12.5          0 \r\n 1980          260           6.5           19.5          13.5          0 \r\n 1980          261           20.7          18            9.5           0 \r\n 1980          262           20.1          18.5          3             10 \r\n 1980          263           18.6          25.5          9             0 \r\n 1980          264           17.4          28            13            0 \r\n 1980          265           15.1          30.5          17.5          0 \r\n 1980          266           11.3          30            11.5          0 \r\n 1980          267           20.3          27            13.5          0 \r\n 1980          268           14.6          20.5          4             0 \r\n 1980          269           18.6          19.5          5.5           0 \r\n 1980          270           18.8          18            8.5           0 \r\n 1980          271           12            19            1.5           0 \r\n 1980          272           17.8          22.5          10            0 \r\n 1980          273           17            23.5          9             0 \r\n 1980          274           16.9          23.5          8             0 \r\n 1980          275           19.3          27            12            0 \r\n 1980          276           15.7          25.5          12.5          0 \r\n 1980          277           12.5          19.5          6.5           0 \r\n 1980          278           17.7          14            1.5           0 \r\n 1980          279           18.3          14.5          0.5           0 \r\n 1980          280           17.2          18            0             0 \r\n 1980          281           17.1          24            5             0 \r\n 1980          282           17.7          26.5          5.5           0 \r\n 1980          283           17.6          27.5          9             0 \r\n 1980          284           18            27.5          5.5           0 \r\n 1980          285           17.6          24            9.5           0 \r\n 1980          286           17.4          19            7.5           0 \r\n 1980          287           14.5          16.5         -2.5           0 \r\n 1980          288           15.8          22.5          2             0 \r\n 1980          289           3.7           24            11            4 \r\n 1980          290           5             20            6             0 \r\n 1980          291           15.6          20            8.5           10 \r\n 1980          292           11.7          19.5          6.5           8 \r\n 1980          293           14.8          13            1             0 \r\n 1980          294           14.4          16           -1             0 \r\n 1980          295           14            20            5             0 \r\n 1980          296           13.5          18.5          5             0 \r\n 1980          297           10.3          20.5          4.5           0 \r\n 1980          298           8.3           20            6.5           0 \r\n 1980          299           12.8          11            1             29 \r\n 1980          300           12.5          5.5          -1             0 \r\n 1980          301           4.3           6            -5             0 \r\n 1980          302           11.7          4            -0.5           11 \r\n 1980          303           11.2          3            -4.5           19 \r\n 1980          304           11.8          5.5          -8             0 \r\n 1980          305           11            13           -3.5           0 \r\n 1980          306           14            17           -0.5           0 \r\n 1980          307           13.5          14.5          0.5           0 \r\n 1980          308           12            17.5         -0.5           0 \r\n 1980          309           11.3          17            7.5           0 \r\n 1980          310           12.8          14            2.5           0 \r\n 1980          311           12.5          15            0             0 \r\n 1980          312           11            22.5          4             0 \r\n 1980          313           10.9          22            8             0 \r\n 1980          314           12.1          24            3             0 \r\n 1980          315           11.8          21            6             0 \r\n 1980          316           4             14.5         -1.5           0 \r\n 1980          317           11            7             1.5           0 \r\n 1980          318           3             15            2.5           0 \r\n 1980          319           8.6           14.5          2.5           0 \r\n 1980          320           9.5           4.5          -0.5           10 \r\n 1980          321           8.4           3.5          -2             0 \r\n 1980          322           8.9           5.5          -5.5           0 \r\n 1980          323           10.8          3            -4.5           0 \r\n 1980          324           10.5          4.5          -8.5           0 \r\n 1980          325           10.2          9.5          -6             0 \r\n 1980          326           10.4          9            -3             0 \r\n 1980          327           10.2          10           -5.5           0 \r\n 1980          328           2.6           11.5         -0.5           0 \r\n 1980          329           8.9           9             0.5           4 \r\n 1980          330           9.3           4            -7             0 \r\n 1980          331           6.1           4            -10.5          0 \r\n 1980          332           1.7           4            -9             0 \r\n 1980          333           5.8           3            -4             0 \r\n 1980          334           9.3           5            -7.5           0 \r\n 1980          335           8.8           8.5          -0.5           0 \r\n 1980          336           2.8           14.5         -1             0 \r\n 1980          337           9.9           10           -3             3.56 \r\n 1980          338           9.1           0.5          -15.5          0 \r\n 1980          339           4.1           1            -15            0 \r\n 1980          340           1.6           3.5          -5             0 \r\n 1980          341           1.8           15            1.5           0 \r\n 1980          342           1.5           13.5          2.5           4.57 \r\n 1980          343           4.5           4.5           0.5           49.78 \r\n 1980          344           7.9           2            -5             0 \r\n 1980          345           7.2           1            -5.5           0 \r\n 1980          346           9.1           0.5          -6             0 \r\n 1980          347           9             0.5          -6             0 \r\n 1980          348           9.7           10.5         -2.5           0 \r\n 1980          349           8.4           7            -8             0 \r\n 1980          350           4.7           5            -5.5           0 \r\n 1980          351           8.9           4            -5.5           0 \r\n 1980          352           6.3           2.5          -4.5           0 \r\n 1980          353           4.8           9.5          -1.5           0 \r\n 1980          354           9.4           8            -4             0 \r\n 1980          355           9.3          -1            -16            0 \r\n 1980          356           6.5          -9.5          -18.5          0 \r\n 1980          357           3            -5            -14.5          0 \r\n 1980          358           3.5          -0.5          -10            0 \r\n 1980          359           8.5           0.5          -8             1.52 \r\n 1980          360           4.2          -0.5          -16.5          0 \r\n 1980          361           9            -9            -22            0 \r\n 1980          362           6.1          -4            -12.5          0 \r\n 1980          363           4.5          -1            -10            0 \r\n 1980          364           7             5            -6.5           0 \r\n 1980          365           2.5           7.5          -3.5           0 \r\n 1980          366           8.5           7.5          -5             0 \r\n 1981          1             8.5           4            -2             0 \r\n 1981          2             8.7           5            -9             0 \r\n 1981          3             7.5           3.5          -12.5          0 \r\n 1981          4             8.8          -8            -14.5          0 \r\n 1981          5             7.4          -0.5          -13.5          0 \r\n 1981          6             3.7           1            -6.5           0 \r\n 1981          7             8.6          -1.5          -16            1.02 \r\n 1981          8             9            -4            -11            0 \r\n 1981          9             8            -4.5          -13            0 \r\n 1981          10            8.2          -5            -19            0 \r\n 1981          11            9.9          -6            -18.5          0 \r\n 1981          12            5.8           4.5          -14.5          0 \r\n 1981          13            4.3           4.5          -7.5           0 \r\n 1981          14            7.1           1.5          -8             0 \r\n 1981          15            10            0.5          -10            0 \r\n 1981          16            10.3         -4.5          -15.5          0 \r\n 1981          17            10.5          3.5          -15            0 \r\n 1981          18            10.3          9.5          -6.5           0 \r\n 1981          19            6.2           9            -0.5           0 \r\n 1981          20            7.9           8            -5             0 \r\n 1981          21            10.9          7.5          -8.5           0 \r\n 1981          22            10.8          10.5         -6             0 \r\n 1981          23            10.1          13.5         -5             0 \r\n 1981          24            10.7          15.5         -4             0 \r\n 1981          25            7.7           16            1.5           0 \r\n 1981          26            11.4          9.5          -0.5           0 \r\n 1981          27            9.6           4.5          -5.5           0 \r\n 1981          28            9.4           2.5          -11.5          0 \r\n 1981          29            8            -1            -13.5          0 \r\n 1981          30            12.8         -0.5          -13            0 \r\n 1981          31            6.5           1            -9             0 \r\n 1981          32            8             1            -12            6.35 \r\n 1981          33            9.5          -10.5         -20.5          0.51 \r\n 1981          34            9.6          -8            -20            0 \r\n 1981          35            12.3         -9            -18            0 \r\n 1981          36            8.4          -1            -18.5          0 \r\n 1981          37            9             1            -11.5          0 \r\n 1981          38            10.9          1            -7             0 \r\n 1981          39            10.5         -3            -17.5          0 \r\n 1981          40            8.3          -7            -14            0 \r\n 1981          41            5.3          -7            -18.5          2.79 \r\n 1981          42            14.5         -15           -27.5          3.56 \r\n 1981          43            13.8         -2            -21.5          0 \r\n 1981          44            11.5          4            -10.5          0 \r\n 1981          45            13.4          8.5          -6.5           0 \r\n 1981          46            13.5          10.5         -0.5           0 \r\n 1981          47            11.4          16            0.5           0 \r\n 1981          48            12.4          18            3             0 \r\n 1981          49            9.3           18.5          5             0 \r\n 1981          50            14.6          16            1.5           0 \r\n 1981          51            15            17           -2.5           0 \r\n 1981          52            3.7           16.5          2.5           0 \r\n 1981          53            8.2           9             0.5           15.75 \r\n 1981          54            16.5          9            -1             26.42 \r\n 1981          55            16.7          15.5         -3             0 \r\n 1981          56            15.9          14.5          0.5           0 \r\n 1981          57            15.4          10           -1             0 \r\n 1981          58            8.4           18.5          4             0.51 \r\n 1981          59            16.8          13            1.5           0 \r\n 1981          60            13.6          11           -2             0 \r\n 1981          61            16.1          7.5          -6             0 \r\n 1981          62            8.2           5.5          -8             0 \r\n 1981          63            1.8           4.5           0             12.45 \r\n 1981          64            16.7          5.5          -3.5           2.79 \r\n 1981          65            16            4.5          -5.5           0 \r\n 1981          66            17.4          3.5          -9             0 \r\n 1981          67            17.4          7            -7.5           0 \r\n 1981          68            13.3          7.5          -4             0 \r\n 1981          69            17.8          11           -5.5           0 \r\n 1981          70            18.4          10.5         -5.5           0 \r\n 1981          71            18.3          17           -1             0 \r\n 1981          72            19.2          15           -3             0 \r\n 1981          73            19.4          15           -6.5           0 \r\n 1981          74            18.8          17            2             0 \r\n 1981          75            20.3          13.5         -3.5           0 \r\n 1981          76            11            12           -0.5           0 \r\n 1981          77            21            8            -6.5           0 \r\n 1981          78            20.9          8.5          -5             0 \r\n 1981          79            16.4          10           -6.5           0 \r\n 1981          80            2.8           8             0.5           0 \r\n 1981          81            18.6          12.5          0.5           3.81 \r\n 1981          82            21.6          15           -3.5           0.25 \r\n 1981          83            19.8          16.5          0             0 \r\n 1981          84            15.5          19            4             2.54 \r\n 1981          85            7.8           18.5          4.5           0 \r\n 1981          86            20.1          20            3             0 \r\n 1981          87            21.4          23            11.5          0 \r\n 1981          88            13.4          21.5          10.5          3.81 \r\n 1981          89            22.5          19.5          6.5           1.78 \r\n 1981          90            23.6          20.5          9.5           0 \r\n 1981          91            21.7          20.5          6             0 \r\n 1981          92            20.7          28.5          6             0 \r\n 1981          93            2.5           27.5          13            0 \r\n 1981          94            18            22            3.5           19 \r\n 1981          95            21.3          10.5         -0.5           0 \r\n 1981          96            21.7          17.5         -2             0 \r\n 1981          97            21.2          22            7.5           0 \r\n 1981          98            5.1           21            8             2 \r\n 1981          99            23.4          20            0.5           2 \r\n 1981          100           5.1           27            9.5           9 \r\n 1981          101           3.7           26.5          12            9 \r\n 1981          102           5.2           22.5          10.5          24 \r\n 1981          103           4.2           23            13            3 \r\n 1981          104           26.4          18            2             25 \r\n 1981          105           26.8          15.5         -0.5           0 \r\n 1981          106           13.1          19.5          6.5           1 \r\n 1981          107           22.4          24.5          12            0 \r\n 1981          108           14.9          23            7             0 \r\n 1981          109           3.4           19            10.5          3 \r\n 1981          110           12.5          13            4.5           0 \r\n 1981          111           16.7          11.5          2             0 \r\n 1981          112           2.8           17.5          10            3 \r\n 1981          113           27.7          17.5          6.5           5 \r\n 1981          114           28.5          19            3             0 \r\n 1981          115           24.6          28            6             0 \r\n 1981          116           23.5          29.5          15.5          0 \r\n 1981          117           21.8          30            15.5          0 \r\n 1981          118           18.3          27            13            0 \r\n 1981          119           23.7          25            7             4 \r\n 1981          120           28.7          24            8.5           0 \r\n 1981          121           26.7          20.5          5             0 \r\n 1981          122           26.2          21.5          4             0 \r\n 1981          123           15.6          25.5          12            0 \r\n 1981          124           12            24            14            4 \r\n 1981          125           18            20.5          9.5           3 \r\n 1981          126           26.6          18.5          7             0 \r\n 1981          127           25.4          17            1.5           0 \r\n 1981          128           9.7           15            8             0 \r\n 1981          129           14.7          14.5          6.5           1 \r\n 1981          130           10.9          15            1.5           4 \r\n 1981          131           30.2          18.5          0             0 \r\n 1981          132           12.4          18            4             0 \r\n 1981          133           11.4          15            6.5           4 \r\n 1981          134           18.8          18            7             23 \r\n 1981          135           28.5          22.5          5.5           0 \r\n 1981          136           20.2          23            8             0 \r\n 1981          137           14.2          20            11            3 \r\n 1981          138           6.8           14.5          6.5           9 \r\n 1981          139           26.4          20            5             5 \r\n 1981          140           31            23.5          3             0 \r\n 1981          141           27.3          24            6             0 \r\n 1981          142           18.9          24            13            2 \r\n 1981          143           6.7           24.5          14            11 \r\n 1981          144           29.4          22.5          9.5           7 \r\n 1981          145           17            24.5          10.5          0 \r\n 1981          146           17.5          26            12            0 \r\n 1981          147           28.6          27            13            0 \r\n 1981          148           18.1          27.5          14.5          0 \r\n 1981          149           21.2          28            16            0 \r\n 1981          150           21.8          27            13.5          0 \r\n 1981          151           31            27            10            0 \r\n 1981          152           29.5          27.5          11.5          0 \r\n 1981          153           10.6          27            16.5          0 \r\n 1981          154           28.2          25.5          14.5          0 \r\n 1981          155           24.3          28            12            0 \r\n 1981          156           23            31.5          17            0 \r\n 1981          157           28.7          30.5          16            0 \r\n 1981          158           22            31            14            0 \r\n 1981          159           15.8          31            17            63 \r\n 1981          160           20.9          29            14.5          0 \r\n 1981          161           27.2          28            15            2 \r\n 1981          162           12            27            16.5          0 \r\n 1981          163           10            29.5          18            12 \r\n 1981          164           20.9          31            20.5          0 \r\n 1981          165           11.5          30.5          23            0 \r\n 1981          166           5             28            15            39 \r\n 1981          167           30.4          24            12.5          19 \r\n 1981          168           31.5          26            12            0 \r\n 1981          169           30            26.5          16            0 \r\n 1981          170           27.5          26.5          12.5          0 \r\n 1981          171           27.5          26.5          17.5          0 \r\n 1981          172           11.4          27.5          15.5          4 \r\n 1981          173           28.9          27            13.5          17 \r\n 1981          174           29            29.5          12.5          0 \r\n 1981          175           14            30            17            17 \r\n 1981          176           30.6          28.5          14            25 \r\n 1981          177           31.2          28.5          13.5          0 \r\n 1981          178           17.4          27.5          16.5          0 \r\n 1981          179           27.2          31            20            0 \r\n 1981          180           15.3          30.5          20            0 \r\n 1981          181           23.6          28.5          18            23 \r\n 1981          182           29.8          27.5          17            0 \r\n 1981          183           25.7          28.5          18            0 \r\n 1981          184           16.7          28.5          19            0 \r\n 1981          185           17.5          27            19.5          128 \r\n 1981          186           29.1          29.5          18.5          3 \r\n 1981          187           29.9          30.5          19            0 \r\n 1981          188           26.1          31            18            0 \r\n 1981          189           23.3          31.5          21.5          0 \r\n 1981          190           17.7          30.5          19.5          6 \r\n 1981          191           19            32.5          18.5          0 \r\n 1981          192           14.9          34            22            0 \r\n 1981          193           18.7          35            23.5          0 \r\n 1981          194           20.7          35.5          24.5          0 \r\n 1981          195           16.3          35            23            0 \r\n 1981          196           12.3          33            19.5          29 \r\n 1981          197           17.5          30            21            2 \r\n 1981          198           13.8          29.5          19.5          0 \r\n 1981          199           12.3          28            19            6 \r\n 1981          200           7.4           28            20            12 \r\n 1981          201           22            29            19            7 \r\n 1981          202           25.7          29            17            0 \r\n 1981          203           23.4          28            16.5          0 \r\n 1981          204           15.1          28            18            9 \r\n 1981          205           18.1          27.5          18            0 \r\n 1981          206           7.7           26.5          19.5          16 \r\n 1981          207           14.1          24            17.5          9 \r\n 1981          208           11.4          20            14.5          15 \r\n 1981          209           20.6          20            11.5          12 \r\n 1981          210           27.3          22.5          10            0 \r\n 1981          211           27.1          27            15            0 \r\n 1981          212           18.2          28.5          17            0 \r\n 1981          213           13.2          30.5          18.5          0 \r\n 1981          214           15.4          29            19.5          8 \r\n 1981          215           27.5          29            19            9 \r\n 1981          216           18.1          32            18.5          0 \r\n 1981          217           12.8          30.5          21            0 \r\n 1981          218           21.4          30            18            3 \r\n 1981          219           25.6          28.5          16            0 \r\n 1981          220           24.3          28            14.5          0 \r\n 1981          221           23.4          28            15            13 \r\n 1981          222           25.7          26.5          15            0 \r\n 1981          223           26.5          27            13            0 \r\n 1981          224           26.2          28.5          16.5          0 \r\n 1981          225           11.7          27.5          15.5          0 \r\n 1981          226           13.8          31.5          19.5          11 \r\n 1981          227           21.1          31            19.5          0 \r\n 1981          228           25.3          28            15            0 \r\n 1981          229           25.9          23.5          11.5          0 \r\n 1981          230           24.9          23            9             0 \r\n 1981          231           25.8          24            11            0 \r\n 1981          232           25.6          26            9.5           0 \r\n 1981          233           23.5          27            10            0 \r\n 1981          234           24.5          28            12            0 \r\n 1981          235           22.9          28.5          14            0 \r\n 1981          236           22.1          28.5          17            12 \r\n 1981          237           15.4          28            17            0 \r\n 1981          238           6.5           26.5          17.5          8 \r\n 1981          239           13.9          26            16            6 \r\n 1981          240           16.5          26            16.5          0 \r\n 1981          241           19.6          27.5          15            3 \r\n 1981          242           12            28            18            0 \r\n 1981          243           9             29.5          20            14 \r\n 1981          244           19.1          27            13            0 \r\n 1981          245           25.1          23.5          11.5          0 \r\n 1981          246           24.6          26            9.5           0 \r\n 1981          247           23.3          26.5          14.5          5 \r\n 1981          248           22.9          26.5          13            0 \r\n 1981          249           19.7          27.5          12.5          0 \r\n 1981          250           15.6          25            15            17 \r\n 1981          251           23.2          25            10.5          10 \r\n 1981          252           22            26.5          10.5          0 \r\n 1981          253           22.9          29.5          14.5          0 \r\n 1981          254           19.5          30            16.5          0 \r\n 1981          255           22.3          29            14            0 \r\n 1981          256           21.9          30            12            0 \r\n 1981          257           14.7          28            14.5          0 \r\n 1981          258           21            25            11            0 \r\n 1981          259           18.2          20.5          6.5           0 \r\n 1981          260           21.2          17            3             0 \r\n 1981          261           20.9          20.5          2.5           0 \r\n 1981          262           20.8          26.5          8             0 \r\n 1981          263           20            28.5          9.5           0 \r\n 1981          264           19            27            13            0 \r\n 1981          265           17.7          23.5          11            0 \r\n 1981          266           10.8          22.5          8             0 \r\n 1981          267           3.4           22            14            0 \r\n 1981          268           4.9           22.5          14            20 \r\n 1981          269           12.4          25.5          17            6 \r\n 1981          270           18.3          23.5          6.5           0 \r\n 1981          271           17.6          21.5          4.5           0 \r\n 1981          272           14            31            12            0 \r\n 1981          273           12.9          31.5          17.5          0 \r\n 1981          274           19.9          26.5          7.5           0 \r\n 1981          275           20            17.5         -0.5           0 \r\n 1981          276           8.1           16            3             0 \r\n 1981          277           18.1          23            8             6 \r\n 1981          278           5.3           26.5          11            0 \r\n 1981          279           18.4          24            7             0 \r\n 1981          280           18.1          17            0.5           0 \r\n 1981          281           17.4          18            0.5           0 \r\n 1981          282           12.8          18            8             0 \r\n 1981          283           16.9          17            7.5           8 \r\n 1981          284           15.7          18.5          4             0 \r\n 1981          285           12.2          18.5          10            0 \r\n 1981          286           3.3           18.5          13            0 \r\n 1981          287           4.6           20            14.5          30 \r\n 1981          288           13.9          19            8.5           1 \r\n 1981          289           13.1          18.5          4.5           0 \r\n 1981          290           2.7           21            10.5          3 \r\n 1981          291           14.5          17            3             0 \r\n 1981          292           15.2          17           -2.5           0 \r\n 1981          293           14.3          20.5          7.5           0 \r\n 1981          294           14            17.5          5.5           0 \r\n 1981          295           14.5          10.5         -2             0 \r\n 1981          296           14.2          7            -6.5           0 \r\n 1981          297           4.3           5.5          -5.5           0 \r\n 1981          298           2.5           11            1.5           0 \r\n 1981          299           9.9           12.5         -5             0 \r\n 1981          300           12.5          19           -0.5           0 \r\n 1981          301           6             19            4             0 \r\n 1981          302           10.8          20            5.5           0 \r\n 1981          303           10.5          21            9             0 \r\n 1981          304           2.9           19            10            8 \r\n 1981          305           1.4           15.5          9.5           18 \r\n 1981          306           4.2           16            11.5          22 \r\n 1981          307           5.2           18            11.5          28 \r\n 1981          308           8.7           15.5          9             3 \r\n 1981          309           9             15            6.5           3 \r\n 1981          310           12.9          16            1             0 \r\n 1981          311           12.8          17.5         -1.5           0 \r\n 1981          312           4.9           14            3             0 \r\n 1981          313           12.9          9            -4.5           0 \r\n 1981          314           12.1          13           -4.5           0 \r\n 1981          315           11.7          13.5         -1.5           0 \r\n 1981          316           11.3          15           -1.5           0 \r\n 1981          317           11.4          17.5         -0.5           0 \r\n 1981          318           8.3           18            4             0 \r\n 1981          319           1             15            7             0 \r\n 1981          320           10            14.5          1             0 \r\n 1981          321           10.6          16.5         -0.5           0 \r\n 1981          322           7.9           17.5          2.5           0 \r\n 1981          323           3.6           15           -0.5           2 \r\n 1981          324           9.9           1            -6.5           6 \r\n 1981          325           9.8          -1            -8.5           0 \r\n 1981          326           9.8           6.5          -8             0 \r\n 1981          327           3.6           8             0             0 \r\n 1981          328           8.3           6             0.5           0 \r\n 1981          329           4.5           8             0             0 \r\n 1981          330           3.7           8            -1             2 \r\n 1981          331           8.7           3            -4             0 \r\n 1981          332           8.7           2            -4             0 \r\n 1981          333           9.1           5.5          -7.5           0 \r\n 1981          334           4             4            -1             9 \r\n 1981          335           3.5           5.5          -0.5           15.75 \r\n 1981          336           7.5           4.5          -6.5           0 \r\n 1981          337           5.7           4.5          -3.5           0 \r\n 1981          338           8.6           5            -3.5           0.51 \r\n 1981          339           4             5.5          -6.5           0 \r\n 1981          340           6.5           10           -2             0 \r\n 1981          341           5.9           13.5          0.5           0 \r\n 1981          342           9             7.5          -3             0 \r\n 1981          343           9.3           3.5          -6             0 \r\n 1981          344           5.6           0.5          -9             0 \r\n 1981          345           8.6           3            -4             0 \r\n 1981          346           3.4           3.5          -2             0 \r\n 1981          347           2.4           3            -0.5           0 \r\n 1981          348           8.3           2.5          -6             0 \r\n 1981          349           5.2          -4.5          -9.5           0 \r\n 1981          350           1.9          -6.5          -11.5          0.76 \r\n 1981          351           7.5          -8.5          -20.5          5.59 \r\n 1981          352           9            -12           -23            0 \r\n 1981          353           9.6          -10           -24.5          0 \r\n 1981          354           4.7          -2.5          -22            0 \r\n 1981          355           2.8           1.5          -3.5           3.05 \r\n 1981          356           3             1.5          -3             0 \r\n 1981          357           9             1.5          -11.5          0 \r\n 1981          358           9.3           2.5          -10.5          0 \r\n 1981          359           5.7           3.5          -8.5           0 \r\n 1981          360           7.9           3            -5             0 \r\n 1981          361           4.5           0            -6             0 \r\n 1981          362           7.3          -2.5          -12            4.57 \r\n 1981          363           9.5          -4.5          -21            0 \r\n 1981          364           5.5           2.5          -17.5          0 \r\n 1981          365           3.8           3            -11            0 \r\n 1982          1             3.1          -6.5          -18            2.29 \r\n 1982          2             1.6           0.5          -11.5          9.65 \r\n 1982          3             2.9          -1            -13.5          9.4 \r\n 1982          4             8.7          -7            -14            8.64 \r\n 1982          5             8.8           1            -15            0 \r\n 1982          6             8.2          -7            -17            0 \r\n 1982          7             9.4          -13           -23            0 \r\n 1982          8             4.8          -5.5          -19            0 \r\n 1982          9             9.2          -8            -23.5          1.02 \r\n 1982          10            10.2         -17           -30.5          0.25 \r\n 1982          11            8.5          -12.5         -25            0 \r\n 1982          12            2.5          -10.5         -16            0.76 \r\n 1982          13            6.9          -12           -22.5          3.3 \r\n 1982          14            9            -13.5         -24.5          0 \r\n 1982          15            5.9          -3.5          -18.5          1.02 \r\n 1982          16            11.1         -12           -27            0 \r\n 1982          17            7.7          -9            -26            0 \r\n 1982          18            6.2          -1            -12            0 \r\n 1982          19            8.2           1            -13            0 \r\n 1982          20            5.2          -2.5          -9             0 \r\n 1982          21            8.4          -3            -8             0 \r\n 1982          22            5.6           1.5          -6.5           3.56 \r\n 1982          23            9.8           0.5          -19            1.02 \r\n 1982          24            9.5          -9            -20.5          0 \r\n 1982          25            9.4          -8.5          -18            1.27 \r\n 1982          26            10.6         -5.5          -22.5          0 \r\n 1982          27            10.4          5.5          -9             0 \r\n 1982          28            12.3          3            -10            0 \r\n 1982          29            3.2           0.5          -8             0 \r\n 1982          30            5.4           0.5          -9             8.13 \r\n 1982          31            11           -7.5          -18            0 \r\n 1982          32            5.1          -4.5          -20.5          0 \r\n 1982          33            4.4          -3.5          -12.5          0 \r\n 1982          34            5            -7            -21.5          1.27 \r\n 1982          35            7.3          -15           -25            0 \r\n 1982          36            5.3          -13.5         -20            4.06 \r\n 1982          37            12.3         -10.5         -26            0 \r\n 1982          38            12.6         -3.5          -17.5          0 \r\n 1982          39            5.7          -6            -17.5          0 \r\n 1982          40            13.4         -9.5          -21            0 \r\n 1982          41            5.9          -8            -24            0 \r\n 1982          42            12.4         -2            -17.5          0 \r\n 1982          43            11.9         -0.5          -10            0.76 \r\n 1982          44            10.6          2            -13.5          0 \r\n 1982          45            10.9          5.5          -6             0 \r\n 1982          46            3.8           6             0.5           0 \r\n 1982          47            2.1           4.5           0             7.62 \r\n 1982          48            7.1           2            -1             3.05 \r\n 1982          49            7             2.5          -1             3.3 \r\n 1982          50            10.1          9.5          -2             0.25 \r\n 1982          51            13.6          11.5          0.5           0 \r\n 1982          52            15.2          12           -2             0 \r\n 1982          53            15.2          18.5         -0.5           0 \r\n 1982          54            9             14.5         -1             0 \r\n 1982          55            16.2          3.5          -3             0.25 \r\n 1982          56            13.5          0.5          -7.5           0 \r\n 1982          57            17.5          2.5          -9             0 \r\n 1982          58            17.8          6            -9.5           0 \r\n 1982          59            16.3          10.5         -4             0 \r\n 1982          60            13.6          13           -3             0 \r\n 1982          61            1.7           9.5          -3             0 \r\n 1982          62            8.7          -1            -7.5           5.08 \r\n 1982          63            5.1          -2            -8             13.97 \r\n 1982          64            13.8         -3            -11.5          0.25 \r\n 1982          65            16.9         -1            -18.5          0 \r\n 1982          66            17.5         -3.5          -18            0 \r\n 1982          67            12.3          0.5          -13            0.76 \r\n 1982          68            6.1          -3            -17.5          0.25 \r\n 1982          69            14.6          11.5         -11            0 \r\n 1982          70            18.1          10.5         -2             0 \r\n 1982          71            3.9           16           -1.5           0 \r\n 1982          72            18.9          15           -0.5           5.33 \r\n 1982          73            5.3           11.5         -2.5           0 \r\n 1982          74            4.2           7.5           0.5           4.06 \r\n 1982          75            17.2          10            3.5           14.99 \r\n 1982          76            17.3          8.5           1.5           0 \r\n 1982          77            9.4           7             2             0 \r\n 1982          78            3.6           6.5           2             24.64 \r\n 1982          79            17.5          11            1.5           1.52 \r\n 1982          80            19.5          8            -2.5           0 \r\n 1982          81            21.5          9.5          -4             0 \r\n 1982          82            18            15.5         -3             0 \r\n 1982          83            6.3           12.5         -1             1.27 \r\n 1982          84            15.5          7            -2.5           0.25 \r\n 1982          85            17.1          7            -6.5           0 \r\n 1982          86            23.7          6.5          -7.5           0 \r\n 1982          87            23.2          10.5         -4.5           0 \r\n 1982          88            17.4          15.5          0             0 \r\n 1982          89            22.9          18            6             15.75 \r\n 1982          90            24.3          18            3.5           0 \r\n 1982          91            20.5          21.5          1             0 \r\n 1982          92            3.7           24            8             0 \r\n 1982          93            22.1          15.5         -7.5           13 \r\n 1982          94            14.2          5            -5.5           0 \r\n 1982          95            9.3           3.5          -6.5           11 \r\n 1982          96            21.4          1            -12.5          12 \r\n 1982          97            10.2          1            -6             0 \r\n 1982          98            8.8           0.5          -4             3 \r\n 1982          99            21.3          3.5          -5.5           1 \r\n 1982          100           23.3          8.5          -2.5           0 \r\n 1982          101           23.8          15.5         -2.5           0 \r\n 1982          102           16.7          21            6             0 \r\n 1982          103           24.4          20.5          6             0 \r\n 1982          104           22            22            5             0 \r\n 1982          105           12.5          22.5          11            0 \r\n 1982          106           3.2           20.5          10            25 \r\n 1982          107           23.6          15            4             22 \r\n 1982          108           24.2          18.5          2.5           0 \r\n 1982          109           10            17            7             0 \r\n 1982          110           26.8          12            1.5           1 \r\n 1982          111           23            14           -2.5           0 \r\n 1982          112           26            15            0             1 \r\n 1982          113           27.9          19            1.5           0 \r\n 1982          114           23.6          20.5          6             0 \r\n 1982          115           21.5          21            8.5           0 \r\n 1982          116           22.6          20            8.5           0 \r\n 1982          117           17.9          17.5          3.5           0 \r\n 1982          118           6.2           14            5.5           0 \r\n 1982          119           21            17.5          6.5           2 \r\n 1982          120           15.3          19.5          4.5           0 \r\n 1982          121           20.9          22            7             0 \r\n 1982          122           25            23.5          6.5           0 \r\n 1982          123           22.8          26.5          8             0 \r\n 1982          124           13.2          29            14.5          0 \r\n 1982          125           8.2           27.5          13.5          21 \r\n 1982          126           9.2           18            7             38 \r\n 1982          127           22.4          22            5.5           13 \r\n 1982          128           16.9          23.5          9             0 \r\n 1982          129           26            26.5          12            0 \r\n 1982          130           26.3          27            14.5          0 \r\n 1982          131           8.8           26.5          15.5          0 \r\n 1982          132           8.8           25            15.5          3 \r\n 1982          133           4             22            16            3 \r\n 1982          134           4.5           21            14            13 \r\n 1982          135           6.9           23            12            23 \r\n 1982          136           11.5          25.5          13.5          5 \r\n 1982          137           10.1          25            15            10 \r\n 1982          138           11.5          26            13            7 \r\n 1982          139           16.3          27            14.5          0 \r\n 1982          140           7.9           27            14.5          0 \r\n 1982          141           16.5          22            8             17 \r\n 1982          142           12.9          15.5          9.5           6 \r\n 1982          143           20.1          17            10.5          1 \r\n 1982          144           19.8          20.5          11.5          0 \r\n 1982          145           6.3           19.5          13            6 \r\n 1982          146           11.2          21.5          14            15 \r\n 1982          147           27.3          24.5          11.5          1 \r\n 1982          148           14.1          24.5          12.5          0 \r\n 1982          149           10.3          24.5          15.5          26 \r\n 1982          150           11.3          23.5          13            5 \r\n 1982          151           10.4          21.5          12.5          4 \r\n 1982          152           30.8          21.5          5.5           0 \r\n 1982          153           15.4          21            9             0 \r\n 1982          154           17.9          19            10.5          4 \r\n 1982          155           26.9          20.5          10            0 \r\n 1982          156           24.7          22.5          8             0 \r\n 1982          157           19.6          22.5          12.5          0 \r\n 1982          158           24.2          26            14            3 \r\n 1982          159           17.1          25.5          13            0 \r\n 1982          160           9.9           22            15            28 \r\n 1982          161           30.2          25.5          7.5           0 \r\n 1982          162           13.8          24.5          11.5          0 \r\n 1982          163           27.3          25            9             0 \r\n 1982          164           31.1          26            10.5          3 \r\n 1982          165           18.3          25.5          14            0 \r\n 1982          166           9.4           23            15.5          10 \r\n 1982          167           31            23.5          10            19 \r\n 1982          168           25.6          24.5          12            0 \r\n 1982          169           15.3          23.5          15            7 \r\n 1982          170           29.5          23            11.5          3 \r\n 1982          171           30.4          26.5          13            0 \r\n 1982          172           29.7          27            9.5           0 \r\n 1982          173           30.3          26            12            0 \r\n 1982          174           30.3          27            10.5          0 \r\n 1982          175           25.9          29.5          14            0 \r\n 1982          176           9.7           28.5          16.5          0 \r\n 1982          177           21.8          26            16.5          15 \r\n 1982          178           7.7           27            18.5          0 \r\n 1982          179           13.2          30            18            21 \r\n 1982          180           14.4          31            19            0 \r\n 1982          181           27            26.5          14.5          0 \r\n 1982          182           20.5          22            14.5          14 \r\n 1982          183           9             28.5          16            16 \r\n 1982          184           17.7          32.5          19            60 \r\n 1982          185           10.7          33.5          20            0 \r\n 1982          186           17.1          32            21            0 \r\n 1982          187           12.5          31.5          19            13 \r\n 1982          188           28.7          30            16            14 \r\n 1982          189           28            30            16.5          0 \r\n 1982          190           20            31            18            0 \r\n 1982          191           17.7          28            17.5          0 \r\n 1982          192           29.1          26.5          16            15 \r\n 1982          193           19.2          31            16.5          0 \r\n 1982          194           17.5          31.5          16            0 \r\n 1982          195           16.6          29.5          18            24 \r\n 1982          196           10.4          30.5          19.5          0 \r\n 1982          197           13.1          31.5          17.5          66 \r\n 1982          198           9.5           33            22            0 \r\n 1982          199           9.2           32            22.5          0 \r\n 1982          200           15.2          31            19.5          16 \r\n 1982          201           12.1          32.5          20.5          3 \r\n 1982          202           23.4          32            19            11 \r\n 1982          203           26.6          30            18            0 \r\n 1982          204           26.4          29.5          17.5          0 \r\n 1982          205           27.3          29.5          16            0 \r\n 1982          206           26.5          31            17            0 \r\n 1982          207           14.9          32.5          18.5          0 \r\n 1982          208           14.2          31            20            0 \r\n 1982          209           27.6          28.5          17.5          0 \r\n 1982          210           20.5          28            15.5          0 \r\n 1982          211           26.2          27.5          14.5          0 \r\n 1982          212           27            29.5          13.5          0 \r\n 1982          213           26.1          33.5          17.5          0 \r\n 1982          214           25.7          34            19            0 \r\n 1982          215           18.3          35.5          22            0 \r\n 1982          216           19.1          34.5          23.5          0 \r\n 1982          217           7.4           31.5          20.5          47 \r\n 1982          218           12.8          27            21            0 \r\n 1982          219           16.3          29.5          21            0 \r\n 1982          220           27.3          29            19            0 \r\n 1982          221           26.9          26.5          13.5          0 \r\n 1982          222           13.9          21            11.5          18 \r\n 1982          223           27.6          22.5          9             0 \r\n 1982          224           18.7          22            11            0 \r\n 1982          225           24.1          25            16            0 \r\n 1982          226           19.7          25            18            0 \r\n 1982          227           14.9          23.5          18.5          19 \r\n 1982          228           18.9          27.5          19.5          17 \r\n 1982          229           19.8          29.5          17            0 \r\n 1982          230           20.9          29.5          17.5          0 \r\n 1982          231           21.4          30.5          19.5          0 \r\n 1982          232           21.8          29            20            0 \r\n 1982          233           24.8          28.5          14            0 \r\n 1982          234           17.9          30            17            0 \r\n 1982          235           21.8          28.5          17            0 \r\n 1982          236           9.1           27            15.5          0 \r\n 1982          237           23.6          27.5          12            15 \r\n 1982          238           10.2          24.5          14            0 \r\n 1982          239           17.3          22.5          15            0 \r\n 1982          240           23            23.5          10.5          0 \r\n 1982          241           13.3          24.5          14            0 \r\n 1982          242           13.3          25            17            22 \r\n 1982          243           10.3          27            19            0 \r\n 1982          244           14.5          30            19.5          7 \r\n 1982          245           24.2          27.5          16.5          0 \r\n 1982          246           24.6          27.5          11            0 \r\n 1982          247           24            29            14.5          0 \r\n 1982          248           16.6          27.5          17            0 \r\n 1982          249           4.6           24            17.5          14 \r\n 1982          250           16.5          21.5          15.5          10 \r\n 1982          251           17.8          25            14            0 \r\n 1982          252           18.5          28            17            0 \r\n 1982          253           12.4          29            19            0 \r\n 1982          254           18.3          29.5          19            0 \r\n 1982          255           13.4          29.5          19.5          0 \r\n 1982          256           3.6           28            17.5          11 \r\n 1982          257           11.7          23            14.5          16 \r\n 1982          258           16.9          20            12.5          9 \r\n 1982          259           16.4          18.5          8.5           0 \r\n 1982          260           3.8           18            12.5          16 \r\n 1982          261           20.9          20            7.5           27 \r\n 1982          262           14.8          21            8             0 \r\n 1982          263           19.2          18.5          6             0 \r\n 1982          264           20.5          16.5          2.5           0 \r\n 1982          265           20.1          20            3             0 \r\n 1982          266           11.7          22.5          9.5           0 \r\n 1982          267           16.9          20            10            0 \r\n 1982          268           18.4          18            7             0 \r\n 1982          269           18.6          16.5          4.5           0 \r\n 1982          270           17.4          19.5          6             0 \r\n 1982          271           15.4          26            13            0 \r\n 1982          272           9.1           26.5          17            0 \r\n 1982          273           7.6           27            17.5          0 \r\n 1982          274           18.8          28            16            0 \r\n 1982          275           5.5           25            14.5          0 \r\n 1982          276           19.3          24.5          8             0 \r\n 1982          277           17.3          25            7.5           0 \r\n 1982          278           9.7           26.5          13            5 \r\n 1982          279           3             24.5          11            4 \r\n 1982          280           18.5          23.5          4.5           8 \r\n 1982          281           5.3           23.5          9             0 \r\n 1982          282           17            21            11.5          61 \r\n 1982          283           9.2           15            8.5           0 \r\n 1982          284           16.7          13            7             0 \r\n 1982          285           16.2          15            2.5           0 \r\n 1982          286           11.9          12.5          6             0 \r\n 1982          287           16.1          20            2.5           0 \r\n 1982          288           15.9          19.5          6             0 \r\n 1982          289           15.9          17            1.5           0 \r\n 1982          290           9.5           19.5          4             0 \r\n 1982          291           7.9           21.5          8.5           0 \r\n 1982          292           3.9           19.5          6.5           3 \r\n 1982          293           15.4          11.5          0             4 \r\n 1982          294           14.9          10           -3             0 \r\n 1982          295           14.5          13           -3.5           0 \r\n 1982          296           14.3          15           -1             0 \r\n 1982          297           13.9          16.5          0             0 \r\n 1982          298           13.6          18.5          0.5           0 \r\n 1982          299           10.4          18.5          1             0 \r\n 1982          300           4.8           17            8             0 \r\n 1982          301           2.8           16            9.5           11 \r\n 1982          302           12.7          18            5             19 \r\n 1982          303           10.8          19            7.5           0 \r\n 1982          304           6.7           21            8.5           0 \r\n 1982          305           3.5           19            11            3 \r\n 1982          306           11.3          14.5          6.5           0 \r\n 1982          307           11.8          9.5          -1             0 \r\n 1982          308           12.9          2            -4.5           0 \r\n 1982          309           13.4          2.5          -4             0 \r\n 1982          310           12.9          12.5         -4             0 \r\n 1982          311           3.6           16.5          2             0 \r\n 1982          312           2.8           14.5          5             0 \r\n 1982          313           6.5           15            6             5 \r\n 1982          314           3.9           16            9             0 \r\n 1982          315           2.5           17            5             21 \r\n 1982          316           11.8          16.5         -6.5           12 \r\n 1982          317           7.3          -1            -11.5          0 \r\n 1982          318           11           -0.5          -6.5           0 \r\n 1982          319           11.2          4            -9             0 \r\n 1982          320           10.6          9            -3.5           0 \r\n 1982          321           10.6          12           -5             0 \r\n 1982          322           5.7           11.5         -1             0 \r\n 1982          323           3.3           15.5          8             3 \r\n 1982          324           6.2           17            8.5           0 \r\n 1982          325           10            13            0             0 \r\n 1982          326           2.4           8.5           1             0 \r\n 1982          327           5.4           4.5          -7             3 \r\n 1982          328           10.2          0.5          -11.5          0 \r\n 1982          329           5.8           3            -6.5           0 \r\n 1982          330           3.3           2.5          -5             0 \r\n 1982          331           4.9           2            -7.5           0 \r\n 1982          332           1.1           3            -1             18 \r\n 1982          333           4.6           5             0.5           4 \r\n 1982          334           1.1           11            1             0 \r\n 1982          335           2.1           16            5             0 \r\n 1982          336           2.3           16.5          10.5          3.81 \r\n 1982          337           2.9           13            2             0 \r\n 1982          338           3.9           4.5          -1.5           0 \r\n 1982          339           1.1           4.5           0.5           24.13 \r\n 1982          340           9.1           5.5          -4             2.03 \r\n 1982          341           3.8           3            -4             0 \r\n 1982          342           7.6          -2            -8             0.51 \r\n 1982          343           9.1          -4.5          -14.5          0 \r\n 1982          344           6.6           3            -7.5           0 \r\n 1982          345           10           -0.5          -14.5          0 \r\n 1982          346           8.5          -3.5          -15            0 \r\n 1982          347           8.7           5            -8             0 \r\n 1982          348           5.9           4.5          -1.5           0 \r\n 1982          349           5.8           2            -3             0 \r\n 1982          350           8             0            -4             0 \r\n 1982          351           5.8           5            -4.5           0 \r\n 1982          352           8.3           10            0             0 \r\n 1982          353           8.8           6            -1.5           0 \r\n 1982          354           8.9           2            -5             0 \r\n 1982          355           8.4           7            -5.5           0 \r\n 1982          356           2.2           9            -2             0 \r\n 1982          357           1.1           9             2.5           0 \r\n 1982          358           2.1           13            4.5           18.8 \r\n 1982          359           5.3           13           -2             0 \r\n 1982          360           8.9           1            -7             0 \r\n 1982          361           2.5           1.5          -4.5           0 \r\n 1982          362           8.3           4.5          -9.5           23.11 \r\n 1982          363           9.2          -4.5          -13            0 \r\n 1982          364           4.7          -1            -12            0 \r\n 1982          365           8.7           1.5          -6.5           0 \r\n 1983          1             8.5           2            -5.5           0 \r\n 1983          2             7.4           0            -7             0 \r\n 1983          3             6.9           0            -11            0 \r\n 1983          4             3             0            -4             0 \r\n 1983          5             4.9          -0.5          -3             0 \r\n 1983          6             7.6           8.5          -2             0 \r\n 1983          7             5.7           4            -3.5           0 \r\n 1983          8             8.9           3.5          -4             0 \r\n 1983          9             5.3           6.5          -1.5           0 \r\n 1983          10            4.9           4            -1.5           2.29 \r\n 1983          11            8.3          -0.5          -8.5           1.52 \r\n 1983          12            9.2           2.5          -13.5          0 \r\n 1983          13            9.4           8.5          -5.5           0 \r\n 1983          14            8.4           6            -5.5           0 \r\n 1983          15            9.9          -1            -10.5          0 \r\n 1983          16            9.3           1.5          -11            0 \r\n 1983          17            10.4         -0.5          -9.5           0 \r\n 1983          18            9            -4            -14            0 \r\n 1983          19            6.5          -2            -8.5           0 \r\n 1983          20            8.5          -0.5          -6             0 \r\n 1983          21            7.8           2            -7.5           0 \r\n 1983          22            2.3           1            -3             0.76 \r\n 1983          23            6.7           1            -2.5           3.56 \r\n 1983          24            9.3           0.5          -3             0 \r\n 1983          25            3.6           0.5          -5             0 \r\n 1983          26            6.1          -2            -11            2.03 \r\n 1983          27            10.7         -2.5          -16.5          0 \r\n 1983          28            5.4           4.5          -5.5           0 \r\n 1983          29            2.3           3            -1             5.84 \r\n 1983          30            9             0            -4             4.32 \r\n 1983          31            8.6          -1.5          -7             0 \r\n 1983          32            4            -2            -7             0 \r\n 1983          33            4.4          -2            -6             8.64 \r\n 1983          34            9.4          -4.5          -13.5          5.33 \r\n 1983          35            11.3         -4.5          -19            0 \r\n 1983          36            4.5          -1.5          -10            0.76 \r\n 1983          37            11.6         -2            -13            3.05 \r\n 1983          38            9.4          -4            -22            0 \r\n 1983          39            7.1           1            -11.5          0 \r\n 1983          40            7.2           2.5          -2.5           0 \r\n 1983          41            5.5           3            -1             0 \r\n 1983          42            7.2           1.5          -1.5           0 \r\n 1983          43            10.6          2.5          -1.5           0.25 \r\n 1983          44            9.6           8            -1             0 \r\n 1983          45            6.5           11.5          0.5           0 \r\n 1983          46            2.5           9             0             0 \r\n 1983          47            11.6          6.5           0             5.59 \r\n 1983          48            8.3           5            -1.5           0 \r\n 1983          49            11.4          12.5         -2             0 \r\n 1983          50            11.7          16.5          2.5           0 \r\n 1983          51            8.6           15.5          2.5           0 \r\n 1983          52            8.5           13            1             0 \r\n 1983          53            7.4           9             2.5           0 \r\n 1983          54            10.8          8            -1.5           0 \r\n 1983          55            13.7          6            -1.5           2.03 \r\n 1983          56            17.1          3.5          -4.5           0 \r\n 1983          57            16.4          7            -3.5           0 \r\n 1983          58            5.5           10            0             0 \r\n 1983          59            17.4          14.5         -2.5           0 \r\n 1983          60            13.8          18.5          0.5           0 \r\n 1983          61            8.2           22.5          0.5           0 \r\n 1983          62            4.5           26            7.5           0 \r\n 1983          63            4.8           22.5          12.5          0 \r\n 1983          64            5.1           17.5          11            5.59 \r\n 1983          65            7.9           17            8.5           16.51 \r\n 1983          66            13.3          12            0             1.02 \r\n 1983          67            8.5           1            -5             0 \r\n 1983          68            8.9           0            -8             0 \r\n 1983          69            13.5         -1            -5.5           0 \r\n 1983          70            13.6         -0.5          -4             0 \r\n 1983          71            15            7.5          -4.5           0 \r\n 1983          72            16.7          16.5         -1             0 \r\n 1983          73            18.1          14           -2.5           0 \r\n 1983          74            7.8           14.5          4             0 \r\n 1983          75            14.3          12.5          2             0 \r\n 1983          76            6.1           10            1.5           0 \r\n 1983          77            13.8          8.5           2             0 \r\n 1983          78            5.6           5.5           0             0 \r\n 1983          79            4.8           1.5          -3             4.06 \r\n 1983          80            12.7         -0.5          -6.5           1.52 \r\n 1983          81            22.1          1.5          -9.5           0 \r\n 1983          82            20.3          4.5          -7             0 \r\n 1983          83            21.2          6            -5.5           0 \r\n 1983          84            8             5            -3.5           0 \r\n 1983          85            3.7           2.5          -1             0.51 \r\n 1983          86            5.4           1.5          -0.5           38.1 \r\n 1983          87            23.2          4.5          -1             0 \r\n 1983          88            12.8          6.5          -3             0 \r\n 1983          89            10.8          8.5           2             0 \r\n 1983          90            7.1           12            3.5           0.51 \r\n 1983          91            3.1           11            4             0 \r\n 1983          92            4.3           6.5           1             15 \r\n 1983          93            16.7          5.5           1             5 \r\n 1983          94            8.1           4            -1             0 \r\n 1983          95            4.2           4.5           1             7 \r\n 1983          96            10.2          5.5           1             0 \r\n 1983          97            21.3          8            -1             0 \r\n 1983          98            8.4           7.5           0.5           0 \r\n 1983          99            4             4.5           0.5           12 \r\n 1983          100           13            4.5           0             0 \r\n 1983          101           16.5          13.5          0             0 \r\n 1983          102           6.1           14            3.5           6 \r\n 1983          103           8.6           13.5          4.5           7 \r\n 1983          104           13.6          7            -1             6 \r\n 1983          105           26.4          8            -2.5           0 \r\n 1983          106           21.2          9            -1.5           0 \r\n 1983          107           6             4            -2.5           2 \r\n 1983          108           26.6          7            -6.5           3 \r\n 1983          109           26.8          10           -4             0 \r\n 1983          110           24.8          13.5         -1.5           0 \r\n 1983          111           19.5          17.5          5.5           0 \r\n 1983          112           17.2          18            8.5           0 \r\n 1983          113           18.5          18            7.5           0 \r\n 1983          114           28.1          17.5          2             0 \r\n 1983          115           28            21.5          2.5           0 \r\n 1983          116           20.3          25.5          12            0 \r\n 1983          117           20.1          24            7             0 \r\n 1983          118           23.5          20.5          7             2 \r\n 1983          119           9.1           19            9.5           0 \r\n 1983          120           24.9          20.5          7.5           0 \r\n 1983          121           8.9           20            8.5           0 \r\n 1983          122           13.2          16.5          7             19 \r\n 1983          123           13.7          16.5          6             3 \r\n 1983          124           25.8          18            7             0 \r\n 1983          125           20.7          21            4.5           0 \r\n 1983          126           23.9          26            12.5          0 \r\n 1983          127           4.8           24            8             10 \r\n 1983          128           29.1          16            2             2 \r\n 1983          129           28            18            4             0 \r\n 1983          130           24.7          22.5          8.5           0 \r\n 1983          131           10.4          22.5          10.5          0 \r\n 1983          132           17.1          23.5          14            4 \r\n 1983          133           8.9           22            11            4 \r\n 1983          134           7.1           16            6.5           4 \r\n 1983          135           30.1          16            3             6 \r\n 1983          136           20.4          20            5             0 \r\n 1983          137           18.7          18.5          8.5           0 \r\n 1983          138           8.6           16.5          11            7 \r\n 1983          139           15.4          17            10            19 \r\n 1983          140           9.4           19.5          8             0 \r\n 1983          141           9.3           19            11.5          6 \r\n 1983          142           22.5          22            12            7 \r\n 1983          143           31.1          22.5          6             0 \r\n 1983          144           20.6          26.5          9             0 \r\n 1983          145           30.8          24            11            9 \r\n 1983          146           30.4          21            7.5           0 \r\n 1983          147           12.1          25            11.5          7 \r\n 1983          148           13.3          27            14            0 \r\n 1983          149           28.5          23            9.5           9 \r\n 1983          150           22.2          18            6.5           0 \r\n 1983          151           17            19.5          7             2 \r\n 1983          152           19.8          22            7             2 \r\n 1983          153           17            22            12.5          9 \r\n 1983          154           21.4          25            14.5          14 \r\n 1983          155           24.5          26.5          9.5           0 \r\n 1983          156           13.1          23.5          11.5          0 \r\n 1983          157           30.8          21            6.5           3 \r\n 1983          158           27.6          25            9             0 \r\n 1983          159           29            28            10.5          0 \r\n 1983          160           17            30            15            0 \r\n 1983          161           27.1          29.5          16.5          0 \r\n 1983          162           22.5          28            17.5          0 \r\n 1983          163           21.1          29            18            5 \r\n 1983          164           21.3          30            19.5          0 \r\n 1983          165           24.2          28.5          16            20 \r\n 1983          166           25            27.5          12.5          0 \r\n 1983          167           17.4          27.5          14            4 \r\n 1983          168           22.6          28            16            3 \r\n 1983          169           13.3          24.5          16.5          5 \r\n 1983          170           21.6          26.5          16.5          8 \r\n 1983          171           14.5          30.5          19.5          0 \r\n 1983          172           13.8          32            21            0 \r\n 1983          173           22.9          32            20.5          0 \r\n 1983          174           19.1          33            20.5          0 \r\n 1983          175           19.6          32.5          20            0 \r\n 1983          176           19            32.5          19            0 \r\n 1983          177           15.9          31.5          20.5          2 \r\n 1983          178           21.8          29            20            6 \r\n 1983          179           14.8          28.5          19.5          10 \r\n 1983          180           19.3          26.5          19.5          14 \r\n 1983          181           19.3          31.5          18            18 \r\n 1983          182           24.2          32.5          22            0 \r\n 1983          183           19.6          32            22            0 \r\n 1983          184           23.6          32.5          21.5          0 \r\n 1983          185           27            30            17            0 \r\n 1983          186           28.1          27            15            0 \r\n 1983          187           28.7          28            14            0 \r\n 1983          188           29.8          28.5          14            0 \r\n 1983          189           29.9          30.5          15            0 \r\n 1983          190           29.6          32            15.5          0 \r\n 1983          191           29.6          32.5          16            0 \r\n 1983          192           28.1          33.5          18            0 \r\n 1983          193           29.2          32.5          18            0 \r\n 1983          194           25            34            20            0 \r\n 1983          195           19.8          33.5          20.5          0 \r\n 1983          196           21.7          32            20            0 \r\n 1983          197           21.8          32            21            0 \r\n 1983          198           23.5          32.5          20.5          0 \r\n 1983          199           23.3          35            22            0 \r\n 1983          200           26.7          37            24            0 \r\n 1983          201           29.1          37.5          23.5          0 \r\n 1983          202           29            38            23.5          0 \r\n 1983          203           28.3          39            23            0 \r\n 1983          204           20.9          37.5          23            0 \r\n 1983          205           14.3          32            19.5          0 \r\n 1983          206           25.1          31            16            0 \r\n 1983          207           25.8          32            17            0 \r\n 1983          208           23.5          36.5          19            0 \r\n 1983          209           24.9          39            23            0 \r\n 1983          210           10.5          36.5          21.5          0 \r\n 1983          211           25.8          34            19            2 \r\n 1983          212           27.8          34            19.5          0 \r\n 1983          213           27.5          33            17            0 \r\n 1983          214           24.7          37            20            0 \r\n 1983          215           23.5          38.5          22.5          0 \r\n 1983          216           21.9          36.5          22.5          1 \r\n 1983          217           22.5          36            21.5          0 \r\n 1983          218           11.8          34            22.5          3 \r\n 1983          219           24.5          35            19.5          0 \r\n 1983          220           24.9          36            18.5          0 \r\n 1983          221           23.9          34.5          19            0 \r\n 1983          222           23.9          37            21            0 \r\n 1983          223           27.6          34            18            0 \r\n 1983          224           26.1          29.5          13            0 \r\n 1983          225           21.5          31            14            0 \r\n 1983          226           18.3          31.5          19.5          5 \r\n 1983          227           20.8          36            18.5          0 \r\n 1983          228           24.4          40            22            0 \r\n 1983          229           24.1          40            25.5          0 \r\n 1983          230           23.6          39.5          23            0 \r\n 1983          231           23.3          38.5          22.5          0 \r\n 1983          232           20            37            20.5          0 \r\n 1983          233           21.6          37            23.5          0 \r\n 1983          234           5.6           33.5          20.5          0 \r\n 1983          235           5.5           28.5          20            5 \r\n 1983          236           22.1          36            21            15 \r\n 1983          237           21.7          37.5          22.5          0 \r\n 1983          238           23.5          39            23.5          0 \r\n 1983          239           17.3          36.5          20.5          0 \r\n 1983          240           24            35            18            0 \r\n 1983          241           23.4          36.5          19            0 \r\n 1983          242           7             33            20            27 \r\n 1983          243           23            30.5          17            4 \r\n 1983          244           25            31            15            0 \r\n 1983          245           24.1          33.5          16.5          0 \r\n 1983          246           23.9          34.5          17.5          0 \r\n 1983          247           21.8          34            18.5          0 \r\n 1983          248           12.4          31.5          21            0 \r\n 1983          249           23.1          29.5          16            12 \r\n 1983          250           24            30.5          9.5           0 \r\n 1983          251           20.9          34.5          16.5          0 \r\n 1983          252           22            35            21.5          0 \r\n 1983          253           10.2          33.5          18            0 \r\n 1983          254           20.7          27            11.5          10 \r\n 1983          255           18.2          23.5          14.5          0 \r\n 1983          256           21.5          21.5          8             0 \r\n 1983          257           16.4          23            8             0 \r\n 1983          258           6             21            10.5          21 \r\n 1983          259           18.5          21            9.5           11 \r\n 1983          260           18.6          30.5          10            0 \r\n 1983          261           12.8          30            17.5          0 \r\n 1983          262           19.2          30            14            20 \r\n 1983          263           5.6           27            6.5           24 \r\n 1983          264           17.8          14.5          1.5           6 \r\n 1983          265           16.9          13.5          1             0 \r\n 1983          266           20.4          16.5         -1             0 \r\n 1983          267           15.2          22.5          5.5           0 \r\n 1983          268           15.3          24            12            3 \r\n 1983          269           17.4          26.5          9             1 \r\n 1983          270           18.6          28.5          11.5          0 \r\n 1983          271           15.4          29.5          15            0 \r\n 1983          272           14.4          28            15            0 \r\n 1983          273           15.9          27.5          11.5          0 \r\n 1983          274           17.7          28.5          12            0 \r\n 1983          275           15.7          31            16            0 \r\n 1983          276           10.1          28.5          14.5          0 \r\n 1983          277           7.1           18.5          6.5           0 \r\n 1983          278           18.7          23            5.5           0 \r\n 1983          279           11.2          21            6             0 \r\n 1983          280           13.8          25            9             0 \r\n 1983          281           12.4          22.5          8             0 \r\n 1983          282           15.9          17            4             0 \r\n 1983          283           9.8           22            8             0 \r\n 1983          284           2.6           20            8.5           22 \r\n 1983          285           12.6          11.5          2             36 \r\n 1983          286           9.5           9.5           0             0 \r\n 1983          287           16.6          16.5          0             0 \r\n 1983          288           5.4           17.5          9.5           0 \r\n 1983          289           15.7          17            7             6 \r\n 1983          290           13.1          17            3             0 \r\n 1983          291           10.6          16.5          2.5           0 \r\n 1983          292           2.7           14            7.5           25 \r\n 1983          293           3.5           9.5           7             15 \r\n 1983          294           3.15          9.5           7             14 \r\n 1983          295           2.8           10.5          8             13 \r\n 1983          296           12.1          15.5          7             0 \r\n 1983          297           8.4           14.5          2.5           0 \r\n 1983          298           15.1          14.5          2             0 \r\n 1983          299           14.8          18            3             0 \r\n 1983          300           14.4          23            3             0 \r\n 1983          301           11.1          22            9.5           0 \r\n 1983          302           5.6           15            2             0 \r\n 1983          303           1.3           9.5           5.5           0 \r\n 1983          304           4.2           13            6.5           13 \r\n 1983          305           4.8           17            11            28 \r\n 1983          306           5.5           19.5          13            4 \r\n 1983          307           1.7           18            7.5           7 \r\n 1983          308           11.6          10            1.5           18 \r\n 1983          309           11.4          12.5         -2             0 \r\n 1983          310           2.7           12            7             0 \r\n 1983          311           5.3           14.5          9             9 \r\n 1983          312           3.5           15.5          8             0 \r\n 1983          313           1.2           13            3.5           18 \r\n 1983          314           3.6           4.5           1             31 \r\n 1983          315           7.9           4.5          -1.5           0 \r\n 1983          316           2.8           2.5          -1             0 \r\n 1983          317           9             8.5          -0.5           6 \r\n 1983          318           5.5           8.5           4             0 \r\n 1983          319           3.9           6             2             0 \r\n 1983          320           8.8           5            -2             0 \r\n 1983          321           10.3          11           -4             0 \r\n 1983          322           6.4           14            0             0 \r\n 1983          323           5.3           17            8.5           8 \r\n 1983          324           10.3          13.5          3             0 \r\n 1983          325           10.9          10           -1.5           0 \r\n 1983          326           2.9           15            1             0 \r\n 1983          327           2.9           11           -4             16 \r\n 1983          328           7             1.5          -7.5           7 \r\n 1983          329           8.5           9            -6.5           0 \r\n 1983          330           5.7           10.5          1             0 \r\n 1983          331           2.2           5.5           0             11 \r\n 1983          332           4             4            -2.5           12 \r\n 1983          333           7.7          -1.5          -7             3 \r\n 1983          334           8.2          -4            -10            0 \r\n 1983          335           7.9          -2.5          -12.5          0 \r\n 1983          336           8.4           0            -8.5           0 \r\n 1983          337           3.5          -1.5          -11.5          0 \r\n 1983          338           4.7           1            -4             1.02 \r\n 1983          339           4.2           0.5          -4.5           0 \r\n 1983          340           9.4          -2.5          -9             4.57 \r\n 1983          341           5.8          -2.5          -14            0 \r\n 1983          342           4.7          -2            -17            0.51 \r\n 1983          343           9.9          -1.5          -9             0 \r\n 1983          344           4.3          -1.5          -11.5          0 \r\n 1983          345           4.9           0.5          -3             4.83 \r\n 1983          346           7.5           0            -9             4.06 \r\n 1983          347           5.9          -0.5          -6.5           0 \r\n 1983          348           5.4          -1.5          -9.5           0 \r\n 1983          349           5.8          -3            -11.5          1.78 \r\n 1983          350           9.9          -9.5          -19            0.76 \r\n 1983          351           6.1          -12.5         -19            0 \r\n 1983          352           6.8          -17.5         -25            2.03 \r\n 1983          353           5.8          -20.5         -28.5          0 \r\n 1983          354           6.4          -14.5         -26            0 \r\n 1983          355           6            -11.5         -20            4.06 \r\n 1983          356           6.7          -17.5         -28            0 \r\n 1983          357           5.8          -21.5         -26            1.02 \r\n 1983          358           7            -23.5         -28.5          0.25 \r\n 1983          359           7.2          -18           -27            0 \r\n 1983          360           8.9          -9.5          -21.5          0 \r\n 1983          361           6.1          -5.5          -11.5          0 \r\n 1983          362           8.4          -7            -15.5          3.56 \r\n 1983          363           8.2          -13.5         -22.5          0 \r\n 1983          364           9.6          -8            -21.5          0 \r\n 1983          365           5.6          -2            -12.5          0 \r\n 1984          1             5.7           0.5          -6.5           8.64 \r\n 1984          2             7.1           0            -10            0 \r\n 1984          3             6.8           3.5          -9             0 \r\n 1984          4             9.3           5.5          -3.5           0 \r\n 1984          5             8.2           7.5          -3             0 \r\n 1984          6             9.3           5.5          -1.5           0 \r\n 1984          7             9.7           5.5          -3.5           0 \r\n 1984          8             8.9           3.5          -6             0 \r\n 1984          9             4.9          -1.5          -6             0 \r\n 1984          10            8.3          -5            -17.5          0 \r\n 1984          11            6.3          -4            -16            0 \r\n 1984          12            5            -4.5          -10            0 \r\n 1984          13            7.4          -6            -14.5          1.78 \r\n 1984          14            7.3          -8            -16            0 \r\n 1984          15            6.3          -6            -15            0 \r\n 1984          16            7.2          -6            -14            0 \r\n 1984          17            7.2          -7.5          -19.5          0 \r\n 1984          18            8.4          -12           -23.5          0 \r\n 1984          19            8.9          -11           -23            0 \r\n 1984          20            9.1          -14           -26.5          0 \r\n 1984          21            7.4          -8.5          -25.5          0 \r\n 1984          22            7            -0.5          -16.5          0 \r\n 1984          23            4.7           1            -6.5           0 \r\n 1984          24            7.1           3.5          -7             0 \r\n 1984          25            11.6          7            -7             0 \r\n 1984          26            7             6.5          -1.5           0 \r\n 1984          27            9.7           2            -9.5           0 \r\n 1984          28            10.2          5.5          -6             0 \r\n 1984          29            7.6           4.5          -6             0 \r\n 1984          30            10.3          2.5          -9             1.52 \r\n 1984          31            12.2          2.5          -10.5          0 \r\n 1984          32            12.2          9.5          -5             0 \r\n 1984          33            7.5           9             0             0 \r\n 1984          34            12.1          6.5          -2             0 \r\n 1984          35            8.6           4            -4.5           0 \r\n 1984          36            9.6          -1            -19.5          3.05 \r\n 1984          37            9.5          -5.5          -21            0 \r\n 1984          38            10.5         -1.5          -14.5          0 \r\n 1984          39            12.3          9.5          -9             0 \r\n 1984          40            7.1           9            -3.5           0 \r\n 1984          41            7             7             0             0 \r\n 1984          42            5             9.5           0             0 \r\n 1984          43            6.7           12.5          3             0 \r\n 1984          44            9.8           7.5          -1             0 \r\n 1984          45            11            13           -2.5           0 \r\n 1984          46            12.4          17            3.5           0 \r\n 1984          47            3.1           14            4.5           0 \r\n 1984          48            4             6             1.5           0 \r\n 1984          49            1.8           6             0.5           0 \r\n 1984          50            4.2           6            -0.5           10.92 \r\n 1984          51            16.2          8.5          -5             0 \r\n 1984          52            15.5          12           -4.5           0 \r\n 1984          53            16.5          17.5          0             0 \r\n 1984          54            10.7          12.5          0.5           0 \r\n 1984          55            14.2          8            -2             0 \r\n 1984          56            10.8          9            -3             0 \r\n 1984          57            6.4           7.5           0             0 \r\n 1984          58            11.7          4.5          -3             0 \r\n 1984          59            14.1          2            -4.5           0 \r\n 1984          60            16.6          2.75         -6             0 \r\n 1984          61            14.7          3.5          -7.5           0 \r\n 1984          62            9.9           7            -5.5           0 \r\n 1984          63            15.6          6.5          -3.5           0 \r\n 1984          64            4.2           8            -3.5           9.4 \r\n 1984          65            7             5.5          -1.5           0 \r\n 1984          66            19.2          2            -3.5           0 \r\n 1984          67            7.4           0.5          -12.5          2.03 \r\n 1984          68            9.2          -1            -9.5           1.02 \r\n 1984          69            7.9          -2.5          -12.5          0 \r\n 1984          70            9.6          -3.5          -16.5          0 \r\n 1984          71            16.5          0            -14            0 \r\n 1984          72            8.5           0            -12            1.02 \r\n 1984          73            7            -3            -9.5           1.02 \r\n 1984          74            11.1         -0.5          -6.5           0 \r\n 1984          75            7.4           3.5          -2.5           1.02 \r\n 1984          76            6.6           13           -0.5           0.51 \r\n 1984          77            4.1           5            -3.5           8.38 \r\n 1984          78            3.7           2            -4             1.02 \r\n 1984          79            3             0            -4             5.84 \r\n 1984          80            5.9          -0.5          -4             12.19 \r\n 1984          81            7.4           0            -4             3.81 \r\n 1984          82            13.9          1.5          -2             0 \r\n 1984          83            16.8          4.5          -2.5           0 \r\n 1984          84            6.7           7            -5.5           0 \r\n 1984          85            21.9          6            -1             0 \r\n 1984          86            3.9           10            0             0 \r\n 1984          87            3.5           8             2             6.86 \r\n 1984          88            11.6          6             2.5           0.25 \r\n 1984          89            15            8.5           1.5           0 \r\n 1984          90            17.8          8            -1.5           0 \r\n 1984          91            15.4          7            -1.5           0 \r\n 1984          92            16.6          9            -2.5           0 \r\n 1984          93            5.6           11.5         -3             0 \r\n 1984          94            3.2           10            2             7 \r\n 1984          95            10.4          7.5           2.5           12 \r\n 1984          96            24.7          9             1.5           0 \r\n 1984          97            25.2          13.5          1.5           0 \r\n 1984          98            5.7           15.5          0             0 \r\n 1984          99            1.6           14            4             0 \r\n 1984          100           4.7           10            6             17 \r\n 1984          101           6.4           8.5           5             4 \r\n 1984          102           6.8           13.5          6             0 \r\n 1984          103           5.9           14.5          7             0 \r\n 1984          104           6.1           14.5          8.5           14 \r\n 1984          105           3.7           11            5.5           1 \r\n 1984          106           11            9             6             3 \r\n 1984          107           20.1          12.5          5.5           5 \r\n 1984          108           25.1          15.5          6             0 \r\n 1984          109           26.3          15.5          1             0 \r\n 1984          110           20.4          16            0.5           0 \r\n 1984          111           11            15            0.5           0 \r\n 1984          112           1             14.5          2.5           0 \r\n 1984          113           3.3           12            5.5           12 \r\n 1984          114           13.1          8             1.5           26 \r\n 1984          115           26.6          11            1             3 \r\n 1984          116           22.5          18.5          3             0 \r\n 1984          117           19.8          21.5          4.5           0 \r\n 1984          118           27            26.5          14            0 \r\n 1984          119           27.1          25            13.5          20 \r\n 1984          120           2.8           18            3.5           0 \r\n 1984          121           24.8          15            5.5           8 \r\n 1984          122           15            14.5          2             32 \r\n 1984          123           17.8          14.5          1.5           0 \r\n 1984          124           5.9           19            7             2 \r\n 1984          125           7.1           17            5.5           6 \r\n 1984          126           17.9          11            4             1 \r\n 1984          127           8.2           17.5          3             4 \r\n 1984          128           11.7          17.5          6.5           0 \r\n 1984          129           21.7          15            6.5           0 \r\n 1984          130           27.6          13.5          0.5           0 \r\n 1984          131           19.1          16.5          3             0 \r\n 1984          132           17.5          22            6.5           0 \r\n 1984          133           16.3          23            10.5          0 \r\n 1984          134           27.7          24            8             0 \r\n 1984          135           26.9          25.5          13            6 \r\n 1984          136           9.8           23.5          7             0 \r\n 1984          137           23.9          20            9.5           0 \r\n 1984          138           24.3          21            9.5           0 \r\n 1984          139           22.2          27            10.5          0 \r\n 1984          140           3.5           29            15            0 \r\n 1984          141           24.6          25            15.5          22 \r\n 1984          142           23.9          23.5          13.5          21 \r\n 1984          143           8.4           25.5          11.5          0 \r\n 1984          144           31            24            13.5          13 \r\n 1984          145           18            22            8             14 \r\n 1984          146           8.7           25            11.5          0 \r\n 1984          147           24.6          23.5          10            23 \r\n 1984          148           3.7           19            7             5 \r\n 1984          149           12.4          17            9.5           5 \r\n 1984          150           30.3          15            7             18 \r\n 1984          151           31.5          17            4             2 \r\n 1984          152           30.5          20            5             0 \r\n 1984          153           24.6          24.5          8             0 \r\n 1984          154           20.4          27.5          14            0 \r\n 1984          155           28.3          26.5          12.5          0 \r\n 1984          156           20.2          26.5          9             0 \r\n 1984          157           23.3          27.5          15.5          5 \r\n 1984          158           18.2          29.5          17.5          3 \r\n 1984          159           8.8           28.5          18            0 \r\n 1984          160           27.2          26.5          16.5          14 \r\n 1984          161           4.2           28.5          17            24 \r\n 1984          162           28.1          26.5          16.5          21 \r\n 1984          163           19.4          25            13.5          18 \r\n 1984          164           11.5          27            14.5          0 \r\n 1984          165           23.6          28            18            5 \r\n 1984          166           21.6          28.5          18            5 \r\n 1984          167           5.9           29            18            0 \r\n 1984          168           22.4          25.5          16.5          16 \r\n 1984          169           22.8          29            17.5          14 \r\n 1984          170           25.8          31            21.5          0 \r\n 1984          171           24.9          30            18            10 \r\n 1984          172           13.1          29            16.5          0 \r\n 1984          173           16            28.5          16.5          0 \r\n 1984          174           27.4          29            19.5          0 \r\n 1984          175           23.1          32            17.5          0 \r\n 1984          176           29.4          31            18            0 \r\n 1984          177           28.2          28            13.5          0 \r\n 1984          178           26.5          30            15.5          0 \r\n 1984          179           31            30.5          18.5          0 \r\n 1984          180           16.6          29            14.5          7 \r\n 1984          181           27.8          27.5          15            0 \r\n 1984          182           24.5          26.5          15.5          0 \r\n 1984          183           23.7          25.5          12            0 \r\n 1984          184           26.7          26.5          13            0 \r\n 1984          185           12            28            14            0 \r\n 1984          186           15.7          29            17            0 \r\n 1984          187           29            29            18            7 \r\n 1984          188           29.2          29.5          16            4 \r\n 1984          189           27.2          27.5          14.5          4 \r\n 1984          190           26.2          25            10.5          0 \r\n 1984          191           27.5          31            15.5          0 \r\n 1984          192           16.4          35.5          23.5          0 \r\n 1984          193           27.5          33.5          22.5          0 \r\n 1984          194           26.7          31            16.5          0 \r\n 1984          195           27.2          31.5          17            0 \r\n 1984          196           24.5          32            17            0 \r\n 1984          197           26.9          34            19.5          0 \r\n 1984          198           28.2          32            18            62 \r\n 1984          199           29.1          30.5          16            0 \r\n 1984          200           29.7          29            16            0 \r\n 1984          201           26.9          27.5          12.5          0 \r\n 1984          202           18.3          31.5          16.5          5 \r\n 1984          203           25.6          31.5          19            8 \r\n 1984          204           26.7          32.5          18.5          1 \r\n 1984          205           25.6          34            20.5          0 \r\n 1984          206           20.9          34.5          19            0 \r\n 1984          207           17.6          33.5          20.5          0 \r\n 1984          208           15.7          29            19            14 \r\n 1984          209           21.9          26            17.5          34 \r\n 1984          210           24.1          26.5          14            5 \r\n 1984          211           25.1          26.5          13.5          0 \r\n 1984          212           23.6          26.5          12.5          0 \r\n 1984          213           23.2          27.5          12.5          0 \r\n 1984          214           22.7          29.5          14            0 \r\n 1984          215           22.3          30.5          16            0 \r\n 1984          216           20.3          31            16            0 \r\n 1984          217           21.6          32            18            0 \r\n 1984          218           23            32.5          18            0 \r\n 1984          219           26            33            19            0 \r\n 1984          220           23.9          35            20.5          0 \r\n 1984          221           24.3          36            22            0 \r\n 1984          222           23.2          34.5          20.5          0 \r\n 1984          223           27.3          32.5          19.5          0 \r\n 1984          224           23.4          31            14.5          0 \r\n 1984          225           22.6          29.5          15.5          0 \r\n 1984          226           23.3          29.5          16            0 \r\n 1984          227           23.6          30            15.5          0 \r\n 1984          228           21.3          31.5          15.5          0 \r\n 1984          229           13.7          33.5          17            0 \r\n 1984          230           8.1           33            20.5          0 \r\n 1984          231           10            31            20.5          0 \r\n 1984          232           23.8          28.5          19.5          0 \r\n 1984          233           24.6          27.5          16.5          0 \r\n 1984          234           8.8           28            12.5          0 \r\n 1984          235           25.8          26.5          16            0 \r\n 1984          236           19.5          27            14            11 \r\n 1984          237           22            25            8.5           0 \r\n 1984          238           21.1          25.5          9.5           0 \r\n 1984          239           22.3          28.5          12.5          0 \r\n 1984          240           23.2          31.5          15.5          0 \r\n 1984          241           24.6          35.5          21            0 \r\n 1984          242           22.2          37.5          18.5          0 \r\n 1984          243           24.8          38.5          18            0 \r\n 1984          244           18.2          34.5          13.5          0 \r\n 1984          245           23.2          31            11            0 \r\n 1984          246           8.7           36.5          20            0 \r\n 1984          247           20.4          31.5          18            2 \r\n 1984          248           15            23            12.5          0 \r\n 1984          249           23.1          26.5          9.5           0 \r\n 1984          250           7.6           25            10            0 \r\n 1984          251           22.7          27.5          14            0 \r\n 1984          252           14.9          32            18.5          0 \r\n 1984          253           11.1          29            14            12 \r\n 1984          254           3.7           26            14.5          7 \r\n 1984          255           14.3          23            14.5          6 \r\n 1984          256           20.1          24.5          12.5          18 \r\n 1984          257           7.3           33            18.5          0 \r\n 1984          258           6.3           30            18            0 \r\n 1984          259           20.3          20            12.5          6 \r\n 1984          260           19.2          18.5          4.5           0 \r\n 1984          261           18            19.5          2.5           0 \r\n 1984          262           21.3          21.5          7             0 \r\n 1984          263           21.3          25.5          9             0 \r\n 1984          264           20.2          31.5          12            0 \r\n 1984          265           19.3          31            12.5          0 \r\n 1984          266           8.3           28.5          12.5          0 \r\n 1984          267           13.9          24.5          15.5          1 \r\n 1984          268           16.4          27            15            0 \r\n 1984          269           12.1          32            18            0 \r\n 1984          270           12.3          24.5          5.5           2 \r\n 1984          271           5.4           11           -1             0 \r\n 1984          272           13.8          10            5             0 \r\n 1984          273           18.2          12.5          4.5           3 \r\n 1984          274           18.8          15           -3             0 \r\n 1984          275           19.4          17.5         -1             0 \r\n 1984          276           15.8          19.5          1             0 \r\n 1984          277           18.3          22            4.5           0 \r\n 1984          278           6.6           25.5          8             0 \r\n 1984          279           7.1           26            8             0 \r\n 1984          280           1.8           23            11.5          5 \r\n 1984          281           5.8           22            14.5          2 \r\n 1984          282           11.2          19.5          12            5 \r\n 1984          283           12.4          21.5          9.5           2 \r\n 1984          284           10.7          23            8             0 \r\n 1984          285           3.5           23.5          11            0 \r\n 1984          286           12            21.5          14            15 \r\n 1984          287           4.8           24            12.5          0 \r\n 1984          288           4.1           23            13.5          0 \r\n 1984          289           4.7           20            15            2 \r\n 1984          290           2.2           20            10.5          24 \r\n 1984          291           12.9          17            5.5           10 \r\n 1984          292           1.7           17            0.5           20 \r\n 1984          293           15.8          14.5          6             9 \r\n 1984          294           8.7           14.5          4             21 \r\n 1984          295           13.3          14            4.5           0 \r\n 1984          296           9.4           13            4.5           8 \r\n 1984          297           14.9          12.5         -0.5           0 \r\n 1984          298           13.9          12           -2             0 \r\n 1984          299           2.6           13.5         -2             0 \r\n 1984          300           13.4          12.5          4.5           4 \r\n 1984          301           1.6           19            4.5           4 \r\n 1984          302           5             19.5          13            3 \r\n 1984          303           13.8          16.5          2             9 \r\n 1984          304           8.5           14           -2.5           1 \r\n 1984          305           1.9           13            3             0 \r\n 1984          306           10.6          15            3.5           3 \r\n 1984          307           12            16.5         -1             19 \r\n 1984          308           12.9          5.5          -6             0 \r\n 1984          309           12.4          13           -2             0 \r\n 1984          310           12.1          17.5          3             0 \r\n 1984          311           13            13           -2             0 \r\n 1984          312           10.6          15           -2             0 \r\n 1984          313           7.8           17.5          5             0 \r\n 1984          314           5.7           18.5          7.5           0 \r\n 1984          315           2.8           18.5          9             4 \r\n 1984          316           7.1           14.5          0.5           4 \r\n 1984          317           11.3          2.5          -2.5           3 \r\n 1984          318           10.9          7.5          -5.5           0 \r\n 1984          319           4.4           14.5         -1.5           0 \r\n 1984          320           10            16            6             0 \r\n 1984          321           11.7          14            0             0 \r\n 1984          322           2.9           8.5          -6             0 \r\n 1984          323           2.9           5            -2.5           0 \r\n 1984          324           10.7          3            -1             5 \r\n 1984          325           10.2          2            -6.5           0 \r\n 1984          326           10.3          2            -9.5           0 \r\n 1984          327           7.5           5            -8             0 \r\n 1984          328           10            10           -3             0 \r\n 1984          329           10            12           -2.5           0 \r\n 1984          330           5.5           15           -1             0 \r\n 1984          331           6.5           13            1             0 \r\n 1984          332           2.7           15.5          4.5           0 \r\n 1984          333           6.8           12           -1.5           7 \r\n 1984          334           7.2           4.5          -4             3 \r\n 1984          335           8.2           7.5          -1             0 \r\n 1984          336           8             6            -3             1.27 \r\n 1984          337           3.5           6            -4.5           0 \r\n 1984          338           9.4           4.5          -4.5           0 \r\n 1984          339           8.1          -1.5          -11.5          0 \r\n 1984          340           8.2          -1            -11.5          0 \r\n 1984          341           8.3           0            -11            0 \r\n 1984          342           9.8          -4            -18            0 \r\n 1984          343           9.1           12.5         -11.5          0 \r\n 1984          344           2.7           13           -4.5           0 \r\n 1984          345           8.8           9            -1.5           1.27 \r\n 1984          346           6.3           9.5          -2             0 \r\n 1984          347           7             13.5         -1             0 \r\n 1984          348           3.5           11           -4.5           0 \r\n 1984          349           5.4           1.5          -8.5           20.07 \r\n 1984          350           2.9           1            -2.5           0 \r\n 1984          351           4.8           10.5         -2.5           7.62 \r\n 1984          352           3.5           14.5         -0.5           0 \r\n 1984          353           8             2            -6             0 \r\n 1984          354           8            -2.5          -11.5          0.25 \r\n 1984          355           7.1          -1            -8             0 \r\n 1984          356           2.4           1.5          -9.5           3.81 \r\n 1984          357           9.2           5            -3.5           0 \r\n 1984          358           7.1           3.5          -9.5           0 \r\n 1984          359           4.6           6.5          -4.5           0 \r\n 1984          360           7             1            -14.5          1.02 \r\n 1984          361           1.6          -1            -18            8.89 \r\n 1984          362           1.3           1.5          -6             4.83 \r\n 1984          363           3.4           11.5         -1             0 \r\n 1984          364           4             20            9             2.03 \r\n 1984          365           9.6           18.5         -5             0 \r\n 1984          366           2            -0.5          -9.5           0 \r\n 1985          1             5.9          -5.5          -13.5          13.72 \r\n 1985          2             6.2          -9            -24            0 \r\n 1985          3             6            -7            -22.5          0 \r\n 1985          4             9             0.5          -19            0 \r\n 1985          5             9.5           2.5          -10            0 \r\n 1985          6             6.1           5.5          -5             0 \r\n 1985          7             9.9           4.5          -2.5           0 \r\n 1985          8             7.9           1.5          -10.5          0 \r\n 1985          9             3.9          -4            -9             0.51 \r\n 1985          10            3.4          -4            -11            4.06 \r\n 1985          11            6.2          -6            -17            0 \r\n 1985          12            6.5          -10           -21            0 \r\n 1985          13            10.5         -1.5          -15            0 \r\n 1985          14            9.3           1.5          -10.5          0 \r\n 1985          15            6.7          -6.5          -17.5          0 \r\n 1985          16            5.3          -2.5          -11            0 \r\n 1985          17            5.4           0.5          -11            0 \r\n 1985          18            9.7           2.5          -9             0.76 \r\n 1985          19            7.8          -7.5          -25            1.02 \r\n 1985          20            8.7          -16           -29.5          0 \r\n 1985          21            11.1         -5.5          -20.5          0 \r\n 1985          22            11.5         -3            -11.5          0 \r\n 1985          23            10.4         -1            -10.5          0 \r\n 1985          24            7.1           1            -6             0 \r\n 1985          25            10.5          1.5          -18.5          0.25 \r\n 1985          26            9.5          -3            -19.5          0 \r\n 1985          27            10           -0.5          -11            0 \r\n 1985          28            11.4         -2            -16            0 \r\n 1985          29            5.9          -1.5          -13.5          0 \r\n 1985          30            4.7          -1            -17.5          0 \r\n 1985          31            8.6          -14           -24.5          2.29 \r\n 1985          32            13.2         -11.5         -25            0 \r\n 1985          33            13.9         -9.5          -23            0 \r\n 1985          34            12           -6            -19.5          0 \r\n 1985          35            7.4          -7            -14            0.76 \r\n 1985          36            10.2         -7            -15            1.78 \r\n 1985          37            13.8         -6.5          -24            0 \r\n 1985          38            14.4         -8            -23            0 \r\n 1985          39            10.8         -6.5          -21.5          0 \r\n 1985          40            6            -4.5          -12.5          0 \r\n 1985          41            6.5          -3            -6.5           1.02 \r\n 1985          42            9.7          -4.5          -11.5          2.79 \r\n 1985          43            15.7         -5            -15.5          0 \r\n 1985          44            10.9         -3            -14.5          0 \r\n 1985          45            15.5         -3.5          -14            0 \r\n 1985          46            10           -5.5          -17.5          0 \r\n 1985          47            10.9          4            -11.5          0 \r\n 1985          48            13.7          7            -6             0 \r\n 1985          49            15.5          5.5          -3.5           0 \r\n 1985          50            13.1          5            -6             0 \r\n 1985          51            7.4           4.5          -3.5           0 \r\n 1985          52            3.2           8.5           1.5           7.87 \r\n 1985          53            5             8             1.5           7.62 \r\n 1985          54            3.3           5             1             4.83 \r\n 1985          55            6.9           3            -0.5           10.67 \r\n 1985          56            10.4          5.5          -1             0.25 \r\n 1985          57            8.5           5            -1.5           0 \r\n 1985          58            16.9          5.5          -7.5           0 \r\n 1985          59            17.7          11.5         -2.5           0 \r\n 1985          60            17            12.5          3             1.02 \r\n 1985          61            13.7          9.5          -3             0 \r\n 1985          62            1.6           7.5           1             0 \r\n 1985          63            8.9           11.5         -3             32 \r\n 1985          64            16.5          2            -6.5           0 \r\n 1985          65            16.3          5.5          -6.5           0 \r\n 1985          66            7.9           12           -0.5           0 \r\n 1985          67            19.2          13.5         -0.5           0 \r\n 1985          68            17.3          16           -2             0 \r\n 1985          69            10.1          16.5          1.5           0 \r\n 1985          70            4.6           13            4             4.06 \r\n 1985          71            13.2          8.5          -2             0 \r\n 1985          72            13.9          8.5           0             0.76 \r\n 1985          73            20.5          10           -1.5           0 \r\n 1985          74            20.7          13           -4.5           0 \r\n 1985          75            19.7          12.5          0.5           0 \r\n 1985          76            18.2          13           -3             0 \r\n 1985          77            18.9          19.5         -1             0 \r\n 1985          78            20.4          19.5          4             0 \r\n 1985          79            20.5          18            0.5           0 \r\n 1985          80            21.3          16.5          0             0 \r\n 1985          81            10.5          13.5         -1.5           0 \r\n 1985          82            9             10            2             1.27 \r\n 1985          83            7.7           7             0             0 \r\n 1985          84            11.4          8.5           1.5           0 \r\n 1985          85            13.6          19.5          2.5           0 \r\n 1985          86            17            20.5          8.5           0 \r\n 1985          87            14.6          20            7.5           6.86 \r\n 1985          88            6.6           14            2             0 \r\n 1985          89            3.7           5.5           1             0.25 \r\n 1985          90            6.3           2            -1.5           21.08 \r\n 1985          91            17.8          5.5          -4             2 \r\n 1985          92            21.5          18           -3.5           0 \r\n 1985          93            21.7          19.5          3             0 \r\n 1985          94            10.2          16.5          5             0 \r\n 1985          95            8.1           10            2             0 \r\n 1985          96            17.2          9            -0.5           2 \r\n 1985          97            22.2          10.5          0             0 \r\n 1985          98            22.1          9            -1.5           0 \r\n 1985          99            24.8          13           -5             0 \r\n 1985          100           10.4          14            4             0 \r\n 1985          101           21.6          19.5          3.5           0 \r\n 1985          102           22.7          25            8.5           0 \r\n 1985          103           13.1          22.5          9             0 \r\n 1985          104           11.4          16            3.5           0 \r\n 1985          105           25.5          21            3.5           0 \r\n 1985          106           26            24.5          6.5           0 \r\n 1985          107           26.4          27.5          9             0 \r\n 1985          108           19.9          30            15            0 \r\n 1985          109           22.6          28.5          15.5          0 \r\n 1985          110           19            28            17.5          0 \r\n 1985          111           18.7          28.5          18.5          0 \r\n 1985          112           8.9           26.5          17            1 \r\n 1985          113           8.2           21.5          10.5          3 \r\n 1985          114           26            22.5          7.5           1 \r\n 1985          115           7.1           21.5          7.5           0 \r\n 1985          116           13            22            8.5           0 \r\n 1985          117           10.5          22            10.5          3 \r\n 1985          118           17.2          20            10            3 \r\n 1985          119           22.8          23            8.5           0 \r\n 1985          120           6.5           22            13            7 \r\n 1985          121           14.1          20.5          13            13 \r\n 1985          122           27.2          21.5          6             4 \r\n 1985          123           27            23.5          6             0 \r\n 1985          124           26.4          25            10            0 \r\n 1985          125           10.1          23.5          14.5          0 \r\n 1985          126           25.8          23.5          12            0 \r\n 1985          127           25.1          26            11            2 \r\n 1985          128           24.8          26            10            0 \r\n 1985          129           27.9          27.5          11            0 \r\n 1985          130           13.6          26            13.5          0 \r\n 1985          131           10            24.5          14.5          7 \r\n 1985          132           28.4          23.5          14            12 \r\n 1985          133           8.1           21            10            0 \r\n 1985          134           17.6          21.5          12            9 \r\n 1985          135           14.1          19            9.5           0 \r\n 1985          136           5.4           16.5          9.5           0 \r\n 1985          137           29.7          19.5          8.5           1 \r\n 1985          138           25.8          25.5          7             0 \r\n 1985          139           27.5          26.5          10            0 \r\n 1985          140           25.2          25            14            12 \r\n 1985          141           29.8          22.5          8             0 \r\n 1985          142           28.3          22.5          9.5           0 \r\n 1985          143           18.9          24            9             0 \r\n 1985          144           24.9          26            12.5          2 \r\n 1985          145           27.7          28.5          12.5          0 \r\n 1985          146           23.4          31.5          16            0 \r\n 1985          147           11.9          26.5          14.5          0 \r\n 1985          148           26            22.5          10.5          0 \r\n 1985          149           17            26            12.5          0 \r\n 1985          150           22.4          28            16            0 \r\n 1985          151           23.3          26            11.5          0 \r\n 1985          152           15.3          27            9.5           0 \r\n 1985          153           18.1          24.5          11            0 \r\n 1985          154           21.1          23            8.5           0 \r\n 1985          155           10.1          21.5          12.5          0 \r\n 1985          156           24.7          23            11            1 \r\n 1985          157           18.6          24            10            0 \r\n 1985          158           27.6          28.5          10.5          0 \r\n 1985          159           30            35            17            0 \r\n 1985          160           16            33            17.5          0 \r\n 1985          161           12.4          24.5          12.5          0 \r\n 1985          162           11            21.5          12.5          3 \r\n 1985          163           22.8          20.5          9             3 \r\n 1985          164           28.8          23.5          5.5           0 \r\n 1985          165           11.9          23            12            17 \r\n 1985          166           28            26            14            2 \r\n 1985          167           20.6          29.5          14            0 \r\n 1985          168           27.6          28            15.5          6 \r\n 1985          169           21.6          25            13            0 \r\n 1985          170           23.8          24            10            3 \r\n 1985          171           26.9          26.5          11            0 \r\n 1985          172           15.4          28.5          17.5          0 \r\n 1985          173           29.6          28.5          11            14 \r\n 1985          174           14.9          27            16.5          0 \r\n 1985          175           28.3          28.5          15.5          51 \r\n 1985          176           25.2          31            20            0 \r\n 1985          177           23.4          31.5          21            0 \r\n 1985          178           12.9          27            15            15 \r\n 1985          179           27.4          23.5          11            0 \r\n 1985          180           28            25.5          11.5          0 \r\n 1985          181           26.2          26.5          13.5          0 \r\n 1985          182           26.3          28.5          15            0 \r\n 1985          183           25.4          29.5          16.5          0 \r\n 1985          184           30.9          30            13.5          0 \r\n 1985          185           23.1          31.5          18.5          0 \r\n 1985          186           27.7          30.5          14            0 \r\n 1985          187           28.5          30.5          14.5          0 \r\n 1985          188           28.1          32.5          18            0 \r\n 1985          189           21.3          32.5          20            0 \r\n 1985          190           26.5          34            21            0 \r\n 1985          191           29.4          32.5          17.5          0 \r\n 1985          192           29.3          31            18            2 \r\n 1985          193           6.3           30            19            0 \r\n 1985          194           13.4          31            21.5          0 \r\n 1985          195           20.1          32            21            5 \r\n 1985          196           28.4          29.5          16.5          14 \r\n 1985          197           25.8          28.5          11.5          0 \r\n 1985          198           28.1          30.5          14            0 \r\n 1985          199           16.8          31.5          17            0 \r\n 1985          200           13.2          30            19            16 \r\n 1985          201           25.1          29.5          16            9 \r\n 1985          202           21            29.5          18            6 \r\n 1985          203           27.4          29            16.5          0 \r\n 1985          204           28.4          28.5          14            0 \r\n 1985          205           19            31.5          17.5          0 \r\n 1985          206           21.2          30.5          19            27 \r\n 1985          207           29.4          28.5          15            7 \r\n 1985          208           29            29            14            0 \r\n 1985          209           24.2          30            14            0 \r\n 1985          210           18.3          29            17            0 \r\n 1985          211           7.3           26.5          18            15 \r\n 1985          212           2.9           23.5          18            47 \r\n 1985          213           21.6          23.5          14.5          0 \r\n 1985          214           25.5          25.5          12.5          0 \r\n 1985          215           10.3          24.5          15.5          0 \r\n 1985          216           9.1           25.5          16            2 \r\n 1985          217           23.9          31            19.5          0 \r\n 1985          218           20.9          31.5          18.5          0 \r\n 1985          219           28            30.5          18.5          0 \r\n 1985          220           20.5          29.5          14            0 \r\n 1985          221           23.7          33            17            0 \r\n 1985          222           23.5          29.5          13.5          24 \r\n 1985          223           24.6          26.5          10            0 \r\n 1985          224           18            31            17            0 \r\n 1985          225           16.9          30            16            16 \r\n 1985          226           6.3           26.5          17            9 \r\n 1985          227           21.7          25.5          14            0 \r\n 1985          228           17.5          27            16            0 \r\n 1985          229           18.6          29            17.5          0 \r\n 1985          230           24.7          27            12.5          0 \r\n 1985          231           21.7          24.5          14            9 \r\n 1985          232           19.6          24            11            2 \r\n 1985          233           13.5          24.5          13.5          0 \r\n 1985          234           6.3           23.5          16            18 \r\n 1985          235           9.5           23.5          17            22 \r\n 1985          236           17.6          23.5          14            2 \r\n 1985          237           9.4           22.5          13.5          2 \r\n 1985          238           11.4          23            12.5          0 \r\n 1985          239           20.3          25.5          12            0 \r\n 1985          240           19.3          28.5          13.5          0 \r\n 1985          241           12.3          28.5          17.5          0 \r\n 1985          242           10.1          26.5          17            0 \r\n 1985          243           17.1          28.5          16            0 \r\n 1985          244           18            30            18.5          0 \r\n 1985          245           22.2          32            19.5          0 \r\n 1985          246           21.7          31.5          20            0 \r\n 1985          247           13.6          30            18.5          0 \r\n 1985          248           18.3          32.5          20.5          0 \r\n 1985          249           22.6          34.5          22.5          0 \r\n 1985          250           22.3          34            22            0 \r\n 1985          251           22.3          34            20.5          0 \r\n 1985          252           15.1          30.5          16            0 \r\n 1985          253           5.5           22.5          15            0 \r\n 1985          254           16.8          23            15            0 \r\n 1985          255           8.4           21.5          12            0 \r\n 1985          256           9.9           18            10            2 \r\n 1985          257           20.3          21            9.5           0 \r\n 1985          258           21.4          23            5.5           0 \r\n 1985          259           13.6          24.5          12            0 \r\n 1985          260           18.5          28.5          15.5          0 \r\n 1985          261           18.8          31.5          19.5          0 \r\n 1985          262           18.5          31.5          19.5          0 \r\n 1985          263           7.5           27            13.5          16 \r\n 1985          264           3.9           16.5          9             15 \r\n 1985          265           10.8          20.5          11.5          8 \r\n 1985          266           6.6           19            8             55 \r\n 1985          267           17.2          14            3             7 \r\n 1985          268           7.8           15.5          6.5           6 \r\n 1985          269           19.1          15            4.5           0 \r\n 1985          270           19.3          20            2.5           0 \r\n 1985          271           5.1           18.5          6             0 \r\n 1985          272           2.6           11.5          4.5           18 \r\n 1985          273           6.1           9             2             32 \r\n 1985          274           16.1          14           -1             0 \r\n 1985          275           17            16            1.5           0 \r\n 1985          276           10.1          17.5          6.5           0 \r\n 1985          277           7.9           16.5          6.5           0 \r\n 1985          278           14.3          13.5          4.5           1 \r\n 1985          279           18.4          19.5          1.5           0 \r\n 1985          280           6.6           19            6.5           0 \r\n 1985          281           6.5           18            9             0 \r\n 1985          282           3.2           12.5          3             29 \r\n 1985          283           4.5           7.5           2.5           37 \r\n 1985          284           3.5           10.5          5.5           3 \r\n 1985          285           11            19            8.5           12 \r\n 1985          286           15            21            5             0 \r\n 1985          287           6.2           18            6             0 \r\n 1985          288           16.6          21            3.5           0 \r\n 1985          289           14.6          21.5          3.5           0 \r\n 1985          290           8             22.5          10            0 \r\n 1985          291           3.4           20.5          13            4 \r\n 1985          292           4.8           17            9.5           19 \r\n 1985          293           3.9           12            8.5           4 \r\n 1985          294           5.7           15            10            1 \r\n 1985          295           9.6           20            8.5           0 \r\n 1985          296           6.9           21            12.5          5 \r\n 1985          297           14.9          20.5          8             5 \r\n 1985          298           14.9          22            3.5           0 \r\n 1985          299           12.8          23.5          9.5           0 \r\n 1985          300           11.6          21            7             0 \r\n 1985          301           10.8          17            4             0 \r\n 1985          302           6.6           13.5          5.5           0 \r\n 1985          303           10.7          14            4             0 \r\n 1985          304           4.2           11.5          2             0 \r\n 1985          305           10.2          12            5             10 \r\n 1985          306           14            12           -1             0 \r\n 1985          307           8.8           11.5          1.5           0 \r\n 1985          308           11.8          10.5         -3             0 \r\n 1985          309           12.8          14           -3             0 \r\n 1985          310           3.7           11.5          0.5           1 \r\n 1985          311           12            12           -4             3 \r\n 1985          312           7.2           10.5         -1             0 \r\n 1985          313           1             9             0             4 \r\n 1985          314           2.1           2            -2             3 \r\n 1985          315           2.1           2.5          -2             3 \r\n 1985          316           2.8           5.5           0.5           6 \r\n 1985          317           3.4           6             1             9 \r\n 1985          318           5.7           4            -1.5           3 \r\n 1985          319           2.1           3.5          -1             2 \r\n 1985          320           5             4            -0.5           7 \r\n 1985          321           7.1           13           -3             0 \r\n 1985          322           4.9           17            6             7 \r\n 1985          323           1.7           12.5         -7             9 \r\n 1985          324           9.7          -3            -11.5          2 \r\n 1985          325           6.3          -2            -11.5          0 \r\n 1985          326           8.3           2            -7             0 \r\n 1985          327           5.2          -1.5          -9             0 \r\n 1985          328           3.2          -4.5          -12            0 \r\n 1985          329           2.1          -1            -8             0 \r\n 1985          330           6.4           0            -7             1 \r\n 1985          331           4.4          -3.5          -13            0 \r\n 1985          332           9.3          -6            -12            0 \r\n 1985          333           3.2          -8            -14.5          0 \r\n 1985          334           3.9          -7.5          -11.5          3 \r\n 1985          335           4.2          -8            -15.5          19.81 \r\n 1985          336           6.4          -13           -18.5          0 \r\n 1985          337           4.5          -9            -20.5          0 \r\n 1985          338           6.8          -1            -12.5          0 \r\n 1985          339           9.3          -1.5          -11            0 \r\n 1985          340           6            -4            -18.5          0 \r\n 1985          341           7.2           4            -10            0 \r\n 1985          342           7.8           2.5          -6             0 \r\n 1985          343           2.6          -1.5          -10.5          0 \r\n 1985          344           1.9          -3            -7.5           3.05 \r\n 1985          345           5.9          -5            -13            7.62 \r\n 1985          346           7.2          -7.5          -21            0 \r\n 1985          347           6.5          -12.5         -23            0 \r\n 1985          348           7.8          -7            -25.5          0 \r\n 1985          349           9.4          -2.5          -11            0 \r\n 1985          350           6.5          -2            -10.5          0 \r\n 1985          351           5.5          -4.5          -17.5          3.05 \r\n 1985          352           5.7          -13           -27            0 \r\n 1985          353           3.1          -10.5         -26.5          0 \r\n 1985          354           5.4          -10.5         -20.5          1.78 \r\n 1985          355           3.2          -7            -25.5          0 \r\n 1985          356           6.1           3.5          -9             0 \r\n 1985          357           6.3           4.5          -2.5           0 \r\n 1985          358           7.1           0.5          -19.5          0 \r\n 1985          359           7.2          -12           -21            0 \r\n 1985          360           5             2.5          -15.5          0 \r\n 1985          361           7.7           2.5          -8.5           1.27 \r\n 1985          362           4.9          -1            -13            0 \r\n 1985          363           8.8          -3            -12.5          0 \r\n 1985          364           6.2           3.5          -12            0 \r\n 1985          365           9.7           2.5          -7.5           0 \r\n 1986          1             6.7           3.5          -8             0 \r\n 1986          2             4.6           5            -2.5           0 \r\n 1986          3             8.4           4            -3.5           0 \r\n 1986          4             4.2           1.5          -8.5           0 \r\n 1986          5             8.5           2.5          -12            0 \r\n 1986          6             6.2          -1            -15.5          0 \r\n 1986          7             7.6          -12           -23            0 \r\n 1986          8             7.4          -4.5          -20.5          0 \r\n 1986          9             8.9           5            -10.5          0 \r\n 1986          10            7.4           4.5          -5             0 \r\n 1986          11            9.3           8.5          -4             0 \r\n 1986          12            9.9           6.5          -2             0 \r\n 1986          13            8.9           1.5          -9             0 \r\n 1986          14            10.1          0.5          -6             0 \r\n 1986          15            10            6.5          -7             0 \r\n 1986          16            7.4           11           -0.5           0 \r\n 1986          17            6.4           11.5         -1             0 \r\n 1986          18            8.5           9.5           1.5           0 \r\n 1986          19            4.6           5            -1             0 \r\n 1986          20            10.6          9            -3.5           0 \r\n 1986          21            3             7.5          -2.5           0 \r\n 1986          22            10.6          2.5          -8             0 \r\n 1986          23            8.3           5            -7.5           0 \r\n 1986          24            7.3           7            -1.5           0 \r\n 1986          25            4.9           5            -5.5           0 \r\n 1986          26            11            0            -18            0 \r\n 1986          27            7.7          -9            -20.5          0 \r\n 1986          28            7.5          -0.5          -14            0 \r\n 1986          29            11.3          3.5          -11.5          0 \r\n 1986          30            7.7           0.5          -11            0 \r\n 1986          31            5.8           4            -5.5           0 \r\n 1986          32            10.4          8            -4             0 \r\n 1986          33            8.2           8.5          -3             0 \r\n 1986          34            1.8           5.5           0             0 \r\n 1986          35            2.4           2             0             7.37 \r\n 1986          36            2.7           1.5          -1.5           13.46 \r\n 1986          37            5.1           0.5          -3             0 \r\n 1986          38            5.2          -2            -7.5           8.64 \r\n 1986          39            8.1          -4.5          -13            0 \r\n 1986          40            9.4          -8.5          -19            0 \r\n 1986          41            10.4         -10.5         -20            0 \r\n 1986          42            9.9          -11.5         -21.5          0 \r\n 1986          43            10.9         -12           -22.5          0 \r\n 1986          44            3.5          -5.5          -21.5          0 \r\n 1986          45            8.2          -4.5          -15.5          1.78 \r\n 1986          46            6.7          -4            -17.5          0 \r\n 1986          47            4.3          -3.5          -10            0 \r\n 1986          48            11            0.5          -5.5           1.52 \r\n 1986          49            6.9           1.5          -2.5           0 \r\n 1986          50            11.9          1            -5             0 \r\n 1986          51            9.3           0.5          -10.5          0 \r\n 1986          52            14.8         -2            -13.5          0 \r\n 1986          53            16.4          1            -10            0 \r\n 1986          54            7.8           0.5          -6             2.79 \r\n 1986          55            8.2           0            -6.5           0 \r\n 1986          56            9.8           5            -6.5           0 \r\n 1986          57            11.6          9.5          -1.5           0 \r\n 1986          58            3.5           7            -3             0 \r\n 1986          59            18            0.5          -10            0.25 \r\n 1986          60            15.6          7.5          -7.5           0 \r\n 1986          61            17.7          10           -1             0 \r\n 1986          62            5.6           6.5           0.5           0 \r\n 1986          63            17.4          9             0.5           0 \r\n 1986          64            4.9           7.5          -1.5           0 \r\n 1986          65            14.5          7            -4.5           0 \r\n 1986          66            17.6          0            -13.5          0 \r\n 1986          67            13.1          6            -8             0 \r\n 1986          68            10.9          21            2.5           0 \r\n 1986          69            5.9           18            0.5           8.38 \r\n 1986          70            11.5          8            -2.5           4.57 \r\n 1986          71            1             5             1             7.37 \r\n 1986          72            5.2           4.5           2             9.4 \r\n 1986          73            8.4           5             1             0 \r\n 1986          74            16            10            0             0 \r\n 1986          75            11.9          8            -2             0 \r\n 1986          76            4.4           7.5           0             0 \r\n 1986          77            8             17.5          4.5           10.67 \r\n 1986          78            14.2          11.5         -2             2.29 \r\n 1986          79            22.5          1            -8.5           0 \r\n 1986          80            21.9          7.5          -8             0 \r\n 1986          81            16            16.5          0             0 \r\n 1986          82            14.8          16.5          0             0 \r\n 1986          83            17.6          20.5          1.5           0 \r\n 1986          84            15.8          22            9             0 \r\n 1986          85            22.1          18.5          4             10.41 \r\n 1986          86            21.4          18.5         -3             0 \r\n 1986          87            21.6          26            9             0 \r\n 1986          88            23.1          30.5          11.5          0 \r\n 1986          89            22.1          27            10            0 \r\n 1986          90            23.1          27            12            0 \r\n 1986          91            23.3          21            8             6 \r\n 1986          92            10.8          16            3.5           0 \r\n 1986          93            7.2           19            8             25 \r\n 1986          94            12.9          21            9.5           14 \r\n 1986          95            16.8          19.5          8             7 \r\n 1986          96            23.3          19.5          3.5           0 \r\n 1986          97            19.9          23            9             0 \r\n 1986          98            23.6          18.5          5             0 \r\n 1986          99            25            15            1.5           0 \r\n 1986          100           25.6          17.5         -0.5           0 \r\n 1986          101           25.3          21.5          2.5           0 \r\n 1986          102           9.7           18.5          7.5           0 \r\n 1986          103           18.4          18            3.5           0 \r\n 1986          104           6.4           18           -2             8 \r\n 1986          105           2.3           5            -1.5           2 \r\n 1986          106           24.8          13.5          0.5           0 \r\n 1986          107           9.4           14            3             0 \r\n 1986          108           5.2           16            7.5           4 \r\n 1986          109           24            18            5.5           5 \r\n 1986          110           13.6          17.5          4             0 \r\n 1986          111           6.2           10            1             5 \r\n 1986          112           26.8          11.5         -3.5           0 \r\n 1986          113           26.2          21.5          4             0 \r\n 1986          114           23.2          25.5          12            0 \r\n 1986          115           22.5          29            15.5          0 \r\n 1986          116           23.7          29.5          16.5          0 \r\n 1986          117           10.8          26.5          16            0 \r\n 1986          118           10.6          19.5          4.5           7 \r\n 1986          119           16.4          24.5          7.5           0 \r\n 1986          120           4.2           24.5          12.5          34 \r\n 1986          121           27.8          19            6.5           23 \r\n 1986          122           26.8          17            2             0 \r\n 1986          123           15.8          18            7.5           0 \r\n 1986          124           22.4          24.5          11            0 \r\n 1986          125           21.1          27            15            0 \r\n 1986          126           12            26.5          14            0 \r\n 1986          127           22.9          26.5          12.5          17 \r\n 1986          128           17            28            15.5          0 \r\n 1986          129           13.5          27            16            15 \r\n 1986          130           8.2           24            15.5          6 \r\n 1986          131           16.8          23            15            24 \r\n 1986          132           28.4          26.5          12            0 \r\n 1986          133           13.4          25            11.5          2 \r\n 1986          134           29.6          23.5          8.5           3 \r\n 1986          135           5.3           22            12.5          9 \r\n 1986          136           6.3           18.5          10            20 \r\n 1986          137           2.7           18            10.5          48 \r\n 1986          138           20.5          18            8             10 \r\n 1986          139           26.6          20.5          7             0 \r\n 1986          140           24.8          20.5          8             0 \r\n 1986          141           28.6          21.5          7             0 \r\n 1986          142           30.6          21.5          7             0 \r\n 1986          143           17.5          21.5          10            0 \r\n 1986          144           24.6          23.5          12.5          0 \r\n 1986          145           15.7          23            12            6 \r\n 1986          146           16.7          22            11            0 \r\n 1986          147           7.6           21            13.5          3 \r\n 1986          148           12.9          22.5          12            9 \r\n 1986          149           18.1          24            14            6 \r\n 1986          150           25.1          26.5          12            12 \r\n 1986          151           23.9          28.5          14.5          0 \r\n 1986          152           26            31            17            0 \r\n 1986          153           30.5          27            11.5          0 \r\n 1986          154           27.6          26.5          9.5           0 \r\n 1986          155           18.1          28.5          17            0 \r\n 1986          156           9.3           26.5          17.5          8 \r\n 1986          157           11.1          25            16.5          0 \r\n 1986          158           21.5          28            17            0 \r\n 1986          159           29.6          27.5          14.5          0 \r\n 1986          160           16.3          26.5          16.5          0 \r\n 1986          161           22.8          30            19.5          7 \r\n 1986          162           8.8           28            16.5          9 \r\n 1986          163           25.6          25.5          14            1 \r\n 1986          164           27.7          27            16            0 \r\n 1986          165           11.5          26            16            6 \r\n 1986          166           18.2          27            15.5          0 \r\n 1986          167           30.5          29.5          18.5          0 \r\n 1986          168           27.1          29.5          14.5          0 \r\n 1986          169           22.5          30            17            0 \r\n 1986          170           27.7          32.5          20.5          0 \r\n 1986          171           29.9          33            19            0 \r\n 1986          172           20.5          33            20            0 \r\n 1986          173           18.8          30            19            12 \r\n 1986          174           28.5          29.5          14.5          0 \r\n 1986          175           32            29            14            0 \r\n 1986          176           30.6          29.5          14            0 \r\n 1986          177           24.2          32            20            0 \r\n 1986          178           14.9          32.5          22.5          0 \r\n 1986          179           20.4          32.5          19.5          10 \r\n 1986          180           16.2          31.5          19.5          0 \r\n 1986          181           19.9          30            19            20 \r\n 1986          182           5.1           27            18            0 \r\n 1986          183           27.5          26.5          16.5          10 \r\n 1986          184           25.4          28.5          14.5          0 \r\n 1986          185           28.5          32            21            0 \r\n 1986          186           25.5          33            23            0 \r\n 1986          187           4.5           30            20.5          13 \r\n 1986          188           20.1          26            19            15 \r\n 1986          189           22.3          30.5          21            14 \r\n 1986          190           18.9          30.5          19.5          8 \r\n 1986          191           16.9          30            19.5          17 \r\n 1986          192           23.2          29            19.5          0 \r\n 1986          193           22.4          28.5          18            36 \r\n 1986          194           24            30.5          17            10 \r\n 1986          195           15.3          29            19.5          24 \r\n 1986          196           27.4          31.5          20.5          0 \r\n 1986          197           29            33            22            0 \r\n 1986          198           29.8          33.5          22            0 \r\n 1986          199           29.2          33.5          22.5          0 \r\n 1986          200           27.2          33            22.5          0 \r\n 1986          201           26.8          30.5          17.5          0 \r\n 1986          202           28.9          28.5          15            0 \r\n 1986          203           27.8          30            16            0 \r\n 1986          204           23.9          31.5          18            0 \r\n 1986          205           20.9          32            21            0 \r\n 1986          206           23.7          31            19.5          3 \r\n 1986          207           17.6          29            18            0 \r\n 1986          208           18.6          30.5          19            0 \r\n 1986          209           26.6          33            20            4 \r\n 1986          210           27.8          33.5          18            9 \r\n 1986          211           17.6          31            21.5          0 \r\n 1986          212           19.3          29            20.5          0 \r\n 1986          213           18            28.5          14.5          0 \r\n 1986          214           26.2          26.5          13.5          0 \r\n 1986          215           27            26            12            0 \r\n 1986          216           8.2           24.5          12.5          0 \r\n 1986          217           2.1           21            16            12 \r\n 1986          218           14.8          24            16            20 \r\n 1986          219           23.9          27.5          16            0 \r\n 1986          220           25.1          28            14.5          0 \r\n 1986          221           11.8          27.5          14            0 \r\n 1986          222           21.1          26            15            11 \r\n 1986          223           28.2          24.5          9.5           0 \r\n 1986          224           9             23.5          13            0 \r\n 1986          225           8.3           23            15            16 \r\n 1986          226           13.1          27            17            52 \r\n 1986          227           17.7          29.5          19            0 \r\n 1986          228           21.4          30            18.5          0 \r\n 1986          229           19.9          30            18.5          0 \r\n 1986          230           20.1          28.5          18            0 \r\n 1986          231           23.3          27            16            0 \r\n 1986          232           18.2          27.5          14            0 \r\n 1986          233           18            27            17            0 \r\n 1986          234           20.2          29            17            0 \r\n 1986          235           21.5          27            13.5          0 \r\n 1986          236           18.1          25            12            0 \r\n 1986          237           20.9          30.5          15.5          0 \r\n 1986          238           10.8          29.5          19            0 \r\n 1986          239           20.3          23            10.5          0 \r\n 1986          240           22.5          20            4.5           0 \r\n 1986          241           22.2          22            7.5           0 \r\n 1986          242           22.9          26            12.5          0 \r\n 1986          243           23.4          27.5          12.5          0 \r\n 1986          244           20.5          27.5          12.5          0 \r\n 1986          245           15.4          27            13.5          0 \r\n 1986          246           12.1          27.5          17.5          0 \r\n 1986          247           24.1          26.5          16            2 \r\n 1986          248           11.8          24.5          11            0 \r\n 1986          249           3.2           20.5          10            0 \r\n 1986          250           19.3          18.5          7             6 \r\n 1986          251           23.7          20.5          3.5           0 \r\n 1986          252           8.2           24            12            0 \r\n 1986          253           10.9          28.5          17.5          7 \r\n 1986          254           5.6           23            15            23 \r\n 1986          255           22.5          22            8.5           3 \r\n 1986          256           15.8          24            11.5          0 \r\n 1986          257           16.6          26.5          12.5          0 \r\n 1986          258           12.7          25.5          14.5          3 \r\n 1986          259           12.7          23.5          11.5          0 \r\n 1986          260           4.6           23            13            4 \r\n 1986          261           10.1          24            16            15 \r\n 1986          262           9.8           26.5          16.5          64 \r\n 1986          263           13.2          26.5          17            18 \r\n 1986          264           18.8          29.5          19            0 \r\n 1986          265           7.3           28.5          18            0 \r\n 1986          266           4.5           23.5          16.5          34 \r\n 1986          267           5.4           26            18.5          13 \r\n 1986          268           19.6          29            21            7 \r\n 1986          269           15            29.5          21            0 \r\n 1986          270           12.8          28.5          17.5          0 \r\n 1986          271           7.7           29            16.5          5 \r\n 1986          272           6.1           27            17            30 \r\n 1986          273           8.9           20            12            14 \r\n 1986          274           8             16            11            4 \r\n 1986          275           4.2           18.5          12.5          3 \r\n 1986          276           3.8           19.5          14.5          14 \r\n 1986          277           8.6           17            9.5           6 \r\n 1986          278           13.1          18.5          6.5           0 \r\n 1986          279           17.7          18            1.5           0 \r\n 1986          280           17.5          22.5          7             0 \r\n 1986          281           10.3          21.5          10.5          0 \r\n 1986          282           8.3           16.5          8             2 \r\n 1986          283           9.9           16.5          4.5           0 \r\n 1986          284           1.7           16.5          8             0 \r\n 1986          285           4.5           12.5          3             36 \r\n 1986          286           5.8           7             1             0 \r\n 1986          287           14.6          10           -2             0 \r\n 1986          288           16.9          13.5         -0.5           0 \r\n 1986          289           16.1          21            1.5           0 \r\n 1986          290           15.9          19.5          4             0 \r\n 1986          291           15.8          17            2.5           0 \r\n 1986          292           14.8          21            4.5           0 \r\n 1986          293           13.6          23.5          7.5           0 \r\n 1986          294           13            23.5          9             0 \r\n 1986          295           2.3           19            9.5           0 \r\n 1986          296           2.1           14.5          11            3 \r\n 1986          297           1.7           14.5          11.5          14 \r\n 1986          298           2.7           13            9.5           5 \r\n 1986          299           5.1           12            7             11 \r\n 1986          300           14.6          19.5          3             0 \r\n 1986          301           12.5          22            7             0 \r\n 1986          302           13.9          18            4             0 \r\n 1986          303           12.8          16            1             0 \r\n 1986          304           7.5           20            5.5           0 \r\n 1986          305           2.8           13.5          1             6 \r\n 1986          306           12.2          6.5          -1.5           3 \r\n 1986          307           7.3           10            1             0 \r\n 1986          308           6.3           8             0.5           0 \r\n 1986          309           12.1          10            0.5           0 \r\n 1986          310           12.4          12.5          1.5           0 \r\n 1986          311           4.2           14.5          5.5           0 \r\n 1986          312           12.4          14.5          0             5 \r\n 1986          313           12            7            -4             0 \r\n 1986          314           5.2           2.5          -7             0 \r\n 1986          315           7.6          -2.5          -16            2 \r\n 1986          316           7.4          -3.5          -14            0 \r\n 1986          317           9.5          -6            -18            0 \r\n 1986          318           5.9          -0.5          -13            0 \r\n 1986          319           9.7           6            -7             0 \r\n 1986          320           10.6          8            -6.5           0 \r\n 1986          321           5.4           7            -4.5           0 \r\n 1986          322           3.4           4            -3             0 \r\n 1986          323           1.9           2            -4             0 \r\n 1986          324           3.1           1.5          -4             4 \r\n 1986          325           8.9           8.5          -8             0 \r\n 1986          326           9.5           14            0             0 \r\n 1986          327           3.7           7.5          -2.5           3 \r\n 1986          328           9.4           6            -7             0 \r\n 1986          329           7.1           9.5          -4.5           0 \r\n 1986          330           5.8           6.5          -3.5           0 \r\n 1986          331           9.5           7.5          -6             0 \r\n 1986          332           9.5           11           -3.5           0 \r\n 1986          333           8.4           12.5         -3.5           0 \r\n 1986          334           2.7           7            -0.5           0 \r\n 1986          335           1.2           3            -1.5           0 \r\n 1986          336           4.6           2            -0.5           3.56 \r\n 1986          337           8.9           2.5          -3             0 \r\n 1986          338           7.7           0            -6.5           0 \r\n 1986          339           9.8           2            -10            0 \r\n 1986          340           4.4           4            -2             0 \r\n 1986          341           3.9           4.5           1             11.68 \r\n 1986          342           3.2           3.5           0.5           7.11 \r\n 1986          343           7.4           1.5          -8             1.52 \r\n 1986          344           7.8          -6            -14.5          0 \r\n 1986          345           5.1           0.5          -11.5          0 \r\n 1986          346           3.8          -2            -12.5          0 \r\n 1986          347           6.8          -3            -17.5          0 \r\n 1986          348           9             6            -7.5           0 \r\n 1986          349           5.2           6            -4             0 \r\n 1986          350           3.7           4            -2.5           0 \r\n 1986          351           7.7           4.5          -0.5           0 \r\n 1986          352           6.5           3.5          -2             0 \r\n 1986          353           9             7            -5             0 \r\n 1986          354           8.2           4.5          -6             0 \r\n 1986          355           4.3           1            -5             0 \r\n 1986          356           7.8           3.5          -2.5           0 \r\n 1986          357           6.4           3.5          -5             0 \r\n 1986          358           5.3           0            -4.5           0 \r\n 1986          359           7.8           2.5          -5             0 \r\n 1986          360           6.2           0.5          -7             0 \r\n 1986          361           4.7          -0.5          -7.5           0 \r\n 1986          362           3.8           0            -5             0 \r\n 1986          363           3.1           1.5          -3             0 \r\n 1986          364           7.2           3            -3             0 \r\n 1986          365           7.4           4            -4.5           0 \r\n 1987          1             6.2           2            -5             0 \r\n 1987          2             8             2            -6.5           0 \r\n 1987          3             5.7           4.5          -5.5           0 \r\n 1987          4             6.9           5.5          -4             0 \r\n 1987          5             4.9           5            -3.5           0 \r\n 1987          6             4.6           5.5          -1.5           0 \r\n 1987          7             3.4           1.5          -2.5           0 \r\n 1987          8             8.2           2            -4.5           0 \r\n 1987          9             3.2           1            -5             0 \r\n 1987          10            3.7          -1.5          -6.5           7.37 \r\n 1987          11            4.4           2            -9.5           0 \r\n 1987          12            8.3           9            -3.5           0 \r\n 1987          13            10.1          14.5         -0.5           0 \r\n 1987          14            9             9.5           0             0 \r\n 1987          15            8.8           3            -8             0 \r\n 1987          16            7.1          -5            -11.5          0 \r\n 1987          17            5.2          -3.5          -9             0.51 \r\n 1987          18            9.5          -2            -8.5           0.76 \r\n 1987          19            7.9          -0.5          -12            0 \r\n 1987          20            9.6          -0.5          -13            0 \r\n 1987          21            6.3           1.5          -7.5           0 \r\n 1987          22            10.4         -1            -12            0.25 \r\n 1987          23            9.6          -7.5          -22            0.25 \r\n 1987          24            10.1         -5.5          -19.5          0 \r\n 1987          25            7.7          -5            -15            0 \r\n 1987          26            6.8          -4            -10.5          0 \r\n 1987          27            9.6           5            -8             0 \r\n 1987          28            10.8          5            -8             0 \r\n 1987          29            5.9           7.5          -1             0 \r\n 1987          30            9.1           6            -1             0 \r\n 1987          31            7             9            -5.5           0 \r\n 1987          32            12.1          13.5          0             0 \r\n 1987          33            9.5           17           -1             0 \r\n 1987          34            10.5          9            -4.5           0 \r\n 1987          35            7.6           5.5          -3             0 \r\n 1987          36            4             3.5          -1             5.33 \r\n 1987          37            12.3          8            -4.5           0 \r\n 1987          38            11.9          15.5         -2             0 \r\n 1987          39            13.8          10.5         -3.5           0 \r\n 1987          40            13.9          6            -10            0 \r\n 1987          41            13.1          11.5         -5             0 \r\n 1987          42            13.3          15           -3             0 \r\n 1987          43            10.5          10.5         -1.5           0 \r\n 1987          44            8.7           13           -4.5           0 \r\n 1987          45            5.5           10           -1             0 \r\n 1987          46            7.5           1.5          -3.5           0 \r\n 1987          47            8.4          -1            -6.5           0 \r\n 1987          48            10            0            -7.5           0 \r\n 1987          49            15.4          5.5          -9             0 \r\n 1987          50            14.6          8            -5.5           0 \r\n 1987          51            9.5           7.5          -4             0 \r\n 1987          52            12.8          10.5         -4.5           0 \r\n 1987          53            9.7           6.5          -5             0 \r\n 1987          54            15.9          8.5          -8             0 \r\n 1987          55            12.7          8.5          -4             0 \r\n 1987          56            11.8          10           -2.5           0 \r\n 1987          57            13.6          9.5          -1.5           0 \r\n 1987          58            6.9           6            -0.5           0 \r\n 1987          59            4.1           5             0.5           7.87 \r\n 1987          60            5.6           2.5          -0.5           30.73 \r\n 1987          61            14.3          11           -4             0 \r\n 1987          62            17.2          10.5         -4             0 \r\n 1987          63            12.5          17.5         -0.5           0 \r\n 1987          64            17.7          18.5          1.5           0 \r\n 1987          65            17.6          20.5          0.5           0 \r\n 1987          66            18            22.5          4             0 \r\n 1987          67            17.7          21            2.5           0 \r\n 1987          68            6.8           8            -3.5           0 \r\n 1987          69            16            1            -8.5           0 \r\n 1987          70            17.2          7            -6             0 \r\n 1987          71            9.8           10.5         -3             0 \r\n 1987          72            17            17.5         -0.5           0 \r\n 1987          73            11.5          16.5          4.5           0 \r\n 1987          74            4.8           8.5           1.5           6.86 \r\n 1987          75            6.5           5             0.5           0 \r\n 1987          76            7.9           8             2.5           0 \r\n 1987          77            5.8           10            2.5           13.21 \r\n 1987          78            18.2          15            3             1.27 \r\n 1987          79            14.9          17.5          6.5           0 \r\n 1987          80            18.3          17.5          5.5           0 \r\n 1987          81            18.1          19            1.5           0 \r\n 1987          82            16            21.5          9             0 \r\n 1987          83            6.8           17            7.5           8.64 \r\n 1987          84            8.8           10.5          4.5           4.06 \r\n 1987          85            9.7           8.5           2.5           0 \r\n 1987          86            18.4          11.5          1             0 \r\n 1987          87            8.3           9             0.5           0 \r\n 1987          88            10            4            -4             17.53 \r\n 1987          89            21.8          1            -8.5           0 \r\n 1987          90            21.7          7            -7.5           0 \r\n 1987          91            7.9           8.5           0.5           0 \r\n 1987          92            19.5          5            -4.5           0 \r\n 1987          93            20.3          7.5          -6.5           0 \r\n 1987          94            22.5          11.5         -5             0 \r\n 1987          95            24.3          15.5         -1.5           0 \r\n 1987          96            13.4          17.5          3.5           0 \r\n 1987          97            23.6          21.5          1             0 \r\n 1987          98            23.1          23            3.5           0 \r\n 1987          99            23            24.5          4.5           0 \r\n 1987          100           21.3          21.5          7             1 \r\n 1987          101           10.9          13.5          3             0 \r\n 1987          102           20.2          18            0             0 \r\n 1987          103           4.6           15.5          7.5           8 \r\n 1987          104           3.3           13            8.5           22 \r\n 1987          105           7.2           13.5          8             13 \r\n 1987          106           23.2          21.5          4.5           0 \r\n 1987          107           24            25.5          7.5           0 \r\n 1987          108           26            26            9.5           0 \r\n 1987          109           20.9          28.5          15            0 \r\n 1987          110           20.9          30.5          15.5          0 \r\n 1987          111           6             23.5          8             11 \r\n 1987          112           5.9           10            7             3 \r\n 1987          113           23.1          19            6             3 \r\n 1987          114           26.6          20            6.5           0 \r\n 1987          115           26.9          27            8.5           0 \r\n 1987          116           25.8          31            10.5          0 \r\n 1987          117           27            25.5          11.5          0 \r\n 1987          118           26.3          24            4             0 \r\n 1987          119           27.9          30.5          13            0 \r\n 1987          120           28            28            9             0 \r\n 1987          121           25.9          29.5          7.5           0 \r\n 1987          122           22            29.5          14            0 \r\n 1987          123           4.9           21.5          11            40 \r\n 1987          124           14.2          17.5          9             16 \r\n 1987          125           18.4          18.5          7             0 \r\n 1987          126           28.1          24            6.5           0 \r\n 1987          127           28.5          25            8.5           0 \r\n 1987          128           27.2          25            8             0 \r\n 1987          129           29.4          27.5          11.5          0 \r\n 1987          130           25.7          29            15            0 \r\n 1987          131           18.1          28.5          17            0 \r\n 1987          132           29.4          26            9.5           0 \r\n 1987          133           27.3          28.5          8.5           0 \r\n 1987          134           19.6          28.5          17.5          0 \r\n 1987          135           29.6          26            8.5           0 \r\n 1987          136           30.8          27.5          9             0 \r\n 1987          137           22.9          29.5          13.5          0 \r\n 1987          138           20.5          30            17            0 \r\n 1987          139           17.2          29            16            8 \r\n 1987          140           18            29.5          16.5          13 \r\n 1987          141           18.5          27.5          15.5          4 \r\n 1987          142           15.4          20.5          7.5           0 \r\n 1987          143           27.5          19.5          6.5           0 \r\n 1987          144           7.4           18.5          9             6 \r\n 1987          145           13.7          24.5          12            3 \r\n 1987          146           15.1          27            17            0 \r\n 1987          147           18.5          26            17            23 \r\n 1987          148           22.2          26            17            7 \r\n 1987          149           20.7          26            18            0 \r\n 1987          150           25.1          27.5          16            0 \r\n 1987          151           24.5          28.5          15            0 \r\n 1987          152           28.9          29            16            16 \r\n 1987          153           10            25.5          15.5          10 \r\n 1987          154           28.5          23.5          10.5          4 \r\n 1987          155           31.1          24.5          8             0 \r\n 1987          156           30.6          28            13            0 \r\n 1987          157           30.1          29            13.5          0 \r\n 1987          158           28.8          30.5          17.5          0 \r\n 1987          159           25.9          31.5          18.5          0 \r\n 1987          160           13.8          27.5          17            18 \r\n 1987          161           10.5          22            14            1 \r\n 1987          162           11.5          27            18.5          3 \r\n 1987          163           30.5          33            20            0 \r\n 1987          164           29.3          34.5          17.5          0 \r\n 1987          165           30.9          35.5          20.5          0 \r\n 1987          166           30.8          35            20            0 \r\n 1987          167           27.2          33            18.5          0 \r\n 1987          168           17.4          32            20            0 \r\n 1987          169           15.9          31            19.5          9 \r\n 1987          170           17.5          30.5          19            6 \r\n 1987          171           12.4          28            20.5          18 \r\n 1987          172           24.1          30            19.5          11 \r\n 1987          173           28.4          31.5          19            17 \r\n 1987          174           12.6          30.5          19.5          4 \r\n 1987          175           27.6          32            18.5          0 \r\n 1987          176           23.6          30            17.5          15 \r\n 1987          177           31.5          26.5          14            0 \r\n 1987          178           31.6          26.5          11.5          0 \r\n 1987          179           29.9          29            14            0 \r\n 1987          180           18.7          28            18.5          1 \r\n 1987          181           19.2          25.5          16.5          5 \r\n 1987          182           25.2          27.5          14.5          0 \r\n 1987          183           25.1          29.5          16            0 \r\n 1987          184           24.5          29            18.5          0 \r\n 1987          185           19.8          29.5          18            5 \r\n 1987          186           12.6          28            18.5          0 \r\n 1987          187           26.8          32.5          18            0 \r\n 1987          188           9.3           28.5          18.5          29 \r\n 1987          189           19            29.5          18.5          18 \r\n 1987          190           16.2          29            17.5          24 \r\n 1987          191           10.3          28.5          19.5          15 \r\n 1987          192           24.7          30.5          21            0 \r\n 1987          193           12.2          28            18.5          33 \r\n 1987          194           23.2          23.5          14.5          0 \r\n 1987          195           16            24            11.5          0 \r\n 1987          196           28.7          28            13.5          9 \r\n 1987          197           28            30            17            0 \r\n 1987          198           23.4          30.5          21            0 \r\n 1987          199           14.3          29.5          21.5          0 \r\n 1987          200           24.5          32            23            0 \r\n 1987          201           24.2          32.5          23.5          0 \r\n 1987          202           22.2          31.5          21.5          0 \r\n 1987          203           22.5          31.5          21            0 \r\n 1987          204           25.4          32.5          20.5          0 \r\n 1987          205           25            34            22            0 \r\n 1987          206           27.3          35            20.5          0 \r\n 1987          207           26            35.5          22            0 \r\n 1987          208           25.4          35            22.5          0 \r\n 1987          209           24.6          35            21.5          0 \r\n 1987          210           24.9          35.5          22            0 \r\n 1987          211           24.3          36            22.5          0 \r\n 1987          212           26.2          36.5          23            0 \r\n 1987          213           28.2          37.5          23.5          0 \r\n 1987          214           26            36            23.5          0 \r\n 1987          215           12.8          34            22.5          6 \r\n 1987          216           24            28.5          19            0 \r\n 1987          217           28.3          29            13            0 \r\n 1987          218           15.2          28.5          16            0 \r\n 1987          219           11.2          28.5          18            0 \r\n 1987          220           8.8           28            20            44 \r\n 1987          221           23.3          28            17.5          0 \r\n 1987          222           21.9          29.5          17            0 \r\n 1987          223           23.4          29.5          17.5          0 \r\n 1987          224           12.6          30            18            0 \r\n 1987          225           4.9           27.5          19.5          37 \r\n 1987          226           12.7          30.5          21.5          15 \r\n 1987          227           25.2          32            20            24 \r\n 1987          228           17.3          32            22            0 \r\n 1987          229           19.6          30.5          17            0 \r\n 1987          230           24.1          28            17.5          0 \r\n 1987          231           14.7          26.5          13            0 \r\n 1987          232           12.3          28            14.5          0 \r\n 1987          233           23.1          32.5          19.5          18 \r\n 1987          234           7.1           29            16            0 \r\n 1987          235           21.1          21.5          12            0 \r\n 1987          236           6.1           19.5          11.5          0 \r\n 1987          237           3.7           18.5          12            19 \r\n 1987          238           2.3           19.5          13.5          98 \r\n 1987          239           7             20            14            10 \r\n 1987          240           18.1          23            11.5          0 \r\n 1987          241           23.7          27            10.5          0 \r\n 1987          242           21.9          24.5          14.5          0 \r\n 1987          243           24.4          23            10.5          0 \r\n 1987          244           18.7          25            8             0 \r\n 1987          245           23.3          24.5          10.5          0 \r\n 1987          246           23.3          24.5          10            0 \r\n 1987          247           21.6          29.5          14            0 \r\n 1987          248           16.6          29.5          15            0 \r\n 1987          249           6.2           26.5          17            8 \r\n 1987          250           17.1          27            16.5          0 \r\n 1987          251           16.9          24.5          13.5          3 \r\n 1987          252           21.4          25            8             0 \r\n 1987          253           14.9          24            13            3 \r\n 1987          254           20.3          24            12.5          0 \r\n 1987          255           18.3          22            9             0 \r\n 1987          256           19.1          24            9             0 \r\n 1987          257           11            25.5          12            0 \r\n 1987          258           3.3           23.5          14.5          22 \r\n 1987          259           7.6           21.5          15.5          14 \r\n 1987          260           13.4          24            14            14 \r\n 1987          261           14.1          22.5          12            0 \r\n 1987          262           13.1          21            8             0 \r\n 1987          263           15.4          20            8.5           0 \r\n 1987          264           14.5          20            8.5           0 \r\n 1987          265           14.5          20            8.5           0 \r\n 1987          266           20.5          24.5          7             0 \r\n 1987          267           20.8          27.5          9.5           0 \r\n 1987          268           20.1          25.5          9.5           0 \r\n 1987          269           19.3          28            11.5          0 \r\n 1987          270           18            28            14.5          0 \r\n 1987          271           7.4           25            13.5          0 \r\n 1987          272           18.9          22            10.5          0 \r\n 1987          273           18.1          22.5          7             0 \r\n 1987          274           19.6          27            6             0 \r\n 1987          275           16.9          23.5          4             0 \r\n 1987          276           19.3          15.5         -2.5           0 \r\n 1987          277           18.9          23            4.5           0 \r\n 1987          278           16.9          21            10            0 \r\n 1987          279           16            17.5          6             0 \r\n 1987          280           18.6          13.5          0             0 \r\n 1987          281           15.7          17           -1             0 \r\n 1987          282           9.5           15            2.5           0 \r\n 1987          283           6.3           7.5           0             0 \r\n 1987          284           17.2          10.5         -6             2 \r\n 1987          285           17            18.5         -2             0 \r\n 1987          286           15.2          21.5          1.5           0 \r\n 1987          287           6.7           18            9             0 \r\n 1987          288           13.3          22.5          8             0 \r\n 1987          289           4.3           18.5          9             10 \r\n 1987          290           15.2          16            3.5           5 \r\n 1987          291           14.6          16            4.5           0 \r\n 1987          292           7.6           13            2.5           0 \r\n 1987          293           12.9          8.5           0             0 \r\n 1987          294           14.4          9.5          -4             0 \r\n 1987          295           12.4          14.5          2.5           0 \r\n 1987          296           13.7          14           -2.5           0 \r\n 1987          297           13.5          10            1.5           3 \r\n 1987          298           9.3           9.5          -3.5           0 \r\n 1987          299           4.3           10.5          4.5           3 \r\n 1987          300           12.4          12            0.5           0 \r\n 1987          301           12.3          14           -3.5           0 \r\n 1987          302           13            19.5          1             0 \r\n 1987          303           13.1          24.5          3.5           0 \r\n 1987          304           2.7           19.5          7.5           0 \r\n 1987          305           6.1           19            12.5          38 \r\n 1987          306           5.7           19.5          14            0 \r\n 1987          307           12.8          22.5          13            0 \r\n 1987          308           13.3          20.5          6.5           0 \r\n 1987          309           12.7          13.5         -0.5           0 \r\n 1987          310           7.7           14.5          6             0 \r\n 1987          311           5.4           17            7             0 \r\n 1987          312           5.7           14.5          4.5           0 \r\n 1987          313           12.9          8            -3             0 \r\n 1987          314           13.1          7            -5.5           0 \r\n 1987          315           12.2          10.5         -5.5           0 \r\n 1987          316           10.2          15.5         -1             0 \r\n 1987          317           6.2           15.5          2             0 \r\n 1987          318           10.3          17            0.5           0 \r\n 1987          319           3.2           14.5          7.5           0 \r\n 1987          320           4.2           14            8.5           16 \r\n 1987          321           3.4           10.5          1             14 \r\n 1987          322           11.5          8            -4             0 \r\n 1987          323           9.3           8            -1             0 \r\n 1987          324           11.3          4.5          -6             0 \r\n 1987          325           11.2          8            -7.5           0 \r\n 1987          326           6.5           12.5          0             0 \r\n 1987          327           11.2          11            0             0 \r\n 1987          328           3             3.5          -2             0 \r\n 1987          329           3.7           3             0.5           7 \r\n 1987          330           6.6           3             1             0 \r\n 1987          331           4.5           3             1             4 \r\n 1987          332           4             3.5           0.5           23 \r\n 1987          333           7.2           2.5           0             12 \r\n 1987          334           6.8           1            -2             0 \r\n 1987          335           4.1          -1            -3             0 \r\n 1987          336           6.9           6.5          -5.5           0 \r\n 1987          337           5.9           4.5          -2             0 \r\n 1987          338           8.9           3.5          -6.5           0 \r\n 1987          339           7.2           6            -5.5           0 \r\n 1987          340           2.5           4.5           0             0 \r\n 1987          341           2.6           4             1             1.02 \r\n 1987          342           1.3           10.5          2.5           0 \r\n 1987          343           9.1           10.5          0.5           6.35 \r\n 1987          344           8.5           11           -5             0 \r\n 1987          345           9.7           10.5          2.5           0 \r\n 1987          346           5.4           6.5           0             0 \r\n 1987          347           6.9           5            -5.5           0 \r\n 1987          348           4.2           0.5          -5.5           0 \r\n 1987          349           2.9          -3            -7.5           3.05 \r\n 1987          350           7.9          -4            -11.5          0 \r\n 1987          351           7.6          -2.5          -16.5          0 \r\n 1987          352           4.2           1.5          -6.5           0 \r\n 1987          353           2.4           2            -0.5           2.29 \r\n 1987          354           9.4           2            -4             24.89 \r\n 1987          355           6.6           4.5          -5             0 \r\n 1987          356           9.2           5            -2.5           0 \r\n 1987          357           7.8           7            -1.5           0 \r\n 1987          358           4.4           6.5          -1.5           0.76 \r\n 1987          359           4.1          -0.5          -6.5           0 \r\n 1987          360           8.3          -0.5          -8             0 \r\n 1987          361           3.4           0.5          -4             5.84 \r\n 1987          362           3             0            -4             7.37 \r\n 1987          363           4.6          -2            -7.5           1.27 \r\n 1987          364           5.8           1.5          -6.5           0 \r\n 1987          365           7.6           1            -11            0 \r\n 1988          1             2.335634      3.176111     -13.50611      0 \r\n 1988          2             2.335509     -2.277778E-02               -6.881667      0 \r\n 1988          3             2.146601     -5.53         -18.09833      0 \r\n 1988          4             2.04129      -13.91944     -20.65278      0 \r\n 1988          5             1.749351     -15.07222     -22.92778      0 \r\n 1988          6             1.457413     -7.309444     -18.09278      0 \r\n 1988          7             7.8          -9.718333     -15.165        0 \r\n 1988          8             8.8          -11.77944     -18.70944      0 \r\n 1988          9             8.9          -4.541111     -20.53111      0.25 \r\n 1988          10            9.2           4.126667     -7.636667      0 \r\n 1988          11            5.8           2.967778     -12.04056      0 \r\n 1988          12            8.2          -4.428889     -18.97556      0 \r\n 1988          13            8.4           1.689444     -12.45889      0 \r\n 1988          14            6.1           10.17667     -7.201111      0 \r\n 1988          15            9.7           10.29556      2.928889      0 \r\n 1988          16            9.3           6.682222     -1.803889      0 \r\n 1988          17            6.1           1.415        -6.082778      0 \r\n 1988          18            6.2           2.116111     -0.7911111     0 \r\n 1988          19            2.8           1.4          -6.537222      0.76 \r\n 1988          20            5.4          -4.107778     -9.278334      1.02 \r\n 1988          21            6.1          -0.4288889    -10.41         0 \r\n 1988          22            6.9           3.755556     -10.25333      0 \r\n 1988          23            5.3           3.248889     -14.38         0.51 \r\n 1988          24            8             0.1377778    -18.93333      0.76 \r\n 1988          25            10.2         -8.496667     -21.95111      0.25 \r\n 1988          26            9.2           1.680556     -11.42389      0 \r\n 1988          27            8.8           6.650556     -7.768333      0 \r\n 1988          28            11.9          14.39167     -0.1238889     0 \r\n 1988          29            3.3           14.88         6.603333      0 \r\n 1988          30            3.75          12.58278     -6.87          0 \r\n 1988          31            4.2          -5.027778     -14.05944      0 \r\n 1988          32            3.8          -9.182777     -17.29333      0.51 \r\n 1988          33            10.7         -6.145555     -12.44333      0 \r\n 1988          34            3.9          -7.458889     -20.38556      0 \r\n 1988          35            10.2         -12.71333     -20.36667      4.83 \r\n 1988          36            11.4         -10.01778     -23.18222      0.25 \r\n 1988          37            10.8         -2.745556     -11.89333      0 \r\n 1988          38            11.2          1.456667     -15.87944      0 \r\n 1988          39            9.5           0.7483333    -12.94944      0 \r\n 1988          40            13.8         -5.706111     -16.235        0 \r\n 1988          41            4.3          -14.39167     -26.07055      1.02 \r\n 1988          42            5.2          -11.89667     -30.76667      1.27 \r\n 1988          43            3.7          -1.612222     -14.215        0 \r\n 1988          44            4.2           3.331111     -6.581111      0 \r\n 1988          45            3.1          -5.208889     -15.06833      0 \r\n 1988          46            6             7.168889     -8.485         0.51 \r\n 1988          47            7.9           6.842778     -6.137778      0 \r\n 1988          48            9.4           7.645        -6.118333      0 \r\n 1988          49            12.2          6.426111     -4.05          0 \r\n 1988          50            13.1          3.458333     -8.095         0 \r\n 1988          51            15.4          6.239444     -11.07667      0 \r\n 1988          52            9.3           8.725555      1.331111      0 \r\n 1988          53            12            3.222778     -7.088333      0 \r\n 1988          54            14           -0.1577778    -9.118333      0 \r\n 1988          55            16.7          5.011111     -10.93611      0 \r\n 1988          56            17.8          17.74222     -3.402778      0 \r\n 1988          57            17.5          13.67056     -1.734444      0 \r\n 1988          58            17.9          11.78778     -3.501667      0 \r\n 1988          59            16.5          12.01167     -4.554444      0 \r\n 1988          60            18.4          15.56222     -4.410555      0 \r\n 1988          61            16.2          9.706111     -2.584445      0 \r\n 1988          62            13            3.227222     -3.712778      0 \r\n 1988          63            12.9          4.672778     -9.096111      0 \r\n 1988          64            18.5          8.911667     -7.347222      0 \r\n 1988          65            16.6          13.455       -4.975555      0 \r\n 1988          66            18.4          17.36056     -0.28          0 \r\n 1988          67            12.3          14.96         1.412222      0 \r\n 1988          68            12.5          10.56944     -1.279444      0 \r\n 1988          69            16.7          12.94222     -5.675         0 \r\n 1988          70            17.8          20.07667      2.060555      0 \r\n 1988          71            16.3          14.76        -4.446111      0 \r\n 1988          72            4.9          -2.785        -9.912778      0 \r\n 1988          73            10.5         -1.976111     -11.59167      0 \r\n 1988          74            12.5          1.291667     -9.497222      0 \r\n 1988          75            17.7          2.53         -8.278334      0 \r\n 1988          76            12.4          1.985556     -5.247222      0 \r\n 1988          77            7.5           8.165        -7.183333      0 \r\n 1988          78            19.3          14.69833     -7.305555      0 \r\n 1988          79            14.6          16.72944     -3.802778      0 \r\n 1988          80            20.3          14.88889     -2.800555      0 \r\n 1988          81            19.1          28.16444      2.97          0 \r\n 1988          82            20.6          23.68444      0.2327778     0 \r\n 1988          83            19.4          21.70444      6.818333      0 \r\n 1988          84            5.1           15.99944      2.638889      0 \r\n 1988          85            16.5          15.73056      2.360556      11.94 \r\n 1988          86            18.8          22.07389     -3.604445      0 \r\n 1988          87            22.8          21.455        6.65          0 \r\n 1988          88            7.4           8.206111      1.561667      0 \r\n 1988          89            7.9           14.22778     -4.443333      0 \r\n 1988          90            23.1          14.22722     -2.463889      0 \r\n 1988          91            16.9          12.04056      5.038889      0 \r\n 1988          92            5             17.205        6.680555      12.446 \r\n 1988          93            11.7          14.18611      4.595556      0 \r\n 1988          94            11.9          26.495        6.409444      0 \r\n 1988          95            19.5          23.85389      5.693333      0 \r\n 1988          96            14            17.08556      4.314445      0 \r\n 1988          97            22.9          25.03111      0.5205556     0 \r\n 1988          98            23.1          25.69167      9.88          0 \r\n 1988          99            23.2          20.92389      5.804444      0 \r\n 1988          100           14.5          11.19         3.292222      0 \r\n 1988          101           14.2          17.06333      0.8777778     0 \r\n 1988          102           23.7          19.90611      0.1994444     0 \r\n 1988          103           25.9          25.03389      1.829444      0 \r\n 1988          104           22.4          16.19889      1.231667      0 \r\n 1988          105           25.3          13.65056     -3.046111      0 \r\n 1988          106           26.1          18.28222     -3.496667      0 \r\n 1988          107           25.9          23.74833      5.168334      0 \r\n 1988          108           19            16.8         -0.6716667     0 \r\n 1988          109           26.8          15.46        -6.33          0 \r\n 1988          110           28.1          20.62389      3.089444      0 \r\n 1988          111           26            15.95333      1.273889      0 \r\n 1988          112           7.8           13.66556      2.841111      0 \r\n 1988          113           7.4           12.39556      2.685555      0 \r\n 1988          114           7.8           19.20555     -3.546667      0 \r\n 1988          115           25.7          21.31611      8.206111      0 \r\n 1988          116           15.9          14.34722      4.447778      8.9154 \r\n 1988          117           5.5           13.47389      1.011111      0 \r\n 1988          118           21.9          19.77778     -0.55          0 \r\n 1988          119           28.4          22.75945      0.8961111     0 \r\n 1988          120           28.7          24.07         3.986667      0 \r\n 1988          121           27.5          25.51944      7.572778      0 \r\n 1988          122           23.7          25.70444      9.562222      0 \r\n 1988          123           25.8          23.105        11.92111      0 \r\n 1988          124           12.1          22.57111      4.586111      0 \r\n 1988          125           21.9          26.76611      8.682222      0 \r\n 1988          126           26.5          27.67111      5.653889      0 \r\n 1988          127           23.7          27.825        14.54722      0 \r\n 1988          128           17.1          25.31056      11.23056      10.3124 \r\n 1988          129           8.7           21.22833      10.42278      17.4244 \r\n 1988          130           19.4          23.94944      8.67          0 \r\n 1988          131           27.3          26.59         8.34          0 \r\n 1988          132           26.3          27.95944      10.62778      0 \r\n 1988          133           27.1          26.54389      10.89         0 \r\n 1988          134           27.7          29.62833      10.23056      0 \r\n 1988          135           27.2          31.37278      14.77278      0 \r\n 1988          136           26            27.40333      7.958889      0 \r\n 1988          137           29.5          23.31333      3.451111      0 \r\n 1988          138           29.8          25.63222      8.772223      0 \r\n 1988          139           22.5          27.47         12.17222      0 \r\n 1988          140           19.5          29.52444      10.715        0 \r\n 1988          141           26.9          28.79611      11.78167      0 \r\n 1988          142           12.9          23.79278      15.13389      5.3086 \r\n 1988          143           4.5           20.37778      14.72389      14.1732 \r\n 1988          144           4.1           23.51         10.17         8.001 \r\n 1988          145           30.2          24.03444      7.471111      0 \r\n 1988          146           32.4          25.14111      9.038333      0 \r\n 1988          147           30.6          27.36555      11.97944      0 \r\n 1988          148           20.1          29.58611      15.61389      0 \r\n 1988          149           25            29.33778      15.07         0 \r\n 1988          150           24.7          30.07333      14.57667      0 \r\n 1988          151           27            30.96         14.62667      0 \r\n 1988          152           24.7          31.04389      17.60722      0 \r\n 1988          153           21.5          29.06722      14.40333      11.7602 \r\n 1988          154           22.5          27.20333      14.19889      0 \r\n 1988          155           23.2          24.49389      10.04611      0 \r\n 1988          156           30.2          26.96056      8.847777      0 \r\n 1988          157           29.54921      29.22278      9.556111      0 \r\n 1988          158           29.67134      30.91667      12.61611      0 \r\n 1988          159           17.04398      30.50889      18.465        8.8646 \r\n 1988          160           28.18447      25.24889      9.817778      0 \r\n 1988          161           26.94283      25.98056      6.636667      0 \r\n 1988          162           30.47676      28.27         10.645        0 \r\n 1988          163           28.20154      30.30056      14.40111      0 \r\n 1988          164           27.83854      32.64222      16.11111      0 \r\n 1988          165           26.70773      32.58167      17.02444      0 \r\n 1988          166           32.1701       30.44667      16.47445      0 \r\n 1988          167           28.80575      29.19167      11.41111      0 \r\n 1988          168           30.3404       29.42833      14.215        0 \r\n 1988          169           12.92693      32.54889      18.56222      0 \r\n 1988          170           29.41172      35.22167      20.58167      0 \r\n 1988          171           27.69335      37.49333      21.66778      0 \r\n 1988          172           28.68575      37.98111      22.81167      0 \r\n 1988          173           6.788665      37.32944      22.685        0 \r\n 1988          174           28.06071      35.87556      18.68722      0 \r\n 1988          175           24.12486      37.29055      23.04222      0 \r\n 1988          176           29.02307      38.90333      22.58722      0 \r\n 1988          177           31.54138      36.00444      16.61278      0 \r\n 1988          178           31.77518      29.15889      10.97056      0 \r\n 1988          179           31.28912      34.51722      12.03778      0 \r\n 1988          180           30.00848      35.46389      17.04333      4.3942 \r\n 1988          181           11.15266      22.76278      14.23778      0 \r\n 1988          182           25.76842      22.66         13.48944      0 \r\n 1988          183           28.26476      25.10833      12.68111      0 \r\n 1988          184           29.12775      29.575        12.20167      0 \r\n 1988          185           29.21788      33.60889      13.275        0 \r\n 1988          186           30.31375      35.68167      18.50611      0 \r\n 1988          187           30.68228      35.77167      19.27056      0 \r\n 1988          188           25.81637      34.52278      20.97722      0 \r\n 1988          189           22.32628      34.06778      16.87944      0 \r\n 1988          190           21.05493      33.57611      19.16556      0 \r\n 1988          191           10.52364      31.565        19.03389      10.6172 \r\n 1988          192           24.19126      31.76556      16.07055      0 \r\n 1988          193           13.41859      33.30556      15.74222      0 \r\n 1988          194           25.93649      36.30556      20.90889      0 \r\n 1988          195           24.16779      36.31722      23.19389      0 \r\n 1988          196           25.55692      35.56556      23.765        3.6576 \r\n 1988          197           19.0995       36.24889      22.23778      0 \r\n 1988          198           25.15525      35.60611      18.60667      6.4262 \r\n 1988          199           19.39757      32.13222      20.27611      21.8186 \r\n 1988          200           21.95939      30.69833      17.56722      0 \r\n 1988          201           12.12486      28.99667      16.24333      0 \r\n 1988          202           25.99431      28.33278      11.60444      0 \r\n 1988          203           25.38755      28.93889      13.89667      0 \r\n 1988          204           26.34426      30.74167      15.58167      0 \r\n 1988          205           25.3101       31.90389      16.87667      0 \r\n 1988          206           19.69128      31.80944      18.45111      0 \r\n 1988          207           26.52196      30.90611      12.33667      0 \r\n 1988          208           25.24437      32.71167      14.13         0 \r\n 1988          209           25.52361      34.32278      16.585        0 \r\n 1988          210           24.97869      34.70611      18.72389      0 \r\n 1988          211           20.72578      36.35222      20.77444      0 \r\n 1988          212           24.0485       38.54         21.92945      0 \r\n 1988          213           24.54033      38.175        22.78056      0 \r\n 1988          214           23.48567      36.84611      23.22         0 \r\n 1988          215           24.04055      37.19222      22.71778      0 \r\n 1988          216           21.75262      35.115        22.81833      0 \r\n 1988          217           17.25159      30.85167      18.68278      33.7312 \r\n 1988          218           25.03568      32.35778      13.45444      0 \r\n 1988          219           24.39414      35.47667      17.62556      0 \r\n 1988          220           23.34689      36.67333      22.54333      0 \r\n 1988          221           12.24908      33.36055      21.29833      21.8694 \r\n 1988          222           21.92106      31.51667      20.18778      0 \r\n 1988          223           22.73598      34.01389      21.03833      0 \r\n 1988          224           22.82016      33.62556      22.22833      0 \r\n 1988          225           20.45901      33.00555      22.27722      0 \r\n 1988          226           26.46602      29.63167      21.13         0 \r\n 1988          227           26.15899      32.87333      21.72056      0 \r\n 1988          228           26.00151      33.00834      19.97556      0 \r\n 1988          229           26.0605       32.73444      20.62611      0 \r\n 1988          230           14.17995      33.88445      20.96389      0 \r\n 1988          231           4.744656      30.41667      20.55111      17.5768 \r\n 1988          232           20.94833      27.72222      20.19889      3.0734 \r\n 1988          233           20.21537      29.61555      19.11111      0 \r\n 1988          234           5.11904       29.97944      20.26611      21.6662 \r\n 1988          235           25.21115      27.515        16.90889      26.2128 \r\n 1988          236           25.26818      27.94222      15.23667      0 \r\n 1988          237           24.40054      30.09         15.35         0 \r\n 1988          238           23.04045      26.05         11.1          2.0066 \r\n 1988          239           8.004369      20.96111      12.71         29.0068 \r\n 1988          240           23.73612      22.97         10.19         0 \r\n 1988          241           23.11543      25.24         8.81          0 \r\n 1988          242           23.11543      25.24         8.81          0 \r\n 1988          243           23.26329      26.96         14.09         0 \r\n 1988          244           20.23223      26.97         14.83         0 \r\n 1988          245           20.36123      27.4          15            0 \r\n 1988          246           13.57352      28.93         17.19         0 \r\n 1988          247           15.63013      23            15.56         0 \r\n 1988          248           11.56738      26.12         15.82         0.9906 \r\n 1988          249           19.46083      19.74         8.6           0 \r\n 1988          250           23.06576      22.95         7.92          0 \r\n 1988          251           19.98375      25.16         9.03          0 \r\n 1988          252           18.82691      27.81         13.98         0 \r\n 1988          253           18.61558      25.87         9.45          0 \r\n 1988          254           19.22017      29.86         9.95          0 \r\n 1988          255           18.88197      30.6          16.37         0 \r\n 1988          256           16.58441      26.975        16.83833      0 \r\n 1988          257           18.84967      24.45555      13.62389      0 \r\n 1988          258           18.7039       26.80167      12.26556      5.461 \r\n 1988          259           10.71196      20.13445      13.945        16.51 \r\n 1988          260           18.52278      25.01167      15.60333      0 \r\n 1988          261           19.4325       31.19889      15.87444      0 \r\n 1988          262           16.3612       28.26389      20.53611      34.6456 \r\n 1988          263           11.9203       21.89444      11.75722      7.8232 \r\n 1988          264           19.79241      20.96167      7.051667      0 \r\n 1988          265           12.12954      20.24556      5.891667      0 \r\n 1988          266           13.41742      26.68389      11.40778      0 \r\n 1988          267           18.56022      20.97556      6.093889      0 \r\n 1988          268           19.33117      21.63389      3.641111      0 \r\n 1988          269           19.00557      25.20778      5.204444      0 \r\n 1988          270           18.79821      26.38111      9.726111      0 \r\n 1988          271           14.9068       24.56611      12.99167      13.6398 \r\n 1988          272           10.11323      17.60222      11.81         0 \r\n 1988          273           7.240872      20.27889      15.13389      0 \r\n 1988          274           9.444962      19.64778      14.36611      0 \r\n 1988          275           11.36408      19.55111      11.92889      0 \r\n 1988          276           16.70688      18.64889      5.167778      0 \r\n 1988          277           10.71121      17.23389      2.971111      0 \r\n 1988          278           16.50295      12.53167      1.477778      0 \r\n 1988          279           16.05125      12.63611      0.7644445     0 \r\n 1988          280           15.34478      14.55667      1.135         0 \r\n 1988          281           15.57389      15.76556      0.8227777     0 \r\n 1988          282           8.999701      16.52778      3.931667      0 \r\n 1988          283           15.07851      20.72778      4.202222      0 \r\n 1988          284           16.03087      20.42         7.2           0 \r\n 1988          285           16.25789      14.82         2.817778      0 \r\n 1988          286           15.34507      15.92        -0.3977778     0 \r\n 1988          287           14.94353      19.76         2.463889      0 \r\n 1988          288           11.90712      23.42         10.54         0 \r\n 1988          289           12.80141      24.41         12.66         0 \r\n 1988          290           11.05003      22.06         11.45         0 \r\n 1988          291           8.343733      20.7          8.3           0 \r\n 1988          292           14.45187      15.4          2.527778      0 \r\n 1988          293           8.059723      11.72         0.2788889     0 \r\n 1988          294           1.850918      30.19         7.3           16.9926 \r\n 1988          295           13.99209      32.97222      3.005         0.9906 \r\n 1988          296           11.69959      17.24         1.012778      10.0076 \r\n 1988          297           13.46436      19.96         1.691111      0 \r\n 1988          298           13.71724      15.16        -1.162222      0 \r\n 1988          299           13.24968      10.98         0.3522222     0 \r\n 1988          300           12.64878      14.14        -2.941111      0 \r\n 1988          301           4.441944      14.12        -0.1277778     0 \r\n 1988          302           13.14939      6.781111     -4.818889      0 \r\n 1988          303           5.284936      5.182222     -4.723889      0 \r\n 1988          304           12.44677      9.15         -6.616111      0 \r\n 1988          305           10.93568      18.39        -1.606111      0 \r\n 1988          306           12.08929      14.77         0.9877778     0 \r\n 1988          307           10.41184      14.86         2.222222E-03                0 \r\n 1988          308           9.326554      20.36         4.461111      2.9972 \r\n 1988          309           6.74465       15.34778      9.61          16.9926 \r\n 1988          310           1.24064       15.44         0.205         5.9944 \r\n 1988          311           12.09465      9.33         -0.7772222     2.0066 \r\n 1988          312           3.124486      10.52        -2.292778      2.9972 \r\n 1988          313           9.568432      14.25         2.777778E-03                0 \r\n 1988          314           1.092903      26.28         3.161111      30.988 \r\n 1988          315           11.09061      6.772222     -3.378889      0 \r\n 1988          316           8.484441      6.257222     -3.642222      10.9982 \r\n 1988          317           9.603494      9.898889      4.692778      29.9974 \r\n 1988          318           10.72255      22.72         3.023889      0 \r\n 1988          319           8.900373      15.53         4.722778      0 \r\n 1988          320           2.636673      19.95889      2.300555      48.9966 \r\n 1988          321           3.244483      4.6          -1.495         0 \r\n 1988          322           9.33781       9.48         -3.612222      0 \r\n 1988          323           8.538833      13.48722      4.348889      0 \r\n 1988          324           1.461429      6.993889     -0.1561111     0.9906 \r\n 1988          325           9.905787      1.842222     -6.172778      0 \r\n 1988          326           9.794242      4.545        -7.62          0 \r\n 1988          327           9.431908      9.36         -2.975         0 \r\n 1988          328           9.111706      13.92         1.517222      0 \r\n 1988          329           9.174675      17.28         3.051111      0 \r\n 1988          330           6.9618        26.97222      2.727222      83.0072 \r\n 1988          331           1.61197       7.845        -0.385         8.9916 \r\n 1988          332           1.673893      2.745        -5.982778      0 \r\n 1988          333           9.200239      2.053889     -9.77          0 \r\n 1988          334           3.949403      14.07        -7.222223E-02                0 \r\n 1988          335           7.663038      3.638889     -5.527222      0 \r\n 1988          336           9.007399      2.857222     -6.636111      0 \r\n 1988          337           9.038569      16.39         0.3561111     0 \r\n 1988          338           8.319382      10.13        -0.2288889     0 \r\n 1988          339           6.70804       5.27         -0.4427778     0 \r\n 1988          340           8.774476      11.52        -1.902778      0 \r\n 1988          341           8.861712      14.14         0.3911111     0 \r\n 1988          342           6.967071      8.41         -7.09          0 \r\n 1988          343           6.407336     -0.525        -9.17          0 \r\n 1988          344           4.524745      2.52         -10.6          0 \r\n 1988          345           8.494482     -1.132778     -17.27         0 \r\n 1988          346           4.960174     -6.85         -18.36         0 \r\n 1988          347           2.871396      2.751111     -9.24          0 \r\n 1988          348           4.878126      8.95         -1.068889      0 \r\n 1988          349           2.885872      6.722778     -7.69          0 \r\n 1988          350           7.420115     -7.58         -18.96         0 \r\n 1988          351           5.804087      2.018889     -19.65         0 \r\n 1988          352           6.237214     -2.208889     -10.97         0 \r\n 1988          353           7.752031      12.98        -10.92         0 \r\n 1988          354           5.715971      14.62         0.4011111     0 \r\n 1988          355           3.224358      20           -0.7961111     1.52 \r\n 1988          356           8.103069      3.433889     -3.517222      0 \r\n 1988          357           1.355909      13.245       -1.997222      0 \r\n 1988          358           5.41941       10.45        -1.027778      0 \r\n 1988          359           7.981482      26.77778     -6.787778      7.62 \r\n 1988          360           5.312969     -2.49         -10.63         0 \r\n 1988          361           4.917602      6.020555     -2.612778      1.52 \r\n 1988          362           4.522234      0.8244445    -10.01         2.29 \r\n 1988          363           8.775187     -3.501111     -11.96         0 \r\n 1988          364           8.552389      1.637222     -13.04         0 \r\n 1988          365           7.678979      6.205        -3.621111      0 \r\n 1988          366           6.21847       8.79         -6.623889      0 \r\n 1989          1             1.785773      3.804445     -6.078889      0 \r\n 1989          2             5.635053      7.57         -12            0 \r\n 1989          3             9.033005      10.12        -5.687222      0 \r\n 1989          4             8.829872      9.37         -8.5           0 \r\n 1989          5             5.2109        5.587222     -0.025         0 \r\n 1989          6             1.591928      3.577778      0.5288889     5.33 \r\n 1989          7             1.101898      3.438333     -11.49         0.76 \r\n 1989          8             8.628286     -7.76         -13.34         0 \r\n 1989          9             8.260513      2.398889     -15.21         0 \r\n 1989          10            8.049932      2.772778     -4.183889      0 \r\n 1989          11            1.491219      7.221111     -3.348889      0 \r\n 1989          12            9.347684      0.755        -7.14          0 \r\n 1989          13            9.86265       5.752222     -9.02          0 \r\n 1989          14            4.976617      3.301111     -3.922222      0 \r\n 1989          15            9.211076      4.777778     -5.765         0 \r\n 1989          16            9.292413      10.06        -8.25          0 \r\n 1989          17            9.693114      12.19        -3.657778      0 \r\n 1989          18            10.04369      9.6          -0.9438889     0 \r\n 1989          19            7.933073      12.73         0.5038889     0 \r\n 1989          20            10.29072      1.87         -6.583889      0 \r\n 1989          21            10.34117      8.16         -6.757222      0 \r\n 1989          22            10.45268      13.23        -2.351111      0 \r\n 1989          23            6.833978      12.98        -1.372778      0 \r\n 1989          24            9.326428      8.67         -3.778889      0 \r\n 1989          25            1.034912      17.47222      3.526111      0 \r\n 1989          26            11.07655      8.62         -4.417778      0.25 \r\n 1989          27            11.2573       13.97        -3.413889      0 \r\n 1989          28            1.421012      7.592778      1.702222      0 \r\n 1989          29            2.051122      6.086111      3.068889      14.48 \r\n 1989          30            11.58395      10.73         0.7177778     0 \r\n 1989          31            11.77541      20.57         1.877778      0 \r\n 1989          32            5.251924      1.848889     -10.73         0 \r\n 1989          33            3.36335      -6.942778     -21.27         0 \r\n 1989          34            10.56665     -19.82        -25.74         0.25 \r\n 1989          35            5.083769     -16.76444     -22.81         0.51 \r\n 1989          36            6.422565     -16.49        -23.08         1.52 \r\n 1989          37            10.31419     -8.74         -22.61         1.27 \r\n 1989          38            13.33319     -4.362778     -18.07         0 \r\n 1989          39            13.62578     -8.05         -18.84         0 \r\n 1989          40            13.57265     -3.611111     -22.75         0 \r\n 1989          41            13.71222      0.185        -16.05         0 \r\n 1989          42            14.03933      0.78         -9.54          0 \r\n 1989          43            9.718846      13.31        -11.04         0 \r\n 1989          44            7.238906      4.826667     -4.918889      7.87 \r\n 1989          45            9.680563      7.07         -9.29          0 \r\n 1989          46            8.717741     -1.653889     -9.4           0 \r\n 1989          47            14.73291     -1.801111     -15.5          0 \r\n 1989          48            12.7884      -0.7511111    -14.68         0 \r\n 1989          49            7.164891     -0.4977778    -7.24          0 \r\n 1989          50            7.629148      10.68889     -8.057777      0 \r\n 1989          51            6.865735      6.338889     -3.921111      5.08 \r\n 1989          52            9.575377      3.481111     -10.71         0.76 \r\n 1989          53            15.86154     -10.72        -18.12         0 \r\n 1989          54            16.70659     -8.39         -23.79         0 \r\n 1989          55            15.88544      2.185        -14.07         0 \r\n 1989          56            12.91208      6.828889     -6.152778      0 \r\n 1989          57            11.22145      1.32         -6.115         0 \r\n 1989          58            14.49451      0.3161111    -11.23         0 \r\n 1989          59            16.1779       0.9572222    -10.45         0 \r\n 1989          60            9.205051     -1.613889     -11.26         0 \r\n 1989          61            5.854462     -0.8977778    -4.416667      0.76 \r\n 1989          62            2.257603      9.237223     -7.417222      1.78 \r\n 1989          63            8.985893     -2.902778     -10.42         0.25 \r\n 1989          64            16.34036     -4.57         -12.48         0 \r\n 1989          65            18.00463     -0.2961111    -10.86         0 \r\n 1989          66            17.39967      2.498889     -8.48          0 \r\n 1989          67            15.47971      7.55         -5.232222      0 \r\n 1989          68            16.00401      13.27        -2.305         0 \r\n 1989          69            16.65048      19.32         1.858889      0 \r\n 1989          70            17.02511      18.36         3.836111      0 \r\n 1989          71            6.004333      14.72         3.32          0 \r\n 1989          72            3.354564      21.72222      3.816111      0 \r\n 1989          73            11.20538      15.22222     -3.841111      0 \r\n 1989          74            18.71056      3.786111     -7.42          0 \r\n 1989          75            15.71293      11.68        -3.182222      0 \r\n 1989          76            1.802802      12.06        -7.03          0 \r\n 1989          77            19.09477     -0.5838889    -10.47         0 \r\n 1989          78            8.580882      4.102778     -6.431111      0 \r\n 1989          79            4.466838      7.43         -7.13          0 \r\n 1989          80            20.42457      5.312778     -9.6           0 \r\n 1989          81            17.70192      9.82         -6.69          0 \r\n 1989          82            19.26966      17.61         2.777778E-02                0 \r\n 1989          83            17.36632      21.76         4.272778      0 \r\n 1989          84            18.65591      18.71         5.91          0 \r\n 1989          85            14.78701      26.33889      11.98         0 \r\n 1989          86            17.25607      26.42         16.34         0 \r\n 1989          87            8.249593      20.65389      7.425556      2.03 \r\n 1989          88            12.72275      19.065        5.595         0 \r\n 1989          89            5.031135      20.4          1.28          0 \r\n 1989          90            21.10025      11.69        -0.315         0 \r\n 1989          91            4.9262        13.63         0.5477778     0 \r\n 1989          92            16.10966      16.21278      5.861111      0 \r\n 1989          93            11.56537      17.51         3.815556      0 \r\n 1989          94            10.18528      10.68889      2.286111      0 \r\n 1989          95            19.48455      14.19        -1.217222      0 \r\n 1989          96            17.4651       12.95         1.113889      0 \r\n 1989          97            7.939935      18.81        -0.7722222     15.0114 \r\n 1989          98            19.26293      7.553333     -6.777222      5.0038 \r\n 1989          99            20.21211      4.487778     -6.412222      0 \r\n 1989          100           24.30222      7.13         -6.316111      0 \r\n 1989          101           18.08605      13.57        -4.241111      0 \r\n 1989          102           24.32657      10.44        -3.482222      0 \r\n 1989          103           23.59508      18.91        -3.163889      0 \r\n 1989          104           14.33735      17.34         5.663889      0 \r\n 1989          105           24.4592       18.15         1.711111      0 \r\n 1989          106           17.27595      24.74         9.67          0 \r\n 1989          107           18.14015      15.49         7.9           0 \r\n 1989          108           15.17014      14.07         3.621111      15.0114 \r\n 1989          109           25.50721      19.29         1.207222      0 \r\n 1989          110           16.6768       23.56         7.02          0 \r\n 1989          111           25.06722      27.61         8.39          0 \r\n 1989          112           12.95002      22.45         11.82         0 \r\n 1989          113           13.7631       24.07         15.87         0 \r\n 1989          114           23.47396      31.67         17.54         0 \r\n 1989          115           22.17198      31.7          19.78         0 \r\n 1989          116           21.86956      31.3          19.04         0 \r\n 1989          117           20.04831      31.64         16.19         13.0048 \r\n 1989          118           15.81439      36.92         11.96111      21.0058 \r\n 1989          119           14.98466      32.46111      5.237222      0 \r\n 1989          120           23.73479      17.29         4.796111      35.0012 \r\n 1989          121           13.26504      26.8          2.818889      94.996 \r\n 1989          122           16.77721      13.23         1.116111      0 \r\n 1989          123           20.43005      18.71389      5.125         0 \r\n 1989          124           13.95703      34.71111      9.74          24.9936 \r\n 1989          125           18.31203      12.2          0.995         0.9906 \r\n 1989          126           20.68114      11.35        -9.388889E-02                0 \r\n 1989          127           27.63544      20.97         1.162222      0 \r\n 1989          128           14.89014      22.94         9.69          0.9906 \r\n 1989          129           24.8253       22.85         8.36          2.9972 \r\n 1989          130           27.89259      23            3.202222      0 \r\n 1989          131           28.12158      22.03         4.323889      0 \r\n 1989          132           27.47369      25.15         4.912778      0 \r\n 1989          133           26.76409      25.52         5.201111      0 \r\n 1989          134           25.56223      23.18         11.26         0 \r\n 1989          135           26.41819      27.08         8.06          0 \r\n 1989          136           23.92382      27.81         11.23         0 \r\n 1989          137           16.65278      25.94         13.65         0 \r\n 1989          138           18.97515      34.8          17.64         105.0036 \r\n 1989          139           15.24039      38.96         16.83         2.9972 \r\n 1989          140           29.52582      25.11         10.81         0 \r\n 1989          141           8.124366      20.85         10.74         5.9944 \r\n 1989          142           20.94075      22.76         13.47         0 \r\n 1989          143           25.08647      28.66389      13.34         0 \r\n 1989          144           5.978434      29.05         17.81         35.9918 \r\n 1989          145           22.8882       24.08         12.14         2.0066 \r\n 1989          146           25.95126      18.77         8.64          0 \r\n 1989          147           29.8756       21.55         5.143889      0 \r\n 1989          148           2.785582      20.42333      9.621667      34.29 \r\n 1989          149           24.66058      38.43         12.22944      0 \r\n 1989          150           23.6847       30.07         19.38         0 \r\n 1989          151           8.279801      39.15         15.59         40.005 \r\n 1989          152           13.45403      40.95         15.04         23.0124 \r\n 1989          153           28.84111      26.57         17.36         0 \r\n 1989          154           23.52513      24.51         14.46         23.0124 \r\n 1989          155           21.42283      24.75         13.75         0 \r\n 1989          156           28.59387      27.11         13.02         0 \r\n 1989          157           27.83222      27.56         13.48         0 \r\n 1989          158           23.60847      26.89         14.86         0 \r\n 1989          159           19.68438      22.63         11.29         8.001 \r\n 1989          160           16.53408      17.26         8.92          0 \r\n 1989          161           15.05294      20.39         9.02          0 \r\n 1989          162           6.489593      30.37         15.69         64.9986 \r\n 1989          163           23.28078      27.94889      17.2          7.0104 \r\n 1989          164           27.16671      25.57         10.44         0 \r\n 1989          165           14.23234      17.14         9.35          0 \r\n 1989          166           26.57079      21.56         10.58         0 \r\n 1989          167           28.68977      25.25         6.435         0 \r\n 1989          168           21.59321      26.21         14            32.9946 \r\n 1989          169           11.96427      25.54         17.45         0.9906 \r\n 1989          170           29.78029      31.12         17.41         0 \r\n 1989          171           29.06458      30.44         17.02         0 \r\n 1989          172           21.12054      32.29         19.75         0 \r\n 1989          173           11.76014      23.99         17.5          0 \r\n 1989          174           27.32307      27.7          16.38         0 \r\n 1989          175           17.33954      27.27         14.43         0 \r\n 1989          176           21.43271      30.85222      19.44         51.9938 \r\n 1989          177           12.87446      30.61         21.18         13.9954 \r\n 1989          178           21.34522      29.98         21.04         0 \r\n 1989          179           26.39799      30.11         19.01         0 \r\n 1989          180           28.59245      28.9          16.54         0 \r\n 1989          181           25.115        29.48         13.15         0 \r\n 1989          182           22.12135      29.79         18.33         0.9906 \r\n 1989          183           26.41083      30.44         19.72         0 \r\n 1989          184           25.82344      33.08         18.43         0 \r\n 1989          185           29.11742      34.76         20.47         0 \r\n 1989          186           29.37984      34.74         17.45         0 \r\n 1989          187           28.62341      36.97         15.97         0 \r\n 1989          188           22.12169      36.03         20.57         0 \r\n 1989          189           26.00034      36.93         22.37         0 \r\n 1989          190           27.18123      36.74         22.35         0 \r\n 1989          191           25.61499      37.63         23.13         0 \r\n 1989          192           18.29015      30.55556      21.11111      110.998 \r\n 1989          193           22.02771      30.83         22.1          0 \r\n 1989          194           24.31004      30.83         20.74         0 \r\n 1989          195           21.88826      27.13         16.91         0 \r\n 1989          196           3.37222       18.91         16.61         34.0106 \r\n 1989          197           25.22768      26.35         15.92         0 \r\n 1989          198           20.16998      28.1          16.55         0 \r\n 1989          199           21.37292      27.44         18.93         61.0108 \r\n 1989          200           10.17557      23.14         18.39         5.0038 \r\n 1989          201           27.41327      26.8          17.79         0 \r\n 1989          202           18.14772      23.9          14.9          0 \r\n 1989          203           11.61361      25.14         18            0.9906 \r\n 1989          204           19.05222      30.18         20.68         16.9926 \r\n 1989          205           23.69608      30.32         21.76         0 \r\n 1989          206           22.45369      31.21         20.63         0 \r\n 1989          207           18.22722      30.08         20.96         0.9906 \r\n 1989          208           26.964        33.69         22.1          0 \r\n 1989          209           20.21855      35.36         20.94         0.9906 \r\n 1989          210           5.642794      28.97         21.51         16.002 \r\n 1989          211           11.49495      29.91         23.33         16.002 \r\n 1989          212           20.62038      30.27         22.66         0.9906 \r\n 1989          213           25.52855      29.59         19.93         0 \r\n 1989          214           22.44683      32.44         19.15         0 \r\n 1989          215           11.77051      28.96         24.51         2.0066 \r\n 1989          216           25.86469      35.25         24.01         0 \r\n 1989          217           25.07881      33.49         19.5          0 \r\n 1989          218           16.70303      21.49         11.13         0 \r\n 1989          219           24.65079      24.74         8.99          0 \r\n 1989          220           23.90148      27.2          9.85          0 \r\n 1989          221           23.83462      29.98         11.12         0 \r\n 1989          222           22.80075      29.72         13.89         0 \r\n 1989          223           19.63124      30.16         14.28         0 \r\n 1989          224           18.8985       30.31         14.7          0 \r\n 1989          225           15.84636      30.7          16.66         96.012 \r\n 1989          226           18.03727      26.84         18.4          0 \r\n 1989          227           17.57565      27.08         17.29         0 \r\n 1989          228           19.51125      28.95         14.81         0 \r\n 1989          229           23.07568      29.05         14.78         0 \r\n 1989          230           23.13756      28.87         14.29         0 \r\n 1989          231           9.11271       29.33         17.65         2.9972 \r\n 1989          232           23.43756      32.69         19.56         0 \r\n 1989          233           6.710968      28.14         19.64         0 \r\n 1989          234           16.40718      34.5          20.92444      0.254 \r\n 1989          235           13.3934       28.21         20.84         19.812 \r\n 1989          236           8.274529      24.4          19.54         0 \r\n 1989          237           13.40093      27.7          19.98056      4.064 \r\n 1989          238           14.50153      34.59         21.35         13.462 \r\n 1989          239           15.35905      28.88889      18.88889      7.62 \r\n 1989          240           9.335132      34.78         20            9.652 \r\n 1989          241           17.99091      35.81         18.66         8.382 \r\n 1989          242           22.44486      34.38         18.42         0 \r\n 1989          243           12.945        31.66667      21.11111      26.162 \r\n 1989          244           15.42189      33.48         18.11         0 \r\n 1989          245           21.75814      31.78         18.93889      0 \r\n 1989          246           5.752163      31.53         17.09         7.112 \r\n 1989          247           15.32407      34.71         18.46         10.414 \r\n 1989          248           9.794744      26.11111      12.77778      1.016 \r\n 1989          249           14.44095      30            18.88889      0.254 \r\n 1989          250           10.32862      25.55556      16.66667      1.524 \r\n 1989          251           2.795874      24.44444      16.11111      104.14 \r\n 1989          252           7.83203       19.44444      10            5.842 \r\n 1989          253           21.04222      21.46         10.49         0 \r\n 1989          254           14.67509      18.02         8.93          0 \r\n 1989          255           6.508756      13.83         7.24          3.048 \r\n 1989          256           8.22997       17.56         10.05         0.254 \r\n 1989          257           17.77936      25.22         9.76          0 \r\n 1989          258           21.15962      21.28         8.36          0 \r\n 1989          259           20.87251      29.4          11.51         0 \r\n 1989          260           20.10638      26.14         12.31         0 \r\n 1989          261           19.73681      26.12         15.72         0 \r\n 1989          262           19.48141      24.9          15            0 \r\n 1989          263           19.64488      25.54         12.79         0 \r\n 1989          264           18.81214      25.86         13.33         0 \r\n 1989          265           9.887879      22.8          5.493889      0 \r\n 1989          266           20.0455       12.91         1.435         0 \r\n 1989          267           19.571        16.52        -2.388889E-02                0 \r\n 1989          268           18.90557      23.22         3.996111      0 \r\n 1989          269           19.1313       18.61         3.377778      0 \r\n 1989          270           18.78193      20.28         2.98          0 \r\n 1989          271           18.58219      24.02         5.857778      0 \r\n 1989          272           17.96379      26.17         8.92          0 \r\n 1989          273           17.66773      26.28         9.92          0 \r\n 1989          274           17.24599      26.63         12.05         0 \r\n 1989          275           17.33732      14.37         4.357778      0 \r\n 1989          276           16.73855      12.92         1.045         0 \r\n 1989          277           11.20383      15.35         0.4872222     0 \r\n 1989          278           2.367726      18.14556      10.63         0 \r\n 1989          279           16.87119      15.25         3.657222      16.76 \r\n 1989          280           13.34876      13.33        -0.155         0 \r\n 1989          281           16.52985      17.94         4.302778      0 \r\n 1989          282           13.62089      22.71         5.717778      0 \r\n 1989          283           16.66362      18.67         3.817222      0 \r\n 1989          284           16.14451      27.49         10.6          0 \r\n 1989          285           15.89635      23.32         6.206111      0 \r\n 1989          286           15.32649      29.16         8.75          0 \r\n 1989          287           14.2989       27.56         13.52         0 \r\n 1989          288           14.33773      27.36         14.62         0 \r\n 1989          289           1.387163      14.59         6.001111      3.05 \r\n 1989          290           7.655591      6.981111      2.495         7.62 \r\n 1989          291           11.5773       5.992222     -0.7022222     0 \r\n 1989          292           11.1499       5.623889     -2.407222      0 \r\n 1989          293           13.90197      14.33        -3.51          0 \r\n 1989          294           15.196        20.33        -1.752778      0 \r\n 1989          295           12.9635       21.83         3.902222      0 \r\n 1989          296           13.71783      25.07         6.717222      0 \r\n 1989          297           13.16211      25.58         11.4          0 \r\n 1989          298           12.64472      25.27         15.09         0 \r\n 1989          299           11.77909      23.31         13.56         0 \r\n 1989          300           3.097875      17.73         12.69         0 \r\n 1989          301           1.756067      15.12333      12.85         0 \r\n 1989          302           4.300022      20.84         12.16         12.7 \r\n 1989          303           1.544063      6.227778      2.651111      9.14 \r\n 1989          304           12.9573       11.98        -0.5638889     2.03 \r\n 1989          305           7.936128      7.76         -1.117778      0 \r\n 1989          306           7.64149       4.777778     -3.575         0 \r\n 1989          307           6.797577      10.12        -1.052778      0 \r\n 1989          308           11.38044      15            1.742778      0 \r\n 1989          309           8.126123      17.88         0.8311111     0 \r\n 1989          310           3.62326       8.46         -1.407222      0 \r\n 1989          311           8.379213      13.19        -1.165         0.51 \r\n 1989          312           8.33729       9.99         -1.762222      0 \r\n 1989          313           11.19358      14.18        -2.786111      0 \r\n 1989          314           11.05262      10.21        -4.473889      0 \r\n 1989          315           10.88773      17.03         1.917222      0 \r\n 1989          316           10.77246      15.99        -2.272222      0 \r\n 1989          317           7.37271       21.37         5.611111      0 \r\n 1989          318           6.9418        13.05        -0.5611111     0 \r\n 1989          319           6.315162      5.09         -4.976111      0 \r\n 1989          320           10.66087     -4.742778     -12.2          0 \r\n 1989          321           8.759623      5.182222     -11.5          0 \r\n 1989          322           7.261667     -0.3488889    -14.03         0 \r\n 1989          323           8.443604      15.98        -3.198889      0 \r\n 1989          324           9.986162      14.82        -0.2361111     0 \r\n 1989          325           9.961895      5.81         -6.212222      0 \r\n 1989          326           2.438017      0.8677778    -10.1          0 \r\n 1989          327           9.683324      3.026111     -12.63         0 \r\n 1989          328           7.834205      10.94        -5.823889      0 \r\n 1989          329           8.546322      11.81        -0.2561111     0 \r\n 1989          330           7.851653      12.13        -7.09          0 \r\n 1989          331           5.020423      13.78        -8             0 \r\n 1989          332           9.468727     -6.406111     -14.11         0.25 \r\n 1989          333           9.197938      5.153889     -16.32         0 \r\n 1989          334           9.165638      10.47        -7.14          0 \r\n 1989          335           9.016645      13.5         -6.212222      0 \r\n 1989          336           8.946648      0.9338889    -10.68         0 \r\n 1989          337           8.910163     -0.5172222    -15.13         0 \r\n 1989          338           7.527058      12.56        -2.827222      0 \r\n 1989          339           6.893684      16.92         3.601111      0 \r\n 1989          340           8.509544      5.8          -9.67          0.25 \r\n 1989          341           3.096118     -5.708889     -10.74         0 \r\n 1989          342           3.720873     -2.295        -10.08         0 \r\n 1989          343           7.500322      6.317778     -5.443889      0 \r\n 1989          344           1.692554     -1.93         -9.79          0 \r\n 1989          345           8.924765     -9.81         -21.51         4.83 \r\n 1989          346           8.738242     -7.53         -26.95         0 \r\n 1989          347           5.608527     -6.383889     -19.44         0 \r\n 1989          348           5.714591     -15.81        -24.07         0 \r\n 1989          349           8.647408     -14.93        -26.02         0 \r\n 1989          350           5.724423     -10.09        -22.96         0 \r\n 1989          351           8.265994     -9.67         -19.02         0 \r\n 1989          352           3.786813     -10.69        -20.93         0 \r\n 1989          353           5.925297     -7.91         -22.57         3.05 \r\n 1989          354           2.389106     -9.261111     -22.19         0 \r\n 1989          355           8.866858     -21.69        -28.78         1.27 \r\n 1989          356           8.97468      -21.98        -30.74         0 \r\n 1989          357           8.9897       -16.1         -33.03         0 \r\n 1989          358           4.167975      0.6338889    -16.08         1.02 \r\n 1989          359           8.22043       4.58         -7.93          0 \r\n 1989          360           4.380857     -2.142778     -17.16         0 \r\n 1989          361           3.835389      3.768889     -2.106111      1.27 \r\n 1989          362           6.592645      6.212222     -0.9238889     0 \r\n 1989          363           1.079388      0.335        -2.847778      0 \r\n 1989          364           1.156123     -1.622778     -2.847778      0 \r\n 1989          365           4.248057      0.6322222    -7.865556      0 \r\n 1990          1             8.90079      -0.3422222    -9.68          0 \r\n 1990          2             8.897402      8.38         -4.1           0 \r\n 1990          3             3.161556      6.743889     -8.277778E-02                0 \r\n 1990          4             9.293459      2.853889     -8.03          16.51 \r\n 1990          5             9.073799      4.131111     -9.2           0 \r\n 1990          6             7.811277      1.682222     -7.9           0 \r\n 1990          7             9.104217      6.29         -2.938889      0 \r\n 1990          8             4.739552      6.638889     -1.29          0 \r\n 1990          9             6.216754      5.897778     -2.667778      0 \r\n 1990          10            6.877868      9.904445     -6.227222      0 \r\n 1990          11            9.058151      5.897222     -1.563333      0 \r\n 1990          12            9.554667      1.194444     -10.34389      0 \r\n 1990          13            8.415195      4.496666     -11.265        0 \r\n 1990          14            8.683013      9.279445     -3.381667      0 \r\n 1990          15            8.032192      12.48222     -4.291667      0 \r\n 1990          16            4.689804      16.49         2.978333      0 \r\n 1990          17            4.766622      8.72         -0.3161111     7.37 \r\n 1990          18            8.442517      3.338889     -4.291111      0 \r\n 1990          19            7.236395      2.541667     -7.428333      0 \r\n 1990          20            5.3387        10.73        -2.038333      4.06 \r\n 1990          21            8.547954      3.161111     -9.748333      2.29 \r\n 1990          22            8.94238       8.69         -4.015555      0 \r\n 1990          23            9.669015      9.28          0.9088889     0 \r\n 1990          24            6.349764      7.93         -1.750556      0 \r\n 1990          25            9.906582     -1.622778     -5.090556      5.08 \r\n 1990          26            10.06737      6.783889     -8.281667      0 \r\n 1990          27            8.992839      4.282778     -5.067222      0 \r\n 1990          28            11.86331      4.527778     -6.481111      0 \r\n 1990          29            11.33563      8.65         -6.345         0 \r\n 1990          30            11.34521      3.6          -8.32          0 \r\n 1990          31            10.45293      13.07        -8.73          0 \r\n 1990          32            3.788403      8.29         -7.07          0 \r\n 1990          33            1.92351       3.6          -7.53          2.03 \r\n 1990          34            3.799281      5.452222     -5.782222      6.1 \r\n 1990          35            11.76415      7.89         -7.5           0 \r\n 1990          36            10.97062      13.76         0.5138889     0 \r\n 1990          37            3.075868      8.269444     -0.9372222     0 \r\n 1990          38            11.21007      12.3         -0.5533333     0 \r\n 1990          39            9.389482      13.17         0.3927778     0 \r\n 1990          40            11.50378      8.3          -4.091111      0 \r\n 1990          41            9.996287      9.35         -5.156111      0 \r\n 1990          42            12.81438      12.9          0.4372222     0.76 \r\n 1990          43            11.24387      20.4          1.982222      0 \r\n 1990          44            5.494889      13.46        -6.958889      0 \r\n 1990          45            2.724495     -3.207778     -7.44          0 \r\n 1990          46            3.299126      9.52         -3.835         12.45 \r\n 1990          47            12.06343      9.5          -13.45         5.59 \r\n 1990          48            15.06625     -2.305        -20.3          0 \r\n 1990          49            14.67412      5.061111     -6.517778      0 \r\n 1990          50            15.32248     -1.532222     -10.46         0 \r\n 1990          51            14.97583      2.463889     -12.07         0 \r\n 1990          52            13.12918      9.16         -3.827222      0 \r\n 1990          53            2.884157      10.95        -9.222222E-02                5.08 \r\n 1990          54            11.42136      8.15         -4.597778      2.79 \r\n 1990          55            16.19242      2.127778     -10.34         0.25 \r\n 1990          56            11.69909     -3.762222     -11.97         0 \r\n 1990          57            15.05504      7.35         -8.41          0 \r\n 1990          58            16.25471      4.328889     -4.996111      0 \r\n 1990          59            14.57844      5.583889     -8.31          0 \r\n 1990          60            17.21214      9.06         -7.95          0 \r\n 1990          61            17.13988      16.26        -2.212222      0 \r\n 1990          62            17.37565      5.227778     -6.546111      0 \r\n 1990          63            16.05112      16.42        -3.941111      0 \r\n 1990          64            3.754261      9.82          3.357778      0 \r\n 1990          65            1.240472      13.37         1.337778      0 \r\n 1990          66            3.431403      15.87778      0.595         0 \r\n 1990          67            5.622334      16.86333      0.9216667     13.21 \r\n 1990          68            16.47224      31.82778      2.65          1.27 \r\n 1990          69            4.736874      24.58222      3.011111      0.51 \r\n 1990          70            6.812514      24.05         11.92389      26.92 \r\n 1990          71            19.00402      24.15         12.74         0 \r\n 1990          72            3.02089       32.75         16.72         1.52 \r\n 1990          73            2.427013      23.34         16.22778      2.03 \r\n 1990          74            6.608963      24.74         2.882222      35.56 \r\n 1990          75            11.40471      9.22          1.86          0 \r\n 1990          76            13.93837      9.32         -2.64          0 \r\n 1990          77            12.74325      6.491111     -4.505         0 \r\n 1990          78            18.63533      1.357222     -7.67          0 \r\n 1990          79            20.04935      13.18        -5.867778      0 \r\n 1990          80            18.17643      18.87         2.901111      0 \r\n 1990          81            5.784715      11.63        -2.211111      1.52 \r\n 1990          82            6.505994     -2.145        -6.306111      0 \r\n 1990          83            17.75468      2.715        -5.838889      0 \r\n 1990          84            21.48631      6.812222     -6.563889      0 \r\n 1990          85            22.19428      8.33         -4.288889      0 \r\n 1990          86            19.91312      11.58        -4.372778      0 \r\n 1990          87            3.734555      11.25         3.983889      0 \r\n 1990          88            2.448477      12.28         7.53          9.4 \r\n 1990          89            2.854157      13.28         7.02          0.25 \r\n 1990          90            3.666356      18.06111      8.1           0 \r\n 1990          91            16.3958       17.15         1.992222      0 \r\n 1990          92            19.2077       10.14        -1.642778      0 \r\n 1990          93            23.21572      14           -4.957222      0 \r\n 1990          94            23.26911      15.73         2.233889      0 \r\n 1990          95            19.96538      6.66         -5.65          0 \r\n 1990          96            23.91194      4.15         -6.968889      0 \r\n 1990          97            23.37245      13.98        -7.83          0 \r\n 1990          98            21.42254      20.02         4.031111      0 \r\n 1990          99            6.770172      16.41         8.15          0 \r\n 1990          100           8.304905      16.39         2.94          0 \r\n 1990          101           19.18054      5.071111     -4.007222      0 \r\n 1990          102           20.25474      11.48        -6.641111      3.2766 \r\n 1990          103           2.053507      13.2          3.49          9.8806 \r\n 1990          104           23.66684      15.75         4.487222      4.8768 \r\n 1990          105           24.50565      14.66         2.922778      0 \r\n 1990          106           4.777333      13.67         1.302778      0 \r\n 1990          107           24.9384       9.39         -2.556111      0 \r\n 1990          108           18.73917      13.18        -0.2677778     0 \r\n 1990          109           8.835562      15.82         5.728889      8.5852 \r\n 1990          110           10.00135      21.22445      14.15         0 \r\n 1990          111           18.19073      22.985        10.26778      0 \r\n 1990          112           23.2702       26.94778      12.335        0 \r\n 1990          113           21.39756      28.04         17.11         0 \r\n 1990          114           21.50702      27.09         17.45         0 \r\n 1990          115           20.56097      26.08         17.31         0 \r\n 1990          116           11.54767      30.19         17.41         27.3812 \r\n 1990          117           4.514996      19.97333      3.078333      38.862 \r\n 1990          118           18.5455       21.49         2.063889      0.508 \r\n 1990          119           6.390893      15.91         2.621111      0 \r\n 1990          120           18.78227      13.41         0.2327778     0 \r\n 1990          121           23.57098      13.9          2.492222      0 \r\n 1990          122           22.82686      17.52         0.865         0 \r\n 1990          123           5.450706      21.91         9.79          16.764 \r\n 1990          124           4.95599       12.86833      6.831666      21.082 \r\n 1990          125           21.20125      19.26         5.762778      0 \r\n 1990          126           27.98745      21.68         6.272778      0 \r\n 1990          127           27.72021      25.62         9.56          0 \r\n 1990          128           12.66451      23.41         13.44         0 \r\n 1990          129           7.261876      15.71222      7.225555      14.478 \r\n 1990          130           26.97496      13.75         3.052222      0 \r\n 1990          131           13.468        17.15         4.15          5.588 \r\n 1990          132           3.57163       35.96         11.29         20.574 \r\n 1990          133           26.52062      30.23         12.81111      0.254 \r\n 1990          134           22.34582      23.44         12.76         0 \r\n 1990          135           12.84881      21.29445      12.51556      19.812 \r\n 1990          136           20.02383      20.07333      10.73778      0.254 \r\n 1990          137           29.08608      19.98         7.87          0 \r\n 1990          138           28.08882      25.36         7.62          0 \r\n 1990          139           18.90406      22.44         10.63         6.604 \r\n 1990          140           8.367414      13.23         8.47          0.254 \r\n 1990          141           5.23682       16.75         9.9           0.508 \r\n 1990          142           29.06867      21.13         10.34         0 \r\n 1990          143           9.938799      19.85         12.77         8.636 \r\n 1990          144           14.20255      22.2          14.79         12.446 \r\n 1990          145           17.02047      25.26722      16.11389      50.8 \r\n 1990          146           15.17177      28.44         14.87         0 \r\n 1990          147           21.32371      32.88889      15.64         0 \r\n 1990          148           21.14727      24.62         13.59         0 \r\n 1990          149           28.75282      25.69         13.55         0 \r\n 1990          150           17.76338      19.09         10.76         0 \r\n 1990          151           15.57917      20.24         10.32         0 \r\n 1990          152           16.02501      26.76         16.47         0 \r\n 1990          153           16.22183      24.52         14.38         0.762 \r\n 1990          154           15.19265      16.92         8.86          0 \r\n 1990          155           24.3995       18.98         8.94          0 \r\n 1990          156           8.647742      21.94         11.41         1.016 \r\n 1990          157           17.51104      26.58         14.82         0.508 \r\n 1990          158           4.411986      27.76         12.83         8.636 \r\n 1990          159           16.22852      43.18889      19.2          0.508 \r\n 1990          160           30.12112      27.37         16.15         0 \r\n 1990          161           26.69986      30.09         14.34         0 \r\n 1990          162           25.04906      28.68         18.71         0 \r\n 1990          163           26.01289      32.38         23.22         0 \r\n 1990          164           14.03556      31.54         18.56         16.256 \r\n 1990          165           20.92163      35.42         22.02         5.842 \r\n 1990          166           14.89286      34.16         22.57778      4.064 \r\n 1990          167           8.719289      29.59333      19.86111      36.576 \r\n 1990          168           24.94187      30.46         17.87722      21.336 \r\n 1990          169           29.98397      31.66         17.27         0 \r\n 1990          170           9.024052      26.18889      18.82778      18.542 \r\n 1990          171           27.74415      30.06333      18.34556      0 \r\n 1990          172           9.754075      27.27         17.11         8.636 \r\n 1990          173           23.65772      27.43         15.06         13.716 \r\n 1990          174           28.55881      24.54         14.6          0 \r\n 1990          175           27.67507      26.79         14.83         0 \r\n 1990          176           11.89168      24.52         19.13         0 \r\n 1990          177           26.48794      33.19         22.43         0 \r\n 1990          178           28.21246      32.61         23.8          0 \r\n 1990          179           24.19059      32.64         20.67         9.398 \r\n 1990          180           24.46084      32.14         24.48         0.762 \r\n 1990          181           17.94731      36.64         21.49         16.002 \r\n 1990          182           28.22447      33.58         23.26         0 \r\n 1990          183           24.45946      31.63         22.65         0 \r\n 1990          184           28.69241      35.76         25.92         0 \r\n 1990          185           28.09318      35.97         21.89         0 \r\n 1990          186           20.92075      30.87         19.26         0 \r\n 1990          187           17.75355      26.08         19.27         0 \r\n 1990          188           26.47761      32.78         19.85         0 \r\n 1990          189           26.64149      34.53         23.53         0 \r\n 1990          190           21.50676      32.04         20.32         12.192 \r\n 1990          191           5.163056      28.345        22.07         17.526 \r\n 1990          192           16.80834      27.5          19.54         5.588 \r\n 1990          193           5.162219      26.19         15.17         20.574 \r\n 1990          194           25.37203      22.84         13.33         0.254 \r\n 1990          195           12.59258      21.19         13.61         1.27 \r\n 1990          196           27.07086      26.93         15.65         0 \r\n 1990          197           26.18305      29.44         19.93         0 \r\n 1990          198           26.89375      28.52         18.63         0 \r\n 1990          199           14.53664      28.5          20.82         10.16 \r\n 1990          200           21.81274      28.39611      21.565        34.29 \r\n 1990          201           14.45271      28.47667      20.39611      9.398 \r\n 1990          202           3.843004      24.78         17.7          15.494 \r\n 1990          203           27.25868      24.52         16.11         0 \r\n 1990          204           21.39154      25.92         14.4          0 \r\n 1990          205           22.73159      26.57         16.2          0 \r\n 1990          206           13.01145      27.39         18.96         2.286 \r\n 1990          207           7.180832      27.72         20.14         3.81 \r\n 1990          208           23.89842      29.87         23.09         2.54 \r\n 1990          209           20.3888       28.79111      22.02611      38.354 \r\n 1990          210           22.24198      28.43667      20.39056      0 \r\n 1990          211           23.2607       25.25         18.29445      0 \r\n 1990          212           23.75198      26.02         16.29056      0 \r\n 1990          213           21.41526      25.95         16.13         0 \r\n 1990          214           17.93271      27.7          17.32         1.016 \r\n 1990          215           11.15224      27.85389      21.35167      22.098 \r\n 1990          216           25.02036      27.80889      16.17945      0 \r\n 1990          217           25.91666      24.38         13.87         0 \r\n 1990          218           26.58869      23.55         12.57         0 \r\n 1990          219           25.87013      25.89         12.27         0 \r\n 1990          220           24.79229      24.71         13.35         0 \r\n 1990          221           23.33137      27.52         13.41         0 \r\n 1990          222           21.19744      29.4          18.53         9.144 \r\n 1990          223           15.6728       27.14         20.89         7.62 \r\n 1990          224           5.347403      34.98         19.83         14.732 \r\n 1990          225           20.75339      25.91         18.01         0 \r\n 1990          226           20.11458      25.92         18.27         0 \r\n 1990          227           18.49374      28.5          20.64         0 \r\n 1990          228           12.3805       30.36         23.08         1.016 \r\n 1990          229           23.02288      31.42         24.32         0 \r\n 1990          230           24.24448      31.53         23.06         0 \r\n 1990          231           21.62693      28.98833      22.55833      19.304 \r\n 1990          232           12.18577      31.49444      21.32889      15.494 \r\n 1990          233           13.62461      31.59         19.95         0 \r\n 1990          234           7.634461      24.65         19.95         0 \r\n 1990          235           21.84922      29.25         21.98         0 \r\n 1990          236           20.01165      31.37         23.82         0 \r\n 1990          237           23.03928      32.92         24.8          0 \r\n 1990          238           22.81882      33.13         24.39333      0 \r\n 1990          239           23.37965      33.48         23.22         0 \r\n 1990          240           22.39741      35.4          22.03         0 \r\n 1990          241           22.15311      31.78         16.96667      0 \r\n 1990          242           23.54299      29.45         17.65722      0 \r\n 1990          243           22.3598       30.51         18.84         0 \r\n 1990          244           21.22066      32.7          19.84         4.953 \r\n 1990          245           9.021541      29.18389      21.8          1.4732 \r\n 1990          246           19.14381      30.02         19.25         0 \r\n 1990          247           21.84797      33.56         22.51         0 \r\n 1990          248           21.31409      33.84         21.73         0 \r\n 1990          249           21.44258      34.29         22.93         0 \r\n 1990          250           13.70059      30.43         21.58         0 \r\n 1990          251           19.00887      28.33833      18.96944      2.0574 \r\n 1990          252           20.80151      29.55         20.61         0.127 \r\n 1990          253           20.71729      33.08         20.68         0 \r\n 1990          254           19.3569       29.2          19.56         0 \r\n 1990          255           20.85699      31.49         19.02         0 \r\n 1990          256           18.36324      28.53         18.43         0 \r\n 1990          257           20.15148      23.35         12.34         0 \r\n 1990          258           20.86741      26.68         8.82          0 \r\n 1990          259           20.28483      21.04         8.57          1.6002 \r\n 1990          260           15.96179      20.08         8.12          8.6106 \r\n 1990          261           2.555001      22.26         13.59         2.667 \r\n 1990          262           4.607254      23.31         11.89         0.635 \r\n 1990          263           8.209552      23.2          12.86         0.8636 \r\n 1990          264           17.70723      23.92         9.91          0 \r\n 1990          265           17.99359      17.49         7.21          0 \r\n 1990          266           20.10772      15.26         3.817222      0 \r\n 1990          267           19.87417      22.35         2.942222      0 \r\n 1990          268           19.36757      29.75         10.33         0 \r\n 1990          269           19.02988      31.49         11.62         0 \r\n 1990          270           11.34713      28.31         13            1.2446 \r\n 1990          271           16.72976      23.91         10.96         0.1524 \r\n 1990          272           3.567446      13.63         7.8           0 \r\n 1990          273           17.45757      20.03         5.212222      0 \r\n 1990          274           17.17992      22.65         9.92          0 \r\n 1990          275           14.08569      24.98         11.04         28.7528 \r\n 1990          276           8.663139      22.56         8.73          3.2512 \r\n 1990          277           17.82597      23.18         8.34          0 \r\n 1990          278           17.31758      29.72         14.84         0 \r\n 1990          279           16.3704       27.97         13.61         0 \r\n 1990          280           7.990854      13.67         6.972778      3.5052 \r\n 1990          281           1.039933      10.18         5.427222      2.2606 \r\n 1990          282           4.29383       6.886111      4.396111      0 \r\n 1990          283           16.3409       12.45         1.833889      0 \r\n 1990          284           16.15455      18.03         1.952778      0.2032 \r\n 1990          285           16.05677      15.4          3.006111      0 \r\n 1990          286           14.91303      19.03         2.922222      0.8382 \r\n 1990          287           12.77656      17.52         5.662222      0 \r\n 1990          288           14.30798      18.18         1.805         0 \r\n 1990          289           10.44619      23.17         8.48          0.1016 \r\n 1990          290           4.55805       20.79         0.97          0.6604 \r\n 1990          291           15.69046      10.62        -0.9438889     0 \r\n 1990          292           14.49237      16.4         -1.093889      1.524 \r\n 1990          293           2.041834      14.07         7.78          6.5532 \r\n 1990          294           15.03232      9.97         -1.011111      0.6858 \r\n 1990          295           14.67718      14.5         -1.551111      0.127 \r\n 1990          296           6.814063      17.32         3.423889      0 \r\n 1990          297           11.81302      13.89         2.512222      0 \r\n 1990          298           14.16719      14.64        -1.763889      0 \r\n 1990          299           13.56629      18.98         2.568889      0 \r\n 1990          300           13.41148      15.13         3.557222      0 \r\n 1990          301           13.70448      14.7         -1.82          0 \r\n 1990          302           12.95684      24.25         4.461111      0 \r\n 1990          303           12.191        23.65         11.61         0 \r\n 1990          304           12.25975      23.92         10.04         0 \r\n 1990          305           10.13825      23.69         12.59         0 \r\n 1990          306           5.800154      21.03         11.68         0 \r\n 1990          307           3.77152       11.69         3.108889      28.9814 \r\n 1990          308           1.742887      4.067778     -0.3788889     3.8608 \r\n 1990          309           11.39538      6.572222     -0.7422222     0 \r\n 1990          310           1.575778      3.295        -0.4538889     0 \r\n 1990          311           12.49911      2.427778     -7.14          0 \r\n 1990          312           1.43461       5.312778     -6.527778      6.604 \r\n 1990          313           11.75277      11.18        -1.037222      0 \r\n 1990          314           8.309382      11.29        -0.9177778     0 \r\n 1990          315           11.12785      17.58        -1.942222      0 \r\n 1990          316           11.30835      12.86        -1.781111      0 \r\n 1990          317           10.86187      15.74         0.1311111     0 \r\n 1990          318           11.17433      21.36         6.526111      0 \r\n 1990          319           10.57088      20.95         9.36          0 \r\n 1990          320           10.8794       15.47        -0.8311111     0 \r\n 1990          321           7.681029      10.8         -4.233889      0 \r\n 1990          322           5.475183      12.4          2.8           0 \r\n 1990          323           8.30796       14.17         1.243889      0 \r\n 1990          324           3.80811       18.73         6.15          0 \r\n 1990          325           5.876804      22.36         1.627778      0 \r\n 1990          326           10.18306      14.47        -1.365         0 \r\n 1990          327           7.453503      12.45         4.927778      0 \r\n 1990          328           6.138765      15.11         1.377778      0 \r\n 1990          329           7.597558      8.86          0.085         0 \r\n 1990          330           2.914574      22.09         0.69          20.6248 \r\n 1990          331           1.10558       3.620556     -5.471111      0 \r\n 1990          332           9.641986      4.556111     -7.24          0 \r\n 1990          333           9.5709        7.13         -6.692222      0 \r\n 1990          334           9.707298      12.54         0.605         0 \r\n 1990          335           7.212045      8.23         -4.365         0 \r\n 1990          336           3.425524      2.752222     -5.717222      0 \r\n 1990          337           4.683067      2.368889     -6.75          13.97 \r\n 1990          338           9.495755      0.4638889    -12.71         0.25 \r\n 1990          339           8.74251       5.295        -4.195         0 \r\n 1990          340           9.214549      2.671111     -5.507778      0 \r\n 1990          341           8.943049      6.393889     -5.746111      0 \r\n 1990          342           8.9492        9.15         -4.422222      0 \r\n 1990          343           8.984721      13.2          0.2077778     0 \r\n 1990          344           8.698997      13.21        -2.752778      0 \r\n 1990          345           8.896774      13.51         2.027778      0 \r\n 1990          346           1.799831      7.11         -0.5277778     0 \r\n 1990          347           6.101695     -0.2777778    -5.965         0 \r\n 1990          348           1.649416      4.807222     -5.12          0 \r\n 1990          349           1.119597      10.76        -0.7222222     3.81 \r\n 1990          350           4.047853      2.642778     -2.733889      0.25 \r\n 1990          351           1.231393      16.6         -6.052222      0.25 \r\n 1990          352           4.087308      1.208889     -9.11          4.57 \r\n 1990          353           1.313358      7.75          0.3927778     0 \r\n 1990          354           1.21564       6.82         -16.82         0 \r\n 1990          355           1.117923     -16.76        -21.1          0.51 \r\n 1990          356           3.480963     -19.43        -24.03         2.54 \r\n 1990          357           7.049622     -11.88        -22.75         0 \r\n 1990          358           8.526615     -4.297778     -16.98         0 \r\n 1990          359           7.554882     -5.696111     -19.62         0 \r\n 1990          360           4.700222     -10.83        -20.55         0 \r\n 1990          361           8.120976     -2.183889     -13.9          0 \r\n 1990          362           1.282019      11.38        -3.361111      0.25 \r\n 1990          363           1.648622     -14.70944     -21.11         4.57 \r\n 1990          364           8.124031     -17.26        -22.68         0.51 \r\n 1990          365           9.163462     -6.766111     -21.84         0 \r\n 1991          1             8.578455      0.1672222    -10.44         0 \r\n 1991          2             6.03701      -10.45        -18.83         0 \r\n 1991          3             8.55582      -6.372778     -20.81         0 \r\n 1991          4             3.537949     -7.76         -16.68         0 \r\n 1991          5             5.799861     -2.407222     -13.11         7.62 \r\n 1991          6             6.469259     -10.7         -19.33         0 \r\n 1991          7             6.373487     -5.438889     -21.61         0 \r\n 1991          8             4.028272     -1.596111     -7.04          0.25 \r\n 1991          9             9.188064     -6.497778     -16.34         0.25 \r\n 1991          10            3.099591     -1.421111     -16.4          0 \r\n 1991          11            4.745744     -0.9477777    -5.85          3.05 \r\n 1991          12            5.400414     -3.792222     -7.6           0.25 \r\n 1991          13            6.66143       1.071111     -7.34          0 \r\n 1991          14            9.379649      9.93         -3.717222      0 \r\n 1991          15            3.618072      2.332222     -4.723889      0 \r\n 1991          16            5.778648      0.51         -6.738889      7.62 \r\n 1991          17            3.825598      2.172778     -9.55          0 \r\n 1991          18            6.111234      6.117778     -8.13          0 \r\n 1991          19            10.20674      7.29         -0.9188889     0 \r\n 1991          20            8.484525     -0.23         -15.81         0.25 \r\n 1991          21            10.72598     -12.37        -20.79         0 \r\n 1991          22            6.754064      1.888889     -17.8          0 \r\n 1991          23            10.35067     -0.585        -9.03          0 \r\n 1991          24            10.9694      -5.267778     -17.51         0 \r\n 1991          25            4.811976     -12.57        -15.45         0.25 \r\n 1991          26            11.05777     -6.135        -19.68         0.25 \r\n 1991          27            10.45088      0.5288889    -12.75         0 \r\n 1991          28            10.14411      2.101111     -10.48         0 \r\n 1991          29            6.552772     -10.19        -20.52         0 \r\n 1991          30            11.94168     -6.487778     -24.94         0.25 \r\n 1991          31            11.90674      0.7527778    -16.58         0 \r\n 1991          32            10.91819      5.306111     -5.831111      0 \r\n 1991          33            12.27941      7.07         -2.465         0 \r\n 1991          34            10.27703      8.41          2.43          0 \r\n 1991          35            10.22741      12.05        -0.3211111     0 \r\n 1991          36            12.2028       10.43        -1.076111      0 \r\n 1991          37            12.10603      10.42444     -1.98          0 \r\n 1991          38            12.66606      8.54         -2.052778      0 \r\n 1991          39            13.51378      12.07        -2.007222      0 \r\n 1991          40            9.403749      10.03        -0.4877778     0 \r\n 1991          41            13.24257      5.992222     -2.818889      0 \r\n 1991          42            8.908866      0.9488889    -7.4           0 \r\n 1991          43            12.84028      4.246111     -8.57          0 \r\n 1991          44            5.396942      4.012778     -1.642222      0 \r\n 1991          45            10.64159     -1.651111     -15.45         0 \r\n 1991          46            14.51693     -8.17         -18.45         0 \r\n 1991          47            9.51563       8.36         -13.45         0 \r\n 1991          48            8.572263      9.35         -1.968889      0 \r\n 1991          49            1.772301      3.016111      0.4311111     4.83 \r\n 1991          50            10.60665      1.805        -3.632778      0.25 \r\n 1991          51            14.95751      14.68        -3.286111      0 \r\n 1991          52            14.33133      18.61         8.611111E-02                0 \r\n 1991          53            14.60162      4.697222     -4.752222      0 \r\n 1991          54            7.811486      5.916111     -4.976111      0 \r\n 1991          55            15.02893      0.5138889    -8.67          0 \r\n 1991          56            16.09576     -0.9461111    -11.91         0 \r\n 1991          57            5.628066     -0.2511111    -9.29          0 \r\n 1991          58            8.096124      6.642778     -7.95          0.25 \r\n 1991          59            15.23792      27.77778     -4.44          0 \r\n 1991          60            3.078964      17.08945      0.3366667     6.35 \r\n 1991          61            3.336824      0.7483333    -4.103889      31.5 \r\n 1991          62            15.98547     -0.2977778    -8.17          0 \r\n 1991          63            13.03621      8.25         -4.335         0 \r\n 1991          64            7.365514      14.52         3.005         0 \r\n 1991          65            17.36327      5.522222     -4.506111      0 \r\n 1991          66            17.8735       5.062778     -7.67          0 \r\n 1991          67            13.95356      11.77        -1.662222      0 \r\n 1991          68            18.57064      7.29         -3.277222      0 \r\n 1991          69            10.39912      12.44        -2.557222      0 \r\n 1991          70            15.75489      17.9          4.875         0 \r\n 1991          71            9.764912      26.67222      6.687778      2.54 \r\n 1991          72            3.77493       19.27778     -0.9261111     6.35 \r\n 1991          73            18.52981      5.757222     -5.212778      0.25 \r\n 1991          74            16.47969      10.31        -3.061111      0 \r\n 1991          75            4.48734       23.12222      6.227222      1.27 \r\n 1991          76            1.54716       10.12556      2.594445      9.91 \r\n 1991          77            9.807464      14.34         6.095         8.38 \r\n 1991          78            19.57526      15.725        0.9727778     0.25 \r\n 1991          79            18.09471      20.09         5.372222      0.51 \r\n 1991          80            20.21424      22.93         9.12          0 \r\n 1991          81            8.408669      22.58111      5.872222      2.03 \r\n 1991          82            4.367887      11.87         5.428889      17.02 \r\n 1991          83            20.80582      18.22         3.232778      0 \r\n 1991          84            18.40788      25.13         4.857222      0 \r\n 1991          85            19.98199      31.86         17.41         0 \r\n 1991          86            10.87769      18.56944     -0.4238889     16 \r\n 1991          87            21.62973      13.96        -3.436111      0.25 \r\n 1991          88            22.24194      4.033889     -5.401111      0 \r\n 1991          89            20.35972      7.67         -6.678889      0 \r\n 1991          90            18.28625      15.62         1.64          0 \r\n 1991          91            22.09713      17.95         1.738889      0 \r\n 1991          92            17.41205      17.88         3.938889      0 \r\n 1991          93            9.193085      22.86         7.6           0 \r\n 1991          94            20.2419       37.12778      10.41         0 \r\n 1991          95            22.04968      26.23         10.41         0 \r\n 1991          96            22.42846      27.71         15.3          0 \r\n 1991          97            16.96897      24.97         16.93         0 \r\n 1991          98            9.20254       24.7          13.39         4.318 \r\n 1991          99            12.76957      13.59         2.467222      0.254 \r\n 1991          100           21.01653      12.79        -0.3438889     0 \r\n 1991          101           2.091456      9.46          3.146111      11.176 \r\n 1991          102           13.28202      11.665        5.937222      23.114 \r\n 1991          103           2.957753      10.98556      6.09          16.764 \r\n 1991          104           14.05163      13.58056      5.037222      21.844 \r\n 1991          105           23.86198      15.82         6.488889      0 \r\n 1991          106           17.81455      17.94         5.107778      0 \r\n 1991          107           15.68247      16.74         6.436111      8.89 \r\n 1991          108           1.888239      13.37889      6.662778      82.042 \r\n 1991          109           5.033896      10.39722      5.388889      3.556 \r\n 1991          110           16.51864      13.49         3.621111      2.794 \r\n 1991          111           22.45553      14.83         4.410555      0 \r\n 1991          112           19.96873      16.61056      3.890556      1.27 \r\n 1991          113           17.55485      10.49722      3.047222      0.254 \r\n 1991          114           27.26801      18.43278      7.639444      0 \r\n 1991          115           9.910139      16.45444      7.063889      6.096 \r\n 1991          116           13.9846       23.53889      7.892222      36.322 \r\n 1991          117           26.04841      21.49722      6.547222      0 \r\n 1991          118           21.41815      22.87556      7.506111      27.432 \r\n 1991          119           15.69293      22.84167      6.373889      0.508 \r\n 1991          120           23.70332      16.63         6.783889      0.254 \r\n 1991          121           27.50277      16.64         5.043889      0 \r\n 1991          122           26.35543      22.95         5.127778      0 \r\n 1991          123           4.878251      20.6          9.03          15.24 \r\n 1991          124           4.276341      18.12222      10.80444      24.13 \r\n 1991          125           4.46232       19.58167      6.672778      10.16 \r\n 1991          126           11.68248      11.79         3.807778      0 \r\n 1991          127           21.58622      18.86         4.715         0 \r\n 1991          128           23.92796      22.3          12.48         0 \r\n 1991          129           26.70333      24.24         15.59         0 \r\n 1991          130           12.75133      32.3          16.6          0 \r\n 1991          131           14.89684      29.93667      19.20222      0 \r\n 1991          132           19.77329      28.59         20.95         0 \r\n 1991          133           25.51487      36.13         19.26         0 \r\n 1991          134           19.01762      38.07278      20.48444      14.478 \r\n 1991          135           19.04561      36.91722      20.78722      19.812 \r\n 1991          136           20.9028       28.65         22.05         0 \r\n 1991          137           20.09676      28.82         17.72         0.254 \r\n 1991          138           8.520172      27.68         14.21         0.254 \r\n 1991          139           11.74528      26.39         15.86         0 \r\n 1991          140           12.59108      26.43         16.74         0 \r\n 1991          141           19.0654       33.12         22.34         0.254 \r\n 1991          142           20.8995       37.29         21.3          0 \r\n 1991          143           7.752408      43.57222      21.29         7.112 \r\n 1991          144           16.80654      37.12         21.56         1.016 \r\n 1991          145           12.34949      32.75167      19.52833      0.508 \r\n 1991          146           23.12045      30.59         19.29722      0.508 \r\n 1991          147           25.74796      30.57         21            0 \r\n 1991          148           25.15898      31.63         24.45         0 \r\n 1991          149           19.77438      32.36778      19.85944      13.462 \r\n 1991          150           20.32014      30.45222      20.22778      0.762 \r\n 1991          151           11.42755      30.93         21.55         0 \r\n 1991          152           17.2172       30.95         19.49         3.556 \r\n 1991          153           26.56108      30.47944      22.59         0 \r\n 1991          154           25.93193      32.17         21.325        0 \r\n 1991          155           9.881897      31.01         16.53         0 \r\n 1991          156           22.11508      24.87         14.48         0 \r\n 1991          157           27.36436      24.67         11.7          0 \r\n 1991          158           27.43516      25.92         13.38         0 \r\n 1991          159           15.56515      26.9          14.54         0.762 \r\n 1991          160           24.047        29.23         19.34         0 \r\n 1991          161           17.31649      26.74         17.91         0 \r\n 1991          162           24.2431       38.37778      20.55         0 \r\n 1991          163           22.90322      32.32         20.26         0 \r\n 1991          164           18.80089      31.87         20.64         3.302 \r\n 1991          165           24.54707      33.9          20.71         0.254 \r\n 1991          166           21.24899      31.18056      17.60333      35.052 \r\n 1991          167           30.84926      27.14         17.37         0 \r\n 1991          168           28.96412      28.27         16.71         0 \r\n 1991          169           29.42591      31.96         16.44         0 \r\n 1991          170           28.72596      30.56         18.07         0 \r\n 1991          171           28.22869      31.57         18.65         0 \r\n 1991          172           14.62726      28.07         21.3          0.254 \r\n 1991          173           4.65696       29.57         17.81         0 \r\n 1991          174           9.130366      22.55         18.11         0 \r\n 1991          175           23.24258      28.4          21.61         0 \r\n 1991          176           24.3954       33.9          23.48         0 \r\n 1991          177           26.55647      34.54         23.29         0 \r\n 1991          178           27.02358      33.22         24.34         0 \r\n 1991          179           25.78185      32.81         22.29         0 \r\n 1991          180           25.90318      34.96         24.33         0 \r\n 1991          181           26.5048       33.52         22.86         0 \r\n 1991          182           26.11494      33.32         23.18         0.508 \r\n 1991          183           27.65465      32.61         18.68         0 \r\n 1991          184           27.3842       27.7          17.36         0 \r\n 1991          185           27.51206      29.89         15.83         0 \r\n 1991          186           28.42313      34.94         17.55         0 \r\n 1991          187           26.61237      36.41         22.66         0.254 \r\n 1991          188           17.56648      32.79         21.21         0 \r\n 1991          189           26.03892      28.44         17.07         0 \r\n 1991          190           8.612262      26.53944      18.43056      1.524 \r\n 1991          191           4.60127       26.23167      20.67278      0 \r\n 1991          192           7.926797      29.27389      20.62222      0.508 \r\n 1991          193           25.86846      27.11222      18.89389      0 \r\n 1991          194           17.90045      25.02778      18.64         0 \r\n 1991          195           26.30581      30.66         19.21         0 \r\n 1991          196           26.36728      29.63         18.75         0 \r\n 1991          197           26.75321      31.58         18.94         0 \r\n 1991          198           27.93243      32.57         21.01         0 \r\n 1991          199           27.71046      32.17         19.1          0 \r\n 1991          200           20.36478      33.15         21.39         0.508 \r\n 1991          201           24.74656      33.1          23.2          0 \r\n 1991          202           20.56038      35.04055      23.46944      0 \r\n 1991          203           23.15656      33.09167      20.38278      7.62 \r\n 1991          204           22.31373      40.25         17.82         0 \r\n 1991          205           27.46394      28.14         17.91         0 \r\n 1991          206           27.45671      26.38         14.87         0 \r\n 1991          207           28.1933       27.16         12.91         0 \r\n 1991          208           23.11873      26.27         15.4          0 \r\n 1991          209           11.23065      27.01         17.25         0 \r\n 1991          210           25.06124      25.09         15.71         0 \r\n 1991          211           23.78592      28.31         14.78         0 \r\n 1991          212           14.90738      29.68         18.35         0 \r\n 1991          213           25.86946      33.77         20.6          0 \r\n 1991          214           21.51342      34.75         23.1          0 \r\n 1991          215           9.742318      41.03         18.11         0 \r\n 1991          216           16.78274      33.33         18.32         0 \r\n 1991          217           3.484268      39.52778      17.92         1.016 \r\n 1991          218           18.2394       28.97389      19.87111      0 \r\n 1991          219           21.44229      24.64667      21.23556      0 \r\n 1991          220           15.59444      28.49333      18.97833      11.684 \r\n 1991          221           20.16629      25.84         16.86         0 \r\n 1991          222           22.35494      28.91         16.13         0 \r\n 1991          223           24.33858      28.29         18.21         0 \r\n 1991          224           19.64032      28.69         18.01         0 \r\n 1991          225           20.26671      28.23         17.49         0.508 \r\n 1991          226           24.02808      29.97         17.65         0 \r\n 1991          227           24.4287       30.69         17.82         0 \r\n 1991          228           9.534206      27.49         18.4          0 \r\n 1991          229           23.91344      27.62         19.48         0 \r\n 1991          230           20.11868      27.67         14.8          0 \r\n 1991          231           25.15689      23.29         12.22         0 \r\n 1991          232           19.95421      25.98         11.35         0 \r\n 1991          233           22.91916      31.1          15.03         0 \r\n 1991          234           23.74876      33.09         20.63         0 \r\n 1991          235           10.73895      29.78         20.62         0 \r\n 1991          236           20.10036      32.26         20.75         0 \r\n 1991          237           22.4531       32.95         20.47         0 \r\n 1991          238           20.50415      33.46         20.13         0 \r\n 1991          239           20.42093      32.22         20.79         0 \r\n 1991          240           18.87428      31.95         22.12         0 \r\n 1991          241           15.36984      30.9          23.09         0 \r\n 1991          242           9.980556      41.69         21.92         0 \r\n 1991          243           23.07836      39.24         19.97         0.762 \r\n 1991          244           17.91032      27.98         15.48         0 \r\n 1991          245           13.58311      30.48         21.46         0 \r\n 1991          246           8.075747      30.93444      17.48556      0.762 \r\n 1991          247           23.41634      25.38         11.58         1.778 \r\n 1991          248           20.80331      26.91         11.81         0.254 \r\n 1991          249           20.50244      31.06         15.56         0 \r\n 1991          250           20.45403      31.61         19.57         0 \r\n 1991          251           8.647951      31.94944      22.39222      2.286 \r\n 1991          252           12.35711      37.13         24.41         0 \r\n 1991          253           19.89639      33.09         20.28         0 \r\n 1991          254           18.90996      32.65         21.18         0 \r\n 1991          255           19.22389      34.27         23.12         0 \r\n 1991          256           16.12509      36.44         23.33         0 \r\n 1991          257           8.066585      39.98         24.2          7.62 \r\n 1991          258           9.937712      30.00389      16.05445      5.842 \r\n 1991          259           18.71683      41.65         12.08         4.572 \r\n 1991          260           14.51459      27.51         11.37         0.508 \r\n 1991          261           20.64616      15.92         1.701111      0.254 \r\n 1991          262           20.48306      12.76        -0.285         0 \r\n 1991          263           18.77633      16.32         6.388889E-02                0 \r\n 1991          264           12.93366      18.01         3.637222      0 \r\n 1991          265           14.78663      18.3          8.44          0 \r\n 1991          266           18.63035      21.39         3.897778      0 \r\n 1991          267           11.34333      18.06         5.517778      0 \r\n 1991          268           19.12268      22.84         4.572778      0 \r\n 1991          269           18.68583      18.53611      3.066111      0 \r\n 1991          270           16.38383      18.175        5.440556      0 \r\n 1991          271           18.06655      21.97611      2.545         0 \r\n 1991          272           16.96478      28.47667      10.69611      0 \r\n 1991          273           14.8965       22.50056      6.787222      0 \r\n 1991          274           16.57906      27.04222      5.88          0 \r\n 1991          275           12.87408      23.66222      10.11333      0 \r\n 1991          276           8.470299      15.91222      6.396111      31.0642 \r\n 1991          277           8.437705      11.65556      7.091111      10.9728 \r\n 1991          278           13.5029       10.53833      2.53          0 \r\n 1991          279           17.03444      12.19667      0.8055556     0 \r\n 1991          280           16.9462       19.96333     -0.4894444     0 \r\n 1991          281           15.47498      25.28056      8.651111      0 \r\n 1991          282           15.30645      23.15722      6.357778      0 \r\n 1991          283           15.53954      19.56056      4.248333      0 \r\n 1991          284           15.94326      22.69         11.41         0 \r\n 1991          285           16.22116      19.05         5.78          0 \r\n 1991          286           7.735505      18.13         6.055         0 \r\n 1991          287           13.91285      13.31         4.376111      0 \r\n 1991          288           15.70728      12.57        -1.048889      0 \r\n 1991          289           15.30658      23.88         3.546111      0 \r\n 1991          290           15.15315      26.24         10            0 \r\n 1991          291           5.049711      9.99         -1.838889      0.762 \r\n 1991          292           14.08744      10.28        -4.272222      0 \r\n 1991          293           13.92875      15.54        -0.6511111     0 \r\n 1991          294           13.38106      22.53         4.545         0 \r\n 1991          295           9.224339      26.27         14.65         0.508 \r\n 1991          296           12.27983      27.05         15.37         0 \r\n 1991          297           3.448369      21.34556      3.188889      19.304 \r\n 1991          298           7.040207      12.98611      2.775556      0.508 \r\n 1991          299           1.995391      12.89444      9.548889      22.352 \r\n 1991          300           7.267357      18.71722      12.46056      0 \r\n 1991          301           2.242373      21.79056      5.777222      6.35 \r\n 1991          302           2.834158      20.4         -2.371111      0 \r\n 1991          303           8.169092      2.407778     -4.141111      0 \r\n 1991          304           1.214615      4.416111      0.2772222     33.5026 \r\n 1991          305           1.975225      3.126111     -7.645555      0 \r\n 1991          306           9.959384     -6.502222     -12.74         0 \r\n 1991          307           9.546507     -7.71         -14.21         0 \r\n 1991          308           12.4628      -4.018889     -17.17         0 \r\n 1991          309           2.407808      3.637778     -7.47          0 \r\n 1991          310           2.497513     -0.6672222    -11.68         5.5118 \r\n 1991          311           12.79183     -8.48         -21.18         0 \r\n 1991          312           12.42363     -5.168889     -22.65         0 \r\n 1991          313           11.22442      3.656111     -10.06         0 \r\n 1991          314           2.087021      2.787778     -2.482778      0 \r\n 1991          315           1.4826        6.645        -9.277778E-02                0 \r\n 1991          316           7.990227      13.33         3.777778      0 \r\n 1991          317           11.07296      16.55         3.675         0 \r\n 1991          318           1.323608      15.19222      12.32         6.9342 \r\n 1991          319           1.35344       6.527222      4.711111      0 \r\n 1991          320           3.20394       10.2          5.697222      4.2418 \r\n 1991          321           2.735792      13.935        6.581111      8.7376 \r\n 1991          322           8.54013       12.99         5.131667      0 \r\n 1991          323           2.474334      10.78         3.695         0 \r\n 1991          324           10.46335      14.47         0.2238889     0 \r\n 1991          325           6.20801       12.57         0.4111111     0 \r\n 1991          326           1.0119        6.967222     -2.716111      10.5918 \r\n 1991          327           4.917748     -2.723889     -8.35          0 \r\n 1991          328           10.06323     -7.11         -12.65         0 \r\n 1991          329           7.957508     -5.053889     -16.63         0 \r\n 1991          330           4.447885      5.647778     -8.63          5.9944 \r\n 1991          331           4.789676      7.2           1.795         3.4036 \r\n 1991          332           3.826561      10.88         7.11          6.8326 \r\n 1991          333           2.863446      17.68         9.611111E-02                3.2512 \r\n 1991          334           6.707496      3.573889     -9.78          0 \r\n 1991          335           3.873589     -2.117778     -10.94         0 \r\n 1991          336           1.876273     -3.447222     -5.016111      0 \r\n 1991          337           5.395812     -2.502222     -16.34         1.78 \r\n 1991          338           6.10387      -7.66         -17.3          0 \r\n 1991          339           8.491888      7.55         -7.67          0 \r\n 1991          340           8.613392      10.26        -7.58          0 \r\n 1991          341           4.900468      16.93111      5.351111      0 \r\n 1991          342           4.305964      28.36111     -0.7672222     0 \r\n 1991          343           8.584564      7.95         -2.872778      0 \r\n 1991          344           8.258337      13.55        -2.153889      0 \r\n 1991          345           8.173025      10.16        -1.547778      0 \r\n 1991          346           1.665901      15.27        -5.343333      7.87 \r\n 1991          347           4.606333      5.998889     -1.97          0.76 \r\n 1991          348           8.244656      0.16         -5.992778      0 \r\n 1991          349           8.135118     -2.035        -8.7           0 \r\n 1991          350           7.781529      8.08         -7.03          0 \r\n 1991          351           8.486449      3.172222     -6.452222      0 \r\n 1991          352           8.492391     -5.073889     -12.83         0 \r\n 1991          353           2.924156     -0.7027778    -11.65         0 \r\n 1991          354           1.614438      10.7         -1.857222      10.16 \r\n 1991          355           4.3873        8.31          2.743889      0.25 \r\n 1991          356           2.518517      11.37389      0.7222222     0.25 \r\n 1991          357           7.173844      9.265         3.707222      14.99 \r\n 1991          358           8.255116      6.997222     -5.063889      0 \r\n 1991          359           8.185661      7.23         -3.443889      0 \r\n 1991          360           7.694585      8.04         -2.657778      0 \r\n 1991          361           1.209553      7.23         -1.066111      0 \r\n 1991          362           2.672321      11.02278      2.108889      0.76 \r\n 1991          363           1.509001      9.89          7.03          0 \r\n 1991          364           1.543059      7.03          4.562778      0.25 \r\n 1991          365           1.577117      13.77         4.232222      0.76 \r\n 1992          1             2.120493      5.555555      0.5555556     2.03 \r\n 1992          2             3.119339      18.33333      0.5555556     3.3 \r\n 1992          3             2.196851      10.55556      1.111111      0 \r\n 1992          4             1.945811      10.14611      9.944444E-02                0 \r\n 1992          5             1.356662      10.92167      0.4244444     0.25 \r\n 1992          6             2.098109      9.972222      3.969445      5.08 \r\n 1992          7             1.470174      8.673889      4.595556      0.25 \r\n 1992          8             1.536741      5.851666      6.892222      0.51 \r\n 1992          9             3.814385      4.527778      0.4244444     0 \r\n 1992          10            8.045623      13.36889     -4.197222      0 \r\n 1992          11            8.551636      8.673889     -3.425         0 \r\n 1992          12            1.329968      3.963889      2.513889      0 \r\n 1992          13            3.386739     -3.753333     -11.00944      3.56 \r\n 1992          14            6.199893     -0.6583334    -21.21389      0 \r\n 1992          15            8.319674     -10.065       -21.19         0.25 \r\n 1992          16            6.517752      4.045556     -10.44         0 \r\n 1992          17            7.955667     -3.606667     -15.16778      0 \r\n 1992          18            7.175142     -8.061111     -15.46667      0 \r\n 1992          19            7.330326      9.459444     -10.09167      0 \r\n 1992          20            8.385698      9.25         -5.332778      0 \r\n 1992          21            8.212523      7.777778     -3.888889      0 \r\n 1992          22            1.238966      5.647222     -0.1944444     0.25 \r\n 1992          23            5.938602      1.291667     -10.84167      3.3 \r\n 1992          24            5.89467       4.328889     -10.29833      0 \r\n 1992          25            7.55099      -5.277778E-02               -10.06056      0 \r\n 1992          26            8.701715      7.457778     -8.103889      0 \r\n 1992          27            4.472738      1.138889     -7.392778      0 \r\n 1992          28            3.327493     -2.038889     -6.690556      0 \r\n 1992          29            4.772521      12.61222     -5.115556      0 \r\n 1992          30            6.078139      9.865556     -4.973889      0 \r\n 1992          31            6.337756      11.56389     -3.852222      0 \r\n 1992          32            9.207018      10.39778     -3.131667      0 \r\n 1992          33            8.770124      18.12889     -0.7016667     0 \r\n 1992          34            5.75572       17.38167     -0.7838889     0 \r\n 1992          35            7.082299      4.716667     -5.542778      0 \r\n 1992          36            11.16777      10           -3.888889      0 \r\n 1992          37            7.569735      10           -4.481111      0 \r\n 1992          38            11.03907      2.225        -9.660556      0 \r\n 1992          39            10.8089      -3.613889     -11.45944      0 \r\n 1992          40            3.44544       1.462222     -9.756667      0 \r\n 1992          41            6.270937      7.583333     -8.008333      0.51 \r\n 1992          42            7.591366      0.2461111    -8.212778      1.02 \r\n 1992          43            5.15996      -1.986667     -7.222222      0 \r\n 1992          44            4.771015      5.555555     -2.426667      0.25 \r\n 1992          45            3.069633      0.44         -1.226667      0.25 \r\n 1992          46            5.108162      3.477778     -1.273333      14.22 \r\n 1992          47            8.037045      11.70833     -5.444444E-02                0.25 \r\n 1992          48            2.923445      5.44          2.777778      0 \r\n 1992          49            2.014345      4.476111     -0.1155556     19.81 \r\n 1992          50            5.651287      1.823333     -0.9433333     3.05 \r\n 1992          51            12.35209      12.08333     -4.935         0 \r\n 1992          52            8.74092       6.652778     -4.185         0 \r\n 1992          53            10.83572      12.76389     -1.295556      0 \r\n 1992          54            6.441687      7.343889     -0.9733334     0 \r\n 1992          55            4.618968      2.431667     -5.138889      6.35 \r\n 1992          56            11.47525      2.549444     -8.160556      0.76 \r\n 1992          57            10.35816      8.865        -4.037222      0 \r\n 1992          58            9.538474      11.46222     -0.7483333     0 \r\n 1992          59            13.61829      14.04556     -2.576111      0 \r\n 1992          60            15.12294      13.1         -1.766111      0 \r\n 1992          61            16.33183      23.95667      3.638889      0 \r\n 1992          62            12.50501      22.43056      5.293334      0 \r\n 1992          63            7.740609      21.55111      6.093889      0 \r\n 1992          64            6.35604       19.84833      8.437778      0 \r\n 1992          65            3.363894      16.43611      8.846111      1.78 \r\n 1992          66            7.691531      17.28722      7.777778      7.11 \r\n 1992          67            8.757991      15.12556      3.366667      1.02 \r\n 1992          68            10.82325      22.46833      8.128889      0.25 \r\n 1992          69            4.047016      12.34        -8.653334      1.52 \r\n 1992          70            17.37352     -3.233889     -9.911111      0 \r\n 1992          71            9.197938      1.267778     -7.337778      0 \r\n 1992          72            16.76064     -2.388889E-02               -10.20222      0.25 \r\n 1992          73            12.72974      6.461111     -6.422222      0 \r\n 1992          74            13.16324      10.25111     -6.688334      0.25 \r\n 1992          75            18.2958       5.712222     -4.101111      0 \r\n 1992          76            14.14276      13.46889     -1.129444      0 \r\n 1992          77            17.54682      9.711111      1.132778      0 \r\n 1992          78            2.516132      2.363889      0.07          4.57 \r\n 1992          79            18.17337      7.088889     -1.383889      6.86 \r\n 1992          80            13.62854      11.05944     -2.222222E-02                0 \r\n 1992          81            5.087493      7.161111     -0.5205556     0.25 \r\n 1992          82            20.31073      8.360556     -2.283333      4.32 \r\n 1992          83            20.42645      14.54611     -1.050556      0 \r\n 1992          84            19.71204      15.95889      2.513333      0 \r\n 1992          85            19.35719      13.04056      3.877222      0 \r\n 1992          86            21.18928      6.256667     -3.462778      0 \r\n 1992          87            20.76678      9.866667     -4.677778      0 \r\n 1992          88            4.262618      7.096667      3.339444      0.25 \r\n 1992          89            3.864426      7.233333      2.593333      7.87 \r\n 1992          90            20.337        11.68444      1.594444      2.79 \r\n 1992          91            13.49093      9.6          -1.418889      0 \r\n 1992          92            10.48435      1.396111     -4.385         0 \r\n 1992          93            22.72837      7.44         -3.365         0 \r\n 1992          94            14.38028      16.12         0.7466667     0 \r\n 1992          95            23.21438      13.78         0.5622222     0 \r\n 1992          96            22.24938      16.85         1.175         0 \r\n 1992          97            17.45385      22.7          5.542222      0 \r\n 1992          98            19.36016      17.27         4.678889      3.81 \r\n 1992          99            11.61612      19.02         2.41          0 \r\n 1992          100           16.68659      14.63         6.766111      0 \r\n 1992          101           17.24833      27.4          8.99          7.366 \r\n 1992          102           9.173001      13.49         0.5105556     0 \r\n 1992          103           16.42479      4.445        -3.133889      0 \r\n 1992          104           3.860744      7.73          0.875         0 \r\n 1992          105           11.18442      16.15         6.224444      0 \r\n 1992          106           13.62344      26.54         9.103889      15.494 \r\n 1992          107           1.017256      21.63         8.265         11.176 \r\n 1992          108           3.881162      20.82778      7.297222      0.508 \r\n 1992          109           7.907216      22.30333      9.342222      37.846 \r\n 1992          110           3.461088      19.58667      14.06556      11.938 \r\n 1992          111           3.775181      14.72         4.488333      15.24 \r\n 1992          112           8.202188      4.382222      1.398333      0.508 \r\n 1992          113           13.70942      11.46         0.9655555     0 \r\n 1992          114           5.705386      9.7           4.122222      10.668 \r\n 1992          115           8.375531      9.3           4.513333      1.27 \r\n 1992          116           5.400331      10.43833      3.918333      0 \r\n 1992          117           14.31392      12.38167      4.015         0.254 \r\n 1992          118           26.48204      14.94         2.860556      0 \r\n 1992          119           26.16644      18.68167      2.175555      0 \r\n 1992          120           25.13689      26.26333      10.12222      0 \r\n 1992          121           25.28584      28.41945      11.28222      0 \r\n 1992          122           24.37163      27.49         18.91055      0 \r\n 1992          123           20.79506      22.81         13.16         0 \r\n 1992          124           26.81354      22.29         8.57          0 \r\n 1992          125           21.40129      25.37         10.41         0 \r\n 1992          126           23.40659      15.09         4.438889      0 \r\n 1992          127           28.03694      18.27         1.225         0 \r\n 1992          128           27.70741      21.26         4             0 \r\n 1992          129           27.59093      24.16         6.582778      0 \r\n 1992          130           24.99086      27.6          10.2          0 \r\n 1992          131           21.28112      26.06         12.28         0 \r\n 1992          132           16.71152      26.83         16.32         6.35 \r\n 1992          133           20.1991       26.42         13.58         0 \r\n 1992          134           24.54201      21.61         7.89          0 \r\n 1992          135           17.59351      17.47         10.98         0.254 \r\n 1992          136           23.55579      25.07         10.06         0 \r\n 1992          137           21.93905      29.16         17.24         0 \r\n 1992          138           23.81479      24.31         12.54         1.778 \r\n 1992          139           25.81281      23.96         12.53         0 \r\n 1992          140           26.39455      28.17         11.25         0 \r\n 1992          141           20.92544      28.11         16.8          0 \r\n 1992          142           11.64219      27.86         20.41         1.27 \r\n 1992          143           20.73465      29.75         15.85         10.668 \r\n 1992          144           8.118926      15.73         9.51          4.064 \r\n 1992          145           17.34808      15.57         6.952222      0 \r\n 1992          146           3.776018      13.59         5.316111      8.382 \r\n 1992          147           14.42083      13.21         6.753889      0.254 \r\n 1992          148           24.62322      17.21         3.743889      0 \r\n 1992          149           28.78036      19.97         4.647778      0 \r\n 1992          150           25.54152      21.98         5.388889      0 \r\n 1992          151           28.825        24.88         8             0 \r\n 1992          152           24.88074      25.52         7.64          0 \r\n 1992          153           12.08092      22.43         15.1          0.508 \r\n 1992          154           25.02036      26.61         13.81         0 \r\n 1992          155           25.57219      26.51         13.07         0 \r\n 1992          156           24.27996      28.2          13.18         0 \r\n 1992          157           29.07784      28.05         11.26         0 \r\n 1992          158           9.653115      22.84         13.87         4.826 \r\n 1992          159           29.01462      26.31         9.08          0 \r\n 1992          160           11.29446      24.38         14.54         0 \r\n 1992          161           7.544714      21.11         16.54         1.524 \r\n 1992          162           13.89532      24.5          16.82         0 \r\n 1992          163           28.80462      28.39         12.75         0 \r\n 1992          164           27.9736       30.83         13.08         0 \r\n 1992          165           28.96006      29.82         13.49         0 \r\n 1992          166           22.80782      30.23         13.57         0 \r\n 1992          167           26.22364      29.44         16.27         0 \r\n 1992          168           14.47137      30.36         21.21         2.794 \r\n 1992          169           28.997        29.24         18.96         0 \r\n 1992          170           28.36585      28.86         16.98         0 \r\n 1992          171           23.83508      29.42         15.02         0 \r\n 1992          172           21.10368      20.45         8.87          0 \r\n 1992          173           29.97468      23.23         6.045         0 \r\n 1992          174           13.78394      26.33         11.29         3.048 \r\n 1992          175           25.4178       30.94         14.7          0 \r\n 1992          176           19.36585      26.96         12.44         0 \r\n 1992          177           28.44723      28.57         13.89         0 \r\n 1992          178           29.23629      24.71         9.98          0 \r\n 1992          179           28.97253      26.41         8.8           0 \r\n 1992          180           26.82304      28.71         14.03         0 \r\n 1992          181           28.34321      31.19         15.03         0 \r\n 1992          182           28.31874      31.41         19.39         0 \r\n 1992          183           29.46816      32.41         19.26         0.254 \r\n 1992          184           8.111019      32.71278      19.555        18.034 \r\n 1992          185           31.20758      24.63         14.88         0 \r\n 1992          186           22.65937      29.47         15.97         6.35 \r\n 1992          187           17.4746       44.35         16.81         0 \r\n 1992          188           28.23217      26.94         17.6          0 \r\n 1992          189           21.3553       30.71         21.35         0 \r\n 1992          190           20.84967      40.08889      22.13         9.652 \r\n 1992          191           9.122208      31.26         21.72         15.494 \r\n 1992          192           19.72425      37.38         20.48         0 \r\n 1992          193           21.07025      34.58         22.63         0 \r\n 1992          194           16.00698      41.62         25.76         11.43 \r\n 1992          195           15.15499      43.02         22.09111      40.386 \r\n 1992          196           19.15783      36.45         17.84833      2.286 \r\n 1992          197           21.34639      33.03         16.03833      27.7622 \r\n 1992          198           18.63566      36.84111      14.73778      0 \r\n 1992          199           21.33689      35.325        12.51667      0 \r\n 1992          200           22.74251      33.90333      15.22944      25.4762 \r\n 1992          201           22.23344      40.04556      16.20278      6.4516 \r\n 1992          202           15.34022      42.92222      11.77222      0 \r\n 1992          203           19.66744      38.84667      13.67444      8.9662 \r\n 1992          204           15.61737      42.77555      16.42222      0 \r\n 1992          205           15.37524      40.30667      14.90556      0 \r\n 1992          206           16.58282      32.73722      17.27111      6.7564 \r\n 1992          207           15.24064      36.465        20.05611      10.9728 \r\n 1992          208           17.25682      34.30389      14.36056      0 \r\n 1992          209           23.61835      37.935        15.32556      0 \r\n 1992          210           21.60877      39.285        16.54944      12.4968 \r\n 1992          211           15.76226      35.22722      17.02222      35.6362 \r\n 1992          212           16.89211      28.98444      12.73556      10.414 \r\n 1992          213           22.71916      35.83944      11.80056      0 \r\n 1992          214           22.2234       35.76889      14.75222      4.6736 \r\n 1992          215           21.41848      25.73889      11.42833      0 \r\n 1992          216           21.40016      25.84167      9.502222      0 \r\n 1992          217           21.52174      23.16556      13.225        0 \r\n 1992          218           19.82772      21.86         15.23556      11.5824 \r\n 1992          219           21.36321      25.59722      16.8          9.144 \r\n 1992          220           13.34935      26.85833      19.10833      11.811 \r\n 1992          221           17.79761      30.08389      20.14167      0 \r\n 1992          222           23.81646      29.87444      23.33389      0 \r\n 1992          223           20.04408      29.98944      17.09278      0 \r\n 1992          224           23.74914      26.71944      15.49722      0 \r\n 1992          225           14.51279      23.35389      14.59667      0 \r\n 1992          226           21.07384      22.60556      11.93278      0 \r\n 1992          227           16.78491      22.49055      11.70111      0 \r\n 1992          228           20.53503      21.905        10.03222      0 \r\n 1992          229           21.61551      23.27111      11.595        0 \r\n 1992          230           22.07767      24.06722      13.06056      2.8448 \r\n 1992          231           16.22576      26.40222      15.82389      0 \r\n 1992          232           22.17256      25.58611      13.43167      0 \r\n 1992          233           23.71931      24.58         12.09556      0 \r\n 1992          234           24.18624      26.05         12.57         0 \r\n 1992          235           22.68481      26.63         13.8          0 \r\n 1992          236           21.38735      28.09         20.02         0 \r\n 1992          237           21.82964      29.29         19.04         0 \r\n 1992          238           15.88393      29.12         19.17         0.762 \r\n 1992          239           3.649494      19.91         15.03         0 \r\n 1992          240           15.5236       21.34         11.68         0 \r\n 1992          241           21.57639      24.83         10.56         0 \r\n 1992          242           21.06782      28.35         13.9          0 \r\n 1992          243           23.15103      22.39         9.62          0 \r\n 1992          244           22.50933      24.46         8.7           0 \r\n 1992          245           9.014344      23.70667      17.37889      54.356 \r\n 1992          246           17.01562      27.81278      15.73778      14.732 \r\n 1992          247           23.17015      30.2          15.15         0 \r\n 1992          248           22.0493       26.78         14.37         0 \r\n 1992          249           6.605532      28.36         17.67         4.318 \r\n 1992          250           9.006939      29.3          19.39         0.508 \r\n 1992          251           7.134682      26.18778      10.11444      12.192 \r\n 1992          252           21.07962      19.25         8.83          0 \r\n 1992          253           7.48413       41.26111      9.91          6.096 \r\n 1992          254           21.73153      19.11         8.84          0 \r\n 1992          255           20.55921      21.48         10.5          0 \r\n 1992          256           18.72796      23.84         11.36         0 \r\n 1992          257           19.59367      28.42         16.99         0 \r\n 1992          258           4.301445      28.25889      18.50556      108.204 \r\n 1992          259           13.98494      30.12611      19.13889      108.204 \r\n 1992          260           15.18361      28.63         21.25         0.508 \r\n 1992          261           15.931        32.97         21.72         5.334 \r\n 1992          262           19.8363       36.27         7.19          7.874 \r\n 1992          263           19.96764      18.39         7.65          0 \r\n 1992          264           3.480586      35.12778      13.43         2.032 \r\n 1992          265           4.764781      19.35611      8.402223      0 \r\n 1992          266           19.6202       16.43         6.188889      0 \r\n 1992          267           19.03632      18.84         6.106111      0 \r\n 1992          268           19.49627      19.33         6.611111      0 \r\n 1992          269           12.00201      23.59         8.33          0 \r\n 1992          270           7.932027      27.52222      10.16         6.35 \r\n 1992          271           18.60796      23.24         9.04          0 \r\n 1992          272           18.99293      15.92         2.66          0 \r\n 1992          273           18.28529      18.4          1.042222      0 \r\n 1992          274           17.63941      23.25         6.391111      0 \r\n 1992          275           17.45582      25.53         9.97          0 \r\n 1992          276           17.46205      26.52         11.7          0 \r\n 1992          277           17.29816      28.86         12.87         0 \r\n 1992          278           15.92259      24.65         14.16         0 \r\n 1992          279           15.94117      22.48         13            0 \r\n 1992          280           13.13525      24.15         11.3          0 \r\n 1992          281           11.83281      21.8          10.8          0 \r\n 1992          282           5.033059      15.17         4.745         5.588 \r\n 1992          283           9.804618      15.06         7.01          0 \r\n 1992          284           13.51206      14.98         5.86          0 \r\n 1992          285           16.22057      18.16         2.192222      0 \r\n 1992          286           14.61249      15.21         6.637778      0 \r\n 1992          287           13.12655      20.59         3.455         0 \r\n 1992          288           10.71995      16.95         6.388889      0.508 \r\n 1992          289           1.254991      11.44         6.127222      1.016 \r\n 1992          290           11.33692      9.13         -0.5972222     0 \r\n 1992          291           11.93335      10.51        -3.613889      0 \r\n 1992          292           14.42413      7.19         -2.07          0 \r\n 1992          293           3.127749      5.64         -1.752778      0 \r\n 1992          294           12.70664      20.08         3.722222      0 \r\n 1992          295           13.40558      24.03         4.16          0 \r\n 1992          296           12.50455      25.52         16.04         0 \r\n 1992          297           12.12356      25.1          12.98         0 \r\n 1992          298           14.56099      23.44         7.95          0 \r\n 1992          299           15.1852       24.73         7.67          0 \r\n 1992          300           14.10004      16.29         3.435         0 \r\n 1992          301           16.53981      17.13        -0.97          0 \r\n 1992          302           11.76737      13.63         5.797778      0 \r\n 1992          303           8.712887      9.03          3.09          0 \r\n 1992          304           8.054158      9.6           2.022222      0 \r\n 1992          305           1.442183      14.95         6.252222      25.4508 \r\n 1992          306           1.042025      10.55         3.553889      12.9032 \r\n 1992          307           3.009426      4.238333     -0.2661111     0 \r\n 1992          308           4.521607      4.821111      0.1594445     0 \r\n 1992          309           3.58096       2.47         -1.475         0 \r\n 1992          310           4.552778      1.07         -1.296667      0 \r\n 1992          311           4.118437      0.5761111    -1.332778      0 \r\n 1992          312           4.232911      0.9955556    -2.686111      0 \r\n 1992          313           6.549424      13.81         0.9955556     0 \r\n 1992          314           3.34469       13.47778      8.917778      0 \r\n 1992          315           3.67192       11.84722      1.551111      11.3284 \r\n 1992          316           4.120863      5.76          1.551111      3.3782 \r\n 1992          317           7.825126      7.429444     -2.686111      0 \r\n 1992          318           8.698117      2.573333     -5.767778      0 \r\n 1992          319           7.746467      2.376667     -6.108889      0 \r\n 1992          320           6.395411      7.451667     -1.255556      0 \r\n 1992          321           9.075515      17.84278     -1.022222      0 \r\n 1992          322           3.476862      4.315556     -0.6711111     0 \r\n 1992          323           3.59234       3.333333      2.402778      4.6482 \r\n 1992          324           2.53632       10.73611      2.753889      32.6644 \r\n 1992          325           1.480299      10.35389      1.436111      7.4168 \r\n 1992          326           1.320763      2.662222     -0.76          0 \r\n 1992          327           1.562766      1.738889     -0.5794445     4.5466 \r\n 1992          328           1.804768      2.987222      0.1444445     0 \r\n 1992          329           1.34206       3.128889     -0.1155556     3.9878 \r\n 1992          330           1.114534      1.158889     -4.004445      15.2146 \r\n 1992          331           3.205823     -2.455555     -10.86278      0 \r\n 1992          332           8.656445      0.7572222    -11.59111      0 \r\n 1992          333           8.391932      1.537778     -11.33167      0 \r\n 1992          334           5.654801      0.5555556    -5.026111      0 \r\n 1992          335           4.320315      0.2722222    -8.706111      0 \r\n 1992          336           3.722589      2.985        -5.178333      0 \r\n 1992          337           5.57882       1.729445     -5.448889      0.25 \r\n 1992          338           4.46596       2.790555     -7.972222      0 \r\n 1992          339           7.079579     -3.178889     -14.20389      0 \r\n 1992          340           8.097964     -3.606667     -13.45389      0 \r\n 1992          341           3.364815     -1.871111     -8.257222      0.51 \r\n 1992          342           6.245247     -0.6344444    -9.627778      0.51 \r\n 1992          343           8.145578      3.81         -7.691667      0 \r\n 1992          344           1.129847      1.202778      0             5.84 \r\n 1992          345           6.387546      4.858333     -6.428333      1.27 \r\n 1992          346           6.253574      4.003334     -6.608889      0 \r\n 1992          347           5.864713      5.489444     -1.986667      0 \r\n 1992          348           1.730586      1.640556      0.6472222     0 \r\n 1992          349           1.555528      7.196111      0.9955556     10.16 \r\n 1992          350           1.139387      2.159444     -1.601667      11.68 \r\n 1992          351           1.421472     -1.210556     -3.708333      4.32 \r\n 1992          352           2.737591     -1.962778     -3.797222      0 \r\n 1992          353           1.055456      0.7361111    -2.775         0 \r\n 1992          354           4.524117     -1.493333     -11.37333      0 \r\n 1992          355           7.969139      0.8277778    -10.90944      0 \r\n 1992          356           7.355681      5.207222     -6.022222      0 \r\n 1992          357           6.131359      6.758333     -6.871111      0 \r\n 1992          358           5.17293       0.7361111    -16.02222      0 \r\n 1992          359           7.278152     -1.557222     -14.685        0.25 \r\n 1992          360           8.0101       -2.433889     -11.49889      0 \r\n 1992          361           7.847343      2.985        -9.166111      0 \r\n 1992          362           7.833912      7.518333     -5.233333      0 \r\n 1992          363           3.18235       3.838889     -6.277778E-02                0 \r\n 1992          364           1.653182      3.930556     -2.827778      2.29 \r\n 1992          365           1.187503     -0.7861111    -17.09167      1.27 \r\n 1992          366           6.24939      -13.15278     -17.45278      0.25 \r\n 1993          1             7.429236     -5.723333     -16.98667      0 \r\n 1993          2             1.435363      3.011111     -5.634444      1.52 \r\n 1993          3             1.433355      7.573333     -7.623333      0.76 \r\n 1993          4             5.372256     -6.653889     -15.02611      4.06 \r\n 1993          5             6.014835     -3.592778     -15.11556      0 \r\n 1993          6             4.780178     -4.172222     -10.09278      0 \r\n 1993          7             2.551863     -2.597222     -12.46889      0 \r\n 1993          8             5.737394     -4.785555     -12.74         0.51 \r\n 1993          9             3.388371     -4.935        -9.342778      0 \r\n 1993          10            7.537392     -5.579444     -10.71333      2.54 \r\n 1993          11            4.012749     -1.782222     -7.597222      0 \r\n 1993          12            2.878006      0            -10.19333      8.38 \r\n 1993          13            5.633003     -8.912778     -12.22222      5.33 \r\n 1993          14            6.195835     -5.786111     -12.11833      0 \r\n 1993          15            5.004775     -3.718333     -10.13667      0 \r\n 1993          16            4.782856      0.375        -13.50111      0 \r\n 1993          17            9.390528     -8.123889     -14.40278      0 \r\n 1993          18            6.923851     -6.483333     -17.69667      0 \r\n 1993          19            9.719181     -2.686111     -17.81222      0 \r\n 1993          20            2.513873      0            -3.938889      0.76 \r\n 1993          21            5.727854     -0.2044444    -3.333333      7.11 \r\n 1993          22            9.991769      5.44         -2.869444      0 \r\n 1993          23            5.706767      3.309444     -10.25444      0 \r\n 1993          24            10.45314     -1.755556     -10            0 \r\n 1993          25            9.515671      0.3877778    -7.985         0 \r\n 1993          26            10.5213       5.555555     -6.548889      0 \r\n 1993          27            7.259114      4.546111     -4.457222      0 \r\n 1993          28            7.676678      1.941667     -17.82778      0 \r\n 1993          29            11.30249     -6.305555     -17.74889      0 \r\n 1993          30            11.17404      1.731667     -11.11889      0 \r\n 1993          31            11.04969      8.694445     -3.907778      0 \r\n 1993          32            11.21601      7.662222     -4.316667      0 \r\n 1993          33            10.54263      4.938889     -5.642222      0 \r\n 1993          34            7.971064      7.638889     -5.574444      0 \r\n 1993          35            8.803094      5.546667     -5.608333      0 \r\n 1993          36            5.453467      2.011667     -5.088889      0 \r\n 1993          37            3.210551     -0.7233334    -2.222222      0 \r\n 1993          38            5.857809      2.746667     -2.311111      0 \r\n 1993          39            1.912841     -0.6711111    -2.222222      0 \r\n 1993          40            3.894383      1.821111     -0.76          2.29 \r\n 1993          41            4.308892      4.830555      0.1805556     0.51 \r\n 1993          42            1.425238      0.1805556    -3.912778      0.25 \r\n 1993          43            2.891395     -2.368889     -7.801667      7.62 \r\n 1993          44            8.336913     -2.457778     -12.96444      4.06 \r\n 1993          45            11.88327     -4.533333     -12.31667      0.25 \r\n 1993          46            8.241057     -7.361111     -15.05         0 \r\n 1993          47            11.78286     -9.562222     -20.49055      1.27 \r\n 1993          48            14.40078     -14.71389     -20.57055      0 \r\n 1993          49            14.79174     -7.246111     -19.56111      0 \r\n 1993          50            9.087188     -2.39         -8.333333      0 \r\n 1993          51            5.489408     -0.7861111    -4.935         0 \r\n 1993          52            6.370726     -2.712778     -12.07778      0.25 \r\n 1993          53            13.59879     -6.847222     -19.46833      2.03 \r\n 1993          54            15.49201     -9.792778     -21.68833      0 \r\n 1993          55            11.34245     -8.669444     -20.29833      0 \r\n 1993          56            8.093027     -8.472222     -12.77278      0.51 \r\n 1993          57            15.96209     -3.508889     -17.72333      3.81 \r\n 1993          58            15.57745     -1.368333     -17.38445      0 \r\n 1993          59            16.44212      4.742778     -12.68444      0 \r\n 1993          60            11.86729      4.423333     -0.6322222     0 \r\n 1993          61            4.527966      3.631667      0.3511111     6.6 \r\n 1993          62            4.606709      1.642778      0.3511111     8.38 \r\n 1993          63            13.39964      3.812778     -2.337778      5.59 \r\n 1993          64            15.1806       6.847222     -5.214445      0 \r\n 1993          65            13.58741      10.76278     -3.629444      0 \r\n 1993          66            14.75939      11.52778     -0.5027778     0 \r\n 1993          67            13.13864      8.865        -6.260556      0 \r\n 1993          68            10.41264      8.552778     -3.887778      0 \r\n 1993          69            9.947544      2.536667     -9.379444      0.25 \r\n 1993          70            15.59138     -1.62         -13.39111      0 \r\n 1993          71            13.17027     -1.625        -16.22667      0 \r\n 1993          72            17.99325     -5.747222     -15.35611      0 \r\n 1993          73            18.96432     -0.9116667    -11.87111      0.25 \r\n 1993          74            11.38843      13.30944     -1.233889      0.25 \r\n 1993          75            10.39996      6.784444     -13.26833      0.25 \r\n 1993          76            15.01721     -3.9          -9.444445      0 \r\n 1993          77            9.351407      20.55556     -6.921111      0 \r\n 1993          78            9.484584      10.55556     -2.337778      3.3 \r\n 1993          79            8.938028      16.11111     -4.658889      0.51 \r\n 1993          80            5.384724      16.11111     -0.76          0 \r\n 1993          81            5.475517      11.66667     -0.6711111     8.13 \r\n 1993          82            10.23289      18.33333     -0.6711111     1.52 \r\n 1993          83            10.6256       18.33333      0.2355556     0.76 \r\n 1993          84            9.513203      16.66667     -1.325556      0 \r\n 1993          85            18.69771      21.66667      0.1705556     0 \r\n 1993          86            17.07687      21.66667     -0.4116667     0 \r\n 1993          87            13.37725      20.55556      2.43          0 \r\n 1993          88            14.11334      17.22222      7.010556      0 \r\n 1993          89            3.399374      15            7.958333      2.03 \r\n 1993          90            1.443396      2.777778     -2.361111      38.86 \r\n 1993          91            12.20038      20.55556     -6.168889      0 \r\n 1993          92            22.11788      22.22222     -3.201667      0 \r\n 1993          93            14.17138      23.33333     -1.347778      0 \r\n 1993          94            16.70897      23.88889     -5.147222      0 \r\n 1993          95            22.71807      23.88889     -3.589444      0 \r\n 1993          96            8.813345      22.77778     -0.1277778     0 \r\n 1993          97            2.292665      10.55556      8.425         22.352 \r\n 1993          98            5.659278      5            -0.315         0 \r\n 1993          99            21.57814      22.22222      0.8627778     0 \r\n 1993          100           16.27819      22.22222      4.263889      0 \r\n 1993          101           13.77712      10            2.22          0 \r\n 1993          102           8.725481      11.66667      2.277222      0 \r\n 1993          103           3.458704      11.66667      3.888889      11.3538 \r\n 1993          104           2.659058      5             1.14          7.8486 \r\n 1993          105           4.92507       6.666667     -0.1155556     6.985 \r\n 1993          106           23.66378      26.66667     -1.847778      0 \r\n 1993          107           15.21281      26.66667      1.558333      0 \r\n 1993          108           16.38781      25            7.366667      9.0678 \r\n 1993          109           5.099417      12.77778      0.8805556     13.0048 \r\n 1993          110           21.16054      23.88889     -0.5983334     0 \r\n 1993          111           24.95099      27.22222     -1.407222      0 \r\n 1993          112           23.04083      27.22222      2.619444      0 \r\n 1993          113           15.03253      26.11111      8.373333      0 \r\n 1993          114           13.74683      16.66667      7.500556      0 \r\n 1993          115           21.53551      18.88889      5.031111      0 \r\n 1993          116           19.11335      18.88889      6.963333      0 \r\n 1993          117           5.639237      13.88889      6.472222      0 \r\n 1993          118           14.69073      21.11111      9.015         3.175 \r\n 1993          119           25.6001       27.22222      4.326111      0 \r\n 1993          120           9.268271      27.22222      8.484445      3.1496 \r\n 1993          121           6.957406      15.72389      9.418333      10.4648 \r\n 1993          122           4.859465      13.51667      10.37722      18.1356 \r\n 1993          123           7.921233      15            10.37722      6.7564 \r\n 1993          124           16.76596      26.11111      7.573333      0 \r\n 1993          125           18.23086      26.11111      10.93611      0 \r\n 1993          126           9.704244      20.55556      15.99556      31.3182 \r\n 1993          127           13.74779      24.56         16.955        0 \r\n 1993          128           8.852214      16.11111      13.03722      0 \r\n 1993          129           8.564565      16.11111      13.81611      15.7734 \r\n 1993          130           6.249724      22.36667      14.625        4.6482 \r\n 1993          131           16.27572      14.44444      13.62944      5.4864 \r\n 1993          132           20.5247       30            6.486111      0 \r\n 1993          133           22.71992      30.55556      7.570556      0 \r\n 1993          134           20.76218      30.55556      8.270555      0 \r\n 1993          135           14.53781      27.22222      8.686666      0 \r\n 1993          136           21.42287      30            7.618333      0 \r\n 1993          137           5.612208      30            8.805555      0 \r\n 1993          138           18.00806      25.55556      3.066111      0 \r\n 1993          139           12.57949      25.55556      4.129445      0 \r\n 1993          140           16.10581      16.20555      5.098889      0 \r\n 1993          141           24.24201      21.85         6.92          0 \r\n 1993          142           5.043854      17.72222      13.03722      28.067 \r\n 1993          143           7.651448      22.57333      11.81111      0 \r\n 1993          144           9.718386      18.90167      6.061111      0 \r\n 1993          145           19.93739      20.00278      7.649445      0 \r\n 1993          146           20.84285      24.53611      11.58111      4.7498 \r\n 1993          147           24.1175       29.79778      14.64667      4.2672 \r\n 1993          148           12.09812      29.90278      10.495        3.5306 \r\n 1993          149           8.933468      24.35778      9.375         2.8448 \r\n 1993          150           14.31133      23.39833      8.46          0 \r\n 1993          151           28.34087      23.29111      8.586667      0 \r\n 1993          152           9.781982      22.83333      8.867222      11.9126 \r\n 1993          153           7.445219      20.84778      12.69944      0 \r\n 1993          154           18.89243      19.81         12.77778      6.2992 \r\n 1993          155           14.71467      14.55         9.401667      8.9154 \r\n 1993          156           25.76135      21.47         9.03          0 \r\n 1993          157           10.42306      25.22         13.38         18.9992 \r\n 1993          158           8.622262      28.42         18.32         16.9926 \r\n 1993          159           17.94258      31.89         15.99         2.9972 \r\n 1993          160           29.53963      26.92         13.39         0 \r\n 1993          161           29.09424      29.3          13.89         0 \r\n 1993          162           26.4974       28.99         15.87         0 \r\n 1993          163           24.53414      28.47         18.95         0.9906 \r\n 1993          164           11.2714       28.12         20.02         16.002 \r\n 1993          165           30.34429      27.29         14.61         0.9906 \r\n 1993          166           30.48379      25.55         9.92          0 \r\n 1993          167           22.03073      29.65         15.04         0 \r\n 1993          168           15.82456      31.05167      20.095        23.0124 \r\n 1993          169           17.28268      34.57         21.43         16.002 \r\n 1993          170           9.091037      31.98         17.57         3.9878 \r\n 1993          171           21.28823      27.01         18.66         0 \r\n 1993          172           30.35107      29.97         19.44         0 \r\n 1993          173           26.36694      30.98         18.76         0 \r\n 1993          174           20.37562      29.71         23.24         0 \r\n 1993          175           8.138591      24.71         15.47         0 \r\n 1993          176           30.1707       26.88         14.35         0 \r\n 1993          177           29.05734      30.07         15.06         0 \r\n 1993          178           29.44411      31.17         17.67         0 \r\n 1993          179           17.05269      26.86         19.39         16.002 \r\n 1993          180           14.65408      29.01667      19.655        75.9968 \r\n 1993          181           8.186205      24.85833      19.82055      73.9902 \r\n 1993          182           19.85818      27.43         20.32         0.9906 \r\n 1993          183           22.20198      37.13         23.48         0 \r\n 1993          184           26.44372      31.01         23.99         5.9944 \r\n 1993          185           6.037889      24.23722      19.14667      123.3424 \r\n 1993          186           6.766574      23.51389      18.16333      36.449 \r\n 1993          187           14.65664      28.94         19.9          0 \r\n 1993          188           16.3253       24.48833      18.81278      18.0086 \r\n 1993          189           14.84588      28.77333      20.13611      107.0102 \r\n 1993          190           26.28769      27.96111      20.19555      76.9874 \r\n 1993          191           16.52027      34.77         20.8          10.9982 \r\n 1993          192           22.85133      28.51389      16.48056      116.0018 \r\n 1993          193           28.4489       26.25         16.65         0 \r\n 1993          194           12.77463      28.97111      20.45222      48.006 \r\n 1993          195           5.920193      38.7          23.13         16.002 \r\n 1993          196           9.734327      31.97         21.19         13.0048 \r\n 1993          197           12.04364      40.63         23.31         0.9906 \r\n 1993          198           24.8166       38.12222      23.27         0 \r\n 1993          199           12.57116      30.13222      22.61444      37.0078 \r\n 1993          200           20.35374      33.51         19.56         0 \r\n 1993          201           9.084803      24.62         18.18889      73.9902 \r\n 1993          202           12.94266      24.18         20.1          13.9954 \r\n 1993          203           8.019724      29.93         19.9          17.399 \r\n 1993          204           13.45541      29.23444      19.51667      22.8346 \r\n 1993          205           16.55919      30.42         20.45667      28.6004 \r\n 1993          206           27.76565      31.65944      18.73667      0 \r\n 1993          207           15.77556      30.23         19.3          0 \r\n 1993          208           23.36182      32.44         21.08         0 \r\n 1993          209           28.15418      27.35         18.01         0 \r\n 1993          210           27.27227      29.41         17.55         0 \r\n 1993          211           26.30493      31.56         19.38         0 \r\n 1993          212           10.54711      31.91         22.56         8.6106 \r\n 1993          213           24.61205      31.03         17.45778      0 \r\n 1993          214           23.12807      27.54         14.1          0 \r\n 1993          215           15.68561      23.78         13.24         0 \r\n 1993          216           24.02955      23.74         11.57         0 \r\n 1993          217           6.837702      23.58         14.25         4.4958 \r\n 1993          218           26.49807      23.11         13.79         0 \r\n 1993          219           21.98077      24.78         13.26         0 \r\n 1993          220           25.15396      28.06         16.01         0 \r\n 1993          221           23.6268       31.87         20.59         17.8816 \r\n 1993          222           7.488147      29.88944      21.31333      0 \r\n 1993          223           13.7357       27.42111      21.08611      26.5176 \r\n 1993          224           18.24429      29.28389      21.17056      0 \r\n 1993          225           12.64258      29.38278      19.82556      5.6388 \r\n 1993          226           22.90179      31.66722      20.40889      0 \r\n 1993          227           23.56747      32.22167      22.27111      0 \r\n 1993          228           23.89608      31.96167      22.91167      0 \r\n 1993          229           13.03412      32.20111      20.70111      0 \r\n 1993          230           19.49924      32.72944      20.33278      69.8246 \r\n 1993          231           19.74831      28.41778      19.50722      0 \r\n 1993          232           22.76372      28.04         19.10111      0 \r\n 1993          233           13.39997      23.30556      17.96833      0 \r\n 1993          234           20.68833      31.64111      20.01389      3.7846 \r\n 1993          235           22.25712      29.22611      18.33556      0 \r\n 1993          236           24.21758      30.73111      18.20889      0 \r\n 1993          237           18.1032       30.17389      19.47722      11.3284 \r\n 1993          238           23.42651      32.17167      20.01556      0 \r\n 1993          239           21.83086      28.21445      19.28333      0 \r\n 1993          240           6.584947      24.06944      18.77333      3.7338 \r\n 1993          241           17.36921      28.60278      19.83444      0 \r\n 1993          242           13.20487      28.51389      12.54722      0 \r\n 1993          243           23.28488      22.96111      9.407778      0 \r\n 1993          244           22.82163      24.53333      11.225        0 \r\n 1993          245           12.25669      26.67167      13.47778      6.4262 \r\n 1993          246           19.2795       22.66222      10.24944      0 \r\n 1993          247           22.81263      27.10667      11.49444      0 \r\n 1993          248           5.049544      15.50556      11.14         22.9616 \r\n 1993          249           20.25433      20.64722      9.114445      0 \r\n 1993          250           18.2617       21.92611      10.12389      0 \r\n 1993          251           19.98734      22.88833      12.18333      0 \r\n 1993          252           21.04724      25.44         8.91          0 \r\n 1993          253           22.0511       20.73611      7.573333      0 \r\n 1993          254           17.80137      24.44444      13.35556      0 \r\n 1993          255           20.53524      31.83444      19.45555      0 \r\n 1993          256           3.388496      23.03722      7.662222      32.3088 \r\n 1993          257           3.713007      9.68          3.035         0 \r\n 1993          258           19.15874      15.385        2.423889      0 \r\n 1993          259           19.67133      17.33778      3.181111      0 \r\n 1993          260           19.17732      19.90833      5.289444      0 \r\n 1993          261           4.957287      15.84167      11.00333      8.1534 \r\n 1993          262           6.987447      16.69111      13.10556      6.1976 \r\n 1993          263           12.11427      21.83278      13.33722      0 \r\n 1993          264           16.9865       22.14889      10.45556      12.319 \r\n 1993          265           5.9017        23.23833      15.58389      0 \r\n 1993          266           18.27688      17.86222      7.858333      0 \r\n 1993          267           8.34503       18.78667      9.573334      17.272 \r\n 1993          268           3.726773      15.67833      7.934444      15.9512 \r\n 1993          269           13.67913      18.49055      4.541111      0 \r\n 1993          270           16.07116      18.17667      4.765         0 \r\n 1993          271           19.08745      19.80389      2.385556      0 \r\n 1993          272           16.78223      17.61333      2.523333      0 \r\n 1993          273           17.16043      23.16         8.365         0 \r\n 1993          274           14.05238      19.30611      7.217778      0 \r\n 1993          275           14.653        14.89222      5.269444      0 \r\n 1993          276           17.49694      23.43889      8.672222      0 \r\n 1993          277           17.1685       22.39944      3.96          0 \r\n 1993          278           16.60153      22.49944      4.744444      0 \r\n 1993          279           16.07961      27.71         14.44         0 \r\n 1993          280           16.10702      28.18         16.14         0 \r\n 1993          281           4.584618      20.24         8.97          15.0114 \r\n 1993          282           16.49525      9.05          0.1711111     0 \r\n 1993          283           16.34978      12.58        -2.731111      0 \r\n 1993          284           16.17769      15.77         1.947222      0 \r\n 1993          285           15.40218      13.54         3.062222      0 \r\n 1993          286           12.63911      15.91         0.1788889     0 \r\n 1993          287           8.790082      17.8          8.35          12.4714 \r\n 1993          288           4.127851      18.27         12.71         0 \r\n 1993          289           3.170049      21.09         11.18         0 \r\n 1993          290           8.342436      15.24         7.22          0 \r\n 1993          291           2.528977      12.31         4.727222      5.2578 \r\n 1993          292           3.910534      15.55         11.41         0 \r\n 1993          293           4.724615      15.34         2.057778      0 \r\n 1993          294           15.10729      13.81         0.5138889     0 \r\n 1993          295           14.42246      20.64         0.6988889     0 \r\n 1993          296           14.00222      21.5          5.698889      0 \r\n 1993          297           14.22757      22.21         5.652222      0 \r\n 1993          298           13.77005      23.12         6.658889      0 \r\n 1993          299           4.037602      10.43         3.947222      0 \r\n 1993          300           11.47416      8.66          1.935         0 \r\n 1993          301           10.41586      15.14         1.926111      0 \r\n 1993          302           4.946576      1.962222     -2.458889      0 \r\n 1993          303           5.106363      1.102778     -5.377222      0 \r\n 1993          304           14.9319       3.73         -7.66          0 \r\n 1993          305           12.84647      9.84         -5.938889      0 \r\n 1993          306           7.157904      11.09        -0.6022222     0 \r\n 1993          307           12.34         15.65         0.3077778     0 \r\n 1993          308           11.46244      16.97         2.06          0 \r\n 1993          309           4.092621      3.34         -5.612222      0 \r\n 1993          310           13.39566     -0.5222222    -7.64          0 \r\n 1993          311           13.79084      10.48        -7.46          0 \r\n 1993          312           13.63737      13.52        -2.587778      0 \r\n 1993          313           13.49223      14.39        -3.892222      0 \r\n 1993          314           13.34951      12.87        -2.148889      0 \r\n 1993          315           12.14255      15.23         3.722222      0 \r\n 1993          316           1.066627      29.7          2.45          17.7038 \r\n 1993          317           5.809024      15.36         1.745         0 \r\n 1993          318           2.90173       5.587778     -0.1544444     2.8194 \r\n 1993          319           6.575909      3.089444     -1.521111      0 \r\n 1993          320           3.469707      4.349444     -0.8166667     0 \r\n 1993          321           12.12389      11.26556     -1.349444      0 \r\n 1993          322           6.828204      8.065556     -1.595         0 \r\n 1993          323           12.77091      8.199445     -1.821111      0 \r\n 1993          324           11.10626      12.37222     -3.883333      0 \r\n 1993          325           11.46981      16.12611     -0.2405556     0 \r\n 1993          326           7.363505      13.91722     -0.2272222     0 \r\n 1993          327           8.554857      13.80056     -0.1783333     0 \r\n 1993          328           2.257059      1.505        -4.376111      4.1656 \r\n 1993          329           9.468266     -3.801111     -8.771111      0 \r\n 1993          330           10.25335     -3.473889     -10.23444      0 \r\n 1993          331           7.427646     -1.628333     -7.519444      0 \r\n 1993          332           7.413085      1.761111     -8.102777      0 \r\n 1993          333           5.459953      0.2522222    -7.534444      0 \r\n 1993          334           5.855759      4.016667     -5.403333      0 \r\n 1993          335           2.662698      9.827222     -5.207222      0 \r\n 1993          336           7.530238      11.78722     -5.023889      0 \r\n 1993          337           5.11268       11.43333     -2.591667      0 \r\n 1993          338           1.517118      0.9566666    -1.776667      0.25 \r\n 1993          339           3.309837      6.058333     -2.518333      0.25 \r\n 1993          340           7.27539       3.073889     -5.771111      0.25 \r\n 1993          341           6.354366      7.662222     -7.267222      0 \r\n 1993          342           6.749462      11.66944     -6.88          0 \r\n 1993          343           4.108312      13.98056      2.109444      0 \r\n 1993          344           3.826561      5.618333     -11.37056      0 \r\n 1993          345           7.282629      3.123889     -10.85167      0 \r\n 1993          346           4.095509      10.51889      1.926111      0 \r\n 1993          347           2             4.509444      0.9066667     2.79 \r\n 1993          348           2.1           2.481667      0.3511111     4.83 \r\n 1993          349           5.553884      7.777778     -3.718333      1.52 \r\n 1993          350           1.670755      4.252778     -2.151111      0 \r\n 1993          351           1.552473      5.44         -0.1127778     1.02 \r\n 1993          352           1.819245      1.786667     -0.9116667     0.25 \r\n 1993          353           5.448028      7.842778     -3.600556      0 \r\n 1993          354           3.366614     -1.855        -11.025        0 \r\n 1993          355           4.153248      3.165555     -10.41389      0 \r\n 1993          356           4.379477     -7.901667     -15.18333      0 \r\n 1993          357           4.807583     -5.579444     -14.92389      0 \r\n 1993          358           2.781858     -0.6583334    -13.44889      0 \r\n 1993          359           7.0282       -7.259444     -13.26833      0.25 \r\n 1993          360           6.037303     -7.735        -14.19111      0.25 \r\n 1993          361           3.686439     -8.522778     -17.51056      0.25 \r\n 1993          362           4.786329     -5.204444     -17.74111      0 \r\n 1993          363           6.783729     -6.680555     -16.76833      0 \r\n 1993          364           4.851934      1.228889     -11.88389      0 \r\n 1993          365           4.673026      10.07889     -6.037222      0 \r\n 1994          1             3.804469     -2.388889E-02               -8.920555      0 \r\n 1994          2             1.788451      0.1305556    -9.689445      0 \r\n 1994          3             4.626793     -6.459445     -11.01722      3.81 \r\n 1994          4             5.540453     -4.834445     -9.424444      0 \r\n 1994          5             2.700228     -1.976111     -7.361111      0 \r\n 1994          6             3.999109     -5.451111     -23.24167      0.25 \r\n 1994          7             9.085347     -13.92        -23.24444      0 \r\n 1994          8             6.723019     -9.549444     -22.19611      0 \r\n 1994          9             6.628921     -1.019444     -14.90333      0 \r\n 1994          10            5.042473      1.553889     -13.99444      0.25 \r\n 1994          11            8.280848     -4.107222     -14.14611      0.25 \r\n 1994          12            5.908687     -1.223889     -12.09167      0.25 \r\n 1994          13            6.356291     -9.717778     -18.47222      0 \r\n 1994          14            9.592196     -14.87222     -27.19944      1.52 \r\n 1994          15            9.967418     -14.32889     -26.48833      0 \r\n 1994          16            3.132435     -8.333333     -22.31111      0.25 \r\n 1994          17            7.560195     -18.04111     -25.46389      0.25 \r\n 1994          18            10.25285     -12.68        -24.69778      0 \r\n 1994          19            6.084666     -9.98         -21.02333      0 \r\n 1994          20            9.960514     -11.26778     -21.77722      0.25 \r\n 1994          21            10.23155      2.565        -12.69611      0 \r\n 1994          22            8.852214      9.045555     -6.803333      0 \r\n 1994          23            8.542892      8.309444     -1.452222      0 \r\n 1994          24            3.269461      4.598889      0.7411111     0 \r\n 1994          25            1.640044      2.122222     -2.972222      0.51 \r\n 1994          26            1.845813     -0.8388889    -3.087222      0.25 \r\n 1994          27            2.314338      0.44         -9.004444      8.64 \r\n 1994          28            5.763083     -3.448889     -8.008333      0.25 \r\n 1994          29            8.292897     -3.833889     -13.95167      0.51 \r\n 1994          30            9.627719     -8.525        -21.95278      0.25 \r\n 1994          31            10.68196     -10.38056     -21.43333      0 \r\n 1994          32            8.918782     -4.458333     -15.30111      0 \r\n 1994          33            8.742049     -1.690556     -14.46833      0.25 \r\n 1994          34            11.9021      -1.420556     -13.58         0 \r\n 1994          35            12.52439     -1.995556     -12.62111      0 \r\n 1994          36            12.71861      2.119444     -8.333333      0 \r\n 1994          37            12.48137      1.925        -19.86944      0 \r\n 1994          38            4.961931     -15.12889     -20.05         0 \r\n 1994          39            5.003897     -12.82556     -20.72111      0.25 \r\n 1994          40            13.68879     -13.93667     -22.55056      0.76 \r\n 1994          41            13.17031     -2.091667     -18.28056      0 \r\n 1994          42            10.28904      2.040555     -14.92111      0 \r\n 1994          43            7.940353     -2.130556     -14.28778      2.29 \r\n 1994          44            14.05623      7.030556     -11.14167      0.25 \r\n 1994          45            12.92475      9.834444     -3.718333      0 \r\n 1994          46            12.62363      5.462778     -5.558333      0 \r\n 1994          47            12.37991      14.43056     -1.922778      0 \r\n 1994          48            13.638        15.13056      1.078333      0 \r\n 1994          49            10.02988      17.92222      8.386111      0 \r\n 1994          50            3.189254      16.58389     -2.647222      0 \r\n 1994          51            9.080368      2.027778     -4.947222      17.53 \r\n 1994          52            12.80513      0.355        -4.648889      0 \r\n 1994          53            2.725625     -0.4427778    -8.823889      0 \r\n 1994          54            11.48813     -7.426667     -19.32667      12.7 \r\n 1994          55            11.70759     -6.834445     -17.135        0 \r\n 1994          56            15.0614      -8.882778     -18.79222      4.83 \r\n 1994          57            16.33233     -6.145        -19.00167      0.25 \r\n 1994          58            13.1186      -2.811111     -10.72111      0.25 \r\n 1994          59            8.36097       1.191667     -8.093889      0.25 \r\n 1994          60            15.85234      2.494444     -10.96222      0 \r\n 1994          61            15.50302      5.298333     -9.048333      0 \r\n 1994          62            16.57165      14.19778      0.9427778     0 \r\n 1994          63            17.27615      13.78944     -1.763889      0 \r\n 1994          64            15.29746      18.92778      0.955         0 \r\n 1994          65            9.47789       9.781667     -2.991111      0 \r\n 1994          66            14.75856      8.425        -5.497778      6.6 \r\n 1994          67            14.33995      2.520555     -8.742222      0 \r\n 1994          68            16.75579      3.283333     -7.903333      0 \r\n 1994          69            15.59565      6.590556     -8.831111      0 \r\n 1994          70            16.38609      10.68333     -4.87          0 \r\n 1994          71            11.89683      14.53611     -4.627778      0 \r\n 1994          72            16.68111      13.05        -3.37          0 \r\n 1994          73            10.77819      18.035        0.375         0 \r\n 1994          74            18.39337      10.85389     -7.455555      0 \r\n 1994          75            18.86771      8.81         -4.42          0 \r\n 1994          76            12.25699      18.64222      2.65          0 \r\n 1994          77            19.79195      16.23889     -0.7577778     0 \r\n 1994          78            11.44056      17.985        2.125556      0 \r\n 1994          79            10.16524      20.28         0.3511111     0 \r\n 1994          80            20.40244      15.53167      1.777222      1.27 \r\n 1994          81            20.50076      25.46667      8.362223      0 \r\n 1994          82            16.7429       27.10944     -2.542222      0.51 \r\n 1994          83            17.9761       6.85         -7.201111      0 \r\n 1994          84            15.61645      7.753889     -3.73          0 \r\n 1994          85            8.947735      9.352777     -2.607222      0 \r\n 1994          86            14.57304      10.20944     -1.262778      0 \r\n 1994          87            7.603457      2.662222     -8.133889      0.25 \r\n 1994          88            11.32157      6.344444     -6.996666      0.25 \r\n 1994          89            18.03358      6.123889     -6.590556      0 \r\n 1994          90            19.95237      17.31389     -3.016111      0 \r\n 1994          91            20.26918      21.64278      0.1361111     0 \r\n 1994          92            13.9877       11.77611     -5.815         0 \r\n 1994          93            20.68498      11.93889     -2.201667      0 \r\n 1994          94            11.92101      21.11389     -2.360556      0 \r\n 1994          95            12.42071      2.457778     -4.323889      0 \r\n 1994          96            20.60499      8.05         -8.018888      0 \r\n 1994          97            17.53606      13.41944     -4.325         0 \r\n 1994          98            15.21729      20.18333     -0.7427778     0 \r\n 1994          99            11.92524      13.54056      1.855556      0 \r\n 1994          100           20.38374      16.59056      4.68          0 \r\n 1994          101           5.939774      7.683889      4.328889      13.6398 \r\n 1994          102           4.116303      8.066112      3.477778      4.3434 \r\n 1994          103           18.82842      17.86944      4.059444      0 \r\n 1994          104           19.21749      25.00278      6.819445      0 \r\n 1994          105           14.84073      14.79556      2.815556      0 \r\n 1994          106           22.76485      21.93889      4.196667      0 \r\n 1994          107           20.62578      24.18722      4.503889      0 \r\n 1994          108           22.18156      28.71111      8.223333      0 \r\n 1994          109           19.44501      20.88278      4.833333      0 \r\n 1994          110           11.50931      20.36111      6.498889      25.5524 \r\n 1994          111           16.99888      14.91722      1.69          9.8806 \r\n 1994          112           23.02422      16.39833      1.197222      0 \r\n 1994          113           22.2921       23.16556      6.672778      0 \r\n 1994          114           17.59         28.22056      13.24944      2.9718 \r\n 1994          115           16.1753       25.90667      17.66222      0 \r\n 1994          116           22.31202      23.82889      2.741111      0 \r\n 1994          117           11.42885      10.70222      3.854445      5.8674 \r\n 1994          118           3.715936      11.59        -0.9305556     5.3594 \r\n 1994          119           15.31645      10.23556      0.3383333     0 \r\n 1994          120           5.898101      6.735556     -0.7788889     5.8928 \r\n 1994          121           18.68813      11.85222      1.132222      0 \r\n 1994          122           18.35282      13.23667      3.141111      0 \r\n 1994          123           20.19337      17.96111      4.942222      0 \r\n 1994          124           12.8348       18.42778      3.964444      0 \r\n 1994          125           14.14564      23.98056      6.358333      15.3924 \r\n 1994          126           5.78848       10.75722      6.551111      8.509 \r\n 1994          127           11.89875      13.89167      0.7283334     0 \r\n 1994          128           17.62941      16.75833      4.375         0 \r\n 1994          129           25.12584      22.34         4.053889      0 \r\n 1994          130           20.65013      25.00278      7.987222      0 \r\n 1994          131           17.97551      27.40556      6.221111      0 \r\n 1994          132           23.4235       24.33167      6.401667      0 \r\n 1994          133           19.3728       24.65167      12.25778      0 \r\n 1994          134           4.737418      19.65667      10.51167      6.4008 \r\n 1994          135           24.1849       24.21389      7.308333      0 \r\n 1994          136           24.37812      25.29611      10.74556      0 \r\n 1994          137           23.90328      23.92556      6.082222      0 \r\n 1994          138           24.77593      24.3          6.142222      0 \r\n 1994          139           24.87401      24.21111      5.901111      0 \r\n 1994          140           25.34416      25.46667      7.798889      0 \r\n 1994          141           24.31707      26.31833      10.66889      0 \r\n 1994          142           21.38103      28.24444      13.39444      0 \r\n 1994          143           19.73769      28.57667      13.92278      13.8176 \r\n 1994          144           16.43115      28.22056      12.31611      0 \r\n 1994          145           16.73897      26.55389      10.34833      2.9718 \r\n 1994          146           23.15041      19.53889      5.052222      0 \r\n 1994          147           25.25391      22.96111      9.891666      0 \r\n 1994          148           25.56123      25.09167      13.60167      0 \r\n 1994          149           13.94778      22.91722      13.78111      0 \r\n 1994          150           24.53368      28.54056      16.50222      0 \r\n 1994          151           20.97347      27.70278      12.00389      0 \r\n 1994          152           9.223586      20.76889      11.36444      38.7096 \r\n 1994          153           7.434926      13.65833      10.90667      0 \r\n 1994          154           21.8742       21.96278      9.069445      0 \r\n 1994          155           23.11999      24.74055      15.53889      4.1656 \r\n 1994          156           15.35139      25.45667      15.57667      14.7574 \r\n 1994          157           21.80542      30.11778      16.255        0 \r\n 1994          158           14.22978      28.59278      13.49         0 \r\n 1994          159           9.025976      17.35444      13.13222      0 \r\n 1994          160           18.54788      20.90667      12.60722      0 \r\n 1994          161           21.80086      26.02222      13.07389      6.7056 \r\n 1994          162           22.08123      26.11111      13.65056      10.6934 \r\n 1994          163           14.32158      27.015        16.37944      8.8646 \r\n 1994          164           22.20369      30            21.495        3.7338 \r\n 1994          165           24.47866      31.02444      22.66222      0 \r\n 1994          166           18.83097      30.67111      19.44444      0 \r\n 1994          167           15.1652       30.28333      20.95944      4.3688 \r\n 1994          168           21.42112      31.14         20.29611      0 \r\n 1994          169           19.67095      31.63         19.355        3.7592 \r\n 1994          170           18.45688      31.92611      20.43         0 \r\n 1994          171           20.56185      32.04445      17.72278      12.2428 \r\n 1994          172           20.74452      30.90944      17.26111      0 \r\n 1994          173           17.59054      29.57944      21.19778      26.2128 \r\n 1994          174           11.08036      26.06         17.38778      0 \r\n 1994          175           26.83823      27.79         16.12         5.9944 \r\n 1994          176           23.3591       29.79         18.53         7.0104 \r\n 1994          177           21.6363       25.98         17.51         0 \r\n 1994          178           20.17793      26.99         16.54         0 \r\n 1994          179           29.01755      27.63         18.95         0 \r\n 1994          180           29.38176      26.91         16.15         0 \r\n 1994          181           28.90299      29.07         15.46         0 \r\n 1994          182           24.37264      37.5          17.03         59.9948 \r\n 1994          183           24.27829      26.7          18.93         2.9972 \r\n 1994          184           9.658806      32.06         17.47         0 \r\n 1994          185           23.46182      33.86         25.1          0 \r\n 1994          186           26.9145       31.87         22.83         0 \r\n 1994          187           25.15894      31.98         22.54         0 \r\n 1994          188           21.78546      30.53         20.95         18.0086 \r\n 1994          189           17.5236       23.2          14.53         10.9982 \r\n 1994          190           29.28281      25.1          14.37         0 \r\n 1994          191           24.68765      27.09         14.59         0 \r\n 1994          192           27.80657      30.49         20.26         0.9906 \r\n 1994          193           23.37191      30.91         17.68         0 \r\n 1994          194           19.90325      29.28         16.54         0 \r\n 1994          195           18.44395      29.01         18.25         0 \r\n 1994          196           23.16442      28.01         16.2          0 \r\n 1994          197           17.47171      29.46         17.99         0 \r\n 1994          198           22.40695      30.04         18.95         0 \r\n 1994          199           27.02362      29.34         19.61         0 \r\n 1994          200           27.26052      33.84         21.95         0 \r\n 1994          201           10.0921       26.51167      18.47111      99.0092 \r\n 1994          202           27.84029      27.32         16.7          0 \r\n 1994          203           25.72909      26.75         16.36         0 \r\n 1994          204           30.07861      29.49         16.16         0 \r\n 1994          205           22.74431      34.4          17.83         18.9992 \r\n 1994          206           23.49764      27.05         16.89         0 \r\n 1994          207           24.64054      23.49         13.96         0 \r\n 1994          208           19.22071      27.23         13.99         13.0048 \r\n 1994          209           31.38828      25.41         14.22         0 \r\n 1994          210           28.42534      27.07         14.04         0 \r\n 1994          211           31.26394      27.96         15.14         0 \r\n 1994          212           31.19519      30.09         17.07         2.0066 \r\n 1994          213           24.07122      27.84         19.34         5.9944 \r\n 1994          214           24.41745      30.56         20.51         0 \r\n 1994          215           18.35818      28.68         20.38         27.9908 \r\n 1994          216           18.32102      29.36         14.08         0.9906 \r\n 1994          217           25.58893      23.06         9.85          0 \r\n 1994          218           22.48172      24.3          11.83         0 \r\n 1994          219           19.04059      27.66         16.03         0 \r\n 1994          220           19.70225      29.43         17.63         0 \r\n 1994          221           18.13839      28.1          15.73         0 \r\n 1994          222           13.39482      29.88         18.91         8.9916 \r\n 1994          223           11.34199      19.93         16.31         0 \r\n 1994          224           17.60087      32.51         18.62         0 \r\n 1994          225           14.75023      28.07611      18.28444      4.2672 \r\n 1994          226           20.24659      19.28778      14.27056      0 \r\n 1994          227           19.76948      23.12278      13.52         0 \r\n 1994          228           19.34611      31.37278      14.17         0 \r\n 1994          229           17.46502      31.17667      16.87778      0 \r\n 1994          230           19.29594      31.40944      19.09444      0 \r\n 1994          231           17.74656      28.135        18.385        0 \r\n 1994          232           18.03982      21.95944      16.02611      0 \r\n 1994          233           18.75369      23.63944      14.71389      0 \r\n 1994          234           19.26753      25.46667      13.585        0 \r\n 1994          235           17.86426      29.73889      18.17833      0 \r\n 1994          236           19.13197      33.28389      19.49055      0 \r\n 1994          237           18.00087      32.73167      19.33667      4.572 \r\n 1994          238           18.89582      29.33         19.46667      0 \r\n 1994          239           18.95197      33.57         19.41389      0 \r\n 1994          240           11.91632      22.89889      15.52389      4.1148 \r\n 1994          241           14.79362      19.90889      13.80944      26.67 \r\n 1994          242           14.67216      26.04278      17.14944      5.08 \r\n 1994          243           11.91411      19.85389      9.218889      0 \r\n 1994          244           16.00045      21.75833      9.218889      0 \r\n 1994          245           13.31972      22.71278      10.98056      0 \r\n 1994          246           17.42987      23.73722      13.81722      19.1516 \r\n 1994          247           4.423618      18.54944      14.65167      10.7442 \r\n 1994          248           14.67216      26.31833      11.37278      0 \r\n 1994          249           21.86019      26.22667      8.684444      0 \r\n 1994          250           19.7807       25.93056      10.78722      0 \r\n 1994          251           19.6571       28.33333      13.40444      0 \r\n 1994          252           19.833        29.72778      13.645        0 \r\n 1994          253           18.95929      29.05667      13.15         0 \r\n 1994          254           19.90107      28.465        13.40667      0 \r\n 1994          255           17.32331      29.43167      17.85667      0 \r\n 1994          256           19.35941      31.04611      19.10944      0 \r\n 1994          257           18.41408      31.74278      20.93056      0 \r\n 1994          258           14.50317      29.29         13.425        0 \r\n 1994          259           18.58621      25.60833      9.242222      0 \r\n 1994          260           19.76702      24.63611      7.544445      0 \r\n 1994          261           20.37286      26.86333      8.582778      0 \r\n 1994          262           20.05584      27.85389      10.00222      0 \r\n 1994          263           15.27942      28.06111      12.67944      0 \r\n 1994          264           14.06134      27.73889      10.23056      3.8862 \r\n 1994          265           3.233311      11.08278      5.925556      2.7178 \r\n 1994          266           11.6196       13.00611      4.218889      0 \r\n 1994          267           11.47198      17.93944      6.048333      5.4102 \r\n 1994          268           11.74252      19.03056      8.285556      15.113 \r\n 1994          269           10.12281      11.965        2.411111      0 \r\n 1994          270           12.54464      19.35278      3.046111      0 \r\n 1994          271           18.48131      21.98667      4.818889      0 \r\n 1994          272           16.9293       25.46389      5.508889      0 \r\n 1994          273           15.06964      31.65389      13.19444      0 \r\n 1994          274           12.15435      21.58389      9.998889      0 \r\n 1994          275           10.10528      21.27555      9.535         11.4808 \r\n 1994          276           5.990316      15.65222      8.995556      0 \r\n 1994          277           11.37856      20.27222      7.785         0 \r\n 1994          278           11.64688      19.04667      10.51667      0 \r\n 1994          279           6.713312      27.08055      14.74778      9.271 \r\n 1994          280           8.837361      19.30278      9.769444      0 \r\n 1994          281           11.00881      15.85167      3.21          0 \r\n 1994          282           15.53657      16.96278     -0.315         0 \r\n 1994          283           15.31214      17.37111     -5.555556E-02                0 \r\n 1994          284           15.15303      17.63333     -0.7577778     0 \r\n 1994          285           14.85107      20.76        -0.15          0 \r\n 1994          286           12.5689       20.44         0.7933334     0 \r\n 1994          287           9.038486      18.48778      1.750556      0 \r\n 1994          288           2.304882      16.32055      12.295        6.477 \r\n 1994          289           3.3049        18.01333      15            0 \r\n 1994          290           3.166284      21.99389      17.36667      0 \r\n 1994          291           9.362955      21.955        6.336667      0 \r\n 1994          292           9.320153      20.18056      3.941111      0 \r\n 1994          293           13.34027      22.57055      3.905         0 \r\n 1994          294           11.02584      23.24444      8.171667      0 \r\n 1994          295           8.286119      19.99222      2.758889      0 \r\n 1994          296           11.5975       16.63445      4.363889      0 \r\n 1994          297           12.12883      12.10667     -1.147778      0 \r\n 1994          298           10.69665      10.38778     -5.243333      0 \r\n 1994          299           11.17827      13.07889     -3.359444      0 \r\n 1994          300           11.70173      18.54056      1.223889      0 \r\n 1994          301           8.895267      18.51667      8.421667      0 \r\n 1994          302           8.926522      16.87389     -2.537222      0 \r\n 1994          303           3.53866       10.18056      0.3044444     9.1694 \r\n 1994          304           5.976007      11.22667     -4.743333      0 \r\n 1994          305           6.866321      12.86667     -1.33          0 \r\n 1994          306           9.566089      17.98722      7.515555      0 \r\n 1994          307           3.194693      15.055        4.430555      11.6586 \r\n 1994          308           2.235679      7.265         4.213889      0 \r\n 1994          309           4.564284      7.576111      0.365         0 \r\n 1994          310           10.0767       14.44056     -0.2622222     0 \r\n 1994          311           9.763574      18.00222      7.041667      0 \r\n 1994          312           2.250741      15.19667      4.690556      5.207 \r\n 1994          313           4.381276      9.258889     -5.584445      0 \r\n 1994          314           10.06327      11.40722     -3.162222      0 \r\n 1994          315           3.941621      9.732778      3.448889      0 \r\n 1994          316           4.201615      15.02611      7.007778      0 \r\n 1994          317           1.140015      14.32889      1.986111      6.3754 \r\n 1994          318           6.581851      11.02222     -1.921111      0 \r\n 1994          319           7.161878      10.61833     -6.582778      0 \r\n 1994          320           8.701925      11.31833     -4.902778      0 \r\n 1994          321           4.131031      12.86944      3.401111      0 \r\n 1994          322           10.89451      8.212778     -5.756667      0 \r\n 1994          323           2.610021      5.426667     -2.594445      3.9624 \r\n 1994          324           6.35035       7.922222      3.217778      26.3398 \r\n 1994          325           10.09068      8.217778     -3.663333      0 \r\n 1994          326           9.674203      5.252222     -4.381667      0 \r\n 1994          327           10.86627      9.213889     -2.953333      0 \r\n 1994          328           9.261995      9.986111     -6.098889      0 \r\n 1994          329           9.129572      9.483334     -5.666111      0 \r\n 1994          330           3.637026      6.507222      0.4505556     13.081 \r\n 1994          331           1.50942       11.69556     -3.357222      0 \r\n 1994          332           9.464417      4.14         -6.931667      0 \r\n 1994          333           5.232301      1.278889     -8.922778      0 \r\n 1994          334           9.871311      9.925555     -5.500556      0 \r\n 1994          335           9.778929      14.02944      1.491667      0 \r\n 1994          336           9.453665      14.675        2.241111      0 \r\n 1994          337           3.435901      14.27889      1.090556      0 \r\n 1994          338           1.497161      14.76944     -4.780556      0 \r\n 1994          339           4.983939     -1.636111     -5.138889      0.25 \r\n 1994          340           1.059054     -1.536111     -5.993333      1.52 \r\n 1994          341           5.950778     -1.171111     -5.762778      26.16 \r\n 1994          342           3.31992      -2.388889E-02               -4.198333      0.25 \r\n 1994          343           8.522223      0.44         -7.727778      0.25 \r\n 1994          344           7.698853     -4.727778     -17.65222      0.25 \r\n 1994          345           9.169529     -6.976111     -17.42945      0 \r\n 1994          346           6.234997      1.575        -12.24611      0 \r\n 1994          347           3.618867     -2.68         -10.705        0 \r\n 1994          348           4.492947     -0.1155556    -8.035         0 \r\n 1994          349           5.001637      4.25         -4.133333      2.03 \r\n 1994          350           4.661897      3.354445     -4.242778      2.03 \r\n 1994          351           6.014918      5.808889     -9.027778      0.76 \r\n 1994          352           6.01609      -1.656667     -8.513889      0 \r\n 1994          353           6.748081      9.509444     -2.452778      0 \r\n 1994          354           3.908232      7.889444      1.446111      0 \r\n 1994          355           3.471339      6.320556     -3.14          0.51 \r\n 1994          356           6.116464      4.963333     -2.258889      0 \r\n 1994          357           5.516688      3.786111     -8.126111      0 \r\n 1994          358           5.513048      8.448889     -8.055         0 \r\n 1994          359           6.888831      8.616667     -7.61          0 \r\n 1994          360           7.531869      9.730556     -4.627778      0 \r\n 1994          361           5.529909      13.21778     -1.611667      0 \r\n 1994          362           3.334606      0.44         -1.782222      0 \r\n 1994          363           4.378222      2.027778     -1.19          0 \r\n 1994          364           4.124587      2.547222     -4.017778      0 \r\n 1994          365           3.61029      -4.017778     -16.42056      1.52 \r\n 1995          1             9.041373     -8.912778     -16.75056      3.81 \r\n 1995          2             8.978571     -6.370555     -15.05167      0 \r\n 1995          3             9.240531     -11.52222     -21.01944      0 \r\n 1995          4             9.303668     -14.23722     -23.39611      0 \r\n 1995          5             7.857008     -3.912778     -20.14056      0 \r\n 1995          6             4.088646     -1.871111     -20.85167      1.52 \r\n 1995          7             9.126308     -8.571667     -19.90222      0.25 \r\n 1995          8             6.767285     -5.865        -16.41222      0 \r\n 1995          9             7.511744     -3.58         -12.305        0 \r\n 1995          10            5.220921     -1.423333     -4.544445      0 \r\n 1995          11            4.078647      1.938889     -2.872778      0 \r\n 1995          12            4.354833      1.318333     -1.014444      0 \r\n 1995          13            3.445231      0.5316667    -5.605556      0 \r\n 1995          14            5.049168     -0.9544445    -6.690556      0 \r\n 1995          15            6.09726       1.883889     -6.436111      0 \r\n 1995          16            4.387803      5.722222     -4.261111      0 \r\n 1995          17            7.042509      4.565        -9.646667      1.52 \r\n 1995          18            7.464967      0.2722222    -9.247778      0 \r\n 1995          19            6.662894      0.5944445    -8.304444      0 \r\n 1995          20            6.196797     -3.967778     -10.87556      0 \r\n 1995          21            9.551696     -2.041667     -10.85167      0 \r\n 1995          22            8.057589     -4.665        -10.75         0 \r\n 1995          23            9.315551     -1.745556     -13.78222      0 \r\n 1995          24            10.7728       2.373889     -13.79778      0 \r\n 1995          25            9.728009      1.212778     -13.65556      0 \r\n 1995          26            9.850558      6.08         -11.62444      0 \r\n 1995          27            1.876106      9.166667E-02               -2.728889      7.62 \r\n 1995          28            5.090631     -0.4111111    -8.270555      4.57 \r\n 1995          29            5.988099     -0.4877778    -7.895555      0.25 \r\n 1995          30            9.341408     -2.285        -6.674445      0.25 \r\n 1995          31            11.02363      12.42944     -4.942222      0 \r\n 1995          32            8.080727      10.29111     -1.700556      0 \r\n 1995          33            6.759043      3.687222     -2.173333      2.79 \r\n 1995          34            4.664867      2.22         -9.518333      6.86 \r\n 1995          35            8.802717     -3.083889     -13.61667      0 \r\n 1995          36            10.43264     -6.863333     -14.79944      0 \r\n 1995          37            7.89684      -3.797222     -11.635        0 \r\n 1995          38            10.29691     -6.933889     -16.22667      0 \r\n 1995          39            12.51367     -1.187222     -15.87556      0 \r\n 1995          40            11.30308      8.346111     -3.931667      0 \r\n 1995          41            12.53673     -1.575        -16.97611      0 \r\n 1995          42            12.92145     -12.62111     -17.54944      0 \r\n 1995          43            11.32391     -4.444445     -16.42222      0 \r\n 1995          44            10.48314     -3.448889     -10.22056      0 \r\n 1995          45            3.329251     -0.1155556    -6.601666      0 \r\n 1995          46            9.837379     -0.8077778    -15.52444      0.25 \r\n 1995          47            14.26694      3.540555     -13.85167      0 \r\n 1995          48            12.79467      10.83        -5.481111      0 \r\n 1995          49            14.03548      18.24444     -3.354445      0 \r\n 1995          50            14.46476      11.92389     -3.412222      0 \r\n 1995          51            14.94613      14.20389     -5.051667      0 \r\n 1995          52            10.67493      7.840556     -4.108333      0 \r\n 1995          53            13.51453      18.92556     -3.166667      0 \r\n 1995          54            14.43083      10.82778     -8.677222      0 \r\n 1995          55            12.74518      7.725        -7.059444      0 \r\n 1995          56            15.39524      22.41556     -2.616111      0 \r\n 1995          57            1.865185      0.6205556    -2.476667      0 \r\n 1995          58            2.581821     -0.8705556    -8.344444      3.3 \r\n 1995          59            11.78537     -4.722778     -13.35944      0.51 \r\n 1995          60            13.16684     -6.257778     -13.84722      0 \r\n 1995          61            16.62977     -1.792222     -13.83667      0 \r\n 1995          62            16.70324      2.612222     -11.06         0 \r\n 1995          63            7.12372       1.991667     -3.969445      0 \r\n 1995          64            8.284069      1.116111     -2.827778      5.59 \r\n 1995          65            3.140929      0.6394445    -11.17389      0 \r\n 1995          66            15.91761     -6.389444     -19.53333      5.59 \r\n 1995          67            15.97388     -5.195556     -20.03667      0 \r\n 1995          68            14.74956      5.726666     -12.11667      0 \r\n 1995          69            15.68335      15.08389      2.162222      0 \r\n 1995          70            15.22009      17.63333      5.558889      0 \r\n 1995          71            7.539359      19.05445      11.47333      0 \r\n 1995          72            6.612268      21.37056      6.562778      0.51 \r\n 1995          73            7.823955      22.42667      3.76          0 \r\n 1995          74            15.59021      23.35944      2.426667      0 \r\n 1995          75            14.83889      23.28833      3.561111      0 \r\n 1995          76            15.32712      19.27389      2.991667      0 \r\n 1995          77            7.407688      22.05944      4.522222      0.25 \r\n 1995          78            8.754769      18.06389      4.511111      0 \r\n 1995          79            5.064313      11.19        -3.926111      7.37 \r\n 1995          80            14.16615      15.60333     -3.888889E-02                0.25 \r\n 1995          81            7.016233      11.97056     -0.1605556     0 \r\n 1995          82            9.44969       11.08222     -1.814444      0 \r\n 1995          83            17.66204      14.70889      2.199445      0 \r\n 1995          84            5.700867      16.00833      6.873889      0 \r\n 1995          85            8.343482      16.72389      3.285556      27.43 \r\n 1995          86            3.212768      6.690556      2.494444      26.92 \r\n 1995          87            3.584684      5.972222      1.344444      0.25 \r\n 1995          88            6.19688       5.676111     -3.162778      0.25 \r\n 1995          89            6.169894      3.795        -2.881111      0 \r\n 1995          90            8.767655      7.594444     -3.75          0.25 \r\n 1995          91            15.96451      15.61667     -2.316667      0 \r\n 1995          92            18.94988      23.38         2.941667      0 \r\n 1995          93            15.6741       16.23        -6.418889      0 \r\n 1995          94            17.99777      6.647778     -6.462222      0 \r\n 1995          95            18.48939      21.61889     -0.5933333     0 \r\n 1995          96            18.48136      19.45444      5.171667      0 \r\n 1995          97            8.133194      21.83889      4.690556      11.1252 \r\n 1995          98            8.80891       11.41611      4.14          11.43 \r\n 1995          99            2.89424       4.993889      0.4166667     11.1252 \r\n 1995          100           2.584624      5.526667      0.065         26.3906 \r\n 1995          101           2.857128      7.715        -2.388889E-02                6.1468 \r\n 1995          102           5.013938      7.398889     -0.44          0 \r\n 1995          103           19.98985      19.46333     -0.1677778     0 \r\n 1995          104           15.00487      21.45889      8.765         0 \r\n 1995          105           18.07467      20.07778      3.92          0 \r\n 1995          106           5.607313      16.15944      4.338889      0 \r\n 1995          107           5.994333      14.85556      5.671111      18.2372 \r\n 1995          108           9.774786      15.61333      1.525         0 \r\n 1995          109           20.46537      13.34611      3.197778      2.6924 \r\n 1995          110           3.932249      14.21278      1.737778      0 \r\n 1995          111           7.416056      9.253889     -1.048889      0 \r\n 1995          112           20.49988      15.18333      2.353889      0 \r\n 1995          113           16.95369      14.77167      1.713889      0 \r\n 1995          114           13.95243      14.46333     -0.5033333     0 \r\n 1995          115           14.62484      16.78333      3.563333      19.8628 \r\n 1995          116           1.904013      11.19778      0.5555556     12.9286 \r\n 1995          117           16.77307      13.55667      1.132222      0 \r\n 1995          118           11.4806       16.76056      6.031667      0 \r\n 1995          119           4.99373       12.30111      7.222222      0 \r\n 1995          120           9.111288      13.07889      6.087222      0 \r\n 1995          121           11.97327      12.24611      3.243889      0 \r\n 1995          122           15.69414      14.71667      6.208889      0 \r\n 1995          123           5.652919      11.53611      8.128889      9.3726 \r\n 1995          124           7.018033      13.97056      2.73          0 \r\n 1995          125           18.67256      18.85         5.886667      0 \r\n 1995          126           9.983651      19.24278      10.26833      2.7432 \r\n 1995          127           7.557434      19.58611      12.06278      55.1942 \r\n 1995          128           5.030967      19.17722      11.32833      9.3472 \r\n 1995          129           10.219        18.39889      10.71222      6.5786 \r\n 1995          130           4.712356      12.705        9.033334      0 \r\n 1995          131           15.12185      16.60167      4.252222      4.0132 \r\n 1995          132           12.24151      18.74833      8.208889      29.1084 \r\n 1995          133           13.81661      25.35389      11.34667      0 \r\n 1995          134           20.49603      20.60333      4.357778      0 \r\n 1995          135           22.64506      23.00833      10.68889      3.9116 \r\n 1995          136           12.32481      23.27222      9.565         13.6144 \r\n 1995          137           16.76244      15.71111      9.033334      15.1384 \r\n 1995          138           13.75473      17.43778      2.969445      0 \r\n 1995          139           25.06162      21.67167      8.144444      0 \r\n 1995          140           21.80149      20.92778      6.419445      0 \r\n 1995          141           24.66276      22.98722      9.472777      0 \r\n 1995          142           12.29745      19.79833      10.44         37.0586 \r\n 1995          143           8.435739      13.40722      9.379444      13.2842 \r\n 1995          144           15.56707      16.57         6.291667      0 \r\n 1995          145           23.85671      20.20722      5.856111      0 \r\n 1995          146           10.79995      19.17222      10.92889      5.969 \r\n 1995          147           4.953773      21.25111      12.44         35.3822 \r\n 1995          148           4.883858      15.69833      7.597222      0 \r\n 1995          149           23.77512      23.29833      9.395         0 \r\n 1995          150           24.67054      24.97889      12.04889      0 \r\n 1995          151           10.87166      21.38333      13.88889      3.0734 \r\n 1995          152           8.868992      20.43778      14.09611      4.1148 \r\n 1995          153           13.94385      22.34778      11.69778      0 \r\n 1995          154           21.12171      25.27222      14.05167      0 \r\n 1995          155           12.94023      25.325        15.57333      2.7178 \r\n 1995          156           13.40775      25.29111      16.93611      22.6568 \r\n 1995          157           20.86628      27.58945      17.69611      0 \r\n 1995          158           17.80133      29.74556      12.63889      15.621 \r\n 1995          159           7.847427      17.65722      12.77556      0 \r\n 1995          160           11.6834       17.36778      12.45778      0 \r\n 1995          161           15.16993      21.31278      10.95167      0 \r\n 1995          162           22.43013      23.54056      8.54          0 \r\n 1995          163           25.14199      24.23778      8.938889      0 \r\n 1995          164           22.49507      25.44         11.30889      0 \r\n 1995          165           21.20945      26.75333      14.78778      2.667 \r\n 1995          166           20.4626       28.44889      18.78722      0 \r\n 1995          167           23.09254      29.35278      20.22333      0 \r\n 1995          168           23.07702      29.935        17.60722      0 \r\n 1995          169           22.96539      29.56         16.60111      0 \r\n 1995          170           23.14099      30.13889      15.57389      0 \r\n 1995          171           23.65115      31.78222      17.28056      0 \r\n 1995          172           21.12539      32.97222      17.765        0 \r\n 1995          173           21.86169      31.37056      17.03889      0 \r\n 1995          174           17.12612      30.99556      18.05611      0 \r\n 1995          175           14.92864      29.03833      17.83055      14.1224 \r\n 1995          176           7.724919      22.68889      17.76278      12.3698 \r\n 1995          177           7.328527      23.68444      18.15         8.001 \r\n 1995          178           13.10529      23.59278      15.84889      14.4526 \r\n 1995          179           14.08201      25.02611      17.05667      4.1402 \r\n 1995          180           21.66086      25            14.44667      0 \r\n 1995          181           18.72315      22.48444      8.066112      0 \r\n 1995          182           22.08579      22.75167      8.448334      0 \r\n 1995          183           21.18694      24.05167      13.42944      0 \r\n 1995          184           14.98826      24.66889      15.75111      25.5016 \r\n 1995          185           10.65443      26.48833      16.32055      19.9898 \r\n 1995          186           14.85224      25.87556      14.57611      4.953 \r\n 1995          187           23.28651      26.34667      13.56667      0 \r\n 1995          188           15.8333       26.80333      15.88611      15.4432 \r\n 1995          189           19.34657      28.96667      17.97722      0 \r\n 1995          190           23.57232      28.88889      15.52167      0 \r\n 1995          191           21.27208      30.78111      20.23167      0 \r\n 1995          192           23.09053      33.58556      22.39278      0 \r\n 1995          193           22.68711      36.25278      23.47         0 \r\n 1995          194           23.03869      35.815        24.16945      0 \r\n 1995          195           22.13972      33.38611      22.93444      0 \r\n 1995          196           13.71561      32.715        20.76         9.3218 \r\n 1995          197           18.8657       28.93056      18.79722      0 \r\n 1995          198           23.42827      28.475        16.47833      0 \r\n 1995          199           22.51649      29.39167      16.39667      0 \r\n 1995          200           11.07488      30.58444      19.77278      0 \r\n 1995          201           21.6317       28.65833      14.70889      0 \r\n 1995          202           21.2402       29.91111      16.01667      21.0312 \r\n 1995          203           17.25377      29.65167      18.07944      0 \r\n 1995          204           18.33676      29.85833      16.84722      6.9342 \r\n 1995          205           22.05261      31.20778      16.645        0 \r\n 1995          206           17.61979      30.08667      17.45555      0 \r\n 1995          207           22.18261      32.05167      17.64722      0 \r\n 1995          208           19.85425      33.50389      16.18722      0 \r\n 1995          209           22.94213      32.985        17.43222      0 \r\n 1995          210           22.36289      32.48167      20.92611      0 \r\n 1995          211           25.83704      31.29667      21.45944      0 \r\n 1995          212           9.910055      29.87111      15.74111      3.3274 \r\n 1995          213           18.83624      24.41556      16.77944      0 \r\n 1995          214           12.09699      26.76167      20.09389      0 \r\n 1995          215           18.12785      27.84945      20.01         0 \r\n 1995          216           20.40804      30.55556      18.58556      0 \r\n 1995          217           20.05337      30.44         18.87889      0 \r\n 1995          218           19.5351       30.30944      19.73778      0 \r\n 1995          219           20.84167      31.48333      21.27167      0 \r\n 1995          220           25.39525      33.35944      21.88889      0 \r\n 1995          221           22.0201       34.47556      21.19         20.1676 \r\n 1995          222           23.53805      31.13222      21.30556      0 \r\n 1995          223           25.42726      33.09778      22.66833      0 \r\n 1995          224           25.09049      33.53778      23.575        0 \r\n 1995          225           22.30679      33.30722      19.83444      0 \r\n 1995          226           14.25698      30.86667      19.625        12.0396 \r\n 1995          227           9.115973      30.02611      20.83889      5.6896 \r\n 1995          228           17.58096      30.19667      21.42056      0 \r\n 1995          229           21.84994      32.92222      22.88556      0 \r\n 1995          230           24.05323      32.78         21.69278      0 \r\n 1995          231           22.89497      27.31111      12.48667      0 \r\n 1995          232           23.89294      28.99944      14.29278      0 \r\n 1995          233           21.15284      30.16778      14.01667      0 \r\n 1995          234           15.36302      29.44667      17.01611      0 \r\n 1995          235           20.56068      29.07833      16.22889      0 \r\n 1995          236           23.08806      31.51         16.92945      0 \r\n 1995          237           23.68583      31.39444      16.61222      0 \r\n 1995          238           19.59488      33.70833      18.16611      0 \r\n 1995          239           19.98471      33.61666      19.62556      0 \r\n 1995          240           20.38792      34.10722      19.23         0 \r\n 1995          241           18.63374      33.77611      20.54556      0 \r\n 1995          242           19.32347      33.73111      20.20444      0 \r\n 1995          243           11.40169      28.15556      14.14611      0 \r\n 1995          244           22.23583      27.89556      12.91167      0 \r\n 1995          245           14.7273       26.91611      14.82167      0 \r\n 1995          246           20.89331      29.40278      15.805        0 \r\n 1995          247           21.29803      30.32222      15.97167      0 \r\n 1995          248           13.3083       29.79833      18.07722      0 \r\n 1995          249           11.85168      26.50889      14.69778      3.5052 \r\n 1995          250           6.068683      17.53722      9.283889      0 \r\n 1995          251           18.00635      19.07778      5.251667      0 \r\n 1995          252           21.55203      21.37333      4.145555      0 \r\n 1995          253           20.46022      22.70722      6.342778      0 \r\n 1995          254           12.55643      24.46833      11.02056      2.8194 \r\n 1995          255           12.1213       25.55667      12.85889      6.731 \r\n 1995          256           19.9991       30.22333      11.645        0 \r\n 1995          257           20.01006      26.13         9.362778      0 \r\n 1995          258           19.04963      28.68167      11.26111      0 \r\n 1995          259           12.94659      23.98889      9.292778      0 \r\n 1995          260           18.4955       21.80556      7.161667      0 \r\n 1995          261           10.90242      22.82167      9.824445      18.9738 \r\n 1995          262           3.704974      16.06333      7.056667      5.1308 \r\n 1995          263           9.04518       13.99833      3.982778      0 \r\n 1995          264           8.518038      11.08222     -1.226667      0 \r\n 1995          265           20.03868      12.56333     -0.9666666     0 \r\n 1995          266           14.4389       15.34333      0.9227778     0 \r\n 1995          267           12.32435      18.17389      2.927778      0 \r\n 1995          268           18.52801      21.03833      4.241111      0 \r\n 1995          269           18.55106      24.34056      8.494445      0 \r\n 1995          270           18.28718      26.01944      7.243333      0 \r\n 1995          271           16.08568      25.78889      9.841111      8.1534 \r\n 1995          272           4.880762      21.23889      16.75833      18.4404 \r\n 1995          273           11.10463      24.63278      11.68556      0 \r\n 1995          274           17.43326      22.95833      10.84111      0 \r\n 1995          275           6.321606      24.28778      8.826111      0 \r\n 1995          276           17.07369      21.34167      5.203889      0 \r\n 1995          277           16.31404      20.49167      6.444445      0 \r\n 1995          278           3.067792      13.78611      7.761667      6.9342 \r\n 1995          279           4.409308      11.52889      5.461667      0 \r\n 1995          280           16.19986      15.85167      2.182778      0 \r\n 1995          281           6.213491      17.98944      4.418889      0 \r\n 1995          282           15.56912      20.31222      4.586111      0 \r\n 1995          283           16.17903      24.81444      7.681667      0 \r\n 1995          284           15.35423      27.285        10.63556      0 \r\n 1995          285           14.42827      27.38667      11.51111      0 \r\n 1995          286           5.145944      19.22111      5.091667      0 \r\n 1995          287           14.62827      18.35333      0.4561111     0 \r\n 1995          288           14.97851      18.045        1.006667      0 \r\n 1995          289           14.16887      20.54778      5.270555      0 \r\n 1995          290           13.17261      23.83889      3.778333      0 \r\n 1995          291           12.77183      21.89111      4.087778      0 \r\n 1995          292           4.117725      15.94333      4.546111      0 \r\n 1995          293           7.115101      8.270555      1.946667      0 \r\n 1995          294           13.7744       12.49556     -1.650556      0 \r\n 1995          295           12.06511      18.64667     -0.8283333     0 \r\n 1995          296           4.947412      17.67         3.477778      0 \r\n 1995          297           13.68369      14.74667      0.2194444     0 \r\n 1995          298           13.3965       18.75444     -0.1472222     0 \r\n 1995          299           5.297864      14.98389      1.155556      0 \r\n 1995          300           3.777441      10.90167      4.103333      0 \r\n 1995          301           11.24278      12.80389     -2.665555      0 \r\n 1995          302           3.529664      11.825        1.198333      0 \r\n 1995          303           2.953318      3.888889      0.7361111     13.8938 \r\n 1995          304           1.808325      12.42667      1.986667      12.1158 \r\n 1995          305           5.620807      12.02167     -0.7422222     16.1798 \r\n 1995          306           9.433289      1.902222     -7.246111      0 \r\n 1995          307           11.39613      2.104445     -11.59056      0 \r\n 1995          308           12.2054       4.898334     -7.086111      0 \r\n 1995          309           9.826752      9.252778     -0.1516667     0 \r\n 1995          310           6.186713      7.756667     -1.782222      0 \r\n 1995          311           3.874593      3.771111     -8.852222      0 \r\n 1995          312           7.524548      3.563889     -5.958333      0 \r\n 1995          313           9.640731      15.50833     -1.541111      0 \r\n 1995          314           1.650002      2.873333     -10.78611      12.5984 \r\n 1995          315           11.25396     -1.121111     -11.04611      0 \r\n 1995          316           7.246772      2.913333     -6.709445      0 \r\n 1995          317           5.970568      2.778889     -7.253889      0 \r\n 1995          318           7.100583      4.986111     -5.302222      0 \r\n 1995          319           3.508368      5.846667     -3.611667      0 \r\n 1995          320           7.552664      7.858333     -0.3611111     0 \r\n 1995          321           2.314924      7.218333     -0.705         0 \r\n 1995          322           9.264966      10.29611     -1.603889      0 \r\n 1995          323           8.627324      15.60444     -1.387222      0 \r\n 1995          324           9.207561      11.64056     -3.299444      0 \r\n 1995          325           9.552197      5.778889     -8.331111      0 \r\n 1995          326           5.465057      9.798333     -8.286667      0 \r\n 1995          327           4.554954      0.9127778    -12.01778      0 \r\n 1995          328           6.149936      5.621666     -7.422222      0 \r\n 1995          329           6.878664      11.89111      0.8577778     0 \r\n 1995          330           3.972164      12.52222     -1.686667      4.9022 \r\n 1995          331           3.290172     -0.6483333    -16.68833      5.1816 \r\n 1995          332           9.348019     -4.315556     -15.44556      0 \r\n 1995          333           8.165034      4.537222     -8.571667      0 \r\n 1995          334           6.874521      14.04944     -0.9355556     0 \r\n 1995          335           8.368544      11.15        -0.75          0 \r\n 1995          336           5.721536      16.02944     -0.2444444     0 \r\n 1995          337           8.355197      12.64111     -8.013889      0 \r\n 1995          338           4.54282       8.425        -5.771667      0 \r\n 1995          339           9.086518      2.915555     -7.840556      0 \r\n 1995          340           3.317326     -2.246111     -11.88778      0.25 \r\n 1995          341           2.495965     -2.914444     -10.26056      3.56 \r\n 1995          342           4.388305     -4.991111     -20.67111      2.29 \r\n 1995          343           9.22823      -13.12556     -22.86611      1.78 \r\n 1995          344           5.315856     -6.973889     -19.785        0 \r\n 1995          345           6.30102      -8.53         -14.46833      0 \r\n 1995          346           5.194854     -3.550555     -12.75667      0 \r\n 1995          347           6.520931      2.198333     -5.05          0.25 \r\n 1995          348           7.847008      5.830555     -5.613333      0.25 \r\n 1995          349           7.99893       3.299444     -9.281667      0 \r\n 1995          350           6.926068      6.566667     -8.841666      0 \r\n 1995          351           1.693558      2.117778     -2.550555      0 \r\n 1995          352           2.520023      1.255556     -2.361111      1.27 \r\n 1995          353           1.689165      0.4011111    -9.473333      0 \r\n 1995          354           2.590858     -1.15         -7.403889      0 \r\n 1995          355           2.352077     -2.164444     -10.48278      0 \r\n 1995          356           2.482576     -3.81         -8.466111      0 \r\n 1995          357           2.563035     -3.333333     -7.317222      0 \r\n 1995          358           2.925997     -2.017778     -4.713889      0 \r\n 1995          359           1.897862     -7.277778E-02               -5.32          0.25 \r\n 1995          360           6.330894      3.102778     -5.117778      0 \r\n 1995          361           3.457658     -1.916111     -14.64667      0 \r\n 1995          362           5.086573     -1.486111     -13.81278      0 \r\n 1995          363           4.630014      3.980556     -6.760556      0 \r\n 1995          364           2.02673       0.3461111    -2.452778      0 \r\n 1995          365           1.257292      0.82         -1.452222      2.54 \r\n 1996          1             1.350093      0.5316667    -2.69          0 \r\n 1996          2             2.99725      -1.997778     -15.72611      0 \r\n 1996          3             4.47119      -4.235        -14.16611      0 \r\n 1996          4             6.373864     -5.692222     -13.845        5.59 \r\n 1996          5             6.291899     -10.19944     -22.19611      0.25 \r\n 1996          6             8.612722     -12.23722     -23.07389      0 \r\n 1996          7             8.792927     -8.473889     -21.45389      0 \r\n 1996          8             7.200706      1.793333     -10.82667      0 \r\n 1996          9             5.843835      3.540555     -1.687778      0 \r\n 1996          10            2.5586        1.721667     -1.111111      0 \r\n 1996          11            2.906332      3.279444     -5.733889      1.27 \r\n 1996          12            8.766316      11.52889     -3.783889      0 \r\n 1996          13            8.753179      15.73889     -5.061666      0 \r\n 1996          14            6.024333      6.408333     -9.978889      0 \r\n 1996          15            3.20235       2.531667     -8.125556      0 \r\n 1996          16            5.383386      8.575        -1.85          0 \r\n 1996          17            1.35298       15.22222     -12.66222      0 \r\n 1996          18            1.49737      -12.38778     -22.89333      22.1 \r\n 1996          19            7.716342     -12.94444     -21.71333      5.59 \r\n 1996          20            9.114007     -4.553889     -15.76389      0 \r\n 1996          21            9.017441      3.105        -9.483334      0 \r\n 1996          22            4.38366      -1.162222     -11.89722      0 \r\n 1996          23            4.296089     -8.709444     -16.04611      1.27 \r\n 1996          24            10.199       -6.215        -18.06889      1.52 \r\n 1996          25            6.407629      1.485        -11.92389      0 \r\n 1996          26            3.365526     -5.889444     -19.03333      1.52 \r\n 1996          27            11.16174     -5.803889     -20.83333      13.97 \r\n 1996          28            9.537763      3.141667     -22.21556      0 \r\n 1996          29            9.004177     -14.88444     -20.72111      0 \r\n 1996          30            9.235678     -18.06111     -28.13667      1.27 \r\n 1996          31            11.79018     -17.06444     -32.32944      0.51 \r\n 1996          32            11.54039     -17.11555     -32.29111      0 \r\n 1996          33            12.33159     -17.77778     -36.02278      0 \r\n 1996          34            12.54744     -20.62833     -34.00389      0 \r\n 1996          35            12.42179     -7.615        -30.98167      0 \r\n 1996          36            12.01272     -2.580555     -16.35111      0 \r\n 1996          37            9.012838      3.936667     -9.067778      0 \r\n 1996          38            9.250238      9.138333      1.625         0 \r\n 1996          39            11.13484      9.075556     -2.381667      0.25 \r\n 1996          40            11.79315      12.195       -2.571111      0 \r\n 1996          41            10.87999      6.833333     -2.683889      0 \r\n 1996          42            9.714746      0.9144444    -4.56          0 \r\n 1996          43            10.50326      3.47         -6.512778      0 \r\n 1996          44            10.00261      9.681666     -1.761111      0 \r\n 1996          45            6.533232      3.437222     -6.556667      0 \r\n 1996          46            9.107941      1.074444     -15.83889      0 \r\n 1996          47            13.89427     -2.162222     -15.29278      1.52 \r\n 1996          48            9.88926       0.2283333    -12.58611      0 \r\n 1996          49            8.426241      4.432778     -8.335         0 \r\n 1996          50            13.04082      14.98889     -2.700556      0 \r\n 1996          51            13.19922      13.39222     -2.566667      0 \r\n 1996          52            4.667127      3.008333     -0.2572222     0 \r\n 1996          53            2.696421      6.4          -0.5816666     1.27 \r\n 1996          54            10.50477      12.27167     -2.567778      0.25 \r\n 1996          55            14.74174      17.79556     -1.115556      0 \r\n 1996          56            10.62882      16.31222      0.4016667     0 \r\n 1996          57            5.499701      5.470556     -4.481111      0.51 \r\n 1996          58            12.25581     -3.236111     -14.35056      8.64 \r\n 1996          59            15.50553     -4.982222     -16.78222      0 \r\n 1996          60            16.03769      1.055556E-02               -14.52222      0 \r\n 1996          61            13.32202      0.7388889    -7.796667      0 \r\n 1996          62            15.23855     -2.307222     -16.78444      0 \r\n 1996          63            14.12648      0.1083333    -13.63833      0 \r\n 1996          64            9.298815      8.683333     -4.986111      0 \r\n 1996          65            8.712887      0.6055555    -7.985556      25.4 \r\n 1996          66            10.14783     -6.997778     -20.46389      2.29 \r\n 1996          67            16.63567     -9.721666     -19.85833      0 \r\n 1996          68            17.96078     -4.635        -17.86056      0 \r\n 1996          69            18.29676      2.152222     -9.913889      0 \r\n 1996          70            15.45151      8.577778     -3.428889      0 \r\n 1996          71            15.96368      12.91444      1.588889      0 \r\n 1996          72            16.77278      17.09945      3.017222      0 \r\n 1996          73            17.39184      19.60389      1.551111      0 \r\n 1996          74            12.8207       12.37389     -5.298889      0 \r\n 1996          75            18.8221       13.75444     -4.842222      0 \r\n 1996          76            13.62524      13.94556     -2.642778      0 \r\n 1996          77            18.44366      10.12833     -4.906111      1.52 \r\n 1996          78            16.73638      6.752222     -5.644444      0 \r\n 1996          79            10.37795      0.9833333    -5.052778      0.25 \r\n 1996          80            19.87697      6.126111     -7.143333      0.25 \r\n 1996          81            16.35019      7.271111     -6.983889      0 \r\n 1996          82            19.55568      9.832222     -2.21          0 \r\n 1996          83            6.878538      11.19278      1.275556      0 \r\n 1996          84            3.6469        13.69278     -9.343889      0.76 \r\n 1996          85            19.64635     -3.045556     -11.16667      12.7 \r\n 1996          86            21.71429      1.601667     -8.413889      0 \r\n 1996          87            19.10666      8.243889     -4.118333      0 \r\n 1996          88            17.18808      11.35167     -0.9755555     0 \r\n 1996          89            16.48622      12.46611      2.941111      0 \r\n 1996          90            1.987777      8.531667     -2.751667      0 \r\n 1996          91            20.8259       8.595555     -4.952222      4.06 \r\n 1996          92            20.85732      15.40722     -0.3777778     0 \r\n 1996          93            20.77507      25.29833      6.671667      0 \r\n 1996          94            10.73188      19.43        -1.019444      0 \r\n 1996          95            8.941543      1.981111     -0.3272222     0 \r\n 1996          96            15.2675       5.249444     -6.34          0 \r\n 1996          97            20.27738      8.499444     -1.709444      0 \r\n 1996          98            15.15349      9.781667     -4.225555      0 \r\n 1996          99            10.44063      10.60333     -6.632778      0 \r\n 1996          100           24.41021      15.22056     -4.320556      0 \r\n 1996          101           23.52023      22.35389      1.326111      0 \r\n 1996          102           17.58305      25.62333      10.88056      0 \r\n 1996          103           8.868657      14.17167     -0.8755556     0 \r\n 1996          104           16.55236      10.22722     -1.074444      3.4036 \r\n 1996          105           2.930432      4.709445     -0.32          6.6294 \r\n 1996          106           24.29879      13.61167     -0.6933333     0 \r\n 1996          107           25.13919      16.23389     -0.1477778     0 \r\n 1996          108           24.30088      26.40944      8.815556      0 \r\n 1996          109           14.71801      23.44611      5.663333      0 \r\n 1996          110           9.171997      27.34278      4.512222      0 \r\n 1996          111           15.49331      16.86611      2.301111      0 \r\n 1996          112           10.29105      19.65944      3.942778      0 \r\n 1996          113           25.1227       14.94222     -1.577778      0 \r\n 1996          114           26.60179      17.82278      3.251111      0 \r\n 1996          115           15.38641      23.20667      10.41889      0 \r\n 1996          116           17.93493      21.31278      1.727222      0 \r\n 1996          117           24.60811      13.68167     -1.145         0 \r\n 1996          118           21.26715      15.58944      3.711111      5.0038 \r\n 1996          119           6.477962      10.065        2.549444      20.6248 \r\n 1996          120           11.47784      8.758333     -2.174444      4.5974 \r\n 1996          121           23.78478      16.87111      2.467222      0 \r\n 1996          122           26.70605      17.40055      2.659444      0 \r\n 1996          123           10.22628      17.59833      4.333889      4.5466 \r\n 1996          124           9.144258      16.75722      6.022222      6.35 \r\n 1996          125           14.9309       17.20722      7.772778      0 \r\n 1996          126           16.9262       18.58444      4.769444      0 \r\n 1996          127           7.027405      13.15278      5.967222      5.0038 \r\n 1996          128           17.48895      16.63889      9.528334      16.0528 \r\n 1996          129           11.78963      25.005        14.67278      40.5638 \r\n 1996          130           6.272444      23.11611      11.49611      36.957 \r\n 1996          131           5.09243       13.23944      8.328333      3.302 \r\n 1996          132           18.08316      14.17889      2.087778      0 \r\n 1996          133           9.221996      9.361667      1.197778      2.6416 \r\n 1996          134           16.81252      14.27389      3.776111      0 \r\n 1996          135           3.844719      16.96611      6.196667      0 \r\n 1996          136           14.39982      24.07722      14.67722      0 \r\n 1996          137           12.6212       24.05333      17.89556      0 \r\n 1996          138           26.16063      30.73611      20.50778      0 \r\n 1996          139           25.51508      30.82278      21.04222      0 \r\n 1996          140           23.65847      27.23944      13.58722      10.414 \r\n 1996          141           14.4402       21.39944      8.876111      10.7442 \r\n 1996          142           26.52781      25.375        10.08333      0 \r\n 1996          143           14.34936      25.20944      11.74278      52.6796 \r\n 1996          144           14.14577      19.65389      11.67167      0 \r\n 1996          145           8.621048      15.89278      10.96222      0 \r\n 1996          146           5.537482      16.21778      8.949445      13.335 \r\n 1996          147           4.524034      12.61         9.855556      51.7652 \r\n 1996          148           10.94601      14.05833      10.715        8.1788 \r\n 1996          149           4.673193      15.21833      10.38778      2.6162 \r\n 1996          150           19.19895      20.58167      6.68          0 \r\n 1996          151           28.29627      19.86611      9.587222      3.2258 \r\n 1996          152           8.344151      19.15444      13.52         16.383 \r\n 1996          153           15.64485      21.075        11.40222      22.225 \r\n 1996          154           21.43823      22.71167      10.055        0 \r\n 1996          155           14.98726      16.47333      5.76          0 \r\n 1996          156           27.12533      22.45056      8.836667      0 \r\n 1996          157           16.08455      24.32889      13.45944      3.4798 \r\n 1996          158           12.73614      23.37         10.55056      6.7818 \r\n 1996          159           10.97714      20.73111      11.99889      0 \r\n 1996          160           29.00901      22.69222      12.07167      0 \r\n 1996          161           24.60276      22.64333      14.90833      0 \r\n 1996          162           17.69393      23.28778      12.74667      0 \r\n 1996          163           27.10429      27.34278      13.36222      0 \r\n 1996          164           24.57062      30.53944      15.71556      0 \r\n 1996          165           27.86761      31.20278      16.48111      0 \r\n 1996          166           27.15044      31.145        19.00278      8.89 \r\n 1996          167           20.46353      28.67556      19.74111      14.9352 \r\n 1996          168           13.57005      27.52889      18.53         0 \r\n 1996          169           10.42921      24.695        15.23         0 \r\n 1996          170           17.75581      26.13111      14.16611      0 \r\n 1996          171           25.19228      28.40389      17.25         0 \r\n 1996          172           15.49239      28.63056      19.08444      0 \r\n 1996          173           21.71383      28.00222      16.79         9.9822 \r\n 1996          174           16.8957       25.99722      16.92389      0 \r\n 1996          175           19.44401      27.73167      18.13167      9.0424 \r\n 1996          176           27.14069      27.83222      15.04667      0 \r\n 1996          177           26.7904       27.95056      16.26         0 \r\n 1996          178           26.79049      29.29778      18.38056      0 \r\n 1996          179           24.53071      30.96445      20.36722      0 \r\n 1996          180           25.82168      31.69056      22.325        0 \r\n 1996          181           24.06741      32.25111      20.81778      0 \r\n 1996          182           28.0969       31.75611      16.88611      0 \r\n 1996          183           24.31502      30.37222      17.22278      0 \r\n 1996          184           25.82871      30.43278      13.69167      0 \r\n 1996          185           19.77635      27.83055      15.65056      0 \r\n 1996          186           12.12335      27.89556      14.25222      0 \r\n 1996          187           26.36853      29.47278      14.78167      0 \r\n 1996          188           15.50804      30.46944      18.05111      0 \r\n 1996          189           26.9558       30.265        15.35389      0 \r\n 1996          190           26.87174      27.58722      11.48389      0 \r\n 1996          191           25.87185      25.12056      8.364445      0 \r\n 1996          192           24.99149      26.19222      11.375        0 \r\n 1996          193           16.98449      28.61167      16.63944      0 \r\n 1996          194           23.83855      29.90889      13.23667      0 \r\n 1996          195           24.04741      29.44444      15.63556      0 \r\n 1996          196           22.78117      28.13111      13.905        0 \r\n 1996          197           26.37686      30.34889      16.63167      0 \r\n 1996          198           17.3687       30.12389      18.43167      2.54 \r\n 1996          199           20.85322      32.99833      21.24389      0 \r\n 1996          200           25.36299      33.88111      21.93167      4.7244 \r\n 1996          201           18.82419      31.57778      18.05278      5.1308 \r\n 1996          202           7.895627      23.23611      17.94111      17.526 \r\n 1996          203           16.9388       25.74889      17.14333      0 \r\n 1996          204           16.8821       29.70167      14.72278      0 \r\n 1996          205           26.36736      29.05944      15.91333      0 \r\n 1996          206           24.63305      26.37333      15.475        0 \r\n 1996          207           25.28136      27.30889      12.64056      0 \r\n 1996          208           15.05972      28.03444      14.03278      0 \r\n 1996          209           20.96979      26.74778      15.32222      10.9474 \r\n 1996          210           20.97791      28.69444      15.815        6.9596 \r\n 1996          211           18.9418       27.20611      15.35111      4.826 \r\n 1996          212           23.16819      24.46833      11.86611      0 \r\n 1996          213           19.73388      27.48167      11.40222      0 \r\n 1996          214           20.02939      27.25889      12.68833      0 \r\n 1996          215           22.94146      27.71278      14.96611      6.0198 \r\n 1996          216           16.5158       29.05445      20.02444      0 \r\n 1996          217           10.83489      28.71944      21.34444      10.4648 \r\n 1996          218           15.22804      30.69222      23.45389      0 \r\n 1996          219           22.7315       31.17167      18.84111      0 \r\n 1996          220           20.72218      29.71167      13.24944      0 \r\n 1996          221           25.01279      30.055        13.91         2.5654 \r\n 1996          222           23.47801      28.94167      16.11222      0 \r\n 1996          223           11.13216      26.86333      16.10111      12.4714 \r\n 1996          224           16.12024      27.19889      13.24389      0 \r\n 1996          225           23.2809       27.77778      13.99389      0 \r\n 1996          226           22.81121      28.22278      16.15944      0 \r\n 1996          227           20.02847      30.17833      13.25444      0 \r\n 1996          228           23.41986      25.57055      11.975        4.0386 \r\n 1996          229           9.439774      22.60222      14.76389      8.8138 \r\n 1996          230           12.09276      22.50333      18.17889      4.1402 \r\n 1996          231           13.22341      25.27167      18.10778      8.4836 \r\n 1996          232           12.7881       28.91278      16.76111      8.9408 \r\n 1996          233           22.03265      28.50167      17.42667      0 \r\n 1996          234           20.14249      30.35389      20.095        0 \r\n 1996          235           8.071313      28.89111      19.20889      0 \r\n 1996          236           21.42509      26.08222      12.78278      0 \r\n 1996          237           22.08901      26.80556      12.06778      0 \r\n 1996          238           19.3405       27.54167      12.51278      4.064 \r\n 1996          239           15.51009      26.81333      13.17778      15.9512 \r\n 1996          240           14.67756      25.84389      15.71833      0 \r\n 1996          241           18.07291      27.63333      15.34111      0 \r\n 1996          242           18.85913      27.92222      13.32222      0 \r\n 1996          243           19.20607      27.29889      11.245        0 \r\n 1996          244           18.31282      26.54611      12.80778      0 \r\n 1996          245           17.18164      28.26278      15.59778      0 \r\n 1996          246           19.48129      27.85667      14.37389      0 \r\n 1996          247           13.84532      28.465        14.88611      0 \r\n 1996          248           19.08799      28.76111      14.225        0 \r\n 1996          249           19.39238      28.67167      14.02556      0 \r\n 1996          250           18.18299      28.79722      13.78722      0 \r\n 1996          251           11.48654      28.13389      15.91778      15.748 \r\n 1996          252           10.8107       24.84278      13.18389      0 \r\n 1996          253           20.47645      26.45444      11.47833      0 \r\n 1996          254           15.10838      27.13333      13.42278      0 \r\n 1996          255           14.97257      25.15278      6.926111      3.3528 \r\n 1996          256           14.42706      18.41055      6.729445      0 \r\n 1996          257           19.86986      18.53778      1.800556      0 \r\n 1996          258           19.29385      19.06944      3.603889      0 \r\n 1996          259           11.77608      18.22389      8.592222      0 \r\n 1996          260           15.13863      21.91444      6.116111      0 \r\n 1996          261           15.12914      20.69         7.884444      0 \r\n 1996          262           11.79419      20.46389      8.283334      0 \r\n 1996          263           5.577105      21.11611      11.13444      8.3566 \r\n 1996          264           15.38202      20.67111      8.215555      0 \r\n 1996          265           12.58091      21.36333      6.651667      0 \r\n 1996          266           15.9515       22.19833      8.471111      29.5402 \r\n 1996          267           4.549974      17.65444      6.921667      0 \r\n 1996          268           17.44954      17.65278      8.14          0 \r\n 1996          269           4.152787      14.60333      11.30778      22.86 \r\n 1996          270           4.052204      16.17333      6.231667      11.1506 \r\n 1996          271           9.92767       17.43111      6.553889      0 \r\n 1996          272           17.97689      21.46445      6.635         0 \r\n 1996          273           16.71642      23.48722      8.462222      0 \r\n 1996          274           16.93369      24.67778      10.16389      0 \r\n 1996          275           16.44739      22.93444      10.68778      0 \r\n 1996          276           14.74529      15.46389      0.3088889     0 \r\n 1996          277           15.39959      16.23778      2.361667      0 \r\n 1996          278           12.47016      18.465        3.653333      0 \r\n 1996          279           15.26445      23.35444      7.621111      0 \r\n 1996          280           9.91403       24.88445      7.753889      0 \r\n 1996          281           11.80436      15.59556      0.6394445     0 \r\n 1996          282           14.57471      16.28667      2.094445      0 \r\n 1996          283           14.16158      17.38389      1.813333      0 \r\n 1996          284           15.9143       14.75667      1.258889      0 \r\n 1996          285           14.59982      18.62444      4.695         0 \r\n 1996          286           13.36449      24.23278      9.908334      0 \r\n 1996          287           14.16188      26.66667      10.49889      0 \r\n 1996          288           13.71737      26.25556      13.13833      0 \r\n 1996          289           12.03009      24.38667      13.75611      0 \r\n 1996          290           12.4351       23.23056      12.21278      5.8166 \r\n 1996          291           4.384999      17.79445      2.395555      0 \r\n 1996          292           14.50676      13.67889     -0.8227777     0 \r\n 1996          293           13.42244      19.02555      1.455         0 \r\n 1996          294           11.28785      21.32055      6.606667      0 \r\n 1996          295           10.41314      13.86778      1.928889      31.6992 \r\n 1996          296           1.831964      7.249444      1.525         25.4762 \r\n 1996          297           11.82741      14.45833     -0.1494444     0 \r\n 1996          298           8.801546      18.68444      1.877222      0 \r\n 1996          299           5.558026      19.99778      8.659445      0 \r\n 1996          300           10.5382       23.33611      5.012778      0 \r\n 1996          301           7.305933      15.35556     -0.4716667     0 \r\n 1996          302           8.371138      14.73278      2.422778      16.9926 \r\n 1996          303           7.074768      18.89389     -1.888889E-02                5.6388 \r\n 1996          304           11.17078      4.338889     -1.808333      0 \r\n 1996          305           5.599154      3.1          -5.697222      0 \r\n 1996          306           9.990681      6.459445     -8.126667      0 \r\n 1996          307           12.13435      6.218889     -5.564445      0 \r\n 1996          308           11.30647      13.435       -1.731111      7.2898 \r\n 1996          309           1.248213      7.673889      4.523334      10.6934 \r\n 1996          310           6.412524      14.76444      5.461667      0 \r\n 1996          311           6.265247      16.44333     -0.2022222     0 \r\n 1996          312           10.66573      12.21444     -1.635556      0 \r\n 1996          313           9.018947      6.743889     -3.865         0 \r\n 1996          314           4.522695      6.683333     -4.889444      0 \r\n 1996          315           3.110009     -2.318333     -6.341667      0 \r\n 1996          316           3.091892     -1.294444     -7.259444      0 \r\n 1996          317           3.888819     -1.842222     -5.240556      0 \r\n 1996          318           2.549897     -1.700556     -7.120555      0 \r\n 1996          319           3.266951      1.786667     -7.154444      0 \r\n 1996          320           3.6           11.85833      1.346111      0 \r\n 1996          321           2.8           13.64833     -3.92          9.4742 \r\n 1996          322           8.358042      1.772222     -4.52          0 \r\n 1996          323           7.450909      3.699445     -3.831111      0 \r\n 1996          324           4.43094       3.245556     -2.447778      0 \r\n 1996          325           1.526532      1.873889     -1.871111      0 \r\n 1996          326           2.149739      2.385        -0.2672222     0 \r\n 1996          327           1.752301      6.022222     -0.2044444     0 \r\n 1996          328           1.007633      5.948333     -6.433333      0 \r\n 1996          329           6.013747     -3.317222     -11.74056      0 \r\n 1996          330           8.68703      -3.763333     -14.675        0 \r\n 1996          331           9.378855     -2.977222     -13.95389      0 \r\n 1996          332           4.053585      0.7805555    -7.987778      0 \r\n 1996          333           8.641047      7.848333     -4.657778      0 \r\n 1996          334           5.501876      5.121666     -3.713889      13.081 \r\n 1996          335           2.362705      0.8572222    -6.272222      0 \r\n 1996          336           6.475284      3.466111     -8.417222      0 \r\n 1996          337           3.946767      3.127778     -9.067778      0 \r\n 1996          338           7.057195      0.8294445    -8.408889      0.76 \r\n 1996          339           3.238625      3.694444     -6.168334      0 \r\n 1996          340           5.348617      4.066111     -4.933333      0 \r\n 1996          341           6.538923      9.202222     -6.78          0.25 \r\n 1996          342           8.174281      8.537222     -6.965         0 \r\n 1996          343           7.195476      1.21         -8.701111      0 \r\n 1996          344           5.043561      5.029444     -7.144444      0 \r\n 1996          345           4.581857      13.09611     -3.936667      0 \r\n 1996          346           2.231411      6.044445      0.2194444     0 \r\n 1996          347           5.078246      7.353889     -5.621666      0 \r\n 1996          348           5.688483      7.072778     -2.34          0 \r\n 1996          349           5.690742      8.343333     -4.292778      0.25 \r\n 1996          350           5.693001     -2.777778E-03               -10.22556      2.29 \r\n 1996          351           3.268373      1.79         -10.34056      0 \r\n 1996          352           4.952852     -8.382778     -16.10611      0 \r\n 1996          353           5.018499     -11.94111     -18.39833      0.25 \r\n 1996          354           5.124731     -9.395555     -19.91611      0.25 \r\n 1996          355           5.775552      2.165555     -17.72167      0 \r\n 1996          356           3.648908     -1.174444     -4.601666      0 \r\n 1996          357           1.492726     -1.925        -10.28         0 \r\n 1996          358           2.842568     -7.275        -18.18889      0 \r\n 1996          359           7.107361     -10.17389     -17.38556      1.27 \r\n 1996          360           4.428764     -7.156667     -15.61722      0 \r\n 1996          361           6.928244     -0.6116667    -16.41778      0.25 \r\n 1996          362           2.179906      0.5561111    -12.51389      0 \r\n 1996          363           4.618676      1.561667     -13.49889      0.25 \r\n 1996          364           6.646368      0.9477777    -13.17556      0 \r\n 1996          365           3.621001      3.879444     -7.732778      0 \r\n 1996          366           3.810327      5.771111     -6.772222      0 \r\n 1997          1             3.6           10.58167      0.9988889     0.25 \r\n 1997          2             7.2           12.15889     -3.133889      0 \r\n 1997          3             3.9           12.81333     -2.203333      0 \r\n 1997          4             3.6           7.766111     -7.257222      0.25 \r\n 1997          5             8.6          -1.457778     -13.09278      0 \r\n 1997          6             9.9          -1.283889     -15.31778      0 \r\n 1997          7             9.2           0.9016666    -13.28389      0 \r\n 1997          8             7.1           1.116111     -10.31         0 \r\n 1997          9             3.8          -3.751111     -22.77778      0 \r\n 1997          10            5.4          -17.56722     -23.44889      1.02 \r\n 1997          11            6.3          -14.05944     -23.24667      0 \r\n 1997          12            5.9          -13.46667     -21.69833      0 \r\n 1997          13            5.2          -9.95         -19.88222      0 \r\n 1997          14            2.5          -5.856667     -12.60722      0 \r\n 1997          15            2.9          -4.929444     -19.61222      4.32 \r\n 1997          16            5.9          -11.11667     -26.94222      0.25 \r\n 1997          17            6.2          -8.594444     -24.30111      0 \r\n 1997          18            5.8           0.5911111    -14.78333      0 \r\n 1997          19            8.4           7.912222     -2.508333      0 \r\n 1997          20            11.2          11.67444     -2.743889      0 \r\n 1997          21            3.7           12.68278     -2.388889E-02                0 \r\n 1997          22            10.2          1.349444     -13.56389      0 \r\n 1997          23            7.5          -2.109444     -12.93833      0 \r\n 1997          24            4.7          -5.202778     -20.11555      6.6 \r\n 1997          25            6.6          -13.71778     -18.99222      0 \r\n 1997          26            3            -13.36444     -18.49167      3.81 \r\n 1997          27            4.3          -12.10944     -26.32556      0.76 \r\n 1997          28            4.5          -8.853333     -24.545        0 \r\n 1997          29            5            -1.121111     -15.94333      0 \r\n 1997          30            5.4           5.812778     -10.59389      0 \r\n 1997          31            9.5           11.02722     -2.657222      0 \r\n 1997          32            7.6           8.144444     -2.963889      0 \r\n 1997          33            12.8          6.032222     -2.801667      0 \r\n 1997          34            5.1           1.137222     -2.916667      0 \r\n 1997          35            3.9          -0.6661111    -6.065556      8.13 \r\n 1997          36            4            -1.666667     -7.217222      0.25 \r\n 1997          37            8            -4.004445     -7.385         0 \r\n 1997          38            7.4          -2.455555     -6.630556      0 \r\n 1997          39            11.4         -0.32         -6.098333      0.51 \r\n 1997          40            9            -2.075556     -5.692222      0 \r\n 1997          41            7.4          -2.683889     -8.98          0 \r\n 1997          42            7.1          -4.020555     -10.63944      0 \r\n 1997          43            10.5         -3.898889     -16.65944      0 \r\n 1997          44            10            0.5438889    -13.065        0 \r\n 1997          45            13.3          2.439445     -14.08611      0 \r\n 1997          46            9.4          -0.2183333    -11.40778      0 \r\n 1997          47            4.5           2.706111     -6.53          3.56 \r\n 1997          48            7.8           13.71833     -1.94          0 \r\n 1997          49            12.2          15.00778     -3.717778      0 \r\n 1997          50            16.3          9.596111     -1.589444      0 \r\n 1997          51            4             7.686666     -0.8966666     0 \r\n 1997          52            4.3           0.32         -10.03389      49.53 \r\n 1997          53            8.9           1.580556     -9.740556      3.56 \r\n 1997          54            14           -1.991667     -9.605         0 \r\n 1997          55            8.7          -0.8327778    -13.82889      0 \r\n 1997          56            15.1          2.633889     -9.133889      0 \r\n 1997          57            5.3           2.851667     -5.017778      2.03 \r\n 1997          58            6.2           1.318889     -5.76          8.38 \r\n 1997          59            8.1           8.602777     -3.361667      0 \r\n 1997          60            5.3           8.795        -6.354445      0 \r\n 1997          61            17.9          8.485        -6.032222      0 \r\n 1997          62            13.3          7.768889     -6.350555      0 \r\n 1997          63            11.9          3.210556     -6.766667      0 \r\n 1997          64            18.1          3.508889     -7.361111      0 \r\n 1997          65            17.3          5.063889     -6.926111      0 \r\n 1997          66            18.4          16.965       -7.106667      0 \r\n 1997          67            19.2          16.45722     -5.041667      0 \r\n 1997          68            17.9          11.74556     -1.996667      17.78 \r\n 1997          69            19.4          16.89722     -0.8127778     0 \r\n 1997          70            19.8          11.155       -1.653889      0 \r\n 1997          71            15.3          12.03833     -0.6555555     0 \r\n 1997          72            6.7           8.002222     -6.106111      0 \r\n 1997          73            13.1         -2.232222     -11.36833      0.76 \r\n 1997          74            18.4          2.639444     -9.685555      0 \r\n 1997          75            16            10.95944     -2.146111      0 \r\n 1997          76            7.1           11.98667      1.297222      0 \r\n 1997          77            4.5           6.136111     -3.651667      0.25 \r\n 1997          78            15.2          13.76944     -1.575         0.25 \r\n 1997          79            19.8          20.41889      2.228889      0 \r\n 1997          80            19.6          20.62611     -1.779444      0 \r\n 1997          81            21.3          13.85278     -3.012222      0 \r\n 1997          82            17.3          13.85222     -1.473333      0 \r\n 1997          83            5.3           10.44         0.4022222     0 \r\n 1997          84            15.2          11.69611     -2.953889      10.41 \r\n 1997          85            22.6          22.57333      0.9538889     0 \r\n 1997          86            18.7          21.24889      5.940556      0 \r\n 1997          87            8.6           12.56056      3.9           0 \r\n 1997          88            17            14.62778      1.441111      0 \r\n 1997          89            23.1          15.13667     -1.447778      5.08 \r\n 1997          90            23.5          18.00611      0.3494444     0 \r\n 1997          91            19.9          19.88445      6.505         0 \r\n 1997          92            6.8           16.995        6.551667      0 \r\n 1997          93            13.2          21.28333      7.217222      0 \r\n 1997          94            4.8           15.03389      10.34389      6.2738 \r\n 1997          95            7             15.86556     -0.1755556     11.684 \r\n 1997          96            14.6          3.700556     -6.111111      3.2512 \r\n 1997          97            23.5          6.823333     -6.368333      0 \r\n 1997          98            19.7          0.055        -7.099444      0 \r\n 1997          99            17.2          4.024445     -6.896111      5.1054 \r\n 1997          100           3.4           6.777778E-02               -2.727222      14.4526 \r\n 1997          101           4.3          -2.888889E-02               -2.122778      10.922 \r\n 1997          102           5             2.070555     -3.661111      0 \r\n 1997          103           11.2          6.62         -8.165556      0 \r\n 1997          104           16.4          10.44556     -5.692778      0 \r\n 1997          105           14.9          13.865        0.3161111     0 \r\n 1997          106           25.6          10.72833     -4.206666      0 \r\n 1997          107           27.2          15.36222     -1.028333      0 \r\n 1997          108           24.1          21.61889      3.682222      0 \r\n 1997          109           24.7          19.49611      4.512222      5.0038 \r\n 1997          110           3.7           11.25889      2.837778      10.5156 \r\n 1997          111           12.7          14.73056      3.448889      0 \r\n 1997          112           7.3           11.36556      3.951667      10.9982 \r\n 1997          113           13            15.20167      2.483889      0 \r\n 1997          114           21.5          14.62278     -0.7916667     0 \r\n 1997          115           26.9          18.71333      0.6816667     0 \r\n 1997          116           17.7          18.33833      5.903333      0 \r\n 1997          117           22.3          20.75278      3.467222      0 \r\n 1997          118           26.1          21.72944      4.198333      0 \r\n 1997          119           24.2          22.22722      8.129444      14.478 \r\n 1997          120           5.4           12.94833      0.7261111     20.7264 \r\n 1997          121           25.8          15.71222      3.326667      5.1816 \r\n 1997          122           6.1           14.22111      6.346667      6.1722 \r\n 1997          123           19.8          16.91111      3.891667      0 \r\n 1997          124           28.6          21.75556      7.458889      0 \r\n 1997          125           27.9          23.00833      2.423889      5.3848 \r\n 1997          126           18.8          19.84056      5.057222      11.4554 \r\n 1997          127           13.8          23.77833      8.817223      20.5994 \r\n 1997          128           23.3          22.745        4.420556      0 \r\n 1997          129           29.9          19.44667      0.1294445     0 \r\n 1997          130           29.9          21.23444      6.467778      0 \r\n 1997          131           15.6          20.41111      3.711111      0 \r\n 1997          132           22.3          17.035        0.2594444     0 \r\n 1997          133           25.3          15.20722      2.231111      0 \r\n 1997          134           21.1          14.74056      0.4788889     0 \r\n 1997          135           29            16.47611      3.111111E-02                0 \r\n 1997          136           27.9          24.45         6.750556      6.9596 \r\n 1997          137           24.5          28.33111      13.48556      0 \r\n 1997          138           23.9          29.21389      8.296111      0 \r\n 1997          139           27.6          18.27833      1.957778      0 \r\n 1997          140           30.5          19.41833      2.337222      0 \r\n 1997          141           31.1          19.39167      4.001111      0 \r\n 1997          142           24.8          19.76667      3.953889      0 \r\n 1997          143           23.9          23.05778      10.06167      0 \r\n 1997          144           14.5          23.15167      10.80667      0 \r\n 1997          145           11.9          17.26111      8.466666      14.3764 \r\n 1997          146           7.5           15.40167      7.961111      3.5814 \r\n 1997          147           4.5           11.02667      8.708333      14.478 \r\n 1997          148           5.9           13.64278      8.915         0 \r\n 1997          149           16.1          18.71833      8.502222      0 \r\n 1997          150           20.4          22.10167      6.515         0 \r\n 1997          151           29.6          24.60444      6.802222      0 \r\n 1997          152           31.3          25.37778      9.692778      0 \r\n 1997          153           28.2          24.64         11.19389      0 \r\n 1997          154           16.5          23.41778      12.23444      0 \r\n 1997          155           22.4          24.85333      9.001111      0 \r\n 1997          156           22.6          25.56167      10.77167      13.7922 \r\n 1997          157           26.6          25.54944      9.632778      0 \r\n 1997          158           25.7          24.96445      11.68611      0 \r\n 1997          159           19.6          22.76444      9.681111      0 \r\n 1997          160           22.7          23.85056      10.47056      0 \r\n 1997          161           18.8          24.86722      12.16556      0 \r\n 1997          162           20.7          25.78778      13.78         32.7152 \r\n 1997          163           22.3          25.84722      15.72389      5.8674 \r\n 1997          164           15.3          25.87611      15.01611      0 \r\n 1997          165           27.5          26.705        16.95278      0 \r\n 1997          166           19.2          28.48056      17.575        3.8354 \r\n 1997          167           25.1          29.17778      11.81222      0 \r\n 1997          168           29.6          28.76222      15.62056      0 \r\n 1997          169           30.7          29.89556      15.15         0 \r\n 1997          170           23.7          30.65444      19.32667      0 \r\n 1997          171           19.7          31.46167      19.15889      4.9784 \r\n 1997          172           19.5          29.64722      17.75889      0 \r\n 1997          173           26.6          31.09778      20.11722      0 \r\n 1997          174           26.2          30.69833      21.585        6.223 \r\n 1997          175           16.5          30.08222      18.03722      19.1008 \r\n 1997          176           19.2          27.40222      13.17889      0 \r\n 1997          177           28.6          29.41611      14.58222      0 \r\n 1997          178           29.1          29.02833      15.99444      0 \r\n 1997          179           29.3          30.51056      18.19389      0 \r\n 1997          180           24.8          30.63167      17.155        0 \r\n 1997          181           28.5          31.035        17.54722      0 \r\n 1997          182           24.1          31.37556      16.62667      0 \r\n 1997          183           30.8          26.08222      12.715        0 \r\n 1997          184           12.6          23.38333      11.835        3.683 \r\n 1997          185           17.7          22.66722      8.553889      0 \r\n 1997          186           24.9          25.40389      11.75167      0 \r\n 1997          187           27.8          26.83222      9.836667      0 \r\n 1997          188           25.2          30.54667      14.04667      0 \r\n 1997          189           25.6          31.465        14.05056      0 \r\n 1997          190           26.9          27.49944      15.68111      0 \r\n 1997          191           16.6          28.33278      17.74389      0 \r\n 1997          192           20.7          30.91444      19.79833      6.5786 \r\n 1997          193           23.9          32.27389      23.14333      0 \r\n 1997          194           26.8          33.74944      19.98556      0 \r\n 1997          195           30.2          31.55111      15.26556      0 \r\n 1997          196           30            32.55889      16.85278      0 \r\n 1997          197           29.1          32.81944      19.56944      0 \r\n 1997          198           27.4          33.765        19.22889      0 \r\n 1997          199           26.6          33.07778      20.09945      0 \r\n 1997          200           23.1          32.995        20.36         0 \r\n 1997          201           18.7          32.12389      19.83833      16.2306 \r\n 1997          202           14.8          29.09833      20.95555      8.2042 \r\n 1997          203           18.5          23.96667      19.74778      0 \r\n 1997          204           15            30.11056      19.32722      18.3896 \r\n 1997          205           23            33.27056      21.77722      0 \r\n 1997          206           25.7          36.29167      24.72778      0 \r\n 1997          207           26.7          36.82333      22.52167      0 \r\n 1997          208           20.8          33.46889      21.28167      0 \r\n 1997          209           11.4          28.60556      14.48833      0 \r\n 1997          210           25.4          27.31389      12.86167      0 \r\n 1997          211           24.5          25.35611      11.31         0 \r\n 1997          212           26.7          27.35         13.34389      0 \r\n 1997          213           19.46606      30.19278      14.64889      0 \r\n 1997          214           25.18601      32.91056      19.64667      0 \r\n 1997          215           22.25737      32.52111      18.48667      2.6924 \r\n 1997          216           24.62234      29.36611      12.80944      0 \r\n 1997          217           21.98286      25.84167      10.92389      0 \r\n 1997          218           22.08524      26.845        12.065        0 \r\n 1997          219           25.83486      28.04222      13.04056      0 \r\n 1997          220           23.62061      27.76056      13.22         0 \r\n 1997          221           15.41222      26.445        17.26833      0 \r\n 1997          222           5.442213      22.105        13.87833      9.779 \r\n 1997          223           3.459624      21.33667      14.37944      19.177 \r\n 1997          224           6.948243      22.98722      17.22722      0 \r\n 1997          225           22.55925      25.48222      14.46333      0 \r\n 1997          226           13.6816       28.41444      17.685        2.794 \r\n 1997          227           24.43272      32.25889      18.86         2.8448 \r\n 1997          228           21.41045      32.15333      18.31722      42.8752 \r\n 1997          229           12.61476      24.33889      15.33333      0 \r\n 1997          230           13.06621      22.4          15.14444      0 \r\n 1997          231           6.954896      23.02444      16.25333      0 \r\n 1997          232           21.90039      26.455        12.49278      0 \r\n 1997          233           24.47083      26.08111      11.035        0 \r\n 1997          234           22.21424      26.25389      10.98889      0 \r\n 1997          235           23.26664      28.23944      14.42778      0 \r\n 1997          236           22.45243      31.60389      15.14389      13.8176 \r\n 1997          237           7.282252      26.37556      18.52722      0 \r\n 1997          238           20.50336      31.05833      19.99667      0 \r\n 1997          239           10.82196      29.50056      18.96167      2.9718 \r\n 1997          240           19.19925      29.85222      19.10722      0 \r\n 1997          241           19.39928      30.49667      19.32222      0 \r\n 1997          242           18.01907      31.16111      19.18222      0 \r\n 1997          243           21.04841      30.50278      19.67278      0 \r\n 1997          244           19.09113      31.945        19.615        6.9596 \r\n 1997          245           10.32461      26.16611      14.10111      2.8702 \r\n 1997          246           21.07376      20.20444      7.224444      0 \r\n 1997          247           22.50733      21.48333      8.493333      0 \r\n 1997          248           20.09797      25.67111      11.16111      0 \r\n 1997          249           19.83982      30.51389      16.84222      0 \r\n 1997          250           9.729432      26.58         17.30111      0 \r\n 1997          251           18.56826      27.42945      16.14778      0 \r\n 1997          252           19.94994      25.16556      9.795555      0 \r\n 1997          253           17.29218      23.72445      6.307778      0 \r\n 1997          254           21.00891      23.24167      6.653889      0 \r\n 1997          255           19.75133      25.19722      8.406667      0 \r\n 1997          256           4.569054      21.21222      16.46944      0 \r\n 1997          257           14.55019      26.49389      12.88056      0 \r\n 1997          258           17.51937      26.76333      14.74889      0 \r\n 1997          259           14.42714      31.11111      12.28222      0.1524 \r\n 1997          260           20.20211      27.325        12.62611      0 \r\n 1997          261           15.25499      28.59278      18.8          0 \r\n 1997          262           6.812682      27.91556      9.384444      0 \r\n 1997          263           16.78633      17.75167      4.333889      0 \r\n 1997          264           16.06455      19.53333      5.146667      0 \r\n 1997          265           4.504829      17.20389      12.01778      0.3556 \r\n 1997          266           2.47789       15.88         8.642222      0.9398 \r\n 1997          267           19.28682      19.63         6.423333      0 \r\n 1997          268           18.68035      27.50556      7.547778      0 \r\n 1997          269           16.05936      26.77944      8.770555      0 \r\n 1997          270           10.42247      24.98944      9.155         0 \r\n 1997          271           17.99279      24.61722      10.41222      0 \r\n 1997          272           17.70033      26.92611      9.790556      0 \r\n 1997          273           17.66204      24.75333      5.824444      0 \r\n 1997          274           16.11296      24.54722      6.133333      0 \r\n 1997          275           16.28316      29.02611      13.41833      0 \r\n 1997          276           16.03978      32.53111      11.84444      0 \r\n 1997          277           16.56517      25.71889      15.51944      0 \r\n 1997          278           15.41256      24.92278      18.19         0 \r\n 1997          279           14.99876      26.29222      20.30556      0 \r\n 1997          280           12.58401      24.69111      18.96778      0 \r\n 1997          281           2.679936      18.56944      11.94111      0.7366 \r\n 1997          282           16.58203      18.15389      7.624444      0 \r\n 1997          283           14.05314      20.675        7.655         0 \r\n 1997          284           11.97862      23.46167      17.01         0 \r\n 1997          285           1.134408      17.78611      10.40722      3.4544 \r\n 1997          286           11.95754      11.76389      4.296111      0 \r\n 1997          287           15.93129      13.73         9.33          0 \r\n 1997          288           9.457095      14.33         9.54          0.0254 \r\n 1997          289           14.6253       16.72         11.45         0 \r\n 1997          290           14.4817       15.51         2.717222      0 \r\n 1997          291           14.02841      16.63         2.87          0 \r\n 1997          292           9.216474      15.38         5.062778      0 \r\n 1997          293           11.88076      10.77         7.777778E-02                0 \r\n 1997          294           13.98075      8.51         -0.7222222     0 \r\n 1997          295           7.74291       7.25         -4.265         0 \r\n 1997          296           6.842053      14.18         4.891111      0.0762 \r\n 1997          297           1.865311      9.17          7.24          0.2794 \r\n 1997          298           1.280597      7.68          4.637778      0.2286 \r\n 1997          299           2.908968      4.657222     -2.473889      0.6096 \r\n 1997          300           14.04552      2.057222     -7.99          0.5588 \r\n 1997          301           12.28912      10.97        -1.2           0 \r\n 1997          302           12.68191      14.28        -2.691111      0 \r\n 1997          303           2.971184      14.35         6.888889      0 \r\n 1997          304           6.046717      17.19         8.54          0 \r\n 1997          305           6.785318      10.03         4.435         0 \r\n 1997          306           3.183313      6.93         -1.727778      0.0254 \r\n 1997          307           3.626022     -8.888889E-03               -2.275         0 \r\n 1997          308           4.733527      2.297222     -2.887778      0 \r\n 1997          309           2.13974       3.517778     -1.492222      0 \r\n 1997          310           1.499336      4.377778      2.182222      0 \r\n 1997          311           2.474376      6.267778      3.132778      0 \r\n 1997          312           7.438441      8.65          0.9988889     0 \r\n 1997          313           5.798313      4.521111      0.3877778     7.5438 \r\n 1997          314           4.158185      0.3877778    -6.832222      0 \r\n 1997          315           7.784792      0.9488889    -7.48          0 \r\n 1997          316           7.021798      2.652222     -6.133889      0 \r\n 1997          317           1.786484      1.177222     -1.221111      0 \r\n 1997          318           4.172954      1.523889     -5.142778      0 \r\n 1997          319           6.331689     -1.322778     -8.85          0 \r\n 1997          320           10.58142      3.777778E-02               -9.21          0 \r\n 1997          321           10.36138      7.95         -7.79          0 \r\n 1997          322           10.2736       11.06        -6.21          0 \r\n 1997          323           9.897922      10.07        -8.67          0 \r\n 1997          324           6.148263      10.63        -0.7222222     0 \r\n 1997          325           2.748679     -0.7122222    -3.771111      0 \r\n 1997          326           7.361706      2.937222     -7.25          0 \r\n 1997          327           6.836865      6.107222     -7.73          0 \r\n 1997          328           8.292981      8.4          -6.626111      0 \r\n 1997          329           7.311707      15.78         1.56          0 \r\n 1997          330           9.65027       10.85        -0.3277778     0 \r\n 1997          331           2.393583      12.48         0.6611111     2.6416 \r\n 1997          332           1.726193      11.91         7.66          0 \r\n 1997          333           4.408304      8.96          4.532222      16.2306 \r\n 1997          334           7.090415      5.753889     -0.3922222     0 \r\n 1997          335           1.550005      2.002222      0.8022223     0 \r\n 1997          336           1.91146       4.292778      1.607222      0 \r\n 1997          337           2.910474      2.256111     -3.96          8.13 \r\n 1997          338           2.818886      0.2277778    -7.47          1.52 \r\n 1997          339           6.638418     -5.267778     -10.81         7.11 \r\n 1997          340           4.278182     -2.642778     -5.306111      0 \r\n 1997          341           4.523029     -2.917222     -5.97          0 \r\n 1997          342           3.679326     -0.5888889    -3.941111      1.02 \r\n 1997          343           3.702087     -1.502778     -2.86          3.3 \r\n 1997          344           3.71602      -0.42         -2.266111      2.79 \r\n 1997          345           4.677921     -0.7022222    -4.263889      0 \r\n 1997          346           6.02563      -4.245        -8.23          0 \r\n 1997          347           8.431178      2.83         -10.58         0 \r\n 1997          348           8.48988       3.765        -8.13          0 \r\n 1997          349           8.478583      6.287778     -2.558889      0 \r\n 1997          350           8.397748      6.251111     -2.322778      0 \r\n 1997          351           7.342125      4.182222     -8.14          0 \r\n 1997          352           7.205099      7.9          -1.342222      0 \r\n 1997          353           7.468942      7.89         -1.966111      0 \r\n 1997          354           8.609961      0.7638889    -6.247222      0 \r\n 1997          355           2.259569      0.3877778    -6.285         0 \r\n 1997          356           2.303836     -0.3072222    -1.078889      3.3 \r\n 1997          357           2.322664      0.9222222    -1.172222      0.76 \r\n 1997          358           1.251309      0.2277778    -3.685         0.25 \r\n 1997          359           3.51092      -1.606111     -5.027778      10.16 \r\n 1997          360           7.016233      1.365        -7.72          0.25 \r\n 1997          361           8.274153     -0.6627778    -13.21         0 \r\n 1997          362           3.97229       1.187778     -4.053889      0 \r\n 1997          363           7.073973     -2.463889     -5.4           0 \r\n 1997          364           4.155925      3.862778     -5.747778      1.27 \r\n 1997          365           8.951459     -0.8888889    -10.83         0.25 \r\n 1998          1             8.45009       6.415        -0.88          0 \r\n 1998          2             4.907121      13.94         3.331111      0 \r\n 1998          3             1.351181      13.24        -4.998889      0 \r\n 1998          4             1.555109     -0.1838889    -5.148889      0.76 \r\n 1998          5             1.759037      2.372778     -0.8988889     6.86 \r\n 1998          6             1.682512      2.005        -0.58          6.1 \r\n 1998          7             4.202033      0.3411111    -1.615         0 \r\n 1998          8             6.721554      2.372222     -3.153889      0 \r\n 1998          9             3.515899     -1.427222     -13.34         0 \r\n 1998          10            9.112543     -5.67         -15.51         0.25 \r\n 1998          11            2.41831      -7.74         -12.31         0 \r\n 1998          12            3.206409     -5.513889     -15.59         0 \r\n 1998          13            9.612823     -7.66         -18.85         0 \r\n 1998          14            3.12867      -6.221111     -10.22         1.27 \r\n 1998          15            8.178758     -5.256111     -10.27         1.27 \r\n 1998          16            2.672028     -3.255        -8.94          0 \r\n 1998          17            4.576585     -0.9838889    -12.47         1.52 \r\n 1998          18            9.672906     -6.238889     -13.68         0 \r\n 1998          19            7.9878       -0.535        -7.72          0 \r\n 1998          20            4.263329     -2.077222     -5.602222      0 \r\n 1998          21            2.21639      -1.69         -2.698889      4.32 \r\n 1998          22            2.978338     -1.455        -3.855         0.25 \r\n 1998          23            6.102741     -0.4288889    -7.56          0 \r\n 1998          24            7.370492     -1.088889     -9.088889      0.25 \r\n 1998          25            9.918256      5.466111     -4.531111      0 \r\n 1998          26            8.729833      6.578889     -6.036111      0 \r\n 1998          27            10.78987      10.87778     -6.736111      0 \r\n 1998          28            10.72267      11.9          7.777778E-02                0 \r\n 1998          29            11.11258      7.54         -1.906111      0 \r\n 1998          30            10.18812      9.6          -6.772778      0 \r\n 1998          31            10.31394      14.2         -1.21          0 \r\n 1998          32            2.850308      5.882222     -2.122778      2.54 \r\n 1998          33            3.126117     -0.5061111    -2.888889      5.08 \r\n 1998          34            10.02821     -1.087778     -6.744444      0 \r\n 1998          35            4.391317     -0.4661111    -3.617778      0 \r\n 1998          36            6.983012      0.5277778    -4.875         0 \r\n 1998          37            8.340385      5.595        -5.277222      0 \r\n 1998          38            10.90233      7.39         -6.733333      0 \r\n 1998          39            11.90674      9.64         -4.407222      0 \r\n 1998          40            8.020937      9.3          -3.588889      0 \r\n 1998          41            1.857947      4.896111      0.6722222     5.08 \r\n 1998          42            2.452368      0.6988889    -1.841111      8.64 \r\n 1998          43            10.37557      2.691111     -4.387778      3.56 \r\n 1998          44            8.722929      8.51         -2.001111      0 \r\n 1998          45            5.977723      6.863889     -2.265         0 \r\n 1998          46            8.478876      11.41         3.031111      0 \r\n 1998          47            3.44339       7.76          3.183889      0 \r\n 1998          48            1.50511       6.177778      3.005         3.3 \r\n 1998          49            2.547972      4.098889      1.77          2.54 \r\n 1998          50            2.016646      3.656111      2.345         2.54 \r\n 1998          51            2.831313      5.207222      1.79          0.25 \r\n 1998          52            5.397402      7.25          1.827778      0 \r\n 1998          53            6.011948      10.08         3.853889      2.29 \r\n 1998          54            8.593183      13.79         5.692778      1.27 \r\n 1998          55            13.52557      15.51         2.927222      0 \r\n 1998          56            3.463724      14.66         7.32          0 \r\n 1998          57            2.544751      11.64         3.882222      0.51 \r\n 1998          58            4.355293      4.051111     -1.005         8.89 \r\n 1998          59            4.98783      -0.89         -2.85          0.25 \r\n 1998          60            4.225254     -1.162778     -3.997778      1.27 \r\n 1998          61            6.88155       2.351111     -3.503889      1.27 \r\n 1998          62            5.936761      0.1622222    -3.286111      0 \r\n 1998          63            8.431388      1.178889     -5.19          0.51 \r\n 1998          64            4.669553      0.4172222    -2.982222      0 \r\n 1998          65            11.55583      4.458889     -4.025         0 \r\n 1998          66            2.565378      0.9711111    -1.155         0 \r\n 1998          67            4.644156      0.4722222    -3.276111      27.69 \r\n 1998          68            19.31631     -3.257222     -14.09         16 \r\n 1998          69            19.56279     -8.57         -17.24         0 \r\n 1998          70            20.10207     -11.43        -17.24         1.27 \r\n 1998          71            17.6666      -6.431111     -17.24         0 \r\n 1998          72            18.92089      3.957222     -9.08          0 \r\n 1998          73            18.8039      -2.992222     -11.16         0 \r\n 1998          74            5.376817     -1.483889     -6.917778      0 \r\n 1998          75            9.981936      1.842222     -2.445         0 \r\n 1998          76            2.963653      1.487222     -0.2611111     3.3 \r\n 1998          77            3.896266      1.892222      0.2838889     18.54 \r\n 1998          78            4.021326      1.185        -0.3538889     0.51 \r\n 1998          79            12.91814      3.182778     -1.935         0 \r\n 1998          80            19.86471      8.15         -3.995         0 \r\n 1998          81            13.67373      8.21         -1.257778      0 \r\n 1998          82            10.58803      4.478889     -1.323889      0 \r\n 1998          83            7.596303      6.587222     -3.922222      0 \r\n 1998          84            14.57588      21.36         16.24         0 \r\n 1998          85            17.29385      23.42         13.44         0 \r\n 1998          86            5.613338      21.14         9.47          0 \r\n 1998          87            9.784576      16.57         7.38          5.08 \r\n 1998          88            17.48732      24.41         10.09         0 \r\n 1998          89            2.55952       19.32         8.28          19.05 \r\n 1998          90            6.337086      11.15         2.286111      34.29 \r\n 1998          91            5.327487      5.518889      1.235         0 \r\n 1998          92            16.22944      8.52          6.888889E-02                0 \r\n 1998          93            3.243018      6.586111      3.342778      0 \r\n 1998          94            18.35287      13.15         1.517222      0 \r\n 1998          95            18.78411      13.79         0.4072222     0 \r\n 1998          96            18.86503      21.05         6.473889      15.3924 \r\n 1998          97            7.185016      16.4          9.98          18.4912 \r\n 1998          98            3.313393      10.49         5.748889      4.5974 \r\n 1998          99            5.932828      8.22          4.363889      0 \r\n 1998          100           23.38781      15.75         1.912222      0 \r\n 1998          101           20.34842      21.15         3.862778      0 \r\n 1998          102           15.18466      21.81         11.6          6.6294 \r\n 1998          103           4.758672      15.96         11.06         8.636 \r\n 1998          104           20.20516      19.05         6.541111      7.2644 \r\n 1998          105           12.96504      18.56         7.11          0 \r\n 1998          106           5.805007      8.98          3.476111      0 \r\n 1998          107           24.55175      14.18         0.8022223     0 \r\n 1998          108           24.118        16.65         3.2           2.794 \r\n 1998          109           16.92323      15.7          4.097778      5.8928 \r\n 1998          110           14.12903      12.99         5.947222      0 \r\n 1998          111           14.33543      14.73         5.926111      0 \r\n 1998          112           24.0803       19.02         4.097222      0 \r\n 1998          113           23.9221       20.69         10.86         0 \r\n 1998          114           22.82774      23.13         7.42          0 \r\n 1998          115           18.94745      25.81         12.22         4.9276 \r\n 1998          116           4.929673      14.55         7.21          0 \r\n 1998          117           15.54473      12.45         4.458889      0 \r\n 1998          118           7.12008       10.89         4.21          8.636 \r\n 1998          119           3.341133      10.48         6.88          2.286 \r\n 1998          120           8.650252      14.21         7.93          6.096 \r\n 1998          121           21.01807      23.48         9.23          0 \r\n 1998          122           19.53886      14.38         8.91          2.54 \r\n 1998          123           21.42007      21.95         8.92          2.032 \r\n 1998          124           25.47131      24.31         7.1           0 \r\n 1998          125           8.906397      19.72611      11.79         2.794 \r\n 1998          126           5.69501       18.56         13.43         70.612 \r\n 1998          127           14.31468      20.2          12.46         13.462 \r\n 1998          128           17.22611      19.35         8.94          0 \r\n 1998          129           18.44048      22.29         11.1          0.254 \r\n 1998          130           25.51621      23.4          10.78         0.254 \r\n 1998          131           25.24592      23.75         10.8          0 \r\n 1998          132           22.47766      25.2          13.02         6.35 \r\n 1998          133           22.45201      23.47         10.94         0 \r\n 1998          134           22.30168      27.45         17.02         0 \r\n 1998          135           12.56472      27.71         15.65         0 \r\n 1998          136           26.75718      28.06         12.98         0 \r\n 1998          137           21.32815      27.78         14.34         0 \r\n 1998          138           24.00909      29.53         18.07         0 \r\n 1998          139           19.23874      32            17.85         17.78 \r\n 1998          140           17.90016      24.84         16.33         22.098 \r\n 1998          141           12.38514      21.43         15.29         21.844 \r\n 1998          142           9.323918      17.18         13.51         12.954 \r\n 1998          143           5.422046      16.9          13.66         35.56 \r\n 1998          144           16.09986      22.19         13.41         0 \r\n 1998          145           10.94149      20.14         13.42         0 \r\n 1998          146           16.66964      22.98         12.87         0 \r\n 1998          147           24.59581      26.6          14.55         0 \r\n 1998          148           25.46592      30.49         18.67         0 \r\n 1998          149           21.85056      27.19         17.45         5.588 \r\n 1998          150           20.23416      29.61         18.02         0 \r\n 1998          151           25.07028      26.34         14.64         0 \r\n 1998          152           16.3904       23.21         8.64          0 \r\n 1998          153           27.18755      24.33         14.81         0 \r\n 1998          154           16.28024      15.61         5.375         5.08 \r\n 1998          155           11.86988      16.34         9.1           0.508 \r\n 1998          156           13.37708      16.51         9.2           0.254 \r\n 1998          157           21.49011      19.66         6.523889      1.524 \r\n 1998          158           14.55697      20.41         8.59          0.254 \r\n 1998          159           2.442661      16.37         13.44         26.416 \r\n 1998          160           9.462953      20.08         14.33         0 \r\n 1998          161           18.77896      24            11.37         0 \r\n 1998          162           12.1264       24.16         17.94         10.668 \r\n 1998          163           15.92782      25.73         16.91         0.762 \r\n 1998          164           27.07621      25.95         13.79         7.112 \r\n 1998          165           6.227758      21.6          15.88         29.718 \r\n 1998          166           14.07778      22.85         15.71         0.254 \r\n 1998          167           24.88635      25.43         15.71         0 \r\n 1998          168           15.44787      28.91         14.7          0.762 \r\n 1998          169           10.4577       26.13         16.3          17.526 \r\n 1998          170           27.71716      28.98         15.26         0 \r\n 1998          171           22.69397      28.71         19.88         1.524 \r\n 1998          172           24.31875      27.96         17.7          0 \r\n 1998          173           15.10286      25.82         18.28         0 \r\n 1998          174           15.99932      27.71         16.45         0.508 \r\n 1998          175           18.48746      31.02         20.85         9.652 \r\n 1998          176           22.72029      31.67         21.37         0 \r\n 1998          177           25.81076      32.36         22.86         0 \r\n 1998          178           25.23065      32.79         23.73         4.318 \r\n 1998          179           20.8144       30.03         21.92         4.826 \r\n 1998          180           16.89194      30.04         19.53         9.144 \r\n 1998          181           22.74046      26.92         16.87         0 \r\n 1998          182           25.47759      28.08         17.4          0 \r\n 1998          183           23.81252      28.68         16.86         0 \r\n 1998          184           17.67255      29.44         19.77         7.112 \r\n 1998          185           18.52056      28.81         20.98         4.064 \r\n 1998          186           4.390397      22.57         20.12         11.684 \r\n 1998          187           13.88347      31.28         19.92         39.116 \r\n 1998          188           21.02581      30.33         19.68         9.652 \r\n 1998          189           26.0582       29.47         20.27         0 \r\n 1998          190           17.33477      29.56         20.75         0 \r\n 1998          191           11.71261      27.22         20.72         0 \r\n 1998          192           24.29866      27.67         19.52         0 \r\n 1998          193           22.45009      27.99         19            0 \r\n 1998          194           25.53211      30.3          18.4          0 \r\n 1998          195           25.26893      29.68         18.91         0 \r\n 1998          196           24.29377      29.9          20.21         0 \r\n 1998          197           24.81409      31.07         19.52         0 \r\n 1998          198           16.92813      30.03         18.31         3.302 \r\n 1998          199           21.92554      32.12         22.02         0.762 \r\n 1998          200           21.90818      33.69         22.47         0.254 \r\n 1998          201           24.94689      34.8          24.01         0 \r\n 1998          202           22.81795      33.84         23.88         0 \r\n 1998          203           12.41246      27.36         20.44         1.524 \r\n 1998          204           19.65756      26.62         17.8          0 \r\n 1998          205           21.402        27.63         17.57         0 \r\n 1998          206           13.08881      25.28         16.28         0 \r\n 1998          207           21.5604       25.35         17.24         0.508 \r\n 1998          208           24.22038      29.82         13.54         0 \r\n 1998          209           24.11988      31.26         18.52         0 \r\n 1998          210           23.90068      28.66         17.9          0 \r\n 1998          211           17.13511      26.83         17.84         0 \r\n 1998          212           19.77241      26.95         15.22         0 \r\n 1998          213           23.25823      26.77         15.13         0 \r\n 1998          214           10.87003      24.33         17.24         1.016 \r\n 1998          215           19.65501      29.49         17.97         0 \r\n 1998          216           18.38395      29.12         18.04         3.81 \r\n 1998          217           13.01714      25.72         19.51         0 \r\n 1998          218           4.138562      20.97         17            5.334 \r\n 1998          219           13.76017      24.99         17.39         0.254 \r\n 1998          220           24.15821      29.77         15.96         0 \r\n 1998          221           23.03091      31.94         17.75         0 \r\n 1998          222           19.1836       29.37         18            2.032 \r\n 1998          223           23.20668      28.54         15.95         0 \r\n 1998          224           19.86584      27.95         16.91         0 \r\n 1998          225           11.1768       25.78         17.33         26.67 \r\n 1998          226           22.43524      29.58         15.78         0 \r\n 1998          227           20.7959       29.75         18.55         2.032 \r\n 1998          228           21.6309       30.25         18.47         0 \r\n 1998          229           19.02272      32.46         22.1          0 \r\n 1998          230           18.5537       31.04         21.62         0 \r\n 1998          231           17.27473      33.12         23.45         0 \r\n 1998          232           16.87717      33.21         21.82         30.988 \r\n 1998          233           13.47641      28.31         19.41         0 \r\n 1998          234           22.32988      31.92         18.8          0 \r\n 1998          235           20.57398      32.96         22.05         0 \r\n 1998          236           16.27099      34.19         21.29         0 \r\n 1998          237           20.90377      27.99         18.34         0 \r\n 1998          238           13.86021      27.47         15.48         0 \r\n 1998          239           5.402883      26.04         19.9          25.4 \r\n 1998          240           11.46391      27.88         19.42         4.318 \r\n 1998          241           20.97556      31.52         16.18         0 \r\n 1998          242           20.64779      29.81         17.37         0 \r\n 1998          243           17.20503      26.72         17.41         21.59 \r\n 1998          244           18.81587      26.35         15.17         0 \r\n 1998          245           19.56426      28.12         15.27         0 \r\n 1998          246           20.24462      32.2          17.46         0 \r\n 1998          247           20.75883      29.31         17.56         0 \r\n 1998          248           19.82605      32.16         16.58         0 \r\n 1998          249           18.04823      32.46         20.37         0 \r\n 1998          250           19.63083      26.03         14.24         0 \r\n 1998          251           21.22489      22.32         10.44         0 \r\n 1998          252           20.68607      23.76         9.61          0 \r\n 1998          253           19.96258      26.64         12.68         0 \r\n 1998          254           20.36541      30.65         9.98          0 \r\n 1998          255           18.23312      32.91         15.33         0 \r\n 1998          256           10.93401      28.73         18.05         14.732 \r\n 1998          257           5.232971      23.05         18.24         24.892 \r\n 1998          258           14.17661      26.86         17.86         0 \r\n 1998          259           7.341247      23.68         17.42         0 \r\n 1998          260           14.54245      26.7          17.72         0 \r\n 1998          261           15.43268      27.71         15.55         0 \r\n 1998          262           17.96191      29.78         17.42         0 \r\n 1998          263           8.677909      24.53         18.27         9.398 \r\n 1998          264           6.837995      18.87         11.17         1.016 \r\n 1998          265           16.79713      18.62         8.48          0.508 \r\n 1998          266           17.9935       21.22         6.633889      0.254 \r\n 1998          267           12.56941      23.94         14.63         0 \r\n 1998          268           14.12431      29.42         16.28         0 \r\n 1998          269           15.22194      30.22         22.28         0 \r\n 1998          270           15.27733      26.83         16.39         0 \r\n 1998          271           14.8655       26.22         15.36         0 \r\n 1998          272           13.55332      29.09         18.32         0 \r\n 1998          273           13.20943      28.54         10.33         0 \r\n 1998          274           16.6096       16.31         4.077222      0 \r\n 1998          275           2.20978       10.33         6.907222      0.508 \r\n 1998          276           1.877319      10.76         7.29          0.508 \r\n 1998          277           1.91849       15.37         10.62         0.508 \r\n 1998          278           2.847296      18.68         11.45         0.762 \r\n 1998          279           12.78279      16.16         8.03          0.254 \r\n 1998          280           7.430156      14.19         4.776111      0.254 \r\n 1998          281           16.70604      16.9          1.75          0 \r\n 1998          282           15.98962      17.73         3.917778      0.254 \r\n 1998          283           15.86092      20.85         6.167222      0 \r\n 1998          284           14.0123       21.17         8.38          0.254 \r\n 1998          285           15.87238      17.96         6.086111      0 \r\n 1998          286           15.32808      18.34         3.502778      0.254 \r\n 1998          287           8.119596      20            4.883889      0 \r\n 1998          288           8.700711      22.9          13.14         0.254 \r\n 1998          289           10.31222      25.22         15.45         0.254 \r\n 1998          290           10.81054      20.64         9.55          0.254 \r\n 1998          291           11.30885      15.07         5.102222      0.254 \r\n 1998          292           14.33848      17.32         4.647222      0.508 \r\n 1998          293           6.868664      15.67         2.352222      0 \r\n 1998          294           13.87657      16.07         4.211111      0.254 \r\n 1998          295           14.06811      16.75         0.6311111     0.254 \r\n 1998          296           14.09585      16.94         2.852222      0 \r\n 1998          297           7.894078      17.1          4.892778      0 \r\n 1998          298           12.4743       20.96         10.14         0.254 \r\n 1998          299           8.014075      21.49         9.07          0.254 \r\n 1998          300           4.806202      21.52         12.69         0 \r\n 1998          301           7.265348      20.91         11.61         0.254 \r\n 1998          302           8.976019      23.07         12.64         0.254 \r\n 1998          303           12.7704       14.54         5.12          0 \r\n 1998          304           2.835497      9.49          4.617222      0 \r\n 1998          305           1.968488      11.16         7.41          0.254 \r\n 1998          306           1.122818      9.04          3.198889      0.254 \r\n 1998          307           4.045426      4.77          1.271111      0 \r\n 1998          308           7.734124      5.583889     -0.5522223     0 \r\n 1998          309           3.644306      0.97         -3.122222      0 \r\n 1998          310           10.71778      5.453889     -4.576111      0 \r\n 1998          311           2.412536      1.111111     -2.508889      13.5128 \r\n 1998          312           4.22743       3.512778     -7.388889E-02                0 \r\n 1998          313           1.047297      11.71         3.012778      16.3322 \r\n 1998          314           2.02129       2.65          0.8011111     0 \r\n 1998          315           11.00296      9.76         -1.51          0 \r\n 1998          316           3.431131      7.58         -9.222222E-02                0 \r\n 1998          317           9.364001      13.1         -0.4277778     0 \r\n 1998          318           9.231871      16.58         1.797222      0 \r\n 1998          319           7.797763      9.05          0.4338889     0 \r\n 1998          320           5.951322      8.6          -0.8622222     0 \r\n 1998          321           8.665148      14.81        -2.376111      0 \r\n 1998          322           3.23532       16.64         2.881111      0 \r\n 1998          323           9.923904      5.996111     -2.407222      0 \r\n 1998          324           10.15762      4.652222     -5.451111      0 \r\n 1998          325           8.831922      13.37        -5.612778      0 \r\n 1998          326           8.245828      16.05         5.538889      0 \r\n 1998          327           6.7185        14.18         0.6588889     0 \r\n 1998          328           8.041648      14.09        -2.332222      0 \r\n 1998          329           9.158484      16.27         0.8377778     0 \r\n 1998          330           9.438769      18.54         0.7622222     0 \r\n 1998          331           9.139781      20.29         1.616111      0 \r\n 1998          332           2.144635      17.37         7.75          0 \r\n 1998          333           4.497549      20.92         14.12         4.953 \r\n 1998          334           8.49808       15.5          2.071111      0 \r\n 1998          335           8.644311      16.63         1.177778      0 \r\n 1998          336           4.256383      15.35         9.06          0 \r\n 1998          337           3.734555      18.27         12.12         0.25 \r\n 1998          338           6.224453      19.93         11.06         0 \r\n 1998          339           2.470945      13.69         5.545         0 \r\n 1998          340           5.323261      5.536111     -2.482778      0.25 \r\n 1998          341           8.175578     -0.2272222    -7.55          11.68 \r\n 1998          342           8.940831      3.775        -8.24          0 \r\n 1998          343           8.912506      7.43         -3.107222      0 \r\n 1998          344           8.593769      6.652778     -3.093889      0 \r\n 1998          345           8.580004      8.64         -4.425         0 \r\n 1998          346           8.619709      10.4         -4.615         0 \r\n 1998          347           4.464705      8.93         -2.262222      0 \r\n 1998          348           8.792927      12.33        -3.037778      0 \r\n 1998          349           8.11378       9.27         -1.247778      0 \r\n 1998          350           7.962738      7.41         -0.5611111     0 \r\n 1998          351           8.077421      5.67         -6.733889      0 \r\n 1998          352           7.868556      9.68         -2.556111      0 \r\n 1998          353           6.186044     -2.537778     -8.81          0 \r\n 1998          354           1.850667     -6.366111     -10.76         0 \r\n 1998          355           4.847624     -10.61        -16.23         0.25 \r\n 1998          356           8.938698     -9.05         -18.53         0 \r\n 1998          357           6.784565     -4.142778     -14.14         0 \r\n 1998          358           8.499294     -1.176111     -15.87         0 \r\n 1998          359           6.68235       1.022778     -10.07         0 \r\n 1998          360           3.636607      1.063889     -10.85         0 \r\n 1998          361           6.391437      4.502778     -7.32          0 \r\n 1998          362           3.305904      3.398889     -8.45          0 \r\n 1998          363           8.572932      3.538889     -17.09         0 \r\n 1998          364           2.759976     -13.18        -18.77         0 \r\n 1998          365           7.823494     -11.53        -22.43         3.81 \r\n 1999          1             3.235404     -9.77         -17.4          0 \r\n 1999          2             5.219205     -8.09         -10.54         6.35 \r\n 1999          3             9.663869     -10.34        -20.04         1.52 \r\n 1999          4             10.14432     -19.47        -28.07         0 \r\n 1999          5             4.547757     -4.15         -28.99         0 \r\n 1999          6             4.417258      1.393889     -17.85         0 \r\n 1999          7             5.325814     -14.01        -18.42         0 \r\n 1999          8             5.408406     -11.32        -18.12         1.27 \r\n 1999          9             9.535545     -12.47        -24.89         0 \r\n 1999          10            10.16473     -7.65         -12.89         0 \r\n 1999          11            8.229008      4.518889     -12.64         0.76 \r\n 1999          12            5.251213      0.84         -11.99         0 \r\n 1999          13            6.650259     -7.153333     -11.47056      0 \r\n 1999          14            6.81038      -2.466667     -11.19222      0 \r\n 1999          15            6.111945      3.712778     -6.231667      0 \r\n 1999          16            9.388561      7.456666     -5.197222      0 \r\n 1999          17            3.166535      2.897778     -2.938889      0 \r\n 1999          18            8.574187      1.949444     -8.413889      0 \r\n 1999          19            8.210765      3.079444     -9.169444      0 \r\n 1999          20            5.678566      3.551111     -7.705         0 \r\n 1999          21            4.245212      3.471111     -1.05          0 \r\n 1999          22            1.141981      1.112222     -0.345         7.62 \r\n 1999          23            1.783974     -0.11         -1.332778      0 \r\n 1999          24            2.777465      1.665        -4.16          0 \r\n 1999          25            9.636756     -1.337222     -7.93          0 \r\n 1999          26            5.117241      8.72         -4.693889      0 \r\n 1999          27            4.953354      9.51         -1.73          0 \r\n 1999          28            10.10373      1.897222     -5.21          0 \r\n 1999          29            9.461363      3.02         -7.36          0 \r\n 1999          30            6.009688      3.368889     -5.037778      0 \r\n 1999          31            2.788803      2.132778     -0.2822222     0 \r\n 1999          32            2.400821      3.135        -0.1011111     0.51 \r\n 1999          33            12.44326      7.79         -1.662222      1.52 \r\n 1999          34            8.367122      12.7          1.26          0 \r\n 1999          35            12.5912       4.577222     -4.826111      1.02 \r\n 1999          36            7.093135      15.95        -0.2627778     0 \r\n 1999          37            7.161795      7.15         -2.057778      0 \r\n 1999          38            8.87121       9.14          0.1438889     0 \r\n 1999          39            10.00524      14.12         4.92          0 \r\n 1999          40            11.41475      13.4          0.1061111     0 \r\n 1999          41            7.430993      19.06         2.475         0 \r\n 1999          42            1.490843      16.83         6.835556      0.25 \r\n 1999          43            9.353249     -0.2677778    -2.527778      10.16 \r\n 1999          44            14.03531      5.03         -7.933333      0 \r\n 1999          45            14.22836      14.10278     -6.736667      0 \r\n 1999          46            13.45261      15.81667      1.837222      0 \r\n 1999          47            3.72422       3.29         -5.056111      0 \r\n 1999          48            9.930849      3.535556     -7.971111      0 \r\n 1999          49            3.076705      3.386111     -6.404444      0 \r\n 1999          50            6.181567      1.415        -2.952222      6.6 \r\n 1999          51            9.22572       1.950556     -2.550555      0.25 \r\n 1999          52            16.23848      1.582222     -9.196111      0 \r\n 1999          53            4.697461     -1.528889     -3.867222      0 \r\n 1999          54            7.692995     -1.230556     -3.84          7.62 \r\n 1999          55            10.28846      2.723333     -5.619444      0 \r\n 1999          56            15.86928      7.827778     -5.651667      0 \r\n 1999          57            3.703384      8.538889     -0.8105556     0 \r\n 1999          58            9.220783      9.940556     -0.1861111     0.51 \r\n 1999          59            13.00513      6.370555     -3.698889      0.76 \r\n 1999          60            16.63052      15.62        -2.98          0 \r\n 1999          61            3.486736      9.22         -2.765         0.25 \r\n 1999          62            17.96459      2.191111     -6.733889      1.78 \r\n 1999          63            12.98542      7.83         -3.673889      0 \r\n 1999          64            2.928256      3.012222     -2.776111      0 \r\n 1999          65            11.57863     -2.191111     -5.605         8.13 \r\n 1999          66            19.24807     -1.577778     -11.48         0 \r\n 1999          67            5.321127     -0.2127778    -3.761111      3.3 \r\n 1999          68            13.48532     -0.825        -2.861111      9.4 \r\n 1999          69            12.49142     -0.365        -3.988889      0 \r\n 1999          70            17.94451      1.336111     -6.327222      0 \r\n 1999          71            17.05135      0.9322222    -8.27          0 \r\n 1999          72            15.47812      2.183889     -3.495         0 \r\n 1999          73            20.48064      4.361111     -6.318889      0 \r\n 1999          74            19.73459      9.59         -5.507778      0 \r\n 1999          75            18.97406      20            1.823889      0 \r\n 1999          76            19.59028      12.75         2.096111      0 \r\n 1999          77            20.10554      9.75         -0.355         0 \r\n 1999          78            19.87659      11.86        -3.4           0 \r\n 1999          79            19.58342      16.85        -0.3638889     0 \r\n 1999          80            20.58227      10.66        -2.03          0 \r\n 1999          81            7.18489       5.91         -2.2           0 \r\n 1999          82            20.94473      13.02        -3.665         0 \r\n 1999          83            21.08146      9.08         -1.727778      0 \r\n 1999          84            21.40037      8.74         -4.673889      0 \r\n 1999          85            21.14146      11.31        -4.452778      0 \r\n 1999          86            20.11713      15.78        -0.3272222     0 \r\n 1999          87            19.2997       14.79         1.242222      5.08 \r\n 1999          88            21.12217      18.63         1.571111      0 \r\n 1999          89            21.17317      21.25         5.083889      0 \r\n 1999          90            6.291188      16.75         9.52          0 \r\n 1999          91            11.27529      23.45         11.67         0 \r\n 1999          92            13.76515      21.83         6.127222      2.5908 \r\n 1999          93            12.93722      22.69         7.82          5.842 \r\n 1999          94            23.22015      15.91         2.42          0 \r\n 1999          95            4.747375      18.5          5.897778      8.4836 \r\n 1999          96            22.87811      16.31         4.382222      4.2164 \r\n 1999          97            22.34323      24.62         6.49          0 \r\n 1999          98            6.250896      20.84         10.49         22.8092 \r\n 1999          99            3.030471      12.39         6.375         0 \r\n 1999          100           12.22469      18.95         6.471111      0 \r\n 1999          101           9.374963      11.59         2.391111      0 \r\n 1999          102           23.32877      17.59         0.745         0 \r\n 1999          103           10.95116      17.36         8             0 \r\n 1999          104           4.128185      11.83         8.19          23.3172 \r\n 1999          105           3.358957      8.48          1.742222      24.2316 \r\n 1999          106           5.963204      4.916667     -0.555         4.8006 \r\n 1999          107           13.92063      8.84          0.9588889     0 \r\n 1999          108           22.29097      13.68        -9.277778E-02                0 \r\n 1999          109           24.94518      17.94         3.48          0 \r\n 1999          110           14.01669      19.28         5.898889      1.016 \r\n 1999          111           11.1894       18.75         6.196111      2.032 \r\n 1999          112           2.466426      12.78         7.16          16.764 \r\n 1999          113           5.284685      10.35         4.598889      0 \r\n 1999          114           23.16036      15.52         5.412778      0 \r\n 1999          115           14.84943      14.71         5.652778      0 \r\n 1999          116           4.952517      14.2          8.85          11.43 \r\n 1999          117           13.65063      19.48         9.75          32.004 \r\n 1999          118           7.9637        12.68         8.28          0.762 \r\n 1999          119           26.55593      18.61         7.95          0 \r\n 1999          120           26.91542      19.64         5.083889      0 \r\n 1999          121           26.78304      20.9          5.351111      0 \r\n 1999          122           21.89027      22.43         9.4           0 \r\n 1999          123           20.28361      23.14         12.67         0 \r\n 1999          124           8.107923      19.42         14.4          8.128 \r\n 1999          125           8.076961      16.89         8.94          0.254 \r\n 1999          126           5.841659      11.6          8.51          2.54 \r\n 1999          127           7.179158      12.7          8.49          3.048 \r\n 1999          128           7.097821      12.77         6.318889      0 \r\n 1999          129           24.90057      21.39         4.031111      0 \r\n 1999          130           20.66469      27.41         13.8          0 \r\n 1999          131           16.43233      24.12         10.2          26.924 \r\n 1999          132           5.382298      12.35         10.08         18.796 \r\n 1999          133           10.01708      14.31         9.06          0 \r\n 1999          134           16.68203      19.4          8.32          0 \r\n 1999          135           11.31835      20.45         12.97         5.334 \r\n 1999          136           15.23189      25.5          16.26         24.638 \r\n 1999          137           11.25387      20.17         12.83         11.176 \r\n 1999          138           26.95086      20.78         9.89          0.762 \r\n 1999          139           26.88341      23.5          9.57          0 \r\n 1999          140           18.88289      24.41         15.08         0 \r\n 1999          141           9.98453       20.77         15.25         1.778 \r\n 1999          142           27.2111       24.89         10.73         1.016 \r\n 1999          143           21.60187      18.28         11.07         0 \r\n 1999          144           21.71165      18.96         10.18         0 \r\n 1999          145           28.10351      21.11         8.48          0 \r\n 1999          146           28.53613      23.14         6.92          0 \r\n 1999          147           27.3701       26.73         8.61          0 \r\n 1999          148           27.5834       26.87         12.48         0 \r\n 1999          149           25.27584      26.55         11.78         0 \r\n 1999          150           20.81235      26.97         15.32         23.368 \r\n 1999          151           14.83881      20.83         14.19         0.254 \r\n 1999          152           17.87037      23.44         13.82         17.018 \r\n 1999          153           20.81783      23.03         12.37         0 \r\n 1999          154           19.211        23.21         12.49         0 \r\n 1999          155           13.52829      26.87         17.84         12.446 \r\n 1999          156           19.33288      30.42         22.42         0 \r\n 1999          157           13.79356      27.13         20.12         1.016 \r\n 1999          158           28.30518      30.64         18.31         0 \r\n 1999          159           22.80121      30.53         20.61         0 \r\n 1999          160           25.59767      30.55         18.81         0 \r\n 1999          161           15.44088      27.07         17.54         44.196 \r\n 1999          162           16.88742      26.83         17.6          0 \r\n 1999          163           19.92772      27.64         16.75         25.908 \r\n 1999          164           14.56513      23.49         15.07         0 \r\n 1999          165           28.88479      22.39         11.93         0 \r\n 1999          166           14.02895      17.24         9.46          0 \r\n 1999          167           15.93845      19.13         8.62          0 \r\n 1999          168           23.63119      21.45         7.56          0 \r\n 1999          169           22.50205      22.21         10.61         0 \r\n 1999          170           17.98388      23.74         14.49         0 \r\n 1999          171           22.12018      26.08         15.28         0 \r\n 1999          172           18.3063       28.03         17.29         0 \r\n 1999          173           12.794        26.47         19.06         0.762 \r\n 1999          174           15.87732      26.14         18.31         21.336 \r\n 1999          175           28.07899      30.72         16.6          0 \r\n 1999          176           27.88255      30.43         18.41         0 \r\n 1999          177           24.22804      29.9          19.58         0 \r\n 1999          178           11.8708       26.03         19.98         0.508 \r\n 1999          179           10.47301      26.36         14.77         3.81 \r\n 1999          180           14.90219      20.39         11.81         2.032 \r\n 1999          181           19.79388      25.04         13.34         8.128 \r\n 1999          182           21.32284      26            13.61         0 \r\n 1999          183           15.95317      29.42         18.21         0 \r\n 1999          184           22.44469      32.2          23.5          0 \r\n 1999          185           26.93559      31.37         22.57         0 \r\n 1999          186           26.46372      31.78         22.83         1.778 \r\n 1999          187           27.45662      27.89         17.08         0.254 \r\n 1999          188           26.42778      29.53         15.55         0 \r\n 1999          189           25.12509      32.7          18.12         0 \r\n 1999          190           19.82199      28.05         17.09         67.056 \r\n 1999          191           18.12425      23.45         14.94         0 \r\n 1999          192           25.25023      25.04         12.34         0 \r\n 1999          193           26.59083      25.82         13.55         0 \r\n 1999          194           25.85524      27.4          14.5          0 \r\n 1999          195           26.54405      29.68         15.9          0 \r\n 1999          196           26.35372      32.16         19.95         0 \r\n 1999          197           12.96295      27.33         21.46         2.286 \r\n 1999          198           20.7382       30.09         18.6          0.254 \r\n 1999          199           23.89424      32.07         21.77         0 \r\n 1999          200           18.55851      33.22         22.41         0.254 \r\n 1999          201           24.61129      33.44         21.57         0 \r\n 1999          202           24.77296      33.62         22.89         0 \r\n 1999          203           24.6864       33.24         23.06         0 \r\n 1999          204           21.15426      33.07         22.78         0 \r\n 1999          205           25.04584      35.63         20.8          0 \r\n 1999          206           24.53138      34.95         24.01         0 \r\n 1999          207           7.19171       30.29         24.31         0.508 \r\n 1999          208           21.96851      34.33         21.12         8.636 \r\n 1999          209           24.36247      35.1          22.21         0 \r\n 1999          210           24.47715      36.83         23.62         0 \r\n 1999          211           24.42171      35.47         23.87         0 \r\n 1999          212           10.9138       28.51         19.84         53.848 \r\n 1999          213           19.31318      25.55         15.51         0 \r\n 1999          214           8.017883      22.1          17.82         0 \r\n 1999          215           21.05619      26.04         17.18         0 \r\n 1999          216           21.58718      26.94         16.31         0 \r\n 1999          217           23.4473       28.6          14.21         0 \r\n 1999          218           11.25521      26.05         17.84         33.7566 \r\n 1999          219           14.25271      28.47         19.01         2.6416 \r\n 1999          220           17.65807      25.17         15.87         0 \r\n 1999          221           24.56314      27.71         14.15         0 \r\n 1999          222           24.19733      29.77         19.47         0 \r\n 1999          223           2.858634      23.24         18.92         20.3708 \r\n 1999          224           10.74669      31.33         19.38         12.9794 \r\n 1999          225           10.34523      22.72         14.16         0 \r\n 1999          226           24.5723       23.72         11.53         0 \r\n 1999          227           23.35375      27.59         14.03         0 \r\n 1999          228           21.01314      32.67         17.67         0 \r\n 1999          229           23.46333      31.63         18.04         12.3952 \r\n 1999          230           16.52421      28.53         18.97         0 \r\n 1999          231           13.81854      24.19         17.05         0 \r\n 1999          232           20.85707      25.98         13.5          0 \r\n 1999          233           21.32777      27.34         16.56         0 \r\n 1999          234           15.74895      29.68         16.7          3.5306 \r\n 1999          235           19.09289      27.56         14.99         0 \r\n 1999          236           13.79502      24.02         14.91         0 \r\n 1999          237           19.02871      27.67         15.89         0 \r\n 1999          238           19.14084      29.44         17.02         0 \r\n 1999          239           20.94029      31.63         17.21         0 \r\n 1999          240           18.97444      31.71         18.51         0 \r\n 1999          241           18.09647      30.67         19.37         0 \r\n 1999          242           19.46598      25.99         15.14         0 \r\n 1999          243           18.3332       28.05         16.22         0 \r\n 1999          244           17.30553      30.99         15.73         0 \r\n 1999          245           19.86819      32.42         16.93         0 \r\n 1999          246           16.41023      31.73         19.69         0 \r\n 1999          247           11.74332      30.68         18.24         9.8806 \r\n 1999          248           14.25865      23.29         14.2          0 \r\n 1999          249           21.13418      26.4          11.81         0 \r\n 1999          250           19.53372      30.87         15.17         7.9248 \r\n 1999          251           21.85144      24.21         10.5          0 \r\n 1999          252           21.88592      20.65         9.05          0 \r\n 1999          253           21.62622      25.29         6.252222      0 \r\n 1999          254           20.35164      27.7          10.96         2.921 \r\n 1999          255           12.2372       21.9          10.99         0 \r\n 1999          256           16.33856      17.52         6.516111      0 \r\n 1999          257           19.95663      20.26         6.157222      0 \r\n 1999          258           16.60634      19.03         5.045         0 \r\n 1999          259           20.34303      20.89         5.415         0 \r\n 1999          260           19.34845      22.71         5.567778      0 \r\n 1999          261           18.57721      26.29         9.86          0 \r\n 1999          262           7.5312        21.85         11.35         0 \r\n 1999          263           8.145578      14.41         3.842222      0 \r\n 1999          264           19.45585      16.67         0.81          0 \r\n 1999          265           19.07557      23.56         3.361111      0 \r\n 1999          266           18.40617      29.28         10.45         0 \r\n 1999          267           17.8489       26.06         10.04         0 \r\n 1999          268           15.58883      28.16         11.29         0 \r\n 1999          269           5.564385      22.03         11.6          22.5298 \r\n 1999          270           2.758218      12.12         9.28          2.54 \r\n 1999          271           6.521559      16.46         9.64          0.762 \r\n 1999          272           18.73453      15.98         4.012222      0.254 \r\n 1999          273           15.82129      20.79         5.527222      0 \r\n 1999          274           14.38166      18.01         2.975         0 \r\n 1999          275           16.17204      12.47         3.595         0.254 \r\n 1999          276           1.8587        5.31          0.9677778     10.922 \r\n 1999          277           10.66171      13.1         -1.88          0 \r\n 1999          278           11.66403      22.14         3.922778      0 \r\n 1999          279           11.09312      21.82         4.591111      0 \r\n 1999          280           11.14329      24.25         13.09         0 \r\n 1999          281           8.607827      23.98         9.31          0 \r\n 1999          282           9.399482      24.78         6.738889      0 \r\n 1999          283           9.930305      23.14         10            0 \r\n 1999          284           10.07658      21.18         5.651111      0 \r\n 1999          285           7.781905      27.18         11.85         0 \r\n 1999          286           9.654789      16.58         2.772778      0 \r\n 1999          287           10.14126      18.31         2.522222      0 \r\n 1999          288           9.262623      28.91         9.91          21.082 \r\n 1999          289           12.91546      15.9          7.66          0.762 \r\n 1999          290           14.00515      10.55        -0.525         0 \r\n 1999          291           9.107606      12.57        -2.868889      0 \r\n 1999          292           7.429905      9.86         -0.245         0 \r\n 1999          293           13.92519      15.53        -2.087222      0 \r\n 1999          294           11.83909      25.47         4.882778      0 \r\n 1999          295           14.30535      16.44         2.53          0 \r\n 1999          296           14.61555      8.72         -2.068889      0 \r\n 1999          297           14.13887      12.9         -5.153889      0 \r\n 1999          298           12.04097      19.65         1.928889      0 \r\n 1999          299           11.15685      20.59         1.608889      0 \r\n 1999          300           12.47706      26.75         6.452778      0 \r\n 1999          301           8.53264       20.46         7.13          0 \r\n 1999          302           10.03277      24.22         14.09         0 \r\n 1999          303           7.188698      18.46         7.15          0 \r\n 1999          304           12.02938      20.96         1.118889      0 \r\n 1999          305           10.88204      16.17         3.907778      0 \r\n 1999          306           13.01743      8.01         -3.685         0 \r\n 1999          307           11.96026      16.28        -5.93          0 \r\n 1999          308           10.90091      17.4         -0.9861111     0 \r\n 1999          309           11.33517      17.02         5.357222      0 \r\n 1999          310           10.48184      18.12         4.521111      0 \r\n 1999          311           10.37101      19.82         6.677778      0 \r\n 1999          312           10.61556      25.63         8.26          0 \r\n 1999          313           9.747548      24.36         10.65         0 \r\n 1999          314           10.48205      16.82         4.112222      0 \r\n 1999          315           4.608174      11.21         4.18          0 \r\n 1999          316           9.506843      21.21         5.261111      0 \r\n 1999          317           9.949677      25.59         4.187778      0 \r\n 1999          318           9.97453       14.11         3.442778      0 \r\n 1999          319           9.982773      15.94        -2.652778      0 \r\n 1999          320           10.0298       13.02        -0.2238889     0 \r\n 1999          321           8.845771      16.22         0.7127778     0 \r\n 1999          322           8.825395      23.6          9.65          0 \r\n 1999          323           9.003173      14.11         1.431111      0 \r\n 1999          324           9.180951      10.81        -5.398889      0 \r\n 1999          325           9.042294      16.95         2.528889      0 \r\n 1999          326           8.318336      13.86         0.575         26.162 \r\n 1999          327           1.666027      9.63         -0.7777778     0 \r\n 1999          328           10.15118      9.02         -3.132222      0 \r\n 1999          329           10.56364      8.91         -4.256111      0 \r\n 1999          330           5.470036      11.32         1.833889      0 \r\n 1999          331           7.29334       9.42          0.9511111     0 \r\n 1999          332           5.998642      8.4           1.055         0 \r\n 1999          333           9.846625      6.267778     -3.21          0 \r\n 1999          334           7.347104      8.31         -4.217778      0 \r\n 1999          335           7.17443       12.07         0.9888889     0 \r\n 1999          336           3.916642      15.16         7.19          0 \r\n 1999          337           2.505923      15.09         6.133889      0 \r\n 1999          338           1.570757      8.25          2.011111      0.25 \r\n 1999          339           7.103679      2.011111     -5.613889      2.54 \r\n 1999          340           8.815604      4.227222     -8.75          0 \r\n 1999          341           8.870708      8.41         -1.107222      0 \r\n 1999          342           7.339154      11.08        -0.2361111     0 \r\n 1999          343           3.11457       6.296111     -3.591111      0 \r\n 1999          344           9.543453      5.525        -6.347222      0 \r\n 1999          345           8.801839      7.85         -6.103889      0 \r\n 1999          346           7.968219      9.16         -3.772222      0 \r\n 1999          347           9.277769      9.64         -5.007778      0 \r\n 1999          348           1.808032      2.111111E-02               -4.991111      0 \r\n 1999          349           3.312975     -0.3272222    -7.32          2.54 \r\n 1999          350           5.945171     -3.932222     -13.48         0.25 \r\n 1999          351           3.356949     -3.971111     -6.756111      1.52 \r\n 1999          352           7.637181     -2.955        -13.46         0 \r\n 1999          353           3.066663     -0.3561111    -6.367222      0 \r\n 1999          354           9.851813     -6.377222     -18.12         3.81 \r\n 1999          355           5.586644     -10.54        -22.98         0 \r\n 1999          356           9.062544     -9.96         -13.88         0.76 \r\n 1999          357           5.90626       2.052222     -18            0 \r\n 1999          358           8.542389     -1.12         -14.28         0 \r\n 1999          359           9.089405      4.066111     -9.7           0 \r\n 1999          360           9.425798      3.603889     -5.566111      0 \r\n 1999          361           5.008834      1.747222     -12.18         0.51 \r\n 1999          362           7.955248      7.2          -10.13         0 \r\n 1999          363           8.84711       14.67        -2.202222      0 \r\n 1999          364           7.830398      10.09        -2.822778      0 \r\n 1999          365           8.480968      9.91         -3.987222      0 \r\n 2000          1             4.381234      11.43        -1.108889      0 \r\n 2000          2             2.082879      9.89         -0.7238889     0 \r\n 2000          3             1.112023      0.5377778    -4.341111      0 \r\n 2000          4             8.607492     -4.341111     -13.62         0.51 \r\n 2000          5             4.990592      2.632222     -13.73         0 \r\n 2000          6             9.563536      3.822222     -3.96          0 \r\n 2000          7             9.352453      5.973889     -9.66          0 \r\n 2000          8             8.580379      10.61        -2.467222      0 \r\n 2000          9             3.016287      9.13          4.457222      1.27 \r\n 2000          10            8.823345      8.12         -0.8522222     0.76 \r\n 2000          11            5.59928       0.3          -5.431111      0 \r\n 2000          12            6.242486      3.465        -6.125         0 \r\n 2000          13            10.32276     -2.107222     -11.21         0 \r\n 2000          14            8.974596      7.32         -10.82         0 \r\n 2000          15            5.133517      11.22         1.166111      0 \r\n 2000          16            5.192553      1.175        -8.31          0 \r\n 2000          17            1.138383     -2.096111     -3.427778      0.25 \r\n 2000          18            8.895853      6.755        -3.846111      0.51 \r\n 2000          19            1.551469      1.432222     -13.78         0 \r\n 2000          20            11.26002     -5.711111     -17.67         2.54 \r\n 2000          21            9.653325     -3.732778     -15.25         0 \r\n 2000          22            9.225218      6.831111     -5.902778      1.27 \r\n 2000          23            7.749479     -4.578889     -13.48         0 \r\n 2000          24            9.239945      3.953889     -15.46         0 \r\n 2000          25            4.852812     -3.333889     -13.34         0 \r\n 2000          26            12.02737     -5.393889     -17.46         0 \r\n 2000          27            11.20998     -2.787778     -15.95         0 \r\n 2000          28            7.59442      -2.692222     -11.25         0 \r\n 2000          29            6.622519     -4.562778     -8.18          0.76 \r\n 2000          30            11.01463     -3.412778     -10.76         5.08 \r\n 2000          31            11.69704     -1.111111E-02               -15.16         0 \r\n 2000          32            6.97159      -3.78         -11.71         0 \r\n 2000          33            10.15499      3.132222     -11.1          0 \r\n 2000          34            8.373774      5.45         -4.532778      0 \r\n 2000          35            4.650767     -1.606111     -5.787222      0 \r\n 2000          36            11.69892      3.423889     -10.15         0 \r\n 2000          37            9.097062      8.49         -3.195         0 \r\n 2000          38            12.68794      4.983889     -6.202222      0 \r\n 2000          39            10.0388       6.821111     -7.37          0 \r\n 2000          40            9.839011      13.97         0.1811111     0 \r\n 2000          41            3.344062      1.843889     -4.492778      0 \r\n 2000          42            7.236479     -3.032778     -7.46          0 \r\n 2000          43            4.646876      0.6588889    -5.922222      0 \r\n 2000          44            3.304691     -0.7411111    -4.217222      0.25 \r\n 2000          45            8.063698      1.438889     -4.962222      2.54 \r\n 2000          46            12.49585      15.35        -3.627778      0 \r\n 2000          47            13.91778      2.687778     -8.21          0 \r\n 2000          48            2.528349      2.401111     -4.037222      0 \r\n 2000          49            5.557356     -0.6761111    -3.968889      20.32 \r\n 2000          50            8.860456     -1.097778     -5.671111      16.51 \r\n 2000          51            14.63229      6.648889     -9.39          0 \r\n 2000          52            11.50818      15.13         1.513889      0 \r\n 2000          53            7.419404      17.64         5.975         0 \r\n 2000          54            7.970395      17.38         9.84          0 \r\n 2000          55            4.055426      13.64         7.85          13.21 \r\n 2000          56            5.435309      17.23         9.02          0.25 \r\n 2000          57            11.04078      11.83         3.852222      2.54 \r\n 2000          58            16.25559      13.28        -1.212222      0 \r\n 2000          59            15.2039       18.78         0.35          0 \r\n 2000          60            5.130463      15.22         4.976111      0 \r\n 2000          61            16.11091      8.64          0.1222222     3.05 \r\n 2000          62            10.80054      7.86         -3.277222      0 \r\n 2000          63            10.85551      8.3          -2.548889      0 \r\n 2000          64            16.8878       18.9         -3.466111      0 \r\n 2000          65            17.53933      20.29         1.317222      0 \r\n 2000          66            15.96321      22.24         4.747222      0 \r\n 2000          67            13.24441      25.15         12.65         0 \r\n 2000          68            11.42964      20.7          5.25          0 \r\n 2000          69            9.200281      5.268889     -1.597222      0 \r\n 2000          70            12.05887      3.812778     -3.192222      0 \r\n 2000          71            19.74032      6.353889     -5             0 \r\n 2000          72            12.06845      11.23        -5.325         0 \r\n 2000          73            16.4299       10.38        -0.675         0 \r\n 2000          74            9.542574      12.63        -0.6838889     0 \r\n 2000          75            3.666732      12.76        -0.6738889     0 \r\n 2000          76            19.7763       5.127222     -5.517778      0 \r\n 2000          77            21.03313      8            -7.82          0 \r\n 2000          78            2.626004      3.227222     -0.1222222     0.25 \r\n 2000          79            2.692822      0.3277778    -0.235         7.11 \r\n 2000          80            7.770316      6.89         -6.611111E-02                1.52 \r\n 2000          81            4.773818      9.45          4.515         0.25 \r\n 2000          82            13.31248      16.91         5.023889      0 \r\n 2000          83            14.61262      20.21         6.183889      0 \r\n 2000          84            15.63         20.62         7.25          0.76 \r\n 2000          85            22.27373      18.45         2.173889      0 \r\n 2000          86            18.41052      21.76         3.973889      0 \r\n 2000          87            20.17203      15.52        -2.777222      0 \r\n 2000          88            22.5323       11.8         -4.075         0 \r\n 2000          89            20.75427      14.65        -2.426111      0 \r\n 2000          90            16.48889      15.34         2.24          0 \r\n 2000          91            18.09028      18.36         0.3122222     0 \r\n 2000          92            3.376739      11.76         4.588889      0.508 \r\n 2000          93            20.55235      16.74        -1.342222      0 \r\n 2000          94            13.61658      10.72         2.06          0 \r\n 2000          95            23.44396      11.44        -2.992778      0 \r\n 2000          96            21.13669      30.44         2.542222      0 \r\n 2000          97            20.12429      16.47         4.561111      0 \r\n 2000          98            7.902028      12.22        -1.747222      1.524 \r\n 2000          99            24.55167      10.47        -5.315         3.048 \r\n 2000          100           23.28287      17.11         3.282222      0 \r\n 2000          101           4.182828      10.03         3.312778      5.08 \r\n 2000          102           7.416851      6.995        -5.277778E-02                0 \r\n 2000          103           23.80441      12.86        -3.76          0 \r\n 2000          104           23.41345      20.92         2.766111      0 \r\n 2000          105           21.75069      24.53         7.15          0 \r\n 2000          106           7.84203       17.46         8.61          0 \r\n 2000          107           8.480927      15.22         4.188889      2.794 \r\n 2000          108           9.731984      9.59          3.02          0 \r\n 2000          109           23.35295      22.66         1.176111      0 \r\n 2000          110           16.07296      28.34         11.74         0 \r\n 2000          111           3.397575      16.68         4.918889      18.288 \r\n 2000          112           25.83331      17.17         1.852222      0 \r\n 2000          113           20.46821      22.28         3.953889      0 \r\n 2000          114           14.16456      21.63         9.11          0 \r\n 2000          115           15.34034      18.25         7.13          0 \r\n 2000          116           25.79469      20.15         4.011111      0 \r\n 2000          117           23.41325      21.59         3.03          0 \r\n 2000          118           15.13081      17.62         8.71          6.858 \r\n 2000          119           19.87777      20.83         9.25          0 \r\n 2000          120           24.93723      18.69         5.023889      0 \r\n 2000          121           23.19869      24.96         6.822222      0 \r\n 2000          122           10.60247      19.99         8.38          6.858 \r\n 2000          123           26.44179      24.18         5.927222      0 \r\n 2000          124           16.55663      23.89         11.27         0 \r\n 2000          125           24.1995       26.18         12.65         0 \r\n 2000          126           22.76615      26.37         13.52         0 \r\n 2000          127           16.76646      25.54         14.65         0 \r\n 2000          128           18.34759      28.68         14.7          0 \r\n 2000          129           9.664998      24.81         14.15         0.508 \r\n 2000          130           11.57098      16.81         7.93          11.43 \r\n 2000          131           19.74953      21.73         6.247222      0 \r\n 2000          132           21.13497      31.66         16.55         0 \r\n 2000          133           16.40367      22.11         10.97         0 \r\n 2000          134           24.96015      14            3.142778      0 \r\n 2000          135           19.35949      20.57         1.317778      0 \r\n 2000          136           21.23476      23.55         7.08          0 \r\n 2000          137           23.69483      26.79         10.84         0 \r\n 2000          138           11.22232      24.38         18.5          0.254 \r\n 2000          139           15.09713      26.61         9.95          0 \r\n 2000          140           18.62679      17.18         7.83          0 \r\n 2000          141           27.3462       22.04         4.178889      0 \r\n 2000          142           20.01077      26.77         10.67         0.762 \r\n 2000          143           19.73388      29.9          11.39         0 \r\n 2000          144           19.76053      28.54         14.69         0 \r\n 2000          145           24.59682      28.96         14.37         0 \r\n 2000          146           24.24687      24.97         8.06          0 \r\n 2000          147           2.653786      16.89         13.07         13.97 \r\n 2000          148           7.044517      17.38         13.52         0.254 \r\n 2000          149           15.75544      18.47         10.15         0 \r\n 2000          150           23.96445      26.38         10.04         0 \r\n 2000          151           15.73213      30.99         19.49         0.762 \r\n 2000          152           19.22238      31.39         22.59         0 \r\n 2000          153           20.64181      32.73         13.66         6.35 \r\n 2000          154           27.78599      22.41         13.01         1.27 \r\n 2000          155           27.62114      24.26         10.76         0 \r\n 2000          156           11.78273      23.35         12.81         28.194 \r\n 2000          157           14.18242      17.8          9.08          0 \r\n 2000          158           27.3601       22.66         6.59          0 \r\n 2000          159           25.78637      27.24         12            0 \r\n 2000          160           27.33185      31.12         16.86         0 \r\n 2000          161           25.41981      30.26         16.14         0 \r\n 2000          162           16.69713      28.97         21.47         0 \r\n 2000          163           9.170365      25.74         19.06         2.286 \r\n 2000          164           18.64319      28.45         18.81         3.556 \r\n 2000          165           15.71021      27.93         17.18         37.338 \r\n 2000          166           14.31321      22.38         14.9          0 \r\n 2000          167           26.84613      27.78         11.57         0 \r\n 2000          168           21.53158      22.27         12.69         6.604 \r\n 2000          169           18.63378      18.93         9.18          0 \r\n 2000          170           28.08845      24.14         8.34          0 \r\n 2000          171           20.83097      26.84         12.34         3.302 \r\n 2000          172           17.98994      27.22         18.47         1.016 \r\n 2000          173           28.72806      26.34         15.09         0 \r\n 2000          174           28.84876      30.85         15.91         0 \r\n 2000          175           9.354295      27.15         18.5          21.59 \r\n 2000          176           15.19738      24.46         18.26         28.194 \r\n 2000          177           18.65972      28.06         17.44         45.212 \r\n 2000          178           23.9626       24.42         15.92         0 \r\n 2000          179           23.77683      25.16         15.21         0 \r\n 2000          180           11.87683      20.28         14.26         1.778 \r\n 2000          181           28.41764      25.92         12.93         0 \r\n 2000          182           28.75676      25.69         16.19         0 \r\n 2000          183           22.26834      27.98         15.74         0 \r\n 2000          184           26.38087      31.24         19.52         16.002 \r\n 2000          185           25.61072      28.59         17.87         0.254 \r\n 2000          186           11.73269      27.45         21.45         1.524 \r\n 2000          187           12.28414      28.34         19.43         3.81 \r\n 2000          188           20.77444      29.25         19.01         2.54 \r\n 2000          189           22.27963      30.92         21.57         1.016 \r\n 2000          190           26.29075      31.42         22.1          0.762 \r\n 2000          191           22.31775      32.21         23.74         0.762 \r\n 2000          192           15.65933      30.9          21.81         0.254 \r\n 2000          193           7.124055      26.37         22.31         0.254 \r\n 2000          194           17.58134      27.75         19.03         0.254 \r\n 2000          195           26.89802      30.85         16.62         16.764 \r\n 2000          196           26.96345      31.53         20.78         0 \r\n 2000          197           17.81141      28.63         19.56         1.27 \r\n 2000          198           15.92497      28.77         18.13         0.254 \r\n 2000          199           22.06123      27.27         18.14         0 \r\n 2000          200           3.790955      18.99         16.5          10.414 \r\n 2000          201           15.73443      21.97         15.67         0 \r\n 2000          202           18.24408      25.49         14.74         0 \r\n 2000          203           26.19695      23.57         12.45         0 \r\n 2000          204           25.39303      24.38         11.75         0 \r\n 2000          205           27.80444      26.71         12.43         0 \r\n 2000          206           25.11074      26.93         14.81         0 \r\n 2000          207           21.43283      26.56         16.83         2.032 \r\n 2000          208           16.17488      28.14         18.56         6.604 \r\n 2000          209           17.06587      29.42         17.87         0 \r\n 2000          210           14.71082      27.32         18.29         7.366 \r\n 2000          211           12.0923       24.28         16.49         0 \r\n 2000          212           19.50108      26.49         16.72         5.588 \r\n 2000          213           25.6721       28.99         16.08         0 \r\n 2000          214           21.92282      29.64         17.05         0 \r\n 2000          215           24.64004      29.23         19.26         0 \r\n 2000          216           12.14954      23.93         17.01         4.064 \r\n 2000          217           23.81211      26.22         17.08         0 \r\n 2000          218           17.35858      30.52         19.14         0.762 \r\n 2000          219           14.50471      30.33         19.21         8.382 \r\n 2000          220           25.15961      31.36         17.13         0.254 \r\n 2000          221           22.94254      31.64         18.37         38.354 \r\n 2000          222           23.61224      30.09         20.81         0 \r\n 2000          223           24.55954      29.06         18.75         0 \r\n 2000          224           22.89945      28.57         17            0 \r\n 2000          225           23.49228      30.06         18.67         0 \r\n 2000          226           5.0308        25.56         20.29         9.652 \r\n 2000          227           11.14835      31.1          21.61         3.048 \r\n 2000          228           21.55333      30.37         19.01         0 \r\n 2000          229           22.14951      28.53         17.14         0 \r\n 2000          230           11.23438      28.47         16.24         0.254 \r\n 2000          231           23.09355      25.06         14.27         0 \r\n 2000          232           6.362484      20.63         14.47         1.016 \r\n 2000          233           12.09866      23.87         16.22         0 \r\n 2000          234           10.79744      26.58         18.04         0 \r\n 2000          235           8.831169      26.85         18.48         1.778 \r\n 2000          236           14.85416      29.71         20.51         9.398 \r\n 2000          237           19.81346      28.96         21.11         0.254 \r\n 2000          238           21.07472      30.7          18.94         0 \r\n 2000          239           20.53277      32.52         21.59         0 \r\n 2000          240           12.78819      27.24         19.96         0 \r\n 2000          241           20.6262       35.05         22.44         0 \r\n 2000          242           18.9462       28.46         19.63         0 \r\n 2000          243           17.61677      32.83         20.6          0 \r\n 2000          244           18.66859      34.66         23.3          0 \r\n 2000          245           14.4094       30.85         20.47         0 \r\n 2000          246           20.62059      35.63         21.34         0 \r\n 2000          247           15.66603      33.16         21.66         0 \r\n 2000          248           8.131688      25.23         14.3          0 \r\n 2000          249           21.9978       23.44         10.9          0 \r\n 2000          250           22.05817      25.62         9.93          0 \r\n 2000          251           15.53892      29.58         15.52         0 \r\n 2000          252           19.60262      31.74         17.16         0 \r\n 2000          253           17.9025       30.53         19.09         0 \r\n 2000          254           19.06143      33.05         21.45         0 \r\n 2000          255           16.64655      35.41         18.4          0 \r\n 2000          256           21.43417      24.48         10.69         0 \r\n 2000          257           20.14646      30.99         11.85         0.254 \r\n 2000          258           20.34416      25.44         12.23         3.556 \r\n 2000          259           20.50126      20.6          6.985         0 \r\n 2000          260           20.3555       24.38         5.956111      0 \r\n 2000          261           19.2369       32.36         12.36         0 \r\n 2000          262           18.22245      31.06         13.98         0 \r\n 2000          263           4.656081      24.02         13.13         1.524 \r\n 2000          264           9.264046      18.42         6.822222      17.78 \r\n 2000          265           18.91415      18.06         2.456111      0 \r\n 2000          266           7.820064      26            10.13         19.05 \r\n 2000          267           2.560859      13.61         9.75          12.954 \r\n 2000          268           1.812007      9.79          5.487222      5.842 \r\n 2000          269           18.47211      16.58         5.267778      0 \r\n 2000          270           19.20581      20.88         4.172778      0 \r\n 2000          271           18.57755      25            6.986111      0 \r\n 2000          272           18.07078      24            9.84          0 \r\n 2000          273           17.15185      25.05         12            0 \r\n 2000          274           13.90691      24.66         14.54         0 \r\n 2000          275           14.00899      25.97         14.22         0 \r\n 2000          276           11.36508      23.36         11.97         0 \r\n 2000          277           10.65531      22.19         9.78          17.018 \r\n 2000          278           14.2484       16.99         7.44          0.508 \r\n 2000          279           2.544249      10.46         2.227778      6.604 \r\n 2000          280           16.45546      6.83         -1.747778      0 \r\n 2000          281           8.396577      5.127778     -3.325         0 \r\n 2000          282           17.33055      8.24         -4.388889      0 \r\n 2000          283           16.26388      12.73        -5.067778      0 \r\n 2000          284           16.26676      16.75        -1.182778      0 \r\n 2000          285           15.33562      19.11         0.3561111     0 \r\n 2000          286           13.53733      24.65         9.69          0 \r\n 2000          287           10.96154      24.59         15.25         4.572 \r\n 2000          288           13.80164      25.04         12.37         0 \r\n 2000          289           13.3178       19.5          8.52          0 \r\n 2000          290           9.238021      17.46         6.127222      0 \r\n 2000          291           8.547619      18.09         5.776111      0 \r\n 2000          292           14.47873      25.45         6.343889      0 \r\n 2000          293           13.92331      25.74         11.25         0 \r\n 2000          294           12.23335      24.52         10.33         0 \r\n 2000          295           12.69233      23.47         10.3          0 \r\n 2000          296           3.685476      18.72         11.92         0.508 \r\n 2000          297           4.850302      20.24         13.71         1.778 \r\n 2000          298           8.987022      23.73         11.99         5.334 \r\n 2000          299           9.350194      23.95         16.53         1.016 \r\n 2000          300           7.540949      21            14.07         0.762 \r\n 2000          301           12.44983      19.2          8.14          0.254 \r\n 2000          302           4.05689       12.78         6.947222      0 \r\n 2000          303           3.219755      14.03         10.11         2.794 \r\n 2000          304           10.08905      22.27         12.91         0 \r\n 2000          305           6.824564      22.79         12.32         0 \r\n 2000          306           5.120588      22.13         11.59         14.732 \r\n 2000          307           12.69267      17.14         3.963889      0 \r\n 2000          308           11.15894      13.08         1.317778      0 \r\n 2000          309           10.09796      14.15         3.21          0 \r\n 2000          310           3.361677      13.34         4.297222      1.524 \r\n 2000          311           1.271518      12.76         3.528889      19.3802 \r\n 2000          312           3.898316      3.557778     -1.76          0 \r\n 2000          313           3.981662     -1.08         -5.678889      0 \r\n 2000          314           2.818635     -0.6938889    -3.457778      0 \r\n 2000          315           5.285145      1.373889     -5.171111      0 \r\n 2000          316           1.965141      1.447222     -4.463889      0 \r\n 2000          317           2.641778      3.197778     -2.37          0 \r\n 2000          318           2.746001     -1.917222     -7.14          0 \r\n 2000          319           8.43302       2.432778     -6.512222      0 \r\n 2000          320           7.871401      9.03         -8.17          0 \r\n 2000          321           7.622621      7.18         -7.2           0 \r\n 2000          322           7.339071     -0.8461111    -8.3           0 \r\n 2000          323           5.913456      1.682778     -7.88          0 \r\n 2000          324           8.236497      5.177222     -7.06          0 \r\n 2000          325           10.09616     -5.057778     -13.39         0 \r\n 2000          326           10.99015      2.661111     -15.14         0 \r\n 2000          327           9.545754      2.642778     -9.98          0 \r\n 2000          328           10.37511      10.17        -8.34          0 \r\n 2000          329           9.429188      9.78         -7.25          0 \r\n 2000          330           4.296508      7            -2.673889      0 \r\n 2000          331           2.540232     -1.786111     -5.817222      0 \r\n 2000          332           8.998236      10.59        -4.503889      0 \r\n 2000          333           4.475458      9.85         -6.126111      0 \r\n 2000          334           1.474232      2.503889     -1.316111      0 \r\n 2000          335           3.804553      2.611111E-02               -3.693889      0 \r\n 2000          336           2.276138     -4.388889E-02               -2.012222      0.51 \r\n 2000          337           9.069322     -0.245        -8.91          1.27 \r\n 2000          338           8.92556       0.7622222    -10.04         0 \r\n 2000          339           6.372274      3.192778     -5.892222      0 \r\n 2000          340           6.380098     -5.901111     -13.8          0 \r\n 2000          341           3.690623     -2.095        -10.83         2.03 \r\n 2000          342           7.505176      9.32         -2.132778      0 \r\n 2000          343           9.580063      0.5472222    -9.06          0 \r\n 2000          344           3.114486      2.56         -7.2           0 \r\n 2000          345           2.153463      2.117222     -14.91         0 \r\n 2000          346           2.829807     -14.77        -18.92         6.1 \r\n 2000          347           9.79215      -15.7         -23.81         6.86 \r\n 2000          348           3.612842     -10.26        -16.72         0.76 \r\n 2000          349           7.900647     -8.12         -17.83         4.83 \r\n 2000          350           3.719074     -1.807222     -12.46         0 \r\n 2000          351           4.601061     -1.457222     -19.07         1.52 \r\n 2000          352           9.623241     -12.02        -21.62         0 \r\n 2000          353           5.869441     -10.74        -17.25         0 \r\n 2000          354           9.866542     -13.26        -21.04         4.83 \r\n 2000          355           3.093482     -6.94         -17.22         0 \r\n 2000          356           9.763406     -15.78        -20.63         3.81 \r\n 2000          357           9.474627     -11.12        -24.32         0 \r\n 2000          358           7.12895      -6.51         -18.22         0 \r\n 2000          359           9.979509     -16.65        -24.46         0 \r\n 2000          360           3.667025     -10.69        -24.28         0 \r\n 2000          361           7.471745     -5.413889     -17.4          1.27 \r\n 2000          362           8.970119     -8.25         -22.38         0 \r\n 2000          363           2.573327     -7.68         -16.33         0 \r\n 2000          364           8.12265      -9.64         -13.64         2.54 \r\n 2000          365           7.136356     -11.19        -17.56         0.51 \r\n 2000          366           4.857415     -13.49        -19.7          0 \r\n 2001          1             9.212331     -10.71        -20.77         0.51 \r\n 2001          2             9.316973     -7.56         -24.25         0 \r\n 2001          3             5.422548     -1.016111     -7.86          0 \r\n 2001          4             7.79178       4.737778     -11.96         0 \r\n 2001          5             9.787757      3.267222     -6.072778      0 \r\n 2001          6             9.207311      7.38         -7.38          0 \r\n 2001          7             6.8472        1.392778     -10.14         0 \r\n 2001          8             4.668926     -2.765        -11.82         0 \r\n 2001          9             9.37396      -1.417778     -19.46         0 \r\n 2001          10            8.980495      4.93         -4.837222      0 \r\n 2001          11            3.220132      3.087778      0.5377778     0 \r\n 2001          12            4.318097      2.077222     -0.8527778     2.54 \r\n 2001          13            3.778445      1.083889     -0.6461111     0 \r\n 2001          14            2.089866      2.455        -1.06          6.35 \r\n 2001          15            3.881288     -0.9838889    -3.978889      2.03 \r\n 2001          16            4.366381     -3.902778     -6.492222      0 \r\n 2001          17            9.767423     -0.9088889    -9.94          0 \r\n 2001          18            6.813351     -6.222222E-02               -7.29          0 \r\n 2001          19            7.274595     -7.3          -17.69         0 \r\n 2001          20            11.10877     -4.207222     -20.9          0 \r\n 2001          21            10.77811     -3.972222     -10.46         0 \r\n 2001          22            10.45356      4.61         -12.57         0 \r\n 2001          23            10.48113      4.256111     -6.103889      0 \r\n 2001          24            10.79292     -2.312778     -13.4          0 \r\n 2001          25            9.847463     -1.863889     -17.21         0 \r\n 2001          26            3.911998     -0.3111111    -9.68          3.05 \r\n 2001          27            11.67365     -3.668889     -15.57         0.76 \r\n 2001          28            2.00673      -0.9788889    -7.24          0 \r\n 2001          29            1.777363      1.325        -1.196111      7.62 \r\n 2001          30            4.960927      1.182778     -2.596111      15.75 \r\n 2001          31            8.985391     -0.7877778    -6.725         0 \r\n 2001          32            9.916875     -5.142778     -21.91         0 \r\n 2001          33            9.148986     -9.37         -24.3          0.51 \r\n 2001          34            6.735696      1.851111     -9.46          0 \r\n 2001          35            4.54215       1.532222     -5.191111      0 \r\n 2001          36            7.05527       3.511111     -4.465         0 \r\n 2001          37            12.76534      1.552222     -6.502222      0.51 \r\n 2001          38            2.615209      0.575        -7.77          0 \r\n 2001          39            1.610129      0.9311111    -1.805         1.27 \r\n 2001          40            4.97988      -1.332222     -16.14         41.91 \r\n 2001          41            12.47079     -9.29         -20.21         6.35 \r\n 2001          42            10.10503     -3.4          -15.57         0 \r\n 2001          43            7.56304       2.501111     -4.255         0 \r\n 2001          44            5.076238      3.755        -0.3388889     0 \r\n 2001          45            3.181556      0.8588889    -10.39         1.27 \r\n 2001          46            6.263406     -5.162222     -10.44         1.78 \r\n 2001          47            13.17596     -6.308889     -14.68         0 \r\n 2001          48            13.09023     -8.49         -16.31         0 \r\n 2001          49            13.38746      1.042778     -13.12         0 \r\n 2001          50            13.66679      5.735        -2.53          0 \r\n 2001          51            10.86447     -2.501111     -10.56         0 \r\n 2001          52            9.209612     -8.73         -15.34         0 \r\n 2001          53            13.0773      -0.49         -8.91          0.76 \r\n 2001          54            11.3737       0.225        -10.21         0 \r\n 2001          55            2.156099      7.89          0.2072222     5.59 \r\n 2001          56            15.3708       5.957778     -5.727778      14.48 \r\n 2001          57            11.95687      4.947778     -6.86          0 \r\n 2001          58            7.824331     -6.83         -14.35         5.08 \r\n 2001          59            17.3136      -4.256111     -18.16         0 \r\n 2001          60            6.21847      -1.662778     -10.49         0 \r\n 2001          61            13.32332      4.357778     -3.541111      0 \r\n 2001          62            15.08788      5.728889     -5.931111      0 \r\n 2001          63            17.23615     -0.345        -6.557778      0 \r\n 2001          64            17.67045     -1.088889     -8.4           0 \r\n 2001          65            16.80466      2.491111     -9.51          0 \r\n 2001          66            5.864253      0.3038889    -4.321111      0 \r\n 2001          67            8.621425     -2.727778     -2.975         0 \r\n 2001          68            17.82781      2.051111     -6.073889      0 \r\n 2001          69            6.971673      6.843889     -3.315556      0 \r\n 2001          70            6.255959      2.811667     -5.561666      1.02 \r\n 2001          71            6.439134      4.878889     -0.7533333     4.06 \r\n 2001          72            8.245618      6.256667      0.4516667     0.51 \r\n 2001          73            7.827636      9.879444     -9.833334E-02                0 \r\n 2001          74            1.539628      3.896111     -5.277778E-02                1.78 \r\n 2001          75            11.18346      1.410556     -2.239444      33.02 \r\n 2001          76            20.08554      3.88         -6.858889      5.08 \r\n 2001          77            20.13002      5.686111     -8.044444      0 \r\n 2001          78            19.59744      7.301667     -2.545556      0 \r\n 2001          79            20.15341      10.91056     -3.065         0 \r\n 2001          80            13.85745      9.966666      1.942222      0 \r\n 2001          81            11.92942      13.44         1.306111      1.27 \r\n 2001          82            3.227789      3.303889     -3.571111      0 \r\n 2001          83            19.53531     -1.577222     -5.813889      0 \r\n 2001          84            16.88549     -2.672222     -8.02          0 \r\n 2001          85            21.15472      2.643889     -9.83          0 \r\n 2001          86            21.39016      6.882222     -8.72          0 \r\n 2001          87            4.371653      3.446111     -1.361111      0 \r\n 2001          88            4.185381      7.03          2.172778      2.03 \r\n 2001          89            6.28328       9.7           1.066111      0.25 \r\n 2001          90            13.73126      9.25         -1.012778      3.81 \r\n 2001          91            15.1198       11.11        -2.35          0 \r\n 2001          92            20.62361      17.26         1.251111      0 \r\n 2001          93            6.481309      9.82          2.896111      1.27 \r\n 2001          94            17.24741      18.01         2.812222      0 \r\n 2001          95            4.943982      21.36         12.01         0.762 \r\n 2001          96            4.849926      20.89         10.22         0.254 \r\n 2001          97            22.34587      23.76         7.19          0 \r\n 2001          98            21.1482       28.09         2.85          9.144 \r\n 2001          99            11.69972      18.59         11.2          18.034 \r\n 2001          100           3.302557      15.67         10.11         5.08 \r\n 2001          101           14.3161       22.4          11            12.446 \r\n 2001          102           11.18166      13.21         5.373889      0 \r\n 2001          103           20.83385      18.57         2.972778      0.508 \r\n 2001          104           20.57821      19.65         4.152222      14.732 \r\n 2001          105           21.09862      16.08         3.123889      0 \r\n 2001          106           21.46559      5.86         -0.4127778     0 \r\n 2001          107           23.8606       10.24        -2.182222      0 \r\n 2001          108           23.41358      15.35        -1.407778      0 \r\n 2001          109           18.14446      21.08         6.44          0 \r\n 2001          110           17.8253       25.29         15.51         5.334 \r\n 2001          111           23.80826      22.09         12.37         0 \r\n 2001          112           14.6973       25.07         9.82          5.334 \r\n 2001          113           7.603291      17.49         4.722778      0 \r\n 2001          114           23.7716       18.41        -0.5738889     0 \r\n 2001          115           24.77179      22.3          6.802778      0 \r\n 2001          116           23.00568      25.92         10.04         0 \r\n 2001          117           18.75863      25.27         12.44         0 \r\n 2001          118           24.08319      25.31         13.22         0 \r\n 2001          119           24.32101      27.66         13.64         0 \r\n 2001          120           10.51209      23.84         14.29         7.874 \r\n 2001          121           22.69803      27.62         14.19         2.286 \r\n 2001          122           7.278235      23.23         14.61         0.762 \r\n 2001          123           5.54313       21.11         14.15         13.716 \r\n 2001          124           5.802873      18.91         14.34         1.016 \r\n 2001          125           6.455912      19.15         14.06         1.524 \r\n 2001          126           11.80758      21.82         13.51         1.778 \r\n 2001          127           23.05957      20.41         8.66          0 \r\n 2001          128           19.92868      21.22         8.03          0 \r\n 2001          129           25.16337      26.96         11.33         11.43 \r\n 2001          130           22.30059      26.78         14.86         18.034 \r\n 2001          131           24.16632      21.31         10.65         5.588 \r\n 2001          132           19.74714      19.8          7.69          0 \r\n 2001          133           4.833482      16.11         10.46         32.258 \r\n 2001          134           25.06689      28.23         13.85         1.778 \r\n 2001          135           22.95535      29.11         19.42         0.762 \r\n 2001          136           24.7074       29.05         18.41         0.508 \r\n 2001          137           3.072772      23.35         16.48         0.254 \r\n 2001          138           24.78351      25.04         14.27         1.016 \r\n 2001          139           26.22736      26.34         13.69         0.254 \r\n 2001          140           11.3173       22.96         16.23         0.254 \r\n 2001          141           15.0124       16.29         6.07          0.254 \r\n 2001          142           18.43349      15.95         5.678889      0.254 \r\n 2001          143           13.39349      13.08         5.822222      0 \r\n 2001          144           16.24852      12.87         4.388889      0 \r\n 2001          145           6.767913      14.33         8.37          0.254 \r\n 2001          146           13.99715      17.35         9.48          0.254 \r\n 2001          147           21.72555      20.72         8.23          0.254 \r\n 2001          148           19.35         20.71         10.35         0.254 \r\n 2001          149           19.2692       21.71         8.35          0 \r\n 2001          150           2.355383      16.22         8.69          0.254 \r\n 2001          151           2.685668      10.47         6.832778      60.198 \r\n 2001          152           20.90184      23.15         4.265         5.588 \r\n 2001          153           21.28129      19.51         9.51          0 \r\n 2001          154           13.19931      17.33         8.95          0 \r\n 2001          155           10.02729      15.97         10.55         10.668 \r\n 2001          156           11.11735      21.43         13.28         17.78 \r\n 2001          157           19.59522      24.84         15.05         0.508 \r\n 2001          158           20.7903       26.21         15.18         0.254 \r\n 2001          159           22.96104      25.77         13.65         0.254 \r\n 2001          160           27.26311      27.29         15.05         0 \r\n 2001          161           21.67187      30.25         17            0 \r\n 2001          162           25.47976      32.72         21.18         0 \r\n 2001          163           23.67198      30.72         21.25         0 \r\n 2001          164           23.80759      30.33         22.21         0 \r\n 2001          165           3.367702      25.59         17.35         6.35 \r\n 2001          166           27.21692      24.94         15.14         0.762 \r\n 2001          167           21.83261      27.66         14.45         0.254 \r\n 2001          168           13.74134      28.63         17.34         0 \r\n 2001          169           24.96597      30.03         20.18         0 \r\n 2001          170           5.018624      22.27         13.8          0.254 \r\n 2001          171           5.281505      19.1          14.39         0 \r\n 2001          172           21.80868      23.17         12.12         0.254 \r\n 2001          173           27.6457       22.84         12.56         0 \r\n 2001          174           27.62909      24.34         11.89         0 \r\n 2001          175           25.98143      29.74         16.19         0 \r\n 2001          176           25.72072      30.26         19.39         0 \r\n 2001          177           18.46968      29.71         20.27         0 \r\n 2001          178           25.2399       28.44         18.38         0 \r\n 2001          179           23.70144      28.08         17.39         0 \r\n 2001          180           23.45053      28.6          17.35         0 \r\n 2001          181           25.00747      31.33         18.05         0 \r\n 2001          182           21.49216      23.94         15.64         0 \r\n 2001          183           15.8723       24.44         15.13         0 \r\n 2001          184           16.26091      29.95         18.81         0 \r\n 2001          185           25.59261      30.81         17.64         0 \r\n 2001          186           26.42564      26.58         16.11         0 \r\n 2001          187           22.24721      29.89         15.89         0 \r\n 2001          188           20.46687      32.9          25.24         0 \r\n 2001          189           13.37604      30.88         22.91         0 \r\n 2001          190           23.80152      32.32         21.35         0 \r\n 2001          191           19.61882      31.03         18.14         19 \r\n 2001          192           21.37388      27.74         18.86         0 \r\n 2001          193           20.02165      25.2          17.47         0 \r\n 2001          194           24.3095       28.65         14.76         0 \r\n 2001          195           24.29774      29.3          14.99         0 \r\n 2001          196           20.63921      27.74         17.26         0 \r\n 2001          197           19.99701      28.75         18.56         0 \r\n 2001          198           22.00889      33.58         22.07         0 \r\n 2001          199           11.85244      28.83         20.43         4 \r\n 2001          200           11.0166       28.35         21.84         0 \r\n 2001          201           17.25603      32.68         21.76         0 \r\n 2001          202           18.54495      33.97         24.4          0 \r\n 2001          203           23.867        35.35         24.05         0 \r\n 2001          204           11.10455      30.81         23.98         0 \r\n 2001          205           14.47015      32.1          22.02         16 \r\n 2001          206           5.212553      24.73         20.94         2 \r\n 2001          207           15.86836      25.91         19.19         10 \r\n 2001          208           10.07871      24.3          18.96         3 \r\n 2001          209           15.77828      28.5          21.59         0 \r\n 2001          210           24.11239      30.79         18.37         0 \r\n 2001          211           22.64075      33.71         21.66         3 \r\n 2001          212           23.37346      33.71         24.44         6 \r\n 2001          213           23.00623      34.1          24.92         1 \r\n 2001          214           19.10766      33.27         24.28         0 \r\n 2001          215           13.11086      29.71         18.94         6 \r\n 2001          216           22.89351      31.62         18.96         2 \r\n 2001          217           23.81257      32.06         21.95         0 \r\n 2001          218           23.31492      32.42         20.66         0 \r\n 2001          219           23.26597      32.84         19.82         0 \r\n 2001          220           21.63199      32.04         19.76         0 \r\n 2001          221           20.62687      34.73         19.76         0 \r\n 2001          222           22.46264      24.14         15.04         38 \r\n 2001          223           20.85076      27.2          13.97         0 \r\n 2001          224           21.68337      30.87         14.15         0 \r\n 2001          225           22.73017      26.9          15.08         0 \r\n 2001          226           17.831        25.75         12.1          0 \r\n 2001          227           2.581444      20.17         16.41         0 \r\n 2001          228           21.00904      24.9          14.35         0 \r\n 2001          229           16.56069      24.8          12.97         0 \r\n 2001          230           18.53491      24.59         15.43         0 \r\n 2001          231           19.96433      25.84         13.86         0 \r\n 2001          232           21.93629      26.72         11.6          0 \r\n 2001          233           17.35025      33.55         18.49         1 \r\n 2001          234           8.190557      28.12         21.21         10 \r\n 2001          235           18.10584      29.71         20.09         0 \r\n 2001          236           11.45968      27.95         19.18         4 \r\n 2001          237           14.67274      27.82         18.87         0 \r\n 2001          238           20.97824      30.29         15.48         0 \r\n 2001          239           20.387        31.63         16.94         0 \r\n 2001          240           21.32175      28.27         14.7          0 \r\n 2001          241           20.32968      32.44         17.29         4 \r\n 2001          242           13.83402      28.94         17.76         0 \r\n 2001          243           20.5644       25.34         14.16         11 \r\n 2001          244           20.76356      25.59         11.42         0 \r\n 2001          245           19.66212      29.96         15.01         0 \r\n 2001          246           18.53596      33.31         17.79         0 \r\n 2001          247           20.67829      29.71         12.82         0 \r\n 2001          248           19.27598      29.21         15.66         0 \r\n 2001          249           9.075598      26.52         20.44         3.302 \r\n 2001          250           10.99354      27.56         16.72         0 \r\n 2001          251           15.32361      22.24         13.31         25.908 \r\n 2001          252           11.62328      20.21         11.41         2.032 \r\n 2001          253           20.44637      26.69         10.77         0 \r\n 2001          254           19.79735      26.36         12.09         0 \r\n 2001          255           19.63263      28.05         12.51         0 \r\n 2001          256           8.090266      21.5          13.88         1.778 \r\n 2001          257           7.844038      16.77         11.89         0 \r\n 2001          258           5.198746      17.16         11.44         0 \r\n 2001          259           10.64493      20.4          12.4          11.176 \r\n 2001          260           8.275576      20.87         13.06         0 \r\n 2001          261           2.496844      14.65         11.41         12.7 \r\n 2001          262           14.20384      21.25         12.91         0 \r\n 2001          263           10.72769      25.24         12.32         16.51 \r\n 2001          264           18.25734      21.93         11.4          0 \r\n 2001          265           11.51516      23.15         10.91         0 \r\n 2001          266           4.670976      18.11         10.18         7.874 \r\n 2001          267           18.88691      14.86         4.285         0 \r\n 2001          268           18.67039      16.35         1.975         0 \r\n 2001          269           18.26132      21.05         2.332778      0 \r\n 2001          270           17.83087      24.49         5.67          0 \r\n 2001          271           17.89949      21.34         7.14          0 \r\n 2001          272           16.74562      17.76         5.165         0 \r\n 2001          273           17.33569      21.99         4.632778      0 \r\n 2001          274           15.58611      26.84         10.57         0 \r\n 2001          275           16.68788      26.45         12.69         0 \r\n 2001          276           14.70308      21.62         12.78         0 \r\n 2001          277           2.507095      13.94         7.66          27.432 \r\n 2001          278           9.258648      12.5          3.427222      0 \r\n 2001          279           16.0356       15.49        -0.7411111     0 \r\n 2001          280           15.99527      18.89         1.815         0 \r\n 2001          281           14.16481      18.65         9.32          0 \r\n 2001          282           6.685321      20.65         12.07         4.572 \r\n 2001          283           6.206295      18.51         6.947222      5.08 \r\n 2001          284           14.75898      19.41         4.787778      0 \r\n 2001          285           13.5426       17.22222      4.444445      0 \r\n 2001          286           6.384198      15.25944      6.261667      0 \r\n 2001          287           12.49815      14.35         3.982778      0 \r\n 2001          288           3.119088      9.35          3.733889      0.508 \r\n 2001          289           15.3103       10.1         -0.4311111     0 \r\n 2001          290           14.38371      16.87        -2.625         0 \r\n 2001          291           8.617367      15.57         6.66          0 \r\n 2001          292           9.158149      16.78         0.3961111     0 \r\n 2001          293           13.9182       22.06         3.732778      0 \r\n 2001          294           6.08249       18.01         7.8           7.112 \r\n 2001          295           3.673385      18.15         10.4          49.8094 \r\n 2001          296           6.405118      17.97         12.87         0 \r\n 2001          297           7.693162      16.36         3.406111      3.81 \r\n 2001          298           14.22819      8.44         -0.055         0 \r\n 2001          299           14.24598      5.201111     -2.578889      0 \r\n 2001          300           13.66821      8.92         -5.543889      0 \r\n 2001          301           12.673        19.66         2.497778      0 \r\n 2001          302           11.55035      17.65         5.307778      0 \r\n 2001          303           3.749324      15.91         7.2           4.318 \r\n 2001          304           6.392315      17.4          10.35         0 \r\n 2001          305           11.60056      22.6          11.42         0 \r\n 2001          306           12.10147      19.25         3.79          0 \r\n 2001          307           10.70912      21.58         6.306111      0 \r\n 2001          308           11.68453      20.85         7.49          0 \r\n 2001          309           11.28479      19.66         5.782778      0 \r\n 2001          310           10.66807      22.61         7.68          0 \r\n 2001          311           10.12959      23.42         10.46         0 \r\n 2001          312           7.935207      14.39        -2.077778      0 \r\n 2001          313           11.37998      13.53        -3.437222      0 \r\n 2001          314           11.03057      17.85         0.8938889     0 \r\n 2001          315           10.78803      14.71         0.65          0 \r\n 2001          316           9.538306      17.49         2.493889      0 \r\n 2001          317           4.218267      17.53         9.75          0.254 \r\n 2001          318           4.280567      19.68         13.64         0 \r\n 2001          319           9.008026      22.28         13.2          0 \r\n 2001          320           9.432409      24.19         10.27         0 \r\n 2001          321           8.735941      20.08         8.38          0 \r\n 2001          322           4.390773      17.16         4.408889      1.524 \r\n 2001          323           10.45975      7.91         -1.983889      0 \r\n 2001          324           8.489545      10.44        -5.49          0 \r\n 2001          325           7.97734       13.38         0.7238889     0 \r\n 2001          326           8.947903      16.25         4.53          0 \r\n 2001          327           1.956606      13.72         6.705         5.1308 \r\n 2001          328           4.476336      14.21         4.72          0 \r\n 2001          329           3.402889      6.666667      2.526111      0 \r\n 2001          330           1.949786      10.61611      0.2772222     4.8006 \r\n 2001          331           2.428143     -0.3977778    -1.516111      0 \r\n 2001          332           1.970246     -0.7027778    -3.297222      0 \r\n 2001          333           3.176493      2.285        -2.097222      0 \r\n 2001          334           1.627367      4.253889     -0.3938889     0 \r\n 2001          335           8.316411      9.86         -4.475         0 \r\n 2001          336           8.463814      14.44        -1.587778      0 \r\n 2001          337           4.334415      15.14         0.6377778     0 \r\n 2001          338           2.495296      17.64         12.97         0.51 \r\n 2001          339           2.803657      18.47        -0.1872222     0.25 \r\n 2001          340           8.62222       13.16        -1.016111      2.54 \r\n 2001          341           6.425871      8.3          -2.805         0 \r\n 2001          342           8.940288      4.028889     -5.162778      0 \r\n 2001          343           8.82778       8.77         -5.362778      0 \r\n 2001          344           8.535443      10.8         -4.103889      0 \r\n 2001          345           8.036418      10.19        -2.701111      0 \r\n 2001          346           1.181771      6.832222      1.991111      4.57 \r\n 2001          347           5.009461      2.001111     -2.558889      8.13 \r\n 2001          348           5.996593      5.858889     -4.493889      0 \r\n 2001          349           5.152387      8.73          2.182222      0 \r\n 2001          350           1.155997      8.12          2.005         3.81 \r\n 2001          351           7.06368       7.79         -1.72          0 \r\n 2001          352           5.614049      9.37         -1.607222      0 \r\n 2001          353           9.04221       3.652778     -5.018889      0.25 \r\n 2001          354           8.719247      9.96         -4.5           0 \r\n 2001          355           7.138574      8.59         -6.072778      0 \r\n 2001          356           2.515044      10.38        -6.112222      0.51 \r\n 2001          357           5.472254     -3.152222     -8.06          2.54 \r\n 2001          358           8.92648      -4.388889     -11.54         0 \r\n 2001          359           7.461034     -5.555555     -13.88889      0 \r\n 2001          360           4.753317     -4.88         -12.12278      0 \r\n 2001          361           3.544852     -2.213333     -7.625         0 \r\n 2001          362           6.92293      -1.9          -10.48         0 \r\n 2001          363           7.252295     -7.73         -13.76         0 \r\n 2001          364           6.883099     -6.162778     -14.55         0 \r\n 2001          365           9.471781     -5.672222     -15.35         0 \r\n 2002          1             7.41045      -5.97         -15.38         0 \r\n 2002          2             6.501853     -6.912222     -14.97         0 \r\n 2002          3             9.359734     -1.665        -12.03         0 \r\n 2002          4             7.67718       5.376111     -7.16          0 \r\n 2002          5             2.887085      4.761111     -2.98          0 \r\n 2002          6             3.74217      -0.7688889    -11.23         0 \r\n 2002          7             9.205846     -0.265        -15.76         0 \r\n 2002          8             7.866297      17.03        -3.686111      0 \r\n 2002          9             3.856393      14.78         1.683889      0 \r\n 2002          10            6.809293      7.02         -2.287222      0 \r\n 2002          11            9.290279      11.42        -7.08          0 \r\n 2002          12            9.244339      6.707778     -4.178889      0 \r\n 2002          13            3.818067      8.49         -2.548889      0 \r\n 2002          14            1.467161      3.217778     -0.8922222     0.25 \r\n 2002          15            4.948584      0.715        -4.712778      0.25 \r\n 2002          16            4.432488     -0.4211111    -9.44          0 \r\n 2002          17            9.470107      4.093889     -10.82         0 \r\n 2002          18            6.925482     -2.522222     -9.97          0 \r\n 2002          19            7.255767      2.126111     -5.547222      1.27 \r\n 2002          20            9.27212       4.721111     -6.897778      0 \r\n 2002          21            10.49167      10.4         -7.73          0 \r\n 2002          22            7.947006      14.73        -0.4588889     0 \r\n 2002          23            7.726509      3.422222     -6.406111      0 \r\n 2002          24            9.642571      6.47         -11.6          0 \r\n 2002          25            10.83664      14.12        -5.111111      0 \r\n 2002          26            10.65418      17.89         3.106111      0 \r\n 2002          27            8.631885      16.8          1.275         0 \r\n 2002          28            2.29074       1.285        -3.951111      0 \r\n 2002          29            1.187879     -3.42         -5.883889      0 \r\n 2002          30            3.115239     -2.557222     -6.192778      2.54 \r\n 2002          31            3.891455     -1.623889     -4.16          12.7 \r\n 2002          32            12.0559      -1.861111     -10.67         3.81 \r\n 2002          33            9.442242      2.89         -10.18         0 \r\n 2002          34            12.27858      3.512222     -10.42         0 \r\n 2002          35            13.11918     -6.357778     -18.7          0 \r\n 2002          36            12.14829      2.872222     -12.26         0 \r\n 2002          37            10.09219      2.815        -8.64          0 \r\n 2002          38            10.41188      2.558889     -3.116111      0 \r\n 2002          39            10.53958      6.392222     -2.925         0 \r\n 2002          40            5.227824      5.403889      1.806111      0 \r\n 2002          41            7.943491      1.862778     -7.3           4.06 \r\n 2002          42            11.07752      6.081111     -9.96          0 \r\n 2002          43            13.34571      5.087778     -3.143889      0 \r\n 2002          44            13.46307      6.872778     -8.34          0 \r\n 2002          45            7.758391      10.37        -0.2611111     0 \r\n 2002          46            13.15136      8.25          0.2822222     0 \r\n 2002          47            13.89967      8.82          0.1972222     0 \r\n 2002          48            13.52796      11.18        -3.951111      0 \r\n 2002          49            8.333942      14.61         1.511111      0 \r\n 2002          50            2.131497      11.14         3.518889      6.35 \r\n 2002          51            1.88849       3.565         1.807222      2.54 \r\n 2002          52            6.994518      4.787778     -2.625         0 \r\n 2002          53            12.72664      6.087778     -7.81          0 \r\n 2002          54            14.17983      16.79         1.54          0 \r\n 2002          55            12.69363      19.62        -1.456111      0 \r\n 2002          56            7.494841     -1.22         -9.89          0 \r\n 2002          57            11.55771     -7.6          -12.4          0.51 \r\n 2002          58            17.30322     -2.231111     -14.16         0 \r\n 2002          59            14.48108      4.061111     -7.68          0 \r\n 2002          60            6.885609     -1.795        -8.66          0 \r\n 2002          61            9.559855     -4.541111     -12.96         3.81 \r\n 2002          62            17.13633     -11.92        -19.44         0.25 \r\n 2002          63            8.677993      3.318889     -19.78         0 \r\n 2002          64            15.58896      16.82        -6.822222      0 \r\n 2002          65            15.25403      8.91         -1.701111      0 \r\n 2002          66            4.427551      14.08        -1.967222      0 \r\n 2002          67            3.360924      15.83         2.453889      11.94 \r\n 2002          68            15.16328      3.413889     -8.81          6.35 \r\n 2002          69            17.79597      2.183889     -10.37         0 \r\n 2002          70            13.98954      10.65        -2.256111      0 \r\n 2002          71            16.40961      14.53        -5.902778      0 \r\n 2002          72            12.61919      14.18         1.026111      0 \r\n 2002          73            16.51207      24.42         0.8572222     0 \r\n 2002          74            17.51812      5.687778     -2.466111      0 \r\n 2002          75            19.27351      9.13         -4.236111      0 \r\n 2002          76            4.393033      6.172222     -0.075         0 \r\n 2002          77            15.28315      10.91        -4.846111      0 \r\n 2002          78            1.914557      6.162222      2.342222      1.27 \r\n 2002          79            15.719        11.08        -1.503889      1.78 \r\n 2002          80            21.05749     -1.485        -11.02         0 \r\n 2002          81            21.51844      3.426111     -12            0 \r\n 2002          82            19.27774      12.67        -4.902222      0 \r\n 2002          83            2.78826       3.102778     -1.977222      0 \r\n 2002          84            12.13046     -0.5522223    -7.3           1.78 \r\n 2002          85            22.15549      5.461111     -8.45          0 \r\n 2002          86            17.38402      13.52        -4.522778      0 \r\n 2002          87            19.21648      18.37         6.355         2.79 \r\n 2002          88            19.03331      15.09         1.785         10.67 \r\n 2002          89            10.45146      9.04         -0.1772222     0 \r\n 2002          90            18.4091       9.42         -0.3372222     0.51 \r\n 2002          91            12.02561      12.37        -1.732222      0 \r\n 2002          92            10.64983      5.608889     -3.885         0 \r\n 2002          93            19.76689      2.671111     -6.077222      0 \r\n 2002          94            23.89005      6.743889     -7.86          0 \r\n 2002          95            23.55985      13.38        -2.465         0 \r\n 2002          96            21.15585      15           -3.428889      2.032 \r\n 2002          97            3.996013      10.78         6.802222      3.302 \r\n 2002          98            2.21296       9.95          6.287222      17.526 \r\n 2002          99            23.40458      15.19         0.67          0 \r\n 2002          100           21.41401      22.24         6.487778      0 \r\n 2002          101           12.59886      22.44         9.1           2.54 \r\n 2002          102           10.02767      13.31         4.265         0 \r\n 2002          103           14.49338      18.13         1.062778      0 \r\n 2002          104           20.62846      27.08         7.56          0 \r\n 2002          105           22.66762      29.64         15.6          0 \r\n 2002          106           17.088        27.52         19.35         0 \r\n 2002          107           22.82213      26.04         13.75         0 \r\n 2002          108           13.68775      28.02         17.08         4.572 \r\n 2002          109           16.49207      17.11         7.87          0 \r\n 2002          110           6.194705      12.52         4.54          17.018 \r\n 2002          111           5.669362      7.63          2.658889      3.81 \r\n 2002          112           24.35971      14.02         1.242778      0 \r\n 2002          113           23.38894      23.06         6.486111      1.016 \r\n 2002          114           14.92529      17.16         3.941111      6.35 \r\n 2002          115           23.40442      12.9          0.4988889     0 \r\n 2002          116           9.140032      10.96         4.022222      0 \r\n 2002          117           2.557889      16.5          6.116111      26.416 \r\n 2002          118           7.817344      8.94          3.197778      0 \r\n 2002          119           19.25514      19.59         0.8011111     0 \r\n 2002          120           8.375824      16.06         7.25          8.382 \r\n 2002          121           5.878143      14.8          4.115         4.826 \r\n 2002          122           26.11711      13.7          3.367222      0 \r\n 2002          123           25.31563      18.89         2.427778      0 \r\n 2002          124           23.73746      21.79         6.582778      0 \r\n 2002          125           24.02716      26.08         8.17          0 \r\n 2002          126           22.54733      25.33         15.27         8.128 \r\n 2002          127           16.17551      23.12         12.07         0 \r\n 2002          128           21.15246      26.37         9.4           4.826 \r\n 2002          129           26.57212      14.99         4.047778      1.524 \r\n 2002          130           21.39643      18.05         2.341111      0.254 \r\n 2002          131           2.137271      13.4          8.78          47.498 \r\n 2002          132           5.577565      11.27         7.98          0 \r\n 2002          133           26.8176       20.08         3.85          0 \r\n 2002          134           28.48187      20.61         5.193889      0 \r\n 2002          135           15.85033      23.5          11.89         1.778 \r\n 2002          136           7.314636      17.25         10.73         5.588 \r\n 2002          137           12.43376      14.84         5.888889      1.524 \r\n 2002          138           27.04115      15.88         1.251111      0 \r\n 2002          139           27.98217      17.04         2.821111      0 \r\n 2002          140           28.16836      15.86         2.358889      0.254 \r\n 2002          141           29.40649      16.62         2.735         0 \r\n 2002          142           24.49724      23.55         8.23          0 \r\n 2002          143           7.916546      19.47         13.24         4.826 \r\n 2002          144           20.49428      17.62         6.461111      7.62 \r\n 2002          145           18.52554      19.59         9.29          16.256 \r\n 2002          146           27.27048      22.86         9.86          0 \r\n 2002          147           23.29756      24.68         13.7          0 \r\n 2002          148           23.05296      27.07         15.6          0.762 \r\n 2002          149           24.16808      27.62         16.24         0 \r\n 2002          150           25.1932       29.44444      17.77778      0 \r\n 2002          151           24.30352      30.32         20.13         0 \r\n 2002          152           22.35131      32.45         20.19         8.382 \r\n 2002          153           17.9904       29.5          17.75         0 \r\n 2002          154           20.44072      30.37         22.36         0 \r\n 2002          155           9.193336      24.13         14.13         13.716 \r\n 2002          156           21.50576      23.12         12.38         0 \r\n 2002          157           28.08849      24.73         11.03         0 \r\n 2002          158           27.69804      27.26         13.37         0 \r\n 2002          159           25.48947      28.59         17.04         0 \r\n 2002          160           23.9003       29.77         17.47         0 \r\n 2002          161           11.60939      26.88         21.45         1.27 \r\n 2002          162           8.432308      24.48         18.32         18.796 \r\n 2002          163           15.22135      26.53         18.71         8.382 \r\n 2002          164           23.6378       23.88889      14.61722      0 \r\n 2002          165           23.24693      22.95         12            0 \r\n 2002          166           23.79148      25.48056      13.33333      0 \r\n 2002          167           26.44698      26.61         13.585        0 \r\n 2002          168           19.47932      25.95444      15.43111      0 \r\n 2002          169           21.82245      27.7          17.26         0 \r\n 2002          170           21.4102       28.91         20.5          0 \r\n 2002          171           21.7378       30.63         20.48         0 \r\n 2002          172           23.71717      30.4          21.49         0 \r\n 2002          173           25.9321       31.36         20.79         0 \r\n 2002          174           27.20558      30.73         18.68         0 \r\n 2002          175           25.74428      30.78         17.91         0 \r\n 2002          176           25.05308      32.5          20.3          0 \r\n 2002          177           14.97182      31.55         20.16         2.54 \r\n 2002          178           27.5908       29.41         17.92         0 \r\n 2002          179           25.3009       29.23         16            0 \r\n 2002          180           24.5369       33.48         19.54         0 \r\n 2002          181           25.67265      31.57         22.13         0 \r\n 2002          182           26.48543      31.53         19.42         0 \r\n 2002          183           22.16825      30.61         17.61         0 \r\n 2002          184           24.69786      32.09         19.93         0 \r\n 2002          185           20.84431      32.79         20.23         9.652 \r\n 2002          186           22.16357      31.62         20.52         6.9342 \r\n 2002          187           19.25473      32.77778      20.58055      15.1892 \r\n 2002          188           23.35726      30.78222      19.74889      0 \r\n 2002          189           25.5419       33.78556      22.79667      0 \r\n 2002          190           23.78688      31.65167      21.88056      2.667 \r\n 2002          191           15.69849      27.27333      19.27278      41.2496 \r\n 2002          192           9.819387      22.73         16.51         19.304 \r\n 2002          193           20.79963      24.96         16.31         6.35 \r\n 2002          194           26.37045      26.83         14.3          0 \r\n 2002          195           28.26844      27.16         14.31         0 \r\n 2002          196           27.65222      28.89         14.87         0 \r\n 2002          197           23.06133      29.68         16.34         0 \r\n 2002          198           24.90559      31.87         19.13         0 \r\n 2002          199           21.29305      32.77778      21.11111      0 \r\n 2002          200           18.9957       30.08         22.11         0 \r\n 2002          201           25.85084      34.99         21.69         0 \r\n 2002          202           25.99946      34.66         24.53         0 \r\n 2002          203           14.37673      27.3          18.91         2.286 \r\n 2002          204           25.64729      26.25         15.37         0 \r\n 2002          205           24.89417      27.88         16.03         0 \r\n 2002          206           24.83459      31.14         18.95         6.604 \r\n 2002          207           8.627785      27.24         22.83         1.778 \r\n 2002          208           22.79749      32.92         23.51         1.016 \r\n 2002          209           23.0415       32.87         21.22         13.208 \r\n 2002          210           25.82323      31.2          20.94         2.54 \r\n 2002          211           22.92443      32.2          19.27         0 \r\n 2002          212           24.7574       32.41         20.04         0 \r\n 2002          213           21.63869      33.81         18.7          0 \r\n 2002          214           24.83317      26.54         14.43         0 \r\n 2002          215           22.80347      33.88         17.49         0 \r\n 2002          216           16.23359      34.85         23.3          0 \r\n 2002          217           10.0011       28.9          21.34         0 \r\n 2002          218           9.969133      25.84         17.49         6.096 \r\n 2002          219           24.36494      26.66667      16.66667      0 \r\n 2002          220           24.91706      27.65         13.9          0 \r\n 2002          221           22.10487      29.22         14.73         0 \r\n 2002          222           18.70269      30.19         17.03         0 \r\n 2002          223           22.61013      32.63         18.88         0 \r\n 2002          224           15.05801      29.46         18.72         2.032 \r\n 2002          225           6.610846      19.64         12.46         8.382 \r\n 2002          226           24.27779      27.11         12.27         0.254 \r\n 2002          227           15.62703      27.93         14.77         0 \r\n 2002          228           13.85255      25.84         16.7          0 \r\n 2002          229           15.88619      23.9          15.77         1.524 \r\n 2002          230           10.0752       22.17         13.87         16.002 \r\n 2002          231           19.37782      24.53         15.65         9.398 \r\n 2002          232           9.090954      24.06         15.74         4.318 \r\n 2002          233           12.58652      30.36         21.86         0 \r\n 2002          234           16.39546      28.65         20.84         4.064 \r\n 2002          235           16.27032      28.42         19.09         13.462 \r\n 2002          236           16.65169      26.79611      17.77778      0 \r\n 2002          237           16.93227      28.85         16.8          0 \r\n 2002          238           20.67678      29.54         16.91         0 \r\n 2002          239           16.65374      28.38         17.13         0 \r\n 2002          240           21.17765      28.23         16.53         0 \r\n 2002          241           17.39477      26.66667      16.66667      0 \r\n 2002          242           19.07297      27.69         14.69         0 \r\n 2002          243           18.39546      29.24         16.07         0 \r\n 2002          244           19.59338      30.44         17.61         0 \r\n 2002          245           20.09161      34.05         18.95         0 \r\n 2002          246           22.01274      28.31         13.25         0 \r\n 2002          247           21.36183      29.5          12.62         0 \r\n 2002          248           20.07994      30.55556      15.55556      0 \r\n 2002          249           18.86114      32.015        17.54889      0 \r\n 2002          250           20.69561      32.82         18.03         0 \r\n 2002          251           18.7808       32.14         19.77         0 \r\n 2002          252           17.9284       32.05         19.38         0 \r\n 2002          253           8.473102      24.53         14.36         0 \r\n 2002          254           19.56899      24.67         10.08         0 \r\n 2002          255           16.41605      24.82         9.83          0 \r\n 2002          256           13.02592      26.66         13.81         0 \r\n 2002          257           9.571988      25.2          15.13         0.508 \r\n 2002          258           17.89058      23.59         9.75          0 \r\n 2002          259           19.69538      26.8          8.03          0 \r\n 2002          260           11.22195      26.95         13.5          0.508 \r\n 2002          261           10.29147      28.42         17.92         12.954 \r\n 2002          262           9.171077      21.11         15.9          7.112 \r\n 2002          263           13.71281      24.01         12.16         0 \r\n 2002          264           16.85073      22.17         11.09         0 \r\n 2002          265           19.28644      18.66         6.152778      0 \r\n 2002          266           17.89572      21.32         4.738889      0 \r\n 2002          267           18.67558      20.42889      2.777778      0 \r\n 2002          268           16.58487      25.94         11.35         0 \r\n 2002          269           17.70121      26.21         8.9           0 \r\n 2002          270           7.345974      15.95         9.7           0.508 \r\n 2002          271           15.31156      27.88         8.72          0 \r\n 2002          272           16.01681      31.34         15.92         0 \r\n 2002          273           15.73519      31.39         18.89         0 \r\n 2002          274           8.891879      30.19         17.89         28.194 \r\n 2002          275           1.919577      19.54         10.67         12.446 \r\n 2002          276           3.640247      19.92         10.89         0 \r\n 2002          277           7.798056      21.64         4.928889      0.762 \r\n 2002          278           16.59408      20.6          2.632778      0 \r\n 2002          279           15.89564      18.07         6.985         0.762 \r\n 2002          280           16.70738      16.69        -0.6572222     0 \r\n 2002          281           16.14451      22.63         6.145         0 \r\n 2002          282           15.07227      20.87         8.99          0 \r\n 2002          283           15.52264      23.88         8.66          0 \r\n 2002          284           15.34377      24.22         8.99          0 \r\n 2002          285           4.003168      15.46         2.943889      0.254 \r\n 2002          286           16.10648      13.94        -1.956111      0 \r\n 2002          287           15.93305      16.06         1.692222      0 \r\n 2002          288           14.42346      13.06         0.5088889     0 \r\n 2002          289           10.89275      9.49         -3.305         2.794 \r\n 2002          290           5.28071       10.58         2.227778      0 \r\n 2002          291           13.52792      22.05         5.08          0 \r\n 2002          292           11.08162      9.1          -0.4222222     0 \r\n 2002          293           14.76965      12.89        -5.238889      0 \r\n 2002          294           12.30284      17.67         1.248889      0 \r\n 2002          295           9.77759       8.91          0.9788889     0 \r\n 2002          296           2.544751      3.167778      0.1888889     4.064 \r\n 2002          297           1.290722      5.186111     -4.777778E-02                17.018 \r\n 2002          298           1.789957      7.31          4.985         4.318 \r\n 2002          299           8.130893      9.58         -0.3           0 \r\n 2002          300           2.142752      4.217778     -0.845         1.27 \r\n 2002          301           2.306012      5.535         2.341111      0.762 \r\n 2002          302           1.771464      5.837778      3.216111      3.302 \r\n 2002          303           2.62705       5.667222      2.53          1.016 \r\n 2002          304           6.117426      2.85         -4.857222      0 \r\n 2002          305           13.32935      4.301111     -7.14          0 \r\n 2002          306           9.752402      7.3          -5.942222      0 \r\n 2002          307           2.483957      4.746111      0.1877778     0 \r\n 2002          308           2.340822      0.2727778    -3.552222      0 \r\n 2002          309           2.660773      4.171111     -1.212222      3.048 \r\n 2002          310           10.65556      13.64        -0.3472222     0 \r\n 2002          311           11.9798       19.42        -0.5538889     0 \r\n 2002          312           7.31631       17.49         7.04          0 \r\n 2002          313           5.831283      18.39         7.2           0 \r\n 2002          314           10.40728      10.97         1.048889      0 \r\n 2002          315           3.224944      1.551111     -5.815         0 \r\n 2002          316           11.13463      14.65        -7.36          0 \r\n 2002          317           6.71599       16.53        -1.626111      0 \r\n 2002          318           2.028738      9.18          0.7438889     0 \r\n 2002          319           7.936086      4.056111     -4.207222      0 \r\n 2002          320           9.651986      3.507778     -5.317222      0 \r\n 2002          321           10.29193      6.067222     -7.64          0 \r\n 2002          322           4.046807      7.27          0.5277778     0 \r\n 2002          323           6.015295      13.66        -0.3077778     0 \r\n 2002          324           8.882047      15.49         1.966111      0 \r\n 2002          325           3.323435      6.916111      0.2261111     0 \r\n 2002          326           10.58895      5.656111     -5.787222      0 \r\n 2002          327           10.21013      9.74         -1.11          0 \r\n 2002          328           1.973091      1.872222     -8.49          0 \r\n 2002          329           6.56457      -3.562222     -10.88         0 \r\n 2002          330           7.660695      0.1811111    -9.97          0 \r\n 2002          331           6.22939      -1.662778     -12.65         0 \r\n 2002          332           10.05921      7.222222     -8.333333      0 \r\n 2002          333           6.839292      12.93         2.265         0 \r\n 2002          334           10.19147      4.482778     -10.71         0 \r\n 2002          335           9.694663      12.02        -12.22         0 \r\n 2002          336           8.887318      3.5          -8.36          0 \r\n 2002          337           7.075018     -2.417222     -10.3          0 \r\n 2002          338           6.466079     -1.238889     -9.96          0 \r\n 2002          339           7.159243     -3.296111     -10.5          0 \r\n 2002          340           9.564247      7.84         -12.36         0 \r\n 2002          341           9.45743       8.94         -5.355         0 \r\n 2002          342           7.692242     -0.5238889    -9.49          0 \r\n 2002          343           9.170868      5.297222     -11.63         0 \r\n 2002          344           8.639249      9.6          -5.688889      0 \r\n 2002          345           5.222887      7.43         -0.8722222     0 \r\n 2002          346           2.191119      7.222222     -2.127222      0 \r\n 2002          347           5.845634      5.916111     -5.287778      0 \r\n 2002          348           8.815145      12.11        -7.07          0 \r\n 2002          349           7.86797       16.83        -2.787778      0 \r\n 2002          350           2.712278      2.456111     -8.388889E-02                0 \r\n 2002          351           1.350846      9.77          1.37          0 \r\n 2002          352           8.109178      15.71         0.1427778     0.76 \r\n 2002          353           4.536962      5.782778     -2.767778      0 \r\n 2002          354           3.407366      1.907222     -3.8           0 \r\n 2002          355           8.135746      1.979445     -6.666667      0 \r\n 2002          356           8.402267      1.155556     -6.05          0 \r\n 2002          357           6.137217     -1.163889     -8.95          0 \r\n 2002          358           3.44088      -5.21         -8.16          0 \r\n 2002          359           4.892226     -3.685        -11.32         0 \r\n 2002          360           9.287099      5.221111     -11.53         0 \r\n 2002          361           2.391323      1.062222     -5.181111      0 \r\n 2002          362           7.132507      13.41        -4.197222      0 \r\n 2002          363           7.440533      13.49        -3.185         0 \r\n 2002          364           6.99979       11.14        -1.365         0 \r\n 2002          365           9.405339      4.642778     -8.26          0 \r\n 2003          1             4.824487      0.9677778    -6.201111      0 \r\n 2003          2             2.888006     -1.843889     -9.25          0 \r\n 2003          3             9.286555      3.745        -12.22         0 \r\n 2003          4             4.860218      10.71        -5.096111      0 \r\n 2003          5             2.591988      1.92         -1.238889      0 \r\n 2003          6             7.972026      1.933889     -6.637222      0 \r\n 2003          7             9.096351      14.86        -5.707222      0 \r\n 2003          8             9.209486      19.22         1.972778      0 \r\n 2003          9             9.761481      5.952778     -3.981111      0 \r\n 2003          10            9.834074     -3.981111     -12.62         0 \r\n 2003          11            10.40063     -3.532778     -15.95         0 \r\n 2003          12            9.948464      5.925        -14.26         0 \r\n 2003          13            6.73624      -2.135        -10.67         0 \r\n 2003          14            10.72966     -4.341111     -12.87         0 \r\n 2003          15            4.634575     -6.761111     -16.07         0 \r\n 2003          16            9.771774     -5.545        -12.91         5.08 \r\n 2003          17            11.59089     -10.17        -19.73         0 \r\n 2003          18            9.572532     -6.832222     -15.35         0 \r\n 2003          19            8.795396      2.908889     -16.46         0 \r\n 2003          20            9.971016     -3.513889     -9.56          0 \r\n 2003          21            8.45758      -8.13         -13.67         0 \r\n 2003          22            6.882136     -11.35        -19.28         0 \r\n 2003          23            12.37778     -14.95        -22.41         0 \r\n 2003          24            7.091169     -7.63         -18.06         0 \r\n 2003          25            9.732988      1.391111     -13.39         0 \r\n 2003          26            12.50769     -12.85        -18.3          0.51 \r\n 2003          27            10.75556      0.1061111    -14.79         0.25 \r\n 2003          28            4.087266      2.142778     -5.363889      0 \r\n 2003          29            8.567535     -4.255        -9.84          2.54 \r\n 2003          30            8.520465      4.511111     -8.98          0 \r\n 2003          31            2.645083      2.593889      0.2261111     2.29 \r\n 2003          32            9.400067      9.67         -2.142778      0 \r\n 2003          33            5.789777      6.457778     -0.4577778     0 \r\n 2003          34            1.300596      2.306111     -8.55          0 \r\n 2003          35            12.93634     -6.637778     -14.2          3.3 \r\n 2003          36            8.148424     -1.541111     -13.97         0 \r\n 2003          37            11.87068     -4.436111     -17.08         0 \r\n 2003          38            14.77529     -7.71         -22.3          0 \r\n 2003          39            5.541499      3.111111E-02               -10.76         0 \r\n 2003          40            4.56215      -4.55         -15.63         0 \r\n 2003          41            12.15632     -2.917222     -12.17         0.51 \r\n 2003          42            12.74965      5.562778     -13.05         0.51 \r\n 2003          43            13.55181      2.68         -15.08         0 \r\n 2003          44            13.21989      10.3         -9.6           0 \r\n 2003          45            2.470066      3.585        -0.2127778     0 \r\n 2003          46            6.069101     -0.1188889    -9.27          15.24 \r\n 2003          47            16.48412     -6.29         -16.08         1.02 \r\n 2003          48            14.46128     -0.7338889    -20.8          0 \r\n 2003          49            12.27167      8.41         -6.783889      0 \r\n 2003          50            15.98777      5.107222     -6.422778      0 \r\n 2003          51            15.99936      10.93        -2.032222      0 \r\n 2003          52            14.33079      11.75        -1.793889      0 \r\n 2003          53            3.541254     -0.3472222    -5.085         0 \r\n 2003          54            10.80727     -5.076111     -12.2          0 \r\n 2003          55            15.64757     -12.19        -20.36         1.52 \r\n 2003          56            11.05961     -9.27         -23.49         0 \r\n 2003          57            17.22628     -1.297778     -12.31         0 \r\n 2003          58            11.47742      0.525        -8.36          0 \r\n 2003          59            11.3427       3.272778     -6.59          0 \r\n 2003          60            5.266024      0.5177778    -3.611111      2.54 \r\n 2003          61            18.90938     -1.006111     -13.01         0 \r\n 2003          62            8.656194      6.927778     -9.71          0 \r\n 2003          63            1.607702     -1.701111     -13.1          0 \r\n 2003          64            14.59798     -6.97         -15.12         9.14 \r\n 2003          65            16.90897     -0.9788889    -15.9          0 \r\n 2003          66            15.22143      1.228889     -4.322778      0 \r\n 2003          67            6.221859     -3.23         -14.3          0 \r\n 2003          68            19.3974      -6.628889     -16.07         0 \r\n 2003          69            14.35694     -4.031111     -13.41         0 \r\n 2003          70            16.2445       12.14        -8.9           0 \r\n 2003          71            4.64696       5.165         1.25          0 \r\n 2003          72            13.40503      8.55         -0.1777778     0 \r\n 2003          73            14.92705      14.83        -0.9761111     0 \r\n 2003          74            19.2787       23.42         4.191111      0 \r\n 2003          75            15.80033      24.69         8.67          0 \r\n 2003          76            17.17908      24.04         9.83          0 \r\n 2003          77            10.10532      18.05         7.82          0 \r\n 2003          78            1.255535      7.83          3.092778      1.27 \r\n 2003          79            3.203856      6.02          1.27          7.11 \r\n 2003          80            17.98053      11.01        -0.5822222     0 \r\n 2003          81            21.34488      16.15        -1.036111      0 \r\n 2003          82            18.91867      21.65         1.73          0 \r\n 2003          83            17.15771      16.84         7.902222      0 \r\n 2003          84            20.14148      16.28778      2.902222      0 \r\n 2003          85            12.44773      15.97333      1.535         0 \r\n 2003          86            9.376804      15.345        4.667222      0.51 \r\n 2003          87            4.542485      8.313889      0.7383333     6.35 \r\n 2003          88            14.08058      7.969444     -0.88          0 \r\n 2003          89            18.67658      11.17111     -3.335         0 \r\n 2003          90            16.80077      22.09        -1.391111      0 \r\n 2003          91            22.69586      28.60889      9.658334      0 \r\n 2003          92            21.88981      26.86222      9.768333      0.508 \r\n 2003          93            10.46979      23.02444      4.116667      0 \r\n 2003          94            3.35515       5.839445     -1.139444      6.096 \r\n 2003          95            20.06747      3.378333     -2.655555      0 \r\n 2003          96            3.993335      4.572778     -1.831111      14.3256 \r\n 2003          97            3.349041      2.966667     -1.893333      0 \r\n 2003          98            8.122943      5.094444     -3.373333      0 \r\n 2003          99            25.31048      11.99        -4.761667      0 \r\n 2003          100           25.46244      19           -1.39          0 \r\n 2003          101           22.21654      23.62         3.105         0 \r\n 2003          102           24.3241       22.56         4.16          0 \r\n 2003          103           22.41444      25.28         6.382778      0 \r\n 2003          104           23.10547      29.37         12.76         0 \r\n 2003          105           18.27404      28.1          14.87         0 \r\n 2003          106           8.685147      21.07         8.01          1.016 \r\n 2003          107           7.930521      10.77         4.721111      0 \r\n 2003          108           7.889894      14.87         6.237778      0.508 \r\n 2003          109           1.447748      13.82         8.57          21.844 \r\n 2003          110           4.392154      10.95         7.24          2.794 \r\n 2003          111           15.94397      16.8          7.19          0 \r\n 2003          112           20.36177      19.69         1.653889      0 \r\n 2003          113           13.20236      19.1          5.496111      1.016 \r\n 2003          114           1.057088      10.76         8.2           16.256 \r\n 2003          115           13.46763      19.22         6.257778      2.54 \r\n 2003          116           17.29293      21.1          4.88          0 \r\n 2003          117           17.78656      23.53         8.93          0 \r\n 2003          118           14.252        20.55         11.8          0 \r\n 2003          119           6.828874      13.56         8.41          9.144 \r\n 2003          120           8.718912      23.31         9.26          2.032 \r\n 2003          121           9.9           14.18         8.77          0 \r\n 2003          122           18.3          18.09         7.87          0 \r\n 2003          123           21.6          19.95         7.7           0 \r\n 2003          124           3.7           14.86         10.11         41.402 \r\n 2003          125           17.6          18.25         8.47          2.032 \r\n 2003          126           18.1          21.14         8.06          0.762 \r\n 2003          127           25.9          20.06         9.48          0.508 \r\n 2003          128           4.6           16.15         7.88          0.508 \r\n 2003          129           26.9          22.78         12.91         0.508 \r\n 2003          130           9.8           23.56         7.48          0.254 \r\n 2003          131           9.5           13.18         7.38          0 \r\n 2003          132           29            20.14         6.763889      0.254 \r\n 2003          133           24.5          22.22222      11.11111      3.5814 \r\n 2003          134           23.4          24.17         10.24         0 \r\n 2003          135           15.2          17.17         9.56          0 \r\n 2003          136           18.7          18.98         8.05          0 \r\n 2003          137           28.7          22.92         9.24          0 \r\n 2003          138           24            22.1          12.17         0 \r\n 2003          139           5.3           22.87         10.62         0 \r\n 2003          140           28.2          15.74         6.052222      0 \r\n 2003          141           27.8          17.95         4.011111      0 \r\n 2003          142           25.2          20.77         5.848889      0 \r\n 2003          143           23.9          20.6          12.06         0 \r\n 2003          144           6.7           18.08         8.23          3.556 \r\n 2003          145           27.9          23.09         6.638889      0 \r\n 2003          146           27.3          24.91         10.08         0 \r\n 2003          147           29.7          27.47         8.05          0 \r\n 2003          148           27            27.45         15.1          1.27 \r\n 2003          149           27.2          24.94         10.83         0 \r\n 2003          150           29.2          31.93         13.98         0 \r\n 2003          151           29.7          22.47         11.49         0 \r\n 2003          152           20.5          21.14         12.36         0 \r\n 2003          153           4.1           13.53         10.25         5.842 \r\n 2003          154           10.5          15.88         10.18         4.318 \r\n 2003          155           24.6          21.82         9.79          0.762 \r\n 2003          156           21.5          23.32         10.15         2.794 \r\n 2003          157           20.8          20.87278      12.77389      4.7498 \r\n 2003          158           13.9          22.07         10.09         1.016 \r\n 2003          159           18.5          20.73         10.96         0.508 \r\n 2003          160           27.3          26.07         10.27         0.762 \r\n 2003          161           20.1          24.4          15.46         1.524 \r\n 2003          162           23.7          24.04         13.91         0.254 \r\n 2003          163           11            25.35         16.04         0 \r\n 2003          164           25.7          28.29         17.77         0.254 \r\n 2003          165           28.3          29.31         14.58         0 \r\n 2003          166           23.3          27.26         16.48         0 \r\n 2003          167           26.8          28.87         15.78         0 \r\n 2003          168           27.6          29.66         14.95         0 \r\n 2003          169           15.3          27.76         18.14         0 \r\n 2003          170           25.5          25.11         14.03         0 \r\n 2003          171           32.4          25.25         10.53         0 \r\n 2003          172           23.8          26.67         13.48         0 \r\n 2003          173           17            29.29         16.33         0 \r\n 2003          174           21            31.17         19.89         0 \r\n 2003          175           23.1          32.86         22.8          0 \r\n 2003          176           6.5           29.88         16.02         37.592 \r\n 2003          177           29.2          23.36         12.14         0 \r\n 2003          178           31            28.76         12.39         0 \r\n 2003          179           29.9          27.95333      17.22222      0 \r\n 2003          180           18.9          27.13722      17.23         0 \r\n 2003          181           29.7          28.59556      14.74944      0 \r\n 2003          182           27.2          29.45611      17.14611      0 \r\n 2003          183           28.7          30.27         17.61         0 \r\n 2003          184           27            34.56         20.67         0 \r\n 2003          185           25            31.31         22.73         0 \r\n 2003          186           28            33.57         19.08         45.466 \r\n 2003          187           26.7          31.35         18.35         0.254 \r\n 2003          188           26            31.7          22.51         0 \r\n 2003          189           17.4          28.81         21.55         2.794 \r\n 2003          190           14.3          29.74         19.04         11.684 \r\n 2003          191           27.2          24.31         17.52         0 \r\n 2003          192           28.3          27.57         15.53         0 \r\n 2003          193           28.5          26.61         14.41         0 \r\n 2003          194           28.9          27.33         15.26         0 \r\n 2003          195           26.7          31.39         18.25         0 \r\n 2003          196           30.4          29.61         19.02         0 \r\n 2003          197           24.2          29.02         15.32         5.08 \r\n 2003          198           22.9          32.49         19.75         0 \r\n 2003          199           17.8          27.67         20.98         0 \r\n 2003          200           15.8          26.01         19.3          0 \r\n 2003          201           23.2          31.01         18.65         0 \r\n 2003          202           22.7          26.31         17.16         0 \r\n 2003          203           22            24.68         13.27         0 \r\n 2003          204           27.4          25.48         11.11         0 \r\n 2003          205           26.3          26.93         13.08         0 \r\n 2003          206           26.5          31.06         17.58         0 \r\n 2003          207           26.1          35.15         21.33         0 \r\n 2003          208           12            27.98         22.22         0 \r\n 2003          209           23.8          28.21         18.51         9.144 \r\n 2003          210           24.8          28.25         15.07         0 \r\n 2003          211           21.2          28.3          17.34         0 \r\n 2003          212           14.5          28.88         17.19         0 \r\n 2003          213           11.8          27.42         17.12         0 \r\n 2003          214           26.4          29.14         16.32         0 \r\n 2003          215           25.7          28.84         14.9          0 \r\n 2003          216           21.8          27.24         14.17         0 \r\n 2003          217           22.1          28.2          16.45         0 \r\n 2003          218           18.6          27.84         17            0 \r\n 2003          219           24.7          29.45         16.23         0 \r\n 2003          220           24.4          29.26         15.71         0 \r\n 2003          221           24.2          28.85         14.86         0 \r\n 2003          222           22.4          28.97         14.9          0 \r\n 2003          223           20.9          29.02         18.27         8.89 \r\n 2003          224           20.6          25.54         15.54         0 \r\n 2003          225           22.2          27.91         16.63         0 \r\n 2003          226           18            28.9          18.02         0 \r\n 2003          227           24.9          33.56         19.1          0 \r\n 2003          228           26            35.87         19.47         0 \r\n 2003          229           25            36.81         20.97         0 \r\n 2003          230           23.6          36.33         21.87         0 \r\n 2003          231           19.8          32.57         22.4          0 \r\n 2003          232           21            37.11         22.85         0.508 \r\n 2003          233           24.1          33.43         20.6          0 \r\n 2003          234           23.7          29.65         16.55         0 \r\n 2003          235           22.5          30.15         16.99         0 \r\n 2003          236           23.1          36.46         17.78         0 \r\n 2003          237           22.4          38.97         20.22         0 \r\n 2003          238           19.6          36.99         22.47         0 \r\n 2003          239           20.9          34.83         20.76         2.794 \r\n 2003          240           13.3          30.06         21.04         2.54 \r\n 2003          241           21.3          31.34         19.54         0 \r\n 2003          242           12.1          24.96         15.69         0 \r\n 2003          243           5.6           18.97         13.97         14.224 \r\n 2003          244           15.42536      23.63         13.91         0 \r\n 2003          245           20.81523      27.47         11.49         0 \r\n 2003          246           20.6111       28.51         12            0 \r\n 2003          247           21.31639      25.05         8.94          0 \r\n 2003          248           20.98339      28.49         10.32         0 \r\n 2003          249           20.21073      30.02         12.83         0 \r\n 2003          250           19.73538      30.44         12.63         0 \r\n 2003          251           20.34173      29.07         13.14         0 \r\n 2003          252           15.22574      28.68         13.86         0 \r\n 2003          253           17.83706      29.98         16.04         0 \r\n 2003          254           12.14013      30.59         19.13         38.1 \r\n 2003          255           5.421418      20.74         15.53         15.748 \r\n 2003          256           2.269736      17.81         14.92         47.752 \r\n 2003          257           18.74202      21.92         10.66         0 \r\n 2003          258           19.66961      26.2          7.12          0 \r\n 2003          259           17.86183      26.58         11.01         0 \r\n 2003          260           17.83748      27.83         16.6          0 \r\n 2003          261           7.661448      24.52         8.47          11.43 \r\n 2003          262           20.0237       17.96         4.283889      0 \r\n 2003          263           19.05716      20.79         4.822222      0 \r\n 2003          264           3.09457       16.78         10.16         14.986 \r\n 2003          265           15.36549      20.19         6.802778      0.254 \r\n 2003          266           17.93426      23.54         5.241111      0 \r\n 2003          267           16.45111      21.01         7.46          0 \r\n 2003          268           18.3299       18.05         3.377222      0 \r\n 2003          269           10.86417      20.27         8.76          0.762 \r\n 2003          270           12.27188      16.73         6.438889      0 \r\n 2003          271           18.07764      14.82         3.293889      0 \r\n 2003          272           15.36034      17.86        -0.7138889     0 \r\n 2003          273           8.791379      12.97         1.176111      0 \r\n 2003          274           17.8812       14.3          0.8661111     0 \r\n 2003          275           16.89474      14.96        -3.201111      0 \r\n 2003          276           12.70936      21.82         5.572778      0 \r\n 2003          277           16.12802      24.25         3.903889      0 \r\n 2003          278           15.65494      27.34         8.4           0 \r\n 2003          279           15.92815      26.98         8.63          0 \r\n 2003          280           15.8359       25.5          11.11         0 \r\n 2003          281           13.74055      26.05         12.75         0 \r\n 2003          282           13.81184      25.45         12.32         0 \r\n 2003          283           11.47663      23.7          12.7          0 \r\n 2003          284           5.548444      23.05         6.737778      8.636 \r\n 2003          285           15.74104      20.59         3.867778      0.254 \r\n 2003          286           9.306597      20.86         6.696111      13.97 \r\n 2003          287           14.95897      17.87         6.527778      1.016 \r\n 2003          288           9.116392      16.15         1.992778      0.254 \r\n 2003          289           5.749193      9.91          1.213889      0 \r\n 2003          290           13.62076      15.72        -9.277778E-02                0 \r\n 2003          291           14.10004      25.32         7.2           0 \r\n 2003          292           13.87285      29.21         7.37          0 \r\n 2003          293           13.46604      29.44         13.66         0 \r\n 2003          294           10.40201      23.67         9.74          0 \r\n 2003          295           13.56055      21.79         5.097778      0 \r\n 2003          296           13.38416      18.46         4.518889      0 \r\n 2003          297           9.652864      20.55         6.942778      0 \r\n 2003          298           12.05871      14.18         2.482778      0 \r\n 2003          299           5.386565      5.353889      1.486111      0 \r\n 2003          300           8.62063       11.91         2.621111      6.858 \r\n 2003          301           10.31427      10.73         1.147778      0 \r\n 2003          302           9.289987      14.32         0.9872222     0 \r\n 2003          303           8.142483      20.72         5.972778      0 \r\n 2003          304           2.833028      7.35          0.7427778     0 \r\n 2003          305           3.882752      3.983889     -1.032778      0.762 \r\n 2003          306           1.105915      4.587222      3.642222      56.642 \r\n 2003          307           1.577912      9.27          4.313889      15.9258 \r\n 2003          308           2.432159      11.23         0.4988889     0 \r\n 2003          309           3.942165      0.545        -3.866111      0 \r\n 2003          310           12.4692       5.002222     -5.392222      0 \r\n 2003          311           11.52818      5.923889     -5.658889      0 \r\n 2003          312           7.115812      0.3277778    -8.87          0 \r\n 2003          313           9.164466      7.28         -6.212778      0 \r\n 2003          314           1.777489      9.5          -1.353889      0 \r\n 2003          315           6.758122      15.55         6.447778      0 \r\n 2003          316           11.49269      11.29         0.1311111     0 \r\n 2003          317           9.874617      4.7          -4.427222      0 \r\n 2003          318           3.66259       7.55          0.6127778     0 \r\n 2003          319           1.823764      8.33          5.66          0 \r\n 2003          320           10.63468      14.04         2.502222      0 \r\n 2003          321           2.095766      13.43         5.753889      4.2418 \r\n 2003          322           7.345598      13.48         3.963889      0 \r\n 2003          323           10.50774      18.34         0.6777778     0 \r\n 2003          324           10.49192      21.49         4.027778      0 \r\n 2003          325           8.96422       9.2           0.4522222     0 \r\n 2003          326           2.961268      5.695         2.925         9.4488 \r\n 2003          327           1.409506      4.017778     -7.62          0 \r\n 2003          328           10.65849     -0.7038889    -10.39         0 \r\n 2003          329           7.5212        4.965        -2.436111      0 \r\n 2003          330           6.846154      7.99         -5.641111      0 \r\n 2003          331           9.195679      6.981111     -2.616111      0 \r\n 2003          332           5.918352     -1.617222     -10.06         0 \r\n 2003          333           8.92033       10.75        -11.08         0 \r\n 2003          334           9.357348      17.05         0.74          0 \r\n 2003          335           9.135722      9.23         -4.922222      0 \r\n 2003          336           3.781918      6.361111     -0.385         0 \r\n 2003          337           3.422512      3.128889     -0.6           3.81 \r\n 2003          338           1.509964      1.577778     -1.327222      0 \r\n 2003          339           4.449307      0.515        -2.26          3.81 \r\n 2003          340           4.217597     -0.4038889    -3.99          0 \r\n 2003          341           4.413241      5.392778     -2.843889      0 \r\n 2003          342           7.846339      10.33        -0.2727778     0 \r\n 2003          343           8.005456      3.547222     -3.562778      2.54 \r\n 2003          344           8.164574     -3.487222     -10.86         17.53 \r\n 2003          345           8.904933     -7.22         -12.17         0 \r\n 2003          346           8.386117     -4.017778     -11.33         0 \r\n 2003          347           3.767525     -3.087778     -8.19          0.76 \r\n 2003          348           2.937001     -1.992778     -4.991111      0.76 \r\n 2003          349           7.250998      6.916111     -2.398889      0 \r\n 2003          350           4.918459      0.1427778    -6.756111      0 \r\n 2003          351           4.955655      2.727778     -8.68          0 \r\n 2003          352           5.287572      3.762222     -0.9011111     0.51 \r\n 2003          353           9.009533     -7.777778E-03               -8.19          0 \r\n 2003          354           8.928949      4.89         -8.36          0 \r\n 2003          355           7.971399      11.61         1.945         0 \r\n 2003          356           2.780979      5.336111     -0.8461111     0 \r\n 2003          357           4.508092      0            -7.33          0 \r\n 2003          358           9.108568      2.603889     -10.68         0 \r\n 2003          359           7.802156      7.59         -7.58          0 \r\n 2003          360           4.011786      8.08         -0.3738889     0 \r\n 2003          361           3.971955      13.49         7.61          0 \r\n 2003          362           8.456241      9.14         -1.39          0.25 \r\n 2003          363           3.771207     -0.2727778    -7.13          0 \r\n 2003          364           8.935978      9.13         -7.72          0 \r\n 2003          365           9.054343      4.05         -5.038889      0 \r\n 2004          1             4.650223      13.26        -1.835         0 \r\n 2004          2             4.30157       16.08        -1.577778      0 \r\n 2004          3             1.425405      3.085        -7.35          0 \r\n 2004          4             3.556902     -6.897778     -10.91         8.89 \r\n 2004          5             9.698428     -10.88        -24.32         3.3 \r\n 2004          6             10.3544      -10.72        -24.49         0 \r\n 2004          7             7.447855     -3.713889     -18.17         0 \r\n 2004          8             5.722038      0.8          -5.961111      0 \r\n 2004          9             5.585305     -4.351111     -11.58         0 \r\n 2004          10            7.982946     -1.438889     -13.79         0 \r\n 2004          11            9.538432      6.46         -1.841111      0 \r\n 2004          12            9.787004      4.273889     -3.988889      0 \r\n 2004          13            10.06666      2.596111     -4.197222      0 \r\n 2004          14            5.622375      3.957222     -8.11          0 \r\n 2004          15            9.95361       2.207778     -11.2          0 \r\n 2004          16            1.504274      4.352222     -1.767222      0 \r\n 2004          17            1.372017      1.215        -3.552222      12.7 \r\n 2004          18            10.81681     -3.562222     -15.1          0 \r\n 2004          19            10.49661     -7.96         -16.99         0 \r\n 2004          20            2.807673     -4.57         -12.6          0 \r\n 2004          21            10.4813       7.83         -7.1           0 \r\n 2004          22            11.44696     -7.1          -16.07         0 \r\n 2004          23            5.709194      10.63        -7.22          0 \r\n 2004          24            7.867719     -2.276111     -8.23          0 \r\n 2004          25            4.232116     -3.182778     -7.6           0 \r\n 2004          26            3.446319     -5.758889     -9.05          0.25 \r\n 2004          27            12.29477     -9.03         -20.91         1.52 \r\n 2004          28            8.959868     -13.67        -21.57         0 \r\n 2004          29            8.306244     -15.49        -22.12         0 \r\n 2004          30            9.583787     -16.05        -22.53         1.78 \r\n 2004          31            7.719522     -10.33        -21.44         0.25 \r\n 2004          32            3.085742     -3.96         -12.23         0.25 \r\n 2004          33            4.805659     -3.552222     -12.25         5.59 \r\n 2004          34            13.51005     -9.7          -17.96         2.54 \r\n 2004          35            7.695171     -5.201111     -16.61         0 \r\n 2004          36            4.102496     -4.847222     -7.88          2.54 \r\n 2004          37            8.915393     -4.751111     -11.8          8.13 \r\n 2004          38            13.004       -9.98         -19.84         2.54 \r\n 2004          39            13.71603      0.9138889    -21.61         0 \r\n 2004          40            14.08903      0.3877778    -6.367222      0 \r\n 2004          41            14.24765     -2.893889     -8.12          0 \r\n 2004          42            13.5511      -0.6738889    -10.64         0 \r\n 2004          43            13.90038     -8.12         -17.32         0 \r\n 2004          44            15.46632      5.888889E-02               -17.59         0 \r\n 2004          45            14.98324     -2.293889     -14.1          0 \r\n 2004          46            15.59029     -4.866111     -17.84         0 \r\n 2004          47            13.40106     -6.388889E-02               -14.82         0 \r\n 2004          48            14.54768      1.372778     -8.48          0 \r\n 2004          49            14.23727      7.45         -4.92          0 \r\n 2004          50            9.461698      11.33         1.173889      0 \r\n 2004          51            2.661275      5.707778      0.3661111     6.35 \r\n 2004          52            14.37095      7.32         -0.6561111     0.25 \r\n 2004          53            4.767752      8.53          0.5011111     1.02 \r\n 2004          54            3.1098        2.717778     -0.64          0.51 \r\n 2004          55            3.032521      2.191111     -0.6388889     0 \r\n 2004          56            12.49317      5.166111     -2.983889      0 \r\n 2004          57            16.10861      8.4          -4.587222      0 \r\n 2004          58            14.24635      11.01        -2.352222      0 \r\n 2004          59            11.52474      13.4          1.043889      0 \r\n 2004          60            11.04911      15.09         4.093889      0 \r\n 2004          61            3.388873      9.37          3.838889      0.51 \r\n 2004          62            3.537907      3.857778      0.6672222     0.25 \r\n 2004          63            3.009258      4.55          0.4622222     0 \r\n 2004          64            4.42253       5.733889      2.888889      2.54 \r\n 2004          65            5.835801      12.9          1.841111      28.45 \r\n 2004          66            17.15913      13.59        -0.835         0.51 \r\n 2004          67            17.59627      8.55         -0.4022222     1.02 \r\n 2004          68            13.68398      15.93        -4.065         0 \r\n 2004          69            12.55213      8.35         -7.611111E-02                0.25 \r\n 2004          70            14.2851       13.89        -0.825         0 \r\n 2004          71            19.29652      1.937222     -5.371111      0.25 \r\n 2004          72            19.34891      8.11         -9.24          0 \r\n 2004          73            5.635011      12.37         0.2827778     0 \r\n 2004          74            18.86942      9.49          0.9222222     3.3 \r\n 2004          75            3.663971      2.331111     -2.117778      0.25 \r\n 2004          76            16.71558      0.1961111    -4.178889      12.7 \r\n 2004          77            11.39366      6.716111     -2.097222      1.27 \r\n 2004          78            19.24004      6.621111     -0.9877778     0.25 \r\n 2004          79            17.92405      17.73        -1.56          0 \r\n 2004          80            19.83751      16.34        -1.616111      0 \r\n 2004          81            21.01586      3.21         -4.446111      0 \r\n 2004          82            21.02531      8.33         -6.192222      0 \r\n 2004          83            8.550213      11.93         2.633889      0 \r\n 2004          84            9.716754      20.89         10.48         0.25 \r\n 2004          85            2.996162      17.91         13.32         0.51 \r\n 2004          86            3.918483      18.48         14.02         5.08 \r\n 2004          87            4.087726      19.64         12.76         0.25 \r\n 2004          88            8.690335      12.94         3.736111      17.02 \r\n 2004          89            13.28713      15.05         2.453889      0.25 \r\n 2004          90            8.126206      4.197778     -0.5061111     0.25 \r\n 2004          91            19.20519      10.91        -3.012778      0 \r\n 2004          92            20.18784      13.28        -1.973889      0 \r\n 2004          93            20.03182      16.12        -0.365         0 \r\n 2004          94            17.8174       13.43         1.627222      0 \r\n 2004          95            20.49382      14.22        -1.907778      0 \r\n 2004          96            18.72411      18.55         0.9511111     0 \r\n 2004          97            18.12517      22.51         10.93         0 \r\n 2004          98            17.73506      22.88         6.861111      0 \r\n 2004          99            21.20899      16.67         3.322222      0 \r\n 2004          100           10.47054      13.59         4.793889      0 \r\n 2004          101           16.3481       9.55         -0.5527778     0 \r\n 2004          102           19.27406      10.81        -4.35          0 \r\n 2004          103           19.17042      11.25        -1.71          0 \r\n 2004          104           20.50583      14.44        -3.202222      0 \r\n 2004          105           20.53691      19.83         2.208889      0 \r\n 2004          106           11.16496      24.17         9.29          0 \r\n 2004          107           18.11484      29.14         11.05         0 \r\n 2004          108           17.44368      28.45         12.64         0 \r\n 2004          109           8.73205       25.45         18.5          0.254 \r\n 2004          110           14.07782      20.09         9.02          0 \r\n 2004          111           5.635095      21.03         8.95          16.764 \r\n 2004          112           19.1549       17.57         8.68          0 \r\n 2004          113           11.42073      13.9          6.546111      0 \r\n 2004          114           18.67202      17.52         6.106111      0 \r\n 2004          115           2.787632      13.56         8.81          3.302 \r\n 2004          116           14.68617      15.35         5.267778      0 \r\n 2004          117           25.54813      17.27         3.612222      0 \r\n 2004          118           23.76186      19.61         0.4811111     0 \r\n 2004          119           24.00938      28.54         13.36         0 \r\n 2004          120           14.29907      21.73         13.59         0 \r\n 2004          121           2.743407      14.67         7.82          5.842 \r\n 2004          122           20.14529      15.09         3.632222      0.254 \r\n 2004          123           14.44857      11.9          0.92          0 \r\n 2004          124           23.75604      15.46        -2.077778      0 \r\n 2004          125           18.07593      23.3          8.27          1.524 \r\n 2004          126           25.40738      25.68         6.756111      0 \r\n 2004          127           24.00306      30.47         17.35         0 \r\n 2004          128           10.93468      18.15         13.39         0 \r\n 2004          129           23.03275      29.39         13.07         5.08 \r\n 2004          130           16.07049      27.24         15.84         0.254 \r\n 2004          131           13.60285      24.57         16.06         3.048 \r\n 2004          132           20.19491      27.13         14.79         0 \r\n 2004          133           9.138107      23.92         15.96         2.032 \r\n 2004          134           5.797392      15.98         6.562778      13.462 \r\n 2004          135           19.39284      13.21         4.227222      0.762 \r\n 2004          136           24.37268      18.38         2.296111      0 \r\n 2004          137           19.93919      23.81         8.11          0 \r\n 2004          138           16.5058       26.42         16.06         7.112 \r\n 2004          139           7.789102      19            14.59         7.112 \r\n 2004          140           11.64847      24.26         14.29         0.508 \r\n 2004          141           12.28318      28.05         20.65         0.762 \r\n 2004          142           19.7048       29.9          21.29         0 \r\n 2004          143           16.16057      26.34         16.55         5.334 \r\n 2004          144           16.8393       23.29         11.66         4.572 \r\n 2004          145           15.9966       24.41         10.58         1.27 \r\n 2004          146           22.86569      18.74         10.03         1.27 \r\n 2004          147           22.05642      21.79         9.53          1.27 \r\n 2004          148           9.889302      23.42         14.78         1.016 \r\n 2004          149           24.86363      25.92         12.73         0.762 \r\n 2004          150           17.53539      26.94         16.66         0.508 \r\n 2004          151           12.82789      24.12         13.87         9.398 \r\n 2004          152           21.89583      22.98         12.02         1.016 \r\n 2004          153           22.07742      22.56         11.44         0.508 \r\n 2004          154           12.51773      20.05         9.78          0.508 \r\n 2004          155           23.76608      24.64         10.37         0.762 \r\n 2004          156           24.49389      26.23         13.68         0.508 \r\n 2004          157           9.798049      23.62         14.48         0.254 \r\n 2004          158           19.57309      28.07         14.41         0 \r\n 2004          159           20.45369      30.86         20.31         0.254 \r\n 2004          160           19.25247      30.09         21.9          0 \r\n 2004          161           8.093279      24.19         19.2          1.524 \r\n 2004          162           9.297685      25.79         19.26         6.35 \r\n 2004          163           17.30896      30.47         20.47         1.524 \r\n 2004          164           20.74758      29.87         16.24         0.508 \r\n 2004          165           24.5051       26.66         15.73         7.874 \r\n 2004          166           17.76326      27.41         17.52         6.604 \r\n 2004          167           13.27638      25.75         18.28         2.286 \r\n 2004          168           13.02571      27.73         17.1          1.016 \r\n 2004          169           21.21079      24.78         16.18         15.494 \r\n 2004          170           8.763639      20.04         13.61         2.286 \r\n 2004          171           24.41632      19.54         9.91          0 \r\n 2004          172           9.188023      20.12         13.11         0 \r\n 2004          173           14.58952      25.28         15.52         0 \r\n 2004          174           25.40537      24.21         10.9          0 \r\n 2004          175           24.18314      27.21         14.25         0 \r\n 2004          176           13.09801      17.79         9.22          0.254 \r\n 2004          177           26.42305      21.55         5.898889      0 \r\n 2004          178           21.01623      24.94         9.35          0 \r\n 2004          179           13.46327      23.52         15.59         0 \r\n 2004          180           27.79938      23.71         12.8          0 \r\n 2004          181           26.07628      25.98         11.85         0 \r\n 2004          182           24.56376      27.8          12.99         0 \r\n 2004          183           19.482        28.24         17.21         0 \r\n 2004          184           14.56513      27.35         19.46         3.048 \r\n 2004          185           11.34697      25.6          18.34         5.588 \r\n 2004          186           23.71274      28.9          16.67         1.778 \r\n 2004          187           16.51228      27.35         18.14         2.286 \r\n 2004          188           12.93299      23.85         15.06         3.81 \r\n 2004          189           18.18417      21.73         12.94         1.016 \r\n 2004          190           10.49402      21.47         15            3.048 \r\n 2004          191           16.41375      27.68         19.35         14.478 \r\n 2004          192           14.89642      28.27         19.46         0 \r\n 2004          193           5.184144      25.05         19.33         33.528 \r\n 2004          194           24.47912      30.89         18.14         0 \r\n 2004          195           23.27467      32.62         19.53         0 \r\n 2004          196           22.55184      26.91         16.63         0 \r\n 2004          197           22.15365      27.62         15.07         0.254 \r\n 2004          198           18.93624      29.13         18.24         0.254 \r\n 2004          199           22.30616      25.97         16.36         0 \r\n 2004          200           21.45672      26.29         14.78         0 \r\n 2004          201           22.21131      29.23         16.16         0 \r\n 2004          202           23.95721      32.14         19.91         0 \r\n 2004          203           12.67677      29.23         23.25         0.508 \r\n 2004          204           6.542144      26.19         20.12         8.382 \r\n 2004          205           11.66198      24.11         18.6          0 \r\n 2004          206           7.12439       18.68         13.98         3.556 \r\n 2004          207           23.86298      22.59         12.4          0 \r\n 2004          208           22.65983      24.66         12.28         0 \r\n 2004          209           22.96999      25.06         11.85         0 \r\n 2004          210           24.39046      25.85         13.42         0 \r\n 2004          211           9.703993      24.04         17.42         3.81 \r\n 2004          212           16.11443      25.32         17.46         0 \r\n 2004          213           25.20714      28.91         16.04         0 \r\n 2004          214           12.08507      26.22         18.4          3.048 \r\n 2004          215           15.65841      28.13         20.59         0 \r\n 2004          216           21.80822      32.02         19.95         48.26 \r\n 2004          217           12.12699      25.78         16.7          7.366 \r\n 2004          218           24.34992      24.12         13.85         0 \r\n 2004          219           25.62051      23.84         11.11         0 \r\n 2004          220           23.55215      24.7          12.53         0 \r\n 2004          221           19.62166      26.66         15.21         0 \r\n 2004          222           24.31017      26.31         15.6          0 \r\n 2004          223           19.08239      21.29         11.45         0 \r\n 2004          224           15.39574      17.66         9.93          0 \r\n 2004          225           17.55979      19.35         7.55          0 \r\n 2004          226           20.0122       21.36         10.31         0 \r\n 2004          227           21.42873      22.84         10.85         0 \r\n 2004          228           24.49807      23.53         8.97          0 \r\n 2004          229           21.48614      25.87         13.12         0 \r\n 2004          230           17.59979      26.18         16.67         0 \r\n 2004          231           12.50811      29.99         15.86         42.418 \r\n 2004          232           18.08542      19.94         10.63         0 \r\n 2004          233           18.48048      23.72         12.51         1.016 \r\n 2004          234           22.4416       24.01         10.3          0 \r\n 2004          235           23.13438      27.46         15.35         0 \r\n 2004          236           12.12076      27.59         17.22         4.064 \r\n 2004          237           13.60352      26.98         18.5          12.192 \r\n 2004          238           9.416427      25.46         16.47         23.876 \r\n 2004          239           17.96488      30.5          17.9          25.4 \r\n 2004          240           3.381927      22.67         19.3          32.004 \r\n 2004          241           12.682        23.07         14.61         7.62 \r\n 2004          242           22.40339      23.73         13.38         0 \r\n 2004          243           22.44883      27.06         14.98         2.286 \r\n 2004          244           20.48277      27.2          13.31         0 \r\n 2004          245           19.61162      28.09         17.76         0 \r\n 2004          246           20.85327      27.11         16.82         0 \r\n 2004          247           20.71105      27.55         15.49         0 \r\n 2004          248           17.53217      28.65         16.93         0 \r\n 2004          249           13.79109      27.75         17.97         7.874 \r\n 2004          250           20.14399      24.16         13.01         0 \r\n 2004          251           20.90665      21.47         9.9           0 \r\n 2004          252           19.80275      22.06         8.67          0 \r\n 2004          253           19.5274       24.42         11.5          0 \r\n 2004          254           19.52907      27.6          14.68         0 \r\n 2004          255           18.57265      27.92         15.63         0 \r\n 2004          256           19.13644      27.88         14.45         0 \r\n 2004          257           18.08086      28.57         16.12         0 \r\n 2004          258           17.67468      29.58         19.11         0 \r\n 2004          259           10.87911      24.68         14.57         7.112 \r\n 2004          260           19.42489      22.48         10.5          0 \r\n 2004          261           17.24724      23.82         10.31         0.254 \r\n 2004          262           14.65421      25.69         15.78         0.254 \r\n 2004          263           17.53514      28.04         16.58         0 \r\n 2004          264           18.41437      25.45         14.48         0 \r\n 2004          265           18.01195      27.35         15.04         0 \r\n 2004          266           18.08852      26.78         12            0 \r\n 2004          267           8.306161      23.42         14.4          0 \r\n 2004          268           16.5668       26.5          9.67          0 \r\n 2004          269           16.71215      23.74         11.62         0 \r\n 2004          270           15.95476      24.83         9.52          0 \r\n 2004          271           14.69676      27.56         9.29          0 \r\n 2004          272           17.37259      19.99         7.19          0 \r\n 2004          273           17.45786      19.92         3.795         0 \r\n 2004          274           14.08523      24.19         7.7           0 \r\n 2004          275           2.984656      18.69         1.815         5.588 \r\n 2004          276           17.05168      15.3         -2.267222      0 \r\n 2004          277           15.96765      24.26         4.747222      0 \r\n 2004          278           16.58801      13.42         1.692778      0 \r\n 2004          279           14.97362      18.9          0.9977778     0 \r\n 2004          280           14.18096      24.42         7.23          0 \r\n 2004          281           4.520812      18.45         12.47         1.524 \r\n 2004          282           9.602197      25.05         9.38          0.508 \r\n 2004          283           15.35992      21.22         3.308889      0 \r\n 2004          284           13.8885       20.48         6.45          0 \r\n 2004          285           8.815772      16.45         6.25          0 \r\n 2004          286           5.952326      15.68         8.93          0 \r\n 2004          287           6.870254      16.04         7.45          0.254 \r\n 2004          288           4.62901       8.97         -1.231111      0.254 \r\n 2004          289           8.709247      13.98        -1.861111      0 \r\n 2004          290           14.36719      10.61        -0.3           0 \r\n 2004          291           11.92909      17.16        -1.381111      0 \r\n 2004          292           1.723013      11            6.707778      1.016 \r\n 2004          293           2.503622      9.56          6.63          0.254 \r\n 2004          294           1.820877      10.08         8.72          0 \r\n 2004          295           1.878742      13.55         9.61          0 \r\n 2004          296           1.485487      20.49         12.85         1.778 \r\n 2004          297           10.57272      19.53         5.042222      0 \r\n 2004          298           12.6053       22.4          3.112222      0 \r\n 2004          299           11.91875      17.56         7.98          0 \r\n 2004          300           2.422996      14.52         10.3          14.224 \r\n 2004          301           1.813764      14.17         12.27         0.254 \r\n 2004          302           2.227603      21.46         12.67         1.524 \r\n 2004          303           9.004428      26.55         13.77         2.286 \r\n 2004          304           7.190915      15.02         4.511111      0 \r\n 2004          305           9.109196      17.05         1.137222      0.254 \r\n 2004          306           6.186232      10.79         6.823889      12.954 \r\n 2004          307           3.263269      9.13          5.031111      0 \r\n 2004          308           5.485517      10.1          2.086111      5.842 \r\n 2004          309           11.09927      12.3          1.345         1.778 \r\n 2004          310           10.68836      15.93        -2.71          0 \r\n 2004          311           10.71794      23.98         3.555         0 \r\n 2004          312           10.52272      14.37         2.641111      0 \r\n 2004          313           8.862047      12.09        -0.1577778     0 \r\n 2004          314           8.221601      16.57         2.117222      0 \r\n 2004          315           7.882154      16.57         4.822778      1.778 \r\n 2004          316           10.91539      6.571111     -3.097222      0 \r\n 2004          317           10.81991      8.23         -6.116111      0 \r\n 2004          318           10.17641      8.98         -4.732778      0 \r\n 2004          319           6.261649      9.2          -2.741111      0 \r\n 2004          320           2.161705      10.16         5.257778      0 \r\n 2004          321           5.303387      16.57         6.477222      0 \r\n 2004          322           4.210652      20.04         14.56         0 \r\n 2004          323           1.395531      14.6          10.46         5.842 \r\n 2004          324           2.188065      12.67         7.68          2.286 \r\n 2004          325           5.721495      9.29         -0.5911111     0 \r\n 2004          326           4.616961      6.172778     -2.257778      0 \r\n 2004          327           3.629536      8.25          1.238889      0 \r\n 2004          328           5.329328      7.09         -7.777778E-02                0 \r\n 2004          329           4.713736      2.473889     -5.822222      0 \r\n 2004          330           6.044918      6.135        -8.27          0 \r\n 2004          331           4.450395      10.48         1.927778      2.667 \r\n 2004          332           1.090978      6.677222     -2.351111      0 \r\n 2004          333           3.746646      2.636111     -4.657222      0 \r\n 2004          334           2.612071      0.705        -3.098889      0 \r\n 2004          335           3.357702      0.1511111    -6.297222      0 \r\n 2004          336           8.345323      5.192222     -7.69          0.25 \r\n 2004          337           8.201937      7.22         -5.17          0 \r\n 2004          338           6.732349      6.68         -5.601111      0 \r\n 2004          339           7.20786       11.41        -0.7422222     0 \r\n 2004          340           2.780184      5.882222     -1.907778      0 \r\n 2004          341           1.996688      8.4           4.076111      12.7 \r\n 2004          342           1.637074      6.408889     -2.38          0.76 \r\n 2004          343           4.006933      8.59         -3.542222      0 \r\n 2004          344           3.4177        8.74         -0.4688889     0 \r\n 2004          345           3.684347      2.631111      0.63          0.25 \r\n 2004          346           3.950993      3.415        -0.5338889     0 \r\n 2004          347           6.434197      8.26         -1.503889      0 \r\n 2004          348           7.385848     -1.493889     -10.36         0 \r\n 2004          349           8.411513     -0.7611111    -14.64         0 \r\n 2004          350           5.215649      7.33         -7.51          0 \r\n 2004          351           7.807302      7.8          -6.152778      0 \r\n 2004          352           6.120104      3.113889     -9.97          0 \r\n 2004          353           3.755726      5.127222     -10.67         0 \r\n 2004          354           7.496891     -8.6          -17.42         0 \r\n 2004          355           7.003054      5.451111     -9.02          0 \r\n 2004          356           7.399027     -0.3738889    -13.05         0.51 \r\n 2004          357           5.659697     -11.31        -17.39         0 \r\n 2004          358           8.109722     -12.28        -19.76         0 \r\n 2004          359           8.272395     -5.383889     -21.74         0 \r\n 2004          360           3.697945      2.377778     -5.392778      0 \r\n 2004          361           7.295139     -1.702778     -7.98          0 \r\n 2004          362           5.206946      5.345        -9.02          0 \r\n 2004          363           4.23789       8.59         -3.657222      0 \r\n 2004          364           6.784816      7.87         -7.73          0 \r\n 2004          365           3.207161      18.11         5.012778      0.51 \r\n 2004          366           6.819293      9.31         -3.107222      0 \r\n 2005          1             1.155286      9.04         -3.752222      0 \r\n 2005          2             2.835999      6.963889     -2.842222      3.81 \r\n 2005          3             1.665023     -2.436111     -4.465         3.81 \r\n 2005          4             1.918992     -3.732778     -6.231111      11.43 \r\n 2005          5             2.17296      -6.202222     -9.77          10.67 \r\n 2005          6             10.5464      -9.76         -14.18         10.16 \r\n 2005          7             3.961495     -6.325        -10.54         0 \r\n 2005          8             8.21566      -3.777778     -16.4          0 \r\n 2005          9             3.497071      0.5938889    -4.483889      0 \r\n 2005          10            4.591647     -4.475        -10.02         0 \r\n 2005          11            2.863069     -1.595        -5.092222      0.51 \r\n 2005          12            1.529001     -0.3272222    -3.37          1.27 \r\n 2005          13            8.592262     -3.361111     -19.3          5.59 \r\n 2005          14            5.131634     -16.7         -21.24         0 \r\n 2005          15            7.945667     -13.84        -22.37         0 \r\n 2005          16            10.25214     -10.93        -21.21         0 \r\n 2005          17            9.980095     -7.23         -22.7          0 \r\n 2005          18            6.827367      1.652778     -15.13         0 \r\n 2005          19            5.959313      3.5          -3.146111      0 \r\n 2005          20            7.002049      2.418889     -4.337778      0 \r\n 2005          21            3.113942      0.745        -3.485         0 \r\n 2005          22            8.701256      0.9227778    -16.71         0 \r\n 2005          23            4.617588     -4.712778     -14.86         0 \r\n 2005          24            9.835036      6.051111     -5.075         0 \r\n 2005          25            9.786585      11.71        -3.636111      0 \r\n 2005          26            1.767154      2.537778     -3.581111      0 \r\n 2005          27            10.59426     -1.465        -7.57          0 \r\n 2005          28            9.70914       1.241111     -7.25          0 \r\n 2005          29            6.835317      2.737222     -2.36          0 \r\n 2005          30            4.179774      1.343889     -1.785         0 \r\n 2005          31            2.96269       2.595        -0.4022222     0 \r\n 2005          32            3.629745      2.727778     -0.9472222     0 \r\n 2005          33            8.655315      6.202778     -3.012222      0 \r\n 2005          34            10.6423       11.91        -3.637222      0 \r\n 2005          35            11.09162      14.74        -0.6572222     0 \r\n 2005          36            10.62845      13.23         1.417222      0 \r\n 2005          37            2.531487      7.44         -0.4588889     0 \r\n 2005          38            2.656673     -0.44         -9.58          8.89 \r\n 2005          39            5.616351     -4.627222     -11.43         0 \r\n 2005          40            9.246933     -5.018889     -14.24         6.35 \r\n 2005          41            11.8288      -2.417222     -15.62         0 \r\n 2005          42            12.54953      7.31         -7.07          0 \r\n 2005          43            7.124348      8.96         -0.6372222     0 \r\n 2005          44            1.416744      7.89          3.871111      17.78 \r\n 2005          45            11.03584      15.24         2.72          6.35 \r\n 2005          46            3.750203      8.73         -1.053889      0 \r\n 2005          47            12.73384      3.263889     -3.608889      0 \r\n 2005          48            12.81618      6.251111     -8.68          0 \r\n 2005          49            13.42788      2.681111     -8.95          0 \r\n 2005          50            1.742929      2.192778     -4.443889      0 \r\n 2005          51            2.335049      7.25          1.262222      1.27 \r\n 2005          52            4.199774      1.271111     -2.917778      0.51 \r\n 2005          53            12.4374       6.985        -3.768889      0 \r\n 2005          54            9.729264      3.857778     -5.717778      0 \r\n 2005          55            4.365125      1.411111     -3.475         0.76 \r\n 2005          56            14.90537      10.87        -3.287222      0.25 \r\n 2005          57            12.36577      8.46         -6.957222      0 \r\n 2005          58            5.068874      10.99        -2.737778      0 \r\n 2005          59            4.992098     -2.502222     -6.113889      2.54 \r\n 2005          60            15.78632      0.8772222    -10.03         0.51 \r\n 2005          61            14.46944      6.593889     -7.9           0 \r\n 2005          62            14.13255      9.23         -6.363889      0 \r\n 2005          63            15.09918      16.33        -5.486111      0 \r\n 2005          64            15.79736      11.65        -0.9872222     0 \r\n 2005          65            14.07117      21.46         3.083889      0 \r\n 2005          66            8.384233      10.25        -4.867222      0.76 \r\n 2005          67            16.83621      3.158889     -7.28          0 \r\n 2005          68            16.36526      2.022222     -7.42          0 \r\n 2005          69            9.443623      9.87         -4.052778      0.51 \r\n 2005          70            9.319943      9.88         -2.417222      0 \r\n 2005          71            6.9841        6.86         -6.2           0 \r\n 2005          72            16.54308      5.297778     -9.32          0 \r\n 2005          73            17.03629      4.52         -8.35          0 \r\n 2005          74            16.33362      9.9          -8.02          0 \r\n 2005          75            16.77341      12.83        -4.217778      0 \r\n 2005          76            13.37202      16.21        -1.332778      0 \r\n 2005          77            8.595359      13.76        -0.1138889     0 \r\n 2005          78            8.310888      2.387778     -3.173889      0 \r\n 2005          79            16.59902      10.73        -5.45          0 \r\n 2005          80            11.08618      10.88         1.821111      0 \r\n 2005          81            3.275946      4.717778      0.235         0.25 \r\n 2005          82            6.722391      5.992778     -1.128889      1.27 \r\n 2005          83            2.275594      3.162778      0.5538889     0.51 \r\n 2005          84            1.694813      2.71          0.48          7.37 \r\n 2005          85            11.86695      8.87         -1.107778      0.25 \r\n 2005          86            18.81085      15           -3.856111      0 \r\n 2005          87            18.62324      21.27        -0.5077778     0 \r\n 2005          88            14.0559       23.35         9.66          0 \r\n 2005          89            8.856607      19.61         7.53          0 \r\n 2005          90            20.22734      14.88         4.16          12.19 \r\n 2005          91            17.7156       13.46         0.8377778     0 \r\n 2005          92            21.00791      15.26        -1.965         0 \r\n 2005          93            19.46882      23.26         6.342778      0 \r\n 2005          94            20.4875       26.38         9.55          0 \r\n 2005          95            10.57042      21.61         12.25         0 \r\n 2005          96            3.155071      15.95         11.49         49.53 \r\n 2005          97            8.944639      15.47         6.278889      0 \r\n 2005          98            21.10393      19.52         3.256111      0 \r\n 2005          99            17.98099      23.89         10.34         0 \r\n 2005          100           13.89992      24.73         13.74         0 \r\n 2005          101           4.432697      18.62         10.65         40.132 \r\n 2005          102           7.178196      14.33         8.25          0.762 \r\n 2005          103           21.94449      14.88         5.717778      0 \r\n 2005          104           22.03545      18.08         2.65          0 \r\n 2005          105           20.84757      20.97         5.897778      0 \r\n 2005          106           13.52846      23.8          10.8          0 \r\n 2005          107           19.58317      25.37         10.81         0 \r\n 2005          108           19.00222      24.86         13.56         0 \r\n 2005          109           16.95646      24.88         15.91         0 \r\n 2005          110           12.42259      22.48         13.71         7.874 \r\n 2005          111           5.114271      14.78         9.63          4.318 \r\n 2005          112           11.50387      15.94         5.735         2.032 \r\n 2005          113           20.01994      9.52          0.4522222     0 \r\n 2005          114           21.84127      14.02        -1.117778      0 \r\n 2005          115           14.24037      16.88         2.153889      4.064 \r\n 2005          116           12.92952      10.74         2.878889      0.508 \r\n 2005          117           18.24433      15.08         3.076111      0 \r\n 2005          118           8.086207      8.65          5.316111      0 \r\n 2005          119           12.43083      12.04         2.727778      0 \r\n 2005          120           17.27733      12.82        -6.388889E-02                0 \r\n 2005          121           11.46952      7.91          0.8288889     0 \r\n 2005          122           15.69895      10.72         2.272778      0 \r\n 2005          123           23.21752      14.16        -2.048889      0 \r\n 2005          124           22.58716      19.71         1.673889      0 \r\n 2005          125           21.95571      22.34         7.54          0 \r\n 2005          126           15.82238      24.69         10.66         0 \r\n 2005          127           18.16977      26.84         15.08         0 \r\n 2005          128           13.09349      26.44         16.19         2.54 \r\n 2005          129           19.83936      23.7          13.4          0 \r\n 2005          130           23.01146      29.51         9.26          0 \r\n 2005          131           8.181728      24.18         11.9          16.002 \r\n 2005          132           5.697688      17.64         8.38          14.224 \r\n 2005          133           12.72626      21.12         8.17          6.604 \r\n 2005          134           19.8381       14.49         5.136111      0 \r\n 2005          135           23.76943      14.84         4.427778      0 \r\n 2005          136           24.13302      19.93         4.293889      0 \r\n 2005          137           21.0961       24.42         11.06         0 \r\n 2005          138           2.791021      20.32         13.56         9.906 \r\n 2005          139           15.3006       28.57         12.13         0 \r\n 2005          140           10.722        19.07         10.97         0 \r\n 2005          141           13.45754      23.62         10.64         0 \r\n 2005          142           21.20962      27.08         12.97         0 \r\n 2005          143           23.96219      27.36         11.09         0 \r\n 2005          144           21.49568      23.26         11.87         0 \r\n 2005          145           12.12632      24.16         12.26         3.302 \r\n 2005          146           13.34805      23.01         7.77          0.254 \r\n 2005          147           11.78578      21.54         8.52          0 \r\n 2005          148           19.89647      22.26         7.31          0 \r\n 2005          149           12.5825       20.45         9.81          12.7 \r\n 2005          150           18.4455       21.61         7.94          0 \r\n 2005          151           4.778337      21.11         13.44         0.762 \r\n 2005          152           10.38548      25.01         13.69         0.254 \r\n 2005          153           10.90919      27.26         12.23         0 \r\n 2005          154           6.058097      25.66         15.61         3.81 \r\n 2005          155           10.90497      27.59         16.03         47.752 \r\n 2005          156           19.32682      23.91         15.95         0 \r\n 2005          157           22.9869       29.87         17.01         0 \r\n 2005          158           19.32125      29.47         19.16         0 \r\n 2005          159           7.646553      24.5          17.29         4.318 \r\n 2005          160           18.1263       27.79         18.37         0.254 \r\n 2005          161           12.31054      27.79         16.61         14.732 \r\n 2005          162           18.62696      25.99         18.06         0.762 \r\n 2005          163           16.91026      27.82         17.79         17.272 \r\n 2005          164           22.22118      26.25         18.35         0.508 \r\n 2005          165           12.43083      24.18         15.73         0 \r\n 2005          166           23.69148      24.47         15.52         0 \r\n 2005          167           24.94325      25.67         12.88         0 \r\n 2005          168           25.52202      26.53         11.68         0 \r\n 2005          169           25.50964      27.44         12.74         0 \r\n 2005          170           25.39596      27.09         14.41         0 \r\n 2005          171           24.51502      28.81         14.94         0 \r\n 2005          172           23.48036      31.34         18.02         0 \r\n 2005          173           22.59624      32.83         19.43         0 \r\n 2005          174           24.53782      31.26         20.67         0 \r\n 2005          175           23.09915      32.88         21.05         0 \r\n 2005          176           19.02574      32.12         21.58         0 \r\n 2005          177           23.52667      32.85         21.39         0 \r\n 2005          178           22.05763      33.22         18.73         47.498 \r\n 2005          179           19.88003      28.94         18.69         0.508 \r\n 2005          180           16.69968      31.09         18.35         12.192 \r\n 2005          181           18.33341      28.06         17.11         4.572 \r\n 2005          182           25.59943      24.95         15.2          0 \r\n 2005          183           23.02192      25.92         14.46         0 \r\n 2005          184           14.18518      28.48         16.5          0 \r\n 2005          185           12.99249      25.72         16.88         0.762 \r\n 2005          186           24.57339      27.7          14.89         0 \r\n 2005          187           21.17426      27.64         15.2          0 \r\n 2005          188           22.32235      28.76         16.88         0 \r\n 2005          189           21.72571      29.86         17.98         0 \r\n 2005          190           23.52082      31.21         21.13         0 \r\n 2005          191           23.50906      31.26         19.8          0 \r\n 2005          192           22.02102      29.51         17.94         0 \r\n 2005          193           23.54784      30.02         16.79         0 \r\n 2005          194           23.60073      30.88         18.2          0 \r\n 2005          195           24.0339       31.54         18.89         0 \r\n 2005          196           22.86351      33.03         19.73         0 \r\n 2005          197           22.25193      34.18         20.27         0 \r\n 2005          198           22.56444      33.5          21.01         0 \r\n 2005          199           21.97123      29.03         17.12         23.368 \r\n 2005          200           24.70024      29.78         15.3          0 \r\n 2005          201           19.24799      33.74         23.51         0 \r\n 2005          202           21.61889      32.49         22.06         0.254 \r\n 2005          203           22.03324      33.57         21.99         0 \r\n 2005          204           22.11106      35.84         23.18         0 \r\n 2005          205           23.53069      35.11         23.8          0 \r\n 2005          206           21.14686      35.29         22.96         0.254 \r\n 2005          207           4.448638      23.13         13.8          35.052 \r\n 2005          208           21.76843      22.37         11.63         0.254 \r\n 2005          209           23.96051      25.84         11.19         0 \r\n 2005          210           18.41115      30.18         16.18         0 \r\n 2005          211           17.64912      29.56         18.52         0 \r\n 2005          212           12.62869      27.18         19.41         0 \r\n 2005          213           21.6294       31.87         19.58         0 \r\n 2005          214           15.91857      32.17         19.73         0 \r\n 2005          215           16.89215      33.71         22.73         0 \r\n 2005          216           16.06878      26.55         17.24         0.254 \r\n 2005          217           21.43141      26.34         15.48         0 \r\n 2005          218           23.60081      28.81         12.47         0 \r\n 2005          219           23.10133      31.4          14.09         0 \r\n 2005          220           15.11993      33.03         17.16         0 \r\n 2005          221           20.82335      34.12         18.51         0 \r\n 2005          222           19.88651      32            19.8          0 \r\n 2005          223           15.04604      31.95         20.41         2.032 \r\n 2005          224           8.064869      26.38         19.4          47.498 \r\n 2005          225           5.602836      19.66         16.16         19.304 \r\n 2005          226           18.26216      23.84         12.54         0 \r\n 2005          227           20.24244      26.03         13.81         0 \r\n 2005          228           21.7132       27.82         14.35         0 \r\n 2005          229           16.59232      27.28         16.45         0 \r\n 2005          230           20.58888      31.72         21.2          0 \r\n 2005          231           14.84483      30.44         19.11         3.048 \r\n 2005          232           19.572        30.51         20.15         0.762 \r\n 2005          233           16.24212      29.81         20.32         0 \r\n 2005          234           14.35535      25.18         16.78         0 \r\n 2005          235           19.30355      23.99         13.92         0 \r\n 2005          236           6.971255      22.95         15.23         0 \r\n 2005          237           10.88388      26.5          18.22         0 \r\n 2005          238           12.75714      27.73         19.72         3.556 \r\n 2005          239           21.06669      29.05         13.64         0 \r\n 2005          240           20.65892      29.33         18.4          0 \r\n 2005          241           19.8448       30.6          14.89         0 \r\n 2005          242           20.73348      28.81         15.36         0 \r\n 2005          243           16.46119      29.53         13.01         0 \r\n 2005          244           20.64632      27.5          10.36         0 \r\n 2005          245           16.4732       29.06         14.41         0 \r\n 2005          246           19.55828      30.47         12.3          0 \r\n 2005          247           18.40077      31.53         17.55         0 \r\n 2005          248           16.97127      31.17         17.91         0 \r\n 2005          249           16.9803       31.11         18.37         0 \r\n 2005          250           10.09177      28.88         16.24         0 \r\n 2005          251           12.65083      30.26         17.37         0.254 \r\n 2005          252           17.64552      32.98         17.83         0 \r\n 2005          253           17.65677      32.18         20.26         0 \r\n 2005          254           17.22904      31.91         18.9          0 \r\n 2005          255           14.24275      30.74         19.92         0 \r\n 2005          256           7.750316      26.84         15.14         1.27 \r\n 2005          257           18.13078      23.35         10.14         0 \r\n 2005          258           5.904126      20.35         8.27          0 \r\n 2005          259           18.12969      24.53         6.103889      0 \r\n 2005          260           17.29444      24.51         9.14          0 \r\n 2005          261           15.70661      29.99         15.47         0 \r\n 2005          262           11.94967      28.94         15.75         0 \r\n 2005          263           17.56711      31.54         10.91         0 \r\n 2005          264           16.25961      31.9          15.53         0 \r\n 2005          265           13.06554      28.02         15.13         0 \r\n 2005          266           4.525414      18.37         13.93         0 \r\n 2005          267           11.12998      29.47         16.4          0 \r\n 2005          268           10.66284      27.32         17.23         6.096 \r\n 2005          269           4.302742      17.25         9.29          0 \r\n 2005          270           16.76529      23.7          7.25          0.254 \r\n 2005          271           3.032145      16.88         5.04          7.62 \r\n 2005          272           16.63722      17.31         0.2277778     0 \r\n 2005          273           15.74054      24.07         4.341111      0 \r\n 2005          274           12.58141      27            13.05         0 \r\n 2005          275           6.301104      26.62         17.84         2.794 \r\n 2005          276           10.50673      29.74         21.7          0 \r\n 2005          277           14.09435      30.05         20.87         0 \r\n 2005          278           3.18871       22.76         6.21          9.906 \r\n 2005          279           14.83144      10.81         1.6           0 \r\n 2005          280           17.22398      11.09        -0.7977778     0 \r\n 2005          281           16.54718      14.5         -1.013889      0 \r\n 2005          282           14.03657      13.5          1.701111      0 \r\n 2005          283           15.01027      18.84         3.613889      0 \r\n 2005          284           5.854713      17.61         6.212222      0 \r\n 2005          285           7.447813      19.14         8.4           0.508 \r\n 2005          286           12.61384      21.97         6.133889      0.254 \r\n 2005          287           15.33419      27.86         7.71          0 \r\n 2005          288           15.35164      21.38         4.727222      0 \r\n 2005          289           10.99053      22.26         3.69          0 \r\n 2005          290           14.29756      25.92         8.23          0 \r\n 2005          291           14.28543      26.9          7.22          0 \r\n 2005          292           8.949534      18.61         7.46          0 \r\n 2005          293           1.319299      11.37         6.355         11.43 \r\n 2005          294           10.24913      13.44         2.943889      0 \r\n 2005          295           8.512976      9.51          1.692778      0 \r\n 2005          296           4.341821      6.936111     -0.565         0.254 \r\n 2005          297           8.042568      7.82         -0.4977778     0 \r\n 2005          298           14.32522      12.16        -0.6688889     0 \r\n 2005          299           5.789694      10.37        -2.247778      0 \r\n 2005          300           13.80687      15.1         -0.5622222     0 \r\n 2005          301           13.83829      16.32         1.487778      0 \r\n 2005          302           12.44121      19.75         5.982778      0 \r\n 2005          303           6.208345      17.07         9.27          0 \r\n 2005          304           7.04527       14.01         3.263889      0 \r\n 2005          305           13.03584      19.03        -3.032222      0 \r\n 2005          306           12.64321      23.65         1.201111      0 \r\n 2005          307           11.60742      21.23         9.16          0 \r\n 2005          308           9.581276      16.13         2.972222      0 \r\n 2005          309           3.99049       11.76         4.587778      3.302 \r\n 2005          310           7.992361      13.21         5.848889      0.508 \r\n 2005          311           9.886165      21.07         5.755         0 \r\n 2005          312           7.625298      22.1          6.248889      0 \r\n 2005          313           7.042676      17.21         0.9011111     0 \r\n 2005          314           11.49328      13.83        -3.762222      0 \r\n 2005          315           9.951016      21.38         2.321111      0 \r\n 2005          316           4.584785      19.52         10.78         0 \r\n 2005          317           10.38862      11.4         -0.2272222     0 \r\n 2005          318           1.823555      6.266111     -1.551111      2.5654 \r\n 2005          319           1.074786      3.492778     -3.23          16.7132 \r\n 2005          320           10.91392     -3.221111     -11.91         0 \r\n 2005          321           8.93535      -2.512222     -14.93         0 \r\n 2005          322           10.06373      8.77         -4.618889      0 \r\n 2005          323           4.869172      8.21          0.2927778     0 \r\n 2005          324           2.199612      3.991111      0.695         0 \r\n 2005          325           5.881993      11.06        -0.7977778     0 \r\n 2005          326           5.121383      5.61         -2.38          0 \r\n 2005          327           8.724728      14.21         3.652222      0 \r\n 2005          328           10.52531      4.625        -9.58          0 \r\n 2005          329           5.66158       2.682222     -7.67          0 \r\n 2005          330           8.585986      14.68        -1.551111      0 \r\n 2005          331           1.026461      13.39         9.99          4.699 \r\n 2005          332           1.367582      10           -4.752222      0 \r\n 2005          333           3.413098     -3.382222     -6.173889      0 \r\n 2005          334           4.147014     -2.313889     -10.47         5.0038 \r\n 2005          335           9.762109     -4.083889     -15.26         5.08 \r\n 2005          336           4.223706     -7.53         -11.8          0 \r\n 2005          337           3.675435     -5.143889     -8.91          0 \r\n 2005          338           9.344755     -7.64         -17.1          2.54 \r\n 2005          339           9.055431     -7.45         -19.69         0 \r\n 2005          340           8.841043     -9.06         -20.28         1.27 \r\n 2005          341           5.791116     -13.33        -23.39         0 \r\n 2005          342           7.174974     -11.01        -19.16         4.57 \r\n 2005          343           8.75548      -6.143889     -21.93         0.51 \r\n 2005          344           3.391048      2.512778     -9.19          0 \r\n 2005          345           3.625059      3.042222     -6.277778E-02                0 \r\n 2005          346           4.266383      3.162778     -0.1888889     1.27 \r\n 2005          347           6.606243      6.467778     -4.312222      0 \r\n 2005          348           1.748494      3.395        -0.59          4.57 \r\n 2005          349           3.543179     -0.1588889    -5.412222      0.51 \r\n 2005          350           4.636291     -4.101111     -11.77         0 \r\n 2005          351           7.483879     -4.083889     -12.7          0 \r\n 2005          352           8.457454     -6.772222     -15.06         0 \r\n 2005          353           9.038277     -3.883889     -16.89         0 \r\n 2005          354           8.823805      1.411111     -10.87         0 \r\n 2005          355           8.879034      2.537778     -10.91         0 \r\n 2005          356           8.317499      10.97        -4.617778      0 \r\n 2005          357           4.903857      8.97          0.8272222     0 \r\n 2005          358           1.264572      4.616111      0.8938889     0.25 \r\n 2005          359           1.225703      0.96         -1.728889      0.76 \r\n 2005          360           3.606064      3.207222     -2.738889      0 \r\n 2005          361           5.814589      5.706111     -1.955         0 \r\n 2005          362           4.026117     -0.2727778    -1.352778      0 \r\n 2005          363           2.237645      0.6077778    -1.785         0 \r\n 2005          364           2.166433      3.387222     -0.6938889     0 \r\n 2005          365           5.384933      3.17         -1.975         0 \r\n 2006          1             5.669822      10.78         0.3661111     0 \r\n 2006          2             1.02416       5.268889      0.695         6.35 \r\n 2006          3             2.516216      3.318889      0.1611111     0.76 \r\n 2006          4             6.83833       8.1          -1.587778      0 \r\n 2006          5             1.759372      0.7072222    -4.027778      0 \r\n 2006          6             3.615938      1.393889     -5.527222      0 \r\n 2006          7             7.019999      11.8         -3.686111      0 \r\n 2006          8             7.446934      5.156111     -2.378889      0 \r\n 2006          9             5.046113      1.402222     -7.29          0 \r\n 2006          10            6.078306      1.656111     -9.09          0 \r\n 2006          11            8.342143      10.08        -4.255         0 \r\n 2006          12            8.920581      12.25         0.5927778     0 \r\n 2006          13            7.865711      1.486111     -4.216111      0 \r\n 2006          14            9.351826      8.2          -8.78          0 \r\n 2006          15            8.931083      14.36         0.8922222     0 \r\n 2006          16            2.334086      4.323889     -3.166111      0 \r\n 2006          17            2.164383     -1.531111     -5.902222      0 \r\n 2006          18            7.526514      10.26        -10.8          0 \r\n 2006          19            6.946737      12.09        -1.635         0 \r\n 2006          20            1.402644     -1.192222     -2.748889      0 \r\n 2006          21            5.649781     -1.388889     -4.77          4.06 \r\n 2006          22            4.554619      0.6788889    -3.496111      0 \r\n 2006          23            3.136745      0.8772222    -4.607778      0 \r\n 2006          24            11.09229      8.49         -2.983889      0 \r\n 2006          25            11.20333      6.956111     -6.397222      0 \r\n 2006          26            9.280991      13.83        -2.606111      0 \r\n 2006          27            9.456384      13.61         5.762222      0 \r\n 2006          28            5.45602       10.29         5.752222      0.51 \r\n 2006          29            1.455655      8.67          1.693889      12.19 \r\n 2006          30            3.741416      3.677222      0.1711111     0 \r\n 2006          31            10.33553      12.47        -5.056111      0 \r\n 2006          32            10.26302      9.74          2.746111      0 \r\n 2006          33            7.281708      12.62         1.712778      0 \r\n 2006          34            6.988661      2.586111     -6.365         4.32 \r\n 2006          35            12.86467     -2.293889     -11.41         0 \r\n 2006          36            9.639183     -0.4677778    -12.46         0 \r\n 2006          37            10.74372      2.341111     -11.87         0 \r\n 2006          38            3.888944      2.908889     -2.726111      0 \r\n 2006          39            12.48188     -2.445        -12.5          2.03 \r\n 2006          40            6.212319     -0.6          -14.93         0 \r\n 2006          41            5.200084      3.172778     -5.523889      0.51 \r\n 2006          42            6.092364     -2.53         -10.92         0 \r\n 2006          43            9.602991     -1.597222     -9.49          0 \r\n 2006          44            13.06182      12.23        -11.1          0 \r\n 2006          45            13.08517      15.54        -5.767778      0 \r\n 2006          46            3.755768      2.88         -3.022778      0 \r\n 2006          47            2.678471     -2.985        -11.62         5.59 \r\n 2006          48            11.05835     -11.61        -18.55         0.25 \r\n 2006          49            14.38694     -12.02        -21.31         0 \r\n 2006          50            9.476718     -4.913889     -18.32         0 \r\n 2006          51            14.34271      3.747222     -11.88         0 \r\n 2006          52            11.91875      8.38         -8.9           0 \r\n 2006          53            14.41187      9.12         -5.553889      0 \r\n 2006          54            14.71806      5.782778     -5.352778      0 \r\n 2006          55            13.34441      17.15        -5.391111      0 \r\n 2006          56            15.27294      2.822222     -8.04          0 \r\n 2006          57            14.17899      6.63         -10.08         0 \r\n 2006          58            13.78235      17.19        -1.145         0 \r\n 2006          59            10.7074       10.23        -3.923889      0 \r\n 2006          60            12.46665      21.72         3.06          0 \r\n 2006          61            13.53164      5.06         -5.451111      0 \r\n 2006          62            16.49011      7.32         -7.37          0 \r\n 2006          63            3.915764      3.482222     -2.218889      0 \r\n 2006          64            5.356524      7.8          -2.078889      18.29 \r\n 2006          65            16.27212      5.297778     -3.251111      2.03 \r\n 2006          66            4.541564      5.357778     -3.182222      0 \r\n 2006          67            2.912817      10.4          3.943889      6.86 \r\n 2006          68            3.96752       7.64          1.39          7.62 \r\n 2006          69            15.96974      13.92        -2.07          0 \r\n 2006          70            13.53599      19.02         3             0 \r\n 2006          71            2.798301      3.785        -1.218333      0 \r\n 2006          72            7.094809      3.952222     -4.617222      4.57 \r\n 2006          73            20.43474      9.44         -6.512778      0 \r\n 2006          74            16.2553       10.61        -6.931111      0 \r\n 2006          75            9.994195      10.39         0.5461111     0 \r\n 2006          76            20.70988      8.2          -2.813889      0 \r\n 2006          77            14.28254      7.76         -1.767778      0 \r\n 2006          78            8.192062      6.773889     -0.6088889     0 \r\n 2006          79            7.414885      5.697222     -2.738889      0 \r\n 2006          80            15.3006      -0.3861111    -8.5           6.6 \r\n 2006          81            23.26045      2.332778     -10.47         0.51 \r\n 2006          82            20.95017      5.478889     -5.441111      0 \r\n 2006          83            7.981357      2.397778     -0.9977778     0.25 \r\n 2006          84            19.96308      7.47         -3.826111      0 \r\n 2006          85            22.13759      12.25        -3.988889      0 \r\n 2006          86            1.984053      6.582222      3.333333      3.81 \r\n 2006          87            6.576244      6.582222      3.333333      8.89 \r\n 2006          88            18.56165      24.64        -3.988889      0 \r\n 2006          89            6.838371      19.53         8.97          0 \r\n 2006          90            6.926068      10.33         3.657778      10.41 \r\n 2006          91            14.84897      16.77         0.8111111     0 \r\n 2006          92            9.787799      14.15         5.697222      13.208 \r\n 2006          93            22.12328      11.91         2.147778      0 \r\n 2006          94            22.05889      16.91         0.6672222     0 \r\n 2006          95            19.62045      23.1          7.98          0 \r\n 2006          96            9.968715      23.83         11.56         6.604 \r\n 2006          97            14.89517      20.64         2.396111      0 \r\n 2006          98            22.37829      11.84        -2.92          0 \r\n 2006          99            20.27964      16.65        -0.2077778     0 \r\n 2006          100           21.65806      24.67         6.677778      0 \r\n 2006          101           10.78305      23.05         14.2          3.302 \r\n 2006          102           22.53105      23.81         10.78         0 \r\n 2006          103           21.29259      30.89         11.17         0 \r\n 2006          104           21.39325      29.56         14            0 \r\n 2006          105           15.30993      26.07         10.48         2.032 \r\n 2006          106           8.281726      19.73         11.08         0.254 \r\n 2006          107           10.88171      16.96         9.92          0 \r\n 2006          108           16.30685      23.13         8.82          5.588 \r\n 2006          109           25.51089      20.04         3.425         0 \r\n 2006          110           24.05666      18.88         3.952778      0 \r\n 2006          111           23.95394      20.95         3.831111      0 \r\n 2006          112           24.78062      20.98         6.067222      0 \r\n 2006          113           25.27203      22.14         5.373889      0 \r\n 2006          114           19.86115      22.21         9.37          0 \r\n 2006          115           3.188668      13.71         2.82          4.826 \r\n 2006          116           26.0977       16.16         2.492222      0 \r\n 2006          117           18.13425      18.45         2.796111      0 \r\n 2006          118           5.901783      17.93         10.86         0.762 \r\n 2006          119           1.877026      13.42         10.9          29.464 \r\n 2006          120           4.831516      13.23         11.25         23.876 \r\n 2006          121           10.32515      15.2          8.59          0 \r\n 2006          122           25.20927      23.68         6.303889      0.508 \r\n 2006          123           11.28191      17.96         9.74          3.556 \r\n 2006          124           21.3576       17.18         6.965         0 \r\n 2006          125           20.41068      14.86         4.067222      0 \r\n 2006          126           26.40146      16.45        -0.75          0 \r\n 2006          127           24.2985       20.21         3.642222      0 \r\n 2006          128           17.34268      21.67         11.26         0 \r\n 2006          129           18.99896      24.01         11.78         2.54 \r\n 2006          130           16.4345       18.26         9.17          0 \r\n 2006          131           10.29607      12.92         6.868889      0 \r\n 2006          132           26.5479       18.83         4.483889      0 \r\n 2006          133           12.72605      11.7          6.028889      0 \r\n 2006          134           13.35303      14.45         6.526111      0.508 \r\n 2006          135           14.92742      18.56         10.18         0.254 \r\n 2006          136           18.28964      22.15         10.56         4.064 \r\n 2006          137           21.75508      25.76         9.56          0.254 \r\n 2006          138           25.57286      22.04         9.13          0 \r\n 2006          139           27.3239       30.24         10.16         0 \r\n 2006          140           16.03091      21.68         11.32         0 \r\n 2006          141           21.94123      19.81         11.47         0 \r\n 2006          142           27.49214      23.26         9.58          0 \r\n 2006          143           23.85169      27.04         12.16         0 \r\n 2006          144           27.46658      28.71         16.6          19.812 \r\n 2006          145           16.76207      25.35         15.86         0 \r\n 2006          146           21.31384      26.46         14.68         0.254 \r\n 2006          147           15.68071      30.5          17.86         10.668 \r\n 2006          148           27.22161      31.55         20.52         0 \r\n 2006          149           23.09321      30.67         21.66         0 \r\n 2006          150           22.38879      26.42         17.32         4.826 \r\n 2006          151           20.86021      26.07         16.54         0 \r\n 2006          152           25.56307      26.83         15.07         0 \r\n 2006          153           29.23076      28.91         12.58         0 \r\n 2006          154           28.87232      30.05         14            0 \r\n 2006          155           26.05937      26.58         17.28         0 \r\n 2006          156           22.58209      27.1          14.77         0 \r\n 2006          157           24.75865      30.3          17.86         5.334 \r\n 2006          158           28.64299      30.6          15.27         0 \r\n 2006          159           21.55819      31.64         17.59         0 \r\n 2006          160           21.03473      28.98         18.34         0.254 \r\n 2006          161           13.55984      20.16         11.54         1.27 \r\n 2006          162           15.02889      18.57         11.03         0.762 \r\n 2006          163           25.59453      22.78         12.46         0.254 \r\n 2006          164           29.30001      27.66         11.16         0 \r\n 2006          165           26.80279      28.56         16.52         0 \r\n 2006          166           20.41277      29.14         17.22         0 \r\n 2006          167           27.53511      32.14         20.99         0 \r\n 2006          168           22.79594      28.6          21.09         0 \r\n 2006          169           25.24877      30.83         17.58         0 \r\n 2006          170           28.80943      30.48         16.65         1.778 \r\n 2006          171           11.63872      28.34         18.43         1.27 \r\n 2006          172           19.11034      30.42         22.31         4.318 \r\n 2006          173           13.75423      26.42         17.97         8.89 \r\n 2006          174           27.20127      28.4          15.75         0 \r\n 2006          175           17.59803      27.16         16.16         25.908 \r\n 2006          176           23.23886      22.83         14.64         5.588 \r\n 2006          177           22.80397      23.35         13.56         0.254 \r\n 2006          178           21.04836      26.59         13.23         0 \r\n 2006          179           29.14972      27.99         12.51         0.254 \r\n 2006          180           24.98668      29.12         15.65         0 \r\n 2006          181           9.911938      27.72         18.78         0 \r\n 2006          182           20.13404      33.03         21.56         0 \r\n 2006          183           14.77709      29.53         20.54         0 \r\n 2006          184           16.84646      31.41         19.53         3.048 \r\n 2006          185           26.15883      27.27         15.67         0 \r\n 2006          186           25.89319      26.42         11.58         0 \r\n 2006          187           24.79572      27.35         11.82         0 \r\n 2006          188           22.76728      26.97         14.1          0 \r\n 2006          189           13.81871      26.94         15.73         0 \r\n 2006          190           25.33985      31.76         17.54         0 \r\n 2006          191           6.803267      24.6          19.2          7.366 \r\n 2006          192           16.19233      29.52         20.03         0 \r\n 2006          193           18.58432      28.78         19.71         0 \r\n 2006          194           19.82551      33.81         18.67         15.748 \r\n 2006          195           24.25314      31.11         17.23         0 \r\n 2006          196           25.78746      34.01         19.4          0 \r\n 2006          197           25.90704      34.6          20.5          0 \r\n 2006          198           24.31598      36.34         24.27         0 \r\n 2006          199           25.73875      33.57         17.15         0 \r\n 2006          200           23.15949      36.9          22            0 \r\n 2006          201           23.84441      31.66667      19.60056      0 \r\n 2006          202           13.81996      25.73         17.33         13.208 \r\n 2006          203           23.45994      27.82         16.39         0 \r\n 2006          204           24.42251      30.31         14.94         0 \r\n 2006          205           18.48378      30.8          18.53         0 \r\n 2006          206           17.18612      33.42         20.29         0.508 \r\n 2006          207           23.66558      31.01056      20.43222      9.779 \r\n 2006          208           12.69434      29.52         20.81         1.27 \r\n 2006          209           24.86798      32.57         19.69         0 \r\n 2006          210           24.34532      33.27945      21.78722      0 \r\n 2006          211           24.92568      34.225        22.055        0 \r\n 2006          212           25.16718      34.625        23.30389      0 \r\n 2006          213           16.77914      31.97278      22.005        7.4168 \r\n 2006          214           13.79369      31            20.69         50.038 \r\n 2006          215           24.72434      28.56         19.3          2.032 \r\n 2006          216           25.71122      28.87056      15.40611      0 \r\n 2006          217           18.7647       29.81444      18.20555      0 \r\n 2006          218           18.42403      30.77389      19.78667      0 \r\n 2006          219           12.41025      25.83556      18.04056      7.5438 \r\n 2006          220           8.461847      23.69333      17.84889      8.8392 \r\n 2006          221           17.03629      30.86611      19.59722      9.3218 \r\n 2006          222           15.64485      29.89         20.76         2.54 \r\n 2006          223           17.57665      26.29         19.14         0 \r\n 2006          224           19.5807       27.79         17.86         0 \r\n 2006          225           9.816459      25.79611      19.28333      3.556 \r\n 2006          226           22.98066      26.20833      15.38556      0 \r\n 2006          227           23.99352      27.81167      14.86444      0 \r\n 2006          228           21.9601       27.86         15.71         0 \r\n 2006          229           11.36454      27.85         18.41611      6.8072 \r\n 2006          230           5.816136      25.56         20.01         44.958 \r\n 2006          231           6.029855      24.77         16.18         0 \r\n 2006          232           18.9977       25.64         14.55         0 \r\n 2006          233           20.64453      28.36722      14.89111      0 \r\n 2006          234           21.80337      29.18         16.45         0 \r\n 2006          235           21.79822      30.15         17.11         0 \r\n 2006          236           20.69109      31.43389      19.06444      0 \r\n 2006          237           6.533023      23.85778      19.52555      0 \r\n 2006          238           7.764249      24.23         19.6          13.716 \r\n 2006          239           3.965009      22.41         18.77         2.032 \r\n 2006          240           3.839615      21.41         14.81         10.668 \r\n 2006          241           13.72427      25.06         15.27         1.524 \r\n 2006          242           21.12481      25.31         13.44         0.254 \r\n 2006          243           20.38311      24.79         13.91         0 \r\n 2006          244           16.85629      25.075        12.94778      0 \r\n 2006          245           10.36318      21.03778      12.92722      0 \r\n 2006          246           20.06789      23.27         13.61         5.842 \r\n 2006          247           16.34103      21.71944      10.85167      2.8194 \r\n 2006          248           18.34215      25.03         11.01         0 \r\n 2006          249           19.72174      27.62556      13.90778      0 \r\n 2006          250           19.9991       26.95         12.85         0 \r\n 2006          251           19.39046      28.72667      12.83944      0 \r\n 2006          252           5.739402      21.69         16.67         1.27 \r\n 2006          253           3.104026      18.74         15.45         4.064 \r\n 2006          254           2.8765        19.56         13.62         2.54 \r\n 2006          255           8.384443      19.11555      11.53778      0 \r\n 2006          256           15.96861      22.59         9.72          0 \r\n 2006          257           15.37653      25.12         10.53         0 \r\n 2006          258           15.43825      26.84         12.97         0 \r\n 2006          259           13.06199      30.42         18.46         0 \r\n 2006          260           8.838324      25.33         8.87          6.35 \r\n 2006          261           15.99924      15.89         6.822222      0 \r\n 2006          262           13.32278      15.09         4.976111      0 \r\n 2006          263           18.50014      17.02         0.9122222     0 \r\n 2006          264           4.111617      18.54         10.02         8.89 \r\n 2006          265           13.65013      22.29         12.61         0 \r\n 2006          266           7.002844      16.25111      9.243333      0 \r\n 2006          267           18.89252      19.66889      8.548889      0 \r\n 2006          268           18.43111      23.12         6.582778      0 \r\n 2006          269           17.64644      25.33         7.21          0 \r\n 2006          270           12.94082      17.92         10.05         0 \r\n 2006          271           15.69803      15.1          4.813889      0 \r\n 2006          272           14.76693      22.44944      6.666667      0 \r\n 2006          273           15.91644      24.85556      9.216666      0 \r\n 2006          274           17.31335      30.02         11.35         0 \r\n 2006          275           13.44466      29.8          19.68         0 \r\n 2006          276           16.71918      31.28         17.24         0 \r\n 2006          277           7.701322      22.21667      12.59778      0 \r\n 2006          278           17.31795      18.63         7.78          0 \r\n 2006          279           16.03418      20.575        6.687778      0 \r\n 2006          280           17.7456       23.95         9.27          0 \r\n 2006          281           13.36194      23.78         8.79          0 \r\n 2006          282           11.87202      17.41         9.31          0 \r\n 2006          283           4.135591      9.591666      7.035         6.4262 \r\n 2006          284           9.206139      8.87         -1.758889      0 \r\n 2006          285           17.36101      7.94         -2.718889      0 \r\n 2006          286           18.09789      11.23        -3.317222      0 \r\n 2006          287           17.89007      12.31        -3.098889      0 \r\n 2006          288           3.535647      11.55         3.587778      1.016 \r\n 2006          289           2.115472      12.67         10.3          2.54 \r\n 2006          290           3.233437      16.24         8.63          0 \r\n 2006          291           2.620188      8.65          3.51          0.762 \r\n 2006          292           13.46909      8.25          1.475         0 \r\n 2006          293           6.353822      15.13        -0.3577778     0 \r\n 2006          294           1.302898      9.81         -0.225         1.016 \r\n 2006          295           8.118675      4.416111     -2.957222      0 \r\n 2006          296           14.57488      6.695        -4.513889      0 \r\n 2006          297           13.72302      9.21         -6.513889      0 \r\n 2006          298           5.855634      9.18          1.287222      3.048 \r\n 2006          299           2.047733      6.892778      4.718889      10.4648 \r\n 2006          300           8.540673      12.85         4.342222      0 \r\n 2006          301           10.14863      15.26         1.74          0 \r\n 2006          302           13.1827       19.98        -0.4038889     0 \r\n 2006          303           10.07993      21.43         1.268889      0 \r\n 2006          304           12.99467      4.67         -4.447222      0 \r\n 2006          305           11.94699      7.7          -6.648889      0 \r\n 2006          306           13.19998      5.582222     -6.503889      0 \r\n 2006          307           11.61801      12.43        -7.04          0 \r\n 2006          308           9.928339      14.75         4.19          0 \r\n 2006          309           11.48454      16.72         1.316111      0 \r\n 2006          310           2.308898      11.72         4.063889      0 \r\n 2006          311           9.441824      18.66         5.143889      0 \r\n 2006          312           11.0404       24.3          7.06          0 \r\n 2006          313           11.31174      17.06         6.326111      0 \r\n 2006          314           11.68365      6.532778     -1.448889      0 \r\n 2006          315           12.05557      6.532778     -5.681111      0 \r\n 2006          316           7.976419      10.52        -3.703889      0 \r\n 2006          317           10.68757      9.99          1.862778      0 \r\n 2006          318           4.859256      7.76          0.565         0 \r\n 2006          319           2.591193      5.6          -0.8827778     0 \r\n 2006          320           6.393068      5.365        -3.392222      0 \r\n 2006          321           10.20854      8.59         -2.672778      0 \r\n 2006          322           3.718781      3.33         -0.9872222     0 \r\n 2006          323           10.88585      5.068889     -7.71          0 \r\n 2006          324           10.25289      9.94         -8.37          0 \r\n 2006          325           9.702194      13.73         1.636111      0 \r\n 2006          326           9.428476      15.78         2.395         0 \r\n 2006          327           8.432852      16.41111     -0.6577778     0 \r\n 2006          328           8.167921      14.75         5.522778      0 \r\n 2006          329           3.523974      11.84         3.357222      0 \r\n 2006          330           6.290686      17.23         7.75          0 \r\n 2006          331           5.577941      14.51         6.727778      0 \r\n 2006          332           4.865197      18.5          3.338889      0 \r\n 2006          333           1.141855      3.347778     -5.865         0 \r\n 2006          334           5.535306     -5.856111     -11.34         0 \r\n 2006          335           9.337056     -0.4777778    -12.37         0 \r\n 2006          336           9.583536     -3.387778     -11.12         0 \r\n 2006          337           9.662195     -6.628889     -13.18         0 \r\n 2006          338           8.620044      5.422778     -12.03         0 \r\n 2006          339           6.692643      8.45         -9.79          0 \r\n 2006          340           6.368132      5.002778     -11.22         0 \r\n 2006          341           9.492073     -8.04         -16.12         0 \r\n 2006          342           8.554523      1.72         -14.77         0 \r\n 2006          343           9.29166       9.68         -4.646111      0 \r\n 2006          344           8.645315      10.87         1.89          0 \r\n 2006          345           1.288421      11.09         2.133889      0 \r\n 2006          346           1.464818      11.16        -3.316111      0 \r\n 2006          347           9.035222      13.38        -4.121111      0 \r\n 2006          348           7.443545      14.43         5.925         0 \r\n 2006          349           7.380032      7.65         -2.701111      0 \r\n 2006          350           3.718237      15.5          4.627222      0 \r\n 2006          351           3.12164       6.01          1.322778      0 \r\n 2006          352           7.991817      4.443889     -6.191111      0 \r\n 2006          353           9.201746      7.96         -9.72          0 \r\n 2006          354           8.07058       5.838889     -2.522222      0 \r\n 2006          355           6.939415      12.24         5.611111      12.7 \r\n 2006          356           1.587242      5.887222      1.025         3.81 \r\n 2006          357           8.291349      4.642222     -2.728889      0 \r\n 2006          358           8.057548      7.3          -5.678889      0 \r\n 2006          359           6.559926      2.117222     -4.853889      0 \r\n 2006          360           9.392494      4.917778     -7.73          0 \r\n 2006          361           4.198058      7.68          0.1522222     0 \r\n 2006          362           6.594235      10.08         0.8727778     0 \r\n 2006          363           8.32047       14.56         5.451111      0 \r\n 2006          364           1.544063      10.57         6.61          5.59 \r\n 2006          365           1.800794      10.03        -2.247778      20.32 \r\n 2007          1             9.775121      3.452222     -5.285         0.25 \r\n 2007          2             7.46911       2.86         -7.09          0 \r\n 2007          3             9.269276      10.49        -0.9588889     0 \r\n 2007          4             5.55062       12.79         3.482222      0 \r\n 2007          5             6.385997      7.46         -0.855         0 \r\n 2007          6             9.784033      6.525        -4.102222      0 \r\n 2007          7             4.215422      2.927222     -3.827778      0 \r\n 2007          8             9.60228       8.05         -4.063889      0 \r\n 2007          9             10.04721      3.122778     -6.251111      0 \r\n 2007          10            9.771398      10.19        -6.6           0 \r\n 2007          11            1.9733        9.92         -4.876111      0 \r\n 2007          12            2.579854     -4.867222     -12.7          0.25 \r\n 2007          13            1.856483     -8.21         -14.29         0.25 \r\n 2007          14            1.090601     -3.382222     -8.32          0.51 \r\n 2007          15            6.138305     -5.865        -20.15         11.43 \r\n 2007          16            9.96043      -9.55         -23.26         0.51 \r\n 2007          17            9.630145     -5.323889     -18.3          0 \r\n 2007          18            7.738266     -2.152222     -8.33          0 \r\n 2007          19            10.52096     -0.035        -11.52         0 \r\n 2007          20            6.341354     -2.567778     -16.62         0 \r\n 2007          21            5.888018     -0.9772222    -4.397222      3.81 \r\n 2007          22            4.976324     -3.163889     -7.55          1.27 \r\n 2007          23            5.308576     -1.907778     -11.27         0 \r\n 2007          24            4.98009       0.3777778    -6.335         2.03 \r\n 2007          25            7.891233     -2.727222     -7.02          0 \r\n 2007          26            11.61888      7.35         -2.956111      0 \r\n 2007          27            8.869996     -1.012778     -14.46         0 \r\n 2007          28            12.00783     -9.63         -18.8          0 \r\n 2007          29            9.144759     -0.28         -14.72         0 \r\n 2007          30            12.16632     -12.22        -19.01         0 \r\n 2007          31            6.300811     -6.267778     -19.29         0 \r\n 2007          32            12.69685     -6.937222     -15.95         0.76 \r\n 2007          33            12.99262     -10.6         -19.74         0 \r\n 2007          34            12.80078     -10.8         -21.51         0 \r\n 2007          35            13.04726     -14.6         -21.8          0 \r\n 2007          36            7.01092      -13.1         -19.5          0 \r\n 2007          37            8.827822     -7.38         -15.26         0.76 \r\n 2007          38            6.305748     -10.19        -14.87         0 \r\n 2007          39            8.056209     -9.78         -13.36         0 \r\n 2007          40            13.43972     -7.17         -13.98         0 \r\n 2007          41            14.06334     -7.02         -17.65         0 \r\n 2007          42            10.31088      2.973889     -7.85          0 \r\n 2007          43            2.323166      0.6772223    -4.73          0 \r\n 2007          44            9.301325     -4.69         -12.73         4.57 \r\n 2007          45            14.53409     -10.78        -20.1          1.27 \r\n 2007          46            14.43823     -12.79        -22.07         0 \r\n 2007          47            10.75372     -2.985        -22.06         0 \r\n 2007          48            9.736795     -2.985        -7.777778      1.52 \r\n 2007          49            14.03288      1.817222     -12.75         0 \r\n 2007          50            12.27699      8.08          0.51          0 \r\n 2007          51            14.19824      9.24         -0.7611111     1.52 \r\n 2007          52            15.15135      13.01        -0.31          0 \r\n 2007          53            15.40109      7.07         -1.975         0 \r\n 2007          54            5.500789      3.248889     -2.816111      0 \r\n 2007          55            5.771514      2.982778     -0.1411111     5.08 \r\n 2007          56            6.04224       2.4          -2.976111      28.45 \r\n 2007          57            14.65375     -0.1572222    -4.397222      0.51 \r\n 2007          58            17.24264      3.522778     -6.232222      0 \r\n 2007          59            2.459899      1.535        -1.72          0 \r\n 2007          60            1.841797      6.102222     -3.693889      3.81 \r\n 2007          61            10.72405     -2.803889     -8.03          8.89 \r\n 2007          62            17.95551     -6.327222     -11.62         0.51 \r\n 2007          63            19.0003       2.737778     -13.28         0 \r\n 2007          64            18.5455       3.076111     -7.72          0 \r\n 2007          65            14.04573      4.011111     -8.58          0 \r\n 2007          66            8.170725      0.8472222    -4.961111      0 \r\n 2007          67            18.57144      10.57        -5.236111      0 \r\n 2007          68            5.332383      9.27          0.49          1.27 \r\n 2007          69            17.37837      13.76        -1.362778      7.62 \r\n 2007          70            17.51778      16.19         0.1411111     0 \r\n 2007          71            19.27259      20.67         4.538889      0 \r\n 2007          72            18.90214      23.59         9.55          0 \r\n 2007          73            14.39924      16.64         2.641111      0 \r\n 2007          74            13.35361      8.43         -1.371111      0 \r\n 2007          75            20.31365      6.401111     -2.702778      0 \r\n 2007          76            13.09655      4.047778     -2.577778      2.03 \r\n 2007          77            16.93068      10.29        -3.988889      3.81 \r\n 2007          78            20.19956      14.11         1.251111      0 \r\n 2007          79            13.35169      13.25        -2.727778      0 \r\n 2007          80            4.69449       19.41         7.24          4.57 \r\n 2007          81            14.17799      15.77         5.392222      11.43 \r\n 2007          82            8.984889      19.82         8.48          4.57 \r\n 2007          83            11.22584      22.69         14.03         0.25 \r\n 2007          84            20.12872      26.34         15.7          0.51 \r\n 2007          85            16.64981      23.86         14.39         0 \r\n 2007          86            12.04687      23.02         13.95         0.25 \r\n 2007          87            12.61321      21.48         12.77         0 \r\n 2007          88            4.859088      15.93         12.5          0.25 \r\n 2007          89            8.707574      20.14         13.55         10.16 \r\n 2007          90            9.815078      20.52         8             15.24 \r\n 2007          91            13.17935      16.93         5.572778      0.254 \r\n 2007          92            19.94433      19.1          3.785         0 \r\n 2007          93            10.51176      18.23        -3.277778      5.842 \r\n 2007          94            22.66674      2.965        -6.618889      0 \r\n 2007          95            24.53564      4.066111     -6.3           0 \r\n 2007          96            22.6223       0.33         -8.02          0 \r\n 2007          97            25.33123      2.238889     -9.32          0 \r\n 2007          98            24.42628      5.28         -7.26          0 \r\n 2007          99            22.86719      9.38         -5.115         0 \r\n 2007          100           6.992929      11.02        -0.01          0 \r\n 2007          101           4.694908      3.7          -0.7161111     0 \r\n 2007          102           14.88165      7.1          -1.222222      0 \r\n 2007          103           14.74015      8.58         -2.71          0 \r\n 2007          104           12.6989       10.18         0.81          0 \r\n 2007          105           24.99358      17.81         0.6388889     0 \r\n 2007          106           24.54406      22.26         2.587222      0 \r\n 2007          107           18.17392      22.24         8.07          0 \r\n 2007          108           22.55783      18.245        3.823889      0 \r\n 2007          109           21.94002      16.49         2.897222      0 \r\n 2007          110           22.27775      23.12056      5.805         0 \r\n 2007          111           23.1476       26.73944      9.388333      0 \r\n 2007          112           11.71123      24.09833      11.46556      6.5786 \r\n 2007          113           19.4566       20.16         10.31         0 \r\n 2007          114           4.06735       13.36333      8.143888      48.9458 \r\n 2007          115           3.567906      11.22         8.07          19.812 \r\n 2007          116           5.811743      12.08056      5.635         3.6068 \r\n 2007          117           23.33471      20.31         6.468889      0 \r\n 2007          118           25.2742       24.1          11            0 \r\n 2007          119           24.41209      28.98         11.19         0 \r\n 2007          120           25.45345      28.9          16.03         0 \r\n 2007          121           18.60449      25.01         14.05         0 \r\n 2007          122           17.38795      20.52         9.61          0 \r\n 2007          123           4.130905      16.29         10.74         0.762 \r\n 2007          124           8.260596      19.01667      12.81889      10.2108 \r\n 2007          125           13.19705      24.02889      15.64222      0 \r\n 2007          126           3.923588      17.88222      12.13056      44.2468 \r\n 2007          127           15.09679      22.53611      13.65889      6.1722 \r\n 2007          128           23.73847      23.84         12.33389      0 \r\n 2007          129           24.3482       26.18389      11.96611      0 \r\n 2007          130           24.12147      28.57389      12.77389      0 \r\n 2007          131           27.2875       28.96167      14.17333      0 \r\n 2007          132           23.90646      28.12389      12.505        0 \r\n 2007          133           25.77164      29.22722      14.53778      0 \r\n 2007          134           25.35805      31.59         18.11889      0 \r\n 2007          135           9.237812      19.45278      10.02556      5.6642 \r\n 2007          136           22.4562       21.20333      7.021111      0 \r\n 2007          137           28.89178      19.59389      5.138333      0 \r\n 2007          138           27.89464      23.63889      6.107778      0 \r\n 2007          139           26.97873      27.59389      12.30889      0 \r\n 2007          140           24.92488      27.875        14.75667      0 \r\n 2007          141           25.78913      28.56556      14.57         0 \r\n 2007          142           15.68423      26.72667      16.29333      0 \r\n 2007          143           15.37469      27.26722      17.89333      14.5288 \r\n 2007          144           12.74882      20.29556      10.01611      27.4574 \r\n 2007          145           27.5316       20.95778      8.284445      0 \r\n 2007          146           11.73495      22.53167      12.58944      9.0678 \r\n 2007          147           26.6025       22.23889      8.911111      0 \r\n 2007          148           17.59598      26.48333      14.70833      0 \r\n 2007          149           20.28809      28.12056      17.99222      0 \r\n 2007          150           14.37116      24.31333      15.47         10.8204 \r\n 2007          151           22.74222      25.07389      12.93889      5.4102 \r\n 2007          152           13.46579      23.95333      15.15111      10.4394 \r\n 2007          153           21.3492       23.42056      14.11889      0 \r\n 2007          154           17.83267      23.46056      14.41611      0 \r\n 2007          155           22.54201      26.11389      14.57778      0 \r\n 2007          156           28.49752      23.06056      11.66611      0 \r\n 2007          157           18.05693      28.97056      12.50833      4.0386 \r\n 2007          158           21.68178      29.58889      16.52833      0 \r\n 2007          159           29.01311      22.36833      11.00278      0 \r\n 2007          160           28.99985      26.70833      9.71          0 \r\n 2007          161           20.26579      27.90167      14.35278      0 \r\n 2007          162           24.53326      28.95111      16.44778      0 \r\n 2007          163           26.26544      30.27278      17.40667      0 \r\n 2007          164           26.55108      29.96778      17.00611      0 \r\n 2007          165           27.64959      31.10167      16.32944      0 \r\n 2007          166           26.26389      31.92389      17.55278      0 \r\n 2007          167           23.1448       31.84889      19.21556      0 \r\n 2007          168           24.38184      31.39722      19.54611      0 \r\n 2007          169           13.15948      27.20444      18.31556      7.7216 \r\n 2007          170           23.98901      25.84945      12.97333      0 \r\n 2007          171           28.58438      30.13556      12.68278      0 \r\n 2007          172           19.88362      31.65055      19.17167      9.5504 \r\n 2007          173           11.80917      25.82278      16.71111      26.543 \r\n 2007          174           9.993777      22.76056      16.81667      0 \r\n 2007          175           12.38485      24.24333      16.64278      0 \r\n 2007          176           25.71499      29.86611      16.77278      0 \r\n 2007          177           26.40033      31.38056      20.88611      0 \r\n 2007          178           20.33738      28.10778      18.47667      0 \r\n 2007          179           20.47566      24.02833      14.51444      0 \r\n 2007          180           20.53871      24.18556      14.05944      0 \r\n 2007          181           27.00195      25.32055      12.58333      0 \r\n 2007          182           24.8          26.96667      12.94389      0 \r\n 2007          183           28.8          28.14778      14.77389      0 \r\n 2007          184           23.3          30.855        19.02944      0 \r\n 2007          185           24.8          31.00111      19.74611      0 \r\n 2007          186           29.7          31.33278      18.705        0 \r\n 2007          187           27.7          32.22         18.10778      0 \r\n 2007          188           29.2          33.49667      19.87556      0 \r\n 2007          189           30.4          32.5          21.63         0 \r\n 2007          190           22.8          32.01         20.34         1.016 \r\n 2007          191           21.3          28.93         15.88         0 \r\n 2007          192           26.5          25.86         13.3          0 \r\n 2007          193           21.4          27.83         14.23         1.778 \r\n 2007          194           29.6          26.23         11.88         0 \r\n 2007          195           28.9          31.3          15.25         0 \r\n 2007          196           27.7          29.68         15.94         0 \r\n 2007          197           27.5          31.76         19.66         5.08 \r\n 2007          198           26.9          34.25         21.77         0 \r\n 2007          199           17.8          33.12         23.18         0 \r\n 2007          200           16.5          29.12         17.53         9.906 \r\n 2007          201           26.9          25.82         14.06         0 \r\n 2007          202           28.3          26.36         14.13         0 \r\n 2007          203           23.4          28.42         15.31         0 \r\n 2007          204           20.1          27.25         17.15         16.002 \r\n 2007          205           25.5          29.49         15.87         0 \r\n 2007          206           24.5          30.93         18.04         0 \r\n 2007          207           25.4          31.17         18.35         12.192 \r\n 2007          208           17.3          27.83         20.53         4.572 \r\n 2007          209           21.8          28.76         19.7          0 \r\n 2007          210           16.2          28.26         18.47         0 \r\n 2007          211           21.7          29.3          18.53         0 \r\n 2007          212           24.6          29.64         16.97         0 \r\n 2007          213           24.6          31.9          18.66         0 \r\n 2007          214           19.4          31.84         20.09         0 \r\n 2007          215           24            30.79         16.97         0 \r\n 2007          216           19.2          33.52         19.28         0.762 \r\n 2007          217           21.2          33.76         22.91         2.032 \r\n 2007          218           15            31.44         24.21         5.334 \r\n 2007          219           23.1          33.84         20.77         38.354 \r\n 2007          220           7.8           25.05         20.73         25.146 \r\n 2007          221           22.4          30.31         20.71         0 \r\n 2007          222           27.2          32.07         20.48         0 \r\n 2007          223           25.7          33.27         22.43         0 \r\n 2007          224           26.7          32.51         19.79         18.542 \r\n 2007          225           24.1          31.44         19.4          6.604 \r\n 2007          226           24.5          33.25         24.3          0.508 \r\n 2007          227           19.6          32.35         23.42         0 \r\n 2007          228           9.8           27.75         20.09         6.858 \r\n 2007          229           20.7          26.73         18.22         0 \r\n 2007          230           19.8          31.23         19.11         0 \r\n 2007          231           12.6          29.04         22.57         0 \r\n 2007          232           17.7          28            20.57         7.874 \r\n 2007          233           21.8          31.59         19.64         4.572 \r\n 2007          234           16.5          31.74         19.34         19.558 \r\n 2007          235           10.9          30.08         18.8          72.39 \r\n 2007          236           8.1           23.58         18.63         25.908 \r\n 2007          237           24            26.05         16.57         0 \r\n 2007          238           24.2          26.68         15.39         0 \r\n 2007          239           24.4          31.98         20.46         0 \r\n 2007          240           24.4          31.62         20.98         0 \r\n 2007          241           9.7           24.59         16.66         0 \r\n 2007          242           22.8          25.32         13.3          0 \r\n 2007          243           24.2          25.89         12.46         0 \r\n 2007          244           21.16455      26.17         13.28         0 \r\n 2007          245           21.08602      28.85         12.98         0 \r\n 2007          246           20.66017      30.53         13.95         0 \r\n 2007          247           18.60056      30.56         17.6          0 \r\n 2007          248           17.238        28.03         19.28         0 \r\n 2007          249           7.974411      26.19         20.06         21.336 \r\n 2007          250           15.41921      24.59         15.06         0.762 \r\n 2007          251           20.32395      26.05         13.6          0 \r\n 2007          252           13.71473      23.71         14.06         0 \r\n 2007          253           2.700646      15.62         8.81          2.286 \r\n 2007          254           20.17387      21.55         7.56          0.254 \r\n 2007          255           19.96032      21.04         4.56          0 \r\n 2007          256           18.9962       26.7          10.02         0 \r\n 2007          257           19.92471      15.83         3.021111      0 \r\n 2007          258           15.17152      16.3          0.6872222     1.27 \r\n 2007          259           16.26986      23.46         9.82          0 \r\n 2007          260           16.98194      29.61         16.2          0 \r\n 2007          261           10.8879       28.38         15.32         35.56 \r\n 2007          262           12.50823      23.45         13.09         0 \r\n 2007          263           14.82404      28.8          14.32         0 \r\n 2007          264           15.51436      30.03         13.18         8.128 \r\n 2007          265           19.01264      23.17         9.07          0 \r\n 2007          266           16.86851      29.84         14.12         0 \r\n 2007          267           13.22211      29.34         19.88         0 \r\n 2007          268           2.250406      22.99         9.25          0.508 \r\n 2007          269           17.39151      21.24         6.167222      0 \r\n 2007          270           17.57493      25.12         11.56         0 \r\n 2007          271           18.00082      23.61         7.05          0 \r\n 2007          272           15.29708      25.68         14.1          0 \r\n 2007          273           10.44874      26.76         14.9          14.224 \r\n 2007          274           15.11504      24.05         13.78         0 \r\n 2007          275           3.826645      23.5          11.76         22.352 \r\n 2007          276           17.44937      23.41         7.76          0 \r\n 2007          277           12.79584      27.67         12.51         0 \r\n 2007          278           14.08924      29.44         19.28         0 \r\n 2007          279           12.07423      29.52         20.52         0 \r\n 2007          280           7.180957      26.5          21.09         0.762 \r\n 2007          281           12.35477      22.48         11.48         19.558 \r\n 2007          282           16.18225      23.78         8.49          0 \r\n 2007          283           12.62606      11.15         3.86          0 \r\n 2007          284           12.65961      13.06         1.983889      0 \r\n 2007          285           12.12473      18.28         7.28          3.81 \r\n 2007          286           3.379668      15.29         10.96         3.302 \r\n 2007          287           6.298091      21.06         12.43         21.336 \r\n 2007          288           4.882728      19.53         11.85         0.508 \r\n 2007          289           4.788923      14            9.23          0 \r\n 2007          290           3.000137      15.97         11.07         23.368 \r\n 2007          291           4.237011      17.37         11.47         9.652 \r\n 2007          292           12.14339      16.93         7.97          0.254 \r\n 2007          293           14.16158      25.68         6.565         0 \r\n 2007          294           8.624103      22.68         10.54         0 \r\n 2007          295           3.23373       10.98         2.163889      3.81 \r\n 2007          296           13.96012      17.94         0.6961111     0 \r\n 2007          297           13.60532      12.48         3.407778      0 \r\n 2007          298           13.53779      13.29        -0.8172222     0 \r\n 2007          299           4.792228      12.67         8.27          0 \r\n 2007          300           12.32975      13.42         1.12          0 \r\n 2007          301           12.75032      14.87        -0.7511111     0 \r\n 2007          302           12.1126       19.2          3.122222      0 \r\n 2007          303           9.652363      20.26         7.81          0 \r\n 2007          304           9.661149      13.99         0.5711111     0 \r\n 2007          305           12.31891      13.85        -2.247778      0 \r\n 2007          306           11.14927      15.68         0.095         0 \r\n 2007          307           9.764661      13.18        -0.9577778     0 \r\n 2007          308           10.8907       17.66         1.053889      0 \r\n 2007          309           11.55558      10.34         0.2527778     0 \r\n 2007          310           11.82712      5.315        -5.448889      0 \r\n 2007          311           10.23762      9.03         -7.36          0 \r\n 2007          312           8.580213      10.26        -0.5722222     0 \r\n 2007          313           11.05932      11.06        -3.997778      0 \r\n 2007          314           7.054684      12.69         0.9877778     0 \r\n 2007          315           2.955327      19.27         9.89          0 \r\n 2007          316           4.922392      15.07         0.8377778     0 \r\n 2007          317           9.011624      15.98        -3.808889      0 \r\n 2007          318           6.711387      10.89         3.36          0 \r\n 2007          319           10.68071      6.716111     -2.305         0 \r\n 2007          320           10.14729      13.07        -0.5911111     0 \r\n 2007          321           10.12135      13.16         2.253889      0 \r\n 2007          322           3.323937      6.632778      1.455         0.762 \r\n 2007          323           8.20085       22.83         1.003889      0 \r\n 2007          324           2.117648      18.26         3.021111      0 \r\n 2007          325           1.885896      3.03         -4.027778      0 \r\n 2007          326           4.244417     -2.492778     -4.703889      0 \r\n 2007          327           9.648681     -1.806111     -11            0 \r\n 2007          328           6.424909      0.8338889    -5.471111      0 \r\n 2007          329           9.524416      6.317222     -3.647778      0 \r\n 2007          330           9.11794       6.047222     -3.513889      0 \r\n 2007          331           7.728518      2.371111     -4.991111      0 \r\n 2007          332           4.608174      7.08         -6.116111      0 \r\n 2007          333           7.708183      5.706111     -7.72          0 \r\n 2007          334           7.994076      0.8472222    -8.32          0 \r\n 2007          335           6.029458      12.99        -5.401111      0.76 \r\n 2007          336           4.06484       6.126111     -7.82          33.02 \r\n 2007          337           8.155829      2.792222     -9.81          0 \r\n 2007          338           5.471333      4.812778     -4.762222      0 \r\n 2007          339           7.469695      4.076111     -9.99          0 \r\n 2007          340           1.634229     -2.71         -10.54         0 \r\n 2007          341           5.067284     -1.531111     -7.08          3.56 \r\n 2007          342           2.04221      -7.07         -11.27         0 \r\n 2007          343           1.961334     -9.09         -11.53         0.76 \r\n 2007          344           3.853799     -2.312778     -10.32         1.02 \r\n 2007          345           1.447246     -0.9672222    -5.652778      25.4 \r\n 2007          346           3.097248     -3.572222     -7.07          12.7 \r\n 2007          347           7.489318      0.8488889    -4.932778      0 \r\n 2007          348           7.851401     -3.948889     -10.24         0 \r\n 2007          349           4.779634     -6.998889     -14.12         4.06 \r\n 2007          350           8.015875     -6            -15.63         1.78 \r\n 2007          351           8.44645      -1.222778     -15.61         0 \r\n 2007          352           9.106518      0.6938889    -6.813889      0 \r\n 2007          353           7.911442      2.462222     -10.63         0 \r\n 2007          354           5.866554      1.576111     -4.266111      0 \r\n 2007          355           2.819012      5.012778     -0.5527778     0 \r\n 2007          356           5.296086      4.878889     -9.43          0 \r\n 2007          357           7.773161     -3.873889     -12.69         8.38 \r\n 2007          358           5.608359     -4.207778     -7.87          0 \r\n 2007          359           9.093673      6.095        -5.106111      0 \r\n 2007          360           4.153331     -0.4038889    -5.711111      0 \r\n 2007          361           3.73309      -4.798889     -6.815         2.03 \r\n 2007          362           4.516837     -3.127222     -5.257222      1.27 \r\n 2007          363           9.0961       -0.9188889    -11.45         3.3 \r\n 2007          364           8.790417     -0.5622222    -12.64         0 \r\n 2007          365           5.768648     -4.055        -12.37         0.25 \r\n 2008          1             9.024804     -8.56         -15.88         1.27 \r\n 2008          2             9.643325     -9.51         -17.61         0 \r\n 2008          3             9.429272     -1.73         -16.86         0 \r\n 2008          4             6.268971      3.333889     -4.637222      0 \r\n 2008          5             5.45376       8.47          0.3688889     0 \r\n 2008          6             6.297924      8.73          1.035         0 \r\n 2008          7             4.25973       14.26        -0.8077778     0 \r\n 2008          8             1.596865      1.571111     -3.002778      0 \r\n 2008          9             3.0093        1.635        -4.886111      1.78 \r\n 2008          10            1.361139      0.415        -3.117778      0 \r\n 2008          11            8.860206     -1.257778     -8.9           12.7 \r\n 2008          12            6.424699     -1.973889     -8.72          0 \r\n 2008          13            9.529018     -2.397778     -11.09         0 \r\n 2008          14            10.32226     -4.532222     -16.28         0 \r\n 2008          15            10.2659      -2.662778     -18.23         0 \r\n 2008          16            3.762044      0.3977778    -8.32          0 \r\n 2008          17            10.15909     -8.31         -17.64         5.84 \r\n 2008          18            8.639291     -9.01         -21.97         0 \r\n 2008          19            11.27044     -16.25        -26.39         0 \r\n 2008          20            7.630737     -10.2         -25.78         0 \r\n 2008          21            4.507256     -1.23         -11.16         0 \r\n 2008          22            11.20178     -8.48         -17.71         0.76 \r\n 2008          23            7.202338     -9.25         -20.74         0 \r\n 2008          24            11.69457     -13.09        -26.68         0.25 \r\n 2008          25            4.019945     -4.873889     -18.37         0 \r\n 2008          26            11.45926      2.522778     -9.31          0 \r\n 2008          27            11.33617      6.547778     -8.02          0 \r\n 2008          28            7.218781      12.57         4.172778      0 \r\n 2008          29            2.881102      9.9          -16.51         0.25 \r\n 2008          30            6.419804     -9.72         -17.85         0.51 \r\n 2008          31            6.787327     -2.427778     -10.44         0 \r\n 2008          32            9.913445      0.4438889    -11.57         0 \r\n 2008          33            9.359483      4.597778     -3.96          0 \r\n 2008          34            1.921837     -1.577778     -4.13          0 \r\n 2008          35            5.91241       4.637222     -2.86          8.89 \r\n 2008          36            2.331241      0.5288889    -3.002778      0 \r\n 2008          37            8.831546     -2.822778     -8.22          16.26 \r\n 2008          38            7.960144     -4.36         -9.92          2.54 \r\n 2008          39            10.78405      1.187222     -9.68          0 \r\n 2008          40            12.31309      1.572222     -13.11         0 \r\n 2008          41            11.07689     -13.1         -17.21         0 \r\n 2008          42            9.784284     -12.19        -17.72         0 \r\n 2008          43            13.46654     -10.84        -19.33         0.51 \r\n 2008          44            14.08669     -2.087222     -22.5          0 \r\n 2008          45            8.721841      2.267778     -13.71         0 \r\n 2008          46            15.35064     -7.33         -19.31         0 \r\n 2008          47            13.44428      1.927778     -15.43         0 \r\n 2008          48            5.256276      0.3322222    -4.767778      13.21 \r\n 2008          49            14.03155     -4.052222     -18.59         8.89 \r\n 2008          50            10.39682     -6.977778     -21.22         0 \r\n 2008          51            16.41065     -14.66        -23.41         0 \r\n 2008          52            8.887862     -8.02         -19.05         0 \r\n 2008          53            15.95631     -3.821111     -12.83         0 \r\n 2008          54            15.9646       4.722222E-02               -15            0 \r\n 2008          55            16.47885      3.615        -9.11          0 \r\n 2008          56            5.790698      1.995        -3.002222      0 \r\n 2008          57            15.26332     -2.992222     -9.77          7.11 \r\n 2008          58            18.02254     -3.527222     -10.32         0 \r\n 2008          59            7.324469      1.257222     -10.83         0 \r\n 2008          60            18.13429      4.4          -1.717778      1.52 \r\n 2008          61            15.5162       10.49        -3.672778      0 \r\n 2008          62            11.41056      15.92        -0.7138889     0 \r\n 2008          63            13.02555     -0.6961111    -10.25         14.48 \r\n 2008          64            17.93467     -6.722222E-02               -10.95         0 \r\n 2008          65            9.17819       2.522778     -8.61          0 \r\n 2008          66            18.84381      0.8388889    -10.9          0 \r\n 2008          67            13.77603     -5.957222     -14.56         0 \r\n 2008          68            17.81179     -1.091111     -16.32         0 \r\n 2008          69            13.81335      2.26         -5.545         0 \r\n 2008          70            18.89737      0.8111111    -9.03          0 \r\n 2008          71            17.0167       12.54        -5.283889      0 \r\n 2008          72            16.3471       17.81         0.2822222     0 \r\n 2008          73            12.45108      13.59         1.176111      0 \r\n 2008          74            15.27616      13.37         0.4438889     0 \r\n 2008          75            7.765462      2.645        -1.665         2.79 \r\n 2008          76            12.71794      5.603889     -1.626111      0 \r\n 2008          77            1.359131      4.826111      1.267222      0 \r\n 2008          78            4.686289      5.917222      2.971111      5.84 \r\n 2008          79            19.33719      11.13        -6.611111E-02                0 \r\n 2008          80            15.61762      14.3         -0.4988889     0 \r\n 2008          81            10.25925      11.17         0.8           0 \r\n 2008          82            9.905537      6.755        -1.006111      0 \r\n 2008          83            8.254572      0.2277778    -1.89          0.51 \r\n 2008          84            19.77337      9.17         -5.422778      0 \r\n 2008          85            16.89236      14.84        -0.6177778     0 \r\n 2008          86            13.76682      13.86        -1.58          0 \r\n 2008          87            1.693599      7.58         -1.288889      0 \r\n 2008          88            22.06198      8.28         -1.955         3.81 \r\n 2008          89            19.7763       10.54        -1.665         0 \r\n 2008          90            9.238606      12.48         5.565         0 \r\n 2008          91            6.174371      19.58         1.487222      5.59 \r\n 2008          92            11.45738      5.753889     -1.343889      0 \r\n 2008          93            20.05149      11.6         -2.351111      0 \r\n 2008          94            2.808008      4.825         0.3022222     6.35 \r\n 2008          95            19.6025       13.8          1.23          0 \r\n 2008          96            22.44645      16.01         3.352222      0 \r\n 2008          97            11.35069      15.21         1.586111      0 \r\n 2008          98            18.34395      12.16        -1.051111      0.254 \r\n 2008          99            2.35237       6.686111      0.2738889     18.288 \r\n 2008          100           11.03911      7.21         -3.117222      0.254 \r\n 2008          101           2.88696       15.44         4.433889      26.67 \r\n 2008          102           6.113243      10.22         0.4988889     2.032 \r\n 2008          103           6.089436      1.607778     -0.715         0.254 \r\n 2008          104           21.39309      7.24         -0.7322222     0 \r\n 2008          105           25.50148      11.31        -2.983889      0 \r\n 2008          106           25.11295      17.97         2.301111      0 \r\n 2008          107           21.47647      22.62         9.67          0 \r\n 2008          108           3.80129       13.1          7.13          24.13 \r\n 2008          109           3.189631      13.47         7.19          6.858 \r\n 2008          110           5.121802      10.76         5.952778      0.254 \r\n 2008          111           17.99446      20.14         8.29          0 \r\n 2008          112           12.86923      22.03         12.29         0 \r\n 2008          113           17.67351      19.38         8.41          0 \r\n 2008          114           20.4119       24.06         8.62          6.35 \r\n 2008          115           12.31682      22.37         14.15         4.826 \r\n 2008          116           5.639823      19.14         2.145         13.716 \r\n 2008          117           24.16093      13.59         5.611111E-02                0.254 \r\n 2008          118           20.8267       12.96         3.687778      0 \r\n 2008          119           23.48387      8.83         -0.495         0 \r\n 2008          120           23.25317      13.43        -1.315         0 \r\n 2008          121           20.40738      21.27         4.028889      0 \r\n 2008          122           15.31273      24.49         13.17         0 \r\n 2008          123           9.72462       17.99         7.08          10.668 \r\n 2008          124           25.55098      14.15         4.462778      0.508 \r\n 2008          125           26.34924      19.24         1.232222      0 \r\n 2008          126           25.04739      25.31         8.47          0 \r\n 2008          127           19.8053       25.08         10.55         2.54 \r\n 2008          128           16.04355      20.37         10.39         12.954 \r\n 2008          129           25.78122      19.05         9.09          0 \r\n 2008          130           20.3647       17.86         8.69          4.318 \r\n 2008          131           13.76862      18.19         8.46          17.78 \r\n 2008          132           22.27344      14.64         5.137222      0.762 \r\n 2008          133           26.66036      20.2          3.218889      0.254 \r\n 2008          134           5.337571      17.3          8.66          0 \r\n 2008          135           26.60183      18.3          5.296111      0 \r\n 2008          136           25.22404      18.21         5.866111      0 \r\n 2008          137           24.38548      23.72         7.41          0 \r\n 2008          138           26.03845      27.63         12.5          0 \r\n 2008          139           27.46315      20.47         7.82          0 \r\n 2008          140           24.11494      23.69         10.4          0 \r\n 2008          141           26.41685      19.71         7.68          0 \r\n 2008          142           28.16794      21.26         4.787222      0 \r\n 2008          143           8.972002      14.92         11.82         2.54 \r\n 2008          144           7.615842      15.04         9.99          8.636 \r\n 2008          145           4.978667      19.24         8.74          24.384 \r\n 2008          146           7.655799      29            15.09         1.27 \r\n 2008          147           11.15735      25.49         16.98         0 \r\n 2008          148           2.721566      18.49         10.48         0.254 \r\n 2008          149           9.245929      17.92         7.8           0 \r\n 2008          150           11.92791      26.7          11.73         0 \r\n 2008          151           16.74792      26.28         16.29         21.844 \r\n 2008          152           24.77731      26.67         14.76         0 \r\n 2008          153           25.86256      28.1          14.35         0.254 \r\n 2008          154           18.28701      27.44         16.79         0 \r\n 2008          155           15.46072      24.7          16.09         23.114 \r\n 2008          156           14.44731      27.28         17.24         0 \r\n 2008          157           16.32191      27.56         17.71         52.324 \r\n 2008          158           26.90986      24.5          17.6          3.302 \r\n 2008          159           21.92608      29.46         17.52         0 \r\n 2008          160           8.778995      28.06         18.54         4.572 \r\n 2008          161           15.87619      24.26         15.07         0.508 \r\n 2008          162           23.42002      27.65         13.31         0 \r\n 2008          163           14.79918      28.05         19.02         2.032 \r\n 2008          164           9.455003      24.32         16.54         49.276 \r\n 2008          165           24.61749      25.15         15.35         0 \r\n 2008          166           27.61691      28.48         14.58         0 \r\n 2008          167           17.89375      26            17.03         5.588 \r\n 2008          168           28.11585      22.42         13.77         0 \r\n 2008          169           27.58595      24.92         10.55         0 \r\n 2008          170           26.28564      27.3          14.51         1.524 \r\n 2008          171           10.95074      27.08         15.36         13.716 \r\n 2008          172           25.90377      28.62         14.07         0 \r\n 2008          173           25.64399      28.23         15.02         0 \r\n 2008          174           27.77942      26.56         15.64         0.762 \r\n 2008          175           27.16278      26.57         12.89         0 \r\n 2008          176           12.2059       25.24         17.21         3.302 \r\n 2008          177           23.06279      30.61         18.23         12.192 \r\n 2008          178           2.683785      22.03         16.79         55.88 \r\n 2008          179           17.6164       28.95         17.62         0.254 \r\n 2008          180           26.43305      24.75         14.81         0 \r\n 2008          181           20.65586      25.92         16.26         0 \r\n 2008          182           27.87004      26.1          13.89         0 \r\n 2008          183           27.04542      28.06         14.15         0 \r\n 2008          184           13.32357      29.17         17.99         7.62 \r\n 2008          185           24.14377      23.88         15.97         0 \r\n 2008          186           26.49585      25.51         13.05         0 \r\n 2008          187           27.46524      26.57         14.48         0 \r\n 2008          188           5.594552      28.5          19.61         6.35 \r\n 2008          189           24.82752      32.56         19.34         48.514 \r\n 2008          190           14.26154      27.55         19.46         1.778 \r\n 2008          191           25.64997      28.51         16.98         0 \r\n 2008          192           26.44957      30.35         19.83         0 \r\n 2008          193           23.4073       30.28         21.2          0 \r\n 2008          194           13.76176      26.6          14.82         0.762 \r\n 2008          195           29.37009      26.96         13.7          0 \r\n 2008          196           28.41631      30.48         14.87         0 \r\n 2008          197           18.62662      31.2          18.72         0 \r\n 2008          198           16.61454      29.2          20.25         0 \r\n 2008          199           24.25184      31.04         18.71         46.736 \r\n 2008          200           5.738691      23.03         18.45         33.02 \r\n 2008          201           22.08771      29.43         18.54         5.842 \r\n 2008          202           25.49684      32.05         19.36         0 \r\n 2008          203           23.26768      30.23         19.17         5.588 \r\n 2008          204           26.76471      28.37         18.5          0 \r\n 2008          205           25.98486      26            17.09         0 \r\n 2008          206           5.856387      22.49         17.87         24.892 \r\n 2008          207           14.94152      26.77         19.55         51.562 \r\n 2008          208           18.97611      26.99         18.95         0 \r\n 2008          209           22.92506      30.38         18.44         59.182 \r\n 2008          210           22.66218      28.88         18.85         19.812 \r\n 2008          211           12.169        28.57         20.9          0 \r\n 2008          212           20.62001      27.34         19.15         0 \r\n 2008          213           25.6147       29.49         19            0 \r\n 2008          214           23.56157      30.22         19.89         0 \r\n 2008          215           25.67001      28.07         17.09         0 \r\n 2008          216           25.05308      34.12         21.61         0 \r\n 2008          217           23.49986      34.6          24.88         0 \r\n 2008          218           17.10482      28.68         18.17         0 \r\n 2008          219           18.09446      27.14         15.8          0 \r\n 2008          220           25.85051      28.16         16.01         0 \r\n 2008          221           25.7657       27.74         13.86         0 \r\n 2008          222           21.69881      28.36         16.22         0 \r\n 2008          223           24.30891      25.71         16.16         0 \r\n 2008          224           23.89353      25.51         14.12         0 \r\n 2008          225           6.971757      21.41         15.23         6.604 \r\n 2008          226           24.44213      27.99         14.27         2.032 \r\n 2008          227           19.10452      25.83         16.93         3.048 \r\n 2008          228           18.84018      25.14         14.98         0.254 \r\n 2008          229           24.17549      26.07         13.81         0 \r\n 2008          230           26.00427      27.12         14.37         0 \r\n 2008          231           20.27299      27.96         15.27         0 \r\n 2008          232           22.92183      28.45         15.46         0 \r\n 2008          233           19.59848      26.95         16.45         0 \r\n 2008          234           6.270393      23.3          18.36         6.604 \r\n 2008          235           20.77892      28.96         19.69         0 \r\n 2008          236           20.74293      26.51         15.8          1.27 \r\n 2008          237           23.48362      24.05         12.75         0 \r\n 2008          238           23.87432      24.74         11.58         0 \r\n 2008          239           20.39654      23.98         12.63         0 \r\n 2008          240           8.535318      25.25         14.67         1.524 \r\n 2008          241           12.30037      28.48         16.1          2.286 \r\n 2008          242           24.14729      27.86         11.02         0 \r\n 2008          243           23.14505      28.15         12.94         0 \r\n 2008          244           23.43739      27.99         15.43         0 \r\n 2008          245           17.77501      30.85         18.1          0 \r\n 2008          246           16.88227      30.65         16.39         1.524 \r\n 2008          247           5.753963      16.41         12.98         2.032 \r\n 2008          248           4.393075      15.59         9.41          13.97 \r\n 2008          249           13.18491      20.04         6.812778      0 \r\n 2008          250           13.26897      19.7          8.87          0 \r\n 2008          251           15.2616       21.28         11.47         0.254 \r\n 2008          252           2.876835      14.83         6.297222      26.924 \r\n 2008          253           22.13495      19.12         5.142778      0 \r\n 2008          254           16.65629      22.43         11.64         3.556 \r\n 2008          255           10.16637      24.68         16.9          0 \r\n 2008          256           2.419607      21.17         18.86         110.49 \r\n 2008          257           6.814565      22.8          17.41         6.858 \r\n 2008          258           6.137091      17.62         9.92          0 \r\n 2008          259           20.57043      18.88         7.9           0 \r\n 2008          260           20.76816      24.38         8.88          0 \r\n 2008          261           20.15558      27.48         13.05         0 \r\n 2008          262           19.54489      25.78         13.26         0 \r\n 2008          263           16.93093      24.93         13.27         0 \r\n 2008          264           16.02167      26.21         13.44         0 \r\n 2008          265           16.33747      23.45         12.44         0 \r\n 2008          266           14.35648      25.32         15.08         0 \r\n 2008          267           16.91725      26.76         16.8          0 \r\n 2008          268           15.0988       26.50945      13.85278      9.652 \r\n 2008          269           14.99738      26.17         11.63         0.254 \r\n 2008          270           17.77083      26.7          14.58         0 \r\n 2008          271           16.79901      27.61         13.42         0 \r\n 2008          272           12.05482      24.06         12.3          0 \r\n 2008          273           15.25344      21.28         9.06          7.874 \r\n 2008          274           18.38358      18.09         6.327222      0 \r\n 2008          275           17.08469      16.39         5.157222      0 \r\n 2008          276           17.70514      19.55         3.565         0 \r\n 2008          277           17.32908      20.84444      5.493333      0 \r\n 2008          278           16.58366      21.435        4.833889      0 \r\n 2008          279           14.13096      25.24         8.15          0 \r\n 2008          280           10.87158      24.74         14.99         40.386 \r\n 2008          281           2.359149      17.37         6.795         12.0142 \r\n 2008          282           16.92089      20.92         3.97          0 \r\n 2008          283           16.73119      20.59167      6.036667      0 \r\n 2008          284           16.45216      23.86944      7.856111      0 \r\n 2008          285           14.5571       25.01         6.677778      0 \r\n 2008          286           9.637718      25.56611      16.18722      0 \r\n 2008          287           3.197371      21.28111      7.377222      8.382 \r\n 2008          288           4.844319      17.5          11.16         0 \r\n 2008          289           6.47566       13.3          3.168889      10.16 \r\n 2008          290           15.50105      13.61         0.1977778     0.254 \r\n 2008          291           2.806627      10.38         3.814445      1.524 \r\n 2008          292           12.30949      13.83         3.851111      0 \r\n 2008          293           12.59844      20.24         7.59          0 \r\n 2008          294           11.54545      17.10833      3.140556      0 \r\n 2008          295           6.600888      11.66667      1.666667      6.35 \r\n 2008          296           3.96275       10.29167      5.937222      23.368 \r\n 2008          297           2.815079      8.779445      4.759444      6.6548 \r\n 2008          298           3.532049      8.335556      2.493889      5.0038 \r\n 2008          299           13.28424      17.26278      1.582222      0 \r\n 2008          300           12.1687       10.49278      0.335         0 \r\n 2008          301           8.817069      5.13         -3.26          0 \r\n 2008          302           13.18462      10.10944     -5.072222      0 \r\n 2008          303           12.95622      17.39556     -1.1           0 \r\n 2008          304           12.50882      22.37111      1.78          0 \r\n 2008          305           11.83988      23.36         6.081666      0 \r\n 2008          306           10.52502      19.90278      4.037778      0 \r\n 2008          307           9.131413      22.98667      8.896667      0 \r\n 2008          308           11.40169      24.31333      11.69722      0 \r\n 2008          309           10.57556      22.43556      13.4          0 \r\n 2008          310           6.018977      19.92833      11.12556      8.7122 \r\n 2008          311           6.458673      12.64444      3.133889      7.747 \r\n 2008          312           2.922524      3.328889     -0.47          0 \r\n 2008          313           3.103273      0.675        -2.408333      0 \r\n 2008          314           4.924317     -0.6144444    -5.653333      0 \r\n 2008          315           7.402709      1.298333     -6.260556      0 \r\n 2008          316           5.053372      4.784444      7.388889E-02                0 \r\n 2008          317           2.704036      5.613333      2.443889      0 \r\n 2008          318           3.44498       11.78278      2.277778      0 \r\n 2008          319           2.632447      8.067223      0.67          0 \r\n 2008          320           6.888329      2.637222     -3.965556      0 \r\n 2008          321           7.36794       6.36         -4.293889      0 \r\n 2008          322           7.860397      2.677778     -5.99          0 \r\n 2008          323           8.735105      1.632222     -9.002222      0 \r\n 2008          324           9.404042      10.29611     -3.210556      0 \r\n 2008          325           6.799586     -0.2766667    -10.07         0 \r\n 2008          326           9.311534     -2.938333     -13.62111      0 \r\n 2008          327           3.072144      1.020555     -5.958333      0 \r\n 2008          328           8.244781      9.808333     -8.083889      0 \r\n 2008          329           9.873487      7.320556     -2.967222      0 \r\n 2008          330           9.6232        3.903889     -7.743333      0 \r\n 2008          331           9.398896      9.107778     -6.256111      0 \r\n 2008          332           8.403815      6.861667     -5.966667      0 \r\n 2008          333           9.565335      8.098889     -5.988333      0 \r\n 2008          334           3.210593      2.994444     -5.486667      0 \r\n 2008          335           4.545958     -0.3583333    -3.546667      0 \r\n 2008          336           6.348467     -2.895        -11.18556      2.29 \r\n 2008          337           8.829579      5.085556     -12.43167      0 \r\n 2008          338           5.479324      0.8322222    -11.21389      0 \r\n 2008          339           8.02646      -6.496666     -14.24167      1.27 \r\n 2008          340           7.890397      0.8477778    -14.46         0 \r\n 2008          341           8.080769      1.737222     -13.495        0 \r\n 2008          342           4.61809      -4.196667     -13.69278      0 \r\n 2008          343           2.855413      1.478889     -7.694445      0 \r\n 2008          344           2.799933     -1.194444     -12.84778      8.13 \r\n 2008          345           6.241482     -3.415        -15.12889      0.25 \r\n 2008          346           5.652291      1.167222     -8.056111      0 \r\n 2008          347           7.106524      1.110556     -10.94444      0.25 \r\n 2008          348           5.816178      8.618333     -1.088889      0 \r\n 2008          349           2.831982      10.30056     -18.25         0 \r\n 2008          350           8.534523     -15.16778     -20.60278      0 \r\n 2008          351           2.388269     -13.41056     -19.49167      0 \r\n 2008          352           6.722726     -10.20833     -19.24167      3.05 \r\n 2008          353           6.298719     -5.075        -16.71056      0 \r\n 2008          354           5.724256     -3.683889     -9.155         19.05 \r\n 2008          355           4.364121     -5.049445     -21.46333      0 \r\n 2008          356           8.071229     -19.13667     -22.345        0 \r\n 2008          357           8.276747     -11.10333     -24.33556      0 \r\n 2008          358           4.258099     -0.79         -11.84333      3.05 \r\n 2008          359           8.197879     -7.007778     -19.36555      0.51 \r\n 2008          360           4.761768      0.105        -20.12056      0.25 \r\n 2008          361           4.944107      12.84889     -1.28          0 \r\n 2008          362           3.571797     -1.666667     -1.28          19.3 \r\n 2008          363           8.683181      2.358889     -8.498889      6.1 \r\n 2008          364           8.632931      4.477778     -4.624444      0 \r\n 2008          365           6.851342      3.911667     -11.47667      0 \r\n 2008          366           9.054301     -6.369444     -16.64222      0 \r\n 2009          1             4.654616      1.189444     -7.791667      0 \r\n 2009          2             7.587015      0.9233333    -8.588889      0 \r\n 2009          3             1.226163      0.12         -8.644444      0 \r\n 2009          4             8.522766     -4.937778     -15.19222      0 \r\n 2009          5             9.390151     -0.2161111    -14.12222      0 \r\n 2009          6             6.868957      0.4272222    -11.14722      0 \r\n 2009          7             4.939547     -4.727222     -13.50278      0 \r\n 2009          8             7.311958     -4.526111     -15.63889      0 \r\n 2009          9             4.634575     -1.727778     -8.741667      0 \r\n 2009          10            8.247417     -7.614444     -16.96778      1.78 \r\n 2009          11            6.143075     -3.189445     -11.935        0 \r\n 2009          12            4.671645      0.5261111    -16.52056      0 \r\n 2009          13            9.034971     -9.670555     -23.56167      3.81 \r\n 2009          14            9.696712     -9.974444     -26.81389      0 \r\n 2009          15            11.19638     -21.815       -30.96056      0 \r\n 2009          16            8.201142      0.79         -29.86889      0 \r\n 2009          17            4.288851     -0.8016667    -10.64389      0 \r\n 2009          18            7.249491      0.005        -7.793889      0 \r\n 2009          19            6.30897      -5.587778     -13.54556      0 \r\n 2009          20            9.525127     -4.902778     -11.99333      0.25 \r\n 2009          21            10.2962      -0.6816667    -11.18722      0 \r\n 2009          22            10.53523      6.064445     -8.883333      0 \r\n 2009          23            6.61846      -0.9583333    -17.97111      0 \r\n 2009          24            10.81719     -13.445       -21.73         0 \r\n 2009          25            9.439188     -11.59333     -16.68722      6.35 \r\n 2009          26            6.976527     -10.72056     -17.44722      0 \r\n 2009          27            6.64164      -10.24833     -19.89833      0 \r\n 2009          28            10.66075     -4.778333     -22.96611      0 \r\n 2009          29            9.117146     -2.989444     -10.83444      0 \r\n 2009          30            10.21068     -4.022778     -15.21611      0 \r\n 2009          31            11.53629      8.093889     -7.136667      0 \r\n 2009          32            9.373499      3.041111     -4.177222      0 \r\n 2009          33            6.395579     -1.25         -16.62         0 \r\n 2009          34            12.45167     -8.84         -18            0 \r\n 2009          35            12.69568     -3.82         -18.17         0 \r\n 2009          36            12.61016      10.41        -8.62          0 \r\n 2009          37            11.47621      16.28        -0.9472222     0 \r\n 2009          38            12.49769      16.02        -1.013889      0 \r\n 2009          39            11.31312      7.04         -4.027222      0 \r\n 2009          40            7.604211      14.9          1.711111      0 \r\n 2009          41            12.83731      17.05         5.315         0.25 \r\n 2009          42            3.171263      7.11         -1.973889      0 \r\n 2009          43            14.29451      7.59         -3.533889      0.25 \r\n 2009          44            2.426971     -0.9472222    -5.322778      0 \r\n 2009          45            14.26146     -2.096111     -11.92         8.38 \r\n 2009          46            14.93228     -3.438889     -13.23         0 \r\n 2009          47            15.00165      2.163889     -14.19         0 \r\n 2009          48            5.382842      5.013889     -3.047778      0 \r\n 2009          49            3.397952      2.643889     -9.77          0 \r\n 2009          50            15.60465     -3.496111     -13.32         0 \r\n 2009          51            8.89192       2.098889     -9.71          0 \r\n 2009          52            12.8868      -2.842222     -10.63         0 \r\n 2009          53            15.97397     -2.116111     -13.04         0 \r\n 2009          54            15.51649      0.9222222    -12.29         0 \r\n 2009          55            14.77713      10.94        -1.982778      0 \r\n 2009          56            15.27612      14.98         2.722222E-02                0 \r\n 2009          57            1.899662      6.337222     -4.637222      0 \r\n 2009          58            11.0366      -1.662778     -7.43          1.27 \r\n 2009          59            15.30118     -1.917222     -8.75          0.51 \r\n 2009          60            17.25988     -3.933889     -13.59         0 \r\n 2009          61            17.90869     -0.3172222    -8.6           0 \r\n 2009          62            10.81141      2.795        -7.49          0 \r\n 2009          63            16.90759      12.38        -4.225         0 \r\n 2009          64            15.28704      23.1          4.537222      0 \r\n 2009          65            15.90359      15.31         2.226111      0 \r\n 2009          66            1.337876      8.42          3.265         1.02 \r\n 2009          67            3.102394      4.462778      1.39          33.02 \r\n 2009          68            4.526879      6.31          0.1027778     6.35 \r\n 2009          69            3.562467      6.661111     -9.3           20.32 \r\n 2009          70            18.36797     -4.37         -12.06         0 \r\n 2009          71            18.4373      -1.316111     -12.74         0 \r\n 2009          72            10.50008      8.36         -4.748889      0 \r\n 2009          73            19.35217      11.28        -3.93          0 \r\n 2009          74            15.63849      14.62         0.4327778     0 \r\n 2009          75            18.7498       21.22         3.342222      0 \r\n 2009          76            18.57901      25.07         7.44          0 \r\n 2009          77            7.400492      12.02         1.935         0 \r\n 2009          78            19.6489       12.63        -2.267222      0.76 \r\n 2009          79            10.16632      13.28         0.2077778     0 \r\n 2009          80            16.56215      19.3          5.523889      0 \r\n 2009          81            15.20687      19.72         8.15          0 \r\n 2009          82            8.460006      20.59         10.95         3.56 \r\n 2009          83            7.762198      12.2          1.75          38.1 \r\n 2009          84            13.21328      10.16        -1.888889E-02                9.4 \r\n 2009          85            12.98663      12.81        -0.8177778     0 \r\n 2009          86            17.48778      2.708889     -3.523889      0 \r\n 2009          87            3.171305     -0.4022222    -2.465         0 \r\n 2009          88            22.85087      8.74         -4.285         7.37 \r\n 2009          89            20.20052      16.12         0.1411111     0 \r\n 2009          90            6.667329      11.54         0.9972222     0 \r\n 2009          91            21.63069      12.6         -2.201111      0 \r\n 2009          92            9.25074       8.22         -0.4238889     0 \r\n 2009          93            22.54908      12.8         -3.221111      0 \r\n 2009          94            16.08459      15.42         2.04          0 \r\n 2009          95            2.614331      7.25         -0.6488889     0 \r\n 2009          96            14.68584      3.671111     -3.306111      0 \r\n 2009          97            23.43973      9.98         -4.056111      0 \r\n 2009          98            23.83813      14.05        -0.6011111     0 \r\n 2009          99            5.925088      10.07        -6.388889E-02                1.27 \r\n 2009          100           21.37807      12.85         3.926111      0 \r\n 2009          101           23.7514       14.85        -0.9861111     0 \r\n 2009          102           11.0043       10.51         2.323889      0.508 \r\n 2009          103           3.573889      5.353889      1.597778      12.192 \r\n 2009          104           21.553        15            8.222222E-02                0 \r\n 2009          105           23.76797      18.14         1.598889      0 \r\n 2009          106           17.02608      17.93         6.257778      0.508 \r\n 2009          107           23.78139      21.14         5.497222      0 \r\n 2009          108           8.498667      18.38         10.26         1.27 \r\n 2009          109           10.36636      14.36         4.982778      0 \r\n 2009          110           19.55907      11.68         3.587222      0 \r\n 2009          111           24.86924      15.62         1.57          0 \r\n 2009          112           25.17638      23.17         6.333889      0 \r\n 2009          113           14.01297      21.43         11.08         0 \r\n 2009          114           24.56987      27.04         13.8          3.81 \r\n 2009          115           3.172142      22.38         8.94          6.096 \r\n 2009          116           10.02758      23.86         10.5          40.132 \r\n 2009          117           3.81267       14.73         3.547222      9.652 \r\n 2009          118           21.04883      15.52         2.973889      0 \r\n 2009          119           5.306735      15            10.24         10.16 \r\n 2009          120           7.307063      19.37         12.22         0.508 \r\n 2009          121           14.60007      14.73         8.01          0 \r\n 2009          122           23.71847      18.23         7.38          0 \r\n 2009          123           24.10432      21.17         9.4           0 \r\n 2009          124           10.28695      19.98         11.26         0 \r\n 2009          125           22.15612      22.05         10.36         0.254 \r\n 2009          126           12.54125      20.64         12.95         0.508 \r\n 2009          127           12.00314      21.47         11.33         4.572 \r\n 2009          128           19.74078      24.57         10.56         0 \r\n 2009          129           27.48884      17.15         7.02          0 \r\n 2009          130           17.60677      16.56         6.737778      0 \r\n 2009          131           27.10098      19.69         4.636111      0 \r\n 2009          132           15.42733      21.59         9.03          6.604 \r\n 2009          133           11.6375       24.23         11.83         4.572 \r\n 2009          134           26.47271      19.44         5.82          7.62 \r\n 2009          135           26.91904      15.53         11.64         37.338 \r\n 2009          136           27.36537      15.29         5.581111      0 \r\n 2009          137           15.2062       15.24         4.825         0 \r\n 2009          138           25.78859      22.39         9.02          0 \r\n 2009          139           27.53256      27.05         11.76         0 \r\n 2009          140           27.15759      26.5          14.01         0 \r\n 2009          141           23.05129      26.84         13.02         0 \r\n 2009          142           26.27121      27.87         11.59         0 \r\n 2009          143           16.72659      27.89         16.72         6.096 \r\n 2009          144           23.62822      25.54         15.45         0 \r\n 2009          145           6.992008      18.8          13.87         1.016 \r\n 2009          146           2.955327      19.03         14.33         32.512 \r\n 2009          147           6.084666      17.2          13.04         0 \r\n 2009          148           11.37784      18.67         10.95         0 \r\n 2009          149           19.49234      24.76         11.64         0 \r\n 2009          150           24.3864       26.62         13.21         2.794 \r\n 2009          151           21.49522      25.64         8.75          0.254 \r\n 2009          152           14.92734      26.88         16.86         3.556 \r\n 2009          153           3.350254      17.65         11.99         39.624 \r\n 2009          154           24.93764      21.39         11.86         0 \r\n 2009          155           24.52945      22.67         11.53         0 \r\n 2009          156           24.70932      25.28         10.99         0 \r\n 2009          157           15.22093      26.07         15.74         10.668 \r\n 2009          158           15.78364      25.83         17.92         15.748 \r\n 2009          159           11.67926      20.13         12.76         12.192 \r\n 2009          160           14.04489      18.56         10.72         0.508 \r\n 2009          161           10.82275      21.85         14.36         0 \r\n 2009          162           18.73838      24.04         15.31         0 \r\n 2009          163           13.05617      24.4          15.31         7.112 \r\n 2009          164           8.752175      21.15         13.96         0 \r\n 2009          165           13.4698       22.37         11.96         0 \r\n 2009          166           12.07586      23.65         16.62         0.254 \r\n 2009          167           11.32797      24.77         17.38         1.524 \r\n 2009          168           18.29241      31.25         15.87         3.302 \r\n 2009          169           17.47142      32.17         19.23         0.254 \r\n 2009          170           11.07773      29.6          19.03         23.368 \r\n 2009          171           17.25239      29.07         18.32         0 \r\n 2009          172           16.29007      31.41         21.17         5.842 \r\n 2009          173           21.26305      33.45         22.94         0 \r\n 2009          174           17.75585      34.67         19.78         24.13 \r\n 2009          175           18.34989      30.04         19.88         0 \r\n 2009          176           18.7321       32.24         21.77         0 \r\n 2009          177           16.21313      30.01         21.27         0 \r\n 2009          178           18.24567      32.67         18.88         0 \r\n 2009          179           22.64364      27.38         15.05         0 \r\n 2009          180           22.68519      28.3          14.72         0.508 \r\n 2009          181           21.19254      24.66         15.02         0 \r\n 2009          182           19.42719      25.84         15.2          0 \r\n 2009          183           19.75978      26.88         15.02         0 \r\n 2009          184           9.462744      26.08         15.78         1.27 \r\n 2009          185           4.545456      20.09         17.08         32.512 \r\n 2009          186           20.37311      26.77         15.01         0 \r\n 2009          187           17.4072       28.44         16.01         0 \r\n 2009          188           16.73508      29.01         16.61         0 \r\n 2009          189           15.38787      25.97         15.83         2.54 \r\n 2009          190           7.885417      26.68         15.65         0.762 \r\n 2009          191           11.63102      28.23         19.93         13.716 \r\n 2009          192           16.83035      27.59         18.25         0 \r\n 2009          193           11.08885      24.02         17.09         0 \r\n 2009          194           19.44535      26.92         15.6          0 \r\n 2009          195           9.425757      27.5          18.92         16.256 \r\n 2009          196           19.24686      26.86         17.89         0.254 \r\n 2009          197           15.22194      25.8          12.63         0 \r\n 2009          198           18.25044      21.66         10.39         0 \r\n 2009          199           14.82178      22.33         12.31         0 \r\n 2009          200           20.6657       24.3          12.92         0 \r\n 2009          201           14.35346      25            12.92         0.254 \r\n 2009          202           8.800542      21.56         15.42         2.286 \r\n 2009          203           20.83063      26.71         12.05         0 \r\n 2009          204           18.92875      27.59         16.93         0 \r\n 2009          205           20.60503      30.64         16.94         0 \r\n 2009          206           19.06963      27.18         15.86         0 \r\n 2009          207           20.81929      26.92         15.1          0 \r\n 2009          208           17.32477      28.82         15.51         0 \r\n 2009          209           13.18818      25.58         12.92         0.254 \r\n 2009          210           19.05293      25.49         11.16         0 \r\n 2009          211           17.59029      23.25         13.83         0 \r\n 2009          212           20.59072      26.41         11.57         0 \r\n 2009          213           18.81214      24.08         13.14         5.588 \r\n 2009          214           21.604        28.34         11.53         0 \r\n 2009          215           20.68159      30.83         17.48         5.08 \r\n 2009          216           15.23867      29.04         17.08         0 \r\n 2009          217           16.16187      24.81         13.57         0 \r\n 2009          218           20.88444      26.55         12.98         0 \r\n 2009          219           13.62946      29.33         19.12         11.684 \r\n 2009          220           18.45529      32.36         24.23         0.254 \r\n 2009          221           16.94729      30.84         19.31         0.254 \r\n 2009          222           17.01984      27.56         18.86         2.286 \r\n 2009          223           21.93215      28.21         17            1.778 \r\n 2009          224           19.56539      29.66         17.55         0.762 \r\n 2009          225           21.8909       30.53         20.18         0.762 \r\n 2009          226           20.58256      29.73         20.71         0.254 \r\n 2009          227           17.70527      29.09         18.28         0.508 \r\n 2009          228           11.77859      27.25         19.29         0.254 \r\n 2009          229           9.60613       25.41         17.2          0.762 \r\n 2009          230           17.33452      25.93         16.63         0 \r\n 2009          231           13.12901      26.1          16.57         0.254 \r\n 2009          232           18.80578      22.66         15.56         0.254 \r\n 2009          233           12.80919      20            13.92         0 \r\n 2009          234           21.98914      23.14         11.92         0 \r\n 2009          235           22.037        24.59         11.65         0 \r\n 2009          236           21.73496      25.85         13.91         0 \r\n 2009          237           16.42053      28.87         17.68         0 \r\n 2009          238           3.672297      23.5          19.08         0 \r\n 2009          239           4.85754       20.3          16.52         0.254 \r\n 2009          240           12.12619      22.28         15.95         0 \r\n 2009          241           21.21543      20.34         9.84          0.254 \r\n 2009          242           11.85829      16.86         8.06          0 \r\n 2009          243           18.11547      20.48         8.94          0 \r\n 2009          244           19.79965      20.3          9.09          0 \r\n 2009          245           20.10307      22.41         10.12         0 \r\n 2009          246           18.57675      22.73         10.82         0 \r\n 2009          247           18.3804       24.92         11.39         0 \r\n 2009          248           18.94327      24.5          14.28         0 \r\n 2009          249           16.25697      23.56         11.54         0 \r\n 2009          250           16.12761      24.04         13.92         0 \r\n 2009          251           17.59179      25.9          14.81         0 \r\n 2009          252           16.85834      25.78         14.24         0 \r\n 2009          253           16.42718      25.23         13.44         0 \r\n 2009          254           12.62857      25.71         14.19         0 \r\n 2009          255           17.63728      26.17         16.1          0 \r\n 2009          256           16.43714      25.29         13.56         0 \r\n 2009          257           14.2643       23.58         11.95         0 \r\n 2009          258           14.48961      25.1          12.8          0 \r\n 2009          259           15.66862      25.72         13.13         0 \r\n 2009          260           17.57853      23.43         11.12         0 \r\n 2009          261           16.73776      23.78         8.66          2.54 \r\n 2009          262           14.72153      24.99         10.94         0.762 \r\n 2009          263           13.07111      23.12         14.83         0.254 \r\n 2009          264           7.816339      22.97         14.22         0.254 \r\n 2009          265           13.15772      22.46         12.92         0.508 \r\n 2009          266           9.272455      21.86         12.38         0 \r\n 2009          267           8.642931      22.09         15.13         7.874 \r\n 2009          268           15.77381      22.7          11.51         5.334 \r\n 2009          269           7.345221      18.64         10.53         5.08 \r\n 2009          270           15.43524      27.87         10.4          0 \r\n 2009          271           15.76452      16.88         7.57          0 \r\n 2009          272           17.45431      17.64         4.967222      0 \r\n 2009          273           16.67638      19.48         4.18          0 \r\n 2009          274           1.409422      17.28         7.39          14.732 \r\n 2009          275           2.566507      10.19         7.48          1.524 \r\n 2009          276           6.043328      11.66         6.067778      0 \r\n 2009          277           15.54402      14.42         1.982778      0.254 \r\n 2009          278           15.37227      17.32         3.792222      3.556 \r\n 2009          279           9.773364      15.57         4.386111      5.588 \r\n 2009          280           15.39323      18.16         0.7227778     0 \r\n 2009          281           1.42528       11.26         6.927778      3.81 \r\n 2009          282           9.829011      10.67        -0.1972222     0.762 \r\n 2009          283           4.851808      2.4          -2.991111      0 \r\n 2009          284           5.695847      4.247222     -1.857222      0 \r\n 2009          285           3.524978      6.687778      1.477222      0 \r\n 2009          286           13.65047      8.86         -1.41          3.81 \r\n 2009          287           3.375024      7.07          2.593889      3.302 \r\n 2009          288           2.594624      7.34          4.73          1.778 \r\n 2009          289           5.338993      7.65          3.508889      0.762 \r\n 2009          290           7.63626       8.48          0.3011111     0.254 \r\n 2009          291           14.12263      14.77        -0.9577778     0 \r\n 2009          292           13.11554      19.79         6.611111      0 \r\n 2009          293           3.503849      17.77         12.69         0.508 \r\n 2009          294           5.855759      19.43         9.05          8.89 \r\n 2009          295           4.513134      9.3           7.42          43.434 \r\n 2009          296           3.17051       7.46          1.691111      1.27 \r\n 2009          297           11.16685      13.74        -1.7           0 \r\n 2009          298           8.661926      16.72         4.823889      0 \r\n 2009          299           10.0344       10.91         1.297778      2.032 \r\n 2009          300           12.6512       13.35         0.115         0 \r\n 2009          301           6.809209      15.31         7.75          0 \r\n 2009          302           1.096124      17.93         9.12          36.322 \r\n 2009          303           6.223073      18.03         1.955         0 \r\n 2009          304           12.6479       10.37         0.4238889     0 \r\n 2009          305           9.595837      20.59         3.917222      0 \r\n 2009          306           9.944531      12.7          1.92          0 \r\n 2009          307           7.842866      11.28        -1.83          0 \r\n 2009          308           11.72114      11.42         2.052222      0 \r\n 2009          309           11.01911      15.34        -2.5           0 \r\n 2009          310           10.16473      21.39         8.65          0 \r\n 2009          311           10.99605      22.4          9.11          0 \r\n 2009          312           10.6118       22.56         7.26          0 \r\n 2009          313           7.157443      17.4          8.37          0 \r\n 2009          314           10.61874      15.62         2.842222      0 \r\n 2009          315           10.6628       15.43         1.072222      0 \r\n 2009          316           7.947927      16.49         3.237778      0 \r\n 2009          317           4.539933      15.72         8.23          0 \r\n 2009          318           2.781105      12.19         2.295         0.508 \r\n 2009          319           3.496192      6.06          0.5277778     0 \r\n 2009          320           2.301012      4.93          1.986111      22.098 \r\n 2009          321           1.105831      5.121111      2.531111      7.366 \r\n 2009          322           1.566155      6.508889      3.851111      0 \r\n 2009          323           4.005552      8.45          2.927222      0 \r\n 2009          324           5.163433      9.49          1.543889      0 \r\n 2009          325           7.319782      12.88        -1.923889      0 \r\n 2009          326           1.719875      12.4          6.821111      0 \r\n 2009          327           7.76245       15.21         5.593889      0 \r\n 2009          328           1.544189      10.33         5.628889      0 \r\n 2009          329           1.241979      5.717222      1.053889      0 \r\n 2009          330           5.885507      3.152222     -3.232222      0 \r\n 2009          331           9.358186      13.59        -3.43          0 \r\n 2009          332           8.785438      17.47         1.077222      0 \r\n 2009          333           3.157623      5.11          0.9238889     0 \r\n 2009          334           8.91238       9.82         -4.113889      0 \r\n 2009          335           8.941083      15.23         1.47          0 \r\n 2009          336           4.806119      2.361111     -3.431111      0 \r\n 2009          337           3.848234     -3.378889     -6.927778      0 \r\n 2009          338           6.37855      -3.477222     -10.77         0 \r\n 2009          339           8.819663      4.407222     -9.49          0 \r\n 2009          340           4.50621      -0.5161111    -5.248889      0 \r\n 2009          341           6.218596     -4.188889     -7.78          5.59 \r\n 2009          342           2.520107     -1.965        -7.08          6.1 \r\n 2009          343           6.628879     -4.252778     -18.54         14.73 \r\n 2009          344           9.150157     -10.43        -23.04         0 \r\n 2009          345           9.133295     -1.692778     -15.62         0 \r\n 2009          346           7.175058      1.645        -9.74          0 \r\n 2009          347           4.311528      1.383889     -0.215         0 \r\n 2009          348           3.572718      0.9788889    -14.66         0 \r\n 2009          349           9.02652      -11.68        -17.92         0 \r\n 2009          350           7.615089     -1.005        -16.52         0 \r\n 2009          351           8.376327      4.787778     -2.973889      0 \r\n 2009          352           5.925297     -1.748889     -6.93          0 \r\n 2009          353           2.692948     -4.168889     -8.27          0 \r\n 2009          354           2.838509     -0.2988889    -6.752222      0 \r\n 2009          355           3.492469     -0.875        -5.363889      0.51 \r\n 2009          356           2.891521     -0.02         -2.597222      0 \r\n 2009          357           1.281015      0.9027778    -0.705         0 \r\n 2009          358           1.151981      1.832778     -3.876111      7.62 \r\n 2009          359           2.283878     -3.781111     -11.48         23.37 \r\n 2009          360           4.157892     -6.035        -10.9          4.06 \r\n 2009          361           6.737411     -3.132222     -11.25         2.03 \r\n 2009          362           5.415812     -2.455        -15.6          0 \r\n 2009          363           7.782993     -7.16         -18.27         0 \r\n 2009          364           4.706121      8.611111E-02               -7.37          0 \r\n 2009          365           9.170449     -13.45        -22.34         0.51 \r\n 2010          1             8.006502     -18.76        -27.84         0 \r\n 2010          2             6.613356     -13.25        -22.89         0 \r\n 2010          3             9.558097     -15.64        -24.41         0 \r\n 2010          4             9.593285     -12.6         -23.24         0 \r\n 2010          5             3.842502     -9.17         -19.26         0 \r\n 2010          6             8.147671     -11.58        -18.06         0 \r\n 2010          7             9.24208      -14.82        -19.73         5.08 \r\n 2010          8             10.06265     -13.78        -23.07         0.51 \r\n 2010          9             9.131831     -5.566111     -21.64         0 \r\n 2010          10            8.52603      -4.656111     -14.35         0 \r\n 2010          11            8.001942     -7.57         -11.4          0 \r\n 2010          12            10.05453      5.442222     -8.14          0 \r\n 2010          13            6.86858       2.401111     -3.192222      0 \r\n 2010          14            4.046053     -2.472778     -4.676111      0 \r\n 2010          15            7.5453       -7.388889E-02               -5.883889      0 \r\n 2010          16            5.066447      0.74         -1.597222      0 \r\n 2010          17            4.237262     -1.176111     -3.25          0 \r\n 2010          18            3.723383     -1.985        -4.056111      0 \r\n 2010          19            1.716904     -0.14         -3.343889      0 \r\n 2010          20            2.488685      0.2438889    -0.92          11.43 \r\n 2010          21            4.082161      1.098889     -0.7422222     0 \r\n 2010          22            3.515732      0.6488889    -1.495         0 \r\n 2010          23            3.515857      1.111111     -1.495         0 \r\n 2010          24            4.954023     -3.277778     -11.03         8.89 \r\n 2010          25            10.35042     -7.18         -11.92         0.51 \r\n 2010          26            5.060883     -3.382222     -10.86         0.51 \r\n 2010          27            10.65933     -10.54        -16.64         0 \r\n 2010          28            9.161328     -9.24         -15.94         0 \r\n 2010          29            10.45598     -3.376111     -16.84         0 \r\n 2010          30            9.986497     -4.037222     -11.4          0 \r\n 2010          31            4.981679      0.1311111    -9.03          0 \r\n 2010          32            10.78405     -1.352222     -13.35         0 \r\n 2010          33            11.68219     -1.136111     -16.5          1.27 \r\n 2010          34            4.659428      0.7711111    -1.945         0 \r\n 2010          35            4.938668     -0.3177778    -2.152778      0 \r\n 2010          36            10.52858     -1.496111     -7.77          0.76 \r\n 2010          37            7.947173     -2.285        -6.957222      3.56 \r\n 2010          38            6.530136     -1.588889     -20.15         0 \r\n 2010          39            9.050954     -4.827778     -27.82         3.81 \r\n 2010          40            12.82982     -6.031111     -16.52         3.81 \r\n 2010          41            9.644455     -2.92         -21.28         0 \r\n 2010          42            9.131413      1.351111     -7.1           0 \r\n 2010          43            10.20691      0.3088889    -4.293889      0 \r\n 2010          44            7.287231     -4.151111     -10.93         0 \r\n 2010          45            10.14306     -5.757778     -10.74         2.29 \r\n 2010          46            14.97654     -3.422222     -9.94          1.52 \r\n 2010          47            15.01843     -1.712222     -13.25         0 \r\n 2010          48            14.84261      3.172222     -13.91         0 \r\n 2010          49            4.434873     -2.765        -8.84          0 \r\n 2010          50            8.984094     -1.261111     -3.961111      0 \r\n 2010          51            5.055737     -3.391111     -8.03          6.1 \r\n 2010          52            13.97197     -5.836111     -12.37         0 \r\n 2010          53            14.34321     -6.347222     -16.32         11.43 \r\n 2010          54            16.82156     -10.24        -21.6          0 \r\n 2010          55            16.94817     -3.203889     -22.61         0 \r\n 2010          56            12.61878      1.232222     -19.54         0 \r\n 2010          57            17.46121     -0.6677778    -12.34         0 \r\n 2010          58            16.78558      2.267222     -12.87         0 \r\n 2010          59            11.79758      1.746111     -10.3          0 \r\n 2010          60            17.02583      1.841111     -13.51         0 \r\n 2010          61            17.72054      2.408889     -12.01         0 \r\n 2010          62            17.95986      5.195        -10.46         0 \r\n 2010          63            18.30877      5.045        -5.707222      0 \r\n 2010          64            7.14464       5.793889     -2.228889      0 \r\n 2010          65            7.839644      3.276111      0.4911111     0 \r\n 2010          66            14.37162      7.12          0.425         5.33 \r\n 2010          67            3.516945      7.76          1.513889      0 \r\n 2010          68            4.555372      7.69          3.55          7.11 \r\n 2010          69            5.995756      6.547222      2.652778      6.6 \r\n 2010          70            5.848395      7.01          1.665         14.73 \r\n 2010          71            1.582221      5.102222      2.137222      0.51 \r\n 2010          72            6.831802      12.83         4.865         6.35 \r\n 2010          73            11.94586      11.27         2.163889      5.59 \r\n 2010          74            4.730933      6.481111      1.533889      0 \r\n 2010          75            7.328025      11.2          2.89          0 \r\n 2010          76            17.39753      15.47         0.08          3.05 \r\n 2010          77            11.09994      7.43         -2.663889      0 \r\n 2010          78            6.496497      7.272222     -3.21          0 \r\n 2010          79            19.67158      8            -1.983889      11.18 \r\n 2010          80            17.80246      13.41        -3.01          0 \r\n 2010          81            15.60791      16.21         0.5011111     0 \r\n 2010          82            1.557034      9.43          5.311111      0 \r\n 2010          83            19.32405      10.73        -0.2022222     4.57 \r\n 2010          84            17.15716      11.14        -1.287222      22.86 \r\n 2010          85            5.477651      8.88          3.623889      0 \r\n 2010          86            12.56321      12.57         1.141111      0 \r\n 2010          87            20.13868      16.43        -1.522222      1.27 \r\n 2010          88            19.08193      23.11         8.07          0 \r\n 2010          89            18.54604      25.38         12.47         0 \r\n 2010          90            16.69893      27.44         14.43         0 \r\n 2010          91            3.761583      20.03         7.56          0 \r\n 2010          92            21.04021      15.56         2.352778      0 \r\n 2010          93            12.72271      19.17         5.898889      0 \r\n 2010          94            7.370492      19.54         3.88          0 \r\n 2010          95            15.11014      27.94         10.49         0 \r\n 2010          96            3.732212      10.5          2.662778      0 \r\n 2010          97            22.04211      12.14         0.5272222     0 \r\n 2010          98            22.05985      21.02         1.111111E-03                0 \r\n 2010          99            20.77569      21.65         6.85          0 \r\n 2010          100           19.41765      20.98         7.15          0 \r\n 2010          101           19.82852      26.06         9.64          0 \r\n 2010          102           19.58509      26.2          11.5          0 \r\n 2010          103           21.66094      26.26         14.15         0 \r\n 2010          104           20.32897      26.16         12.88         2.032 \r\n 2010          105           18.64089      16.17         5.981111      0 \r\n 2010          106           23.57789      16.62         0.3711111     0 \r\n 2010          107           20.17479      18.62         3.087778      0 \r\n 2010          108           20.45666      19.95         4.473889      0 \r\n 2010          109           21.14414      21.24         6.228889      0 \r\n 2010          110           8.676151      17.59         7.77          0.254 \r\n 2010          111           17.0008       19.93         4.283889      0.254 \r\n 2010          112           4.256049      17.45         11.45         36.322 \r\n 2010          113           8.450718      18.53         11.5          61.976 \r\n 2010          114           3.061893      12.28         8.7           7.62 \r\n 2010          115           4.263915      10.46         6.185         5.842 \r\n 2010          116           23.33898      16.58         6.097222      0 \r\n 2010          117           22.91514      19.19         5.487778      0 \r\n 2010          118           21.63806      25.9          13.12         0 \r\n 2010          119           9.7237        19.77         11.77         10.16 \r\n 2010          120           20.71478      19.86         9.78          0 \r\n 2010          121           17.31971      21.2          8.9           1.016 \r\n 2010          122           24.46355      19.12         7.73          0.254 \r\n 2010          123           24.75752      26.17         9.93          0 \r\n 2010          124           24.3113       20.65         7.62          0.254 \r\n 2010          125           21.20066      18.2          5.203889      0.508 \r\n 2010          126           9.802944      13.91         5.792778      11.938 \r\n 2010          127           15.99807      10.52         2.163889      0 \r\n 2010          128           22.72075      15.45         1.542778      0.254 \r\n 2010          129           3.7033        11.89         7.71          0.254 \r\n 2010          130           8.65883       13.32         8.32          21.844 \r\n 2010          131           4.372238      16.35         6.696111      6.096 \r\n 2010          132           10.81853      15.58         7.57          23.114 \r\n 2010          133           20.69699      18.18         5.556111      12.954 \r\n 2010          134           13.54294      18.07         7.86          0 \r\n 2010          135           6.210186      14.66         11.38         1.016 \r\n 2010          136           18.97938      19.74         10.53         2.54 \r\n 2010          137           22.17344      21.9          8.18          2.794 \r\n 2010          138           18.15212      21.32         8.78          0 \r\n 2010          139           3.709032      14.6          12.76         0 \r\n 2010          140           9.714663      20.46         13.22         12.192 \r\n 2010          141           21.54965      28.15         12.27         2.032 \r\n 2010          142           11.67826      27.12         21.67         0 \r\n 2010          143           21.46827      30.8          20.25         0 \r\n 2010          144           12.96241      27.9          18.13         0 \r\n 2010          145           18.59612      27.05         16.54         9.144 \r\n 2010          146           22.17373      27.89         13.98         0 \r\n 2010          147           21.41777      27.17         12.81         0 \r\n 2010          148           21.75693      28.78         14.92         0 \r\n 2010          149           18.79256      30.99         17.68         0 \r\n 2010          150           19.68706      26.63         15.54         0.508 \r\n 2010          151           15.77401      29.53         13.65         0.254 \r\n 2010          152           20.3375       25.85         16.1          22.86 \r\n 2010          153           24.6269       25.42         13.06         2.54 \r\n 2010          154           18.5414       30.25         19.89         0 \r\n 2010          155           11.56219      27.31         14.33         2.54 \r\n 2010          156           22.83778      26.78         12.64         31.496 \r\n 2010          157           12.80208      25.89         17.26         0 \r\n 2010          158           9.552951      24.40389      16.70833      0.762 \r\n 2010          159           22.32402      28.27         16.35         10.922 \r\n 2010          160           7.892949      24.42         17.54         0 \r\n 2010          161           12.86258      29.18         19.4          11.43 \r\n 2010          162           8.82711       26.62         19.2          7.874 \r\n 2010          163           9.663827      26.26         18.75         30.734 \r\n 2010          164           10.05043      26.96         20            15.494 \r\n 2010          165           9.599477      24.93         16.95         12.954 \r\n 2010          166           15.87623      29.04         15.45         9.906 \r\n 2010          167           16.86286      31.45         19.23         0 \r\n 2010          168           12.5902       31.86         17.69         1.016 \r\n 2010          169           14.56739      29.51         17.91         24.384 \r\n 2010          170           6.552855      25.68         19.47         0 \r\n 2010          171           11.29002      29.03         18.51         3.81 \r\n 2010          172           13.55553      32.86         20.5          9.652 \r\n 2010          173           19.91333      31.69         17.81         13.462 \r\n 2010          174           25.39224      28.06         16.5          5.334 \r\n 2010          175           24.55418      30.05         18.29         0 \r\n 2010          176           26.8058       31.99         19.95         0 \r\n 2010          177           16.84545      27.95         18.69         8.89 \r\n 2010          178           27.58967      28.2          15.76         16.51 \r\n 2010          179           24.25933      25.32         13.67         0.254 \r\n 2010          180           26.18966      26.7          14.95         0 \r\n 2010          181           27.61603      27.44         15.22         0 \r\n 2010          182           27.63394      29.11         16.67         0 \r\n 2010          183           22.13738      30.87         17.4          0 \r\n 2010          184           6.431728      26.04         20.77         0.254 \r\n 2010          185           7.894748      26.1          20.8          17.018 \r\n 2010          186           15.62406      28.49         21.53         18.034 \r\n 2010          187           13.74917      29.19         20.67         0.762 \r\n 2010          188           17.84413      26.49         19.41         10.922 \r\n 2010          189           26.95053      29            17.49         0 \r\n 2010          190           26.25276      28.98         17.45         0 \r\n 2010          191           14.53233      27.55         19.31         0 \r\n 2010          192           16.39668      27.47         17.91         3.048 \r\n 2010          193           25.91147      30.56         17.96         1.778 \r\n 2010          194           24.08796      34.3          21.98         0.254 \r\n 2010          195           25.31132      29.19         21.01         5.334 \r\n 2010          196           25.59386      30.9          18.16         4.064 \r\n 2010          197           26.9963       33.74         21.71         0 \r\n 2010          198           24.57518      30.72         20.04         0 \r\n 2010          199           14.32597      26.24         17.43         17.526 \r\n 2010          200           18.39881      27.97         20.42         29.464 \r\n 2010          201           11.28898      27.61         21.3          33.782 \r\n 2010          202           25.34747      32.26         23.83         2.286 \r\n 2010          203           16.73939      32.32         23.2          0 \r\n 2010          204           10.67665      27.94         19.97         16.51 \r\n 2010          205           25.78202      28.23         17.92         9.652 \r\n 2010          206           21.69383      29.04         19.85         0 \r\n 2010          207           24.78426      31.82         21.06         0 \r\n 2010          208           22.11813      31.01         19.3          0 \r\n 2010          209           25.89779      27.75         16.58         0 \r\n 2010          210           12.12569      28.1          20.79         0 \r\n 2010          211           24.10557      29.45         20.71         10.414 \r\n 2010          212           24.88032      30.4          18.89         0 \r\n 2010          213           21.41045      27.34889      20.62111      0 \r\n 2010          214           23.51964      31.53         20.63         9.906 \r\n 2010          215           6.877408      27.42         20.57         5.08 \r\n 2010          216           25.65227      28.73         19.22         17.526 \r\n 2010          217           25.69315      29.61         17.13         0 \r\n 2010          218           24.86631      30.34         19.27         0 \r\n 2010          219           23.56475      33.26         22.47         0 \r\n 2010          220           19.84915      32.38         21.2          1.524 \r\n 2010          221           24.21423      33.64         21.05         21.336 \r\n 2010          222           25.04174      32.89         20.34         4.826 \r\n 2010          223           25.17178      33.31         23.65         23.876 \r\n 2010          224           10.00436      31.72         19.93         0 \r\n 2010          225           20.34206      28.61         19.91         19.558 \r\n 2010          226           25.30533      26.51         17.48         0 \r\n 2010          227           25.05639      27.96         15.25         0 \r\n 2010          228           4.888711      21.91         17.49         0 \r\n 2010          229           22.86142      27.27         15.24         5.08 \r\n 2010          230           22.19897      29.66         18.06         0.254 \r\n 2010          231           10.59142      30.26         20.51         0 \r\n 2010          232           20.3275       31.41         20.32         7.874 \r\n 2010          233           23.13434      32.04         20.2          0 \r\n 2010          234           24.62121      29.23         19.59         0 \r\n 2010          235           17.39992      25.34         14.35         0 \r\n 2010          236           24.55087      25.51         11.83         0 \r\n 2010          237           23.64224      26.91         12.49         0 \r\n 2010          238           24.03097      28.14         15.81         0 \r\n 2010          239           24.15574      29.13         15.57         0 \r\n 2010          240           21.22639      31.05         18.42         0 \r\n 2010          241           21.34108      29.13         20.52         0 \r\n 2010          242           13.03492      29.36         20.38         0 \r\n 2010          243           16.33513      26.79         19.56         14.478 \r\n 2010          244           11.54545      27.12         13.98         3.81 \r\n 2010          245           23.59307      21.2          11.35         5.08 \r\n 2010          246           23.46981      22.6          8.07          0 \r\n 2010          247           21.03305      26.41         13.43         0 \r\n 2010          248           14.48944      28.62         13.73         0 \r\n 2010          249           23.17162      23.07         10.99         7.62 \r\n 2010          250           21.4376       23.52         9.1           0 \r\n 2010          251           10.16444      21.43         16.16         0 \r\n 2010          252           9.089698      20.78         15.84         0 \r\n 2010          253           22.29377      24.09         13.35         7.874 \r\n 2010          254           21.78015      27.96         12.83         0 \r\n 2010          255           19.60606      29.20389      11.63278      0.254 \r\n 2010          256           16.5809       28.13         13.255        11.684 \r\n 2010          257           16.97227      27.75222      13.00444      0 \r\n 2010          258           12.42573      24.85944      13.44444      0 \r\n 2010          259           10.09356      20.05333      9.253333      0 \r\n 2010          260           15.15633      24.23111      11.68778      0 \r\n 2010          261           2.760645      17.64944      10.20611      16.002 \r\n 2010          262           5.490245      17.72111      9.084444      26.924 \r\n 2010          263           14.75065      30.74055      14.06833      0 \r\n 2010          264           5.934669      23.92833      17.99444      0 \r\n 2010          265           8.122315      27.45889      18.39111      0 \r\n 2010          266           8.265659      23.33389      12.18611      12.954 \r\n 2010          267           14.92027      18.41833      12.18056      0.254 \r\n 2010          268           5.884629      14.94611      8.709444      11.43 \r\n 2010          269           17.34502      19.98389      4.056111      0 \r\n 2010          270           16.73705      22.11555      5.946667      0 \r\n 2010          271           17.62958      23.89722      9.667778      0 \r\n 2010          272           17.3764       26.83556      7.606667      0 \r\n 2010          273           17.50167      23.88222      8.674444      0 \r\n 2010          274           16.35086      19.29833      8.792222      0 \r\n 2010          275           15.63753      15.06056      5.446667      0 \r\n 2010          276           17.00813      16.14889     -0.1433333     0 \r\n 2010          277           16.91298      19.16889      1.779444      0 \r\n 2010          278           16.36664      23.45111      2.763333      0 \r\n 2010          279           15.39486      25.25167      6.013889      0 \r\n 2010          280           16.37739      25.53778      2.324445      0 \r\n 2010          281           15.27022      25.79389      9.985556      0 \r\n 2010          282           14.76877      25.92278      11.11889      0 \r\n 2010          283           14.06431      26.94278      10.32556      0 \r\n 2010          284           9.792861      24.61056      11.14333      0 \r\n 2010          285           12.83668      24.71333      8.646667      1.016 \r\n 2010          286           14.76529      20.30445      4.337778      0 \r\n 2010          287           14.88073      22.06556      2.97          0 \r\n 2010          288           14.63936      18.98056      6.217222      0 \r\n 2010          289           13.81887      20.07778      7.491111      0 \r\n 2010          290           13.57511      17.88722      2.509444      0 \r\n 2010          291           11.62512      16.86555      2.572222      0 \r\n 2010          292           12.62899      18.72445      2.146111      0 \r\n 2010          293           13.81251      19.93667      3.033889      0 \r\n 2010          294           13.00877      17.50667      1.224444      0 \r\n 2010          295           10.82936      20.61         7.889444      0 \r\n 2010          296           6.27395       19.69555      13.68056      19.05 \r\n 2010          297           3.283227      17.78722      10.19944      0 \r\n 2010          298           4.988081      19.72278      8.323889      0 \r\n 2010          299           5.552377      14.02389      6.108889      2.54 \r\n 2010          300           9.165638      9.744445      0.5538889     0.762 \r\n 2010          301           11.234        9.892777     -2.794445      0 \r\n 2010          302           13.13056      15.71444      3.277778E-02                0 \r\n 2010          303           12.03268      15.83278      3.846111      0 \r\n 2010          304           10.01101      11.02611     -0.5905555     0 \r\n 2010          305           12.35242      13.26111     -1.698333      0 \r\n 2010          306           12.11218      14.53222     -0.6994445     0 \r\n 2010          307           11.20504      14.57         2.65          0 \r\n 2010          308           11.88708      8.988889     -2.299444      0.254 \r\n 2010          309           12.43305      8.808888     -2.098333      0 \r\n 2010          310           11.81641      14.03167      0.5944445     0 \r\n 2010          311           10.96626      20.30556      3.75          0 \r\n 2010          312           11.27002      21.07611      6.569445      0 \r\n 2010          313           10.34837      21.08055      6.133333      0 \r\n 2010          314           7.628353      15.84556      2.335         0 \r\n 2010          315           9.253167      12.71667     -0.5127778     1.27 \r\n 2010          316           5.931636      7.178333      2.806667      27.178 \r\n 2010          317           2.610105      5.858889      0.9105555     0.508 \r\n 2010          318           7.323757      7.531111     -2.067778      0 \r\n 2010          319           10.4741       9.510555     -2.819444      0 \r\n 2010          320           5.288576      6.148334      0.48          0 \r\n 2010          321           4.248308      3.129444     -2.2           0 \r\n 2010          322           6.022073      4.503334     -2.821667      0 \r\n 2010          323           7.134264      5.892778     -1.806667      0 \r\n 2010          324           5.327864      5.282222     -1.367778      0 \r\n 2010          325           1.705022      10.06611     -0.8922222     0 \r\n 2010          326           4.386715      0.4494444    -5.161111      0.254 \r\n 2010          327           8.533854      1.163889     -5.11          0 \r\n 2010          328           2.057858      1.223333     -4.176667      0.254 \r\n 2010          329           8.137963     -0.7738889    -6.493889      0 \r\n 2010          330           5.792539      1.610556     -6.52          0 \r\n 2010          331           9.048612      5.373889     -3.463889      0 \r\n 2010          332           7.036107      10.60222     -1.632778      0 \r\n 2010          333           2.375382      9.64         -3.635         2.54 \r\n 2010          334           1.551929      0.2122222    -3.080555      0 \r\n 2010          335           6.961674     -0.6455556    -6.353889      0 \r\n 2010          336           6.642142      0.4394445    -9.428333      0 \r\n 2010          337           3.514184     -1.417222     -5.874444      0 \r\n 2010          338           3.811959     -2.521667     -7.923333      0 \r\n 2010          339           7.86387      -6.312778     -13.21667      0 \r\n 2010          340           6.317338     -5.859445     -13.53722      0 \r\n 2010          341           8.134868     -5.916111     -13.78889      0 \r\n 2010          342           7.562371     -0.8583333    -13.95556      0 \r\n 2010          343           5.044021      4.088889     -5.391667      0 \r\n 2010          344           5.91262       4.475        -5.027778      0 \r\n 2010          345           3.138125      2.116111     -8.82          1.52 \r\n 2010          346           8.809328     -6.552222     -18.32111      2.29 \r\n 2010          347           6.867074     -10.64167     -18.75667      0 \r\n 2010          348           4.222702     -7.662222     -15.92556      0 \r\n 2010          349           2.826292     -5.907778     -10.44167      0 \r\n 2010          350           5.270124     -4.372778     -10.34333      0.51 \r\n 2010          351           7.20443      -4.880556     -11.74611      0 \r\n 2010          352           8.102484     -4.848889     -12.13056      0 \r\n 2010          353           5.002725     -3.425        -12.56389      0 \r\n 2010          354           3.786227      1.401111     -7.77          0 \r\n 2010          355           5.923331      6.722222E-02               -11.77         0 \r\n 2010          356           3.371718     -2.26         -12.3          0 \r\n 2010          357           3.210299     -1.694444     -3.178889      0 \r\n 2010          358           3.097541     -2.002222     -3.584445      2.03 \r\n 2010          359           4.329185     -2.928333     -6.088333      3.3 \r\n 2010          360           5.744632     -4.286111     -8.428333      0 \r\n 2010          361           6.915441     -1.383333     -7.651667      0 \r\n 2010          362           8.361975      0.5144445    -5.322778      0 \r\n 2010          363           2.657802      3.790555      3.277778E-02                0 \r\n 2010          364           3.456068      3.450556     -3.88          0 \r\n 2010          365           3.225948     -3.928333     -9.000556      0 \r\n 2011          1             7.577182     -3.271111     -10.31167      3.05 \r\n 2011          2             8.243735      0.9366667    -11.85         0 \r\n 2011          3             6.76239      -0.6994445    -11.53944      0 \r\n 2011          4             8.263651      0.9338889    -13.19556      0 \r\n 2011          5             6.294033      0.9377778    -8.298333      0 \r\n 2011          6             3.622591     -1.113889     -8.693889      0 \r\n 2011          7             4.202953     -2.212222     -9.161667      0.76 \r\n 2011          8             8.623391     -3.504444     -9.931666      0 \r\n 2011          9             4.026514     -2.847778     -6.638889      0 \r\n 2011          10            3.265905     -4.02         -10.75444      0.25 \r\n 2011          11            7.631197     -10.48389     -18.20333      13.46 \r\n 2011          12            7.520489     -11.82056     -20.06944      0.25 \r\n 2011          13            6.948578     -7.344444     -20.43889      0 \r\n 2011          14            5.683546     -3.697222     -9.719444      0 \r\n 2011          15            5.594092     -4.518889     -10.79722      0 \r\n 2011          16            4.854319     -3.39         -11.96222      0 \r\n 2011          17            4.463324      0.2727778    -8.933333      0.51 \r\n 2011          18            7.70492      -7.933333     -14.43444      2.03 \r\n 2011          19            8.616864     -12.03778     -21.51667      1.02 \r\n 2011          20            9.702403     -10.61222     -22.41556      0.51 \r\n 2011          21            6.959833     -6.536111     -10.95944      0 \r\n 2011          22            7.056149     -7.317778     -17.75778      1.27 \r\n 2011          23            8.893134     -8.428889     -15.06167      0.51 \r\n 2011          24            8.474316     -1.65         -10.09667      0 \r\n 2011          25            6.005086     -3.818333     -9.463333      0 \r\n 2011          26            5.7812       -3.861111     -9.884444      0 \r\n 2011          27            10.10428      2.348333     -6.534444      0 \r\n 2011          28            8.011649      1.881111     -4.655556      0 \r\n 2011          29            7.626219      1.462222     -6.177778      0 \r\n 2011          30            4.366088     -2.058889     -7.04          0 \r\n 2011          31            3.072269     -4.445        -8.31          0 \r\n 2011          32            3.583261     -7.97         -9.9           1.52 \r\n 2011          33            9.60023      -9.7          -22.83         13.46 \r\n 2011          34            13.1937      -7.72         -28.43         0 \r\n 2011          35            12.87392     -1.761111     -8.410556      0 \r\n 2011          36            10.40151     -1.535        -11.7          0 \r\n 2011          37            7.494716      0.5272222    -6.577778      3.3 \r\n 2011          38            10.32101     -3.182222     -19.76         0 \r\n 2011          39            12.03444     -15.64        -22.03         0 \r\n 2011          40            12.85597     -13.78        -23.56         0 \r\n 2011          41            13.64256     -7.19         -28.17         0 \r\n 2011          42            9.421155      0.1722222    -7.931111      0 \r\n 2011          43            11.45667      1.863889     -4.577222      0 \r\n 2011          44            13.40951      8.466666     -2.113889      0 \r\n 2011          45            12.05343      4.303889     -1.696667      0 \r\n 2011          46            9.840349      7.365556     -2.095         0 \r\n 2011          47            8.467119      9.620556     -0.3927778     0 \r\n 2011          48            9.798468      7.703889      1.38          0 \r\n 2011          49            14.26142      3.704444     -0.6838889     0 \r\n 2011          50            13.44917      5.618889     -3.927222      0 \r\n 2011          51            2.288397      2.667222     -0.5272222     11.43 \r\n 2011          52            3.870493      0.8727778    -4.471111      1.27 \r\n 2011          53            7.514129     -1.593889     -4.248889      0 \r\n 2011          54            7.60739       1.34         -3.71          0 \r\n 2011          55            2.274757      1.273889     -2.053889      0 \r\n 2011          56            12.28958     -0.4566667    -4.943333      6.1 \r\n 2011          57            6.269138     -5.838889     -10.83         2.54 \r\n 2011          58            5.385645     -1.588889     -7.11          0 \r\n 2011          59            16.1412       2.592222     -8.84          2.03 \r\n 2011          60            16.24455      7.18         -5.905         0 \r\n 2011          61            16.64174      0.7927778    -9.9           0 \r\n 2011          62            9.726169      7.85         -3.315         0 \r\n 2011          63            4.674741      3.998889     -0.2911111     0 \r\n 2011          64            8.603225      0.2727778    -5.373889      0.76 \r\n 2011          65            11.31266      3.192778     -7.97          0 \r\n 2011          66            5.782079      1.732778     -1.856111      0 \r\n 2011          67            5.112346      6.126111     -0.3927778     0 \r\n 2011          68            4.174418      2.067222      0.4722222     15.75 \r\n 2011          69            12.27443      3.326111     -3.315         0 \r\n 2011          70            15.11872      4.51         -2.415         0 \r\n 2011          71            14.57091      1.516111     -2.402222      0 \r\n 2011          72            10.57493      1.06         -7.24          0 \r\n 2011          73            18.03877      7.97         -4.908889      0 \r\n 2011          74            17.3664       11.94        -6.772222      0 \r\n 2011          75            17.05587      17.07        -3.776111      0 \r\n 2011          76            9.34442       20.53         3.658889      0 \r\n 2011          77            13.22851      5.974444     -0.2483333     0 \r\n 2011          78            14.62053      14.08        -4.907778      0 \r\n 2011          79            8.431388      16.14         5.992222      0.76 \r\n 2011          80            10.40239      13.22         4.592778      3.56 \r\n 2011          81            4.866829      8.39          5.058889      0 \r\n 2011          82            5.847893      8.33         -3.383889      2.03 \r\n 2011          83            13.73415      3.518889     -4.442778      0 \r\n 2011          84            8.391807      3.58          0.8805556     3.05 \r\n 2011          85            13.26738      2.726111     -4.376111      0.76 \r\n 2011          86            17.84317      2.726111     -4.376111      0 \r\n 2011          87            18.60972      2.726111     -4.376111      0 \r\n 2011          88            11.0548       2.726111     -4.376111      3.05 \r\n 2011          89            16.11489      9.69         -4.71          0 \r\n 2011          90            10.14825      10.55556     -5.555555      0 \r\n 2011          91            20.46683      8.873333      3.668333      0 \r\n 2011          92            17.26247      16.07         7.222222E-03                0 \r\n 2011          93            14.62254      26.3          7.72          4.826 \r\n 2011          94            14.51434      8.65          0.34          0 \r\n 2011          95            21.03644      16.48        -3.586111      0 \r\n 2011          96            18.96247      17.6          3.992222      0 \r\n 2011          97            6.779879      15.62         0.34          20.066 \r\n 2011          98            7.189075      10.24667      7.408333      0 \r\n 2011          99            16.76328      22.52         7.32          0 \r\n 2011          100           18.33525      29.16         9.65          0 \r\n 2011          101           23.11794      19.13         7.59          0 \r\n 2011          102           23.52274      19.2          0.94          0 \r\n 2011          103           18.68817      22.98         5.731111      0 \r\n 2011          104           9.856416      14.35         5.658889      1.524 \r\n 2011          105           1.93418       8.927778      6.182778      23.114 \r\n 2011          106           14.22322      8.39         -0.3927778     1.778 \r\n 2011          107           14.77354      9.63         -0.06          0.508 \r\n 2011          108           6.872513      7.25          2.4           1.016 \r\n 2011          109           3.341384      4.532778      0.4072222     13.208 \r\n 2011          110           13.41621      9.18          0.2727778     0 \r\n 2011          111           7.954202      9.57         -2.912778      1.016 \r\n 2011          112           4.114044      7.013333      5.300556      2.286 \r\n 2011          113           12.67572      12.17         6.592222      1.524 \r\n 2011          114           17.00507      13.68         2.332778      0 \r\n 2011          115           5.106614      13.22         5.926111      2.794 \r\n 2011          116           6.086758      12.11         8.38          5.842 \r\n 2011          117           13.20081      9.51          4.258889      0 \r\n 2011          118           17.3277       12.56         1.6           0 \r\n 2011          119           21.31589      13.68667      3.199445      0 \r\n 2011          120           16.68918      22.26         9.04          1.778 \r\n 2011          121           24.58447      16.14         2.532778      0 \r\n 2011          122           27.11533      14.49         0.54          0 \r\n 2011          123           21.79738      12.69        -1.32          0 \r\n 2011          124           24.27272      13.03389      2.708889      0 \r\n 2011          125           15.00173      14.71278      7.628889      3.302 \r\n 2011          126           23.25091      16.29556      6.771667      0 \r\n 2011          127           26.3228       23.91         10.17         0 \r\n 2011          128           25.27797      24.91         5.992222      0 \r\n 2011          129           20.12579      27.83         14.95         0 \r\n 2011          130           24.90748      33.14         17.14         0 \r\n 2011          131           11.50257      30.03         17.21         26.67 \r\n 2011          132           21.55011      23.21389      15.88111      3.556 \r\n 2011          133           6.358216      17.62444      12.22         11.176 \r\n 2011          134           5.066573      11.17         7.93          1.016 \r\n 2011          135           16.68475      18.07         6.125         11.684 \r\n 2011          136           27.56449      18.07         2.667222      0 \r\n 2011          137           29.52264      20            0.3472222     0 \r\n 2011          138           26.92396      21.72         2.273889      0 \r\n 2011          139           18.10295      24.11         8.45          0 \r\n 2011          140           10.79656      21.17278      14.04444      21.844 \r\n 2011          141           19.76237      26.9          15.55         9.652 \r\n 2011          142           17.70447      25.51         14.16         0 \r\n 2011          143           24.45243      26.3          16.02         0 \r\n 2011          144           18.38044      28.16         13.89         9.398 \r\n 2011          145           6.91452       15.35         8.78          32.004 \r\n 2011          146           25.73202      18.53         8.06          0 \r\n 2011          147           12.57229      15.25833      9.879444      0.762 \r\n 2011          148           9.978212      17.57778      12.33111      0.762 \r\n 2011          149           8.222898      22.86         10.25         22.86 \r\n 2011          150           24.91066      31.08         17.48         0 \r\n 2011          151           24.27841      27.37         17.15         0.254 \r\n 2011          152           26.62405      27.37         11.51         0 \r\n 2011          153           13.15349      21.13         15.96         2.794 \r\n 2011          154           24.44368      26.13889      18.85278      0 \r\n 2011          155           14.97851      25.21056      19.04722      0.508 \r\n 2011          156           24.45849      25.53278      18.14722      0 \r\n 2011          157           26.37267      34.21         19.61         0 \r\n 2011          158           25.81444      33.48         20.87         0 \r\n 2011          159           22.48875      32.55         20.01         4.826 \r\n 2011          160           5.200419      20.14         12.7          29.718 \r\n 2011          161           7.769939      19.28889      14.73167      22.098 \r\n 2011          162           17.63899      21            11.91         0 \r\n 2011          163           15.51699      21.06         9.78          0 \r\n 2011          164           14.4594       21.53         10.31         32.004 \r\n 2011          165           12.2418       23.38         13.3          24.384 \r\n 2011          166           20.72122      24.84         14.5          1.016 \r\n 2011          167           24.62037      28.83         11.84         0 \r\n 2011          168           19.43497      23.84444      17.27555      1.27 \r\n 2011          169           11.76662      25.31         16.82         0 \r\n 2011          170           22.05985      29.62         17.95         7.62 \r\n 2011          171           16.55262      26.23         18.15         33.782 \r\n 2011          172           16.32153      27.37         17.22         4.572 \r\n 2011          173           7.23309       19.35         16.83         0.508 \r\n 2011          174           12.14732      19.41         15.03         0 \r\n 2011          175           25.03371      20.71778      15.26056      0 \r\n 2011          176           10.48527      19.02944      16.03056      18.288 \r\n 2011          177           16.76989      22.78778      15.55833      26.416 \r\n 2011          178           23.70295      23.35556      17.18722      0.508 \r\n 2011          179           28.56065      22.80056      16.27944      0 \r\n 2011          180           27.80904      24.10611      16.06167      0 \r\n 2011          181           26.84915      28.08945      19.76778      0 \r\n 2011          182           26.84408      28.96111      24.20722      0 \r\n 2011          183           26.69133      27.26389      20.94056      0 \r\n 2011          184           9.745164      24.43778      20.29944      3.556 \r\n 2011          185           27.92443      29.23         14.16         0 \r\n 2011          186           16.21572      29.49         14.04         0 \r\n 2011          187           24.09988      31.61         16.23         0 \r\n 2011          188           17.79108      27.7          17.48         13.716 \r\n 2011          189           26.26816      27.57389      19.39833      0 \r\n 2011          190           24.23632      31.62         16.23         0 \r\n 2011          191           20.83866      32.28         20.4          0 \r\n 2011          192           19.62618      30.68         20.59         5.588 \r\n 2011          193           13.56323      28.43         17.23         0.762 \r\n 2011          194           20.93724      25.37         15.3          0 \r\n 2011          195           18.16099      26.63         14.7          0 \r\n 2011          196           20.53846      26.85944      21.07833      0 \r\n 2011          197           19.11603      31.28         21.26         0.254 \r\n 2011          198           23.54538      34.21         22.73         0 \r\n 2011          199           25.07375      34.94         25.05         0 \r\n 2011          200           25.48587      36.53         25.38         0 \r\n 2011          201           25.78566      35.34         23.59         0 \r\n 2011          202           16.97809      30.04222      24.10056      0.508 \r\n 2011          203           19.84325      28.09722      22.62278      2.286 \r\n 2011          204           14.21644      28.24         20.86         18.542 \r\n 2011          205           17.81233      29.16         20.65         0.254 \r\n 2011          206           22.32315      30.55         18.22         0 \r\n 2011          207           24.03834      32.75         19.75         0 \r\n 2011          208           19.8389       33.14         22.47         0 \r\n 2011          209           11.98854      30.82         21.27         1.778 \r\n 2011          210           16.80014      27.25222      22.46667      3.556 \r\n 2011          211           23.7342       30.29         17.89         0 \r\n 2011          212           24.7125       32.21         17.62         0 \r\n 2011          213           23.18346      33.95055      20.79445      0 \r\n 2011          214           20.97339      32.92111      23.58333      0 \r\n 2011          215           24.22055      29.99944      18.42945      0 \r\n 2011          216           10.85225      25.66611      17.81278      20.32 \r\n 2011          217           10.87873      25.89444      21.63833      14.478 \r\n 2011          218           18.04266      30.30944      21.05389      10.16 \r\n 2011          219           24.12122      29.9          18.62         4.572 \r\n 2011          220           19.28933      26.53555      17.37167      8.89 \r\n 2011          221           23.99825      26.36167      15.88889      0 \r\n 2011          222           23.69776      24.67556      13.02333      0 \r\n 2011          223           24.28615      26.76389      12.36611      0 \r\n 2011          224           19.19506      26.30889      17.58278      0 \r\n 2011          225           21.14075      24.33         16.73611      0 \r\n 2011          226           24.18026      27.64056      14.20111      0 \r\n 2011          227           22.79912      27.61222      13.55167      0 \r\n 2011          228           13.67837      25.705        15.45333      19.304 \r\n 2011          229           21.52404      28.785        16.77555      0 \r\n 2011          230           18.23868      28.99444      14.28         7.874 \r\n 2011          231           22.32248      29.585        14.55333      0 \r\n 2011          232           19.74999      26.78056      16.89278      0 \r\n 2011          233           22.56013      27.43         14.92222      0 \r\n 2011          234           20.26332      28.90222      14.64278      2.032 \r\n 2011          235           18.08375      31.16389      20.18556      0 \r\n 2011          236           22.32955      30.11333      16.27111      0 \r\n 2011          237           22.83263      28.29111      13.19722      0 \r\n 2011          238           13.01747      27.01944      13.79833      2.286 \r\n 2011          239           21.1669       28.25611      15.79944      0 \r\n 2011          240           12.85869      24.83667      13.15         0.762 \r\n 2011          241           20.70716      26.75         12.33833      0 \r\n 2011          242           4.76566       20.10889      15.33944      17.78 \r\n 2011          243           20.5144       29.77555      15.69722      0 \r\n 2011          244           19.65664      34.51944      21.04778      0 \r\n 2011          245           12.17937      26.5          18.5          0 \r\n 2011          246           4.702105      23.25889      17.06611      0.508 \r\n 2011          247           21.36032      21.38778      11.40833      0 \r\n 2011          248           21.32459      20.77         7.220556      0 \r\n 2011          249           21.00426      21.45333      6.640555      0 \r\n 2011          250           20.95042      22.725        7.031111      0 \r\n 2011          251           19.59949      23.74167      11.945        0 \r\n 2011          252           19.6371       24.15944      14.77333      0 \r\n 2011          253           19.42422      27.25222      11.52         0 \r\n 2011          254           19.10168      29.51056      11.82167      0 \r\n 2011          255           19.0682       30.91945      13.57556      0 \r\n 2011          256           17.86781      22.42945      10.64167      0 \r\n 2011          257           14.93742      16.165        4.917778      0.508 \r\n 2011          258           17.26323      15.13167      1.431667      0 \r\n 2011          259           5.416941      12.96556      9.332778      2.54 \r\n 2011          260           5.400456      15.83833      8.21          0 \r\n 2011          261           2.565503      15.93667      12.72556      11.43 \r\n 2011          262           17.69447      24.40778      9.909445      0.254 \r\n 2011          263           15.41624      24.94278      8.465555      0 \r\n 2011          264           13.77883      17.63333      10.91222      0 \r\n 2011          265           13.16224      16.16         7.096111      0 \r\n 2011          266           15.72113      16.78333      5.768333      0 \r\n 2011          267           13.51562      17.90055      2.196667      0 \r\n 2011          268           12.75325      17.10722      6.598889      2.54 \r\n 2011          269           7.374635      17.49833      8.945         2.286 \r\n 2011          270           12.4505       19.54278      10.51778      0 \r\n 2011          271           13.35106      21.91111      12.17778      0 \r\n 2011          272           10.5215       20.40333      12.33833      0 \r\n 2011          273           17.56627      18.09667      8.901667      0 \r\n 2011          274           17.61908      17.86111      0.6244444     0 \r\n 2011          275           17.05675      23.05333      0.19          0 \r\n 2011          276           16.69793      22.57667      6.816111      0 \r\n 2011          277           15.9679       24.36167      9.161111      0 \r\n 2011          278           16.27672      24.60944      11.56722      0 \r\n 2011          279           14.33572      24.08333      11.48167      0 \r\n 2011          280           12.11799      25.28555      15.12111      0 \r\n 2011          281           13.56156      28.36389      14.71056      0 \r\n 2011          282           14.80048      26.59222      11.17889      0 \r\n 2011          283           10.52941      24.43333      9.505555      0 \r\n 2011          284           12.41748      24.54833      9.887777      0 \r\n 2011          285           5.105819      19.17444      11.18278      3.81 \r\n 2011          286           14.25982      19.915        8.1           0 \r\n 2011          287           12.42376      15.51444      8.799444      0 \r\n 2011          288           14.34723      18.75889      4.271667      0 \r\n 2011          289           10.76506      16.12889      4.323333      0 \r\n 2011          290           6.041069      13.745       -1.666667E-03                2.54 \r\n 2011          291           6.632979      9.943334      2.721667      0 \r\n 2011          292           4.372447      3.715556      0.305         0 \r\n 2011          293           8.053531      5.050556     -0.31          0 \r\n 2011          294           13.55712      14.53556      0.5772222     0 \r\n 2011          295           11.01948      15.74278      5.331666      0.254 \r\n 2011          296           11.58596      19.08055      4.543889      0 \r\n 2011          297           11.85499      21.61389      2.224444      0 \r\n 2011          298           10.13561      20.85778      9.578889      0 \r\n 2011          299           4.892393      11.36444      4.641111      0 \r\n 2011          300           11.28693      12.38444     -0.2394444     0.254 \r\n 2011          301           11.06513      12.535        1.21          0 \r\n 2011          302           10.59008      13.86111     -3.18          0 \r\n 2011          303           9.912314      12.87556      2.898333      1.27 \r\n 2011          304           12.54606      12.93833     -1.503889      0 \r\n 2011          305           11.76507      22.16833      1.762778      0 \r\n 2011          306           1.386829      11.47778      2.438333      25.4 \r\n 2011          307           10.61719      10.14        -0.3088889     0.254 \r\n 2011          308           10.7161       9.907222     -0.7227778     0 \r\n 2011          309           7.84295       10.88389      1.323333      0 \r\n 2011          310           9.839555      14.63         1.288889      0 \r\n 2011          311           9.354295      14.75389     -2.415         14.986 \r\n 2011          312           1.86188       7.633333      2.112778      13.462 \r\n 2011          313           10.0239       8.941112      0.2127778     13.462 \r\n 2011          314           11.0663       5.045        -3.133889      0 \r\n 2011          315           9.503412      9.362223     -1.380556      0 \r\n 2011          316           7.449235      13.87        -1.203333      0 \r\n 2011          317           7.419613      13.58667      2.664444      0 \r\n 2011          318           8.751129      15.44722      6.055555E-02                0 \r\n 2011          319           9.537261      13.75778     -1.494444      0 \r\n 2011          320           10.63117      5.472222     -6.176667      0 \r\n 2011          321           10.94426      5.308889     -4.985         0 \r\n 2011          322           8.594856      10.36833      1.563333      0 \r\n 2011          323           1.823429      12.42944     -2.253889      0 \r\n 2011          324           6.265331      1.693889     -6.363889      0 \r\n 2011          325           4.917539      6.147778     -5.961111      0 \r\n 2011          326           2.760436      5.711667      4.444445E-02                8.128 \r\n 2011          327           5.671287      7.822778     -0.2183333     0 \r\n 2011          328           8.996353      14.25389      2.804445      0 \r\n 2011          329           2.833321      10.76833      7.058889      0 \r\n 2011          330           1.568414      10.64778      3.381667      6.35 \r\n 2011          331           2.803238      2.386667     -1.035556      0 \r\n 2011          332           6.322861      3.03         -3.722778      0 \r\n 2011          333           9.525838      4.606667     -2.467222      0 \r\n 2011          334           8.085329      6.625556     -5.751667      0 \r\n 2011          335           3.245403      1.892222     -3.110556      0 \r\n 2011          336           9.084845      1.962778     -7.211111      0 \r\n 2011          337           5.805928      5.496666      0.115         12.7 \r\n 2011          338           2.52701      -0.4266667    -4.730556      33.02 \r\n 2011          339           3.336656     -5.551111     -9.68          0 \r\n 2011          340           6.365161     -6.385        -13.84         0 \r\n 2011          341           5.711788     -1.811667     -10.35778      0 \r\n 2011          342           4.088396     -0.3783333    -5.891667      0 \r\n 2011          343           7.946336     -3.327778     -9.14          2.54 \r\n 2011          344           7.101001      0.2877778    -9.237223      0 \r\n 2011          345           5.327529      4.007778     -5.256111      0 \r\n 2011          346           1.847236      4.926111      1.086111      0 \r\n 2011          347           2.533705      6.472222      0.8688889     0 \r\n 2011          348           1.17675       10.79         3.055         17.27 \r\n 2011          349           2.155931      3.751111     -2.682222      6.1 \r\n 2011          350           7.755211      0.3983333    -4.791111      0 \r\n 2011          351           7.00251       4.997778     -5.106111      0 \r\n 2011          352           7.779897      10.91222     -3.890556      0 \r\n 2011          353           5.292467      4.093889     -1.801111      0 \r\n 2011          354           2.70504       0.4394445    -3.705         0 \r\n 2011          355           6.562646      5.986667     -2.448889      2.03 \r\n 2011          356           6.02588      -0.6672222    -9.96          0 \r\n 2011          357           7.450867      1.647778     -6.157778      0 \r\n 2011          358           8.47963       4.349444     -4.372778      0 \r\n 2011          359           8.59448       4.223889     -1.876667      0 \r\n 2011          360           5.52811       4.703333     -3.034444      0 \r\n 2011          361           5.359746      2.591111     -2.766667      0.25 \r\n 2011          362           7.749521      5.076111     -2.895555      0 \r\n 2011          363           7.72584       6.995         0.5955555     0 \r\n 2011          364           2.120493      3.487222      1.155556      2.54 \r\n 2011          365           5.39644       6.207778      1.123889      0 \r\n 2012          1             6.898956      3.782778     -5.451111      1.78 \r\n 2012          2             7.646051     -3.762778     -10.98         0 \r\n 2012          3             7.927801      1.737778     -13.84722      0 \r\n 2012          4             8.506616      6.897222     -2.047778      0 \r\n 2012          5             7.951943      16.54667     -2.450556      0 \r\n 2012          6             6.269138      7.160555     -0.5488889     0 \r\n 2012          7             7.554212      4.846111     -4.739444      0 \r\n 2012          8             6.384198      5.302222     -4.837222      0 \r\n 2012          9             8.909493      10.59778     -4.478889      0 \r\n 2012          10            7.651574      13.07111     -5.375556      0 \r\n 2012          11            5.233054      6.728889     -8.779445      0 \r\n 2012          12            3.630875     -8.722777     -12.69         0.51 \r\n 2012          13            7.433838     -5.218889     -10.94         0 \r\n 2012          14            6.373822     -0.9872222    -9.949445      0.25 \r\n 2012          15            9.466091      7.539444     -9.314445      0 \r\n 2012          16            6.882513      6.519444     -3.340556      0 \r\n 2012          17            7.403253     -2.721111     -16.20222      2.03 \r\n 2012          18            7.963156     -2.541111     -19.35722      0.25 \r\n 2012          19            8.493855     -8.848333     -19.22667      0 \r\n 2012          20            2.530274     -9.229445     -12.07667      0 \r\n 2012          21            4.514494     -6.001667     -18.33833      0 \r\n 2012          22            1.51352       0.9505556    -7.219444      0 \r\n 2012          23            4.159523      0.4605556    -4.798333      3.05 \r\n 2012          24            7.101085     -2.391667     -7.17          0 \r\n 2012          25            7.576429      2.383889     -6.506667      0 \r\n 2012          26            6.189517      4.038889     -2.945555      0 \r\n 2012          27            2.73801       1.614444     -3.761111      0 \r\n 2012          28            11.03685      4.246111     -6.246666      0 \r\n 2012          29            10.23168      0.32         -7.2           0 \r\n 2012          30            10.78054      14.835       -1.693333      0 \r\n 2012          31            8.346327      8.986667      0.8944445     0 \r\n 2012          32            7.178865      5.865556     -2.305556      0 \r\n 2012          33            8.996604      9.630555     -3.456111      0 \r\n 2012          34            1.874348      0.5233333    -0.73          0 \r\n 2012          35            2.463455      1.563333     -1.695556      8.89 \r\n 2012          36            4.46709      -0.875        -3.753889      5.59 \r\n 2012          37            7.469193     -1.555        -7.29          0 \r\n 2012          38            2.370027      0.1238889    -4.511111      0 \r\n 2012          39            10.07645     -1.798333     -9.442778      0 \r\n 2012          40            6.098389     -0.2816667    -11.92         0 \r\n 2012          41            8.643935     -1.002778     -8.868889      0 \r\n 2012          42            13.71176     -4.341667     -15.59111      0 \r\n 2012          43            13.88971     -1.278889     -15            0 \r\n 2012          44            4.290399     -1.336667     -7.282222      1.02 \r\n 2012          45            10.74853      2.185555     -4.748333      3.05 \r\n 2012          46            11.48403      7.932222     -3.533333      0 \r\n 2012          47            14.24263      6.418889     -3.638333      0 \r\n 2012          48            11.57495      5.529444     -3.235556      0 \r\n 2012          49            14.52509      3.621667     -8.006667      0 \r\n 2012          50            14.37756      5.392778     -8.316667      0 \r\n 2012          51            7.671657      6.905        -4.292778      0 \r\n 2012          52            12.7635       7.948333     -1.765         0.76 \r\n 2012          53            12.08088      9.227222     -2.530555      0 \r\n 2012          54            1.917151      2.276667     -2.603333      2.54 \r\n 2012          55            11.34015     -0.4672222    -4.268889      12.95 \r\n 2012          56            16.17664     -2.981667     -11.54889      0 \r\n 2012          57            15.59829      9.638333     -5.766667      0 \r\n 2012          58            16.20756      1.522778     -8.087778      0 \r\n 2012          59            4.585748      6.743889     -2.561111      0 \r\n 2012          60            5.930737      6.535555     -0.7677778     7.62 \r\n 2012          61            10.17645      3.026667     -1.638889      0 \r\n 2012          62            6.290393      2.993889     -0.9333333     0 \r\n 2012          63            10.39749      7.611111E-02               -5.282778      1.27 \r\n 2012          64            6.735194     -2.496111     -9.461667      0 \r\n 2012          65            15.24298      4.735        -13.54111      0 \r\n 2012          66            16.12371      20.43167     -0.5211111     0 \r\n 2012          67            3.605269      17.67778     -8.833333E-02                0 \r\n 2012          68            17.73865      7.123889     -3.330555      2.54 \r\n 2012          69            15.37653      5.971667     -2.640556      0 \r\n 2012          70            18.57847      19.365        1.933333      0 \r\n 2012          71            7.989432      16.32055      2.779444      0 \r\n 2012          72            12.82727      16.37444      6.631667      8.89 \r\n 2012          73            18.40989      22.68778      0.8527778     0 \r\n 2012          74            15.78335      24.93667      9.344444      0 \r\n 2012          75            15.87364      25.49111      7.529444      0 \r\n 2012          76            13.03312      22.80667      10.58222      0 \r\n 2012          77            12.19715      23.21722      14.25167      0 \r\n 2012          78            12.5292       23.35944      14.15556      0 \r\n 2012          79            9.917921      27.16556      14.27611      0 \r\n 2012          80            8.261977      20.88556      13.33333      5.08 \r\n 2012          81            8.118885      21.87333      13.28778      10.67 \r\n 2012          82            7.225015      18.48         9.538889      4.57 \r\n 2012          83            12.71011      17.21445      8.418889      2.54 \r\n 2012          84            12.87136      18.76444      10.77889      0 \r\n 2012          85            18.646        23.25889      7.511111      0 \r\n 2012          86            14.92843      15.36167      7.280556      0 \r\n 2012          87            18.09856      25.22778      8.007778      0.25 \r\n 2012          88            20.24127      21.10111      6.245555      1.27 \r\n 2012          89            13.94636      18.505        5.962222      2.54 \r\n 2012          90            9.009658      14.08889      9.052222      6.86 \r\n 2012          91            11.70968      18.35944      7.444445      0.51 \r\n 2012          92            20.60545      26.44444      8.007222      0 \r\n 2012          93            19.88145      27.68611      10.09778      0 \r\n 2012          94            18.52855      20.13778      10.30889      0 \r\n 2012          95            14.5999       19.66278      10.38778      2.286 \r\n 2012          96            21.55275      16.84556      4.948889      0 \r\n 2012          97            18.8008       14.68278      3.19          0 \r\n 2012          98            10.22243      16.15278      1.870556      1.016 \r\n 2012          99            21.34949      20.14167     -0.1561111     0 \r\n 2012          100           22.97966      17.01722      1.967778      0 \r\n 2012          101           24.06817      12.10333     -1.597222      0 \r\n 2012          102           24.60552      13.09778     -3.366111      0 \r\n 2012          103           15.02324      16.07667     -1.553333      0.254 \r\n 2012          104           5.002014      12.21333      8.232778      20.828 \r\n 2012          105           5.015235      16.37944      11.07389      41.148 \r\n 2012          106           15.96874      23.23         12.27         13.716 \r\n 2012          107           17.77451      14.07722      4.426667      1.524 \r\n 2012          108           21.77115      18.27056      2.352222      0 \r\n 2012          109           16.4481       19.11889      11.07278      0.508 \r\n 2012          110           4.469767      14.78056      6.773889      12.7 \r\n 2012          111           17.82463      11.51444      4.953889      0 \r\n 2012          112           13.04663      13.82222      1.341111      0.508 \r\n 2012          113           14.10238      13.72333      3.802222      0 \r\n 2012          114           24.90672      17.71389      3.366111      0 \r\n 2012          115           23.56877      26.95611      5.829444      0 \r\n 2012          116           20.62323      28.67889      11.36056      0 \r\n 2012          117           20.39976      17.52778      10.32389      0 \r\n 2012          118           12.21971      14.07722      7.853889      8.636 \r\n 2012          119           8.130642      9.298889      4.34          0.508 \r\n 2012          120           3.880534      9.671111      6.305555      11.938 \r\n 2012          121           14.64701      16.79445      7.624444      0 \r\n 2012          122           17.58334      22.29278      8.587778      0.254 \r\n 2012          123           12.88685      23.81444      14.94167      39.116 \r\n 2012          124           19.96772      28.60667      17.55833      3.556 \r\n 2012          125           16.51462      24.51556      16.54167      2.286 \r\n 2012          126           19.10377      27.96222      16.94667      0 \r\n 2012          127           15.19131      25.37611      15.44722      14.224 \r\n 2012          128           23.51785      21.38833      12.87278      6.35 \r\n 2012          129           21.10573      19.10333      8.15          0 \r\n 2012          130           22.23302      19.20722      6.764444      0 \r\n 2012          131           26.62723      23.24611      5.776667      0 \r\n 2012          132           19.96634      23.04278      12.39889      0 \r\n 2012          133           19.99831      21.69722      10.48722      0 \r\n 2012          134           27.07324      24.08167      7.916111      0 \r\n 2012          135           27.02755      26.81556      8.15          0 \r\n 2012          136           26.49233      31.32556      14.32333      0 \r\n 2012          137           27.54532      24.13389      9.760555      0 \r\n 2012          138           26.1723       26.68389      10.90278      0 \r\n 2012          139           21.49099      27.06611      14.535        0 \r\n 2012          140           18.73553      30.13167      16.315        0 \r\n 2012          141           20.34349      23.68611      11.375        0 \r\n 2012          142           28.45551      25.08778      8.713889      0 \r\n 2012          143           27.15282      27.53167      10.42778      0 \r\n 2012          144           25.47633      30.67833      14.79833      0 \r\n 2012          145           12.54372      25.89444      15.41833      1.778 \r\n 2012          146           9.578975      19.77667      13.83611      5.334 \r\n 2012          147           13.90942      28.16278      15.66444      0 \r\n 2012          148           22.65887      29.07944      20.11278      0 \r\n 2012          149           25.89143      30.44889      15.16333      0 \r\n 2012          150           28.79107      24.26333      11.07389      0 \r\n 2012          151           23.94336      21.30556      9.516666      0.762 \r\n 2012          152           6.278259      14.58667      10.81667      12.954 \r\n 2012          153           19.78199      18.78389      10.14278      0 \r\n 2012          154           24.01478      23.19722      11.95889      0.254 \r\n 2012          155           20.3293       28.05278      11.19944      0 \r\n 2012          156           25.66436      28.52555      15.32278      0 \r\n 2012          157           22.94983      28.27111      14.65333      0 \r\n 2012          158           23.98829      25.72944      14.37222      1.524 \r\n 2012          159           20.91414      26.93611      13.18056      0 \r\n 2012          160           23.55642      27.01         15.93333      0 \r\n 2012          161           28.78362      30.88389      16.11444      0 \r\n 2012          162           23.63964      31.89444      19.69389      0 \r\n 2012          163           26.05122      27.12056      15.88778      9.906 \r\n 2012          164           29.61494      22.95778      10.71111      0 \r\n 2012          165           21.05351      25.21389      11.15389      0 \r\n 2012          166           26.54865      31.14         14.70222      0 \r\n 2012          167           11.73369      27.86722      19.30167      9.906 \r\n 2012          168           16.85951      27.72889      18.72333      26.162 \r\n 2012          169           26.80396      29.02944      14.91         0 \r\n 2012          170           27.57214      34.06833      23.74167      0 \r\n 2012          171           27.37834      33.14556      21.65111      0 \r\n 2012          172           17.8502       31.13556      17.55445      6.096 \r\n 2012          173           27.8105       25.94722      14.90778      4.826 \r\n 2012          174           23.47425      26.33         15.895        0 \r\n 2012          175           13.3688       24.97778      15.59167      11.176 \r\n 2012          176           25.10676      30.39889      18.13         1.016 \r\n 2012          177           28.44032      26.91222      15.14667      0 \r\n 2012          178           28.04221      27.92833      11.15667      0 \r\n 2012          179           27.62055      36.25722      15.67389      0 \r\n 2012          180           21.3112       32.74389      21.49333      0 \r\n 2012          181           12.52719      28.32722      20.42722      0.254 \r\n 2012          182           23.32906      32.24333      17.58833      1.524 \r\n 2012          183           24.74438      33.69444      20.69389      0 \r\n 2012          184           21.57751      31.64222      22.21944      0 \r\n 2012          185           22.15064      32.42167      22.79167      0 \r\n 2012          186           22.29612      32.95333      23.03611      0 \r\n 2012          187           19.29606      35.70333      22.52833      0 \r\n 2012          188           21.61187      36.92389      21.43         0 \r\n 2012          189           21.61618      34.24111      21.07333      0.254 \r\n 2012          190           21.86508      30.55056      19.27944      0 \r\n 2012          191           25.06982      31.74333      16.59111      0 \r\n 2012          192           27.94054      29.21889      15.20222      0 \r\n 2012          193           27.50884      29.89889      14.635        0 \r\n 2012          194           25.01191      31.96         15.52         0 \r\n 2012          195           14.13435      30.37889      20.04333      4.572 \r\n 2012          196           22.05943      31.70444      18.03611      1.016 \r\n 2012          197           26.0695       34.22778      18.63611      0 \r\n 2012          198           26.82735      34.52444      20.48056      0 \r\n 2012          199           25.5729       35.83445      20.28444      0 \r\n 2012          200           24.47979      36.79445      20.94444      0 \r\n 2012          201           27.36001      31.93611      19.33611      0 \r\n 2012          202           18.56926      30.61611      17.34111      0 \r\n 2012          203           20.67703      30.43778      17.11389      0 \r\n 2012          204           23.50119      36.565        19.00444      0 \r\n 2012          205           25.1617       38.58389      22.82722      0 \r\n 2012          206           25.57294      34.74667      22.57611      0 \r\n 2012          207           25.16187      38.77833      20.85278      2.794 \r\n 2012          208           24.51418      30.47         22.14111      3.81 \r\n 2012          209           21.68935      27.16         19.67333      0 \r\n 2012          210           9.828216      23.07833      15.72611      0.254 \r\n 2012          211           22.46791      31.27222      17.63889      5.588 \r\n 2012          212           23.12325      34.45444      19.255        0 \r\n 2012          213           25.86633      31.71667      18.35556      0 \r\n 2012          214           25.40328      34.60778      16.41722      0 \r\n 2012          215           23.22271      33.44556      20.045        0 \r\n 2012          216           20.12353      31.70444      20.40667      0 \r\n 2012          217           12.54694      26.94944      19.47445      10.668 \r\n 2012          218           26.94546      25.79         13.65667      0 \r\n 2012          219           25.75704      30.17278      11.30889      0 \r\n 2012          220           21.65923      33.20945      16.63667      1.016 \r\n 2012          221           14.48802      28.62944      17.03389      11.938 \r\n 2012          222           20.72632      27.20944      14.97278      0 \r\n 2012          223           17.46021      23.73333      14.95444      0 \r\n 2012          224           22.62414      25.87         11.46167      0 \r\n 2012          225           7.314427      19.25056      14.90556      5.588 \r\n 2012          226           18.46182      25.39556      14.68         0 \r\n 2012          227           22.99426      28.54389      13.60778      0 \r\n 2012          228           22.03345      29.66389      14.41056      0 \r\n 2012          229           18.06835      23.45444      12.69556      11.176 \r\n 2012          230           20.62486      22.61         12.74333      0 \r\n 2012          231           14.46823      23.01167      8.164444      0 \r\n 2012          232           19.65857      24.32556      9.91          1.27 \r\n 2012          233           22.68694      26.20833      9.567223      0 \r\n 2012          234           23.80725      27.20944      9.158334      0 \r\n 2012          235           21.67237      32.80444      11.71722      0 \r\n 2012          236           21.16987      32.84722      14.15722      0 \r\n 2012          237           16.2422       28.55333      18.26778      0 \r\n 2012          238           6.663146      24.97056      16.62611      2.032 \r\n 2012          239           14.75722      27.64556      16.92444      56.642 \r\n 2012          240           21.4561       31.03278      15.66833      0 \r\n 2012          241           20.52771      29.29167      17.55722      0 \r\n 2012          242           19.99475      33.53056      16.895        0 \r\n 2012          243           21.43137      34.32833      18.92056      0 \r\n 2012          244           13.58319      29.45111      18.02778      0 \r\n 2012          245           12.21331      26.91889      19.69389      1.27 \r\n 2012          246           18.74436      31.70555      16.03555      0 \r\n 2012          247           8.738954      28.12722      18.32833      0.254 \r\n 2012          248           20.42721      34.45889      18.96944      0 \r\n 2012          249           19.97898      29.50222      16.84945      0 \r\n 2012          250           20.61122      28.10722      12.38556      0 \r\n 2012          251           8.093781      22.28778      12.27611      0.254 \r\n 2012          252           21.2279       24.98889      8.894444      0 \r\n 2012          253           20.88845      24.36167      9.054444      0 \r\n 2012          254           21.02431      26.38167      8.066667      0 \r\n 2012          255           19.1228       31.94944      13.36444      0 \r\n 2012          256           11.58617      27.15833      12.66611      0 \r\n 2012          257           8.344611      17.09111      8.304444      5.08 \r\n 2012          258           15.51289      24.73667      6.716667      0 \r\n 2012          259           20.02508      25.34833      6.221667      0 \r\n 2012          260           14.42246      24.53667      7.59          0 \r\n 2012          261           9.161036      18.39722      8.575556      3.556 \r\n 2012          262           19.46748      17.61111      4.584445      0 \r\n 2012          263           18.45684      27.90389      6.595         1.524 \r\n 2012          264           12.11318      20.82444      6.846111      0 \r\n 2012          265           12.43196      18.81333      6.891111      0 \r\n 2012          266           19.41694      15.38556      2.497222      0 \r\n 2012          267           19.22581      16.92167      0.4105555     0 \r\n 2012          268           16.03342      24.16889      0.1438889     0 \r\n 2012          269           17.34578      28.95889      6.936111      0 \r\n 2012          270           16.60291      22.80222      7.398334      0 \r\n 2012          271           17.81874      22.18722      2.868889      0 \r\n 2012          272           12.49393      23.52722      3.308333      0 \r\n 2012          273           16.82265      27.46         5.555         0 \r\n 2012          274           15.04261      26.15667      8.136666      0 \r\n 2012          275           13.79703      23.285        8.114445      0 \r\n 2012          276           17.15955      24.07111      6.273889      0 \r\n 2012          277           16.93922      25.37556      6.464445      0 \r\n 2012          278           9.211244      15.82222      5.37          4.318 \r\n 2012          279           5.451961      9.264444     -0.4066667     0.508 \r\n 2012          280           11.04605      6.248333     -2.360556      0 \r\n 2012          281           18.03748      12.03056     -4.189445      0 \r\n 2012          282           15.89334      18.78222      1.970556      0 \r\n 2012          283           5.654969      14.44833      1.935556      0.254 \r\n 2012          284           13.71561      13.6         -2.651111      0 \r\n 2012          285           11.12509      17.39167      2.773889      0 \r\n 2012          286           12.06749      13.75        -1.301111      1.778 \r\n 2012          287           5.509993      22.93722      9.717778      47.752 \r\n 2012          288           11.09145      17.94056      7.166111      21.844 \r\n 2012          289           14.92609      20.33333      3.137222      0 \r\n 2012          290           11.1686       20.13556      9.171111      0 \r\n 2012          291           4.703067      16.26944      8.681666      1.524 \r\n 2012          292           2.849555      9.722777      6.821667      8.382 \r\n 2012          293           4.080362      9.536111      4.549445      2.286 \r\n 2012          294           11.63809      15.60722      4.073889      0 \r\n 2012          295           13.24893      24.63445      5.407778      0 \r\n 2012          296           7.217484      24.76833      14.73389      10.16 \r\n 2012          297           5.988015      24.63222      13.59611      0.254 \r\n 2012          298           6.824648      25.91611      13.46889      0 \r\n 2012          299           3.924006      14.40556      1.851667      2.032 \r\n 2012          300           8.103948      6.352778     -2.091667      0 \r\n 2012          301           11.57922      7.265        -3.049444      0 \r\n 2012          302           12.87852      9.572222     -3.158333      0 \r\n 2012          303           10.78782      11.64222     -0.2716667     0 \r\n 2012          304           9.264882      11.67        -1.245         0 \r\n 2012          305           11.56897      12.73167     -2.131667      0 \r\n 2012          306           9.623283      15.27056      1.136667      0 \r\n 2012          307           6.678375      10.26444      3.333334E-02                0 \r\n 2012          308           10.64581      11.56944     -1.383333      0 \r\n 2012          309           5.942033      11.47833      1.046111      5.588 \r\n 2012          310           2.694036      7.618333      2.443333      5.08 \r\n 2012          311           7.329741      10.68278      2.607778      2.032 \r\n 2012          312           7.621282      8.900556     -0.1816667     0 \r\n 2012          313           10.97187      16.075        1.118333      0 \r\n 2012          314           7.218822      16.99055      5.142778      0 \r\n 2012          315           6.62733       24.08167      11.91056      0 \r\n 2012          316           3.051977      17.83333     -4.852778      29.972 \r\n 2012          317           11.00697      2.74         -6.442778      0 \r\n 2012          318           10.10934      9.463889     -7.138889      0 \r\n 2012          319           10.37239      13.58611      1.096111      0 \r\n 2012          320           7.370995      14.27389     -0.545         0 \r\n 2012          321           8.679122      13.15389     -3.407778      0 \r\n 2012          322           9.484166      15.67222      0.2494444     0 \r\n 2012          323           7.422416      16.43389      2.786111      0 \r\n 2012          324           8.050644      16.28389      3.627222      0.508 \r\n 2012          325           8.339674      14.19778      1.507222      0 \r\n 2012          326           7.81839       21.28167      4.141111      0 \r\n 2012          327           5.530118      18.685        2.618333      0 \r\n 2012          328           8.199092      3.517778     -7.599444      0 \r\n 2012          329           6.08454       2.560555     -9.126667      0 \r\n 2012          330           4.937622      5.113889     -3.493333      0 \r\n 2012          331           4.688172     -0.1633333    -9.522223      0 \r\n 2012          332           8.409715      2.653333     -12.56667      0 \r\n 2012          333           9.332287      7.961667     -8.372778      0 \r\n 2012          334           6.484322      11.55833     -2.433889      0 \r\n 2012          335           6.123451      10.415       -2.716111      0 \r\n 2012          336           1.797823      14.70778      0.4405555     0 \r\n 2012          337           6.065336      14.69722      2.076667      0 \r\n 2012          338           4.936785      19.70611      3.962222      0 \r\n 2012          339           8.858323      14.65611     -2.411667      0 \r\n 2012          340           6.015086      8.607223     -5.193333      0 \r\n 2012          341           2.134091      9.498333      3.418889      0 \r\n 2012          342           3.75627       6.687778     -0.8555555     0.76 \r\n 2012          343           4.779927      4.188889     -5.366111      0.76 \r\n 2012          344           3.057249      2.222778     -7.379445      1.78 \r\n 2012          345           7.983449     -2.768889     -12.11         1.27 \r\n 2012          346           7.988636      5.213333     -9.752778      0 \r\n 2012          347           8.536992      10.24222     -4.009444      0 \r\n 2012          348           6.302652      11.03556     -2.683333      0 \r\n 2012          349           5.194059      11.22833     -3.915555      0 \r\n 2012          350           1.698495      9.176666      2.286667      9.14 \r\n 2012          351           2.557135      3.734444     -2.865556      1.27 \r\n 2012          352           2.503162      1.366111     -5.633889      0 \r\n 2012          353           4.062162      4.005556     -2.291667      0 \r\n 2012          354           2.104134      2.168889     -1.450556      0 \r\n 2012          355           5.140755     -1.777778E-02               -10.09944      15.24 \r\n 2012          356           7.579149     -4.786111     -12.96667      0.76 \r\n 2012          357           7.338485      0.3272222    -12.11389      0 \r\n 2012          358           6.631347     -4.325555     -11.39222      0 \r\n 2012          359           4.823608     -6.401667     -12.93389      0 \r\n 2012          360           6.711638     -9.825556     -16.28056      0 \r\n 2012          361           6.571641     -6.242222     -15.71833      0 \r\n 2012          362           4.163666     -3.861111     -14.11111      0 \r\n 2012          363           3.318289     -2.603889     -8.007222      0 \r\n 2012          364           6.498672     -3.663889     -13.66667      0.76 \r\n 2012          365           5.812497      3.243333     -13.63389      0 \r\n 2012          366           3.898275     -1.51         -12.29722      0 \r\n 2013          1             9.089782     -9.012777     -18.35944      0 \r\n 2013          2             6.943055     -1.453889     -15.13056      0 \r\n 2013          3             8.377121     -1.383333     -13.04833      0 \r\n 2013          4             7.665088      1.01         -11.56222      0 \r\n 2013          5             6.832598      3.626667     -8.976111      0 \r\n 2013          6             9.165554     -1.675556     -11.04833      0 \r\n 2013          7             7.36112       6.2          -7.646111      0 \r\n 2013          8             7.990938      7.011111     -4.848333      0 \r\n 2013          9             7.772952      7.745555     -4.162778      0 \r\n 2013          10            2.464376      4.268333     -1.492778      0 \r\n 2013          11            2.71186       10.26556      1.022778      0 \r\n 2013          12            4.422488      6.711111     -9.922222      0 \r\n 2013          13            8.513603     -6.763333     -13.35111      0 \r\n 2013          14            9.797589     -1.67         -14.99222      0 \r\n 2013          15            9.644873      0.5377778    -11.61889      0 \r\n 2013          16            8.192356      8.019444     -7.523334      0 \r\n 2013          17            9.180282      2.688333     -9.213889      0 \r\n 2013          18            8.118508      12.54833     -4.066111      0 \r\n 2013          19            7.618018      11.43389     -7.168334      0 \r\n 2013          20            4.714029     -7.109445     -13.29833      0 \r\n 2013          21            6.925189     -12.34278     -18.01611      0 \r\n 2013          22            7.289574     -8.041667     -17.44944      0 \r\n 2013          23            9.8788       -1.021667     -14.29944      0 \r\n 2013          24            6.05793      -6.592778     -16.70389      0 \r\n 2013          25            8.850122      3.622222     -11.41111      0 \r\n 2013          26            9.407138      2.189445     -12.66778      0 \r\n 2013          27            1.036168      4.522222     -1.043889      0 \r\n 2013          28            3.633678      10.38944      0.2666667     0 \r\n 2013          29            1.174533      13.47        -0.5105556     0 \r\n 2013          30            7.885208     -0.4888889    -10.50722      0 \r\n 2013          31            10.44247     -9.575556     -18.95833      0 \r\n 2013          32            7.485636     -5.414444     -21.09778      0 \r\n 2013          33            7.559525     -6.888889E-02               -9.601111      0 \r\n 2013          34            10.6197       0.6316667    -8.563334      0 \r\n 2013          35            8.444358     -0.2333333    -9.232223      0 \r\n 2013          36            10.89091      5.967222     -6.833333      0 \r\n 2013          37            7.920312      7.385556     -6.173333      0 \r\n 2013          38            2.882274      4.596667     -2.202778      0 \r\n 2013          39            3.65418      -0.6561111    -4.042778      0 \r\n 2013          40            7.745839      3.369444     -2.99          0 \r\n 2013          41            3.959361      8.681666     -0.5405555     0 \r\n 2013          42            7.255349      1.69         -4.370555      0 \r\n 2013          43            12.52798      6.842222     -6.455555      0 \r\n 2013          44            12.73681      9.700556     -4.318889      0 \r\n 2013          45            7.16192       5.563334     -4.264444      0 \r\n 2013          46            10.32469     -1.525        -10.11778      0 \r\n 2013          47            11.91971     -0.4227778    -11.58056      0 \r\n 2013          48            12.8627       7.496111     -7.738333      0 \r\n 2013          49            5.358282      7.217778     -9.147223      0 \r\n 2013          50            15.3998      -5.532778     -14.75889      0 \r\n 2013          51            8.834976     -4.04         -16.85444      0 \r\n 2013          52            3.108963     -3.884444     -9.43          0 \r\n 2013          53            11.07764     -3.014444     -8.406111      9.65 \r\n 2013          54            15.57247     -1.122778     -15.83278      0 \r\n 2013          55            14.61266      2.781111     -12.555        0 \r\n 2013          56            9.823112      3.406111     -4.301667      0 \r\n 2013          57            5.238451      0.3033333    -1.992778      4.32 \r\n 2013          58            10.27754      0.38         -3.829444      7.62 \r\n 2013          59            8.801462      0.175        -4.528333      1.78 \r\n 2013          60            8.303357     -1.715        -5.693889      0 \r\n 2013          61            15.95539      5.111111E-02               -10.35444      0 \r\n 2013          62            13.24742      1.341667     -8.573889      0 \r\n 2013          63            10.96505      2.563333     -2.851111      0 \r\n 2013          64            7.780441     -0.1755556    -4.141111      2.03 \r\n 2013          65            14.724       -0.4111111    -10.13         0 \r\n 2013          66            15.8392       2.029444     -12.90611      0 \r\n 2013          67            11.13216      6.900556     -5.575555      0 \r\n 2013          68            1.87439       6.195556      2.436667      3.81 \r\n 2013          69            2.48676       4.492778     -1.911111      32.51 \r\n 2013          70            11.25178     -0.26         -5.337222      12.19 \r\n 2013          71            11.82566      1.255556     -7.483333      0 \r\n 2013          72            18.07275      1.179444     -8.722777      0 \r\n 2013          73            17.61246      10.88556     -3.613889      0 \r\n 2013          74            9.75144       12.70389     -1.347222      0 \r\n 2013          75            6.964644      2.077222     -3.384444      0 \r\n 2013          76            16.04786      4.2          -5.398889      0 \r\n 2013          77            14.5343       2.415        -7.657222      3.56 \r\n 2013          78            17.82258      2.466111     -8.676666      0 \r\n 2013          79            19.08829     -2.275        -10.33222      0 \r\n 2013          80            14.94542      0.3144445    -10.99389      0 \r\n 2013          81            10.10168      2.851111     -6.697778      0 \r\n 2013          82            10.24586      3.600556     -3.461667      0 \r\n 2013          83            6.949164     -0.7944444    -3.644444      3.56 \r\n 2013          84            11.43952      1.082778     -3.665555      4.57 \r\n 2013          85            19.96032      4.096111     -6.402778      0 \r\n 2013          86            19.08603      8.373889     -3.541667      0 \r\n 2013          87            16.36442      12.92556     -3.223333      0 \r\n 2013          88            17.06453      16.32444     -0.4605556     0 \r\n 2013          89            10.73196      15.01556      4.171667      0 \r\n 2013          90            19.92442      11.26944     -0.81          1.78 \r\n 2013          91            22.56992      3.937778     -5.293334      0.762 \r\n 2013          92            22.42139      7.835        -6.658889      0 \r\n 2013          93            18.42391      9.602222     -4.097222      0 \r\n 2013          94            21.90014      16.55333     -3.526111      0 \r\n 2013          95            14.09021      16.14889      0.1238889     0 \r\n 2013          96            13.8859       19.93056      6.480556      0 \r\n 2013          97            15.28223      20.12444      1.782222      0.254 \r\n 2013          98            16.60948      22.91167      7.157778      10.414 \r\n 2013          99            5.29163       15.36611      3.972222      7.366 \r\n 2013          100           3.530124      5.072222      1.813889      34.544 \r\n 2013          101           5.899566      5.619444      0.9972222     1.524 \r\n 2013          102           6.558127      5.181667     -9.555556E-02                0 \r\n 2013          103           18.64215      11.00444     -1.706111      0 \r\n 2013          104           10.14754      21.47445      4.62          4.826 \r\n 2013          105           8.613977      9.462222      2.262222      0.254 \r\n 2013          106           13.07107      10.45056      0.4422222     0 \r\n 2013          107           9.168734      8.033334      3.974444      87.884 \r\n 2013          108           5.266401      7.302778      0.62          19.05 \r\n 2013          109           14.91199      5.49         -1.511111      0 \r\n 2013          110           16.97143      8.976666     -3.668333      0 \r\n 2013          111           15.04642      19.03222      4.250556      0 \r\n 2013          112           9.356135      17.83111      3.293889      3.302 \r\n 2013          113           8.568581      6.589445     -0.3488889     5.842 \r\n 2013          114           25.33793      12.81722     -3.058889      1.27 \r\n 2013          115           25.40818      16.71389     -0.3911111     0 \r\n 2013          116           16.72144      19.42         7.511111      0 \r\n 2013          117           19.15862      19.03         5.947222      0 \r\n 2013          118           23.98403      24.49333      6.303333      0 \r\n 2013          119           21.45107      27.36778      11.54389      0 \r\n 2013          120           21.94115      29.03222      14.37111      0 \r\n 2013          121           10.219        17.40556      3.551667      0 \r\n 2013          122           9.231955      4.439445      0.3511111     24.384 \r\n 2013          123           6.257298      3.815556      0.565         16.002 \r\n 2013          124           7.681364      11.11278      2.527778      3.302 \r\n 2013          125           13.0337       15.96167      6.586111      0 \r\n 2013          126           21.31459      22.07         8.042778      0 \r\n 2013          127           23.6104       24.84889      8.458889      0 \r\n 2013          128           14.14037      23.79278      11.7          0.762 \r\n 2013          129           11.00597      20.40333      11.98056      4.318 \r\n 2013          130           15.11742      19.00833      8.475555      0 \r\n 2013          131           27.8651       14.71278      4.707222      0 \r\n 2013          132           27.73636      16.785        1.05          0 \r\n 2013          133           25.67491      24.85056      4.586111      0 \r\n 2013          134           26.64668      35.82444      16.95111      0 \r\n 2013          135           23.14242      28.69778      14.86889      0 \r\n 2013          136           18.02337      28.905        13.91333      18.288 \r\n 2013          137           17.16507      27.655        16.30556      0 \r\n 2013          138           21.07033      29.33722      15.94611      0 \r\n 2013          139           15.11022      29.80889      15.97278      23.368 \r\n 2013          140           23.3112       25.30278      14.88222      4.826 \r\n 2013          141           19.0503       21.67667      13.205        0 \r\n 2013          142           11.36086      17.52667      11.845        0 \r\n 2013          143           22.40486      21.35333      9.88          0 \r\n 2013          144           21.75257      22.22278      6.441667      0.508 \r\n 2013          145           8.855561      19.01111      11.56056      24.638 \r\n 2013          146           10.68087      18.54         12.26167      10.922 \r\n 2013          147           12.16569      23.60889      13.88667      17.526 \r\n 2013          148           18.39943      26.80111      16.83111      43.688 \r\n 2013          149           10.42331      26.08         16.95667      0.762 \r\n 2013          150           13.35177      23.38389      16.32889      5.334 \r\n 2013          151           18.83733      25.70167      15.755        1.016 \r\n 2013          152           12.20322      20.24167      13.37944      0 \r\n 2013          153           19.15075      19.03889      9.241667      0 \r\n 2013          154           28.23254      22.76444      8.272778      0 \r\n 2013          155           9.240029      19.87444      13.26667      7.62 \r\n 2013          156           12.63162      21.01722      12.87944      2.286 \r\n 2013          157           21.49174      21.77111      11.925        0 \r\n 2013          158           16.33078      21.63111      11.08333      0 \r\n 2013          159           12.48054      23.58722      11.28667      0.254 \r\n 2013          160           10.08913      21.95944      14.27833      9.652 \r\n 2013          161           20.89569      25.94333      13.04722      0 \r\n 2013          162           16.7478       32.56556      17.31056      0 \r\n 2013          163           22.97907      31.805        18.385        0.254 \r\n 2013          164           24.41623      28.56722      15.36444      0 \r\n 2013          165           11.32354      26.87222      16.14333      9.144 \r\n 2013          166           12.94207      27.91111      18.12389      20.574 \r\n 2013          167           24.04382      29.74333      17.75333      0 \r\n 2013          168           26.30234      31.51667      16.11889      0 \r\n 2013          169           23.58935      28.23722      17.03778      0 \r\n 2013          170           25.46274      29.76889      16.52389      0 \r\n 2013          171           25.1917       32.14056      19.08389      0 \r\n 2013          172           15.2052       31.72333      21.71944      0 \r\n 2013          173           23.94503      33.19889      21.32667      0.254 \r\n 2013          174           12.99768      28.31556      18.96167      15.24 \r\n 2013          175           10.06193      25.43611      19.62611      18.034 \r\n 2013          176           14.90826      30.83278      20.605        0 \r\n 2013          177           20.72222      31.97667      20.64         0.508 \r\n 2013          178           11.4419       28.52611      19.53555      0 \r\n 2013          179           23.44722      28.47278      18.80944      0 \r\n 2013          180           19.61652      25.25611      16.97222      1.524 \r\n 2013          181           23.75617      26.10611      14.09111      0 \r\n 2013          182           27.07491      27.84444      13.27611      0 \r\n 2013          183           25.23211      28.53111      13.15833      3.048 \r\n 2013          184           18.89934      28.02833      13.69389      0 \r\n 2013          185           21.33083      29.74333      15.485        0 \r\n 2013          186           19.85823      31.20222      17.30833      0 \r\n 2013          187           24.56845      31.87278      19.49222      0 \r\n 2013          188           22.93526      32.83833      21.28222      0 \r\n 2013          189           17.65615      31.97         23.68389      0.508 \r\n 2013          190           18.67052      33.84167      23.01611      1.778 \r\n 2013          191           27.13358      28.43278      18.03944      0 \r\n 2013          192           27.04684      28.81889      15.87389      0 \r\n 2013          193           20.83427      30.15889      16.36722      0 \r\n 2013          194           13.24362      27.02222      18.46389      0 \r\n 2013          195           26.38589      30.05944      17.69778      0 \r\n 2013          196           23.25438      31.49944      18.42444      0 \r\n 2013          197           23.94579      32.74166      20.95778      0 \r\n 2013          198           25.07785      34.09333      21.28778      0.254 \r\n 2013          199           25.32056      33.83722      21.99389      0 \r\n 2013          200           18.59688      34.14556      21.10333      0 \r\n 2013          201           22.29043      30.54556      16.67722      0 \r\n 2013          202           17.86263      28.95833      18.36         37.592 \r\n 2013          203           23.21062      33.21333      17.56111      0.508 \r\n 2013          204           17.13356      25.92111      16.13833      0 \r\n 2013          205           23.6601       26.445        13.04         0 \r\n 2013          206           19.65543      28.62222      15.44167      0 \r\n 2013          207           17.44962      25.24333      14.65167      9.398 \r\n 2013          208           25.05697      21.01444      11.40889      0 \r\n 2013          209           24.72518      23.715        9.698889      0 \r\n 2013          210           14.69919      22.25         11.27278      0.254 \r\n 2013          211           6.570763      21.86611      17.57278      5.334 \r\n 2013          212           19.19029      28.465        17.04611      0 \r\n 2013          213           23.36638      29.45555      14.69722      0 \r\n 2013          214           14.1364       28.27278      17.72889      0 \r\n 2013          215           22.04838      26.67667      14.74556      0 \r\n 2013          216           21.02979      25.79556      13.35389      0 \r\n 2013          217           14.70902      27.70389      16.61167      0 \r\n 2013          218           19.71379      30.75889      18.76944      1.524 \r\n 2013          219           23.57073      27.48278      17.13722      4.826 \r\n 2013          220           15.84493      25.31389      13.84556      0 \r\n 2013          221           15.2044       26.89056      16.83833      1.27 \r\n 2013          222           21.85676      27.415        13.60778      0 \r\n 2013          223           19.0413       28.86222      16.69389      0 \r\n 2013          224           20.11165      28.19833      17.03333      0.508 \r\n 2013          225           20.62879      25.96445      14.16889      0 \r\n 2013          226           17.96798      23.67667      12.15389      0 \r\n 2013          227           14.33719      20.86056      14.10278      2.794 \r\n 2013          228           18.22952      23.91167      13.73333      0 \r\n 2013          229           23.26112      26.02944      12.69944      0 \r\n 2013          230           23.4399       26.72         12.50944      0 \r\n 2013          231           20.13136      28.63889      16.24833      0 \r\n 2013          232           21.27723      30.78833      19.78389      0 \r\n 2013          233           19.03904      31.63111      21.04222      0 \r\n 2013          234           14.07234      29.83167      20.13389      0 \r\n 2013          235           19.81153      30.28444      18.71         0 \r\n 2013          236           16.90353      31.44333      21.42833      0 \r\n 2013          237           21.37158      33.09167      21.79         0 \r\n 2013          238           21.46861      33.53         22.39         0 \r\n 2013          239           20.93469      34.495        22.655        0 \r\n 2013          240           20.14709      34.05889      21.81         0 \r\n 2013          241           20.36098      33.62833      21.33167      0 \r\n 2013          242           20.21131      36.16778      21.44444      0 \r\n 2013          243           17.56657      32.89778      19.64167      0 \r\n 2013          244           19.75007      27.93556      16.32778      9.144 \r\n 2013          245           21.35049      25.96889      12.74778      0 \r\n 2013          246           21.13267      28.08         9.756111      0 \r\n 2013          247           14.88726      29.38778      15.37667      0 \r\n 2013          248           18.3245       28.94611      16.09056      0 \r\n 2013          249           19.0864       30.43444      18.96611      0 \r\n 2013          250           14.88981      33.51611      21.25444      0 \r\n 2013          251           13.34504      30.62722      19.59889      0 \r\n 2013          252           18.98231      35.96         20.34833      0 \r\n 2013          253           18.83026      35.14389      20.49833      0 \r\n 2013          254           11.42186      30.88944      19.92556      1.778 \r\n 2013          255           19.29719      27.07333      14.57         0.254 \r\n 2013          256           19.81304      24.44278      11.16722      0 \r\n 2013          257           16.66081      24.71445      8.39          0 \r\n 2013          258           5.074481      21.005        11.68389      7.62 \r\n 2013          259           8.852424      19.95778      9.972222      0 \r\n 2013          260           5.327278      20.85056      12.78111      2.032 \r\n 2013          261           17.44356      31.97         18.37333      0 \r\n 2013          262           7.574965      28.28778      15.55         18.288 \r\n 2013          263           16.9406       22.57389      8.604445      0 \r\n 2013          264           19.74815      23.86778      6.293334      0 \r\n 2013          265           19.09615      25.93556      10.59611      0 \r\n 2013          266           18.95971      25.08889      9.976666      0 \r\n 2013          267           12.57183      21.10944      12.66444      7.112 \r\n 2013          268           17.0939       26.30722      10.34611      0 \r\n 2013          269           17.29356      29.62056      15.065        0 \r\n 2013          270           12.02775      30.62889      18.51778      0 \r\n 2013          271           10.05043      21.695        8.400556      3.81 \r\n 2013          272           17.92271      24.39444      6.123333      0 \r\n 2013          273           16.2199       25.91055      9.39          0 \r\n 2013          274           17.20892      28.35944      12.61167      0 \r\n 2013          275           14.46413      29.24889      13.13833      0 \r\n 2013          276           11.28726      27.01056      16.03111      16.764 \r\n 2013          277           5.471375      26.075        14.025        5.334 \r\n 2013          278           12.06724      17.86         5.165         2.54 \r\n 2013          279           3.609453      10.00889      4.736111      3.81 \r\n 2013          280           16.44919      23.83889      4.648889      0 \r\n 2013          281           16.02472      25.35611      7.900556      0 \r\n 2013          282           15.811        24.84444      9.202222      0 \r\n 2013          283           12.05486      26.18         9.408334      0 \r\n 2013          284           6.565491      24.64778      11.01889      0.508 \r\n 2013          285           15.64573      19.42056      5.552778      3.048 \r\n 2013          286           15.31595      20.09444      2.263889      0 \r\n 2013          287           6.166045      17.69889      4.598889      0.762 \r\n 2013          288           5.449409      14.63333      7.227222      2.54 \r\n 2013          289           8.276035      11.86056      4.406111      0.254 \r\n 2013          290           12.81706      16.39944      1.967778      0.254 \r\n 2013          291           7.366936      10.74722      1.432222      0 \r\n 2013          292           11.52207      14.72889      0.1255556     0 \r\n 2013          293           7.339531      17.11667      3.556667      0 \r\n 2013          294           12.50769      10.69056     -2.217222      0 \r\n 2013          295           4.617337      6.158889      0.4277778     0.508 \r\n 2013          296           5.401335      6.426111     -1.921111      2.54 \r\n 2013          297           9.138651      9.133333     -2.066111      0 \r\n 2013          298           9.644204      14.50278     -3.428889      0 \r\n 2013          299           12.79421      11.18611     -1.76          0 \r\n 2013          300           12.96467      17.75222     -3.959445      0 \r\n 2013          301           9.661568      12.925        1.295556      0 \r\n 2013          302           4.674239      13.29333      4.092222      0.254 \r\n 2013          303           4.145842      14.455        7.93          26.67 \r\n 2013          304           6.696701      13.535        3.756111      3.556 \r\n 2013          305           7.174054      14.33056      3.988889      0.762 \r\n 2013          306           11.78624      12.95944      2.085556      0 \r\n 2013          307           8.827152      13.54833      1.245         0 \r\n 2013          308           5.247531      12.83278      5.027778      4.318 \r\n 2013          309           6.019542      10.34722      1.964444      9.652 \r\n 2013          310           6.791553      6.384444     -0.9983333     3.048 \r\n 2013          311           8.722845      8.029445     -2.351111      0 \r\n 2013          312           6.636995      16.11222     -3.183333      0 \r\n 2013          313           10.90631      13.83389      1.469444      0 \r\n 2013          314           8.851043      10.435       -3.777222      0 \r\n 2013          315           2.481321      8.230556     -9.140555      1.778 \r\n 2013          316           11.33303     -0.545        -12.84056      0 \r\n 2013          317           10.8815       10.18667     -6.468333      0 \r\n 2013          318           7.847343      11.75611      0.2172222     0 \r\n 2013          319           7.28267       13.10389     -1.620556      0 \r\n 2013          320           4.970634      18.485        5.556667      1.524 \r\n 2013          321           7.337941      12.36111      3.442222      7.62 \r\n 2013          322           9.866416      10.24222     -2.242778      0 \r\n 2013          323           9.356051      14.37111     -0.2716667     0 \r\n 2013          324           5.223054      9.466666      2.626111      11.938 \r\n 2013          325           1.263945      3.743333     -5.817778      11.684 \r\n 2013          326           8.626488     -3.273333     -11.16389      0.762 \r\n 2013          327           9.795078     -7            -14.39389      0 \r\n 2013          328           9.590607     -2.233333     -14.61389      0 \r\n 2013          329           7.359363      4.182778     -4.353889      0.254 \r\n 2013          330           9.092167     -0.6822222    -9.604445      0 \r\n 2013          331           9.316471     -1.962778     -13.46167      0 \r\n 2013          332           7.105227      0.5205556    -9.492778      0 \r\n 2013          333           6.456749      5.020555     -10.36         0 \r\n 2013          334           8.825939      10.79889     -3.048333      0 \r\n 2013          335           6.157551      6.187222     -5.150556      0 \r\n 2013          336           6.153576      11.59833     -0.7916667     0 \r\n 2013          337           3.841163      6.68          1.18          0 \r\n 2013          338           1.13014       2.143889     -9.536667      0 \r\n 2013          339           6.062658     -9.272223     -14.92833      0 \r\n 2013          340           8.296203     -11.84722     -18.84556      0 \r\n 2013          341           7.21422      -10.72833     -21.07222      0 \r\n 2013          342           4.362196     -8.127778     -13.38944      0 \r\n 2013          343           8.674227     -10.45278     -20.58167      2.29 \r\n 2013          344           7.874372     -4.197222     -13.52389      0 \r\n 2013          345           9.074594     -6.395555     -19.67         0 \r\n 2013          346           7.814038     -0.65         -14.72         0 \r\n 2013          347           6.755403     -0.6438889    -9.408889      0 \r\n 2013          348           5.244853     -5.65         -11.99389      0 \r\n 2013          349           4.147725     -5.392222     -11.94167      0 \r\n 2013          350           5.743293      1.665556     -11.64111      0 \r\n 2013          351           8.481344      2.739444     -7.310555      0 \r\n 2013          352           6.648962      9.227777     -6.574444      0 \r\n 2013          353           3.775976      3.813333     -5.568333      0 \r\n 2013          354           1.377164     -5.293334     -9.043333      1.27 \r\n 2013          355           2.500149     -4.700555     -9.549444      0 \r\n 2013          356           6.737704     -5.904444     -16.57611      14.73 \r\n 2013          357           8.589459     -14.14        -21.61444      0 \r\n 2013          358           4.405334     -6.633889     -23.75333      0 \r\n 2013          359           5.27845       2.466667     -9.325556      0 \r\n 2013          360           5.516981      3.484444     -5.897222      0 \r\n 2013          361           7.90253       7.956666     -6.704444      0 \r\n 2013          362           6.587164      11.30111     -7.551667      0 \r\n 2013          363           8.357289     -9.163333     -19.41889      0 \r\n 2013          364           4.363577     -7.786667     -18.37111      0 \r\n 2013          365           5.853541     -5.413333     -15.76111      0 \r\n 2014          1             4.19969      -12.61944     -17.095        0 \r\n 2014          2             8.577785     -13.89333     -22.66055      3.56 \r\n 2014          3             8.250011     -0.2311111    -23.34556      0 \r\n 2014          4             3.962206      1.879444     -13.75556      0 \r\n 2014          5             6.98933      -12.41944     -24.10167      0 \r\n 2014          6             5.17594       3.5          -9.5           0 \r\n 2014          7             4.36975       2.5          -9             0 \r\n 2014          8             5.825        -8.57         -15.93         0 \r\n 2014          9             5.209        -4.352        -15.85         0 \r\n 2014          10            1.896         1.48         -4.098         0 \r\n 2014          11            9.84          2.693        -5.466         0.51 \r\n 2014          12            7.933         9.11         -2.244         0 \r\n 2014          13            9.04          4.452        -1.19          0 \r\n 2014          14            6.823         3.684        -8.09          0.25 \r\n 2014          15            9.45         -1.778        -10.25         0 \r\n 2014          16            4.682         3.825        -13.28         0 \r\n 2014          17            10.96        -5.344        -15.24         0.76 \r\n 2014          18            2.434         3.644        -10.66         0 \r\n 2014          19            11.01         9.22         -9.71          0 \r\n 2014          20            8.51          7.4          -13.01         0 \r\n 2014          21            8.72         -9.97         -20.8          2.03 \r\n 2014          22            6.924        -5.852        -19.72         0 \r\n 2014          23            11.79        -12.68        -22.13         0 \r\n 2014          24            7.447         5.18         -15.97         0 \r\n 2014          25            11.4          4.856        -7.474         0 \r\n 2014          26            5.903         8.66         -15.75         0 \r\n 2014          27            12.11        -13.61        -19.66         0 \r\n 2014          28            11.99        -7.962        -21.66         0 \r\n 2014          29            12.47         3.218        -17.68         0 \r\n 2014          30            5.915         4.614        -10.5          0 \r\n 2014          31            5.019        -8.97         -13.25         0 \r\n 2014          32            6.16         -3.915        -11.38         3.56 \r\n 2014          33            10.43        -5.294        -20.68         0 \r\n 2014          34            12.05        -4.291        -19.21         0 \r\n 2014          35            3.632        -6.988        -13            0 \r\n 2014          36            12.69        -13.29        -22.05         4.06 \r\n 2014          37            13.89        -13.43        -24.66         0 \r\n 2014          38            13.24        -9.65         -22.62         0 \r\n 2014          39            5.921        -6.054        -12.55         0 \r\n 2014          40            10.03        -8.5          -19.58         1.02 \r\n 2014          41            14.7         -13.02        -25.01         0 \r\n 2014          42            14.69        -9.77         -27.03         0 \r\n 2014          43            8.35         -2.264        -12.85         0 \r\n 2014          44            14.78         7.5          -6.186         0.76 \r\n 2014          45            11.44        -6.298        -16.38         6.1 \r\n 2014          46            8.11          1.338        -18.13         0.76 \r\n 2014          47            11.63        -3.074        -6.502         1.02 \r\n 2014          48            13.88         6.714        -5.304         3.05 \r\n 2014          49            14.27         10.93        -0.391         2.79 \r\n 2014          50            11.72         8.38         -2.102         0 \r\n 2014          51            2.045         2.744        -3.135         12.19 \r\n 2014          52            14.05         6.038        -5.538         5.33 \r\n 2014          53            11.98         3.28         -5.628         0 \r\n 2014          54            12.92        -2.386        -8.41          0 \r\n 2014          55            6.88         -3.713        -9.61          0 \r\n 2014          56            12.06        -9.71         -16.18         3.3 \r\n 2014          57            17.79        -3.824        -20.54         0 \r\n 2014          58            17.18        -6.521        -17.85         0 \r\n 2014          59            15.71         7.4          -15.28         0 \r\n 2014          60            5.396        -6.684        -18.34         0.25 \r\n 2014          61            14.51        -16.89        -21.68         2.54 \r\n 2014          62            17.85        -8.79         -23.64         0 \r\n 2014          63            17.18         0.084        -13.74         0 \r\n 2014          64            7.352        -3.895        -6.612         0 \r\n 2014          65            16.26         2.674        -7.576         2.54 \r\n 2014          66            10.39         8.31         -3.48          0 \r\n 2014          67            11.66         2.683        -5.507         0 \r\n 2014          68            17.78         12.57        -6.886         0 \r\n 2014          69            15.24         19.29         3.784         0 \r\n 2014          70            10.83         9.45          0.226         0 \r\n 2014          71            15.45         3.159        -3.064         1.02 \r\n 2014          72            19.84         16.84        -2.872         0 \r\n 2014          73            20.32         13.55         0.126         0 \r\n 2014          74            19.75         13.76        -1.09          0 \r\n 2014          75            18.16         0.368        -6.764         1.27 \r\n 2014          76            17.36         6.269        -8.46          0 \r\n 2014          77            8.97          11.87         0.408         0 \r\n 2014          78            10.49         6.714        -0.633         0 \r\n 2014          79            20.67         15.11        -2.446         0 \r\n 2014          80            19            15.41        -1.798         0 \r\n 2014          81            17.16         1.622        -6.582         0 \r\n 2014          82            22.03         1.642        -10.6          0 \r\n 2014          83            11            2.845        -5.162         0 \r\n 2014          84            22.04         0.954        -6.186         0.76 \r\n 2014          85            17.64         11.55        -6.784         0 \r\n 2014          86            3.759         13.18         1.228         2.03 \r\n 2014          87            5.389         3.542         0.327         3.05 \r\n 2014          88            22.93         12.22        -1.898         0 \r\n 2014          89            18.89         20.49         1.46          0 \r\n 2014          90            18.55         23.87        -2.021         0 \r\n 2014          91            18.41         9.97         -4.787         0 \r\n 2014          92            5.933         7.5          -0.553         0 \r\n 2014          93            3.921         7.581         3.239         0 \r\n 2014          94            7.531         5.34         -0.948         0 \r\n 2014          95            23.94         13.38        -4.716         0 \r\n 2014          96            14.67         17.47         5.057         0 \r\n 2014          97            15.93         17.52         4.068         0 \r\n 2014          98            19.95         14.49         0.661         0 \r\n 2014          99            23.84         22.34        -2.528         0 \r\n 2014          100           14.3          18.57         7.662         0 \r\n 2014          101           24.73         24.38         3.34          0 \r\n 2014          102           20.45         28.75         11.82         0.508 \r\n 2014          103           16.42         16.42         1.076         1.27 \r\n 2014          104           12.39         3.299        -2.851         0 \r\n 2014          105           26.04         8.18         -4.706         0 \r\n 2014          106           19.92         16.45         3.38          0 \r\n 2014          107           22.03         12.28         0.67          0 \r\n 2014          108           25.27         18.1         -0.604         0 \r\n 2014          109           23.62         24.16         7.772         0 \r\n 2014          110           17.52335      18.1          15.71         0 \r\n 2014          111           11.4267       22.9          9.36          18.8 \r\n 2014          112           26.9333       18.98         3.684         0 \r\n 2014          113           4.94167       11.97         6.047         0.508 \r\n 2014          114           2.46167       12.83         6.704         32 \r\n 2014          115           26.8167       24.34         4.341         0 \r\n 2014          116           23.6167       26.02         10.44         0 \r\n 2014          117           7.69833       21.54         9.39          59.44 \r\n 2014          118           16.0667       20.56         10.04         2.032 \r\n 2014          119           5.845         12.17         2.703         1.016 \r\n 2014          120           13.8          8.1           2.946         3.302 \r\n 2014          121           10.0017       9.78          4.856         0 \r\n 2014          122           24.0333       19.72         5.996         0 \r\n 2014          123           22.8167       21.45         6.057         0 \r\n 2014          124           24.2          19.04         8.11          0 \r\n 2014          125           24.4          20.61         7.248         0 \r\n 2014          126           25.35         24.46         8.55          0 \r\n 2014          127           25.4333       30.63         16.07         0 \r\n 2014          128           11.2917       25.63         13.63         2.54 \r\n 2014          129           21.9          20.54         8.66          0 \r\n 2014          130           20.2242       26.06         9.72          1.524 \r\n 2014          131           11.0767       23.93         14.21         39.12 \r\n 2014          132           4.83833       22.97         9.14          30.23 \r\n 2014          133           13.5686       15.34         6.31          0 \r\n 2014          134           15.6          14.59         3.562         0 \r\n 2014          135           18.8          12.31         2.734         2.794 \r\n 2014          136           22.0667       13.53         1.014         0 \r\n 2014          137           29.7167       17.69         1.298         0 \r\n 2014          138           29.0333       20.45         4.997         0 \r\n 2014          139           19.8833       24.86         12.69         0 \r\n 2014          140           22.3667       27.8          18.43         0 \r\n 2014          141           27.6667       28.8          15.91         2.54 \r\n 2014          142           12.6133       20.88         11.49         3.81 \r\n 2014          143           26.1          26.28         8.33          0 \r\n 2014          144           19            24.14         12.6          0 \r\n 2014          145           16.85         27.65         15.97         8.38 \r\n 2014          146           17.0167       26.92         16.04         0 \r\n 2014          147           15.6333       28.22         17.22         20.83 \r\n 2014          148           25.35         27.46         15.81         0 \r\n 2014          149           25.5833       28.56         18.15         0 \r\n 2014          150           24.0167       29.51         18.59         0.254 \r\n 2014          151           22.9167       29.9          19.63         2.794 \r\n 2014          152           24.5167       30.1          17.52         21.84 \r\n 2014          153           26.4667       28.21         16.89         2.54 \r\n 2014          154           24.0167       29.11         15.33         35.81 \r\n 2014          155           15.467        26.31         16.77         7.112 \r\n 2014          156           14.3667       22.07         14.95         0 \r\n 2014          157           26.15         28.06         13.99         0 \r\n 2014          158           7.76833       20.53         14.71         17.53 \r\n 2014          159           11.9833       20.62         14.54         0 \r\n 2014          160           21.6167       23.73         13.19         0 \r\n 2014          161           10.7383       20.53         15.34         1.27 \r\n 2014          162           29.9333       25.5          14.5          0 \r\n 2014          163           24.3667       29.5          18            0.254 \r\n 2014          164           31.6333       24            8.01          0 \r\n 2014          165           27.7667       26.82         12.46         0 \r\n 2014          166           22.9333       27.84         17.67         0 \r\n 2014          167           22.5667       31.32         15.68         0 \r\n 2014          168           21.35         30.91         16.45         5.08 \r\n 2014          169           18.15         31.47         22.79         0 \r\n 2014          170           12.3583       27.92         18.55         20.83 \r\n 2014          171           15.2167       31.12         22.91         0 \r\n 2014          172           19.633        30.61         19.06         0.254 \r\n 2014          173           14.3333       29.36         18.83         7.62 \r\n 2014          174           16.4          27.28         18.33         1.524 \r\n 2014          175           27.4833       28.39         15.56         0 \r\n 2014          176           28.0833       29.9          15.86         0 \r\n 2014          177           20.7          30.37         18.75         0 \r\n 2014          178           14.4833       28.76         18.94         4.826 \r\n 2014          179           20            29.5          19.55         21.59 \r\n 2014          180           16.1167       28.47         18.53         1.016 \r\n 2014          181           10.04         29.12         17.12         8.64 \r\n 2014          182           27.5667       26.47         15.26         0 \r\n 2014          183           12.11         17.72         12.2          0 \r\n 2014          184           25.0018       25.37         9.78          0 \r\n 2014          185           28.65         26.42         12.04         0 \r\n 2014          186           10.96         24.25         16.56         16 \r\n 2014          187           25.1333       29.72         19.77         0 \r\n 2014          188           25.5333       31.75         19.07         0.254 \r\n 2014          189           28.6          26.36         17.13         0 \r\n 2014          190           28.1333       26.88         14.31         0 \r\n 2014          191           25.2183       27.61         15.46         0 \r\n 2014          192           24.20415      27.02         22.31         0.254 \r\n 2014          193           23.19         32.1          20.83         14.99 \r\n 2014          194           27.46         30.09         18.36         0 \r\n 2014          195           25.04         24.26         12.32         0.508 \r\n 2014          196           17.483        22.42         10.73         0 \r\n 2014          197           20.274        25.34         13.25         0 \r\n 2014          198           19.773        25.11         11.3          0 \r\n 2014          199           21.05         26.21         14.21         0 \r\n 2014          200           23.62         26.66         14.64         0 \r\n 2014          201           26.73         27.79         16.43         0 \r\n 2014          202           26.68         31.91         20.15         0 \r\n 2014          203           18.94         33.43         21.6          0 \r\n 2014          204           27.82         27.56         15.77         0 \r\n 2014          205           20.44         25.85         13.61         0 \r\n 2014          206           18.53         27.32         17.11         0 \r\n 2014          207           13.69         28.71         19.06         2.032 \r\n 2014          208           27.44         26.33         15.89         0 \r\n 2014          209           17.269        24.81         14.17         0 \r\n 2014          210           26.98         26.31         11.66         0 \r\n 2014          211           24.97         28.1          11.5          0 \r\n 2014          212           24.73         28.51         12.14         0 \r\n 2014          213           23.79         29.46         14.47         0 \r\n 2014          214           24.08         29.36         13.94         0 \r\n 2014          215           26.45         29.89         17.53         0.254 \r\n 2014          216           19.16         29.13         17.99         0.762 \r\n 2014          217           13.61         28.37         16.84         0 \r\n 2014          218           9.8           23.84         18.7          16 \r\n 2014          219           6.206         22.42         19.08         0.254 \r\n 2014          220           10.99         25.09         17.79         0 \r\n 2014          221           10.68         25.47         17.59         2.032 \r\n 2014          222           9.77          24.88         16.44         0 \r\n 2014          223           23.92         25.74         15.71         0 \r\n 2014          224           24.29         25.13         12.46         0 \r\n 2014          225           26.36         28.74         10.87         0 \r\n 2014          226           24.27         29.56         12.68         0 \r\n 2014          227           4.672         21.07         17.51         27.18 \r\n 2014          228           9.19          22.86         17.23         85.1 \r\n 2014          229           20.14         27.79         17.47         0 \r\n 2014          230           16.63         28.21         16.95         0 \r\n 2014          231           23.73         29.9          20.02         0 \r\n 2014          232           15.62         29.42         17.99         31.5 \r\n 2014          233           16.15         30.56         22.47         4.318 \r\n 2014          234           18.37         31.72         22.27         8.64 \r\n 2014          235           20.1          31.48         20.18         51.82 \r\n 2014          236           23.53         32.21         21.11         0 \r\n 2014          237           22.63         33.14         22.1          0 \r\n 2014          238           19.42         27.21         18.75         0 \r\n 2014          239           9.02          24.82         18.11         9.14 \r\n 2014          240           11.7          28.12         19.59         24.89 \r\n 2014          241           13.94         28.5          18.18         16 \r\n 2014          242           19.72         29.79         17.07         0 \r\n 2014          243           19.07         30.38         17.65         12.45 \r\n 2014          244           18.9          26.51         16.73         0.254 \r\n 2014          245           23.83         26.09         14.99         0 \r\n 2014          246           21.12         27.91         15.5          0 \r\n 2014          247           22.31         32.08         23.01         0 \r\n 2014          248           5.909         23.05         12.57         8.13 \r\n 2014          249           23.84         22.44         9.38          0 \r\n 2014          250           23.75         23.55         8.63          0 \r\n 2014          251           18.95         26.42         10.84         0 \r\n 2014          252           6.584         26.2          18.49         67.82 \r\n 2014          253           9             22.15         10.71         26.16 \r\n 2014          254           8.17          12.52         8.76          0 \r\n 2014          255           6.12          10.9          3.159         2.286 \r\n 2014          256           22.57         16.36         1.794         0 \r\n 2014          257           20.58         21.22         5.572         0 \r\n 2014          258           8.69          17.75         5.824         2.794 \r\n 2014          259           21.9          19.95         3.966         0 \r\n 2014          260           19.83         23.94         11.17         0 \r\n 2014          261           18.72         22.15         9.78          0 \r\n 2014          262           18.84         25.01         11.41         0 \r\n 2014          263           13.99         27.19         15.12         0 \r\n 2014          264           19.08         21.74         7.944         0 \r\n 2014          265           20.37         23.45         5.835         0 \r\n 2014          266           12.88         22.89         9.68          0 \r\n 2014          267           5.521         19.32         13.65         2.54 \r\n 2014          268           16.55         26.57         14.11         0 \r\n 2014          269           16.88         27.81         13.49         0 \r\n 2014          270           17.69         27.86         15.79         0.254 \r\n 2014          271           15.26         29.24         14.1          0 \r\n 2014          272           17.58         29.2          12.2          0 \r\n 2014          273           12.05         22.83         14.05         0 \r\n 2014          274           5.601         21.01         14.96         9.65 \r\n 2014          275           2.721         20.12         11.35         10.92 \r\n 2014          276           7.819         11.4          3.714         0 \r\n 2014          277           17.78         11.69         0.499         0 \r\n 2014          278           17.4          20.32         4.512         0 \r\n 2014          279           17.05         20.13         8.17          0.254 \r\n 2014          280           18.18         21.93         8.79          0 \r\n 2014          281           17.76         22.8          4.956         0 \r\n 2014          282           10.59         17.51         9.11          1.778 \r\n 2014          283           11.96         14.18         1.4           0 \r\n 2014          284           17.02         16.91        -0.401         0 \r\n 2014          285           4.046         11.91         3.32          0.508 \r\n 2014          286           1.561         12.63         10.8          50.04 \r\n 2014          287           2.852         14.18         9.15          13.46 \r\n 2014          288           16.97         20.03         4.614         0 \r\n 2014          289           15.58         24.7          3.492         0 \r\n 2014          290           12.84         18.22         7.49          0 \r\n 2014          291           13.19         14.16         2.744         0 \r\n 2014          292           14.98         19.56         2.208         0 \r\n 2014          293           15.59         22.07         6.875         0 \r\n 2014          294           15.3          19.65         3.966         0 \r\n 2014          295           12.11         18.87         4.976         0 \r\n 2014          296           5.508         18.86         10.65         0 \r\n 2014          297           4.348         18.4          9.48          0.254 \r\n 2014          298           14.49         23.71         9.27          0.254 \r\n 2014          299           13.72         23.26         7.975         0 \r\n 2014          300           10.71         25.01         10.2          0 \r\n 2014          301           14.23         14.86         3.876         0 \r\n 2014          302           14.04         12.8          0.772         0 \r\n 2014          303           13.12         17.47         2.916         0 \r\n 2014          304           14.23         7.076        -5.224         0 \r\n 2014          305           14.18         9.17         -6.896         0 \r\n 2014          306           11.61         15.95         3.704         0 \r\n 2014          307           8.81          18.83         6.652         0.254 \r\n 2014          308           7.787         14.88         4.149         0 \r\n 2014          309           6.016         17.34         3.017         1.016 \r\n 2014          310           12.11         9.64         -2.486         0 \r\n 2014          311           10.75         13.47        -3.317         0 \r\n 2014          312           12.3          10.67         0.195         0 \r\n 2014          313           8.45          15.77         2.502         0 \r\n 2014          314           10.54         19.49        -1.16          0 \r\n 2014          315           4.909        -1.13         -6.794         0 \r\n 2014          316           8.93         -3.116        -8.88          0 \r\n 2014          317           4.842        -3.56         -10.34         0 \r\n 2014          318           11.91        -0.604        -13.35         0 \r\n 2014          319           2.855        -1.98         -9.8           0 \r\n 2014          320           9.1          -3.601        -13.71         0 \r\n 2014          321           11.36        -8.37         -13.98         0 \r\n 2014          322           10.62        -3.196        -16.07         0 \r\n 2014          323           4.318        -1.272        -6.146         0 \r\n 2014          324           11.51        -1.404        -11.31         0 \r\n 2014          325           8.21          2.512        -11.39         1.524 \r\n 2014          326           2.6           12.39         1.954         0 \r\n 2014          327           2.3305        11.7          0.823         9.65 \r\n 2014          328           2.061         1.562        -4.361         0 \r\n 2014          329           10.77         2.674        -9.59          0 \r\n 2014          330           2.595        -0.057        -5.284         1.016 \r\n 2014          331           9.05         -5.284        -13.67         0 \r\n 2014          332           10            8.11         -9.14          0.762 \r\n 2014          333           7.758         16.95         2.693         0 \r\n 2014          334           9.69          6.875        -10.85         0 \r\n 2014          335           5.522        -7.373        -13.11         0 \r\n 2014          336           7.646         1.642        -13.14         0 \r\n 2014          337           7.612         2.45         -7.09          0 \r\n 2014          338           2.302         0.975        -5.73          0 \r\n 2014          339           2.78          5.592        -0.461         0 \r\n 2014          340           5.703         5.3          -3.327         0 \r\n 2014          341           3.854         2.502        -3.58          0 \r\n 2014          342           7.506         8.76         -0.988         0 \r\n 2014          343           6.969         2.37         -5.973         0 \r\n 2014          344           1.859         0.508        -6.856         0 \r\n 2014          345           3.93          2.572        -1.849         0 \r\n 2014          346           4.714         10.04         0.064         0 \r\n 2014          347           4.265         12.5          3.734         0 \r\n 2014          348           2.28          13.57         8.59          0 \r\n 2014          349           1.577         10.79         0.54          1.78 \r\n 2014          350           4.717         0.54         -6.531         4.32 \r\n 2014          351           8.22          0.104        -9.71          0 \r\n 2014          352           4.756        -1.494        -5.812         0 \r\n 2014          353           2.355         0.044        -2.902         0.76 \r\n 2014          354           1.599         2.37         -0.907         0 \r\n 2014          355           1.523         5.088         2.278         0 \r\n 2014          356           1.614         4.714         2.906         1.27 \r\n 2014          357           1.836         4.896         0.53          5.84 \r\n 2014          358           1.641         1.48         -1.13          1.27 \r\n 2014          359           8.11          9.55         -1.91          0 \r\n 2014          360           3.869         5.937         0.631         0 \r\n 2014          361           3.251         0.772        -7.88          0 \r\n 2014          362           9.32          2.734        -10.3          0 \r\n 2014          363           3.268        -1.98         -13.12         0 \r\n 2014          364           8.29         -9.89         -17.13         0 \r\n 2014          365           9.57         -5.67         -18.79         0 \r\n 2015          1             6.991         1.126        -11.33         0 \r\n 2015          2             6.793         3.927        -11.03         0 \r\n 2015          3             4.878         4.532        -8.41          0 \r\n 2015          4             9.69         -8.41         -17.26         2.54 \r\n 2015          5             3.096        -10.22        -18.85         0 \r\n 2015          6             7.606        -10.05        -17.5          2.54 \r\n 2015          7             10.54        -12.87        -24.34         0 \r\n 2015          8             4.343        -4.108        -22.35         0 \r\n 2015          9             10           -11.23        -18.45         0 \r\n 2015          10            9.26          0.792        -18.89         0 \r\n 2015          11            5.94          0.631        -9.02          0 \r\n 2015          12            10.74        -7.232        -19.46         0 \r\n 2015          13            10.48        -3.713        -22.66         0 \r\n 2015          14            9.2           1.551        -8.25          0 \r\n 2015          15            10.53         7.097        -8             0 \r\n 2015          16            10.66         14.05        -6.492         0 \r\n 2015          17            5.59          9.8           1.137         0 \r\n 2015          18            8.31          12.22        -2.061         0 \r\n 2015          19            7.599         12.65        -5.446         0 \r\n 2015          20            10.42         9.77         -1.778         0.25 \r\n 2015          21            4.397         3.724        -4.777         0 \r\n 2015          22            3.262        -0.846        -5.812         0 \r\n 2015          23            9.28          7.157        -7.272         0 \r\n 2015          24            9.83          12.08        -3.764         0 \r\n 2015          25            2.19          4.814        -1.232         3.05 \r\n 2015          26            10.37         10.95        -1.677         0.76 \r\n 2015          27            11.78         8.38         -3.024         0 \r\n 2015          28            9.86          11.65        -2.72          0 \r\n 2015          29            3.649         4.422        -4.27          0 \r\n 2015          30            12.35         2.592        -10.43         0 \r\n 2015          31            1.775         3.179        -3.014         0 \r\n 2015          32            5.606         0.327        -13.69         25.91 \r\n 2015          33            13           -9.59         -21.27         3.05 \r\n 2015          34            8.56          0.145        -14.81         0 \r\n 2015          35            7.468        -7.536        -20.21         0.51 \r\n 2015          36            12.77        -8.44         -27.38         4.57 \r\n 2015          37            13.34         4.047        -9.1           0 \r\n 2015          38            13.87         7.248        -4.148         0 \r\n 2015          39            9.35          6.29         -0.178         0 \r\n 2015          40            3.053        -0.078        -2.061         0 \r\n 2015          41            9.76          2.784        -6.136         0 \r\n 2015          42            10.26         2.997        -9.08          0 \r\n 2015          43            13.58        -6.582        -16.46         0 \r\n 2015          44            14.47         2.512        -9.83          0 \r\n 2015          45            13.33         1.734        -15.57         0 \r\n 2015          46            5.911        -10.93        -15.87         0 \r\n 2015          47            6.456        -3.895        -12.74         0 \r\n 2015          48            9.58         -4.058        -12.72         0 \r\n 2015          49            15.13        -11.33        -18.28         0 \r\n 2015          50            14.39        -6.886        -20.64         0 \r\n 2015          51            13.86         3.29         -10.35         0 \r\n 2015          52            11.43         1.814        -9.24          0 \r\n 2015          53            13.95        -8.99         -16.81         0 \r\n 2015          54            16.94        -7.201        -20.94         0 \r\n 2015          55            9.91          4.614        -12.45         0 \r\n 2015          56            5.414         3.846        -11.54         0 \r\n 2015          57            17.89        -11.52        -21.6          3.81 \r\n 2015          58            18.05        -7.536        -24.14         0 \r\n 2015          59            12.45        -4.614        -18.42         0 \r\n 2015          60            14.39         1.5          -8.55          0.76 \r\n 2015          61            10.88         1.814        -9.2           0 \r\n 2015          62            3.478         2.026        -8.84          0.25 \r\n 2015          63            15.93        -2.021        -12.1          0.51 \r\n 2015          64            18.82        -4.068        -17.17         0 \r\n 2015          65            18.05         13.02        -9.53          0 \r\n 2015          66            18.55         12.68        -0.958         0 \r\n 2015          67            17.87         11.94        -0.704         0 \r\n 2015          68            18.61         14.29        -3.723         0 \r\n 2015          69            18.46         19.99         0.53          0 \r\n 2015          70            19.41         18.63        -0.24          0 \r\n 2015          71            18.76         21.63         2.906         0 \r\n 2015          72            16.82         23.44         4.452         0 \r\n 2015          73            18.32         18.21         1.298         0 \r\n 2015          74            14.65         21.89         1.662         0 \r\n 2015          75            20.02         28.62         7.722         0 \r\n 2015          76            20.83         9.56          0.934         0 \r\n 2015          77            17.12         11.15         0.772         0 \r\n 2015          78            6.519         7.097        -0.422         0 \r\n 2015          79            20.18         17.87        -1.404         0 \r\n 2015          80            20.96         15.66         3.866         0 \r\n 2015          81            20.32         18.55         1.035         0 \r\n 2015          82            12.12         6.905        -0.502         0 \r\n 2015          83            1.827         2.067        -0.786         0 \r\n 2015          84            8.97          10.16         0.346         8.89 \r\n 2015          85            20.73         9.05         -2.568         0 \r\n 2015          86            20.47         4.966        -5.112         0 \r\n 2015          87            20.39         9.42         -1.272         0 \r\n 2015          88            16.01         15.69         0.934         0.25 \r\n 2015          89            22.73         22.55        -0.057         0 \r\n 2015          90            23.18         24            4.088         0 \r\n 2015          91            22.96         26.68         9.62          0 \r\n 2015          92            18.64         19.22         7.884         10.41 \r\n 2015          93            21.34         10.52        -1.515         0.254 \r\n 2015          94            23.76         18.2         -2.325         0 \r\n 2015          95            23.08         20.57         4.734         0 \r\n 2015          96            5.675         13.41         8.19          2.54 \r\n 2015          97            4.97          12.02         8.17          0 \r\n 2015          98            5.975         13.55         6.724         1.016 \r\n 2015          99            8.29          24.03         2.976         0.508 \r\n 2015          100           25.09         15.24         1.884         0 \r\n 2015          101           23.85         22.05         0.479         0 \r\n 2015          102           15.8          21.24         10.93         6.604 \r\n 2015          103           20.33         18.42         5.078         6.35 \r\n 2015          104           20.12         20.15         3.29          0.254 \r\n 2015          105           19.02         21.13         7.864         0 \r\n 2015          106           15.29         22.81         9.32          0 \r\n 2015          107           20.92         27.24         11.33         0 \r\n 2015          108           7.539         23.39         12.93         15.24 \r\n 2015          109           9.68          20.9          7.289         10.16 \r\n 2015          110           13.994        12.38         2.916         0 \r\n 2015          111           22.23         15.39         1.156         0 \r\n 2015          112           26.67         12.98        -0.614         0 \r\n 2015          113           25.55         18.33        -2.446         0 \r\n 2015          114           7.732         17.43         9.22          0.254 \r\n 2015          115           2.952         12.4          6.753         4.572 \r\n 2015          116           27.15         16.01         3.966         0 \r\n 2015          117           27.17         18.94         0.165         0 \r\n 2015          118           26.81         22.9          2.683         0 \r\n 2015          119           25.22         22.8          6.4           0 \r\n 2015          120           26.53         22.43         4.189         0 \r\n 2015          121           19.93         22.55         5.906         0.254 \r\n 2015          122           7.595         17.77         10.89         4.318 \r\n 2015          123           19.82         28.11         13.05         0.762 \r\n 2015          124           13.8          24.31         14.96         12.95 \r\n 2015          125           19.98         26.68         14.25         0.508 \r\n 2015          126           16.29         23.54         16.17         0 \r\n 2015          127           16.5          25.9          17.98         0 \r\n 2015          128           13            19.74         11            0 \r\n 2015          129           22.25         23.02         10.5          0 \r\n 2015          130           7.821         23.25         15.34         6.604 \r\n 2015          131           11.07         15.34         7.419         0 \r\n 2015          132           26.91         20.11         5.078         0 \r\n 2015          133           24.78         21.48         6.542         0 \r\n 2015          134           4.026         16.89         11.74         10.16 \r\n 2015          135           16            23.69         12.67         4.064 \r\n 2015          136           19.54         25.78         16.79         2.032 \r\n 2015          137           20.53         25.37         15.55         5.842 \r\n 2015          138           28.67         15.92         4.38          0 \r\n 2015          139           18.696        14.38         2.976         0 \r\n 2015          140           5.353         10.46         6.016         10.16 \r\n 2015          141           29.24         23.07         3.098         0 \r\n 2015          142           20.29         24.54         8.82          0 \r\n 2015          143           16.929        23.4          10.64         0 \r\n 2015          144           7.52          22.05         14.61         17.53 \r\n 2015          145           23.12         25.84         15.31         5.334 \r\n 2015          146           9.423         22.53         14.15         45.97 \r\n 2015          147           28.04         27.64         12.66         0 \r\n 2015          148           14.62         24.42         15.38         6.604 \r\n 2015          149           12.84         22.71         15.38         0 \r\n 2015          150           8.83          18.27         12.59         0.254 \r\n 2015          151           29.61         20.46         8.55          0 \r\n 2015          152           28.55         21.83         9.76          0 \r\n 2015          153           15.475        22.3          10.44         0 \r\n 2015          154           13.71         24.16         15.07         16.51 \r\n 2015          155           13.86         27.81         16.06         0 \r\n 2015          156           20.59         29.4          17.22         1.524 \r\n 2015          157           16.77         26.38         17.09         0 \r\n 2015          158           15.37         30.22         17.76         2.032 \r\n 2015          159           28.14         30.32         15.63         0 \r\n 2015          160           28.49         33.4          16.62         0 \r\n 2015          161           25.98         34.6          20.54         1.016 \r\n 2015          162           4.81          25.13         19.51         12.45 \r\n 2015          163           7.863         20.3          18.15         0.254 \r\n 2015          164           11.97         25.8          17.11         5.842 \r\n 2015          165           18.3          29.96         18.64         5.588 \r\n 2015          166           11.87         27.69         16.76         34.54 \r\n 2015          167           28.66         26.89         13.62         0 \r\n 2015          168           19.66         29.54         19.92         0 \r\n 2015          169           20.81         25.69         17.99         0 \r\n 2015          170           29.45         27.27         15.52         0 \r\n 2015          171           24.66         34.31         16.58         2.286 \r\n 2015          172           18.22         28.5          17.97         0 \r\n 2015          173           15.24         31.94         19.55         4.572 \r\n 2015          174           23.61         26.36         14.89         0 \r\n 2015          175           12.04         27.55         17.07         66.29 \r\n 2015          176           14.75         26            18.23         3.048 \r\n 2015          177           12.57         24.06         15.89         6.096 \r\n 2015          178           26.71         27.81         14.55         0 \r\n 2015          179           20.151        29.38         17.2          2.286 \r\n 2015          180           24.32         28.25         17.22         0 \r\n 2015          181           16.87         27.22         17.27         0 \r\n 2015          182           14.58         26.41         17.38         0.508 \r\n 2015          183           16.08         21.75         14.61         0 \r\n 2015          184           27.63         26.56         13.54         0 \r\n 2015          185           26.72         27.89         12.62         0 \r\n 2015          186           22.19         30.2          16.73         0 \r\n 2015          187           6.297         26.54         18.23         6.858 \r\n 2015          188           21.236        23.34         14.13         0 \r\n 2015          189           9.67          18.83         13.02         0.254 \r\n 2015          190           25.69         27.26         12.24         0 \r\n 2015          191           24.51         26.47         14.49         0 \r\n 2015          192           19.92         31.64         19.24         58.42 \r\n 2015          193           27.66         33.1          22.68         0 \r\n 2015          194           24.37         34.79         21.27         0 \r\n 2015          195           26.74         32.4          20.51         0 \r\n 2015          196           11.02         27.66         20.1          0.508 \r\n 2015          197           15.355        31.59         20.52         75.95 \r\n 2015          198           27.87         34.08         23.28         0 \r\n 2015          199           21.56         31.43         23.41         0 \r\n 2015          200           16.9          28.75         19.7          2.032 \r\n 2015          201           17.87         29.51         17.01         5.08 \r\n 2015          202           28.36         28.39         14.27         0 \r\n 2015          203           23.79         27.92         14.83         0 \r\n 2015          204           25.78         29.45         17.06         0 \r\n 2015          205           24.69         31.73         19.58         0 \r\n 2015          206           18.03         32.19         20.93         2.032 \r\n 2015          207           22.21         33.62         20.7          19.05 \r\n 2015          208           8.01          31.55         21.41         35.31 \r\n 2015          209           17.98         33.02         19.91         39.62 \r\n 2015          210           25.49         29.14         17.27         0 \r\n 2015          211           27.72         30.53         15.3          0 \r\n 2015          212           25.01         32.06         18.8          0 \r\n 2015          213           22.11         32.24         18.86         0 \r\n 2015          214           22.87         32.49         18.23         12.45 \r\n 2015          215           24.19         28.64         17.19         0 \r\n 2015          216           12.41         24.51         16.16         0 \r\n 2015          217           17.39         27.16         17.84         0 \r\n 2015          218           19.72         28.21         16.83         0 \r\n 2015          219           22.48         31.45         18.78         0 \r\n 2015          220           13.79         28.86         19.74         3.556 \r\n 2015          221           20.18         31.98         20.8          13.46 \r\n 2015          222           23.88         28.6          17.17         7.112 \r\n 2015          223           23.98         29.11         15.33         0 \r\n 2015          224           25.53         29.8          15.38         0 \r\n 2015          225           21.8          30.69         16.31         0 \r\n 2015          226           23.94         31.19         18.53         0 \r\n 2015          227           25            30.46         18.07         0 \r\n 2015          228           22.56         30.39         17.65         0 \r\n 2015          229           10.37         27.69         19.31         0 \r\n 2015          230           6.588         24.67         13.87         25.4 \r\n 2015          231           11.22         18.8          12.17         1.524 \r\n 2015          232           25.11         27.2          10.16         0 \r\n 2015          233           24.22         26.99         14.83         0 \r\n 2015          234           19            27.93         17.09         4.318 \r\n 2015          235           25.54         23.17         11.08         3.556 \r\n 2015          236           25.61         24.85         9.11          0 \r\n 2015          237           25.38         24.66         8.87          0 \r\n 2015          238           22.11         26.07         8.18          0 \r\n 2015          239           11.8          23.83         12.06         0 \r\n 2015          240           10.22         24.49         16.4          0 \r\n 2015          241           9.98          23.44         16.67         0 \r\n 2015          242           15.16         26.76         14.15         0 \r\n 2015          243           19.69         30.82         18.59         0 \r\n 2015          244           20.88         32.14         20.36         0 \r\n 2015          245           16.84         30.45         20.41         6.858 \r\n 2015          246           19.28         32.02         21.27         0.762 \r\n 2015          247           20.07         32.38         19.34         0 \r\n 2015          248           20.44         32.68         20.72         0 \r\n 2015          249           21.74         33.18         21.83         0 \r\n 2015          250           17.79         30.04         20.11         31.75 \r\n 2015          251           16.28         28.45         18.42         14.22 \r\n 2015          252           22.05         29.05         16.24         4.826 \r\n 2015          253           21.19         29.82         16.54         0.762 \r\n 2015          254           21.48         21.67         8.63          0 \r\n 2015          255           21.91         21.59         7.419         0 \r\n 2015          256           21.57         23.05         7.076         0 \r\n 2015          257           20.49         27.53         14.74         0 \r\n 2015          258           20.21         27.89         17.46         0 \r\n 2015          259           20.12         29.86         17.41         0 \r\n 2015          260           13.75         30.45         21.04         0.254 \r\n 2015          261           3.442         21.82         11.24         8.38 \r\n 2015          262           21.35         22.22         8.65          9.65 \r\n 2015          263           20.87         23.37         7.45          4.572 \r\n 2015          264           19.23         25.08         10.61         0.762 \r\n 2015          265           17.36         29.1          15.98         0 \r\n 2015          266           10.01         27.3          17.91         0 \r\n 2015          267           10.47         27.76         16.4          0 \r\n 2015          268           15.59         26.82         14.33         0 \r\n 2015          269           18.99         26.65         11.52         0 \r\n 2015          270           18.33         26.4          13.17         0 \r\n 2015          271           18.47         29.88         13.65         0 \r\n 2015          272           10.66         21.75         9.41          1.27 \r\n 2015          273           19.43         19.12         4.927         0 \r\n 2015          274           18.33         18.77         3.886         0 \r\n 2015          275           19.34         18.18         3.603         0 \r\n 2015          276           18.61         17.52         3.825         0 \r\n 2015          277           4.894         12.8          3.784         0 \r\n 2015          278           12.58         20.53         10.42         0 \r\n 2015          279           10.6          23.93         10.91         0 \r\n 2015          280           16.7          26.81         10.16         0 \r\n 2015          281           15.56         29.3          12.48         0 \r\n 2015          282           12.91         17.33         6.976         0 \r\n 2015          283           16.64         21.13         3.775         0 \r\n 2015          284           16.38         28.24         12.15         0 \r\n 2015          285           16.45         23.53         11.16         0 \r\n 2015          286           16.5          21.6          4.351         0 \r\n 2015          287           16.44         21.37         3.734         0 \r\n 2015          288           11.2          21.44         5.057         0 \r\n 2015          289           16.27         13.27         0.58          0 \r\n 2015          290           15.62         15.02        -0.553         0 \r\n 2015          291           15.03         18.81         1.449         0 \r\n 2015          292           14.31         25.58         11.71         0 \r\n 2015          293           8.15          24.77         12.77         0 \r\n 2015          294           11.56         25.61         14.23         0.508 \r\n 2015          295           11.86         20.83         10.82         0 \r\n 2015          296           2.347         19.4          12.9          3.302 \r\n 2015          297           9.22          16.2          2.936         1.778 \r\n 2015          298           14.9          18.63        -0.138         0 \r\n 2015          299           11.84         17.34         2.067         0 \r\n 2015          300           1.923         10.26         6.794         7.62 \r\n 2015          301           4.69          9.94          0.792         8.64 \r\n 2015          302           10.28         10.63        -0.31          2.54 \r\n 2015          303           7.878         11.66        -2             9.14 \r\n 2015          304           5.06          12.78         5.824         3.302 \r\n 2015          305           13.51         23.47         5.238         0 \r\n 2015          306           13.38         24.72         9.67          0 \r\n 2015          307           13.02         22.12         7.794         0 \r\n 2015          308           4.283         17.35         11.06         0 \r\n 2015          309           7.874         22.72         5.785         7.366 \r\n 2015          310           11.95         13.9          2.067         0 \r\n 2015          311           12.9          12.74        -0.24          0 \r\n 2015          312           12.83         14.43        -0.168         0 \r\n 2015          313           12.71         15.92        -0.866         0 \r\n 2015          314           9.44          17.73        -0.198         0 \r\n 2015          315           3.483         17.35         3.058         2.794 \r\n 2015          316           12.2          12.18         2.532         0 \r\n 2015          317           12.18         12.24        -2.274         0 \r\n 2015          318           11.44         19.44         2.674         0 \r\n 2015          319           7.345         15.68         3.765         0 \r\n 2015          320           1.401         12.98         8.51          7.366 \r\n 2015          321           1.424         14.96         12.18         23.37 \r\n 2015          322           2.211         14.89         4.674         1.524 \r\n 2015          323           11.69         7.359        -1.626         0 \r\n 2015          324           2.518         4.614        -3.986         0.254 \r\n 2015          325           11.62        -1.028        -9.89          0 \r\n 2015          326           11.08         5.624        -9.81          3.048 \r\n 2015          327           10.98         11.62        -2.963         0 \r\n 2015          328           9.51          13.32        -1.262         0 \r\n 2015          329           4.58          13.81         7.984         0 \r\n 2015          330           3.2275        13.23        -0.461         44.96 \r\n 2015          331           1.875        -0.28         -3.034         1.016 \r\n 2015          332           3.177        -0.542        -3.418         0 \r\n 2015          333           2.187         1.49         -1.554         6.858 \r\n 2015          334           1.697         2.855        -0.127         10.41 \r\n 2015          335           2.838         1.258        -1.515         9.4 \r\n 2015          336           1.619         1.966        -0.32          0 \r\n 2015          337           10.22         7.965        -3.642         0 \r\n 2015          338           10.16         10.9         -2.446         0 \r\n 2015          339           8.28          10.07         0.58          0 \r\n 2015          340           4.48          8.95          1.562         0 \r\n 2015          341           7.182         8.62         -1.048         0 \r\n 2015          342           3.133         8.98          0.135         0 \r\n 2015          343           7.371         11.54         1.601         0 \r\n 2015          344           8.52          14.23         4.472         0 \r\n 2015          345           4.882         12.79         1.147         0 \r\n 2015          346           2.608         10.52         2.492         0 \r\n 2015          347           2.63          15.97         8.07          22.86 \r\n 2015          348           2.652         8.37          1.601         45.72 \r\n 2015          349           2.54          7.157         0.67          1.27 \r\n 2015          350           3.052         7.914        -1.838         0 \r\n 2015          351           6.667         1.996        -4.534         0 \r\n 2015          352           9.63          2.492        -8.2           0 \r\n 2015          353           9.18          3.816        -10.13         0 \r\n 2015          354           3.414         10.9          1.844         0 \r\n 2015          355           1.405         10.73        -1.332         13.72 \r\n 2015          356           5.119         6.067        -2.456         0 \r\n 2015          357           2.147         13.53         0.174         2.03 \r\n 2015          358           2.033         3.32         -2.872         21.08 \r\n 2015          359           2.741         1.672        -3.541         0 \r\n 2015          360           1.483         3.078        -0.542         0 \r\n 2015          361           2.309        -0.452        -5.02          0 \r\n 2015          362           2.431        -2.142        -5.02          7.87 \r\n 2015          363           6.36         -3.317        -7.516         17.27 \r\n 2015          364           7.319        -1.382        -7.636         1.02 \r\n 2015          365           9.47         -2.518        -11.4          0 \r\n 2016          1             10.15         1.48         -12.43         0 \r\n 2016          2             10.28         1.48         -13.1          0 \r\n 2016          3             5.153        -3.915        -8.19          0 \r\n 2016          4             9.8           3.906        -9.77          0 \r\n 2016          5             9.27          0.651        -9.43          0 \r\n 2016          6             3.369         1.126        -4.108         0 \r\n 2016          7             2.865         2.713         0.428         0.76 \r\n 2016          8             3.05          2.855        -3.278         7.62 \r\n 2016          9             5.585        -3.236        -19.54         4.57 \r\n 2016          10            10.75        -11.25        -20.97         0 \r\n 2016          11            7.262        -0.34         -12.51         0 \r\n 2016          12            10.58         0.185        -16.03         0 \r\n 2016          13            10.29         5.159        -13.02         0 \r\n 2016          14            8.38          10.67         0.518         0 \r\n 2016          15            3.757         2.936        -10.41         0 \r\n 2016          16            9.55         -3.742        -14.88         0 \r\n 2016          17            11.4         -14.53        -21.62         0.76 \r\n 2016          18            9.75         -9.73         -21.01         0 \r\n 2016          19            4.754        -8.63         -14.55         0 \r\n 2016          20            7.57         -5.952        -13.71         6.86 \r\n 2016          21            9.27         -1.232        -11.09         0 \r\n 2016          22            6.822        -3.48         -10.76         0 \r\n 2016          23            7.084        -4.077        -8.53          0 \r\n 2016          24            9.59          2.612        -6.066         0 \r\n 2016          25            2.695         1.166        -3.905         0 \r\n 2016          26            3.882        -1.716        -3.662         0 \r\n 2016          27            10.58         4.25         -6.358         0 \r\n 2016          28            8.14          4.654        -3.622         0 \r\n 2016          29            11.7          7.46         -4.33          0 \r\n 2016          30            8.07          10.06        -0.806         0 \r\n 2016          31            8.39          8.61          0.165         0 \r\n 2016          32            10.49         9.58         -3.116         0.76 \r\n 2016          33            2.499         2.006        -0.178         6.6 \r\n 2016          34            4.834         1.884        -8.23          7.37 \r\n 2016          35            11.03         3.906        -8.81          0 \r\n 2016          36            6.24         -0.098        -8.77          0 \r\n 2016          37            7.122         2.37         -6.521         0 \r\n 2016          38            10.89         7.722        -1.738         0 \r\n 2016          39            6.937        -1.716        -10.12         0 \r\n 2016          40            13.9         -6.806        -12.55         0 \r\n 2016          41            4.976        -6.004        -11.98         0 \r\n 2016          42            11.06        -3.55         -15.12         1.78 \r\n 2016          43            14.01        -5.052        -15.38         3.05 \r\n 2016          44            8.39         -8.98         -17.58         0 \r\n 2016          45            6.146        -3.925        -9.83          1.27 \r\n 2016          46            8.84          5.18         -8.51          1.02 \r\n 2016          47            5.541         2.309        -0.786         13.72 \r\n 2016          48            8.37          4.532        -1.94          5.59 \r\n 2016          49            10.61         14.36        -0.159         0 \r\n 2016          50            15.67         15.94         6.733         0 \r\n 2016          51            15.34         15.94         2.39          0 \r\n 2016          52            8.77          8.16         -0.856         0 \r\n 2016          53            9.34          7.198        -0.856         0 \r\n 2016          54            11.84         9.86         -2.456         0 \r\n 2016          55            3.05          3.036        -0.856         0 \r\n 2016          56            9.5           2.654        -4.128         0 \r\n 2016          57            16            8.61         -2.851         0 \r\n 2016          58            17.26         19.93        -1.94          0 \r\n 2016          59            12.02         15.16         0.145         0 \r\n 2016          60            14.38         19.07        -2.254         0 \r\n 2016          61            6.77          0.307        -6.684         0 \r\n 2016          62            10.8          4.39         -9.28          0 \r\n 2016          63            7.817         4.28         -2.507         0 \r\n 2016          64            10.43         9.48         -2.486         0 \r\n 2016          65            18.53         10.85        -1.069         0 \r\n 2016          66            11.98         19.24         0.064         0 \r\n 2016          67            8.36          21.55         10.99         0 \r\n 2016          68            9.67          21.55         9.5           0 \r\n 2016          69            15.82         13.44         3.482         1.27 \r\n 2016          70            17.62         17.63         2.249         0 \r\n 2016          71            18.87         20.5          2.532         0 \r\n 2016          72            4.416         13.71         3.603         0 \r\n 2016          73            6.427         14.85         8.97          6.1 \r\n 2016          74            15.58         21.93         9.26          1.52 \r\n 2016          75            3.452         14.96         7.612         5.59 \r\n 2016          76            20.04         14.61         3.562         10.16 \r\n 2016          77            17.58         14.34         1.066         0 \r\n 2016          78            14.58         6.814        -1.171         0 \r\n 2016          79            11.4          5.754        -1.392         0 \r\n 2016          80            18.86         8.28         -1.474         0 \r\n 2016          81            20.95         15.35        -3.004         0 \r\n 2016          82            10.57         19.17         8.09          0 \r\n 2016          83            1.841         10.66         2.936         0 \r\n 2016          84            5.329         3.804        -1.94          6.6 \r\n 2016          85            21.34         12.29        -4.352         0 \r\n 2016          86            4.886         9.39          2.986         0 \r\n 2016          87            10.52         10.14        -0.27          1.52 \r\n 2016          88            22.75         18.25        -3.742         0 \r\n 2016          89            20.01         17.67         4.573         0 \r\n 2016          90            11.4          22.3          9.44          0 \r\n 2016          91            7.099         15.62         2.966         0.25 \r\n 2016          92            11.7          9.9          -1.2           0 \r\n 2016          93            23.02         10.76        -1.11          0 \r\n 2016          94            22.06         28.08        -0.088         0 \r\n 2016          95            23.92         12.92         1.562         0 \r\n 2016          96            14.04         13.36        -0.37          3.556 \r\n 2016          97            10.1          12.43         3.138         9.91 \r\n 2016          98            14.24         10.93         1.5           4.318 \r\n 2016          99            21.83         10.17        -2.771         0 \r\n 2016          100           24.16         10.06        -6.684         0 \r\n 2016          101           5.769         17.1          6.875         0 \r\n 2016          102           24.66         11.23        -0.412         0 \r\n 2016          103           25.49         15.44        -3.257         0 \r\n 2016          104           25.07         21.1          3.179         0 \r\n 2016          105           25.13         22.14         5.522         0 \r\n 2016          106           20.11         24.58         6.37          0 \r\n 2016          107           23.91         26.24         10.52         0 \r\n 2016          108           18.54         25.98         12.03         0 \r\n 2016          109           10.12         23.95         14.08         2.794 \r\n 2016          110           16.61         21.01         10.6          0 \r\n 2016          111           8.31          17.47         9.14          7.112 \r\n 2016          112           11.68         18.53         7.924         5.334 \r\n 2016          113           8.29          15.89         8.24          2.286 \r\n 2016          114           22.68         22.96         5.614         0.508 \r\n 2016          115           22.05         26.5          12.78         2.032 \r\n 2016          116           22.52         25.29         13.64         0.508 \r\n 2016          117           12.09         21.34         10.65         7.366 \r\n 2016          118           3.596         14.34         7.138         7.366 \r\n 2016          119           10.25         13.55         7.258         4.826 \r\n 2016          120           5.889         10.31         7.419         2.032 \r\n 2016          121           3.786         11.11         6.866         1.778 \r\n 2016          122           5.144         9.12          6.36          1.524 \r\n 2016          123           17.48         16.01         5.4           0.508 \r\n 2016          124           22.39         20.16         3.936         0 \r\n 2016          125           27.98         18.79         7.955         0 \r\n 2016          126           24.43         22.46         3.674         0 \r\n 2016          127           27.37         28.69         9.26          0 \r\n 2016          128           15.43         23.67         13.3          0.254 \r\n 2016          129           15.29         20.06         11.74         0 \r\n 2016          130           7.777         19.74         14.01         1.016 \r\n 2016          131           22.76         26.42         14.17         0 \r\n 2016          132           10.41         23.19         12.58         7.112 \r\n 2016          133           27.42         19.95         7.762         0 \r\n 2016          134           12.47         20.96         5.664         8.13 \r\n 2016          135           27.64         14.15         3.552         0 \r\n 2016          136           26.74         19.6          2.916         0 \r\n 2016          137           8.78          14.03         8.31          3.556 \r\n 2016          138           19.7          19.36         5.724         0.508 \r\n 2016          139           19.5          19.87         3.976         0 \r\n 2016          140           28.53         21.8          6.067         0 \r\n 2016          141           16.04         20.18         8.69          0 \r\n 2016          142           20.25         24.32         5.219         0 \r\n 2016          143           27.43         27.12         7.37          0 \r\n 2016          144           15.06         26.45         14.82         0 \r\n 2016          145           24.97         29.21         16.46         0.254 \r\n 2016          146           18.29         28.65         17.57         1.27 \r\n 2016          147           14.22         26.72         16.52         16.76 \r\n 2016          148           17.71         26            16.09         14.99 \r\n 2016          149           15.449        22.79         15.86         3.556 \r\n 2016          150           27.78         28.93         13.5          0 \r\n 2016          151           26.91         30.81         16.62         7.62 \r\n 2016          152           20.21         25.9          15.6          0.254 \r\n 2016          153           28.32         26.29         13.63         0 \r\n 2016          154           29.14         29.13         11.61         0 \r\n 2016          155           27.57         29.05         15.6          3.302 \r\n 2016          156           22.31         27.96         14.92         0.254 \r\n 2016          157           28.41         29.59         13.67         0 \r\n 2016          158           26.91         28.95         13.79         0 \r\n 2016          159           29.91         25            11.33         0 \r\n 2016          160           25.49         28.76         12.8          0 \r\n 2016          161           27.83         33.54         18.71         0 \r\n 2016          162           26.76         33.62         21.81         0 \r\n 2016          163           13.21         30.86         19.61         23.37 \r\n 2016          164           25.19         32.54         21.22         0 \r\n 2016          165           25.64         32.59         20.49         0 \r\n 2016          166           23.35         32.47         20.8          0 \r\n 2016          167           28.59         36.07         18.82         0 \r\n 2016          168           28.45         32.85         19.14         0 \r\n 2016          169           24.86         30.74         18.85         0 \r\n 2016          170           26.06         31.52         18.53         0 \r\n 2016          171           26.88         32.01         17.37         0 \r\n 2016          172           13.11         31.13         18.46         1.27 \r\n 2016          173           23.79         29.87         17.65         8.38 \r\n 2016          174           21.49         34.32         22.9          0 \r\n 2016          175           29.92         28.44         17.79         0 \r\n 2016          176           25.8          31.56         14.73         0 \r\n 2016          177           21.96         33.64         22.67         0 \r\n 2016          178           20.51         32.42         18.94         3.048 \r\n 2016          179           18.864        31.54         16.33         0 \r\n 2016          180           28.14         28.25         16.27         0 \r\n 2016          181           17.43         27.72         15.45         0 \r\n 2016          182           22.17         30.34         15.32         0.254 \r\n 2016          183           29.12         27.18         13.08         0 \r\n 2016          184           5.041         18.34         15.18         12.7 \r\n 2016          185           8.01          19.54         15            0 \r\n 2016          186           13.18         25            16.11         0 \r\n 2016          187           23.11         32.33         17.47         0 \r\n 2016          188           18.27         31.6          21.52         0 \r\n 2016          189           22.94         30.24         18.27         28.96 \r\n 2016          190           26.14         29.9          18.13         0 \r\n 2016          191           25.85         29.65         15.8          0 \r\n 2016          192           18.18         28.54         19.77         0 \r\n 2016          193           26.59         32.82         23.11         0 \r\n 2016          194           22.8          29.7          18.37         21.59 \r\n 2016          195           17.69         29.65         20.78         1.27 \r\n 2016          196           25.96         29.49         17.42         0 \r\n 2016          197           24.42         25.4          13.99         0 \r\n 2016          198           23.7          28.69         14.51         0 \r\n 2016          199           13.2          31.48         19.21         4.826 \r\n 2016          200           14.73         28.4          19.87         17.27 \r\n 2016          201           4.308         26            19.65         43.43 \r\n 2016          202           26.52         33.09         20            0 \r\n 2016          203           25.42         33.68         24.88         0 \r\n 2016          204           19.15         32.46         21.91         0.254 \r\n 2016          205           17.77         32.82         24.86         0 \r\n 2016          206           18.54         31.51         20.99         0 \r\n 2016          207           26.26         29.62         16.54         0 \r\n 2016          208           26.66         30.57         15.34         0 \r\n 2016          209           23.66         31.23         17.25         0 \r\n 2016          210           25.89         27.24         17.05         0 \r\n 2016          211           16.05         24.95         15.99         0 \r\n 2016          212           20.38         30.78         17.07         0 \r\n 2016          213           18.77         29.82         16.97         0 \r\n 2016          214           5.22          24.72         19.15         12.7 \r\n 2016          215           10.13         27.3          19.78         0.508 \r\n 2016          216           24.83         30.66         18.41         0 \r\n 2016          217           23.01         34.24         22.44         0 \r\n 2016          218           24.91         27.09         15.88         0 \r\n 2016          219           23.04         27.32         14.94         0 \r\n 2016          220           13.79         26.27         15.45         0 \r\n 2016          221           13.97         27.23         15.76         0 \r\n 2016          222           20.34         30.61         19.7          0 \r\n 2016          223           22.03         33.43         20.8          0.254 \r\n 2016          224           22.15         33.35         21.39         10.92 \r\n 2016          225           12.301        27.7          19.48         16.26 \r\n 2016          226           26.14         28.87         16.73         0 \r\n 2016          227           21.03         30.45         17.08         0 \r\n 2016          228           14.23         28.4          17.43         0 \r\n 2016          229           22.07         29.34         17.23         0 \r\n 2016          230           22.53         30.93         20.35         0 \r\n 2016          231           24.36         32.51         20.58         0 \r\n 2016          232           21.46         31.32         18.88         29.46 \r\n 2016          233           17.62         23.03         14.48         2.286 \r\n 2016          234           25.36         26.79         12.16         0 \r\n 2016          235           24.97         27.26         13.48         0 \r\n 2016          236           14.5          26.67         15.84         0 \r\n 2016          237           16.1          28.34         17.63         3.556 \r\n 2016          238           10.5          24.1          15.76         3.556 \r\n 2016          239           12.57         24.81         15.31         8.38 \r\n 2016          240           17.88         28.52         18.68         0.254 \r\n 2016          241           17.14         32.29         18.65         1.016 \r\n 2016          242           13.24         31.68         20.09         35.05 \r\n 2016          243           13.26         27.87         20.16         1.778 \r\n 2016          244           20.92         26.62         14.67         0 \r\n 2016          245           20.83         26.1          12.32         0 \r\n 2016          246           22.94         24.63         12.57         0 \r\n 2016          247           17.94         25.46         12.7          0 \r\n 2016          248           17.81         26.67         15.08         0 \r\n 2016          249           21.17         31.22         18.87         0 \r\n 2016          250           21.05         32.51         22.79         0 \r\n 2016          251           8.28          27.66         22.77         11.43 \r\n 2016          252           17.18         31.32         21.92         0.254 \r\n 2016          253           12.87         29.32         17.63         9.65 \r\n 2016          254           21.2          22.21         11.49         0.254 \r\n 2016          255           22.14         24.79         10.74         0 \r\n 2016          256           18.26         28.21         13.66         0 \r\n 2016          257           6.847         23.83         16.22         14.73 \r\n 2016          258           12.92         24.67         15.04         0 \r\n 2016          259           16.45         29.55         16.75         0 \r\n 2016          260           11.79         23.78         14.99         29.46 \r\n 2016          261           20.99         25.86         13.53         0 \r\n 2016          262           19.57         28.34         12.26         0 \r\n 2016          263           19.2          31.73         16.65         0.508 \r\n 2016          264           19.23         31.8          13.92         0 \r\n 2016          265           15.82         33.27         22.2          0 \r\n 2016          266           15.56         31.76         21.73         0 \r\n 2016          267           17.8          31.84         19.94         0 \r\n 2016          268           15.49         31.43         17.95         30.99 \r\n 2016          269           7.534         20.82         11.27         6.35 \r\n 2016          270           20.02         23.29         6.905         0 \r\n 2016          271           19.64         25.72         6.724         0 \r\n 2016          272           10.73         17.28         8.65          0 \r\n 2016          273           19.11         23.75         8.46          0 \r\n 2016          274           8.3           18.53         7.924         0 \r\n 2016          275           6.889         21.57         14.21         0.254 \r\n 2016          276           9.05          22.06         12.64         0 \r\n 2016          277           10.3          22.85         10.01         0.254 \r\n 2016          278           14.38         26.29         14.88         2.286 \r\n 2016          279           16.98         26.71         14.76         0.508 \r\n 2016          280           8.04          24.24         10.89         14.99 \r\n 2016          281           17.75         18            5.643         0.254 \r\n 2016          282           17.38         21.91         5.361         0 \r\n 2016          283           16.11         24.35         4.3           0 \r\n 2016          284           8.2           20.61         9.44          9.65 \r\n 2016          285           16.14         25.26         13.02         0 \r\n 2016          286           4.618         16.98         0.924         0.762 \r\n 2016          287           17.03         15.73        -1.738         0 \r\n 2016          288           9.57          20.1          4.078         0 \r\n 2016          289           3.622         20.81         15.07         0 \r\n 2016          290           12.58         28.58         17.43         0 \r\n 2016          291           13.02         30.85         19.53         0 \r\n 2016          292           14.93         23.75         9.75          0 \r\n 2016          293           11.27         22.31         8.04          0 \r\n 2016          294           10.21         12.18         2.481         0.762 \r\n 2016          295           13.8          16.35        -0.826         0 \r\n 2016          296           14.84         22.5          4.532         0 \r\n 2016          297           14.6          23.21         8.6           0 \r\n 2016          298           14.43         17.99         3.956         0 \r\n 2016          299           6.658         16.15         7.046         0 \r\n 2016          300           2.384         18.37         8.63          25.65 \r\n 2016          301           10.19         16.89         7.52          0 \r\n 2016          302           10.78         26.95         9.78          0 \r\n 2016          303           10.9          26.26         12.84         0 \r\n 2016          304           6.541         15.82         7.409         0 \r\n 2016          305           4.617         19.88         9.42          0 \r\n 2016          306           11.61         24.01         13.75         0 \r\n 2016          307           4.629         18.73         11.33         2.794 \r\n 2016          308           13.24         22.85         6.592         0 \r\n 2016          309           12.88         23.09         3.755         0 \r\n 2016          310           9.66          21.38         8.09          0 \r\n 2016          311           12.83         19.44         5.624         0 \r\n 2016          312           7.598         18.41         5.411         0 \r\n 2016          313           12.38         16.8          4.028         0 \r\n 2016          314           12.67         16.18        -0.907         0 \r\n 2016          315           12.43         20.39         2.734         0 \r\n 2016          316           9.43          12.48         1.986         0 \r\n 2016          317           12.22         12.65        -1.778         0 \r\n 2016          318           12.44         16.63         0.852         0 \r\n 2016          319           11.27         18.01         1.844         0 \r\n 2016          320           10.51         19.15        -0.816         0 \r\n 2016          321           11.12         20.37         1.642         0 \r\n 2016          322           9.43          23.49         14.58         0 \r\n 2016          323           2.963         17.27        -0.36          0 \r\n 2016          324           11.52         6.43         -5.273         0 \r\n 2016          325           10.42         7.118        -7.14          0 \r\n 2016          326           8.02          8.11         -5.822         0 \r\n 2016          327           2.047         5.876         2.37          5.334 \r\n 2016          328           1.812         5.552         2.814         1.27 \r\n 2016          329           1.695         3.229         2.249         0 \r\n 2016          330           6.992         9.62         -0.078         0 \r\n 2016          331           9.93          14.47         1.116         0 \r\n 2016          332           1.404         11.47         1.156         13.46 \r\n 2016          333           6.628         16.41         3.846         0 \r\n 2016          334           9.81          8.71         -1.454         0 \r\n 2016          335           2.382         2.612         0.832         0 \r\n 2016          336           2.431         2.754         0.165         0 \r\n 2016          337           6.363         6.238        -2.072         0 \r\n 2016          338           5.845         4.956        -5.812         0 \r\n 2016          339           3.144         3.34          0.024         6.6 \r\n 2016          340           9.81          8.31         -1.413         6.86 \r\n 2016          341           9.99          2.784        -5.526         0 \r\n 2016          342           6.082        -3.104        -8.96          0 \r\n 2016          343           9.87         -4.463        -11.64         0 \r\n 2016          344           5.133        -5.212        -14.49         0 \r\n 2016          345           3.582        -1.636        -6.338         0 \r\n 2016          346           1.184         1.722        -9.86          0.76 \r\n 2016          347           8.35         -1.392        -13.41         0.25 \r\n 2016          348           8.14         -3.56         -14.15         0 \r\n 2016          349           8.69         -3.804        -13.23         0 \r\n 2016          350           4.33         -9.18         -17.62         0 \r\n 2016          351           1.004        -5.892        -9.22          0 \r\n 2016          352           2.074        -6.217        -19.46         0.76 \r\n 2016          353           10.22        -14.94        -27.26         2.29 \r\n 2016          354           9.75         -4.938        -18.89         0 \r\n 2016          355           7.481         1.562        -8.25          0 \r\n 2016          356           8.45          8.33         -5.608         0 \r\n 2016          357           8.57          6.854        -6.258         0 \r\n 2016          358           2.167         3.442        -2.578         0 \r\n 2016          359           2.613         3.482        -3.014         0.51 \r\n 2016          360           6.0865        12.93         1.076         0 \r\n 2016          361           9.56          8.33         -2.184         12.45 \r\n 2016          362           9.48          7.178        -4.473         0 \r\n 2016          363           4.161         7.318        -2.669         0 \r\n 2016          364           9.68          5.906        -1.616         0 \r\n 2016          365           8.25          8.72         -7.181         0 \r\n 2016          366           6.031         5.3          -7.739         0 \r\n 2017          1             6.397         4.38         -9.18          0 \r\n 2017          2             1.502         3.804        -0.482         0 \r\n 2017          3             7.23          1.783        -12.15         7.62 \r\n 2017          4             7.897        -8.61         -14.73         0 \r\n 2017          5             7.022        -11.07        -18.11         0.76 \r\n 2017          6             9.6          -11.14        -21.29         0 \r\n 2017          7             10.16        -4.068        -16.46         0 \r\n 2017          8             4.061        -5.254        -18.86         0 \r\n 2017          9             3.088         3.936        -10.93         0 \r\n 2017          10            2.58          7.278        -4.696         0 \r\n 2017          11            2.963         6.39         -10.49         2.79 \r\n 2017          12            5.922        -4.168        -11.42         0 \r\n 2017          13            6.994        -2.648        -11.57         0 \r\n 2017          14            7.542         2.239        -6.745         0 \r\n 2017          15            1.838        -0.886        -5.162         0 \r\n 2017          16            1.696         1.582        -1.434         6.86 \r\n 2017          17            2.8           2.401        -0.36          20.57 \r\n 2017          18            8.8           5.946        -1.474         0 \r\n 2017          19            2.199         4.775        -0.584         0 \r\n 2017          20            2.111         6.189         1.5           1.02 \r\n 2017          21            2.982         7.016        -2.426         0 \r\n 2017          22            3.403         2.674        -3.317         0 \r\n 2017          23            1.517         1.744        -1.302         0 \r\n 2017          24            3.033         1.925        -1.879         0 \r\n 2017          25            2.251         1.622        -3.034         0 \r\n 2017          26            4.146        -1.494        -5.77          1.27 \r\n 2017          27            11.6          1.056        -6.978         0 \r\n 2017          28            6.028         0.661        -4.777         0 \r\n 2017          29            7.766         4.038        -2.436         0 \r\n 2017          30            9.72          11.23        -3.439         0 \r\n 2017          31            5.993         6.41          1.116         0 \r\n 2017          32            7.788         2.471        -5.628         0 \r\n 2017          33            8.53         -4.665        -9.86          0 \r\n 2017          34            13.08         0.286        -9.06          0 \r\n 2017          35            8.95          6.41         -8.26          0 \r\n 2017          36            9.21          4.876        -3.622         0 \r\n 2017          37            10.05         13.96        -4.614         0 \r\n 2017          38            1.728         7.5          -5.314         0 \r\n 2017          39            10.32        -4.938        -13.69         0 \r\n 2017          40            10.2         -4.808        -15.53         3.3 \r\n 2017          41            10.3          15.04        -6.906         0 \r\n 2017          42            8.72          14.52         0.842         0 \r\n 2017          43            14.69         9.02         -2.892         0 \r\n 2017          44            10.12         9.67         -6.054         0 \r\n 2017          45            13.79         11.9         -1.302         0 \r\n 2017          46            15.06         7.299        -4.928         0 \r\n 2017          47            13.84         18.44        -1.464         0 \r\n 2017          48            15.13         23.09         4.228         0 \r\n 2017          49            15.43         20.45        -0.057         0 \r\n 2017          50            12.96         22.27         4.047         0 \r\n 2017          51            2.641         17.18         11            0 \r\n 2017          52            16.17         20.58         2.249         0.76 \r\n 2017          53            16.01         24.34         6.652         0 \r\n 2017          54            7.683         10.89         3.502         0 \r\n 2017          55            4.271         4.986        -5.77          1.02 \r\n 2017          56            16.21         1.277        -9.12          1.78 \r\n 2017          57            14.62         10.55        -2.386         0 \r\n 2017          58            13.65         13.04        -2.73          0 \r\n 2017          59            8.15          20.01         3.866         3.05 \r\n 2017          60            4.691         5.038        -2.528         7.37 \r\n 2017          61            11.73         4.805        -6.176         0 \r\n 2017          62            15.53         6.35         -9.4           0 \r\n 2017          63            17.3          21.14        -3.55          0 \r\n 2017          64            4.312         15.04         8.63          0 \r\n 2017          65            11.53         23.67         8.16          0 \r\n 2017          66            18.9          12.36         0.084         11.94 \r\n 2017          67            18.06         14.49        -1.15          0 \r\n 2017          68            4.454         8.29         -1.697         0 \r\n 2017          69            13.57        -0.968        -8.22          0 \r\n 2017          70            10.61        -0.006        -7.252         3.05 \r\n 2017          71            7.655         3.724        -4.777         0.25 \r\n 2017          72            6.45          0.064        -6.278         3.56 \r\n 2017          73            16.3         -1.413        -10.78         0.76 \r\n 2017          74            19.3          3.218        -13.8          0 \r\n 2017          75            14.04         15.15        -3.298         0 \r\n 2017          76            19            18.94         1.439         0 \r\n 2017          77            20.1          12.9         -1.616         0 \r\n 2017          78            17.2          20.23         0.003         0 \r\n 2017          79            19.5          20.93         5.976         0 \r\n 2017          80            9.97          9.93          0.994         0 \r\n 2017          81            12.84         8.69         -2.7           0.51 \r\n 2017          82            10.16         20.6          4.664         0 \r\n 2017          83            4.091         20.72         6.662         0 \r\n 2017          84            3.771         7.924         4.896         16 \r\n 2017          85            5.126         8.91          4.614         10.67 \r\n 2017          86            5.161         9.68          6.076         0.51 \r\n 2017          87            6.645         11.75         6.774         0 \r\n 2017          88            1.19          8.64          4.714         1.52 \r\n 2017          89            3.078         6.834         4.209         24.64 \r\n 2017          90            7.106         7.299         3.422         0 \r\n 2017          91            10.65         12.18         1.642         0 \r\n 2017          92            5.368         14.38         7.359         0.508 \r\n 2017          93            2.648         11.4          8.5           45.21 \r\n 2017          94            7.526         12.28         7.864         5.588 \r\n 2017          95            8.18          9.14          4.108         31.24 \r\n 2017          96            23.62         12.41         2.532         0 \r\n 2017          97            24.21         15.83        -0.684         0 \r\n 2017          98            18.77         23.42         6.875         0 \r\n 2017          99            19.26         25.67         15.55         3.048 \r\n 2017          100           19.88         18.7          4.766         1.778 \r\n 2017          101           23.81         17.85         3.331         0 \r\n 2017          102           16.25         21.5          5.078         0 \r\n 2017          103           17.73         25.63         13.12         0 \r\n 2017          104           9.26          22.57         12.43         3.556 \r\n 2017          105           12.81         26.86         15.11         33.53 \r\n 2017          106           18.07         20.29         10.61         0 \r\n 2017          107           25.1          23.69         5.966         0 \r\n 2017          108           16.51         24.27         10.14         0.508 \r\n 2017          109           14.55         26.9          11.36         9.14 \r\n 2017          110           16.413        20.86         6.936         0 \r\n 2017          111           16.4          14.19         3.804         0 \r\n 2017          112           20.22         17.62         4.542         0 \r\n 2017          113           24.74         22.12         3.239         0 \r\n 2017          114           24.34         23.44         6.694         0 \r\n 2017          115           11.86         22.75         8.31          3.556 \r\n 2017          116           8.35          10.21         4.25          18.03 \r\n 2017          117           17.389        14.77         2.046         0 \r\n 2017          118           3.201         6.248         3.38          13.21 \r\n 2017          119           2.445         6.834         4.118         15.49 \r\n 2017          120           3.079         8.52          4.17          16.76 \r\n 2017          121           8.96          8.08          4.937         0.254 \r\n 2017          122           27.29         17.95         2.45          0 \r\n 2017          123           13.92         13.44         4.775         0 \r\n 2017          124           25.4          20.65         1.4           0 \r\n 2017          125           27.14         24.88         5.462         0 \r\n 2017          126           27.91         22.59         7.843         0 \r\n 2017          127           27.57         26.26         6.794         0 \r\n 2017          128           13.22         27.34         11.5          11.94 \r\n 2017          129           24.98         27.58         16            0 \r\n 2017          130           9.42          21.77         14.16         39.12 \r\n 2017          131           20.395        22.01         12.18         0 \r\n 2017          132           28.63         22.89         6.956         0 \r\n 2017          133           28.06         26.38         9.58          0 \r\n 2017          134           25.35         28.22         11.91         0 \r\n 2017          135           26.12         31.53         18.27         0 \r\n 2017          136           22.48         29.99         16.18         3.81 \r\n 2017          137           16.28         25.98         16.01         9.4 \r\n 2017          138           18.99         21.48         11.59         4.572 \r\n 2017          139           5.966         13.92         8.84          16 \r\n 2017          140           13.94         22.35         8.73          2.286 \r\n 2017          141           14.824        15.97         7.097         0 \r\n 2017          142           12.62         18.79         7.772         0 \r\n 2017          143           16.55         17.12         7.965         1.016 \r\n 2017          144           14.272        17.65         7.5           1.524 \r\n 2017          145           26.79         22.77         5.522         0 \r\n 2017          146           23.29         27.4          14.19         2.286 \r\n 2017          147           15.515        23.68         12.34         0 \r\n 2017          148           27.41         27.31         11.83         0 \r\n 2017          149           28.42         25.02         12.22         0 \r\n 2017          150           28.28         25.94         8.75          0 \r\n 2017          151           30.03         25.36         7.118         0 \r\n 2017          152           28.37         27.64         10            0 \r\n 2017          153           19.07         30.95         15.78         0 \r\n 2017          154           28.36         32.36         16.79         0 \r\n 2017          155           25.03         33.51         17.6          0 \r\n 2017          156           29.54         31.76         14.77         0 \r\n 2017          157           30.02         27.38         12.3          0 \r\n 2017          158           29.21         28.36         11.29         0 \r\n 2017          159           28.42         29.97         13.15         0 \r\n 2017          160           28.43         31.24         15.58         0 \r\n 2017          161           29.01         32.06         17.94         0 \r\n 2017          162           28.67         33.96         21.45         0 \r\n 2017          163           24.52         33.66         22.25         0 \r\n 2017          164           26.62         33.76         22.43         0 \r\n 2017          165           21.17         31.21         19.1          5.842 \r\n 2017          166           28.53         34.31         18.53         12.95 \r\n 2017          167           27.49         31.53         17.93         0.762 \r\n 2017          168           20.4          30.47         18.74         1.016 \r\n 2017          169           28.13         26.46         15.16         0 \r\n 2017          170           27.18         29.52         12.87         0 \r\n 2017          171           29.14         33.56         13.98         0 \r\n 2017          172           24.43         33.67         17.46         0 \r\n 2017          173           23.89         32.44         21.88         0 \r\n 2017          174           27.37         26.55         15.36         8.13 \r\n 2017          175           27.35         25.34         10.95         0 \r\n 2017          176           30.03         23.78         9.42          0 \r\n 2017          177           19.497        24.76         9.14          2.794 \r\n 2017          178           29.34         27.39         9.84          0 \r\n 2017          179           15.59         30.19         19.02         4.826 \r\n 2017          180           19.89         28.28         18.27         0 \r\n 2017          181           21.08         28.44         17.71         0 \r\n 2017          182           29.46         29.05         14.71         0 \r\n 2017          183           12.23         30.34         17.18         0 \r\n 2017          184           18.62         32.63         18.47         0 \r\n 2017          185           19.592        32.44         18.28         1.524 \r\n 2017          186           20.74         31.96         17.12         0 \r\n 2017          187           26.65         33.78         19.06         0 \r\n 2017          188           25.55         30.29         18.33         0 \r\n 2017          189           24.14         33.48         16.97         0 \r\n 2017          190           27.15         33.91         17.29         0 \r\n 2017          191           22.26         35.3          24.11         0 \r\n 2017          192           24.93         34.88         21.8          0 \r\n 2017          193           14.62         33.44         23.87         0 \r\n 2017          194           18.81         29.93         20.15         4.572 \r\n 2017          195           27.63         30.56         16.5          0 \r\n 2017          196           26.83         33.75         17.44         0 \r\n 2017          197           25.2          36.15         20.62         0 \r\n 2017          198           21.63         33.1          20.7          0 \r\n 2017          199           19.14         32.71         22.36         0 \r\n 2017          200           26.46         35.73         22.57         0 \r\n 2017          201           26.54         37.31         25.29         0 \r\n 2017          202           26.53         36.67         25.66         0 \r\n 2017          203           25.73         36.5          24.35         0 \r\n 2017          204           27.05         34.01         17.73         0 \r\n 2017          205           27.91         31.35         14.54         0 \r\n 2017          206           26.42         34.45         18.4          0 \r\n 2017          207           6.746         27.96         22.37         10.41 \r\n 2017          208           21.65         31.1          18.73         0 \r\n 2017          209           24.86         31.6          15.9          0 \r\n 2017          210           27.45         30            15.1          0 \r\n 2017          211           27.9          29.32         13.17         0 \r\n 2017          212           19.81         29.74         15.34         0 \r\n 2017          213           23.6          32.85         16.82         0 \r\n 2017          214           23.57         32.8          16.78         0 \r\n 2017          215           20.23         26.98         13.08         8.64 \r\n 2017          216           26.66         27.34         8.87          0 \r\n 2017          217           13.64         23.86         10.97         0 \r\n 2017          218           10.65         25.62         14.13         0 \r\n 2017          219           21.34         28.69         13.89         0 \r\n 2017          220           27.02         29.77         11.56         0 \r\n 2017          221           23.88         29.72         12.04         0 \r\n 2017          222           22.54         31.71         17.93         0.254 \r\n 2017          223           26.52         28.75         13.28         0 \r\n 2017          224           24.32         29.79         10.31         0 \r\n 2017          225           16.45         27.32         14.86         0 \r\n 2017          226           18            30.4          16.46         0 \r\n 2017          227           13.66         30.26         17.66         47.24 \r\n 2017          228           14.81         29.81         20.21         0.508 \r\n 2017          229           21.35         28.4          16.08         0 \r\n 2017          230           17.19         31.58         14.6          0 \r\n 2017          231           25.07         33.16         17.38         0 \r\n 2017          232           8.63          26.51         18.44         8.64 \r\n 2017          233           10.32         28.45         18.37         25.15 \r\n 2017          234           24.37         25.83         12.41         2.286 \r\n 2017          235           24.1          27.4          10.08         0 \r\n 2017          236           18.88         26.42         15.42         0 \r\n 2017          237           17.26         26.2          15.58         0 \r\n 2017          238           17.29         28.35         13.85         0 \r\n 2017          239           8.09          26.26         16.26         0 \r\n 2017          240           13.83         24.36         14.27         0 \r\n 2017          241           21.09         28.37         12.98         0 \r\n 2017          242           22.45         29.16         12.74         0 \r\n 2017          243           20.21         29.3          13.27         0 \r\n 2017          244           21.7          24.26         10.92         0 \r\n 2017          245           16.23         28.5          14.73         0 \r\n 2017          246           21.35         29.95         12.83         0 \r\n 2017          247           12.98         27.62         15.26         0 \r\n 2017          248           21.82         23.07         9.48          0 \r\n 2017          249           17.18         22.26         6.047         0 \r\n 2017          250           22.07         25.58         6.248         0 \r\n 2017          251           21.51         30.82         10.3          0 \r\n 2017          252           20.02         30.48         13.93         0 \r\n 2017          253           19.75         28.87         14.86         0 \r\n 2017          254           20.73         29.43         11.15         0 \r\n 2017          255           19.3          29.34         11.09         0 \r\n 2017          256           19.81         32.41         12.65         0 \r\n 2017          257           19.29         32            16.26         0 \r\n 2017          258           19.04         32.87         17.79         0 \r\n 2017          259           7.994         29.48         17.84         2.794 \r\n 2017          260           15.46         24.05         13.8          17.02 \r\n 2017          261           8.59          23.92         12.97         15.75 \r\n 2017          262           15.39         28.76         16.16         0 \r\n 2017          263           13.73         30.29         21.19         0 \r\n 2017          264           14.57         31.41         19.85         18.8 \r\n 2017          265           19.04         32.19         21.53         0 \r\n 2017          266           18.66         32.87         19.77         0 \r\n 2017          267           18.29         32.06         19.34         0 \r\n 2017          268           13.93         31.2          18.19         0.254 \r\n 2017          269           8.22          22.51         14.24         3.556 \r\n 2017          270           13.07         21.13         9.72          0 \r\n 2017          271           18.65         26.46         9             0 \r\n 2017          272           18.36         25.18         9.79          0 \r\n 2017          273           17.65         23.04         9.85          0 \r\n 2017          274           12.53         24.72         11.39         0 \r\n 2017          275           13.49         30.18         16.99         0 \r\n 2017          276           5.993         26.11         14.88         14.22 \r\n 2017          277           6.647         20.04         11.55         3.81 \r\n 2017          278           2.818         19.95         11.51         21.34 \r\n 2017          279           3.118         22.54         18.01         9.65 \r\n 2017          280           5.865         20.95         12.74         7.112 \r\n 2017          281           17.5          26.46         10.28         0 \r\n 2017          282           15.84         22.28         8.9           0 \r\n 2017          283           2.359         9.45          6.076         12.95 \r\n 2017          284           8.47          15.8          6.41          0 \r\n 2017          285           9.22          16.67         9.43          0 \r\n 2017          286           9.55          23.55         10.38         2.032 \r\n 2017          287           2.816         23.37         11.57         34.04 \r\n 2017          288           12.37         15.32         4.057         0 \r\n 2017          289           16.34         20.78         2.43          0 \r\n 2017          290           15.84         23.1          8.21          0 \r\n 2017          291           15.47         23.37         8.35          0 \r\n 2017          292           15.19         25.54         6.714         0 \r\n 2017          293           12.47         23.51         10.89         0 \r\n 2017          294           6.766         23.01         9.86          45.72 \r\n 2017          295           8.02          17.52         6.824         3.302 \r\n 2017          296           9.5           18.55         6.3           0 \r\n 2017          297           12.69         11.44         3.471         0.254 \r\n 2017          298           13.58         19.04         0.904         0 \r\n 2017          299           12.81         17.83         3.26          0 \r\n 2017          300           5.166         3.28          0.286         0 \r\n 2017          301           10.77         7.318        -2.943         0 \r\n 2017          302           6.816         12.1         -3.155         0.254 \r\n 2017          303           7.595         7.984         0.631         0 \r\n 2017          304           7.374         2.268        -5.994         0 \r\n 2017          305           4.619         9.17         -0.968         0 \r\n 2017          306           5.145         12.12         1.086         0 \r\n 2017          307           12.12         11.66        -1.798         0 \r\n 2017          308           4.754         11.78         5.966         0 \r\n 2017          309           4.478         9.54         -2.204         0 \r\n 2017          310           7.685         4.24         -3.996         0 \r\n 2017          311           6.091         6.814        -4.554         0 \r\n 2017          312           12.42         9.67         -7.11          0 \r\n 2017          313           12.46         3.987        -6.876         0 \r\n 2017          314           7.755         0.792        -8.81          0 \r\n 2017          315           6.214         9.62          0.752         0.762 \r\n 2017          316           3.893         7.703        -3.298         1.778 \r\n 2017          317           2.877         5.986        -4.361         0.254 \r\n 2017          318           2.226         10.68         5.542         0.254 \r\n 2017          319           11.55         12.66        -2.791         0.762 \r\n 2017          320           10.99         8.21         -5.679         0 \r\n 2017          321           1.612         11.78         2.592         0.508 \r\n 2017          322           5.928         9.96         -1.798         3.81 \r\n 2017          323           11.03         8.25         -6.562         0 \r\n 2017          324           10.3          16.36         1.773         0 \r\n 2017          325           7.992         6.552        -6.358         0 \r\n 2017          326           10.53         4.472        -10.09         0 \r\n 2017          327           10.21         15.93        -0.968         0 \r\n 2017          328           10.03         22.35         7.4           0 \r\n 2017          329           10.5          15.28        -0.108         0 \r\n 2017          330           7.086         16.14        -1.413         0 \r\n 2017          331           7.162         17.18         1.582         0 \r\n 2017          332           5.166         14.86        -2.122         0 \r\n 2017          333           9.03          9.79         -5.75          0 \r\n 2017          334           9.58          12.37        -1.91          0 \r\n 2017          335           9.98          13.24        -2.851         0 \r\n 2017          336           9.63          16.35        -2.304         0 \r\n 2017          337           7.085         16.95        -0.644         0 \r\n 2017          338           3.929         20.46        -0.522         0 \r\n 2017          339           8.84          3.664        -5.334         0 \r\n 2017          340           4.602         6.028        -6.44          0 \r\n 2017          341           9.81         -2.497        -10.93         0 \r\n 2017          342           9.53          4.27         -9.93          0 \r\n 2017          343           6.632        -1.181        -8.51          0 \r\n 2017          344           8.68          9.22         -6.886         0 \r\n 2017          345           3.713         8.21         -4.432         0 \r\n 2017          346           9.03          0.823        -11.31         0 \r\n 2017          347           4.88          10.28        -2.072         0 \r\n 2017          348           5.764         1.49         -3.946         0 \r\n 2017          349           6.763         7.5          -3.905         0 \r\n 2017          350           9.15          12.16        -0.704         0 \r\n 2017          351           2             5.724        -1.21          1.016 \r\n 2017          352           8.02          10.57        -1.13          0 \r\n 2017          353           9.06          10.82        -1.069         0 \r\n 2017          354           8.97          8.13         -4.716         0 \r\n 2017          355           1.676         3.784        -1.554         1.016 \r\n 2017          356           3.17         -1.535        -7.718         0 \r\n 2017          357           6.12         -4.23         -9.67          0 \r\n 2017          358           7.693        -5.142        -13.39         4.826 \r\n 2017          359           7.463        -8.81         -15.4          0 \r\n 2017          360           9.29         -11.8         -22.13         0 \r\n 2017          361           8.01         -11.56        -25.36         0 \r\n 2017          362           5.582        -7.89         -16.67         0 \r\n 2017          363           2.728        -8.04         -13.9          0 \r\n 2017          364           6.662        -13.77        -20.09         0 \r\n 2017          365           10.16        -17.62        -26.87         0 \r\n 2018          1             10.07        -16.67        -29.8          0 \r\n 2018          2             10.07        -7.485        -28.49         0 \r\n 2018          3             10           -6.278        -20.33         0.25 \r\n 2018          4             7.644        -6.866        -22.95         0 \r\n 2018          5             8.44         -8.23         -21.61         0 \r\n 2018          6             9.88         -7.698        -22.38         0 \r\n 2018          7             3.99          1.5          -7.739         0 \r\n 2018          8             10.05         5.583        -4.32          0.25 \r\n 2018          9             5.623         5.421        -2.194         0 \r\n 2018          10            2.732         8.79          0.711         0 \r\n 2018          11            2.853         7.581        -14.85         1.52 \r\n 2018          12            10.34        -11.9         -19.19         5.33 \r\n 2018          13            5.538        -10.97        -15.2          0 \r\n 2018          14            4.133        -3.034        -12.35         0 \r\n 2018          15            9.9          -2.932        -20.68         2.79 \r\n 2018          16            10.07        -13.43        -22.26         0 \r\n 2018          17            10.8         -4.25         -20.46         0 \r\n 2018          18            10.53         2.814        -9.99          0 \r\n 2018          19            8.94          8.34         -1.879         0 \r\n 2018          20            4.014         8.71         -1.576         0 \r\n 2018          21            1.99          8.55          4.189         0 \r\n 2018          22            2.728         9.51         -1.382         22.86 \r\n 2018          23            3.99         -1.343        -4.128         1.52 \r\n 2018          24            6.67          2.228        -4.392         0 \r\n 2018          25            11.44         11.09        -1.697         0 \r\n 2018          26            9.21          14.34         0.924         0 \r\n 2018          27            11.69         11.3         -2.842         0 \r\n 2018          28            9.67          0.711        -8.12          0 \r\n 2018          29            10.26        -2.538        -11.19         0 \r\n 2018          30            8.53          4.29         -11.13         0 \r\n 2018          31            5.304         6.733        -1.494         0 \r\n 2018          32            12.12         1.611        -13.9          0 \r\n 2018          33            8.64         -3.986        -17.15         0 \r\n 2018          34            5.273         7.934        -5.162         0.76 \r\n 2018          35            9.18         -1.554        -17.87         0.51 \r\n 2018          36            2.314        -9.93         -18.87         0.51 \r\n 2018          37            7.902        -10.55        -19.89         11.43 \r\n 2018          38            13.3         -5.791        -15.5          2.79 \r\n 2018          39            9.04          0.518        -10.03         1.27 \r\n 2018          40            6.908        -5.994        -14.05         1.27 \r\n 2018          41            9.6          -9.24         -15.12         10.16 \r\n 2018          42            14.11        -5.344        -16.4          4.57 \r\n 2018          43            13.78        -4.412        -19.99         0 \r\n 2018          44            13.11         4.775        -9.61          0 \r\n 2018          45            9.96          8.06         -0.816         0 \r\n 2018          46            6.864         8.07         -2.69          0 \r\n 2018          47            14.97         0.508        -11.96         0 \r\n 2018          48            11.75         6.704        -6.238         0 \r\n 2018          49            12.7          12.03        -4.118         1.52 \r\n 2018          50            2.545         11.15        -2.486         0 \r\n 2018          51            3.643        -1.15         -8.19          4.32 \r\n 2018          52            14.06        -2.973        -11.05         5.33 \r\n 2018          53            4.293         0.135        -4.898         1.02 \r\n 2018          54            14.79         3.966        -4.048         5.59 \r\n 2018          55            3.027         1.672        -3.986         0.51 \r\n 2018          56            15.37         7.59         -3.915         4.83 \r\n 2018          57            16.7          13.43        -2.244         0 \r\n 2018          58            14.94         19.1          2.188         0 \r\n 2018          59            3.555         10.93         2.552         0 \r\n 2018          60            17.76         9.39         -3.317         4.32 \r\n 2018          61            16.34         11.27        -5.04          0 \r\n 2018          62            17.14         15.05         0.55          0 \r\n 2018          63            12.49         15.84         2.693         0 \r\n 2018          64            2.788         8.76          0.104         2.29 \r\n 2018          65            8.22          1.318        -2.912         4.06 \r\n 2018          66            10.4         -1.009        -6.034         4.06 \r\n 2018          67            18.23         3.512        -8.04          1.52 \r\n 2018          68            11.52         5.562        -4.98          0 \r\n 2018          69            10.87         8.36         -4.27          0.51 \r\n 2018          70            8.18          5.684        -0.584         2.29 \r\n 2018          71            19.35         9.02         -2.456         1.02 \r\n 2018          72            19.83         6.259        -4.938         0 \r\n 2018          73            19.71         17.59        -8.04          0 \r\n 2018          74            16.88         15.06        -2.254         0 \r\n 2018          75            4.571         5.28         -0.563         0 \r\n 2018          76            3.765         2.734        -0.289         10.41 \r\n 2018          77            3.429         5.148         1.207         0 \r\n 2018          78            15.35         12.62         1.277         0 \r\n 2018          79            8.82          4.654        -0.482         0 \r\n 2018          80            18.55         8.98         -3.58          2.29 \r\n 2018          81            11.18         11.63        -2.061         0.51 \r\n 2018          82            5.697         8.69          2.288         0.51 \r\n 2018          83            2.695         3.38         -0.928         11.94 \r\n 2018          84            12.91         9.25         -1.018         0.51 \r\n 2018          85            3.842         5.26          0.813         0 \r\n 2018          86            6.447         7.4           0.752         12.95 \r\n 2018          87            14.49         11.35        -0.684         0 \r\n 2018          88            18.41         9.8          -0.522         0.25 \r\n 2018          89            20.79         11.67        -1.798         0 \r\n 2018          90            15.16         12.07        -4.636         0.25 \r\n 2018          91            7.68         -0.178        -6.967         0 \r\n 2018          92            13.39         3.32         -8.38          0 \r\n 2018          93            3.354         3.058        -6.034         1.524 \r\n 2018          94            23.7          4.754        -10.38         0 \r\n 2018          95            16.9          15.64        -2.528         0 \r\n 2018          96            7.289         4.25         -8.12          0 \r\n 2018          97            24.23         5.956        -10.34         0 \r\n 2018          98            5.012         2.572        -4.108         0 \r\n 2018          99            4.769         1.925        -1.515         2.286 \r\n 2018          100           22.26         13.1         -2.679         0 \r\n 2018          101           15.72         21.73         4.068         0 \r\n 2018          102           20.11         22.95         9.56          0 \r\n 2018          103           9.14          25.16         5.138         4.826 \r\n 2018          104           5.413         6.259         1.601         15.75 \r\n 2018          105           12.36         1.652        -3.742         4.064 \r\n 2018          106           22.92         4.512        -4.878         0 \r\n 2018          107           22.9          13.95        -3.723         0 \r\n 2018          108           3.954         4.614        -0.968         0 \r\n 2018          109           26.06         13.19        -2.223         0 \r\n 2018          110           20.99         16.06        -0.928         0 \r\n 2018          111           9.21          15.34         6.37          0 \r\n 2018          112           20.16         21.1          7.5           0 \r\n 2018          113           24.83         22.76         7.984         0 \r\n 2018          114           24.26         24.32         3.664         0 \r\n 2018          115           14.05         16.62         5.361         0 \r\n 2018          116           24.79         22.21         1.884         0 \r\n 2018          117           24.73         25.63         2.39          0 \r\n 2018          118           25.78         17.08         1.763         0 \r\n 2018          119           26.66         21.76         3.594         0 \r\n 2018          120           25.91         28.15         10.83         0 \r\n 2018          121           12.87         26.51         16.39         3.302 \r\n 2018          122           11.72         28.43         15.71         28.45 \r\n 2018          123           12.2          25.25         14.32         8.64 \r\n 2018          124           26.7          25.4          11.47         0 \r\n 2018          125           22.16         27.73         9.86          0 \r\n 2018          126           26.02         28.6          12.44         0 \r\n 2018          127           27.54         26.65         9.07          0 \r\n 2018          128           21.61         28.06         14.45         0 \r\n 2018          129           25.5          26.13         13.27         0 \r\n 2018          130           26.4          28.31         10.24         0 \r\n 2018          131           9.95          24.64         12            3.556 \r\n 2018          132           5.898         13.19         8.76          27.94 \r\n 2018          133           8.81          24.75         12.25         0 \r\n 2018          134           20.22         28.23         14.01         0 \r\n 2018          135           15.19         26.72         16.32         10.67 \r\n 2018          136           25.54         27.29         14.98         0 \r\n 2018          137           24.08         28.16         14.27         0 \r\n 2018          138           25.61         27.55         14.23         0 \r\n 2018          139           16.12         27.51         13.49         0.762 \r\n 2018          140           9.3           21.34         14.1          0.762 \r\n 2018          141           13.49         24.16         14.8          28.19 \r\n 2018          142           16.24         28.19         13.05         0 \r\n 2018          143           24.08         30.4          16.58         0 \r\n 2018          144           26.13         30.23         18.95         0 \r\n 2018          145           20.95         29.6          19.04         0 \r\n 2018          146           27.95         37.92         19.34         0 \r\n 2018          147           27.3          37.68         21.08         0 \r\n 2018          148           21.51         35.57         21.27         3.556 \r\n 2018          149           23.78         33.49         19.24         3.81 \r\n 2018          150           22.24         28.91         17.6          0 \r\n 2018          151           24.18         33.79         19.13         0 \r\n 2018          152           28.33         35.91         17.09         0 \r\n 2018          153           19.62         25.84         15.35         29.46 \r\n 2018          154           29.94         26.61         12.9          0 \r\n 2018          155           25.34         26.84         9.88          0 \r\n 2018          156           29.26         30.51         14.71         0 \r\n 2018          157           24.11         32.14         17.19         18.8 \r\n 2018          158           23.84         31.77         17.25         0 \r\n 2018          159           25.61         31.35         19.26         0 \r\n 2018          160           22.21         32.22         21.17         0 \r\n 2018          161           14.16         29.96         21.29         1.524 \r\n 2018          162           13.5          27.63         18.62         27.43 \r\n 2018          163           26.47         30.32         18.21         1.778 \r\n 2018          164           27.7          27.84         17.51         0 \r\n 2018          165           14.94         27.51         16.99         4.064 \r\n 2018          166           27.82         33.08         21.24         0 \r\n 2018          167           26.03         33.32         22.07         0 \r\n 2018          168           26.16         33.63         22.85         0 \r\n 2018          169           26.71         33.53         22.4          2.794 \r\n 2018          170           8.97          27.1          21.45         7.112 \r\n 2018          171           19.93         29.51         19            0 \r\n 2018          172           11.06         24.6          16.5          0.762 \r\n 2018          173           10.29         22.85         15.37         0 \r\n 2018          174           18.35         26.92         16.16         0 \r\n 2018          175           16.06         29.8          17.22         27.68999 \r\n 2018          176           12.57         26.16         18.71         4.572 \r\n 2018          177           20.61         26.51         17.59         12.7 \r\n 2018          178           26.39         32.81         16.74         0 \r\n 2018          179           11.99         29.75         18.63         8.379993 \r\n 2018          180           27.45         33.44         24.51         0 \r\n 2018          181           26.69         33.46         20.84         38.61001 \r\n 2018          182           22.8          27.72         18.32         11.17999 \r\n 2018          183           27.32         29.33         15.96         0 \r\n 2018          184           23.98         32.94         19.44         0 \r\n 2018          185           26.69         33.57         22.96         0 \r\n 2018          186           25.08         30.91         20.45         0 \r\n 2018          187           27.4          29.02         17.31         0 \r\n 2018          188           27.9          29.19         15.21         0 \r\n 2018          189           28.87         30.81         13.95         0 \r\n 2018          190           27.86         34.57         15.03         0 \r\n 2018          191           24.27         33.52         19.84         0 \r\n 2018          192           26.19         34.92         21.24         0 \r\n 2018          193           26.7          36.2          20.84         0 \r\n 2018          194           21.05         35.2          20.65         4.318 \r\n 2018          195           20.27         31.92         20.98         0 \r\n 2018          196           24.73         32.41         19.85         0 \r\n 2018          197           25.05         30.33         18.83         0 \r\n 2018          198           19.02         29.82         16.17         0 \r\n 2018          199           21.37         30.47         18.57         2.54 \r\n 2018          200           21.15         32.18         20.38         0 \r\n 2018          201           25.06         27.56         18.44         0 \r\n 2018          202           26.32         29.1          17.89         0 \r\n 2018          203           26.86         28.52         16.13         0 \r\n 2018          204           25.89         30.41         15.55         0 \r\n 2018          205           28.13         29.88         17.49         0 \r\n 2018          206           16.77         30.78         14.23         0 \r\n 2018          207           25.76         27.95         15.04         0 \r\n 2018          208           26.46         26.87         12            0 \r\n 2018          209           13.74         25.54         13.79         2.286 \r\n 2018          210           18.81         26.29         17.16         20.83 \r\n 2018          211           23.66         28.31         14.19         0 \r\n 2018          212           23.72         29.24         13.23         0 \r\n 2018          213           24.99         30.38         15.06         0 \r\n 2018          214           24.7          31.46         17.29         0 \r\n 2018          215           25.4          34.84         16.64         0 \r\n 2018          216           19.15         33.4          19.21         0 \r\n 2018          217           22.81         36.04         20.33         0 \r\n 2018          218           20.88         33.57         20.14         0 \r\n 2018          219           21.62         29.86         17.69         2.54 \r\n 2018          220           26.2          32.52         15.74         0 \r\n 2018          221           25.13         35.57         18.14         0 \r\n 2018          222           24            32.07         18.43         0 \r\n 2018          223           22.81         32.85         16.03         0 \r\n 2018          224           22.81         33.1          17.6          0 \r\n 2018          225           21.69         34.52         17.55         0 \r\n 2018          226           9.31          27.58         18.51         5.588 \r\n 2018          227           18.2          32.09         20.2          20.32 \r\n 2018          228           16.06         29.76         18.91         0.254 \r\n 2018          229           18.78         30.15         16.9          0 \r\n 2018          230           19.73         31.92         17.87         0 \r\n 2018          231           13.02         28.34         18.48         6.858 \r\n 2018          232           12.69         26.64         19.04         17.53 \r\n 2018          233           18.96         25.04         14.43         0 \r\n 2018          234           23.15         26.62         12.41         0 \r\n 2018          235           16.06         25.4          12.3          0 \r\n 2018          236           13.27         29.8          17.65         26.92 \r\n 2018          237           22.92         34.67         20.28         0 \r\n 2018          238           7.287         30.33         22.74         0 \r\n 2018          239           12.5          33.65         22.86         2.286 \r\n 2018          240           7.445         30.64         17.29         37.34 \r\n 2018          241           23.29         24.72         13.87         2.032 \r\n 2018          242           12.38         26.91         13.35         0 \r\n 2018          243           12.31         28.27         19            12.95 \r\n 2018          244           15.83         32.15         18.39         55.88 \r\n 2018          245           11.65         29.35         19.55         6.35 \r\n 2018          246           12.29         30.73         20.54         17.53 \r\n 2018          247           18.17         31.22         21.42         3.048 \r\n 2018          248           3.163         23.87         19.54         32.26 \r\n 2018          249           5.352         21.28         17.44         4.318 \r\n 2018          250           3.527         17.89         14.62         18.29 \r\n 2018          251           16.83         22.23         11.91         0 \r\n 2018          252           20.84         24.45         10.79         0 \r\n 2018          253           21.97         26.33         8.98          0 \r\n 2018          254           21.15         27.67         13.25         0 \r\n 2018          255           21.06         27.44         14.73         0 \r\n 2018          256           18.06         29.33         15.41         0 \r\n 2018          257           18.82         32.09         19.39         0 \r\n 2018          258           16.19         32.82         19.26         0 \r\n 2018          259           17.73         32            17.81         0 \r\n 2018          260           18.28         33.23         19.99         0 \r\n 2018          261           12.02         31.81         18.42         0 \r\n 2018          262           15.59         31.87         18.87         0 \r\n 2018          263           19.31         33.26         19.61         7.62 \r\n 2018          264           15.02         19.69         7.5           2.286 \r\n 2018          265           20.5          21.52         6.189         0 \r\n 2018          266           20.18         25.07         8.56          0 \r\n 2018          267           16.15         27            11.35         0 \r\n 2018          268           7.339         23.01         7.823         3.302 \r\n 2018          269           18.73         19.97         6.875         0 \r\n 2018          270           18.5          23.53         6.794         0 \r\n 2018          271           11.59         13.81         4.512         1.524 \r\n 2018          272           3.78          11.13         6.471         3.556 \r\n 2018          273           2.978         11.82         9.15          0.762 \r\n 2018          274           6.199         26.11         9.94          0.254 \r\n 2018          275           6.739         21.47         10.92         0.254 \r\n 2018          276           15.76         31.19         14            6.096 \r\n 2018          277           16.78         15.35         3.664         0.254 \r\n 2018          278           5.349         17.45         10.79         31.5 \r\n 2018          279           1.654         13.75         8.51          27.69 \r\n 2018          280           2.69          14.76         9.05          23.88 \r\n 2018          281           8.07          24.93         13.58         64.26 \r\n 2018          282           6.402         24.36         17.12         31.5 \r\n 2018          283           5.436         19.2          4.33          0 \r\n 2018          284           13.57         10.09         1.682         0 \r\n 2018          285           3.583         5.824         1.804         2.54 \r\n 2018          286           7.728         12.35         3.078         0 \r\n 2018          287           2.013         7.218         0.469         0.254 \r\n 2018          288           15.72         9.2          -2.122         0 \r\n 2018          289           16.15         18.34        -1.292         0 \r\n 2018          290           16.11         14.88         1.713         0 \r\n 2018          291           15.74         18.63         1.783         0 \r\n 2018          292           7.035         20.72         8.14          0 \r\n 2018          293           15.73         12.4         -1.474         0 \r\n 2018          294           15.23         14.6         -3.966         0 \r\n 2018          295           14.84         21.77         4.472         0 \r\n 2018          296           15.33         14.98         0.084         0 \r\n 2018          297           13.18         15.59        -0.907         0 \r\n 2018          298           4.308         11.6          5.754         0 \r\n 2018          299           9.62          14.77         5.26          0.254 \r\n 2018          300           13.53         20.82         2.734         0 \r\n 2018          301           14.08         16.7          3.218         0 \r\n 2018          302           12.19         20.5          0.864         0 \r\n 2018          303           3.852         15.47         8.42          0 \r\n 2018          304           6.956         14.83         4.866         0 \r\n 2018          305           8.86          15.9          2.309         0 \r\n 2018          306           4.97          11.12         2.43          8.13 \r\n 2018          307           2.079         7.884         2.43          11.18 \r\n 2018          308           2.293         8.21          2.734         12.7 \r\n 2018          309           2.509         8.17          2.138         2.032 \r\n 2018          310           9.1           7.188        -1.869         0 \r\n 2018          311           11.47         3.331        -3.084         0 \r\n 2018          312           3.938         1.318        -1.788         0 \r\n 2018          313           5.439        -1.474        -9.55          0 \r\n 2018          314           10.26        -1.828        -12.84         0 \r\n 2018          315           8.18          7.934        -3.723         0 \r\n 2018          316           4.682        -1.758        -10.22         0 \r\n 2018          317           12.21        -0.38         -12.47         0 \r\n 2018          318           11.7          4.633        -8.22          0 \r\n 2018          319           11.42         7.934        -7.83          0 \r\n 2018          320           8.05          10.42         0.852         0 \r\n 2018          321           2.803         3.584        -6.034         0 \r\n 2018          322           11.97         4.866        -13.66         3.302 \r\n 2018          323           9.06          2.654        -11.62         0 \r\n 2018          324           9.37          1.076        -7.932         0 \r\n 2018          325           10.92         7.52         -4.087         0 \r\n 2018          326           10.95         13.89        -2             0 \r\n 2018          327           1.239         8.48          5.764         2.794 \r\n 2018          328           10.09         13.71         1.582         0 \r\n 2018          329           1.546         2.572        -4.798         1.524 \r\n 2018          330           9.15         -4.798        -14.02         0 \r\n 2018          331           10.8         -4.98         -15.73         0 \r\n 2018          332           4.638        -2.204        -10.6          0 \r\n 2018          333           4.748         2.38         -9.2           2.794 \r\n 2018          334           7.398         4.39         -7.15          0.762 \r\n 2018          335           1.957         2.845         0.873         0 \r\n 2018          336           2.827         1.986        -1.09          0 \r\n 2018          337           2.178        -1.048        -3.398         0 \r\n 2018          338           2.821        -3.317        -5.284         0 \r\n 2018          339           9.83          4.17         -6.784         0 \r\n 2018          340           8.98         -1.302        -10.39         0 \r\n 2018          341           9.37         -0.38         -12.72         0 \r\n 2018          342           9.88          1.086        -11.18         0 \r\n 2018          343           9.26          2.249        -12.03         0 \r\n 2018          344           9.62          2.744        -10.17         0 \r\n 2018          345           8.1           7.762        -4.006         0 \r\n 2018          346           6.776         7.419        -3.642         0 \r\n 2018          347           1.499         2.855        -0.704         0 \r\n 2018          348           8.54          6.512        -2.943         0 \r\n 2018          349           9.73          15.38        -5.77          0 \r\n 2018          350           8.2           11.61        -2.669         0 \r\n 2018          351           9.52          10.52        -4.736         0 \r\n 2018          352           9.35          12.52        -0.725         0 \r\n 2018          353           4.912         11.03         4.108         0 \r\n 2018          354           1.252         4.189        -1.343         0 \r\n 2018          355           4.951        -0.127        -5.354         0 \r\n 2018          356           2.559         0.832        -4.614         0 \r\n 2018          357           9.54          4.694        -5.385         0 \r\n 2018          358           6.077         5.664        -7.81          0 \r\n 2018          359           8.18          9.4          -1.11          0 \r\n 2018          360           1.066         6.128        -2.122         0 \r\n 2018          361           2.92          13.35        -2.992         0 \r\n 2018          362           1.782        -2.832        -11.56         0 \r\n 2018          363           5.102        -6.217        -12.06         0 \r\n 2018          364           9.69          4.876        -8.14          0 \r\n 2018          365           1             1.834        -5.061         0 \r\n 2019          1             2.676        -4.928        -11.13         0 \r\n 2019          2             8.6          -0.553        -8.79          0 \r\n 2019          3             9.73          8.79         -5.568         0.254 \r\n 2019          4             9.63          11.06        -2.628         0 \r\n 2019          5             9.62          15.08        -2.405         0 \r\n 2019          6             4.237         8.73          0.631         3.81 \r\n 2019          7             8.31          11.67         4.594         4.572 \r\n 2019          8             10.23         7.924        -1.241         0 \r\n 2019          9             10.26        -0.532        -7.13          0 \r\n 2019          10            9.78          2.208        -8.84          0 \r\n 2019          11            1.515         1.014        -3.642         5.842 \r\n 2019          12            4.893        -1.048        -3.014         16.002 \r\n 2019          13            9.7           3.118        -13.9          0 \r\n 2019          14            5.135        -2.456        -13.71         0 \r\n 2019          15            4.756         0.792        -2.538         4.064 \r\n 2019          16            4.241        -0.016        -3.622         0 \r\n 2019          17            5.483         0.012        -3.317         1.27 \r\n 2019          18            3.84         -3.186        -6.806         13.208 \r\n 2019          19            8.75         -6.794        -19.39         0 \r\n 2019          20            5.209        -11.62        -19.74         0 \r\n 2019          21            8.2          -7.78         -17.22         0 \r\n 2019          22            3.61         -0.078        -8.14          11.176 \r\n 2019          23            12.9         -6.014        -12.35         0 \r\n 2019          24            11.73        -5.203        -20.23         0 \r\n 2019          25            6.166        -5.04         -24.62         0 \r\n 2019          26            9.32         -1.869        -18.21         0 \r\n 2019          27            4.534        -0.178        -18.83         5.842 \r\n 2019          28            9.11          2.966        -16.87         2.286 \r\n 2019          29            12.8         -14.49        -24.74         0 \r\n 2019          30            13.15        -21.17        -30.68         0 \r\n 2019          31            7.576        -13.71        -27.44         0 \r\n 2019          32            12.32        -1.697        -18.97         0 \r\n 2019          33            6.648         7.147        -2.405         0 \r\n 2019          34            4.709         9.32          4.654         0 \r\n 2019          35            6.794         9.74         -9.91          0 \r\n 2019          36            3.432        -6.622        -12.15         0 \r\n 2019          37            2.442        -4.087        -7.88          0 \r\n 2019          38            8.83         -4.108        -16.68         4.826 \r\n 2019          39            14.47        -9.53         -18.62         0 \r\n 2019          40            11.19        -4.178        -15.53         0 \r\n 2019          41            5.932        -1.353        -5.162         4.572 \r\n 2019          42            4.251        -1.525        -4.574         22.352 \r\n 2019          43            10.76        -2.932        -11.5          0 \r\n 2019          44            12.09         2.188        -16.26         1.778 \r\n 2019          45            12.53         6.623        -13.75         3.302 \r\n 2019          46            9.12         -9.42         -15.67         0 \r\n 2019          47            14.71        -2.842        -17.13         7.366 \r\n 2019          48            8.18         -0.219        -8.63          4.064 \r\n 2019          49            15.88        -2.982        -15.79         0 \r\n 2019          50            10.21        -3.278        -18.54         3.302 \r\n 2019          51            8.53         -0.178        -9.18          6.604 \r\n 2019          52            15.83         3.856        -14.39         5.334 \r\n 2019          53            14.77         3.179        -10.53         0 \r\n 2019          54            5.357         2.067        -1.97          30.23 \r\n 2019          55            17.06        -1.92         -14.3          0 \r\n 2019          56            14.34        -8.04         -17.33         0 \r\n 2019          57            7.756        -4.473        -14.21         0 \r\n 2019          58            14.99        -7.1          -13.65         0 \r\n 2019          59            12.55        -1.94         -14.12         0 \r\n 2019          60            14.09         1.824        -10.87         0 \r\n 2019          61            10.59        -5.436        -11.44         0 \r\n 2019          62            17.25        -10.56        -19.1          0 \r\n 2019          63            19.16        -10.8         -20.33         0 \r\n 2019          64            17.19        -7.028        -14.83         0 \r\n 2019          65            17.36         1.096        -14.49         0 \r\n 2019          66            7.051        -3.125        -7.739         6.604 \r\n 2019          67            13.26         3.36         -3.946         3.302 \r\n 2019          68            3.044         2.228         0.226         21.59 \r\n 2019          69            19.65         1.935        -3.682         0 \r\n 2019          70            19.92         10.46        -4.27          0 \r\n 2019          71            3.966         7.965        -0.978         8.38 \r\n 2019          72            5.04          14.94         7.48          5.08 \r\n 2019          73            2.9           11.72         0.408         0.762 \r\n 2019          74            19.25         7.742        -1.758         0 \r\n 2019          75            17.88         10.89        -4.28          0 \r\n 2019          76            18.99         8.9          -2.254         0 \r\n 2019          77            20.4          9.35         -3.936         0 \r\n 2019          78            8.83          10.37        -0.826         12.45 \r\n 2019          79            12.3          11.58         1.51          1.016 \r\n 2019          80            21.52         12.73        -1.09          0 \r\n 2019          81            22.05         15.66        -0.24          0 \r\n 2019          82            9.08          12.49        -0.482         0 \r\n 2019          83            3.841         11.2          6.673         6.858 \r\n 2019          84            11.98         11.56         1.024         0 \r\n 2019          85            18.12         13.14        -0.928         0 \r\n 2019          86            13.72         20.09         3.886         0 \r\n 2019          87            6.113         14.6          6.592         0 \r\n 2019          88            6.651         10.87         3.118         19.3 \r\n 2019          89            9.8           5.209        -2.609         0 \r\n 2019          90            22.96         6.986        -5.548         0 \r\n 2019          91            21.26         13.62        -1.636         0 \r\n 2019          92            16.08         11.99         1.864         2.286 \r\n 2019          93            6.876         12.74        -0.289         0.254 \r\n 2019          94            11.87         13.47         5.744         0.508 \r\n 2019          95            14.98         18.75         6.764         0 \r\n 2019          96            20.14         23.84         7.38          0 \r\n 2019          97            13.92         22.35         10.59         2.54 \r\n 2019          98            23.71         25.91         6.421         0 \r\n 2019          99            18.63         21.29         6.794         0 \r\n 2019          100           14.15         16.11         5.28          0 \r\n 2019          101           15.89         18.54         1.702         0 \r\n 2019          102           13.95         7.52         -1.474         0 \r\n 2019          103           23.9          12.7         -3.682         0 \r\n 2019          104           24.47         11.43        -0.057         0 \r\n 2019          105           20.78         23.06         0.226         0 \r\n 2019          106           19.47         24.79         9.86          0 \r\n 2019          107           11.71         24.39         8.4           1.016 \r\n 2019          108           13.39         13.81         6.269         0 \r\n 2019          109           25.89         17.77         3.299         0 \r\n 2019          110           25.61         23.5          1.318         0 \r\n 2019          111           24.12         28.71         10.7          0 \r\n 2019          112           17.35         25.2          9.66          0 \r\n 2019          113           15.93         17.7          7.571         0 \r\n 2019          114           13.54         18.9          6.642         0.762 \r\n 2019          115           17.74         21.33         7.622         0.508 \r\n 2019          116           25.54         18.78         4.754         0 \r\n 2019          117           5.648         14.99         2.168         3.81 \r\n 2019          118           14.04         14.06        -1.738         1.27 \r\n 2019          119           13.19         17.46         7.46          41.66 \r\n 2019          120           2.764         11.65         7.904         11.43 \r\n 2019          121           8.67          13.6          7.278         0.254 \r\n 2019          122           16.667        17.14         7.864         0.762 \r\n 2019          123           8.85          15.37         4.795         3.556 \r\n 2019          124           21.64         20.92         3.036         0 \r\n 2019          125           20.75         23.94         10.06         0 \r\n 2019          126           19.49         22.28         9.56          5.588 \r\n 2019          127           4.508         13.2          10.58         0.762 \r\n 2019          128           11.03         21.89         9.4           14.22 \r\n 2019          129           7.612         9.98          3.502         0 \r\n 2019          130           22.81         17.85         3.179         0 \r\n 2019          131           6.072         12.04         5.462         8.89 \r\n 2019          132           7.79          12.74         4.552         1.524 \r\n 2019          133           25.97         18.75         0.924         0 \r\n 2019          134           14.34         22.19         8.75          3.556 \r\n 2019          135           25.5          25.95         7.722         0 \r\n 2019          136           25.94         33.01         15.48         3.302 \r\n 2019          137           12.35         28.42         17.27         7.874 \r\n 2019          138           13.11         24.83         16.18         18.03 \r\n 2019          139           9.656         16.32         8.73          3.81 \r\n 2019          140           14.62         11.33         4.664         7.874 \r\n 2019          141           2.757         13.76         7.278         24.64 \r\n 2019          142           25.79         22.01         11.32         0 \r\n 2019          143           23.25         22.89         8.51          0 \r\n 2019          144           12.68         27.14         19.58         18.796 \r\n 2019          145           13.829        25.63         17.52         14.22 \r\n 2019          146           18.979        26.91         15.61         19.05 \r\n 2019          147           12.42         25.13         15.86         13.46 \r\n 2019          148           9.94          22.72         10.52         67.56 \r\n 2019          149           17.822        24.2          14.78         0.508 \r\n 2019          150           18.35         22.81         11.86         1.524 \r\n 2019          151           23.63         28.17         12.52         0 \r\n 2019          152           21.46         27.81         14.92         0.254 \r\n 2019          153           28.44         26.15         11.03         0 \r\n 2019          154           14.18         23.6          12.3          1.778 \r\n 2019          155           16.7          28.86         16.99         0 \r\n 2019          156           25.84         31.58         18.51         0 \r\n 2019          157           22.93         31.02         18.02         0 \r\n 2019          158           26.5          29.76         18.86         0 \r\n 2019          159           29.55         28.97         16.15         0 \r\n 2019          160           24.809        27.97         15.02         0 \r\n 2019          161           29.46         26.84         10.83         0 \r\n 2019          162           20.662        26.76         11.86         0 \r\n 2019          163           21.69         23.57         10.83         1.27 \r\n 2019          164           29.98         24.68         7.692         0 \r\n 2019          165           13.72         23.18         15.04         0 \r\n 2019          166           19.55         30.47         17.65         0 \r\n 2019          167           25.69         27.22         14.8          0 \r\n 2019          168           25.38         27.21         15.86         0 \r\n 2019          169           20.41         28.21         15.78         1.778 \r\n 2019          170           6.086         19.91         16.55         10.67 \r\n 2019          171           20.362        25.84         14.57         0.254 \r\n 2019          172           9.9           24.65         18            19.05 \r\n 2019          173           16.63         27.23         17.49         18.8 \r\n 2019          174           11.34         23.58         17.53         5.08 \r\n 2019          175           20.88         25.59         16.77         0 \r\n 2019          176           22.94         30.32         16.8          26.67 \r\n 2019          177           20.51         30.3          17.15         0 \r\n 2019          178           23.25         31.69         20.46         0 \r\n 2019          179           16.99         29.76         21.1          0 \r\n 2019          180           26.69         34.03         20.56         0 \r\n 2019          181           26.03         33.79         23.27         0 \r\n 2019          182           27.33         32.37         22.36         0 \r\n 2019          183           26.66         33.45         22.03         0 \r\n 2019          184           22.68         31.58         21.02         1.778 \r\n 2019          185           24.02         31.63         20.08         0 \r\n 2019          186           23.25         31.16         19.89         0 \r\n 2019          187           17.8          29.55         19.9          0 \r\n 2019          188           21.7          29.58         19.1          0 \r\n 2019          189           25.62         29.74         18.66         0 \r\n 2019          190           23.82         32.31         19.79         0 \r\n 2019          191           24.09         30.59         20.4          0 \r\n 2019          192           24.68         29.29         17.78         0 \r\n 2019          193           28.25         31.51         14.79         0 \r\n 2019          194           22.75         33.94         18.92         0 \r\n 2019          195           26.87         33.12         19.76         0 \r\n 2019          196           27.89         30.71         20.19         0 \r\n 2019          197           22.03         33.06         17.81         0 \r\n 2019          198           17.97         33.39         20.28         56.39 \r\n 2019          199           25.55         34.31         23.58         0 \r\n 2019          200           26.82         34.95         25.26         0 \r\n 2019          201           24.78         35.4          20.32         13.21 \r\n 2019          202           5.63          24.06         18.87         5.588 \r\n 2019          203           25.72         26.34         14.15         0 \r\n 2019          204           26            27.39         12.64         0 \r\n 2019          205           22.72         28.81         13.47         0 \r\n 2019          206           19.1          27.64         15.44         0 \r\n 2019          207           24.76         29.38         19.86         0 \r\n 2019          208           23.1          31.11         19.36         0 \r\n 2019          209           17.75         31.11         18.82         12.95 \r\n 2019          210           26.85         29.47         17.02         5.334 \r\n 2019          211           21.86         26.7          14.66         0 \r\n 2019          212           10.04         23.93         15.29         2.032 \r\n 2019          213           25.89         27.1          14.66         0.254 \r\n 2019          214           26.49         28.13         14.17         0 \r\n 2019          215           23.85         29.26         18.03         0.508 \r\n 2019          216           26.64         31.74         15.42         0 \r\n 2019          217           23.66         30.14         16.55         0 \r\n 2019          218           23.48         30.58         17.58         0 \r\n 2019          219           25            32.16         17.07         0 \r\n 2019          220           21.4          30.64         18.07         0 \r\n 2019          221           25.9          31.33         13.93         0 \r\n 2019          222           20.27         31.08         17.35         0 \r\n 2019          223           9.93          29.83         20.16         0 \r\n 2019          224           13.7          30.83         19.89         17.02 \r\n 2019          225           24.23         30.64         20.4          0 \r\n 2019          226           22.76         26.19         15.76         0 \r\n 2019          227           15.85         25.86         13.2          0.762 \r\n 2019          228           20.61         28.6          17.67         0 \r\n 2019          229           22.19         30.18         19.86         1.778 \r\n 2019          230           18.45         28.35         17.38         56.64 \r\n 2019          231           22.3          32.02         18.7          0 \r\n 2019          232           15.38         31.49         19.66         54.61 \r\n 2019          233           8.03          27.17         19.26         0 \r\n 2019          234           24.33         26.28         15.02         0 \r\n 2019          235           23.43         26.1          14.44         0 \r\n 2019          236           19.03         24.07         14.22         0 \r\n 2019          237           7.521         20.91         15.65         4.572 \r\n 2019          238           8.09          24.45         16.35         4.318 \r\n 2019          239           23.87         25.54         14.05         0 \r\n 2019          240           24.27         26.74         11.76         0 \r\n 2019          241           17.03         31.48         16.55         3.81 \r\n 2019          242           18.83         24.17         14.22         0 \r\n 2019          243           8.04          20.16         11.23         0 \r\n 2019          244           19.19         27.47         13.76         0 \r\n 2019          245           19.93         28.2          15.98         0 \r\n 2019          246           17.6          32.58         16.67         0 \r\n 2019          247           21.22         24.93         11.54         0 \r\n 2019          248           19.68         29.1          13.6          0 \r\n 2019          249           20.95         27.47         14.76         0 \r\n 2019          250           17.52         26.38         12.74         3.048 \r\n 2019          251           7.205         21.55         15.4          5.588 \r\n 2019          252           16.41         31.33         18.67         0 \r\n 2019          253           13.89         29.95         20.28         0 \r\n 2019          254           20.12         31.07         22.29         0 \r\n 2019          255           14.21         30.38         18.94         0 \r\n 2019          256           21.15         24.88         13.35         0 \r\n 2019          257           16.99         28.5          13.58         0 \r\n 2019          258           20.11         32.5          19.92         0 \r\n 2019          259           17.25         32.74         19.1          0 \r\n 2019          260           17.87         33            20.5          0 \r\n 2019          261           18.74         33.41         21.51         0 \r\n 2019          262           10.83         29.77         21.31         2.794 \r\n 2019          263           17.77         31.81         19.57         0 \r\n 2019          264           3.445         25.2          20.92         8.13 \r\n 2019          265           5.88          22.09         11.45         40.13 \r\n 2019          266           19.47         26.5          10.43         0.508 \r\n 2019          267           17.8          28.76         13.51         0 \r\n 2019          268           19.11         25.97         12.06         2.794 \r\n 2019          269           17.28         23.44         7.44          0 \r\n 2019          270           8.21          27.89         15.76         0 \r\n 2019          271           6.326         18.54         11.06         36.07 \r\n 2019          272           4.127         22.25         15.68         29.72 \r\n 2019          273           15.82         30.32         20.95         0 \r\n 2019          274           12.34         31.46         21.51         11.94 \r\n 2019          275           3.351         22.4          12.36         20.07 \r\n 2019          276           12.07         15.83         6.39          0 \r\n 2019          277           12.89         15.25         3.532         0 \r\n 2019          278           5.068         21.09         7.359         3.81 \r\n 2019          279           6.28          17.43         5.138         0 \r\n 2019          280           17.8          23.01         4.532         0 \r\n 2019          281           17.59         21.19         6.209         0 \r\n 2019          282           8.01          18.31         8.37          7.62 \r\n 2019          283           2.665         18.94         4.228         20.57 \r\n 2019          284           7.285         5.653        -0.876         0 \r\n 2019          285           17.1          15.86        -2.041         0 \r\n 2019          286           16.98         14.8         -2.152         0 \r\n 2019          287           16.67         18.3         -1.98          0 \r\n 2019          288           14.71         16.57         5.624         0 \r\n 2019          289           8.4           11.55         1.794         0 \r\n 2019          290           15.56         17.44         0.346         0 \r\n 2019          291           15.6          21.69         7.602         0 \r\n 2019          292           8.3           18.5          6.4           4.826 \r\n 2019          293           14.13         18.35         4.472         0 \r\n 2019          294           6.953         12.74         7.854         9.4 \r\n 2019          295           15.06         12.84         2.674         0 \r\n 2019          296           8.61          17.63         3.017         0 \r\n 2019          297           7.236         8.61         -1.898         0 \r\n 2019          298           14.22         14.29        -1.898         0 \r\n 2019          299           9.25          12.5         -3.46          0 \r\n 2019          300           11.08         10.75         1.562         0 \r\n 2019          301           6.349         6.996        -1.292         6.604 \r\n 2019          302           12.35         6.057        -2.284         1.778 \r\n 2019          303           3.511         1.156        -3.135         7.112 \r\n 2019          304           13.4          4.39         -5.142         1.524 \r\n 2019          305           5.146         5.805        -3.672         0.762 \r\n 2019          306           12.71         9.82         -1.596         0.254 \r\n 2019          307           7.596         11.49         0.368         0 \r\n 2019          308           8.36          9.04          0.246         0 \r\n 2019          309           9.22          7.884        -3.398         0 \r\n 2019          310           12.04         13.46        -3.135         0 \r\n 2019          311           13.14         0.438        -8.9           0 \r\n 2019          312           11.3          3.876        -9.3           0 \r\n 2019          313           10.46         17.4         -1.312         0 \r\n 2019          314           10.59         8.59         -1.778         0 \r\n 2019          315           7.27         -1.758        -14.45         2.794 \r\n 2019          316           12.43        -6.358        -18.15         0.254 \r\n 2019          317           6.01          2.36         -8.92          0 \r\n 2019          318           9.19          1.896        -7.048         0 \r\n 2019          319           11.31         12.77        -6.745         0 \r\n 2019          320           11.01         11.48        -2.041         0 \r\n 2019          321           3.452         7.066         1.884         1.524 \r\n 2019          322           5.644         10.72        -4.26          2.54 \r\n 2019          323           11.26         13.98         2.43          0 \r\n 2019          324           7.894         16.46         2.39          6.604 \r\n 2019          325           1.866         13.02        -1.171         2.54 \r\n 2019          326           9.17          1.722        -5.964         0 \r\n 2019          327           10.34         8.04         -2.518         0 \r\n 2019          328           9.98          16.18        -1.09          0 \r\n 2019          329           9.57          13.83         0.428         0 \r\n 2019          330           1.656         3.422        -1.009         6.35 \r\n 2019          331           6.341         3.632        -2.061         0.254 \r\n 2019          332           2.235         0.205        -2.628         0 \r\n 2019          333           1.757         2.106        -0.704         7.366 \r\n 2019          334           4.033         9.92          2.006         0.508 \r\n 2019          335           2.116         2.168        -2.588         0.762 \r\n 2019          336           10.15         3.784        -7.688         0 \r\n 2019          337           9.41          11.92        -0.725         0 \r\n 2019          338           9.88          12.02        -1.413         0 \r\n 2019          339           9.58          14.89        -2.466         0 \r\n 2019          340           9.03          2.896        -6.48          0 \r\n 2019          341           8.8           8.13         -6.258         0 \r\n 2019          342           3.951         8.13          1.915         0 \r\n 2019          343           4.816         6.572        -10.93         0 \r\n 2019          344           7.394        -4.392        -12.08         0 \r\n 2019          345           9.12         -0.28         -8.69          0 \r\n 2019          346           4.052         8.87         -4.291         0 \r\n 2019          347           3.984         2.32         -6.947         0 \r\n 2019          348           4.814        -2.223        -10.62         0 \r\n 2019          349           3.175        -6.866        -11.33         0 \r\n 2019          350           6.263        -2.082        -10.12         0.762 \r\n 2019          351           6.336         1.076        -7.76          0.254 \r\n 2019          352           9.61         -0.644        -12.62         0 \r\n 2019          353           9.11          8.41         -4.614         0 \r\n 2019          354           9.03          6.914        -2.872         0 \r\n 2019          355           9.13          10.88        -4.696         0 \r\n 2019          356           8.7           10.3         -0.482         0 \r\n 2019          357           8.25          12.47         0.084         0 \r\n 2019          358           6.338         12.26         2.006         0 \r\n 2019          359           8.29          16.5          5.442         0 \r\n 2019          360           3.047         8.53         -1.454         0 \r\n 2019          361           8.41          7.138        -4.736         0 \r\n 2019          362           1.247         11.22         2.006         23.62 \r\n 2019          363           2.445         10.84        -2.405         0.254 \r\n 2019          364           1.715        -2.264        -4.26          0 \r\n 2019          365           5.242         2.622        -5.203         0 \r\n 2020          1             8.93          10.64        -5.344         0 \r\n 2020          2             8.69          11.32         0.842         0 \r\n 2020          3             3.26          3.632        -1.738         0 \r\n 2020          4             5.745         1.682        -4.534         0 \r\n 2020          5             9.43          8.04         -2.122         0 \r\n 2020          6             5.553         5.361        -7.292         0 \r\n 2020          7             9.08          6.452        -3.844         0 \r\n 2020          8             8.93         -0.482        -10.12         0 \r\n 2020          9             5.53          15.78        -1.788         0 \r\n 2020          10            0.795        -1.15         -8.25          22.86 \r\n 2020          11            4.01         -7.373        -10.75         0 \r\n 2020          12            4.675        -2.892        -9.06          0 \r\n 2020          13            5.383         0.954        -3.196         4.318 \r\n 2020          14            10.51         2.471        -4.918         9.65 \r\n 2020          15            1.385856     -1.859        -14.18         0 \r\n 2020          16            9.79776      -10.38        -18.17         0 \r\n 2020          17            1.941408     -0.32         -12.21         13.208 \r\n 2020          18            9.02016       0.67         -16.87         0.762 \r\n 2020          19            9.34848      -13.16        -19.64         0 \r\n 2020          20            8.31168      -10.16        -20.64         0 \r\n 2020          21            9.26208      -3.601        -20.8          0 \r\n 2020          22            3.79728       0.378        -3.682         3.556 \r\n 2020          23            4.093632      1.804        -0.584         4.064 \r\n 2020          24            5.40864       0.003        -2.335         4.318 \r\n 2020          25            7.94016       0.53         -8.79          0.254 \r\n 2020          26            7.128         0.084        -5             0.254 \r\n 2020          27            7.28352      -0.28         -3.257         0 \r\n 2020          28            5.990112     -1.474        -6.45          0 \r\n 2020          29            7.59456      -0.159        -7.861         0.254 \r\n 2020          30            6.88608      -0.452        -6.44          0 \r\n 2020          31            6.092928      2.734        -3.135         0.254 \r\n 2020          32            11.20608      5.038        -0.178         0 \r\n 2020          33            12.5712       17.02         0.964         0 \r\n 2020          34            6.012576      2.34         -1.474         0 \r\n 2020          35            7.24896      -1.059        -6.034         0 \r\n 2020          36            4.88592      -3.46         -9.59          0 \r\n 2020          37            13.89312      3.572        -12.86         0 \r\n 2020          38            5.26176      -2.548        -6.287         0 \r\n 2020          39            12.45024     -0.766        -10.38         0 \r\n 2020          40            6.187968      5.583        -5.052         0 \r\n 2020          41            14.27328      4.088        -9.73          0 \r\n 2020          42            13.824        2.148        -4.96          0 \r\n 2020          43            3.14928       1.076        -15.14         1.778 \r\n 2020          44            15.02496     -13.77        -22.89         0 \r\n 2020          45            15.56928     -7.617        -23.42         0 \r\n 2020          46            13.68576      5.491        -7.78          0 \r\n 2020          47            13.21056      7.804        -4.918         0 \r\n 2020          48            9.51264       9.09         -1.272         1.524 \r\n 2020          49            15.58656      4.047        -5.061         0 \r\n 2020          50            7.6896       -3.844        -10.2          0 \r\n 2020          51            16.30368     -2.609        -15.36         0 \r\n 2020          52            16.38144      5.098        -10.62         0 \r\n 2020          53            15.93216      11.08        -3.499         0 \r\n 2020          54            14.04         17.67         0.165         0 \r\n 2020          55            8.25984       5.238        -0.31          0 \r\n 2020          56            12.59712      4.754        -0.886         0 \r\n 2020          57            12.19968      2.45         -6.358         0 \r\n 2020          58            13.6944       4.422        -6.319         0 \r\n 2020          59            10.0224       4.552        -6.42          0 \r\n 2020          60            16.92576      11.05        -8             0 \r\n 2020          61            13.44384      17.91         1.176         0 \r\n 2020          62            10.18656      9.35         -2.648         0 \r\n 2020          63            18.1008       13.06         0.711         0 \r\n 2020          64            17.13312      12.94        -0.886         0 \r\n 2020          65            14.52384      11.34         0.813         0 \r\n 2020          66            18.80928      11.26        -3.49          0 \r\n 2020          67            17.24544      18.24        -0.38          0 \r\n 2020          68            17.7552       21.23         5.643         0 \r\n 2020          69            1.862784      13.42        -0.38          15.24 \r\n 2020          70            16.20864      10.15        -2.244         0 \r\n 2020          71            16.39872      16.06         3.34          0 \r\n 2020          72            10.00512      17.77         2.148         0 \r\n 2020          73            13.61664      9.58         -3.034         3.81 \r\n 2020          74            6.702048      2.855        -0.886         4.826 \r\n 2020          75            7.4304        2.612        -1.898         4.572 \r\n 2020          76            7.6032        7.299         0.246         0.254 \r\n 2020          77            18.72288      10.15        -0.766         0 \r\n 2020          78            5.526144      11.36         5.229         11.176 \r\n 2020          79            6.901632      20.34         4.038         13.208 \r\n 2020          80            16.77024      4.068        -4.087         0 \r\n 2020          81            20.71872      6.996        -4.27          0 \r\n 2020          82            4.878144      1.5          -0.725         1.778 \r\n 2020          83            5.571072      7.066         0.772         0 \r\n 2020          84            10.34208      10.58         2.886         0 \r\n 2020          85            9.65088       15.88         4.32          0 \r\n 2020          86            9.288         13.95         6.956         0 \r\n 2020          87            3.220128      9.42          5.814         2.032 \r\n 2020          88            13.51296      23.58         4.068         6.604 \r\n 2020          89            22.97376      14.83         3.28          0 \r\n 2020          90            22.61088      18.34        -0.461         0 \r\n 2020          91            22.55904      16.97         0.803         0 \r\n 2020          92            21.59136      19.1          2.836         0.254 \r\n 2020          93            3.907872      14.31         8.77          4.826 \r\n 2020          94            2.392416      12.76        -1.808         11.938 \r\n 2020          95            13.74624      6.43         -3.692         3.048 \r\n 2020          96            22.35168      16.11        -0.654         0 \r\n 2020          97            8.1216        17.69         6.34          0 \r\n 2020          98            18.68832      26.36         12.53         0 \r\n 2020          99            16.01856      24.82         4.442         0 \r\n 2020          100           20.62368      11.35        -0.806         0 \r\n 2020          101           22.74912      11.63        -4.97          0 \r\n 2020          102           12.86496      18.31         3.632         6.096 \r\n 2020          103           3.937248      12.7         -1.778         11.684 \r\n 2020          104           21.6432       5.491        -4.371         0 \r\n 2020          105           22.22208      7.056        -5.172         0 \r\n 2020          106           20.20032      7.52         -7.668         1.524 \r\n 2020          107           4.964544      1.986        -2.71          1.524 \r\n 2020          108           23.18976      6.016        -0.806         6.35 \r\n 2020          109           25.75584      16.5         -0.502         0 \r\n 2020          110           25.24608      16.83         3.179         0 \r\n 2020          111           19.27584      19.52         3.997         0 \r\n 2020          112           26.10144      18.31         1.844         0 \r\n 2020          113           22.92192      23.44         8.93          0 \r\n 2020          114           18.4896       24.29         8.34          0 \r\n 2020          115           6.175008      16.99         9.7           2.794 \r\n 2020          116           21.41856      18.78         7.349         0 \r\n 2020          117           22.95648      21.1          9.08          0.254 \r\n 2020          118           23.33664      24.9          11.17         0.254 \r\n 2020          119           11.85408      23.06         11.01         0 \r\n 2020          120           14.67936      18.07         7.804         0 \r\n 2020          121           27.35424      23.06         5.824         0 \r\n 2020          122           19.88064      25.45         8.29          0 \r\n 2020          123           17.76384      24.81         13.06         0 \r\n 2020          124           21.5568       25.65         10.6          0 \r\n 2020          125           6.379776      13.85         8.01          2.286 \r\n 2020          126           4.999104      11.68         6.764         4.572 \r\n 2020          127           19.98432      17.06         5.421         0 \r\n 2020          128           17.39232      19.11         3.239         3.81 \r\n 2020          129           28.2096       13.77         3.198         0.508 \r\n 2020          130           25.49664      19.34        -0.776         0 \r\n 2020          131           21.22848      13.62         2.116         0 \r\n 2020          132           21.61728      15.28         2.046         0 \r\n 2020          133           19.0512       17.05         4.856         0 \r\n 2020          134           6.98112       13.58         4.775         1.27 \r\n 2020          135           8.48448       24.56         12.48         70.358 \r\n 2020          136           22.19616      24.07         12.9          0 \r\n 2020          137           18.13536      23.45         11.79         0 \r\n 2020          138           8.27712       17.36         11.63         16.002 \r\n 2020          139           8.66592       15.33         10.26         1.27 \r\n 2020          140           9.65952       16.75         10.51         0 \r\n 2020          141           6.383232      17.71         13.1          0 \r\n 2020          142           8.24256       17.22         12.5          0 \r\n 2020          143           10.0224       23.45         13.8          0 \r\n 2020          144           15.05952      26.31         15.62         8.636 \r\n 2020          145           17.63424      27.35         16.97         8.128 \r\n 2020          146           19.25856      27.89         17.93         16.51 \r\n 2020          147           16.0272       26.35         16.48         3.302 \r\n 2020          148           16.94304      26.39         16.73         1.27 \r\n 2020          149           9.72          22.83         14            18.796 \r\n 2020          150           28.46016      22.21         10.75         0 \r\n 2020          151           15.5952       22.75         9.52          0 \r\n 2020          152           14.0832       22.7          13.06         0 \r\n 2020          153           20.68416      28.81         16.81         0 \r\n 2020          154           27.63936      31.51         18.01         0 \r\n 2020          155           20.93472      31.26         20.62         3.81 \r\n 2020          156           27.42336      31.16         19.14         0 \r\n 2020          157           26.49024      33.09         18.8          9.144 \r\n 2020          158           25.15968      30.61         19.68         0 \r\n 2020          159           28.22688      31.88         20.36         0 \r\n 2020          160           28.82304      31.79         20.4          0 \r\n 2020          161           8.19072       25.22         19.45         23.622 \r\n 2020          162           16.23456      22.23         13.51         46.736 \r\n 2020          163           29.16         28.57         11.83         0 \r\n 2020          164           29.41056      30.91         13.11         0 \r\n 2020          165           29.19456      26.62         14.7          0 \r\n 2020          166           26.84448      26.93         13.8          0 \r\n 2020          167           28.13184      29.62         16.78         0 \r\n 2020          168           28.83168      28.58         16.54         0 \r\n 2020          169           28.19232      28.74         14.6          0 \r\n 2020          170           23.8032       30.1          17.89         0 \r\n 2020          171           10.22112      26.63         19.28         9.652 \r\n 2020          172           21.72096      27.83         18.35         5.842 \r\n 2020          173           25.75584      30.28         18.86         0 \r\n 2020          174           15.18048      24.64         15.77         13.97 \r\n 2020          175           26.25696      24.51         14.54         0 \r\n 2020          176           27.93312      28.24         12.53         0 \r\n 2020          177           28.52928      29.92         14.28         0 \r\n 2020          178           21.17664      31.75         21.27         1.778 \r\n 2020          179           23.8032       29.55         18.53         0.254 \r\n 2020          180           16.848        29.42         19.16         3.556 \r\n 2020          181           18.73152      30.66         22.17         0 \r\n 2020          182           12.4416       27.91         22.03         0 \r\n 2020          183           16.03584      28.59         19.38         1.016 \r\n 2020          184           24.93504      31.61         18.44         0 \r\n 2020          185           22.91328      30.94         19.98         0 \r\n 2020          186           20.9088       32.14         19.76         0 \r\n 2020          187           25.47072      32.52         19.47         0 \r\n 2020          188           24.31296      33.06         20.1          0 \r\n 2020          189           25.52256      33.37         21.37         0 \r\n 2020          190           26.81856      33.97         21.56         0 \r\n 2020          191           23.51808      30.52         18.86         0 \r\n 2020          192           26.23104      32.78         16.18         0 \r\n 2020          193           28.26144      32.34         18.79         4.826 \r\n 2020          194           26.21376      30.74         17.17         0.254 \r\n 2020          195           26.80992      30.91         17.03         0 \r\n 2020          196           18.07488      31.76         19.28         32.512 \r\n 2020          197           11.20608      25.95         18.03         20.066 \r\n 2020          198           23.10336      30.4          17.99         0 \r\n 2020          199           25.34112      33.06         19.38         0 \r\n 2020          200           19.7856       32.51         23.45         0 \r\n 2020          201           18.60192      29.4          19.7          0 \r\n 2020          202           8.821439      25.01         19            3.048 \r\n 2020          203           11.20608      27.44         18.82         6.604 \r\n 2020          204           27.6912       29.12         17.95         0 \r\n 2020          205           25.22016      30.25         16.41         0 \r\n 2020          206           25.17696      32.89         20            0 \r\n 2020          207           23.86368      32.9          22.79         0 \r\n 2020          208           19.70784      32.82         21.47         1.778 \r\n 2020          209           21.50496      29.58         18.74         15.748 \r\n 2020          210           27.36288      29.91         16.77         0 \r\n 2020          211           17.68608      31.04         18.86         0.508 \r\n 2020          212           11.45664      27.78         20.17         10.414 \r\n 2020          213           25.26336      27.54         16.36         0.254 \r\n 2020          214           25.47936      28.56         14.86         0 \r\n 2020          215           15.552        26.6          15.14         10.16 \r\n 2020          216           24.85728      23.76         10.86         0 \r\n 2020          217           23.69088      25.28         8.24          0 \r\n 2020          218           19.06848      24.88         10.4          0 \r\n 2020          219           12.55392      26.3          15.9          15.748 \r\n 2020          220           21.67776      29.06         16.29         0.254 \r\n 2020          221           24.0624       30.46         19.63         0 \r\n 2020          222           20.48544      31.12         22.19         0.254 \r\n 2020          223           15.57792      29.71         17.35         0 \r\n 2020          224           23.51808      28.35         14.98         0 \r\n 2020          225           21.66912      30.53         18.86         0 \r\n 2020          226           23.50944      31.47         20.94         0 \r\n 2020          227           23.8896       31.3          19.42         0 \r\n 2020          228           25.49664      27.72         15.62         8.636 \r\n 2020          229           24.48576      30.6          13.73         0 \r\n 2020          230           24.98688      28.23         13.88         0 \r\n 2020          231           24.56352      26.66         11.56         0 \r\n 2020          232           25.42752      28.06         11.15         0 \r\n 2020          233           24.60672      28.18         12.71         0 \r\n 2020          234           24.26112      30.93         13.13         0 \r\n 2020          235           21.28896      31.32         16.79         0 \r\n 2020          236           21.89376      35.75         19.35         0 \r\n 2020          237           22.57632      35.2          20.52         0 \r\n 2020          238           21.56544      33.78         20.13         0 \r\n 2020          239           22.73184      35.24         20.09         0 \r\n 2020          240           22.65408      33.27         21.73         0 \r\n 2020          241           22.15296      35.09         19.03         0 \r\n 2020          242           22.032        27.1          11.85         0 \r\n 2020          243           21.79008      27.6          9.76          0 \r\n 2020          244           11.58624      25.75         15.02         0.508 \r\n 2020          245           6.075648      21.11         14.28         6.604 \r\n 2020          246           23.01696      32.5          13.79         0.254 \r\n 2020          247           22.64544      27.08         12.49         0 \r\n 2020          248           22.68864      28.62         8.87          0 \r\n 2020          249           21.79008      31.56         12.84         0 \r\n 2020          250           17.52192      33.53         22.75         0 \r\n 2020          251           15.90624      26.04         11.74         19.558 \r\n 2020          252           3.081024      11.75         7.642         7.366001 \r\n 2020          253           3.528576      10.78         7.672         13.716 \r\n 2020          254           4.124736      12.09         8.55          29.464 \r\n 2020          255           2.947968      16.37         11.47         20.574 \r\n 2020          256           12.15648      23.01         10.73         0.254 \r\n 2020          257           20.80512      26.24         8.15          0 \r\n 2020          258           18.3168       26.01         10.02         0 \r\n 2020          259           20.39904      27.5          11.68         0 \r\n 2020          260           19.1376       29.59         13.45         0 \r\n 2020          261           18.20448      22.77         8.72          0 \r\n 2020          262           19.88928      21.32         6.875         0 \r\n 2020          263           17.39232      20.12         7.904         0 \r\n 2020          264           17.76384      22.73         7.762         0 \r\n 2020          265           18.00576      25.65         9.03          0 \r\n 2020          266           18.06624      26.43         10.59         0 \r\n 2020          267           14.49792      26.62         12.45         0 \r\n 2020          268           17.9712       27.42         14.43         0 \r\n 2020          269           18.1872       29.35         15.1          0 \r\n 2020          270           12.70944      29.81         16.87         0 \r\n 2020          271           1.426464      19.84         9.95          7.874 \r\n 2020          272           10.59264      17.43         7.772         1.778 \r\n 2020          273           12.16512      18.95         6.35          0 \r\n 2020          274           16.96896      21.13         8.81          0 \r\n 2020          275           13.9536       15.66         4.814         0 \r\n 2020          276           16.3728       15.76         0.651         0 \r\n 2020          277           2.195424      8.81          2.288         8.382 \r\n 2020          278           18.4032       15.91         1.238         0.254 \r\n 2020          279           16.05312      20.28         5.057         0 \r\n 2020          280           17.54784      27.22         7.662         0 \r\n 2020          281           17.0208       27.84         10.71         0 \r\n 2020          282           15.552        24.24         9.92          0 \r\n 2020          283           15.53472      29.34         14.55         0 \r\n 2020          284           15.25824      26.57         15.27         0 \r\n 2020          285           14.48064      27.8          14.12         0 \r\n 2020          286           16.83072      21.59         7.147         0 \r\n 2020          287           16.51104      21.63         7.076         0 \r\n 2020          288           14.688        25.35         8.8           0 \r\n 2020          289           16.51968      12.86        -0.078         0 \r\n 2020          290           14.80032      12.92        -0.907         0 \r\n 2020          291           7.89696       20.03         7.178         0 \r\n 2020          292           8.64864       7.178        -0.118         4.826 \r\n 2020          293           11.14         3.936        -0.604         0 \r\n 2020          294           2.558304      5.906        -0.198         1.524 \r\n 2020          295           7.3872        11.11        -0.826         11.684 \r\n 2020          296           7.70688       25.83         2.713         21.844 \r\n 2020          297           11.42         4.552         0.286         14.986 \r\n 2020          298           4.589569      2.633        -1.859         0 \r\n 2020          299           2.482272      1.884        -2.233         0 \r\n 2020          300           5.087232     -0.948        -4.402         0.254 \r\n 2020          301           6.853248      1.702        -4.34          0 \r\n 2020          302           9.18432       9.59         -4.098         0 \r\n 2020          303           8.06112       7.53         -2.325         0 \r\n 2020          304           13.72896      11.77        -5.264         0 \r\n 2020          305           13.27104      19.89         2.35          0 \r\n 2020          306           13.72032      7.833        -4.858         0 \r\n 2020          307           13.24512      16.81        -5.548         0 \r\n 2020          308           13.25376      24.15         1.925         0 \r\n 2020          309           11.98368      22.01         7.157         0 \r\n 2020          310           12.3552       22.83         5.906         0 \r\n 2020          311           12.32928      23.28         6.633         0 \r\n 2020          312           12.32064      22.12         9.48          0 \r\n 2020          313           8.43264       23.63         12.62         0 \r\n 2020          314           3.773088      21.47         6.148         0 \r\n 2020          315           2.61792       10.63        -1.272         24.638 \r\n 2020          316           12.312        11.06        -4.352         0 \r\n 2020          317           9.59904       13.81        -4.23          0 \r\n 2020          318           12.40704      6.552        -8.53          0 \r\n 2020          319           1.621728      13.05        -0.461         0 \r\n 2020          320           10.8          9.22         -2.041         0.762 \r\n 2020          321           11.51712      15.08        -4.28          0 \r\n 2020          322           7.68096       8.29         -5.122         0 \r\n 2020          323           10.87776      17.89        -0.219         0 \r\n 2020          324           10.35936      20.65         8.5           0 \r\n 2020          325           8.4672        13.53         3.078         0 \r\n 2020          326           4.859136      7.289         0.852         0 \r\n 2020          327           9.357119      11.29        -2.082         0.254 \r\n 2020          328           2.359584      2.602        -6.146         5.334 \r\n 2020          329           0.805248      7.167         0.286         30.734 \r\n 2020          330           1.790208      5.098         2.309         14.986 \r\n 2020          331           10.0224       10.58        -0.584         0 \r\n 2020          332           10.61856      8.38         -2.021         0 \r\n 2020          333           10.51488      14.22        -1.252         0 \r\n 2020          334           6.525792      4.583        -3.703         0 \r\n 2020          335           9.62496       0.852        -10.03         0 \r\n 2020          336           10.6272       6.714        -12.51         0 \r\n 2020          337           9.322561      10.98        -6.978         0 \r\n 2020          338           9.91008       6.914        -7.861         0 \r\n 2020          339           9.8496        10.81        -4.554         0 \r\n 2020          340           9.49536       10.51        -5.922         0 \r\n 2020          341           8.65728       5.856        -3.439         0 \r\n 2020          342           2.390688      1.004        -2.791         0 \r\n 2020          343           7.07616       6.532        -2.69          0 \r\n 2020          344           9.55584       16.22        -0.522         0 \r\n 2020          345           8.856         18.62        -1.372         0 \r\n 2020          346           0.5488128     3.098         0.104         8.636 \r\n 2020          347           3.3696        0.126        -6.582         7.62 \r\n 2020          348           4.275936     -3.418        -8.81          0 \r\n 2020          349           8.83008      -3.622        -12.42         0 \r\n 2020          350           4.641408     -3.804        -10.6          0 \r\n 2020          351           8.95104       1.986        -11.15         2.54 \r\n 2020          352           6.65712       2.006        -9.11          0 \r\n 2020          353           5.795712      8.81         -4.534         0 \r\n 2020          354           9.32          2.875        -6.928         0 \r\n 2020          355           9.04608       6.148        -6.896         0 \r\n 2020          356           9.74592       9.64         -1.028         0 \r\n 2020          357           9.2448        12.1         -5.244         0 \r\n 2020          358           2.726784      12.3         -11.05         0 \r\n 2020          359           9.927359     -8.81         -15.48         0 \r\n 2020          360           9.504        -0.766        -16.71         0 \r\n 2020          361           9.68544       6.804        -9.79          0 \r\n 2020          362           3.71088       1.056        -4.646         0 \r\n 2020          363           5.679936     -2.304        -8.45          0 \r\n 2020          364           0.943488     -0.786        -7.474         23.368 \r\n 2020          365           8.242561     -0.573        -6.014         0 \r\n 2020          366           7.23168      -2.882        -9.75          2.032 \r\n 2021          1             1.835136     -4.736        -9             9.398 \r\n 2021          2             6.335712      0.469        -11.9          0.508 \r\n 2021          3             8.75232      -2.041        -14.81         0 \r\n 2021          4             6.796224      4.25         -3.429         9.652 \r\n 2021          5             8.88192       5.624        -9.33          0 \r\n 2021          6             4.582656      2.997        -0.907         0 \r\n 2021          7             7.05024       2.512        -3.642         0 \r\n 2021          8             4.27248      -0.573        -3.885         0 \r\n 2021          9             2.7864       -3.216        -6.358         0 \r\n 2021          10            3.62448      -0.928        -7.13          0 \r\n 2021          11            10.6704       3.825        -4.777         0 \r\n 2021          12            10.584        7.147        -5             0 \r\n 2021          13            6.5232        6.189        -0.198         0 \r\n 2021          14            2.335392      4.228        -1.322         1.27 \r\n 2021          15            3.213216      0.813        -2.446         1.27 \r\n 2021          16            4.184352     -0.766        -4.27          0 \r\n 2021          17            6.568992     -0.34         -5.396         0.254 \r\n 2021          18            7.9056        4.32         -11.09         0 \r\n 2021          19            9.77184       3.36         -9.91          0 \r\n 2021          20            11.55168      6.714        -12.51         0 \r\n 2021          21            11.54304      7.52         -4.696         0 \r\n 2021          22            11.37888     -1.018        -11.48         0 \r\n 2021          23            8.08704      -1.332        -12.76         0 \r\n 2021          24            3.773088      0.064        -3.814         0.254 \r\n 2021          25            1.967328     -2.912        -6.258         12.446 \r\n 2021          26            8.22528      -4.168        -10.42         0 \r\n 2021          27            10.70496     -3.834        -15.18         0 \r\n 2021          28            12.30336     -3.774        -19.78         0 \r\n 2021          29            11.4048       2.572        -8.39          0.508 \r\n 2021          30            2.28528       2.522        -1.322         12.7 \r\n 2021          31            5.129568     -0.098        -3.794         0.254 \r\n 2021          32            5.418144     -2.264        -10.3          0 \r\n 2021          33            9.52992      -2.021        -13.63         0 \r\n 2021          34            12.19968      4.775        -7.313         0 \r\n 2021          35            6.289056      4.937        -10.42         1.524 \r\n 2021          36            13.6944      -6.622        -14.69         0 \r\n 2021          37            7.02432      -12.47        -21.7          2.794 \r\n 2021          38            7.9488       -16.05        -24.11         0 \r\n 2021          39            6.53184      -15.73        -22.21         3.302 \r\n 2021          40            12.60576     -8.59         -24.68         0.254 \r\n 2021          41            6.513696     -11.31        -17.54         0 \r\n 2021          42            9.305279     -13.59        -19.03         0 \r\n 2021          43            8.00928      -17.93        -21.93         0 \r\n 2021          44            13.4784      -15.4         -22.17         0 \r\n 2021          45            8.9424       -20.31        -23.62         0 \r\n 2021          46            9.296641     -19.07        -24.75         0 \r\n 2021          47            16.22592     -11.86        -27.91         0 \r\n 2021          48            11.82816     -7.678        -22.23         0 \r\n 2021          49            15.00768     -3.876        -20.09         0 \r\n 2021          50            12.20832     -2.041        -17.03         0 \r\n 2021          51            16.18272      1.217        -12.33         0.254 \r\n 2021          52            3.506112      1.186        -7.373         0.254 \r\n 2021          53            15.77664      6.41         -5.67          0 \r\n 2021          54            16.7184       9.35         -1.252         0 \r\n 2021          55            10.29888      5.442        -3.784         0 \r\n 2021          56            14.14368      8.26         -5.446         0 \r\n 2021          57            12.53664      8.98         -3.499         0 \r\n 2021          58            15.75936      13.47        -0.786         0 \r\n 2021          59            9.85824       4.846        -3.672         0 \r\n 2021          60            16.72704      4.351        -6.826         0 \r\n 2021          61            17.3232       13.02        -6.115         0 \r\n 2021          62            17.35776      18.97        -1.292         0 \r\n 2021          63            17.40096      15.18        -0.32          0 \r\n 2021          64            16.57152      11.9         -3.49          0 \r\n 2021          65            17.12448      18.15        -0.826         0 \r\n 2021          66            17.3664       18.67         2.997         0 \r\n 2021          67            16.70976      21.23         5.502         0 \r\n 2021          68            16.5456       21.7          7.722         0 \r\n 2021          69            8.7264        23.25         3.179         6.35 \r\n 2021          70            17.09856      12.51        -0.563         0 \r\n 2021          71            7.52544       9.36         -2.679         0 \r\n 2021          72            11.0592       14.53        -0.532         0.762 \r\n 2021          73            9.34          7.46          1.874         21.844 \r\n 2021          74            2.934144      2.592         0.975         6.096 \r\n 2021          75            8.77824       8.49          0.61          0 \r\n 2021          76            1.821312      3.036         0.408         1.016 \r\n 2021          77            14.03136      10.35        -0.694         0.508 \r\n 2021          78            21.15072      11.91        -3.946         0 \r\n 2021          79            20.952        15.4         -1.434         0 \r\n 2021          80            18.36864      18.11         4.714         0 \r\n 2021          81            7.3872        14.82         8.36          1.778 \r\n 2021          82            4.477248      15.8          7.652         27.178 \r\n 2021          83            4.226688      9.39          4.351         0 \r\n 2021          84            10.6          5.3           3.946         8.128 \r\n 2021          85            11.94048      13.15         3.976         12.446 \r\n 2021          86            7.98336       13.36         4.684         11.684 \r\n 2021          87            22.66272      11.01         0.297         0 \r\n 2021          88            22.10976      22.37         4.694         0 \r\n 2021          89            15.47424      14.57         1.379         0 \r\n 2021          90            23.23296      5.886        -3.216         0 \r\n 2021          91            23.25024      8.73         -6.988         0 \r\n 2021          92            22.61952      16.16        -1.028         0 \r\n 2021          93            22.49856      22.76         6.694         0 \r\n 2021          94            21.97152      26.64         6.269         0 \r\n 2021          95            18.78336      25.93         13.73         0 \r\n 2021          96            15.88032      25.36         14.09         0 \r\n 2021          97            8.31168       21.89         9.48          19.304 \r\n 2021          98            5.360256      11.24         7.4           0.508 \r\n 2021          99            10.27296      15.64         6.976         0.254 \r\n 2021          100           3.945888      10.51         6.047         1.524 \r\n 2021          101           21.91968      17.68         3.37          0 \r\n 2021          102           23.25888      15.38         4.785         0 \r\n 2021          103           23.90688      13.77        -0.684         0 \r\n 2021          104           22.36032      11.01        -0.644         0 \r\n 2021          105           16.58016      11.61        -1.181         0 \r\n 2021          106           8.5968        11.17        -0.078         0.254 \r\n 2021          107           18.36864      17.68         5.4           3.048 \r\n 2021          108           16.3296       17.05         5.491         0 \r\n 2021          109           8.69184       7.38         -0.563         3.302 \r\n 2021          110           17.30592      6.774        -3.531         0 \r\n 2021          111           20.14848      8.48         -4.493         0 \r\n 2021          112           24.64992      15.3         -3.804         0 \r\n 2021          113           6.084288      13.37         4.17          0 \r\n 2021          114           24.0624       16.87         3.654         0 \r\n 2021          115           23.78592      18.63         0.954         0 \r\n 2021          116           24.7968       29.62         9.38          0 \r\n 2021          117           20.57184      28.95         15.41         0 \r\n 2021          118           10.07424      17.74         9.94          1.778 \r\n 2021          119           24.77088      25.09         8.65          0 \r\n 2021          120           23.59584      25.8          5.906         0 \r\n 2021          121           26.38656      29.8          13.06         0 \r\n 2021          122           24.624        27.92         14.26         0 \r\n 2021          123           5.424192      20.24         12.06         1.778 \r\n 2021          124           19.85472      17.97         5.452         0 \r\n 2021          125           19.9152       19.89         1.116         0 \r\n 2021          126           17.37504      18.22         5.148         0.254 \r\n 2021          127           23.95872      20.97         4.826         0 \r\n 2021          128           4.86432       11.88         6.158         30.988 \r\n 2021          129           18.65376      15.92         3.724         20.828 \r\n 2021          130           20.96064      17.23         2.674         0 \r\n 2021          131           21.40128      16.2          4.17          0 \r\n 2021          132           25.3152       16.81         2.582         0 \r\n 2021          133           27.19008      19.13         4.17          0 \r\n 2021          134           12.45024      19.72         7.542         2.54 \r\n 2021          135           9.51264       18.1          10.98         3.81 \r\n 2021          136           6.200928      15.67         9.22          12.954 \r\n 2021          137           6.98976       18.71         13.8          3.556 \r\n 2021          138           7.52544       20.47         14.97         9.144 \r\n 2021          139           13.27104      24.47         17.96         4.064 \r\n 2021          140           8.44128       22.31         17.79         6.857999 \r\n 2021          141           11.19744      24.49         17.97         0 \r\n 2021          142           10.35072      25.54         17.52         5.08 \r\n 2021          143           23.08608      27.34         16.33         0 \r\n 2021          144           14.41152      25.49         19.05         0 \r\n 2021          145           11.95776      24.57         16.1          1.016 \r\n 2021          146           21.9024       29.79         12.88         1.27 \r\n 2021          147           18.19584      25.83         7.278         4.318 \r\n 2021          148           7.52544       9.46          5.592         0.508 \r\n 2021          149           29.0304       18.47         2.976         0 \r\n 2021          150           17.00352      17.57         5.785         0 \r\n 2021          151           18.10944      20.54         11.01         0 \r\n 2021          152           25.7904       24.31         10.38         0 \r\n 2021          153           26.50752      27.45         11.09         0 \r\n 2021          154           27.53568      30.14         12.66         0 \r\n 2021          155           29.0304       30.75         14.11         0 \r\n 2021          156           27.41472      32.42         18.97         0 \r\n 2021          157           21.13344      30.14         16.55         0 \r\n 2021          158           26.50752      31.24         18.56         0 \r\n 2021          159           23.81184      31.21         17.98         0 \r\n 2021          160           25.24608      33.86         17.93         0 \r\n 2021          161           28.00224      33.59         19.87         0 \r\n 2021          162           18.58464      33.24         20.96         0 \r\n 2021          163           28.40832      31.67         15.74         0 \r\n 2021          164           29.36736      34.52         12.9          0 \r\n 2021          165           28.01088      32.32         16.16         0 \r\n 2021          166           29.60064      32.42         13.26         0 \r\n 2021          167           27.83808      31.92         15.83         0 \r\n 2021          168           20.81376      34.15         21.3          0 \r\n 2021          169           13.19328      30.94         21.34         20.828 \r\n 2021          170           28.65888      33.57         20.11         6.096 \r\n 2021          171           16.31232      28.96         17.32         19.05 \r\n 2021          172           27.62208      21.89         10.05         0 \r\n 2021          173           23.05152      28.2          8.69          0 \r\n 2021          174           26.89632      28.74         18.64         0 \r\n 2021          175           14.46336      28.72         19.98         75.946 \r\n 2021          176           14.54976      27.96         20.26         0.254 \r\n 2021          177           15.04224      27.64         18.11         1.778 \r\n 2021          178           17.26272      26.5          16.42         0 \r\n 2021          179           15.88896      28.04         18.94         0.254 \r\n 2021          180           9.48672       25.24         19.88         5.334 \r\n 2021          181           17.93664      29.6          19.71         0.254 \r\n 2021          182           26.11008      29.34         17.67         0.254 \r\n 2021          183           23.70816      30.66         17.89         0 \r\n 2021          184           25.76448      31.26         17.17         0 \r\n 2021          185           26.81856      30.72         17.98         0 \r\n 2021          186           27.03456      31.19         19.92         0 \r\n 2021          187           26.66304      30.86         19.09         0 \r\n 2021          188           13.11552      29.4          18.55         2.286 \r\n 2021          189           17.6256       25.4          16.28         0 \r\n 2021          190           19.64736      29.99         17.7          4.318 \r\n 2021          191           17.77248      27.39         17.33         91.44 \r\n 2021          192           7.16256       21.21         16.56         0.508 \r\n 2021          193           13.824        24.63         14.81         0 \r\n 2021          194           24.6672       28.8          18.15         0 \r\n 2021          195           19.01664      30.69         20.16         54.61 \r\n 2021          196           10.2816       24.67         17.88         27.686 \r\n 2021          197           24.47712      28.86         16.08         0 \r\n 2021          198           25.22016      26.99         16.57         0 \r\n 2021          199           25.38432      28.47         14.89         0 \r\n 2021          200           24.26112      29.43         16.57         0 \r\n 2021          201           25.46208      30.45         17.25         0 \r\n 2021          202           23.63904      30.92         16.5          0 \r\n 2021          203           25.03872      30.42         18.47         0 \r\n 2021          204           24.83136      31.85         20.24         0 \r\n 2021          205           24.13152      33.61         22.31         0 \r\n 2021          206           19.60416      33.38         17.36         0 \r\n 2021          207           25.77312      31.76         16.16         0 \r\n 2021          208           25.73856      32.58         17.52         0 \r\n 2021          209           23.43168      34.86         21.47         0 \r\n 2021          210           20.79648      35.02         22.71         0 \r\n 2021          211           17.33184      28.8          19.42         2.286 \r\n 2021          212           12.63168      27.14         18.59         26.67 \r\n 2021          213           23.10336      28.02         15.14         0 \r\n 2021          214           23.55264      27.51         13.12         0 \r\n 2021          215           23.00832      27.9          12.23         0 \r\n 2021          216           23.96736      26.8          13.08         0 \r\n 2021          217           17.1936       27.19         17.67         1.27 \r\n 2021          218           21.07296      29.91         16.85         0.254 \r\n 2021          219           18.52416      30.56         21.02         0 \r\n 2021          220           16.27776      27.22         18.95         0 \r\n 2021          221           23.36256      33.58         21.99         0 \r\n 2021          222           19.872        32.23         23.83         0 \r\n 2021          223           19.73376      32.71         23.97         0 \r\n 2021          224           10.18656      29.48         20.71         0 \r\n 2021          225           20.96064      29.73         15.24         0 \r\n 2021          226           26.06688      28.64         11.95         0 \r\n 2021          227           25.19424      27.81         12.36         0 \r\n 2021          228           24.12288      27.86         14.31         0 \r\n 2021          229           22.3344       30.32         15.65         0 \r\n 2021          230           21.35808      30.92         18.17         0 \r\n 2021          231           21.33216      30.67         18.29         0 \r\n 2021          232           20.14848      31.54         19.32         0 \r\n 2021          233           23.64768      28.1          14.21         1.27 \r\n 2021          234           24.03648      28.49         12.26         0 \r\n 2021          235           23.33664      36.28         20.06         0 \r\n 2021          236           23.36256      35.49         23.17         0 \r\n 2021          237           17.77248      32.98         21.22         5.842 \r\n 2021          238           18.99072      31.83         20.25         0 \r\n 2021          239           22.64544      34.36         21.06         0 \r\n 2021          240           22.14432      33.21         21.99         0 \r\n 2021          241           16.53696      30.45         18.45         0 \r\n 2021          242           22.17024      30.7          16.79         0 \r\n 2021          243           10.11744      25.8          16.03         29.21 \r\n 2021          244           22.69728      26.84         14.21         0 \r\n 2021          245           14.35104      24.32         14.8          0 \r\n 2021          246           6.532704      27.26         16.38         11.684 \r\n 2021          247           8.48448       24.84         14.25         0 \r\n 2021          248           21.31488      29.84         13.28         0 \r\n 2021          249           21.43584      32.01         15.1          0 \r\n 2021          250           20.3904       31.73         12.98         0 \r\n 2021          251           22.51584      28.1          11.5          0 \r\n 2021          252           21.76416      28.04         8.9           0 \r\n 2021          253           19.60416      29.31         13.61         0 \r\n 2021          254           18.89568      31.62         16.81         0 \r\n 2021          255           17.16768      31.78         18.83         0 \r\n 2021          256           18.64512      30.42         17.55         0 \r\n 2021          257           12.71808      25.72         12.98         0 \r\n 2021          258           20.80512      26.79         10.18         0 \r\n 2021          259           19.872        30.31         14.46         0 \r\n 2021          260           18.42912      30.44         14.96         0 \r\n 2021          261           19.2672       30.94         12.66         0 \r\n 2021          262           19.224        31.74         16.95         0 \r\n 2021          263           12.16512      29.93         13.77         8.128 \r\n 2021          264           17.54784      23.05         9.9           0 \r\n 2021          265           20.3472       21.87         6.471         0 \r\n 2021          266           20.01024      25.9          4.927         0 \r\n 2021          267           11.664        24.35         9.03          0 \r\n 2021          268           19.85472      24.65         2.976         0.254 \r\n 2021          269           18.75744      32.01         11.94         0 \r\n 2021          270           18.62784      32.28         15.88         0 \r\n 2021          271           18.21312      31.22         12.89         0 \r\n 2021          272           14.48928      29.84         14.09         0 \r\n 2021          273           9.8064        29.38         17.41         16.51 \r\n 2021          274           8.23392       23.27         15.88         0.508 \r\n 2021          275           12.20832      25.5          14.15         0 \r\n 2021          276           14.256        25.25         11.32         0 \r\n 2021          277           17.77248      25.49         7.894         0 \r\n 2021          278           10.95552      22.68         11.54         0 \r\n 2021          279           6.213888      22.25         16.3          0 \r\n 2021          280           11.13696      26.36         15.6          0 \r\n 2021          281           15.7248       29.27         13.59         0 \r\n 2021          282           6.379776      24.28         15.36         0 \r\n 2021          283           2.399328      23.97         13.49         7.112 \r\n 2021          284           1.579392      13.9          8.89          56.896 \r\n 2021          285           16.01856      25.6          6.462         0 \r\n 2021          286           10.38528      23.19         9.92          24.13 \r\n 2021          287           16.3296       22.11         6.875         0 \r\n 2021          288           11.43936      16.02         5.018         0.508 \r\n 2021          289           16.2          17.32         1.884         0 \r\n 2021          290           15.78528      22.47         3.26          0 \r\n 2021          291           15.54336      24.33         5.442         0 \r\n 2021          292           14.48064      23.33         9.83          0 \r\n 2021          293           8.13888       21.01         7.338         0.254 \r\n 2021          294           4.249152      8.87          3.007         0 \r\n 2021          295           10.30752      12.21        -1.392         0 \r\n 2021          296           11.09376      13.2          2.836         0 \r\n 2021          297           1.010016      9.18          5.996         54.356 \r\n 2021          298           10.95552      12.06         2.875         0 \r\n 2021          299           12.58848      14.56         0.692         0 \r\n 2021          300           2.360448      12.37         8.65          11.938 \r\n 2021          301           2.213568      8.8           6.652         30.226 \r\n 2021          302           2.253312      9.54          5.956         3.556 \r\n 2021          303           13.9536       16.3          1.925         0 \r\n 2021          304           11.7936       11.35         1.014         0 \r\n 2021          305           6.225984      6.956        -1.707         0 \r\n 2021          306           11.62944      9.76         -4.798         0 \r\n 2021          307           7.67232       9.94         -2.588         0 \r\n 2021          308           10.21248      11.61         1.004         0 \r\n 2021          309           12.1824       13.91         1.137         0 \r\n 2021          310           12.4848       18.66         3.765         0 \r\n 2021          311           10.0224       19.92         6.733         0 \r\n 2021          312           11.07648      21.24         6.491         0 \r\n 2021          313           10.48032      16.64         6.29          0 \r\n 2021          314           2.502144      13.97         5.824         50.038 \r\n 2021          315           11.61216      10.41         2.471         4.826 \r\n 2021          316           3.538944      2.592        -0.999         0 \r\n 2021          317           6.284736      4.108        -1.332         0.254 \r\n 2021          318           10.03104      7.238        -1.474         0 \r\n 2021          319           10.35072      13.69        -0.28          0 \r\n 2021          320           8.86464       17.77        -0.188         0 \r\n 2021          321           6.696864      13.43        -0.766         0 \r\n 2021          322           11.43936      3.036        -6.45          0 \r\n 2021          323           7.18848       6.219        -6.784         0 \r\n 2021          324           8.856         13.65         0.752         0 \r\n 2021          325           10.6704       13.02        -4.685         0 \r\n 2021          326           7.344         4.643        -6.298         0 \r\n 2021          327           10.38528      14.58        -3.46          0 \r\n 2021          328           4.322592      13.57         0.54          0 \r\n 2021          329           10.86912      0.53         -9.67          0 \r\n 2021          330           9.58176       6.914        -9.85          0 \r\n 2021          331           8.27712       16.63        -0.3           0 \r\n 2021          332           9.504         8.67         -3.368         0 \r\n 2021          333           9.52128       16.46        -0.148         0 \r\n 2021          334           9.35712       16.31         0.994         0 \r\n 2021          335           8.90784       16.76         2.592         0 \r\n 2021          336           9.23616       16.07         4.18          0 \r\n 2021          337           9.53856       14.2          1.844         0 \r\n 2021          338           9.10656       7.602        -2.041         0 \r\n 2021          339           5.449248      13.39        -0.806         0 \r\n 2021          340           8.78688      -0.644        -11.8          0 \r\n 2021          341           7.8192        3.169        -11.6          0 \r\n 2021          342           9.44352       4.33         -8.3           0 \r\n 2021          343           8.65728       13.91         0.813         0 \r\n 2021          344           1.603584      5.34         -1.554         0.254 \r\n 2021          345           9.65952       6.572        -2.426         0 \r\n 2021          346           9.2016        12.72        -2.325         0 \r\n 2021          347           9.33984       13.28        -2.204         0 \r\n 2021          348           6.96384       15.31         0.975         0 \r\n 2021          349           6.75216       23.77         2.188         8.128 \r\n 2021          350           9.52992       5.098        -4.574         0 \r\n 2021          351           6.403968      3.784        -5.426         0 \r\n 2021          352           9.26208       0.479        -7.678         0 \r\n 2021          353           7.97472       0.924        -6.856         0 \r\n 2021          354           9.19296       4.694        -8.31          0 \r\n 2021          355           8.28576       4.432        -10.91         0 \r\n 2021          356           9.3312        6.088        -10.44         0 \r\n 2021          357           5.677344      11.65        -0.006         0 \r\n 2021          358           4.689792      15.1          3.461         0 \r\n 2021          359           9.21024       10.88        -1.636         0 \r\n 2021          360           3.537216      7.157        -5.344         0 \r\n 2021          361           4.382208      5.26         -3.632         0 \r\n 2021          362           1.194912      2.259        -9.18          8.636 \r\n 2021          363           2.983392     -6.826        -10.91         0 \r\n 2021          364           2.221344     -0.928        -7.82          0 \r\n 2021          365           1.649376      1.41         -7.334         0.254 \r\n 2022          1             2.248128     -7.334        -17.3          12.192 \r\n 2022          2             10.2816      -9.24         -23.54         0 \r\n 2022          3             8.49312      -1.11         -19.27         0 \r\n 2022          4             7.53408       3.886        -7.921         0.254 \r\n 2022          5             9.08064      -7.76         -14.85         0 \r\n 2022          6             10.01376     -14.28        -19.5          0 \r\n 2022          7             6.266592     -9.95         -19.33         0 \r\n 2022          8             2.966976     -0.088        -11.6          0 \r\n 2022          9             10.57536     -1.11         -14.18         0 \r\n 2022          10            10.21248     -4.614        -12.62         0 \r\n 2022          11            9.78048       8.27         -13.35         0 \r\n 2022          12            6.751296      10.94        -1.292         0 \r\n 2022          13            9.69408       10.17        -1.798         0 \r\n 2022          14            1.993248      1.096        -4.422         9.398 \r\n 2022          15            6.93792      -4.412        -12.09         5.588 \r\n 2022          16            7.29216       0.832        -13.97         0 \r\n 2022          17            9.5472        2.38         -6.46          4.064 \r\n 2022          18            9.31392       6.592        -3.499         0 \r\n 2022          19            7.49952       0.742        -17.58         0 \r\n 2022          20            11.75904     -11.64        -21.7          0 \r\n 2022          21            11.26656     -6.745        -22.91         0 \r\n 2022          22            11.448        4.775        -7.587         0 \r\n 2022          23            8.424         4.997        -12.39         0 \r\n 2022          24            6.081696      2.724        -15.62         0 \r\n 2022          25            12.20832     -10.46        -20.58         0 \r\n 2022          26            12.30336     -4.513        -21.82         0 \r\n 2022          27            5.550336      1.338        -8.94          0 \r\n 2022          28            12.64896     -4.818        -18.58         0 \r\n 2022          29            12.36384      3.846        -12.94         0 \r\n 2022          30            11.3184      -0.624        -10.64         0 \r\n 2022          31            10.37664      7.914        -7.902         0 \r\n 2022          32            6.902496      5.805        -8.94          0 \r\n 2022          33            7.80192      -8.85         -15.5          0 \r\n 2022          34            12.38976     -9.73         -18.91         0 \r\n 2022          35            11.06784     -2.932        -19.01         0 \r\n 2022          36            13.392        4.008        -16.55         0 \r\n 2022          37            10.4112       6.996        -9.16          0 \r\n 2022          38            9.59904       3.623        -12.04         0 \r\n 2022          39            11.94048      10.67        -3.338         0 \r\n 2022          40            8.26848       7.975        -2.771         0 \r\n 2022          41            10.7568       4.986        -4.392         0.508 \r\n 2022          42            5.664384      7.46         -12.72         3.302 \r\n 2022          43            13.97952     -6.076        -16.26         0 \r\n 2022          44            12.51072     -6.238        -11.71         0 \r\n 2022          45            14.7312       2.32         -11.74         0 \r\n 2022          46            12.11328      12.73        -7.485         0 \r\n 2022          47            7.75008       15.74        -4.21          3.302 \r\n 2022          48            4.975776     -4.168        -12.37         0 \r\n 2022          49            15.12864      7.409        -13.18         1.016 \r\n 2022          50            15.56928     -0.118        -12.7          0 \r\n 2022          51            14.904        15.76        -4.544         0 \r\n 2022          52            13.77216      15.91        -1.616         0 \r\n 2022          53            6.194016      1.551        -15.3          0 \r\n 2022          54            15.95808     -7.556        -17.93         0 \r\n 2022          55            4.73904      -7.87         -13.7          3.556 \r\n 2022          56            15.73344     -3.966        -16.4          0 \r\n 2022          57            16.60608      4.482        -14.91         0 \r\n 2022          58            17.09856      10.57        -9.22          0 \r\n 2022          59            15.30144      17.33        -2.466         0 \r\n 2022          60            16.79616      20.04         0.114         0 \r\n 2022          61            14.53248      23.2          0.934         0 \r\n 2022          62            16.89984      7.056        -2.8           0 \r\n 2022          63            13.97088      13.27        -3.601         0 \r\n 2022          64            6.496416      17.28        -0.057         22.098 \r\n 2022          65            12.95136      2.794        -3.946         4.318 \r\n 2022          66            17.18496     -1.14         -9.25          3.302 \r\n 2022          67            19.3968       2.836        -11.84         1.778 \r\n 2022          68            16.72704      0.084        -6.399         0 \r\n 2022          69            10.07424     -6.217        -10.95         0 \r\n 2022          70            20.13984     -3.834        -13.35         0.254 \r\n 2022          71            19.1376      -3.611        -16.87         0 \r\n 2022          72            19.59552      12.39        -3.662         0 \r\n 2022          73            15.95808      15.14         3.442         0 \r\n 2022          74            19.5696       16.21        -1.382         0 \r\n 2022          75            19.47456      20.67         2.39          0 \r\n 2022          76            15.05088      14.88         5.946         0 \r\n 2022          77            2.740608      6.31          2.087         11.43 \r\n 2022          78            20.45952      13.61        -1.21          0 \r\n 2022          79            19.47456      21.75         0.327         0 \r\n 2022          80            14.79168      22.23         8.87          5.588 \r\n 2022          81            3.172608      12.18         3.026         18.796 \r\n 2022          82            4.2984        3.078         1.137         0.762 \r\n 2022          83            3.13632       3.966         2.674         3.556 \r\n 2022          84            21.5136       10.22        -0.159         0 \r\n 2022          85            22.10976      5.937        -2.609         0 \r\n 2022          86            20.77056      5.4          -6.034         0 \r\n 2022          87            16.66656      7.722        -4.33          0 \r\n 2022          88            14.06592      14.14         1.176         20.828 \r\n 2022          89            4.96368       12.65        -0.442         0 \r\n 2022          90            7.09344       1.228        -2.456         1.27 \r\n 2022          91            21.87648      10.32        -4.838         0.254 \r\n 2022          92            17.42688      13.28         1.804         1.524 \r\n 2022          93            7.27488       11.29        -0.391         2.794 \r\n 2022          94            23.01696      13.74         0.651         0 \r\n 2022          95            6.217344      15.12         1.4           7.874 \r\n 2022          96            10.69632      9.93          1.652         0.254 \r\n 2022          97            7.79328       4.956        -0.746         0.762 \r\n 2022          98            7.62048       8.21         -0.746         0.508 \r\n 2022          99            24.2784       14.1         -3.116         0 \r\n 2022          100           16.5888       24.03         4.422         0 \r\n 2022          101           21.15936      17.85         3.38          0 \r\n 2022          102           10.152        27.29         3.38          0.254 \r\n 2022          103           7.72416       14.79        -0.452         2.286 \r\n 2022          104           24.80544      11.39        -2.578         0 \r\n 2022          105           15.8544       10.09        -0.846         0 \r\n 2022          106           24.9696       10.37        -2.314         0 \r\n 2022          107           3.33936       3.299        -0.837         2.794 \r\n 2022          108           25.73856      7.318        -1.96          1.016 \r\n 2022          109           13.53024      8.49         -5.406         0 \r\n 2022          110           2.318112      9.14          6.067         8.382 \r\n 2022          111           16.90848      18.2          0.469         0.254 \r\n 2022          112           6.98976       26.33         11.97         10.414 \r\n 2022          113           8.67456       23.22         12.68         15.748 \r\n 2022          114           24.86592      15.97         6.572         0 \r\n 2022          115           16.04448      8.94         -0.866         0 \r\n 2022          116           25.7904       15.77        -3.004         0 \r\n 2022          117           23.51808      23.44         2.956         0 \r\n 2022          118           17.27136      17.91         6.673         0 \r\n 2022          119           7.8192        17.22         10.59         19.05 \r\n 2022          120           6.898176      15.07         7.409         7.366 \r\n 2022          121           7.75008       11.65         4.714         0 \r\n 2022          122           10.04832      10.85         2.39          18.034 \r\n 2022          123           7.128         10.53         5.643         7.366 \r\n 2022          124           10.86912      14.73         6.996         0 \r\n 2022          125           4.783104      13.75         10.1          2.794 \r\n 2022          126           19.63008      19.54         8.47          2.54 \r\n 2022          127           26.79264      21.55         5.421         0 \r\n 2022          128           6.92928       19.44         13.12         0.254 \r\n 2022          129           23.65632      31.86         16.42         0 \r\n 2022          130           20.96064      31.36         21.06         0 \r\n 2022          131           20.77056      31.39         21            0 \r\n 2022          132           26.38656      31.94         21.04         0 \r\n 2022          133           18.34272      27.86         14.77         0 \r\n 2022          134           25.06464      31.42         11.76         3.81 \r\n 2022          135           11.26656      21.37         12.29         0.762 \r\n 2022          136           26.51616      27.15         9.34          0 \r\n 2022          137           14.904        27.42         13.1          3.048 \r\n 2022          138           16.96896      27.29         15.75         0.254 \r\n 2022          139           25.73856      29.25         15.3          0 \r\n 2022          140           7.66368       21.64         11.01         0.254 \r\n 2022          141           17.53056      16.59         5.4           0 \r\n 2022          142           28.96992      19.52         2.814         0 \r\n 2022          143           13.91904      17.86         7.934         0 \r\n 2022          144           4.843584      12.56         9.84          17.272 \r\n 2022          145           5.314464      15.64         10.66         15.494 \r\n 2022          146           5.6376        14.17         11.02         0.254 \r\n 2022          147           28.90944      26.6          9.94          0 \r\n 2022          148           26.20512      26.65         12.5          0 \r\n 2022          149           13.51296      29.38         18.8          0 \r\n 2022          150           26.41248      30.76         20.52         0 \r\n 2022          151           17.21952      26.36         16.67         16.002 \r\n 2022          152           19.51776      21.37         11.72         0.508 \r\n 2022          153           29.03904      24.75         8.47          0 \r\n 2022          154           28.71936      28.58         11.35         0 \r\n 2022          155           19.80288      25.97         14.76         0 \r\n 2022          156           22.23072      27.56         13.43         1.524 \r\n 2022          157           17.91936      28.62         16.1          45.212 \r\n 2022          158           26.36928      26.83         16.31         7.112 \r\n 2022          159           21.7728       24.27         14.37         16.002 \r\n 2022          160           22.02336      26.15         13.08         0.762 \r\n 2022          161           19.32768      25.5          16.24         0 \r\n 2022          162           17.496        29.44         16.71         0 \r\n 2022          163           18.2304       30.31         18.87         0.254 \r\n 2022          164           16.40736      34.47         24            5.334 \r\n 2022          165           27.16416      34.16         24.54         0 \r\n 2022          166           19.5696       31.72         18.51         0 \r\n 2022          167           26.57664      33.91         17.62         0 \r\n 2022          168           27.2592       32.33         20.05         5.842 \r\n 2022          169           28.00224      29.58         18.63         0 \r\n 2022          170           28.41696      31.68         17.42         0 \r\n 2022          171           28.45152      32.91         18.95         0 \r\n 2022          172           26.28288      34.79         21.85         12.954 \r\n 2022          173           27.22464      31.38         18.54         2.032 \r\n 2022          174           25.1424       31.21         18.28         0 \r\n 2022          175           9.36576       24.24         18.5          4.572 \r\n 2022          176           17.67744      29.92         21.57         0.508 \r\n 2022          177           28.93536      25.54         13.92         0 \r\n 2022          178           29.35872      29            11.49         0 \r\n 2022          179           28.61568      28.72         13.49         0 \r\n 2022          180           28.76256      32.18         16.88         0 \r\n 2022          181           26.85312      31.48         19.33         0 \r\n 2022          182           7.1712        25.78         16.04         6.858 \r\n 2022          183           23.13792      26.75         13.37         0.508 \r\n 2022          184           22.75776      29.97         15.62         0.254 \r\n 2022          185           23.68224      34.36         22.71         0 \r\n 2022          186           26.36064      35.26         20.75         0.254 \r\n 2022          187           11.71584      26.04         21.41         11.684 \r\n 2022          188           14.91264      27.78         20.63         9.652 \r\n 2022          189           16.88256      29            21.41         10.668 \r\n 2022          190           25.6176       29.94         18.83         0 \r\n 2022          191           26.6976       29.65         18.71         0 \r\n 2022          192           17.064        29.71         18.13         0 \r\n"
  },
  {
    "path": "scripts/yieldfx/baseline/muscatine.met",
    "content": "[weather.met.weather]\r\nlatitude = 41.356 (DECIMAL DEGREES)\r\ntav = 10.5613 (oC) ! annual average ambient temperature\r\namp = 29.23411 (oC) ! annual amplitude in mean monthly temperature\r\nyear          day           radn          maxt          mint          rain\r\n()            ()            (MJ/m^2)      (oC)          (oC)          (mm)\r\n 1980          1             5.4           0            -2             0 \r\n 1980          2             6.2          -0.5          -2             0 \r\n 1980          3             5.7           0.5          -3.5           0 \r\n 1980          4             6.1           0            -6.5           0 \r\n 1980          5             5.9           0.5          -4.5           0 \r\n 1980          6             3.6           1.5          -7             2.54 \r\n 1980          7             8.6          -5            -14            0 \r\n 1980          8             7.5          -9            -15            0 \r\n 1980          9             8.5          -8            -16            0 \r\n 1980          10            3.7           9            -12            0 \r\n 1980          11            8.9           11.5         -9             0 \r\n 1980          12            7.6          -1            -14            0 \r\n 1980          13            2.7           5            -3             0.51 \r\n 1980          14            7.8           8            -6.5           0 \r\n 1980          15            3             8.5           1             0 \r\n 1980          16            1.3           12            4.5           24.13 \r\n 1980          17            7.1           5.5          -0.5           0 \r\n 1980          18            9.3           1            -3.5           0 \r\n 1980          19            1.9           0.5          -4             0 \r\n 1980          20            9.1           1.5          -7             0 \r\n 1980          21            4.4           0.5          -6             0 \r\n 1980          22            9.2           0.5          -7             0 \r\n 1980          23            10.6         -6            -13            0 \r\n 1980          24            3.3           6            -10.5          1.02 \r\n 1980          25            10            4            -4.5           0 \r\n 1980          26            5            -3.5          -12            0 \r\n 1980          27            9.7          -9            -14.5          0 \r\n 1980          28            7.5          -8.5          -13.5          0 \r\n 1980          29            11.3         -8            -16            0 \r\n 1980          30            4.3          -9            -13            2.29 \r\n 1980          31            11.2         -7.5          -18.5          0 \r\n 1980          32            8.2          -6.5          -20.5          0 \r\n 1980          33            5.8          -4            -14            0 \r\n 1980          34            9.6          -3.5          -14            0 \r\n 1980          35            8.1          -2            -15.5          0 \r\n 1980          36            3.1          -2.5          -7.5           7.62 \r\n 1980          37            5.7          -1.5          -7             1.52 \r\n 1980          38            7.3          -2            -12.5          0 \r\n 1980          39            4.1          -2.5          -10            0 \r\n 1980          40            10.8         -2.5          -14.5          0 \r\n 1980          41            8.6          -1.5          -16.5          0 \r\n 1980          42            11.6         -4.5          -11            0 \r\n 1980          43            10.1         -4            -17.5          0 \r\n 1980          44            9.5           0.5          -11            0 \r\n 1980          45            11.6          1            -4.5           0 \r\n 1980          46            5.7          -2            -7             7.11 \r\n 1980          47            13.7         -6            -17.5          0 \r\n 1980          48            10.8         -5            -19.5          0 \r\n 1980          49            13.3          1.5          -14            0 \r\n 1980          50            10.1          5            -1.5           0 \r\n 1980          51            11.9          5             0.5           0 \r\n 1980          52            3.6           4             1.5           1.78 \r\n 1980          53            9             4.5           1.5           3.81 \r\n 1980          54            10.3          3.5          -1.5           0 \r\n 1980          55            15            4            -3             0 \r\n 1980          56            12.3          0.5          -11.5          7.11 \r\n 1980          57            14.4         -1            -18            0.51 \r\n 1980          58            8.9           1            -5             0 \r\n 1980          59            16.8         -1.5          -7             0 \r\n 1980          60            8.9          -4            -11.25         0 \r\n 1980          61            13.6         -6.5          -15.5          0 \r\n 1980          62            15.5         -5            -14.5          0 \r\n 1980          63            10.3         -1            -16.5          0 \r\n 1980          64            7             4.5          -8             0 \r\n 1980          65            16            7            -2.5           0 \r\n 1980          66            5.5           1            -12            0 \r\n 1980          67            4.5           2.5          -11.5          3.3 \r\n 1980          68            16            1            -4             5.08 \r\n 1980          69            9.9           2.5          -4             0 \r\n 1980          70            9.7           8            -6.5           0 \r\n 1980          71            18.4          6.5          -4.5           0 \r\n 1980          72            2.9           1.5          -10.5          0 \r\n 1980          73            7.4           0            -3             5.08 \r\n 1980          74            18.5          0            -4             0 \r\n 1980          75            17.8          8            -9.5           0 \r\n 1980          76            3.4           15.5         -1             0 \r\n 1980          77            10.7          15.5          4.5           0 \r\n 1980          78            19.6          8            -1.5           0 \r\n 1980          79            7.7           15.5         -3.5           0 \r\n 1980          80            6.7           15            2.5           0 \r\n 1980          81            21            13            2.5           0 \r\n 1980          82            10.7          8            -0.5           0.51 \r\n 1980          83            9             9            -4             2.03 \r\n 1980          84            9.9           12            3             3.56 \r\n 1980          85            15.4          5.5           0             0 \r\n 1980          86            15.8          7            -3.5           0 \r\n 1980          87            13.2          4            -2             0.51 \r\n 1980          88            3.5           13            1             0 \r\n 1980          89            12.7          11            5             0 \r\n 1980          90            3.3           11            2.5           8.13 \r\n 1980          91            22.9          8             2.5           2.54 \r\n 1980          92            11.3          14.5          1.5           7 \r\n 1980          93            8.8           12            0             0 \r\n 1980          94            12.8          10            4.5           1 \r\n 1980          95            20.4          15.5          4             10 \r\n 1980          96            21.3          12.5          2             0 \r\n 1980          97            6.3           18            0             0 \r\n 1980          98            19.5          18            8.5           0 \r\n 1980          99            8.1           22.5          10            0 \r\n 1980          100           4             18            4.5           0 \r\n 1980          101           22.9          5.5           0             3 \r\n 1980          102           5.8           10           -1             3 \r\n 1980          103           24.2          7.5          -1             13 \r\n 1980          104           15.9          10           -2.5           13 \r\n 1980          105           9.8           8.5          -1             0 \r\n 1980          106           23            4.5          -1.5           6 \r\n 1980          107           20            13           -2.5           7 \r\n 1980          108           8.5           17.5         -1             0 \r\n 1980          109           24.9          17.5          5.5           0 \r\n 1980          110           22.8          22            2             0 \r\n 1980          111           14.6          25            7.5           0 \r\n 1980          112           24.8          27.5          9             0 \r\n 1980          113           25.6          30            11            0 \r\n 1980          114           22.6          32.5          15.5          0 \r\n 1980          115           27.8          28            12            0 \r\n 1980          116           25.5          16.5          3.5           0 \r\n 1980          117           26.5          16            2             0 \r\n 1980          118           20.7          18            1             0 \r\n 1980          119           23.3          21            6             0 \r\n 1980          120           11.1          19            4.5           0 \r\n 1980          121           23.3          16            6.5           0 \r\n 1980          122           20.4          17            9.5           1 \r\n 1980          123           23.4          23            6.5           0 \r\n 1980          124           20.2          24.5          7.5           0 \r\n 1980          125           25            28.5          9             0 \r\n 1980          126           18.7          30.5          10.5          0 \r\n 1980          127           26.1          31            14            0 \r\n 1980          128           27.6          27            8             0 \r\n 1980          129           27.4          20.5          4             0 \r\n 1980          130           28.2          16.5          3             0 \r\n 1980          131           11            22            1             0 \r\n 1980          132           26.8          24            11            2 \r\n 1980          133           11            20.5          7             0 \r\n 1980          134           24.9          22            10.5          0 \r\n 1980          135           25.3          19.5          10.5          3 \r\n 1980          136           21.7          21.5          2.5           0 \r\n 1980          137           8.6           22            10.5          2 \r\n 1980          138           6.6           19.5          10.5          0 \r\n 1980          139           14.7          19.5          11            20 \r\n 1980          140           17.6          18            13            15 \r\n 1980          141           16.5          21            12.5          0 \r\n 1980          142           29            24            11.5          0 \r\n 1980          143           29.4          27.5          11            0 \r\n 1980          144           16.5          28            11.5          0 \r\n 1980          145           10.1          26            16            0 \r\n 1980          146           26.2          27.5          15            0 \r\n 1980          147           22.8          29.5          15            0 \r\n 1980          148           11.4          29            15.5          0 \r\n 1980          149           9             31.5          14            0 \r\n 1980          150           11.7          31.5          18.5          0 \r\n 1980          151           21.4          29.5          19            19 \r\n 1980          152           28.5          28.5          17.5          6 \r\n 1980          153           12.8          27            14.5          0 \r\n 1980          154           13.9          26.5          16.5          24 \r\n 1980          155           29.2          25.5          16.5          10 \r\n 1980          156           19.9          27            14.5          11 \r\n 1980          157           9.6           25.5          16            4 \r\n 1980          158           11.5          31            18.5          6 \r\n 1980          159           15.2          30.5          21            0 \r\n 1980          160           32.1          29            21.5          0 \r\n 1980          161           30.2          24.5          11            0 \r\n 1980          162           30.6          28            12.5          0 \r\n 1980          163           31.2          26.5          12.5          0 \r\n 1980          164           30            27            7.5           0 \r\n 1980          165           17.2          27.5          12.5          0 \r\n 1980          166           10.2          29.5          16            6 \r\n 1980          167           16.1          30            17.5          47 \r\n 1980          168           26.2          28.5          14.5          14 \r\n 1980          169           22.5          21.5          8.5           0 \r\n 1980          170           25.3          23            10            0 \r\n 1980          171           28.1          27.5          11            0 \r\n 1980          172           24.1          24.5          14.5          1 \r\n 1980          173           31            24.5          9             0 \r\n 1980          174           25.1          28            12            0 \r\n 1980          175           10.1          29            14.5          0 \r\n 1980          176           24.4          29            19            0 \r\n 1980          177           22.1          28.5          17.5          0 \r\n 1980          178           18.6          31.5          18            0 \r\n 1980          179           13.3          34.5          20            0 \r\n 1980          180           26.5          34.5          21.5          0 \r\n 1980          181           31            33            20.5          0 \r\n 1980          182           29.4          28.5          16            0 \r\n 1980          183           16.6          28            12            0 \r\n 1980          184           21.3          32.5          19.5          0 \r\n 1980          185           19.1          30.5          18.5          0 \r\n 1980          186           15.1          28.5          16            0 \r\n 1980          187           18.3          32.5          20            0 \r\n 1980          188           17.5          34            18.5          22 \r\n 1980          189           26.9          32            17.5          0 \r\n 1980          190           18.5          36            23.5          0 \r\n 1980          191           16            35            24.5          0 \r\n 1980          192           24.6          33            18.5          4 \r\n 1980          193           25.4          33.5          22.5          6 \r\n 1980          194           27.2          34            21            0 \r\n 1980          195           28.3          35            24.5          0 \r\n 1980          196           28.3          33.5          21            0 \r\n 1980          197           24.6          37.5          24            0 \r\n 1980          198           24.8          37            26            0 \r\n 1980          199           28.7          35            20            9 \r\n 1980          200           16.5          35            17.5          0 \r\n 1980          201           19.9          32.5          20            12 \r\n 1980          202           26.3          34            23            0 \r\n 1980          203           20.3          36            24.5          0 \r\n 1980          204           27.9          31.5          21            13 \r\n 1980          205           28.4          28            16            0 \r\n 1980          206           28.4          28            16            0 \r\n 1980          207           25.6          30.5          16.5          0 \r\n 1980          208           12.4          31            17.5          0 \r\n 1980          209           23.4          27            19.5          17 \r\n 1980          210           27.2          24            17            8 \r\n 1980          211           27.8          28.5          14.5          0 \r\n 1980          212           22.9          31.5          17            0 \r\n 1980          213           25.3          34.5          20            0 \r\n 1980          214           24.3          33            21.5          0 \r\n 1980          215           14.2          34            20.5          3 \r\n 1980          216           27.2          31.5          21.5          0 \r\n 1980          217           20.8          31            16.5          0 \r\n 1980          218           26.6          32            19.5          0 \r\n 1980          219           12.9          31            20            30 \r\n 1980          220           18.9          31.5          21.5          11 \r\n 1980          221           20.4          33.5          23.5          0 \r\n 1980          222           12.8          35            23.5          0 \r\n 1980          223           11.6          33.5          22.5          15 \r\n 1980          224           13.4          29.5          20            4 \r\n 1980          225           25.5          29            20            15 \r\n 1980          226           14.9          28.5          15.5          1 \r\n 1980          227           7.5           32            18            0 \r\n 1980          228           12.8          28.5          20            26 \r\n 1980          229           7.3           26.5          17.5          1 \r\n 1980          230           6.5           23            15            13 \r\n 1980          231           11.4          29.5          17.5          44 \r\n 1980          232           19            31            18            0 \r\n 1980          233           21.5          33.5          22            0 \r\n 1980          234           23.6          33.5          23.5          0 \r\n 1980          235           23.6          30            19            9 \r\n 1980          236           23.6          29            15.5          0 \r\n 1980          237           22.5          29            15            0 \r\n 1980          238           22.7          30            16.5          0 \r\n 1980          239           22.4          32            17.5          0 \r\n 1980          240           15.3          33.5          18            0 \r\n 1980          241           14.1          33.5          19.5          0 \r\n 1980          242           10.2          31.5          21            0 \r\n 1980          243           11.2          32            20            0 \r\n 1980          244           10.3          28            20            0 \r\n 1980          245           7.5           29            19            30 \r\n 1980          246           24.1          27            18.5          40 \r\n 1980          247           19.9          28.5          14.5          6 \r\n 1980          248           14.2          30.5          16            0 \r\n 1980          249           14.5          27.5          17.5          24 \r\n 1980          250           20.1          28.5          15.5          5 \r\n 1980          251           14.9          30            16.5          8 \r\n 1980          252           18            31            18            11 \r\n 1980          253           13.2          34            20.5          0 \r\n 1980          254           22.6          29.5          18            4 \r\n 1980          255           16.8          24.5          9.5           0 \r\n 1980          256           6.3           26.5          11.5          0 \r\n 1980          257           14.8          31            16.5          9 \r\n 1980          258           20.5          29.5          17.5          9 \r\n 1980          259           15            24            14.5          0 \r\n 1980          260           6.6           21            13.5          0 \r\n 1980          261           20.2          20.5          11.5          9 \r\n 1980          262           19.3          20.5          6             9 \r\n 1980          263           19.1          27            9.5           0 \r\n 1980          264           16.4          28.5          12.5          0 \r\n 1980          265           16.8          32            19.5          0 \r\n 1980          266           7.5           28.5          16.5          0 \r\n 1980          267           19.6          26            17            4 \r\n 1980          268           14.6          20.5          6             0 \r\n 1980          269           17.3          21            7             0 \r\n 1980          270           18.2          18.5          10            0 \r\n 1980          271           15.8          18.5          2.5           0 \r\n 1980          272           14.3          22.5          9             0 \r\n 1980          273           17.1          24.5          11            0 \r\n 1980          274           15.8          25            7.5           0 \r\n 1980          275           16.5          26.5          11.5          0 \r\n 1980          276           13.7          24.5          13            0 \r\n 1980          277           9.3           19            6.5           0 \r\n 1980          278           18.4          11.5          4             0 \r\n 1980          279           18.4          13.5          3.5           0 \r\n 1980          280           14.2          16.5          0.5           0 \r\n 1980          281           16.9          23.5          5.5           0 \r\n 1980          282           16.7          25.5          6             0 \r\n 1980          283           15.4          28.5          9.5           0 \r\n 1980          284           16.8          24.5          8.5           0 \r\n 1980          285           16.2          22.5          8.5           0 \r\n 1980          286           16.4          16.5          5.5           0 \r\n 1980          287           13.3          13.5         -1             0 \r\n 1980          288           13.5          18            0.5           0 \r\n 1980          289           4.7           25            9.5           0 \r\n 1980          290           3.3           18.5          6.5           0 \r\n 1980          291           14.7          19.5          10.5          9 \r\n 1980          292           12.6          19.5          11.5          10 \r\n 1980          293           14            14            3.5           0 \r\n 1980          294           13.4          15.5          0.5           0 \r\n 1980          295           13.3          19            6.5           0 \r\n 1980          296           12.1          16.5          6.5           0 \r\n 1980          297           11.1          17.5          4             0 \r\n 1980          298           4.5           23.5          7             0 \r\n 1980          299           10.6          18.5          3.5           18 \r\n 1980          300           11.6          5            -1.5           5 \r\n 1980          301           3.9           6             0             0 \r\n 1980          302           11.1          4             0             0 \r\n 1980          303           9.6           5            -2             15 \r\n 1980          304           10.9          7            -6.5           0 \r\n 1980          305           9.9           13.5         -3.5           0 \r\n 1980          306           13            17.5          0             0 \r\n 1980          307           12.5          12.5          0.5           0 \r\n 1980          308           11            16           -1             0 \r\n 1980          309           11.5          17            9             0 \r\n 1980          310           12.3          14.5          3.5           0 \r\n 1980          311           11.3          13            0.5           0 \r\n 1980          312           8.4           22.5          2             0 \r\n 1980          313           7.7           20.5          7             0 \r\n 1980          314           11            20            3             0 \r\n 1980          315           10.9          19.5          6.5           0 \r\n 1980          316           8.3           13           -0.5           0 \r\n 1980          317           9.3           9             0             0 \r\n 1980          318           2.9           15            3             1 \r\n 1980          319           9.2           16.5          6             0 \r\n 1980          320           7.4           7             1.5           4 \r\n 1980          321           8.2           3.5          -2             0 \r\n 1980          322           6.7           6.5          -5.5           0 \r\n 1980          323           9.9           3            -3.5           0 \r\n 1980          324           9.6           5            -5.5           0 \r\n 1980          325           9.5           9.5          -5             0 \r\n 1980          326           9.6           11           -2             0 \r\n 1980          327           9.6           9.5          -3.5           0 \r\n 1980          328           1.3           12            0             0 \r\n 1980          329           9.2           7             2.5           5 \r\n 1980          330           9             3.5          -4.5           0 \r\n 1980          331           5             2.5          -8.5           0 \r\n 1980          332           1.7           3.5          -8             0 \r\n 1980          333           4.8           2            -2.5           1 \r\n 1980          334           8.4           2            -5             1 \r\n 1980          335           7.2           8.5          -1.5           0 \r\n 1980          336           3             14.5         -0.5           4.83 \r\n 1980          337           9.2           9             0.5           0 \r\n 1980          338           8.7           2.5          -12            0 \r\n 1980          339           5.1          -0.5          -15            0 \r\n 1980          340           1.5           2            -5             0 \r\n 1980          341           2             13            1             6.35 \r\n 1980          342           3.4           13.5          8.5           27.94 \r\n 1980          343           3.6           10.5          4.5           24.13 \r\n 1980          344           5.6           5.5          -1.5           0 \r\n 1980          345           8.3           1.5          -3.5           0 \r\n 1980          346           8.3           0            -5.5           0 \r\n 1980          347           7.1          -2            -7.5           0 \r\n 1980          348           8.9           10           -3             0 \r\n 1980          349           5.8           4.5          -6.5           0 \r\n 1980          350           3.4           3            -5.5           0 \r\n 1980          351           7.8           2            -4.5           0 \r\n 1980          352           6.4           3            -3.5           0 \r\n 1980          353           3.8           6.5          -3.5           0 \r\n 1980          354           8.9           4.5          -4.5           0 \r\n 1980          355           8.6          -4.5          -15.5          0 \r\n 1980          356           5.1          -9.5          -17.5          0 \r\n 1980          357           3.8          -5.5          -12            0 \r\n 1980          358           4.1           0.5          -8.5           0 \r\n 1980          359           7.3           2.5          -4.5           4.06 \r\n 1980          360           4.6           1            -14.5          0 \r\n 1980          361           6.9          -9.5          -22            0 \r\n 1980          362           6.3          -5            -11            0 \r\n 1980          363           4.3          -2.5          -13            0 \r\n 1980          364           6.3           2.5          -5             0 \r\n 1980          365           2.8           7.5          -2             0 \r\n 1980          366           7.4           3.5          -4             0 \r\n 1981          1             7.2           1.5          -3             0 \r\n 1981          2             7.2           0.5          -8.5           0 \r\n 1981          3             7.7           0            -13            0 \r\n 1981          4             8.6          -10.5         -18            0 \r\n 1981          5             6.1          -1            -16            0 \r\n 1981          6             3             1            -6.5           0 \r\n 1981          7             7.8          -2.5          -15            0 \r\n 1981          8             8            -6.5          -15            0.51 \r\n 1981          9             5.9          -4.5          -14            0 \r\n 1981          10            7.1          -7.5          -18.5          0 \r\n 1981          11            9.1          -7            -18            0 \r\n 1981          12            4.1           2            -16            0 \r\n 1981          13            6.2           4            -6.5           0 \r\n 1981          14            5.1           1            -7             0 \r\n 1981          15            8.7          -1            -10.5          0 \r\n 1981          16            9.4          -4            -12.5          0 \r\n 1981          17            9.5           3.5          -14            0 \r\n 1981          18            9.6           10.5         -4             0 \r\n 1981          19            7.8           9            -1             0 \r\n 1981          20            6.9           9.5          -2             0 \r\n 1981          21            10            5            -3             0 \r\n 1981          22            9.8           9.5          -5.5           0 \r\n 1981          23            8.4           11.5         -6             0 \r\n 1981          24            9.8           15.5         -3.5           0 \r\n 1981          25            6.2           17            2.5           0 \r\n 1981          26            9.7           10            2             0 \r\n 1981          27            7.9           4.5          -3.5           0 \r\n 1981          28            10.4          1            -12            0 \r\n 1981          29            10.6         -1.5          -14            0 \r\n 1981          30            11.9          1            -12            0 \r\n 1981          31            6.5           3            -9             0 \r\n 1981          32            7.8           1.5          -11            6.35 \r\n 1981          33            7.7          -10.5         -19.5          0 \r\n 1981          34            6.5          -9.5          -21            0 \r\n 1981          35            11.6         -9.5          -18            0 \r\n 1981          36            4.2          -1.5          -18.5          0 \r\n 1981          37            10.4          1            -9.5           0 \r\n 1981          38            11.4          2            -6.5           0 \r\n 1981          39            10.9         -5            -16.5          0 \r\n 1981          40            10.6         -4.5          -10.5          0 \r\n 1981          41            4.3          -6.5          -15.5          8.38 \r\n 1981          42            14.2         -14.5         -24.5          0 \r\n 1981          43            12.9         -1.5          -23            0 \r\n 1981          44            9.2           5            -12.5          0 \r\n 1981          45            13.4          8.5          -5.5           0 \r\n 1981          46            10.3          11           -0.5           0 \r\n 1981          47            13            16.5          2.5           0 \r\n 1981          48            10.1          18            3             0 \r\n 1981          49            6.9           17.5          5.5           0 \r\n 1981          50            10.9          15.5          1             0 \r\n 1981          51            14.8          17           -2             0 \r\n 1981          52            3.3           12.5          2.5           3.3 \r\n 1981          53            2.9           10            0.5           20.83 \r\n 1981          54            8.7           2             0.5           3.05 \r\n 1981          55            15.8          12           -2             0 \r\n 1981          56            15.7          11            0.5           0 \r\n 1981          57            14.9          7            -1             0 \r\n 1981          58            7.3           17.5          2             4.83 \r\n 1981          59            13.7          12.5          1.5           0 \r\n 1981          60            14.1          7            -1             0 \r\n 1981          61            15.3          4            -4             0 \r\n 1981          62            6.1           6.5          -8             0 \r\n 1981          63            3.1           4.5           0.5           3.81 \r\n 1981          64            16.2          5.5          -1.5           0 \r\n 1981          65            16.3          2.5          -4.5           0 \r\n 1981          66            16.7          4.5          -8.5           0 \r\n 1981          67            16.6          7            -7             0 \r\n 1981          68            10.4          10           -3             0 \r\n 1981          69            17            9            -3             0 \r\n 1981          70            17.9          9.5          -3             0 \r\n 1981          71            17.6          16.5          0.5           0 \r\n 1981          72            18.5          11.5         -2             0 \r\n 1981          73            19.2          13           -6             0 \r\n 1981          74            18.1          18            2.5           0 \r\n 1981          75            19.8          11.5         -3.5           0 \r\n 1981          76            14.7          9             0             0 \r\n 1981          77            19.5          6.5          -6             0 \r\n 1981          78            13            7            -5             0 \r\n 1981          79            20.5          10           -4.5           0 \r\n 1981          80            4.4           11           -2.5           0 \r\n 1981          81            19.9          12           -1             0 \r\n 1981          82            21            16           -3.5           0 \r\n 1981          83            21.2          18.5         -1.5           0 \r\n 1981          84            11.1          15.5          1.5           0 \r\n 1981          85            9.7           16            7             0 \r\n 1981          86            21.6          18            1.5           0 \r\n 1981          87            19.2          24.5          8             0 \r\n 1981          88            8.5           20.5          12.5          2.03 \r\n 1981          89            21.3          18            8             0 \r\n 1981          90            20.7          26.5          5.5           0 \r\n 1981          91            20            19            8.5           0 \r\n 1981          92            20            30            4             0 \r\n 1981          93            3.6           26            15            0 \r\n 1981          94            17.3          22            4.5           3 \r\n 1981          95            17.6          11            2             0 \r\n 1981          96            22.4          16.5         -2.5           0 \r\n 1981          97            20.6          24.5          5.5           0 \r\n 1981          98            4.6           22            9.5           1 \r\n 1981          99            22.8          20            1.5           6 \r\n 1981          100           5.2           25            10            3 \r\n 1981          101           2.7           24            12.5          20 \r\n 1981          102           6.2           18.5          7.5           50 \r\n 1981          103           3.8           22            12.5          12 \r\n 1981          104           25.8          16            5             21 \r\n 1981          105           26.1          15            0             0 \r\n 1981          106           8.4           16.5          6.5           0 \r\n 1981          107           21.6          26            12            1 \r\n 1981          108           24.5          21.5          7             0 \r\n 1981          109           2.5           16.5          8.5           0 \r\n 1981          110           25.7          11.5          3             0 \r\n 1981          111           21.6          14.5          0             0 \r\n 1981          112           3.7           18.5          11.5          0 \r\n 1981          113           22            15.5          6             7 \r\n 1981          114           27.7          15.5          4.5           0 \r\n 1981          115           23.7          20.5          4             0 \r\n 1981          116           22.8          28.5          10.5          0 \r\n 1981          117           18.4          30            12.5          0 \r\n 1981          118           11.4          27            14            8 \r\n 1981          119           15.4          19            9             8 \r\n 1981          120           20.3          19.5          8.5           4 \r\n 1981          121           22.3          18            6.5           0 \r\n 1981          122           25.9          19.5          2             0 \r\n 1981          123           19.4          25            10.5          0 \r\n 1981          124           16.1          22            13            7 \r\n 1981          125           16.3          19            11.5          4 \r\n 1981          126           28.5          15.5          4             0 \r\n 1981          127           24.6          19            2             0 \r\n 1981          128           9.1           16.5          7.5           0 \r\n 1981          129           20.1          20.5          10.5          3 \r\n 1981          130           5.3           14            3.5           4 \r\n 1981          131           29.4          18.5          3             2 \r\n 1981          132           12.3          17            2             0 \r\n 1981          133           7.3           16            8.5           1 \r\n 1981          134           11.6          13            7             9 \r\n 1981          135           29.1          23.5          4.5           9 \r\n 1981          136           23.9          24            9             0 \r\n 1981          137           14.4          20.5          11            0 \r\n 1981          138           10.2          14.5          7.5           1 \r\n 1981          139           29.3          21            7.5           0 \r\n 1981          140           30.6          25            3.5           0 \r\n 1981          141           29.9          26            7             0 \r\n 1981          142           24.4          24.5          14            0 \r\n 1981          143           8.5           24.5          16.5          6 \r\n 1981          144           28.2          23            13.5          8 \r\n 1981          145           22            26            12            0 \r\n 1981          146           16.8          26.5          13            0 \r\n 1981          147           25.1          26.5          12.5          9 \r\n 1981          148           25.8          28            15.5          0 \r\n 1981          149           18.5          30            18            0 \r\n 1981          150           15.6          26            15            0 \r\n 1981          151           30.9          27            9.5           0 \r\n 1981          152           25.9          26            13            0 \r\n 1981          153           16.9          27            15.5          0 \r\n 1981          154           28.4          27            17            0 \r\n 1981          155           23.6          30            13.5          0 \r\n 1981          156           20.4          31.5          19.5          4 \r\n 1981          157           28.1          30            17.5          0 \r\n 1981          158           27.3          29.5          14            0 \r\n 1981          159           17.9          30.5          20            2 \r\n 1981          160           22.7          26.5          13.5          3 \r\n 1981          161           28.6          27.5          16            2 \r\n 1981          162           15.5          26.5          16            0 \r\n 1981          163           10.5          28            16.5          1 \r\n 1981          164           17.4          31            22            12 \r\n 1981          165           11.2          31            24.5          10 \r\n 1981          166           7.5           28.5          19.5          12 \r\n 1981          167           28.7          23.5          15            13 \r\n 1981          168           31.1          27            11.5          0 \r\n 1981          169           29.3          29            16            0 \r\n 1981          170           24.9          27            15.5          0 \r\n 1981          171           20.5          29            17            0 \r\n 1981          172           13.3          25.5          16.5          3 \r\n 1981          173           29.8          28            14.5          4 \r\n 1981          174           30.1          29.5          13            0 \r\n 1981          175           10.5          29.5          16.5          38 \r\n 1981          176           30.7          28            16            6 \r\n 1981          177           31.2          28            14.5          0 \r\n 1981          178           26            28.5          15            0 \r\n 1981          179           24.7          31            20.5          0 \r\n 1981          180           18.6          31.5          20.5          0 \r\n 1981          181           25.9          28            20            23 \r\n 1981          182           26.9          27.5          16            0 \r\n 1981          183           25.5          28.5          19            0 \r\n 1981          184           26.9          29.5          18.5          0 \r\n 1981          185           7.8           27            20            19 \r\n 1981          186           28.3          29.5          19            1 \r\n 1981          187           29.1          30.5          19.5          0 \r\n 1981          188           27            32            18            0 \r\n 1981          189           22.6          32            23            0 \r\n 1981          190           19.7          30.5          21.5          0 \r\n 1981          191           28.9          31            16            0 \r\n 1981          192           13            32            20            8 \r\n 1981          193           16.8          35.5          22.5          0 \r\n 1981          194           15.4          34            25            0 \r\n 1981          195           13.5          32.5          22.5          6 \r\n 1981          196           11            29.5          18            14 \r\n 1981          197           25.9          28.5          18.5          0 \r\n 1981          198           24.2          29.5          18.5          0 \r\n 1981          199           13            30.5          19.5          0 \r\n 1981          200           8.8           29            22.5          0 \r\n 1981          201           19.8          29.5          21.5          0 \r\n 1981          202           27.8          29            17.5          0 \r\n 1981          203           21.8          26            18            0 \r\n 1981          204           15            26            17            0 \r\n 1981          205           24.7          28.5          17            0 \r\n 1981          206           11.4          28.5          20.5          0 \r\n 1981          207           18.3          23.5          19            16 \r\n 1981          208           15.5          19.5          14.5          14 \r\n 1981          209           23.7          18.5          12            13 \r\n 1981          210           27.8          25            10            0 \r\n 1981          211           24.5          26.5          14            0 \r\n 1981          212           26.3          29            16            0 \r\n 1981          213           20            30            16            0 \r\n 1981          214           8.8           27.5          20            0 \r\n 1981          215           21.7          29            19            14 \r\n 1981          216           15.1          32.5          19.5          0 \r\n 1981          217           7.9           29.5          21            30 \r\n 1981          218           17.1          30.5          18.5          29 \r\n 1981          219           22.2          28            16.5          4 \r\n 1981          220           26            27            16.5          0 \r\n 1981          221           20.7          28.5          16.5          0 \r\n 1981          222           23.9          26.5          17.5          0 \r\n 1981          223           23.9          27.5          14            0 \r\n 1981          224           24.6          29.5          16.5          0 \r\n 1981          225           13.6          29            17            0 \r\n 1981          226           9.4           32            20            10 \r\n 1981          227           18.7          30.5          20.5          20 \r\n 1981          228           22.8          26.5          17            0 \r\n 1981          229           25.1          23.5          13            0 \r\n 1981          230           24.2          24.5          10            0 \r\n 1981          231           24.1          25.5          11.5          0 \r\n 1981          232           24.6          26.5          11            0 \r\n 1981          233           24.1          27.5          12            0 \r\n 1981          234           23.2          28            14            0 \r\n 1981          235           19.6          29            16            0 \r\n 1981          236           12.7          28.5          19.5          1 \r\n 1981          237           18.5          30.5          18            3 \r\n 1981          238           5.3           28.5          19.5          0 \r\n 1981          239           14.8          27            19            5 \r\n 1981          240           14.2          26.5          18            5 \r\n 1981          241           18.1          27.5          18            0 \r\n 1981          242           9.5           29.5          18.5          0 \r\n 1981          243           6.2           30.5          20            3 \r\n 1981          244           16.9          25            16.5          5 \r\n 1981          245           23.9          23.5          13            0 \r\n 1981          246           22.9          25.5          13.5          0 \r\n 1981          247           22.5          25.5          12.5          0 \r\n 1981          248           22.2          26            13.5          0 \r\n 1981          249           22.8          26            13            0 \r\n 1981          250           5.8           23            14.5          0 \r\n 1981          251           22.8          24.5          11            12 \r\n 1981          252           21.8          26.5          10.5          0 \r\n 1981          253           21.9          31            16            0 \r\n 1981          254           17            31.5          16            0 \r\n 1981          255           21.1          30            17.5          0 \r\n 1981          256           19.7          31            15            0 \r\n 1981          257           15.4          28.5          16.5          0 \r\n 1981          258           20.5          24            12.5          0 \r\n 1981          259           15.2          19            9             0 \r\n 1981          260           20.3          17.5          6             1 \r\n 1981          261           19.9          20            4.5           0 \r\n 1981          262           19.8          27.5          8.5           0 \r\n 1981          263           19            27.5          10            0 \r\n 1981          264           16.8          27            14            0 \r\n 1981          265           17.9          21            8.5           0 \r\n 1981          266           16.4          21            6.5           0 \r\n 1981          267           5.7           23            12            0 \r\n 1981          268           2.7           19            13            33 \r\n 1981          269           7.3           25            15.5          51 \r\n 1981          270           17.8          22            8.5           23 \r\n 1981          271           17.3          21            4             0 \r\n 1981          272           8.2           25            11.5          2 \r\n 1981          273           11.3          31            15.5          0 \r\n 1981          274           18.8          26            8.5           0 \r\n 1981          275           19.8          15            1             0 \r\n 1981          276           13.3          16.5          2             0 \r\n 1981          277           15.4          23            8.5           17 \r\n 1981          278           6             24            11            0 \r\n 1981          279           16.7          22            9             8 \r\n 1981          280           17.9          17            2.5           0 \r\n 1981          281           16.7          17.5          2             0 \r\n 1981          282           8.5           19            6.5           0 \r\n 1981          283           14            19            9.5           3 \r\n 1981          284           15.9          19.5          5             0 \r\n 1981          285           13.8          19            9.5           0 \r\n 1981          286           1.1           21            12.5          2 \r\n 1981          287           2.1           18            14            41 \r\n 1981          288           11.6          18.5          10.5          11 \r\n 1981          289           13.8          19            4.5           0 \r\n 1981          290           1.3           22.5          10            0 \r\n 1981          291           10.3          15.5          5             24 \r\n 1981          292           14.3          15.5         -1.5           0 \r\n 1981          293           13.3          21.5          8             0 \r\n 1981          294           10.5          17.5          7             2 \r\n 1981          295           13.1          10            1             0 \r\n 1981          296           10.9          6            -4.5           0 \r\n 1981          297           5.6           6            -5.5           0 \r\n 1981          298           2.3           8.5           2             1 \r\n 1981          299           4             11.5          1             0 \r\n 1981          300           11.2          19.5         -0.5           0 \r\n 1981          301           7.9           18            4.5           0 \r\n 1981          302           11            20.5          6             0 \r\n 1981          303           9.7           22            8.5           0 \r\n 1981          304           3.8           18            12            0 \r\n 1981          305           9.2           17            13            8 \r\n 1981          306           3.2           16.5          13            5 \r\n 1981          307           9.3           18            10            5 \r\n 1981          308           3.3           16.5          11.5          17 \r\n 1981          309           7.4           13            5             7 \r\n 1981          310           11.8          15            1.5           0 \r\n 1981          311           11.8          18            0             0 \r\n 1981          312           5.7           14.5          5.5           0 \r\n 1981          313           11.8          8.5          -2.5           0 \r\n 1981          314           10.9          12.5         -4.5           0 \r\n 1981          315           10.8          13           -1.5           0 \r\n 1981          316           10.2          13           -1             0 \r\n 1981          317           10.5          15.5         -0.5           0 \r\n 1981          318           10            17.5          0.5           0 \r\n 1981          319           3.4           16            5.5           0 \r\n 1981          320           10            15.5          4             8 \r\n 1981          321           9.8           14.5          1             0 \r\n 1981          322           8.2           14.5          2             0 \r\n 1981          323           1.6           12            1             0 \r\n 1981          324           8.2           1.5          -3             4 \r\n 1981          325           5.9          -1.5          -7.5           0 \r\n 1981          326           8.5           3.5          -8             0 \r\n 1981          327           1.4           4.5          -1.5           3 \r\n 1981          328           8.9           8             0             3 \r\n 1981          329           2.5           6             0.5           0 \r\n 1981          330           2.8           13            2             13 \r\n 1981          331           8.6           4            -1.5           0 \r\n 1981          332           8.2           3.5          -3.5           0 \r\n 1981          333           8.5           5            -5.5           0 \r\n 1981          334           2.9           3            -2             0 \r\n 1981          335           2.7           6             1             3.81 \r\n 1981          336           7.3           4            -3             0 \r\n 1981          337           2.9           3            -3             2.29 \r\n 1981          338           8.1           3            -3.5           0 \r\n 1981          339           6.8           5.5          -6.5           0 \r\n 1981          340           8.5           9            -0.5           0 \r\n 1981          341           4.5           12.5          0             0 \r\n 1981          342           8.8           4            -1.5           0 \r\n 1981          343           8.1           1            -4             0 \r\n 1981          344           6.5           1            -9.5           0 \r\n 1981          345           8.3           3            -4             0 \r\n 1981          346           2.8           2            -7             0 \r\n 1981          347           3.2           5            -1             0 \r\n 1981          348           5.8           2.5          -7             0 \r\n 1981          349           4.9          -3            -9             0 \r\n 1981          350           2.4          -4.5          -9             0 \r\n 1981          351           6.8          -6            -15.5          0 \r\n 1981          352           8            -6.5          -18            0 \r\n 1981          353           8.5          -7.5          -19            0 \r\n 1981          354           4.6          -3            -18            0 \r\n 1981          355           3.4           1.5          -4             7.87 \r\n 1981          356           3.3           1.5          -2             0 \r\n 1981          357           8.3           1.5          -9.5           0 \r\n 1981          358           8.5           2            -7.5           0 \r\n 1981          359           6             4.5          -7             0 \r\n 1981          360           7.6           4.5          -3             0 \r\n 1981          361           6.9           1.5          -5             0 \r\n 1981          362           4.5          -1.5          -11.5          3.3 \r\n 1981          363           8.3          -5.5          -18            0 \r\n 1981          364           4.1           0.5          -13            0 \r\n 1981          365           3.1           2.5          -10            6.1 \r\n 1982          1             5.2          -7.5          -18.5          0 \r\n 1982          2             2.1           1            -10            6.1 \r\n 1982          3             3.8           1            -9.5           1.27 \r\n 1982          4             6.6          -2.5          -12.5          14.73 \r\n 1982          5             7.3           4.5          -14            0 \r\n 1982          6             7.4          -3.5          -14            0 \r\n 1982          7             8.3          -13.5         -22.5          0 \r\n 1982          8             4.5          -6            -20.5          0 \r\n 1982          9             8.7          -9.5          -24            0.76 \r\n 1982          10            9            -20           -31            0 \r\n 1982          11            8.2          -14           -22            0 \r\n 1982          12            2.6          -10           -17            1.02 \r\n 1982          13            6.4          -9            -18.5          0 \r\n 1982          14            7.4          -14           -25            0 \r\n 1982          15            4.9          -6.5          -24            3.81 \r\n 1982          16            10.1         -11           -27.5          0 \r\n 1982          17            4.9          -13           -26.5          0 \r\n 1982          18            6.1          -2            -15            0 \r\n 1982          19            8.4           0            -12            0 \r\n 1982          20            4.5          -2            -8.5           1.27 \r\n 1982          21            9.3          -1.5          -5.5           0 \r\n 1982          22            5.3           2            -7.5           3.3 \r\n 1982          23            8.4           3            -19            0 \r\n 1982          24            9.9          -14           -21            0 \r\n 1982          25            9.1          -13           -19            0 \r\n 1982          26            9.4          -9.5          -24            3.81 \r\n 1982          27            10.1          5.5          -11            0 \r\n 1982          28            11.8          3            -10.5          0 \r\n 1982          29            5.4           0.5          -11.5          2.29 \r\n 1982          30            5.4           0.5          -6             1.78 \r\n 1982          31            6.5          -6            -12            0 \r\n 1982          32            6.7          -4            -20.5          0 \r\n 1982          33            5.1          -2.5          -12            0 \r\n 1982          34            4.8          -6            -17            0 \r\n 1982          35            9.8          -12.5         -24            0 \r\n 1982          36            3.7          -10.5         -18.5          5.08 \r\n 1982          37            11.8         -10           -26.5          0 \r\n 1982          38            12.1         -2.5          -15            0 \r\n 1982          39            7.1          -6.5          -16            0 \r\n 1982          40            12.1         -9.5          -20            0 \r\n 1982          41            6.7          -9.5          -25            0 \r\n 1982          42            12.2         -2.5          -16.5          0 \r\n 1982          43            9.8          -1            -10.5          0 \r\n 1982          44            8.7           2            -11            0 \r\n 1982          45            8.4           6.5          -5.5           0 \r\n 1982          46            8             7.5           1.5           0 \r\n 1982          47            2.5           5             1             0 \r\n 1982          48            3.4           1.5           0             6.1 \r\n 1982          49            4.5           2            -0.5           2.54 \r\n 1982          50            8.5           3.5          -0.5           0.51 \r\n 1982          51            11.1          9.5           1.5           0 \r\n 1982          52            15.4          7.5          -1             0 \r\n 1982          53            15            12.5         -2.5           0 \r\n 1982          54            8.5           8.5           0.5           0 \r\n 1982          55            15.4          1            -2.5           0.76 \r\n 1982          56            15.2          0.5          -7             0 \r\n 1982          57            16.7          3.5          -4.5           0 \r\n 1982          58            17.1          6            -8             0 \r\n 1982          59            15.9          8            -6             0 \r\n 1982          60            9.9           9            -1             0 \r\n 1982          61            1.2           5.5          -3.5           3.05 \r\n 1982          62            10.6          0            -7             3.56 \r\n 1982          63            5.6          -2            -7             7.37 \r\n 1982          64            12.4         -3            -13            0 \r\n 1982          65            15.8         -1.5          -15.5          0 \r\n 1982          66            17.6         -4.5          -15.5          0 \r\n 1982          67            8.3          -0.5          -15            0 \r\n 1982          68            7.4          -3.5          -17            2.03 \r\n 1982          69            9.8           8            -9.5           0 \r\n 1982          70            16.6          7.5           1             0 \r\n 1982          71            2.9           13.5          0             7.11 \r\n 1982          72            18.5          13            0             0 \r\n 1982          73            5.8           10           -2             0 \r\n 1982          74            4.7           7             2             3.3 \r\n 1982          75            14.7          9             4             11.43 \r\n 1982          76            18.7          7             1.5           0 \r\n 1982          77            13.7          7.5           2.5           0 \r\n 1982          78            4.2           6.5           1.5           25.4 \r\n 1982          79            9.9           11            2.5           2.03 \r\n 1982          80            17.3          9            -1             0 \r\n 1982          81            20.4          9.5          -2.5           0 \r\n 1982          82            19.2          14           -3             0 \r\n 1982          83            8.7           12            1.5           0 \r\n 1982          84            15.1          7.5          -1.5           0 \r\n 1982          85            20.2          6            -4.5           0 \r\n 1982          86            23.4          5            -6.5           0 \r\n 1982          87            23.2          9            -5             0 \r\n 1982          88            19.1          15           -0.5           0 \r\n 1982          89            16.4          19.5          5             14.22 \r\n 1982          90            23.9          17.5          6             0 \r\n 1982          91            19.2          20.5          0.5           0 \r\n 1982          92            5.9           20.5          10.5          5 \r\n 1982          93            17.5          17           -5             8 \r\n 1982          94            13            5            -5.5           0 \r\n 1982          95            6.5           3.5          -5.5           0 \r\n 1982          96            23.2          0            -12            12 \r\n 1982          97            7.7          -0.5          -9.5           0 \r\n 1982          98            6.7          -0.5          -4             5 \r\n 1982          99            17            2            -4.5           6 \r\n 1982          100           17.3          6.5          -4             0 \r\n 1982          101           23.7          9.5          -5             0 \r\n 1982          102           10.9          21.5          3             0 \r\n 1982          103           23.1          18            5             0 \r\n 1982          104           22            18.5          1.5           0 \r\n 1982          105           20.5          22.5          8             0 \r\n 1982          106           2.3           17.5          12            14 \r\n 1982          107           21.5          15            6.5           11 \r\n 1982          108           23.3          18            2             0 \r\n 1982          109           15.7          18            8             0 \r\n 1982          110           25            13            2.5           0 \r\n 1982          111           25.9          14.5         -1.5           0 \r\n 1982          112           26.5          16.5          3             0 \r\n 1982          113           27.2          20            3.5           0 \r\n 1982          114           25.9          22            6.5           0 \r\n 1982          115           21.3          21            10            0 \r\n 1982          116           16.4          19            10            0 \r\n 1982          117           25.2          16            3             0 \r\n 1982          118           6.3           16            2.5           0 \r\n 1982          119           21.2          19            6.5           0 \r\n 1982          120           18            22            5.5           0 \r\n 1982          121           21.3          23.5          9.5           0 \r\n 1982          122           23.9          25            7.5           0 \r\n 1982          123           23.8          27            10.5          0 \r\n 1982          124           18.2          29.5          15            0 \r\n 1982          125           9.2           29            18            21 \r\n 1982          126           4.1           22.5          9.5           13 \r\n 1982          127           21.9          22            5.5           3 \r\n 1982          128           16.9          24.5          10            0 \r\n 1982          129           25            28            11            0 \r\n 1982          130           27.5          28            16            0 \r\n 1982          131           13.6          28            17            0 \r\n 1982          132           16.4          28.5          16.5          0 \r\n 1982          133           5.2           26            18            0 \r\n 1982          134           7.3           27.5          16.5          0 \r\n 1982          135           12            26.5          15            2 \r\n 1982          136           11.4          29            13.5          0 \r\n 1982          137           9.1           30            17.5          4 \r\n 1982          138           8             26            16            4 \r\n 1982          139           17.5          28.5          14            19 \r\n 1982          140           9.3           29            14            13 \r\n 1982          141           7.4           19            7.5           20 \r\n 1982          142           9.3           17            11            5 \r\n 1982          143           24.2          17.5          11.5          0 \r\n 1982          144           17.7          19            12.5          0 \r\n 1982          145           16.3          19.5          13            0 \r\n 1982          146           12.2          22.5          15            16 \r\n 1982          147           13.1          22.5          15.5          12 \r\n 1982          148           22.4          24.5          13.5          5 \r\n 1982          149           6.1           24            18            6 \r\n 1982          150           14.8          26            14.5          0 \r\n 1982          151           10.2          21.5          15            3 \r\n 1982          152           30.7          22            8             3 \r\n 1982          153           17.7          23            8.5           0 \r\n 1982          154           14.1          19            10            8 \r\n 1982          155           24.5          21.5          9.5           0 \r\n 1982          156           29.3          24            9             0 \r\n 1982          157           24.6          24.5          13.5          0 \r\n 1982          158           20.3          28.5          19            0 \r\n 1982          159           24.4          27            14            2 \r\n 1982          160           7.9           25.5          16.5          6 \r\n 1982          161           30.2          25.5          9.5           0 \r\n 1982          162           15.3          26            12            0 \r\n 1982          163           23.3          27            14            0 \r\n 1982          164           31.2          26.5          10.5          6 \r\n 1982          165           17.2          27            12.5          0 \r\n 1982          166           7.8           24.5          17.5          33 \r\n 1982          167           27            22.5          13.5          10 \r\n 1982          168           27.8          26            12            0 \r\n 1982          169           8.4           23            16.5          2 \r\n 1982          170           26.4          23.5          10            0 \r\n 1982          171           28.1          26.5          12            0 \r\n 1982          172           29.6          26.5          10.5          0 \r\n 1982          173           30.7          25.5          12.5          2 \r\n 1982          174           29.2          27            11.5          0 \r\n 1982          175           29.2          28.5          15            0 \r\n 1982          176           9.8           30.5          18            12 \r\n 1982          177           21.3          26.5          14            6 \r\n 1982          178           6.8           27.5          18.5          13 \r\n 1982          179           5.7           29.5          19.5          14 \r\n 1982          180           16.6          30.5          19.5          0 \r\n 1982          181           25.9          24.5          15.5          0 \r\n 1982          182           25.1          25            13            0 \r\n 1982          183           9.9           27            16.5          20 \r\n 1982          184           17            31            18.5          11 \r\n 1982          185           18            34            19.5          0 \r\n 1982          186           14.4          33.5          22.5          0 \r\n 1982          187           15.1          31.5          20.5          57 \r\n 1982          188           29.2          29.5          18.5          33 \r\n 1982          189           28.7          29            17.5          0 \r\n 1982          190           26.9          30.5          18            0 \r\n 1982          191           14.5          28.5          20.5          13 \r\n 1982          192           25            27            18            8 \r\n 1982          193           20.4          30            16.5          0 \r\n 1982          194           18.9          31            17.5          0 \r\n 1982          195           17.4          28.5          19            2 \r\n 1982          196           13            31            21            11 \r\n 1982          197           11.8          31            20            13 \r\n 1982          198           9.8           33            23            7 \r\n 1982          199           8.8           32            19            77 \r\n 1982          200           15.3          30.5          20.5          25 \r\n 1982          201           19.8          30.5          20.5          0 \r\n 1982          202           15            31.5          22            0 \r\n 1982          203           20            28.5          20            0 \r\n 1982          204           27.1          28            18            0 \r\n 1982          205           27            30.5          18            0 \r\n 1982          206           25.5          32            19            0 \r\n 1982          207           20.2          33            20            0 \r\n 1982          208           15.4          31.5          21.5          0 \r\n 1982          209           27.2          28            17.5          0 \r\n 1982          210           20            27.5          17            0 \r\n 1982          211           26.4          28            16.5          0 \r\n 1982          212           26.9          29.5          16.5          0 \r\n 1982          213           23.3          32.5          18.5          0 \r\n 1982          214           21.3          34.5          19            0 \r\n 1982          215           16.3          35            22            0 \r\n 1982          216           18.4          35.5          23.5          0 \r\n 1982          217           7.5           30.5          20.5          48 \r\n 1982          218           11.4          26.5          21.5          1 \r\n 1982          219           12.1          28.5          21            20 \r\n 1982          220           26.2          29            19.5          43 \r\n 1982          221           20.6          26            14            0 \r\n 1982          222           22.4          22.5          13            18 \r\n 1982          223           26.8          24            11            0 \r\n 1982          224           25.6          25            10.5          0 \r\n 1982          225           24            26.5          16            0 \r\n 1982          226           23.1          27.5          16            0 \r\n 1982          227           13.4          26            18.5          0 \r\n 1982          228           22.1          29            19            0 \r\n 1982          229           18.1          30.5          18            0 \r\n 1982          230           18            30            17            0 \r\n 1982          231           19.8          31.5          19            0 \r\n 1982          232           22            30            21.5          0 \r\n 1982          233           23.4          29            14            0 \r\n 1982          234           11.9          27.5          16            0 \r\n 1982          235           22.4          28.5          17            9 \r\n 1982          236           11.3          28            15.5          0 \r\n 1982          237           22.9          27.5          12            3 \r\n 1982          238           10.5          25.5          14            0 \r\n 1982          239           18.5          24            15.5          0 \r\n 1982          240           20.9          23            10            0 \r\n 1982          241           17.6          25.5          12            0 \r\n 1982          242           9.8           24            18.5          24 \r\n 1982          243           8.8           25.5          18            0 \r\n 1982          244           11.6          31.5          19.5          10 \r\n 1982          245           23.7          28            16.5          0 \r\n 1982          246           24.3          26.5          10.5          0 \r\n 1982          247           23.9          27.5          10.5          0 \r\n 1982          248           21.1          28            15.5          0 \r\n 1982          249           4             24.5          16.5          16 \r\n 1982          250           11            21.5          14.5          9 \r\n 1982          251           19.4          25.5          12.5          0 \r\n 1982          252           21.5          28            15            0 \r\n 1982          253           11.5          29.5          18.5          0 \r\n 1982          254           16.8          30.5          19            0 \r\n 1982          255           15.5          30.5          19.5          0 \r\n 1982          256           4.7           29.5          19.5          0 \r\n 1982          257           7.6           28            18            16 \r\n 1982          258           17.1          24.5          14.5          0 \r\n 1982          259           11.5          19.5          8             0 \r\n 1982          260           6.9           19.5          13.5          0 \r\n 1982          261           20            20.5          9             23 \r\n 1982          262           17.4          23            9             0 \r\n 1982          263           17.1          17            6.5           0 \r\n 1982          264           19.7          17.5          3.5           0 \r\n 1982          265           19.4          21.5          3.5           0 \r\n 1982          266           6.9           22.5          7.5           0 \r\n 1982          267           15.3          19.5          11            0 \r\n 1982          268           15.4          15.5          9             0 \r\n 1982          269           16.5          16.5          10.5          0 \r\n 1982          270           17            21            5             0 \r\n 1982          271           14            26.5          11.5          0 \r\n 1982          272           12.3          29            16.5          0 \r\n 1982          273           9.4           30            15.5          0 \r\n 1982          274           11.6          29.5          15            0 \r\n 1982          275           10.8          25.5          14.5          0 \r\n 1982          276           18.4          25.5          9             0 \r\n 1982          277           17.1          26            8             0 \r\n 1982          278           11.6          28            13            0 \r\n 1982          279           8.7           28            13.5          0 \r\n 1982          280           17.7          23.5          4.5           5 \r\n 1982          281           12.1          24            7.5           0 \r\n 1982          282           11.7          24.5          15.5          20 \r\n 1982          283           11.1          18            10            0 \r\n 1982          284           13.2          14            8             0 \r\n 1982          285           14.1          17.5          4             0 \r\n 1982          286           11.4          13.5          6             0 \r\n 1982          287           15.1          19.5          5             0 \r\n 1982          288           14.8          19.5          6.5           0 \r\n 1982          289           15.2          16            1             0 \r\n 1982          290           6.7           19            3.5           0 \r\n 1982          291           9.6           22            9             0 \r\n 1982          292           3.5           19            10            13 \r\n 1982          293           13.4          12.5          2             17 \r\n 1982          294           14            10           -0.5           0 \r\n 1982          295           13.6          12.5         -4             0 \r\n 1982          296           13.2          15           -2             0 \r\n 1982          297           13.3          15.5         -1             0 \r\n 1982          298           12.6          18           -1             0 \r\n 1982          299           10.5          19            0.5           0 \r\n 1982          300           3.6           16.5          6             0 \r\n 1982          301           3.4           18            11            0 \r\n 1982          302           11.8          17.5          6             12 \r\n 1982          303           8.8           20.5          9             0 \r\n 1982          304           7.2           21.5          10            0 \r\n 1982          305           2.4           20            14.5          4 \r\n 1982          306           7.5           15.5          8             11 \r\n 1982          307           12.3          11            1.5           0 \r\n 1982          308           11.2          2            -4             0 \r\n 1982          309           11.8          0            -3.5           0 \r\n 1982          310           11.5          12           -4.5           0 \r\n 1982          311           7.4           18            3             0 \r\n 1982          312           4.1           16            6             1 \r\n 1982          313           3.6           13            5.5           1 \r\n 1982          314           4.3           18            5.5           0 \r\n 1982          315           2.2           17.5          5.5           10 \r\n 1982          316           10            16           -6.5           20 \r\n 1982          317           7            -1.5          -10.5          0 \r\n 1982          318           10.1          0            -5.5           0 \r\n 1982          319           10.5          3.5          -9.5           0 \r\n 1982          320           8.8           7.5          -2.5           0 \r\n 1982          321           10            11           -4.5           0 \r\n 1982          322           5.3           11           -0.5           0 \r\n 1982          323           1.8           15            9             2 \r\n 1982          324           3.9           19            6             1 \r\n 1982          325           9.1           12.5          0.5           0 \r\n 1982          326           2.3           9             0             0 \r\n 1982          327           3.4           6            -5.5           4 \r\n 1982          328           9.4           0            -10            0 \r\n 1982          329           5.4           3.5          -6.5           0 \r\n 1982          330           3.5           3            -2             0 \r\n 1982          331           5.8           3            -6             0 \r\n 1982          332           3.2           3.5          -0.5           17 \r\n 1982          333           4.6           6.5           1.5           3 \r\n 1982          334           1.1           14            2             0 \r\n 1982          335           2.6           17            5.5           0 \r\n 1982          336           2.5           17.5          12.5          43.94 \r\n 1982          337           2.4           16            6             13.46 \r\n 1982          338           4.4           6.5           1             0 \r\n 1982          339           1.2           8             2             18.54 \r\n 1982          340           8.5           5            -2             16.51 \r\n 1982          341           4.5           3            -2             0 \r\n 1982          342           6.2          -0.5          -8             0 \r\n 1982          343           9.1          -3.5          -14            0 \r\n 1982          344           5.1           3            -5.5           0 \r\n 1982          345           9.3          -1            -12.5          0 \r\n 1982          346           8.9          -4            -15            0 \r\n 1982          347           7.9           4.5          -9.5           0 \r\n 1982          348           5             5            -0.5           0 \r\n 1982          349           5             3.5          -3.5           0 \r\n 1982          350           8.2           2.5          -4             0 \r\n 1982          351           5.1           3.5          -7             0 \r\n 1982          352           4.8           10            0.5           0 \r\n 1982          353           7.9           5             0             0 \r\n 1982          354           8             2.5          -3.5           0 \r\n 1982          355           8             5            -7             0 \r\n 1982          356           3.3           8            -2             0 \r\n 1982          357           1             13            5             0 \r\n 1982          358           1.7           14.5          7.5           19.56 \r\n 1982          359           6.7           13           -1             7.11 \r\n 1982          360           7.9           1            -4             0 \r\n 1982          361           2.1           9.5          -1             0 \r\n 1982          362           7.5           12           -6.5           17.53 \r\n 1982          363           8.3          -4            -10            0 \r\n 1982          364           7.1           1            -9             0 \r\n 1982          365           8.2           3            -4.5           0 \r\n 1983          1             7.7           4            -3.5           0 \r\n 1983          2             5.4           1            -6             0 \r\n 1983          3             6.6           0.5          -11.5          0 \r\n 1983          4             3.9          -0.5          -5.5           0 \r\n 1983          5             4.1           1.5          -2             0 \r\n 1983          6             5.3           8.5          -2             0 \r\n 1983          7             7.4           4.5          -4.5           0 \r\n 1983          8             8.2           2            -6.5           0 \r\n 1983          9             3.8           5.5          -3.5           0 \r\n 1983          10            2             4.5           1             0 \r\n 1983          11            5.7           2            -7             1.27 \r\n 1983          12            5.3          -1            -11.5          0 \r\n 1983          13            8             5.5          -7.5           0 \r\n 1983          14            6.9           3.5          -2.5           0 \r\n 1983          15            9.2          -0.5          -8.5           0 \r\n 1983          16            7.7          -1.5          -11.5          0 \r\n 1983          17            9.3          -1.5          -9             0 \r\n 1983          18            9.1          -5            -14            0 \r\n 1983          19            6.3          -2.5          -11            0 \r\n 1983          20            8.8           0.5          -7.5           0 \r\n 1983          21            5.8           4            -6.5           0 \r\n 1983          22            1.6           2.5          -1.5           0 \r\n 1983          23            4.9           2             0             2.03 \r\n 1983          24            8.5           3            -2             0 \r\n 1983          25            6.8          -0.5          -7.5           0 \r\n 1983          26            5.9          -2            -9             1.52 \r\n 1983          27            10.3         -2.5          -16.5          0 \r\n 1983          28            6.1           2.5          -5             0 \r\n 1983          29            3             1.5          -1.5           2.79 \r\n 1983          30            10.8          1            -6.5           0 \r\n 1983          31            8.4          -1.5          -9.5           0 \r\n 1983          32            3.6           1            -8             0 \r\n 1983          33            3.2           1            -3             21.84 \r\n 1983          34            7.1          -2            -13            2.54 \r\n 1983          35            11.7         -6.5          -18.5          1.27 \r\n 1983          36            4.7          -2            -15            0 \r\n 1983          37            6.6          -2.5          -12.5          4.57 \r\n 1983          38            10.7         -6            -22            0 \r\n 1983          39            5.8           1.5          -14            0 \r\n 1983          40            5.2           2.5          -1             0 \r\n 1983          41            8.4           1.5          -1             0 \r\n 1983          42            10            3            -3.5           0 \r\n 1983          43            12.8          3            -3.5           0 \r\n 1983          44            11.6          7            -4             0 \r\n 1983          45            4.4           10.5         -1             0 \r\n 1983          46            3.1           7            -1             0 \r\n 1983          47            10.9          5             0.5           6.1 \r\n 1983          48            10            4             0.5           0 \r\n 1983          49            9             8.5           0             0 \r\n 1983          50            9.6           16.5          2             0 \r\n 1983          51            12.8          17            2             0 \r\n 1983          52            8.3           16.5          2             0 \r\n 1983          53            6.4           11            2.5           8.64 \r\n 1983          54            11.1          9            -1             0 \r\n 1983          55            15.2          5            -0.5           1.27 \r\n 1983          56            16.6          2            -5.5           0 \r\n 1983          57            15.9          5            -4.5           0 \r\n 1983          58            5.9           11            0             0 \r\n 1983          59            15.6          14.5         -2             0 \r\n 1983          60            9             16           -1.5           0 \r\n 1983          61            8.6           21            0.5           0 \r\n 1983          62            8.5           24            9             0 \r\n 1983          63            6.7           21            12            0 \r\n 1983          64            4.8           18.5          12.5          1.02 \r\n 1983          65            6.2           17.5          10.5          13.46 \r\n 1983          66            11.9          12.5          3.5           3.56 \r\n 1983          67            8.4           4.5          -4             0.51 \r\n 1983          68            4.1          -1            -6             0 \r\n 1983          69            12.1          1            -5.5           0 \r\n 1983          70            12.5          1.5          -3             0 \r\n 1983          71            15.9          2.5          -3             0 \r\n 1983          72            16.3          14.5         -2             0 \r\n 1983          73            18.2          11.5          1.5           0 \r\n 1983          74            9             13            1.5           0 \r\n 1983          75            15.4          15.5          2.5           0 \r\n 1983          76            7.6           13.5          2             0 \r\n 1983          77            4             10.5          3             0 \r\n 1983          78            6.3           8             1.5           0 \r\n 1983          79            4.6           4.5          -4             3.81 \r\n 1983          80            7.5          -0.5          -5             5.59 \r\n 1983          81            22            0.5          -8.5           0 \r\n 1983          82            20.2          3            -9             0 \r\n 1983          83            21.4          4            -7             0 \r\n 1983          84            11.3          5            -5.5           0 \r\n 1983          85            4.3           3.5          -1.5           10.16 \r\n 1983          86            3.6           3.5           0             13.72 \r\n 1983          87            22            5            -1             7.87 \r\n 1983          88            15.6          6.5          -3.5           0 \r\n 1983          89            9.3           7             0.5           2.03 \r\n 1983          90            7.4           8.5           3             0.76 \r\n 1983          91            2.2           9             4             4 \r\n 1983          92            1.5           7.5           2             43 \r\n 1983          93            13.8          6.5           0.5           10 \r\n 1983          94            6             6.5          -1             0 \r\n 1983          95            3.8           5.5           2.5           4 \r\n 1983          96            7.6           7.5           2.5           6 \r\n 1983          97            19.5          7.5           1.5           0 \r\n 1983          98            8.6           9            -0.5           0 \r\n 1983          99            4.4           8             0.5           10 \r\n 1983          100           11            5             1             3 \r\n 1983          101           20.1          13            0             0 \r\n 1983          102           7.1           14.5          3             0 \r\n 1983          103           9.8           14.5          8.5           1 \r\n 1983          104           12.7          10            0.5           7 \r\n 1983          105           25.7          8            -1.5           1 \r\n 1983          106           14.4          9            -3.5           0 \r\n 1983          107           5.7           5            -3             0 \r\n 1983          108           26.1          7            -4.5           0 \r\n 1983          109           26.5          10.5         -5             0 \r\n 1983          110           25.9          14           -2             0 \r\n 1983          111           22.6          17.5          3.5           0 \r\n 1983          112           22.2          21.5          8             0 \r\n 1983          113           14.9          19.5          7.5           0 \r\n 1983          114           27.1          17.5          2.5           0 \r\n 1983          115           27.2          22.5          3             0 \r\n 1983          116           17.4          27            12            0 \r\n 1983          117           22.2          24            10.5          0 \r\n 1983          118           26.5          20            9.5           1 \r\n 1983          119           8.5           19.5          9.5           0 \r\n 1983          120           27            22            9.5           1 \r\n 1983          121           6.9           19.5          7             0 \r\n 1983          122           4.9           15.5          8.5           15 \r\n 1983          123           10.3          17            6             7 \r\n 1983          124           26.3          17            7             0 \r\n 1983          125           24.4          22.5          3.5           0 \r\n 1983          126           21.1          28            12.5          1 \r\n 1983          127           6.9           25.5          9.5           0 \r\n 1983          128           28.8          15            3             1 \r\n 1983          129           28.6          19            2             0 \r\n 1983          130           27.7          23.5          6             0 \r\n 1983          131           18.8          26.5          10            0 \r\n 1983          132           17            25.5          15            3 \r\n 1983          133           5             24            15            2 \r\n 1983          134           10            17.5          8.5           2 \r\n 1983          135           29.9          17            7             3 \r\n 1983          136           16.6          21            4.5           0 \r\n 1983          137           14.4          19            6.5           0 \r\n 1983          138           7.8           17            10.5          6 \r\n 1983          139           23.3          17.5          11            9 \r\n 1983          140           12.5          23            9             0 \r\n 1983          141           12.1          22            13.5          5 \r\n 1983          142           14.4          23.5          15.5          5 \r\n 1983          143           31.2          22.5          8             0 \r\n 1983          144           24.6          26.5          8.5           0 \r\n 1983          145           30.5          23.5          11.5          4 \r\n 1983          146           31.2          22            7             0 \r\n 1983          147           16            25            10.5          0 \r\n 1983          148           11.2          23.5          14.5          7 \r\n 1983          149           22.8          20.5          9             0 \r\n 1983          150           22.7          18            6             2 \r\n 1983          151           23.7          18            9.5           2 \r\n 1983          152           25.3          23.5          7             0 \r\n 1983          153           20.6          21            13            0 \r\n 1983          154           15.4          25            14.5          6 \r\n 1983          155           26.2          27.5          11.5          0 \r\n 1983          156           14.4          24.5          11.5          0 \r\n 1983          157           30.7          23            9.5           0 \r\n 1983          158           30.7          28            10            0 \r\n 1983          159           29.7          28.5          11.5          0 \r\n 1983          160           17.6          31            15.5          0 \r\n 1983          161           18.4          30.5          17.5          0 \r\n 1983          162           18.2          30            16.5          0 \r\n 1983          163           20            31.5          20.5          0 \r\n 1983          164           22.9          31.5          20            0 \r\n 1983          165           14            29            19            0 \r\n 1983          166           27.2          30.5          12.5          0 \r\n 1983          167           25.9          29.5          13.5          0 \r\n 1983          168           24.7          29.5          16            0 \r\n 1983          169           11.3          28            17            0 \r\n 1983          170           17.6          28            16            15 \r\n 1983          171           10.6          31            18.5          0 \r\n 1983          172           9.9           33.5          22            0 \r\n 1983          173           28.9          33.5          21            0 \r\n 1983          174           19.3          35            18            0 \r\n 1983          175           10.6          35.5          21            0 \r\n 1983          176           13.2          34.5          23.5          0 \r\n 1983          177           19            34.5          22            0 \r\n 1983          178           14            30.5          21            0 \r\n 1983          179           11.8          27.5          20            9 \r\n 1983          180           9.3           27            18.5          16 \r\n 1983          181           22            32.5          18.5          23 \r\n 1983          182           19.1          33            18.5          0 \r\n 1983          183           13.9          32            19            18 \r\n 1983          184           21.4          33.5          22            0 \r\n 1983          185           27.1          31            18            14 \r\n 1983          186           26.1          26.5          16            0 \r\n 1983          187           30.4          24.5          12            0 \r\n 1983          188           30.6          28            12            0 \r\n 1983          189           29.8          30.5          15            0 \r\n 1983          190           29.1          31.5          17            0 \r\n 1983          191           29.2          32.5          18.5          0 \r\n 1983          192           27.9          34.5          19            0 \r\n 1983          193           29.5          32.5          19            0 \r\n 1983          194           25            34.5          20            0 \r\n 1983          195           19.4          33.5          21.5          0 \r\n 1983          196           20.8          33            22            0 \r\n 1983          197           24.7          33.5          21.5          0 \r\n 1983          198           25.9          34.5          21.5          0 \r\n 1983          199           20.3          35            22            0 \r\n 1983          200           17            35            23            0 \r\n 1983          201           28.6          38.5          24            0 \r\n 1983          202           28.9          38.5          24.5          0 \r\n 1983          203           28.4          39.5          24            0 \r\n 1983          204           17.8          36            23.5          0 \r\n 1983          205           15.9          31            21            0 \r\n 1983          206           23.6          31            18            2 \r\n 1983          207           25.9          31.5          17.5          0 \r\n 1983          208           23.6          33.5          19            0 \r\n 1983          209           24.7          39.5          24.5          0 \r\n 1983          210           14.4          37.5          23            0 \r\n 1983          211           21.9          33.5          22            14 \r\n 1983          212           26.5          34.5          21            0 \r\n 1983          213           29            31.5          16.5          0 \r\n 1983          214           27.1          34            17            0 \r\n 1983          215           20.8          38.5          21            0 \r\n 1983          216           23.5          37            22            0 \r\n 1983          217           17.7          33            21.5          0 \r\n 1983          218           18.5          33            19            0 \r\n 1983          219           26.9          35.5          20.5          0 \r\n 1983          220           27.1          37            19            0 \r\n 1983          221           24.6          34            21            0 \r\n 1983          222           24.1          37.5          18.5          0 \r\n 1983          223           20.4          33            17            12 \r\n 1983          224           25.2          28            13            0 \r\n 1983          225           23.2          30            13.5          0 \r\n 1983          226           14.8          29            18            0 \r\n 1983          227           23.7          33.5          17.5          0 \r\n 1983          228           23.9          37            20.5          0 \r\n 1983          229           22            39            25.5          0 \r\n 1983          230           21            37.5          25            0 \r\n 1983          231           21.3          38.5          23            0 \r\n 1983          232           22.4          38.5          24            0 \r\n 1983          233           18.2          37            23.5          0 \r\n 1983          234           8.1           34            20.5          38 \r\n 1983          235           10.2          28.5          20.5          0 \r\n 1983          236           14.8          32            19            0 \r\n 1983          237           16.6          34            22.5          0 \r\n 1983          238           20.6          34.5          25            0 \r\n 1983          239           14.4          31            21.5          0 \r\n 1983          240           23.4          33.5          19.5          0 \r\n 1983          241           23.5          35.5          19.5          0 \r\n 1983          242           14.6          31.5          19.5          10 \r\n 1983          243           20.8          30            18            8 \r\n 1983          244           24.8          30            14.5          0 \r\n 1983          245           24.3          32.5          15.5          0 \r\n 1983          246           23.7          33.5          16            0 \r\n 1983          247           22.4          33.5          18            0 \r\n 1983          248           8.5           31            21            0 \r\n 1983          249           20.4          28            17.5          13 \r\n 1983          250           23.7          29            12            9 \r\n 1983          251           20.6          34            13.5          0 \r\n 1983          252           22.1          35            21.5          0 \r\n 1983          253           15.1          34            19.5          0 \r\n 1983          254           19.3          25.5          12.5          6 \r\n 1983          255           12.3          25            12.5          6 \r\n 1983          256           21.1          22.5          10            0 \r\n 1983          257           19.5          22.5          7             0 \r\n 1983          258           1.4           18.5          10.5          10 \r\n 1983          259           11.7          20.5          12            21 \r\n 1983          260           14.4          27.5          9             0 \r\n 1983          261           11.9          28            20.5          0 \r\n 1983          262           16.4          30.5          15            46 \r\n 1983          263           3.8           26.5          7.5           20 \r\n 1983          264           12.9          13            3             9 \r\n 1983          265           11.2          13.5          1.5           0 \r\n 1983          266           20.2          17.5          0             0 \r\n 1983          267           17.1          21.5          5             0 \r\n 1983          268           9.7           20            11.5          6 \r\n 1983          269           12.2          22.5          12.5          6 \r\n 1983          270           18.3          27            10            0 \r\n 1983          271           16.3          29            14            0 \r\n 1983          272           14.7          28.5          16            0 \r\n 1983          273           17.8          28            11.5          0 \r\n 1983          274           17.6          28            11.5          0 \r\n 1983          275           16.4          29            15.5          0 \r\n 1983          276           10.9          27.5          17.5          0 \r\n 1983          277           14.1          21.5          11            0 \r\n 1983          278           18.6          24            7.5           0 \r\n 1983          279           17.3          21.5          5.5           0 \r\n 1983          280           12.9          26.5          9.5           0 \r\n 1983          281           10.5          21.5          10.5          4 \r\n 1983          282           17.5          19            3.5           0 \r\n 1983          283           12.4          20.5          6.5           0 \r\n 1983          284           4.9           21.5          11.5          4 \r\n 1983          285           11.4          15            5.5           12 \r\n 1983          286           8             8.5           0.5           3 \r\n 1983          287           15.9          16.5          0             1 \r\n 1983          288           6.6           21.5          9             0 \r\n 1983          289           14.8          19            8.5           0 \r\n 1983          290           14.9          17            2.5           0 \r\n 1983          291           13            17.5          2.5           0 \r\n 1983          292           3             14.5          8             0 \r\n 1983          293           3.3           10            7             12 \r\n 1983          294           1.1           11            8             6 \r\n 1983          295           2.3           11.5          9             8 \r\n 1983          296           5.5           11.5          8             0 \r\n 1983          297           4             11.5          8             0 \r\n 1983          298           14.7          14.5          5             0 \r\n 1983          299           14.5          18            3             0 \r\n 1983          300           13.7          23            1.5           0 \r\n 1983          301           11.5          21.5          11            0 \r\n 1983          302           9.9           16            2             0 \r\n 1983          303           3.8           11.5          6             0 \r\n 1983          304           5.6           13.5          7             5 \r\n 1983          305           4.3           17.5          10            20 \r\n 1983          306           4.9           18            13.5          4 \r\n 1983          307           2             16            5             0 \r\n 1983          308           13.3          10           -1             0 \r\n 1983          309           12.9          13           -2.5           0 \r\n 1983          310           2.7           12            3             0 \r\n 1983          311           5.2           14            7             0 \r\n 1983          312           7.5           17.5          8             0 \r\n 1983          313           1.4           14.5          9             0 \r\n 1983          314           2.2           12            1.5           25 \r\n 1983          315           10.1          5            -1             2 \r\n 1983          316           5             3            -3             0 \r\n 1983          317           3.9           5            -0.5           2 \r\n 1983          318           3.4           9.5           3             0 \r\n 1983          319           2.8           7.5           3             0 \r\n 1983          320           9.2           6.5           0             1 \r\n 1983          321           9             8            -4             0 \r\n 1983          322           7.1           14.5          1             0 \r\n 1983          323           4             17            8             8 \r\n 1983          324           4.5           14.5          4             2 \r\n 1983          325           10.1          11.5         -1             0 \r\n 1983          326           4.9           14            1.5           0 \r\n 1983          327           2.7           14           -2             16 \r\n 1983          328           7.8           2.5          -4             2 \r\n 1983          329           9.9           8            -6             0 \r\n 1983          330           7.2           12.5          2.5           0 \r\n 1983          331           1.2           8             1             8 \r\n 1983          332           5.3           6            -0.5           19 \r\n 1983          333           5.6           0.5          -5             0 \r\n 1983          334           7.2          -2.5          -7.5           0 \r\n 1983          335           8.2          -2            -10            0 \r\n 1983          336           9.1           2.5          -6             0 \r\n 1983          337           5             0            -8             0 \r\n 1983          338           5.5           2            -2             4.57 \r\n 1983          339           3.4           1.5          -0.5           0 \r\n 1983          340           7             0.5          -8             6.35 \r\n 1983          341           5.3          -3.5          -14.5          1.27 \r\n 1983          342           4.7          -4            -17            2.29 \r\n 1983          343           8.8          -0.5          -9.5           0 \r\n 1983          344           3.5           0            -10.5          0 \r\n 1983          345           3.8           2            -0.5           5.84 \r\n 1983          346           7.1           1.5          -4.5           5.59 \r\n 1983          347           5.2           1            -4             0 \r\n 1983          348           5             1            -4             6.1 \r\n 1983          349           6.1          -1.5          -8             6.6 \r\n 1983          350           9.2          -7.5          -19            0 \r\n 1983          351           9.2          -14           -18.5          0 \r\n 1983          352           6.5          -17           -24            1.52 \r\n 1983          353           6            -19           -28.5          0 \r\n 1983          354           8            -11           -23.5          0 \r\n 1983          355           7.8          -7            -14.5          7.87 \r\n 1983          356           8.3          -12.5         -26            5.33 \r\n 1983          357           5.9          -21.5         -26            0.51 \r\n 1983          358           6.9          -22.5         -28.5          0 \r\n 1983          359           7.1          -18           -25.5          0 \r\n 1983          360           8            -9            -21.5          0 \r\n 1983          361           6.2          -6            -9.5           0 \r\n 1983          362           7.9          -7            -14.5          2.54 \r\n 1983          363           9.4          -13.5         -20.5          0 \r\n 1983          364           9.5          -8            -22            0 \r\n 1983          365           6.4          -2            -13            0 \r\n 1984          1             4.5          -0.5          -9.5           2.03 \r\n 1984          2             6.5          -1            -9             7.37 \r\n 1984          3             5.8           4            -13.5          0 \r\n 1984          4             8.9           5.5          -1.5           0 \r\n 1984          5             7             6.5          -4.5           0 \r\n 1984          6             9.1           4            -2             0 \r\n 1984          7             9.3           2.5          -5.5           0 \r\n 1984          8             6.3          -1            -6.5           0 \r\n 1984          9             5            -2.5          -6             0 \r\n 1984          10            7.9          -5            -15            0 \r\n 1984          11            5.2          -7            -17.5          0 \r\n 1984          12            6.8          -5.5          -10            0 \r\n 1984          13            6.9          -5.5          -9.5           0.76 \r\n 1984          14            7.4          -5            -10            0 \r\n 1984          15            7.8          -5            -13            0 \r\n 1984          16            6.4          -5            -14.5          0 \r\n 1984          17            7            -8            -19.5          0 \r\n 1984          18            8.1          -11.5         -22.5          0 \r\n 1984          19            8.3          -10.5         -23            0 \r\n 1984          20            8.7          -13.5         -25            0 \r\n 1984          21            7.7          -7            -27            0 \r\n 1984          22            7.1           0            -13.5          0 \r\n 1984          23            3.7           1            -4             0 \r\n 1984          24            9.3           4.5          -4.5           0 \r\n 1984          25            10.3          6.5          -6             0 \r\n 1984          26            6.6           7.5           0.5           0 \r\n 1984          27            10.9          3.5          -7.5           0 \r\n 1984          28            8.5           5.5          -6             0 \r\n 1984          29            6.7           0            -7             0 \r\n 1984          30            8.9          -3            -10.5          8.89 \r\n 1984          31            9.1           2.5          -13.5          0 \r\n 1984          32            8.8           8            -10            0 \r\n 1984          33            7.3           6.5          -2             0 \r\n 1984          34            9.6           5.5          -1.5           0 \r\n 1984          35            7.9           3            -5             0 \r\n 1984          36            7.8          -4            -17.5          6.1 \r\n 1984          37            6.8          -11.5         -22            0 \r\n 1984          38            7.4          -5.5          -20            0 \r\n 1984          39            8.9           4.5          -11.5          0 \r\n 1984          40            10.3          7.5          -5             0 \r\n 1984          41            4.8           4             0.5           0.76 \r\n 1984          42            4.4           6.5          -1.5           1.52 \r\n 1984          43            4.6           11.5          4.5           0 \r\n 1984          44            9.4           10            0.5           0 \r\n 1984          45            13.3          15           -2             0 \r\n 1984          46            13.6          16            3             0 \r\n 1984          47            3.2           11            4             0 \r\n 1984          48            4.3           6             2.5           13.46 \r\n 1984          49            2.1           8             1.5           0 \r\n 1984          50            3.7           7             1             10.41 \r\n 1984          51            16            9            -3             0 \r\n 1984          52            14.4          11.5         -3.5           0 \r\n 1984          53            16.1          16.5          1             0 \r\n 1984          54            10.9          13            2             0 \r\n 1984          55            7.4           7             1             0 \r\n 1984          56            11            8            -4             0 \r\n 1984          57            10.5          8            -0.5           0 \r\n 1984          58            8.3           4.5          -3.5           0 \r\n 1984          59            14.8          3.5          -3             0 \r\n 1984          60            17.1          3.25         -5             0 \r\n 1984          61            13.3          3            -7             0 \r\n 1984          62            14            6            -6             0 \r\n 1984          63            15.7          5            -3             0 \r\n 1984          64            3.2           6            -6             5.33 \r\n 1984          65            5.2           3            -3             0 \r\n 1984          66            18.6          2            -5.5           0 \r\n 1984          67            10           -1.5          -14.5          0 \r\n 1984          68            11.9         -1.5          -11.5          5.08 \r\n 1984          69            13.1         -2            -9.5           0 \r\n 1984          70            12.2         -3.5          -15.5          0 \r\n 1984          71            16.3         -0.5          -17.5          0 \r\n 1984          72            6.3          -0.5          -11.5          0 \r\n 1984          73            7.3          -5            -10.5          3.81 \r\n 1984          74            8.6           0.5          -6.5           0 \r\n 1984          75            7.4           2.5          -2.5           8.64 \r\n 1984          76            5.4           12            0             9.4 \r\n 1984          77            3             5            -0.5           3.56 \r\n 1984          78            4.8           1.5          -3             3.05 \r\n 1984          79            2.1           0.5          -4             3.81 \r\n 1984          80            3.3           0.5          -3             10.92 \r\n 1984          81            3.9           0.5          -2             6.1 \r\n 1984          82            11.8          3            -2             0 \r\n 1984          83            17.4          5.5          -1             0 \r\n 1984          84            7.2           10.5         -4             0 \r\n 1984          85            19            7            -0.5           0 \r\n 1984          86            11.4          10.5          1             0 \r\n 1984          87            4.2           9.5          -0.5           5.08 \r\n 1984          88            15.7          7             3.5           2.03 \r\n 1984          89            16.1          11            2             0 \r\n 1984          90            12            9.5          -1             0 \r\n 1984          91            20.6          7            -2             0 \r\n 1984          92            19.8          11.5         -2.5           0 \r\n 1984          93            7.2           13.5         -2.5           0 \r\n 1984          94            2.6           11.5          4             2 \r\n 1984          95            4.2           9.5           2             11 \r\n 1984          96            23.5          5.5           1.5           10 \r\n 1984          97            25            15.5          1.5           4 \r\n 1984          98            11.8          16.5          0.5           0 \r\n 1984          99            3             15            2             0 \r\n 1984          100           5.4           12            5.5           3 \r\n 1984          101           16.2          11            4.5           8 \r\n 1984          102           13.3          18            7             0 \r\n 1984          103           8.5           18.5          6.5           0 \r\n 1984          104           5.3           16.5          8.5           3 \r\n 1984          105           6.2           12            5             2 \r\n 1984          106           9             11.5          7             3 \r\n 1984          107           8.4           13            6             3 \r\n 1984          108           21.4          12.5          7             0 \r\n 1984          109           16.2          15.5          1.5           0 \r\n 1984          110           17.7          13            1.5           0 \r\n 1984          111           17.6          15            2             0 \r\n 1984          112           4.4           15.5          5             0 \r\n 1984          113           1.6           13.5          7.5           0 \r\n 1984          114           3.4           9             1.5           37 \r\n 1984          115           23.7          6.5           1.5           1 \r\n 1984          116           21.6          20.5          1             0 \r\n 1984          117           20.9          21.5          4             0 \r\n 1984          118           23            28            14            0 \r\n 1984          119           26.7          27.5          17            0 \r\n 1984          120           3.7           19.5          6.5           0 \r\n 1984          121           20.1          17            6.5           12 \r\n 1984          122           24.4          17            2.5           35 \r\n 1984          123           15.7          17            3             0 \r\n 1984          124           3.2           20.5          7.5           7 \r\n 1984          125           14.3          16            6             24 \r\n 1984          126           23            16.5          4.5           11 \r\n 1984          127           15.7          19.5          5             0 \r\n 1984          128           12.8          19            8             0 \r\n 1984          129           20.4          18            8             0 \r\n 1984          130           25.1          14            2             0 \r\n 1984          131           12.7          19.5          4.5           0 \r\n 1984          132           12.1          22.5          7.5           0 \r\n 1984          133           24.5          22            10            0 \r\n 1984          134           26.5          24.5          7             0 \r\n 1984          135           27.8          27            14.5          0 \r\n 1984          136           19            24            8             0 \r\n 1984          137           26.1          22            6.5           0 \r\n 1984          138           26.3          23            4.5           0 \r\n 1984          139           24.1          28.5          10            0 \r\n 1984          140           5.8           31            13.5          0 \r\n 1984          141           23.4          27            16.5          5 \r\n 1984          142           16.2          25.5          15.5          11 \r\n 1984          143           4             24.5          14            0 \r\n 1984          144           30.7          23            15            5 \r\n 1984          145           24.4          22            9             5 \r\n 1984          146           8.9           27            9.5           0 \r\n 1984          147           28            24.5          12.5          36 \r\n 1984          148           7.7           19            7.5           5 \r\n 1984          149           6.5           17.5          9.5           0 \r\n 1984          150           30.1          16            6.5           26 \r\n 1984          151           30.2          17            4             8 \r\n 1984          152           27.9          22.5          6.5           0 \r\n 1984          153           24.9          25            7.5           0 \r\n 1984          154           19.1          29.5          15            0 \r\n 1984          155           26.4          27            16.5          0 \r\n 1984          156           17            28.5          9             0 \r\n 1984          157           22.3          29            14            0 \r\n 1984          158           13.7          31            18.5          0 \r\n 1984          159           10            31            19.5          5 \r\n 1984          160           27.6          27            20            6 \r\n 1984          161           4.7           30            19.5          10 \r\n 1984          162           27.6          28.5          17.5          16 \r\n 1984          163           25            28            18            23 \r\n 1984          164           16.6          28            14.5          0 \r\n 1984          165           22.2          30.5          19.5          0 \r\n 1984          166           24.9          30.5          19.5          0 \r\n 1984          167           7.7           29            17.5          0 \r\n 1984          168           17.6          26            13            3 \r\n 1984          169           23.2          31            16.5          0 \r\n 1984          170           25.2          33.5          23            0 \r\n 1984          171           24.7          32            21.5          4 \r\n 1984          172           24.5          30.5          16.5          0 \r\n 1984          173           16.6          31            16.5          0 \r\n 1984          174           24.8          30.5          18.5          0 \r\n 1984          175           25.7          32.5          19.5          8 \r\n 1984          176           28.1          31            18            18 \r\n 1984          177           27.3          28.5          15            0 \r\n 1984          178           21.2          30            16.5          0 \r\n 1984          179           31.9          29.5          19            0 \r\n 1984          180           18.8          28.5          14.5          4 \r\n 1984          181           25.1          29            14.5          0 \r\n 1984          182           20            26.5          14            0 \r\n 1984          183           25.4          25            13            0 \r\n 1984          184           25.6          28.5          12            0 \r\n 1984          185           12            30            14.5          0 \r\n 1984          186           14            28.5          16            0 \r\n 1984          187           28.9          29            18            2 \r\n 1984          188           29.5          31            16.5          0 \r\n 1984          189           30.8          27            15            6 \r\n 1984          190           19.3          25            9.5           0 \r\n 1984          191           25.8          27            13.5          0 \r\n 1984          192           21.6          36            21            6 \r\n 1984          193           27.4          35            21.5          0 \r\n 1984          194           26.9          31.5          17.5          37 \r\n 1984          195           25.4          32            18.5          0 \r\n 1984          196           22.7          32            18.5          0 \r\n 1984          197           26.6          32.5          19.5          0 \r\n 1984          198           29.8          31            20            23 \r\n 1984          199           26.4          29.5          14.5          0 \r\n 1984          200           27.8          27.5          16            5 \r\n 1984          201           25.4          26.5          13.5          0 \r\n 1984          202           22.6          30            14            0 \r\n 1984          203           25.4          31.5          20            14 \r\n 1984          204           25.1          32            20            0 \r\n 1984          205           24.4          33.5          22.5          0 \r\n 1984          206           16.6          34            22.5          0 \r\n 1984          207           5.6           32.5          22            0 \r\n 1984          208           7.6           25.5          17            6 \r\n 1984          209           16.9          22.5          16.5          7 \r\n 1984          210           23.6          26.5          14            13 \r\n 1984          211           25.2          26            14            0 \r\n 1984          212           24.6          26.5          13            0 \r\n 1984          213           22.3          27            12.5          0 \r\n 1984          214           23.8          29            14.5          0 \r\n 1984          215           22.2          30            17            0 \r\n 1984          216           22.2          31.5          18.5          0 \r\n 1984          217           21.9          32.5          20            0 \r\n 1984          218           22.3          32            19.5          0 \r\n 1984          219           23.6          32            20.5          0 \r\n 1984          220           22.9          34.5          21            0 \r\n 1984          221           22.5          35            23            0 \r\n 1984          222           21.6          33.5          21.5          4 \r\n 1984          223           25.4          34            21            0 \r\n 1984          224           21.2          31            16.5          0 \r\n 1984          225           23.1          30.5          16.5          0 \r\n 1984          226           21.9          30.5          16.5          0 \r\n 1984          227           23.5          30            15.5          0 \r\n 1984          228           21.1          31.5          15            0 \r\n 1984          229           19.3          34            17.5          0 \r\n 1984          230           5             34            19            0 \r\n 1984          231           15.8          30.5          21            0 \r\n 1984          232           24.3          29            19.5          13 \r\n 1984          233           22.7          27            15            0 \r\n 1984          234           8             28            13            0 \r\n 1984          235           25.3          27.5          15.5          0 \r\n 1984          236           19.3          28            15            1 \r\n 1984          237           24.4          24.5          9.5           0 \r\n 1984          238           20.7          25            8.5           0 \r\n 1984          239           21.4          28            11            0 \r\n 1984          240           19.8          30.5          14.5          0 \r\n 1984          241           23.2          32.5          18            0 \r\n 1984          242           23.5          35            19.5          0 \r\n 1984          243           24.6          36            20.5          0 \r\n 1984          244           18.7          32.5          16            0 \r\n 1984          245           22.7          29            9.5           0 \r\n 1984          246           7.7           36.5          19            0 \r\n 1984          247           11.6          33            18.5          0 \r\n 1984          248           14.9          22            14            0 \r\n 1984          249           19            25.5          7.5           0 \r\n 1984          250           8             24.5          10.5          0 \r\n 1984          251           22.1          22            10.5          0 \r\n 1984          252           9.4           32.5          18.5          0 \r\n 1984          253           8.5           28            15.5          0 \r\n 1984          254           3.6           24.5          16            10 \r\n 1984          255           19.1          22.5          15            4 \r\n 1984          256           18.8          26.5          13.5          13 \r\n 1984          257           5.4           32.5          17            0 \r\n 1984          258           7             29            19            0 \r\n 1984          259           17.9          21.5          12            7 \r\n 1984          260           20            18.5          4.5           0 \r\n 1984          261           19.5          19.5          3             0 \r\n 1984          262           20.8          21.5          6.5           0 \r\n 1984          263           20.8          25.5          7             0 \r\n 1984          264           20.5          31            12            0 \r\n 1984          265           20            30.5          14.5          0 \r\n 1984          266           4.9           29.5          13            0 \r\n 1984          267           13.1          24.5          16.5          0 \r\n 1984          268           15.8          27.5          17.5          2 \r\n 1984          269           6.4           32            19            0 \r\n 1984          270           14.7          28            8             12 \r\n 1984          271           6.5           12            0             2 \r\n 1984          272           6.2           11.5          6.5           0 \r\n 1984          273           17.4          12            4.5           0 \r\n 1984          274           17.2          14.5         -2             0 \r\n 1984          275           18.9          18           -1             0 \r\n 1984          276           15.5          20.5          0             0 \r\n 1984          277           16.8          22.5          3.5           0 \r\n 1984          278           12.6          25.5          7.5           0 \r\n 1984          279           8.6           25.5          6.5           0 \r\n 1984          280           3.4           24            12            0 \r\n 1984          281           7             21.5          14            0 \r\n 1984          282           11.6          24.5          17            3 \r\n 1984          283           8.8           23            10            0 \r\n 1984          284           6.5           23            12.5          3 \r\n 1984          285           1.2           22.5          14            0 \r\n 1984          286           8.3           20            15.5          0 \r\n 1984          287           7.4           24            15.5          6 \r\n 1984          288           6.1           22.5          12            0 \r\n 1984          289           4.4           21            14.5          0 \r\n 1984          290           3.2           22            12.5          14 \r\n 1984          291           16.6          22            4.5           6 \r\n 1984          292           1.6           20            2             31 \r\n 1984          293           13.9          17.5          6.5           14 \r\n 1984          294           9.1           17.5          6             59 \r\n 1984          295           11.1          14            3.5           0 \r\n 1984          296           10            13            5.5           16 \r\n 1984          297           14.3          14           -1             0 \r\n 1984          298           14            11            0             0 \r\n 1984          299           2.5           14.5         -2             0 \r\n 1984          300           11.1          13            6             3 \r\n 1984          301           1.2           19            6.5           5 \r\n 1984          302           4.7           20            15            8 \r\n 1984          303           13.2          17.5          2             15 \r\n 1984          304           9.7           15.5         -1.5           0 \r\n 1984          305           1.8           14            4             0 \r\n 1984          306           7.5           15            2.5           5 \r\n 1984          307           10.9          18           -0.5           47 \r\n 1984          308           12            4.5          -5.5           0 \r\n 1984          309           12            13           -1.5           0 \r\n 1984          310           7.5           17.5          5             0 \r\n 1984          311           12.6          11           -1.5           0 \r\n 1984          312           4.1           15           -3.5           0 \r\n 1984          313           8.8           13            4.5           0 \r\n 1984          314           2.7           19.5          9             0 \r\n 1984          315           2.1           22.5          10            4 \r\n 1984          316           6.9           14            1.5           4 \r\n 1984          317           11.8          3.5          -2.5           1 \r\n 1984          318           10.4          6.5          -6.5           0 \r\n 1984          319           2.2           12           -2             0 \r\n 1984          320           6.6           12.5          5             0 \r\n 1984          321           11.2          12            1             0 \r\n 1984          322           3.9           6.5          -5.5           0 \r\n 1984          323           4.4           5.5          -3             0 \r\n 1984          324           10.4          4            -1.5           0 \r\n 1984          325           9.5           2            -6.5           0 \r\n 1984          326           9.6           2.5          -9             0 \r\n 1984          327           8.1           5            -9             0 \r\n 1984          328           9.7           8.5          -4             0 \r\n 1984          329           9.4           10.5         -3.5           0 \r\n 1984          330           5             14.5         -2.5           0 \r\n 1984          331           6.7           13.5          0             0 \r\n 1984          332           1.7           18            6.5           0 \r\n 1984          333           6.2           14            2             13 \r\n 1984          334           6.5           6.5          -3             0 \r\n 1984          335           6.3           8.5          -1             0 \r\n 1984          336           7.7           6            -2             0 \r\n 1984          337           2.2           3.5          -5.5           3.81 \r\n 1984          338           9             6            -3             0 \r\n 1984          339           7.6          -1.5          -11.5          0 \r\n 1984          340           5            -2            -12            0 \r\n 1984          341           6             0.5          -10.5          0.51 \r\n 1984          342           8.2          -2.5          -18            0 \r\n 1984          343           8             4.5          -12            0 \r\n 1984          344           4.4           10           -5.5           1.27 \r\n 1984          345           9.2           9            -2.5           0 \r\n 1984          346           4.8           9.5          -2             0 \r\n 1984          347           4.3           11           -2.5           3.3 \r\n 1984          348           2.3           8.5          -0.5           0 \r\n 1984          349           4.3           2.5          -3.5           17.78 \r\n 1984          350           1.7           4             0             0 \r\n 1984          351           5.2           9.5           0             0 \r\n 1984          352           4.3           14.5          4             0 \r\n 1984          353           7.8           6            -4.5           0 \r\n 1984          354           8            -1.5          -10.5          3.81 \r\n 1984          355           7.5          -1            -5.5           0 \r\n 1984          356           2.7           0.5          -7.5           0 \r\n 1984          357           8.6           9            -2             0 \r\n 1984          358           5.4           2.5          -7.5           0 \r\n 1984          359           2.8           7            -4             0 \r\n 1984          360           5.2           2.5          -14            4.32 \r\n 1984          361           3.25         -2.5          -19            0 \r\n 1984          362           1.3           0.5          -6             15.24 \r\n 1984          363           2.3           9            -0.5           0.76 \r\n 1984          364           2.9           19.5          7             3.05 \r\n 1984          365           9             18.5         -3.5           0 \r\n 1984          366           1.7           1.5          -7             0 \r\n 1985          1             5            -3            -13.5          21.59 \r\n 1985          2             5.1          -10.5         -23            0 \r\n 1985          3             5.1          -9            -24.5          0 \r\n 1985          4             8.3          -3            -21            0 \r\n 1985          5             9.4           1.5          -6.5           0 \r\n 1985          6             4.9           4            -5             0 \r\n 1985          7             8.3           3            -2             0 \r\n 1985          8             6.7           0.5          -11            0 \r\n 1985          9             6            -2            -9.5           0 \r\n 1985          10            4.6          -4.5          -10.5          5.08 \r\n 1985          11            6.6          -5.5          -12.5          0 \r\n 1985          12            5.8          -9.5          -18            0 \r\n 1985          13            9.9          -0.5          -13.5          0 \r\n 1985          14            7.7           2            -12            0 \r\n 1985          15            6.1          -8            -18            0 \r\n 1985          16            5.4          -3            -11            0 \r\n 1985          17            6.7          -2.5          -13.5          2.54 \r\n 1985          18            8.4           1            -12            3.81 \r\n 1985          19            8.1          -11           -27            0 \r\n 1985          20            8.7          -19           -30.5          0 \r\n 1985          21            10.5         -4            -21            0 \r\n 1985          22            11.3         -3            -10.5          0 \r\n 1985          23            9.5          -1            -9.5           0 \r\n 1985          24            8.5           0            -4.5           1.27 \r\n 1985          25            9.7           0.5          -17            0 \r\n 1985          26            9.5          -5.5          -21            0 \r\n 1985          27            11.1         -1            -10            0 \r\n 1985          28            11.7         -4.5          -17.5          0 \r\n 1985          29            6.6          -3            -16            0 \r\n 1985          30            5.3          -2.5          -14            0 \r\n 1985          31            7.7          -12.5         -23.5          3.3 \r\n 1985          32            12.8         -11           -25.5          0 \r\n 1985          33            12.8         -11.5         -23.5          0 \r\n 1985          34            13.5         -6.5          -21            0 \r\n 1985          35            9.2          -7.5          -15            0 \r\n 1985          36            8.5          -4            -12            1.78 \r\n 1985          37            13.8         -6.5          -20.5          0 \r\n 1985          38            14.4         -9            -21.5          0 \r\n 1985          39            12.7         -7.5          -22.5          0 \r\n 1985          40            2.3          -4            -12.5          0 \r\n 1985          41            6.2          -2            -5.5           1.27 \r\n 1985          42            12.2         -1.5          -6.5           8.38 \r\n 1985          43            14.5         -4            -13            0 \r\n 1985          44            13.8         -3            -14.5          0 \r\n 1985          45            15.5         -5.5          -15.5          0 \r\n 1985          46            12.9         -8.5          -18.5          0 \r\n 1985          47            9.9           3            -11.5          0 \r\n 1985          48            14.7          5            -4             0 \r\n 1985          49            15.6          5.5          -3.5           0 \r\n 1985          50            8.6           2.5          -9             0 \r\n 1985          51            11.4          7            -7             0 \r\n 1985          52            3.3           7.5           2             12.7 \r\n 1985          53            8.3           8             3.5           15.24 \r\n 1985          54            5             8.5           3             6.1 \r\n 1985          55            7.7           5.5           0.5           10.16 \r\n 1985          56            11.5          6            -0.5           1.02 \r\n 1985          57            8.9           4.5          -1.5           0 \r\n 1985          58            16.6          3            -6             0 \r\n 1985          59            17.7          11.5         -3             0 \r\n 1985          60            14            13            2.5           1.52 \r\n 1985          61            16.2          9.5          -2.5           0 \r\n 1985          62            2.5           5            -1.5           0 \r\n 1985          63            7.8           7            -2.5           50.29 \r\n 1985          64            14.9          1            -5.5           0 \r\n 1985          65            15.9          3.5          -7.5           0 \r\n 1985          66            7.2           11            0             0 \r\n 1985          67            19.2          13            1.5           0.51 \r\n 1985          68            19.5          15.5         -2.5           0 \r\n 1985          69            13            17            0.5           0 \r\n 1985          70            4.5           12            4             12.19 \r\n 1985          71            16.2          10            0             0 \r\n 1985          72            7.7           8             2             2.54 \r\n 1985          73            16.2          10           -1.5           0 \r\n 1985          74            20.4          11.5         -3.5           0 \r\n 1985          75            19.6          11.5          1             0 \r\n 1985          76            18.7          11.5         -1.5           0 \r\n 1985          77            19.1          13           -3.5           0 \r\n 1985          78            19.7          18            5             0 \r\n 1985          79            20.8          17            1.5           0 \r\n 1985          80            20.3          14           -1.5           0 \r\n 1985          81            11.4          11           -1.5           0 \r\n 1985          82            4.1           9.5           3             2.03 \r\n 1985          83            5.1           5.5           1.5           4.06 \r\n 1985          84            6.4           7.5           1.5           0 \r\n 1985          85            20.2          20.5          1             0 \r\n 1985          86            15.4          19.5          11.5          0 \r\n 1985          87            15.2          25            8             9.14 \r\n 1985          88            7.2           14            4             0 \r\n 1985          89            3.6           8             0             0 \r\n 1985          90            6.4           4.5          -0.5           12.7 \r\n 1985          91            21.2          8            -2             0 \r\n 1985          92            19.9          17           -3.5           0 \r\n 1985          93            22.7          17            3.5           0 \r\n 1985          94            9.1           17.5          5.5           0 \r\n 1985          95            4.9           7.5           1.5           6 \r\n 1985          96            16.7          9.5           0.5           8 \r\n 1985          97            19.4          9.5          -1             0 \r\n 1985          98            18.9          7.5          -2             0 \r\n 1985          99            24.3          11           -5.5           0 \r\n 1985          100           12.3          12.5          2.5           0 \r\n 1985          101           19.5          20            5             0 \r\n 1985          102           21            25.5          7.5           0 \r\n 1985          103           12.2          22            11.5          0 \r\n 1985          104           12.5          15.5          5             2 \r\n 1985          105           24.7          21            3             0 \r\n 1985          106           25            23.5          7             0 \r\n 1985          107           25            28.5          3.5           0 \r\n 1985          108           23.1          30.5          15            0 \r\n 1985          109           20            29.5          17            0 \r\n 1985          110           23.1          29.5          18.5          0 \r\n 1985          111           18.6          30.5          16.5          0 \r\n 1985          112           11.5          28            15            0 \r\n 1985          113           15            25.5          14            6 \r\n 1985          114           15.5          22            8.5           5 \r\n 1985          115           15.5          21            7.5           0 \r\n 1985          116           22.3          26.5          10.5          0 \r\n 1985          117           6.7           24            10            0 \r\n 1985          118           25.9          22            7.5           0 \r\n 1985          119           26.9          26            5.5           0 \r\n 1985          120           7.5           24.5          12.5          0 \r\n 1985          121           11.9          19            11            11 \r\n 1985          122           25.5          21.5          5.5           2 \r\n 1985          123           26.3          24            5             0 \r\n 1985          124           24.6          24.5          10.5          0 \r\n 1985          125           7.7           23            15            0 \r\n 1985          126           25.1          23.5          13            1 \r\n 1985          127           24            27            9             0 \r\n 1985          128           25.3          28.5          11.5          0 \r\n 1985          129           27.4          28            13            0 \r\n 1985          130           24.2          28.5          13            0 \r\n 1985          131           9.2           25.5          14.5          3 \r\n 1985          132           24.3          23.5          14.5          40 \r\n 1985          133           14.5          22.5          11            0 \r\n 1985          134           18.4          26            13            15 \r\n 1985          135           9.7           19.5          12            16 \r\n 1985          136           5.7           16.5          10.5          2 \r\n 1985          137           27.6          20            9.5           3 \r\n 1985          138           28.7          26            7.5           0 \r\n 1985          139           28.3          26.5          12.5          0 \r\n 1985          140           24.2          24.5          15            0 \r\n 1985          141           29.4          23            9.5           0 \r\n 1985          142           25.3          22.5          9             0 \r\n 1985          143           25.5          26.5          7.5           0 \r\n 1985          144           25.5          28.5          11.5          0 \r\n 1985          145           25.8          30            12            0 \r\n 1985          146           25.8          34            16.5          0 \r\n 1985          147           2.8           28.5          15            0 \r\n 1985          148           26.9          23.5          9.5           6 \r\n 1985          149           21.1          26.5          9.5           0 \r\n 1985          150           20            29            16            0 \r\n 1985          151           24.6          28            16.5          4 \r\n 1985          152           19.1          27            10            0 \r\n 1985          153           22.7          26.5          15.5          2 \r\n 1985          154           23            24.5          12            0 \r\n 1985          155           5.2           22            12            0 \r\n 1985          156           25.1          25.5          13            0 \r\n 1985          157           21.5          25.5          10.5          0 \r\n 1985          158           26.9          30            9.5           0 \r\n 1985          159           29.4          34.5          17.5          0 \r\n 1985          160           20.4          33            18.5          0 \r\n 1985          161           9.8           26            14            0 \r\n 1985          162           4             21            12            4 \r\n 1985          163           17.9          20            9.5           4 \r\n 1985          164           27.5          24            7             0 \r\n 1985          165           7.8           22            12.5          0 \r\n 1985          166           24.9          27.5          15.5          8 \r\n 1985          167           18.5          28.5          15            0 \r\n 1985          168           27.3          28            16.5          0 \r\n 1985          169           20            25.5          13.5          0 \r\n 1985          170           20.8          24            11            5 \r\n 1985          171           28.1          28            11.5          2 \r\n 1985          172           15.4          29            18.5          0 \r\n 1985          173           28            27.5          15            16 \r\n 1985          174           18.6          27.5          16            0 \r\n 1985          175           28.7          29.5          18            7 \r\n 1985          176           23.5          32            19            0 \r\n 1985          177           27.7          33            20.5          0 \r\n 1985          178           14            31            20            0 \r\n 1985          179           22.2          26.5          14.5          0 \r\n 1985          180           21.8          27.5          14.5          0 \r\n 1985          181           25            29.5          15.5          0 \r\n 1985          182           26.1          30            16            0 \r\n 1985          183           23.8          32            18.5          0 \r\n 1985          184           29.6          31            15.5          0 \r\n 1985          185           22.8          32.5          21.5          0 \r\n 1985          186           24.8          31.5          15.5          0 \r\n 1985          187           27            32.5          16.5          0 \r\n 1985          188           25.1          34            19            0 \r\n 1985          189           17.4          33.5          20.5          0 \r\n 1985          190           21            34.5          22            0 \r\n 1985          191           29.7          32            19            0 \r\n 1985          192           23.5          30            16.5          11 \r\n 1985          193           3.9           29.5          18.5          6 \r\n 1985          194           17.2          34            21            5 \r\n 1985          195           20.1          32            21.5          3 \r\n 1985          196           27.6          29            18            6 \r\n 1985          197           29.6          29.5          15            0 \r\n 1985          198           28.3          29.5          16            0 \r\n 1985          199           20.3          30.5          16            0 \r\n 1985          200           10.5          29            20.5          0 \r\n 1985          201           25.8          31.5          18.5          0 \r\n 1985          202           20.6          31.5          19.5          0 \r\n 1985          203           30            30.5          18.5          0 \r\n 1985          204           30            29            12.5          0 \r\n 1985          205           23.4          33            17.5          0 \r\n 1985          206           14.5          31.5          21            11 \r\n 1985          207           28.8          30            17            3 \r\n 1985          208           26.7          30.5          15.5          0 \r\n 1985          209           26.3          31            16.5          0 \r\n 1985          210           19.3          31            18            0 \r\n 1985          211           5.7           25.5          18.5          20 \r\n 1985          212           5.8           21            18            23 \r\n 1985          213           23.8          26            15.5          0 \r\n 1985          214           26.6          27.5          12            0 \r\n 1985          215           11.7          25.5          14.5          0 \r\n 1985          216           3.5           24.5          17            0 \r\n 1985          217           21.1          31            20            2 \r\n 1985          218           17.5          31.5          21            0 \r\n 1985          219           27.2          31            20.5          0 \r\n 1985          220           26.2          31            15            0 \r\n 1985          221           26.3          34            17.5          0 \r\n 1985          222           24.2          31            16            36 \r\n 1985          223           26.5          27            12.5          0 \r\n 1985          224           22.7          32            16.5          0 \r\n 1985          225           20.9          31.5          18.5          5 \r\n 1985          226           8.4           26.5          18.5          3 \r\n 1985          227           21.4          26            17            1 \r\n 1985          228           20.3          28            17            0 \r\n 1985          229           17.9          30            17.5          0 \r\n 1985          230           25.5          27.5          15.5          0 \r\n 1985          231           20.5          24            14            2 \r\n 1985          232           15.4          23.5          10.5          0 \r\n 1985          233           22.5          25.5          11.5          0 \r\n 1985          234           4.4           23            15.5          0 \r\n 1985          235           8.7           23.5          16            0 \r\n 1985          236           14.9          25            16.5          0 \r\n 1985          237           5.9           21            14.5          3 \r\n 1985          238           12.4          25            13.5          3 \r\n 1985          239           20.6          27            12.5          0 \r\n 1985          240           18.7          28.5          16            0 \r\n 1985          241           8.2           27            17.5          0 \r\n 1985          242           12.5          27.5          17            7 \r\n 1985          243           19.8          29.5          16            0 \r\n 1985          244           19.4          29.5          20.5          0 \r\n 1985          245           18.4          32.5          19            0 \r\n 1985          246           20.8          31.5          20.5          0 \r\n 1985          247           13.4          31            19            0 \r\n 1985          248           14.7          33.5          21.5          0 \r\n 1985          249           22.4          36.5          23            0 \r\n 1985          250           22.7          36.5          23            0 \r\n 1985          251           21.5          35.5          21.5          0 \r\n 1985          252           10.1          32            19            0 \r\n 1985          253           6.6           23            16.5          0 \r\n 1985          254           20.6          23.5          13            0 \r\n 1985          255           11.6          21.5          11            0 \r\n 1985          256           20.8          21            6.5           0 \r\n 1985          257           16.3          21            8.5           0 \r\n 1985          258           21.2          25            4.5           0 \r\n 1985          259           17.1          26            12            0 \r\n 1985          260           14            25.5          17            3 \r\n 1985          261           19.5          32.5          18.5          0 \r\n 1985          262           18.9          31.5          19.5          0 \r\n 1985          263           7.4           28.5          15.5          0 \r\n 1985          264           2.2           18            10            10 \r\n 1985          265           6.3           21            14.5          11 \r\n 1985          266           6.4           20            10            26 \r\n 1985          267           16.4          16            3             5 \r\n 1985          268           4.5           13            7             6 \r\n 1985          269           9.9           15.5          7.5           5 \r\n 1985          270           19.5          19.5          1.5           0 \r\n 1985          271           12            24.5          10            0 \r\n 1985          272           4.6           19.5          11            2 \r\n 1985          273           4.6           13            5             10 \r\n 1985          274           15.4          13.5          0.5           0 \r\n 1985          275           18.6          17.5          2             0 \r\n 1985          276           11.2          21.5          8             0 \r\n 1985          277           7             17.5          6.5           3 \r\n 1985          278           11.9          13            5.5           0 \r\n 1985          279           17.5          19.5          0             0 \r\n 1985          280           9.7           21            4             0 \r\n 1985          281           7.1           19            13.5          0 \r\n 1985          282           2.1           16.5          6.5           19 \r\n 1985          283           3.5           8.5           5             46 \r\n 1985          284           3.7           12            6.5           5 \r\n 1985          285           5.7           22.5          9.5           12 \r\n 1985          286           15.8          21.5          5             13 \r\n 1985          287           7.8           18            8.5           0 \r\n 1985          288           16.4          21.5          4.5           0 \r\n 1985          289           15.3          20            5             0 \r\n 1985          290           7             24            10.5          0 \r\n 1985          291           3.2           20.5          15            12 \r\n 1985          292           2.4           18            10            38 \r\n 1985          293           3.8           14            9.5           10 \r\n 1985          294           4.5           16.5          11            0 \r\n 1985          295           6.7           18.5          11.5          0 \r\n 1985          296           3.3           19.5          13.5          5 \r\n 1985          297           12.8          20.5          11            14 \r\n 1985          298           14.6          22            3             0 \r\n 1985          299           12.1          24            8             0 \r\n 1985          300           13.6          20            9             0 \r\n 1985          301           11            15.5          3             0 \r\n 1985          302           5.9           13            5             0 \r\n 1985          303           12.5          15.5          2.5           0 \r\n 1985          304           3.6           11.5          4             0 \r\n 1985          305           2.5           10.5          8             36 \r\n 1985          306           13.5          11.5          1.5           6 \r\n 1985          307           11.9          11.5          1             0 \r\n 1985          308           11.6          10           -0.5           0 \r\n 1985          309           12.4          12           -3             0 \r\n 1985          310           1.9           8.5           2             0 \r\n 1985          311           11.6          11.5         -1.5           11 \r\n 1985          312           6.4           8.5           0.5           0 \r\n 1985          313           1             9.5           2.5           4 \r\n 1985          314           2.8           3            -0.5           9 \r\n 1985          315           2.8           3            -0.5           1 \r\n 1985          316           4             8             2.5           5 \r\n 1985          317           5.2           7             3.5           13 \r\n 1985          318           6.9           6.5           1             12 \r\n 1985          319           2             5             1             2 \r\n 1985          320           3.8           6             1.5           4 \r\n 1985          321           11.1          15           -3             0 \r\n 1985          322           2.5           16.5          10            13 \r\n 1985          323           3.2           16           -4             12 \r\n 1985          324           9.5          -2            -9.5           6 \r\n 1985          325           8.5          -0.5          -10            0 \r\n 1985          326           6.1           3.5          -3.5           0 \r\n 1985          327           3.1           0.5          -6.5           0 \r\n 1985          328           3.8          -4.5          -11.5          0 \r\n 1985          329           2             0.5          -6             0 \r\n 1985          330           4.2           1.5          -3             2 \r\n 1985          331           3.8          -1            -6.5           0 \r\n 1985          332           4.8          -1.5          -9             2 \r\n 1985          333           3.3          -6            -12.5          0 \r\n 1985          334           3.3           0            -7             4 \r\n 1985          335           2.5           3            -14            39.37 \r\n 1985          336           6.4          -11.5         -17            7.62 \r\n 1985          337           3.4          -7            -19            0 \r\n 1985          338           7.1           2            -8             0 \r\n 1985          339           7.2           1            -9             0 \r\n 1985          340           7.3          -2.5          -15.5          0 \r\n 1985          341           7.2           4.5          -7             0 \r\n 1985          342           7.4           1.5          -5.5           0 \r\n 1985          343           3            -3            -8.5           0 \r\n 1985          344           1.9           0            -5             4.57 \r\n 1985          345           3.2          -1            -10.5          5.08 \r\n 1985          346           7.1          -5.5          -18            0 \r\n 1985          347           6.1          -12.5         -21            0 \r\n 1985          348           6.6          -7            -23.5          0 \r\n 1985          349           9.3          -3.5          -11            0 \r\n 1985          350           8.2          -3            -14.5          0 \r\n 1985          351           5.6          -12           -18.5          6.35 \r\n 1985          352           5.5          -16           -27            0 \r\n 1985          353           6.3          -11           -27            0 \r\n 1985          354           5.7          -10           -19            0.51 \r\n 1985          355           4.1          -8.5          -26.5          0 \r\n 1985          356           4.6           4            -9             0 \r\n 1985          357           5.5           4.5          -4             0 \r\n 1985          358           6.7           2            -20            0 \r\n 1985          359           6.2          -14.5         -21.5          0 \r\n 1985          360           3.8           3            -15            0 \r\n 1985          361           8.6           0            -11.5          0 \r\n 1985          362           5.8          -5            -14.5          0 \r\n 1985          363           7.5          -6.5          -15            0 \r\n 1985          364           5             5            -15            0 \r\n 1985          365           9.2           3.5          -10            0 \r\n 1986          1             6.2           4            -11            0 \r\n 1986          2             1.6           4.5          -2.5           0 \r\n 1986          3             5.7           1            -6             3.81 \r\n 1986          4             2.8           0.5          -9             0.76 \r\n 1986          5             7.2           1.5          -13.5          0 \r\n 1986          6             5.9          -3.5          -15.5          0 \r\n 1986          7             6.3          -13           -23            0 \r\n 1986          8             6            -5            -22            0 \r\n 1986          9             8.3           5.5          -8.5           0 \r\n 1986          10            7.6           2.5          -5             0 \r\n 1986          11            7.8           7.5          -4             0 \r\n 1986          12            6.8           5            -3             0 \r\n 1986          13            7.4          -0.5          -10            0 \r\n 1986          14            9            -1.5          -6.5           0 \r\n 1986          15            7.3           6            -9             0 \r\n 1986          16            8             11.5         -1.5           0 \r\n 1986          17            7.7           11            0             0 \r\n 1986          18            6.5           8.5           2.5           0 \r\n 1986          19            4.1           3             0             0 \r\n 1986          20            7.8           3.5          -0.5           0 \r\n 1986          21            7             9             0             0 \r\n 1986          22            10.4          2            -8             0 \r\n 1986          23            9.8           4.5          -7.5           0 \r\n 1986          24            2.1           3.5          -1.5           0 \r\n 1986          25            4.7           2.5          -4             3.56 \r\n 1986          26            9            -2.5          -19            0 \r\n 1986          27            8.7          -14.5         -23            0 \r\n 1986          28            6.4          -3.5          -16            0 \r\n 1986          29            8.3          -3            -13            0 \r\n 1986          30            5.5          -3            -15            0 \r\n 1986          31            7.1           2            -6             0 \r\n 1986          32            10.9          6            -0.5           0 \r\n 1986          33            9.3           2.5          -2             0 \r\n 1986          34            3.4           2             0.5           0 \r\n 1986          35            4.3           2.5           0.5           18.03 \r\n 1986          36            3.8           1.5           0             7.62 \r\n 1986          37            5.1           0.5          -3             1.27 \r\n 1986          38            4.8          -2            -5.5           11.18 \r\n 1986          39            8.2          -3.5          -11.5          0.76 \r\n 1986          40            8.9          -9.5          -18            0 \r\n 1986          41            9.7          -11           -20.5          0 \r\n 1986          42            9.8          -11           -23            0 \r\n 1986          43            9.2          -12.5         -23.5          0 \r\n 1986          44            3.8          -4.5          -22.5          0 \r\n 1986          45            8.2          -2.5          -14            0.51 \r\n 1986          46            6.3          -5            -19            0 \r\n 1986          47            3.9          -1.5          -8.5           0 \r\n 1986          48            10.6          2            -2.5           11.43 \r\n 1986          49            8.2           2            -0.5           1.02 \r\n 1986          50            15.4          4.5          -0.5           0 \r\n 1986          51            5.8           1.5          -4.5           0 \r\n 1986          52            15.6         -1.5          -9             0 \r\n 1986          53            12.5          1.5          -9             0 \r\n 1986          54            4.7          -2            -7             0 \r\n 1986          55            8.4           0            -10.5          9.65 \r\n 1986          56            5.7           2            -10.5          0 \r\n 1986          57            7.4           3.5          -4             0 \r\n 1986          58            10.4          2.5          -5             1.27 \r\n 1986          59            17.3         -1            -11            0 \r\n 1986          60            12.5          5.5          -8.5           0 \r\n 1986          61            6.6           3.5          -0.5           0 \r\n 1986          62            8.1           4.5           0             0 \r\n 1986          63            13.2          7             0             0 \r\n 1986          64            4.8           5.5          -2             0 \r\n 1986          65            7.9           3.5          -4.5           0 \r\n 1986          66            18.2         -1.5          -13            0 \r\n 1986          67            13.1          4.5          -9             0 \r\n 1986          68            10.3          21.5          1.5           0 \r\n 1986          69            2.6           16.5          0.5           0 \r\n 1986          70            8             4.5          -0.5           9.14 \r\n 1986          71            1.9           5             0.5           0 \r\n 1986          72            7.8           9             3             9.4 \r\n 1986          73            7.2           7             2             0 \r\n 1986          74            8             7.5           1.5           0 \r\n 1986          75            12.6          7.5           1.5           0 \r\n 1986          76            10.8          11            0.5           0 \r\n 1986          77            2.6           12            7             10.16 \r\n 1986          78            7.9           10.5         -2.5           5.33 \r\n 1986          79            21.9         -0.5          -10            0 \r\n 1986          80            22.1          6            -7.5           0 \r\n 1986          81            17.3          15.5         -2             0 \r\n 1986          82            20.8          16.5          0             0 \r\n 1986          83            16.7          16           -1             0 \r\n 1986          84            19.4          23.5          11            0 \r\n 1986          85            21.2          20            6             5.84 \r\n 1986          86            20.7          15           -1             0 \r\n 1986          87            20.7          26.5          8             0 \r\n 1986          88            22.2          31.5          13            0 \r\n 1986          89            21.8          28            12.5          0 \r\n 1986          90            22.7          28            12            0 \r\n 1986          91            22.9          23            10            6 \r\n 1986          92            20.5          18            6             0 \r\n 1986          93            7             17.5          8.5           9 \r\n 1986          94            13.1          23            7.5           6 \r\n 1986          95            20            21            9.5           13 \r\n 1986          96            13.4          17.5          6             0 \r\n 1986          97            23.2          25            6             0 \r\n 1986          98            22            17            6             0 \r\n 1986          99            24.3          15            1.5           0 \r\n 1986          100           25            19           -0.5           0 \r\n 1986          101           25.4          22            3.5           0 \r\n 1986          102           11            18.5          7             0 \r\n 1986          103           18.8          21            5.5           2 \r\n 1986          104           6             18           -1             7 \r\n 1986          105           6.5           6.5          -1.5           2 \r\n 1986          106           20.3          15            3             0 \r\n 1986          107           17.7          16.5          2.5           0 \r\n 1986          108           10.9          17.5          7             0 \r\n 1986          109           22.9          19            7.5           0 \r\n 1986          110           18.2          18.5          5.5           0 \r\n 1986          111           9.4           12.5          2.5           0 \r\n 1986          112           27.3          12.5         -3             0 \r\n 1986          113           26.2          21.5          1.5           0 \r\n 1986          114           20.4          26            11            0 \r\n 1986          115           25.4          32.5          16            0 \r\n 1986          116           21            31.5          17            0 \r\n 1986          117           18.5          29.5          16.5          0 \r\n 1986          118           6.6           26            7             7 \r\n 1986          119           21.4          27.5          8             0 \r\n 1986          120           3.5           23            15.5          19 \r\n 1986          121           25.5          18.5          8.5           0 \r\n 1986          122           27.4          17            3             0 \r\n 1986          123           27.6          21            3.5           0 \r\n 1986          124           24.7          27            11.5          0 \r\n 1986          125           13.6          26.5          15            0 \r\n 1986          126           11.7          24.5          17            0 \r\n 1986          127           23            27.5          14.5          4 \r\n 1986          128           22.4          28            12.5          6 \r\n 1986          129           18.8          26            13            12 \r\n 1986          130           9.2           24            14            0 \r\n 1986          131           8.6           24            15.5          3 \r\n 1986          132           20.6          27.5          14            5 \r\n 1986          133           15.6          26            12.5          0 \r\n 1986          134           25            26            10            1 \r\n 1986          135           3.7           22.5          15            7 \r\n 1986          136           11.1          22            11.5          12 \r\n 1986          137           2             19            12            40 \r\n 1986          138           21.6          19            10.5          24 \r\n 1986          139           26.3          20            9             0 \r\n 1986          140           26.6          19.5          6.5           0 \r\n 1986          141           30.3          21.5          4.5           0 \r\n 1986          142           28.3          21.5          6.5           0 \r\n 1986          143           24.7          22.5          9             0 \r\n 1986          144           15.1          23            14            0 \r\n 1986          145           11.2          21.5          12.5          0 \r\n 1986          146           3.2           18.5          13            56 \r\n 1986          147           5.5           20.5          14.5          15 \r\n 1986          148           10.8          22.5          15.5          0 \r\n 1986          149           20.7          27            15            6 \r\n 1986          150           24.9          28            15            0 \r\n 1986          151           26.8          29.5          16.5          0 \r\n 1986          152           24.3          32            18            0 \r\n 1986          153           29.9          25.5          9             0 \r\n 1986          154           29.4          27.5          9.5           0 \r\n 1986          155           18.5          30            18            0 \r\n 1986          156           6.4           24.5          17.5          24 \r\n 1986          157           8.9           22.5          16.5          4 \r\n 1986          158           20.5          29.5          19            0 \r\n 1986          159           27.7          29            17            0 \r\n 1986          160           16.8          27.5          16.5          0 \r\n 1986          161           19            31.5          20.5          13 \r\n 1986          162           14.5          29            17.5          0 \r\n 1986          163           15            25            13.5          0 \r\n 1986          164           28.5          28            17            0 \r\n 1986          165           6.5           24            16.5          0 \r\n 1986          166           11.5          26.5          17            0 \r\n 1986          167           30.6          29.5          19.5          0 \r\n 1986          168           29            28.5          14.5          0 \r\n 1986          169           23.3          31            18.5          0 \r\n 1986          170           27.9          35            20            0 \r\n 1986          171           29.4          35            20.5          0 \r\n 1986          172           24.8          34            22            0 \r\n 1986          173           18.4          29.5          20.5          10 \r\n 1986          174           30.6          29.5          14.5          0 \r\n 1986          175           29.1          27.5          14            4 \r\n 1986          176           31.4          28            13            0 \r\n 1986          177           21.3          33.5          19            0 \r\n 1986          178           10.4          31            22            7 \r\n 1986          179           17.3          30.5          21            0 \r\n 1986          180           10.9          29            19            10 \r\n 1986          181           9.5           26            16.5          48 \r\n 1986          182           3.2           21.5          16.5          0 \r\n 1986          183           21            27            14            7 \r\n 1986          184           27.2          28.5          15            0 \r\n 1986          185           28.2          32.5          21            0 \r\n 1986          186           26.2          33            23            0 \r\n 1986          187           10.4          32            22.5          0 \r\n 1986          188           10.8          27.5          20            9 \r\n 1986          189           19            31.5          22            21 \r\n 1986          190           16.4          30            19.5          40 \r\n 1986          191           14.7          30            19            5 \r\n 1986          192           21.1          29            21.5          4 \r\n 1986          193           17.6          29            20.5          11 \r\n 1986          194           28            31            19            0 \r\n 1986          195           18.8          30            21            2 \r\n 1986          196           23.5          33            22            0 \r\n 1986          197           26.7          34            24            0 \r\n 1986          198           29.6          34            24.5          0 \r\n 1986          199           29.2          35            22            0 \r\n 1986          200           27            34.5          22.5          0 \r\n 1986          201           26.6          30            19.5          0 \r\n 1986          202           25.5          30            17.5          0 \r\n 1986          203           29            31            16            0 \r\n 1986          204           26.8          31.5          18            0 \r\n 1986          205           22.3          32            22            0 \r\n 1986          206           22.2          31            22            7 \r\n 1986          207           20.1          30.5          19            0 \r\n 1986          208           21.7          31.5          19.5          0 \r\n 1986          209           26.9          33.5          21            0 \r\n 1986          210           27            31.5          18.5          4 \r\n 1986          211           20.3          31            21            0 \r\n 1986          212           20.1          31.5          20.5          7 \r\n 1986          213           23            30            15            0 \r\n 1986          214           24.6          26            16            0 \r\n 1986          215           26.7          26.5          13            0 \r\n 1986          216           19.7          26.5          13.5          0 \r\n 1986          217           2.5           22.5          18            10 \r\n 1986          218           5.9           23            18            27 \r\n 1986          219           18.1          27.5          16            0 \r\n 1986          220           21.8          28.5          16.5          13 \r\n 1986          221           17.8          28.5          16            0 \r\n 1986          222           20.5          26.5          17.5          2 \r\n 1986          223           26.4          24.5          11.5          0 \r\n 1986          224           16.2          24.5          13.5          0 \r\n 1986          225           4.6           21.5          15            7 \r\n 1986          226           10.4          25            17.5          29 \r\n 1986          227           12.7          28            19            11 \r\n 1986          228           14            29.5          19            0 \r\n 1986          229           15.7          30            18.5          0 \r\n 1986          230           23.4          28            18            2 \r\n 1986          231           25.7          27            14.5          0 \r\n 1986          232           19.3          28.5          14            0 \r\n 1986          233           15.4          28            19            0 \r\n 1986          234           19.8          29.5          15.5          0 \r\n 1986          235           17.8          26            15.5          0 \r\n 1986          236           14.7          24.5          12            0 \r\n 1986          237           17.9          32.5          16            0 \r\n 1986          238           12            29            20            7 \r\n 1986          239           17.4          22            11.5          0 \r\n 1986          240           20.5          21            5             0 \r\n 1986          241           23.1          22.5          6             0 \r\n 1986          242           18.9          26            11            0 \r\n 1986          243           22.8          28            12            0 \r\n 1986          244           24.2          29            12.5          0 \r\n 1986          245           19.4          29            13.5          0 \r\n 1986          246           6.7           26.5          17.5          0 \r\n 1986          247           24.1          27            17            4 \r\n 1986          248           16.1          24.5          11.5          0 \r\n 1986          249           7.4           20.5          11            0 \r\n 1986          250           18.5          20            5             2 \r\n 1986          251           24            22.5          3.5           0 \r\n 1986          252           3.9           25            9.5           0 \r\n 1986          253           9.3           31            20.5          0 \r\n 1986          254           4.5           27            17.5          16 \r\n 1986          255           21.9          23            11            1 \r\n 1986          256           11.5          23.5          12.5          3 \r\n 1986          257           16            27            12.5          0 \r\n 1986          258           10.5          27            14            0 \r\n 1986          259           16.5          21.5          10            0 \r\n 1986          260           2.8           19            11.5          13 \r\n 1986          261           6.7           23            16.5          7 \r\n 1986          262           7.9           24.5          16.5          24 \r\n 1986          263           5.1           25            17.5          11 \r\n 1986          264           15.5          31.5          17            0 \r\n 1986          265           9             28.5          18.5          0 \r\n 1986          266           6             23            16.5          16 \r\n 1986          267           2.4           23            18.5          15 \r\n 1986          268           17.2          31.5          20.5          13 \r\n 1986          269           16.1          30.5          21            0 \r\n 1986          270           14.2          28.5          18            0 \r\n 1986          271           6.7           29.5          17            0 \r\n 1986          272           2.9           26            18            15 \r\n 1986          273           5.1           19.5          13            22 \r\n 1986          274           4.5           15.5          11.5          11 \r\n 1986          275           7.4           20            13.5          4 \r\n 1986          276           5.6           22.5          17            19 \r\n 1986          277           4.9           19.5          11            2 \r\n 1986          278           11.8          19            6             0 \r\n 1986          279           17.1          15.5          1             0 \r\n 1986          280           17.4          22.5          5.5           0 \r\n 1986          281           12.7          23            11            0 \r\n 1986          282           11.4          16.5          8.5           0 \r\n 1986          283           15.5          18.5          4             0 \r\n 1986          284           5.7           20            9.5           0 \r\n 1986          285           4             16            5.5           10 \r\n 1986          286           3.4           7             2             5 \r\n 1986          287           11.5          11            0             5 \r\n 1986          288           16.4          14.5         -0.5           0 \r\n 1986          289           15.5          21            2             0 \r\n 1986          290           12.5          16.5          3             0 \r\n 1986          291           15.7          17            2             0 \r\n 1986          292           14.7          21            4.5           0 \r\n 1986          293           13.6          24            6.5           0 \r\n 1986          294           13.8          24.5          8.5           0 \r\n 1986          295           4.2           20.5          9.5           0 \r\n 1986          296           4.6           18            12            0 \r\n 1986          297           2.5           15.5          11.5          0 \r\n 1986          298           2.3           13            8.5           15 \r\n 1986          299           1.7           9.5           7             32 \r\n 1986          300           14.3          18.5          3.5           0 \r\n 1986          301           11.9          24            7             0 \r\n 1986          302           11.4          17            5.5           0 \r\n 1986          303           12.9          17            1             0 \r\n 1986          304           11.1          21            7             0 \r\n 1986          305           3             16.5          4.5           2 \r\n 1986          306           13.1          8.5          -2             1 \r\n 1986          307           6.7           10.5         -1             0 \r\n 1986          308           6.8           8.5           3.5           0 \r\n 1986          309           9.6           12            2.5           0 \r\n 1986          310           10.3          12            0.5           0 \r\n 1986          311           5.2           16            6.5           0 \r\n 1986          312           9.3           16            3             1 \r\n 1986          313           11.7          5.5          -2.5           0 \r\n 1986          314           7.1           3.5          -5.5           0 \r\n 1986          315           8.6           0            -10.5          1 \r\n 1986          316           8.7          -3            -12.5          0 \r\n 1986          317           10.7         -5.5          -15            0 \r\n 1986          318           5.7          -1            -11.5          0 \r\n 1986          319           9.1           7.5          -6             0 \r\n 1986          320           10.8          8.5          -5.5           0 \r\n 1986          321           6.4           7.5          -4.5           0 \r\n 1986          322           2.5           5            -2             3 \r\n 1986          323           2.1           2.5          -3.5           0 \r\n 1986          324           3.1           2.5          -3.5           7 \r\n 1986          325           6.6           5            -7             0 \r\n 1986          326           9.2           13.5          0.5           0 \r\n 1986          327           3.8           9.5          -3             1 \r\n 1986          328           9.5           6            -8             0 \r\n 1986          329           7.6           8.5          -3             0 \r\n 1986          330           4.3           7             0             0 \r\n 1986          331           9.8           7            -3.5           0 \r\n 1986          332           7.1           8.5          -2.5           0 \r\n 1986          333           8.2           8            -4             0 \r\n 1986          334           2.9           4.5           0.5           0 \r\n 1986          335           2.4           4             0.5           0 \r\n 1986          336           6.8           4.5           0.5           13.97 \r\n 1986          337           6.2           2.5          -2             0 \r\n 1986          338           6.3          -1            -6             0 \r\n 1986          339           10.1          3            -10            0 \r\n 1986          340           3.9           5            -1.5           0 \r\n 1986          341           2.7           5             1             3.81 \r\n 1986          342           2             4.5          -0.5           13.21 \r\n 1986          343           5.6           2            -8.5           2.03 \r\n 1986          344           7            -6            -14            0 \r\n 1986          345           4.7           1            -11            0 \r\n 1986          346           5.5          -4            -14            0 \r\n 1986          347           6.9          -3            -18            0 \r\n 1986          348           8.6           8            -5.5           0 \r\n 1986          349           7.9           8.5          -4.5           0 \r\n 1986          350           4.3           5            -1.5           0 \r\n 1986          351           5             5            -1             0 \r\n 1986          352           3.7           1.5          -2.5           0 \r\n 1986          353           9.3           8            -5.5           0 \r\n 1986          354           4.9           2.5          -4.5           0 \r\n 1986          355           8.1           5.5          -6             0 \r\n 1986          356           4.1           4            -6.5           0 \r\n 1986          357           4.9           2            -2.5           0 \r\n 1986          358           4             0.5          -4             0 \r\n 1986          359           2.9          -0.5          -3             0 \r\n 1986          360           3             1            -3             0 \r\n 1986          361           8.6           4            -5             0 \r\n 1986          362           5.9           6.5          -5.5           0 \r\n 1986          363           2.4           2.5          -1.5           0 \r\n 1986          364           3.5           3            -1             0 \r\n 1986          365           5.9           2.5          -2             0 \r\n 1987          1             3.5           0.5          -4             0.51 \r\n 1987          2             3.8           1            -5             0.51 \r\n 1987          3             6.2           3            -7.5           0 \r\n 1987          4             7.5           3.5          -7.5           0 \r\n 1987          5             7.5           5.5          -5             0 \r\n 1987          6             6             7.5           0             0 \r\n 1987          7             4             3            -2             0 \r\n 1987          8             6.8           0.5          -5             0 \r\n 1987          9             3.8          -0.5          -7             0 \r\n 1987          10            4.9          -0.5          -4             8.38 \r\n 1987          11            3.9           1            -9             0 \r\n 1987          12            8.2           7.5          -5             0 \r\n 1987          13            8.7           11           -4             0 \r\n 1987          14            8.7           10           -0.5           0 \r\n 1987          15            8.9           2.5          -7             0 \r\n 1987          16            8.1          -1.5          -10            0 \r\n 1987          17            5.2          -1            -6             0.76 \r\n 1987          18            8.6          -1.5          -8.5           1.52 \r\n 1987          19            9.9           0            -10            0 \r\n 1987          20            10.2         -1            -11            0 \r\n 1987          21            6.7           0            -8             0 \r\n 1987          22            11            0            -11            0 \r\n 1987          23            10.6         -7            -20.5          0 \r\n 1987          24            10           -6            -18.5          0 \r\n 1987          25            10.6         -5.5          -17.5          0 \r\n 1987          26            11.6         -1.5          -17            0 \r\n 1987          27            5.7           0.5          -8.5           1.78 \r\n 1987          28            9.2           3            -6             0 \r\n 1987          29            2.4           2.5          -3.5           0 \r\n 1987          30            4.7           4            -2             1.02 \r\n 1987          31            7.5           5            -6.5           0 \r\n 1987          32            10.7          13           -1             0 \r\n 1987          33            9.5           15           -3             0 \r\n 1987          34            11.6          8.5          -3.5           0 \r\n 1987          35            11.1          7.5          -6             0 \r\n 1987          36            5.3           4.5          -2             0 \r\n 1987          37            12.5          10.5         -3.5           0 \r\n 1987          38            12.9          14.5         -3             0 \r\n 1987          39            13.2          10           -3.5           0 \r\n 1987          40            11.8          5.5          -11.5          0 \r\n 1987          41            12.6          10.5         -5.5           0 \r\n 1987          42            13.7          14.5         -3             0 \r\n 1987          43            9.8           9.5          -1.5           0 \r\n 1987          44            9.2           8.5          -6             0 \r\n 1987          45            5             6.5          -1             0 \r\n 1987          46            10.1          0.5          -5             0 \r\n 1987          47            9.3           0            -7             0 \r\n 1987          48            11.9          6            -5             0 \r\n 1987          49            15.7          6            -8             0 \r\n 1987          50            13.7          9            -7             0 \r\n 1987          51            8.6           7            -6             0 \r\n 1987          52            11.8          9            -3.5           0 \r\n 1987          53            8.8           5.5          -3.5           0.51 \r\n 1987          54            16.2          8.5          -5.5           0 \r\n 1987          55            10.8          8.5          -3.5           0 \r\n 1987          56            11.2          9.5          -2             0 \r\n 1987          57            9             7.5          -1.5           0 \r\n 1987          58            8             7             0             0 \r\n 1987          59            3.6           6.5           2.5           0 \r\n 1987          60            5.9           4.5           0             21.84 \r\n 1987          61            16.5          12.5         -4             0 \r\n 1987          62            17.1          10.5         -3.5           0 \r\n 1987          63            12.6          15           -2.5           0 \r\n 1987          64            16.7          17            3             0 \r\n 1987          65            17.7          20           -1.5           0 \r\n 1987          66            18.6          24            6.5           0 \r\n 1987          67            18.1          22            3             0 \r\n 1987          68            7.9           11.5         -4.5           0 \r\n 1987          69            16            2            -8.5           0 \r\n 1987          70            16.8          6.5          -6.5           0 \r\n 1987          71            9.6           9            -4.5           0 \r\n 1987          72            13.4          17            1             1.02 \r\n 1987          73            10.8          14.5          3             0 \r\n 1987          74            5.1           5             0.5           14.22 \r\n 1987          75            12.5          9.5           0             0 \r\n 1987          76            10.2          11            0             0 \r\n 1987          77            4.9           10            1.5           2.54 \r\n 1987          78            9.9           9.5           4             9.14 \r\n 1987          79            17.4          16.5          1.5           0 \r\n 1987          80            15.5          19            1.5           0 \r\n 1987          81            16.1          19            5             0 \r\n 1987          82            16.2          24            7.5           0 \r\n 1987          83            5.3           19.5          8             0 \r\n 1987          84            7.3           11            4.5           29.21 \r\n 1987          85            7             9             3.5           1.78 \r\n 1987          86            8             8             3.5           0 \r\n 1987          87            10.5          9             1             0 \r\n 1987          88            8.3           6            -1.5           18.03 \r\n 1987          89            22.3          1.5          -6.5           0 \r\n 1987          90            23.3          7.5          -6.5           0 \r\n 1987          91            9.2           10.5          1             0 \r\n 1987          92            21.4          6            -4.5           0 \r\n 1987          93            21.2          7            -6.5           0 \r\n 1987          94            22.5          12           -6.5           0 \r\n 1987          95            22.5          17            0             0 \r\n 1987          96            16.6          19            6             0 \r\n 1987          97            24.2          22.5          2             0 \r\n 1987          98            23.6          21.5          3             0 \r\n 1987          99            23.5          25            5             0 \r\n 1987          100           12            21.5          7.5           0 \r\n 1987          101           7.6           15            2             1 \r\n 1987          102           22.9          17.5          1.5           0 \r\n 1987          103           3.4           14.5          6.5           8 \r\n 1987          104           3.5           19            9.5           18 \r\n 1987          105           14.8          17            7             5 \r\n 1987          106           20.2          21.5          8             0 \r\n 1987          107           23.5          26            9.5           0 \r\n 1987          108           24.8          26            10.5          0 \r\n 1987          109           23.8          28.5          13            0 \r\n 1987          110           20.2          32            16            0 \r\n 1987          111           5.7           27            10.5          0 \r\n 1987          112           5.1           14            7             2 \r\n 1987          113           8.8           14            7.5           3 \r\n 1987          114           25.3          18.5          5.5           0 \r\n 1987          115           25.7          24.5          4.5           0 \r\n 1987          116           21.7          27            11.5          0 \r\n 1987          117           26.8          23.5          11.5          4 \r\n 1987          118           25.3          23            3.5           0 \r\n 1987          119           26.6          31.5          13.5          0 \r\n 1987          120           27.5          25.5          5.5           0 \r\n 1987          121           24.7          28            7.5           0 \r\n 1987          122           17            26.5          12            0 \r\n 1987          123           8.3           20            10            1 \r\n 1987          124           24.4          21            7.5           0 \r\n 1987          125           25            22            4.5           0 \r\n 1987          126           28.5          26            6.5           0 \r\n 1987          127           27.4          26.5          9             0 \r\n 1987          128           28.2          27            9             0 \r\n 1987          129           29.3          29.5          10.5          0 \r\n 1987          130           23.4          31.5          15            0 \r\n 1987          131           24            32            17            0 \r\n 1987          132           29.9          27            10            0 \r\n 1987          133           29.9          29.5          7             0 \r\n 1987          134           21.7          30.5          18.5          0 \r\n 1987          135           30            26            10.5          0 \r\n 1987          136           30.3          30            8             0 \r\n 1987          137           20            32            14.5          0 \r\n 1987          138           20.6          32            17            0 \r\n 1987          139           18            31            17.5          0 \r\n 1987          140           19.1          32            19            14 \r\n 1987          141           22.6          31.5          18            17 \r\n 1987          142           14.7          26            10.5          4 \r\n 1987          143           17.8          17            8.5           0 \r\n 1987          144           9.3           16            8.5           0 \r\n 1987          145           5.9           23            11            0 \r\n 1987          146           18.7          30            16.5          1 \r\n 1987          147           21.6          31.5          18.5          0 \r\n 1987          148           16.8          29            20            0 \r\n 1987          149           20.2          30.5          20            0 \r\n 1987          150           22.4          30            18.5          0 \r\n 1987          151           22.7          30            16.5          5 \r\n 1987          152           27.4          31.5          18            9 \r\n 1987          153           15.1          28.5          18.5          0 \r\n 1987          154           28.5          26            13            0 \r\n 1987          155           30.7          25            11            0 \r\n 1987          156           30.1          30.5          13.5          0 \r\n 1987          157           29            30.5          13.5          0 \r\n 1987          158           27.5          32.5          19            0 \r\n 1987          159           26.6          33            19.5          0 \r\n 1987          160           19.9          29.5          16.5          0 \r\n 1987          161           11.3          23            12            0 \r\n 1987          162           14.7          28.5          18            3 \r\n 1987          163           29.1          35            20            0 \r\n 1987          164           29.8          37            20.5          0 \r\n 1987          165           31.1          38            22.5          0 \r\n 1987          166           30.7          35.5          21.5          0 \r\n 1987          167           30.6          35.5          17.5          0 \r\n 1987          168           24.1          36            21            0 \r\n 1987          169           23.5          35            23            0 \r\n 1987          170           13.5          32            21            0 \r\n 1987          171           11.1          29.5          20.5          20 \r\n 1987          172           20            29.5          20.5          11 \r\n 1987          173           23.5          31.5          18.5          0 \r\n 1987          174           20.8          30.5          21.5          0 \r\n 1987          175           26.4          33.5          21            0 \r\n 1987          176           21.6          31            18.5          14 \r\n 1987          177           29.1          26            15.5          3 \r\n 1987          178           31.6          26.5          11            0 \r\n 1987          179           29.6          30.5          14.5          0 \r\n 1987          180           17.1          29            20            0 \r\n 1987          181           18.7          26            19.5          4 \r\n 1987          182           26.3          28.5          16.5          0 \r\n 1987          183           25.9          31            16.5          0 \r\n 1987          184           29.3          30.5          18.5          0 \r\n 1987          185           25.8          31.5          17            0 \r\n 1987          186           16.5          29.5          19.5          7 \r\n 1987          187           24            34            19            0 \r\n 1987          188           16.2          31            19.5          0 \r\n 1987          189           22            32.5          19            0 \r\n 1987          190           21.5          32.5          21.5          0 \r\n 1987          191           20.7          33            23            0 \r\n 1987          192           25.3          34.5          22            0 \r\n 1987          193           14.1          32            19.5          4 \r\n 1987          194           19            26.5          17            1 \r\n 1987          195           22            26            11.5          0 \r\n 1987          196           25.7          26.5          13.5          14 \r\n 1987          197           27.1          30.5          14            0 \r\n 1987          198           22.5          33            20.5          0 \r\n 1987          199           21.1          32.5          22            0 \r\n 1987          200           23.5          35.5          24            0 \r\n 1987          201           24            35.5          24            0 \r\n 1987          202           22.3          35            22            0 \r\n 1987          203           22            34.5          21.5          0 \r\n 1987          204           23.9          34.5          22.5          0 \r\n 1987          205           18.1          36            23            0 \r\n 1987          206           25.7          36.5          23.5          0 \r\n 1987          207           23.6          37            24            0 \r\n 1987          208           23.1          35.5          22            0 \r\n 1987          209           22.7          35.5          21            0 \r\n 1987          210           22.2          37.5          22            0 \r\n 1987          211           23.2          37.5          22            0 \r\n 1987          212           23.3          39            24            0 \r\n 1987          213           26.3          39.5          23.5          0 \r\n 1987          214           26.3          38            26            0 \r\n 1987          215           12.6          36.5          22.5          0 \r\n 1987          216           22.4          30            20            1 \r\n 1987          217           22.5          30            16            0 \r\n 1987          218           23.2          33            17            0 \r\n 1987          219           12.8          33            18            0 \r\n 1987          220           8.3           29            20            28 \r\n 1987          221           19            28.5          18.5          23 \r\n 1987          222           22.7          32            17.5          0 \r\n 1987          223           22.1          30.5          18.5          0 \r\n 1987          224           19.8          30.5          18.5          0 \r\n 1987          225           4             28            20.5          5 \r\n 1987          226           10.5          30            22.5          10 \r\n 1987          227           21.9          34.5          21.5          10 \r\n 1987          228           16.2          35            24            0 \r\n 1987          229           22.9          31.5          17.5          3 \r\n 1987          230           19.9          30            17.5          0 \r\n 1987          231           19            28.5          13.5          0 \r\n 1987          232           19.4          30            17            0 \r\n 1987          233           22.3          35.5          18.5          16 \r\n 1987          234           9.7           32            16.5          0 \r\n 1987          235           22.9          24            12            0 \r\n 1987          236           12.8          21.5          10            0 \r\n 1987          237           1.2           18            12            34 \r\n 1987          238           2.4           20.5          13.5          66 \r\n 1987          239           4.8           18.5          15            12 \r\n 1987          240           14.3          24.5          15            0 \r\n 1987          241           22.7          27.5          11.5          0 \r\n 1987          242           18.9          26.5          14.5          0 \r\n 1987          243           24            24            11.5          0 \r\n 1987          244           24.3          27.5          10            0 \r\n 1987          245           20.3          24            14.5          0 \r\n 1987          246           24.8          25            9             0 \r\n 1987          247           21.1          30            11.5          0 \r\n 1987          248           18.5          31.5          15.5          0 \r\n 1987          249           10.7          27            18            0 \r\n 1987          250           14.1          28.5          18.5          4 \r\n 1987          251           17.6          26.5          17            0 \r\n 1987          252           22.1          26            11            0 \r\n 1987          253           6.1           23            12            0 \r\n 1987          254           20.2          27            12            0 \r\n 1987          255           19.7          23            11.5          2 \r\n 1987          256           11.3          23.5          10.5          0 \r\n 1987          257           16.8          28.5          12.5          0 \r\n 1987          258           4.2           25.5          17            4 \r\n 1987          259           12.9          27.5          18.5          12 \r\n 1987          260           13            26            17            10 \r\n 1987          261           8.2           22.5          13.5          0 \r\n 1987          262           11.2          21            7.5           0 \r\n 1987          263           10.8          19            9.5           0 \r\n 1987          264           10.1          18.5          8.5           0 \r\n 1987          265           10.1          19.5          9.5           0 \r\n 1987          266           19.9          24.5          8.5           0 \r\n 1987          267           19.9          27            10            0 \r\n 1987          268           19.9          24.5          8             0 \r\n 1987          269           18.2          28            9.5           0 \r\n 1987          270           17.5          29            15            0 \r\n 1987          271           7.8           27            15            15 \r\n 1987          272           9.2           19.5          10.5          7 \r\n 1987          273           16.3          21            8             0 \r\n 1987          274           19.2          27.5          3.5           0 \r\n 1987          275           12.9          23            5.5           0 \r\n 1987          276           19.1          16           -2             0 \r\n 1987          277           19            23.5          3.5           0 \r\n 1987          278           15.9          21            11.5          0 \r\n 1987          279           9             16            6.5           0 \r\n 1987          280           16.3          13.5          2.5           0 \r\n 1987          281           15.7          17.5          1             0 \r\n 1987          282           12.7          14.5          5.5           0 \r\n 1987          283           6.6           9             2             0 \r\n 1987          284           17            11.5         -5             0 \r\n 1987          285           16.7          19           -2.5           0 \r\n 1987          286           15.3          21.5          1             0 \r\n 1987          287           7.8           20.5          8             0 \r\n 1987          288           13.7          25            10.5          0 \r\n 1987          289           3.5           19            11            2 \r\n 1987          290           9.8           16            6             2 \r\n 1987          291           12            19            4             0 \r\n 1987          292           10.4          14.5          4.5           1 \r\n 1987          293           10            10            0.5           0 \r\n 1987          294           14.2          9.5          -2             0 \r\n 1987          295           11.9          15.5          1.5           0 \r\n 1987          296           10.9          13           -0.5           0 \r\n 1987          297           8.3           10.5          2.5           5 \r\n 1987          298           12.5          12.5         -3             0 \r\n 1987          299           3.7           11            3.5           0 \r\n 1987          300           12.4          13            0.5           0 \r\n 1987          301           12.2          13           -2.5           0 \r\n 1987          302           10.6          16.5          3.5           0 \r\n 1987          303           12.7          24.5          1.5           0 \r\n 1987          304           4.7           16.5          7             0 \r\n 1987          305           5             18            11.5          13 \r\n 1987          306           6.7           21            15            3 \r\n 1987          307           11.9          24.5          13.5          0 \r\n 1987          308           12.5          20.5          9.5           0 \r\n 1987          309           12.3          13            0.5           0 \r\n 1987          310           4.3           12            3             0 \r\n 1987          311           4.5           16.5          6.5           1 \r\n 1987          312           6             15.5          7             2 \r\n 1987          313           12.7          9            -2             0 \r\n 1987          314           12.5          6            -4.5           0 \r\n 1987          315           12            10           -5             0 \r\n 1987          316           11            15.5         -1.5           0 \r\n 1987          317           6.2           15.5          2.5           0 \r\n 1987          318           10.7          18            1.5           0 \r\n 1987          319           7.1           17.5          6.5           0 \r\n 1987          320           3             16            10.5          10 \r\n 1987          321           3.4           13.5          3.5           20 \r\n 1987          322           11            8.5          -1.5           0 \r\n 1987          323           8.6           8.5          -0.5           0 \r\n 1987          324           10.8          4.5          -6             0 \r\n 1987          325           10.6          5.5          -9             0 \r\n 1987          326           7.5           14.5         -0.5           0 \r\n 1987          327           7.3           11.5          0.5           1 \r\n 1987          328           2.9           3.5          -1.5           0 \r\n 1987          329           3.9           4.5           1.5           9 \r\n 1987          330           3.3           4             2             0 \r\n 1987          331           3.1           5             3             0 \r\n 1987          332           2.5           7             3             17 \r\n 1987          333           5.1           5             0             9 \r\n 1987          334           3.6           4             0             2 \r\n 1987          335           4.4           1            -1.5           0 \r\n 1987          336           6             4            -2             0 \r\n 1987          337           5.3           2.5          -1             0 \r\n 1987          338           8.9           1.5          -6.5           0 \r\n 1987          339           8.7           4.5          -6             0 \r\n 1987          340           2.3           2.5           0.5           0 \r\n 1987          341           2.9           4             0             4.32 \r\n 1987          342           1.7           11.5          3             0 \r\n 1987          343           6.4           11            3             3.81 \r\n 1987          344           8.9           8.5          -2.5           0 \r\n 1987          345           9.1           11            3.5           0 \r\n 1987          346           4.2           6.5           0.5           0 \r\n 1987          347           7.6           5            -1             0 \r\n 1987          348           3.7           1.5          -4.5           0 \r\n 1987          349           2.1          -1.5          -5             35.56 \r\n 1987          350           7.6          -4            -10            15.75 \r\n 1987          351           7.2          -4.5          -15.5          0 \r\n 1987          352           3.3           1            -11            0 \r\n 1987          353           2.9           2.5          -0.5           0 \r\n 1987          354           8.4           2            -3             38.1 \r\n 1987          355           7.4           4.5          -6             0 \r\n 1987          356           8.7           4            -2             0 \r\n 1987          357           5.8           5.5          -2.5           0 \r\n 1987          358           4.3           6.5           0.5           0 \r\n 1987          359           3.5           1.5          -4             0.76 \r\n 1987          360           6.5          -1.5          -6.5           0 \r\n 1987          361           3.7           1            -5             0 \r\n 1987          362           2.9           1            -3.5           17.02 \r\n 1987          363           4.1          -1            -9.5           4.32 \r\n 1987          364           7.1           3.5          -6             0 \r\n 1987          365           5.7           2.5          -10.5          0 \r\n 1988          1             5.6          -7.5          -17            0 \r\n 1988          2             9.1           2            -14.5          0 \r\n 1988          3             8.2          -0.5          -6.5           0 \r\n 1988          4             6.5          -5.5          -19            0 \r\n 1988          5             7.1          -16           -22            0 \r\n 1988          6             6.9          -17.5         -24.5          0 \r\n 1988          7             5.3          -10           -20.5          0 \r\n 1988          8             7.8          -9            -17            0 \r\n 1988          9             7.7          -13.5         -20            0 \r\n 1988          10            7.7          -6            -23            0 \r\n 1988          11            4.1           3            -8.5           0 \r\n 1988          12            7.3           4.5          -9.5           0 \r\n 1988          13            5.9          -9            -19            0 \r\n 1988          14            5.3          -3            -16            0 \r\n 1988          15            8.8           6.5          -7             0 \r\n 1988          16            7.3           10.5          1.5           0 \r\n 1988          17            5.5           5.5           0.5           0 \r\n 1988          18            7.7           3             0             3.3 \r\n 1988          19            3.5           3             1             0 \r\n 1988          20            4.9           2.5          -1.5           23.88 \r\n 1988          21            7.3          -0.5          -4.5           0 \r\n 1988          22            6.4          -1.5          -5.5           0 \r\n 1988          23            6.2           0.5          -10.5          2.54 \r\n 1988          24            6.4           1            -14.5          2.79 \r\n 1988          25            8.3          -1.5          -19            0.76 \r\n 1988          26            7.2          -10.5         -19            0 \r\n 1988          27            6.7          -2.5          -18.5          0 \r\n 1988          28            8.4           2.5          -10.5          0 \r\n 1988          29            1.9           13           -3.5           0 \r\n 1988          30            3.2           14.5          7             0 \r\n 1988          31            4.5           13           -3             9.91 \r\n 1988          32            4.6          -2            -9             0 \r\n 1988          33            10.4         -6            -12.5          2.03 \r\n 1988          34            3.8          -3            -7.5           0 \r\n 1988          35            8.3          -5.5          -16.5          4.06 \r\n 1988          36            12.5         -12.5         -20.5          0 \r\n 1988          37            11.9         -11.5         -20            0 \r\n 1988          38            12.2         -3.5          -16            0 \r\n 1988          39            6.2          -3.5          -14.5          0 \r\n 1988          40            13.6         -1            -13.5          1.27 \r\n 1988          41            5            -8            -12.5          5.08 \r\n 1988          42            8.1          -10           -17.5          6.35 \r\n 1988          43            6.7          -10.5         -23.5          0 \r\n 1988          44            7.4          -5.5          -21.5          0 \r\n 1988          45            8.4           5            -8             0 \r\n 1988          46            11.6         -0.5          -13            4.06 \r\n 1988          47            5.5           6.5          -12.5          0 \r\n 1988          48            9.7           5            -5.5           0 \r\n 1988          49            10.5          7.5          -7             0 \r\n 1988          50            10.6          6            -3.5           0 \r\n 1988          51            15.2          2            -10            0 \r\n 1988          52            7.7           1            -14.5          0 \r\n 1988          53            10.2          8.5          -1             0 \r\n 1988          54            13.6          3            -6.5           0 \r\n 1988          55            16.4         -1            -7.5           0 \r\n 1988          56            17.6          1            -9.5           0 \r\n 1988          57            16.8          15           -4             0 \r\n 1988          58            17.7          8.5           0             0 \r\n 1988          59            16.9          12           -2             0 \r\n 1988          60            17.4          11.75        -2.25          0 \r\n 1988          61            15.9          11.5         -2.5           0 \r\n 1988          62            14.1          14           -3             0 \r\n 1988          63            12.8          9.5          -0.5           0 \r\n 1988          64            19.2          2.5          -3             0 \r\n 1988          65            18.6          5            -6.5           0 \r\n 1988          66            18.7          7.5          -6.5           0 \r\n 1988          67            8.6           12.5         -4             0 \r\n 1988          68            15.5          14           -1             0 \r\n 1988          69            5.7           13.5          5.5           0 \r\n 1988          70            18.2          8.5           0.5           0 \r\n 1988          71            11.4          11.5         -4.5           0 \r\n 1988          72            4.5           17.5          1.5           0 \r\n 1988          73            9.8           13           -2.5           0 \r\n 1988          74            9.4          -1.5          -8             0 \r\n 1988          75            11.2         -2            -9.5           0 \r\n 1988          76            10.8          0            -8             0 \r\n 1988          77            9.8           3.5          -3.5           0 \r\n 1988          78            19.5          4            -3.5           0 \r\n 1988          79            13.6          7            -4             0 \r\n 1988          80            18.5          9.5          -5.5           0 \r\n 1988          81            18.5          10.5         -3.5           0 \r\n 1988          82            20.2          9            -4             0 \r\n 1988          83            18.8          25            0.5           0 \r\n 1988          84            7.5           21.5          5             8.13 \r\n 1988          85            18.7          22.5          7.5           9.4 \r\n 1988          86            15.1          18.5          4.5           0.51 \r\n 1988          87            20.1          10.5          0             0 \r\n 1988          88            8.4           15           -4             0.51 \r\n 1988          89            4.4           17            8.5           15.75 \r\n 1988          90            23            13.5          0.5           4.06 \r\n 1988          91            19            13.5         -2.5           0 \r\n 1988          92            12.2          14            0             0 \r\n 1988          93            4.1           12            3             0 \r\n 1988          94            9.8           20.5          7             7 \r\n 1988          95            20.5          15.5          6.5           12 \r\n 1988          96            16.3          26            6.5           3 \r\n 1988          97            22.2          26.5          10            0 \r\n 1988          98            23.1          18.5          5.5           3 \r\n 1988          99            23.1          22            2.5           0 \r\n 1988          100           19            23.5          8.5           0 \r\n 1988          101           7.8           23.5          8             0 \r\n 1988          102           22            12            3.5           0 \r\n 1988          103           25.5          18            3             0 \r\n 1988          104           20.6          20            3.5           0 \r\n 1988          105           23.9          24.5          5             0 \r\n 1988          106           25.8          18            1.5           0 \r\n 1988          107           25.8          14           -1.5           0 \r\n 1988          108           23.9          18           -1             0 \r\n 1988          109           26.4          25            5.5           0 \r\n 1988          110           27.7          15            1.5           0 \r\n 1988          111           17.5          14           -2.5           0 \r\n 1988          112           9.6           18            4             0 \r\n 1988          113           4.2           14.5          1             0 \r\n 1988          114           4.3           12.5          5             2 \r\n 1988          115           24.9          11            3             2 \r\n 1988          116           21.9          17.5         -1.5           0 \r\n 1988          117           3.8           23            6             0 \r\n 1988          118           14.8          16            6.5           3 \r\n 1988          119           26.8          13.5          3             2 \r\n 1988          120           29.1          19            2.5           0 \r\n 1988          121           27.2          22.5          4             0 \r\n 1988          122           25.6          25            7             0 \r\n 1988          123           26.4          26.5          8             0 \r\n 1988          124           24.3          27            9             0 \r\n 1988          125           22            25.5          10            0 \r\n 1988          126           26.3          23            6.5           0 \r\n 1988          127           26.8          26.5          6.5           0 \r\n 1988          128           17.9          28.5          7.5           0 \r\n 1988          129           8.8           30            12.5          0 \r\n 1988          130           7.3           27            10            0 \r\n 1988          131           29.4          19.5          11            16 \r\n 1988          132           27            24            9.5           0 \r\n 1988          133           27.4          27.5          9             0 \r\n 1988          134           28.1          29            14.5          1 \r\n 1988          135           27.5          26            13            0 \r\n 1988          136           24.7          31.5          8.5           0 \r\n 1988          137           16.8          30.5          17.5          2 \r\n 1988          138           28.2          26.5          11.5          0 \r\n 1988          139           30.1          23            7             0 \r\n 1988          140           21.4          27            9             0 \r\n 1988          141           27.8          28            11            0 \r\n 1988          142           24.3          30.5          12.5          0 \r\n 1988          143           12.7          32            13            0 \r\n 1988          144           2.8           28.5          16            0 \r\n 1988          145           29.5          24.5          15            0 \r\n 1988          146           31.7          23            11.5          18 \r\n 1988          147           27.5          22            4.5           0 \r\n 1988          148           19.4          26.5          7             0 \r\n 1988          149           27.5          27            12.5          0 \r\n 1988          150           26.8          31.5          14.5          0 \r\n 1988          151           27.3          30.5          17            0 \r\n 1988          152           28.5          32.5          17.5          0 \r\n 1988          153           24.1          33.5          18            0 \r\n 1988          154           19.8          34            19            0 \r\n 1988          155           26.7          32            18            0 \r\n 1988          156           31.1          25.5          12.5          0 \r\n 1988          157           30.5          27            8.5           0 \r\n 1988          158           30.6          30.5          11.5          0 \r\n 1988          159           29.6          32.5          13            0 \r\n 1988          160           12.4          34            14.5          0 \r\n 1988          161           31.3          30.5          18            0 \r\n 1988          162           31.4          24            8             21 \r\n 1988          163           32.5          26            8             0 \r\n 1988          164           29.7          29            10            0 \r\n 1988          165           28.5          31            15            0 \r\n 1988          166           28.1          33.5          18.5          0 \r\n 1988          167           21.1          32.5          18            0 \r\n 1988          168           26            31            20.5          0 \r\n 1988          169           18            31.5          16            0 \r\n 1988          170           22.6          30.5          15            0 \r\n 1988          171           18.8          33            18.5          0 \r\n 1988          172           27            35            20.5          0 \r\n 1988          173           27.2          38            24            0 \r\n 1988          174           18            38            24            0 \r\n 1988          175           27.4          36            27            0 \r\n 1988          176           17            34            20            0 \r\n 1988          177           28.9          35.5          19.5          0 \r\n 1988          178           29.2          39.5          24            0 \r\n 1988          179           30.6          33            17            0 \r\n 1988          180           29.4          29.5          11.5          0 \r\n 1988          181           5.2           34.5          14            0 \r\n 1988          182           22.8          30.5          16.5          4 \r\n 1988          183           26.8          26.5          12            5 \r\n 1988          184           24.5          27.5          11            0 \r\n 1988          185           29.1          28.5          15            0 \r\n 1988          186           30.2          31.5          14            0 \r\n 1988          187           24            34.5          16.5          0 \r\n 1988          188           24.7          36.5          21            0 \r\n 1988          189           24.3          37            23.5          0 \r\n 1988          190           24.1          36            21            0 \r\n 1988          191           19.6          36            21            0 \r\n 1988          192           19.3          34.5          22            0 \r\n 1988          193           25.8          32            20            0 \r\n 1988          194           25.6          32.5          18.5          9 \r\n 1988          195           26.6          33.5          18            0 \r\n 1988          196           20.3          36            19.5          0 \r\n 1988          197           26.4          36            25            0 \r\n 1988          198           15.6          39            25.5          0 \r\n 1988          199           26.9          35.5          23.5          0 \r\n 1988          200           16.1          37            21            4 \r\n 1988          201           24.8          32            21            11 \r\n 1988          202           15.5          32.5          20.5          6 \r\n 1988          203           25.1          29            18.5          1 \r\n 1988          204           25.4          29            15            0 \r\n 1988          205           23.9          31.5          13.5          0 \r\n 1988          206           23.1          32.5          15            0 \r\n 1988          207           27.3          34            17.5          0 \r\n 1988          208           28.2          33            19.5          0 \r\n 1988          209           27.9          32.5          16.5          0 \r\n 1988          210           26.5          36            15.5          0 \r\n 1988          211           19            36            19            0 \r\n 1988          212           24.2          33.5          21.5          0 \r\n 1988          213           25.1          37.5          21.5          0 \r\n 1988          214           21.9          40.5          21.5          0 \r\n 1988          215           20.8          39.5          23.5          0 \r\n 1988          216           20.7          37.5          23.5          0 \r\n 1988          217           16.8          38.5          24            0 \r\n 1988          218           23.2          37.5          24            0 \r\n 1988          219           25.5          31.5          21.5          8 \r\n 1988          220           23.2          34            14.5          0 \r\n 1988          221           15.5          36.5          16.5          0 \r\n 1988          222           14.6          39            22.5          0 \r\n 1988          223           16.8          31.5          22            18 \r\n 1988          224           21.5          32            20.5          4 \r\n 1988          225           22.1          36            22            0 \r\n 1988          226           12.4          35.5          22.5          0 \r\n 1988          227           21.5          33            23.5          0 \r\n 1988          228           22.7          38            22.5          0 \r\n 1988          229           20.8          39.5          24            0 \r\n 1988          230           20.9          39.5          23.5          0 \r\n 1988          231           15.8          40            23.5          0 \r\n 1988          232           6.1           39            23            0 \r\n 1988          233           19            29            20.5          13 \r\n 1988          234           19.5          30            18            6 \r\n 1988          235           1.7           30.5          17.5          0 \r\n 1988          236           20.8          28            19            0 \r\n 1988          237           22.3          30            17            42 \r\n 1988          238           22.3          28.5          14            0 \r\n 1988          239           22.1          29.5          14            0 \r\n 1988          240           15.1          27            12            0 \r\n 1988          241           21.1          23            14.5          7 \r\n 1988          242           21.1          24.5          8.5           25 \r\n 1988          243           20.4          25            8             0 \r\n 1988          244           19.4          26            11.5          0 \r\n 1988          245           22.6          29            13            0 \r\n 1988          246           13.2          28.5          14            0 \r\n 1988          247           19.1          28.5          14.5          0 \r\n 1988          248           9.1           25.5          14.5          0 \r\n 1988          249           15.1          23.5          13            0 \r\n 1988          250           23.2          20.5          7             0 \r\n 1988          251           23.1          23            5             0 \r\n 1988          252           20.3          24            7.5           0 \r\n 1988          253           23.3          28            13            0 \r\n 1988          254           21.4          28            9             0 \r\n 1988          255           17            30.5          9             0 \r\n 1988          256           16.5          31.5          15.5          0 \r\n 1988          257           19.2          31.5          18.5          0 \r\n 1988          258           20.8          28            12            0 \r\n 1988          259           13.8          28            10            0 \r\n 1988          260           8.5           28            13            0 \r\n 1988          261           18.7          27            15.5          2 \r\n 1988          262           8.4           34            18.5          0 \r\n 1988          263           7             29.5          20            3 \r\n 1988          264           16.4          26            15            9 \r\n 1988          265           16.5          22            11.5          0 \r\n 1988          266           15.9          25            8             0 \r\n 1988          267           17.7          33            18.5          0 \r\n 1988          268           16.7          27            9.5           0 \r\n 1988          269           19            23.5          6             0 \r\n 1988          270           18            27.5          6             0 \r\n 1988          271           14.2          28.5          9             0 \r\n 1988          272           3.7           28            14.5          0 \r\n 1988          273           9             24.5          16            19 \r\n 1988          274           7.6           25            15.5          1 \r\n 1988          275           2.9           24            15            0 \r\n 1988          276           18.9          22            16            4 \r\n 1988          277           17.8          21            9             0 \r\n 1988          278           17.3          20            2.5           0 \r\n 1988          279           18            15.5          2             0 \r\n 1988          280           14.1          13.5         -1             0 \r\n 1988          281           17.1          14           -1.5           0 \r\n 1988          282           11.3          17           -1.5           0 \r\n 1988          283           14            18            1             0 \r\n 1988          284           16.6          20            3.5           0 \r\n 1988          285           17.2          21            9             0 \r\n 1988          286           16.7          15.5          0.5           0 \r\n 1988          287           15.2          13.5         -3             0 \r\n 1988          288           11.3          17           -0.5           0 \r\n 1988          289           14.3          20.5          7             0 \r\n 1988          290           14.4          25            11            0 \r\n 1988          291           3.3           23.5          10.5          1 \r\n 1988          292           14.2          21            11.5          4 \r\n 1988          293           10.9          15.5          4             3 \r\n 1988          294           2.1           12.5          1             0 \r\n 1988          295           8             10            5             0 \r\n 1988          296           14.5          14            5             6 \r\n 1988          297           11            14            0.5           0 \r\n 1988          298           12.5          12.5          2.5           17 \r\n 1988          299           13.8          12           -2.5           0 \r\n 1988          300           13.2          9.5          -2             0 \r\n 1988          301           2.6           12           -4.5           0 \r\n 1988          302           12.3          13.5          2.5           0 \r\n 1988          303           5.9           8.5          -3.5           0 \r\n 1988          304           12.7          4            -4.5           0 \r\n 1988          305           10.2          7.5          -7.5           0 \r\n 1988          306           14            17           -3             0 \r\n 1988          307           10.2          13           -2.5           0 \r\n 1988          308           12.6          11.5         -3.5           0 \r\n 1988          309           5.4           19.5          3.5           0 \r\n 1988          310           3.4           16            7             6 \r\n 1988          311           5.5           11            0             0 \r\n 1988          312           4.8           4.5          -2.5           1 \r\n 1988          313           12.5          7.5          -3.5           0 \r\n 1988          314           2.6           14           -1.5           0 \r\n 1988          315           5.3           10            4.5           0 \r\n 1988          316           10.4          7            -0.5           8 \r\n 1988          317           2.4           6.5          -5.5           0 \r\n 1988          318           11            7             1             9 \r\n 1988          319           8.2           17            0.5           10 \r\n 1988          320           2.4           15.5          0.5           0 \r\n 1988          321           3.4           19            9             0 \r\n 1988          322           11.2          17            0.5           10 \r\n 1988          323           7.5           10           -2.5           0 \r\n 1988          324           3.9           12            1.5           0 \r\n 1988          325           7             8.5           1.5           2 \r\n 1988          326           5.1           3            -4             0 \r\n 1988          327           9.1          -1            -7             0 \r\n 1988          328           10.3          6            -6.5           0 \r\n 1988          329           10.2          13           -1             0 \r\n 1988          330           5.9           16.5          2             0 \r\n 1988          331           3.2           12            1             0 \r\n 1988          332           2.8           12.5          3             14 \r\n 1988          333           8.6           6            -4             6 \r\n 1988          334           4.4           1            -9             0 \r\n 1988          335           4.9           7.5          -2             0 \r\n 1988          336           8.3           2            -4.5           0 \r\n 1988          337           9.9           0.5          -9             0 \r\n 1988          338           8.9           13           -5             0 \r\n 1988          339           8.2           12            1             0 \r\n 1988          340           9.4           6            -6             0 \r\n 1988          341           9.6           10.5         -2.5           0 \r\n 1988          342           8             13           -1.5           0 \r\n 1988          343           7.5           6            -4.5           0 \r\n 1988          344           5.4           0.5          -10            0 \r\n 1988          345           7.9           1            -12            0 \r\n 1988          346           7.9          -1            -12.5          0 \r\n 1988          347           3.4          -7            -17            0 \r\n 1988          348           6.2          -0.5          -15            0 \r\n 1988          349           4.2           6.5          -3             0 \r\n 1988          350           8.5           6.5          -5.5           0 \r\n 1988          351           4.5           1            -12.5          0 \r\n 1988          352           6.9          -1            -18.5          0 \r\n 1988          353           7.1          -1            -9.5           0 \r\n 1988          354           6.1           7.5          -8.5           0 \r\n 1988          355           4.3           15           -2.5           2.29 \r\n 1988          356           8.9           12.5         -2.5           0 \r\n 1988          357           1.9           3            -7.5           0 \r\n 1988          358           7.2           7            -3.5           3.05 \r\n 1988          359           5.2           9             1             1.02 \r\n 1988          360           6.6           5            -4             0 \r\n 1988          361           1.5          -2            -10            3.81 \r\n 1988          362           3.4           1            -4.5           22.1 \r\n 1988          363           7.6           4            -8.5           0 \r\n 1988          364           7.6          -6            -12            0 \r\n 1988          365           8.5          -1.5          -15            0 \r\n 1988          366           7             5            -6.5           0 \r\n 1989          1             5.2           3            -5.5           0 \r\n 1989          2             5.8          -1.5          -9             0 \r\n 1989          3             6.2           1.5          -6.5           0 \r\n 1989          4             8.5           3.5          -11            0 \r\n 1989          5             6.1           3.5          -3.5           0 \r\n 1989          6             3.7           1.5          -0.5           7.11 \r\n 1989          7             4.2           8            -6             0 \r\n 1989          8             7.2          -4.5          -13            0 \r\n 1989          9             9.1           1.5          -15.5          0 \r\n 1989          10            9.2           2.5          -3.5           0 \r\n 1989          11            3.5           5.5          -4             0 \r\n 1989          12            9.9           4.5          -7             0.76 \r\n 1989          13            10.9          3.5          -10.5          0 \r\n 1989          14            5.8           3.5          -4.5           0 \r\n 1989          15            6.9           2            -5             0 \r\n 1989          16            8.3           10           -8.5           0 \r\n 1989          17            8             10           -3             0 \r\n 1989          18            9.1           7.5          -2             0 \r\n 1989          19            7.9           10.5         -3.5           0 \r\n 1989          20            10.5          4            -5.5           0 \r\n 1989          21            10.5          6            -8             0 \r\n 1989          22            10.9          12           -3             0 \r\n 1989          23            6.3           10           -1.5           0 \r\n 1989          24            5             6.5          -1             0 \r\n 1989          25            2.4           4.5           0.5           0 \r\n 1989          26            10.5          3            -2.5           2.79 \r\n 1989          27            11.6          12           -3.5           0 \r\n 1989          28            3.1           8.5          -0.5           0 \r\n 1989          29            3.7           5.5           1             9.91 \r\n 1989          30            11.8          10.5         -1             0 \r\n 1989          31            11.5          20.5          3             0 \r\n 1989          32            5.5           12.5         -3.5           0 \r\n 1989          33            4            -2            -8.5           0 \r\n 1989          34            9.3          -7.5          -20            0.51 \r\n 1989          35            3.5          -17.5         -20.5          2.29 \r\n 1989          36            3.7          -15.5         -21.5          4.57 \r\n 1989          37            6.2          -11.5         -22.5          2.29 \r\n 1989          38            10.7         -3.5          -19.5          0 \r\n 1989          39            9.9          -5.5          -17.5          0 \r\n 1989          40            11.2         -5            -21.5          0 \r\n 1989          41            14.5         -1            -16            0 \r\n 1989          42            14.3          1            -10            0 \r\n 1989          43            13.5          1.5          -11.5          0 \r\n 1989          44            11.1          4            -5.5           11.68 \r\n 1989          45            6.3           1            -12.5          0 \r\n 1989          46            2.3          -0.5          -7             3.05 \r\n 1989          47            15.1         -3.5          -14.5          0 \r\n 1989          48            12.5         -2.5          -14.5          0 \r\n 1989          49            8.9          -2            -10            0 \r\n 1989          50            10.4         -1.5          -6.5           0 \r\n 1989          51            7.6          -1.5          -7             2.03 \r\n 1989          52            11           -1            -8.5           2.29 \r\n 1989          53            10.9         -5.5          -15.5          0 \r\n 1989          54            14.9         -6.5          -21.5          0 \r\n 1989          55            14.7         -1.5          -18            0 \r\n 1989          56            10.3          5            -9.5           0 \r\n 1989          57            17.1          2            -7.5           0 \r\n 1989          58            17.6         -2            -15            0 \r\n 1989          59            17.2         -2            -9.5           0 \r\n 1989          60            10.1         -3            -14.5          0 \r\n 1989          61            5.4          -4.5          -9.5           0 \r\n 1989          62            3             5.5          -7             3.05 \r\n 1989          63            8.5           7            -7             13.72 \r\n 1989          64            14           -5            -10.5          0 \r\n 1989          65            14.5         -0.5          -9             0 \r\n 1989          66            14.6          0.5          -9.5           0 \r\n 1989          67            12.1          4            -7             0 \r\n 1989          68            12.8          8.5          -4.5           0 \r\n 1989          69            18            15.5         -0.5           0 \r\n 1989          70            15.7          15            0.5           0 \r\n 1989          71            5.4           7.5           0.5           0 \r\n 1989          72            6.3           5            -1.5           0 \r\n 1989          73            3.9           14            0.5           0 \r\n 1989          74            15.3          8.5          -5.5           0 \r\n 1989          75            13.7          11           -5             0 \r\n 1989          76            2.8           2.5          -5             0 \r\n 1989          77            16.1         -0.5          -9             2.79 \r\n 1989          78            12.4          3            -8.5           0 \r\n 1989          79            5.8           4.5          -1             0 \r\n 1989          80            20            3            -8             0 \r\n 1989          81            18.8          9            -6.5           0 \r\n 1989          82            21.7          15.5         -0.5           0 \r\n 1989          83            17            22            1.5           0 \r\n 1989          84            19.5          19            1             0 \r\n 1989          85            20            27            8             0 \r\n 1989          86            17.9          26            14            0 \r\n 1989          87            7             23            12            22.61 \r\n 1989          88            11.5          16            5.5           1.27 \r\n 1989          89            6.8           10.5          2             0 \r\n 1989          90            12.3          7.5          -0.5           0 \r\n 1989          91            8.1           12           -3             0 \r\n 1989          92            10.7          12            6             1 \r\n 1989          93            6.5           14            6.5           0 \r\n 1989          94            6.3           12.5          2.5           0 \r\n 1989          95            15.7          12.5          0.5           0 \r\n 1989          96            17.2          14            0             0 \r\n 1989          97            16            11.5         -2.5           0 \r\n 1989          98            14.6          6.5          -1.5           16 \r\n 1989          99            21.7          5            -4             0 \r\n 1989          100           21.3          6            -5.5           0 \r\n 1989          101           18.4          13           -3.5           0 \r\n 1989          102           23.9          11.5         -2             0 \r\n 1989          103           24.3          16           -4             0 \r\n 1989          104           18.8          18.5          6.5           0 \r\n 1989          105           26.3          18            1.5           0 \r\n 1989          106           10.4          23.5          6             0 \r\n 1989          107           13.7          21            8.5           0 \r\n 1989          108           17.3          13.5          4             0 \r\n 1989          109           27.7          19            1             7 \r\n 1989          110           13.4          20.5          5             0 \r\n 1989          111           23.8          26            9             0 \r\n 1989          112           2.9           21            6.5           0 \r\n 1989          113           16.3          20.5          9.5           42 \r\n 1989          114           23.1          26.5          11            2 \r\n 1989          115           21.3          30            16.5          0 \r\n 1989          116           23.2          28.5          13.5          0 \r\n 1989          117           18.4          25.5          13            10 \r\n 1989          118           9.7           21.5          10            7 \r\n 1989          119           12.7          16.5          8             0 \r\n 1989          120           26.3          16.5          1.5           0 \r\n 1989          121           8.1           13.5          2             6 \r\n 1989          122           21.9          14.5          1.5           12 \r\n 1989          123           24.2          18.5          3.5           0 \r\n 1989          124           6.6           18            10            0 \r\n 1989          125           23.8          16.5          5.5           5 \r\n 1989          126           13.7          8.5           0             0 \r\n 1989          127           25.3          16            0             0 \r\n 1989          128           14.5          20.5          6             0 \r\n 1989          129           26.3          18.5          7.5           10 \r\n 1989          130           29.6          20.5          5             0 \r\n 1989          131           29.7          20.5          5             0 \r\n 1989          132           29.7          21.5          5             0 \r\n 1989          133           24.4          21            7             0 \r\n 1989          134           21.2          21.5          8.5           0 \r\n 1989          135           19.9          26            10            0 \r\n 1989          136           25.2          28            13            0 \r\n 1989          137           23.5          27.5          13.5          0 \r\n 1989          138           10.1          26.5          15            0 \r\n 1989          139           16.3          24            17            6 \r\n 1989          140           30.3          25            14            3 \r\n 1989          141           17.1          25            11            0 \r\n 1989          142           13.5          23.5          13            0 \r\n 1989          143           27.4          27.5          9             0 \r\n 1989          144           21.4          30            18            5 \r\n 1989          145           15            26.5          14.5          6 \r\n 1989          146           27.8          21.5          12            4 \r\n 1989          147           31.7          21.5          6.5           0 \r\n 1989          148           12.3          20.5          9             0 \r\n 1989          149           19.7          32            13            5 \r\n 1989          150           20.3          32.5          21            0 \r\n 1989          151           8.5           29            19            0 \r\n 1989          152           13.9          23.5          17.5          26 \r\n 1989          153           30            27.5          13            2 \r\n 1989          154           15.5          26            16.5          17 \r\n 1989          155           26.1          24            13            4 \r\n 1989          156           26.6          27.5          13.5          0 \r\n 1989          157           27            29.5          15            0 \r\n 1989          158           26.5          29            14.5          0 \r\n 1989          159           17.7          27            16            0 \r\n 1989          160           15.2          19.5          10.5          0 \r\n 1989          161           26            24            9             0 \r\n 1989          162           8.6           22.5          15.5          0 \r\n 1989          163           14.6          27.5          17            26 \r\n 1989          164           28            24.5          13.5          0 \r\n 1989          165           21.4          22            12.5          0 \r\n 1989          166           15.3          18.5          11.5          0 \r\n 1989          167           26.9          23.5          8.5           0 \r\n 1989          168           29.7          27.5          12.5          0 \r\n 1989          169           14.1          24.5          17.5          0 \r\n 1989          170           29.9          31            15.5          0 \r\n 1989          171           30.5          31            17.5          0 \r\n 1989          172           23.5          32            19            0 \r\n 1989          173           22.5          33            21.5          0 \r\n 1989          174           21.6          30            19.5          5 \r\n 1989          175           27.1          30.5          16            0 \r\n 1989          176           16.7          32            20            0 \r\n 1989          177           11.6          32            20            0 \r\n 1989          178           18            28            18.5          6 \r\n 1989          179           30.1          30.5          18            0 \r\n 1989          180           31.5          28.5          13.5          0 \r\n 1989          181           27.1          29.5          14            0 \r\n 1989          182           21.5          31            17            0 \r\n 1989          183           24.5          31            19            0 \r\n 1989          184           25.3          31.5          19.5          0 \r\n 1989          185           29.6          33            20.5          0 \r\n 1989          186           31.4          33            16.5          0 \r\n 1989          187           30.2          35            17            0 \r\n 1989          188           26.3          35.5          21.5          0 \r\n 1989          189           25.4          36.5          21.5          0 \r\n 1989          190           25.8          36.5          23.5          0 \r\n 1989          191           26.7          37.5          24            0 \r\n 1989          192           23            36            24.5          0 \r\n 1989          193           18.1          31            21.5          10 \r\n 1989          194           23.9          30.5          19.5          0 \r\n 1989          195           26.9          28            14.5          0 \r\n 1989          196           12.6          25.5          18.5          0 \r\n 1989          197           26.8          30            14            0 \r\n 1989          198           22.1          30.5          14            0 \r\n 1989          199           15.6          29.5          17.5          6 \r\n 1989          200           9.3           23            17.5          6 \r\n 1989          201           25.1          27.5          17.5          5 \r\n 1989          202           13.2          25            15.5          9 \r\n 1989          203           15.8          27.5          19            3 \r\n 1989          204           19.8          29.5          19            4 \r\n 1989          205           20.5          31            19.5          4 \r\n 1989          206           19.3          31.5          22            3 \r\n 1989          207           17.6          31.5          22            0 \r\n 1989          208           27.5          34            21            0 \r\n 1989          209           25.1          31.5          21.5          0 \r\n 1989          210           13.8          29            18.5          0 \r\n 1989          211           10.1          27            21            2 \r\n 1989          212           21.2          28.5          19            0 \r\n 1989          213           23.4          29            16.5          0 \r\n 1989          214           26.6          31.5          17            0 \r\n 1989          215           18.4          33            22.5          0 \r\n 1989          216           25.6          35.5          24.5          8 \r\n 1989          217           24.3          34.5          21.5          0 \r\n 1989          218           17.9          28.5          15.5          0 \r\n 1989          219           23.7          25            10            0 \r\n 1989          220           25            27.5          10            0 \r\n 1989          221           25.4          30            13            0 \r\n 1989          222           23.8          30            15.5          0 \r\n 1989          223           22.5          29.5          15            0 \r\n 1989          224           21.2          30            14.5          0 \r\n 1989          225           17.2          30.5          15.5          0 \r\n 1989          226           10.8          27            17.5          1 \r\n 1989          227           18.4          26.5          17.5          4 \r\n 1989          228           20.9          26            15            0 \r\n 1989          229           22.5          27            13.5          0 \r\n 1989          230           23.7          28.5          14            0 \r\n 1989          231           7.7           27            15.5          0 \r\n 1989          232           22            29.5          19.5          11 \r\n 1989          233           16.9          29.5          17            0 \r\n 1989          234           18.3          32            21.5          4 \r\n 1989          235           8.3           29            19            15 \r\n 1989          236           10.8          25            18            10 \r\n 1989          237           16.6          27            17.5          0 \r\n 1989          238           9.1           28            20.5          10 \r\n 1989          239           19.3          31.5          21.5          11 \r\n 1989          240           9.8           29            22            0 \r\n 1989          241           17.1          28            20.5          5 \r\n 1989          242           23.9          29.5          14.5          0 \r\n 1989          243           5.4           26.5          17.5          0 \r\n 1989          244           13.9          26            19            38 \r\n 1989          245           23.7          24.5          15            0 \r\n 1989          246           17            24.5          12.5          0 \r\n 1989          247           14            26            14            0 \r\n 1989          248           14.5          26.5          16            0 \r\n 1989          249           9.3           28.5          21            35 \r\n 1989          250           5.8           26.5          20            37 \r\n 1989          251           6.1           24            19            27 \r\n 1989          252           4.9           22            16            26 \r\n 1989          253           20.5          23            10            5 \r\n 1989          254           17.7          23.5          12.5          0 \r\n 1989          255           11.2          18.5          8             0 \r\n 1989          256           7.3           14            8.5           8 \r\n 1989          257           19.7          20            9             0 \r\n 1989          258           17.3          20.5          7.5           0 \r\n 1989          259           18.3          23.5          9             0 \r\n 1989          260           21.6          25.5          9.5           0 \r\n 1989          261           20.4          26.5          11.5          0 \r\n 1989          262           21.1          26            12.5          0 \r\n 1989          263           20.3          26.5          11            0 \r\n 1989          264           18.1          25.5          11            0 \r\n 1989          265           7             22            12            0 \r\n 1989          266           19.5          18            2             2 \r\n 1989          267           20            17.5          0.5           0 \r\n 1989          268           19.1          23.5          4             0 \r\n 1989          269           19.4          18.5          5.5           0 \r\n 1989          270           18.9          20.5          3             0 \r\n 1989          271           18.8          24.5          4.5           0 \r\n 1989          272           17.8          25.5          9             0 \r\n 1989          273           18.1          26            7             0 \r\n 1989          274           18.8          27            10            0 \r\n 1989          275           17.7          22.5          7.5           0 \r\n 1989          276           17.6          13.5          3             0 \r\n 1989          277           16.8          17           -1.5           0 \r\n 1989          278           3.9           16.5          7.5           0 \r\n 1989          279           15.8          16            5             19 \r\n 1989          280           15.6          14.5          0.5           0 \r\n 1989          281           16            15            2.5           0 \r\n 1989          282           13.2          18.5          3.5           0 \r\n 1989          283           17            17.5          4.5           0 \r\n 1989          284           16.8          28.5          7             0 \r\n 1989          285           16.3          24.5          7             0 \r\n 1989          286           15.4          28.5          7.5           0 \r\n 1989          287           14.3          28.5          13.5          0 \r\n 1989          288           14.6          28.5          15            0 \r\n 1989          289           4.5           23            8.5           0 \r\n 1989          290           6.1           9             4             5 \r\n 1989          291           10.3          7            -1             0 \r\n 1989          292           9             5.5           1             0 \r\n 1989          293           12.2          11.5          1             0 \r\n 1989          294           15            19            1             0 \r\n 1989          295           12.9          20.5          1             0 \r\n 1989          296           14.3          26            6             0 \r\n 1989          297           13.6          26.5          9             0 \r\n 1989          298           12.9          27            14            0 \r\n 1989          299           13.3          25            13            0 \r\n 1989          300           10.1          23.5          11.5          0 \r\n 1989          301           5.8           20            12.5          1 \r\n 1989          302           6.8           20            14            2 \r\n 1989          303           3.4           15.5          5.5           6 \r\n 1989          304           11.7          10.5          1.5           4 \r\n 1989          305           11.3          11.5          1             0 \r\n 1989          306           8.6           5            -2.5           0 \r\n 1989          307           7.7           9.5          -2             0 \r\n 1989          308           12.1          16            6             0 \r\n 1989          309           6.1           18.5          6.5           0 \r\n 1989          310           7             11            0.5           0 \r\n 1989          311           8.5           13            2             3 \r\n 1989          312           7.8           11            2.5           0 \r\n 1989          313           8.1           13           -2             0 \r\n 1989          314           10.7          8            -0.5           0 \r\n 1989          315           8             16            2.5           0 \r\n 1989          316           10.6          12.5         -1             0 \r\n 1989          317           9.6           23.5          7.5           0 \r\n 1989          318           5.3           16            6             0 \r\n 1989          319           5.2           8             2             0 \r\n 1989          320           9.4           2            -8.5           0 \r\n 1989          321           7.5           4.5          -11.5          0 \r\n 1989          322           8.5          -2            -12.5          0 \r\n 1989          323           10.1          16           -4             0 \r\n 1989          324           10.6          15            4.5           0 \r\n 1989          325           7.8           5.5          -3.5           0 \r\n 1989          326           4.9           1            -4.5           0 \r\n 1989          327           9             2            -9             0 \r\n 1989          328           9.2           11.5         -9             0 \r\n 1989          329           6.5           12.5          2.5           0 \r\n 1989          330           8.1           10.5         -6             0 \r\n 1989          331           5.8           19            4             0 \r\n 1989          332           7.5           5.5          -10            1 \r\n 1989          333           7.2           1.5          -15.5          0 \r\n 1989          334           9.2           9            -8             0 \r\n 1989          335           9.7           11.5         -6             0 \r\n 1989          336           7.1           5            -8.5           0 \r\n 1989          337           7.7          -2.5          -14            0 \r\n 1989          338           7.9           10           -5.5           0 \r\n 1989          339           7.2           15           -0.5           0 \r\n 1989          340           8.3           9            -5             0 \r\n 1989          341           5.6          -4.5          -11            0 \r\n 1989          342           5.9          -4            -10            0 \r\n 1989          343           7.1           5            -8             0 \r\n 1989          344           3.8           1            -5.5           0 \r\n 1989          345           5.2          -3            -14            4.57 \r\n 1989          346           6.4          -11.5         -22.5          0 \r\n 1989          347           3.8          -7            -17.5          0 \r\n 1989          348           5            -12.5         -23.5          2.03 \r\n 1989          349           5            -13           -27            0 \r\n 1989          350           4.1          -12.5         -23.5          0 \r\n 1989          351           4.6          -8.5          -16            0 \r\n 1989          352           4.2          -11           -21            0 \r\n 1989          353           4            -12           -20            3.56 \r\n 1989          354           3.2          -14           -23.5          0 \r\n 1989          355           4.2          -16           -28            1.78 \r\n 1989          356           4.1          -21           -27.5          0 \r\n 1989          357           4            -18           -30            0 \r\n 1989          358           2.8          -8.5          -20            1.02 \r\n 1989          359           3.9           3            -9             0.76 \r\n 1989          360           4.6           1.5          -17.5          0 \r\n 1989          361           5.2           3.5          -9.5           0 \r\n 1989          362           6             5.5          -0.5           0 \r\n 1989          363           3             4            -1.5           0 \r\n 1989          364           3.8          -1            -3             0.76 \r\n 1989          365           5.9           0            -3.5           0 \r\n 1990          1             6.1          -1            -6             0 \r\n 1990          2             8.5           6.5          -4             0 \r\n 1990          3             5.4           7             0.5           0 \r\n 1990          4             6.5           7            -4             15.24 \r\n 1990          5             8.2           5            -7             0 \r\n 1990          6             6.8           1.5          -7             0 \r\n 1990          7             9             6            -4             0 \r\n 1990          8             7.4           7            -3             0 \r\n 1990          9             5.9           6.5           0             0.76 \r\n 1990          10            7.4           6            -5             0 \r\n 1990          11            8.6           6             0             0 \r\n 1990          12            8.5           1            -6.5           0 \r\n 1990          13            6.5           0.5          -10.5          0 \r\n 1990          14            7.5           8            -3.5           0 \r\n 1990          15            9.3           13           -3.5           0 \r\n 1990          16            3.4           14            2.5           0 \r\n 1990          17            4             13            1.5           6.35 \r\n 1990          18            9.4           2.5          -3             0 \r\n 1990          19            7.9           1.5          -5.5           0 \r\n 1990          20            3.8           1            -1             2.54 \r\n 1990          21            6.4           3.5          -2.5           2.03 \r\n 1990          22            10.3          7.5          -1.5           0 \r\n 1990          23            5.6           12.5         -1             0 \r\n 1990          24            8.9           8.5          -1.5           0 \r\n 1990          25            4             3            -6             16.51 \r\n 1990          26            5             3.5          -12            0.76 \r\n 1990          27            7.6           7.5          -3.5           0 \r\n 1990          28            11            4.5          -8.5           0 \r\n 1990          29            11.5          6            -7.5           0 \r\n 1990          30            11.7          4.5          -6.5           0 \r\n 1990          31            9.6           7.5          -9.5           0 \r\n 1990          32            5.7           7.5          -1.5           0 \r\n 1990          33            3.8          -0.5          -4             3.3 \r\n 1990          34            5.2           0            -3             2.29 \r\n 1990          35            11.3          6.5          -7.5           0 \r\n 1990          36            11.5          13.5         -1             0 \r\n 1990          37            4.4           8            -1             0 \r\n 1990          38            6.8           9.5          -0.5           1.27 \r\n 1990          39            12.2          16            3.5           0 \r\n 1990          40            12.5          9.5          -2.5           0 \r\n 1990          41            9.7           7.5          -5.5           0 \r\n 1990          42            9             9.5          -3             0 \r\n 1990          43            10.9          18.5         -2             0 \r\n 1990          44            4.5           15.5         -1             0 \r\n 1990          45            3             0.5          -6.5           0 \r\n 1990          46            3            -0.5          -5             20.07 \r\n 1990          47            9.7           0            -6.5           2.03 \r\n 1990          48            9.6          -2.5          -16.5          0 \r\n 1990          49            14.4          5.5          -6             0 \r\n 1990          50            15.7          0.5          -9             0 \r\n 1990          51            15.8          2            -12            0 \r\n 1990          52            10.8          8            -5.5           0 \r\n 1990          53            4.5           6             0.5           0.25 \r\n 1990          54            11.8          4            -5             17.02 \r\n 1990          55            14.6          2.5          -10            0 \r\n 1990          56            15.5         -6.5          -14            0 \r\n 1990          57            14.5          4            -8.5           0 \r\n 1990          58            15.6          4.5          -3             0 \r\n 1990          59            16.1          3            -8.5           0 \r\n 1990          60            15.6          8.5          -6             0 \r\n 1990          61            16.7          13           -2             0 \r\n 1990          62            16.4          8            -4.5           0 \r\n 1990          63            13.9          11           -5             0 \r\n 1990          64            4.7           8             0             0.25 \r\n 1990          65            5.9           1            -1.5           5.84 \r\n 1990          66            4.7           2            -2.5           0 \r\n 1990          67            4.6           13            1             9.65 \r\n 1990          68            15.7          19            2.5           2.29 \r\n 1990          69            4.7           18            12            49.28 \r\n 1990          70            8.2           22.5          14            35.56 \r\n 1990          71            19.1          26            14.5          4.06 \r\n 1990          72            6.7           23            15            1.02 \r\n 1990          73            5.5           20.5          14.5          0.76 \r\n 1990          74            10.2          17            6.5           63.75 \r\n 1990          75            13.8          14            3.5           0 \r\n 1990          76            12            8.5           1.5           0 \r\n 1990          77            11.8          7.5          -1.5           0 \r\n 1990          78            18.4          2.5          -5.5           0 \r\n 1990          79            21.9          9.5          -5.5           0 \r\n 1990          80            18.6          18            2             0 \r\n 1990          81            6.5           15            3             1.02 \r\n 1990          82            13.6          3.5          -5.5           0.25 \r\n 1990          83            20.8          3.5          -4.5           0 \r\n 1990          84            22.7          7.5          -5             0 \r\n 1990          85            23.6          7.5          -3.5           0 \r\n 1990          86            22.7          11.5         -5.5           0 \r\n 1990          87            10.2          11            2             0 \r\n 1990          88            3.6           8             3             1.27 \r\n 1990          89            5.8           6.5           3.5           0.76 \r\n 1990          90            8.1           10            4.5           0 \r\n 1990          91            9.3           17            5.5           1 \r\n 1990          92            10.2          8             0.5           2 \r\n 1990          93            20.4          10.5         -1             0 \r\n 1990          94            22.3          15.5          1.5           0 \r\n 1990          95            21.7          12.5          1.5           0 \r\n 1990          96            25            4.5          -5             0 \r\n 1990          97            24.6          10           -6             0 \r\n 1990          98            17.9          20            3.5           0 \r\n 1990          99            5.5           16.5          7             2 \r\n 1990          100           6.8           10.5          4             9 \r\n 1990          101           20.6          8            -2             0 \r\n 1990          102           25.3          10           -4             0 \r\n 1990          103           5.3           8.5           3             0 \r\n 1990          104           22            14.5          3             11 \r\n 1990          105           25.5          15            6             0 \r\n 1990          106           11.9          17            1.5           0 \r\n 1990          107           26.6          10           -1             1 \r\n 1990          108           24.5          14           -2.5           0 \r\n 1990          109           8.2           13            6             1 \r\n 1990          110           6.1           17            11            6 \r\n 1990          111           17            20.5          9.5           4 \r\n 1990          112           25            25            6.5           0 \r\n 1990          113           21.9          28.5          13            0 \r\n 1990          114           21.6          30            17.5          0 \r\n 1990          115           23.6          30            16            0 \r\n 1990          116           19.8          29.5          17.5          0 \r\n 1990          117           11.4          25.5          16.5          4 \r\n 1990          118           9             17.5          6             12 \r\n 1990          119           22.6          21            3.5           2 \r\n 1990          120           22            19            3             0 \r\n 1990          121           24.8          14            5             0 \r\n 1990          122           24            19.5          3             0 \r\n 1990          123           7.5           17            9             0 \r\n 1990          124           3.2           10            7.5           44 \r\n 1990          125           14.4          18.5          4.5           16 \r\n 1990          126           26.1          21            5             12 \r\n 1990          127           29.7          25.5          10            0 \r\n 1990          128           23.3          26.5          14.5          0 \r\n 1990          129           6.1           22            9.5           3 \r\n 1990          130           18            13.5          4.5           7 \r\n 1990          131           23.3          19            4.5           0 \r\n 1990          132           3.3           16            9.5           8 \r\n 1990          133           26.1          19            6.5           6 \r\n 1990          134           17.5          24.5          11            0 \r\n 1990          135           8.6           22            13.5          0 \r\n 1990          136           15.4          21            15            5 \r\n 1990          137           27.6          20            10            0 \r\n 1990          138           29.7          26            8             0 \r\n 1990          139           13.8          24.5          14            4 \r\n 1990          140           7.7           21            10            0 \r\n 1990          141           7.4           15            9             0 \r\n 1990          142           26.1          21            8             0 \r\n 1990          143           8.6           18            11            0 \r\n 1990          144           6.4           17.5          11            11 \r\n 1990          145           7             18.5          13.5          37 \r\n 1990          146           9.9           18.5          14.5          7 \r\n 1990          147           23.4          23.5          11.5          0 \r\n 1990          148           21.4          23            14            0 \r\n 1990          149           30.8          24.5          12            0 \r\n 1990          150           27.2          23            8.5           0 \r\n 1990          151           27.2          25            10            0 \r\n 1990          152           21            28.5          18            0 \r\n 1990          153           16.4          26.5          18.5          0 \r\n 1990          154           17.3          20.5          10.5          7 \r\n 1990          155           28.9          19.5          9             0 \r\n 1990          156           5.4           18.5          11.5          0 \r\n 1990          157           17.3          26.5          12.5          4 \r\n 1990          158           11.1          24.5          12            0 \r\n 1990          159           18.3          26            17.5          23 \r\n 1990          160           30.6          27.5          16.5          0 \r\n 1990          161           29.1          28.5          14.5          0 \r\n 1990          162           23.5          28.5          16.5          0 \r\n 1990          163           26.4          32            20            0 \r\n 1990          164           12.9          30.5          22.5          0 \r\n 1990          165           18.8          28.5          19.5          32 \r\n 1990          166           16.7          28.5          20.5          0 \r\n 1990          167           7.6           27.5          21            23 \r\n 1990          168           22.4          30.5          18.5          76 \r\n 1990          169           31.4          30            17.5          0 \r\n 1990          170           8.4           28            16            0 \r\n 1990          171           24.8          28            18            51 \r\n 1990          172           17.9          27            16            0 \r\n 1990          173           14.1          23.5          15.5          12 \r\n 1990          174           26.3          24.5          15            9 \r\n 1990          175           27.7          28            14            0 \r\n 1990          176           26.8          29            18            0 \r\n 1990          177           27.1          30.5          20.5          0 \r\n 1990          178           20.5          32.5          21.5          0 \r\n 1990          179           11.5          30.5          20.5          10 \r\n 1990          180           18.1          29            19            4 \r\n 1990          181           23.2          32            21.5          31 \r\n 1990          182           28.2          30            21            0 \r\n 1990          183           28.9          30            18            0 \r\n 1990          184           28            35.5          22            0 \r\n 1990          185           29            36.5          25            0 \r\n 1990          186           24.9          33.5          20            2 \r\n 1990          187           26.2          28            16            0 \r\n 1990          188           25.3          31            18            0 \r\n 1990          189           26.6          35            24.5          0 \r\n 1990          190           26.4          33            21.5          0 \r\n 1990          191           7.6           29            20            20 \r\n 1990          192           13.5          24            16            28 \r\n 1990          193           13.1          23            15.5          4 \r\n 1990          194           19.4          22            14.5          0 \r\n 1990          195           17.2          21.5          14            1 \r\n 1990          196           22.2          25.5          15            0 \r\n 1990          197           27.4          30            17.5          11 \r\n 1990          198           25.7          30            19.5          0 \r\n 1990          199           14            29.5          20            0 \r\n 1990          200           19.8          31            20            0 \r\n 1990          201           14.6          28            20.5          17 \r\n 1990          202           7.5           26            19            4 \r\n 1990          203           23.1          25.5          17.5          7 \r\n 1990          204           27            26.5          14            0 \r\n 1990          205           21.5          28            15            0 \r\n 1990          206           23.7          28.5          17            0 \r\n 1990          207           15.9          27.5          19.5          0 \r\n 1990          208           18.1          30.5          20            9 \r\n 1990          209           16            29.5          21.5          2 \r\n 1990          210           18.1          29            20.5          7 \r\n 1990          211           24.8          27.5          19            2 \r\n 1990          212           24            25.5          16            0 \r\n 1990          213           25.9          26            14.5          0 \r\n 1990          214           22.2          28            14.5          0 \r\n 1990          215           11.8          27.5          20.5          0 \r\n 1990          216           21.4          29            20.5          15 \r\n 1990          217           23.4          27            15            0 \r\n 1990          218           26.6          24.5          12.5          0 \r\n 1990          219           26.6          26.5          12            0 \r\n 1990          220           25            26.5          12            0 \r\n 1990          221           25.4          27            13            0 \r\n 1990          222           22.5          29            16.5          0 \r\n 1990          223           19            28.5          18.5          0 \r\n 1990          224           7.6           25.5          18.5          0 \r\n 1990          225           19.8          25            17            3 \r\n 1990          226           22.7          27.5          15            0 \r\n 1990          227           18.4          29            17.5          0 \r\n 1990          228           11.2          27.5          19.5          0 \r\n 1990          229           18.5          31.5          20.5          7 \r\n 1990          230           24.2          33            22.5          8 \r\n 1990          231           18.8          33            22.5          0 \r\n 1990          232           6.9           27.5          21            20 \r\n 1990          233           7.6           22.5          18            3 \r\n 1990          234           11.3          25            19            0 \r\n 1990          235           19.3          28            18.5          0 \r\n 1990          236           19.4          31            20            0 \r\n 1990          237           20.6          29            19            12 \r\n 1990          238           22.7          34            22            19 \r\n 1990          239           22.7          35.5          24            0 \r\n 1990          240           20.2          33.5          23            0 \r\n 1990          241           20.9          30.5          19            17 \r\n 1990          242           22.3          28.5          17            10 \r\n 1990          243           22            29            17            0 \r\n 1990          244           23.4          31            19.5          0 \r\n 1990          245           6.7           28.5          20.5          0 \r\n 1990          246           18            28            18.5          15 \r\n 1990          247           23            34            20.5          0 \r\n 1990          248           23.4          34.5          21.5          0 \r\n 1990          249           23.3          35.5          23            0 \r\n 1990          250           16.2          31            22            0 \r\n 1990          251           13.9          26            18            0 \r\n 1990          252           17.7          28            16.5          0 \r\n 1990          253           19.2          31            18.5          0 \r\n 1990          254           17.6          29.5          19            0 \r\n 1990          255           19.3          30.5          17            0 \r\n 1990          256           17.6          30            18.5          0 \r\n 1990          257           17.2          26.5          16.5          0 \r\n 1990          258           22            25.5          8.5           0 \r\n 1990          259           16.1          22.5          10.5          0 \r\n 1990          260           17            20.5          8             0 \r\n 1990          261           3.5           16.5          11            0 \r\n 1990          262           7.2           17            12.5          5 \r\n 1990          263           13.1          21            8.5           0 \r\n 1990          264           16.4          22            14.5          13 \r\n 1990          265           17.7          19.5          8             0 \r\n 1990          266           18.1          16            6.5           0 \r\n 1990          267           20            21.5          3             0 \r\n 1990          268           19.8          28.5          10.5          0 \r\n 1990          269           19.7          28            11            0 \r\n 1990          270           17            31.5          10            0 \r\n 1990          271           15.5          25.5          15            0 \r\n 1990          272           9.9           20            10            0 \r\n 1990          273           17.2          19.5          5.5           0 \r\n 1990          274           14.6          22            7.5           0 \r\n 1990          275           17.5          26            7             0 \r\n 1990          276           5.1           23.5          12.5          10 \r\n 1990          277           16            22            7.5           19 \r\n 1990          278           18.2          30            12.5          0 \r\n 1990          279           16.9          29.5          18            0 \r\n 1990          280           6.5           25            10            0 \r\n 1990          281           2.4           11            6             0 \r\n 1990          282           4.7           7.5           5.5           7 \r\n 1990          283           7.3           10.5          4             5 \r\n 1990          284           17.4          17            0.5           3 \r\n 1990          285           15.3          17            2.5           0 \r\n 1990          286           14.9          19            2.5           0 \r\n 1990          287           7.5           17.5          9.5           0 \r\n 1990          288           7.8           15            3             3 \r\n 1990          289           12.6          21.5          9             0 \r\n 1990          290           5.8           23.5          11            0 \r\n 1990          291           11.6          13.5          2.5           5 \r\n 1990          292           13.3          13.5         -1.5           0 \r\n 1990          293           9.4           19.5          7             0 \r\n 1990          294           10.1          16.5          5.5           0 \r\n 1990          295           13.8          14.5         -2.5           0 \r\n 1990          296           8.2           13.5          2.5           0 \r\n 1990          297           11            14            3.5           0 \r\n 1990          298           13            12           -0.5           0 \r\n 1990          299           13            16.5         -1             0 \r\n 1990          300           13.1          15.5          5.5           0 \r\n 1990          301           11.8          13.5         -0.5           0 \r\n 1990          302           12.8          21            1             0 \r\n 1990          303           12.9          24.5          10.5          0 \r\n 1990          304           12.8          25.5          8.5           0 \r\n 1990          305           9.8           24.5          10.5          0 \r\n 1990          306           8             24            15            0 \r\n 1990          307           4.4           20            6             0 \r\n 1990          308           3             6.5           2             21 \r\n 1990          309           5.8           6             0.5           13 \r\n 1990          310           4             5             0             1 \r\n 1990          311           10.4          2.5          -3             0 \r\n 1990          312           3.5           2            -6.5           0 \r\n 1990          313           7.2           8             0             9 \r\n 1990          314           9.5           11.5         -1.5           0 \r\n 1990          315           8.2           14.5         -3             0 \r\n 1990          316           9.7           11.5         -1             0 \r\n 1990          317           9.6           11.5         -0.5           0 \r\n 1990          318           11            22            2.5           0 \r\n 1990          319           10.8          22.5          9.5           0 \r\n 1990          320           10.4          18            5             0 \r\n 1990          321           9             12           -3             0 \r\n 1990          322           5.6           10            2.5           0 \r\n 1990          323           8             13.5          4.5           0 \r\n 1990          324           5.2           16            4.5           0 \r\n 1990          325           3.8           19.5          10.5          6 \r\n 1990          326           10.6          14            0             8 \r\n 1990          327           9.6           11            2.5           0 \r\n 1990          328           7.4           15            0.5           0 \r\n 1990          329           7.5           12            2.5           0 \r\n 1990          330           3.4           19.5          2             0 \r\n 1990          331           2.8           20.5          4             9 \r\n 1990          332           9.7           6.5          -4             8 \r\n 1990          333           9.8           5.5          -5             0 \r\n 1990          334           9.5           12.5          1.5           0 \r\n 1990          335           7.4           9             1.5           0 \r\n 1990          336           6             4.5          -3             0 \r\n 1990          337           2.4           1            -4             28.19 \r\n 1990          338           5            -3.5          -10.5          2.79 \r\n 1990          339           3.6           5            -11            0 \r\n 1990          340           6.1           3            -4.5           0 \r\n 1990          341           4             5            -8             0 \r\n 1990          342           5.6           7            -5.5           0 \r\n 1990          343           6             10           -2             0 \r\n 1990          344           6.6           8            -2             0 \r\n 1990          345           7.6           12            0             0 \r\n 1990          346           4.7           10            0.5           0 \r\n 1990          347           7.5           3            -3.5           0 \r\n 1990          348           5.1           3            -6             0 \r\n 1990          349           2.7           5.5          -0.5           8.89 \r\n 1990          350           4.3           2            -1.5           0 \r\n 1990          351           3.2           3             0.5           0.51 \r\n 1990          352           6.8           2            -7             3.81 \r\n 1990          353           6.5           2.5          -2.5           0 \r\n 1990          354           7.8           7.5          -5.5           0 \r\n 1990          355           3.3          -1.5          -15.5          0 \r\n 1990          356           5.4          -14.5         -21            0.25 \r\n 1990          357           6.6          -15           -21            0 \r\n 1990          358           7.3          -5.5          -18            0 \r\n 1990          359           7.3          -5            -17            0 \r\n 1990          360           6.4          -11           -21            0 \r\n 1990          361           7.2          -5            -14.5          0 \r\n 1990          362           2.7           1            -6             0 \r\n 1990          363           3.6           2.5          -15            17.53 \r\n 1990          364           5.7          -14.5         -18.5          0.76 \r\n 1990          365           7.9          -7.5          -19.5          0 \r\n 1991          1             9.4           0            -11.5          0 \r\n 1991          2             4.9          -3            -12.5          0 \r\n 1991          3             7.4          -9            -18.5          0 \r\n 1991          4             6.7          -5.5          -15            0 \r\n 1991          5             3            -3.5          -10            15.49 \r\n 1991          6             5.6          -7.5          -15            0 \r\n 1991          7             9.3          -6.5          -15            0 \r\n 1991          8             5            -2            -11.5          0 \r\n 1991          9             9.4          -2            -11.5          0.51 \r\n 1991          10            3.8          -3            -15.5          0 \r\n 1991          11            4.7          -1            -5.5           2.03 \r\n 1991          12            7.5          -2            -7             0.76 \r\n 1991          13            5.2           0            -6.5           0 \r\n 1991          14            8.5           4.5          -4.5           0 \r\n 1991          15            5.7           1.5          -5             0 \r\n 1991          16            5.1           1            -6             7.37 \r\n 1991          17            5.1          -0.5          -7             0 \r\n 1991          18            6.5          -0.5          -12.5          0 \r\n 1991          19            9.2           5.5          -3             0 \r\n 1991          20            6.5           2.5          -11.5          0.25 \r\n 1991          21            6.6          -10           -19            0.51 \r\n 1991          22            5.6          -1            -22            0 \r\n 1991          23            8.6           1.5          -10            0 \r\n 1991          24            7.5          -8            -16.5          0 \r\n 1991          25            6.6          -11.5         -17.5          0 \r\n 1991          26            6.5          -6            -17            0.25 \r\n 1991          27            6.5          -2            -13            0 \r\n 1991          28            11            1            -10            0 \r\n 1991          29            4.9          -3            -12.5          0 \r\n 1991          30            6.6          -7.5          -20.5          0 \r\n 1991          31            6.8          -3.5          -15.5          0 \r\n 1991          32            6.5           4.5          -9             0 \r\n 1991          33            8             8.5          -4             0 \r\n 1991          34            8.2           9.5           1             0 \r\n 1991          35            9.1           9.5           2             0 \r\n 1991          36            12.9          8            -2             0 \r\n 1991          37            5.7           4            -1             0 \r\n 1991          38            7.7           4            -2             0 \r\n 1991          39            10.7          6.5          -3             0 \r\n 1991          40            10.9          8.5          -1.5           0 \r\n 1991          41            13.9          4.5          -2             0 \r\n 1991          42            8.1          -0.5          -5.5           0 \r\n 1991          43            14.1          3.5          -7.5           0 \r\n 1991          44            7.9           3            -2             0 \r\n 1991          45            7.3           2            -12            0.25 \r\n 1991          46            11.8         -10.5         -19            0 \r\n 1991          47            8             3            -15.5          0 \r\n 1991          48            10.7          7.5          -3.5           0 \r\n 1991          49            3.8           5             0.5           3.05 \r\n 1991          50            8             3            -1             1.78 \r\n 1991          51            14.4          11           -2.5           0 \r\n 1991          52            15.4          16            1.5           0 \r\n 1991          53            15.2          11.5         -1             0 \r\n 1991          54            7.8           3.5          -4.5           0 \r\n 1991          55            14.4          2.5          -7             0 \r\n 1991          56            15.4         -2            -10            0 \r\n 1991          57            11.8         -0.5          -9.5           0 \r\n 1991          58            10.1          1            -6             0 \r\n 1991          59            13.3          10.5         -2             0 \r\n 1991          60            3.4           12.5          3             3.81 \r\n 1991          61            5.9           9             0.5           41.15 \r\n 1991          62            13.1          3            -4.5           0 \r\n 1991          63            12.4          4.5          -6             0 \r\n 1991          64            7.8           12           -1             0 \r\n 1991          65            11.2          11           -2             0 \r\n 1991          66            18.9          4            -6.5           0 \r\n 1991          67            14.5          10.5         -4.5           0 \r\n 1991          68            16.4          7            -3.5           0 \r\n 1991          69            14.3          8.5          -6             0 \r\n 1991          70            15.2          13            1.5           0 \r\n 1991          71            1.7           9             1             5.08 \r\n 1991          72            4.5           2            -2             42.67 \r\n 1991          73            11            4            -4             0.51 \r\n 1991          74            14            7            -4             0 \r\n 1991          75            11            10.5          0.5           0 \r\n 1991          76            1.6           7.5           2.5           2.29 \r\n 1991          77            12.5          9.5           2             10.92 \r\n 1991          78            20.3          14.5         -0.5           0 \r\n 1991          79            13.6          20.5          2.5           0 \r\n 1991          80            21.2          23.5          9             0 \r\n 1991          81            7.3           21.5          9.5           2.03 \r\n 1991          82            6.1           16.5          4             15.75 \r\n 1991          83            20.1          14.5          2.5           4.83 \r\n 1991          84            16.7          22            4.5           0 \r\n 1991          85            16.3          28            12            0 \r\n 1991          86            14.4          25            4.5           12.19 \r\n 1991          87            20.4          14.5         -0.5           1.78 \r\n 1991          88            22.3          7            -3.5           0 \r\n 1991          89            22.5          7            -5             0 \r\n 1991          90            19.7          13            1.5           0 \r\n 1991          91            22.1          15            0             0 \r\n 1991          92            19.5          16.5          4             0 \r\n 1991          93            13.7          20.5          7.5           0 \r\n 1991          94            8.1           18.5          10.5          3 \r\n 1991          95            21.1          25.5          8.5           0 \r\n 1991          96            21.8          29            14            0 \r\n 1991          97            16.7          27            14            0 \r\n 1991          98            13.2          27            16            0 \r\n 1991          99            6.2           20.5          5             13 \r\n 1991          100           24.3          13.5          0.5           0 \r\n 1991          101           5.7           11            4.5           0 \r\n 1991          102           3.8           11.5          5             1 \r\n 1991          103           4.9           11            7             5 \r\n 1991          104           13.6          14            8             9 \r\n 1991          105           21.5          18            4.5           3 \r\n 1991          106           22.7          19            6.5           0 \r\n 1991          107           22.6          18.5          7             6 \r\n 1991          108           8.1           16.5          7             0 \r\n 1991          109           5.6           13.5          7             9 \r\n 1991          110           17.2          13            5             2 \r\n 1991          111           21.9          14.5          2.5           0 \r\n 1991          112           22            17.5          2.5           0 \r\n 1991          113           13.5          15            4             1 \r\n 1991          114           27.6          18.5          3             0 \r\n 1991          115           10.6          18            7.5           0 \r\n 1991          116           20.6          24.5          7             0 \r\n 1991          117           18.5          24.5          14.5          5 \r\n 1991          118           16.9          25            7.5           0 \r\n 1991          119           13.7          25.5          15            0 \r\n 1991          120           18.8          19.5          9             0 \r\n 1991          121           23            16.5          7.5           0 \r\n 1991          122           22.3          21.5          4.5           0 \r\n 1991          123           4.5           16.5          7             0 \r\n 1991          124           10.8          18.5          9             3 \r\n 1991          125           6.6           18            7             22 \r\n 1991          126           8.9           10.5          5             4 \r\n 1991          127           23.4          18.5          3             0 \r\n 1991          128           10.2          20            11            0 \r\n 1991          129           26.1          25            11            1 \r\n 1991          130           13.7          25.5          15.5          0 \r\n 1991          131           20            28            16.5          0 \r\n 1991          132           22.2          30.5          16            0 \r\n 1991          133           23.7          31            18.5          0 \r\n 1991          134           16.2          30.5          18.5          1 \r\n 1991          135           21.7          29.5          18.5          0 \r\n 1991          136           9.2           25            18.5          8 \r\n 1991          137           18.7          28.5          15.5          7 \r\n 1991          138           3.8           18.5          11            8 \r\n 1991          139           21.3          19.5          10            0 \r\n 1991          140           21.7          24.5          13            0 \r\n 1991          141           11.4          27            18.5          0 \r\n 1991          142           19.1          29.5          20.5          0 \r\n 1991          143           15.5          27.5          20.5          0 \r\n 1991          144           21.2          28.5          20            7 \r\n 1991          145           7.7           26            19.5          2 \r\n 1991          146           24.1          28            19.5          5 \r\n 1991          147           29            31.5          19            0 \r\n 1991          148           28.7          33.5          21            0 \r\n 1991          149           22.2          31.5          20.5          0 \r\n 1991          150           22.4          30            19            12 \r\n 1991          151           18            31.5          18.5          9 \r\n 1991          152           16.3          30.5          19            17 \r\n 1991          153           23.7          31            20.5          0 \r\n 1991          154           23.6          30.5          21            0 \r\n 1991          155           15.9          28            16.5          0 \r\n 1991          156           30.3          25.5          13.5          0 \r\n 1991          157           27.4          26            13            0 \r\n 1991          158           26.3          27.5          14            0 \r\n 1991          159           26.4          28.5          14.5          0 \r\n 1991          160           23.8          30.5          17            0 \r\n 1991          161           20.3          29.5          19.5          0 \r\n 1991          162           22.9          29            19.5          11 \r\n 1991          163           28.4          31.5          19            0 \r\n 1991          164           23.6          32            20.5          0 \r\n 1991          165           21.8          33            20.5          6 \r\n 1991          166           20.2          31            20.5          0 \r\n 1991          167           29.4          27            17            4 \r\n 1991          168           31.7          29            14.5          0 \r\n 1991          169           30.6          30            16            0 \r\n 1991          170           28.2          31            16.5          0 \r\n 1991          171           28.4          32            18.5          0 \r\n 1991          172           21.4          31.5          19.5          0 \r\n 1991          173           6.6           28.5          17            0 \r\n 1991          174           15.2          24            15.5          0 \r\n 1991          175           21.6          28            17            0 \r\n 1991          176           23.3          30            18.5          0 \r\n 1991          177           25.9          33.5          21            0 \r\n 1991          178           25.8          33            22.5          0 \r\n 1991          179           27.8          32.5          20.5          0 \r\n 1991          180           28            35            22            0 \r\n 1991          181           27.9          35            23.5          0 \r\n 1991          182           26.1          34            24            0 \r\n 1991          183           27.1          33.5          20.5          0 \r\n 1991          184           27.4          31.5          19            0 \r\n 1991          185           24.2          29            16.5          0 \r\n 1991          186           29.6          33            17.5          0 \r\n 1991          187           25.2          34.5          21.5          0 \r\n 1991          188           21.4          34.5          23.5          2 \r\n 1991          189           28.6          31.5          19            0 \r\n 1991          190           7.3           26            18.5          0 \r\n 1991          191           20.6          28            17            3 \r\n 1991          192           10.7          27            19.5          0 \r\n 1991          193           25.2          31.5          21.5          2 \r\n 1991          194           18.6          29            17.5          0 \r\n 1991          195           24.8          28.5          16.5          0 \r\n 1991          196           24.6          30            16.5          0 \r\n 1991          197           27.9          32            16.5          0 \r\n 1991          198           27.2          34.5          19            0 \r\n 1991          199           28.5          35            20            0 \r\n 1991          200           24.9          36            21            0 \r\n 1991          201           24.9          35.5          23            0 \r\n 1991          202           21            35.5          25            0 \r\n 1991          203           25.4          36.5          25.5          0 \r\n 1991          204           23            32.5          20            0 \r\n 1991          205           19.8          29            15.5          0 \r\n 1991          206           23.9          27.5          14.5          0 \r\n 1991          207           24.8          27            12.5          0 \r\n 1991          208           22.4          27            14.5          0 \r\n 1991          209           12.9          28            16            0 \r\n 1991          210           18.7          25.5          16.5          0 \r\n 1991          211           26.9          28.5          12            0 \r\n 1991          212           13.2          28.5          16            0 \r\n 1991          213           25.9          34            17            0 \r\n 1991          214           25            37.5          21            0 \r\n 1991          215           11.8          32            20.5          4 \r\n 1991          216           15.9          27            17            0 \r\n 1991          217           5.8           24.5          16.5          0 \r\n 1991          218           4.9           22            17            9 \r\n 1991          219           15.3          29            19            13 \r\n 1991          220           13            28            19.5          18 \r\n 1991          221           22.4          27            17            3 \r\n 1991          222           24.5          27.5          14            0 \r\n 1991          223           23.7          29            14.5          0 \r\n 1991          224           23.7          29.5          14            0 \r\n 1991          225           22.5          28.5          15.5          1 \r\n 1991          226           23.4          29.5          13.5          0 \r\n 1991          227           23.9          30.5          16.5          0 \r\n 1991          228           13.8          30            18.5          0 \r\n 1991          229           17.2          27.5          19            21 \r\n 1991          230           15.1          29            17.5          0 \r\n 1991          231           19.9          25            14.5          0 \r\n 1991          232           19.4          25.5          12.5          0 \r\n 1991          233           23            30.5          14.5          0 \r\n 1991          234           24.3          31.5          18.5          0 \r\n 1991          235           13.8          29.5          18.5          0 \r\n 1991          236           19.7          33            19            0 \r\n 1991          237           20.5          34            19.5          0 \r\n 1991          238           21            33.5          20            0 \r\n 1991          239           20.9          33            20            0 \r\n 1991          240           18.2          33.5          21            0 \r\n 1991          241           9.1           29.5          22.5          0 \r\n 1991          242           14.3          31.5          21            1 \r\n 1991          243           20.8          31            19.5          0 \r\n 1991          244           22            29            14.5          0 \r\n 1991          245           13.7          31            18.5          0 \r\n 1991          246           5.8           28            20.5          0 \r\n 1991          247           23.6          26            13            12 \r\n 1991          248           21.9          27.5          10.5          0 \r\n 1991          249           23.2          31            13.5          0 \r\n 1991          250           21.3          32            17            0 \r\n 1991          251           6.5           28.5          19            0 \r\n 1991          252           17.8          33            21.5          2 \r\n 1991          253           20            30            19.5          6 \r\n 1991          254           12.1          28            17.5          0 \r\n 1991          255           20.4          34            20.5          2 \r\n 1991          256           15.8          34            19            1 \r\n 1991          257           13.1          32.5          23            0 \r\n 1991          258           11            31            22            0 \r\n 1991          259           17.9          26.5          16            5 \r\n 1991          260           16.9          28.5          10.5          0 \r\n 1991          261           17.9          23.5          7.5           1 \r\n 1991          262           17            13.5          1.5           0 \r\n 1991          263           19.4          15.5         -0.5           0 \r\n 1991          264           18.6          20            2             0 \r\n 1991          265           6.2           18.5          9.5           0 \r\n 1991          266           18.9          19            4             0 \r\n 1991          267           11            19.5          8.5           0 \r\n 1991          268           16.1          22            6             0 \r\n 1991          269           19.3          17.5          4.5           0 \r\n 1991          270           4.9           14            5             0 \r\n 1991          271           18.4          20            5             0 \r\n 1991          272           16.5          28            8.5           0 \r\n 1991          273           14.5          27            13.5          0 \r\n 1991          274           16.9          26.5          6.5           0 \r\n 1991          275           7.8           25.5          14.5          0 \r\n 1991          276           9.9           21.5          11            6 \r\n 1991          277           1.2           16            9.5           19 \r\n 1991          278           12.1          12            5             28 \r\n 1991          279           16.3          12            1.5           0 \r\n 1991          280           18.3          17           -0.5           0 \r\n 1991          281           15.7          24.5          8.5           0 \r\n 1991          282           14.4          24            9             0 \r\n 1991          283           14            19.5          4             0 \r\n 1991          284           15.6          21            9.5           0 \r\n 1991          285           16.4          18            6.5           0 \r\n 1991          286           8.7           15            3.5           0 \r\n 1991          287           9             12.5          5.5           0 \r\n 1991          288           15.7          11.5         -1             0 \r\n 1991          289           15.7          20.5          0             0 \r\n 1991          290           15.6          25.5          9.5           0 \r\n 1991          291           8.1           20            3             0 \r\n 1991          292           13.5          9.5          -3.5           5 \r\n 1991          293           13.1          14           -1.5           0 \r\n 1991          294           14.4          21            3.5           0 \r\n 1991          295           12            26            11.5          0 \r\n 1991          296           7.2           24.5          14            0 \r\n 1991          297           6             23            17            17 \r\n 1991          298           6.8           21            7             5 \r\n 1991          299           4.8           11.5          8.5           9 \r\n 1991          300           7.5           12            8.5           7 \r\n 1991          301           4.3           18.5          10            2 \r\n 1991          302           5.8           20            4             6 \r\n 1991          303           7.5           5.5           0             2 \r\n 1991          304           4.2           5.5           2             8 \r\n 1991          305           4.9           14.5         -2             30 \r\n 1991          306           8.2          -0.5          -9             8 \r\n 1991          307           8.8          -6.5          -11.5          0 \r\n 1991          308           11.9         -4.5          -13.5          0 \r\n 1991          309           5.9           3.5          -8             0 \r\n 1991          310           6.9           2.5          -8.5           1 \r\n 1991          311           10.1         -5.5          -14.5          2 \r\n 1991          312           10.2         -3.5          -16.5          0 \r\n 1991          313           10.4          2            -11.5          0 \r\n 1991          314           6             2            -5             0 \r\n 1991          315           3.9           2            -1             0 \r\n 1991          316           4.7           3            -0.5           0 \r\n 1991          317           11.6          13.5          1             0 \r\n 1991          318           2.6           13.5          3.5           0 \r\n 1991          319           3             13.5          8             14 \r\n 1991          320           8.6           10            2.5           0 \r\n 1991          321           2.9           12            4             6 \r\n 1991          322           9.5           17.5          10            22 \r\n 1991          323           5             13.5          6.5           0 \r\n 1991          324           10.5          12.5          3             0 \r\n 1991          325           9.1           13.5         -1             0 \r\n 1991          326           6.2           9             0.5           0 \r\n 1991          327           4.8           5            -5.5           8 \r\n 1991          328           6.9          -4.5          -9             2 \r\n 1991          329           8.3          -5            -14            0 \r\n 1991          330           4.5           2.5          -12            0 \r\n 1991          331           7.8           6.5           0             4 \r\n 1991          332           2.2           4             0.5           7 \r\n 1991          333           3.8           15            0.5           13 \r\n 1991          334           5             14           -5             32 \r\n 1991          335           6.1          -2            -9             0 \r\n 1991          336           2.1          -3            -4.5           0 \r\n 1991          337           2.6          -3.5          -13.5          8.89 \r\n 1991          338           3.8          -10.5         -19.5          0.51 \r\n 1991          339           4.4           2.5          -12.5          0 \r\n 1991          340           4.3           4.5          -11.5          0 \r\n 1991          341           3.9           9.5           1             0 \r\n 1991          342           4.3           17            1.5           0 \r\n 1991          343           8.3           8            -2.5           2.79 \r\n 1991          344           9             11.5         -3             0 \r\n 1991          345           9.1           10           -1.5           0 \r\n 1991          346           2.5           17            3             9.4 \r\n 1991          347           8.3           8.5          -3             3.81 \r\n 1991          348           8             4            -4.5           0 \r\n 1991          349           8.1          -1            -8.5           0 \r\n 1991          350           8.9           6.5          -9.5           0 \r\n 1991          351           9.5           3.5          -4             0 \r\n 1991          352           8.8          -1.5          -12.5          0 \r\n 1991          353           5.9          -1            -11.5          0 \r\n 1991          354           1.5           0.5          -2             2.54 \r\n 1991          355           4.1           1.5          -2.5           12.7 \r\n 1991          356           3.5           2            -3             0 \r\n 1991          357           6.6           3.5          -1             10.92 \r\n 1991          358           9.2           6            -3.5           0 \r\n 1991          359           9.3           7            -4.5           0 \r\n 1991          360           9.2           7            -2             0 \r\n 1991          361           2.7           3            -1             0 \r\n 1991          362           3.3           1            -0.5           0 \r\n 1991          363           4.3           2            -1.5           0 \r\n 1991          364           3.4           1            -1             0 \r\n 1991          365           3             1            -0.5           0 \r\n 1992          1             2             0.5          -1.5           0 \r\n 1992          2             2.8           3.5           0.5           3.3 \r\n 1992          3             3.2           6             2             0 \r\n 1992          4             2.7           4.5           0             0 \r\n 1992          5             2.4           2             0             0 \r\n 1992          6             3.1           3.5           1             0 \r\n 1992          7             2.5           5             1.5           0 \r\n 1992          8             2.7           7.5           3.5           1.02 \r\n 1992          9             3.2           5.5          -2.5           0.76 \r\n 1992          10            9.4           1.5          -8             0 \r\n 1992          11            9.8           10.5         -2             0 \r\n 1992          12            2             7             2             0 \r\n 1992          13            3.1           4.5          -2.5           3.05 \r\n 1992          14            7.3          -2            -10            0.76 \r\n 1992          15            5.3          -3            -19            6.86 \r\n 1992          16            4.5           0            -21            0 \r\n 1992          17            7             2.5          -11.5          0 \r\n 1992          18            7.2          -9.5          -17            0 \r\n 1992          19            7.2           4.5          -19            0 \r\n 1992          20            9.6           5            -6             0 \r\n 1992          21            10            9.5          -3             0 \r\n 1992          22            3             5.5           0.5           0 \r\n 1992          23            4.8           4            -3.5           7.37 \r\n 1992          24            9.8          -1.5          -11            0 \r\n 1992          25            4.8          -1            -7.5           5.08 \r\n 1992          26            7             3            -13.5          0 \r\n 1992          27            7.1           2            -5             0 \r\n 1992          28            4.3          -1.5          -5             0 \r\n 1992          29            9.2           6.5          -3.5           0 \r\n 1992          30            7.5           7            -2             0 \r\n 1992          31            9.3           4.5          -1.5           0 \r\n 1992          32            11.8          4.5          -3.5           0 \r\n 1992          33            11.8          11           -2             0 \r\n 1992          34            8.5           16            0.5           0 \r\n 1992          35            11.1          9             0             0 \r\n 1992          36            13            5.5          -5.5           0 \r\n 1992          37            8             5            -2             0 \r\n 1992          38            7.9           2.5          -4             0 \r\n 1992          39            13.2         -3.5          -10.5          0 \r\n 1992          40            8            -2.5          -12.5          0 \r\n 1992          41            3.7           3            -4             0 \r\n 1992          42            7.7           2.5          -4             1.27 \r\n 1992          43            5.9          -1.5          -6.5           0 \r\n 1992          44            4.3           1            -3.5           0 \r\n 1992          45            3.4           1            -0.5           0 \r\n 1992          46            4             2             0             16.26 \r\n 1992          47            6.6           7             0.5           0 \r\n 1992          48            5.4           5             1             0 \r\n 1992          49            3.4           6.5           2.5           10.16 \r\n 1992          50            5.3           3             0.5           2.03 \r\n 1992          51            13.7          12.5         -0.5           0 \r\n 1992          52            11.3          8            -3             0 \r\n 1992          53            13.5          11           -1             0 \r\n 1992          54            11.5          10            1.5           0 \r\n 1992          55            3.8           6.5           1             10.41 \r\n 1992          56            7             1.5          -3             5.33 \r\n 1992          57            10.8          8            -5             0 \r\n 1992          58            7             7.5          -1             0 \r\n 1992          59            10.6          10.5          1.5           0 \r\n 1992          60            17.2          9.75         -0.5           0 \r\n 1992          61            17.3          9            -2.5           0 \r\n 1992          62            12.7          21.5          3.5           0 \r\n 1992          63            12.6          21.5          3             0 \r\n 1992          64            12            17.5          4             0 \r\n 1992          65            4.2           20.5          4             0 \r\n 1992          66            8.4           17.5          11            0.25 \r\n 1992          67            4.6           17.5          9             8.89 \r\n 1992          68            12.4          13.5          9             0 \r\n 1992          69            4.3           18.5          3.5           0.25 \r\n 1992          70            8.8           17           -1             8.89 \r\n 1992          71            10.3          0.5          -8             0 \r\n 1992          72            11.7         -2            -11            2.79 \r\n 1992          73            12.9         -2            -9.5           0 \r\n 1992          74            6.7           1.5          -10.5          0.76 \r\n 1992          75            18.9          2            -4.5           0 \r\n 1992          76            14.6          3.5          -3.5           0 \r\n 1992          77            19.8          12           -4             0 \r\n 1992          78            4             11            2             0 \r\n 1992          79            18.9          7.5           0.5           0 \r\n 1992          80            16.7          8            -2.5           0 \r\n 1992          81            5.1           8.5           0.5           0 \r\n 1992          82            18            10            1             9.91 \r\n 1992          83            22.6          7            -3             0 \r\n 1992          84            22.6          13           -4             0 \r\n 1992          85            17            16.5          1.5           0 \r\n 1992          86            20.5          13.5          5             0 \r\n 1992          87            23            10            1.5           0 \r\n 1992          88            8.1           9.5          -3             0 \r\n 1992          89            5.2           11            1             0.51 \r\n 1992          90            17.8          8.5           4.5           0 \r\n 1992          91            13.9          12            3             0 \r\n 1992          92            11.9          12.5          0.5           0 \r\n 1992          93            22.6          5.5          -2.5           0 \r\n 1992          94            11.9          7            -4             0 \r\n 1992          95            22.9          14           -0.5           0 \r\n 1992          96            23.8          13            0             0 \r\n 1992          97            18.9          15.5         -0.5           0 \r\n 1992          98            17.1          20.5          4.5           0 \r\n 1992          99            13.3          19            8             2 \r\n 1992          100           16.1          17.5          3.5           0 \r\n 1992          101           13.8          16.5          4             0 \r\n 1992          102           8.5           25.5          9             0 \r\n 1992          103           17.4          22.5          5             5 \r\n 1992          104           6.5           9.5          -1             0 \r\n 1992          105           12.3          7.5           0.5           1 \r\n 1992          106           16.3          15            5             1 \r\n 1992          107           5.5           26.5          7.5           0 \r\n 1992          108           6.1           22            10            15 \r\n 1992          109           9.6           11.5          6             2 \r\n 1992          110           7.5           19            7.5           3 \r\n 1992          111           6.1           22            14.5          13 \r\n 1992          112           7.7           20            12.5          23 \r\n 1992          113           13.1          14.5          2.5           13 \r\n 1992          114           4.9           10            1             0 \r\n 1992          115           8.8           10            4             6 \r\n 1992          116           5.7           9.5           4             6 \r\n 1992          117           11.2          8             3.5           0 \r\n 1992          118           26.2          10            4             1 \r\n 1992          119           25.6          12.5          3.5           0 \r\n 1992          120           24.2          17.5          1             0 \r\n 1992          121           26.9          24.5          8.5           3 \r\n 1992          122           26.2          29.5          11.5          0 \r\n 1992          123           22.2          30            16.5          0 \r\n 1992          124           27.2          27.5          15.5          0 \r\n 1992          125           19.8          21.5          9             0 \r\n 1992          126           25.9          20            9             0 \r\n 1992          127           28.7          16.5          4.5           0 \r\n 1992          128           29.6          18            1             0 \r\n 1992          129           30            22            4             0 \r\n 1992          130           29.8          25            5.5           0 \r\n 1992          131           27.8          28.5          7             0 \r\n 1992          132           14.3          29.5          12.5          0 \r\n 1992          133           14.4          26.5          16.5          0 \r\n 1992          134           23.6          25.5          16            3 \r\n 1992          135           16.8          23            10.5          0 \r\n 1992          136           23.3          19.5          12            0 \r\n 1992          137           21.6          24            8.5           0 \r\n 1992          138           20.3          30.5          14.5          0 \r\n 1992          139           29.4          28.5          16.5          0 \r\n 1992          140           26.9          24            13            0 \r\n 1992          141           23.3          28            11.5          0 \r\n 1992          142           12.2          30            14.5          0 \r\n 1992          143           20            27.5          17            0 \r\n 1992          144           6.8           29            19            1 \r\n 1992          145           21.3          26.5          11.5          8 \r\n 1992          146           13.9          13            5.5           0 \r\n 1992          147           16.7          12.5          4             0 \r\n 1992          148           26.8          13.5          6.5           0 \r\n 1992          149           29.5          18.5          2.5           0 \r\n 1992          150           26.4          21.5          4.5           0 \r\n 1992          151           26.2          23            9             0 \r\n 1992          152           29            25            8             0 \r\n 1992          153           18.3          27            8             0 \r\n 1992          154           23.8          27            14.5          0 \r\n 1992          155           23.5          28            15            0 \r\n 1992          156           12.4          28            13            0 \r\n 1992          157           29.3          25.5          18            0 \r\n 1992          158           8.7           28.5          15            0 \r\n 1992          159           29.8          27            14.5          0 \r\n 1992          160           19.3          26            12            4 \r\n 1992          161           16            27.5          12.5          0 \r\n 1992          162           23.2          26            16.5          0 \r\n 1992          163           26.7          28            16.5          0 \r\n 1992          164           28.6          29            14.5          0 \r\n 1992          165           27.1          30.5          14            0 \r\n 1992          166           24.2          32            15            0 \r\n 1992          167           22.8          33            15            0 \r\n 1992          168           13.2          29.5          19            10 \r\n 1992          169           23            30            20.5          7 \r\n 1992          170           25            32.5          23.5          0 \r\n 1992          171           20.1          30            19            0 \r\n 1992          172           22.3          27.5          16.5          0 \r\n 1992          173           31.8          22            10.5          4 \r\n 1992          174           7.9           21            7.5           0 \r\n 1992          175           24.4          20.5          10.5          0 \r\n 1992          176           18.8          26.5          11            3 \r\n 1992          177           24.9          27            13.5          0 \r\n 1992          178           32.2          28            14            0 \r\n 1992          179           30.4          26.5          12.5          0 \r\n 1992          180           28.8          24            10.5          0 \r\n 1992          181           27.3          28.5          12.5          0 \r\n 1992          182           28.1          31            14            0 \r\n 1992          183           23            31.5          17.5          0 \r\n 1992          184           3.5           32            18.5          0 \r\n 1992          185           23.5          29.5          18.5          0 \r\n 1992          186           23.2          24.5          15            28 \r\n 1992          187           15.8          28.5          15.5          0 \r\n 1992          188           29            27.5          17            0 \r\n 1992          189           15.2          26.5          12.5          0 \r\n 1992          190           18.8          28.5          17            53 \r\n 1992          191           9.4           31            21.5          32 \r\n 1992          192           18.7          28.5          19.5          0 \r\n 1992          193           15.6          27            19.5          6 \r\n 1992          194           9.1           27.5          18.5          0 \r\n 1992          195           15            28            20.5          5 \r\n 1992          196           6.6           31            21            20 \r\n 1992          197           21.6          24            18.5          38 \r\n 1992          198           12.4          25.5          16.5          6 \r\n 1992          199           22.8          24.5          17.5          15 \r\n 1992          200           25.4          26            16            0 \r\n 1992          201           25            27            15.5          0 \r\n 1992          202           10.4          29            17.5          0 \r\n 1992          203           15.9          26.5          17.5          0 \r\n 1992          204           7.6           25            14.5          2 \r\n 1992          205           6.8           23.5          15            0 \r\n 1992          206           13.1          22.5          17.5          9 \r\n 1992          207           5.2           23.5          16.5          0 \r\n 1992          208           18            27            19            17 \r\n 1992          209           28.4          28            20            31 \r\n 1992          210           21.3          27.5          17            0 \r\n 1992          211           13.3          29.5          17            0 \r\n 1992          212           4.1           26.5          17            6 \r\n 1992          213           24.6          22            16            23 \r\n 1992          214           26.5          24            15.5          9 \r\n 1992          215           17.8          25.5          13.5          0 \r\n 1992          216           20.4          26            15            0 \r\n 1992          217           25.9          25            14            0 \r\n 1992          218           22.7          24            11.5          0 \r\n 1992          219           22.2          24.5          14.5          3 \r\n 1992          220           4.9           26.5          15.5          0 \r\n 1992          221           22.9          25            17.5          0 \r\n 1992          222           25            31            20            2 \r\n 1992          223           18.8          33            22.5          0 \r\n 1992          224           26.8          32            21            0 \r\n 1992          225           10.1          27.5          15            3 \r\n 1992          226           20.7          24.5          15            0 \r\n 1992          227           18.6          21.5          11            2 \r\n 1992          228           19.9          21.5          11.5          0 \r\n 1992          229           22.5          22            9.5           0 \r\n 1992          230           20.9          23            9.5           0 \r\n 1992          231           13.8          25            10.5          0 \r\n 1992          232           22            25.5          15            3 \r\n 1992          233           23            25.5          12            0 \r\n 1992          234           24.9          25.5          12            0 \r\n 1992          235           19.4          26            11            0 \r\n 1992          236           18.5          28            13            0 \r\n 1992          237           18.8          29            18            0 \r\n 1992          238           17.6          30.5          19            0 \r\n 1992          239           4.7           31            20            0 \r\n 1992          240           12.7          26            16            22 \r\n 1992          241           20.6          20.5          14            6 \r\n 1992          242           20.8          22.5          8.5           0 \r\n 1992          243           21.7          28            13            0 \r\n 1992          244           22.3          26            11            0 \r\n 1992          245           13.3          23.5          9.5           0 \r\n 1992          246           7.9           23.5          12.5          0 \r\n 1992          247           23.7          25.5          17            6 \r\n 1992          248           24            26            15            13 \r\n 1992          249           15.6          27            12            0 \r\n 1992          250           11.9          28.5          17            0 \r\n 1992          251           8.7           25.5          17.5          9 \r\n 1992          252           23.5          25.5          18            0 \r\n 1992          253           2             22.5          9             21 \r\n 1992          254           18.1          20.5          14            16 \r\n 1992          255           22            20.5          9.5           63 \r\n 1992          256           19.8          21            7             0 \r\n 1992          257           19.6          23.5          9.5           0 \r\n 1992          258           7.3           28            14.5          0 \r\n 1992          259           9             26.5          18            0 \r\n 1992          260           15.8          28.5          19            9 \r\n 1992          261           10.3          29.5          21.5          0 \r\n 1992          262           19.3          27.5          19            5 \r\n 1992          263           19.3          24            14.5          11 \r\n 1992          264           3.6           19.5          6             0 \r\n 1992          265           6             17            10            0 \r\n 1992          266           21.1          18.5          14.5          15 \r\n 1992          267           20.4          18            8             0 \r\n 1992          268           20.2          18.5          3             0 \r\n 1992          269           9.4           20.5          5.5           0 \r\n 1992          270           7             22            6.5           0 \r\n 1992          271           19.5          21.5          12            0 \r\n 1992          272           19.4          22.5          8             9 \r\n 1992          273           19.1          19.5          5.5           0 \r\n 1992          274           17.3          18            0.5           0 \r\n 1992          275           19.1          22.5          4.5           0 \r\n 1992          276           19.1          25.5          7.5           0 \r\n 1992          277           17.8          27.5          10            0 \r\n 1992          278           13.6          28            12            0 \r\n 1992          279           17.4          25.5          10.5          0 \r\n 1992          280           14.9          21.5          10            0 \r\n 1992          281           13.5          23            6             0 \r\n 1992          282           6.9           23            8             0 \r\n 1992          283           6.1           18.5          6             1 \r\n 1992          284           11.5          13.5          5.5           3 \r\n 1992          285           16.8          16.5          5             0 \r\n 1992          286           14.8          17.5          4.5           0 \r\n 1992          287           12.2          16.5          6             0 \r\n 1992          288           10.7          18.5          4.5           0 \r\n 1992          289           2.9           19            9             0 \r\n 1992          290           8.2           14.5          8             3 \r\n 1992          291           13.7          8.5           3.5           1 \r\n 1992          292           13.5          10.5         -3             0 \r\n 1992          293           7.5           8            -1             0 \r\n 1992          294           14.2          7            -4.5           0 \r\n 1992          295           12.3          17.5          2             7 \r\n 1992          296           12.7          17.5          2.5           0 \r\n 1992          297           11.7          25.5          10            0 \r\n 1992          298           12.9          26            14.5          0 \r\n 1992          299           13.7          22            7.5           0 \r\n 1992          300           10.3          24            6             0 \r\n 1992          301           14.3          19.5          8.5           0 \r\n 1992          302           11.6          16           -0.5           0 \r\n 1992          303           8             15            2.5           0 \r\n 1992          304           7.1           11.5          2             0 \r\n 1992          305           3.2           11            3             0 \r\n 1992          306           1.1           8.5           3.5           0 \r\n 1992          307           2.5           8             6             18 \r\n 1992          308           4.6           10            3             16 \r\n 1992          309           3.7           4.5           0.5           1 \r\n 1992          310           4             2.5          -0.5           1 \r\n 1992          311           3.9           1.5          -2.5           0 \r\n 1992          312           5.1           0.5          -1.5           0 \r\n 1992          313           6.2           1            -2.5           0 \r\n 1992          314           3.2           9            -1             0 \r\n 1992          315           1.6           12.5          7             2 \r\n 1992          316           4             12.5          7.5           0 \r\n 1992          317           4.9           9             2.5           4 \r\n 1992          318           6.8           7             2             12 \r\n 1992          319           5.4           3.5          -2             4 \r\n 1992          320           5.5           0            -4.5           0 \r\n 1992          321           9.3           2            -4.5           0 \r\n 1992          322           3.9           13.5         -2.5           0 \r\n 1992          323           4.9           8.5           0.5           0 \r\n 1992          324           2.4           6             0             0 \r\n 1992          325           2.2           5.5           2.5           5 \r\n 1992          326           4.2           12.5          5             24 \r\n 1992          327           1.8           12            4             30 \r\n 1992          328           4.2           4.5           2             8 \r\n 1992          329           2.8           4             1             10 \r\n 1992          330           1.2           4             2.5           0 \r\n 1992          331           3.4           4             0.5           6 \r\n 1992          332           9.5           1.5          -3             16 \r\n 1992          333           7.7           1.5          -6.5           0 \r\n 1992          334           9.7           1.5          -8.5           0 \r\n 1992          335           3.7           4            -6             0 \r\n 1992          336           5.6           2            -2.5           0 \r\n 1992          337           4.6           2.5          -4.5           2.03 \r\n 1992          338           5.6           2            -2.5           0 \r\n 1992          339           8.8           1            -5.5           0 \r\n 1992          340           9.2           0.5          -8             0 \r\n 1992          341           2.8          -4            -13            0 \r\n 1992          342           4.9          -2            -9             0.76 \r\n 1992          343           8.9          -2.5          -9.5           0 \r\n 1992          344           2.5           3            -8.5           0 \r\n 1992          345           3             0            -3.5           16.51 \r\n 1992          346           6             2            -2             0 \r\n 1992          347           5.3           1.5          -4             0 \r\n 1992          348           2.7           2.5          -8.5           0 \r\n 1992          349           3.7           1            -3.5           0.51 \r\n 1992          350           2.8           1.5           0             10.92 \r\n 1992          351           3.3           5.5           1             29.46 \r\n 1992          352           3.2           3            -2             0 \r\n 1992          353           2.4          -1            -2.5           0 \r\n 1992          354           4.4           1            -3             0 \r\n 1992          355           9.1           3            -6             0 \r\n 1992          356           8.1          -0.5          -11.5          0 \r\n 1992          357           7.2           3            -6             0 \r\n 1992          358           5.6           6.5          -5.5           0 \r\n 1992          359           7             2            -12            0 \r\n 1992          360           8.9          -4.5          -18            0 \r\n 1992          361           8             0            -10.5          0 \r\n 1992          362           8.7          -1.5          -13.5          0 \r\n 1992          363           6.7           5.5          -5.5           0 \r\n 1992          364           2.1           7            -4.5           6.35 \r\n 1992          365           1.6           5.5           1.5           3.81 \r\n 1992          366           6.8           4            -1.5           3.3 \r\n 1993          1             8.5          -9.5          -17.5          0 \r\n 1993          2             1.8          -1.5          -11            0 \r\n 1993          3             2.6           6.5          -2             6.35 \r\n 1993          4             2.5           6.5          -7.5           14.99 \r\n 1993          5             4.2          -5.5          -11.5          0 \r\n 1993          6             7.7          -4            -11.5          0 \r\n 1993          7             4.3          -2.5          -6.5           0 \r\n 1993          8             5.8          -4            -11            1.27 \r\n 1993          9             3.2          -4            -8.5           0 \r\n 1993          10            6.3          -4.5          -8             5.84 \r\n 1993          11            6.8          -3            -9             0 \r\n 1993          12            5.2           0            -4.5           0 \r\n 1993          13            7.6           0            -6             8.64 \r\n 1993          14            5.5          -4.5          -8             0 \r\n 1993          15            7.3          -4.5          -8.5           0 \r\n 1993          16            8             0            -6             0 \r\n 1993          17            7.4           0            -14            0 \r\n 1993          18            7            -5.5          -16            0 \r\n 1993          19            8.9          -3.5          -13.5          0 \r\n 1993          20            2             0.5          -10.5          0 \r\n 1993          21            4.4           1.5          -1             7.11 \r\n 1993          22            9.4           4.5          -1             0.25 \r\n 1993          23            6.9           6            -1             0 \r\n 1993          24            12.1          2            -8.5           0 \r\n 1993          25            11.5         -1            -9             0 \r\n 1993          26            11.2          5.5          -5             0 \r\n 1993          27            5.7           3.5          -4             0 \r\n 1993          28            6.4           1.5          -8             0 \r\n 1993          29            11           -5            -15.5          0 \r\n 1993          30            12.2          2.5          -12            0 \r\n 1993          31            12.3          8            -2.5           0 \r\n 1993          32            10            4.5          -3             0 \r\n 1993          33            10.3          4            -5             0 \r\n 1993          34            11.8          6.5          -5             0 \r\n 1993          35            13.3          8.5          -4             0 \r\n 1993          36            7.9           3            -4             0 \r\n 1993          37            7.6           0.5          -1.5           0 \r\n 1993          38            10.9          1            -1             0 \r\n 1993          39            5.7           1.5          -1             0 \r\n 1993          40            8             2            -1             0 \r\n 1993          41            9.6           4             0.5           1.27 \r\n 1993          42            3             2.5          -1             0 \r\n 1993          43            5.2          -1            -3             6.86 \r\n 1993          44            6.7          -2            -4.5           1.27 \r\n 1993          45            12.6         -4            -11            0.51 \r\n 1993          46            9.5          -4            -10.5          0 \r\n 1993          47            11.8         -4            -11            0.51 \r\n 1993          48            10.6         -10           -18.5          0 \r\n 1993          49            14.2         -8.5          -19            0 \r\n 1993          50            10           -3.5          -14            0 \r\n 1993          51            6.9          -1            -6             0 \r\n 1993          52            6            -0.5          -3.5           8.64 \r\n 1993          53            8.3          -3            -11            2.29 \r\n 1993          54            11.5         -10           -19.5          0 \r\n 1993          55            12.3         -9            -22.5          0 \r\n 1993          56            4.6          -8            -12.5          0 \r\n 1993          57            13.3         -3            -10.5          4.83 \r\n 1993          58            13.9         -1            -15.5          0 \r\n 1993          59            17.6          3            -15.5          0 \r\n 1993          60            7.2           6.5          -5             0 \r\n 1993          61            1.6           3            -3.5           0 \r\n 1993          62            3.9           3.5           1             15.24 \r\n 1993          63            8.2           3.5           0.5           8.89 \r\n 1993          64            18.2          6.5          -1.5           0 \r\n 1993          65            16.1          8.5          -3             0 \r\n 1993          66            12.2          10           -1             0 \r\n 1993          67            10.1          6             0.5           0 \r\n 1993          68            10.9          5            -1             0 \r\n 1993          69            5.5           3.5          -2             1.52 \r\n 1993          70            12.8         -1            -8.5           0 \r\n 1993          71            17.2         -0.5          -10.5          0 \r\n 1993          72            17.3         -4.5          -12.5          0 \r\n 1993          73            21.7         -4            -15.5          0 \r\n 1993          74            13.7          12           -9             0 \r\n 1993          75            4             9.5          -1.5           0 \r\n 1993          76            19.9          0            -11.5          0 \r\n 1993          77            14.5          0.5          -10            0 \r\n 1993          78            3.9           0.5          -3             2.54 \r\n 1993          79            5.4           3            -0.5           3.05 \r\n 1993          80            6.7           2.5          -1.5           0 \r\n 1993          81            2.4           3             0             20.07 \r\n 1993          82            3.5           2.5           1             35.31 \r\n 1993          83            7.2           5             1             0.51 \r\n 1993          84            14.6          9.5           2             0 \r\n 1993          85            7.5           7.5           2.5           0 \r\n 1993          86            14.9          12            1.5           0 \r\n 1993          87            19.5          14           -1             0 \r\n 1993          88            23.5          19            0.5           0 \r\n 1993          89            11            21            7             0 \r\n 1993          90            3.8           17.5          3.5           13.21 \r\n 1993          91            7.2           4.5          -2.5           10 \r\n 1993          92            18.4          3.5          -5             1 \r\n 1993          93            16.5          7.5          -3             0 \r\n 1993          94            20            9.5          -3             0 \r\n 1993          95            17.3          8.5          -2             0 \r\n 1993          96            18.4          12.5          0             0 \r\n 1993          97            6.2           15            5             2 \r\n 1993          98            5.9           18            9.5           9 \r\n 1993          99            22.2          15.5          4.5           9 \r\n 1993          100           21.9          18.5          1.5           0 \r\n 1993          101           8.5           16            5.5           0 \r\n 1993          102           12.4          10            3             0 \r\n 1993          103           5.9           10            3             0 \r\n 1993          104           4.4           9             5             3 \r\n 1993          105           3.6           6             1             13 \r\n 1993          106           10            8.5           0.5           17 \r\n 1993          107           23.2          17           -2             0 \r\n 1993          108           19.2          19.5          5.5           0 \r\n 1993          109           2.8           19.5          10            12 \r\n 1993          110           8.3           13.5          3             30 \r\n 1993          111           25.4          14            2             2 \r\n 1993          112           19            16            1             0 \r\n 1993          113           15.3          19.5          7.5           0 \r\n 1993          114           20.1          21            13            0 \r\n 1993          115           23.4          20            9.5           0 \r\n 1993          116           26.3          18.5          6.5           0 \r\n 1993          117           9             21            7.5           0 \r\n 1993          118           14.3          21.5          9.5           2 \r\n 1993          119           21.1          22            11.5          27 \r\n 1993          120           22.5          22            7.5           0 \r\n 1993          121           7.2           20            12            9 \r\n 1993          122           9.9           21.5          15            1 \r\n 1993          123           8.1           22            14.5          1 \r\n 1993          124           7.5           21            14            17 \r\n 1993          125           20.3          24            13            5 \r\n 1993          126           8.6           24            15.5          8 \r\n 1993          127           15.4          25.5          16.5          5 \r\n 1993          128           23.4          28.5          18            0 \r\n 1993          129           24            28            17.5          0 \r\n 1993          130           14.5          26.5          17            0 \r\n 1993          131           13.9          27            17.5          3 \r\n 1993          132           24.2          28.5          14.5          10 \r\n 1993          133           28.9          24            5.5           0 \r\n 1993          134           30.2          25.5          9             0 \r\n 1993          135           26.3          24            11            1 \r\n 1993          136           28.4          21            10            1 \r\n 1993          137           18.9          23            7.5           0 \r\n 1993          138           22.2          20            10.5          0 \r\n 1993          139           17.2          17            5.5           0 \r\n 1993          140           17.3          16            6.5           0 \r\n 1993          141           24.3          21            6             0 \r\n 1993          142           8.6           21            9.5           0 \r\n 1993          143           8.4           23.5          13.5          26 \r\n 1993          144           12.5          21            13            2 \r\n 1993          145           21.9          19.5          7.5           0 \r\n 1993          146           29.3          26            8             0 \r\n 1993          147           17.9          26            12            2 \r\n 1993          148           10            24.5          12.5          2 \r\n 1993          149           14.9          19.5          10            8 \r\n 1993          150           9.6           24            14            0 \r\n 1993          151           22.3          21            10            3 \r\n 1993          152           22.1          20            5             0 \r\n 1993          153           7.2           18            9.5           12 \r\n 1993          154           6.8           15.5          12            1 \r\n 1993          155           5.1           14.5          9.5           7 \r\n 1993          156           27            21.5          6             23 \r\n 1993          157           14.4          21            11.5          0 \r\n 1993          158           7.8           23.5          15            0 \r\n 1993          159           19.2          28.5          16.5          32 \r\n 1993          160           29.2          27.5          16.5          25 \r\n 1993          161           27.8          28.5          15            0 \r\n 1993          162           22.6          29            17.5          0 \r\n 1993          163           23.8          28.5          17            0 \r\n 1993          164           12.1          28.5          18.5          0 \r\n 1993          165           29.4          27.5          18.5          0 \r\n 1993          166           26.8          26            12.5          0 \r\n 1993          167           17.9          28            14.5          0 \r\n 1993          168           24.6          32.5          19.5          0 \r\n 1993          169           19.3          31.5          20.5          5 \r\n 1993          170           12.5          27.5          20.5          25 \r\n 1993          171           20.6          26.5          18            13 \r\n 1993          172           31.3          29            15            0 \r\n 1993          173           27.3          31            17            0 \r\n 1993          174           25.8          31.5          19.5          0 \r\n 1993          175           12.5          29.5          20.5          0 \r\n 1993          176           27.8          27.5          16            52 \r\n 1993          177           28            29.5          16.5          0 \r\n 1993          178           29.6          30.5          18            37 \r\n 1993          179           14.2          29            18.5          0 \r\n 1993          180           23.1          27.5          16.5          5 \r\n 1993          181           18            26.5          16            33 \r\n 1993          182           17.7          27            17.5          9 \r\n 1993          183           22.1          30            22            0 \r\n 1993          184           25.5          31.5          22.5          0 \r\n 1993          185           9.4           30            20.5          0 \r\n 1993          186           9             26.5          19.5          38 \r\n 1993          187           12.4          25            18            9 \r\n 1993          188           8.7           24.5          17.5          0 \r\n 1993          189           14.9          28.5          19            10 \r\n 1993          190           22.3          29            20            23 \r\n 1993          191           18.8          29            20            8 \r\n 1993          192           23.1          29            19.5          15 \r\n 1993          193           30            28            15.5          0 \r\n 1993          194           12.6          27            18            0 \r\n 1993          195           14.6          26.5          19            7 \r\n 1993          196           17.8          26.5          20            0 \r\n 1993          197           13.6          25.5          18.5          0 \r\n 1993          198           19.3          31            21            2 \r\n 1993          199           15.7          30.5          21.5          4 \r\n 1993          200           22.9          30            20.5          4 \r\n 1993          201           19.9          27.5          17            0 \r\n 1993          202           20.9          27            17            0 \r\n 1993          203           8.8           24            16.5          4 \r\n 1993          204           10.3          25.5          19.5          31 \r\n 1993          205           10.5          27.5          20            59 \r\n 1993          206           25.3          30.5          20.5          13 \r\n 1993          207           24.7          31            19            0 \r\n 1993          208           22.3          33            21.5          0 \r\n 1993          209           26.1          30.5          21            16 \r\n 1993          210           27.6          28.5          18            0 \r\n 1993          211           28.6          29.5          16            0 \r\n 1993          212           4.1           27            19.5          0 \r\n 1993          213           21            29            18            51 \r\n 1993          214           25.7          27.5          15.5          0 \r\n 1993          215           16            25.5          16            0 \r\n 1993          216           21.2          24            14.5          1 \r\n 1993          217           7.8           22            13            0 \r\n 1993          218           21.3          23            15            8 \r\n 1993          219           22.2          25            12.5          0 \r\n 1993          220           24.5          27            15            0 \r\n 1993          221           15.3          29            18.5          0 \r\n 1993          222           19.7          29            19            55 \r\n 1993          223           23.1          30.5          19.5          0 \r\n 1993          224           11.4          28.5          21            29 \r\n 1993          225           19.8          30            20.5          0 \r\n 1993          226           19.3          31            20            4 \r\n 1993          227           19.2          31.5          20.5          10 \r\n 1993          228           16.5          31.5          20.5          71 \r\n 1993          229           19.8          31            23            16 \r\n 1993          230           13.4          30.5          21            0 \r\n 1993          231           8.5           28.5          22            14 \r\n 1993          232           23.3          27.5          20            0 \r\n 1993          233           19.1          26            17.5          0 \r\n 1993          234           12.5          27            19            0 \r\n 1993          235           19.3          31            22            20 \r\n 1993          236           23.7          32            20            0 \r\n 1993          237           19            31.5          21.5          0 \r\n 1993          238           22.5          33.5          22.5          0 \r\n 1993          239           20.2          31.5          23.5          0 \r\n 1993          240           7.2           26.5          20            0 \r\n 1993          241           11.8          28            20            4 \r\n 1993          242           15            31            21            0 \r\n 1993          243           22.2          24.5          16            20 \r\n 1993          244           22.4          25            12.5          0 \r\n 1993          245           7.5           27            17            7 \r\n 1993          246           18.2          23.5          15.5          14 \r\n 1993          247           22.5          26            12.5          0 \r\n 1993          248           6.7           23            14            0 \r\n 1993          249           20.8          21            12            11 \r\n 1993          250           19.7          23.5          11            0 \r\n 1993          251           18.3          23.5          12            2 \r\n 1993          252           17.5          25            14            0 \r\n 1993          253           19.4          22            9             0 \r\n 1993          254           16.6          22.5          7.5           0 \r\n 1993          255           20.8          30.5          15.5          2 \r\n 1993          256           3.7           28.5          20.5          12 \r\n 1993          257           4             22.5          10            37 \r\n 1993          258           8             14            8             10 \r\n 1993          259           9.6           16            10            0 \r\n 1993          260           18.9          20            7.5           0 \r\n 1993          261           6.5           18            11.5          0 \r\n 1993          262           5.8           18            13.5          2 \r\n 1993          263           10.6          21.5          15            2 \r\n 1993          264           16            21.5          13.5          0 \r\n 1993          265           7.2           22.5          15.5          2 \r\n 1993          266           18.7          20            10.5          0 \r\n 1993          267           14.2          19            7.5           0 \r\n 1993          268           2.3           17.5          10.5          15 \r\n 1993          269           7.9           17            7.5           30 \r\n 1993          270           16.6          15            7             0 \r\n 1993          271           18.3          17.5          7             0 \r\n 1993          272           15.4          15            3             0 \r\n 1993          273           15            18.5          4             0 \r\n 1993          274           13.2          19            11            0 \r\n 1993          275           18.1          15            4.5           0 \r\n 1993          276           18.2          22            4             0 \r\n 1993          277           18.6          22            9.5           0 \r\n 1993          278           17.8          20            3             0 \r\n 1993          279           16.8          27            10.5          0 \r\n 1993          280           17.4          28.5          13.5          0 \r\n 1993          281           7.6           26            13.5          0 \r\n 1993          282           14.2          18            3             5 \r\n 1993          283           16.2          12.5         -1             0 \r\n 1993          284           14.2          13            1             0 \r\n 1993          285           15.5          14            3.5           0 \r\n 1993          286           13.3          15            0.5           0 \r\n 1993          287           7.5           19.5          7             0 \r\n 1993          288           2.8           19.5          11.5          1 \r\n 1993          289           6.2           18            14            1 \r\n 1993          290           7.3           16            10            0 \r\n 1993          291           6.9           13.5          5             0 \r\n 1993          292           8.8           16.5          9.5           4 \r\n 1993          293           3.7           15.5          10.5          0 \r\n 1993          294           14.7          14            2.5           1 \r\n 1993          295           15.1          18            0             0 \r\n 1993          296           14.4          22.5          4.5           0 \r\n 1993          297           14.6          23            6.5           0 \r\n 1993          298           14.1          22            6             0 \r\n 1993          299           6.8           16.5          5.5           0 \r\n 1993          300           8             8.5           3.5           0 \r\n 1993          301           10.4          15.5          3             0 \r\n 1993          302           6             10           -1             0 \r\n 1993          303           6             3            -1             0 \r\n 1993          304           10            4            -5             0 \r\n 1993          305           11.5          8            -6             0 \r\n 1993          306           4.9           9             1.5           0 \r\n 1993          307           11.2          14.5          0.5           0 \r\n 1993          308           10.7          15.5          7.5           0 \r\n 1993          309           3.9           12           -0.5           0 \r\n 1993          310           6             0            -5             0 \r\n 1993          311           11.4          8            -8             0 \r\n 1993          312           12.2          12           -2             0 \r\n 1993          313           11.7          13           -3             0 \r\n 1993          314           11.5          11.5          0             0 \r\n 1993          315           10.4          14            2             0 \r\n 1993          316           2.6           11            1.5           0 \r\n 1993          317           5.3           14            6.5           14 \r\n 1993          318           3.6           7.5           4             0 \r\n 1993          319           4.5           5.5           2             3 \r\n 1993          320           3.4           4             1             0 \r\n 1993          321           7.9           7.5           0.5           2 \r\n 1993          322           5             5.5          -2             0 \r\n 1993          323           10.8          6.5           1.5           0 \r\n 1993          324           9.7           10.5         -3.5           0 \r\n 1993          325           9.4           12.5          1.5           0 \r\n 1993          326           8.6           12.5          0             0 \r\n 1993          327           7.6           13.5          5.5           0 \r\n 1993          328           3             10            3.5           0 \r\n 1993          329           3.6           5.5          -3             7 \r\n 1993          330           9            -2            -9.5           4 \r\n 1993          331           8.7           0            -7.5           0 \r\n 1993          332           5.8          -2            -8             1 \r\n 1993          333           8.2          -1            -7             0 \r\n 1993          334           5.4          -0.5          -8             0 \r\n 1993          335           5.3           6            -3.5           0 \r\n 1993          336           9.8           10.5         -2.5           0.76 \r\n 1993          337           6.3           6            -2             0 \r\n 1993          338           3.1           5             1.5           0 \r\n 1993          339           2.9           5             0             0 \r\n 1993          340           8.8           5.5          -2             0 \r\n 1993          341           6.7           6.5          -4             0 \r\n 1993          342           7.4           6            -4             0 \r\n 1993          343           4.6           12.5          1             0 \r\n 1993          344           3.6           10           -1.5           0 \r\n 1993          345           8.7           1.5          -9             0 \r\n 1993          346           5.4           6            -4.5           0 \r\n 1993          347           2.8           6             1.5           0 \r\n 1993          348           2.3           3.5           1             5.08 \r\n 1993          349           7.8           7.5           1.5           0 \r\n 1993          350           5.2           5.5           1             0 \r\n 1993          351           4             6.5           3             0.51 \r\n 1993          352           3             5.5           1.5           1.52 \r\n 1993          353           6.3           5.5           0.5           0.25 \r\n 1993          354           3.2           3            -3             0 \r\n 1993          355           6.5          -0.5          -6.5           0 \r\n 1993          356           4.5           0            -6.5           0 \r\n 1993          357           7.5          -6            -13            0 \r\n 1993          358           5.4          -6.5          -13            0 \r\n 1993          359           5.1          -6.5          -13            3.05 \r\n 1993          360           3.4          -10.5         -13            0.76 \r\n 1993          361           3.8          -10.5         -13.5          0 \r\n 1993          362           4.8          -10           -18            0 \r\n 1993          363           6.3          -5            -14            0 \r\n 1993          364           3.5          -2.5          -18.5          0 \r\n 1993          365           5.5           4.5          -10            0.51 \r\n 1994          1             7.3           5.5          -1             0 \r\n 1994          2             5.6           1            -2.5           0 \r\n 1994          3             5.2          -0.5          -4.5           6.86 \r\n 1994          4             7.6          -3            -7             0 \r\n 1994          5             2.3          -3            -10            0 \r\n 1994          6             3.8          -0.5          -10.5          0 \r\n 1994          7             7.2          -9            -22            0 \r\n 1994          8             6.8          -12.5         -21.5          0 \r\n 1994          9             4.2          -7            -20            0 \r\n 1994          10            6.2           0.5          -8.5           0 \r\n 1994          11            9.9           1            -11            4.57 \r\n 1994          12            9.6          -2            -6             0 \r\n 1994          13            5.5          -3            -14            0 \r\n 1994          14            6.8          -14           -22            1.02 \r\n 1994          15            7.1          -21.5         -28.5          0 \r\n 1994          16            3.2          -13           -28.5          0 \r\n 1994          17            6.9          -10.5         -24            0.76 \r\n 1994          18            7.4          -22.5         -28.5          0 \r\n 1994          19            5            -14           -29.5          0 \r\n 1994          20            7            -13           -23            2.29 \r\n 1994          21            8.2          -3            -25            0 \r\n 1994          22            9.6           2            -13.5          0 \r\n 1994          23            10.7          4.5          -5             0 \r\n 1994          24            8.2           4            -1.5           0 \r\n 1994          25            4.1           2            -1             0.51 \r\n 1994          26            4.3          -0.5          -4             1.78 \r\n 1994          27            9.4           0.5          -4.5           1.02 \r\n 1994          28            4.5           0            -7             0 \r\n 1994          29            5.4          -3.5          -7.5           2.03 \r\n 1994          30            8.6          -5.5          -13            3.05 \r\n 1994          31            9.5          -11           -23.5          0 \r\n 1994          32            7.3          -8.5          -21.5          0 \r\n 1994          33            5.6          -4            -15.5          0 \r\n 1994          34            10.7         -2            -15.5          0 \r\n 1994          35            12.8         -4            -12            0 \r\n 1994          36            13.5         -2            -11            0 \r\n 1994          37            13.4          0            -9             0 \r\n 1994          38            5.4          -6            -16.5          0 \r\n 1994          39            2.7          -10           -16            0 \r\n 1994          40            7            -10           -17            1.02 \r\n 1994          41            8.7          -5            -21            0 \r\n 1994          42            7.6          -2.5          -15.5          0 \r\n 1994          43            2.6          -4            -8             0 \r\n 1994          44            6.2           1            -13.5          8.64 \r\n 1994          45            6.6           8.5          -6.5           0 \r\n 1994          46            12.3          6            -3.5           0 \r\n 1994          47            10.8          9            -6.5           0 \r\n 1994          48            14.7          14            2             0 \r\n 1994          49            10.5          16            4             0 \r\n 1994          50            2.8           15.5          8.5           0 \r\n 1994          51            9.1           12           -1.5           17.78 \r\n 1994          52            15.5          4            -4             0 \r\n 1994          53            3.6           1            -5.5           0 \r\n 1994          54            4.1          -4.5          -8.5           10.41 \r\n 1994          55            4.7          -6.5          -16            2.54 \r\n 1994          56            4.9          -5.5          -13.5          6.35 \r\n 1994          57            6.1          -6.5          -17            1.27 \r\n 1994          58            7.2          -4.5          -18            0 \r\n 1994          59            7.1           0            -7             0 \r\n 1994          60            8.9           0.5          -4.5           0 \r\n 1994          61            7.9           1.5          -7             0 \r\n 1994          62            11.5          8            -6             0 \r\n 1994          63            16.9          9.5           1             0 \r\n 1994          64            15.9          14           -2             0 \r\n 1994          65            11.9          13.5          2             0 \r\n 1994          66            16.6          9            -1             0.51 \r\n 1994          67            15.6          4            -4             0 \r\n 1994          68            17.9          2.5          -5             0 \r\n 1994          69            12.7          5            -5             0 \r\n 1994          70            16.7          6.5          -5.5           0 \r\n 1994          71            13.8          13.5          0             0 \r\n 1994          72            12.8          11           -2.5           0 \r\n 1994          73            12.2          16           -2.5           0 \r\n 1994          74            17.2          13            0             0 \r\n 1994          75            20.3          8.5          -4.5           0 \r\n 1994          76            15.8          10           -1.5           0 \r\n 1994          77            19.3          12            1             0 \r\n 1994          78            9.5           13.5         -2             0 \r\n 1994          79            11.7          17            4.5           0 \r\n 1994          80            21.3          15.5          3.5           4.06 \r\n 1994          81            20.6          24            4.5           0 \r\n 1994          82            13.9          25.5          7             0 \r\n 1994          83            17.7          18.5         -0.5           0.51 \r\n 1994          84            18.7          8.5          -3             0 \r\n 1994          85            5.3           6.5           2.5           0 \r\n 1994          86            16.7          10.5          1             5.33 \r\n 1994          87            8.3           7.5          -1             0 \r\n 1994          88            13.5          6            -4             0 \r\n 1994          89            15.2          6.5          -4             0 \r\n 1994          90            23.3          14.5         -3.5           0 \r\n 1994          91            22.9          21            1             0 \r\n 1994          92            13.8          18            3.5           0 \r\n 1994          93            22            13           -2             0 \r\n 1994          94            17.9          18.5          2             0 \r\n 1994          95            7.5           15.5          1             0 \r\n 1994          96            20.4          7.5          -2.5           0 \r\n 1994          97            21.7          12           -5             0 \r\n 1994          98            10.6          17            3             0 \r\n 1994          99            11.4          17            5.5           0 \r\n 1994          100           21.4          16.5          6             0 \r\n 1994          101           6.2           14            6             0 \r\n 1994          102           6.7           11.5          5             7 \r\n 1994          103           12.5          14            5.5           6 \r\n 1994          104           25.1          23.5          4.5           0 \r\n 1994          105           13.2          23            7.5           19 \r\n 1994          106           24.9          19.5          5             0 \r\n 1994          107           23.6          22.5          4.5           0 \r\n 1994          108           26            29            11.5          0 \r\n 1994          109           26.3          26.5          10            0 \r\n 1994          110           13.3          19.5          4             0 \r\n 1994          111           19.2          17            5.5           4 \r\n 1994          112           26.8          18            3.5           0 \r\n 1994          113           26.8          22            3.5           0 \r\n 1994          114           16            28.5          12.5          0 \r\n 1994          115           18.9          29.5          16.5          0 \r\n 1994          116           23.9          29            16.5          3 \r\n 1994          117           19.1          22            5             0 \r\n 1994          118           6.1           12            3             0 \r\n 1994          119           20.8          12            1.5           5 \r\n 1994          120           8             9.5           1             10 \r\n 1994          121           22.8          13            1             15 \r\n 1994          122           22.1          16.5          3             0 \r\n 1994          123           24.6          19            5             0 \r\n 1994          124           14.4          19.5          6             0 \r\n 1994          125           18            22            7             0 \r\n 1994          126           8.5           13            7.5           13 \r\n 1994          127           13.4          15.5          7             7 \r\n 1994          128           20.2          18            5             0 \r\n 1994          129           27.6          21.5          9.5           0 \r\n 1994          130           29.4          25            7.5           0 \r\n 1994          131           17.8          27            14.5          0 \r\n 1994          132           27.5          25            9.5           0 \r\n 1994          133           26.9          25.5          10.5          0 \r\n 1994          134           7.3           22            12.5          0 \r\n 1994          135           28.7          23.5          12            13 \r\n 1994          136           29.4          24            8.5           0 \r\n 1994          137           28.7          23.5          8.5           0 \r\n 1994          138           28.2          24.5          8.5           0 \r\n 1994          139           29            25.5          7.5           0 \r\n 1994          140           29.3          27.5          10            0 \r\n 1994          141           29.2          29            12            0 \r\n 1994          142           28            30.5          14            0 \r\n 1994          143           24.6          31            16            0 \r\n 1994          144           18.3          27            15            12 \r\n 1994          145           20.8          27            14.5          6 \r\n 1994          146           24.8          19.5          10.5          8 \r\n 1994          147           28.7          21            6.5           0 \r\n 1994          148           29.5          25.5          10            0 \r\n 1994          149           17.2          27            16            0 \r\n 1994          150           27.2          30.5          16            0 \r\n 1994          151           24.3          29            18.5          0 \r\n 1994          152           14.3          27            11.5          0 \r\n 1994          153           9.8           18.5          9.5           11 \r\n 1994          154           28.3          23.5          13            6 \r\n 1994          155           28.5          27.5          11            0 \r\n 1994          156           19            27.5          16            0 \r\n 1994          157           25.7          31.5          18            0 \r\n 1994          158           24.1          32            18            0 \r\n 1994          159           11.7          24.5          12.5          21 \r\n 1994          160           28.1          23.5          12            0 \r\n 1994          161           26.6          26            13.5          5 \r\n 1994          162           28.5          27.5          13            5 \r\n 1994          163           14.6          27            15.5          0 \r\n 1994          164           25.1          32            18.5          12 \r\n 1994          165           25.6          33            23            0 \r\n 1994          166           26.4          33            24            0 \r\n 1994          167           26.5          33.5          22            0 \r\n 1994          168           26.6          34            21.5          0 \r\n 1994          169           23.9          34            21.5          0 \r\n 1994          170           23.3          33.5          21.5          21 \r\n 1994          171           19.8          33.5          21.5          0 \r\n 1994          172           23.4          30.5          20            2 \r\n 1994          173           23.2          30            18            0 \r\n 1994          174           7.9           28.5          19.5          20 \r\n 1994          175           22.6          26.5          16            18 \r\n 1994          176           22.7          28.5          16            0 \r\n 1994          177           22            27.5          17.5          3 \r\n 1994          178           24.1          27.5          16.5          5 \r\n 1994          179           25.4          28.5          18.5          0 \r\n 1994          180           21.9          26.5          18            0 \r\n 1994          181           25.5          29            16            0 \r\n 1994          182           22.9          30.5          18.5          0 \r\n 1994          183           11.5          28            17            6 \r\n 1994          184           14.2          24            14            2 \r\n 1994          185           21.8          31            20            0 \r\n 1994          186           26.3          33.5          24.5          0 \r\n 1994          187           22.3          32            22            0 \r\n 1994          188           24.8          32            21.5          0 \r\n 1994          189           14            29.5          17            0 \r\n 1994          190           16.8          24            16            13 \r\n 1994          191           27.8          26            14.5          0 \r\n 1994          192           24.5          30.5          16.5          0 \r\n 1994          193           25.7          31.5          20            0 \r\n 1994          194           17.1          28.5          19            0 \r\n 1994          195           13.9          25.5          19.5          19 \r\n 1994          196           27.5          27.5          15            0 \r\n 1994          197           9.8           27.5          17.5          0 \r\n 1994          198           22            28            18            5 \r\n 1994          199           28            30            16            0 \r\n 1994          200           21.7          32            20            0 \r\n 1994          201           11.5          31            20.5          0 \r\n 1994          202           24            29            18.5          0 \r\n 1994          203           22.8          27.5          17            4 \r\n 1994          204           27            29            17.5          0 \r\n 1994          205           17.5          28            18.5          0 \r\n 1994          206           22            27.5          14.5          0 \r\n 1994          207           20.6          26            13.5          0 \r\n 1994          208           21.4          24.5          14            0 \r\n 1994          209           23.3          26            13            0 \r\n 1994          210           23.9          27.5          14.5          0 \r\n 1994          211           25.2          28.5          14.5          0 \r\n 1994          212           23.2          30            17            0 \r\n 1994          213           21.2          31            19            0 \r\n 1994          214           18.7          28.5          19            0 \r\n 1994          215           11.4          28            19.5          0 \r\n 1994          216           16.7          27.5          18.5          22 \r\n 1994          217           25.4          24.5          10.5          0 \r\n 1994          218           23            23            11            0 \r\n 1994          219           21            27            13.5          0 \r\n 1994          220           20.9          29.5          18.5          0 \r\n 1994          221           16.6          26.5          14            0 \r\n 1994          222           7             24            16            0 \r\n 1994          223           9.8           24            15            1 \r\n 1994          224           6.4           22.5          17            0 \r\n 1994          225           8.4           27            20.5          4 \r\n 1994          226           26.2          26            12            3 \r\n 1994          227           23            25            10.5          0 \r\n 1994          228           24.5          27            12.5          0 \r\n 1994          229           23.2          30.5          15.5          0 \r\n 1994          230           20.3          30.5          18.5          4 \r\n 1994          231           20.4          31.5          18.5          0 \r\n 1994          232           16.5          29            15.5          0 \r\n 1994          233           21            25.5          13.5          0 \r\n 1994          234           21.4          26.5          12.5          0 \r\n 1994          235           20.4          28.5          16.5          0 \r\n 1994          236           23.5          32.5          19.5          0 \r\n 1994          237           11            31.5          20            0 \r\n 1994          238           22.8          30.5          19            10 \r\n 1994          239           19.5          33            20            0 \r\n 1994          240           8.4           30            17            0 \r\n 1994          241           19.6          25.5          11            0 \r\n 1994          242           4.1           25            15.5          18 \r\n 1994          243           5             22.5          14            20 \r\n 1994          244           18.4          22            10            0 \r\n 1994          245           15.8          22            12            0 \r\n 1994          246           18.1          23.5          13.5          0 \r\n 1994          247           3.9           21.5          14            0 \r\n 1994          248           10            21            14.5          16 \r\n 1994          249           20.5          25            12.5          0 \r\n 1994          250           20.2          26.5          10            0 \r\n 1994          251           17.9          27.5          13            0 \r\n 1994          252           18.6          29.5          14.5          0 \r\n 1994          253           20.1          31            16            0 \r\n 1994          254           20.2          30            16            0 \r\n 1994          255           17.3          30.5          16.5          0 \r\n 1994          256           19            31.5          17.5          0 \r\n 1994          257           19.9          33            20.5          0 \r\n 1994          258           16.6          32.5          20.5          0 \r\n 1994          259           17.8          29            18            3 \r\n 1994          260           17.1          24.5          13            0 \r\n 1994          261           20.7          27.5          11.5          0 \r\n 1994          262           21.1          29            12            0 \r\n 1994          263           18            29            13            0 \r\n 1994          264           17            29            14            0 \r\n 1994          265           4.7           24            12            10 \r\n 1994          266           12.6          16.5          7             4 \r\n 1994          267           9.4           17.5          8             0 \r\n 1994          268           8.5           20            11.5          0 \r\n 1994          269           5.8           17.5          10            10 \r\n 1994          270           8.3           16            9.5           0 \r\n 1994          271           19.8          20            7.5           0 \r\n 1994          272           18.5          24            6.5           0 \r\n 1994          273           15.2          30.5          11.5          0 \r\n 1994          274           9.4           27.5          14.5          0 \r\n 1994          275           14.4          21            11.5          0 \r\n 1994          276           5.2           18.5          10.5          0 \r\n 1994          277           11.3          18.5          11.5          2 \r\n 1994          278           14.3          21.5          11            0 \r\n 1994          279           12.1          25.5          12.5          0 \r\n 1994          280           9.4           26            15            4 \r\n 1994          281           5.3           19.5          10            3 \r\n 1994          282           17.2          16            4             5 \r\n 1994          283           16.6          17            1.5           0 \r\n 1994          284           17.2          18.5          2.5           0 \r\n 1994          285           14.3          20            3             0 \r\n 1994          286           12.3          20            5.5           0 \r\n 1994          287           6.6           19            6.5           0 \r\n 1994          288           4.2           20            12.5          0 \r\n 1994          289           6.6           21.5          13.5          0 \r\n 1994          290           8.4           25            16.5          0 \r\n 1994          291           5             23            17.5          4 \r\n 1994          292           15.4          21.5          10            0 \r\n 1994          293           15.1          20            7             0 \r\n 1994          294           11.8          23.5          6.5           0 \r\n 1994          295           10.4          23.5          8             0 \r\n 1994          296           14            18.5          5             0 \r\n 1994          297           12.5          13            6.5           0 \r\n 1994          298           7             8.5           1.5           0 \r\n 1994          299           11.5          11.5          3             0 \r\n 1994          300           11.1          16.5          1             0 \r\n 1994          301           9             18.5          5.5           0 \r\n 1994          302           5.9           17            9             0 \r\n 1994          303           3.2           14            1             0 \r\n 1994          304           2.6           11.5          5             18 \r\n 1994          305           10.7          12.5         -0.5           9 \r\n 1994          306           11.9          17            4.5           0 \r\n 1994          307           4.3           21            11.5          0 \r\n 1994          308           1.1           17            8.5           6 \r\n 1994          309           1.3           10.5          8.5           9 \r\n 1994          310           13.1          12.5          3             12 \r\n 1994          311           12.3          16.5          3             0 \r\n 1994          312           2.9           15.5          7.5           0 \r\n 1994          313           3.1           12.5          5             15 \r\n 1994          314           12.2          11           -0.5           4 \r\n 1994          315           10.9          13.5          0.5           0 \r\n 1994          316           6.9           13            2.5           0 \r\n 1994          317           2.6           15            7.5           0 \r\n 1994          318           8.2           15            5.5           11 \r\n 1994          319           9.8           10.5          0.5           0 \r\n 1994          320           11.1          11.5         -3             0 \r\n 1994          321           4.4           9.5           2             0 \r\n 1994          322           10.1          10.5          3             0 \r\n 1994          323           4.6           6.5          -4             0 \r\n 1994          324           1.2           9             2.5           0 \r\n 1994          325           8.5           10            3.5           19 \r\n 1994          326           8.6           5            -4             0 \r\n 1994          327           11.1          7            -3             0 \r\n 1994          328           9.4           10           -2             0 \r\n 1994          329           10.2          9.5          -2.5           0 \r\n 1994          330           7.7           8.5          -1             0 \r\n 1994          331           4.2           15            1.5           11 \r\n 1994          332           6.3           8            -1             18 \r\n 1994          333           5.8           2            -5             0 \r\n 1994          334           9.3           6            -5.5           0 \r\n 1994          335           8.5           13.5         -0.5           0 \r\n 1994          336           8.8           14.5          2.5           0 \r\n 1994          337           4.6           13.5          6             0 \r\n 1994          338           2.5           13.5          2             0 \r\n 1994          339           2.2           12.5         -0.5           3.56 \r\n 1994          340           2             0            -2.5           0 \r\n 1994          341           6.3           0            -3.5           29.97 \r\n 1994          342           2.6          -0.5          -4             0 \r\n 1994          343           3.7          -0.5          -4.5           0 \r\n 1994          344           4            -3.5          -9             0 \r\n 1994          345           6.9          -6.5          -16            0 \r\n 1994          346           5.5          -3            -11.5          0 \r\n 1994          347           3.6          -2.5          -10            0 \r\n 1994          348           2.9          -2.5          -6.5           0 \r\n 1994          349           2.4           1.5          -3.5           2.54 \r\n 1994          350           1.1           2            -1.5           0 \r\n 1994          351           8.5           5            -2             0 \r\n 1994          352           4.9           2            -8             0 \r\n 1994          353           7.5           4            -7             0 \r\n 1994          354           4.6           7             0             0 \r\n 1994          355           6.7           9.5           2.5           0 \r\n 1994          356           4.5           7             0             0 \r\n 1994          357           7.2           6            -0.5           0 \r\n 1994          358           5.1           4            -2             0 \r\n 1994          359           9.2           8            -6             0 \r\n 1994          360           9.3           10.5         -5             0 \r\n 1994          361           9.2           12.5         -2             0 \r\n 1994          362           2.1           7.5          -0.5           0 \r\n 1994          363           3.3           3            -3             0 \r\n 1994          364           6.2           3.5          -4             0 \r\n 1994          365           2.7           1.5          -4.5           0 \r\n 1995          1             6.1          -3.5          -12.5          3.81 \r\n 1995          2             5.9          -7            -16            0 \r\n 1995          3             6.4          -8.5          -16.5          0 \r\n 1995          4             7.1          -14           -21.5          0 \r\n 1995          5             7            -6.5          -22            0 \r\n 1995          6             3            -3            -9.5           7.37 \r\n 1995          7             5.8          -3            -15.5          2.03 \r\n 1995          8             5.8          -8.5          -16            0 \r\n 1995          9             4            -6.5          -15            0 \r\n 1995          10            4.6          -3            -8.5           0 \r\n 1995          11            5.7           1            -3.5           0 \r\n 1995          12            4.9           3             0.5           2.03 \r\n 1995          13            2.9           2.5           0             0 \r\n 1995          14            4.1           2            -2             7.62 \r\n 1995          15            4.1          -1            -5             0 \r\n 1995          16            4.3           0.5          -3             0 \r\n 1995          17            7.5           7.5          -1             0 \r\n 1995          18            8.9           3            -5.5           0 \r\n 1995          19            1.5          -1            -4             0 \r\n 1995          20            3.9          -1.5          -8             20.32 \r\n 1995          21            5.7          -5            -10            0 \r\n 1995          22            5.7          -5.5          -10            0.76 \r\n 1995          23            6.3          -6.5          -11            0 \r\n 1995          24            8.8          -4            -16            0 \r\n 1995          25            9.4          -2            -15.5          0 \r\n 1995          26            9.8          -1.5          -16.5          0 \r\n 1995          27            2.2           0            -10            0 \r\n 1995          28            6.5           0.5          -4.5           13.21 \r\n 1995          29            10.3         -0.5          -10.5          0 \r\n 1995          30            8.5          -2.5          -7.5           0 \r\n 1995          31            11.6          4            -5.5           0 \r\n 1995          32            7.9           4            -2             0 \r\n 1995          33            9.9           4            -0.5           0 \r\n 1995          34            3.7           2            -2.5           0 \r\n 1995          35            10            0            -9.5           0 \r\n 1995          36            11.6         -6.5          -14            0 \r\n 1995          37            10.3         -6.5          -17.5          0 \r\n 1995          38            7.5          -6.5          -12.5          0.25 \r\n 1995          39            10.5         -5.5          -16            0 \r\n 1995          40            10.9          5            -10            0 \r\n 1995          41            13.4          3            -7             0 \r\n 1995          42            10.9         -6            -17            0 \r\n 1995          43            12.8         -7            -19            0 \r\n 1995          44            12.5         -4.5          -12.5          0 \r\n 1995          45            5.5          -2            -11.5          0 \r\n 1995          46            6.2           1            -9             0 \r\n 1995          47            10.9          1.5          -13            0 \r\n 1995          48            11.6          8            -9.5           0 \r\n 1995          49            13.8          12.5         -2.5           0 \r\n 1995          50            15.4          10           -1.5           0 \r\n 1995          51            15.6          11            0             0 \r\n 1995          52            7.8           4.5          -5             0 \r\n 1995          53            10.7          12           -1.5           0 \r\n 1995          54            14.2          10.5         -0.5           0 \r\n 1995          55            12.8          6            -5             0 \r\n 1995          56            16.3          12.5         -1             0 \r\n 1995          57            5.3           8            -1             0 \r\n 1995          58            5.1           0.5          -1.5           12.7 \r\n 1995          59            13.5          0.5          -5.5           0 \r\n 1995          60            15.6         -4            -12.5          0 \r\n 1995          61            16.6         -3.5          -13            0 \r\n 1995          62            15.9          1.5          -12.5          0 \r\n 1995          63            12.6          5.5          -8             0 \r\n 1995          64            4.5           3.5          -0.5           10.16 \r\n 1995          65            2.7           1.5          -0.5           0 \r\n 1995          66            5.8           0            -7.5           3.81 \r\n 1995          67            9.6          -5.5          -16.5          0 \r\n 1995          68            10.1          0            -15            0 \r\n 1995          69            15            12           -4.5           0 \r\n 1995          70            17.5          18            2             0 \r\n 1995          71            18            21.5          6             0 \r\n 1995          72            11.4          23            11.5          0 \r\n 1995          73            14.8          23.5          7.5           0 \r\n 1995          74            18.1          24            5             0 \r\n 1995          75            18.1          23            5.5           0 \r\n 1995          76            15.1          22            6             0 \r\n 1995          77            9.9           19            3             0 \r\n 1995          78            12.3          16.5          4             0 \r\n 1995          79            4.4           13.5          5             5.08 \r\n 1995          80            15            11.5         -1             0 \r\n 1995          81            10.7          12            0.5           0 \r\n 1995          82            10.1          9.5           2.5           3.81 \r\n 1995          83            21.6          12           -2             0 \r\n 1995          84            16.3          17            1.5           0 \r\n 1995          85            8             15            4.5           8.13 \r\n 1995          86            6.4           11            4             3.3 \r\n 1995          87            5.7           6.5           3.5           0.51 \r\n 1995          88            9.8           8.5           2.5           0.25 \r\n 1995          89            8.2           6.5           0             0 \r\n 1995          90            7.8           4             0             0 \r\n 1995          91            14.6          10           -3             0 \r\n 1995          92            21.4          17.5         -2.5           0 \r\n 1995          93            18.3          19.5          4.5           2 \r\n 1995          94            22.3          14.5         -7.5           0 \r\n 1995          95            19.3          13           -3.5           0 \r\n 1995          96            22.2          18            5             0 \r\n 1995          97            10.5          19.5          4.5           0 \r\n 1995          98            11            16.5          4.5           9 \r\n 1995          99            8             11.5          2             27 \r\n 1995          100           2.9           5             0.5           15 \r\n 1995          101           5.3           12            2             33 \r\n 1995          102           4.9           8.5           2             12 \r\n 1995          103           24.4          15.5          1             0 \r\n 1995          104           14.6          16            3.5           0 \r\n 1995          105           16.1          22.5          7             0 \r\n 1995          106           10.3          21.5          6.5           0 \r\n 1995          107           10.4          16.5          8             0 \r\n 1995          108           16.5          19.5          8.5           18 \r\n 1995          109           21.7          15.5          3.5           8 \r\n 1995          110           6             13.5          5.5           0 \r\n 1995          111           7.7           12            5             0 \r\n 1995          112           23.8          15            1             0 \r\n 1995          113           12.1          15.5          5             0 \r\n 1995          114           13.9          14            2             0 \r\n 1995          115           17.4          17.5          1             2 \r\n 1995          116           3.1           13            7             17 \r\n 1995          117           19.6          12            3.5           26 \r\n 1995          118           19.6          17            4             0 \r\n 1995          119           8.2           16.5          8.5           0 \r\n 1995          120           17.3          14.5          5.5           5 \r\n 1995          121           10.8          13            5             0 \r\n 1995          122           16.9          15.5          6             0 \r\n 1995          123           10.1          15            7.5           0 \r\n 1995          124           8.6           13.5          8             2 \r\n 1995          125           24.2          19.5          6             2 \r\n 1995          126           20.6          22            8.5           0 \r\n 1995          127           20.3          24            11            0 \r\n 1995          128           5.5           23            13            49 \r\n 1995          129           15            22.5          14            3 \r\n 1995          130           7.1           17            11            7 \r\n 1995          131           18.8          17.5          10            0 \r\n 1995          132           18.5          19.5          7             0 \r\n 1995          133           11.7          23.5          12.5          18 \r\n 1995          134           22.7          23.5          12            17 \r\n 1995          135           29.2          23.5          6.5           0 \r\n 1995          136           14.1          26.5          13            0 \r\n 1995          137           18.6          21.5          12            3 \r\n 1995          138           18.9          17.5          9             2 \r\n 1995          139           29.9          22            7             0 \r\n 1995          140           27.9          22.5          12            0 \r\n 1995          141           30.4          23            8             0 \r\n 1995          142           18.9          25            11.5          0 \r\n 1995          143           5.5           20            11            31 \r\n 1995          144           11.3          15.5          10.5          24 \r\n 1995          145           27            19            10            0 \r\n 1995          146           22.9          20            9.5           0 \r\n 1995          147           2.6           19.5          12.5          7 \r\n 1995          148           6.8           19            13.5          24 \r\n 1995          149           29.2          22            11            0 \r\n 1995          150           29.8          26            10.5          0 \r\n 1995          151           15.7          26            13            0 \r\n 1995          152           10.5          24.5          15.5          1 \r\n 1995          153           12.9          23.5          16            38 \r\n 1995          154           27.3          26.5          14.5          11 \r\n 1995          155           16.5          27            16            0 \r\n 1995          156           19.6          28.5          17            0 \r\n 1995          157           24.4          29.5          19            0 \r\n 1995          158           20.5          31            20            0 \r\n 1995          159           7.7           29            12            0 \r\n 1995          160           9.2           19.5          12            7 \r\n 1995          161           22            23.5          16.5          6 \r\n 1995          162           26.9          23            14            0 \r\n 1995          163           29.2          24            13            0 \r\n 1995          164           29.7          27            11.5          0 \r\n 1995          165           28.9          28            14            0 \r\n 1995          166           30            30            16            0 \r\n 1995          167           23.8          31            19            0 \r\n 1995          168           22.2          32            21            0 \r\n 1995          169           22.7          31.5          20.5          0 \r\n 1995          170           24.4          33            19            0 \r\n 1995          171           28.1          34            19.5          0 \r\n 1995          172           26.2          34.5          22            0 \r\n 1995          173           29.6          33.5          19.5          0 \r\n 1995          174           24.1          33            21            0 \r\n 1995          175           20.9          32            19.5          14 \r\n 1995          176           11            29.5          19            0 \r\n 1995          177           9.9           26.5          18.5          9 \r\n 1995          178           10.5          26.5          17.5          11 \r\n 1995          179           16.3          25.5          19.5          4 \r\n 1995          180           19.1          27            18.5          2 \r\n 1995          181           25.8          25.5          16.5          0 \r\n 1995          182           26.4          22.5          11.5          0 \r\n 1995          183           28.1          25            11            0 \r\n 1995          184           17.9          26.5          15            0 \r\n 1995          185           15.3          27.5          18            29 \r\n 1995          186           16.1          28            18            27 \r\n 1995          187           26.9          26            16            1 \r\n 1995          188           25.5          26.5          14.5          0 \r\n 1995          189           22            28.5          14.5          0 \r\n 1995          190           28.9          29            18            0 \r\n 1995          191           26.4          31            17            0 \r\n 1995          192           26.3          33            20            0 \r\n 1995          193           24.6          35.5          23.5          0 \r\n 1995          194           26.5          37.5          25            0 \r\n 1995          195           28.3          36.5          25.5          0 \r\n 1995          196           22.8          35.5          24.5          0 \r\n 1995          197           20.3          32.5          22            0 \r\n 1995          198           29.4          29.5          19.5          0 \r\n 1995          199           26.9          29            18            0 \r\n 1995          200           21.4          31            16.5          0 \r\n 1995          201           16.7          29.5          18.5          3 \r\n 1995          202           27.7          30.5          17            0 \r\n 1995          203           16.4          29.5          20            0 \r\n 1995          204           24.3          30            19.5          4 \r\n 1995          205           19.7          30.5          19.5          0 \r\n 1995          206           17.3          31            18.5          0 \r\n 1995          207           26.8          30.5          18.5          6 \r\n 1995          208           22.5          32            19            0 \r\n 1995          209           28.6          32            19.5          4 \r\n 1995          210           28.7          33.5          19.5          0 \r\n 1995          211           27.5          33.5          22            0 \r\n 1995          212           22.7          33.5          22.5          0 \r\n 1995          213           13.8          29.5          19            3 \r\n 1995          214           7.3           25            21            0 \r\n 1995          215           10.8          27            22.5          11 \r\n 1995          216           19.1          29.5          21.5          2 \r\n 1995          217           22.9          30            20.5          0 \r\n 1995          218           12.2          29.5          21            0 \r\n 1995          219           21.7          31            21.5          0 \r\n 1995          220           15.1          29.5          21.5          15 \r\n 1995          221           21.8          32.5          22            14 \r\n 1995          222           13.6          33            21.5          38 \r\n 1995          223           26.7          33            22.5          0 \r\n 1995          224           26.4          34.5          23            0 \r\n 1995          225           25.1          34            24.5          0 \r\n 1995          226           19.5          32.5          24            0 \r\n 1995          227           14.9          30            20            11 \r\n 1995          228           12            30            21            7 \r\n 1995          229           20.1          33            22.5          2 \r\n 1995          230           22.2          34            23            0 \r\n 1995          231           16.7          32            23            0 \r\n 1995          232           24.3          28.5          17            0 \r\n 1995          233           25.5          30            17.5          0 \r\n 1995          234           20.7          31            16            0 \r\n 1995          235           19.4          31            19.5          0 \r\n 1995          236           24            31.5          19.5          0 \r\n 1995          237           24            31            18.5          0 \r\n 1995          238           21.7          32            20            0 \r\n 1995          239           20.9          33.5          21            0 \r\n 1995          240           18.8          33.5          22            0 \r\n 1995          241           19.1          33.5          21.5          0 \r\n 1995          242           20.4          34            21.5          0 \r\n 1995          243           16.1          32            21            0 \r\n 1995          244           24.3          28            15.5          0 \r\n 1995          245           14.7          27            13            0 \r\n 1995          246           21.3          29.5          15            0 \r\n 1995          247           23            30            16            0 \r\n 1995          248           18            30.5          17.5          0 \r\n 1995          249           6.7           27.5          20            0 \r\n 1995          250           5.3           23.5          13.5          4 \r\n 1995          251           20.5          20            11            0 \r\n 1995          252           23.3          21            7.5           0 \r\n 1995          253           18            21.5          8             0 \r\n 1995          254           17.5          24.5          8.5           0 \r\n 1995          255           5.8           21.5          14            0 \r\n 1995          256           21.4          28.5          14.5          5 \r\n 1995          257           20.6          27.5          13.5          0 \r\n 1995          258           20.7          27.5          12            0 \r\n 1995          259           15.7          27            15.5          0 \r\n 1995          260           21.4          24            10            0 \r\n 1995          261           10.9          22.5          10.5          0 \r\n 1995          262           2.9           19.5          12.5          0 \r\n 1995          263           8.3           14            10            15 \r\n 1995          264           5.5           12            6             5 \r\n 1995          265           17.3          11            0.5           10 \r\n 1995          266           18.4          14.5          0.5           0 \r\n 1995          267           8.6           17            2.5           0 \r\n 1995          268           18.5          20            6.5           0 \r\n 1995          269           19.1          24.5          7.5           0 \r\n 1995          270           18.7          27            9.5           0 \r\n 1995          271           19.3          26.5          10            0 \r\n 1995          272           3.4           23            14.5          0 \r\n 1995          273           6.9           25            17            14 \r\n 1995          274           19.3          24            12            9 \r\n 1995          275           12.2          26            10            0 \r\n 1995          276           16.5          23            11.5          0 \r\n 1995          277           18.7          23            7             0 \r\n 1995          278           4             19.5          9.5           0 \r\n 1995          279           4.6           16            11            5 \r\n 1995          280           9             13.5          7.5           1 \r\n 1995          281           14.9          19            3             0 \r\n 1995          282           17.1          20            6             0 \r\n 1995          283           16.9          23.5          4.5           0 \r\n 1995          284           17.1          27            7             0 \r\n 1995          285           17            28.5          11.5          0 \r\n 1995          286           11.1          26.5          13            0 \r\n 1995          287           11            17            6.5           0 \r\n 1995          288           14.9          15.5          1             0 \r\n 1995          289           16            18            0             0 \r\n 1995          290           12.4          24.5          9.5           0 \r\n 1995          291           13.9          24            7             0 \r\n 1995          292           4.3           23.5          9.5           0 \r\n 1995          293           4             12.5          4.5           2 \r\n 1995          294           8.7           10            2.5           1 \r\n 1995          295           12.5          16.5         -1.5           0 \r\n 1995          296           6             20.5          9.5           0 \r\n 1995          297           10.4          15.5          4.5           3 \r\n 1995          298           14            18.5          1             0 \r\n 1995          299           9.5           19            3             0 \r\n 1995          300           6.5           16.5          5             7 \r\n 1995          301           5.4           10            6             1 \r\n 1995          302           7             10.5          0.5           0 \r\n 1995          303           3.8           8             2.5           0 \r\n 1995          304           2.7           6             2             13 \r\n 1995          305           1.8           14.5          5             18 \r\n 1995          306           5.4           13           -0.5           17 \r\n 1995          307           10.8          2            -4.5           0 \r\n 1995          308           12.9          1.5          -8.5           0 \r\n 1995          309           5             3.5          -5             0 \r\n 1995          310           9             7             0.5           0 \r\n 1995          311           7.4           6.5          -1             1 \r\n 1995          312           11.4          2.5          -7             0 \r\n 1995          313           8             12           -4.5           0 \r\n 1995          314           3.6           13           -1             0 \r\n 1995          315           7.3           1.5          -8             29 \r\n 1995          316           7.1           1.5          -10            0 \r\n 1995          317           9             1.5          -6             0 \r\n 1995          318           10.4          2.5          -5             0 \r\n 1995          319           8.9           2.5          -7.5           0 \r\n 1995          320           6.1           3            -2             0 \r\n 1995          321           7.9           8.5           1.5           0 \r\n 1995          322           8.1           6.5          -1.5           0 \r\n 1995          323           9.9           14.5         -0.5           0 \r\n 1995          324           10.6          12.5         -1             0 \r\n 1995          325           10.4          6.5          -3             0 \r\n 1995          326           7.6           6.5          -8             0 \r\n 1995          327           8.3           4.5          -7             0 \r\n 1995          328           7.4           2.5          -11            0 \r\n 1995          329           7.9           7.5          -2.5           0 \r\n 1995          330           6.4           13            2             0 \r\n 1995          331           1.4           9            -3             0 \r\n 1995          332           4.3          -1.5          -14            7 \r\n 1995          333           4.4          -2            -14            0 \r\n 1995          334           4.1           8            -6             0 \r\n 1995          335           8.3           9.5           0.5           0 \r\n 1995          336           7.2           12.5         -1.5           0 \r\n 1995          337           9.3           13            0             0 \r\n 1995          338           6             8            -3.5           0 \r\n 1995          339           8.9           7.5          -1.5           0.76 \r\n 1995          340           5.3           1            -6             0 \r\n 1995          341           8.6           1.5          -8.5           0 \r\n 1995          342           3.3          -1            -12.5          0 \r\n 1995          343           5.4          -10.5         -19.5          6.35 \r\n 1995          344           4.9          -9            -19.5          0 \r\n 1995          345           3.3          -8.5          -15            0 \r\n 1995          346           4            -7            -13.5          0 \r\n 1995          347           1.8          -0.5          -8             0 \r\n 1995          348           7.5           6            -1.5           0.51 \r\n 1995          349           7.1           3.5          -4             0 \r\n 1995          350           7.6           4.5          -7.5           0 \r\n 1995          351           3.3           4            -3.5           0 \r\n 1995          352           3.6           3            -0.5           0 \r\n 1995          353           6.8           1            -3.5           0 \r\n 1995          354           5.8          -1            -9.5           0 \r\n 1995          355           5.2          -3.5          -8.5           0 \r\n 1995          356           6            -4            -6.5           0 \r\n 1995          357           3.6          -2.5          -6             0.25 \r\n 1995          358           3.9          -1.5          -5             0 \r\n 1995          359           9.2           0            -6.5           0 \r\n 1995          360           7.9           2            -7             0 \r\n 1995          361           6.7           0.5          -7             0 \r\n 1995          362           9.6          -1            -13            0 \r\n 1995          363           7.5           2.5          -10.5          0 \r\n 1995          364           3.2           1.5          -5.5           0 \r\n 1995          365           4.8           1.5          -2             3.81 \r\n 1996          1             3.2           1.5          -1             0 \r\n 1996          2             6.6           1            -6.5           0 \r\n 1996          3             8.2          -3.5          -14            0 \r\n 1996          4             3.4          -4            -9.5           0.76 \r\n 1996          5             5.6          -6            -13.5          0.25 \r\n 1996          6             6.3          -10           -19            0 \r\n 1996          7             7.5          -8            -16            0 \r\n 1996          8             4            -3.5          -18            0 \r\n 1996          9             7.7           3            -7.5           0 \r\n 1996          10            3.9           0.5          -7.5           0 \r\n 1996          11            2.3          -0.5          -4             3.56 \r\n 1996          12            7.1           4            -3.5           0 \r\n 1996          13            8.2           9            -2.5           0 \r\n 1996          14            8.8           8.5          -1.5           0 \r\n 1996          15            4             2.5          -3.5           0 \r\n 1996          16            4.6           6            -3             0 \r\n 1996          17            5.2           12           -2             0 \r\n 1996          18            2.8           14           -14            8.89 \r\n 1996          19            7            -12.5         -22            11.94 \r\n 1996          20            9.5          -8            -17.5          0 \r\n 1996          21            8.3           0            -11            0 \r\n 1996          22            5.5           3.5          -3.5           0 \r\n 1996          23            1.8           0            -5.5           0 \r\n 1996          24            7.4          -3.5          -14.5          3.05 \r\n 1996          25            6.1           0            -15.5          0 \r\n 1996          26            2.9           1.5          -9.5           0 \r\n 1996          27            8.4          -4.5          -16            12.19 \r\n 1996          28            7.7          -1.5          -19            0 \r\n 1996          29            6.6           1            -18            0 \r\n 1996          30            7.6          -15           -22            0 \r\n 1996          31            8.7          -17           -30            0.76 \r\n 1996          32            4.3          -19.5         -26.5          0 \r\n 1996          33            4.3          -21.5         -31            0 \r\n 1996          34            4.5          -24.5         -33.5          0 \r\n 1996          35            4.6          -17           -30.5          0 \r\n 1996          36            4.4          -6.5          -20            0 \r\n 1996          37            3.9           0.5          -20.5          0 \r\n 1996          38            4.9           6            -4             0 \r\n 1996          39            9.1           7             1.5           1.27 \r\n 1996          40            11            10           -2.5           0 \r\n 1996          41            9.7           9             2             0 \r\n 1996          42            7             4.5          -1             0 \r\n 1996          43            7.8          -0.5          -4             0 \r\n 1996          44            11.5          4.5          -5             0 \r\n 1996          45            6.7           3.5          -2             0 \r\n 1996          46            10.5         -0.5          -6.5           0 \r\n 1996          47            11.7         -3.5          -12            0.76 \r\n 1996          48            8.3           0.5          -8             0 \r\n 1996          49            7            -1.5          -12            0 \r\n 1996          50            12.3          8            -9.5           1.27 \r\n 1996          51            13.1          13.5          0.5           0 \r\n 1996          52            4.8           7.5           0.5           0 \r\n 1996          53            4.8           5             0             0 \r\n 1996          54            4.7           9.5           3.5           0 \r\n 1996          55            16.8          15.5         -2             0 \r\n 1996          56            8             16            3             0 \r\n 1996          57            4.7           14.5          6             5.59 \r\n 1996          58            5.6           9.5          -4             7.62 \r\n 1996          59            12.5         -2.5          -12.5          0 \r\n 1996          60            16.5         -3.5          -14            0 \r\n 1996          61            13.1         -4.5          -15.5          0 \r\n 1996          62            14.4          1.5          -10            0 \r\n 1996          63            15.2          0            -10            0 \r\n 1996          64            8.3          -2.5          -16            0 \r\n 1996          65            5.6           4            -8.5           22.1 \r\n 1996          66            5.2           4.5          -2.5           0 \r\n 1996          67            9.6          -0.5          -9.5           3.05 \r\n 1996          68            10.2         -8            -18            0 \r\n 1996          69            13           -8.5          -19.5          0 \r\n 1996          70            17.1         -3.5          -15.5          0 \r\n 1996          71            17.1          4            -9.5           0 \r\n 1996          72            16.4          9.5          -2             0 \r\n 1996          73            17.5          13            1.5           0 \r\n 1996          74            15.6          17            2             0 \r\n 1996          75            20.5          16            2.5           0 \r\n 1996          76            20.2          12.5         -2.5           0 \r\n 1996          77            15.7          12           -1             0 \r\n 1996          78            16.9          10.5          0.5           0 \r\n 1996          79            9.6           9.5          -2.5           0 \r\n 1996          80            16.8          5            -4.5           0 \r\n 1996          81            21.7          5            -3             0 \r\n 1996          82            23.1          6            -6             0 \r\n 1996          83            12.8          8.5          -5.5           0 \r\n 1996          84            8.9           10.5         -4.5           0 \r\n 1996          85            14.6          17.5          3.5           3.3 \r\n 1996          86            21.2          15           -7.5           0 \r\n 1996          87            20.2         -2            -10            0 \r\n 1996          88            10.3          4.5          -8.5           0 \r\n 1996          89            19.3          7.5          -1.5           0 \r\n 1996          90            5.5           13            0.5           0 \r\n 1996          91            18.5          12            4             9.91 \r\n 1996          92            20.9          10            1.5           9 \r\n 1996          93            22.2          11           -2.5           0 \r\n 1996          94            19.3          21            3             0 \r\n 1996          95            5.9           25            8             0 \r\n 1996          96            16.9          18.5          0.5           0 \r\n 1996          97            19.6          6.5          -2             0 \r\n 1996          98            16.7          8            -3.5           0 \r\n 1996          99            23.4          7            -1.5           0 \r\n 1996          100           25.4          9.5          -4.5           0 \r\n 1996          101           24.8          12.5         -4.5           0 \r\n 1996          102           17.8          18.5         -3.5           0 \r\n 1996          103           13.8          25.5          6             0 \r\n 1996          104           14.9          26            9             0 \r\n 1996          105           5.6           14.5          2             0 \r\n 1996          106           10.4          10           -0.5           0 \r\n 1996          107           24.7          9             1.5           20 \r\n 1996          108           25.4          12.5          0.5           0 \r\n 1996          109           11.9          22            2             0 \r\n 1996          110           13.4          24            10.5          0 \r\n 1996          111           10.6          23.5          8.5           4 \r\n 1996          112           21.1          20.5          6             0 \r\n 1996          113           19            19.5          0.5           0 \r\n 1996          114           27.2          18.5          6.5           6 \r\n 1996          115           14.9          15.5          2             0 \r\n 1996          116           9.7           20            6             0 \r\n 1996          117           20.9          20            12.5          0 \r\n 1996          118           22.7          17.5          3             0 \r\n 1996          119           6.9           16            1             0 \r\n 1996          120           4.5           15            6             0 \r\n 1996          121           26.9          10            2             18 \r\n 1996          122           28.2          14            0.5           7 \r\n 1996          123           8.3           17            3.5           0 \r\n 1996          124           9.2           17.5          3             0 \r\n 1996          125           17.6          14.5          5.5           2 \r\n 1996          126           16.7          17.5          8             8 \r\n 1996          127           11            18.5          6.5           0 \r\n 1996          128           6.4           17            5.5           0 \r\n 1996          129           13.5          13            8             3 \r\n 1996          130           6.3           22            11            4 \r\n 1996          131           4.9           24            13.5          39 \r\n 1996          132           17.7          21            12.5          81 \r\n 1996          133           15.6          15            9             17 \r\n 1996          134           20.6          13.5          5             0 \r\n 1996          135           7.7           16            3             0 \r\n 1996          136           11            15.5          6             0 \r\n 1996          137           6             19            9.5           5 \r\n 1996          138           27.9          22            13            0 \r\n 1996          139           25.8          30            16            28 \r\n 1996          140           17.8          32            21.5          0 \r\n 1996          141           4.3           31.5          21.5          0 \r\n 1996          142           27.8          29            14            8 \r\n 1996          143           17.9          23.5          10.5          16 \r\n 1996          144           10            26.5          12            0 \r\n 1996          145           3.7           26            12            19 \r\n 1996          146           7.6           18.5          10            6 \r\n 1996          147           3.9           14            11            10 \r\n 1996          148           6.6           14            10            10 \r\n 1996          149           5.7           13.5          9             34 \r\n 1996          150           24.5          13.5          9.5           26 \r\n 1996          151           32.2          20            10            5 \r\n 1996          152           19.1          21.5          7             0 \r\n 1996          153           4.3           23.5          8.5           0 \r\n 1996          154           25.9          21.5          13.5          0 \r\n 1996          155           11.1          24.5          12            9 \r\n 1996          156           21.1          21            12.5          7 \r\n 1996          157           20.8          19            10            0 \r\n 1996          158           7.6           24.5          10            0 \r\n 1996          159           12.7          24            15            13 \r\n 1996          160           10.9          21            13.5          17 \r\n 1996          161           14.4          17.5          12.5          4 \r\n 1996          162           9             20.5          14            2 \r\n 1996          163           17.3          21.5          15.5          4 \r\n 1996          164           29.3          25            14.5          2 \r\n 1996          165           28            29            15            0 \r\n 1996          166           29.1          31.5          16            0 \r\n 1996          167           27.8          31.5          18.5          0 \r\n 1996          168           12.8          32            18.5          0 \r\n 1996          169           14.6          31.5          22            0 \r\n 1996          170           8.1           30.5          21.5          7 \r\n 1996          171           21.1          26.5          19            7 \r\n 1996          172           12.7          26.5          19.5          0 \r\n 1996          173           15.8          30            18            0 \r\n 1996          174           16.3          31            19.5          0 \r\n 1996          175           13.7          29            19.5          3 \r\n 1996          176           28.5          31.5          19            0 \r\n 1996          177           31.5          28.5          19            5 \r\n 1996          178           31            28            15.5          0 \r\n 1996          179           31.4          30            16.5          0 \r\n 1996          180           30.2          31.5          17            0 \r\n 1996          181           29            33.5          18.5          0 \r\n 1996          182           29.6          34.5          21.5          0 \r\n 1996          183           27.6          33            21.5          9 \r\n 1996          184           27.7          31            19.5          0 \r\n 1996          185           27.7          30            19.5          0 \r\n 1996          186           25.8          28.5          17            0 \r\n 1996          187           30.9          28            15.5          0 \r\n 1996          188           20.7          29.5          15            0 \r\n 1996          189           29.2          31.5          16.5          0 \r\n 1996          190           29.5          30.5          20            0 \r\n 1996          191           24.8          29.5          16.5          0 \r\n 1996          192           30.3          25.5          13.5          0 \r\n 1996          193           28            26            11            0 \r\n 1996          194           18.2          28            13            0 \r\n 1996          195           26.3          29            16.5          0 \r\n 1996          196           14.9          29            16            7 \r\n 1996          197           27            28            16.5          0 \r\n 1996          198           20.4          29.5          15.5          0 \r\n 1996          199           10.8          31            17            0 \r\n 1996          200           25.5          31.5          21            0 \r\n 1996          201           23.1          34            24            4 \r\n 1996          202           9.9           33            23.5          0 \r\n 1996          203           9.8           27            15.5          0 \r\n 1996          204           14.7          24            17            9 \r\n 1996          205           29.6          28            17            6 \r\n 1996          206           24.4          28            17            9 \r\n 1996          207           25.4          27.5          17.5          0 \r\n 1996          208           25.6          26            15.5          0 \r\n 1996          209           13.9          27.5          14            0 \r\n 1996          210           19.7          26.5          17            0 \r\n 1996          211           22.7          28            18            9 \r\n 1996          212           23.2          28.5          17            0 \r\n 1996          213           24.3          26.5          16.5          7 \r\n 1996          214           23.6          26            14.5          0 \r\n 1996          215           22.7          26.5          14.5          0 \r\n 1996          216           20.4          28            15            0 \r\n 1996          217           7.3           28.5          16            0 \r\n 1996          218           16.6          26.5          20            0 \r\n 1996          219           23            31.5          22            2 \r\n 1996          220           21.2          33.5          24.5          0 \r\n 1996          221           27.4          33.5          22.5          0 \r\n 1996          222           27.6          30.5          17            0 \r\n 1996          223           15.8          29.5          15            0 \r\n 1996          224           10.6          29            16            0 \r\n 1996          225           24.1          26.5          17            0 \r\n 1996          226           23.3          28.5          14.5          0 \r\n 1996          227           23.9          30            15.5          0 \r\n 1996          228           21.4          31            18.5          0 \r\n 1996          229           18.5          28            15            0 \r\n 1996          230           13.5          27            13            0 \r\n 1996          231           6.9           24.5          17.5          0 \r\n 1996          232           11.6          25            18.5          0 \r\n 1996          233           16.2          29            19.5          4 \r\n 1996          234           21            29.5          18.5          1 \r\n 1996          235           16            33            20.5          0 \r\n 1996          236           17.2          32            21.5          0 \r\n 1996          237           24.6          27.5          20            21 \r\n 1996          238           21.6          27            13.5          0 \r\n 1996          239           17.2          28            14.5          0 \r\n 1996          240           17.6          28.5          16            0 \r\n 1996          241           18.1          27            16.5          0 \r\n 1996          242           20.5          27            16.5          0 \r\n 1996          243           21.1          27.5          17.5          0 \r\n 1996          244           18.6          27            13.5          0 \r\n 1996          245           20.1          28            15.5          0 \r\n 1996          246           21.9          29            15.5          0 \r\n 1996          247           20.8          29            16            0 \r\n 1996          248           22.3          29.5          15            0 \r\n 1996          249           20            30            15.5          0 \r\n 1996          250           19.5          30            17            0 \r\n 1996          251           14.3          29.5          17            0 \r\n 1996          252           9.5           29.5          17.5          0 \r\n 1996          253           14.8          26.5          19            0 \r\n 1996          254           20.9          25            17.5          20 \r\n 1996          255           13.9          28            14            0 \r\n 1996          256           13.8          26            14.5          0 \r\n 1996          257           22.8          21            8.5           24 \r\n 1996          258           22.7          17.5          7             0 \r\n 1996          259           16.7          19            5             0 \r\n 1996          260           15.9          21.5          6             0 \r\n 1996          261           16.1          22            10            0 \r\n 1996          262           19.7          21.5          10            0 \r\n 1996          263           14.1          22            8.5           0 \r\n 1996          264           15.5          22.5          10            0 \r\n 1996          265           13.1          22            12.5          2 \r\n 1996          266           19.7          23            10.5          0 \r\n 1996          267           7.2           24            10            0 \r\n 1996          268           20.3          21.5          12.5          0 \r\n 1996          269           4.9           20            10.5          9 \r\n 1996          270           3.5           18.5          9.5           0 \r\n 1996          271           13.3          19            11.5          8 \r\n 1996          272           18.2          17.5          7.5           12 \r\n 1996          273           15.7          19.5          8             0 \r\n 1996          274           18.5          19.5          8             0 \r\n 1996          275           19.1          25.5          10.5          0 \r\n 1996          276           15.8          25.5          10.5          0 \r\n 1996          277           18            22            10            0 \r\n 1996          278           15.2          15.5          2.5           0 \r\n 1996          279           18.2          17            3.5           0 \r\n 1996          280           11.4          22.5          5.5           0 \r\n 1996          281           8.4           25            11.5          0 \r\n 1996          282           17.4          22            8.5           2 \r\n 1996          283           10.9          16            3.5           0 \r\n 1996          284           15.2          16.5          4.5           0 \r\n 1996          285           15.7          15            4             0 \r\n 1996          286           14.7          16            1.5           0 \r\n 1996          287           16            23            6.5           0 \r\n 1996          288           15.2          26            12            0 \r\n 1996          289           12.1          26            12            0 \r\n 1996          290           6.5           26            12            0 \r\n 1996          291           5.8           23            15            2 \r\n 1996          292           15.9          21            9             3 \r\n 1996          293           14.4          16            4             0 \r\n 1996          294           11.9          17.5         -1             0 \r\n 1996          295           7.6           19            3             0 \r\n 1996          296           2             18.5          7.5           0 \r\n 1996          297           4.1           16.5          5.5           12 \r\n 1996          298           11.1          14            2.5           26 \r\n 1996          299           10            15.5          1.5           0 \r\n 1996          300           8.4           20            5             0 \r\n 1996          301           8.9           22.5          11            0 \r\n 1996          302           11.5          20            9             0 \r\n 1996          303           3             15            3.5           0 \r\n 1996          304           11.3          19.5          7             0 \r\n 1996          305           9.4           15.5          1             23 \r\n 1996          306           10.5          4.5          -3             0 \r\n 1996          307           12            3.5          -4.5           0 \r\n 1996          308           12.8          5.5          -5.5           0 \r\n 1996          309           4.4           11           -4.5           0 \r\n 1996          310           4             11            1.5           0 \r\n 1996          311           4             10.5          5             2 \r\n 1996          312           8.6           16.5          5             0 \r\n 1996          313           6.2           11            1.5           2 \r\n 1996          314           8.5           7.5          -1             0 \r\n 1996          315           6.5           4            -3.5           0 \r\n 1996          316           8.9           1            -5             0 \r\n 1996          317           9.7           0            -6.5           0 \r\n 1996          318           3.4          -0.5          -9.5           0 \r\n 1996          319           7.6          -1            -6             0 \r\n 1996          320           4.2           0            -8.5           0 \r\n 1996          321           5.8           5.5          -3.5           1 \r\n 1996          322           5.5           14            0.5           0 \r\n 1996          323           7.1           12           -1.5           12 \r\n 1996          324           3.5           3            -3.5           0 \r\n 1996          325           3.9           0.5          -3             0 \r\n 1996          326           5.4           1.5          -2.5           0 \r\n 1996          327           4.5           2.5          -2             2 \r\n 1996          328           3.1           2.5          -3.5           0 \r\n 1996          329           3.3           3            -0.5           0 \r\n 1996          330           5.3           2.5          -2.5           1 \r\n 1996          331           9.5          -0.5          -7             0 \r\n 1996          332           5.3          -2.5          -11.5          0 \r\n 1996          333           9.3          -3            -11.5          0 \r\n 1996          334           3             3            -9             0 \r\n 1996          335           3.1           5.5          -2.5           0 \r\n 1996          336           4.5           5.5           1             1.02 \r\n 1996          337           7             2            -4             0 \r\n 1996          338           7             0.5          -7.5           2.54 \r\n 1996          339           6.6          -0.5          -7.5           0 \r\n 1996          340           3.3           0.5          -12            5.59 \r\n 1996          341           6.2           1            -3.5           0 \r\n 1996          342           9.7           4.5          -1.5           0 \r\n 1996          343           6.3           6.5          -4             0 \r\n 1996          344           6.7           3.5          -4             0 \r\n 1996          345           6             2            -5.5           0 \r\n 1996          346           3.8           8            -2             0 \r\n 1996          347           4.8           5             1             0 \r\n 1996          348           3.7           4             0.5           0 \r\n 1996          349           3.6           4            -1.5           0 \r\n 1996          350           4.6           6            -1.5           2.03 \r\n 1996          351           7.4           8.5          -2.5           0 \r\n 1996          352           6.9           0            -8             0 \r\n 1996          353           6.8          -2.5          -9.5           0 \r\n 1996          354           6.4          -8.5          -15            0 \r\n 1996          355           6.4          -10           -16            0 \r\n 1996          356           5.8          -7            -19            0 \r\n 1996          357           3.6           2.5          -11.5          0 \r\n 1996          358           3.2           4            -0.5           0.25 \r\n 1996          359           6.1           3            -5.5           3.05 \r\n 1996          360           3.2          -4.5          -16            0 \r\n 1996          361           3.9          -12.5         -18.5          0.51 \r\n 1996          362           2.9          -9.5          -16            0 \r\n 1996          363           5.5          -0.5          -13.5          0 \r\n 1996          364           5.9           3.5          -2             0 \r\n 1996          365           3.5           2            -8.5           0 \r\n 1996          366           4.2          -1            -10            0 \r\n 1997          1             3.9           5.5          -2.5           0.76 \r\n 1997          2             4.3           12.5          1.5           0 \r\n 1997          3             5.1           11.5          0             0 \r\n 1997          4             2.4           15            1.5           1.52 \r\n 1997          5             6.8           6            -8             0 \r\n 1997          6             9.3          -2            -13            0 \r\n 1997          7             9.4          -2.5          -14            0 \r\n 1997          8             7.7          -0.5          -12            0 \r\n 1997          9             3.9          -2.5          -9.5           1.02 \r\n 1997          10            4.6          -6            -19.5          5.59 \r\n 1997          11            7            -15           -21.5          0.76 \r\n 1997          12            6.9          -16           -23            0 \r\n 1997          13            6.6          -11           -20            0 \r\n 1997          14            5.7          -9            -20            0 \r\n 1997          15            3.7          -5            -12            5.08 \r\n 1997          16            6.2          -6            -19            1.78 \r\n 1997          17            6.6          -13           -23.5          0 \r\n 1997          18            5.8          -11           -21.5          0 \r\n 1997          19            7.5           0.5          -13            0.25 \r\n 1997          20            11            6.5          -6             0 \r\n 1997          21            2.9           9            -2             0 \r\n 1997          22            10.4          10.5         -4             2.03 \r\n 1997          23            8.7          -1.5          -11            0 \r\n 1997          24            3.8          -1.5          -9.5           0 \r\n 1997          25            6            -7.5          -19            8.89 \r\n 1997          26            3.7          -11           -17.5          1.02 \r\n 1997          27            5            -8.5          -17.5          3.81 \r\n 1997          28            6.6          -12           -25.5          5.08 \r\n 1997          29            5            -8            -20.5          0 \r\n 1997          30            5.9          -4.5          -17.5          0 \r\n 1997          31            10.3          7.5          -7.5           0 \r\n 1997          32            5.9           5            -1.5           0 \r\n 1997          33            12.9          4            -1.5           0.25 \r\n 1997          34            8.3           2.5          -3             0 \r\n 1997          35            4             1.5          -2.5           6.86 \r\n 1997          36            4.5          -1            -6             0.76 \r\n 1997          37            7.8          -1.5          -5.5           0 \r\n 1997          38            7.3          -3.5          -6.5           0 \r\n 1997          39            9.4          -0.5          -5             0 \r\n 1997          40            10.7          0            -3.5           0 \r\n 1997          41            6.8          -1            -4             0 \r\n 1997          42            8.2          -2            -7             0 \r\n 1997          43            10.9         -3            -11            1.27 \r\n 1997          44            9.8          -2.5          -13.5          0 \r\n 1997          45            13.2          1            -11            1.02 \r\n 1997          46            10.9         -1.5          -13.5          0 \r\n 1997          47            5            -2            -8             6.6 \r\n 1997          48            6.1           8.5          -6.5           0 \r\n 1997          49            10.8          13            1.5           0 \r\n 1997          50            16.1          10.5         -0.5           0 \r\n 1997          51            3.5           7.5          -1.5           0 \r\n 1997          52            3.5           7             0.5           45.47 \r\n 1997          53            11            3            -3.5           16.26 \r\n 1997          54            15            1            -5             0 \r\n 1997          55            11.4         -1.5          -7             0 \r\n 1997          56            15.3          4            -9.5           0 \r\n 1997          57            4.7           4            -1             2.03 \r\n 1997          58            4.7           2            -2             16.26 \r\n 1997          59            8.4           7.5          -2.5           0 \r\n 1997          60            3.9           13            2             0 \r\n 1997          61            17.5          7.5          -4             0 \r\n 1997          62            12.3          6.5          -2.5           0 \r\n 1997          63            8.5           4.5          -1             0 \r\n 1997          64            11.6          2            -3             0 \r\n 1997          65            17.2          0            -6             0 \r\n 1997          66            18            12           -6             0 \r\n 1997          67            19.2          13.5         -3.5           0 \r\n 1997          68            12.5          11            2.5           9.91 \r\n 1997          69            18.5          15           -1             1.78 \r\n 1997          70            18.6          12.5          1.5           0 \r\n 1997          71            17            10           -1             0 \r\n 1997          72            7             9.5           0             0 \r\n 1997          73            10.8          5.5          -6             4.57 \r\n 1997          74            17.8         -2.5          -12            0 \r\n 1997          75            15.1          5.5          -9.5           0 \r\n 1997          76            14.2          14           -0.5           0 \r\n 1997          77            4.6           11.5         -0.5           0 \r\n 1997          78            17.6          11.5         -3             0 \r\n 1997          79            18.5          15.5          0.5           0 \r\n 1997          80            18.1          21            4.5           0 \r\n 1997          81            15.8          14            2.5           0 \r\n 1997          82            18.3          10            0.5           0 \r\n 1997          83            4.7           8            -0.5           0 \r\n 1997          84            8.1           7.5           1.5           10.92 \r\n 1997          85            21            18           -2.5           0 \r\n 1997          86            19.8          22.5          5             0 \r\n 1997          87            13.3          20.5          7.5           1.27 \r\n 1997          88            9.4           12.5          5             0 \r\n 1997          89            18.3          13.5          3             2.54 \r\n 1997          90            22.6          14.5         -3             0 \r\n 1997          91            19.5          19.5          3             0 \r\n 1997          92            17.5          21.5          5.5           0 \r\n 1997          93            11.3          19            9.5           0 \r\n 1997          94            7.1           19.5          9.5           1 \r\n 1997          95            4.5           19            12.5          2 \r\n 1997          96            11.7          15            0.5           4 \r\n 1997          97            23.3          7            -4             0 \r\n 1997          98            19.4          5            -4.5           0 \r\n 1997          99            24.7          4.5          -7.5           0 \r\n 1997          100           6.3           4.5          -1.5           0 \r\n 1997          101           3.7           1            -1             11 \r\n 1997          102           3.7           1.5          -0.5           15 \r\n 1997          103           9.8           5.5          -4             2 \r\n 1997          104           18.4          9.5          -4             0 \r\n 1997          105           19            15.5          2.5           0 \r\n 1997          106           22.6          12.5          0             0 \r\n 1997          107           26.2          12           -2.5           0 \r\n 1997          108           17.6          17            0             0 \r\n 1997          109           19.8          19            4             2 \r\n 1997          110           9.4           17            4.5           0 \r\n 1997          111           11.1          15            4.5           0 \r\n 1997          112           22.1          15.5          4.5           0 \r\n 1997          113           15            15            4             0 \r\n 1997          114           18.8          15            4             0 \r\n 1997          115           28.3          18.5          2             0 \r\n 1997          116           18.9          19.5          5.5           0 \r\n 1997          117           17.1          18.5          9.5           0 \r\n 1997          118           27            21            5             0 \r\n 1997          119           22.6          24            10            0 \r\n 1997          120           8             22            6.5           0 \r\n 1997          121           28            17            2.5           16 \r\n 1997          122           4.6           15            7             2 \r\n 1997          123           19            14.5          7             7 \r\n 1997          124           29            19            5             0 \r\n 1997          125           25.9          23            11            0 \r\n 1997          126           27.1          22.5          6             0 \r\n 1997          127           4.9           20            10            0 \r\n 1997          128           26.4          20            11.5          32 \r\n 1997          129           26.2          19            7.5           0 \r\n 1997          130           28.9          20.5          4.5           0 \r\n 1997          131           14.2          22            9.5           0 \r\n 1997          132           25.2          19            6             0 \r\n 1997          133           23.3          16            5             2 \r\n 1997          134           12.1          13.5          6             0 \r\n 1997          135           26            13.5          3             0 \r\n 1997          136           24            21            1.5           0 \r\n 1997          137           26.8          27.5          8.5           0 \r\n 1997          138           17.4          30.5          12            0 \r\n 1997          139           22.7          26.5          10.5          3 \r\n 1997          140           29.8          17.5          6             0 \r\n 1997          141           31            18.5          5.5           0 \r\n 1997          142           28.5          21            6.5           0 \r\n 1997          143           28.1          24.5          9             0 \r\n 1997          144           17.8          27            13.5          0 \r\n 1997          145           10            23            12.5          17 \r\n 1997          146           7.8           15.5          7.5           13 \r\n 1997          147           12.8          16.5          8             24 \r\n 1997          148           5.8           15.5          10            7 \r\n 1997          149           9.3           15.5          11            1 \r\n 1997          150           18.2          18.5          10            0 \r\n 1997          151           30.7          23.5          10.5          0 \r\n 1997          152           29.4          25.5          11            0 \r\n 1997          153           23.3          24.5          13.5          0 \r\n 1997          154           15.4          22            13.5          0 \r\n 1997          155           25.7          23.5          13.5          0 \r\n 1997          156           18.5          25            11            0 \r\n 1997          157           17.5          23.5          13.5          1 \r\n 1997          158           22.5          24.5          13            10 \r\n 1997          159           23.3          22.5          13            11 \r\n 1997          160           27.3          25            13            0 \r\n 1997          161           24.8          26.5          14            0 \r\n 1997          162           21.9          26.5          15            4 \r\n 1997          163           17.7          25.5          16.5          6 \r\n 1997          164           18.2          27.5          15            11 \r\n 1997          165           28.4          26.5          14.5          0 \r\n 1997          166           24            28.5          16            0 \r\n 1997          167           25.1          28.5          18            4 \r\n 1997          168           29.9          27.5          14            0 \r\n 1997          169           30.1          28.5          16            0 \r\n 1997          170           18            29.5          16.5          0 \r\n 1997          171           17.9          31            22            0 \r\n 1997          172           24.7          31            19            17 \r\n 1997          173           24.3          30            19.5          0 \r\n 1997          174           27.3          32.5          21.5          0 \r\n 1997          175           18.9          32.5          23.5          0 \r\n 1997          176           17.7          31            20            3 \r\n 1997          177           30.2          29            16.5          3 \r\n 1997          178           31            30.5          16.5          0 \r\n 1997          179           26.6          31            18.5          0 \r\n 1997          180           24.2          31.5          20            0 \r\n 1997          181           24.5          31            20.5          5 \r\n 1997          182           27.7          32            20            0 \r\n 1997          183           28            30.5          20            0 \r\n 1997          184           16.2          25            15.5          0 \r\n 1997          185           15.9          21.5          13.5          0 \r\n 1997          186           25.7          23.5          11            0 \r\n 1997          187           28.3          26            14.5          0 \r\n 1997          188           26.7          27.5          11.5          0 \r\n 1997          189           24.1          29.5          18            0 \r\n 1997          190           18.8          28.5          16            0 \r\n 1997          191           25.5          26            13            0 \r\n 1997          192           27.3          29.5          15            0 \r\n 1997          193           19.2          31            19.5          0 \r\n 1997          194           15.9          31.5          22            5 \r\n 1997          195           29.6          31            22.5          7 \r\n 1997          196           30.2          32            18            0 \r\n 1997          197           29.4          33.5          19.5          0 \r\n 1997          198           23.6          33            21            0 \r\n 1997          199           24.2          33.5          22            0 \r\n 1997          200           20.4          33.5          21.5          0 \r\n 1997          201           22.9          33.5          20            4 \r\n 1997          202           15.1          31            20.5          4 \r\n 1997          203           8.3           26            19.5          3 \r\n 1997          204           17.6          26.5          20            1 \r\n 1997          205           17.2          29            19.5          0 \r\n 1997          206           23.1          33.5          21.5          0 \r\n 1997          207           27.2          35.5          25            0 \r\n 1997          208           21.4          36            22.5          0 \r\n 1997          209           19.5          32            19.5          0 \r\n 1997          210           27.2          28.5          17            0 \r\n 1997          211           26.8          26.5          12.5          0 \r\n 1997          212           27.9          27.5          13.5          0 \r\n 1997          213           19.5          29.5          14            0 \r\n 1997          214           26.1          32            18            0 \r\n 1997          215           21.8          33.5          17.5          0 \r\n 1997          216           24.6          31.5          18            2 \r\n 1997          217           26.4          27.5          15            0 \r\n 1997          218           15.8          25            11            0 \r\n 1997          219           25.6          27            11.5          0 \r\n 1997          220           26.3          28            13.5          0 \r\n 1997          221           13.7          27.5          17.5          0 \r\n 1997          222           11.3          27            17            0 \r\n 1997          223           5.1           24            16.5          27 \r\n 1997          224           6.6           24            18            9 \r\n 1997          225           19.6          26            18            0 \r\n 1997          226           13.8          26            15            0 \r\n 1997          227           23.9          29.5          17.5          11 \r\n 1997          228           20            33            19            0 \r\n 1997          229           11            31            19.5          46 \r\n 1997          230           12.3          23.5          16.5          7 \r\n 1997          231           7.8           21            16.5          0 \r\n 1997          232           16.5          23.5          15.5          0 \r\n 1997          233           21.6          24.5          13            0 \r\n 1997          234           22.3          24            12.5          4 \r\n 1997          235           19.5          24.5          12            0 \r\n 1997          236           20.9          28            17.5          1 \r\n 1997          237           11.2          27            17.5          0 \r\n 1997          238           13            28            18.5          25 \r\n 1997          239           9.5           27.5          19.5          0 \r\n 1997          240           21.7          29            18            0 \r\n 1997          241           16.7          28            17            0 \r\n 1997          242           13.2          27            18.5          23 \r\n 1997          243           17.1          28.5          20            38 \r\n 1997          244           18.5          29.5          19            0 \r\n 1997          245           10.7          28            19.5          17 \r\n 1997          246           23.7          23            12.5          10 \r\n 1997          247           23.4          22            8             0 \r\n 1997          248           18.7          24            10.5          0 \r\n 1997          249           22.6          29            14.5          0 \r\n 1997          250           8.9           28.5          17            0 \r\n 1997          251           9.9           23.5          18            6 \r\n 1997          252           14.6          23            17            3 \r\n 1997          253           19.9          22.5          12.5          0 \r\n 1997          254           21.5          22.5          8.5           0 \r\n 1997          255           22.1          24.5          9             0 \r\n 1997          256           5.6           22.5          12            0 \r\n 1997          257           12.7          23            16.5          0 \r\n 1997          258           15.4          27.5          15.5          0 \r\n 1997          259           13.4          30.5          17            0 \r\n 1997          260           20.5          29            16.5          30 \r\n 1997          261           12.5          28.5          14.5          0 \r\n 1997          262           7.4           29            19.5          0 \r\n 1997          263           16.7          23.5          12.5          1 \r\n 1997          264           14.6          20            8.5           0 \r\n 1997          265           6.4           18            11.5          0 \r\n 1997          266           8.6           19            12.5          23 \r\n 1997          267           20.2          21            8             4 \r\n 1997          268           19.6          25.5          7.5           0 \r\n 1997          269           18.4          26            10.5          0 \r\n 1997          270           12.7          26            11.5          0 \r\n 1997          271           18.2          24.5          14.5          0 \r\n 1997          272           19            26.5          11.5          0 \r\n 1997          273           18.2          24.5          12            0 \r\n 1997          274           18.5          21.5          7             0 \r\n 1997          275           17.4          27.5          10            0 \r\n 1997          276           18.2          32.5          15.5          0 \r\n 1997          277           17.8          30            15            0 \r\n 1997          278           17.5          30            14.5          0 \r\n 1997          279           16.3          30            16.5          0 \r\n 1997          280           13.3          29.5          17            0 \r\n 1997          281           7.3           28            20            0 \r\n 1997          282           16.1          24.5          13.5          2 \r\n 1997          283           16.2          22.5          6             0 \r\n 1997          284           10.7          26            12            0 \r\n 1997          285           4.1           24.5          17.5          0 \r\n 1997          286           9.6           21.5          9             19 \r\n 1997          287           14.1          14.5          2             0 \r\n 1997          288           8.6           15.5          1             0 \r\n 1997          289           15.3          16            3.5           0 \r\n 1997          290           13.9          15.5          2             0 \r\n 1997          291           15.2          16            2             0 \r\n 1997          292           8.9           16.5          3.5           0 \r\n 1997          293           14.4          14            1.5           0 \r\n 1997          294           15.1          10            1             0 \r\n 1997          295           15.3          9            -3.5           0 \r\n 1997          296           7.9           14            3             2 \r\n 1997          297           4.1           11.5          7.5           16 \r\n 1997          298           5.3           9             6             4 \r\n 1997          299           2.2           6.5           1.5           6 \r\n 1997          300           9             3.5          -5             13 \r\n 1997          301           9.3           10           -3.5           0 \r\n 1997          302           10.4          14           -1             0 \r\n 1997          303           4.3           14            4             0 \r\n 1997          304           8.4           18.5          9.5           0 \r\n 1997          305           4.4           17            7             1 \r\n 1997          306           4.8           7             1.5           0 \r\n 1997          307           4.2           5            -0.5           1 \r\n 1997          308           4.2           3             0             0 \r\n 1997          309           4.2           4             1             0 \r\n 1997          310           3.7           7             3             6 \r\n 1997          311           5.7           8.5           4.5           0 \r\n 1997          312           4.3           7.5           5.5           0 \r\n 1997          313           4.2           7             4             0 \r\n 1997          314           8             5            -0.5           1 \r\n 1997          315           9.8           2.5          -3             0 \r\n 1997          316           9             2.5          -6.5           0 \r\n 1997          317           5.3           2            -2.5           0 \r\n 1997          318           6.8           4            -0.5           0 \r\n 1997          319           6             2            -4.5           0 \r\n 1997          320           9.1          -0.5          -8             1 \r\n 1997          321           10.6          4.5          -7.5           0 \r\n 1997          322           11.3          7.5          -4             0 \r\n 1997          323           10.9          6            -6.5           0 \r\n 1997          324           6.1           9            -1.5           0 \r\n 1997          325           9.9           7            -2.5           0 \r\n 1997          326           4.2           3            -5             0 \r\n 1997          327           7.7           4            -6             0 \r\n 1997          328           7.9           5            -7.5           0 \r\n 1997          329           8             12.5         -1             0 \r\n 1997          330           10.2          12.5          1             0 \r\n 1997          331           3.2           9.5          -2             0 \r\n 1997          332           5             13            6.5           9 \r\n 1997          333           2.5           12            8             3 \r\n 1997          334           7.1           8.5           3.5           6 \r\n 1997          335           8.9           5             2             0 \r\n 1997          336           7.5           5             2.5           0 \r\n 1997          337           5.6           4             0.5           9.14 \r\n 1997          338           6.2           1            -2.5           2.54 \r\n 1997          339           6.1          -1.5          -6.5           0 \r\n 1997          340           6.7          -2            -5.5           0 \r\n 1997          341           6            -2            -4             0 \r\n 1997          342           4.6          -1            -3.5           0 \r\n 1997          343           5.6           0            -2.5           3.56 \r\n 1997          344           5.6           1.5          -0.5           6.35 \r\n 1997          345           5.1           2            -1             0 \r\n 1997          346           5.5           0            -5.5           0 \r\n 1997          347           7.6           0.5          -7.5           0 \r\n 1997          348           8.1           2            -8             0 \r\n 1997          349           9             6            -6             0 \r\n 1997          350           6.9           6.5          -2.5           0 \r\n 1997          351           7.7           6            -6             0 \r\n 1997          352           6.1           6.5          -2.5           0 \r\n 1997          353           6.1           8.5          -2.5           0 \r\n 1997          354           9.1           4.5          -3             0 \r\n 1997          355           5             1.5          -4.5           0 \r\n 1997          356           4.4           1            -1             2.79 \r\n 1997          357           7.8           1.5          -1             2.54 \r\n 1997          358           3.2           1            -1             0 \r\n 1997          359           4.9           0            -3.5           18.03 \r\n 1997          360           8.5          -0.5          -5.5           0.76 \r\n 1997          361           7.7          -2.5          -12.5          0 \r\n 1997          362           5.4           0            -9             0 \r\n 1997          363           5.3           0            -5.5           2.79 \r\n 1997          364           4.5          -2.5          -12            0 \r\n 1997          365           5.4          -4            -13.5          2.54 \r\n 1998          1             8.6           4.5          -12            0 \r\n 1998          2             7.6           10            1             0 \r\n 1998          3             4             14.5          2             0 \r\n 1998          4             3.2           9             1             2.03 \r\n 1998          5             3.3           7.5           1.5           5.08 \r\n 1998          6             3.7           4.5           2.5           8.38 \r\n 1998          7             3.7           3.5           1             12.7 \r\n 1998          8             5.2           1.5          -0.5           0 \r\n 1998          9             3.7           0            -6             5.33 \r\n 1998          10            8.8          -4            -13.5          0 \r\n 1998          11            4.1          -7            -13            0 \r\n 1998          12            4.8          -4.5          -10.5          0 \r\n 1998          13            8.9          -7.5          -18            0 \r\n 1998          14            3.8          -7            -14.5          0 \r\n 1998          15            6.2          -6.5          -15            5.59 \r\n 1998          16            4.6          -3.5          -10.5          0 \r\n 1998          17            7.5          -2.5          -9             0 \r\n 1998          18            7            -4.5          -16            0 \r\n 1998          19            8            -4            -13.5          0 \r\n 1998          20            6.9          -3            -12.5          0 \r\n 1998          21            5.7          -1            -6             3.05 \r\n 1998          22            5.8           0.5          -2             0 \r\n 1998          23            8.3           1            -2.5           0.51 \r\n 1998          24            8.1           0            -7             0.51 \r\n 1998          25            10.3          2            -7             0 \r\n 1998          26            5.8           3            -7.5           0 \r\n 1998          27            5.2           2            -5.5           0 \r\n 1998          28            7             6.5          -2.5           0 \r\n 1998          29            9.9           5.5          -0.5           0 \r\n 1998          30            6.8           2            -3.5           0 \r\n 1998          31            11.1          6            -2.5           0 \r\n 1998          32            3.3           5.5          -1.5           0 \r\n 1998          33            10            5            -2.5           5.59 \r\n 1998          34            7.2           2.5          -2.5           0 \r\n 1998          35            7             1            -2.5           0 \r\n 1998          36            7.9           1            -3.5           0 \r\n 1998          37            9.9           5            -3.5           0 \r\n 1998          38            10.9          6.5          -3.5           0 \r\n 1998          39            6.4           4            -3.5           0 \r\n 1998          40            7.8           2            -2.5           0 \r\n 1998          41            4.8           6            -0.5           0 \r\n 1998          42            3.4           5             2             4.32 \r\n 1998          43            9.4           4            -2             16.51 \r\n 1998          44            10.4          6            -2.5           0 \r\n 1998          45            6             5.5          -1             0 \r\n 1998          46            12.2          9.5           0.5           0 \r\n 1998          47            5.4           9             3.5           0 \r\n 1998          48            4.2           7.5           4             4.32 \r\n 1998          49            4.9           6.5           2.5           0 \r\n 1998          50            5.9           6             2.5           0 \r\n 1998          51            9.1           6.5           3             0 \r\n 1998          52            5.3           6.5           3             0 \r\n 1998          53            7.6           9.5           0.5           0 \r\n 1998          54            6.5           11            3.5           0 \r\n 1998          55            16.1          13.5          2             3.05 \r\n 1998          56            6.7           15            4.5           0 \r\n 1998          57            7.7           14            8             0.25 \r\n 1998          58            10.8          10.5          3             25.15 \r\n 1998          59            12            4.5          -0.5           0 \r\n 1998          60            8.1           1.5          -2             1.27 \r\n 1998          61            10.5          3            -3             0.25 \r\n 1998          62            10.2          2.5          -1.5           2.54 \r\n 1998          63            15.5          3            -2.5           0 \r\n 1998          64            9.4           3.5          -1.5           0 \r\n 1998          65            16.2          5.5          -0.5           0 \r\n 1998          66            8.4           5             0             0 \r\n 1998          67            4.6           4.5           0             16 \r\n 1998          68            9.3           2            -6             14.22 \r\n 1998          69            11.4         -4.5          -11.5          0 \r\n 1998          70            11.2         -6.5          -11.5          0 \r\n 1998          71            11.4         -4.5          -15.5          0 \r\n 1998          72            13.7          4            -9.5           0 \r\n 1998          73            18.9          4.5          -8             0 \r\n 1998          74            10            1.5          -6             0 \r\n 1998          75            11.5          3.5          -3.5           0.25 \r\n 1998          76            4.7           3.5          -0.5           2.54 \r\n 1998          77            5.9           5.5           2.5           26.42 \r\n 1998          78            8             4.5           1             0 \r\n 1998          79            14.5          5             0             0 \r\n 1998          80            20            8            -2             0 \r\n 1998          81            18.6          10           -1.5           0 \r\n 1998          82            10.9          8.5           0             0.25 \r\n 1998          83            12.7          10           -3.5           0 \r\n 1998          84            17.2          17            2.5           2.03 \r\n 1998          85            18.2          23.5          12            0 \r\n 1998          86            7.8           25            13.5          0 \r\n 1998          87            11.2          21.5          10            3.3 \r\n 1998          88            19.3          24.5          9.5           0 \r\n 1998          89            7.2           25.5          15.5          0 \r\n 1998          90            5.7           22.5          10.5          64.77 \r\n 1998          91            7.6           11.5          3             12 \r\n 1998          92            7.7           7.5           3.5           5 \r\n 1998          93            4.5           8             4.5           0 \r\n 1998          94            20.7          11.5          3.5           0 \r\n 1998          95            22.9          14            1.5           0 \r\n 1998          96            18.2          19            6             0 \r\n 1998          97            7.3           17.5          10            0 \r\n 1998          98            4.8           13            8.5           19 \r\n 1998          99            5             9.5           5.5           9 \r\n 1998          100           24.6          13.5          3.5           1 \r\n 1998          101           18.7          19            3.5           0 \r\n 1998          102           19.9          22.5          9             0 \r\n 1998          103           6.1           20.5          10            0 \r\n 1998          104           21.7          18            8             24 \r\n 1998          105           7.2           19.5          9.5           2 \r\n 1998          106           7.7           16            5.5           7 \r\n 1998          107           26.9          13.5          2             0 \r\n 1998          108           25.5          16            3             0 \r\n 1998          109           22.2          17.5          2.5           0 \r\n 1998          110           9.2           16.5          6.5           0 \r\n 1998          111           12.1          13            6.5           8 \r\n 1998          112           22.9          17.5          6.5           3 \r\n 1998          113           26.9          21.5          6.5           0 \r\n 1998          114           27.4          25            7.5           0 \r\n 1998          115           13.4          23            11            0 \r\n 1998          116           7.5           18.5          9.5           6 \r\n 1998          117           19.7          15            4.5           1 \r\n 1998          118           14.8          15            4.5           0 \r\n 1998          119           7.2           15            7             3 \r\n 1998          120           8.8           17.5          11            4 \r\n 1998          121           20.8          21.5          11.5          8 \r\n 1998          122           15.6          21            10            0 \r\n 1998          123           9             17            7.5           0 \r\n 1998          124           26.1          22            9.5           0 \r\n 1998          125           18.2          24.5          13            0 \r\n 1998          126           6.7           22            15            9 \r\n 1998          127           6.3           18            15            4 \r\n 1998          128           19.5          21.5          14.5          9 \r\n 1998          129           22.4          23.5          13            0 \r\n 1998          130           28.8          23.5          10.5          0 \r\n 1998          131           28.1          24.5          9.5           0 \r\n 1998          132           23.1          26.5          13            4 \r\n 1998          133           27.6          26            12.5          0 \r\n 1998          134           26.1          30            16            0 \r\n 1998          135           14.9          29.5          19.5          0 \r\n 1998          136           30.2          28            15            0 \r\n 1998          137           28.2          30.5          13            0 \r\n 1998          138           27            32            18.5          0 \r\n 1998          139           18.4          31.5          20.5          0 \r\n 1998          140           9.6           27            17            3 \r\n 1998          141           22.8          25            14            7 \r\n 1998          142           14.3          23.5          10            5 \r\n 1998          143           13.7          22            12            8 \r\n 1998          144           9.9           20.5          11.5          11 \r\n 1998          145           16.3          19.5          13            0 \r\n 1998          146           23.1          24            13            0 \r\n 1998          147           22.4          26.5          14            0 \r\n 1998          148           27.4          30.5          17.5          0 \r\n 1998          149           21            30            18            6 \r\n 1998          150           17.1          30            18.5          0 \r\n 1998          151           22.8          28.5          19            0 \r\n 1998          152           18.5          26            10            0 \r\n 1998          153           28.6          25            13.5          0 \r\n 1998          154           13.7          20.5          10.5          0 \r\n 1998          155           14.7          17            9             4 \r\n 1998          156           12            17            10            2 \r\n 1998          157           20.8          19            8             0 \r\n 1998          158           23.8          21.5          9.5           0 \r\n 1998          159           9             20.5          12.5          0 \r\n 1998          160           9.5           20.5          13            38 \r\n 1998          161           23.4          24.5          13.5          5 \r\n 1998          162           9.1           26            18            5 \r\n 1998          163           20.4          25.5          17.5          5 \r\n 1998          164           28.2          26            15.5          1 \r\n 1998          165           6.9           25            17.5          8 \r\n 1998          166           15.1          24.5          16            30 \r\n 1998          167           21.7          25.5          17            8 \r\n 1998          168           9.4           25.5          16.5          0 \r\n 1998          169           7.4           28            16.5          7 \r\n 1998          170           30.1          29.5          16            19 \r\n 1998          171           23.6          30            19.5          0 \r\n 1998          172           28            29.5          18.5          20 \r\n 1998          173           15.3          27.5          17            0 \r\n 1998          174           19.5          27.5          17            0 \r\n 1998          175           24            31.5          20.5          0 \r\n 1998          176           22            33            23            0 \r\n 1998          177           28.5          34.5          25            0 \r\n 1998          178           30            34.5          25            0 \r\n 1998          179           25.8          33            21.5          8 \r\n 1998          180           14.3          31.5          18.5          0 \r\n 1998          181           27.2          28.5          19            35 \r\n 1998          182           25.3          28.5          19            0 \r\n 1998          183           28.7          29.5          15.5          0 \r\n 1998          184           14.3          30            19.5          0 \r\n 1998          185           16.5          28            20            0 \r\n 1998          186           8.8           26            16.5          0 \r\n 1998          187           19.7          30            20            6 \r\n 1998          188           22.5          31.5          23.5          0 \r\n 1998          189           27.2          31            21.5          0 \r\n 1998          190           22.7          30.5          21.5          0 \r\n 1998          191           21.6          30            21            11 \r\n 1998          192           27.2          28.5          18            0 \r\n 1998          193           26.7          28            18            0 \r\n 1998          194           25.4          29.5          17            0 \r\n 1998          195           28            31            19            0 \r\n 1998          196           25.4          31            19.5          0 \r\n 1998          197           30.1          31            19.5          0 \r\n 1998          198           21.9          29.5          17.5          0 \r\n 1998          199           25.5          31.5          21            2 \r\n 1998          200           25            33.5          22.5          0 \r\n 1998          201           27.3          35            23            0 \r\n 1998          202           23.2          35            25            0 \r\n 1998          203           14.8          31.5          21.5          31 \r\n 1998          204           27.9          27            17.5          0 \r\n 1998          205           26            27            16.5          0 \r\n 1998          206           17.3          27            16            0 \r\n 1998          207           25            28            15.5          0 \r\n 1998          208           22.2          29            16            0 \r\n 1998          209           26            31            18            0 \r\n 1998          210           26.4          30            18.5          0 \r\n 1998          211           20            27.5          17.5          0 \r\n 1998          212           24.7          27.5          15            0 \r\n 1998          213           27.9          28            14.5          0 \r\n 1998          214           17.7          27.5          17            0 \r\n 1998          215           14.9          28            19            5 \r\n 1998          216           11.6          28            20.5          6 \r\n 1998          217           12.3          28            20.5          6 \r\n 1998          218           9.8           27.5          21            3 \r\n 1998          219           16.5          28            19.5          4 \r\n 1998          220           19.6          28.5          19            4 \r\n 1998          221           23.6          30.5          19            0 \r\n 1998          222           20.7          31            19.5          3 \r\n 1998          223           24            29            17            0 \r\n 1998          224           20.8          27.5          18            0 \r\n 1998          225           17.6          27.5          17            0 \r\n 1998          226           22            29            17            0 \r\n 1998          227           19.3          29            19            3 \r\n 1998          228           20.7          30.5          19            0 \r\n 1998          229           10.7          28.5          18.5          0 \r\n 1998          230           12.3          27.5          19.5          23 \r\n 1998          231           19.6          29            18.5          0 \r\n 1998          232           20.5          31            20            0 \r\n 1998          233           19.1          31.5          20.5          0 \r\n 1998          234           23.6          31.5          20.5          0 \r\n 1998          235           20.9          33            21.5          0 \r\n 1998          236           11.7          32            22.5          1 \r\n 1998          237           23.2          29.5          20.5          4 \r\n 1998          238           19.8          28.5          15.5          0 \r\n 1998          239           5.5           26.5          19.5          5 \r\n 1998          240           11.3          26            19.5          61 \r\n 1998          241           23.2          29            16.5          11 \r\n 1998          242           22.6          29.5          17            6 \r\n 1998          243           12.5          27.5          16.5          0 \r\n 1998          244           23.7          26.5          16            2 \r\n 1998          245           23.7          26            14            0 \r\n 1998          246           23.6          30.5          16            0 \r\n 1998          247           24.5          30.5          17            0 \r\n 1998          248           23.1          31            15            0 \r\n 1998          249           21.3          33.5          20            0 \r\n 1998          250           22.1          30.5          19.5          0 \r\n 1998          251           23.9          24            11.5          0 \r\n 1998          252           23.3          24            8.5           0 \r\n 1998          253           23.1          26            10            0 \r\n 1998          254           23.5          29            11.5          0 \r\n 1998          255           22.7          32            12.5          0 \r\n 1998          256           16.3          32.5          16            0 \r\n 1998          257           4.5           26            18.5          62 \r\n 1998          258           11.1          24            19.5          25 \r\n 1998          259           13            26            18.5          0 \r\n 1998          260           17.9          26.5          16.5          0 \r\n 1998          261           17.2          28            17            0 \r\n 1998          262           18.7          29.5          17.5          0 \r\n 1998          263           10.8          28            19            0 \r\n 1998          264           7.7           24            13.5          0 \r\n 1998          265           19.3          20.5          11            0 \r\n 1998          266           20.4          21.5          5.5           0 \r\n 1998          267           11.5          22            10.5          6 \r\n 1998          268           12.2          26.5          14            0 \r\n 1998          269           15.7          31            21.5          0 \r\n 1998          270           18.1          29.5          19.5          0 \r\n 1998          271           18.5          27.5          15            0 \r\n 1998          272           17.8          27.5          15.5          10 \r\n 1998          273           13.3          28.5          14.5          8 \r\n 1998          274           19.9          21.5          6.5           0 \r\n 1998          275           4.2           13.5          7             0 \r\n 1998          276           3             11.5          8             13 \r\n 1998          277           5.7           14            10            3 \r\n 1998          278           5             20            13            41 \r\n 1998          279           7.2           19.5          12.5          3 \r\n 1998          280           7             15            7.5           0 \r\n 1998          281           17.9          16            8             0 \r\n 1998          282           16.4          18.5          4.5           0 \r\n 1998          283           17.9          20            5             0 \r\n 1998          284           14.1          21.5          6.5           0 \r\n 1998          285           17.1          19.5          8             0 \r\n 1998          286           17.3          16.5          5             0 \r\n 1998          287           12.3          17            3             0 \r\n 1998          288           8.3           20            7.5           9 \r\n 1998          289           11.1          25            13            0 \r\n 1998          290           2.5           23.5          15.5          29 \r\n 1998          291           9             19            7.5           50 \r\n 1998          292           15.8          16            5             0 \r\n 1998          293           9.5           16            3             0 \r\n 1998          294           14.3          15            5             0 \r\n 1998          295           12.5          15            0.5           0 \r\n 1998          296           15            17            1.5           0 \r\n 1998          297           12.7          18.5          4             0 \r\n 1998          298           10            19.5          7.5           0 \r\n 1998          299           12.5          22.5          8             0 \r\n 1998          300           4.7           22            13            5 \r\n 1998          301           11.9          18            12            15 \r\n 1998          302           5.7           20            13            4 \r\n 1998          303           7.5           19            11            10 \r\n 1998          304           5.5           13            9             0 \r\n 1998          305           4.2           12.5          9.5           2 \r\n 1998          306           4.2           11            7.5           13 \r\n 1998          307           9.4           8.5           3.5           6 \r\n 1998          308           10.7          7             0.5           0 \r\n 1998          309           9             5            -3             0 \r\n 1998          310           8.7           3.5          -1.5           0 \r\n 1998          311           9.1           4            -4.5           0 \r\n 1998          312           5.4           3            -1             8 \r\n 1998          313           4.1           6.5           2             1 \r\n 1998          314           5.3           13            3.5           18 \r\n 1998          315           12.3          10.5          0.5           0 \r\n 1998          316           4.6           8.5           1.5           0 \r\n 1998          317           8.3           9.5           1             1 \r\n 1998          318           10.1          14            3             0 \r\n 1998          319           8.3           10           -0.5           0 \r\n 1998          320           6.5           9.5           2             0 \r\n 1998          321           9.6           11            0.5           0 \r\n 1998          322           5.8           13            3.5           0 \r\n 1998          323           9.2           12            0             0 \r\n 1998          324           9.9           6            -3             0 \r\n 1998          325           10.5          8            -6.5           0 \r\n 1998          326           7.9           14            2.5           0 \r\n 1998          327           8.5           14            5             0 \r\n 1998          328           9.8           14           -1.5           0 \r\n 1998          329           7.9           15.5          5             0 \r\n 1998          330           9.3           16            1             0 \r\n 1998          331           9.8           18.5          1             0 \r\n 1998          332           5             16.5          5.5           0 \r\n 1998          333           3.8           19            11            0 \r\n 1998          334           5.8           20            7.5           11 \r\n 1998          335           9.1           15.5          1             0.51 \r\n 1998          336           6.8           16            6.5           0 \r\n 1998          337           3.7           17.5          10            0 \r\n 1998          338           8.7           20.5          13            0 \r\n 1998          339           5             19            12            0 \r\n 1998          340           1.5           15.5          2             0 \r\n 1998          341           4.9           3            -3             20.57 \r\n 1998          342           6.9           5            -5.5           0 \r\n 1998          343           7.7           8            -3.5           0 \r\n 1998          344           7.2           6            -2             0 \r\n 1998          345           9.1           8.5          -3.5           0 \r\n 1998          346           9             10           -3.5           0 \r\n 1998          347           6.4           9            -3             0 \r\n 1998          348           8.4           11           -3.5           0 \r\n 1998          349           8.5           11           -2             0 \r\n 1998          350           5.3           7.5           0.5           0 \r\n 1998          351           8.6           4.5          -2.5           1.52 \r\n 1998          352           7.3           9            -0.5           0 \r\n 1998          353           7             5.5          -3.5           0 \r\n 1998          354           3.1           0            -5             0 \r\n 1998          355           5.4          -2.5          -11.5          0.51 \r\n 1998          356           8.4          -8.5          -16            0 \r\n 1998          357           7.9          -5.5          -14            0 \r\n 1998          358           9.9          -2            -13.5          0 \r\n 1998          359           7.1           0.5          -10.5          0 \r\n 1998          360           5.4           0            -10            0 \r\n 1998          361           7.2           4            -5             0 \r\n 1998          362           7.1           3.5          -9.5           0 \r\n 1998          363           7.5           4            -12            0 \r\n 1998          364           3            -8.5          -18.5          0 \r\n 1998          365           3.3          -12           -21            3.81 \r\n 1999          1             5.2          -10           -17.5          0 \r\n 1999          2             3.9          -6.5          -11            12.7 \r\n 1999          3             8.7          -7            -15            9.91 \r\n 1999          4             7.2          -14           -23.5          0 \r\n 1999          5             7.8          -13           -29.5          0 \r\n 1999          6             5.6          -4            -18.5          0 \r\n 1999          7             5.8          -8            -21.5          0.51 \r\n 1999          8             4.6          -10.5         -17.5          2.54 \r\n 1999          9             7.2          -11           -23.5          0 \r\n 1999          10            8.7          -10.5         -20            1.02 \r\n 1999          11            6.3          -6            -16.5          0.51 \r\n 1999          12            4.9          -5.5          -12            0 \r\n 1999          13            9.1          -7            -11            0 \r\n 1999          14            9.3          -6.5          -10            0 \r\n 1999          15            6.9          -1.5          -8             0 \r\n 1999          16            7.7           4            -5             0 \r\n 1999          17            2.9           3            -8             0 \r\n 1999          18            6.4           2.5          -4.5           2.79 \r\n 1999          19            7.4           0.5          -9             0.51 \r\n 1999          20            5.7           0            -6.5           0 \r\n 1999          21            4.8           2.5          -3             0 \r\n 1999          22            5.1           3             0.5           19.05 \r\n 1999          23            4.5           2             0             4.57 \r\n 1999          24            3.8           1            -1             1.27 \r\n 1999          25            10            0.5          -7             0 \r\n 1999          26            5.4           1.5          -6.5           0 \r\n 1999          27            6.7           7.5          -3             0 \r\n 1999          28            9.7           4            -2             0 \r\n 1999          29            9.3           2            -5             0 \r\n 1999          30            10.3          3.5          -5.5           0 \r\n 1999          31            6             4            -1.5           0 \r\n 1999          32            3.6           4             1             0 \r\n 1999          33            11.5          6             1.5           1.02 \r\n 1999          34            8.5           9             1.5           0 \r\n 1999          35            12            7.5          -4.5           0 \r\n 1999          36            4.1           4            -4.5           0 \r\n 1999          37            8.6           8.5          -1.5           0 \r\n 1999          38            11.3          7.5           0             0 \r\n 1999          39            8.8           10.5          0.5           0 \r\n 1999          40            13.1          13.5          0.5           0 \r\n 1999          41            6.5           15            2             0 \r\n 1999          42            3             18            0             0 \r\n 1999          43            8             8            -6             7.87 \r\n 1999          44            13.4          1            -8.5           0.25 \r\n 1999          45            14.5          7.5          -5.5           0 \r\n 1999          46            14.6          14            0.5           0 \r\n 1999          47            5.1           12            0.5           0 \r\n 1999          48            11            3            -3             0 \r\n 1999          49            7.7           3            -2.5           0 \r\n 1999          50            6.8           2.5          -3             0.76 \r\n 1999          51            9.6           0.5          -3.5           0 \r\n 1999          52            16            1.5          -7.5           0 \r\n 1999          53            10            1.5          -7.5           0 \r\n 1999          54            4.9           0            -5             2.03 \r\n 1999          55            5.2           0.5          -7             0 \r\n 1999          56            11.8          0.5          -7.5           0 \r\n 1999          57            8.8           4.5          -4             0 \r\n 1999          58            12.3          9.5           1.5           14.22 \r\n 1999          59            6.7           7.5           1.5           0.25 \r\n 1999          60            16.2          8.5          -2             0 \r\n 1999          61            5             9.5          -0.5           0.51 \r\n 1999          62            17.5          4            -4             3.05 \r\n 1999          63            12.1          4.5          -6.5           0 \r\n 1999          64            4.4           5.5          -3             0 \r\n 1999          65            11.4          2            -6.5           13.46 \r\n 1999          66            15           -1.5          -13            0 \r\n 1999          67            4.5          -0.5          -9.5           0 \r\n 1999          68            6.4           0            -3.5           11.18 \r\n 1999          69            11.5          0.5          -6.5           0 \r\n 1999          70            11.3          1.5          -6             0 \r\n 1999          71            13.3          3            -8.5           0 \r\n 1999          72            10.7          3.5          -5             0 \r\n 1999          73            19.8          4.5          -5             0 \r\n 1999          74            20.6          7            -5.5           0 \r\n 1999          75            16.6          13           -1             0 \r\n 1999          76            19.1          15.5          4.5           0 \r\n 1999          77            20.4          12            0.5           0 \r\n 1999          78            20.9          10.5         -2             0 \r\n 1999          79            21.5          14           -2             0 \r\n 1999          80            21.9          13           -1             0 \r\n 1999          81            14            9            -3             0 \r\n 1999          82            22.5          11           -3.5           0 \r\n 1999          83            23.2          11.5         -1             0 \r\n 1999          84            22.4          9            -3             0 \r\n 1999          85            22.9          9.5          -5             0 \r\n 1999          86            22.1          13.5         -3             0 \r\n 1999          87            12.9          15.5          2.5           3.05 \r\n 1999          88            23.5          17            1.5           1.52 \r\n 1999          89            23.2          20.5          5.5           0 \r\n 1999          90            22.6          22.5          8             0 \r\n 1999          91            11.1          21.5          11            0 \r\n 1999          92            14.6          23            12            0 \r\n 1999          93            10.5          23.5          14.5          0 \r\n 1999          94            22.9          20.5          7.5           12 \r\n 1999          95            5.7           17            7.5           0 \r\n 1999          96            17.7          18            6.5           4 \r\n 1999          97            21.9          21.5          5             0 \r\n 1999          98            5.1           23.5          8             0 \r\n 1999          99            4.3           16            8             17 \r\n 1999          100           10.4          14            7             0 \r\n 1999          101           6             15.5          6             0 \r\n 1999          102           20            12.5          3             0 \r\n 1999          103           16.9          16.5          4.5           0 \r\n 1999          104           13.5          17            6.5           0 \r\n 1999          105           3.4           15.5          7.5           0 \r\n 1999          106           7.9           9.5           4.5           34 \r\n 1999          107           12.5          11            3             1 \r\n 1999          108           16.9          12.5          3.5           0 \r\n 1999          109           15.7          15            2             0 \r\n 1999          110           9.8           15.5          3.5           1 \r\n 1999          111           13.3          16.5          6             2 \r\n 1999          112           8             20            9             4 \r\n 1999          113           11.3          17            6.5           30 \r\n 1999          114           26.1          15            5             0 \r\n 1999          115           23.2          17.5          4             0 \r\n 1999          116           13.5          19            8.5           0 \r\n 1999          117           7.8           18.5          10.5          11 \r\n 1999          118           10.2          15.5          8             7 \r\n 1999          119           28.5          17            7             4 \r\n 1999          120           29            20.5          5.5           0 \r\n 1999          121           27.8          22.5          4.5           0 \r\n 1999          122           26.7          24            7.5           0 \r\n 1999          123           22.8          25.5          12            0 \r\n 1999          124           13.3          25.5          16            0 \r\n 1999          125           20.2          24            15.5          11 \r\n 1999          126           8             21.5          9.5           1 \r\n 1999          127           7.8           16            10            1 \r\n 1999          128           9.9           14            10            0 \r\n 1999          129           24.7          18            9             0 \r\n 1999          130           25.4          25.5          11            0 \r\n 1999          131           15.7          28            15.5          0 \r\n 1999          132           9.7           24            14.5          3 \r\n 1999          133           6.6           18.5          11            26 \r\n 1999          134           27            19.5          8             5 \r\n 1999          135           9.1           20.5          12            0 \r\n 1999          136           14.8          26            15.5          1 \r\n 1999          137           13.3          27            16.5          7 \r\n 1999          138           29.8          22            13            12 \r\n 1999          139           30.1          23.5          9             0 \r\n 1999          140           19.2          24.5          11.5          0 \r\n 1999          141           8.7           24.5          15            0 \r\n 1999          142           26.6          24            13            13 \r\n 1999          143           20.7          24.5          14            0 \r\n 1999          144           29            19.5          10.5          0 \r\n 1999          145           30.4          20.5          10            0 \r\n 1999          146           29.3          23            10            0 \r\n 1999          147           31            26.5          10            0 \r\n 1999          148           30.1          29            13            0 \r\n 1999          149           29.5          29.5          14.5          0 \r\n 1999          150           24.1          29            14.5          0 \r\n 1999          151           14.7          27.5          17            0 \r\n 1999          152           10.5          27            14.5          0 \r\n 1999          153           14.3          24            15            15 \r\n 1999          154           23            24.5          13            0 \r\n 1999          155           10.7          26            13.5          0 \r\n 1999          156           23.3          29.5          17            25 \r\n 1999          157           14.2          31.5          20            0 \r\n 1999          158           30.7          31            19.5          13 \r\n 1999          159           23.3          32            19            0 \r\n 1999          160           26            32.5          19            16 \r\n 1999          161           14.4          32            19.5          0 \r\n 1999          162           17.9          30.5          20.5          10 \r\n 1999          163           19.7          28.5          19.5          0 \r\n 1999          164           17.4          27            18.5          13 \r\n 1999          165           30.8          24.5          14.5          1 \r\n 1999          166           21.7          22            10            0 \r\n 1999          167           17.4          20.5          12            0 \r\n 1999          168           27.2          21            10.5          0 \r\n 1999          169           27.5          22.5          9.5           0 \r\n 1999          170           20.6          25            13.5          0 \r\n 1999          171           22.4          27            15.5          0 \r\n 1999          172           21.6          28.5          17.5          0 \r\n 1999          173           17.3          30.5          19            0 \r\n 1999          174           11.9          28.5          20.5          0 \r\n 1999          175           29.8          29.5          19.5          4 \r\n 1999          176           28.5          32            19.5          0 \r\n 1999          177           22.7          32            21            0 \r\n 1999          178           14.7          31            20            0 \r\n 1999          179           14            28.5          19            15 \r\n 1999          180           21.8          25            13            0 \r\n 1999          181           22.2          25.5          15.5          0 \r\n 1999          182           21.8          27.5          16.5          28 \r\n 1999          183           18.8          29            17            0 \r\n 1999          184           18.2          32            22            0 \r\n 1999          185           29.9          33.5          23.5          0 \r\n 1999          186           28.9          33.5          24            0 \r\n 1999          187           29.2          32            22.5          0 \r\n 1999          188           31.5          29.5          15.5          0 \r\n 1999          189           28.9          31            17            0 \r\n 1999          190           22.1          31            19.5          7 \r\n 1999          191           26.8          28            16            5 \r\n 1999          192           26.6          26            14            0 \r\n 1999          193           26.8          27.5          13            0 \r\n 1999          194           27.2          28.5          13.5          0 \r\n 1999          195           28.8          29.5          16.5          0 \r\n 1999          196           27            32            19            0 \r\n 1999          197           24.6          33            21.5          0 \r\n 1999          198           18.6          31            20.5          0 \r\n 1999          199           21.5          32            19            0 \r\n 1999          200           17.6          33            22.5          2 \r\n 1999          201           17.4          33.5          23            9 \r\n 1999          202           26.6          34.5          22.5          0 \r\n 1999          203           27.5          35.5          23.5          0 \r\n 1999          204           23.1          36            23.5          0 \r\n 1999          205           28.2          36            21            24 \r\n 1999          206           27.6          36.5          22            0 \r\n 1999          207           11.3          35.5          23.5          0 \r\n 1999          208           20.3          31.5          22            1 \r\n 1999          209           26.1          34            21            24 \r\n 1999          210           27.9          36            23            0 \r\n 1999          211           27.8          37.5          25.5          0 \r\n 1999          212           13.6          34.5          24            0 \r\n 1999          213           26.4          29            18            1 \r\n 1999          214           14.4          26.5          17.5          0 \r\n 1999          215           22.1          27.5          15.5          0 \r\n 1999          216           24.6          28.5          17            0 \r\n 1999          217           26.2          28.5          16            0 \r\n 1999          218           22.3          29.5          16            0 \r\n 1999          219           9.9           29            18.5          9 \r\n 1999          220           21.4          27            18            21 \r\n 1999          221           22.5          25.5          13.5          0 \r\n 1999          222           25.1          28.5          17.5          11 \r\n 1999          223           11.9          28.5          17.5          0 \r\n 1999          224           10.5          28.5          18.5          39 \r\n 1999          225           8.1           27.5          17            12 \r\n 1999          226           24.9          23            13            0 \r\n 1999          227           26.5          25.5          13            0 \r\n 1999          228           17            29.5          15.5          0 \r\n 1999          229           26.1          32            18            0 \r\n 1999          230           7.4           28.5          18            0 \r\n 1999          231           14.8          24            18            11 \r\n 1999          232           21.7          25.5          14.5          0 \r\n 1999          233           15.7          26            13.5          0 \r\n 1999          234           13.1          27            15            0 \r\n 1999          235           13.3          28.5          17.5          2 \r\n 1999          236           10.4          26.5          14.5          3 \r\n 1999          237           20.8          26.5          16.5          0 \r\n 1999          238           19.8          29            16.5          0 \r\n 1999          239           22.1          31            17            0 \r\n 1999          240           21.5          32            19            0 \r\n 1999          241           20.5          30.5          19.5          0 \r\n 1999          242           19.7          26            13            0 \r\n 1999          243           20.6          25.5          13            0 \r\n 1999          244           22.6          29.5          13.5          0 \r\n 1999          245           23.5          32.5          15            0 \r\n 1999          246           18.2          33            19.5          0 \r\n 1999          247           20.2          33            20            0 \r\n 1999          248           15.3          30.5          19            0 \r\n 1999          249           24.2          27            12.5          0 \r\n 1999          250           21.9          29            13            0 \r\n 1999          251           23.8          28            15.5          0 \r\n 1999          252           20.7          24            10.5          0 \r\n 1999          253           23.6          23.5          8.5           0 \r\n 1999          254           22.8          27.5          8             0 \r\n 1999          255           7.7           27            12            0 \r\n 1999          256           14.1          20            9             4 \r\n 1999          257           20.4          20.5          7             0 \r\n 1999          258           15.1          21            5.5           0 \r\n 1999          259           21            21.5          5.5           0 \r\n 1999          260           21.2          23            5.5           0 \r\n 1999          261           20.8          25.5          7             0 \r\n 1999          262           11.6          26.5          11.5          0 \r\n 1999          263           12.1          22            10            9 \r\n 1999          264           19.3          17.5          4.5           0 \r\n 1999          265           19.9          21.5          3.5           0 \r\n 1999          266           19            27            7             0 \r\n 1999          267           16            26.5          11            0 \r\n 1999          268           16.5          27            10.5          0 \r\n 1999          269           10.7          29            13.5          0 \r\n 1999          270           3.3           23.5          12            12 \r\n 1999          271           4.8           14.5          11.5          70 \r\n 1999          272           18.7          16.5          7             11 \r\n 1999          273           18.1          20.5          5             0 \r\n 1999          274           13.6          19.5          3.5           0 \r\n 1999          275           13            15.5          5             0 \r\n 1999          276           1.8           10            4             4 \r\n 1999          277           15.6          11            3.5           12 \r\n 1999          278           18.3          18            3.5           0 \r\n 1999          279           18.1          19.5          5             0 \r\n 1999          280           17.1          23            7.5           0 \r\n 1999          281           12.4          24.5          11.5          0 \r\n 1999          282           14.2          24.5          10            0 \r\n 1999          283           16.6          25            11            0 \r\n 1999          284           17.3          23.5          7             0 \r\n 1999          285           13.1          25            8             0 \r\n 1999          286           11.1          24            9             0 \r\n 1999          287           14.5          17            1.5           0 \r\n 1999          288           15.4          24.5          6             0 \r\n 1999          289           12.5          26            10.5          16 \r\n 1999          290           11.7          16            4             0 \r\n 1999          291           12.9          12.5         -1.5           0 \r\n 1999          292           10.3          13            0.5           0 \r\n 1999          293           13.9          13.5          1             0 \r\n 1999          294           12.7          19            3             0 \r\n 1999          295           9.8           20            5.5           0 \r\n 1999          296           14            11            0             0 \r\n 1999          297           14.1          11.5         -3             0 \r\n 1999          298           13.5          17.5          0             0 \r\n 1999          299           11.5          20            2             0 \r\n 1999          300           13            21.5          4             0 \r\n 1999          301           11.6          23.5          8.5           0 \r\n 1999          302           8.7           25.5          12            0 \r\n 1999          303           8.3           23            13            0 \r\n 1999          304           11.7          21            4.5           0 \r\n 1999          305           6.8           21            5.5           0 \r\n 1999          306           10.3          15            1             0 \r\n 1999          307           12.6          10.5         -4             0 \r\n 1999          308           12            16.5         -2             0 \r\n 1999          309           11.3          18.5          3.5           0 \r\n 1999          310           11.4          17            3.5           0 \r\n 1999          311           11.3          17.5          6             0 \r\n 1999          312           11.4          23            5.5           0 \r\n 1999          313           11.1          25            9.5           0 \r\n 1999          314           10.4          21.5          11            0 \r\n 1999          315           6             13            5             0 \r\n 1999          316           9             16            1.5           0 \r\n 1999          317           11            23            2.5           0 \r\n 1999          318           10.5          19.5          4.5           0 \r\n 1999          319           7.7           11.5         -2             0 \r\n 1999          320           10.4          11.5         -2.5           0 \r\n 1999          321           9             12           -1             0 \r\n 1999          322           10.1          18            3.5           0 \r\n 1999          323           3.6           20            4.5           0 \r\n 1999          324           9.2           12           -1.5           0 \r\n 1999          325           9.5           14            0.5           0 \r\n 1999          326           9.2           15.5          2             0 \r\n 1999          327           2.9           16.5          3.5           3 \r\n 1999          328           9.3           12.5         -0.5           2 \r\n 1999          329           9             9.5          -4.5           0 \r\n 1999          330           4.4           9            -2.5           0 \r\n 1999          331           8.1           9.5           1             0 \r\n 1999          332           6.6           9            -1             0 \r\n 1999          333           8.9           6.5          -3.5           0 \r\n 1999          334           5.8           4.5          -8.5           0 \r\n 1999          335           6.5           8            -3.5           0 \r\n 1999          336           5.5           13.5          4             0 \r\n 1999          337           2.8           16            7.5           0.25 \r\n 1999          338           2.3           11.5          3.5           7.37 \r\n 1999          339           2.5           7.5           0             12.19 \r\n 1999          340           6.6           2.5          -7             7.62 \r\n 1999          341           7.6           5.5          -4.5           0 \r\n 1999          342           8.2           9             0             0 \r\n 1999          343           1.5           9             2             1.52 \r\n 1999          344           8.9           5.5          -2.5           5.59 \r\n 1999          345           8.7           4.5          -4             0 \r\n 1999          346           5.8           6            -2.5           0 \r\n 1999          347           7.5           5            -4.5           0 \r\n 1999          348           4.9           4            -2.5           0 \r\n 1999          349           2.7           3            -1             0 \r\n 1999          350           7.9           0.5          -10            3.81 \r\n 1999          351           3.5          -3.5          -8.5           2.03 \r\n 1999          352           4.8          -3            -12.5          0 \r\n 1999          353           4.2           0            -8             0 \r\n 1999          354           5.7           0.5          -12            1.78 \r\n 1999          355           6.4          -9.5          -19.5          0 \r\n 1999          356           5.5          -9.5          -16.5          0.25 \r\n 1999          357           5.1          -6.5          -19            0 \r\n 1999          358           5.8          -4            -17.5          3.05 \r\n 1999          359           7.1          -1.5          -14.5          0 \r\n 1999          360           6.4           3.5          -7             0 \r\n 1999          361           3.2          -1            -8             0.76 \r\n 1999          362           5.6           1.5          -13            0 \r\n 1999          363           9.2           9            -5             0 \r\n 1999          364           7.8           10.5         -2             0 \r\n 1999          365           9.3           7.5          -3.5           0 \r\n 2000          1             5.245439      13.92         2.049444      0 \r\n 2000          2             3.761918      3.760556     -0.5544444     0 \r\n 2000          3             4.982976     -6.333333E-02               -9.894444      0 \r\n 2000          4             6.204035     -2.362778     -16.20111      6.86 \r\n 2000          5             5.345855      0.7944444    -6.01          0 \r\n 2000          6             9.007943     -0.8233333    -10.805        0 \r\n 2000          7             9.09769       6.895555     -4.187222      0 \r\n 2000          8             7.997005      6.470556      2.956111      0 \r\n 2000          9             1.754184      8.998889      0.5583333     4.06 \r\n 2000          10            8.558958      6.008889     -3.62          0.25 \r\n 2000          11            6.670509      1.448333     -3.906667      0 \r\n 2000          12            5.481249      1.113889     -8.682222      0 \r\n 2000          13            8.998446      0.9188889    -10.47278      0 \r\n 2000          14            5.759862      7.056111     -2.89          0 \r\n 2000          15            5.830362      4.630556     -4.433889      0 \r\n 2000          16            5.787225     -1.441667     -4.698889      0 \r\n 2000          17            6.872785      3.655        -4.271111      0 \r\n 2000          18            7.958344      0.3566667    -5.453333      0.76 \r\n 2000          19            2.315886     -2.745556     -21.06167      0 \r\n 2000          20            10.61673     -9.728889     -17.62222      8.89 \r\n 2000          21            9.810517     -3.440556     -12.33556      0 \r\n 2000          22            7.489276     -5.926667     -13.67778      3.05 \r\n 2000          23            10.07926     -3.879444     -23.53222      0.25 \r\n 2000          24            10.2331      -2.412778     -12.75889      0 \r\n 2000          25            8.880456     -7.548889     -20.45056      0 \r\n 2000          26            11.44521     -4.718333     -21.13222      0 \r\n 2000          27            11.04471     -4.794445     -16.15556      0 \r\n 2000          28            9.394042     -3.219445     -7.313334      0 \r\n 2000          29            6.998995     -2.444444     -6.139444      0 \r\n 2000          30            8.68385      -1.396667     -16.10444      6.35 \r\n 2000          31            11.46608     -2.187222     -12.18556      0 \r\n 2000          32            8.499377      0.115        -14.81389      0 \r\n 2000          33            9.608263      2.781667     -2.800555      0 \r\n 2000          34            6.571097      0.9844444    -5.35          0 \r\n 2000          35            9.314379      0            -7.012778      0.51 \r\n 2000          36            12.12573      3.08         -7.062222      0 \r\n 2000          37            8.113153      0.8138889    -9.411667      0 \r\n 2000          38            10.60916      0.4005556    -9.503889      0 \r\n 2000          39            8.516867      9.047778     -1.771111      0 \r\n 2000          40            10.65615      4.531111      0.8905556     0 \r\n 2000          41            4.686122      1.73         -4.861667      0 \r\n 2000          42            10.38532      1.156667     -6.745555      0 \r\n 2000          43            5.94015       1.35         -2.231111      0 \r\n 2000          44            4.108604     -9.555556E-02               -4.045         0.51 \r\n 2000          45            7.675339      9.258889     -2.556667      1.78 \r\n 2000          46            11.71758      8.467778     -4.303889      0 \r\n 2000          47            13.83653      1.970556     -4.493333      0 \r\n 2000          48            4.477215      0.2083333    -2.853333      0 \r\n 2000          49            5.222427     -1.238889     -8.681666      6.86 \r\n 2000          50            10.83844      0.2738889    -10.77389      16.76 \r\n 2000          51            15.27863      9.354445     -9.320556      0 \r\n 2000          52            13.04488      15.22444      4.041111      0 \r\n 2000          53            10.23599      15.15         8.590555      0 \r\n 2000          54            7.082801      14.12389      9.855         0 \r\n 2000          55            4.833817      19.63722      7.526111      6.35 \r\n 2000          56            6.143995      17.37722      8.73          0 \r\n 2000          57            10.43778      12.70167      1.412222      22.61 \r\n 2000          58            16.3981       16.09722     -1.857778      0.25 \r\n 2000          59            15.56548      17.00278      6.637778      0 \r\n 2000          60            8.075956      12.97167      1.257222      0 \r\n 2000          61            15.7433       7.118889     -2.201111      8.89 \r\n 2000          62            14.49107      8.081667     -1.712778      0 \r\n 2000          63            13.5511       18.14778     -2.409444      0 \r\n 2000          64            16.67303      20.69389      3.082778      0 \r\n 2000          65            17.30322      21.47445      3.238889      0 \r\n 2000          66            16.11991      23.03111      4.179444      0 \r\n 2000          67            15.12307      26.23         12.12944      0 \r\n 2000          68            13.24215      24.65889      12.40667      0 \r\n 2000          69            8.090517      7.626667      1.203889      0 \r\n 2000          70            4.581647      3.701667     -0.6355556     0 \r\n 2000          71            18.81934      8.041667     -1.617222      0 \r\n 2000          72            12.5469       12.64889     -4.878889      0 \r\n 2000          73            8.913928      9.740556     -1.153333      0.76 \r\n 2000          74            12.28485      15.90389     -1.171667      0 \r\n 2000          75            5.496354      18.17111      1.311111      0 \r\n 2000          76            19.96667      8.428333     -2.625         0.76 \r\n 2000          77            20.94297      8.699445     -5.948333      0 \r\n 2000          78            3.408914      5.11         -1.915556      0 \r\n 2000          79            4.049233      4.177778      0.4966667     6.1 \r\n 2000          80            2.561989      8.02          1.861111      14.22 \r\n 2000          81            6.195374      12.75         5.667778      0 \r\n 2000          82            6.485033      13.15         8.48          0 \r\n 2000          83            18.29663      21.02         5.802222      0 \r\n 2000          84            11.51161      21.69         10.81         5.33 \r\n 2000          85            22.20415      18.29         4.875         0 \r\n 2000          86            17.33829      22.77        -0.7461111     0 \r\n 2000          87            16.91348      15.36         2.66          2.03 \r\n 2000          88            19.18632      12.35        -1.21          0.51 \r\n 2000          89            22.99798      15.61        -2.477778      0 \r\n 2000          90            20.46943      16.95        -1.21          0 \r\n 2000          91            21.53204      20.69        -1.01          0 \r\n 2000          92            3.170259      13.97         7.41          0 \r\n 2000          93            19.48631      17.52944      2.569444      0 \r\n 2000          94            11.22015      13.67278      5.086667      0 \r\n 2000          95            23.99758      12.01722     -0.7922222     0 \r\n 2000          96            20.02981      27.285        3.222222E-02                0 \r\n 2000          97            16.86294      24.33111      4.776667      0 \r\n 2000          98            4.31111       12.35278      0.5044444     14.9606 \r\n 2000          99            24.37243      10.61833     -3.642778      0 \r\n 2000          100           23.63224      17.48         1.196111      0 \r\n 2000          101           7.825168      9.68          2.996111      0 \r\n 2000          102           10.88459      8.95         -0.3377778     0 \r\n 2000          103           22.28227      13.75        -2.677222      0 \r\n 2000          104           24.73631      21.56         1.863889      0 \r\n 2000          105           22.7433       26.61         4.407222      0 \r\n 2000          106           23.54646      26.07         10.01         0 \r\n 2000          107           9.601025      17.76         6.67          0 \r\n 2000          108           5.994542      8.82          4.4           0 \r\n 2000          109           19.84304      18.68         7.41          0 \r\n 2000          110           7.049706      22.36         10.21         25.146 \r\n 2000          111           3.944173      18.5          4.466111      47.752 \r\n 2000          112           26.83706      16.82         3.735         0.254 \r\n 2000          113           25.01568      23.35         1.397778      0 \r\n 2000          114           9.573452      16.89         9.61          0.762 \r\n 2000          115           24.69526      20.69         7.61          0 \r\n 2000          116           27.04655      20.48         3.071111      0 \r\n 2000          117           26.42008      24.73         3.807778      0 \r\n 2000          118           16.63316      20.35         9.35          0 \r\n 2000          119           18.77737      24.35         10.41         0 \r\n 2000          120           15.18403      16.95         8.08          0 \r\n 2000          121           25.50884      26.95         6.28          0 \r\n 2000          122           9.762402      22.75         10.54         0 \r\n 2000          123           25.50788      25.47         6.477222      0 \r\n 2000          124           19.13021      28.2          8.41          0 \r\n 2000          125           20.93284      28.93         15.75         0 \r\n 2000          126           21.78358      29.87         12.41         0 \r\n 2000          127           22.11035      30.54         15.56         0 \r\n 2000          128           18.51223      30.34         18.21         0 \r\n 2000          129           15.3772       30.47         17.68         0 \r\n 2000          130           2.89173       17.89         10.67         35.56 \r\n 2000          131           18.21642      21.83         6.811111      0 \r\n 2000          132           9.24505       30.41         16.82         0 \r\n 2000          133           7.555509      25.47         13.01         0 \r\n 2000          134           19.52229      15.16         6.472222      0 \r\n 2000          135           26.08762      22.28         2.936111      0 \r\n 2000          136           16.5073       24.42         4.272778      0 \r\n 2000          137           17.2062       23.95         12.74         2.286 \r\n 2000          138           10.5136       27.37         16.01         5.334 \r\n 2000          139           11.77708      29.55         10.21         33.782 \r\n 2000          140           15.67448      16.82         7.67          0 \r\n 2000          141           21.92052      21.49         6.078889      0 \r\n 2000          142           16.53241      22.75         7.75          0.508 \r\n 2000          143           20.00621      30.54         12.49         0.508 \r\n 2000          144           19.99266      27.88         14.08         0 \r\n 2000          145           26.20326      29.67         16.01         0 \r\n 2000          146           29.3503       26.41         9.96          0 \r\n 2000          147           3.321803      18.36         13.41         13.97 \r\n 2000          148           7.907718      21.43         14.29         2.54 \r\n 2000          149           3.46272       16.75         12.34         1.016 \r\n 2000          150           14.84692      21.56         12.21         0 \r\n 2000          151           13.65289      29.36         16.09         0 \r\n 2000          152           10.76685      28.96         18.42         44.958 \r\n 2000          153           26.40217      34.12         19.01         4.572 \r\n 2000          154           24.14938      23.28         14.76         4.064 \r\n 2000          155           28.75128      24.95         10.69         0 \r\n 2000          156           7.797888      19.3          12.68         2.54 \r\n 2000          157           13.78013      19.82         11.22         3.048 \r\n 2000          158           29.36427      24.75         8.02          0 \r\n 2000          159           27.50817      27.48         9.82          0 \r\n 2000          160           28.24037      33.73         17.69         0 \r\n 2000          161           27.96711      32.73         16.1          0 \r\n 2000          162           18.29111      31.61         22.22         1.016 \r\n 2000          163           14.31602      29.67         22.15         0.254 \r\n 2000          164           14.62597      24.49         17.89         15.494 \r\n 2000          165           7.909601      27.17         17.82         35.052 \r\n 2000          166           13.2283       25.02         17.49         7.62 \r\n 2000          167           29.4431       28.69         15.02         0 \r\n 2000          168           17.05913      24.69         15.09         1.524 \r\n 2000          169           26.84396      22.01         8.95          0 \r\n 2000          170           30.00204      25.87         11.62         0 \r\n 2000          171           26.89366      28.61         11.15         0 \r\n 2000          172           14.90542      28.29         21.16         5.842 \r\n 2000          173           28.86152      28.02         17.02         0 \r\n 2000          174           30.07012      30.41         17.22         0 \r\n 2000          175           14.24271      31.68         14.15         13.462 \r\n 2000          176           4.18241       21.09         18.02         56.642 \r\n 2000          177           24.0439       29.74         16.36         5.842 \r\n 2000          178           23.35295      26.41         17.35         2.54 \r\n 2000          179           27.25324      25.88         14.42         0 \r\n 2000          180           13.02207      23.3          13.28         0.254 \r\n 2000          181           28.57802      25.55         12.69         0 \r\n 2000          182           24.35109      29.48         14.96         0 \r\n 2000          183           24.62527      29.47         14.62         0 \r\n 2000          184           20.29876      33.27         17.49         11.43 \r\n 2000          185           13.56616      27.82         19.68         1.778 \r\n 2000          186           6.896236      24.35         19.88         20.828 \r\n 2000          187           10.60079      27.95         21.09         0.254 \r\n 2000          188           15.71452      31.21         19.48         0 \r\n 2000          189           25.09229      30.81         17.82         0 \r\n 2000          190           24.48159      33.4          20.22         0 \r\n 2000          191           14.11213      30.08         20.78         0 \r\n 2000          192           13.46595      29.41         20.89         36.068 \r\n 2000          193           13.61574      29.15         21.09         0 \r\n 2000          194           11.43136      27.82         20.89         0 \r\n 2000          195           28.0274       31.54         19.16         0 \r\n 2000          196           28.0256       30.88         20.82         0 \r\n 2000          197           27.91741      31.07         17.17         0 \r\n 2000          198           21.64613      30.67         17.03         0 \r\n 2000          199           18.49136      29.67         18.29         0 \r\n 2000          200           11.02212      23.17         14.22         3.048 \r\n 2000          201           17.37686      23.15         15.09         0 \r\n 2000          202           16.80587      24.96         14.89         0 \r\n 2000          203           24.96769      25.28         11.89         0 \r\n 2000          204           24.31168      27.15         11.22         0 \r\n 2000          205           21.66283      27.48         13.68         0 \r\n 2000          206           24.13423      28.01         12.63         0 \r\n 2000          207           19.01222      28.42         13.36         0 \r\n 2000          208           9.793907      28.82         16.95         6.858 \r\n 2000          209           25.2337       30.27         16.82         0 \r\n 2000          210           23.06668      29.74         16.69         0 \r\n 2000          211           13.1296       26.28         16.95         5.334 \r\n 2000          212           13.46951      26.81         17.49         4.826 \r\n 2000          213           20.71507      29.74         16.36         0.254 \r\n 2000          214           21.37221      31.08         19.03         0 \r\n 2000          215           24.62928      29.74         19.29         0 \r\n 2000          216           22.28089      26.34         15.56         0 \r\n 2000          217           24.25197      28.61         15.63         0 \r\n 2000          218           7.293088      27.68         16.77         6.858 \r\n 2000          219           15.61937      31.88         19.69         4.318 \r\n 2000          220           22.44775      32.14         17.22         0 \r\n 2000          221           16.91248      29.47         19.68         8.128 \r\n 2000          222           24.36569      30.21         19.96         3.302 \r\n 2000          223           25.38617      30.07         16.1          0 \r\n 2000          224           23.25551      31            16.77         0 \r\n 2000          225           24.17992      30.94         16.23         0 \r\n 2000          226           17.19846      29.34         19.56         10.668 \r\n 2000          227           22.98568      33.4          19.29         0 \r\n 2000          228           22.05725      32.79         19.49         0 \r\n 2000          229           21.44869      28.68         15.16         0 \r\n 2000          230           16.22066      29.27         17.75         0 \r\n 2000          231           20.58658      25.41         14.15         0 \r\n 2000          232           16.98302      25.67         11.42         0 \r\n 2000          233           16.70508      25.62         16.21         0 \r\n 2000          234           15.44762      28.95         15.96         0 \r\n 2000          235           10.76535      29.08         17.89         0.762 \r\n 2000          236           11.91285      29.74         19.82         1.016 \r\n 2000          237           20.43298      31.21         17.62         0.254 \r\n 2000          238           19.5512       32.34         15.49         0 \r\n 2000          239           13.21859      33.34         19.82         0 \r\n 2000          240           11.63867      28.35         18.83         0 \r\n 2000          241           15.15215      32.27         20.08         3.048 \r\n 2000          242           13.73892      30.14         21.69         0 \r\n 2000          243           12.1687       32.8          20.15         0 \r\n 2000          244           20.30349      37.86         22.35         0 \r\n 2000          245           18.9659       37.59         22.56         0 \r\n 2000          246           19.41999      38.72         21.42         0 \r\n 2000          247           10.37916      31.01         22.35         0.762 \r\n 2000          248           13.24621      22.75         14.96         0 \r\n 2000          249           21.80692      23.82         10.21         0 \r\n 2000          250           22.03755      27.82         8.41          0 \r\n 2000          251           18.19241      32.2          11.55         0 \r\n 2000          252           17.04378      33.33         19.95         0 \r\n 2000          253           12.54204      30.47         19.16         0 \r\n 2000          254           15.06027      34.33         21.56         2.032 \r\n 2000          255           18.10588      37.33         20.12         13.716 \r\n 2000          256           21.05832      24.76         11.95         0 \r\n 2000          257           20.13496      30.74         9.35          0 \r\n 2000          258           16.01062      26.83         11.35         10.414 \r\n 2000          259           20.50775      21.29         8.08          0 \r\n 2000          260           20.17918      24.22         4.482222      0 \r\n 2000          261           19.3915       31.55         12.29         0 \r\n 2000          262           17.9817       33.28         10.95         0 \r\n 2000          263           5.801618      28.11         16.29         2.032 \r\n 2000          264           5.536813      17.44         8.55          19.304 \r\n 2000          265           18.7162       19.82         5.14          0 \r\n 2000          266           5.248953      23.24         10.75         39.624 \r\n 2000          267           3.415734      19.75         11.49         5.842 \r\n 2000          268           2.889972      12.83         7.81          4.064 \r\n 2000          269           15.63665      18.02         5.138889      5.08 \r\n 2000          270           18.50349      22.1          3.003889      0 \r\n 2000          271           17.96509      25.81         5.473889      0 \r\n 2000          272           17.37753      23.48         8.48          0 \r\n 2000          273           17.17193      26.89         5.34          0 \r\n 2000          274           12.46292      26.56         12.89         0 \r\n 2000          275           14.35388      29.75         13.29         0 \r\n 2000          276           9.733072      25.09         11.55         0 \r\n 2000          277           11.10877      24.15         7.67          19.812 \r\n 2000          278           14.47062      18.68         8.95          8.89 \r\n 2000          279           1.637492      13.23         5.943889      2.286 \r\n 2000          280           11.67344      8.21          0.3288889     0 \r\n 2000          281           10.15838      7.74         -2.817222      0 \r\n 2000          282           16.51672      9.29         -2.145         0 \r\n 2000          283           16.00891      14.49        -3.082222      0 \r\n 2000          284           15.94012      18.23        -1.203889      0 \r\n 2000          285           16.07012      21.22        -2.145         0 \r\n 2000          286           13.90021      25.49         4.212222      0 \r\n 2000          287           11.04266      26.61         10.48         0 \r\n 2000          288           13.15324      27.35         13.95         0.254 \r\n 2000          289           12.12289      22.48         9.34          0 \r\n 2000          290           5.762079      15.76         4.533889      0 \r\n 2000          291           11.657        19.88         5.071111      0 \r\n 2000          292           13.86381      24.96         2.936111      0 \r\n 2000          293           13.82059      28.09         5.138889      0 \r\n 2000          294           12.49832      27.01         10.56         0 \r\n 2000          295           11.62144      26.34         7.67          0 \r\n 2000          296           3.961328      18.29         7.27          0.254 \r\n 2000          297           3.982289      21.49         13.68         4.064 \r\n 2000          298           5.356943      22.23         12.61         0.254 \r\n 2000          299           8.941919      25.88         13.68         1.016 \r\n 2000          300           6.691136      23.75         14.35         0 \r\n 2000          301           11.37793      21.56         9.54          0 \r\n 2000          302           6.056424      13.35         9.29          0 \r\n 2000          303           7.819185      16.7          6.146111      0 \r\n 2000          304           8.809119      22.28         10.48         0 \r\n 2000          305           10.13846      24.29         7.94          0 \r\n 2000          306           9.221912      27.28         10.34         0 \r\n 2000          307           11.93319      21.36         8.28          0 \r\n 2000          308           10.6987       14.09         2.398889      0 \r\n 2000          309           9.60228       16.55         0.7322222     0 \r\n 2000          310           9.696922      18.36        -0.9377778     0 \r\n 2000          311           7.17692       14.56         6.872778      12.0396 \r\n 2000          312           4.656918      10.81         2.667778      0 \r\n 2000          313           6.887743      3.407222     -2.75          8.2804 \r\n 2000          314           1.862926      2.398889      0.06          5.4864 \r\n 2000          315           2.719935      0.9938889    -2.885         0 \r\n 2000          316           1.788116      4.547222     -4.285         0 \r\n 2000          317           1.440635      6.415         0.6522222     0 \r\n 2000          318           1.97966       0.8527778    -2.09          0 \r\n 2000          319           2.545713      1.472222     -3.557222      0 \r\n 2000          320           9.376135      8.75         -7.91          0 \r\n 2000          321           2.208524      6.751111     -4.297222      0 \r\n 2000          322           4.790764     -0.8761111    -8.44          0 \r\n 2000          323           2.56521      -0.7461111    -8.71          0 \r\n 2000          324           5.744841      6.078889     -6.828889      0 \r\n 2000          325           6.782264     -3.826111     -9.72          0 \r\n 2000          326           5.712708     -1.607222     -13.74         0 \r\n 2000          327           9.4986        2.197222     -14.21         0 \r\n 2000          328           9.47517       7.74         -11.46         0 \r\n 2000          329           8.452224      9.95         -9.72          0 \r\n 2000          330           3.350464      8.62         -2.547778      0 \r\n 2000          331           6.873475      6.808889     -1.888889      0 \r\n 2000          332           6.641305      6.952222     -2.952222      0 \r\n 2000          333           6.402901      7.55         -4.825         3.2512 \r\n 2000          334           2.393959      2.535        -8.888889E-03                0 \r\n 2000          335           3.094947      2.466111     -0.5438889     0 \r\n 2000          336           2.26664       1.927778     -1.417778      1.27 \r\n 2000          337           5.334056      1.461111     -7.7           1.27 \r\n 2000          338           8.853637      2.332222     -10.92         0 \r\n 2000          339           6.452607      4.937778     -5.44          0 \r\n 2000          340           5.67932      -5.237778     -13.54         0 \r\n 2000          341           2.330446     -3.555        -11.46         0 \r\n 2000          342           4.325001      9.29         -4.095         0 \r\n 2000          343           6.292819      1.391111     -11.86         0 \r\n 2000          344           3.649912     -7.222222E-03               -12.2          0 \r\n 2000          345           2.053716      0.9338889    -10.66         0.51 \r\n 2000          346           2.204215     -10.4         -16.43         8.89 \r\n 2000          347           8.308838     -16.09        -26.18         10.16 \r\n 2000          348           2.991225     -10.32        -24.16         0 \r\n 2000          349           5.306023     -5.972222     -16.3          4.06 \r\n 2000          350           3.848527     -0.88         -13.28         0 \r\n 2000          351           4.929421      0.3972222    -15.63         6.86 \r\n 2000          352           8.370678     -15.42        -21            0 \r\n 2000          353           3.504058     -10.73        -18.57         0 \r\n 2000          354           8.205242     -12.54        -22.88         3.56 \r\n 2000          355           3.447951     -8.11         -23.75         0 \r\n 2000          356           7.869811     -8.17         -20.19         6.86 \r\n 2000          357           8.325951     -15.48        -22.54         0 \r\n 2000          358           4.407384     -4.828889     -16.9          0 \r\n 2000          359           8.433312     -16.7         -25.23         0 \r\n 2000          360           5.555683     -14.28        -28.33         0 \r\n 2000          361           4.085927     -5.967222     -15.43         0 \r\n 2000          362           8.904138     -9.06         -21.2          1.27 \r\n 2000          363           2.671819     -8.44         -21            0 \r\n 2000          364           3.323267     -7.24         -11.27         9.91 \r\n 2000          365           5.615597     -7.04         -10.53         1.27 \r\n 2000          366           5.592293     -10.05        -16.03         0.76 \r\n 2001          1             5.57359      -10.4         -25.24         0.76 \r\n 2001          2             8.26135      -9.79         -24.63         0 \r\n 2001          3             6.716533     -0.4222222    -11.13         0 \r\n 2001          4             5.407653      3.272778     -4.755         0 \r\n 2001          5             9.182039      3.272222     -7.31          0 \r\n 2001          6             8.936605      4.802778     -9.79          0 \r\n 2001          7             4.969337     -0.205        -10.66         0 \r\n 2001          8             7.713999     -3.822778     -15.09         0 \r\n 2001          9             8.564565     -5.305        -21.67         0 \r\n 2001          10            9.24572       4.736111     -10.8          0 \r\n 2001          11            3.51205       3.407222     -8.11          0 \r\n 2001          12            3.202685      2.062222     -0.215         3.81 \r\n 2001          13            4.905196      4.135         0.1872222     0 \r\n 2001          14            2.229654      3.001111      0.32          6.35 \r\n 2001          15            4.220986      1.256111     -2.09          2.54 \r\n 2001          16            4.1217       -1.753889     -9.79          0 \r\n 2001          17            9.582992     -2.493889     -11.6          0 \r\n 2001          18            8.528373      0.2511111    -10.26         0 \r\n 2001          19            4.378891     -1.217222     -13.69         0.25 \r\n 2001          20            10.58263     -6.703889     -20.32         0 \r\n 2001          21            10.29427     -2.917778     -15.22         0 \r\n 2001          22            10.25419     -0.7527778    -17.1          0 \r\n 2001          23            10.0344       0.9488889    -5.902222      0 \r\n 2001          24            11.28981     -4.297222     -13.2          0 \r\n 2001          25            11.15618     -3.495        -17.57         0 \r\n 2001          26            4.402865      0.3827778    -6.37          2.03 \r\n 2001          27            11.75106     -4.095        -13.48         1.02 \r\n 2001          28            3.661042     -0.41         -9.79          0 \r\n 2001          29            1.43348       3.877222     -0.6122222     6.35 \r\n 2001          30            8.016293      7.28         -1.351111      22.61 \r\n 2001          31            4.484955      0.53         -5.367222      0 \r\n 2001          32            8.582891     -4.161111     -18.78         0 \r\n 2001          33            11.04522     -10.86        -21.33         0 \r\n 2001          34            7.775796      0.5238889    -10.99         0.51 \r\n 2001          35            5.169165      1.527222     -4.095         0 \r\n 2001          36            7.399697      1.188889     -6.442778      0.51 \r\n 2001          37            12.90061      1.532778     -8.31          0.25 \r\n 2001          38            4.407677      2.6          -10.46         0 \r\n 2001          39            3.324355      8.63          0.9877778     0.25 \r\n 2001          40            3.086621      1.525        -12.61         49.02 \r\n 2001          41            13.31575     -8.19         -16.36         9.14 \r\n 2001          42            11.93478     -1.62         -14.14         0 \r\n 2001          43            12.33648      3.122778     -9.86          0 \r\n 2001          44            3.686397      4.063889     -2.212778      0 \r\n 2001          45            2.189027      1.188889     -4.297222      1.78 \r\n 2001          46            4.587756     -0.2077778    -4.565         1.27 \r\n 2001          47            11.74277     -2.756111     -13.01         0.51 \r\n 2001          48            13.07755     -9.79         -16.23         0 \r\n 2001          49            13.33947     -8.111111E-02               -12.8          0 \r\n 2001          50            13.47411      5.736111     -8.333333      0 \r\n 2001          51            11.42249     -0.7461111    -9.25          0 \r\n 2001          52            11.91942     -5.977222     -14.82         0 \r\n 2001          53            7.117026     -1.62         -8.25          1.52 \r\n 2001          54            13.00969      0.06         -13.07         0 \r\n 2001          55            11.60943      9.03         -0.2077778     9.14 \r\n 2001          56            10.20917      9.89         -2.561111      30.73 \r\n 2001          57            14.12736      4.802778     -6.23          0 \r\n 2001          58            9.65822      -3.495        -10.39         2.03 \r\n 2001          59            16.87579     -5.305        -16.43         0 \r\n 2001          60            6.007638     -0.2761111    -10.45         0 \r\n 2001          61            11.79662      4.937222     -2.82          0 \r\n 2001          62            16.25053      9.14         -4.558889      0 \r\n 2001          63            13.4134       2.263889     -4.698889      0 \r\n 2001          64            17.24419     -8.722222E-02               -6.84          0 \r\n 2001          65            17.24921      3.526111     -7.7           0 \r\n 2001          66            11.20513      4.402778     -4.625         0 \r\n 2001          67            11.15162      1.793889     -3.158889      0 \r\n 2001          68            17.50335      4.265        -5.098889      0 \r\n 2001          69            10.04043      11.62        -5.763889      0 \r\n 2001          70            11.05082      6.606111     -0.6788889     4.57 \r\n 2001          71            3.633553      9.82          0.2488889     1.78 \r\n 2001          72            8.662554      7.81         -0.4777778     1.27 \r\n 2001          73            5.591749      10.29        -2.682778      0 \r\n 2001          74            1.929493      7.34         -0.4811111     6.6 \r\n 2001          75            8.047463      0.2488889    -1.283889      21.84 \r\n 2001          76            19.86948      3.727778     -6.112222      6.86 \r\n 2001          77            20.07981      8.2          -6.632778      0 \r\n 2001          78            14.84165      9.54         -1.217222      0 \r\n 2001          79            20.42261      13.15        -3.686111      0 \r\n 2001          80            13.62281      13.68        -3.422222      0 \r\n 2001          81            17.65966      15.68         2.452222      0 \r\n 2001          82            7.379823      6.532778     -2.358889      0 \r\n 2001          83            20.01981     -1.015        -7.11          0 \r\n 2001          84            15.23323     -2.225        -8.92          0 \r\n 2001          85            21.52568      3.057222     -10.52         0 \r\n 2001          86            21.75019      7.54         -8.58          0 \r\n 2001          87            9.978756      7.68         -5.63          0 \r\n 2001          88            10.7343       10.34         2.332222      0.25 \r\n 2001          89            12.78128      13.41         1.391111      0 \r\n 2001          90            7.668017      9.49         -0.3427778     0 \r\n 2001          91            20.69578      11.67        -2.547778      0 \r\n 2001          92            21.65781      19.41         3.267222      0 \r\n 2001          93            17.19645      13.82         0.8527778     0 \r\n 2001          94            21.25079      19.08         3.002778      0 \r\n 2001          95            3.556818      18.04         8.61          15.24 \r\n 2001          96            3.976767      21.16         12.14         10.16 \r\n 2001          97            22.74058      26.48         8.33          0 \r\n 2001          98            22.20658      28.68         4.601111      0 \r\n 2001          99            16.07108      25.28         11.15         9.906 \r\n 2001          100           8.238463      16.02         8.14          3.302 \r\n 2001          101           7.407856      22.03         14.29         1.016 \r\n 2001          102           9.473705      15.61         6.145         0 \r\n 2001          103           23.58897      18.08         2.667778      0 \r\n 2001          104           22.59946      21.2          6.868889      11.684 \r\n 2001          105           11.74156      18.16         2.732778      4.572 \r\n 2001          106           14.83776      4.802778     -0.2077778     0 \r\n 2001          107           23.96436      12.34        -0.5438889     0 \r\n 2001          108           23.96269      15.81        -2.011111      0 \r\n 2001          109           17.03888      22.49         2.398889      0 \r\n 2001          110           14.48149      28.01         15.02         0 \r\n 2001          111           22.8892       28.62         13.28         0.254 \r\n 2001          112           15.61297      27.22         11.35         18.796 \r\n 2001          113           11.2532       21.69         7.41          0 \r\n 2001          114           25.46315      17.94         3.001111      0 \r\n 2001          115           25.05262      20.89         7.61          5.842 \r\n 2001          116           22.75866      27.01         7.21          0 \r\n 2001          117           23.63479      26.28         9.15          0 \r\n 2001          118           19.099        24.56         9.87          0.762 \r\n 2001          119           25.04659      28.34         11.75         0 \r\n 2001          120           20.16274      28.88         15.89         0 \r\n 2001          121           23.5496       29.74         16.42         1.778 \r\n 2001          122           16.07652      29.34         17.49         0 \r\n 2001          123           12.56903      27.55         17.55         17.526 \r\n 2001          124           9.820977      20.15         14.08         0.254 \r\n 2001          125           14.31744      24.89         10.88         17.526 \r\n 2001          126           10.06126      23.75         16.09         7.62 \r\n 2001          127           23.76156      21.63         10.48         5.08 \r\n 2001          128           23.55123      24.02         9.29          0 \r\n 2001          129           26.13556      27.95         10.01         0 \r\n 2001          130           15.3585       27.88         14.39         29.21 \r\n 2001          131           20.49599      24.49         12.09         1.778 \r\n 2001          132           26.70777      20.35         6.816111      0 \r\n 2001          133           9.62433       18.76         9.29          1.778 \r\n 2001          134           23.23333      29.55         12.55         9.652 \r\n 2001          135           22.92409      30.88         21.02         0 \r\n 2001          136           26.64275      33.07         20.82         0 \r\n 2001          137           10.83028      24.89         18.36         14.986 \r\n 2001          138           25.26437      27.15         16.95         0 \r\n 2001          139           27.5957       27.82         10.95         0 \r\n 2001          140           12.75526      25.42         15.76         22.352 \r\n 2001          141           22.28118      19.62         9.75          0.254 \r\n 2001          142           19.34765      17.04         7.94          0 \r\n 2001          143           14.62538      14.29         6.547778      1.016 \r\n 2001          144           13.30508      13.1          5.473889      1.016 \r\n 2001          145           14.62044      17.56         4.548889      0 \r\n 2001          146           9.762862      17.1          9.22          22.352 \r\n 2001          147           20.91523      21.22         8.35          0 \r\n 2001          148           19.0841       22.23         7.14          0 \r\n 2001          149           27.35462      25.67         9.96          0 \r\n 2001          150           10.67456      19.29         11.22         0 \r\n 2001          151           1.82619       12.27         7.61          36.576 \r\n 2001          152           24.85313      22.23         8.68          2.54 \r\n 2001          153           15.84723      18.36         8.82          0 \r\n 2001          154           18.41445      17.89         6.613889      0 \r\n 2001          155           21.01653      18.81         10.74         2.286 \r\n 2001          156           11.16597      22.22         9.74          29.972 \r\n 2001          157           8.18177       20.55         14.08         1.524 \r\n 2001          158           19.91977      25.42         12.94         0 \r\n 2001          159           22.73912      27.01         12.16         0 \r\n 2001          160           26.79333      30.14         12.76         0 \r\n 2001          161           25.69754      31.61         16.37         0 \r\n 2001          162           27.01902      35.54         21.63         0 \r\n 2001          163           9.182123      30.03         19.87         11.43 \r\n 2001          164           27.15403      33.95         19.35         0 \r\n 2001          165           13.7826       32.55         19.61         23.368 \r\n 2001          166           22.84292      25.69         17.03         1.27 \r\n 2001          167           27.60239      29.75         16.63         0 \r\n 2001          168           26.6561       32.81         14.29         0 \r\n 2001          169           26.24895      33.94         22.42         0 \r\n 2001          170           8.857528      26.82         16.23         0 \r\n 2001          171           12.60945      23.82         15.09         7.366 \r\n 2001          172           15.81326      24.31         14.76         8.89 \r\n 2001          173           24.78062      23.75         13.1          0 \r\n 2001          174           28.04397      26.01         10.96         0 \r\n 2001          175           26.15874      29.41         11.69         0 \r\n 2001          176           26.70053      32.07         18.56         0 \r\n 2001          177           27.23675      32            17.43         0 \r\n 2001          178           25.99088      31.48         16.43         0 \r\n 2001          179           27.17813      31.48         17.29         0 \r\n 2001          180           25.38625      31.14         17.16         0 \r\n 2001          181           25.41119      33.67         18.83         0 \r\n 2001          182           17.79572      25.15         16.63         0 \r\n 2001          183           26.82383      26.07         12.89         0 \r\n 2001          184           15.7433       29.82         18.74         28.194 \r\n 2001          185           28.5445       32.35         18.43         0 \r\n 2001          186           29.58247      27.01         14.15         0 \r\n 2001          187           24.14624      29.29         12.49         0 \r\n 2001          188           21.71111      35.27         22.43         0 \r\n 2001          189           6.928286      30.76         20.89         0.762 \r\n 2001          190           27.47177      33.8          20.35         0 \r\n 2001          191           27.32616      32.47         18.09         0 \r\n 2001          192           28.45994      27.87         16.89         0 \r\n 2001          193           24.61376      29.34         17.29         0 \r\n 2001          194           28.804        29.67         15.29         0 \r\n 2001          195           28.70345      30.93         12.83         0 \r\n 2001          196           26.20155      31.33         15.36         0 \r\n 2001          197           23.20091      32.22         15.89         0 \r\n 2001          198           16.68634      31.74         19.95         1.27 \r\n 2001          199           17.76782      31.21         22.15         0 \r\n 2001          200           14.39375      29.34         21.22         17.526 \r\n 2001          201           22.30331      32.54         21.09         0.508 \r\n 2001          202           22.58971      35.8          23.68         0 \r\n 2001          203           25.86172      36.25         22.56         0 \r\n 2001          204           22.2649       34.87         24.49         0 \r\n 2001          205           20.22391      33.87         20.94         17.018 \r\n 2001          206           7.967926      25.42         21.42         0.254 \r\n 2001          207           22.3649       28.02         17.02         0 \r\n 2001          208           19.10197      27.62         17.36         0 \r\n 2001          209           11.78168      29.75         20.96         0.508 \r\n 2001          210           27.37432      32.07         19.48         0 \r\n 2001          211           25.91402      35.27         18.36         0 \r\n 2001          212           25.30228      36.26         23.22         0 \r\n 2001          213           22.03955      35.86         24.62         0 \r\n 2001          214           14.42083      35.27         23.06         5.334 \r\n 2001          215           17.85949      30.88         21.56         0 \r\n 2001          216           26.17494      33.4          19.03         0 \r\n 2001          217           24.74928      33.46         19.75         0 \r\n 2001          218           25.50077      34.67         19.42         0 \r\n 2001          219           25.41265      34.99         21.36         0 \r\n 2001          220           24.009        34.46         19.95         0 \r\n 2001          221           20.3352       36.66         20.89         5.842 \r\n 2001          222           25.63148      25.87         15.16         0 \r\n 2001          223           23.7534       28.14         13.63         0 \r\n 2001          224           24.89258      30.34         13.68         0 \r\n 2001          225           22.59017      26.95         13.55         0 \r\n 2001          226           20.28341      26.54         10.69         0 \r\n 2001          227           5.16929       22.3          16.68         27.432 \r\n 2001          228           15.61833      24.82         16.28         0.508 \r\n 2001          229           21.20753      26.81         14.08         0 \r\n 2001          230           14.23079      25.16         15.02         17.526 \r\n 2001          231           21.19296      25.61         13.62         0 \r\n 2001          232           25.3768       28.15         12.09         0 \r\n 2001          233           16.18647      31.14         14.96         0 \r\n 2001          234           13.72929      31.88         20.82         3.556 \r\n 2001          235           17.26737      31.08         20.89         0 \r\n 2001          236           5.804338      25.9          19.48         1.524 \r\n 2001          237           14.62513      27.95         18.76         4.064 \r\n 2001          238           23.80658      29.29         16.83         0 \r\n 2001          239           20.4198       30.54         16.43         0 \r\n 2001          240           23.5091       29.54         14.55         0 \r\n 2001          241           21.94361      31.01         13.43         0 \r\n 2001          242           15.14667      30.81         17.89         0 \r\n 2001          243           22.92229      25.34         11.95         0 \r\n 2001          244           18.69675      26.15         10.89         0 \r\n 2001          245           17.87313      29.87         10.23         0 \r\n 2001          246           20.44043      33.07         16.28         0 \r\n 2001          247           22.04763      29.35         11.82         0 \r\n 2001          248           21.67756      30.27         12.63         0 \r\n 2001          249           13.26031      30.15         16.82         8.89 \r\n 2001          250           13.68105      31.35         19.07         9.144 \r\n 2001          251           6.04814       23.84         15.49         0.762 \r\n 2001          252           6.948578      19.5          12.02         7.366 \r\n 2001          253           21.50576      26.01         10.9          0 \r\n 2001          254           21.45317      28.88         9.96          0 \r\n 2001          255           20.99058      29.81         10.34         0 \r\n 2001          256           6.784565      21.16         13.63         0 \r\n 2001          257           17.03281      19.88         8.62          0 \r\n 2001          258           13.90649      22.29         12.76         0 \r\n 2001          259           10.07629      23.37         12.49         0 \r\n 2001          260           8.976981      21.36         13.88         4.826 \r\n 2001          261           3.812001      18.49         11.48         57.15 \r\n 2001          262           6.472271      21.3          13.22         0.762 \r\n 2001          263           12.83885      24.69         9.67          20.32 \r\n 2001          264           18.71821      22.49         10.75         0 \r\n 2001          265           15.52875      24.89         9.09          4.318 \r\n 2001          266           5.602585      19.57         11.15         29.972 \r\n 2001          267           19.8235       16.29         4.415         0 \r\n 2001          268           19.68308      17.22         1.672222      0 \r\n 2001          269           18.77344      22.49         3.541111      0 \r\n 2001          270           18.24253      23.75         5.407222      0 \r\n 2001          271           17.92049      20.08         4.667778      0 \r\n 2001          272           10.95505      19.82         5.875         0 \r\n 2001          273           17.612        24.29         4.408889      0 \r\n 2001          274           16.20296      27.95         9.09          0 \r\n 2001          275           16.58881      29.35         12.88         0 \r\n 2001          276           15.10424      24.56         12.27         0 \r\n 2001          277           2.533579      15.29         8.08          25.654 \r\n 2001          278           6.745612      13.1          2.667778      0 \r\n 2001          279           17.30666      13.95         0.4638889     0 \r\n 2001          280           16.09405      20.42         1.798889      0 \r\n 2001          281           12.974        20.89         4.807778      0 \r\n 2001          282           8.387079      23.22         13.08         0.254 \r\n 2001          283           3.15277       21.03         10.22         4.064 \r\n 2001          284           10.11034      19.1          5.81          0 \r\n 2001          285           12.81417      21.02         7.15          0 \r\n 2001          286           2.514207      17.49         9.82          2.794 \r\n 2001          287           9.410527      15.36         7.14          0 \r\n 2001          288           2.285259      10.5          4.735         1.27 \r\n 2001          289           7.149536      10.36         0.4638889     0 \r\n 2001          290           12.83375      15.02        -2.75          0 \r\n 2001          291           10.49222      19.1          5.473889      0 \r\n 2001          292           10.23143      17.96        -0.6122222     0 \r\n 2001          293           11.92796      23.29         5.34          0 \r\n 2001          294           7.643875      21.02         7.41          0 \r\n 2001          295           3.62644       19.84         11.55         50.546 \r\n 2001          296           4.153624      19.63         11.81         0 \r\n 2001          297           3.382011      15.91         4.533889      4.826 \r\n 2001          298           11.94724      8.35          0.3227778     0 \r\n 2001          299           6.854312      6.348889     -0.2761111     0 \r\n 2001          300           13.39792      8.35         -1.217222      0 \r\n 2001          301           12.17201      18.76        -1.002222      0 \r\n 2001          302           10.71255      18.49         6.817778      0 \r\n 2001          303           3.228291      11.96         6.011111      3.302 \r\n 2001          304           6.591766      18.9          8.28          0 \r\n 2001          305           8.060476      23.55         12.61         0 \r\n 2001          306           12.38251      19.83         3.607778      0 \r\n 2001          307           9.960514      22.3          0.8           0 \r\n 2001          308           11.77147      22.23         3.675         0 \r\n 2001          309           11.2186       18.79222      1.807778      0 \r\n 2001          310           10.62698      23.31889      5.782778      0 \r\n 2001          311           10.02871      24.73667      8.113889      0 \r\n 2001          312           8.278086      16.30222     -0.8794444     0 \r\n 2001          313           10.79397      15.14222     -2.507222      0 \r\n 2001          314           10.68924      18.15222      2.251667      0 \r\n 2001          315           10.47188      13.97278     -0.45          0 \r\n 2001          316           10.0126       17.26         0.1288889     0 \r\n 2001          317           5.118204      19.13333      8.841666      5.842 \r\n 2001          318           5.638191      21.44889      12.33222      0 \r\n 2001          319           8.219342      22.85611      9.498333      0 \r\n 2001          320           8.791421      23.64389      6.627778      0 \r\n 2001          321           8.295449      22.14556      5.737778      0 \r\n 2001          322           4.148938      18.06667      7.563889      0 \r\n 2001          323           10.5487       9.911667     -3.558333      0 \r\n 2001          324           8.141603      13.16444     -0.3716667     0 \r\n 2001          325           9.211118      15.20889      4.149445      0 \r\n 2001          326           8.259425      15.68389      6.837778      0 \r\n 2001          327           3.651795      16.72944      8.559444      8.5598 \r\n 2001          328           3.620666      11.10222      5.476111      5.08 \r\n 2001          329           1.412518      9.581111      3.121111      0 \r\n 2001          330           1.487538      10.72889      2.068889      3.429 \r\n 2001          331           1.570632      9.608334     -0.2094444     0 \r\n 2001          332           1.556113      3.128889     -0.5155556     0 \r\n 2001          333           2.121623      5.373889      1.078333      0 \r\n 2001          334           1.916398      5.934444      2.107778      0 \r\n 2001          335           5.113685      7.329444     -1.108333      0 \r\n 2001          336           7.492833      13.53278     -1.716667      0 \r\n 2001          337           4.077182      14.49611     -1.343333      0 \r\n 2001          338           3.424981      18.41444      12.20611      0 \r\n 2001          339           2.943611      19.96389      1.265556      0 \r\n 2001          340           8.296746      12.59444     -0.3572222     2.54 \r\n 2001          341           6.611557      9.566667     -2.156667      0.76 \r\n 2001          342           6.91657       6.141667     -4.507222      0 \r\n 2001          343           8.356117      7.532222     -6.953333      0 \r\n 2001          344           8.388208      10.88        -4.095         0 \r\n 2001          345           7.714585      9.82         -6.492778      0 \r\n 2001          346           4.954128      7.68          3.473889      0 \r\n 2001          347           2.193671      6.212778     -1.607222      15.75 \r\n 2001          348           4.621144      4.536111     -2.347222      0 \r\n 2001          349           5.067703      8.82          1.267222      0 \r\n 2001          350           4.523427      8.48          5.473889      2.79 \r\n 2001          351           3.979151      7.35         -7.222222E-03                0.25 \r\n 2001          352           7.284972      10.81        -4.155         0 \r\n 2001          353           8.642763      4.198889     -1.743889      0 \r\n 2001          354           8.389589      6.407222     -3.881111      0 \r\n 2001          355           7.886756      7.07         -6.832222      0 \r\n 2001          356           2.413164      11.44        -4.497222      6.86 \r\n 2001          357           2.832945     -3.482778     -7.3           3.81 \r\n 2001          358           4.769049     -6.436111     -10.39         0 \r\n 2001          359           4.945028     -6.706111     -11.53         0 \r\n 2001          360           3.520962     -4.352222     -12.87         0 \r\n 2001          361           6.530722     -1.008889     -7.77          0 \r\n 2001          362           3.121306     -2.481111     -10.4          0.51 \r\n 2001          363           7.999808     -7.51         -13.67         0 \r\n 2001          364           6.822472     -5.292778     -13.81         0 \r\n 2001          365           8.831294     -4.765        -13.88         0 \r\n 2002          1             5.971614     -4.962222     -15.62         0 \r\n 2002          2             8.673767     -2.358889     -16.02         0 \r\n 2002          3             8.227292     -1.216111     -16.22         0 \r\n 2002          4             8.279048      6.548889     -8.04          0 \r\n 2002          5             2.78077       2.802222     -2.885         0 \r\n 2002          6             3.844552      1.665        -4.968889      0 \r\n 2002          7             8.952421     -1.552778     -10.19         0 \r\n 2002          8             8.429003      10.75        -4.492222      0 \r\n 2002          9             5.753084      13.43         2.868889      0 \r\n 2002          10            5.980526      7.41          0.5211111     0 \r\n 2002          11            9.371951      10.55        -2.551111      0 \r\n 2002          12            9.054427      7.47         -2.28          0 \r\n 2002          13            4.871222      9.36         -2.547778      0 \r\n 2002          14            1.306747      3.017778     -1.753889      0 \r\n 2002          15            2.483371      0.3972222    -4.763889      0 \r\n 2002          16            2.833949      0.5311111    -7.44          0 \r\n 2002          17            9.743741      2.466111     -9.31          1.52 \r\n 2002          18            8.94171      -4.095        -11.8          0 \r\n 2002          19            3.212893      0.7327778    -8.38          0 \r\n 2002          20            9.342998      5.543889     -6.706111      0 \r\n 2002          21            10.32406      9.42         -4.297222      0.76 \r\n 2002          22            8.768744      14.77        -4.758889      0 \r\n 2002          23            6.252151      9.69         -2.683889      0 \r\n 2002          24            10.07507      5.608889     -4.497778      0 \r\n 2002          25            11.1676       13.95        -5.226111      0 \r\n 2002          26            10.37389      16.43         1.931111      0 \r\n 2002          27            9.540399      17.43         0.7311111     0 \r\n 2002          28            9.708805      10.95        -3.692222      0 \r\n 2002          29            6.018956      2.532778     -2.088889      0 \r\n 2002          30            2.329107     -1.417778     -2.213889      0 \r\n 2002          31            3.619578      0.2622222    -2.28          21.08 \r\n 2002          32            11.42458     -0.8811111    -14.68         2.03 \r\n 2002          33            11.71286      3.062778     -15.89         0 \r\n 2002          34            12.82911      2.13         -11.74         0 \r\n 2002          35            13.09303     -3.367222     -19.05         0 \r\n 2002          36            12.73601      1.592222     -18.85         0 \r\n 2002          37            13.05416      4.131111     -13.88         0 \r\n 2002          38            12.76421      3.526111     -3.152778      0 \r\n 2002          39            12.84814      7.27         -4.095         0 \r\n 2002          40            10.96016      9.21         -2.885         0 \r\n 2002          41            3.106202      2.667778     -4.557222      4.83 \r\n 2002          42            11.97733      5.422222     -7.91          0 \r\n 2002          43            10.52636      6.28         -4.962778      0 \r\n 2002          44            14.12351      5.206111     -8.24          0 \r\n 2002          45            8.80209       9.69          0.4638889     0 \r\n 2002          46            11.36316      7.67          0.9877778     0 \r\n 2002          47            13.18144      9.02         -1.406111      0 \r\n 2002          48            14.8273       7.87         -4.621111      0 \r\n 2002          49            9.765414      14.22         0.06          0 \r\n 2002          50            1.801003      10.49         6.012222      5.33 \r\n 2002          51            1.485864      9.42          0.2577778     10.41 \r\n 2002          52            3.615394      1.122222     -3.422222      0.25 \r\n 2002          53            15.21311      6.936111     -7.57          0 \r\n 2002          54            14.53911      15.09         0.5311111     0 \r\n 2002          55            13.82527      21.09         3.392222      0 \r\n 2002          56            2.123589      3.592778     -6.311111      0 \r\n 2002          57            11.58307     -6.175        -9.32          2.79 \r\n 2002          58            16.77311     -3.422222     -12.07         0.76 \r\n 2002          59            13.06287      3.737222     -9.31          0 \r\n 2002          60            7.272419     -0.41         -7.04          0 \r\n 2002          61            4.824696      0.1277778    -10.26         8.64 \r\n 2002          62            18.05978     -10.06        -19.65         7.11 \r\n 2002          63            11.38148     -2.411111     -21.4          0 \r\n 2002          64            14.87169      7.05         -14.22         0.51 \r\n 2002          65            16.59579      12.91        -0.2077778     0 \r\n 2002          66            7.473419      7.96         -1.148889      0 \r\n 2002          67            5.038624      18.83         4.87          8.64 \r\n 2002          68            8.902255      16.84        -6.246111      12.45 \r\n 2002          69            18.5416      -8.722222E-02               -10.86         0 \r\n 2002          70            16.48509      10.88        -3.948889      0 \r\n 2002          71            17.37611      13.75        -4.553889      0 \r\n 2002          72            14.1805       16.55         2.062778      0 \r\n 2002          73            11.89658      21.49         5.056111      0 \r\n 2002          74            14.70479      7.88          0.585         0 \r\n 2002          75            18.49663      9.4          -2.212222      0 \r\n 2002          76            3.764554      6.212778      1.055         0 \r\n 2002          77            15.62239      10.81        -4.896111      0 \r\n 2002          78            6.612979      11.22         2.936111      0 \r\n 2002          79            11.58943      10.81         2.062778      0 \r\n 2002          80            19.94831      4.817778     -9.12          0.25 \r\n 2002          81            21.42304      4.601111     -10.52         0 \r\n 2002          82            19.17092      13.08        -3.086111      0 \r\n 2002          83            3.246491      5.608889     -1.888889      0 \r\n 2002          84            14.293        2.466111     -6.241111      0 \r\n 2002          85            21.83684      7.88         -4.297222      0.51 \r\n 2002          86            19.15833      12.81        -5.292778      0 \r\n 2002          87            15.39218      16.95         2.532778      0 \r\n 2002          88            14.57651      16.63         5.206111      2.03 \r\n 2002          89            12.78501      10.41        -0.3427778     7.87 \r\n 2002          90            11.98193      10.43        -2.413889      0 \r\n 2002          91            3.481967      2.802222     -4.957222      7.4676 \r\n 2002          92            7.485929      5.676111     -0.8811111     0 \r\n 2002          93            17.7038       3.458889     -5.171111      0 \r\n 2002          94            21.55245      6.667778     -7.57          0 \r\n 2002          95            21.78111      13.35        -5.63          0 \r\n 2002          96            22.31863      12.68        -5.361111      0 \r\n 2002          97            2.720939      9.29          4.937222      18.034 \r\n 2002          98            1.595192      10.29         8.35          26.924 \r\n 2002          99            24.11097      16.35         3.122778      0 \r\n 2002          100           22.75694      22.09         3.877222      0 \r\n 2002          101           15.43168      24.62         10.48         0 \r\n 2002          102           7.249993      16.28         4.063889      4.572 \r\n 2002          103           18.13471      19.55         1.996111      0 \r\n 2002          104           22.47653      27.68         5.676111      0 \r\n 2002          105           23.4045       32.28         16.15         0 \r\n 2002          106           18.60847      32.22         19.3          0 \r\n 2002          107           24.38339      29.94         17.55         0 \r\n 2002          108           18.84059      32.68         16.88         0 \r\n 2002          109           19.08105      22.28         12.22         1.778 \r\n 2002          110           11.98247      13.35         6.078889      1.27 \r\n 2002          111           2.757005      8.08          2.935         8.636 \r\n 2002          112           19.52439      10.75         0.73          0 \r\n 2002          113           23.81152      20.08         3.137778      0 \r\n 2002          114           10.16218      19.42         5.071111      13.208 \r\n 2002          115           25.68733      14.35         2.936111      0 \r\n 2002          116           21.3448       15.01         1.337778      0 \r\n 2002          117           1.981333      15.98         5.873889      25.4 \r\n 2002          118           5.154855      13.21         5.407222      0 \r\n 2002          119           25.18258      20.09         5.676111      0 \r\n 2002          120           7.639984      14.55         8.95          3.048 \r\n 2002          121           10.26026      17.82         7.88          9.652 \r\n 2002          122           25.08241      14.08         4.4           0 \r\n 2002          123           26.71764      19.48         1.336111      0 \r\n 2002          124           26.23703      23.28         4.547222      0 \r\n 2002          125           25.13216      28.15         7.88          0 \r\n 2002          126           21.67701      29.22         14.96         1.778 \r\n 2002          127           11.70135      21.22         13.75         0 \r\n 2002          128           19.74618      29.55         11.68         16.764 \r\n 2002          129           25.04413      15.96         7.74          2.286 \r\n 2002          130           25.67411      20.82         5.206111      0 \r\n 2002          131           16.15903      14.89         8.68          55.88 \r\n 2002          132           6.643941      13.43         9.02          4.826 \r\n 2002          133           20.03948      18.3          7.81          0.254 \r\n 2002          134           27.55474      20.35         6.078889      0 \r\n 2002          135           21.75329      25.56         6.482222      2.54 \r\n 2002          136           8.488792      20.82         12.35         10.668 \r\n 2002          137           11.82076      12.75         3.877222      0 \r\n 2002          138           21.62664      16.49         2.802222      0 \r\n 2002          139           26.06239      18.49         3.407222      0 \r\n 2002          140           23.35735      13.62         3.205         0 \r\n 2002          141           29.07001      17.61         0.8672222     0 \r\n 2002          142           26.35364      24.22         7.15          0 \r\n 2002          143           6.28328       20.15         13.21         14.224 \r\n 2002          144           23.29333      20.95         9.14          0 \r\n 2002          145           18.23257      17.82         6.398889      20.828 \r\n 2002          146           28.41576      24.89         9.42          0 \r\n 2002          147           15.84908      24.96         11.55         0 \r\n 2002          148           18.70888      28.28         14.02         0 \r\n 2002          149           19.55137      29.68         16.49         0 \r\n 2002          150           20.11261      31.75         18.09         0 \r\n 2002          151           19.68785      32.28         20.62         0 \r\n 2002          152           23.10355      35.4          19.62         0 \r\n 2002          153           10.78748      25.43         15.48         6.35 \r\n 2002          154           21.67617      33.21         15.81         0 \r\n 2002          155           6.581432      23.1          15.29         19.05 \r\n 2002          156           13.88908      20.96         13.02         0 \r\n 2002          157           29.03913      24.22         9.95          0 \r\n 2002          158           28.62609      27.88         13.3          0 \r\n 2002          159           27.23705      30.94         15.02         0 \r\n 2002          160           28.33125      33.26         13.88         0 \r\n 2002          161           19.82158      32.54         22.76         3.048 \r\n 2002          162           8.41553       24.96         19.28         16.51 \r\n 2002          163           18.33885      30.14         18.41         54.61 \r\n 2002          164           18.34893      26.14         16.09         9.906 \r\n 2002          165           19.98483      22.3          12.95         0 \r\n 2002          166           23.12112      26.68         14.04         0 \r\n 2002          167           28.73186      26.48         11.09         0 \r\n 2002          168           21.61802      26.81         14.02         3.81 \r\n 2002          169           26.60673      31.01         15.09         0 \r\n 2002          170           8.622429      28.35         20.62         0 \r\n 2002          171           22.75745      33.2          20.75         0 \r\n 2002          172           24.71543      33.8          21.69         0 \r\n 2002          173           26.14105      33.66         19.88         0 \r\n 2002          174           27.33993      34.2          18.9          0 \r\n 2002          175           27.06952      33.8          16.96         0.508 \r\n 2002          176           19.65037      33.4          20.75         0 \r\n 2002          177           12.61388      30.68         19.28         4.318 \r\n 2002          178           26.6622       28.61         18.09         1.524 \r\n 2002          179           24.12519      30.46         16.36         0 \r\n 2002          180           25.4365       34.07         16.82         6.604 \r\n 2002          181           26.57765      34.07         24.16         0 \r\n 2002          182           26.58936      33.34         22.81         7.366 \r\n 2002          183           27.6708       33.67         19.5          0 \r\n 2002          184           27.32784      32.93         21.09         0 \r\n 2002          185           26.83442      34.26         22.36         0 \r\n 2002          186           26.16983      34.93         21.22         0.254 \r\n 2002          187           7.969014      25.9          20.34         2.794 \r\n 2002          188           22.88656      32.67         19.23         0 \r\n 2002          189           23.85336      35.27         21.02         0 \r\n 2002          190           23.76981      33            23.01         0 \r\n 2002          191           10.55368      28.22         19.95         5.588 \r\n 2002          192           11.10756      22.96         15.89         32.512 \r\n 2002          193           28.20326      27.55         15.95         0 \r\n 2002          194           29.40239      27.41         13.35         0 \r\n 2002          195           28.91592      29.6          12.49         0 \r\n 2002          196           27.01872      30.21         14.49         0 \r\n 2002          197           27.11789      31.14         15.56         0 \r\n 2002          198           23.80499      32.14         18.02         0 \r\n 2002          199           23.73244      33.02         20.8          0 \r\n 2002          200           21.02648      32.14         20.22         0 \r\n 2002          201           24.39297      34.87         22.96         15.494 \r\n 2002          202           27.19675      35.07         24.56         0 \r\n 2002          203           20.32575      30.14         18.89         1.778 \r\n 2002          204           24.32218      27.35         16.57         0 \r\n 2002          205           25.2273       27.68         15.02         0 \r\n 2002          206           23.66002      31.34         18.7          0 \r\n 2002          207           16.94696      31.55         21.54         10.16 \r\n 2002          208           19.25058      33.6          20.82         4.318 \r\n 2002          209           16.8929       32.81         21.69         4.826 \r\n 2002          210           17.79727      29.48         20.49         6.35 \r\n 2002          211           27.19654      33.46         17.62         0 \r\n 2002          212           26.84521      34.4          19.23         0 \r\n 2002          213           24.49924      35.27         21.68         0.762 \r\n 2002          214           26.74936      28.61         15.76         0 \r\n 2002          215           23.81512      32.6          16.97         0.762 \r\n 2002          216           15.96585      32.6          22.62         22.352 \r\n 2002          217           12.44435      30.81         22.35         5.588 \r\n 2002          218           23.0689       25.87         17.69         0 \r\n 2002          219           26.02469      26.41         12.42         0 \r\n 2002          220           26.10021      27.61         12.29         0 \r\n 2002          221           24.66794      28.67         14.15         0.508 \r\n 2002          222           23.11154      31.67         15.36         0 \r\n 2002          223           18.84503      34.07         17.62         19.304 \r\n 2002          224           16.31116      30.02         18.9          13.462 \r\n 2002          225           10.29005      23.1          14.96         1.016 \r\n 2002          226           25.86034      26.81         12.76         0 \r\n 2002          227           23.17986      30.81         14.08         0.762 \r\n 2002          228           15.76514      27.42         18.43         2.032 \r\n 2002          229           18.5801       27.02         14.35         0 \r\n 2002          230           20.43114      25.4          10.16         1.778 \r\n 2002          231           22.83347      25.81         14.22         12.192 \r\n 2002          232           14.98592      25.02         12.42         0 \r\n 2002          233           18.15551      33.61         19.3          0 \r\n 2002          234           15.9702       30.47         23.48         5.842 \r\n 2002          235           9.763949      27.28         19.68         40.64 \r\n 2002          236           17.2013       27.21         19.1          0 \r\n 2002          237           20.67469      29.15         17.56         0 \r\n 2002          238           21.26091      29.48         17.82         0 \r\n 2002          239           21.70822      30.34         17.55         0 \r\n 2002          240           18.68855      28.81         17.15         0 \r\n 2002          241           16.93474      28.29         14.55         0 \r\n 2002          242           20.10977      29.94         14.08         0 \r\n 2002          243           20.26395      31.34         14.82         0 \r\n 2002          244           19.49397      32.4          15.43         0 \r\n 2002          245           16.06631      33.87         21.29         0 \r\n 2002          246           22.68921      29.34         13.29         0 \r\n 2002          247           22.01922      30.67         10.56         0 \r\n 2002          248           22.1501       30.47         10.75         0 \r\n 2002          249           21.78002      33            11.49         0 \r\n 2002          250           21.34505      35.07         14.09         0 \r\n 2002          251           18.85135      34.66         16.03         0 \r\n 2002          252           19.36309      34.46         17.76         0 \r\n 2002          253           13.26198      30.03         14.76         0 \r\n 2002          254           19.78325      26.07         9.22          0 \r\n 2002          255           19.75266      26.74         8.21          0 \r\n 2002          256           18.00312      28.61         9.62          0 \r\n 2002          257           8.911711      27.42         11.95         0 \r\n 2002          258           15.71791      26.07         11.28         0 \r\n 2002          259           20.32947      28.27         7.88          0 \r\n 2002          260           13.46595      28.35         8.95          0 \r\n 2002          261           13.23044      29.54         18.9          1.27 \r\n 2002          262           8.005875      27.68         20.75         6.858 \r\n 2002          263           5.179834      21.83         13.28         6.858 \r\n 2002          264           18.09555      26.01         10.42         0 \r\n 2002          265           19.87074      20.82         6.616111      0 \r\n 2002          266           16.79332      24.89         3.473889      0 \r\n 2002          267           19.26506      20.75         1.672778      0 \r\n 2002          268           16.56626      27.35         5.071111      0 \r\n 2002          269           18.43713      27.94         6.212778      0 \r\n 2002          270           7.32882       20.55         9.09          0 \r\n 2002          271           15.43486      27.48         6.947222      0 \r\n 2002          272           16.81077      33.53         13.75         0 \r\n 2002          273           16.13509      31.88         20.22         0 \r\n 2002          274           6.755779      27.24         19.21         10.668 \r\n 2002          275           3.890199      22.83         15.01         8.636 \r\n 2002          276           2.087816      19.3          14.02         0 \r\n 2002          277           8.625484      22.03         7.88          23.368 \r\n 2002          278           16.61291      20.35         4.883889      0 \r\n 2002          279           14.51266      23.03         7.27          1.27 \r\n 2002          280           16.826        16.41         2.13          0 \r\n 2002          281           16.20584      21.82         6.482222      0 \r\n 2002          282           13.23462      22.81         9.15          0 \r\n 2002          283           15.95853      25.27         5.742778      0 \r\n 2002          284           15.18897      26.01         6.012222      0 \r\n 2002          285           2.381909      17.98         5.676111      0 \r\n 2002          286           16.13488      13.41        -0.41          0 \r\n 2002          287           15.87062      16.41        -1.876111      0 \r\n 2002          288           14.94052      15.21         1.793889      0 \r\n 2002          289           13.85988      11.74        -1.203889      0 \r\n 2002          290           2.021918      7.02          2.532778      1.524 \r\n 2002          291           12.34167      21.96         3.943889      0 \r\n 2002          292           13.60147      10.75        -1.742222      0 \r\n 2002          293           14.07539      13.55        -3.881111      0 \r\n 2002          294           10.62887      17.76        -3.018889      0 \r\n 2002          295           11.34136      11.07         2.532778      0 \r\n 2002          296           3.940366      7.94          3.272222      0 \r\n 2002          297           1.545528      6.548889      3.867222      14.732 \r\n 2002          298           1.179428      7.48          4.937222      8.382 \r\n 2002          299           10.29243      11.15         3.997222      0 \r\n 2002          300           3.032061      6.078889     -0.41          0.254 \r\n 2002          301           3.781918      8.35          3.272222      0 \r\n 2002          302           1.814475      7.81          3.607778      9.144 \r\n 2002          303           3.277829      7.09          1.125         3.81 \r\n 2002          304           5.100463      4.28         -2.616111      0 \r\n 2002          305           12.82019      4.937222     -5.023889      0 \r\n 2002          306           12.55468      8.82         -4.022778      0 \r\n 2002          307           2.476552      5.272778     -1.942778      0 \r\n 2002          308           8.686276      4.995        -4.761111      0 \r\n 2002          309           1.696528      5.742778     -1.006111      1.778 \r\n 2002          310           7.343297      10.02         1.131111      0 \r\n 2002          311           11.7183       18.83        -2.682778      0 \r\n 2002          312           9.706252      20.82         7             0 \r\n 2002          313           6.734859      20.02         7.2           0 \r\n 2002          314           6.064708      15.02         3.336111      0 \r\n 2002          315           1.826525      5.34          0.585         0 \r\n 2002          316           10.95656      10.88        -3.691111      0 \r\n 2002          317           7.405178      17.44        -2.885         0 \r\n 2002          318           2.559144      13.16         1.657778      0 \r\n 2002          319           5.380164      5.272778     -3.68          0 \r\n 2002          320           5.56518       4.667778     -3.613889      0 \r\n 2002          321           10.32984      5.257778     -6.762778      0 \r\n 2002          322           3.026831      7.21         -1.942222      0 \r\n 2002          323           7.212337      13.95        -7.222222E-03                0 \r\n 2002          324           7.687598      14.22         3.802222      0 \r\n 2002          325           2.298355      4.682778      0.9272223     0 \r\n 2002          326           9.949761      5.458889     -1.876111      0 \r\n 2002          327           9.701692      10.48        -0.7461111     0 \r\n 2002          328           2.098569      2.398889     -9.25          0 \r\n 2002          329           6.902554     -1.35         -11.87         0 \r\n 2002          330           7.521117      0.5277778    -9.45          0 \r\n 2002          331           6.873517     -2.01         -11.92         0 \r\n 2002          332           8.97924       5.138889     -10.59         0 \r\n 2002          333           6.013412      11.96         4.347222      0 \r\n 2002          334           6.698668      6.212778     -10.59         0 \r\n 2002          335           8.827236      9.15         -12.33         0 \r\n 2002          336           3.925931      2.735        -10.19         0 \r\n 2002          337           7.942236     -0.4161111    -11.8          0 \r\n 2002          338           6.101611     -0.275        -9.45          0 \r\n 2002          339           8.719331     -3.892778     -12.4          0 \r\n 2002          340           8.924556      4.871111     -13.07         0 \r\n 2002          341           8.756652      7.94         -5.361111      0 \r\n 2002          342           7.797512      1.122222     -12.6          0 \r\n 2002          343           8.677825      4.406111     -15.68         0 \r\n 2002          344           8.398417      10.35        -10.39         0 \r\n 2002          345           7.083554      4.533889     -10.93         0 \r\n 2002          346           1.040435      6.817778      2.13          0 \r\n 2002          347           6.971506      9.02         -4.162222      0 \r\n 2002          348           6.499049      9.69         -1.822222      0 \r\n 2002          349           7.131544      12.61         1.256111      0 \r\n 2002          350           4.683235      4.065        -3.086111      0 \r\n 2002          351           1.213778      9.49         -0.7461111     0 \r\n 2002          352           2.760854      14.89         3.997778      9.91 \r\n 2002          353           4.103918      6.817778      0.8572222     19.81 \r\n 2002          354           2.879764      2.466111      0.2488889     0 \r\n 2002          355           7.404174      3.061111     -3.422222      0 \r\n 2002          356           6.91996       1.727222     -4.027222      0 \r\n 2002          357           6.804523     -0.1411111    -8.31          0 \r\n 2002          358           2.505839     -2.75         -8.78          0 \r\n 2002          359           2.042127     -3.953889     -8.51          0 \r\n 2002          360           8.497118      4.467222     -11.39         0 \r\n 2002          361           3.503012      3.34         -5.697222      0 \r\n 2002          362           6.463527      11.29        -4.095         0 \r\n 2002          363           6.956528      11.89        -5.765         0 \r\n 2002          364           4.416547      15.64         0.2611111     0 \r\n 2002          365           8.772468      4.801111     -7.65          0 \r\n 2003          1             7.62944       2.332222     -7.58          0 \r\n 2003          2             2.538349     -7.222222E-03               -4.431111      0 \r\n 2003          3             8.973885      2.665        -10.19         0 \r\n 2003          4             1.665357     -0.4772222    -6.096111      0 \r\n 2003          5             1.669458      1.202778     -2.491111      1.27 \r\n 2003          6             8.642512      3.122778     -5.036111      0 \r\n 2003          7             8.082693      12.09        -4.762222      0 \r\n 2003          8             8.887778      19.16         2.936111      0 \r\n 2003          9             7.458231      6.28         -5.301111      0 \r\n 2003          10            9.529688     -4.363889     -12.13         0 \r\n 2003          11            9.151663     -4.497778     -15.02         0 \r\n 2003          12            9.586297      5.476111     -16.69         0 \r\n 2003          13            5.157449     -0.6788889    -9.79          0 \r\n 2003          14            9.754662     -5.036111     -12.67         0 \r\n 2003          15            7.592328     -5.237778     -16.03         0 \r\n 2003          16            7.250537     -1.485        -11            0.25 \r\n 2003          17            10.13064     -5.776111     -15.62         0 \r\n 2003          18            9.90357      -3.422222     -15.22         0 \r\n 2003          19            4.548468      1.068889     -15.49         0 \r\n 2003          20            3.120971     -4.295        -8.38          0 \r\n 2003          21            9.871772     -5.842778     -15.35         0 \r\n 2003          22            5.678901     -10.19        -17.3          0 \r\n 2003          23            10.81522     -11.6         -21.13         0 \r\n 2003          24            4.374874     -8.11         -18.44         0 \r\n 2003          25            8.773848      2.868889     -12.33         0 \r\n 2003          26            11.50822     -9.52         -21.94         1.52 \r\n 2003          27            8.240639     -4.56         -22.61         0 \r\n 2003          28            3.618281      1.136111     -8.18          0 \r\n 2003          29            11.69763     -2.212222     -13.14         3.3 \r\n 2003          30            8.402895      3.205        -11.26         0 \r\n 2003          31            2.615628      4.481111      0.3238889     1.78 \r\n 2003          32            9.30191       9.61         -0.9477777     0 \r\n 2003          33            4.098019      6.078889     -0.8811111     0 \r\n 2003          34            8.438103      2.802222     -6.107778      0 \r\n 2003          35            12.77819     -5.905        -13.54         3.05 \r\n 2003          36            7.34543      -2.212222     -15.15         0 \r\n 2003          37            10.95283     -3.612222     -15.36         0 \r\n 2003          38            13.23546     -9.25         -19.99         0 \r\n 2003          39            6.671262      0.8011111    -11.87         0 \r\n 2003          40            6.586453     -2.347222     -17.37         0 \r\n 2003          41            13.03831     -2.817222     -15.29         0.76 \r\n 2003          42            10.2313       5.017778     -16.7          0 \r\n 2003          43            13.99732      0.06         -16.09         0.25 \r\n 2003          44            13.37503      7.88         -11.93         0 \r\n 2003          45            2.725667      4.872222     -7.04          0 \r\n 2003          46            5.796053     -2.625        -9.12          11.68 \r\n 2003          47            14.72115     -2.09         -12.74         1.02 \r\n 2003          48            9.678972     -1.692778     -14.28         0 \r\n 2003          49            12.90467      5.727778     -5.832222      0 \r\n 2003          50            15.16683      3.191111     -5.63          0 \r\n 2003          51            15.54611      9.14         -6.031111      0 \r\n 2003          52            14.39735      7.53         -5.03          0 \r\n 2003          53            4.251572      1.927778     -3.96          0 \r\n 2003          54            12.73053     -2.426111     -9.39          0 \r\n 2003          55            13.90004     -7.65         -17.37         0.76 \r\n 2003          56            9.777297     -10.06        -20.19         0 \r\n 2003          57            16.24338     -1.297222     -16.62         0 \r\n 2003          58            13.779        3.325        -13.47         0 \r\n 2003          59            9.898046      4.207222     -8.84          0 \r\n 2003          60            4.920761      1.861111     -4.152778      0 \r\n 2003          61            17.27205      0.7311111    -11.93         0 \r\n 2003          62            5.516981     -1.417778     -13.34         0 \r\n 2003          63            3.174777     -3.018889     -10.46         0.51 \r\n 2003          64            16.02639     -5.372222     -13.48         16 \r\n 2003          65            16.12162      0.45         -15.09         0.25 \r\n 2003          66            12.13331      2.462778     -4.497778      0 \r\n 2003          67            6.418967      0.7311111    -13.01         0 \r\n 2003          68            18.01844     -9.06         -17.1          0 \r\n 2003          69            16.30957     -3.49         -13.88889      0 \r\n 2003          70            16.58517      7.088889     -10.60667      0 \r\n 2003          71            9.535378      8.709444      1.689444      0 \r\n 2003          72            17.49828      8.873889     -0.6333333     0 \r\n 2003          73            10.71966      8.600555     -2.088333      0 \r\n 2003          74            12.04297      15.55389      1.400556      0 \r\n 2003          75            16.80115      24.66278      5.532778      0 \r\n 2003          76            17.29444      26.01833      8.997222      0 \r\n 2003          77            11.03128      17.93944      8.986111      0 \r\n 2003          78            1.639668      8.818889      4.426667      0.51 \r\n 2003          79            8.515277      14.17389      4.107222      4.06 \r\n 2003          80            12.11494      10.41889      0.9744444     0.76 \r\n 2003          81            19.78588      16.55389      0.4044445     0 \r\n 2003          82            19.85166      22.04111      0.2944444     0 \r\n 2003          83            16.07685      18.15556      7.922778      0 \r\n 2003          84            17.41657      16.55         0.7188889     0.76 \r\n 2003          85            15.10181      17.74        -0.1411111     0 \r\n 2003          86            8.555737      17.78         8.62          0 \r\n 2003          87            2.221286      10.95         2.197222      4.32 \r\n 2003          88            8.894389      5.542222     -3.018889      3.05 \r\n 2003          89            15.89305      9.09         -7.03          0 \r\n 2003          90            16.39128      17.82        -5.358889      0 \r\n 2003          91            21.66542      29.21         13.68         0 \r\n 2003          92            21.58291      27.28         11.2          0 \r\n 2003          93            5.165943      20.9          8.08          0 \r\n 2003          94            3.564517      17.83        -0.8138889     5.3848 \r\n 2003          95            13.40872      4.601111     -3.426111      0 \r\n 2003          96            10.68531      5.808889     -1.482778      7.5946 \r\n 2003          97            2.604917      1.26         -0.2077778     0 \r\n 2003          98            5.376482      1.391111     -2.413889      0 \r\n 2003          99            24.30456      11.74        -7.24          0 \r\n 2003          100           24.56334      19.21        -4.422222      0 \r\n 2003          101           23.13501      25.41        -1.405         0 \r\n 2003          102           23.455        21.67         1.793889      0 \r\n 2003          103           23.16702      24.02         1.525         0 \r\n 2003          104           23.00941      31.14         6.343889      0 \r\n 2003          105           21.77638      31.08         15.23         0 \r\n 2003          106           8.999909      23.3          6.667778      8.2042 \r\n 2003          107           5.452589      9.61          4.332222      0 \r\n 2003          108           5.04059       12.83         6.335         2.5654 \r\n 2003          109           9.318521      22.69         12.36         18.7198 \r\n 2003          110           7.778767      13.16         7.81          0 \r\n 2003          111           7.747931      12.63         4.077222      0 \r\n 2003          112           26.38476      18.34         2.272778      0 \r\n 2003          113           25.20421      20.42         0.195         0 \r\n 2003          114           5.083685      14.96         8.68          3.6576 \r\n 2003          115           17.72949      21.09         7.74          0 \r\n 2003          116           25.75453      22.01         2.735         0 \r\n 2003          117           26.0031       26.08         4.467222      0 \r\n 2003          118           9.960347      21.49         9.89          3.9624 \r\n 2003          119           7.460783      15.83         8.48          10.7696 \r\n 2003          120           9.660605      24.18         10.41         29.2862 \r\n 2003          121           12.28929      15.755        9.745556      0 \r\n 2003          122           25.4491       19.905        6.01          0 \r\n 2003          123           27.50043      20.52833      5.562778      0 \r\n 2003          124           2.386763      13.37722      7.936666      24.7904 \r\n 2003          125           16.23999      19.24611      9.092222      0 \r\n 2003          126           24.79786      23.55556      6.721111      0 \r\n 2003          127           7.890647      17.61056      9.444445      0 \r\n 2003          128           11.37889      17.18         5.622778      17.1196 \r\n 2003          129           26.85517      27.22         15.02         0 \r\n 2003          130           17.54694      25.66         10.41         19.7866 \r\n 2003          131           8.134072      13.07         8.12          0 \r\n 2003          132           28.91805      21.5          8.94          0 \r\n 2003          133           13.8485       22.3          6.302778      0 \r\n 2003          134           20.7936       23.24         10.62         3.8354 \r\n 2003          135           12.19971      18.18         10.82         0 \r\n 2003          136           25.31579      21.21         6.371111      0 \r\n 2003          137           27.1773       26.2          10.55         0 \r\n 2003          138           13.79356      23.99         11.77         0 \r\n 2003          139           16.52019      28.16         12.57         0 \r\n 2003          140           29.66782      19.39         9.21          0 \r\n 2003          141           29.05106      19.32         5.767222      0 \r\n 2003          142           27.77879      22.29         7.05          0 \r\n 2003          143           17.25105      20.14         10.97         0 \r\n 2003          144           17.43276      21.75         6.573889      0 \r\n 2003          145           28.39543      26.41         7.86          0 \r\n 2003          146           26.42476      27.08         7.73          0 \r\n 2003          147           27.63896      28.89         7.72          0 \r\n 2003          148           24.55987      28.77         14.2          14.351 \r\n 2003          149           26.55254      28.7          10.98         0 \r\n 2003          150           20.86264      31.88         9.48          3.175 \r\n 2003          151           19.70672      22.43         9.81          0 \r\n 2003          152           21.98914      21.75         8.33          0 \r\n 2003          153           5.516813      17.38         7.52          0 \r\n 2003          154           7.747764      18.18         10.89         0 \r\n 2003          155           12.50652      21.77         11.23         3.3782 \r\n 2003          156           25.96963      26.33         9.55          4.0132 \r\n 2003          157           5.44171       18.79         13.53         13.7922 \r\n 2003          158           24.7966       24.71         11.03         6.1214 \r\n 2003          159           12.18448      20.76         12.92         6.8072 \r\n 2003          160           28.23384      26.8          13.4          10.8458 \r\n 2003          161           18.7206       26.27         16.97         2.9972 \r\n 2003          162           20.11901      24.38         16.03         0 \r\n 2003          163           19.72287      26.94         14.27         0 \r\n 2003          164           19.31962      29.03         18.05         0 \r\n 2003          165           18.90214      30.58         17.51         0 \r\n 2003          166           27.79511      31.05         14.88         0 \r\n 2003          167           29.19892      30.98         15.42         0 \r\n 2003          168           28.57969      32.26         14.08         0 \r\n 2003          169           16.55471      30.32         19.26         0 \r\n 2003          170           29.58992      26.2          15.76         0 \r\n 2003          171           30.0879       28.21         7.92          0 \r\n 2003          172           29.1516       29.76         10.29         0 \r\n 2003          173           28.30714      32.18         13.06         0 \r\n 2003          174           17.98392      32.8          18.32         0 \r\n 2003          175           25.54562      36.29         20.95         6.2484 \r\n 2003          176           17.81727      34.89         19.6          53.8226 \r\n 2003          177           26.94304      23.33333      15.55556      0 \r\n 2003          178           27.34796      29.94944      12.48889      0 \r\n 2003          179           25.13479      28.68611      16.865        0 \r\n 2003          180           17.03855      27.62         16.94167      0 \r\n 2003          181           28.60731      30.62833      15.35556      0 \r\n 2003          182           20.35533      30.93222      16.54278      0 \r\n 2003          183           26.68789      30.55556      17.22222      0 \r\n 2003          184           24.08181      32.77778      21.66667      0 \r\n 2003          185           23.4796       31.11111      22.77778      0.9398 \r\n 2003          186           22.80564      30.55556      20            14.0462 \r\n 2003          187           23.28572      30.55556      20            1.3716 \r\n 2003          188           20.97987      34.54         23.98         0.254 \r\n 2003          189           7.263717      28.92         19.49         25.654 \r\n 2003          190           14.0241       29.5          21.16         6.604 \r\n 2003          191           12.1082       22.65         17.11         0 \r\n 2003          192           28.3858       28.29         15.43         0 \r\n 2003          193           27.40457      28.35         14.54         0 \r\n 2003          194           24.56577      29.5          14.95         0 \r\n 2003          195           26.99722      30.71         14.07         0 \r\n 2003          196           28.08104      30.64         18.05         0 \r\n 2003          197           26.76748      30.43         15.09         0 \r\n 2003          198           25.6224       34.54         19.44444      0 \r\n 2003          199           12.81764      26.14         19.13         0.508 \r\n 2003          200           28.4963       30.3          12.32         0 \r\n 2003          201           16.93445      31.58         17.17         22.352 \r\n 2003          202           25.83047      26.95         18.26         0.508 \r\n 2003          203           23.80675      25.19         13.93         0 \r\n 2003          204           27.70021      26.54         11.98         0 \r\n 2003          205           26.361        28.02         11.44         0 \r\n 2003          206           26.44049      31.66         12.99         0 \r\n 2003          207           24.34674      32.94         20.15         0 \r\n 2003          208           8.676319      28.03         22.76         0.508 \r\n 2003          209           10.82614      25.2          16.77         1.27 \r\n 2003          210           22.94765      29.1          15.22         0.508 \r\n 2003          211           20.91067      29.5          17.18         0 \r\n 2003          212           23.73115      31.99         18.05         0 \r\n 2003          213           19.68915      31.17         18.86         2.794 \r\n 2003          214           23.81625      29.84         15.62         0 \r\n 2003          215           20.77866      29.1          15.96         0 \r\n 2003          216           22.18817      27.14         14.27         0 \r\n 2003          217           14.53898      27.68         14.14         0 \r\n 2003          218           24.0093       30.84         17.44         0 \r\n 2003          219           23.82709      30.31         17.05         1.524 \r\n 2003          220           24.67259      29.44         16.5          0 \r\n 2003          221           24.1631       28.62         15.02         0 \r\n 2003          222           24.46192      32.05         14.54         0 \r\n 2003          223           16.33731      29.3          15.7          5.588 \r\n 2003          224           15.99577      27.42         16.16         0 \r\n 2003          225           20.7795       29.64         14.81         0 \r\n 2003          226           16.95545      31.85         18.72         0 \r\n 2003          227           21.25422      33.47         18.86         0 \r\n 2003          228           22.46888      35.28         19.53         0 \r\n 2003          229           21.79136      34.14         18.73         0 \r\n 2003          230           22.22943      33.06         19.47         0 \r\n 2003          231           21.84755      33.73         19.87         0 \r\n 2003          232           20.51022      38.12         21.09         3.556 \r\n 2003          233           22.10671      35.28         19.47         0 \r\n 2003          234           23.28505      29.16         16.24         0 \r\n 2003          235           22.20884      31.38         13.33         0 \r\n 2003          236           21.75232      34.95         15.36         0 \r\n 2003          237           21.40308      37.3          18.46         4.318 \r\n 2003          238           18.89988      36.44         20.61         1.778 \r\n 2003          239           22.65883      34.68         19.54         0 \r\n 2003          240           15.92121      34.94         18.73         0 \r\n 2003          241           11.65604      30.17         19.2          0 \r\n 2003          242           10.74162      24.85         16.97         0 \r\n 2003          243           3.340213      20.01         15.22         15.748 \r\n 2003          244           8.914974      22.71         13.33         0.254 \r\n 2003          245           21.41844      27.68         10.9          0 \r\n 2003          246           21.37681      29.64         12.05         0 \r\n 2003          247           22.56837      25.8          10.37         0 \r\n 2003          248           22.29248      28.35         8.26          0 \r\n 2003          249           21.12514      29.91         9.07          0 \r\n 2003          250           20.27303      33.27         15.22         0 \r\n 2003          251           19.78074      31.58         14.28         0 \r\n 2003          252           18.44642      30.51         12.86         0 \r\n 2003          253           18.72353      31.25         12.92         0 \r\n 2003          254           17.09315      33.14         14.75         0 \r\n 2003          255           7.792867      25.27         19.81         8.636 \r\n 2003          256           1.607828      21.36         15.35         47.244 \r\n 2003          257           17.73602      23.44         12.25         21.336 \r\n 2003          258           20.79691      26.14         9.01          0 \r\n 2003          259           20.32658      29.03         12.39         0 \r\n 2003          260           19.47426      29.3          11.3          0 \r\n 2003          261           18.2222       30.71         10.96         13.208 \r\n 2003          262           20.20215      19.19         7.31          0 \r\n 2003          263           19.28945      23.17         4.55          0 \r\n 2003          264           8.486784      22.72         6.302778      6.604 \r\n 2003          265           13.49888      22.64         9.69          2.54 \r\n 2003          266           17.90576      23.85         6.106111      0 \r\n 2003          267           10.62811      24.67         8.33          0 \r\n 2003          268           18.84499      19.19         3.87          0.254 \r\n 2003          269           8.134324      21.7          6.371111      0.508 \r\n 2003          270           12.21067      16.84         7.32          0 \r\n 2003          271           10.75443      15.7          4.738889      0 \r\n 2003          272           15.75745      17.04         0.2111111     0 \r\n 2003          273           10.66276      14.21         1.568889      0 \r\n 2003          274           17.95923      14.27        -2.09          0 \r\n 2003          275           17.48849      13.92        -4.663889      0 \r\n 2003          276           8.695649      22.65         4.482222      0 \r\n 2003          277           13.54905      22.64         3.866111      0 \r\n 2003          278           15.20566      24.11         5.561111      0 \r\n 2003          279           15.88225      25.05         8.33          0 \r\n 2003          280           16.20367      27.96         6.302778      0 \r\n 2003          281           14.88563      28.16         6.772222      0 \r\n 2003          282           5.995756      23.18         10.35         0 \r\n 2003          283           12.71091      27.54         11.5          0 \r\n 2003          284           10.06901      26.21         8.73          3.302 \r\n 2003          285           16.05296      21.61         5.557222      0 \r\n 2003          286           13.13173      23.43         3.462222      10.668 \r\n 2003          287           12.90044      18.8          6.302778      4.064 \r\n 2003          288           13.53407      18.19         3.53          1.016 \r\n 2003          289           6.23324       11.23         0.6872222     0.762 \r\n 2003          290           14.12836      15.54        -1.612778      0 \r\n 2003          291           14.3494       23.64         6.972222      0 \r\n 2003          292           14.27288      28.29         6.635         0 \r\n 2003          293           13.18219      28.7          6.973889      0 \r\n 2003          294           8.89054       21.49         7.45          0 \r\n 2003          295           13.19634      19.46         4.68          0 \r\n 2003          296           13.06789      20.21         3.936111      0 \r\n 2003          297           8.747279      22.77         2.177778      2.794 \r\n 2003          298           8.270346      15.49         2.917778      0 \r\n 2003          299           8.571803      6.498889     -0.6672222     0 \r\n 2003          300           10.72711      10.54        -2.293889      0.762 \r\n 2003          301           6.051445      11.16         5.962778      0.254 \r\n 2003          302           3.616022      7.93          0.1422222     0 \r\n 2003          303           9.229193      22.9          5.562778      0 \r\n 2003          304           5.525725      18.67         5.146111      0 \r\n 2003          305           6.826154      9.87          7.222222E-03                3.81 \r\n 2003          306           1.13968       8.73          7.11          22.606 \r\n 2003          307           2.181203      11.44         7.04          5.5626 \r\n 2003          308           3.222726      20.08         2.168889      2.8956 \r\n 2003          309           3.177706      2.306111     -1.286111      0 \r\n 2003          310           11.98335      7.58         -4.8           0 \r\n 2003          311           10.91551      6.967222     -7.51          0 \r\n 2003          312           10.46033      2.571111     -9.49          0 \r\n 2003          313           7.09234       5.487222     -9.14          0 \r\n 2003          314           3.536944      9.01         -4.537778      0 \r\n 2003          315           3.417993      14.41         4.535         0 \r\n 2003          316           8.149972      13.12         1.222778      0 \r\n 2003          317           11.31165      7.1          -2.497778      0 \r\n 2003          318           2.545713      8.19         -2.565         0 \r\n 2003          319           1.546113      8.26          4.942778      0 \r\n 2003          320           3.008798      11.65        -1.15          0 \r\n 2003          321           1.605443      13.54        -1.15          5.207 \r\n 2003          322           3.606022      14.75         3.662222      0 \r\n 2003          323           10.33042      16.03         1.557778      0 \r\n 2003          324           9.150492      22.92         0.415         0 \r\n 2003          325           8.601593      9.68          2.986111      0 \r\n 2003          326           1.372268      9.07          2.848889      12.1666 \r\n 2003          327           1.250723      13.47        -5.082778      0 \r\n 2003          328           9.817086      0.3411111    -8.06          0 \r\n 2003          329           5.725218      4.807222     -4.671111      0 \r\n 2003          330           8.324738      9.81         -6.972778      0 \r\n 2003          331           7.443545      9.07         -0.6072222     0 \r\n 2003          332           2.095515     -0.265        -6.911111      0 \r\n 2003          333           7.845335      7.86         -9.9           0 \r\n 2003          334           9.067565      15.29        -0.3327778     0 \r\n 2003          335           9.443288      8.8          -3.858889      0 \r\n 2003          336           2.485547      2.51         -1.753889      0 \r\n 2003          337           3.993293      6.643889     -0.1288889     0 \r\n 2003          338           1.213402      2.306111     -0.3327778     0 \r\n 2003          339           7.206689      4.262778     -2.566111      9.65 \r\n 2003          340           4.564075      2.312222     -4.867778      0.51 \r\n 2003          341           4.625872      5.222222     -2.021111      0 \r\n 2003          342           6.724566      10.62         1.152222      0 \r\n 2003          343           1.561343      6.371111      1.903889      0 \r\n 2003          344           2.554708      4.808889     -8.67          44.7 \r\n 2003          345           8.797028     -7.46         -13.15         11.43 \r\n 2003          346           6.273155     -4.88         -14.23         0 \r\n 2003          347           2.624707     -3.11         -12.87         0 \r\n 2003          348           3.789574     -2.371111     -4.941111      3.3 \r\n 2003          349           6.568169      5.562778     -3.518889      0 \r\n 2003          350           3.545856      5.026111     -7.25          0 \r\n 2003          351           7.349405     -6.111111E-02               -9.96          0 \r\n 2003          352           4.31634       0.075        -4.403889      2.79 \r\n 2003          353           8.6818       -1.748889     -11.18         0 \r\n 2003          354           7.89161       1.693889     -15.39         0 \r\n 2003          355           8.186163      9.75         -1.341111      0 \r\n 2003          356           2.507806      4.346111      0.2061111     0 \r\n 2003          357           2.979803      1.16         -4.472222      0 \r\n 2003          358           8.414024      0.9472222    -9.28          0 \r\n 2003          359           8.262563      6.162222     -9.62          0 \r\n 2003          360           6.001781      8.47         -3.578889      0 \r\n 2003          361           2.669643      11.24         3.998889      0 \r\n 2003          362           8.231978      11.84         1.291111      3.81 \r\n 2003          363           4.034213      1.9          -4.262778      0 \r\n 2003          364           8.043572      10.16        -7.99          0 \r\n 2003          365           8.503478      6.172778     -4.596111      0 \r\n 2004          1             3.391801      11.65        -3.99          0 \r\n 2004          2             2.552868      16.91        -3.521111      0 \r\n 2004          3             1.432518      7.45         -4.942222      0 \r\n 2004          4             2.706839     -4.667778     -7.05          8.89 \r\n 2004          5             8.041397     -6.842778     -19.13         11.43 \r\n 2004          6             9.464041     -10.3         -21.72         0 \r\n 2004          7             8.356117     -2.978889     -17.16         0 \r\n 2004          8             4.239982     -0.2027778    -7.45          0 \r\n 2004          9             7.257943     -0.7438889    -8.53          0 \r\n 2004          10            5.334851     -1.352778     -12.2          0 \r\n 2004          11            8.72138       6.423889     -4.392222      0 \r\n 2004          12            8.104952      3.931111     -2.1           0 \r\n 2004          13            7.850983      3.317778     -5.885         0 \r\n 2004          14            2.782318      4.55         -7.65          0 \r\n 2004          15            5.391879      0.545        -10.77         0 \r\n 2004          16            4.089818      2.917778     -2.092222      0 \r\n 2004          17            2.156476      3.257778     -2.095         3.05 \r\n 2004          18            9.785999     -2.026111     -14.37         0 \r\n 2004          19            9.77282      -5.763889     -16.27         0 \r\n 2004          20            5.658442     -4.336111     -10.64         0 \r\n 2004          21            9.40036       6.097222     -8.82          0 \r\n 2004          22            10.77275     -8.82         -17.57         0 \r\n 2004          23            3.11026       5.495        -10.23         0 \r\n 2004          24            10.69748     -3.797778     -9.9           0 \r\n 2004          25            4.010908     -4.333889     -7.38          0 \r\n 2004          26            2.751357     -4.676111     -6.297778      0 \r\n 2004          27            10.10679     -5.685        -17.09         7.37 \r\n 2004          28            8.707783     -12.34        -19.88         1.52 \r\n 2004          29            6.813016     -13.76        -21.92         0 \r\n 2004          30            9.877211     -16.28        -22.94         2.29 \r\n 2004          31            7.03958      -9.82         -24.03         0 \r\n 2004          32            4.682817     -1.007222     -10.3          0 \r\n 2004          33            1.981417     -0.1261111    -5.765         0 \r\n 2004          34            10.51703     -5.628889     -17.71         12.7 \r\n 2004          35            7.425972     -6.103889     -20.22         0 \r\n 2004          36            3.349585     -2.157778     -6.292222      0 \r\n 2004          37            11.21835     -2.715        -8.47          6.6 \r\n 2004          38            10.51464     -7.19         -12.14         1.78 \r\n 2004          39            13.16713      0.7638889    -11.25         0 \r\n 2004          40            12.78199      1.212778     -4.267778      0 \r\n 2004          41            13.36629     -0.7327778    -17.1          0 \r\n 2004          42            13.46118      1.62         -17.02         0 \r\n 2004          43            9.282999     -4.676111     -13.29         0 \r\n 2004          44            14.56722      0.6727778    -16.14         0 \r\n 2004          45            13.8772       0.945        -10.92         0 \r\n 2004          46            14.13292     -3.122222     -15.67         0 \r\n 2004          47            12.29619      0.4022222    -17.7          0 \r\n 2004          48            14.08108     -3.258889     -15.94         0 \r\n 2004          49            14.12945      8.05         -16.55         0 \r\n 2004          50            9.145053      9.42         -6.026111      0 \r\n 2004          51            3.303937      5.292778      0.6077778     0 \r\n 2004          52            8.898364      5.418889     -3.451111      0.51 \r\n 2004          53            3.214232      4.686111     -3.853889      0 \r\n 2004          54            6.710341      7.26         -0.47          3.05 \r\n 2004          55            3.119758      3.867222      0.8838889     0 \r\n 2004          56            15.06441      7.17         -1.551111      0 \r\n 2004          57            15.56239      8.66         -4.668889      0 \r\n 2004          58            15.32737      10.42        -5.003889      0 \r\n 2004          59            12.05285      13.73        -2.566111      0 \r\n 2004          60            11.47721      16.7          0.1427778     0 \r\n 2004          61            7.528606      15.49         5.622778      0 \r\n 2004          62            3.408412      6.982778      3.053889      1.27 \r\n 2004          63            4.769007      7.11          1.557778      0 \r\n 2004          64            1.916314      8.21          3.931111      1.27 \r\n 2004          65            4.668089      17.13         3.727222      45.97 \r\n 2004          66            16.89181      11.98         0.21          0 \r\n 2004          67            9.664789      7.52         -0.265         0.51 \r\n 2004          68            10.12992      8.46         -4.188889      0 \r\n 2004          69            17.73711      9.74         -2.633889      0 \r\n 2004          70            12.88643      11.3         -3.713889      0 \r\n 2004          71            9.832818      3.187222     -6.632778      0 \r\n 2004          72            19.01938      4.671111     -10.57         0 \r\n 2004          73            9.560817      13           -7.44          0 \r\n 2004          74            18.57303      9.61          1.363889      8.64 \r\n 2004          75            3.742044      1.571111     -3.382778      0 \r\n 2004          76            9.40195       2.971111     -2.571111      11.68 \r\n 2004          77            14.92839      5.818889     -1.548889      2.03 \r\n 2004          78            8.757907      8.13         -1.548889      1.78 \r\n 2004          79            18.44554      16.63        -4.46          1.27 \r\n 2004          80            18.47081      15.49         0.34          0.25 \r\n 2004          81            18.938        5.147222     -4.191111      0 \r\n 2004          82            20.66344      7.71         -8.19          0 \r\n 2004          83            18.17191      17.98        -2.566111      0 \r\n 2004          84            9.716964      20.82         7.58          4.32 \r\n 2004          85            4.290022      18.67         14            3.56 \r\n 2004          86            7.611742      21.22         14.54         30.99 \r\n 2004          87            9.06179       21.7          13.19         0 \r\n 2004          88            4.596333      17.92         6.371111      5.08 \r\n 2004          89            18.08425      17.51         3.326111      4.57 \r\n 2004          90            9.315802      6.832778      1.217222      0.25 \r\n 2004          91            13.53403      11.7          2.102222      0.76 \r\n 2004          92            21.73174      14.4         -0.6677778     0 \r\n 2004          93            23.39149      17.44         0.4222222     0 \r\n 2004          94            22.66845      15.09         1.162778      0 \r\n 2004          95            22.77954      13.66        -2.905         0 \r\n 2004          96            21.92433      19.06        -1.952778      0 \r\n 2004          97            19.8958       24.18         6.507222      0 \r\n 2004          98            21.27635      23.16         3.666111      0 \r\n 2004          99            23.5873       19.39         5.351111      0 \r\n 2004          100           17.77321      16.89         2.237778      0 \r\n 2004          101           21.30761      12.37         0.75          0 \r\n 2004          102           24.1054       12.3         -3.375         0 \r\n 2004          103           21.81973      11.43        -3.788889      0 \r\n 2004          104           24.20264      15.48        -4.8           0 \r\n 2004          105           23.52354      22.49        -1.41          0 \r\n 2004          106           16.55596      24.99         2.107778      0 \r\n 2004          107           22.63737      31.73         10.16         0.762 \r\n 2004          108           23.03304      31.38         12.99         0.508 \r\n 2004          109           9.852943      27.85         19.14         0 \r\n 2004          110           18.62223      22.58         6.711111      0 \r\n 2004          111           3.255236      20.64         5.691111      14.478 \r\n 2004          112           13.37784      15.76         6.235         1.27 \r\n 2004          113           11.87674      14.75         4.073889      0 \r\n 2004          114           21.46756      20.34         3.187222      0 \r\n 2004          115           5.653128      14.75         6.302778      5.588 \r\n 2004          116           7.480824      14            9.21          0 \r\n 2004          117           24.44636      17.17         5.282778      0 \r\n 2004          118           22.5167       17.31         0.755         0 \r\n 2004          119           23.86851      30.86         9.69          0 \r\n 2004          120           18.79666      25.27         14.54         0 \r\n 2004          121           4.829801      18.39         8.87          4.826 \r\n 2004          122           13.94996      15.82         4.752222      0 \r\n 2004          123           19.58279      14.33         2.578889      0 \r\n 2004          124           26.04816      16.29         0.4222222     0 \r\n 2004          125           20.85394      24.73         7.66          0 \r\n 2004          126           26.08988      27.08         2.986111      0 \r\n 2004          127           20.78214      32.4          13.06         0 \r\n 2004          128           7.308695      20.82         11.03         5.334 \r\n 2004          129           21.43806      31.32         10.97         0 \r\n 2004          130           22.29239      31.66         18.99         0 \r\n 2004          131           12.32887      26.08         15.43         0.254 \r\n 2004          132           19.36029      29.77         14.27         2.54 \r\n 2004          133           12.1567       27.36         18.1          13.716 \r\n 2004          134           11.6652       20.48         10.76         9.398 \r\n 2004          135           13.16487      15.15         6.372222      4.572 \r\n 2004          136           28.5043       18.92         3.733889      0 \r\n 2004          137           25.43069      24.45         7.52          0 \r\n 2004          138           20.14822      28.43         15.7          14.224 \r\n 2004          139           3.613805      19.07         14            3.302 \r\n 2004          140           24.28419      27.49         12.92         0 \r\n 2004          141           13.6298       30.45         19.94         7.112 \r\n 2004          142           20.11575      31.4          17.69         0 \r\n 2004          143           10.60887      26.76         16.6          18.034 \r\n 2004          144           16.31141      27.37         13.59         6.35 \r\n 2004          145           21.98458      25.2          11.71         20.828 \r\n 2004          146           19.49844      21.63         11.84         0 \r\n 2004          147           22.45582      22.43         9.14          0.762 \r\n 2004          148           15.81372      26.88         14.61         0.254 \r\n 2004          149           25.21308      26.07         12.32         0 \r\n 2004          150           22.79949      29.84         14.81         0 \r\n 2004          151           11.47286      27.56         17.38         58.928 \r\n 2004          152           17.84179      24.07         13.73         6.858 \r\n 2004          153           21.18606      23.17         13.47         0 \r\n 2004          154           16.09024      21.69         13.2          0 \r\n 2004          155           20.15169      25.4          10.42         0 \r\n 2004          156           23.1002       25.8          14.54         0 \r\n 2004          157           23.05715      29.03         12.39         0 \r\n 2004          158           23.44224      30.05         19.33         0.508 \r\n 2004          159           25.20965      33.21         19.82         0 \r\n 2004          160           25.60466      33.34         22.85         5.08 \r\n 2004          161           17.88091      29.03         21.36         0 \r\n 2004          162           6.993096      24.8          19.99         20.828 \r\n 2004          163           18.12174      30.93         21.56         0 \r\n 2004          164           25.43805      32.27         18.46         0 \r\n 2004          165           21.25702      29.1          19.46         0 \r\n 2004          166           21.07272      29.37         17.85         8.128 \r\n 2004          167           18.1527       29.37         16.51         0 \r\n 2004          168           20.49097      32.13         20.82         4.318 \r\n 2004          169           18.98561      28.09         18.39         0 \r\n 2004          170           12.50673      22.85         13.93         0 \r\n 2004          171           28.35158      22.37         9.41          0 \r\n 2004          172           20.81854      23.17         14.28         0 \r\n 2004          173           10.24239      25.13         16.17         0 \r\n 2004          174           28.44308      25.26         12.72         0 \r\n 2004          175           25.09659      30.32         14.08         0 \r\n 2004          176           10.42013      19.14         10.36         3.302 \r\n 2004          177           29.70782      23.04         8.8           0 \r\n 2004          178           28.08661      27.62         11.78         0 \r\n 2004          179           10.178        24.87         16.71         0 \r\n 2004          180           27.11772      24.86         13.13         3.302 \r\n 2004          181           27.93498      28.62         12.59         0 \r\n 2004          182           29.13369      29.44         12.86         0 \r\n 2004          183           24.51301      32.46         14.68         0 \r\n 2004          184           17.22206      29.98         18.33         6.858 \r\n 2004          185           11.9162       27.96         20.41         14.478 \r\n 2004          186           23.17631      29.91         19.54         0 \r\n 2004          187           20.12901      30.25         18.53         8.128 \r\n 2004          188           12.42041      25.47         16.57         0 \r\n 2004          189           13.94201      22.78         13.2          0 \r\n 2004          190           21.60408      26.14         12.66         0 \r\n 2004          191           13.33868      27.63         19.8          2.032 \r\n 2004          192           13.62373      29.16         18.87         0 \r\n 2004          193           12.06954      28.98         18.8          2.54 \r\n 2004          194           22.67054      31.19         19.07         0 \r\n 2004          195           25.55186      33.95         18.39         1.778 \r\n 2004          196           26.93642      28.9          15.97         0 \r\n 2004          197           25.56064      29.91         16.38         0 \r\n 2004          198           22.82138      30.86         16.71         0.762 \r\n 2004          199           20.08969      25.74         16.3          0 \r\n 2004          200           26.54689      29.37         14.14         0 \r\n 2004          201           23.92842      30.78         14.88         0 \r\n 2004          202           24.23507      34.2          19.95         0 \r\n 2004          203           12.66932      30.32         22.71         0 \r\n 2004          204           7.281374      28.93         19.14         16.256 \r\n 2004          205           16.63567      24.25         16.44         0 \r\n 2004          206           6.564738      20.02         14.54         0.508 \r\n 2004          207           24.57924      25.53         14.14         0 \r\n 2004          208           24.52234      25.47         12.52         0 \r\n 2004          209           25.29458      28.09         10.43         0 \r\n 2004          210           24.83447      28.7          11.51         0 \r\n 2004          211           19.44865      29.16         17.19         1.016 \r\n 2004          212           14.70969      25.06         18.05         0 \r\n 2004          213           26.59748      29.91         16.98         0 \r\n 2004          214           11.3527       30.93         16.24         1.524 \r\n 2004          215           18.20119      31.05         15.56         4.572 \r\n 2004          216           18.15685      34.76         18.6          14.986 \r\n 2004          217           9.946749      25.67         15.56         7.112 \r\n 2004          218           26.47945      24.45         12.59         2.794 \r\n 2004          219           25.97699      26.47         9.89          1.524 \r\n 2004          220           17.67025      25.66         11.04         0 \r\n 2004          221           22.7559       29.1          12.18         0 \r\n 2004          222           24.76949      29.78         16.85         0 \r\n 2004          223           8.977358      18.26         11.57         0 \r\n 2004          224           17.85376      18.93         9.48          0 \r\n 2004          225           16.61178      20.34         9.62          0 \r\n 2004          226           17.04741      23.24         9.62          0 \r\n 2004          227           21.45204      24.39         7.12          0 \r\n 2004          228           24.93559      25.93         7.53          0 \r\n 2004          229           16.99449      27.7          8             4.318 \r\n 2004          230           13.21475      26.41         16.85         5.08 \r\n 2004          231           3.660916      22.11         17.24         15.24 \r\n 2004          232           21.9829       21.75         12.18         10.16 \r\n 2004          233           19.46945      24.86         13            6.096 \r\n 2004          234           23.76278      24.59         10.63         3.048 \r\n 2004          235           23.67253      29.64         11.98         0 \r\n 2004          236           18.80817      31.59         15.49         0 \r\n 2004          237           11.85336      27.83         19.2          18.796 \r\n 2004          238           10.29515      26.82         18.73         13.716 \r\n 2004          239           15.19579      32.54         19.55         8.636 \r\n 2004          240           10.32661      28.57         20.89         2.286 \r\n 2004          241           4.418011      22.58         12.39         0.762 \r\n 2004          242           20.34688      23.78         10.37         0.762 \r\n 2004          243           21.79914      28.09         11.71         0.762 \r\n 2004          244           21.92617      29.16         11.24         0.762 \r\n 2004          245           19.24996      29.84         13.4          0.508 \r\n 2004          246           20.84193      30.92         14.88         1.016 \r\n 2004          247           17.93283      29.77         13.8          0.254 \r\n 2004          248           18.18073      32.19         14.01         0 \r\n 2004          249           17.13729      32.68         17.25         0 \r\n 2004          250           16.55567      26.14         13.26         0.762 \r\n 2004          251           21.37752      24.25         9.89          0 \r\n 2004          252           20.14839      24.31         9.07          0 \r\n 2004          253           20.24052      27.35         9.01          0 \r\n 2004          254           19.60434      30.85         11.37         0 \r\n 2004          255           18.45261      31.99         13            0 \r\n 2004          256           19.3697       31.85         12.11         0 \r\n 2004          257           18.27362      32.27         11.31         0 \r\n 2004          258           17.66213      33.74         19.28         0 \r\n 2004          259           4.829842      25.62         18.12         8.128 \r\n 2004          260           19.69744      24.59         10.57         0 \r\n 2004          261           18.04676      25.8          8.33          1.778 \r\n 2004          262           16.14978      29.16         13.6          0 \r\n 2004          263           17.7215       31.19         12.52         0 \r\n 2004          264           19.33665      28.5          10.09         0 \r\n 2004          265           18.46571      30.11         9.35          5.588 \r\n 2004          266           18.11053      29.3          7.73          3.302 \r\n 2004          267           14.55086      29.98         10.57         0 \r\n 2004          268           16.60366      26.68         11.98         0.508 \r\n 2004          269           17.39682      26.41         9.35          0 \r\n 2004          270           17.76727      26.68         6.438889      0 \r\n 2004          271           16.01334      28.03         5.155         0 \r\n 2004          272           17.9153       22.16         6.236111      0 \r\n 2004          273           17.48498      21.88         2.715         0 \r\n 2004          274           16.34818      25.46         2.382222      0 \r\n 2004          275           3.546902      19.01         5.077222      10.16 \r\n 2004          276           17.62271      15.62        -0.1227778     0 \r\n 2004          277           16.62399      24.05         2.517778      0 \r\n 2004          278           17.14185      14.94         0.6227778     0 \r\n 2004          279           16.48488      19.05        -2.43          0 \r\n 2004          280           15.80552      26.47         2.177222      0 \r\n 2004          281           4.97532       20.83         5.895         13.462 \r\n 2004          282           6.965691      22.78         9.89          8.89 \r\n 2004          283           16.01849      23.44         4.821111      0 \r\n 2004          284           15.19913      21.61         4.142222      0 \r\n 2004          285           12.30719      19.6          3.326111      0 \r\n 2004          286           4.297219      15.63         7.51          0 \r\n 2004          287           13.43436      20.95         7.79          0 \r\n 2004          288           2.069867      10.49         6.573889      5.842 \r\n 2004          289           7.280244      12.39         2.781111      2.286 \r\n 2004          290           9.650647      9.34          0.4922222     0 \r\n 2004          291           10.00047      15.02        -1.137222      0 \r\n 2004          292           1.674228      10.64         6.447222      8.89 \r\n 2004          293           3.534225      12.45         7.99          0 \r\n 2004          294           2.559269      12.79         9.28          0 \r\n 2004          295           4.908878      16.84         10.42         0 \r\n 2004          296           1.459923      16.85         13.53         23.114 \r\n 2004          297           11.28797      22.04         9.48          5.588 \r\n 2004          298           13.53415      21.9          4.073889      0 \r\n 2004          299           11.60073      21.76         4.885         0 \r\n 2004          300           7.445031      15.15         11.5          32.258 \r\n 2004          301           3.289335      15.09         10.82         0 \r\n 2004          302           2.095975      18.26         10.83         6.604 \r\n 2004          303           8.464483      27.02         16.61         11.938 \r\n 2004          304           5.242217      18.94         5.351111      0 \r\n 2004          305           11.18266      17.24         3.597778      0 \r\n 2004          306           7.793411      11.65         6.907222      18.034 \r\n 2004          307           4.404162      11.51         6.642778      0.254 \r\n 2004          308           7.904664      12.46         5.962778      4.064 \r\n 2004          309           10.21749      13.06         3.393889      2.032 \r\n 2004          310           11.22249      14.41        -0.8677778     0 \r\n 2004          311           11.55684      22.03         6.371111      0 \r\n 2004          312           10.95748      16.76         1.226111      0 \r\n 2004          313           8.42712       10.82        -1.681111      0 \r\n 2004          314           9.172332      16.04        -2.832222      0 \r\n 2004          315           8.266538      17.65         6.031111      0 \r\n 2004          316           11.08488      11.32        -2.702778      0 \r\n 2004          317           10.87819      9.74         -5.547222      0 \r\n 2004          318           10.87405      11.03        -6.218889      0 \r\n 2004          319           7.164263      10.3         -2.566111      0 \r\n 2004          320           1.556448      9.48          3.732778      1.016 \r\n 2004          321           3.28716       16.31         8.87          0 \r\n 2004          322           4.327888      21.77         12.79         0.762 \r\n 2004          323           1.676194      16.31         10.29         11.938 \r\n 2004          324           1.653057      13.33         10.36         1.778 \r\n 2004          325           2.035809      11.03         1.352778      0 \r\n 2004          326           4.193121      6.915        -1.612778      0 \r\n 2004          327           2.990974      8.67         -1.545         0 \r\n 2004          328           7.642201      10.42         2.577778      0 \r\n 2004          329           1.56536       2.782222     -5.003889      0 \r\n 2004          330           8.889996      5.215        -7.58          0 \r\n 2004          331           3.881455      8.6          -1.547222      6.7818 \r\n 2004          332           1.140182      7.25          1.762222      6.2992 \r\n 2004          333           6.331061      6.037778     -2.906111      0 \r\n 2004          334           1.787447      3.053889      0.3422222     0 \r\n 2004          335           1.202565      0.5511111    -1.885         0 \r\n 2004          336           8.859076      4.065        -4.596111      0.25 \r\n 2004          337           8.212188      7.04         -4.46          0 \r\n 2004          338           6.919123      7.32         -6.9           0 \r\n 2004          339           8.326035      11.23        -0.6672222     0 \r\n 2004          340           4.384874      7.66         -4.187222      0 \r\n 2004          341           1.378837      8.13          6.031111      13.72 \r\n 2004          342           1.403439      8.61          2.107778      8.89 \r\n 2004          343           4.711477      7.86         -2.226111      2.54 \r\n 2004          344           3.128544      9.41          3.462222      1.02 \r\n 2004          345           1.055079      5.631111      2.646111      0 \r\n 2004          346           1.413439      3.053889      0.3472222     1.78 \r\n 2004          347           4.243371      7.66          0.3427778     0 \r\n 2004          348           6.080356      0.4811111    -8.74          0 \r\n 2004          349           8.474817     -1.422222     -11.92         0 \r\n 2004          350           7.296603      5.426111     -8.86          0 \r\n 2004          351           8.035247      8.33         -5.217222      0 \r\n 2004          352           7.913116      1.626111     -8.73          0 \r\n 2004          353           5.068707      6.44         -9.22          0 \r\n 2004          354           8.340469     -9.01         -16            0 \r\n 2004          355           6.058265      1.296111     -10.5          0 \r\n 2004          356           7.253047      0.7011111    -11.18         0 \r\n 2004          357           5.833333     -11.11        -17.16         0 \r\n 2004          358           8.267249     -9.83         -18.45         0 \r\n 2004          359           8.262354     -8.12         -21.64         0 \r\n 2004          360           3.650498      1.3          -8.6           0 \r\n 2004          361           8.344569     -2.77         -11.66         0.51 \r\n 2004          362           4.992893      1.905        -11.52         0 \r\n 2004          363           4.303035      9.01         -3.52          0 \r\n 2004          364           7.243843      6.9          -6.902778      0 \r\n 2004          365           2.119782      16.24        -3.451111      0.51 \r\n 2004          366           7.997591      13.68        -2.906111      0 \r\n 2005          1             1.095162      3.123889     -3.451111      0 \r\n 2005          2             2.699349      10.53        -0.4011111     11.43 \r\n 2005          3             1.140935      0.2111111    -1.348889      6.1 \r\n 2005          4             1.239364     -0.3327778    -3.247222      9.4 \r\n 2005          5             1.337792     -3.178889     -6.772222      7.62 \r\n 2005          6             6.770423     -6.5          -14.58         14.48 \r\n 2005          7             4.724782     -3.11         -9.49          0 \r\n 2005          8             3.79016      -3.447222     -5.957222      0 \r\n 2005          9             4.393409      1.635        -3.583889      0 \r\n 2005          10            5.093142      0.755        -7.72          0 \r\n 2005          11            3.104946      1.095        -1.961111      0.51 \r\n 2005          12            1.088384      3.326111     -0.3327778     0.25 \r\n 2005          13            5.818772     -6.111111E-02               -17.57         11.43 \r\n 2005          14            8.20177      -13.63        -20.56         0 \r\n 2005          15            6.102782     -13.08        -18.72         0 \r\n 2005          16            10.0247      -11.05        -18.25         0 \r\n 2005          17            10.12126     -8.61         -19.33         0 \r\n 2005          18            5.770615      1.177222     -16.2          0 \r\n 2005          19            4.486085      3.597778     -5.277222      0 \r\n 2005          20            3.652841     -0.6061111    -4.671111      0 \r\n 2005          21            5.046574     -2.021111     -5.077222      0 \r\n 2005          22            7.96416      -1.341111     -14.72         1.27 \r\n 2005          23            7.40342      -4.88         -14.1          0.76 \r\n 2005          24            10.20017      3.242778     -6.898889      0 \r\n 2005          25            10.2385       14.7         -7.44          0 \r\n 2005          26            1.446785      2.245        -7.52          0 \r\n 2005          27            9.789974     -0.68         -10.7          0 \r\n 2005          28            7.144515      2.171111     -9.14          0 \r\n 2005          29            2.582072      0.8877778    -1.885         0.25 \r\n 2005          30            3.090888      2.577778     -0.81          0.51 \r\n 2005          31            3.720413      2.782222     -0.8777778     0 \r\n 2005          32            5.244853      5.29         -2.837778      0 \r\n 2005          33            10.7292       7.58         -3.575         0 \r\n 2005          34            11.0517       11.03        -5.476111      0 \r\n 2005          35            11.68014      15.08        -4.46          0 \r\n 2005          36            11.01388      15.22        -2.566111      0 \r\n 2005          37            2.899303      8.47          2.102222      0 \r\n 2005          38            1.323901      5.962778     -3.722778      4.83 \r\n 2005          39            4.350984      0.6138889    -4.062778      1.52 \r\n 2005          40            3.978105     -0.4688889    -9.42          2.03 \r\n 2005          41            12.59112     -1.082222     -13.01         0.25 \r\n 2005          42            13.07755      6.967222     -5.605         0 \r\n 2005          43            9.996664      10.82        -2.497778      0 \r\n 2005          44            7.874476      7.32          1.628889      5.08 \r\n 2005          45            5.752289      10.76         1.223889      7.37 \r\n 2005          46            4.448052      5.701111      0.2788889     0 \r\n 2005          47            13.49231      2.713889     -3.642778      0 \r\n 2005          48            12.97793      2.237778     -8.4           0 \r\n 2005          49            13.9031      -0.8122222    -11.25         0 \r\n 2005          50            3.038755      2.917778     -6.627222      0 \r\n 2005          51            1.353775      4.006111      0.1427778     2.54 \r\n 2005          52            3.828653      2.577778     -0.81          2.03 \r\n 2005          53            12.65497      5.213889     -2.571111      0 \r\n 2005          54            7.613416      3.251111     -4.663889      0 \r\n 2005          55            11.73696      6.226111     -5.005         0 \r\n 2005          56            15.24357      10.14        -3.587222      0 \r\n 2005          57            14.12397      7.78         -6.498889      0 \r\n 2005          58            5.719696      10.36        -1.892222      0 \r\n 2005          59            6.872053     -0.8022223    -5.277222      4.06 \r\n 2005          60            14.20342     -6.611111E-02               -7.78          0.25 \r\n 2005          61            13.01902      1.962778     -7.79          0 \r\n 2005          62            15.4136       6.218889     -9.41          0 \r\n 2005          63            13.45424      16.44        -6.286111      0 \r\n 2005          64            15.9287       10.82         0.075         0 \r\n 2005          65            15.72481      22.57         1.98          0 \r\n 2005          66            2.124928      15.56        -4.603889      1.02 \r\n 2005          67            12.76438      3.522778     -6.083889      0 \r\n 2005          68            17.87781      3.387222     -9.55          0 \r\n 2005          69            7.513962      7.86         -4.663889      0 \r\n 2005          70            10.39088      7.05         -2.567222      1.78 \r\n 2005          71            3.495565      4.671111     -8.6           0 \r\n 2005          72            17.69711      3.447222     -10.43         0 \r\n 2005          73            17.14653      3.516111     -7.24          0 \r\n 2005          74            16.71399      9.33         -10.23         0 \r\n 2005          75            16.97499      11.9         -3.642778      0 \r\n 2005          76            16.44086      16.23        -0.9361111     0 \r\n 2005          77            10.7343       15.77        -2.293889      0 \r\n 2005          78            14.38511      5.97         -0.4011111     2.29 \r\n 2005          79            18.03593      10.01        -4.062778      0 \r\n 2005          80            18.22601      11.22        -0.6738889     0 \r\n 2005          81            5.842705      6.847222     -2.222222E-03                0 \r\n 2005          82            11.95147      8.6          -1.143889      9.91 \r\n 2005          83            4.527674      4.738889     -3.178889      0.51 \r\n 2005          84            2.511446      3.733889      1.217778      16 \r\n 2005          85            18.32169      11.36         0.5511111     0.76 \r\n 2005          86            18.4068       15.62        -3.11          0 \r\n 2005          87            20.42926      21.23        -2.77          0 \r\n 2005          88            13.26717      24.12         2.038889      0 \r\n 2005          89            14.97152      24.26         8.67          0 \r\n 2005          90            20.13157      17.65         5.283889      0.51 \r\n 2005          91            18.74838      15.16         0.6161111     0 \r\n 2005          92            21.77877      16.15         0.1427778     0 \r\n 2005          93            20.90557      23.65         3.528889      0 \r\n 2005          94            21.25388      29.18         3.733889      0 \r\n 2005          95            15.27951      26.22         7.51          0 \r\n 2005          96            7.067069      23.24         12.1          0 \r\n 2005          97            15.17415      19.13         4.88          0 \r\n 2005          98            22.39804      23.44         1.503889      0 \r\n 2005          99            18.77704      25.87         5.622778      0 \r\n 2005          100           18.91055      29.17         11.77         0 \r\n 2005          101           3.740329      21.84         14.68         5.842 \r\n 2005          102           6.595197      15.15         7.65          29.21 \r\n 2005          103           23.79278      16.83         3.122222      0 \r\n 2005          104           23.70018      20.68         1.64          0 \r\n 2005          105           23.0835       23.11         2.047778      0 \r\n 2005          106           16.76219      23.78         4.822222      0 \r\n 2005          107           19.61442      27.62         12.25         0 \r\n 2005          108           20.71917      27.9          8.74          0 \r\n 2005          109           17.53226      26.75         13.74         0 \r\n 2005          110           16.49555      27.36         12.25         0 \r\n 2005          111           8.928405      16.16         8.94          5.334 \r\n 2005          112           5.627271      13.27         5.477222      9.652 \r\n 2005          113           23.74625      10.63         0.7511111     0.508 \r\n 2005          114           25.17898      15.83        -0.8022223     0 \r\n 2005          115           19.95027      19.87         2.997222      3.81 \r\n 2005          116           17.11649      12.05         3.462222      1.524 \r\n 2005          117           20.87929      14.88         3.121111      0 \r\n 2005          118           14.87044      13.93         2.04          0 \r\n 2005          119           12.82442      14.61         5.213889      0 \r\n 2005          120           20.93682      14.2         -0.2611111     0 \r\n 2005          121           14.02924      9.88          3.13          0 \r\n 2005          122           10.85501      7.38         -2.292222      0 \r\n 2005          123           26.34347      15.02        -4.596111      0 \r\n 2005          124           26.43263      20.21        -2.688889      0 \r\n 2005          125           23.81039      24.11         0.285         0 \r\n 2005          126           16.78654      26.27         10.37         0 \r\n 2005          127           21.67383      29.04         11.71         0 \r\n 2005          128           14.90671      28.1          15.7          5.334 \r\n 2005          129           18.50156      25.81         15.76         0 \r\n 2005          130           25.55591      30.93         12.79         1.27 \r\n 2005          131           11.87005      22.94         9.14          16.256 \r\n 2005          132           6.702266      19.08         6.975         7.874 \r\n 2005          133           10.32519      22.52         10.55         5.588 \r\n 2005          134           19.36477      16.91         7.93          0.254 \r\n 2005          135           16.22032      13.6          2.917778      0 \r\n 2005          136           23.83759      19.8          0.6188889     0 \r\n 2005          137           26.12063      26.75         8.53          0 \r\n 2005          138           12.44171      26.5          15.43         4.064 \r\n 2005          139           22.85656      29.39         13.87         10.16 \r\n 2005          140           10.88338      20.42         11.57         0 \r\n 2005          141           10.90949      22.85         8.67          1.27 \r\n 2005          142           27.69883      29.18         12.79         0 \r\n 2005          143           28.14418      27.7          13.2          0 \r\n 2005          144           27.51018      25.46         9.55          0 \r\n 2005          145           22.49419      25.06         10.57         0 \r\n 2005          146           26.09439      25.28         10.76         0 \r\n 2005          147           21.90805      23.52         8.94          0 \r\n 2005          148           20.10646      22.31         8.73          0 \r\n 2005          149           9.901729      20.75         6.58          1.016 \r\n 2005          150           24.84685      26.41         7.79          0 \r\n 2005          151           27.97079      29.1          9.62          0 \r\n 2005          152           23.77399      30.25         14.49         0 \r\n 2005          153           24.93413      30.92         14.47         0 \r\n 2005          154           19.97785      28.83         13.67         0.762 \r\n 2005          155           16.89696      30.11         17.85         23.622 \r\n 2005          156           26.38054      29.04         16.77         2.54 \r\n 2005          157           28.09719      33.07         18.67         0 \r\n 2005          158           23.81709      33.75         17.79         0 \r\n 2005          159           8.650043      28.91         17.78         1.778 \r\n 2005          160           17.15758      31            18.05         0 \r\n 2005          161           22.53666      33.48         19.54         2.286 \r\n 2005          162           26.3097       32.67         19.01         10.16 \r\n 2005          163           22.91167      31.79         19.14         0 \r\n 2005          164           23.2245       29.98         20.89         0 \r\n 2005          165           14.61559      24.73         18.24         1.524 \r\n 2005          166           13.98335      24.67         14.69         0.762 \r\n 2005          167           29.35938      27.36         11.98         0 \r\n 2005          168           28.87889      27.56         11.24         0 \r\n 2005          169           28.53802      28.28         10.97         0 \r\n 2005          170           28.29033      29.1          12.05         0 \r\n 2005          171           28.09196      30.78         12.86         0 \r\n 2005          172           24.55853      33.28         16.16         0 \r\n 2005          173           24.93509      34.4          19.88         0 \r\n 2005          174           26.95287      35.89         20.55         0 \r\n 2005          175           26.37397      36.44         20.22         0 \r\n 2005          176           22.58034      34.89         20.55         0 \r\n 2005          177           26.11703      36.3          20.69         0 \r\n 2005          178           25.28751      35.42         19.33         1.016 \r\n 2005          179           16.08003      31.13         19.67         1.778 \r\n 2005          180           18.41709      34.09         20.35         0 \r\n 2005          181           21.74684      31.13         19.67         5.588 \r\n 2005          182           29.11001      25.53         14.28         0 \r\n 2005          183           23.45082      26.47         11.64         0 \r\n 2005          184           18.17898      31.54         12.39         0 \r\n 2005          185           8.670462      24.87         17.32         5.08 \r\n 2005          186           25.24366      28.9          15.29         0 \r\n 2005          187           28.15485      28.83         13.81         0 \r\n 2005          188           25.87302      29.71         14.62         0 \r\n 2005          189           27.1978       31.45         15.22         0 \r\n 2005          190           26.37343      33.61         16.64         0 \r\n 2005          191           26.66334      33.81         15.83         0 \r\n 2005          192           23.74571      32.6          15.49         0 \r\n 2005          193           19.21862      30.66         20.68         0 \r\n 2005          194           16.1535       31.61         20.55         0 \r\n 2005          195           24.31197      33.68         18.87         0 \r\n 2005          196           24.63443      34.56         19.01         0 \r\n 2005          197           24.94898      35.28         17.72         0 \r\n 2005          198           25.20383      36.98         21.09         0 \r\n 2005          199           22.15876      31.93         17.86         0 \r\n 2005          200           28.08385      33.54         14.22         0 \r\n 2005          201           20.18822      35.69         20.68         5.08 \r\n 2005          202           19.2254       35.69         24.33         0.254 \r\n 2005          203           26.47815      35.83         19.88         0 \r\n 2005          204           16.30262      35.02         23.26         0 \r\n 2005          205           26.0113       38.93         23.59         0 \r\n 2005          206           20.961        38.66         22.18         0.762 \r\n 2005          207           4.396171      25.1          16.23         26.416 \r\n 2005          208           27.61436      25.8          12.73         0 \r\n 2005          209           26.75764      27.07         12.39         0 \r\n 2005          210           18.64018      30.59         14.62         0 \r\n 2005          211           24.91342      32.87         17.18         0 \r\n 2005          212           9.770143      27.56         16.98         0 \r\n 2005          213           25.46437      34.13         15.43         0 \r\n 2005          214           23.68148      35.35         17.86         0 \r\n 2005          215           18.21408      36.37         21.5          0 \r\n 2005          216           21.55371      30.25         18.93         0 \r\n 2005          217           21.97926      29.98         15.7          0 \r\n 2005          218           26.31087      30.85         12.73         0 \r\n 2005          219           25.13739      33.41         13.13         0 \r\n 2005          220           23.45893      34.56         16.04         0 \r\n 2005          221           23.18668      37.38         17.93         2.286 \r\n 2005          222           22.42193      33.61         20.55         0.254 \r\n 2005          223           15.428        30.05         20.75         14.224 \r\n 2005          224           8.639584      27.76         20.41         41.402 \r\n 2005          225           6.053704      23.12         17.72         1.524 \r\n 2005          226           16.91876      26.82         15.02         0 \r\n 2005          227           21.9024       28.96         13.6          0 \r\n 2005          228           23.31074      30.72         14.88         0 \r\n 2005          229           22.28637      30.92         14.88         0 \r\n 2005          230           20.85812      34.29         21.23         1.27 \r\n 2005          231           21.52212      33.75         19            0 \r\n 2005          232           20.84356      30.45         18.87         9.652 \r\n 2005          233           20.36913      30.11         16.5          0 \r\n 2005          234           23.58253      26.34         14.41         0 \r\n 2005          235           20.55168      25.46         11.1          0 \r\n 2005          236           18.66415      28.35         11.51         0 \r\n 2005          237           6.16207       25.67         18.86         5.334 \r\n 2005          238           13.60189      29.1          19.47         2.032 \r\n 2005          239           22.84309      30.44         16.64         0 \r\n 2005          240           19.66995      31.39         15.7          0 \r\n 2005          241           22.06562      31.86         14.96         0 \r\n 2005          242           19.57911      30.72         14.61         0 \r\n 2005          243           20.84611      30.32         13            0 \r\n 2005          244           21.75822      30.33         14.48         0 \r\n 2005          245           16.98729      29.84         13.74         0 \r\n 2005          246           20.86004      32.26         11.04         0 \r\n 2005          247           7.473586      28.04         13.74         6.096 \r\n 2005          248           18.46387      32.8          15.7          0 \r\n 2005          249           17.18666      32.53         16.04         0 \r\n 2005          250           13.03906      31.67         17.52         0 \r\n 2005          251           11.80198      29.98         15.76         15.494 \r\n 2005          252           17.51146      33.14         17.72         0 \r\n 2005          253           17.88522      33.95         17.52         0 \r\n 2005          254           17.88451      33.61         17.18         0 \r\n 2005          255           15.33804      32.94         16.58         0 \r\n 2005          256           9.494584      31.81         19.13         2.286 \r\n 2005          257           19.10962      26.54         10.3          0 \r\n 2005          258           4.034841      18.47         9.28          5.08 \r\n 2005          259           19.26698      26.68         11.43         0 \r\n 2005          260           18.83223      27.61         9.07          0 \r\n 2005          261           17.72903      31.05         13.2          0 \r\n 2005          262           10.02955      29.12         16.43         3.048 \r\n 2005          263           18.59319      31.93         12.32         0 \r\n 2005          264           17.68163      32.67         10.83         0 \r\n 2005          265           11.0381       30.72         18.67         0 \r\n 2005          266           8.081647      21.9          16.17         0 \r\n 2005          267           7.385639      27.29         16.98         0 \r\n 2005          268           10.53138      29.77         17.45         0.762 \r\n 2005          269           6.957239      23.65         9.96          4.318 \r\n 2005          270           17.05658      26.47         6.235         0 \r\n 2005          271           2.837631      19.15         6.982778      14.478 \r\n 2005          272           17.67012      19.53         2.717778      0 \r\n 2005          273           16.77458      23.71         4.753889      0 \r\n 2005          274           14.76416      30.66         8.87          0 \r\n 2005          275           7.954746      27.84         14.07         0 \r\n 2005          276           11.08994      31.47         19.95         2.794 \r\n 2005          277           14.53271      31.66         20.83         0 \r\n 2005          278           12.81542      30.93         9.41          8.128 \r\n 2005          279           13.01274      11.16         2.917778      0.762 \r\n 2005          280           5.721871      11.12         2.177778      0 \r\n 2005          281           15.60226      16.29         0.8911111     0 \r\n 2005          282           9.907838      16.36         1.431111      0 \r\n 2005          283           14.47911      21.21         4.142222      0 \r\n 2005          284           5.314768      18.46         4.747222      0 \r\n 2005          285           9.684203      22.43         11.43         0 \r\n 2005          286           7.192003      19.47         7.32          0.508 \r\n 2005          287           14.4538       27.9          3.527222      0.254 \r\n 2005          288           14.90048      23.1          5.155         0 \r\n 2005          289           13.0068       22.44         1.231111      0 \r\n 2005          290           12.50468      27.08         8.73          1.016 \r\n 2005          291           13.86732      26.47         4.55          0 \r\n 2005          292           11.23935      18.81         10.42         0 \r\n 2005          293           1.32591       11.3          8.6           12.192 \r\n 2005          294           11.49951      17.04         4.203889      0.508 \r\n 2005          295           13.16328      13.05         2.247222      0 \r\n 2005          296           4.96532       7.93          0.6188889     0.762 \r\n 2005          297           4.905071      8.87          1.496111      0 \r\n 2005          298           12.99207      14.13         1.162778      0 \r\n 2005          299           10.77694      15.82        -0.5977778     0 \r\n 2005          300           12.57911      15.2         -1.885         0 \r\n 2005          301           11.87892      16.97        -2.633889      0 \r\n 2005          302           11.84101      20.07        -1.408889      0 \r\n 2005          303           3.02043       14.62         8.33          0 \r\n 2005          304           4.163331      13.8          3.667222      0 \r\n 2005          305           11.77177      17.17        -1.137222      0 \r\n 2005          306           11.83248      22.71        -0.5377778     0 \r\n 2005          307           10.58724      23.18         10.23         0 \r\n 2005          308           9.153881      18.73         3.802222      0 \r\n 2005          309           1.973635      14.75         5.978889      7.874 \r\n 2005          310           7.168573      12.92         5.082778      1.27 \r\n 2005          311           9.133421      20.07         4.482222      0 \r\n 2005          312           7.483042      21.82         6.642778      0 \r\n 2005          313           8.792132      19.49         0.8911111     0 \r\n 2005          314           11.08739      12.64        -3.242222      0 \r\n 2005          315           9.641358      19.27        -1.408889      0 \r\n 2005          316           4.839047      19.62         6.852222      0 \r\n 2005          317           5.873876      15.76         1.095         0 \r\n 2005          318           1.504525      6.982778     -1.482778      0 \r\n 2005          319           3.182329      6.575         0.3461111     12.065 \r\n 2005          320           4.860135      0.4822222    -9.14          0 \r\n 2005          321           10.50987     -0.5438889    -12.74         0 \r\n 2005          322           8.900665      10.15        -5.072222      0 \r\n 2005          323           8.553811      11.57         1.3           0 \r\n 2005          324           3.571337      7.51          3.662222      0 \r\n 2005          325           8.912087      12.51        -0.055         0 \r\n 2005          326           8.584647      6.558889     -3.177222      0 \r\n 2005          327           7.785755      13.53         2.237778      0 \r\n 2005          328           9.966079      2.306111     -10.23         0 \r\n 2005          329           2.244549     -2.497778     -8.12          0 \r\n 2005          330           8.736694      14.2         -7.85          0 \r\n 2005          331           1.248087      14.22         5.487222      7.62 \r\n 2005          332           1.846608      14.49         0.065         0 \r\n 2005          333           2.522785      0.2788889    -5.957778      0 \r\n 2005          334           7.626762     -1.155        -9.41          5.2578 \r\n 2005          335           8.65632      -3.587222     -13.76         5.59 \r\n 2005          336           5.905298     -5.063889     -15.33         0 \r\n 2005          337           4.326172     -2.973889     -8.13          2.54 \r\n 2005          338           9.059615     -6.43         -16.47         0.76 \r\n 2005          339           8.545235     -9.83         -19.88         0 \r\n 2005          340           7.005188     -11.04        -20.22         0.25 \r\n 2005          341           8.055246     -9.48         -24.37         0 \r\n 2005          342           4.49165      -6.977778     -14.71         0.76 \r\n 2005          343           8.999324     -6.642778     -21.24         5.08 \r\n 2005          344           3.812335      2.381111     -9.01          0 \r\n 2005          345           6.882429      2.652222     -4.267222      1.02 \r\n 2005          346           3.817691     -1.545        -7.11          1.02 \r\n 2005          347           7.21468       4.737778     -11.19         0 \r\n 2005          348           1.139512      2.32         -1.421111      4.57 \r\n 2005          349           4.657168      1.837778     -5.141111      2.54 \r\n 2005          350           5.395728     -4.257778     -7.11          0.76 \r\n 2005          351           8.150349     -7.04         -13.76         0 \r\n 2005          352           8.361054     -10.31        -16.61         0 \r\n 2005          353           8.58356      -10.78        -19.27         0 \r\n 2005          354           8.017841     -3.117222     -16.21         0 \r\n 2005          355           8.13855       3.888889E-03               -18.52         0 \r\n 2005          356           7.960395      7.25         -16.48         0 \r\n 2005          357           6.246001      7.51          0.7477778     0 \r\n 2005          358           2.598933      2.986111      0.6122222     0.76 \r\n 2005          359           1.803764      2.033889      0.75          2.54 \r\n 2005          360           2.000622      0.9588889    -0.265         0 \r\n 2005          361           6.819836      10.51        -3.11          0 \r\n 2005          362           4.120215      1.226111      0.2788889     0 \r\n 2005          363           1.420594      2.442222      0.2788889     0 \r\n 2005          364           1.950518      3.802222      0.8161111     0 \r\n 2005          365           2.480443      2.033889     -2.702222      0 \r\n 2006          1             3.376906      7.92         -2.021111      0 \r\n 2006          2             2.533809      7.79          3.391111      4.32 \r\n 2006          3             1.690713      4.542778      2.51          1.78 \r\n 2006          4             1.758995      4.545         1.557778      0.25 \r\n 2006          5             2.35555       1.762778     -0.81          0 \r\n 2006          6             2.952105      0.8227777    -2.633889      0 \r\n 2006          7             7.664921      10.09        -1.612778      0 \r\n 2006          8             8.177587      8.73         -1.41          0 \r\n 2006          9             1.739414      2.782222     -6.491111      0 \r\n 2006          10            2.733742      1.64         -9             0 \r\n 2006          11            6.103243      7.38          0.075         6.6 \r\n 2006          12            9.015223      13.8          1.095         0 \r\n 2006          13            3.011183      2.442222     -2.362222      0 \r\n 2006          14            9.544624      5.54         -6.156111      0 \r\n 2006          15            8.879536      12.12        -2.157222      0 \r\n 2006          16            8.623433      11.56        -2.633889      0 \r\n 2006          17            7.621658      0.2738889    -4.81          0 \r\n 2006          18            7.999808      5.555        -6.297778      0 \r\n 2006          19            7.01502       14.35        -5.678889      0 \r\n 2006          20            1.148759      0.4822222    -3.517778      0 \r\n 2006          21            5.003729     -1.147222     -5.426111      11.94 \r\n 2006          22            5.09971       2.306111     -3.042222      0 \r\n 2006          23            7.067906     -5.611111E-02               -6.093889      0 \r\n 2006          24            7.547727      4.887222     -2.702222      0 \r\n 2006          25            10.96057      3.182778     -5.481111      0 \r\n 2006          26            10.7197       10.62        -7.72          0 \r\n 2006          27            7.584086      13.19         1.975         0 \r\n 2006          28            4.589764      9.41          5.078889      0 \r\n 2006          29            1.595443      9.89          2.577778      53.85 \r\n 2006          30            3.752504      4.482222     -0.3327778     1.02 \r\n 2006          31            10.64079      8.85         -1.952778      0 \r\n 2006          32            5.748105      8.34         -1.007222      0 \r\n 2006          33            8.611091      11.1         -1.007222      0 \r\n 2006          34            2.850852      5.76         -5.208889      2.54 \r\n 2006          35            4.452948     -3.857778     -8.67          0 \r\n 2006          36            11.0284       0.88         -10.29         0 \r\n 2006          37            12.2164       3.321111     -9.95          0 \r\n 2006          38            7.374551      2.982778     -6.637222      0 \r\n 2006          39            11.99963      0.945        -8.8           0 \r\n 2006          40            7.878514     -0.1288889    -12.87         0 \r\n 2006          41            5.571331      4.277778     -5.285         0 \r\n 2006          42            10.29695      2.777778     -9.21          0 \r\n 2006          43            6.226713     -1.825        -8.94          0 \r\n 2006          44            13.1827       10.43        -11.32         0 \r\n 2006          45            13.6795       17.38        -7.85          0 \r\n 2006          46            4.576417      4.271111     -2.027222      0 \r\n 2006          47            1.683683      0.1427778    -8.06          1.27 \r\n 2006          48            12.10645     -7.86         -19.27         10.16 \r\n 2006          49            14.91337     -13.16        -22.53         0 \r\n 2006          50            8.995934     -7.38         -18.58         0 \r\n 2006          51            14.39049      0.8838889    -10.97         0 \r\n 2006          52            14.37857      5.811111     -8.87          0 \r\n 2006          53            14.91663      8.32         -5.883889      0 \r\n 2006          54            13.82565      5.078889     -3.847222      0 \r\n 2006          55            14.17543      12.39        -5.277222      0 \r\n 2006          56            15.48511      4.548889     -7.85          0 \r\n 2006          57            14.41886      4.058889     -12.26         0 \r\n 2006          58            13.32311      12.51        -3.655         0 \r\n 2006          59            9.622949      8.6          -3.985         0 \r\n 2006          60            9.99545       12           -1.5           0 \r\n 2006          61            6.436373      11            0             0 \r\n 2006          62            16.55584      6            -4.5           0 \r\n 2006          63            12.25682      7            -6             0 \r\n 2006          64            2.166057      5            -2.5           15.24 \r\n 2006          65            12.60079      4.5          -0.5           3.05 \r\n 2006          66            7.916296      5.5          -1             0 \r\n 2006          67            2.948298      9             1.5           10.67 \r\n 2006          68            2.4822        12            3.5           7.11 \r\n 2006          69            15.60222      10           -0.5           0.25 \r\n 2006          70            14.46961      18.5          4             0 \r\n 2006          71            3.389333      18.5          1             0 \r\n 2006          72            4.425668      13            0.5           22.35 \r\n 2006          73            18.93231      9.5          -4.5           0 \r\n 2006          74            17.74844      8            -5.5           0 \r\n 2006          75            11.80863      8.5          -2.5           0.76 \r\n 2006          76            19.23602      9            -0.5           0 \r\n 2006          77            19.42702      7.5          -3.5           0 \r\n 2006          78            15.4172       8            -3.5           0 \r\n 2006          79            7.564254      7.5          -2.5           0 \r\n 2006          80            12.18674      4            -2.5           4.06 \r\n 2006          81            21.03242      5.5          -7             0.76 \r\n 2006          82            8.133194      6.5          -5             0 \r\n 2006          83            8.29478       6            -2.5           0 \r\n 2006          84            10.97112      7             0             0 \r\n 2006          85            21.25217      10.5         -3.5           0 \r\n 2006          86            1.746151      9.5           1             0 \r\n 2006          87            7.345388      7             2.5           13.97 \r\n 2006          88            15.26465      10.5          4.5           0 \r\n 2006          89            9.832525      16            5.5           0 \r\n 2006          90            5.360373      18            7.5           19.05 \r\n 2006          91            8.990496      13            6.5           0 \r\n 2006          92            5.345729      14            5.5           19.3294 \r\n 2006          93            21.09878      15            5.5           0 \r\n 2006          94            22.92389      15            1.5           0 \r\n 2006          95            18.30584      17.5          1             0 \r\n 2006          96            6.324492      18.5          7             9.0424 \r\n 2006          97            11.41558      18            6.5           0 \r\n 2006          98            23.21062      17.5          1             0 \r\n 2006          99            21.28108      15           -0.5           0 \r\n 2006          100           22.60707      19            3             0 \r\n 2006          101           12.00754      24            8.5           0 \r\n 2006          102           23.40881      24            12            0 \r\n 2006          103           21.21225      27            11.5          3.2004 \r\n 2006          104           20.54817      29.5          14            0 \r\n 2006          105           17.08264      28            10.5          4.5466 \r\n 2006          106           7.84705       25            12            14.9098 \r\n 2006          107           19.29807      21.5          10.5          0 \r\n 2006          108           21.00167      21.5          7             0 \r\n 2006          109           25.04157      22            9             0 \r\n 2006          110           22.36754      22.5          8             0 \r\n 2006          111           20.55264      21.5          7             0 \r\n 2006          112           23.1902       21            8             0 \r\n 2006          113           25.77193      22            6             0 \r\n 2006          114           18.94683      23            8             0 \r\n 2006          115           9.316261      21.5          6             3.4544 \r\n 2006          116           25.9621       14            0.5           0 \r\n 2006          117           23.62353      20            3             0 \r\n 2006          118           9.579728      22            6.5           0 \r\n 2006          119           2.800602      19.5          10.5          16.9672 \r\n 2006          120           9.674329      17            13            9.4234 \r\n 2006          121           13.52403      15.34944      8.613889      0 \r\n 2006          122           22.56866      23.09         5.56          0 \r\n 2006          123           12.95065      19.92167      2.559444      7.7216 \r\n 2006          124           22.73565      17.52833      7.025556      0 \r\n 2006          125           19.22347      13.75611      2.408333      0 \r\n 2006          126           25.85197      17.50167     -0.9661111     0 \r\n 2006          127           27.0127       21.27611      1.574444      0 \r\n 2006          128           14.68446      22.45889      10.24389      0 \r\n 2006          129           9.618681      21.295        10.67833      7.2644 \r\n 2006          130           16.85027      18.78611      8.558888      0 \r\n 2006          131           13.93774      13.04056     -3.771667      0 \r\n 2006          132           9.566925      10.93389      3.992778      5.9944 \r\n 2006          133           6.485827      9.482778      4.344444      0 \r\n 2006          134           5.632041      12.87222      4.915         0 \r\n 2006          135           15.6636       18.44611      10.08056      0 \r\n 2006          136           16.28681      21.56         9.813889      0 \r\n 2006          137           23.73642      25.14889      9.524445      0 \r\n 2006          138           27.3988       20.82444      7.985556      0 \r\n 2006          139           26.46953      25.64167      7.808333      0 \r\n 2006          140           22.75653      23.30056      6.491667      0 \r\n 2006          141           23.74876      19.93778      11.15722      0 \r\n 2006          142           26.48828      23.14611      9.430555      0 \r\n 2006          143           26.88609      27.495        8.954445      0 \r\n 2006          144           23.07572      30.295        16.23056      2.9464 \r\n 2006          145           13.73846      25.54889      17.33111      2.6416 \r\n 2006          146           23.76629      27.89556      15.86         0 \r\n 2006          147           17.00746      31.23889      16.97167      0 \r\n 2006          148           26.06046      33.56833      20.24278      0 \r\n 2006          149           23.69006      32.70278      22.02944      0 \r\n 2006          150           13.10157      25.85833      16.43889      6.4008 \r\n 2006          151           17.79083      28.01722      15.64444      0 \r\n 2006          152           25.72453      28.70611      13.19389      0 \r\n 2006          153           28.25422      29.73444      12.19611      0 \r\n 2006          154           28.88621      29.45278      13.30333      0 \r\n 2006          155           27.34918      27.78833      13.96833      0 \r\n 2006          156           26.94312      28.55         12.01944      0 \r\n 2006          157           16.11886      27.45         16.595        18.796 \r\n 2006          158           27.4616       30.36555      16.69833      0 \r\n 2006          159           24.18055      31.80333      15.66389      0 \r\n 2006          160           15.19441      24.76556      15.88111      0 \r\n 2006          161           7.397019      16.54944      9.386666      9.2202 \r\n 2006          162           8.627785      15.89778      10.13444      0 \r\n 2006          163           28.07677      23.47667      8.568334      0 \r\n 2006          164           28.32991      27.76667      9.937778      0 \r\n 2006          165           13.7908       24.64389      14.83556      0 \r\n 2006          166           13.18843      26.92945      16.55167      0 \r\n 2006          167           25.2291       31.57167      19.86         0 \r\n 2006          168           21.59291      32.28         20.05         0 \r\n 2006          169           17.53238      29.71         20.49         3.302 \r\n 2006          170           28.78249      30.87         16.51         0 \r\n 2006          171           9.709265      27.65         13.88         1.524 \r\n 2006          172           12.98015      30.8          20.02         3.048 \r\n 2006          173           14.34062      26.01         18.53         17.018 \r\n 2006          174           27.10843      28.77         16.31         0 \r\n 2006          175           21.44932      29.03         14.69         4.572 \r\n 2006          176           21.24234      25.6          16.3          1.27 \r\n 2006          177           14.83408      24.33         15.29         0 \r\n 2006          178           26.23732      27.63         12.45         0 \r\n 2006          179           26.09347      27.49         14.35         0 \r\n 2006          180           26.42284      29.98         13.34         0 \r\n 2006          181           18.53612      29.26         17.39         0.508 \r\n 2006          182           15.33436      33.49         18.8          1.016 \r\n 2006          183           13.34315      31.15         22.04         0 \r\n 2006          184           14.2484       31.27         21.5          17.272 \r\n 2006          185           27.4944       29.11         17.06         0 \r\n 2006          186           26.85843      28.37         14.56         0 \r\n 2006          187           22.71736      29.87         12.66         0 \r\n 2006          188           23.79905      29.45         13.27         0 \r\n 2006          189           24.16277      30.38         13.41         0 \r\n 2006          190           26.84174      33.95         20.82         0 \r\n 2006          191           18.1145       32.39         21.9          1.778 \r\n 2006          192           8.643475      28.44         22.24         12.192 \r\n 2006          193           15.4967       28.97         21.56         0.508 \r\n 2006          194           18.46935      33.01         20.95         0.762 \r\n 2006          195           24.17051      32.4          20.55         0 \r\n 2006          196           25.79373      35.15         20.36         0 \r\n 2006          197           26.96559      36.16         21.91         0 \r\n 2006          198           24.26615      38.32         23.61         10.668 \r\n 2006          199           27.12546      32.74         21.57         0 \r\n 2006          200           14.48233      31.95         18.2          0.762 \r\n 2006          201           19.14828      31.2          22.11         0 \r\n 2006          202           5.437903      23.19         16.38         15.494 \r\n 2006          203           22.8023       28.84         15.16         0 \r\n 2006          204           26.24615      31.25         15.7          1.524 \r\n 2006          205           22.10809      32.95         19.75         0 \r\n 2006          206           19.51752      34.02         18.6          11.176 \r\n 2006          207           16.22241      31.4          21.43         15.748 \r\n 2006          208           15.32905      30.93         22.38         1.524 \r\n 2006          209           25.96954      32.73         21.5          0.508 \r\n 2006          210           24.44602      36.04         21.5          0 \r\n 2006          211           24.60506      37.38         23.8          0 \r\n 2006          212           25.40144      37.66         24            0 \r\n 2006          213           22.16679      36.3          24.08         0 \r\n 2006          214           17.87991      36.58         25.68         0 \r\n 2006          215           22.08064      29.91         20.02         28.448 \r\n 2006          216           25.93695      32.53         17.4          0 \r\n 2006          217           15.6436       31.06         16.72         0 \r\n 2006          218           20.58432      33            20.09         3.048 \r\n 2006          219           12.77204      30.4          21.36         9.144 \r\n 2006          220           8.619961      25.07         19.34         0 \r\n 2006          221           12.02067      29.84         18.39         23.368 \r\n 2006          222           10.7628       29.99         21.36         4.318 \r\n 2006          223           14.81914      27.83         19.41         0.508 \r\n 2006          224           24.16762      30.18         16.99         0 \r\n 2006          225           20.01161      31.86         16.85         2.794 \r\n 2006          226           18.47901      27.56         17.33         0.254 \r\n 2006          227           24.12394      29.99         15.44         0 \r\n 2006          228           23.20363      30.11         14.69         0 \r\n 2006          229           9.21911       28.98         18.61         3.81 \r\n 2006          230           5.589992      25.07         20.69         24.384 \r\n 2006          231           7.335933      26.69         19.75         5.588 \r\n 2006          232           22.36796      27.96         15.97         0 \r\n 2006          233           20.95172      29.53         15.29         0 \r\n 2006          234           22.34725      30.72         15.63         0 \r\n 2006          235           22.51423      31.4          19.01         0 \r\n 2006          236           21.95617      33.35         18.94         0 \r\n 2006          237           18.63545      32.67         20.03         1.016 \r\n 2006          238           10.10817      28.84         21.16         6.858 \r\n 2006          239           4.995194      26.02         19.48         0.762 \r\n 2006          240           2.314631      21.57         15.9          30.988 \r\n 2006          241           10.25503      23.13         15.9          0 \r\n 2006          242           18.45236      27.08         13.61         0 \r\n 2006          243           21.71919      26.95         12.59         0 \r\n 2006          244           15.17796      25.4          13.2          0 \r\n 2006          245           21.94663      27.69         13.88         0 \r\n 2006          246           5.163893      20.3          12.66         4.318 \r\n 2006          247           13.74862      23.72         11.38         4.826 \r\n 2006          248           18.72231      26.68         11.78         0 \r\n 2006          249           20.38093      29.44         12.59         0 \r\n 2006          250           19.97634      29.51         12.13         0 \r\n 2006          251           19.99835      31.06         12.59         0 \r\n 2006          252           6.166003      24.01         14.21         4.318 \r\n 2006          253           4.569932      21.63         15.49         1.524 \r\n 2006          254           6.772223      24.39         15.63         9.398 \r\n 2006          255           3.270716      17.25         13.67         10.16 \r\n 2006          256           15.69695      23.44         11.92         0 \r\n 2006          257           19.89429      27.02         9.62          0.508 \r\n 2006          258           20.00362      28.37         9.62          0 \r\n 2006          259           16.08551      31.4          14.82         0 \r\n 2006          260           5.782372      27.25         11.64         3.302 \r\n 2006          261           16.77713      20.48         8.95          0 \r\n 2006          262           7.398651      13.81         5.893889      0 \r\n 2006          263           19.57895      19.6          2.66          0 \r\n 2006          264           10.16951      22.71         8.14          2.032 \r\n 2006          265           8.818031      27.9          12.32         0 \r\n 2006          266           5.898185      23.13         11.1          0.254 \r\n 2006          267           16.44634      21.43         10.64         0 \r\n 2006          268           18.3032       25.74         7.8           0 \r\n 2006          269           17.55933      26.88         6.987778      0 \r\n 2006          270           11.91658      19.81         7.39          0 \r\n 2006          271           14.74304      17.65         5.631111      0 \r\n 2006          272           10.18101      20.89         7.05          0 \r\n 2006          273           13.94611      25.07         8.61          0 \r\n 2006          274           16.5922       32.81         5.7           0 \r\n 2006          275           10.67853      32.69         18.61         0 \r\n 2006          276           15.60862      35.84         14.89         0 \r\n 2006          277           4.864486      27.37         13.74         0 \r\n 2006          278           16.31237      20.14         5.297778      0 \r\n 2006          279           16.53575      22.24         1.367778      0 \r\n 2006          280           16.39668      25.74         2.722222      0 \r\n 2006          281           14.06272      27.42         4.413889      0 \r\n 2006          282           12.1795       21.97         9.96          0 \r\n 2006          283           5.242259      14.68         10.09         6.096 \r\n 2006          284           5.696139      10.77         0.755         2.032 \r\n 2006          285           12.43246      6.915        -0.1838889     0 \r\n 2006          286           16.00422      12.79        -0.5922222     0 \r\n 2006          287           15.83519      12.73        -0.46          0 \r\n 2006          288           3.865096      12.46         0.9588889     0.762 \r\n 2006          289           1.78343       14.56         9.55          14.224 \r\n 2006          290           4.984315      16.99         9.89          10.414 \r\n 2006          291           1.766359      12.59         4.821111      9.652 \r\n 2006          292           7.664879      9.07          0.2872222     0 \r\n 2006          293           8.65519       14.95        -1.952222      0 \r\n 2006          294           2.950097      12.8          3.122222      9.144 \r\n 2006          295           10.07963      6.103889      0.08          0 \r\n 2006          296           6.665781      5.435        -3.031111      0 \r\n 2006          297           13.39365      10.76        -4.116111      0 \r\n 2006          298           8.682469      13.73        -1.408889      0 \r\n 2006          299           1.292647      7.93          5.758889      12.954 \r\n 2006          300           2.085013      8.47          2.115         0.254 \r\n 2006          301           8.828658      11.85         2.523889      0 \r\n 2006          302           12.68672      18.73        -1.001111      0 \r\n 2006          303           8.099345      22.52         1.707778      0 \r\n 2006          304           11.75327      6.498889     -2.893889      0 \r\n 2006          305           11.11651      8.19         -5.265         0 \r\n 2006          306           11.9626       4.401111     -6.757778      0 \r\n 2006          307           11.53671      11.3         -9.14          0 \r\n 2006          308           5.227908      12.66         1.503889      0.762 \r\n 2006          309           7.611156      14.07        -1.885         0 \r\n 2006          310           8.812968      18.12         9.21          0 \r\n 2006          311           8.460968      17.38         3.996111      0 \r\n 2006          312           10.95811      23.85         4.413889      0 \r\n 2006          313           11.05463      22.03         5.758889      0 \r\n 2006          314           10.3767       10.58         1.77          0 \r\n 2006          315           9.698763      5.282778     -3.915         0 \r\n 2006          316           9.859345      10.08        -6.217778      0 \r\n 2006          317           3.098712      8.14          0.755         0 \r\n 2006          318           2.797046      6.507222     -0.4572222     0 \r\n 2006          319           2.529019      8.54          2.51          0 \r\n 2006          320           5.227281      4.958889     -0.8011111     0 \r\n 2006          321           8.763764      11.98        -2.09          0 \r\n 2006          322           2.011039      5.297778     -1.885         0 \r\n 2006          323           10.36385      7.1          -3.233889      0 \r\n 2006          324           10.00972      12.32        -6.013889      0 \r\n 2006          325           9.28438       14.41        -0.7961111     0 \r\n 2006          326           9.641484      17.85        -2.962222      0 \r\n 2006          327           8.309048      18.87        -2.021111      0 \r\n 2006          328           7.698769      17.44         4.006111      0 \r\n 2006          329           5.645806      15.76         4.006111      0 \r\n 2006          330           5.346483      17.92         4.886111      0 \r\n 2006          331           2.680563      17.66         12.59         0 \r\n 2006          332           5.123684      19.75         12.18         0 \r\n 2006          333           3.658176      16.04        -0.8711111     0 \r\n 2006          334           2.192667     -0.8027778    -7.51          0 \r\n 2006          335           8.273609     -0.9461111    -6.967778      0 \r\n 2006          336           9.158274      0.9627778    -9.48          0 \r\n 2006          337           8.906899     -5.617222     -12.67         0 \r\n 2006          338           7.865585      5.018889     -13.08         0 \r\n 2006          339           4.035886      2.062222     -12.94         0 \r\n 2006          340           5.380624      3.952778     -5.822222      0 \r\n 2006          341           8.985182     -5.89         -14.51         0 \r\n 2006          342           7.794206     -1.691111     -16.34         0 \r\n 2006          343           8.507327      5.962778     -6.491111      0 \r\n 2006          344           5.037034      8.81          7.388889E-02                0 \r\n 2006          345           1.356411      8.023889     -1.111111      0 \r\n 2006          346           3.077248      13.2          1.361111      0.25 \r\n 2006          347           8.123236      10.22        -3.711111      0 \r\n 2006          348           6.38014       16.04        -2.021111      0 \r\n 2006          349           7.185476      8.67         -0.33          0 \r\n 2006          350           2.507262      15.17         2.116111      0 \r\n 2006          351           2.871981      9.28          2.033889      0 \r\n 2006          352           7.905961      5.483889     -4.997222      0 \r\n 2006          353           7.977089      8.33         -9             0 \r\n 2006          354           1.005499      4.073889     -6.491111      0 \r\n 2006          355           1.05169       9.55          4.006111      36.07 \r\n 2006          356           2.097941      6.311111      3.326111      1.78 \r\n 2006          357           7.2315        6.167222     -1.952778      6.1 \r\n 2006          358           4.060153      6.575        -4.865         0 \r\n 2006          359           3.477866      2.312778     -0.5361111     0 \r\n 2006          360           8.295784      3.795        -5.277222      0 \r\n 2006          361           3.182434      6.507222     -2.293889      0 \r\n 2006          362           6.670426      12.58        -0.395         0 \r\n 2006          363           4.972266      12.79         2.517778      0 \r\n 2006          364           1.751966      12.52         2.722778      0 \r\n 2006          365           2.881897      12.32         0.8227777     10.67 \r\n 2007          1             8.565987      5.351111     -3.915         1.78 \r\n 2007          2             6.490514      5.631111     -7.24          0 \r\n 2007          3             8.545235      11.1         -0.4561111     0 \r\n 2007          4             5.066531      11.17         3.192778      0 \r\n 2007          5             6.844271      12.11         1.148889      0 \r\n 2007          6             8.809747      7.44         -3.437778      0 \r\n 2007          7             5.917055      8.26         -6.967222      0 \r\n 2007          8             6.514864      5.77         -4.596111      0 \r\n 2007          9             9.096393      3.122222     -6.558889      0 \r\n 2007          10            7.553291      6.435        -10.02         0 \r\n 2007          11            2.650146      10.98         3.327778      0 \r\n 2007          12            1.638789      8.73         -6.093889      0.25 \r\n 2007          13            1.169679     -1.545        -5.685         0 \r\n 2007          14            1.380678      0.1488889    -2.77          0.25 \r\n 2007          15            3.456904     -2.566111     -13.29         11.43 \r\n 2007          16            7.767596     -9.29         -17.63         1.27 \r\n 2007          17            6.566662     -4.391111     -19.19         0 \r\n 2007          18            2.188148      0.8911111    -4.871111      0.25 \r\n 2007          19            9.913527     -1.15         -9.89          0 \r\n 2007          20            8.5449       -2.033889     -14.44         0 \r\n 2007          21            1.181436      0.2727778    -4.676111      5.59 \r\n 2007          22            2.025265     -1.62         -4.12          2.03 \r\n 2007          23            6.677162     -2.032222     -8.26          0 \r\n 2007          24            4.01961      -0.9322222    -12.68         0 \r\n 2007          25            8.658579      4.866111     -16.14         0 \r\n 2007          26            10.52565      8.87         -12.74         0 \r\n 2007          27            9.592908      0.755        -13.69         0 \r\n 2007          28            10.59188     -9.42         -17.43         0 \r\n 2007          29            9.041247     -0.9461111    -12.53         0 \r\n 2007          30            11.1763      -10.65        -16.14         0 \r\n 2007          31            6.625406     -5.678889     -18.18         0 \r\n 2007          32            11.53094     -5.407222     -14.98         0.51 \r\n 2007          33            12.21213     -10.24        -18.79         0 \r\n 2007          34            11.44483     -10.15        -21.1          0 \r\n 2007          35            12.2541      -13.97        -21.64         0 \r\n 2007          36            11.50922     -11.8         -23.07         0 \r\n 2007          37            4.820512     -11.86        -17.9          0.25 \r\n 2007          38            10.09934     -10.24        -18.86         5.33 \r\n 2007          39            13.05002     -10.99        -20.15         0 \r\n 2007          40            12.30669     -9.09         -16.82         0 \r\n 2007          41            13.39951     -10.65        -19.88         0 \r\n 2007          42            8.175494      4.942778     -11.04         0 \r\n 2007          43            4.350105      0.2111111    -2.973889      0 \r\n 2007          44            5.938477     -2.906111     -10.16         4.06 \r\n 2007          45            14.09857     -7.32         -17.7          2.79 \r\n 2007          46            14.30685     -11.19        -21.37         0 \r\n 2007          47            12.10858     -5.41         -22.94         0 \r\n 2007          48            8.243443     -5            -22.94         3.56 \r\n 2007          49            14.14234      1.207778     -11.31         0 \r\n 2007          50            12.37414      8.86         -5.673889      0 \r\n 2007          51            12.31761      8.52         -2.362222      0 \r\n 2007          52            14.28907      13.12        -3.982778      0 \r\n 2007          53            15.10173      5.822222     -1.612778      0 \r\n 2007          54            5.090087      4.002778     -1.341111      0 \r\n 2007          55            3.554183      1.64         -1.755         0 \r\n 2007          56            2.018278      3.063889     -0.7388889     25.65 \r\n 2007          57            11.59365      0.1377778    -3.655         0.25 \r\n 2007          58            5.000675      1.231111     -2.226111      0 \r\n 2007          59            2.88378       2.791111     -1.748889      0 \r\n 2007          60            3.708154      9.29         -2.022222      24.13 \r\n 2007          61            8.38913      -0.81         -4.596111      1.27 \r\n 2007          62            10.62694     -3.042222     -9.82          0 \r\n 2007          63            16.95118      3.462222     -12.12         0 \r\n 2007          64            13.85143      4.268889     -4.187778      0 \r\n 2007          65            10.11336      2.033889     -6.422778      0 \r\n 2007          66            8.358252      0.3411111    -5.003889      0 \r\n 2007          67            16.72131      9.53         -6.217778      0 \r\n 2007          68            2.72006       6.173889     -2.565         0 \r\n 2007          69            17.45925      14.27        -1.408889      9.4 \r\n 2007          70            15.27792      14.81        -3.778889      0 \r\n 2007          71            16.52659      21.84         2.382222      0 \r\n 2007          72            16.73077      25.81         9.16          0 \r\n 2007          73            10.56042      18.46         2.713889      0 \r\n 2007          74            12.46079      9.81         -1.748889      2.54 \r\n 2007          75            9.134467      5.02         -3.711111      0 \r\n 2007          76            14.54764      7.17         -4.522778      0 \r\n 2007          77            17.38506      11.16        -5.333889      0 \r\n 2007          78            18.7849       17.44         2.313889      0.51 \r\n 2007          79            18.14714      14.34        -3.302778      0 \r\n 2007          80            6.784063      21.51         7.39          17.78 \r\n 2007          81            17.95894      20.09         8.19          6.86 \r\n 2007          82            7.099872      22.11         8.4           19.56 \r\n 2007          83            6.741428      22.72         13.93         1.78 \r\n 2007          84            14.20033      27.15         12.18         13.97 \r\n 2007          85            17.03106      26.21         16.51         0 \r\n 2007          86            13.8131       26.07         12.99         0 \r\n 2007          87            3.58732       15.9          10.84         0 \r\n 2007          88            6.576411      16.43         7.72          2.29 \r\n 2007          89            6.866571      19.41         12.25         12.19 \r\n 2007          90            8.390008      24.4          10.37         11.43 \r\n 2007          91            5.269916      12.79         5.767222      0 \r\n 2007          92            16.19601      17.65         3.127778      0 \r\n 2007          93            4.326047      18.75        -0.8777778     5.842 \r\n 2007          94            12.62622      2.105        -4.936111      0 \r\n 2007          95            22.85405      6.098889     -3.79          0 \r\n 2007          96            18.8985       1.966111     -5.207778      0 \r\n 2007          97            21.61848      4.34         -7.31          0 \r\n 2007          98            10.18147      4.947222     -1.885         0 \r\n 2007          99            17.83397      10.48        -1.681111      0 \r\n 2007          100           7.146398      11.44        -2.826111      0 \r\n 2007          101           1.260304      4.208889      7.222222E-03                0 \r\n 2007          102           12.35196      6.507222     -0.3327778     0 \r\n 2007          103           18.93825      11.37        -1.673889      0 \r\n 2007          104           12.49033      10.89        -0.05          0 \r\n 2007          105           21.67605      18.67        -2.688889      0 \r\n 2007          106           24.20733      23.1          2.382222      0 \r\n 2007          107           18.89754      26.48         6.711111      0 \r\n 2007          108           20.49173      17.72         3.733889      0 \r\n 2007          109           14.34016      17.78         5.501111      0 \r\n 2007          110           24.14001      23.51         2.047778      0 \r\n 2007          111           24.07758      28.03         5.366111      0 \r\n 2007          112           19.39242      30.66         9.41          0.762 \r\n 2007          113           6.853518      20.7          9.22          0 \r\n 2007          114           9.205218      22.79         6.311111      24.13 \r\n 2007          115           2.048696      12.33         8.39          34.036 \r\n 2007          116           3.967562      10.37         6.98          17.272 \r\n 2007          117           22.06788      21.84         7.66          0 \r\n 2007          118           25.02124      25.55         11.85         0 \r\n 2007          119           25.32948      32.28         13.28         0 \r\n 2007          120           25.10149      32.69         15.9          0 \r\n 2007          121           21.05493      28.98         13.75         0 \r\n 2007          122           20.56645      22.77         12.73         0 \r\n 2007          123           5.11494       20.44         12.25         0.254 \r\n 2007          124           6.942846      19.07         12.93         0.508 \r\n 2007          125           18.13074      27.22         16.44         0 \r\n 2007          126           3.023107      19.36         11.23         14.986 \r\n 2007          127           19.27197      27.36         13.88         0 \r\n 2007          128           23.32003      27.63         16.92         0 \r\n 2007          129           25.18488      28.9          14.9          0 \r\n 2007          130           20.97117      30.38         12.6          0 \r\n 2007          131           23.60245      33.34         15.36         0 \r\n 2007          132           24.80505      27.83         10.98         0 \r\n 2007          133           25.12743      29.17         11.92         0 \r\n 2007          134           25.12877      33.55         17.4          0 \r\n 2007          135           5.676098      24.35         11.04         7.366 \r\n 2007          136           23.78834      24.01         8.61          0 \r\n 2007          137           27.92109      20.21         6.516111      0 \r\n 2007          138           28.90391      23.85         3.475         0 \r\n 2007          139           27.03785      28.64         8.41          0 \r\n 2007          140           25.23257      29.85         15.63         0 \r\n 2007          141           26.78241      30.93         13.61         0 \r\n 2007          142           19.66748      30.21         16.24         0 \r\n 2007          143           24.35552      31.74         21.31         0 \r\n 2007          144           13.55239      29.8          12.32         0 \r\n 2007          145           25.37077      24.19         8.82          0.254 \r\n 2007          146           7.636888      23.6          17.59         53.34 \r\n 2007          147           28.19652      24.53         13.27         0 \r\n 2007          148           14.23397      28.44         14.96         3.302 \r\n 2007          149           21.53664      31            18.68         0 \r\n 2007          150           16.75721      28.78         18.93         1.778 \r\n 2007          151           20.44997      27.49         17.11         19.558 \r\n 2007          152           13.38378      27.85         17.06         1.778 \r\n 2007          153           17.42598      26.27         16.72         22.098 \r\n 2007          154           21.71672      24.46         15.83         0 \r\n 2007          155           19.17322      26.69         16.1          0.508 \r\n 2007          156           28.65751      23.72         11.93         0.254 \r\n 2007          157           17.92191      29.91         11.72         0.508 \r\n 2007          158           15.89175      31.27         22.14         6.096 \r\n 2007          159           29.47892      24.19         11.79         0 \r\n 2007          160           29.26687      27.15         8.95          0 \r\n 2007          161           18.28199      26.82         12.06         0 \r\n 2007          162           27.92489      31.79         14.02         0 \r\n 2007          163           27.61197      33.95         14.22         0 \r\n 2007          164           26.92073      33.68         14.49         0 \r\n 2007          165           27.02232      35.57         16.31         0 \r\n 2007          166           25.26667      34.83         18.14         0 \r\n 2007          167           24.69472      34.82         19.01         0 \r\n 2007          168           22.72841      34.02         21.23         0 \r\n 2007          169           14.5863       29.32         22.18         1.27 \r\n 2007          170           27.97979      27.49         14.83         0 \r\n 2007          171           28.90399      31.25         13.61         0 \r\n 2007          172           19.99463      33.28         18.88         29.972 \r\n 2007          173           15.62155      27.49         18.39         123.952 \r\n 2007          174           6.080691      21.16         17.19         0.508 \r\n 2007          175           10.17474      25.33         17.92         0 \r\n 2007          176           26.88492      31.79         17.26         0 \r\n 2007          177           24.79434      33.28         20.7          0 \r\n 2007          178           13.97523      31.4          21.56         0 \r\n 2007          179           16.12761      25.21         17.66         0 \r\n 2007          180           20.14964      25            13.61         0 \r\n 2007          181           23.37015      26.61         12.46         0 \r\n 2007          182           27.6644       29.71         12.26         0 \r\n 2007          183           27.73959      29.57         13.61         0 \r\n 2007          184           24.25465      31            15.23         0 \r\n 2007          185           25.55395      32.07         20.89         0 \r\n 2007          186           27.7754       33.14         19.75         0 \r\n 2007          187           27.56804      33.34         17.87         0 \r\n 2007          188           27.36612      34.09         19.34         0 \r\n 2007          189           27.37968      34.22         22.24         0 \r\n 2007          190           22.83657      33.61         21.43         0 \r\n 2007          191           22.05796      32.28         18.34         0 \r\n 2007          192           27.40194      27.15         14.22         0 \r\n 2007          193           25.18391      28.84         14.9          0 \r\n 2007          194           28.01874      28.08         13.14         0 \r\n 2007          195           24.80501      31.19         15.71         0 \r\n 2007          196           27.64771      30.24         14.42         0 \r\n 2007          197           11.45885      29.11         17.26         24.13 \r\n 2007          198           16.28572      30.38         18.73         31.496 \r\n 2007          199           13.66817      32.14         21.09         21.082 \r\n 2007          200           18.93503      31.27         18.73         26.924 \r\n 2007          201           27.10061      26.47         15.03         0 \r\n 2007          202           26.57267      27.36         12.46         0 \r\n 2007          203           21.6999       27.49         13.41         0 \r\n 2007          204           27.70005      28.96         15.43         0 \r\n 2007          205           24.8397       30.18         14.69         0 \r\n 2007          206           25.96457      30.98         16.31         0 \r\n 2007          207           25.2514       32.06         17.8          0 \r\n 2007          208           15.81477      30.53         21.16         23.114 \r\n 2007          209           23.07217      28.84         21.16         0 \r\n 2007          210           21.66877      31.19         20.15         0 \r\n 2007          211           27.10483      31.45         16.51         0 \r\n 2007          212           25.90942      33.07         16.72         0 \r\n 2007          213           24.75254      33.14         18.61         0 \r\n 2007          214           20.46704      32.6          19.41         0 \r\n 2007          215           26.71706      32.33         17.86         0 \r\n 2007          216           7.865627      25.82         18.47         9.398 \r\n 2007          217           19.95969      33.21         23.26         0 \r\n 2007          218           13.88649      31.61         24.73         0 \r\n 2007          219           22.72113      34.21         22.51         6.35 \r\n 2007          220           14.30995      30.25         20.28         57.912 \r\n 2007          221           18.75507      31.47         20.29         1.778 \r\n 2007          222           23.84031      35.71         21.25         0 \r\n 2007          223           23.74612      34.29         19.01         0 \r\n 2007          224           23.17074      34.56         22.45         0 \r\n 2007          225           22.14616      34.01         22.51         0 \r\n 2007          226           19.73375      33.14         22.72         0 \r\n 2007          227           12.21109      32.88         23.87         0 \r\n 2007          228           8.8246        28.72         18.81         1.778 \r\n 2007          229           21.89391      29.5          16.31         0 \r\n 2007          230           17.59179      28.96         17.53         1.524 \r\n 2007          231           8.413438      29.18         21.03         23.368 \r\n 2007          232           6.832556      27.83         20.69         4.826 \r\n 2007          233           17.01394      32.87         21.57         8.382 \r\n 2007          234           18.65156      33.14         21.7          22.352 \r\n 2007          235           12.13971      29.93         20.76         13.97 \r\n 2007          236           10.66761      25.95         19.75         29.972 \r\n 2007          237           22.95564      28.1          16.38         0 \r\n 2007          238           22.88342      29.51         13.81         0 \r\n 2007          239           18.62378      32.21         18.14         0 \r\n 2007          240           21.80031      34.5          20.5          0 \r\n 2007          241           13.65561      29.38         19.75         0 \r\n 2007          242           19.98433      28.7          14.97         0 \r\n 2007          243           22.22215      27.89         12.2          0 \r\n 2007          244           22.22185      29.71         11.92         0 \r\n 2007          245           22.17683      31.52         11.79         0 \r\n 2007          246           21.23664      33            12.06         0 \r\n 2007          247           20.29483      34.5          13.75         0 \r\n 2007          248           16.757        33.07         17.46         0 \r\n 2007          249           10.29917      29.72         20.84         0 \r\n 2007          250           14.62183      30.26         16.78         9.144 \r\n 2007          251           20.58524      29.5          13.61         0 \r\n 2007          252           18.3742       30.18         13.68         0 \r\n 2007          253           4.044798      21.7          11.84         4.572 \r\n 2007          254           20.78611      23.78         8.21          0 \r\n 2007          255           20.83887      22.49         4.212222      0 \r\n 2007          256           20.10408      29.24         5.911111      0 \r\n 2007          257           20.52315      18.8          4.413889      0 \r\n 2007          258           20.54193      19.6          0.6272222     0 \r\n 2007          259           19.05071      25.66         10.43         0 \r\n 2007          260           17.18574      32.94         15.76         0 \r\n 2007          261           16.82278      32.94         18.14         0 \r\n 2007          262           17.77761      29.16         14.96         7.62 \r\n 2007          263           17.84346      32.8          12.12         0 \r\n 2007          264           17.35042      33.22         18.47         0.508 \r\n 2007          265           19.38158      26.95         9.22          0 \r\n 2007          266           17.25557      34.02         8.82          0 \r\n 2007          267           11.91478      32.22         17.12         0 \r\n 2007          268           2.803029      25.57         12.93         20.828 \r\n 2007          269           18.10454      21.89         8.27          0 \r\n 2007          270           16.03346      27.02         9.69          0 \r\n 2007          271           17.98471      26.2          7.59          0 \r\n 2007          272           15.53833      29.32         7.19          0 \r\n 2007          273           15.38616      31.33         12.13         26.416 \r\n 2007          274           5.224519      22.92         13.68         1.524 \r\n 2007          275           6.26964       24.88         11.78         9.652 \r\n 2007          276           17.3267       25.73         9.09          0 \r\n 2007          277           14.40263      30.18         8.14          0 \r\n 2007          278           12.8709       32.41         15.36         0 \r\n 2007          279           11.53993      32.08         18.4          0 \r\n 2007          280           13.11692      33.01         18.13         0 \r\n 2007          281           8.87644       25.23         13.27         0.254 \r\n 2007          282           16.0246       25.48         9.28          0 \r\n 2007          283           11.23023      14.28         6.847222      0 \r\n 2007          284           13.71921      15.69         4.413889      0 \r\n 2007          285           12.18506      17.71         3.462778      0 \r\n 2007          286           3.880534      17.93         9.9           0 \r\n 2007          287           6.538755      24.4          11.72         4.826 \r\n 2007          288           4.100152      19.96         8.88          2.286 \r\n 2007          289           3.808904      15.23         7.19          0 \r\n 2007          290           4.092203      18.61         5.835         50.292 \r\n 2007          291           8.995684      22.11         13.13         8.89 \r\n 2007          292           5.055402      15.97         9.62          0 \r\n 2007          293           14.04694      26.22         6.182778      0 \r\n 2007          294           12.12243      27.02         13.4          0 \r\n 2007          295           2.355425      13.67         8.27          0.762 \r\n 2007          296           13.89753      16.97         0.9588889     0 \r\n 2007          297           14.00289      15.9          3.062222      0 \r\n 2007          298           13.27152      15.76        -0.1861111     0 \r\n 2007          299           5.442129      15.9          9.96          0 \r\n 2007          300           12.91923      16.37         2.32          0.508 \r\n 2007          301           13.19069      16.83        -1.477222      0 \r\n 2007          302           12.74258      19.53         2.116111      0 \r\n 2007          303           11.90294      22.03         1.707778      0 \r\n 2007          304           10.27239      16.51         3.666111      0 \r\n 2007          305           12.69744      15.34        -1.13          0 \r\n 2007          306           10.87166      16.91        -4.187222      0 \r\n 2007          307           11.84842      15.09        -1.198889      0 \r\n 2007          308           11.9095       17.45         4.277778      0 \r\n 2007          309           9.452702      11.19         2.245         0 \r\n 2007          310           11.51215      7.92         -3.706111      0 \r\n 2007          311           10.42904      7.92         -6.355         0 \r\n 2007          312           9.777422      12.32         1.032778      0 \r\n 2007          313           10.99894      11.1         -1.951111      0 \r\n 2007          314           9.24505       14.34        -4.593889      0 \r\n 2007          315           3.181221      19.41         10.43         0 \r\n 2007          316           6.413152      18.06         3.333889      0 \r\n 2007          317           9.6696        17.46        -4.255         0 \r\n 2007          318           5.294099      12.34         4.616111      0 \r\n 2007          319           6.654108      7.05         -0.4572222     0 \r\n 2007          320           8.655734      13.8         -3.305         0 \r\n 2007          321           9.07656       12.31         1.843889      0 \r\n 2007          322           2.659518      6.455         1.776111      2.54 \r\n 2007          323           3.708363      19.89         2.725         0 \r\n 2007          324           2.77282       17.12         6.235         0 \r\n 2007          325           3.670749      6.507222      0.075         0 \r\n 2007          326           4.568677      1.3          -3.787778      0 \r\n 2007          327           9.374252      1.557778     -6.831111      0 \r\n 2007          328           8.799119      4.942778     -4.118889      0 \r\n 2007          329           5.039042      4.95         -3.576111      0 \r\n 2007          330           5.083769      6.237222     -1.545         0 \r\n 2007          331           8.833553      1.847778     -4.663889      0 \r\n 2007          332           2.559478      10.09        -4.801111      0 \r\n 2007          333           8.898824      5.42         -7.31          0 \r\n 2007          334           8.928447      2.257222     -6.361111      0 \r\n 2007          335           5.640722      1.776111     -6.558889      0 \r\n 2007          336           2.352998      4.42         -6.762778      18.54 \r\n 2007          337           7.973909      0.075        -8.8           0 \r\n 2007          338           3.44749       1.095        -6.762778      0 \r\n 2007          339           7.963282     -0.395        -10.97         4.06 \r\n 2007          340           3.515941     -1.681111     -12.8          0 \r\n 2007          341           2.482576     -0.4688889    -7.18          4.83 \r\n 2007          342           1.449212     -6.906111     -10.03         0 \r\n 2007          343           2.115849     -5.612222     -9.01          0.76 \r\n 2007          344           5.846596     -0.1422222    -6.495         0.76 \r\n 2007          345           1.456241      0.5511111    -2.702222      16.26 \r\n 2007          346           6.294703      0.6077778    -6.092778      14.22 \r\n 2007          347           4.644659      1.557778     -2.497778      0.51 \r\n 2007          348           6.990878     -2.362222     -10.5          0 \r\n 2007          349           2.496425     -3.518889     -7.1           0.76 \r\n 2007          350           4.610392     -5.548889     -12.94         5.59 \r\n 2007          351           8.501512      0.8111111    -11.32         0 \r\n 2007          352           8.197334      4.331111     -10.84         0 \r\n 2007          353           7.540781      2.23         -11.32         0 \r\n 2007          354           2.113966      3.533889     -2.69          0 \r\n 2007          355           2.380319      4.89          0.3472222     0 \r\n 2007          356           3.938441      6.588889     -6.978889      0.51 \r\n 2007          357           5.496562     -4.727222     -12.27         24.64 \r\n 2007          358           3.165405     -2.157778     -8.19          0 \r\n 2007          359           8.219091      9.14         -12.19         0 \r\n 2007          360           6.652476      5.648889     -8.19          0 \r\n 2007          361           4.235882      0.4827778    -6.358889      2.79 \r\n 2007          362           1.623727      1.091111     -4.527778      1.78 \r\n 2007          363           6.935775     -0.4788889    -12.88         8.13 \r\n 2007          364           7.077529      3.598889     -16.08         0 \r\n 2007          365           2.813112     -4.732222     -11.73         0 \r\n 2008          1             7.387061     -6.491111     -16.75         5.33 \r\n 2008          2             8.875813     -11.6         -19.81         0.51 \r\n 2008          3             8.869829     -3.166111     -23.42         0 \r\n 2008          4             7.231081      3.062778     -4.936111      0 \r\n 2008          5             4.706832      9.16         -1.417778      0 \r\n 2008          6             6.132991      12.99         1.502222      0 \r\n 2008          7             2.461656      13.95         0.4827778     0 \r\n 2008          8             1.669583      3.123889     -0.665         0 \r\n 2008          9             3.621168      1.772778     -3.915         1.27 \r\n 2008          10            3.518493      6.711111      8.777778E-02                0 \r\n 2008          11            5.723712      1.3          -4.46          8.64 \r\n 2008          12            7.312795      6.491111     -3.982778      0 \r\n 2008          13            6.544404     -1.482222     -6.093889      0 \r\n 2008          14            8.727071     -4.596111     -12.26         0 \r\n 2008          15            9.695165     -0.815        -15.12         0 \r\n 2008          16            8.175201      7.51         -4.457222      0 \r\n 2008          17            7.330786     -0.735        -13.01         0 \r\n 2008          18            6.347379     -7.58         -17.77         2.03 \r\n 2008          19            10.48092     -15.47        -21.1          0.51 \r\n 2008          20            9.566381     -10.31        -22.67         0 \r\n 2008          21            2.63864      -0.7277778    -11.52         1.02 \r\n 2008          22            10.83413      0            -15.06         4.57 \r\n 2008          23            6.620343     -6.437778     -18.66         0 \r\n 2008          24            11.30082     -13.37        -24.17         0 \r\n 2008          25            4.07894      -4.527778     -25.19         0 \r\n 2008          26            10.67979      1.693889     -8.47          0 \r\n 2008          27            10.8743       13.2         -13.56         0 \r\n 2008          28            5.61794       13.07        -0.32          0 \r\n 2008          29            1.181143      9.96         -17.23         0 \r\n 2008          30            9.586674     -8.95         -17.77         0 \r\n 2008          31            4.822938     -2.43         -9.62          0 \r\n 2008          32            6.01768      -1.353889     -6.57          2.03 \r\n 2008          33            4.14785       0.55         -6.762778      0 \r\n 2008          34            2.297183     -0.4611111    -2.973889      0 \r\n 2008          35            3.757232      4.542778     -1.137222      8.13 \r\n 2008          36            1.425531      2.175         0.075         2.03 \r\n 2008          37            6.133451      0.2788889    -4.663889      25.4 \r\n 2008          38            7.315515     -1.082222     -6.162222      12.19 \r\n 2008          39            9.33622       4.747222     -7.52          0.51 \r\n 2008          40            8.340971      7.388889E-02               -12.4          0 \r\n 2008          41            13.62319     -12.13        -19.34         0 \r\n 2008          42            6.831928     -12.67        -17.16         0.76 \r\n 2008          43            7.038367     -7.99         -16.48         0 \r\n 2008          44            13.98021     -4.607778     -20.42         0.51 \r\n 2008          45            9.290237      3.718889     -9.94          0 \r\n 2008          46            14.09862     -6.308889     -16.82         0 \r\n 2008          47            13.89628      6.082778     -18.58         0 \r\n 2008          48            4.782898      1.436111     -1.217778      18.29 \r\n 2008          49            14.40819      0.3472222    -16.14         17.53 \r\n 2008          50            12.8294      -6.967222     -18.38         0 \r\n 2008          51            15.60854     -7.1          -18.99         0.76 \r\n 2008          52            7.416684     -4.198889     -17.56         0 \r\n 2008          53            14.57647     -0.5511111    -13.76         0.51 \r\n 2008          54            15.63937      6.575        -17.63         0 \r\n 2008          55            14.92726      5.017222     -13.35         0 \r\n 2008          56            4.451357      3.528889     -0.1288889     0 \r\n 2008          57            13.76569      0.6872222    -5.628889      7.87 \r\n 2008          58            16.40107     -4.48         -11.38         0 \r\n 2008          59            11.66516      0.695        -14.1          0 \r\n 2008          60            16.39228      3.651111     -6.111111E-02                3.3 \r\n 2008          61            13.74636      7.5          -5.952222      0 \r\n 2008          62            14.70555      15            0.6188889     0 \r\n 2008          63            8.634521      1.701111     -7.38          16.51 \r\n 2008          64            17.12089      0.1977778    -8.87          0 \r\n 2008          65            9.453706      5.413889     -5.077778      0 \r\n 2008          66            17.35117      0.8088889    -9.82          0 \r\n 2008          67            16.92135     -3.858889     -11.93         0 \r\n 2008          68            17.36619     -2.042222     -14.84         0 \r\n 2008          69            15.62214      3.107222     -4.865         0 \r\n 2008          70            12.87584      1.218889     -5.481111      0 \r\n 2008          71            15.90096      12.66        -5.405         0 \r\n 2008          72            15.65531      14.54        -1.817222      0 \r\n 2008          73            17.48615      15.69        -1.137222      0 \r\n 2008          74            17.59665      14.94        -2.157778      0 \r\n 2008          75            12.11548      6.967778     -2.485         0 \r\n 2008          76            13.95289      7.92         -4.587222      0 \r\n 2008          77            2.789054      6.307222      0.755         0 \r\n 2008          78            4.694281      7.86          2.986111      4.32 \r\n 2008          79            18.29408      11.3          1.776111      0 \r\n 2008          80            15.44093      15.61        -0.3322222     0 \r\n 2008          81            12.55451      13.32         0.5511111     0 \r\n 2008          82            7.875292      3.997778     -2.43          0 \r\n 2008          83            8.532598      4.142222     -2.292222      0.51 \r\n 2008          84            17.139        8.73         -1.952778      0 \r\n 2008          85            18.25241      16.38         0.345         0 \r\n 2008          86            15.04148      13.25        -3.518889      0 \r\n 2008          87            2.673785      8.75          0.5511111     0 \r\n 2008          88            21.7317       8.58         -5.615         13.21 \r\n 2008          89            19.81911      12.24        -2.488889      0 \r\n 2008          90            11.61227      14.06         4.946111      0 \r\n 2008          91            6.330727      20.29         4.468889      3.81 \r\n 2008          92            8.880791      8.06         -4.777778E-02                0 \r\n 2008          93            20.45486      13.66        -3.37          0 \r\n 2008          94            4.921179      10.18        -1.272778      6.604 \r\n 2008          95            18.60311      14.6          1.905         0 \r\n 2008          96            22.2726       18.99         3.205         0 \r\n 2008          97            15.09424      19.27         6.653889      1.016 \r\n 2008          98            13.65314      10.84         0.9588889     0.762 \r\n 2008          99            1.537704      6.17          2.646111      34.798 \r\n 2008          100           14.98972      11.37         2.713889      0 \r\n 2008          101           2.011918      18.01         4.55          20.574 \r\n 2008          102           5.941782      14.03         3.666111      1.27 \r\n 2008          103           6.427879      5.026111      1.902222      0.254 \r\n 2008          104           13.76557      8.46          1.367222      0 \r\n 2008          105           24.9945       13.25        -2.427222      0 \r\n 2008          106           24.88413      17.92         0.6327778     0 \r\n 2008          107           23.09104      25.34         7.8           0 \r\n 2008          108           12.3036       24.32         8.47          6.35 \r\n 2008          109           5.235774      18.2          10.3          14.732 \r\n 2008          110           6.579842      14.82         9.62          0.254 \r\n 2008          111           19.72404      22.49         8.87          0 \r\n 2008          112           23.18112      27.36         8.27          0 \r\n 2008          113           19.7876       24.26         12.59         2.794 \r\n 2008          114           24.7771       27.22         9.89          0 \r\n 2008          115           5.202511      19.68         15.69         17.272 \r\n 2008          116           9.339525      24.73         5.153889      31.496 \r\n 2008          117           25.24052      15.15         3.802222      0 \r\n 2008          118           18.27613      13.25         6.442222      0 \r\n 2008          119           10.07193      7.26          1.218889      2.794 \r\n 2008          120           22.66757      12.98        -0.7961111     0 \r\n 2008          121           23.74642      23.31         1.776111      0 \r\n 2008          122           9.4986        25.95         9.82          0 \r\n 2008          123           12.17255      22.92         11.98         2.54 \r\n 2008          124           16.76943      16.51         5.228889      1.016 \r\n 2008          125           26.80074      21.56         1.912222      0 \r\n 2008          126           25.79942      26.01         8.48          0 \r\n 2008          127           22.08043      28.31         10.64         0 \r\n 2008          128           8.807027      22.18         13.47         13.208 \r\n 2008          129           25.63361      20.21         11.05         0 \r\n 2008          130           16.29835      20.27         7.66          0 \r\n 2008          131           16.35626      21.56         6.251111      22.86 \r\n 2008          132           12.35393      15.9          5.903889      32.512 \r\n 2008          133           26.76045      20.55         2.92          0 \r\n 2008          134           7.97939       21.64         11.18         1.778 \r\n 2008          135           25.93549      21.36         9.01          0.254 \r\n 2008          136           13.30445      17.86         6.312778      0 \r\n 2008          137           24.48063      25.28         4.617778      0 \r\n 2008          138           23.23434      27.91         11.98         0 \r\n 2008          139           27.47106      20.34         8.21          0 \r\n 2008          140           15.38741      20.21         6.915         1.27 \r\n 2008          141           20.89477      21.16         6.982778      0.254 \r\n 2008          142           27.95736      22.77         6.242778      0 \r\n 2008          143           8.124867      20.09         5.775         0 \r\n 2008          144           10.50012      15.49         8.67          27.686 \r\n 2008          145           12.05465      21.97         9.01          0 \r\n 2008          146           12.43945      28.98         13.68         2.286 \r\n 2008          147           21.17752      28.37         17.66         4.318 \r\n 2008          148           7.249198      19.35         8.94          7.366 \r\n 2008          149           26.72149      21.82         7.19          0 \r\n 2008          150           14.94926      25.48         8.89          0 \r\n 2008          151           14.27413      27.29         17.79         20.828 \r\n 2008          152           25.46541      29.19         17.12         0 \r\n 2008          153           27.17998      31.06         13.95         0 \r\n 2008          154           18.33902      30.18         16.31         0 \r\n 2008          155           13.03303      24.73         14.61         35.56 \r\n 2008          156           13.51654      28.96         17.19         0 \r\n 2008          157           18.46073      32.22         23.4          0.762 \r\n 2008          158           21.3297       30            19.08         7.62 \r\n 2008          159           20.58428      33.09         17.19         0.254 \r\n 2008          160           11.60608      31.2          19.54         15.748 \r\n 2008          161           8.674143      23.6          15.83         4.064 \r\n 2008          162           27.43687      28.71         12.19         3.81 \r\n 2008          163           11.30408      29.32         20.23         0 \r\n 2008          164           9.289819      30.82         18.53         101.854 \r\n 2008          165           17.50523      26.68         16.31         2.794 \r\n 2008          166           25.27094      30.19         14.36         0 \r\n 2008          167           19.60066      29.26         16.31         2.286 \r\n 2008          168           28.04435      24.12         14.49         0 \r\n 2008          169           28.7955       26.41         10.98         0 \r\n 2008          170           25.26316      29.64         14.09         0 \r\n 2008          171           26.97868      30.18         12.61         0 \r\n 2008          172           24.18682      30.18         15.57         0.508 \r\n 2008          173           26.20761      30.32         18.4          0 \r\n 2008          174           27.19039      29.05         15.23         0 \r\n 2008          175           25.90858      29.23         13.34         0 \r\n 2008          176           17.87392      31.2          16.65         0 \r\n 2008          177           14.64069      30.52         19.12         47.498 \r\n 2008          178           10.67259      25.14         18.47         2.032 \r\n 2008          179           13.5729       27.83         19.34         6.604 \r\n 2008          180           27.5608       27.9          18.39         0 \r\n 2008          181           17.70029      26.23         16.44         0 \r\n 2008          182           26.92182      29.05         13.95         0 \r\n 2008          183           28.35308      28.93056      12.33         0 \r\n 2008          184           15.11453      29.31333      17.22         16.2052 \r\n 2008          185           25.26776      24.46389      13.95833      0 \r\n 2008          186           27.54947      25.63         12.33722      0 \r\n 2008          187           28.83169      26.82222      12.71833      0 \r\n 2008          188           20.94824      30.42333      17.49333      0 \r\n 2008          189           22.29377      32.44222      20.16055      20.5232 \r\n 2008          190           14.51697      28.63722      19.28222      15.5194 \r\n 2008          191           25.88168      28.30389      15.02556      0 \r\n 2008          192           20.26094      30.3          18.54333      2.8194 \r\n 2008          193           24.10524      30.65667      21.43444      0 \r\n 2008          194           15.82518      25.54111      14.67778      13.843 \r\n 2008          195           28.46379      26.48389      13.17389      0 \r\n 2008          196           27.33474      30.14611      13.18556      0 \r\n 2008          197           23.35157      30.50333      17.98778      0 \r\n 2008          198           19.39493      29.07222      20.44889      0 \r\n 2008          199           23.32325      30.59222      19.06556      12.3444 \r\n 2008          200           12.24138      28.37         20.63         2.286 \r\n 2008          201           19.71961      29.77         20            20.32 \r\n 2008          202           26.04925      31.07611      18.59222      0 \r\n 2008          203           21.88659      29.27778      17.92611      13.3858 \r\n 2008          204           26.79028      28.45555      16.45333      0 \r\n 2008          205           25.90545      26.21333      13.97         0 \r\n 2008          206           7.591324      21.67278      17.40778      5.588 \r\n 2008          207           13.12027      26.76278      18.54778      5.842 \r\n 2008          208           22.13955      27.62944      16.015        0 \r\n 2008          209           20.5303       29.27111      15.34833      9.6012 \r\n 2008          210           22.67084      29.49833      17.49944      0 \r\n 2008          211           16.47504      29.40889      19.98333      0 \r\n 2008          212           25.175        29.75278      19.16611      0 \r\n 2008          213           22.1924       30.03833      18.31111      0 \r\n 2008          214           24.9243       29.97333      17.36278      0 \r\n 2008          215           26.3587       28.27389      14.21889      0 \r\n 2008          216           21.67316      30.24333      18.73833      0 \r\n 2008          217           19.87835      32.73056      22.575        0 \r\n 2008          218           20.02207      29.37833      15.56778      5.3848 \r\n 2008          219           19.11038      27.23556      13.82889      0 \r\n 2008          220           24.67389      27.52056      13.695        0 \r\n 2008          221           23.61642      27.90889      11.54722      0 \r\n 2008          222           15.83376      27.46889      15.24556      7.9502 \r\n 2008          223           24.48104      25.31111      12.65556      0 \r\n 2008          224           23.65927      25.19833      10.41444      0 \r\n 2008          225           12.71212      23.77444      14.17833      0 \r\n 2008          226           21.36995      28.70944      13.53611      0 \r\n 2008          227           19.45221      27.62111      14.76944      0 \r\n 2008          228           23.72269      26.19889      13.13778      0 \r\n 2008          229           23.5632       26.695        11.50944      0 \r\n 2008          230           23.47429      28.07444      13.75778      0 \r\n 2008          231           21.77923      29.07722      12.55         0 \r\n 2008          232           18.82227      31.67         16.11         0 \r\n 2008          233           19.36924      28.21222      16.20889      0 \r\n 2008          234           5.130923      22.20944      17.72667      8.0264 \r\n 2008          235           15.36892      28.37222      20.00111      0 \r\n 2008          236           21.22217      26.20278      14.13222      0 \r\n 2008          237           21.09887      24.97611      10.81944      0 \r\n 2008          238           21.89023      25.09833      10.04333      0 \r\n 2008          239           21.20903      25.37667      10.65278      0 \r\n 2008          240           12.56279      25.49944      11.23889      0 \r\n 2008          241           11.92821      28.15778      17.55889      37.1856 \r\n 2008          242           22.85832      27.84722      11.20444      0 \r\n 2008          243           21.63647      28.13667      11.58222      0 \r\n 2008          244           22.24114      28.60611      13.75389      0 \r\n 2008          245           18.80825      31.00056      17.36667      0 \r\n 2008          246           17.34009      30.62556      15.075        3.1242 \r\n 2008          247           8.413564      18.87278      12.80167      0 \r\n 2008          248           4.005887      15.29222      11.08611      28.7528 \r\n 2008          249           17.49155      21.26556      7.611667      0 \r\n 2008          250           15.31829      20.14167      9.013333      0 \r\n 2008          251           17.12185      21.985        8.786667      0 \r\n 2008          252           4.671227      14.48278      6.836111      18.0594 \r\n 2008          253           20.86193      20.61         5.101111      0 \r\n 2008          254           15.80418      22.44722      6.811111      0 \r\n 2008          255           9.526299      24.42167      14.57556      6.604 \r\n 2008          256           4.339101      21.38611      17.98556      43.434 \r\n 2008          257           5.041092      24.58611      16.90722      33.147 \r\n 2008          258           7.53597       18.33278      11.55389      8.4582 \r\n 2008          259           10.95652      18.07833      6.833333      0 \r\n 2008          260           18.67545      24.73333      6.098333      0 \r\n 2008          261           18.44261      28.15333      9.518888      0 \r\n 2008          262           17.16315      26.82667      12.58611      0 \r\n 2008          263           17.15599      25.42611      11.54611      0 \r\n 2008          264           16.39647      27.64056      11.46778      0 \r\n 2008          265           15.41599      26.225        10.80167      0 \r\n 2008          266           13.47449      25.58333      13.09889      0 \r\n 2008          267           16.29032      27.61778      14.98056      0 \r\n 2008          268           13.94293      26.52722      11.71056      2.7178 \r\n 2008          269           16.10242      27.12278      9.582778      0 \r\n 2008          270           16.95382      28.18278      12.25778      0 \r\n 2008          271           15.62155      27.15778      11.32111      0 \r\n 2008          272           9.740059      24.12222      11.88611      0 \r\n 2008          273           12.22146      20.85278      9.732223      9.3218 \r\n 2008          274           16.99403      17.17278      5.989444      0 \r\n 2008          275           14.49593      16.09889      3.398333      0 \r\n 2008          276           16.89528      18.30556      2.226111      0 \r\n 2008          277           16.63935      18.76056      2.465556      0 \r\n 2008          278           16.555        19.73722      1.045556      0 \r\n 2008          279           11.95034      23.47389      8.687222      0 \r\n 2008          280           11.59156      26.02611      11.34667      4.1656 \r\n 2008          281           1.868616      16.68167      8.253333      13.7668 \r\n 2008          282           16.4094       20.76056      4.902778      0 \r\n 2008          283           15.38047      20.52722      3.621667      0 \r\n 2008          284           15.65059      24.44         4.782778      0 \r\n 2008          285           14.79847      26.34333      8.91          0 \r\n 2008          286           9.560021      27.38278      14.44111      0 \r\n 2008          287           6.57503       24.62444      8.359445      2.794 \r\n 2008          288           10.56109      15.74111      5.111667      0 \r\n 2008          289           5.922536      13.13         3.618333      10.7442 \r\n 2008          290           15.27465      14.02333      0.4183333     0 \r\n 2008          291           3.181639      9.332778      1.077778      0 \r\n 2008          292           12.90132      13.82722      0.2488889     0 \r\n 2008          293           12.57823      20.17833      4.611111      0 \r\n 2008          294           8.951291      17.20444      1.486111      0 \r\n 2008          295           11.4565       12.86722     -1.202222      0 \r\n 2008          296           2.054219      10.76778      5.206666      3.0734 \r\n 2008          297           1.506282      8.026111      4.471111      6.9088 \r\n 2008          298           3.078964      8.7           3.502778      0 \r\n 2008          299           12.68589      15.70333      1.145         0 \r\n 2008          300           10.65188      11.25111      0.2788889     0 \r\n 2008          301           6.961883      5.642222     -3.317778      0 \r\n 2008          302           13.09345      8.753333     -5.392778      0 \r\n 2008          303           12.89262      15.81722     -3.467222      0 \r\n 2008          304           12.73317      21.61278     -6.444445E-02                0 \r\n 2008          305           11.65223      23.04722      3.855556      0 \r\n 2008          306           9.500358      18.30333      4.250556      0 \r\n 2008          307           7.798474      20.74389      7.945         0 \r\n 2008          308           11.09965      24.03         11.56         0 \r\n 2008          309           10.77978      22.73333      12.95944      0 \r\n 2008          310           6.369261      21.54056      12.63056      0 \r\n 2008          311           6.78285       16.81944      5.405         7.747 \r\n 2008          312           3.012229      5.773889     -0.2605556     0 \r\n 2008          313           2.743993      1.476111     -1.151667      0 \r\n 2008          314           3.319586     -0.825        -5.073889      0 \r\n 2008          315           9.116099      2.608333     -5.901111      0 \r\n 2008          316           1.026377      4.459445     -0.1638889     0 \r\n 2008          317           2.066226      7.322778      4.076111      0 \r\n 2008          318           4.304081      12.42944      2.755556      0 \r\n 2008          319           3.128         8.235         2.166667      0 \r\n 2008          320           3.706564      2.635556     -4.545556      0 \r\n 2008          321           6.067302      4.749444     -5.441111      0 \r\n 2008          322           7.355179      2.18         -6.203333      0 \r\n 2008          323           9.393749      0.855        -10.73833      0 \r\n 2008          324           8.661089      8.813334     -3.451667      0 \r\n 2008          325           6.359262     -0.2866667    -8.717778      0 \r\n 2008          326           9.48245      -3.333333     -12.78111      0 \r\n 2008          327           4.110738      1.185556     -6.531667      0 \r\n 2008          328           8.067338      8.767777     -7.247222      0 \r\n 2008          329           9.41718       6.715556     -2.372778      0 \r\n 2008          330           8.925434      2.84         -10.02444      0 \r\n 2008          331           8.983843      8.053333     -9.451111      0 \r\n 2008          332           7.396601      6.637222     -8.339444      0 \r\n 2008          333           9.199487      7.665        -8.247222      0 \r\n 2008          334           3.990365      5.267778     -9.358334      0 \r\n 2008          335           3.444018      0.5811111    -2.694444      0 \r\n 2008          336           6.883517     -2.544445     -13.08278      7.11 \r\n 2008          337           8.201351      2.163889     -15.97389      0 \r\n 2008          338           4.734698      0.5811111    -13.04722      0 \r\n 2008          339           7.877384     -6.902778     -18.36667      1.78 \r\n 2008          340           7.923952     -0.7311111    -17.56444      0 \r\n 2008          341           7.136398      0.3172222    -16.11278      0 \r\n 2008          342           3.254022     -8.841111     -18.54611      0 \r\n 2008          343           3.084068     -0.3561111    -12.20278      0 \r\n 2008          344           3.000932     -0.7833334    -11.68222      16.26 \r\n 2008          345           6.542228     -5.251111     -16.14056      6.35 \r\n 2008          346           7.018241     -2.512778     -11.57667      0 \r\n 2008          347           6.258218     -2.972222     -15.31444      0 \r\n 2008          348           5.448614      5.824444     -3.060555      0 \r\n 2008          349           2.466133      11.46889     -17.46556      0 \r\n 2008          350           8.25863      -14.92833     -19.43778      4.57 \r\n 2008          351           2.197437     -12.88444     -19.40222      0 \r\n 2008          352           6.052156     -11.82556     -20.33         6.1 \r\n 2008          353           6.117761     -7.69         -18.67         0 \r\n 2008          354           5.639572     -3.515        -8.42          19.05 \r\n 2008          355           3.324355     -3.579444     -21.69444      0 \r\n 2008          356           8.046292     -18.98444     -22.96667      3.05 \r\n 2008          357           8.558414     -13.21333     -24.08556      0 \r\n 2008          358           4.614115     -1.008333     -13.30778      1.52 \r\n 2008          359           7.547811     -1.699444     -20.84611      3.05 \r\n 2008          360           5.596393     -1.638333     -22.885        2.54 \r\n 2008          361           3.397408      9.423333     -2.118333      1.02 \r\n 2008          362           3.285361      9.423333     -2.118333      3.81 \r\n 2008          363           8.440802      0.1427778    -10.14056      20.32 \r\n 2008          364           8.440258      3.270555     -5.729445      0 \r\n 2008          365           5.289873      1.307778     -11.57611      0 \r\n 2008          366           9.033173     -7.216111     -17.46667      0 \r\n 2009          1             4.351402     -0.5616667    -8.736667      0 \r\n 2009          2             7.642034     -1.684444     -10.45444      0 \r\n 2009          3             1.896816     -0.2061111    -8.797778      0 \r\n 2009          4             8.281684     -0.7827778    -14.43056      0.76 \r\n 2009          5             8.728117     -1.667778     -15.36333      0 \r\n 2009          6             6.557249     -2.174444     -11.23944      0 \r\n 2009          7             5.450664     -6.983889     -14.30889      0 \r\n 2009          8             8.576364     -7.195        -16.17889      0 \r\n 2009          9             4.826704     -4.309444     -9.191112      0.51 \r\n 2009          10            8.022695     -7.211667     -19.08055      0.25 \r\n 2009          11            6.068055     -5.341111     -17.47778      1.27 \r\n 2009          12            4.163875     -1.900556     -12.98222      0 \r\n 2009          13            10.12026     -12.29778     -24.64222      3.56 \r\n 2009          14            9.761858     -15.88556     -28.42945      5.33 \r\n 2009          15            11.1891      -24.25333     -32.61167      0.25 \r\n 2009          16            9.868382      17.90222     -34.80167      0 \r\n 2009          17            4.601898     -3.102222     -12.04833      0 \r\n 2009          18            4.478302     -2.958889     -12.53167      0 \r\n 2009          19            6.914646     -8.121667     -15.81778      1.52 \r\n 2009          20            9.803154     -6.493333     -15.16111      0 \r\n 2009          21            8.950747     -5.321111     -13.69778      0 \r\n 2009          22            9.886415      1.103889     -13.51722      0 \r\n 2009          23            7.394509     -4.511667     -18.95389      0 \r\n 2009          24            11.26312     -16.32167     -23.65444      0 \r\n 2009          25            9.970681     -12.32111     -17.3          0.51 \r\n 2009          26            6.868329     -10.79444     -18.02555      0.76 \r\n 2009          27            7.629691     -10.475       -19.94389      0 \r\n 2009          28            10.60895     -3.999444     -22.67556      0 \r\n 2009          29            9.535002     -3.731111     -12.35278      0 \r\n 2009          30            11.54738     -7.175        -17.81389      0 \r\n 2009          31            11.35642      6.323333     -8.398334      0 \r\n 2009          32            9.586046      2.035556     -4.626667      0 \r\n 2009          33            10.73426     -4.092222     -17.34722      0 \r\n 2009          34            12.64317     -10.46222     -18.35722      0.51 \r\n 2009          35            12.79413     -8.145        -20.29556      0 \r\n 2009          36            12.15205      5.756111     -13.39444      0 \r\n 2009          37            11.39546      9.937778     -8.97          0 \r\n 2009          38            12.27745      9.887222     -1.502778      0 \r\n 2009          39            10.68945      3.915555     -4.878889      0 \r\n 2009          40            6.719546      12.835       -0.4427778     0 \r\n 2009          41            12.97772      14.51444      1.517778      0.25 \r\n 2009          42            3.162853      5.298333     -0.9655555     0.51 \r\n 2009          43            12.25837      5.621111     -3.877222      6.35 \r\n 2009          44            4.708088     -1.183889     -5.763333      0 \r\n 2009          45            11.83348     -2.233333     -11.70222      2.29 \r\n 2009          46            12.77283     -3.481111     -15.91167      0 \r\n 2009          47            13.47424      0.9933333    -16.67222      0 \r\n 2009          48            7.386978      5.172778     -4.881111      0 \r\n 2009          49            3.163313      1.760556     -10.06444      4.06 \r\n 2009          50            15.13185     -4.746111     -13.43389      0.51 \r\n 2009          51            11.32199      0.795        -13.12778      0 \r\n 2009          52            11.41994     -3.563889     -12.35056      5.08 \r\n 2009          53            15.74548     -5.02         -14.96389      0.25 \r\n 2009          54            15.3816      -2.027222     -15.66611      0 \r\n 2009          55            14.48752      7.999444     -4.972222      0 \r\n 2009          56            14.69475      12.36611      6.833334E-02                0 \r\n 2009          57            2.244591      4.546667     -3.457778      0 \r\n 2009          58            12.52388     -1.861111     -8.263889      20.83 \r\n 2009          59            15.10516     -2.012222     -9.468889      0 \r\n 2009          60            17.18331     -4.476111     -12.98111      0 \r\n 2009          61            17.09557     -1.466667     -11.97778      0 \r\n 2009          62            8.57402      -0.7666667    -10.02611      0 \r\n 2009          63            16.4168       9.517777     -6.211111      0 \r\n 2009          64            13.89607      21.05833      1.743333      0 \r\n 2009          65            15.77008      14.58833      0.3533333     0 \r\n 2009          66            2.216558      6.043334      2.322778      5.84 \r\n 2009          67            3.102478      4.01         -0.6722222     42.16 \r\n 2009          68            3.680707      3.966111     -0.3605556     26.67 \r\n 2009          69            3.034864      8.112778     -10.94333      21.08 \r\n 2009          70            18.29462     -5.721667     -13.27167      2.29 \r\n 2009          71            18.02873     -2.384444     -14.47222      0 \r\n 2009          72            12.88132      5.486111     -6.432222      0 \r\n 2009          73            18.97783      10.36556     -6.383889      0 \r\n 2009          74            17.90384      14.70333     -1.971667      0 \r\n 2009          75            18.34236      19.84056      0.4077778     0 \r\n 2009          76            18.48713      22.88833      5.971667      0 \r\n 2009          77            11.41412      13.76222      1.167222      0 \r\n 2009          78            19.70183      10.31944     -3.981111      0 \r\n 2009          79            15.10252      11.54        -2.669445      0 \r\n 2009          80            18.708        18.79278      1.159444      0 \r\n 2009          81            5.511499      13.32389      4.745555      0 \r\n 2009          82            10.58485      19.54667      9.139444      1.52 \r\n 2009          83            4.686833      14.61333      2.493889      0.76 \r\n 2009          84            7.407061      7.374444     -0.4516667     17.02 \r\n 2009          85            12.96166      10.37778     -2.048333      0 \r\n 2009          86            18.6562       3.438889     -4.296667      0 \r\n 2009          87            4.250693      1.182222     -3.022222      0 \r\n 2009          88            22.30348      6.172222     -4.569445      18.8 \r\n 2009          89            19.72676      12.15056     -2.777222      0 \r\n 2009          90            12.14962      13.84         1.100556      1.78 \r\n 2009          91            19.98002      12.27         0.925         0 \r\n 2009          92            6.755654      13.36         3.492778      0 \r\n 2009          93            22.00207      8.9          -1.571111      0 \r\n 2009          94            15.9738       12.61        -2.177222      0 \r\n 2009          95            4.183498      15.31         2.42          0 \r\n 2009          96            17.00566      5.667778     -1.982222      0 \r\n 2009          97            23.01744      7.35         -2.788889      0 \r\n 2009          98            14.67245      11.94        -5.771111      0 \r\n 2009          99            6.327463      12.54556     -2.997778      0 \r\n 2009          100           21.74835      14.04         1.536111      0 \r\n 2009          101           23.65475      15.44        -3.061111      0 \r\n 2009          102           16.64324      14.9         -4.693889      0 \r\n 2009          103           2.14861       8.23          2.08          27.432 \r\n 2009          104           15.86397      13.9          1.885         0 \r\n 2009          105           24.41008      17.8         -1.505         3.048 \r\n 2009          106           23.04254      21.04         1.127778      0 \r\n 2009          107           24.41557      23.8          1.55          0 \r\n 2009          108           6.359178      18.43         6.075         1.016 \r\n 2009          109           2.776126      14.65         6.268889      16.51 \r\n 2009          110           13.75139      12.16         2.76          7.366 \r\n 2009          111           21.6053       15.58         3.842778      0 \r\n 2009          112           24.19549      21.72         2.556111      0 \r\n 2009          113           13.79352      24.43         7.09          0.762 \r\n 2009          114           22.64858      28.72         6.738889      0.508 \r\n 2009          115           7.487352      22.28         10.19         32.258 \r\n 2009          116           13.17479      27.57         9.04          23.876 \r\n 2009          117           10.53418      19.7          8.51          4.318 \r\n 2009          118           11.29061      15.17         5.188889      0 \r\n 2009          119           7.294637      17.01         8.37          12.954 \r\n 2009          120           15.01638      21.46         12.82         39.116 \r\n 2009          121           14.0441       16.33         9.04          0 \r\n 2009          122           24.63799      19.77         6.891111      0 \r\n 2009          123           24.69962      22.93         4.521111      0 \r\n 2009          124           16.84893      23.28         7.7           0 \r\n 2009          125           19.2846       24.54         10.66         0 \r\n 2009          126           14.92788      24.02         13.1          17.78 \r\n 2009          127           15.57398      25.7          11            7.366 \r\n 2009          128           17.23879      25.42         9.79          19.558 \r\n 2009          129           24.41615      17.41         6.958889      0 \r\n 2009          130           22.16968      18.82         5.132778      0 \r\n 2009          131           27.11261      20.16         4.798889      0 \r\n 2009          132           20.69411      24            5.205         12.446 \r\n 2009          133           3.500502      21.94         12.02         35.56 \r\n 2009          134           26.94914      19.63         8.23          0 \r\n 2009          135           26.86375      14.99         11.48         54.356 \r\n 2009          136           26.77835      15.39         5.547222      0 \r\n 2009          137           21.74421      16.6          2.566111      0 \r\n 2009          138           20.42516      20.92         9.59          0 \r\n 2009          139           26.66287      28.38         10.54         0 \r\n 2009          140           27.53043      28.38         13.11         0 \r\n 2009          141           24.99296      29.26         12.56         0 \r\n 2009          142           25.18789      29.04         12.36         0 \r\n 2009          143           20.26504      30.87         13.97         6.604 \r\n 2009          144           23.22919      27.71         14.04         0 \r\n 2009          145           8.062066      19.7          13.29         6.096 \r\n 2009          146           8.429965      24.9          16.01         50.8 \r\n 2009          147           5.854546      19.18         13.04         0.508 \r\n 2009          148           9.830935      19.04         11.14         0 \r\n 2009          149           25.83277      25.76         10.4          0 \r\n 2009          150           24.07264      28.54         8.44          0 \r\n 2009          151           26.01695      26.71         7.43          0 \r\n 2009          152           13.55352      27.8          15.79         22.606 \r\n 2009          153           5.270334      15.85         11.95         8.89 \r\n 2009          154           24.872        21.25         10.81         0 \r\n 2009          155           26.96567      23.68         9.59          0 \r\n 2009          156           25.38123      27.12         10.27         0 \r\n 2009          157           13.82582      26.31         13.45         7.366 \r\n 2009          158           15.15298      25.96722      16.17222      22.9362 \r\n 2009          159           16.69437      22.31833      11.42611      6.4516 \r\n 2009          160           17.91057      19.92444      8.772223      0 \r\n 2009          161           14.4584       22.89556      13.26111      0 \r\n 2009          162           23.01782      24.70333      14.90444      6.2484 \r\n 2009          163           18.11961      24.36167      14.295        4.6482 \r\n 2009          164           10.14662      20.49333      12.08889      0 \r\n 2009          165           16.80922      23.92222      10.71833      0 \r\n 2009          166           14.71546      25.00222      13.52944      0 \r\n 2009          167           6.700383      23.62         16.14         18.034 \r\n 2009          168           23.42463      29.87         22.28         0 \r\n 2009          169           17.94438      31.55         18.36         27.178 \r\n 2009          170           15.35541      31.22         19.79         17.272 \r\n 2009          171           25.32257      30.54         19.31         0.254 \r\n 2009          172           15.16231      29.23         20.47889      29.464 \r\n 2009          173           26.27376      34.12         20.79         0.254 \r\n 2009          174           24.49996      35.53         20.59         2.54 \r\n 2009          175           24.64276      31.48         18.7          0 \r\n 2009          176           23.71403      33.1          22.01         0 \r\n 2009          177           24.04683      32.09         18.7          0 \r\n 2009          178           20.97586      34.59         19.05         6.858 \r\n 2009          179           27.91385      28.07         17.36         0 \r\n 2009          180           27.86046      28.34         15.21         0 \r\n 2009          181           14.8806       21.87         14.26         0 \r\n 2009          182           12.61919      21.94         14.73         0 \r\n 2009          183           18.00555      24.56         14.53         0 \r\n 2009          184           18.6706       28.45         12.5          0 \r\n 2009          185           3.975051      19.79         15.94         36.576 \r\n 2009          186           25.5242       28.39         14.19         0 \r\n 2009          187           24.82995      29.13         14.74         0 \r\n 2009          188           18.36554      29.13         15.53         5.588 \r\n 2009          189           12.12498      23.62         15.53         0.508 \r\n 2009          190           13.89808      25.72         15.47         0 \r\n 2009          191           13.60147      27.8          18.71         28.702 \r\n 2009          192           25.57863      28.95         17.16         0 \r\n 2009          193           17.16762      26.44         15.13         0 \r\n 2009          194           22.26135      28.93         14.4          0 \r\n 2009          195           14.92203      27.53         17.3          0 \r\n 2009          196           25.385        29.28         18.84         1.27 \r\n 2009          197           20.04923      27.66         14.46         0 \r\n 2009          198           16.81968      20.19         11.83         0 \r\n 2009          199           13.04308      19.93         11.35         0 \r\n 2009          200           18.67031      24.17         10.48         0 \r\n 2009          201           23.17459      26.24         8.73          0 \r\n 2009          202           2.71437       20.4          14.8          38.1 \r\n 2009          203           14.62898      25.17         15.53         0.508 \r\n 2009          204           24.82484      28.65         12.77         0 \r\n 2009          205           23.97373      29.81         13.51         14.986 \r\n 2009          206           25.06764      26.98         16.08         0 \r\n 2009          207           24.06457      27.39         15.28         0 \r\n 2009          208           22.14277      29.13         15.88         0 \r\n 2009          209           17.08227      28.14         14.8          0 \r\n 2009          210           21.77345      25.63         12.24         0 \r\n 2009          211           17.71719      26.12         14.33         0 \r\n 2009          212           24.95476      26.71         12.38         0 \r\n 2009          213           15.18884      24.84         13.79         7.366 \r\n 2009          214           24.90534      26.64         11.83         0 \r\n 2009          215           21.08062      29.21         19.38         0 \r\n 2009          216           17.37326      29.22         16.14         0 \r\n 2009          217           20.2206       26.17         12.16         0 \r\n 2009          218           20.51152      27.32         12.97         0 \r\n 2009          219           5.87534       25.65         15.67         33.02 \r\n 2009          220           19.89714      32.44         23.57         0 \r\n 2009          221           18.88206      31.5          18.84         7.112 \r\n 2009          222           17.13879      27.8          18.45         0 \r\n 2009          223           23.17342      28.46         17.03         0 \r\n 2009          224           22.08457      29.47         13.24         0 \r\n 2009          225           21.26928      29.27         18.37         5.334 \r\n 2009          226           22.87242      30.21         17.09         0 \r\n 2009          227           19.75563      29.67         15.01         0 \r\n 2009          228           8.154699      26.87         21.01         15.24 \r\n 2009          229           9.822777      25.38         18.98         12.192 \r\n 2009          230           18.10279      27.14         15.26         0 \r\n 2009          231           11.54675      26.72         13.72         16.764 \r\n 2009          232           20.56884      24.77         16.35         5.588 \r\n 2009          233           11.65708      20.81         13.85         1.524 \r\n 2009          234           21.7845       23.55         11.02         0 \r\n 2009          235           21.13531      25.83         9.6           0 \r\n 2009          236           22.01646      26.78         10.27         0 \r\n 2009          237           20.36269      29.48         14.33         0 \r\n 2009          238           6.898579      21.66667      16.33167      28.7528 \r\n 2009          239           3.530668      18.26333      15.35333      33.02 \r\n 2009          240           15.81054      23.97389      14.56167      5.1562 \r\n 2009          241           21.55216      19.85667      9.857778      0 \r\n 2009          242           18.69231      18.91278      7.100555      0 \r\n 2009          243           19.17979      20.86611      5.665         0 \r\n 2009          244           19.76568      20.63833      5.87          0 \r\n 2009          245           20.59754      22.335        7.397222      0 \r\n 2009          246           18.09325      22.99278      8.333889      0 \r\n 2009          247           17.56108      24.91278      9.423333      0 \r\n 2009          248           19.55099      24.84945      10.64667      0 \r\n 2009          249           16.73052      24.71944      9.83          0 \r\n 2009          250           17.26586      25.48611      12.485        0 \r\n 2009          251           18.78675      25.69889      12.31333      0 \r\n 2009          252           16.66199      26.43667      12.00167      0 \r\n 2009          253           15.06324      27.53         13.38         0 \r\n 2009          254           15.56523      28.2          14.67         0 \r\n 2009          255           17.17001      28.13         12.23         0 \r\n 2009          256           18.20224      26.78         11.56         0 \r\n 2009          257           18.25659      28.32         9             0 \r\n 2009          258           15.16403      28.79         11.43         0 \r\n 2009          259           16.44396      26.85         12.5          0 \r\n 2009          260           18.18463      24.08         7.51          0 \r\n 2009          261           17.36749      26.31         5.882778      0 \r\n 2009          262           13.85427      26.46         12.17         0 \r\n 2009          263           6.712057      21.69         10.95         0 \r\n 2009          264           9.518266      25.63         12.17         0 \r\n 2009          265           7.198279      22.14         14.94         0.508 \r\n 2009          266           10.96187      25.04         10.61         0 \r\n 2009          267           4.918501      23.09         15.2          0.762 \r\n 2009          268           12.11799      23.75         11.15         17.526 \r\n 2009          269           7.561576      22.01         9.93          0 \r\n 2009          270           13.53917      25.92         8.86          0 \r\n 2009          271           11.35801      16.55         9.93          0 \r\n 2009          272           16.47241      17.82         4.798889      0 \r\n 2009          273           13.75109      19.97         2.842222      0 \r\n 2009          274           1.254154      14.4          10            44.958 \r\n 2009          275           3.815097      10.48         7.1           8.128 \r\n 2009          276           5.143433      12.1          5.947222      1.524 \r\n 2009          277           14.95332      16.61         3.182222      0 \r\n 2009          278           15.8205       19.29         0.5361111     0 \r\n 2009          279           7.768935      18.17         7.5           11.684 \r\n 2009          280           15.29394      17.82         3.046111      0 \r\n 2009          281           1.836525      12.44         6.838889      1.524 \r\n 2009          282           3.168752      10.15         0.9511111     4.318 \r\n 2009          283           5.65999       4.932778     -3.388889      0.254 \r\n 2009          284           7.020459      5.532222     -2.436111      0 \r\n 2009          285           2.965577      7.57          2.692778      0 \r\n 2009          286           11.93599      10.33        -3.053889      1.27 \r\n 2009          287           4.287805      8.11          3.645         7.62 \r\n 2009          288           2.47856       6.347222      3.847778      4.064 \r\n 2009          289           8.297458      10.48         0.4011111     0 \r\n 2009          290           10.58079      11.55        -1.823889      0 \r\n 2009          291           13.65825      14.92        -2.107222      0 \r\n 2009          292           12.5387       20.18         5.955         0 \r\n 2009          293           6.790004      21.06         7.3           0 \r\n 2009          294           10.80832      23.29         13.99         0.254 \r\n 2009          295           6.540387      15.01         7.64          73.152 \r\n 2009          296           2.272456      10.01         3.847778      15.24 \r\n 2009          297           12.77476      13.51         2.428889      0 \r\n 2009          298           9.79876       19.18         6.362778      10.414 \r\n 2009          299           3.555856      10.34         1.012778      6.096 \r\n 2009          300           10.42         13.97        -1.902778      0.762 \r\n 2009          301           2.413624      13.45         8.66          0 \r\n 2009          302           3.832879      15.62         10.27         36.576 \r\n 2009          303           5.252133      18.45         5.267778      6.096 \r\n 2009          304           10.12616      9.8          -1.63          0 \r\n 2009          305           6.770172      15.35        -1.896111      0 \r\n 2009          306           11.03651      14.92         1.148889      0 \r\n 2009          307           10.69568      11.68        -3.932778      0 \r\n 2009          308           10.691        11.89        -1.223889      0 \r\n 2009          309           11.20279      14.92        -3.927222      0 \r\n 2009          310           9.924867      21.47         8.79          0 \r\n 2009          311           10.62272      23.75         6.083889      0 \r\n 2009          312           9.780727      23.69         4.256111      0 \r\n 2009          313           5.757602      19.65         7.96          0 \r\n 2009          314           8.325449      16.2          0.54          4.826 \r\n 2009          315           10.54481      15.66        -2.102778      0 \r\n 2009          316           7.579484      12.7         -3.727222      0 \r\n 2009          317           5.441585      14.6          3.591111      0 \r\n 2009          318           3.028505      12.91         3.78          0.762 \r\n 2009          319           3.605771      7.16          1.617778      0 \r\n 2009          320           2.8           7.03          3.522222      24.892 \r\n 2009          321           1.9           6.091111      4.527778      14.986 \r\n 2009          322           2.349693      8.45          3.983889      0 \r\n 2009          323           4.384372      9.27          3.181111      0 \r\n 2009          324           8.398417      12.29        -0.2727778     0 \r\n 2009          325           4.837332      12.5         -1.697778      0 \r\n 2009          326           5.615597      17.84         3.986111      0 \r\n 2009          327           7.957089      14.92         1.822222      0 \r\n 2009          328           5.128266      10            1.142222      0 \r\n 2009          329           2.299443      8.11          1.686111      0 \r\n 2009          330           1.485362      2.911111     -2.177222      0 \r\n 2009          331           7.964369      8.37         -4.947778      0 \r\n 2009          332           8.643349      16.42        -4.2           0 \r\n 2009          333           5.70798       8.04         -1.158889      0 \r\n 2009          334           8.323691      7.42         -0.4161111     0 \r\n 2009          335           8.273609      14.79         0.7388889     0 \r\n 2009          336           2.903445      4.612222     -1.498889      0 \r\n 2009          337           6.373613      0.8022223    -6.105         0 \r\n 2009          338           4.940928     -4.001111     -9.02          0 \r\n 2009          339           8.16608       3.707222     -10.3          0 \r\n 2009          340           4.776036      3.916111     -4.807222      0 \r\n 2009          341           1.495989     -1.566111     -3.865         1.27 \r\n 2009          342           1.604459     -0.2061111    -4.068889      4.57 \r\n 2009          343           1.71293      -0.4111111    -17.03         15.24 \r\n 2009          344           6.827326     -9.98         -19.14         2.29 \r\n 2009          345           7.738475     -1.527778     -19.41         0 \r\n 2009          346           4.147474      2.231111     -16.42         0 \r\n 2009          347           3.915471      3.167778     -0.4138889     2.03 \r\n 2009          348           6.004061      1.415        -11.74         0.51 \r\n 2009          349           8.092651     -11.6         -17.1          0 \r\n 2009          350           7.201752     -1.917778     -17.16         0 \r\n 2009          351           5.311881      6.622778     -6.643889      0 \r\n 2009          352           3.242767     -0.1427778    -3.462222      0 \r\n 2009          353           2.484083     -1.972778     -3.596111      0.25 \r\n 2009          354           1.88326      -3.128889     -4.41          0 \r\n 2009          355           2.662907     -2.24         -4.273889      2.54 \r\n 2009          356           2.434293      0.7338889    -2.31          0 \r\n 2009          357           2.2           1.346111     -1.02          0.25 \r\n 2009          358           3.45          3.318889      0.8022223     12.95 \r\n 2009          359           1.632722      5.615        -8.82          21.08 \r\n 2009          360           2.131581     -4.75         -12.68         5.84 \r\n 2009          361           2.489773     -3.723889     -11.05         4.83 \r\n 2009          362           5.050883     -2.721111     -13.5          0.76 \r\n 2009          363           7.40409      -3.887778     -19.48         0 \r\n 2009          364           3.239546     -0.2861111    -9.42          0 \r\n 2009          365           8.708619      0            -15.88         3.3 \r\n 2010          1             7.074935     -13.1         -19.88         0 \r\n 2010          2             8.862675     -14.66        -25.06         0 \r\n 2010          3             8.750125     -12.09        -25.67         0 \r\n 2010          4             8.809161     -14.6         -21.45         0 \r\n 2010          5             8.544271     -11.61        -20.91         0 \r\n 2010          6             5.241924     -8.76         -21.04         0 \r\n 2010          7             6.474321     -7.94         -13.77         9.14 \r\n 2010          8             6.704567     -13.57        -21.52         3.05 \r\n 2010          9             9.106769     -13.17        -25.47         0 \r\n 2010          10            8.733766     -6.575        -28.53         0 \r\n 2010          11            8.363272     -4.966111     -10.04         0 \r\n 2010          12            7.139996     -4.947222     -10.11         0 \r\n 2010          13            9.07836       4.852222     -10.85         0 \r\n 2010          14            3.896727      4.052222     -4.483889      0 \r\n 2010          15            2.613996     -2.925        -4.41          0 \r\n 2010          16            5.043686     -1.306111     -4.206111      0 \r\n 2010          17            3.5946        0.5288889    -4.072222      0 \r\n 2010          18            2.744202     -0.7538889    -5.09          0 \r\n 2010          19            4.126303     -2.187778     -5.492778      0 \r\n 2010          20            1.203862     -0.2772222    -5.356111      0 \r\n 2010          21            1.916732     -0.075        -1.027222      18.03 \r\n 2010          22            2.738554      0.87         -1.156111      0 \r\n 2010          23            2.738554      0            -1.156111      0.76 \r\n 2010          24            4.096429      2.978889     -1.028889      25.4 \r\n 2010          25            3.675058     -0.4127778    -10.31         0 \r\n 2010          26            8.724058     -9.37         -12.28         1.78 \r\n 2010          27            4.399225     -5.09         -12.62         0 \r\n 2010          28            10.15905     -10.24        -16.22         0 \r\n 2010          29            9.962606     -7.28         -15.81         0 \r\n 2010          30            10.00072     -3.748889     -16.01         0 \r\n 2010          31            10.60933     -3.277222     -14.45         0 \r\n 2010          32            6.357044      2.771111     -9.36          0 \r\n 2010          33            6.847744     -0.9522222    -11.6          2.54 \r\n 2010          34            12.24059      1.467778     -15.54         0 \r\n 2010          35            4.262492      0.53         -8.61          0 \r\n 2010          36            3.765935      1.142222     -1.632778      0 \r\n 2010          37            9.749682     -7.388889E-02               -6.372222      1.27 \r\n 2010          38            7.678017     -0.69         -9.49          0 \r\n 2010          39            6.011655     -1.577778     -9.37          1.52 \r\n 2010          40            9.006813     -4.401111     -15.27         6.35 \r\n 2010          41            14.31978     -6.393889     -16.08         1.78 \r\n 2010          42            12.8794       2.227222     -22.4          0 \r\n 2010          43            12.49706      1.193889     -14.66         0.76 \r\n 2010          44            11.14877     -0.905        -18.66         0 \r\n 2010          45            11.32132     -2.267778     -12.76         0 \r\n 2010          46            11.55002     -2.732778     -12.55         0 \r\n 2010          47            15.47034     -2.733889     -9.77          0.76 \r\n 2010          48            13.82281     -2.257778     -10.04         0 \r\n 2010          49            15.42001     -0.5027778    -12.82         0 \r\n 2010          50            8.567033      1.876111     -14.65         0 \r\n 2010          51            4.843064      2.842778     -1.565         3.3 \r\n 2010          52            4.531607      0.5361111    -2.312778      0 \r\n 2010          53            14.00033     -1.972778     -8.63          9.65 \r\n 2010          54            14.95776     -4.162222     -13.98         0 \r\n 2010          55            16.67931     -8.76         -17.3          0 \r\n 2010          56            16.96152      4.046111     -19.47         0 \r\n 2010          57            16.98461     -1.517222     -16.62         0 \r\n 2010          58            15.74966     -0.7661111    -12.28         0 \r\n 2010          59            16.93516      3.017222     -10.65         0 \r\n 2010          60            10.02194      3.561111     -4.611111      0 \r\n 2010          61            17.35122      4.455        -8.54          0 \r\n 2010          62            17.7592       4.372778     -9.35          0 \r\n 2010          63            17.78581      7.27         -8.27          0 \r\n 2010          64            18.20994      8.01         -7.66          0 \r\n 2010          65            17.30197      9.3          -6.098889      0 \r\n 2010          66            6.462104      7.37          1.142222      3.3 \r\n 2010          67            3.170008      3.507778      0.53          1.78 \r\n 2010          68            3.735977      11.49         2.23          0.51 \r\n 2010          69            8.741422      14.45         7.43          8.89 \r\n 2010          70            11.83499      14.65         5.267778      4.06 \r\n 2010          71            4.203247      8.8           4.323889      0 \r\n 2010          72            2.95382       7.98          4.187778      36.07 \r\n 2010          73            9.232289      14.33         5.878889      5.84 \r\n 2010          74            19.05143      17.62         2.772222      0 \r\n 2010          75            5.488697      8.51          4.187778      0 \r\n 2010          76            13.00563      16.21         2.026111      0 \r\n 2010          77            18.66989      17.28         0.265         0 \r\n 2010          78            15.7013       14.65        -0.4877778     0 \r\n 2010          79            8.515779      0.8022223    -1.502778      10.41 \r\n 2010          80            17.43477      9.92         -0.3472222     1.27 \r\n 2010          81            20.37311      15.19        -2.855         0 \r\n 2010          82            19.40497      19.17        -3.457222      0 \r\n 2010          83            5.762247      12.1          6.217778      0 \r\n 2010          84            16.43923      12.16        -2.177778      3.56 \r\n 2010          85            20.246        10.8         -5.146111      0 \r\n 2010          86            12.40447      13.11         1.277778      0 \r\n 2010          87            16.21915      13.51         1.621111      3.81 \r\n 2010          88            20.78289      15.58        -2.572222      0 \r\n 2010          89            19.51962      23.42         1.482222      0 \r\n 2010          90            19.7402       26.32         10.82         0 \r\n 2010          91            19.86618      30.03         8.32          0 \r\n 2010          92            5.588192      23.25         11.56         0 \r\n 2010          93            21.43128      16.62         6.212778      0 \r\n 2010          94            9.994823      22.09         6.431111      0 \r\n 2010          95            14.42409      21.06         3.38          0 \r\n 2010          96            16.62203      25.99         12.7          0 \r\n 2010          97            3.969193      15.76         4.595         0 \r\n 2010          98            18.0684       9.86          0.34          0 \r\n 2010          99            23.74621      19.64        -3.048889      0 \r\n 2010          100           21.86814      24.57         4.731111      0 \r\n 2010          101           18.20584      21.47         7.36          0 \r\n 2010          102           21.4184       27.8          7.98          0 \r\n 2010          103           21.34677      29.41         8.52          0 \r\n 2010          104           23.12296      29.02         8.79          0 \r\n 2010          105           21.89901      28.47         11.43         0.254 \r\n 2010          106           21.71479      18.91         6.287222      0 \r\n 2010          107           25.10429      18.64         1.083889      0 \r\n 2010          108           22.87987      20.04         1.695         0 \r\n 2010          109           20.20462      18.43         3.658889      0 \r\n 2010          110           24.06511      21.26         2.707222      0 \r\n 2010          111           18.80541      24.23         3.795         0 \r\n 2010          112           19.77363      24.04         3.586111      0 \r\n 2010          113           2.083004      14.26         7.77          18.542 \r\n 2010          114           4.508888      19.52         12.57         37.592 \r\n 2010          115           4.620935      13.58         9.32          6.35 \r\n 2010          116           14.70467      16.88         8.73          1.016 \r\n 2010          117           24.72869      16.35         5.342778      0 \r\n 2010          118           24.30967      20.65         1.622222      0 \r\n 2010          119           24.29741      28.01         11.29         0 \r\n 2010          120           9.950347      24.91         14.87         27.432 \r\n 2010          121           17.4646       19.39         12.11         3.302 \r\n 2010          122           17.41146      21.4          10.54         0 \r\n 2010          123           25.56022      21            9             0 \r\n 2010          124           26.70375      27.55         7.64          0 \r\n 2010          125           24.47397      22.21         9.19          0.762 \r\n 2010          126           24.82112      21.93         4.666111      16.51 \r\n 2010          127           6.811133      13.04         7.77          0 \r\n 2010          128           14.46815      10.2          3.455         0 \r\n 2010          129           27.40604      16.4          0.68          0 \r\n 2010          130           8.993174      15.26         7.23          14.986 \r\n 2010          131           5.695972      12.9          7.5           13.716 \r\n 2010          132           2.823698      11.56         7.43          19.05 \r\n 2010          133           11.44663      20.2          7.84          20.828 \r\n 2010          134           23.81324      18.3          8.45          0 \r\n 2010          135           14.41677      20.74         6.287222      0 \r\n 2010          136           8.482014      16.48         10.34         1.27 \r\n 2010          137           15.18687      20.88         9.93          6.604 \r\n 2010          138           16.65019      23.03         10.28         0 \r\n 2010          139           27.6154       25.85         9.2           0 \r\n 2010          140           10.24674      19.86         12.17         4.826 \r\n 2010          141           7.58396       19.72         13.92         1.016 \r\n 2010          142           25.98231      28.2          11.7          0 \r\n 2010          143           22.16202      32.86         20.94         0 \r\n 2010          144           27.45909      34.4          20.13         0 \r\n 2010          145           15.36624      31.43         18.66         10.16 \r\n 2010          146           22.96112      29.09         17.57         26.67 \r\n 2010          147           26.68664      29.56         16.5          0 \r\n 2010          148           29.9233       29.15         12.85         0.254 \r\n 2010          149           29.13939      32.86         13.53         0 \r\n 2010          150           24.89668      33.86         17.24         0 \r\n 2010          151           21.6473       28.68         16.7          4.318 \r\n 2010          152           26.93546      31.3          13.39         23.876 \r\n 2010          153           19.41414      27.33         17.5          3.302 \r\n 2010          154           23.69964      26.26         16.35         0 \r\n 2010          155           17.13997      30.71         17.64         4.572 \r\n 2010          156           11.9595       28.55         15.74         6.096 \r\n 2010          157           26.43707      27.68         12.65         0 \r\n 2010          158           13.44959      25.38         14.13         0 \r\n 2010          159           9.88378       25.52         16.01         18.288 \r\n 2010          160           29.00152      28.82         16.16         0.254 \r\n 2010          161           14.78877      27.8          14.4          10.16 \r\n 2010          162           20.44081      31.37         19.19         0 \r\n 2010          163           8.127253      25.58         20.6          11.938 \r\n 2010          164           12.3487       26.73         19.32         16.764 \r\n 2010          165           12.84195      27.68         18.72         33.274 \r\n 2010          166           12.36665      24.78         18.25         20.32 \r\n 2010          167           30.01501      28.2          15.62         0 \r\n 2010          168           27.93339      31.7          16.22         0 \r\n 2010          169           17.41854      27.24944      16.805        0 \r\n 2010          170           24.18369      27.53278      18.16         0 \r\n 2010          171           18.80039      28.28389      18.50945      0 \r\n 2010          172           18.50575      29.94333      18.08889      0 \r\n 2010          173           20.46524      30.57611      17.47278      0 \r\n 2010          174           16.40697      32.38         18.72         36.322 \r\n 2010          175           27.89887      29.29         18.11         0 \r\n 2010          176           28.21271      30.02         16.64         0 \r\n 2010          177           24.46996      32.58         19.03         16.51 \r\n 2010          178           20.30947      29.08         21.01         3.048 \r\n 2010          179           29.35093      27.62         16.03         0 \r\n 2010          180           28.1123       26.73         13.66         0 \r\n 2010          181           29.43984      27.66         12.04         0 \r\n 2010          182           29.01709      28.61         14.13         0 \r\n 2010          183           30.09727      29.49         11.22         0 \r\n 2010          184           28.7919       33.25         12.99         0 \r\n 2010          185           11.51483      28.77         21.21         0 \r\n 2010          186           11.64257      29.36         21.49         5.08 \r\n 2010          187           17.88459      31.1          21.75         15.24 \r\n 2010          188           11.83143      29.21         21.21         28.194 \r\n 2010          189           19.82681      29.22         20.47         0 \r\n 2010          190           28.83659      30.31         17.77         0 \r\n 2010          191           28.67889      30.28         17.04         0 \r\n 2010          192           13.88858      28.3          17.71         0 \r\n 2010          193           16.95235      29.69         17.3          34.29 \r\n 2010          194           25.86499      31.16         17.91         24.384 \r\n 2010          195           25.87114      33.93         20.81         0 \r\n 2010          196           27.44712      29.76         18.04         0 \r\n 2010          197           28.05519      30.69         16.64         0 \r\n 2010          198           28.1633       34.13         19.93         0 \r\n 2010          199           23.17229      31.18         19.8          4.826 \r\n 2010          200           6.983514      25.34         18.11         7.112 \r\n 2010          201           20.95406      29.49         19.46         5.842 \r\n 2010          202           19.06264      31.98         20.4          0 \r\n 2010          203           22.75602      32.52         23.45         0 \r\n 2010          204           15.94874      32.72         20.87         14.224 \r\n 2010          205           14.12213      30.64         20.73         16.002 \r\n 2010          206           27.33646      31.37         18.45         0 \r\n 2010          207           24.57719      30.42         18.32         0 \r\n 2010          208           24.40607      32.38         19            0 \r\n 2010          209           20.9495       32.52         18.72         1.016 \r\n 2010          210           25.52508      29.94         15.82         0 \r\n 2010          211           5.193683      25.48         19.13         76.962 \r\n 2010          212           24.25452      30.5          20.67         0 \r\n 2010          213           23.70588      31.96         18.86         0 \r\n 2010          214           22.18114      33.33333      20            0 \r\n 2010          215           23.04309      33.31         21.74         0 \r\n 2010          216           6.866111      26.95         20.79         15.24 \r\n 2010          217           25.33563      28.34         17.05         0 \r\n 2010          218           24.6551       28.75         14.8          0 \r\n 2010          219           14.22493      29.49         17.71         0 \r\n 2010          220           20.38637      33.74         19.87         0 \r\n 2010          221           18.0722       32.78         21.62         14.224 \r\n 2010          222           21.29907      33.98         21.15         33.274 \r\n 2010          223           23.46609      32.24         19.72         19.304 \r\n 2010          224           24.05306      34.46         22.23         0 \r\n 2010          225           14.53233      32.59         21.08         30.226 \r\n 2010          226           23.97072      32.38         20            0.254 \r\n 2010          227           25.15329      27.82         18.25         0 \r\n 2010          228           25.33634      28.41         16.37         0 \r\n 2010          229           3.722547      20.89         16.7          10.668 \r\n 2010          230           22.67138      29.69         16.64         0 \r\n 2010          231           22.60226      32.11         16.83         0 \r\n 2010          232           13.29976      31.59         20.48         3.81 \r\n 2010          233           10.34214      28.88         19.53         0 \r\n 2010          234           22.7841       32.59         19.13         0 \r\n 2010          235           24.03946      30.82         15.62         0 \r\n 2010          236           16.93482      28.21         12.72         0 \r\n 2010          237           23.98302      27.07         11.44         0 \r\n 2010          238           23.71709      26.44         10.42         0 \r\n 2010          239           23.24325      29.29         13.74         0 \r\n 2010          240           23.81964      31.58         11.22         0 \r\n 2010          241           20.03789      33.74         15.55         0 \r\n 2010          242           13.64976      30.31         19.81         0 \r\n 2010          243           12.07544      30.33         19.7          10.414 \r\n 2010          244           11.54943      27.55         18.52         17.526 \r\n 2010          245           15.36821      29.69         15.76         8.382 \r\n 2010          246           20.22165      22.62         12.37         0.254 \r\n 2010          247           21.9993       21.87         9.27          0 \r\n 2010          248           19.16586      27.07         9.13          0.508 \r\n 2010          249           13.98452      30.64         15.94         5.08 \r\n 2010          250           21.64145      24.25         11.15         0 \r\n 2010          251           21.35225      24.7          7.86          0 \r\n 2010          252           19.5697       25.31         12.17         0 \r\n 2010          253           12.49397      23.9          12.92         15.24 \r\n 2010          254           18.73599      24.84         13.53         0 \r\n 2010          255           19.91266      30.24         11.43         0 \r\n 2010          256           20.00421      30.56         16.57         0 \r\n 2010          257           19.50598      28            12.78         0 \r\n 2010          258           13.55302      28.43         12.58         0 \r\n 2010          259           5.317989      19.54         11.96         0 \r\n 2010          260           18.86461      27.06         7.51          0 \r\n 2010          261           4.420312      19.67         12.31         15.748 \r\n 2010          262           2.8183        16.29         10.68         25.4 \r\n 2010          263           16.95687      32.65         14.67         0.508 \r\n 2010          264           11.92992      31.32         17.09         29.718 \r\n 2010          265           10.59322      26.73         16.69         0 \r\n 2010          266           11.4404       29.97         20.35         10.16 \r\n 2010          267           16.53944      21.74         11.09         3.556 \r\n 2010          268           2.911646      12.51         8.05          29.21 \r\n 2010          269           16.81545      19.45         5.955         0.762 \r\n 2010          270           17.7807       20.45         3.795         0 \r\n 2010          271           15.09796      23.89         7.38          0 \r\n 2010          272           17.64012      26.06         6.907222      0 \r\n 2010          273           17.85924      25.18         6.975         0 \r\n 2010          274           17.35799      24.97         4.271111      0 \r\n 2010          275           14.51731      15.27         3.522222      1.27 \r\n 2010          276           17.0375       16.2          0.8088889     0 \r\n 2010          277           17.09528      18.56        -0.34          0 \r\n 2010          278           16.92863      21.47         0.8838889     0 \r\n 2010          279           15.71176      27.6          2.367222      0 \r\n 2010          280           16.94277      25.11         5.557222      0 \r\n 2010          281           16.09602      28.27         3.115         0 \r\n 2010          282           15.51921      31.84         8.59          0 \r\n 2010          283           13.72272      29.56         6.975         0 \r\n 2010          284           12.80584      27            8.32          0 \r\n 2010          285           14.02975      28.47         8.66          0 \r\n 2010          286           14.34141      20.54         7.52          0 \r\n 2010          287           14.61601      21.81         1.905         0 \r\n 2010          288           14.61705      19.18         2.912222      0 \r\n 2010          289           12.22121      25.32         1.087778      0 \r\n 2010          290           13.62248      20.24         3.052222      0 \r\n 2010          291           10.18591      17.77         3.322222      0 \r\n 2010          292           12.56643      18.09        -0.2722222     0 \r\n 2010          293           13.87824      22.28         6.091111      0 \r\n 2010          294           13.85695      15.74         0.7477778     0 \r\n 2010          295           10.6541       22.08        -1.02          0 \r\n 2010          296           7.897384      22.01         12.17         31.75 \r\n 2010          297           2.4258        19            13.52         4.318 \r\n 2010          298           6.83879       22.16         10.35         2.286 \r\n 2010          299           3.354606      18.59         9.86          31.75 \r\n 2010          300           12.17875      15.61         4.798889      0 \r\n 2010          301           5.396272      7.52         -2.232222      0 \r\n 2010          302           13.19876      14.26        -3.921111      0 \r\n 2010          303           10.74752      19.32         2.833889      0 \r\n 2010          304           11.90607      12.56        -1.087778      0 \r\n 2010          305           11.78675      13.84        -0.2722222     0 \r\n 2010          306           12.5389       13.97        -3.048889      0 \r\n 2010          307           10.93074      17.64        -1.897222      0 \r\n 2010          308           9.179403      11.09        -2.572222      0 \r\n 2010          309           12.37355      7.63         -4.74          0 \r\n 2010          310           11.8275       10.94        -6.092778      0 \r\n 2010          311           10.93831      19.52         2.103889      0 \r\n 2010          312           11.31546      20.39         3.318889      0 \r\n 2010          313           10.92388      23.48         3.522778      0 \r\n 2010          314           9.78441       22.01         3.251111      0 \r\n 2010          315           3.97388       13.19         3.987778      0 \r\n 2010          316           6.469259      14.19         6.826111      0 \r\n 2010          317           1.801296      11.64         2.911111      0 \r\n 2010          318           7.685925      8.52         -0.6088889     0 \r\n 2010          319           7.961441      12.56        -3.451111      0 \r\n 2010          320           8.703808      13.98        -2.707778      0 \r\n 2010          321           3.143607      5.751111     -0.1438889     0 \r\n 2010          322           3.392973      2.502778     -2.163889      0 \r\n 2010          323           8.456742      10.41        -1.96          0 \r\n 2010          324           7.21284       6.618889     -3.525         0 \r\n 2010          325           2.096268      14.34         4.596111      0 \r\n 2010          326           5.437024      8.888889     -1.905         0 \r\n 2010          327           9.844324      0.3938889    -6.237222      0 \r\n 2010          328           7.180602      2.911111     -5.678889      0 \r\n 2010          329           4.516879      2.842778     -7.45          0 \r\n 2010          330           5.8112        1.761111     -8.4           0 \r\n 2010          331           9.307643      3.577222     -5.895         0 \r\n 2010          332           8.880331      12.43        -7.04          0 \r\n 2010          333           2.426176      10.09         1.467222      0 \r\n 2010          334           2.164048     -3.321111     -8.11          0 \r\n 2010          335           5.256401     -3.661111     -7.6           0 \r\n 2010          336           3.72104       1.145        -5.902222      0 \r\n 2010          337           2.473539     -1.97         -10.03         0 \r\n 2010          338           2.546633     -1.691111     -6.377778      0.76 \r\n 2010          339           8.913677     -4.217222     -11.4          0.25 \r\n 2010          340           2.885412     -7.19         -12.82         0 \r\n 2010          341           7.83931      -4.887778     -13.77         0 \r\n 2010          342           8.524272     -3.607222     -14.17         0 \r\n 2010          343           2.662572      2.232778     -12.54         0 \r\n 2010          344           7.687974      8.38         -4.132222      0 \r\n 2010          345           7.432667      3.387222     -7.8           0.51 \r\n 2010          346           7.177359     -3.172222     -15.33         13.21 \r\n 2010          347           8.747573     -10.05        -18.39         0 \r\n 2010          348           4.185966     -8.47         -19.27         0 \r\n 2010          349           2.590858     -4.41         -9.15          0 \r\n 2010          350           1.297877     -6.038889     -8.21          7.62 \r\n 2010          351           3.622926     -6.735        -16.42         1.02 \r\n 2010          352           6.824146     -5.645        -18.59         0 \r\n 2010          353           6.911926     -3.048889     -20.57         0 \r\n 2010          354           2.593955      0.4688889    -6.916111      0 \r\n 2010          355           5.840195      6.027222     -8.41          0 \r\n 2010          356           3.199505      6.111111E-02               -7.59          0 \r\n 2010          357           4.385669     -0.6211111    -7.26          0 \r\n 2010          358           2.6          -1.361111     -5.975         1.78 \r\n 2010          359           4.9          -3.061111     -6.791111      8.13 \r\n 2010          360           2.563662     -5.306111     -12.21         0.25 \r\n 2010          361           2.999049     -6.863889     -12.82         0 \r\n 2010          362           4.292491     -2.722222E-02               -13.71         0 \r\n 2010          363           3.82723       1.557778     -15.74         0 \r\n 2010          364           1.786401      8.74          1.351111      0 \r\n 2010          365           2.956707      11.49        -4.752778      0 \r\n 2011          1             5.568653     -4.547778     -11.19         1.52 \r\n 2011          2             8.504482     -0.2822222    -12.95         0 \r\n 2011          3             5.751494      1.413889     -6.978889      0 \r\n 2011          4             8.481386     -1.823889     -12.61         0 \r\n 2011          5             6.016048      3.11         -13.49         0 \r\n 2011          6             4.192326     -1.565        -5.968889      0 \r\n 2011          7             2.84625      -5.357222     -12.14         0 \r\n 2011          8             9.110953     -5.293889     -14.99         0 \r\n 2011          9             6.197634     -4.001111     -18.11         0 \r\n 2011          10            2.974908     -1.361111     -6.236111      0 \r\n 2011          11            5.679403     -3.468889     -9.9           2.54 \r\n 2011          12            8.373899     -7.34         -15.88         2.03 \r\n 2011          13            5.410038     -8.74         -19.41         0 \r\n 2011          14            5.477149     -5.356111     -16.96         0 \r\n 2011          15            6.093452     -4.397778     -16.15         0 \r\n 2011          16            5.558569     -6.167222     -19.2          0 \r\n 2011          17            1.586071      0.3338889    -6.51          1.78 \r\n 2011          18            3.400713      0.2722222    -9.36          11.18 \r\n 2011          19            7.491494     -8.63         -12.41         1.78 \r\n 2011          20            8.490214     -7.54         -20.29         0 \r\n 2011          21            7.568438     -12.96        -24.17         0 \r\n 2011          22            5.762372     -6.518889     -13.23         0 \r\n 2011          23            6.930127     -5.908889     -15.81         0 \r\n 2011          24            5.457108     -5.152222     -8.54          0 \r\n 2011          25            4.411526     -4.267222     -6.032778      0 \r\n 2011          26            4.435165     -5.362222     -8.41          0 \r\n 2011          27            6.80946      -1.958889     -9.15          0 \r\n 2011          28            5.467777      1.55         -5.083889      0 \r\n 2011          29            8.788743      6.271111     -5.22          0 \r\n 2011          30            3.079215     -1.632778     -6.037778      0 \r\n 2011          31            2.93516      -2.912778     -6.786111      0 \r\n 2011          32            2.520818     -6.44         -8.82          3.05 \r\n 2011          33            10.66748     -8.68         -19.41         27.94 \r\n 2011          34            12.8645      -8.83         -24.85         0 \r\n 2011          35            12.89325     -2.39         -15.94         0 \r\n 2011          36            12.04005     -0.3538889    -19.61         0 \r\n 2011          37            5.018875     -0.4861111    -8.13          1.02 \r\n 2011          38            9.296388     -1.905        -18.53         0 \r\n 2011          39            12.31832     -14.74        -22.61         0 \r\n 2011          40            11.47044     -12.23        -22.33         0 \r\n 2011          41            13.8659      -5.646111     -28.19         0 \r\n 2011          42            8.195075      1.422222     -11.12         0 \r\n 2011          43            10.86606      5.062222     -5.287778      0 \r\n 2011          44            13.1291       8.1          -0.6           0 \r\n 2011          45            13.84172      4.843889     -3.182222      0 \r\n 2011          46            7.767512      4.658889     -3.376111      0 \r\n 2011          47            7.80521       8.5           0.5           0 \r\n 2011          48            5.976468      15.5          3.5           0 \r\n 2011          49            14.74483      16.5          1.5           0 \r\n 2011          50            11.72026      8            -1.5           0 \r\n 2011          51            2.415423      7.5          -0.5           17.78 \r\n 2011          52            1.711925      6.5          -0.5           2.54 \r\n 2011          53            4.135675      1            -3             0 \r\n 2011          54            3.899195      2            -2.5           0 \r\n 2011          55            3.215697      2.5          -1.5           3.05 \r\n 2011          56            14.38053      1.5          -5             5.08 \r\n 2011          57            4.882142     -2            -7.5           2.29 \r\n 2011          58            4.899422     -1            -7             0 \r\n 2011          59            12.49501      1            -6.5           7.11 \r\n 2011          60            15.46557      6.743889     -5.905         0 \r\n 2011          61            16.68638     -0.8583333    -11.43722      0 \r\n 2011          62            10.69836      7.232222     -3.837222      0 \r\n 2011          63            5.899649      7.863889     -0.8938889     0 \r\n 2011          64            3.9707       -0.4327778    -6.147222      12.45 \r\n 2011          65            15.31248      2.885556     -8.545555      0.76 \r\n 2011          66            3.927019      1.428333     -1.772222      0 \r\n 2011          67            6.969707      5.234445     -0.4083333     0 \r\n 2011          68            1.923552      1.775556      0.1716667     18.54 \r\n 2011          69            10.18411      2.468333     -3.973889      1.02 \r\n 2011          70            15.01282      10.16944     -5.255         0 \r\n 2011          71            14.3971       3.467222     -6.004445      0 \r\n 2011          72            9.289945      0.1527778    -7.771667      0 \r\n 2011          73            17.34481      7.89         -5.713889      0 \r\n 2011          74            17.47987      13.5         -3.456111      0 \r\n 2011          75            17.90346      18.43        -2.847222      0 \r\n 2011          76            5.143935      21.08         6.693889      0 \r\n 2011          77            11.01848      12.38        -0.2722222     0 \r\n 2011          78            16.19124      16           -4.336111      0 \r\n 2011          79            11.13789      23.98         6.897778      0.51 \r\n 2011          80            12.91852      16.89         7.98          8.89 \r\n 2011          81            7.535258      18.11         7.16          0.76 \r\n 2011          82            5.454346      10.97        -1.837222      11.18 \r\n 2011          83            17.96497      6.006111     -3.525         0 \r\n 2011          84            6.755696      4.12          6.777778E-02                0 \r\n 2011          85            16.44379      3.44         -2.981111      0 \r\n 2011          86            20.04772      5.6          -5.827222      0 \r\n 2011          87            20.00065      6.751111     -4.806111      0 \r\n 2011          88            16.55542      8.57         -2.097222      0 \r\n 2011          89            21.4153       10.59        -2.301111      0 \r\n 2011          90            17.47661      11.95        -4.602222      0 \r\n 2011          91            12.42447      13.99         2.777222      0 \r\n 2011          92            21.60697      17.02         1.626111      0 \r\n 2011          93            11.23726      29.38         9.61          0 \r\n 2011          94            8.588538      10.07         2.298889      0 \r\n 2011          95            20.47583      17.03        -0.7422222     0 \r\n 2011          96            16.52011      19.25         5.82          0 \r\n 2011          97            5.145358      14.41         0.9488889     0 \r\n 2011          98            5.906678      12.23         7.98          0 \r\n 2011          99            15.93008      27            8.73          0 \r\n 2011          100           16.37559      29.44         13.31         0 \r\n 2011          101           22.2408       20.54         7.57          0 \r\n 2011          102           24.21231      19.5          3.998889      0 \r\n 2011          103           23.14066      23.28         5.017778      0 \r\n 2011          104           16.3266       18.64         7.58          0 \r\n 2011          105           1.413815      10.83         6.691111      10.16 \r\n 2011          106           8.837193      10.02         0.3938889     14.478 \r\n 2011          107           18.83917      11.68         1.087778      6.604 \r\n 2011          108           8.021648      7.77          4.731111      4.572 \r\n 2011          109           1.483814      5.207222      1.346111      21.082 \r\n 2011          110           11.73076      9.61          1.482222      0 \r\n 2011          111           8.497035      11.42        -1.42          3.556 \r\n 2011          112           2.41149       9.68          6.295         13.716 \r\n 2011          113           19.41602      15.75         7.71          0 \r\n 2011          114           18.99423      16.48         3.247222      0 \r\n 2011          115           3.664012      12.51         6.965         8.89 \r\n 2011          116           8.19039       15.76         7.85          9.144 \r\n 2011          117           9.884533      10.16         4.733889      0 \r\n 2011          118           14.14192      15.08         4.263889      0 \r\n 2011          119           25.53951      21.47        -0.34          0 \r\n 2011          120           13.09224      24.44         9.32          0 \r\n 2011          121           20.6544       16.22         5.681111      0 \r\n 2011          122           25.45194      15.74         1.822222      0 \r\n 2011          123           12.84254      11.9         -1.012778      0 \r\n 2011          124           25.58382      18.17        -3.111111      0 \r\n 2011          125           8.397706      16.03         7.78          0.762 \r\n 2011          126           24.10955      22.62         5.55          0 \r\n 2011          127           24.74284      27.96         11.7          0 \r\n 2011          128           24.92497      26.19         10.08         0 \r\n 2011          129           17.14963      31.64         15.74         2.286 \r\n 2011          130           25.33906      34.87         16.5          0 \r\n 2011          131           17.13453      32.88         18.93         1.524 \r\n 2011          132           18.4155       30.31         15.76         0 \r\n 2011          133           8.031565      19.42         12.04         1.778 \r\n 2011          134           2.804242      12.31         9.34          20.828 \r\n 2011          135           13.48189      18.25         5.275         1.016 \r\n 2011          136           29.45728      18.03         1.352778      0 \r\n 2011          137           29.65259      20.33         0.8161111     0 \r\n 2011          138           26.70781      22.48         4.747222      0 \r\n 2011          139           21.57279      25.45         8.39          0 \r\n 2011          140           15.06725      28.61         14.34         0 \r\n 2011          141           19.2041       29.09         17.5          0 \r\n 2011          142           17.22716      29.17         13.79         26.162 \r\n 2011          143           20.83921      26.6          17.5          0 \r\n 2011          144           20.60804      29.97         15.35         0 \r\n 2011          145           12.56376      21.27         10.61         61.214 \r\n 2011          146           21.22434      19.32         7.31          1.778 \r\n 2011          147           20.52461      19.38         5.692222      1.27 \r\n 2011          148           12.21561      22.55         12.17         0.254 \r\n 2011          149           11.44265      27.14         12.45         24.13 \r\n 2011          150           27.10027      32.86         16.43         0 \r\n 2011          151           17.97994      29.38         16.89         0.254 \r\n 2011          152           27.85477      30.31         12.11         0 \r\n 2011          153           5.99107       21.49         15.96         21.59 \r\n 2011          154           25.58683      33.74         19            0 \r\n 2011          155           14.39627      31.65         19.47         1.27 \r\n 2011          156           22.10173      30.57         17.51         3.302 \r\n 2011          157           27.25089      35.09         19.67         0 \r\n 2011          158           27.60536      34.69         21.76         0 \r\n 2011          159           20.69088      34.01         21.47         3.81 \r\n 2011          160           5.183474      21.96         14.47         43.942 \r\n 2011          161           14.24004      23.97         11.83         26.416 \r\n 2011          162           9.144592      20.41         13.33         0.254 \r\n 2011          163           20.46737      23.02         10.9          0 \r\n 2011          164           19.14343      24.04         13.94         1.524 \r\n 2011          165           10.27072      24.04         13.93         36.322 \r\n 2011          166           16.56981      25.93         16.57         19.05 \r\n 2011          167           27.81343      29.63         14.21         0 \r\n 2011          168           11.83762      27.41         17.17         0 \r\n 2011          169           9.590314      25.33         17.09         0 \r\n 2011          170           19.95094      29.63         18.32         0 \r\n 2011          171           13.95799      29.29         19.13         9.652 \r\n 2011          172           22.02935      29.44         19.19         0 \r\n 2011          173           8.051606      20.96         17.09         1.27 \r\n 2011          174           10.25967      20.61         16.3          0.508 \r\n 2011          175           23.98658      24.31         14.47         0 \r\n 2011          176           6.498087      21.08         12.85         6.858 \r\n 2011          177           24.09591      28            15.01         3.302 \r\n 2011          178           21.73659      29.04         17.92         6.604 \r\n 2011          179           29.72887      27.28         13.53         0 \r\n 2011          180           28.69157      29.83         13.87         0 \r\n 2011          181           27.38269      34.55         18.73         0 \r\n 2011          182           26.53166      35.15         24.59         0 \r\n 2011          183           25.40726      32.04         19.81         0 \r\n 2011          184           15.70276      29.56         17.66         0 \r\n 2011          185           28.6899       31.91         17.59         0 \r\n 2011          186           22.25126      30.76         15.82         0 \r\n 2011          187           20.99933      32.52         17.85         0 \r\n 2011          188           17.34109      29.22         19.33         0 \r\n 2011          189           23.70274      32.92         17.85         0 \r\n 2011          190           26.8471       32.65         17.52         0 \r\n 2011          191           21.87337      35.27         20.08         0 \r\n 2011          192           17.73539      31.3          21.83         0.508 \r\n 2011          193           16.57701      30.83         19.33         0 \r\n 2011          194           20.04797      27.8          19.61         0 \r\n 2011          195           21.30259      31.03         15.76         0 \r\n 2011          196           24.1277       33.05         19.74         0 \r\n 2011          197           18.10944      32.86         22.1          0 \r\n 2011          198           25.42019      34.86         21.69         0 \r\n 2011          199           24.85857      36.08         25.54         0 \r\n 2011          200           25.61399      37.5          26.08         0 \r\n 2011          201           25.91586      36.56         25.4          0 \r\n 2011          202           20.61875      31.46056      21.83167      4.6228 \r\n 2011          203           19.11071      29.89         19.87111      5.0546 \r\n 2011          204           17.15097      28.68056      21.12444      0 \r\n 2011          205           12.68078      28.95889      19.89222      0 \r\n 2011          206           24.56167      30.25778      17.14         0 \r\n 2011          207           24.4269       32.15222      20.12167      0 \r\n 2011          208           18.3991       32.40445      22.64056      0 \r\n 2011          209           13.96167      29.97667      21.10444      0 \r\n 2011          210           20.73666      29.62778      19.29278      0 \r\n 2011          211           24.20888      30.41945      18.06333      0 \r\n 2011          212           24.65209      32.12167      18.17111      0 \r\n 2011          213           21.68651      32.82333      19.83778      0 \r\n 2011          214           21.36137      33.72055      23.89611      0 \r\n 2011          215           23.20827      30.355        17.24889      0 \r\n 2011          216           15.49963      27.76333      15.935        0 \r\n 2011          217           14.60471      28.18444      19.56222      0 \r\n 2011          218           19.53028      29.78667      20.31667      0 \r\n 2011          219           22.95029      29.47556      18.32222      4.0894 \r\n 2011          220           15.43352      26.22222      16.40944      0 \r\n 2011          221           23.18739      26.17         15.32611      0 \r\n 2011          222           23.19221      24.76         11.43889      0 \r\n 2011          223           23.35371      27.23111      9.595         0 \r\n 2011          224           18.32655      27.55833      13.59222      0 \r\n 2011          225           18.11191      24.29333      15.57389      5.334 \r\n 2011          226           23.08309      26.86833      13.20111      0 \r\n 2011          227           22.22332      26.77111      11.78722      0 \r\n 2011          228           24.05649      26.59         13.48611      0 \r\n 2011          229           19.58053      28.93889      13.71944      0 \r\n 2011          230           19.63196      28.83556      11.57056      0 \r\n 2011          231           22.43247      30.21111      13.42056      0 \r\n 2011          232           19.38987      27.24778      16.70333      0 \r\n 2011          233           22.50323      27.22333      12.48167      0 \r\n 2011          234           20.04533      28.99167      11.07556      0 \r\n 2011          235           16.03823      29.90667      18.68556      4.445 \r\n 2011          236           21.81492      29.71778      16.44333      0 \r\n 2011          237           22.67707      28.22445      13.05         0 \r\n 2011          238           16.27233      27.49         12.00333      0 \r\n 2011          239           21.03121      28.09389      15.14167      0 \r\n 2011          240           13.27562      24.51889      12.37833      0 \r\n 2011          241           20.42169      26.51944      10.81278      0 \r\n 2011          242           4.87503       20.71944      14.39444      11.938 \r\n 2011          243           18.64675      29.44         15.81889      0 \r\n 2011          244           17.95455      34.46611      20.3          0 \r\n 2011          245           12.83214      29.10222      17.7175       0 \r\n 2011          246           7.709731      23.73833      15.135        16.6878 \r\n 2011          247           19.15494      21.09278      11.21111      0 \r\n 2011          248           19.62388      20.33722      6.336667      0 \r\n 2011          249           20.57164      20.69111      4.810555      0 \r\n 2011          250           19.56602      22.95778      5.115556      0 \r\n 2011          251           17.90894      26.33333      9.524445      0 \r\n 2011          252           17.57372      25.955        10.84944      0 \r\n 2011          253           17.55753      27.23611      10.87333      0 \r\n 2011          254           18.38027      29.70722      10.46833      0 \r\n 2011          255           18.16626      30.41945      12.60222      0 \r\n 2011          256           18.21571      22.145        9.54          0 \r\n 2011          257           11.52366      16.53056      3.708889      0 \r\n 2011          258           18.33479      15.40722      1.393333      0 \r\n 2011          259           5.010214      11.39778      5.847778      0 \r\n 2011          260           8.208381      17.49778      6.958889      0 \r\n 2011          261           3.27306       16.00056      13.66333      3.2258 \r\n 2011          262           15.26733      23.77889      7.534444      0 \r\n 2011          263           14.60601      25.69667      6.441667      0 \r\n 2011          264           13.68252      18.16722      9.184444      0 \r\n 2011          265           11.30759      16.52555      3.988333      0 \r\n 2011          266           13.26311      16.75556      1.988333      0 \r\n 2011          267           12.22113      17.00889      0.71          0 \r\n 2011          268           10.80108      18.41278      4.052778      0 \r\n 2011          269           3.242349      15.08778      8.759444      3.0988 \r\n 2011          270           14.04627      18.83222      9.547778      0 \r\n 2011          271           9.436175      19.87333      8.395         0 \r\n 2011          272           9.295927      21.63278      8.458889      0 \r\n 2011          273           16.53542      18.50667      5.305         0 \r\n 2011          274           17.05629      17.23444     -0.6322222     0 \r\n 2011          275           16.62638      22.35        -1.347222      0 \r\n 2011          276           15.97656      26.685        1.937778      0 \r\n 2011          277           16.19723      27.34945      4.402778      0 \r\n 2011          278           16.55768      29.11         5.26          0 \r\n 2011          279           15.61         29.65         6.482778      0 \r\n 2011          280           16.03133      30.61         9.65          0 \r\n 2011          281           15.76782      30.6          9.93          0 \r\n 2011          282           15.66812      29.11         7.97          0 \r\n 2011          283           13.12416      27.64         6.075         0 \r\n 2011          284           10.58452      25.29         12.36         3.048 \r\n 2011          285           5.092514      20.71         9.79          16.256 \r\n 2011          286           14.49434      21.65         10.61         0.508 \r\n 2011          287           11.67675      16            8.17          0 \r\n 2011          288           14.61613      19.43         4.99          0 \r\n 2011          289           9.491446      16.26         4.456111      0 \r\n 2011          290           4.669009      12.22         1.547222      0 \r\n 2011          291           6.649757      11.95         4.783889      0 \r\n 2011          292           6.58658       10            6             0 \r\n 2011          293           11.17347      11            3.5           0 \r\n 2011          294           14.14313      16.32        -1.497222      0 \r\n 2011          295           13.59566      21.04        -0.8977778     0 \r\n 2011          296           12.08996      23.34         3.166111      2.54 \r\n 2011          297           13.29127      20.97         3.847222      0 \r\n 2011          298           9.071917      26.44         10.88         0 \r\n 2011          299           3.705727      11.68         6.211111      0 \r\n 2011          300           12.80534      14.36        -1.362778      0 \r\n 2011          301           10.23243      15.85        -3.932778      0 \r\n 2011          302           12.80584      15.17        -2.177222      0 \r\n 2011          303           6.253992      13.3         -0.2861111     2.032 \r\n 2011          304           12.37573      12.75        -0.8938889     0 \r\n 2011          305           12.06574      24.09        -1.972778      0 \r\n 2011          306           2.500526      16.96         3.503889      34.036 \r\n 2011          307           4.867498      10.66        -0.49          4.826 \r\n 2011          308           11.87223      13.95        -3.401111      0 \r\n 2011          309           4.315587      13.63        -1.388889E-02                0 \r\n 2011          310           6.167969      18.43         7.57          0 \r\n 2011          311           8.085161      17            3.032222      6.35 \r\n 2011          312           1.335784      8.23          4.92          35.306 \r\n 2011          313           5.589364      7.62          1.002778      35.814 \r\n 2011          314           7.381957      5.056111     -1.636111      0 \r\n 2011          315           10.22925      11.73        -3.257778      0 \r\n 2011          316           8.309675      16.54        -2.517222      0 \r\n 2011          317           8.57197       19.65         5.722222      0 \r\n 2011          318           7.462875      17           -0.15          0 \r\n 2011          319           9.386721      17.6         -3.061111      0 \r\n 2011          320           9.935661      6.942778     -3.932778      0 \r\n 2011          321           10.38477      6.671111     -6.042778      0 \r\n 2011          322           8.055371      14.58        -1.087778      0 \r\n 2011          323           1.671257      13.45         2.147778      0 \r\n 2011          324           2.724579      4.381111      0.3938889     0 \r\n 2011          325           7.430491      8.96         -4.273889      0 \r\n 2011          326           1.241477      6.142778      0.9372222     6.096 \r\n 2011          327           6.710132      8.1          -2.448889      0 \r\n 2011          328           8.124157      15.31         5.463889      0 \r\n 2011          329           5.470036      13.06         6.142778      0 \r\n 2011          330           3.361007      13.99         3.912222      0 \r\n 2011          331           1.251978      4.25          0.8022223     0 \r\n 2011          332           2.929428      1.4          -4.41          0 \r\n 2011          333           9.244464      6.06         -4.07          0 \r\n 2011          334           9.010369      6.807222     -8.54          0 \r\n 2011          335           5.740615      7.28         -3.933889      0 \r\n 2011          336           8.87008       6.251111     -7.05          0.25 \r\n 2011          337           1.934933      12.3          3.032222      10.67 \r\n 2011          338           1.483437      12.37        -1.777222      11.94 \r\n 2011          339           3.278373     -1.033889     -3.672778      0 \r\n 2011          340           3.01884      -1.101111     -4.422222      0 \r\n 2011          341           8.08286      -0.435        -11.8          2.79 \r\n 2011          342           5.139458      2.216111     -6.853889      0 \r\n 2011          343           8.68113      -4.773889     -13.77         1.78 \r\n 2011          344           6.46746      -2.182778     -17.31         0 \r\n 2011          345           7.433629      2.61         -7.19          0 \r\n 2011          346           3.130301      4.726111     -2.922778      0 \r\n 2011          347           1.870039      6.415         1.536111      0 \r\n 2011          348           1.775857      14.06         4.518889      29.97 \r\n 2011          349           1.681675      12.09        -2.312778      4.57 \r\n 2011          350           8.268588      2.405        -7.6           0 \r\n 2011          351           6.64436       4.58         -3.401111      0 \r\n 2011          352           7.796173      10.93        -6.381111      0 \r\n 2011          353           4.332407      7.77          1.201111      0 \r\n 2011          354           1.255911      3.643889      0.7338889     0 \r\n 2011          355           3.174652      5.262222     -1.222222E-02                0.51 \r\n 2011          356           1.203569      1.346111     -6.655         0 \r\n 2011          357           7.484757     -0.2861111    -10.65         0 \r\n 2011          358           8.114366      7.21         -8.28          0 \r\n 2011          359           8.270889      8.43         -2.855         0 \r\n 2011          360           6.472816      7.62         -8.89          0 \r\n 2011          361           1.976354      3.78         -2.992778      0 \r\n 2011          362           6.422021      6.196111     -6.111111      0 \r\n 2011          363           8.135914      11.68         0.67          0 \r\n 2011          364           8.023196      5.532222      1.135         7.62 \r\n 2011          365           7.91048       11.8          1.682778      2.03 \r\n 2012          1             6.458632      7.31         -4.217778      0 \r\n 2012          2             4.668842     -2.997778     -10.65         0 \r\n 2012          3             8.233945      1.263889     -14.25         0 \r\n 2012          4             8.34411       7.89         -3.197222      0 \r\n 2012          5             8.385364      16.13        -1.437222      0 \r\n 2012          6             6.697329      14.38        -2.108889      0 \r\n 2012          7             7.599692      5.041111     -3.605         0 \r\n 2012          8             4.918501      5.396111     -6.716111      0 \r\n 2012          9             8.725439      10.12        -8.69          0 \r\n 2012          10            8.874599      13.36        -4.827778      0 \r\n 2012          11            8.836566      13.63        -7.19          0 \r\n 2012          12            3.875346     -4.762222     -11.2          2.29 \r\n 2012          13            5.873374     -8.42         -18.12         5.08 \r\n 2012          14            9.196767      0.9788889    -19.28         0 \r\n 2012          15            9.495296      5.368889     -12.42         0 \r\n 2012          16            2.585084      5.057222     -3.33          0 \r\n 2012          17            5.924711      1.21         -12.62         1.27 \r\n 2012          18            7.405094     -1.777778     -17.44         0.25 \r\n 2012          19            7.430742     -2.107778     -17.85         0 \r\n 2012          20            1.899787     -10.04        -17.23         0 \r\n 2012          21            4.496503     -4.422222     -11.54         1.78 \r\n 2012          22            2.046813      3.167778     -7.87          0 \r\n 2012          23            2.805581      5.207222     -2.448889      2.29 \r\n 2012          24            7.684502      1.061111     -4.273889      0.25 \r\n 2012          25            4.580769      2.352222     -6.447222      0 \r\n 2012          26            3.059132      3.236111     -1.093889      0 \r\n 2012          27            4.232702      2.283889     -5.022222      0 \r\n 2012          28            10.98024      4.987778     -4.41          2.54 \r\n 2012          29            10.1116       1.073889     -4.206111      0 \r\n 2012          30            10.11859      15.53        -1.565         0 \r\n 2012          31            5.800614      15.33         3.576111      0 \r\n 2012          32            5.957723      7.28         -3.401111      0 \r\n 2012          33            7.498565      10.39        -4.75          0 \r\n 2012          34            3.094319      3.838889      0.3261111     0 \r\n 2012          35            1.49306       2.963889      0.87          6.1 \r\n 2012          36            6.637079      2.012222     -2.788889      0.76 \r\n 2012          37            2.462828     -1.232222     -6.44          0 \r\n 2012          38            1.567368      0.53         -6.983889      0 \r\n 2012          39            6.005672     -0.5577778    -6.445         0 \r\n 2012          40            7.633541      0.2588889    -10.45         0 \r\n 2012          41            3.750663      1.006111     -10.11         0 \r\n 2012          42            13.58311     -3.537778     -13.09         0 \r\n 2012          43            13.72101      1.672222     -11.87         0 \r\n 2012          44            2.908005     -0.4222222    -10.65         0 \r\n 2012          45            4.430814      2.216111     -1.292778      2.79 \r\n 2012          46            7.322083      6.467778     -5.497778      0 \r\n 2012          47            13.95125      8.1          -1.841111      1.78 \r\n 2012          48            12.21205      11.68        -5.226111      0 \r\n 2012          49            14.28895      5.38         -5.631111      0 \r\n 2012          50            14.39422      6.792222     -7.12          0 \r\n 2012          51            11.77683      8.69         -6.847778      0 \r\n 2012          52            9.03288       9.46         -0.2861111     4.57 \r\n 2012          53            9.461363      11.27        -1.225         0 \r\n 2012          54            10.15932      3.712222     -2.312778      0 \r\n 2012          55            10.85727      0.3261111    -4.75          23.37 \r\n 2012          56            15.26244     -1.917778     -8.41          0 \r\n 2012          57            15.32599      14.92        -5.147778      0 \r\n 2012          58            15.9651       3.765        -5.492778      0 \r\n 2012          59            5.90057       11.55        -4.947778      0 \r\n 2012          60            8.314863      11.91         0.72          7.37 \r\n 2012          61            11.31998      8.56          0.7338889     0 \r\n 2012          62            2.891395      2.963889     -8.222222E-02                0 \r\n 2012          63            5.591456      0.9377778    -2.448889      3.81 \r\n 2012          64            8.351097     -0.6261111    -9.51          0 \r\n 2012          65            16.89842      3.425        -12.68         2.54 \r\n 2012          66            16.58801      22.42         0             0 \r\n 2012          67            4.506754      20.54         2.826111      0 \r\n 2012          68            16.51283      8.17         -0.8272222     3.05 \r\n 2012          69            17.97685      8.15         -4.007222      0 \r\n 2012          70            18.15915      18.77        -0.7477778     0 \r\n 2012          71            12.17724      20.93         0.945         0 \r\n 2012          72            8.325616      16.75         9.32          5.33 \r\n 2012          73            18.39948      23.75         2.283889      2.54 \r\n 2012          74            15.50565      25.78         6.958889      0 \r\n 2012          75            16.31655      28.14         15.26         0 \r\n 2012          76            15.75067      28.13         12.43         0 \r\n 2012          77            15.36285      29.01         12.36         0 \r\n 2012          78            13.37658      29.2          14.4          0 \r\n 2012          79            15.0111       28.39         14.6          0 \r\n 2012          80            16.7083       27.66         13.38         0 \r\n 2012          81            10.8556       27.53         14.19         0 \r\n 2012          82            3.75037       21.35         12.36         0.51 \r\n 2012          83            11.42855      20.58         8.38          6.1 \r\n 2012          84            8.556154      20.31         8.52          0 \r\n 2012          85            18.36353      25.03         8.44          0 \r\n 2012          86            14.493        14.28         6.278889      0 \r\n 2012          87            12.27293      26.26         7.98          0 \r\n 2012          88            19.6689       22.95         8.25          0 \r\n 2012          89            11.99009      17.89         6.015         0 \r\n 2012          90            10.60175      15.8          6.482778      8.64 \r\n 2012          91            13.97895      20.85         6.822778      0 \r\n 2012          92            20.29244      29.47         10.54         0 \r\n 2012          93            20.28671      28.2          9.59          0 \r\n 2012          94            17.93212      27.86         9.39          0 \r\n 2012          95            18.6824       20.99         9.86          0 \r\n 2012          96            22.37737      16.74         4.798889      0 \r\n 2012          97            23.02539      18.89        -1.898889      0 \r\n 2012          98            8.201184      16.49        -0.8838889     0 \r\n 2012          99            23.14974      20.18         1.352222      0 \r\n 2012          100           23.54496      19.25         3.987222      0 \r\n 2012          101           24.23017      14.24        -1.148889      0 \r\n 2012          102           24.2118       14.97        -3.865         0 \r\n 2012          103           22.04826      19.43        -2.64          0 \r\n 2012          104           5.187909      12.43         7.56          0 \r\n 2012          105           6.841426      22.35         10.34         0 \r\n 2012          106           6.201399      23.3          15.47         0 \r\n 2012          107           16.65713      16.21         7.56          0 \r\n 2012          108           23.75248      19.57         1.617778      0 \r\n 2012          109           17.40243      24.56         8.86          0 \r\n 2012          110           7.114306      21.69         12.43         8.89 \r\n 2012          111           7.973239      15.95         2.162778      0 \r\n 2012          112           16.40902      14.11        -0.07          0 \r\n 2012          113           20.63766      15.06         2.978889      1.524 \r\n 2012          114           23.01924      18.77         2.095         0 \r\n 2012          115           21.23016      26.24         7.92          0 \r\n 2012          116           16.53257      27.46         11.29         0 \r\n 2012          117           24.83221      20.85         9.13          0 \r\n 2012          118           14.80981      15.6          5.547222      1.27 \r\n 2012          119           7.820733      12.09         4.382778      12.954 \r\n 2012          120           4.068605      11.36         6.891111      25.908 \r\n 2012          121           6.066967      15.88         6.08          0.254 \r\n 2012          122           8.055622      17.89         5.542222      5.842 \r\n 2012          123           9.980221      25.85         15.34         28.702 \r\n 2012          124           17.14888      29.47         16.75         77.724 \r\n 2012          125           16.99097      26.87         15.8          0 \r\n 2012          126           21.65366      28.93         14.47         0 \r\n 2012          127           17.26616      29.55         16.55         12.192 \r\n 2012          128           18.46127      24.16         12.98         28.702 \r\n 2012          129           22.99966      21.4          11.09         0 \r\n 2012          130           22.13838      21.8          8.59          0 \r\n 2012          131           28.21706      23.34         6.091111      0 \r\n 2012          132           25.39876      28.81         9.2           0 \r\n 2012          133           13.74461      20.85         13.31         0 \r\n 2012          134           28.01895      25.77         10.68         0 \r\n 2012          135           27.91004      27.59         6.627222      0 \r\n 2012          136           26.77693      31.84         14.19         0 \r\n 2012          137           28.19083      23.95         10.61         0 \r\n 2012          138           27.26131      27.93         6.902222      0 \r\n 2012          139           27.7295       32.29         7.91          0 \r\n 2012          140           23.26635      32.99         13.46         0 \r\n 2012          141           23.68642      28.95         12.84         0 \r\n 2012          142           29.24239      25.38         9.54          0 \r\n 2012          143           28.41693      28.53         7.71          0 \r\n 2012          144           27.01981      30.62         12.38         2.54 \r\n 2012          145           24.70451      33.93         17.09         0.508 \r\n 2012          146           21.83722      29.67         13.06         1.27 \r\n 2012          147           22.22712      35            18.99         0 \r\n 2012          148           27.53106      35            21.89         0 \r\n 2012          149           20.6457       32.72         17.29         6.604 \r\n 2012          150           28.92797      27.26         12.38         2.032 \r\n 2012          151           28.49404      23.48         10.01         0 \r\n 2012          152           4.1799        15.48         9.12          37.338 \r\n 2012          153           25.37521      21.13         7.37          0 \r\n 2012          154           16.25844      23.69         13.25         0 \r\n 2012          155           25.07923      28.94         10.34         0 \r\n 2012          156           20.20407      27.05         16.03         0 \r\n 2012          157           23.79905      27.73         13.66         0 \r\n 2012          158           28.95617      26.78         11.97         0 \r\n 2012          159           26.3023       29.01         11.43         0 \r\n 2012          160           28.56095      29.81         12.92         0.254 \r\n 2012          161           29.06026      33.25         16.16         0 \r\n 2012          162           27.20437      32.9          19.66         0 \r\n 2012          163           19.80856      29.63         17.84         9.906 \r\n 2012          164           30.29028      24.43         12.24         0 \r\n 2012          165           23.05597      26.44         9.81          0 \r\n 2012          166           28.55643      32.64         12.58         0 \r\n 2012          167           25.47583      35.41         16.23         0.508 \r\n 2012          168           14.514        30.5          19.12         29.464 \r\n 2012          169           28.86567      30.62         18.59         0 \r\n 2012          170           27.75954      33.4          23.43         0 \r\n 2012          171           28.20376      34            22.37         0 \r\n 2012          172           27.32918      33.47         22.54         0 \r\n 2012          173           25.47504      28.41         17.03         1.27 \r\n 2012          174           29.61716      29.68         13.86         0 \r\n 2012          175           13.0399       28.68         15.28         0.762 \r\n 2012          176           18.8029       33.32         18.25         5.334 \r\n 2012          177           29.5449       27.8          16.56         0 \r\n 2012          178           29.108        30.15         9.54          0 \r\n 2012          179           27.63896      34.86         14.67         0 \r\n 2012          180           25.19387      37.16         24.73         0 \r\n 2012          181           18.0976       35.41         20.4          26.416 \r\n 2012          182           22.36976      31.96         19.25         20.32 \r\n 2012          183           23.48362      32.59         22.23         0 \r\n 2012          184           26.56919      35.07         21.01         0 \r\n 2012          185           26.60522      34.12         21.96         0.508 \r\n 2012          186           25.92887      35.14         23.7          0 \r\n 2012          187           26.10255      36.22         22.03         0 \r\n 2012          188           26.79471      36.01         22.43         0 \r\n 2012          189           27.48921      37.62         23.36         0 \r\n 2012          190           26.28539      31.43         20.2          0 \r\n 2012          191           26.7253       33.78         17.71         0 \r\n 2012          192           24.13298      30.01         18.31         0 \r\n 2012          193           28.47413      32.5          16.3          0 \r\n 2012          194           26.26811      34.12         15.28         0 \r\n 2012          195           12.77798      30.36         20.81         3.556 \r\n 2012          196           24.66196      31.23         20.33         0.254 \r\n 2012          197           26.09293      34.65         19.52         0 \r\n 2012          198           26.64555      34.66         20.94         0 \r\n 2012          199           26.80233      35.75         23.03         0 \r\n 2012          200           25.8508       37.35         22.3          8.128 \r\n 2012          201           24.93731      31.7          19.79         0 \r\n 2012          202           16.74688      30.28         19.79         0 \r\n 2012          203           16.23656      30.55         17.91         0 \r\n 2012          204           19.60534      34.48         18.92         0 \r\n 2012          205           23.56504      39.11         22.44         0 \r\n 2012          206           21.96257      35.8          25.32         0 \r\n 2012          207           25.82942      38.5          23.08         1.27 \r\n 2012          208           20.87896      33.4          21.08         4.064 \r\n 2012          209           25.6334       29.55         18.59         0 \r\n 2012          210           14.17548      28.27         15.95         1.016 \r\n 2012          211           20.44315      33.04         18.92         0.762 \r\n 2012          212           22.52327      33.78         18.92         0 \r\n 2012          213           26.88592      33.98         19.26         0 \r\n 2012          214           26.24058      35            16.57         0 \r\n 2012          215           22.47473      35.61         18.59         0 \r\n 2012          216           24.13457      35.92         17.91         0 \r\n 2012          217           13.73431      34.2          19.79         18.034 \r\n 2012          218           26.82124      28            14.74         0 \r\n 2012          219           26.98994      31.23         11.56         0 \r\n 2012          220           24.98346      35.4          15.14         0 \r\n 2012          221           11.04961      30.55         18.65         1.27 \r\n 2012          222           17.5556       27.4          15.55         6.604 \r\n 2012          223           21.39459      26.53         13.11         0.254 \r\n 2012          224           24.7284       27.25         11.02         0 \r\n 2012          225           6.131317      23.05         13.58         25.654 \r\n 2012          226           10.45494      25.06         15.21         4.826 \r\n 2012          227           20.45152      28.54         13.99         0 \r\n 2012          228           23.31835      30.48         16.15         0 \r\n 2012          229           12.94266      24.1          13.38         4.064 \r\n 2012          230           24.95622      25.11         10.01         0 \r\n 2012          231           20.75649      25.43         8.59          0 \r\n 2012          232           21.55517      26.37         12.11         0 \r\n 2012          233           23.16446      27.8          10.14         0 \r\n 2012          234           24.26779      28.25         8.39          0 \r\n 2012          235           21.96533      33.67         9.81          0 \r\n 2012          236           22.29461      34.2          13.72         7.366 \r\n 2012          237           21.6699       33.32         15.82         0 \r\n 2012          238           18.0117       34.54         13.85         0 \r\n 2012          239           2.978924      22.82         17.84         53.848 \r\n 2012          240           21.96629      31.37         16.82         0 \r\n 2012          241           20.96962      33.71         16.89         0 \r\n 2012          242           20.81691      33.51         17.09         0 \r\n 2012          243           21.43108      33.64         16.76         0 \r\n 2012          244           13.09546      30.82         17.3          6.604 \r\n 2012          245           4.357385      25.4          20.4          7.62 \r\n 2012          246           10.03813      30.56         19.72         0 \r\n 2012          247           20.18638      32.9          18.32         0 \r\n 2012          248           19.81542      34.19         21.55         0 \r\n 2012          249           18.29902      30.35         16.88         11.176 \r\n 2012          250           20.71795      30.35         14.87         0 \r\n 2012          251           9.855161      23.75         12.38         22.86 \r\n 2012          252           20.19646      23.23         9.41          0 \r\n 2012          253           20.1727       24.36         10.15         0 \r\n 2012          254           20.44311      26.92         8.11          0 \r\n 2012          255           18.8657       31.09         10.88         0 \r\n 2012          256           19.33682      31.84         11.77         0 \r\n 2012          257           1.867068      17.84         8.52          6.096 \r\n 2012          258           17.53314      23.55         7.31          0 \r\n 2012          259           19.3764       27.12         6.967222      0 \r\n 2012          260           17.30921      25.65         6.97          0 \r\n 2012          261           9.079531      24.84         7.24          9.398 \r\n 2012          262           17.49063      18.57         4.867222      0.254 \r\n 2012          263           18.14881      26.19         4.33          0 \r\n 2012          264           16.47253      22.14         8.52          0 \r\n 2012          265           11.36475      19.44         5.615         0 \r\n 2012          266           18.24621      16.81         3.727222      0 \r\n 2012          267           18.58805      17.89         0.2038889     0 \r\n 2012          268           17.21934      23.82        -1.152222      0 \r\n 2012          269           16.18442      29.08         9.67          0 \r\n 2012          270           16.05087      25.11         10.01         0 \r\n 2012          271           16.8565       22.13         5.342778      0 \r\n 2012          272           16.25421      23.89         2.367222      0 \r\n 2012          273           16.32932      28.14         3.927222      0 \r\n 2012          274           15.0755       25.23         5.207222      0 \r\n 2012          275           11.3914       22.35         5.275         0 \r\n 2012          276           15.77849      25.02         4.935         0 \r\n 2012          277           15.71414      26.85         5.071111      0 \r\n 2012          278           5.825425      17.46         5.952222      1.27 \r\n 2012          279           3.408119      8.59          0.2011111     0 \r\n 2012          280           9.40036       8.98         -2.232222      0 \r\n 2012          281           16.13091      11.95        -0.8161111     0 \r\n 2012          282           15.63624      17.62         0.4111111     0 \r\n 2012          283           10.1657       17.16         3.916111      2.794 \r\n 2012          284           15.45574      13.44        -1.361111      0 \r\n 2012          285           14.33171      22.75        -1.561111      0 \r\n 2012          286           15.17407      15.92         3.247222      1.778 \r\n 2012          287           2.104259      19.86         8.72          29.464 \r\n 2012          288           3.378538      17.57         5.478889      15.748 \r\n 2012          289           14.37091      19.29         3.856111      0 \r\n 2012          290           11.70131      26.26         3.588889      0 \r\n 2012          291           2.931143      18.38         8.11          11.43 \r\n 2012          292           3.578324      9.34          6.558889      8.382 \r\n 2012          293           5.709863      12.44         6.015         3.302 \r\n 2012          294           8.731172      14.24         2.842222      0 \r\n 2012          295           13.19065      24.29         1.346111      0 \r\n 2012          296           2.4622        20.75         12.03         8.128 \r\n 2012          297           6.354241      23.91         15.14         1.524 \r\n 2012          298           11.59909      28            15.94         1.778 \r\n 2012          299           2.59136       23.03         4.187778      5.08 \r\n 2012          300           12.05586      9.59         -1.632778      0 \r\n 2012          301           11.2827       8.57         -3.587222      0 \r\n 2012          302           12.52941      11.48        -5.016111      0 \r\n 2012          303           12.53162      12.41        -3.865         0 \r\n 2012          304           12.73614      13.64        -1.428889      0 \r\n 2012          305           12.7353       11.48        -3.865         0 \r\n 2012          306           10.02344      16.54         0.1361111     0 \r\n 2012          307           8.708368      9.65         -3.048889      0 \r\n 2012          308           6.714232      10.47        -1.972778      0 \r\n 2012          309           5.540076      10.12        -3.052778      0.762 \r\n 2012          310           7.100332      9.59          2.297778      1.524 \r\n 2012          311           1.318378      7.58          3.847778      7.874 \r\n 2012          312           3.588198      7.57          3.372778      0 \r\n 2012          313           10.72409      13.77        -0.1361111     0 \r\n 2012          314           7.759772      16.01         2.297778      0 \r\n 2012          315           6.684567      22.35         12.58         0 \r\n 2012          316           1.03918       18.38        -1.43          0 \r\n 2012          317           9.292288      2.692222     -5.083889      0 \r\n 2012          318           10.46339      8.1          -6.37          0 \r\n 2012          319           9.398394      13.56         0.2677778     0 \r\n 2012          320           8.23315       13.92        -2.446111      0 \r\n 2012          321           9.790058      14.85        -2.308889      0 \r\n 2012          322           9.200867      15.32        -4.063889      0 \r\n 2012          323           8.392979      17.08        -3.117222      0 \r\n 2012          324           3.327912      12.24         1.413889      0 \r\n 2012          325           3.227579      9.93          0.1288889     0 \r\n 2012          326           7.192379      17.75         0.87          0 \r\n 2012          327           4.10032       18.05         3.916111      0 \r\n 2012          328           9.354963      4.672778     -5.762778      0 \r\n 2012          329           5.270376     -0.34         -8.81          0 \r\n 2012          330           5.445936      5.807222     -1.291111      0 \r\n 2012          331           4.437718      0.4638889    -8.88          0 \r\n 2012          332           6.986694      1.807778     -12.21         0 \r\n 2012          333           8.897987      9.92         -7.05          0 \r\n 2012          334           6.851216      13.44        -6.44          0 \r\n 2012          335           7.674586      13.02        -3.457222      0 \r\n 2012          336           2.094678      16.16        -3.187778      0 \r\n 2012          337           3.661418      17.03         5.537222      0 \r\n 2012          338           3.68238       21.62         8.04          0 \r\n 2012          339           8.160139      16.62         2.026111      0 \r\n 2012          340           7.019037      6.75         -3.048889      0 \r\n 2012          341           2.527513      11.22         3.182778      0 \r\n 2012          342           1.378419      5.478889      1.957778      1.52 \r\n 2012          343           7.003639      6.467778      0.3972222     2.79 \r\n 2012          344           1.255075      4.46         -3.871111      0.25 \r\n 2012          345           2.918131     -2.787222     -8.54          1.78 \r\n 2012          346           8.012611      3.096111     -10.37         0 \r\n 2012          347           8.027171      9.66         -4.466111      0 \r\n 2012          348           7.604211      10.6         -2.982222      0 \r\n 2012          349           5.975798      11.14        -6.236111      0 \r\n 2012          350           1.046251      10.14         4.323889      17.27 \r\n 2012          351           1.52444       7.98          0.1927778     1.78 \r\n 2012          352           1.38595       1.148889     -3.185         0 \r\n 2012          353           3.529246      7.98         -2.983889      0 \r\n 2012          354           1.812927      3.036111      0.2627778     0 \r\n 2012          355           1.581175      3.047222     -8.95          26.67 \r\n 2012          356           8.3862       -5.17         -11.73         17.27 \r\n 2012          357           8.150641      1.188889     -15.4          0 \r\n 2012          358           7.296268     -2.87         -12.41         0 \r\n 2012          359           2.877002     -3.252778     -6.446111      0 \r\n 2012          360           7.791821     -5.293889     -13.09         0 \r\n 2012          361           3.355359     -2.992778     -9.09          0 \r\n 2012          362           6.659631      0.4738889    -13.09         0 \r\n 2012          363           2.430737      5.388889E-02               -4.82          0 \r\n 2012          364           4.701979     -2.981111     -12.61         0 \r\n 2012          365           7.115771      3.047778     -15.4          0 \r\n 2012          366           2.679559      2.502778     -8.62          0 \r\n 2013          1             8.362561     -7.07         -16.29         0 \r\n 2013          2             8.052359      0.3822222    -16.62         0 \r\n 2013          3             6.975188     -1.087778     -11.66         0 \r\n 2013          4             8.491177      3.025        -12.07         0 \r\n 2013          5             3.695602      3.522778     -10.58         0 \r\n 2013          6             8.559794     -2.122222     -10.71         0 \r\n 2013          7             8.128424      5.192222     -11.39         0 \r\n 2013          8             6.496162      8.57         -5.288889      0 \r\n 2013          9             7.510782      8.45         -4.201111      0 \r\n 2013          10            2.749892      5.678889     -4.947778      0 \r\n 2013          11            2.803698      12.11         2.487778      10.92 \r\n 2013          12            4.663026      11.83        -6.515         0 \r\n 2013          13            7.399655     -6.241111     -11.59         2.54 \r\n 2013          14            9.123881      1.605        -14.79         0 \r\n 2013          15            9.258188     -0.095        -14.38         0 \r\n 2013          16            6.556872      5.071111     -10.03         0 \r\n 2013          17            8.690377      2.433889     -7.33          0 \r\n 2013          18            9.190867      11.08        -6.507222      0 \r\n 2013          19            7.57099       11.95        -5.772222      0 \r\n 2013          20            4.033334     -5.838889     -12.01         0 \r\n 2013          21            9.092794     -11.19        -16.9          0 \r\n 2013          22            8.646738     -9.84         -18.53         0 \r\n 2013          23            8.313859     -0.7622222    -12.01         0 \r\n 2013          24            6.612226     -5.425        -15.2          0 \r\n 2013          25            10.00457      3.1          -9.5           0 \r\n 2013          26            10.16331      0.585        -14.31         0 \r\n 2013          27            6.445536      3.917778     -1.837222      0 \r\n 2013          28            2.727759      9.68          3.032222      11.18 \r\n 2013          29            1.134575      16.43         1.277778      0.51 \r\n 2013          30            4.334582      1.55         -9.63          39.12 \r\n 2013          31            10.27226     -6.912778     -16.62         3.05 \r\n 2013          32            9.947627     -5.487222     -19.68         0 \r\n 2013          33            6.894144     -2.912778     -9.03          0 \r\n 2013          34            10.28569     -3.127222     -9.15          0 \r\n 2013          35            9.927335     -2.18         -10.65         0 \r\n 2013          36            10.27628      3.572778     -10.85         0 \r\n 2013          37            10.81769      8.17         -7.46          0 \r\n 2013          38            1.483312      3.576111     -0.075         2.54 \r\n 2013          39            3.774805      0.1288889    -2.448889      10.92 \r\n 2013          40            5.326692      2.963889     -2.788889      0 \r\n 2013          41            2.195052      11.43         0.68          3.3 \r\n 2013          42            3.709785      2.626111     -1.361111      5.33 \r\n 2013          43            10.48477      4.647778     -2.721111      0 \r\n 2013          44            12.4402       7.35         -2.981111      0 \r\n 2013          45            5.269246      5.542778     -1.292778      0 \r\n 2013          46            13.76222     -0.7622222    -7.46          0 \r\n 2013          47            12.33527     -2.392222     -11.12         0 \r\n 2013          48            12.894        4.716111     -10.57         0 \r\n 2013          49            5.320374      14.14        -6.988889      0 \r\n 2013          50            13.07458     -4.348889     -13.64         6.35 \r\n 2013          51            13.25069     -3.401111     -16.08         0 \r\n 2013          52            3.936516     -1.701111     -9.49          0 \r\n 2013          53            6.748123     -1.502222     -4.546111      8.13 \r\n 2013          54            14.38535     -1.373889     -10.99         0.51 \r\n 2013          55            15.14056      4.565        -14.93         0 \r\n 2013          56            10.99622      5.177778     -8.41          0 \r\n 2013          57            3.028923      2.571111     -1.095         0 \r\n 2013          58            8.318587      0.19         -1.768889      8.38 \r\n 2013          59            8.034786      2.216111     -2.041111      1.52 \r\n 2013          60            11.2322      -0.1527778    -3.73          1.27 \r\n 2013          61            17.03591     -2.722222E-02               -11.93         0 \r\n 2013          62            16.19007      1.521111     -15.2          0 \r\n 2013          63            14.11891      3.421111     -3.665         1.78 \r\n 2013          64            9.496132      0.265        -2.517222      7.62 \r\n 2013          65            10.97911     -1.712778     -8.28          1.78 \r\n 2013          66            15.13503      1.583889     -16.08         0 \r\n 2013          67            17.25461      6.466111     -9.36          0 \r\n 2013          68            1.87326       4.607222      1.822222      3.56 \r\n 2013          69            1.766652      7.58          1.957778      23.37 \r\n 2013          70            2.680145      2.231111     -2.381111      16.26 \r\n 2013          71            6.76921       1.482222     -4.273889      0.51 \r\n 2013          72            18.65093      1.672222     -6.303889      0 \r\n 2013          73            15.10738      10.73        -4.942222      0 \r\n 2013          74            9.033423      9.93         -2.78          0 \r\n 2013          75            4.22153       2.836111     -1.292778      0 \r\n 2013          76            13.82703      3.5          -3.253889      0.25 \r\n 2013          77            4.495248      2.571111     -6.172778      0.51 \r\n 2013          78            20.19073      2.012222     -8.34          1.52 \r\n 2013          79            19.87124     -2.925        -9.97          0 \r\n 2013          80            20.6116       1.868889     -12.41         0 \r\n 2013          81            19.6761       6.875        -8.74          0 \r\n 2013          82            16.50893      7.82         -3.661111      0 \r\n 2013          83            6.291104      0.2577778    -2.041111      2.54 \r\n 2013          84            15.82945      2.216111     -1.972778      5.33 \r\n 2013          85            15.24754      4.512778     -3.866111      0 \r\n 2013          86            21.03502      8.63         -2.912778      0 \r\n 2013          87            20.31788      12.95        -5.555         0 \r\n 2013          88            20.96971      15.99        -2.306111      0 \r\n 2013          89            5.80576       13.04        -0.7477778     0 \r\n 2013          90            20.15922      13.57         1.073889      0 \r\n 2013          91            22.33888      5.532222     -4.546111      0 \r\n 2013          92            22.44875      8.1          -6.435         0 \r\n 2013          93            22.0942       11.26        -6.777778      0 \r\n 2013          94            22.08491      16.87        -4.131111      0 \r\n 2013          95            18.21705      15.12        -1.02          0 \r\n 2013          96            9.178357      20.67         7.09          2.286 \r\n 2013          97            17.94773      18.98         1.55          0 \r\n 2013          98            19.27435      23.61         9.59          22.606 \r\n 2013          99            11.18182      25.55556      7.91          0.508 \r\n 2013          100           2.822401      7.98          3.712222      59.944 \r\n 2013          101           5.373009      9.27          2.637778      2.032 \r\n 2013          102           5.827266      6.151111      2.295         0.508 \r\n 2013          103           19.66693      11.42         1.142222      0 \r\n 2013          104           16.78771      25.24         5.878889      4.826 \r\n 2013          105           9.97541       16.69         4.595         4.064 \r\n 2013          106           9.743364      10.68         0.3338889     0 \r\n 2013          107           7.106754      12.18         5.068889      80.264 \r\n 2013          108           4.470144      16.01         2.432778      43.434 \r\n 2013          109           6.670217      5.138889      0.6677778     0 \r\n 2013          110           23.85997      10.05        -2.368889      0 \r\n 2013          111           19.77898      17.69         2.098889      0 \r\n 2013          112           20.26901      21.74         8.66          0.254 \r\n 2013          113           3.961286      11.77         2.833889      9.144 \r\n 2013          114           24.68066      12.02         0.7338889     1.016 \r\n 2013          115           25.68135      13.84         1.686111      0 \r\n 2013          116           22.12005      20.45         4.461111      0 \r\n 2013          117           19.92643      19.11         5.542222      0 \r\n 2013          118           24.72024      23.21         7.77          0 \r\n 2013          119           20.80268      28.81         9.34          0 \r\n 2013          120           22.27783      32.06         14.94         0 \r\n 2013          121           22.26867      30.78         10.14         0 \r\n 2013          122           6.031654      10.27         2.637778      8.382 \r\n 2013          123           3.282306      10.09         1.957778      80.772 \r\n 2013          124           8.06286       19.04         10.09         21.844 \r\n 2013          125           18.06785      23.9          8.45          0 \r\n 2013          126           19.7302       25.99         9.81          0 \r\n 2013          127           19.62053      26.87         9.47          0 \r\n 2013          128           18.99716      27.33         9.41          0 \r\n 2013          129           8.40461       21.67         15.08         40.64 \r\n 2013          130           6.68712       15.21         8.05          0 \r\n 2013          131           24.49129      15.26         3.793889      0.508 \r\n 2013          132           27.64678      15.6          0.945         0 \r\n 2013          133           23.78064      22.69         1.49          0 \r\n 2013          134           26.95701      35            13.4          0 \r\n 2013          135           18.27638      28.84         15.42         0 \r\n 2013          136           24.32661      30.28         14.13         0 \r\n 2013          137           21.50233      28.75         14.94         0 \r\n 2013          138           22.06006      30.08         15.48         0 \r\n 2013          139           13.9354       30.23         17.51         24.384 \r\n 2013          140           23.17053      28.21         16.96         0 \r\n 2013          141           24.38728      25.72         16.64         0 \r\n 2013          142           8.858574      19.99         13.99         0 \r\n 2013          143           17.08888      21.53         11.48         1.27 \r\n 2013          144           28.79454      22.2          6.295         0 \r\n 2013          145           2.183755      15.14         7.84          21.844 \r\n 2013          146           4.553531      15.69         10.14         38.354 \r\n 2013          147           9.977962      24.03         14.26         0.254 \r\n 2013          148           10.46787      26.26         16.76         20.828 \r\n 2013          149           23.29551      30.23         16.96         4.064 \r\n 2013          150           12.98329      28.89         16.75         17.526 \r\n 2013          151           13.36851      24.97         16.5          1.016 \r\n 2013          152           18.003        24.44         16.75         0 \r\n 2013          153           12.61811      18.18         10.08         0 \r\n 2013          154           27.46474      22.74         9             0 \r\n 2013          155           15.90732      22.96         11.71         0 \r\n 2013          156           6.638794      20.14         15.01         16.764 \r\n 2013          157           10.50385      21.01         14.26         8.636 \r\n 2013          158           17.82267      22.55         14.26         0 \r\n 2013          159           21.43727      26.12         13.66         0 \r\n 2013          160           9.487805      23.04         16.42         2.794 \r\n 2013          161           19.21674      26.33         15.89         0 \r\n 2013          162           21.36932      31.24         15.76         0.508 \r\n 2013          163           19.99475      33.13         20.47         0 \r\n 2013          164           26.69886      30.1          17.84         0 \r\n 2013          165           16.98896      28.14         16.3          0 \r\n 2013          166           12.24904      27.27         18.72         7.112 \r\n 2013          167           22.63205      30.08         18.79         0 \r\n 2013          168           22.67745      31.64         17.98         0 \r\n 2013          169           25.44286      28.27         17.1          0 \r\n 2013          170           26.45669      30.69         14.4          0 \r\n 2013          171           26.96387      34.12         16.3          0 \r\n 2013          172           18.15383      30.43         23.31         1.27 \r\n 2013          173           19.87275      35.34         23.84         0 \r\n 2013          174           15.13688      29.09         21.49         0 \r\n 2013          175           6.769461      26.14         18.82         37.338 \r\n 2013          176           16.7629       31.3          18.59         0.254 \r\n 2013          177           18.41621      30.23         19.72         32.766 \r\n 2013          178           20.31248      31.84         21.01         0 \r\n 2013          179           26.11561      29.9          19.13         0 \r\n 2013          180           11.81315      24.67         17.3          13.716 \r\n 2013          181           23.19534      27.41         16.23         0 \r\n 2013          182           26.51229      27.55         14            0 \r\n 2013          183           25.29057      28.34         12.51         0 \r\n 2013          184           20.69335      26.39         13.79         0 \r\n 2013          185           25.65549      30.08         13.8          0 \r\n 2013          186           25.86875      31.64         15.76         0 \r\n 2013          187           26.5051       32.85         16.77         0 \r\n 2013          188           23.76462      32.25         19.06         0 \r\n 2013          189           17.39423      30.98         22.63         3.81 \r\n 2013          190           13.43671      31.91         23.57         9.398 \r\n 2013          191           26.12352      28.61         17.11         0 \r\n 2013          192           27.07215      28.75         14.74         0 \r\n 2013          193           27.83481      29.89         13.26         0.508 \r\n 2013          194           19.01925      29.4          13.6          0 \r\n 2013          195           24.37887      32.24         16.03         0 \r\n 2013          196           23.94558      34.39         20.07         0 \r\n 2013          197           23.34291      34.66         21.62         0 \r\n 2013          198           23.54764      34.53         22.57         0 \r\n 2013          199           25.11471      34.39         22.1          1.016 \r\n 2013          200           23.81775      34.74         21.67         11.43 \r\n 2013          201           25.16852      32.72         18.25         0 \r\n 2013          202           13.50286      30.69         17.91         1.524 \r\n 2013          203           22.1924       31.64         16.83         3.556 \r\n 2013          204           17.10637      25.4          16.16         0 \r\n 2013          205           22.08734      26.07         13.06         0 \r\n 2013          206           23.09886      28.07         12.85         20.574 \r\n 2013          207           16.40563      27.21         15.55         13.462 \r\n 2013          208           20.91615      19.86         12.51         0 \r\n 2013          209           24.8043       22.14         12.1          0 \r\n 2013          210           22.91627      25.31         9.2           0 \r\n 2013          211           3.386404      19.94         17.37         4.572 \r\n 2013          212           14.685        27.39         18.04         0 \r\n 2013          213           24.62439      28.8          14.74         0 \r\n 2013          214           20.33591      29.28         18.79         0 \r\n 2013          215           25.19776      27.53         16.03         0 \r\n 2013          216           24.0944       27.46         12.99         0 \r\n 2013          217           10.85246      26.53         13.86         0 \r\n 2013          218           12.04942      30.83         18.93         0 \r\n 2013          219           20.4401       30.29         16.43         0.762 \r\n 2013          220           18.47864      28.41         14.47         0 \r\n 2013          221           16.07468      27.53         15.82         1.524 \r\n 2013          222           24.11641      27.86         13.86         0 \r\n 2013          223           21.36664      29.15         14.8          0 \r\n 2013          224           16.92725      29.02         16.37         0 \r\n 2013          225           19.47384      24.9          11.57         0 \r\n 2013          226           18.76629      24.84         8.86          0 \r\n 2013          227           15.12834      24.9          12.24         0 \r\n 2013          228           21.83299      27.8          10.22         0 \r\n 2013          229           20.80297      28.34         11.83         0 \r\n 2013          230           21.59869      28.94         10.88         0 \r\n 2013          231           17.86514      29.15         13.46         0 \r\n 2013          232           20.56528      31.37         15.55         0 \r\n 2013          233           18.73771      32.04         20            0 \r\n 2013          234           7.992863      27.41         18.04         0 \r\n 2013          235           20.94121      30.62         15.14         0 \r\n 2013          236           19.93894      32.43         17.77         0 \r\n 2013          237           21.1459       32.99         19.2          0 \r\n 2013          238           21.08631      34.32         19.2          0 \r\n 2013          239           21.14665      35.47         23.78         0 \r\n 2013          240           20.32976      36.96         23.7          0 \r\n 2013          241           18.17366      33.32         22.37         0 \r\n 2013          242           20.41587      37.17         22.44         0 \r\n 2013          243           18.67767      31.43         21.69         0 \r\n 2013          244           17.5892       31.17         17.1          0 \r\n 2013          245           21.21401      26.38         12.57         0 \r\n 2013          246           20.96318      26.98         8.86          0 \r\n 2013          247           19.8312       32.72         9.81          0 \r\n 2013          248           18.94867      33.58         15.96         0 \r\n 2013          249           19.59154      32.38         15.89         0 \r\n 2013          250           14.71701      34.87         18.11         0 \r\n 2013          251           15.76954      32.04         22.03         0 \r\n 2013          252           18.29161      38.04         20.06         0 \r\n 2013          253           18.56947      36.35         22.3          0 \r\n 2013          254           9.341366      28.43         21.69         0 \r\n 2013          255           19.38184      27            11.56         0 \r\n 2013          256           19.68442      23.48         8.05          0 \r\n 2013          257           19.2095       24.88         4.746111      0 \r\n 2013          258           3.115197      19.6          10.75         8.382 \r\n 2013          259           14.03757      21.26         9.54          0.254 \r\n 2013          260           6.64574       21.47         8.45          0 \r\n 2013          261           14.51643      32.25         15.62         6.604 \r\n 2013          262           15.84414      34.54         18.86         21.844 \r\n 2013          263           11.94256      20.47         10.07         0 \r\n 2013          264           18.30115      21.74         8.39          0 \r\n 2013          265           18.09593      24.56         5.818889      0 \r\n 2013          266           18.07902      25.31         8.12          0 \r\n 2013          267           14.00916      25.71         6.837778      0 \r\n 2013          268           16.51249      26.85         9.74          0 \r\n 2013          269           16.50521      30.42         11.09         0 \r\n 2013          270           16.5878       30.55         11.43         0 \r\n 2013          271           5.717813      27.69         10.75         9.144 \r\n 2013          272           16.57701      23.89         6.566111      0 \r\n 2013          273           16.1438       27.12         5.275         0 \r\n 2013          274           15.50544      29.83         13.8          0 \r\n 2013          275           13.59654      30.35         13.12         0 \r\n 2013          276           9.345675      28.35         15.48         1.27 \r\n 2013          277           6.500556      29.29         18.1          13.208 \r\n 2013          278           5.320291      22.5          7.24          0 \r\n 2013          279           5.944585      11.49         4.402778      1.524 \r\n 2013          280           15.11767      23.43         7.37          0 \r\n 2013          281           15.36867      27.26         6.295         0 \r\n 2013          282           15.17641      25.45         6.158889      0 \r\n 2013          283           14.47697      26.37         5.478889      0 \r\n 2013          284           14.27405      27.32         8.05          0 \r\n 2013          285           13.77938      21.67         7.65          0 \r\n 2013          286           14.94634      20.45         2.236111      0 \r\n 2013          287           14.22803      19.98         0.9522222     0 \r\n 2013          288           9.419606      18.73         10.07         2.54 \r\n 2013          289           2.450025      11.56         9             0 \r\n 2013          290           12.51196      17.76         6.761111      0 \r\n 2013          291           6.23303       10.61         6.021111      0 \r\n 2013          292           9.438769      13.65         2.842778      0 \r\n 2013          293           7.262504      17.37         2.702222      0 \r\n 2013          294           13.44236      10           -1.215         0 \r\n 2013          295           1.534189      3.591111     -0.8161111     7.62 \r\n 2013          296           8.873343      7.16         -1.02          0 \r\n 2013          297           5.398197      6.431111     -2.436111      0 \r\n 2013          298           13.03759      13.38        -4.268889      0 \r\n 2013          299           12.40711      12.36         1.49          0 \r\n 2013          300           12.51422      15.33        -4.338889      0 \r\n 2013          301           11.36161      16.2         -1.565         0 \r\n 2013          302           4.877414      15.41         4.192778      0 \r\n 2013          303           3.483891      16.23         11.09         69.342 \r\n 2013          304           2.090368      17.3          6.151111      10.922 \r\n 2013          305           4.658926      9.94          6.295         0.508 \r\n 2013          306           10.50523      11.82        -0.9511111     0 \r\n 2013          307           10.67305      14.51        -3.185         0 \r\n 2013          308           5.040088      14.33         7.44          0 \r\n 2013          309           1.18562       13.06         8.66          10.16 \r\n 2013          310           4.675913      14           -0.34          13.208 \r\n 2013          311           7.580027      8.57         -3.048889      0 \r\n 2013          312           5.07377       10.36        -4.607778      0 \r\n 2013          313           10.51812      15.26         3.237222      0 \r\n 2013          314           9.79692       9.38         -0.8161111     0 \r\n 2013          315           10.18009      10.22        -7.12          0 \r\n 2013          316           10.56326     -0.83         -10.44         0 \r\n 2013          317           10.36473      7.57         -8.81          0 \r\n 2013          318           8.70728       12.63         0.3372222     0 \r\n 2013          319           9.183002      13.84         1.148889      0 \r\n 2013          320           1.985308      17.66         4.815         0 \r\n 2013          321           4.286592      20.41         6.225         0 \r\n 2013          322           9.435548      7.63         -2.641111      0 \r\n 2013          323           9.360194      9.98         -5.691111      0 \r\n 2013          324           1.347332      4.323889      2.095         0 \r\n 2013          325           2.180241      5.947778      1.077222      0 \r\n 2013          326           6.151359      3.372222     -6.712222      0 \r\n 2013          327           8.648663     -4.15         -13.16         0 \r\n 2013          328           9.04062      -1.306111     -14.38         0 \r\n 2013          329           3.757943      2.637778     -5.895         0 \r\n 2013          330           5.064481      0.3977778    -9.22          0 \r\n 2013          331           8.500591     -2.393889     -12.68         0 \r\n 2013          332           8.70657       2.147778     -8.95          0 \r\n 2013          333           8.099094      3.972778     -12.14         0 \r\n 2013          334           8.326788      11           -7.12          0 \r\n 2013          335           7.790943      9.71         -3.253889      0 \r\n 2013          336           3.427449      7.64          0.3311111     0 \r\n 2013          337           2.063381      8.79         -0.2127778     0 \r\n 2013          338           2.018194      12.77        -3.737222      0 \r\n 2013          339           6.094331     -3.597778     -9.29          0.25 \r\n 2013          340           5.610033     -7.33         -13.9          0 \r\n 2013          341           7.94709      -7.2          -17.91         0 \r\n 2013          342           2.753532     -6.037222     -10.78         0 \r\n 2013          343           7.664753     -6.511111     -23.97         3.3 \r\n 2013          344           7.865878     -6.647778     -21.24         0 \r\n 2013          345           8.22474      -7.53         -19.88         0.76 \r\n 2013          346           4.705954     -3.537222     -21.38         0 \r\n 2013          347           5.203724      0.7272222    -15.47         0 \r\n 2013          348           3.890618     -2.448889     -9.97          2.29 \r\n 2013          349           4.061869     -8.55         -12.89         0 \r\n 2013          350           4.134294     -4.746111     -10.79         1.52 \r\n 2013          351           7.338317      2.216111     -9.23          0 \r\n 2013          352           7.137695      4.995        -12.55         0 \r\n 2013          353           3.239336      4.596111     -5.838889      0 \r\n 2013          354           2.201014      1.346111     -3.396111      6.35 \r\n 2013          355           1.162692     -1.701111     -4.068889      0 \r\n 2013          356           6.112991     -1.837222     -9.5           12.95 \r\n 2013          357           8.090685     -9.29         -20.63         0 \r\n 2013          358           7.090792     -7.53         -26.15         0 \r\n 2013          359           3.172058     -1.893889     -7.66          0 \r\n 2013          360           5.758146      4.126111     -10.31         0.25 \r\n 2013          361           8.061355      6.671111     -8.55          0 \r\n 2013          362           8.076375      8.57          0.1972222     0 \r\n 2013          363           8.076375     -5.778889     -19.34         0 \r\n 2013          364           4.44483      -11.8         -20.36         0 \r\n 2013          365           2.153254     -9.58         -19.62         2.29 \r\n 2014          1             2.987543     -10.04        -13.1          0 \r\n 2014          2             6.176797     -10.19        -22.06         3.81 \r\n 2014          3             5.797894     -4.402222     -25.53         0 \r\n 2014          4             2.343291      0.4627778    -7.8           0 \r\n 2014          5             3.549622     -7.6          -23.49         1.52 \r\n 2014          6             8.014285     -21.04        -26.35         0 \r\n 2014          7             4.960969     -10.58        -22.34         0 \r\n 2014          8             5.603464     -8.08         -19.75         0 \r\n 2014          9             3.414102     -3.592778     -18.93         0 \r\n 2014          10            1.278086      2.978889     -3.728889      0 \r\n 2014          11            7.140373      1.943889     -1.566111      2.54 \r\n 2014          12            6.789209      8.03         -4.2           0 \r\n 2014          13            6.885441      4.135        -2.585         0 \r\n 2014          14            3.508326      2.982222     -8.07          1.27 \r\n 2014          15            8.82778      -3.388889     -12.28         0 \r\n 2014          16            4.765492      3.655        -12.28         0 \r\n 2014          17            5.250209     -7.87         -14.05         0 \r\n 2014          18            1.451681     -2.861111     -13.09         0 \r\n 2014          19            7.228237      8.23         -11.93         1.27 \r\n 2014          20            5.750197      3.916111     -9.57          0 \r\n 2014          21            8.035037     -9.57         -19.21         3.3 \r\n 2014          22            6.257967     -8.07         -18.46         0 \r\n 2014          23            9.79671      -15.48        -21.86         0 \r\n 2014          24            5.578904      1.83         -21.04         0 \r\n 2014          25            10.5323       2.775        -10.86         0 \r\n 2014          26            4.859046      4.798889     -15.81         0 \r\n 2014          27            10.06482     -15.61        -21.11         0.76 \r\n 2014          28            9.747674     -9.78         -22.81         0 \r\n 2014          29            10.71978      0.4622222    -18.05         0 \r\n 2014          30            3.4759        3.452222     -9.77          0 \r\n 2014          31            3.770077     -9.23         -13.57         0 \r\n 2014          32            4.764321     -4.752222     -10.24         7.87 \r\n 2014          33            8.934974     -9.63         -24.72         0.25 \r\n 2014          34            11.15484     -5.386111     -28.87         0 \r\n 2014          35            3.948315     -5.838889     -14.58         0 \r\n 2014          36            9.718762     -8.48         -20.23         7.11 \r\n 2014          37            11.94327     -14.74        -23.36         0.76 \r\n 2014          38            11.31011     -9.85         -23.56         0 \r\n 2014          39            2.371491     -6.39         -12.62         0 \r\n 2014          40            10.80455     -8.61         -21.11         2.54 \r\n 2014          41            14.81492     -13.73        -26.49         0 \r\n 2014          42            12.62773     -9.32         -29.9          0 \r\n 2014          43            10.0021      -2.067222     -18.93         0 \r\n 2014          44            11.37374      4.58         -10.86         0 \r\n 2014          45            9.767255     -6.802222     -15.06         1.27 \r\n 2014          46            5.684801     -7.12         -22.47         1.27 \r\n 2014          47            13.49072     -0.2311111    -11.14         2.54 \r\n 2014          48            9.269234      3.643889     -6.377222      0.25 \r\n 2014          49            13.50277      9.78         -12.62         9.91 \r\n 2014          50            13.2588       6.738889     -2.647222      0 \r\n 2014          51            1.914808      5.682222     -0.2177778     19.3 \r\n 2014          52            13.58817      2.896111     -4.955         9.14 \r\n 2014          53            9.764284      1.208889     -7.6           0 \r\n 2014          54            13.15479     -3.81         -9.29          0 \r\n 2014          55            10.92614     -4.49         -10.38         0 \r\n 2014          56            12.61024     -9.03         -15.81         1.02 \r\n 2014          57            15.40327     -5.213889     -20.02         0 \r\n 2014          58            15.65293     -7.32         -17.58         0 \r\n 2014          59            13.427        2.887778     -16.42         0 \r\n 2014          60            7.024727     -2.857222     -15.54         0.76 \r\n 2014          61            13.91084     -15.33        -21.38         5.59 \r\n 2014          62            16.00229     -7.29         -23.9          0 \r\n 2014          63            16.38371      0.2988889    -14.18         0 \r\n 2014          64            8.562304     -4.022222     -8.55          0.51 \r\n 2014          65            15.23721      0.4338889    -16.15         2.54 \r\n 2014          66            13.50336      8.71         -12.82         0 \r\n 2014          67            4.298182      2.095        -3.252778      0.25 \r\n 2014          68            16.52563      8.3          -5.832778      0 \r\n 2014          69            15.05395      16.27         1.006111      0 \r\n 2014          70            7.281541      10.68         0.4           0 \r\n 2014          71            14.14338      2.147778     -4.812222      2.03 \r\n 2014          72            16.65048      12.56        -6.576111      0 \r\n 2014          73            16.59195      12.5          0.4           0 \r\n 2014          74            14.21581      8.71         -2.506111      0 \r\n 2014          75            16.22304     -7.888889E-02               -6.847778      2.03 \r\n 2014          76            17.94367      5.191111     -9.76          0 \r\n 2014          77            12.63037      14.93        -0.6122222     0 \r\n 2014          78            4.155423      6.488889     -2.101111      0.51 \r\n 2014          79            17.37385      11.8         -4.676111      0 \r\n 2014          80            15.33386      16.14        -1.967778      0 \r\n 2014          81            14.39848      4.58         -4.75          0 \r\n 2014          82            20.12349      1.196111     -8.88          0 \r\n 2014          83            15.34315      3.155        -6.578889      0 \r\n 2014          84            19.92676     -1.237778     -9.69          1.02 \r\n 2014          85            17.12281      9.11         -12.21         0 \r\n 2014          86            3.488034      12.17         2.357222      3.56 \r\n 2014          87            5.368323      4.383889      1.822222      0.76 \r\n 2014          88            14.46685      11.82        -2.517222      0 \r\n 2014          89            20.35947      19.98        -4.206111      0 \r\n 2014          90            12.00394      21.4          2.418889      0 \r\n 2014          91            17.15988      8.85         -2.788889      0 \r\n 2014          92            7.887342      9.66          0.53          0 \r\n 2014          93            2.983652      7.03          3.167778      0 \r\n 2014          94            6.736449      6.907222      1.21          0 \r\n 2014          95            20.88711      12.61        -3.048889      0 \r\n 2014          96            15.54364      15.80444      1.336667      0 \r\n 2014          97            14.18225      17.38667      3.177222      0 \r\n 2014          98            25.05         15.64         2.228         0 \r\n 2014          99            24.76         20.44         0.55          0 \r\n 2014          100           13.13         19.38         5.432         0 \r\n 2014          101           24.62         24.05         0.408         0 \r\n 2014          102           18.99         28.78         12.06         0 \r\n 2014          103           2.585         18.74         8.41          0.508 \r\n 2014          104           5.713         8.67         -1.15          0 \r\n 2014          105           26.9          6.39         -3.46          0 \r\n 2014          106           23.01         15.58        -0.016         0 \r\n 2014          107           20.28         12.65         2.45          0 \r\n 2014          108           26.34         18.62        -1.798         0 \r\n 2014          109           24.73         24.43         3.936         0 \r\n 2014          110           16.695        18.99         17.94         0 \r\n 2014          111           8.66          23.05         10.79         2.54 \r\n 2014          112           27.3833       18.41         5.583         0 \r\n 2014          113           8.84167       13.64         3.946         3.302 \r\n 2014          114           8.03833       17.62         8.53          8.38 \r\n 2014          115           26.8167       23.89         4.775         0 \r\n 2014          116           25.2833       23.49         7.46          0 \r\n 2014          117           15.45         26.24         6.31          45.97 \r\n 2014          118           7.50167       16.28         7.571         9.4 \r\n 2014          119           9.7           15.02         5.562         0 \r\n 2014          120           9.75833       9.78          3.704         0.508 \r\n 2014          121           8.2059        10.9          5.128         0.508 \r\n 2014          122           14.2334       18.59         7.076         0 \r\n 2014          123           25.9          22.42         8             0 \r\n 2014          124           21.4          17.73         7.642         0 \r\n 2014          125           24.7333       21.17         8.35          0 \r\n 2014          126           24.8667       26.02         7.409         0 \r\n 2014          127           17            31.79         13.35         0 \r\n 2014          128           9.745         28.36         18.27         0 \r\n 2014          129           27.65         20.82         10.2          0 \r\n 2014          130           25.5167       28.25         7.904         0 \r\n 2014          131           10.4967       27.34         14.09         0 \r\n 2014          132           13.2367       31.02         13.08         12.45 \r\n 2014          133           8.91333       13.79         7.036         0 \r\n 2014          134           13.55         14.53         4.826         0 \r\n 2014          135           18.5667       15.26         5.4           1.524 \r\n 2014          136           13.3979       12.3          4.138         2.032 \r\n 2014          137           29.7333       18.08         2.654         0 \r\n 2014          138           28.15         22.72         6.067         0 \r\n 2014          139           17.5167       25.71         11.04         0.508 \r\n 2014          140           20.7833       30.95         17.98         0 \r\n 2014          141           27.7833       32.1          15.03         1.778 \r\n 2014          142           15.4667       23.75         10.87         0 \r\n 2014          143           29.8167       26.31         8.85          0 \r\n 2014          144           22.4833       26.51         10.46         0 \r\n 2014          145           16.3833       29.04         11.92         0 \r\n 2014          146           14.3          29.85         17.23         9.14 \r\n 2014          147           17.2          29.78         19.44         0 \r\n 2014          148           16.3167       28.23         18.08         3.556 \r\n 2014          149           26.9833       30.26         15.6          0 \r\n 2014          150           26.4667       32.31         17.59         0 \r\n 2014          151           24.1833       33.36         15.58         0 \r\n 2014          152           25.35         33.25         21.5          3.302 \r\n 2014          153           24.4167       29.18         18.82         6.604 \r\n 2014          154           26.1333       28.87         16.85         12.45 \r\n 2014          155           15.6167       22.97         16.56         5.08 \r\n 2014          156           24.6833       25.72         13.45         0 \r\n 2014          157           25.9833       29.68         13.88         0 \r\n 2014          158           9.81333       26            15.67         4.826 \r\n 2014          159           11.3517       22.07         14.53         0 \r\n 2014          160           27.6667       26.93         12.24         0 \r\n 2014          161           6.07333       20.44         15.21         3.302 \r\n 2014          162           19.7          26.64         15.8          0 \r\n 2014          163           19.8667       25.16         12.38         0.254 \r\n 2014          164           31.5          25.61         8.92          0 \r\n 2014          165           29.2333       28.14         9.34          0 \r\n 2014          166           25.0333       29.74         18.38         0 \r\n 2014          167           22.6          31.42         15.2          7.112 \r\n 2014          168           24.1333       31.62         18.44         1.524 \r\n 2014          169           16.5833       32.03         19.93         17.53 \r\n 2014          170           11.085        28.32         19.21         59.69 \r\n 2014          171           28.8333       31.86         18.7          0.254 \r\n 2014          172           23.8333       30.07         19.42         0 \r\n 2014          173           15.6333       30.44         16.89         9.65 \r\n 2014          174           12.4883       25.75         18.73         3.302 \r\n 2014          175           29.05         29.18         18.81         0 \r\n 2014          176           28.95         30.71         18.06         0 \r\n 2014          177           17.4833       30.06         16.7          1.27 \r\n 2014          178           19.7928       31.15         19.26         0 \r\n 2014          179           17.8333       30.01         20.15         5.334 \r\n 2014          180           18.7833       30            19.99         0 \r\n 2014          181           12.2233       29.94         18.74         118.6 \r\n 2014          182           27.1667       27.1          17.15         0.762 \r\n 2014          183           8.57437       19.51         13.69         0 \r\n 2014          184           26.8333       24.93         12.46         0 \r\n 2014          185           29.1333       26.74         13.21         0 \r\n 2014          186           4.15333       19.35         12.63         21.84 \r\n 2014          187           25.4333       30.76         18.39         0 \r\n 2014          188           27.8833       30.4          20.96         0 \r\n 2014          189           28.8833       27.05         18.79         0 \r\n 2014          190           29.25         26.55         14.92         0 \r\n 2014          191           29.35         28.77         13.29         0 \r\n 2014          192           19.2667       29.4          13.88         0 \r\n 2014          193           20.05         32.33         20.64         11.18 \r\n 2014          194           24.9          30.01         18.95         0 \r\n 2014          195           26.5          26.02         12.92         0 \r\n 2014          196           14.2822       20.88         11.29         0 \r\n 2014          197           25.8833       25.66         10.26         0 \r\n 2014          198           30.05         28.02         11.66         0 \r\n 2014          199           28.15         28.43         13.15         0 \r\n 2014          200           24.5833       27.78         13.12         0 \r\n 2014          201           23.4333       29.28         14.8          0 \r\n 2014          202           26.9          31.56         15.63         0 \r\n 2014          203           17.5167       32            22.19         1.016 \r\n 2014          204           28.6833       26.95         15.63         0 \r\n 2014          205           24.7167       27            12.42         0 \r\n 2014          206           13.8333       25.4          14.64         13.72 \r\n 2014          207           12.8983       27.09         19.03         0 \r\n 2014          208           25.9667       26.46         17.32         0 \r\n 2014          209           26.8833       23.91         14.36         0 \r\n 2014          210           26.1167       26.78         12.02         0 \r\n 2014          211           26.0667       27.73         13.01         0 \r\n 2014          212           24.3667       28.84         14.54         0 \r\n 2014          213           24.7          29.7          16.22         0 \r\n 2014          214           19.3667       30.13         13.86         0 \r\n 2014          215           25.7167       31.47         14.43         0 \r\n 2014          216           21.9667       30.19         16.08         31.75 \r\n 2014          217           4.81          24.82         17.15         0 \r\n 2014          218           9.55          24.38         17.06         0 \r\n 2014          219           8.31          23            17.97         1.524 \r\n 2014          220           18.21         26.89         18.31         0 \r\n 2014          221           23.91         29.04         17.17         0 \r\n 2014          222           15.3          28.2          15.47         0 \r\n 2014          223           21.83         27.1          16.57         0 \r\n 2014          224           26.52         25.2          13.49         0 \r\n 2014          225           26.23         28.28         11.25         0 \r\n 2014          226           22.34         28.02         15.58         0 \r\n 2014          227           10.98         24.11         15.29         0 \r\n 2014          228           7.64          24.51         17.43         0.508 \r\n 2014          229           20.26         28.84         15.66         0 \r\n 2014          230           21.27         30.01         17.91         0 \r\n 2014          231           21.33         30.32         19.04         0 \r\n 2014          232           8.2           25.34         15.89         2.286 \r\n 2014          233           13.6          31.03         19.4          0 \r\n 2014          234           16.21         31.41         22.33         4.572 \r\n 2014          235           10.25         27.61         21.56         14.73 \r\n 2014          236           22.75         34.54         20.81         0 \r\n 2014          237           22.07         34.47         20.08         0 \r\n 2014          238           21.51         28.72         19.6          0 \r\n 2014          239           13.58         26.12         17.8          0 \r\n 2014          240           5.131         22.38         18.59         24.64 \r\n 2014          241           19.41         31.76         19.62         0 \r\n 2014          242           17.92         28.78         16.97         7.62 \r\n 2014          243           22.57         32.02         16.63         0 \r\n 2014          244           19.75         28.43         18.44         17.02 \r\n 2014          245           22.59         28.5          15.29         0 \r\n 2014          246           22.49         30.88         13.86         0 \r\n 2014          247           18.34         33.53         19.18         39.12 \r\n 2014          248           11.86         26.51         14.55         13.97 \r\n 2014          249           23.33         23.62         11.99         0 \r\n 2014          250           21.15         26.44         10.95         0 \r\n 2014          251           19.25         26.81         9.09          0 \r\n 2014          252           12.01         24.93         16.48         69.09 \r\n 2014          253           10.3          24.93         12.48         33.78 \r\n 2014          254           11.28         14.73         9.56          0 \r\n 2014          255           5.641         12.82         3.804         2.032 \r\n 2014          256           23.09         16.89         2.46          0 \r\n 2014          257           20.08         21.61         2.36          0 \r\n 2014          258           9.74          20.96         7.581         2.032 \r\n 2014          259           22.2          21.23         3.927         0 \r\n 2014          260           17.59         22.95         6.047         0 \r\n 2014          261           19.46         24.61         7.157         0 \r\n 2014          262           19.96         26.34         7.006         0 \r\n 2014          263           9.21          28.22         16.93         0 \r\n 2014          264           14.61         19.41         9.52          0 \r\n 2014          265           20.58         23.41         5.31          0 \r\n 2014          266           18.91         25.4          4.835         0 \r\n 2014          267           13.24         25.9          10.21         0 \r\n 2014          268           17.37         28.56         10.93         0 \r\n 2014          269           15.77         29.43         11.03         0 \r\n 2014          270           18.14         30.19         11.51         0 \r\n 2014          271           16.12         30.02         11.72         0 \r\n 2014          272           17.26         29.97         11.3          0 \r\n 2014          273           13.38         21.41         12.24         0 \r\n 2014          274           6.824         21.37         11.33         0 \r\n 2014          275           3.542         20.77         14.24         18.29 \r\n 2014          276           7.89          14.25         4.856         15.49 \r\n 2014          277           12.83         12.13         2.784         0 \r\n 2014          278           10.88         16.54         2.976         0 \r\n 2014          279           16.29         17.24         7.167         0 \r\n 2014          280           11.56         22.09         7.48          0 \r\n 2014          281           17.46         21.14         4.976         0.762 \r\n 2014          282           11.53         19.08         8.53          7.112 \r\n 2014          283           12.34         15.26         3.432         1.016 \r\n 2014          284           16.49         17.49         1.056         0.508 \r\n 2014          285           4.077         13.14        -0.28          0.508 \r\n 2014          286           2.02          18.49         11.45         26.67 \r\n 2014          287           1.916         16.76         10.61         16.26 \r\n 2014          288           9.92          16.95         8.35          11.18 \r\n 2014          289           15.84         22.74         3.502         5.842 \r\n 2014          290           6.794         16.79         9.96          2.794 \r\n 2014          291           4.552         12.13         1.48          0.508 \r\n 2014          292           13.9          19.06        -1.19          0.762 \r\n 2014          293           15.07         21.05         5.754         0 \r\n 2014          294           15.06         16.32         2.532         0 \r\n 2014          295           15.03         16.93        -0.047         0 \r\n 2014          296           5.806         17.83         1.551         0 \r\n 2014          297           8.56          20.76         5.614         0 \r\n 2014          298           14.07         22.87         5.966         0 \r\n 2014          299           12.45         21.89         2.875         0 \r\n 2014          300           10.09         25.94         13.72         0 \r\n 2014          301           12.8          14.96         4.583         0 \r\n 2014          302           13.48         12.04        -1.16          0 \r\n 2014          303           6.327         13.39        -1.716         0 \r\n 2014          304           13.61         8.99         -4.574         0 \r\n 2014          305           13.48         8.91         -7.22          0 \r\n 2014          306           6.192         11.18        -5.101         0 \r\n 2014          307           9.46          20.59         5.522         2.286 \r\n 2014          308           6.371         15.44         5.32          1.016 \r\n 2014          309           7.336         17.13         0.772         3.556 \r\n 2014          310           8.49          9.86         -2.992         0 \r\n 2014          311           9.24          11.02        -5.03          0 \r\n 2014          312           9.52          9.22          0.388         0 \r\n 2014          313           8.07          14.41         0.59          0 \r\n 2014          314           10.91         20.74         3.987         0 \r\n 2014          315           5.162         6.189        -3.094         0 \r\n 2014          316           4.858        -3.074        -6.724         0 \r\n 2014          317           3.917        -2.638        -7.13          0 \r\n 2014          318           9.3          -2.172        -11.11         0 \r\n 2014          319           4.233        -1.454        -11.49         0 \r\n 2014          320           4.307        -1.656        -12.56         0 \r\n 2014          321           9.39         -7.587        -12.63         0 \r\n 2014          322           7.941        -5.791        -13.39         0 \r\n 2014          323           3.771        -2.142        -7.394         0 \r\n 2014          324           10.75        -1.515        -12.98         0 \r\n 2014          325           10.15         2.875        -15.16         0 \r\n 2014          326           3.178         13.57         0.346         0 \r\n 2014          327           2.859         11.15         5.522         0 \r\n 2014          328           2.54          5.552        -4.878         0 \r\n 2014          329           10.62        -1.98         -10.79         0 \r\n 2014          330           4.135        -0.28         -10.54         0 \r\n 2014          331           9.69         -3.196        -14.73         0 \r\n 2014          332           8.11          3.036        -11.44         0 \r\n 2014          333           6.83          11.24        -4.352         0 \r\n 2014          334           3.66          2.754        -7.841         0 \r\n 2014          335           4.74         -7.191        -10.95         0 \r\n 2014          336           5.796        -1.292        -13.21         0 \r\n 2014          337           8.94          2.674        -6.724         0 \r\n 2014          338           3.566         1.176        -6.48          0 \r\n 2014          339           2.05          4.38          0.054         0 \r\n 2014          340           6.329         5.724        -3.46          0 \r\n 2014          341           4.753         2.865        -5.182         0 \r\n 2014          342           1.177         4.552        -0.988         0 \r\n 2014          343           5.589         3.218        -3.824         0 \r\n 2014          344           2.053         0.832        -1.444         0 \r\n 2014          345           5.892         1.854        -4.889         0 \r\n 2014          346           2.229         3.804        -3.408         0 \r\n 2014          347           2.489         8.85         -4.554         0 \r\n 2014          348           1.935         11.33         6.895         0 \r\n 2014          349           2.0375        9.85          7.561         0 \r\n 2014          350           2.14          8.21         -7.1           8.89 \r\n 2014          351           7.793        -1.838        -8.75          0 \r\n 2014          352           4.846        -1.292        -9.51          0 \r\n 2014          353           5.688         0.185        -5.932         0 \r\n 2014          354           1.406         1.238        -1.312         0 \r\n 2014          355           1.845         5.643         1.217         0 \r\n 2014          356           1.031         6.248         2.541         0 \r\n 2014          357           4.151         7.056         2.471         16 \r\n 2014          358           5.9735        2.814         0.711         0 \r\n 2014          359           7.796         9.67         -0.522         0 \r\n 2014          360           5.722         11.76         3.401         0 \r\n 2014          361           2.262         7.914        -5.466         0.51 \r\n 2014          362           8.93          2.602        -9.32          0 \r\n 2014          363           5.034        -1.009        -9.69          0 \r\n 2014          364           8.07         -8.85         -15.41         0 \r\n 2014          365           9.07         -4.99         -17.91         0 \r\n 2015          1             7.641         1.642        -9.87          0 \r\n 2015          2             6.017         2.168        -11.5          0 \r\n 2015          3             1.819         1.298        -1.413         1.27 \r\n 2015          4             7.477         0.388        -17.64         5.08 \r\n 2015          5             4.488        -13.06        -18.95         1.02 \r\n 2015          6             7.838        -11.84        -23.01         9.4 \r\n 2015          7             10.02        -13.29        -23.7          0 \r\n 2015          8             4.235        -5.071        -25.09         0 \r\n 2015          9             8.91         -11.62        -18.32         0.25 \r\n 2015          10            7.099        -3.014        -20.91         0 \r\n 2015          11            5.541         0.68         -6.521         0 \r\n 2015          12            10.43        -2.992        -19.37         2.03 \r\n 2015          13            10.49        -5.67         -20.91         0 \r\n 2015          14            7.283        -3.925        -20.25         0 \r\n 2015          15            10.21         3.432        -12.09         0 \r\n 2015          16            10.03         4.128        -9.55          0 \r\n 2015          17            5.15          6.542        -2.031         0 \r\n 2015          18            9.96          6.866        -4.199         0 \r\n 2015          19            6.85          5.361        -5.72          0 \r\n 2015          20            4.121         4.775        -0.604         0.76 \r\n 2015          21            1.658         2.633        -0.078         0 \r\n 2015          22            2.279        -0.036        -1.656         0 \r\n 2015          23            10.35         4.118        -4.858         0 \r\n 2015          24            10.36         9.76         -2.75          0 \r\n 2015          25            4.275         1.864        -7.617         2.54 \r\n 2015          26            4.641         2.693        -8.23          4.83 \r\n 2015          27            4.241         2.532        -3.044         1.78 \r\n 2015          28            9.53          4.047        -2.992         0 \r\n 2015          29            2.168         2.936        -3.176         0 \r\n 2015          30            11.99         1.014        -8.3           0 \r\n 2015          31            1.959         2.916        -4.756         0 \r\n 2015          32            2.793         0.064        -10.91         22.86 \r\n 2015          33            4.636        -9.72         -18.81         9.14 \r\n 2015          34            5.807        -2.648        -13.14         0 \r\n 2015          35            7.119        -5.203        -17.54         0 \r\n 2015          36            13.61        -10.23        -24.23         1.78 \r\n 2015          37            11.56         3.461        -13.71         0 \r\n 2015          38            12.34         9.36         -9.74          0 \r\n 2015          39            10.64         5.29         -2.71          0 \r\n 2015          40            6.689        -1.697        -8.06          0 \r\n 2015          41            11.11         0.024        -9.32          0 \r\n 2015          42            9.7           1.783        -10.46         0 \r\n 2015          43            13.83        -9.38         -15.12         0 \r\n 2015          44            10.54         0.904        -13.21         0 \r\n 2015          45            14.1         -1.96         -16.89         0 \r\n 2015          46            5.723        -11.4         -16.69         0 \r\n 2015          47            11.54        -5.699        -13.32         0 \r\n 2015          48            13.04        -5.396        -12.01         0 \r\n 2015          49            14.46        -11.53        -17.83         0 \r\n 2015          50            15.71        -10.31        -20.8          0 \r\n 2015          51            11.94        -0.866        -14.2          0 \r\n 2015          52            3.672         0.378        -7.444         0 \r\n 2015          53            14.86        -7.354        -18.14         0 \r\n 2015          54            16.76        -8.57         -20.58         0 \r\n 2015          55            12.05         3.38         -13.41         0 \r\n 2015          56            5.701        -3.986        -10.01         0 \r\n 2015          57            17.14        -9.65         -21.66         11.94 \r\n 2015          58            18.01        -9.24         -26.91         0 \r\n 2015          59            14.93        -5.608        -27.62         0 \r\n 2015          60            14.88        -1.98         -18.15         0 \r\n 2015          61            14.84         0.408        -13.57         0 \r\n 2015          62            5.958         1.945        -7.668         10.41 \r\n 2015          63            15.97        -6.826        -12.13         0 \r\n 2015          64            18.93        -9.44         -18.15         0 \r\n 2015          65            17.95         5.238        -17.17         0 \r\n 2015          66            18.49         6.794        -3.439         0 \r\n 2015          67            15.67         11.92        -2.345         0 \r\n 2015          68            18.75         12.99        -3.976         0 \r\n 2015          69            15.44         17.25         1.662         0 \r\n 2015          70            19.03         14.93        -0.198         0 \r\n 2015          71            18.75         17.32        -2.71          0 \r\n 2015          72            16.16         20.91         0.489         0 \r\n 2015          73            17.88         16.77         2.026         0 \r\n 2015          74            14.28         19.62        -2.973         0 \r\n 2015          75            17.22         27.51         9.52          0 \r\n 2015          76            20.6          10.83         1.804         0 \r\n 2015          77            11.27         9.99          0.499         0 \r\n 2015          78            5.586         8.15         -2.184         0 \r\n 2015          79            18.88         16.02        -0.786         0 \r\n 2015          80            20.69         15.48         0.752         0 \r\n 2015          81            15.61         11.99        -1.494         0 \r\n 2015          82            6.689         3.482        -0.786         4.83 \r\n 2015          83            8.55          5.4          -1.372         0.76 \r\n 2015          84            6.242         9.27          1.318         2.79 \r\n 2015          85            22.14         9.29         -2.648         0 \r\n 2015          86            22.77         3.866        -5.588         0 \r\n 2015          87            22.75         6.866        -7.658         0 \r\n 2015          88            12.57         16.2         -0.31          0 \r\n 2015          89            21.2          22.33        -0.401         2.29 \r\n 2015          90            22.9          22.17         4.351         0 \r\n 2015          91            22.69         27.11         1.682         0 \r\n 2015          92            16.45         21.47         8.65          0.762 \r\n 2015          93            18.42         10.99        -1.596         0 \r\n 2015          94            22.93         18.59        -4.33          0 \r\n 2015          95            23.33         21.63         6.088         0 \r\n 2015          96            8.8           17.52         5.118         0.508 \r\n 2015          97            4.587         13.25         6.481         0 \r\n 2015          98            8.68          17.3          7.258         1.016 \r\n 2015          99            9.43          25.97         4.209         0.762 \r\n 2015          100           24.57         16            1.268         0 \r\n 2015          101           24.47         20.69        -2.973         0 \r\n 2015          102           9.85          18.86         5.946         0 \r\n 2015          103           16.34         18.55         4.714         13.46 \r\n 2015          104           20.41         20.87         2.572         0 \r\n 2015          105           21.94         23.45         6.38          0 \r\n 2015          106           22.95         24.95         6.512         0 \r\n 2015          107           20.51         27.66         8.55          0 \r\n 2015          108           14.9          28.56         10.12         0 \r\n 2015          109           14.84         25.38         9.64          7.366 \r\n 2015          110           13.79         11.57         1.844         0.508 \r\n 2015          111           18.65         14.21         2.006         0 \r\n 2015          112           27.12         12.89         0.337         0 \r\n 2015          113           27.35         15.97        -1.12          0 \r\n 2015          114           7.21          19.54         1.217         5.588 \r\n 2015          115           3.321         9.96          5.785         18.8 \r\n 2015          116           27.31         16.19         1.906         0 \r\n 2015          117           27.33         19.77         0.772         0 \r\n 2015          118           27.13         22.63         2.38          0 \r\n 2015          119           22.09         23.72         7.944         0 \r\n 2015          120           27.53         19.15         3.846         0 \r\n 2015          121           22.08         22.05         2.33          0 \r\n 2015          122           20.31         25.58         5.966         0 \r\n 2015          123           17.3          29.07         12.74         6.604 \r\n 2015          124           17.76         24.79         15.22         46.74 \r\n 2015          125           19.8          26.67         16.62         13.97 \r\n 2015          126           22.03         29.63         13.93         2.794 \r\n 2015          127           18.77         29.44         17.65         5.588 \r\n 2015          128           7.513         20.29         16.53         1.524 \r\n 2015          129           20.77         24.51         11.98         0 \r\n 2015          130           7.049         19.56         13.37         8.64 \r\n 2015          131           17.7          19.46         10.2          0.762 \r\n 2015          132           24.89         18.92         7.52          0 \r\n 2015          133           27.46         22.03         4.624         0 \r\n 2015          134           5.538         17.31         10.41         11.43 \r\n 2015          135           21.76         26.62         15.3          0 \r\n 2015          136           17.54         27.91         17.55         1.778 \r\n 2015          137           19.33         28.31         17.96         0.254 \r\n 2015          138           29.19         21.24         7.581         4.572 \r\n 2015          139           17.552        16.64         5.4           0 \r\n 2015          140           6.599         11.43         4.402         2.54 \r\n 2015          141           29.36         23.28         3.562         0 \r\n 2015          142           25.78         26.25         8.65          0 \r\n 2015          143           27.21         27.64         11.38         0 \r\n 2015          144           8.55          26.15         15.1          32 \r\n 2015          145           24.95         27.04         17.8          19.81 \r\n 2015          146           16.69         24.02         17.09         21.84 \r\n 2015          147           27.84         27.8          15.5          0 \r\n 2015          148           26.26         29.55         14.08         0 \r\n 2015          149           17.72         29.38         18.47         0.508 \r\n 2015          150           6.289         20.78         12.48         0 \r\n 2015          151           27.76         20.86         7.924         0 \r\n 2015          152           15.97         23.15         10.65         0 \r\n 2015          153           27.88         24.38         12.68         0 \r\n 2015          154           22.77         27.61         12.03         0 \r\n 2015          155           25.47         30.7          17.12         0 \r\n 2015          156           26.8          30.46         18.94         0 \r\n 2015          157           23.5          27.95         14.28         0 \r\n 2015          158           15.27         30.07         18.7          21.59 \r\n 2015          159           25.62         29.88         17.32         0 \r\n 2015          160           28.61         34.21         15.7          0 \r\n 2015          161           26.63         34.28         22.8          0.254 \r\n 2015          162           9.08          27.18         19.43         26.16 \r\n 2015          163           9.98          24.38         19.2          5.334 \r\n 2015          164           12.28         27.79         18.51         26.92 \r\n 2015          165           24.51         29.83         20.82         2.286 \r\n 2015          166           11.74         27.87         19.8          17.53 \r\n 2015          167           29.39         27.94         16.12         1.27 \r\n 2015          168           17.14         26.3          14.18         8.64 \r\n 2015          169           23.12         26.78         18.99         0 \r\n 2015          170           28.42         26.72         16.56         0 \r\n 2015          171           23.52         31.07         13.96         2.54 \r\n 2015          172           18.27         29.2          18.25         0 \r\n 2015          173           7.935         29.78         22.21         0.254 \r\n 2015          174           28.91         27.37         17.08         0 \r\n 2015          175           8.29          22.78         16.74         28.7 \r\n 2015          176           15.33         27.5          18.99         3.556 \r\n 2015          177           11.17         22.94         15.93         0 \r\n 2015          178           27.29         27.35         14.68         0 \r\n 2015          179           8.22          22.61         15.16         2.54 \r\n 2015          180           21.67         28.17         16.17         0 \r\n 2015          181           23.16         28.43         16.24         0 \r\n 2015          182           20.86         23.93         17.09         0 \r\n 2015          183           21.21         23.63         13.3          0 \r\n 2015          184           26.38         26.9          15.06         0 \r\n 2015          185           25.85         28            12.87         0 \r\n 2015          186           24.83         29.96         14.45         0 \r\n 2015          187           8.99          27.99         18.47         121.4 \r\n 2015          188           24.82         23.25         14.98         0 \r\n 2015          189           12.13         19.87         14.82         0.254 \r\n 2015          190           26.18         26.56         14.63         0 \r\n 2015          191           26.3          27.56         14.55         0 \r\n 2015          192           10.958        27.96         19.19         21.59 \r\n 2015          193           25.61         32.65         20.56         0 \r\n 2015          194           24.09         34.72         23.2          0 \r\n 2015          195           27.21         31.08         20.54         0 \r\n 2015          196           21.74         27.39         19.38         0.508 \r\n 2015          197           7.315         27.06         18.78         22.86 \r\n 2015          198           27.49         34.11         21.37         0.508 \r\n 2015          199           21.54         32.36         24.45         0 \r\n 2015          200           18.79         29.49         20.34         0 \r\n 2015          201           17.81         29.83         18.73         0 \r\n 2015          202           28.67         27.87         15.69         0 \r\n 2015          203           23.3          28.38         14.13         0 \r\n 2015          204           28.02         30.09         15.44         0 \r\n 2015          205           15.48         28.88         15.87         2.286 \r\n 2015          206           20.73         32.78         21.71         0 \r\n 2015          207           17.08         30.77         21.95         1.016 \r\n 2015          208           20.33         31.37         20.84         0 \r\n 2015          209           15.38         31.29         20.79         0.508 \r\n 2015          210           26.77         29.25         19.07         1.524 \r\n 2015          211           27.88         31.15         17.68         0 \r\n 2015          212           27.59         31.51         18.53         0 \r\n 2015          213           26.38         30.8          14.49         0 \r\n 2015          214           24.61         32.9          19.58         0.508 \r\n 2015          215           27.53         28.39         15.86         2.032 \r\n 2015          216           18            27.34         13.59         0 \r\n 2015          217           20.7          28.62         16.93         0 \r\n 2015          218           25.01         29.47         15.06         0 \r\n 2015          219           20.79         30.96         16.95         3.556 \r\n 2015          220           10.51         27.15         18.74         0 \r\n 2015          221           12.69         28.49         19.27         26.16 \r\n 2015          222           19.8          29.6          18.77         0 \r\n 2015          223           26.54         28.48         16.39         0 \r\n 2015          224           25.83         28.82         14.76         0 \r\n 2015          225           22.99         29.99         14.54         0.254 \r\n 2015          226           20.37         30.77         20.17         0 \r\n 2015          227           25.06         31.42         18.47         1.524 \r\n 2015          228           24.37         31.51         19.05         0 \r\n 2015          229           16.7          30.68         19.92         11.68 \r\n 2015          230           11.65         27.5          18.65         22.35 \r\n 2015          231           10.74         20.57         14.07         0 \r\n 2015          232           25.96         25.28         13.08         0 \r\n 2015          233           24.85         28.97         12.5          0 \r\n 2015          234           18.95         26.93         14.03         3.81 \r\n 2015          235           24.84         24.38         12.92         3.302 \r\n 2015          236           25.5          23.45         11.05         0 \r\n 2015          237           24.87         24.13         11.09         0 \r\n 2015          238           23.73         25.7          9.82          3.81 \r\n 2015          239           17.41         24.01         10.22         0 \r\n 2015          240           6.972         23.16         14.39         6.604 \r\n 2015          241           6.358         24.82         16.64         0 \r\n 2015          242           18.21         27.28         16.47         0 \r\n 2015          243           20.53         31.91         15.29         0 \r\n 2015          244           20.53         32.99         21            0 \r\n 2015          245           12.95         30.55         18.75         0 \r\n 2015          246           21.14         33.41         19.12         0 \r\n 2015          247           20.3          34.26         19.61         0 \r\n 2015          248           18.33         34.25         21.33         0 \r\n 2015          249           20.36         35.33         20.01         0 \r\n 2015          250           17.48         31.23         21.7          11.68 \r\n 2015          251           10.55         28.17         19.52         0.254 \r\n 2015          252           21.71         29.37         15.7          0 \r\n 2015          253           16.79         28.44         16.24         1.524 \r\n 2015          254           19.85         22.25         10.04         6.35 \r\n 2015          255           19.9          20.53         8.21          0 \r\n 2015          256           22.02         23.53         5.966         0 \r\n 2015          257           19.72         30.08         12.65         0 \r\n 2015          258           20.2          30.72         17            0 \r\n 2015          259           19.18         31.69         15.36         0 \r\n 2015          260           8.68          31.88         18.96         5.08 \r\n 2015          261           3.471         24.02         15.7          46.74 \r\n 2015          262           20.83         22.89         9.55          0 \r\n 2015          263           20.61         24.5          7.258         0 \r\n 2015          264           20.33         26.23         8.15          0 \r\n 2015          265           12.7          28.54         11.53         0 \r\n 2015          266           17.8          30.34         12.87         0 \r\n 2015          267           13.8          29.59         12.42         0 \r\n 2015          268           15.38         27.21         12.53         0 \r\n 2015          269           18.82         27.88         11.79         0 \r\n 2015          270           12.48         26.37         12.3          0 \r\n 2015          271           16.06         30.13         13.94         0 \r\n 2015          272           6.036         19.55         9.16          4.826 \r\n 2015          273           19.11         19.22         6.683         0 \r\n 2015          274           17.95         18.53         4.633         0 \r\n 2015          275           18.78         20            4.351         0 \r\n 2015          276           18.31         17.98         5.542         0 \r\n 2015          277           5.388         15.68         10.42         0 \r\n 2015          278           7.421         18.33         11.83         0 \r\n 2015          279           11.36         24.68         13.55         0 \r\n 2015          280           15.32         26.97         11.83         0 \r\n 2015          281           13.84         28.99         9.11          0 \r\n 2015          282           11.51         18.55         4.937         0 \r\n 2015          283           16.03         20.6          0.985         0 \r\n 2015          284           16.19         28.96         11.55         0 \r\n 2015          285           14.36         24.28         12.9          0 \r\n 2015          286           16.23         19.51         6.764         0 \r\n 2015          287           16.24         19.98         4.37          0 \r\n 2015          288           15.49         23.16         5.18          0 \r\n 2015          289           14.73         13.06         0.57          0 \r\n 2015          290           16            13.39        -3.804         0 \r\n 2015          291           15.37         18.02        -2.507         0 \r\n 2015          292           12.62         26.24         9.21          0 \r\n 2015          293           7.632         23.56         14.13         5.842 \r\n 2015          294           8.92          24.95         12.66         0 \r\n 2015          295           11.95         19.61         10.95         0 \r\n 2015          296           2.247         18.78         12.26         8.38 \r\n 2015          297           4.446         18.88         4.39          0 \r\n 2015          298           14.28         17.59         0.286         0 \r\n 2015          299           11.11         17.73         1.318         0 \r\n 2015          300           1.509         11.29         4.624         32 \r\n 2015          301           2.23          11.71         2.774         6.096 \r\n 2015          302           4.61          10.22         1.884         0 \r\n 2015          303           8.19          12.37        -1.515         1.524 \r\n 2015          304           2.131         12.25         7.864         9.65 \r\n 2015          305           12.86         21.56         6.158         0 \r\n 2015          306           12.75         23.97         4.614         0 \r\n 2015          307           7.163         18.31         3.674         0 \r\n 2015          308           8.05          19.16         8.81          0 \r\n 2015          309           5.578         20.86         6.452         0 \r\n 2015          310           9.53          12.14         3.492         0 \r\n 2015          311           11.93         11.21        -1.181         0 \r\n 2015          312           12.4          13.17        -4.108         0 \r\n 2015          313           12.22         13.39        -4.301         0 \r\n 2015          314           11.68         15.68        -4.798         0 \r\n 2015          315           4.809         17.57         6.108         0 \r\n 2015          316           9.33          11.49         3.179         0 \r\n 2015          317           11.8          10.18        -2.648         0 \r\n 2015          318           10.42         19.23        -4.189         0 \r\n 2015          319           10.08         19.03         4.38          0 \r\n 2015          320           1.555         12.7          9.42          0 \r\n 2015          321           3.1555        17.31         10.18         0 \r\n 2015          322           4.756         16.95         6.834         0 \r\n 2015          323           11.01         8.11          1.186         0 \r\n 2015          324           4.693         5.734        -2.386         0 \r\n 2015          325           8.68          0.084        -13.41         0 \r\n 2015          326           9.67          0.975        -17.32         0 \r\n 2015          327           10.55         5.421        -3.46          0 \r\n 2015          328           9.4           7.178        -5.74          0 \r\n 2015          329           3.724         12.62         0.327         0 \r\n 2015          330           1.091         16.65         3.594         0 \r\n 2015          331           1.975         3.603        -0.036         0 \r\n 2015          332           3.773         1.702        -1.798         0 \r\n 2015          333           3.429         3.36         -2.528         0 \r\n 2015          334           2.165         4.664         1.46          0 \r\n 2015          335           4.208         4.835        -0.432         10.41 \r\n 2015          336           4.086         2.622        -1.859         0 \r\n 2015          337           3.76          4.614        -3.652         0.25 \r\n 2015          338           9.62          10.37        -5.548         0 \r\n 2015          339           9.56          9.78         -2.548         0 \r\n 2015          340           1.923         4.573        -4.311         0 \r\n 2015          341           3.248         6.452         0.216         0 \r\n 2015          342           4.284         9.01         -4.168         0 \r\n 2015          343           7.755         10.83         0.428         0 \r\n 2015          344           4.895         14.11         4.492         0 \r\n 2015          345           4.445         11.96         0.064         0 \r\n 2015          346           3.448         13.63         9.24          0 \r\n 2015          347           3.1615        17.05         10.89         2.29 \r\n 2015          348           2.875         15.89         3.552         35.05 \r\n 2015          349           2.454         6.028         2.471         0.51 \r\n 2015          350           6.043         9.6          -0.806         0 \r\n 2015          351           4.241         2.502        -3.541         0 \r\n 2015          352           7.469         3.239        -6.947         0 \r\n 2015          353           8.77          1.238        -10.35         0 \r\n 2015          354           3.966         11.15        -0.452         0 \r\n 2015          355           1.738         10.32         1.43          11.18 \r\n 2015          356           2.307         6.057        -0.24          11.43 \r\n 2015          357           3.773         15.43         2.612         0 \r\n 2015          358           4.544         5.118        -1.515         14.22 \r\n 2015          359           2.382         1.48         -1.181         0 \r\n 2015          360           1.321         4.452         1.217         0 \r\n 2015          361           3.61          3.036         0.418         0.25 \r\n 2015          362           1.07          1.176        -2.031         4.57 \r\n 2015          363           6.193        -1.818        -4.371         25.4 \r\n 2015          364           5.537        -1.585        -4.473         0.51 \r\n 2015          365           8.04         -2.486        -6.906         0.51 \r\n 2016          1             8.68          1.622        -6.886         0 \r\n 2016          2             9.47          0.195        -9.14          0 \r\n 2016          3             3.059        -2.184        -7.718         0 \r\n 2016          4             9.6           1.906        -10.46         0 \r\n 2016          5             8.81          1.48         -12.03         0 \r\n 2016          6             5.453         1.966        -6.643         0 \r\n 2016          7             2.089         3.794         1.156         0 \r\n 2016          8             1.643         3.784         0.864         4.06 \r\n 2016          9             2.509         0.994        -15.89         3.05 \r\n 2016          10            10.06        -13.42        -19.27         0 \r\n 2016          11            4.716        -3.317        -14.39         0 \r\n 2016          12            10.12        -3.46         -16.61         0.25 \r\n 2016          13            8.19          2.077        -16.58         0 \r\n 2016          14            8.45          10.34        -0.482         0 \r\n 2016          15            1.337         5.764        -6.826         0 \r\n 2016          16            9.76         -5.264        -15.02         0 \r\n 2016          17            10.63        -14.61        -20.62         0 \r\n 2016          18            9.45         -12.94        -20.52         0 \r\n 2016          19            6.392        -8.65         -17.05         0 \r\n 2016          20            10.42        -2.932        -16.75         2.29 \r\n 2016          21            10.1         -0.412        -13.28         0 \r\n 2016          22            3.859        -3.216        -9.14          0 \r\n 2016          23            10.06        -0.522        -13.16         0 \r\n 2016          24            8.55          2.976        -6.764         0 \r\n 2016          25            1.875         2.148        -5.466         0 \r\n 2016          26            2.651        -1.343        -3.642         4.57 \r\n 2016          27            9.74          4.008        -3.752         0 \r\n 2016          28            5.906         5.18         -1.738         0 \r\n 2016          29            10.77         5.038        -5.73          0 \r\n 2016          30            6.675         7.864        -1.464         0 \r\n 2016          31            4.521         6.047        -0.452         0 \r\n 2016          32            3.329         0.692        -1.21          1.78 \r\n 2016          33            1.077         2.612        -0.725         0 \r\n 2016          34            3.282         2.926        -7.658         10.92 \r\n 2016          35            8.2           2.39         -9.12          0 \r\n 2016          36            6.985        -1.09         -7.718         0 \r\n 2016          37            12.23         6.834        -5.406         0 \r\n 2016          38            11.52         7.874         0.358         0 \r\n 2016          39            3.684         0.852        -8.88          0.51 \r\n 2016          40            11.05        -7.78         -12.53         1.02 \r\n 2016          41            6.96         -6.937        -14.28         0 \r\n 2016          42            13.08        -2.973        -15.53         0 \r\n 2016          43            12.05        -3.652        -13.71         0 \r\n 2016          44            12.37        -7.272        -16.81         0 \r\n 2016          45            4.847        -6.076        -9.26          0 \r\n 2016          46            8.52          1.066        -9.48          3.81 \r\n 2016          47            7.74          3.765        -10.3          0 \r\n 2016          48            7.686         2.35         -1.636         0 \r\n 2016          49            8.7           8.56         -2.012         0 \r\n 2016          50            15.09         15.36         2.532         0 \r\n 2016          51            15.11         14.38         1.348         0 \r\n 2016          52            10.23         7.642        -1.312         0 \r\n 2016          53            12.47         8.2          -4.554         0 \r\n 2016          54            11.11         8.37         -3.064         0 \r\n 2016          55            4.59          4.532         0.286         0 \r\n 2016          56            9.35          3.927        -2.628         0 \r\n 2016          57            9.97          5.38         -3.408         0 \r\n 2016          58            16.37         18.18        -2.446         0 \r\n 2016          59            10.73         17.96         1.41          0 \r\n 2016          60            12.37         18.1         -1.697         0 \r\n 2016          61            4.561         2.138        -8.45          0 \r\n 2016          62            11.63         0.792        -12.29         0 \r\n 2016          63            4.707         2.309        -1.232         0.51 \r\n 2016          64            8.51          5.845        -0.988         0 \r\n 2016          65            7.128         4.916        -4.432         0 \r\n 2016          66            13.88         14.6         -7.048         0 \r\n 2016          67            8.67          21.51         7.742         0 \r\n 2016          68            11.06         24.03         14.32         0 \r\n 2016          69            12.79         15.03         3.804         11.18 \r\n 2016          70            13.87         14.53         2.936         0 \r\n 2016          71            18.76         18.71        -1.069         0 \r\n 2016          72            5.968         14.43        -0.148         0 \r\n 2016          73            2.955         11.77         9.07          8.38 \r\n 2016          74            9.66          17.08         8.53          1.27 \r\n 2016          75            7.847         19.4          9.68          0 \r\n 2016          76            18.14         15.74         6.37          22.1 \r\n 2016          77            18.3          15.24         0.67          0.25 \r\n 2016          78            15.6          8.57         -1.677         0 \r\n 2016          79            8.6           6.623        -0.432         0 \r\n 2016          80            14.54         9.12         -1.21          0.76 \r\n 2016          81            20.15         13.99        -4.068         0 \r\n 2016          82            11.67         20.38         5.866         0 \r\n 2016          83            2.612         10.49         4.694         0 \r\n 2016          84            2.994         4.694        -1.424         7.62 \r\n 2016          85            22.08         10.66        -3.642         10.67 \r\n 2016          86            10.33         12.38         1.137         0 \r\n 2016          87            3.317         9.26          3.299         0 \r\n 2016          88            22.65         16.03        -1.079         7.62 \r\n 2016          89            21.79         17.51        -1.21          0 \r\n 2016          90            10.17         22.19         7.53          0 \r\n 2016          91            7.488         15.76         1.954         8.38 \r\n 2016          92            12.34         10.03         0.692         0.762 \r\n 2016          93            23.78         6.885        -0.886         0 \r\n 2016          94            21.97         27.86        -2.486         0 \r\n 2016          95            18.23         14.36        -1.434         0 \r\n 2016          96            10.43         9.14         -3.601         0.254 \r\n 2016          97            10.13         13.17         4.341         2.032 \r\n 2016          98            13.63         10.28         1.52          1.016 \r\n 2016          99            17.97         8            -2.345         0 \r\n 2016          100           24.68         8.59         -7.13          0 \r\n 2016          101           4.259         12.29         4.341         6.096 \r\n 2016          102           23.31         11.23        -1.434         0 \r\n 2016          103           25.44         13.89        -3.278         0 \r\n 2016          104           24.94         19.02        -0.968         0 \r\n 2016          105           24.9          21.97         1.014         0 \r\n 2016          106           24.49         26.8          4.986         0 \r\n 2016          107           23.58         29.1          6.946         0 \r\n 2016          108           24.03         29.11         8.54          0 \r\n 2016          109           17.34         28.34         9.81          2.032 \r\n 2016          110           8.5           20.82         11.63         4.572 \r\n 2016          111           8.78          19.2          7.944         2.032 \r\n 2016          112           11.74         18.74         6.007         19.81 \r\n 2016          113           12.82         18.16         8.93          0 \r\n 2016          114           22.62         21.34         7.338         0 \r\n 2016          115           21.25         27.13         11.37         0 \r\n 2016          116           23.25         27.95         13.89         0 \r\n 2016          117           9.96          16.93         7.944         2.032 \r\n 2016          118           4.178         12.3          6.895         16.76 \r\n 2016          119           8.29          14.19         8.27          0 \r\n 2016          120           8.61          11.84         6.704         0.254 \r\n 2016          121           2.255         9.87          7.157         22.35 \r\n 2016          122           3.062         9.9           7.45          18.54 \r\n 2016          123           11.16         15.74         7.823         0 \r\n 2016          124           24.82         20.61         6.37          1.016 \r\n 2016          125           26.01         19.15         6.41          0 \r\n 2016          126           28.09         20.77         3.632         0 \r\n 2016          127           27.2          30.96         7.561         0 \r\n 2016          128           16.13         24.64         11.23         0 \r\n 2016          129           18.12         22.7          10.16         2.794 \r\n 2016          130           5.243         18.29         13.51         25.65 \r\n 2016          131           14.72         23.01         14.57         4.318 \r\n 2016          132           13.44         26.1          13.36         0 \r\n 2016          133           20.52         20.44         9.69          0 \r\n 2016          134           16.61         22.62         6.057         10.92 \r\n 2016          135           27.88         13.58         4.098         0 \r\n 2016          136           28.04         18.09         3.522         0 \r\n 2016          137           18.14         19.42         10.25         0 \r\n 2016          138           14.24         17.81         6.652         0 \r\n 2016          139           29.8          21.36         4.472         0 \r\n 2016          140           28.14         23.9          5.491         0 \r\n 2016          141           12.15         21.43         10            0 \r\n 2016          142           28.17         27.06         7.178         0 \r\n 2016          143           29.03         30.12         12.69         0 \r\n 2016          144           26.9          31.25         10.67         0 \r\n 2016          145           25.46         31.52         17.57         0 \r\n 2016          146           20.23         30.3          15.82         0 \r\n 2016          147           22.33         31.89         18.96         0.254 \r\n 2016          148           13.61         27.63         17.33         27.69 \r\n 2016          149           23.19         27.97         17.67         4.318 \r\n 2016          150           28.83         28.68         17.37         0 \r\n 2016          151           24.82         30.88         16.94         5.842 \r\n 2016          152           17.02         27.7          17.31         28.19 \r\n 2016          153           28.27         27.86         16.4          0 \r\n 2016          154           30.26         27.29         13.91         0 \r\n 2016          155           29.01         31.08         14.67         0 \r\n 2016          156           26.64         28.53         17.83         0 \r\n 2016          157           28.49         29.47         16.55         0 \r\n 2016          158           29.73         28.85         15.44         0 \r\n 2016          159           30.83         24.25         12.26         0 \r\n 2016          160           29.72         28.71         9.7           0 \r\n 2016          161           23.95         34.29         16.59         2.54 \r\n 2016          162           28.53         35.14         20.82         0 \r\n 2016          163           21.39         34.33         21.59         0 \r\n 2016          164           22.6          30.92         20.58         0 \r\n 2016          165           27            34.63         18.19         0 \r\n 2016          166           24.1          33.5          21.39         13.21 \r\n 2016          167           29.75         35.77         20.84         0 \r\n 2016          168           29.94         30.41         18.57         0 \r\n 2016          169           29.75         30.79         18.32         0 \r\n 2016          170           29.24         32.56         16.31         0 \r\n 2016          171           29.32         33.92         15.98         0 \r\n 2016          172           23.2          34.47         20.81         0 \r\n 2016          173           29.75         31.76         17.48         1.016 \r\n 2016          174           20.96         30.93         18.12         49.53 \r\n 2016          175           27.78         28.72         18.55         0 \r\n 2016          176           28.11         29.8          15.86         0 \r\n 2016          177           25.72         35.06         20.52         0 \r\n 2016          178           25.2          32.54         21.93         1.27 \r\n 2016          179           29            31.71         19.62         0 \r\n 2016          180           28.08         25.45         14.79         0 \r\n 2016          181           22.58         25.77         12.2          0 \r\n 2016          182           12.109        25.67         16.29         21.59 \r\n 2016          183           30.12         24.58         15.05         0 \r\n 2016          184           9.55          20.35         14.99         0 \r\n 2016          185           14.77         21.04         13.77         0 \r\n 2016          186           11.7          24.7          17.37         0 \r\n 2016          187           24.09         31.36         19.07         0 \r\n 2016          188           16.13         27.39         20.1          25.65 \r\n 2016          189           13.532        28.85         19.5          2.286 \r\n 2016          190           29.73         30.02         18.9          0 \r\n 2016          191           29.58         29.21         17.19         0 \r\n 2016          192           12.84         27.62         16.4          12.45 \r\n 2016          193           28.48         32.95         20.44         0 \r\n 2016          194           21.23         29.52         19.47         6.604 \r\n 2016          195           16.39         30.43         19.2          38.61 \r\n 2016          196           28.14         29.65         18.98         0 \r\n 2016          197           17.291        24.54         15.86         0 \r\n 2016          198           28.3          27.53         13.76         0 \r\n 2016          199           13.11         30.7          18.29         10.16 \r\n 2016          200           20.99         31.14         21.23         1.016 \r\n 2016          201           9.5           28.47         19.17         4.826 \r\n 2016          202           18.25         30.46         18.96         14.22 \r\n 2016          203           26.1          35.35         20.47         12.45 \r\n 2016          204           21.55         32.58         20.47         22.1 \r\n 2016          205           22            33.9          22.99         0 \r\n 2016          206           18.73         33.42         22.81         0 \r\n 2016          207           26.39         29.77         18.82         0 \r\n 2016          208           24.24         31.19         17.41         0 \r\n 2016          209           23.49         31.1          17.39         0 \r\n 2016          210           25.27         28.15         18.94         0 \r\n 2016          211           17.96         27.96         18.9          0 \r\n 2016          212           14            28.46         18.3          1.27 \r\n 2016          213           19.52         29.07         17.29         0 \r\n 2016          214           17.82         29.51         18.28         0 \r\n 2016          215           16.57         29.87         19.18         0.254 \r\n 2016          216           22.28         31.8          20.84         0 \r\n 2016          217           24.63         32.38         19.34         32 \r\n 2016          218           23.09         28.04         17.69         1.016 \r\n 2016          219           25.08         27.5          15.77         0 \r\n 2016          220           17.02         27.51         15.12         0 \r\n 2016          221           24.67         29.28         16.7          0 \r\n 2016          222           20.21         30.98         17.39         0 \r\n 2016          223           22.57         32.16         19.19         0 \r\n 2016          224           16.02         32.42         21.63         22.35 \r\n 2016          225           12.28         28.19         21.43         35.05 \r\n 2016          226           22.78         28.47         19.42         0 \r\n 2016          227           14.7          28.12         17.32         0 \r\n 2016          228           15.06         27.15         17.98         0 \r\n 2016          229           24.61         30.22         17.34         0 \r\n 2016          230           19.37         30.7          19.99         0 \r\n 2016          231           22.99         32.73         21.38         15.49 \r\n 2016          232           22.54         32.26         20.02         14.22 \r\n 2016          233           15.58         24.81         15.64         6.858 \r\n 2016          234           24.34         24.47         13.51         0 \r\n 2016          235           24.87         27.7          11.28         0 \r\n 2016          236           20.51         28.55         13.71         0 \r\n 2016          237           20.45         31.26         20.76         47.5 \r\n 2016          238           13.47         25.92         17.61         1.27 \r\n 2016          239           16.65         26.8          16.39         0.254 \r\n 2016          240           17.77         30.01         20.47         1.27 \r\n 2016          241           18.19         32.46         18.88         5.588 \r\n 2016          242           19.13         31.82         19.2          0 \r\n 2016          243           14.64         28.98         20.41         17.78 \r\n 2016          244           20.2          26.61         14.67         0 \r\n 2016          245           19.55         26.15         12.94         0 \r\n 2016          246           21.08         25.78         10.79         0 \r\n 2016          247           18.36         26.08         11.37         0 \r\n 2016          248           15.43         27.39         12.89         0 \r\n 2016          249           21.52         32.33         14.65         0 \r\n 2016          250           20.77         34.29         19.37         0 \r\n 2016          251           11.51         32.03         22.93         15.24 \r\n 2016          252           17.16         30.43         20.92         4.064 \r\n 2016          253           16.55         28.37         18.82         0 \r\n 2016          254           20.28         23.47         11.92         0.508 \r\n 2016          255           22.03         26.32         10.52         0 \r\n 2016          256           20.03         29.05         10.41         0 \r\n 2016          257           8.38          25.63         15.5          0 \r\n 2016          258           16.44         25.17         15.34         0 \r\n 2016          259           16.8          29.92         13.14         0 \r\n 2016          260           14.93         29.65         17.65         2.032 \r\n 2016          261           17.58         28.07         13.5          0 \r\n 2016          262           19.96         30.74         10.49         0 \r\n 2016          263           19.03         32.88         12.5          0 \r\n 2016          264           19.56         33.22         15.87         0 \r\n 2016          265           11.59         30.25         18.15         0.254 \r\n 2016          266           9.51          31.15         18.34         0 \r\n 2016          267           10.02         27.58         19.33         0.254 \r\n 2016          268           14.87         30.62         18.48         0 \r\n 2016          269           12.7          29.53         15.54         0 \r\n 2016          270           19.79         23.04         10.24         0 \r\n 2016          271           19.56         24            8.55          0 \r\n 2016          272           8.98          18.86         9.31          0 \r\n 2016          273           18.4          25.31         10.02         0 \r\n 2016          274           6.313         19.66         11.2          0 \r\n 2016          275           6.22          19.71         15.02         1.524 \r\n 2016          276           9.41          21.7          12.7          0 \r\n 2016          277           6.568         21.16         11.36         0 \r\n 2016          278           16.35         27.28         12.62         0 \r\n 2016          279           15            26.88         13.2          3.048 \r\n 2016          280           6.221         23.29         14.66         33.53 \r\n 2016          281           14.86         18.83         6.108         3.048 \r\n 2016          282           17.05         22.69         3.401         0 \r\n 2016          283           16.08         22.13         6.694         0 \r\n 2016          284           10.89         23.94         5.28          0 \r\n 2016          285           15.59         26.61         13.68         0 \r\n 2016          286           4.349         20.99         3.714         0 \r\n 2016          287           16.59         15.55        -1.14          0 \r\n 2016          288           12.79         20.38         0.499         0 \r\n 2016          289           6.04          25.85         13.17         0 \r\n 2016          290           10.87         27.98         19.35         0 \r\n 2016          291           12.71         32.45         21.85         0 \r\n 2016          292           14.39         25.15         8.83          0 \r\n 2016          293           7.13          21.04         7.38          0 \r\n 2016          294           11.73         14.43         3.159         0 \r\n 2016          295           13.78         13.55        -0.563         0 \r\n 2016          296           14.32         21.69         1.935         0 \r\n 2016          297           14.15         24.72         3.724         0 \r\n 2016          298           13.5          17.78         3.744         0 \r\n 2016          299           6.869         16.02         5.361         1.016 \r\n 2016          300           2.615         16.75         8.93          16.76 \r\n 2016          301           5.206         11.26         6.512         0 \r\n 2016          302           8.7           23.23         6.168         0 \r\n 2016          303           11.38         27.45         16.2          0 \r\n 2016          304           5.146         16.75         4.674         0 \r\n 2016          305           9             20.1          4.633         0 \r\n 2016          306           10.87         26.11         15.56         0 \r\n 2016          307           3.185         18.62         14.53         0 \r\n 2016          308           11.17         22.45         7.278         0 \r\n 2016          309           12.2          21.45         3.946         0 \r\n 2016          310           10.24         23.42         5.28          0 \r\n 2016          311           12.11         20.86         3.239         0 \r\n 2016          312           9.35          20.32         2.026         0 \r\n 2016          313           11.27         18.21         5.532         0 \r\n 2016          314           11.66         15.72         0.438         0 \r\n 2016          315           11.81         21.08         2.046         0 \r\n 2016          316           10.38         14.62        -0.806         0 \r\n 2016          317           11.72         12.7         -4.544         0 \r\n 2016          318           11.26         16.64        -1.677         0 \r\n 2016          319           10.21         17.59         3.804         0 \r\n 2016          320           10.76         16.99         2.39          0 \r\n 2016          321           10.67         18.18         0.094         0 \r\n 2016          322           7.745         25.25         8.57          0 \r\n 2016          323           5.121         20.63         2.875         0 \r\n 2016          324           10.05         4.361        -5.061         0 \r\n 2016          325           9.73          4.835        -7.607         0 \r\n 2016          326           9.77          7.167        -8.24          0 \r\n 2016          327           2.761         7.48          2.228         0 \r\n 2016          328           1.188         8             3.886         0 \r\n 2016          329           1.45          3.886         2.006         0 \r\n 2016          330           2.879         6.613        -3.014         0 \r\n 2016          331           8.6           12.06        -4.26          0 \r\n 2016          332           2.113         7.52          0.297         0 \r\n 2016          333           1.171         11.13         6.178         0 \r\n 2016          334           9.1           12.2          1.096         0 \r\n 2016          335           2.644         4.552         0.024         0 \r\n 2016          336           2.191         4.068         2.077         0 \r\n 2016          337           3.49          5.3          -0.756         0 \r\n 2016          338           4.354         4.219        -1.768         0 \r\n 2016          339           2.852         1.562        -0.148         0.51 \r\n 2016          340           4.931         1.966        -0.502         11.68 \r\n 2016          341           7.588         2.855        -3.824         0 \r\n 2016          342           5.786        -2.142        -6.967         0 \r\n 2016          343           3.86         -5.142        -10.13         0 \r\n 2016          344           6.603        -4.502        -9.93          0 \r\n 2016          345           2.686        -2.973        -6.664         0 \r\n 2016          346           1.432         1.925        -3.966         1.27 \r\n 2016          347           9.22         -3.946        -12.94         4.06 \r\n 2016          348           8.47         -3.592        -16.38         0 \r\n 2016          349           8.49         -6.186        -15.94         0 \r\n 2016          350           6.49         -9.65         -17.72         0 \r\n 2016          351           1.655        -5.244        -9.71          0 \r\n 2016          352           3.099        -5.314        -15.04         0 \r\n 2016          353           9.48         -15.05        -26.32         5.59 \r\n 2016          354           9.28         -7.322        -24.51         0 \r\n 2016          355           7.517         0.954        -10.28         0 \r\n 2016          356           6.726         5.522        -10.42         0 \r\n 2016          357           8.48          3.816        -3.317         0 \r\n 2016          358           2.047         3.198        -1.252         0 \r\n 2016          359           2.204         3.068         0.62          0 \r\n 2016          360           5.537         12.06         1.277         0 \r\n 2016          361           8.87          10.14        -1.707         10.92 \r\n 2016          362           8.9           3.482        -5.913         0 \r\n 2016          363           5.036         6.572        -6.704         0 \r\n 2016          364           7.217         4.128        -0.542         0 \r\n 2016          365           7.668         6.209        -6.643         0 \r\n 2016          366           7.194         5.219        -8.73          0 \r\n 2017          1             6.334         3.239        -10.7          0 \r\n 2017          2             1.364         3.299        -2.73          0 \r\n 2017          3             2.06          2.067        -10.54         1.27 \r\n 2017          4             8.74         -8.49         -13.94         0 \r\n 2017          5             4.827        -10.14        -18.21         0.25 \r\n 2017          6             9.44         -12.44        -19.21         0 \r\n 2017          7             9.47         -5.689        -16.24         0 \r\n 2017          8             6.673        -4.452        -20.5          0 \r\n 2017          9             2.42          2.612        -8.96          0 \r\n 2017          10            1.241         10.16        -4.382         0 \r\n 2017          11            3.012         6.076        -5.264         1.52 \r\n 2017          12            5.122        -4.33         -7.982         0 \r\n 2017          13            5.768        -3.57         -9.83          0 \r\n 2017          14            6.077         0.934        -7.252         0 \r\n 2017          15            3.139         0.934        -7.536         0 \r\n 2017          16            1.089         3.098        -0.614         3.81 \r\n 2017          17            2.308         2.592         0.894         18.8 \r\n 2017          18            6.632         6.976        -3.135         0 \r\n 2017          19            2.354         4.39         -3.682         0 \r\n 2017          20            3.124         6.552         1.51          4.83 \r\n 2017          21            3.155         7.772         1.045         0 \r\n 2017          22            2.775         3.684        -2.244         0 \r\n 2017          23            3.482         4.26          0.55          0 \r\n 2017          24            1.788         3.542         0.226         0 \r\n 2017          25            1.703         3.765        -0.482         1.27 \r\n 2017          26            4.217         0.479        -2.466         2.54 \r\n 2017          27            6.936         0.307        -5.334         0 \r\n 2017          28            6.927         1.43         -4.291         0 \r\n 2017          29            2.73          0.479        -8.65          0 \r\n 2017          30            6.469         7.046        -10.34         0 \r\n 2017          31            5.399         5.482         1.844         0 \r\n 2017          32            9.43          3.432        -6.684         0 \r\n 2017          33            9.05         -4.068        -10.45         0 \r\n 2017          34            12.82        -1.048        -11.48         0 \r\n 2017          35            3.28          2.249        -12.96         0 \r\n 2017          36            10.78         3.765        -4.868         0 \r\n 2017          37            10.54         12.9         -6.319         0 \r\n 2017          38            2.124         8.18         -3.601         6.35 \r\n 2017          39            7.263        -3.439        -10.33         0.76 \r\n 2017          40            13.73        -4.311        -13.35         0.25 \r\n 2017          41            11.34         12.9         -8.79          0 \r\n 2017          42            8.29          13.67        -0.958         0 \r\n 2017          43            14.31         8.19         -3.905         0 \r\n 2017          44            11.72         10.33        -6.115         0 \r\n 2017          45            13.37         11.19        -0.412         0 \r\n 2017          46            14.43         5.764        -4.787         0 \r\n 2017          47            11.23         14.11        -6.928         0 \r\n 2017          48            14.54         23.78        -3.601         0 \r\n 2017          49            15.13         20.12         0.732         0 \r\n 2017          50            13.97         22.82        -2.548         0 \r\n 2017          51            4.864         19.32         7.642         0 \r\n 2017          52            14.77         20.36         5.421         3.56 \r\n 2017          53            14.95         23.39         3.825         0 \r\n 2017          54            3.556         10.84         3.927         0 \r\n 2017          55            3.969         4.038        -3.854         2.03 \r\n 2017          56            15.94         0.064        -7.636         2.54 \r\n 2017          57            12.02         11.11        -4.878         0 \r\n 2017          58            14.85         14.14        -5.264         0 \r\n 2017          59            5.975         21.3          8.11          0.76 \r\n 2017          60            6.122         9.97         -0.26          0.76 \r\n 2017          61            12.95         3.856        -6.115         0 \r\n 2017          62            16.22         4.209        -9.75          0 \r\n 2017          63            17.1          14.19        -0.633         0 \r\n 2017          64            11.5          20.4         -0.219         0 \r\n 2017          65            6.187         20.76         11.24         0 \r\n 2017          66            16.81         13.27         2.654         11.18 \r\n 2017          67            15.98         12.83         1.662         0 \r\n 2017          68            0.565         7.561         0.842         0 \r\n 2017          69            16.29         1.035        -5.73          0 \r\n 2017          70            12.09         0.803        -6.186         0 \r\n 2017          71            10.65         1.954        -9.02          0 \r\n 2017          72            9.71          0.145        -5.101         7.62 \r\n 2017          73            20.73        -3.278        -10.43         1.78 \r\n 2017          74            20.44         1.369        -12.06         0 \r\n 2017          75            13.99         8.27         -9.28          0 \r\n 2017          76            19.17         17.37         3.401         1.02 \r\n 2017          77            13.6          9.14         -2.284         0 \r\n 2017          78            19.07         16.44        -4.777         0 \r\n 2017          79            18.04         19.06         5.704         0 \r\n 2017          80            9.82          12.05         0.307         0 \r\n 2017          81            19.64         7.843        -2.082         1.02 \r\n 2017          82            5.356         9.22          2.148         0 \r\n 2017          83            9.56          26.07         3.522         0.25 \r\n 2017          84            3.747         12.52         5.32          14.73 \r\n 2017          85            4.621         12.76         7.762         7.62 \r\n 2017          86            3.688         11.37         7.804         0 \r\n 2017          87            6.121         11.66         5.472         0 \r\n 2017          88            2.792         9.03          4.552         0 \r\n 2017          89            2.46          7.894         5.038         22.86 \r\n 2017          90            5.411         6.43          1.035         1.52 \r\n 2017          91            16.83         15.44        -1.19          0 \r\n 2017          92            3.781         12.11         7.632         0.254 \r\n 2017          93            5.799         14.19         8.7           4.826 \r\n 2017          94            6.687         13.62         8.59          1.016 \r\n 2017          95            2.904         8.99          3.724         28.7 \r\n 2017          96            23.62         13.14         1.844         0 \r\n 2017          97            23.75         15.37        -0.897         0 \r\n 2017          98            21.14         26.28         4.209         0 \r\n 2017          99            19.29         27.44         15.46         0 \r\n 2017          100           11.78         21.8          10.03         5.334 \r\n 2017          101           17.61         15.14         3.866         0 \r\n 2017          102           19.64         22.34         0.975         0 \r\n 2017          103           21.69         23.35         9.8           2.032 \r\n 2017          104           13.6          25.17         10.05         1.27 \r\n 2017          105           18.55         28.23         14.59         7.112 \r\n 2017          106           21.24         21.91         8.74          3.048 \r\n 2017          107           25.01         24.18         4.614         0 \r\n 2017          108           19.96         25.43         5.643         0 \r\n 2017          109           12.44         24.34         12.93         7.112 \r\n 2017          110           14.15         22.55         9.96          0 \r\n 2017          111           19.6          14.56         5.754         0 \r\n 2017          112           26.3          18.59         4.432         0 \r\n 2017          113           26.46         23.55         1.106         0 \r\n 2017          114           25.62         26.34         3.088         0 \r\n 2017          115           17.44         27.37         6.936         0 \r\n 2017          116           5.212         17.75         6.36          6.096 \r\n 2017          117           10.17         10.43         3.058         9.65 \r\n 2017          118           3.33          8.41          3.927         6.096 \r\n 2017          119           2.104         8.81          4.633         26.67 \r\n 2017          120           3.685         10.1          5.542         13.21 \r\n 2017          121           10.74         12.09         5.886         1.778 \r\n 2017          122           21.624        16.23         4.25          0 \r\n 2017          123           14.2          15.12         0.67          0 \r\n 2017          124           25.22         20.1          3.825         0 \r\n 2017          125           27.8          22.97         5.18          0 \r\n 2017          126           26.84         21.49         7.338         0 \r\n 2017          127           24.48         21.77         5.028         0 \r\n 2017          128           21.52         24.88         6.633         0 \r\n 2017          129           26.33         22.8          11.92         0 \r\n 2017          130           7.524         21.34         13.35         21.84 \r\n 2017          131           20.67         22.87         13.06         0 \r\n 2017          132           25.56         24.11         11.23         0 \r\n 2017          133           28            28.95         8.59          0 \r\n 2017          134           26.47         29.84         14.34         0 \r\n 2017          135           24.88         33.15         15            0 \r\n 2017          136           26.2          31.82         18.83         0 \r\n 2017          137           16.6          28.8          17.83         26.16 \r\n 2017          138           23.41         22.97         15.05         0 \r\n 2017          139           5.321         15.2          8.25          17.78 \r\n 2017          140           9.08          21.87         8.61          10.41 \r\n 2017          141           10.49         14.54         9.58          0 \r\n 2017          142           18.66         22.55         7.198         0 \r\n 2017          143           12.43         18.82         9.94          0 \r\n 2017          144           14.27         18.41         8.82          0 \r\n 2017          145           28.08         24.32         8             0 \r\n 2017          146           10.14         21.13         12.85         29.72 \r\n 2017          147           14.67         24.09         12.26         0 \r\n 2017          148           27.25         26.6          14.55         0.254 \r\n 2017          149           27.12         25.4          14.04         0 \r\n 2017          150           22.68         25.61         11.26         0 \r\n 2017          151           30.44         24.75         10.07         0 \r\n 2017          152           30.45         29.28         9.92          0 \r\n 2017          153           28.04         31.77         12.32         0 \r\n 2017          154           25.5          33.54         16.99         0 \r\n 2017          155           25.06         34.27         18.66         0 \r\n 2017          156           29.74         31.67         14.16         0 \r\n 2017          157           30.52         26.74         12.06         0 \r\n 2017          158           30.43         27.68         12.22         0 \r\n 2017          159           27.02         29.94         10.72         0 \r\n 2017          160           28.49         32.86         18.92         0 \r\n 2017          161           29.43         32.62         18.68         0 \r\n 2017          162           28.37         34.38         22.05         0 \r\n 2017          163           27.45         35.14         22.2          0 \r\n 2017          164           25.74         35.78         23.18         0 \r\n 2017          165           15.49         31.88         21.13         8.64 \r\n 2017          166           28.27         34.51         20.48         0 \r\n 2017          167           27.18         32.74         19.43         4.572 \r\n 2017          168           22.12         31.33         19.98         25.15 \r\n 2017          169           27.96         26.75         17.87         0 \r\n 2017          170           26.3          28.6          15.98         0 \r\n 2017          171           26.4          32.72         14.8          0 \r\n 2017          172           12.32         25.09         16.9          5.334 \r\n 2017          173           24.03         31.26         21.95         0 \r\n 2017          174           26.294        28.19         17.73         4.826 \r\n 2017          175           30.37         24.93         13.99         0 \r\n 2017          176           25.076        23.71         11.16         0 \r\n 2017          177           20.84         23.02         11.37         5.08 \r\n 2017          178           30.37         26.02         8.61          0 \r\n 2017          179           14.9          29.47         16.93         30.48 \r\n 2017          180           12.23         25.26         18.53         0 \r\n 2017          181           17.02         27.53         17.81         0 \r\n 2017          182           29.59         28.24         15.68         0 \r\n 2017          183           22.206        31.96         13.43         0 \r\n 2017          184           25.9          33.02         17.87         0.254 \r\n 2017          185           24.66         32.24         19.14         0 \r\n 2017          186           21.99         32.33         18.93         0.762 \r\n 2017          187           27.96         34.72         17.85         0 \r\n 2017          188           27.48         30.3          19.49         0 \r\n 2017          189           29.34         29.37         16.46         0 \r\n 2017          190           26.5          34.56         16.34         0 \r\n 2017          191           17.37         33.31         19.24         32.26 \r\n 2017          192           17.27         32.11         20.98         21.08 \r\n 2017          193           12.43         31.59         23.28         13.21 \r\n 2017          194           22.35         28.73         19.14         0 \r\n 2017          195           28.37         25.65         15.44         0 \r\n 2017          196           27.18         30.62         13.41         0 \r\n 2017          197           22.86         31.07         20.46         0 \r\n 2017          198           28.58         29.24         15.79         0 \r\n 2017          199           22.37         33.86         17.83         44.2 \r\n 2017          200           25.71         33.81         20.66         0 \r\n 2017          201           22.57         35.21         22.43         33.27 \r\n 2017          202           21.73         34.4          22.17         6.858 \r\n 2017          203           21.57         30.75         20.42         35.56 \r\n 2017          204           26.69         31.56         19.02         0 \r\n 2017          205           17.82         26.04         16.99         0 \r\n 2017          206           26.34         29.88         16.34         0 \r\n 2017          207           13.76         30.29         20.24         17.78 \r\n 2017          208           19.84         30.15         19.29         0.254 \r\n 2017          209           26.16         28.09         15.93         0 \r\n 2017          210           25.44         27.04         13.56         0 \r\n 2017          211           24.93         28.8          12.82         0 \r\n 2017          212           22.69         29.43         15.22         0 \r\n 2017          213           23.94         30.84         17.85         0 \r\n 2017          214           24.31         31.65         16.34         0.762 \r\n 2017          215           16.73         28.82         13.79         0.508 \r\n 2017          216           27.47         24.85         10.91         0 \r\n 2017          217           20.16         27.26         12            0 \r\n 2017          218           13.87         24.82         16.18         0 \r\n 2017          219           23.58         26.57         13.88         0 \r\n 2017          220           27.07         28.59         12.24         0 \r\n 2017          221           25.98         28.71         11.74         0 \r\n 2017          222           20.03         31.22         17.27         1.016 \r\n 2017          223           23.946        25.11         14.25         0 \r\n 2017          224           26.17         26.66         10.7          0 \r\n 2017          225           18.78         25.8          10.35         0 \r\n 2017          226           16.15         28.17         11.94         3.81 \r\n 2017          227           20.01         29.72         17.58         0 \r\n 2017          228           17.29         29.51         20.01         0 \r\n 2017          229           20.48         28.25         19.32         0 \r\n 2017          230           21.46         29.42         16.3          0 \r\n 2017          231           24.05         29.6          16.23         0.508 \r\n 2017          232           11.05         29.88         16.24         0 \r\n 2017          233           10.71         28.53         18.33         10.92 \r\n 2017          234           23            25.49         13.69         0.508 \r\n 2017          235           24.93         25.88         12.23         0 \r\n 2017          236           18.22         26.23         12.94         0 \r\n 2017          237           16.4          24.29         14.47         0.508 \r\n 2017          238           13.06         26.54         13.65         0 \r\n 2017          239           6.412         23.06         17.43         8.13 \r\n 2017          240           16.09         25.83         16.32         0 \r\n 2017          241           20.69         24.81         13.58         0 \r\n 2017          242           21.1          27.97         13.08         0 \r\n 2017          243           16.29         25.1          11.89         0 \r\n 2017          244           21.98         23.61         8.86          0 \r\n 2017          245           17.14         25.95         7.864         0 \r\n 2017          246           20.61         29.73         12.8          0 \r\n 2017          247           9.74          27.11         14.16         0 \r\n 2017          248           19.36         22.05         9.99          0 \r\n 2017          249           16.41         19.94         7.742         0 \r\n 2017          250           21.42         23.2          7.38          0 \r\n 2017          251           21.83         28.68         7.944         0 \r\n 2017          252           20.41         28.8          11.12         0 \r\n 2017          253           21.25         26.18         9.15          0 \r\n 2017          254           21.92         26.58         6.452         0 \r\n 2017          255           18.95         27.76         9.15          0 \r\n 2017          256           21.25         30.12         8.61          0 \r\n 2017          257           19.32         31.82         10.62         0 \r\n 2017          258           19.02         33.18         14.03         0 \r\n 2017          259           17.21         32.37         15.08         0 \r\n 2017          260           14.04         23.49         12.26         2.794 \r\n 2017          261           15.22         27.45         8.8           4.826 \r\n 2017          262           14.73         29            16.64         0.254 \r\n 2017          263           17.78         34.65         19.8          40.13 \r\n 2017          264           11.19         30.98         19.46         29.97 \r\n 2017          265           18.52         34.49         18.49         0 \r\n 2017          266           18.76         35            17.16         0 \r\n 2017          267           17.51         33.31         16.36         0 \r\n 2017          268           16.51         33.17         16.95         0 \r\n 2017          269           10.82         27.03         16.81         0 \r\n 2017          270           13.36         21.62         9.14          0 \r\n 2017          271           18.71         25.26         6.704         0 \r\n 2017          272           18.58         24.03         8.21          0 \r\n 2017          273           18.07         22.91         5.219         0 \r\n 2017          274           15.98         24.79         8.53          0 \r\n 2017          275           15.28         30.92         15.06         0 \r\n 2017          276           7.535         28.78         17.45         0 \r\n 2017          277           9.34          22.67         12.84         0.762 \r\n 2017          278           7.781         22.91         11.49         0 \r\n 2017          279           2.5           22.11         19.14         12.19 \r\n 2017          280           6.043         23.39         12.38         1.016 \r\n 2017          281           16.95         27.36         7.965         0 \r\n 2017          282           16.28         25.98         8.79          0 \r\n 2017          283           1.567         15.68         10.33         26.42 \r\n 2017          284           2.893         14.59         9.27          0 \r\n 2017          285           5.121         16.86         12.66         1.016 \r\n 2017          286           11.76         24.47         11.99         10.92 \r\n 2017          287           1.861         20.19         15.2          58.42 \r\n 2017          288           5.865         17.56         3.522         0.254 \r\n 2017          289           15.81         20.22         2.33          0 \r\n 2017          290           15.35         23.25         9.14          0 \r\n 2017          291           14.9          23.63         8.93          0 \r\n 2017          292           15.14         25.32         6.168         0 \r\n 2017          293           13.76         26.28         6.088         0 \r\n 2017          294           11.43         27.74         15.74         0 \r\n 2017          295           2.512         17.63         8.19          3.556 \r\n 2017          296           6.686         17.84         5.38          0 \r\n 2017          297           4.359         10.26         3.34          0 \r\n 2017          298           12.98         16.85         2.411         0 \r\n 2017          299           11.85         22.05         0.276         0 \r\n 2017          300           4.307         4.775         1.176         0 \r\n 2017          301           2.924         3.562        -5.061         0 \r\n 2017          302           6.34          10.36        -6.886         0.508 \r\n 2017          303           5.07          7.944         1.632         0 \r\n 2017          304           10.03         4.583        -2             0 \r\n 2017          305           3.048         6.844         1.51          0.254 \r\n 2017          306           2.562         10.99         3.28          0 \r\n 2017          307           11.58         10.69        -1.272         0 \r\n 2017          308           1.817         8.92          5.926         0.508 \r\n 2017          309           3.083         11.55         0.185         0.508 \r\n 2017          310           7.398         5.4          -3.46          0 \r\n 2017          311           5.017         6.844        -2.518         0 \r\n 2017          312           11.88         9.42         -6.957         0 \r\n 2017          313           11.59         5.057        -6.319         0 \r\n 2017          314           11.1          1.906        -9.04          0 \r\n 2017          315           6.52          8.26         -0.461         0.762 \r\n 2017          316           2.288         4.714        -0.907         14.22 \r\n 2017          317           4.168         5.421        -3.378         0 \r\n 2017          318           1.358         8.94          0.469         0 \r\n 2017          319           9.62          12.44        -0.604         3.048 \r\n 2017          320           6.483         3.987        -5.426         0 \r\n 2017          321           1.662         8.02         -0.522         0 \r\n 2017          322           2.485         8            -2.072         3.556 \r\n 2017          323           8.95          4.18         -5.791         0 \r\n 2017          324           10.35         16.06         0.55          0 \r\n 2017          325           6.263         9.45         -6.287         0.254 \r\n 2017          326           9.66          2.471        -9.67          0 \r\n 2017          327           9.84          10.89        -2.366         0 \r\n 2017          328           9.55          22.79        -2.568         0 \r\n 2017          329           9.9           13.13        -1.21          0 \r\n 2017          330           8.96          14.59        -5.548         0 \r\n 2017          331           8.38          17.24        -2.82          0 \r\n 2017          332           3.273         15.45         1.39          0 \r\n 2017          333           9.12          9.46         -6.115         0 \r\n 2017          334           9.68          12.07        -1.798         0 \r\n 2017          335           9.52          13.18        -6.308         0 \r\n 2017          336           8.54          14.52        -4.98          0 \r\n 2017          337           8.16          16.21        -5.65          0 \r\n 2017          338           1.796         19.09         2.997         0.51 \r\n 2017          339           7.317         2.956        -2.73          0 \r\n 2017          340           5.526         1.722        -5.234         0 \r\n 2017          341           9.31         -2.71         -8.57          0 \r\n 2017          342           8.59          3.946        -9.99          0 \r\n 2017          343           6.057         0.631        -7.942         0 \r\n 2017          344           7.72          5.148        -6.745         0 \r\n 2017          345           5.196         7.118        -2.507         0.508 \r\n 2017          346           8.4          -1.413        -8.96          0 \r\n 2017          347           2.115         8.59         -4.574         0 \r\n 2017          348           5.418        -2.204        -9.62          0 \r\n 2017          349           3.714         4.937        -5.142         0 \r\n 2017          350           8.49          11.67        -3.703         0 \r\n 2017          351           3.284         6.452        -3.844         0.254 \r\n 2017          352           8.26          10.48         1.46          0.254 \r\n 2017          353           8.97          10.44        -0.502         0 \r\n 2017          354           7.666         5.795        -1.656         0 \r\n 2017          355           1.144         2.936        -1.292         0.762 \r\n 2017          356           2.968         2.309        -2.973         0 \r\n 2017          357           7.019        -2.992        -8.8           0 \r\n 2017          358           5.074        -4.96         -11.24         3.048 \r\n 2017          359           8.57         -9.02         -15.96         0 \r\n 2017          360           9.19         -12.78        -21.33         0 \r\n 2017          361           8.4          -14.02        -22.84         0 \r\n 2017          362           3.786        -10.39        -16.5          3.556 \r\n 2017          363           2.36         -8.39         -14.4          9.398 \r\n 2017          364           7.653        -11.62        -21            0 \r\n 2017          365           9.43         -16.01        -26.66         0 \r\n 2018          1             9.56         -19.58        -28.63         0 \r\n 2018          2             9.65         -9.95         -28.84         0 \r\n 2018          3             9.49         -7.506        -20.42         1.52 \r\n 2018          4             6.206        -13.47        -23.58         0 \r\n 2018          5             9.8          -12.78        -21.24         0 \r\n 2018          6             9.55         -11.09        -26.58         0 \r\n 2018          7             2.68          0.631        -11.42         0 \r\n 2018          8             9.6           4.624        -3.358         2.79 \r\n 2018          9             4.581         1.622        -5.446         0 \r\n 2018          10            3.785         10.61         0.651         0 \r\n 2018          11            1.302         11.12        -13.08         0 \r\n 2018          12            9.82         -7.942        -14.24         5.33 \r\n 2018          13            10.04        -9.79         -18.01         0 \r\n 2018          14            4.308        -5.122        -18.99         0 \r\n 2018          15            5.975        -3.692        -19.2          4.57 \r\n 2018          16            8.36         -10.52        -19.54         0 \r\n 2018          17            10.34        -4.949        -20.64         0 \r\n 2018          18            10.12         1.986        -8.81          0 \r\n 2018          19            8.36          6.824        -2.832         0 \r\n 2018          20            5.866         6.471        -0.24          0 \r\n 2018          21            1.312         8.8           2.188         0 \r\n 2018          22            8.48          13.49         0.165         5.08 \r\n 2018          23            4.641         1.884        -3.439         1.27 \r\n 2018          24            8.45          2.208        -5.75          0 \r\n 2018          25            10.68         10.57        -3.116         0 \r\n 2018          26            7.902         13.39        -4.048         0 \r\n 2018          27            11.38         10.86        -0.088         0 \r\n 2018          28            7.024         1.906        -5.952         0 \r\n 2018          29            11.01        -1.707        -9.25          0 \r\n 2018          30            6.738         1.622        -14.02         0 \r\n 2018          31            5.401         6.29         -1.392         0 \r\n 2018          32            12.08         0.327        -14.14         0 \r\n 2018          33            10.94        -5.284        -17.22         0 \r\n 2018          34            4.427         8.48         -8.18          3.56 \r\n 2018          35            7.716         4.492        -16.67         1.02 \r\n 2018          36            3.339        -10.68        -20.44         0.51 \r\n 2018          37            6.321        -9.03         -22.17         13.46 \r\n 2018          38            11.82        -8.42         -19.84         2.29 \r\n 2018          39            8.27         -3.622        -17.13         1.02 \r\n 2018          40            6.827        -5.446        -9.08          3.05 \r\n 2018          41            8.11         -9.06         -12.47         7.11 \r\n 2018          42            12.28        -7.272        -14.04         6.1 \r\n 2018          43            13.7         -6.745        -21.05         0.51 \r\n 2018          44            11.26         5.118        -17.87         0 \r\n 2018          45            7.772         5.805        -12.53         0 \r\n 2018          46            9.11          7.622        -1.079         0 \r\n 2018          47            15.12         1.773        -12.23         0 \r\n 2018          48            6.139         0.428        -13.43         0 \r\n 2018          49            13.62         7.843        -11.35         4.32 \r\n 2018          50            4.239         17.15         1.439         0.25 \r\n 2018          51            1.637         2.532        -4.918         24.89 \r\n 2018          52            10.3         -1.818        -7.394         12.45 \r\n 2018          53            3.942         3.794        -3.014         0 \r\n 2018          54            7.669         4.26         -2.244         5.84 \r\n 2018          55            3.126         5.159        -2.446         0.51 \r\n 2018          56            16.17         8.69         -3.094         11.43 \r\n 2018          57            16.44         14.3         -5.952         0 \r\n 2018          58            14.96         18.81        -2.486         0 \r\n 2018          59            5.712         14.31         5.996         0 \r\n 2018          60            16.54         11.69        -0.704         3.81 \r\n 2018          61            13.79         10.42        -5.081         0 \r\n 2018          62            17.46         12.15        -0.461         0 \r\n 2018          63            16.68         13.32        -0.401         0 \r\n 2018          64            1.257         6.673        -0.988         18.29 \r\n 2018          65            5.146         1.783        -0.208         15.49 \r\n 2018          66            14.19         2.148        -5.638         1.78 \r\n 2018          67            16.94         2.37         -7.739         0 \r\n 2018          68            15.61         6.057        -8.85          0 \r\n 2018          69            13.12         8.24         -5.122         0 \r\n 2018          70            13.87         8.72         -0.988         0 \r\n 2018          71            18.6          8.36         -1.677         0 \r\n 2018          72            19.4          5.583        -4.878         0 \r\n 2018          73            19.51         16.12        -7.09          0 \r\n 2018          74            18.75         13.71        -3.662         0 \r\n 2018          75            9.9           6.552        -1.94          0 \r\n 2018          76            10.26         8.56         -1.778         11.94 \r\n 2018          77            15.92         11.11        -4.938         4.06 \r\n 2018          78            17.39         12.81        -0.654         0 \r\n 2018          79            10.81         5.452        -2.518         0 \r\n 2018          80            20.75         8.41         -4.716         0 \r\n 2018          81            14.15         9.93         -5.526         0 \r\n 2018          82            11.17         10.69        -1.232         0 \r\n 2018          83            5.631         1.48         -0.776         21.34 \r\n 2018          84            22.17         5.643        -1.838         11.43 \r\n 2018          85            6.654         5.3          -0.948         0 \r\n 2018          86            8.01          4.734         1.49          17.78 \r\n 2018          87            9.18          8.51         -0.826         0 \r\n 2018          88            14.75         11.36         2.34          5.08 \r\n 2018          89            20.63         11.82        -1.13          0 \r\n 2018          90            17.21         15.04        -3.338         1.78 \r\n 2018          91            7.579        -0.846        -6.338         0 \r\n 2018          92            18.11         7.328        -9.83          0 \r\n 2018          93            3.219         4.31         -3.55          3.81 \r\n 2018          94            23.87         2.946        -8.08          0 \r\n 2018          95            12.18         10.25        -4.685         0 \r\n 2018          96            8.03          5.108        -7.292         0 \r\n 2018          97            24.43         5.361        -9.53          0 \r\n 2018          98            8.04          2.552        -8.25          0 \r\n 2018          99            11.22         3.927        -1.99          6.604 \r\n 2018          100           6.498         3.442        -4.838         0 \r\n 2018          101           13.524        8.9          -3.3           0 \r\n 2018          102           23.663        19.4          3.3           0 \r\n 2018          103           7.665         22.8          8.3           0 \r\n 2018          104           1             18.9          3.9           0.25 \r\n 2018          105           1.164         6.7           0             11.68 \r\n 2018          106           6.8           3.401        -0.432         0 \r\n 2018          107           25.14         11.26        -3.145         0 \r\n 2018          108           3.309         2.268         0.266         0.254 \r\n 2018          109           26.18         13.49         0.236         0 \r\n 2018          110           22.45         16.76        -2.568         0 \r\n 2018          111           11.26         17.25         5.088         0 \r\n 2018          112           20.63         20.5          8.61          0 \r\n 2018          113           22.15         23.19         5.643         0 \r\n 2018          114           24.41         25.15         4.088         0 \r\n 2018          115           25.04         19.89         4.694         0 \r\n 2018          116           24.14         22.74         0.732         0 \r\n 2018          117           22.68         25.47         3.784         0 \r\n 2018          118           27.36         16.55         0.692         0 \r\n 2018          119           27.63         20.52        -2.184         0 \r\n 2018          120           25.94         29.32         6.753         0 \r\n 2018          121           15.6          29.72         14.07         0 \r\n 2018          122           17.18         29.49         16.28         27.69 \r\n 2018          123           9.68          22.15         15.34         12.7 \r\n 2018          124           25.54         25.8          14.32         0 \r\n 2018          125           25.96         28.86         10.18         0 \r\n 2018          126           24.59         28.91         15.8          0 \r\n 2018          127           27.39         27.84         8.59          0 \r\n 2018          128           23.46         28.69         9.68          0 \r\n 2018          129           21.63         27.32         15.14         10.92 \r\n 2018          130           26.42         27.82         13.34         0 \r\n 2018          131           11.18         19.78         10.99         0.254 \r\n 2018          132           4.599         14.61         8.44          16.76 \r\n 2018          133           7.299         18.18         10.85         6.096 \r\n 2018          134           16.51         28.38         13.99         0 \r\n 2018          135           16.79         25.47         16.16         31.24 \r\n 2018          136           26.89         28.46         11.78         0 \r\n 2018          137           23.4          29.12         13.06         0 \r\n 2018          138           13.33         25.29         15.86         0 \r\n 2018          139           20.88         27.95         14.2          0 \r\n 2018          140           15.41         22.33         15.07         0 \r\n 2018          141           14.128        25.22         13.21         3.302 \r\n 2018          142           21.62         27.36         13.47         0 \r\n 2018          143           25.11         30.77         16.08         0 \r\n 2018          144           24.64         33.16         16.5          0 \r\n 2018          145           17.25         30.81         19.28         0.254 \r\n 2018          146           26.83         33.99         18.09         16.51 \r\n 2018          147           21.73         36.24         19.65         0 \r\n 2018          148           23.01         36.67         20.64         0.508 \r\n 2018          149           19.23         34.34         20.05         0 \r\n 2018          150           19.3          31.1          20.76         2.794 \r\n 2018          151           23.59         32.97         20.96         0 \r\n 2018          152           28.9          34.51         18.8          0 \r\n 2018          153           18.02         27.84         15.84         0 \r\n 2018          154           30.24         27.88         14.7          0 \r\n 2018          155           29.79         29.85         11.25         0 \r\n 2018          156           28.91         33.6          15.87         0 \r\n 2018          157           24.12         33.22         14.51         0 \r\n 2018          158           25.41         33.1          20.37         0 \r\n 2018          159           23.12         31            19.72         0 \r\n 2018          160           20.72         30.99         20.02         0 \r\n 2018          161           14.95         27.62         18.57         26.67 \r\n 2018          162           10.79         24.47         18.27         0 \r\n 2018          163           21.56         31.38         20.14         0 \r\n 2018          164           28.74         27.82         16.79         0 \r\n 2018          165           4.776         21.13         15.8          6.604 \r\n 2018          166           27.35         34.4          18.25         0 \r\n 2018          167           25.74         35.92         22.37         0 \r\n 2018          168           26.22         35.97         23.31         0 \r\n 2018          169           25.43         36.22         25.07         0 \r\n 2018          170           11.79         31.76         21.09         27.94 \r\n 2018          171           17.18         31.3          19.83         35.56 \r\n 2018          172           16.31         25.95         17.74         2.286 \r\n 2018          173           7.12          21.97         16.93         1.016 \r\n 2018          174           17.79         26.52         17.2          0 \r\n 2018          175           24.63         30.06         15.22         0 \r\n 2018          176           20.367        28.26         17.87         0 \r\n 2018          177           18.662        28.1          19.49         2.54 \r\n 2018          178           25.95         29.9          18.53         0 \r\n 2018          179           16.47         31.42         17.33         0 \r\n 2018          180           28.53         35.11         20.03         0 \r\n 2018          181           27.12         35.91         23.6          0 \r\n 2018          182           25.15         32.32         18.98         6.35 \r\n 2018          183           29.65         31.45         15.52         0 \r\n 2018          184           27.91         34.75         16.56         0 \r\n 2018          185           25.11         35.2          21.04         0 \r\n 2018          186           24.9          32.42         22.65         0 \r\n 2018          187           29.31         29.34         17.68         0 \r\n 2018          188           29.21         29.06         11.95         0 \r\n 2018          189           29.85         30.5          12.8          0 \r\n 2018          190           27.54         34.84         14.92         0 \r\n 2018          191           27.57         33.14         20.66         0 \r\n 2018          192           28.33         33.36         17.86         0 \r\n 2018          193           25.49         34.21         18.43         0 \r\n 2018          194           21.05         36.17         21.37         5.842 \r\n 2018          195           17.39         32.5          21.9          8.89 \r\n 2018          196           16.63         31.06         20.38         0 \r\n 2018          197           26.91         30.1          18.9          0 \r\n 2018          198           26.79         31.44         16.63         0 \r\n 2018          199           26.63         30.15         18.05         0 \r\n 2018          200           10.54         27.39         17.1          18.29 \r\n 2018          201           12.09         24.79         18.71         1.524 \r\n 2018          202           19.32         27.41         18.78         0 \r\n 2018          203           14.13         24.41         17.49         0 \r\n 2018          204           26.09         28.63         16.55         0 \r\n 2018          205           26.88         29.49         17.12         0 \r\n 2018          206           24.43         29.93         14.89         2.286 \r\n 2018          207           25.44         25.77         14.53         1.016 \r\n 2018          208           26.99         26.08         13.17         0 \r\n 2018          209           20.28         27.12         12.25         0 \r\n 2018          210           21.86         27.12         16.21         0 \r\n 2018          211           21.85         28.26         13.67         0 \r\n 2018          212           23.74         28.11         13.69         0 \r\n 2018          213           24.76         31.13         15.31         0 \r\n 2018          214           26.15         27.22         17.71         2.794 \r\n 2018          215           24.7          33.83         16.14         0 \r\n 2018          216           20.73         34.29         17            0 \r\n 2018          217           20.6          35.05         19.92         0 \r\n 2018          218           15.85         28.05         19.81         17.02 \r\n 2018          219           14.14         28.56         19.18         2.286 \r\n 2018          220           23.07         29.08         17.41         0 \r\n 2018          221           25.1          33.22         17.18         0 \r\n 2018          222           22.99         29.33         18.21         0 \r\n 2018          223           20.91         31.23         16.22         0 \r\n 2018          224           20.96         32.45         16.19         0 \r\n 2018          225           23.95         32.86         16.5          0 \r\n 2018          226           16.48         31.4          15.61         0 \r\n 2018          227           16.16         30.22         21.34         2.286 \r\n 2018          228           18.52         31.96         19.86         0 \r\n 2018          229           17.51         28.81         19.47         0.254 \r\n 2018          230           22.09         31.86         17.96         0 \r\n 2018          231           18.75         30.03         15.88         0 \r\n 2018          232           11.22         27.06         19.62         6.096 \r\n 2018          233           18.9          24.3          15.52         0 \r\n 2018          234           23.83         26.19         12.35         0 \r\n 2018          235           23.08         28.7          9.94          0 \r\n 2018          236           4.804         22.77         16.67         27.18 \r\n 2018          237           19.59         33.37         18.65         7.874 \r\n 2018          238           13.79         33.11         19.4          0 \r\n 2018          239           11.43         33.57         24.16         0 \r\n 2018          240           7.581         29.25         18.99         81.3 \r\n 2018          241           20.24         24.34         14.09         19.05 \r\n 2018          242           19.26         27.72         12.71         0 \r\n 2018          243           11.55         28.25         17.63         0 \r\n 2018          244           11.8          31.57         20.99         29.21 \r\n 2018          245           15.79         32.63         19.76         56.39 \r\n 2018          246           12.79         31.76         20.54         1.778 \r\n 2018          247           19.14         33.47         21.34         0 \r\n 2018          248           6.053         25.36         20.87         6.858 \r\n 2018          249           3.643         21.16         17.57         29.97 \r\n 2018          250           3.934         18.95         15.37         8.64 \r\n 2018          251           9.66          20.82         13.26         0 \r\n 2018          252           22.27         24.01         11.14         0 \r\n 2018          253           22.07         26.57         8.27          0 \r\n 2018          254           21.63         28.22         8.94          0 \r\n 2018          255           21.36         29.42         11.37         0 \r\n 2018          256           21.03         29.69         11.76         0 \r\n 2018          257           20.91         33.08         14.67         0 \r\n 2018          258           19.93         32.96         16.13         0 \r\n 2018          259           19.94         33.04         15.5          0 \r\n 2018          260           17.64         33.83         15.21         0 \r\n 2018          261           6.602         30.08         17.15         24.38 \r\n 2018          262           10.41         27.19         16.36         3.048 \r\n 2018          263           17.17         35.17         18.85         0 \r\n 2018          264           13.77         27.62         9.84          0 \r\n 2018          265           19.83         22.88         6.895         0 \r\n 2018          266           20.17         26.51         6.926         0 \r\n 2018          267           16.82         27.21         9.15          0 \r\n 2018          268           9.26          26.92         10.34         6.604 \r\n 2018          269           16.9          19.66         7.52          0 \r\n 2018          270           17.95         22.93         6.41          0 \r\n 2018          271           13.39         14.09         5.532         0.254 \r\n 2018          272           13.6          13.29         3.218         2.032 \r\n 2018          273           4.701         16.54         9.48          2.286 \r\n 2018          274           7.958         25.36         12.03         0.762 \r\n 2018          275           6.285         17.93         11.44         0 \r\n 2018          276           15.96         32.38         15.26         3.556 \r\n 2018          277           16.72         18.19         7.006         0 \r\n 2018          278           3.601         16.35         9.56          24.38 \r\n 2018          279           3.637         16.58         11.98         6.604 \r\n 2018          280           2.431         15.73         12.2          14.73 \r\n 2018          281           9.13          27.72         15.74         10.41 \r\n 2018          282           12.2          28.69         17.65         9.14 \r\n 2018          283           6.358         21.34         7.742         37.08 \r\n 2018          284           11.93         10.87         1.298         0 \r\n 2018          285           4.122         5.966         0.67          0.762 \r\n 2018          286           10.8          9.68          1.804         0 \r\n 2018          287           7.216         12.31         0.792         1.524 \r\n 2018          288           16.18         9.5           0.155         1.27 \r\n 2018          289           15.71         17.87        -0.584         0 \r\n 2018          290           15.84         13.05        -0.057         0 \r\n 2018          291           15.21         17.51        -2.507         0 \r\n 2018          292           3.831         15.46         8.01          0.508 \r\n 2018          293           14.98         11.13        -1.818         0 \r\n 2018          294           14.97         13.1         -5.203         0 \r\n 2018          295           13.92         20.64         1.449         0 \r\n 2018          296           14.48         14.33        -0.624         0 \r\n 2018          297           13.66         14.72        -2.304         0 \r\n 2018          298           5.828         13.08         2.239         0 \r\n 2018          299           7.278         13.8          4.594         0 \r\n 2018          300           12.04         18.29         5.238         0.762 \r\n 2018          301           13.5          15.58         4.766         1.778 \r\n 2018          302           13.13         17.13        -0.665         0 \r\n 2018          303           3.913         18.17         3.846         0.254 \r\n 2018          304           7.434         14.98         7.036         0 \r\n 2018          305           4.659         11.74         1.318         0 \r\n 2018          306           5.937         12.14        -0.897         3.556 \r\n 2018          307           3.833         10.12         2.814         2.54 \r\n 2018          308           1.475         13.25         6.007         41.15 \r\n 2018          309           3.867         10.28         4.098         5.588 \r\n 2018          310           3.102         8.81          0.307         0.254 \r\n 2018          311           4.612         2.492        -1.09          0 \r\n 2018          312           3.408         1.277        -1.697         0 \r\n 2018          313           8.1           0.236        -7.536         1.524 \r\n 2018          314           9.08         -2.122        -10.36         0 \r\n 2018          315           9.97          7.338        -3.439         0 \r\n 2018          316           2.795         0.346        -7.171         0 \r\n 2018          317           11.52        -1.98         -9.4           0 \r\n 2018          318           11.08         3.138        -11.9          0 \r\n 2018          319           10.45         5.684        -9.71          0 \r\n 2018          320           5.05          5.34          0.631         0 \r\n 2018          321           3.123         1.035        -3.024         5.08 \r\n 2018          322           11.1          0.094        -9.85          0.254 \r\n 2018          323           8.35          2.654        -9.56          0 \r\n 2018          324           8.4           0.53         -4.918         0 \r\n 2018          325           8.64          5.624        -5.224         0 \r\n 2018          326           9.8           11.84        -2.669         0 \r\n 2018          327           3.082         9.84          0.448         8.64 \r\n 2018          328           9.28          10.91         1.804         0 \r\n 2018          329           1             2.026        -2.102         11.18 \r\n 2018          330           5.472        -1.738        -8             0 \r\n 2018          331           9.06         -5.75         -12.33         0 \r\n 2018          332           5.318        -2.588        -15.28         0 \r\n 2018          333           6.786         2.622        -4.26          1.27 \r\n 2018          334           7.588         4.422        -7.739         0.254 \r\n 2018          335           1.23          3.927         1.39          2.03 \r\n 2018          336           1.895         3.401         0.792         11.68 \r\n 2018          337           3.072         1.52         -1.19          5.08 \r\n 2018          338           2.146        -1.13         -3.925         0 \r\n 2018          339           8.82          4.057        -6.521         0 \r\n 2018          340           7.668        -0.026        -9.38          0 \r\n 2018          341           8.23         -2.791        -11.76         0 \r\n 2018          342           8.62         -0.208        -11.86         0 \r\n 2018          343           8.48         -0.36         -12.06         0 \r\n 2018          344           8.15          3.299        -12.57         0 \r\n 2018          345           7.739         7.843        -5.061         0 \r\n 2018          346           4.598         4.856        -5.203         0 \r\n 2018          347           1.967         2.562        -6.541         0 \r\n 2018          348           2.262         2.046        -7.191         0 \r\n 2018          349           8.68          9.54         -7.434         0 \r\n 2018          350           7.219         9.66         -7.09          0 \r\n 2018          351           8.52          8.71         -5.324         0 \r\n 2018          352           8.09          10.57        -7.11          0 \r\n 2018          353           4.439         11.48        -0.422         0 \r\n 2018          354           1.317         6.43          1.217         1.27 \r\n 2018          355           1.418         1.248        -2.842         2.54 \r\n 2018          356           4.658         2.33         -5.061         0 \r\n 2018          357           8.57          4.472        -6.014         0 \r\n 2018          358           5.641         2.966        -9.78          0 \r\n 2018          359           7.664         9.62         -4.017         0.76 \r\n 2018          360           2.759         5.25         -5.65          0 \r\n 2018          361           1.228         10.78         3.724         17.02 \r\n 2018          362           1.565         6.694        -6.906         0 \r\n 2018          363           3.131        -5.122        -8.47          0.76 \r\n 2018          364           8.74          4.452        -8.98          0 \r\n 2018          365           1             2.077        -0.502         0.51 \r\n 2019          1             1.512         0.266        -5.497         0 \r\n 2019          2             3.521        -1.241        -6.054         0 \r\n 2019          3             8.77          7.218        -6.076         0 \r\n 2019          4             8.76          8.9          -3.905         0 \r\n 2019          5             8.77          12.51        -1.272         0 \r\n 2019          6             4.057         6.076        -1.343         2.54 \r\n 2019          7             4.354         13.58         1.358         12.95 \r\n 2019          8             8.86          8.05         -3.116         0 \r\n 2019          9             9.36         -3.104        -8.75          0 \r\n 2019          10            9.23         -1.038        -9.79          0 \r\n 2019          11            2.955         0.368        -6.928         0 \r\n 2019          12            4.122        -0.28         -2.446         15.24 \r\n 2019          13            6.758         0.55         -12.72         0 \r\n 2019          14            4.7          -2.75         -14.89         0 \r\n 2019          15            4.516         1.258        -3.196         2.794 \r\n 2019          16            4.476         1.298        -2.345         1.27 \r\n 2019          17            4.862         1.248        -2.892         0 \r\n 2019          18            4.954        -1.13         -4.848         4.572 \r\n 2019          19            9.63         -4.696        -16.37         0 \r\n 2019          20            7.328        -10.77        -21.13         0 \r\n 2019          21            7.212        -7.841        -21.19         0 \r\n 2019          22            2.239         0.205        -8.1           3.048 \r\n 2019          23            9.38         -3.116        -16.6          5.842 \r\n 2019          24            9.56         -5.212        -20.11         0 \r\n 2019          25            5.647        -12.49        -25.56         0 \r\n 2019          26            5.213        -10.52        -29.06         0 \r\n 2019          27            7.937        -8.35         -22.6          0 \r\n 2019          28            6.304         1.864        -17.75         0 \r\n 2019          29            11.77        -15.4         -26.01         0 \r\n 2019          30            12.44        -23.38        -33.61         0 \r\n 2019          31            5.994        -16.52        -35.43         3.302 \r\n 2019          32            11.36        -5.872        -21.13         0 \r\n 2019          33            9.88          6.652        -14.51         5.08 \r\n 2019          34            5.182         7.268         0.61          0 \r\n 2019          35            5.022         7.672        -8.85          0 \r\n 2019          36            5.801        -0.816        -9.87          7.112 \r\n 2019          37            4.602         0.126        -2.264         9.4 \r\n 2019          38            5.774         0.165        -15.04         5.842 \r\n 2019          39            14           -11.52        -17.36         0 \r\n 2019          40            11.41        -4.361        -16.44         0 \r\n 2019          41            4.646        -1.656        -4.432         4.572 \r\n 2019          42            4.759         0.034        -3.278         18.034 \r\n 2019          43            9.42         -0.098        -11.31         4.318 \r\n 2019          44            12.08         0.256        -14.44         0 \r\n 2019          45            13.21         8.17         -12.66         4.572 \r\n 2019          46            8.95         -11.15        -16.48         0 \r\n 2019          47            13.51        -1.372        -15.34         0 \r\n 2019          48            5.886        -1.94         -5.304         9.906 \r\n 2019          49            15.12        -2.872        -15.63         0.254 \r\n 2019          50            11.17        -2.345        -18.07         0.762 \r\n 2019          51            4.982         2.087        -3.338         7.62 \r\n 2019          52            13.66        -0.24         -9.34          0 \r\n 2019          53            15.16         3.572        -10.12         0.254 \r\n 2019          54            4.224         4.886         0.286         32.77 \r\n 2019          55            13.7          4.594        -12.7          0 \r\n 2019          56            10.56        -8.25         -15.34         0 \r\n 2019          57            8.06         -2.851        -9.97          0 \r\n 2019          58            11.5         -3.541        -12.36         0 \r\n 2019          59            10.84        -3.622        -12.76         0 \r\n 2019          60            15.43         4.835        -6.784         0 \r\n 2019          61            11.33        -1.048        -7.89          0 \r\n 2019          62            14.89        -7.11         -18.69         0 \r\n 2019          63            17.02        -10.46        -19.5          0 \r\n 2019          64            16.59        -6.947        -12.71         0 \r\n 2019          65            16.18         0.975        -12.43         0 \r\n 2019          66            6.132        -3.257        -8.1           3.048 \r\n 2019          67            6.561         2.633        -3.49          0.254 \r\n 2019          68            1.714         2.693         0.368         21.08 \r\n 2019          69            17.66         2.612        -1.93          0 \r\n 2019          70            17.19         7.46         -3.58          0 \r\n 2019          71            8.33          6.714        -4.624         10.92 \r\n 2019          72            5.449         14.33         3.936         0.762 \r\n 2019          73            5.634         15.86         2.572         0 \r\n 2019          74            13.5          7.258        -1.13          0 \r\n 2019          75            19.5          8.8          -3.398         2.794 \r\n 2019          76            20.22         6.421        -2.73          1.016 \r\n 2019          77            16.89         8.25         -4.352         0 \r\n 2019          78            15.5          11.68        -5.385         0.762 \r\n 2019          79            11.9          11.32         3.34          3.556 \r\n 2019          80            19.21         11.57         0.368         0 \r\n 2019          81            21.07         12.98        -0.442         0 \r\n 2019          82            18            14.06        -2.992         0 \r\n 2019          83            7.544         12.44         6.471         1.27 \r\n 2019          84            17.04         10.02        -1.98          0 \r\n 2019          85            22.07         11.65        -4.828         0 \r\n 2019          86            17.43         19.26         3.32          0 \r\n 2019          87            10.22         17.87         8.77          0 \r\n 2019          88            10.27         14.26         4.654         8.13 \r\n 2019          89            10.2          7.046        -1.312         0.508 \r\n 2019          90            22.76         6.057        -5.081         0 \r\n 2019          91            20.87         13.1          0.054         0 \r\n 2019          92            14.07         11.07         1.338         0 \r\n 2019          93            11.68         14.32        -2.609         0.762 \r\n 2019          94            7.25          10.61         6.926         1.524 \r\n 2019          95            8.33          14.07         5.018         0.254 \r\n 2019          96            20.63         22.34         1.42          0 \r\n 2019          97            12.49         22.53         12.6          0.254 \r\n 2019          98            23.03         25.72         5.238         0 \r\n 2019          99            19.53         20.68         7.066         1.016 \r\n 2019          100           8.08          10            3.664         17.27 \r\n 2019          101           4.041         13.03         4.624         5.334 \r\n 2019          102           14.17         8.74          0.67          0 \r\n 2019          103           24.34         12.78        -0.806         0 \r\n 2019          104           10.64         7.138        -1.21          0 \r\n 2019          105           16.32         15.69        -3.52          0 \r\n 2019          106           20.18         25.59         10            0 \r\n 2019          107           13.28         25.91         12.06         0.508 \r\n 2019          108           8.22          12.06         7.672         0 \r\n 2019          109           26.06         17.21         5.664         0 \r\n 2019          110           26.04         22.17        -0.219         0 \r\n 2019          111           23.99         29.2          4.228         0 \r\n 2019          112           16.01         27.89         11.77         9.65 \r\n 2019          113           14.12         18.28         7.703         0 \r\n 2019          114           12.92         17.77         5.643         0 \r\n 2019          115           15.58         21.71         4.674         0.762 \r\n 2019          116           26.45         18.33         7.006         0 \r\n 2019          117           1.411         11.21         1.228         7.366 \r\n 2019          118           16.61         14.65        -1.474         6.858 \r\n 2019          119           8.28          15.72         6.724         49.78 \r\n 2019          120           3.015         10.43         8.45          34.04 \r\n 2019          121           8.13          14.01         7.602         1.27 \r\n 2019          122           8.78          15.68         8.17          19.05 \r\n 2019          123           11.74         14.25         4.724         0 \r\n 2019          124           27.04         20.2          2.541         0 \r\n 2019          125           23.16         24.57         5.583         0 \r\n 2019          126           19.97         23.3          12.11         1.524 \r\n 2019          127           11.72         15.58         9.94          0.254 \r\n 2019          128           7.01          23.49         7.198         4.318 \r\n 2019          129           8.98          16.67         7.178         0 \r\n 2019          130           21.37         17.39         2.654         0 \r\n 2019          131           8.73          13.41         6.875         1.27 \r\n 2019          132           9.24          11.39         5.624         3.556 \r\n 2019          133           25.81         20.66         4.684         0 \r\n 2019          134           7.741         15.67         4.846         3.302 \r\n 2019          135           26.82         26.62         8.26          0 \r\n 2019          136           25.89         33.57         11.17         8.38 \r\n 2019          137           8.64          23.47         12.34         20.83 \r\n 2019          138           9.93          23.93         10.11         20.83 \r\n 2019          139           11.18         19.96         9.8           5.334 \r\n 2019          140           14.726        13.87         5.724         4.572 \r\n 2019          141           4.563         13.85         7.309         4.318 \r\n 2019          142           25.52         27.8          13.84         2.794 \r\n 2019          143           27.76         24.41         12.27         0.254 \r\n 2019          144           15.73         28.92         14.12         9.398 \r\n 2019          145           17.786        28.05         19            9.906 \r\n 2019          146           19.506        27.1          17.39         19.304 \r\n 2019          147           13.45         26.98         16.47         7.366 \r\n 2019          148           8.18          20.44         13.1          40.894 \r\n 2019          149           15.14         24.79         16.06         20.828 \r\n 2019          150           23.18         25.44         16.63         0.254 \r\n 2019          151           23.27         28.44         14.74         0.254 \r\n 2019          152           20.44         28.83         18.55         0 \r\n 2019          153           29.12         25.34         13.75         0 \r\n 2019          154           20.61         27.17         13.37         2.794 \r\n 2019          155           20.85         28.69         15.06         13.716 \r\n 2019          156           23.47         30.58         17.73         6.096 \r\n 2019          157           25.4          30.93         18.82         0 \r\n 2019          158           28.71         29.89         18.78         0 \r\n 2019          159           28.91         30.37         16.58         0 \r\n 2019          160           24.32         31.25         17.54         0 \r\n 2019          161           29.3          27.48         13.02         0 \r\n 2019          162           21.972        29.18         10.79         0 \r\n 2019          163           13.6          21.78         12.52         2.54 \r\n 2019          164           30.58         23.4          10.81         0 \r\n 2019          165           17.9          27.5          10.86         0 \r\n 2019          166           11.02         27.35         17.95         17.02 \r\n 2019          167           9.95          21.06         17.21         0.254 \r\n 2019          168           15.04         23.03         15.28         0 \r\n 2019          169           25.48         27.92         12.8          0 \r\n 2019          170           6.237         21.5          16.98         7.112 \r\n 2019          171           25.23         26.45         13.84         1.778 \r\n 2019          172           6.214         21.83         14.23         6.096 \r\n 2019          173           15.75         26.8          16.53         2.794 \r\n 2019          174           16.79         27.36         19.78         8.89 \r\n 2019          175           21.642        25.13         19.08         1.016 \r\n 2019          176           25.77         30.15         18.15         1.016 \r\n 2019          177           24.98         31.83         17.92         1.016 \r\n 2019          178           24.93         33.52         19.71         0 \r\n 2019          179           8.41          28.41         19.83         0 \r\n 2019          180           25.43         35.33         19.46         0 \r\n 2019          181           22.91         34.77         20.3          9.91 \r\n 2019          182           27.18         33.57         20.47         0 \r\n 2019          183           28.05         34.76         22.82         0 \r\n 2019          184           18.76         34.13         21.29         27.18 \r\n 2019          185           27.78         32.53         21.44         0 \r\n 2019          186           27.39         34.53         22.27         0 \r\n 2019          187           25.03         31.39         22.15         0 \r\n 2019          188           25.3          28.9          19.66         0 \r\n 2019          189           27.72         30.22         16.63         0 \r\n 2019          190           21.77         33.02         18.71         0 \r\n 2019          191           27.04         32.53         22.72         0 \r\n 2019          192           24.56         29.49         18.74         0 \r\n 2019          193           28.95         32.25         16.03         0 \r\n 2019          194           22.5          34.33         19.64         0 \r\n 2019          195           26.87         34.75         23.26         0 \r\n 2019          196           25.67         32.13         21.51         0 \r\n 2019          197           16.32         31.42         20.7          0 \r\n 2019          198           13.63         32.83         20.79         3.556 \r\n 2019          199           23.52         34.54         22.08         0 \r\n 2019          200           26.53         36.16         26.48         0 \r\n 2019          201           26.46         37.13         23.89         0.254 \r\n 2019          202           18.05         27.92         21.34         0 \r\n 2019          203           25.66         27.77         15.29         0 \r\n 2019          204           26.11         28.32         14.33         0 \r\n 2019          205           26.22         30.49         16.06         0 \r\n 2019          206           20.93         31.09         16.23         0 \r\n 2019          207           22.38         32.22         19.78         0.762 \r\n 2019          208           14.58         32.41         20.22         0 \r\n 2019          209           22.42         33.43         20.88         0.508 \r\n 2019          210           20.26         29.98         18.71         0.508 \r\n 2019          211           27.19         26.96         15.22         0 \r\n 2019          212           24.54         28.44         13.1          0 \r\n 2019          213           26.34         29.34         13.77         0 \r\n 2019          214           27.09         30.69         13.03         0 \r\n 2019          215           26.29         32.01         17.24         0 \r\n 2019          216           25.63         32.85         16.55         0 \r\n 2019          217           22.55         32.32         17.25         25.4 \r\n 2019          218           24.22         29.23         17.43         1.778 \r\n 2019          219           26.28         31.12         16.53         0 \r\n 2019          220           18.84         28.57         16.89         0.762 \r\n 2019          221           26.02         27.36         13.3          0 \r\n 2019          222           19.95         29.58         16.86         0 \r\n 2019          223           15.01         29.94         20.42         3.048 \r\n 2019          224           7.752         28.53         19.8          10.16 \r\n 2019          225           8.38          29.32         20.5          0 \r\n 2019          226           20.37         25.61         17.39         1.27 \r\n 2019          227           18.45         26.91         15.06         0.254 \r\n 2019          228           20.38         29.3          17.37         0.762 \r\n 2019          229           18.55         28.49         18.75         2.54 \r\n 2019          230           15.97         29.3          18.4          3.81 \r\n 2019          231           20.01         30.05         20.26         0 \r\n 2019          232           15.97         28.36         19.54         40.64 \r\n 2019          233           7.507         26            18.83         0 \r\n 2019          234           24.69         26.29         15.08         0 \r\n 2019          235           24.53         26.95         13.53         0 \r\n 2019          236           21.69         26.25         12.65         0 \r\n 2019          237           10.14         23.87         14.11         8.64 \r\n 2019          238           6.537         22.5          16.83         17.78 \r\n 2019          239           23.65         26.17         14.72         0 \r\n 2019          240           23.97         25.72         13.02         0 \r\n 2019          241           17.88         29.23         12.82         0 \r\n 2019          242           16.24         23.5          12.76         0 \r\n 2019          243           11.81         22.65         11.28         1.524 \r\n 2019          244           12.45         25.46         16.34         3.81 \r\n 2019          245           18.57         29.82         16.67         0 \r\n 2019          246           14.98         31.08         18.21         0 \r\n 2019          247           20.13         23.42         12.18         0 \r\n 2019          248           20.68         26.3          9.23          0 \r\n 2019          249           21.86         26.73         13.47         0 \r\n 2019          250           19.45         27.08         10.74         3.302 \r\n 2019          251           8.77          22.27         15.66         22.61 \r\n 2019          252           12.79         29.74         17.67         5.08 \r\n 2019          253           13.93         29.61         21.15         0.508 \r\n 2019          254           16.61         32.11         20.88         0 \r\n 2019          255           17.25         32.48         20.24         2.54 \r\n 2019          256           16.69         22.89         13.46         0 \r\n 2019          257           16.93         28.29         11.56         2.54 \r\n 2019          258           15.35         30.81         18.65         34.8 \r\n 2019          259           19.33         30.07         17.21         0 \r\n 2019          260           17.19         29.26         16.35         0 \r\n 2019          261           18.07         31.45         18.31         0 \r\n 2019          262           9.45          25.86         19.76         0 \r\n 2019          263           17.47         32.79         19.51         0.254 \r\n 2019          264           3.592         25.36         21.49         19.3 \r\n 2019          265           4.124         22.97         14.51         28.45 \r\n 2019          266           19.56         25.8          11.76         0 \r\n 2019          267           19.14         28.59         13.88         0 \r\n 2019          268           18.19         26.06         16.18         21.59 \r\n 2019          269           18.93         24.84         10.71         0 \r\n 2019          270           3.811         23.41         15.81         26.92 \r\n 2019          271           3.818         18.66         12.54         26.67 \r\n 2019          272           2.58          20.07         12.56         3.81 \r\n 2019          273           15.36         32.23         16.48         0 \r\n 2019          274           8.76          30.95         21.57         0 \r\n 2019          275           5.502         25.8          15.8          14.22 \r\n 2019          276           14.26         16.76         6.168         0.762 \r\n 2019          277           15.51         17.43         3.644         0 \r\n 2019          278           3.106         16.11         9.99          11.68 \r\n 2019          279           7.014         17.35         7.419         0 \r\n 2019          280           17.24         21.83         5.946         0 \r\n 2019          281           17.03         22.85         3.755         0 \r\n 2019          282           12.52         22.63         4.714         0 \r\n 2019          283           4.323         19.62         13.06         1.524 \r\n 2019          284           6.889         19.32         2.654         0.254 \r\n 2019          285           16.53         16.65        -0.968         0 \r\n 2019          286           14.85         13.27        -0.866         0 \r\n 2019          287           16.06         16.82        -1.434         0 \r\n 2019          288           12.25         19.04         2.734         0 \r\n 2019          289           5.636         10.91         2.654         0 \r\n 2019          290           15.47         16.06        -1.302         0 \r\n 2019          291           14.28         20.46         1.147         0 \r\n 2019          292           6.004         16.53         5.946         0.254 \r\n 2019          293           8.64          20.04         4.149         0.254 \r\n 2019          294           9.71          16.56         8.84          11.43 \r\n 2019          295           9.6           13.19         4.876         0 \r\n 2019          296           8.52          15.93         1.966         0 \r\n 2019          297           9.66          10.59         0.034         0 \r\n 2019          298           9.62          11.27        -2.528         0 \r\n 2019          299           3.857         8.8          -3.206         2.032 \r\n 2019          300           13.34         15.92        -0.756         0 \r\n 2019          301           3.511         6.39         -0.34          5.08 \r\n 2019          302           13.94         5.25         -4.006         5.08 \r\n 2019          303           10.51         3.34         -1.838         0 \r\n 2019          304           9.31          0.256        -5.112         7.874 \r\n 2019          305           7.681         5.3          -4.584         0.762 \r\n 2019          306           10.05         8.13         -1.252         0 \r\n 2019          307           8.72          12.99        -0.786         0 \r\n 2019          308           6.329         8.75          0.266         0 \r\n 2019          309           11.63         6.35         -2.932         0 \r\n 2019          310           10.91         14.56        -1.576         0 \r\n 2019          311           12.31         0.084        -8.55          0 \r\n 2019          312           9.17          1.52         -11.8          0 \r\n 2019          313           10.87         13.92        -2.486         0 \r\n 2019          314           5.725         6.31         -1.332         0 \r\n 2019          315           6.996         0.398        -12.76         3.556 \r\n 2019          316           12.11        -8.02         -17.82         0 \r\n 2019          317           6.328        -0.714        -9.85          0 \r\n 2019          318           7.134         0.216        -9.48          0 \r\n 2019          319           10.1          10.65        -8.71          0 \r\n 2019          320           10.37         7.924        -6.329         0 \r\n 2019          321           2.274         4.805        -0.28          2.286 \r\n 2019          322           4.738         4.775         0.53          0 \r\n 2019          323           3.774         9.01         -1.748         2.286 \r\n 2019          324           6.81          11.94        -1.677         1.016 \r\n 2019          325           2.063         12.86        -0.27          10.67 \r\n 2019          326           9.15          3.198        -3.56          0 \r\n 2019          327           8.04          7.823        -4.412         0 \r\n 2019          328           8.93          13.63        -0.907         0 \r\n 2019          329           7.447         12.86        -2.771         0 \r\n 2019          330           1.827         11.17        -1.028         5.588 \r\n 2019          331           3.283         10.55        -0.27          0.254 \r\n 2019          332           2.174         0.692        -1.232         0 \r\n 2019          333           2.551         3.552        -0.198         8.64 \r\n 2019          334           0.913         7.561         2.128         3.302 \r\n 2019          335           1.592         4.674        -0.118         0.254 \r\n 2019          336           6.801         0.631        -3.925         0 \r\n 2019          337           8.19          9.82         -3.499         0 \r\n 2019          338           9.19          9.64         -2.538         0 \r\n 2019          339           8.82          13.38        -5.964         0 \r\n 2019          340           9.1           5.028        -6.268         0 \r\n 2019          341           7.971         6.209        -7.982         0 \r\n 2019          342           4.643         9.45         -0.948         0 \r\n 2019          343           1.563         7.864        -10.46         0.508 \r\n 2019          344           7.159        -5.04         -12.88         0 \r\n 2019          345           8.31         -3.216        -12.76         4.064 \r\n 2019          346           1.719         7.5          -7.15          0 \r\n 2019          347           3.932         1.217        -3.378         0 \r\n 2019          348           2.535        -0.502        -10.79         0 \r\n 2019          349           3.711        -6.227        -13.08         0 \r\n 2019          350           5.252        -2.366        -7.78          0 \r\n 2019          351           2.654        -3.034        -9.14          0 \r\n 2019          352           7.793        -4.311        -12.57         0.254 \r\n 2019          353           8.76          6.189        -9.72          0 \r\n 2019          354           7.204         8.41         -7.434         0 \r\n 2019          355           8.37          10.24        -6.784         0 \r\n 2019          356           8.21          12.07        -2.648         0 \r\n 2019          357           7.72          11.23        -3.388         0 \r\n 2019          358           7.266         15.12        -5.812         0 \r\n 2019          359           7.793         16.69        -1.048         0 \r\n 2019          360           1.813         12.42        -0.098         0 \r\n 2019          361           7.727         5.886        -1.898         0 \r\n 2019          362           1.123         13.39         0.994         40.39 \r\n 2019          363           5.25          13.53         1.925         1.524 \r\n 2019          364           1.428         1.954        -2.842         0 \r\n 2019          365           3.41          0.508        -4.656         0 \r\n 2020          1             8.58          8.43         -6.664         0 \r\n 2020          2             2.914272      11.02         1.439         0 \r\n 2020          3             2.299968      2.33         -0.766         0 \r\n 2020          4             3.023136      0.408        -5.344         0.762 \r\n 2020          5             7.56          8.05         -4.534         0 \r\n 2020          6             4.63536       3.432        -6.582         0 \r\n 2020          7             6.379776      3.058        -5.314         0 \r\n 2020          8             8.24256      -2.051        -10.46         0 \r\n 2020          9             5.459616      15.4         -3.116         0 \r\n 2020          10            2.425248      4.199        -2.395         15.494 \r\n 2020          11            2.520288     -0.36         -5.578         5.334 \r\n 2020          12            4.608576     -2.021        -5.548         0 \r\n 2020          13            3.38256       1.572        -2.061         0.254 \r\n 2020          14            7.0848        2.794        -3.905         0 \r\n 2020          15            2.118528      0.346        -12.46         1.27 \r\n 2020          16            9.85824      -7.79         -16.24         0 \r\n 2020          17            1.492992     -0.746        -11.85         16.51 \r\n 2020          18            5.003424      1.298        -17.64         2.286 \r\n 2020          19            7.87968      -12.94        -18.68         0 \r\n 2020          20            9.072        -8.25         -17.75         0 \r\n 2020          21            10.35936     -4.614        -19.68         0 \r\n 2020          22            5.347296      0.084        -4.908         5.08 \r\n 2020          23            4.084128      2.046        -1.474         8.382 \r\n 2020          24            4.745952      1.328        -0.36          10.16 \r\n 2020          25            6.264864      1.702        -2.061         0 \r\n 2020          26            6.565536     -1.262        -8.07          0 \r\n 2020          27            3.426624     -0.493        -3.116         0 \r\n 2020          28            4.318272     -3.014        -6.095         0 \r\n 2020          29            5.022432     -2.122        -6.095         0 \r\n 2020          30            4.978368     -0.725        -3.824         0 \r\n 2020          31            9.51264       2.654        -0.34          1.778 \r\n 2020          32            8.89056       3.179         0.205         0.254 \r\n 2020          33            12.30336      12.23        -2.446         0 \r\n 2020          34            9.8064        6.088        -1.859         0 \r\n 2020          35            6.079968      2.228        -2.81          0 \r\n 2020          36            10.53        -2.244        -4.574         0 \r\n 2020          37            12.11328      1.39         -7.15          0 \r\n 2020          38            7.24032       1.582        -8.73          0 \r\n 2020          39            12.07008     -1.048        -6.967         0 \r\n 2020          40            1.366848      4.219        -3.946         2.032 \r\n 2020          41            12.64896      3.169        -4.483         0 \r\n 2020          42            11.30976      1.722        -5.932         0 \r\n 2020          43            2.853792      1.601        -6.48          7.366 \r\n 2020          44            13.38336     -4.614        -20.44         0 \r\n 2020          45            14.83488     -9.75         -23.46         0 \r\n 2020          46            8.424         4.643        -9.99          0.254 \r\n 2020          47            12.36384      6.41         -8.25          0 \r\n 2020          48            2.742336      4.472         0.135         3.81 \r\n 2020          49            14.8608       2.128        -5.284         0 \r\n 2020          50            11.9232      -2.69         -10.18         0 \r\n 2020          51            15.22368     -4.636        -14.43         0 \r\n 2020          52            15.58656      4.594        -12.64         0 \r\n 2020          53            14.80896      12.08        -2.142         0 \r\n 2020          54            15.18912      15.88         1.186         0 \r\n 2020          55            4.641408      5.805         0.772         0 \r\n 2020          56            7.56          4.442        -0.159         0 \r\n 2020          57            11.25792      2.128        -5.568         0 \r\n 2020          58            14.88672      3.218        -6.338         0 \r\n 2020          59            6.166368     -0.219        -9.02          0 \r\n 2020          60            16.48512      6.652        -12.55         0 \r\n 2020          61            13.5648       18.03         1.601         0 \r\n 2020          62            8.30304       4.573        -3.116         0 \r\n 2020          63            14.98176      11.05        -2.518         0 \r\n 2020          64            16.0704       11.76        -2.932         0 \r\n 2020          65            11.81952      12.09        -1.92          0 \r\n 2020          66            16.91712      8.97         -4.949         0 \r\n 2020          67            15.88896      16.22        -6.502         0 \r\n 2020          68            16.03584      22.35         4.856         0 \r\n 2020          69            1.327104      15.56         3.078         40.894 \r\n 2020          70            17.29728      10.65         0.165         0 \r\n 2020          71            6.577632      10.64         3.068         0 \r\n 2020          72            7.62912       16.67         3.138         0 \r\n 2020          73            18.02304      10.35        -1.15          0 \r\n 2020          74            4.941216      4.422        -0.3           2.54 \r\n 2020          75            8.44128       3.664        -0.948         0 \r\n 2020          76            4.466016      5.775         0.954         0 \r\n 2020          77            19.56096      10.06        -1.808         0 \r\n 2020          78            3.103488      8.59          5.159         9.906 \r\n 2020          79            3.308256      17.77         6.905         2.54 \r\n 2020          80            5.941728      7.118        -0.3           2.286 \r\n 2020          81            10.30752      4.795        -1.92          0 \r\n 2020          82            5.133888      2.046        -2.507         1.778 \r\n 2020          83            7.00704       4.33         -1.94          4.064 \r\n 2020          84            13.58208      10.09         0.084         0 \r\n 2020          85            9.2016        14.29        -1.15          0 \r\n 2020          86            4.611168      11.47         4.956         0 \r\n 2020          87            4.061664      11.68         5.3           30.48 \r\n 2020          88            10.5408       21.31         9.27          2.794 \r\n 2020          89            6.750432      12.56         4.209         0.254 \r\n 2020          90            22.31712      16.95        -1.21          0 \r\n 2020          91            18.94752      12.63         0.61          0 \r\n 2020          92            19.24128      15.95        -1.525         0 \r\n 2020          93            11.59488      18.07         6.956         4.318 \r\n 2020          94            4.184352      12.05        -0.542         1.27 \r\n 2020          95            17.70336      11.86        -1.778         0 \r\n 2020          96            21.14208      16.61         2.288         0 \r\n 2020          97            10.18656      18.82         4.856         0 \r\n 2020          98            16.72704      26.24         12.88         0 \r\n 2020          99            19.10304      26.94         4.956         0 \r\n 2020          100           17.13312      11.63        -0.159         0 \r\n 2020          101           22.14432      12.9         -2.69          0 \r\n 2020          102           11.12832      20.49         4.209         0 \r\n 2020          103           13.3056       20.64         1.318         8.636 \r\n 2020          104           21.82464      6.875        -3.135         0 \r\n 2020          105           20.6496       7.076        -5.04          0 \r\n 2020          106           21.7728       4.856        -7.921         3.048 \r\n 2020          107           12.8304       6.592        -4.21          6.35 \r\n 2020          108           17.95392      7.782         0.044         3.302 \r\n 2020          109           24.80544      16.5         -0.219         0 \r\n 2020          110           24.03648      18.05         3.422         0 \r\n 2020          111           14.67936      20.11         1.147         0 \r\n 2020          112           25.56576      15.94         1.702         0 \r\n 2020          113           17.68608      26.54         5.219         0 \r\n 2020          114           20.18304      23.87         9.2           0 \r\n 2020          115           10.2816       14.3          9.42          2.286 \r\n 2020          116           14.04         16.63         4.643         2.794 \r\n 2020          117           25.0992       22.22         0.388         0 \r\n 2020          118           15.10272      25.22         8.62          0.254 \r\n 2020          119           13.80672      24.83         10.36         0 \r\n 2020          120           3.112128      14.35         8.28          3.556 \r\n 2020          121           26.84448      22.78         6.057         0 \r\n 2020          122           17.55648      24.86         5.39          0 \r\n 2020          123           15.35328      25.67         11.77         0.254 \r\n 2020          124           18.16128      25.47         11.84         0 \r\n 2020          125           10.30752      16.08         7.814         3.048 \r\n 2020          126           3.424896      8.61          5.018         7.112 \r\n 2020          127           21.62592      18.35         3.28          0 \r\n 2020          128           20.16576      20.21         6.652         0 \r\n 2020          129           27.40608      13.63         1.744         0 \r\n 2020          130           26.96544      19.52        -2.446         0.508 \r\n 2020          131           10.48032      13.17         5.684         0.762 \r\n 2020          132           15.30144      13.96         2.309         0 \r\n 2020          133           20.05344      18.34         1.749         0 \r\n 2020          134           10.86048      15.72         5.542         0 \r\n 2020          135           12.16512      24.97         12.25         47.244 \r\n 2020          136           23.62176      23.17         13.45         1.778 \r\n 2020          137           16.56288      24.05         10.96         0.254 \r\n 2020          138           12.1392       19.7          13.53         6.858 \r\n 2020          139           8.60544       15.72         11.59         3.81 \r\n 2020          140           8.64          15.6          11.34         0 \r\n 2020          141           7.56          17.92         13.74         0 \r\n 2020          142           9.79776       17.92         12.64         0.254 \r\n 2020          143           12.40704      23.4          13.69         0 \r\n 2020          144           18.71424      25.42         15.7          0 \r\n 2020          145           18.23904      30.36         14.48         0.508 \r\n 2020          146           21.13344      31.62         18.15         1.27 \r\n 2020          147           21.53088      31.21         18.74         6.35 \r\n 2020          148           12.9168       26.62         20.45         1.016 \r\n 2020          149           5.234112      22.78         16.75         27.178 \r\n 2020          150           25.3584       20.71         11.67         0 \r\n 2020          151           28.49472      24.41         9.66          0 \r\n 2020          152           26.66304      25.72         10.42         0 \r\n 2020          153           18.20448      28.57         17.77         0 \r\n 2020          154           25.51392      33.47         19.62         0 \r\n 2020          155           16.36416      30.89         20.82         3.048 \r\n 2020          156           24.14016      33.74         19.67         0 \r\n 2020          157           19.1376       32.65         18.39         5.588 \r\n 2020          158           26.84448      28.93         18.27         0 \r\n 2020          159           28.04544      30            19            0 \r\n 2020          160           28.4256       34.45         19.66         0 \r\n 2020          161           4.110048      25.7          20.38         56.388 \r\n 2020          162           18.67968      23.29         15.81         0.508 \r\n 2020          163           28.93536      27.95         13.09         0 \r\n 2020          164           29.15136      30.56         13.78         0 \r\n 2020          165           27.29376      25.76         14.1          0 \r\n 2020          166           27.25056      26.5          13.79         0 \r\n 2020          167           26.73216      28.18         14.68         0 \r\n 2020          168           29.27232      29.35         14.88         0 \r\n 2020          169           28.58112      30.4          14.99         0 \r\n 2020          170           26.54208      31.42         16.43         0 \r\n 2020          171           9.10656       27.38         19.94         10.922 \r\n 2020          172           14.69664      28.28         19.08         7.62 \r\n 2020          173           24.14016      30.84         17.73         0.254 \r\n 2020          174           7.62048       23.8          14.82         39.116 \r\n 2020          175           19.50048      24.88         14.05         0 \r\n 2020          176           24.28704      27.53         14.33         0.508 \r\n 2020          177           26.90496      29.95         14.59         9.398 \r\n 2020          178           15.41376      31.33         21.27         48.26 \r\n 2020          179           16.99488      29.95         20.61         3.81 \r\n 2020          180           15.10272      29.62         19.54         16.51 \r\n 2020          181           22.87008      31.95         23.52         0 \r\n 2020          182           10.67904      27.2          20.77         0 \r\n 2020          183           9.09792       27.21         20.5          5.334 \r\n 2020          184           21.2976       31.35         20.43         0 \r\n 2020          185           22.09248      31.29         20            0 \r\n 2020          186           23.65632      33.2          19.47         0 \r\n 2020          187           22.60224      34.28         20            0 \r\n 2020          188           23.99328      34.16         19.83         0 \r\n 2020          189           22.44672      34.11         20            61.976 \r\n 2020          190           21.67776      34.19         22            0 \r\n 2020          191           18.69696      32.63         20.29         10.16 \r\n 2020          192           24.64128      30.98         18.48         0 \r\n 2020          193           22.41216      32.5          18.49         0 \r\n 2020          194           24.13152      30.15         17.31         0 \r\n 2020          195           24.7104       30.67         16.06         0 \r\n 2020          196           18.85248      30.92         18.78         0 \r\n 2020          197           5.532192      25.34         17.48         38.1 \r\n 2020          198           20.62368      31.02         16.79         0 \r\n 2020          199           21.99744      31.84         17.73         0 \r\n 2020          200           20.67552      33.54         23.61         0 \r\n 2020          201           17.57376      30.53         19.78         0 \r\n 2020          202           9.607681      26.79         18.77         0 \r\n 2020          203           11.48256      28.6          19.75         14.732 \r\n 2020          204           22.45536      28.61         17.44         0 \r\n 2020          205           23.43168      29.51         15.47         0 \r\n 2020          206           23.82912      31.73         16.9          6.096 \r\n 2020          207           21.89376      33.48         21.37         0 \r\n 2020          208           18.42048      34.21         23.06         18.288 \r\n 2020          209           18.80928      29.16         18.73         5.08 \r\n 2020          210           24.64128      30.3          15.51         0 \r\n 2020          211           20.14848      32.67         18.08         0 \r\n 2020          212           9.607681      26.41         19.02         10.922 \r\n 2020          213           15.984        25.77         16.28         0 \r\n 2020          214           20.01024      30.2          15.39         0 \r\n 2020          215           13.3056       27.57         15.59         6.604 \r\n 2020          216           18.61056      23.86         11.36         0 \r\n 2020          217           24.21792      26.12         11.33         0 \r\n 2020          218           18.74016      26.67         9.86          0 \r\n 2020          219           20.94336      27.04         13.81         0 \r\n 2020          220           22.23936      28.78         15.51         0 \r\n 2020          221           23.57856      31.35         20.06         0 \r\n 2020          222           16.77024      33.93         21.08         0 \r\n 2020          223           12.94272      32.27         17.25         3.302 \r\n 2020          224           24.07104      29.48         13.73         0 \r\n 2020          225           21.10752      30.2          14.83         0 \r\n 2020          226           22.71456      31.4          17.49         0 \r\n 2020          227           23.3712       31.47         16.93         0 \r\n 2020          228           21.58272      28.79         14.28         0 \r\n 2020          229           23.5008       30.54         11.57         0 \r\n 2020          230           20.27808      30.33         13.84         0 \r\n 2020          231           22.94784      27.53         12.12         0 \r\n 2020          232           24.26112      28.79         10.32         0 \r\n 2020          233           24.42528      29.51         10.52         0 \r\n 2020          234           23.4144       30.65         11.76         0 \r\n 2020          235           15.60384      30.16         14.36         0 \r\n 2020          236           22.5072       37.59         19.3          0 \r\n 2020          237           20.83968      36.59         19.4          0 \r\n 2020          238           20.4768       35.73         18.94         0 \r\n 2020          239           21.58272      35.51         20.78         0 \r\n 2020          240           22.13568      34.38         21.99         0 \r\n 2020          241           21.21984      34.27         19.58         0 \r\n 2020          242           21.168        27.78         13.41         0 \r\n 2020          243           21.5568       27.47         10.13         0 \r\n 2020          244           10.98144      26.89         15.09         0 \r\n 2020          245           8.26848       24.32         15.16         4.572 \r\n 2020          246           22.1616       31.79         16.4          0 \r\n 2020          247           21.14208      27.91         10.91         0 \r\n 2020          248           22.17888      29.37         8.11          0 \r\n 2020          249           21.09888      31.76         12.96         0 \r\n 2020          250           15.75936      33.76         19.08         0 \r\n 2020          251           17.52192      25.82         13.06         10.922 \r\n 2020          252           2.671488      13.08         10.24         18.542 \r\n 2020          253           3.824928      13.59         10.18         0 \r\n 2020          254           2.98944       13.65         10.17         0 \r\n 2020          255           2.491776      19.68         13.27         4.318 \r\n 2020          256           10.65312      23.8          16.04         6.857999 \r\n 2020          257           20.53728      27            11.13         0 \r\n 2020          258           17.81568      27.94         9.98          0 \r\n 2020          259           19.4832       29.86         10.24         0 \r\n 2020          260           19.12896      29.97         11.66         0 \r\n 2020          261           17.30592      24.56         10.33         0 \r\n 2020          262           14.5152       21.21         7.883         0 \r\n 2020          263           18.41184      22.09         6.45          0 \r\n 2020          264           16.32096      24.13         7.106         0 \r\n 2020          265           17.27136      26.79         6.198         0 \r\n 2020          266           16.96896      28.31         8.37          0 \r\n 2020          267           15.32736      28.38         11.25         0 \r\n 2020          268           13.392        27.99         13.83         0 \r\n 2020          269           17.27136      30.06         13.71         0 \r\n 2020          270           12.2688       29.84         16.83         0 \r\n 2020          271           2.619648      21.66         10.04         28.194 \r\n 2020          272           13.22784      18.16         8.47          9.144 \r\n 2020          273           12.00096      18.08         7.187         0 \r\n 2020          274           15.8976       21.51         7.722         0 \r\n 2020          275           8.90784       15.42         4.077         0.254 \r\n 2020          276           14.6016       16.04         1.622         0 \r\n 2020          277           2.75184       10.37         4.532         10.414 \r\n 2020          278           17.1072       16.19         1.379         0 \r\n 2020          279           15.8544       19.37         1.52          0 \r\n 2020          280           15.88896      26.76         10.42         0 \r\n 2020          281           15.77664      28.84         10.43         0 \r\n 2020          282           15.57792      25.86         6.107         0 \r\n 2020          283           15.04224      30            11.55         0 \r\n 2020          284           13.25376      28.74         15.64         0 \r\n 2020          285           14.16096      28.82         12.04         0 \r\n 2020          286           13.05504      20.81         5.229         1.27 \r\n 2020          287           14.82624      23.53         5.199         0 \r\n 2020          288           13.15872      27.55         5.471         0 \r\n 2020          289           14.54976      13.91        -0.543         0 \r\n 2020          290           12.02688      13.93        -1.262         0 \r\n 2020          291           6.129216      20.72         5.531         0 \r\n 2020          292           5.073408      12.77         1.864         1.524 \r\n 2020          293           3.0456        3.916         0.215         0.254 \r\n 2020          294           3.40848       8.92          0.651         0.508 \r\n 2020          295           9.46944       13.77         1.803         25.654 \r\n 2020          296           8.92512       27.26         7.459         4.064 \r\n 2020          297           3.81888       7.54          2.724         5.08 \r\n 2020          298           6.90768       6.975        -0.583         0 \r\n 2020          299           12.15         4.855         1.126         0 \r\n 2020          300           4.035744      1.186        -1.799         0.254 \r\n 2020          301           12.18         2.34         -3.074         0 \r\n 2020          302           8.44128       9.96         -4.128         0 \r\n 2020          303           4.016736      7.722        -1.19          0 \r\n 2020          304           11.2752       10.87        -0.401         0 \r\n 2020          305           12.01824      20.21         0.448         0 \r\n 2020          306           12.45888      7.842        -4.574         0 \r\n 2020          307           11.59488      16.1         -7.08          0 \r\n 2020          308           11.9664       23.14         0.823         0 \r\n 2020          309           11.05056      23.38         8.17          0 \r\n 2020          310           11.09376      23.21         8.41          0 \r\n 2020          311           10.99008      25.18         6.168         0 \r\n 2020          312           11.09376      23.11         9.7           0 \r\n 2020          313           10.20384      25.2          12.18         0 \r\n 2020          314           7.24896       25.13         16.64         0 \r\n 2020          315           1.295136      19.24         0.589         20.32 \r\n 2020          316           11.1888       10.1         -2.335         0 \r\n 2020          317           7.88832       13.04        -1.555         0 \r\n 2020          318           10.90368      5.37         -6.439         0 \r\n 2020          319           1.52496       12.26        -2.021         5.334 \r\n 2020          320           6.16032       11.33        -0.947         0.762 \r\n 2020          321           10.37664      14.57        -3.378         0 \r\n 2020          322           6.525792      5.562        -4.645         0 \r\n 2020          323           9.866881      14.09         0.408         0 \r\n 2020          324           8.856         21.76         8.33          0 \r\n 2020          325           8.60544       16.17         1.965         0 \r\n 2020          326           5.755968      8.25          0.549         0 \r\n 2020          327           5.090688      10.59        -1.677         0 \r\n 2020          328           5.743008      5.057        -5.73          1.27 \r\n 2020          329           0.952128      7.349         0.792         31.242 \r\n 2020          330           1.699488      7.43          4.733         15.494 \r\n 2020          331           7.87968       10.26         0.751         0 \r\n 2020          332           7.0416        7.268        -2.325         0 \r\n 2020          333           9.331199      13.86        -2.396         0 \r\n 2020          334           5.078592      6.107        -2.426         0 \r\n 2020          335           8.96832       0.731        -8.5           0 \r\n 2020          336           9.322561      4.401        -10.56         0 \r\n 2020          337           9.14976       10.46        -9.1           0 \r\n 2020          338           8.95104       7.268        -7.628         0 \r\n 2020          339           8.6832        9.23         -3.732         0 \r\n 2020          340           8.67456       10.88        -5.405         0 \r\n 2020          341           3.707424      4.926        -3.013         0 \r\n 2020          342           1.375488      1.095        -1.838         0 \r\n 2020          343           2.422656      3.401        -0.3           0 \r\n 2020          344           8.562239      14.36        -0.219         0 \r\n 2020          345           8.39808       17.15        -3.682         0 \r\n 2020          346           0.765504      5.138         2.006         19.558 \r\n 2020          347           1.924128      2.147        -0.644         6.096 \r\n 2020          348           6.361632     -0.665        -5.243         0 \r\n 2020          349           7.75008      -2.527        -7.982         0 \r\n 2020          350           5.089824     -2.062        -8.12          0 \r\n 2020          351           7.6464       -0.755        -9.61          0 \r\n 2020          352           3.887136     -0.159        -9.69          0 \r\n 2020          353           4.845312      5.461        -3.581         0 \r\n 2020          354           1.898208      3.966        -1.453         0 \r\n 2020          355           8.09568       5.168        -5.456         0 \r\n 2020          356           8.64          8.89         -0.087         0 \r\n 2020          357           6.698592      8.67         -5.324         0 \r\n 2020          358           4.10832       15.52        -9.68          0 \r\n 2020          359           8.67456      -9.65         -15.02         0 \r\n 2020          360           8.588159     -3.854        -16.69         0 \r\n 2020          361           8.64          4.573        -9.04          0 \r\n 2020          362           4.075488      6.369        -5.202         0 \r\n 2020          363           3.638304     -2.638        -9.2           0 \r\n 2020          364           1.279584      0.306        -9.06          33.782 \r\n 2020          365           7.45632       0.529        -4.533         0.508 \r\n 2020          366           6.8256        1.419        -5.922         5.588 \r\n 2021          1             2.43648      -1.171        -7.769         12.192 \r\n 2021          2             6.176736     -4.452        -10.97         0 \r\n 2021          3             6.372864     -3.013        -8.56          0 \r\n 2021          4             4.561056      0.367        -3.459         1.27 \r\n 2021          5             6.94656       6.248        -8.45          4.318 \r\n 2021          6             5.428512      0.792        -3.743         0.762 \r\n 2021          7             5.480352      0.529        -6.044         0.508 \r\n 2021          8             5.8752        0.367        -5.162         0.508 \r\n 2021          9             4.213728     -2            -4.564         0 \r\n 2021          10            4.019328     -2.162        -6.298         0 \r\n 2021          11            8.99424       3.208        -2.618         0.254 \r\n 2021          12            9.81504       5.188        -4.513         0 \r\n 2021          13            6.299424      4.168        -0.603         0 \r\n 2021          14            4.080672      3.704         0.043         1.27 \r\n 2021          15            5.939136      1.186        -3.257         1.016 \r\n 2021          16            4.205089      1.166        -2.588         0 \r\n 2021          17            8.14752      -1.018        -4.99          3.048 \r\n 2021          18            9.16704      -0.563        -9.55          0.254 \r\n 2021          19            7.48224       2.855        -10.94         0 \r\n 2021          20            10.77408      5.259        -14.43         0 \r\n 2021          21            10.87776      4.916        -3.905         0 \r\n 2021          22            10.81728     -3.439        -14.55         0 \r\n 2021          23            9.08928      -0.927        -16.97         0 \r\n 2021          24            6.763392      1.641        -2.507         0 \r\n 2021          25            3.575232     -1.14         -4.229         9.906 \r\n 2021          26            8.13024      -3.885        -13.24         0 \r\n 2021          27            7.49088      -5.892        -15.67         0 \r\n 2021          28            11.71584     -4.878        -18.28         0.508 \r\n 2021          29            11.3184      -0.796        -10.6          0.508 \r\n 2021          30            2.995488      1.52         -1.838         17.018 \r\n 2021          31            7.24032       0.529        -0.806         1.778 \r\n 2021          32            6.772032     -0.665        -8.96          0 \r\n 2021          33            7.6464       -3.175        -7.089         0 \r\n 2021          34            8.873279      2.127        -7.363         0 \r\n 2021          35            4.709664      2.562        -9.12          5.842 \r\n 2021          36            13.03776     -7.556        -14.34         0 \r\n 2021          37            7.3872       -13.31        -22.16         0 \r\n 2021          38            9.14976      -16.56        -25.46         0 \r\n 2021          39            7.6032       -14.87        -18.74         0 \r\n 2021          40            11.37024     -14.69        -25.09         0 \r\n 2021          41            8.01792      -11.98        -15.75         0 \r\n 2021          42            10.61856     -13.06        -18.36         0 \r\n 2021          43            9.79776      -15.51        -20.07         0 \r\n 2021          44            11.11968     -17.75        -22.58         0 \r\n 2021          45            9.73728      -19.56        -21.91         0 \r\n 2021          46            9.08928      -17.91        -22.08         2.794 \r\n 2021          47            15.06816     -12.96        -22.7          0 \r\n 2021          48            12.89952     -7.181        -24.66         0.254 \r\n 2021          49            15.13728     -8.17         -17.62         0 \r\n 2021          50            12.38976     -3.52         -17.37         0.254 \r\n 2021          51            15.5088       1.126        -14.61         0 \r\n 2021          52            4.904928      1.965        -8.12          2.54 \r\n 2021          53            14.58432      5.804        -3.703         0 \r\n 2021          54            16.0272       9.72          0.812         0 \r\n 2021          55            15.01632      5.238        -5             0 \r\n 2021          56            14.75712      5.552        -6.988         0 \r\n 2021          57            14.59296      4.895        -6.095         0 \r\n 2021          58            15.39648      8.54         -1.859         0 \r\n 2021          59            11.448        6.592        -2.73          0 \r\n 2021          60            15.58656      3.31         -5.547         0 \r\n 2021          61            15.71616      10.99        -6.278         0 \r\n 2021          62            15.83712      12.48         0.57          0 \r\n 2021          63            15.96672      8.21         -1.109         0 \r\n 2021          64            12.54528      8.68         -2.922         0 \r\n 2021          65            15.52608      14.29         0.61          0 \r\n 2021          66            14.83488      18.67         0.974         0 \r\n 2021          67            15.2064       20.68         6.047         0 \r\n 2021          68            15.90624      22.1          6.067         0 \r\n 2021          69            6.712416      21.46         8.96          1.27 \r\n 2021          70            15.61248      11.59         0.893         0 \r\n 2021          71            10.29888      10.46        -2.081         0 \r\n 2021          72            14.01408      15.57        -1.859         0 \r\n 2021          73            4.433184      10.44         2.511         1.27 \r\n 2021          74            2.985984      3.258        -0.138         17.78 \r\n 2021          75            5.107968      3.976         0.448         0 \r\n 2021          76            1.84464       3.057         1.581         4.318 \r\n 2021          77            11.11104      10.99         2.006         1.778 \r\n 2021          78            19.75968      11.11        -4.098         0 \r\n 2021          79            19.85472      14.98        -2.518         0 \r\n 2021          80            18.25632      20.12         3.006         0 \r\n 2021          81            9.65088       18.23         7.722         0 \r\n 2021          82            3.500928      13.32         8.55          18.542 \r\n 2021          83            5.178816      13.06         6.107         0.508 \r\n 2021          84            1.232928      7.459         5.34          5.334 \r\n 2021          85            2.100384      10.81         5.784         0 \r\n 2021          86            10.90368      16.97         5.159         8.128 \r\n 2021          87            16.65792      9.09          0.63          0 \r\n 2021          88            18.78336      22.74         0.742         0 \r\n 2021          89            13.33152      13.98         0.802         0 \r\n 2021          90            18.46368      6.198        -5.284         0 \r\n 2021          91            19.9584       8.37         -6.846         0 \r\n 2021          92            19.2672       14.16        -3.065         0 \r\n 2021          93            18.90432      23.11         5.885         0 \r\n 2021          94            18.16128      27.08         4.602         0 \r\n 2021          95            18.41184      27.43         14.67         0 \r\n 2021          96            15.43104      27.03         14.46         0 \r\n 2021          97            9.918721      23.13         13.48         23.876 \r\n 2021          98            6.100704      14.85         9.13          0.762 \r\n 2021          99            8.32032       13.94         9.06          0 \r\n 2021          100           2.763072      10.63         7.399         41.402 \r\n 2021          101           9.158399      14.11         6.198         4.572 \r\n 2021          102           22.87008      15.16         5.704         0 \r\n 2021          103           22.18752      13.94         1.338         0 \r\n 2021          104           19.88064      11.05        -1.049         0 \r\n 2021          105           13.19328      11.61         0.468         0 \r\n 2021          106           17.1072       15.92         0.802         0 \r\n 2021          107           20.28672      18.41         5.542         0.508 \r\n 2021          108           16.01856      17.74         4.269         0 \r\n 2021          109           7.87968       8.5           2.168         2.794 \r\n 2021          110           12.45888      7.601        -1.474         0 \r\n 2021          111           19.1808       9.98         -4.078         0 \r\n 2021          112           24.52896      15.96        -2.628         0 \r\n 2021          113           8.00064       13.52         7.116         0 \r\n 2021          114           20.76192      17.41         4.068         0 \r\n 2021          115           22.00608      17.22         0.145         0 \r\n 2021          116           24.54624      30.6          7.238         0 \r\n 2021          117           23.14656      31.14         15.86         0 \r\n 2021          118           9.45216       22.33         13.07         9.652 \r\n 2021          119           21.56544      24.35         8.63          0.254 \r\n 2021          120           21.31488      23.55         7.126         0 \r\n 2021          121           25.16832      30.61         11.98         0 \r\n 2021          122           23.90688      29.81         14.36         0 \r\n 2021          123           7.56          22.29         12.9          12.446 \r\n 2021          124           19.7424       17.5          6.612         0 \r\n 2021          125           25.0992       20            3.158         0 \r\n 2021          126           16.88256      18.17         5.411         0 \r\n 2021          127           26.15328      19.44         3.764         0 \r\n 2021          128           9.68544       14.88         3.168         32.258 \r\n 2021          129           19.63008      15.03         4.108         35.052 \r\n 2021          130           18.76608      17.37         5.865         0 \r\n 2021          131           25.89408      15.64         5.078         0 \r\n 2021          132           25.00416      18.33         2.693         0 \r\n 2021          133           26.54208      20.62         4.502         0 \r\n 2021          134           19.68192      21.78         6.087         2.54 \r\n 2021          135           4.628448      14.7          10.32         15.494 \r\n 2021          136           10.99872      19.74         12.66         6.096 \r\n 2021          137           7.58592       19.08         14.4          12.192 \r\n 2021          138           4.442688      20.18         16            10.414 \r\n 2021          139           14.99904      25.77         18.03         1.778 \r\n 2021          140           12.744        26.29         19.08         0.762 \r\n 2021          141           11.41344      24.54         18.27         0.508 \r\n 2021          142           8.527681      24.01         17.65         5.08 \r\n 2021          143           18.22176      28.72         18.33         0 \r\n 2021          144           16.7616       29.65         18.65         0.254 \r\n 2021          145           13.176        26.84         20.26         1.778 \r\n 2021          146           26.38656      28.23         16.89         4.064 \r\n 2021          147           9.23616       20.26         8.79          8.382 \r\n 2021          148           5.459616      9.59          7.449         0.254 \r\n 2021          149           20.31264      18.51         4.876         0 \r\n 2021          150           16.5024       21.49         6.541         0 \r\n 2021          151           8.2512        18.96         11.34         0 \r\n 2021          152           25.34112      26.08         8.84          0.254 \r\n 2021          153           22.09248      27.95         11.38         0 \r\n 2021          154           25.80768      31.24         13.95         0 \r\n 2021          155           28.14048      31.63         15.26         0 \r\n 2021          156           26.0928       33.48         19.21         0 \r\n 2021          157           21.5136       31.49         17.85         0 \r\n 2021          158           19.88928      30.77         20.8          5.08 \r\n 2021          159           22.54176      31.36         19.46         0 \r\n 2021          160           24.64128      33.45         19.83         0 \r\n 2021          161           26.27424      35.73         20.18         0 \r\n 2021          162           24.52896      35.43         22.11         0 \r\n 2021          163           23.9328       33.14         17.78         0 \r\n 2021          164           28.83168      33.8          15.18         0 \r\n 2021          165           24.1056       31.36         18.39         0 \r\n 2021          166           28.84896      32.34         15.22         0 \r\n 2021          167           28.96128      31.06         15.09         0 \r\n 2021          168           22.5072       34.92         19.33         4.826 \r\n 2021          169           14.61024      32.49         19.05         41.148 \r\n 2021          170           28.40832      31.85         20.07         2.286 \r\n 2021          171           12.45888      28.43         20.08         6.096 \r\n 2021          172           19.02528      21.81         10.5          0 \r\n 2021          173           19.73376      27.16         8.68          22.098 \r\n 2021          174           24.47712      28.32         16.5          2.032 \r\n 2021          175           12.57984      27.84         20.15         14.986 \r\n 2021          176           12.04416      27.18         20.82         57.912 \r\n 2021          177           12.29472      27.09         20.84         3.048 \r\n 2021          178           19.49184      27.82         19.32         0 \r\n 2021          179           12.82176      27.61         20.32         3.302 \r\n 2021          180           8.80416       25.67         20.83         8.636 \r\n 2021          181           17.8416       29.89         21.05         9.144 \r\n 2021          182           28.728        29.08         19.17         0 \r\n 2021          183           26.15328      27.97         17.85         0 \r\n 2021          184           26.60256      29.48         15.44         0 \r\n 2021          185           26.83584      30.7          18.49         0 \r\n 2021          186           27.38016      32.41         20.46         0 \r\n 2021          187           27.55296      31.66         20.59         0 \r\n 2021          188           15.30144      30.14         20.12         3.048 \r\n 2021          189           16.69248      26.08         17.05         0 \r\n 2021          190           15.54336      26.49         16.31         14.986 \r\n 2021          191           9.1584        22.82         18.18         14.732 \r\n 2021          192           5.759424      21.4          17.76         7.112 \r\n 2021          193           9.33984       23.17         17.42         5.08 \r\n 2021          194           19.12896      28.2          18.43         0 \r\n 2021          195           13.61664      30.58         19.58         6.858 \r\n 2021          196           9.99648       26.06         18.66         51.562 \r\n 2021          197           14.80896      27.07         17.51         0 \r\n 2021          198           23.83776      28            15.1          0 \r\n 2021          199           23.95872      28.31         16.11         0 \r\n 2021          200           23.61312      29.76         17.82         0 \r\n 2021          201           20.78784      29.52         17.53         0 \r\n 2021          202           18.94752      32            18.86         0 \r\n 2021          203           19.63872      30.64         20.02         0 \r\n 2021          204           22.69728      32.2          20.9          0 \r\n 2021          205           23.34528      33.57         22.02         0 \r\n 2021          206           22.18752      31.98         17.89         0 \r\n 2021          207           24.41664      33.02         16.26         0 \r\n 2021          208           24.93504      31.79         17.75         0 \r\n 2021          209           19.42272      33.28         22.82         0 \r\n 2021          210           14.20416      32.64         22.29         4.064 \r\n 2021          211           15.32736      25.76         18.95         0 \r\n 2021          212           12.30336      25.6          16.52         10.668 \r\n 2021          213           21.10752      27.46         14.67         0 \r\n 2021          214           19.0944       27.43         11.97         0 \r\n 2021          215           22.25664      28.97         12.54         0 \r\n 2021          216           23.44896      28.59         13.54         0 \r\n 2021          217           9.4176        25.64         16.2          1.27 \r\n 2021          218           20.31264      28.94         20.28         0.254 \r\n 2021          219           15.12864      30.56         19.86         0 \r\n 2021          220           15.31008      29.58         22.16         0 \r\n 2021          221           16.2          33.08         21.62         0 \r\n 2021          222           19.75104      32.8          23.83         0 \r\n 2021          223           13.61664      31.71         22.49         1.016 \r\n 2021          224           3.527712      26.05         19.73         0 \r\n 2021          225           17.34048      28.7          16.53         0 \r\n 2021          226           24.3216       28.58         12.48         0 \r\n 2021          227           24.39072      27.19         10.99         0 \r\n 2021          228           22.2912       27.6          10.34         0 \r\n 2021          229           21.5568       29.88         14.43         0 \r\n 2021          230           22.7664       31.61         15.23         0 \r\n 2021          231           20.89152      31.82         18.49         0 \r\n 2021          232           21.7296       31.86         18.02         0 \r\n 2021          233           15.47424      29.52         15.96         12.192 \r\n 2021          234           23.72544      28.19         13.11         0 \r\n 2021          235           18.97344      31.79         17.49         1.778 \r\n 2021          236           21.62592      34.53         20.92         4.064 \r\n 2021          237           14.85216      32.04         20.68         2.286 \r\n 2021          238           15.84576      31.2          19.32         0.254 \r\n 2021          239           20.80512      33.84         21.43         0.508 \r\n 2021          240           20.66688      34.17         22.59         0 \r\n 2021          241           17.60832      30            19.02         0 \r\n 2021          242           20.23488      30.28         16.19         0 \r\n 2021          243           5.687712      25.16         17.91         28.956 \r\n 2021          244           20.1312       26.92         15.07         0 \r\n 2021          245           18.21312      25.92         12.82         0 \r\n 2021          246           5.488992      22.52         16.93         9.144 \r\n 2021          247           6.76512       23.43         14.59         0 \r\n 2021          248           21.72096      27.79         13.28         0 \r\n 2021          249           19.7856       30.88         15.46         0 \r\n 2021          250           18.41184      30.81         13.49         0 \r\n 2021          251           20.63232      26.71         12.34         0 \r\n 2021          252           18.95616      26.52         10.04         0 \r\n 2021          253           19.34496      29.11         10.27         0 \r\n 2021          254           17.72928      31.94         16.64         0 \r\n 2021          255           15.56928      31.83         18.81         0 \r\n 2021          256           17.22816      31.93         18.66         0 \r\n 2021          257           13.49568      28.15         14.47         0 \r\n 2021          258           20.07936      27.55         10.34         0 \r\n 2021          259           19.38816      30.64         11.64         0 \r\n 2021          260           16.45056      31.87         13.85         0 \r\n 2021          261           18.22176      31.57         14.55         0 \r\n 2021          262           16.17408      33.72         17.47         0 \r\n 2021          263           9.87552       31.2          16.67         24.384 \r\n 2021          264           14.7744       23.67         12.5          0.254 \r\n 2021          265           17.69472      22.95         7.904         0 \r\n 2021          266           18.4032       23.94         5.421         0 \r\n 2021          267           13.27968      28.29         9.3           1.016 \r\n 2021          268           17.59968      24.05         6.461         0 \r\n 2021          269           17.20224      32.03         10.32         0 \r\n 2021          270           17.04672      31.84         16.21         0 \r\n 2021          271           15.37056      30.57         14.21         0 \r\n 2021          272           15.26688      32.7          14.15         0 \r\n 2021          273           13.6944       31.91         16.99         0 \r\n 2021          274           11.12832      29.28         15.73         0 \r\n 2021          275           8.05248       27.51         18.19         1.27 \r\n 2021          276           7.9488        25.22         11.76         0 \r\n 2021          277           7.11072       24.3          11.25         0 \r\n 2021          278           7.11072       22.43         13.23         0 \r\n 2021          279           3.725568      21.44         17.54         0 \r\n 2021          280           3.201984      23.06         15.11         0.254 \r\n 2021          281           8.93376       27.48         14.26         0.254 \r\n 2021          282           9.88416       29.2          14.89         0 \r\n 2021          283           7.87968       28.92         15.98         6.858 \r\n 2021          284           2.854656      20.44         13.63         10.922 \r\n 2021          285           15.2496       23.3          9.49          0.254 \r\n 2021          286           5.635008      23.56         14            10.16 \r\n 2021          287           13.12416      22.85         10.66         0 \r\n 2021          288           5.97024       16.54         4.552         0 \r\n 2021          289           14.83488      17.79         4.451         0 \r\n 2021          290           14.80032      22.25         5.259         0 \r\n 2021          291           14.48064      24.56         6.047         0 \r\n 2021          292           12.86496      24.17         8.33          0 \r\n 2021          293           8.26848       24.03         11.45         0 \r\n 2021          294           3.386016      11.82         6.733         0 \r\n 2021          295           9.87552       13.12         1.277         3.048 \r\n 2021          296           13.18464      14.76        -0.421         0 \r\n 2021          297           1.033344      10.25         7.005         40.894 \r\n 2021          298           7.74144       13.99         0.954         1.27 \r\n 2021          299           13.25376      15.44        -0.016         0 \r\n 2021          300           5.97024       14.81         8.23          0 \r\n 2021          301           1.241568      10.3          7.802         11.43 \r\n 2021          302           1.931904      11.73         7.409         2.032 \r\n 2021          303           8.40672       16.1          3.956         0 \r\n 2021          304           13.02912      12.79        -0.522         0 \r\n 2021          305           6.9552        9.75         -2.69          0 \r\n 2021          306           11.30976      9.71         -4.026         0 \r\n 2021          307           11.47392      10.92        -5.628         0 \r\n 2021          308           9.65952       12.54        -1.19          0 \r\n 2021          309           11.7936       13.24        -0.543         0 \r\n 2021          310           11.54304      18.75         2.288         0 \r\n 2021          311           10.08288      20.44         4.149         0 \r\n 2021          312           10.59264      21.37         7.137         0 \r\n 2021          313           8.71776       17.79         6.007         0 \r\n 2021          314           2.03904       15.46         4.613         0 \r\n 2021          315           9.56448       15.05         3.764         11.176 \r\n 2021          316           4.305312      3.784         0.398         1.27 \r\n 2021          317           3.55968       3.734         0.782         0.254 \r\n 2021          318           2.965248      6.713        -1.879         0 \r\n 2021          319           6.772032      8.69         -1.768         0 \r\n 2021          320           8.62272       16.02        -0.887         0 \r\n 2021          321           5.562432      15.94         1.662         0 \r\n 2021          322           8.15616       2.915        -5.812         0 \r\n 2021          323           7.56          6.753        -8.21          0 \r\n 2021          324           8.22528       13.87         2.228         0 \r\n 2021          325           9.66816       14.06        -4.169         0 \r\n 2021          326           8.62272       2.309        -8.41          0 \r\n 2021          327           9.12384       12.38        -5.831         0 \r\n 2021          328           4.625856      15.6          4.068         0 \r\n 2021          329           7.05888       4.885        -10.56         0 \r\n 2021          330           7.9488        4.956        -10.72         0 \r\n 2021          331           6.829056      16.42        -2.953         0.762 \r\n 2021          332           9.49536       6.531        -3.794         0 \r\n 2021          333           7.22304       15.13        -1.09          0 \r\n 2021          334           9.01152       14.59        -1.13          0 \r\n 2021          335           6.9552        13.33         3.582         0.254 \r\n 2021          336           8.52768       15.38         0.367         0 \r\n 2021          337           8.74368       15.1         -0.067         0 \r\n 2021          338           7.776         7.642        -3.439         0 \r\n 2021          339           1.28304       7.802         0.286         0 \r\n 2021          340           9.21024       0.964        -13.02         0 \r\n 2021          341           5.698944     -0.34         -14.67         0 \r\n 2021          342           8.83872       3.431        -6.48          0 \r\n 2021          343           6.284736      13.02        -0.907         0 \r\n 2021          344           2.227392      13.8         -3.297         6.35 \r\n 2021          345           8.70048       7.621        -1.028         0 \r\n 2021          346           8.9424        12.11        -2.75          0 \r\n 2021          347           8.79552       13.43        -0.725         0 \r\n 2021          348           5.126976      13.9         -0.249         0 \r\n 2021          349           5.737824      24.53         12.21         2.286 \r\n 2021          350           8.73504       12.42        -4.554         0 \r\n 2021          351           7.28352       4.814        -8.73          0 \r\n 2021          352           7.91424       2.288        -7.049         0 \r\n 2021          353           6.610464      0.711        -10.64         0 \r\n 2021          354           8.4672        5.562        -6.643         0 \r\n 2021          355           7.74144       4.936        -10.22         0 \r\n 2021          356           7.87968       2.986        -11.39         0 \r\n 2021          357           5.684256      13.07        -2.912         0 \r\n 2021          358           3.943296      19.33         3.623         0 \r\n 2021          359           8.56224       13           -2             0 \r\n 2021          360           4.342464      8.36         -6.764         0.508 \r\n 2021          361           4.295808      6.935        -3.732         0 \r\n 2021          362           0.98064       4.269        -2.344         14.732 \r\n 2021          363           3.597696     -0.421        -10.02         0 \r\n 2021          364           1.29168      -0.006        -4.585         0 \r\n 2021          365           1.725408      0.943        -5.507         0 \r\n 2022          1             2.41488      -1.535        -13.57         11.43 \r\n 2022          2             9.58176      -13.57        -21.82         0 \r\n 2022          3             9.46944      -4.736        -22.33         0 \r\n 2022          4             7.19712       1.308        -6.389         0 \r\n 2022          5             8.66592      -3.257        -14.41         0 \r\n 2022          6             9.26208      -14.4         -21.23         0 \r\n 2022          7             7.09344      -12.25        -22.4          0 \r\n 2022          8             2.808864     -0.138        -12.39         0 \r\n 2022          9             9.85824      -0.219        -13.8          0 \r\n 2022          10            9.65088      -7.932        -15.44         0 \r\n 2022          11            9.29664       6.995        -15.83         0 \r\n 2022          12            6.96384       9.5          -2.203         0 \r\n 2022          13            9.288         8.23         -1.707         0 \r\n 2022          14            2.191104      0.731        -4.219         1.27 \r\n 2022          15            6.753888     -4.21         -12.09         4.572 \r\n 2022          16            7.83648      -1.666        -16.85         0 \r\n 2022          17            8.64864      -1.687        -8.23          0 \r\n 2022          18            8.93376       5.795        -3.338         0.508 \r\n 2022          19            6.781536      1.217        -16.14         0 \r\n 2022          20            10.96416     -14.14        -21.66         0 \r\n 2022          21            11.02464     -8.69         -23.4          0 \r\n 2022          22            10.73952      2.643        -8.88          0 \r\n 2022          23            10.16064      5.461        -10.89         0 \r\n 2022          24            3.474144     -0.097        -15.53         0 \r\n 2022          25            11.45664     -11.74        -19.84         0 \r\n 2022          26            11.60352     -5.101        -22.43         0 \r\n 2022          27            6.32448       2.187        -6.764         0 \r\n 2022          28            11.80224     -6.399        -15.71         0 \r\n 2022          29            11.2752       1.317        -15.85         0 \r\n 2022          30            9.94464      -2.253        -9.79          0 \r\n 2022          31            10.81728      5.279        -10.89         0 \r\n 2022          32            6.012576      5.683        -8.04          0 \r\n 2022          33            6.322752     -6.886        -11.44         0 \r\n 2022          34            7.84512      -7.597        -15.57         0 \r\n 2022          35            8.9424       -4.189        -18.7          0 \r\n 2022          36            12.45888     -1.96         -18.36         0 \r\n 2022          37            10.68768      6.895        -9.59          0 \r\n 2022          38            11.11104      0.246        -14.02         0 \r\n 2022          39            11.60352      14.03        -7.657         0 \r\n 2022          40            6.225984      7.601        -2.344         0 \r\n 2022          41            9.53856       4.451        -4.929         1.27 \r\n 2022          42            7.89696       8.5          -10.04         0.254 \r\n 2022          43            13.74624     -7.394        -15.23         0 \r\n 2022          44            11.448       -8.55         -14.53         0 \r\n 2022          45            13.67712      0.448        -13.29         0 \r\n 2022          46            11.93184      10.14        -9.18          0 \r\n 2022          47            3.791232      14.87        -0.412         4.318 \r\n 2022          48            2.863296     -0.401        -12.31         3.048 \r\n 2022          49            14.7312       4.28         -13.51         0.254 \r\n 2022          50            15.12864     -2.385        -13.43         0 \r\n 2022          51            14.37696      14.77        -6.197         0 \r\n 2022          52            13.46976      15.19        -1.312         0 \r\n 2022          53            3.25728       2.905        -12.21         2.286 \r\n 2022          54            9.26208      -7.708        -14.85         0 \r\n 2022          55            4.712256     -4.047        -9.02          0 \r\n 2022          56            16.70112     -5.903        -15.42         0 \r\n 2022          57            16.51968      2.41         -15.87         0.254 \r\n 2022          58            16.30368      7.642        -7.191         0 \r\n 2022          59            15.38784      14.93        -2.031         0 \r\n 2022          60            14.2992       17.27         1.176         0 \r\n 2022          61            12.97728      20            0.064         0 \r\n 2022          62            12.2688       4.835        -3.357         0 \r\n 2022          63            12.81312      9.46         -4.239         0 \r\n 2022          64            8.26848       20.76         4.936         12.192 \r\n 2022          65            12.19104      4.936        -1.009         0 \r\n 2022          66            15.05088     -0.918        -8.63          0.254 \r\n 2022          67            18.67968      3.36         -11.76         0.762 \r\n 2022          68            17.72064      0.823        -4.432         0 \r\n 2022          69            8.57088      -4.452        -8.02          0 \r\n 2022          70            17.496       -2.568        -11.95         0 \r\n 2022          71            19.224       -2.882        -13.95         0 \r\n 2022          72            18.77472      13.87        -4.705         0 \r\n 2022          73            17.90208      17.14         2.309         0 \r\n 2022          74            18.02304      16.92         0.256         0 \r\n 2022          75            17.2368       21.69         2.39          0 \r\n 2022          76            14.7744       20.35         5.602         0 \r\n 2022          77            2.312928      7.944         1.419         24.638 \r\n 2022          78            18.95616      12.36         1.742         0.254 \r\n 2022          79            19.02528      21.99         0.327         0 \r\n 2022          80            18.13536      24.86         8.36          4.318 \r\n 2022          81            2.77776       14.16         9.63          12.446 \r\n 2022          82            3.44736       11.57         2.955         1.778 \r\n 2022          83            5.742144      5.835         1.298         1.778 \r\n 2022          84            15.5088       11.31         1.904         0 \r\n 2022          85            21.7296       5.026        -3.074         0 \r\n 2022          86            20.98656      4.512        -6.298         0 \r\n 2022          87            18.80928      7.328        -6.724         0 \r\n 2022          88            6.48864       9.35          0.63          0 \r\n 2022          89            2.287872      12.74         0.468         9.398 \r\n 2022          90            4.399488      3.168         0.286         2.794 \r\n 2022          91            20.26944      9.2          -2.244         0 \r\n 2022          92            10.08288      11.21         1.5           2.794 \r\n 2022          93            11.94912      12.28        -0.907         3.302 \r\n 2022          94            12.56256      10.16         0.145         0.254 \r\n 2022          95            5.753376      11.74        -0.684         15.494 \r\n 2022          96            11.26656      11.97         4.613         0 \r\n 2022          97            7.15392       6.026         1.075         6.858 \r\n 2022          98            6.300288      4.411         0.043         0 \r\n 2022          99            24.3216       14.35        -2.537         0 \r\n 2022          100           20.9088       23.66         2.369         0 \r\n 2022          101           19.5264       18.96         5.583         0 \r\n 2022          102           10.95552      22.24         3.198         0 \r\n 2022          103           2.85984       20.76         0.265         8.382 \r\n 2022          104           24.9696       12.2         -1.272         0 \r\n 2022          105           15.27552      10.79         0.296         0 \r\n 2022          106           24.82272      11.15        -2.75          0 \r\n 2022          107           9.16704       7.419        -4.037         3.302 \r\n 2022          108           20.84832      7.409        -2.143         0.254 \r\n 2022          109           18.86976      10.36        -4.777         0 \r\n 2022          110           2.395872      10.96         6.683         18.542 \r\n 2022          111           23.14656      22.78         5.743         0.762 \r\n 2022          112           7.06752       27.44         12.93         0.762 \r\n 2022          113           19.40544      29.32         14.63         2.794 \r\n 2022          114           24.03648      19.71         8.68          4.318 \r\n 2022          115           9.60768       8.88         -0.958         0 \r\n 2022          116           25.9632       13.86        -2.487         0 \r\n 2022          117           20.25216      21.9          2.753         0 \r\n 2022          118           12.03552      19.18         4.542         0 \r\n 2022          119           6.5664        16.79         12.32         9.906 \r\n 2022          120           10.35072      20.99         10.02         5.08 \r\n 2022          121           8.11296       13.04         7.883         0 \r\n 2022          122           16.81344      14.35         4.118         5.08 \r\n 2022          123           5.245344      10.9          7.016         12.446 \r\n 2022          124           23.6736       16.9          2.581         0 \r\n 2022          125           7.1712        14.75         10.51         0.508 \r\n 2022          126           12.88224      17.49         6.461         0 \r\n 2022          127           27.80352      22.28         4.108         0 \r\n 2022          128           14.17824      23.38         11.03         0 \r\n 2022          129           25.8336       32.18         15.64         0 \r\n 2022          130           22.01472      33.53         20.89         0 \r\n 2022          131           23.85504      35.45         20.48         0 \r\n 2022          132           26.61984      36.48         22.87         0 \r\n 2022          133           27.03456      32.26         17.77         0 \r\n 2022          134           26.6976       33.44         14.13         0 \r\n 2022          135           6.801408      23.51         10.66         1.27 \r\n 2022          136           27.94176      28.74         10.32         0 \r\n 2022          137           15.71616      27.94         9.99          2.794 \r\n 2022          138           15.08544      24.13         15.28         5.334 \r\n 2022          139           24.74496      31.99         15.06         0 \r\n 2022          140           4.517856      21.62         13.06         0 \r\n 2022          141           11.86272      19.29         8.51          0.254 \r\n 2022          142           28.3824       20.38         4.269         0 \r\n 2022          143           23.49216      21.23         8.25          0 \r\n 2022          144           10.152        22.27         11.56         6.35 \r\n 2022          145           9.78048       24.17         11.44         18.796 \r\n 2022          146           14.61888      22.52         14.21         3.302 \r\n 2022          147           17.09856      23.49         13.02         0 \r\n 2022          148           25.488        26.76         12.8          0 \r\n 2022          149           18.792        31.64         18.07         0 \r\n 2022          150           25.56576      32.93         20.3          0 \r\n 2022          151           10.69632      26.94         20.23         3.048 \r\n 2022          152           22.7664       25.52         14.66         0.508 \r\n 2022          153           30.10176      27.05         11.08         0 \r\n 2022          154           29.7216       29.6          13.83         0 \r\n 2022          155           17.66016      28.18         13.68         0 \r\n 2022          156           24.64128      30.5          14.15         3.556 \r\n 2022          157           16.57152      27.55         18.08         7.366 \r\n 2022          158           24.28704      27.21         15.69         0 \r\n 2022          159           20.32992      24.17         14.32         7.366 \r\n 2022          160           25.23744      28.17         12.81         0 \r\n 2022          161           10.0224       21.93         16.04         2.032 \r\n 2022          162           14.1696       27.52         14.58         0.254 \r\n 2022          163           22.75776      31.89         19.98         0 \r\n 2022          164           15.71616      34.08         21.21         0 \r\n 2022          165           28.84032      36.97         24.33         0 \r\n 2022          166           23.96736      35.49         23.18         11.938 \r\n 2022          167           29.51424      33.61         17.64         0.254 \r\n 2022          168           29.34144      32.12         18.81         0 \r\n 2022          169           29.8944       29.13         16.06         0 \r\n 2022          170           30.05856      30.67         12.31         0 \r\n 2022          171           23.9328       33.61         22.09         0 \r\n 2022          172           26.68032      35.81         19.66         0.762 \r\n 2022          173           28.39104      31.1          18.71         0 \r\n 2022          174           29.17728      32.74         15.62         0 \r\n 2022          175           12.89088      29.2          18.57         0.508 \r\n 2022          176           17.7984       30.47         19.17         18.288 \r\n 2022          177           29.47968      25.24         13.33         0 \r\n 2022          178           30.07584      27.83         11.09         0 \r\n 2022          179           29.36736      29.13         12.48         0 \r\n 2022          180           29.09088      33.47         16.69         0 \r\n 2022          181           28.728        32.43         18.75         0 \r\n 2022          182           7.43904       25.52         16.81         12.446 \r\n 2022          183           21.28896      28.11         13.47         0 \r\n 2022          184           28.92672      30.36         13.99         0 \r\n 2022          185           18.576        34.46         20.44         0 \r\n 2022          186           26.6544       36.64         21.97         3.556 \r\n 2022          187           13.10688      29.27         20.18         0.254 \r\n 2022          188           12.528        30.08         21.38         3.556 \r\n 2022          189           8.47584       25.56         20.18         1.524 \r\n 2022          190           24.78816      28.88         16.67         0 \r\n 2022          191           27.0432       29.6          15.14         0 \r\n 2022          192           16.78752      30.62         19.74         22.606 \r\n"
  },
  {
    "path": "scripts/yieldfx/baseline/nashua.met",
    "content": "[weather.met.weather]\r\nlatitude = 42.938 (DECIMAL DEGREES)\r\ntav = 8.300427 (oC) ! annual average ambient temperature\r\namp = 30.83341 (oC) ! annual amplitude in mean monthly temperature\r\nyear          day           radn          maxt          mint          rain\r\n()            ()            (MJ/m^2)      (oC)          (oC)          (mm)\r\n 1980          1             4.9           3.2          -2.275         0 \r\n 1980          2             7            -0.375        -5.4           0 \r\n 1980          3             5.5          -3.3          -8.8           0 \r\n 1980          4             4.4          -1.45         -8.55          0 \r\n 1980          5             5.8           1            -6.075         1.4 \r\n 1980          6             1.9           2.25         -4.125         8 \r\n 1980          7             7.5          -6            -15.1          0 \r\n 1980          8             7.8          -12.5         -17.375        0 \r\n 1980          9             8.2          -11.625       -18.175        0 \r\n 1980          10            4.6           5.5          -12.55         0 \r\n 1980          11            8.8           7.1          -11.9          0 \r\n 1980          12            5.4          -4.45         -17.75         0 \r\n 1980          13            7.8           7.8          -3.625         0 \r\n 1980          14            6.1           4.1          -5.075         0 \r\n 1980          15            2.9           7.175         1.475         2.875 \r\n 1980          16            1.4           5.05          1.85          22.101 \r\n 1980          17            5             1.525        -5.875         2 \r\n 1980          18            7.7           1.875        -5.525         0 \r\n 1980          19            3.5          -1.475        -7.9           0 \r\n 1980          20            6.4           0.45         -9.7           0 \r\n 1980          21            5.6           2.875        -7             0 \r\n 1980          22            6.5          -0.75         -11.85         0 \r\n 1980          23            9.5          -11.6         -20.475        0 \r\n 1980          24            2.8           3.55         -13.925        3.075 \r\n 1980          25            9.9           3.075        -9.9           0 \r\n 1980          26            4.2          -10.55        -20.75         0 \r\n 1980          27            8.1          -12.15        -19.175        0 \r\n 1980          28            5.9          -11.25        -15.5          0 \r\n 1980          29            10.8         -11.6         -20.175        0 \r\n 1980          30            3.9          -11.65        -15.675        2 \r\n 1980          31            10.1         -10.2         -18.975        0 \r\n 1980          32            7.1          -7.875        -15.825        0 \r\n 1980          33            8.9          -4.425        -12.3          0 \r\n 1980          34            9.6          -5.35         -13.475        0 \r\n 1980          35            7            -3.4          -15.225        0 \r\n 1980          36            2.7          -3.725        -7.8           8.726 \r\n 1980          37            9.8          -3.85         -14.55         0 \r\n 1980          38            6.2          -6.65         -17.075        0 \r\n 1980          39            4.7          -4.875        -13.1          0 \r\n 1980          40            10.3         -2.475        -13.4          0 \r\n 1980          41            10.4         -2.125        -14.275        0 \r\n 1980          42            10.1         -5.95         -16.075        0 \r\n 1980          43            9.7          -4.075        -14.45         0 \r\n 1980          44            6.8          -0.15         -9.825         0 \r\n 1980          45            8.8          -2.625        -10.975        0 \r\n 1980          46            5.9          -6.85         -12.4          0 \r\n 1980          47            10.1         -9.975        -18.1          0 \r\n 1980          48            10.6         -5.6          -19.55         0 \r\n 1980          49            9.6           0.675        -13.025        0 \r\n 1980          50            8.5           1.9          -3.6           0 \r\n 1980          51            9.6           3.95         -4.1           0.7 \r\n 1980          52            5             3.875        -1.6           4.4 \r\n 1980          53            11.2          5.6          -1.625         0 \r\n 1980          54            12.1          1.1          -6.975         0 \r\n 1980          55            12.1          1.375        -5.725         0 \r\n 1980          56            11.9         -1.875        -13.8          2.4 \r\n 1980          57            12.9          3.9          -16.325        0 \r\n 1980          58            6.5           2.075        -8.675         0.75 \r\n 1980          59            15.3         -3.75         -11.325        3.075 \r\n 1980          60            8.6          -9.775        -21.45         0 \r\n 1980          61            14.7         -8.3          -20.65         0 \r\n 1980          62            14.1         -2.95         -15.375        0 \r\n 1980          63            10.8          4.1          -9.875         0 \r\n 1980          64            2.1          -0.325        -6.75          4.175 \r\n 1980          65            12.1         -6.375        -17.7          0.7 \r\n 1980          66            7            -2.8          -11.8          0 \r\n 1980          67            12.9         -0.45         -9.875         0 \r\n 1980          68            15.2          1.325        -8.625         0 \r\n 1980          69            10            8.35         -7.4           0 \r\n 1980          70            15.9          1.25         -8.05          0 \r\n 1980          71            15.4         -0.15         -15.4          0 \r\n 1980          72            6            -0.5          -7.325         0.9 \r\n 1980          73            6.2          -0.4          -6.4           5.375 \r\n 1980          74            17.6          9.875        -8.25          0 \r\n 1980          75            13.1          14.475       -0.4           0 \r\n 1980          76            2.7           10.525        3             0 \r\n 1980          77            16.5          5.3          -5.3           0 \r\n 1980          78            18.9          14.825       -1.6           0 \r\n 1980          79            13.7          15.075        1.85          0 \r\n 1980          80            5.2           9.6           1.8           0 \r\n 1980          81            20.1          5.825        -4.075         0 \r\n 1980          82            5.4           2.6          -4.525         0 \r\n 1980          83            19.3          8.5          -2.3           0 \r\n 1980          84            17.2          7.4          -3.1           0 \r\n 1980          85            13.1          6.025        -5.225         0 \r\n 1980          86            10.5          7.25         -2.45          0 \r\n 1980          87            12.1          12.15         0.25          1.1 \r\n 1980          88            3.6           7.7           0.325         0.8 \r\n 1980          89            12.2          10.225       -0.25          4 \r\n 1980          90            3.8           6.125        -1.425         0 \r\n 1980          91            23.2          13.45        -2             0 \r\n 1980          92            8.6           11.625        0.4           1.425 \r\n 1980          93            16.2          15.625        0.85          2.2 \r\n 1980          94            2.9           10.025        1.5           17.152 \r\n 1980          95            20.1          11.975       -3.025         0.65 \r\n 1980          96            20.5          17.35         0.15          0 \r\n 1980          97            9.1           17.425        7             1.75 \r\n 1980          98            15.7          19.15         7.65          1.325 \r\n 1980          99            7             13.5          3.9           2.4 \r\n 1980          100           5.7           5.525        -0.725         3.75 \r\n 1980          101           22.3          11.175       -2.75          0 \r\n 1980          102           4.7           8.9          -1.875         0 \r\n 1980          103           23.2          10.925       -3.1           0 \r\n 1980          104           15.9          7.9          -3.5           0 \r\n 1980          105           4.6           6.35         -2.05          0 \r\n 1980          106           24.7          15.4         -0.15          0 \r\n 1980          107           17.1          18            1.975         0 \r\n 1980          108           18            20.025        4.9           0 \r\n 1980          109           24.9          22.475        5.925         0 \r\n 1980          110           22.1          23.975        7.95          0 \r\n 1980          111           17            26.825        10.55         0 \r\n 1980          112           25.4          29.975        10.375        0 \r\n 1980          113           24.5          30.675        12.25         0 \r\n 1980          114           25.1          23.75         7.05          0 \r\n 1980          115           27.5          14.45         0.3           0 \r\n 1980          116           23.1          16.85         2.2           0 \r\n 1980          117           25            17.4          2.775         0 \r\n 1980          118           25.9          20.2          5.575         0 \r\n 1980          119           27.7          20.175        4.125         0 \r\n 1980          120           18.9          20.175        5.85          0 \r\n 1980          121           20.3          22.025        7.55          0 \r\n 1980          122           21.2          24.25         8.125         0 \r\n 1980          123           23.4          26.475        9.375         0 \r\n 1980          124           21.2          27.45         10.325        0 \r\n 1980          125           25.7          30            10.875        0 \r\n 1980          126           23.5          28            13.075        0 \r\n 1980          127           24.7          21.275        8.1           0 \r\n 1980          128           20.7          13.65         0.6           0 \r\n 1980          129           27.9          16.1         -0.95          0 \r\n 1980          130           28.1          21.075        3.05          0 \r\n 1980          131           9.3           22.5          8.45          9.075 \r\n 1980          132           20.8          18.9          1.75          0 \r\n 1980          133           18            21.2          5.45          2.65 \r\n 1980          134           20.6          16.475        5.65          5.375 \r\n 1980          135           17.5          20.45         3.175         1.35 \r\n 1980          136           27.1          22.075        4.725         0 \r\n 1980          137           9.7           17.25         7.675         2.05 \r\n 1980          138           8.7           20.475        7.45          1.65 \r\n 1980          139           6.3           19.025        10.3          1.3 \r\n 1980          140           20.4          23.15         8.7           0 \r\n 1980          141           21.7          23.525        9.15          0 \r\n 1980          142           29.8          27.825        9.9           0 \r\n 1980          143           30.2          29            12.2          0 \r\n 1980          144           23.7          28.35         12.725        0 \r\n 1980          145           10.2          23.975        14.525        0 \r\n 1980          146           25.9          29.525        13.475        0 \r\n 1980          147           14.9          27.3          14.95         0 \r\n 1980          148           9.5           26.375        15.35         2.475 \r\n 1980          149           14.5          29.75         15.775        6.575 \r\n 1980          150           8.1           27.85         17.55         30.476 \r\n 1980          151           16.7          25.325        17.225        32.702 \r\n 1980          152           24.7          27.425        11.1          0 \r\n 1980          153           22.1          27.25         15            3.65 \r\n 1980          154           19.8          26.35         12.175        3.95 \r\n 1980          155           29.4          28            11.6          0 \r\n 1980          156           15.9          27.075        13.475        2.525 \r\n 1980          157           9.6           27.225        15.6          15.101 \r\n 1980          158           10.8          28.575        19.4          8.925 \r\n 1980          159           21            26.875        19.875        1.65 \r\n 1980          160           31.4          22.35         7.35          0 \r\n 1980          161           30            26.9          10.275        0 \r\n 1980          162           31            23.8          10.925        0 \r\n 1980          163           31.1          26.35         8.65          0 \r\n 1980          164           24.5          29.3          11.6          0 \r\n 1980          165           13.5          28.15         17.075        14.126 \r\n 1980          166           16.4          29.3          18.65         24.801 \r\n 1980          167           20.6          25.35         16.15         0 \r\n 1980          168           29.6          23.75         9.1           0 \r\n 1980          169           24.2          26.225        10.7          1.45 \r\n 1980          170           13.5          25.8          14.075        8.125 \r\n 1980          171           28.2          23.275        14.75         0 \r\n 1980          172           28.8          25.55         8.95          0 \r\n 1980          173           27.7          28.65         10.7          0 \r\n 1980          174           18.6          30.15         16.325        0 \r\n 1980          175           25            30.125        17.7          0 \r\n 1980          176           25.9          32.4          16.375        0 \r\n 1980          177           21.5          32.9          18.1          0 \r\n 1980          178           15.1          32.275        21.05         0 \r\n 1980          179           13.4          30.325        21.225        20.801 \r\n 1980          180           30.2          30.2          15.925        23.951 \r\n 1980          181           30.6          25.925        14.575        0 \r\n 1980          182           24.8          30.25         12.2          0 \r\n 1980          183           23.8          30.4          16.425        0 \r\n 1980          184           28.1          27.4          12.975        0 \r\n 1980          185           27.5          30.85         13.4          0 \r\n 1980          186           12.4          27.025        18.2          1.4 \r\n 1980          187           25.5          28.2          20.65         0 \r\n 1980          188           20.1          29.325        15.7          0 \r\n 1980          189           25            37.5          20.675        0 \r\n 1980          190           27.5          32.675        17.55         0 \r\n 1980          191           17.7          29.075        20.975        34.975 \r\n 1980          192           28.2          34.15         18.425        0 \r\n 1980          193           21.7          36.025        20.275        0 \r\n 1980          194           26.4          33.8          23            0 \r\n 1980          195           27.6          37.025        18.15         0 \r\n 1980          196           16            39.1          24.425        10.225 \r\n 1980          197           14.8          34.975        24.375        0 \r\n 1980          198           29            29.25         20.925        3.375 \r\n 1980          199           28.5          33.2          17.7          0 \r\n 1980          200           20            33.05         21.3          4.45 \r\n 1980          201           22            31.75         19.15         1.8 \r\n 1980          202           16.1          28.725        23.75         9.5 \r\n 1980          203           27            29.725        17.625        0 \r\n 1980          204           27.9          26.875        14.95         0 \r\n 1980          205           28.5          29.1          13.55         0 \r\n 1980          206           27.9          32.95         15            0 \r\n 1980          207           13.5          30.425        18.225        2.1 \r\n 1980          208           21.9          26.375        14.7          0 \r\n 1980          209           27.5          29.4          11.875        0 \r\n 1980          210           23            32.825        13.95         0 \r\n 1980          211           27.5          33.95         15.55         0 \r\n 1980          212           23            39.125        19.475        1.075 \r\n 1980          213           27.3          32.75         19.3          0 \r\n 1980          214           27.8          35.875        18.6          0 \r\n 1980          215           20.2          30.525        20.15         16.926 \r\n 1980          216           26.7          32.825        15.45         0 \r\n 1980          217           10.7          30.7          21.175        12.951 \r\n 1980          218           28            32.05         14.45         0 \r\n 1980          219           7.6           29.2          19.975        9.751 \r\n 1980          220           20.6          35.275        21.175        11.801 \r\n 1980          221           8.8           31.525        23.7          14.801 \r\n 1980          222           5.9           26.45         18.1          63.903 \r\n 1980          223           13.3          29.65         17.075        31.277 \r\n 1980          224           21.7          28.675        17.75         3.5 \r\n 1980          225           25.1          30.4          14.65         0 \r\n 1980          226           5.7           29.2          19.15         30.377 \r\n 1980          227           20.6          27.5          15.2          0 \r\n 1980          228           20.5          28.45         14.25         0 \r\n 1980          229           7.5           22.875        13.975        27.876 \r\n 1980          230           17.8          25.425        16.25         3.975 \r\n 1980          231           11.9          26.925        14.175        0 \r\n 1980          232           16.4          30.75         20.6          7.5 \r\n 1980          233           9.7           31.15         20.875        8.2 \r\n 1980          234           23.6          27.2          15.25         5.05 \r\n 1980          235           23.4          29.825        14.05         0 \r\n 1980          236           22.8          29.8          16.225        0 \r\n 1980          237           22.3          33.575        16.2          0 \r\n 1980          238           19.1          35.925        18.95         0 \r\n 1980          239           14.9          32.525        18.075        8.3 \r\n 1980          240           17.6          29.025        15.025        0 \r\n 1980          241           13.6          28.95         17            0 \r\n 1980          242           11.1          29.525        20.05         6.55 \r\n 1980          243           7.3           24.35         18.3          0 \r\n 1980          244           13.9          24.475        14.625        0 \r\n 1980          245           20.6          27.45         15.025        2.125 \r\n 1980          246           24            27.175        12.15         0 \r\n 1980          247           18.6          31.025        16.325        1.8 \r\n 1980          248           23.7          25.875        17.275        15.625 \r\n 1980          249           23            30.575        13.275        0 \r\n 1980          250           16.7          30.175        15.35         2.05 \r\n 1980          251           16.9          33.4          19.35         2.7 \r\n 1980          252           17.8          33.55         19.25         0 \r\n 1980          253           17.4          27.75         13.9          0.8 \r\n 1980          254           22.6          26.625        8.85          0 \r\n 1980          255           11.4          24.975        13.25         6.95 \r\n 1980          256           15.2          31.375        17.35         1.6 \r\n 1980          257           18.3          28            17.575        0.7 \r\n 1980          258           17.9          24.5          12.175        0 \r\n 1980          259           12.1          26.9          10.95         0 \r\n 1980          260           8.5           22            9.675         0 \r\n 1980          261           18.5          17.2          3.95          0 \r\n 1980          262           18.9          23.55         8.425         0 \r\n 1980          263           16.8          30.425        9.975         0 \r\n 1980          264           7.5           26.325        18.025        32.35 \r\n 1980          265           17.1          24.85         11.625        4.35 \r\n 1980          266           10            20.15         12.975        16.375 \r\n 1980          267           18.6          19.85         3.875         0 \r\n 1980          268           10.7          21.825        6.825         0 \r\n 1980          269           15.2          15.8          10.425        0 \r\n 1980          270           17.4          18.6          1.925         0 \r\n 1980          271           16.5          24.775        7.8           0 \r\n 1980          272           11.4          24.9          12.575        2.675 \r\n 1980          273           15.7          25.35         10.15         0 \r\n 1980          274           15.7          27.775        11.975        0 \r\n 1980          275           15.5          21.225        14.325        0 \r\n 1980          276           15.1          15.55         8.125         0 \r\n 1980          277           7.8           10.85         1.75          0 \r\n 1980          278           17.8          14.25         2.6           0 \r\n 1980          279           17.6          17.7          0.525         0 \r\n 1980          280           16.4          24.025        6.775         0 \r\n 1980          281           16.8          26.95         10.075        0 \r\n 1980          282           16.6          26.175        11.275        0 \r\n 1980          283           16.2          24.6          7.6           0 \r\n 1980          284           16.7          20.025        11.175        0 \r\n 1980          285           15.8          15.2          3.225         0 \r\n 1980          286           16.1          13.65        -1.175         0 \r\n 1980          287           8.7           16.45         3.425         0 \r\n 1980          288           14.1          21.125        8.3           0.525 \r\n 1980          289           7.3           15.625        3.7           0 \r\n 1980          290           2.6           20.425        9.65          18.901 \r\n 1980          291           13.7          19.7          6.725         4.075 \r\n 1980          292           13            10.65         2.25          0 \r\n 1980          293           13.2          16.325       -0.95          0 \r\n 1980          294           10.7          17.825        5.125         0 \r\n 1980          295           11.7          15.7          2.85          0 \r\n 1980          296           5.2           14.675        3.85          3.775 \r\n 1980          297           7.3           20.25         5.825         0.6 \r\n 1980          298           2.9           8.55          1.25          26.151 \r\n 1980          299           11.1          4.25         -2.35          0 \r\n 1980          300           11            6.35         -4.3           0 \r\n 1980          301           2.5           3.125        -1.375         0 \r\n 1980          302           12.3          4.875        -4.875         0 \r\n 1980          303           11.6          8.05         -4.05          0 \r\n 1980          304           8.7           13.075       -4             0 \r\n 1980          305           8             16.425        0.4           0 \r\n 1980          306           11.8          12.225       -1.675         0 \r\n 1980          307           10.6          16.175       -1.2           0 \r\n 1980          308           8             17.425        5.625         0 \r\n 1980          309           9.5           13.375        3.2           0 \r\n 1980          310           11.8          13.95        -0.85          0 \r\n 1980          311           7.3           20.275        3.375         0 \r\n 1980          312           8.7           17.575        6.05          0 \r\n 1980          313           5.8           20.975        3.975         0 \r\n 1980          314           10.6          16.175        4.125         0 \r\n 1980          315           10.3          7.8          -4.375         0 \r\n 1980          316           6.6           7.9          -3.5           0 \r\n 1980          317           5.9           14.85         1.175         0 \r\n 1980          318           1             12.575        2.425         8.051 \r\n 1980          319           8.6           5.3          -3.85          0.525 \r\n 1980          320           3.3           4.325        -2.825         0 \r\n 1980          321           8.9           8.5          -3.575         0 \r\n 1980          322           8.8           3.375        -4.325         0 \r\n 1980          323           9.6           4.575        -6.25          0 \r\n 1980          324           8             9.475        -2.9           0 \r\n 1980          325           9             8.55         -1.325         0 \r\n 1980          326           7.4           8.9          -4.4           0 \r\n 1980          327           9.1           11.8         -0.9           0 \r\n 1980          328           6.2           7.45         -0.75          0 \r\n 1980          329           9             2.5          -6.4           0 \r\n 1980          330           5.7           4.075        -6.05          0 \r\n 1980          331           8.4           6.3          -4.7           0 \r\n 1980          332           1.9           2.1          -2.9           0 \r\n 1980          333           4.1           2.925        -5.4           0.6 \r\n 1980          334           7.9           6.65         -1.525         0 \r\n 1980          335           7.4           9.9          -0.9           0 \r\n 1980          336           5.5           4.3          -4.725         1.125 \r\n 1980          337           9.6          -4.1          -11.925        6.6 \r\n 1980          338           6.6           1.025        -11.725        0 \r\n 1980          339           7             5.225        -4.7           0 \r\n 1980          340           0.8           6.55          0.65          0 \r\n 1980          341           3.3           5.275         1.125         0 \r\n 1980          342           3.6           2.8          -2.9           0.925 \r\n 1980          343           7.5           0.4          -7.275         0 \r\n 1980          344           5.2           0.8          -12.375        0 \r\n 1980          345           6.7          -2.35         -15.025        0 \r\n 1980          346           7.8          -3.2          -13.45         0 \r\n 1980          347           7.2           8.425        -8.025         0 \r\n 1980          348           8.3           5.05         -11.925        0 \r\n 1980          349           3.4          -1.5          -5.625         0 \r\n 1980          350           4             0.3          -7.125         0 \r\n 1980          351           7.4           3.075        -5.325         0 \r\n 1980          352           4.4           7.075        -5.575         0 \r\n 1980          353           4.9           4.25         -6.675         0 \r\n 1980          354           8.5          -6.875        -18.775        0 \r\n 1980          355           7.8          -9.3          -18.525        0 \r\n 1980          356           5.2          -4.85         -14.575        0 \r\n 1980          357           2.1          -0.775        -8.2           0 \r\n 1980          358           2.8           0.475        -6.525         1.025 \r\n 1980          359           7.5          -4.025        -16.275        0 \r\n 1980          360           4            -9.175        -18.95         0 \r\n 1980          361           6.9          -4.55         -11.975        0 \r\n 1980          362           5.1          -1.3          -10.9          0 \r\n 1980          363           3.3           3.225        -4             1.25 \r\n 1980          364           7.4           3            -3.175         0 \r\n 1980          365           2.5           4.825        -3.775         0 \r\n 1980          366           7.1           3.75         -2.675         0 \r\n 1981          1             7.3           0.525        -6.275         1.175 \r\n 1981          2             6.6          -1.85         -12.05         0 \r\n 1981          3             7.9          -3.925        -19.925        0 \r\n 1981          4             8.2          -10.325       -19.025        0 \r\n 1981          5             3            -1.875        -16.825        0 \r\n 1981          6             5.1           1.075        -10.25         0 \r\n 1981          7             6.5          -7.7          -19.375        0 \r\n 1981          8             7.9          -4.35         -14.275        0 \r\n 1981          9             6.2          -6.05         -14.25         0.8 \r\n 1981          10            4.5          -8.375        -19.3          3.5 \r\n 1981          11            8.7          -7.55         -20.475        0 \r\n 1981          12            4.4           4.175        -13.55         0 \r\n 1981          13            5.8           1.5          -9.95          0 \r\n 1981          14            5.8           0.825        -9.625         0 \r\n 1981          15            7.6          -2.55         -13.6          0 \r\n 1981          16            8.2          -7.575        -17.575        0 \r\n 1981          17            8.6           3            -15.45         0 \r\n 1981          18            9.2           7.4          -8.375         0 \r\n 1981          19            7.5           8.05         -4.85          0 \r\n 1981          20            8.7           4.8          -6.175         0 \r\n 1981          21            9.1           4.05         -10.65         0 \r\n 1981          22            8.9           7.8          -6.725         0 \r\n 1981          23            8.6           9.8          -4.2           0 \r\n 1981          24            9.3           13.05        -0.35          0 \r\n 1981          25            8.1           12.425        1.275         0 \r\n 1981          26            8.7           7.425        -1.275         0 \r\n 1981          27            8.7           2.85         -5.8           0 \r\n 1981          28            10.4         -1.875        -8.8           0 \r\n 1981          29            11.3         -0.925        -15.25         0 \r\n 1981          30            11.2          1.95         -13.775        0 \r\n 1981          31            4.5           1.725        -8.275         0 \r\n 1981          32            7.1          -1.45         -12.325        3.4 \r\n 1981          33            6.6          -12.3         -18.75         0 \r\n 1981          34            5.5          -9.8          -17.4          0 \r\n 1981          35            9.9          -9.5          -16.875        0 \r\n 1981          36            4            -0.65         -14.675        1.45 \r\n 1981          37            9.4           0.3          -9.975         0 \r\n 1981          38            8.7          -0.475        -7.675         0 \r\n 1981          39            8.8          -7.65         -16.575        0 \r\n 1981          40            9.4          -8.25         -14.9          0 \r\n 1981          41            3.7          -11.55        -19.95         5.725 \r\n 1981          42            12.8         -16.675       -31.975        0 \r\n 1981          43            11.4         -3.4          -21.9          0 \r\n 1981          44            9.3           1.6          -16.5          0 \r\n 1981          45            11.1          5.3          -7.625         0 \r\n 1981          46            9.6           10.15        -0.75          0 \r\n 1981          47            11.9          15.15         0.65          0.4 \r\n 1981          48            10.8          18            1.65          0 \r\n 1981          49            11.4          18.25         3.975         0 \r\n 1981          50            11.2          16.5          3.225         0 \r\n 1981          51            13.9          17.1          1             0 \r\n 1981          52            2.3           9.675         1.525         2.05 \r\n 1981          53            4.7           6.75          1.075         20.052 \r\n 1981          54            13.4          3.75         -2.3           6.501 \r\n 1981          55            15            13.15        -3.2           0 \r\n 1981          56            15.2          10.05        -3             0 \r\n 1981          57            14.1          9.45         -3.425         0 \r\n 1981          58            5             16.1          0.65          6.301 \r\n 1981          59            13.3          7.8          -0.9           0 \r\n 1981          60            13.4          10           -5.4           0 \r\n 1981          61            14.4          3            -7.6           0 \r\n 1981          62            6.7           4.85         -5.65          0 \r\n 1981          63            5.7           4.9          -1.875         0 \r\n 1981          64            15.4          4.7          -6.725         0 \r\n 1981          65            15.7          1.375        -6.55          0 \r\n 1981          66            15.7          4.375        -8.925         0 \r\n 1981          67            14.6          7.4          -4.75          0 \r\n 1981          68            7             7.425        -0.9           0 \r\n 1981          69            15.1          10.125       -3.425         0 \r\n 1981          70            16.9          9.525        -5.25          0 \r\n 1981          71            16.9          13.975       -1.65          0 \r\n 1981          72            17.7          7.6          -3.55          0 \r\n 1981          73            18.3          12.55        -4             0 \r\n 1981          74            16.4          15.4          2.025         0 \r\n 1981          75            18.9          10.85        -6.8           0 \r\n 1981          76            17.3          6.775        -2.025         0 \r\n 1981          77            18.3          4.275        -6.55          0 \r\n 1981          78            18.4          5.85         -5.15          0 \r\n 1981          79            20.1          9.3          -5.425         0 \r\n 1981          80            8.2           8.775        -2.4           0 \r\n 1981          81            19.9          13.9         -2.075         0 \r\n 1981          82            16.6          16.55        -0.425         0 \r\n 1981          83            20.6          18.15         0.175         0 \r\n 1981          84            10.9          15.55         1.725         2 \r\n 1981          85            18.6          15.625        1.075         0 \r\n 1981          86            21.4          17.45        -0.675         0 \r\n 1981          87            14.7          23.2          8.6           0 \r\n 1981          88            12            18.825        11.025        9.35 \r\n 1981          89            14.9          17.45         3.475         0.4 \r\n 1981          90            19.3          21.775        6.9           0 \r\n 1981          91            19.5          16            5.7           0 \r\n 1981          92            19.5          24.325        5.375         0 \r\n 1981          93            5.1           20.825        11.65         21.877 \r\n 1981          94            14.5          16.675        2.25          16.902 \r\n 1981          95            20.9          9.9          -2.9           0 \r\n 1981          96            22            15.525       -1.95          0 \r\n 1981          97            18.2          21.525        5.275         3.95 \r\n 1981          98            12.6          17.575        7.725         7.551 \r\n 1981          99            22.7          18.925        3.15          0 \r\n 1981          100           7.3           22.05         6.825         5.701 \r\n 1981          101           9             18.025        8.75          10.676 \r\n 1981          102           19.4          22.65         7.725         0 \r\n 1981          103           8.4           22.875        10.775        4.751 \r\n 1981          104           25.7          16.175       -0.925         0 \r\n 1981          105           25.9          15.425       -1.475         0 \r\n 1981          106           4.5           17.475        4.6           6.076 \r\n 1981          107           18.6          22.95         9             0 \r\n 1981          108           24.6          20.4          2.45          0 \r\n 1981          109           13.1          19.8          9.45          7.626 \r\n 1981          110           26.5          13.375        1.45          0 \r\n 1981          111           17.7          15.2          0             4.376 \r\n 1981          112           2.2           16.9          9.85          9.426 \r\n 1981          113           16.1          12.925        5.9           0 \r\n 1981          114           27.7          17.05         2.2           0 \r\n 1981          115           23.1          23.475        5.25          0 \r\n 1981          116           26            26.25         9.725         0 \r\n 1981          117           15.2          27.625        12.35         13.827 \r\n 1981          118           7.6           22.3          13.075        8.201 \r\n 1981          119           14.8          21.25         7.5           4.125 \r\n 1981          120           15.2          16.7          9.425         0 \r\n 1981          121           22.4          16.975        3.9           0 \r\n 1981          122           25.2          21.575        4.625         0 \r\n 1981          123           14.1          25.425        11.75         6.675 \r\n 1981          124           4.9           20.325        16            9.425 \r\n 1981          125           23.3          19.75         9.975         0 \r\n 1981          126           28            17.6          3.05          0 \r\n 1981          127           23.5          17.725        3.15          0 \r\n 1981          128           15.6          19.375        5.55          0 \r\n 1981          129           12.3          18.7          7.4           0 \r\n 1981          130           19.2          13.25         0.45          0 \r\n 1981          131           29.7          18           -1.25          0 \r\n 1981          132           12.8          17.45         2.775         3.35 \r\n 1981          133           15.2          17.2          5.775         1.65 \r\n 1981          134           23.4          21.05         7.3           0 \r\n 1981          135           29.4          24.55         6.9           0 \r\n 1981          136           14.5          23.2          9.775         0 \r\n 1981          137           11            18.525        9.675         0 \r\n 1981          138           9.4           14.5          5.325         0 \r\n 1981          139           29.8          21.95         4.6           0 \r\n 1981          140           31.1          25.7          7.65          0 \r\n 1981          141           28.8          25.1          9.05          0 \r\n 1981          142           23.1          27.3          12.1          3.8 \r\n 1981          143           5.6           21.825        15.9          20.876 \r\n 1981          144           22            21.85         10.75         5.625 \r\n 1981          145           27.9          24.225        9.825         0 \r\n 1981          146           25.5          24.55         11.125        0 \r\n 1981          147           23.1          26.575        13.7          1.95 \r\n 1981          148           12.2          27.15         13.95         8.95 \r\n 1981          149           26            28.6          13.8          0 \r\n 1981          150           26.8          24.175        12.05         0 \r\n 1981          151           31            27.8          9.225         0 \r\n 1981          152           29.7          27.45         11.2          0 \r\n 1981          153           8.8           23.625        15.6          10.475 \r\n 1981          154           28.6          26.25         10.8          0 \r\n 1981          155           25.7          29.275        11.9          0 \r\n 1981          156           28.5          32.125        15.675        0 \r\n 1981          157           31.2          28.975        13            0 \r\n 1981          158           17.1          31.05         14.9          0 \r\n 1981          159           21.7          30.5          15.075        7.75 \r\n 1981          160           26.2          30.7          14.35         4.525 \r\n 1981          161           30            28.125        14.3          0 \r\n 1981          162           14.8          26.35         14.075        0 \r\n 1981          163           15            26.475        15.775        5.6 \r\n 1981          164           15.8          28.45         19.475        30.776 \r\n 1981          165           9.7           26.225        21.05         11.175 \r\n 1981          166           7.3           23.15         13.175        11.875 \r\n 1981          167           28.8          23.525        10.875        0 \r\n 1981          168           29.2          27.175        12.5          0 \r\n 1981          169           27.6          26.075        14.4          0 \r\n 1981          170           22.4          26.75         11.075        0 \r\n 1981          171           26.4          27.975        14.525        11.875 \r\n 1981          172           10.9          21.45         13.325        6.875 \r\n 1981          173           29.2          23.75         10.7          4.375 \r\n 1981          174           28.9          28.925        10.45         0 \r\n 1981          175           19.7          28.225        20.675        49.952 \r\n 1981          176           31.3          26.875        13.55         0 \r\n 1981          177           30.9          27.875        12.3          0 \r\n 1981          178           24.3          30.225        13.6          0 \r\n 1981          179           23.1          33.775        19.325        3.525 \r\n 1981          180           9.9           30.75         21.55         6.45 \r\n 1981          181           29.9          28.625        15.075        0 \r\n 1981          182           30.4          29.475        13.5          0 \r\n 1981          183           27.2          30.325        17.425        0 \r\n 1981          184           22.1          29.5          19.05         0 \r\n 1981          185           26.4          31.375        19.725        0 \r\n 1981          186           29.4          31.2          17.4          0 \r\n 1981          187           30.3          33.95         16.65         0 \r\n 1981          188           29.7          34.025        18.3          0 \r\n 1981          189           27.1          34.125        21.825        0 \r\n 1981          190           29.4          31.275        18.45         0 \r\n 1981          191           27.4          34.3          16.675        0 \r\n 1981          192           12.2          30.2          22.175        17.575 \r\n 1981          193           17            33.05         22.125        0 \r\n 1981          194           7.7           29.525        23.6          1.3 \r\n 1981          195           13.2          27.425        20.25         25.65 \r\n 1981          196           13.7          26.75         20.825        10.6 \r\n 1981          197           27.9          29.5          17.325        0 \r\n 1981          198           18.2          30.175        19.05         0 \r\n 1981          199           13.9          27.6          19.7          8.45 \r\n 1981          200           24.5          30.85         19.05         2.25 \r\n 1981          201           17.1          26.7          19.8          14.45 \r\n 1981          202           25            28.7          15.1          0 \r\n 1981          203           25.5          30.375        14.85         1.7 \r\n 1981          204           14.6          25.05         16.975        11.3 \r\n 1981          205           18.2          29.05         15.575        2.55 \r\n 1981          206           14.4          26.8          18.75         2.95 \r\n 1981          207           17            25.05         14.325        6.15 \r\n 1981          208           14.2          21.6          13.475        5.05 \r\n 1981          209           23.9          20.3          11.075        5.25 \r\n 1981          210           27.3          24            9.925         0 \r\n 1981          211           22.4          27.55         13.95         0 \r\n 1981          212           19.9          29.05         15.575        5.85 \r\n 1981          213           8.2           26.65         17.95         10.151 \r\n 1981          214           16.2          27.325        19.575        15.501 \r\n 1981          215           17.8          28.65         16.6          0 \r\n 1981          216           15.8          29.15         18.25         4.8 \r\n 1981          217           12.9          29.35         19.75         9.325 \r\n 1981          218           24.1          30.125        18.6          0 \r\n 1981          219           17.3          25.7          16.5          4.9 \r\n 1981          220           25.7          29            13            0 \r\n 1981          221           24            27.5          15.375        0 \r\n 1981          222           25.8          27.25         14.4          0 \r\n 1981          223           21.7          29.825        13.425        0 \r\n 1981          224           24            33.45         16.075        0 \r\n 1981          225           12.2          29.025        16.975        0 \r\n 1981          226           7.3           26.65         18.875        19.676 \r\n 1981          227           23.4          26.175        18.35         0 \r\n 1981          228           25            23.65         11.55         0 \r\n 1981          229           26.1          24.35         8.975         0 \r\n 1981          230           25.2          26.375        9.95          0 \r\n 1981          231           24.9          27.35         10.475        0 \r\n 1981          232           23.7          28.725        11.725        0 \r\n 1981          233           16.6          28.025        12.675        0 \r\n 1981          234           20.5          29.75         13.45         0 \r\n 1981          235           12.6          29.225        14.9          0 \r\n 1981          236           20.1          30.375        15.65         3.45 \r\n 1981          237           7.4           28.35         15            0 \r\n 1981          238           8             23.45         16.975        18.876 \r\n 1981          239           6.5           21.925        15.825        7.4 \r\n 1981          240           12.6          23.4          15.6          12.001 \r\n 1981          241           17.2          24.9          16.2          2.75 \r\n 1981          242           8.9           25.8          14.85         9.951 \r\n 1981          243           5.9           25.525        19.15         10.551 \r\n 1981          244           21.3          22.9          10.475        0 \r\n 1981          245           24.7          24.925        8.625         0 \r\n 1981          246           23.8          26.975        10.15         0 \r\n 1981          247           22.7          27.05         12.35         0 \r\n 1981          248           23.2          27.325        11.6          0 \r\n 1981          249           22.2          28.625        11.95         0 \r\n 1981          250           14.7          22.95         15.3          13.775 \r\n 1981          251           22.6          24.75         9.95          0 \r\n 1981          252           20.5          28.475        11.6          0 \r\n 1981          253           21.8          32            13.65         0 \r\n 1981          254           17.2          30.275        15.55         0 \r\n 1981          255           21.7          29.45         11.75         0 \r\n 1981          256           21.1          30.35         12.9          0 \r\n 1981          257           20.8          26.85         13.975        0 \r\n 1981          258           15.1          21.675        10.8          0 \r\n 1981          259           11.2          15.25         5             0 \r\n 1981          260           19.9          17.825        2.675         0 \r\n 1981          261           19.6          22.4          4.575         0 \r\n 1981          262           19.4          27.475        7.05          0 \r\n 1981          263           18.8          27.975        8.9           0 \r\n 1981          264           15            23.2          12.9          0 \r\n 1981          265           17.5          19.825        6.05          0 \r\n 1981          266           14.4          22.025        5.125         0.9 \r\n 1981          267           5.7           24.225        11.675        13.075 \r\n 1981          268           4.8           21.15         13.85         25.875 \r\n 1981          269           10.6          21.75         15.525        9.6 \r\n 1981          270           17.5          17.625        7.025         0 \r\n 1981          271           16.5          18.45         1.85          0 \r\n 1981          272           7             24.525        9.55          0.6 \r\n 1981          273           8.7           26.175        14.9          1.15 \r\n 1981          274           17.7          16.95         8.325         0 \r\n 1981          275           18.9          15.65        -0.675         0 \r\n 1981          276           6.6           15.075        3.55          6.175 \r\n 1981          277           9.1           20.2          9.175         6.2 \r\n 1981          278           8.6           20.65         7.875         0 \r\n 1981          279           16.7          16.25         7.3           0 \r\n 1981          280           17.3          18.1          1.725         0 \r\n 1981          281           15.3          18.35         3.675         0 \r\n 1981          282           6             17.425        5.15          0 \r\n 1981          283           15.3          19.65         8.025         0.7 \r\n 1981          284           15.7          20.325        5.25          0 \r\n 1981          285           14.4          21.475        7.65          0 \r\n 1981          286           4.2           20.375        11.625        1.85 \r\n 1981          287           3.5           19.125        13.75         12.601 \r\n 1981          288           14.7          17.925        6.175         1.4 \r\n 1981          289           14.3          20.25         4.975         0 \r\n 1981          290           1.9           17.45         9.15          15.326 \r\n 1981          291           11.7          10.875        3.5           0 \r\n 1981          292           14            17.1         -3.225         0 \r\n 1981          293           8.8           15.85         5.275         0 \r\n 1981          294           10.9          11.45         1.625         0 \r\n 1981          295           9.1           7.75         -3.525         0 \r\n 1981          296           9.7           2.95         -5.85          0 \r\n 1981          297           2.1           2.025        -3.6           1.75 \r\n 1981          298           6.8           7.475        -1.875         0 \r\n 1981          299           12.5          9.325        -3.475         0 \r\n 1981          300           10.9          16.75        -0.1           0 \r\n 1981          301           8.4           18.725        5.325         0 \r\n 1981          302           10.4          18.775        4.3           0 \r\n 1981          303           9.5           20.425        8.5           0 \r\n 1981          304           2.9           16.875        11.4          3.775 \r\n 1981          305           6.9           17.65         6.825         0 \r\n 1981          306           6             18.65         8.925         0 \r\n 1981          307           8.3           20.025        10.425        1.15 \r\n 1981          308           6.5           18.45         12.2          5.425 \r\n 1981          309           7             14.2          6.675         0.75 \r\n 1981          310           11.5          14.625        0.55          0 \r\n 1981          311           11.1          17.15         2.625         0 \r\n 1981          312           10.8          10.15         2.575         0 \r\n 1981          313           11.5          6.05         -5.725         0 \r\n 1981          314           10.4          11.9         -2.675         0 \r\n 1981          315           10.5          10.9         -2.15          0 \r\n 1981          316           10.3          12.425       -1.35          0 \r\n 1981          317           10.1          15.3          0.575         0 \r\n 1981          318           8.7           16.75         2.775         0 \r\n 1981          319           1.2           11.625        7.225         2.125 \r\n 1981          320           9.2           14.35         1.75          0 \r\n 1981          321           9.2           13.65         0.775         0 \r\n 1981          322           6.8           12.9          0.95          0 \r\n 1981          323           5.3           8.2          -2.1           4.825 \r\n 1981          324           8.1          -1.65         -8.05          0 \r\n 1981          325           7.2           0.125        -8.9           0 \r\n 1981          326           8.8           4.175        -7.675         0 \r\n 1981          327           2             2.65         -1.625         9.001 \r\n 1981          328           7.5           4.1          -3.85          0 \r\n 1981          329           2.7           3.2          -1.725         0 \r\n 1981          330           2.7           3.25          0.525         0 \r\n 1981          331           8.4           2.2          -5.175         0 \r\n 1981          332           5.1           2.325        -6.1           0 \r\n 1981          333           8.2           5.05         -4.425         0 \r\n 1981          334           2.2           2.025        -2.85          11.076 \r\n 1981          335           3.4           0.85         -1.975         10.175 \r\n 1981          336           7.2          -1.625        -14.625        0 \r\n 1981          337           3.4           2.7          -10.775        1.925 \r\n 1981          338           6.2           2.525        -8.5           0 \r\n 1981          339           5.3          -1.125        -13.725        0 \r\n 1981          340           7.7           2.5          -2.875         0 \r\n 1981          341           7.1           2.675        -2.675         0 \r\n 1981          342           8.5           0.4          -6.5           0 \r\n 1981          343           7.6          -2.525        -9.425         0 \r\n 1981          344           4.8          -3.15         -9.7           0 \r\n 1981          345           7.9           1.425        -5.15          0 \r\n 1981          346           5.9           3.175        -5.075         0 \r\n 1981          347           2.3           1.9          -4.4           0 \r\n 1981          348           7.8           0.575        -10.625        4.4 \r\n 1981          349           5.1          -7.15         -12.575        0 \r\n 1981          350           3.4          -9.6          -14.55         0 \r\n 1981          351           6.5          -10.85        -16.625        0 \r\n 1981          352           7            -11.275       -17.925        0 \r\n 1981          353           8.3          -7.75         -16.1          0 \r\n 1981          354           3            -1.825        -14.75         1.875 \r\n 1981          355           3.4           1.475        -3.55          3.375 \r\n 1981          356           4.8           0.525        -6.9           0 \r\n 1981          357           8.1           0            -14.825        0 \r\n 1981          358           8            -0.675        -11.825        0 \r\n 1981          359           5            -2.85         -13.025        0 \r\n 1981          360           3.9           0.85         -5.075         2.975 \r\n 1981          361           7.5          -1.525        -12.85         0 \r\n 1981          362           6.6          -6.15         -13.075        0 \r\n 1981          363           6.9          -4.975        -17.625        0 \r\n 1981          364           2.9          -1.15         -15.875        0 \r\n 1981          365           2.6           0.225        -12.2          2.575 \r\n 1982          1             7.4          -12.525       -26.15         0 \r\n 1982          2             2.6          -1.05         -13.425        7.8 \r\n 1982          3             2.7          -2.7          -17.175        0 \r\n 1982          4             5.5          -8            -12.675        2.1 \r\n 1982          5             5.4          -3.125        -15.675        0 \r\n 1982          6             4.9          -9.85         -16.4          0 \r\n 1982          7             8.1          -17.475       -28.525        0 \r\n 1982          8             3.8          -8.85         -19.475        0 \r\n 1982          9             7.6          -16.75        -29.25         0 \r\n 1982          10            8.5          -23.475       -35.3          0 \r\n 1982          11            7.5          -15.9         -21.375        0 \r\n 1982          12            2.2          -12.575       -20.3          0 \r\n 1982          13            5.2          -9.425        -13.475        0 \r\n 1982          14            7.4          -14.325       -25.675        0 \r\n 1982          15            4.3          -5.875        -20.1          1.225 \r\n 1982          16            9.7          -17.175       -29.45         0 \r\n 1982          17            5.5          -10.45        -31.825        2.675 \r\n 1982          18            7.6          -6.9          -16.575        0 \r\n 1982          19            5.7          -3.375        -11            0 \r\n 1982          20            6.7          -6.625        -15.55         0.575 \r\n 1982          21            7.8          -7.625        -18.175        0 \r\n 1982          22            5.5          -3.575        -12.55         18.451 \r\n 1982          23            7.1           2.025        -13.775        2.725 \r\n 1982          24            8.1          -16.1         -26.55         0 \r\n 1982          25            8.8          -14.4         -19.7          2 \r\n 1982          26            8.6          -8.975        -24.25         0 \r\n 1982          27            7.1           2.475        -8.2           0 \r\n 1982          28            11.1          2.95         -12.75         0 \r\n 1982          29            3.1           0.45         -14.175        2.075 \r\n 1982          30            8.2          -2.5          -11.05         0 \r\n 1982          31            11.2         -11.725       -18.525        0 \r\n 1982          32            6.6          -7.6          -23.7          0 \r\n 1982          33            4.1          -3.825        -9.825         0.95 \r\n 1982          34            9.1          -9.9          -23.4          0 \r\n 1982          35            3.9          -14.8         -29.3          0 \r\n 1982          36            3.7          -16.175       -18.85         1.075 \r\n 1982          37            10.9         -9.35         -26.45         0 \r\n 1982          38            10            0.3          -14            0 \r\n 1982          39            7.2          -7.475        -17.475        0 \r\n 1982          40            10.2         -11.475       -24.875        0 \r\n 1982          41            8.2          -8.95         -24.075        0 \r\n 1982          42            12           -2.6          -17.85         0 \r\n 1982          43            11.6         -4.75         -15.925        0 \r\n 1982          44            7.5           0.7          -11.65         0 \r\n 1982          45            4.5           2.575        -5.575         0 \r\n 1982          46            4.5           2.25         -0.025         0 \r\n 1982          47            5.2           2.35          0.5           1.4 \r\n 1982          48            7.2           1.35         -6.275         0.95 \r\n 1982          49            8             1.775        -0.125         2.35 \r\n 1982          50            7.8           1.95         -1.875         0.7 \r\n 1982          51            11.9          4.1           1.8           0 \r\n 1982          52            14.3          2.3          -4.925         0 \r\n 1982          53            14.3          8.875        -4.125         0 \r\n 1982          54            10.1          8.425        -0.825         0 \r\n 1982          55            11.9         -1.425        -9.425         0.65 \r\n 1982          56            15.4         -0.5          -11.55         0 \r\n 1982          57            15.9          3.35         -11.35         0 \r\n 1982          58            15.2          4.75         -6.275         0 \r\n 1982          59            10            8.7          -4.75          0 \r\n 1982          60            9.7           3.65         -4.975         0 \r\n 1982          61            1.6          -1.55         -5.625         2.8 \r\n 1982          62            8.9          -5.625        -12.125        0 \r\n 1982          63            5.3          -5.4          -9.175         4.45 \r\n 1982          64            14.1         -5.15         -11.925        0 \r\n 1982          65            13.5         -1.725        -17            0 \r\n 1982          66            16.5         -8.75         -19.675        0 \r\n 1982          67            10.9         -1.55         -10.7          2.9 \r\n 1982          68            7.6          -7.425        -21.1          0 \r\n 1982          69            12.5          7.975        -9.225         0 \r\n 1982          70            16.8          5.025        -3.75          0 \r\n 1982          71            2.4           11.6         -0.75          2.85 \r\n 1982          72            17.6          10.425        0.475         0 \r\n 1982          73            7.8           10.55         1.25          0 \r\n 1982          74            6.1           7.3           0.625         2 \r\n 1982          75            13.5          6.975         1.525         14.625 \r\n 1982          76            16.5          9.6          -1.4           0 \r\n 1982          77            15.2          14.775        2.15          0 \r\n 1982          78            5.1           6.8           0.85          16.2 \r\n 1982          79            12            9.75         -0.925         0 \r\n 1982          80            16            6.15         -2.125         0 \r\n 1982          81            19.6          9.775        -3.3           0 \r\n 1982          82            13.5          11.6          0.125         0 \r\n 1982          83            10.9          8.05         -1.725         2 \r\n 1982          84            11.9          2.8          -2.525         0 \r\n 1982          85            21.2          3.525        -5.175         0 \r\n 1982          86            23.2          4.4          -6.375         0 \r\n 1982          87            22.4          9.25         -3.4           0 \r\n 1982          88            16.8          12.525       -0.4           0 \r\n 1982          89            14.8          15.4          8.05          4.2 \r\n 1982          90            23.7          14.725        3.25          0 \r\n 1982          91            16.9          15.8         -1.3           0 \r\n 1982          92            4.7           20.6          7.3           4.951 \r\n 1982          93            17.6          16.3         -8.9           2.7 \r\n 1982          94            19.3          2.85         -10.45         0 \r\n 1982          95            4.6          -2.375        -5.675         6.926 \r\n 1982          96            23.1          0.4          -11.075        0 \r\n 1982          97            6.8           0.55         -6.025         2.35 \r\n 1982          98            4.8          -0.1          -4.55          4.525 \r\n 1982          99            17.8          4.5          -4.875         0 \r\n 1982          100           16            4.45         -1.975         0 \r\n 1982          101           23.7          10.7         -3.25          0 \r\n 1982          102           9.1           18.5          1.025         0 \r\n 1982          103           20.9          15.125        1.55          1.325 \r\n 1982          104           19.7          19.55         2.65          2.25 \r\n 1982          105           15.3          22.65         6.8           5.276 \r\n 1982          106           6.2           21.75         14.1          21.877 \r\n 1982          107           18.2          15.125        2.6           7.026 \r\n 1982          108           22.4          17.6          2.625         4.025 \r\n 1982          109           7.9           16.65         6.025         4.275 \r\n 1982          110           25.6          10.9         -1.35          0 \r\n 1982          111           16.3          12.525       -2.3           0 \r\n 1982          112           26.5          16.3          0.1           0 \r\n 1982          113           27.2          19.375        3.5           0 \r\n 1982          114           26.7          21.175        5.05          0 \r\n 1982          115           4.1           15.725        8.7           0 \r\n 1982          116           25.4          17            5.775         0 \r\n 1982          117           27.9          16.375        1.35          0 \r\n 1982          118           4.2           10.825        3.125         0 \r\n 1982          119           25.6          16.925        3.875         0 \r\n 1982          120           21.2          19.575        5.525         0 \r\n 1982          121           23            22.55         9.85          0 \r\n 1982          122           25.2          24.225        8.55          0 \r\n 1982          123           22.4          25.425        10.75         0 \r\n 1982          124           12.7          25.65         13.975        9.801 \r\n 1982          125           4.7           22            13.975        26.126 \r\n 1982          126           7.9           14.425        8.25          15.051 \r\n 1982          127           24            19.675        4.525         0 \r\n 1982          128           19.1          22.9          8.4           0 \r\n 1982          129           14.2          24.875        12.375        0 \r\n 1982          130           23.5          26.4          13.025        0 \r\n 1982          131           8.9           24.075        15.2          13.951 \r\n 1982          132           5.8           23.575        15            9.425 \r\n 1982          133           5.9           21.25         16.675        4.075 \r\n 1982          134           4.3           22.025        14.65         2.85 \r\n 1982          135           8.1           20.7          14.275        6.375 \r\n 1982          136           10.4          23.225        13.225        6.325 \r\n 1982          137           7.7           23.825        15.575        5.425 \r\n 1982          138           18.7          23.9          13            4.725 \r\n 1982          139           18.4          24.2          13.575        6.75 \r\n 1982          140           17.3          24.075        13            0 \r\n 1982          141           5.6           19.675        9.75          40.202 \r\n 1982          142           10.4          19.525        12.575        2.95 \r\n 1982          143           19.2          22.3          11.925        0 \r\n 1982          144           13.3          22.3          12.75         0 \r\n 1982          145           21.5          24.275        13.3          0 \r\n 1982          146           8.7           21.725        14.85         13.576 \r\n 1982          147           19.9          24.825        14.025        8.425 \r\n 1982          148           21.5          25.55         12.2          0 \r\n 1982          149           15.8          25.15         16.425        5.125 \r\n 1982          150           16.3          26.325        15.125        0 \r\n 1982          151           12            20.875        13.05         0 \r\n 1982          152           30.4          22.625        5.475         0 \r\n 1982          153           18.6          20.075        7.55          0 \r\n 1982          154           25.4          20.175        7.9           0 \r\n 1982          155           30.4          22.475        6.65          1.55 \r\n 1982          156           30.2          23.6          7.55          2.25 \r\n 1982          157           20.8          26.475        12.325        11.875 \r\n 1982          158           29.6          25.925        14.1          17.851 \r\n 1982          159           24.6          26.2          10.725        0 \r\n 1982          160           16            24.55         15.95         3.35 \r\n 1982          161           29.8          23.9          7.275         0 \r\n 1982          162           15.1          23.35         10.3          0 \r\n 1982          163           21.1          23.875        11.825        0 \r\n 1982          164           31.1          25.35         9.2           0 \r\n 1982          165           8.6           22.375        12.675        19.501 \r\n 1982          166           16            22.375        15.1          16.351 \r\n 1982          167           30.8          24.9          8.525         0 \r\n 1982          168           9.5           23.7          12.125        2.05 \r\n 1982          169           15.5          21.225        13.3          0 \r\n 1982          170           27.9          22.425        9.25          0 \r\n 1982          171           27.5          22.425        12.05         0 \r\n 1982          172           25.5          23.575        9.95          0 \r\n 1982          173           30.4          24.075        9.35          0 \r\n 1982          174           29.4          26.525        11.6          0 \r\n 1982          175           18.6          27.4          13.55         7.075 \r\n 1982          176           9.9           24.45         17.4          17.851 \r\n 1982          177           19.4          26.1          15.975        1.475 \r\n 1982          178           24            28.3          17.425        0 \r\n 1982          179           21.8          28.05         17.7          0 \r\n 1982          180           25.5          26.7          18.25         0 \r\n 1982          181           20            23.45         12.025        0 \r\n 1982          182           14.5          24.95         14.725        0 \r\n 1982          183           11.8          26.85         13.95         0 \r\n 1982          184           22.1          30.7          19.85         0 \r\n 1982          185           22.4          32.525        19.35         0 \r\n 1982          186           14.2          30.975        22.025        2.7 \r\n 1982          187           10.1          28.75         21.675        22.775 \r\n 1982          188           29            28.65         15.45         3.5 \r\n 1982          189           28.2          28.8          14.525        0 \r\n 1982          190           20.2          29.85         17.075        10.825 \r\n 1982          191           8.8           26.625        19.25         8.675 \r\n 1982          192           27.5          26.95         14.025        3.95 \r\n 1982          193           25.7          29.35         15.6          3.775 \r\n 1982          194           25            30.475        16.75         0 \r\n 1982          195           20.5          29.15         17.6          2.65 \r\n 1982          196           8             27.875        20.4          21.775 \r\n 1982          197           11.1          29.9          21.2          4.05 \r\n 1982          198           7.5           29.125        22.15         18.375 \r\n 1982          199           22.3          28.9          18.1          3.25 \r\n 1982          200           22.5          29.65         16.35         0 \r\n 1982          201           18.9          30.15         17.875        0 \r\n 1982          202           14.3          30.25         20.6          0 \r\n 1982          203           24.5          30.2          18.725        0 \r\n 1982          204           23            29.75         17.725        0 \r\n 1982          205           26.8          30.45         17.325        0 \r\n 1982          206           18.5          31.575        19.625        0 \r\n 1982          207           16            31.25         20.6          6.925 \r\n 1982          208           23.5          28.95         19.575        0 \r\n 1982          209           26.7          28.9          15.65         0 \r\n 1982          210           20.9          28.925        17.075        7.45 \r\n 1982          211           26            27.475        15.15         0 \r\n 1982          212           25.3          30.225        15.45         0 \r\n 1982          213           19.4          30.975        18.05         0 \r\n 1982          214           18.2          30.825        20            0.8 \r\n 1982          215           15.7          32.5          21            3.9 \r\n 1982          216           9.1           30.75         22.85         10.476 \r\n 1982          217           19.6          29.075        22.4          3.25 \r\n 1982          218           21.6          28.575        19.925        0 \r\n 1982          219           21.1          29.35         19.575        0 \r\n 1982          220           27.5          26.6          17.425        0 \r\n 1982          221           18            22.375        12.2          0 \r\n 1982          222           26.1          23.225        10.825        0 \r\n 1982          223           27            24.525        9.825         0 \r\n 1982          224           25.5          24.825        9.975         0 \r\n 1982          225           15.4          27.075        14.625        0 \r\n 1982          226           20            27.925        16.675        0 \r\n 1982          227           16.4          27.1          17.025        0 \r\n 1982          228           23            29.075        17.875        0 \r\n 1982          229           15.3          28.6          17.45         0 \r\n 1982          230           12.6          29.3          19.025        0 \r\n 1982          231           15.2          30.8          19.075        0 \r\n 1982          232           23.9          27.375        17.1          0 \r\n 1982          233           23.3          28.925        14.275        0 \r\n 1982          234           15.4          28.65         17.1          9.551 \r\n 1982          235           23            28.275        14.2          0 \r\n 1982          236           13.2          25.75         16.275        8.825 \r\n 1982          237           22.5          27.425        11.7          0 \r\n 1982          238           19.7          27.175        14.925        0 \r\n 1982          239           22.4          22.875        11.75         0.45 \r\n 1982          240           16.6          23.5          9.35          4.525 \r\n 1982          241           8.5           26.725        12.025        20.126 \r\n 1982          242           16            26.75         17.775        12.501 \r\n 1982          243           5.4           26.65         17.15         7.5 \r\n 1982          244           17.1          27.45         19.35         7.85 \r\n 1982          245           24.4          24.375        15.35         0 \r\n 1982          246           24.3          24.45         10.35         0 \r\n 1982          247           23.5          26.9          10.825        0 \r\n 1982          248           4.9           26.65         17.525        7.175 \r\n 1982          249           2.6           23.325        17.175        3.3 \r\n 1982          250           13            23.325        13.425        0 \r\n 1982          251           19            26.275        13.2          0 \r\n 1982          252           16.7          27.95         16.125        0 \r\n 1982          253           11.7          28.075        19.25         2.525 \r\n 1982          254           15.3          29.725        18.625        1 \r\n 1982          255           10.4          26.8          18.125        10.975 \r\n 1982          256           3.2           23.775        17.65         18.125 \r\n 1982          257           5.1           20.3          13.35         1.9 \r\n 1982          258           13.2          17.175        10.75         1.1 \r\n 1982          259           13.3          19.575        5.025         0 \r\n 1982          260           6.3           17.8          10.6          2.025 \r\n 1982          261           19.8          19.375        6.45          0 \r\n 1982          262           15.8          22.275        7.65          0 \r\n 1982          263           18.5          16            6.85          0 \r\n 1982          264           19.3          17.95         2             0 \r\n 1982          265           19            20.5          4.4           0 \r\n 1982          266           11.9          23.8          8.175         0 \r\n 1982          267           10.8          18.925        9.05          0 \r\n 1982          268           16.8          19.15         5.1           0 \r\n 1982          269           17.5          20.55         5.875         0 \r\n 1982          270           14.9          20.975        5.95          0 \r\n 1982          271           11.8          25.825        10.025        0 \r\n 1982          272           4.9           24.1          15.7          9.575 \r\n 1982          273           7.1           25.725        17.525        7.975 \r\n 1982          274           5.8           22.9          15.225        6.075 \r\n 1982          275           5.1           22.075        15.15         4.4 \r\n 1982          276           18.2          22.175        8.525         0 \r\n 1982          277           16.3          24.325        8.9           0 \r\n 1982          278           8.4           25.825        13.65         2.775 \r\n 1982          279           6.2           23.475        12.75         5.35 \r\n 1982          280           17.1          20.65         4.45          0 \r\n 1982          281           11.7          23.625        8.6           0 \r\n 1982          282           13            22.025        13.35         8.225 \r\n 1982          283           7.5           16.35         7.5           0 \r\n 1982          284           11.8          14.325        6.975         0 \r\n 1982          285           12.8          14.275        3.8           0 \r\n 1982          286           10.7          14.075        5.325         0 \r\n 1982          287           14.8          20.35         2.8           0 \r\n 1982          288           14.8          17.225        8.025         0 \r\n 1982          289           14.8          15.3          1.325         0 \r\n 1982          290           12            18.55         4.65          0 \r\n 1982          291           7.8           20.525        7.25          0 \r\n 1982          292           2.9           16.925        10.05         20.801 \r\n 1982          293           13.9          15.05        -0.55          20.301 \r\n 1982          294           13.8          9            -4.225         0 \r\n 1982          295           13.1          12.725       -2.075         0 \r\n 1982          296           12.9          15.025       -0.05          0 \r\n 1982          297           11.9          15.775        0.95          0 \r\n 1982          298           12.1          18.425        2.35          0 \r\n 1982          299           9.5           17.425        3.75          0 \r\n 1982          300           3.7           14.1          5.1           7.175 \r\n 1982          301           1.1           14.825        10.65         12.701 \r\n 1982          302           9.9           15.575        4.875         3.825 \r\n 1982          303           9.8           17.65         5             0 \r\n 1982          304           8             19.825        7.475         0 \r\n 1982          305           6             15.3          8.6           5.825 \r\n 1982          306           9             13.675        5.7           0.95 \r\n 1982          307           8.5           8.525        -0.35          0 \r\n 1982          308           4.5           1            -6             0 \r\n 1982          309           11            3.8          -4.675         0 \r\n 1982          310           11.3          9.675        -3.5           0 \r\n 1982          311           1.5           9.4           1.2           0 \r\n 1982          312           8.4           8.2          -2.675         0 \r\n 1982          313           1.7           6.1           2.7           18.901 \r\n 1982          314           8.6           12.95         4.1           7.951 \r\n 1982          315           2.7           14.375       -1.45          27.677 \r\n 1982          316           9.4           15.6         -9.5           8.801 \r\n 1982          317           4.2          -2.55         -10.175        0 \r\n 1982          318           10.1         -3            -7.725         0 \r\n 1982          319           9.8           3.95         -9.2           0 \r\n 1982          320           9.7           5.625        -3.675         0 \r\n 1982          321           9.5           8.075        -3.375         0 \r\n 1982          322           8.3           10.475       -0.4           0 \r\n 1982          323           2.1           13.15         4.6           1.05 \r\n 1982          324           5             14.75         5.325         0.55 \r\n 1982          325           7.8           7.45         -3.65          0 \r\n 1982          326           4.6           8.075        -1.05          0 \r\n 1982          327           6.8           2.375        -6.825         0 \r\n 1982          328           9             1.55         -8.875         0 \r\n 1982          329           6.4           4.325        -6.225         0 \r\n 1982          330           8.2           0.875        -5.575         0 \r\n 1982          331           7.3           2.225        -9.7           0 \r\n 1982          332           2.2           0.95         -2.925         7.951 \r\n 1982          333           4.7           2.5          -2.825         0 \r\n 1982          334           1.9           1.95         -2.175         0 \r\n 1982          335           1.6           8.6           1.825         0 \r\n 1982          336           2.3           18.55         8.4           0.3 \r\n 1982          337           4.1           13.75         0.1           0 \r\n 1982          338           4.9           7.5          -0.8           0.525 \r\n 1982          339           3.1           5.725         1.725         29.776 \r\n 1982          340           7.2           3.725        -6.975         0.65 \r\n 1982          341           4.8          -0.025        -7.125         2.55 \r\n 1982          342           5.5          -5.775        -12.225        0 \r\n 1982          343           8.6          -4.675        -15.925        0 \r\n 1982          344           7.7           2.325        -6.5           0 \r\n 1982          345           9.1          -7            -17.175        0 \r\n 1982          346           7.6          -3.9          -14.175        0 \r\n 1982          347           6.8           2.85         -7.725         0 \r\n 1982          348           5.5           4.125        -0.375         0 \r\n 1982          349           3.8           1.35         -5.15          0 \r\n 1982          350           7.2           0.75         -8.35          0 \r\n 1982          351           4.2           3.85         -6.625         0 \r\n 1982          352           7.7           7.1          -0.175         0 \r\n 1982          353           7.8           3.65         -3.575         0 \r\n 1982          354           7.8           1.975        -4.275         0 \r\n 1982          355           7.5           5.325        -5.6           0 \r\n 1982          356           3.4           4.9          -1.175         0 \r\n 1982          357           1.8           5.65          2.4           0.6 \r\n 1982          358           1.8           8.25          1.45          6 \r\n 1982          359           4.8           9.675        -3.825         2.675 \r\n 1982          360           7.9           4.4          -5.575         0 \r\n 1982          361           2.9           4.75         -1.55          6.9 \r\n 1982          362           5.9           4.225        -10.8          22.476 \r\n 1982          363           6.9          -7.1          -15.95         0 \r\n 1982          364           5.4          -0.65         -10.475        0 \r\n 1982          365           6.7          -0.1          -7.4           0 \r\n 1983          1             7.3           2.3          -7.325         0 \r\n 1983          2             7.5          -1.475        -6.8           0 \r\n 1983          3             5.4          -0.5          -8.925         0 \r\n 1983          4             4.9           3.525        -3.8           0 \r\n 1983          5             5.4           2.8          -5.25          0 \r\n 1983          6             5.1           7.025        -1.475         0 \r\n 1983          7             7.5          -0.025        -8.125         0 \r\n 1983          8             7.1           2.925        -7.95          0 \r\n 1983          9             3.2           4.65         -2.025         0 \r\n 1983          10            3.8           3.875        -0.85          5.075 \r\n 1983          11            6.5          -1.825        -8.15          0 \r\n 1983          12            5.9          -0.525        -14.8          0 \r\n 1983          13            7.6           2.45         -7.2           0 \r\n 1983          14            6.3           2.35         -6.8           0 \r\n 1983          15            8.7          -6.1          -13.975        0 \r\n 1983          16            6.7          -4.9          -12.375        0 \r\n 1983          17            9.2          -6.425        -12.575        0 \r\n 1983          18            8.4          -5.725        -16.8          0 \r\n 1983          19            7.4          -1.575        -8.95          0 \r\n 1983          20            7.5           0.8          -6.025         0 \r\n 1983          21            9.5           2.575        -6.425         0 \r\n 1983          22            3.8           2.075        -5.55          1.3 \r\n 1983          23            6.2           4.075        -2.8           0 \r\n 1983          24            8             1.15         -5.875         0 \r\n 1983          25            4.7          -3.2          -9.225         0 \r\n 1983          26            9.2          -6.5          -11.575        0 \r\n 1983          27            8.6          -2.9          -15.35         0 \r\n 1983          28            5.8           5            -3.75          1.9 \r\n 1983          29            2.6           4.525         1.425         13.226 \r\n 1983          30            11            1.05         -10.475        0.775 \r\n 1983          31            10.2         -4.9          -15.375        0 \r\n 1983          32            3.1          -2.825        -10.225        6.301 \r\n 1983          33            2.4          -4.225        -7.7           12.876 \r\n 1983          34            4.5          -8.2          -11.925        1.775 \r\n 1983          35            10.5         -9.475        -23.4          0 \r\n 1983          36            2.7          -3.025        -17.5          2.225 \r\n 1983          37            9.8          -3.9          -15.575        1.65 \r\n 1983          38            9.3          -6.9          -22.475        0 \r\n 1983          39            4.8          -0.625        -10.75         0 \r\n 1983          40            3.9           0.3          -7.2           0 \r\n 1983          41            5.5           0.8          -3.6           0 \r\n 1983          42            8.2           0.3          -6.95          0 \r\n 1983          43            7             1.175        -6.75          0 \r\n 1983          44            6.9           3.75         -2.5           0 \r\n 1983          45            3.9           3.225         0.5           0 \r\n 1983          46            3.1           2.75          0.6           7.626 \r\n 1983          47            7.8           2.625        -0.8           5.15 \r\n 1983          48            9.8           3.075        -1.975         0 \r\n 1983          49            10            10.225       -1.75          0 \r\n 1983          50            3.3           9.725         1.8           0 \r\n 1983          51            2.9           8.8           2.875         0 \r\n 1983          52            8             9.25          0.1           0 \r\n 1983          53            6             7.3           1.9           0 \r\n 1983          54            4.8           4.725        -1.6           0 \r\n 1983          55            15.2          2.35         -2.45          0 \r\n 1983          56            16.2          3.05         -6.075         0 \r\n 1983          57            13.4          8.725        -2.85          0 \r\n 1983          58            5.2           7.75          2             0 \r\n 1983          59            15.8          14.625        1.25          0 \r\n 1983          60            7.7           14.775        3.1           0 \r\n 1983          61            6.6           12.2          0.675         0 \r\n 1983          62            9.5           19.3          4.325         0 \r\n 1983          63            3             16.225        8.875         0 \r\n 1983          64            1.8           16.025        10.325        9.575 \r\n 1983          65            4.9           13.3          9.125         19.475 \r\n 1983          66            11.8          9.45          1.2           0 \r\n 1983          67            4.1          -0.025        -5.025         0 \r\n 1983          68            5.4          -1.475        -5.625         0 \r\n 1983          69            12.6         -0.225        -7.575         0 \r\n 1983          70            16.3          3.35         -6.55          0 \r\n 1983          71            12.4          6.225        -4             0 \r\n 1983          72            15.2          12.85        -0.125         0 \r\n 1983          73            16.6          8.725        -3.2           0 \r\n 1983          74            4.4           4.775        -0.725         20.525 \r\n 1983          75            5.3           5.25         -0.525         6.125 \r\n 1983          76            4.1           5.475        -0.675         0.85 \r\n 1983          77            12.6          7.825        -1.35          0 \r\n 1983          78            10.2          3.675        -3.8           0 \r\n 1983          79            2.9          -0.375        -5.8           4.1 \r\n 1983          80            14.9         -2.075        -8.1           0 \r\n 1983          81            21.5         -0.025        -8.1           0 \r\n 1983          82            20.9          3.575        -8.375         0 \r\n 1983          83            20.6          4.75         -4.525         0 \r\n 1983          84            10.8          3.5          -4.1           0 \r\n 1983          85            3             1.875        -1.325         5.675 \r\n 1983          86            6.8          -0.325        -1.7           6.325 \r\n 1983          87            22.3          3.775        -7.825         0 \r\n 1983          88            9.2           5.55         -3.35          0 \r\n 1983          89            10.7          9.225         0.575         1.4 \r\n 1983          90            6.6           11.025        1.75          5.05 \r\n 1983          91            1.6           9.325         3.9           1.375 \r\n 1983          92            3.6           6.15          1.45          11.701 \r\n 1983          93            11.5          7.9           0.375         0.525 \r\n 1983          94            4.1           5.55         -1.625         0 \r\n 1983          95            4             6.6          -0.3           2.4 \r\n 1983          96            9             7.625        -0.975         5.201 \r\n 1983          97            13.5          8.5          -2.45          0 \r\n 1983          98            10            9.825        -1.075         0 \r\n 1983          99            7.9           7.3           0.425         13.452 \r\n 1983          100           9             8.2           0.7           2.15 \r\n 1983          101           18.4          14.025       -0.175         0 \r\n 1983          102           6.3           11.825        3.65          9.626 \r\n 1983          103           6.8           12.325        7.5           2.6 \r\n 1983          104           8.3           9             0.25          26.328 \r\n 1983          105           26.3          4.7          -8.625         0 \r\n 1983          106           14.2          7.025        -1.875         0.9 \r\n 1983          107           6.3           3.4          -3.35          0 \r\n 1983          108           26.2          7.625        -3.975         0 \r\n 1983          109           22.4          10.125       -2.075         0 \r\n 1983          110           22.7          13.9          0.25          0 \r\n 1983          111           25.6          18.075        2.375         0 \r\n 1983          112           25.3          19.675        5.475         0 \r\n 1983          113           17.3          14.85         6             0 \r\n 1983          114           27.6          17.9          2.15          0 \r\n 1983          115           27.2          20.325        6.025         0 \r\n 1983          116           21            23.8          8.8           0 \r\n 1983          117           10.6          19.1          5.9           0 \r\n 1983          118           17.3          18.125        5.95          0 \r\n 1983          119           19.5          17.475        8.75          1.2 \r\n 1983          120           26.9          18.425        4.75          0 \r\n 1983          121           5.6           13.95         6.85          15.226 \r\n 1983          122           5.3           13.075        5.725         2.6 \r\n 1983          123           16.2          16.275        5.725         6.2 \r\n 1983          124           26.8          15.55         4.15          0 \r\n 1983          125           17.2          20.875        5.675         0 \r\n 1983          126           14            23.125        11.975        13.326 \r\n 1983          127           10.5          19.175        10.5          16.376 \r\n 1983          128           28.9          16.375        0.825         0 \r\n 1983          129           28            16.8          3.1           0 \r\n 1983          130           27.5          21.775        5.675         0 \r\n 1983          131           15.8          22.6          8.525         0 \r\n 1983          132           17.9          24.375        15.5          23.076 \r\n 1983          133           9.3           20.6          12.375        6.775 \r\n 1983          134           8.5           16.475        8.3           2.95 \r\n 1983          135           29.6          18.025        0.775         0 \r\n 1983          136           16.5          17            8.35          0 \r\n 1983          137           8.4           16            7.925         7.725 \r\n 1983          138           10.1          16.7          9.65          13.426 \r\n 1983          139           19.1          19.775        11.275        34.377 \r\n 1983          140           18.6          20.525        9.125         4.2 \r\n 1983          141           21.4          22.825        9.6           0 \r\n 1983          142           18.6          21.925        14.725        20.151 \r\n 1983          143           31.3          21.45         5.75          0 \r\n 1983          144           15.2          24.475        11.225        3.875 \r\n 1983          145           32.2          19.475        6.925         0 \r\n 1983          146           31.3          20.5          4.85          0 \r\n 1983          147           11.7          22.575        9.35          14.676 \r\n 1983          148           17.5          24.05         11.8          3.775 \r\n 1983          149           20.7          18.875        10            2.075 \r\n 1983          150           19.9          16.8          5.5           0 \r\n 1983          151           12.7          17.025        7.775         0 \r\n 1983          152           23.1          23.3          7.4           0 \r\n 1983          153           19.9          23.325        10.275        0 \r\n 1983          154           20.9          24.725        13.75         0 \r\n 1983          155           18.7          24.975        10.225        0 \r\n 1983          156           18.2          20.675        8.45          0 \r\n 1983          157           30.8          22.425        5.7           0 \r\n 1983          158           29.8          26.475        8.45          0 \r\n 1983          159           28.7          28.025        11.775        0 \r\n 1983          160           22.3          28.65         13            0 \r\n 1983          161           16.5          28.125        15.425        0 \r\n 1983          162           17.6          28.375        15.55         4.125 \r\n 1983          163           11.8          27.075        18.25         6.65 \r\n 1983          164           18.1          28.8          17.625        3.25 \r\n 1983          165           18.6          25.45         19.2          4.3 \r\n 1983          166           25.5          27.55         12.4          0 \r\n 1983          167           27.1          26.05         10.9          0 \r\n 1983          168           16.6          25.25         11            11.875 \r\n 1983          169           13.4          25.725        13.75         10.725 \r\n 1983          170           20.8          27.775        16.025        5.85 \r\n 1983          171           9.4           27.9          17.325        4.425 \r\n 1983          172           7.6           29.025        21.125        0 \r\n 1983          173           17.8          30.875        20.25         0 \r\n 1983          174           17.7          30            21.25         0 \r\n 1983          175           11.3          29.725        18.875        0 \r\n 1983          176           14            30.1          19.45         0 \r\n 1983          177           14.1          30.275        20.075        11.675 \r\n 1983          178           10.2          27.125        19.875        20.201 \r\n 1983          179           8.5           25.625        17.7          16.251 \r\n 1983          180           8.5           26.875        19.175        12.126 \r\n 1983          181           17.9          30            17.975        15.701 \r\n 1983          182           24.25         31.2          21            18.175 \r\n 1983          183           12.5          29.15         21.5          8.25 \r\n 1983          184           15.328        30.5          22.3          13.15 \r\n 1983          185           26.975        28.7          13.9          2.55 \r\n 1983          186           25.975        25.425        12.05         0 \r\n 1983          187           29.1          27.95         10.875        0 \r\n 1983          188           29.625        28.8          13.3          0 \r\n 1983          189           29            31.275        16.55         0 \r\n 1983          190           28.625        32.05         17.75         0 \r\n 1983          191           29.05         31.825        18.05         0 \r\n 1983          192           28.25         32.65         19.25         0 \r\n 1983          193           30.3          31.35         15.7          0 \r\n 1983          194           27.05         30.325        18.7          0 \r\n 1983          195           22.249        31.4          20.05         0 \r\n 1983          196           20.625        30.075        20.2          0 \r\n 1983          197           21.451        29.7          20.525        0 \r\n 1983          198           24.051        29.8          20.625        5.15 \r\n 1983          199           13.901        30.675        19.975        9.1 \r\n 1983          200           23.424        32.9          22.075        4.95 \r\n 1983          201           27.401        35.35         23.15         0 \r\n 1983          202           28.45         35.25         22.85         0 \r\n 1983          203           25.575        34.025        23.725        13.675 \r\n 1983          204           11.951        31.85         21.925        3.45 \r\n 1983          205           9.923         29.15         16.65         0 \r\n 1983          206           23.425        28.7          16.875        0 \r\n 1983          207           24            29.95         18.925        0 \r\n 1983          208           14.002        30.85         18            0 \r\n 1983          209           13.027        31.825        23.675        10.75 \r\n 1983          210           14.999        31.75         23.35         10.5 \r\n 1983          211           25.1          32.725        19.125        0 \r\n 1983          212           27.35         29.65         19.025        0 \r\n 1983          213           28.9          29.65         15.625        0 \r\n 1983          214           26            32.05         16.525        0 \r\n 1983          215           12.448        33.075        21.875        0.7 \r\n 1983          216           23.35         32.1          21.6          0 \r\n 1983          217           16.551        31.45         21.55         0 \r\n 1983          218           21.074        31.9          19.2          2.9 \r\n 1983          219           27.275        33.3          19.2          0 \r\n 1983          220           27.4          32.875        19.95         0 \r\n 1983          221           24.1          29.675        15.7          0 \r\n 1983          222           21.577        33.65         17.4          0 \r\n 1983          223           19.626        29.275        15.525        0 \r\n 1983          224           24.7          27.75         14.1          0 \r\n 1983          225           18.476        30.2          13.75         0 \r\n 1983          226           22.625        31.925        19.775        0 \r\n 1983          227           21.425        31.65         18.525        0 \r\n 1983          228           22.45         33.55         20.5          0 \r\n 1983          229           21.926        31.8          23.1          0 \r\n 1983          230           20.451        32.925        19.75         0 \r\n 1983          231           23.225        34.725        21.775        0 \r\n 1983          232           21.9          31.15         18.25         0 \r\n 1983          233           14.127        30.35         21.825        13.851 \r\n 1983          234           7.899         29.125        21.1          1.2 \r\n 1983          235           7.799         29.05         17.85         0 \r\n 1983          236           15.001        29.875        20.15         5 \r\n 1983          237           10.6          32.475        22.2          13.751 \r\n 1983          238           15.626        32.425        23.125        4.7 \r\n 1983          239           17.174        36.225        22.9          6.475 \r\n 1983          240           23.65         32.025        20.425        1.65 \r\n 1983          241           22.575        32.575        20.25         8.225 \r\n 1983          242           17.049        31.425        20.35         7.675 \r\n 1983          243           21.575        29.3          16.375        0 \r\n 1983          244           24.35         29.375        15.5          0 \r\n 1983          245           24            31.05         17.525        0 \r\n 1983          246           22.126        31.375        18.075        0 \r\n 1983          247           16.876        30.9          18.65         0 \r\n 1983          248           10.3          27.4          19.85         13.4 \r\n 1983          249           21.5          24.6          17.95         9.75 \r\n 1983          250           22.9          27.05         10.625        0 \r\n 1983          251           19.374        31.175        14.65         0 \r\n 1983          252           20.601        31.375        20.65         0.625 \r\n 1983          253           5.525         29            17.75         1.6 \r\n 1983          254           21.675        23.475        8.45          0 \r\n 1983          255           9.775         21.025        11.8          0 \r\n 1983          256           18.401        21.5          7.675         1.05 \r\n 1983          257           15.701        21.325        8.025         0 \r\n 1983          258           1.85          18.15         10.6          20.425 \r\n 1983          259           8.751         19.65         10.65         1.9 \r\n 1983          260           11.451        26.425        8.35          0 \r\n 1983          261           16.574        24.15         16.05         10.275 \r\n 1983          262           8.352         26.95         10.9          33.725 \r\n 1983          263           4.825         24.2          3.575         58.8 \r\n 1983          264           11.901        11.55         0.875         0 \r\n 1983          265           10.676        13.475       -0.1           0 \r\n 1983          266           19.8          17            0.275         0 \r\n 1983          267           15.049        22.35         3.775         0 \r\n 1983          268           17.35         25.4          11.85         0 \r\n 1983          269           17.9          25.5          12.175        0 \r\n 1983          270           18.05         27.025        13.1          0 \r\n 1983          271           14.926        28.8          14.5          0 \r\n 1983          272           11.376        27.675        14.475        0 \r\n 1983          273           16.55         26.7          14.05         0 \r\n 1983          274           16.575        26.325        14.1          0 \r\n 1983          275           14.126        27.025        16.175        0 \r\n 1983          276           4.7           23.75         14.65         13.526 \r\n 1983          277           10.65         19.025        8.65          0 \r\n 1983          278           17.95         21.5          7.9           0 \r\n 1983          279           13.676        18.925        5.55          0 \r\n 1983          280           8.401         22.95         10.675        0 \r\n 1983          281           15.675        16.875        7.3           0 \r\n 1983          282           15.475        15.925        3.2           0 \r\n 1983          283           6.125         18.825        6.525         0.825 \r\n 1983          284           3.175         17.275        9.075         35.027 \r\n 1983          285           8.975         10.05         0.7           1.025 \r\n 1983          286           7.95          6.5           0.25          0 \r\n 1983          287           15.7          15.175        0.4           0 \r\n 1983          288           4.125         16.875        7.4           12.401 \r\n 1983          289           13.926        15.1          6.975         0 \r\n 1983          290           15.475        16.8          2.45          0 \r\n 1983          291           10.575        16.65         4.4           0 \r\n 1983          292           1.9           11.4          5.475         6.2 \r\n 1983          293           3.35          10.875        4.35          16.126 \r\n 1983          294           2.05          12.75         5.15          1.975 \r\n 1983          295           3.6           12.925        6.9           2.1 \r\n 1983          296           13.901        14.5          5.675         0 \r\n 1983          297           5.125         13.5          3.3           0 \r\n 1983          298           12.65         14            1.775         0 \r\n 1983          299           13.8          15.9          3.3           0 \r\n 1983          300           13.25         20.775        5.475         0 \r\n 1983          301           12.55         16.375        8.75          0 \r\n 1983          302           9.024         12.35         0             0 \r\n 1983          303           4.299         13.125        2.85          0 \r\n 1983          304           4             15.875        4.875         0 \r\n 1983          305           6.9           18.325        12.3          1.15 \r\n 1983          306           3.875         19.7          14.65         0 \r\n 1983          307           2.775         16.275        5.9           0 \r\n 1983          308           12.7          9.75         -0.15          0 \r\n 1983          309           10.85         12.975        0.575         0 \r\n 1983          310           4.15          12.4          7.35          0 \r\n 1983          311           5.625         13.8          6.5           0 \r\n 1983          312           2.75          13.375        9.525         1.95 \r\n 1983          313           1.225         11.025        3.8           18.251 \r\n 1983          314           5.575         2.95         -1.65          3.675 \r\n 1983          315           9.275         2.275        -5.525         0 \r\n 1983          316           3.65          0.6          -2.65          0 \r\n 1983          317           2.95          2.325        -1.65          1.15 \r\n 1983          318           2.65          6.05          1.1           2.625 \r\n 1983          319           4.5           4.625         0.925         0 \r\n 1983          320           9.301         5.725        -2.85          0 \r\n 1983          321           8.45          6.75         -1.925         0 \r\n 1983          322           5.15          6.55          1.175         0 \r\n 1983          323           4.251         18.05         4.825         20.201 \r\n 1983          324           4             14.1          2.375         0 \r\n 1983          325           9.275         8.7          -0.725         0 \r\n 1983          326           2.725         5.925        -1.225         3.3 \r\n 1983          327           2.3           6.6          -4.425         27.052 \r\n 1983          328           4.375        -1            -10            0 \r\n 1983          329           5.424         0.525        -11.45         0 \r\n 1983          330           6.7          -1.825        -5.5           0 \r\n 1983          331           2.149        -0.65         -3.075         15.951 \r\n 1983          332           3.2           1.05         -1.775         8.601 \r\n 1983          333           5.125        -2.25         -7.55          0 \r\n 1983          334           5.426        -6.075        -13.125        0 \r\n 1983          335           5.425        -5.55         -16.225        0 \r\n 1983          336           9.1          -5.45         -11.7          0 \r\n 1983          337           4.925        -5.35         -15.175        0 \r\n 1983          338           6.176        -0.95         -10.425        0 \r\n 1983          339           5.75         -2.25         -7.875         0 \r\n 1983          340           8.1          -4.25         -10.25         0 \r\n 1983          341           6.425        -6.125        -13.375        0 \r\n 1983          342           3.925        -8.2          -16.65         1.25 \r\n 1983          343           7.951        -7.4          -13.9          0.925 \r\n 1983          344           4.075        -2.025        -15.25         1.425 \r\n 1983          345           3.825         1.475        -1.775         3.85 \r\n 1983          346           6.65         -1.275        -15.325        0 \r\n 1983          347           4.175         0.45         -8             5.075 \r\n 1983          348           4.4          -2.025        -3.95          6.375 \r\n 1983          349           4.725        -4.2          -9.75          1.875 \r\n 1983          350           8.8          -10.425       -20.95         0 \r\n 1983          351           7.9          -14.05        -25.65         0 \r\n 1983          352           7.401        -19.85        -31.825        0 \r\n 1983          353           5.025        -21.15        -32.325        0 \r\n 1983          354           6.651        -13.6         -29.375        0 \r\n 1983          355           5.475        -11.825       -16.575        4.175 \r\n 1983          356           5.3          -18.1         -28            0 \r\n 1983          357           5.025        -23.575       -30.075        0 \r\n 1983          358           5.7          -21.175       -31.425        0 \r\n 1983          359           6.425        -18.3         -26.825        0 \r\n 1983          360           6.175        -8.95         -21.025        0 \r\n 1983          361           5.525        -8.075        -17.275        0 \r\n 1983          362           8.075        -10.025       -13.225        0 \r\n 1983          363           7.026        -14.075       -19.925        0 \r\n 1983          364           8.775        -7.825        -22.75         0 \r\n 1983          365           6.65         -1.775        -8.9           0 \r\n 1984          1             5.049         0.025        -5.75          0.775 \r\n 1984          2             5.674        -1.025        -7.325         0 \r\n 1984          3             5.425         3            -5.275         0 \r\n 1984          4             8.775         2.8          -3.55          0 \r\n 1984          5             6.3           4.475        -5.75          0 \r\n 1984          6             7.925         4.45         -2.25          0 \r\n 1984          7             8.1           1.275        -4.9           0 \r\n 1984          8             5.55          0.325        -12.225        0 \r\n 1984          9             5.55         -4.95         -11.075        0 \r\n 1984          10            6.675        -7.8          -22.075        0 \r\n 1984          11            4.05         -9.05         -20.925        0 \r\n 1984          12            4.3          -7.775        -12.2          0 \r\n 1984          13            5.825        -6            -11.925        0.375 \r\n 1984          14            6.25         -8.15         -14.7          0 \r\n 1984          15            6.1          -8.4          -18.075        0 \r\n 1984          16            6.475        -8.3          -11.5          0 \r\n 1984          17            6.65         -11.475       -21.775        0 \r\n 1984          18            6.225        -15.6         -27.575        0 \r\n 1984          19            7.15         -10.725       -23.95         0 \r\n 1984          20            7.875        -17.45        -30.85         0 \r\n 1984          21            7.2          -8.425        -28.75         0 \r\n 1984          22            7.625        -2.05         -15.45         0 \r\n 1984          23            5.25          1.55         -5.7           0.6 \r\n 1984          24            6.925         1.675        -7.15          0 \r\n 1984          25            7.4           1.95         -5.875         0 \r\n 1984          26            6.05          1.725        -1.475         0.375 \r\n 1984          27            9.575        -2.125        -12.9          0 \r\n 1984          28            10.525        3.45         -11.05         4 \r\n 1984          29            4.5          -5.375        -16.025        5.025 \r\n 1984          30            8.174        -7            -11.875        2.175 \r\n 1984          31            8.175         0.5          -11.9          0 \r\n 1984          32            7.199         2.5          -7.7           0 \r\n 1984          33            7.35          3.6          -3.75          0 \r\n 1984          34            9.2           3.575        -5             0 \r\n 1984          35            8.376         3.1          -8.75          0 \r\n 1984          36            8.325        -6.375        -17.425        3.075 \r\n 1984          37            6.825        -12.025       -26.425        0 \r\n 1984          38            7.575        -5.825        -20.7          0 \r\n 1984          39            9.9           3.1          -12.075        0 \r\n 1984          40            12.025        2.65         -2.925         0 \r\n 1984          41            8.924         2.3          -2.7           0 \r\n 1984          42            5.175         3.4          -0.75          1.3 \r\n 1984          43            8.625         6.475         2.525         3.325 \r\n 1984          44            5.25          5.3          -3.65          0 \r\n 1984          45            10.5          8.2          -2.95          0 \r\n 1984          46            12.025        10.775        3.175         0 \r\n 1984          47            4.25          8.45          2.175         1.05 \r\n 1984          48            5.199         5.3           0.225         1.775 \r\n 1984          49            2             4.1          -1.475         12.076 \r\n 1984          50            4.674         4.3           0.25          4.225 \r\n 1984          51            15.2          5.125        -7.975         0 \r\n 1984          52            12.776        7.025        -5.225         0 \r\n 1984          53            14.826        13.95        -0.375         0 \r\n 1984          54            6.05          8.5           1.4           0 \r\n 1984          55            13.825        6.275        -2.05          0 \r\n 1984          56            12.675        8.25         -1.1           0 \r\n 1984          57            10.602        8.175        -0.025         0 \r\n 1984          58            11.275        3.2          -2.475         0 \r\n 1984          59            13.001        0.95         -5.725         0 \r\n 1984          60            15.776        2.225        -7.825         0 \r\n 1984          61            14.476        3.8          -6.85          0 \r\n 1984          62            14.925        0.6          -8.1           0 \r\n 1984          63            15.851        4.2          -8.675         0 \r\n 1984          64            3.125         1.85         -3.4           4.75 \r\n 1984          65            6.676        -0.825        -5.5           0 \r\n 1984          66            16.801       -6            -16.725        0 \r\n 1984          67            10.524       -3.225        -11.775        1.1 \r\n 1984          68            10.499       -5.3          -12.75         3.4 \r\n 1984          69            10.875       -6.925        -12.25         0 \r\n 1984          70            12.376       -0.05         -11.725        0 \r\n 1984          71            16.7         -2.725        -19.725        0 \r\n 1984          72            6.975        -3.775        -12.525        2 \r\n 1984          73            8.25          0.025        -10.275        0 \r\n 1984          74            9.701         5.575        -6.45          0 \r\n 1984          75            8.224         4.175        -0.675         13.25 \r\n 1984          76            7.399         2.6          -7.25          0 \r\n 1984          77            4.45          1.025        -5.925         5.25 \r\n 1984          78            6.424         1.05         -7.5           0 \r\n 1984          79            2.599        -0.675        -4.725         7.125 \r\n 1984          80            2.775        -1.35         -5.5           6.375 \r\n 1984          81            4.175         0.8          -3.275         0 \r\n 1984          82            9.575         3.525        -4.05          0 \r\n 1984          83            14.65         8.375        -5.4           0 \r\n 1984          84            15.024        9.4          -1.625         0 \r\n 1984          85            21.175        10.9         -1.075         0 \r\n 1984          86            9.274         5.275        -2.5           0.9 \r\n 1984          87            4.225         6.85         -0.15          1.85 \r\n 1984          88            16.3          8.175        -2.65          0 \r\n 1984          89            11.225        5.5          -5.05          0 \r\n 1984          90            15.65         7.1          -4.85          0 \r\n 1984          91            21.674        9.425        -2.95          0 \r\n 1984          92            16.55         13.175       -0.575         0 \r\n 1984          93            10.423        9.875         2.125         0 \r\n 1984          94            3.724         6.35          1             10.376 \r\n 1984          95            8.549         11.55        -0.675         0 \r\n 1984          96            24.1          13.225       -1.3           0 \r\n 1984          97            24.95         15.125       -0.7           0 \r\n 1984          98            7.8           12.925        2.6           0.725 \r\n 1984          99            4.225         8.825         3.15          5.301 \r\n 1984          100           6.124         15.2          2.7           0 \r\n 1984          101           8.5           16.8          6.35          0 \r\n 1984          102           5.45          17.575        4.9           0 \r\n 1984          103           5.925         15.55         9.175         19.977 \r\n 1984          104           5.899         10.9          6.6           6.626 \r\n 1984          105           4.25          11.725        6.425         4.05 \r\n 1984          106           12.075        14.3          5.05          0 \r\n 1984          107           23.599        14.35         4.1           0 \r\n 1984          108           25.95         13.3         -0.45          0 \r\n 1984          109           20.5          14.25         0.9           0 \r\n 1984          110           15.626        15.925        1.95          0 \r\n 1984          111           16.75         14.125        5.15          0 \r\n 1984          112           4.924         13.05         5.95          2.05 \r\n 1984          113           1.275         7.75          1.15          9.626 \r\n 1984          114           13.498        13.525        0.575         0 \r\n 1984          115           23.876        20.225        4.05          0 \r\n 1984          116           16.276        17.125        5.075         0 \r\n 1984          117           18.725        22.4          11.6          9.826 \r\n 1984          118           23.976        21.75         12.55         5.601 \r\n 1984          119           26.251        14.2          1.6           0 \r\n 1984          120           3.225         11.75         4.9           24.578 \r\n 1984          121           19.502        11.85         1.2           24.278 \r\n 1984          122           25.35         15.15         0.425         0 \r\n 1984          123           12.2          13.925        5.5           3.6 \r\n 1984          124           8.223         12.125        5.525         4.175 \r\n 1984          125           12.725        15.3          2.35          0 \r\n 1984          126           24.151        19.075        5.05          0 \r\n 1984          127           14.375        19.025        8.55          5.325 \r\n 1984          128           10.45         16.225        9.675         6.575 \r\n 1984          129           20.85         12.125        0.5           0 \r\n 1984          130           26.35         17.7          1.75          0 \r\n 1984          131           21.8          22.15         7.2           0 \r\n 1984          132           19.399        23.925        11.6          0 \r\n 1984          133           14.924        22.725        6.05          0 \r\n 1984          134           27.4          23.025        12.05         4.3 \r\n 1984          135           29.175        21.075        6.325         0 \r\n 1984          136           16.398        20.45         7.55          0 \r\n 1984          137           17.951        21.575        6.85          2.875 \r\n 1984          138           15.676        27.3          10.375        0 \r\n 1984          139           9.576         25.325        17.8          8.125 \r\n 1984          140           9.147         23.425        17            3.675 \r\n 1984          141           25.925        27.075        13.05         0 \r\n 1984          142           26.975        26.575        13.2          0 \r\n 1984          143           12.225        23.6          15.55         8.45 \r\n 1984          144           31.025        22.25         8.075         0 \r\n 1984          145           14.451        25.375        11.125        7.925 \r\n 1984          146           8.95          21.75         9.425         26.326 \r\n 1984          147           27.801        19.2          6.775         0 \r\n 1984          148           3.275         17.3          9.175         6.9 \r\n 1984          149           18.423        16.425        6.675         20.426 \r\n 1984          150           31.6          19.55         4.55          0 \r\n 1984          151           31.35         23            7.85          0 \r\n 1984          152           29.875        25.325        9             0 \r\n 1984          153           23.075        28.825        12.85         0 \r\n 1984          154           25.149        25.875        12.125        0 \r\n 1984          155           29.475        26.4          10.5          0 \r\n 1984          156           15.625        25.8          13.5          0 \r\n 1984          157           24.1          28.75         16.75         0 \r\n 1984          158           17.424        26.15         18.75         0 \r\n 1984          159           13.625        26.3          19.075        8.625 \r\n 1984          160           29.825        27.05         17.975        14.626 \r\n 1984          161           6.124         25.85         15.55         6.1 \r\n 1984          162           23.251        24.925        12.475        3.725 \r\n 1984          163           15.652        26.825        11.1          0 \r\n 1984          164           12.599        27.475        19.175        19.701 \r\n 1984          165           23.174        27.8          19.4          14.626 \r\n 1984          166           19.052        28.025        13.9          0 \r\n 1984          167           12.897        25.05         16.3          7.275 \r\n 1984          168           7.476         27.425        14.75         14.776 \r\n 1984          169           12.975        27.85         21.05         20.601 \r\n 1984          170           27.35         28.75         19.3          5.575 \r\n 1984          171           29.6          28.475        13.325        0 \r\n 1984          172           16.225        29.125        15.425        0 \r\n 1984          173           19.149        27.725        17.225        5.55 \r\n 1984          174           28.301        28.075        18.75         21.851 \r\n 1984          175           23.326        27.325        18.775        0 \r\n 1984          176           27.275        26.8          11.925        0 \r\n 1984          177           26.975        28.8          13.45         0 \r\n 1984          178           28            29.35         16.85         7.525 \r\n 1984          179           30.3          26.65         12.55         0 \r\n 1984          180           20.324        26.625        15.8          0 \r\n 1984          181           26.8          25.075        13.05         0 \r\n 1984          182           27.3          25.9          12.375        0 \r\n 1984          183           24.875        27.4          14.2          0 \r\n 1984          184           25.25         27.9          14.75         0 \r\n 1984          185           19.175        28.975        15            2 \r\n 1984          186           17.975        27.45         16.8          0 \r\n 1984          187           24.551        27.6          14.575        0 \r\n 1984          188           28.651        24.4          11.45         0 \r\n 1984          189           31.45         24.575        8.875         0 \r\n 1984          190           16.576        28.525        12.4          10.2 \r\n 1984          191           16.627        31.8          21.5          13.3 \r\n 1984          192           14.977        29.05         22            10.9 \r\n 1984          193           27.9          28.05         16.4          0 \r\n 1984          194           27.7          29.625        17.1          0 \r\n 1984          195           21.701        29.025        17.3          4.1 \r\n 1984          196           15.451        30.9          19.15         13.375 \r\n 1984          197           27.65         27.925        17.45         3.25 \r\n 1984          198           28.35         28.95         13.875        11.925 \r\n 1984          199           26.976        24.9          13.775        7.8 \r\n 1984          200           28.8          25.65         10.55         0 \r\n 1984          201           18.676        29.15         13.1          0 \r\n 1984          202           24.3          29.95         18.15         0 \r\n 1984          203           25.85         30.475        16.175        0 \r\n 1984          204           21.525        31.9          19.9          0 \r\n 1984          205           23.176        31.175        20.65         0 \r\n 1984          206           17.501        28.2          16.8          0 \r\n 1984          207           8.074         28.325        17            0 \r\n 1984          208           12.525        25.925        16.25         3.75 \r\n 1984          209           15.974        24.9          13.1          2.1 \r\n 1984          210           25.175        26.075        12.25         0 \r\n 1984          211           23.55         26.5          12.45         0 \r\n 1984          212           23.375        26.95         14.3          0 \r\n 1984          213           20.401        27.55         13.775        0 \r\n 1984          214           17            31.4          17            1.45 \r\n 1984          215           22.275        31.275        17.375        0 \r\n 1984          216           17.925        30.725        18            0 \r\n 1984          217           15.9          31.125        19.2          0 \r\n 1984          218           19.426        31.175        19.675        0 \r\n 1984          219           24.876        32.975        20.375        0 \r\n 1984          220           19.275        33.725        20.875        2.075 \r\n 1984          221           26.25         31.025        20.575        8.951 \r\n 1984          222           26.15         29.875        19            0 \r\n 1984          223           25.251        29.4          14.275        0 \r\n 1984          224           21.525        29.525        15.35         0 \r\n 1984          225           21.35         29.55         17.4          0 \r\n 1984          226           19            30.5          15.9          0 \r\n 1984          227           25.35         30.95         17.6          0 \r\n 1984          228           14.824        31.85         17.425        0 \r\n 1984          229           18.4          31.775        19.525        2.2 \r\n 1984          230           3.249         31.775        20.9          8.9 \r\n 1984          231           15.325        30.45         18.9          0 \r\n 1984          232           23.275        27.875        14.3          0 \r\n 1984          233           23.425        27.825        13.025        0 \r\n 1984          234           6.849         26.525        14.475        6.45 \r\n 1984          235           24.776        25.1          13.5          0 \r\n 1984          236           19.1          24.775        8.325         0 \r\n 1984          237           21.375        26.275        9.975         0 \r\n 1984          238           18.85         28.35         11.675        0 \r\n 1984          239           18.225        30.875        15.225        0 \r\n 1984          240           23.3          33.35         19.1          0 \r\n 1984          241           22.726        34.875        18.275        0 \r\n 1984          242           20.375        33.225        19.35         0 \r\n 1984          243           24.45         26.75         12.55         0 \r\n 1984          244           19.776        28.325        11.325        0 \r\n 1984          245           15.577        33.575        17.325        2.9 \r\n 1984          246           5.05          29.3          15.65         10.575 \r\n 1984          247           20.525        22.65         10.6          3.3 \r\n 1984          248           18.55         23.975        10.5          0 \r\n 1984          249           23.525        23.275        8.6           0 \r\n 1984          250           7.075         23.25         10.75         0 \r\n 1984          251           19.7          31.6          17.1          0 \r\n 1984          252           14.65         26.5          14.45         11.6 \r\n 1984          253           9.324         25.3          12.05         1.3 \r\n 1984          254           4.899         26.825        12            2.5 \r\n 1984          255           19.375        24.375        10.975        0 \r\n 1984          256           17.4          31.275        14.95         4.15 \r\n 1984          257           8.624         27.875        17.825        0 \r\n 1984          258           7.675         19.75         9.825         0 \r\n 1984          259           19.375        19.05         3.875         0 \r\n 1984          260           18.35         21.6          4.95          0 \r\n 1984          261           18.725        23.7          6.425         0 \r\n 1984          262           20.575        27.275        9.45          0 \r\n 1984          263           20.6          30.725        13.225        0 \r\n 1984          264           19.075        26.375        13.75         0 \r\n 1984          265           19.375        29.675        12.225        0 \r\n 1984          266           6.551         28.625        15.475        1.125 \r\n 1984          267           12.874        27.8          16.225        0 \r\n 1984          268           8.726         26.85         14.85         11.3 \r\n 1984          269           8.026         16.875        4.425         1.2 \r\n 1984          270           16.1          15.55        -1.55          0 \r\n 1984          271           12.775        17.45         4.35          0 \r\n 1984          272           13.4          13.15         3.825         0.8 \r\n 1984          273           16.65         17.1         -1.05          0 \r\n 1984          274           16.5          19.075        1.55          0 \r\n 1984          275           17.575        19.55         3.825         0 \r\n 1984          276           15.05         22.175        5.9           0 \r\n 1984          277           15.15         21.65         8.875         0 \r\n 1984          278           9.649         23.45         8.2           0 \r\n 1984          279           6.475         21.6          10.375        3.025 \r\n 1984          280           1.299         21.475        12.35         0 \r\n 1984          281           4.475         21.425        15.675        13.651 \r\n 1984          282           5.451         21.1          13.925        0 \r\n 1984          283           4.425         20.625        12.075        0 \r\n 1984          284           7.625         20.9          13.725        2.625 \r\n 1984          285           1.6           20.525        16.275        13.176 \r\n 1984          286           7.024         22.825        16.325        5.275 \r\n 1984          287           6.349         23.875        14.625        0 \r\n 1984          288           4.675         22.325        15.575        3.75 \r\n 1984          289           2.875         21.35         10.05         23.501 \r\n 1984          290           1.025         21.525        5.275         14.651 \r\n 1984          291           14.275        19.85         1.625         3.5 \r\n 1984          292           1.25          15.625        6.5           10.126 \r\n 1984          293           8.001         18.475        4.45          0 \r\n 1984          294           11.874        15.275        2.075         0 \r\n 1984          295           7.601         11.8          2.975         0 \r\n 1984          296           8.725         11.7          0.425         0 \r\n 1984          297           13.051        11.575       -1.55          0 \r\n 1984          298           12.9          14.625       -0.025         0 \r\n 1984          299           1.1           10.875        4.8           9.251 \r\n 1984          300           13.025        17.125        4.95          0 \r\n 1984          301           2.475         21.85         15.2          5.175 \r\n 1984          302           7.224         16.5         -0.75          0 \r\n 1984          303           10.801        13.875       -1.45          0 \r\n 1984          304           11            9.025         1.875         0 \r\n 1984          305           1.1           11.45        -2.7           7.9 \r\n 1984          306           11            15.4         -4.25          30.102 \r\n 1984          307           8.425         3.625        -6.275         0 \r\n 1984          308           9.3           11.25        -2.375         0 \r\n 1984          309           11.626        11.5          1.95          0 \r\n 1984          310           9.2           6.625        -3.95          0 \r\n 1984          311           12.2          13.5         -1.5           0 \r\n 1984          312           6.226         13.1          4.55          0 \r\n 1984          313           9.225         16.575        3.325         3.575 \r\n 1984          314           0.85          17.075        6.15          17.176 \r\n 1984          315           2.725         12.85        -1.975         4.25 \r\n 1984          316           7.275         2.325        -7.15          0 \r\n 1984          317           8.2           6.225        -5.125         0 \r\n 1984          318           8.725         11.6         -0.925         0 \r\n 1984          319           3.425         13.3          5.975         0 \r\n 1984          320           3.95          12.15        -2.325         0 \r\n 1984          321           10.625        6.45         -5.175         0 \r\n 1984          322           4.025         4.6          -1.1           0 \r\n 1984          323           10.15         4.125        -4.075         0 \r\n 1984          324           9.35          1.4          -5.325         0 \r\n 1984          325           9.225         2.65         -9.15          0 \r\n 1984          326           9.475         5.5          -6.25          0 \r\n 1984          327           4.726         6.725        -2.45          0 \r\n 1984          328           8.425         7.375        -1.5           0 \r\n 1984          329           7.375         6.175        -0.125         0 \r\n 1984          330           5.9           7.675         1.225         0 \r\n 1984          331           4.85          14.425        2.375         1.175 \r\n 1984          332           2.425         9.55         -1.175         5.425 \r\n 1984          333           4.7           3.825        -4.475         0 \r\n 1984          334           3.5           6.775        -0.7           0.7 \r\n 1984          335           3             4.4          -1.65          0.95 \r\n 1984          336           4.376         3.95         -4.75          0 \r\n 1984          337           2.6           1.75         -6.75          2.175 \r\n 1984          338           6.776        -5.7          -15.225        0 \r\n 1984          339           6.525        -3.425        -12.175        0 \r\n 1984          340           3.725         2.2          -10.025        0 \r\n 1984          341           5.175        -8.325        -21.275        0 \r\n 1984          342           7.275         7.05         -10.025        0 \r\n 1984          343           7.875         7.35         -3.075         0 \r\n 1984          344           3.15          6             1.825         0 \r\n 1984          345           6.55          5.6          -2.125         0 \r\n 1984          346           4.2           7.075         0.65          0 \r\n 1984          347           3.9           6.7          -6             0 \r\n 1984          348           5.4          -0.45         -9.725         0 \r\n 1984          349           5.375        -0.9          -7             11.326 \r\n 1984          350           2.35          3.35         -10.275        1.975 \r\n 1984          351           2.55          10.375       -1.925         5.55 \r\n 1984          352           5.75         -1.15         -8.25          0 \r\n 1984          353           7.2          -3.675        -13.425        0 \r\n 1984          354           8.775        -1.825        -9.7           0 \r\n 1984          355           7.85          2.55         -9.475         0 \r\n 1984          356           1.825         2.825        -4.45          16.051 \r\n 1984          357           5.025        -0.2          -16.525        0 \r\n 1984          358           4.375        -2.675        -10.075        0 \r\n 1984          359           3.525        -7.125        -18.25         1.225 \r\n 1984          360           4.45         -3.5          -19.9          0 \r\n 1984          361           1.475         1.55         -10.35         4.575 \r\n 1984          362           1.125         5.1          -2.1           0 \r\n 1984          363           2.15          16.875        4.025         1 \r\n 1984          364           5.9           10.625       -10.5          0 \r\n 1984          365           7.95         -3.9          -14.025        0 \r\n 1984          366           2.65         -6.65         -12.05         0 \r\n 1985          1             4.725        -7.375        -13.3          2.625 \r\n 1985          2             5.15         -6.9          -17.5          0 \r\n 1985          3             5.975        -5.1          -15.35         0 \r\n 1985          4             8.6           3.375        -9.7           0 \r\n 1985          5             8.85          3.9          -3.85          0 \r\n 1985          6             3.65          6.75         -2.875         0 \r\n 1985          7             9.175         2.925        -8.825         0 \r\n 1985          8             7.4          -1.4          -13.95         0 \r\n 1985          9             4.75         -4.95         -10.25         0 \r\n 1985          10            3.375        -2.825        -8.475         2.575 \r\n 1985          11            5.775        -4.45         -13.8          1.4 \r\n 1985          12            5.6          -4.875        -16            0 \r\n 1985          13            9.525         4.325        -10.7          0 \r\n 1985          14            8.625         1.475        -13.375        0 \r\n 1985          15            5.875        -6.7          -16.375        0 \r\n 1985          16            4.375        -2.475        -10.825        0.775 \r\n 1985          17            4.75         -2.1          -10.475        1.7 \r\n 1985          18            7.425        -0.075        -15.625        1.5 \r\n 1985          19            8.2          -15.675       -30.35         0 \r\n 1985          20            6.676        -18.95        -32.025        0 \r\n 1985          21            10.3         -7.55         -20.775        0 \r\n 1985          22            10.45        -5.9          -12.925        0 \r\n 1985          23            8.075        -1.65         -11.925        0 \r\n 1985          24            8.375        -1.05         -6.325         0 \r\n 1985          25            9.575        -0.4          -20.675        0 \r\n 1985          26            7.625        -1.6          -19.8          0 \r\n 1985          27            9            -2.625        -9.45          0 \r\n 1985          28            11.1         -9.425        -16.775        0 \r\n 1985          29            3.4          -4.7          -11.9          5.1 \r\n 1985          30            5.35         -5.425        -21.975        0 \r\n 1985          31            7.25         -16.95        -32.825        0 \r\n 1985          32            10.85        -16.275       -26.95         0 \r\n 1985          33            12.1         -13.2         -29.55         0 \r\n 1985          34            12.65        -12.725       -22.775        0 \r\n 1985          35            7.675        -14.125       -21.525        1.575 \r\n 1985          36            6.7          -7.9          -17.7          0.7 \r\n 1985          37            12.125       -9.6          -18.85         0 \r\n 1985          38            13.8         -10.175       -21.175        0 \r\n 1985          39            11.55        -7.675        -17.725        0 \r\n 1985          40            3.075        -4.175        -13.875        0 \r\n 1985          41            7.325        -2.875        -7.225         1.25 \r\n 1985          42            9.025        -5.05         -7.9           3.2 \r\n 1985          43            13.775       -7.175        -18.775        0 \r\n 1985          44            10.5         -3.525        -16.975        0 \r\n 1985          45            14.3         -8.55         -17.725        0 \r\n 1985          46            11.5         -11.525       -26.225        0 \r\n 1985          47            9.8           1.675        -11.55         0 \r\n 1985          48            15.05         1.8          -9.925         0 \r\n 1985          49            12.551        0.725        -5.125         0 \r\n 1985          50            12.775        4.2          -13.225        0 \r\n 1985          51            9.85          9.1          -3.125         0 \r\n 1985          52            3.475         6.55          3.85          9.126 \r\n 1985          53            6.375         9.775        -0.5           0 \r\n 1985          54            3.75          4.825         2.4           8.651 \r\n 1985          55            6.6           4.875        -1.125         4.525 \r\n 1985          56            7.375         10.7         -0.55          0 \r\n 1985          57            10.475        5.15         -3.9           0 \r\n 1985          58            13.901        4.65         -7.625         0 \r\n 1985          59            17.175        12.15         0.2           0 \r\n 1985          60            17.275        9.35          0.375         0 \r\n 1985          61            8.45          2.25         -4.55          0.8 \r\n 1985          62            2.225         0.65         -2.425         13.125 \r\n 1985          63            5.025         4.025        -6.425         12.525 \r\n 1985          64            11.551       -2.95         -11.075        0 \r\n 1985          65            10.876        1.65         -10.925        0 \r\n 1985          66            11.775        9.4           0.375         0 \r\n 1985          67            17.7          10.2         -1.875         0 \r\n 1985          68            19.35         12.25        -1.85          0 \r\n 1985          69            15.95         16.475        1.05          0 \r\n 1985          70            4.65          10.35         3.25          1.8 \r\n 1985          71            14.725        8.9          -3.35          0 \r\n 1985          72            14.85         7.7           0.2           1.85 \r\n 1985          73            13.55         6.9          -0.875         0 \r\n 1985          74            20.3          11.075       -2.125         0 \r\n 1985          75            19.725        8.9          -1.375         0 \r\n 1985          76            20            9.7          -1             0 \r\n 1985          77            19.7          13.6         -2.05          0 \r\n 1985          78            20.675        13.525        1.125         0 \r\n 1985          79            21.5          12.675       -0.975         0 \r\n 1985          80            20.926        12.825       -2.9           0 \r\n 1985          81            20.325        13.625       -1.35          0 \r\n 1985          82            5.025         7.6           1.6           8.35 \r\n 1985          83            5.775         7.8           0.1           0.9 \r\n 1985          84            5.325         10.55        -2.7           0 \r\n 1985          85            17.976        20            1.95          0 \r\n 1985          86            14.376        16            8.375         3.875 \r\n 1985          87            7.925         16.575        3.8           2.675 \r\n 1985          88            11.15         11.05         1.8           0 \r\n 1985          89            9.949         5.775        -2.575         4.25 \r\n 1985          90            4             1            -3.45          8.725 \r\n 1985          91            7.175         6.45         -7.575         0 \r\n 1985          92            13.476        17           -0.675         0 \r\n 1985          93            20.6          16.125        1.35          0 \r\n 1985          94            4.274         11            4.15          8.676 \r\n 1985          95            10.674        6.825        -0.95          0 \r\n 1985          96            16.175        10.075       -1.975         0 \r\n 1985          97            19.851        9.6          -1.425         0 \r\n 1985          98            18.101        5.95         -3.875         0.3 \r\n 1985          99            24.075        12.75        -2.7           0 \r\n 1985          100           23.1          20.25         0.7           0 \r\n 1985          101           22.726        21.7          4.55          0 \r\n 1985          102           22.226        23.6          8.5           0 \r\n 1985          103           8.701         18.3          11.85         0 \r\n 1985          104           8.075         16.675        2.825         0 \r\n 1985          105           24.95         21.925        2.85          0 \r\n 1985          106           21.202        19.45         7.625         0 \r\n 1985          107           24.25         26.975        6.7           0 \r\n 1985          108           25.35         27.475        13.875        0 \r\n 1985          109           24.4          27.3          17.375        0 \r\n 1985          110           23.224        26.275        15.9          0.45 \r\n 1985          111           22.15         24.475        16.7          7.776 \r\n 1985          112           6.775         23.575        15.95         11.276 \r\n 1985          113           10.7          21.775        15.575        11.151 \r\n 1985          114           19.476        20.2          6.6           1.65 \r\n 1985          115           5.999         16.35         6.25          6.076 \r\n 1985          116           12.226        19.875        7.95          3.625 \r\n 1985          117           11.474        18.825        7.8           0.3 \r\n 1985          118           25.9          21.975        7.325         0 \r\n 1985          119           26.6          24.325        8.3           0 \r\n 1985          120           14.074        24.675        13.85         0 \r\n 1985          121           21.874        22.7          11.025        0 \r\n 1985          122           26.075        23.375        5.425         0 \r\n 1985          123           24.351        24.925        8.15          0 \r\n 1985          124           24.076        25.65         10.15         0 \r\n 1985          125           5.899         23.55         13.95         8.825 \r\n 1985          126           28.7          23.425        9.2           0 \r\n 1985          127           29.15         24.75         9.25          0 \r\n 1985          128           27.1          27.375        9.3           0 \r\n 1985          129           27.425        27.875        11.625        0 \r\n 1985          130           18.449        27.725        14.4          0 \r\n 1985          131           8.275         26.4          15.8          5.325 \r\n 1985          132           18.928        23.95         13.65         2.7 \r\n 1985          133           11.423        20.9          7.45          0 \r\n 1985          134           16.551        25.575        13.675        10.876 \r\n 1985          135           5.3           20.65         11.225        2.35 \r\n 1985          136           4             20.1          10.6          1.55 \r\n 1985          137           29.425        22.4          6.85          0 \r\n 1985          138           28.05         26.3          9.575         0 \r\n 1985          139           26.6          27.525        12.25         2.175 \r\n 1985          140           29.15         22.5          10.525        2.35 \r\n 1985          141           31.45         23.1          6.525         0 \r\n 1985          142           30.65         25.4          8.025         0 \r\n 1985          143           11.176        23.3          12.475        0 \r\n 1985          144           25.049        27.325        13.075        0 \r\n 1985          145           27.45         29            14.275        0 \r\n 1985          146           21.152        29.6          15.35         0 \r\n 1985          147           21.623        24.875        11.25         0 \r\n 1985          148           28.775        24.125        11.5          0 \r\n 1985          149           21.926        25.75         10.2          0 \r\n 1985          150           25.601        28.575        14.75         5.275 \r\n 1985          151           22.501        24.8          10.95         6.175 \r\n 1985          152           19.175        27.35         10.35         0 \r\n 1985          153           20.7          22.075        6.925         0 \r\n 1985          154           23.325        21.975        5.95          0 \r\n 1985          155           6.775         21.875        10.2          0 \r\n 1985          156           28.749        25.15         10.375        0 \r\n 1985          157           26.45         27.2          10.175        0 \r\n 1985          158           25.501        28.825        12.875        0 \r\n 1985          159           28.451        32.45         18.3          0 \r\n 1985          160           23.199        29.175        13.65         0 \r\n 1985          161           6.85          24.05         12.975        9.925 \r\n 1985          162           5.6           20.575        11            16.576 \r\n 1985          163           27.125        21.25         9.725         18.501 \r\n 1985          164           27.75         24.25         8.8           0 \r\n 1985          165           8.05          23.5          11.5          8.6 \r\n 1985          166           25.402        26.35         15.225        2.425 \r\n 1985          167           18.975        27.2          13.05         2.45 \r\n 1985          168           26.702        25.825        12.4          0 \r\n 1985          169           20.151        21.7          13.425        3.95 \r\n 1985          170           22.225        23.925        10            0 \r\n 1985          171           28.901        27.85         11.1          0 \r\n 1985          172           13.65         26.725        17.9          0 \r\n 1985          173           26.75         27.625        11.525        0 \r\n 1985          174           26.424        28            14.75         0 \r\n 1985          175           30.275        28.575        12.55         0 \r\n 1985          176           25.225        29.85         19.575        3.525 \r\n 1985          177           18.201        29.5          20.7          26.201 \r\n 1985          178           7.925         27.05         17.8          11.875 \r\n 1985          179           23.425        25.45         11.85         0 \r\n 1985          180           25.325        26            12            0 \r\n 1985          181           25.8          26.85         14.4          0 \r\n 1985          182           27.2          27.725        14.8          0 \r\n 1985          183           27.2          28.275        17.575        0 \r\n 1985          184           28.925        29.4          13.925        0 \r\n 1985          185           27.775        31.6          17.45         0 \r\n 1985          186           25.35         26.1          13.925        0 \r\n 1985          187           27.55         30.7          15.1          0 \r\n 1985          188           27.7          32.6          17.45         0 \r\n 1985          189           16.074        35.475        19.5          0 \r\n 1985          190           26.175        32.25         19.85         1.85 \r\n 1985          191           23.229        29.2          13.3          0 \r\n 1985          192           28.75         29.875        17.15         0 \r\n 1985          193           12.522        28.15         15.95         4.4 \r\n 1985          194           14.825        32.325        21.075        1.75 \r\n 1985          195           24.776        31.7          20.975        0 \r\n 1985          196           29.726        27.7          15            0 \r\n 1985          197           28.975        28.475        13            0 \r\n 1985          198           24.15         29.825        16.975        0 \r\n 1985          199           14.7          32.125        16.85         0 \r\n 1985          200           18.248        29.6          21.35         10.8 \r\n 1985          201           16.574        28.95         14.9          0 \r\n 1985          202           25.225        30.65         16.2          0 \r\n 1985          203           30.45         26.75         12.5          0 \r\n 1985          204           29.15         27.4          12.3          0 \r\n 1985          205           10.75         28.925        16.225        7.9 \r\n 1985          206           26.325        27.525        20.6          8.725 \r\n 1985          207           28.525        28.95         13.75         0 \r\n 1985          208           26.4          30.375        16.1          0 \r\n 1985          209           23.3          30.675        17            0 \r\n 1985          210           23.425        27.4          16.55         0 \r\n 1985          211           4.075         24.425        15.05         6.6 \r\n 1985          212           7.423         22.7          14.95         1.65 \r\n 1985          213           25.725        25.25         12.275        0 \r\n 1985          214           26.95         25.725        12.05         0 \r\n 1985          215           16.697        26.975        14.975        0 \r\n 1985          216           5.049         27.15         15.775        0 \r\n 1985          217           25.501        30.25         19.25         0 \r\n 1985          218           24.651        30.7          18            1.75 \r\n 1985          219           27.35         29.15         15.875        0 \r\n 1985          220           23.45         29.65         16.225        2.15 \r\n 1985          221           20.676        31.4          16.9          6.35 \r\n 1985          222           24.3          27.15         12.75         11.501 \r\n 1985          223           25.475        25.65         10.6          0 \r\n 1985          224           13.027        30.55         16.65         7.275 \r\n 1985          225           19.875        28.2          15.25         1.2 \r\n 1985          226           9.174         24.75         16.8          0 \r\n 1985          227           24.051        25.55         13.425        0 \r\n 1985          228           15.801        26.75         13.1          3.7 \r\n 1985          229           14.775        27.6          17.775        1.45 \r\n 1985          230           25.625        23.525        10.6          0 \r\n 1985          231           18.227        23.775        9.725         0 \r\n 1985          232           17.1          24.5          8.55          0 \r\n 1985          233           20.1          26.65         11.5          0 \r\n 1985          234           4.825         25.325        15.175        10.451 \r\n 1985          235           10.874        26            15.95         1.65 \r\n 1985          236           16.726        23.05         13.625        0 \r\n 1985          237           13.123        24.075        12.65         0 \r\n 1985          238           16.449        26.375        13.325        0 \r\n 1985          239           16.55         29.225        12.95         0 \r\n 1985          240           10.302        29.1          16.625        0.8 \r\n 1985          241           9.526         25.65         18.5          47.302 \r\n 1985          242           8.049         25.95         15.75         0 \r\n 1985          243           12.201        29.9          13.55         0 \r\n 1985          244           16.928        28.775        20.575        0 \r\n 1985          245           15.401        29.4          15.4          0 \r\n 1985          246           16.376        29.925        20.55         1.8 \r\n 1985          247           11.625        29.45         19.825        19.225 \r\n 1985          248           11.625        28.775        21.4          35.125 \r\n 1985          249           22.875        32.075        22.3          0 \r\n 1985          250           21.926        31.575        23.25         0 \r\n 1985          251           16.501        29.075        21.7          5.55 \r\n 1985          252           5.65          25.825        17.45         3.2 \r\n 1985          253           13.474        21.75         15.15         0 \r\n 1985          254           15.151        23.575        11.575        0 \r\n 1985          255           11.674        21.375        9.725         3.1 \r\n 1985          256           18.2          19            8.125         0 \r\n 1985          257           19.95         22            8.325         0 \r\n 1985          258           20.725        22.725        7.05          0 \r\n 1985          259           12.101        26.675        11.875        2 \r\n 1985          260           13.651        28.25         17.9          0 \r\n 1985          261           19.85         29.9          19.5          0 \r\n 1985          262           16.876        30.95         21.15         0 \r\n 1985          263           12.075        28.025        11.8          8.125 \r\n 1985          264           4.949         15.15         8.5           3.1 \r\n 1985          265           7.476         21.425        11.4          3.85 \r\n 1985          266           4.9           19.025        7.85          37.425 \r\n 1985          267           15.826        13.825        2.5           0 \r\n 1985          268           4.625         15.575        4.95          11.175 \r\n 1985          269           18.725        16.025        5.3           0 \r\n 1985          270           18.9          20.775        3.5           0 \r\n 1985          271           6.151         15.7          7.625         10.575 \r\n 1985          272           3.5           9.075         2.45          25.575 \r\n 1985          273           5.65          9.775         2             3.5 \r\n 1985          274           12.55         13           -0.7           0 \r\n 1985          275           17.85         18.225        2.3           0 \r\n 1985          276           9.075         18.925        7.325         0 \r\n 1985          277           5.25          15.075        7.175         11.051 \r\n 1985          278           9.4           12.2          4.7           0.975 \r\n 1985          279           16.375        18.5          1.5           0 \r\n 1985          280           7.275         17.325        6.05          1.55 \r\n 1985          281           9.7           16.75         11.15         0 \r\n 1985          282           7.576         10.725        1.775         1.7 \r\n 1985          283           13.499        9.575         1.8           1.125 \r\n 1985          284           8.499         14.1          3.45          0 \r\n 1985          285           5.575         18.975        10.425        13.026 \r\n 1985          286           10.25         19.2          5.9           0 \r\n 1985          287           6.474         17.775        5.575         0 \r\n 1985          288           11.052        19.125        2.85          0 \r\n 1985          289           12.025        16.225        1.3           2.275 \r\n 1985          290           4.35          18.75         8.725         4.475 \r\n 1985          291           3.425         17.35         11.175        17.551 \r\n 1985          292           9.525         14.725        8.15          0 \r\n 1985          293           5.999         17.3          9.175         0 \r\n 1985          294           4.825         18.225        8.925         0 \r\n 1985          295           7.375         20.55         11.5          0 \r\n 1985          296           8.425         21.175        14.925        1.075 \r\n 1985          297           13.9          18.9          9.125         0 \r\n 1985          298           11.475        20.275        4.825         1.175 \r\n 1985          299           9.2           22.35         8.7           0 \r\n 1985          300           12.975        17.825        3.475         0 \r\n 1985          301           10.325        15.95         3             0 \r\n 1985          302           8.65          14.8          4.85          0 \r\n 1985          303           10.85         14.55         4.2           0.975 \r\n 1985          304           6.525         12.95         2.325         0 \r\n 1985          305           6.825         11.5          7.525         13.351 \r\n 1985          306           13.15         11.1          0.3           0 \r\n 1985          307           11.425        11.675        1.2           0 \r\n 1985          308           12.35         10.9         -1.7           0 \r\n 1985          309           11.85         13.45         0.35          0 \r\n 1985          310           3.85          7.5           3.85          2.9 \r\n 1985          311           10.025        11.625       -0.55          0 \r\n 1985          312           4.55          6.9          -3.25          3.775 \r\n 1985          313           1.7          -0.25         -2.85          7.125 \r\n 1985          314           2.85          0.1          -5.8           3.475 \r\n 1985          315           2.1           0.875        -10.6          0 \r\n 1985          316           3.225         2.075        -3.85          0 \r\n 1985          317           4.2           2.15         -1.25          0 \r\n 1985          318           5.876         1.875        -5.175         0 \r\n 1985          319           2.7           3.125        -3.5           1.25 \r\n 1985          320           2.575         3.525        -0.625         2.625 \r\n 1985          321           8.825         8.6          -4.5           0 \r\n 1985          322           4.425         17.925        6.125         5.7 \r\n 1985          323           0.3           16.2         -6.35          4.925 \r\n 1985          324           7.625        -5.05         -11.125        0 \r\n 1985          325           6.225        -3.4          -8.075         0 \r\n 1985          326           6.975        -1.225        -10.75         2.225 \r\n 1985          327           6.8          -4.975        -14.025        0 \r\n 1985          328           6.425        -7.975        -19.95         0 \r\n 1985          329           3.175        -0.225        -13.175        0 \r\n 1985          330           5.25         -1.95         -8.825         0 \r\n 1985          331           6.5          -9.65         -21.325        0 \r\n 1985          332           6.649        -7.85         -18.525        0 \r\n 1985          333           4.875        -12.75        -19.6          1.35 \r\n 1985          334           3.475        -6.6          -16.875        1.275 \r\n 1985          335           2.4          -7.025        -13.775        27.576 \r\n 1985          336           4.575        -12.925       -19.975        1.025 \r\n 1985          337           4.45         -10.825       -23.675        0 \r\n 1985          338           3.75         -1.95         -13.45         1.325 \r\n 1985          339           8.475        -3.6          -14.7          0 \r\n 1985          340           3.95         -5.8          -19.55         0 \r\n 1985          341           7.85          1.125        -10.225        0 \r\n 1985          342           6.125        -0.925        -7.25          0 \r\n 1985          343           1.45         -4.15         -14.6          1.425 \r\n 1985          344           2.275        -3.15         -10.7          1.725 \r\n 1985          345           7.326        -6.025        -13.125        0 \r\n 1985          346           5.401        -10.875       -18.85         0 \r\n 1985          347           4.9          -14.125       -29.85         0 \r\n 1985          348           3.55         -8.225        -30.2          0 \r\n 1985          349           5.3          -3.85         -19.625        0 \r\n 1985          350           3.95         -4.375        -18.825        0 \r\n 1985          351           3.926        -14.125       -23.75         0.625 \r\n 1985          352           1.25         -14.9         -28.95         0 \r\n 1985          353           4.175        -14           -24.225        0 \r\n 1985          354           4.375        -12.15        -17.85         0 \r\n 1985          355           3.4          -9.725        -21.175        0 \r\n 1985          356           5.399         2.75         -11.775        0 \r\n 1985          357           5.15          2.75         -4.575         0.75 \r\n 1985          358           5.875        -5.625        -24.125        0 \r\n 1985          359           5            -16.125       -24.175        0 \r\n 1985          360           4.125         2.875        -19.45         1.025 \r\n 1985          361           5.25         -4.925        -13.975        0 \r\n 1985          362           5.2          -6.325        -20.2          0 \r\n 1985          363           6.225        -7.55         -18.05         0 \r\n 1985          364           4             1.35         -17.725        0 \r\n 1985          365           6.975        -0.275        -14.6          0 \r\n 1986          1             4.875        -3.825        -15.4          0.875 \r\n 1986          2             3.6          -0.35         -7.1           7.2 \r\n 1986          3             4.275        -1            -13.2          0.7 \r\n 1986          4             3.7          -4.75         -11.525        4.3 \r\n 1986          5             4.5          -3.625        -17.625        0 \r\n 1986          6             5.025        -8.375        -24.35         0 \r\n 1986          7             3.725        -17.15        -29.175        0 \r\n 1986          8             4.9          -5.125        -23.625        0 \r\n 1986          9             8.05          2.75         -6.6           0 \r\n 1986          10            8.175         2.025        -2.775         0 \r\n 1986          11            8.025         3.9          -2.425         0 \r\n 1986          12            7.325         4.325        -8.775         0 \r\n 1986          13            4.775        -4.925        -17.075        0 \r\n 1986          14            6.75         -2.375        -9.05          0 \r\n 1986          15            6.15          3.15         -11.5          0 \r\n 1986          16            8.8           3.475        -0.95          0 \r\n 1986          17            5.025         6.575        -0.95          0 \r\n 1986          18            6.725         6.25         -0.7           0 \r\n 1986          19            5.125         2.2          -2.55          0 \r\n 1986          20            7.426         6.6          -3.45          0 \r\n 1986          21            5.2           3.35          0.05          0 \r\n 1986          22            6.65         -0.275        -14.875        0 \r\n 1986          23            9.55          4.775        -9.25          0 \r\n 1986          24            4.326         3.2          -2.05          2.775 \r\n 1986          25            5.825         1.5          -7.875         0 \r\n 1986          26            8.75         -4.275        -20.05         0 \r\n 1986          27            6.1          -16.15        -27.875        0 \r\n 1986          28            5.35         -4.325        -15.825        0 \r\n 1986          29            7.15         -4.675        -13.425        0 \r\n 1986          30            4.975        -3.5          -15.3          0 \r\n 1986          31            5.1          -2.2          -6.675         0 \r\n 1986          32            11.8          0.7          -6.875         0 \r\n 1986          33            8.5           2.025        -5.925         0 \r\n 1986          34            5.399         1.575        -4.2           0 \r\n 1986          35            3.875         2.125        -0.2           21.302 \r\n 1986          36            6.15          1.125        -1.775         6.101 \r\n 1986          37            6.325        -2.225        -9.375         0.875 \r\n 1986          38            5.449        -5            -9.825         7.401 \r\n 1986          39            8            -6.925        -13.5          0 \r\n 1986          40            8.7          -12.45        -23.225        0 \r\n 1986          41            7.799        -13.05        -22.6          0 \r\n 1986          42            8.95         -12.9         -21.525        0 \r\n 1986          43            8.95         -13.325       -21.35         0 \r\n 1986          44            2.899        -4.9          -21.525        0 \r\n 1986          45            7.45         -4.675        -16.175        0 \r\n 1986          46            4.4          -2.85         -20.475        0 \r\n 1986          47            6.225        -3.2          -10.725        0 \r\n 1986          48            9.951        -0.25         -11.05         0 \r\n 1986          49            7.175         0.375        -6.15          0 \r\n 1986          50            13.701        0.725        -6.325         0 \r\n 1986          51            8.25         -2            -11.85         1.05 \r\n 1986          52            14.3         -5.375        -18.85         0 \r\n 1986          53            15.3         -2.1          -9.875         0 \r\n 1986          54            6.1          -1.325        -11.775        0 \r\n 1986          55            8.675        -1.45         -10.225        0 \r\n 1986          56            7.1           2.25         -8.425         0 \r\n 1986          57            7.749         5.275         0.3           0 \r\n 1986          58            12.099        1.375        -6.875         0 \r\n 1986          59            15.326       -2.2          -16.675        0 \r\n 1986          60            6.025         5.1          -8.625         0 \r\n 1986          61            5.825         4.1          -2.025         0 \r\n 1986          62            5.275         3.075        -2.4           0 \r\n 1986          63            8.55          5.4          -2.65          0 \r\n 1986          64            3.8           3.45         -2.675         0 \r\n 1986          65            7             1.525        -6.225         0 \r\n 1986          66            9.825        -5.875        -18            0 \r\n 1986          67            7.175         5.575        -10.775        0 \r\n 1986          68            4.751         14.875        2.025         0 \r\n 1986          69            4             12.375       -2             0 \r\n 1986          70            10.099        3.025        -9.775         0 \r\n 1986          71            2.425         3.525        -0.225         6.975 \r\n 1986          72            3.851         5.4           0.325         4.775 \r\n 1986          73            4.825         5.05         -2.075         0 \r\n 1986          74            13.376        7.55         -1.35          0 \r\n 1986          75            11.625        8.575        -1.925         1.4 \r\n 1986          76            8.4           12.4          0.3           3.2 \r\n 1986          77            2.95          12.5          2.925         27.175 \r\n 1986          78            11.375        8.725        -5.725         4.175 \r\n 1986          79            19.626       -1.1          -12.125        0 \r\n 1986          80            19.376        7.5          -6.45          0 \r\n 1986          81            14.6          14.775       -0.375         0 \r\n 1986          82            21.35         12.525        1.2           0 \r\n 1986          83            12.325        13.025       -5.475         0 \r\n 1986          84            13.026        19            9.55          0 \r\n 1986          85            13.452        12.95         1.975         0 \r\n 1986          86            18.4          14.225       -1.85          0 \r\n 1986          87            19.25         24.45         5.625         0 \r\n 1986          88            20.174        25.15         8.825         0 \r\n 1986          89            19.525        20.6          6.425         0 \r\n 1986          90            22.85         24.875        11.45         0 \r\n 1986          91            23.175        19.8          6             9.126 \r\n 1986          92            19.2          15.275        1.75          1.425 \r\n 1986          93            5.2           15.025        5.225         13.527 \r\n 1986          94            4.45          15.95         4.4           4.551 \r\n 1986          95            6.925         15.275        9.375         6.251 \r\n 1986          96            8.501         17.275        3.775         0 \r\n 1986          97            23.9          21.175        6.4           0 \r\n 1986          98            20.15         12.65         1.8           0 \r\n 1986          99            23.925        14.45        -1.225         0 \r\n 1986          100           24.5          17.475       -0.125         0 \r\n 1986          101           24.8          21.725        3.5           0 \r\n 1986          102           13.425        16.65         8.55          0 \r\n 1986          103           14.6          17.15         4.75          0 \r\n 1986          104           5.126         14            1.55          13.852 \r\n 1986          105           5.449         12.025       -1.325         0 \r\n 1986          106           24.725        16.925       -0.45          0 \r\n 1986          107           14.725        14.575        3.25          2.7 \r\n 1986          108           3.95          19.175        6.325         3.1 \r\n 1986          109           18.776        17.975        5.525         0 \r\n 1986          110           17.525        14.325        5.025         0 \r\n 1986          111           12.474        9.725        -0.275         0 \r\n 1986          112           27            14.1         -3.575         0 \r\n 1986          113           26.225        20.625        1.325         0 \r\n 1986          114           21.676        24.2          8.75          1.95 \r\n 1986          115           18.826        23.925        12.175        3.625 \r\n 1986          116           16.576        26.7          14.9          5.451 \r\n 1986          117           12.551        23.175        15.75         9.526 \r\n 1986          118           7.5           20.875        8.525         13.076 \r\n 1986          119           16.325        25.25         6.05          0 \r\n 1986          120           11.049        23.225        15.525        3.05 \r\n 1986          121           22.152        15.775        5.325         0 \r\n 1986          122           25.85         16.2          0.65          0 \r\n 1986          123           24.275        19.85         3.475         0 \r\n 1986          124           24.45         25.425        9.775         0 \r\n 1986          125           22.925        25.8          13.875        2.525 \r\n 1986          126           25.324        23.675        11.075        0 \r\n 1986          127           23.3          23.275        7.225         0 \r\n 1986          128           20.627        25.25         11.925        8.425 \r\n 1986          129           10            25.025        12.2          17.076 \r\n 1986          130           3.6           20.725        14            12.676 \r\n 1986          131           9.751         26.025        14.025        1.95 \r\n 1986          132           23.325        25.15         13.85         4.825 \r\n 1986          133           9.026         21.675        15.6          13.701 \r\n 1986          134           28.275        24.575        8.825         0 \r\n 1986          135           5.399         20.75         13.05         16.976 \r\n 1986          136           8.375         23.7          9.8           0 \r\n 1986          137           5.598         17.3          8.975         0 \r\n 1986          138           26.699        18.3          5.65          0 \r\n 1986          139           27.049        19.725        6.55          0 \r\n 1986          140           29.575        20.425        5.475         0 \r\n 1986          141           31.8          21.375        5.475         0 \r\n 1986          142           30.325        21.675        7.125         0 \r\n 1986          143           14.299        21.675        7.5           0 \r\n 1986          144           21.251        22.35         12.7          9.325 \r\n 1986          145           8.926         20.475        12.05         10.751 \r\n 1986          146           5.248         20.05         12.6          36.277 \r\n 1986          147           6.823         21.675        13.75         1.85 \r\n 1986          148           15.023        23.85         14.25         0 \r\n 1986          149           15.599        25.55         15.7          2.825 \r\n 1986          150           25.775        25.65         15.225        0 \r\n 1986          151           26.75         29.375        15.65         0 \r\n 1986          152           28.4          28.15         16.375        0 \r\n 1986          153           32            21.8          8.25          0 \r\n 1986          154           31.225        26.65         7.9           0 \r\n 1986          155           12.7          27.4          17.525        15.576 \r\n 1986          156           8.049         25.375        15.85         0 \r\n 1986          157           11.575        27.125        14.5          0 \r\n 1986          158           23.301        28.625        18.225        0 \r\n 1986          159           30.275        26.35         13.05         0 \r\n 1986          160           24.024        25.975        13.125        0 \r\n 1986          161           16.775        27.975        18.65         10.175 \r\n 1986          162           8.951         25.65         19.025        6.775 \r\n 1986          163           25.6          25.725        9.9           0 \r\n 1986          164           18.176        26.5          12.4          1.575 \r\n 1986          165           11.649        27.1          13.625        0 \r\n 1986          166           19.148        28.05         13.625        0 \r\n 1986          167           31.375        25.675        19.375        1.975 \r\n 1986          168           29.2          26.95         10.25         0 \r\n 1986          169           23.275        29.525        17.15         11.775 \r\n 1986          170           29.575        32.05         20.25         1.85 \r\n 1986          171           28.65         31            20.4          11.775 \r\n 1986          172           10.873        29.675        21            11.675 \r\n 1986          173           21.224        28.075        21.375        5.375 \r\n 1986          174           29.375        28.825        14.35         0 \r\n 1986          175           30.275        25.325        11.825        0 \r\n 1986          176           30.625        27.625        12.275        0 \r\n 1986          177           18.025        30.275        19.15         0 \r\n 1986          178           22.024        29.2          22.05         2.925 \r\n 1986          179           14.424        29.7          17.125        1.95 \r\n 1986          180           11.5          27.875        18.4          1.65 \r\n 1986          181           5.851         24.775        17.35         11.775 \r\n 1986          182           8.5           24.9          14.625        1.8 \r\n 1986          183           26.675        26.5          14.65         0 \r\n 1986          184           30.6          28.625        14.15         0 \r\n 1986          185           26.901        31.15         20.75         0 \r\n 1986          186           22.626        30.475        21.85         8.15 \r\n 1986          187           7.948         28.55         19.525        17.05 \r\n 1986          188           17.322        29.875        14.525        0 \r\n 1986          189           15.25         30            19.375        21 \r\n 1986          190           17.498        28.9          19.8          14.95 \r\n 1986          191           7.575         27.375        18.8          16.65 \r\n 1986          192           23.001        29.1          18.6          3.15 \r\n 1986          193           17.101        29.2          17.95         3.55 \r\n 1986          194           29.976        29.175        15.95         0 \r\n 1986          195           17.1          29.125        18.1          0 \r\n 1986          196           12.026        30.75         21.975        1.25 \r\n 1986          197           26.175        32.95         21.55         0 \r\n 1986          198           29.65         33.3          22.25         0 \r\n 1986          199           28.85         32.925        22.525        0 \r\n 1986          200           21.626        31.025        23.45         0 \r\n 1986          201           26.175        27.65         15.975        0 \r\n 1986          202           25.726        28.6          14.525        0 \r\n 1986          203           26.899        29.875        16.425        0 \r\n 1986          204           24.625        30.425        18.3          0 \r\n 1986          205           23.602        30.6          21.3          12.3 \r\n 1986          206           23.975        28.9          21.475        26.5 \r\n 1986          207           23.851        29.2          15.85         0 \r\n 1986          208           16.626        29.35         18.675        7.65 \r\n 1986          209           23.85         29.6          19.35         3.05 \r\n 1986          210           26.951        29.85         18.675        0 \r\n 1986          211           19.6          30.9          20.25         0 \r\n 1986          212           23.8          28.125        19.475        0 \r\n 1986          213           20.199        26.925        14            0 \r\n 1986          214           24.576        23.55         14.65         1.05 \r\n 1986          215           25.25         25.875        11.275        0 \r\n 1986          216           20.274        27.475        13.175        0 \r\n 1986          217           8.573         23.775        16.15         2.7 \r\n 1986          218           19.649        25.3          16.025        0 \r\n 1986          219           17.375        23.275        13.95         0 \r\n 1986          220           25.351        27.2          14.425        0 \r\n 1986          221           9.924         25.85         15.25         0 \r\n 1986          222           21.401        22.375        15.925        0.95 \r\n 1986          223           27.55         23.6          8.775         0 \r\n 1986          224           15.924        23.1          13.3          1.15 \r\n 1986          225           3.825         24.9          15.175        16.126 \r\n 1986          226           19.175        27.325        18.825        20.626 \r\n 1986          227           25.2          29.3          15.9          0 \r\n 1986          228           23.424        30.125        18.925        0 \r\n 1986          229           22.825        28.15         18.15         0 \r\n 1986          230           21.65         27.775        14.15         0 \r\n 1986          231           23            27.525        14.4          0 \r\n 1986          232           8.851         28            14.425        0 \r\n 1986          233           24.1          24.95         14.6          0 \r\n 1986          234           10.502        29.45         15.125        0 \r\n 1986          235           21.275        26.4          13.025        0 \r\n 1986          236           10.225        25.15         12.7          1.1 \r\n 1986          237           19.076        30.175        16.4          10.551 \r\n 1986          238           13.45         27.075        19.475        26.576 \r\n 1986          239           19.776        20.3          8.6           0 \r\n 1986          240           18.875        21.075        5.15          0 \r\n 1986          241           17.175        22.225        7.525         0 \r\n 1986          242           16.375        26.225        11.875        0 \r\n 1986          243           23.225        27.925        12.275        0 \r\n 1986          244           22.9          28.6          13.075        0 \r\n 1986          245           17.15         27.375        13.925        0 \r\n 1986          246           10.325        25.85         17.45         10.975 \r\n 1986          247           23.8          24.325        15.45         0 \r\n 1986          248           19.9          23.05         9.875         0 \r\n 1986          249           11.898        18.475        8             0 \r\n 1986          250           20.25         20.15         4             0 \r\n 1986          251           23.725        22            6.1           0 \r\n 1986          252           3.65          21.725        10.45         7.625 \r\n 1986          253           3.525         26.35         18.725        16.525 \r\n 1986          254           4.2           24.575        13.425        4.325 \r\n 1986          255           21.575        23.5          9.375         0 \r\n 1986          256           13.974        20.9          12.45         4.85 \r\n 1986          257           4.826         22.825        9.875         4.15 \r\n 1986          258           7.076         20.5          12.725        0 \r\n 1986          259           12.675        19.55         7.4           0 \r\n 1986          260           3.125         23.975        10.475        0 \r\n 1986          261           7.976         24.825        15.675        2.35 \r\n 1986          262           8.476         25.875        16.175        7.95 \r\n 1986          263           5.4           25.05         17.275        9.825 \r\n 1986          264           11.352        27            19.15         12.425 \r\n 1986          265           4.625         24.325        17.775        0 \r\n 1986          266           9.75          19.9          11.875        3.6 \r\n 1986          267           2.774         22.675        11.4          10.375 \r\n 1986          268           18.375        27.525        20            8.75 \r\n 1986          269           18.025        27.125        20.9          4.9 \r\n 1986          270           15.8          27.175        18.15         5.05 \r\n 1986          271           7.175         25.95         11.525        7 \r\n 1986          272           9.099         24.375        15.45         8.55 \r\n 1986          273           10.95         20.9          10.675        0 \r\n 1986          274           15.949        22.9          10.1          0 \r\n 1986          275           7.1           21.5          12.75         3.775 \r\n 1986          276           4.05          18            14.375        11.676 \r\n 1986          277           10.1          14.75         5.85          13.876 \r\n 1986          278           12.625        18.325        6.85          0 \r\n 1986          279           16.7          16.4          1.9           0 \r\n 1986          280           16.326        23.5          8.2           0 \r\n 1986          281           8.776         20.15         11.05         0 \r\n 1986          282           16.975        15.025        6.025         0 \r\n 1986          283           12.325        16.725        2.05          0 \r\n 1986          284           1.25          17.4          9.925         43.427 \r\n 1986          285           4.15          14.5          2.6           8.5 \r\n 1986          286           5.425         7.3           0.1           0 \r\n 1986          287           10.575        11.4         -0.5           0 \r\n 1986          288           15.8          13.35        -0.425         0 \r\n 1986          289           15            19.675        3.05          0 \r\n 1986          290           9.625         15.4          3.625         0 \r\n 1986          291           15            15.675        1.325         0 \r\n 1986          292           14.05         20.675        3.95          0 \r\n 1986          293           13.7          22.6          9.625         0 \r\n 1986          294           13.325        23.125        11.175        0 \r\n 1986          295           3.25          20.35         12            2.425 \r\n 1986          296           4.149         18.9          10.525        0 \r\n 1986          297           3.15          16.9          11.275        3.75 \r\n 1986          298           3.95          13.7          8.925         1.6 \r\n 1986          299           6.699         12.825        6.825         4.125 \r\n 1986          300           13.325        18.875        3.725         0 \r\n 1986          301           11.225        20.35         8.8           0 \r\n 1986          302           12.425        15.3          2.5           0 \r\n 1986          303           8.3           15.85         1.975         1.025 \r\n 1986          304           0.675         16.75         6.625         2.4 \r\n 1986          305           6.449         11.025       -0.975         4.6 \r\n 1986          306           12.475        8.225        -4.85          0 \r\n 1986          307           5.55          10.4         -0.675         0 \r\n 1986          308           11.7          6.875        -4.525         0 \r\n 1986          309           10.3          10.475       -2.45          0 \r\n 1986          310           10.2          11.425        0.425         0 \r\n 1986          311           4.675         14.4          3.65          0 \r\n 1986          312           10.926        14.525       -0.45          4 \r\n 1986          313           11            3.225        -7.5           0 \r\n 1986          314           4.125        -0.55         -5.5           1.425 \r\n 1986          315           6.475        -1.825        -12.5          0 \r\n 1986          316           7.425        -3.875        -12.6          0 \r\n 1986          317           8.275        -4.975        -15.4          0 \r\n 1986          318           7.324         1.95         -10.3          0 \r\n 1986          319           8.326         3.8          -6.775         0 \r\n 1986          320           10.175        5.2          -7.05          0 \r\n 1986          321           5.575         2.675        -3.6           1.15 \r\n 1986          322           2.9          -0.8          -9.8           14.376 \r\n 1986          323           0.975         1.425        -14.9          5.425 \r\n 1986          324           2.275         0.3          -8.075         5.9 \r\n 1986          325           6.525         1.75         -15.55         0 \r\n 1986          326           8.875         3.275        -1.15          0 \r\n 1986          327           4.525         1.75         -8.825         0 \r\n 1986          328           8.475         3.225        -15.15         0 \r\n 1986          329           7.35          5.125        -3.2           0 \r\n 1986          330           9.675         3.35         -4.5           0 \r\n 1986          331           8.95          5.15         -6.95          0 \r\n 1986          332           8.575         7.25         -1.9           0 \r\n 1986          333           6.375         4.3          -2.4           0 \r\n 1986          334           3.425         2.6          -0.825         0 \r\n 1986          335           4.775         1.7          -2.4           2.975 \r\n 1986          336           5.25          2.4          -2.65          8.375 \r\n 1986          337           6.575         1            -4.05          0 \r\n 1986          338           6.7          -2.225        -7.5           0 \r\n 1986          339           8.2           0.325        -9.5           0 \r\n 1986          340           5.75          1            -4.625         0 \r\n 1986          341           4.875         1            -3.975         4.575 \r\n 1986          342           4.351         0.55         -5             3.85 \r\n 1986          343           4.6          -2.5          -10.55         0 \r\n 1986          344           5.375        -8.25         -16.375        0 \r\n 1986          345           4.875        -0.35         -14.275        0 \r\n 1986          346           5.125        -8.8          -15.35         0 \r\n 1986          347           5.225        -9.375        -17.925        0 \r\n 1986          348           8.125         1.775        -10            0 \r\n 1986          349           8.225         0.55         -7.2           0 \r\n 1986          350           7.4           1.025        -5.2           0 \r\n 1986          351           5.975         2.325        -5.1           0 \r\n 1986          352           6.3           1.3          -5.475         0 \r\n 1986          353           6.9           0.2          -6.625         0 \r\n 1986          354           7.2           1.375        -6             0 \r\n 1986          355           6.825        -0.95         -8.45          0 \r\n 1986          356           5.85          1.9          -6             0 \r\n 1986          357           5.875         0.5          -7.175         0 \r\n 1986          358           5.4           0.45         -7             0 \r\n 1986          359           4.775         1.25         -6.075         0 \r\n 1986          360           5.725         0.55         -9.65          0 \r\n 1986          361           5.05          1.325        -8.075         0 \r\n 1986          362           2.425         1.7          -4.9           0 \r\n 1986          363           3.125         1.65         -4.1           0 \r\n 1986          364           7.9           1.55         -5             0 \r\n 1986          365           7.1           4.65         -4.175         0 \r\n 1987          1             5             0.075        -7.85          0 \r\n 1987          2             4.7           1.125        -8.45          0 \r\n 1987          3             4.225         1.125        -6.65          0 \r\n 1987          4             4.975         3.1          -4.85          0 \r\n 1987          5             4.75          1.975        -4.175         0 \r\n 1987          6             3.925         2.575        -1.375         1.4 \r\n 1987          7             5.15          0.45         -5.625         0 \r\n 1987          8             8.675         0.925        -7.95          0 \r\n 1987          9             4.95          1.575        -5.95          3.9 \r\n 1987          10            4.2          -0.5          -7.45          2.825 \r\n 1987          11            4.925         2.925        -9.425         0 \r\n 1987          12            8.25          7.5          -2.475         0 \r\n 1987          13            8.1           9.3          -0.55          0 \r\n 1987          14            7.925         5.625        -1             0 \r\n 1987          15            6.35          1.35         -9.575         0 \r\n 1987          16            8.149        -4.85         -14.45         0 \r\n 1987          17            5.025        -1.725        -9.3           0 \r\n 1987          18            9.3          -1.725        -11.275        0 \r\n 1987          19            5.275        -0.825        -11.875        0 \r\n 1987          20            6.8          -2.475        -13.6          0 \r\n 1987          21            4.55          1.35         -8.575         0 \r\n 1987          22            7.025         0.2          -12.475        0 \r\n 1987          23            7.4          -12.575       -22.15         0 \r\n 1987          24            6.7          -9.85         -19.5          0 \r\n 1987          25            6.075        -7.475        -15.725        0 \r\n 1987          26            6.15         -3.55         -13.125        0 \r\n 1987          27            8.051         1.075        -9.375         1.3 \r\n 1987          28            7.825         0.775        -9.5           0 \r\n 1987          29            2.7           1.725        -4.3           2 \r\n 1987          30            4.975         1            -4.025         0 \r\n 1987          31            6.825         6.225        -10            0 \r\n 1987          32            7.6           8.85         -2.9           0 \r\n 1987          33            8             11.775        0.8           0 \r\n 1987          34            8.9           3.6          -6.175         0 \r\n 1987          35            8             4.9          -3.25          0 \r\n 1987          36            6.424         4.05         -1.275         0 \r\n 1987          37            9.7           8.1          -3.25          0 \r\n 1987          38            9.8           12.225       -1.725         0 \r\n 1987          39            11.775        6.35         -5.45          0 \r\n 1987          40            10.525        5.075        -7.15          0 \r\n 1987          41            10.775        7.35         -2.6           0 \r\n 1987          42            12.75         10.775       -1.925         0 \r\n 1987          43            8.225         6.475        -1.8           0 \r\n 1987          44            7.725         10.325       -2.375         0 \r\n 1987          45            5.125         5.7          -3.9           0 \r\n 1987          46            10.425       -0.25         -7.175         0 \r\n 1987          47            10.7          0.075        -9.7           0 \r\n 1987          48            10            2.425        -9.65          0 \r\n 1987          49            13.95         3.85         -8.875         0 \r\n 1987          50            12.55         4.95         -4.35          0 \r\n 1987          51            12.525        7.3          -4.275         0 \r\n 1987          52            9.875         6.975        -3.25          0.4 \r\n 1987          53            7.525         4.375        -3.725         0 \r\n 1987          54            14.575        6.75         -4             0 \r\n 1987          55            11.6          6.85         -1.275         0 \r\n 1987          56            12.05         8.75         -2.35          0 \r\n 1987          57            15            10.125       -2.85          0 \r\n 1987          58            8.275         8.6          -1.75          2.45 \r\n 1987          59            3.8           5.175        -1.175         5.101 \r\n 1987          60            4.65          2.45         -1.45          15.625 \r\n 1987          61            9.025         8.725        -3.975         0 \r\n 1987          62            12.375        8.425        -4.45          0 \r\n 1987          63            10.05         12.825       -0.7           0 \r\n 1987          64            15.676        14.95         0.925         0 \r\n 1987          65            16.475        16            1.075         0 \r\n 1987          66            18.25         20.2          5             0 \r\n 1987          67            13.201        13.85         3.225         0 \r\n 1987          68            13.475        6.475        -5.95          0 \r\n 1987          69            15.725        1.7          -6.975         0 \r\n 1987          70            14.026        5.575        -2.825         0 \r\n 1987          71            10.249        6.375        -0.95          0 \r\n 1987          72            10.201        12.1         -0.15          0 \r\n 1987          73            8.151         9.45          4.1           0 \r\n 1987          74            6.249         4.85         -1.675         8 \r\n 1987          75            11.174        6.325        -2.475         0 \r\n 1987          76            10.574        8.5          -1.225         0 \r\n 1987          77            4.975         8.325         0.55          9.025 \r\n 1987          78            9.875         13.35         1.85          0 \r\n 1987          79            16.3          14.75         2.075         0 \r\n 1987          80            14.501        14.55         1.7           0 \r\n 1987          81            17.6          17.625        2.225         0 \r\n 1987          82            14.576        18.05         8             6.475 \r\n 1987          83            8.374         14.05         6.875         8.175 \r\n 1987          84            8.051         11.35         4.95          8.15 \r\n 1987          85            8.525         10.35         0.9           0 \r\n 1987          86            15.975        13.675       -0.75          0 \r\n 1987          87            13.65         9.525         2.05          3.3 \r\n 1987          88            10.599        0.9          -4.65          8.25 \r\n 1987          89            16.85        -2.375        -14.85         0 \r\n 1987          90            19.126        5            -8.525         0 \r\n 1987          91            10.024        6.85          0.575         0 \r\n 1987          92            20.075        5.025        -5.775         0 \r\n 1987          93            21            8.95         -4.4           0 \r\n 1987          94            21.475        13.075       -2.575         0 \r\n 1987          95            23.2          17.025       -0.05          0 \r\n 1987          96            21.375        19.025       -0.2           0 \r\n 1987          97            23.6          22.7          3.5           0 \r\n 1987          98            22.925        22.975        5.15          0 \r\n 1987          99            22.3          24.25         6.6           0 \r\n 1987          100           20.25         17.8          6             1 \r\n 1987          101           7.874         14.875        3.625         3.275 \r\n 1987          102           22.775        19.675        2.225         0 \r\n 1987          103           5.7           13.8          5.925         4.951 \r\n 1987          104           1.925         14.2          7.1           6.151 \r\n 1987          105           6.05          15.275        6.525         4.876 \r\n 1987          106           21.9          23.2          4.6           0 \r\n 1987          107           22.675        26.675        9.375         0 \r\n 1987          108           24.475        27.025        10.85         0 \r\n 1987          109           22.375        28.1          12            0 \r\n 1987          110           19.901        29.475        15.525        0.675 \r\n 1987          111           4.474         22.1          6.825         11.501 \r\n 1987          112           4.675         11.325        3.9           4.125 \r\n 1987          113           25.35         22.25         4             2.7 \r\n 1987          114           26.5          21.3          5.65          0 \r\n 1987          115           26.425        25.575        6.825         0 \r\n 1987          116           22.799        26.675        9.975         0 \r\n 1987          117           26.825        21.575        9.175         0 \r\n 1987          118           25.05         23.3          4.6           0 \r\n 1987          119           26.425        25.85         11.275        0 \r\n 1987          120           27.45         20.075        4.3           0 \r\n 1987          121           21.227        25.675        6.35          0 \r\n 1987          122           13.55         24.075        12.7          3.375 \r\n 1987          123           14.373        21.95         8.575         0 \r\n 1987          124           25.9          20.775        3.25          0 \r\n 1987          125           23.975        20.45         3.4           0 \r\n 1987          126           27            26.725        7.8           0 \r\n 1987          127           26.025        25.8          7.95          0 \r\n 1987          128           28.9          26.8          9.025         0 \r\n 1987          129           27.975        28.825        11.35         0 \r\n 1987          130           24.474        29.9          13.825        1.65 \r\n 1987          131           26.499        27.15         15.85         0 \r\n 1987          132           29.525        24.1          6.85          0 \r\n 1987          133           25.526        27.425        7.65          0 \r\n 1987          134           28.225        25.925        17.75         2.775 \r\n 1987          135           29.5          26.025        8.85          0 \r\n 1987          136           30.625        28.3          11.1          0 \r\n 1987          137           27.099        30.9          12.8          0 \r\n 1987          138           18.2          27.525        16.45         6.775 \r\n 1987          139           16.576        29.325        17.55         4.7 \r\n 1987          140           20.15         27.2          17.825        6.85 \r\n 1987          141           19.301        25.575        18.85         3.1 \r\n 1987          142           15.275        22.05         6.8           0 \r\n 1987          143           23.1          21.15         5.5           0 \r\n 1987          144           9.374         23.45         9.675         0 \r\n 1987          145           5.5           20.2          11.275        8.75 \r\n 1987          146           11.598        26.925        16.725        11.026 \r\n 1987          147           19.275        26.4          18.65         3.325 \r\n 1987          148           16.5          27.95         16.575        2.05 \r\n 1987          149           15.376        27.5          18.825        7.55 \r\n 1987          150           25.126        26.3          16.85         0 \r\n 1987          151           26.451        27.55         16.925        0 \r\n 1987          152           26.326        29.675        17.775        0 \r\n 1987          153           19.399        27.5          14.8          0 \r\n 1987          154           27.6          24.25         9.425         0 \r\n 1987          155           30.625        26.65         7.3           0 \r\n 1987          156           29.7          30.525        12.775        0 \r\n 1987          157           28.95         30.775        14.425        0 \r\n 1987          158           27.725        32.825        17.375        0 \r\n 1987          159           26.549        30.775        19.225        0 \r\n 1987          160           21.173        27.225        12.25         0 \r\n 1987          161           8.925         27.1          12.05         0 \r\n 1987          162           13.125        27.025        17.425        6.975 \r\n 1987          163           29.375        33.55         18.25         0 \r\n 1987          164           29.35         35.4          18.8          0 \r\n 1987          165           31.55         36.175        19.55         0 \r\n 1987          166           30.9          32.925        16.8          0 \r\n 1987          167           24.625        32.8          16.65         0 \r\n 1987          168           14.852        29.7          20.55         10.2 \r\n 1987          169           25.925        31.875        20.15         6.575 \r\n 1987          170           16.201        30.2          19.725        5.275 \r\n 1987          171           7.474         26            20.5          6.775 \r\n 1987          172           20.7          28.35         18.75         0 \r\n 1987          173           24.625        28.475        18.775        6.175 \r\n 1987          174           19.101        30.175        18.075        5.075 \r\n 1987          175           27.725        31.275        18.25         2.95 \r\n 1987          176           22.55         28.025        18.8          9.575 \r\n 1987          177           30.101        25.85         12.4          0 \r\n 1987          178           30.8          26.825        9.725         0 \r\n 1987          179           27.401        29.2          15.725        1.85 \r\n 1987          180           23.351        27.45         18.625        3.45 \r\n 1987          181           27.374        27.5          13.05         0 \r\n 1987          182           27.175        29.275        13.475        0 \r\n 1987          183           26.65         29.925        15.275        0 \r\n 1987          184           28.7          29.6          15.4          0 \r\n 1987          185           26.8          31.25         17.15         0 \r\n 1987          186           21.749        30.05         18.85         0 \r\n 1987          187           18.925        29.825        19.85         0 \r\n 1987          188           18.524        33.275        18.2          2.15 \r\n 1987          189           19.322        29.5          20.55         9.625 \r\n 1987          190           21.226        29.075        20.075        4.375 \r\n 1987          191           15.873        30.1          21.25         0.95 \r\n 1987          192           21.251        29.9          22.25         19.8 \r\n 1987          193           15.776        28.35         21.375        26.35 \r\n 1987          194           23.85         25.1          13.9          3.3 \r\n 1987          195           19.1          24.65         11.975        9.2 \r\n 1987          196           24.65         27.175        14.375        6.85 \r\n 1987          197           28.65         30.2          13.075        0 \r\n 1987          198           23.85         30.95         20.925        0 \r\n 1987          199           14.199        28.8          19.925        7.9 \r\n 1987          200           20.975        34.2          21.6          5.35 \r\n 1987          201           25.3          30.925        22            0 \r\n 1987          202           23.3          32            21.825        0 \r\n 1987          203           22.75         32.7          19.7          0 \r\n 1987          204           24.875        33.375        21.05         4.05 \r\n 1987          205           18.577        31.25         22.55         6.9 \r\n 1987          206           26.551        32.25         19.65         0 \r\n 1987          207           24.126        32.35         22.6          0 \r\n 1987          208           23.176        32.075        21.9          0 \r\n 1987          209           23.45         32.5          22.025        0 \r\n 1987          210           24.55         33.525        22.45         0 \r\n 1987          211           24.076        32.6          23.3          0 \r\n 1987          212           25.701        33.75         23.4          0 \r\n 1987          213           25.252        33.625        22.325        0 \r\n 1987          214           26.9          31.825        23.95         8.1 \r\n 1987          215           8.424         30.4          20.425        13.001 \r\n 1987          216           23.026        26.975        15.3          0 \r\n 1987          217           24.575        28.35         13.775        0 \r\n 1987          218           19.601        30.05         16.725        0 \r\n 1987          219           8.799         27.9          18.275        4 \r\n 1987          220           7.002         28.65         19.5          39.077 \r\n 1987          221           25.725        27.7          16.875        0 \r\n 1987          222           22.65         28.9          17.175        0 \r\n 1987          223           20.65         29.175        16.525        0 \r\n 1987          224           5.675         28.9          17.5          7.275 \r\n 1987          225           4.7           26.55         19.75         15.176 \r\n 1987          226           10.476        28.025        21.55         7.5 \r\n 1987          227           22.8          30.8          22.85         6.25 \r\n 1987          228           13.649        29.925        22.5          8.6 \r\n 1987          229           18.449        27.7          15.35         0 \r\n 1987          230           21.9          25.25         17.525        9.651 \r\n 1987          231           12.499        26.3          12            0 \r\n 1987          232           20.35         27.05         14.375        0 \r\n 1987          233           15.626        29.95         21.05         31.927 \r\n 1987          234           9.373         27.85         13.125        0 \r\n 1987          235           23.9          22.425        8.7           0 \r\n 1987          236           13.448        20.725        8.85          0 \r\n 1987          237           1.75          19.075        11.3          11.876 \r\n 1987          238           2.475         18.925        10.95         9.375 \r\n 1987          239           10.3          22.35         11.025        0 \r\n 1987          240           12.3          23.45         13.3          2.95 \r\n 1987          241           22.225        26.15         11.45         3.45 \r\n 1987          242           18.8          23.2          15.675        0 \r\n 1987          243           23.375        21.5          8.6           0 \r\n 1987          244           23.025        26.95         9.6           0 \r\n 1987          245           23.775        23.975        10            0 \r\n 1987          246           24.05         24.425        9.55          0 \r\n 1987          247           21.35         28.975        11.725        0 \r\n 1987          248           15.225        29            16.75         0 \r\n 1987          249           11.75         24.775        17.575        10.475 \r\n 1987          250           16.375        24.925        15.65         3.25 \r\n 1987          251           17.875        23.6          13.5          0 \r\n 1987          252           15            25.525        9.75          0 \r\n 1987          253           15.275        25.2          12.925        0 \r\n 1987          254           14.675        23.7          12.45         2.2 \r\n 1987          255           14.351        21.9          9             0 \r\n 1987          256           18.724        22.5          9.425         11.35 \r\n 1987          257           10.176        23.9          9.325         10.75 \r\n 1987          258           6.099         26.525        15.55         3.75 \r\n 1987          259           8.776         23.1          17.55         7.825 \r\n 1987          260           9.526         23.9          14.6          1.5 \r\n 1987          261           12.425        21.15         13            2 \r\n 1987          262           7.875         18.7          6.55          4.975 \r\n 1987          263           8.8           18.2          8.075         1.85 \r\n 1987          264           10.926        19.675        7.425         0 \r\n 1987          265           10.749        21.925        8.225         0 \r\n 1987          266           20.1          25.025        8.325         0 \r\n 1987          267           19.85         24.65         9.85          0 \r\n 1987          268           19.4          24.125        7.9           0 \r\n 1987          269           19.1          27.825        10.95         0 \r\n 1987          270           17.675        28.6          16.4          0 \r\n 1987          271           9.6           23.475        15.775        0 \r\n 1987          272           13.55         22.225        10.3          0 \r\n 1987          273           16.225        19.475        7.275         0 \r\n 1987          274           17.076        25.75         7             0 \r\n 1987          275           16.325        21.525        2.525         0 \r\n 1987          276           18.275        16.75        -0.05          0 \r\n 1987          277           18.35         23.55         4.1           0 \r\n 1987          278           9.701         19.5          11.225        0 \r\n 1987          279           11.576        14.85         4.025         0 \r\n 1987          280           17.25         13.125        0.125         0 \r\n 1987          281           14.25         17.025        2.1           0 \r\n 1987          282           10.601        13.175        4.175         0 \r\n 1987          283           10.55         9.975        -1.525         0 \r\n 1987          284           16.475        12.4         -2.9           0 \r\n 1987          285           16.05         18.675       -1.05          0 \r\n 1987          286           14.25         21.15         3.775         0 \r\n 1987          287           4             16.45         8.7           0.525 \r\n 1987          288           8.776         19.5          8.35          2.25 \r\n 1987          289           5.674         17.675        10.775        5.575 \r\n 1987          290           12.55         15.45         5.375         0.925 \r\n 1987          291           11.726        16.025        3.75          0 \r\n 1987          292           10.625        13.675        1.225         0 \r\n 1987          293           10.275        8.175         0.15          0 \r\n 1987          294           13.051        9.775        -3.325         0 \r\n 1987          295           13.551        13.275        1.15          0 \r\n 1987          296           9.326         12.95        -2.3           0 \r\n 1987          297           9.801         10.625        0             0 \r\n 1987          298           11.65         11.3         -1.1           0 \r\n 1987          299           4.325         13.275        3.2           0 \r\n 1987          300           11.2          11.2          0.075         0 \r\n 1987          301           9.775         12.6         -0.975         0 \r\n 1987          302           11.625        16.1          0.975         0 \r\n 1987          303           12.275        20.425        4.05          0 \r\n 1987          304           4.849         14.475        2.875         3.25 \r\n 1987          305           4.4           17.775        9.075         4.8 \r\n 1987          306           5.025         20.25         14            0 \r\n 1987          307           7.251         21.625        13.375        0 \r\n 1987          308           11.951        17.325        9.6           0 \r\n 1987          309           11.85         10.65        -0.55          0 \r\n 1987          310           6.374         13.525        2.25          3.15 \r\n 1987          311           3.175         11.9          3.95          4.475 \r\n 1987          312           3.9           11.275        3.7           1.15 \r\n 1987          313           12.1          6.475        -5.95          0 \r\n 1987          314           11.575        6.1          -4.9           0 \r\n 1987          315           11.3          10.5         -3.275         0 \r\n 1987          316           9.675         14.975       -1.725         0 \r\n 1987          317           5.875         11            4.275         0 \r\n 1987          318           9.525         13.3          0.8           0 \r\n 1987          319           4.85          16            4.7           0 \r\n 1987          320           3.475         12.95         9.4           9.526 \r\n 1987          321           3.3           11.525        1.725         12.051 \r\n 1987          322           9.926         7.45         -5.175         1.725 \r\n 1987          323           9.65          8.025        -0.475         0 \r\n 1987          324           10.25         1.95         -7             0 \r\n 1987          325           9.775         6.55         -5.05          0 \r\n 1987          326           7.175         11.15        -1.375         0 \r\n 1987          327           3.025         7.775        -1.125         0 \r\n 1987          328           4.7           4.675        -2.55          0 \r\n 1987          329           4.2           6.05         -2.575         0 \r\n 1987          330           2.875         5.25         -2.2           0 \r\n 1987          331           2.8           4.475        -3.2           1.7 \r\n 1987          332           1.95          1.775        -0.775         23.752 \r\n 1987          333           2.8           1.525        -1.475         1.825 \r\n 1987          334           2.925        -0.525        -5.425         0 \r\n 1987          335           4            -1.7          -8.15          0 \r\n 1987          336           3.75         -0.2          -9.45          0 \r\n 1987          337           4.35          0.65         -4.775         1.975 \r\n 1987          338           6.276        -1.125        -14.975        0 \r\n 1987          339           6.401         1.9          -10.5          0 \r\n 1987          340           2.475         2.825        -1.3           0 \r\n 1987          341           2.35          4.75          1.125         0 \r\n 1987          342           2.075         5.15          0.725         2.875 \r\n 1987          343           5.251         7.95          1.5           8.375 \r\n 1987          344           8.125         8.45         -2.175         0 \r\n 1987          345           8.65          10.025        1.25          0 \r\n 1987          346           3.175         5.4          -1.85          0 \r\n 1987          347           5.601         3.55         -1.925         0 \r\n 1987          348           2.775         0.05         -3.325         0 \r\n 1987          349           2.5          -1.975        -5.675         5.7 \r\n 1987          350           7.875        -3.8          -7.75          0 \r\n 1987          351           7.4          -2.225        -8.975         0 \r\n 1987          352           5.425         3.075        -6.15          0 \r\n 1987          353           2.65          2.8          -0.95          5.95 \r\n 1987          354           8.15          2.375        -6.7           2.125 \r\n 1987          355           3.65          2.5          -8.4           0 \r\n 1987          356           3.975         3.85         -3.95          0 \r\n 1987          357           2.45          2.6          -2.725         0 \r\n 1987          358           2.7           1.175        -2.95          1.175 \r\n 1987          359           3.35         -3            -10.375        0 \r\n 1987          360           7.925        -2.95         -14.375        1.2 \r\n 1987          361           2.85         -2.725        -11.85         8.55 \r\n 1987          362           3.899        -3.475        -6.15          9.175 \r\n 1987          363           2.425        -3.025        -11.7          0 \r\n 1987          364           4.75          0.8          -9.85          0 \r\n 1987          365           3.425         0.25         -13.15         0 \r\n 1988          1             4.5          -11.65        -25.325        0 \r\n 1988          2             8.875        -6.025        -20.275        0 \r\n 1988          3             6.975        -4.375        -14.575        0 \r\n 1988          4             5.575        -9.375        -22.075        0 \r\n 1988          5             5.2          -20.55        -29.95         0 \r\n 1988          6             5.15         -17.475       -30.15         0 \r\n 1988          7             3.024        -13.275       -27.05         0 \r\n 1988          8             6.725        -12.85        -17.65         0 \r\n 1988          9             6.1          -16.1         -27.725        0 \r\n 1988          10            8.025        -9.1          -25.1          0 \r\n 1988          11            4.525        -1.075        -9.175         0 \r\n 1988          12            4.776        -0.45         -10.3          0 \r\n 1988          13            5.45         -11.6         -26.925        0 \r\n 1988          14            5.825        -5.75         -21            0 \r\n 1988          15            8.451         1.425        -9.2           0 \r\n 1988          16            5.575         3.525        -0.025         0 \r\n 1988          17            5.725         3.25         -1.825         0 \r\n 1988          18            7.05          1.1          -3.725         1.225 \r\n 1988          19            3.975         0.7          -3.2           10.051 \r\n 1988          20            4.925        -0.525        -4.7           2.15 \r\n 1988          21            9.25         -5.3          -16.075        0 \r\n 1988          22            6.049        -0.95         -12.025        2.525 \r\n 1988          23            5.275        -0.125        -20.45         4.825 \r\n 1988          24            7.55          1.7          -18.375        1.6 \r\n 1988          25            8.15         -1.15         -20.675        0 \r\n 1988          26            7.575        -13.6         -26.7          0 \r\n 1988          27            8.225        -3.525        -20.875        0 \r\n 1988          28            7.851        -2.775        -13.275        0 \r\n 1988          29            0.6           4.2          -4             0 \r\n 1988          30            0.6           6.8           3.35          0 \r\n 1988          31            11.075        6.1          -9.675         0 \r\n 1988          32            5.774        -12.85        -18.525        0.525 \r\n 1988          33            10.8         -11.275       -23.975        0 \r\n 1988          34            4.6          -9.675        -13.875        0 \r\n 1988          35            9.575        -13.5         -20.075        0 \r\n 1988          36            10.975       -16.9         -22.9          0 \r\n 1988          37            9            -12.4         -24.1          0 \r\n 1988          38            13.125       -7.775        -14.25         0 \r\n 1988          39            5.824        -3.75         -17.075        3.75 \r\n 1988          40            9.975        -5.35         -17.8          0 \r\n 1988          41            5.299        -13.4         -17.375        3.2 \r\n 1988          42            8.7          -15.275       -28.8          0 \r\n 1988          43            9.525        -11.725       -27.6          0 \r\n 1988          44            9.15         -3.775        -18.2          0 \r\n 1988          45            8.025         0.05         -7.05          0 \r\n 1988          46            13.675       -7.225        -16.7          0 \r\n 1988          47            5.425         1.05         -13.425        4.625 \r\n 1988          48            6.475         2.725        -7.025         0 \r\n 1988          49            9.051         7.5          -4.6           0 \r\n 1988          50            7.6           6.2          -3.375         0 \r\n 1988          51            11.801        1.35         -15.525        0 \r\n 1988          52            6.575         4.8          -15.775        0 \r\n 1988          53            9.7           7.1           0.075         0 \r\n 1988          54            12.976       -1.125        -9.925         0 \r\n 1988          55            13.676       -3.4          -10.975        0 \r\n 1988          56            15.201        0.575        -14.4          0 \r\n 1988          57            15.001        12.125       -1.85          0 \r\n 1988          58            16.65         6.875        -4.525         0 \r\n 1988          59            14.15         8.4          -0.725         0 \r\n 1988          60            17.4          10.275       -2.225         0 \r\n 1988          61            13.2          13.15        -3.95          0 \r\n 1988          62            11.65         7.2          -7.1           0 \r\n 1988          63            15.925        2.4          -7.225         0 \r\n 1988          64            17.575        3.775        -7.4           0 \r\n 1988          65            17.9          7.425        -3.8           0 \r\n 1988          66            18.025        12.225       -2.95          0 \r\n 1988          67            11.275        10.6         -0.575         0 \r\n 1988          68            5.651         9.5           1             0 \r\n 1988          69            13.1          10.4         -2.6           0 \r\n 1988          70            16.301        12.125       -1.1           0 \r\n 1988          71            13.325        15           -1.725         0 \r\n 1988          72            4.775         10.175       -6.425         2.1 \r\n 1988          73            9.001        -4.925        -9.35          0.3 \r\n 1988          74            11.251       -1.5          -9.525         0 \r\n 1988          75            10.076        1            -8.625         0 \r\n 1988          76            10.375        4.8          -5.625         0 \r\n 1988          77            12.499        4.4          -2.1           0 \r\n 1988          78            17.675        4.95         -4             0 \r\n 1988          79            10.55         5.8          -4.025         0 \r\n 1988          80            18.276        5.625        -5.25          0 \r\n 1988          81            17.525        8.1          -4.725         0 \r\n 1988          82            20.1          19.825       -2.65          0 \r\n 1988          83            18.651        15.2         -0.225         0 \r\n 1988          84            3.3           17.55         3.95          14.525 \r\n 1988          85            18.925        15.25         1             0.825 \r\n 1988          86            14.901        8.525        -3.85          0 \r\n 1988          87            19.5          12.175       -4.85          0 \r\n 1988          88            4.125         14.825        6.225         10.725 \r\n 1988          89            14.949        6.4          -1.075         0.8 \r\n 1988          90            22.825        13.425       -2.25          0 \r\n 1988          91            22.001        14.575       -1.6           0 \r\n 1988          92            11.575        13.325        0.625         0 \r\n 1988          93            2.775         16.875        3.125         12.976 \r\n 1988          94            8.3           15.825        2.475         0 \r\n 1988          95            18.3          25.275        3.325         0 \r\n 1988          96            10.101        20.3          7.775         1.5 \r\n 1988          97            21.775        16.15         2.95          3.025 \r\n 1988          98            22.325        23.4          3.85          0 \r\n 1988          99            21.925        22.875        7.725         0 \r\n 1988          100           13.6          16.875        5.55          0 \r\n 1988          101           15.225        9.925         0.65          0 \r\n 1988          102           23.775        16.375        0.65          0 \r\n 1988          103           24.675        19.625        1.225         0 \r\n 1988          104           15.451        20.175        4.95          0 \r\n 1988          105           24.025        11.025       -2.775         0 \r\n 1988          106           25.675        12.625       -3.925         0 \r\n 1988          107           25.4          17.55         0.2           0 \r\n 1988          108           23.276        17.975        4.1           0 \r\n 1988          109           26.75         11.425       -4.65          0 \r\n 1988          110           27.5          14           -3.25          0 \r\n 1988          111           23.174        15.825        2.925         5.001 \r\n 1988          112           9.376         13.525       -0.4           2.975 \r\n 1988          113           1.975         9.975         0.575         6.576 \r\n 1988          114           7.65          11.025       -0.7           3.475 \r\n 1988          115           20            18.375        0.875         0 \r\n 1988          116           23.5          19.425        6.85          1.7 \r\n 1988          117           3.751         13.225        2.8           19.977 \r\n 1988          118           20.778        12.675        0.925         2.15 \r\n 1988          119           26.451        19.075        1.45          0 \r\n 1988          120           28.95         22.425        4.5           0 \r\n 1988          121           23.075        23.275        7             0 \r\n 1988          122           23.95         24.275        8.05          0 \r\n 1988          123           24.925        24.275        7.8           0 \r\n 1988          124           24.374        24.1          7.2           0 \r\n 1988          125           23.85         24.175        6.4           0 \r\n 1988          126           28.55         26.125        8.8           0 \r\n 1988          127           25.576        26.475        10.7          0 \r\n 1988          128           11.749        26.225        11.9          2.25 \r\n 1988          129           7.875         22.6          13.925        17.576 \r\n 1988          130           9.151         20.325        8.125         2.45 \r\n 1988          131           25.2          25.425        7.55          0 \r\n 1988          132           22.426        24.825        7.55          0 \r\n 1988          133           26.701        28.55         13.225        0 \r\n 1988          134           29.75         23.875        5.225         0 \r\n 1988          135           25.576        30.475        7.35          0 \r\n 1988          136           25.576        26.975        12.45         0 \r\n 1988          137           11.926        21.925        7.675         0 \r\n 1988          138           30.475        23.725        5.975         0 \r\n 1988          139           23.9          26.675        8.3           0 \r\n 1988          140           13.325        25.875        11.8          4.1 \r\n 1988          141           29            29.525        14.65         6.4 \r\n 1988          142           23.125        30.1          13.625        0 \r\n 1988          143           15.25         26.275        15.675        0.525 \r\n 1988          144           20.523        25.975        14.375        0 \r\n 1988          145           31.25         26.675        11.5          0 \r\n 1988          146           33.175        24.875        6.125         0 \r\n 1988          147           20.852        28.85         10            0.5 \r\n 1988          148           19.325        30.825        13.975        0.75 \r\n 1988          149           27.651        31.6          15.4          0 \r\n 1988          150           27.5          31.375        15.825        0 \r\n 1988          151           27.176        32.375        16.5          0 \r\n 1988          152           29.975        32.625        16.1          0 \r\n 1988          153           22.976        28.875        16            1.75 \r\n 1988          154           16.373        27.9          16.925        2.35 \r\n 1988          155           22.151        27.175        14.025        0 \r\n 1988          156           28.9          25.825        13.575        0 \r\n 1988          157           30.75         29.3          13.925        0 \r\n 1988          158           31.05         30.025        13.325        0 \r\n 1988          159           28.675        31.875        14.225        0 \r\n 1988          160           26.5          30.65         17.825        0 \r\n 1988          161           31.4          23.825        7.375         0 \r\n 1988          162           32.525        27.275        8.6           0 \r\n 1988          163           31.775        29.225        11.15         0 \r\n 1988          164           27.05         32.175        12.725        0 \r\n 1988          165           23.626        34.125        15.075        0 \r\n 1988          166           25.5          33.3          17.825        0 \r\n 1988          167           25.751        28.975        16.15         0 \r\n 1988          168           26.974        31.1          13.875        0 \r\n 1988          169           5.949         26.6          16.7          3.55 \r\n 1988          170           25.175        33.625        17.175        0 \r\n 1988          171           17.973        32.625        19.825        2.35 \r\n 1988          172           29.975        37.45         19.95         0 \r\n 1988          173           26.601        39.55         21.225        0 \r\n 1988          174           27.875        35.45         21.575        1.95 \r\n 1988          175           21.426        32.075        15.325        0 \r\n 1988          176           23.476        31.2          18.95         27.851 \r\n 1988          177           28.75         32.85         22.175        0 \r\n 1988          178           31.225        28.2          14.55         0 \r\n 1988          179           30.7          30.15         13.85         0 \r\n 1988          180           27.801        34.95         14.65         0 \r\n 1988          181           4.25          30.9          16.925        19.901 \r\n 1988          182           24.849        26.7          13.35         0 \r\n 1988          183           27.099        26.85         9.7           0 \r\n 1988          184           26.024        29.25         11.55         0 \r\n 1988          185           28.25         32.4          13.825        0 \r\n 1988          186           29.65         35.75         16.275        0 \r\n 1988          187           24.225        37.425        19.55         0 \r\n 1988          188           25.175        37.275        21.525        0 \r\n 1988          189           24.075        34.525        21.425        0 \r\n 1988          190           21.701        30.65         19.85         6.225 \r\n 1988          191           13.451        26.275        18.45         8.075 \r\n 1988          192           19.875        25.975        17.35         16.35 \r\n 1988          193           13.773        27.975        13.425        0 \r\n 1988          194           29.075        30.925        14.1          0 \r\n 1988          195           27.5          32.3          18.7          4.95 \r\n 1988          196           27.1          35.8          19.825        0 \r\n 1988          197           26.275        33.6          21.9          2.55 \r\n 1988          198           21.775        28.7          21.075        5.35 \r\n 1988          199           21.101        30.625        17.875        0 \r\n 1988          200           22.425        30.675        18.875        1.4 \r\n 1988          201           12.076        30.325        16.825        0 \r\n 1988          202           24            28.525        14.375        3.25 \r\n 1988          203           26.025        27.675        11.6          0 \r\n 1988          204           25.3          31.125        13.625        0 \r\n 1988          205           23.7          32.325        16.025        0 \r\n 1988          206           20.325        33.325        17.55         2 \r\n 1988          207           28.2          30.3          16.025        0 \r\n 1988          208           27.075        34.275        13.875        0 \r\n 1988          209           27.5          36.6          17.8          0 \r\n 1988          210           26.9          36.475        19.325        0 \r\n 1988          211           21.775        35.7          18.725        0 \r\n 1988          212           26.275        33.225        20.675        0 \r\n 1988          213           25.475        35.175        20.05         0 \r\n 1988          214           23.85         35.8          23.875        0 \r\n 1988          215           22            34.175        22            2.65 \r\n 1988          216           19.901        33.5          22.525        1.7 \r\n 1988          217           12.025        30.55         21.9          1.95 \r\n 1988          218           23.451        30.625        16.225        0 \r\n 1988          219           26.25         35.7          16.35         0 \r\n 1988          220           22.95         38.975        18.975        0 \r\n 1988          221           9.051         35.025        23.175        35.702 \r\n 1988          222           20.575        31.15         18.45         0 \r\n 1988          223           22.2          32.15         16.95         0 \r\n 1988          224           21.7          33.1          20.225        0 \r\n 1988          225           19.301        32.725        22.3          0 \r\n 1988          226           12.101        32.725        22.45         1.65 \r\n 1988          227           20.9          38.35         20.65         0 \r\n 1988          228           21.3          40.875        21.975        0 \r\n 1988          229           20.625        37.8          23.775        0 \r\n 1988          230           19.376        38.575        23.725        0 \r\n 1988          231           12.152        33.85         22.675        1.55 \r\n 1988          232           6.2           27.15         18.5          0 \r\n 1988          233           19.875        31.9          14.15         0 \r\n 1988          234           16.401        32.275        16.65         25.651 \r\n 1988          235           2.175         28.75         19.475        15.076 \r\n 1988          236           20.15         26.5          14.6          1.35 \r\n 1988          237           21.226        28.125        13.1          0 \r\n 1988          238           20.725        26.975        14.25         0 \r\n 1988          239           19.2          27.45         10.9          0 \r\n 1988          240           20.825        23.85         13.5          3.7 \r\n 1988          241           20.974        24.425        7.825         0 \r\n 1988          242           16.7          27.05         8.7           0 \r\n 1988          243           21.425        29.85         13.175        1.15 \r\n 1988          244           18.5          32.325        13.55         0 \r\n 1988          245           15.452        31.5          15.775        0 \r\n 1988          246           21.6          30.775        16.6          0.7 \r\n 1988          247           12.376        24.275        11.85         1.65 \r\n 1988          248           9.65          24.1          11.1          3.7 \r\n 1988          249           16.35         21.65         6.2           0 \r\n 1988          250           22.725        24.55         6.575         0 \r\n 1988          251           21.475        27.6          8.1           0 \r\n 1988          252           18.575        31            13.3          0 \r\n 1988          253           22.1          29.95         8.525         0 \r\n 1988          254           20.175        32.025        11.85         0 \r\n 1988          255           19.575        33.1          14.95         0 \r\n 1988          256           13.777        28.275        16.925        0 \r\n 1988          257           18.999        25.4          11.15         0 \r\n 1988          258           19.525        29.525        10.825        0 \r\n 1988          259           3.55          27.2          12.925        0 \r\n 1988          260           12.325        24.85         13.45         1.9 \r\n 1988          261           19.8          30.75         16.775        0 \r\n 1988          262           12.8          28.25         18.025        6.75 \r\n 1988          263           4.426         23.525        8.4           32.425 \r\n 1988          264           16.227        18.75         6.05          4.65 \r\n 1988          265           12.925        24.45         5.35          0 \r\n 1988          266           10.451        26.325        16.075        22.475 \r\n 1988          267           16.35         21.3          6.175         0 \r\n 1988          268           17.675        23.6          6.225         0 \r\n 1988          269           18.9          27.5          8.225         0 \r\n 1988          270           16.875        28.325        10.85         0 \r\n 1988          271           14.95         23.5          12.2          0 \r\n 1988          272           1.7           21.375        9.6           1.4 \r\n 1988          273           5.3           21.875        12.825        3 \r\n 1988          274           8.399         23.525        12.175        0 \r\n 1988          275           8.799         22.175        13.3          0 \r\n 1988          276           18.575        18.5          5.3           0 \r\n 1988          277           12.85         19.725        3.15          0 \r\n 1988          278           18.375        12.075       -0.725         0 \r\n 1988          279           17.4          14.15        -2.325         0 \r\n 1988          280           16.55         16.45         0.3           0 \r\n 1988          281           16.925        17.175        0.3           0 \r\n 1988          282           10.299        19.125        2.575         0 \r\n 1988          283           15.475        21.075        4.8           0 \r\n 1988          284           16.5          18.25         7.475         0 \r\n 1988          285           16.8          13.8          0.4           0 \r\n 1988          286           16.35         13.125       -2.275         0 \r\n 1988          287           15.45         18.85        -0.8           0 \r\n 1988          288           14.85         24            7             0 \r\n 1988          289           12.3          25.9          8.875         0.75 \r\n 1988          290           13.725        20.5          8.4           0.975 \r\n 1988          291           2.075         14.7          8.275         7 \r\n 1988          292           10.876        14.975       -0.7           0 \r\n 1988          293           9.425         12.425       -1.225         0 \r\n 1988          294           1.075         10.2          2.875         5.2 \r\n 1988          295           9.05          12.1          2.925         0.55 \r\n 1988          296           13.175        14.9         -2.45          0 \r\n 1988          297           11.475        10.25         2.55          0 \r\n 1988          298           13.45         10.875       -4.125         0 \r\n 1988          299           13.251        8.05         -3.525         0 \r\n 1988          300           12.425        11.35        -6.175         0 \r\n 1988          301           3.125         14.2          3.925         0 \r\n 1988          302           12.45         6.025        -4.05          0 \r\n 1988          303           7.024         5.325        -5.8           0 \r\n 1988          304           12.15         7.15         -6.15          0 \r\n 1988          305           10.575        16.6         -3             0 \r\n 1988          306           12.75         10.65        -0.4           0 \r\n 1988          307           10.375        10.125       -1.825         0 \r\n 1988          308           11.1          17.025        1.15          0 \r\n 1988          309           5.526         11.825        6.2           5.675 \r\n 1988          310           3.625         6.425        -0.45          1.45 \r\n 1988          311           8.001         6.625        -3.875         0 \r\n 1988          312           4.775         8.575        -2.225         0 \r\n 1988          313           10.275        13.125       -0.95          0 \r\n 1988          314           4.825         8.375         1.725         0 \r\n 1988          315           4.275         5.6          -0.975         0 \r\n 1988          316           9.2           7.075        -4.4           0 \r\n 1988          317           2.65          3.875        -0.35          12.651 \r\n 1988          318           9.901         11.4         -0.975         0 \r\n 1988          319           7.45          10.575       -1.1           0 \r\n 1988          320           2.5           18.75         4.225         13.226 \r\n 1988          321           4.125         16.175       -2.8           20.876 \r\n 1988          322           8.8           7.675        -5.275         0 \r\n 1988          323           7.001         10.55        -0.2           0 \r\n 1988          324           3.725         6.25         -0.275         0 \r\n 1988          325           7.651         1.675        -6.075         0 \r\n 1988          326           6.95          5.075        -6.225         0 \r\n 1988          327           7.851         6.075        -3.95          0 \r\n 1988          328           9.4           9.35         -0.875         0 \r\n 1988          329           9.725         13.25         0.525         0 \r\n 1988          330           5.425         8.3          -0.15          1.05 \r\n 1988          331           2.5           6.925         0.8           9.101 \r\n 1988          332           3.55          1.175        -4.975         0.975 \r\n 1988          333           6.701        -2.425        -12.375        0 \r\n 1988          334           2.3           2.025        -3.925         12.351 \r\n 1988          335           3.15         -0.55         -6.575         0 \r\n 1988          336           3.575        -1.125        -11.075        0 \r\n 1988          337           4.95          6.2          -4.55          0 \r\n 1988          338           5.4           4.1          -2.95          0 \r\n 1988          339           4.875         2.475        -8.2           0 \r\n 1988          340           6.325         6.575        -5.425         0 \r\n 1988          341           6.925         7.475        -2.2           0 \r\n 1988          342           6.125         2.025        -4.75          0 \r\n 1988          343           6.325        -1.2          -10.025        0 \r\n 1988          344           4.75         -1.275        -13.55         0 \r\n 1988          345           5.625        -2.95         -14.75         0.3 \r\n 1988          346           5.975        -6.1          -16.1          0 \r\n 1988          347           3.475        -0.025        -11.275        0 \r\n 1988          348           3.875         5.1          -3.275         0 \r\n 1988          349           4.65          2.7          -5.5           0 \r\n 1988          350           7.525        -5.4          -16.9          0 \r\n 1988          351           4.375        -2.325        -17.475        0 \r\n 1988          352           5.65         -3.025        -11.225        0 \r\n 1988          353           6             5.775        -10.025        0 \r\n 1988          354           6.575         7.525        -4             0 \r\n 1988          355           5.125         4.275        -3.15          10.026 \r\n 1988          356           7.9           3.375        -8.2           0 \r\n 1988          357           3.275         4.9          -4.575         0.5 \r\n 1988          358           6.7           6.2          -1.75          0 \r\n 1988          359           4.9           2.6          -6.425         1 \r\n 1988          360           4.974        -3.75         -13.625        0 \r\n 1988          361           2.45         -0.575        -8.625         4.65 \r\n 1988          362           5.875         1.85         -13.125        3.025 \r\n 1988          363           6.15         -11.3         -19.625        0 \r\n 1988          364           6.775        -4.65         -17.15         0.3 \r\n 1988          365           7.65         -1.05         -11.4          0 \r\n 1988          366           8.05         -4.675        -13.7          0 \r\n 1989          1             1.736        -3.336        -12.71         0 \r\n 1989          2             6.345        -6.528        -16.18         0 \r\n 1989          3             4.19         -0.954        -14.12         0 \r\n 1989          4             6.657         1.122        -15.06         0 \r\n 1989          5             0.845        -0.247        -5.246         8.966 \r\n 1989          6             1.138        -0.725        -3.95          0 \r\n 1989          7             0.786         0.219        -16.24         0 \r\n 1989          8             6.164        -15.18        -17.59         0 \r\n 1989          9             7.023        -3.019        -18.52         0 \r\n 1989          10            5.276        -7.034        -16.354        0 \r\n 1989          11            1.117         0.617        -11.622        0 \r\n 1989          12            9.639        -3.328        -12.49         0 \r\n 1989          13            8.708         2.121        -12.72         0 \r\n 1989          14            5.967         1.8          -6.864         0 \r\n 1989          15            6.663         1.073        -5.082         0 \r\n 1989          16            6.661         3.516        -9.45          0 \r\n 1989          17            4.223         2.561        -5.063         0 \r\n 1989          18            4.456         1.658        -4.164         0 \r\n 1989          19            7.249         4.913        -3.808         0 \r\n 1989          20            7.932        -2.578        -7.55          0 \r\n 1989          21            8.054         4.786        -7.52          0 \r\n 1989          22            7.919         7.36         -3.24          0 \r\n 1989          23            6.012         5.265        -2.637         0 \r\n 1989          24            1.23          0.628        -0.927         0 \r\n 1989          25            0.764         0.264        -1.957         2.896 \r\n 1989          26            7.832        -1.735        -10.69         0 \r\n 1989          27            8.92          7.99         -5.9           0 \r\n 1989          28            2.775         3.023        -1.051         0 \r\n 1989          29            1.9           0.122        -0.498         2.54 \r\n 1989          30            9.393         7.38         -1.738         0 \r\n 1989          31            9.414         11.77        -0.039         0 \r\n 1989          32            8.624        -0.021        -13.04         0 \r\n 1989          33            5.144        -11.92        -21.21         0 \r\n 1989          34            8.817        -21.13        -28.66         0 \r\n 1989          35            3.999        -19.15        -24.8          0 \r\n 1989          36            5.789        -16.33        -23.43         0 \r\n 1989          37            9.333        -11.92        -24.43         1.52 \r\n 1989          38            11.079       -5.19         -18.16         0 \r\n 1989          39            9.031        -10.42        -18.99         0 \r\n 1989          40            8.397        -3.617        -22.15         0 \r\n 1989          41            11.114       -0.89         -15.7          0 \r\n 1989          42            11.768        0.376        -11.25         0 \r\n 1989          43            11.332        1.77         -10.65         2.845 \r\n 1989          44            4.424         0.513        -8.52          0 \r\n 1989          45            9.582        -2.33         -16.01         0 \r\n 1989          46            11.468       -0.594        -14.09         0 \r\n 1989          47            12.755       -4.697        -18.06         0 \r\n 1989          48            9.97         -3.136        -11.93         0 \r\n 1989          49            3.852        -3.115        -12.97         0 \r\n 1989          50            8.669        -8.16         -23.35         2.29 \r\n 1989          51            8.873        -4.279        -11.889        0 \r\n 1989          52            10.339       -3.269        -13.75         0 \r\n 1989          53            13.653       -12.16        -19.99         0 \r\n 1989          54            14.464       -6.019        -23.3          0 \r\n 1989          55            13.647        0.217        -14.4          0 \r\n 1989          56            7.419         5.961        -9.83          0 \r\n 1989          57            13.329       -3.808        -11.85         0 \r\n 1989          58            11.398       -2.582        -15.72         0 \r\n 1989          59            13.809       -2.887        -13.72         0 \r\n 1989          60            10.545       -8.51         -14.44         2.565 \r\n 1989          61            6.592        -8.952        -16.761        4.775 \r\n 1989          62            2.2          -3.799        -11.86         13.259 \r\n 1989          63            9.379        -3.885        -12.62         0 \r\n 1989          64            16.019       -5.756        -15.08         0 \r\n 1989          65            16.906       -3.471        -15.39         0 \r\n 1989          66            15.632       -1.278        -12.99         0 \r\n 1989          67            11.359        3.385        -7.75          0 \r\n 1989          68            11.049        3.799        -4.841         0 \r\n 1989          69            14.256        9.31         -0.241         0 \r\n 1989          70            9.344         7.2           0.179         0 \r\n 1989          71            4.689         2.937        -0.527         0 \r\n 1989          72            4.077         3.891        -0.69          0 \r\n 1989          73            1.427         2.984        -4.897         6.502 \r\n 1989          74            14.511       -2.847        -9.95          0 \r\n 1989          75            12.777        2.864        -7.96          0 \r\n 1989          76            2.313        -7.94         -11.06         2.896 \r\n 1989          77            15.725       -6.363        -14.51         0 \r\n 1989          78            10.003        0.873        -12.17         0 \r\n 1989          79            11.728        0.215        -8.83          0 \r\n 1989          80            18.875       -0.242        -12.57         0 \r\n 1989          81            18.117        8.38         -5.376         0 \r\n 1989          82            17.758        14.61         0.56          0 \r\n 1989          83            12.589        16.56         1.295         0 \r\n 1989          84            13.693        12.83         0.275         0 \r\n 1989          85            12.855        23.43         4.401         0 \r\n 1989          86            17.375        25.17         10.08         0 \r\n 1989          87            4.521         17.24         4.728         0 \r\n 1989          88            15.682        13.98         1.208         0 \r\n 1989          89            6.659         5.596        -0.498         0 \r\n 1989          90            17.208        5.468        -2.906         0 \r\n 1989          91            2.915         7.03         -4.204         0 \r\n 1989          92            20.084        15.36        -1.777         0 \r\n 1989          93            13.311        14.59         4.028         0.991 \r\n 1989          94            5.086         8.67          0.008         0 \r\n 1989          95            20.503        11.62        -0.139         0 \r\n 1989          96            20.288        11.32        -2.349         0 \r\n 1989          97            13.108        8.61         -3.865         3.988 \r\n 1989          98            15.922        2.38         -5.628         2.997 \r\n 1989          99            15.673        1.606        -7.64          0 \r\n 1989          100           20.416        4.429        -6.562         0 \r\n 1989          101           17.042        9.96         -5.298         0 \r\n 1989          102           23.074        7.62         -4.657         0 \r\n 1989          103           20.758        17.76        -4.088         0 \r\n 1989          104           20.043        16.41         1.915         0 \r\n 1989          105           23.306        16.3         -2.588         0 \r\n 1989          106           16.153        22.29         7.1           0 \r\n 1989          107           20.715        11.81         3.561         0 \r\n 1989          108           22.418        13.61         1.495         0 \r\n 1989          109           23.997        20.13        -0.977         0 \r\n 1989          110           11.514        20.76         6.483         0 \r\n 1989          111           23.071        22.34         6.019         0 \r\n 1989          112           2.79          12.2          6.404         27.991 \r\n 1989          113           17.278        19.37         7.8           0.991 \r\n 1989          114           13.27         21.02         9.37          0 \r\n 1989          115           21.948        26.17         13.01         0 \r\n 1989          116           11.642        20.71         11.58         0.991 \r\n 1989          117           17.668        20.78         10.16         16.993 \r\n 1989          118           3.863         10.47         7.261         5.004 \r\n 1989          119           6.433         8.36          3.128         0 \r\n 1989          120           18.889        11.85         1.685         0 \r\n 1989          121           12.649        10.78         1.361         0 \r\n 1989          122           20.544        14.84        -1.023         0 \r\n 1989          123           25.657        18.75         2.936         0 \r\n 1989          124           5.336         14.97         7.21          11.989 \r\n 1989          125           24.576        9.39         -1.299         0.991 \r\n 1989          126           10.734        7.63         -3.988         0 \r\n 1989          127           26.108        18.37        -1.537         0 \r\n 1989          128           7.123         15.99         6.869         5.994 \r\n 1989          129           27.173        18.4          4.794         0 \r\n 1989          130           26.301        21.11         3.806         0 \r\n 1989          131           27.838        22.13         3.576         0 \r\n 1989          132           27.917        22.36         4.795         0 \r\n 1989          133           23.53         22.64         6.077         0 \r\n 1989          134           23.777        22.92         9.85          0 \r\n 1989          135           23.008        27.56         10.26         0 \r\n 1989          136           22.956        28.84         11.27         0 \r\n 1989          137           21.927        27.55         13.07         0 \r\n 1989          138           5.319         21.86         14.66         8.001 \r\n 1989          139           9.441         21.93         14.5          10.998 \r\n 1989          140           28.769        25.5          8.76          0 \r\n 1989          141           23.59         27.45         10.17         0 \r\n 1989          142           22.297        25.23         10.84         0 \r\n 1989          143           17.878        27.5          10.52         0.991 \r\n 1989          144           8.849         25.05         15.35         0.991 \r\n 1989          145           20.517        24.54         9.52          0 \r\n 1989          146           22.6          17.54         7.63          0 \r\n 1989          147           29.328        22.31         3.396         0 \r\n 1989          148           15.996        20.19         9.32          0 \r\n 1989          149           17.528        31.55         12.54         2.997 \r\n 1989          150           13.22         28.5          17.31         15.011 \r\n 1989          151           11.099        21.23         13.06         2.997 \r\n 1989          152           18.823        22.96         12.27         0 \r\n 1989          153           21.158        29.84         11.52         3.988 \r\n 1989          154           19.783        23.7          13.83         0.991 \r\n 1989          155           25.58         26.76         9.48          0 \r\n 1989          156           20.641        28.09         10.56         0 \r\n 1989          157           14.054        30.79         14.301        0 \r\n 1989          158           20.925        29.16         14.87         2.997 \r\n 1989          159           7.44          17.49         9.8           2.007 \r\n 1989          160           17.64         18.8          9.16          0 \r\n 1989          161           29.699        24.96         5.66          0 \r\n 1989          162           10.955        22.5          14.61         2.007 \r\n 1989          163           12.715        26.13         12.14         2.007 \r\n 1989          164           18.972        23.61         8.7           0 \r\n 1989          165           10.126        15.92         7.75          0 \r\n 1989          166           29.9          21.07         5.671         0 \r\n 1989          167           26.862        25.21         6.89          0 \r\n 1989          168           28.145        29.55         10.23         0 \r\n 1989          169           20.416        28.69         16.25         0 \r\n 1989          170           29.274        32.02         12.69         0 \r\n 1989          171           27.547        32.47         16.5          0 \r\n 1989          172           18.351        32.58         18.27         0 \r\n 1989          173           9.638         27.21         17.98         0 \r\n 1989          174           23.529        28.04         15.98         2.007 \r\n 1989          175           18.933        30.27         13.42         0.991 \r\n 1989          176           14.575        27.36         17.27         11.989 \r\n 1989          177           18.36         27.9          16.89         11.989 \r\n 1989          178           27.521        28.41         16.41         0 \r\n 1989          179           29.046        30.78         15.18         0 \r\n 1989          180           28.259        28.75         14.454        0 \r\n 1989          181           26.338        28.6          13.3          0 \r\n 1989          182           26.376        31.41         14.4          0 \r\n 1989          183           24.927        31.68         18.26         0 \r\n 1989          184           25.135        33.93         18.33         0 \r\n 1989          185           28.366        33.86         16.17         0 \r\n 1989          186           29.535        35.35         15.34         0 \r\n 1989          187           27.446        36.03         16.8          0 \r\n 1989          188           28.479        34.82         19.33         0 \r\n 1989          189           21.934        35.53         18.05         0 \r\n 1989          190           27.178        37.39         20.37         0 \r\n 1989          191           26.802        37.29         21.87         1.016 \r\n 1989          192           12.375        29.76         20.01         5.588 \r\n 1989          193           20.251        28.84         19.64         0 \r\n 1989          194           25.912        26.91         16.34         0 \r\n 1989          195           21.579        26.87         12.95         0 \r\n 1989          196           24.39         27.49         16.25         0 \r\n 1989          197           27.495        29.61         13.56         0 \r\n 1989          198           23.964        29.83         13.31         1.27 \r\n 1989          199           15.917        25.48         17.08         1.524 \r\n 1989          200           11.021        24.38         15.5          1.778 \r\n 1989          201           26.276        26.08         12.09         0 \r\n 1989          202           24.141        26.56         14.22         0 \r\n 1989          203           18.387        27            16.15         0.254 \r\n 1989          204           18.087        29.4          16.87         0.254 \r\n 1989          205           21.676        30.3          17.28         0 \r\n 1989          206           20.141        31.51         19.25         0 \r\n 1989          207           21.656        31.39         19.66         0.254 \r\n 1989          208           24.774        34.02         19.69         0 \r\n 1989          209           25.541        29.55         16.07         0 \r\n 1989          210           7.568         27.91         17.94         1.016 \r\n 1989          211           14.029        27.55         17.94         0 \r\n 1989          212           22.14         30.46         15.76         0 \r\n 1989          213           24.654        30.89         14.82         0 \r\n 1989          214           24.403        32.36         16.01         0 \r\n 1989          215           18.483        32.5          23.02         0 \r\n 1989          216           20.044        36.61         20.65         0.254 \r\n 1989          217           18.45         30.19         14.98         0 \r\n 1989          218           18.478        20.66         9.13          0 \r\n 1989          219           25.583        24.85         7.18          0 \r\n 1989          220           22.207        29.01         8.08          0 \r\n 1989          221           22.744        30.85         10.58         0 \r\n 1989          222           19.824        31.13         13.31         0 \r\n 1989          223           18.921        31.05         13.83         0 \r\n 1989          224           18.966        30.48         14.97         0 \r\n 1989          225           14.634        26.46         15.61         0 \r\n 1989          226           17.795        29.3          14.9          0 \r\n 1989          227           22.048        26.94         11.33         0 \r\n 1989          228           21.444        27.87         10.56         0 \r\n 1989          229           23.822        28.85         9.94          0 \r\n 1989          230           22.747        29.31         11.88         0 \r\n 1989          231           5.568         22.47         15            4.318 \r\n 1989          232           23.382        29.01         15.28         0 \r\n 1989          233           20.215        30.53         15.18         0 \r\n 1989          234           21.045        34.23         18.9          2.286 \r\n 1989          235           11.598        26.98         17.61         3.048 \r\n 1989          236           15.716        24.26         14.43         0 \r\n 1989          237           13.441        26.23         14.43         0 \r\n 1989          238           9.48          26.67         18            0.762 \r\n 1989          239           16.724        28.17         15.28         0 \r\n 1989          240           14.147        28.36         20.75         0 \r\n 1989          241           22.151        26.58         15.48         0 \r\n 1989          242           20.953        30.21         13.74         0 \r\n 1989          243           6.814         25.77         18.21         2.54 \r\n 1989          244           8.608         21.72         12.17         1.524 \r\n 1989          245           22.037        25.5          10.06         0 \r\n 1989          246           7.064         20.14         12.43         0.762 \r\n 1989          247           12.038        26.74         14.4          2.794 \r\n 1989          248           16.916        26.94         9.89          0 \r\n 1989          249           11.354        28.56         17.27         0 \r\n 1989          250           6.863         20.69         18.725        7.518 \r\n 1989          251           8.096         25.04         15.11         5.004 \r\n 1989          252           6.616         18.02         8.62          2.997 \r\n 1989          253           18.988        20.11         6.33          0 \r\n 1989          254           18.328        18.41         7.15          0 \r\n 1989          255           7.02          11.96         6.725         0 \r\n 1989          256           16.218        18.55         5.027         0 \r\n 1989          257           18.839        20.55         3.233         0 \r\n 1989          258           19.862        22            3.471         0 \r\n 1989          259           19.64         23.81         5.39          0 \r\n 1989          260           19.04         27.24         8.86          0 \r\n 1989          261           18.3          27.8          12.67         0 \r\n 1989          262           18.149        27.22         12.84         0 \r\n 1989          263           16.606        27.82         12.46         0 \r\n 1989          264           15.416        26.51         10.68         0 \r\n 1989          265           12.817        21.97         2.07          5.004 \r\n 1989          266           18.87         13.29        -1.672         0 \r\n 1989          267           18.205        17.52        -0.529         0 \r\n 1989          268           18.009        22.51         3.423         0 \r\n 1989          269           18.026        17.94         0.418         0 \r\n 1989          270           16.859        20.56         2.03          0 \r\n 1989          271           16.527        27.06         4.269         0 \r\n 1989          272           17.033        24.87         7.57          0 \r\n 1989          273           16.91         26.18         4.441         0 \r\n 1989          274           16.234        28.26         9.69          0 \r\n 1989          275           13.798        11.64        -0.059         0 \r\n 1989          276           16.251        12.07        -3.193         0 \r\n 1989          277           12.015        15.57        -4.676         0 \r\n 1989          278           3.584         16.19         6.814         16.002 \r\n 1989          279           16.15         13.02         0.245         0 \r\n 1989          280           15.432        12.82        -2.857         0 \r\n 1989          281           15.54         14.56        -1.089         0 \r\n 1989          282           12.169        18.98         0.484         0 \r\n 1989          283           14.272        17.17         2.114         0 \r\n 1989          284           14.476        27.48         6.987         0 \r\n 1989          285           14.541        21.7          2.606         0 \r\n 1989          286           12.48         27.52         5.769         0 \r\n 1989          287           10.238        25.77         9.07          0 \r\n 1989          288           10.15         27.54         9.47          18.009 \r\n 1989          289           3.589         9.47          2.757         3.988 \r\n 1989          290           8.245         7.43         -1.469         0 \r\n 1989          291           9.817         6            -3.126         0 \r\n 1989          292           10.819        5.68         -4.126         0 \r\n 1989          293           11.801        12.65        -3.165         0 \r\n 1989          294           13.509        19.82        -1.787         0 \r\n 1989          295           11.541        21.51         1.236         0 \r\n 1989          296           11.969        25.63         5.192         0 \r\n 1989          297           11.454        26.15         6.94          0 \r\n 1989          298           10.484        26.59         13.55         0 \r\n 1989          299           10.453        25.09         12.67         0 \r\n 1989          300           2.909         15.59         11.14         0 \r\n 1989          301           4.15          17.62         11.39         5.994 \r\n 1989          302           4.627         18.93         9.79          2.007 \r\n 1989          303           1.321         9.79          0.386         16.993 \r\n 1989          304           11.077        7.54         -1.312         0.991 \r\n 1989          305           4.054         3.345        -1.905         0 \r\n 1989          306           5.354         2.293        -6.383         0 \r\n 1989          307           3.543         2.952        -8.7           0 \r\n 1989          308           8.528         13.84         1.772         2.007 \r\n 1989          309           3.44          12.3          0.521         0 \r\n 1989          310           3.621         5.149        -0.117         5.004 \r\n 1989          311           4.131         7.57          1.637         0 \r\n 1989          312           5.501         7.28         -2.466         0 \r\n 1989          313           5.096         9.38         -4.561         0.991 \r\n 1989          314           6.456         6.152        -1.347         0 \r\n 1989          315           5.526         10.9         -1.595         0 \r\n 1989          316           8.807         8.73         -5.133         0 \r\n 1989          317           5.92          14.69        -0.707         0 \r\n 1989          318           2.389         2.628        -3.723         0 \r\n 1989          319           3.243         2.609        -7.26          0 \r\n 1989          320           7.45         -7.3          -14.43         0 \r\n 1989          321           4.2          -1.008        -13.91         0 \r\n 1989          322           4.763        -4.534        -15.77         0 \r\n 1989          323           6.898         16.91        -8.39          0 \r\n 1989          324           7.729         9.55         -2.82          0 \r\n 1989          325           2.203        -1.368        -5.638         0 \r\n 1989          326           3.722        -2.762        -14.63         0 \r\n 1989          327           6.937        -2.188        -16.63         0 \r\n 1989          328           5.843         6.769        -13.74         0 \r\n 1989          329           2.559         5.181        -6.107         0 \r\n 1989          330           4.191         6.053        -10.57         0 \r\n 1989          331           0.345         4.506        -7.05          5.182 \r\n 1989          332           7.174        -7.1          -17.18         0 \r\n 1989          333           7.081        -1.022        -18.13         0 \r\n 1989          334           7.393         3.301        -9.53          0 \r\n 1989          335           7.044         5.285        -7.69          0 \r\n 1989          336           5.458        -0.457        -12.74         0 \r\n 1989          337           4.962        -4.659        -16.67         0 \r\n 1989          338           5.609         8.57         -5.756         0 \r\n 1989          339           4.474         9.43          0.466         0 \r\n 1989          340           6.952         0.523        -12.3          0 \r\n 1989          341           3.773        -8.13         -13.05         0 \r\n 1989          342           6.784        -2.397        -9.66          0 \r\n 1989          343           5.183         4.554        -6.57          0 \r\n 1989          344           2.171        -4.212        -12.54         0 \r\n 1989          345           5.825        -9.93         -19.52         0 \r\n 1989          346           4.813        -10.68        -22.59         0 \r\n 1989          347           5.11         -10.97        -22.77         1.1 \r\n 1989          348           6.762        -19.95        -28.88         0 \r\n 1989          349           6.704        -16.63        -28.98         0 \r\n 1989          350           4.404        -11.09        -23.79         0 \r\n 1989          351           4.709        -10.75        -21.71         0 \r\n 1989          352           4.944        -13.29        -23.6          0 \r\n 1989          353           3.651        -17.03        -25.78         0 \r\n 1989          354           2.965        -18.13        -27.96         0 \r\n 1989          355           6.683        -24.82        -30.61         0 \r\n 1989          356           6.718        -20.71        -30.47         0 \r\n 1989          357           6.255        -17.15        -30.05         3.937 \r\n 1989          358           3.8          -3.95         -17.28         0 \r\n 1989          359           6.723         2.794        -13.99         0 \r\n 1989          360           3.423        -8.29         -21.44         0 \r\n 1989          361           4.539         2.001        -8.27          0 \r\n 1989          362           5.081         6.638        -2.691         0 \r\n 1989          363           0.939        -0.277        -5.901         0 \r\n 1989          364           0.824        -4.519        -6.399         0 \r\n 1989          365           3.11         -1.497        -7.16          0 \r\n 1990          1             6.94         -1.249        -13.3          0 \r\n 1990          2             6.882         8            -8.02          0 \r\n 1990          3             5.068         6.019        -3.44          0 \r\n 1990          4             6.95          1.429        -8.24          0 \r\n 1990          5             5.908         3.29         -9.86          0 \r\n 1990          6             4.971         0.59         -8.49          0 \r\n 1990          7             7.344         9.83         -5.8           0 \r\n 1990          8             4.686         8.48         -4.345         2.616 \r\n 1990          9             1.426         1.716        -6.025         0 \r\n 1990          10            4.778         6.655        -9.14          0 \r\n 1990          11            5.049         4.154        -4.209         0 \r\n 1990          12            7.447        -4.199        -12.74         0 \r\n 1990          13            5.707         1.122        -14.43         0 \r\n 1990          14            6.102         7.13         -6.125         0 \r\n 1990          15            7.055         12.33        -6.683         0 \r\n 1990          16            0.733         8.77         -1.458         0 \r\n 1990          17            1.933         3.896        -3.815         0 \r\n 1990          18            6.858         0.788        -7.13          0 \r\n 1990          19            7.037         2.65         -10.63         0 \r\n 1990          20            2.07         -0.916        -4.798         7.823 \r\n 1990          21            6.189        -2.558        -10.92         0 \r\n 1990          22            8.093         1.983        -5.4           0 \r\n 1990          23            2.207         2.632        -2.472         0 \r\n 1990          24            3.223        -0.486        -5.596         0 \r\n 1990          25            7.95         -2.816        -8.95          0 \r\n 1990          26            7.146         3.003        -12.59         0 \r\n 1990          27            5.922         0.685        -10.43         0 \r\n 1990          28            9.35          3.817        -9.79          0 \r\n 1990          29            9.329         7.42         -7.62          0 \r\n 1990          30            9.254         1.363        -13.04         0 \r\n 1990          31            6.825         4.727        -13.14         0 \r\n 1990          32            5.337         3.358        -10.33         0 \r\n 1990          33            4.044        -3.844        -9.74          4.013 \r\n 1990          34            9.59         -1.088        -12.85         0 \r\n 1990          35            9.914         7.83         -13.62         0 \r\n 1990          36            9.818         8.31         -2.845         0 \r\n 1990          37            5.984         2.898        -5.908         0 \r\n 1990          38            4.494         2.899        -8.01          0 \r\n 1990          39            5.516         5.563        -1.487         0 \r\n 1990          40            10.949        2.498        -5.869         0 \r\n 1990          41            7.602         3.693        -6.133         0 \r\n 1990          42            8.349         6.456        -3.728         0 \r\n 1990          43            7.733         16.06        -2.673         0 \r\n 1990          44            9.094         2.118        -10.07         0 \r\n 1990          45            3.738        -6.874        -10.84         0 \r\n 1990          46            1.622        -3.018        -8.04          8.128 \r\n 1990          47            9.438        -3.603        -15.95         0 \r\n 1990          48            13.598       -4.085        -21.3          0 \r\n 1990          49            11.764       -0.895        -10.68         0 \r\n 1990          50            13.647       -4.625        -14.27         0 \r\n 1990          51            13.763        1.59         -15.33         0 \r\n 1990          52            11            7.33         -6.742         0 \r\n 1990          53            4.855         3.359        -3.314         0 \r\n 1990          54            6.467         2.306        -6.626         0 \r\n 1990          55            14.773       -5.371        -17.72         0 \r\n 1990          56            14.01        -5.382        -19.73         0 \r\n 1990          57            14.389        5.335        -8.36          0 \r\n 1990          58            15.242        0.429        -7.84          0 \r\n 1990          59            15.178        4.288        -11.28         0 \r\n 1990          60            15.556        11.94        -7.43          0 \r\n 1990          61            15.168        10.23        -3.371         0 \r\n 1990          62            15.452        0.296        -8.13          0 \r\n 1990          63            13.001        13.11        -7.52          0 \r\n 1990          64            4.996        -0.676        -4.335         0 \r\n 1990          65            6.157         3.051        -4.326         0 \r\n 1990          66            2.378         0.599        -3.939         14.224 \r\n 1990          67            1.659         3.713        -0.534         11.125 \r\n 1990          68            8.738         13.65         0.515         0 \r\n 1990          69            3.639         7.65          2.918         23.978 \r\n 1990          70            4.555         18.28         5.923         2.692 \r\n 1990          71            17.628        21.92         9.49          3.861 \r\n 1990          72            3.738         17            8.29          25.171 \r\n 1990          73            5.243         18.91         5.828         32.639 \r\n 1990          74            5.502         13.97         2.358         0 \r\n 1990          75            9.065         6.521        -0.133         0 \r\n 1990          76            14.273        5.065        -1.811         0 \r\n 1990          77            11.905        0.685        -6.92          0 \r\n 1990          78            18.012        0.468        -9.33          0 \r\n 1990          79            19.158        12.42        -7.23          0 \r\n 1990          80            15.171        18.69         0.449         5.664 \r\n 1990          81            9.206         6.513        -5.802         0 \r\n 1990          82            17.894       -2.683        -10.25         0 \r\n 1990          83            20.502        2.488        -7.73          0 \r\n 1990          84            20.705        8.15         -7.35          0 \r\n 1990          85            21.288        5.412        -7.46          0 \r\n 1990          86            20.524        12.94        -6.773         0 \r\n 1990          87            9.096         12.79        -1.421         0 \r\n 1990          88            6.784         9.29          0.888         0 \r\n 1990          89            10.677        11.54        -0.493         0 \r\n 1990          90            4.036         8.32         -0.037         0 \r\n 1990          91            5.685         12.33         0.687         5.131 \r\n 1990          92            16.022        3.15         -3.68          0 \r\n 1990          93            18.891        12.36        -3.68          0 \r\n 1990          94            22.389        14.11         2.558         0 \r\n 1990          95            19.028        5.373        -6.242         0 \r\n 1990          96            23.093        2.403        -7.69          0 \r\n 1990          97            23.043        11.22        -9.25          0 \r\n 1990          98            19.892        20.01         0.754         0 \r\n 1990          99            5.328         13.58         4.001         22.53 \r\n 1990          100           15.988        9.73         -1.486         0 \r\n 1990          101           14.231        2.278        -5.655         0 \r\n 1990          102           21.863        9.86         -6.881         0 \r\n 1990          103           4.356         6.452        -3.639         4.648 \r\n 1990          104           23.308        17.04        -0.924         0 \r\n 1990          105           23.592        12.14         0.154         0 \r\n 1990          106           4.556         6.841        -1.257         6.934 \r\n 1990          107           24.866        7.73         -5.653         0 \r\n 1990          108           24.572        15.32        -4.713         2.819 \r\n 1990          109           4.308         12.28         4.356         4.877 \r\n 1990          110           16.738        21.55         10.41         0 \r\n 1990          111           22.982        23.32         6.465         0 \r\n 1990          112           21.719        23.99         8.71          0 \r\n 1990          113           18.023        28.56         14.58         0 \r\n 1990          114           15.634        28.52         16.94         0 \r\n 1990          115           21.177        29.49         15.23         0 \r\n 1990          116           12.676        24.69         15.14         19.279 \r\n 1990          117           5.126         19.28         12.23         0 \r\n 1990          118           6.659         12.21         2.469         0 \r\n 1990          119           11.995        16.05         0.906         0 \r\n 1990          120           23.469        14.48        -0.619         0 \r\n 1990          121           26.139        15.27        -1.182         0 \r\n 1990          122           23.583        18.9         -0.324         0 \r\n 1990          123           17.378        17.84         4.816         0 \r\n 1990          124           11.314        15.1          7.03          0 \r\n 1990          125           19.183        20.3          7.03          0 \r\n 1990          126           27.264        23.21         2.9           0 \r\n 1990          127           26.295        28.45         10.65         0 \r\n 1990          128           19.38         24.15         13.43         0 \r\n 1990          129           4.389         14.13         4.145         20 \r\n 1990          130           17.69         12.88         3.607         18 \r\n 1990          131           19.92         18.46         1.488         0 \r\n 1990          132           9.74          14.22         6.784         3 \r\n 1990          133           25.433        20.42         3.225         0 \r\n 1990          134           10.775        22.31         11.38         0 \r\n 1990          135           5.597         16.291        9.73          0 \r\n 1990          136           12.225        18.82         9.41          9 \r\n 1990          137           16.069        18.1          7.29          0 \r\n 1990          138           27.111        21.8          4.24          0 \r\n 1990          139           2.266         13.89         6.418         45 \r\n 1990          140           5.341         10.6          6.388         15 \r\n 1990          141           13.389        15.19         5.558         0 \r\n 1990          142           24.973        20.4          5.421         0 \r\n 1990          143           18.163        22.55         11.39         0 \r\n 1990          144           11.415        19.42         10.01         0 \r\n 1990          145           3.519         15.76         13.05         3.5 \r\n 1990          146           13.019        19.79         12.01         3.5 \r\n 1990          147           16.148        20.67         8.33          0 \r\n 1990          148           22.244        23.66         10.89         0 \r\n 1990          149           28.118        23.53         11.85         0 \r\n 1990          150           29.201        22.45         8.27          0 \r\n 1990          151           25.803        25.06         8.18          0 \r\n 1990          152           16.313        27.5          16.36         0 \r\n 1990          153           9.246         23.22         13.81         0 \r\n 1990          154           11.347        14.02         6.65          10 \r\n 1990          155           28.81         18.87         3.905         0 \r\n 1990          156           12.68         19.38         11.64         0 \r\n 1990          157           15.6          23.27         10.46         0 \r\n 1990          158           14.87         23.81         9.3           0 \r\n 1990          159           21.056        26.71         13.09         2.997 \r\n 1990          160           29.713        28.04         13.38         0 \r\n 1990          161           27.782        29.63         13.14         0 \r\n 1990          162           15.039        28.61         17.01         0 \r\n 1990          163           15.976        32.25         20.7          45.009 \r\n 1990          164           10.937        27.21         18.7          10.008 \r\n 1990          165           26.022        27.47         18.53         0 \r\n 1990          166           16.988        26.21         16.01         5.994 \r\n 1990          167           7.729         24.14         17.81         24.994 \r\n 1990          168           26.962        27.26         17.35         5.994 \r\n 1990          169           29.399        30.3          16.73         0 \r\n 1990          170           8.115         23.38         15.79         10.998 \r\n 1990          171           28.331        26.07         16.3          0 \r\n 1990          172           12.233        24.64         14.66         7.01 \r\n 1990          173           17.721        23.03         14.06         23.012 \r\n 1990          174           28.329        24.68         13.41         0 \r\n 1990          175           27.874        28.2          13.56         0 \r\n 1990          176           27.025        29.94         18            0 \r\n 1990          177           25.636        33.44         18.84         0 \r\n 1990          178           17.664        32.47         19.18         11.989 \r\n 1990          179           15.108        28            20.27         0 \r\n 1990          180           14.687        28.82         22.25         0 \r\n 1990          181           28.337        32.05         19.62         0 \r\n 1990          182           25.669        29.16         17.52         0 \r\n 1990          183           26.566        29.94         17.54         0 \r\n 1990          184           28.275        36.85         21.76         0 \r\n 1990          185           26.407        33.13         18.55         5.004 \r\n 1990          186           27.561        27.76         16.79         0 \r\n 1990          187           25.704        26.2          15.34         0 \r\n 1990          188           15.105        29.57         16.55         0 \r\n 1990          189           25.274        31.38         17.53         0 \r\n 1990          190           14.827        27.9          15.59         0 \r\n 1990          191           14.045        26.2          17.62         2.007 \r\n 1990          192           18.565        26.46         14.24         45.009 \r\n 1990          193           20.141        21.66         13.08         8.001 \r\n 1990          194           27.993        22.83         10.69         0 \r\n 1990          195           16.271        23.22         12.88         0 \r\n 1990          196           26.142        26.72         12.35         0 \r\n 1990          197           27.385        29.61         15.4          0 \r\n 1990          198           23.187        29.28         20.04         0 \r\n 1990          199           15.969        29.99         18.29         0.991 \r\n 1990          200           5.522         22.56         18.19         10.008 \r\n 1990          201           27.204        26.41         17.53         0 \r\n 1990          202           17.616        24.11         16.36         2.007 \r\n 1990          203           25.295        24.24         14.03         0.991 \r\n 1990          204           22.623        25.75         11.82         2.007 \r\n 1990          205           17.298        26.03         13.59         0.991 \r\n 1990          206           18.885        28.19         17.03         0.991 \r\n 1990          207           3.207         21.93         18.58         61.011 \r\n 1990          208           7.964         25.97         19.14         84.988 \r\n 1990          209           16.781        28.91         19.69         42.012 \r\n 1990          210           23.547        28.75         17.49         0 \r\n 1990          211           24.534        24.97         14.35         0 \r\n 1990          212           27.681        24.63         11.99         0 \r\n 1990          213           24.466        26.09         12.07         0 \r\n 1990          214           20.2          27.25         14.58         0.991 \r\n 1990          215           14.81         28.3          19.73         0 \r\n 1990          216           25.198        26.52         14.21         0 \r\n 1990          217           25.415        23.23         12.38         0 \r\n 1990          218           20.984        24.92         9.01          0 \r\n 1990          219           23.997        27.11         11.43         0 \r\n 1990          220           24.545        26.32         12.91         0 \r\n 1990          221           22.441        26.73         12.84         13.005 \r\n 1990          222           18.421        28.52         16.96         5.994 \r\n 1990          223           19.482        26.77         15.89         0.991 \r\n 1990          224           23.179        23.97         13.82         0 \r\n 1990          225           19.369        24.91         12.41         0 \r\n 1990          226           21.71         27.35         15.14         0 \r\n 1990          227           21.193        29.23         17.88         0 \r\n 1990          228           17.368        28.98         17.05         0 \r\n 1990          229           12.963        29.68         20.16         24.003 \r\n 1990          230           22.922        31.65         19.41         19.99 \r\n 1990          231           12.36         26.29         19.65         10.998 \r\n 1990          232           5.437         20.02         16.91         15.011 \r\n 1990          233           8.792         21.84         16.67         0 \r\n 1990          234           15.313        25.87         18.71         0 \r\n 1990          235           19.984        28.13         18.44         0 \r\n 1990          236           16.111        28.87         18.601        35.001 \r\n 1990          237           21.25         30.62         17.75         23.012 \r\n 1990          238           20.987        31.84         19.61         0.991 \r\n 1990          239           20.843        32.93         22.37         0 \r\n 1990          240           18.844        30.03         19.28         0 \r\n 1990          241           18.793        28.56         16.79         26.01 \r\n 1990          242           22.035        28.09         13.78         0.991 \r\n 1990          243           19.811        28.76         17.06         0 \r\n 1990          244           18.14         29.16         18.5          3.048 \r\n 1990          245           6.553         25.55         16.86         1.448 \r\n 1990          246           18.832        27.92         18.05         0 \r\n 1990          247           20.361        32.38         19.97         0 \r\n 1990          248           20.678        34.16         20.56         0 \r\n 1990          249           20.266        32.09         21.96         0.584 \r\n 1990          250           15.224        29.66         17.74         0.051 \r\n 1990          251           17.331        27.26         15.79         0 \r\n 1990          252           17.764        28.55         18.11         0.102 \r\n 1990          253           19.258        28.32         16.13         0 \r\n 1990          254           17.966        29.5          17.51         0 \r\n 1990          255           18.337        30.69         16.84         0 \r\n 1990          256           16.937        28.96         16.97         0.356 \r\n 1990          257           17.234        23.42         9.46          0 \r\n 1990          258           19.175        27.09         8.03          0 \r\n 1990          259           18.396        15.82         7.12          0 \r\n 1990          260           13.279        19.03         5.056         9.804 \r\n 1990          261           1.69          13.76         10.03         3.251 \r\n 1990          262           12.021        21.71         10.19         0 \r\n 1990          263           11.924        19.97         8.42          0.813 \r\n 1990          264           15.946        20.88         8.71          0 \r\n 1990          265           10.647        12.75         6.435         0 \r\n 1990          266           18.33         15.03         4.21          0 \r\n 1990          267           18.208        23.82         1.764         0 \r\n 1990          268           18.177        28.63         9.51          0 \r\n 1990          269           17.752        27.54         8.3           0.254 \r\n 1990          270           9.299         24.39         10.65         0.356 \r\n 1990          271           16.223        21.52         10.02         0.152 \r\n 1990          272           8.276         18.21         5.344         0.813 \r\n 1990          273           16.067        18.94         1.935         0 \r\n 1990          274           16.642        20.73         6.417         0 \r\n 1990          275           14.16         25.19         5.074         26.34 \r\n 1990          276           5.628         18.81         6.087         4.267 \r\n 1990          277           15.766        20.52         5.422         0 \r\n 1990          278           15.395        30.56         10.97         0 \r\n 1990          279           15.339        23.78         10.05         0 \r\n 1990          280           11.397        13.77         5.691         1.956 \r\n 1990          281           1.991         7.5           3.769         2.565 \r\n 1990          282           10.904        9.19          1.382         0 \r\n 1990          283           14.707        11.86        -1.077         0 \r\n 1990          284           14.609        19           -1.402         0.406 \r\n 1990          285           13.756        14.73         1.191         0 \r\n 1990          286           12.72         17.96        -0.41          0.813 \r\n 1990          287           10.891        16.58         3.963         0 \r\n 1990          288           5.308         11.76         0.324         0 \r\n 1990          289           10.684        20.1          5.692         0.102 \r\n 1990          290           3.227         19.95         0.315         1.016 \r\n 1990          291           11.892        7.23         -1.736         0 \r\n 1990          292           11.594        12.4         -3.124         1.295 \r\n 1990          293           5.899         12.07         5.383         4.877 \r\n 1990          294           13.298        9.04         -2.682         0.584 \r\n 1990          295           12.562        14.49        -3.479         0 \r\n 1990          296           10.498        18.5          1.746         0 \r\n 1990          297           11.557        12.76        -0.677         0 \r\n 1990          298           11.721        11.02        -4.413         0 \r\n 1990          299           11.821        17.95         0.189         0 \r\n 1990          300           11.65         13.05         0.934         0 \r\n 1990          301           12.137        12.88        -2.875         0 \r\n 1990          302           11.25         21.02         1.4           0 \r\n 1990          303           9.021         18.53         5.354         0 \r\n 1990          304           10.371        23.63         5.777         0 \r\n 1990          305           8.32          23.44         9.56          0 \r\n 1990          306           1.86          16.69         8.09          6.071 \r\n 1990          307           1.12          8.1          -0.295         3.277 \r\n 1990          308           6.183         2.869        -1.717         0 \r\n 1990          309           7.126         5.383        -3.133         0 \r\n 1990          310           2.907         2.459        -3.296         2.565 \r\n 1990          311           9.097         0.781        -8.38          0 \r\n 1990          312           2.11         -0.001        -9.7           2.616 \r\n 1990          313           9.438         7.5          -1.669         0 \r\n 1990          314           8.554         7.21         -3.941         0 \r\n 1990          315           7.462         10.21        -4.067         0 \r\n 1990          316           6.241         6.318        -2.711         0 \r\n 1990          317           7.57          9.09         -1.841         0 \r\n 1990          318           9.055         21.01         0.503         0 \r\n 1990          319           8.416         20.43         7.55          0 \r\n 1990          320           8.689         10.84        -1.506         0 \r\n 1990          321           7.439         10.95        -4.985         0 \r\n 1990          322           6.875         12.8          0.485         0 \r\n 1990          323           7.871         15.53        -2.463         0 \r\n 1990          324           1.992         14.86         3.414         0 \r\n 1990          325           4.164         21.31        -0.181         0 \r\n 1990          326           8.002         12.85        -2.845         0 \r\n 1990          327           7.92          8.06         -2.28          0 \r\n 1990          328           5.003         15.14        -2.742         0 \r\n 1990          329           6.868         4.094        -3.555         0 \r\n 1990          330           0.956         14.76        -3.459         0 \r\n 1990          331           1.205         6.07         -5.939         4.877 \r\n 1990          332           7.755        -1.307        -8.65          0 \r\n 1990          333           7.654         5.775        -9.54          0 \r\n 1990          334           7.132         10.37        -0.727         0 \r\n 1990          335           7.341         6.007        -6.894         0 \r\n 1990          336           3.707         0.209        -8.83          15.57 \r\n 1990          337           4.417        -3.182        -6.843         3.962 \r\n 1990          338           7.523        -5.93         -14.57         0 \r\n 1990          339           5.917         2.295        -9.76          0 \r\n 1990          340           7.323         0.856        -7.29          0 \r\n 1990          341           7.032         2.736        -6.992         0 \r\n 1990          342           7.061         6.578        -6.99          0 \r\n 1990          343           7.156         8.53         -4.356         0 \r\n 1990          344           6.88          6.499        -3.422         0 \r\n 1990          345           6.885         8.38         -2.118         0 \r\n 1990          346           1.349         1.876        -2.195         0 \r\n 1990          347           7.05         -0.868        -9.04          0 \r\n 1990          348           1.551        -0.021        -9.07          9.855 \r\n 1990          349           3.398         0.466        -8.98          0 \r\n 1990          350           5.127         1.333        -8.69          0 \r\n 1990          351           0.482         1.847        -9.43          9.093 \r\n 1990          352           0.832        -6.165        -12.82         0 \r\n 1990          353           0.822         0.875        -6.176         0 \r\n 1990          354           1.975         1.971        -20.7          0 \r\n 1990          355           2.961        -18.77        -25.14         0 \r\n 1990          356           5.754        -24.17        -28.7          0 \r\n 1990          357           6.947        -19.78        -31.6          0 \r\n 1990          358           6.61         -9.26         -25.52         0 \r\n 1990          359           6.958        -7.99         -28.7          0 \r\n 1990          360           4.879        -13.28        -30.68         0 \r\n 1990          361           7.004        -7.22         -17.58         0 \r\n 1990          362           2.337        -0.409        -7.22          0 \r\n 1990          363           3.614        -4.487        -23.22         0 \r\n 1990          364           6.743        -20.37        -26.15         0 \r\n 1990          365           6.792        -7.95         -26.2          0 \r\n 1991          1             5.416        -4.812        -14.28         0 \r\n 1991          2             4.434        -14.29        -27.11         3.023 \r\n 1991          3             6.722        -14.64        -29.28         0 \r\n 1991          4             6.428        -9.53         -24.28         8.026 \r\n 1991          5             1.925        -6.347        -19.46         0 \r\n 1991          6             1.481        -10.29        -22.07         0 \r\n 1991          7             1.074        -8.75         -22.07         0 \r\n 1991          8             1.858        -4.134        -9.36          0 \r\n 1991          9             1.449        -9.37         -17.01         0 \r\n 1991          10            0.963        -4.521        -12.01         3.708 \r\n 1991          11            5.778        -2.128        -5.948         0 \r\n 1991          12            6.148        -5.939        -9.69          0 \r\n 1991          13            6.53         -2.854        -8.62          0 \r\n 1991          14            8.402        -0.543        -7.27          0 \r\n 1991          15            4.409        -3.125        -6.058         0 \r\n 1991          16            5.6          -3.654        -7.89          0 \r\n 1991          17            7.801        -3.182        -15.36         0 \r\n 1991          18            7.095        -2.002        -15.35         0 \r\n 1991          19            8.804         2.395        -4.743         0 \r\n 1991          20            8.7          -3.15         -16.35         0 \r\n 1991          21            0.801        -16.07        -28.17         0 \r\n 1991          22            6.477        -0.136        -28.71         0 \r\n 1991          23            9.882        -1.632        -18.16         0 \r\n 1991          24            10.042       -16.36        -27.06         0 \r\n 1991          25            7.185        -13.09        -24.86         0 \r\n 1991          26            3.297        -8.95         -23.82         0 \r\n 1991          27            9.275        -4.637        -12.49         0 \r\n 1991          28            8.477        -5.295        -14.72         0 \r\n 1991          29            7.954        -14.75        -25.69         0 \r\n 1991          30            11.137       -10.16        -27.56         0 \r\n 1991          31            10.913       -5.374        -21.19         0 \r\n 1991          32            3.121         1.381        -15.773        0 \r\n 1991          33            7.022         3.781        -7.199         0 \r\n 1991          34            4.62          5.85         -1.138         0 \r\n 1991          35            4.314         4.984        -2.566         0 \r\n 1991          36            0.99          8.87         -4.636         0 \r\n 1991          37            5.127         0.306        -5.959         0 \r\n 1991          38            5.442         4.497        -5.554         0 \r\n 1991          39            7.269         4.769        -5.476         0 \r\n 1991          40            6.169         3.849        -3.75          0 \r\n 1991          41            9.052         0.782        -6.167         0 \r\n 1991          42            2.863        -3.068        -11.371        0 \r\n 1991          43            12.79         1.193        -12.241        0 \r\n 1991          44            4.432         0.886        -5.599         0 \r\n 1991          45            2.448        -2.424        -20.628        0 \r\n 1991          46            10.855       -8.247        -24.003        0 \r\n 1991          47            4.572         1.942        -17.811        0 \r\n 1991          48            10.39         1.669        -5.672         0 \r\n 1991          49            2.158         1.26         -3.102         3.81 \r\n 1991          50            6.147         0.272        -6.409         0 \r\n 1991          51            9.69          5.627        -8.15          0 \r\n 1991          52            12.376        6.371        -3.748         0 \r\n 1991          53            13.896       -0.21         -8.31          0 \r\n 1991          54            3.547         0.417        -6.823         0 \r\n 1991          55            13.511       -6.321        -14.28         0 \r\n 1991          56            14.985       -4.598        -17.57         0 \r\n 1991          57            9.742        -2.73         -13.16         0 \r\n 1991          58            8.359         0.164        -10.16         0 \r\n 1991          59            11.562        3.559        -8.31          0 \r\n 1991          60            1.785         5.373        -0.078         15.469 \r\n 1991          61            9.803         2.335        -9.74          0 \r\n 1991          62            15.87        -2.616        -12.12         0 \r\n 1991          63            13.3          5.946        -8.44          0 \r\n 1991          64            11.223        11.14        -1.164         0.051 \r\n 1991          65            14.714       -0.474        -6.232         0 \r\n 1991          66            15.372       -0.02         -10.11         0 \r\n 1991          67            9.141         7.37         -3.719         0 \r\n 1991          68            16.888        2.401        -6.871         0 \r\n 1991          69            12.016        6.9          -5.754         0 \r\n 1991          70            14.568        9.47          0.686         2.286 \r\n 1991          71            1.164         2.805        -2.252         10.287 \r\n 1991          72            17.406        2.165        -2.501         0.787 \r\n 1991          73            18.673        4.738        -5.558         0.279 \r\n 1991          74            15.944        6.255        -4.762         1.6 \r\n 1991          75            2.986         3.386        -0.392         10.439 \r\n 1991          76            3.71          4.93          1.316         0.305 \r\n 1991          77            8.176         8.26         -0.001         0.737 \r\n 1991          78            18.116        14.67        -0.345         3.607 \r\n 1991          79            8.472         16.68         1.229         3.378 \r\n 1991          80            7.077         11.74         4.388         2.591 \r\n 1991          81            2.63          12.71         4.091         2.667 \r\n 1991          82            3.469         4.063         0.076         0.051 \r\n 1991          83            19.533        11.41         0.314         0 \r\n 1991          84            10.293        14.86         1.479         1.346 \r\n 1991          85            14.294        26.85         9.93          18.186 \r\n 1991          86            4.734         15.67        -2.21          0.533 \r\n 1991          87            13.823        6.32         -4.469         0 \r\n 1991          88            20.791        0.451        -6.526         0 \r\n 1991          89            17.479        5.096        -7.55          0.051 \r\n 1991          90            18.467        11.32         0.136         0 \r\n 1991          91            21.914        13.62        -1.772         0.051 \r\n 1991          92            19.616        16.21         1.851         0.483 \r\n 1991          93            14.95         19.96         3.467         0 \r\n 1991          94            14.067        20.59         7.4           0 \r\n 1991          95            20.169        28.99         7.38          0 \r\n 1991          96            21.688        31.51         14.87         0 \r\n 1991          97            19.461        26.35         11.84         2.997 \r\n 1991          98            4.998         21.48         5.822         3.327 \r\n 1991          99            4.47          5.773        -0.081         0.254 \r\n 1991          100           23.435        12.46        -2.038         7.29 \r\n 1991          101           4.271         5.973         3.036         22.149 \r\n 1991          102           1.232         5.04          1.31          15.596 \r\n 1991          103           3.581         6.69          2.025         4.369 \r\n 1991          104           11.068        10.52         3.621         0.051 \r\n 1991          105           13.561        11.52         0.367         0 \r\n 1991          106           18.954        13.32         0.67          0.711 \r\n 1991          107           23.281        16.21         1.281         5.41 \r\n 1991          108           3.816         10.42         6.777         3.505 \r\n 1991          109           3.414         9.24          5.878         2.743 \r\n 1991          110           18.603        12.76         2.34          0 \r\n 1991          111           17.971        13.57        -0.529         1.041 \r\n 1991          112           13.871        15.82         1.986         0.94 \r\n 1991          113           10.232        9.18          1.728         0.051 \r\n 1991          114           25.643        17.87         0.527         0 \r\n 1991          115           9.091         15.31         7.06          10.871 \r\n 1991          116           7.522         18.13         5.379         2.057 \r\n 1991          117           21.924        19.12         8.83          0 \r\n 1991          118           24.851        22.89         6.661         7.722 \r\n 1991          119           12.599        22.46         8.53          7.163 \r\n 1991          120           8.982         11.07         7.03          0 \r\n 1991          121           13.529        11.56         3.124         0 \r\n 1991          122           19.419        14.48         2.252         10.084 \r\n 1991          123           5.392         10.4          4.148         0 \r\n 1991          124           7.193         13.77         7.42          12.319 \r\n 1991          125           3.244         11.36         3.612         13.741 \r\n 1991          126           8.709         8.47          3.143         0 \r\n 1991          127           24.576        14.84         0.976         0 \r\n 1991          128           13.699        19.45         8.33          0.991 \r\n 1991          129           25.16         26.03         9.93          0 \r\n 1991          130           13.449        23.57         12.36         0 \r\n 1991          131           23.015        27.73         15.63         0 \r\n 1991          132           21.965        30.4          15.81         0 \r\n 1991          133           25.663        30.35         17.04         5.994 \r\n 1991          134           18.201        29.44         15.24         0 \r\n 1991          135           16.373        28.23         16.01         21.006 \r\n 1991          136           14.433        24.85         16.94         5.004 \r\n 1991          137           5.541         19.44         8.02          45.999 \r\n 1991          138           3.406         8.76          6.885         10.008 \r\n 1991          139           18.242        18.83         7.7           0 \r\n 1991          140           22.614        24.58         10.54         0 \r\n 1991          141           10.451        25.83         16.96         3.988 \r\n 1991          142           18.588        28.53         20.21         0 \r\n 1991          143           5.685         23.59         19.16         5.004 \r\n 1991          144           14.872        23.58         17.79         0 \r\n 1991          145           8.249         21.94         18.26         2.007 \r\n 1991          146           20.367        26.71         17.51         3.988 \r\n 1991          147           27.075        31.38         17.02         0 \r\n 1991          148           23.219        32.67         18.99         0 \r\n 1991          149           22.325        32.1          17.85         3.988 \r\n 1991          150           20.971        27.37         17.48         10.008 \r\n 1991          151           2.148         21            18.52         24.994 \r\n 1991          152           15.559        27.01         17.81         2.007 \r\n 1991          153           19.91         29.26         18.99         0 \r\n 1991          154           26.293        30.06         19.39         0 \r\n 1991          155           6.896         20.57         12.76         10.008 \r\n 1991          156           29.421        24.18         12.31         0 \r\n 1991          157           28.286        26.03         11.47         0 \r\n 1991          158           26.877        27.67         13.49         0 \r\n 1991          159           26.2          28.43         13.26         0 \r\n 1991          160           22.519        30.1          19.15         0 \r\n 1991          161           10.602        26.58         18.15         40.005 \r\n 1991          162           25.344        29.65         15.64         2.007 \r\n 1991          163           28.46         32.58         17.84         0 \r\n 1991          164           17.746        30.51         19.41         7.01 \r\n 1991          165           9.763         27.18         18.29         75.006 \r\n 1991          166           18.793        25.1          15.68         2.997 \r\n 1991          167           30.347        27.14         13.74         0 \r\n 1991          168           28.499        28.49         14.94         0 \r\n 1991          169           27.668        31.99         15.62         0 \r\n 1991          170           23.06         30.9          18.19         0 \r\n 1991          171           27.445        32.37         18.91         0 \r\n 1991          172           18.446        29.13         16.23         0 \r\n 1991          173           7.319         17.3          14.35         0 \r\n 1991          174           16.662        22.84         14.99         0 \r\n 1991          175           26.066        29.35         17.03         0 \r\n 1991          176           24.501        30.54         17.8          0 \r\n 1991          177           24.421        35.6          22.53         0 \r\n 1991          178           28.12         34.63         22.97         0 \r\n 1991          179           24.904        34.63         21.57         0 \r\n 1991          180           23.925        36.29         22.98         0 \r\n 1991          181           26.042        35.39         23.44         0 \r\n 1991          182           27.362        32.69         21.09         2.007 \r\n 1991          183           27.845        31.56         17.83         0 \r\n 1991          184           15.973        24.5          16.85         0 \r\n 1991          185           23.276        26.92         15.12         0 \r\n 1991          186           28.315        32.99         13.89         0 \r\n 1991          187           27.469        33.57         19.22         0 \r\n 1991          188           14.775        29.69         17.2          2.997 \r\n 1991          189           24.241        25.67         14.01         0 \r\n 1991          190           22.375        28.47         15.58         0 \r\n 1991          191           23.809        29.61         16.46         0 \r\n 1991          192           18.205        29.82         18.76         27 \r\n 1991          193           26.851        28.32         18.24         0 \r\n 1991          194           18.845        25.16         15.46         0 \r\n 1991          195           29.206        27.28         12.03         0 \r\n 1991          196           27.204        30.25         13.77         0 \r\n 1991          197           26.11         33.12         18.4          0 \r\n 1991          198           24.333        34.46         20.65         0 \r\n 1991          199           27.415        34.5          20.41         0 \r\n 1991          200           11.046        29.8          21.37         0 \r\n 1991          201           13.76         32.43         22.88         0 \r\n 1991          202           15.079        31.7          23.197        0.991 \r\n 1991          203           21.111        31.7          21.807        0 \r\n 1991          204           24.88         25.58         13.94         0 \r\n 1991          205           26.062        27.75         13.69         0 \r\n 1991          206           23.662        23.23         11.53         0 \r\n 1991          207           24.581        26.34         9.53          0 \r\n 1991          208           20.029        27.84         13.77         0 \r\n 1991          209           2.403         19.16         13.89         2.997 \r\n 1991          210           22.221        22.58         13.55         0.991 \r\n 1991          211           26.166        27.39         11.23         7.01 \r\n 1991          212           25.174        30.41         16.65         0 \r\n 1991          213           24.662        31.59         14.05         0 \r\n 1991          214           10.641        28.51         19.06         0 \r\n 1991          215           16.602        27.2          17.67         0 \r\n 1991          216           22.087        24.3          13.88         0 \r\n 1991          217           23.426        24.98         13.88         0 \r\n 1991          218           5.011         20.18         13.86         2.007 \r\n 1991          219           9.355         25.7          19.61         2.007 \r\n 1991          220           4.767         21.91         15.35         0 \r\n 1991          221           25.885        25.71         12.42         0 \r\n 1991          222           21.617        26.2          12.54         0 \r\n 1991          223           22.795        29.23         13.64         0 \r\n 1991          224           23.326        28.81         14.2          0 \r\n 1991          225           22.52         27.78         14.3          0 \r\n 1991          226           23.98         28.71         14.83         0 \r\n 1991          227           22.809        29.23         15.34         0 \r\n 1991          228           7.328         25.14         19            0 \r\n 1991          229           21.562        26.71         16.37         20 \r\n 1991          230           22.63         23.35         12.29         0 \r\n 1991          231           22.931        22.04         10.68         0 \r\n 1991          232           14.168        22.87         9.68          0 \r\n 1991          233           22.487        29.1          15.02         3 \r\n 1991          234           22.314        29.07         14.95         0 \r\n 1991          235           12.431        27.12         17.01         9 \r\n 1991          236           20.841        30.56         16.76         0 \r\n 1991          237           18.773        31.16         18.86         0 \r\n 1991          238           21.949        32.02         18.36         0 \r\n 1991          239           21.226        32.48         18.19         0 \r\n 1991          240           21.05         33.13         19.77         0 \r\n 1991          241           11.238        29.06         21.52         0 \r\n 1991          242           19.502        31.66         19.3          0 \r\n 1991          243           22.03         26.73         15.19         0 \r\n 1991          244           22.044        26.31         11.31         0 \r\n 1991          245           14.618        29.72         15.61         0 \r\n 1991          246           15.15         26.34         10.47         0 \r\n 1991          247           22.317        25.4          7.51          0 \r\n 1991          248           8.811         22.7          10.05         0 \r\n 1991          249           20.74         29.85         11.68         4 \r\n 1991          250           19.675        30.87         15.54         0 \r\n 1991          251           3.11          23.05         18.78         6 \r\n 1991          252           14.662        29.43         17.82         12 \r\n 1991          253           10.241        21.84         15.43         0 \r\n 1991          254           4.782         22.19         14.98         0 \r\n 1991          255           7.12          25.88         19.16         16 \r\n 1991          256           11.497        27.39         19.73         12 \r\n 1991          257           5.772         26.73         19.96         20 \r\n 1991          258           8.371         27.5          16.8          20 \r\n 1991          259           17.093        20.29         10.64         0 \r\n 1991          260           8.059         21.98         8.36          0 \r\n 1991          261           10.525        10.33         2.465         8 \r\n 1991          262           14.528        10.79        -0.12          0 \r\n 1991          263           19.747        16.74        -1.724         0 \r\n 1991          264           17.472        19.65         1.233         0 \r\n 1991          265           13.734        16.9          5.18          0 \r\n 1991          266           12.956        14.84         2.417         0 \r\n 1991          267           2.55          9.89          3.287         0 \r\n 1991          268           14.141        18.69         3.47          0 \r\n 1991          269           18.156        15.55         1.017         0 \r\n 1991          270           6.978         12.74         0.882         0 \r\n 1991          271           17.297        19.33        -0.646         0 \r\n 1991          272           14.698        24.37         7.23          0 \r\n 1991          273           11.543        18.49         5.237         0 \r\n 1991          274           12.364        24.87         4.275         0 \r\n 1991          275           7.689         22.56         9.53          0 \r\n 1991          276           2.659         12.25         4.102         0 \r\n 1991          277           1.444         7.98          5.903         8 \r\n 1991          278           12.42         8.2           1.042         16 \r\n 1991          279           14.94         10.02        -0.424         0 \r\n 1991          280           15.706        17.58        -3.498         0 \r\n 1991          281           13.684        25.46         6.906         0 \r\n 1991          282           12.032        21.43         4.554         0 \r\n 1991          283           10.532        16.1          1.436         0 \r\n 1991          284           14.212        20.77         9.11          0 \r\n 1991          285           15.089        14.51         3.119         0 \r\n 1991          286           5.857         13.35         2.97          0 \r\n 1991          287           4.072         8.6          -1.397         0.9 \r\n 1991          288           14.239        9.74         -4.587         0 \r\n 1991          289           13.828        24.03         0.472         0 \r\n 1991          290           13.397        24.78         6.484         0 \r\n 1991          291           2.854         6.483        -3.996         0 \r\n 1991          292           11.192        9.36         -6.508         2.2 \r\n 1991          293           11.437        15.22        -4.046         0 \r\n 1991          294           11.753        21.13         4.323         0 \r\n 1991          295           10.736        23.73         11.37         0 \r\n 1991          296           10.251        25.07         7.94          0 \r\n 1991          297           1.563         18.07         5.185         0 \r\n 1991          298           11.347        9.94          1.083         20 \r\n 1991          299           1.749         8.53          5.783         3.5 \r\n 1991          300           3.514         11.01         7.31          0 \r\n 1991          301           0.667         18.44         9.34          0 \r\n 1991          302           2.837         18.28        -3.447         3.8 \r\n 1991          303           10.615        1.299        -4.924         0 \r\n 1991          304           1.046         0.85         -2.863         73.025 \r\n 1991          305           1.142         2.262        -6.94          8.915 \r\n 1991          306           7.978        -6.87         -10.75         0 \r\n 1991          307           9.238        -8.21         -14.11         0 \r\n 1991          308           9.929        -6.545        -17.13         0 \r\n 1991          309           2.946         0.498        -8.79          0 \r\n 1991          310           4.916        -8.78         -17.38         0 \r\n 1991          311           10.473       -7.12         -21.04         0 \r\n 1991          312           10.075       -3.092        -17.51         0 \r\n 1991          313           8.117         4.137        -10.22         0 \r\n 1991          314           2.413         0.699        -3.418         0 \r\n 1991          315           1.715         0.289        -1.322         0 \r\n 1991          316           3.354         1.453        -1.284         0 \r\n 1991          317           6.615         12.5         -0.531         0 \r\n 1991          318           0.865         11.1          1.185         4.674 \r\n 1991          319           5.998         11.22         1.184         0 \r\n 1991          320           8.62          8.6          -2.277         0 \r\n 1991          321           0.57          13.02         1.938         17.983 \r\n 1991          322           7.602         11.44         2.866         0 \r\n 1991          323           4.592         8.29         -0.12          0 \r\n 1991          324           8.207         10.77        -2.775         0 \r\n 1991          325           3.131         8.8          -1.18          0 \r\n 1991          326           1.379         4.07         -3.824         15.951 \r\n 1991          327           4.21         -3.833        -7.8           10.617 \r\n 1991          328           7.813        -7.66         -14.94         0 \r\n 1991          329           8.083        -8.15         -18.68         0 \r\n 1991          330           3.387         0.469        -17.93         5.334 \r\n 1991          331           7.099         0.279        -6.228         0 \r\n 1991          332           2.468        -4.093        -5.703         2.718 \r\n 1991          333           1.394         9.29         -5.09          9.169 \r\n 1991          334           7.191         4.52         -16.09         0 \r\n 1991          335           6.77         -4.926        -18.61         0 \r\n 1991          336           3.003        -7.65         -16.24         0 \r\n 1991          337           4.18         -8.17         -20.64         0 \r\n 1991          338           7.178        -13.56        -22.95         0 \r\n 1991          339           4.2          -4.632        -15.74         0 \r\n 1991          340           5.626         2.498        -16.14         0 \r\n 1991          341           6.974         9.05         -4.4           0 \r\n 1991          342           3.922         3.752        -4.314         0 \r\n 1991          343           6.72          3.16         -6.181         0 \r\n 1991          344           6.797         6.799        -4.556         0 \r\n 1991          345           6.678         7.06         -6.043         15.088 \r\n 1991          346           1.259         4.665        -2.555         12.294 \r\n 1991          347           5.364         4.316        -6.93          0 \r\n 1991          348           6.433        -2.833        -8.97          0 \r\n 1991          349           6.593        -3.009        -14.13         0 \r\n 1991          350           6.171         5.29         -10.63         0 \r\n 1991          351           6.654        -1.113        -12.44         0 \r\n 1991          352           6.667        -7.78         -16.64         0 \r\n 1991          353           4.126        -2.307        -13.93         7.645 \r\n 1991          354           1.355         0.765        -3.619         6.248 \r\n 1991          355           7.674         3.82         -6.181         0 \r\n 1991          356           1.958         0.565        -2.029         0 \r\n 1991          357           6.424         1.022        -4.102         0 \r\n 1991          358           6.6           2.798        -5.244         0 \r\n 1991          359           5.941         4.883        -8.14          0 \r\n 1991          360           6.283         3.447        -4.112         0 \r\n 1991          361           0.989        -0.684        -1.725         0 \r\n 1991          362           1.196        -0.398        -2             0 \r\n 1991          363           3.391         1.7          -2.383         0 \r\n 1991          364           1.661        -1.877        -3.351         0 \r\n 1991          365           1.95          0.718        -1.934         0 \r\n 1992          1             1.04         -0.864        -1.752         0 \r\n 1992          2             1.447         1.557        -1.115         0 \r\n 1992          3             1.407         2.74         -1.866         0 \r\n 1992          4             1.292         0.234        -2.058         0 \r\n 1992          5             1.386         0.279        -0.97          0 \r\n 1992          6             2.091         0.262        -1.724         0 \r\n 1992          7             0.959         1.349        -1.457         2.718 \r\n 1992          8             0.738         2.932        -0.616         0 \r\n 1992          9             2.706        -0.654        -9.61          0 \r\n 1992          10            6.753         1.014        -10.73         0 \r\n 1992          11            7.169         9.8          -4.527         0 \r\n 1992          12            1             2.635        -1.627         6.274 \r\n 1992          13            3.183        -1.599        -10.56         0 \r\n 1992          14            5.017        -4.972        -12.91         2.819 \r\n 1992          15            7.715        -10.01        -23.4          0 \r\n 1992          16            5.126         1.508        -19.71         0 \r\n 1992          17            7.425        -3.963        -17.68         0 \r\n 1992          18            7.944        -15.81        -22.52         0 \r\n 1992          19            6.569         0.639        -21.9          0 \r\n 1992          20            7.412         0.2          -11.76         0 \r\n 1992          21            7.883         5.97         -7.6           0 \r\n 1992          22            1.244         2.502        -0.634         7.366 \r\n 1992          23            5.453         1.089        -12.14         0 \r\n 1992          24            7.581        -5.458        -15.17         10.439 \r\n 1992          25            8.527        -5.522        -15.25         0 \r\n 1992          26            8.558        -0.511        -15.66         0 \r\n 1992          27            6.735        -4.429        -14.95         0 \r\n 1992          28            5.488        -4.265        -19.022        0 \r\n 1992          29            4.359         1.499        -5.187         0 \r\n 1992          30            7.618         3.371        -3.484         0 \r\n 1992          31            6.601         2.406        -3.745         0 \r\n 1992          32            9.204         3.086        -6.281         0 \r\n 1992          33            9.35          9.01         -5.157         0 \r\n 1992          34            5.791         5.581         0.348         0 \r\n 1992          35            8.184         0.366        -5.517         0 \r\n 1992          36            8.891         3.937        -5.332         0 \r\n 1992          37            6.798         2.434        -1.876         0 \r\n 1992          38            6.745        -1.342        -11.66         0 \r\n 1992          39            10.481       -9.28         -13.72         0 \r\n 1992          40            7.916        -3.727        -15.47         0 \r\n 1992          41            3.929         2.623        -7.48          0 \r\n 1992          42            7.26         -4.623        -9.12          0 \r\n 1992          43            6.382        -1.409        -8.63          0 \r\n 1992          44            2.266         0.193        -4.073         0 \r\n 1992          45            1.661        -0.712        -1.59          7.747 \r\n 1992          46            5.131         0.327        -1.417         0 \r\n 1992          47            5.525         3.975        -0.101         0 \r\n 1992          48            2.913         2.357         0.252         6.909 \r\n 1992          49            4.563         0.927        -0.673         4.267 \r\n 1992          50            7.07          0.816        -3.716         0 \r\n 1992          51            10.241        3.831        -6.278         0 \r\n 1992          52            6.199         0.423        -6.545         0 \r\n 1992          53            11.805        3.203        -4.324         0 \r\n 1992          54            8.851         3.65         -2.219         0 \r\n 1992          55            5.145         1.051        -5.664         0 \r\n 1992          56            10.598       -1.921        -9.01          0 \r\n 1992          57            12.189        5.203        -9.08          0 \r\n 1992          58            10.635        5.985         0.155         0 \r\n 1992          59            6.977         5.328        -0.844         0 \r\n 1992          60            11.337        4.549        -3.467         0 \r\n 1992          61            15.154        16.25         0.484         0 \r\n 1992          62            9.274         15.33        -0.08          0 \r\n 1992          63            3.336         4.879         1.139         0 \r\n 1992          64            4.016         10.24         2.379         0 \r\n 1992          65            2.908         12.46         9.52          0 \r\n 1992          66            4.891         14.89         6.665         0 \r\n 1992          67            3.099         11.07         5.988         0 \r\n 1992          68            6.602         12.57         4.456         18.212 \r\n 1992          69            4.47          5.678        -8.42          4.039 \r\n 1992          70            17.09        -6.93         -11.95         0 \r\n 1992          71            6.416        -4.594        -12.2          2.565 \r\n 1992          72            17.893       -3.715        -16.778        0 \r\n 1992          73            7.475        -1.751        -13.96         0 \r\n 1992          74            7.474         2.486        -5.584         0 \r\n 1992          75            18.426        1.606        -8.3           0 \r\n 1992          76            9.284         12.04        -4.72          0 \r\n 1992          77            18.253        4.035        -1.512         0 \r\n 1992          78            12.381        4.041        -2.297         0 \r\n 1992          79            17.503        6.082        -5.41          0 \r\n 1992          80            12.025        5.737        -1.969         0 \r\n 1992          81            3.115        -0.865        -4.603         0 \r\n 1992          82            19.245        3.181        -10.628        0 \r\n 1992          83            19.569        12.24        -5.186         0 \r\n 1992          84            19.028        17.32        -2.237         0 \r\n 1992          85            19.773        10.26         0.109         0 \r\n 1992          86            19.732        6.177        -3.947         0 \r\n 1992          87            20.395        9.2          -6.889         0 \r\n 1992          88            2.48          4.993         0.793         6.807 \r\n 1992          89            3.534         4.388         2.044         0 \r\n 1992          90            20.737        11.8         -0.779         0 \r\n 1992          91            12.142        4.731        -2.04          0 \r\n 1992          92            11.164        2.939        -5.166         0 \r\n 1992          93            21.645        6.382        -7.89          0 \r\n 1992          94            15.326        15.25        -1.523         0 \r\n 1992          95            22.217        11.39        -1.465         0 \r\n 1992          96            21.027        16.2         -1.35          0 \r\n 1992          97            15.907        23.06         4.664         0 \r\n 1992          98            19.408        16.45         4.341         0 \r\n 1992          99            3.2           8.56          1.033         0 \r\n 1992          100           14.706        13.49         0.974         0 \r\n 1992          101           4.559         11.5          2.299         0 \r\n 1992          102           8.623         8.32         -2.401         0 \r\n 1992          103           10.804        1.27         -5.965         0 \r\n 1992          104           3.745         3.59         -1.685         0 \r\n 1992          105           16.46         15.65         2.664         0 \r\n 1992          106           16.096        23.76         4.233         0 \r\n 1992          107           5.366         10.7          4.656         15 \r\n 1992          108           4.024         8.6           5.608         12 \r\n 1992          109           4.359         17.66         5.975         0 \r\n 1992          110           7.096         19.37         10.56         16 \r\n 1992          111           2.677         14.79         3.214         22 \r\n 1992          112           6.396         3.352         0.672         20 \r\n 1992          113           6.17          4.696         0.653         8 \r\n 1992          114           7.321         7.19          1.273         0 \r\n 1992          115           11.234        9.17          2.169         0 \r\n 1992          116           5.92          5.754         1.254         0 \r\n 1992          117           7.997         7.65          2.682         0 \r\n 1992          118           26.308        13.37         0.092         0 \r\n 1992          119           18.619        17.55        -0.159         0 \r\n 1992          120           23.711        24.86         8.09          0 \r\n 1992          121           24.679        29.9          10.5          0 \r\n 1992          122           24.97         32.35         15.59         0 \r\n 1992          123           23.917        22.17         11.44         0 \r\n 1992          124           23.888        18.5          5.653         0 \r\n 1992          125           23.752        23.88         4.459         0 \r\n 1992          126           27.146        16.91         2.292         0 \r\n 1992          127           27.056        19.71        -0.403         0 \r\n 1992          128           26.834        23.89         3.901         0 \r\n 1992          129           27.234        26.94         6.143         0 \r\n 1992          130           25.053        29.52         8.92          0 \r\n 1992          131           24.45         29.32         11.45         0 \r\n 1992          132           9.525         23.44         16.6          0 \r\n 1992          133           16.563        23.68         10.14         0 \r\n 1992          134           18.006        18.7          5.942         0 \r\n 1992          135           15.589        21.93         10.11         0 \r\n 1992          136           11.194        21.66         10.74         4.597 \r\n 1992          137           16.567        29.95         14.01         36.449 \r\n 1992          138           10.981        17.71         11.16         0 \r\n 1992          139           22.482        21.9          8.05          0 \r\n 1992          140           27.008        27.98         9.09          0 \r\n 1992          141           24.527        29.56         13.35         0 \r\n 1992          142           15.06         25.88         15.99         0 \r\n 1992          143           15.038        29.71         11.22         6.223 \r\n 1992          144           20.88         16.05         7.41          0 \r\n 1992          145           27.989        13.2          4.334         0 \r\n 1992          146           9.396         9.84          3.525         0 \r\n 1992          147           13.788        13.71         2.293         0 \r\n 1992          148           25.008        18.62         2.675         0 \r\n 1992          149           26.323        22.02         5.302         0 \r\n 1992          150           27.078        23.57         7.2           0 \r\n 1992          151           27.826        24.28         7.3           0 \r\n 1992          152           26.249        27.01         9.35          0 \r\n 1992          153           11.41         23.24         12.64         0 \r\n 1992          154           21.393        27.71         13.29         0 \r\n 1992          155           27.048        29.16         12.51         0 \r\n 1992          156           21.541        28.36         12.78         0 \r\n 1992          157           27.815        28.04         9.91          0 \r\n 1992          158           18.85         24.13         12.57         0 \r\n 1992          159           28.966        25.16         7.68          0 \r\n 1992          160           17.517        26.42         12.95         0 \r\n 1992          161           24.558        27.94         16.14         0 \r\n 1992          162           26.644        29.34         13.57         0 \r\n 1992          163           24.032        30.44         13.39         0 \r\n 1992          164           26.853        32.79         15.43         0 \r\n 1992          165           25.604        32.96         15.03         0 \r\n 1992          166           26.238        33.42         15.9          0 \r\n 1992          167           24.057        30.56         17.43         5.537 \r\n 1992          168           13.127        27.92         16.85         44.526 \r\n 1992          169           26.469        26.16         17.61         0 \r\n 1992          170           21.945        25.23         15.78         0 \r\n 1992          171           18.63         25.77         10.95         0 \r\n 1992          172           29.75         17.83         6.494         0 \r\n 1992          173           29.097        20.88         4.426         0 \r\n 1992          174           5.131         17            10.7          6.985 \r\n 1992          175           25.297        25.77         12.776        0 \r\n 1992          176           21.937        24.67         13.3          0 \r\n 1992          177           27.944        24.26         12.78         0 \r\n 1992          178           28.846        21.64         9.44          0 \r\n 1992          179           27.863        23.22         6.676         0 \r\n 1992          180           20.459        28.15         11.49         0 \r\n 1992          181           15.775        23.26         14.72         0 \r\n 1992          182           26.39         29.05         15.77         0 \r\n 1992          183           20.867        31.36         17.14         3.048 \r\n 1992          184           6.096         23.78         15.14         0 \r\n 1992          185           26.141        22.95         13.19         0 \r\n 1992          186           21.822        24.46         13.6          0 \r\n 1992          187           23.538        24.15         11.23         0 \r\n 1992          188           22.579        26.23         9.47          11.176 \r\n 1992          189           10.084        26.02         16.78         11.151 \r\n 1992          190           27.277        28.29         18.49         0 \r\n 1992          191           19.298        27.18         16.27         9.55 \r\n 1992          192           23.007        25.12         16.23         0 \r\n 1992          193           13.813        25.02         15.41         9.677 \r\n 1992          194           17.347        27.3          18.07         17.501 \r\n 1992          195           3.681         24.41         16.72         33.503 \r\n 1992          196           8.639         19.34         15.95         0 \r\n 1992          197           25.104        25.69         13.01         5.512 \r\n 1992          198           26.589        26.48         16.28         0 \r\n 1992          199           22.24         24.21         14.2          0 \r\n 1992          200           24.24         26.52         13.65         0 \r\n 1992          201           22.293        27.89         14.3          0 \r\n 1992          202           23.464        22.67         10.27         0 \r\n 1992          203           23.018        23.13         8.34          10.998 \r\n 1992          204           2.383         17.16         12.48         16.078 \r\n 1992          205           4.198         15.39         13.82         0 \r\n 1992          206           8.316         20.14         14.26         0 \r\n 1992          207           13.295        28.75         18.12         3.073 \r\n 1992          208           25.806        25.84         16.46         0 \r\n 1992          209           26.517        27.87         14.36         0 \r\n 1992          210           20.601        27.63         16.25         0 \r\n 1992          211           16.572        22.61         13.91         0 \r\n 1992          212           5.903         15.95         12.23         16.231 \r\n 1992          213           25.712        24.53         9.82          0 \r\n 1992          214           26.051        26.21         11.76         7.442 \r\n 1992          215           24.82         24.52         14.42         0 \r\n 1992          216           23.775        23.12         10.07         0 \r\n 1992          217           22.044        22.4          9.23          0 \r\n 1992          218           22.366        23.81         13.11         0 \r\n 1992          219           15.787        26.33         14.2          0 \r\n 1992          220           8.089         24.93         17.01         28.118 \r\n 1992          221           24.893        30.97         17.54         0 \r\n 1992          222           23.421        32.54         23.26         0 \r\n 1992          223           25.423        28.39         14.5          0 \r\n 1992          224           24.872        26.17         12.69         6.985 \r\n 1992          225           20.433        21.79         11.95         0 \r\n 1992          226           16.53         20.65         8.86          0 \r\n 1992          227           22.765        20.96         8.37          0 \r\n 1992          228           22.528        22.31         8.13          0 \r\n 1992          229           21.563        23.11         7.2           0 \r\n 1992          230           16.024        23.88         10.39         8.026 \r\n 1992          231           21.636        23.95         12.08         0 \r\n 1992          232           22.498        25.49         10.36         0 \r\n 1992          233           23.929        24.92         10.2          0 \r\n 1992          234           23.023        26.49         11.83         0 \r\n 1992          235           22.242        26.48         11.9          0 \r\n 1992          236           19.602        27.98         17.54         0 \r\n 1992          237           20.68         29.93         18.42         0 \r\n 1992          238           6.946         21.95         14.28         17.45 \r\n 1992          239           12.213        18.69         12.72         0 \r\n 1992          240           10.719        19.45         9.61          0 \r\n 1992          241           20.779        22.67         6.685         0 \r\n 1992          242           20.17         28.04         11.68         0 \r\n 1992          243           21.978        21.2          9.32          0 \r\n 1992          244           21.249        22.28         6.724         0 \r\n 1992          245           10.677        22.19         10.13         4.216 \r\n 1992          246           5.856         22.37         15.47         20.345 \r\n 1992          247           22.112        23.21         11            0 \r\n 1992          248           21.849        26.43         11.29         0 \r\n 1992          249           9.865         24.24         14.4          33.249 \r\n 1992          250           19.928        25.12         14.38         0 \r\n 1992          251           7.432         23.98         8.81          2.667 \r\n 1992          252           20.747        19.46         6.035         17.907 \r\n 1992          253           11.119        23            7.53          0 \r\n 1992          254           12.973        16.23         6.578         0 \r\n 1992          255           19.912        21.34         3.872         0 \r\n 1992          256           15.755        23.57         10.33         0 \r\n 1992          257           13.027        27.25         15.73         0 \r\n 1992          258           8.906         24.08         17.49         32.106 \r\n 1992          259           15.659        27.57         17.68         0 \r\n 1992          260           7.334         26.15         21.13         5.791 \r\n 1992          261           8.7           27.2          17.72         4.978 \r\n 1992          262           18.937        19.93         5.623         0 \r\n 1992          263           15.321        18.06         3.095         0 \r\n 1992          264           3.864         16.71         10.32         0 \r\n 1992          265           6.362         21.99         9.36          0 \r\n 1992          266           19.006        15.18         3.882         0 \r\n 1992          267           16.727        19.34         2.454         0 \r\n 1992          268           18.464        20.06         5.343         0 \r\n 1992          269           13.851        22.22         6.006         0 \r\n 1992          270           4.222         17.37         7.85          0 \r\n 1992          271           17.621        22.78         4.659         0 \r\n 1992          272           17.737        13.18         0.321         0 \r\n 1992          273           16.759        18.34        -1.304         0 \r\n 1992          274           16.391        24.73         4.103         0 \r\n 1992          275           16.537        28.3          8.17          0 \r\n 1992          276           16.516        29.66         9.43          0 \r\n 1992          277           16.125        25.76         8.96          0 \r\n 1992          278           14.87         21.87         9.17          0 \r\n 1992          279           14.462        22.27         8.48          0 \r\n 1992          280           10.186        22.47         8.98          0 \r\n 1992          281           8.465         19.47         10.609        0 \r\n 1992          282           3.766         13.95         4.44          13.005 \r\n 1992          283           4.657         10.9          1.25          0 \r\n 1992          284           8.613         14.38         3.183         0 \r\n 1992          285           14.942        18.12         0.319         0 \r\n 1992          286           14.563        12.69         6.589         0 \r\n 1992          287           9.673         15.03         2.541         0 \r\n 1992          288           4.565         9.36          3.413         0 \r\n 1992          289           7.667         11.16         2.571         3.48 \r\n 1992          290           8.389         5.63         -3.275         0 \r\n 1992          291           8.497         8.19         -5.196         0 \r\n 1992          292           12.128        4.695        -5.742         0 \r\n 1992          293           3.062         3.333        -5.782         2.642 \r\n 1992          294           12.52         13.13        -0.462         0 \r\n 1992          295           10.839        15.64        -1.731         0 \r\n 1992          296           11.493        26.52         9.42          0 \r\n 1992          297           11.121        23.4          8.66          0 \r\n 1992          298           11.153        21.63         5.072         0 \r\n 1992          299           12.061        25.5          4.812         0 \r\n 1992          300           11.883        14.38         1.149         0 \r\n 1992          301           11.545        15.68        -3.486         0 \r\n 1992          302           10.668        11.34        -0.852         0 \r\n 1992          303           11.08         6.596        -3.602         0 \r\n 1992          304           7.308         7.84         -3.304         0 \r\n 1992          305           2.047         6.927         3.142         13.36 \r\n 1992          306           0.523         5.822         2.827         47.727 \r\n 1992          307           1.44          5.582         0.215         3.404 \r\n 1992          308           2.232         0.633        -2.325         0 \r\n 1992          309           1.921        -0.312        -2.318         0 \r\n 1992          310           3.142        -0.237        -2.547         0 \r\n 1992          311           3.017        -2.174        -5.11          0 \r\n 1992          312           4.909         0.356        -4.53          0 \r\n 1992          313           3.062         6.664        -2.823         0 \r\n 1992          314           3.966         12.85         5.35          0 \r\n 1992          315           6.195         12.12        -1.513         0 \r\n 1992          316           5.294         5.763        -4.238         0 \r\n 1992          317           6.75          5.26         -3.292         0 \r\n 1992          318           5.716        -0.847        -6.239         0 \r\n 1992          319           4.55         -1.488        -6.644         0 \r\n 1992          320           7.686         2.197        -6.242         0 \r\n 1992          321           7.073         9.39         -2.558         0 \r\n 1992          322           2.698         3.256        -2.316         0 \r\n 1992          323           6.239         4.887        -2.883         0 \r\n 1992          324           1.443         4.857         0.499         35.204 \r\n 1992          325           0.927         12.24         4.178         17.983 \r\n 1992          326           1.584         4.159        -0.691         0 \r\n 1992          327           1.082         0.29         -1.054         0 \r\n 1992          328           2.92          2.542        -0.57          0 \r\n 1992          329           1.707         1.787         0.176         0 \r\n 1992          330           0.7           0.634        -1.772         13.741 \r\n 1992          331           5.319        -1.772        -10.11         0 \r\n 1992          332           7.455        -0.887        -16.35         0 \r\n 1992          333           5.49         -3.817        -14.74         0 \r\n 1992          334           4.196        -1.21         -7.76          0 \r\n 1992          335           3.417        -1.848        -11.26         0 \r\n 1992          336           3.141         1.491        -11.53         0 \r\n 1992          337           4.299        -1.063        -7.21          0 \r\n 1992          338           3.422        -2.489        -8.97          0 \r\n 1992          339           6.645        -3.336        -15.66         0 \r\n 1992          340           7.247        -11.089       -20.4          0 \r\n 1992          341           2.484        -2.755        -12.78         0 \r\n 1992          342           2.621        -3.524        -6.693         0 \r\n 1992          343           4.683        -0.954        -10.11         0 \r\n 1992          344           1.624        -0.044        -2.076         0 \r\n 1992          345           3.982         1.07         -5.332         0 \r\n 1992          346           3.075        -3.725        -5.664         0 \r\n 1992          347           4.946        -0.254        -4.077         0 \r\n 1992          348           2.106         0.861        -1.723         3.277 \r\n 1992          349           1.639         1.785         0.339         6.579 \r\n 1992          350           1.796         3.305        -0.548         5.69 \r\n 1992          351           1.293        -0.548        -5.712         0 \r\n 1992          352           2.575        -2.241        -7.657         0 \r\n 1992          353           1.932        -0.966        -9             0 \r\n 1992          354           3.312        -1.919        -13.028        0 \r\n 1992          355           5.305        -5.068        -17.004        0 \r\n 1992          356           4.704         0.95         -9.307         0 \r\n 1992          357           4.374         1.706        -11.567        0 \r\n 1992          358           5.369        -8.72         -23.21         0 \r\n 1992          359           4.555        -5.16         -25.83         0 \r\n 1992          360           6.627        -1.691        -18.14         0 \r\n 1992          361           6.496        -4.104        -16.3          0 \r\n 1992          362           6.59          3.206        -7.02          0 \r\n 1992          363           4.843         1.899        -9.15          15.9 \r\n 1992          364           5.07         -2.059        -15.095        0 \r\n 1992          365           4.08         -6.61         -22.293        0 \r\n 1992          366           4.296        -15.422       -27.667        0 \r\n 1993          1             6.037        -11.343       -29.201        0 \r\n 1993          2             5.164        -3.212        -12.401        0 \r\n 1993          3             4.103         0.191        -10.728        0 \r\n 1993          4             4.879        -6.235        -23.691        0 \r\n 1993          5             4.874        -10.012       -26.222        0 \r\n 1993          6             5.344        -9.75         -22.592        0 \r\n 1993          7             4.906        -8.916        -22.662        0 \r\n 1993          8             4.855        -10.861       -25.827        0 \r\n 1993          9             5.507        -8.907        -15.022        0 \r\n 1993          10            8.608        -9.237        -17.966        0 \r\n 1993          11            4.238        -7.104        -15.88         4.877 \r\n 1993          12            3.694        -3.9          -6.628         11.989 \r\n 1993          13            5.672        -5.736        -10.837        0 \r\n 1993          14            6.246        -4.769        -15.317        0 \r\n 1993          15            5.925        -4.571        -14.996        0 \r\n 1993          16            5.625        -0.087        -16.778        0 \r\n 1993          17            9.962        -7.992        -21.663        0 \r\n 1993          18            7.16         -5.687        -17.51         0 \r\n 1993          19            9.966        -4.711        -16.109        0 \r\n 1993          20            2.51         -0.533        -8.365         4.166 \r\n 1993          21            5.249         0.943        -4.706         0 \r\n 1993          22            10.143        2.388        -6.367         0 \r\n 1993          23            6.215         3.349        -9.01          0 \r\n 1993          24            8.903        -7.75         -15.38         0 \r\n 1993          25            10.126       -3.208        -11.191        0 \r\n 1993          26            10.717        3.322        -6.736         0 \r\n 1993          27            6.364        -0.034        -13.539        0 \r\n 1993          28            8.082        -0.349        -19.314        0 \r\n 1993          29            11.487       -6.223        -18.38         0 \r\n 1993          30            11.496       -0.067        -9.134         0 \r\n 1993          31            9.793         3.679        -3.419         0 \r\n 1993          32            9.954         4.705        -5.506         0 \r\n 1993          33            9.095         3.334        -7.37          0 \r\n 1993          34            9.568         2.525        -9.72          0 \r\n 1993          35            9.962         1.116        -11.93         0 \r\n 1993          36            8.465         1.337        -5.487         0 \r\n 1993          37            3.484         2.538        -1.581         0 \r\n 1993          38            4.251        -0.18         -1.734         0 \r\n 1993          39            3.869         1.927        -1.953         0 \r\n 1993          40            4.303         1.385        -2.182         2.769 \r\n 1993          41            3.938         1.516        -0.206         4.775 \r\n 1993          42            5.187         1.482        -4.186         0 \r\n 1993          43            3.636         1.418        -5.541         0 \r\n 1993          44            5.289         0.399        -11.824        0 \r\n 1993          45            8.23          0.43         -15.408        0 \r\n 1993          46            9.848        -0.028        -14.419        0 \r\n 1993          47            8.075        -0.748        -18.422        0 \r\n 1993          48            10.442       -1.046        -22.796        0 \r\n 1993          49            11.691       -1.594        -21.126        0 \r\n 1993          50            11.378       -0.387        -15.987        0 \r\n 1993          51            7.959         0.669        -8.963         13.386 \r\n 1993          52            6.599         0.557        -7.546         5.74 \r\n 1993          53            6.816         0.397        -20.062        0 \r\n 1993          54            9.812        -0.262        -24.236        0 \r\n 1993          55            12.289       -1.137        -20.049        0 \r\n 1993          56            9.437        -10.194       -11.916        0 \r\n 1993          57            14.737       -3.776        -18.216        0 \r\n 1993          58            14.205       -6.209        -18.068        0 \r\n 1993          59            15.146        0.804        -18.76         0 \r\n 1993          60            14.83         3.459        -9.49          0 \r\n 1993          61            6.573         1.422        -0.733         7.925 \r\n 1993          62            7.219         2.844         0.889         0 \r\n 1993          63            16.505        2.578        -3.495         0 \r\n 1993          64            15.733        1.55         -7.09          0 \r\n 1993          65            8.956         0.66         -3.083         0 \r\n 1993          66            15.725        3.258        -0.541         0 \r\n 1993          67            11.497        1.69         -0.722         0 \r\n 1993          68            7.357         2.761        -1.446         3.505 \r\n 1993          69            7.633         1.297        -12            0 \r\n 1993          70            17.779       -9.27         -17.09         0 \r\n 1993          71            14.722       -4.592        -17.885        0 \r\n 1993          72            18.664       -12.37        -18.482        0 \r\n 1993          73            19.03        -9.81         -20.091        0 \r\n 1993          74            14.277        7.2          -14.42         0 \r\n 1993          75            10.898        3.528        -9.063         0 \r\n 1993          76            14.692       -9.863        -11.667        0 \r\n 1993          77            11.131       -1.791        -14.347        0 \r\n 1993          78            10.118        0.689        -3.928         0 \r\n 1993          79            8.22          0.933        -2.674         0 \r\n 1993          80            8.069        -0.918        -3.625         12.751 \r\n 1993          81            6.3           1.48         -1.236         3.785 \r\n 1993          82            9.739         1.129        -1.514         0 \r\n 1993          83            13.057        5.264         0.374         0 \r\n 1993          84            14.55         10.461        0.689         0 \r\n 1993          85            14.639        7.45          0.203         0 \r\n 1993          86            15.398        5.949        -1.914         0 \r\n 1993          87            17.206        6.663        -2.814         0 \r\n 1993          88            19.85         12.27        -0.635         0.991 \r\n 1993          89            2.277         9.01          4.657         11.989 \r\n 1993          90            1.703         7.36         -2.038         16.993 \r\n 1993          91            17.897        1.033        -4.285         0 \r\n 1993          92            22.2          3.076        -6.86          0.991 \r\n 1993          93            22.466        7.9          -3.62          0 \r\n 1993          94            22.342        9.43         -4.48          0 \r\n 1993          95            17.24         7.78         -3.909         0 \r\n 1993          96            10.16         9.4          -0.235         0 \r\n 1993          97            2.134         9.84          4.034         10.008 \r\n 1993          98            3.376         12.128        4.139         0.991 \r\n 1993          99            20.607        11.59         0.014         0 \r\n 1993          100           19.025        15.59        -2.258         2.997 \r\n 1993          101           5.271         7.21          2.006         0.991 \r\n 1993          102           13.367        8.41          1.232         0 \r\n 1993          103           9.111         8.54          0.099         3.988 \r\n 1993          104           2.231         3.571         1.167         5.004 \r\n 1993          105           2.939         2.253         0.327         5.004 \r\n 1993          106           23.021        10.52        -0.311         2.007 \r\n 1993          107           22.783        18.13        -2.364         0 \r\n 1993          108           12.504        19.01         4.646         11.989 \r\n 1993          109           1.584         12.09         0.861         8.001 \r\n 1993          110           23.11         9.58         -0.074         2.007 \r\n 1993          111           24.85         12.85        -1.904         0 \r\n 1993          112           19.39         16.37         0.614         0 \r\n 1993          113           15.557        18.63         5.56          0 \r\n 1993          114           8.611         14.49         6.28          0 \r\n 1993          115           23.818        16.63         3.63          0 \r\n 1993          116           21.884        16.48         2.044         0 \r\n 1993          117           3.402         13.761        7.5           7.01 \r\n 1993          118           22.842        22.3          6.837         0 \r\n 1993          119           24.035        20.29         6.975         0 \r\n 1993          120           12.937        15.59         4.84          0 \r\n 1993          121           3.424         16.99         9.76          5.994 \r\n 1993          122           5.274         16.06         10.68         2.997 \r\n 1993          123           2.473         16.28         11.15         5.994 \r\n 1993          124           6.579         20.78         14.82         0 \r\n 1993          125           17.173        22.26         13.911        0.991 \r\n 1993          126           3.751         18.4          13.7          7.01 \r\n 1993          127           13.18         24.5          15.74         0 \r\n 1993          128           17.77         27.572        17.9          0.991 \r\n 1993          129           17.417        24.75         13.49         2.997 \r\n 1993          130           14.879        24.822        17.011        2.007 \r\n 1993          131           20.161        25.84         16.58         0 \r\n 1993          132           27.927        25.5          9.2           0 \r\n 1993          133           27.516        21.03         4.303         0 \r\n 1993          134           24.104        26.76         7.71          0 \r\n 1993          135           18.522        17.49         5.534         0 \r\n 1993          136           27.99         18.86         4.053         0 \r\n 1993          137           3.801         12.83         6.413         0.991 \r\n 1993          138           19.768        15.71         4.198         0 \r\n 1993          139           18.334        13.72         3.183         0 \r\n 1993          140           19.63         15.713        4.316         0 \r\n 1993          141           29.101        21.06         3.692         0 \r\n 1993          142           5.231         17.51         7.1           0.991 \r\n 1993          143           6.456         22.14         12.55         5.004 \r\n 1993          144           7.03          12.49         7.52          0 \r\n 1993          145           26.854        19.66         5.846         0 \r\n 1993          146           25.195        27.24         6.626         2.997 \r\n 1993          147           19.418        25.19         14.23         2.997 \r\n 1993          148           8.489         15.57         9.19          0.991 \r\n 1993          149           12.609        16.67         7.25          8.001 \r\n 1993          150           4.86          20.52         7.54          2.997 \r\n 1993          151           24.705        18.51         5.709         0 \r\n 1993          152           11.096        15.09         3.305         3.988 \r\n 1993          153           3.302         13.02         8.79          11.989 \r\n 1993          154           23.724        19.78         6.973         0.991 \r\n 1993          155           12.96         15.7          8.9           0 \r\n 1993          156           22.548        22.16         6.18          0.991 \r\n 1993          157           11.54         22.13         11.64         0 \r\n 1993          158           2.772         23.55         15.93         29.007 \r\n 1993          159           16.337        27.51         15.06         3.988 \r\n 1993          160           20.351        22.57         13.25         0 \r\n 1993          161           27.803        28.56         12.75         0 \r\n 1993          162           24.451        29.68         14.68         0 \r\n 1993          163           19.08         28.89         16.17         0 \r\n 1993          164           17.663        27.16         19.11         8.992 \r\n 1993          165           29.597        25.1          11.54         0.991 \r\n 1993          166           27.438        22.16         10.98         0 \r\n 1993          167           12.893        24.53         13.16         3.988 \r\n 1993          168           12.967        29.73         19.46         11.989 \r\n 1993          169           10.476        27.52         20.76         8.992 \r\n 1993          170           9.348         27.22         16.91         2.997 \r\n 1993          171           9.659         19.73         15.23         0 \r\n 1993          172           30.089        29.74         16.02         0 \r\n 1993          173           29.62         30.7          15.93         0 \r\n 1993          174           19.761        30.67         20.19         0 \r\n 1993          175           7.481         24.57         14.11         0.991 \r\n 1993          176           28.344        25.26         12.59         0 \r\n 1993          177           25.661        30.34         14.56         0 \r\n 1993          178           28.619        29.03         13.14         0 \r\n 1993          179           20.925        24.44         14.43         0 \r\n 1993          180           21.356        26.7          15.24         21.006 \r\n 1993          181           7.771         21.6          15.68         0 \r\n 1993          182           18.147        25.78         17.44         0 \r\n 1993          183           24.661        28.06         18.71         0 \r\n 1993          184           21.788        32.65         17.99         0 \r\n 1993          185           10.912        27.17         21.74         2.642 \r\n 1993          186           7.166         24.12         16.71         7.899 \r\n 1993          187           23.919        27.18         16.49         0 \r\n 1993          188           9.623         26.27         17.1          0 \r\n 1993          189           16.186        28.59         20.37         37.44 \r\n 1993          190           26.343        27.41         18.97         3.886 \r\n 1993          191           13.312        28.226        16.908        38.227 \r\n 1993          192           17.971        27.067        16.116        0 \r\n 1993          193           26.136        24.65         13.35         4.775 \r\n 1993          194           9.258         30.42         16.5          15.392 \r\n 1993          195           14.145        37.472        18.15         0 \r\n 1993          196           21.678        27.23         17.82         0 \r\n 1993          197           11.056        27.83         17.73         16.713 \r\n 1993          198           6.65          45            19.588        18.771 \r\n 1993          199           10.899        43.52         23.03         0 \r\n 1993          200           27.608        42.222        13.712        0 \r\n 1993          201           16.794        20.556        12.843        0 \r\n 1993          202           19.627        27.358        14.143        0 \r\n 1993          203           7.773         18.209        15.257        3.302 \r\n 1993          204           14.996        26.09         16.759        0 \r\n 1993          205           16.302        28.826        17.316        6.629 \r\n 1993          206           23.479        27.778        16.734        0 \r\n 1993          207           21.928        27.778        14.226        6.147 \r\n 1993          208           14.13         23.333        17.964        6.299 \r\n 1993          209           20.155        28.333        14.865        0 \r\n 1993          210           26.969        28.333        16.151        0 \r\n 1993          211           25.758        27.222        13.48         6.528 \r\n 1993          212           12.108        26.111        13.938        16.561 \r\n 1993          213           24.358        24.444        13.218        0 \r\n 1993          214           23.287        24.444        7.776         0 \r\n 1993          215           22.303        21.667        7.978         0 \r\n 1993          216           23.96         15.468        9.371         0 \r\n 1993          217           10.503        22.116        10.663        2.54 \r\n 1993          218           21.673        23.142        9.503         0 \r\n 1993          219           18.133        26.127        13.754        7.112 \r\n 1993          220           18.599        26.341        18.133        0 \r\n 1993          221           17.414        24.184        16.026        65.634 \r\n 1993          222           14.968        26.667        16.386        0 \r\n 1993          223           15.937        23.889        19.251        0 \r\n 1993          224           14.669        23.303        18.923        0 \r\n 1993          225           14.059        22.991        18.516        2.565 \r\n 1993          226           16.923        22.778        18.232        34.722 \r\n 1993          227           15.775        23.333        19.323        11.1 \r\n 1993          228           19.275        23.889        17.767        0 \r\n 1993          229           16.334        23.889        17.979        5.055 \r\n 1993          230           14.972        23.718        17.365        43.434 \r\n 1993          231           16.033        22.887        14.663        0 \r\n 1993          232           20.875        22.778        14.647        0 \r\n 1993          233           15.269        22.778        15.733        4.953 \r\n 1993          234           16.197        20.556        18.147        53.315 \r\n 1993          235           18.933        22.222        17.329        0 \r\n 1993          236           21.499        24.444        18.849        0 \r\n 1993          237           17.874        24.444        19.631        5.537 \r\n 1993          238           20.555        23.333        20.618        0 \r\n 1993          239           16.886        23.333        14.932        0 \r\n 1993          240           6.133         21.667        16.732        11.481 \r\n 1993          241           11.316        22.783        17.247        6.604 \r\n 1993          242           9.846         22.783        10.327        3.937 \r\n 1993          243           20.988        23.333        8.265         0 \r\n 1993          244           20.284        23.333        13.288        0 \r\n 1993          245           9.493         22.778        11.752        0 \r\n 1993          246           17.87         19.444        9.396         0 \r\n 1993          247           19.983        22.778        9.839         0 \r\n 1993          248           5.382         22.778        7.671         0 \r\n 1993          249           19.176        20            7.557         0 \r\n 1993          250           16.765        20            7.503         8.636 \r\n 1993          251           18.612        20            10.992        0 \r\n 1993          252           17.462        21.111        7.091         0 \r\n 1993          253           19.52         22.222        5.409         0 \r\n 1993          254           14.91         22.222        12.026        0 \r\n 1993          255           18.045        20.556        17.831        3.251 \r\n 1993          256           2.898         20.556        7.394         22.428 \r\n 1993          257           3.798         19.666        6.237         0 \r\n 1993          258           15.089        19.444        5.264         0 \r\n 1993          259           15.293        19.444        6.306         0 \r\n 1993          260           16.415        19.444        9.086         0 \r\n 1993          261           5.548         19.444        9.789         0 \r\n 1993          262           5.678         20.211        11.012        8.585 \r\n 1993          263           8.411         20.483        11.133        3.785 \r\n 1993          264           14.997        17.222        12.563        3.556 \r\n 1993          265           5.923         17.222        4.497         0 \r\n 1993          266           16.547        18.333        3.186         0 \r\n 1993          267           9.816         18.333        6.313         0 \r\n 1993          268           3.694         13.107        3.837         0 \r\n 1993          269           11.096        13.889        3.478         0 \r\n 1993          270           13.986        16.111        4.774         0 \r\n 1993          271           16.648        18.889        0.424         0 \r\n 1993          272           14.586        18.889        0.589         0 \r\n 1993          273           14.293        17.222        7.579         0 \r\n 1993          274           13.64         17.222       -1.435         0 \r\n 1993          275           16.405        14.444        3.13          0 \r\n 1993          276           17.567        17.778        8.328         0 \r\n 1993          277           17.293        17.778       -0.526         0 \r\n 1993          278           16.944        17.778        8.495         0 \r\n 1993          279           15.901        16.667        14.929        0 \r\n 1993          280           16.202        16.111        8.605         3.251 \r\n 1993          281           6.465         16.111       -1.243         18.618 \r\n 1993          282           15.62         16.667       -3.753         0 \r\n 1993          283           16.613        16.667       -2.582         0 \r\n 1993          284           15.697        16.111        0.732         0 \r\n 1993          285           15.772        16.111       -2.775         0 \r\n 1993          286           14.172        15.556        3.256         0 \r\n 1993          287           8.848         12.778        8.254         2.743 \r\n 1993          288           4.87          14.133        10.518        7.468 \r\n 1993          289           3.409         14.062        6.028         0 \r\n 1993          290           6.682         8.333         2.128         0 \r\n 1993          291           3.262         8.333         5.627         0 \r\n 1993          292           5.22          13.947        5.033         0 \r\n 1993          293           3.858         5            -0.082         0 \r\n 1993          294           13.229        15           -2.608         0 \r\n 1993          295           12.639        15            1.562         0 \r\n 1993          296           12.472        14.444        4.943         0 \r\n 1993          297           12.457        14.444        5.066         0 \r\n 1993          298           12.031        14.444        4.419         0 \r\n 1993          299           4.037         13.889        1.993         0 \r\n 1993          300           9.119         11.667        3.088         0 \r\n 1993          301           9.39          11.667       -3.244         0 \r\n 1993          302           4.667         10.556       -3.491         0 \r\n 1993          303           4.808         5            -8.313         0 \r\n 1993          304           11.882        15.556       -7.812         0 \r\n 1993          305           10.082        15.556       -1.188         0 \r\n 1993          306           6.014         12.778       -0.708         0 \r\n 1993          307           9.186         12.222        4.828         0 \r\n 1993          308           8.993         12.222       -3.052         0 \r\n 1993          309           2.974         11.667       -7.727         0 \r\n 1993          310           8.361         13.333       -10.546        0 \r\n 1993          311           10.964        16.667       -5.84          0 \r\n 1993          312           10.503        16.667       -7.89          0 \r\n 1993          313           9.858         16.111       -3.327         0 \r\n 1993          314           9.572         16.111       -1.556         0 \r\n 1993          315           9.309         16.111       -4.142         2.997 \r\n 1993          316           0.884         12.222        1.744         9.474 \r\n 1993          317           3.204         3.889         1.296         0 \r\n 1993          318           1.714         3.889        -1.281         3.277 \r\n 1993          319           4.697         3.333        -2.773         0 \r\n 1993          320           2.067         3.333        -1.396         0 \r\n 1993          321           8.466         8.333        -3.516         0 \r\n 1993          322           5.324         8.333        -1.267         0 \r\n 1993          323           9.594         9.444        -6.232         0 \r\n 1993          324           8.339         9.444        -1.007         0 \r\n 1993          325           8.614         8.333        -2.628         0 \r\n 1993          326           5.714         8.333         0.152         0 \r\n 1993          327           6.342         5.556         0.008         0 \r\n 1993          328           1.081         5.556        -5.001         5.08 \r\n 1993          329           5.961         5.556        -12.635        0 \r\n 1993          330           7.943         7.222        -11.246        0 \r\n 1993          331           6.098         7.222        -10.921        0 \r\n 1993          332           7.003         7.778        -11.751        0 \r\n 1993          333           4.917         7.778        -11.328        0 \r\n 1993          334           5.184         6.667        -5.483         0 \r\n 1993          335           3.101         6.111        -4.2           0 \r\n 1993          336           7.308         7.778        -6.626         0 \r\n 1993          337           4.592         7.778        -2.822         0 \r\n 1993          338           1.168         5            -2.925         0 \r\n 1993          339           2.15          4.444        -6.187         0 \r\n 1993          340           7.115         7.778        -7.983         0 \r\n 1993          341           5.693         7.778        -5.799         0 \r\n 1993          342           6.267         7.222        -3.068         0 \r\n 1993          343           3.24          7.222        -3.911         0 \r\n 1993          344           3.262         4.444        -12.679        0 \r\n 1993          345           7.062         7.778        -6.547         0 \r\n 1993          346           3.725         7.778        -0.398         0 \r\n 1993          347           1             4.444        -0.026         5.258 \r\n 1993          348           0.699         1.111         0.018         2.87 \r\n 1993          349           6.032         5            -0.917         0 \r\n 1993          350           1.833         5             0.303         0 \r\n 1993          351           1.608         1.667        -0.897         0 \r\n 1993          352           1.855         1.667        -1.828         0 \r\n 1993          353           4.79          6.111        -6.201         0 \r\n 1993          354           2.224         6.111        -10.675        0 \r\n 1993          355           3.36          5            -11.923        0 \r\n 1993          356           3.583         5            -18.484        0 \r\n 1993          357           5.226         5            -18.106        0 \r\n 1993          358           2.736         5            -16.84         0 \r\n 1993          359           6.744         7.778        -18.22         0 \r\n 1993          360           5.868         7.778        -18.901        0 \r\n 1993          361           3.718         6.667        -27.097        0 \r\n 1993          362           4.896         6.667        -18.456        0 \r\n 1993          363           6.299         8.333        -21.123        0 \r\n 1993          364           4.3           8.333        -10.852        0 \r\n 1993          365           4.589         6.111        -6.361         0 \r\n 1994          1             1.44          6.111        -8.292         0 \r\n 1994          2             1.851         3.889        -12.452        7.442 \r\n 1994          3             4.653         4.444        -11.036        0 \r\n 1994          4             6.052         6.111        -14.231        0 \r\n 1994          5             3.459         6.111        -14.773        2.794 \r\n 1994          6             3.277         3.889        -25.482        0 \r\n 1994          7             8.916         8.889        -25.827        0 \r\n 1994          8             6.799         8.889        -24.97         0 \r\n 1994          9             7.446         7.222        -15.101        0 \r\n 1994          10            6.031         6.667        -17.779        2.87 \r\n 1994          11            8.191         5.29         -13.137        0 \r\n 1994          12            6.942         5.335        -18.787        0 \r\n 1994          13            6.728        -17.768       -27.863        0 \r\n 1994          14            10.013       -24.217       -31.606        0 \r\n 1994          15            10.252       -16.624       -30.483        0 \r\n 1994          16            3.845        -15.656       -26.636        5.893 \r\n 1994          17            8.511        -25.357       -32.192        0 \r\n 1994          18            10.523       -18.735       -32.847        0 \r\n 1994          19            6.435        -16.846       -30.627        4.115 \r\n 1994          20            9.841        -6.563        -27.665        0 \r\n 1994          21            10.378       -3.183        -18.089        0 \r\n 1994          22            8.074         2.523        -15.01         0 \r\n 1994          23            9.276         0.516        -12.124        0 \r\n 1994          24            4.079        -2.684        -7.928         0 \r\n 1994          25            1.647        -4.976        -8.744         0 \r\n 1994          26            2.527        -4.434        -9.222         12.065 \r\n 1994          27            2.899        -4.341        -8.151         0 \r\n 1994          28            6.785        -6.521        -11.967        0 \r\n 1994          29            8.934        -9.322        -21.866        0 \r\n 1994          30            10.324       -16.792       -31.052        0 \r\n 1994          31            11.923       -13.971       -24.407        0 \r\n 1994          32            10.063       -10.259       -20.644        0 \r\n 1994          33            9.496        -9.821        -21.111        0 \r\n 1994          34            12.361       -9.168        -22.031        0 \r\n 1994          35            12.766       -7.288        -17.562        0 \r\n 1994          36            12.892       -6.354        -16.608        0 \r\n 1994          37            12.638       -12.102       -24.949        0 \r\n 1994          38            6.106        -16.593       -23.477        3.277 \r\n 1994          39            5.623        -17.308       -25.321        0 \r\n 1994          40            13.923       -11.91        -29.019        0 \r\n 1994          41            13.27        -7.357        -22.362        0 \r\n 1994          42            10.036       -4.53         -11.369        0 \r\n 1994          43            9.014        -2.796        -17.93         0.5 \r\n 1994          44            14.166        3.331        -13.656        1.8 \r\n 1994          45            13.835        1.564        -6.206         0 \r\n 1994          46            11.868        3.098        -10.362        0 \r\n 1994          47            12.307        5.88         -5.331         0 \r\n 1994          48            13.737        7.613        -2.186         0 \r\n 1994          49            11.044        8.586         1.444         0 \r\n 1994          50            2.998         3.04         -6.72          0 \r\n 1994          51            11.295       -1.244        -7.756         0 \r\n 1994          52            13.235       -2.727        -8.012         0 \r\n 1994          53            2.896        -7.046        -11.879        12.852 \r\n 1994          54            12.34        -8.064        -19.823        2.718 \r\n 1994          55            11.983       -8.829        -15.89         6.045 \r\n 1994          56            14.784       -8.9          -21.118        0 \r\n 1994          57            16.85        -7.436        -22.536        0 \r\n 1994          58            12.792       -2.67         -10.949        0 \r\n 1994          59            10.411       -0.074        -13.244        0 \r\n 1994          60            14.821       -0.137        -12.948        0 \r\n 1994          61            14.012        5.345        -8.68          0 \r\n 1994          62            14.822        7.822        -1.846         0 \r\n 1994          63            15.316        10.89         0.476         0 \r\n 1994          64            14.287        14.8         -0.137         0 \r\n 1994          65            10.37         7.323        -0.012         0 \r\n 1994          66            13.683        4.348        -1.923         0 \r\n 1994          67            14.281        0.183        -3.433         0 \r\n 1994          68            14.795        2.219        -4.944         0 \r\n 1994          69            13.74         1.741        -3.534         0 \r\n 1994          70            14.847        5.921        -4.358         0 \r\n 1994          71            12.922        10.385       -0.554         0 \r\n 1994          72            14.512        9.333        -1.337         0 \r\n 1994          73            11.873        15.781       -0.308         0 \r\n 1994          74            15.751        7.846        -1.723         0 \r\n 1994          75            16.254        6.892        -4.204         0 \r\n 1994          76            10.84         10.041       -0.908         0 \r\n 1994          77            11.84         11.808       -0.772         0 \r\n 1994          78            8             16.654       -0.914         0 \r\n 1994          79            15.25         17.1          1.84          0 \r\n 1994          80            19.639        13.27        -0.151         0 \r\n 1994          81            19.939        22.05         0.335         0 \r\n 1994          82            17.957        22.78        -0.673         0 \r\n 1994          83            8.971         0.868        -3.266         0 \r\n 1994          84            17.266        7.46         -5.849         0 \r\n 1994          85            6.935         9.61         -0.598         0 \r\n 1994          86            13.25         7.78         -1.534         1.9 \r\n 1994          87            8.975         3.33         -4.267         0 \r\n 1994          88            13.179        4.451        -5.636         0 \r\n 1994          89            20.845        5.663        -6.852         0 \r\n 1994          90            21.299        17.83        -5.842         0 \r\n 1994          91            21.799        19.09        -1.046         0 \r\n 1994          92            13.023        7.37         -3.006         0 \r\n 1994          93            22.273        10.52        -6.006         0 \r\n 1994          94            10.22         14.46        -0.006         6.985 \r\n 1994          95            19.437        1.744        -7.64          0 \r\n 1994          96            22.333        4.321        -6.989         0 \r\n 1994          97            20.91         11.47        -5.87          0 \r\n 1994          98            8.911         15.43         1.691         2.769 \r\n 1994          99            17.655        12.62         1.45          0 \r\n 1994          100           22.698        13.64         0.145         0 \r\n 1994          101           10.293        12.47         1.967         0 \r\n 1994          102           2.525         7.56          4.358         5.004 \r\n 1994          103           15.448        16.67         4.404         0 \r\n 1994          104           18.044        21.42         2.329         3.988 \r\n 1994          105           11.322        13.4          3.955         0.991 \r\n 1994          106           24.335        17.12         1.623         0 \r\n 1994          107           22.176        21.03         2.634         0 \r\n 1994          108           21.076        31.98         7.52          0 \r\n 1994          109           24.361        17.72         3.505         0 \r\n 1994          110           7.073         11.07         0.602         0.991 \r\n 1994          111           21.244        16.36         3.744         0 \r\n 1994          112           25.303        18.86         2.042         0 \r\n 1994          113           24.753        23.85         1.708         0 \r\n 1994          114           19.864        27.6          15.06         0 \r\n 1994          115           12.404        27.57         17.33         2.007 \r\n 1994          116           23.603        24.58         5.724         0.991 \r\n 1994          117           11.525        7.63          3.265         0 \r\n 1994          118           2.851         6.572         0.306         5.004 \r\n 1994          119           20.312        8.71         -0.427         0 \r\n 1994          120           7.323         4.558         1.499         2.007 \r\n 1994          121           20.939        13.48        -0.409         0 \r\n 1994          122           25.565        16.78        -0.523         0 \r\n 1994          123           23.145        19.37         1.726         0 \r\n 1994          124           11.785        17.56         5.704         0 \r\n 1994          125           9.627         11.84         2.777         2.007 \r\n 1994          126           19.392        14.3          2.48          0.991 \r\n 1994          127           17.466        16.43         6.459         2.007 \r\n 1994          128           22.881        18.41         3.467         0 \r\n 1994          129           25.799        21.72         5.309         0 \r\n 1994          130           21.508        25.67         5.398         0 \r\n 1994          131           21.6          24.45         10.01         0 \r\n 1994          132           27.742        22.16         7.06          0 \r\n 1994          133           26.555        26.75         8.5           0 \r\n 1994          134           4.255         18.48         12.16         2.007 \r\n 1994          135           27.881        23.34         10.75         0 \r\n 1994          136           27.619        24.86         6.285         0 \r\n 1994          137           26.789        24.78         9.89          0 \r\n 1994          138           27.28         26.49         8.49          0 \r\n 1994          139           28.573        28.08         8.01          0 \r\n 1994          140           28.541        29.31         9.72          0 \r\n 1994          141           27.865        29.8          11.01         0 \r\n 1994          142           16.726        29.06         14.85         2.997 \r\n 1994          143           9.916         28.12         15.88         13.995 \r\n 1994          144           18.635        24.37         14.65         7.01 \r\n 1994          145           14.71         22.33         10.74         2.997 \r\n 1994          146           26.587        17.57         7.78          0 \r\n 1994          147           29.173        22.39         4.846         0 \r\n 1994          148           28.742        26.07         9.94          0 \r\n 1994          149           15.483        26.19         16.4          0.991 \r\n 1994          150           25.48         30.69         15.61         2.997 \r\n 1994          151           26.986        26.37         13.98         0 \r\n 1994          152           16.822        23.1          10.3          0 \r\n 1994          153           25.346        20.78         10.24         0 \r\n 1994          154           29.792        25.19         7.78          0 \r\n 1994          155           27.747        27.17         9.54          0 \r\n 1994          156           12.653        25.59         18.21         2.997 \r\n 1994          157           28.311        30.89         17.6          0 \r\n 1994          158           12.646        22.99         15.17         0 \r\n 1994          159           27.352        21.82         11.65         0 \r\n 1994          160           26.542        25.72         7.65          0 \r\n 1994          161           22.199        27.23         13.63         5.004 \r\n 1994          162           28.884        26.13         13.7          0.991 \r\n 1994          163           20.317        28.46         13.42         18.999 \r\n 1994          164           27.474        31.25         20.08         0.991 \r\n 1994          165           28.339        33.01         23.38         0 \r\n 1994          166           21.764        32.05         23.18         0 \r\n 1994          167           24.634        31.76         20.91         0 \r\n 1994          168           25.599        33.1          21.32         0 \r\n 1994          169           17.813        32.95         20.68         0 \r\n 1994          170           19.837        36.8          20.93         0 \r\n 1994          171           10.372        34.2          21.58         20 \r\n 1994          172           30.225        29.78         16.35         0 \r\n 1994          173           19.027        28.52         15.39         0 \r\n 1994          174           3.808         28.9          16.61         50 \r\n 1994          175           26.538        26.25         17.98         0 \r\n 1994          176           20.502        29.02         17.97         0 \r\n 1994          177           21.436        25.52         15.38         0 \r\n 1994          178           22.212        26.62         16.84         0 \r\n 1994          179           22.301        24.28         16.03         0 \r\n 1994          180           21.247        24.92         16.36         0 \r\n 1994          181           28.446        28.4          16.11         0 \r\n 1994          182           28.34         26.43         17.03         6 \r\n 1994          183           25.4          24.58         14.12         0 \r\n 1994          184           14.51         29.17         12.74         0 \r\n 1994          185           17.594        36.06         23.86         14 \r\n 1994          186           18.073        34.78         21.46         12 \r\n 1994          187           19.975        30.9          20.78         0.991 \r\n 1994          188           20.012        30.9          19.05         5.994 \r\n 1994          189           9.319         30.54         14.43         0 \r\n 1994          190           19.5          23.83         14.26         0.991 \r\n 1994          191           25.683        25.63         14            0 \r\n 1994          192           23.122        29.36         17.22         0 \r\n 1994          193           10.555        30.5          18.1          0 \r\n 1994          194           9.111         27.41         17.7          34.011 \r\n 1994          195           12.294        26.64         17.06         0 \r\n 1994          196           27.612        28.29         17.95         2.007 \r\n 1994          197           13.388        26.85         19.7          2.997 \r\n 1994          198           26.354        27.38         19.09         0 \r\n 1994          199           22.562        28.84         16.8          5.994 \r\n 1994          200           8.325         34.2          19.36         13.005 \r\n 1994          201           21.031        34.18         19.51         0.991 \r\n 1994          202           19.792        29.95         15.96         5.994 \r\n 1994          203           22.168        26.32         19.21         0 \r\n 1994          204           24.786        28.46         17.23         0.991 \r\n 1994          205           27.654        26.8          16.4          0 \r\n 1994          206           22.923        24.87         12.7          0 \r\n 1994          207           18.495        22.43         11.51         0.991 \r\n 1994          208           20.504        23.61         14.48         5.004 \r\n 1994          209           24.167        25.52         17.272        0 \r\n 1994          210           20.088        28.42         17.46         0 \r\n 1994          211           22.294        27.05         16.47         0 \r\n 1994          212           15.865        29.48         16.44         2.997 \r\n 1994          213           18.46         28.42         18.64         0 \r\n 1994          214           20.719        27.34         19.64         0 \r\n 1994          215           11.173        34.12         20.44         2.997 \r\n 1994          216           19.951        28.6          10.68         0 \r\n 1994          217           26.651        22.19         7.78          0 \r\n 1994          218           24.076        23.07         11.27         0 \r\n 1994          219           18.152        27.39         13.19         0 \r\n 1994          220           22.226        25.7          11.689        0 \r\n 1994          221           12.086        20.23         11.19         0 \r\n 1994          222           2.949         23.1          15.77         15.011 \r\n 1994          223           11.794        21.85         15.97         0 \r\n 1994          224           6.258         26.78         17.65         5.994 \r\n 1994          225           16.591        30.16         12.38         0 \r\n 1994          226           25.299        20.61         8.81          0 \r\n 1994          227           25.203        24.5          9.45          0 \r\n 1994          228           23.711        27.11         12.71         0 \r\n 1994          229           11.397        28.49         16.27         0 \r\n 1994          230           22.977        27.95         18.43         0.991 \r\n 1994          231           20.614        29.63         15.22         0 \r\n 1994          232           19.915        23.4          13.9          0 \r\n 1994          233           21.755        25.52         13.26         0 \r\n 1994          234           23.656        26.52         11.64         0 \r\n 1994          235           21.255        28.19         14.66         0 \r\n 1994          236           23.137        31.8          16.94         0 \r\n 1994          237           8.002         30.02         18.34         8.992 \r\n 1994          238           22.438        29.09         17.9          0 \r\n 1994          239           17.802        31.03         20.01         0 \r\n 1994          240           18.181        21.87         10.74         0 \r\n 1994          241           13.818        23.65         9.72          0 \r\n 1994          242           7.977         22.37         14.53         0.991 \r\n 1994          243           15.691        19.35         8.81          0 \r\n 1994          244           13.276        22            8.22          0.991 \r\n 1994          245           2.913         17.06         13.42         4.9 \r\n 1994          246           17.199        23.54         14.74         9.9 \r\n 1994          247           1.92          17.95         13.75         5.004 \r\n 1994          248           15.398        26.08         13.86         0.991 \r\n 1994          249           20.85         23.51         11.22         0 \r\n 1994          250           19.381        26.58         8.42          0 \r\n 1994          251           19.697        28.83         13.91         0 \r\n 1994          252           16.345        30.11         16.11         0 \r\n 1994          253           18.363        29.9          16.89         0 \r\n 1994          254           19.324        29.01         14.95         0 \r\n 1994          255           15.735        30.05         15.72         0 \r\n 1994          256           18.927        32.06         19.33         0 \r\n 1994          257           17.889        33.56         20.59         0 \r\n 1994          258           13.365        31.77         20.35         10.998 \r\n 1994          259           15.585        23.56         13.65         0 \r\n 1994          260           19.851        24.96         10.77         0 \r\n 1994          261           19.482        27.25         10.29         0 \r\n 1994          262           19.286        28.46         10.85         0 \r\n 1994          263           10.756        27.93         12.71         0 \r\n 1994          264           10.255        27.56         15.6          8.992 \r\n 1994          265           3.858         22.06         10.52         2.997 \r\n 1994          266           2.545         13.79         8.04          0.991 \r\n 1994          267           4.234         19.15         13.82         2.997 \r\n 1994          268           8.826         22.48         9.98          0.991 \r\n 1994          269           4.917         10.9          7.45          0 \r\n 1994          270           11.403        18.93         7.97          0 \r\n 1994          271           17.468        19.23         5.635         0 \r\n 1994          272           15.911        24.42         4.338         0 \r\n 1994          273           12.852        29.26         12.62         0 \r\n 1994          274           5.487         16.69         11.74         0 \r\n 1994          275           3.34          11.78         7.3           21.006 \r\n 1994          276           5.126         14.38         8.78          5.994 \r\n 1994          277           10.567        17.6          10.48         0 \r\n 1994          278           14.368        20.69         9.35          0 \r\n 1994          279           9.463         24.46         10.79         3.988 \r\n 1994          280           8.096         17.42         10.56         2.997 \r\n 1994          281           11.653        15.25         5.116         0 \r\n 1994          282           15.744        13.61         1.65          0 \r\n 1994          283           15.528        17.14        -0.533         0 \r\n 1994          284           15.275        18.29         1.22          0 \r\n 1994          285           15.175        20.12         1.563         0 \r\n 1994          286           12.496        21.11         3.332         0 \r\n 1994          287           9.533         19.06         4.175         0 \r\n 1994          288           2.628         16.39         13.07         0 \r\n 1994          289           1.957         18.64         14.12         5.004 \r\n 1994          290           1.608         23.29         17.4          8.001 \r\n 1994          291           10.625        20.23         9.61          0.991 \r\n 1994          292           4.641         16.33         7.31          0.991 \r\n 1994          293           13.429        18.75         4.606         0 \r\n 1994          294           10.541        22.84         6.784         0 \r\n 1994          295           4.117         18.35         5.225         0 \r\n 1994          296           11.796        12.15         3.188         0 \r\n 1994          297           10.605        8.37          1.289         0 \r\n 1994          298           2.438         4.319         1.518         0 \r\n 1994          299           11.801        11.97         0.953         0 \r\n 1994          300           11.906        18.34         0.534         0 \r\n 1994          301           8.692         19.74         6.399         0 \r\n 1994          302           8.512         14.27         3.159         0 \r\n 1994          303           6.295         14.92         1.366         0 \r\n 1994          304           6.117         11.68        -1.486         0 \r\n 1994          305           8.533         12.51        -3.766         0 \r\n 1994          306           7.893         16.93         6.73          0.991 \r\n 1994          307           3.87          13.78         4.894         0 \r\n 1994          308           1.948         6.386         4.768         0.991 \r\n 1994          309           2.532         9.27          3.065         0 \r\n 1994          310           9.732         10.66         0.058         0 \r\n 1994          311           9.45          18.59         1.631         0 \r\n 1994          312           2.023         12.28         6.031         0 \r\n 1994          313           5.357         11.53        -2.413         0 \r\n 1994          314           9.092         12.03        -4.538         0 \r\n 1994          315           8.9           13.28        -1.601         0 \r\n 1994          316           3.535         12.84         6.068         0 \r\n 1994          317           1.012         16.44         9.04          8.534 \r\n 1994          318           7.607         10.1         -1.561         0 \r\n 1994          319           8.802         8.19         -4.683         0 \r\n 1994          320           8.168         9.24         -5.869         0 \r\n 1994          321           6.953         12.21         3.379         0 \r\n 1994          322           7.236         8.96         -5.294         0 \r\n 1994          323           5.278         2.715        -8.33          0 \r\n 1994          324           0.886         10.68         1.718         27.991 \r\n 1994          325           6.03          10.84        -4.422         0 \r\n 1994          326           8.14          2.04         -8             0 \r\n 1994          327           8.028         6.088        -4.983         0 \r\n 1994          328           7.157         8.77         -2.471         0 \r\n 1994          329           7.949         6.379        -6.084         0 \r\n 1994          330           7.883         3.779        -3.151         9.119 \r\n 1994          331           0.777         7.39         -1.323         9.703 \r\n 1994          332           3.122        -1.191        -4.857         0 \r\n 1994          333           3.141        -3.267        -4.983         0 \r\n 1994          334           7.526         5.114        -9.62          0 \r\n 1994          335           7.234         11.71        -3.037         0 \r\n 1994          336           7.291         12.03        -1.889         0 \r\n 1994          337           1.916         7.36          1.888         0 \r\n 1994          338           1.366         14.51         2.582         0 \r\n 1994          339           3.375         4.592        -7.58          3.81 \r\n 1994          340           3.046        -6.743        -8.78          12.624 \r\n 1994          341           7.364        -1.318        -9.79          0 \r\n 1994          342           3.325        -2.778        -9.43          0 \r\n 1994          343           5.277        -2.884        -11.71         0 \r\n 1994          344           6.033        -7.17         -16.37         0 \r\n 1994          345           7.205        -8.96         -21.48         0 \r\n 1994          346           7.188        -4.966        -16.04         0 \r\n 1994          347           4.234        -7.52         -15.98         0 \r\n 1994          348           4.991        -4.376        -11.07         5.436 \r\n 1994          349           3.834         2.342        -6.105         0 \r\n 1994          350           2.338         6.142        -5.781         0 \r\n 1994          351           6.565        -0.552        -10.1          0 \r\n 1994          352           7.015        -5.637        -14.12         0 \r\n 1994          353           5.255         1.706        -13.38         0 \r\n 1994          354           5.627         4.44         -2.338         0 \r\n 1994          355           3.578         5.631         0.029         0 \r\n 1994          356           2.788         5.708        -4.693         0 \r\n 1994          357           6.487         3.961        -8.81          0 \r\n 1994          358           4.574        -3.104        -10.42         0 \r\n 1994          359           6.604         4.527        -10.01         0 \r\n 1994          360           6.078         6.016        -7.74          0 \r\n 1994          361           6.806         4.487        -2.328         0 \r\n 1994          362           4.144         0.811        -6.28          0 \r\n 1994          363           4.07         -1.325        -7.85          0 \r\n 1994          364           2.19         -0.638        -4.055         0 \r\n 1994          365           3.8          -4.065        -10.31         0 \r\n 1995          1             7.211        -10.3         -15.72         0 \r\n 1995          2             6.766        -8.57         -16.25         0 \r\n 1995          3             7.245        -12.65        -21.14         0 \r\n 1995          4             7.394        -18.12        -22.76         0 \r\n 1995          5             7.247        -5.725        -22.19         5.715 \r\n 1995          6             3.171        -3.141        -15.91         0 \r\n 1995          7             7.592        -13.97        -23.77         0 \r\n 1995          8             7.632        -10.22        -19.09         0 \r\n 1995          9             4.332        -8.17         -10.25         0 \r\n 1995          10            4.987        -3.201        -9.8           0 \r\n 1995          11            3.722         5.986        -3.201         0 \r\n 1995          12            3.078         7.74          4.944         0 \r\n 1995          13            4.216         5.4          -4.982         0 \r\n 1995          14            4.272        -3.989        -10.77         0 \r\n 1995          15            4.699        -3.191        -13.03         0 \r\n 1995          16            4.612        -0.029        -3.2           0 \r\n 1995          17            2.218         1.744        -7.51          3.8 \r\n 1995          18            7.545        -2.703        -11.39         0 \r\n 1995          19            3.697        -2.673        -8.61          0 \r\n 1995          20            8.174        -6.734        -10.94         0 \r\n 1995          21            5.707        -7.07         -11.81         0 \r\n 1995          22            6.577        -10.15        -12.81         1.5 \r\n 1995          23            8.907        -10.04        -15.87         0 \r\n 1995          24            8.824        -4.114        -18.03         0 \r\n 1995          25            8.963        -4.065        -13.2          0 \r\n 1995          26            8.735         0.076        -16.97         0 \r\n 1995          27            2.826        -1.02         -9.58          5.842 \r\n 1995          28            8.878        -1.926        -10.65         0 \r\n 1995          29            6.032        -3.305        -10.75         0 \r\n 1995          30            8.911        -5.482        -11.73         0 \r\n 1995          31            9.358         3.713        -5.765         0 \r\n 1995          32            5.22          0.746        -5.216         0 \r\n 1995          33            8.788         4.702        -4.682         0 \r\n 1995          34            3.287         1.306        -9.27          0 \r\n 1995          35            8.436        -8.73         -15.45         0 \r\n 1995          36            11.044       -12.72        -20.32         0 \r\n 1995          37            8.733        -9.06         -22.35         0 \r\n 1995          38            9.249        -9.06         -16.9          0 \r\n 1995          39            11.223       -4.995        -20.33         0 \r\n 1995          40            8.508         1.327        -6.517         0 \r\n 1995          41            11.172        1.943        -14.91         0 \r\n 1995          42            11.188       -14.45        -22.67         0 \r\n 1995          43            12.252       -9.54         -22.13         0 \r\n 1995          44            12.075       -9.84         -18.39         0 \r\n 1995          45            4.959        -3.364        -15.98         0 \r\n 1995          46            7.957        -1.375        -15.01         1 \r\n 1995          47            11.27        -1.986        -18.47         0 \r\n 1995          48            10.925        5.895        -11.35         0 \r\n 1995          49            10.46         6.934        -2.326         0 \r\n 1995          50            13.51         3.118        -5.528         0 \r\n 1995          51            13.287        3.512        -4.761         0 \r\n 1995          52            6.886        -0.083        -6.595         0 \r\n 1995          53            11.763        6.329        -2.787         0 \r\n 1995          54            10.85         2.585        -3.796         0 \r\n 1995          55            10.161        2.289        -6.477         0 \r\n 1995          56            13.989        6.515        -3.148         0 \r\n 1995          57            2.343        -2.108        -4.752         0 \r\n 1995          58            6.902         0.077        -4.229         0 \r\n 1995          59            14.019       -3.882        -13.57         0 \r\n 1995          60            15.786       -8.98         -16.66         0 \r\n 1995          61            15.947       -5.47         -18.6          0 \r\n 1995          62            15.865        1.432        -13.89         0 \r\n 1995          63            10.431        4.974        -8.11          2.87 \r\n 1995          64            4.808         2.202        -1.851         0 \r\n 1995          65            2.768         0.085        -5.46          8.763 \r\n 1995          66            15.413       -5.459        -18.52         0 \r\n 1995          67            17.588       -12.48        -21.91         0 \r\n 1995          68            14.846       -2.606        -22.499        0 \r\n 1995          69            16.966        10.1         -3.057         0 \r\n 1995          70            17.301        15.54         0.869         0 \r\n 1995          71            11.015        15.88         5.809         0 \r\n 1995          72            8.549         18.55         10.78         0 \r\n 1995          73            9.472         17            7.88          0 \r\n 1995          74            18.229        20.68         3.11          0 \r\n 1995          75            17.229        21.68         4.828         0 \r\n 1995          76            18.313        15.55         3.696         0 \r\n 1995          77            2.743         4.913         1.851         3.327 \r\n 1995          78            9.06          11.11         2.537         15.367 \r\n 1995          79            2.714         10.44        -0.236         0 \r\n 1995          80            17.943        9.77         -1.171         0 \r\n 1995          81            7.968         11.02        -1.114         0 \r\n 1995          82            10.643        10.22         0.567         0 \r\n 1995          83            20.188        12.39        -2.491         2.007 \r\n 1995          84            8.941         12.45         2.146         2.007 \r\n 1995          85            5.726         10.62         3.609         13.005 \r\n 1995          86            1.909         6.545         3.226         5.004 \r\n 1995          87            3.748         5.843         1.287         0.991 \r\n 1995          88            15.86         7.27         -1.409         0 \r\n 1995          89            6.655         2.727        -1.725         0 \r\n 1995          90            7.144         1.375        -1.976         0 \r\n 1995          91            17.218        9.39         -4.77          0 \r\n 1995          92            20.832        21.61        -4.354         0 \r\n 1995          93            17.583        18.87        -8.79          0 \r\n 1995          94            22.846       -1.754        -7.338         0 \r\n 1995          95            19.013        17.77        -3.96          0 \r\n 1995          96            22.295        11.88         0.937         0 \r\n 1995          97            2.318         5.72          2.565         7.01 \r\n 1995          98            7.129         8.79          3.263         2.997 \r\n 1995          99            2.994         3.321        -1.41          2.007 \r\n 1995          100           2.409         0.638        -1.21          0.991 \r\n 1995          101           2.092         14.65         0.581         18.009 \r\n 1995          102           3.989         3.905         0.059         0.991 \r\n 1995          103           23.892        15           -0.171         0 \r\n 1995          104           14.108        12.59         2.043         0 \r\n 1995          105           18.58         20.14         5.57          0 \r\n 1995          106           6.501         10.91         4.683         0.991 \r\n 1995          107           10.629        11.47         4.289         0.991 \r\n 1995          108           8.147         19.56         1.688         5.004 \r\n 1995          109           23.518        13.06         0.316         0.991 \r\n 1995          110           2.681         6.966         2.788         0.991 \r\n 1995          111           7.731         6.892         1.279         0 \r\n 1995          112           25.426        14.57         0.362         0.991 \r\n 1995          113           23.5          16.27        -0.293         0 \r\n 1995          114           13.376        11.43         3.467         0 \r\n 1995          115           20.453        16.39         0.677         0 \r\n 1995          116           3.839         11.73         3.983         3 \r\n 1995          117           16.896        11.3          0.07          1 \r\n 1995          118           18.16         17.55         1.128         0 \r\n 1995          119           6.681         12.32         8.6           3.5 \r\n 1995          120           16.612        14.37         5.56          8 \r\n 1995          121           11.908        11.83         3.475         0 \r\n 1995          122           18.494        17.08         5.384         0 \r\n 1995          123           9.434         14.53         8.1           0 \r\n 1995          124           13.044        15.06         6.52          3 \r\n 1995          125           21.365        20.67         5.751         0 \r\n 1995          126           14.038        21.78         6.631         0 \r\n 1995          127           13.84         22.1          10.54         0 \r\n 1995          128           1.983         18.52         9.68          4 \r\n 1995          129           5.84          20.89         10.04         6 \r\n 1995          130           6.523         12.32         8.86          5 \r\n 1995          131           23.249        19.98         5.802         0 \r\n 1995          132           18.235        20.11         5.753         0 \r\n 1995          133           7.372         20.02         13            13.005 \r\n 1995          134           17.693        16.83         8.44          0 \r\n 1995          135           27.487        23.24         5.936         0 \r\n 1995          136           15.149        27.2          10.39         0 \r\n 1995          137           26.52         18.59         5.87          0 \r\n 1995          138           18.453        18.35         7.78          0 \r\n 1995          139           27.778        24.67         6.355         0 \r\n 1995          140           26.74         20.3          9.94          0 \r\n 1995          141           28.199        22.72         5.965         0 \r\n 1995          142           14.91         24.82         10.03         2.007 \r\n 1995          143           9.292         13.71         7.36          3.988 \r\n 1995          144           23.815        18.83         6.826         0 \r\n 1995          145           25.057        22.21         7.29          0 \r\n 1995          146           21.291        22.45         7.86          0 \r\n 1995          147           2.12          23.3          11.87         16.993 \r\n 1995          148           9.043         25.19         10.16         2.997 \r\n 1995          149           25.866        23.1          9.19          0 \r\n 1995          150           28.594        26.89         10.86         0 \r\n 1995          151           16.004        25.23         11.85         0 \r\n 1995          152           12.353        22.57         14.74         2.997 \r\n 1995          153           10.178        24.29         15.17         5.004 \r\n 1995          154           27.009        27.96         12.58         0 \r\n 1995          155           24.62         27.88         15.45         0 \r\n 1995          156           16.315        38.5          16.09         7.01 \r\n 1995          157           21.165        37.12         19.69         11.989 \r\n 1995          158           20.73         32.43         11.23         0.991 \r\n 1995          159           6.702         14.06         9.61          0 \r\n 1995          160           15.901        21.12         11.4          0 \r\n 1995          161           14.754        24.62         12.18         0.991 \r\n 1995          162           22.665        22.3          8.69          0 \r\n 1995          163           28.748        24.83         10.28         0 \r\n 1995          164           28.987        28.16         11.15         0 \r\n 1995          165           28.963        29.22         13.6          0 \r\n 1995          166           27.909        30.79         15.29         0 \r\n 1995          167           25.577        31.32         19.41         0 \r\n 1995          168           27.025        33.67         21.15         0 \r\n 1995          169           24.697        32.01         20.27         0 \r\n 1995          170           27.428        32.46         17.78         0 \r\n 1995          171           26.554        34.02         17.26         0 \r\n 1995          172           26.42         34.9          19.51         0 \r\n 1995          173           25.298        34.78         20.39         0 \r\n 1995          174           26.118        35.59         19.04         0 \r\n 1995          175           5.94          41.722        20.2          10.008 \r\n 1995          176           14.117        41.128        18.13         24.994 \r\n 1995          177           9.095         42.68         20.93         3.988 \r\n 1995          178           13.785        30.02         19.98         2.007 \r\n 1995          179           13.341        33.68         20.91         2.007 \r\n 1995          180           21.324        26.4          15.66         0.991 \r\n 1995          181           21.563        20.2          10.96         0 \r\n 1995          182           26.177        20.96         9.29          0 \r\n 1995          183           27.922        24.37         9.36          0 \r\n 1995          184           21.254        27.27         13.04         0 \r\n 1995          185           15.787        33.43         19.15         11.989 \r\n 1995          186           10.497        36.22         17.28         5.004 \r\n 1995          187           26.464        23.63         13.61         0 \r\n 1995          188           25.623        26.12         12.36         0 \r\n 1995          189           17.893        27.22         13.62         0 \r\n 1995          190           27.567        27.05         17.74         0 \r\n 1995          191           27.512        31.35         17.6          0 \r\n 1995          192           27.191        32.83         22.04         0 \r\n 1995          193           25.3          35            24.79         0 \r\n 1995          194           27.694        37.05         22.563        0 \r\n 1995          195           26.275        33.86         22.5          0 \r\n 1995          196           13.861        30.72         21.07         3.988 \r\n 1995          197           15.448        31.33         20.77         0 \r\n 1995          198           26.393        26.12         16.63         0 \r\n 1995          199           27.253        26.91         14.79         0 \r\n 1995          200           9.317         29.45         16.56         8.992 \r\n 1995          201           26.155        29.86         17.26         0 \r\n 1995          202           25.534        28.11         15.74         0 \r\n 1995          203           19.475        30.863        19.166        11.989 \r\n 1995          204           27.38         31.789        18.658        0.991 \r\n 1995          205           27.201        30.34         17.97         0 \r\n 1995          206           21.388        29.38         18.22         10.998 \r\n 1995          207           22.401        32.19         20.29         0 \r\n 1995          208           16.599        30.56         20.37         2.007 \r\n 1995          209           27.12         31.27         18.33         0 \r\n 1995          210           26.395        34.08         20.01         0 \r\n 1995          211           25.838        32.98         23.31         0 \r\n 1995          212           13.862        30.86         15.73         3.988 \r\n 1995          213           22.531        24.8          15.78         0 \r\n 1995          214           8.769         25.83         20.21         0.991 \r\n 1995          215           13.537        31.66         22.78         0 \r\n 1995          216           17.203        37.79         19.82         0 \r\n 1995          217           21.145        31.02         23.14         10.998 \r\n 1995          218           11.069        31.34         21.15         0 \r\n 1995          219           20.326        31.33         21.82         0 \r\n 1995          220           11.808        31.97         24.33         0 \r\n 1995          221           9.128         33.05         23.84         0 \r\n 1995          222           15.705        33.98         21.57         2.997 \r\n 1995          223           23.73         32.91         24.89         0 \r\n 1995          224           24.436        33.17         24.73         0 \r\n 1995          225           22.155        32.95         24.43         2.997 \r\n 1995          226           16.218        26.33         19.69         2.997 \r\n 1995          227           11.647        27.23         19.32         0 \r\n 1995          228           3.767         33.97         22.478        10.998 \r\n 1995          229           18.868        33.352        20.936        0 \r\n 1995          230           22.848        39.539        25.79         0.991 \r\n 1995          231           24.993        26.43         14.44         0 \r\n 1995          232           24.044        27.58         14.08         0 \r\n 1995          233           24.961        30.84         15.69         0 \r\n 1995          234           15.032        30.39         18.18         0 \r\n 1995          235           17.787        31.08         20.21         0 \r\n 1995          236           21.899        31.44         18.5          0 \r\n 1995          237           23.123        31.4          17.4          0 \r\n 1995          238           19.504        32.53         18.98         0 \r\n 1995          239           18.551        34.86         23.85         0 \r\n 1995          240           18.431        33.05         22.21         5.994 \r\n 1995          241           5.443         28.04         23.01         27 \r\n 1995          242           19.928        32.06         23.37         0.991 \r\n 1995          243           17.161        23.39         16.12         0 \r\n 1995          244           22.667        27.09         12.94         0 \r\n 1995          245           14.144        27.53         13.05         0 \r\n 1995          246           19.922        29.51         15.9          0 \r\n 1995          247           21.598        29.97         13.89         0 \r\n 1995          248           16.207        30.19         14.96         0 \r\n 1995          249           10.091        27.45         20.17         2.007 \r\n 1995          250           5.637         20.11         6.711         0 \r\n 1995          251           22.066        19.14         3.494         0 \r\n 1995          252           21.02         20.83         5.288         0 \r\n 1995          253           19.67         22.86         7.93          0 \r\n 1995          254           19.289        24.25         8.58          0.991 \r\n 1995          255           7.943         22.52         14.18         0 \r\n 1995          256           19.95         30.2          13.23         0 \r\n 1995          257           20.485        23.25         9.37          0 \r\n 1995          258           19.113        27.62         8.8           0 \r\n 1995          259           16.139        27.87         8.96          0 \r\n 1995          260           20.209        20.89         5.136         0 \r\n 1995          261           4.883         15.86         10.59         2.007 \r\n 1995          262           1.668         15.58         8.54          3.988 \r\n 1995          263           8.339         11            3.712         0.991 \r\n 1995          264           4.994         9.54         -0.129         0 \r\n 1995          265           15.782        10.69        -0.256         0 \r\n 1995          266           13.959        14.18        -0.642         0 \r\n 1995          267           4.241         14.9          3.006         2.007 \r\n 1995          268           17.266        20.05         4.387         0 \r\n 1995          269           17.987        25.19         5.644         0 \r\n 1995          270           17.808        27.74         5.269         0 \r\n 1995          271           17.076        27.11         11.461        0 \r\n 1995          272           2.339         20.74         13.8          10.998 \r\n 1995          273           7.306         24.93         12.58         0.991 \r\n 1995          274           16.542        21.43         9.07          0 \r\n 1995          275           4.072         19.31         7.52          2.007 \r\n 1995          276           15.879        18.61         5.528         0 \r\n 1995          277           15.675        22.55         4.862         0 \r\n 1995          278           7.683         16.17         8.31          11.989 \r\n 1995          279           2.393         12.76         6.436         0.991 \r\n 1995          280           5.549         10.52         1.93          0 \r\n 1995          281           10.43         17.55         0.258         2.007 \r\n 1995          282           8.165         13.922        4.561         0 \r\n 1995          283           15.749        22.81         4.581         0 \r\n 1995          284           14.636        28.38         8.11          0 \r\n 1995          285           14.263        29.18         14.69         0 \r\n 1995          286           6.726         19.41         6.851         0 \r\n 1995          287           6.217         9.32          1.52          0 \r\n 1995          288           15.193        12.66        -1.14          0 \r\n 1995          289           14.473        17.19        -2.217         0 \r\n 1995          290           12.815        23.41         8.7           0 \r\n 1995          291           12.313        18.75         2.049         0 \r\n 1995          292           2.323         15.39         5.472         0.991 \r\n 1995          293           1.869         5.644         2.582         0 \r\n 1995          294           4.547         6.745        -2.332         0 \r\n 1995          295           9.243         12.52        -4.161         0 \r\n 1995          296           3.794         16.14         2.074         10.008 \r\n 1995          297           10.417        10.58        -1.284         0 \r\n 1995          298           14.363        16.34        -1.844         0 \r\n 1995          299           7.855         15.77         0.342         0 \r\n 1995          300           2.915         8.97          5.709         2.997 \r\n 1995          301           8.278         9.31          0.574         0.991 \r\n 1995          302           6.4           6.108        -1.69          0.991 \r\n 1995          303           9.001         4.974        -0.132         0.991 \r\n 1995          304           2.158         2.497        -0.992         2.997 \r\n 1995          305           0.848         4.709         0.596         0.991 \r\n 1995          306           5.26          1.619        -5.769         0 \r\n 1995          307           10.535       -1.262        -7.83          0 \r\n 1995          308           13.442        1.094        -11.23         0 \r\n 1995          309           3.701         4.443        -3.517         0 \r\n 1995          310           10.712        11.31         0.299         0 \r\n 1995          311           3.874         0.459        -7.23          0 \r\n 1995          312           10.364       -1.44         -9.75          0 \r\n 1995          313           8.645         10.23        -5.344         0 \r\n 1995          314           3.602         3.082        -5.426         0 \r\n 1995          315           10.368       -3.102        -9.902         0 \r\n 1995          316           7.419         0.811        -9.604         0 \r\n 1995          317           4.165         1.013        -5.389         0 \r\n 1995          318           6.522         2.276        -7.89          0 \r\n 1995          319           5.047         3.121        -7.722         0 \r\n 1995          320           4.392         3.878        -0.983         0 \r\n 1995          321           2.768         4.394        -3.815         0 \r\n 1995          322           8.308         8.953        -1.773         0 \r\n 1995          323           7.015         8.236        -2.581         0 \r\n 1995          324           7.798         2.098        -6.699         0 \r\n 1995          325           8.85          5.116        -10.976        0 \r\n 1995          326           5.844         1.352        -11.586        0 \r\n 1995          327           5.369        -0.427        -14.141        0 \r\n 1995          328           4.181         3.609        -4.949         0 \r\n 1995          329           4.624         4.288        -2.117         0 \r\n 1995          330           3.263         1.889        -6.432         4.064 \r\n 1995          331           3.027        -6.088        -16.246        5.359 \r\n 1995          332           8.472        -5.727        -18.066        0 \r\n 1995          333           7.661         2.141        -12.257        0 \r\n 1995          334           5.374         4.816        -2.893         0 \r\n 1995          335           7.326         6.667        -4.907         0 \r\n 1995          336           7.595         8.541        -2.631         0 \r\n 1995          337           8.095         4.347        -8.525         0 \r\n 1995          338           4.411         3.513        -6.318         0 \r\n 1995          339           8.161        -0.323        -8.698         0 \r\n 1995          340           4.651        -0.718        -11.995        0 \r\n 1995          341           2.431        -2.475        -17.338        0 \r\n 1995          342           4.14         -13.551       -21.69         6.198 \r\n 1995          343           8.407        -12.888       -21.468        0 \r\n 1995          344           4.005        -14.194       -19.851        0 \r\n 1995          345           4.644        -13.196       -18.126        0 \r\n 1995          346           4.014        -4.289        -14.154        0 \r\n 1995          347           0.699         3.251        -4.806         1 \r\n 1995          348           7.047         2.241        -10.515        0 \r\n 1995          349           7.218         0.698        -10.958        0 \r\n 1995          350           6.086         1.204        -6.171         0 \r\n 1995          351           2.484         0.65         -2.705         0 \r\n 1995          352           3.701        -0.045        -5.349         0 \r\n 1995          353           1.813        -1.873        -9.259         0 \r\n 1995          354           2.437        -4.358        -10.198        0 \r\n 1995          355           1.88         -5.304        -11.831        0 \r\n 1995          356           2.412        -5.009        -8.192         0 \r\n 1995          357           1.793        -2.918        -7.803         0 \r\n 1995          358           1.096        -3.281        -8.852         0 \r\n 1995          359           1.658        -1.527        -7.573         0 \r\n 1995          360           3.582        -2.544        -8.62          0 \r\n 1995          361           2.693        -2.442        -16.449        0 \r\n 1995          362           7.105        -0.977        -13.251        0 \r\n 1995          363           1.631         0.466        -5.794         0 \r\n 1995          364           2.507        -0.091        -2.149         0 \r\n 1995          365           1.737        -0.121        -2.96          0 \r\n 1996          1             1.867        -0.121        -9.455         0 \r\n 1996          2             4.522        -5.893        -18.536        0 \r\n 1996          3             6.928        -6.229        -13.876        0 \r\n 1996          4             6.57         -9.611        -19.099        0 \r\n 1996          5             6.24         -14.235       -22.483        0 \r\n 1996          6             7.91         -10.817       -22.301        0 \r\n 1996          7             7.907        -3.388        -17.006        0 \r\n 1996          8             5.76          0.803        -6.451         0 \r\n 1996          9             2.573        -1.301        -10.074        0 \r\n 1996          10            0.979        -2.216        -5.748         3.632 \r\n 1996          11            2.672         5.378        -6.208         0 \r\n 1996          12            8.301         10.614       -4.034         0 \r\n 1996          13            8.022         3.988        -5.694         0 \r\n 1996          14            2.899        -2.085        -13.424        0 \r\n 1996          15            3.204         3.788        -4.618         0 \r\n 1996          16            6.472         4.761        -7.057         0 \r\n 1996          17            1.131         10.916       -18.057        10.82 \r\n 1996          18            1.282        -17.34        -27.283        8.636 \r\n 1996          19            7.93         -11.155       -21.356        0 \r\n 1996          20            7.664        -2.196        -15.411        0 \r\n 1996          21            7.189        -2.047        -13.123        0 \r\n 1996          22            5.903        -10.27        -15.598        0 \r\n 1996          23            5.132        -10.308       -20.296        4.724 \r\n 1996          24            9.083        -9.801        -21.843        3.048 \r\n 1996          25            5.793        -9.044        -17.506        3.429 \r\n 1996          26            2.675        -10.161       -21.278        15.367 \r\n 1996          27            10.162       -4.999        -21.814        0 \r\n 1996          28            8.324        -3.229        -22.038        0 \r\n 1996          29            8.638        -18.583       -26.688        0 \r\n 1996          30            10.17        -18.853       -32.281        0 \r\n 1996          31            11.053       -21.6         -30.248        0 \r\n 1996          32            10.608       -17.778       -35.556        0 \r\n 1996          33            11.903       -17.778       -34.386        0 \r\n 1996          34            11.773       -17.673       -31.542        0 \r\n 1996          35            11.552       -12.509       -20.829        0 \r\n 1996          36            11.285       -1.983        -22.721        0 \r\n 1996          37            8.516         5.932        -3.486         0 \r\n 1996          38            8.585         5.693        -0.212         0 \r\n 1996          39            10.98         6.268        -5.911         0 \r\n 1996          40            10.63         4.487        -0.013         0 \r\n 1996          41            8.646         1.219        -3.911         0 \r\n 1996          42            5.596        -3.727        -6.713         0 \r\n 1996          43            7.016         3.469        -6.744         0 \r\n 1996          44            8.748         0.404        -3.408         0 \r\n 1996          45            6.708        -2.718        -9.874         0 \r\n 1996          46            8.776        -4.904        -16.344        0 \r\n 1996          47            12.644       -3.464        -8.753         0 \r\n 1996          48            9.806        -4.838        -15.196        0 \r\n 1996          49            6.278         4.911        -8.872         0 \r\n 1996          50            11.711        5.721        -0.483         0 \r\n 1996          51            12.048        1.989        -3.646         0 \r\n 1996          52            3.661         2.516        -2.507         0 \r\n 1996          53            2.048         5.513         0.926         0 \r\n 1996          54            8.32          11.882       -2.291         0 \r\n 1996          55            13.935        11.488       -0.731         0 \r\n 1996          56            12.439        6.029        -1.424         0 \r\n 1996          57            6.041        -0.769        -9.359         0 \r\n 1996          58            9.86         -8.267        -16.659        0 \r\n 1996          59            14.757       -5.071        -19.32         0 \r\n 1996          60            15.294       -1.558        -10.547        0 \r\n 1996          61            12.832       -3.911        -16.258        0 \r\n 1996          62            14.555       -3.785        -19.444        0 \r\n 1996          63            15.856        1.079        -12.188        0 \r\n 1996          64            8.15         -0.203        -6.889         0 \r\n 1996          65            10.636       -3.598        -13.979        0 \r\n 1996          66            11.137       -12.03        -20.431        1.2 \r\n 1996          67            14.604       -6.571        -20.797        0 \r\n 1996          68            16.743       -0.748        -18.157        0 \r\n 1996          69            17.129        6.458        -10.132        0 \r\n 1996          70            13.4          9.737        -2.134         0 \r\n 1996          71            15.256        14.384        0.415         0 \r\n 1996          72            15.451        19.632       -0.152         0 \r\n 1996          73            16.824        12.977       -0.099         0 \r\n 1996          74            14.854        8.553        -3.826         0 \r\n 1996          75            18.013        9.701        -3.131         0 \r\n 1996          76            14.393        8.807        -1.223         0 \r\n 1996          77            18.205        5.238        -5.803         1.5 \r\n 1996          78            12.951        1.441        -6.468         0 \r\n 1996          79            7.555         2.334        -5.082         0 \r\n 1996          80            19.003        4.892        -10.594        0 \r\n 1996          81            14.968        7.304        -7.787         0 \r\n 1996          82            18.77         9.484        -5.658         0 \r\n 1996          83            6.313         11.082        2.509         6.985 \r\n 1996          84            2.198         9.118        -10.817        22.149 \r\n 1996          85            18.395       -7.384        -16.974        0 \r\n 1996          86            20.532        3.771        -9.211         0 \r\n 1996          87            20.598        7.887        -4.331         0 \r\n 1996          88            18.057        11.677       -0.768         0 \r\n 1996          89            14.136        7.686         0.612         0 \r\n 1996          90            2.138         4.376        -4.036         3.632 \r\n 1996          91            19.638        8.01         -3.947         0 \r\n 1996          92            19.665        17.421        2.393         0 \r\n 1996          93            18.77         14.242        1.273         0 \r\n 1996          94            6.722         4.313        -3.069         0 \r\n 1996          95            6.191         4.94         -4.512         0 \r\n 1996          96            14.276        6.21         -5.682         0 \r\n 1996          97            18.546        5.66         -3.889         0 \r\n 1996          98            13.889        8.091        -5.07          0 \r\n 1996          99            10.88         11.164       -4.869         0 \r\n 1996          100           24.045        19.013       -2.327         0 \r\n 1996          101           23.139        25.062        5.537         0 \r\n 1996          102           17.29         22.044        5.009         0 \r\n 1996          103           2.859         8.503        -1.191         0 \r\n 1996          104           14.975        4.412        -1.141         0 \r\n 1996          105           4.258         9.122        -1.301         8.026 \r\n 1996          106           24.141        11.653       -1.759         0 \r\n 1996          107           25.183        23.421        0.521         0 \r\n 1996          108           24.174        19.836        10.567        0 \r\n 1996          109           11.792        19.606        3.704         6.198 \r\n 1996          110           5.084         14.441        3.187         6.731 \r\n 1996          111           12.786        18.716       -0.427         0 \r\n 1996          112           9.197         16.761        1.487         0 \r\n 1996          113           25.362        15.558       -2.387         0 \r\n 1996          114           26.07         21.392        1.1           0 \r\n 1996          115           14.972        19.809        9.159         0 \r\n 1996          116           17.59         13.071       -0.509         0 \r\n 1996          117           24.268        14.773       -0.589         0 \r\n 1996          118           24.101        16.285        4.148         0 \r\n 1996          119           8.218         11.818        1.883         5.029 \r\n 1996          120           10.816        14.961       -0.561         3.226 \r\n 1996          121           23.999        15.604        0.52          0 \r\n 1996          122           25.941        14.468       -0.153         0 \r\n 1996          123           3.49          12.763        4.124         3.988 \r\n 1996          124           5.398         17.412        3.883         0 \r\n 1996          125           19.93         17.015        6.398         0 \r\n 1996          126           16.526        12.636        3.371         0 \r\n 1996          127           9.718         16.881        5.805         0 \r\n 1996          128           19.252        16.362        8.349         0 \r\n 1996          129           8.913         17.312        9.509         15.342 \r\n 1996          130           3.994         14.861        9.217         7.01 \r\n 1996          131           4.974         13.222        3.417         0 \r\n 1996          132           14.588        13.558        1.588         0 \r\n 1996          133           13.598        16.364        0.734         0 \r\n 1996          134           21.536        14.539        5.211         0 \r\n 1996          135           4.891         16.283        8.544         6.071 \r\n 1996          136           9.085         17.903        12.388        0 \r\n 1996          137           13.566        30.273        14.296        0 \r\n 1996          138           24.871        31.394        15.95         5.004 \r\n 1996          139           24.481        30.014        17.408        0 \r\n 1996          140           21.385        23.667        13.978        0 \r\n 1996          141           12.537        24.353        9.005         3.734 \r\n 1996          142           25.161        22.594        10.286        0 \r\n 1996          143           7.026         19.128        12.366        10.795 \r\n 1996          144           7.553         15.418        5.998         3.378 \r\n 1996          145           7.905         14.578        7.253         18.999 \r\n 1996          146           5.046         13.005        6.954         0 \r\n 1996          147           4.271         12.609        8.171         3.023 \r\n 1996          148           4.189         14.909        7.799         27.991 \r\n 1996          149           3.536         22.043        7.726         8.153 \r\n 1996          150           24.397        21.902        7.608         0 \r\n 1996          151           27.134        21.169        8.295         0 \r\n 1996          152           9.38          19.155        13.832        3.531 \r\n 1996          153           10.391        22.659        10.654        19.177 \r\n 1996          154           17.168        16.659        11.103        0 \r\n 1996          155           7.073         16.561        7.2           0 \r\n 1996          156           25.594        20.828        7.341         0 \r\n 1996          157           11.78         19.181        10.227        25.222 \r\n 1996          158           9.076         16.969        11.881        10.795 \r\n 1996          159           8.687         21.962        10.704        0 \r\n 1996          160           27.622        23.687        11.222        0 \r\n 1996          161           26.842        21.894        15.75         0 \r\n 1996          162           15.918        25.326        14.559        0 \r\n 1996          163           24.383        30.528        14.279        0 \r\n 1996          164           24.897        30.039        18.459        0 \r\n 1996          165           26.486        30.054        15.12         0 \r\n 1996          166           26.472        31.781        17.084        0 \r\n 1996          167           19.469        27.646        19.389        0 \r\n 1996          168           7.993         25.778        19.161        49.505 \r\n 1996          169           4.587         22.246        16.717        0 \r\n 1996          170           7.496         22.837        16.565        0 \r\n 1996          171           21.394        25.837        17.449        0 \r\n 1996          172           6.019         30.809        19.071        4.14 \r\n 1996          173           22.127        27.229        15.408        0 \r\n 1996          174           17.189        24.261        13.911        13.03 \r\n 1996          175           17.577        25.443        15.484        0 \r\n 1996          176           27.052        27.351        13.644        0 \r\n 1996          177           26.5          30.417        16.717        0 \r\n 1996          178           25.491        32.142        16.218        0 \r\n 1996          179           25.201        33.391        20.269        0 \r\n 1996          180           24.548        34.85         23.268        0 \r\n 1996          181           23.449        30.793        19.059        13.106 \r\n 1996          182           26.904        30.328        15.839        0 \r\n 1996          183           21.223        27.467        18.265        0 \r\n 1996          184           22.441        28.073        14.027        0 \r\n 1996          185           16.912        27.618        17.84         0 \r\n 1996          186           8.106         28.533        13.723        0 \r\n 1996          187           24.929        28.886        15.713        0 \r\n 1996          188           13.821        28.844        17.998        0 \r\n 1996          189           26.771        26.247        16.582        0 \r\n 1996          190           24.818        22.552        11.849        0 \r\n 1996          191           22.113        26.479        8.442         0 \r\n 1996          192           26.304        26.593        11.836        0 \r\n 1996          193           14.903        26.853        17.519        12.649 \r\n 1996          194           22.337        25.874        13.773        0 \r\n 1996          195           24.465        24.873        14.492        3.937 \r\n 1996          196           22.472        28.109        14.114        0 \r\n 1996          197           26.081        30.763        13.491        0 \r\n 1996          198           16.117        28.675        19.252        8.89 \r\n 1996          199           19.26         33.408        23.834        0 \r\n 1996          200           24.753        29.59         19.294        0 \r\n 1996          201           17.096        23.235        13.72         0 \r\n 1996          202           11.356        24.392        16.755        0 \r\n 1996          203           16.551        27.572        17.211        0 \r\n 1996          204           17.838        28.058        12.466        0 \r\n 1996          205           25.141        24.814        13.757        3.048 \r\n 1996          206           23.108        25.418        12.121        0 \r\n 1996          207           22.378        27.149        11.747        0 \r\n 1996          208           21.127        25.422        12.756        0 \r\n 1996          209           17.524        25.443        14.038        10.566 \r\n 1996          210           18.133        25.981        13.053        2.642 \r\n 1996          211           12.575        24.866        12.308        0 \r\n 1996          212           23.868        23.258        11.284        0 \r\n 1996          213           21.687        26.649        12.317        0 \r\n 1996          214           23.493        28.812        13.014        0 \r\n 1996          215           22.876        27.489        13.286        0 \r\n 1996          216           11.413        25.221        15.664        0 \r\n 1996          217           1.93          27.723        19.983        6.96 \r\n 1996          218           15.895        32.347        20.719        3.785 \r\n 1996          219           21.7          28.887        17.965        12.268 \r\n 1996          220           21.67         27.896        13.989        0 \r\n 1996          221           23.387        27.053        12.178        0 \r\n 1996          222           22.639        25.927        13.899        0 \r\n 1996          223           14.264        25.379        15.477        8.23 \r\n 1996          224           20.731        27.419        12.939        0 \r\n 1996          225           21.991        28.312        14.489        0 \r\n 1996          226           20.779        26.984        16.961        0 \r\n 1996          227           21.596        24.749        11.991        0 \r\n 1996          228           21.686        25.934        10.371        0 \r\n 1996          229           15.376        27.222        12.521        0 \r\n 1996          230           17.567        23.968        13.833        0 \r\n 1996          231           10.209        24.772        18.156        8.458 \r\n 1996          232           9.502         27.624        15.972        8.153 \r\n 1996          233           20.798        30.514        17.282        0 \r\n 1996          234           20.372        26.997        18.668        40.361 \r\n 1996          235           6.784         25.251        11.359        10.973 \r\n 1996          236           22.073        25.723        11.009        0 \r\n 1996          237           21.769        27.916        12.197        0 \r\n 1996          238           19.528        25.723        16.26         5.055 \r\n 1996          239           12.178        23.428        12.444        0 \r\n 1996          240           12.503        25.568        10.452        0 \r\n 1996          241           17.417        25.797        12.697        0 \r\n 1996          242           20.62         26.338        11.671        0 \r\n 1996          243           19.451        26.102        11.756        0 \r\n 1996          244           16.614        27.076        13.281        0 \r\n 1996          245           17.679        27.843        17.313        0 \r\n 1996          246           17.891        28.121        15.832        0 \r\n 1996          247           11.267        28.939        16.568        0 \r\n 1996          248           17.78         28.734        15.944        0 \r\n 1996          249           18.221        28.31         15.826        0 \r\n 1996          250           16.795        27.631        14.677        0 \r\n 1996          251           13.149        23.134        18.182        0 \r\n 1996          252           8.06          25.264        13.416        1.2 \r\n 1996          253           19.554        26.308        11.348        0 \r\n 1996          254           8.837         20.543        12.546        0 \r\n 1996          255           18.389        18.544        6.268         0 \r\n 1996          256           10.171        16.873        3.657         0 \r\n 1996          257           19.578        18.848        1.972         0 \r\n 1996          258           19.666        21.398        7.08          0 \r\n 1996          259           17.985        19.322        8.262         0 \r\n 1996          260           13.1          20.579        9.738         0 \r\n 1996          261           12.638        22.084        5.046         0 \r\n 1996          262           15.911        21.214        7.678         0 \r\n 1996          263           6.892         21.147        11.989        13.005 \r\n 1996          264           13.337        18.332        10.032        0 \r\n 1996          265           5.38          21.229        7.27          0 \r\n 1996          266           14.75         17.754        9.834         4.953 \r\n 1996          267           4.077         19.084        4.607         0 \r\n 1996          268           17.669        17.116        6.462         5.41 \r\n 1996          269           4.053         12.759        8.495         16.231 \r\n 1996          270           4.219         12.216        5.201         7.391 \r\n 1996          271           3.148         19.058        7.613         0 \r\n 1996          272           16.511        17.818        9.098         0 \r\n 1996          273           14.973        27.353        7.632         0 \r\n 1996          274           15.447        25.067        9.912         0 \r\n 1996          275           14.821        19.594        7.478         0 \r\n 1996          276           14.451        13.682       -1.442         0 \r\n 1996          277           14.348        14.572        3.254         0 \r\n 1996          278           11.72         23.259        6.423         0 \r\n 1996          279           13.667        22.026        9.86          0 \r\n 1996          280           7.835         16.901        4.181         0 \r\n 1996          281           13.08         14.443       -2.488         0 \r\n 1996          282           14.101        14.699        5.569         0 \r\n 1996          283           12.988        12.359        0.79          2 \r\n 1996          284           14.703        16.491       -0.855         0 \r\n 1996          285           13.356        22.889        5.951         0 \r\n 1996          286           11.324        25.994        8.768         0 \r\n 1996          287           13.135        23.274        9.436         0 \r\n 1996          288           12.332        22.395        11.365        0 \r\n 1996          289           13.673        25.234        8.342         0 \r\n 1996          290           11.29         20.637        5.834         0 \r\n 1996          291           3.266         11.593        0.479         0 \r\n 1996          292           13.466        17.029       -2.667         0 \r\n 1996          293           12.452        17.992        5.661         0 \r\n 1996          294           10.029        15.639        7.688         0 \r\n 1996          295           10.87         10.127        1.727         12.522 \r\n 1996          296           2.153         8.807         2.508         35.027 \r\n 1996          297           8.618         8.123         0.081         0 \r\n 1996          298           6.442         15.979        5.266         0 \r\n 1996          299           3.902         21.047        10.063        0 \r\n 1996          300           8.251         18.891        5.209         0 \r\n 1996          301           8.126         12.694       -3.217         0 \r\n 1996          302           9.707         15.886        4.076         7.696 \r\n 1996          303           3.736         13.205       -3.777         12.929 \r\n 1996          304           11.37        -0.117        -6.355         0 \r\n 1996          305           6.654         0.099        -8.158         0 \r\n 1996          306           7.188         2.097        -9.787         0 \r\n 1996          307           10.916        13.305       -7.914         0 \r\n 1996          308           9.965         8.521         1.451         3.759 \r\n 1996          309           1.31          7.181         4.181         6.858 \r\n 1996          310           3.092         10.703        2.32          0 \r\n 1996          311           4.059         10.144       -2.511         0 \r\n 1996          312           9.096         5.738        -0.918         0 \r\n 1996          313           8.256         1.442        -5.116         0 \r\n 1996          314           4.992        -1.78         -6.548         0 \r\n 1996          315           4.121        -2.179        -9.18          0 \r\n 1996          316           4.104        -2.424        -13.614        0 \r\n 1996          317           3.072        -3.098        -9.363         0 \r\n 1996          318           3.593        -1.732        -12.708        0 \r\n 1996          319           3.713         2.468        -4.262         0 \r\n 1996          320           0.561         11.689        1.775         22.758 \r\n 1996          321           0.452         9.899        -5.189         8.636 \r\n 1996          322           5.81         -3.126        -8.162         0 \r\n 1996          323           4.646        -3.157        -7.006         0 \r\n 1996          324           2.17         -2.826        -5.549         0 \r\n 1996          325           1.644        -0.499        -6.294         7.341 \r\n 1996          326           2.753        -0.662        -7.777         0 \r\n 1996          327           1.967         0.419        -2.364         6.071 \r\n 1996          328           0.926        -1.643        -10.606        0 \r\n 1996          329           6.003        -10.204       -19.921        0 \r\n 1996          330           8.374        -12.927       -21.582        0 \r\n 1996          331           8.99         -5.397        -17.652        0 \r\n 1996          332           3.435         0.673        -12.267        0 \r\n 1996          333           7.563         2.395        -3.251         0 \r\n 1996          334           0.811         1.325        -3.992         9.423 \r\n 1996          335           2.618        -2.95         -7.238         0 \r\n 1996          336           3.268        -4.723        -9.686         0 \r\n 1996          337           2.962        -6.447        -13.824        4.369 \r\n 1996          338           4.841        -3.162        -18.142        0 \r\n 1996          339           3.218        -1.148        -4.458         3.658 \r\n 1996          340           3.294         0.554        -5.106         0 \r\n 1996          341           5.125         0.046        -9.27          0 \r\n 1996          342           6.865        -3.503        -7.651         0 \r\n 1996          343           5.5          -2.692        -8.548         0 \r\n 1996          344           3.823         0.914        -5.135         0 \r\n 1996          345           2.846         1.902        -2.475         0 \r\n 1996          346           1.643         1.403        -2.007         0 \r\n 1996          347           3.344         2.761        -3.147         0 \r\n 1996          348           5.512         2.081        -3.112         0 \r\n 1996          349           0.695         2.992        -9.509         3.251 \r\n 1996          350           5.568        -0.739        -12.596        0 \r\n 1996          351           2.032        -2.852        -13.786        0 \r\n 1996          352           4.08         -12.59        -18.629        0 \r\n 1996          353           3.861        -16.119       -21.557        0 \r\n 1996          354           3.364        -9.626        -23.283        1.27 \r\n 1996          355           3.225         2.047        -10.328        0 \r\n 1996          356           3.425        -1.969        -8.646         0 \r\n 1996          357           0.918        -2.246        -12.337        0 \r\n 1996          358           1.773        -8.631        -22.666        3.302 \r\n 1996          359           5.3          -19.489       -24.223        0 \r\n 1996          360           1.612        -17.25        -22.34         9.55 \r\n 1996          361           5.692        -3.167        -23.875        0 \r\n 1996          362           2.449        -0.748        -6.815         0 \r\n 1996          363           4.552        -6.176        -18.036        0 \r\n 1996          364           5.509        -6.189        -18.19         0 \r\n 1996          365           3.034        -3.987        -9.572         0 \r\n 1996          366           3.674         0.478        -6.203         0 \r\n 1997          1             4.1           6.101        -0.634         0 \r\n 1997          2             3.85          6.042        -0.304         0 \r\n 1997          3             4.55          3.402        -1.144         6.782 \r\n 1997          4             6.875         0.855        -14.476        0 \r\n 1997          5             6.6          -8.972        -17.407        0 \r\n 1997          6             7.676        -6.993        -20.74         0 \r\n 1997          7             6.976        -0.267        -10.103        0 \r\n 1997          8             6.025        -3.413        -8.765         0 \r\n 1997          9             4.3          -8.044        -21.069        4.293 \r\n 1997          10            5.075        -19.864       -24.452        0 \r\n 1997          11            5.45         -18.096       -25.357        0 \r\n 1997          12            5.375        -13.948       -19.774        0 \r\n 1997          13            5.25         -10.498       -21.524        0 \r\n 1997          14            3.55         -6.103        -13.579        5.385 \r\n 1997          15            3.825        -11.299       -22.519        0 \r\n 1997          16            6            -15.214       -24.753        0 \r\n 1997          17            6.55         -11.782       -22.091        0 \r\n 1997          18            4.875         0.73         -13.763        0 \r\n 1997          19            8.25          2.722        -7.828         0 \r\n 1997          20            9.751         5.041        -3.177         0 \r\n 1997          21            3.475         4.758        -11.314        0 \r\n 1997          22            8.65         -4.397        -14.263        0 \r\n 1997          23            7.801        -3.839        -15.115        6.299 \r\n 1997          24            4.35         -12.901       -23.361        0 \r\n 1997          25            6.425        -15.074       -23.51         0 \r\n 1997          26            5.1          -13.007       -21.604        2.794 \r\n 1997          27            6.4          -14.033       -26.462        0 \r\n 1997          28            7.15         -9.187        -19.55         0 \r\n 1997          29            7.7          -4.756        -19.008        0 \r\n 1997          30            9.35          5.056        -8.224         0 \r\n 1997          31            10.4          1.264        -3.441         0 \r\n 1997          32            6.799         0.519        -6.087         0 \r\n 1997          33            12.2          0.773        -9.24          0 \r\n 1997          34            8.375        -0.178        -6.076         16.993 \r\n 1997          35            5.2          -1.246        -7.459         2.692 \r\n 1997          36            5.275        -3.813        -8.311         0 \r\n 1997          37            12.2         -3.004        -9.716         0 \r\n 1997          38            7.2          -2.371        -8.605         0 \r\n 1997          39            12.6         -3.126        -18.06         0 \r\n 1997          40            12.25        -3.142        -8.262         0 \r\n 1997          41            8            -6.973        -14.676        0 \r\n 1997          42            8.2          -8.749        -19.918        3.607 \r\n 1997          43            9.15         -6.173        -23.595        0 \r\n 1997          44            8.825        -3.828        -14.788        0 \r\n 1997          45            12.675       -7.596        -20.803        0 \r\n 1997          46            7.525        -7.718        -13.717        5.131 \r\n 1997          47            5.175         5.293        -12.171        0 \r\n 1997          48            6.649         8.587         1.258         0 \r\n 1997          49            11.075        3.697        -6.066         0 \r\n 1997          50            15.45         3.108        -4.45          0 \r\n 1997          51            7.099         1.912        -1.959         0 \r\n 1997          52            5.925        -0.081        -9.966         0 \r\n 1997          53            8.775        -1.027        -14.854        0 \r\n 1997          54            13.451       -6.753        -13.212        0 \r\n 1997          55            12.626        2.992        -14.031        0 \r\n 1997          56            16.65         2.717        -2.925         0 \r\n 1997          57            12.224        0.149        -3.883         0 \r\n 1997          58            8.474         2.74         -4.592         1 \r\n 1997          59            6.875         4.302        -2.081         0 \r\n 1997          60            5.825         2.008        -7.421         0 \r\n 1997          61            13.001        1.181        -4.227         0 \r\n 1997          62            5.85          0.103        -5.315         0 \r\n 1997          63            7.025        -3.392        -9.779         0 \r\n 1997          64            12.851       -5.125        -12.674        0 \r\n 1997          65            14.726        5.337        -10.757        0 \r\n 1997          66            13.977        7.541        -8.268         0 \r\n 1997          67            15.851        6.263         0.23          12.395 \r\n 1997          68            17.85         11.72        -1.94          0 \r\n 1997          69            16.951        9.297        -1.017         0 \r\n 1997          70            18.35         3.448        -1.078         0 \r\n 1997          71            10.427        1.734        -3.296         0 \r\n 1997          72            2.75         -1.026        -10.945        25.73 \r\n 1997          73            8.601        -8.053        -17.405        0 \r\n 1997          74            11.276        3.789        -13.937        0 \r\n 1997          75            12.002        6.819        -0.431         0 \r\n 1997          76            11.501        3.176        -2.489         0 \r\n 1997          77            5.6           8.827        -4.239         0 \r\n 1997          78            14.226        12.212       -1.688         0 \r\n 1997          79            17.026        12.023       -0.08          0 \r\n 1997          80            14.551        8.85         -0.554         0 \r\n 1997          81            18.626        5.007        -2.087         0 \r\n 1997          82            17.775        3.016        -2.02          0 \r\n 1997          83            3.8           3.826         0.242         6.883 \r\n 1997          84            10.301        18.779       -4.139         0 \r\n 1997          85            21.1          23.192        1.047         0 \r\n 1997          86            20.399        15.864        3.737         0 \r\n 1997          87            8.651         10.053        1.976         0 \r\n 1997          88            11.749        9.787        -0.704         0 \r\n 1997          89            20.175        13.806       -5.359         0 \r\n 1997          90            22.15         20.213        1.869         0 \r\n 1997          91            19.15         19.242        2.823         0 \r\n 1997          92            9.949         15.747        2.752         0 \r\n 1997          93            13.398        16.839        6.442         0 \r\n 1997          94            5.75          15.232        8.637         5.08 \r\n 1997          95            3.6           10.518       -5.179         8.306 \r\n 1997          96            9.25          2.404        -7.488         0 \r\n 1997          97            21.826       -0.709        -10.393        0 \r\n 1997          98            19.827        3.059        -9.941         0 \r\n 1997          99            23.225        1.866        -2.878         0 \r\n 1997          100           6.225         2.225        -1.962         0 \r\n 1997          101           6.299         3.157        -2.086         4.801 \r\n 1997          102           8.248         10.411       -3.856         0 \r\n 1997          103           18.549        11.554       -3.503         0 \r\n 1997          104           24.775        16.447        1.962         0 \r\n 1997          105           18.2          8.707        -3.463         0 \r\n 1997          106           16.026        12.738       -4.882         0 \r\n 1997          107           24.975        18.172       -0.83          0 \r\n 1997          108           12.627        17.562        1.526         3.759 \r\n 1997          109           22.65         19.077        4.616         0 \r\n 1997          110           14.022        16.724        5.581         0 \r\n 1997          111           13.525        15.833        2.737         0 \r\n 1997          112           19.149        14.398        5.097         0 \r\n 1997          113           17.9          14.449        0.532         0 \r\n 1997          114           19.425        18.122        0.322         0 \r\n 1997          115           21.626        18.232        1.74          0 \r\n 1997          116           17.6          19.521        5.853         0 \r\n 1997          117           16.65         21.69        -0.192         0 \r\n 1997          118           26.85         23.506        8.021         0 \r\n 1997          119           23.025        19.884        0.881         12.573 \r\n 1997          120           5.3           13.633       -0.584         30.937 \r\n 1997          121           27.2          13.954        5.454         7.01 \r\n 1997          122           5.175         12.816        5.529         16.231 \r\n 1997          123           21.049        18.535        1.142         0 \r\n 1997          124           27.675        21.632        9.338         0 \r\n 1997          125           27.425        21.945        2.4           0 \r\n 1997          126           27.225        20.148        7.886         0 \r\n 1997          127           4.75          15.792        7.163         16.027 \r\n 1997          128           20.352        17.281        3.623         0 \r\n 1997          129           27.65         21.018        1.589         0 \r\n 1997          130           29.05         21.722        8.304         0 \r\n 1997          131           16.15         17.064        1.893         0 \r\n 1997          132           20.849        12.808       -2.163         0 \r\n 1997          133           19.626        11.653        3.882         0 \r\n 1997          134           13.4          11.996       -0.371         0 \r\n 1997          135           26.725        22.627       -0.248         0 \r\n 1997          136           20.176        27.534        5.016         0 \r\n 1997          137           26.974        27.076        12.289        9.754 \r\n 1997          138           21.749        22.686        5.826         10.82 \r\n 1997          139           26.501        17.293        2.048         0 \r\n 1997          140           30.225        18.652        1.683         0 \r\n 1997          141           31.425        21.547        5.663         0 \r\n 1997          142           28.651        22.642        7.665         0 \r\n 1997          143           21.026        22.802        10.366        13.945 \r\n 1997          144           11.502        17.782        10.716        0 \r\n 1997          145           8.373         15.744        7.106         0 \r\n 1997          146           11.498        16.239        6.576         0 \r\n 1997          147           11.024        15.322        8.291         0 \r\n 1997          148           4.9           13.774        9.483         5.563 \r\n 1997          149           7.226         18.291        9.69          0 \r\n 1997          150           25.274        24.663        7.433         0 \r\n 1997          151           30.351        27.596        9.301         0 \r\n 1997          152           30.5          27.107        9.926         0 \r\n 1997          153           28.15         25.814        12.061        0 \r\n 1997          154           22.925        26.126        13.293        0 \r\n 1997          155           21.275        25.185        13.543        3.15 \r\n 1997          156           19.824        22.193        11.184        14.275 \r\n 1997          157           25.025        23.757        10.793        0 \r\n 1997          158           21.476        23.044        11.502        0 \r\n 1997          159           27.124        25.293        10.983        0 \r\n 1997          160           28.8          27.047        12.006        0 \r\n 1997          161           25.3          27.123        14.943        0 \r\n 1997          162           20.975        27.797        14.868        0 \r\n 1997          163           19.049        29.702        13.698        0 \r\n 1997          164           22.649        27.566        13.447        0 \r\n 1997          165           28.775        29.831        16.336        0 \r\n 1997          166           22.025        26.459        14.932        32.868 \r\n 1997          167           29.025        25.684        9.978         0 \r\n 1997          168           27.852        25.024        13.875        0 \r\n 1997          169           20.402        30.407        14.494        0 \r\n 1997          170           26.326        30.117        20.439        4.369 \r\n 1997          171           14.175        28.527        17.314        43.764 \r\n 1997          172           22.601        30.614        17.872        0 \r\n 1997          173           26.9          30.699        18.885        16.383 \r\n 1997          174           27.499        29.806        20.477        0 \r\n 1997          175           14.375        27.318        18.387        16.332 \r\n 1997          176           26.325        28.482        13.808        0 \r\n 1997          177           31            29.304        14.941        0 \r\n 1997          178           31.25         29.854        17.222        4.724 \r\n 1997          179           25.025        29.247        17.081        12.751 \r\n 1997          180           13.976        29.262        17.543        10.312 \r\n 1997          181           27.925        30.107        18.738        0 \r\n 1997          182           26.125        28.589        16.336        0 \r\n 1997          183           19.202        20.788        13.836        0 \r\n 1997          184           13.876        20.194        11.343        0 \r\n 1997          185           19.249        23.405        8.612         0 \r\n 1997          186           24.7          22.954        10.969        3.429 \r\n 1997          187           30.65         23.664        7.727         0 \r\n 1997          188           19.502        25.294        15.078        2.87 \r\n 1997          189           24.251        23.821        14.126        0 \r\n 1997          190           21.776        24.174        12.038        0 \r\n 1997          191           21.899        27.799        14.73         0 \r\n 1997          192           24.825        29.534        18.68         3.785 \r\n 1997          193           20.326        30.446        18.969        24.206 \r\n 1997          194           21.675        29.496        18.79         12.675 \r\n 1997          195           27.751        30.152        17.848        0 \r\n 1997          196           30.4          32.167        18.754        0 \r\n 1997          197           29.075        30.768        19.308        10.084 \r\n 1997          198           24.374        29.397        20.174        0 \r\n 1997          199           16.626        28.338        20.646        0 \r\n 1997          200           20.428        29.723        18.881        0 \r\n 1997          201           22.775        30.122        18.527        9.525 \r\n 1997          202           19.45         26.285        17.897        0 \r\n 1997          203           12.201        25.591        17.674        0 \r\n 1997          204           15.924        27.391        18.516        0 \r\n 1997          205           17.926        30.819        19.456        0 \r\n 1997          206           20.65         32.23         22.418        10.262 \r\n 1997          207           20.777        30.749        21.234        4.877 \r\n 1997          208           10.5          27.069        19.013        46.355 \r\n 1997          209           24.374        24.981        15.013        0 \r\n 1997          210           25.476        24.339        12.139        0 \r\n 1997          211           25.25         25.001        12.021        0 \r\n 1997          212           24.276        26.881        15.209        0 \r\n 1997          213           14.75         30.324        17.507        0 \r\n 1997          214           27.925        31.741        18.132        0 \r\n 1997          215           24.675        29.952        16.756        0 \r\n 1997          216           25            25.407        9.776         0 \r\n 1997          217           27.9          23.989        13.828        3.277 \r\n 1997          218           18.574        26.327        11.573        0 \r\n 1997          219           23.825        27.071        12.957        0 \r\n 1997          220           26.3          26.275        12.173        0 \r\n 1997          221           21.375        24.173        15.107        0 \r\n 1997          222           16.575        20.067        12.961        0 \r\n 1997          223           10.298        19.176        14.906        10.008 \r\n 1997          224           6.35          21.699        13.366        3.556 \r\n 1997          225           23.924        23.711        10.482        0 \r\n 1997          226           11.526        26.938        16.913        12.548 \r\n 1997          227           25.425        28.965        17.283        0 \r\n 1997          228           22.726        26.804        15.037        0 \r\n 1997          229           8.375         20.597        12.778        0 \r\n 1997          230           13.05         20.258        13.672        0 \r\n 1997          231           7.05          21.816        14.745        11.811 \r\n 1997          232           17.951        24.099        9.897         0 \r\n 1997          233           24.3          24.335        9.944         0 \r\n 1997          234           22.85         25.419        11.648        3.2 \r\n 1997          235           21.851        26.391        15.369        14.656 \r\n 1997          236           21.526        24.872        14.834        0 \r\n 1997          237           10.624        25.062        17.104        0 \r\n 1997          238           15.349        26.226        16.274        0 \r\n 1997          239           8.7           27.015        15.104        0 \r\n 1997          240           19.6          27.602        15.359        0 \r\n 1997          241           17.025        27.33         17.366        23.597 \r\n 1997          242           18.925        28.826        16.317        0 \r\n 1997          243           21.199        28.612        16.049        0 \r\n 1997          244           18.425        26.351        15.874        7.823 \r\n 1997          245           13.448        21.024        7.973         0 \r\n 1997          246           23.6          20.377        7.196         0 \r\n 1997          247           17.901        22.766        10.977        0 \r\n 1997          248           13.675        27.172        13.046        0 \r\n 1997          249           23.4          27.348        15.536        0 \r\n 1997          250           8.05          22.147        16.287        5.664 \r\n 1997          251           9.875         22.491        15.348        0 \r\n 1997          252           19.55         21.592        8.754         0 \r\n 1997          253           18.75         21.921        6.229         0 \r\n 1997          254           22.4          23.404        7.115         0 \r\n 1997          255           21.125        21.419        10.896        0 \r\n 1997          256           7.1           22.913        14.624        0 \r\n 1997          257           12.6          25.095        12.698        0 \r\n 1997          258           15.176        24.991        15.306        2.896 \r\n 1997          259           5.85          25.979        10.644        14.58 \r\n 1997          260           20.75         27.263        11.487        0 \r\n 1997          261           14.651        24.913        16.064        0 \r\n 1997          262           7.551         19.285        8.063         0 \r\n 1997          263           16.701        17.569        2.332         0 \r\n 1997          264           16.225        16.123        7.336         3.353 \r\n 1997          265           4.5           16.662        9.073         24.232 \r\n 1997          266           14.199        20.412        3.141         0 \r\n 1997          267           19.8          24.021        7.586         0 \r\n 1997          268           18.975        24.893        8.3           0 \r\n 1997          269           15.975        24.934        12.072        0 \r\n 1997          270           8.95          24.39         9.409         0 \r\n 1997          271           18.425        23.612        10.092        0 \r\n 1997          272           17.925        22.669        9.304         0 \r\n 1997          273           18            21.652        3.344         0 \r\n 1997          274           16.175        25.313        6.836         0 \r\n 1997          275           17            32.916        14.373        0 \r\n 1997          276           17.725        32.568        8.587         0 \r\n 1997          277           18.075        28.738        13.621        0 \r\n 1997          278           17.35         31.248        15.008        0 \r\n 1997          279           16.026        32.116        13.868        0 \r\n 1997          280           11.525        30.917        18.241        0 \r\n 1997          281           3.599         24.067        11.622        21.514 \r\n 1997          282           15.426        19.529        6.221         0 \r\n 1997          283           12.9          21.427        6.216         0 \r\n 1997          284           10.125        24.981        16.968        0 \r\n 1997          285           1.95          20.96         8.249         46.939 \r\n 1997          286           11.95         11.606        2.232         0 \r\n 1997          287           12.126        13.49         6.036         0 \r\n 1997          288           7.124         12.1          6.259         0 \r\n 1997          289           15.2          16.77         7.13          0 \r\n 1997          290           15.35         16            3.436         0 \r\n 1997          291           14.375        17.45         2.21          0 \r\n 1997          292           10            13.02         2.833         0 \r\n 1997          293           13.125        9.74         -2.308         0 \r\n 1997          294           10.526        5.599        -2.998         0 \r\n 1997          295           11.9          7.64         -4.242         0 \r\n 1997          296           9.3           13.33         3.185         0 \r\n 1997          297           3.75          8.61          5.439         0 \r\n 1997          298           6.65          5.994         0.692         0 \r\n 1997          299           5.974         3.599        -4.04          0 \r\n 1997          300           9.399         5.594        -8.13          0 \r\n 1997          301           7.326         10.1         -3.363         0 \r\n 1997          302           10.05         14.16        -3.405         0 \r\n 1997          303           5.05          11.39         5.73          0 \r\n 1997          304           8.525         16.03         3.718         0 \r\n 1997          305           4.75          9.19          2.973         0 \r\n 1997          306           4.725         3.213        -2.237         0 \r\n 1997          307           5             0.842        -2.19          0 \r\n 1997          308           4.525         0.786        -1.32          0 \r\n 1997          309           4.475         3.17         -0.202         0 \r\n 1997          310           4.6           5.293         2.012         0 \r\n 1997          311           5             6.859        -0.204         0 \r\n 1997          312           5.675         6.388         2.534         0 \r\n 1997          313           4.175         4.298        -0.633         0 \r\n 1997          314           8.1           1.37         -6.387         0 \r\n 1997          315           9.7           0.216        -8.05          0 \r\n 1997          316           11.275       -1.102        -6.484         0 \r\n 1997          317           3.95          0.074        -5.436         3.505 \r\n 1997          318           3.7           1.971        -1.776         6.401 \r\n 1997          319           4.425        -1.757        -8.62          0 \r\n 1997          320           6.475        -6.613        -13.09         0 \r\n 1997          321           8.425         2.955        -12            0 \r\n 1997          322           7.451        -2.756        -9.71          0 \r\n 1997          323           8.6          -1.107        -7.94          0 \r\n 1997          324           7.825         5.982        -4.633         0 \r\n 1997          325           7.775         3.252        -7.02          0 \r\n 1997          326           6.85         -0.078        -7.98          0 \r\n 1997          327           7.576        -1.003        -10.91         0 \r\n 1997          328           8.7          -0.183        -12.62         0 \r\n 1997          329           8.05          10.07        -3.465         0 \r\n 1997          330           9.675         7.46         -3.783         0 \r\n 1997          331           5.175         10.1         -3.533         0 \r\n 1997          332           7.775         10.26        -2.359         0 \r\n 1997          333           3.225         3.118        -2.024         0 \r\n 1997          334           7.75          4.596        -2.547         0 \r\n 1997          335           7.625         1.695         0.17          0 \r\n 1997          336           7.425         2.956        -0.087         4.14 \r\n 1997          337           5.625         0.609        -4.246         0 \r\n 1997          338           5.6          -2.55         -5.457         0 \r\n 1997          339           6.175        -4.971        -9.26          0 \r\n 1997          340           7.05         -3.187        -5.428         0 \r\n 1997          341           6.8          -2.061        -6.043         0 \r\n 1997          342           5.35         -2.397        -5.906         3.785 \r\n 1997          343           4.475        -0.83         -1.699         0 \r\n 1997          344           5.45          1.076        -1.832         0 \r\n 1997          345           4.725        -0.849        -5.058         0 \r\n 1997          346           4.725        -3.754        -10.04         0 \r\n 1997          347           6.125        -0.735        -7.54          0 \r\n 1997          348           6.375         0.533        -10.63         0 \r\n 1997          349           8.35          5.057        -6.259         0 \r\n 1997          350           7.4           4.971        -3.937         0 \r\n 1997          351           5.6           3.635        -9.76          0 \r\n 1997          352           4.375         3.683        -3.494         0 \r\n 1997          353           4.975         2.918        -1.823         0 \r\n 1997          354           8.65          0.886        -7.96          0 \r\n 1997          355           5.775        -1.622        -9.29          0 \r\n 1997          356           4.825         0.133        -2.377         0 \r\n 1997          357           7.95         -1.278        -4.554         0 \r\n 1997          358           4.025        -2.776        -5.486         0 \r\n 1997          359           5.975        -1.804        -5.954         0 \r\n 1997          360           8.075         2.77         -8.23          0 \r\n 1997          361           7.2          -1.087        -13.09         0 \r\n 1997          362           3.7           0.543        -4.303         0 \r\n 1997          363           4.65         -3.143        -8.26          0 \r\n 1997          364           3.025        -2.922        -10.53         0 \r\n 1997          365           3.85         -7.58         -18.66         0 \r\n 1998          1             7.246         5.535        -8.52          0 \r\n 1998          2             2.594         8.36         -1.837         0 \r\n 1998          3             2.473         6.511        -5.641         0 \r\n 1998          4             0.711        -0.505        -3.907         7.925 \r\n 1998          5             1.769         0.447        -0.83          0 \r\n 1998          6             2.096         0.769        -1.231         0 \r\n 1998          7             1.988         0.055        -2.423         0 \r\n 1998          8             5.354         0.719        -3.359         0 \r\n 1998          9             2.391        -2.601        -16.69         0 \r\n 1998          10            7.825        -10.42        -16.72         0 \r\n 1998          11            4.043        -8.49         -16.72         0 \r\n 1998          12            4.354        -8            -20.79         0 \r\n 1998          13            7.853        -12.27        -22.76         0 \r\n 1998          14            4.142        -8.17         -17.84         0 \r\n 1998          15            7.277        -5.995        -16.91         0 \r\n 1998          16            3.099        -5.135        -7.93          0 \r\n 1998          17            7.487        -5.593        -17.26         0 \r\n 1998          18            5.873        -6.247        -15.27         0 \r\n 1998          19            7.047        -9.122        -18.27         0 \r\n 1998          20            5.554        -3.736        -16.95         4.115 \r\n 1998          21            2.843        -2.597        -4.853         0 \r\n 1998          22            4.911        -1.501        -4.147         0 \r\n 1998          23            3.095        -2.881        -11.62         0 \r\n 1998          24            8.9          -2.61         -8.711         0 \r\n 1998          25            7.371         0.558        -5.69          0 \r\n 1998          26            6.225         1.311        -2.969         0 \r\n 1998          27            5.097         1.502        -2.864         0 \r\n 1998          28            4.019         0.672        -2.13          0 \r\n 1998          29            9.535        -0.129        -5.817         0 \r\n 1998          30            5.683        -2.361        -8.18          0 \r\n 1998          31            9.325         6.018        -2.596         5.309 \r\n 1998          32            3.197         2.302        -5.673         7.264 \r\n 1998          33            6.03          0.224        -10.24         0 \r\n 1998          34            5.392        -4.593        -15.69         0 \r\n 1998          35            6.707        -4.617        -7.91          0 \r\n 1998          36            9.398         0.244        -9.32          0 \r\n 1998          37            10.808        1.444        -9.26          0 \r\n 1998          38            10.311        4.135        -11.23         0 \r\n 1998          39            7.1           0.911        -6.052         0 \r\n 1998          40            9.041         3.406        -2.626         0 \r\n 1998          41            2.633         1.635        -0.967         5.41 \r\n 1998          42            2.822         0.586        -3.719         0 \r\n 1998          43            8.487        -0.176        -6.075         0 \r\n 1998          44            7.061        -0.366        -4.703         0 \r\n 1998          45            4.801         1.873        -2.251         0 \r\n 1998          46            4.484         9.99          1.72          0 \r\n 1998          47            5.087         6.038         1.358         2.718 \r\n 1998          48            1.116         3.057         1.435         2.54 \r\n 1998          49            2.972         3.775         0.767         0 \r\n 1998          50            3.446         4.35          0.186         0 \r\n 1998          51            4.531         4.693         0.253         0 \r\n 1998          52            3.279         4.274        -0.338         0 \r\n 1998          53            4.329         8.09          0.567         0 \r\n 1998          54            5.738         12.31         3.631         0 \r\n 1998          55            13.521        12.74        -0.506         0 \r\n 1998          56            4.438         10.69         4.609         0 \r\n 1998          57            2.079         10.45         4.583         14.478 \r\n 1998          58            2.316         4.59         -1.954         3.658 \r\n 1998          59            7.041        -1.582        -3.997         2.769 \r\n 1998          60            11.104        0.358        -5.821         0 \r\n 1998          61            8.429         3.938        -3.247         0 \r\n 1998          62            7.485         0.101        -3.911         0 \r\n 1998          63            8.692        -0.585        -8.339         0 \r\n 1998          64            4.321         0.501        -3.554         3.15 \r\n 1998          65            15.231        1.293        -4.645         0 \r\n 1998          66            8.875         2.542        -3.889         5.537 \r\n 1998          67            5.429        -0.411        -3.401         11.811 \r\n 1998          68            17.479       -3.324        -12.07         0 \r\n 1998          69            18.956       -8.92         -16.64         0 \r\n 1998          70            19.293       -9.39         -17.62         0 \r\n 1998          71            17.566       -8.13         -11.712        0 \r\n 1998          72            14.881        4.485        -10.19         0 \r\n 1998          73            17.879       -2.054        -11.93         0 \r\n 1998          74            8.452        -1.915        -5.997         0 \r\n 1998          75            10.889        1.092        -5.197         3.099 \r\n 1998          76            2.486         0.587        -2.126         15.418 \r\n 1998          77            3.278         0.949        -0.042         0 \r\n 1998          78            6.255         0.902        -1.161         0 \r\n 1998          79            16.517        2.915        -4.393         0 \r\n 1998          80            16.013        6.589        -4.712         0 \r\n 1998          81            14.107        7.13         -1.897         0 \r\n 1998          82            7.731         5.35         -2.499         0 \r\n 1998          83            11.42         5.938        -5.369         0 \r\n 1998          84            8.151         16.53         12.01         0 \r\n 1998          85            11.614        23.54         9.22          0 \r\n 1998          86            4.919         20.51         10.83         3.937 \r\n 1998          87            6.334         14.38         8.06          0 \r\n 1998          88            13.833        26.68         8.01          3.785 \r\n 1998          89            2.696         16.68         6.508         22.987 \r\n 1998          90            2.987         9.95          3.938         18.898 \r\n 1998          91            6.475         5.099         1.256         0 \r\n 1998          92            6.061         6.469         2.666         0 \r\n 1998          93            4.965         6.992         0.897         0 \r\n 1998          94            22.822        13.19        -1.534         0 \r\n 1998          95            19.774        15.04         0.725         0 \r\n 1998          96            16.053        19.54         6.401         9.677 \r\n 1998          97            7.441         14.8          8.26          7.849 \r\n 1998          98            2.514         8.86          4.955         3.404 \r\n 1998          99            7.828         12.09         3.267         0 \r\n 1998          100           24.202        15.98        -1.143         0 \r\n 1998          101           16.555        22            3.117         0 \r\n 1998          102           15.172        24.25         11.71         8.204 \r\n 1998          103           3.834         14.95         8.92          7.849 \r\n 1998          104           19.886        17.62         5.561         3.759 \r\n 1998          105           1.722         11            4.004         14.3 \r\n 1998          106           13.254        10.99         0.744         0 \r\n 1998          107           23.772        14.58        -0.647         0 \r\n 1998          108           24.344        18.4          1.144         0 \r\n 1998          109           12.332        17.01         2.741         4.851 \r\n 1998          110           3.402         9.05          3.66          11.481 \r\n 1998          111           20.376        17.84         3.602         0 \r\n 1998          112           23.867        20.75         3.129         0 \r\n 1998          113           25.694        21.55         12.5          0 \r\n 1998          114           25.204        25.9          5.725         0 \r\n 1998          115           8.986         18.47         10.58         6.096 \r\n 1998          116           5.422         13.42         5.118         0 \r\n 1998          117           26.271        15.44         1.964         0 \r\n 1998          118           20.374        16.32         1.582         0 \r\n 1998          119           9.104         15.8          5.724         0.508 \r\n 1998          120           12.609        20.97         10.48         0 \r\n 1998          121           22.918        26.22         8.33          0 \r\n 1998          122           4.586         16.67         8.01          10.16 \r\n 1998          123           17.2          20.44         10.05         0 \r\n 1998          124           23.635        25.53         6.429         0 \r\n 1998          125           27.494        24.44         10.556        0 \r\n 1998          126           11.993        22.07         10.11         0 \r\n 1998          127           4.846         16.16         13.32         9.906 \r\n 1998          128           13.368        19.53         13.333        1.524 \r\n 1998          129           23.047        22.42         12.48         0 \r\n 1998          130           26.657        23.18         9.82          0 \r\n 1998          131           26.015        25.56         9.76          0 \r\n 1998          132           20.059        23.59         10.78         1.524 \r\n 1998          133           26.918        25.37         6.033         0 \r\n 1998          134           25.542        32.01         15.95         0 \r\n 1998          135           11.823        27.42         15.35         26.416 \r\n 1998          136           28.882        25.74         13.41         0 \r\n 1998          137           25.247        31.27         12.17         0 \r\n 1998          138           23.749        33.31         19.26         0 \r\n 1998          139           20.424        31.52         16.59         0 \r\n 1998          140           14.507        23.05         12.53         0 \r\n 1998          141           17.935        23.81         11.39         0 \r\n 1998          142           15.856        19.19         10.24         1.27 \r\n 1998          143           10.358        21.2          10.89         36.83 \r\n 1998          144           11.912        17.98         10.69         4.064 \r\n 1998          145           27.709        21.68         10.71         0 \r\n 1998          146           25.967        24.65         10.14         0 \r\n 1998          147           21.918        27.32         16.13         0.254 \r\n 1998          148           21.422        33.88         17.81         15.748 \r\n 1998          149           25.368        29.15         17.02         0.762 \r\n 1998          150           13.597        26.94         16.16         4.318 \r\n 1998          151           27.412        21.68         10.08         0.254 \r\n 1998          152           14.854        20.06         6.477         6.35 \r\n 1998          153           25.529        18.4          11.59         0 \r\n 1998          154           15.307        14.32         6.631         0 \r\n 1998          155           14.686        18.12         5.975         0 \r\n 1998          156           15.995        16.58         8.69          0 \r\n 1998          157           18.096        19.08         9.34          0 \r\n 1998          158           22.643        21.32         9.35          0 \r\n 1998          159           7.131         17.26         11.94         14.986 \r\n 1998          160           5.276         15.92         12.15         4.826 \r\n 1998          161           25.047        23.31         9.41          0 \r\n 1998          162           6.052         20.12         15.95         32.258 \r\n 1998          163           23.382        24.26         14.62         0 \r\n 1998          164           27.024        26.52         13.71         0 \r\n 1998          165           4.905         21.7          17.03         0.762 \r\n 1998          166           8.245         23.67         15.88         0.508 \r\n 1998          167           18.662        26.15         15.92         4.572 \r\n 1998          168           14.717        24.66         15.05         0 \r\n 1998          169           5.446         26.04         15.27         61.214 \r\n 1998          170           27.099        27.9          14.59         0.254 \r\n 1998          171           18.02         31.65         17.43         28.702 \r\n 1998          172           26.986        26.54         17.18         0 \r\n 1998          173           24.562        29.71         14.79         0 \r\n 1998          174           20.482        28.19         16.32         21.59 \r\n 1998          175           23.943        31.78         17.6          5.588 \r\n 1998          176           19.482        30.96         20.74         0 \r\n 1998          177           25.649        32.94         19.64         0 \r\n 1998          178           26.072        33.95         20.37         21.082 \r\n 1998          179           30.203        29.51         19.55         0 \r\n 1998          180           14.9          27.9          17.06         0.254 \r\n 1998          181           25.148        26.47         16.75         0 \r\n 1998          182           28.214        28.53         16.58         0 \r\n 1998          183           24.045        29.26         15.68         0 \r\n 1998          184           10.417        27.37         18.26         8.128 \r\n 1998          185           20.022        25.23         17.06         0 \r\n 1998          186           15.459        23.93         14.82         0.254 \r\n 1998          187           12.863        28.32         19.81         1.27 \r\n 1998          188           21.142        30.45         20.1          0.254 \r\n 1998          189           24.038        29.84         18.09         4.064 \r\n 1998          190           24.816        30.2          19.09         0 \r\n 1998          191           28.42         29.01         17.54         0 \r\n 1998          192           27.214        28.33         17.73         0 \r\n 1998          193           26.072        29.47         14.9          0 \r\n 1998          194           24.836        31.82         17.74         0 \r\n 1998          195           27.793        31.24         18.71         0 \r\n 1998          196           28.388        29.41         17.61         2.286 \r\n 1998          197           28.682        26.79         16.5          0 \r\n 1998          198           25.983        27.67         15.38         0 \r\n 1998          199           27.309        31.19         16.74         0 \r\n 1998          200           28.362        31.28         19.81         12.446 \r\n 1998          201           22.606        33.69         18.333        0 \r\n 1998          202           13.563        27.91         19.65         0.508 \r\n 1998          203           19.921        27.81         16.04         0 \r\n 1998          204           25.965        23.73         13.34         0 \r\n 1998          205           26.616        25.24         12.84         0 \r\n 1998          206           18.404        24.91         13.55         0.762 \r\n 1998          207           26.622        27.65         12.04         0 \r\n 1998          208           24.776        29.09         16.67         0 \r\n 1998          209           26.523        31.19         14.16         0 \r\n 1998          210           20.916        27.26         12.12         0 \r\n 1998          211           24.358        26.63         14.32         0 \r\n 1998          212           25.637        27.7          12.09         0 \r\n 1998          213           24.604        28.09         14.66         0 \r\n 1998          214           16.904        27.26         14.71         0 \r\n 1998          215           13.781        25.47         18.92         18.034 \r\n 1998          216           6.538         22.74         19.37         68.326 \r\n 1998          217           4.006         21.21         18.23         2.54 \r\n 1998          218           5.252         22.01         17.77         0 \r\n 1998          219           15.611        27.07         18.4          0 \r\n 1998          220           21.276        27.02         16.41         0 \r\n 1998          221           21.425        30.68         18.51         0 \r\n 1998          222           22.938        26.79         17.77         0 \r\n 1998          223           24.171        27.17         14.87         0 \r\n 1998          224           17.904        25.54         15.37         0 \r\n 1998          225           18.083        27.2          15.59         0 \r\n 1998          226           23.443        29.33         16.13         0 \r\n 1998          227           24.676        27            17.41         0 \r\n 1998          228           21.485        30.01         16.96         0 \r\n 1998          229           20.997        30.45         20.76         9.144 \r\n 1998          230           8.734         25.25         19.34         0 \r\n 1998          231           18.744        30.05         18.66         0 \r\n 1998          232           14.416        30.92         20.16         34.544 \r\n 1998          233           11.932        26.87         19.31         0.254 \r\n 1998          234           22.011        30.57         19.55         2.794 \r\n 1998          235           20.225        31            19.69         0 \r\n 1998          236           9.156         25.75         17.39         9.144 \r\n 1998          237           23.693        27.2          16.5          0 \r\n 1998          238           20.001        27.67         13.41         0 \r\n 1998          239           5.313         24.04         18.13         19.558 \r\n 1998          240           19.377        28.72         19.01         5.842 \r\n 1998          241           23.029        29.07         16.48         0 \r\n 1998          242           23.226        27.06         13.63         0 \r\n 1998          243           14.899        25.88         11.64         0 \r\n 1998          244           22.261        26.26         11.35         0 \r\n 1998          245           19.6          24.51         8.5           2.032 \r\n 1998          246           20.328        25.86         13.29         1.016 \r\n 1998          247           21.907        29.16         11.5          0 \r\n 1998          248           19.358        31.06         12.87         0 \r\n 1998          249           17.024        33.81         18.08         0 \r\n 1998          250           20.891        22.98         10.64         0 \r\n 1998          251           22.151        21.69         6.903         0 \r\n 1998          252           21.593        24.02         6.79          0 \r\n 1998          253           19.791        28.16         11.66         0 \r\n 1998          254           20.747        31.61         11.04         0 \r\n 1998          255           20.133        33.55         12.65         0 \r\n 1998          256           17.625        32.74         16.88         0 \r\n 1998          257           5.255         22.57         18.18         3.048 \r\n 1998          258           19.107        27.98         15.32         0 \r\n 1998          259           18.033        27.79         12.99         0 \r\n 1998          260           16.969        28.32         12.38         0 \r\n 1998          261           16.248        30.23         14.38         0 \r\n 1998          262           18.524        31.99         16.01         6.858 \r\n 1998          263           10.377        26.75         11.55         2.54 \r\n 1998          264           11.669        17.55         7.52          0 \r\n 1998          265           19.477        18.24         5.782         0 \r\n 1998          266           15.178        20.63         3.769         13.716 \r\n 1998          267           15.347        23.59         11.12         0 \r\n 1998          268           7.539         26.96         14.31         0.254 \r\n 1998          269           11.619        30.43         19.46         5.588 \r\n 1998          270           16.702        24.21         12.51         0 \r\n 1998          271           17.377        26.84         9.25          0 \r\n 1998          272           17.247        26.78         14            9.652 \r\n 1998          273           7.934         19.52         5.544         0.254 \r\n 1998          274           17.503        15.26         1.762         0 \r\n 1998          275           2.422         8.77          5.382         7.62 \r\n 1998          276           1.439         9.63          6.447         14.224 \r\n 1998          277           3.537         15.08         9.35          23.368 \r\n 1998          278           1.552         18.14         12            3.81 \r\n 1998          279           6.096         13.67         8.14          0.762 \r\n 1998          280           4.539         10.92         5.719         0 \r\n 1998          281           16.476        17.1          1.925         0 \r\n 1998          282           15.339        18.95         2.545         0 \r\n 1998          283           15.444        21.09         4.565         0 \r\n 1998          284           10.394        19.72         7.12          0.254 \r\n 1998          285           15.585        14.41         3.846         0 \r\n 1998          286           15.092        11.8          1.162         0 \r\n 1998          287           7.563         13.31         0.381         14.224 \r\n 1998          288           7.044         17.25         8.79          2.54 \r\n 1998          289           3.438         22.56         14.78         1.016 \r\n 1998          290           1.399         20.06         6.157         77.216 \r\n 1998          291           10.406        13.55         4.76          0 \r\n 1998          292           13.156        14.77         3.798         0 \r\n 1998          293           8.879         14.69         0.399         0 \r\n 1998          294           13.818        12.7          0.963         0 \r\n 1998          295           13.535        16.17        -1.47          0 \r\n 1998          296           13.428        18.69         3.386         0 \r\n 1998          297           12.154        20.28         3.856         0.254 \r\n 1998          298           9.266         20.35         9.44          0 \r\n 1998          299           9.818         22.89         6.649         1.27 \r\n 1998          300           3.057         18.53         14.12         11.684 \r\n 1998          301           12.479        19.08         6.08          3.556 \r\n 1998          302           1.809         16.53         10.19         2.032 \r\n 1998          303           2.426         11.96         6.95          0 \r\n 1998          304           3.44          9.31          5.031         0.254 \r\n 1998          305           1.98          10.18         5.048         0 \r\n 1998          306           6.846         8.07          0.677         0 \r\n 1998          307           5.868         6.196        -2.123         0 \r\n 1998          308           6.517         1.849        -4.154         0 \r\n 1998          309           8.23          4.674        -4.908         0 \r\n 1998          310           1.834        -0.142        -5.765         0 \r\n 1998          311           3.768         0.993        -6.757         3.353 \r\n 1998          312           2.182         1.898        -1.589         0 \r\n 1998          313           0.666         6.002         1.726         15.875 \r\n 1998          314           1.551         12.06        -0.454         0 \r\n 1998          315           10.252        3.63         -2.391         0 \r\n 1998          316           10.079        2.883        -3.403         0 \r\n 1998          317           3.588         4.386        -4.869         0 \r\n 1998          318           6.823         10.06        -1.168         0 \r\n 1998          319           5.274         4.915        -2.094         0 \r\n 1998          320           2.359         5.116         1.688         0 \r\n 1998          321           1.566         4.067         0.82          0 \r\n 1998          322           0.697         10.18         0.972         0 \r\n 1998          323           3.5           0.991        -4.608         0 \r\n 1998          324           8.869         1.342        -8.02          0 \r\n 1998          325           7.219         9.61         -8.33          0 \r\n 1998          326           6.038         14.87         1.707         0 \r\n 1998          327           8.887         12.19        -1.54          0 \r\n 1998          328           7.526         12.84        -3.512         0 \r\n 1998          329           8.486         14.79         0.917         0 \r\n 1998          330           8.349         17.99        -2.21          0 \r\n 1998          331           7.704         19.47        -0.596         0 \r\n 1998          332           2.502         14.09         3.385         0 \r\n 1998          333           1.652         18.94         12.94         0 \r\n 1998          334           5.163         13.53        -1.359         1 \r\n 1998          335           7.547         16.94        -1.732         0 \r\n 1998          336           5.986         15.86         6.021         0 \r\n 1998          337           1.71          12.85         3.868         0 \r\n 1998          338           1.549         14.89         8.15          0 \r\n 1998          339           5.378         16.68         2.455         0 \r\n 1998          340           1.093         2.464        -3.817         0 \r\n 1998          341           6.037         3.154        -7.8           0 \r\n 1998          342           7.488         7.91         -7.32          0 \r\n 1998          343           6.761         8.06         -6.284         0 \r\n 1998          344           7.443         5.174        -5.006         0 \r\n 1998          345           7.363         9.57         -5.463         0 \r\n 1998          346           7.153         9.61         -3.552         0 \r\n 1998          347           4.96          10.89        -4.165         0 \r\n 1998          348           7.178         12.2         -3.693         0 \r\n 1998          349           6.788         7.75         -1.188         0 \r\n 1998          350           2.655         1.377        -2.257         0 \r\n 1998          351           2.947        -0.444        -7.74          0 \r\n 1998          352           2.942         3.261        -3.254         0 \r\n 1998          353           5.743        -3.244        -10.22         0 \r\n 1998          354           3.224        -6.973        -14.79         0 \r\n 1998          355           6.368        -13.58        -18.54         0 \r\n 1998          356           6.95         -11.1         -21.11         0 \r\n 1998          357           6.994        -7.39         -15.26         0 \r\n 1998          358           7.483        -4.738        -15.9          0 \r\n 1998          359           3.702        -1.693        -10.65         0 \r\n 1998          360           4.242        -6.195        -17.54         0 \r\n 1998          361           7.157        -1.874        -12.71         0 \r\n 1998          362           3.546         1.921        -14.01         0 \r\n 1998          363           7.617        -3.754        -21.55         0 \r\n 1998          364           2.495        -15.78        -24.53         0 \r\n 1998          365           4.678        -12.46        -18.85         0 \r\n 1999          1             4.57         -11.72        -19.55         11.76 \r\n 1999          2             3.954        -8.76         -11.74         7.29 \r\n 1999          3             5.463        -10.41        -21.09         0 \r\n 1999          4             7.681        -21.09        -29.37         0 \r\n 1999          5             3.718        -10.98        -29.62         2.692 \r\n 1999          6             5.968        -8.87         -24.9          0 \r\n 1999          7             5.456        -16.01        -27.44         0 \r\n 1999          8             5.901        -11.63        -23.92         0 \r\n 1999          9             8.194        -14.59        -30.2          0 \r\n 1999          10            6.964        -10.68        -21.74         0 \r\n 1999          11            5.17         -10.48        -19.66         0 \r\n 1999          12            3.693        -12.06        -16.33         0 \r\n 1999          13            7.268        -10.64        -16.82         0 \r\n 1999          14            5.511        -7.39         -19.34         0 \r\n 1999          15            3.878        -2.515        -20.63         0 \r\n 1999          16            9.131         1.14         -7.21          0 \r\n 1999          17            3.208         1.045        -7.24          3.404 \r\n 1999          18            7.848        -1.024        -13.5          0 \r\n 1999          19            9.19         -0.131        -13.72         0 \r\n 1999          20            6.645        -1.043        -11.9          0 \r\n 1999          21            7.939         0.779        -3.869         5.766 \r\n 1999          22            2.223         0.93         -0.357         0 \r\n 1999          23            4.313        -0.271        -4.641         0 \r\n 1999          24            1.555        -1.673        -9.48          5.436 \r\n 1999          25            8.516        -8.69         -16.3          0 \r\n 1999          26            6.056         1.471        -13.38         0 \r\n 1999          27            4.087         2.782        -3.08          0 \r\n 1999          28            8.931        -2.353        -10.47         0 \r\n 1999          29            4.933        -4.409        -8.58          0 \r\n 1999          30            10.058        1.563        -11.84         0 \r\n 1999          31            8.654         2.42         -3.234         0 \r\n 1999          32            2.965         1.647         0.043         0 \r\n 1999          33            11.492        2.933        -3.849         0 \r\n 1999          34            7.131         4.935        -5.427         0 \r\n 1999          35            11.429       -5.418        -12.23         0 \r\n 1999          36            6.253         7.2          -6.421         0 \r\n 1999          37            9.767         2.019        -5.562         0 \r\n 1999          38            9.049         4.953        -5.058         0 \r\n 1999          39            9.164         10.68         1.447         0 \r\n 1999          40            11.594        8.5          -0.319         0 \r\n 1999          41            3.833         12.53         1.8           0 \r\n 1999          42            0.979         13.56        -4.258         10.846 \r\n 1999          43            10.154       -8.528        -8.504         0 \r\n 1999          44            12.619       -2.467        -10.299        0 \r\n 1999          45            12.736        9.095        -4.578         0 \r\n 1999          46            11.781        13.244       -0.297         0 \r\n 1999          47            3.267         0.984        -1.967         0 \r\n 1999          48            6.557        -3.873        -5.934         0 \r\n 1999          49            7.059        -1.651        -4.607         0 \r\n 1999          50            12.169       -0.739        -6.544         0 \r\n 1999          51            11.051       -1.752        -4.333         0 \r\n 1999          52            14.585        0.276        -7.685         0 \r\n 1999          53            7.278         0.168        -6.354         0 \r\n 1999          54            6.565        -0.181        -6.465         0 \r\n 1999          55            4.556         0.189        -6.432         0 \r\n 1999          56            12.687        5.474        -9.36          0 \r\n 1999          57            3.781         3.741        -5.529         0 \r\n 1999          58            5.097         4.571        -2.461         0 \r\n 1999          59            4.127         1.773        -1.234         0 \r\n 1999          60            11.366        12.14        -2.63          0 \r\n 1999          61            3.324         4.114        -4.341         0 \r\n 1999          62            16.542        0.382        -7.85          0 \r\n 1999          63            10.326        3.978        -7.84          0 \r\n 1999          64            4.418        -0.481        -4.747         0 \r\n 1999          65            16.108       -1.458        -9.32          0 \r\n 1999          66            16.542       -0.474        -11.8          0 \r\n 1999          67            4.637        -3.061        -6.582         8.534 \r\n 1999          68            10.968       -0.095        -7.97          0 \r\n 1999          69            17.445        0.525        -10.45         0 \r\n 1999          70            18.586        2.698        -7.05          0 \r\n 1999          71            17.833        3.568        -8.5           0 \r\n 1999          72            18.44         4.286        -7.12          0 \r\n 1999          73            18.895        7.57         -6.569         0 \r\n 1999          74            18.371        9.04         -4.67          0 \r\n 1999          75            17.458        15.99        -0.977         0 \r\n 1999          76            14.975        8.77         -0.474         0 \r\n 1999          77            19.522        6.516        -2.534         0 \r\n 1999          78            19.511        11.02        -3.926         0 \r\n 1999          79            18.524        11.81        -2.486         0 \r\n 1999          80            20.24         7.86         -2.985         0 \r\n 1999          81            19.573        9.19         -4.444         0 \r\n 1999          82            20.541        12.46        -4.148         0 \r\n 1999          83            21.047        5.806        -4.467         0 \r\n 1999          84            20.988        7.38         -7.47          0 \r\n 1999          85            20.74         12.19        -6.195         0 \r\n 1999          86            19.613        15.55        -2.41          10.82 \r\n 1999          87            13.664        11.74         2.05          0 \r\n 1999          88            21.856        15.94         0.992         0 \r\n 1999          89            19.413        22.92         2.622         0 \r\n 1999          90            6.806         16.17         9.14          0 \r\n 1999          91            9.27          19.33         11.43         0 \r\n 1999          92            16.191        18.76         5.055         1.524 \r\n 1999          93            7.479         20.64         8.68          13.97 \r\n 1999          94            23.385        14.65         3.1           0.762 \r\n 1999          95            1.726         10.58         5.911         25.4 \r\n 1999          96            17.052        14.28         3.167         0 \r\n 1999          97            21.164        21.03         4.278         0 \r\n 1999          98            2.47          12.59         4.075         34.29 \r\n 1999          99            12.007        11.62         4.67          0.762 \r\n 1999          100           2.834         8.65          4.555         3.556 \r\n 1999          101           4.134         8.79          4.037         0.508 \r\n 1999          102           22.613        14.18         0.081         0 \r\n 1999          103           15.838        16.9          5.7           0 \r\n 1999          104           15.183        16.53         5.219         0 \r\n 1999          105           4.961         9.62          2.355         7.112 \r\n 1999          106           11.397        8.51          1.84          2.286 \r\n 1999          107           18.651        10.33         1.013         0 \r\n 1999          108           15.09         10.9          0.812         0 \r\n 1999          109           19.719        16.97         0.52          0.254 \r\n 1999          110           11.96         15.37         5.209         0.254 \r\n 1999          111           11.342        16.06         5.209         1.524 \r\n 1999          112           2.436         9.82          3.894         35.814 \r\n 1999          113           23.997        14.17         2.05          2.286 \r\n 1999          114           26.556        16.37         2.183         0 \r\n 1999          115           25.303        18.15         2.425         0 \r\n 1999          116           11.32         18.21         8.42          0 \r\n 1999          117           2.27          14.26         7.96          9.398 \r\n 1999          118           26.184        18.27         7.32          0 \r\n 1999          119           27.535        19.46         4.651         0 \r\n 1999          120           27.545        22.24         4.652         0 \r\n 1999          121           27.518        22.7          4.661         0 \r\n 1999          122           25.582        24.26         7.72          0 \r\n 1999          123           22.302        26.27         14.05         0 \r\n 1999          124           7.453         20.71         15.71         5.588 \r\n 1999          125           9.308         18.67         10.48         0.508 \r\n 1999          126           5.279         13.69         8.76          0.762 \r\n 1999          127           5.596         12.29         7.22          1.524 \r\n 1999          128           9.541         11.73         4.153         0 \r\n 1999          129           28.5          20.57         1.654         0 \r\n 1999          130           24.41         28.44         11.41         0 \r\n 1999          131           10.454        23.72         12.67         50.546 \r\n 1999          132           2.791         14.9          11.15         24.892 \r\n 1999          133           8.513         13.48         8.29          4.826 \r\n 1999          134           26.681        20.55         7.81          0 \r\n 1999          135           7.525         17.69         12.34         1.524 \r\n 1999          136           6.65          20.7          15.2          83.337 \r\n 1999          137           7.946         17.64         13.52         9.144 \r\n 1999          138           29.303        18.83         9.5           0 \r\n 1999          139           27.034        25.25         9.22          0 \r\n 1999          140           13.385        24.14         14.34         21.59 \r\n 1999          141           13.056        21.96         14.19         14.478 \r\n 1999          142           25.76         24.24         11.98         0.762 \r\n 1999          143           12.488        17.16         8.11          0.254 \r\n 1999          144           27.665        17.06         7.47          0 \r\n 1999          145           30.091        20.28         7.66          0 \r\n 1999          146           30.335        24.44         8.71          0 \r\n 1999          147           22.061        30.05         9.11          17.78 \r\n 1999          148           23.703        28.9          13.86         0.762 \r\n 1999          149           29.196        28.42         14.13         0 \r\n 1999          150           20.155        28.11         14.66         14.986 \r\n 1999          151           14.556        21.47         13.67         8.636 \r\n 1999          152           9.156         22.76         12.1          39.624 \r\n 1999          153           21.425        23.16         10.1          0 \r\n 1999          154           24.226        24.5          11.55         0 \r\n 1999          155           9.567         22.51         12.54         53.594 \r\n 1999          156           17.274        29.68         18.57         0 \r\n 1999          157           16.277        29.22         21.57         0 \r\n 1999          158           30.304        30.46         18.31         0 \r\n 1999          159           16.765        31.24         18.49         10.414 \r\n 1999          160           23.709        30.78         17.4          10.414 \r\n 1999          161           14.787        25.32         18.11         13.208 \r\n 1999          162           17.259        23.35         17.89         0.254 \r\n 1999          163           25.827        25.42         17.14         0 \r\n 1999          164           25.521        26.28         14.72         0 \r\n 1999          165           31.069        20.01         10.17         0 \r\n 1999          166           11.853        17.51         8.32          0 \r\n 1999          167           18.672        19.22         7.86          0 \r\n 1999          168           28.181        22.43         8.61          0 \r\n 1999          169           23.84         22.86         9.75          0 \r\n 1999          170           11.866        24.01         14.02         2.54 \r\n 1999          171           21.767        26.99         15.8          0 \r\n 1999          172           24.03         29.22         16.06         0 \r\n 1999          173           19.089        30.52         19.45         6.35 \r\n 1999          174           14.871        27.53         18.87         8.382 \r\n 1999          175           28.461        30.75         16.33         0 \r\n 1999          176           28.099        32.03         19.66         0 \r\n 1999          177           26.844        31.28         18.66         0 \r\n 1999          178           12.654        25.71         18.08         0 \r\n 1999          179           13.866        23.08         12.33         0 \r\n 1999          180           22.324        23.76         10.22         0 \r\n 1999          181           20.536        24.9          14.49         6.858 \r\n 1999          182           23.709        24.88         14.12         0 \r\n 1999          183           3.608         22.13         15.43         3.556 \r\n 1999          184           20.459        31.69         19.33         7.112 \r\n 1999          185           29.014        32.84         22.92         0 \r\n 1999          186           26.572        32.79         22.82         0.508 \r\n 1999          187           30.69         27.63         16.96         0 \r\n 1999          188           29.877        29.29         13.76         0 \r\n 1999          189           19.013        32.22         16.92         1.524 \r\n 1999          190           29.126        28.46         15.89         0 \r\n 1999          191           28.317        24.81         12.05         0 \r\n 1999          192           26.842        26.81         11.96         0 \r\n 1999          193           28.267        27.92         12.61         0 \r\n 1999          194           25.925        28.71         14.84         0 \r\n 1999          195           27.223        31.69         19.33         0 \r\n 1999          196           27.513        34            18.82         0 \r\n 1999          197           11.936        29.31         18.7          5.588 \r\n 1999          198           29.075        27.73         17.82         0 \r\n 1999          199           13.978        31.31         18.9          57.658 \r\n 1999          200           21.755        30.04         19.4          38.608 \r\n 1999          201           12.015        29.74         20.16         67.056 \r\n 1999          202           19.087        30.25         19.8          27.686 \r\n 1999          203           25.035        33.47         22.48         0 \r\n 1999          204           20.232        31.52         21.87         1.524 \r\n 1999          205           27.399        33.27         21.27         0 \r\n 1999          206           27.342        34.07         22.33         6.096 \r\n 1999          207           19.811        30.46         21.04         29.464 \r\n 1999          208           25.369        30.22         19.44         10.16 \r\n 1999          209           26.719        33.39         19.57         0 \r\n 1999          210           26.299        34.99         22.33         0 \r\n 1999          211           26.415        34.1          22.95         0 \r\n 1999          212           21.901        27.46         16.69         34.036 \r\n 1999          213           25.883        23.6          13.82         0 \r\n 1999          214           27.494        25.8          14.12         0 \r\n 1999          215           24.198        26.8          14.23         0 \r\n 1999          216           26.199        25.42         15.95         0 \r\n 1999          217           25.673        27.21         13.85         0 \r\n 1999          218           21.322        27.99         15.14         0.762 \r\n 1999          219           7.63          23.85         17.88         17.018 \r\n 1999          220           27.628        23.35         13.55         0 \r\n 1999          221           12.727        25.37         12.62         9.144 \r\n 1999          222           24.693        27.22         17.05         0 \r\n 1999          223           16.489        28.54         15.31         0 \r\n 1999          224           12.749        28.03         18.33         1.016 \r\n 1999          225           10.89         20.68         11.23         0 \r\n 1999          226           26.847        23.73         8.94          0 \r\n 1999          227           18.754        25.57         12.05         0 \r\n 1999          228           22.157        29.31         16.45         0.762 \r\n 1999          229           25.365        27.43         13.73         0 \r\n 1999          230           14.411        24.4          17.34         24.13 \r\n 1999          231           16.014        24.15         14.51         3.556 \r\n 1999          232           22.793        25.7          11.94         0 \r\n 1999          233           11.377        24.24         14.67         2.286 \r\n 1999          234           4.838         20.02         15.81         4.318 \r\n 1999          235           13.87         23.55         16.04         25.654 \r\n 1999          236           16.334        24.52         16.29         0 \r\n 1999          237           20.982        28.23         14.96         0 \r\n 1999          238           20.756        28.45         15.11         0 \r\n 1999          239           22.116        30.81         17.49         0 \r\n 1999          240           19.343        31.61         18.17         0 \r\n 1999          241           21.459        24.8          15.47         0 \r\n 1999          242           18.616        23.34         12.41         0 \r\n 1999          243           19.549        25.43         12.85         0 \r\n 1999          244           20.547        29.28         13.71         0 \r\n 1999          245           21.113        32.66         16.39         0 \r\n 1999          246           21.145        32.17         18.41         0 \r\n 1999          247           14.961        31.22         19.05         1.778 \r\n 1999          248           19.239        22.32         11.91         0.254 \r\n 1999          249           22.195        25.3          8.92          0 \r\n 1999          250           20.144        29.29         12.89         14.986 \r\n 1999          251           21.841        23.17         10.11         0.254 \r\n 1999          252           17.549        18.04         8.23          0 \r\n 1999          253           22.299        22.19         7.06          0 \r\n 1999          254           20.926        27.13         6.653         0 \r\n 1999          255           12.366        21.4          8.36          0.508 \r\n 1999          256           14.384        16.88         7.16          1.27 \r\n 1999          257           19.441        17.78         5.4           2.286 \r\n 1999          258           15.803        18.23         5.854         0 \r\n 1999          259           21.026        21.02         4.599         0 \r\n 1999          260           20.621        23.34         4.711         0 \r\n 1999          261           19.671        26.06         6.327         0 \r\n 1999          262           6.392         19.09         8.28          0 \r\n 1999          263           12.109        12.65         2.025         0 \r\n 1999          264           20.107        17.17        -0.32          0 \r\n 1999          265           19.407        25.86         2.694         0 \r\n 1999          266           18.026        27.57         8.08          0 \r\n 1999          267           17.288        22.32         7.39          0 \r\n 1999          268           16.085        28.72         10.47         0 \r\n 1999          269           4.771         20.94         11.75         4.064 \r\n 1999          270           8.862         15.98         9.77          13.208 \r\n 1999          271           12.41         18.17         8.75          0 \r\n 1999          272           18.305        16.62         3.01          0 \r\n 1999          273           17.59         20.56         4.317         0 \r\n 1999          274           7.536         11.31         0.977         8.89 \r\n 1999          275           15.832        9.06          1.549         0.254 \r\n 1999          276           8.716         8.72         -0.167         0 \r\n 1999          277           17.061        13.37        -3.578         0 \r\n 1999          278           16.803        19.95         3.686         0 \r\n 1999          279           16.293        18.07         0.872         0 \r\n 1999          280           15.639        25.13         10.19         0 \r\n 1999          281           9.237         21.03         9.33          1.27 \r\n 1999          282           15.878        24.67         5.357         0 \r\n 1999          283           15.723        20.1          6.621         0 \r\n 1999          284           14.9          20.52         2.416         0 \r\n 1999          285           10.345        25.74         10.73         0 \r\n 1999          286           11.501        12.61         0.271         0 \r\n 1999          287           14.776        18.33         0.243         0 \r\n 1999          288           13.666        25.98         6.708         4.826 \r\n 1999          289           14.282        15.01         2.994         0.762 \r\n 1999          290           12.844        10.63        -0.434         0 \r\n 1999          291           5.974         10.44        -2.114         0 \r\n 1999          292           8.152         9.8           0.444         0 \r\n 1999          293           13.897        12.02         0.425         0 \r\n 1999          294           11.803        22.77         3.038         0 \r\n 1999          295           12.903        10.68         0.796         0 \r\n 1999          296           13.998        8.05         -3.164         0 \r\n 1999          297           13.567        12.63        -5.813         0 \r\n 1999          298           11.846        19.68         0.786         0 \r\n 1999          299           11.064        19.19         2.408         0 \r\n 1999          300           12.071        22.08         4.866         0 \r\n 1999          301           11.142        17.41         6.486         0 \r\n 1999          302           10.417        25.21         10.9          0.762 \r\n 1999          303           3.462         16.18         4.693         0 \r\n 1999          304           12.304        19.84        -0.634         0 \r\n 1999          305           11.535        13.77         2.011         0 \r\n 1999          306           12.446        5.935        -4.279         0 \r\n 1999          307           12.125        13.34        -6.599         0 \r\n 1999          308           8.98          16.7         -3.816         0 \r\n 1999          309           8.855         13.68        -0.729         0 \r\n 1999          310           10.939        14.46        -3.244         0 \r\n 1999          311           10.144        18.5          1.25          0 \r\n 1999          312           10.329        25.85         3.412         0 \r\n 1999          313           9.553         22.36         9.32          0 \r\n 1999          314           2.768         9.83          3.916         0 \r\n 1999          315           3.144         8.77          2.527         0 \r\n 1999          316           8.253         15.75         1.192         0 \r\n 1999          317           8.84          24.1          2.193         0 \r\n 1999          318           9.681         10.39        -2.314         0 \r\n 1999          319           6.516         12.65        -4.986         0 \r\n 1999          320           9.43          10.65        -3.663         0 \r\n 1999          321           8.035         11.65        -2.152         0 \r\n 1999          322           7.434         21.99         2.202         0 \r\n 1999          323           1.514         8.58         -0.21          1.778 \r\n 1999          324           7.83          7.48         -6.244         0 \r\n 1999          325           7.597         15.2          0.44          0 \r\n 1999          326           7.982         13.08         1.694         0 \r\n 1999          327           1.361         7.13         -0.21          5.817 \r\n 1999          328           8.378         7.62         -2.809         0 \r\n 1999          329           8.738         8.34         -3.98          0 \r\n 1999          330           2.792         6.177         1.421         0 \r\n 1999          331           8.26          6.013        -2.583         0 \r\n 1999          332           5.804         6.951        -3.015         0 \r\n 1999          333           7.143         2.455        -6.796         0 \r\n 1999          334           3.105         1.707        -7.51          0 \r\n 1999          335           4.447         8.5           0.06          0 \r\n 1999          336           1.59          11.47         2.999         0 \r\n 1999          337           1.186         12.1          6.331         6.477 \r\n 1999          338           2.61          6.341         1.344         0 \r\n 1999          339           4.063         1.353        -6.205         0 \r\n 1999          340           6.572         3.48         -9.41          0 \r\n 1999          341           7.056         7.71         -3.09          0 \r\n 1999          342           6.959         9.97         -2.152         0 \r\n 1999          343           5.923         5.406        -6.156         0 \r\n 1999          344           5.779         1.416        -8.74          0 \r\n 1999          345           5.911         3.87         -7.83          0 \r\n 1999          346           7.331         7.83         -6.254         0 \r\n 1999          347           7.397         6.99         -7.73          0 \r\n 1999          348           3.043         2.457        -3.889         0 \r\n 1999          349           2.643         0.772        -10.87         0 \r\n 1999          350           6.215        -7.49         -16.95         0 \r\n 1999          351           5.204        -4.409        -13.5          0 \r\n 1999          352           6.246        -3.598        -17.19         0 \r\n 1999          353           1.776        -1.838        -10.6          5.41 \r\n 1999          354           7.038        -10.59        -23.14         0 \r\n 1999          355           6.652        -15.23        -25.2          0 \r\n 1999          356           4.307        -14.88        -23.65         0 \r\n 1999          357           3.706        -7.75         -23.08         5.156 \r\n 1999          358           2.547        -9.18         -21.87         0 \r\n 1999          359           7.438         3.875        -12.45         0 \r\n 1999          360           7.548         2.202        -7.04          0 \r\n 1999          361           7.512        -3.813        -15.31         0 \r\n 1999          362           4.754         3.306        -10.75         0 \r\n 1999          363           7.519         8.76         -4.6           0 \r\n 1999          364           7.11          7.52         -3.427         0 \r\n 1999          365           7.446         5.637        -5.481         0 \r\n 2000          1             3.881         2.222        -3.417         0 \r\n 2000          2             1.839         2.203        -4.26          0 \r\n 2000          3             1.233        -1.285        -5.346         0 \r\n 2000          4             6.427        -4.918        -16.74         0 \r\n 2000          5             2.778        -1.37         -16.3          0 \r\n 2000          6             6.905        -1.819        -7.69          0 \r\n 2000          7             7.97         -0.643        -16.51         0 \r\n 2000          8             7.811         6.429        -3.984         0 \r\n 2000          9             1.159         3.947        -2.677         4.089 \r\n 2000          10            7.117         5.233        -1.878         0 \r\n 2000          11            6.659        -1.525        -8.71          0 \r\n 2000          12            3.147        -2.199        -8.67          0 \r\n 2000          13            7.727        -5.641        -13.87         0 \r\n 2000          14            5.963         1.859        -13.62         0 \r\n 2000          15            6.823         8.18         -5.272         0 \r\n 2000          16            3.839        -4.329        -11.48         0 \r\n 2000          17            0.983        -4.273        -6.903         0 \r\n 2000          18            8.922        -1.143        -9.12          0 \r\n 2000          19            2.717        -4.409        -18.32         10.693 \r\n 2000          20            9.475        -13.91        -25.92         0 \r\n 2000          21            8.04         -12.57        -25            3.124 \r\n 2000          22            5.848        -4.94         -12.62         0 \r\n 2000          23            9.902        -10.46        -20.76         0 \r\n 2000          24            9.007        -4.708        -23.31         0 \r\n 2000          25            8.244        -7            -19.5          0 \r\n 2000          26            10.362       -8.27         -23.48         0 \r\n 2000          27            9.497        -6.47         -21.32         0 \r\n 2000          28            8.939        -4.863        -16.62         0 \r\n 2000          29            7.369        -3.599        -9.91          0 \r\n 2000          30            7.9          -4.563        -15.21         0 \r\n 2000          31            10.429       -3.502        -16.17         0 \r\n 2000          32            7.883        -3.416        -13.34         0 \r\n 2000          33            7.578         1.155        -14.54         0 \r\n 2000          34            5.954         0.918        -6.46          0 \r\n 2000          35            6.053        -1.539        -8.46          0 \r\n 2000          36            11.392        0.577        -14.05         0 \r\n 2000          37            7.37          2.312        -6.469         0 \r\n 2000          38            9.555        -2.361        -13.79         1 \r\n 2000          39            7.49          2.098        -17.66         0 \r\n 2000          40            10.943        4.762        -3.32          0 \r\n 2000          41            2.68          1.848        -6.011         0 \r\n 2000          42            13.004       -5.991        -13.76         0 \r\n 2000          43            3.349        -2.399        -12.75         5.893 \r\n 2000          44            7.99         -3.368        -5.824         0 \r\n 2000          45            11.291       -1.878        -7.47          0 \r\n 2000          46            11.619        7.97         -6.224         0 \r\n 2000          47            13.56        -3.147        -10.1          0 \r\n 2000          48            5.16         -1.138        -9.14          6.909 \r\n 2000          49            7.531        -1.54         -9.48          2.565 \r\n 2000          50            12.672       -2.227        -9.43          0 \r\n 2000          51            14.763        2.628        -14.42         0 \r\n 2000          52            12.742        9.31         -4.657         0 \r\n 2000          53            11.667        12.46         1.517         0 \r\n 2000          54            8.639         14.22         6.091         0 \r\n 2000          55            4.076         11.07         6.042         0 \r\n 2000          56            6.834         17.18         6.274         7.112 \r\n 2000          57            9.959         10.69         3.23          0 \r\n 2000          58            15.95         9.55         -0.652         0 \r\n 2000          59            15.292        15.26        -2.601         0 \r\n 2000          60            8.659         16.33         2.064         0 \r\n 2000          61            14.602        8.4          -0.862         0 \r\n 2000          62            16.494        7.73         -4.532         0 \r\n 2000          63            17.032        10.49        -4.927         0 \r\n 2000          64            16.304        18.63        -1.97          0 \r\n 2000          65            16.888        21.28         1.222         0 \r\n 2000          66            15.843        22.36         3.606         0 \r\n 2000          67            15.203        25.63         8.93          0 \r\n 2000          68            12.414        23.72         8.66          2.54 \r\n 2000          69            5.782         8.71         -4.1           0 \r\n 2000          70            8.789         0.929        -4.966         0 \r\n 2000          71            18.705        5.657        -8.04          0 \r\n 2000          72            9.463         6.255        -4.176         0 \r\n 2000          73            10.696        7.4          -0.605         0 \r\n 2000          74            9.318         12.65        -2.735         0 \r\n 2000          75            3.637         5.716        -3.387         0 \r\n 2000          76            19.788        1.745        -7.82          0 \r\n 2000          77            20.035        6.197        -9.5           2.667 \r\n 2000          78            5.59          0.768        -2.448         4.699 \r\n 2000          79            6.363         0.738        -1.444         0 \r\n 2000          80            4.755         5.698         0.187         0 \r\n 2000          81            5.477         10.07         3.349         0 \r\n 2000          82            5.455         12.14         4.426         0 \r\n 2000          83            13.642        19.02         4.936         6.325 \r\n 2000          84            5.393         16.39         5.887         0 \r\n 2000          85            20.782        14.4          1.13          0 \r\n 2000          86            9.039         17.91        -0.338         0 \r\n 2000          87            15.18         13.24        -2.812         0 \r\n 2000          88            20.799        10.08        -2.85          0 \r\n 2000          89            22.235        12.91        -4.609         0 \r\n 2000          90            18.528        15.8         -1.912         0 \r\n 2000          91            17.449        17.99         0.377         0 \r\n 2000          92            10.793        13.9          1.873         0 \r\n 2000          93            18.201        18.12         0.158         0 \r\n 2000          94            7.2           7.05         -0.014         0 \r\n 2000          95            23.632        10.61        -4.534         0 \r\n 2000          96            21.093        26.26        -1.53          0 \r\n 2000          97            23.071        14.72         2.63          0 \r\n 2000          98            5.072         7.7          -1.845         20.32 \r\n 2000          99            24.823        6.613        -7.16          1.524 \r\n 2000          100           23.212        12.53         0.844         0 \r\n 2000          101           3.813         4.887        -0.093         1.778 \r\n 2000          102           8.8           6.438        -1.444         0 \r\n 2000          103           14.966        9.44         -5.113         0 \r\n 2000          104           18.083        21.67         4.082         0 \r\n 2000          105           23.447        26.61         5.955         0 \r\n 2000          106           6.483         10.31         2.257         0.254 \r\n 2000          107           3.239         5.888         1.638         3.556 \r\n 2000          108           6.902         6.613         0.745         0 \r\n 2000          109           18.996        22.11         5.3           0 \r\n 2000          110           1.974         11.93         9.45          21.082 \r\n 2000          111           3.504         9.59          2.287         0.762 \r\n 2000          112           26.743        15.5          0.233         0 \r\n 2000          113           23.321        24.06         2.196         0 \r\n 2000          114           21.654        17.85         7.34          0 \r\n 2000          115           26.377        20.4          2.954         0 \r\n 2000          116           27.291        20.76         3.523         0 \r\n 2000          117           25.492        23.73         4.173         0 \r\n 2000          118           17.473        22.92         10.62         0 \r\n 2000          119           20.433        20.91         7.61          0 \r\n 2000          120           26.883        19.31         2.651         0 \r\n 2000          121           23.398        24.15         4.54          0 \r\n 2000          122           26.297        24.75         11.07         0.254 \r\n 2000          123           27.211        25.96         6.864         0 \r\n 2000          124           24.681        27.21         10.62         0 \r\n 2000          125           23.724        29.73         12.91         0 \r\n 2000          126           25.085        30.8          14.01         0 \r\n 2000          127           20.883        29.04         14.5          0 \r\n 2000          128           19.86         30.77         15.3          0 \r\n 2000          129           9.682         23.22         13.64         11.684 \r\n 2000          130           10.098        15.64         7.58          0 \r\n 2000          131           10.093        20.89         4.13          0 \r\n 2000          132           14.906        26.21         11.75         6.604 \r\n 2000          133           21.947        20.24         7.22          3.81 \r\n 2000          134           21.954        12.45         3.531         0 \r\n 2000          135           28.706        19.03         2.259         0 \r\n 2000          136           17.849        22.58         3.673         0 \r\n 2000          137           25.32         23.15         10.55         5.334 \r\n 2000          138           4.023         18.02         14.94         3.302 \r\n 2000          139           3.699         15.81         9.21          13.462 \r\n 2000          140           25.394        15.85         3.625         0 \r\n 2000          141           29.04         20.7          4.508         0 \r\n 2000          142           21.199        22.16         11.01         5.842 \r\n 2000          143           24.238        26.65         13.35         0.254 \r\n 2000          144           21.475        26.73         12.31         0 \r\n 2000          145           26.796        24.57         10.18         0 \r\n 2000          146           29.67         24.68         7.85          0 \r\n 2000          147           7.582         20.88         11.44         22.352 \r\n 2000          148           2.887         16.08         11.67         7.62 \r\n 2000          149           5.459         15.01         10.2          0.508 \r\n 2000          150           13.126        19.21         8.15          0 \r\n 2000          151           17.418        27.88         14.87         4.318 \r\n 2000          152           3.034         20.32         15.54         16.256 \r\n 2000          153           16.268        29.48         12.27         3.048 \r\n 2000          154           27.645        20            9.85          0 \r\n 2000          155           27.727        24.26         8.39          0.508 \r\n 2000          156           4.535         17.62         10.3          10.922 \r\n 2000          157           20.958        19.28         8.8           0 \r\n 2000          158           29.497        23.24         7.91          0 \r\n 2000          159           21.949        27.98         11.33         0 \r\n 2000          160           29.054        33.91         16.79         0 \r\n 2000          161           29.922        31.71         16.87         0 \r\n 2000          162           12.789        29.17         19.55         9.144 \r\n 2000          163           25.848        27.88         18.29         0 \r\n 2000          164           8.405         19.96         14.96         0.762 \r\n 2000          165           7.182         23.95         12.59         69.088 \r\n 2000          166           12.181        22.34         14.01         0.762 \r\n 2000          167           16.981        24.28         11.56         8.636 \r\n 2000          168           22.757        20.04         8.36          1.27 \r\n 2000          169           22.004        19.93         6.35          0 \r\n 2000          170           27.733        24.11         9.6           0 \r\n 2000          171           27.443        30.05         12.29         0.254 \r\n 2000          172           19.985        27.58         15.91         11.43 \r\n 2000          173           29.86         25.95         12.03         0 \r\n 2000          174           30.534        27.67         11.5          0 \r\n 2000          175           11.845        24.92         13.96         6.858 \r\n 2000          176           9.561         25.34         17.41         4.318 \r\n 2000          177           17.185        27.76         15            2.54 \r\n 2000          178           27.467        24.57         14.02         0.254 \r\n 2000          179           29.653        24.33         11.58         0 \r\n 2000          180           22.473        22.72         13.42         12.7 \r\n 2000          181           29.24         24.41         11.73         0 \r\n 2000          182           28.413        27.35         13.94         0 \r\n 2000          183           29.697        29.84         14.81         0 \r\n 2000          184           12.539        31.8          18.33         13.97 \r\n 2000          185           13.478        24.39         15.07         0 \r\n 2000          186           9.62          24.17         17.32         2.286 \r\n 2000          187           16.248        28.23         19.85         0 \r\n 2000          188           27.254        30.17         15.99         0 \r\n 2000          189           19.463        28.22         13.67         0 \r\n 2000          190           25.84         32.86         17.36         0 \r\n 2000          191           19.627        29.98         17.76         40.64 \r\n 2000          192           25.949        29.28         17.86         8.128 \r\n 2000          193           23.994        29.84         18.16         0 \r\n 2000          194           15.742        28.16         18.47         0 \r\n 2000          195           27.92         30.36         17.01         0 \r\n 2000          196           28.013        29.84         14.28         0 \r\n 2000          197           27.582        29.44         16.61         0 \r\n 2000          198           20.388        30.94         17.25         0 \r\n 2000          199           27.578        26.69         13.6          0 \r\n 2000          200           12.523        18.59         10.88         6.096 \r\n 2000          201           18.614        21.24         12.4          0 \r\n 2000          202           20.103        22.83         11.52         0 \r\n 2000          203           26.818        27.61         9.27          0 \r\n 2000          204           23.424        25.43         10.5          0 \r\n 2000          205           26.187        26.54         11.76         0 \r\n 2000          206           22.537        29.48         14.21         3.556 \r\n 2000          207           23.767        27.05         16.82         0 \r\n 2000          208           19.33         27.6          12.91         4.064 \r\n 2000          209           26.508        28.72         14.57         0 \r\n 2000          210           22.671        25.49         15.65         0 \r\n 2000          211           15.936        24.8          11.61         0 \r\n 2000          212           23.431        27.52         15.83         0 \r\n 2000          213           24.667        29.06         15.5          0 \r\n 2000          214           22.013        30.52         17.84         0 \r\n 2000          215           25.785        27.18         15.25         0 \r\n 2000          216           19.571        25.77         14.33         0 \r\n 2000          217           23.807        27.17         15.56         0 \r\n 2000          218           5.625         22.89         16.54         9.906 \r\n 2000          219           20.727        25.38         16.95         0 \r\n 2000          220           24.311        29.92         14.14         0 \r\n 2000          221           19.417        28.14         17.69         3.81 \r\n 2000          222           26.795        28.05         16.33         0 \r\n 2000          223           25.719        29.5          14.16         0 \r\n 2000          224           23.776        30.23         15.64         0 \r\n 2000          225           23.869        30.79         17.38         0 \r\n 2000          226           20.257        30.71         21.04         11.684 \r\n 2000          227           22.203        32.05         20.96         0 \r\n 2000          228           19.353        28.06         16.51         0 \r\n 2000          229           12.8          23.95         11.81         18.288 \r\n 2000          230           8.561         22.92         13.07         36.322 \r\n 2000          231           24.875        23.81         12.7          0 \r\n 2000          232           12.464        23.58         11.08         0 \r\n 2000          233           21.452        24.5          12.63         0 \r\n 2000          234           11.113        24.44         10.63         0 \r\n 2000          235           9.725         26.34         17.1          0.508 \r\n 2000          236           15.187        27.46         15.74         0.254 \r\n 2000          237           22.219        29.07         14.84         0 \r\n 2000          238           17.741        29.69         16.22         0 \r\n 2000          239           18.02         27.2          17.76         7.112 \r\n 2000          240           18.6          25.41         14.87         0 \r\n 2000          241           6.496         24.73         16.37         0 \r\n 2000          242           13.96         22.49         11.57         0 \r\n 2000          243           19.448        28.83         15.64         0 \r\n 2000          244           18.275        35.09         20.37         0 \r\n 2000          245           14.6          27.41         17.8          1.016 \r\n 2000          246           12.465        32.78         15.77         0 \r\n 2000          247           19.834        29.49         17.33         5.334 \r\n 2000          248           10.675        18.73         10.45         0 \r\n 2000          249           22.927        21.89         8.32          0 \r\n 2000          250           21.923        25.63         8.29          0 \r\n 2000          251           12.724        25.06         8.45          0.508 \r\n 2000          252           21.653        27.45         10.66         0 \r\n 2000          253           20.161        31.27         18.5          0 \r\n 2000          254           19.203        33            17.1          0 \r\n 2000          255           18.686        35.45         14            0 \r\n 2000          256           21.702        23.6          7.04          0 \r\n 2000          257           19.413        31.75         9.58          9.398 \r\n 2000          258           20.704        22.83         8.57          14.224 \r\n 2000          259           20.533        19.39         5.026         0 \r\n 2000          260           20.239        24.97         4.613         0 \r\n 2000          261           19.705        29.22         10.38         0 \r\n 2000          262           14.206        30.94         14.85         0 \r\n 2000          263           3.451         23.14         12.75         4.572 \r\n 2000          264           9.099         16.56         6.227         1.016 \r\n 2000          265           18.835        18.15         1.625         0 \r\n 2000          266           1.143         11.66         4.992         19.304 \r\n 2000          267           4.838         13.33         6.523         0.254 \r\n 2000          268           7.409         10.66         3.061         0 \r\n 2000          269           18.768        17.84         0.252         0 \r\n 2000          270           17.582        23.16         3.172         0 \r\n 2000          271           17.907        21.77         6.064         0 \r\n 2000          272           14.493        24.03         4.934         0 \r\n 2000          273           17.024        27.03         10.03         0 \r\n 2000          274           13.313        28.68         13.79         0 \r\n 2000          275           9.778         25.47         13.59         0 \r\n 2000          276           11.97         23.44         7.32          0 \r\n 2000          277           9.083         19.35         5.736         12.7 \r\n 2000          278           13.251        14.94         5.802         0 \r\n 2000          279           2.964         10.39         1.173         2.54 \r\n 2000          280           11.126        5.119        -2.602         0 \r\n 2000          281           9.021         5.724        -5.044         0 \r\n 2000          282           16.552        7.58         -5.267         0 \r\n 2000          283           16.304        13.48        -5.044         0 \r\n 2000          284           16.096        17.1         -3.28          0 \r\n 2000          285           15.891        22.95        -0.968         0 \r\n 2000          286           12.761        25.81         7.79          0.762 \r\n 2000          287           13.027        26.75         8.43          10.668 \r\n 2000          288           13.301        22.62         7.88          0 \r\n 2000          289           13.451        14.04         3.065         0 \r\n 2000          290           10.248        15.92         1.587         1.27 \r\n 2000          291           13.201        18.98         5.136         3.302 \r\n 2000          292           14.093        24.39         4.071         0 \r\n 2000          293           13.81         27.5          7.69          0 \r\n 2000          294           11.436        21.2          7.87          0 \r\n 2000          295           11.688        23.19         5.3           0 \r\n 2000          296           4.403         18.52         8.19          6.35 \r\n 2000          297           2.526         18.53         14.79         5.588 \r\n 2000          298           4.25          19.05         14.57         0.254 \r\n 2000          299           6.629         23.26         10.9          4.826 \r\n 2000          300           6.692         21.18         10.78         5.334 \r\n 2000          301           2.98          12.63         4.684         0 \r\n 2000          302           10.734        13.93         2.559         0 \r\n 2000          303           7.279         14.5          2.674         0 \r\n 2000          304           5.446         18.48         5.443         1.016 \r\n 2000          305           8.731         23.94         8.05          0 \r\n 2000          306           5.353         22.42         7.26          12.954 \r\n 2000          307           11.865        14.91         3.634         0 \r\n 2000          308           11.753        10.39         1.596         0 \r\n 2000          309           11.211        14.99         2.35          0 \r\n 2000          310           7.035         14.9          1.826         0.254 \r\n 2000          311           0.539         10.99         5.646         30.302 \r\n 2000          312           2.582         8.87         -1.941         0 \r\n 2000          313           3.939        -1.235        -3.725         0 \r\n 2000          314           2.241        -0.195        -2.832         0 \r\n 2000          315           6.474         2.152        -5.024         0 \r\n 2000          316           4.51          1.883        -5.317         4.75 \r\n 2000          317           1.06          3.645        -1.684         0 \r\n 2000          318           2.523         0.424        -4.351         0 \r\n 2000          319           8.451        -0.166        -8.29          0 \r\n 2000          320           8.311         5.901        -9.86          4.216 \r\n 2000          321           2.21          3.291        -5.96          0 \r\n 2000          322           4.553        -5.058        -10.95         0 \r\n 2000          323           4.705        -4.216        -10.99         0 \r\n 2000          324           4.455         0.415        -7.77          0 \r\n 2000          325           7.256        -7.64         -13.13         0 \r\n 2000          326           8.991        -6.003        -19.5          0 \r\n 2000          327           8.837        -1.664        -14.37         0 \r\n 2000          328           7.244         4.361        -12.04         0 \r\n 2000          329           6.974         2.202        -9.39          0 \r\n 2000          330           4.68          3.876        -4.776         0 \r\n 2000          331           2.431        -1.359        -3.695         0 \r\n 2000          332           4.858         3.004        -4.621         0 \r\n 2000          333           4.63          3.206        -5.862         0 \r\n 2000          334           2.723         1.586        -2.18          0 \r\n 2000          335           1.967        -0.052        -4.805         3.2 \r\n 2000          336           4.832        -0.443        -5.009         0 \r\n 2000          337           8.169        -0.29         -14.05         0 \r\n 2000          338           7.038        -0.824        -13.65         0 \r\n 2000          339           2.96          1.135        -12.96         0 \r\n 2000          340           5.577        -12.93        -17.8          0 \r\n 2000          341           2.89         -5.377        -17.43         0 \r\n 2000          342           2.569         0.508        -5.387         0 \r\n 2000          343           7.17         -5.038        -15.21         0 \r\n 2000          344           1.967        -2.514        -13.14         9.22 \r\n 2000          345           7.175        -2.027        -18.54         7.442 \r\n 2000          346           3.331        -16.97        -20.09         7.188 \r\n 2000          347           6.863        -18.87        -26.42         0 \r\n 2000          348           3.984        -11.73        -21.45         0 \r\n 2000          349           7.177        -9.27         -15.7          0 \r\n 2000          350           4.339        -6.293        -13.31         2.946 \r\n 2000          351           5.542        -5.028        -19.09         0 \r\n 2000          352           7.274        -16.19        -21.68         3.861 \r\n 2000          353           4.15         -13.35        -16.23         10.82 \r\n 2000          354           7.542        -13.26        -23.1          0 \r\n 2000          355           3.394        -10.67        -23.06         3.632 \r\n 2000          356           6.57         -17.97        -22.92         0 \r\n 2000          357           7.539        -18.09        -26.06         6.172 \r\n 2000          358           3.277        -12.55        -22.98         0 \r\n 2000          359           3.353        -20.26        -30.94         0 \r\n 2000          360           2.534        -13.46        -32.45         0 \r\n 2000          361           3.756        -9.78         -18.98         0 \r\n 2000          362           4.554        -10.95        -20.17         2.642 \r\n 2000          363           2.738        -10.22        -14.37         11.354 \r\n 2000          364           7.466        -9.89         -13.21         0 \r\n 2000          365           4.832        -11.7         -13.95         0 \r\n 2000          366           5.08         -8.44         -13.32         0 \r\n 2001          1             5.39         -8.12         -20.37         0 \r\n 2001          2             7.45         -6.983        -19.63         0 \r\n 2001          3             6.373        -2.087        -10.48         0 \r\n 2001          4             5.077         2.31         -10.47         0 \r\n 2001          5             8.015         0.078        -12            0 \r\n 2001          6             7.934         2.471        -11            0 \r\n 2001          7             6.329         0.692        -11.72         0 \r\n 2001          8             6.391        -6.11         -17.42         0 \r\n 2001          9             5.59         -5.739        -21.8          0 \r\n 2001          10            7.574         1.697        -9.15          0 \r\n 2001          11            3.102         3.254        -2.926         0 \r\n 2001          12            3.111         1.211        -1.186         0 \r\n 2001          13            3.852         0.687        -1.159         6.858 \r\n 2001          14            3.669         0.726        -1.434         0 \r\n 2001          15            5.307         0.033        -6.769         0 \r\n 2001          16            6.503        -6.658        -13.5          0 \r\n 2001          17            8.65         -6.533        -14.12         0 \r\n 2001          18            5.681        -1.492        -11.46         0 \r\n 2001          19            9.393        -10.69        -23.49         0 \r\n 2001          20            9.494        -10.19        -26.51         0 \r\n 2001          21            9.469        -9.88         -19.66         0 \r\n 2001          22            9.549        -3.377        -19.24         0 \r\n 2001          23            9.718        -2.48         -11.55         0 \r\n 2001          24            10.303       -8.47         -18.87         0 \r\n 2001          25            9.836        -7.02         -21.68         0 \r\n 2001          26            5.049        -2.773        -11.09         0 \r\n 2001          27            10.475       -7.67         -20.63         0 \r\n 2001          28            6.975        -4.273        -13.85         3.581 \r\n 2001          29            2.516         1.621        -5.407         16.688 \r\n 2001          30            4.102         1.926        -2.706         0 \r\n 2001          31            8.74         -1.549        -10.75         0 \r\n 2001          32            10.516       -10.26        -23.73         0 \r\n 2001          33            9.302        -13.88        -25.89         0 \r\n 2001          34            6.359        -2.936        -13.9          3.378 \r\n 2001          35            7.382        -2.783        -6.849         0 \r\n 2001          36            7.465         1.288        -10.06         0 \r\n 2001          37            11.34        -4.379        -14.19         0 \r\n 2001          38            4.686        -1.243        -9.39          0 \r\n 2001          39            2.975         0.096        -2.295         11.532 \r\n 2001          40            5.725        -2.266        -19.43         3.785 \r\n 2001          41            9.871        -11.22        -21.34         0 \r\n 2001          42            8.122        -6.317        -19.36         0 \r\n 2001          43            7.177        -0.418        -8.29          0 \r\n 2001          44            4.848         0.525        -8.26          0 \r\n 2001          45            5.7          -0.542        -12.23         4.394 \r\n 2001          46            8.265        -7.32         -11.75         0 \r\n 2001          47            13.769       -8.38         -18.19         0 \r\n 2001          48            13.881       -13.21        -22.42         0 \r\n 2001          49            12.227       -3.474        -15.73         0 \r\n 2001          50            12.585       -1.033        -8.34          0 \r\n 2001          51            14.903       -7.58         -18.07         0 \r\n 2001          52            14.131       -11.99        -23.01         0 \r\n 2001          53            12.381       -3.454        -13.62         0 \r\n 2001          54            13.721       -4.273        -18.41         2.769 \r\n 2001          55            4.579         3.876        -4.283         7.569 \r\n 2001          56            13.448        3.35         -10.25         0 \r\n 2001          57            7.252        -5.758        -12.85         0 \r\n 2001          58            12.004       -11.73        -20.62         0 \r\n 2001          59            16.834       -5.749        -22.83         0 \r\n 2001          60            10.409       -2.316        -12.01         0 \r\n 2001          61            16.905        0.992        -7.1           0 \r\n 2001          62            15.94         1.774        -11.61         0 \r\n 2001          63            17.775       -2.534        -10.18         0 \r\n 2001          64            17.85        -4.495        -12.07         0 \r\n 2001          65            17.862       -2.537        -13.69         0 \r\n 2001          66            9.692        -1.153        -9.46          0 \r\n 2001          67            14.221       -1.763        -7.64          0 \r\n 2001          68            18.461       -0.799        -10.84         0 \r\n 2001          69            6.702         1.507        -8.15          0 \r\n 2001          70            17.468        1.459        -10.92         11.455 \r\n 2001          71            6.873         1.726        -3.618         0 \r\n 2001          72            14.735        1.583        -4.244         0 \r\n 2001          73            14.2          9.67         -2.778         0 \r\n 2001          74            11.606        0.429        -2.596         0 \r\n 2001          75            12.389       -2.105        -5.074         0 \r\n 2001          76            20.274       -0.081        -10.419        0 \r\n 2001          77            18.893        1.497        -12.122        0 \r\n 2001          78            19.907        3.195        -6.181         0 \r\n 2001          79            20.578        5.731        -6.826         0 \r\n 2001          80            16.683        6.306        -1.007         0 \r\n 2001          81            14.699        9.186        -2.256         0 \r\n 2001          82            9.031         0.068        -7.778         0 \r\n 2001          83            20.836       -6.631        -11.55         0 \r\n 2001          84            18.713       -8.24         -12.35         0 \r\n 2001          85            21.947       -4.109        -13.79         0 \r\n 2001          86            21.908        4.628        -12.26         0 \r\n 2001          87            6.406         5.451        -2.811         5.817 \r\n 2001          88            3.912         4.663        -0.018         0 \r\n 2001          89            10.92         9.22          0.468         2.718 \r\n 2001          90            11.263        3.876        -1.845         0 \r\n 2001          91            20.299        8.84         -3.368         0 \r\n 2001          92            19.789        9.58          0.629         0 \r\n 2001          93            15.785        9.18         -0.551         0 \r\n 2001          94            20.176        14.65         0.668         0 \r\n 2001          95            2.731         11.68         6.009         5.08 \r\n 2001          96            6.406         14.78         4.403         3.302 \r\n 2001          97            13.565        18.02         6.474         0.508 \r\n 2001          98            22.652        18.49         1.154         0 \r\n 2001          99            4.504         10.48         6.397         0 \r\n 2001          100           10.943        15.31         5.508         3.81 \r\n 2001          101           3.886         20.31         10.12         35.814 \r\n 2001          102           6.766         11.5          3.933         1.524 \r\n 2001          103           22.796        15.95         0.763         2.032 \r\n 2001          104           20.402        18.73         1.125         0.254 \r\n 2001          105           18.056        14.9         -0.91          0 \r\n 2001          106           9.568        -0.085        -2.793         0 \r\n 2001          107           25.472        9.21         -1.922         0 \r\n 2001          108           24.538        15.12        -3.465         0 \r\n 2001          109           17.146        20.47         3.54          0 \r\n 2001          110           22.312        27.79         10.69         0.508 \r\n 2001          111           8.956         17.88         8.17          3.81 \r\n 2001          112           9.008         24.68         7.77          6.35 \r\n 2001          113           8.645         18.17         3.693         0.254 \r\n 2001          114           24.481        17.86        -0.872         4.826 \r\n 2001          115           26.411        20.22         2.317         0.254 \r\n 2001          116           25.843        26.81         9.18          0 \r\n 2001          117           26.977        24.81         7.6           0 \r\n 2001          118           20.584        24.06         9.81          0 \r\n 2001          119           24.434        28.57         11.31         0 \r\n 2001          120           9.492         23.91         14.29         30.988 \r\n 2001          121           23.129        27.43         11.5          2.794 \r\n 2001          122           2.311         18.29         12            32.258 \r\n 2001          123           8.294         16.06         10.33         13.208 \r\n 2001          124           7.005         14.84         10.85         0.762 \r\n 2001          125           4.888         14.69         9.81          4.318 \r\n 2001          126           10.767        20.68         13.88         8.636 \r\n 2001          127           24.463        19.23         8.25          0.254 \r\n 2001          128           27.902        22.6          8.3           0 \r\n 2001          129           22.624        28.78         9.51          1.524 \r\n 2001          130           14.615        24.19         11.28         3.556 \r\n 2001          131           20.82         18.49         7.9           0.254 \r\n 2001          132           26.535        19.74         5.171         0 \r\n 2001          133           9.292         17.76         8.61          2.032 \r\n 2001          134           27.21         31.64         12.43         0 \r\n 2001          135           24.016        33.47         20.14         0 \r\n 2001          136           26.093        29.87         14.87         0 \r\n 2001          137           24.998        27.87         13.79         0 \r\n 2001          138           23.014        24.56         10.8          0 \r\n 2001          139           27.363        28.15         11.31         0 \r\n 2001          140           8.93          24.92         14.79         15.24 \r\n 2001          141           17.189        16.2          6.686         11.176 \r\n 2001          142           14.363        11.5          5.99          1.27 \r\n 2001          143           14.294        9.77          3.731         3.302 \r\n 2001          144           11.528        14.84         4.93          12.954 \r\n 2001          145           8.711         13.9          8.84          2.032 \r\n 2001          146           13.597        16.84         8.21          6.604 \r\n 2001          147           23.259        18.6          7.73          0 \r\n 2001          148           25.068        21.99         6.019         0 \r\n 2001          149           24.929        24.48         9.05          0 \r\n 2001          150           17.687        19.14         10.96         0 \r\n 2001          151           5.947         14.21         7.98          5.842 \r\n 2001          152           19.026        18.93         5.171         10.668 \r\n 2001          153           15.251        16.58         8.82          0 \r\n 2001          154           20.149        16.11         6.086         0 \r\n 2001          155           12.052        15.39         7.66          0 \r\n 2001          156           4.396         14.31         9.45          13.208 \r\n 2001          157           16.869        21.45         12.82         0.254 \r\n 2001          158           15.273        23.62         13.6          0 \r\n 2001          159           27.236        25.33         12.15         0 \r\n 2001          160           28.056        29.81         13.26         0 \r\n 2001          161           27.072        31.19         19.32         0 \r\n 2001          162           25.605        35.66         16.72         1.778 \r\n 2001          163           4.466         23.65         19.22         1.016 \r\n 2001          164           24.447        32.33         20.68         0 \r\n 2001          165           6.416         25.04         18.16         18.542 \r\n 2001          166           23.795        23.6          14.9          0 \r\n 2001          167           30.566        27.01         13.49         0 \r\n 2001          168           23.316        30.46         13.75         2.286 \r\n 2001          169           25.578        32.72         19.16         6.858 \r\n 2001          170           18.604        23.43         13.14         0 \r\n 2001          171           26.938        27.17         12.97         0 \r\n 2001          172           21.45         23.68         13.26         0 \r\n 2001          173           30.694        22.81         10.86         0 \r\n 2001          174           30.729        26.83         10.26         0 \r\n 2001          175           26.969        29.85         13.78         0 \r\n 2001          176           28.762        33.87         19.21         0 \r\n 2001          177           25.278        33.22         20.46         0 \r\n 2001          178           27.564        31.53         19.37         0 \r\n 2001          179           25.156        30.38         17.2          0 \r\n 2001          180           26.327        31.32         16.84         0 \r\n 2001          181           18.096        32.65         19.22         0 \r\n 2001          182           27.475        21.56         12.02         0 \r\n 2001          183           21.496        23.46         10.57         0 \r\n 2001          184           25.983        30.4          18.26         1.27 \r\n 2001          185           29.564        29.43         15.55         0 \r\n 2001          186           30.721        26.23         10.75         0 \r\n 2001          187           22.486        28.67         11.27         0 \r\n 2001          188           13.805        29.95         20.01         0 \r\n 2001          189           24.241        34.5          19.08         0 \r\n 2001          190           28.772        33.64         17.81         0 \r\n 2001          191           28.949        31.98         17.82         0 \r\n 2001          192           26.906        28.39         14.36         0 \r\n 2001          193           25.022        28.68         14.61         0 \r\n 2001          194           30.05         29.78         13.59         0 \r\n 2001          195           28.985        30.63         13.28         0 \r\n 2001          196           25.236        30.33         15.42         0 \r\n 2001          197           20.554        30.43         15.32         0 \r\n 2001          198           18.061        30.42         20.73         7.62 \r\n 2001          199           23.83         32.81         20.59         0.254 \r\n 2001          200           16.151        28.91         21.34         9.398 \r\n 2001          201           9.67          29.09         19.87         5.334 \r\n 2001          202           20.828        31.2          22.03         0.254 \r\n 2001          203           5.866         26.19         21.66         3.048 \r\n 2001          204           16.806        30.25         21.79         1.778 \r\n 2001          205           13.553        28.88         18.55         32.512 \r\n 2001          206           22.727        25.3          17.19         0 \r\n 2001          207           27.995        24.81         16.03         0 \r\n 2001          208           19.3          25.66         16.82         0 \r\n 2001          209           22.11         28.13         17.36         0 \r\n 2001          210           26.346        29.96         15.48         0 \r\n 2001          211           22.964        32.14         18.71         0 \r\n 2001          212           25.321        34.19         23.99         0 \r\n 2001          213           13.582        32.16         24.66         0.762 \r\n 2001          214           14.135        29.9          20.75         22.098 \r\n 2001          215           21.15         31.35         18.61         0 \r\n 2001          216           26.547        31.42         18.86         0 \r\n 2001          217           26.284        32.34         21.79         0 \r\n 2001          218           23.415        33.19         21.31         0 \r\n 2001          219           25.222        32.94         21.72         0 \r\n 2001          220           25.825        31.74         19.21         0 \r\n 2001          221           20.37         29.3          13.51         0 \r\n 2001          222           24.856        23.31         10.72         0 \r\n 2001          223           26.473        25.27         10.67         0 \r\n 2001          224           22.379        28.41         14.31         0 \r\n 2001          225           26.724        25.11         12.27         0 \r\n 2001          226           16.451        24.2          9.4           0.254 \r\n 2001          227           2.51          17.69         13.61         24.13 \r\n 2001          228           14.873        23.23         13.28         0 \r\n 2001          229           23.085        25.65         11.05         0 \r\n 2001          230           12.852        20.93         12.56         6.604 \r\n 2001          231           21.83         25.23         12.42         0 \r\n 2001          232           24.593        26.29         10.88         0 \r\n 2001          233           12.521        24.79         15.01         1.27 \r\n 2001          234           11.202        28.1          19.48         0 \r\n 2001          235           22.194        29.23         17.55         0 \r\n 2001          236           10.034        23.8          19.18         3.81 \r\n 2001          237           12.485        24.35         17            4.572 \r\n 2001          238           22.595        29.81         14.76         0 \r\n 2001          239           22.944        27.24         14.51         0 \r\n 2001          240           23.243        27.89         12.33         0 \r\n 2001          241           19.818        28.17         14.73         0 \r\n 2001          242           19.281        25.67         14.84         0 \r\n 2001          243           23.505        21.76         10.52         0 \r\n 2001          244           21.812        24.26         7.52          0 \r\n 2001          245           21.464        28.09         11.81         0 \r\n 2001          246           21.055        27.58         12.15         0 \r\n 2001          247           22.142        27.42         9.22          0 \r\n 2001          248           20.829        28.33         13.93         0 \r\n 2001          249           5.655         24.72         16.17         29.21 \r\n 2001          250           7.224         25.6          15.98         62.738 \r\n 2001          251           14.626        19.64         10.38         6.858 \r\n 2001          252           12.427        19.79         9.92          0 \r\n 2001          253           21.808        21.69         9.8           0 \r\n 2001          254           21.617        26.65         10.04         0 \r\n 2001          255           19.161        26            11.57         0 \r\n 2001          256           6.546         18.26         9.7           0 \r\n 2001          257           7.784         15.08         7.67          5.08 \r\n 2001          258           9.056         18.6          10.99         0 \r\n 2001          259           8.118         18.26         12.05         5.334 \r\n 2001          260           9.507         19.78         11.94         1.778 \r\n 2001          261           3.947         16.78         10.96         0 \r\n 2001          262           6.032         18.55         11.08         0 \r\n 2001          263           12.023        22.83         8.06          21.844 \r\n 2001          264           12.439        20.95         11.44         0 \r\n 2001          265           12.719        24.73         7.71          0 \r\n 2001          266           5.408         15.85         5.835         0 \r\n 2001          267           19.703        14.11         2.063         0 \r\n 2001          268           19.493        16.75         0.529         0 \r\n 2001          269           19.039        21.4          1.778         0 \r\n 2001          270           18.759        23.74         3.713         0 \r\n 2001          271           18.415        21.53         5.161         0 \r\n 2001          272           17.801        19.44         4.565         0 \r\n 2001          273           17.842        23.05         2.873         0 \r\n 2001          274           16.995        26.24         8.67          0 \r\n 2001          275           16.246        28.83         7.59          0 \r\n 2001          276           15.823        17.97         9.34          0 \r\n 2001          277           3.315         14.13         7.15          0 \r\n 2001          278           15.18         12.7         -0.1           0 \r\n 2001          279           16.919        10.1         -1.245         0 \r\n 2001          280           14.809        17.79        -2.717         0 \r\n 2001          281           11.715        20.29         6.793         0 \r\n 2001          282           4.003         18.09         12.97         6.096 \r\n 2001          283           3.728         17.83         5.893         4.064 \r\n 2001          284           14.939        20.14         3.024         0 \r\n 2001          285           12.412        19.33         3.473         0 \r\n 2001          286           4.189         13.68         4.527         16.256 \r\n 2001          287           10.704        13.08         3.367         0 \r\n 2001          288           8.279         9.45          1.092         0 \r\n 2001          289           10.959        8.92         -1.674         0 \r\n 2001          290           14.388        14.23        -3.426         0 \r\n 2001          291           9.165         13.76         3.101         0 \r\n 2001          292           12.215        16.51         1.339         0 \r\n 2001          293           8.684         16.1          1.51          0 \r\n 2001          294           12.199        18.27         4.143         0.254 \r\n 2001          295           3.842         15.64         2.842         6.096 \r\n 2001          296           6.966         18.19         10.53         0.254 \r\n 2001          297           5.926         13.45         0.964         1.778 \r\n 2001          298           4.882         4.048        -0.586         0 \r\n 2001          299           5.829         5.142        -0.71          0 \r\n 2001          300           12.344        7.59         -4.988         0 \r\n 2001          301           12.19         19.33         0.615         0 \r\n 2001          302           9.752         14.28         1.974         0 \r\n 2001          303           3.821         10.44         4.163         0 \r\n 2001          304           4.626         16.66         8.45          0 \r\n 2001          305           10.902        21.65         7.3           1.524 \r\n 2001          306           12.062        16.11         1.683         0 \r\n 2001          307           9.331         19.94         0.644         0 \r\n 2001          308           11.159        17.4          1.444         0 \r\n 2001          309           10.964        19.76         0.9           0 \r\n 2001          310           10.145        22.94         5.738         0 \r\n 2001          311           9.66          24.47         9.37          0 \r\n 2001          312           9.823         13.33        -2.132         0 \r\n 2001          313           10.185        15.79        -3.349         0 \r\n 2001          314           9.647         14.11         1.492         0 \r\n 2001          315           9.895         13.42        -0.987         0 \r\n 2001          316           9.358         16.8          0.005         0 \r\n 2001          317           3.429         15.79         8.53          4.826 \r\n 2001          318           1.893         17.48         13.1          0 \r\n 2001          319           4.803         16.45         6.529         0 \r\n 2001          320           6.666         19.02         5.304         0.508 \r\n 2001          321           7.579         20.17         4.852         0.254 \r\n 2001          322           2.733         16.81         4.479         3.302 \r\n 2001          323           9.238         5.064        -3.936         0 \r\n 2001          324           7.359         8.97         -6.618         0 \r\n 2001          325           8.905         16.37        -1.263         0 \r\n 2001          326           7.75          14.94         1.111         0 \r\n 2001          327           2.525         12.45         4.852         3.48 \r\n 2001          328           2.885         15.4          5.641         10.973 \r\n 2001          329           1.389         5.679         0.967         0 \r\n 2001          330           1.15          7.29          0.711         6.782 \r\n 2001          331           1.285         7.99         -0.433         0 \r\n 2001          332           1.064         1.614        -0.347         0 \r\n 2001          333           1.626         2.223        -0.71          0 \r\n 2001          334           1.682         2.785        -0.366         0 \r\n 2001          335           7.04          4.355        -2.152         0 \r\n 2001          336           5.091         10.53        -2.716         0 \r\n 2001          337           4.755         11.62        -3.657         0 \r\n 2001          338           2.166         15.09         9.14          0 \r\n 2001          339           1.901         17.62         0.414         3.785 \r\n 2001          340           7.536         9.18         -2.659         0 \r\n 2001          341           2.534         3.827        -4.235         0 \r\n 2001          342           7.189         1.239        -7.45          0 \r\n 2001          343           7.394         8.4          -8.08          0 \r\n 2001          344           6.904         7.65         -2.525         0 \r\n 2001          345           7.454         9.87         -3.715         0 \r\n 2001          346           0.57          4.979        -1.063         0 \r\n 2001          347           2.283        -1.044        -4.69          0 \r\n 2001          348           2.364        -1.091        -5.067         0 \r\n 2001          349           4.39          7.43         -1.111         0 \r\n 2001          350           0.679         7.41          0             0 \r\n 2001          351           6.804         5.355        -2.362         0 \r\n 2001          352           5.538         7.41         -4.062         0 \r\n 2001          353           7.425         2.708        -7.11          0 \r\n 2001          354           7.26          4.892        -7.7           0 \r\n 2001          355           5.557         4.143        -9.35          3.327 \r\n 2001          356           0.397         5.219        -8.38          0 \r\n 2001          357           4.038        -6.578        -11.74         0 \r\n 2001          358           6.46         -7.68         -13.38         0 \r\n 2001          359           7.429        -8.08         -14.57         0 \r\n 2001          360           5.577        -5.573        -14.82         0 \r\n 2001          361           3.46         -4.854        -10.95         0 \r\n 2001          362           5.758        -6.013        -13.65         0 \r\n 2001          363           5.391        -12.72        -16.88         0 \r\n 2001          364           5.721        -8.7          -16.44         0 \r\n 2001          365           7.518        -9.49         -18.35         0 \r\n 2002          1             6.813        -8.62         -16.22         0 \r\n 2002          2             6.876        -5.534        -15.72         0 \r\n 2002          3             7.506        -3.917        -18.54         0 \r\n 2002          4             6.291         1.793        -8.38          0 \r\n 2002          5             4.545         2.986        -4.718         0 \r\n 2002          6             5.197        -1.741        -12.25         0 \r\n 2002          7             7.608        -1.731        -15.97         0 \r\n 2002          8             7.106         13.27        -6.323         0 \r\n 2002          9             5.215         9.41          0.925         0 \r\n 2002          10            4.328         4.058        -2.132         0 \r\n 2002          11            8.012         9.58         -5.262         0 \r\n 2002          12            8.136         3.626        -5.087         0 \r\n 2002          13            3.368         7.75         -5.513         0 \r\n 2002          14            1.955         1.621        -2.17          2.5 \r\n 2002          15            2.8          -2.017        -5.994         0 \r\n 2002          16            4.392        -4.36         -11.81         0 \r\n 2002          17            8.322        -5.262        -12.02         1.5 \r\n 2002          18            9.148        -7.93         -18.51         0 \r\n 2002          19            5.891        -0.772        -11.12         0 \r\n 2002          20            8.767         6.629        -8.94          0 \r\n 2002          21            9.246         7.93         -8.74          0 \r\n 2002          22            8.383         13.55        -2.535         0 \r\n 2002          23            3.823         0.577        -5.652         0 \r\n 2002          24            9.734         6.174        -12.1          0 \r\n 2002          25            9.362         15.01        -7.93          0 \r\n 2002          26            10.016        17.12        -2.18          0 \r\n 2002          27            7.526         13.12        -1.534         0 \r\n 2002          28            2.878         2.308        -2.094         0 \r\n 2002          29            1.416        -0.719        -3.33          0 \r\n 2002          30            3.456        -1.224        -4.68          2.591 \r\n 2002          31            4.068        -3.224        -5.282         7.722 \r\n 2002          32            11.443       -5.252        -14.94         0 \r\n 2002          33            10.09        -0.485        -15.57         0 \r\n 2002          34            10.962       -2.477        -14.14         0 \r\n 2002          35            12.18        -6.888        -21.67         0 \r\n 2002          36            11.676       -2.031        -15.69         0 \r\n 2002          37            11.341        1.592        -13.38         0 \r\n 2002          38            12.592        4.71         -7.03          0 \r\n 2002          39            12.132        6.189        -5.495         0 \r\n 2002          40            6.48          6.281         1.071         2.769 \r\n 2002          41            11.077        1.134        -6.954         0 \r\n 2002          42            8.563         3.694        -8.08          0 \r\n 2002          43            9.293         2.308        -8.19          0 \r\n 2002          44            13.11         6.289        -11.11         0 \r\n 2002          45            7.531         8.79         -1.225         0 \r\n 2002          46            11.205        6.994        -0.79          0 \r\n 2002          47            11.925        6.953        -2.39          0 \r\n 2002          48            14.042        7.33         -6.156         0 \r\n 2002          49            5.837         11.77         0.868         5.131 \r\n 2002          50            0.813         7.32          3.387         13.792 \r\n 2002          51            1.85          3.406        -2.151         0 \r\n 2002          52            9.951         0.906        -5.759         0 \r\n 2002          53            13.211        4.941        -8.51          0 \r\n 2002          54            12.366        13.78         1.382         0 \r\n 2002          55            7.32          13.97        -1.711         0 \r\n 2002          56            6.957        -0.881        -9.89          0 \r\n 2002          57            9.618        -7.48         -11.83         0 \r\n 2002          58            16.424       -3.426        -15.05         0 \r\n 2002          59            13.485       -0.915        -11.01         0 \r\n 2002          60            6.834        -6.533        -13.31         7.188 \r\n 2002          61            11.658       -8.36         -14.57         0 \r\n 2002          62            16.061       -14.15        -22.17         0 \r\n 2002          63            9.941        -3.695        -22.47         3.429 \r\n 2002          64            13.693        0.773        -12.41         0 \r\n 2002          65            8.149        -1.143        -6.936         0 \r\n 2002          66            5.593         2.928        -5.01          0 \r\n 2002          67            2.577         9.33          0.239         5.867 \r\n 2002          68            12.386        9.7          -11.81         0 \r\n 2002          69            17.906       -3.648        -14.86         0 \r\n 2002          70            10.597        6.319        -4.873         0 \r\n 2002          71            13.231        11.41        -6.568         0 \r\n 2002          72            6.788         4.604        -0.988         0 \r\n 2002          73            1.277         2.25          0.362         0 \r\n 2002          74            13.948        1.773        -3.013         0 \r\n 2002          75            19.658        7.82         -6.91          0 \r\n 2002          76            4.172         1.392        -0.723         0 \r\n 2002          77            9.644         6.124        -0.798         0 \r\n 2002          78            1.857         2.393         0.439         0.8 \r\n 2002          79            20.042        9.11         -3.618         1 \r\n 2002          80            16.39        -3.598        -12.56         0 \r\n 2002          81            20.785        1.411        -11.6          0 \r\n 2002          82            19.64         5.358        -8.54          0 \r\n 2002          83            12.311        3.033        -4.651         0 \r\n 2002          84            20.533        1.974        -8.86          0 \r\n 2002          85            21.833        6.313        -9.95          0 \r\n 2002          86            16.762        13.63        -4.237         0 \r\n 2002          87            20.571        13.93         2.021         0 \r\n 2002          88            19.793        14.71         0.535         0 \r\n 2002          89            17.584        9.32         -3.071         0 \r\n 2002          90            17.72         6.683        -4.612         0 \r\n 2002          91            8.376         0.2          -6.041         0 \r\n 2002          92            11.386        1.345        -5.087         0 \r\n 2002          93            14.962       -2.433        -7.58          0 \r\n 2002          94            21.62         2.872        -9.3           0 \r\n 2002          95            22.693        9.16         -3.166         0 \r\n 2002          96            21.25         11.35        -5.491         0 \r\n 2002          97            3.323         12.23         6.461         0.762 \r\n 2002          98            1.878         9.4           1.831         3.81 \r\n 2002          99            24.037        14.48        -1.444         0 \r\n 2002          100           20.189        23.66         3.77          0 \r\n 2002          101           3.737         17.79         7.16          21.082 \r\n 2002          102           11.672        13.76         5.826         0.254 \r\n 2002          103           20.785        19.66         0.088         0 \r\n 2002          104           17.173        24.63         8.26          0 \r\n 2002          105           22.301        32.44         13.53         0 \r\n 2002          106           20.052        30.77         17.72         3.556 \r\n 2002          107           25.633        22.27         11.06         0.254 \r\n 2002          108           14.21         28.39         10.85         15.748 \r\n 2002          109           11.462        13.3          6.367         0 \r\n 2002          110           20.728        11.14         4.517         1.27 \r\n 2002          111           4.075         5.44          0.215         8.128 \r\n 2002          112           14.663        9.44         -0.319         0 \r\n 2002          113           25.549        19.52         1.373         0 \r\n 2002          114           14.286        15.35         0.319         4.064 \r\n 2002          115           26.694        11.37        -1.311         0 \r\n 2002          116           26.056        13.59        -2.879         0 \r\n 2002          117           1.739         8.5           3.071         36.83 \r\n 2002          118           8.087         6.929         2.441         0.254 \r\n 2002          119           27.471        18.79         2.689         0 \r\n 2002          120           23.62         18.61         7.39          0 \r\n 2002          121           6.226         11.73         2.632         8.382 \r\n 2002          122           23.894        12.36         0.158         0 \r\n 2002          123           27.817        18.23         0.376         0 \r\n 2002          124           21.433        21.05         5.614         0 \r\n 2002          125           19.342        24.68         3.416         5.08 \r\n 2002          126           24.828        27.08         11.16         0 \r\n 2002          127           21.24         21.02         6.589         0 \r\n 2002          128           19.563        27.81         9.01          0 \r\n 2002          129           23.419        13.35         4.211         0 \r\n 2002          130           22.03         17.38         0.784         0 \r\n 2002          131           2.507         13.49         6.58          22.352 \r\n 2002          132           6.236         9.91          6.27          0 \r\n 2002          133           23.462        18.54         3.751         0 \r\n 2002          134           29.347        20.34         3.588         0 \r\n 2002          135           19.345        24.84         9.22          0 \r\n 2002          136           14.734        20.59         10            0 \r\n 2002          137           27.278        14.14         4.048         0 \r\n 2002          138           23.179        15.6          0.568         0 \r\n 2002          139           29.663        16.18         1.711         0 \r\n 2002          140           30.143        14.41         1.873         0 \r\n 2002          141           30.195        18.16         0.711         0 \r\n 2002          142           23.775        24.8          8.06          0 \r\n 2002          143           21.28         25.31         8.25          0 \r\n 2002          144           27.661        18.14         5.95          0.254 \r\n 2002          145           20.191        17.84         4.939         8.128 \r\n 2002          146           22.697        25.79         10.26         0 \r\n 2002          147           27.724        28.64         12.79         0 \r\n 2002          148           18.456        27.59         14.35         12.7 \r\n 2002          149           23.677        27.8          16.82         11.684 \r\n 2002          150           23.22         31.49         16.31         0 \r\n 2002          151           15.531        27.62         16.32         0.254 \r\n 2002          152           20.832        32.28         15.08         0 \r\n 2002          153           10.707        20.28         14.52         6.604 \r\n 2002          154           6.666         19.03         10.73         10.414 \r\n 2002          155           5.308         15.66         11.92         6.604 \r\n 2002          156           24.714        22.4          10.74         0 \r\n 2002          157           29.225        25.2          10.21         0 \r\n 2002          158           27.429        29.15         14.34         0 \r\n 2002          159           21.003        30.08         17.38         0 \r\n 2002          160           26.109        30.79         17.07         0 \r\n 2002          161           7.041         26.92         20.53         0 \r\n 2002          162           15.982        27.32         18.89         4.826 \r\n 2002          163           27.42         27.24         18.5          0 \r\n 2002          164           25.648        23.95         13.05         2.54 \r\n 2002          165           20.438        22.47         11.75         0 \r\n 2002          166           22.743        24.49         11.96         0 \r\n 2002          167           28.071        26.24         9.06          0 \r\n 2002          168           14.844        25.42         11.88         0 \r\n 2002          169           21.372        28.84         15.53         4.572 \r\n 2002          170           16.922        27.78         19.18         17.018 \r\n 2002          171           22.18         27.08         18.8          0 \r\n 2002          172           14.734        30.57         18.84         2.286 \r\n 2002          173           26.239        31.73         20.51         0 \r\n 2002          174           28.51         31.81         19.57         0 \r\n 2002          175           28.295        31.47         17.42         0 \r\n 2002          176           26.754        32.63         19.03         0 \r\n 2002          177           24.302        30.31         18.4          12.192 \r\n 2002          178           24.449        27.97         15.69         0 \r\n 2002          179           25.241        30.71         16.09         0 \r\n 2002          180           27.097        33.32         18.22         0 \r\n 2002          181           28.489        33.1          21.77         0 \r\n 2002          182           28.924        32.23         20.9          0 \r\n 2002          183           27.177        31.95         18.32         0 \r\n 2002          184           27.111        32.13         19.26         0 \r\n 2002          185           24.623        30.65         20.54         0 \r\n 2002          186           22.843        30.54         18.96         0 \r\n 2002          187           16.768        29.04         19.08         0 \r\n 2002          188           25.961        31.69         19.45         0 \r\n 2002          189           21.786        33.55         22.01         0 \r\n 2002          190           25.259        31.73         21.2          0 \r\n 2002          191           6.387         23.03         15.13         6.858 \r\n 2002          192           12.39         21.65         14.46         19.812 \r\n 2002          193           29.605        25.82         11.56         24.13 \r\n 2002          194           28.797        27.31         11.81         0 \r\n 2002          195           28.095        28.1          13.83         0 \r\n 2002          196           28.596        28.21         14.38         0 \r\n 2002          197           27.428        29.78         15.71         0 \r\n 2002          198           25.702        31.51         17.49         0 \r\n 2002          199           15.173        30.44         20.1          0 \r\n 2002          200           21.813        30.29         19.91         0 \r\n 2002          201           20.692        33.04         22.34         0 \r\n 2002          202           26.916        33.31         21.38         7.62 \r\n 2002          203           21.183        26.98         15.36         20.32 \r\n 2002          204           24.981        25.02         13.43         0 \r\n 2002          205           22.665        25.73         15.21         1.524 \r\n 2002          206           14.627        27.6          17.34         1.016 \r\n 2002          207           24.483        30.26         18.23         0 \r\n 2002          208           15.526        29.93         19.71         18.796 \r\n 2002          209           23.675        30.83         18.57         29.972 \r\n 2002          210           24.013        27.9          18.72         5.08 \r\n 2002          211           27.133        32.22         18.2          0 \r\n 2002          212           25.402        31.41         20.73         0 \r\n 2002          213           18.836        29.29         14.2          0 \r\n 2002          214           27.626        24.7          11.55         0 \r\n 2002          215           23.275        30.65         14.38         9.652 \r\n 2002          216           13.921        28.33         20.08         34.036 \r\n 2002          217           8.594         25.85         20.56         36.83 \r\n 2002          218           22.876        23.77         15.25         0 \r\n 2002          219           26.546        25.04         12.77         0 \r\n 2002          220           25.717        26.42         12.89         0 \r\n 2002          221           24.638        27.29         13.95         0 \r\n 2002          222           22.701        27.98         16.69         0 \r\n 2002          223           22.552        31.08         16.01         0 \r\n 2002          224           10.142        25.58         16.03         23.622 \r\n 2002          225           5.814         19.02         12.86         6.858 \r\n 2002          226           25.969        25.9          11.46         0.254 \r\n 2002          227           19.803        26.59         14.13         0 \r\n 2002          228           18.209        26.89         11.52         1.27 \r\n 2002          229           22.76         22.54         10.64         10.668 \r\n 2002          230           23.541        23.33         7.58          0.254 \r\n 2002          231           25.635        23.52         11.25         0 \r\n 2002          232           20.617        25.03         9.48          0 \r\n 2002          233           14.287        28.93         18.34         10.668 \r\n 2002          234           16.777        26.58         20.13         7.874 \r\n 2002          235           17.786        26.69         18.34         5.842 \r\n 2002          236           19.771        26.81         17.59         0 \r\n 2002          237           14.76         27.74         16.99         1.778 \r\n 2002          238           21.014        28.45         16.05         0 \r\n 2002          239           23.38         26.84         14.93         0 \r\n 2002          240           15.412        26.77         16.43         0 \r\n 2002          241           20.288        26.96         15.08         0 \r\n 2002          242           19.647        27.73         12.13         0 \r\n 2002          243           22.043        28.18         16.19         0 \r\n 2002          244           20.043        30.07         17            0.254 \r\n 2002          245           19.492        30.42         14.38         0 \r\n 2002          246           22.911        27.16         10.47         0 \r\n 2002          247           22.277        29.16         11.34         0 \r\n 2002          248           21.236        29.25         13.33         0 \r\n 2002          249           19.276        30.22         14.97         0 \r\n 2002          250           20.588        32.73         17.5          0 \r\n 2002          251           19.632        33.01         15.45         0 \r\n 2002          252           18.954        32.54         18.91         0 \r\n 2002          253           11.984        22.76         11.41         4.826 \r\n 2002          254           19.185        24.78         8.52          0 \r\n 2002          255           21.146        25.83         8.3           0 \r\n 2002          256           14.053        24.8          11.82         0 \r\n 2002          257           5.361         19.91         13.54         2.54 \r\n 2002          258           21.298        21.57         8.71          0 \r\n 2002          259           20.552        27.45         5.999         0 \r\n 2002          260           15.681        26.72         10.16         0 \r\n 2002          261           6.737         24.5          16.84         25.4 \r\n 2002          262           11.02         22.27         15.09         0.762 \r\n 2002          263           9.563         22.65         12.18         4.318 \r\n 2002          264           8.515         17.39         8.26          0 \r\n 2002          265           19.668        16.21         4.699         0 \r\n 2002          266           16.482        17.79         1.649         0 \r\n 2002          267           18.464        18.58        -0.139         0.254 \r\n 2002          268           12.413        23.3          10.1          0 \r\n 2002          269           8.699         15.1          8.52          0.254 \r\n 2002          270           11.133        18.51         5.662         1.016 \r\n 2002          271           9.75          22.16         5.238         7.874 \r\n 2002          272           13.745        28.16         13.48         0 \r\n 2002          273           14.27         30.65         17.83         0 \r\n 2002          274           9.603         27.51         13.82         2.032 \r\n 2002          275           1.352         15.38         8.8           14.224 \r\n 2002          276           2.237         14.18         10.08         8.128 \r\n 2002          277           4.631         19.07         5.42          3.556 \r\n 2002          278           14.199        17.95         1.558         0 \r\n 2002          279           8.846         14.59         5.343         1.016 \r\n 2002          280           11.89         15.31        -2.449         0 \r\n 2002          281           7.455         17.75         8.11          4.318 \r\n 2002          282           16.199        18.27         1.529         0 \r\n 2002          283           12.214        23.52         10.89         0 \r\n 2002          284           14.642        23.89         7.57          0 \r\n 2002          285           5.063         16.74         0.318         0.508 \r\n 2002          286           15.57         12.64        -3.225         0 \r\n 2002          287           14.975        15.97         0.929         0 \r\n 2002          288           14.41         10.88        -3.639         0 \r\n 2002          289           8.334         6.797        -4.349         0 \r\n 2002          290           8.377         8.77          0.956         0.762 \r\n 2002          291           3.974         14.96         3.606         0 \r\n 2002          292           7.811         5.421        -4.188         0 \r\n 2002          293           11.475        11.08        -6.606         0 \r\n 2002          294           3.346         8.52          1.563         0.508 \r\n 2002          295           6.027         5.971        -1.397         0 \r\n 2002          296           7.007         4.296        -2.678         0.762 \r\n 2002          297           2.259         3.846        -0.119         6.35 \r\n 2002          298           1.328         5.884         3.482         2.54 \r\n 2002          299           8.741         8.62         -1.875         0 \r\n 2002          300           2.95          3.865        -4.448         0.254 \r\n 2002          301           3.307         5.421        -0.12          5.334 \r\n 2002          302           3.482         7.27          0.219         0 \r\n 2002          303           7.319         6.744        -1.779         0 \r\n 2002          304           8.742         1.363        -5.212         0 \r\n 2002          305           12.094        3.148        -7.54          0 \r\n 2002          306           11.355        8.01         -5.844         0 \r\n 2002          307           6.205         9.47         -5.34          0 \r\n 2002          308           7.683         3.33         -3.091         0 \r\n 2002          309           4.208         3.54         -1.951         3.048 \r\n 2002          310           9.107         9.89         -1.913         0 \r\n 2002          311           10.559        18.12        -4.274         0 \r\n 2002          312           7.429         15.97         3.712         0 \r\n 2002          313           5.876         17.32         1.642         0 \r\n 2002          314           7.468         10.83        -0.177         0 \r\n 2002          315           1.768         1.153        -4.082         4.318 \r\n 2002          316           9.887         10.87        -6.94          0 \r\n 2002          317           4.926         12.43        -4.748         0 \r\n 2002          318           3.12          3.913        -5.349         0 \r\n 2002          319           4.043        -0.247        -5.921         0 \r\n 2002          320           7.225         0.915        -7.46          0 \r\n 2002          321           8.455         3.597        -8.62          0 \r\n 2002          322           3.399         4.277        -3.273         0 \r\n 2002          323           8.554         12.31        -1.932         0 \r\n 2002          324           7.154         13.41        -2.238         0 \r\n 2002          325           6.79          5.133        -1.407         0 \r\n 2002          326           8.62          3.377        -8.06          0 \r\n 2002          327           8.108         6.973        -2.123         0 \r\n 2002          328           3.782         0.857        -4.777         0 \r\n 2002          329           7.049        -1.421        -9.91          0 \r\n 2002          330           8.307        -0.733        -8.92          0 \r\n 2002          331           5.525        -2.554        -11.46         0 \r\n 2002          332           7.545         4.537        -10.17         0 \r\n 2002          333           3.68          8.1          -4.545         0 \r\n 2002          334           7.155        -4.535        -13.58         0 \r\n 2002          335           7.407         7.95         -14.17         0 \r\n 2002          336           7.195         0.584        -13.76         0 \r\n 2002          337           5.239        -3.811        -14.34         0 \r\n 2002          338           3.983        -3.676        -9.82          0 \r\n 2002          339           7.574        -5.544        -17.81         0 \r\n 2002          340           7.469         5.201        -15.65         0 \r\n 2002          341           7.285         3.11         -8.63          0 \r\n 2002          342           7.66         -3.928        -14.45         0 \r\n 2002          343           7.213         3.732        -16.95         0 \r\n 2002          344           6.888         9.66         -8.21          0 \r\n 2002          345           1.189         2.384        -4.583         0 \r\n 2002          346           3.873         5.759        -4.39          0 \r\n 2002          347           6.837         7.33         -8.44          0 \r\n 2002          348           6.57          11.28        -7.76          0 \r\n 2002          349           3.88          6.697        -2.755         0 \r\n 2002          350           2.467         0.639        -5.252         0 \r\n 2002          351           1.06          1.849        -1.626         9.144 \r\n 2002          352           1.652         10.87         1.792         0 \r\n 2002          353           2.013         2.852        -1.272         0 \r\n 2002          354           2.303        -1.158        -3.397         0 \r\n 2002          355           3.15         -2.084        -4.033         0 \r\n 2002          356           4.901        -1.931        -5.253         0 \r\n 2002          357           7.257        -1.544        -8.67          0 \r\n 2002          358           3.758        -4.969        -10.82         0 \r\n 2002          359           2.276        -5.659        -11.22         0 \r\n 2002          360           7             4.768        -13.86         0 \r\n 2002          361           2.001         0.925        -8.66          0 \r\n 2002          362           5.834         7.51         -5.308         0 \r\n 2002          363           5.341         7.22         -3.475         0 \r\n 2002          364           5.167         4.729        -5.252         0 \r\n 2002          365           7.387         0.487        -9.89          0 \r\n 2003          1             2.684        -3.061        -6.9           0 \r\n 2003          2             5.683        -2.002        -10.67         0 \r\n 2003          3             6.33          1.973        -12.89         0 \r\n 2003          4             2.64          0.819        -6.556         0 \r\n 2003          5             1.08         -0.619        -2.105         0 \r\n 2003          6             7.705         0.639        -7.16          0 \r\n 2003          7             6.897         12.84        -5.708         0 \r\n 2003          8             7.59          13.48        -2.515         0 \r\n 2003          9             3.865         3.043        -8.3           0 \r\n 2003          10            7.543        -7.23         -15.67         0 \r\n 2003          11            8.213        -7.86         -18.77         0 \r\n 2003          12            7.854         5.595        -18.73         3.861 \r\n 2003          13            2.917        -8.85         -14.78         0 \r\n 2003          14            8.628        -9.63         -18.63         0 \r\n 2003          15            6.771        -8.06         -19.37         0 \r\n 2003          16            7.269        -3.897        -13.75         0 \r\n 2003          17            8.948        -6.071        -19.54         0 \r\n 2003          18            8.469        -8.48         -18.04         0 \r\n 2003          19            4.064         0.381        -20.1          0 \r\n 2003          20            4.061        -8.72         -16.3          0 \r\n 2003          21            8.661        -9.63         -20.49         0 \r\n 2003          22            7.817        -12.72        -20.87         0 \r\n 2003          23            9.774        -13.39        -24.64         0 \r\n 2003          24            2.677        -7.57         -19.66         0 \r\n 2003          25            4.785        -5.395        -15.33         0 \r\n 2003          26            10.231       -11.96        -20.97         0.5 \r\n 2003          27            7.5          -4.061        -19.26         0 \r\n 2003          28            3.529        -0.638        -8.76          0 \r\n 2003          29            9.09         -7.37         -16.4          0 \r\n 2003          30            7.393        -0.342        -12.04         2.845 \r\n 2003          31            5.398         0.782        -1.143         0 \r\n 2003          32            7.619         5.45         -1.362         0 \r\n 2003          33            3.041         1.993        -1.438         3.302 \r\n 2003          34            1.506         0.772        -8.94          3.962 \r\n 2003          35            11.469       -8.93         -16.3          0 \r\n 2003          36            7.39         -3.753        -18.25         0 \r\n 2003          37            12.037       -4.699        -21.07         0 \r\n 2003          38            12.458       -8.67         -25.35         0 \r\n 2003          39            10.483       -4.629        -18.93         0 \r\n 2003          40            10.116       -5.583        -21.77         0 \r\n 2003          41            13.005       -5.54         -20.56         0.3 \r\n 2003          42            8.347         2.986        -19.07         0 \r\n 2003          43            13.406       -5.944        -20.99         0 \r\n 2003          44            12.751        2.003        -15.25         0 \r\n 2003          45            3.498        -0.857        -7.34          5.512 \r\n 2003          46            9.916        -5.476        -12.7          0 \r\n 2003          47            14.385       -4.354        -16.19         0 \r\n 2003          48            12.369       -0.905        -18.43         0 \r\n 2003          49            12.704        7.13         -7.7           0 \r\n 2003          50            13.867        7.2          -10.38         0 \r\n 2003          51            14.051        11.49        -4.804         0 \r\n 2003          52            10.477        10.17        -2.64          0 \r\n 2003          53            4.298        -2.621        -9.68          0 \r\n 2003          54            8.998        -8.12         -14.05         0 \r\n 2003          55            14.817       -13.01        -21.67         1 \r\n 2003          56            14.736       -9.1          -23.79         0 \r\n 2003          57            15.388       -2.749        -19.55         0 \r\n 2003          58            15.639        2.86         -13.91         0 \r\n 2003          59            13.41         5.291        -10.07         0 \r\n 2003          60            6.562         1.669        -7.38          0 \r\n 2003          61            16.926       -3.897        -14.37         0 \r\n 2003          62            7.842        -1.381        -13.78         0 \r\n 2003          63            6.059        -7.61         -13.6          4.343 \r\n 2003          64            15.889       -6.524        -19.09         0 \r\n 2003          65            16.912       -1.801        -13.35         0 \r\n 2003          66            13.727       -2.351        -12.08         0 \r\n 2003          67            11.73        -6.185        -18.75         0 \r\n 2003          68            18.235       -11.73        -20.74         0 \r\n 2003          69            17.016       -10.29        -19.444        0 \r\n 2003          70            15.4          6.413        -7.813         0 \r\n 2003          71            6.477         3.773        -3.617         0 \r\n 2003          72            17.6          5.641        -3.206         0 \r\n 2003          73            17.512        10.058       -2.611         0 \r\n 2003          74            17.99         16.657       -0.302         0 \r\n 2003          75            16.075        19.936        2.797         0 \r\n 2003          76            15.658        20.759        1.723         0 \r\n 2003          77            8.922         12.142        2.366         0 \r\n 2003          78            1.865         5.838        -0.668         0 \r\n 2003          79            4.705         8.572        -2.765         9 \r\n 2003          80            4.62          4.508        -3.078         0 \r\n 2003          81            19.446        13.49        -0.7           0 \r\n 2003          82            19.679        21.18        -0.56          0 \r\n 2003          83            10.049        16.27         3.568         0 \r\n 2003          84            21.157        13.48        -1.607         0 \r\n 2003          85            13.223        12.29        -2.027         4.064 \r\n 2003          86            4.601         12.24         4.499         8.814 \r\n 2003          87            3.138         5.258        -0.511         0 \r\n 2003          88            15.556        5.556        -3.253         0 \r\n 2003          89            16.876        7.37         -5.589         0 \r\n 2003          90            12.031        13.99        -4.368         0 \r\n 2003          91            21.877        26.26         4.355         0 \r\n 2003          92            21.386        24.38         3.761         0 \r\n 2003          93            8.399         9.57          0.058         0 \r\n 2003          94            3.088         0.077        -6.12          0 \r\n 2003          95            20.966       -0.133        -7.38          5.334 \r\n 2003          96            12.054        3.684        -4.618         12.903 \r\n 2003          97            12.292       -0.886        -3.253         0 \r\n 2003          98            24.376        2.869        -7.38          1.778 \r\n 2003          99            24.932        7.58         -10.04         0 \r\n 2003          100           24.661        17.78        -3.224         0 \r\n 2003          101           23.522        20.98         0.639         0 \r\n 2003          102           24.542        19.92         2.556         0 \r\n 2003          103           22.824        23.56         2.766         0 \r\n 2003          104           21.603        31.54         10.94         0 \r\n 2003          105           19.724        29.89         12.36         0 \r\n 2003          106           6.541         19.06         2.469         13.462 \r\n 2003          107           7.51          6.614         1.534         0 \r\n 2003          108           6.125         9.38          3.167         11.938 \r\n 2003          109           3.574         15.05         8.11          11.176 \r\n 2003          110           5.221         9.17          5.73          0.254 \r\n 2003          111           16.437        15.21         4.086         0.254 \r\n 2003          112           26.258        17.06         0.611         0 \r\n 2003          113           24.619        20.05         3.416         0 \r\n 2003          114           6.292         13.83         7.75          0.254 \r\n 2003          115           24.962        21            3.129         0 \r\n 2003          116           25.25         23.35         3.923         0 \r\n 2003          117           23.927        25.2          6.725         0 \r\n 2003          118           24.24         20.29         7.85          0 \r\n 2003          119           10.656        16.8          5.845         0 \r\n 2003          120           4.491         11.92         8.28          39.624 \r\n 2003          121           18.989        18.39         6.813         0 \r\n 2003          122           24.877        18.29         10.04         0 \r\n 2003          123           15.582        19.71         5.932         0 \r\n 2003          124           1.678         9.93          7.61          31.75 \r\n 2003          125           6.327         13.16         8.21          1.524 \r\n 2003          126           19.679        20.57         6.087         6.096 \r\n 2003          127           10.51         16.45         8.21          17.78 \r\n 2003          128           8.082         13.11         5.7           17.78 \r\n 2003          129           20.641        19.7          10.73         1.016 \r\n 2003          130           12.054        18.54         6.57          4.826 \r\n 2003          131           7.008         11.18         6.213         1.778 \r\n 2003          132           28.351        18.18         6.57          0 \r\n 2003          133           23.514        21.83         4.105         1.524 \r\n 2003          134           16.115        22.34         10.96         6.858 \r\n 2003          135           19.229        19.11         8.22          0 \r\n 2003          136           26.056        21.74         6.125         0 \r\n 2003          137           26.792        22.08         8.82          0 \r\n 2003          138           21.557        25.23         11.17         0 \r\n 2003          139           10.712        24.73         9.92          0 \r\n 2003          140           28.241        15.94         5.248         0 \r\n 2003          141           16.999        17.69         4.546         0 \r\n 2003          142           18.101        20.22         6.028         4.318 \r\n 2003          143           22.049        18.94         6.745         0 \r\n 2003          144           10.924        18.89         8.93          0 \r\n 2003          145           28.645        24.14         6.193         0 \r\n 2003          146           27.699        24.89         8.51          0 \r\n 2003          147           27.455        28.31         7.88          0 \r\n 2003          148           25.77         25.96         12.6          0.508 \r\n 2003          149           24.652        26.41         9.43          0 \r\n 2003          150           25.242        28.97         11.59         5.08 \r\n 2003          151           27.182        20.87         9.39          0 \r\n 2003          152           24.51         23.56         10.33         0 \r\n 2003          153           5.449         15.84         10.25         3.81 \r\n 2003          154           17.251        20.05         9.71          0 \r\n 2003          155           18.237        22.26         9.44          1.524 \r\n 2003          156           17.422        24.78         11.31         0 \r\n 2003          157           7.516         18.29         10.73         44.704 \r\n 2003          158           15.575        20.6          10.18         19.812 \r\n 2003          159           15.93         20.77         11.85         11.684 \r\n 2003          160           26.626        24.67         10.21         1.524 \r\n 2003          161           21.36         25.36         14.56         3.048 \r\n 2003          162           18.057        22.71         13.92         0 \r\n 2003          163           22.451        26.23         11.75         0 \r\n 2003          164           27.905        28.94         15.92         0.762 \r\n 2003          165           24.139        28.15         16.8          0 \r\n 2003          166           26.307        28.99         14.81         0 \r\n 2003          167           28.226        29.41         15.53         0 \r\n 2003          168           22.564        29.81         14.72         0 \r\n 2003          169           24.255        29.66         17.67         0 \r\n 2003          170           29.806        25            14.48         0 \r\n 2003          171           30.643        26.27         9.2           0 \r\n 2003          172           27.9          28.19         11.15         0 \r\n 2003          173           22.126        30.21         15.76         0 \r\n 2003          174           18.934        31.1          20.03         0 \r\n 2003          175           20.291        33.51         19.12         8.382 \r\n 2003          176           1.454         25.39         14.53         45.974 \r\n 2003          177           26.7          21.45         11.65         0.254 \r\n 2003          178           27.992        27.78         11.22         2.286 \r\n 2003          179           26.111        25.89         15.86         1.016 \r\n 2003          180           26.373        26.44         14.24         0 \r\n 2003          181           27.968        28.9          13.43         0 \r\n 2003          182           25.43         29.5          15.27         0 \r\n 2003          183           25.968        31.33         17.34         0 \r\n 2003          184           25.83         34.21         20.49         0 \r\n 2003          185           19.003        30.57         19.44         13.208 \r\n 2003          186           28.08         29.18         17.19         12.954 \r\n 2003          187           23.806        29.04         18.61         2.032 \r\n 2003          188           23.862        28.9          17.5          5.842 \r\n 2003          189           12.208        22.05         16.44         11.684 \r\n 2003          190           9.522         23.11         15.85         14.478 \r\n 2003          191           11.896        21.39         15.3          0.254 \r\n 2003          192           24.534        25.81         12.85         1.016 \r\n 2003          193           27.667        26.22         13.49         0 \r\n 2003          194           27.067        27.7          13.81         0 \r\n 2003          195           21.73         27.9          16.53         1.27 \r\n 2003          196           28.578        26.06         15.75         0 \r\n 2003          197           19.264        27.44         12.76         0 \r\n 2003          198           22.81         31.14         17.04         0 \r\n 2003          199           27.751        25.62         14.19         0 \r\n 2003          200           27.569        27.67         11.69         0 \r\n 2003          201           8.933         25.55         18.11         7.366 \r\n 2003          202           23.167        24.06         14.49         0 \r\n 2003          203           24.288        22.17         11.85         0 \r\n 2003          204           28.011        24.69         10.14         0 \r\n 2003          205           24.541        25.94         10.64         0 \r\n 2003          206           25.308        30.17         16.28         0 \r\n 2003          207           23.147        31.84         21.94         0 \r\n 2003          208           23.59         28.68         20.17         0 \r\n 2003          209           24.309        28.26         17.58         0 \r\n 2003          210           26.47         29.31         14.38         0 \r\n 2003          211           22.111        28.81         17.37         0 \r\n 2003          212           20.57         30.66         16.36         1.27 \r\n 2003          213           25.568        26.53         15.19         1.016 \r\n 2003          214           21.771        26.19         14.14         4.064 \r\n 2003          215           24.134        25.87         14.73         2.794 \r\n 2003          216           20.26         26.54         13.25         0 \r\n 2003          217           7.632         21.65         13.43         0.254 \r\n 2003          218           22.612        28.01         15.23         0 \r\n 2003          219           24.728        28.16         15.43         0 \r\n 2003          220           20.696        26.59         15.19         0 \r\n 2003          221           25.49         28.28         13.22         0 \r\n 2003          222           15.718        26.72         15.16         0.762 \r\n 2003          223           22.806        28.15         14.3          0 \r\n 2003          224           18.969        26.38         12.32         0 \r\n 2003          225           21.908        28.12         14.85         0 \r\n 2003          226           17.602        29.47         16.22         0 \r\n 2003          227           23.259        32.22         18.02         0 \r\n 2003          228           22.904        33.42         17.7          0 \r\n 2003          229           22.472        31.85         18.6          0 \r\n 2003          230           22.017        33.37         18.7          0 \r\n 2003          231           19.482        33.05         21.27         0.254 \r\n 2003          232           21.084        34.56         20.82         0 \r\n 2003          233           22.629        28.68         15.72         0 \r\n 2003          234           22.52         27.52         12.27         0 \r\n 2003          235           21.631        29.87         13.89         0 \r\n 2003          236           21.069        34.38         16.04         0 \r\n 2003          237           20.484        36.4          20.19         2.032 \r\n 2003          238           20.685        33.54         17.23         0 \r\n 2003          239           22.057        32.33         14.71         0 \r\n 2003          240           15.675        32.96         17.9          0 \r\n 2003          241           20.445        27.85         12.68         0 \r\n 2003          242           17.576        23.53         13.38         0 \r\n 2003          243           10.203        21.5          12.21         0 \r\n 2003          244           21.118        26.35         8.62          0 \r\n 2003          245           21.53         28.84         9.52          0 \r\n 2003          246           21.523        22.78         9.87          0 \r\n 2003          247           22.065        24.78         7.31          0 \r\n 2003          248           21.521        29.09         6.753         0 \r\n 2003          249           19.687        32.45         13.44         0 \r\n 2003          250           19.117        33.19         12.66         0 \r\n 2003          251           19.776        30.86         14.27         0 \r\n 2003          252           19.109        30.07         13.22         0 \r\n 2003          253           15.826        29.15         15.53         0 \r\n 2003          254           13.842        30.37         19.73         1.016 \r\n 2003          255           11.154        23.96         14.53         16.51 \r\n 2003          256           3.438         17.44         13.38         3.81 \r\n 2003          257           15.523        21.34         9.72          0.254 \r\n 2003          258           20.087        24.67         5.844         0 \r\n 2003          259           18.883        29.06         11.32         0 \r\n 2003          260           15.733        28.12         16.61         0 \r\n 2003          261           8.442         26.66         8.11          15.24 \r\n 2003          262           18.623        17.7          4.68          0 \r\n 2003          263           18.404        22.75         4.185         0 \r\n 2003          264           2.892         13.83         7.96          6.858 \r\n 2003          265           14.279        19            6.394         0 \r\n 2003          266           13.484        22.24         2.685         0 \r\n 2003          267           16.299        18.18         6.899         0 \r\n 2003          268           15.555        15.58         2.197         0 \r\n 2003          269           5.648         17.3          6.143         3.302 \r\n 2003          270           7.897         13.9          3.981         0 \r\n 2003          271           9.404         11.88         0.376         0 \r\n 2003          272           13.271        16.06        -0.71          0 \r\n 2003          273           16.35         13.37        -1.541         0 \r\n 2003          274           17.715        9.55         -2.717         0 \r\n 2003          275           16.627        13.25        -6.235         0 \r\n 2003          276           12.87         18.31         4.69          0 \r\n 2003          277           12.906        21.32         3.11          0 \r\n 2003          278           15.96         22.19         4.718         0 \r\n 2003          279           15.425        23.4          5.95          0 \r\n 2003          280           15.639        27.36         8.65          0 \r\n 2003          281           15.12         27.39         11.36         0 \r\n 2003          282           11.817        26.34         13.67         0 \r\n 2003          283           11.325        24.75         12.08         0 \r\n 2003          284           4.168         21.99         6.375         8.636 \r\n 2003          285           15.343        20.47         4.036         0 \r\n 2003          286           8.286         19.28         4.266         6.096 \r\n 2003          287           14.098        16.55         2.785         0 \r\n 2003          288           12.345        16.24         0.615         0 \r\n 2003          289           9.776         10.2         -2.927         0 \r\n 2003          290           12.262        14.96        -2.602         0 \r\n 2003          291           13.543        26.18         3.063         0 \r\n 2003          292           13.791        27.4          6.393         0 \r\n 2003          293           11.802        27.61         10.32         0 \r\n 2003          294           7.146         18.14         6.094         0 \r\n 2003          295           11.786        19.87         1.74          0 \r\n 2003          296           12.969        15.53         3.37          0 \r\n 2003          297           2.523         11.49         3.677         0 \r\n 2003          298           10.55         10.74        -0.071         0.254 \r\n 2003          299           7.243         3.818        -1.836         0 \r\n 2003          300           9.309         8.44         -6.303         0 \r\n 2003          301           4.209         6.83          2.747         0.254 \r\n 2003          302           2.935         3.464        -2.879         0.508 \r\n 2003          303           7.663         16.65         2.205         0 \r\n 2003          304           3.913         6.778         0.368         0 \r\n 2003          305           3.595         3.349        -3.119         1.016 \r\n 2003          306           3.368         6.309         0.949         0.762 \r\n 2003          307           0.995         3.99          0.968         37.186 \r\n 2003          308           2.177         5.556        -0.556         0 \r\n 2003          309           3.533        -0.556        -3.333         0 \r\n 2003          310           11.216        3.512        -5.589         0 \r\n 2003          311           10.911       -1.369        -11.04         0 \r\n 2003          312           10.731       -0.142        -12.82         0 \r\n 2003          313           10.046        6.558        -10.28         0 \r\n 2003          314           1.558         5.768        -2.314         0 \r\n 2003          315           7.017         14.45         0.992         0 \r\n 2003          316           4.021         6.793        -2.342         0 \r\n 2003          317           10.173        4.594        -4.968         0 \r\n 2003          318           3.704         8.4          -3.455         0 \r\n 2003          319           1.634         7.04          4.336         0 \r\n 2003          320           1.589         0             0             6.706 \r\n 2003          321           2.103         11.72         4.317         10.109 \r\n 2003          322           9.002         11.98         1.454         0 \r\n 2003          323           8.811         13.3         -0.29          0 \r\n 2003          324           8.052         17.75         1.955         0 \r\n 2003          325           5.932         4.239        -0.996         0 \r\n 2003          326           0.542         1.565        -0.786         6.325 \r\n 2003          327           1.746         1.616        -9.07          0 \r\n 2003          328           8.145        -4.38         -11.72         0 \r\n 2003          329           6.789         5.239        -3.993         0 \r\n 2003          330           3.892         3.837        -7.95          0 \r\n 2003          331           8.204         3.895        -5.476         0 \r\n 2003          332           2.329        -2.975        -11.33         0 \r\n 2003          333           6.474         6.445        -11.29         0 \r\n 2003          334           7.451         13.75        -1.702         0 \r\n 2003          335           7.826         4.297        -7.4           0 \r\n 2003          336           1.924        -0.004        -8.44          0 \r\n 2003          337           2.889         3.349        -3.33          0 \r\n 2003          338           1.718         1.146        -5.33          6.274 \r\n 2003          339           6.459         1.792        -5.271         0 \r\n 2003          340           3.451        -0.29         -2.716         0 \r\n 2003          341           5.469         2.862        -3.484         0 \r\n 2003          342           6.701         7.67          0.844         0 \r\n 2003          343           0.582         2.126        -3.368         3.81 \r\n 2003          344           5.725        -3.378        -12.33         0 \r\n 2003          345           7.551        -12.23        -17.77         0 \r\n 2003          346           7.634        -6.888        -18.76         0 \r\n 2003          347           3.448        -4.09         -15.45         0 \r\n 2003          348           2.074        -3.965        -4.747         0 \r\n 2003          349           2.635         0.945        -4.496         0 \r\n 2003          350           4.515         0.232        -11.53         0 \r\n 2003          351           5.73         -3.243        -15.25         0 \r\n 2003          352           5.304        -2.017        -7.17          0 \r\n 2003          353           7.589        -3.186        -14.63         0 \r\n 2003          354           7.329         0.096        -12.44         0 \r\n 2003          355           6.22          4.202        -2.831         0 \r\n 2003          356           4.542         3.426        -4.197         0 \r\n 2003          357           6.839        -0.881        -10.19         0 \r\n 2003          358           7.15          0.439        -12.53         0 \r\n 2003          359           6.727         4.96         -10.62         0 \r\n 2003          360           6.003         6.406        -3.445         0 \r\n 2003          361           2.843         10.77         3.292         0 \r\n 2003          362           7.364         6.958        -3.157         0 \r\n 2003          363           2.084        -1.301        -4.932         0 \r\n 2003          364           6.766         5.008        -9.18          0 \r\n 2003          365           6.995         1.973        -9.08          0 \r\n 2004          1             1.422         2.967        -6.211         0 \r\n 2004          2             1.672         5.933        -3.609         0 \r\n 2004          3             3.229        -1.349        -9.65          0 \r\n 2004          4             2.511        -7.49         -12.42         0 \r\n 2004          5             6.925        -12.32        -21.04         0 \r\n 2004          6             6.912        -9.27         -20.64         0 \r\n 2004          7             5.632        -3.811        -15.63         0 \r\n 2004          8             2.92         -4.602        -12.36         0 \r\n 2004          9             5.287        -3.839        -12.09         0 \r\n 2004          10            2.593        -3.147        -6.717         0 \r\n 2004          11            7.132         8.3          -6.273         0 \r\n 2004          12            7.812         5.094        -7.3           0 \r\n 2004          13            8.095        -0.052        -8.76          0 \r\n 2004          14            3.978         2.785        -11.52         0 \r\n 2004          15            3.871        -1.417        -13.72         0 \r\n 2004          16            5             1.936        -3.445         3.023 \r\n 2004          17            2.041        -0.169        -7.74          0 \r\n 2004          18            7.464        -7.75         -18.14         0 \r\n 2004          19            5.872        -9.45         -19.7          0 \r\n 2004          20            5.46         -5.086        -11.6          0 \r\n 2004          21            5.126         2.212        -17.55         0 \r\n 2004          22            9.4          -11.45        -22.08         0 \r\n 2004          23            3.937         0.43         -11.5          0 \r\n 2004          24            9.451        -6.326        -15.06         0 \r\n 2004          25            5.821        -4.167        -11.13         4.216 \r\n 2004          26            4.472        -6.956        -9.19          4.826 \r\n 2004          27            10.069       -8.14         -21.66         0 \r\n 2004          28            7.851        -18.61        -23.68         0 \r\n 2004          29            8.881        -18.64        -27.35         0 \r\n 2004          30            10.411       -20.1         -28.24         0 \r\n 2004          31            5.379        -11.44        -28.1          0 \r\n 2004          32            3.676        -5.484        -11.48         8.611 \r\n 2004          33            5.188        -1.859        -12.27         6.223 \r\n 2004          34            11.086       -12.28        -23.53         0 \r\n 2004          35            7.141        -8.19         -22.91         0 \r\n 2004          36            4.985        -3.858        -9.55          9.449 \r\n 2004          37            7.938        -4.302        -11.08         0 \r\n 2004          38            11.051       -8.55         -20.14         0 \r\n 2004          39            9.769        -2.802        -21.32         0 \r\n 2004          40            8.477        -3.724        -9.24          0 \r\n 2004          41            12.734       -4.418        -14.88         0 \r\n 2004          42            11.183       -3.654        -10.42         0 \r\n 2004          43            12.053       -7.65         -18.95         0 \r\n 2004          44            12.953       -3.868        -19.92         0 \r\n 2004          45            13.646       -6.512        -19.53         0 \r\n 2004          46            13.966       -6.799        -22.2          0 \r\n 2004          47            12.411       -2.48         -15.26         0 \r\n 2004          48            13.219       -2.795        -14.02         0 \r\n 2004          49            13.317        4.398        -10.54         0 \r\n 2004          50            7.393         3.187        -5.174         4.039 \r\n 2004          51            6.887         1.841        -1.009         2.591 \r\n 2004          52            13.753        0.964        -4.774         0 \r\n 2004          53            5.006         3.33         -4.321         0 \r\n 2004          54            5.544         1.917        -2.142         0 \r\n 2004          55            4.122         0.564        -0.618         0 \r\n 2004          56            9.914         3.493        -3.569         0 \r\n 2004          57            14.412        5.455        -5.339         0 \r\n 2004          58            14.058        5.418        -2.936         0 \r\n 2004          59            11.883        10.48        -0.366         0 \r\n 2004          60            8.375         10.81         1.516         0 \r\n 2004          61            4.517         11.41         1.488         5.334 \r\n 2004          62            3.071         4.279        -0.456         0 \r\n 2004          63            2.668         1.593        -0.676         0 \r\n 2004          64            2.78          2.786         0.811         21.895 \r\n 2004          65            5.018         2.757        -0.133         0 \r\n 2004          66            12.209        9.58         -0.971         5.004 \r\n 2004          67            5.057         2.375        -2.084         0 \r\n 2004          68            10.448        5.735        -5.445         0 \r\n 2004          69            13.452        7.12         -1.673         0 \r\n 2004          70            9.589         10.25        -1.75          0 \r\n 2004          71            11.702        0.406        -12.03         0 \r\n 2004          72            18.643        2.442        -12.92         0 \r\n 2004          73            4.603         9.2          -3.608         6.502 \r\n 2004          74            14.026        5.21         -2.19          0 \r\n 2004          75            4.932        -1.62         -4.986         0 \r\n 2004          76            8.837         0.783        -3.868         0 \r\n 2004          77            15.783        6.159        -1.639         2.769 \r\n 2004          78            9.596         6.454        -2.85          0 \r\n 2004          79            9.914         13.58        -3.753         0 \r\n 2004          80            16.055        9.55         -4.436         0 \r\n 2004          81            19.146        0.783        -7.07          0 \r\n 2004          82            19.681        6.507        -8.46          0 \r\n 2004          83            18.13         16.62        -2.898         8.153 \r\n 2004          84            13.078        22.99         6.907         2.997 \r\n 2004          85            1.69          17.22         12.51         45.466 \r\n 2004          86            13.548        20.57         12.05         0 \r\n 2004          87            2.606         17.11         14.28         14.58 \r\n 2004          88            2.952         16.36         4.778         0 \r\n 2004          89            18.835        14.92        -0.444         0 \r\n 2004          90            7.555         3.512        -1.743         0 \r\n 2004          91            22.476        9.08         -3.358         0 \r\n 2004          92            22.587        12.28        -2.448         0 \r\n 2004          93            23.108        16.25        -2.238         0 \r\n 2004          94            20.971        12.41         1.554         0 \r\n 2004          95            22.697        12.27        -3.857         0 \r\n 2004          96            21.987        20.06        -0.176         0 \r\n 2004          97            22.644        20.35         4.758         0.254 \r\n 2004          98            19.405        20.91         1.697         0 \r\n 2004          99            23.637        15.81         1.431         0 \r\n 2004          100           15.723        13.06        -2.18          0 \r\n 2004          101           24.101        7.44         -3.349         0 \r\n 2004          102           23.56         9.12         -7.28          0 \r\n 2004          103           19.418        9.37         -4.515         0 \r\n 2004          104           24.119        15.14        -4.658         0 \r\n 2004          105           22.705        22.26         0.157         0 \r\n 2004          106           14.606        22.97         6.107         0 \r\n 2004          107           20.075        30.82         5.991         2.286 \r\n 2004          108           23.692        24.97         8.62          0 \r\n 2004          109           11.219        28.07         12.87         13.208 \r\n 2004          110           12.521        14.77         4.998         0.254 \r\n 2004          111           2.952         11.7          3.943         13.462 \r\n 2004          112           13.412        13.77         5.643         0 \r\n 2004          113           16.07         16.27         0             0 \r\n 2004          114           21.869        18.15         4.71          0 \r\n 2004          115           8.778         13.07         3.645         9.906 \r\n 2004          116           11.457        14.24         5.692         4.318 \r\n 2004          117           25.581        12.98         2.004         0 \r\n 2004          118           19.389        17.67        -2.084         0 \r\n 2004          119           25.049        30.75         8.35          0 \r\n 2004          120           21.127        20.51         9.95          0 \r\n 2004          121           5.029         11.52         6.542         0.762 \r\n 2004          122           23.959        14.9          2.05          0 \r\n 2004          123           19.067        12.23         2.16          0 \r\n 2004          124           25.997        16.83        -2.113         0 \r\n 2004          125           26.698        20.99         6.407         0 \r\n 2004          126           21.957        26.9          2.322         0 \r\n 2004          127           13.674        23.47         13.53         0 \r\n 2004          128           13.37         17.53         8.9           0 \r\n 2004          129           11.689        22.19         10.1          21.59 \r\n 2004          130           24.141        28.35         13.54         0 \r\n 2004          131           13.506        24.25         13.3          0.508 \r\n 2004          132           16            27.52         11.38         0 \r\n 2004          133           9.321         24.53         14.26         9.144 \r\n 2004          134           8.879         14.25         6.278         18.034 \r\n 2004          135           18.47         12.75         4.211         0.508 \r\n 2004          136           25.381        17.22         0.844         0 \r\n 2004          137           25.179        23.97         8.3           0 \r\n 2004          138           10.552        23.91         13.6          13.716 \r\n 2004          139           23.226        20.44         9.82          0 \r\n 2004          140           23.159        24.84         9.41          0 \r\n 2004          141           20.702        26.64         16.62         0 \r\n 2004          142           5.07          17.73         13.78         74.676 \r\n 2004          143           19.899        25.37         14.38         43.434 \r\n 2004          144           9.841         20.34         9.09          19.812 \r\n 2004          145           17.814        17.79         7.79          13.462 \r\n 2004          146           19.098        17.11         7.34          0 \r\n 2004          147           27.939        20.33         6.628         0 \r\n 2004          148           27.004        23.71         12.93         0 \r\n 2004          149           27.972        23.28         10.09         2.794 \r\n 2004          150           17.22         22.62         11.93         45.974 \r\n 2004          151           14.69         24.13         15.31         4.572 \r\n 2004          152           23.114        22.72         12.8          1.016 \r\n 2004          153           11.395        16.21         12.67         2.286 \r\n 2004          154           17.659        21.808        12.778        0 \r\n 2004          155           29.307        23.548        10.638        0 \r\n 2004          156           29.056        25.499        12.038        0 \r\n 2004          157           14.518        25.398        14.135        2.54 \r\n 2004          158           27.23         28.792        15.207        0.254 \r\n 2004          159           27.804        32.136        19.095        0 \r\n 2004          160           16.266        31.93         20.955        0 \r\n 2004          161           17.399        30.27         18.889        3.556 \r\n 2004          162           4.986         21            16.15         4.064 \r\n 2004          163           13.113        29.51         15.92         9.398 \r\n 2004          164           24.468        30.02         15.53         0 \r\n 2004          165           26.083        27.91         16.64         0.508 \r\n 2004          166           27.379        25.48         15.65         1.27 \r\n 2004          167           23.422        27.48         13.93         0 \r\n 2004          168           13.986        28.41         16.97         23.622 \r\n 2004          169           24.631        24.52         14.56         0 \r\n 2004          170           15.886        19.35         12.05         0 \r\n 2004          171           29.667        19.89         7.7           0 \r\n 2004          172           13.901        20.24         11.65         0 \r\n 2004          173           15.676        23.82         12.21         12.192 \r\n 2004          174           26.27         24.32         9.54          0 \r\n 2004          175           24.444        26.4          13.76         0.508 \r\n 2004          176           15.257        17.31         8             6.35 \r\n 2004          177           25.377        21.56         5.623         0 \r\n 2004          178           25.06         23.41         10.92         0 \r\n 2004          179           14.623        21.67         11.14         0 \r\n 2004          180           29.352        24.02         9.42          0 \r\n 2004          181           26.311        27.38         11.71         0 \r\n 2004          182           27.879        27.32         12.48         0 \r\n 2004          183           23.6          30.18         16.45         0 \r\n 2004          184           22.544        29.08         17.59         0 \r\n 2004          185           4.56          22.54         18.29         37.846 \r\n 2004          186           21.255        27.77         17.8          0 \r\n 2004          187           15.905        26.65         16.03         55.88 \r\n 2004          188           14.236        22.58         13.93         5.842 \r\n 2004          189           8.988         18.5          11.25         0 \r\n 2004          190           28.962        23.99         8.51          0 \r\n 2004          191           8.249         22.56         15.33         8.382 \r\n 2004          192           16.744        27.82         14.95         0.254 \r\n 2004          193           12.866        26.3          18.74         4.318 \r\n 2004          194           28.156        30.11         17.82         0.254 \r\n 2004          195           27.811        28.08         17.65         0 \r\n 2004          196           27.945        26.5          15.14         0 \r\n 2004          197           24.376        27.54         16.12         0 \r\n 2004          198           25.187        27.11         17.22         0.508 \r\n 2004          199           24.721        25.2          14.68         0 \r\n 2004          200           22.884        25.78         14.31         0 \r\n 2004          201           24.718        29.18         15.58         0 \r\n 2004          202           19.727        30.59         19.31         0 \r\n 2004          203           17.393        30.22         20.48         29.21 \r\n 2004          204           20.788        26.95         17.5          0 \r\n 2004          205           20.976        22.95         13.87         0 \r\n 2004          206           18.98         23.3          12.45         0 \r\n 2004          207           25.697        24.59         9.49          0 \r\n 2004          208           26.325        26.04         11.04         0 \r\n 2004          209           27.299        25.59         10.46         0 \r\n 2004          210           24.535        26.38         12.58         0 \r\n 2004          211           25.306        27.7          15.84         0.762 \r\n 2004          212           16.613        25.16         13.15         1.524 \r\n 2004          213           25.533        27.31         11.53         0.254 \r\n 2004          214           14.946        28.05         18.64         4.572 \r\n 2004          215           18.938        28.98         17.95         21.59 \r\n 2004          216           10.992        28.36         19.33         3.302 \r\n 2004          217           16.744        24.58         15.13         0 \r\n 2004          218           27.403        22.46         12.11         0 \r\n 2004          219           26.71         24.45         9.83          0 \r\n 2004          220           18.277        24.18         12.55         0.254 \r\n 2004          221           19.312        27.42         15.11         0 \r\n 2004          222           18.8          23.13         15.32         0 \r\n 2004          223           10.019        15.86         9.91          0 \r\n 2004          224           16.227        16.14         7.07          0 \r\n 2004          225           20.469        20            10.17         0 \r\n 2004          226           18.726        21.53         8.78          0 \r\n 2004          227           23.928        22.68         6.114         0 \r\n 2004          228           24.344        23.83         7.75          0 \r\n 2004          229           10.508        22.68         13.84         12.192 \r\n 2004          230           19.312        25.12         14.78         0.254 \r\n 2004          231           12.363        24.11         10.32         0 \r\n 2004          232           24.049        19.88         5.777         0 \r\n 2004          233           22.172        22.15         7.33          0 \r\n 2004          234           25.03         21.39         3.932         0 \r\n 2004          235           13.417        26.89         14.58         0.254 \r\n 2004          236           17.17         28.96         18.27         2.032 \r\n 2004          237           12.437        25.87         18.01         0.254 \r\n 2004          238           12.052        25.39         18.01         0 \r\n 2004          239           19.03         29.83         18.68         20.828 \r\n 2004          240           21.441        26.78         15.23         0.254 \r\n 2004          241           11.991        22.1          12.58         0 \r\n 2004          242           17.921        23.32         10.45         0 \r\n 2004          243           23.249        24.84         12.99         0 \r\n 2004          244           15.165        26.58         10.57         0 \r\n 2004          245           21.951        29.66         15.23         0 \r\n 2004          246           21.76         28.85         16.77         0 \r\n 2004          247           21.588        28.16         14.3          0 \r\n 2004          248           19.651        29.21         14.55         0 \r\n 2004          249           13.623        28.9          19.53         32.766 \r\n 2004          250           20.783        23.63         11.3          0.254 \r\n 2004          251           22.167        20.83         8.35          0 \r\n 2004          252           19.864        21.27         8             0 \r\n 2004          253           20.714        24.29         8.88          0 \r\n 2004          254           19.627        28.34         12.48         0 \r\n 2004          255           18.884        28.59         14.89         0 \r\n 2004          256           20.099        28.28         13.7          0 \r\n 2004          257           18.637        28.96         13.94         0 \r\n 2004          258           7.127         29.07         17.6          19.304 \r\n 2004          259           12.772        24.72         13.02         0.508 \r\n 2004          260           20.472        22.77         8.87          0 \r\n 2004          261           10.669        21.19         9.02          0 \r\n 2004          262           14.54         25.54         13.68         0 \r\n 2004          263           17.894        29.25         15.75         0 \r\n 2004          264           18.63         26.22         14.31         0 \r\n 2004          265           17.192        28.54         13.47         0 \r\n 2004          266           18.901        28.04         12.38         0 \r\n 2004          267           10.916        26.87         13.67         1.778 \r\n 2004          268           18.666        22.07         9.13          0 \r\n 2004          269           18.583        22.54         6.511         0 \r\n 2004          270           18.55         25.51         6.163         0 \r\n 2004          271           13.083        26.16         8.82          0 \r\n 2004          272           18.607        19.05         4.844         0 \r\n 2004          273           18.301        21.14         2.093         0 \r\n 2004          274           11.146        22.03         3.464         0 \r\n 2004          275           2.061         17            0.71          15.24 \r\n 2004          276           18.071        14.18        -1.369         0 \r\n 2004          277           16.038        23.31         3.483         0 \r\n 2004          278           17.565        10.6         -0.062         0 \r\n 2004          279           16.472        18.46        -2.64          0 \r\n 2004          280           14.983        25.4          5.373         0 \r\n 2004          281           4.492         17.29         10.59         4.318 \r\n 2004          282           12.79         22.95         8.21          0 \r\n 2004          283           16.285        22.03         3.492         0 \r\n 2004          284           15.646        21.24         3.496         0 \r\n 2004          285           13.617        18.16         4.335         0 \r\n 2004          286           9.689         16.48         3.827         0 \r\n 2004          287           4.57          13.32         5.305         0 \r\n 2004          288           2.102         7.15          1.244         0.254 \r\n 2004          289           3.913         9.11         -2.056         0.762 \r\n 2004          290           6.624         5.768        -3.331         0 \r\n 2004          291           7.355         8.48         -5.58          0 \r\n 2004          292           5.349         12.39         6.261         0 \r\n 2004          293           2.493         9.66          6.067         0 \r\n 2004          294           2.188         10.24         7.97          0 \r\n 2004          295           2.835         13.04         8.12          0 \r\n 2004          296           0.901         17.33         11.53         0.508 \r\n 2004          297           4.388         17.74         5.903         0 \r\n 2004          298           13.117        20.5          0.567         0 \r\n 2004          299           12.84         16.15         5.739         0 \r\n 2004          300           1.667         10.31         6.967         3.556 \r\n 2004          301           2.753         11.31         8.73          0.254 \r\n 2004          302           1.473         18.41         10.67         2.032 \r\n 2004          303           7.399         26.76         12.55         18.034 \r\n 2004          304           3.847         12.74         4.229         2.794 \r\n 2004          305           7.587         10.19         4.383         0 \r\n 2004          306           1.325         7.52          4.431         10.668 \r\n 2004          307           3.121         7.89          0.281         0 \r\n 2004          308           8.61          10.28        -3.446         0 \r\n 2004          309           10.537        10.85        -0.863         0 \r\n 2004          310           10.35         15.31        -4.197         0 \r\n 2004          311           10.854        22.18         2.88          0 \r\n 2004          312           10.15         10.13        -2.219         0 \r\n 2004          313           7.726         9.22         -2.717         0 \r\n 2004          314           8.786         16.75        -1.006         0 \r\n 2004          315           5.192         15.95         2.956         0.254 \r\n 2004          316           10.303        5.883        -5.765         0 \r\n 2004          317           8.564         5.701        -8.9           0 \r\n 2004          318           10.157        8.47         -7.86          0 \r\n 2004          319           6.52          8.01         -3.667         0 \r\n 2004          320           4.207         11.28         4.94          0 \r\n 2004          321           2.223         14.44         7.2           0 \r\n 2004          322           6.371         20.75         9.54          0 \r\n 2004          323           2.507         13.93         7.46          3.048 \r\n 2004          324           1.129         11.25         6.996         13.97 \r\n 2004          325           1.874         6.967        -1.244         0 \r\n 2004          326           5.593         4.46         -2.678         0 \r\n 2004          327           3.21          6.164         0.47          0 \r\n 2004          328           7.53          3.473        -2.41          0 \r\n 2004          329           6.902         2.021        -7.78          0 \r\n 2004          330           6.465         4.23         -9.19          0 \r\n 2004          331           1.732         3.827        -2.104         11.913 \r\n 2004          332           1.826         3.683        -2.477         3.378 \r\n 2004          333           5.06          0.991        -6.776         0 \r\n 2004          334           2.967        -1.282        -8.13          0 \r\n 2004          335           7.163         2.097        -10.89         0 \r\n 2004          336           7.787         3.53         -7.25          0 \r\n 2004          337           6.233         6.348        -6.294         0 \r\n 2004          338           7.646         4.969        -8.16          0 \r\n 2004          339           5.676         8.38         -2.334         0 \r\n 2004          340           4.385         4.719        -4.158         8.026 \r\n 2004          341           1.147         5.046         0.209         0 \r\n 2004          342           1.741         3.463         0.933         0 \r\n 2004          343           4.479         5.2          -3.425         0 \r\n 2004          344           1.712         4.949         2.011         2.667 \r\n 2004          345           1.442         3.061        -0.133         0 \r\n 2004          346           2.58          1.124        -1.101         0 \r\n 2004          347           2.012         4.921        -4.94          0 \r\n 2004          348           5.965        -4.881        -11.44         0 \r\n 2004          349           7.672        -2.232        -15.36         0 \r\n 2004          350           6.055         5.72         -9.5           0 \r\n 2004          351           3.979         1.62         -8.02          0 \r\n 2004          352           7.089        -0.772        -13.25         0 \r\n 2004          353           7.297         1.536        -14.53         0 \r\n 2004          354           6.747        -11.25        -20.62         0 \r\n 2004          355           2.998        -1.414        -11.29         0 \r\n 2004          356           5.81         -0.433        -19.11         0 \r\n 2004          357           7.535        -14.16        -22.03         0 \r\n 2004          358           7.683        -16.13        -23.7          0 \r\n 2004          359           6.787        -9.5          -26.4          0 \r\n 2004          360           3.539        -2.812        -9.85          0 \r\n 2004          361           7.457        -6.051        -15.28         0 \r\n 2004          362           4.771        -2.803        -9.95          0 \r\n 2004          363           3.105         1.831        -6.667         0 \r\n 2004          364           1.72         -2.907        -5.891         0 \r\n 2004          365           0.738         11.63        -2.898         0 \r\n 2004          366           7.466         4.144        -7.28          0 \r\n 2005          1             0.736         0.124        -7.75          6.045 \r\n 2005          2             5.94         -0.076        -7.07          0 \r\n 2005          3             2.028        -5.94         -8.66          0 \r\n 2005          4             1.624        -5.54         -9.32          5.156 \r\n 2005          5             2.83         -9.31         -10.97         13.233 \r\n 2005          6             7.688        -10.96        -20.59         0 \r\n 2005          7             5.844        -7.89         -19.91         0 \r\n 2005          8             6.502        -6.647        -14.36         0 \r\n 2005          9             3.634        -0.657        -11.88         0 \r\n 2005          10            4.277        -7.06         -14.28         0 \r\n 2005          11            3.829        -1.086        -7.57          0 \r\n 2005          12            2.65         -0.143        -3.896         0 \r\n 2005          13            8.472        -3.77         -22.89         0 \r\n 2005          14            7.728        -19.91        -26.35         0 \r\n 2005          15            9.109        -16.92        -28.56         0 \r\n 2005          16            9.135        -14.1         -23.76         0 \r\n 2005          17            8.978        -14.22        -26.87         0 \r\n 2005          18            5.7           2.202        -18.41         0 \r\n 2005          19            7.048         2.48         -7.01          0 \r\n 2005          20            3.384        -4.726        -6.637         0 \r\n 2005          21            3.253        -5.269        -6.904         10.211 \r\n 2005          22            9.632        -6.048        -17.42         0 \r\n 2005          23            6.938        -5.911        -19.01         0 \r\n 2005          24            9.749         2.193        -10.68         0 \r\n 2005          25            9.509         4.69         -9.57          0 \r\n 2005          26            3.736         1.631        -9.08          0 \r\n 2005          27            10.116       -5.309        -14.69         0 \r\n 2005          28            7.904        -4.969        -13.06         0 \r\n 2005          29            4.658        -1.563        -8.8           0 \r\n 2005          30            5.369         0.011        -3.156         0 \r\n 2005          31            5.598         2.232        -2.362         0 \r\n 2005          32            4.57          1.726        -1.694         0 \r\n 2005          33            9.88          3.614        -5.657         0 \r\n 2005          34            11.034        5.946        -6.588         0 \r\n 2005          35            11.308        8            -3.462         0 \r\n 2005          36            10.541        8.6          -1.225         0 \r\n 2005          37            1.386         5.518        -3.81          6.807 \r\n 2005          38            9.865        -3.772        -9.45          0 \r\n 2005          39            6.442        -4.089        -8.27          0 \r\n 2005          40            9.78         -6.07         -12.81         0 \r\n 2005          41            12.271       -4.971        -16.06         0 \r\n 2005          42            13.272        3.861        -8.08          0 \r\n 2005          43            11.271        9.02         -5.774         4.039 \r\n 2005          44            1.033         3.015         1.068         20.549 \r\n 2005          45            7.543         8.83          0.029         0 \r\n 2005          46            5.154         2.48         -3.374         0 \r\n 2005          47            11.808       -1.315        -9             0 \r\n 2005          48            13.617       -1.477        -11.15         0 \r\n 2005          49            13.561       -0.275        -14.8          0 \r\n 2005          50            4.336         1.507        -7.35          0 \r\n 2005          51            1.955         1.24         -2.261         4.089 \r\n 2005          52            10.383       -0.819        -6.755         0 \r\n 2005          53            8.032         0.763        -7.28          0 \r\n 2005          54            15.099        0.039        -6.45          0 \r\n 2005          55            12.407        3.374        -6.185         0 \r\n 2005          56            14.836        3.478        -5.354         0 \r\n 2005          57            13.993        4.105        -6.962         0 \r\n 2005          58            2.154         1.736        -4.222         0 \r\n 2005          59            9.055        -4.163        -6.785         2 \r\n 2005          60            16.678       -3.026        -11.17         0 \r\n 2005          61            16.495       -1            -8.59          0 \r\n 2005          62            16.412        4.993        -10.8          0 \r\n 2005          63            10.312        9.39         -5.608         0 \r\n 2005          64            14.921        5.802        -2.445         0 \r\n 2005          65            16.347        20.25         1.101         6.452 \r\n 2005          66            6.56          7.51         -4.617         0 \r\n 2005          67            16.899       -1.955        -10.08         0 \r\n 2005          68            18.189       -0.057        -9.6           3.378 \r\n 2005          69            5.202         3.598        -4.181         0 \r\n 2005          70            13.485        4.912        -5.024         0 \r\n 2005          71            10.311       -3.216        -9.75          0 \r\n 2005          72            17.27         1.659        -12.88         0 \r\n 2005          73            10.743       -1.554        -9.02          0 \r\n 2005          74            18.869        7.84         -10.77         0 \r\n 2005          75            19.141        5.542        -4.039         0 \r\n 2005          76            8.979         1.668        -5.257         4.089 \r\n 2005          77            4.656         2.288        -1.992         6.121 \r\n 2005          78            10.201       -0.371        -4.375         0 \r\n 2005          79            19.707        3.286        -7.37          0 \r\n 2005          80            19.125        6.943        -3.211         0 \r\n 2005          81            12.839        4.497        -2.817         0 \r\n 2005          82            18.798        8.83         -2.644         0 \r\n 2005          83            5.647         5.938        -2.789         0 \r\n 2005          84            7.325         4.563        -2.17          0 \r\n 2005          85            20.775        8.74         -2.342         0 \r\n 2005          86            20.819        15.21        -4.202         0 \r\n 2005          87            20.412        21.58        -1.237         0 \r\n 2005          88            15.836        22.65         5.826         0 \r\n 2005          89            13.595        22.52         4.124         12.116 \r\n 2005          90            22.01         13.53         1.172         0 \r\n 2005          91            18.793        10.76        -0.99          0 \r\n 2005          92            22.745        14.11        -2.063         0 \r\n 2005          93            22.012        22.2          3.645         0 \r\n 2005          94            20.955        27.13         7.6           0 \r\n 2005          95            10.752        21.96         10.4          0 \r\n 2005          96            15.251        22.44         8.8           0 \r\n 2005          97            22.207        18.61         5.429         0 \r\n 2005          98            22.889        21.23         3.205         0 \r\n 2005          99            20.331        24.34         6.425         0 \r\n 2005          100           15.753        25.51         12.18         0 \r\n 2005          101           5.69          20.44         14.68         15.748 \r\n 2005          102           4.84          14.92         5.653         13.462 \r\n 2005          103           25.175        14.81         2.298         0 \r\n 2005          104           24.766        19.81         0.803         0 \r\n 2005          105           23.796        21.81         5.094         0 \r\n 2005          106           3.352         13.47         9.78          9.398 \r\n 2005          107           19.507        25.53         7.28          0 \r\n 2005          108           21.338        26.72         11.83         0 \r\n 2005          109           10.885        22.71         13.57         11.684 \r\n 2005          110           10.721        20.18         11.09         0 \r\n 2005          111           10.072        13            8.06          0.508 \r\n 2005          112           13.955        16.61         2.498         6.604 \r\n 2005          113           26.62         7.82         -0.653         0 \r\n 2005          114           26.659        13.67        -2.219         0 \r\n 2005          115           11.946        14.08         1.907         1.016 \r\n 2005          116           15.168        10.19         1.535         0.254 \r\n 2005          117           23.176        11.39        -0.177         0 \r\n 2005          118           23.933        11.29        -2.793         0 \r\n 2005          119           15.512        11.07        -1.454         0 \r\n 2005          120           17.562        10.6         -2.429         0 \r\n 2005          121           14.725        7.31          0.401         0 \r\n 2005          122           10.908        7.92         -1.769         0 \r\n 2005          123           28.042        12.22        -6.255         0 \r\n 2005          124           27.533        19.56        -1.53          0 \r\n 2005          125           24.175        23.77         5.008         0 \r\n 2005          126           23.094        25.77         10.64         0.762 \r\n 2005          127           17.238        26.61         13.98         11.938 \r\n 2005          128           16.709        26.49         14.81         12.446 \r\n 2005          129           13.175        21.44         13.95         0 \r\n 2005          130           22.524        23.04         11.53         0 \r\n 2005          131           6.522         16.7          9.83          11.938 \r\n 2005          132           3.888         9.8           4.316         35.814 \r\n 2005          133           6.406         14.74         7.62          1.778 \r\n 2005          134           11.673        9.79          3.703         0 \r\n 2005          135           14.353        10.69         2.069         0 \r\n 2005          136           13.303        14.34         0.005         1.27 \r\n 2005          137           16.983        24.79         8.82          0 \r\n 2005          138           4.45          18.11         12.77         8.128 \r\n 2005          139           21.254        24.1          9.77          0 \r\n 2005          140           10.345        18.77         10.86         0 \r\n 2005          141           2.98          16.11         8.75          15.748 \r\n 2005          142           28.894        23.77         10.39         0.254 \r\n 2005          143           28.673        22.47         10.18         0 \r\n 2005          144           28.121        24.54         10.03         0 \r\n 2005          145           9.233         20.13         9.65          3.556 \r\n 2005          146           25.432        21.82         7.4           1.016 \r\n 2005          147           18.972        18.66         7.48          0 \r\n 2005          148           20.213        20.72         8.24          0 \r\n 2005          149           18.411        21.88         8.11          0 \r\n 2005          150           29.075        24.11         6.599         0 \r\n 2005          151           11.75         23.42         10.9          0 \r\n 2005          152           19.91         27.1          15.29         0 \r\n 2005          153           25.806        28.77         13.59         0 \r\n 2005          154           21.124        26.96         14.36         0 \r\n 2005          155           13.451        26.08         16.76         19.05 \r\n 2005          156           19.075        24.88         15.03         0 \r\n 2005          157           27.533        32.77         13.58         0 \r\n 2005          158           24.225        32.55         18.22         0 \r\n 2005          159           8.785         23.22         15.38         36.576 \r\n 2005          160           16.606        26.34         17.06         0 \r\n 2005          161           21.584        29.15         18.97         1.524 \r\n 2005          162           20.096        27.72         17.97         0.254 \r\n 2005          163           26.861        27.88         16.15         0 \r\n 2005          164           20.497        28.18         16.07         4.064 \r\n 2005          165           15.016        21.84         15.79         1.524 \r\n 2005          166           13.662        21.05         13.5          0 \r\n 2005          167           30.437        25.66         10.71         0 \r\n 2005          168           30.655        27.25         11.14         0 \r\n 2005          169           30.195        28.55         12.42         0 \r\n 2005          170           29.926        28.84         13.71         0 \r\n 2005          171           25.254        31.17         15.62         5.08 \r\n 2005          172           24.729        30.16         18.64         0 \r\n 2005          173           27.181        31.93         18.24         0 \r\n 2005          174           28.695        33.11         21.07         0 \r\n 2005          175           21.311        32.46         17.88         47.498 \r\n 2005          176           18.024        27.3          18.42         31.75 \r\n 2005          177           21.639        30.65         19.14         28.448 \r\n 2005          178           24.183        32.25         19.86         0.508 \r\n 2005          179           16.532        28.02         17.37         11.938 \r\n 2005          180           13.328        28.64         18.76         1.524 \r\n 2005          181           28.137        26.7          15.48         0 \r\n 2005          182           29.726        23.3          13.78         0 \r\n 2005          183           27.948        25.2          12.64         0 \r\n 2005          184           13.96         26.73         15.9          13.462 \r\n 2005          185           18.211        26.31         16.52         0 \r\n 2005          186           26.488        24.27         14.04         0 \r\n 2005          187           28.648        27.1          13.31         0 \r\n 2005          188           26.198        27.57         15.65         0 \r\n 2005          189           21.21         28.39         17.51         0 \r\n 2005          190           25.601        30.42         19.69         0 \r\n 2005          191           27.465        31.11         19.13         0 \r\n 2005          192           29.047        30.04         17.41         0 \r\n 2005          193           25.465        30.39         15.35         0 \r\n 2005          194           26.887        31.72         17.38         0 \r\n 2005          195           23.849        33.08         19.2          0 \r\n 2005          196           25.87         33.35         19.54         0 \r\n 2005          197           25.648        32.84         20.23         0 \r\n 2005          198           26.605        33.07         20.5          4.572 \r\n 2005          199           26.215        26.5          17.15         7.112 \r\n 2005          200           27.081        29.87         14.2          0 \r\n 2005          201           20.482        31.79         19.72         19.304 \r\n 2005          202           21.471        30.2          20.63         14.986 \r\n 2005          203           26.745        30.49         18.46         0 \r\n 2005          204           20.292        31.99         22.28         0 \r\n 2005          205           24.883        32.11         20.62         7.112 \r\n 2005          206           12.089        31.42         20.01         23.876 \r\n 2005          207           13.463        21.66         13.24         0.254 \r\n 2005          208           23.848        22.16         10.98         0 \r\n 2005          209           26.885        25.17         10.78         0 \r\n 2005          210           20.882        26.57         15.08         0 \r\n 2005          211           21.741        29.4          17.5          0 \r\n 2005          212           22.536        27.74         17.65         3.302 \r\n 2005          213           25.771        31.34         16.63         0 \r\n 2005          214           24.767        31.52         19.43         0 \r\n 2005          215           14.424        30.52         22.5          4.826 \r\n 2005          216           18.194        24.17         14.46         11.684 \r\n 2005          217           26.562        27.07         12.52         0 \r\n 2005          218           26.942        27.03         12.37         0 \r\n 2005          219           26.201        29.99         12.13         0 \r\n 2005          220           20.663        30.68         16.77         0 \r\n 2005          221           21.312        32.99         18.6          14.732 \r\n 2005          222           22.937        27.19         17.88         0.254 \r\n 2005          223           6.923         23.79         18.66         12.192 \r\n 2005          224           14.302        23.71         17.07         0.254 \r\n 2005          225           13.79         22.53         13.85         0 \r\n 2005          226           24.219        23.13         11.06         0 \r\n 2005          227           25.521        25.31         10.91         0 \r\n 2005          228           23.033        27.43         13.17         0 \r\n 2005          229           19.102        27.85         15.34         8.128 \r\n 2005          230           19.94         28.69         17.66         80.01 \r\n 2005          231           22.626        30.61         15.21         0 \r\n 2005          232           24.725        27.2          17.06         0 \r\n 2005          233           24.625        24.37         13.15         0 \r\n 2005          234           22.351        21.5          11.07         0 \r\n 2005          235           21.053        22.93         10.43         0 \r\n 2005          236           16.083        22.96         11.42         0 \r\n 2005          237           14.003        26.04         17.29         0 \r\n 2005          238           6.598         25.99         16.39         6.858 \r\n 2005          239           21.271        27.88         12.3          0.254 \r\n 2005          240           22.247        25.83         11.35         0 \r\n 2005          241           22.012        27.5          13.3          0 \r\n 2005          242           22.857        25.91         13.13         0 \r\n 2005          243           17.623        26.34         11.81         0 \r\n 2005          244           23.069        26.93         10.15         0 \r\n 2005          245           22.981        25.47         10.74         0 \r\n 2005          246           21.427        29.1          10.13         0 \r\n 2005          247           13.169        26.16         16.12         14.732 \r\n 2005          248           19.756        31.2          16.52         0 \r\n 2005          249           18.059        29.65         17.2          1.778 \r\n 2005          250           15.377        25.88         13.76         0 \r\n 2005          251           7.285         22.96         13.08         27.432 \r\n 2005          252           15.384        30.61         16.12         0 \r\n 2005          253           18.651        31.57         17.67         0 \r\n 2005          254           19.488        31.99         17.91         0 \r\n 2005          255           9.439         29.35         19.53         0 \r\n 2005          256           8.346         26.98         12.93         27.94 \r\n 2005          257           18.557        22.34         8.84          0 \r\n 2005          258           12.921        22.39         8.3           0 \r\n 2005          259           19.947        25.03         6.394         0 \r\n 2005          260           17.609        25.97         9.54          0 \r\n 2005          261           17.787        27.63         15.36         3.048 \r\n 2005          262           13.939        25.39         13.28         27.432 \r\n 2005          263           19.145        29.92         10.57         0 \r\n 2005          264           17.765        32.37         15.23         0 \r\n 2005          265           7.147         22.44         9.86          0 \r\n 2005          266           12.59         20.61         8.63          0 \r\n 2005          267           1.711         18.61         13.58         21.59 \r\n 2005          268           3.644         18.93         15            25.654 \r\n 2005          269           16.828        20.84         9.03          0.254 \r\n 2005          270           18.162        24.37         7.42          0 \r\n 2005          271           4.509         15.12         4.468         7.366 \r\n 2005          272           16.748        17.49         0.786         0 \r\n 2005          273           17.493        24.21         6.114         0 \r\n 2005          274           15.099        28.71         10.52         0 \r\n 2005          275           6.741         25.78         16.59         0 \r\n 2005          276           12.61         32.01         20.36         0 \r\n 2005          277           11.957        30.92         20.73         0 \r\n 2005          278           3.046         23.3          4.958         2.032 \r\n 2005          279           6.572         6.443         3.367         0 \r\n 2005          280           8.45          10.42        -0.006         0 \r\n 2005          281           16.002        13.79        -1.045         0 \r\n 2005          282           14.575        13.23         1.1           0 \r\n 2005          283           15.624        16.24         3.481         0 \r\n 2005          284           12.662        17.38         3.367         0 \r\n 2005          285           4.792         15.73         11.65         0 \r\n 2005          286           12.135        19.95         10.95         0 \r\n 2005          287           14.221        26.04         6.018         0 \r\n 2005          288           14.977        19.27         4.535         0 \r\n 2005          289           13.099        20.25         2.101         0 \r\n 2005          290           14.044        22            9.02          0.254 \r\n 2005          291           13.732        25.89         5.247         0 \r\n 2005          292           13.362        15.14         4.641         0 \r\n 2005          293           7.235         14.04         2.35          0 \r\n 2005          294           7.419         12.63         0.338         0 \r\n 2005          295           11.592        10.77        -0.844         0 \r\n 2005          296           3.225         8.52         -0.692         2.032 \r\n 2005          297           4.884         7.4           0.204         0 \r\n 2005          298           13.193        11.2         -1.856         0 \r\n 2005          299           5.882         10.93        -1.56          0 \r\n 2005          300           12.448        13.23        -2.487         0 \r\n 2005          301           12.373        16.29        -1.398         0 \r\n 2005          302           10.018        20.82         3.157         0 \r\n 2005          303           1.769         13.33         8.47          1.778 \r\n 2005          304           8.288         11.87         1.156         0 \r\n 2005          305           10.764        15.49        -2.334         0 \r\n 2005          306           10.242        22.45        -0.806         0 \r\n 2005          307           9.161         18.45         4.536         0 \r\n 2005          308           9.416         13            1.152         0 \r\n 2005          309           2.709         11.2          3.061         1.27 \r\n 2005          310           5.632         9.9           4.689         1.524 \r\n 2005          311           9.97          18.9          5.931         0 \r\n 2005          312           7.139         18.4          4.92          0 \r\n 2005          313           10.527        15.17        -1.961         0 \r\n 2005          314           10.115        13.37        -5.598         0 \r\n 2005          315           8.676         17.42        -0.301         0 \r\n 2005          316           4.848         17.03         7.13          6.121 \r\n 2005          317           4.993         8.95         -3.446         0 \r\n 2005          318           3.199         5.854        -4.159         0 \r\n 2005          319           0.776         3.625        -3.052         11.862 \r\n 2005          320           7.722        -2.937        -12.39         0 \r\n 2005          321           6.688        -5.445        -16.31         0 \r\n 2005          322           8.626         5.007        -5.445         0 \r\n 2005          323           3.036         4.104        -0.264         0 \r\n 2005          324           1.912         2.269        -1.321         0 \r\n 2005          325           7.442         8.67         -2.535         0 \r\n 2005          326           3.614         1.505        -4.971         0 \r\n 2005          327           5.233         9.1          -2.114         0 \r\n 2005          328           8.776        -2.123        -10.46         0 \r\n 2005          329           1.665        -4.96         -10.06         0 \r\n 2005          330           8.488         6.231        -8.38          0 \r\n 2005          331           0.993         10.21         3.645         11.633 \r\n 2005          332           1.452         11.73        -1.284         5.842 \r\n 2005          333           3.673        -0.959        -8.62          0 \r\n 2005          334           6.657        -5.906        -13.02         6.172 \r\n 2005          335           8.394        -8.01         -16.06         0 \r\n 2005          336           5.997        -10.39        -21.06         0 \r\n 2005          337           4.126        -7.68         -10.81         4.013 \r\n 2005          338           8.088        -9.36         -22.06         0 \r\n 2005          339           7.364        -15.36        -25.47         0 \r\n 2005          340           7.957        -16.51        -24.25         0 \r\n 2005          341           7.626        -14.1         -26.79         0 \r\n 2005          342           5.177        -9.88         -19.47         0 \r\n 2005          343           6.646        -8.72         -23.21         0 \r\n 2005          344           3.704         1.592        -12.59         0 \r\n 2005          345           5.817        -2.151        -10.96         0 \r\n 2005          346           4.439        -0.886        -7             0 \r\n 2005          347           5.569        -1.303        -4.322         6.401 \r\n 2005          348           3.74          0.553        -3.445         7.442 \r\n 2005          349           5.224         0.038        -8.61          0 \r\n 2005          350           5.082        -8.26         -16.25         0 \r\n 2005          351           7.501        -12.94        -20.66         0 \r\n 2005          352           7.507        -14.56        -22.73         0 \r\n 2005          353           7.551        -14.1         -26.65         0 \r\n 2005          354           7.377        -10.43        -19.11         0 \r\n 2005          355           7.622        -11.35        -24.16         0 \r\n 2005          356           6.156         2.374        -15.89         0 \r\n 2005          357           7.271         2.612        -4.322         0 \r\n 2005          358           3.779         1.411        -0.048         0 \r\n 2005          359           3.104         1.068        -0.6           0 \r\n 2005          360           3.446        -0.171        -1.675         0 \r\n 2005          361           3.385        -0.057        -0.962         0 \r\n 2005          362           2.429         0.371        -1.513         0 \r\n 2005          363           2.548         0.563        -1.151         0 \r\n 2005          364           1.712         0.658        -0.352         0 \r\n 2005          365           3.637         0.286        -2.209         0 \r\n 2006          1             2.767         1.044        -0.904         0 \r\n 2006          2             1.896         1.802         0.4           1.27 \r\n 2006          3             2.309         1.477        -0.076         2.29 \r\n 2006          4             1.693         1.106        -1.524         0.51 \r\n 2006          5             1.513        -1.399        -3.561         0 \r\n 2006          6             2.428        -1.015        -5.28          0 \r\n 2006          7             6.179         2.661        -5.016         0 \r\n 2006          8             4.293         2.498        -1.255         0 \r\n 2006          9             7.845        -0.296        -10.37         0 \r\n 2006          10            7.886         1.554        -11.71         0 \r\n 2006          11            7.462         4.266        -6.441         0 \r\n 2006          12            8.16          7.41         -1.368         0 \r\n 2006          13            7.734         0.21         -5.501         0 \r\n 2006          14            8.329         4.458        -9.26          0 \r\n 2006          15            6.66          9.45         -1.941         0 \r\n 2006          16            2.056         0.257        -5.007         0 \r\n 2006          17            5.137        -3.271        -8.99          0 \r\n 2006          18            6.846         4.249        -9.63          0 \r\n 2006          19            5.945         5.152        -3.973         0 \r\n 2006          20            1.188        -1.277        -7.09          0 \r\n 2006          21            4.391        -2.56         -11.21         0 \r\n 2006          22            2.02         -1.267        -11.4          0 \r\n 2006          23            6.018         0.991        -14.39         0 \r\n 2006          24            4.662         2.689        -5.911         0 \r\n 2006          25            9.852         2.078        -9.08          0 \r\n 2006          26            9.696         13.12        -6.48          0 \r\n 2006          27            9.08          11.89         0.545         0 \r\n 2006          28            0.724         4.45         -0.853         0 \r\n 2006          29            1.74          3.071        -0.372         4.32 \r\n 2006          30            6.359         0.467        -1.782         1.78 \r\n 2006          31            8.996         6.283        -2.524         0 \r\n 2006          32            4.096         4.853        -3.306         0 \r\n 2006          33            10.342        12.37        -1.955         0 \r\n 2006          34            4.978         2.469        -11.57         0 \r\n 2006          35            9.933        -4.879        -12.34         0 \r\n 2006          36            11.795       -2.079        -12.62         0 \r\n 2006          37            11.035        0.048        -13.08         0 \r\n 2006          38            6.19          0            -7.59          0 \r\n 2006          39            9.562        -2.584        -11.55         0 \r\n 2006          40            4.505        -3.431        -15            0 \r\n 2006          41            8.339         0.601        -12.46         2.54 \r\n 2006          42            6.187        -1.714        -13.68         0 \r\n 2006          43            11.685       -6.018        -15.43         0.25 \r\n 2006          44            10.538        3.138        -15.42         0 \r\n 2006          45            11.215        10.24        -8.57          0 \r\n 2006          46            6.187        -0.329        -8.15          0 \r\n 2006          47            5.032        -7.48         -13.12         2.79 \r\n 2006          48            14.014       -13.14        -25.05         2.54 \r\n 2006          49            15.044       -14.55        -28.82         0 \r\n 2006          50            12.857       -6.657        -25.23         0 \r\n 2006          51            14.795       -0.886        -15.95         0 \r\n 2006          52            14.871        1.43         -15.02         0 \r\n 2006          53            14.551        6.323        -7.33          0 \r\n 2006          54            15.059       -1.468        -7.94          0 \r\n 2006          55            14.13         13.07        -6.323         0 \r\n 2006          56            15.781       -1.687        -10.16         0 \r\n 2006          57            13.881        3.291        -13.66         0 \r\n 2006          58            15.149        5.175        -4.153         0 \r\n 2006          59            10.015        5.358        -6.283         0 \r\n 2006          60            7.615         8.69         -0.781         0 \r\n 2006          61            7.33          1.906        -4.116         0 \r\n 2006          62            16.541        5.233        -8.08          0 \r\n 2006          63            12.732        7.97         -6.756         0 \r\n 2006          64            3.517         1.144        -1.087         6 \r\n 2006          65            14.069        0.753        -4.385         8 \r\n 2006          66            5.582         2.059        -4.356         0 \r\n 2006          67            4.362         3.024        -2.845         3.81 \r\n 2006          68            12.581        8.87         -0.627         7.37 \r\n 2006          69            16.977        14.12        -2.912         0 \r\n 2006          70            13.937        16.89        -0.551         0 \r\n 2006          71            4.186         5.44         -1.976         0 \r\n 2006          72            8.429         2.24         -6.628         8 \r\n 2006          73            18.585        3.663        -8.34          1 \r\n 2006          74            13.706        3.961        -9.08          0 \r\n 2006          75            3.723         1.783        -2.172         1.5 \r\n 2006          76            19.857        3.535        -5.911         3 \r\n 2006          77            19.977        4.014        -6.117         0 \r\n 2006          78            16.82         6.574        -5.326         0 \r\n 2006          79            11.547        4.105        -1.753         0 \r\n 2006          80            12.772        1.621        -4.724         0 \r\n 2006          81            19.729        5.271        -7.38          0 \r\n 2006          82            11.562        4.522        -3.009         0 \r\n 2006          83            7.54          2.851        -4.028         0 \r\n 2006          84            12.762        6.052        -3.211         0 \r\n 2006          85            21.342        11.71        -5.015         0 \r\n 2006          86            2.856         4.259         0.791         0 \r\n 2006          87            13.718        11.26         1.344         3.5 \r\n 2006          88            15.804        13.29        -0.219         0 \r\n 2006          89            6.023         17.2          5.158         0 \r\n 2006          90            3.241         10.88         3.616         0 \r\n 2006          91            7.448         7.14          3.042         0 \r\n 2006          92            2.358         7.15          3.387         26.67 \r\n 2006          93            22.637        10.27         0.326         0.254 \r\n 2006          94            23.616        13.61        -1.273         0 \r\n 2006          95            18.3          19.67         1.21          0 \r\n 2006          96            3.312         12.11         9.47          0 \r\n 2006          97            8.574         9.61         -0.352         4.318 \r\n 2006          98            23.939        10.41        -4.386         0 \r\n 2006          99            20.804        16.92        -1.688         0 \r\n 2006          100           23.063        26.59         3.894         0 \r\n 2006          101           11.854        23.24         12.15         1.016 \r\n 2006          102           23.89         22.83         10.33         3.556 \r\n 2006          103           20.593        29.86         5.604         0 \r\n 2006          104           22.774        26.34         10.24         0 \r\n 2006          105           16.587        25.54         5.854         16.256 \r\n 2006          106           5.457         13.65         9.76          20.828 \r\n 2006          107           24.469        18.47         8.09          0 \r\n 2006          108           23.842        20.66         5.787         3.302 \r\n 2006          109           25.084        19.44         4.882         0.762 \r\n 2006          110           16.113        15.35         3.071         0 \r\n 2006          111           13.85         16.79         2.02          1.27 \r\n 2006          112           21.031        17.1          5.18          0.254 \r\n 2006          113           25.887        21.24         3.491         0 \r\n 2006          114           14.782        21.78         5.951         0.254 \r\n 2006          115           19.135        12.14         2.574         1.27 \r\n 2006          116           26.737        18.4         -0.683         0 \r\n 2006          117           25.564        21.44         2.478         0 \r\n 2006          118           6.737         16.67         8.51          1.778 \r\n 2006          119           2.275         12.24         9.26          19.304 \r\n 2006          120           5.787         15.85         10.88         20.574 \r\n 2006          121           3.429         13.26         8.56          3.048 \r\n 2006          122           18.236        22.2          5.787         0 \r\n 2006          123           16.943        19.26         8.26          0 \r\n 2006          124           19.086        15.85         4.613         0 \r\n 2006          125           10.245        9.86          1.41          0 \r\n 2006          126           27.276        18.6         -0.027         0 \r\n 2006          127           27.144        21.53         4.143         0 \r\n 2006          128           9.396         22.76         10.58         1.016 \r\n 2006          129           10.726        22.31         11.93         2.286 \r\n 2006          130           24.159        19.83         6.656         0 \r\n 2006          131           8.633         10.12         3.932         0 \r\n 2006          132           7.484         7.48          2.851         9.398 \r\n 2006          133           8.05          9.68          3.042         0.762 \r\n 2006          134           7.7           13.25         4.286         0.254 \r\n 2006          135           16.618        19.18         8.55          1.778 \r\n 2006          136           20.954        22.6          10.02         4.064 \r\n 2006          137           26.144        23.46         8.46          0 \r\n 2006          138           26.512        19.39         7.36          0.254 \r\n 2006          139           27.269        22.95         7.31          0 \r\n 2006          140           24.262        26.39         7.09          0 \r\n 2006          141           17.968        16.06         7.37          0 \r\n 2006          142           29.049        23.61         5.267         0 \r\n 2006          143           26.727        27.91         9.49          0 \r\n 2006          144           19.161        28.28         16.47         0.254 \r\n 2006          145           16.122        25.72         17.08         2.032 \r\n 2006          146           21.001        28.58         14.91         0 \r\n 2006          147           15.065        30.75         16.45         2.032 \r\n 2006          148           27.431        34.21         19.96         0 \r\n 2006          149           24.617        34.72         21.66         2.54 \r\n 2006          150           8.71          23.52         15.45         4.826 \r\n 2006          151           28.028        28.23         14.95         0 \r\n 2006          152           23.33         27.79         13.28         0 \r\n 2006          153           26.649        30.37         12.02         0 \r\n 2006          154           29.004        28.18         14.66         1.016 \r\n 2006          155           26.73         27.71         15.65         0.508 \r\n 2006          156           27.118        29.81         13.68         8.128 \r\n 2006          157           25.81         29.68         18.16         0.254 \r\n 2006          158           28.47         30.16         16.09         0 \r\n 2006          159           25.749        29.32         15.28         0 \r\n 2006          160           16.9          21.71         11.6          10.16 \r\n 2006          161           5.389         12.86         7.82          41.148 \r\n 2006          162           10.852        15.23         8.4           0 \r\n 2006          163           29.074        23.68         6.647         0 \r\n 2006          164           27.851        28.18         11.25         0 \r\n 2006          165           4.834         21.65         16.88         8.89 \r\n 2006          166           8.795         26.21         16.93         10.414 \r\n 2006          167           24.001        31.43         20.44         0 \r\n 2006          168           20.113        29.26         19.88         0 \r\n 2006          169           24.068        29.37         17.49         0 \r\n 2006          170           29.909        26.23         14.54         0 \r\n 2006          171           14.318        24.31         12.67         11.176 \r\n 2006          172           15.41         27.35         17.67         2.54 \r\n 2006          173           24.056        25.89         15.8          0 \r\n 2006          174           24.064        26.76         13.5          0 \r\n 2006          175           18.14         27.35         14.43         3.302 \r\n 2006          176           12.274        19.74         13.49         9.398 \r\n 2006          177           20.119        24.411        11.626        0 \r\n 2006          178           26.95         25.45         13.44         0 \r\n 2006          179           25.154        25.53         10.92         0 \r\n 2006          180           26.27         27.65         12.78         0 \r\n 2006          181           24.793        31.05         16.1          0 \r\n 2006          182           17.274        31.02         19.49         1.524 \r\n 2006          183           23.969        29.51         18.38         0 \r\n 2006          184           17.468        28.26         18.32         2.286 \r\n 2006          185           27.088        24.71         13.99         0 \r\n 2006          186           28.889        25.7          11.6          0 \r\n 2006          187           26.407        28.05         12.25         0 \r\n 2006          188           22.549        27.28         13.02         0 \r\n 2006          189           12.04         24.02         14.74         0 \r\n 2006          190           27.238        32.01         15.71         0 \r\n 2006          191           19.439        26.32         16.76         0 \r\n 2006          192           6.04          22.27         18.82         10.922 \r\n 2006          193           20.565        27.88         18.19         0 \r\n 2006          194           22.111        30.07         17.87         0.762 \r\n 2006          195           28.188        30.39         17.11         1.27 \r\n 2006          196           27.615        32.46         18.24         0 \r\n 2006          197           27.689        33.45         19.44         0 \r\n 2006          198           13.289        32.35         17.69         2.54 \r\n 2006          199           28.628        29.8          15.07         0 \r\n 2006          200           10.977        26.59         15.93         18.542 \r\n 2006          201           23.281        28.61         19.27         1.016 \r\n 2006          202           11.893        23.49         15.92         0 \r\n 2006          203           25.595        27.03         13.82         0 \r\n 2006          204           27.088        29.92         13.82         0 \r\n 2006          205           20.481        29.95         19.76         0.508 \r\n 2006          206           17.274        29.48         19.45         2.286 \r\n 2006          207           24.389        30.74         19.8          11.176 \r\n 2006          208           21.399        30.17         19.1          0.508 \r\n 2006          209           26.124        31.93         17.95         0 \r\n 2006          210           23.056        33.22         21.62         0 \r\n 2006          211           24.192        34.53         22.9          0 \r\n 2006          212           26.329        34.81         22.73         0 \r\n 2006          213           8.135         27.42         22.26         1.524 \r\n 2006          214           14.393        27.89         18.34         2.032 \r\n 2006          215           26.639        28.36         16.14         0 \r\n 2006          216           26.404        30.49         14.51         0 \r\n 2006          217           16.526        28.26         17.68         0 \r\n 2006          218           17.874        29.84         17.49         22.098 \r\n 2006          219           24.191        27.51         15.86         0 \r\n 2006          220           18.254        26.2          15.75         0 \r\n 2006          221           15.456        28.55         16.93         4.826 \r\n 2006          222           15.837        27.44         20.27         3.81 \r\n 2006          223           13.79         25.2          17.97         0 \r\n 2006          224           22.419        27.14         15.33         0 \r\n 2006          225           10.023        25.96         16.48         4.572 \r\n 2006          226           25.731        25.62         15.38         0 \r\n 2006          227           25.239        27.65         13.1          0 \r\n 2006          228           21.544        28.65         14.87         0 \r\n 2006          229           3.44          20.12         18.02         15.748 \r\n 2006          230           5.555         22.51         18.12         0.254 \r\n 2006          231           13.176        24.12         14.5          0 \r\n 2006          232           21.452        25.13         11.78         0 \r\n 2006          233           22.018        27.61         12.94         0 \r\n 2006          234           21.411        28.91         15.02         0 \r\n 2006          235           21.538        29.42         16.1          0 \r\n 2006          236           19.446        31.28         19.33         0 \r\n 2006          237           10.176        25.12         19.19         5.334 \r\n 2006          238           7.943         23.09         16.08         0 \r\n 2006          239           18.017        25.25         14.15         0 \r\n 2006          240           6.957         20.37         16.3          3.81 \r\n 2006          241           19.06         25.15         14.7          0 \r\n 2006          242           22.666        24.85         11.98         0 \r\n 2006          243           23.456        24.82         12.09         0 \r\n 2006          244           21.634        25.55         11.78         0 \r\n 2006          245           13.242        25.56         16.41         0.254 \r\n 2006          246           8.196         19.03         11.38         0.762 \r\n 2006          247           13.311        21.37         11.19         0.762 \r\n 2006          248           20.933        26.92         10.32         0.254 \r\n 2006          249           18.708        27.62         11.52         0 \r\n 2006          250           19.552        27.89         11.35         0 \r\n 2006          251           17.667        29.99         13.23         0 \r\n 2006          252           5.453         14.44         11.63         0 \r\n 2006          253           2.042         14.89         11.67         60.706 \r\n 2006          254           3.831         14.35         11.64         34.544 \r\n 2006          255           4.669         15.05         11.73         0 \r\n 2006          256           21.204        22.5          8.17          0 \r\n 2006          257           19.84         25.42         8.02          0 \r\n 2006          258           19.631        26.63         11.26         0 \r\n 2006          259           16.185        28.22         15.88         3.556 \r\n 2006          260           10.062        23.31         7.65          12.954 \r\n 2006          261           7.848         13.58         5.815         0.254 \r\n 2006          262           5.403         9.4           2.878         0 \r\n 2006          263           20.333        17.47         0.301         0 \r\n 2006          264           4.198         18.12         7.18          7.112 \r\n 2006          265           6.612         19.52         11.04         10.668 \r\n 2006          266           10.389        18.35         8.13          0 \r\n 2006          267           18.895        19.52         8.14          0 \r\n 2006          268           17.463        22.59         6.114         0 \r\n 2006          269           18.197        23.58         2.105         0 \r\n 2006          270           12.908        16.37         6.549         0.508 \r\n 2006          271           15.096        14.71         3.203         0.254 \r\n 2006          272           14.691        19.9          5.67          1.016 \r\n 2006          273           12.924        21.53         7.65          0.762 \r\n 2006          274           16.109        29.39         6.269         0 \r\n 2006          275           11.75         28.79         16.29         0 \r\n 2006          276           14.327        31.31         15.44         0 \r\n 2006          277           9.537         20.43         7.11          0 \r\n 2006          278           16.814        18.26         4.66          0 \r\n 2006          279           16.012        19.04         2.984         0 \r\n 2006          280           15.645        24.18         8.57          0 \r\n 2006          281           11.435        22.27         10.4          0 \r\n 2006          282           6.972         13.48         7.35          0 \r\n 2006          283           5.703         11.6          5.612         5.842 \r\n 2006          284           5.359         7.29         -3.148         3.302 \r\n 2006          285           7.256         2.106        -4.668         0 \r\n 2006          286           15.905        9.41         -2.688         0 \r\n 2006          287           15.568        9.62         -3.714         0 \r\n 2006          288           6.641         14.31        -4.149         0 \r\n 2006          289           2.217         11.96         7.47          18.288 \r\n 2006          290           3.003         14.99         6.221         0.254 \r\n 2006          291           2.794         6.221         1.629         5.588 \r\n 2006          292           9.666         6.786        -1.007         0 \r\n 2006          293           10.165        14.43         0.433         0 \r\n 2006          294           2.625         5.189         0.24          2.54 \r\n 2006          295           8.376         3.644        -2.315         0 \r\n 2006          296           4.026         2.382        -3.734         0 \r\n 2006          297           11.396        7.85         -5.858         0 \r\n 2006          298           12.939        12.33        -2.765         0 \r\n 2006          299           1.583         6.937         3.96          3.556 \r\n 2006          300           12.145        12.57         1.238         0 \r\n 2006          301           7.344         10.08        -1.225         0 \r\n 2006          302           11.977        15.51        -3.675         0 \r\n 2006          303           9.212         19.32        -0.323         0 \r\n 2006          304           12.295        3.224        -6.309         0 \r\n 2006          305           11.979        4.507        -9.16          0 \r\n 2006          306           11.449        1.305        -8.97          0 \r\n 2006          307           10.276        5.41         -11.63         0 \r\n 2006          308           7.112         12.92         1.745         0 \r\n 2006          309           10.623        16.27        -2.449         0 \r\n 2006          310           1.747         9.66          2.259         0 \r\n 2006          311           7.424         17.11         7.76          0 \r\n 2006          312           8.627         24.51         6.086         0 \r\n 2006          313           9.9           12.57         2.841         0 \r\n 2006          314           2.333         4.171        -5.377         0 \r\n 2006          315           8.056        -0.827        -9.91          5 \r\n 2006          316           7.318         5.468        -4.602         0 \r\n 2006          317           6.775         7.22         -0.892         11 \r\n 2006          318           3.349         4.143        -0.367         0 \r\n 2006          319           4.973         4.507        -1.608         0 \r\n 2006          320           3.481         1.982        -1.914         0 \r\n 2006          321           7.569         7.16         -1.923         0 \r\n 2006          322           1.7           2.736        -0.94          0 \r\n 2006          323           9.446         4.565        -7.01          0 \r\n 2006          324           8.672         10.12        -6.93          0 \r\n 2006          325           8.042         11.8          0.346         0 \r\n 2006          326           7.218         13.82        -1.178         0 \r\n 2006          327           7.539         14.68        -1.503         0 \r\n 2006          328           7.174         13.06         0.724         0 \r\n 2006          329           4.423         11.32         0.535         0 \r\n 2006          330           1.459         10.26         2.64          3 \r\n 2006          331           1.036         11.56         6.579         7 \r\n 2006          332           2.786         16.75         2.659         20 \r\n 2006          333           6.536         2.659        -10            12 \r\n 2006          334           6.526        -8.72         -12.84         0 \r\n 2006          335           7.878        -3.292        -11.94         0 \r\n 2006          336           7.398        -6.615        -12.46         0 \r\n 2006          337           6.317        -10.2         -15.05         0 \r\n 2006          338           7.73         -2.791        -15.09         0 \r\n 2006          339           3.352         3.702        -15.88         0 \r\n 2006          340           4.807         0.895        -13.18         0 \r\n 2006          341           7.824        -10.09        -17.97         0 \r\n 2006          342           7.595         1.601        -17.63         0 \r\n 2006          343           7.525         9.75         -7.38          0 \r\n 2006          344           7.228         9.74         -2.028         0 \r\n 2006          345           1.332         7.12         -2.036         0 \r\n 2006          346           0.964         5.681        -1.178         8 \r\n 2006          347           4.597         5.411        -4.55          0 \r\n 2006          348           7.189         10.67         0.519         0 \r\n 2006          349           4.077         2.288        -1.799         0 \r\n 2006          350           2.086         7.74          0.573         0 \r\n 2006          351           5.735         3.224        -2.534         0 \r\n 2006          352           4.974         0.104        -6.489         0 \r\n 2006          353           7.474         5.807        -9.4           0 \r\n 2006          354           2.151         2.393        -5.443         0 \r\n 2006          355           0.742         3.492         1.181         21 \r\n 2006          356           1.699         2.679         0.266         6 \r\n 2006          357           4.101         0.571        -3.836         0 \r\n 2006          358           5.504         5.642        -6.312         0 \r\n 2006          359           3.922        -0.439        -5.074         0 \r\n 2006          360           7.197         3.463        -8.48          0 \r\n 2006          361           2.887         3.693        -2.447         0 \r\n 2006          362           6.145         6.738         0.152         0 \r\n 2006          363           4.128         7.54          1.381         0 \r\n 2006          364           1.729         8.18          1.82          0 \r\n 2006          365           1.012         8.3          -1.59          19 \r\n 2007          1             7.71         -0.673        -6.322         10 \r\n 2007          2             7.686         2.392        -7.94          0 \r\n 2007          3             7.713         8.41         -2.332         0 \r\n 2007          4             2.507         8.61          0.571         0 \r\n 2007          5             1.822         2.173        -0.599         0 \r\n 2007          6             7.365         3.482        -3.749         0 \r\n 2007          7             2.323         1.124        -4.986         0 \r\n 2007          8             4.154         1.286        -7.12          0 \r\n 2007          9             6.098        -1.064        -10.82         0 \r\n 2007          10            7.365         5.103        -11.43         0 \r\n 2007          11            4.271         6.743        -4.532         0 \r\n 2007          12            5.21         -4.347        -13.52         0 \r\n 2007          13            2.412        -7.78         -14.14         0 \r\n 2007          14            1.921        -6.068        -8.26          1.5 \r\n 2007          15            6.985        -8.333        -19.249        4.5 \r\n 2007          16            10.291       -15.039       -25.994        0 \r\n 2007          17            8.851        -7.63         -18.63         0 \r\n 2007          18            4.635        -2.623        -8.94          0 \r\n 2007          19            9.26         -5            -15.556        0 \r\n 2007          20            8.495        -6.874        -19.44         0 \r\n 2007          21            5.899         0            -6.855         6 \r\n 2007          22            5.757        -4.789        -11.221        4.5 \r\n 2007          23            7.634        -3.889        -13.333        0 \r\n 2007          24            6.375        -2.406        -10.556        0 \r\n 2007          25            6.888        -5.556        -16.111        0 \r\n 2007          26            10.114        3.793        -8.09          0 \r\n 2007          27            10.168       -5.556        -18.573        0 \r\n 2007          28            11.14        -13.1         -21.236        0 \r\n 2007          29            7.441        -5            -17.778        0 \r\n 2007          30            11.403       -13.599       -20.657        0.5 \r\n 2007          31            6.642        -6.357        -22.16         0 \r\n 2007          32            12.132       -9.33         -20.794        0.5 \r\n 2007          33            12.933       -12.527       -23.202        0 \r\n 2007          34            12.694       -14.756       -25.076        0 \r\n 2007          35            12.012       -18.444       -25.429        0 \r\n 2007          36            13.751       -16.204       -27.194        0 \r\n 2007          37            6.607        -14.326       -21.764        1.7 \r\n 2007          38            11.552        0            -25.74         3.5 \r\n 2007          39            12.603       -15           -27.03         0 \r\n 2007          40            11.963       -14.69        -22.85         0 \r\n 2007          41            12.47        -13.08        -26.54         0 \r\n 2007          42            5.184        -4.153        -13.06         0 \r\n 2007          43            2.661        -4.588        -8.09          6 \r\n 2007          44            9.998        -8.08         -17.15         0 \r\n 2007          45            13.732       -13.69        -23.54         0 \r\n 2007          46            14.086       -15.49        -25.87         0 \r\n 2007          47            9.973        -7.06         -23.313        0 \r\n 2007          48            5.848        -7.06         -23.313        0 \r\n 2007          49            12.229       -4.143        -14.39         0 \r\n 2007          50            10.732        3.605        -8.33          0 \r\n 2007          51            14.648        3.908        -3.537         0 \r\n 2007          52            14.331        6.738        -5.025         0 \r\n 2007          53            15.305        0.858        -6.303         0 \r\n 2007          54            5.035        -0.047        -2.884         0 \r\n 2007          55            2.078        -1.141        -3.546         33 \r\n 2007          56            6.987         0.925        -2.669         1.6 \r\n 2007          57            12.73        -1.812        -5.014         0 \r\n 2007          58            11.905       -0.629        -4.908         0 \r\n 2007          59            7.66          0.039        -3.941         0 \r\n 2007          60            3.755         0.887        -4.269         0 \r\n 2007          61            12.519       -4.288        -7.45          15 \r\n 2007          62            17.43        -7.35         -16.54         1 \r\n 2007          63            17.479       -1.974        -19.36         0 \r\n 2007          64            17.605       -4.279        -14.71         0 \r\n 2007          65            12.909       -3.785        -15.14         0 \r\n 2007          66            11.836       -3.315        -6.944         0 \r\n 2007          67            17.295        4.416        -5.501         0 \r\n 2007          68            10.59         4.369        -2.607         0 \r\n 2007          69            18.745        4.906        -5.248         0 \r\n 2007          70            17.693        8.53         -7.42          0 \r\n 2007          71            14.636        5.483         0.534         0 \r\n 2007          72            17.565        14.18         2.565         0 \r\n 2007          73            6.72          5.836         0.22          0 \r\n 2007          74            15.117        6.719        -2.922         0 \r\n 2007          75            11.441       -0.771        -6.686         0 \r\n 2007          76            18.996        2.684        -6.786         0 \r\n 2007          77            14.203        6.033        -5.833         0 \r\n 2007          78            19.14         6.187        -2.376         0 \r\n 2007          79            18.074        9.77         -3.816         0 \r\n 2007          80            4.557         16.25         4.727         2.2 \r\n 2007          81            20.164        13.58        -0.075         10 \r\n 2007          82            6.215         12.93         3.024         0 \r\n 2007          83            4.28          16.05         5.515         0 \r\n 2007          84            19.335        25.68         12.29         7 \r\n 2007          85            16.877        26.69         9.51          0 \r\n 2007          86            10.844        20.13         9.38          0 \r\n 2007          87            3.223         11.02         6.789         0 \r\n 2007          88            5.605         12.11         6.915         0 \r\n 2007          89            3.095         11.1          8.22          20.32 \r\n 2007          90            3.747         13.87         7.61          13.462 \r\n 2007          91            3.995         8.17          3.233         2.54 \r\n 2007          92            14.582        12.37         3.636         12.954 \r\n 2007          93            5.2           10.08        -5.863         7.874 \r\n 2007          94            12.589       -1.961        -8.11          0.254 \r\n 2007          95            23.697        1.039        -7.41          0 \r\n 2007          96            20.425       -1.559        -8.27          0 \r\n 2007          97            20.771        1.842        -9.77          0 \r\n 2007          98            17.642        4.329        -7.29          0 \r\n 2007          99            24.463        6.245        -7.1           0 \r\n 2007          100           5.37          6.644        -2.204         0 \r\n 2007          101           7.335         0.928        -1.732         0 \r\n 2007          102           23.048        3.491        -3.182         0 \r\n 2007          103           22.935        8.79         -3.595         0 \r\n 2007          104           19.779        11.81        -1.25          0 \r\n 2007          105           24.882        16.25         0.901         0 \r\n 2007          106           24.856        23.05         0.614         0 \r\n 2007          107           25.256        20.7          7.58          0 \r\n 2007          108           25.162        17.43         3.396         0 \r\n 2007          109           13.7          13.73         2.432         0 \r\n 2007          110           23.14         21.38         4.622         0 \r\n 2007          111           24.565        27.32         8.57          0 \r\n 2007          112           16.639        26.91         10.94         17.272 \r\n 2007          113           22.447        19.41         9.09          0 \r\n 2007          114           2.718         11.47         8.02          36.576 \r\n 2007          115           3.068         10.23         5.951         13.97 \r\n 2007          116           7.779         11.35         4.872         0 \r\n 2007          117           20.58         21.88         4.104         0 \r\n 2007          118           25.951        24.31         7.51          0 \r\n 2007          119           25.774        31.74         8.72          0 \r\n 2007          120           24.257        31.49         13.21         0 \r\n 2007          121           23.999        23.07         10.23         0 \r\n 2007          122           24.599        19.49         7.6           0 \r\n 2007          123           11.944        20.59         8.17          0 \r\n 2007          124           5.753         15.6          10.98         4.318 \r\n 2007          125           15.945        23.28         13.66         0 \r\n 2007          126           7.975         15.59         8.67          14.986 \r\n 2007          127           12.291        22.85         11.38         4.064 \r\n 2007          128           22.17         23.93         13.45         0 \r\n 2007          129           24.745        25.7          10.67         0 \r\n 2007          130           24.126        29.16         12.57         0 \r\n 2007          131           27.611        26.95         12.75         0 \r\n 2007          132           18.726        23.81         10.07         0 \r\n 2007          133           22.899        27.94         11.31         0 \r\n 2007          134           24.119        32.67         17.84         3.556 \r\n 2007          135           9.846         18.87         7.84          0.508 \r\n 2007          136           28.243        19.45         4.766         0 \r\n 2007          137           29.438        19.57         2.65          0 \r\n 2007          138           27.18         24.76         5.074         0 \r\n 2007          139           25.709        29.71         11.29         0 \r\n 2007          140           23.715        29.41         14.69         0 \r\n 2007          141           24.994        28.61         14.07         3.302 \r\n 2007          142           16.939        27.36         15.98         4.572 \r\n 2007          143           12.225        26.91         16.22         35.56 \r\n 2007          144           9.101         19.92         9.46          17.272 \r\n 2007          145           29.695        20.2          6.172         0 \r\n 2007          146           12.73         22.98         9.97          3.81 \r\n 2007          147           28.838        22.95         5.854         0 \r\n 2007          148           21.85         26.76         12.22         0 \r\n 2007          149           20.732        29.47         18.46         0 \r\n 2007          150           12.474        26.21         17.13         22.606 \r\n 2007          151           26.958        24.44         14.76         1.778 \r\n 2007          152           9.795         21.52         14.04         6.604 \r\n 2007          153           21.205        25.11         14.58         2.54 \r\n 2007          154           14.95         21.42         14.64         13.208 \r\n 2007          155           21.259        24.26         13.63         0 \r\n 2007          156           28.663        21.33         11.36         0 \r\n 2007          157           13.111        23.81         10.51         8.128 \r\n 2007          158           25.601        30.8          16.02         0 \r\n 2007          159           30.359        22.03         11.34         0 \r\n 2007          160           29.196        26.69         9.54          0 \r\n 2007          161           28.326        28.41         13.47         0 \r\n 2007          162           28.235        29.6          15.45         0 \r\n 2007          163           28.397        31.33         16.73         0 \r\n 2007          164           29.311        30.62         16.21         0 \r\n 2007          165           28.006        31.38         17.13         0 \r\n 2007          166           25.884        31.95         17.28         0 \r\n 2007          167           20.856        30.11         18.63         0 \r\n 2007          168           24.951        31.76         19.3          0 \r\n 2007          169           11.403        27.54         16.23         50.292 \r\n 2007          170           29.789        24.63         13.04         0 \r\n 2007          171           29.61         30.01         12.83         0 \r\n 2007          172           15.944        29.53         18.38         5.334 \r\n 2007          173           4.934         19.02         15.07         5.334 \r\n 2007          174           17.536        23.86         15.45         0 \r\n 2007          175           11.297        22.12         13.63         0 \r\n 2007          176           25.84         29.13         17.75         0 \r\n 2007          177           26.83         31.13         20.62         0 \r\n 2007          178           26.438        26.92         16.25         0 \r\n 2007          179           20.922        23.69         13.57         0 \r\n 2007          180           20.158        24.53         14.29         0 \r\n 2007          181           28.338        26.07         11.42         0 \r\n 2007          182           28.623        27.02         13.29         0 \r\n 2007          183           27.708        27.26         14.33         0 \r\n 2007          184           20.817        29.59         18.02         0 \r\n 2007          185           25.124        29.83         18.08         0 \r\n 2007          186           27.402        30.05         17.29         0 \r\n 2007          187           29.021        30.68         15.09         0 \r\n 2007          188           28.217        32.84         17.75         0 \r\n 2007          189           27.435        33.87         19.36         0 \r\n 2007          190           23.668        29.93         20.27         0.508 \r\n 2007          191           26.182        27.37         15.79         0 \r\n 2007          192           25.773        23.94         11.55         0 \r\n 2007          193           26.112        25.46         11.84         0 \r\n 2007          194           28.718        26.11         9.88          0 \r\n 2007          195           26.626        27.68         15.51         0 \r\n 2007          196           27.918        27.7          11.82         0 \r\n 2007          197           20.062        30.08         14.15         4.064 \r\n 2007          198           19.757        29.98         17.67         23.368 \r\n 2007          199           14.702        29.92         19.95         27.178 \r\n 2007          200           27.772        26.43         14.46         0 \r\n 2007          201           26.359        24.78         11.66         0 \r\n 2007          202           28.597        25.51         11.41         0 \r\n 2007          203           18.711        25.67         14.26         23.368 \r\n 2007          204           16.046        27.68         17.56         8.636 \r\n 2007          205           23.573        28.52         17.58         0 \r\n 2007          206           26.172        29.87         17.9          0 \r\n 2007          207           23.04         30.88         18.48         27.432 \r\n 2007          208           17.546        28.08         19.57         0 \r\n 2007          209           23.616        27.07         17.55         0 \r\n 2007          210           26.346        27.96         15.71         0 \r\n 2007          211           23.962        29.74         16.3          0 \r\n 2007          212           26.34         28.84         15.53         0 \r\n 2007          213           25.192        30.48         17.77         0 \r\n 2007          214           24.952        28.03         16.21         0 \r\n 2007          215           23.919        27.63         12.38         0 \r\n 2007          216           3.795         20.6          16.63         20.828 \r\n 2007          217           14.07         26.82         16.06         0 \r\n 2007          218           9.317         26.28         19.67         10.922 \r\n 2007          219           14.136        28.79         21.4          21.59 \r\n 2007          220           18.348        29.57         18.65         0.254 \r\n 2007          221           24.711        28.92         20            1.016 \r\n 2007          222           24.287        32.08         18.33         0 \r\n 2007          223           21.148        31.74         20.57         0 \r\n 2007          224           23.798        29.28         18.78         0 \r\n 2007          225           20.993        30.61         17.68         0 \r\n 2007          226           14.472        28.62         19.89         0 \r\n 2007          227           12.768        26.26         17.79         34.29 \r\n 2007          228           15.391        26.96         16.5          0.254 \r\n 2007          229           22.475        24.13         13.74         0 \r\n 2007          230           7.842         21.46         13.5          23.876 \r\n 2007          231           8.952         26.7          16.07         65.278 \r\n 2007          232           9.621         24.67         18.97         8.636 \r\n 2007          233           18.144        29.51         19.59         20.32 \r\n 2007          234           8.547         25.91         18.41         14.986 \r\n 2007          235           10.459        24.52         18.04         0.254 \r\n 2007          236           13.275        24.98         16.06         0.254 \r\n 2007          237           22.919        24.63         13.5          0 \r\n 2007          238           22.691        26.09         12.75         0 \r\n 2007          239           18.994        29.57         18.86         2.286 \r\n 2007          240           20.404        32.22         19.58         18.796 \r\n 2007          241           17.45         24.63         13.15         0 \r\n 2007          242           23.509        25.47         10.9          0 \r\n 2007          243           23.015        26.77         11            0 \r\n 2007          244           22.86         26.39         12.77         0 \r\n 2007          245           21.945        29.19         12.86         0 \r\n 2007          246           21.203        30.19         15            0 \r\n 2007          247           21.366        30.97         15.86         0 \r\n 2007          248           19.623        30.77         19.28         0 \r\n 2007          249           8.769         26.01         18.92         1.016 \r\n 2007          250           17.993        24.95         13.53         18.796 \r\n 2007          251           21.062        26.08         11.43         0 \r\n 2007          252           13.261        20.55         13.11         0.254 \r\n 2007          253           4.688         16.77         8.75          14.224 \r\n 2007          254           21.036        18.73         4.862         0 \r\n 2007          255           21.23         20.17         2.605         0 \r\n 2007          256           17.128        26.62         7.27          0 \r\n 2007          257           19.568        13.51         2.34          0 \r\n 2007          258           19.259        16.96        -0.653         0 \r\n 2007          259           17.497        22.91         10.47         0 \r\n 2007          260           11.915        31.72         14.28         0.508 \r\n 2007          261           7.351         25.83         16.84         6.096 \r\n 2007          262           15.796        24.4          12.35         0 \r\n 2007          263           17.467        28.12         11.79         0 \r\n 2007          264           14.435        31.11         11.98         0.254 \r\n 2007          265           19.464        24.12         6.443         0 \r\n 2007          266           17.304        30.2          10.82         0 \r\n 2007          267           10.848        28.66         19.98         0 \r\n 2007          268           6.201         21.67         7.76          2.032 \r\n 2007          269           18.104        20.82         5.102         0.254 \r\n 2007          270           16.336        23.74         9.95          0 \r\n 2007          271           18.219        22.82         4.651         0 \r\n 2007          272           8.18          26.5          9.98          0.508 \r\n 2007          273           9.185         27.24         15.65         9.652 \r\n 2007          274           5.942         18.9          13.72         0 \r\n 2007          275           1.498         18.85         10.32         36.322 \r\n 2007          276           17.189        23.97         6.288         0 \r\n 2007          277           14.884        28.03         11.23         0 \r\n 2007          278           8.795         29.65         18.37         0 \r\n 2007          279           14.477        30.69         19.08         0 \r\n 2007          280           5.747         26.86         20.04         20.066 \r\n 2007          281           11.178        21.37         10.48         37.338 \r\n 2007          282           16.03         16.71         7.59          0 \r\n 2007          283           9.604         10.88         4.804         0 \r\n 2007          284           10.861        10.83         3.645         0 \r\n 2007          285           9.576         14.1          3.826         0 \r\n 2007          286           3.263         14.41         8.72          0.508 \r\n 2007          287           1.111         13.09         10.83         23.368 \r\n 2007          288           1.792         14.38         11.3          0.508 \r\n 2007          289           5.089         13.96         8.36          0 \r\n 2007          290           5.661         17.53         7.71          6.35 \r\n 2007          291           3.041         15.57         11.34         9.906 \r\n 2007          292           3.35          13.5          5.795         0.508 \r\n 2007          293           13.552        23.08         3.328         0 \r\n 2007          294           7.043         21.75         9.01          0 \r\n 2007          295           5.283         11.94         1.642         0 \r\n 2007          296           13.415        18.44        -0.738         0 \r\n 2007          297           13.463        12.29         1.8           0 \r\n 2007          298           13.308        14.03        -1.537         0 \r\n 2007          299           3.003         10.91         3.347         1.27 \r\n 2007          300           13.019        11.99         1.069         0 \r\n 2007          301           12.645        14.97        -2.186         0 \r\n 2007          302           11.989        19.96         2.84          0 \r\n 2007          303           9.572         21.27         7.09          0 \r\n 2007          304           10.577        13.3         -0.463         0 \r\n 2007          305           11.867        14.38        -3.971         0 \r\n 2007          306           10.314        13.73        -0.387         0 \r\n 2007          307           9.758         12.49        -4.203         0 \r\n 2007          308           9.968         15.75        -1.788         0 \r\n 2007          309           9.142         8.74         -0.161         0 \r\n 2007          310           10.676        4.326        -6.124         0 \r\n 2007          311           8.572         6.952        -7.6           0 \r\n 2007          312           6.436         5.546        -3.512         0 \r\n 2007          313           9.268         9.37         -4.658         0 \r\n 2007          314           5.517         9.58         -3.298         0 \r\n 2007          315           3.434         18.33         5.681         0 \r\n 2007          316           7.572         11.72        -1.558         0 \r\n 2007          317           6.184         12.49        -6.008         0 \r\n 2007          318           3.814         8.13          1.657         0 \r\n 2007          319           6.492         4.67         -3.273         0 \r\n 2007          320           6.513         10.18        -1.519         0 \r\n 2007          321           5.174         5.074         0.504         0 \r\n 2007          322           2.579         3.769        -0.077         1.27 \r\n 2007          323           3.452         13.65         2.268         0 \r\n 2007          324           0.696         4.536         0.324         0 \r\n 2007          325           1.371         0.8          -2.592         0 \r\n 2007          326           3.535        -0.92         -8             0 \r\n 2007          327           8.543         0.123        -11.45         0 \r\n 2007          328           6.361         3.061        -5.493         0 \r\n 2007          329           7.856         5.593        -5.98          0 \r\n 2007          330           6.901         3.864        -5.123         0 \r\n 2007          331           7.096         0.187        -11.27         0 \r\n 2007          332           3.62          1.612        -9.8           0 \r\n 2007          333           7.017        -1.402        -11.37         0 \r\n 2007          334           8.117        -4.096        -12.69         0 \r\n 2007          335           0.916         1.524        -8.47          0 \r\n 2007          336           4.347         1.448        -12.38         33 \r\n 2007          337           6.987        -5.835        -14.79         0 \r\n 2007          338           3.735        -3.598        -8.95          0 \r\n 2007          339           8.049        -6.245        -15.63         1.5 \r\n 2007          340           3.967        -4.222        -16.77         0 \r\n 2007          341           6.738        -3.942        -15.52         4.9 \r\n 2007          342           3.846        -12.61        -17.49         0 \r\n 2007          343           3.665        -10.1         -13.21         3.8 \r\n 2007          344           7.575        -5.605        -14.56         0 \r\n 2007          345           3.404        -3.945        -7.98          3.2 \r\n 2007          346           7.1          -4.685        -11.79         0 \r\n 2007          347           7.743        -0.763        -12.53         0 \r\n 2007          348           7.198        -10.68        -17.82         0 \r\n 2007          349           7.011        -6.003        -16.08         0 \r\n 2007          350           4.169        -6.875        -17.89         0 \r\n 2007          351           7.149        -5.666        -12.7          0 \r\n 2007          352           7.325        -0.486        -9.98          0 \r\n 2007          353           5.172        -5.112        -11.81         0 \r\n 2007          354           3.51          0.114        -5.112         0 \r\n 2007          355           3.69          1.601        -0.02          0 \r\n 2007          356           1.996         1.314        -11.93         0 \r\n 2007          357           4.422        -7.29         -15.62         4.5 \r\n 2007          358           4.988        -5.648        -10.26         0 \r\n 2007          359           7.292         2.326        -7.69          0 \r\n 2007          360           3.811        -2.097        -5.843         0 \r\n 2007          361           4.08         -2.613        -6.51          2.2 \r\n 2007          362           4.851        -4.64         -12.4          0 \r\n 2007          363           3.977        -3.379        -11.85         2.8 \r\n 2007          364           4.637        -4.36         -15.81         0 \r\n 2007          365           4.143        -5.473        -10.98         0 \r\n 2008          1             6.961        -10.92        -17.98         0.7 \r\n 2008          2             7.922        -12.06        -19.58         0 \r\n 2008          3             7.507        -4.998        -17.28         0 \r\n 2008          4             6.164        -1.106        -7.14          0 \r\n 2008          5             3.454         4.152        -3.509         0 \r\n 2008          6             3.427         4.095        -1.246         0 \r\n 2008          7             2.912         3.061        -1.497         0 \r\n 2008          8             1.683         0.791        -4.967         4.2 \r\n 2008          9             5.297         1.086        -7.83          0 \r\n 2008          10            2.331         0.238        -1.927         0 \r\n 2008          11            3.212        -1.889        -7.55          0 \r\n 2008          12            3.424        -2.393        -6.894         0 \r\n 2008          13            5.666        -4.521        -10.39         1 \r\n 2008          14            8.406        -7.69         -17.04         0.5 \r\n 2008          15            8.294        -6.803        -18.73         0 \r\n 2008          16            3.059        -2.851        -10.16         0 \r\n 2008          17            7.361        -10.17        -22.08         5 \r\n 2008          18            7.507        -12.47        -21.87         2 \r\n 2008          19            9.456        -18.31        -25.4          0 \r\n 2008          20            8.981        -15.33        -25.17         0 \r\n 2008          21            5.242        -12.75        -16.2          1.2 \r\n 2008          22            9.953        -12.42        -24.53         4.2 \r\n 2008          23            7.044        -14           -25.89         0 \r\n 2008          24            10.432       -17.08        -30.7          0 \r\n 2008          25            4.249        -6.796        -23.79         0 \r\n 2008          26            9.952        -6.027        -14.35         3 \r\n 2008          27            9.778         1.272        -15.15         0 \r\n 2008          28            7.283         6.245         1.229         0 \r\n 2008          29            3.394         3.291        -21.83         0 \r\n 2008          30            9.592        -16.4         -22.98         1.5 \r\n 2008          31            7.55         -8.58         -16.84         0 \r\n 2008          32            9.753        -0.905        -11.44         0 \r\n 2008          33            5.327        -1.268        -8.06          0 \r\n 2008          34            3.8          -2.965        -8.51          0 \r\n 2008          35            2.027         0.448        -3.816         0 \r\n 2008          36            2.668        -0.257        -2.067         5.5 \r\n 2008          37            8.598        -1.627        -9.08          1.5 \r\n 2008          38            5.255        -7.04         -9.13          0 \r\n 2008          39            7.039        -0.81         -7.06          0 \r\n 2008          40            6.869        -3.028        -19.21         0 \r\n 2008          41            12.75        -18.7         -23.23         0 \r\n 2008          42            6.528        -14.99        -19.05         0 \r\n 2008          43            10.211       -10.59        -22.05         6.5 \r\n 2008          44            9.873        -7.3          -25.3          0 \r\n 2008          45            5.863        -2.75         -17.7          0.5 \r\n 2008          46            13.511       -12.03        -22            3 \r\n 2008          47            14.123       -0.886        -16.46         0 \r\n 2008          48            5.846        -0.2          -10.15         0 \r\n 2008          49            13.37        -10.17        -20.28         1.8 \r\n 2008          50            13.729       -10.96        -24.69         0 \r\n 2008          51            15.564       -15.34        -25.31         0.7 \r\n 2008          52            9.349        -8.79         -21.92         0 \r\n 2008          53            14.727       -6.438        -16.13         0 \r\n 2008          54            14.982       -2.213        -21.2          0 \r\n 2008          55            12.336        1.502        -13.52         0 \r\n 2008          56            3.563         0.362        -1.917         0 \r\n 2008          57            13.534       -1.936        -9.6           0 \r\n 2008          58            14.459       -4.475        -14.11         0 \r\n 2008          59            9.838        -3.216        -13.9          0 \r\n 2008          60            14.664        1.505        -7.9           4 \r\n 2008          61            13.018       -0.552        -12.2          0 \r\n 2008          62            10.867        8.74         -2.874         0 \r\n 2008          63            16.131       -0.57         -9.91          5 \r\n 2008          64            14.867       -0.143        -11.94         0 \r\n 2008          65            8.909        -2.087        -13.27         0 \r\n 2008          66            16.83        -3.545        -15.42         2 \r\n 2008          67            18.683       -9.75         -18.31         0 \r\n 2008          68            17           -6.279        -20.39         0 \r\n 2008          69            15.398       -3.565        -8.76          0 \r\n 2008          70            18.299       -2.251        -9.18          0 \r\n 2008          71            15.246        4.743        -7.58          0 \r\n 2008          72            11.535        4.561        -0.208         0 \r\n 2008          73            18.47         10.2          0.431         0 \r\n 2008          74            15.418        5.204        -1.383         0 \r\n 2008          75            12.376        1.591        -3.153         0 \r\n 2008          76            10.759        3.518        -1.283         0 \r\n 2008          77            4.598         2.87         -0.75          0 \r\n 2008          78            4.644         3.703         0.191         3 \r\n 2008          79            17.88         8.45         -1.442         0 \r\n 2008          80            12.947        9.38          0.401         0 \r\n 2008          81            1.977         3.387        -2.149         0 \r\n 2008          82            7.434         0.248        -3.421         1.8 \r\n 2008          83            6.62         -0.074        -3.393         0 \r\n 2008          84            17.625        5.483        -6.874         0 \r\n 2008          85            14.825        9.5          -2.549         0 \r\n 2008          86            17.272        11.13        -4.618         0 \r\n 2008          87            9.37          2.603        -3.143         0 \r\n 2008          88            22.845        5.945        -7.29          3.2 \r\n 2008          89            19.77         7.29         -3.393         0 \r\n 2008          90            4.972         7.66          2.126         0 \r\n 2008          91            1.615         4.978         0.105         0 \r\n 2008          92            19.495        6.197        -2.741         0.254 \r\n 2008          93            21.045        10.25        -5.882         0 \r\n 2008          94            5.133         7.21         -0.949         0.508 \r\n 2008          95            19.857        15.68        -2.39          0.254 \r\n 2008          96            21.773        18.17         1.165         0 \r\n 2008          97            5.121         15.13         0.365         1.524 \r\n 2008          98            8.515         5.985        -0.054         0 \r\n 2008          99            3.714         4.325        -0.643         1.27 \r\n 2008          100           8.53          6.342        -0.52          0 \r\n 2008          101           1.529         7.41          1.928         42.926 \r\n 2008          102           5.334         7.66          0.824         6.604 \r\n 2008          103           8.948         1.118        -0.796         0.508 \r\n 2008          104           23.686        6.854        -2.913         0 \r\n 2008          105           25.321        11.73        -3.99          0 \r\n 2008          106           24.25         18.14         0.151         0 \r\n 2008          107           22.01         23.88         7.97          0 \r\n 2008          108           2.377         8.34          5.218         16.764 \r\n 2008          109           1.934         7.45          4.959         44.45 \r\n 2008          110           5.581         10.87         7.11          0 \r\n 2008          111           19.372        20.23         6.632         0 \r\n 2008          112           17.413        25.04         8.61          2.286 \r\n 2008          113           17.427        18.06         6.351         12.446 \r\n 2008          114           26.078        23.81         4.643         0 \r\n 2008          115           5.75          19.3          10.94         61.722 \r\n 2008          116           8.334         18.63         0.291         36.576 \r\n 2008          117           24.479        10.33         0.042         0 \r\n 2008          118           20.67         11.13        -0.9           0 \r\n 2008          119           13.267        4.889        -1.138         0 \r\n 2008          120           25.384        10.74        -3.278         0 \r\n 2008          121           22.383        17.86         1.386         0 \r\n 2008          122           4.886         17.38         8.34          0.508 \r\n 2008          123           6.961         20.04         6.264         13.208 \r\n 2008          124           25.183        12.85         2.961         0.762 \r\n 2008          125           25.205        20.5          0.271         0 \r\n 2008          126           21.532        23.19         4.978         0 \r\n 2008          127           23.005        27.63         8.51          12.192 \r\n 2008          128           19.961        16.62         7.81          6.096 \r\n 2008          129           22.994        18.92         4.952         0 \r\n 2008          130           13.756        17.13         9.53          0 \r\n 2008          131           6.938         13.86         5.99          3.556 \r\n 2008          132           22.694        14.82         4.779         1.016 \r\n 2008          133           27.043        18.38         2.045         0 \r\n 2008          134           6.623         17.13         7.49          0.254 \r\n 2008          135           28.291        19.1          5.363         0 \r\n 2008          136           24.779        21.13         4.175         0 \r\n 2008          137           26.294        25.16         5.864         0.762 \r\n 2008          138           25.152        26.04         9.13          0 \r\n 2008          139           28.89         18.17         5.026         0 \r\n 2008          140           14.729        18.66         7.71          0.254 \r\n 2008          141           25.123        19.92         6.178         0 \r\n 2008          142           29.204        21.08         3.309         0 \r\n 2008          143           18.831        21.53         5.219         0 \r\n 2008          144           14.185        19.03         9.03          2.54 \r\n 2008          145           18.682        21.05         8.19          0 \r\n 2008          146           12.19         25.64         14.26         10.414 \r\n 2008          147           27.139        25.59         12.56         0 \r\n 2008          148           14.921        14.56         7.25          0 \r\n 2008          149           24.84         20.27         6.967         0 \r\n 2008          150           2.11          15.05         9.28          48.006 \r\n 2008          151           16.885        24.84         13.52         8.636 \r\n 2008          152           23.929        26.12         12.89         0.508 \r\n 2008          153           28.766        28.55         11.51         0 \r\n 2008          154           7.258         22.42         13.2          4.826 \r\n 2008          155           8.307         17.36         14.02         9.652 \r\n 2008          156           12.035        21.61         13.2          17.526 \r\n 2008          157           16.3          27.81         17.32         25.654 \r\n 2008          158           20.287        22.78         17.46         17.526 \r\n 2008          159           16.798        31.02         15.65         20.574 \r\n 2008          160           2.521         22.95         17.61         70.358 \r\n 2008          161           22.204        23.71         15.6          0 \r\n 2008          162           28.699        26.38         13.04         0 \r\n 2008          163           9.571         25.5          17.76         10.16 \r\n 2008          164           19.177        25.88         17.53         35.306 \r\n 2008          165           28.948        24.25         13.87         0 \r\n 2008          166           29.264        28.81         13.41         2.032 \r\n 2008          167           17.463        23.96         14.93         4.318 \r\n 2008          168           29.614        23.15         12.32         0 \r\n 2008          169           25.885        24.84         9.93          0 \r\n 2008          170           28.739        26.23         13.33         0 \r\n 2008          171           28.904        28.56         11.9          0 \r\n 2008          172           29.526        29.48         17.14         0.508 \r\n 2008          173           26.182        27.29         15.51         0 \r\n 2008          174           28.374        26.07         13.96         0 \r\n 2008          175           27.164        25.91         12.95         0 \r\n 2008          176           24.492        28.82         17.42         0 \r\n 2008          177           21.709        31.08         16.29         1.016 \r\n 2008          178           11.778        24.6          16.48         0.254 \r\n 2008          179           14.371        28.43         16.62         10.922 \r\n 2008          180           17.772        21.41         13.54         2.794 \r\n 2008          181           25.01         24.77         13.48         0 \r\n 2008          182           29.786        25.71         13.2          0 \r\n 2008          183           28.261        29.1          13.59         0 \r\n 2008          184           19.241        28.66         15.87         0 \r\n 2008          185           26.894        24.81         13.72         0 \r\n 2008          186           25.871        26.81         13.25         0 \r\n 2008          187           28.589        27.94         14.72         0 \r\n 2008          188           14.651        30.94         18.76         2.794 \r\n 2008          189           17.049        31.9          19.2          34.036 \r\n 2008          190           20.878        28.111        18.196        0 \r\n 2008          191           23.627        28.357        15.246        0 \r\n 2008          192           20.476        30.503        18.317        5.055 \r\n 2008          193           23.642        30.99         21.246        4.013 \r\n 2008          194           21.609        24.876        14.475        16.129 \r\n 2008          195           28.847        26.452        12.088        0 \r\n 2008          196           27.789        30.429        12.771        0 \r\n 2008          197           26.235        31.245        18.415        0 \r\n 2008          198           19.605        28.601        19.565        0 \r\n 2008          199           14.289        30.373        19.182        29.413 \r\n 2008          200           17.132        26.695        19.084        8.56 \r\n 2008          201           19.326        27.637        17.982        28.727 \r\n 2008          202           25.35         30.244        17.721        0 \r\n 2008          203           23.024        27.954        17.424        10.744 \r\n 2008          204           27.69         27.577        15.567        0 \r\n 2008          205           24.679        25.714        14.646        0 \r\n 2008          206           12.355        20.824        16.523        6.045 \r\n 2008          207           15.314        27.288        18.643        0 \r\n 2008          208           24.291        27.694        15.179        0 \r\n 2008          209           15.565        28.277        15.882        13.437 \r\n 2008          210           24.245        29.331        18.032        0 \r\n 2008          211           18.384        29.884        20.283        4.75 \r\n 2008          212           25.958        30.58         18.91         0 \r\n 2008          213           16.624        29.99         19.39         3.81 \r\n 2008          214           26.895        27.85         15.9          0 \r\n 2008          215           25.312        27.74         13.22         0 \r\n 2008          216           20.767        28.97         18.79         0 \r\n 2008          217           14.665        29.31         21.12         0.254 \r\n 2008          218           23.602        27.57         15.8          0 \r\n 2008          219           16.781        26.67         13.11         0 \r\n 2008          220           25.603        26.05         14.36         0 \r\n 2008          221           23.783        27.06         12.51         0 \r\n 2008          222           19.774        27.17         16.53         2.54 \r\n 2008          223           23.662        24.23         12.47         0 \r\n 2008          224           23.088        24.94         9.51          0 \r\n 2008          225           11.674        23.66         15.02         0 \r\n 2008          226           21.769        28.32         13.74         0 \r\n 2008          227           19.501        28.35         15.213        0 \r\n 2008          228           24.548        25.7          14.08         0.254 \r\n 2008          229           24.806        26.51         12.2          0 \r\n 2008          230           24.772        27.82         14.49         0 \r\n 2008          231           21.508        29.03         13.95         0 \r\n 2008          232           21.923        30.13         15.81         0 \r\n 2008          233           21.792        28.15         17.5          0 \r\n 2008          234           5.648         21.41         17.54         1.016 \r\n 2008          235           17.76         28.3          19.97         0.762 \r\n 2008          236           24.335        23.2          12.8          0 \r\n 2008          237           24.374        23.88         9.41          0 \r\n 2008          238           24.287        25.11         11.01         0 \r\n 2008          239           21.818        25.18         10.49         0 \r\n 2008          240           10.605        24.53         11.77         0 \r\n 2008          241           18.881        28.15         15.83         9.144 \r\n 2008          242           23.419        26.67         10.81         0 \r\n 2008          243           22.29         29.48         12.08         0 \r\n 2008          244           22.858        28.52         14.39         0 \r\n 2008          245           19.45         30.61         18.02         0 \r\n 2008          246           16.973        29.93         14.68         0 \r\n 2008          247           18.404        19.57         9.75          0 \r\n 2008          248           5.345         15.69         8.82          4.064 \r\n 2008          249           15.723        22.25         6.288         0.762 \r\n 2008          250           16.475        19.62         7.86          0.254 \r\n 2008          251           14.858        21.7          9.22          1.524 \r\n 2008          252           7.66          16.17         7.54          3.556 \r\n 2008          253           22.006        20.68         3.921         0 \r\n 2008          254           14.364        21.59         7.28          0 \r\n 2008          255           7.826         24.78         14.39         12.954 \r\n 2008          256           4.467         19.32         16.46         0.508 \r\n 2008          257           6.687         23.91         15.39         1.524 \r\n 2008          258           8             17.84         11.34         2.286 \r\n 2008          259           15.129        18.11         8.06          0 \r\n 2008          260           20.013        26.75         7.41          0 \r\n 2008          261           19.648        27.99         9.05          0 \r\n 2008          262           17.634        27.07         12.96         0 \r\n 2008          263           18.804        26.29         12.61         0 \r\n 2008          264           17.424        27.28         11.35         0 \r\n 2008          265           18.205        26.92         11.05         0 \r\n 2008          266           9.058         23.27         13.79         0 \r\n 2008          267           15.355        27.82         17.11         2.54 \r\n 2008          268           15.429        25.39         13.29         18.034 \r\n 2008          269           16.27         26.31         9.66          0 \r\n 2008          270           17.105        27.91         13.5          0 \r\n 2008          271           16.12         25.09         12.97         0 \r\n 2008          272           9.938         21.96         11.59         0 \r\n 2008          273           12.261        20.22         9.3           12.7 \r\n 2008          274           16.353        16.96         4.372         0 \r\n 2008          275           12.726        14.76         4.123         0 \r\n 2008          276           17.014        18.46         1.895         0 \r\n 2008          277           16.623        16.58         3.672         0 \r\n 2008          278           16.564        18.73         1.48          0 \r\n 2008          279           10.83         19.91         10.07         0 \r\n 2008          280           11.029        24.92         11.41         0.254 \r\n 2008          281           1.664         16.45         6.695         37.084 \r\n 2008          282           16.035        21.38         3.892         0 \r\n 2008          283           12.134        18.1          2.802         0 \r\n 2008          284           15.219        23.23         8.4           0 \r\n 2008          285           12.33         25.44         10.59         0 \r\n 2008          286           8.942         26.39         15.18         0 \r\n 2008          287           3.207         21.77         5.15          4.318 \r\n 2008          288           9.599         13.31         1.561         5.08 \r\n 2008          289           8.532         13.37         1.695         11.684 \r\n 2008          290           14.684        13.08        -0.367         0 \r\n 2008          291           3.85          8.84          3.175         1.524 \r\n 2008          292           12.571        13.66        -1.233         0 \r\n 2008          293           11.642        20.95         6.694         0 \r\n 2008          294           12.798        14.77         2.22          0 \r\n 2008          295           10.298        11.12        -0.821         0 \r\n 2008          296           1.12          9             5.237         2.032 \r\n 2008          297           1.919         7.78          5.381         3.302 \r\n 2008          298           5.727         10.41         4.123         0 \r\n 2008          299           11.509        16.79         1.685         0 \r\n 2008          300           6.594         11.28        -0.039         0 \r\n 2008          301           9.864         5.266        -4.377         0 \r\n 2008          302           12.427        9.21         -6.312         0 \r\n 2008          303           12.29         14.81        -2.655         0 \r\n 2008          304           11.982        21.33         0.784         0 \r\n 2008          305           10.93         21.33         3.826         0 \r\n 2008          306           8.715         15.42         4.91          0 \r\n 2008          307           7.733         20.78         8.72          0 \r\n 2008          308           10.525        23.82         9.43          0 \r\n 2008          309           9.925         22.61         12.59         0 \r\n 2008          310           3.554         18.78         10.87         3.81 \r\n 2008          311           4.189         13.32         4.055         15.494 \r\n 2008          312           2.912         4.343        -0.788         0 \r\n 2008          313           1.977         0.783        -1.235         0 \r\n 2008          314           2.661        -1.101        -5.142         0 \r\n 2008          315           8.512         1.248        -6.403         0 \r\n 2008          316           0.955         3.06         -1.489         0 \r\n 2008          317           1.987         6.279         3.07          11 \r\n 2008          318           3.286         10.85         2.468         0 \r\n 2008          319           2.42          6.801        -0.201         6 \r\n 2008          320           3.149         0.801        -5.502         2.5 \r\n 2008          321           4.948         3.251        -5.434         0 \r\n 2008          322           7.889         1.057        -7.85          0 \r\n 2008          323           8.237         0.142        -10.84         0 \r\n 2008          324           6.418         5.613        -4.686         0 \r\n 2008          325           6.328        -1.408        -10            0 \r\n 2008          326           8.17         -4.068        -14.94         0 \r\n 2008          327           4.966         0.429        -5.883         1 \r\n 2008          328           5.93          5.055        -7.45          0 \r\n 2008          329           8.461         4.627        -3.913         0 \r\n 2008          330           7.749         2.106        -10.51         0 \r\n 2008          331           7.666         5.984        -7.56          0 \r\n 2008          332           5.372         5.726        -7.89          0 \r\n 2008          333           8.106         7.73         -6.53          0 \r\n 2008          334           3.796         4.43         -8.46          0 \r\n 2008          335           2.362         0.514        -4.202         5 \r\n 2008          336           8.154        -4.183        -14.09         5 \r\n 2008          337           6.916         0.333        -16.01         0 \r\n 2008          338           6.656         0.322        -13.96         0 \r\n 2008          339           7.624        -7.23         -18.2          0 \r\n 2008          340           6.913        -0.944        -18.47         0 \r\n 2008          341           7.591        -0.111        -18.25         0 \r\n 2008          342           3.051        -9.37         -18.51         0 \r\n 2008          343           2.763        -2.731        -11.08         0 \r\n 2008          344           4.398        -4.618        -16            11 \r\n 2008          345           5.459        -7.01         -19.77         0 \r\n 2008          346           6.958        -6.175        -10.2          0 \r\n 2008          347           4.855        -5.595        -19.56         0 \r\n 2008          348           7.102         4.857        -5.566         0 \r\n 2008          349           1.857         7.18         -20.03         0 \r\n 2008          350           7.48         -17.29        -21.22         0 \r\n 2008          351           2.634        -14.08        -21.46         0 \r\n 2008          352           2.841        -12.84        -21.46         6.5 \r\n 2008          353           5.309        -7.69         -18.67         0 \r\n 2008          354           5.936        -5.413        -9.42          16 \r\n 2008          355           3.606        -4.609        -22.39         0.25 \r\n 2008          356           7.114        -18.89        -24.22         3.5 \r\n 2008          357           7.682        -15.09        -27.23         0 \r\n 2008          358           5.189        -3.169        -15.09         0 \r\n 2008          359           7.197        -6.029        -22.65         1 \r\n 2008          360           5.699        -3.72         -23.74         1 \r\n 2008          361           2.732         5.883        -3.865         2 \r\n 2008          362           2.732         5.883        -3.865         0 \r\n 2008          363           7.48         -0.896        -12.35         0 \r\n 2008          364           7.354         2.089        -8.57          0 \r\n 2008          365           2.903        -2.249        -13.88         0 \r\n 2008          366           7.936        -9.23         -21.77         0 \r\n 2009          1             4.339        -1.532        -10.41         0 \r\n 2009          2             7.179        -4.763        -13.99         0 \r\n 2009          3             1.914        -0.959        -10.29         0 \r\n 2009          4             6.611        -2.336        -16.72         2.29 \r\n 2009          5             6.172        -2.038        -17.66         0 \r\n 2009          6             6.517        -1.965        -11.79         0 \r\n 2009          7             5.58         -8.27         -15.91         0 \r\n 2009          8             7.985        -9.68         -17.99         0 \r\n 2009          9             4.664        -6.559        -10.64         8.14 \r\n 2009          10            8.016        -8.52         -17.11         1.5 \r\n 2009          11            6.041        -6.097        -15.5          1.5 \r\n 2009          12            3.904        -5.179        -16.88         0 \r\n 2009          13            8.317        -15.08        -27.12         3.4 \r\n 2009          14            8.937        -17.61        -29.48         4 \r\n 2009          15            9.574        -23.75        -32.17         0 \r\n 2009          16            8.525        -13.49        -33.28         0 \r\n 2009          17            4.749        -4.463        -13.49         0 \r\n 2009          18            4.628        -2.899        -11.72         0 \r\n 2009          19            6.584        -7.81         -15.97         1 \r\n 2009          20            8.732        -6.773        -15.69         0 \r\n 2009          21            7.874        -5.13         -14.56         0 \r\n 2009          22            9.083         0            -15.85         0 \r\n 2009          23            8.518        -6.254        -20.7          0 \r\n 2009          24            10.26        -16.59        -25.48         0 \r\n 2009          25            9.727        -13.06        -19.43         0 \r\n 2009          26            7.286        -12.62        -19.25         0 \r\n 2009          27            8.054        -11.96        -20.77         0 \r\n 2009          28            7.887        -3.884        -22.98         0 \r\n 2009          29            10.516       -2.73         -14.78         0 \r\n 2009          30            10.411       -7.03         -20.06         0 \r\n 2009          31            10.36         3.229        -8.13          0 \r\n 2009          32            11.005        1.077        -7.01          0 \r\n 2009          33            10.869       -6.312        -18.96         0 \r\n 2009          34            11.702       -12.6         -20.31         0 \r\n 2009          35            11.714       -10.21        -22.77         0 \r\n 2009          36            11.181       -1.229        -13.52         0 \r\n 2009          37            10.754        5.826        -10.72         0 \r\n 2009          38            11.619        4.998        -2.838         0 \r\n 2009          39            11.877        1.963        -8.5           0 \r\n 2009          40            4.615         9.06         -0.952         0 \r\n 2009          41            12.361        10.47         1.621         1 \r\n 2009          42            3.367         1.669        -1.044         0 \r\n 2009          43            11.771        3.26         -3.268         0 \r\n 2009          44            5.031        -2.99         -6.549         0 \r\n 2009          45            13.295       -1.592        -9.37          0 \r\n 2009          46            12.601       -2.528        -12.16         0 \r\n 2009          47            10.86         1.477        -11.55         0 \r\n 2009          48            8.224         5.83         -4.869         0 \r\n 2009          49            4.137         0.516        -11.68         1.9 \r\n 2009          50            14.397       -6.499        -14.96         0 \r\n 2009          51            12.83         0.963        -14.44         0 \r\n 2009          52            12.572       -4.289        -14.14         5.5 \r\n 2009          53            15.258       -7.86         -17.56         0 \r\n 2009          54            14.547       -4.045        -18.85         0 \r\n 2009          55            14.059        7.54         -6.392         0 \r\n 2009          56            14.666        7.48         -1.654         0 \r\n 2009          57            2.511         1.964        -6.411         0 \r\n 2009          58            15.64        -5.232        -11.14         15.58 \r\n 2009          59            15.407       -5.126        -11.55         0 \r\n 2009          60            16.679       -7.2          -14.83         0 \r\n 2009          61            16.349       -2.538        -13.01         0 \r\n 2009          62            7.196        -1.711        -9.05          0 \r\n 2009          63            16.032        8.42         -6.333         0 \r\n 2009          64            13.694        18.71        -0.685         0 \r\n 2009          65            15.754        11.47        -1.254         0 \r\n 2009          66            2.977         4.335         0.06          1.3 \r\n 2009          67            3.154         1.449        -0.998         1.3 \r\n 2009          68            4.1           1.718        -0.778         20.3 \r\n 2009          69            2.316         4.23         -13.5          3.05 \r\n 2009          70            18.084       -9.46         -15.73         0.25 \r\n 2009          71            18.53        -3.679        -16.99         0 \r\n 2009          72            14.489        4.954        -7.88          0 \r\n 2009          73            18.931        9.9          -5.55          0 \r\n 2009          74            18.28         14.67        -1.889         0 \r\n 2009          75            18.127        19.55         0.934         0 \r\n 2009          76            18.532        17.71         3.119         0 \r\n 2009          77            16.153        13.03        -0.09          0 \r\n 2009          78            19.615        7.03         -3.547         0 \r\n 2009          79            12.045        10.31        -1.263         0 \r\n 2009          80            19.435        18.94         0.052         0 \r\n 2009          81            6.38          12.3          3.587         0 \r\n 2009          82            8.283         16.37         7.28          8.89 \r\n 2009          83            5.077         14.18         1.782         6.858 \r\n 2009          84            5.06          4.009        -2.645         0 \r\n 2009          85            13.095        5.165        -4.579         0 \r\n 2009          86            19.161        0.505        -5.941         0 \r\n 2009          87            8.028         2.117        -5.463         0 \r\n 2009          88            22.086        6.197        -4.841         0 \r\n 2009          89            20.223        10.48        -1.68          0 \r\n 2009          90            10.82         10.96        -0.102         0 \r\n 2009          91            17.104        9.55         -0.919         0 \r\n 2009          92            14.05         8.13         -4.579         0 \r\n 2009          93            23.08         10.57        -4.482         0 \r\n 2009          94            6.973         7.88         -1.34          0 \r\n 2009          95            7.863         4.028        -0.637         0 \r\n 2009          96            20.932        5.483        -1.538         0 \r\n 2009          97            23.863        9.52         -4.105         0 \r\n 2009          98            23.533        11.51        -3.124         0 \r\n 2009          99            19.642        12.37        -3.201         0 \r\n 2009          100           20.772        12.13        -0.32          0 \r\n 2009          101           23.634        15.06        -2.329         0 \r\n 2009          102           19.876        13.94        -1.548         0 \r\n 2009          103           6.139         10.28         2.86          0.254 \r\n 2009          104           23.589        17.52         2.679         0 \r\n 2009          105           25.362        18.82         0.442         0 \r\n 2009          106           21.764        20.3          3.014         0 \r\n 2009          107           24.512        22.39         4.191         0 \r\n 2009          108           5.959         17.85         6.696         8.89 \r\n 2009          109           6.26          11.71         1.058         0 \r\n 2009          110           10.128        8.66         -0.284         0.762 \r\n 2009          111           25.397        14.4          1.134         0 \r\n 2009          112           25.852        18.78         2.24          0 \r\n 2009          113           21.502        26.02         6.845         0 \r\n 2009          114           23.351        30.59         10.05         1.016 \r\n 2009          115           3.867         10.05         6.173         22.86 \r\n 2009          116           3.887         18.11         6.714         75.438 \r\n 2009          117           9.979         14.27         3.511         10.414 \r\n 2009          118           24.575        15.37         3.108         0 \r\n 2009          119           8.158         14.15         6.917         5.842 \r\n 2009          120           9.125         18.84         7.07          2.286 \r\n 2009          121           20.929        15.26         6.163         0 \r\n 2009          122           24.802        18.39         3.051         0 \r\n 2009          123           26.76         20.97         3.023         0 \r\n 2009          124           20.695        22.14         7.23          0 \r\n 2009          125           17.771        23            10.68         17.78 \r\n 2009          126           11.078        19.35         11.56         5.842 \r\n 2009          127           16.69         20.04         10.88         0.254 \r\n 2009          128           15.8          22.45         8.73          23.876 \r\n 2009          129           20.21         14.92         6.608         2.54 \r\n 2009          130           25.228        14.17         4.478         0 \r\n 2009          131           28.428        18.79         2.288         0 \r\n 2009          132           19.202        22.64         7.17          17.272 \r\n 2009          133           4.651         16.93         9.34          5.588 \r\n 2009          134           21.555        17.52         5.97          0 \r\n 2009          135           5.264         16.33         8.87          9.906 \r\n 2009          136           29.388        13.86         3.587         0 \r\n 2009          137           25.018        17.57         0.955         0 \r\n 2009          138           25.132        23.87         9.94          0 \r\n 2009          139           27.535        30.9          12.1          0 \r\n 2009          140           28.011        29.92         15.83         0 \r\n 2009          141           23.388        22.76         14.09         0 \r\n 2009          142           8.486         20.67         14.14         0 \r\n 2009          143           12.21         22.87         13.82         16.51 \r\n 2009          144           29.167        23.59         11.05         0 \r\n 2009          145           22.124        23.48         11.84         7.874 \r\n 2009          146           9.124         19.11         11.58         14.986 \r\n 2009          147           5.121         13.99         10.54         8.382 \r\n 2009          148           20.721        22.3          10.37         0 \r\n 2009          149           26.237        23.61         11.56         0 \r\n 2009          150           29.375        23.09         11.12         0 \r\n 2009          151           24.091        25.84         6.976         0 \r\n 2009          152           22.817        24.8          14            0 \r\n 2009          153           19.464        24.15         12.97         0 \r\n 2009          154           29.885        20.84         10.07         0 \r\n 2009          155           29.775        23.93         8.02          0 \r\n 2009          156           27.938        27.88         11.56         0 \r\n 2009          157           4.097         14.79         11.28         1.524 \r\n 2009          158           15.911        24.03         10.18         31.242 \r\n 2009          159           6.48          16.82         9.62          3.81 \r\n 2009          160           19.683        19.82         7.56          0 \r\n 2009          161           16.821        22.4          12.35         0 \r\n 2009          162           24.18         22.82         13.3          0 \r\n 2009          163           19.888        23.43         10.96         2.54 \r\n 2009          164           22.268        23.69         12.87         0.254 \r\n 2009          165           23.042        25.8          12.41         0 \r\n 2009          166           13.654        24.43         13.98         0.254 \r\n 2009          167           5.118         19.66         16.57         8.89 \r\n 2009          168           23.807        29.27         15.66         0.254 \r\n 2009          169           16.997        29.2          18.75         9.652 \r\n 2009          170           11.686        27.32         18.59         0.508 \r\n 2009          171           27.527        29.45         17.17         0 \r\n 2009          172           11.924        27.79         19.79         13.97 \r\n 2009          173           29.493        32.98         19.58         0 \r\n 2009          174           17.774        33.8          18.14         7.366 \r\n 2009          175           14.137        27.26         16.42         1.524 \r\n 2009          176           25.843        31.87         19.55         2.032 \r\n 2009          177           27.569        30.8          17.59         0 \r\n 2009          178           17.754        29.05         18.99         0.254 \r\n 2009          179           30.039        26.2          13.37         0 \r\n 2009          180           29.049        24.35         13.81         0 \r\n 2009          181           14.064        20.3          14.22         0 \r\n 2009          182           15.367        21.95         13.4          0 \r\n 2009          183           26.751        26.28         10.8          0 \r\n 2009          184           17.806        25.79         13.61         1.016 \r\n 2009          185           8.313         21.58         15.99         5.588 \r\n 2009          186           29.665        27.06         14.95         0 \r\n 2009          187           25.72         28.36         15.04         0 \r\n 2009          188           13.472        25.33         16.1          0 \r\n 2009          189           10.009        20.48         15            2.54 \r\n 2009          190           14.812        24.04         13.77         2.032 \r\n 2009          191           20.616        27.92         17.44         55.88 \r\n 2009          192           28.26         25.56         16.39         0 \r\n 2009          193           15.374        25.27         15.16         0 \r\n 2009          194           26.689        26.15         14.36         0 \r\n 2009          195           12.893        23.82         18.52         17.78 \r\n 2009          196           28.609        24.95         15.36         0 \r\n 2009          197           24.272        21.48         11.74         0 \r\n 2009          198           12.005        17.14         10.27         0 \r\n 2009          199           17.661        19.42         11.84         0 \r\n 2009          200           24.624        22.86         11.38         0 \r\n 2009          201           23.906        24.18         11.07         0 \r\n 2009          202           15.087        22.38         14.04         0 \r\n 2009          203           24.099        26.52         12.61         0 \r\n 2009          204           27.425        27.19         12.42         0 \r\n 2009          205           19.769        28.76         14.61         0 \r\n 2009          206           22.549        24.41         13.11         0 \r\n 2009          207           25.834        26.36         13.96         0 \r\n 2009          208           22.267        29.04         14.91         0 \r\n 2009          209           26.71         24.12         13.01         0 \r\n 2009          210           25.616        24.83         10.32         0 \r\n 2009          211           21.435        23.21         14.02         3.302 \r\n 2009          212           26.146        25.1          10.64         0 \r\n 2009          213           23.474        21.6          11.6          0.254 \r\n 2009          214           26.304        27.6          9.95          0 \r\n 2009          215           24.465        28.39         15.01         0 \r\n 2009          216           24.889        25.07         12.73         0 \r\n 2009          217           24.647        24.96         10.53         0 \r\n 2009          218           21.337        25.87         12.98         0.508 \r\n 2009          219           4.214         22.45         16.67         22.098 \r\n 2009          220           20.384        31.09         19.52         5.842 \r\n 2009          221           7.685         25.48         19.55         3.556 \r\n 2009          222           20.204        28.26         17.78         7.366 \r\n 2009          223           24.447        27.92         15.16         0.254 \r\n 2009          224           24.994        28.72         15.55         0 \r\n 2009          225           19.654        29.64         18.39         12.954 \r\n 2009          226           23.982        30.05         20.64         0 \r\n 2009          227           14.791        26.23         17.85         0.254 \r\n 2009          228           17.063        26.01         17.24         7.62 \r\n 2009          229           17.392        25.26         15.63         0 \r\n 2009          230           24.68         24.55         12.52         0 \r\n 2009          231           9.978         23.2          14.86         17.272 \r\n 2009          232           14.527        21.8          14.99         5.08 \r\n 2009          233           12.398        20.51         13.29         5.334 \r\n 2009          234           24.981        22.28         10.75         0 \r\n 2009          235           24.003        24.4          8.66          0 \r\n 2009          236           23.86         25.43         12.38         0 \r\n 2009          237           13.596        27.28         16.27         0 \r\n 2009          238           12.359        22.67         16.13         4.064 \r\n 2009          239           4.082         17.59         14.98         0.254 \r\n 2009          240           20.596        24.72         12.58         0 \r\n 2009          241           22.781        18.62         9.03          0 \r\n 2009          242           21.412        18.62         7.76          0 \r\n 2009          243           22.074        20.77         5.486         0 \r\n 2009          244           20.184        21.1          5.939         0 \r\n 2009          245           22.077        22.82         7.82          0 \r\n 2009          246           19.298        22.94         7.97          0 \r\n 2009          247           20.723        25.07         8.3           0 \r\n 2009          248           20.146        25.59         11.14         0 \r\n 2009          249           20.11         25.46         9             0 \r\n 2009          250           17.662        25.92         11.62         0 \r\n 2009          251           19.314        25.48         12.99         0 \r\n 2009          252           18.766        26.63         11.45         0 \r\n 2009          253           17.72         26.82         12.77         0 \r\n 2009          254           15.01         26.99         13.56         0 \r\n 2009          255           18.6          27.17         14.02         0 \r\n 2009          256           16.776        27.5          11.89         0 \r\n 2009          257           16.487        25.81         9.64          0 \r\n 2009          258           18.481        27.21         11.14         0 \r\n 2009          259           18.29         27.07         13.54         0 \r\n 2009          260           17.065        24.78         11.57         0 \r\n 2009          261           18.032        27.64         9.84          0 \r\n 2009          262           15.577        26.48         13.07         0 \r\n 2009          263           14.932        25.16         12.52         0 \r\n 2009          264           6.593         21.41         11.02         15.24 \r\n 2009          265           2.967         17.33         14.83         6.35 \r\n 2009          266           8.997         23.47         14.5          0 \r\n 2009          267           5.384         21.43         15.38         0.762 \r\n 2009          268           6.623         20.1          11.94         27.686 \r\n 2009          269           10.67         21.79         9.54          0 \r\n 2009          270           15.282        24.54         9.66          0 \r\n 2009          271           10.445        15.11         9.22          0 \r\n 2009          272           17.975        15.27         3.002         0 \r\n 2009          273           17.041        17.57         3.098         0 \r\n 2009          274           0.797         13.14         8.46          40.894 \r\n 2009          275           5.392         10.54         6.646         2.54 \r\n 2009          276           5.979         10.06         4.784         0.762 \r\n 2009          277           5.599         10.69         1.819         0 \r\n 2009          278           5.117         11.86         2.487         3.302 \r\n 2009          279           5.396         13.06         5.728         10.414 \r\n 2009          280           16.018        18.32         1.029         0 \r\n 2009          281           4.018         10.53         4.18          0.762 \r\n 2009          282           11.943        9.4          -2.024         0 \r\n 2009          283           12.103        4.916        -3.943         0 \r\n 2009          284           8.467         4.362        -5.5           0 \r\n 2009          285           2.356         3.289        -2.034         0 \r\n 2009          286           11.048        6.824        -4.367         0 \r\n 2009          287           2.471         5.892         1.056         5.08 \r\n 2009          288           2.478         4.968         1.981         4.572 \r\n 2009          289           11.634        9.22         -0.357         0 \r\n 2009          290           6.073         8.84         -1.584         0 \r\n 2009          291           13.788        14.94        -2.09          0 \r\n 2009          292           13.097        20.55         4.65          0 \r\n 2009          293           5.084         17.47         8.69          0.254 \r\n 2009          294           3.84          18.48         6.752         6.35 \r\n 2009          295           1.42          6.772         3.711         28.956 \r\n 2009          296           1.8           4.439         1.428         22.352 \r\n 2009          297           11.563        13.4         -1.326         4.826 \r\n 2009          298           4.697         10.39         2.85          0 \r\n 2009          299           4.78          9.99         -0.106         0 \r\n 2009          300           12.835        12.3         -2.272         0 \r\n 2009          301           2.288         12.25         3.952         0 \r\n 2009          302           0.861         13            9.8           28.956 \r\n 2009          303           4.461         16.16         2.402         1.016 \r\n 2009          304           8.929         8.17         -0.63          0 \r\n 2009          305           9.169         16.29        -0.401         0 \r\n 2009          306           11.702        11.53        -1.288         0 \r\n 2009          307           8.24          8.74         -5.142         1.524 \r\n 2009          308           5.761         8.11         -2.55          0 \r\n 2009          309           10.614        14.25        -4.997         0 \r\n 2009          310           9.099         19.29         5.575         0 \r\n 2009          311           10.405        19.97         3.953         0 \r\n 2009          312           9.805         21.26         4.569         0 \r\n 2009          313           9.896         16.94         3.946         0 \r\n 2009          314           10.015        16.27         2.042         0 \r\n 2009          315           8.977         13.66        -1.049         0 \r\n 2009          316           4.363         11.15         0.452         0 \r\n 2009          317           2.355         12.36         6.563         0 \r\n 2009          318           3.18          10.47        -1.004         0 \r\n 2009          319           5.345         6.838        -3.788         0 \r\n 2009          320           6.339         8.95         -0.034         0 \r\n 2009          321           8.535         10.37        -0.652         0 \r\n 2009          322           1.653         6.942         1.631         0 \r\n 2009          323           3.252         9.36         -0.693         0 \r\n 2009          324           6.643         11.21        -1.787         0 \r\n 2009          325           5.29          10.16        -2.253         0 \r\n 2009          326           3.629         13.52         7.58          0 \r\n 2009          327           4.127         11.35         6.048         3.56 \r\n 2009          328           0.79          8.07          6.201         0 \r\n 2009          329           2.159         6.762         0.499         7.11 \r\n 2009          330           1.742         1.224        -4.909         1.02 \r\n 2009          331           6.215         4.574        -6.069         0 \r\n 2009          332           7.568         12.94        -3.288         0 \r\n 2009          333           3.23          4.721        -0.348         0 \r\n 2009          334           7.647         7.37         -4.435         0 \r\n 2009          335           7.57          11.56        -3.154         0 \r\n 2009          336           6.156         2.068        -2.77          0 \r\n 2009          337           3.23         -2.152        -9.02          0 \r\n 2009          338           4.629        -6.924        -14.82         0.25 \r\n 2009          339           6.856         1.41         -12.9          0 \r\n 2009          340           5.149        -2.248        -9.06          0 \r\n 2009          341           6.38         -3.966        -9.09          1.5 \r\n 2009          342           3.352        -4.107        -8.15          1.1 \r\n 2009          343           4.753        -4.928        -20.34         15.5 \r\n 2009          344           7.678        -13.44        -22.87         3 \r\n 2009          345           7.135        -8.16         -20.67         0 \r\n 2009          346           6.781        -0.686        -16.27         0 \r\n 2009          347           3.116        -0.616        -5.385         0 \r\n 2009          348           5.217        -1.521        -18.37         0.8 \r\n 2009          349           7.849        -15.19        -22.37         0.8 \r\n 2009          350           6.662        -10.01        -22.25         0 \r\n 2009          351           4.876        -4.457        -11.97         0 \r\n 2009          352           4.3          -2.047        -11.2          0 \r\n 2009          353           3.976        -3.751        -6.609         0 \r\n 2009          354           3.562        -4.881        -7.13          0 \r\n 2009          355           3.546        -5.98         -8.33          3.5 \r\n 2009          356           2.943        -1.817        -6.147         4 \r\n 2009          357           1.71         -0.196        -2.142         0 \r\n 2009          358           1.747         1.272        -0.187         10.5 \r\n 2009          359           1.84          2.129        -9.86          21.9 \r\n 2009          360           7.783        -6.938        -14.51         6.11 \r\n 2009          361           6.215        -4.608        -16.38         1.5 \r\n 2009          362           7.177        -4.541        -15.71         0 \r\n 2009          363           7.261        -8.69         -19.22         0 \r\n 2009          364           4.317        -1.912        -10.52         0 \r\n 2009          365           7.834        -10.54        -19.57         2.5 \r\n 2010          1             7.516        -16.81        -24.58         0 \r\n 2010          2             8.33         -18.99        -29.04         0 \r\n 2010          3             8.199        -15.24        -27.51         0 \r\n 2010          4             8.106        -17.12        -25.13         0 \r\n 2010          5             8.221        -16.12        -25.05         0 \r\n 2010          6             5.201        -8.89         -23.59         0 \r\n 2010          7             5.317        -9.6          -15.94         4.9 \r\n 2010          8             8.026        -15.22        -23.43         3 \r\n 2010          9             8.452        -16.29        -26.25         0 \r\n 2010          10            6.97         -8.34         -24.4          0 \r\n 2010          11            6.701        -6.983        -11.82         0 \r\n 2010          12            6.775        -7.62         -14.68         0 \r\n 2010          13            8.241         1.263        -11.93         0 \r\n 2010          14            5.77         -2.722        -7.35          0 \r\n 2010          15            4.488        -1.396        -5.346         0 \r\n 2010          16            7.616        -2.708        -8.15          0 \r\n 2010          17            4.85         -2.649        -5.706         0 \r\n 2010          18            6.323        -4.705        -13.04         0 \r\n 2010          19            5.86         -6.826        -11.48         0 \r\n 2010          20            3.819        -1.903        -11.09         0 \r\n 2010          21            2.47         -0.863        -2.448         0 \r\n 2010          22            3.824         0.053        -2.324         0 \r\n 2010          23            3.824         0            -2.324         0 \r\n 2010          24            5.749         1.12         -3.462         12.19 \r\n 2010          25            5.588        -1.426        -11.75         1.1 \r\n 2010          26            10.018       -11.64        -16.51         0 \r\n 2010          27            8.344        -7.07         -16.75         0 \r\n 2010          28            10.197       -14.48        -20.42         0 \r\n 2010          29            10.247       -12.74        -22.12         0 \r\n 2010          30            8.527        -8.24         -16.63         0 \r\n 2010          31            10.822       -9.76         -16.88         0 \r\n 2010          32            5.876        -4.067        -12.76         0 \r\n 2010          33            5.373        -3.654        -18            5.5 \r\n 2010          34            11.031       -4.922        -19.05         0 \r\n 2010          35            6.459        -0.424        -6.441         0 \r\n 2010          36            6.71          1.882        -3.243         0 \r\n 2010          37            8.713        -1.464        -8.65          0 \r\n 2010          38            7.932        -5.009        -10.09         0 \r\n 2010          39            7.021        -3.724        -12.98         5 \r\n 2010          40            10.685       -4.447        -8             12 \r\n 2010          41            13.44        -7.41         -21.42         0 \r\n 2010          42            11.361       -7.34         -22.8          0 \r\n 2010          43            9.047        -4.322        -10.34         0.7 \r\n 2010          44            10.313       -7.24         -14.85         0 \r\n 2010          45            13.584       -8.49         -18.55         0 \r\n 2010          46            10.102       -4.457        -9.63          1.8 \r\n 2010          47            14.485       -4.453        -10.97         0 \r\n 2010          48            13.586       -4.495        -12.29         0 \r\n 2010          49            14.469       -4.149        -15.89         0 \r\n 2010          50            9.454        -2.851        -16.64         0 \r\n 2010          51            11.45         0.508        -9.38          2 \r\n 2010          52            11.026       -2.151        -13.61         0 \r\n 2010          53            14.088       -2.96         -15.08         0 \r\n 2010          54            11.898       -6.958        -18.67         0 \r\n 2010          55            16.269       -10.44        -20.66         0 \r\n 2010          56            16.406       -4.889        -22            0 \r\n 2010          57            16.124       -3.181        -19.78         0 \r\n 2010          58            15.885       -2.04         -15.16         0 \r\n 2010          59            16.729       -0.109        -12.86         0 \r\n 2010          60            16.797        0.016        -10.35         0 \r\n 2010          61            16.338        1.52         -11.9          0 \r\n 2010          62            17.511        1.901        -11.47         0 \r\n 2010          63            17.256        1.758        -13.54         0 \r\n 2010          64            17.852        4.531        -11.69         0 \r\n 2010          65            14.743        3.994        -6.658         0 \r\n 2010          66            11.718        5.627        -0.815         6.5 \r\n 2010          67            6.339         1.609         0.1           0 \r\n 2010          68            4.569         3.866         0.481         12 \r\n 2010          69            4.418         5.255         1.262         3.2 \r\n 2010          70            7.888         11.06         1.825         0 \r\n 2010          71            6.667         7.65          1.205         0 \r\n 2010          72            2.885         6.008         2.885         0 \r\n 2010          73            17.254        14.07         3.789         0 \r\n 2010          74            18.512        15.06         0.29          0 \r\n 2010          75            5.143         6.15          1.672         0 \r\n 2010          76            16.12         14.57         1.768         2.1 \r\n 2010          77            18.016        17.12        -0.301         0 \r\n 2010          78            4.582         6.817        -1.178         0 \r\n 2010          79            17.039        4.409        -3.672         0 \r\n 2010          80            20.75         9.55         -6.069         0 \r\n 2010          81            20.173        13.62        -3.846         0 \r\n 2010          82            19.635        15.2         -0.968         0 \r\n 2010          83            8.287         12.24         1.215         0 \r\n 2010          84            20.531        7.09         -3.884         0 \r\n 2010          85            19.762        9.9          -5.21          0 \r\n 2010          86            6.646         9.45          1.739         0 \r\n 2010          87            20.359        11.61        -0.501         0 \r\n 2010          88            21.116        15.09        -2.636         0 \r\n 2010          89            18.636        25.09         4.062         0 \r\n 2010          90            18.064        24.67         9.8           0 \r\n 2010          91            20.527        29.61         9.85          0 \r\n 2010          92            5.182         20.06         6.21          0 \r\n 2010          93            21.013        17.42         0.385         10 \r\n 2010          94            12.55         17.72         6.766         0 \r\n 2010          95            15.879        19.43         1.834         0 \r\n 2010          96            2.637         10.48         7.33          14 \r\n 2010          97            6.138         9.64          3.976         5 \r\n 2010          98            19.587        9.89         -1.481         0 \r\n 2010          99            23.545        19.42        -2.933         0 \r\n 2010          100           14.328        16.96         4.359         0 \r\n 2010          101           23.59         20.14         4.398         0 \r\n 2010          102           2.27          13.26         7.56          0 \r\n 2010          103           18.499        24.03         7.66          0 \r\n 2010          104           20.693        27.24         10.74         0.762 \r\n 2010          105           13.644        26.17         10.36         7.366 \r\n 2010          106           22.947        16.16         4.522         0 \r\n 2010          107           25.095        16.99         0.147         0 \r\n 2010          108           24.642        19.74         1.815         0 \r\n 2010          109           17.723        17.78         5.876         0 \r\n 2010          110           22.887        20.73         3.966         0 \r\n 2010          111           21.08         22.88         4.914         0 \r\n 2010          112           24.468        21.53         4.167         0 \r\n 2010          113           6.541         14.73         9             5.842 \r\n 2010          114           15.598        19.08         10.4          13.97 \r\n 2010          115           2.946         10.97         9.18          0.254 \r\n 2010          116           12.088        14.96         7.63          0 \r\n 2010          117           26.777        15.08         3.796         0 \r\n 2010          118           26.329        19.54         1.309         0 \r\n 2010          119           20.69         26.8          11.63         0 \r\n 2010          120           7.849         20            12.55         28.194 \r\n 2010          121           25.556        19.97         8.96          0.254 \r\n 2010          122           23.517        22.26         8.08          0 \r\n 2010          123           23.702        18.43         6.067         7.112 \r\n 2010          124           24.97         29            7.35          0.508 \r\n 2010          125           26.025        18.24         6.8           0 \r\n 2010          126           19.312        16.61         4.843         3.302 \r\n 2010          127           4.309         11.6          4.162         0 \r\n 2010          128           12.642        9.88          1.659         0.508 \r\n 2010          129           18.609        13.54        -0.83          0.508 \r\n 2010          130           6.817         13.84         6.834         9.652 \r\n 2010          131           6.83          9.44          5.767         9.652 \r\n 2010          132           3.686         9.96          5.622         19.812 \r\n 2010          133           7.882         13.47         6.801         9.398 \r\n 2010          134           27.573        20.26         4.45          0 \r\n 2010          135           21.198        21.7          5.757         0 \r\n 2010          136           23.818        19.81         11.12         0.254 \r\n 2010          137           26.486        22.43         10.75         0 \r\n 2010          138           19.659        20.95         7.96          0 \r\n 2010          139           27.11         25.47         7.62          0 \r\n 2010          140           18.66         23.32         10.13         1.524 \r\n 2010          141           6.275         17.53         11.67         0.254 \r\n 2010          142           22.982        27.15         10.62         0 \r\n 2010          143           13.664        29.97         21.23         0 \r\n 2010          144           24.632        33.47         21.79         0 \r\n 2010          145           20.76         30.78         18.64         4.064 \r\n 2010          146           26.669        28.16         15.33         0 \r\n 2010          147           30.619        28.15         11.9          0 \r\n 2010          148           30.107        29.51         12.3          0 \r\n 2010          149           29.965        31.15         13.54         0 \r\n 2010          150           23.2          33.05         15.73         0 \r\n 2010          151           29.692        26.82         13.98         0.254 \r\n 2010          152           21.338        29.52         12.8          2.54 \r\n 2010          153           17.12         24.95         13.67         0.254 \r\n 2010          154           27.476        25.93         12.77         1.016 \r\n 2010          155           21.509        27.65         17.15         9.652 \r\n 2010          156           12.161        26.62         13.3          13.716 \r\n 2010          157           28.098        25.43         11.8          0 \r\n 2010          158           22.417        26.17         11.91         0 \r\n 2010          159           5.088         22.24         16.24         7.112 \r\n 2010          160           30.362        26.05         14.37         0 \r\n 2010          161           7.973         22.16         14.88         6.35 \r\n 2010          162           17.577        29.56         17.67         14.986 \r\n 2010          163           13.607        25.5          17.02         15.494 \r\n 2010          164           5.39          20.26         16.94         3.302 \r\n 2010          165           5.401         21.2          16.79         0 \r\n 2010          166           16.007        25.05         15.21         6.35 \r\n 2010          167           30.585        27.98         14.21         0 \r\n 2010          168           24.422        30.11         17.09         28.702 \r\n 2010          169           7.683         23.12         16.45         9.906 \r\n 2010          170           28.792        26.29         13.47         0 \r\n 2010          171           20.156        27.81         17.22         0 \r\n 2010          172           12.503        26.62         17.82         0 \r\n 2010          173           28.268        31.53         15.7          0 \r\n 2010          174           24.07         26.95         16.08         38.354 \r\n 2010          175           29.33         28.02         15.79         0 \r\n 2010          176           28.153        29.27         16.02         12.954 \r\n 2010          177           21.976        30.23         19.13         14.478 \r\n 2010          178           21.257        27.21         18.63         17.78 \r\n 2010          179           23.181        21.98         13.46         0 \r\n 2010          180           29.608        23.06         11.64         0 \r\n 2010          181           30.026        25.37         10.9          0 \r\n 2010          182           29.244        26.92         14.6          0 \r\n 2010          183           29.494        28.09         14.58         0 \r\n 2010          184           26.799        30.67         18.12         0 \r\n 2010          185           5.842         24.24         20.57         28.702 \r\n 2010          186           11.994        25.11         20.15         0.508 \r\n 2010          187           22.331        28.3          20.63         0 \r\n 2010          188           11.283        27.03         19.19         24.13 \r\n 2010          189           26.713        26.27         18.31         0 \r\n 2010          190           28.794        29.16         15.5          0 \r\n 2010          191           28.515        28.6          18.25         0 \r\n 2010          192           14.133        26.2          18.11         0.254 \r\n 2010          193           15.646        24.76         16.96         0 \r\n 2010          194           26.386        28.19         17.13         0 \r\n 2010          195           22.524        33.33         22.19         3.556 \r\n 2010          196           28.923        27.9          18            0 \r\n 2010          197           26.877        29.91         17.89         0 \r\n 2010          198           27.822        31.89         15.3          0.762 \r\n 2010          199           26.08         28.29         18.83         0.254 \r\n 2010          200           16.978        25.75         16.28         0 \r\n 2010          201           21.351        28.72         15.25         0 \r\n 2010          202           27.29         29.44         16.63         0 \r\n 2010          203           11.79         28.89         21.13         33.528 \r\n 2010          204           15.485        30.52         20.52         27.178 \r\n 2010          205           21.793        26.39         17.71         24.384 \r\n 2010          206           24.982        28.29         16.1          0 \r\n 2010          207           23.703        29.1          17.59         0 \r\n 2010          208           25.193        31.54         20.92         0 \r\n 2010          209           24.957        26.39         16.51         9.906 \r\n 2010          210           21.405        26.47         14.95         0 \r\n 2010          211           14.695        25.2          18.22         12.954 \r\n 2010          212           23.753        29.38         17.08         0 \r\n 2010          213           23.913        30.27         17.11         0 \r\n 2010          214           21.651        33.333        20.556        0 \r\n 2010          215           21.267        30.52         21.46         0 \r\n 2010          216           24.223        29.82         20.5          0 \r\n 2010          217           25.127        25.51         15.63         0 \r\n 2010          218           20.659        27.4          13.79         0 \r\n 2010          219           22.273        29.26         17.9          0 \r\n 2010          220           21.298        32.59         20.25         25.654 \r\n 2010          221           22.831        30.78         20.41         1.016 \r\n 2010          222           20.435        31.54         20.83         7.112 \r\n 2010          223           23.488        32.59         18.77         2.54 \r\n 2010          224           24.223        33.17         22.02         0 \r\n 2010          225           18.2          30.75         22.08         0 \r\n 2010          226           23.156        30.32         20.09         0.254 \r\n 2010          227           24.747        24.82         14.77         0 \r\n 2010          228           25.056        26.47         12.46         0 \r\n 2010          229           10.338        20.57         14.83         0 \r\n 2010          230           22.241        26.67         15.44         0 \r\n 2010          231           22.778        29.7          17.76         0 \r\n 2010          232           16.334        29.39         19.31         0 \r\n 2010          233           21.585        31.09         18.37         0 \r\n 2010          234           22.854        31.46         16.97         0 \r\n 2010          235           23.473        29.87         18.49         0 \r\n 2010          236           19.576        24.02         12.25         0 \r\n 2010          237           24.004        22.88         10.5          0 \r\n 2010          238           22.919        25.84         9.29          0 \r\n 2010          239           23.208        29.52         14.9          0 \r\n 2010          240           23.619        30.24         15.53         0 \r\n 2010          241           21.963        32.65         15.79         0 \r\n 2010          242           20.84         30.32         21.37         0 \r\n 2010          243           9.591         29.07         19.04         33.528 \r\n 2010          244           18.64         26.05         17.47         0 \r\n 2010          245           8.733         25.35         12.7          7.112 \r\n 2010          246           16.748        18.79         8.79          0.254 \r\n 2010          247           21.796        20.85         5.919         0 \r\n 2010          248           17.684        25.85         8.36          0 \r\n 2010          249           11.559        27.48         13.33         5.08 \r\n 2010          250           14.752        21.4          9.73          0 \r\n 2010          251           20.997        22.28         5.804         0 \r\n 2010          252           15.297        22.91         12.58         1.524 \r\n 2010          253           16.604        25.48         13.07         3.048 \r\n 2010          254           21.267        23.27         12.61         0.254 \r\n 2010          255           20.988        29.76         10.05         0 \r\n 2010          256           21.008        25.61         10.47         0 \r\n 2010          257           20.261        25.85         10.15         0 \r\n 2010          258           15.265        28.05         14.71         0 \r\n 2010          259           6.998         18.96         10.79         1.016 \r\n 2010          260           14.51         25.56         9.2           0 \r\n 2010          261           6.326         16.01         8.98          2.54 \r\n 2010          262           4.875         14.32         9.07          0 \r\n 2010          263           12.958        31.45         11.11         0.254 \r\n 2010          264           3.688         23.6          16.27         2.54 \r\n 2010          265           4.127         21.35         14.58         0 \r\n 2010          266           4.313         26.13         13.5          9.398 \r\n 2010          267           16.569        19.5          8.62          0 \r\n 2010          268           3.293         11.38         5.92          6.096 \r\n 2010          269           19.226        18.33         3.795         0.254 \r\n 2010          270           18.207        22.12         3.491         0 \r\n 2010          271           17.772        21.74         9.71          0 \r\n 2010          272           17.137        28.16         7.67          0 \r\n 2010          273           17.817        22.28         9.47          0 \r\n 2010          274           16.72         23.7          4.995         0.762 \r\n 2010          275           16.456        12.83         1.746         0 \r\n 2010          276           17.401        16.13        -0.392         0 \r\n 2010          277           17.289        18.52         0.942         0 \r\n 2010          278           17.034        22.09         1.99          0 \r\n 2010          279           15.51         25.14         7.03          0 \r\n 2010          280           17.12         25.6          4.793         0 \r\n 2010          281           15.123        29.85         7.88          0 \r\n 2010          282           15.231        31.39         12.76         0 \r\n 2010          283           13.096        27.3          11.13         0 \r\n 2010          284           14.573        27.21         10.48         0 \r\n 2010          285           13.46         27.25         10.01         0 \r\n 2010          286           14.792        18.95         4.256         0 \r\n 2010          287           14.611        23.02         1.146         0 \r\n 2010          288           14.869        18.33         2.066         0 \r\n 2010          289           13.69         21.64         5.525         0 \r\n 2010          290           13.362        17.37         2.01          0 \r\n 2010          291           14.055        15.48         2.258         0 \r\n 2010          292           12.783        17.43        -0.025         0 \r\n 2010          293           13.471        21.71         3.471         0 \r\n 2010          294           13.506        13.49         0.165         0 \r\n 2010          295           12.459        20.07        -0.511         0 \r\n 2010          296           4.944         18.18         12.96         1.27 \r\n 2010          297           3.002         16.85         12.12         0 \r\n 2010          298           4.444         18.51         11.53         0 \r\n 2010          299           2.945         17.86         5.314         8.89 \r\n 2010          300           4.991         8.63          3.098         0 \r\n 2010          301           6.116         4.678        -4.203         0 \r\n 2010          302           11.952        14.45        -6.359         0 \r\n 2010          303           11.979        16.75         0.708         0 \r\n 2010          304           10.31         10.21        -1.627         0 \r\n 2010          305           11.904        11.54        -2.55          0 \r\n 2010          306           11.437        13.07        -1.408         0 \r\n 2010          307           10.959        14.43         1.039         0 \r\n 2010          308           9.965         7.96         -3.223         0 \r\n 2010          309           11.517        7.4          -6.812         0 \r\n 2010          310           10.94         12.79        -6.133         0 \r\n 2010          311           10.377        19.18         0.823         0 \r\n 2010          312           10.329        19.1          4.64          0 \r\n 2010          313           9.73          20.93         4.007         0 \r\n 2010          314           8.774         20.79         4.18          0.762 \r\n 2010          315           10.211        12.48        -0.731         0 \r\n 2010          316           0.848         5.198         0.08          30.226 \r\n 2010          317           1.915         6.394         0.266         8.128 \r\n 2010          318           2.321         2.191        -1.389         0 \r\n 2010          319           8.743         9.31         -3.271         0 \r\n 2010          320           2.556         5.535        -1.971         0.762 \r\n 2010          321           8.512         4.678        -1.276         0 \r\n 2010          322           5.619         1.609        -3.012         0 \r\n 2010          323           3.414         4.535        -3.521         0 \r\n 2010          324           7.419         1.685        -5.259         0 \r\n 2010          325           0.792         9.54          0.475         0 \r\n 2010          326           1.687         1.943        -5.883         1 \r\n 2010          327           8.682        -3.038        -10.97         2.29 \r\n 2010          328           1.48          0.068        -6.802         0 \r\n 2010          329           8.359        -0.229        -10.4          3 \r\n 2010          330           3.354        -0.771        -12.05         0 \r\n 2010          331           7.453         1.829        -10.95         0 \r\n 2010          332           7.646         10.21        -3.751         0 \r\n 2010          333           1.443         6.588        -1.641         0 \r\n 2010          334           1.352        -0.366        -3.903         7 \r\n 2010          335           7.701        -4.728        -9.91          0 \r\n 2010          336           2.3          -2.297        -10.25         0 \r\n 2010          337           1.591        -5.317        -13.18         0 \r\n 2010          338           6.576        -5.076        -11.66         6.5 \r\n 2010          339           8.038        -10.42        -17.34         0 \r\n 2010          340           7.679        -7.9          -16.72         0 \r\n 2010          341           7.52         -9.56         -18.93         0 \r\n 2010          342           7.664        -6.715        -18.13         0 \r\n 2010          343           2.923        -0.306        -11.98         0 \r\n 2010          344           5.513         1.342        -7.15          1.2 \r\n 2010          345           0.869         2.172        -8.64          8 \r\n 2010          346           8.167        -8.66         -19.17         18 \r\n 2010          347           8.368        -15.32        -21.98         0 \r\n 2010          348           5.195        -10.63        -21.56         0 \r\n 2010          349           3.6          -8.23         -10.98         0 \r\n 2010          350           3.777        -6.737        -16.49         7.5 \r\n 2010          351           8.272        -10.3         -21.37         1.7 \r\n 2010          352           7.616        -9.35         -18.76         0 \r\n 2010          353           7.314        -9.65         -21.07         0 \r\n 2010          354           2.087        -2.084        -9.69          0 \r\n 2010          355           6.066        -0.761        -10.6          0 \r\n 2010          356           4.503        -0.725        -6.875         0 \r\n 2010          357           4.451        -2.597        -4.948         0 \r\n 2010          358           4.283        -4.099        -7.91          10.41 \r\n 2010          359           5.152        -6.314        -9.91          3.05 \r\n 2010          360           6.572        -8.19         -12.45         0 \r\n 2010          361           6.547        -8.23         -14.31         0 \r\n 2010          362           7.004        -5.295        -13.15         0 \r\n 2010          363           4.187         0.895        -10.98         0 \r\n 2010          364           2.34          6.443        -3.495         0.25 \r\n 2010          365           2.901         0.961        -12.58         0 \r\n 2011          1             7.143        -11.88        -16.52         0.25 \r\n 2011          2             8.093        -5.124        -16.5          0 \r\n 2011          3             5.565        -1.078        -11.38         0 \r\n 2011          4             7.9          -8.84         -17.9          0 \r\n 2011          5             5.005        -1.421        -14.5          0 \r\n 2011          6             5.982        -6.238        -10.24         0.25 \r\n 2011          7             5.795        -7.73         -15.25         0.25 \r\n 2011          8             8.301        -11.5         -18.93         0.51 \r\n 2011          9             5.612        -8.61         -21.29         0 \r\n 2011          10            4.124        -5.414        -8.66          0.25 \r\n 2011          11            6.1          -4.053        -10.08         7 \r\n 2011          12            8.29         -9.26         -21.36         1 \r\n 2011          13            5.729        -9.61         -22.97         0 \r\n 2011          14            5.607        -7.22         -16.8          0 \r\n 2011          15            7.626        -6.934        -18.8          0 \r\n 2011          16            5.988        -8.81         -20.1          0 \r\n 2011          17            4.125        -0.83         -8.92          6.5 \r\n 2011          18            8.711        -4.812        -14.9          1.1 \r\n 2011          19            9.172        -12.63        -19.8          1 \r\n 2011          20            9.446        -11.02        -24.92         0 \r\n 2011          21            8.019        -14.75        -29.5          0 \r\n 2011          22            7.906        -12.63        -21.83         0.25 \r\n 2011          23            9.999        -11.64        -27.17         0 \r\n 2011          24            7.424        -3.029        -12.59         0 \r\n 2011          25            7.825        -7.62         -15.88         0 \r\n 2011          26            6.762        -6.142        -9.57          0 \r\n 2011          27            7.128        -1.173        -8.43          0 \r\n 2011          28            6.831        -0.114        -6.421         0 \r\n 2011          29            5.239        -1.107        -9.48          0 \r\n 2011          30            6.212        -3.878        -10.63         2 \r\n 2011          31            6.495        -5.628        -9.27          1.5 \r\n 2011          32            6.075        -9.27         -11.85         6.5 \r\n 2011          33            10.464       -11.69        -22.83         3 \r\n 2011          34            11.955       -8.17         -25.57         0 \r\n 2011          35            10.682       -2.329        -14.71         0 \r\n 2011          36            10.029       -0.939        -12            0 \r\n 2011          37            9.379        -0.963        -4.938         1.27 \r\n 2011          38            9.855        -4.734        -17.222        0 \r\n 2011          39            12.487       -16.111       -23.906        0 \r\n 2011          40            13.037       -14.173       -22.731        0 \r\n 2011          41            13.157       -8.592        -25.601        0 \r\n 2011          42            7.659         0.752        -11.108        0 \r\n 2011          43            10.553        2.282        -7.357         0 \r\n 2011          44            13            4.641        -1.529         0 \r\n 2011          45            10.85         7.163        -0.556         0 \r\n 2011          46            12.408        7.123        -1.55          0 \r\n 2011          47            11.036        9.449        -0.429         0 \r\n 2011          48            8.149         11.846        1.227         0 \r\n 2011          49            14.223        4.677        -2.048         0 \r\n 2011          50            13.523        2.502        -3.817         0 \r\n 2011          51            1             1.559        -0.212         2.5 \r\n 2011          52            3.115         0.446        -5.143         18 \r\n 2011          53            8.514        -2.353        -6.046         5.5 \r\n 2011          54            7.662         0.976        -4.534         0 \r\n 2011          55            5.361        -1.917        -7.021         0 \r\n 2011          56            12.504       -4.611        -9.401         0 \r\n 2011          57            8.105        -5.504        -10.332        0 \r\n 2011          58            7.466        -1.624        -8.463         1.1 \r\n 2011          59            16.727        0.092        -11.922        0 \r\n 2011          60            14.64         5.598        -9.862         0 \r\n 2011          61            15.929       -5.2          -15.48         0 \r\n 2011          62            7.311         5.608        -5.21          0 \r\n 2011          63            6.695         3.194        -3.258         3.9 \r\n 2011          64            7.165        -2.288        -8.18          0 \r\n 2011          65            13.168        2.078        -10.06         0 \r\n 2011          66            5.079         0.628        -1.551         0 \r\n 2011          67            8.335         2.889        -0.448         1.5 \r\n 2011          68            10.338        1.009        -0.618         8.8 \r\n 2011          69            12.881        0.213        -5.706         1.1 \r\n 2011          70            14.819        8.59         -6.147         0 \r\n 2011          71            8.14          2.593        -8.34          0 \r\n 2011          72            11.971       -2.233        -9.17          0 \r\n 2011          73            18.291        7.68         -7.83          0 \r\n 2011          74            16.662        9.5          -5.035         0 \r\n 2011          75            16.556        15.51        -4.135         0 \r\n 2011          76            6.299         14.66         2.183         0 \r\n 2011          77            15.527        6.659        -2.53          0 \r\n 2011          78            17.24         12.12        -4.396         0 \r\n 2011          79            1.823         8.91          5.103         11 \r\n 2011          80            12.259        9.91          1.391         14 \r\n 2011          81            1.341         5.764         2.068         4 \r\n 2011          82            5.131         2.42         -2.961         19 \r\n 2011          83            21.207        1.282        -6.353         0.7 \r\n 2011          84            14.193        3.472        -3.259         0 \r\n 2011          85            18.671        1.038        -5.006         0 \r\n 2011          86            21.222        2.429        -7.49          0 \r\n 2011          87            21.242        3.783        -5.922         0 \r\n 2011          88            18.626        6.409        -2.513         0 \r\n 2011          89            22.359        9.15         -5.229         0 \r\n 2011          90            12.816        10.07        -4.376         0 \r\n 2011          91            12.641        11.73         0.708         0 \r\n 2011          92            20.592        13.96        -1.12          0 \r\n 2011          93            11.718        24.96         6.032         0 \r\n 2011          94            8.544         8.1          -2.218         0 \r\n 2011          95            17.884        16.65        -4.696         0 \r\n 2011          96            22.525        16.21         3.734         0 \r\n 2011          97            13.344        15.21        -1.575         0 \r\n 2011          98            13.074        17.29         7.34          0 \r\n 2011          99            14.016        22.45         7.03          0 \r\n 2011          100           16.702        30.42         8.39          0.762 \r\n 2011          101           23.57         16.45         4.527         0 \r\n 2011          102           23.36         19.99         1.996         0 \r\n 2011          103           19.473        20.19         6.008         0 \r\n 2011          104           11.823        10.75         4.785         0 \r\n 2011          105           4.36          7.79          2.363         6.858 \r\n 2011          106           8.562         6.816        -0.415         7.112 \r\n 2011          107           17.262        10.04         0.175         9.144 \r\n 2011          108           8.655         8.07          0.756         7.112 \r\n 2011          109           6.047         3.5          -0.265         22.86 \r\n 2011          110           15.283        7.48         -1.33          0.254 \r\n 2011          111           13.293        10.23        -2.799         0 \r\n 2011          112           2.178         6.847         4.382         2.54 \r\n 2011          113           7.246         10.85         4.113         0 \r\n 2011          114           15.73         13.75         1.062         0 \r\n 2011          115           16.15         16.01         1.319         17.272 \r\n 2011          116           6.392         10.01         5.189         22.352 \r\n 2011          117           10.492        8.46          1.499         0.508 \r\n 2011          118           8.493         9.23          1.109         0.508 \r\n 2011          119           21.003        17.7         -2.081         0 \r\n 2011          120           10.868        19.07         5.873         0.254 \r\n 2011          121           22.765        14.3          1.7           0 \r\n 2011          122           26.506        9.55         -2.291         0 \r\n 2011          123           26.642        13.55         0.08          0 \r\n 2011          124           24.357        17.25        -1.871         0 \r\n 2011          125           16.593        18.89         7.61          0 \r\n 2011          126           20.715        22.36         3.596         1.778 \r\n 2011          127           21.707        20.53         8.52          0.254 \r\n 2011          128           18.195        23.07         6.83          0 \r\n 2011          129           13.718        20.19         12.21         4.572 \r\n 2011          130           25.023        34.1          16.28         0 \r\n 2011          131           14.465        27.41         17.27         9.144 \r\n 2011          132           23.794        27.53         10.82         5.842 \r\n 2011          133           8.055         13.83         10.25         1.778 \r\n 2011          134           3.071         10.26         6.336         11.684 \r\n 2011          135           24.183        17.38         6.085         4.064 \r\n 2011          136           29.692        17.59         3.377         0 \r\n 2011          137           29.977        18.65         4.21          0 \r\n 2011          138           27.637        21.33         3.942         0 \r\n 2011          139           20.195        22.93         10.48         0 \r\n 2011          140           8.729         24.06         14.67         7.874 \r\n 2011          141           17.623        24.73         15.19         15.494 \r\n 2011          142           14.588        23.62         14.06         0.762 \r\n 2011          143           26.373        25.29         13.1          0 \r\n 2011          144           19.543        25.13         12.49         1.27 \r\n 2011          145           3.947         14.07         9.33          30.734 \r\n 2011          146           28.527        17.57         7.38          0 \r\n 2011          147           12.231        15.61         6.752         0.762 \r\n 2011          148           18.585        23.09         11.09         0 \r\n 2011          149           5.559         18.15         11.28         0.254 \r\n 2011          150           25.717        31.58         17.63         0 \r\n 2011          151           25.239        27.26         15.05         0.254 \r\n 2011          152           28.254        27.57         9.79          0 \r\n 2011          153           13.03         22.08         15.45         3.048 \r\n 2011          154           26.479        34.82         17.72         0 \r\n 2011          155           20.679        30.83         19.21         0 \r\n 2011          156           28.439        31.78         16.89         0 \r\n 2011          157           27.845        36.18         20.76         0 \r\n 2011          158           27.502        36.26         20.78         0 \r\n 2011          159           27.347        32.71         17.38         0 \r\n 2011          160           12.583        19            12.65         11.938 \r\n 2011          161           5.789         16.07         11.71         16.764 \r\n 2011          162           16.709        20.67         11.25         0 \r\n 2011          163           16.647        19.67         9.46          0 \r\n 2011          164           21.529        22.44         11.72         0 \r\n 2011          165           14.469        22.99         14.66         4.318 \r\n 2011          166           12.841        23.52         15.23         34.544 \r\n 2011          167           29.673        28.73         13.77         0 \r\n 2011          168           21.464        29.33         16.6          0 \r\n 2011          169           14.909        27.07         17.32         0 \r\n 2011          170           21.242        28.55         18.77         0 \r\n 2011          171           13.193        24.99         18.68         5.842 \r\n 2011          172           19.789        25.53         17.18         20.828 \r\n 2011          173           10.332        22.49         16.09         13.97 \r\n 2011          174           8.096         17.47         13.89         1.016 \r\n 2011          175           26.18         23.22         11.02         0 \r\n 2011          176           12.614        22.17         13.69         0 \r\n 2011          177           26.373        27.25         13.09         0 \r\n 2011          178           24.426        25.44         14.91         1.524 \r\n 2011          179           28.584        26.16         11.05         0 \r\n 2011          180           29.235        27.99         13.87         0 \r\n 2011          181           26.403        34.46         18.79         0 \r\n 2011          182           27.981        34.32         21.72         0.254 \r\n 2011          183           28.552        29.58         17.72         0 \r\n 2011          184           17.652        26.17         16.02         0 \r\n 2011          185           29.47         29.61         13.61         0 \r\n 2011          186           10.435        26.48         16.06         0 \r\n 2011          187           26.948        29.54         17.3          0 \r\n 2011          188           19.671        29.91         17.01         0 \r\n 2011          189           28.993        31.39         16.26         0 \r\n 2011          190           22.064        29.97         18.47         0 \r\n 2011          191           17.235        31.47         21.31         0.762 \r\n 2011          192           24.948        29.64         20.46         5.08 \r\n 2011          193           11.113        23.44         15.34         1.524 \r\n 2011          194           26.918        25.3          13.29         0 \r\n 2011          195           15.997        26.02         15.22         2.032 \r\n 2011          196           17.023        30.64         20.24         38.1 \r\n 2011          197           23.09         31.86         21.04         0.762 \r\n 2011          198           24.892        33.33         24.32         0 \r\n 2011          199           26.771        34.63         24.27         0 \r\n 2011          200           26.929        35.35         25.18         0 \r\n 2011          201           27.325        33.89         23.43         0 \r\n 2011          202           11.182        26.86         20.18         1.524 \r\n 2011          203           13.063        27.97         20.4          8.89 \r\n 2011          204           22.069        29.84         21.82         13.97 \r\n 2011          205           18.84         28.43         17.9          0 \r\n 2011          206           26.963        29.49         14.3          0 \r\n 2011          207           23.192        30.58         21.1          0 \r\n 2011          208           13.682        30.47         23.09         0 \r\n 2011          209           12.136        27.76         20.67         8.89 \r\n 2011          210           27.621        30.49         18.8          0 \r\n 2011          211           24.59         30.76         18.52         0 \r\n 2011          212           25.9          31.89         19.62         0 \r\n 2011          213           19.979        31.99         21.12         0 \r\n 2011          214           22.124        32.25         22.94         0 \r\n 2011          215           27.116        28.79         17.14         0 \r\n 2011          216           13.419        27.22         15.87         0 \r\n 2011          217           13.985        28.59         20.12         0 \r\n 2011          218           20.249        28.99         19.02         0 \r\n 2011          219           23.518        28.36         17.54         3.048 \r\n 2011          220           13.262        26.36         16.54         4.572 \r\n 2011          221           24.475        24.96         12.95         0 \r\n 2011          222           25.895        24.55         10.91         0 \r\n 2011          223           26.126        27.05         10.16         0 \r\n 2011          224           20.619        27.37         15.57         0 \r\n 2011          225           15.365        23.54         15.61         45.212 \r\n 2011          226           23.975        26.97         13.44         0 \r\n 2011          227           24.759        27.3          13.91         0 \r\n 2011          228           24.037        27.01         14.66         0 \r\n 2011          229           25.107        26.78         14.48         0 \r\n 2011          230           23.244        28.85         12.94         0 \r\n 2011          231           24.101        30.03         14.08         0 \r\n 2011          232           19.989        25.19         15.66         7.366 \r\n 2011          233           24.507        26.68         12.25         0 \r\n 2011          234           23.785        28.89         12.72         0 \r\n 2011          235           16.694        29.95         18.7          34.29 \r\n 2011          236           23.956        26.82         14.06         0.254 \r\n 2011          237           24.343        28.21         12.55         0 \r\n 2011          238           17.947        27.99         14.51         0 \r\n 2011          239           21.668        26            13.7          0 \r\n 2011          240           11.802        23.49         12.4          0 \r\n 2011          241           22.449        26.57         11.24         0 \r\n 2011          242           3.168         18.43         16.22         14.224 \r\n 2011          243           17.654        29.15         17.71         0 \r\n 2011          244           21.212        33.22         20.72         0 \r\n 2011          245           7.247         27.92         19.9          2.794 \r\n 2011          246           6.471         23.76         12.44         23.876 \r\n 2011          247           18.026        19.26         8.69          0 \r\n 2011          248           22.774        20.04         6.191         0 \r\n 2011          249           22.782        20.8          6.24          0 \r\n 2011          250           22.207        22.4          6.296         0 \r\n 2011          251           20.61         26.08         9.72          0 \r\n 2011          252           21.154        26.1          12.61         0 \r\n 2011          253           21.102        27.41         10.96         0 \r\n 2011          254           20.126        30.12         11.91         0 \r\n 2011          255           19.289        30.05         14.08         0 \r\n 2011          256           20.852        20.66         9.96          0 \r\n 2011          257           19.876        14.56         2.768         0 \r\n 2011          258           19.376        14.69        -0.221         0 \r\n 2011          259           5.197         11.47         7.22          0 \r\n 2011          260           9.617         16.86         8.8           0.254 \r\n 2011          261           2.361         15.24         12.7          17.018 \r\n 2011          262           15.493        22.75         9.66          0 \r\n 2011          263           10.836        23.4          9.18          0.762 \r\n 2011          264           7.206         16.32         9.88          0 \r\n 2011          265           10.383        14.2          7.64          0 \r\n 2011          266           15.087        16.27         5.094         0 \r\n 2011          267           10.759        15.77         2.386         0 \r\n 2011          268           9.852         17.21         5.419         0 \r\n 2011          269           2.705         15.24         10.1          11.43 \r\n 2011          270           11.461        18.76         10.33         0 \r\n 2011          271           10.313        23.38         10.88         0 \r\n 2011          272           12.007        20.51         10.56         0 \r\n 2011          273           17.868        17.92         4.198         0 \r\n 2011          274           18.042        17.14         0.846         0 \r\n 2011          275           16.863        23.48         1.371         0 \r\n 2011          276           16.673        26.12         4.911         0 \r\n 2011          277           16.77         26.77         7.39          0 \r\n 2011          278           16.095        28.1          10.37         0 \r\n 2011          279           15.125        26.47         9.84          0 \r\n 2011          280           12.853        28.59         15.89         0 \r\n 2011          281           14.3          27.97         15.89         0 \r\n 2011          282           14.997        26.43         10.58         0 \r\n 2011          283           10.356        24.26         10.18         4.064 \r\n 2011          284           13.474        24.37         11.92         0 \r\n 2011          285           5.087         18.8          12.33         30.48 \r\n 2011          286           14.824        17.47         7.72          1.27 \r\n 2011          287           9.158         14.7          6.829         0 \r\n 2011          288           13.42         16.16         3.338         0 \r\n 2011          289           14.495        15.52         2.053         0.254 \r\n 2011          290           11.473        14.62         0.484         0 \r\n 2011          291           3.191         7.08          0.779         0 \r\n 2011          292           6.821         9.4           3.882         0 \r\n 2011          293           13.827        12.09        -0.926         0 \r\n 2011          294           13.656        15.98        -3.347         0 \r\n 2011          295           13.473        17.2          2.61          0 \r\n 2011          296           8.312         20.76         2.279         0 \r\n 2011          297           11.471        21.65         1.205         0 \r\n 2011          298           10.594        23.6          6.607         0 \r\n 2011          299           7.157         10.4          4.774         0 \r\n 2011          300           10.785        11.94         0.348         0 \r\n 2011          301           10.457        12.52        -2.226         0 \r\n 2011          302           11.876        12.69        -4.85          0 \r\n 2011          303           6.323         11.37         2.782         1.524 \r\n 2011          304           11.636        11.36         0.354         0 \r\n 2011          305           11.279        20.84         2.563         0 \r\n 2011          306           0.824         8.75          2.2           14.478 \r\n 2011          307           10.588        9.79         -1.671         0 \r\n 2011          308           11.238        11.36        -4.821         0 \r\n 2011          309           5.233         8.06          0.958         0 \r\n 2011          310           8.068         14.51         1.568         0 \r\n 2011          311           10.171        13.76        -2.263         0 \r\n 2011          312           4.075         8.32          2.716         5.08 \r\n 2011          313           6.945         7.79         -0.678         16.764 \r\n 2011          314           6.831         4.247        -3.308         0 \r\n 2011          315           9.972         8.19         -4.368         0 \r\n 2011          316           8.167         13.49        -1.633         0 \r\n 2011          317           4.191         12.97         1.685         0 \r\n 2011          318           8.186         14.85        -0.175         0 \r\n 2011          319           7.12          13.12        -3.597         0 \r\n 2011          320           9.741         5            -7.72          0 \r\n 2011          321           9.538         2.821        -11.04         0 \r\n 2011          322           6.485         11.52        -0.563         0 \r\n 2011          323           0.978         6.317        -2.368         0 \r\n 2011          324           6.261         0.027        -6.02          0 \r\n 2011          325           3.097         4.679        -6.488         0 \r\n 2011          326           5.432         8.24         -1.508         0 \r\n 2011          327           3.993         8.24          1.611         0 \r\n 2011          328           6.612         16.19         3.557         0 \r\n 2011          329           2.145         9.79          4.448         0.254 \r\n 2011          330           0.989         10.09         1.78          5.08 \r\n 2011          331           2.145         1.973        -1.27          0 \r\n 2011          332           5.01          2.372        -3.443         0 \r\n 2011          333           8.316         3.854        -7.04          0 \r\n 2011          334           6.833         8.57         -10.08         0 \r\n 2011          335           2.075         1.824        -7.17          0 \r\n 2011          336           8.011         2.429        -12.76         2.032 \r\n 2011          337           0.588         2.63         -1.653         27.432 \r\n 2011          338           2.584        -1.469        -6.109         0 \r\n 2011          339           6.141        -4.425        -8.16          0 \r\n 2011          340           3.348        -5.981        -14.43         0 \r\n 2011          341           5.058        -4.483        -14.53         0 \r\n 2011          342           5.16         -1.5          -8.97          0 \r\n 2011          343           7.935        -6.787        -17            0 \r\n 2011          344           5.255        -0.788        -17.3          0 \r\n 2011          345           2.07          2.373        -6.187         0 \r\n 2011          346           0.858         3.194         1.038         0 \r\n 2011          347           2.061         4.439         0.211         0 \r\n 2011          348           1.233         7.43          2.114         0 \r\n 2011          349           1.952         4.545        -5.756         0 \r\n 2011          350           6.594        -0.067        -9.59          0 \r\n 2011          351           4.352         2.659        -5.318         0 \r\n 2011          352           6.963         10.29        -6.177         0 \r\n 2011          353           3.537         2.021        -3.991         0 \r\n 2011          354           4.756         2.127        -6.568         0 \r\n 2011          355           6.568         6.023        -2.991         0 \r\n 2011          356           5.605        -0.928        -11.32         0 \r\n 2011          357           3.089         0.164        -13.36         0 \r\n 2011          358           7.208         5.154        -10.5          0 \r\n 2011          359           7.334         6.001        -4.958         0 \r\n 2011          360           5.603         6.933        -6.295         0 \r\n 2011          361           4.677         3.193        -5.279         0 \r\n 2011          362           5.704         4.862        -6.197         0 \r\n 2011          363           7.173         6.069        -2.007         0 \r\n 2011          364           2.253         1.737        -0.283         12.4 \r\n 2011          365           3.157         7.16         -0.225         5.9 \r\n 2012          1             3.713524      2.152778     -7.26          0 \r\n 2012          2             7.663226     -5.19         -12.5          0 \r\n 2012          3             6.252567     -0.6638889    -14.04         0 \r\n 2012          4             7.472433      5.472222     -6.57          0 \r\n 2012          5             7.430816      15.04        -4.02          0 \r\n 2012          6             5.06427       8.57         -0.7161111     0 \r\n 2012          7             7.236382      3.441111     -5.58          0 \r\n 2012          8             7.27356       5.356111     -7.98          0 \r\n 2012          9             7.773171      9.68         -4.232222      0 \r\n 2012          10            7.679471      12.29        -4.328889      0 \r\n 2012          11            4.386468      6.402222     -10.1          0 \r\n 2012          12            4.294066     -10.01        -12.48         1.5 \r\n 2012          13            6.033681     -10.04        -16.84         2.5 \r\n 2012          14            6.132448     -4.29         -19.6          0 \r\n 2012          15            8.163088      3.328889     -10.19         0 \r\n 2012          16            7.678843      2.143889     -4.183889      0 \r\n 2012          17            6.671959     -3.633889     -17.66         0 \r\n 2012          18            7.98025      -4.307778     -20.02         0.5 \r\n 2012          19            9.430809     -14.58        -21.19         0 \r\n 2012          20            4.373071     -14.56        -20.69         2.5 \r\n 2012          21            6.640767     -7.53         -23.7          10 \r\n 2012          22            3.636152      0.2038889    -9.91          0 \r\n 2012          23            5.548138      2.777778E-03               -5.843889      7 \r\n 2012          24            8.573394     -2.232778     -8.38          0 \r\n 2012          25            6.574993      1.43         -6.206111      0 \r\n 2012          26            7.784475      4.333889     -4.87          0 \r\n 2012          27            5.148592      1.658889     -8.82          0 \r\n 2012          28            10.47416      1.222778     -10.49         0 \r\n 2012          29            10.12548     -2.023889     -8.61          0 \r\n 2012          30            9.711534      7.67         -5.405         0 \r\n 2012          31            10.15169      8.24         -0.2338889     0 \r\n 2012          32            4.673013      0.61         -1.501111      0 \r\n 2012          33            6.792665      0.685        -4.598889      0 \r\n 2012          34            2.824625     -0.33         -2.023889      0 \r\n 2012          35            6.527598      4.275        -3.182222      0 \r\n 2012          36            3.128879     -1.087778     -3.258889      0 \r\n 2012          37            9.002583      3.792222     -4.812222      0 \r\n 2012          38            2.617504     -0.4338889    -4.928889      0 \r\n 2012          39            12.28956     -1.01         -10.71         0 \r\n 2012          40            5.27922      -0.1872222    -11.56         0 \r\n 2012          41            9.098921     -1.063889     -12.92         0 \r\n 2012          42            13.2583      -6.333889     -16.59         0 \r\n 2012          43            13.448        1.361111     -14.86         0 \r\n 2012          44            3.740278     -1.93         -9.85          0 \r\n 2012          45            7.797873      1.288889     -3.893889      2.5 \r\n 2012          46            10.60713      6.542778     -5.083889      0 \r\n 2012          47            13.73032      5.703889     -3.412778      0 \r\n 2012          48            12.67918      5.847222     -5.132778      0 \r\n 2012          49            14.22482      2.882778     -6.816111      0 \r\n 2012          50            13.93233      4.76         -8.1           0 \r\n 2012          51            10.30677      4.856111     -4.598889      0 \r\n 2012          52            10.12833      5.567778     -3.01          3.2 \r\n 2012          53            6.627286      5.818889     -4.251111      0 \r\n 2012          54            4.067141      2.212778     -4.087222      0.5 \r\n 2012          55            9.160467     -0.9972222    -8.55          2.1 \r\n 2012          56            15.41257     -1.963889     -11.42         0 \r\n 2012          57            14.44161      9.69         -7.31          0 \r\n 2012          58            14.64078      2.072778     -7.14          0 \r\n 2012          59            3.246947      3.332778     -4.792778      0 \r\n 2012          60            2.485368      7.36         -0.9022222     18.8 \r\n 2012          61            7.477541      2.66         -1.312222      6.8 \r\n 2012          62            4.828469      2.891111     -1.728889      0 \r\n 2012          63            5.619146     -1.52         -7.33          0 \r\n 2012          64            8.262231     -2.976111     -10.32         0 \r\n 2012          65            13.51562      1.002778     -13.63         1.5 \r\n 2012          66            16.53074      18.89        -0.9572222     0 \r\n 2012          67            3.725289      15.35        -2.006111      0 \r\n 2012          68            16.72066      4.991111     -4.386111      1 \r\n 2012          69            17.6958       4.021111     -6.56          0 \r\n 2012          70            17.97414      18.06         0.7088889     0 \r\n 2012          71            11.14359      16.75         1.262222      0 \r\n 2012          72            11.30327      15.2          4.997222      10.9 \r\n 2012          73            18.23393      20.63        -0.025         0 \r\n 2012          74            13.51474      24.42         9.98          0 \r\n 2012          75            16.87888      24.28         3.6           0 \r\n 2012          76            16.30055      27.19         8.93          0 \r\n 2012          77            16.19777      27.16         15.17         0 \r\n 2012          78            16.03959      26.71         16.93         0 \r\n 2012          79            10.86332      26.74         16.02         0 \r\n 2012          80            12.3395       21.45         13.36         5 \r\n 2012          81            6.572773      19.47         14.17         0.25 \r\n 2012          82            5.80056       21.33         13.62         0.51 \r\n 2012          83            14.60687      21.2          9.87          4.32 \r\n 2012          84            10.58163      21.44         11.74         0 \r\n 2012          85            19.71259      19.37         8.76          0 \r\n 2012          86            11.28929      12.15         3.942778      3 \r\n 2012          87            17.79524      24.99         5.615         1 \r\n 2012          88            21.37851      16.67         5.837222      0 \r\n 2012          89            19.86754      17.15         4.127778      0 \r\n 2012          90            7.809805      12.58         5.293889      11 \r\n 2012          91            5.927337      11.12         5.592778      0 \r\n 2012          92            20.2001       20.58         4.692778      0 \r\n 2012          93            20.60588      23.12         8.79          0 \r\n 2012          94            18.06814      17.63         10.08         0 \r\n 2012          95            20.70327      17.68         5.776111      0 \r\n 2012          96            23.18399      15.8          3.245         0 \r\n 2012          97            23.3474       15.92        -0.8122222     0 \r\n 2012          98            5.520798      14.97         3.046111      0 \r\n 2012          99            18.79672      19.19         0.6727778     0 \r\n 2012          100           24.3866       13.99        -0.3772222     0 \r\n 2012          101           25.00135      9.3          -4.832222      0 \r\n 2012          102           24.91992      13.28        -5.942222      0 \r\n 2012          103           22.09152      16.65        -2.272222      0 \r\n 2012          104           3.713105      11.36         7.84          0 \r\n 2012          105           9.641656      20.24         10.99         0.76 \r\n 2012          106           16.43332      24.07         13.11         34.5 \r\n 2012          107           12.27478      13.77         3.193889      0.25 \r\n 2012          108           23.57457      17.11        -0.6777778     0 \r\n 2012          109           20.93136      20.78         8.62          0 \r\n 2012          110           1.577879      8.92          3.577778      30.48 \r\n 2012          111           22.68856      12.12         2.452778      0 \r\n 2012          112           9.219794      11.35         0.75          3.302 \r\n 2012          113           22.02722      14.03         5.565         0.762 \r\n 2012          114           22.51067      17.1          2.262778      0 \r\n 2012          115           23.50365      23.68         7.18          0 \r\n 2012          116           17.83095      25.81         11.48         0 \r\n 2012          117           26.55109      15.81         5.737222      0 \r\n 2012          118           15.98746      12.42         4.132222      1.524 \r\n 2012          119           4.01175       8.37          2.983889      12.954 \r\n 2012          120           8.305565      10.64         4.65          6.096 \r\n 2012          121           12.40365      16.18         6.712778      0 \r\n 2012          122           15.52989      20.56         7.53          0 \r\n 2012          123           18.23623      25.23         14.29         17.526 \r\n 2012          124           21.56922      28.68         17.06         3.048 \r\n 2012          125           21.42264      27.5          15.82         18.034 \r\n 2012          126           13.88087      24.3          13.13         18.034 \r\n 2012          127           13.02484      22.9          14.41         10.668 \r\n 2012          128           26.09055      19.77         10.59         0 \r\n 2012          129           19.73457      17.25         7.11          0 \r\n 2012          130           24.57539      17.68         6.51          0 \r\n 2012          131           28.12877      23.01         6.031111      0 \r\n 2012          132           25.18452      25.4          11.62         0 \r\n 2012          133           25.52889      20.33         8.21          0 \r\n 2012          134           29.21654      23.62         5.45          0 \r\n 2012          135           28.15924      27.75         8.05          0 \r\n 2012          136           28.29192      30.05         12.16         0 \r\n 2012          137           28.8216       23.13         6.897222      0 \r\n 2012          138           26.52547      26.52         11.02         0 \r\n 2012          139           27.72528      31.08         13.22         0 \r\n 2012          140           22.30614      30.61         19.25         0 \r\n 2012          141           16.01426      23.94         7.85          0 \r\n 2012          142           29.43237      24.06         5.882222      0 \r\n 2012          143           28.5217       28.36         10.42         0 \r\n 2012          144           25.5023       30.2          16.37         0 \r\n 2012          145           7.603564      27.68         12.41         13.97 \r\n 2012          146           12.79109      21.12         10.03         1.778 \r\n 2012          147           17.78         23.93         14.03         22.098 \r\n 2012          148           27.12896      33            19.07         0 \r\n 2012          149           27.28198      29.45         14.18         0 \r\n 2012          150           28.44181      21.85         11.34         0 \r\n 2012          151           25.01278      18.64         7.43          3.556 \r\n 2012          152           7.304585      12.05         8.66          6.858 \r\n 2012          153           25.98768      20.7          6.142778      0 \r\n 2012          154           17.7046       23.26         11.39         0 \r\n 2012          155           16.70843      24.73         9.7           0 \r\n 2012          156           28.26601      27.93         15.66         0 \r\n 2012          157           22.98306      27.58         15.29         0 \r\n 2012          158           29.01557      26.11         13.11         0 \r\n 2012          159           24.57451      27.69         13.01         0 \r\n 2012          160           28.47547      30.11         15.45         0 \r\n 2012          161           29.4842       31.19         15.65         0 \r\n 2012          162           26.70743      31.77         19.78         4.318 \r\n 2012          163           27.22048      27.03         14.5          2.794 \r\n 2012          164           29.93792      21.99         10.37         0 \r\n 2012          165           16.50813      23.44         9.41          0 \r\n 2012          166           25.80576      30.61         15.8          0.254 \r\n 2012          167           19.43726      29.96         19.82         0 \r\n 2012          168           17.09031      28.26         18.47         2.54 \r\n 2012          169           26.39844      29.07         13.05         0 \r\n 2012          170           22.0456       33.1          23.13         0 \r\n 2012          171           28.76842      32.9          23.05         0 \r\n 2012          172           19.13058      31.79         15.99         23.368 \r\n 2012          173           28.12696      24.91         14.62         0 \r\n 2012          174           29.05091      28.33         13.17         0 \r\n 2012          175           11.40036      25.36         15.67         0 \r\n 2012          176           25.27969      28.68         17.13         8.128 \r\n 2012          177           30.39123      25.14         16.15         0 \r\n 2012          178           28.525        27.79         10.99         0 \r\n 2012          179           28.20308      35.39         19.59         0 \r\n 2012          180           24.1475       32.2          18.7          0 \r\n 2012          181           9.195218      27            18.03         0 \r\n 2012          182           25.46885      32.67         17.86         0 \r\n 2012          183           26.05818      33.33         18.59         0 \r\n 2012          184           26.50048      34.56         22.19         0 \r\n 2012          185           24.71079      35.16         21.35         0 \r\n 2012          186           26.31894      36.1          21.87         0 \r\n 2012          187           23.35485      34.74         22.89         0 \r\n 2012          188           27.26126      36.87         22.78         0 \r\n 2012          189           26.10152      29.36         20.56         0 \r\n 2012          190           19.99817      28.5          18.35         0 \r\n 2012          191           26.14112      29.63         16.12         0 \r\n 2012          192           26.85464      29.02         14.77         0 \r\n 2012          193           27.23513      30.29         13.83         0 \r\n 2012          194           23.2879       32.01         14.16         0 \r\n 2012          195           15.26252      28.14         19.28         7.112 \r\n 2012          196           23.47602      31.42         19.14         0 \r\n 2012          197           26.98719      34.08         17.89         0 \r\n 2012          198           27.49304      34.44         20.2          0 \r\n 2012          199           25.17305      36.19         20.77         0 \r\n 2012          200           15.61053      35.54         19.5          6.604 \r\n 2012          201           20.82895      28.02         18.6          0 \r\n 2012          202           26.57973      30.75         14.35         0 \r\n 2012          203           12.02805      29.23         17.88         0 \r\n 2012          204           19.84987      35.16         20.17         0.762 \r\n 2012          205           16.75679      35.39         21.23         0 \r\n 2012          206           24.01996      34.2          21.69         0 \r\n 2012          207           24.69454      37.44         20.27         21.336 \r\n 2012          208           25.47609      30.08         18.35         0 \r\n 2012          209           24.00489      25.81         15.77         0 \r\n 2012          210           16.01652      25.32         14.15         0 \r\n 2012          211           9.484735      23.75         17.68         5.588 \r\n 2012          212           26.20849      33.74         17.9          0 \r\n 2012          213           27.45343      31.47         16.64         0 \r\n 2012          214           26.13639      33.94         16.28         0.254 \r\n 2012          215           23.79338      31.91         21.19         0 \r\n 2012          216           25.43452      33.22         19.57         0 \r\n 2012          217           10.86805      26.03         16.09         7.366 \r\n 2012          218           28.07865      24.13         13.08         0 \r\n 2012          219           26.68001      29.96         9.39          0 \r\n 2012          220           25.91449      32.92         15.48         0 \r\n 2012          221           16.70906      30.52         16.59         44.704 \r\n 2012          222           18.11762      25.55         12.96         0.254 \r\n 2012          223           24.3426       23.68         12.13         0 \r\n 2012          224           23.59823      24            8.73          0 \r\n 2012          225           2.8922        17.18         14.64         14.732 \r\n 2012          226           23.37369      25.17         14.61         0.254 \r\n 2012          227           23.71211      27.62         13.03         0 \r\n 2012          228           18.93761      27.31         15.92         0 \r\n 2012          229           22.27926      22.54         10.41         1.778 \r\n 2012          230           25.74555      22.78         7.99          0 \r\n 2012          231           19.49437      22.85         7.55          0 \r\n 2012          232           20.55426      23.74         9.56          2.794 \r\n 2012          233           25.4055       24.68         9.69          0.254 \r\n 2012          234           25.12344      26.94         8.7           0 \r\n 2012          235           17.65431      31.32         11.15         0 \r\n 2012          236           21.86138      31.77         15.87         0 \r\n 2012          237           21.11294      30.56         17.96         0.508 \r\n 2012          238           11.0215       26.17         15.39         3.048 \r\n 2012          239           17.19297      29.52         17.72         0.508 \r\n 2012          240           21.98104      30.64         13.78         0 \r\n 2012          241           19.19958      32.33         15.44         0 \r\n 2012          242           21.49043      33.65         18.66         0 \r\n 2012          243           21.69629      34.61         19.54         0 \r\n 2012          244           17.31836      30.73         15.69         0 \r\n 2012          245           17.44836      27.12         17.37         0 \r\n 2012          246           20.93266      32.04         14.96         0 \r\n 2012          247           10.80517      29.69         18.11         0 \r\n 2012          248           18.85278      35.18         16.71         5.08 \r\n 2012          249           18.22665      26.93         14.55         10.414 \r\n 2012          250           21.53426      27.3          10.19         1.778 \r\n 2012          251           8.857929      20.85         9.35          2.794 \r\n 2012          252           21.08016      25.94         6.847778      0 \r\n 2012          253           21.74126      23.08         8.99          0 \r\n 2012          254           21.72242      26.54         8.28          0 \r\n 2012          255           18.98056      32.39         13.95         0 \r\n 2012          256           12.15022      23.88         10.01         11.43 \r\n 2012          257           13.44105      21            9.33          5.842 \r\n 2012          258           20.66144      25.71         7.35          0 \r\n 2012          259           20.39763      25.6          7.88          0 \r\n 2012          260           16.86003      24.73         8.84          0 \r\n 2012          261           9.265137      16.76         7.64          2.286 \r\n 2012          262           17.12096      16.12         4.082778      0 \r\n 2012          263           17.11137      26.98         7.5           0 \r\n 2012          264           17.93433      19.37         5.293889      0 \r\n 2012          265           10.20792      19.29         8.15          1.016 \r\n 2012          266           11.44357      13.5          2.213889      0 \r\n 2012          267           19.88383      15.04        -1.17          0 \r\n 2012          268           18.72132      24.95        -0.035         0 \r\n 2012          269           18.32747      26.35         5.746111      0 \r\n 2012          270           18.65659      21.41         3.933889      0 \r\n 2012          271           18.39462      20.97         3.601111      0 \r\n 2012          272           17.03312      23.23         3.046111      0 \r\n 2012          273           17.00105      27.71         5.756111      0 \r\n 2012          274           16.53572      24.83         7.03          0 \r\n 2012          275           13.40982      23.34         7.12          0 \r\n 2012          276           16.94117      23.22         6.577222      0 \r\n 2012          277           16.26555      25.48         6.171111      0 \r\n 2012          278           15.06741      13.93         1.061111      0 \r\n 2012          279           10.21583      9.26         -1.781111      0 \r\n 2012          280           6.594964      6.5          -1.026111      0 \r\n 2012          281           17.51497      11.15        -5.258889      0 \r\n 2012          282           12.97808      19.09        -0.2727778     0 \r\n 2012          283           3.579295      10.42         1.052222      4.064 \r\n 2012          284           16.03004      12.03        -2.803889      0 \r\n 2012          285           8.537681      12.99         0.7472222     0 \r\n 2012          286           16.46304      12.48        -3.157778      0.762 \r\n 2012          287           3.75602       20.06         7.23          3.302 \r\n 2012          288           5.497813      17.13         5.717778      41.91 \r\n 2012          289           14.34444      17.57         1.08          0 \r\n 2012          290           11.91551      21.92         7.12          0 \r\n 2012          291           5.287635      16.36         6.528889      0.508 \r\n 2012          292           4.35289       8.2           3.298889      1.27 \r\n 2012          293           3.423337      9.95          1.927778      4.826 \r\n 2012          294           7.362948      11.96         1.976111      0 \r\n 2012          295           13.19993      21.38         4.457778      0 \r\n 2012          296           6.24859       20.96         13.85         19.304 \r\n 2012          297           3.78022       21.99         15.99         0 \r\n 2012          298           3.620075      22.79         14.13         11.43 \r\n 2012          299           2.903923      14.39         0.1461111     13.462 \r\n 2012          300           8.849891      5.38         -2.546111      0 \r\n 2012          301           11.76863      6.087778     -2.13          0 \r\n 2012          302           12.95505      8.84         -4.421111      0 \r\n 2012          303           6.281707      8.14         -3.711111      0 \r\n 2012          304           12.32791      10.92        -2.612778      0 \r\n 2012          305           12.48064      10.13        -5.042778      0 \r\n 2012          306           11.63219      10.63        -1.857222      0 \r\n 2012          307           6.965621      6.927222     -4.422778      0 \r\n 2012          308           7.103367      9.21          2.848889      0 \r\n 2012          309           6.912156      9.71          2.353889      0.508 \r\n 2012          310           5.291697      8.02         -0.4727778     0.762 \r\n 2012          311           3.748735      8.46         -0.74          5.842 \r\n 2012          312           5.596244      6.655         0.4511111     0 \r\n 2012          313           10.12176      12.7          1.277778E-02                0 \r\n 2012          314           7.137112      13.06         2.27          0 \r\n 2012          315           8.85123       24.14         9.23          0 \r\n 2012          316           0.7817174     16.83        -6.036111      1.78 \r\n 2012          317           3.859434     -2.172222     -7.81          15.6 \r\n 2012          318           9.527356      6.248889     -9.81          0 \r\n 2012          319           9.490094      12.63         1.222222      0 \r\n 2012          320           9.059774      12.1         -0.7022222     0 \r\n 2012          321           9.372068      10.45        -5.206111      0 \r\n 2012          322           7.596739      14.22        -0.8361111     0 \r\n 2012          323           7.10927       13.54         1.792222      0 \r\n 2012          324           6.943305      13.86         4.342222      1.5 \r\n 2012          325           8.472702      14.14         0.2311111     0 \r\n 2012          326           8.321893      20.14         1.222778      0 \r\n 2012          327           7.918788      18.51         0.5027778     0 \r\n 2012          328           8.111506      0.8127778    -7.49          0 \r\n 2012          329           4.262958     -2.627222     -12.31         0 \r\n 2012          330           7.42395       3.117222     -7.26          0 \r\n 2012          331           5.88798      -3.152222     -12.64         0 \r\n 2012          332           5.74027       0.9422222    -13.49         0 \r\n 2012          333           7.882865      4.688889     -10.12         0 \r\n 2012          334           7.482565      9.67         -3.298889      0 \r\n 2012          335           4.841616      4.881111     -1.045         0 \r\n 2012          336           1.032842      10.12        -7.277778E-02                0 \r\n 2012          337           7.621693      14.49         0.3461111     0 \r\n 2012          338           2.76647       18.68         0.565         0 \r\n 2012          339           7.623619      8.94         -5.841111      0 \r\n 2012          340           6.600951      4.43         -7.49          0 \r\n 2012          341           2.368389      7.73          0.7811111     0 \r\n 2012          342           3.660352      4.207778     -2.525         0 \r\n 2012          343           5.719797      2.868889     -6.097222      0 \r\n 2012          344           1.67271       0.895        -4             2.03 \r\n 2012          345           5.631246     -1.595        -12.53         2.54 \r\n 2012          346           4.052069      1.503889     -11.41         0 \r\n 2012          347           7.366842      8.06         -6.36          0 \r\n 2012          348           6.939202      9.24         -3.097222      0 \r\n 2012          349           6.91584       11           -5.628889      0 \r\n 2012          350           0.7940266     6.336111      2.277222      12.7 \r\n 2012          351           2.464183      2.267222     -6.236111      3 \r\n 2012          352           2.58133      -3.268889     -7.15          0 \r\n 2012          353           1.068094     -0.4161111    -4.212778      0 \r\n 2012          354           1.998611      0.6938889    -1.195         0.25 \r\n 2012          355           4.766965     -1.137778     -11.88         6 \r\n 2012          356           7.860507     -7.19         -14.93         0 \r\n 2012          357           6.810207     -1.861111     -15.15         0 \r\n 2012          358           4.316298     -6.462222     -11.83         0 \r\n 2012          359           4.342465     -6.137222     -15.04         0 \r\n 2012          360           7.614868     -9.96         -17.76         0 \r\n 2012          361           5.224917     -5.618889     -15.67         0 \r\n 2012          362           3.855457     -5.356111     -14.87         0 \r\n 2012          363           5.194018     -3.152778     -7.91          1.5 \r\n 2012          364           5.853607     -6.696111     -17.49         0 \r\n 2012          365           6.011282     -0.945        -19.09         0 \r\n 2012          366           6.155475     -4.745        -18.51         0 \r\n 2013          1             6.883978     -9.64         -22.21         0 \r\n 2013          2             6.300422     -2.991111     -16.97         0 \r\n 2013          3             5.846531     -3.932778     -15.27         0 \r\n 2013          4             7.777651     -0.8872222    -14.95         0 \r\n 2013          5             5.322344      0.3027778    -12.39         0 \r\n 2013          6             8.12503      -4.201111     -12.95         0 \r\n 2013          7             6.446458      2.621111     -9.66          0 \r\n 2013          8             6.017562      3.606111     -9.44          0 \r\n 2013          9             7.96568       4.433889     -4             0 \r\n 2013          10            4.2805        3.816111     -3.866111      0 \r\n 2013          11            1.602958      6.937222      0.8761111     3.9 \r\n 2013          12            5.264733      4.852222     -11.28         0 \r\n 2013          13            6.198097     -10.97        -15.39         0 \r\n 2013          14            7.705219     -2.986111     -16.77         0 \r\n 2013          15            8.170708     -0.2588889    -12.93         0 \r\n 2013          16            5.318953      5.472222     -7.66          0 \r\n 2013          17            6.574239     -1.181111     -13.2          0 \r\n 2013          18            8.378415      9.17         -5.453889      0 \r\n 2013          19            7.997249      8.58         -13.21         0 \r\n 2013          20            4.666984     -10.54        -16.08         0 \r\n 2013          21            9.965254     -14.69        -22.5          0 \r\n 2013          22            7.885838     -12.41        -22.18         0 \r\n 2013          23            7.315596     -4.996111     -17.61         0 \r\n 2013          24            5.563252     -8.59         -19.2          0 \r\n 2013          25            6.4985       -1.832222     -15.08         0 \r\n 2013          26            6.101424     -3.096111     -17.76         0 \r\n 2013          27            0.5774853     3.722222E-02               -4.125         0 \r\n 2013          28            3.096767      4.401111     -0.9238889     7.6 \r\n 2013          29            1.783116      8.49         -0.2561111     2.5 \r\n 2013          30            6.930577     -0.2661111    -11.87         3.1 \r\n 2013          31            10.35115     -11.87        -21.46         2.1 \r\n 2013          32            10.7772      -11.65        -24.24         0 \r\n 2013          33            9.018535     -9.01         -12.86         0 \r\n 2013          34            7.933526     -6.372778     -13.29         0 \r\n 2013          35            10.26951     -6.29         -12.26         0 \r\n 2013          36            8.126077      1.677222     -9.81          0 \r\n 2013          37            6.44382       2.238889     -11.2          0 \r\n 2013          38            2.098592      1.427778     -3.557222      2.5 \r\n 2013          39            4.477573     -1.736111     -3.961111      0 \r\n 2013          40            2.687298     -1.107778     -3.442222      0 \r\n 2013          41            1.15585       3.835        -1.798889      2.5 \r\n 2013          42            6.493559     -1.002222     -6             13 \r\n 2013          43            13.01383      2.956111     -7.25          0 \r\n 2013          44            10.01143      4.841111     -5.567778      0 \r\n 2013          45            6.686822      2.23         -5.872778      0 \r\n 2013          46            13.30427     -5.146111     -11.22         0 \r\n 2013          47            8.31017      -3.897778     -12.65         0 \r\n 2013          48            11.85409      2.01         -9.92          0 \r\n 2013          49            5.256779      3.548889     -13.91         0 \r\n 2013          50            14.46715     -11.06        -18.55         0 \r\n 2013          51            14.13732     -5.781111     -19.48         0 \r\n 2013          52            6.582529     -5.462778     -12.22         0 \r\n 2013          53            11.73857     -1.582778     -8.29          6.2 \r\n 2013          54            15.31088     -2.522222     -13.55         0 \r\n 2013          55            13.47513      0.4361111    -15.74         0 \r\n 2013          56            12.85109      3.945        -5.346111      0 \r\n 2013          57            4.210371      0.6961111    -3.307222      0 \r\n 2013          58            9.399617      0.1322222    -3.057222      3 \r\n 2013          59            8.95858      -0.4672222    -4.145         1 \r\n 2013          60            12.91536     -3.066111     -11.1          0 \r\n 2013          61            16.96696     -2.482222     -14.87         0 \r\n 2013          62            16.70546     -1.163889     -10.32         0 \r\n 2013          63            9.549462     -1.55         -5.951111      2.5 \r\n 2013          64            11.86874     -1.278889     -5.432778      7 \r\n 2013          65            15.5396      -3.575        -14.88         0 \r\n 2013          66            17.32586     -1.573889     -18.38         0 \r\n 2013          67            17.06075      3.752778     -8.55          0 \r\n 2013          68            1.76909       2.611111      0.4688889     14 \r\n 2013          69            1.669068      1.963889     -0.8927778     9 \r\n 2013          70            8.048119     -0.8827778    -8.17          22 \r\n 2013          71            15.56393     -1.463889     -9.19          0 \r\n 2013          72            20.09245     -0.355        -12.07         0 \r\n 2013          73            17.91188      5.81         -8.88          0 \r\n 2013          74            9.241608      3.597222     -2.663889      0 \r\n 2013          75            17.60173      0.3077778    -6.747222      0 \r\n 2013          76            18.38437      0.19         -9.63          0 \r\n 2013          77            11.25089     -0.8061111    -10.87         1 \r\n 2013          78            21.0663      -2.787778     -13.15         2.8 \r\n 2013          79            21.37349     -6.631111     -13.72         0 \r\n 2013          80            21.55536     -3.681111     -15.77         0 \r\n 2013          81            20.84532      0.5761111    -12.55         0 \r\n 2013          82            18.08003      2.006111     -6.975         0 \r\n 2013          83            7.846691     -0.265        -3.182222      0 \r\n 2013          84            15.83331      0.8772222    -4.947778      0.75 \r\n 2013          85            20.17154      3.083889     -6.285         0 \r\n 2013          86            18.41644      5.442778     -4.841111      0 \r\n 2013          87            16.64621      8.08         -3.635         0 \r\n 2013          88            19.20728      12.94        -1.268889      0 \r\n 2013          89            4.850617      11.57         0.995         0 \r\n 2013          90            15.86487      5.848889     -3.211111      0 \r\n 2013          91            22.00913      1.428889     -6.216111      0 \r\n 2013          92            22.86152      3.505        -7.5           0 \r\n 2013          93            20.75426      7.07         -6.981111      0 \r\n 2013          94            20.64683      12.8         -1.557778      0 \r\n 2013          95            12.1578       9.43         -2.492222      0 \r\n 2013          96            7.360813      15.62         2.966111      2.794 \r\n 2013          97            15.90997      14.02         1.098889      0 \r\n 2013          98            14.83454      18.54         6.527222      8.382 \r\n 2013          99            1.859483      6.527778      2.956111      43.942 \r\n 2013          100           2.462215      2.937222     -6.111111E-03                10.922 \r\n 2013          101           5.028682      5.227778      0.88          12.192 \r\n 2013          102           6.744181      1.767222     -1.173889      0.254 \r\n 2013          103           14.66134      6.717222     -1.995         0 \r\n 2013          104           3.274538      13.49         0.2038889     37.592 \r\n 2013          105           17.53604      9.32         -0.9277778     0.254 \r\n 2013          106           24.76346      9.46         -2.071111      0 \r\n 2013          107           1.798314      4.816111      3.033889      19.812 \r\n 2013          108           4.590491      4.031111     -0.1872222     7.62 \r\n 2013          109           7.163321      1.452222     -2.013889      0 \r\n 2013          110           26.57948      7.37         -3.912778      0 \r\n 2013          111           12.82166      15.51         1.336111      6.604 \r\n 2013          112           7.051995      15.27         1.376111      7.366 \r\n 2013          113           10.6696       5.215        -1.412778      0 \r\n 2013          114           24.11153      11.37        -3.633889      0.254 \r\n 2013          115           26.9959       12.68        -2.416111      0 \r\n 2013          116           22.39662      21.1          4.386111      0 \r\n 2013          117           25.61694      20.29         6.137222      0 \r\n 2013          118           24.78376      23.76         4.377222      0 \r\n 2013          119           18.82737      23.33         11.15         0.508 \r\n 2013          120           20.25289      27.15         10.43         1.016 \r\n 2013          121           10.6683       10.81         2.301111      0.254 \r\n 2013          122           6.789189      2.377778     -0.5211111     23.114 \r\n 2013          123           8.516872      0.88         -1.045         34.29 \r\n 2013          124           16.89495      16.93         0.7277778     8.89 \r\n 2013          125           21.28653      19.82         4.243889      0 \r\n 2013          126           20.88254      23.17         7.04          0 \r\n 2013          127           20.20353      24.72         8.68          0 \r\n 2013          128           19.31174      25.72         10.09         0 \r\n 2013          129           5.584898      17.87         9.94          36.576 \r\n 2013          130           20.00993      17.77         6.743889      0 \r\n 2013          131           25.52374      12.08         2.892778      0 \r\n 2013          132           29.53051      14.44        -0.725         0 \r\n 2013          133           18.1242       22.15         2.206111      0 \r\n 2013          134           25.99136      36.39         10.44         0 \r\n 2013          135           23.55016      24.38         12.79         0 \r\n 2013          136           26.56646      29.07         10.97         9.652 \r\n 2013          137           16.21309      25.86         12.8          0 \r\n 2013          138           21.63315      28.54         14.3          0 \r\n 2013          139           18.87807      28.76         16.73         33.528 \r\n 2013          140           20.6969       23.5          14.88         17.78 \r\n 2013          141           13.62544      19.5          13.53         0.254 \r\n 2013          142           8.830757      18.15         11.85         2.032 \r\n 2013          143           29.90937      17.64         8.49          0 \r\n 2013          144           27.46478      19.68         5.413889      3.302 \r\n 2013          145           5.667127      12.42         9.48          2.54 \r\n 2013          146           3.629788      12.5          7.87          27.432 \r\n 2013          147           2.984309      15.91         12.24         3.81 \r\n 2013          148           14.55018      24.18         12.73         1.27 \r\n 2013          149           10.81396      25.46         14.08         38.608 \r\n 2013          150           15.48773      24.17         16.15         0.254 \r\n 2013          151           22.64041      24.71         15.37         13.462 \r\n 2013          152           17.54487      21.53         12.07         0 \r\n 2013          153           23.46417      17.75         9.07          0 \r\n 2013          154           28.95976      21.38         6.748889      0 \r\n 2013          155           4.461077      15.44         11.47         7.874 \r\n 2013          156           7.48177       19.36         12.73         10.922 \r\n 2013          157           16.33689      19.48         12.61         0.254 \r\n 2013          158           12.17203      19.01         11.64         0 \r\n 2013          159           15.85185      22.4          10.67         0 \r\n 2013          160           11.64805      22.58         15.22         10.922 \r\n 2013          161           16.25776      25.27         15.01         0 \r\n 2013          162           26.31257      30.38         15.5          0 \r\n 2013          163           13.19223      28.29         18.56         31.496 \r\n 2013          164           30.01697      25.57         14.89         0 \r\n 2013          165           17.49434      25.32         14.78         8.89 \r\n 2013          166           13.6115       25.31         17.4          5.334 \r\n 2013          167           29.20603      28.5          16.26         0 \r\n 2013          168           29.1454       30.6          15.58         0 \r\n 2013          169           21.40715      24.84         15.57         0 \r\n 2013          170           25.49472      28.62         15.16         0 \r\n 2013          171           25.73345      31.67         18.78         0 \r\n 2013          172           14.63605      28.49         17.44         25.4 \r\n 2013          173           20.72257      32.48         18.97         0 \r\n 2013          174           13.75213      26.72         19.07         5.588 \r\n 2013          175           5.187278      22.74         18.56         8.636 \r\n 2013          176           14.38605      29.66         18.96         46.99 \r\n 2013          177           14.76936      29.46         19.62         5.334 \r\n 2013          178           26.24161      29.67         18.35         0 \r\n 2013          179           22.51594      26.31         17.58         0 \r\n 2013          180           12.8302       20.08         15.16         13.208 \r\n 2013          181           24.28017      23.92         13.57         0 \r\n 2013          182           28.3466       26.41         13.54         0 \r\n 2013          183           27.83209      27.59         14.33         0 \r\n 2013          184           26.61641      26.82         13.81         0 \r\n 2013          185           26.49947      28.97         14.91         0 \r\n 2013          186           25.66709      30.29         16.12         0 \r\n 2013          187           27.55329      31.8          18.62         0 \r\n 2013          188           25.567        33.03         19.65         0 \r\n 2013          189           27.133        34.63         21.43         0 \r\n 2013          190           21.817        31.64         21.34         8.429 \r\n 2013          191           28.983        26.58         15.02         0 \r\n 2013          192           29.067        27.99         13.12         0 \r\n 2013          193           28.233        28.49         15.16         0 \r\n 2013          194           3.835         21.96         16.85         1.58 \r\n 2013          195           27.317        28.95         15.34         0 \r\n 2013          196           24.3          31.34         16.54         0 \r\n 2013          197           27.333        32.9          21.25         0 \r\n 2013          198           27.65         34.26         20.96         0 \r\n 2013          199           26.9          33.3          21.38         0 \r\n 2013          200           26.3          32.46         16.86         0 \r\n 2013          201           23.367        29.9          14.41         0 \r\n 2013          202           15.8          28.79         17.58         2.633 \r\n 2013          203           18.267        31.92         16.96         1.58 \r\n 2013          204           21.8          25.6          12.28         0 \r\n 2013          205           22.767        25.99         10.08         0 \r\n 2013          206           17.765        21.88         12.82         0 \r\n 2013          207           14.535        18.64         8.89          0 \r\n 2013          208           24.683        21.83         7.772         0 \r\n 2013          209           25.85         24.59         7.51          0 \r\n 2013          210           14.183        23.25         14.21         0 \r\n 2013          211           20.55         26.78         14.11         0 \r\n 2013          212           22.967        27.93         12.53         6.32 \r\n 2013          213           17.133        26.01         13.49         0 \r\n 2013          214           24.883        25.43         10.44         0 \r\n 2013          215           19.683        26.29         9.47          0 \r\n 2013          216           9.24          27.09         14.8          23.171 \r\n 2013          217           22.1          30.09         16.39         0.263 \r\n 2013          218           21.717        24.59         12.56         0 \r\n 2013          219           22.65         26.82         11.01         0 \r\n 2013          220           22.217        25.34         11.35         0 \r\n 2013          221           21.433        26.5          9.38          0 \r\n 2013          222           9.5           24.72         16.78         7.373 \r\n 2013          223           22.3          26.08         13.67         0 \r\n 2013          224           23.767        22.71         9.32          0 \r\n 2013          225           22.35         25.74         7.026         0 \r\n 2013          226           22.517        25.83         8.53          0 \r\n 2013          227           23.8          27.41         8.33          0 \r\n 2013          228           23.533        28.33         9.61          0 \r\n 2013          229           22.583        26.65         8.96          0 \r\n 2013          230           20.067        27.68         11.15         0 \r\n 2013          231           21.517        30.16         16.53         0 \r\n 2013          232           14.967        29.98         19.32         1.053 \r\n 2013          233           16.383        29.55         16.47         30.812 \r\n 2013          234           19.317        27.06         15.46         0 \r\n 2013          235           17.75         29.3          18.09         0 \r\n 2013          236           22.35         31.46         21.1          0 \r\n 2013          237           22.667        33.32         21.09         0 \r\n 2013          238           22.083        33.43         21.13         0 \r\n 2013          239           18.867        31.35         20.51         0 \r\n 2013          240           21.267        33.23         21.63         0 \r\n 2013          241           20.533        33.36         21.19         0 \r\n 2013          242           14.033        30.08         17.5          0 \r\n 2013          243           19.083        26.42         14.16         0 \r\n 2013          244           21.517        20.74         7.38          0 \r\n 2013          245           21.417        25.36         5.664         0 \r\n 2013          246           20.083        31.23         10.83         0 \r\n 2013          247           19.767        27.84         15.66         0 \r\n 2013          248           20.267        30.62         16.06         0 \r\n 2013          249           18.017        32.87         17.65         0 \r\n 2013          250           8.98          23.64         19.57         0 \r\n 2013          251           18.067        35.29         19.48         0 \r\n 2013          252           18.983        33.25         16.67         0.527 \r\n 2013          253           17.467        30.31         13.69         0.79 \r\n 2013          254           20.333        23.85         8.49          0 \r\n 2013          255           21.117        21.17         5.28          0 \r\n 2013          256           17.967        23.73         3.512         5.53 \r\n 2013          257           8.162         18.27         9.96          10.004 \r\n 2013          258           16.767        20.34         6.34          0 \r\n 2013          259           4.343         16.69         7.622         1.053 \r\n 2013          260           9.135         30.49         16.34         2.37 \r\n 2013          261           11.935        29.42         17.43         7.373 \r\n 2013          262           10.288        19.14         8.39          0 \r\n 2013          263           19.483        19.93         5.078         0 \r\n 2013          264           18.383        23.13         4.937         0 \r\n 2013          265           18.7          23.12         8.19          0 \r\n 2013          266           15.033        23.15         9.03          0 \r\n 2013          267           15.133        23.55         6.613         0 \r\n 2013          268           14.85         28.07         11.39         0 \r\n 2013          269           14.2          28.69         15.06         0 \r\n 2013          270           4.265         20.99         6.076         2.37 \r\n 2013          271           17.25         23.37         2.936         0 \r\n 2013          272           15.95         24.6          8.73          0 \r\n 2013          273           16.45         27.56         7.622         0 \r\n 2013          274           14.65         26.49         5.604         0 \r\n 2013          275           7.238         26.96         13.42         1.317 \r\n 2013          276           6.33          22.31         16.21         9.745 \r\n 2013          277           11.145        20.93         4.512         1.053 \r\n 2013          278           3.937         9.7           6.35          0 \r\n 2013          279           15.55         21.51         4.038         0 \r\n 2013          280           15.483        25.24         5.664         0 \r\n 2013          281           15.033        24.11         7.167         0 \r\n 2013          282           14.95         24.74         4.633         0 \r\n 2013          283           12.125        24.51         10.56         0 \r\n 2013          284           14.817        19.21         2.288         0 \r\n 2013          285           15.067        18.17        -1.19          0 \r\n 2013          286           11.72         17.62        -0.078         1.58 \r\n 2013          287           3.688         13.18         7.238         8.163 \r\n 2013          288           2.677         9.04          1.348         0.527 \r\n 2013          289           12.217        15.88         1.035         0 \r\n 2013          290           10.565        12.27        -0.219         0 \r\n 2013          291           7.36          10.79        -3.165         1.843 \r\n 2013          292           6.472         15.46        -3.733         0 \r\n 2013          293           8.132         6.31         -5.548         0 \r\n 2013          294           6.915         7.632        -3.814         0 \r\n 2013          295           5.277         4.594        -4.392         0 \r\n 2013          296           6.91          6.753        -5.608         0 \r\n 2013          297           11.115        12.36        -6.734         0 \r\n 2013          298           12.122        10.34        -2.69          0 \r\n 2013          299           11.953        15.3         -4.858         0 \r\n 2013          300           8.295         7.794         1.46          0 \r\n 2013          301           9.632         14.37         2.512         0 \r\n 2013          302           0.126         16.16         12.74         0 \r\n 2013          303           2.801         12.68         3.623         0 \r\n 2013          304           8.1           11.13         2.855         0 \r\n 2013          305           11.73         10.11        -2.082         0 \r\n 2013          306           9.51          11.86        -2.609         0 \r\n 2013          307           1.356         9.03         -0.422         0 \r\n 2013          308           1.788         7.47         -3.014         1.053 \r\n 2013          309           10.74         5.764        -4.928         0 \r\n 2013          310           8.53          5.522        -5.862         0 \r\n 2013          311           6.409         8.05         -6.846         0 \r\n 2013          312           8.51          10.19         0.044         0 \r\n 2013          313           8.05          6.552        -0.826         0 \r\n 2013          314           4.362         3.956        -10.79         0 \r\n 2013          315           10.56        -5.598        -15.42         0 \r\n 2013          316           10.18         7.571        -10.18         0 \r\n 2013          317           7.505         8.71         -2.345         0 \r\n 2013          318           8.47          11.86        -6.136         0 \r\n 2013          319           1.444         14.8          4.896         0 \r\n 2013          320           2.237         7.53          1.572         0.263 \r\n 2013          321           9.28          3.26         -7.13          0 \r\n 2013          322           9.13          7.198        -8.48          0 \r\n 2013          323           1.236         4.31          1.753         0 \r\n 2013          324           1.461         2.836        -3.317         0 \r\n 2013          325           8.39         -3.246        -10.8          0 \r\n 2013          326           9.31         -6.806        -17.15         1 \r\n 2013          327           8.87         -5            -18.07         0 \r\n 2013          328           6.988         2.006        -6.278         0 \r\n 2013          329           7.409        -0.33         -12.23         0 \r\n 2013          330           7.971        -5.446        -15.53         0 \r\n 2013          331           7.661        -0.826        -14.63         0 \r\n 2013          332           7.047        -0.948        -15.17         0 \r\n 2013          333           7.983         7.49         -5.091         0 \r\n 2013          334           6.194         4.088        -7.322         0 \r\n 2013          335           3.2           3.31         -5.344         0 \r\n 2013          336           1.442         2.836         0.327         0 \r\n 2013          337           0.932         5.482        -6.42          0 \r\n 2013          338           7.096        -6.126        -15.95         0 \r\n 2013          339           8.08         -11.74        -19.42         3 \r\n 2013          340           7.334        -12.64        -21.15         0 \r\n 2013          341           3.224        -9.02         -13.59         0 \r\n 2013          342           8.22         -10.9         -23.62         0 \r\n 2013          343           7.206        -9.14         -20.17         2.5 \r\n 2013          344           8.23         -9.3          -23.27         0 \r\n 2013          345           5.723        -6.967        -20.52         2.5 \r\n 2013          346           5.511        -5.487        -16.18         0 \r\n 2013          347           5.201        -8.08         -14.94         0 \r\n 2013          348           3.932        -13.47        -17.22         0 \r\n 2013          349           4.777        -7.718        -14.41         0 \r\n 2013          350           7.494        -1.2          -11.98         1 \r\n 2013          351           7.52          4.724        -13.17         0.75 \r\n 2013          352           3.784        -2.184        -4.918         0 \r\n 2013          353           1.127        -4.108        -6.846         0 \r\n 2013          354           2.333        -4.756        -7.15          0.7 \r\n 2013          355           6.116        -5.162        -18.59         0 \r\n 2013          356           7.804        -18.4         -24.81         0 \r\n 2013          357           5.766        -13.41        -26.97         0 \r\n 2013          358           4.037        -2.842        -13.27         0 \r\n 2013          359           6.026        -1.434        -9.38          0.263 \r\n 2013          360           7.207         4.432        -12.9          0 \r\n 2013          361           7.733         4.956        -5.568         0 \r\n 2013          362           6.599        -5.02         -23.5          0 \r\n 2013          363           4.242        -17.34        -26.13         0 \r\n 2013          364           4.061        -15.89        -25.26         0 \r\n 2013          365           5.664        -15.7         -19.46         0 \r\n 2014          1             8.18         -16.49        -28.65         5 \r\n 2014          2             6.983        -6.136        -30.23         0 \r\n 2014          3             4.869        -0.401        -15.81         0 \r\n 2014          4             6.691        -15.9         -27.54         0 \r\n 2014          5             8.05         -24.34        -30.04         0 \r\n 2014          6             7.034        -12.74        -25.6          0 \r\n 2014          7             8.28         -15.28        -24.7          0 \r\n 2014          8             5.878        -8.14         -24.38         0 \r\n 2014          9             2.241        -0.594        -8.01          0 \r\n 2014          10            4.553        -1.697        -8.29          0 \r\n 2014          11            4.364         3.584        -5.385         1.1 \r\n 2014          12            8.57          1.348        -3.784         0 \r\n 2014          13            5.199         1.056        -13.35         0.263 \r\n 2014          14            7.926        -5.588        -18.05         0 \r\n 2014          15            6.412         0.317        -16.77         0 \r\n 2014          16            9.04         -12.13        -17.62         0 \r\n 2014          17            6.981        -7.598        -17.4          0 \r\n 2014          18            9.72          4.27         -11.6          2.5 \r\n 2014          19            5.318        -1.798        -18.4          1.9 \r\n 2014          20            8.46         -15.33        -25.77         0 \r\n 2014          21            8.87         -11.88        -23.21         1 \r\n 2014          22            10.34        -19.42        -26.15         0 \r\n 2014          23            6.472         1.076        -22.91         0 \r\n 2014          24            10.96        -0.016        -15.36         0 \r\n 2014          25            6.668        -3.429        -20.97         2.1 \r\n 2014          26            10.59        -21.07        -28.49         4.5 \r\n 2014          27            11.05        -16.05        -29.28         0 \r\n 2014          28            11.41        -2.244        -23.56         0 \r\n 2014          29            7.641        -0.725        -18.03         0 \r\n 2014          30            9.2          -11.85        -20.09         0 \r\n 2014          31            9.56         -7.516        -17.58         2.1 \r\n 2014          32            12.15        -10.2         -25.85         1.5 \r\n 2014          33            11.53        -7.424        -22.02         1.1 \r\n 2014          34            7.225        -10.07        -14.36         0 \r\n 2014          35            10.36        -14.43        -22.54         0 \r\n 2014          36            12.38        -16.03        -26.03         0 \r\n 2014          37            12.78        -11.29        -24.44         0 \r\n 2014          38            8.61         -9.14         -20.71         0 \r\n 2014          39            12.57        -15.83        -24.89         0 \r\n 2014          40            13.34        -18.32        -28.11         1.9 \r\n 2014          41            13.37        -12.91        -30.98         0 \r\n 2014          42            12.12        -3.742        -15.65         0 \r\n 2014          43            11.96         1.096        -15.34         0 \r\n 2014          44            13.92        -11.13        -18.19         0 \r\n 2014          45            5.852        -7.373        -21.99         0 \r\n 2014          46            12.31        -7.048        -14.79         0 \r\n 2014          47            10.12         1.47         -9.65          4.5 \r\n 2014          48            14.36         4.442        -10.16         0 \r\n 2014          49            14.39         3.492        -8.38          0 \r\n 2014          50            3.292         1.42         -8.24          0 \r\n 2014          51            15.73        -7.008        -15.97         1.58 \r\n 2014          52            14.47        -8.38         -18.85         0 \r\n 2014          53            16.07        -10.24        -21.38         0 \r\n 2014          54            14.27        -11.58        -19.82         0 \r\n 2014          55            16.8         -15.1         -22.42         0 \r\n 2014          56            16.84        -9.28         -27.69         3.16 \r\n 2014          57            17.08        -15.77        -26.85         0.263 \r\n 2014          58            12.27        -6.562        -26.24         0 \r\n 2014          59            8.71         -9.81         -20.91         2.37 \r\n 2014          60            16.75        -20.4         -27.52         0 \r\n 2014          61            15.72        -13.31        -29.41         0 \r\n 2014          62            16.33        -6.156        -17.15         0.263 \r\n 2014          63            15.87        -6.784        -10.15         0.527 \r\n 2014          64            16.22        -4.544        -10.09         0 \r\n 2014          65            11.71         2.128        -4.554         17.376 \r\n 2014          66            18.08        -2.012        -14.14         0 \r\n 2014          67            16.36         5.643        -14.31         10.792 \r\n 2014          68            17.3          5.2           0.508         8.429 \r\n 2014          69            7.445         3.704        -1.232         0 \r\n 2014          70            19.45        -1.16         -9.89          1.053 \r\n 2014          71            18.98         7.602        -8.97          0 \r\n 2014          72            15.63         4.057        -1.596         0 \r\n 2014          73            11.24        -0.108        -4.392         0 \r\n 2014          74            20.09        -4.27         -10.4          0 \r\n 2014          75            16.24         3.401        -7.8           0 \r\n 2014          76            11.28         4.552        -2.092         0 \r\n 2014          77            10.47         1.268        -2.558         0 \r\n 2014          78            18.47         6.189        -6.258         6 \r\n 2014          79            17.55         9.68         -2.244         1 \r\n 2014          80            19.34        -2.405        -8.39          0 \r\n 2014          81            20.51        -4.21         -12.43         0 \r\n 2014          82            10.73        -0.219        -8.21          0 \r\n 2014          83            17.14        -5.65         -11.39         0 \r\n 2014          84            16.81         5.542        -12.09         1 \r\n 2014          85            1.598         6.158         0.631         0 \r\n 2014          86            11.82         3.188        -1.171         0 \r\n 2014          87            21.78         8.01         -2.75          1.317 \r\n 2014          88            19.64         17.97         0.368         0 \r\n 2014          89            15.05         18.65        -3.946         0 \r\n 2014          90            18.42         4.28         -6.034         0 \r\n 2014          91            15.88         8.71         -4.756         2.5 \r\n 2014          92            2.902         3.886         0.692         0 \r\n 2014          93            16.18         3.32         -3.176         0 \r\n 2014          94            22.45         10.34        -4.818         8 \r\n 2014          95            10.3          14.36         1.702         0 \r\n 2014          96            12.88         14.12         2.471         0 \r\n 2014          97            21.86         11.67        -0.624         0.5 \r\n 2014          98            21.66         20.14        -2.568         0 \r\n 2014          99            20.53         15.69         2.875         0 \r\n 2014          100           20.07         21            1.39          0 \r\n 2014          101           15.73         24.49         7.38          0 \r\n 2014          102           1.439         9.01         -0.401         2.5 \r\n 2014          103           16.96         1.804        -3.905         5 \r\n 2014          104           24.33         2.592        -6.389         28 \r\n 2014          105           12.38         13.67        -0.786         0 \r\n 2014          106           16.25         5.432        -4.158         0 \r\n 2014          107           24.43         14.27        -5.273         0 \r\n 2014          108           22.53         22.83         2.42          0 \r\n 2014          109           0             15.94         13.8          10.004 \r\n 2014          110           14.367        19.53         7.208         1.843 \r\n 2014          111           25.717        14.28         0.003         0 \r\n 2014          112           5.938         9.11          5.018         5.793 \r\n 2014          113           2.895         10.09         2.006         14.483 \r\n 2014          114           25.3          19.99         1.176         0 \r\n 2014          115           22.45         17.47         4.228         0 \r\n 2014          116           8.873         12.29         3.572         28.707 \r\n 2014          117           3.188         8.98          6.148         8.957 \r\n 2014          118           3.812         6.41         -0.057         4.477 \r\n 2014          119           5.598         4.694        -0.219         15.8 \r\n 2014          120           9.832         8.2           3.492         3.687 \r\n 2014          121           16.933        17.97         5.28          0 \r\n 2014          122           25.517        17.77         4.028         0 \r\n 2014          123           14.717        12.91         3.825         3.16 \r\n 2014          124           24.517        18.33         6.108         0 \r\n 2014          125           24.967        20.59         5.18          0 \r\n 2014          126           17.6          28.7          9.77          0 \r\n 2014          127           12.312        26.07         13.72         10.274 \r\n 2014          128           11.808        16.73         4.38          0 \r\n 2014          129           12.302        20.93         3.562         0.79 \r\n 2014          130           12.43         21.59         8.66          25.276 \r\n 2014          131           9.375         22.91         7.884         23.959 \r\n 2014          132           11.51         12.16         4.452         0 \r\n 2014          133           20.717        14.86         1.5           0 \r\n 2014          134           5.913         8.49          4.068         5.53 \r\n 2014          135           13.233        10.9         -0.078         0 \r\n 2014          136           26.167        17.87         0.57          0 \r\n 2014          137           27.883        21.47         4.986         0 \r\n 2014          138           7.372         22.01         10.38         0.79 \r\n 2014          139           23.85         29.26         13.75         0 \r\n 2014          140           28.517        24.54         9.11          0.527 \r\n 2014          141           22.6          23.83         6.41          0 \r\n 2014          142           25.417        24.84         6.209         0 \r\n 2014          143           24.683        25.56         9.62          0 \r\n 2014          144           20.8          24.74         10.99         0 \r\n 2014          145           17.367        28.32         16.47         1.317 \r\n 2014          146           22.783        29.49         14.29         0 \r\n 2014          147           18.75         26.1          14.77         0 \r\n 2014          148           26.583        30.08         12.82         0 \r\n 2014          149           27.05         31.77         16.08         0 \r\n 2014          150           13.313        30.52         19.27         1.317 \r\n 2014          151           19.95         30.83         17.23         8.957 \r\n 2014          152           24.117        26.66         16.57         2.37 \r\n 2014          153           22.5          25.67         12.91         0.263 \r\n 2014          154           14.55         24.01         14.3          0.263 \r\n 2014          155           25.1          25.8          11.3          0 \r\n 2014          156           25.867        30.23         13.27         0 \r\n 2014          157           8.848         23.37         14.39         1.843 \r\n 2014          158           28.2          23.15         11.9          0 \r\n 2014          159           19.633        23.58         12.85         0 \r\n 2014          160           19.983        24.34         12.52         0 \r\n 2014          161           28.45         28.9          11.54         0 \r\n 2014          162           29.017        23.03         8.53          0 \r\n 2014          163           30.05         25.76         7.975         0 \r\n 2014          164           17.117        26.48         12.46         2.633 \r\n 2014          165           23.033        27.89         15.78         0 \r\n 2014          166           18.383        29.12         14.48         51.609 \r\n 2014          167           22.283        28.44         16.28         17.904 \r\n 2014          168           18.717        27.73         17.8          13.167 \r\n 2014          169           3.923         22.42         17.95         36.078 \r\n 2014          170           24.283        30.09         17.76         0 \r\n 2014          171           23.067        29.3          19.46         0 \r\n 2014          172           10.277        25.58         16.61         13.426 \r\n 2014          173           19.05         27.24         15.99         0 \r\n 2014          174           25.367        28.56         15.83         0.263 \r\n 2014          175           27.467        27.8          15.44         0 \r\n 2014          176           21.683        28.57         16.16         0.263 \r\n 2014          177           7.725         25.1          19.01         23.441 \r\n 2014          178           14.167        28.39         18.66         21.066 \r\n 2014          179           13.767        26.71         15.96         22.912 \r\n 2014          180           5.305         25.09         16.42         22.642 \r\n 2014          181           19.617        23.92         12.92         2.107 \r\n 2014          182           11.817        20.76         10.17         0 \r\n 2014          183           22.729        23.7          8.73          0 \r\n 2014          184           28.633        25.25         9.07          0 \r\n 2014          185           11.342        22.19         15.51         0 \r\n 2014          186           15.15         30.48         18.62         0 \r\n 2014          187           21.75         27.93         15.31         0 \r\n 2014          188           27.067        26.16         13.12         0 \r\n 2014          189           25.533        26.32         11.6          0 \r\n 2014          190           24.633        27.81         14.18         0 \r\n 2014          191           12.797        25.26         17.4          0.263 \r\n 2014          192           9.06          26.24         16.67         16.329 \r\n 2014          193           26.933        26.69         14.72         0 \r\n 2014          194           25.567        21.53         12.26         0 \r\n 2014          195           16.959        20.65         10.38         0 \r\n 2014          196           22.517        24.39         7.884         0 \r\n 2014          197           20.233        25.29         9.07          0 \r\n 2014          198           20.05         25.54         13.17         0 \r\n 2014          199           21.367        26.7          17.19         0 \r\n 2014          200           24.233        27.99         18.63         0 \r\n 2014          201           24.5          30.46         20.14         0 \r\n 2014          202           25.65         31.68         17.33         0 \r\n 2014          203           26.833        26.52         13.05         0 \r\n 2014          204           22.933        26.92         11.31         0 \r\n 2014          205           16.55         27.09         16.61         11.591 \r\n 2014          206           16.617        29.07         17.3          0 \r\n 2014          207           19.483        23.47         15.52         1.053 \r\n 2014          208           19.456        23.09         12.71         0 \r\n 2014          209           25.983        25.01         11.13         0 \r\n 2014          210           24.783        26.16         10.97         0 \r\n 2014          211           23.633        26.63         10.58         0 \r\n 2014          212           23.417        28.19         11.11         0 \r\n 2014          213           23.917        28.73         11.93         0 \r\n 2014          214           22.6          28.76         14.13         4.74 \r\n 2014          215           19.633        29.02         16.52         16.857 \r\n 2014          216           8.17          25.35         16.41         0 \r\n 2014          217           13.39         24.01         15.75         0 \r\n 2014          218           14.47         24.32         15.3          0 \r\n 2014          219           22.53         26.54         17.59         0 \r\n 2014          220           21.28         27.65         14.13         0 \r\n 2014          221           15.99         27.3          13.98         0 \r\n 2014          222           10.2          22.33         14.67         0 \r\n 2014          223           25.37         24.21         11.82         0 \r\n 2014          224           24.47         27.72         9.85          0 \r\n 2014          225           21.54         25.88         13            0 \r\n 2014          226           13.94         24.74         15.17         0 \r\n 2014          227           17.42         28.99         16.82         0 \r\n 2014          228           18.94         28.68         15.12         0 \r\n 2014          229           22.6          30.86         18.65         2.107 \r\n 2014          230           22.18         27.34         17.27         0 \r\n 2014          231           14.2          26.96         15.32         0 \r\n 2014          232           11.79         29.16         20.24         12.109 \r\n 2014          233           15.93         30.52         19.96         0 \r\n 2014          234           10.14         26.78         20.62         8.429 \r\n 2014          235           21.71         32.6          20.35         0.79 \r\n 2014          236           21.46         31.05         19.18         0.263 \r\n 2014          237           19.89         24.56         16.3          0 \r\n 2014          238           17.9          24.57         13.81         0 \r\n 2014          239           4.697         21.47         15.8          13.167 \r\n 2014          240           17.34         30.08         18.81         29.226 \r\n 2014          241           18.11         27.07         14.76         3.16 \r\n 2014          242           17.74         29.76         14.19         27.909 \r\n 2014          243           15.98         24.97         14.09         8.429 \r\n 2014          244           22.15         25.15         13.04         0.79 \r\n 2014          245           20.68         28.47         12.3          0 \r\n 2014          246           18.78         31.74         21.24         0 \r\n 2014          247           12.71         23.03         9.57          2.633 \r\n 2014          248           22.68         23.85         7.672         0 \r\n 2014          249           21.45         24.21         7.59          0 \r\n 2014          250           8.56          22.12         10.81         0 \r\n 2014          251           6.208         23.67         17.36         1.053 \r\n 2014          252           8.85          20.31         8.37          3.95 \r\n 2014          253           15.28         15.07         4.684         0 \r\n 2014          254           7.701         9.88          2.693         8.163 \r\n 2014          255           21.38         15.46        -0.3           0 \r\n 2014          256           15.62         19.96         4.916         0 \r\n 2014          257           9.34          15.85         3.391         4.213 \r\n 2014          258           20.9          19.76         0.489         0 \r\n 2014          259           19.69         23.72         4.654         0 \r\n 2014          260           19.7          23.22         5.219         0 \r\n 2014          261           17.47         25.29         10.26         0 \r\n 2014          262           14.63         27.08         11.76         13.954 \r\n 2014          263           12.14         19.3          6.3           0.263 \r\n 2014          264           19.66         22.83         3.138         0 \r\n 2014          265           15.94         22.99         7.188         0 \r\n 2014          266           5.111         17.35         12.72         2.107 \r\n 2014          267           13.89         25.47         12.03         0 \r\n 2014          268           17.34         27.4          10.52         0 \r\n 2014          269           16.59         27.93         12.21         0 \r\n 2014          270           15.76         28.51         9.96          0 \r\n 2014          271           15.82         26.57         9.39          0 \r\n 2014          272           10.53         17.84         8.96          0 \r\n 2014          273           5.979         20.5          9.84          3.95 \r\n 2014          274           2.247         19.25         10.48         13.167 \r\n 2014          275           5.805         10.5          2.674         0 \r\n 2014          276           12.18         11.7          0.53          0 \r\n 2014          277           8.64          12.96        -0.047         0 \r\n 2014          278           15.26         16.53         1.238         0 \r\n 2014          279           11.69         18.59         5.25          0.79 \r\n 2014          280           16.03         20.67         2.865         0 \r\n 2014          281           12.3          15.16         1.42          0 \r\n 2014          282           14.2          13.62        -1.544         0 \r\n 2014          283           15.89         16.06        -2.204         0 \r\n 2014          284           7.11          14.28         0.266         0 \r\n 2014          285           1.882         11.64         9.65          23.441 \r\n 2014          286           2.476         12.46         7.752         33.176 \r\n 2014          287           15.4          19.29         2.309         0 \r\n 2014          288           14.24         22.75        -0.401         0 \r\n 2014          289           4.139         11.94         6.118         0 \r\n 2014          290           12.18         13.83         0.276         0 \r\n 2014          291           11.38         18.91        -0.28          0 \r\n 2014          292           13.96         19.5          3.623         0 \r\n 2014          293           13.95         15.72         0.651         0 \r\n 2014          294           10.56         15.92         2.249         0 \r\n 2014          295           4.367         14.74         5.906         10.274 \r\n 2014          296           3.426         15.98         7.318         0.263 \r\n 2014          297           12.86         19.52         3.31          0.263 \r\n 2014          298           7.884         17.65        -0.188         0 \r\n 2014          299           7.648         21.09         5.856         0 \r\n 2014          300           7.556         11.45         2.471         0 \r\n 2014          301           11.33         8.73         -1.252         0 \r\n 2014          302           5.391         12.4          0.792         0 \r\n 2014          303           12.51         4.643        -7.373         0 \r\n 2014          304           12.13         6.724        -9.28          0 \r\n 2014          305           9.95          13.19         0.479         0 \r\n 2014          306           4.884         15.65         5.18          0.79 \r\n 2014          307           10.99         13.69        -0.806         0.263 \r\n 2014          308           3.687         11.39        -1.98          0 \r\n 2014          309           8.69          7.198        -4.736         0 \r\n 2014          310           6.798         10.27        -4.058         0 \r\n 2014          311           9.58          7.542        -0.522         0 \r\n 2014          312           6.528         9.84          0.692         0 \r\n 2014          313           7.722         15.16        -0.948         0 \r\n 2014          314           4.134        -0.684        -6.988         0 \r\n 2014          315           5.976        -5.73         -8.78          0 \r\n 2014          316           4.233        -4.636        -10.9          0 \r\n 2014          317           10           -5.162        -14.43         0 \r\n 2014          318           3.322        -5.385        -14.65         0 \r\n 2014          319           9.87         -6.846        -17.46         0 \r\n 2014          320           9.3          -11.28        -16.19         0 \r\n 2014          321           9.24         -7.78         -17.62         0 \r\n 2014          322           7.225        -4.696        -10.48         0 \r\n 2014          323           9.91         -6.846        -18.19         0 \r\n 2014          324           8.78          0.054        -18.76         0 \r\n 2014          325           3.418         10.88        -0.118         0 \r\n 2014          326           1.073         10.02         0.297         3.423 \r\n 2014          327           3.69          0.368        -10.22         0 \r\n 2014          328           9.34         -4.168        -16.43         0 \r\n 2014          329           5.054        -1.13         -6.764         0.79 \r\n 2014          330           9.29         -6.622        -19.25         0 \r\n 2014          331           6.114        -1.838        -12.72         0 \r\n 2014          332           8.32          7.571        -4.382         1.053 \r\n 2014          333           8.01         -2.213        -13.69         0 \r\n 2014          334           7.142        -11.35        -17.42         0 \r\n 2014          335           7.559        -1.758        -12.84         0 \r\n 2014          336           8.59         -1.818        -10.95         0 \r\n 2014          337           7.161        -0.098        -10.05         0 \r\n 2014          338           2.707         1.238        -1.616         0 \r\n 2014          339           7.863         3.461        -6.755         0 \r\n 2014          340           3.807         1.5          -4.656         4.213 \r\n 2014          341           1.282         1.722        -4.21          1.053 \r\n 2014          342           4.614         0.458        -7.048         0 \r\n 2014          343           1.943        -1.474        -4.301         0 \r\n 2014          344           1.578        -1.869        -4.382         0 \r\n 2014          345           2.13          2.309        -1.898         0 \r\n 2014          346           1.944         7.642        -1.079         0 \r\n 2014          347           1.348         9.72          6.189         0.263 \r\n 2014          348           1.019         8.83          4.522         10.792 \r\n 2014          349           2.242         4.594        -8.31          0.263 \r\n 2014          350           7.488        -4.938        -12.03         0 \r\n 2014          351           4.616        -5.04         -12.11         0 \r\n 2014          352           2.497        -1.808        -5.588         0 \r\n 2014          353           1.019        -0.553        -2.832         0 \r\n 2014          354           1.077         3.36         -0.584         0 \r\n 2014          355           1.346         2.612         0.803         3.95 \r\n 2014          356           3.657         1.41         -0.24          13.954 \r\n 2014          357           2.386         1.611        -1.96          7.11 \r\n 2014          358           5.856         5.754        -2.366         1.317 \r\n 2014          359           4.744         2.713        -2.932         0 \r\n 2014          360           4.33          0.145        -10.58         1.053 \r\n 2014          361           7.652        -1.96         -12.8          0 \r\n 2014          362           5.646        -6.886        -17.94         0 \r\n 2014          363           7.932        -14.81        -20.82         0 \r\n 2014          364           8.17         -7.11         -21.27         0 \r\n 2014          365           6.225        -1.232        -13.05         0 \r\n 2015          1             4.618        -2            -13.36         0 \r\n 2015          2             3.629        -0.289        -6.521         0.527 \r\n 2015          3             7.699        -6.45         -21.38         0 \r\n 2015          4             3.947        -15.42        -25.93         1 \r\n 2015          5             5.687        -14.23        -27.62         0 \r\n 2015          6             8.57         -17.87        -25.87         5 \r\n 2015          7             4.195        -7.048        -24.7          0 \r\n 2015          8             8.45         -15.46        -21.72         0 \r\n 2015          9             4.924        -5.182        -22.79         1.2 \r\n 2015          10            6.796        -5.344        -15.73         0 \r\n 2015          11            9.14         -9.79         -23.1          0 \r\n 2015          12            8.94         -8.52         -24.57         0 \r\n 2015          13            3.655        -4.392        -11.56         0 \r\n 2015          14            8.83          1.196        -8.94          0 \r\n 2015          15            8.7           3.098        -9.51          0 \r\n 2015          16            4.152         4.189        -0.118         0 \r\n 2015          17            9.21          4.228        -4.746         0 \r\n 2015          18            6.178         5.2          -6.947         0.263 \r\n 2015          19            2.492         1.804        -0.826         0.527 \r\n 2015          20            3.057         0.408        -3.51          0.79 \r\n 2015          21            3.563        -2.223        -6.217         0 \r\n 2015          22            5.059         2.39         -7.09          0 \r\n 2015          23            9.38          7.056        -4.189         0 \r\n 2015          24            4.646         1.238        -3.298         0.263 \r\n 2015          25            6.423         6.178        -4.087         0.527 \r\n 2015          26            2.846         0.813        -2.497         0 \r\n 2015          27            4.156         1.682        -4.048         0 \r\n 2015          28            3.433         0.752        -7.171         0 \r\n 2015          29            10.83        -1.616        -13.38         0 \r\n 2015          30            4.257         1.277        -8.67          0 \r\n 2015          31            6.346        -2.791        -15.95         0 \r\n 2015          32            11.29        -11.33        -23.74         10.41 \r\n 2015          33            5.192        -9.52         -20.4          2 \r\n 2015          34            10.09        -9.65         -23.03         0 \r\n 2015          35            11.73        -11.59        -27.15         0 \r\n 2015          36            11.07        -0.886        -15.2          1.053 \r\n 2015          37            10.84         5.38         -8.33          0 \r\n 2015          38            5.771         1.4          -2.366         0.527 \r\n 2015          39            5.16         -2.325        -8.3           0 \r\n 2015          40            4.333        -0.34         -8.62          0 \r\n 2015          41            11.44         1.217        -15.99         0.263 \r\n 2015          42            12.04        -12.74        -18.89         0 \r\n 2015          43            10.69        -0.806        -16.36         0 \r\n 2015          44            12.93        -8.29         -19.72         0 \r\n 2015          45            7.926        -12.86        -18.48         0 \r\n 2015          46            7.459        -5.952        -14.13         0 \r\n 2015          47            13.49        -10.45        -17.03         0 \r\n 2015          48            13.29        -15.66        -21.58         0 \r\n 2015          49            14.47        -12.21        -25.79         0 \r\n 2015          50            9.95         -3.054        -15.95         0 \r\n 2015          51            5.556        -2.912        -15.14         0 \r\n 2015          52            14.56        -14.64        -21.72         0 \r\n 2015          53            15.46        -10.55        -26.83         0 \r\n 2015          54            11.5          1.744        -10.94         0 \r\n 2015          55            8.11         -8.89         -18.46         0 \r\n 2015          56            16.44        -15.3         -25.33         0 \r\n 2015          57            16.61        -14.24        -31.54         6.86 \r\n 2015          58            15.78        -10.5         -28.69         0 \r\n 2015          59            16.03        -5.264        -14.51         0 \r\n 2015          60            14.53        -3.925        -21.46         0.263 \r\n 2015          61            7.917        -0.482        -13.84         0 \r\n 2015          62            17.06        -10.64        -20.66         0 \r\n 2015          63            17.9         -11.68        -25.09         0 \r\n 2015          64            17.14         2.532        -17.9          0 \r\n 2015          65            17.59         5.4          -5.638         0 \r\n 2015          66            14.18         7.823        -1.726         0.263 \r\n 2015          67            17.61         10.93        -1.484         0 \r\n 2015          68            17.31         16.78        -0.594         0 \r\n 2015          69            18.13         13.98        -1.434         0 \r\n 2015          70            16.13         16.63         0.286         0 \r\n 2015          71            15.79         18.87         2.734         0 \r\n 2015          72            18.77         14.92        -1.808         0 \r\n 2015          73            12.84         18.82        -1.13          0 \r\n 2015          74            14.73         25.22         4.341         0 \r\n 2015          75            19.19         6.996        -2.832         0 \r\n 2015          76            6.15          6.158        -1.716         0 \r\n 2015          77            9.09          8.78          0.327         0 \r\n 2015          78            19.17         14.56        -3.257         0 \r\n 2015          79            19.12         9.02         -1.98          0 \r\n 2015          80            10.49         4.128        -2.204         0 \r\n 2015          81            8.26         -0.704        -3.46          2.37 \r\n 2015          82            9.87          3.179        -2.982         1.843 \r\n 2015          83            10.73         4.856        -1.898         9.745 \r\n 2015          84            18.82         2.492        -3.216         0 \r\n 2015          85            21.37         1.46         -8.75          0 \r\n 2015          86            21.28         6.794        -7.87          0 \r\n 2015          87            14.57         14.18        -0.644         1.58 \r\n 2015          88            17.1          22.15        -1.2           0 \r\n 2015          89            21.44         19.35        -1.554         0 \r\n 2015          90            21.47         26.73         3.34          0 \r\n 2015          91            19.3          18.3          7.036         9.476 \r\n 2015          92            16.92         7.318        -5.172         0 \r\n 2015          93            22.31         16.15        -5.699         0 \r\n 2015          94            20.75         19.94        -0.219         0 \r\n 2015          95            9.36          15.59         1.035         0 \r\n 2015          96            3.307         8.43          3.34          13.695 \r\n 2015          97            5.948         9.37          3.784         15.541 \r\n 2015          98            3.547         8.1          -0.036         18.174 \r\n 2015          99            20.07         10.12         0.651         0 \r\n 2015          100           23.69         19.99         0.226         0 \r\n 2015          101           22.05         20.33         8.51          0 \r\n 2015          102           24.85         17.44         1.896         0.263 \r\n 2015          103           20.91         20.97        -1.19          0 \r\n 2015          104           17.1          20.43         5.138         0 \r\n 2015          105           16.92         23.03         9.44          0 \r\n 2015          106           21.68         26.4          6.572         0 \r\n 2015          107           14.9          26.7          10.38         7.9 \r\n 2015          108           9.07          18.83         6.743         17.376 \r\n 2015          109           13.4          8.37          1.338         3.423 \r\n 2015          110           15.61         8             0.803         0 \r\n 2015          111           26.38         10.26        -2.223         0 \r\n 2015          112           26.53         13.45        -4.534         0 \r\n 2015          113           5.547         8.21          2.512         10.533 \r\n 2015          114           11.49         11.88         2.268         0 \r\n 2015          115           26.97         16.18        -2.102         0 \r\n 2015          116           26.45         19.19        -0.584         0 \r\n 2015          117           22.81         23.09         1.935         0 \r\n 2015          118           25.84         21.02         4.916         0 \r\n 2015          119           26.36         19.8          1.53          0 \r\n 2015          120           10.74         19.15         2.997         0 \r\n 2015          121           24.41         25.49         8.47          0 \r\n 2015          122           22.17         28.7          13.27         12.907 \r\n 2015          123           18.39         20.64         13.25         0.527 \r\n 2015          124           3.768         14.47         11.29         6.057 \r\n 2015          125           14.1          25.16         12.48         1.843 \r\n 2015          126           18.23         26.08         16.16         0 \r\n 2015          127           15.9          17.61         12.42         36.078 \r\n 2015          128           21.14         21.17         9.18          0 \r\n 2015          129           9.28          18            13.33         0 \r\n 2015          130           6.319         16.32         5.744         0 \r\n 2015          131           22.83         15.96         4.775         0 \r\n 2015          132           27.33         20.67         4.976         0 \r\n 2015          133           3.837         14.06         9.66          7.9 \r\n 2015          134           16.83         22.56         13.99         0 \r\n 2015          135           13.96         27.21         15.23         5.53 \r\n 2015          136           14.76         24.91         12.22         0.263 \r\n 2015          137           12.77         12.21         3.461         0.263 \r\n 2015          138           26.08         12.86         3.198         0 \r\n 2015          139           7.735         9.17          4.047         2.633 \r\n 2015          140           28.67         24.38         2.946         0 \r\n 2015          141           25.42         24.15         4.472         0 \r\n 2015          142           23.34         25.44         11.21         0 \r\n 2015          143           3.575         18.35         14.25         9.217 \r\n 2015          144           19.93         25.86         16.17         8.957 \r\n 2015          145           7.427         19.83         14.63         24.488 \r\n 2015          146           26.68         27.74         13.47         0 \r\n 2015          147           25.92         28.03         15.02         0 \r\n 2015          148           13.54         25.52         16.83         3.95 \r\n 2015          149           11.38         16.77         9.69          1.843 \r\n 2015          150           30.34         19.15         7.218         0 \r\n 2015          151           30.69         22.13         5.421         0 \r\n 2015          152           23.64         23.64         10.1          0 \r\n 2015          153           17.09         27.87         13.94         0.263 \r\n 2015          154           22.52         27.66         14.01         0 \r\n 2015          155           27.98         27.67         15.4          0 \r\n 2015          156           22.14         26.14         14.21         0 \r\n 2015          157           24.67         28.48         16.89         5.793 \r\n 2015          158           25.53         28.45         15.37         0 \r\n 2015          159           28.08         36.1          13.53         0 \r\n 2015          160           28.93         30.14         18.73         0 \r\n 2015          161           4.636         20.58         15.75         14.742 \r\n 2015          162           9.23          19.59         14.27         1.053 \r\n 2015          163           14.27         24.52         15.84         0.263 \r\n 2015          164           24.52         28.7          15.75         0 \r\n 2015          165           7.786         22.74         13.28         16.857 \r\n 2015          166           29.61         25.34         10.77         0 \r\n 2015          167           12.99         25.47         17.08         0 \r\n 2015          168           24.58         25.81         14.13         0 \r\n 2015          169           29.13         26.85         14.05         0 \r\n 2015          170           6.436         26.87         15.35         8.957 \r\n 2015          171           17.41         29.62         15.52         0 \r\n 2015          172           15.62         28.68         17.79         29.754 \r\n 2015          173           20.689        24.85         12.56         0 \r\n 2015          174           20.01         24.19         12.54         0 \r\n 2015          175           19.85         27.77         18.03         1.053 \r\n 2015          176           9.72          23.39         15.06         46.342 \r\n 2015          177           28.12         27.3          12.42         0 \r\n 2015          178           16.45         25.76         15.82         14.224 \r\n 2015          179           21.5          27.29         14.32         0 \r\n 2015          180           21.82         25.68         13.42         0 \r\n 2015          181           12.6          19.28         10.69         0 \r\n 2015          182           24.43         22.64         8.65          0 \r\n 2015          183           23.58         25.63         9.95          0 \r\n 2015          184           23.9          26.89         11.99         0 \r\n 2015          185           24.7          28.76         14.83         0 \r\n 2015          186           10.87         25.37         14.45         23.171 \r\n 2015          187           29.08         20.05         10.71         0 \r\n 2015          188           19.29         22.23         8.53          0 \r\n 2015          189           23.86         25.47         9.7           0 \r\n 2015          190           25.04         28.13         13.39         0 \r\n 2015          191           14.089        26.77         17.16         0 \r\n 2015          192           19.36         29.99         19.14         0 \r\n 2015          193           25.17         32.78         20.73         0 \r\n 2015          194           26.41         28.66         17.83         0 \r\n 2015          195           15.5          24.59         15.93         0 \r\n 2015          196           7.528         26.9          18            20.807 \r\n 2015          197           26.45         33.86         19.42         0 \r\n 2015          198           26            31.05         19.32         0.263 \r\n 2015          199           24.54         28.22         14.59         0 \r\n 2015          200           17.583        27.73         14.89         6.32 \r\n 2015          201           28.39         26.99         12.18         0 \r\n 2015          202           25.9          28.43         11.86         0 \r\n 2015          203           27.06         28.97         12            0 \r\n 2015          204           16.93         29.41         17.06         17.645 \r\n 2015          205           25.57         31.7          18.19         0 \r\n 2015          206           22.07         28.67         18.92         11.062 \r\n 2015          207           16.91         28.44         19.75         0 \r\n 2015          208           11.76         28.7          21.13         22.383 \r\n 2015          209           25.48         27.71         15.97         0 \r\n 2015          210           27.57         29.74         13.45         0 \r\n 2015          211           27.8          27.5          14.92         0 \r\n 2015          212           25.33         30.77         12.79         0 \r\n 2015          213           26.48         31.74         17.13         0 \r\n 2015          214           27.85         26.68         11.9          0 \r\n 2015          215           23.25         26.46         10.82         0 \r\n 2015          216           22.35         25.84         9.88          0 \r\n 2015          217           13.76         27.24         12.72         0 \r\n 2015          218           21.12         29.3          16.99         0 \r\n 2015          219           13.03         26.74         15.75         0.263 \r\n 2015          220           14.18         27.47         17.66         1.053 \r\n 2015          221           22.1          27.72         15.24         0.263 \r\n 2015          222           26.55         27.84         13.35         0 \r\n 2015          223           25.98         29.15         12.24         0 \r\n 2015          224           21.07         30.36         15.89         0 \r\n 2015          225           23.92         32.62         19.4          0 \r\n 2015          226           24.09         31.47         16.38         0 \r\n 2015          227           18.7          30.27         18.15         0 \r\n 2015          228           8.52          25.42         18.82         6.32 \r\n 2015          229           4.216         19.96         14.74         28.707 \r\n 2015          230           11.49         21.61         12.01         0.527 \r\n 2015          231           25.44         24.38         9.27          0 \r\n 2015          232           19.98         27.16         12.03         0 \r\n 2015          233           18.3          26.19         15.7          11.321 \r\n 2015          234           21.49         22.58         10.11         0.79 \r\n 2015          235           24.89         20.54         8.37          0 \r\n 2015          236           24.69         22.81         7.712         0 \r\n 2015          237           23.04         25.77         6.35          0 \r\n 2015          238           15.7          24.59         8.45          0 \r\n 2015          239           1.014         16.98         14.7          62.142 \r\n 2015          240           15.39         24.33         13.5          0 \r\n 2015          241           10.07         23.32         11.29         0 \r\n 2015          242           18.43         29.89         13.91         0 \r\n 2015          243           20.05         30.7          18.98         0 \r\n 2015          244           18.41         30.63         20.22         0.79 \r\n 2015          245           21.02         32.62         17.77         0 \r\n 2015          246           19.94         32.26         18.97         0 \r\n 2015          247           18.74         32.34         21.16         0 \r\n 2015          248           16.34         33.2          20.22         20.279 \r\n 2015          249           11.26         28.89         20.4          0 \r\n 2015          250           12.45         25.9          13.86         7.373 \r\n 2015          251           21.04         27.47         8.99          0 \r\n 2015          252           14.04         24.92         10.37         13.695 \r\n 2015          253           17.82         18.67         7.278         0 \r\n 2015          254           18.89         20.91         4.896         0 \r\n 2015          255           21.06         23.54         4.552         0 \r\n 2015          256           18.35         28.72         11.77         0 \r\n 2015          257           18.85         29.95         16.24         0 \r\n 2015          258           18.74         30.8          18.59         0 \r\n 2015          259           5.81          25.33         17.05         11.062 \r\n 2015          260           9.7           20.96         11.11         2.37 \r\n 2015          261           19.9          21.47         6.168         0 \r\n 2015          262           17.59         23.6          4.411         0 \r\n 2015          263           18.99         25.68         8.41          0 \r\n 2015          264           12.94         29.85         12.1          0 \r\n 2015          265           11.08         28.45         15.73         0 \r\n 2015          266           10.97         27.16         15.72         0 \r\n 2015          267           10.32         24.31         14.88         0 \r\n 2015          268           17.96         27.94         11.05         0 \r\n 2015          269           17.36         28.1          11.43         0 \r\n 2015          270           12.82         29.76         14.46         5.53 \r\n 2015          271           17.04         20.8          5.238         2.37 \r\n 2015          272           18.14         18.27         4.088         0 \r\n 2015          273           17.77         17.22         3.017         0 \r\n 2015          274           17.78         17.73         3.078         0 \r\n 2015          275           17.55         16.95         3.956         0 \r\n 2015          276           4.974         10.91         3.674         0 \r\n 2015          277           16.39         21.92         3.522         0 \r\n 2015          278           10.61         23.71         6.007         0 \r\n 2015          279           15.71         23.36         7.652         0 \r\n 2015          280           10.59         25.22         11.43         0 \r\n 2015          281           15.27         17.58         2.784         0 \r\n 2015          282           15            22.32         0.832         0 \r\n 2015          283           15.26         29.56         8.8           0 \r\n 2015          284           8.64          20.47         9.05          0 \r\n 2015          285           14.39         18.62         3.299         0 \r\n 2015          286           15.04         21.63        -1.21          0 \r\n 2015          287           14.03         17.89         4.038         0 \r\n 2015          288           13.64         9.54         -3.236         0 \r\n 2015          289           14.51         14.05        -6.745         0 \r\n 2015          290           13.97         16.58         1.014         0 \r\n 2015          291           13.35         26.36         9.27          0 \r\n 2015          292           11.06         22.97         10.77         0 \r\n 2015          293           8.16          19.44         2.754         0 \r\n 2015          294           10.85         17.18        -0.776         0 \r\n 2015          295           2.344         16.06         10.75         5.53 \r\n 2015          296           6.508         15.51         1.925         0 \r\n 2015          297           12.68         16.65        -1.636         0 \r\n 2015          298           11.49         16.97         3.432         0 \r\n 2015          299           3.068         11.76         7.338         22.383 \r\n 2015          300           2.174         9.46          0.914         2.107 \r\n 2015          301           3.978         9.15          1.884         0 \r\n 2015          302           7.834         12.08         4.734         0.263 \r\n 2015          303           2.751         9.92          5.31          9.745 \r\n 2015          304           11.68         18.15         3.098         0 \r\n 2015          305           11.19         23.23         7.167         0 \r\n 2015          306           11.62         20.77         4.432         0 \r\n 2015          307           8.4           18.01         10.65         0 \r\n 2015          308           4.287         20.85         6.189         2.107 \r\n 2015          309           5.75          10.29        -0.159         0 \r\n 2015          310           10.97         10.13        -1.332         0 \r\n 2015          311           10.96         13.68        -1.241         0 \r\n 2015          312           10.82         14.96         0.246         0 \r\n 2015          313           8.8           14.03        -3.034         0 \r\n 2015          314           3.526         14.93         5.229         12.638 \r\n 2015          315           7.017         7.712         1.439         3.423 \r\n 2015          316           10.56         6.914        -4.128         0 \r\n 2015          317           9.4           15.76        -4.048         0 \r\n 2015          318           8.2           15.76         2.46          0 \r\n 2015          319           1.122         12.63         7.612         7.637 \r\n 2015          320           0.797         14.66         9             5.267 \r\n 2015          321           3.694         15.18         3.927         6.057 \r\n 2015          322           7.791         4.573        -3.48          0 \r\n 2015          323           2.085         0.155        -6.126         0 \r\n 2015          324           9.79         -2.912        -17.95         0 \r\n 2015          325           9.25         -2.366        -16.95         0 \r\n 2015          326           9.47          1.844        -8.92          0.527 \r\n 2015          327           8.71          3.25         -8.04          0 \r\n 2015          328           3.985         10            1.056         0 \r\n 2015          329           0.795         7.904        -1.069         19.75 \r\n 2015          330           2.488        -1.069        -4.777         0 \r\n 2015          331           6.836         0.145        -8.37          0.263 \r\n 2015          332           4.03          1.014        -5.477         0 \r\n 2015          333           2.29          2.208        -0.594         12.638 \r\n 2015          334           2.114         2.168        -2.528         0.527 \r\n 2015          335           8             0.813        -7.636         0.527 \r\n 2015          336           8.21          4.472        -4.493         0 \r\n 2015          337           8.4           8.76         -5.822         0.263 \r\n 2015          338           6.51          7.622         1.056         0 \r\n 2015          339           2.193         5.724         2.228         0 \r\n 2015          340           5.615         7.52          0.489         0 \r\n 2015          341           2.429         6.895        -1.92          0 \r\n 2015          342           6.993         9.37         -1.535         0 \r\n 2015          343           3.367         9.46          2.026         1.053 \r\n 2015          344           4.247         6.753        -0.422         0 \r\n 2015          345           1.625         6.895         4.361         5.267 \r\n 2015          346           0.752         9.78          5.835         37.924 \r\n 2015          347           4.06          8.05          0.792         21.066 \r\n 2015          348           2.48          2.896        -0.088         0 \r\n 2015          349           1.717         6.613        -3.338         0 \r\n 2015          350           5.49          0.165        -7.21          0 \r\n 2015          351           4.225        -1.96         -11.68         0 \r\n 2015          352           7.434        -0.907        -14.44         0 \r\n 2015          353           4.503         8.21         -1.576         0 \r\n 2015          354           1.025         3.632        -0.633         0 \r\n 2015          355           1.658         1.662        -2.75          0 \r\n 2015          356           0.762         5.522        -0.584         16.857 \r\n 2015          357           4.149        -0.159        -4.594         0.263 \r\n 2015          358           4.538        -1.372        -4.656         0 \r\n 2015          359           2.115         0.104        -1.535         0.263 \r\n 2015          360           6.671        -1.009        -8.78          0 \r\n 2015          361           2.039        -4.574        -7.354         0 \r\n 2015          362           5.212        -4.026        -7.556         0 \r\n 2015          363           5.808        -4.798        -7.962         0 \r\n 2015          364           7.592        -6.806        -13.61         0 \r\n 2015          365           7.133        -1.434        -13.12         0 \r\n 2016          1             7.133        -1.434        -13.12         0 \r\n 2016          2             8.42         -4.178        -14.98         0 \r\n 2016          3             5.171        -2.486        -9.01          0 \r\n 2016          4             5.522        -4.452        -8.93          0 \r\n 2016          5             8.19         -2.446        -10.4          0.2633306 \r\n 2016          6             5.415         0.064        -5.406         0 \r\n 2016          7             3.913         0.692        -0.735         7.373257 \r\n 2016          8             3.041         1.176        -4.675         7.899919 \r\n 2016          9             7.447        -4.614        -20.8          0 \r\n 2016          10            8.96         -18.76        -23.94         0 \r\n 2016          11            5.016        -9.08         -23.52         0 \r\n 2016          12            9.07         -11.54        -22.82         0 \r\n 2016          13            8.22         -3.196        -18.68         0 \r\n 2016          14            8.26          3.32         -7.272         0 \r\n 2016          15            4.817        -4.736        -11.95         0 \r\n 2016          16            6.989        -11.44        -22.97         0 \r\n 2016          17            9.56         -21.43        -26.25         0 \r\n 2016          18            7.788        -17.34        -27.02         0 \r\n 2016          19            8.17         -13.23        -23.87         0 \r\n 2016          20            6.255        -7.76         -13.29         0 \r\n 2016          21            9.33         -1.576        -10.99         0 \r\n 2016          22            5.576        -5.872        -11.29         0 \r\n 2016          23            6.555        -5.142        -7.678         0 \r\n 2016          24            4.3          -0.442        -5.234         0 \r\n 2016          25            3.289        -2.204        -5.01          0 \r\n 2016          26            8.28         -3.804        -6.186         0 \r\n 2016          27            8.26          1.652        -8.84          1.053322 \r\n 2016          28            7.048         1.722        -9.7           0 \r\n 2016          29            9.09          1.358        -11.36         0 \r\n 2016          30            9.07          4.643        -4.828         0.2633306 \r\n 2016          31            6.282         2.33         -2.528         0.5266612 \r\n 2016          32            6.535        -1.1          -5.406         0.2633306 \r\n 2016          33            3.731         0.53         -2.507         3.159967 \r\n 2016          34            9.7          -1.22         -16.46         0 \r\n 2016          35            9.5          -4.128        -17.64         0.5266612 \r\n 2016          36            9.87         -4.006        -18.79         0.2633306 \r\n 2016          37            9.36          1.238        -4.026         0 \r\n 2016          38            11.35         2.674        -6.794         0 \r\n 2016          39            8.43         -6.806        -11.77         0 \r\n 2016          40            12.73        -10.97        -15.16         0 \r\n 2016          41            10.1         -10.3         -19.54         0 \r\n 2016          42            12.28        -9.04         -22.62         0 \r\n 2016          43            13.29        -10.26        -19.37         0 \r\n 2016          44            12.38        -12.16        -23.38         0 \r\n 2016          45            7.67         -8.21         -12.27         0 \r\n 2016          46            9.78         -0.522        -8.4           0 \r\n 2016          47            7.706         1.248        -6.136         0 \r\n 2016          48            9.52         -1.93         -10.32         0 \r\n 2016          49            9.6           3.38         -4.392         0 \r\n 2016          50            9.36          5.624         1.915         0 \r\n 2016          51            13.55         4.643        -1.312         0 \r\n 2016          52            12.34         3.36         -2.791         0 \r\n 2016          53            5.786         2.592        -1.048         0 \r\n 2016          54            5.238         4.462        -0.198         0 \r\n 2016          55            4.632         2.532         0.064         0 \r\n 2016          56            11.78         0.307        -2.233         0 \r\n 2016          57            12.85         4.522        -2.598         0 \r\n 2016          58            15.21         15.99        -2.416         0 \r\n 2016          59            7.589         9.16         -1.444         0 \r\n 2016          60            7.622         4.39         -5.466         0 \r\n 2016          61            15.92        -5.426        -21.09         0 \r\n 2016          62            14.62        -2.71         -22.56         1.579984 \r\n 2016          63            11.14         0.56         -9.65          0 \r\n 2016          64            8.62          2.33         -12.07         0 \r\n 2016          65            6.738         2.522        -2.528         0 \r\n 2016          66            13.71         13.83        -2.71          0 \r\n 2016          67            11.01         20.32         4.937         0 \r\n 2016          68            9.72          21.81         6.43          0 \r\n 2016          69            9.55          9.48         -0.968         0 \r\n 2016          70            13.8          9.68         -2.953         0 \r\n 2016          71            17.14         18.9         -4.96          0 \r\n 2016          72            11.32         16.98         3.34          0 \r\n 2016          73            4.418         12.47         7.138         8.428653 \r\n 2016          74            5.865         14.83         7.984         1.316653 \r\n 2016          75            4.649         13.1          7.51          24.22849 \r\n 2016          76            14.75         11.39         0.954         2.106645 \r\n 2016          77            18.24         11.25        -3.672         0 \r\n 2016          78            7.633         2.764        -4.452         0 \r\n 2016          79            6.171         3.946        -0.876         2.106645 \r\n 2016          80            12.21         5.572        -4.696         0 \r\n 2016          81            18.11         12.58        -5.882         0 \r\n 2016          82            10.69         15.99         4.674         0 \r\n 2016          83            1.691         9.55         -0.846         7.899919 \r\n 2016          84            12.83         1.906        -3.257         10.27404 \r\n 2016          85            19.29         10.05        -5.812         0 \r\n 2016          86            8.81          10.34         1.783         1.316653 \r\n 2016          87            5.562         7.44         -1.069         0 \r\n 2016          88            21            15.3         -4.006         0 \r\n 2016          89            16.41         16.87         1.238         0 \r\n 2016          90            3.437         10.97         5.866         26.07388 \r\n 2016          91            6.871         6.946         0.266         4.739951 \r\n 2016          92            15.97         6.875        -2.81          6.846596 \r\n 2016          93            20.7          3.784        -4.706         0 \r\n 2016          94            19.74         25.17        -3.632         0 \r\n 2016          95            20.09         6.724        -3.946         0 \r\n 2016          96            6.392         3.603        -4.32          2.369976 \r\n 2016          97            11.22         11.69         0.832         0.7899919 \r\n 2016          98            11.22         7.056         0.126         0.5266612 \r\n 2016          99            15.06         3.906        -6.928         0 \r\n 2016          100           23.51         6.834        -10            0 \r\n 2016          101           13.24         17.59         2.411         0 \r\n 2016          102           24.41         7.662        -3.298         0 \r\n 2016          103           22.63         13.03        -7.982         0 \r\n 2016          104           20.15         20.53         5.32          0 \r\n 2016          105           23.09         21.63         6.067         0 \r\n 2016          106           22.63         25.06         6.36          0 \r\n 2016          107           22.75         27.03         9.4           0 \r\n 2016          108           18.59         26.18         10.22         0 \r\n 2016          109           15.23         27.26         11.29         1.843314 \r\n 2016          110           7.696         15.12         10.18         2.369976 \r\n 2016          111           7.364         16.28         6.854         6.583265 \r\n 2016          112           19.38         20.12         6.633         0 \r\n 2016          113           18.08         18.3          7.359         0 \r\n 2016          114           18.36         20.52         4.088         0 \r\n 2016          115           13.71         25.67         11.32         0.5266612 \r\n 2016          116           22.82         22.9          11.64         0 \r\n 2016          117           8.91          15.15         6.652         0 \r\n 2016          118           4.152         7.762         5.159         11.32114 \r\n 2016          119           4.648         7.612         4.452         1.053322 \r\n 2016          120           9.42          8.99          4.31          0 \r\n 2016          121           3.358         7.804         5.452         20.27853 \r\n 2016          122           4.646         9.86          5.159         8.428653 \r\n 2016          123           20.34         17.95         2.633         0 \r\n 2016          124           22.32         20.63         4.26          0 \r\n 2016          125           27.66         18.88         3.784         0 \r\n 2016          126           21.92         22.32         0.508         0 \r\n 2016          127           26.19         31.94         7.46          0 \r\n 2016          128           19.7          22.21         6.592         0 \r\n 2016          129           24.87         23.18         3.542         0 \r\n 2016          130           4.387         16.07         11.45         5.529943 \r\n 2016          131           9.61          17.01         10.76         0.5266612 \r\n 2016          132           7.198         17.27         9.96          1.316653 \r\n 2016          133           13.37         15.53         5.805         0 \r\n 2016          134           9.62          13.92         3.886         6.319935 \r\n 2016          135           26.21         11.21         0.702         0 \r\n 2016          136           25.67         18.62        -1.505         0 \r\n 2016          137           19.22         21.27         7.722         0 \r\n 2016          138           26.62         18.6          5.018         0 \r\n 2016          139           28.56         20.35         2.724         0 \r\n 2016          140           27.92         22.9          5.33          0 \r\n 2016          141           23.82         24.25         9.11          0 \r\n 2016          142           27.26         26.83         7.138         0 \r\n 2016          143           28.46         28.5          7.772         0 \r\n 2016          144           20.02         29.62         14.68         3.686629 \r\n 2016          145           22.52         29.72         16.59         0 \r\n 2016          146           10.42         26.49         16.13         5.003282 \r\n 2016          147           25.4          27.62         14.31         10.27404 \r\n 2016          148           9.92          23.19         16.63         13.42571 \r\n 2016          149           11.97         23.48         16.22         10.00449 \r\n 2016          150           24.81         26.53         15.19         3.423298 \r\n 2016          151           22.57         28.63         12.06         4.47662 \r\n 2016          152           17            26.22         15.47         2.633306 \r\n 2016          153           25.87         23.72         12.56         0 \r\n 2016          154           29.14         25.22         9.78          0 \r\n 2016          155           21.68         31.18         14.71         26.33306 \r\n 2016          156           21.82         24.97         13.57         0.2633306 \r\n 2016          157           26.77         30.18         13.07         0 \r\n 2016          158           24.97         24.32         12.12         0 \r\n 2016          159           29.49         22.24         10.44         0 \r\n 2016          160           25.24         27.98         8.33          2.896637 \r\n 2016          161           24.01         28.71         17.92         2.633306 \r\n 2016          162           26.11         35.32         18.95         59.50857 \r\n 2016          163           24.01         32.02         18.46         29.75429 \r\n 2016          164           20.34         27.55         17.67         0 \r\n 2016          165           14.57         28.58         16.96         0.254 \r\n 2016          166           19.88         30.95         17.25         42.42 \r\n 2016          167           26.97         30.08         16.56         0 \r\n 2016          168           28.86         26.69         16.63         0 \r\n 2016          169           24.84         29.12         16.04         0 \r\n 2016          170           25.12         30.21         17.8          0 \r\n 2016          171           28.68         31.75         17.8          0 \r\n 2016          172           28.34         27.77         14.74         3.048 \r\n 2016          173           28.32         28.81         11.07         12.95 \r\n 2016          174           18.58         28.37         16.47         27.69 \r\n 2016          175           18.52         22.51         16.52         0 \r\n 2016          176           26.75         27.79         16.15         0 \r\n 2016          177           23.6          32.6          19.78         40.13 \r\n 2016          178           29.74         29.78         18.89         0 \r\n 2016          179           28.83         26.78         15.34         0 \r\n 2016          180           21.646        23.32         12.18         0 \r\n 2016          181           25.08         25.08         10.49         0 \r\n 2016          182           18.199        25.72         14.39         20.32 \r\n 2016          183           24.27         23.02         11.69         0 \r\n 2016          184           21.51         23.04         12.68         0 \r\n 2016          185           29.41         24.61         10.52         0 \r\n 2016          186           13.27         23.19         12.66         0 \r\n 2016          187           24.8          30.23         17.99         8.13 \r\n 2016          188           22.66         28.33         17.99         0.254 \r\n 2016          189           22.92         28.89         18.22         16.51 \r\n 2016          190           29.31         25.94         16.17         0 \r\n 2016          191           28.82         27.83         14.67         0 \r\n 2016          192           6.326         25.76         17.75         18.54 \r\n 2016          193           26.32         31.1          19.42         4.064 \r\n 2016          194           23.38         28.16         18.81         4.572 \r\n 2016          195           17.61         29.74         18.17         0 \r\n 2016          196           26.57         26.35         14.54         0 \r\n 2016          197           20.72         24.07         12.54         0 \r\n 2016          198           25.88         25.91         10.72         0 \r\n 2016          199           18.4          28.57         16.95         36.07 \r\n 2016          200           26.47         29.82         15.84         0 \r\n 2016          201           13.76         26.96         17.88         19.05 \r\n 2016          202           15.83         30.35         19.4          0 \r\n 2016          203           24.26         33.4          24.39         0 \r\n 2016          204           20.03         31.71         21.79         0 \r\n 2016          205           6.031         26.04         22.17         25.91 \r\n 2016          206           21.27         29.01         18.33         0 \r\n 2016          207           27.55         28.1          15.15         0 \r\n 2016          208           27.11         30.82         15.1          0 \r\n 2016          209           18.97         28.05         16.44         0 \r\n 2016          210           10.826        24.05         17.59         0 \r\n 2016          211           6.989         21.92         17.01         6.096 \r\n 2016          212           18.99         26.84         16.91         0 \r\n 2016          213           18.41         27.16         16.08         0 \r\n 2016          214           16.37         27.54         18.63         0 \r\n 2016          215           15.63         28.66         19.99         0 \r\n 2016          216           20.21         31.02         17.89         0 \r\n 2016          217           13.5          30.56         18.74         48.01 \r\n 2016          218           25.84         25.08         14.19         0 \r\n 2016          219           25.85         26.18         13.05         0 \r\n 2016          220           15.58         25.59         13.27         0 \r\n 2016          221           23.58         27.66         13.05         0 \r\n 2016          222           18.77         29.87         16.72         0 \r\n 2016          223           19.98         31.15         18.29         0 \r\n 2016          224           13.5          29.22         20.45         45.97 \r\n 2016          225           11.53         27.14         19.56         1.016 \r\n 2016          226           23.75         26.94         16.29         0 \r\n 2016          227           24.72         27.21         14.43         0 \r\n 2016          228           17.5          27.94         14.71         0 \r\n 2016          229           21.32         29.35         15.94         0 \r\n 2016          230           22.58         30.71         17.69         2.54 \r\n 2016          231           21.02         31.5          16.52         0 \r\n 2016          232           5.321         23.83         18.11         33.27 \r\n 2016          233           17.02         21.9          13.2          2.286 \r\n 2016          234           23.31         23.31         11.17         0 \r\n 2016          235           23.5          26.54         11.82         0 \r\n 2016          236           18.96         28.08         15.97         36.07 \r\n 2016          237           12.6          27.58         17.55         0 \r\n 2016          238           16.5          25.84         14.71         0 \r\n 2016          239           12.6          21.79         11.98         3.302 \r\n 2016          240           9.44          25.24         14.67         0 \r\n 2016          241           18.58         29.95         14.15         0 \r\n 2016          242           10.82         27.7          18.01         1.524 \r\n 2016          243           12.65         27.21         14.93         0 \r\n 2016          244           22.28         25.09         12.04         0 \r\n 2016          245           22.77         23.41         11.41         0 \r\n 2016          246           22.73         24.74         9.16          0 \r\n 2016          247           17.49         24.61         11.35         0 \r\n 2016          248           17.63         26.13         14.7          0 \r\n 2016          249           14.12         31.16         17.83         1.778 \r\n 2016          250           17.31         32.49         22.41         0 \r\n 2016          251           7.35          25.34         19.12         22.86 \r\n 2016          252           21.15         27.65         14.07         0 \r\n 2016          253           4.151         21.98         15.18         60.45 \r\n 2016          254           17.42         21.83         9.75          0 \r\n 2016          255           20.63         25.31         9.2           0 \r\n 2016          256           19.17         28.72         12.22         8.38 \r\n 2016          257           10.3          20.6          13.53         1.27 \r\n 2016          258           19.7          23.81         10.01         0 \r\n 2016          259           14.17         27.08         11.35         29.72 \r\n 2016          260           12.81         23.92         15.46         1.778 \r\n 2016          261           10.76         22.11         10.14         0 \r\n 2016          262           18.48         29.4          10.32         0 \r\n 2016          263           11.17         25.77         10.81         0 \r\n 2016          264           19.17         30.58         8.49          0 \r\n 2016          265           13.75         28.78         18.25         113.5 \r\n 2016          266           4.584         21.44         17.32         85.9 \r\n 2016          267           3.528         20.12         17.59         6.858 \r\n 2016          268           10.92         26.89         17.42         0 \r\n 2016          269           9.12          21            10.56         6.604 \r\n 2016          270           18.35         20.84         8.23          0 \r\n 2016          271           17.99         21.49         5.512         0 \r\n 2016          272           7.696         18.07         8.83          0 \r\n 2016          273           17.33         22.81         8.09          0 \r\n 2016          274           5.68          18.55         8.25          0 \r\n 2016          275           6.929         19.78         10.77         0.254 \r\n 2016          276           16.52         25.86         7.924         0 \r\n 2016          277           15.65         23.34         8.3           0 \r\n 2016          278           13.1          25.54         13.44         0 \r\n 2016          279           14.24         22.95         10.5          2.286 \r\n 2016          280           7.051         21.6          9.2           0.254 \r\n 2016          281           15.89         15.44         1.642         0.254 \r\n 2016          282           15.36         22.26         0.508         0 \r\n 2016          283           15.61         19.32         1.562         0 \r\n 2016          284           10.86         21.27         7.409         0.508 \r\n 2016          285           14.17         25.1          12.36         1.524 \r\n 2016          286           4.019         12.34        -0.3           3.302 \r\n 2016          287           15.34         12.47        -3.804         0 \r\n 2016          288           8.79          17.38         2.006         0 \r\n 2016          289           2.86          20.75         14.55         0 \r\n 2016          290           9.65          23.79         11.11         0 \r\n 2016          291           3.977         26.36         15.97         0 \r\n 2016          292           13.44         21.57         8.69          0 \r\n 2016          293           6.84          19.8          5.128         0 \r\n 2016          294           11.28         12.05         0.266         0 \r\n 2016          295           12.76         12.92        -2.679         0 \r\n 2016          296           13.11         21.55         3.026         0 \r\n 2016          297           12.99         19.46         5.28          0 \r\n 2016          298           12.51         14.11         1.004         0 \r\n 2016          299           4.211         12.38         4.199         12.45 \r\n 2016          300           1.946         8.05          5.462         34.54 \r\n 2016          301           4.418         8.45          4.573         0 \r\n 2016          302           8.45          23.29         5.643         0 \r\n 2016          303           7.484         16.88         8.37          0.508 \r\n 2016          304           7.228         11.33         3.794         0 \r\n 2016          305           5.477         17.07         5.704         0 \r\n 2016          306           10.85         21.69         6.471         0 \r\n 2016          307           6.055         18.96         5.371         0 \r\n 2016          308           11.2          20.47         2.906         0 \r\n 2016          309           10.85         21.34         1.551         0 \r\n 2016          310           10.63         22.25         2.754         0 \r\n 2016          311           10.57         20.2          4.654         0 \r\n 2016          312           8.29          18.47         2.532         0.254 \r\n 2016          313           10.68         14.88         0.711         0 \r\n 2016          314           10.68         14.74        -2.609         0 \r\n 2016          315           10.21         18.67         1.864         0 \r\n 2016          316           9.81          10.85        -3.094         0 \r\n 2016          317           10.14         12.12        -3.723         0 \r\n 2016          318           9.69          16.4          0.346         0 \r\n 2016          319           8.66          12.59         2.774         0 \r\n 2016          320           7.089         16.38        -1.028         0 \r\n 2016          321           8.33          15.14        -1.849         0 \r\n 2016          322           5.971         20.63         8.11          0 \r\n 2016          323           2.489         16.3          0.205         0 \r\n 2016          324           8.19          0.975        -7.232         0 \r\n 2016          325           8.52          1.682        -8.55          0 \r\n 2016          326           8.58          4.966        -7.739         0 \r\n 2016          327           1.191         2.936         0.832         7.62 \r\n 2016          328           1.922         3.299         0.873         3.048 \r\n 2016          329           2.139         3.38          0.792         0 \r\n 2016          330           2.272         3.036        -1.697         0 \r\n 2016          331           7.484         10.81        -2.771         0 \r\n 2016          332           3.283         7.823        -4.048         5.08 \r\n 2016          333           1.526         10.24         2.541         8.13 \r\n 2016          334           4.524         4.462         0.126         0 \r\n 2016          335           2.581         1.844         0.064         3.556 \r\n 2016          336           1.887         2.228         0.651         0 \r\n 2016          337           2.044         1.096        -1.616         0 \r\n 2016          338           5.269         3.825        -1.716         0.254 \r\n 2016          339           3.363         0.6          -1.434         5.842 \r\n 2016          340           6.032         1.864        -3.054         1.778 \r\n 2016          341           7.14          0.114        -8.19          0 \r\n 2016          342           6.141        -5.892        -11.25         0 \r\n 2016          343           4.805        -6.704        -12.31         0 \r\n 2016          344           7.419        -6.784        -15.61         0 \r\n 2016          345           3.827        -6.745        -11.22         0 \r\n 2016          346           3.118        -2.223        -10.75         0.254 \r\n 2016          347           7.867        -10.58        -20.82         0 \r\n 2016          348           8.01         -12.72        -22.91         0 \r\n 2016          349           8.06         -9.14         -18.66         0 \r\n 2016          350           6.701        -14.02        -23.38         0 \r\n 2016          351           2.702        -9.41         -14.06         0 \r\n 2016          352           4.42         -10.98        -24.21         0 \r\n 2016          353           8.09         -20.88        -29.78         0 \r\n 2016          354           7.893        -7.698        -22.29         0 \r\n 2016          355           6.564         0.327        -8.47          0.254 \r\n 2016          356           4.775         2.713        -8.47          0.254 \r\n 2016          357           7.759         1.642        -10.4          0 \r\n 2016          358           2.451         0.489        -2.314         6.604 \r\n 2016          359           3.894         1.207        -0.866         1.524 \r\n 2016          360           1.825         3.401        -0.26          13.46 \r\n 2016          361           6.673         5.462        -6.521         0.254 \r\n 2016          362           7.158        -2.73         -8.57          0 \r\n 2016          363           5.669         1.783        -5.354         0 \r\n 2016          364           7.06         -0.188        -5.101         0 \r\n 2016          365           6.849         1.49         -9.78          0 \r\n 2016          366           5.228        -0.391        -9.75          0 \r\n 2017          1             6.049         0.692        -9.81          0 \r\n 2017          2             1.645         0.408        -1.312         0 \r\n 2017          3             4.84          0.205        -16.2          3.05 \r\n 2017          4             7.904        -15.14        -19.32         0 \r\n 2017          5             8.27         -15.42        -20.75         0 \r\n 2017          6             8.26         -14.82        -23.11         0 \r\n 2017          7             8.68         -12.81        -19.33         0 \r\n 2017          8             5.876        -7.708        -22.17         0 \r\n 2017          9             3.303        -2.892        -9.44          0 \r\n 2017          10            3.731         1.551        -10.12         0 \r\n 2017          11            3.657        -4.118        -12.72         12.7 \r\n 2017          12            7.1          -8.14         -16.65         0 \r\n 2017          13            4.064        -11.45        -18.04         0 \r\n 2017          14            8.85         -4.99         -13            0 \r\n 2017          15            7.974        -0.573        -14.04         0 \r\n 2017          16            2.53          0.094        -3.844         3.3 \r\n 2017          17            3.459         0.226        -1.716         11.18 \r\n 2017          18            5.303         1.702        -2.912         0 \r\n 2017          19            4.203         2.016        -1.596         0 \r\n 2017          20            3.569         2.492         0.317         4.83 \r\n 2017          21            3.092         4.452         0.226         5.08 \r\n 2017          22            3.043         1.794        -0.442         0 \r\n 2017          23            1.651         0.661        -0.391         0 \r\n 2017          24            1.774         0.064        -1.15          0 \r\n 2017          25            5.595         0.57         -3.064         14.73 \r\n 2017          26            7.504        -2.69         -6.44          2.54 \r\n 2017          27            10.18        -3.46         -11.33         0 \r\n 2017          28            5.383        -3.662        -10.56         0 \r\n 2017          29            8.32         -2.669        -16.22         0 \r\n 2017          30            8.43          3.461        -17.22         0 \r\n 2017          31            6.132         2.32         -0.35          0 \r\n 2017          32            9.91         -0.27         -11.31         0 \r\n 2017          33            10.24        -7.617        -13.84         0 \r\n 2017          34            11.92        -6.886        -14.99         0 \r\n 2017          35            9.66          1.884        -13.02         0 \r\n 2017          36            11.18        -1.353        -9.48          0 \r\n 2017          37            10.76         5.33         -9.3           0 \r\n 2017          38            2.903         2.3          -9.44          0 \r\n 2017          39            10.57        -9.36         -12.17         0.51 \r\n 2017          40            12.52        -6.298        -14.77         0 \r\n 2017          41            9.47          6.028        -8.31          0 \r\n 2017          42            4.222         5.219         0.832         0 \r\n 2017          43            12.49         2.997        -2.405         1.78 \r\n 2017          44            12.47         6.592        -3.885         0 \r\n 2017          45            13.03         5.724        -1.677         0 \r\n 2017          46            12.95         1.4          -5.224         0 \r\n 2017          47            9.84          6.34         -3.784         0 \r\n 2017          48            13.5          17.31        -0.928         0 \r\n 2017          49            10.07         13.75        -0.725         0 \r\n 2017          50            9.82          16.46        -1.697         0 \r\n 2017          51            0.947         12.76         6.804         0 \r\n 2017          52            12.42         15.31        -1.353         27.94 \r\n 2017          53            11.15         17.21         1.379         0 \r\n 2017          54            5.605         7.48          0.226         0 \r\n 2017          55            5.921         0.692        -6.836         18.03 \r\n 2017          56            15.58        -4.534        -11.19         2.03 \r\n 2017          57            15.61         0.852        -7.658         0 \r\n 2017          58            14.31         8.44         -9.09          0 \r\n 2017          59            2.897         7.026         1.884         5.08 \r\n 2017          60            8.98          1.935        -3.925         3.81 \r\n 2017          61            12.89        -2.446        -7.09          1.78 \r\n 2017          62            11.66         0.185        -11.05         0 \r\n 2017          63            15.64         7.854        -2.992         0.51 \r\n 2017          64            5.421         14.79         0.803         0 \r\n 2017          65            6.053         20.88         5.633         0 \r\n 2017          66            14.64         10.08         0.428         14.73 \r\n 2017          67            17.15         6.774        -4.23          0.51 \r\n 2017          68            4.078         3.37         -5.142         0.51 \r\n 2017          69            14.03        -5.081        -10.19         0.76 \r\n 2017          70            13.37        -3.257        -9.95          0 \r\n 2017          71            8.06         -2.102        -12.7          0 \r\n 2017          72            16.11        -4.189        -14.46         9.65 \r\n 2017          73            19.53        -5.952        -19.27         0 \r\n 2017          74            18.65        -3.024        -22            0 \r\n 2017          75            14.94         2.178        -8.19          0 \r\n 2017          76            14.79         7.762        -1.94          0 \r\n 2017          77            10.68         4.108        -3.338         0 \r\n 2017          78            16.88         14.83        -3.864         0 \r\n 2017          79            16.88         16.54         1.217         0 \r\n 2017          80            14.91         6.148        -3.116         0 \r\n 2017          81            17.44         5.34         -6.44          0 \r\n 2017          82            2.478         5.057         0.641         0 \r\n 2017          83            2.648         7.238         3.036         5.08 \r\n 2017          84            1.965         3.956         2.32          2.03 \r\n 2017          85            5.847         7.874         2.734         7.37 \r\n 2017          86            6.711         9.01          4.149         0 \r\n 2017          87            18.48         14.7          4.31          0 \r\n 2017          88            2.561         7.318         3.38          0 \r\n 2017          89            5.252         5.583         2.875         15.49 \r\n 2017          90            6.358         7.359         0.792         0 \r\n 2017          91            17.69         15.84        -0.584         0 \r\n 2017          92            4.359         10.19         5.966         1.524 \r\n 2017          93            2.666         8.86          7.016         19.56 \r\n 2017          94            10.99         13.37         5.684         7.366 \r\n 2017          95            7.796         10.14         4.573         0 \r\n 2017          96            22.88         11.19        -1.353         0 \r\n 2017          97            22.3          14.68        -4.068         0 \r\n 2017          98            16.85         23.61         3.976         0 \r\n 2017          99            9.36          25.77         11.58         0 \r\n 2017          100           7.481         17.59         3.927         0 \r\n 2017          101           15.77         12.02         1.582         0 \r\n 2017          102           12.72         19.3          1.682         7.62 \r\n 2017          103           13.33         15.67         5.866         6.096 \r\n 2017          104           7.404         16.46         8.63          9.65 \r\n 2017          105           9.45          22.85         13.43         3.302 \r\n 2017          106           24.16         19.26         6.753         0 \r\n 2017          107           23.8          20.22         7.238         0 \r\n 2017          108           6.713         18.42         7.984         0.508 \r\n 2017          109           9.46          16.08         6.633         22.61 \r\n 2017          110           8.78          14.09         5.926         0 \r\n 2017          111           22.56         15.03         1.196         0 \r\n 2017          112           25.66         19.1          2.239         0 \r\n 2017          113           24.88         22.55         2.734         0 \r\n 2017          114           19.35         23.21         6.733         0 \r\n 2017          115           9.74          20.56         10.69         0.254 \r\n 2017          116           6.165         12.87         2.836         0.254 \r\n 2017          117           7.824         4.351        -0.563         0 \r\n 2017          118           8.24          7.218        -3.662         2.032 \r\n 2017          119           7.908         7.965         1.783         0.254 \r\n 2017          120           3.351         6.29          3.825         20.07 \r\n 2017          121           6.878         7.278         3.26          11.43 \r\n 2017          122           23.2          14.45         3.026         0 \r\n 2017          123           24.42         17.26         0.145         0 \r\n 2017          124           24.28         20.22         1.035         0 \r\n 2017          125           27            23.72         2.522         0 \r\n 2017          126           27.37         20.28         5.007         0 \r\n 2017          127           21.39         21.95         5.26          0 \r\n 2017          128           21.81         24.19         9.15          2.032 \r\n 2017          129           20.48         23.24         8.49          1.016 \r\n 2017          130           4.465         15.74         9.8           8.64 \r\n 2017          131           27.13         20.78         6.532         0 \r\n 2017          132           27.25         23.23         5.472         0 \r\n 2017          133           27.06         29.4          10.02         0 \r\n 2017          134           26.66         29.31         12.64         0 \r\n 2017          135           15.29         29.66         9.56          33.78 \r\n 2017          136           20.42         30.27         16.89         3.81 \r\n 2017          137           12.41         25.93         13.79         15.49 \r\n 2017          138           13.466        15.53         7.984         0.254 \r\n 2017          139           5.276         9.01          4.29          13.46 \r\n 2017          140           4.541         12.59         5.4           8.38 \r\n 2017          141           8.45          10.63         5.824         0.508 \r\n 2017          142           19.7          20.92         4.775         14.22 \r\n 2017          143           14.22         14.47         9.6           4.064 \r\n 2017          144           14.32         16.64         8.31          0.508 \r\n 2017          145           26.33         21.76         5.986         0 \r\n 2017          146           17.19         22.73         11.95         0 \r\n 2017          147           12.34         22.79         10.63         0.254 \r\n 2017          148           27.22         25.01         11.77         0 \r\n 2017          149           22.59         21.81         10.3          0 \r\n 2017          150           22.77         22.01         8.21          0 \r\n 2017          151           29.02         24.95         7.581         0 \r\n 2017          152           29.41         27.9          7.571         0 \r\n 2017          153           25.25         31.71         13.08         0 \r\n 2017          154           27.05         34.54         19.4          0 \r\n 2017          155           29.97         32.36         16.9          0 \r\n 2017          156           29.09         28.62         15.07         0 \r\n 2017          157           29.69         26.99         11.43         0 \r\n 2017          158           28.71         28.2          10.81         0 \r\n 2017          159           18.66         30.98         15.7          0.762 \r\n 2017          160           27.27         32.42         15.08         0 \r\n 2017          161           28.09         33.24         19.7          0 \r\n 2017          162           26.28         35.3          22.81         0 \r\n 2017          163           15.81         31.81         19.93         1.016 \r\n 2017          164           26.1          34.26         19.62         0 \r\n 2017          165           20.05         28.68         18.41         13.21 \r\n 2017          166           26.78         32.32         16.62         0.254 \r\n 2017          167           21.87         31.48         17.98         17.53 \r\n 2017          168           13.95         26.77         17.61         0.254 \r\n 2017          169           19.84         23.95         14.79         0.254 \r\n 2017          170           24.43         25.62         12.54         0 \r\n 2017          171           28.5          27.16         10.79         0 \r\n 2017          172           14.22         23.65         12.82         3.048 \r\n 2017          173           13.09         27.18         19.44         41.91 \r\n 2017          174           22.57         21.37         13.64         0 \r\n 2017          175           23.8          21.67         9.9           1.778 \r\n 2017          176           16.488        20.77         8.49          0 \r\n 2017          177           26.72         21.14         9.3           0 \r\n 2017          178           28.01         24.75         6.875         0 \r\n 2017          179           4.785         23.4          16.79         29.72 \r\n 2017          180           15.73         25.75         14.25         8.89 \r\n 2017          181           21.9          26.06         13.37         1.778 \r\n 2017          182           26.2          23.92         14.54         0 \r\n 2017          183           23.21         29.05         13.99         0 \r\n 2017          184           27.46         28.17         16.69         0 \r\n 2017          185           26.7          29.49         17.85         0 \r\n 2017          186           25.71         31.5          18.74         0 \r\n 2017          187           26.51         32.23         19.14         0 \r\n 2017          188           28.94         28.24         16.42         0 \r\n 2017          189           28.53         27.67         13.1          0 \r\n 2017          190           26.38         30.74         12.13         1.016 \r\n 2017          191           22.28         28.88         18.5          30.73 \r\n 2017          192           11.76         27.32         17.95         0 \r\n 2017          193           17.15         33.11         19.48         21.08 \r\n 2017          194           26.75         25.88         14.19         0 \r\n 2017          195           23.02         24.1          11.5          0 \r\n 2017          196           25.89         31.68         13.98         0 \r\n 2017          197           25.34         28.51         18.63         0 \r\n 2017          198           25.67         28.76         16.08         0 \r\n 2017          199           16.39         30.86         18.89         0.508 \r\n 2017          200           18.45         31.04         18.57         18.54 \r\n 2017          201           19.98         29.83         22.18         0 \r\n 2017          202           5.085         22.81         19.64         78.99 \r\n 2017          203           11.92         29.42         20.44         41.15 \r\n 2017          204           25.27         26.42         15.34         0 \r\n 2017          205           22.473        24.54         13.57         0 \r\n 2017          206           20.93         28.31         15.85         0 \r\n 2017          207           8.31          25.88         20.44         3.302 \r\n 2017          208           27.1          27.66         16.57         0 \r\n 2017          209           18.8          28.67         13.79         0 \r\n 2017          210           21.14         28.39         12.7          0 \r\n 2017          211           23.53         28.62         13.28         0 \r\n 2017          212           24.38         29.43         14.41         0 \r\n 2017          213           22.56         29.64         12.87         0 \r\n 2017          214           20.59         29.72         14.46         0 \r\n 2017          215           14.91         24.97         10            8.13 \r\n 2017          216           25.87         24.12         9.6           0 \r\n 2017          217           18.56         25.13         9.02          0 \r\n 2017          218           15.65         24.5          14.47         0 \r\n 2017          219           25.38         25.2          10.88         0 \r\n 2017          220           26.2          28.62         9.07          0 \r\n 2017          221           19.79         27.14         11.41         0 \r\n 2017          222           24.95         27.32         14.93         0 \r\n 2017          223           23.44         24.33         11.74         0 \r\n 2017          224           24.38         25.49         10.55         0 \r\n 2017          225           10.63         21.79         9.15          0 \r\n 2017          226           20.13         27.63         15.02         12.19 \r\n 2017          227           11.45         21.85         14.19         0 \r\n 2017          228           15.04         27.51         17.87         5.08 \r\n 2017          229           14.38         24.74         16.01         0 \r\n 2017          230           16.3          24.75         13.12         0.254 \r\n 2017          231           24.1          28.42         11.31         0 \r\n 2017          232           19.09         30.53         16.3          0 \r\n 2017          233           5.316         25.51         16.82         13.21 \r\n 2017          234           23.63         23.13         10.38         0.254 \r\n 2017          235           24.12         25.04         8.51          0 \r\n 2017          236           11.68         22.74         12.11         0 \r\n 2017          237           17.72         23.39         13.79         1.016 \r\n 2017          238           8.81          22.56         13.97         0 \r\n 2017          239           19.92         26.18         15.02         0 \r\n 2017          240           9.03          21.11         12.4          0 \r\n 2017          241           15.9          23.75         11.01         0 \r\n 2017          242           21.34         29.21         10.29         0 \r\n 2017          243           13.61         22.7          11.3          2.286 \r\n 2017          244           19.31         21.74         6.148         0 \r\n 2017          245           15.44         25.9          11.77         1.016 \r\n 2017          246           20.14         29.06         8.78          0 \r\n 2017          247           16.01         23.56         9.46          0 \r\n 2017          248           18.85         19.68         7.955         0 \r\n 2017          249           13.99         18.4          6.067         0 \r\n 2017          250           20.55         24.5          2.693         0 \r\n 2017          251           20.56         24.74         6.37          0 \r\n 2017          252           19.06         26.23         10.4          0 \r\n 2017          253           17.93         26.82         12.3          0 \r\n 2017          254           19.06         28.55         9.26          0 \r\n 2017          255           18.77         29.96         10.36         0 \r\n 2017          256           18.44         31.82         11.38         0 \r\n 2017          257           18.09         32.21         13.98         0 \r\n 2017          258           16.75         32.57         16.67         0 \r\n 2017          259           7.842         28.65         15.8          13.21 \r\n 2017          260           17.93         21.89         10.26         5.588 \r\n 2017          261           5.904         19.54         10.41         3.81 \r\n 2017          262           17.25         26.98         11.9          0 \r\n 2017          263           11.28         31.1          14.39         0 \r\n 2017          264           16.12         33.28         13.65         0 \r\n 2017          265           17.58         34.04         22.94         0 \r\n 2017          266           16.9          33.9          19            0 \r\n 2017          267           15.79         33.6          17.64         0 \r\n 2017          268           10.94         28.62         15.62         29.46 \r\n 2017          269           7.61          19.74         11.84         1.524 \r\n 2017          270           13.83         20.72         6.936         0 \r\n 2017          271           17.71         26.06         4.835         0 \r\n 2017          272           17.87         19.71         4.997         0 \r\n 2017          273           16.54         21.36         4.411         0 \r\n 2017          274           10.64         22.58         10.87         0 \r\n 2017          275           8.15          26.9          15.28         6.35 \r\n 2017          276           5.339         26.47         12.02         2.032 \r\n 2017          277           16.37         21.44         6.512         0.254 \r\n 2017          278           6.174         20.21         6.814         0.508 \r\n 2017          279           3.201         19.38         12.62         45.72 \r\n 2017          280           3.553         20.09         10.14         23.11 \r\n 2017          281           15.79         26.96         8.59          0.254 \r\n 2017          282           14.41         18.88         6.148         0 \r\n 2017          283           3.442         11.23         5.32          12.95 \r\n 2017          284           4.424         12.17         6.652         0 \r\n 2017          285           5.245         16.23         11.23         0.254 \r\n 2017          286           4.282         16.2          9.85          0 \r\n 2017          287           1.264         16.78         9.7           5.334 \r\n 2017          288           7.109         13.89         3.552         0 \r\n 2017          289           14.45         20.2         -0.422         0.254 \r\n 2017          290           13.81         23.39         5.462         0 \r\n 2017          291           13.4          25.07         7.602         0 \r\n 2017          292           13.02         22.15         2.46          0 \r\n 2017          293           12.07         24.39         9.15          0 \r\n 2017          294           2.381         21.45         10.85         16.26 \r\n 2017          295           6.443         18.16         6.209         0 \r\n 2017          296           5.613         16.58         4.704         0.254 \r\n 2017          297           8.89          11.07         1.824         0 \r\n 2017          298           12.12         16.36        -0.098         0 \r\n 2017          299           10.15         16.83         1.076         0 \r\n 2017          300           4.577         2.411        -0.078         0.762 \r\n 2017          301           4.868         2.643        -7.008         0 \r\n 2017          302           5.226         7.52         -6.42          1.778 \r\n 2017          303           4.215         6.168        -2.426         0 \r\n 2017          304           8.43          1.228        -3.48          0 \r\n 2017          305           2.603         5.26         -1.576         0 \r\n 2017          306           4.861         8.29          2.067         0 \r\n 2017          307           6.481         6.248        -1.11          0.254 \r\n 2017          308           2.07          6.5           2.774         0.762 \r\n 2017          309           2.91          6.41         -3.632         0.254 \r\n 2017          310           4.169         0.894        -6.338         0 \r\n 2017          311           7.979         4.916        -6.562         0 \r\n 2017          312           9.9           7.5          -7.89          0 \r\n 2017          313           10.32         4.654        -10.31         0 \r\n 2017          314           8.35         -0.837        -11.18         0 \r\n 2017          315           1.525         3.108        -0.886         0.508 \r\n 2017          316           6.053         7.006        -4.99          0 \r\n 2017          317           5.165         5.159        -7.636         0 \r\n 2017          318           1.498         8.04          2.268         0 \r\n 2017          319           5.27          9.22         -4.98          0.762 \r\n 2017          320           4.704         0.894        -5.203         0 \r\n 2017          321           0.727         3.987        -0.442         2.54 \r\n 2017          322           6.359         5.19         -5.65          2.794 \r\n 2017          323           7.824         4.835        -8.79          0 \r\n 2017          324           7.688         13.01        -2.679         0 \r\n 2017          325           7.738         3.623        -7.485         0 \r\n 2017          326           6.938         0.489        -12.37         0 \r\n 2017          327           8.49          9.45         -7.13          0 \r\n 2017          328           8.38          17.83         3.218         0 \r\n 2017          329           8.52          8.77         -5.71          0 \r\n 2017          330           8             14.13        -7.302         0 \r\n 2017          331           6.306         14.46        -2.71          0 \r\n 2017          332           5.392         11.21        -4.412         0 \r\n 2017          333           8.37          7.38         -8.45          0 \r\n 2017          334           8.27          9.76         -5.568         0 \r\n 2017          335           7.387         12.66        -6.298         0 \r\n 2017          336           5.97          10.71        -6.014         0 \r\n 2017          337           4.69          12.84        -5.385         0 \r\n 2017          338           1.917         18.8         -1.474         0 \r\n 2017          339           7.872        -1.413        -6.886         0 \r\n 2017          340           7.397        -1.677        -9.99          0 \r\n 2017          341           7.901        -5.446        -12.55         0 \r\n 2017          342           7.162         2.572        -11.72         0 \r\n 2017          343           4.588        -1.059        -10.16         0 \r\n 2017          344           6.311         1.824        -8.1           0 \r\n 2017          345           1.823         2.106        -6.906         1.27 \r\n 2017          346           6.222        -2.507        -12.9          0 \r\n 2017          347           1.087         3.784        -6.258         0 \r\n 2017          348           5.367        -3.408        -13.88         0 \r\n 2017          349           4.002         5.238        -6.217         0 \r\n 2017          350           6.141         9.44         -6.988         0 \r\n 2017          351           2.124         0.327        -4.006         0 \r\n 2017          352           6.299         6.895        -4.402         0 \r\n 2017          353           7.043         6.108        -6.238         0 \r\n 2017          354           3.362        -0.766        -6.014         0 \r\n 2017          355           2.511        -0.138        -4.189         0 \r\n 2017          356           5.214        -2.71         -13.37         0 \r\n 2017          357           6.338        -5.71         -15.63         0 \r\n 2017          358           5.262        -5.994        -14.16         0 \r\n 2017          359           6.846        -10.41        -22.13         0 \r\n 2017          360           6.657        -16.36        -24.93         0 \r\n 2017          361           7.831        -13.25        -26.67         0 \r\n 2017          362           4.246        -11.05        -16.76         0 \r\n 2017          363           3.545        -11.68        -18.66         2.794 \r\n 2017          364           7.296        -18.42        -23.89         0 \r\n 2017          365           8.04         -20.82        -28.08         0 \r\n 2018          1             8.05         -20.25        -29.98         0 \r\n 2018          2             7.906        -9.71         -29.73         0 \r\n 2018          3             7.791        -9.42         -22.44         0.51 \r\n 2018          4             4.641        -14.57        -25.81         0 \r\n 2018          5             7.747        -14.44        -26.61         0 \r\n 2018          6             8.25         -12.2         -27.63         0 \r\n 2018          7             6.784         1.318        -12.28         0 \r\n 2018          8             8.22          1.996        -7.982         0.51 \r\n 2018          9             4.547         2.522        -6.38          0 \r\n 2018          10            1.857         3.208        -0.502         0 \r\n 2018          11            3.374         2.713        -17.66         2.29 \r\n 2018          12            9.96         -15.12        -21.82         6.35 \r\n 2018          13            9.27         -14.73        -25.62         0 \r\n 2018          14            4.104        -6.784        -26.13         0 \r\n 2018          15            6.83         -10.99        -21.5          1.27 \r\n 2018          16            8.21         -14.75        -21.91         0 \r\n 2018          17            8.71         -4.828        -21.6          0 \r\n 2018          18            8.54          1.217        -9.93          0 \r\n 2018          19            7.385         5.744        -6.928         0 \r\n 2018          20            9.29          10.46        -5.548         0 \r\n 2018          21            1.467         2.693        -3.56          0 \r\n 2018          22            1.095         2.836        -2.244         25.15 \r\n 2018          23            6.914        -2.254        -10.28         18.54 \r\n 2018          24            3.672        -3.48         -10.38         0 \r\n 2018          25            9.13          2.966        -6.541         0 \r\n 2018          26            5.78          10.51         0.346         0 \r\n 2018          27            9.59          6.936        -3.905         0 \r\n 2018          28            5.814        -3.338        -9.3           0.51 \r\n 2018          29            10.36        -6.784        -14.65         0 \r\n 2018          30            5.093         0.003        -15.81         0 \r\n 2018          31            7.892         2.492        -7.536         0 \r\n 2018          32            10.92        -7.536        -17.4          0 \r\n 2018          33            7.996        -8.39         -21.05         0 \r\n 2018          34            2.686         1.48         -8.41          1.02 \r\n 2018          35            10.06        -8.05         -21.64         3.81 \r\n 2018          36            3.888        -11.86        -21.99         0 \r\n 2018          37            9.57         -11.9         -26.28         3.81 \r\n 2018          38            8.25         -11.58        -21.66         1.02 \r\n 2018          39            4.935        -6.643        -15.75         0.76 \r\n 2018          40            9.26         -10.01        -16.81         10.67 \r\n 2018          41            7.657        -12.55        -20.23         1.52 \r\n 2018          42            12.43        -9.75         -21.4          0 \r\n 2018          43            11.21        -9.61         -24.05         0 \r\n 2018          44            11.92        -2            -13.47         0 \r\n 2018          45            12.7          5.442        -8.94          0 \r\n 2018          46            7.287         3.299        -4.077         0 \r\n 2018          47            13.83        -3.966        -15.16         0 \r\n 2018          48            8.62         -0.948        -9.91          0 \r\n 2018          49            11            5.038        -10.81         2.54 \r\n 2018          50            2.236         3.007        -1.21          0 \r\n 2018          51            4.275        -0.604        -11.09         5.59 \r\n 2018          52            13.27        -4.148        -13.05         0 \r\n 2018          53            6.309         0.195        -6.044         4.57 \r\n 2018          54            12.22         0.044        -6.826         11.94 \r\n 2018          55            4.388         0.428        -7.373         0 \r\n 2018          56            15.17        -0.482        -9.26          4.83 \r\n 2018          57            15.22         7.581        -6.308         0 \r\n 2018          58            12.45         13.39        -1.272         0 \r\n 2018          59            12.23         8.43         -2.426         0 \r\n 2018          60            15.81         5.169        -2.679         0 \r\n 2018          61            12.39         6.37         -6.389         0 \r\n 2018          62            15.42         8.76         -0.31          0 \r\n 2018          63            13.85         9.61          0.508         0 \r\n 2018          64            1.654         2.896        -3.278         4.32 \r\n 2018          65            12.12         0.003        -5.264         10.41 \r\n 2018          66            17.29        -4.422        -11.58         1.52 \r\n 2018          67            17.76        -3.52         -12.51         0 \r\n 2018          68            16.68        -0.36         -12.27         0 \r\n 2018          69            11.66         1.783        -7.76          0 \r\n 2018          70            8.43          3.522        -1.372         3.81 \r\n 2018          71            17.96         1.763        -4.96          0 \r\n 2018          72            17.96         0.55         -5.284         0 \r\n 2018          73            18.24         9.15         -6.622         0 \r\n 2018          74            15.15         6.753        -3.752         0 \r\n 2018          75            11.16         3.644        -3.946         0 \r\n 2018          76            15.83         10.59        -3.125         2.03 \r\n 2018          77            10.81         8.63         -4.726         0 \r\n 2018          78            17.26         10.1         -0.614         0 \r\n 2018          79            8.74          2.309        -2.912         0 \r\n 2018          80            17.31         5.361        -5.212         0.51 \r\n 2018          81            11.62         7.147        -4.696         0 \r\n 2018          82            10.01         7.419        -1.95          0 \r\n 2018          83            11.48         2.43         -3.804         17.02 \r\n 2018          84            18.54         2.512        -4.675         7.87 \r\n 2018          85            8.69          1.814        -1.474         0 \r\n 2018          86            14.6          1.692        -6.826         11.68 \r\n 2018          87            18.57         7.722        -8.67          0 \r\n 2018          88            21.37         3.552        -2.669         0 \r\n 2018          89            19.18         6.673        -3.49          0 \r\n 2018          90            11.86         5.4          -7.069         2.03 \r\n 2018          91            19.8         -0.006        -8.85          0 \r\n 2018          92            12.84         4.118        -8.1           0 \r\n 2018          93            7.139         0.205        -8.88          2.794 \r\n 2018          94            23.33        -3.915        -13.45         0 \r\n 2018          95            15.04         3.401        -10.24         0.254 \r\n 2018          96            20.13        -0.108        -9.91          0 \r\n 2018          97            23.46         0.165        -11.13         0 \r\n 2018          98            8.69          0.044        -9.59          4.064 \r\n 2018          99            17.99         2.188        -4.493         2.54 \r\n 2018          100           11.81         8.06         -6.206         0 \r\n 2018          101           12            11.88         0.266         2.794 \r\n 2018          102           17.86         14.65         0.934         0 \r\n 2018          103           1.473         7.53          1.207         30.73 \r\n 2018          104           4.985         2.288        -4.605         7.366 \r\n 2018          105           15.29        -2.75         -5.568         5.334 \r\n 2018          106           20.418       -0.938        -5.75          0.762 \r\n 2018          107           24.24         4.189        -5.446         0 \r\n 2018          108           12.42         0.266        -2.386         3.302 \r\n 2018          109           26.3          6.43         -9.17          8.89 \r\n 2018          110           19.63         10.36        -6.704         0 \r\n 2018          111           17.63         15.58         2.794         0 \r\n 2018          112           19.89         18.27         4.25          0 \r\n 2018          113           24.55         20.83         2.067         0 \r\n 2018          114           21.23         21.68         3.684         0 \r\n 2018          115           25.89         16.03         1.288         0 \r\n 2018          116           22.63         20.79         0.126         0 \r\n 2018          117           22.24         20.3          0.104         0 \r\n 2018          118           26.59         14.04        -0.138         0 \r\n 2018          119           26.29         19.99        -0.816         0 \r\n 2018          120           21.44         28.88         10.89         0 \r\n 2018          121           10.78         24.09         13.98         21.08 \r\n 2018          122           8.38          17.35         12.36         8.38 \r\n 2018          123           9.99          20.42         9.56          62.23 \r\n 2018          124           25.83         22.79         11.47         0.508 \r\n 2018          125           24.4          27.23         8.49          0 \r\n 2018          126           25.03         23.85         10.27         0 \r\n 2018          127           25.32         27.6          6.652         0 \r\n 2018          128           19.45         28.3          13.02         10.41 \r\n 2018          129           16.13         20.06         12.62         0 \r\n 2018          130           16.13         18.92         9.07          0.508 \r\n 2018          131           4.425         10.16         5.057         17.78 \r\n 2018          132           3.922         11.53         6.491         4.826 \r\n 2018          133           6.484         14.09         8.05          0.254 \r\n 2018          134           12.39         23.81         11.19         1.524 \r\n 2018          135           26.27         27.22         12.15         0 \r\n 2018          136           26.5          29.27         12.14         0 \r\n 2018          137           23.61         29.92         11.12         0 \r\n 2018          138           26.14         27.92         12.08         0 \r\n 2018          139           19.99         24.43         12.06         0 \r\n 2018          140           6.298         14.94         9.49          1.016 \r\n 2018          141           5.319         15.75         11.45         2.54 \r\n 2018          142           22.46         25.54         14.25         0 \r\n 2018          143           15.98         28.76         16.21         9.4 \r\n 2018          144           25.99         32.43         16.85         0 \r\n 2018          145           23.43         32.71         18.01         1.778 \r\n 2018          146           26.45         35.73         15.83         0 \r\n 2018          147           26.86         36.56         15.72         0 \r\n 2018          148           23.34         36.29         20.02         0 \r\n 2018          149           26.24         35.88         19.74         0 \r\n 2018          150           18.82         29.81         18.65         5.334 \r\n 2018          151           27.87         32.04         15.8          0 \r\n 2018          152           27.5          33.87         17.57         0 \r\n 2018          153           13.22         26.3          14.19         0.762 \r\n 2018          154           29.34         24.74         11.31         0 \r\n 2018          155           28.83         30.26         9.69          0 \r\n 2018          156           27.63         34.19         16.05         0 \r\n 2018          157           18.22         30.49         14.93         0 \r\n 2018          158           21.6          30.73         15.43         9.91 \r\n 2018          159           13.59         23.69         14.86         30.23 \r\n 2018          160           17.18         29.6          17.4          54.1 \r\n 2018          161           14.187        23.54         17.08         0 \r\n 2018          162           12.69         23.79         17.22         0 \r\n 2018          163           11.59         25.95         18.31         2.286 \r\n 2018          164           27.83         26.21         14.12         0 \r\n 2018          165           12.06         22.97         14.73         6.858 \r\n 2018          166           27.12         32.96         17.43         0 \r\n 2018          167           19.23         32.64         22.39         0 \r\n 2018          168           24.24         34.16         22.67         2.54 \r\n 2018          169           16.03         30.66         20.87         21.07999 \r\n 2018          170           14.3          25.24         20.14         3.302 \r\n 2018          171           9.28          24.91         19.27         3.81 \r\n 2018          172           6.644         19.26         13.81         10.67001 \r\n 2018          173           20.16         25.11         15.29         1.27 \r\n 2018          174           24.05         26.91         13.94         0 \r\n 2018          175           25.86         27.85         14.81         0 \r\n 2018          176           19.83         25.82         17.49         0 \r\n 2018          177           20.352        25.78         17.73         15.99999 \r\n 2018          178           21.29         28.02         16.47         0.254 \r\n 2018          179           21.63         28.59         16.19         0 \r\n 2018          180           27.67         33.56         21.23         0 \r\n 2018          181           20.38         32.07         18.74         61.71999 \r\n 2018          182           21.57         25.72         14.95         2.794 \r\n 2018          183           29.07         28.2          14.39         0 \r\n 2018          184           26.19         30.71         16.67         0 \r\n 2018          185           20.35         32.9          21.07         20.83001 \r\n 2018          186           25.484        28.39         17.32         7.112 \r\n 2018          187           27.73         26.99         14.14         0 \r\n 2018          188           27.45         26.73         13.7          0 \r\n 2018          189           28.22         28.17         14.87         0 \r\n 2018          190           24.76         31.76         16.08         0 \r\n 2018          191           21.31         30.96         18.19         0 \r\n 2018          192           26.02         30.78         16.67         0 \r\n 2018          193           24.14         32.92         20.7          0 \r\n 2018          194           15.78         31.23         20.24         9.65 \r\n 2018          195           12.58         28.46         20.8          1.016 \r\n 2018          196           20.42         31.17         20.48         0 \r\n 2018          197           26.69         27.49         16.19         0.254 \r\n 2018          198           26.9          28.22         14.11         0 \r\n 2018          199           24.53         28.84         15.08         0 \r\n 2018          200           8.575         22.21         18.21         23.11 \r\n 2018          201           14.39         25.07         17.76         1.016 \r\n 2018          202           20.52         25.86         17.19         0 \r\n 2018          203           19.6          26.1          16.08         0 \r\n 2018          204           25.21         27.77         15.76         0 \r\n 2018          205           27.19         26.85         15.9          0 \r\n 2018          206           23.45         28.3          12.38         6.35 \r\n 2018          207           22.88         22.47         13.61         0 \r\n 2018          208           25.08         24.12         11.92         0 \r\n 2018          209           23.96         25.85         9.74          0 \r\n 2018          210           24.75         27.17         10.75         0 \r\n 2018          211           18.47         26.13         12.55         0 \r\n 2018          212           26.61         28.44         11.77         0 \r\n 2018          213           16.81         27.96         12            2.286 \r\n 2018          214           17.9          23.95         11.74         0 \r\n 2018          215           22.66         30.9          12.94         0 \r\n 2018          216           7.899         25.54         17.62         3.556 \r\n 2018          217           10.44         28.48         17.79         25.65 \r\n 2018          218           16            26.9          17.2          27.43 \r\n 2018          219           14.63         27.42         15.16         3.048 \r\n 2018          220           21.58         28.33         14.76         0.254 \r\n 2018          221           22.15         29.95         18.14         0 \r\n 2018          222           22.61         29.28         16.49         0 \r\n 2018          223           21.74         30.25         15.62         0 \r\n 2018          224           19.87         30.03         14.72         0 \r\n 2018          225           21.76         30.67         15.28         0 \r\n 2018          226           12.72         27.98         16.1          0 \r\n 2018          227           14.33         30.06         18.63         3.048 \r\n 2018          228           7.929         26.6          17.91         18.03 \r\n 2018          229           20.13         29.28         17.12         0.508 \r\n 2018          230           20.85         29.95         15.66         0 \r\n 2018          231           17.02         27.7          15.32         0 \r\n 2018          232           3.023         21.34         17.13         43.43 \r\n 2018          233           8.9           20.59         12.33         0 \r\n 2018          234           24.09         24.67         9.9           0 \r\n 2018          235           20.97         25.16         9.34          0 \r\n 2018          236           5.545         22.09         16.96         20.32 \r\n 2018          237           21.19         28.88         16.69         0 \r\n 2018          238           9.05          27.6          17.61         43.69 \r\n 2018          239           17.32         30.71         19.61         5.842 \r\n 2018          240           5.31          27.43         15.7          48.77 \r\n 2018          241           20.77         21.06         10.92         0 \r\n 2018          242           21.04         24.63         9.8           0 \r\n 2018          243           14.39         27.65         19.1          0.254 \r\n 2018          244           10.65         27.71         18.89         52.32 \r\n 2018          245           7.845         23.8          18.75         47.75 \r\n 2018          246           5.543         22            18.36         20.83 \r\n 2018          247           15.76         30.39         20.66         35.81 \r\n 2018          248           6.486         22.22         15.24         32.26 \r\n 2018          249           21.64         23.36         12.98         0 \r\n 2018          250           11.07         19.04         11.84         0 \r\n 2018          251           20.14         21.59         10.77         0 \r\n 2018          252           20.56         22.2          8.94          0 \r\n 2018          253           20.46         25.32         6.189         0 \r\n 2018          254           19.96         27.57         12.56         0 \r\n 2018          255           19.67         28.33         13.81         0 \r\n 2018          256           18.16         28.51         13.27         0 \r\n 2018          257           16.35         31.68         16.77         0 \r\n 2018          258           17.08         32.59         17.73         0 \r\n 2018          259           17.53         31.49         17.39         0 \r\n 2018          260           17.05         34.22         16.35         0 \r\n 2018          261           4.258         21.04         15.89         33.78 \r\n 2018          262           6.43          24.83         15.14         74.68 \r\n 2018          263           10.78         32.93         18.29         27.94 \r\n 2018          264           10.46         19.78         6.41          0.508 \r\n 2018          265           19.01         19.49         3.654         0 \r\n 2018          266           18.51         24.13         7.338         0 \r\n 2018          267           16.77         25.76         9.99          0 \r\n 2018          268           3.972         17.66         6.532         9.14 \r\n 2018          269           17.6          18.64         5.845         0 \r\n 2018          270           7.301         19.73         6.36          3.048 \r\n 2018          271           6.939         13.49         1.449         0 \r\n 2018          272           15.09         10.42        -0.766         0 \r\n 2018          273           4.587         11.14         6.108         5.334 \r\n 2018          274           2.744         12.66         8.18          22.35 \r\n 2018          275           6.417         14.57         7.782         0 \r\n 2018          276           8.79          29.94         7.289         2.794 \r\n 2018          277           13.01         11.82         1.844         0 \r\n 2018          278           4.525         12.98         7.056         8.64 \r\n 2018          279           4.539         10.97         7.37          0 \r\n 2018          280           3.038         11.77         6.673         12.7 \r\n 2018          281           4.176         20.51         10.14         23.11 \r\n 2018          282           3.735         19.98         14.09         5.334 \r\n 2018          283           5.283         19.93         2.936         0 \r\n 2018          284           8.41          6.35         -2.041         0 \r\n 2018          285           10.26         8.37         -2.082         0 \r\n 2018          286           10.5          13.06         3.046         0 \r\n 2018          287           1.847         8.06         -0.522         2.794 \r\n 2018          288           14.24         8.34         -2.466         4.572 \r\n 2018          289           13.86         16.55        -0.098         0 \r\n 2018          290           14.43         11.1         -2.912         0 \r\n 2018          291           13.84         19.8         -3.439         0 \r\n 2018          292           6.972         19.56         6.269         4.826 \r\n 2018          293           12.91         6.491        -4.128         0 \r\n 2018          294           13.27         13.64        -6.066         0 \r\n 2018          295           13.13         19.64        -1.96          0 \r\n 2018          296           13.24         11.31        -1.515         0 \r\n 2018          297           12.13         13.78        -4.392         0 \r\n 2018          298           5.458         11.66         2.512         0 \r\n 2018          299           8.24          14.07         1.076         1.27 \r\n 2018          300           4.459         11.71         4.29          4.318 \r\n 2018          301           11.05         13.28         1.783         0.254 \r\n 2018          302           10.53         13.77        -2.142         0 \r\n 2018          303           9.3           14.19         4.228         0 \r\n 2018          304           9.97          13.85         0.388         0 \r\n 2018          305           10.92         14.11        -1.13          0 \r\n 2018          306           9.69          12.28         3.32          0 \r\n 2018          307           2.129         6.128         2.249         14.73 \r\n 2018          308           1.447         6.047         2.612         16 \r\n 2018          309           3.705         8.13          2.643         9.91 \r\n 2018          310           2.632         5.744        -0.614         1.27 \r\n 2018          311           3.28         -0.219        -2.386         0 \r\n 2018          312           4.259        -2.345        -4.98          0 \r\n 2018          313           8.52         -3.601        -10.64         0 \r\n 2018          314           5.382        -4.087        -14.31         0 \r\n 2018          315           4.034         2.886        -5.71          0 \r\n 2018          316           4.597        -4.564        -8.75          0 \r\n 2018          317           10.07        -3.642        -13.58         0 \r\n 2018          318           9.58          5.18         -10.06         0 \r\n 2018          319           9.26          6.471        -7.09          0 \r\n 2018          320           4.27          0.631        -3.236         0 \r\n 2018          321           6.166        -2.082        -12.25         2.794 \r\n 2018          322           9.9          -4.818        -23.15         0.254 \r\n 2018          323           6.344        -2.061        -11.94         0 \r\n 2018          324           8.09         -2.69         -14.49         0 \r\n 2018          325           5.809         0.408        -4.422         0.508 \r\n 2018          326           7.501         3.28         -4.534         0 \r\n 2018          327           1.718         6.028         0.964         5.588 \r\n 2018          328           2.017         4.775        -0.684         0 \r\n 2018          329           2.636         0.368        -6.095         0 \r\n 2018          330           4.766        -5.994        -10.9          0 \r\n 2018          331           7.917        -2.73         -12.22         0 \r\n 2018          332           2.551        -3.824        -12.41         0 \r\n 2018          333           3.83         -0.219        -5.426         0.254 \r\n 2018          334           6.286         2.875        -8.59          0 \r\n 2018          335           1             1.622        -1.98          0 \r\n 2018          336           5.018         0.873        -1.818         14.22 \r\n 2018          337           4.2          -1.818        -4.696         0.51 \r\n 2018          338           2.074        -4.636        -6.602         0 \r\n 2018          339           7.839        -0.198        -7.21          0 \r\n 2018          340           6.303        -4.493        -15.63         0 \r\n 2018          341           4.767        -4.614        -16.91         0 \r\n 2018          342           2.775        -3.642        -10.97         0 \r\n 2018          343           6.825        -0.532        -12.66         0 \r\n 2018          344           3.269        -4.148        -12.19         0 \r\n 2018          345           6.38          0.003        -11.92         0 \r\n 2018          346           3.221        -0.057        -6.115         0 \r\n 2018          347           3.447         3.058        -5.122         0 \r\n 2018          348           6.171         2.218        -6.238         0 \r\n 2018          349           7.461         8.23         -8.39          0 \r\n 2018          350           6.771         5.26         -3.601         0 \r\n 2018          351           7.18          5.25         -6.238         0 \r\n 2018          352           7.161         9.02         -3.338         0 \r\n 2018          353           3.905         9.35          0.024         0 \r\n 2018          354           1.77          1.702        -1.596         0 \r\n 2018          355           2.226        -1.576        -4.97          0 \r\n 2018          356           2.088        -0.28         -5.02          0 \r\n 2018          357           2.658        -0.016        -5.516         0 \r\n 2018          358           5.828        -1.048        -10.28         0 \r\n 2018          359           5.519         5.2          -3.257         0 \r\n 2018          360           3.526         3.603        -1.038         0 \r\n 2018          361           1             8.2           1.318         29.46 \r\n 2018          362           1.85          1.318        -7.88          14.22 \r\n 2018          363           4.619        -7.81         -12.41         1.52 \r\n 2018          364           7.499         0.864        -10.76         0 \r\n 2018          365           1.369        -0.118        -5.365         0 \r\n 2019          1             5.091        -5.344        -11.98         0 \r\n 2019          2             6.011        -2.862        -11.97         0 \r\n 2019          3             7.789         4.098        -9.18          0 \r\n 2019          4             7.726         7.218        -3.774         0 \r\n 2019          5             7.747         9.6          -2.122         0 \r\n 2019          6             3.347         2.278        -2.233         2.794 \r\n 2019          7             2.318         7.138         0.044         3.048 \r\n 2019          8             7.144         3.442        -8.5           0 \r\n 2019          9             8.26         -7.576        -12.96         0 \r\n 2019          10            8.16         -2.832        -12.55         0 \r\n 2019          11            2.472        -1.069        -8.17          0 \r\n 2019          12            2.504        -0.482        -4.878         0 \r\n 2019          13            6.934         1.773        -6.764         0 \r\n 2019          14            1.095        -1.726        -8.9           0 \r\n 2019          15            1.612         0.174        -2.851         0 \r\n 2019          16            5.883        -2.81         -9.24          0 \r\n 2019          17            3.07         -2.912        -11.61         0 \r\n 2019          18            2.568        -8.32         -12.15         10.922 \r\n 2019          19            9.49         -10.69        -21.56         0 \r\n 2019          20            8.32         -15.22        -24.09         0 \r\n 2019          21            5.643        -10.56        -20.8          0 \r\n 2019          22            3.265        -5.426        -11.25         0 \r\n 2019          23            8.66         -6.806        -13.23         3.556 \r\n 2019          24            9.34         -6.004        -22.5          0 \r\n 2019          25            7.696        -11.97        -26.64         0 \r\n 2019          26            5.678        -12.88        -26.28         0 \r\n 2019          27            8.99         -13.45        -28.92         4.572 \r\n 2019          28            8.8          -12.59        -19.14         0 \r\n 2019          29            10.23        -17.35        -31.82         0 \r\n 2019          30            11.02        -27.01        -33.71         0 \r\n 2019          31            7.256        -19.11        -34.69         0 \r\n 2019          32            9.8          -9.34         -22.58         0 \r\n 2019          33            4.829         4.18         -10.32         2.286 \r\n 2019          34            2.458         6.452         3.391         0.508 \r\n 2019          35            5.754         6.673        -15.39         0.254 \r\n 2019          36            3.359        -4.818        -15.73         3.048 \r\n 2019          37            3.895        -4.148        -6.48          0 \r\n 2019          38            7.042        -4.938        -19.68         3.556 \r\n 2019          39            13.34        -16.17        -21.99         0 \r\n 2019          40            9.28         -7.739        -22.01         0 \r\n 2019          41            5.423        -4.868        -7.79          3.302 \r\n 2019          42            4.214        -3.378        -6.602         5.08 \r\n 2019          43            9.85         -4.493        -14.99         4.572 \r\n 2019          44            11.98        -6.268        -18.99         0 \r\n 2019          45            9.69          3.208        -17.52         2.286 \r\n 2019          46            12.66        -13.71        -21.33         0 \r\n 2019          47            12.66        -6.338        -22.05         0 \r\n 2019          48            10.34        -5.02         -7.88          5.588 \r\n 2019          49            14.2         -7.617        -23.14         0 \r\n 2019          50            13.98        -6.906        -26.46         1.27 \r\n 2019          51            8.59         -0.542        -9.93          2.794 \r\n 2019          52            14.83        -7.87         -17.52         0 \r\n 2019          53            13.32        -1.262        -17.89         0 \r\n 2019          54            7.214         0.6          -2             7.366 \r\n 2019          55            15.07        -1.92         -19.23         0 \r\n 2019          56            10.55        -16.09        -20.56         0 \r\n 2019          57            8.25         -12.57        -16.89         0 \r\n 2019          58            16.34        -12.23        -20.6          0 \r\n 2019          59            11.01        -7.434        -19.17         0 \r\n 2019          60            10.98        -2.609        -11.87         2.794 \r\n 2019          61            14.08        -9.14         -17.12         0 \r\n 2019          62            17.04        -17.05        -25.3          0 \r\n 2019          63            17.02        -15.57        -26.58         0 \r\n 2019          64            17.31        -10.72        -20.82         0 \r\n 2019          65            17.51        -6.866        -21.31         0 \r\n 2019          66            14.15        -5.903        -18.11         0 \r\n 2019          67            14.71         0.408        -9.802         0 \r\n 2019          68            5.08          0.914        -1.494         8.89 \r\n 2019          69            17.85         0.165        -10.85         0 \r\n 2019          70            18.18         3.32         -10.97         1.016 \r\n 2019          71            6.83          4.643        -8.51          5.842 \r\n 2019          72            6.718         5.744         0.924         5.588 \r\n 2019          73            6.166         6.652         0.174         3.556 \r\n 2019          74            16.73         1.744        -3.418         0 \r\n 2019          75            18.18         2.067        -5.791         0 \r\n 2019          76            7.929         1.217        -5.182         0 \r\n 2019          77            18.14         4.614        -4.473         0 \r\n 2019          78            18.73         8.91         -3.135         0 \r\n 2019          79            10.28         6.168        -1.434         0 \r\n 2019          80            19.38         9.08         -0.604         0 \r\n 2019          81            19.92         9.64         -2.862         0 \r\n 2019          82            17.15         12.38        -4.21          0 \r\n 2019          83            3.342         8.16          1.804         3.048 \r\n 2019          84            16.77         8.73         -1.413         0 \r\n 2019          85            20.24         10.6         -3.541         0 \r\n 2019          86            13.87         18.7          3.26          0 \r\n 2019          87            16.43         12.41         0.55          0 \r\n 2019          88            11.52         7.804        -1.392         0 \r\n 2019          89            18.79         3.572        -5.304         0 \r\n 2019          90            20.05         4.33         -6.582         0 \r\n 2019          91            14.74         11.09         1.106         0 \r\n 2019          92            19.8          10.81        -1.363         2.54 \r\n 2019          93            12.46         12.74        -3.58          1.778 \r\n 2019          94            3.701         7.289         3.886         2.54 \r\n 2019          95            9.77          15.26         3.927         0 \r\n 2019          96            16.9          23.07         7.732         0 \r\n 2019          97            10.92         19.8          5.159         5.08 \r\n 2019          98            21.63         24.64         1.925         0.254 \r\n 2019          99            14.24         17.59         2.087         0 \r\n 2019          100           1.93          6.491         0.012         15.24 \r\n 2019          101           3.208         5.764         0.894         3.81 \r\n 2019          102           4.309         2.936        -0.746         0 \r\n 2019          103           11.99         5.805        -1.98          0 \r\n 2019          104           21.69         8.05         -2.82          0 \r\n 2019          105           21.5          15.9         -5.203         2.286 \r\n 2019          106           18.67         20.28         5.764         0.254 \r\n 2019          107           7.155         21.54         6.946         3.302 \r\n 2019          108           10.29         11.01         2.855         0 \r\n 2019          109           25.04         16.34         0.61          0 \r\n 2019          110           24.34         23.6         -1.636         0 \r\n 2019          111           20.33         29.62         9.21          0 \r\n 2019          112           6.037         20.38         7.804         17.02 \r\n 2019          113           24.8          18.89         5.28          0 \r\n 2019          114           25.19         18.86         2.946         0 \r\n 2019          115           6.057         15.68         8.95          3.556 \r\n 2019          116           23.28         15.86         3.976         0 \r\n 2019          117           5.428         9.64         -1.11          23.37 \r\n 2019          118           15            9.88         -3.116         0 \r\n 2019          119           15.11         17.36         4.37          1.016 \r\n 2019          120           3.047         9.24          5.067         6.604 \r\n 2019          121           9.5           10.02         4.32          1.778 \r\n 2019          122           12.68         12.16         2.896         0 \r\n 2019          123           14.71         15.42         0.266         0 \r\n 2019          124           19.03         20.59         4.028         0 \r\n 2019          125           15.04         23.66         8.06          0.254 \r\n 2019          126           18.39         16.91         8.49          0.508 \r\n 2019          127           14.96         16.76         7.157         0 \r\n 2019          128           2.253         14.13         4.876         28.7 \r\n 2019          129           7.511         7.884         2.916         0 \r\n 2019          130           26.15         16.65         2.552         0 \r\n 2019          131           10.24         13.51         5.038         0 \r\n 2019          132           18.61         14.17         2.228         0 \r\n 2019          133           21.12         18.7          0.67          0 \r\n 2019          134           12.85         18.07         6.895         0 \r\n 2019          135           23.83         26.15         4.411         0 \r\n 2019          136           20.69         30.4          15.18         0 \r\n 2019          137           5.334         18.25         11.01         4.572 \r\n 2019          138           17.17         26.88         8.99          41.66 \r\n 2019          139           9.81          11.84         3.775         5.08 \r\n 2019          140           23.77         14.37         3.816         0 \r\n 2019          141           4.634         10.61         8.02          12.19 \r\n 2019          142           24.82         22.61         9.64          0 \r\n 2019          143           22.89         19.78         8.46          0.254 \r\n 2019          144           15.52         25.63         11.06         35.81 \r\n 2019          145           26.95         24.65         13.28         0 \r\n 2019          146           28.05         26.21         11.51         0 \r\n 2019          147           10.29         24.25         11.7          13.21 \r\n 2019          148           6.166         15.5          11.26         2.286 \r\n 2019          149           13.2          20.16         12.53         5.588 \r\n 2019          150           20.72         24.77         12.58         0 \r\n 2019          151           23.61         31.97         13.09         0 \r\n 2019          152           19.45         24.54         12.68         0 \r\n 2019          153           25.99         24.99         8.33          0 \r\n 2019          154           17.79         25.15         10.7          0.762 \r\n 2019          155           22.17         29.96         14.28         6.604 \r\n 2019          156           26.66         28.71         16.56         6.35 \r\n 2019          157           28.54         30.25         15.82         0 \r\n 2019          158           28.7          30.5          16.22         0 \r\n 2019          159           29.5          29.73         14.65         0 \r\n 2019          160           23.94         27.06         13.87         0 \r\n 2019          161           28.22         26.14         11.01         0 \r\n 2019          162           8.9           22.07         11.55         1.778 \r\n 2019          163           20.19         21.04         12.36         5.08 \r\n 2019          164           30.34         23.07         7.198         0 \r\n 2019          165           17.3          25.01         13.17         0 \r\n 2019          166           15.19         28.24         14.21         8.13 \r\n 2019          167           15.01         22.67         13.77         0 \r\n 2019          168           14.11         23.81         13.03         0 \r\n 2019          169           10.08         22.88         17.57         0.254 \r\n 2019          170           21.28         25.32         15.04         0 \r\n 2019          171           15.45         24.08         13.13         0.254 \r\n 2019          172           7.043         19.72         13.51         3.556 \r\n 2019          173           12.65         25.94         13.71         0 \r\n 2019          174           13.71         25.04         18.91         6.35 \r\n 2019          175           15.91         24.31         15.23         0.508 \r\n 2019          176           24.26         29.1          14.6          2.794 \r\n 2019          177           20.89         29.37         13.04         0 \r\n 2019          178           9.64          28.08         17.01         10.67 \r\n 2019          179           12.89         30.4          17.23         22.86 \r\n 2019          180           21.55         32.58         17.97         0 \r\n 2019          181           14.67         33.79         20.01         1.524 \r\n 2019          182           19.6          31.36         19.82         0 \r\n 2019          183           22.45         31.98         20.83         0 \r\n 2019          184           18.09         30.06         19.42         0 \r\n 2019          185           21.94         32            19.24         8.89 \r\n 2019          186           23.23         31.41         18.83         2.032 \r\n 2019          187           12.52         24.97         16.64         0.254 \r\n 2019          188           27.29         27.9          15.6          0 \r\n 2019          189           27.15         29.39         15.12         0 \r\n 2019          190           18            29.61         16.87         9.14 \r\n 2019          191           24.23         26.7          19.27         0 \r\n 2019          192           24.46         27.24         15            0 \r\n 2019          193           26.64         30.74         12.88         0 \r\n 2019          194           16.99         29.45         18.9          22.86 \r\n 2019          195           26.38         32.45         19.18         0 \r\n 2019          196           23.15         30.07         22.05         0 \r\n 2019          197           19.21         30.04         18.92         10.92 \r\n 2019          198           12.88         28.3          18.87         7.112 \r\n 2019          199           19.48         32.4          21.28         4.318 \r\n 2019          200           26.36         33.62         24.13         0 \r\n 2019          201           13.12         30.19         18.49         1.524 \r\n 2019          202           21.8          26.24         17.52         0 \r\n 2019          203           24.93         24.25         13.47         0 \r\n 2019          204           26.67         26.56         13.13         0 \r\n 2019          205           26.4          28.24         12.72         0 \r\n 2019          206           15.69         26.63         13.28         1.524 \r\n 2019          207           23.5          30.1          17.94         0 \r\n 2019          208           22.8          31.32         18.01         0 \r\n 2019          209           16.81         29.91         19.78         22.1 \r\n 2019          210           25.99         26.1          15.02         0.254 \r\n 2019          211           24.29         24.77         11.81         0 \r\n 2019          212           20.82         25.33         10.34         0 \r\n 2019          213           21.09         27.2          12.44         0 \r\n 2019          214           23.66         27.49         12.44         0 \r\n 2019          215           24.02         30.53         15.86         0 \r\n 2019          216           22.45         30.03         13.59         0 \r\n 2019          217           19.6          30.11         17.89         13.97 \r\n 2019          218           25.12         28.14         16.71         0 \r\n 2019          219           23.45         29.49         16            0 \r\n 2019          220           25.94         25            11.51         0 \r\n 2019          221           25.62         26.1          10.04         0 \r\n 2019          222           14.21         27.06         16.45         2.54 \r\n 2019          223           14.23         27.9          17.77         0 \r\n 2019          224           5.451         22.54         19.2          15.49 \r\n 2019          225           21.92         28.39         15.57         0 \r\n 2019          226           4.126         22.73         13.11         0 \r\n 2019          227           19.48         25.01         11.46         0 \r\n 2019          228           22.73         26.26         12.16         0 \r\n 2019          229           19.35         27.36         11.24         2.286 \r\n 2019          230           19.14         26.24         13.44         14.73 \r\n 2019          231           24.64         28.05         11.76         0 \r\n 2019          232           18.64         28.58         16.39         9.14 \r\n 2019          233           12.84         23.65         12.5          0 \r\n 2019          234           23.67         25.18         9.9           0 \r\n 2019          235           21.65         25.08         11.94         0 \r\n 2019          236           20.37         23.5          12.38         0 \r\n 2019          237           14.67         22.41         13.94         0 \r\n 2019          238           9.25          22.4          13.37         2.794 \r\n 2019          239           22.85         24.35         10.49         0.254 \r\n 2019          240           22.84         23.71         9.52          0 \r\n 2019          241           22.25         26.74         9.82          0 \r\n 2019          242           20.95         23.38         7.984         0 \r\n 2019          243           6.889         18.93         12.81         0 \r\n 2019          244           16.21         24.65         8.02          0 \r\n 2019          245           12.41         27.57         15.93         0 \r\n 2019          246           15.21         27.48         13.17         0.762 \r\n 2019          247           21.98         23.77         8.52          0 \r\n 2019          248           18.77         26.16         8.75          0 \r\n 2019          249           21.23         25.26         11.59         0 \r\n 2019          250           10.78         22.52         12.18         0 \r\n 2019          251           4.806         17.14         13.54         0.254 \r\n 2019          252           4.524         21.72         14.15         13.97 \r\n 2019          253           13.89         28.57         19.22         7.112 \r\n 2019          254           10.04         26.98         19.34         9.65 \r\n 2019          255           6.516         28.06         15.9          12.45 \r\n 2019          256           15.26         21.15         8.57          0 \r\n 2019          257           14.21         25.31         7.833         0 \r\n 2019          258           16.2          29.12         14.55         0 \r\n 2019          259           16.91         29.87         14.2          0 \r\n 2019          260           17.07         30.36         17.71         0 \r\n 2019          261           6.448         26.84         19.62         3.302 \r\n 2019          262           11.33         26.69         16.14         32.51 \r\n 2019          263           16.02         30.18         17.85         0.254 \r\n 2019          264           4.631         25.32         21.45         1.016 \r\n 2019          265           6.268         22.25         10.52         5.842 \r\n 2019          266           18.54         24.97         8.77          0.254 \r\n 2019          267           15.21         28.85         14.39         5.842 \r\n 2019          268           8.36          21.43         9.9           0 \r\n 2019          269           17.12         22.69         7.581         0 \r\n 2019          270           4.789         21.34         11.86         0.254 \r\n 2019          271           16.27         20.42         10.5          1.778 \r\n 2019          272           2.84          16.96         10.59         1.016 \r\n 2019          273           15.64         32.22         16.95         0 \r\n 2019          274           3.196         23.45         13.25         27.94 \r\n 2019          275           2.739         13.49         11.94         14.99 \r\n 2019          276           10.3          13.44         6.521         0.508 \r\n 2019          277           11.03         15.07         6.5           0 \r\n 2019          278           1.998         14.86         5.886         22.86 \r\n 2019          279           13.16         19.72         4.492         0 \r\n 2019          280           15.92         21.24         4.916         0 \r\n 2019          281           15.62         21.48         5.704         0 \r\n 2019          282           12.01         21.54         6.914         12.19 \r\n 2019          283           2.302         16.95         5.148         7.366 \r\n 2019          284           4.598         5.159         0.054         0.762 \r\n 2019          285           5.026         4.452        -2.486         2.794 \r\n 2019          286           4.664         6.532        -0.401         0 \r\n 2019          287           14.5          13.51        -2.862         0 \r\n 2019          288           10.56         14.79         5.421         0 \r\n 2019          289           5.499         8.58          1.804         0 \r\n 2019          290           14.15         15.1         -2.548         0 \r\n 2019          291           13.12         20.33         5.057         0 \r\n 2019          292           6.406         17.12         5.018         8.89 \r\n 2019          293           10.74         18.79         0.307         0.254 \r\n 2019          294           6.609         14.11         5.159         24.64 \r\n 2019          295           6.91          11.15         0.165         0.762 \r\n 2019          296           7.368         11.51        -2.436         0.508 \r\n 2019          297           12.42         8.39         -3.844         0 \r\n 2019          298           13.04         11.41        -5.862         0 \r\n 2019          299           10.79         10.26        -3.541         0 \r\n 2019          300           8.39          10.59        -3.662         0 \r\n 2019          301           10.22         4.189        -1.818         0 \r\n 2019          302           11.35         5.926        -5.952         0 \r\n 2019          303           4.878         0.873        -2.061         2.794 \r\n 2019          304           7.28          1.358        -5.73          0 \r\n 2019          305           4.522         5.491        -5.608         0 \r\n 2019          306           5.352         5.643        -5.812         0 \r\n 2019          307           7.524         9.98         -2.791         5.588 \r\n 2019          308           5.943         5.876        -1.566         0 \r\n 2019          309           9.54          0.842        -5.862         0 \r\n 2019          310           4.466         1.46         -8.79          6.096 \r\n 2019          311           11.02        -5.406        -15.18         0 \r\n 2019          312           8.67         -0.159        -15.95         0 \r\n 2019          313           7.78          7.53         -5.812         0 \r\n 2019          314           3.72          1.137        -6.521         3.81 \r\n 2019          315           8.68         -6.176        -14.49         0 \r\n 2019          316           10.23        -8.47         -19.5          0 \r\n 2019          317           2.693        -1.636        -9.71          3.048 \r\n 2019          318           6.804        -1.434        -7.048         0.254 \r\n 2019          319           7.787         7.602        -10.01         0.254 \r\n 2019          320           6.569         5.906        -2.142         0 \r\n 2019          321           2.022         4.39         -0.665         2.032 \r\n 2019          322           3.565         3.25         -1.13          0.254 \r\n 2019          323           5.647         9.27         -2.72          4.064 \r\n 2019          324           5.389         9.82         -3.499         6.35 \r\n 2019          325           2.468         11.11        -5.142         7.874 \r\n 2019          326           9.04         -0.725        -8.98          0 \r\n 2019          327           8.06          4.916        -8.9           0 \r\n 2019          328           5.846         9.2          -3.358         0 \r\n 2019          329           6.553         9.88         -1.302         0 \r\n 2019          330           3.942         4.654         0.448         6.096 \r\n 2019          331           4.007         1.814        -2.405         2.286 \r\n 2019          332           3.123        -1.535        -4.736         0 \r\n 2019          333           1.925         0.692        -1.697         1.016 \r\n 2019          334           0.972         2.836         0.469         8.64 \r\n 2019          335           2.184         2.693        -4.432         0.508 \r\n 2019          336           7.872        -0.289        -9.28          0 \r\n 2019          337           7.719         4.068        -3.905         0 \r\n 2019          338           7.975         4.624        -5.892         0 \r\n 2019          339           6.703         10.28        -5.964         0 \r\n 2019          340           7.169        -0.28         -7.902         0 \r\n 2019          341           6.568         4.947        -6.054         0 \r\n 2019          342           7.25          7.904        -2.528         0 \r\n 2019          343           3.51          1.076        -16.79         0 \r\n 2019          344           7.464        -10.53        -19.68         0 \r\n 2019          345           7.862        -8.55         -15.75         0 \r\n 2019          346           1.562         2.249        -9.85          0 \r\n 2019          347           2.653        -3.257        -9             0 \r\n 2019          348           5.468        -4.502        -17.15         0 \r\n 2019          349           5.769        -8.27         -18.62         0 \r\n 2019          350           5.561        -3.844        -14.71         0 \r\n 2019          351           3.874        -1.838        -11.33         0 \r\n 2019          352           5.49         -6.319        -18.71         0 \r\n 2019          353           6.229         3.098        -9.46          0 \r\n 2019          354           5.919         7.581        -5.122         0 \r\n 2019          355           7.133         8.69         -9.46          0 \r\n 2019          356           7.156         9.91         -3.226         0 \r\n 2019          357           5.806         6.248        -5.406         0 \r\n 2019          358           6.254         9.87         -1.778         0 \r\n 2019          359           5.073         13.02         0.368         0 \r\n 2019          360           2.604         3.088        -2.609         0 \r\n 2019          361           6.181         3.31         -5.142         0 \r\n 2019          362           1             6.209        -1.98          15.75 \r\n 2019          363           1.56          9.75         -1.069         1.27 \r\n 2019          364           3.671        -1.059        -6.886         0 \r\n 2019          365           6.129        -4.25         -12.45         0 \r\n 2020          1             5.91          3.34         -11.44         1.016 \r\n 2020          2             5.532         3.654        -1.879         0 \r\n 2020          3             4.513         2.228        -3.946         3.556 \r\n 2020          4             1.903        -0.694        -6.947         0 \r\n 2020          5             7.068         3.36         -5.406         3.556 \r\n 2020          6             5.641         2.46         -9.1           0 \r\n 2020          7             4.851        -1.505        -12.98         0 \r\n 2020          8             5.26         -6.176        -15.9          0 \r\n 2020          9             2.715         9.43         -6.358         0 \r\n 2020          10            2.031        -3.925        -8.21          2.794 \r\n 2020          11            4.941        -6.358        -14.02         0 \r\n 2020          12            3.389        -4.189        -14.16         3.048 \r\n 2020          13            5.765        -0.837        -5.74          6.858 \r\n 2020          14            5.792         0.651        -17.6          0.508 \r\n 2020          15            3.8232       -5.182        -19.6          0 \r\n 2020          16            8.90784      -17.17        -24.21         0 \r\n 2020          17            2.617056     -3.298        -21.15         8.636 \r\n 2020          18            7.00704      -1.838        -19.88         0 \r\n 2020          19            6.59664      -15.06        -20.5          0 \r\n 2020          20            7.17984      -10.38        -21.44         0 \r\n 2020          21            8.95968      -6.076        -23.91         0 \r\n 2020          22            4.81248      -0.24         -6.095         8.89 \r\n 2020          23            4.884192     -0.644        -2.233         3.556 \r\n 2020          24            6.413472     -0.37         -1.92          0 \r\n 2020          25            7.03296      -0.886        -5.081         0 \r\n 2020          26            6.641568     -2.314        -5.608         0.254 \r\n 2020          27            6.226848     -2.832        -6.278         0 \r\n 2020          28            6.627744     -6.278        -9.06          0 \r\n 2020          29            6.5016       -4.189        -8.74          0 \r\n 2020          30            7.43904      -1.93         -8.47          0 \r\n 2020          31            6.761664     -0.026        -4.756         0.254 \r\n 2020          32            9.8064        1.551        -2.345         0.254 \r\n 2020          33            8.39808       4.3          -2.73          0 \r\n 2020          34            7.71552       0.934        -5.446         0 \r\n 2020          35            9.43488      -3.499        -10.7          0 \r\n 2020          36            8.23392      -2.122        -12.68         0 \r\n 2020          37            11.5776       0.832        -16.36         0 \r\n 2020          38            7.40448      -1.554        -9.71          0 \r\n 2020          39            12.19968     -7.454        -19.92         0 \r\n 2020          40            5.38704       1.834        -12.02         5.08 \r\n 2020          41            11.90592     -2.304        -18.79         0 \r\n 2020          42            12.312       -2.851        -12.03         0 \r\n 2020          43            6.348672      1.642        -15.24         0 \r\n 2020          44            12.96        -15.26        -26.5          0 \r\n 2020          45            13.49568     -11.13        -28.69         0 \r\n 2020          46            11.45664      1.439        -11.74         0 \r\n 2020          47            8.89056      -1.048        -10.29         0 \r\n 2020          48            5.493312      0.67         -3.642         3.556 \r\n 2020          49            12.3552      -3.155        -17.57         0 \r\n 2020          50            13.07232     -11.64        -22.95         0 \r\n 2020          51            14.29056     -12.13        -26.95         0 \r\n 2020          52            14.79168      3.108        -16.22         1.524 \r\n 2020          53            13.98816      4.411        -7.902         0 \r\n 2020          54            14.76576      5.18         -6.856         0 \r\n 2020          55            12.4416       2.249        -5.994         0 \r\n 2020          56            11.37024      0.54         -4.068         0 \r\n 2020          57            14.8176      -3.034        -8.61          0 \r\n 2020          58            15.50016     -4.402        -10.66         0 \r\n 2020          59            15.0336      -4.513        -14.69         0 \r\n 2020          60            15.25824      4.492        -15.38         0 \r\n 2020          61            14.35968      6.976        -0.746         0 \r\n 2020          62            8.00064       0.286        -2.254         0 \r\n 2020          63            15.58656      5.814        -1.859         1.016 \r\n 2020          64            16.5888       7.299        -2.628         0.508 \r\n 2020          65            6.187968      5.057         0.226         0 \r\n 2020          66            17.28         6.35         -4.422         0 \r\n 2020          67            15.18048      15.26        -2.142         0 \r\n 2020          68            15.65568      18.89         3.422         0 \r\n 2020          69            2.313792      11.58         0.145         8.636 \r\n 2020          70            14.63616      9.34         -3.338         4.064 \r\n 2020          71            11.24928      8.52          1.783         0 \r\n 2020          72            7.65504       11.52        -0.472         2.032 \r\n 2020          73            18.11808      5.966        -3.418         0 \r\n 2020          74            9.21024       0.185        -7.21          8.89 \r\n 2020          75            16.34688      2.875        -8.28          0 \r\n 2020          76            5.514048      4.37         -1.21          0 \r\n 2020          77            17.47008      7.804        -5.426         1.778 \r\n 2020          78            3.063744      5.219         1.824         9.906 \r\n 2020          79            1.776384      6.209         1.5           31.75 \r\n 2020          80            14.36832      1.52         -4.048         3.302 \r\n 2020          81            12.98592      3.32         -4.99          0 \r\n 2020          82            12.312        4.128        -1.778         0 \r\n 2020          83            5.096736      6.714        -0.584         0 \r\n 2020          84            8.63136       8.19          1.834         0 \r\n 2020          85            4.388256      8.85          2.814         1.524 \r\n 2020          86            9.88416       10.02         2.886         0 \r\n 2020          87            8.7264        13.04         1.541         1.27 \r\n 2020          88            5.361984      14.05         5.764         6.604 \r\n 2020          89            5.70672       8.41          0.873         2.286 \r\n 2020          90            20.20896      15.06        -1.818         0 \r\n 2020          91            19.3104       12.12        -0.26          0 \r\n 2020          92            12.7008       11.52        -1.97          3.81 \r\n 2020          93            15.31872      18.1          5.39          1.016 \r\n 2020          94            3.09312       10.04        -3.398         4.826 \r\n 2020          95            21.15072      8.17         -4.716         1.778 \r\n 2020          96            21.2544       15.8         -4.118         0 \r\n 2020          97            5.487264      12.9          4.411         0 \r\n 2020          98            14.87808      24.02         8.69          0 \r\n 2020          99            7.2144        14.33         2.492         2.794 \r\n 2020          100           17.30592      5.4          -2.922         0.254 \r\n 2020          101           18.85248      10.72        -5.344         0 \r\n 2020          102           12.2688       16.3          2.664         0 \r\n 2020          103           1.463616      8.47         -2.558         19.05 \r\n 2020          104           21.21984      3.078        -5.406         0 \r\n 2020          105           14.33376      0.469        -7.232         0 \r\n 2020          106           22.12704      2.106        -9             0 \r\n 2020          107           18.80928      5.785        -8.22          0 \r\n 2020          108           15.30144      10.15        -1.92          0 \r\n 2020          109           23.21568      21.53        -1.505         0 \r\n 2020          110           24.55488      12.94        -1.656         0 \r\n 2020          111           19.6992       20.1         -3.52          0 \r\n 2020          112           20.62368      12.32        -1.048         0 \r\n 2020          113           16.64928      27.37         1.794         3.81 \r\n 2020          114           21.88512      19.3          5.29          0 \r\n 2020          115           18.45504      17.3          5.371         0 \r\n 2020          116           20.19168      19.89         1.591         0 \r\n 2020          117           20.6928       20.95         2.522         0 \r\n 2020          118           18.17856      25.82         8.49          0 \r\n 2020          119           10.48896      21.27         8.42          1.524 \r\n 2020          120           11.94912      15.63         4.573         0 \r\n 2020          121           27            20.94         3.159         0 \r\n 2020          122           18.80928      26.1          4.098         0 \r\n 2020          123           14.27328      23.83         7.218         0 \r\n 2020          124           24.87456      25.96         3.572         0 \r\n 2020          125           14.70528      14.96         4.452         0 \r\n 2020          126           6.633792      9.65          3.138         13.462 \r\n 2020          127           18.12672      16.2          2.946         0 \r\n 2020          128           18.80064      17.46         3.502         0 \r\n 2020          129           28.22688      11.16        -1.252         0 \r\n 2020          130           22.56768      19.62        -4.868         0 \r\n 2020          131           13.21056      8.87          2.33          0.762 \r\n 2020          132           15.4656       12.46         0.67          0 \r\n 2020          133           26.55072      16.37        -0.826         0 \r\n 2020          134           15.17184      17.33         2.592         9.398 \r\n 2020          135           17.18496      22.09         10.64         1.27 \r\n 2020          136           28.43424      22.59         8.21          0 \r\n 2020          137           21.18528      23.46         7.38          2.794 \r\n 2020          138           5.820768      15.06         10.55         53.34 \r\n 2020          139           8.2944        14.06         10.04         0 \r\n 2020          140           16.1136       17.95         9.5           0 \r\n 2020          141           16.61472      20.42         12.4          0 \r\n 2020          142           8.13024       16.54         13.17         0 \r\n 2020          143           12.23424      20.03         12.55         1.524 \r\n 2020          144           10.37664      21.61         13.24         8.128 \r\n 2020          145           15.6816       27.48         12.51         3.302 \r\n 2020          146           16.68384      28.71         17.52         13.716 \r\n 2020          147           15.74208      28.02         16.84         2.54 \r\n 2020          148           16.83072      27.9          17.83         0 \r\n 2020          149           14.02272      23.66         14.32         17.78 \r\n 2020          150           22.70592      20.42         9.39          0 \r\n 2020          151           26.2656       21.53         7.994         0 \r\n 2020          152           26.24832      25.47         7.097         0 \r\n 2020          153           23.03424      31.32         14.54         4.318 \r\n 2020          154           26.97408      36.16         19.34         0.508 \r\n 2020          155           27.45792      31.46         17.36         0 \r\n 2020          156           23.85504      32.96         17.34         0 \r\n 2020          157           26.27424      29.4          18.17         15.494 \r\n 2020          158           25.29792      28.32         17.17         0 \r\n 2020          159           28.0368       31.57         16.81         0 \r\n 2020          160           28.08         33.54         20.74         0 \r\n 2020          161           5.338656      24.61         18.37         38.608 \r\n 2020          162           14.87808      21.16         12.82         8.89 \r\n 2020          163           28.4256       28.24         11.47         0 \r\n 2020          164           27.46656      30.61         10.52         0 \r\n 2020          165           27.63936      22.4          13.59         0 \r\n 2020          166           26.33472      25.41         12.4          0 \r\n 2020          167           26.71488      28.19         15.1          0 \r\n 2020          168           28.50336      29.32         15.51         0 \r\n 2020          169           29.44512      29.64         14.43         0 \r\n 2020          170           19.83744      30.01         16.92         11.684 \r\n 2020          171           8.60544       24.19         18.63         11.43 \r\n 2020          172           17.26272      23.43         15.94         3.302 \r\n 2020          173           23.1984       29.82         14.39         35.56 \r\n 2020          174           6.162912      20.41         14.39         34.544 \r\n 2020          175           20.83968      22.7          12.88         0 \r\n 2020          176           23.18112      24.75         11.71         0 \r\n 2020          177           28.5984       28.94         12.76         0 \r\n 2020          178           17.48736      27.77         18.35         5.588 \r\n 2020          179           26.76672      29.79         16.47         0 \r\n 2020          180           20.68416      30.37         17.29         0 \r\n 2020          181           20.03616      31.27         22.5          0 \r\n 2020          182           22.32576      30.22         21.23         0 \r\n 2020          183           22.00608      28.8          19.17         0 \r\n 2020          184           27.49248      31.12         19.45         0 \r\n 2020          185           26.81856      31.61         18.75         0 \r\n 2020          186           28.04544      32.97         18.43         0 \r\n 2020          187           26.58528      32.7          17.97         0 \r\n 2020          188           26.16192      31.86         18.62         0 \r\n 2020          189           26.61984      31.7          19.31         0 \r\n 2020          190           24.65856      33.2          20.51         0 \r\n 2020          191           10.1088       30.41         17.8          14.732 \r\n 2020          192           27.98496      28.72         17.65         0 \r\n 2020          193           21.95424      30            17.11         1.524 \r\n 2020          194           26.96544      27.91         15.3          0 \r\n 2020          195           28.04544      29.35         12.9          0 \r\n 2020          196           17.02944      30.35         17.08         10.922 \r\n 2020          197           7.95744       22.68         11.92         2.794 \r\n 2020          198           25.43616      27.47         9.12          0 \r\n 2020          199           22.88736      30.02         14.71         0 \r\n 2020          200           20.27808      32.16         19.91         0.508 \r\n 2020          201           27.53568      28.45         18.78         0 \r\n 2020          202           14.49792      26.67         14.39         0 \r\n 2020          203           11.00736      27.61         15.34         19.05 \r\n 2020          204           26.6976       25.29         14            0.254 \r\n 2020          205           26.6112       27.77         11.27         0 \r\n 2020          206           26.07552      31            17.29         0 \r\n 2020          207           19.92384      32.51         22.56         0 \r\n 2020          208           16.00992      31.29         21.64         0 \r\n 2020          209           27.20736      28.54         15.28         0 \r\n 2020          210           21.20256      30.81         14.96         0 \r\n 2020          211           22.77504      30.19         17.94         0 \r\n 2020          212           24.52896      26.82         16.34         0 \r\n 2020          213           22.94784      29.17         12.84         0 \r\n 2020          214           24.192        28.79         12.02         0 \r\n 2020          215           22.77504      24.7          14.1          0 \r\n 2020          216           22.48128      21.87         8.11          0 \r\n 2020          217           24.0624       26.38         6.41          0 \r\n 2020          218           20.9952       25.79         6.491         0.254 \r\n 2020          219           23.59584      26.89         14.54         0 \r\n 2020          220           20.5632       29            15.69         0 \r\n 2020          221           18.55008      31.84         20.32         0 \r\n 2020          222           13.50432      29.92         19.4          12.954 \r\n 2020          223           9.504         26.94         11.11         13.97 \r\n 2020          224           26.4384       28.6          8.77          0 \r\n 2020          225           18.80064      26.84         12            0 \r\n 2020          226           21.76416      30.59         18            0 \r\n 2020          227           18.82656      29.43         18.25         8.382 \r\n 2020          228           24.5808       25.83         12.51         0.254 \r\n 2020          229           24.1488       30.45         11.98         0.508 \r\n 2020          230           24.02784      26.07         11.41         0 \r\n 2020          231           24.07968      26.33         9.66          0 \r\n 2020          232           24.37344      28.1          8.75          0 \r\n 2020          233           22.09248      28.68         12.46         0 \r\n 2020          234           15.86304      28.82         13.86         0 \r\n 2020          235           9.98784       25.84         17.33         3.302 \r\n 2020          236           21.18528      33.77         14.7          0 \r\n 2020          237           20.05344      32.83         17.04         0 \r\n 2020          238           20.79648      34.4          17.03         0 \r\n 2020          239           21.02976      34.66         17.51         0 \r\n 2020          240           19.83744      35.79         18.2          0 \r\n 2020          241           16.20864      32.55         19.01         0.762 \r\n 2020          242           20.88288      26.26         9.85          0 \r\n 2020          243           20.87424      26.62         7.309         0 \r\n 2020          244           20.02752      25.16         6.946         0 \r\n 2020          245           15.7248       23.22         4.846         0.254 \r\n 2020          246           22.51584      30.44         9.22          0 \r\n 2020          247           21.53952      23.87         8.77          0 \r\n 2020          248           21.52224      28.47         5.18          0 \r\n 2020          249           20.44224      29.89         9.43          0 \r\n 2020          250           15.99264      31.8          16.18         39.624 \r\n 2020          251           14.95584      18.74         9.63          2.032 \r\n 2020          252           2.349216      10.4          6.986         28.448 \r\n 2020          253           3.070656      9.05          6.895         29.464 \r\n 2020          254           5.631552      11.6          7.138         7.62 \r\n 2020          255           2.752704      14.6          10.16         15.494 \r\n 2020          256           8.36352       19.62         10.44         3.302 \r\n 2020          257           18.78336      26.84         7.258         0 \r\n 2020          258           15.88032      25.96         7.965         0 \r\n 2020          259           16.98624      28.27         12.14         0 \r\n 2020          260           14.75712      23.85         7.864         0 \r\n 2020          261           16.55424      19.93         5.866         0 \r\n 2020          262           15.92352      18.98         4.24          0 \r\n 2020          263           16.18272      20.19         5.592         0 \r\n 2020          264           14.50656      22.33         6.914         0 \r\n 2020          265           14.62752      26.26         7.994         0 \r\n 2020          266           15.81984      27.98         11.56         0 \r\n 2020          267           16.70976      27.74         8.29          0 \r\n 2020          268           8.54496       27.04         13.67         0 \r\n 2020          269           15.43104      29.31         14.91         0 \r\n 2020          270           10.35936      27.62         14.19         0 \r\n 2020          271           3.553632      18.9          9.02          0 \r\n 2020          272           7.128         16.31         6.895         0.254 \r\n 2020          273           10.56672      18.21         5.411         0 \r\n 2020          274           13.9104       19.56         4.704         1.016 \r\n 2020          275           7.91424       14.93         0.792         0.762 \r\n 2020          276           14.472        14.77        -2.051         0 \r\n 2020          277           6.96384       11.29        -0.32          0 \r\n 2020          278           16.56288      15.17        -3.47          0 \r\n 2020          279           15.32736      21.89         2.492         0 \r\n 2020          280           14.61024      27.04         7.066         0 \r\n 2020          281           15.32736      25.24         6.269         0 \r\n 2020          282           14.8608       22.53         2.664         0 \r\n 2020          283           12.12192      29.96         14.03         0 \r\n 2020          284           14.61024      23.55         9.08          0 \r\n 2020          285           13.42656      25.83         8.73          0 \r\n 2020          286           13.94496      21.57         5.633         1.524 \r\n 2020          287           13.87584      18.09         1.966         0 \r\n 2020          288           4.011552      18.67         4.432         0 \r\n 2020          289           14.26464      11.09        -1.818         0 \r\n 2020          290           11.91456      10.22        -2.102         0 \r\n 2020          291           10.03968      18.17         3.927         0 \r\n 2020          292           11.13696      4.876        -3.135         0 \r\n 2020          293           3.707424      1.045        -5.872         0 \r\n 2020          294           3.864672      5.724         0.024         1.27 \r\n 2020          295           9.00288       9.59          1.722         0 \r\n 2020          296           0.988416      4.573         1.945         33.274 \r\n 2020          297           4.016736      3.38         -3.135         0 \r\n 2020          298           9.79776       2.572        -8.77          0 \r\n 2020          299           3.279744      0.358        -4.352         0 \r\n 2020          300           10.12608     -0.159        -7.028         0.254 \r\n 2020          301           12.45888      2.865        -9.71          0 \r\n 2020          302           11.47392      13.45        -4.858         0 \r\n 2020          303           3.839616      4.411        -2.366         0 \r\n 2020          304           9.69408       7.38         -1.828         0 \r\n 2020          305           9.83232       17.63        -0.542         0 \r\n 2020          306           11.54304      3.765        -9.61          0 \r\n 2020          307           10.31616      14.61        -9.36          0 \r\n 2020          308           11.05056      24.27        -3.014         0 \r\n 2020          309           10.61856      21.29         2.541         0 \r\n 2020          310           10.40256      23.41         0.378         0 \r\n 2020          311           10.13472      23.38         5.067         0 \r\n 2020          312           10.05696      22.16         10.63         0 \r\n 2020          313           8.0784        23.07         11.57         0 \r\n 2020          314           2.565216      19.95         2.288         8.382 \r\n 2020          315           1.580256      3.229        -2.628         17.78 \r\n 2020          316           9.91008       7.682        -5.67          0 \r\n 2020          317           6.202656      7.782        -6.338         0.254 \r\n 2020          318           9.90144       3.482        -11.77         0 \r\n 2020          319           1.059264      8.79         -3.418         0 \r\n 2020          320           2.282688      5.169        -5.061         0 \r\n 2020          321           8.13888       9.15         -6.886         0 \r\n 2020          322           5.953824      3.38         -9.22          0 \r\n 2020          323           8.26848       14.03        -2.021         0 \r\n 2020          324           6.6744        19.17         2.855         0 \r\n 2020          325           7.43904       7.419        -3.541         0 \r\n 2020          326           8.44992       7.672        -8.12          0 \r\n 2020          327           7.62048       8.45         -6.562         0 \r\n 2020          328           6.97248       4.633        -9.34          0 \r\n 2020          329           0.88992       3.017        -0.28          7.366 \r\n 2020          330           2.331072      3.088         0.975         0 \r\n 2020          331           3.419712      5.33         -1.1           0 \r\n 2020          332           8.424         2.552        -4.636         0 \r\n 2020          333           8.15616       11.74        -4.23          0 \r\n 2020          334           4.093632      2.946        -4.452         0 \r\n 2020          335           8.23392      -1.454        -11.64         0 \r\n 2020          336           8.39808       3.765        -13.86         0 \r\n 2020          337           7.46496       7.258        -12.25         0 \r\n 2020          338           7.18848       5.643        -8.02          0 \r\n 2020          339           7.62048       7.198        -6.734         0 \r\n 2020          340           7.78464       7.016        -8.87          0 \r\n 2020          341           7.46496       4.512        -5.588         0 \r\n 2020          342           1.2312       -0.846        -1.92          0 \r\n 2020          343           4.03056       4.754        -1.636         0 \r\n 2020          344           7.33536       11.55        -4.656         0 \r\n 2020          345           5.946912      13.91        -4.746         0 \r\n 2020          346           1.432512      3.32          0.094         0 \r\n 2020          347           4.898016      1.622        -7.8           0 \r\n 2020          348           3.441312     -1.09         -9.79          0 \r\n 2020          349           6.156864     -3.764        -12.09         0 \r\n 2020          350           4.282848     -4.787        -13.56         0 \r\n 2020          351           5.747328     -1.232        -12.9          0 \r\n 2020          352           2.960064     -3.064        -10.97         0 \r\n 2020          353           5.174496      3.804        -4.24          0 \r\n 2020          354           1.57248       0.661        -9.26          0 \r\n 2020          355           5.834592      5.018        -8.45          0 \r\n 2020          356           3.575232      5.572        -8.63          0 \r\n 2020          357           5.677344      6.28         -11.25         0 \r\n 2020          358           1.519776      9.2          -15.63         0 \r\n 2020          359           7.4304       -13.95        -18.99         0 \r\n 2020          360           6.8904       -5            -21.09         0 \r\n 2020          361           6.725376     -0.918        -14.79         0 \r\n 2020          362           1.867104     -2.335        -6.724         0 \r\n 2020          363           7.36128      -1.738        -14.02         0 \r\n 2020          364           1.535328     -2.992        -13.73         3.556 \r\n 2020          365           5.768928     -2.304        -7.739         0 \r\n 2020          366           4.83408      -5.132        -11.56         0 \r\n 2021          1             3.709152     -5.497        -11.07         0 \r\n 2021          2             4.978368     -4.006        -18.01         0.762 \r\n 2021          3             5.648832     -3.358        -10.99         0 \r\n 2021          4             4.791744      1.744        -6.653         0 \r\n 2021          5             6.96384       0.702        -13.14         0 \r\n 2021          6             6.368544     -0.522        -6.206         0 \r\n 2021          7             4.921344      0.104        -4.98          0 \r\n 2021          8             2.884032     -2.781        -5.385         0 \r\n 2021          9             3.315168     -4.675        -8.5           0 \r\n 2021          10            3.367872     -2.992        -8.12          0 \r\n 2021          11            8.4672        2.654        -8.13          0 \r\n 2021          12            8.22528       5.038        -8.33          0 \r\n 2021          13            5.980608      5.462        -4.756         0 \r\n 2021          14            1.042848      1.309        -3.317         3.302 \r\n 2021          15            5.770656      1.056        -0.907         3.556 \r\n 2021          16            3.207168      0.388        -5.75          0 \r\n 2021          17            8.09568      -3.885        -10            0 \r\n 2021          18            8.83008      -4.352        -10.46         0 \r\n 2021          19            4.33728       0.246        -16.56         0.254 \r\n 2021          20            9.44352       3.138        -18.83         0 \r\n 2021          21            9.00288       1.318        -11.88         0 \r\n 2021          22            9.68544      -9.2          -17.65         0 \r\n 2021          23            5.599584     -6.643        -17.99         0 \r\n 2021          24            8.93376      -3.905        -14.41         1.016 \r\n 2021          25            5.496768     -6.399        -13.65         0 \r\n 2021          26            8.54496      -6.684        -15.64         0 \r\n 2021          27            9.21888      -6.38         -18.47         0 \r\n 2021          28            10.29888     -6.38         -21.68         0 \r\n 2021          29            8.424        -4.473        -10.46         0 \r\n 2021          30            2.853792     -1.859        -4.574         0 \r\n 2021          31            8.06976      -0.948        -2.963         1.778 \r\n 2021          32            8.79552      -2.507        -7.171         0 \r\n 2021          33            6.771168     -4.98         -8.65          0 \r\n 2021          34            9.74592      -0.016        -8.71          0 \r\n 2021          35            4.801248      1.358        -13.44         4.318 \r\n 2021          36            11.4912      -13           -18.93         0 \r\n 2021          37            8.25984      -16.32        -26.87         0 \r\n 2021          38            10.04832     -18.13        -29.61         0 \r\n 2021          39            10.95552     -15.91        -26.95         0 \r\n 2021          40            11.30976     -14.47        -28.96         0 \r\n 2021          41            10.70496     -10.19        -24.6          0 \r\n 2021          42            7.58592      -18.57        -23.42         0 \r\n 2021          43            10.51488     -21.34        -25.19         0 \r\n 2021          44            11.61216     -19.36        -25.26         0 \r\n 2021          45            11.45664     -23.15        -26.45         0 \r\n 2021          46            12.4848      -20.36        -29.28         0 \r\n 2021          47            10.2384      -13.24        -29.71         0 \r\n 2021          48            10.08288     -11.76        -24.89         0 \r\n 2021          49            11.55168     -9.36         -21.25         0 \r\n 2021          50            13.3488      -7.718        -22.09         0 \r\n 2021          51            12.54528     -5.791        -24.54         0 \r\n 2021          52            4.418496     -4.675        -8.18          7.366001 \r\n 2021          53            14.37696      2.826        -6.541         2.54 \r\n 2021          54            11.82816      6.986        -4.452         0 \r\n 2021          55            13.2192       1.945        -7.11          0 \r\n 2021          56            14.98176      1.864        -9.18          0 \r\n 2021          57            12.79584      2.774        -9.58          0 \r\n 2021          58            15.06816      9.98         -6.48          0 \r\n 2021          59            8.00064       2.997        -6.826         0 \r\n 2021          60            15.15456     -3.094        -9.91          0 \r\n 2021          61            15.71616      5.411        -10.44         0 \r\n 2021          62            15.83712      12.25        -3.642         0 \r\n 2021          63            14.1696       5.169        -3.703         0 \r\n 2021          64            8.75232       4.633        -3.58          0 \r\n 2021          65            15.67296      7.46         -2.244         0 \r\n 2021          66            15.30144      14.64        -0.725         0 \r\n 2021          67            16.13088      16.85        -2.184         0 \r\n 2021          68            14.83488      19.1          2.633         0 \r\n 2021          69            8.96832       19.57         0.752         5.08 \r\n 2021          70            15.57792      9.98         -2.528         0 \r\n 2021          71            15.73344      10.18        -5.203         0 \r\n 2021          72            16.20864      15.6         -4.493         0 \r\n 2021          73            5.558976      7.904         0.692         0 \r\n 2021          74            6.885216      0.964        -2.356         1.524 \r\n 2021          75            10.47168      0.408        -2.294         2.794 \r\n 2021          76            14.06592      3.432        -0.886         0 \r\n 2021          77            17.39232      9.07         -2.294         0 \r\n 2021          78            19.36224      11.11        -5.548         0 \r\n 2021          79            19.21536      14.72        -2.8           0 \r\n 2021          80            15.90624      18.25         5.098         0 \r\n 2021          81            8.4672        13.93         2.744         0.762 \r\n 2021          82            4.002048      11.78         5.724         14.986 \r\n 2021          83            4.797792      9.01          3.603         1.778 \r\n 2021          84            7.11936       8.04         -0.078         0.508 \r\n 2021          85            10.09152      9.57          2.956         0 \r\n 2021          86            3.989952      9.46          0.732         6.857999 \r\n 2021          87            15.57792      7.138        -0.826         0 \r\n 2021          88            20.39904      22.09         2.42          0 \r\n 2021          89            15.1632       13.28        -3.703         0 \r\n 2021          90            11.11968      0.54         -6.521         0 \r\n 2021          91            21.72096      7.4          -11.47         0 \r\n 2021          92            20.83104      14.69        -3.55          0 \r\n 2021          93            21.24576      23.48         2.541         0 \r\n 2021          94            18.75744      28            2.552         0 \r\n 2021          95            16.44192      26.85         11.55         1.27 \r\n 2021          96            15.61248      25.22         14.3          1.27 \r\n 2021          97            14.52384      25.25         12.58         4.064 \r\n 2021          98            5.884704      15.33         7.238         2.794 \r\n 2021          99            8.10432       12.72         6.491         1.016 \r\n 2021          100           5.891616      8.55          5.775         0 \r\n 2021          101           13.0032       14.49         3.38          0 \r\n 2021          102           18.10944      13.34         3.159         0 \r\n 2021          103           16.32096      7.994        -0.522         0 \r\n 2021          104           14.98176      8.62         -1.636         0 \r\n 2021          105           10.9296       9.44          2.026         0 \r\n 2021          106           16.68384      15.06         1.096         0 \r\n 2021          107           23.08608      16.26        -1.009         0 \r\n 2021          108           20.6496       18.07         2.562         0 \r\n 2021          109           12.06144      7.097        -6.217         0 \r\n 2021          110           14.59296      6.269        -6.166         0 \r\n 2021          111           23.53536      7.782        -8.36          0 \r\n 2021          112           24.38208      16.79        -1.758         0 \r\n 2021          113           4.987008      12.82         4.814         0 \r\n 2021          114           14.56704      11.43        -1.859         0 \r\n 2021          115           9.892801      8.86         -5.04          2.286 \r\n 2021          116           12.3552       27.63         3.594         0 \r\n 2021          117           16.57152      25.29         9.1           0 \r\n 2021          118           19.45728      19.85         7.49          0 \r\n 2021          119           23.9328       23.42         2.946         0 \r\n 2021          120           25.6608       20.38         6.329         0 \r\n 2021          121           24.60672      34.75         10.55         0 \r\n 2021          122           22.15296      29.89         12.67         11.938 \r\n 2021          123           9.49536       19.65         10.14         3.048 \r\n 2021          124           23.26752      16.08         3.38          0 \r\n 2021          125           21.56544      17.5         -0.057         0.508 \r\n 2021          126           19.76832      15.78         4.492         0.508 \r\n 2021          127           25.704        15.63         2.512         0 \r\n 2021          128           8.70048       12.38         0.165         11.43 \r\n 2021          129           20.64096      17            3.401         0 \r\n 2021          130           16.98624      14.96         2.148         0 \r\n 2021          131           27.39744      16           -0.35          0 \r\n 2021          132           24.85728      18.79         0.61          0 \r\n 2021          133           25.34976      20.15         1.096         0 \r\n 2021          134           14.6448       19.76         5.744         0.508 \r\n 2021          135           17.21088      22.58         8.56          0 \r\n 2021          136           11.04192      19.9          10.12         0 \r\n 2021          137           18.72288      23.35         8.77          0 \r\n 2021          138           4.398624      17.51         12.34         7.112 \r\n 2021          139           7.39584       23.91         16.99         4.318 \r\n 2021          140           6.332256      22.5          17.76         8.382 \r\n 2021          141           10.73088      25.28         18.53         6.096 \r\n 2021          142           15.40512      25.54         18.02         0 \r\n 2021          143           12.46752      28.52         18.25         0 \r\n 2021          144           21.45312      29.16         17.71         0.254 \r\n 2021          145           15.74208      29.86         15.98         2.032 \r\n 2021          146           28.53792      23.33         12.66         0 \r\n 2021          147           3.65904       14.58         4.714         24.13 \r\n 2021          148           8.32032       10.62         1.753         0 \r\n 2021          149           28.92672      17.87         0.378         0 \r\n 2021          150           12.32928      17.07         5.562         0 \r\n 2021          151           25.52256      24.97         7.138         0 \r\n 2021          152           27.09504      27.7          10.73         0 \r\n 2021          153           25.21152      28.23         11.63         0 \r\n 2021          154           26.89632      32.18         13.63         0 \r\n 2021          155           28.35648      34.12         18.47         0 \r\n 2021          156           28.14912      34.63         17.82         0 \r\n 2021          157           23.61312      31.43         19.27         0 \r\n 2021          158           25.79904      33.3          18.54         0 \r\n 2021          159           22.86144      33.33         18.3          0 \r\n 2021          160           26.81856      35.06         17.99         0 \r\n 2021          161           25.39296      36.21         20.14         0 \r\n 2021          162           19.76832      32.72         19.71         0 \r\n 2021          163           29.31552      30.13         14.15         0 \r\n 2021          164           29.3328       34.59         11.63         0 \r\n 2021          165           29.0304       30.37         14.42         0 \r\n 2021          166           29.62656      29.23         11.88         0 \r\n 2021          167           29.10816      30.48         12.72         0 \r\n 2021          168           21.11616      35.21         19.21         4.064 \r\n 2021          169           24.78816      33.28         16.12         0 \r\n 2021          170           29.592        29.16         13.89         0 \r\n 2021          171           13.96224      27            15.67         10.922 \r\n 2021          172           24.84864      19.9          6.269         0 \r\n 2021          173           26.0928       27.01         5.078         0 \r\n 2021          174           25.92         29.7          16.02         0 \r\n 2021          175           18.17856      31.51         20.44         0 \r\n 2021          176           20.92608      30.93         19.38         10.16 \r\n 2021          177           10.10016      25.56         19.19         11.684 \r\n 2021          178           25.64352      27.64         17.31         0 \r\n 2021          179           20.67552      29            18.27         0 \r\n 2021          180           21.88512      29.48         18.71         0 \r\n 2021          181           23.35392      29.55         14.97         0 \r\n 2021          182           25.8768       30.04         14.45         0 \r\n 2021          183           26.55072      27.38         13.1          0 \r\n 2021          184           27.10368      30.3          11.64         0 \r\n 2021          185           26.34336      31.51         17.49         0 \r\n 2021          186           23.4144       33.12         20.09         0 \r\n 2021          187           23.99328      32.26         19.52         16.51 \r\n 2021          188           7.66368       20.84         15.91         2.54 \r\n 2021          189           15.58656      24.13         15.67         0 \r\n 2021          190           12.8304       24.01         16.08         9.652 \r\n 2021          191           7.36128       21.33         15.1          1.27 \r\n 2021          192           27.3456       25.59         13.1          0 \r\n 2021          193           18.88704      26.87         11.72         0 \r\n 2021          194           22.61952      26.83         14.89         0 \r\n 2021          195           6.322752      25.33         18.38         23.368 \r\n 2021          196           23.33664      25.36         14.16         0 \r\n 2021          197           24.01056      27.55         13.81         0 \r\n 2021          198           24.21792      27.97         14.23         0 \r\n 2021          199           22.01472      27.55         13.08         0 \r\n 2021          200           21.33216      28.9          13.51         0 \r\n 2021          201           22.22208      29.58         13.43         0 \r\n 2021          202           19.63872      30.79         17.3          0 \r\n 2021          203           19.68192      30.17         19.6          0 \r\n 2021          204           22.84416      32.06         18            0 \r\n 2021          205           22.26528      31.1          17.84         0 \r\n 2021          206           24.408        31.06         14.25         0 \r\n 2021          207           22.28256      31.98         14.1          0 \r\n 2021          208           22.2048       33.27         14.68         0 \r\n 2021          209           13.66848      32.77         20.14         0 \r\n 2021          210           21.02976      31.13         15.8          0 \r\n 2021          211           6.559488      22.66         16.01         6.096 \r\n 2021          212           21.6432       26.84         15.68         3.302 \r\n 2021          213           23.86368      25.17         11.4          0 \r\n 2021          214           19.04256      26.9          10.85         0 \r\n 2021          215           23.69088      28.76         9.05          0 \r\n 2021          216           23.2848       29.18         10.46         0 \r\n 2021          217           11.5776       25.18         16.49         2.286 \r\n 2021          218           20.952        30.93         15.38         0 \r\n 2021          219           9.40032       30.03         20.59         0 \r\n 2021          220           14.256        27.24         18.29         129.794 \r\n 2021          221           18.94752      29.88         19.11         18.796 \r\n 2021          222           14.63616      31.78         19.86         0 \r\n 2021          223           20.81376      31.1          15.4          0 \r\n 2021          224           21.86784      30.1          13.79         0 \r\n 2021          225           25.056        26.98         10.93         0 \r\n 2021          226           25.28928      27.47         7.39          0 \r\n 2021          227           24.91776      26.01         9.42          0 \r\n 2021          228           23.83776      26.5          9.94          0 \r\n 2021          229           23.55264      29.12         10.33         0 \r\n 2021          230           22.13568      29.78         14.58         0 \r\n 2021          231           20.52         30.45         15.07         0 \r\n 2021          232           20.6928       30.56         16.5          4.318 \r\n 2021          233           23.07744      24.93         11.24         4.826 \r\n 2021          234           23.35392      24.92         9.58          0 \r\n 2021          235           11.88         29.09         17.3          14.986 \r\n 2021          236           12.01824      30.95         17.75         22.352 \r\n 2021          237           15.50016      29.55         17.89         0 \r\n 2021          238           6.007392      24.17         18.11         15.494 \r\n 2021          239           14.40288      29.69         18.25         72.136 \r\n 2021          240           14.86944      29.91         19.79         4.826 \r\n 2021          241           18.12672      26.39         14.88         10.922 \r\n 2021          242           21.66048      28.34         11.96         0 \r\n 2021          243           11.664        24.93         13.71         0 \r\n 2021          244           22.3776       23.91         12.18         0 \r\n 2021          245           12.55392      22.54         11.63         0 \r\n 2021          246           2.987712      18.87         15.78         28.956 \r\n 2021          247           13.51296      24.3          13.27         0 \r\n 2021          248           20.72736      27.33         11.3          0.254 \r\n 2021          249           21.54816      28.02         8.11          0 \r\n 2021          250           17.83296      25.78         12.52         0 \r\n 2021          251           20.088        24.1          9.82          0 \r\n 2021          252           20.32128      25.38         7.178         0 \r\n 2021          253           19.66464      27.18         7.542         0 \r\n 2021          254           16.0272       31.05         12.98         0 \r\n 2021          255           9.18432       22.55         15.28         3.048 \r\n 2021          256           9.65952       24.9          15.28         2.54 \r\n 2021          257           13.77216      22.49         10.63         0 \r\n 2021          258           19.224        26.02         7.45          0 \r\n 2021          259           18.88704      29.08         8.51          0 \r\n 2021          260           12.75264      22.5          7.147         0 \r\n 2021          261           18.49824      27.13         5.886         0 \r\n 2021          262           17.96256      31.48         15.25         0 \r\n 2021          263           9.03744       27.99         13.13         5.334 \r\n 2021          264           17.48736      22.39         6.238         0 \r\n 2021          265           18.8352       20.48         4.694         0 \r\n 2021          266           18.6192       23.87         3.613         0 \r\n 2021          267           12.06144      23.29         6.885         4.064 \r\n 2021          268           16.60608      23.63         3.451         0 \r\n 2021          269           14.87808      30.7          8.59          0 \r\n 2021          270           16.92576      29.78         8.09          0 \r\n 2021          271           17.25408      28.23         11.59         0 \r\n 2021          272           14.59296      30.36         11.94         0 \r\n 2021          273           15.56064      30.14         14.25         0 \r\n 2021          274           11.60352      28.32         11.39         10.668 \r\n 2021          275           7.344         23.63         15.95         0.254 \r\n 2021          276           15.10272      24.63         11.82         0 \r\n 2021          277           11.93184      22.93         8.92          0 \r\n 2021          278           8.57088       22.43         9.78          0 \r\n 2021          279           9.10656       25.01         13.64         0 \r\n 2021          280           2.90736       18.4          16.26         16.764 \r\n 2021          281           10.60992      25.53         16.17         19.558 \r\n 2021          282           11.65536      27.18         13.91         0 \r\n 2021          283           9.47808       23.76         13.84         0 \r\n 2021          284           4.533408      15.7          8.97          3.81 \r\n 2021          285           8.71776       20.25         7.884         0.254 \r\n 2021          286           4.269888      21.13         9.76          13.208 \r\n 2021          287           14.29056      17.96         4.088         0 \r\n 2021          288           12.64032      15.85         2.643         0 \r\n 2021          289           14.16096      16.8          1.207         0 \r\n 2021          290           13.93632      21.49        -0.38          0 \r\n 2021          291           13.53888      24.07         3.239         0 \r\n 2021          292           12.79584      24.45         7.571         0 \r\n 2021          293           5.15376       19.1          6.41          0 \r\n 2021          294           3.84912       9.57          0.094         1.778 \r\n 2021          295           8.17344       10.5         -2.012         0 \r\n 2021          296           12.92544      11.79        -3.682         0 \r\n 2021          297           1.467936      6.936         3.35          25.146 \r\n 2021          298           12.67488      12.08         1.794         0 \r\n 2021          299           11.88         13.73         0.448         0 \r\n 2021          300           3.7368        12.28         7.561         8.382 \r\n 2021          301           1.522368      8.59          6.552         13.462 \r\n 2021          302           3.954528      10.93         3.825         0.254 \r\n 2021          303           11.77632      15.18         0.692         0 \r\n 2021          304           11.33568      9.78         -2.81          0 \r\n 2021          305           10.6704       7.652        -3.236         0 \r\n 2021          306           8.8992        7.38         -5.822         0 \r\n 2021          307           8.43264       6.724        -8.31          0 \r\n 2021          308           8.17344       10.91         0.68          0 \r\n 2021          309           8.30304       13.41        -0.624         0 \r\n 2021          310           10.44576      19.62         1.238         0 \r\n 2021          311           8.39808       19.98         5.2           0 \r\n 2021          312           9.8496        17.81         0.924         0 \r\n 2021          313           8.30304       14.98        -0.057         0 \r\n 2021          314           3.286656      10.44        -0.401         38.1 \r\n 2021          315           5.967648      10.85         0.327         11.176 \r\n 2021          316           3.847392      2.45         -0.948         2.032 \r\n 2021          317           2.808         1.238        -1.14          0 \r\n 2021          318           3.468096      2.278        -3.116         0.254 \r\n 2021          319           7.72416       4.694        -2.982         0 \r\n 2021          320           5.985792      10.55        -2.832         0 \r\n 2021          321           5.642784      7.38         -3.327         0 \r\n 2021          322           3.983904      0.126        -9.61          0 \r\n 2021          323           5.700672      3.088        -10.03         0 \r\n 2021          324           5.355072      9.65          0.044         0 \r\n 2021          325           8.7264        6.602        -6.368         0 \r\n 2021          326           8.64864       1.277        -11.35         0 \r\n 2021          327           7.91424       11.19        -5.71          0 \r\n 2021          328           4.928256      13.17        -2             0 \r\n 2021          329           7.53408      -2            -12.98         0 \r\n 2021          330           5.628096      1.369        -11.66         0 \r\n 2021          331           7.61184       11.35        -3.925         0 \r\n 2021          332           7.11936       4.17         -5.78          0 \r\n 2021          333           7.128         15.21        -2.345         0 \r\n 2021          334           8.10432       10.2         -3.368         0 \r\n 2021          335           5.885568      11.39         1.722         1.016 \r\n 2021          336           6.97248       10.89         2.703         0 \r\n 2021          337           6.98112       10.93        -3.824         0 \r\n 2021          338           3.582144      2.814        -4.534         0 \r\n 2021          339           2.085696      3.623        -2.528         0 \r\n 2021          340           7.9056       -1.98         -17.15         0 \r\n 2021          341           2.69136      -2.264        -16.58         0 \r\n 2021          342           5.908032     -3.358        -13.92         0 \r\n 2021          343           5.178816      7.542        -3.56          0.762 \r\n 2021          344           1.484352      0.67         -3.298         2.794 \r\n 2021          345           9.18432      -1.677        -7.546         3.302 \r\n 2021          346           7.344         6.269        -5.67          3.048 \r\n 2021          347           7.19712       7.864        -4.048         0 \r\n 2021          348           4.018464      6.088        -1.554         0 \r\n 2021          349           4.631904      20.75         2.006         11.43 \r\n 2021          350           6.439392      2.006        -8.21          0 \r\n 2021          351           4.688928     -1.798        -10.28         0 \r\n 2021          352           5.638464     -3.338        -9.03          0 \r\n 2021          353           3.297024     -1.96         -8.04          0 \r\n 2021          354           6.055776      0.792        -13.06         0 \r\n 2021          355           4.675104      0.59         -14            0 \r\n 2021          356           5.492448     -0.897        -14.03         0 \r\n 2021          357           4.628448      4.432        -4.685         0 \r\n 2021          358           2.513376      9.21         -1.738         0 \r\n 2021          359           6.873984      5.028        -7.11          0 \r\n 2021          360           3.718656      2.188        -8.73          1.27 \r\n 2021          361           6.824736      0.813        -7.78          0 \r\n 2021          362           1.863648     -1.353        -15.37         5.588 \r\n 2021          363           5.677344     -10.99        -21.2          0 \r\n 2021          364           3.746304     -3.642        -11.08         0 \r\n 2021          365           3.056832     -2.507        -13.31         0 \r\n 2022          1             3.672864     -13.25        -22.4          0 \r\n 2022          2             7.992        -16.33        -25.99         0 \r\n 2022          3             7.82784      -5.344        -20.36         0 \r\n 2022          4             4.883328     -0.088        -10.03         1.27 \r\n 2022          5             6.167232     -10.03        -19.17         0 \r\n 2022          6             7.75872      -19.07        -24.4          0 \r\n 2022          7             7.48224      -13.61        -25.67         0 \r\n 2022          8             3.348        -2.609        -13.69         0 \r\n 2022          9             8.36352      -10.28        -18.4          0 \r\n 2022          10            8.18208      -12.61        -18.89         0 \r\n 2022          11            7.83648       4.754        -18.58         0 \r\n 2022          12            6.53184       5.462        -2.81          0 \r\n 2022          13            7.71552       5.604        -5             0 \r\n 2022          14            3.198528     -0.573        -10.16         12.446 \r\n 2022          15            9.09792      -10.14        -21.17         0 \r\n 2022          16            5.861376     -2.771        -20.7          0 \r\n 2022          17            7.00704      -2.122        -9.1           0 \r\n 2022          18            6.542208      2.45         -11.27         0.254 \r\n 2022          19            9.44352      -11.29        -21.38         0 \r\n 2022          20            9.61632      -19.01        -27.52         0 \r\n 2022          21            9.17568      -9.71         -30.04         0 \r\n 2022          22            8.83872      -4.544        -11.94         0 \r\n 2022          23            9.6768       -11.22        -20.68         0 \r\n 2022          24            8.21664      -4.584        -21.7          0 \r\n 2022          25            10.22112     -18.46        -28.38         0 \r\n 2022          26            10.1088      -6.755        -31.11         0 \r\n 2022          27            7.35264      -0.24         -15.5          0.762 \r\n 2022          28            10.48896     -13.83        -25.26         0 \r\n 2022          29            9.78048      -4.128        -16.87         0 \r\n 2022          30            7.79328      -6.572        -14.76         0 \r\n 2022          31            9.32256       1.014        -14.81         0 \r\n 2022          32            9.44352       1.096        -14.98         0 \r\n 2022          33            8.77824      -14.08        -17.75         0 \r\n 2022          34            11.34432     -15.28        -24.05         0 \r\n 2022          35            10.14336     -12.53        -25.62         0 \r\n 2022          36            10.2384      -4.25         -24.74         0 \r\n 2022          37            9.18432      -0.886        -16.8          0 \r\n 2022          38            10.35936     -6.928        -22.31         0 \r\n 2022          39            8.8128        2.35         -10.99         0 \r\n 2022          40            8.19936       1.773        -6.319         0 \r\n 2022          41            9.03744       2.37         -11.11         0.254 \r\n 2022          42            9.44352       2.774        -14.61         0.254 \r\n 2022          43            11.86272     -13.52        -20.68         0 \r\n 2022          44            13.0896      -12.8         -18.07         0 \r\n 2022          45            13.0032      -5.73         -13.82         0 \r\n 2022          46            11.07648      4.108        -11.92         0 \r\n 2022          47            8.31168       4.068        -6.511         0 \r\n 2022          48            7.92288      -6.47         -17.4          0 \r\n 2022          49            10.01376      4.008        -15.48         0 \r\n 2022          50            13.81536     -4.908        -17.07         0 \r\n 2022          51            13.41792      9.62         -6.521         0 \r\n 2022          52            4.828896      1.217        -5.72          0 \r\n 2022          53            7.48224      -5.497        -16            0 \r\n 2022          54            13.72896     -12.06        -19.66         0 \r\n 2022          55            7.11936      -6.622        -15.17         0 \r\n 2022          56            14.86944     -8.39         -19.83         0.254 \r\n 2022          57            15.40512     -0.138        -18.72         0 \r\n 2022          58            15.19776      3.036        -11.84         0 \r\n 2022          59            12.98592      9.77         -6.521         0 \r\n 2022          60            11.90592      8.65         -0.472         0 \r\n 2022          61            12.64896      9.98         -2.568         0 \r\n 2022          62            4.301856     -1.726        -3.804         0 \r\n 2022          63            10.42848      4.826        -3.682         0.762 \r\n 2022          64            5.08464       11.59        -0.118         18.034 \r\n 2022          65            8.93376       0.044        -3.236         0 \r\n 2022          66            13.50432     -0.36         -6.988         0.254 \r\n 2022          67            16.9776       3.159        -8.17          0 \r\n 2022          68            9.38304      -2.122        -9.92          0 \r\n 2022          69            10.33344     -4.918        -12.09         0 \r\n 2022          70            17.65152     -6.957        -14.55         0 \r\n 2022          71            18.04032     -2.73         -17.34         0 \r\n 2022          72            17.65152      13.75        -8.84          0 \r\n 2022          73            13.57344      13.12        -0.907         0 \r\n 2022          74            16.70976      12.65        -3.278         0 \r\n 2022          75            17.80704      20.02        -0.452         0 \r\n 2022          76            7.65504       8.15          2.814         0 \r\n 2022          77            3.353184      4.228         0.692         16.764 \r\n 2022          78            19.17216      11.91        -1.859         0 \r\n 2022          79            17.7552       17.84        -2.366         0 \r\n 2022          80            13.96224      22.18         8.15          0 \r\n 2022          81            1.581984      8.95          5.138         18.542 \r\n 2022          82            4.644         5.159         0.276         4.318 \r\n 2022          83            5.463936      3.078        -0.584         0 \r\n 2022          84            11.19744      5.38         -2.142         0 \r\n 2022          85            19.99296      0.67         -6.826         0 \r\n 2022          86            20.5632       0.165        -8.63          0 \r\n 2022          87            16.96896      4.472        -8.81          0 \r\n 2022          88            5.5512        2.906        -0.34          1.524 \r\n 2022          89            3.173472      6.269         0.064         0 \r\n 2022          90            5.255712      0.165        -1.372         0.508 \r\n 2022          91            19.88928      8.09         -6.562         0 \r\n 2022          92            15.02496      10.57        -0.442         16.51 \r\n 2022          93            8.70912       6.128        -4.646         0.508 \r\n 2022          94            14.92128      9.02         -1.09          0 \r\n 2022          95            5.87088       9.2          -0.584         0 \r\n 2022          96            7.96608       5.744         0.631         0.508 \r\n 2022          97            8.60544       4.856        -0.988         1.524 \r\n 2022          98            9.56448       6.452        -1.656         0 \r\n 2022          99            23.14656      13.3         -4.27          0 \r\n 2022          100           17.89344      20.26         0.823         0 \r\n 2022          101           22.93056      17.15         1.318         0 \r\n 2022          102           7.30944       19.92         0.53          16.51 \r\n 2022          103           5.600448      13.41        -1.372         4.572 \r\n 2022          104           17.86752      5.219        -3.824         0 \r\n 2022          105           14.24736      4.775        -4.716         0 \r\n 2022          106           21.52224      5.32         -5.224         0 \r\n 2022          107           12.51072      6.652        -7.636         0 \r\n 2022          108           9.73728       3.734        -3.418         0 \r\n 2022          109           15.27552      7.016        -5.932         0 \r\n 2022          110           2.538432      8.71          4.846         7.366 \r\n 2022          111           24.33888      16.76         2.39          0 \r\n 2022          112           2.801952      14.49         7.672         15.494 \r\n 2022          113           7.29216       23.55         13.12         1.524 \r\n 2022          114           17.47872      13.14         4.937         0 \r\n 2022          115           8.70912       4.916        -1.312         0 \r\n 2022          116           21.06432      9.24         -3.622         0 \r\n 2022          117           18.78336      11.09        -0.32          1.524 \r\n 2022          118           8.4672        10.18         0.165         36.83 \r\n 2022          119           6.124032      13.38         6.804         1.27 \r\n 2022          120           7.56          17.52         7.299         5.334 \r\n 2022          121           5.294592      8.59          5.462         0.254 \r\n 2022          122           9.62496       8.68          4.149         3.556 \r\n 2022          123           11.12832      11.57         1.783         12.7 \r\n 2022          124           21.85056      15.88        -0.057         0 \r\n 2022          125           5.90544       14.88         5.824         0.508 \r\n 2022          126           23.13792      19.32         6.724         0 \r\n 2022          127           25.3584       22.39         4.452         0 \r\n 2022          128           2.21616       14.87         9.56          16.256 \r\n 2022          129           21.17664      31.62         13.53         11.43 \r\n 2022          130           14.23008      26.09         14.67         0 \r\n 2022          131           22.60224      33.83         17.23         0 \r\n 2022          132           26.01504      34.57         20.29         0 \r\n 2022          133           21.66048      27.55         13.44         0 \r\n 2022          134           21.89376      31.66         10.85         1.27 \r\n 2022          135           21.6          24.68         8.99          0 \r\n 2022          136           26.36928      26.42         9.14          0 \r\n 2022          137           6.8256        15.74         10.34         1.016 \r\n 2022          138           19.67328      25.38         11.82         0.254 \r\n 2022          139           18.45504      31.62         13.06         6.35 \r\n 2022          140           11.4912       22.58         9.68          2.032 \r\n 2022          141           17.80704      15.61         5.028         0 \r\n 2022          142           21.59136      16.18         4.633         0 \r\n 2022          143           23.5008       17.02         1.42          0 \r\n 2022          144           13.63392      18.78         7.026         14.986 \r\n 2022          145           4.7952        12.62         8.2           31.75 \r\n 2022          146           8.35488       13.2          10.26         0 \r\n 2022          147           28.26144      24.95         6.895         0 \r\n 2022          148           22.248        28.98         11.54         0 \r\n 2022          149           17.2368       29.38         17.89         0 \r\n 2022          150           24.57216      32.81         19.03         0.762 \r\n 2022          151           22.5936       26.8          13.75         0.762 \r\n 2022          152           24.39072      22.78         9.7           0 \r\n 2022          153           27.15552      27.3          5.643         0 \r\n 2022          154           29.85984      24.91         9.43          0 \r\n 2022          155           7.83648       16.73         11.19         10.414 \r\n 2022          156           14.5584       22.7          12.8          14.478 \r\n 2022          157           14.7744       20.84         15.21         0.762 \r\n 2022          158           21.59136      24.88         12.08         8.128 \r\n 2022          159           19.73376      23.8          13.56         7.874 \r\n 2022          160           28.1232       26.71         11.03         0 \r\n 2022          161           17.27136      24.11         15.99         1.016 \r\n 2022          162           9.6768        23.99         14.81         2.54 \r\n 2022          163           20.61504      29.1          17.17         0 \r\n 2022          164           6.336576      26.6          19.22         8.128 \r\n 2022          165           27.06912      35.8          19.77         2.286 \r\n 2022          166           8.6832        24.03         15.79         5.842 \r\n 2022          167           28.3392       31.5          15.42         0 \r\n 2022          168           28.57248      28.7          14.88         0 \r\n 2022          169           29.01312      28.5          14.23         0 \r\n 2022          170           27.57888      32.93         16.76         0 \r\n 2022          171           28.23552      34.91         19.69         0 \r\n 2022          172           26.18784      34.24         20.45         0 \r\n 2022          173           29.62656      30.5          16.28         0 \r\n 2022          174           29.22912      33.02         16.01         0 \r\n 2022          175           25.55712      30.17         18.42         0 \r\n 2022          176           12.528        27.8          18.1          66.802 \r\n 2022          177           29.34144      22.93         12.9          0 \r\n 2022          178           28.37376      27.34         10.34         0 \r\n 2022          179           26.42976      28.93         12.92         0 \r\n 2022          180           28.19232      31.83         13.74         0 \r\n 2022          181           19.08576      30.89         20.57         0 \r\n 2022          182           21.30624      26.97         14.35         0 \r\n 2022          183           22.61088      29.24         12.05         0 \r\n 2022          184           27.72576      29.89         13.51         0 \r\n 2022          185           11.35296      31.88         18.29         18.288 \r\n 2022          186           22.36896      33.55         20.1          20.828 \r\n 2022          187           19.12032      28.39         18.07         0 \r\n 2022          188           19.1808       28.3          19.5          0 \r\n 2022          189           17.38368      27.07         18.65         4.064 \r\n 2022          190           27.33696      27.34         15.69         0 \r\n 2022          191           22.80096      29.14         16.34         0 \r\n 2022          192           17.93664      28.03         16.72         4.826 \r\n"
  },
  {
    "path": "scripts/yieldfx/baseline/sutherland.met",
    "content": "[weather.met.weather]\r\nlatitude = 42.9 (DECIMAL DEGREES)\r\ntav = 8.157887 (oC) ! annual average ambient temperature\r\namp = 30.6694 (oC) ! annual amplitude in mean monthly temperature\r\nyear          day           radn          maxt          mint          rain\r\n()            ()            (MJ/m^2)      (oC)          (oC)          (mm)\r\n 1980          1             3.6          -1.1          -7.8           0 \r\n 1980          2             3.703        -1.7          -11.7          0 \r\n 1980          3             4.32         -6.1          -11.7          0 \r\n 1980          4             4.011        -2.2          -7.2           0 \r\n 1980          5             3.703        -1.7          -6.7           0 \r\n 1980          6             6.068        -2.2          -12.2          0 \r\n 1980          7             7.693        -12.2         -20.6          0 \r\n 1980          8             6.549        -12.8         -21.7          0 \r\n 1980          9             6.653        -16.7         -25.6          0 \r\n 1980          10            8.836         3.9          -17.8          0 \r\n 1980          11            8.94          6.1          -17.8          0 \r\n 1980          12            8.72          1.7          -18.3          0 \r\n 1980          13            8.405         12.2         -1.1           0 \r\n 1980          14            8.72          11.7         -7.2           0 \r\n 1980          15            7.326         9.4          -0.6           0 \r\n 1980          16            4.565         6.1          -5.6           8.89 \r\n 1980          17            4.247        -2.2          -7.2           0 \r\n 1980          18            6.052         1.1          -10.6          0 \r\n 1980          19            6.436        -0.6          -7.8           0 \r\n 1980          20            7.938         1.7          -10.6          0 \r\n 1980          21            8.367         1.7          -10.6          0 \r\n 1980          22            6.394         1.7          -7.2           0 \r\n 1980          23            7.153        -3.3          -11.7          0 \r\n 1980          24            9.538         7.2          -6.1           0 \r\n 1980          25            9.963         5            -11.1          0.76 \r\n 1980          26            8.868        -11.1         -20.6          0 \r\n 1980          27            7.335        -12.8         -20.6          0 \r\n 1980          28            6.304        -12.2         -17.8          0 \r\n 1980          29            9.29         -12.2         -23.3          0 \r\n 1980          30            5.419        -12.2         -16.7          4.57 \r\n 1980          31            10.723       -11.7         -26.1          0 \r\n 1980          32            10.399       -8.9          -22.8          0 \r\n 1980          33            7.609        -7.8          -13.3          0 \r\n 1980          34            7.609        -6.7          -14.4          0 \r\n 1980          35            7.359        -0.6          -11.7          3.05 \r\n 1980          36            4.653        -2.2          -8.3           3.3 \r\n 1980          37            5.086        -3.9          -9.4           0.25 \r\n 1980          38            8.632        -6.1          -13.9          0 \r\n 1980          39            8.741        -5            -14.4          0 \r\n 1980          40            8.715        -6.1          -16.1          0 \r\n 1980          41            9.708        -3.3          -13.3          0 \r\n 1980          42            10.691       -3.9          -16.7          0 \r\n 1980          43            12.585       -2.2          -19.4          0 \r\n 1980          44            11.916       -1.7          -10            0 \r\n 1980          45            10.567       -4.4          -13.9          0 \r\n 1980          46            8.094        -5.6          -12.2          0 \r\n 1980          47            11.006       -9.4          -20.6          0 \r\n 1980          48            13.276       -2.8          -20            0 \r\n 1980          49            13.055        0.6          -11.1          0 \r\n 1980          50            5.955         1.7          -1.1           0 \r\n 1980          51            3.698         1.7           0             0 \r\n 1980          52            2.311         1.1          -1.1           3.56 \r\n 1980          53            2.449         2.2           0             0 \r\n 1980          54            10.496        1.1          -7.2           0 \r\n 1980          55            10.943        2.2          -8.3           0 \r\n 1980          56            11.885       -1.1          -18.3          7.37 \r\n 1980          57            16.265        4.4          -17.8          0 \r\n 1980          58            15.315        3.3          -8.9           0 \r\n 1980          59            9.342        -3.9          -11.7          0 \r\n 1980          60            11.737       -8.3          -18.3          0 \r\n 1980          61            12.013       -5.6          -20            0 \r\n 1980          62            13.297       -1.1          -15.6          0 \r\n 1980          63            14.702        7.2          -7.2           0 \r\n 1980          64            14.83         3.3          -11.7          3.3 \r\n 1980          65            15.375       -6.7          -18.3          0 \r\n 1980          66            10.118       -2.8          -12.8          0 \r\n 1980          67            13.418        0.6          -9.4           0 \r\n 1980          68            12.756        5.6          -8.3           0 \r\n 1980          69            14.531        8.9          -3.9           0 \r\n 1980          70            15.437        8.3          -10            0 \r\n 1980          71            15.996       -2.2          -11.7          0 \r\n 1980          72            13.536       -1.7          -4.4           2.54 \r\n 1980          73            8.46          1.1          -10.6          1.27 \r\n 1980          74            8.19          10           -6.1           0 \r\n 1980          75            17.175        15            0             0 \r\n 1980          76            17.547        13.3         -1.1           0 \r\n 1980          77            16.514        5            -6.7           0 \r\n 1980          78            15.147        14.4         -1.7           0 \r\n 1980          79            17.228        16.7          2.2           0 \r\n 1980          80            17.951        15           -1.1           0 \r\n 1980          81            17.718        5.6          -6.1           0 \r\n 1980          82            16.451        5            -3.3           0 \r\n 1980          83            13.147        1.1          -3.9           0 \r\n 1980          84            9.949         2.8          -3.9           0 \r\n 1980          85            10.148        4.4          -5.6           0 \r\n 1980          86            12.893        4.4          -1.7           4.83 \r\n 1980          87            11.311        6.7          -0.6           1.27 \r\n 1980          88            7.58          5.6          -0.6           0 \r\n 1980          89            8.852         2.2          -1.1           7.62 \r\n 1980          90            5.457         7.8          -0.6           0 \r\n 1980          91            11.487        12.8         -1.1           0 \r\n 1980          92            15.554        11.7          0.6           0 \r\n 1980          93            17.692        11.1         -1.1           0 \r\n 1980          94            12.958        9.4          -0.6           26.67 \r\n 1980          95            11.55         9.4          -3.9           0 \r\n 1980          96            11.676        16.1          0.6           0 \r\n 1980          97            19.101        22.2          6.7           0 \r\n 1980          98            19.227        21.7          4.4           0 \r\n 1980          99            18.734        8.9           2.2           1.27 \r\n 1980          100           12.617        10.6          1.1           0.51 \r\n 1980          101           13.739        11.7         -5.6           0 \r\n 1980          102           20.03         11.7          1.1           0 \r\n 1980          103           17.85         10           -3.3           0 \r\n 1980          104           19.273        8.3          -4.4           0 \r\n 1980          105           18.633        10           -5.6           0 \r\n 1980          106           19.154        15.6         -1.1           0 \r\n 1980          107           20.344        19.4          5             1.52 \r\n 1980          108           20.213        21.1          6.1           1.27 \r\n 1980          109           20.888        22.8          5             0 \r\n 1980          110           21.416        26.1          7.2           0 \r\n 1980          111           21.438        32.2          10.6          0 \r\n 1980          112           22.636        33.9          12.8          0 \r\n 1980          113           22.127        33.3          15.6          0 \r\n 1980          114           21.054        26.1          10            0 \r\n 1980          115           22.554        14.4          1.7           0 \r\n 1980          116           20.393        14.4          1.1           0 \r\n 1980          117           19.449        12.8          3.3           0 \r\n 1980          118           17.001        21.1          3.9           0 \r\n 1980          119           19.174        21.7          7.2           0 \r\n 1980          120           21.639        22.2          5.6           0 \r\n 1980          121           22.187        23.3          7.8           0 \r\n 1980          122           19.834        26.7          8.9           0 \r\n 1980          123           22.912        27.8          9.4           0 \r\n 1980          124           24.284        28.9          12.2          0 \r\n 1980          125           23.526        29.4          12.2          0 \r\n 1980          126           23.839        29.4          10            0 \r\n 1980          127           23.839        22.2          6.7           0 \r\n 1980          128           23.686        18.3         -0.6           0 \r\n 1980          129           23.386        16.1         -3.3           0 \r\n 1980          130           23.232        22.2          4.4           0 \r\n 1980          131           24.163        25.6          8.9           5.59 \r\n 1980          132           16.264        17.2          3.3           0 \r\n 1980          133           21.831        20.6          6.1           0 \r\n 1980          134           20.895        16.1          5             7.62 \r\n 1980          135           13.566        17.2          6.1           1.02 \r\n 1980          136           18.366        21.7          3.9           0 \r\n 1980          137           21.977        21.1          8.9           2.29 \r\n 1980          138           17.738        11.1          7.8           19.81 \r\n 1980          139           5.688         15            8.9           1.02 \r\n 1980          140           10.587        21.7          6.1           0 \r\n 1980          141           20.226        23.3          9.4           0 \r\n 1980          142           21.631        27.2          11.7          0 \r\n 1980          143           23.858        28.9          13.9          0 \r\n 1980          144           23.699        28.3          13.3          0 \r\n 1980          145           23.533        27.8          13.9          0 \r\n 1980          146           22.253        31.1          14.4          0 \r\n 1980          147           23.373        31.7          18.9          0 \r\n 1980          148           20.011        31.1          16.7          4.06 \r\n 1980          149           15.791        30.6          17.2          0 \r\n 1980          150           20.464        31.1          17.2          1.52 \r\n 1980          151           19.819        18.9          13.3          53.34 \r\n 1980          152           15.731        22.2          11.7          0 \r\n 1980          153           17.41         23.9          12.8          6.6 \r\n 1980          154           18.521        23.9          13.9          0 \r\n 1980          155           18.193        27.2          11.7          0 \r\n 1980          156           16.554        27.8          17.8          41.4 \r\n 1980          157           15.175        30.6          15.6          0 \r\n 1980          158           15.835        31.1          17.2          0 \r\n 1980          159           22.763        30            14.4          3.05 \r\n 1980          160           16            23.3          5.6           0 \r\n 1980          161           25.072        30            9.4           0 \r\n 1980          162           25.567        26.7          12.8          0 \r\n 1980          163           24.412        30.6          12.8          0 \r\n 1980          164           26.062        30            18.3          0 \r\n 1980          165           22.41         29.4          18.3          0 \r\n 1980          166           21.082        29.4          17.2          0 \r\n 1980          167           21.58         28.3          14.4          9.14 \r\n 1980          168           15.936        25            11.1          1.02 \r\n 1980          169           20.75         25.6          13.9          0 \r\n 1980          170           20.916        31.1          15            0 \r\n 1980          171           23.24         31.7          11.1          0 \r\n 1980          172           25.896        25            11.1          0 \r\n 1980          173           25.066        30.6          13.3          0 \r\n 1980          174           24.402        28.9          17.8          0 \r\n 1980          175           20.252        31.1          15            0 \r\n 1980          176           20.584        31.7          17.8          0 \r\n 1980          177           22.078        34.4          15.6          0 \r\n 1980          178           23.738        37.2          23.3          0 \r\n 1980          179           21.58         36.7          21.1          3.81 \r\n 1980          180           22.41         34.4          13.3          0 \r\n 1980          181           27.224        28.9          11.1          0 \r\n 1980          182           25.564        30.6          12.8          0 \r\n 1980          183           26.331        30.6          19.4          0 \r\n 1980          184           21.997        28.3          13.3          0 \r\n 1980          185           25.931        28.3          13.9          0 \r\n 1980          186           25.037        31.1          16.7          27.18 \r\n 1980          187           16.632        32.2          18.9          0 \r\n 1980          188           17.884        34.4          19.4          0 \r\n 1980          189           16.811        36.1          22.2          0 \r\n 1980          190           22.568        35.6          17.2          0 \r\n 1980          191           25.589        33.3          18.9          0 \r\n 1980          192           21.502        34.4          21.7          0 \r\n 1980          193           21.146        36.7          23.9          0 \r\n 1980          194           21.324        36.1          18.3          0 \r\n 1980          195           26.661        37.2          16.1          0 \r\n 1980          196           25.778        37.2          23.3          1.27 \r\n 1980          197           15.714        35            21.1          0.76 \r\n 1980          198           16.773        33.3          16.1          0 \r\n 1980          199           24.734        35            19.4          0 \r\n 1980          200           24.033        32.2          20.6          3.05 \r\n 1980          201           20.524        31.7          18.9          0 \r\n 1980          202           22.482        31.7          18.3          24.38 \r\n 1980          203           14.117        31.7          15            0 \r\n 1980          204           16.034        25.6          10.6          0 \r\n 1980          205           24.051        27.8          13.9          0 \r\n 1980          206           24.24         33.3          16.1          0 \r\n 1980          207           24.067        32.8          16.7          1.02 \r\n 1980          208           16.449        26.1          12.8          0 \r\n 1980          209           21.845        29.4          13.3          0 \r\n 1980          210           24.597        31.7          17.8          0 \r\n 1980          211           22.554        31.7          16.7          0 \r\n 1980          212           23.921        31.7          21.7          0 \r\n 1980          213           19.991        31.7          12.2          0 \r\n 1980          214           26.572        32.8          15.6          0.76 \r\n 1980          215           23.931        32.2          16.7          0 \r\n 1980          216           21.385        29.4          16.1          0 \r\n 1980          217           21.073        28.3          14.4          26.67 \r\n 1980          218           16.184        29.4          12.8          0 \r\n 1980          219           16.912        32.2          19.4          0 \r\n 1980          220           20.261        35            23.3          0 \r\n 1980          221           17.961        34.4          20.6          0 \r\n 1980          222           17.13         28.3          16.1          10.67 \r\n 1980          223           12.972        25            17.8          50.8 \r\n 1980          224           10.406        24.4          15            2.29 \r\n 1980          225           11.727        26.1          13.3          0 \r\n 1980          226           20.832        25.6          16.1          32.26 \r\n 1980          227           13.286        25.6          16.1          0 \r\n 1980          228           16.289        25            13.9          0 \r\n 1980          229           17.918        24.4          12.2          27.43 \r\n 1980          230           13.587        24.4          15.6          4.32 \r\n 1980          231           10.352        30.6          15.6          0 \r\n 1980          232           20.237        32.2          17.2          0 \r\n 1980          233           15.74         32.2          20            16.76 \r\n 1980          234           12.849        27.8          13.3          0 \r\n 1980          235           19.934        28.9          15.6          0 \r\n 1980          236           20.732        29.4          16.7          0 \r\n 1980          237           18.367        32.2          17.8          0 \r\n 1980          238           18.05         32.8          18.9          0 \r\n 1980          239           17.606        32.2          14.4          40.89 \r\n 1980          240           15.562        21.1          12.8          0 \r\n 1980          241           13.577        27.2          13.9          0 \r\n 1980          242           16.074        30.6          18.3          0 \r\n 1980          243           17.506        29.4          16.7          0 \r\n 1980          244           16.576        22.8          13.3          2.54 \r\n 1980          245           11.226        24.4          15.6          2.54 \r\n 1980          246           11.645        25.6          10            0 \r\n 1980          247           20.154        30.6          16.7          0 \r\n 1980          248           18.376        29.4          10.6          24.38 \r\n 1980          249           15.738        30            10            0 \r\n 1980          250           20.445        30            17.8          0 \r\n 1980          251           19.269        33.9          17.2          0 \r\n 1980          252           17.385        33.3          20            0 \r\n 1980          253           16.226        33.3          11.1          0 \r\n 1980          254           19.696        24.4          10            0 \r\n 1980          255           19.553        26.1          14.4          0 \r\n 1980          256           17.405        29.4          16.7          0 \r\n 1980          257           15.693        27.2          14.4          0 \r\n 1980          258           15.43         26.7          12.8          0 \r\n 1980          259           10.334        27.8          11.7          0 \r\n 1980          260           14.888        27.8          10            0 \r\n 1980          261           17.275        20            3.3           0 \r\n 1980          262           17.697        20            9.4           0 \r\n 1980          263           15.746        30            10            5.08 \r\n 1980          264           16.312        28.9          15            53.34 \r\n 1980          265           11.75         25.6          8.9           0 \r\n 1980          266           12.068        24.4          10            0 \r\n 1980          267           11.382        20            4.4           0 \r\n 1980          268           16.459        22.8          7.8           0 \r\n 1980          269           16.051        21.7          5.6           0 \r\n 1980          270           14.841        21.1          2.8           0 \r\n 1980          271           16.326        23.3          7.8           0 \r\n 1980          272           15.79         25            11.7          0 \r\n 1980          273           14.318        24.4          14.4          0 \r\n 1980          274           11.28         27.8          9.4           0 \r\n 1980          275           13.536        27.8          13.9          0 \r\n 1980          276           12.502        20.6          8.3           0 \r\n 1980          277           11.581        10           -2.2           0 \r\n 1980          278           12.528        16.1         -1.1           0 \r\n 1980          279           13.198        21.7          3.3           0 \r\n 1980          280           14.88         23.9          6.7           0 \r\n 1980          281           14.368        29.4          10            0 \r\n 1980          282           14.368        29.4          7.8           0 \r\n 1980          283           13.736        28.3          10.6          0 \r\n 1980          284           13.481        27.8          6.7           0 \r\n 1980          285           13.112        18.3          3.9           0 \r\n 1980          286           11.347        18.3         -5.6           0 \r\n 1980          287           13.372        17.8          8.3           0 \r\n 1980          288           11.622        17.2          3.9           0 \r\n 1980          289           10.652        12.8          7.8           0 \r\n 1980          290           7.06          20            8.9           21.08 \r\n 1980          291           6.506         19.4          3.9           0 \r\n 1980          292           8.348         8.3           3.9           0 \r\n 1980          293           4.744         15.6         -2.8           0 \r\n 1980          294           10.34         18.9          2.2           0 \r\n 1980          295           10.849        18.3          1.1           0 \r\n 1980          296           10.728        18.3          7.8           0 \r\n 1980          297           9.041         17.8          5             8.64 \r\n 1980          298           6.808         7.8          -2.2           0 \r\n 1980          299           5.494         7.2          -1.7           0 \r\n 1980          300           6.272         4.4          -5             0 \r\n 1980          301           7.692         2.8          -1.7           1.02 \r\n 1980          302           4.572         4.4          -7.8           0 \r\n 1980          303           7.737         7.8          -5.6           0 \r\n 1980          304           8.825         15           -2.2           0 \r\n 1980          305           9.638         15            1.1           0 \r\n 1980          306           9.661         12.2          0.6           0 \r\n 1980          307           9.201         18.3          2.2           0 \r\n 1980          308           9.431         17.2          8.9           0 \r\n 1980          309           7.974         13.3          0             0 \r\n 1980          310           7.974         15           -0.6           0 \r\n 1980          311           9.363         21.1          3.9           0 \r\n 1980          312           9.475         19.4          4.4           0 \r\n 1980          313           9.159         20.6          7.2           0 \r\n 1980          314           8.824         19.4          3.3           0 \r\n 1980          315           8.266         13.9         -3.9           0 \r\n 1980          316           8.294         8.9          -1.1           0 \r\n 1980          317           5.308         13.9          3.9           0 \r\n 1980          318           5.53          13.3          0             0.51 \r\n 1980          319           7.445         0.6          -4.4           0 \r\n 1980          320           4.051         4.4          -3.9           0 \r\n 1980          321           4.01          6.1          -8.3           0 \r\n 1980          322           7.695         5.6          -6.7           0 \r\n 1980          323           6.72          6.7          -11.1          0 \r\n 1980          324           7.831         10.6         -4.4           0 \r\n 1980          325           7.938         6.7           2.8           0 \r\n 1980          326           6.651         11.7         -6.1           0 \r\n 1980          327           8.046         13.3          6.1           0 \r\n 1980          328           6.901         11.1         -2.2           0 \r\n 1980          329           6.37          2.8          -7.2           0 \r\n 1980          330           6.264         5            -11.1          0 \r\n 1980          331           7.144         7.2          -5.6           0 \r\n 1980          332           6.829         4.4          -7.8           0 \r\n 1980          333           6.304         10           -8.9           0 \r\n 1980          334           7.144         10           -1.7           0 \r\n 1980          335           5.925         13.3          1.1           0 \r\n 1980          336           5.614         13.3         -15            0.76 \r\n 1980          337           7.485        -14.4         -21.1          0.76 \r\n 1980          338           4.47         -2.8          -18.9          0 \r\n 1980          339           6.965         2.2          -6.1           0 \r\n 1980          340           5.554         4.4           0.6           0 \r\n 1980          341           4.423         1.7          -3.3           0.51 \r\n 1980          342           3.291         0            -7.8           0.76 \r\n 1980          343           3.086         1.7          -12.8          0.25 \r\n 1980          344           5.348        -1.7          -11.1          0 \r\n 1980          345           5.76         -5            -15.6          0 \r\n 1980          346           6.308        -3.3          -12.8          0 \r\n 1980          347           4.782         7.2          -4.4           0 \r\n 1980          348           6.308         3.3          -13.3          0 \r\n 1980          349           7.631         1.7          -5.6           0 \r\n 1980          350           5.494         3.3          -3.3           0 \r\n 1980          351           5.799         2.2          -7.2           0 \r\n 1980          352           4.985         11.1         -3.3           0 \r\n 1980          353           5.698         6.1          -6.7           0 \r\n 1980          354           6.817        -6.7          -19.4          0 \r\n 1980          355           6.817        -12.8         -21.7          0 \r\n 1980          356           5.189        -4.4          -14.4          0 \r\n 1980          357           5.494         0            -7.2           0 \r\n 1980          358           4.985         0            -7.8           0.25 \r\n 1980          359           5.087        -7.2          -22.2          0 \r\n 1980          360           5.392        -10           -23.9          0 \r\n 1980          361           6.715        -1.7          -11.7          0 \r\n 1980          362           5.291        -0.6          -7.2           0 \r\n 1980          363           4.273         4.4          -5.6           0 \r\n 1980          364           5.596         4.4          -6.7           0 \r\n 1980          365           6.003         7.8          -4.4           0 \r\n 1980          366           6.48          6.1          -2.2           0 \r\n 1981          1             3.6           1.7          -3.3           0 \r\n 1981          2             7.2           6.1          -11.7          0 \r\n 1981          3             7.92          3.3          -18.9          0 \r\n 1981          4             4.217        -6.1          -15.6          0 \r\n 1981          5             6.171         3.3          -12.8          0 \r\n 1981          6             5.348         0            -7.2           0 \r\n 1981          7             6.965        -6.7          -17.8          0 \r\n 1981          8             4.886        -7.2          -16.7          0 \r\n 1981          9             4.886        -7.8          -14.4          0 \r\n 1981          10            6.133        -10           -21.1          0 \r\n 1981          11            7.381        -6.7          -23.9          0 \r\n 1981          12            8.51          8.9          -13.3          0 \r\n 1981          13            7.67          4.4          -7.8           0 \r\n 1981          14            5.778         4.4          -5.6           0 \r\n 1981          15            6.689        -1.1          -15            0 \r\n 1981          16            6.476        -8.3          -19.4          0 \r\n 1981          17            8.175         4.4          -10            0 \r\n 1981          18            8.812         7.2          -9.4           0 \r\n 1981          19            8.796         8.9          -7.8           0 \r\n 1981          20            8.689         6.7          -10            0 \r\n 1981          21            9.011         7.2          -12.2          0 \r\n 1981          22            9.429         11.1         -7.8           0 \r\n 1981          23            9.321         15           -2.2           0 \r\n 1981          24            9.863         17.8         -1.7           0 \r\n 1981          25            9.525         15           -1.1           0 \r\n 1981          26            6.35          7.2          -1.1           0 \r\n 1981          27            5.584         1.7          -7.2           0 \r\n 1981          28            7.52         -4.4          -13.9          0 \r\n 1981          29            8.626        -4.4          -17.8          0 \r\n 1981          30            9.622         0            -14.4          0 \r\n 1981          31            7.819        -0.6          -7.2           2.54 \r\n 1981          32            5.73         -2.2          -15            0 \r\n 1981          33            7.073        -11.7         -22.8          0 \r\n 1981          34            8.466        -8.3          -23.3          0 \r\n 1981          35            8.874        -8.3          -22.2          0 \r\n 1981          36            9.523        -1.7          -15            0 \r\n 1981          37            8.765        -0.6          -11.7          0 \r\n 1981          38            8.086        -1.1          -9.4           0 \r\n 1981          39            10.162       -9.4          -22.8          0 \r\n 1981          40            9.156        -8.9          -23.3          0 \r\n 1981          41            5.847        -10           -21.7          5.08 \r\n 1981          42            10.914       -15           -32.2          0 \r\n 1981          43            11.916       -3.9          -18.9          0 \r\n 1981          44            11.025        4.4          -11.1          0 \r\n 1981          45            10.23         7.2          -3.9           0 \r\n 1981          46            8.431         8.3           1.7           0 \r\n 1981          47            11.801        16.7         -1.1           0 \r\n 1981          48            12.028        18.3          2.8           0 \r\n 1981          49            12.024        18.3          1.1           0 \r\n 1981          50            11.681        15            2.8           0 \r\n 1981          51            13.522        17.2          0             0 \r\n 1981          52            11.557        14.4          1.1           0 \r\n 1981          53            8.047         6.7          -1.1           0 \r\n 1981          54            10.263        10           -0.6           0 \r\n 1981          55            13.179        16.7         -2.8           0 \r\n 1981          56            12.826        16.7          0             0 \r\n 1981          57            10.329        9.4           0.6           0 \r\n 1981          58            7.361         5.6           0.6           0 \r\n 1981          59            6.707         3.3          -1.7           0 \r\n 1981          60            9.569         10           -5.6           0 \r\n 1981          61            12.864        9.4          -10.6          0 \r\n 1981          62            9.513         2.8          -6.1           0 \r\n 1981          63            8.942         5            -5.6           0 \r\n 1981          64            11.777        5            -8.9           0 \r\n 1981          65            11.108        5            -6.7           0 \r\n 1981          66            12.538        3.9          -9.4           0 \r\n 1981          67            13.422        8.3          -6.7           0 \r\n 1981          68            12.202        8.3          -1.1           0 \r\n 1981          69            14.207        11.7         -6.1           0 \r\n 1981          70            14.542        12.2         -8.9           0 \r\n 1981          71            13.988        13.3         -2.2           0 \r\n 1981          72            14.1          12.2         -5.6           0 \r\n 1981          73            15.469        17.8         -2.8           0 \r\n 1981          74            14.673        17.2          3.3           0 \r\n 1981          75            15.597        15           -7.2           0 \r\n 1981          76            13.647        14.4          2.8           0 \r\n 1981          77            13.759        5.6          -7.2           0 \r\n 1981          78            13.066        6.1          -7.2           0 \r\n 1981          79            15.153        8.3          -8.9           0 \r\n 1981          80            12.356        9.4           0             0 \r\n 1981          81            14.335        15           -0.6           0 \r\n 1981          82            16.109        17.2          1.7           0 \r\n 1981          83            15.635        17.2          3.3           0 \r\n 1981          84            15.759        18.9          3.9           0 \r\n 1981          85            16.236        18.3         -0.6           0 \r\n 1981          86            16.124        19.4          1.1           0 \r\n 1981          87            12.875        20            8.9           2.54 \r\n 1981          88            7.761         20.6          8.3           25.91 \r\n 1981          89            7.276         14.4          6.1           0 \r\n 1981          90            9.899         13.9          3.9           0 \r\n 1981          91            10.72         16.7          4.4           2.54 \r\n 1981          92            17.194        28.3          6.7           0 \r\n 1981          93            16.82         27.8          8.9           0 \r\n 1981          94            11.801        8.9           0             5.33 \r\n 1981          95            11.55         10           -2.2           0 \r\n 1981          96            17.583        21.1          0             0 \r\n 1981          97            16.444        21.1          6.1           0 \r\n 1981          98            14.401        17.8          5.6           2.54 \r\n 1981          99            17.715        20            3.3           0 \r\n 1981          100           16.306        22.8          7.8           0 \r\n 1981          101           14.509        20            8.9           0 \r\n 1981          102           17.203        20.6          3.9           0 \r\n 1981          103           15.91         19.4          7.2           0 \r\n 1981          104           18.893        11.7         -4.4           0 \r\n 1981          105           19.024        17.2          0             0 \r\n 1981          106           17.063        18.9          10.6          0 \r\n 1981          107           16.144        23.3          8.9           0 \r\n 1981          108           20.623        23.3          3.9           0 \r\n 1981          109           14.013        17.8          10.6          1.27 \r\n 1981          110           17.31         12.8         -1.1           0 \r\n 1981          111           9.853         12.8          4.4           6.1 \r\n 1981          112           6.169         12.8          10            1.27 \r\n 1981          113           13.142        16.7          4.4           0 \r\n 1981          114           22.014        22.2         -0.6           0 \r\n 1981          115           22.149        30            8.9           0 \r\n 1981          116           22.169        29.4          8.9           0 \r\n 1981          117           21.353        30            12.8          0 \r\n 1981          118           22.872        30.6          7.2           0 \r\n 1981          119           16.983        23.3          7.8           0 \r\n 1981          120           20.817        22.2          3.3           0 \r\n 1981          121           19.445        20            3.3           0 \r\n 1981          122           23.213        27.2          7.2           0 \r\n 1981          123           16.392        26.7          14.4          33.53 \r\n 1981          124           8.955         15.6          10            0 \r\n 1981          125           14.059        18.3          5             0 \r\n 1981          126           20.63         18.9          4.4           0 \r\n 1981          127           21.241        17.2          3.3           0 \r\n 1981          128           20.155        21.1          8.9           0 \r\n 1981          129           20.463        20.6          6.1           0.51 \r\n 1981          130           22.924        15.6         -2.2           0 \r\n 1981          131           24.473        20            0             0 \r\n 1981          132           21.363        20            6.7           11.43 \r\n 1981          133           11.383        17.2          5.6           3.81 \r\n 1981          134           22.455        22.2          5             0 \r\n 1981          135           24.802        24.4          7.8           0 \r\n 1981          136           21.192        24.4          12.2          0 \r\n 1981          137           14.128        23.3          10.6          5.33 \r\n 1981          138           12.799        20.6          7.8           0 \r\n 1981          139           25.598        23.9          6.1           0 \r\n 1981          140           26.388        25.6          5.6           0 \r\n 1981          141           25.131        25.6          10            0 \r\n 1981          142           21.154        26.1          13.3          1.27 \r\n 1981          143           13.997        25.6          14.4          12.7 \r\n 1981          144           21.933        26.1          7.8           0 \r\n 1981          145           21.132        25.6          8.9           0 \r\n 1981          146           20.652        25.6          11.1          0 \r\n 1981          147           20.652        26.1          12.8          0 \r\n 1981          148           14.985        26.7          15.6          3.05 \r\n 1981          149           23.364        26.7          11.1          0 \r\n 1981          150           24.331        26.1          9.4           0 \r\n 1981          151           24.488        28.9          12.8          0 \r\n 1981          152           20.798        28.3          15            0.51 \r\n 1981          153           15.243        28.3          15.6          23.88 \r\n 1981          154           20.815        25            11.7          0 \r\n 1981          155           22.618        29.4          14.4          0 \r\n 1981          156           23.752        31.7          16.1          0 \r\n 1981          157           25.897        30.6          14.4          0 \r\n 1981          158           17.649        33.3          17.2          5.59 \r\n 1981          159           24.577        33.9          15            0 \r\n 1981          160           13.691        25.6          14.4          21.59 \r\n 1981          161           14.68         24.4          10            0 \r\n 1981          162           20.289        28.3          16.1          0 \r\n 1981          163           19.588        27.8          17.2          2.54 \r\n 1981          164           15.936        32.2          17.8          0 \r\n 1981          165           16.434        33.3          17.8          18.29 \r\n 1981          166           14.774        23.9          13.3          1.27 \r\n 1981          167           23.406        25.6          8.9           0 \r\n 1981          168           23.074        30.6          16.1          0 \r\n 1981          169           22.078        28.3          15            0 \r\n 1981          170           24.402        25            11.1          0 \r\n 1981          171           22.742        26.7          11.7          0 \r\n 1981          172           15.272        26.1          13.9          3.05 \r\n 1981          173           17.596        26.1          10.6          2.79 \r\n 1981          174           25.73         31.7          14.4          0 \r\n 1981          175           17.762        33.9          17.2          7.62 \r\n 1981          176           23.738        28.3          12.8          0 \r\n 1981          177           25.232        30            13.9          0 \r\n 1981          178           21.746        30            18.9          0 \r\n 1981          179           16.932        31.7          21.7          0 \r\n 1981          180           14.276        31.7          18.9          49.78 \r\n 1981          181           16.102        27.2          14.4          0 \r\n 1981          182           22.056        27.8          15.6          0 \r\n 1981          183           20.03         28.9          18.3          0 \r\n 1981          184           12.697        27.8          16.7          27.43 \r\n 1981          185           12.876        28.9          18.9          0.51 \r\n 1981          186           21.818        29.4          18.9          0 \r\n 1981          187           23.07         30.6          18.3          0 \r\n 1981          188           22.176        30.6          18.9          0 \r\n 1981          189           20.08         31.1          20.6          0 \r\n 1981          190           26.477        30            15            0 \r\n 1981          191           25.589        33.3          17.2          0 \r\n 1981          192           22.923        35.6          23.3          0 \r\n 1981          193           20.613        35.6          23.3          0 \r\n 1981          194           20.128        34.4          22.2          0 \r\n 1981          195           20.128        35.6          22.8          0 \r\n 1981          196           22.776        35            19.4          0 \r\n 1981          197           20.834        29.4          18.9          0 \r\n 1981          198           22.629        32.2          20            0 \r\n 1981          199           21.577        32.2          18.9          0 \r\n 1981          200           15.963        30.6          19.4          22.35 \r\n 1981          201           17.254        30            16.1          10.16 \r\n 1981          202           23.877        29.4          15.6          0 \r\n 1981          203           22.134        29.4          16.7          0 \r\n 1981          204           16.034        28.3          15.6          0 \r\n 1981          205           19.738        28.9          17.2          0 \r\n 1981          206           19.738        26.7          18.3          0 \r\n 1981          207           14.025        22.8          13.3          0 \r\n 1981          208           14.448        20            12.2          6.1 \r\n 1981          209           12.384        21.1          11.1          2.54 \r\n 1981          210           15.378        20.6          13.9          0 \r\n 1981          211           16.916        27.2          17.2          0 \r\n 1981          212           17.428        28.3          20            0 \r\n 1981          213           15.558        30.6          18.3          31.75 \r\n 1981          214           21.216        30.6          17.8          0 \r\n 1981          215           20.537        29.4          18.9          0 \r\n 1981          216           20.905        30.6          19.4          0 \r\n 1981          217           15.004        31.1          20            0 \r\n 1981          218           22.103        31.1          17.8          0 \r\n 1981          219           22.94         27.2          13.9          0 \r\n 1981          220           23.45         28.9          13.9          4.83 \r\n 1981          221           23.45         26.1          14.4          0 \r\n 1981          222           24.946        25.6          12.2          0 \r\n 1981          223           25.106        28.3          13.3          0 \r\n 1981          224           23.95         31.7          15.6          0 \r\n 1981          225           22.144        31.7          17.2          10.16 \r\n 1981          226           13.122        29.4          18.9          10.41 \r\n 1981          227           20.524        28.3          16.1          0 \r\n 1981          228           22.153        26.1          12.8          0 \r\n 1981          229           21.513        22.8          9.4           0 \r\n 1981          230           21.836        23.3          11.7          0 \r\n 1981          231           23.61         25.6          11.7          0 \r\n 1981          232           23.289        26.7          12.8          0 \r\n 1981          233           22.968        27.8          13.3          0 \r\n 1981          234           22.007        28.9          14.4          0 \r\n 1981          235           14.193        27.2          17.8          3.56 \r\n 1981          236           13.933        26.7          13.3          0 \r\n 1981          237           12.667        27.2          17.2          4.32 \r\n 1981          238           13.047        26.7          14.4          2.79 \r\n 1981          239           8.174         22.2          16.1          20.32 \r\n 1981          240           6.866         18.3          15            6.6 \r\n 1981          241           14.669        24.4          15.6          0 \r\n 1981          242           16.266        25.6          16.7          0 \r\n 1981          243           14.098        25.6          18.3          0 \r\n 1981          244           21.221        22.2          8.3           0 \r\n 1981          245           20.603        23.9          9.4           0 \r\n 1981          246           18.228        23.3          13.3          0 \r\n 1981          247           18.376        25.6          9.4           0 \r\n 1981          248           19.269        28.3          12.2          0 \r\n 1981          249           17.945        28.9          16.1          0 \r\n 1981          250           11.678        25            15            16.51 \r\n 1981          251           18.979        25            8.9           0 \r\n 1981          252           19.993        31.7          11.7          0 \r\n 1981          253           19.696        33.3          14.4          0 \r\n 1981          254           18.403        32.8          15.6          0 \r\n 1981          255           19.687        30            10.6          0 \r\n 1981          256           19.259        30.6          15            0 \r\n 1981          257           18.686        30            11.7          0 \r\n 1981          258           16.704        21.1          7.8           0 \r\n 1981          259           12.922        18.9          3.9           3.05 \r\n 1981          260           17.697        18.3          1.7           0 \r\n 1981          261           18.673        23.9          4.4           0 \r\n 1981          262           18.812        29.4          6.7           0 \r\n 1981          263           18.248        29.4          10.6          0 \r\n 1981          264           17.004        28.3          10.6          0 \r\n 1981          265           15.633        22.2          6.7           0 \r\n 1981          266           15.359        23.3          9.4           0 \r\n 1981          267           11.426        23.9          15.6          6.86 \r\n 1981          268           5.985         22.2          16.1          6.35 \r\n 1981          269           6.611         23.3          16.7          6.35 \r\n 1981          270           13.087        18.9          7.8           0 \r\n 1981          271           15.657        23.9          6.1           0 \r\n 1981          272           15.924        31.1          9.4           0 \r\n 1981          273           14.731        30            11.7          0 \r\n 1981          274           9.821         13.3          4.4           0 \r\n 1981          275           15.003        17.2         -1.1           0 \r\n 1981          276           11.581        17.2          8.9           12.45 \r\n 1981          277           4.567         13.9          8.9           0 \r\n 1981          278           4.27          13.9          10            1.78 \r\n 1981          279           10.222        15            2.8           0 \r\n 1981          280           13.47         17.2          2.2           0 \r\n 1981          281           12.444        18.3          5.6           0 \r\n 1981          282           9.411         17.8          6.7           1.02 \r\n 1981          283           11.701        22.2          3.9           0 \r\n 1981          284           12.229        21.7          5.6           0 \r\n 1981          285           8.825         17.2          11.1          0 \r\n 1981          286           4.499         16.7          13.9          0.76 \r\n 1981          287           6.124         16.7          7.2           1.02 \r\n 1981          288           7.803         17.2          2.2           5.33 \r\n 1981          289           12.262        19.4          3.9           0 \r\n 1981          290           7.243         17.8          7.8           20.32 \r\n 1981          291           6.506         8.9           1.7           0 \r\n 1981          292           12.773        18.9         -2.8           0 \r\n 1981          293           11.922        18.9          5.6           0 \r\n 1981          294           8.92          8.9           1.7           0 \r\n 1981          295           11.211        5.6          -5.6           0 \r\n 1981          296           10.487        2.2          -8.9           0 \r\n 1981          297           5.733         3.9          -4.4           5.33 \r\n 1981          298           7.525         6.7          -4.4           0 \r\n 1981          299           11.005        12.2         -5.6           0 \r\n 1981          300           11.36         20            1.7           0 \r\n 1981          301           10.433        19.4          5.6           0 \r\n 1981          302           10.082        18.9          5             0 \r\n 1981          303           6.967         16.7          11.7          0 \r\n 1981          304           8.941         17.8          6.7           0 \r\n 1981          305           8.396         14.4          5.6           0 \r\n 1981          306           5.521         15.6          8.3           0 \r\n 1981          307           4.026         16.7          8.3           1.78 \r\n 1981          308           5.24          15.6          8.9           2.03 \r\n 1981          309           6.379         13.3          5             0 \r\n 1981          310           9.475         15.6         -2.2           0 \r\n 1981          311           9.927         17.8          1.1           0 \r\n 1981          312           9.159         17.8          0.6           0 \r\n 1981          313           9.271         5            -9.4           0 \r\n 1981          314           9.271         15           -2.8           0 \r\n 1981          315           9.179         13.3         -2.8           0 \r\n 1981          316           8.737         15.6          2.8           0 \r\n 1981          317           8.184         17.2          4.4           0 \r\n 1981          318           7.117         15.6          6.7           0 \r\n 1981          319           5.803         16.1          9.4           0 \r\n 1981          320           8.129         15           -2.2           0 \r\n 1981          321           8.454         16.1         -1.7           0 \r\n 1981          322           7.045         13.3          3.3           0 \r\n 1981          323           4.613         6.7          -4.4           3.81 \r\n 1981          324           3.004        -3.9          -7.8           0 \r\n 1981          325           5.686        -3.3          -10            0 \r\n 1981          326           7.08          6.7          -6.7           0 \r\n 1981          327           3.61          3.3          -0.6           3.3 \r\n 1981          328           2.548         1.7          -1.7           0 \r\n 1981          329           2.336         1.7           0             0 \r\n 1981          330           2.416         2.2          -1.7           0 \r\n 1981          331           2.416        -0.6          -4.4           0 \r\n 1981          332           4.097         1.1          -5             0 \r\n 1981          333           6.304         6.1          -5.6           0 \r\n 1981          334           4.262         1.7          -1.7           13.46 \r\n 1981          335           1.663        -1.1          -2.2           5.08 \r\n 1981          336           6.341        -0.6          -11.1          0 \r\n 1981          337           5.821         1.7          -7.2           0 \r\n 1981          338           4.158         2.2          -5             0 \r\n 1981          339           6.274         3.9          -10.6          0 \r\n 1981          340           4.834         3.9          -1.7           0 \r\n 1981          341           4.114         3.9          -0.6           0 \r\n 1981          342           5.245         1.1          -5.6           0 \r\n 1981          343           5.348        -1.1          -8.3           0 \r\n 1981          344           4.114        -3.3          -11.7          0 \r\n 1981          345           3.866         0.6          -3.9           0 \r\n 1981          346           2.645         1.7          -1.7           0 \r\n 1981          347           2.34          1.1          -1.7           11.43 \r\n 1981          348           6.105         0            -18.3          0 \r\n 1981          349           5.291        -10.6         -15            3.3 \r\n 1981          350           7.122        -15           -21.1          0 \r\n 1981          351           7.02         -17.2         -26.7          0 \r\n 1981          352           7.529        -17.8         -28.3          0 \r\n 1981          353           7.733        -13.9         -27.8          0 \r\n 1981          354           8.038        -1.7          -18.3          0 \r\n 1981          355           6.715         1.1          -6.1           0 \r\n 1981          356           6.715         0            -10.6          0 \r\n 1981          357           7.427        -1.1          -13.3          0 \r\n 1981          358           7.224        -2.2          -12.8          0 \r\n 1981          359           7.224        -2.8          -12.2          0 \r\n 1981          360           6.308        -2.2          -6.7           0 \r\n 1981          361           4.375        -3.9          -8.9           0 \r\n 1981          362           6.919        -7.2          -17.8          0 \r\n 1981          363           6.613        -6.7          -18.3          0 \r\n 1981          364           7.936        -0.6          -18.9          0 \r\n 1981          365           7.817        -0.6          -13.3          0 \r\n 1982          1             7.714        -7.2          -22.8          0 \r\n 1982          2             6.48         -3.9          -11.1          1.27 \r\n 1982          3             5.863        -7.8          -18.3          0 \r\n 1982          4             6.171        -9.4          -21.1          0 \r\n 1982          5             5.965        -8.3          -14.4          0 \r\n 1982          6             5.76         -15           -21.1          0 \r\n 1982          7             7.901        -7.8          -28.3          0 \r\n 1982          8             7.069        -11.1         -17.8          0 \r\n 1982          9             7.173        -16.1         -25            0 \r\n 1982          10            7.381        -24.4         -33.9          0 \r\n 1982          11            7.069        -15           -27.8          0 \r\n 1982          12            4.202        -15.6         -22.8          3.81 \r\n 1982          13            7.88         -15           -26.7          0 \r\n 1982          14            8.93         -17.8         -29.4          0 \r\n 1982          15            9.024        -7.8          -18.9          0 \r\n 1982          16            9.024        -18.9         -27.8          0 \r\n 1982          17            9.555        -6.1          -26.1          0 \r\n 1982          18            7.007        -3.9          -8.9           4.57 \r\n 1982          19            4.72         -5            -13.9          0 \r\n 1982          20            8.26         -10           -22.8          0 \r\n 1982          21            4.613        -8.3          -13.3          0 \r\n 1982          22            2.926        -7.2          -12.8          20.32 \r\n 1982          23            6.72         -7.2          -20.6          17.78 \r\n 1982          24            8.129        -18.3         -27.2          0 \r\n 1982          25            5.803        -16.1         -23.9          0 \r\n 1982          26            10.292       -5            -23.3          0 \r\n 1982          27            10.292        3.3          -7.8           0 \r\n 1982          28            11.502        1.7          -18.3          0 \r\n 1982          29            9.622         2.8          -10.6          0 \r\n 1982          30            9.511        -2.2          -14.4          0 \r\n 1982          31            11.058       -10.6         -25.6          0 \r\n 1982          32            9.656        -6.7          -18.9          2.54 \r\n 1982          33            6.43         -6.7          -13.9          5.33 \r\n 1982          34            11.038       -13.9         -27.8          0 \r\n 1982          35            9.09         -12.8         -26.7          0 \r\n 1982          36            7.791        -18.3         -26.1          0 \r\n 1982          37            10.713       -13.3         -27.2          0 \r\n 1982          38            11.254       -3.9          -16.1          0 \r\n 1982          39            12.019       -7.2          -19.4          0 \r\n 1982          40            11.142       -13.3         -20.6          0 \r\n 1982          41            10.921       -9.4          -23.9          0 \r\n 1982          42            11.025       -5.6          -18.3          0 \r\n 1982          43            11.694       -4.4          -17.8          0 \r\n 1982          44            12.473        1.1          -14.4          0 \r\n 1982          45            12.478        2.8          -9.4           0 \r\n 1982          46            10.567        3.9          -3.9           0 \r\n 1982          47            7.489         1.1          -4.4           0 \r\n 1982          48            3.858         0.6          -1.7           0 \r\n 1982          49            4.466         1.7          -1.1           0 \r\n 1982          50            10.536        5.6          -4.4           0 \r\n 1982          51            9.592         6.7           0.6           0 \r\n 1982          52            12.135        8.3          -1.7           0 \r\n 1982          53            13.645        13.9          2.2           0 \r\n 1982          54            15.044        13.3         -5.6           0 \r\n 1982          55            6.707        -1.1          -5.6           0 \r\n 1982          56            10.473       -2.2          -10.6          0 \r\n 1982          57            12.228        2.8          -8.9           0 \r\n 1982          58            13.297        4.4          -4.4           0 \r\n 1982          59            13.055        8.3          -1.7           0 \r\n 1982          60            12.115        7.2          -3.9           0 \r\n 1982          61            12.54         3.9          -5.6           1.02 \r\n 1982          62            5.189        -5.6          -7.2           0.51 \r\n 1982          63            5.561        -3.3          -8.9           0 \r\n 1982          64            12.867       -3.9          -13.3          0 \r\n 1982          65            13.088       -2.8          -5.6           0 \r\n 1982          66            16.168       -5.6          -16.7          0 \r\n 1982          67            11.314       -6.7          -8.3           0 \r\n 1982          68            15.973       -3.9          -15.6          0 \r\n 1982          69            17.003        10           -7.8           0 \r\n 1982          70            16.556        10           -5             0 \r\n 1982          71            12.296        6.1           0             1.27 \r\n 1982          72            14.777        11.1         -0.6           0 \r\n 1982          73            16.721        11.1          1.1           0 \r\n 1982          74            12.739        8.9           1.7           0 \r\n 1982          75            6.537         4.4           1.1           1.27 \r\n 1982          76            9.175         4.4           0             0 \r\n 1982          77            10.175        7.2           0.6           0 \r\n 1982          78            7.631         5             0.6           12.45 \r\n 1982          79            6.411         3.3          -1.7           0 \r\n 1982          80            13.521        3.9          -4.4           0 \r\n 1982          81            17.273        8.9          -4.4           0 \r\n 1982          82            18.833        12.8         -1.1           0 \r\n 1982          83            18.833        8.9          -2.2           0 \r\n 1982          84            16.117        4.4          -1.7           0 \r\n 1982          85            18.146        3.3          -6.7           0 \r\n 1982          86            18.289        5            -6.1           0 \r\n 1982          87            19.011        11.1         -2.2           0 \r\n 1982          88            18.796        12.8          2.2           0 \r\n 1982          89            15.643        12.8          5             3.56 \r\n 1982          90            20.408        16.7          1.7           0 \r\n 1982          91            18.917        21.1          1.1           0 \r\n 1982          92            22.178        26.1          7.2           0 \r\n 1982          93            17.692        13.3         -11.1          8.13 \r\n 1982          94            16.195        0            -8.3           0 \r\n 1982          95            9.416        -2.2          -6.1           2.79 \r\n 1982          96            20.492        0            -14.4          0 \r\n 1982          97            15.306       -1.1          -6.7           3.3 \r\n 1982          98            7.902         0            -5.6           0 \r\n 1982          99            15.676        6.1          -8.9           0 \r\n 1982          100           19.645        6.7          -2.2           0 \r\n 1982          101           22.855        12.8         -2.8           0 \r\n 1982          102           22.636        18.3          5.6           0 \r\n 1982          103           23.671        17.8          2.2           0 \r\n 1982          104           22.151        22.8          7.2           7.11 \r\n 1982          105           16.548        25.6          9.4           1.02 \r\n 1982          106           23.231        24.4          6.1           4.06 \r\n 1982          107           16.669        20           -0.6           1.27 \r\n 1982          108           23.532        20.6          1.7           0 \r\n 1982          109           22.606        20.6          2.2           0 \r\n 1982          110           17.31         7.8          -2.2           0 \r\n 1982          111           21.171        11.7         -3.9           0 \r\n 1982          112           17.568        15.6         -2.2           4.32 \r\n 1982          113           24.139        22.8          2.2           0 \r\n 1982          114           23.635        22.8          6.1           0 \r\n 1982          115           20.663        22.8          8.9           0 \r\n 1982          116           23.393        19.4          1.7           0 \r\n 1982          117           22.985        16.1          1.7           0 \r\n 1982          118           18.763        15.6          5.6           0 \r\n 1982          119           16.709        18.3          4.4           0 \r\n 1982          120           18.626        21.1          6.7           0 \r\n 1982          121           20.483        22.8          7.2           0 \r\n 1982          122           24.419        24.4          8.9           0 \r\n 1982          123           23.829        28.9          13.9          0 \r\n 1982          124           20.035        28.9          16.1          0 \r\n 1982          125           17.879        23.3          8.9           5.59 \r\n 1982          126           11.003        17.8          6.1           0 \r\n 1982          127           22.158        19.4          2.8           0 \r\n 1982          128           23.54         22.8          7.2           0 \r\n 1982          129           21.54         26.1          15.6          0 \r\n 1982          130           17.968        28.3          19.4          0 \r\n 1982          131           15.489        27.8          13.3          1.78 \r\n 1982          132           10.604        21.7          12.8          16.26 \r\n 1982          133           10.604        21.1          13.3          5.59 \r\n 1982          134           7.797         18.9          14.4          10.16 \r\n 1982          135           10.046        20.6          11.7          22.86 \r\n 1982          136           12.872        23.3          11.7          0 \r\n 1982          137           13.5          23.3          13.3          21.84 \r\n 1982          138           13.905        22.8          10            4.83 \r\n 1982          139           16.275        26.7          10.6          1.78 \r\n 1982          140           20.068        25.6          14.4          4.57 \r\n 1982          141           14.792        20            8.3           3.81 \r\n 1982          142           6.998         13.9          8.9           2.54 \r\n 1982          143           10.657        14.4          10            0 \r\n 1982          144           13.928        15.6          8.9           2.79 \r\n 1982          145           8.965         17.8          13.3          0.76 \r\n 1982          146           9.926         20            12.8          31.75 \r\n 1982          147           12.167        21.1          14.4          0 \r\n 1982          148           20.464        22.2          12.8          0 \r\n 1982          149           18.691        25            16.1          44.2 \r\n 1982          150           16.274        23.9          13.9          5.84 \r\n 1982          151           17.19         20.6          8.3           2.54 \r\n 1982          152           25.266        22.2          4.4           0 \r\n 1982          153           26.715        22.2          7.8           0 \r\n 1982          154           23.765        21.1          7.2           0 \r\n 1982          155           27.043        22.2          7.8           0 \r\n 1982          156           25.897        23.3          11.7          0 \r\n 1982          157           18.309        28.3          15.6          20.32 \r\n 1982          158           26.886        28.3          12.2          0 \r\n 1982          159           25.897        23.3          10.6          0.51 \r\n 1982          160           20.783        19.4          11.7          0 \r\n 1982          161           25.897        25            7.8           0 \r\n 1982          162           26.392        25            12.8          0 \r\n 1982          163           25.232        24.4          11.7          0 \r\n 1982          164           28.054        28.3          10.6          0 \r\n 1982          165           24.236        27.8          16.1          11.18 \r\n 1982          166           11.288        20.6          13.9          2.03 \r\n 1982          167           27.39         26.7          8.9           0 \r\n 1982          168           24.734        26.7          15            0 \r\n 1982          169           15.604        25.6          14.4          11.18 \r\n 1982          170           19.588        22.2          7.2           0 \r\n 1982          171           25.398        22.8          10            0 \r\n 1982          172           26.56         26.1          10            0 \r\n 1982          173           27.556        26.1          10            0 \r\n 1982          174           26.228        30            14.4          0 \r\n 1982          175           23.24         31.7          16.7          0 \r\n 1982          176           18.592        30.6          12.2          19.56 \r\n 1982          177           18.924        23.9          12.8          0 \r\n 1982          178           19.92         31.1          16.7          0 \r\n 1982          179           22.742        31.7          18.3          0 \r\n 1982          180           23.904        31.1          13.3          0 \r\n 1982          181           10.956        23.9          15            3.05 \r\n 1982          182           20.005        26.1          13.9          0 \r\n 1982          183           21.282        27.2          15.6          2.03 \r\n 1982          184           24.322        33.9          18.3          0 \r\n 1982          185           25.037        36.7          23.9          0 \r\n 1982          186           22.176        35.6          24.4          0 \r\n 1982          187           17.705        31.1          17.2          101.6 \r\n 1982          188           17.526        26.7          13.9          0 \r\n 1982          189           21.679        27.2          16.7          0 \r\n 1982          190           15.46         28.3          17.2          56.9 \r\n 1982          191           15.105        21.7          16.7          8.89 \r\n 1982          192           17.059        27.2          13.3          0 \r\n 1982          193           24.167        29.4          16.1          0 \r\n 1982          194           22.776        28.9          18.3          0.51 \r\n 1982          195           16.067        29.4          18.3          0 \r\n 1982          196           15.184        30.6          20            5.59 \r\n 1982          197           19.422        31.1          20.6          0 \r\n 1982          198           18.419        31.7          21.1          0 \r\n 1982          199           16.489        29.4          17.2          0 \r\n 1982          200           21.401        30            18.3          0 \r\n 1982          201           21.262        33.9          21.1          0 \r\n 1982          202           18.125        33.3          17.2          15.75 \r\n 1982          203           21.088        31.1          19.4          0 \r\n 1982          204           21.262        31.1          18.9          0 \r\n 1982          205           21.296        30.6          18.9          0 \r\n 1982          206           21.816        32.8          20            0 \r\n 1982          207           20.258        31.7          21.1          0 \r\n 1982          208           14.964        27.2          17.8          0 \r\n 1982          209           23.393        28.9          17.2          0 \r\n 1982          210           22.554        30            17.8          0 \r\n 1982          211           26.313        28.3          12.2          0 \r\n 1982          212           25.459        31.7          14.4          0 \r\n 1982          213           18.006        33.3          20            2.54 \r\n 1982          214           21.385        33.9          21.1          0 \r\n 1982          215           20.027        33.9          23.3          0 \r\n 1982          216           15.173        30.6          17.2          0 \r\n 1982          217           12.475        30            21.7          0 \r\n 1982          218           16.075        29.4          20.6          0 \r\n 1982          219           20.428        30            17.8          0 \r\n 1982          220           23.117        29.4          15            0 \r\n 1982          221           24.115        25.6          10            0 \r\n 1982          222           21.787        23.3          10            0 \r\n 1982          223           24.115        23.3          10.6          0 \r\n 1982          224           21.472        23.3          12.2          0 \r\n 1982          225           19.027        26.1          12.2          0 \r\n 1982          226           16.731        26.1          17.2          0 \r\n 1982          227           13.357        26.1          18.9          0 \r\n 1982          228           19.547        28.9          16.1          0 \r\n 1982          229           19.734        29.4          20            0 \r\n 1982          230           18.601        28.9          18.9          0 \r\n 1982          231           17.989        31.7          20            0 \r\n 1982          232           20.237        31.7          17.2          0 \r\n 1982          233           22.486        28.3          16.7          0 \r\n 1982          234           19.296        27.8          17.8          0 \r\n 1982          235           19.775        28.9          16.1          0 \r\n 1982          236           13.933        27.8          16.1          14.99 \r\n 1982          237           21.375        26.7          13.9          0 \r\n 1982          238           20.75         27.2          13.9          0 \r\n 1982          239           22.007        26.1          9.4           0 \r\n 1982          240           17.634        19.4          11.7          0 \r\n 1982          241           13.265        22.8          16.7          21.84 \r\n 1982          242           7.436         22.8          16.7          0 \r\n 1982          243           10.38         28.9          17.2          18.29 \r\n 1982          244           14.148        28.3          14.4          10.92 \r\n 1982          245           20.454        27.2          10.6          0 \r\n 1982          246           20.302        26.1          10.6          0 \r\n 1982          247           20.302        29.4          13.3          0 \r\n 1982          248           17.651        29.4          16.7          3.05 \r\n 1982          249           14.709        23.3          12.8          0 \r\n 1982          250           11.532        25            13.9          0 \r\n 1982          251           13.908        23.9          15.6          0 \r\n 1982          252           12.459        23.9          18.3          2.79 \r\n 1982          253           10.926        28.9          17.2          4.06 \r\n 1982          254           15.24         29.4          18.9          0 \r\n 1982          255           11.698        29.4          17.8          45.21 \r\n 1982          256           11.984        18.3          10            3.81 \r\n 1982          257           6.087         13.9          11.1          1.52 \r\n 1982          258           9.343         14.4          8.3           0 \r\n 1982          259           10.955        13.3          8.3           0 \r\n 1982          260           12.219        19.4          11.1          0 \r\n 1982          261           18.673        21.1          4.4           0 \r\n 1982          262           17.697        21.1          9.4           0 \r\n 1982          263           15.621        17.2          7.2           2.03 \r\n 1982          264           18.524        18.9          2.2           0 \r\n 1982          265           18.102        20.6          5.6           0 \r\n 1982          266           17.69         25            8.9           0 \r\n 1982          267           16.596        24.4          9.4           0 \r\n 1982          268           13.195        17.8          8.3           0 \r\n 1982          269           16.46         21.1          7.8           0 \r\n 1982          270           15.921        21.7          12.8          0 \r\n 1982          271           14.988        25            12.2          0 \r\n 1982          272           11.91         25.6          16.7          0 \r\n 1982          273           10.75         23.9          9.4           14.48 \r\n 1982          274           6.901         18.3          8.9           46.23 \r\n 1982          275           9.081         18.3          8.3           15.75 \r\n 1982          276           15.266        23.9          5.6           0 \r\n 1982          277           15.268        24.4          10            0 \r\n 1982          278           14.363        25.6          12.8          0 \r\n 1982          279           11.128        25            5.6           5.33 \r\n 1982          280           14.881        20            1.7           0 \r\n 1982          281           10.135        20            6.1           46.23 \r\n 1982          282           7.885         17.8          8.9           2.03 \r\n 1982          283           7.376         12.2          7.2           0 \r\n 1982          284           6.934         9.4           5             0 \r\n 1982          285           6.43          8.9           3.3           0 \r\n 1982          286           6.498         8.9           4.4           0 \r\n 1982          287           12.622        20.6          1.7           0 \r\n 1982          288           12.758        20.6          6.1           0 \r\n 1982          289           12.758        16.7          0             0 \r\n 1982          290           11.908        20            8.3           0 \r\n 1982          291           11.048        21.1          8.9           0 \r\n 1982          292           12.287        19.4          0             19.05 \r\n 1982          293           6.934         3.3          -5.6           5.59 \r\n 1982          294           10.005        9.4          -3.3           0 \r\n 1982          295           11.452        14.4          0.6           0 \r\n 1982          296           11.09         16.7          2.2           0 \r\n 1982          297           10.869        19.4          4.4           0 \r\n 1982          298           10.63         20.6          7.2           0 \r\n 1982          299           10.177        20            6.1           0 \r\n 1982          300           8.52          16.7          7.2           0 \r\n 1982          301           7.62          15.6          6.7           0 \r\n 1982          302           9.261         16.1          1.7           1.02 \r\n 1982          303           9.522         15            1.7           0 \r\n 1982          304           8.709         14.4          3.3           0 \r\n 1982          305           7.361         14.4          5.6           0 \r\n 1982          306           7.706         12.2          3.3           0 \r\n 1982          307           8.626         7.2          -3.3           0 \r\n 1982          308           5.809        -2.2          -9.4           0 \r\n 1982          309           4.67         -0.6          -5.6           0 \r\n 1982          310           8.911         12.8         -4.4           0 \r\n 1982          311           9.475         13.3          1.1           0 \r\n 1982          312           8.824         10.6         -3.9           0 \r\n 1982          313           3.016         3.9           2.8           22.61 \r\n 1982          314           2.346         5             2.2           9.65 \r\n 1982          315           2.654         3.3           0             12.95 \r\n 1982          316           6.967         1.7          -10.6          2.29 \r\n 1982          317           7.852        -2.8          -15            0 \r\n 1982          318           7.445        -2.2          -11.7          0 \r\n 1982          319           8.211         3.3          -9.4           0 \r\n 1982          320           8.67          3.9          -8.3           0 \r\n 1982          321           9.212         10           -3.9           0 \r\n 1982          322           8.562         10            0             0 \r\n 1982          323           4.505         10            5.6           3.81 \r\n 1982          324           6.436         11.7          2.2           0 \r\n 1982          325           7.938         7.2          -3.9           0 \r\n 1982          326           6.866         3.9          -5.6           0 \r\n 1982          327           6.476        -5.6          -12.2          0 \r\n 1982          328           8.387         1.7          -14.4          0 \r\n 1982          329           7.857         3.3          -7.2           0 \r\n 1982          330           8.3           1.7          -12.8          0 \r\n 1982          331           7.67          1.7          -11.1          0 \r\n 1982          332           4.202         1.1          -2.8           1.27 \r\n 1982          333           3.152         2.8          -1.1           0 \r\n 1982          334           4.574         5            -1.1           0 \r\n 1982          335           6.445         13.3          1.1           0 \r\n 1982          336           5.406         13.9          10            0 \r\n 1982          337           7.069         10           -6.1           0 \r\n 1982          338           5.094         3.9          -1.7           0 \r\n 1982          339           3.394         1.7          -1.1           0 \r\n 1982          340           5.245         3.3          -5.6           0 \r\n 1982          341           5.554         1.7          -11.1          0 \r\n 1982          342           5.245        -8.3          -12.8          0 \r\n 1982          343           7.508        -7.2          -17.8          0 \r\n 1982          344           6.788        -1.1          -8.3           0 \r\n 1982          345           7.733        -7.8          -20            0 \r\n 1982          346           7.529        -3.9          -18.9          0 \r\n 1982          347           6.105        -0.6          -6.7           0 \r\n 1982          348           4.375         0            -3.3           0 \r\n 1982          349           3.256        -2.2          -6.7           0 \r\n 1982          350           6.308        -3.9          -10.6          0 \r\n 1982          351           6.41          1.7          -10.6          0 \r\n 1982          352           5.596         6.7          -1.1           0 \r\n 1982          353           5.596         3.3          -3.9           0 \r\n 1982          354           5.799         7.8          -5.6           0 \r\n 1982          355           5.799         6.7          -4.4           0 \r\n 1982          356           6.105         10           -0.6           0 \r\n 1982          357           5.494         7.2          -2.2           0 \r\n 1982          358           1.526         0.6          -1.7           4.83 \r\n 1982          359           4.782         1.1          -8.9           27.94 \r\n 1982          360           7.224        -1.7          -13.3          0 \r\n 1982          361           6.206        -1.7          -2.8           8.64 \r\n 1982          362           5.087        -3.3          -16.1          21.84 \r\n 1982          363           6.41         -2.2          -17.8          0 \r\n 1982          364           4.985        -5            -15            0 \r\n 1982          365           5.76         -3.9          -12.2          0 \r\n 1983          1             6.685        -2.2          -11.1          0 \r\n 1983          2             4.834        -2.2          -6.1           0 \r\n 1983          3             6.994        -2.2          -12.2          0 \r\n 1983          4             5.863         1.7          -6.7           0 \r\n 1983          5             6.994        -1.1          -7.8           0 \r\n 1983          6             6.994         4.4          -4.4           0 \r\n 1983          7             8.109         0.6          -10.6          0 \r\n 1983          8             5.821        -1.1          -8.9           0 \r\n 1983          9             5.718         2.2          -2.2           0 \r\n 1983          10            4.054         1.1          -6.1           5.33 \r\n 1983          11            7.589        -2.8          -12.2          0 \r\n 1983          12            9.245         1.7          -16.7          0 \r\n 1983          13            8.72          3.3          -5.6           0 \r\n 1983          14            8.405         2.2          -10.6          0 \r\n 1983          15            7.857        -7.8          -15.6          0 \r\n 1983          16            7.857        -5            -13.3          0 \r\n 1983          17            8.175        -5            -15.6          0 \r\n 1983          18            8.6          -8.3          -17.8          0 \r\n 1983          19            7.295        -5.6          -11.7          0 \r\n 1983          20            3.862        -4.4          -7.2           0 \r\n 1983          21            5.256        -0.6          -6.7           0 \r\n 1983          22            9.212        -1.7          -11.1          0 \r\n 1983          23            7.587        -1.7          -6.7           0 \r\n 1983          24            6.936        -2.8          -8.9           0 \r\n 1983          25            7.883        -3.9          -12.2          1.27 \r\n 1983          26            7.664        -12.2         -16.7          0 \r\n 1983          27            11.058       -5.6          -21.1          0 \r\n 1983          28            9.732         1.1          -6.1           0 \r\n 1983          29            3.981         1.1          -4.4           0 \r\n 1983          30            7.852        -1.7          -8.3           0 \r\n 1983          31            10.388       -7.8          -17.8          0 \r\n 1983          32            8.595        -6.7          -14.4          0 \r\n 1983          33            4.929        -7.8          -9.4           9.65 \r\n 1983          34            6.966        -8.3          -17.8          0 \r\n 1983          35            7.9          -10.6         -15.6          0 \r\n 1983          36            10.821       -4.4          -14.4          0 \r\n 1983          37            9.198        -8.3          -20.6          0 \r\n 1983          38            12.019       -8.9          -18.3          0 \r\n 1983          39            10.817       -7.8          -12.8          0 \r\n 1983          40            8.163        -2.2          -10.6          0 \r\n 1983          41            6.619         0            -3.9           0 \r\n 1983          42            3.675         0.6          -0.6           0 \r\n 1983          43            5.234         0            -3.3           0 \r\n 1983          44            7.35          4.4          -2.2           0 \r\n 1983          45            11.129        4.4          -2.8           0 \r\n 1983          46            6.633         4.4          -2.8           8.89 \r\n 1983          47            6.354         3.3          -3.9           0 \r\n 1983          48            10.893        2.2          -4.4           0 \r\n 1983          49            8.818         4.4          -2.2           0 \r\n 1983          50            10.65         6.7           0             0 \r\n 1983          51            10.748        5            -1.7           0 \r\n 1983          52            6.934         2.2          -2.2           0 \r\n 1983          53            7.114         2.2          -0.6           0 \r\n 1983          54            12.012        2.2          -4.4           0 \r\n 1983          55            8.237         0.6          -2.8           0 \r\n 1983          56            10.002        0            -5.6           0 \r\n 1983          57            13.772        5.6          -3.3           0 \r\n 1983          58            13.415        9.4           1.7           0 \r\n 1983          59            14.492        8.9           1.1           0 \r\n 1983          60            12.623        11.7          0.6           0 \r\n 1983          61            15.459        17.2          0             0 \r\n 1983          62            15.567        18.3          6.1           0 \r\n 1983          63            14.067        16.7          10.6          2.79 \r\n 1983          64            5.561         13.9          10            8.89 \r\n 1983          65            8.689         11.7          5.6           24.64 \r\n 1983          66            10.668        6.1          -4.4           1.52 \r\n 1983          67            10.205       -4.4          -8.9           0 \r\n 1983          68            13.089       -2.8          -11.1          0 \r\n 1983          69            15.101       -2.8          -12.2          0 \r\n 1983          70            13.312        1.7          -5.6           0 \r\n 1983          71            16.695        9.4          -5.6           0 \r\n 1983          72            16.695        8.9           0             0 \r\n 1983          73            14.901        5            -0.6           0 \r\n 1983          74            7.052         4.4          -1.1           10.92 \r\n 1983          75            5.275         0            -3.3           10.41 \r\n 1983          76            4.014         0            -2.2           8.38 \r\n 1983          77            5.434         0            -2.2           5.08 \r\n 1983          78            10.406        0.6          -4.4           0 \r\n 1983          79            13.055       -1.1          -7.2           0 \r\n 1983          80            14.57        -2.2          -11.7          0 \r\n 1983          81            18.331       -2.2          -15.6          0 \r\n 1983          82            18.596        1.7          -11.1          0 \r\n 1983          83            17.53         3.3          -7.2           0 \r\n 1983          84            11.461        2.2          -2.8           0 \r\n 1983          85            5.014         0            -2.8           12.7 \r\n 1983          86            5.896         0            -2.8           10.16 \r\n 1983          87            17.447        4.4          -7.8           0 \r\n 1983          88            14.552        1.7          -3.3           2.54 \r\n 1983          89            10.186        4.4          -0.6           0 \r\n 1983          90            14.787        10            1.7           0 \r\n 1983          91            15.133        10           -0.6           0 \r\n 1983          92            9.095         2.2           0             0 \r\n 1983          93            14.702        5            -1.7           0 \r\n 1983          94            16.446        5            -1.7           0 \r\n 1983          95            10.546        3.9           0             0 \r\n 1983          96            7.337         2.2          -0.6           9.14 \r\n 1983          97            16.697        7.2          -2.8           0 \r\n 1983          98            18.734        6.7          -2.2           0 \r\n 1983          99            11.088        5.6           0             6.6 \r\n 1983          100           13.61         9.4          -2.2           4.32 \r\n 1983          101           20.287        11.7         -0.6           0 \r\n 1983          102           14.358        10            1.7           22.86 \r\n 1983          103           8.796         4.4           1.1           5.08 \r\n 1983          104           13.03         1.7          -5.6           0 \r\n 1983          105           20.848        6.7          -5.6           0 \r\n 1983          106           18.9          6.7          -2.2           0 \r\n 1983          107           11.55         3.9          -2.2           0 \r\n 1983          108           12.823        3.9          -3.9           0 \r\n 1983          109           20.227        8.9          -1.7           0 \r\n 1983          110           21.438        13.3          0             0 \r\n 1983          111           19.041        15.6          5             0 \r\n 1983          112           19.445        16.7          8.3           0 \r\n 1983          113           22.127        15.6          3.3           0 \r\n 1983          114           23.094        18.9          0             0 \r\n 1983          115           22.959        22.2          5             0 \r\n 1983          116           21.761        22.2          10.6          0 \r\n 1983          117           23.257        21.1          1.7           0 \r\n 1983          118           20.406        18.3          8.3           0 \r\n 1983          119           22.187        16.1          1.7           5.08 \r\n 1983          120           19.996        16.1          4.4           3.81 \r\n 1983          121           17.371        12.2          5.6           27.94 \r\n 1983          122           11.757        10            2.8           16.51 \r\n 1983          123           16.544        20            4.4           4.57 \r\n 1983          124           25.195        19.4          1.7           0 \r\n 1983          125           24.45         24.4          7.2           0 \r\n 1983          126           22.311        24.4          11.1          0 \r\n 1983          127           16.81         18.9          5.6           7.62 \r\n 1983          128           24.463        16.1          3.3           0 \r\n 1983          129           24.002        20.6          4.4           0 \r\n 1983          130           23.699        23.3          8.3           0 \r\n 1983          131           23.544        25.6          11.1          0 \r\n 1983          132           23.078        23.3          7.2           1.02 \r\n 1983          133           18.244        18.3          5             0 \r\n 1983          134           23.858        17.8          3.3           0 \r\n 1983          135           25.273        18.9          1.1           0 \r\n 1983          136           25.116        18.9          2.8           0 \r\n 1983          137           21.349        19.4          7.8           2.03 \r\n 1983          138           7.269         10            8.3           22.1 \r\n 1983          139           7.427         13.3          8.9           1.27 \r\n 1983          140           16.117        15            7.2           0 \r\n 1983          141           24.017        22.2          5.6           0 \r\n 1983          142           22.268        22.2          8.9           0 \r\n 1983          143           25.767        23.3          3.9           0 \r\n 1983          144           24.494        27.2          11.1          0 \r\n 1983          145           27.056        25.6          4.4           0 \r\n 1983          146           25.294        23.9          6.7           0 \r\n 1983          147           18.571        31.7          12.2          3.05 \r\n 1983          148           24.814        30            12.8          7.37 \r\n 1983          149           18.53         21.7          8.3           0 \r\n 1983          150           19.658        16.7          5             0.51 \r\n 1983          151           22.056        20.6          5             0 \r\n 1983          152           22.956        22.2          7.2           0 \r\n 1983          153           20.979        20.6          10            1.52 \r\n 1983          154           22.618        24.4          10            1.02 \r\n 1983          155           23.11         24.4          12.2          0.51 \r\n 1983          156           21.938        22.2          9.4           0 \r\n 1983          157           24.247        22.8          6.7           0 \r\n 1983          158           26.227        26.7          8.3           0 \r\n 1983          159           26.062        29.4          13.9          0 \r\n 1983          160           24.247        28.3          13.3          0 \r\n 1983          161           21.608        30            17.8          0 \r\n 1983          162           18.639        29.4          17.2          0.51 \r\n 1983          163           14.276        25.6          17.8          0.51 \r\n 1983          164           11.952        26.1          17.2          6.1 \r\n 1983          165           14.608        23.3          12.8          48.77 \r\n 1983          166           21.082        23.9          11.7          0 \r\n 1983          167           22.41         23.9          13.3          0 \r\n 1983          168           20.252        24.4          12.8          9.14 \r\n 1983          169           7.968         18.3          14.4          17.02 \r\n 1983          170           9.794         23.3          13.9          0 \r\n 1983          171           12.284        24.4          16.1          75.44 \r\n 1983          172           12.45         31.1          21.1          0 \r\n 1983          173           17.928        31.7          20            0 \r\n 1983          174           18.094        31.1          21.7          0 \r\n 1983          175           18.924        32.8          21.7          0 \r\n 1983          176           20.916        32.8          21.1          0 \r\n 1983          177           20.584        32.2          21.1          2.54 \r\n 1983          178           13.612        27.8          17.8          74.93 \r\n 1983          179           7.47          18.9          15.6          7.11 \r\n 1983          180           6.806         21.1          16.1          64.26 \r\n 1983          181           16.434        31.1          16.1          0 \r\n 1983          182           18.808        31.7          16.1          12.19 \r\n 1983          183           20.924        29.4          22.2          0 \r\n 1983          184           19.136        30.6          22.2          0 \r\n 1983          185           27.899        27.8          11.7          0 \r\n 1983          186           25.574        25.6          13.3          0 \r\n 1983          187           25.216        29.4          16.1          0 \r\n 1983          188           24.68         31.1          18.3          0 \r\n 1983          189           25.944        33.3          18.3          0 \r\n 1983          190           26.122        33.9          19.4          0 \r\n 1983          191           26.3          34.4          18.9          0 \r\n 1983          192           24.523        32.8          21.1          0 \r\n 1983          193           27.544        31.1          15.6          0 \r\n 1983          194           24.895        34.4          21.7          0 \r\n 1983          195           24.718        34.4          20.6          0 \r\n 1983          196           22.247        30.6          20.6          0 \r\n 1983          197           20.304        30.6          21.1          0 \r\n 1983          198           19.472        30.6          22.2          0 \r\n 1983          199           17.016        32.2          18.9          42.67 \r\n 1983          200           16.489        34.4          23.3          0 \r\n 1983          201           22.831        35.6          22.8          0 \r\n 1983          202           21.785        36.7          23.3          0 \r\n 1983          203           20.74         36.7          24.4          0 \r\n 1983          204           18.3          33.3          18.3          15.75 \r\n 1983          205           16.622        25            18.3          0.51 \r\n 1983          206           21.643        27.8          17.2          0 \r\n 1983          207           22.508        29.4          18.3          0 \r\n 1983          208           15.48         28.9          18.3          4.83 \r\n 1983          209           13.76         28.3          19.4          25.65 \r\n 1983          210           14.865        32.2          18.3          0 \r\n 1983          211           21.016        31.7          20            0 \r\n 1983          212           21.358        29.4          18.3          0 \r\n 1983          213           25.173        29.4          15.6          0 \r\n 1983          214           22.573        34.4          19.4          0 \r\n 1983          215           21.385        33.9          23.9          0 \r\n 1983          216           21.242        34.4          21.7          0 \r\n 1983          217           19.05         32.8          21.1          0 \r\n 1983          218           18.252        33.9          22.2          0 \r\n 1983          219           22.773        34.4          20            0 \r\n 1983          220           22.784        34.4          20.6          0 \r\n 1983          221           23.283        32.2          17.2          0 \r\n 1983          222           21.121        33.3          21.1          0 \r\n 1983          223           23.95         31.1          15            0 \r\n 1983          224           22.133        27.8          13.9          0 \r\n 1983          225           21.324        30            16.7          0 \r\n 1983          226           21.98         31.7          17.2          0 \r\n 1983          227           20.687        34.4          20.6          0 \r\n 1983          228           19.384        35            22.8          0 \r\n 1983          229           20.381        35.6          22.8          0 \r\n 1983          230           18.925        36.7          25            0 \r\n 1983          231           20.398        36.1          21.7          0 \r\n 1983          232           21.04         35            18.3          7.37 \r\n 1983          233           14.616        33.9          21.1          7.87 \r\n 1983          234           18.499        32.8          19.4          0 \r\n 1983          235           13.077        26.7          18.3          0 \r\n 1983          236           12.033        27.2          20            3.56 \r\n 1983          237           11.4          28.9          19.4          21.84 \r\n 1983          238           14.776        31.7          22.2          0 \r\n 1983          239           13.362        31.1          18.3          4.83 \r\n 1983          240           18.415        32.2          19.4          0 \r\n 1983          241           18.102        32.8          20.6          0 \r\n 1983          242           14.717        32.8          16.7          16.51 \r\n 1983          243           17.971        30            16.7          0 \r\n 1983          244           18.915        31.1          16.7          0 \r\n 1983          245           18.215        32.8          18.3          0 \r\n 1983          246           16.153        32.8          20            0 \r\n 1983          247           14.523        29.4          20.6          0.51 \r\n 1983          248           11.62         26.1          12.8          4.57 \r\n 1983          249           12.502        25            12.2          27.43 \r\n 1983          250           20.729        27.8          8.3           0 \r\n 1983          251           18.834        33.9          17.8          0 \r\n 1983          252           12.17         33.9          21.1          0 \r\n 1983          253           17.109        32.2          15            0 \r\n 1983          254           19.409        22.8          8.3           0 \r\n 1983          255           16.977        22.8          10            0 \r\n 1983          256           17.262        22.2          6.7           0 \r\n 1983          257           15.996        21.1          10            0 \r\n 1983          258           9.484         19.4          10.6          22.35 \r\n 1983          259           9.129         18.3          10            2.79 \r\n 1983          260           12.781        28.3          10            6.1 \r\n 1983          261           17.836        28.3          10            0 \r\n 1983          262           10.312        21.1          10            12.7 \r\n 1983          263           9.953         10.6          2.8           0 \r\n 1983          264           14.653        11.7          0             0 \r\n 1983          265           16.182        12.2         -1.7           0 \r\n 1983          266           17.279        16.7          0             0 \r\n 1983          267           16.051        21.1          7.2           0 \r\n 1983          268           16.051        29.4          11.7          0 \r\n 1983          269           16.191        30            11.7          0 \r\n 1983          270           15.381        29.4          13.3          0 \r\n 1983          271           12.713        28.3          17.8          4.32 \r\n 1983          272           8.029         26.7          17.2          7.62 \r\n 1983          273           8.228         26.7          15.6          0 \r\n 1983          274           11.28         26.7          17.8          0.51 \r\n 1983          275           13.292        27.2          12.2          0 \r\n 1983          276           9.87          25            8.9           1.27 \r\n 1983          277           12.006        17.2          5.6           0 \r\n 1983          278           13.327        20            5.6           0 \r\n 1983          279           13.845        18.9          4.4           0 \r\n 1983          280           11.418        20            10.6          0 \r\n 1983          281           12.829        20            2.8           0 \r\n 1983          282           10.683        15            6.1           0 \r\n 1983          283           7.122         15.6          9.4           1.02 \r\n 1983          284           6.43          15            8.3           16.76 \r\n 1983          285           11.473        11.1         -0.6           0 \r\n 1983          286           9.248         5.6          -1.7           0 \r\n 1983          287           12.497        14.4         -3.3           0 \r\n 1983          288           8.794         19.4          6.7           2.54 \r\n 1983          289           11.767        17.8          2.2           0 \r\n 1983          290           12.399        16.7          1.1           0 \r\n 1983          291           11.048        16.7          2.2           0 \r\n 1983          292           4.623         12.8          6.7           20.07 \r\n 1983          293           2.311         7.8           5.6           4.57 \r\n 1983          294           3.134         7.2           4.4           0 \r\n 1983          295           3.616         9.4           6.1           0 \r\n 1983          296           8.318         15.6          3.3           0 \r\n 1983          297           9.197         13.9          9.4           0 \r\n 1983          298           11.347        14.4         -2.2           0 \r\n 1983          299           11.242        17.8          1.7           0 \r\n 1983          300           11.478        25.6          5.6           0 \r\n 1983          301           10.785        23.9          8.3           0 \r\n 1983          302           10.433        12.2         -1.1           0 \r\n 1983          303           9.406         13.9          2.2           0 \r\n 1983          304           6.387         11.7          6.1           0 \r\n 1983          305           5.866         16.1          8.9           0 \r\n 1983          306           4.601         16.1          13.3          0 \r\n 1983          307           6.901         14.4          4.4           7.62 \r\n 1983          308           5.582         12.2          1.1           0 \r\n 1983          309           5.354         8.9           5.6           0 \r\n 1983          310           5.415         14.4          5.6           12.95 \r\n 1983          311           8.911         15.6          3.9           0 \r\n 1983          312           8.042         13.9          3.3           0 \r\n 1983          313           3.909         3.9          -0.6           16.51 \r\n 1983          314           4.468         1.1          -3.9           0 \r\n 1983          315           4.092        -0.6          -5.6           0 \r\n 1983          316           3.207         0            -2.2           4.06 \r\n 1983          317           2.765         2.2          -1.1           3.56 \r\n 1983          318           3.613         5.6           0.6           3.05 \r\n 1983          319           4.927         5            -0.6           0 \r\n 1983          320           4.227         1.7          -1.1           0 \r\n 1983          321           5.853         2.8          -2.8           0 \r\n 1983          322           7.37          8.3           0.6           0 \r\n 1983          323           4.613         7.2           2.2           9.65 \r\n 1983          324           4.076         4.4           0.6           0 \r\n 1983          325           5.686         2.2          -2.8           0 \r\n 1983          326           4.291         1.7          -2.2           0 \r\n 1983          327           3.61         -1.7          -6.7           12.7 \r\n 1983          328           4.353        -1.7          -8.3           0 \r\n 1983          329           8.812         4.4          -8.3           0 \r\n 1983          330           7.88          1.1          -6.7           0 \r\n 1983          331           2.837        -2.8          -6.7           7.62 \r\n 1983          332           2.627        -3.3          -5.6           27.94 \r\n 1983          333           4.728        -5            -10            0 \r\n 1983          334           6.653        -7.8          -14.4          0 \r\n 1983          335           8.732        -6.7          -18.3          0 \r\n 1983          336           8.212        -6.1          -15.6          0 \r\n 1983          337           8.732        -5.6          -20.6          0 \r\n 1983          338           8.212         0            -8.9           0 \r\n 1983          339           6.377        -2.8          -8.9           1.27 \r\n 1983          340           6.994        -8.3          -17.2          0 \r\n 1983          341           7.508        -7.8          -16.1          0 \r\n 1983          342           8.331        -5.6          -17.8          0 \r\n 1983          343           8.022        -7.8          -19.4          0 \r\n 1983          344           6.994        -6.1          -12.2          0 \r\n 1983          345           5.392        -1.1          -6.1           0 \r\n 1983          346           8.14         -4.4          -17.8          0 \r\n 1983          347           6.41         -6.1          -12.2          0 \r\n 1983          348           4.07         -6.1          -9.4           1.02 \r\n 1983          349           6.613        -6.7          -16.7          0 \r\n 1983          350           5.392        -16.7         -24.4          0 \r\n 1983          351           6.817        -18.3         -26.7          0 \r\n 1983          352           7.02         -22.2         -31.1          0 \r\n 1983          353           6.613        -22.8         -29.4          0 \r\n 1983          354           6.613        -20.6         -29.4          0 \r\n 1983          355           4.782        -20           -24.4          1.52 \r\n 1983          356           6.003        -23.9         -30.6          0 \r\n 1983          357           5.087        -25           -31.7          0 \r\n 1983          358           4.375        -26.1         -31.1          0 \r\n 1983          359           6.613        -17.8         -27.8          0 \r\n 1983          360           6.613        -12.2         -21.1          0 \r\n 1983          361           5.392        -9.4          -15            1.52 \r\n 1983          362           6.919        -11.1         -20.6          0 \r\n 1983          363           6.308        -17.2         -24.4          0 \r\n 1983          364           7.529        -7.2          -22.2          0 \r\n 1983          365           7.405        -1.7          -9.4           0 \r\n 1984          1             5.965         0.6          -7.2           0 \r\n 1984          2             6.891        -0.6          -11.1          0 \r\n 1984          3             7.097         3.3          -6.7           0 \r\n 1984          4             4.525         2.2          -3.9           0 \r\n 1984          5             5.76          6.1          -2.2           0 \r\n 1984          6             5.76          3.3          -3.9           0 \r\n 1984          7             6.653         2.8          -4.4           0 \r\n 1984          8             6.029         1.1          -5.6           0 \r\n 1984          9             5.198        -3.9          -8.3           0 \r\n 1984          10            8.732        -5.6          -22.2          0 \r\n 1984          11            6.237        -6.7          -13.3          0 \r\n 1984          12            4.308        -6.7          -10            3.56 \r\n 1984          13            7.249        -7.8          -18.9          0 \r\n 1984          14            7.249        -8.9          -21.1          0 \r\n 1984          15            7.113        -9.4          -18.3          0 \r\n 1984          16            6.689        -11.7         -17.8          0 \r\n 1984          17            7.007        -15.6         -21.1          0 \r\n 1984          18            8.706        -16.1         -29.4          0 \r\n 1984          19            8.046        -16.1         -25            0 \r\n 1984          20            8.904        -20.6         -31.1          0 \r\n 1984          21            9.762        -7.8          -28.3          0 \r\n 1984          22            9.104        -3.3          -14.4          0 \r\n 1984          23            8.02         -1.1          -9.4           0 \r\n 1984          24            8.996         2.8          -9.4           0 \r\n 1984          25            9.525         5            -6.7           0 \r\n 1984          26            7.992         2.2          -3.9           0 \r\n 1984          27            9.854        -2.8          -14.4          0 \r\n 1984          28            9.29          3.3          -3.3           0 \r\n 1984          29            6.525         1.7          -6.7           12.7 \r\n 1984          30            6.636        -6.1          -12.2          7.62 \r\n 1984          31            9.383         1.1          -10.6          0 \r\n 1984          32            9.444         2.8          -5.6           0 \r\n 1984          33            7.823         2.2          -5.6           0 \r\n 1984          34            7.501         2.8          -5.6           0 \r\n 1984          35            8.441         1.1          -6.7           0 \r\n 1984          36            12.228       -2.2          -23.9          0.76 \r\n 1984          37            11.363       -7.2          -21.7          0 \r\n 1984          38            11.254       -3.9          -21.1          0 \r\n 1984          39            11.473        4.4          -11.7          0 \r\n 1984          40            10.48         4.4          -2.2           0 \r\n 1984          41            8.163         2.8          -2.8           0 \r\n 1984          42            3.564         1.7           0             0 \r\n 1984          43            2.673         2.2          -0.6           4.32 \r\n 1984          44            4.232         0.6          -1.7           0 \r\n 1984          45            8.993         7.2          -2.2           0 \r\n 1984          46            8.544         8.3           2.8           0 \r\n 1984          47            8.17          7.2           1.7           0.76 \r\n 1984          48            5.22          1.7          -1.1           0 \r\n 1984          49            2.634         1.1          -1.1           26.67 \r\n 1984          50            4.695         0.6          -3.9           0 \r\n 1984          51            13.29         1.7          -11.1          0 \r\n 1984          52            14.215        5            -8.9           0 \r\n 1984          53            13.645        6.1          -3.9           0 \r\n 1984          54            11.196        4.4          -1.7           0 \r\n 1984          55            13.061        5            -6.7           0 \r\n 1984          56            13.767        7.2          -6.1           0 \r\n 1984          57            12.228        6.1          -3.9           0 \r\n 1984          58            11.041        6.1          -6.1           0 \r\n 1984          59            8.863        -1.7          -6.7           0 \r\n 1984          60            11.198        0            -10            0 \r\n 1984          61            11.504        3.3          -5             0 \r\n 1984          62            12.648        3.3          -6.7           0 \r\n 1984          63            11.567        3.3          -6.7           0 \r\n 1984          64            10.795        1.7          -2.2           16.51 \r\n 1984          65            6.87         -1.1          -8.9           0 \r\n 1984          66            11.218       -8.3          -21.7          0 \r\n 1984          67            15.728       -5.6          -17.2          0 \r\n 1984          68            15.197       -6.7          -17.8          0 \r\n 1984          69            15.64        -7.2          -20.6          0 \r\n 1984          70            16.668       -0.6          -19.4          0 \r\n 1984          71            17.451       -2.8          -17.8          0 \r\n 1984          72            17.146       -6.7          -14.4          0 \r\n 1984          73            9.25          0            -7.8           0 \r\n 1984          74            12.853        1.7          -1.1           0 \r\n 1984          75            10.123        1.7          -5.6           0 \r\n 1984          76            13.533       -2.8          -12.8          0 \r\n 1984          77            15.597       -1.1          -5             5.59 \r\n 1984          78            8.556        -1.1          -5.6           0 \r\n 1984          79            6.244        -1.1          -6.7           0 \r\n 1984          80            10.024        0.6          -9.4           0 \r\n 1984          81            14.221        1.7          -2.8           0 \r\n 1984          82            11.045        2.8          -3.9           0 \r\n 1984          83            13.621        5.6          -5.6           0 \r\n 1984          84            17.53         10           -3.9           0 \r\n 1984          85            19.101        10           -1.1           0 \r\n 1984          86            18.863        9.4           0.6           0.51 \r\n 1984          87            16.364        2.8           0             4.06 \r\n 1984          88            5.415         5.6           0             0.76 \r\n 1984          89            11.156        4.4          -2.2           0 \r\n 1984          90            14.43         4.4          -3.9           0 \r\n 1984          91            16.742        6.7          -2.8           0 \r\n 1984          92            16.184        8.9          -0.6           0 \r\n 1984          93            20.184        8.3           0.6           2.54 \r\n 1984          94            18.066        6.1           0             14.73 \r\n 1984          95            9.416         9.4          -1.1           0 \r\n 1984          96            12.303        12.8         -1.1           0 \r\n 1984          97            21.125        15           -0.6           0 \r\n 1984          98            22.516        14.4          3.9           10.16 \r\n 1984          99            19.754        7.2           4.4           13.21 \r\n 1984          100           5.99          5.6           2.2           1.78 \r\n 1984          101           7.062         10            5             0 \r\n 1984          102           11.556        10            7.2           13.21 \r\n 1984          103           6.597         11.1          5.6           28.19 \r\n 1984          104           8.925         7.8           2.8           6.86 \r\n 1984          105           9.121         7.8           4.4           0.76 \r\n 1984          106           9.251         15            3.9           0 \r\n 1984          107           17.063        14.4          3.9           0 \r\n 1984          108           19.688        13.9          0.6           0 \r\n 1984          109           21.284        14.4         -0.6           0 \r\n 1984          110           21.813        16.1          3.9           0 \r\n 1984          111           21.837        15.6          6.1           0 \r\n 1984          112           19.44         12.8          4.4           6.35 \r\n 1984          113           16.629        6.1           0             23.37 \r\n 1984          114           10.46         17.2          1.1           0 \r\n 1984          115           15.531        17.2          5             0 \r\n 1984          116           22.014        17.2          4.4           0 \r\n 1984          117           21.897        26.7          9.4           6.1 \r\n 1984          118           16.457        23.9          5.6           0 \r\n 1984          119           16.572        12.8          0             0 \r\n 1984          120           20.406        12.2          0             2.54 \r\n 1984          121           14.928        7.8          -0.6           18.29 \r\n 1984          122           11.927        15           -1.1           0 \r\n 1984          123           23.515        15            4.4           1.78 \r\n 1984          124           15.785        15            5.6           0 \r\n 1984          125           18.062        13.9          5.6           4.57 \r\n 1984          126           20.324        17.8          2.2           5.08 \r\n 1984          127           18.338        17.8          8.9           2.54 \r\n 1984          128           15.74         13.3          5             12.19 \r\n 1984          129           14.616        10            0.6           0 \r\n 1984          130           20.463        16.1          0.6           0 \r\n 1984          131           25.248        23.9          8.9           0 \r\n 1984          132           24.938        23.9          9.4           4.57 \r\n 1984          133           17.932        21.1          8.9           2.54 \r\n 1984          134           24.326        21.1          10            2.79 \r\n 1984          135           16.373        21.7          7.2           0 \r\n 1984          136           25.116        21.1          11.7          0 \r\n 1984          137           21.663        26.1          11.1          1.52 \r\n 1984          138           16.639        26.1          15.6          0 \r\n 1984          139           20.542        23.9          12.2          4.06 \r\n 1984          140           15.643        26.1          14.4          0 \r\n 1984          141           19.12         27.8          12.2          0 \r\n 1984          142           25.29         27.8          14.4          0 \r\n 1984          143           22.109        24.4          12.2          4.57 \r\n 1984          144           16.064        23.9          5             0 \r\n 1984          145           26.095        27.2          17.8          0 \r\n 1984          146           21.452        24.4          8.9           0 \r\n 1984          147           17.61         18.9          4.4           0 \r\n 1984          148           24.494        17.2          7.2           0 \r\n 1984          149           14.663        17.8          7.2           20.83 \r\n 1984          150           13.696        20            6.1           0 \r\n 1984          151           24.814        22.8          7.2           0 \r\n 1984          152           25.299        27.8          12.8          0 \r\n 1984          153           23.11         27.8          16.7          0 \r\n 1984          154           22.618        24.4          5.6           1.27 \r\n 1984          155           19.668        27.8          11.1          0 \r\n 1984          156           25.732        26.7          16.1          4.32 \r\n 1984          157           15.01         28.3          16.1          0 \r\n 1984          158           13.856        29.4          20            0 \r\n 1984          159           17.319        26.7          17.2          1.02 \r\n 1984          160           16.99         25.6          13.3          46.99 \r\n 1984          161           14.68         25.6          14.4          0.76 \r\n 1984          162           18.309        20.6          11.7          23.11 \r\n 1984          163           13.691        21.1          10            29.97 \r\n 1984          164           22.078        26.7          15            28.45 \r\n 1984          165           16.102        26.7          17.8          0 \r\n 1984          166           13.446        25            15            17.53 \r\n 1984          167           19.09         25            16.7          0 \r\n 1984          168           16.766        30            17.8          10.67 \r\n 1984          169           13.612        28.9          16.7          34.8 \r\n 1984          170           14.608        29.4          16.7          4.06 \r\n 1984          171           15.272        28.9          16.1          0 \r\n 1984          172           23.572        28.9          16.1          28.7 \r\n 1984          173           17.098        26.7          16.1          28.96 \r\n 1984          174           15.438        30.6          15.6          3.56 \r\n 1984          175           17.928        28.3          17.2          18.8 \r\n 1984          176           16.434        26.7          12.8          0 \r\n 1984          177           23.738        30.6          17.8          0 \r\n 1984          178           23.572        31.7          19.4          0 \r\n 1984          179           21.912        31.1          12.8          0 \r\n 1984          180           26.062        29.4          16.7          1.52 \r\n 1984          181           22.908        29.4          15.6          0 \r\n 1984          182           23.074        27.8          14.4          0 \r\n 1984          183           25.476        28.3          15.6          0 \r\n 1984          184           26.11         30            21.1          0 \r\n 1984          185           21.997        32.2          19.4          0 \r\n 1984          186           23.249        32.2          18.3          0 \r\n 1984          187           23.785        28.3          15.6          0 \r\n 1984          188           25.037        26.7          11.1          0 \r\n 1984          189           20.566        25.6          10            0 \r\n 1984          190           28.077        27.8          14.4          13.97 \r\n 1984          191           19.547        30            20.6          2.03 \r\n 1984          192           22.39         30.6          20            3.3 \r\n 1984          193           14.038        29.4          13.9          0 \r\n 1984          194           25.411        31.7          18.9          0 \r\n 1984          195           25.072        31.7          19.4          1.78 \r\n 1984          196           22.953        30            16.7          11.43 \r\n 1984          197           21.893        30.6          14.4          0 \r\n 1984          198           19.422        30.6          16.7          0 \r\n 1984          199           25.085        30            12.8          1.78 \r\n 1984          200           19.121        27.8          11.1          0 \r\n 1984          201           26.664        27.8          17.2          0 \r\n 1984          202           23.18         30.6          17.8          0 \r\n 1984          203           22.134        31.7          17.8          0 \r\n 1984          204           22.134        34.4          17.8          0 \r\n 1984          205           21.088        33.3          22.2          0 \r\n 1984          206           19.911        31.1          17.2          1.27 \r\n 1984          207           19.911        26.1          17.8          0 \r\n 1984          208           18.353        26.7          17.2          16.26 \r\n 1984          209           12.04         27.8          15            4.06 \r\n 1984          210           23.221        28.3          14.4          2.03 \r\n 1984          211           23.408        26.7          14.4          0 \r\n 1984          212           23.067        28.3          15            0 \r\n 1984          213           23.408        28.9          17.2          0 \r\n 1984          214           21.852        32.2          20            0 \r\n 1984          215           15.105        32.2          19.4          0 \r\n 1984          216           20.367        31.1          19.4          0 \r\n 1984          217           20.905        30            20.6          0 \r\n 1984          218           19.219        33.9          20            0 \r\n 1984          219           15.405        35.6          21.7          0 \r\n 1984          220           21.601        35            20            25.15 \r\n 1984          221           20.955        31.7          17.2          0 \r\n 1984          222           16.132        31.7          17.2          0 \r\n 1984          223           21.454        29.4          14.4          0 \r\n 1984          224           23.454        28.9          15.6          0 \r\n 1984          225           22.628        30.6          17.8          0 \r\n 1984          226           21.652        31.1          18.3          0 \r\n 1984          227           20.832        31.7          17.8          0 \r\n 1984          228           21.176        31.1          18.9          0 \r\n 1984          229           19.547        31.1          18.9          0.51 \r\n 1984          230           17.793        25            20            10.41 \r\n 1984          231           9.058         27.8          16.7          0 \r\n 1984          232           12.528        27.8          15            0 \r\n 1984          233           20.719        27.8          15            0 \r\n 1984          234           20.559        27.8          18.9          1.27 \r\n 1984          235           14.034        27.8          12.2          0 \r\n 1984          236           20.891        22.8          8.9           0 \r\n 1984          237           22.8          22.8          12.2          0 \r\n 1984          238           20.108        27.2          16.1          0 \r\n 1984          239           18.235        32.2          20.6          0 \r\n 1984          240           18.078        35.6          18.9          0 \r\n 1984          241           20.287        36.7          19.4          0 \r\n 1984          242           21.068        36.1          18.3          0 \r\n 1984          243           20.294        27.8          9.4           0 \r\n 1984          244           21.844        28.9          13.9          0 \r\n 1984          245           21.068        28.9          15.6          1.02 \r\n 1984          246           17.617        22.8          15            0 \r\n 1984          247           14.819        23.3          8.9           0 \r\n 1984          248           18.672        23.9          11.1          0 \r\n 1984          249           17.503        22.2          7.2           0 \r\n 1984          250           19.857        21.1          10            0 \r\n 1984          251           17.08         25.6          16.7          0 \r\n 1984          252           14.633        23.3          9.4           3.05 \r\n 1984          253           13.039        26.1          11.7          0 \r\n 1984          254           18.546        25.6          12.2          1.27 \r\n 1984          255           16.821        22.8          7.2           0 \r\n 1984          256           16.549        31.7          15.6          3.05 \r\n 1984          257           16.691        31.1          14.4          1.02 \r\n 1984          258           15.43         19.4          9.4           0 \r\n 1984          259           13.873        18.3         -0.6           0 \r\n 1984          260           17.837        19.4          1.1           0 \r\n 1984          261           18.259        25            9.4           0 \r\n 1984          262           17            31.1          11.7          0 \r\n 1984          263           16.861        35            13.9          0 \r\n 1984          264           17.971        34.4          13.3          0 \r\n 1984          265           17.28         29.4          12.8          0 \r\n 1984          266           15.77         27.8          13.3          0 \r\n 1984          267           14.125        27.8          15            0 \r\n 1984          268           10.202        26.7          7.2           0 \r\n 1984          269           15.915        8.9           2.2           0 \r\n 1984          270           9.579         11.7         -3.3           0 \r\n 1984          271           14.841        16.1          2.8           0 \r\n 1984          272           14.185        15           -2.2           3.05 \r\n 1984          273           10.438        15.6         -1.7           0 \r\n 1984          274           14.598        18.9          1.7           0 \r\n 1984          275           16.058        20            0.6           0 \r\n 1984          276           15.792        25            6.1           0 \r\n 1984          277           14.608        25            6.7           0 \r\n 1984          278           14.616        22.2          8.9           0 \r\n 1984          279           13.069        21.1          10            0 \r\n 1984          280           11.257        20            12.8          25.4 \r\n 1984          281           5.516         20            13.9          8.13 \r\n 1984          282           3.207         16.1          12.2          7.11 \r\n 1984          283           4.197         17.8          11.1          0.76 \r\n 1984          284           4.324         21.1          12.8          2.03 \r\n 1984          285           6.052         20            13.9          8.89 \r\n 1984          286           5.421         23.3          14.4          0.51 \r\n 1984          287           7.498         23.3          12.8          0 \r\n 1984          288           9.748         20            13.9          3.81 \r\n 1984          289           5.326         16.1          7.2           27.94 \r\n 1984          290           5.822         8.3           3.9           9.91 \r\n 1984          291           5.033         12.2         -1.1           13.97 \r\n 1984          292           7.734         10            7.2           16 \r\n 1984          293           5.718         11.7          1.1           7.11 \r\n 1984          294           7.177         11.1         -0.6           0 \r\n 1984          295           10.487        10           -1.7           0 \r\n 1984          296           10.487        7.2          -1.1           0 \r\n 1984          297           9.282         11.7         -4.4           0 \r\n 1984          298           11.705        13.3         -0.6           0 \r\n 1984          299           10.988        12.2          5             3.81 \r\n 1984          300           8.757         18.9          3.3           0 \r\n 1984          301           9.703         18.9          9.4           0 \r\n 1984          302           9.964         11.7         -4.4           0 \r\n 1984          303           10.902        15            0             0 \r\n 1984          304           10.103        12.2         -4.4           0 \r\n 1984          305           10.683        6.1          -2.8           2.03 \r\n 1984          306           5.866         6.7          -11.1          0.76 \r\n 1984          307           8.741         3.3          -10.6          0 \r\n 1984          308           10.351        10.6         -2.8           0 \r\n 1984          309           10.252        12.8         -1.1           0 \r\n 1984          310           10.366        10           -5             0 \r\n 1984          311           11.055        15.6         -1.1           0 \r\n 1984          312           10.942        16.7          7.2           0 \r\n 1984          313           8.601         16.7          0.6           0 \r\n 1984          314           8.489         14.4          1.1           14.99 \r\n 1984          315           5.697         1.7          -3.3           5.08 \r\n 1984          316           3.65         -1.1          -7.8           0 \r\n 1984          317           4.977         3.9          -5             0 \r\n 1984          318           6.414         13.3          1.1           0 \r\n 1984          319           7.226         15.6          7.8           0 \r\n 1984          320           6.788         12.2         -4.4           0 \r\n 1984          321           8.345         8.9          -8.9           0 \r\n 1984          322           7.912         8.9           0             0 \r\n 1984          323           6.72          2.2          -7.8           0 \r\n 1984          324           7.295         2.2          -11.1          0 \r\n 1984          325           6.436         0.6          -11.7          0 \r\n 1984          326           6.436         7.2          -5.6           0 \r\n 1984          327           6.436         5.6          -1.1           0 \r\n 1984          328           5.308         10           -4.4           0 \r\n 1984          329           7.22          15.6         -0.6           0 \r\n 1984          330           7.432         12.2          4.4           0 \r\n 1984          331           6.094         7.8           1.7           2.03 \r\n 1984          332           3.257         3.3          -5             0 \r\n 1984          333           4.728         2.2          -7.2           0 \r\n 1984          334           4.938         1.7          -2.8           1.27 \r\n 1984          335           3.431         0.6          -6.7           0 \r\n 1984          336           4.262         0.6          -5.6           0 \r\n 1984          337           4.574        -0.6          -10            0 \r\n 1984          338           5.51         -7.2          -16.1          0 \r\n 1984          339           5.51         -7.2          -15            0 \r\n 1984          340           5.04         -2.2          -15            0 \r\n 1984          341           6.48         -7.2          -21.7          0 \r\n 1984          342           7.097         14.4         -9.4           0 \r\n 1984          343           7.508         11.1         -5             0 \r\n 1984          344           7.097         10            1.7           5.33 \r\n 1984          345           5.965         7.8          -6.7           0 \r\n 1984          346           4.375         7.2           1.7           0 \r\n 1984          347           4.68          3.9          -10.6          0 \r\n 1984          348           6.512        -5.6          -14.4          0 \r\n 1984          349           4.782        -3.3          -7.2           7.37 \r\n 1984          350           3.052         2.2          -9.4           0 \r\n 1984          351           6.206         7.2          -7.2           22.86 \r\n 1984          352           4.884        -6.1          -12.2          0 \r\n 1984          353           5.087        -7.8          -16.7          0 \r\n 1984          354           5.901        -3.9          -16.1          0 \r\n 1984          355           6.41          0.6          -10.6          0 \r\n 1984          356           6.715         0.6          -4.4           0 \r\n 1984          357           5.291         0.6          -13.9          0 \r\n 1984          358           7.224        -2.2          -10            0 \r\n 1984          359           6.206        -9.4          -17.8          0 \r\n 1984          360           6.003        -3.9          -20            0 \r\n 1984          361           7.122        -0.6          -10.6          0 \r\n 1984          362           6.105         6.7          -1.1           0 \r\n 1984          363           4.884         10            5.6           0 \r\n 1984          364           5.698         6.1          -14.4          0 \r\n 1984          365           8.14         -7.8          -15            0 \r\n 1984          366           4.628        -12.2         -13.9          0.76 \r\n 1985          1             3.086        -13.9         -17.2          0 \r\n 1985          2             6.891        -6.1          -20.6          0 \r\n 1985          3             7.817        -0.6          -13.9          0 \r\n 1985          4             7.405         4.4          -11.1          0 \r\n 1985          5             7.302         5.6          -7.8           0 \r\n 1985          6             6.48          2.8          -4.4           0 \r\n 1985          7             5.718         0.6          -3.3           0 \r\n 1985          8             8.628         0            -18.9          0 \r\n 1985          9             4.782        -6.7          -13.3          1.02 \r\n 1985          10            4.574        -7.8          -13.3          2.29 \r\n 1985          11            7.589        -10           -22.2          0 \r\n 1985          12            7.144        -8.9          -20            0 \r\n 1985          13            8.3           2.8          -12.2          0 \r\n 1985          14            8.405         1.7          -13.9          0 \r\n 1985          15            6.37         -7.2          -16.1          0 \r\n 1985          16            3.504        -7.8          -10            0.76 \r\n 1985          17            7.22         -0.6          -13.3          6.35 \r\n 1985          18            8.6           1.7          -13.3          0 \r\n 1985          19            9.655        -13.3         -30.6          0 \r\n 1985          20            7.295        -18.9         -27.8          0 \r\n 1985          21            8.796        -5            -20.6          0 \r\n 1985          22            7.153        -4.4          -13.3          0 \r\n 1985          23            7.803        -3.3          -13.9          0 \r\n 1985          24            5.961         0            -3.9           0 \r\n 1985          25            10.839        0            -21.7          0 \r\n 1985          26            9.963        -2.2          -18.9          0 \r\n 1985          27            7.883        -3.3          -9.4           0 \r\n 1985          28            10.174       -6.1          -20            0 \r\n 1985          29            8.184        -0.6          -8.3           0.76 \r\n 1985          30            10.949       -6.1          -23.3          0 \r\n 1985          31            9.494        -16.7         -27.8          0 \r\n 1985          32            7.852        -16.7         -25            0 \r\n 1985          33            10.502       -7.8          -23.3          0 \r\n 1985          34            10.395       -11.1         -23.3          0 \r\n 1985          35            7.25         -13.9         -19.4          1.27 \r\n 1985          36            8.765        -10.6         -21.1          0 \r\n 1985          37            8.549        -12.2         -20.6          0 \r\n 1985          38            10.708       -11.7         -25.6          0 \r\n 1985          39            9.724        -6.7          -13.3          0 \r\n 1985          40            6.509        -4.4          -10            0 \r\n 1985          41            7.06         -5            -10.6          0 \r\n 1985          42            11.137       -9.4          -20.6          0 \r\n 1985          43            12.362       -2.8          -20.6          0 \r\n 1985          44            9.912        -3.3          -6.7           0 \r\n 1985          45            10.68        -5            -17.2          0 \r\n 1985          46            12.029       -3.3          -17.8          0 \r\n 1985          47            11.914        3.9          -3.3           0 \r\n 1985          48            12.255        6.1          -8.9           0 \r\n 1985          49            10.536        3.9          -2.8           0 \r\n 1985          50            11.91         8.9          -5.6           0 \r\n 1985          51            11.441        7.2          -0.6           0 \r\n 1985          52            7.628         6.1           0.6           0 \r\n 1985          53            8.397         1.7          -2.2           0 \r\n 1985          54            4.548         1.7           0             0 \r\n 1985          55            9.061         2.8          -4.4           0 \r\n 1985          56            12.12         10           -0.6           0 \r\n 1985          57            14.365        9.4          -6.1           0 \r\n 1985          58            15.315        8.3          -8.9           0 \r\n 1985          59            15.81         13.9         -1.1           0 \r\n 1985          60            12.827        12.8         -1.7           0 \r\n 1985          61            12.432        8.3          -4.4           0 \r\n 1985          62            4.54          5.6          -2.2           24.89 \r\n 1985          63            8.287         1.1          -7.8           0 \r\n 1985          64            11.45        -2.2          -11.1          0 \r\n 1985          65            13.308        3.9          -7.8           0 \r\n 1985          66            10.998        6.1           0.6           0 \r\n 1985          67            14.753        9.4          -2.8           0 \r\n 1985          68            16.084        13.3         -2.2           0 \r\n 1985          69            16.22         15.6          0.6           0 \r\n 1985          70            10.851        12.8         -0.6           4.32 \r\n 1985          71            12.408        3.9          -3.3           0 \r\n 1985          72            10.265        5            -1.7           2.03 \r\n 1985          73            12.398        6.7          -1.1           0 \r\n 1985          74            17.175        14.4         -1.7           0 \r\n 1985          75            16.744        13.3         -1.1           0 \r\n 1985          76            16.858        12.8         -1.7           0 \r\n 1985          77            18.5          20            0             0 \r\n 1985          78            18.384        18.9          1.1           0 \r\n 1985          79            18.3          17.2          1.7           0 \r\n 1985          80            18.3          17.2          2.2           0 \r\n 1985          81            18.448        15.6         -0.6           0 \r\n 1985          82            11.845        11.7          1.1           7.62 \r\n 1985          83            8.41          6.7          -1.1           0 \r\n 1985          84            12.535        11.7          0.6           0 \r\n 1985          85            18.027        22.8          3.9           0 \r\n 1985          86            13.958        21.1          2.2           7.62 \r\n 1985          87            13.958        11.7          1.1           0 \r\n 1985          88            15.4          11.1         -1.1           0 \r\n 1985          89            5.942         1.7          -1.7           0 \r\n 1985          90            6.355         2.2          -3.9           7.87 \r\n 1985          91            14.188        5            -7.8           0 \r\n 1985          92            20.683        20           -1.1           0 \r\n 1985          93            19.561        17.8          0             0 \r\n 1985          94            12.805        13.3          0             20.32 \r\n 1985          95            12.931        6.1          -1.1           0 \r\n 1985          96            13.409        3.3          -2.8           0 \r\n 1985          97            13.535        7.2          -1.1           0 \r\n 1985          98            14.529        5            -3.3           0 \r\n 1985          99            18.989        15.6         -2.8           0 \r\n 1985          100           20.415        22.2          0.6           0 \r\n 1985          101           20.287        27.2          4.4           0 \r\n 1985          102           19.144        26.1          9.4           0 \r\n 1985          103           19.402        23.9          3.3           0 \r\n 1985          104           14.463        17.8          2.8           0 \r\n 1985          105           20.327        26.7          2.8           0 \r\n 1985          106           19.688        25.6          7.8           0 \r\n 1985          107           19.031        30            10.6          0 \r\n 1985          108           18.905        32.2          14.4          0 \r\n 1985          109           18.111        31.1          15            7.87 \r\n 1985          110           14.114        26.7          10            4.57 \r\n 1985          111           13.582        26.7          12.2          40.64 \r\n 1985          112           12.204        23.9          11.7          59.44 \r\n 1985          113           9.79          17.8          7.2           39.88 \r\n 1985          114           13.64         18.3          2.2           0 \r\n 1985          115           16.882        15.6          5             1.27 \r\n 1985          116           5.168         7.2           4.4           13.97 \r\n 1985          117           9.656         15            4.4           0 \r\n 1985          118           19.174        20.6          6.7           0 \r\n 1985          119           19.037        23.9          11.1          0 \r\n 1985          120           14.928        23.3          13.9          0 \r\n 1985          121           17.112        23.3          8.3           0 \r\n 1985          122           21.857        23.3          8.9           0 \r\n 1985          123           22.16         25            10.6          0 \r\n 1985          124           20.642        26.1          12.2          0 \r\n 1985          125           18.796        25.6          12.8          1.02 \r\n 1985          126           23.381        23.9          3.9           0 \r\n 1985          127           22.005        23.9          10.6          0 \r\n 1985          128           23.848        28.9          9.4           0 \r\n 1985          129           22.155        31.1          13.9          0 \r\n 1985          130           18.587        29.4          16.1          0 \r\n 1985          131           14.56         29.4          14.4          0 \r\n 1985          132           14.97         27.2          11.1          0 \r\n 1985          133           20.739        20.6          8.3           0 \r\n 1985          134           9.512         16.1          9.4           41.91 \r\n 1985          135           7.221         12.8          7.8           1.27 \r\n 1985          136           14.285        17.8          8.9           0 \r\n 1985          137           21.506        20            6.7           0 \r\n 1985          138           24.018        25.6          7.8           0 \r\n 1985          139           23.86         28.3          12.8          0 \r\n 1985          140           19.12         21.1          7.2           10.41 \r\n 1985          141           25.29         22.2          7.2           0 \r\n 1985          142           25.131        25.6          10            0 \r\n 1985          143           16.383        25.6          15            1.27 \r\n 1985          144           18.731        25            8.9           16.51 \r\n 1985          145           24.174        30.6          13.3          0 \r\n 1985          146           19.851        22.8          17.8          0 \r\n 1985          147           21.933        24.4          15            0 \r\n 1985          148           20.947        27.8          13.9          0 \r\n 1985          149           15.308        23.9          12.8          19.05 \r\n 1985          150           16.113        28.3          15.6          0 \r\n 1985          151           20.434        26.1          18.3          5.33 \r\n 1985          152           20.953        24.4          12.2          0 \r\n 1985          153           17.537        16.1          5.6           3.3 \r\n 1985          154           21.471        16.7          6.1           0 \r\n 1985          155           19.176        20            10.6          0 \r\n 1985          156           24.082        24.4          9.4           0 \r\n 1985          157           24.907        27.2          12.8          0 \r\n 1985          158           24.907        32.8          15            0 \r\n 1985          159           24.082        38.3          18.9          0 \r\n 1985          160           25.072        36.1          14.4          0 \r\n 1985          161           21.443        25.6          12.8          9.14 \r\n 1985          162           13.361        20            10.6          6.6 \r\n 1985          163           16.268        19.4          7.8           1.02 \r\n 1985          164           23.738        22.2          8.9           0 \r\n 1985          165           16.268        26.1          13.3          4.57 \r\n 1985          166           16.932        26.7          12.2          2.54 \r\n 1985          167           21.58         29.4          18.3          1.27 \r\n 1985          168           25.896        27.8          10            0 \r\n 1985          169           19.256        23.9          13.9          0.76 \r\n 1985          170           22.742        23.9          8.3           0 \r\n 1985          171           25.398        30.6          12.8          0 \r\n 1985          172           21.58         30            19.4          0.51 \r\n 1985          173           26.062        30.6          10            0 \r\n 1985          174           21.414        30.6          18.3          0 \r\n 1985          175           23.738        31.1          15            0 \r\n 1985          176           20.086        33.9          22.8          0 \r\n 1985          177           16.6          32.2          16.1          38.1 \r\n 1985          178           12.45         20.6          12.2          11.18 \r\n 1985          179           21.746        22.2          8.9           0 \r\n 1985          180           22.576        25            12.8          0 \r\n 1985          181           23.904        27.8          12.8          0 \r\n 1985          182           23.082        29.4          17.2          0 \r\n 1985          183           21.461        29.4          16.1          0 \r\n 1985          184           27.004        33.3          15.6          0 \r\n 1985          185           24.143        33.3          20            0 \r\n 1985          186           25.037        28.9          12.8          0 \r\n 1985          187           26.826        32.2          16.7          0 \r\n 1985          188           24.68         36.1          20.6          0 \r\n 1985          189           21.324        34.4          21.1          0 \r\n 1985          190           23.101        32.2          18.9          0 \r\n 1985          191           27.721        30.6          13.9          0 \r\n 1985          192           23.812        30            16.1          0 \r\n 1985          193           21.324        30            15.6          1.78 \r\n 1985          194           21.187        29.4          17.8          0 \r\n 1985          195           22.953        30.6          19.4          0 \r\n 1985          196           25.425        27.2          12.8          0 \r\n 1985          197           25.425        28.3          15            0 \r\n 1985          198           23.682        32.2          17.2          0 \r\n 1985          199           19.647        32.2          20.6          0 \r\n 1985          200           18.068        30            18.9          0 \r\n 1985          201           21.437        29.4          16.1          0 \r\n 1985          202           24.4          28.3          14.4          0 \r\n 1985          203           26.491        27.2          12.2          0 \r\n 1985          204           26.317        30.6          13.3          0 \r\n 1985          205           15.063        29.4          19.4          10.92 \r\n 1985          206           21.643        27.2          14.4          0 \r\n 1985          207           25.625        30            13.9          0 \r\n 1985          208           23.221        31.1          16.7          0 \r\n 1985          209           22.533        30.6          16.7          0 \r\n 1985          210           22.725        29.4          13.9          0 \r\n 1985          211           11.448        24.4          14.4          6.6 \r\n 1985          212           10.594        20.6          12.8          0.76 \r\n 1985          213           20.628        25            11.7          0 \r\n 1985          214           23.252        26.1          11.1          0 \r\n 1985          215           14.766        26.1          15.6          6.86 \r\n 1985          216           12.981        25            15.6          0 \r\n 1985          217           21.073        30            15.6          0 \r\n 1985          218           22.773        30            16.1          0 \r\n 1985          219           25.284        32.2          13.9          0 \r\n 1985          220           22.119        31.7          17.2          0 \r\n 1985          221           21.121        30.6          16.7          2.29 \r\n 1985          222           19.126        23.3          7.2           0 \r\n 1985          223           23.95         25.6          6.7           0 \r\n 1985          224           13.709        26.1          17.8          42.16 \r\n 1985          225           15.747        26.1          13.9          0 \r\n 1985          226           18.371        23.3          12.8          0 \r\n 1985          227           20.361        23.9          11.7          0 \r\n 1985          228           19.384        26.7          15            0 \r\n 1985          229           12.94         26.7          14.4          10.16 \r\n 1985          230           21.189        23.3          8.9           0 \r\n 1985          231           21.362        23.3          8.9           0 \r\n 1985          232           20.88         23.3          10            0.51 \r\n 1985          233           17.989        25            13.9          0 \r\n 1985          234           11.323        23.9          16.1          13.46 \r\n 1985          235           11.323        26.1          16.7          23.62 \r\n 1985          236           20.108        24.4          11.1          1.27 \r\n 1985          237           13.617        22.8          11.1          0 \r\n 1985          238           21.85         25            11.1          0 \r\n 1985          239           20.593        26.7          13.9          0 \r\n 1985          240           16.698        25            16.7          16.51 \r\n 1985          241           10.924        25.6          20            13.21 \r\n 1985          242           15.027        25.6          15.6          0 \r\n 1985          243           15.027        27.8          16.7          0 \r\n 1985          244           16.916        28.9          16.7          0 \r\n 1985          245           14.034        30.6          13.9          5.59 \r\n 1985          246           12.745        31.1          20.6          8.13 \r\n 1985          247           15.857        28.9          17.8          28.7 \r\n 1985          248           12.208        28.3          16.7          30.99 \r\n 1985          249           16.768        32.2          18.3          0 \r\n 1985          250           15.912        32.2          21.1          0 \r\n 1985          251           17.385        30.6          13.9          0.51 \r\n 1985          252           14.777        17.8          12.2          0 \r\n 1985          253           9.776         20            13.9          0 \r\n 1985          254           12.652        20            10.6          0 \r\n 1985          255           9.986         18.9          11.7          10.16 \r\n 1985          256           4.708         12.8          8.9           26.67 \r\n 1985          257           9.626         20            10            4.83 \r\n 1985          258           17.978        22.2          8.3           0 \r\n 1985          259           13.483        21.7          16.1          1.02 \r\n 1985          260           10.674        25.6          18.3          0.76 \r\n 1985          261           14.074        28.9          17.8          0 \r\n 1985          262           13.935        28.9          20            0 \r\n 1985          263           13.962        27.8          7.8           10.92 \r\n 1985          264           10.506        13.9          7.2           3.81 \r\n 1985          265           6.72          15            8.9           3.56 \r\n 1985          266           10.559        13.9          3.9           13.21 \r\n 1985          267           15.915        13.3         -0.6           0.51 \r\n 1985          268           9.794         12.8          5.6           4.06 \r\n 1985          269           16.865        13.9         -1.7           0 \r\n 1985          270           17.135        19.4          4.4           0 \r\n 1985          271           12.445        18.3          2.2           5.84 \r\n 1985          272           4.282         3.3           0             14.73 \r\n 1985          273           6.503         6.7           0             5.59 \r\n 1985          274           15.66         13.3         -2.2           0 \r\n 1985          275           16.056        17.2         -2.2           0 \r\n 1985          276           14.74         16.1          6.1           0 \r\n 1985          277           13.572        14.4          4.4           0 \r\n 1985          278           10.093        16.7          1.7           0 \r\n 1985          279           15.139        20            2.8           0 \r\n 1985          280           14.497        18.9          5.6           5.33 \r\n 1985          281           8.852         14.4          4.4           1.78 \r\n 1985          282           10.556        8.3          -1.1           1.78 \r\n 1985          283           11.828        10.6         -2.2           0 \r\n 1985          284           12.733        11.1          0.6           0 \r\n 1985          285           7.564         16.7          8.3           10.16 \r\n 1985          286           11.747        14.4          6.7           0 \r\n 1985          287           12.247        15.6          1.7           0.51 \r\n 1985          288           13.501        16.1          1.1           0 \r\n 1985          289           13.377        16.1          1.7           0 \r\n 1985          290           10.557        18.3          10.6          0 \r\n 1985          291           6.874         16.7          6.7           5.84 \r\n 1985          292           10.705        20            5.6           0 \r\n 1985          293           11.435        18.9          5.6           0 \r\n 1985          294           8.076         15.6          9.4           0 \r\n 1985          295           8.076         22.2          11.7          0 \r\n 1985          296           8.318         21.1          5.6           0 \r\n 1985          297           10.869        18.3          1.7           0 \r\n 1985          298           11.825        22.2          8.9           0 \r\n 1985          299           9.585         21.7          12.2          0 \r\n 1985          300           11.478        18.3          2.8           0 \r\n 1985          301           10.551        20.6          3.3           0 \r\n 1985          302           9.496         13.9          3.3           0 \r\n 1985          303           9.638         10.6         -1.7           0 \r\n 1985          304           8.941         11.1          1.1           0 \r\n 1985          305           8.856         12.2          0             0 \r\n 1985          306           10.236        12.2         -3.9           0 \r\n 1985          307           8.626         11.1          4.4           0 \r\n 1985          308           10.024        12.8         -2.2           0 \r\n 1985          309           9.796         17.8          0             0 \r\n 1985          310           8.911         14.4         -0.6           0.76 \r\n 1985          311           7.783         7.2          -5             0 \r\n 1985          312           6.925         4.4          -5             4.32 \r\n 1985          313           2.122        -2.2          -6.7           15.49 \r\n 1985          314           2.346         0.6          -6.7           0 \r\n 1985          315           2.765        -1.7          -5.6           0 \r\n 1985          316           3.097         1.1          -2.8           0.76 \r\n 1985          317           3.097         0.6          -2.2           0 \r\n 1985          318           6.569         1.7          -6.7           0 \r\n 1985          319           6.569         0            -7.2           3.81 \r\n 1985          320           2.926         0            -2.2           0 \r\n 1985          321           7.587         4.4          -5.6           0 \r\n 1985          322           7.695         5.6          -1.1           15.49 \r\n 1985          323           6.758        -2.8          -11.1          0 \r\n 1985          324           3.862        -8.3          -10.6          0 \r\n 1985          325           6.651        -8.3          -15            0 \r\n 1985          326           5.042        -6.1          -13.3          4.06 \r\n 1985          327           6.37         -8.9          -16.7          0 \r\n 1985          328           7.75         -9.4          -22.2          0 \r\n 1985          329           5.415        -5            -10            0 \r\n 1985          330           6.934        -5            -15.6          0 \r\n 1985          331           7.88         -12.2         -20.6          0 \r\n 1985          332           4.833        -15           -18.9          0 \r\n 1985          333           5.253        -13.9         -18.9          0 \r\n 1985          334           3.223        -9.4          -14.4          0 \r\n 1985          335           3.431        -12.2         -20            0 \r\n 1985          336           4.158        -17.2         -21.7          6.35 \r\n 1985          337           8.42         -9.4          -23.3          0 \r\n 1985          338           5.821        -6.1          -10            3.56 \r\n 1985          339           5.554        -5.6          -15            0 \r\n 1985          340           8.537        -7.2          -20            0 \r\n 1985          341           7.405        -2.8          -9.4           0 \r\n 1985          342           6.685        -5            -10.6          0 \r\n 1985          343           6.377        -4.4          -12.2          0 \r\n 1985          344           2.983        -6.1          -8.3           1.27 \r\n 1985          345           7.631        -6.7          -19.4          0 \r\n 1985          346           7.427        -11.7         -20.6          0 \r\n 1985          347           7.733        -17.2         -28.3          0 \r\n 1985          348           8.343        -7.2          -26.7          0 \r\n 1985          349           8.241        -1.1          -16.1          0 \r\n 1985          350           7.529        -5            -18.3          0 \r\n 1985          351           5.291        -11.1         -22.2          2.54 \r\n 1985          352           7.834        -17.8         -31.1          0 \r\n 1985          353           7.936        -11.1         -23.3          1.52 \r\n 1985          354           7.631        -11.7         -26.1          0 \r\n 1985          355           8.241        -4.4          -23.3          0 \r\n 1985          356           6.715         2.2          -10.6          0 \r\n 1985          357           6.308         2.2          -15            0 \r\n 1985          358           8.241        -2.2          -23.9          0 \r\n 1985          359           5.087        -16.1         -24.4          0 \r\n 1985          360           8.14          2.2          -17.8          0 \r\n 1985          361           7.224        -1.1          -14.4          0 \r\n 1985          362           6.105        -4.4          -17.8          0 \r\n 1985          363           6.105        -9.4          -17.8          0 \r\n 1985          364           7.326         0.6          -13.3          0 \r\n 1985          365           7.097         0            -13.9          0 \r\n 1986          1             5.657         1.1          -9.4           0 \r\n 1986          2             5.143        -1.1          -7.2           0 \r\n 1986          3             3.291        -0.6          -6.7           0 \r\n 1986          4             6.788        -2.2          -13.3          1.52 \r\n 1986          5             6.48         -7.8          -17.8          0 \r\n 1986          6             7.405        -10.6         -22.2          0 \r\n 1986          7             7.277        -17.2         -28.9          0 \r\n 1986          8             8.212        -2.8          -17.8          0 \r\n 1986          9             7.069         2.8          -6.1           0 \r\n 1986          10            5.925         1.7          -6.7           0 \r\n 1986          11            6.237         5.6          -3.3           0 \r\n 1986          12            6.304         3.3          -2.8           0 \r\n 1986          13            7.985         1.7          -9.4           0 \r\n 1986          14            6.934         0.6          -10.6          0 \r\n 1986          15            7.113         4.4          -6.7           0 \r\n 1986          16            5.415         3.9          -1.7           0 \r\n 1986          17            5.521         3.9          -2.8           0 \r\n 1986          18            4.99          3.9          -2.2           0 \r\n 1986          19            3.433         1.1          -1.7           0 \r\n 1986          20            6.436         5.6          -3.9           0 \r\n 1986          21            7.187         4.4          -5             0.76 \r\n 1986          22            9.104        -3.9          -16.7          0.51 \r\n 1986          23            9.429         2.8          -12.2          0 \r\n 1986          24            6.72          3.3          -2.8           0 \r\n 1986          25            4.927        -1.1          -7.8           0 \r\n 1986          26            10.511       -3.3          -20.6          0 \r\n 1986          27            9.635        -10.6         -26.1          0 \r\n 1986          28            9.732        -0.6          -11.1          0 \r\n 1986          29            10.285       -0.6          -16.1          0 \r\n 1986          30            9.179        -1.7          -13.3          0 \r\n 1986          31            5.026        -2.2          -7.8           0 \r\n 1986          32            6.155         1.7          -5.6           0 \r\n 1986          33            7.93          2.2          -5             0 \r\n 1986          34            6.323         0            -5             0 \r\n 1986          35            2.164         0            -2.2           0.51 \r\n 1986          36            3.03         -1.1          -4.4           0 \r\n 1986          37            2.273        -2.8          -5             0 \r\n 1986          38            4.371        -3.9          -6.7           0 \r\n 1986          39            8.96         -6.1          -16.7          0 \r\n 1986          40            8.825        -10.6         -17.8          0 \r\n 1986          41            10.37        -12.2         -22.2          0 \r\n 1986          42            9.689        -13.9         -22.8          0 \r\n 1986          43            10.469       -11.1         -23.3          0 \r\n 1986          44            11.359       -4.4          -18.9          0 \r\n 1986          45            10.904       -7.8          -18.3          0 \r\n 1986          46            10.342       -6.7          -16.1          0 \r\n 1986          47            5.446        -5            -8.9           0 \r\n 1986          48            6.695        -1.1          -6.7           0 \r\n 1986          49            7.787        -1.1          -7.8           0 \r\n 1986          50            8.932        -5            -11.7          0 \r\n 1986          51            11.21        -5            -15.6          0 \r\n 1986          52            11.441       -5            -18.3          0 \r\n 1986          53            10.379       -5.6          -10            0 \r\n 1986          54            9.213        -2.2          -9.4           0 \r\n 1986          55            13.65         0            -16.1          0 \r\n 1986          56            13.767        8.3          -6.7           0 \r\n 1986          57            11.753        7.2           0.6           0 \r\n 1986          58            11.991        3.3          -5             0 \r\n 1986          59            11.498       -1.7          -9.4           0 \r\n 1986          60            12.216        8.3          -6.7           0 \r\n 1986          61            12            8.3          -1.1           0 \r\n 1986          62            10.054        8.9          -0.6           0 \r\n 1986          63            11.777        9.4          -3.9           0 \r\n 1986          64            11.777        8.9          -2.2           0 \r\n 1986          65            11.548        0.6          -7.2           0 \r\n 1986          66            13.748       -6.1          -18.9          0 \r\n 1986          67            13.422        5            -7.8           0 \r\n 1986          68            13.311        13.3          1.7           0 \r\n 1986          69            12.529        4.4          -1.1           0 \r\n 1986          70            12.64         5            -5             0 \r\n 1986          71            6.091         3.3          -1.1           7.37 \r\n 1986          72            3.835         1.7          -1.7           7.62 \r\n 1986          73            4.55          1.7          -1.1           0 \r\n 1986          74            12.171        7.8          -3.3           0 \r\n 1986          75            12.5          7.2          -5             0 \r\n 1986          76            8.257         5.6          -3.9           7.62 \r\n 1986          77            6.475         5             0             18.8 \r\n 1986          78            10.984        0            -7.8           2.54 \r\n 1986          79            16.902        0            -14.4          0 \r\n 1986          80            17.601        8.3          -6.1           0 \r\n 1986          81            17.391        13.3          1.1           0 \r\n 1986          82            18.004        11.7          1.7           0 \r\n 1986          83            19.188        16.7         -1.1           0 \r\n 1986          84            14.684        16.7          11.1          0 \r\n 1986          85            15.4          12.8         -0.6           0 \r\n 1986          86            18.289        21.1         -2.2           0 \r\n 1986          87            17.928        25            7.8           0 \r\n 1986          88            18.675        28.3          7.8           0 \r\n 1986          89            18.553        25.6          4.4           0 \r\n 1986          90            17.597        27.8          16.1          0 \r\n 1986          91            16.184        19.4         -0.6           0 \r\n 1986          92            16.073        16.1          3.3           2.03 \r\n 1986          93            5.482         8.9           6.1           13.72 \r\n 1986          94            8.537         11.7          3.9           24.38 \r\n 1986          95            7.784         11.7          3.9           9.14 \r\n 1986          96            14.926        20            5             0 \r\n 1986          97            17.836        20            6.7           0 \r\n 1986          98            18.48         18.3         -0.6           0 \r\n 1986          99            18.862        15           -1.7           0 \r\n 1986          100           20.03         19.4          0             0 \r\n 1986          101           19.902        22.8          5             0 \r\n 1986          102           14.487        22.2          1.1           2.03 \r\n 1986          103           14.228        10.6         -1.1           0 \r\n 1986          104           14.463        12.8         -5             31.24 \r\n 1986          105           13.29         10.6         -1.1           0.51 \r\n 1986          106           17.456        15.6         -0.6           0 \r\n 1986          107           13.519        14.4          4.4           1.27 \r\n 1986          108           7.007         15            7.2           10.16 \r\n 1986          109           11.369        17.2          4.4           0 \r\n 1986          110           14.38         12.8          5.6           0.76 \r\n 1986          111           15.978        8.3          -1.1           0 \r\n 1986          112           19.982        15           -1.7           0 \r\n 1986          113           19.982        23.9          5.6           0 \r\n 1986          114           15.936        23.9          11.1          0 \r\n 1986          115           19.448        28.3          9.4           0 \r\n 1986          116           14.825        24.4          10            3.81 \r\n 1986          117           12.105        23.9          13.3          15.24 \r\n 1986          118           14.243        16.7          2.8           33.78 \r\n 1986          119           19.311        22.8          8.3           0 \r\n 1986          120           17.12         21.1          10            0 \r\n 1986          121           17.241        17.8          3.3           0 \r\n 1986          122           23.063        15           -0.6           0 \r\n 1986          123           19.883        20            8.9           0 \r\n 1986          124           21.856        28.3          11.1          0 \r\n 1986          125           18.643        27.8          14.4          0 \r\n 1986          126           22.769        25            7.2           0 \r\n 1986          127           23.534        23.3          5             0 \r\n 1986          128           20.309        28.3          16.1          39.62 \r\n 1986          129           12.924        24.4          14.4          27.43 \r\n 1986          130           10.843        23.9          14.4          6.6 \r\n 1986          131           17.813        24.4          12.2          1.02 \r\n 1986          132           19.648        26.1          12.2          0 \r\n 1986          133           21.519        24.4          10.6          0 \r\n 1986          134           23.702        26.7          10            0 \r\n 1986          135           14.913        26.7          12.8          0.51 \r\n 1986          136           12.872        22.8          10            12.7 \r\n 1986          137           12.715        16.7          7.2           0.76 \r\n 1986          138           22.596        18.3          5.6           0 \r\n 1986          139           22.912        20            6.7           0 \r\n 1986          140           23.228        21.7          6.1           0 \r\n 1986          141           24.017        22.8          6.7           0 \r\n 1986          142           24.653        23.3          8.3           0 \r\n 1986          143           20.677        22.8          10            0.25 \r\n 1986          144           16.97         21.7          7.8           6.86 \r\n 1986          145           15.689        18.9          9.4           5.33 \r\n 1986          146           13.448        18.3          9.4           0.51 \r\n 1986          147           10.246        20            12.2          5.59 \r\n 1986          148           9.668         22.2          14.4          3.81 \r\n 1986          149           9.829         22.2          15.6          4.83 \r\n 1986          150           16.436        28.3          12.8          0 \r\n 1986          151           23.029        30.6          16.7          0 \r\n 1986          152           21.415        30.6          15.6          0 \r\n 1986          153           26.224        26.7          10            0 \r\n 1986          154           25.568        30            12.2          0 \r\n 1986          155           21.635        29.4          16.7          17.27 \r\n 1986          156           12.866        18.9          13.3          0 \r\n 1986          157           15.67         23.9          15            0 \r\n 1986          158           13.856        23.9          14.4          6.35 \r\n 1986          159           25.072        31.7          12.8          0 \r\n 1986          160           24.742        27.2          11.7          0 \r\n 1986          161           15.67         29.4          18.3          3.05 \r\n 1986          162           14.68         28.9          15            24.13 \r\n 1986          163           19.09         28.9          10.6          0.25 \r\n 1986          164           24.734        28.9          13.9          0 \r\n 1986          165           15.272        27.8          15.6          2.03 \r\n 1986          166           23.406        29.4          15.6          0 \r\n 1986          167           21.082        28.9          18.9          0 \r\n 1986          168           25.564        29.4          13.9          0 \r\n 1986          169           23.074        32.8          19.4          0 \r\n 1986          170           20.584        33.3          21.1          0 \r\n 1986          171           20.086        32.2          21.1          2.03 \r\n 1986          172           15.438        30.6          20            13.46 \r\n 1986          173           16.268        31.1          16.7          9.91 \r\n 1986          174           24.734        28.9          14.4          0 \r\n 1986          175           26.726        28.3          11.7          0 \r\n 1986          176           25.398        31.7          15.6          0 \r\n 1986          177           20.916        33.3          22.8          0 \r\n 1986          178           21.58         33.9          18.9          0 \r\n 1986          179           16.434        33.9          18.3          3.05 \r\n 1986          180           13.446        30            19.4          8.64 \r\n 1986          181           12.284        25            15.6          1.78 \r\n 1986          182           20.176        26.7          15.6          0 \r\n 1986          183           22.712        26.7          13.9          0 \r\n 1986          184           26.11         30            15.6          0 \r\n 1986          185           21.461        33.3          23.3          0 \r\n 1986          186           18.778        33.3          23.9          0 \r\n 1986          187           25.037        32.2          15.6          0 \r\n 1986          188           24.68         29.4          15.6          0 \r\n 1986          189           23.279        32.2          19.4          0 \r\n 1986          190           15.815        27.8          18.3          2.29 \r\n 1986          191           13.683        28.3          17.8          8.38 \r\n 1986          192           15.993        28.3          16.7          7.11 \r\n 1986          193           20.08         27.2          17.8          4.83 \r\n 1986          194           25.601        30.6          13.3          0 \r\n 1986          195           17.656        30            16.7          17.02 \r\n 1986          196           18.362        30            21.7          0 \r\n 1986          197           19.598        32.8          21.1          0 \r\n 1986          198           19.296        33.3          22.8          0 \r\n 1986          199           20.7          34.4          22.2          0 \r\n 1986          200           16.314        33.3          20.6          3.81 \r\n 1986          201           23.354        28.9          15            0 \r\n 1986          202           26.317        27.2          12.8          0 \r\n 1986          203           24.574        30.6          17.2          0 \r\n 1986          204           23.354        32.2          18.9          0 \r\n 1986          205           20.084        31.7          22.2          0 \r\n 1986          206           17.314        31.7          18.3          29.97 \r\n 1986          207           22.682        30.6          17.8          0 \r\n 1986          208           20.985        30.6          20            0 \r\n 1986          209           24.253        32.2          19.4          0 \r\n 1986          210           18.795        31.1          14.4          37.34 \r\n 1986          211           21.871        30            18.3          0.76 \r\n 1986          212           23.238        28.3          15            0 \r\n 1986          213           23.076        26.7          14.4          0 \r\n 1986          214           17.821        25            10.6          3.56 \r\n 1986          215           25.119        26.1          11.7          0 \r\n 1986          216           22.253        25.6          14.4          0 \r\n 1986          217           20.23         26.7          15            0 \r\n 1986          218           20.596        27.2          15.6          0 \r\n 1986          219           19.759        27.2          15.6          0 \r\n 1986          220           24.614        28.9          12.2          0 \r\n 1986          221           22.119        31.7          12.2          0 \r\n 1986          222           14.968        24.4          11.7          12.95 \r\n 1986          223           24.775        23.9          9.4           0 \r\n 1986          224           14.7          22.8          15            7.62 \r\n 1986          225           9.35          22.8          16.7          3.05 \r\n 1986          226           15.419        27.2          17.8          0 \r\n 1986          227           22.479        30.6          15.6          0 \r\n 1986          228           21.013        31.7          18.3          0 \r\n 1986          229           15.043        31.7          16.7          6.35 \r\n 1986          230           21.028        27.8          14.4          0 \r\n 1986          231           19.113        27.8          16.7          0 \r\n 1986          232           16.222        26.7          17.2          13.21 \r\n 1986          233           14.937        23.3          9.4           1.78 \r\n 1986          234           18.18         27.2          16.1          0 \r\n 1986          235           22.805        26.7          9.4           0 \r\n 1986          236           20.267        24.4          12.2          0 \r\n 1986          237           18.842        32.2          18.3          0 \r\n 1986          238           15.248        32.2          15.6          43.18 \r\n 1986          239           21.85         20            6.7           0 \r\n 1986          240           22.004        20            4.4           0 \r\n 1986          241           20.755        22.2          10            0 \r\n 1986          242           19.52         27.2          10            0 \r\n 1986          243           18.9          28.3          15.6          0 \r\n 1986          244           19.222        28.3          15            0 \r\n 1986          245           16.572        26.1          14.4          0 \r\n 1986          246           16.153        28.3          16.1          0 \r\n 1986          247           19.265        28.9          10.6          0 \r\n 1986          248           17.798        23.3          11.1          0 \r\n 1986          249           16.18         20.6          8.9           0 \r\n 1986          250           20.145        20            2.8           0 \r\n 1986          251           19.993        20.6          5.6           0 \r\n 1986          252           14.343        22.2          12.8          0 \r\n 1986          253           9.776         27.8          18.9          7.87 \r\n 1986          254           13.946        27.2          12.8          0.25 \r\n 1986          255           19.687        24.4          5.6           0 \r\n 1986          256           13.41         24.4          7.8           0 \r\n 1986          257           7.644         17.2          7.8           23.88 \r\n 1986          258           6.087         15            7.2           11.18 \r\n 1986          259           5.618         12.8          9.4           0.76 \r\n 1986          260           13.483        24.4          11.7          0 \r\n 1986          261           9.894         23.9          12.2          0.76 \r\n 1986          262           9.197         22.2          11.1          18.03 \r\n 1986          263           10.644        23.9          12.2          7.87 \r\n 1986          264           8.571         26.7          18.9          0 \r\n 1986          265           10.696        26.7          14.4          7.62 \r\n 1986          266           13.85         21.7          10            0.51 \r\n 1986          267           8.434         22.2          13.9          1.78 \r\n 1986          268           10.202        26.7          14.4          0 \r\n 1986          269           14.302        27.8          16.7          1.27 \r\n 1986          270           15.921        27.8          10.6          2.54 \r\n 1986          271           16.46         25            10            4.06 \r\n 1986          272           13.917        21.7          11.1          0 \r\n 1986          273           13.138        27.8          11.7          1.27 \r\n 1986          274           15.527        25            7.2           0 \r\n 1986          275           12.371        20            10            0.76 \r\n 1986          276           5.001         14.4          10            15.75 \r\n 1986          277           8.091         15            5             16 \r\n 1986          278           11.516        15            6.7           0 \r\n 1986          279           15.915        19.4          1.1           0 \r\n 1986          280           15.01         25.6          8.3           0 \r\n 1986          281           14.112        25            6.1           0 \r\n 1986          282           9.411         13.9          2.2           1.27 \r\n 1986          283           11.828        13.3          3.9           0 \r\n 1986          284           8.447         12.8          2.2           20.32 \r\n 1986          285           4.287         3.3          -0.6           5.33 \r\n 1986          286           9.623         6.1          -3.3           0 \r\n 1986          287           13.247        12.2         -4.4           0 \r\n 1986          288           12.634        12.2         -2.2           0 \r\n 1986          289           13.501        21.1          1.7           0 \r\n 1986          290           12.89         21.1          3.9           0 \r\n 1986          291           12.03         19.4          2.8           0 \r\n 1986          292           12.287        23.9          5.6           0 \r\n 1986          293           11.922        23.9          10            0 \r\n 1986          294           11.09         23.3          8.3           0 \r\n 1986          295           6.027         19.4          10            5.59 \r\n 1986          296           3.134         14.4          9.4           0.76 \r\n 1986          297           4.18          14.4          7.8           0 \r\n 1986          298           2.986         11.1          7.8           0 \r\n 1986          299           5.562         13.9          7.8           0 \r\n 1986          300           11.123        22.2          3.3           0 \r\n 1986          301           10.433        20            6.7           0 \r\n 1986          302           10.902        14.4         -1.1           0 \r\n 1986          303           9.406         16.1          3.9           0 \r\n 1986          304           7.664         13.9          5.6           2.29 \r\n 1986          305           8.051         5.6          -3.9           0 \r\n 1986          306           9.316         9.4          -6.7           0 \r\n 1986          307           8.856         11.7          0.6           0 \r\n 1986          308           8.885         6.7          -6.1           0 \r\n 1986          309           9.568         13.3         -3.3           0 \r\n 1986          310           8.911         15            3.3           0 \r\n 1986          311           7.671         13.3          2.8           1.02 \r\n 1986          312           6.032         9.4          -3.9           10.16 \r\n 1986          313           6.143         1.1          -6.1           0 \r\n 1986          314           5.808        -2.8          -12.2          2.54 \r\n 1986          315           7.852        -6.1          -24.4          0 \r\n 1986          316           8.626        -6.7          -17.8          0 \r\n 1986          317           8.626        -7.2          -22.2          0 \r\n 1986          318           8.211         0.6          -11.1          0 \r\n 1986          319           7.226        -0.6          -8.9           0 \r\n 1986          320           8.454         6.1          -8.3           0 \r\n 1986          321           6.394         4.4          -2.8           2.03 \r\n 1986          322           4.986        -2.8          -9.4           7.11 \r\n 1986          323           8.046         0            -14.4          0 \r\n 1986          324           6.329         0            -5.6           2.03 \r\n 1986          325           8.904         5.6          -9.4           0 \r\n 1986          326           6.222         6.7           0             0 \r\n 1986          327           5.521         1.7          -5.6           0 \r\n 1986          328           7.857         8.9          -6.7           0 \r\n 1986          329           6.901         10            0             0 \r\n 1986          330           7.459         6.7          -5.6           0 \r\n 1986          331           7.459         10           -3.9           0 \r\n 1986          332           7.775         12.2         -1.1           0 \r\n 1986          333           6.934         8.9           0             0 \r\n 1986          334           3.223         3.3          -0.6           0 \r\n 1986          335           1.975         0.6          -1.7           0 \r\n 1986          336           3.638         2.8          -2.8           1.02 \r\n 1986          337           4.678         1.7          -3.3           0 \r\n 1986          338           5.302        -1.1          -9.4           0 \r\n 1986          339           7.405         4.4          -10.6          0 \r\n 1986          340           6.48          2.2          -7.8           0 \r\n 1986          341           4.731        -0.6          -6.1           0 \r\n 1986          342           3.497        -0.6          -5.6           0.51 \r\n 1986          343           7.097        -1.7          -14.4          0 \r\n 1986          344           6.171        -8.9          -18.3          0 \r\n 1986          345           7.326        -0.6          -12.2          0 \r\n 1986          346           7.122        -6.7          -15            0 \r\n 1986          347           7.427        -8.9          -20            0 \r\n 1986          348           7.427         5.6          -9.4           0 \r\n 1986          349           6.308         1.7          -6.1           0 \r\n 1986          350           6.512         2.8          -7.2           0 \r\n 1986          351           5.596         0.6          -7.2           0 \r\n 1986          352           6.41          3.9          -8.3           0 \r\n 1986          353           6.715         3.3          -6.7           0 \r\n 1986          354           6.613         1.7          -8.9           0 \r\n 1986          355           6.817        -0.6          -10.6          0 \r\n 1986          356           4.884         0            -6.1           0 \r\n 1986          357           4.273         1.1          -5             0 \r\n 1986          358           5.698         0            -5.6           0 \r\n 1986          359           6.613         2.8          -7.8           0 \r\n 1986          360           7.326         2.2          -7.8           0 \r\n 1986          361           5.494         0.6          -4.4           0 \r\n 1986          362           4.172         5            -3.9           0 \r\n 1986          363           4.578         3.9          -5             0 \r\n 1986          364           5.901         3.3          -6.7           0 \r\n 1986          365           5.863         3.9          -5.6           0 \r\n 1987          1             5.348        -0.6          -7.8           0 \r\n 1987          2             7.097         0.6          -10.6          0 \r\n 1987          3             5.348         1.7          -2.2           0 \r\n 1987          4             5.657         4.4          -5             0 \r\n 1987          5             4.834         2.8          -3.9           0 \r\n 1987          6             2.16          2.2          -0.6           2.79 \r\n 1987          7             1.975        -0.6          -4.4           0 \r\n 1987          8             6.133         0            -11.1          0 \r\n 1987          9             5.925        -2.2          -9.4           0 \r\n 1987          10            4.782        -4.4          -8.9           0 \r\n 1987          11            8.42          4.4          -14.4          0 \r\n 1987          12            7.88          11.1         -2.8           0 \r\n 1987          13            7.564         12.2          1.7           0 \r\n 1987          14            7.67          8.9          -2.2           0 \r\n 1987          15            8.706         1.7          -15.6          0 \r\n 1987          16            7.22         -6.7          -17.2          0 \r\n 1987          17            5.627        -5.6          -11.1          0 \r\n 1987          18            8.494        -2.8          -16.1          0 \r\n 1987          19            8.26         -1.1          -11.1          0 \r\n 1987          20            9.011        -1.7          -16.1          0 \r\n 1987          21            8.582         2.8          -10            2.03 \r\n 1987          22            9.321        -2.2          -16.1          0 \r\n 1987          23            9.971        -12.8         -28.9          0 \r\n 1987          24            9.321        -5.6          -18.9          0 \r\n 1987          25            7.226        -3.9          -11.7          0 \r\n 1987          26            8.102         1.1          -8.9           0 \r\n 1987          27            8.102         4.4          -6.1           0 \r\n 1987          28            10.064        2.8          -9.4           0 \r\n 1987          29            8.626         6.1          -2.2           0 \r\n 1987          30            7.852         5            -3.3           0 \r\n 1987          31            10.388        11.1         -2.8           0 \r\n 1987          32            9.869         11.7         -2.8           0 \r\n 1987          33            9.43          10.6          3.3           0 \r\n 1987          34            9.966         3.3          -10            0 \r\n 1987          35            8.874         4.4          -8.3           0 \r\n 1987          36            7.034         4.4          -1.7           0 \r\n 1987          37            10.389        11.7         -6.1           0 \r\n 1987          38            11.582        17.2         -5             0 \r\n 1987          39            11.145        12.2         -6.7           0 \r\n 1987          40            11.032        8.9          -8.9           0 \r\n 1987          41            11.032        10           -6.1           0 \r\n 1987          42            11.805        13.9         -3.9           0 \r\n 1987          43            10.914        13.3         -1.7           0 \r\n 1987          44            10.803        12.2         -3.9           0 \r\n 1987          45            10.904        10.6         -6.7           0 \r\n 1987          46            6.633         0.6          -5.6           0 \r\n 1987          47            9.758         1.7          -11.1          0 \r\n 1987          48            11.687        2.8          -11.7          0 \r\n 1987          49            12.482        4.4          -10            0 \r\n 1987          50            12.139        6.1          -6.7           0 \r\n 1987          51            11.326        7.2          -3.3           0 \r\n 1987          52            12.25         8.9          -5.6           0 \r\n 1987          53            10.496        3.9          -7.2           0 \r\n 1987          54            13.528        9.4          -8.9           0 \r\n 1987          55            12.708        10           -6.1           0 \r\n 1987          56            10.237        7.8          -5.6           0 \r\n 1987          57            11.397        11.7         -2.8           0 \r\n 1987          58            9.142         10.6         -1.1           0.51 \r\n 1987          59            3.473         3.3          -0.6           7.87 \r\n 1987          60            3.054         1.1          -2.2           2.03 \r\n 1987          61            9.837         6.7          -5.6           0 \r\n 1987          62            12.108        6.7          -11.1          0 \r\n 1987          63            12.213        16.7          1.1           0 \r\n 1987          64            12.976        18.9          0             0 \r\n 1987          65            13.088        22.2          3.3           0 \r\n 1987          66            13.088        23.3          5             0 \r\n 1987          67            13.976        21.1         -2.2           0 \r\n 1987          68            8.985         2.8          -7.8           0 \r\n 1987          69            9.732        -0.6          -10.6          0 \r\n 1987          70            10.963        9.4          -4.4           0 \r\n 1987          71            10.04         7.8          -2.2           0 \r\n 1987          72            13.311        18.9         -2.2           0 \r\n 1987          73            13.763        17.8          0.6           0 \r\n 1987          74            7.848         4.4          -1.7           0 \r\n 1987          75            3.785         6.1          -1.1           0 \r\n 1987          76            4.129         3.3           0             4.06 \r\n 1987          77            3.816         3.3           1.7           12.45 \r\n 1987          78            7.631         12.8          0.6           1.52 \r\n 1987          79            13.172        17.2          5             0 \r\n 1987          80            10.491        16.7          3.9           3.81 \r\n 1987          81            16.098        16.7          1.1           0 \r\n 1987          82            10.423        17.2          5.6           74.42 \r\n 1987          83            5.922         10            4.4           5.59 \r\n 1987          84            6.208         9.4           3.3           6.86 \r\n 1987          85            5.492         3.3          -0.6           0 \r\n 1987          86            13.476        11.7         -1.7           0 \r\n 1987          87            14.68         10.6         -7.8           7.11 \r\n 1987          88            10.065       -1.1          -9.4           0 \r\n 1987          89            17.098        1.7          -10.6          0 \r\n 1987          90            20.041        11.7         -8.3           0 \r\n 1987          91            14.819        10.6         -0.6           0 \r\n 1987          92            17.443        4.4          -7.8           0 \r\n 1987          93            20.433        8.3          -7.2           0 \r\n 1987          94            21.091        13.3         -2.2           0 \r\n 1987          95            22.096        18.3          0.6           0 \r\n 1987          96            22.39         19.4          1.1           0 \r\n 1987          97            22.263        23.3          5             0 \r\n 1987          98            22.685        24.4          4.4           0 \r\n 1987          99            21.921        24.4          3.9           0 \r\n 1987          100           19.388        16.7         -1.7           0 \r\n 1987          101           12.968        11.7          0             0 \r\n 1987          102           18.497        19.4          2.2           0 \r\n 1987          103           12.159        18.9          4.4           9.91 \r\n 1987          104           5.342         12.8          7.2           0.25 \r\n 1987          105           9.903         18.3          6.1           0 \r\n 1987          106           20.475        24.4          5             0 \r\n 1987          107           20.738        28.3          10.6          0 \r\n 1987          108           20.094        29.4          12.2          0 \r\n 1987          109           18.64         31.1          16.1          0 \r\n 1987          110           18.641        30            12.8          2.03 \r\n 1987          111           13.981        12.8          3.3           0 \r\n 1987          112           7.912         12.2          3.9           2.29 \r\n 1987          113           15.02         22.8          0             1.27 \r\n 1987          114           20.393        23.3          5.6           0 \r\n 1987          115           19.043        27.8          10            0 \r\n 1987          116           20.265        30.6          11.1          0 \r\n 1987          117           20.809        31.7          8.3           0 \r\n 1987          118           22.461        29.4          5             0 \r\n 1987          119           20.406        30            12.2          0 \r\n 1987          120           21.776        26.1          3.9           0 \r\n 1987          121           20.093        33.9          8.9           0 \r\n 1987          122           16.581        33.3          11.1          5.33 \r\n 1987          123           11.99         25            11.1          0 \r\n 1987          124           16.999        21.1          7.8           0 \r\n 1987          125           18.949        22.8          7.2           0 \r\n 1987          126           22.005        26.7          7.2           0 \r\n 1987          127           24.145        26.7          7.2           0 \r\n 1987          128           24.309        28.3          8.9           0 \r\n 1987          129           22.309        32.8          13.3          0 \r\n 1987          130           15.489        32.8          16.7          0 \r\n 1987          131           18.742        32.8          17.2          0 \r\n 1987          132           24.014        28.3          7.2           0 \r\n 1987          133           23.39         33.9          13.9          0.51 \r\n 1987          134           21.831        33.9          13.3          0.25 \r\n 1987          135           22.604        30            11.7          0 \r\n 1987          136           22.604        32.8          13.9          0 \r\n 1987          137           22.447        33.9          15.6          0 \r\n 1987          138           21.806        33.3          11.7          1.78 \r\n 1987          139           19.91         27.8          11.1          0 \r\n 1987          140           13.747        28.9          17.2          5.59 \r\n 1987          141           16.064        30            7.8           16.76 \r\n 1987          142           13.838        10            3.3           0.25 \r\n 1987          143           15.11         18.9          6.7           0 \r\n 1987          144           13.128        18.9          11.1          1.27 \r\n 1987          145           7.844         15.6          9.4           14.48 \r\n 1987          146           12.967        25.6          12.8          15.75 \r\n 1987          147           9.285         23.3          15.6          6.1 \r\n 1987          148           12.085        22.8          14.4          0 \r\n 1987          149           14.341        27.2          17.2          0 \r\n 1987          150           18.047        27.2          14.4          0 \r\n 1987          151           21.245        28.9          13.9          0 \r\n 1987          152           19.104        28.9          13.9          1.02 \r\n 1987          153           22.126        26.7          11.1          0 \r\n 1987          154           21.962        22.2          7.8           0 \r\n 1987          155           26.388        28.3          8.9           0 \r\n 1987          156           25.237        32.2          15            0 \r\n 1987          157           23.093        33.9          16.1          0 \r\n 1987          158           21.773        36.1          20            0 \r\n 1987          159           21.938        35            18.3          0 \r\n 1987          160           18.804        27.8          16.7          0 \r\n 1987          161           12.206        25.6          12.8          16.51 \r\n 1987          162           14.021        30.6          17.2          7.11 \r\n 1987          163           23.904        34.4          18.3          0 \r\n 1987          164           24.9          36.7          19.4          0 \r\n 1987          165           25.232        36.7          18.3          0 \r\n 1987          166           25.896        36.1          17.2          0 \r\n 1987          167           22.078        33.3          20.6          0 \r\n 1987          168           19.256        32.2          21.1          0 \r\n 1987          169           23.074        33.3          18.9          0 \r\n 1987          170           20.252        31.7          18.3          12.19 \r\n 1987          171           13.28         27.2          18.3          6.35 \r\n 1987          172           21.414        30.6          17.8          2.54 \r\n 1987          173           24.236        32.8          18.3          0 \r\n 1987          174           22.078        32.8          18.9          0 \r\n 1987          175           24.07         30            15.6          1.78 \r\n 1987          176           16.766        26.7          14.4          25.15 \r\n 1987          177           24.402        26.7          10.6          0 \r\n 1987          178           26.726        28.3          8.9           0 \r\n 1987          179           25.896        32.8          15.6          0 \r\n 1987          180           22.576        32.8          15.6          1.27 \r\n 1987          181           24.568        26.1          11.7          0 \r\n 1987          182           25.134        28.3          13.9          0 \r\n 1987          183           24.68         30.6          16.1          0 \r\n 1987          184           26.647        30.6          13.9          0 \r\n 1987          185           22.712        28.3          15.6          0 \r\n 1987          186           15.201        28.9          17.8          68.83 \r\n 1987          187           16.095        31.7          17.2          5.08 \r\n 1987          188           17.884        31.1          15.6          26.67 \r\n 1987          189           17.948        28.9          19.4          0 \r\n 1987          190           14.216        28.3          17.2          6.35 \r\n 1987          191           15.105        30.6          17.8          3.3 \r\n 1987          192           13.861        30.6          20            0 \r\n 1987          193           13.861        27.2          16.1          7.62 \r\n 1987          194           22.423        23.3          9.4           0 \r\n 1987          195           16.597        26.7          13.9          4.57 \r\n 1987          196           18.362        27.2          13.3          2.54 \r\n 1987          197           23.836        31.1          16.1          0 \r\n 1987          198           19.998        31.1          22.2          0 \r\n 1987          199           13.683        30            19.4          20.83 \r\n 1987          200           15.788        32.2          18.9          3.81 \r\n 1987          201           16.731        32.8          22.8          0 \r\n 1987          202           16.731        32.8          18.3          55.88 \r\n 1987          203           14.117        31.1          20.6          0 \r\n 1987          204           19.345        32.2          20            0 \r\n 1987          205           17.834        31.7          21.1          0 \r\n 1987          206           22.855        33.9          18.9          0 \r\n 1987          207           21.816        35            22.8          0 \r\n 1987          208           19.953        34.4          22.2          0 \r\n 1987          209           20.641        35            22.2          0 \r\n 1987          210           20.504        35            22.8          0 \r\n 1987          211           22.042        35.6          22.2          0 \r\n 1987          212           21.016        35.6          22.8          0 \r\n 1987          213           21.153        34.4          22.2          0 \r\n 1987          214           21.894        34.4          21.7          0 \r\n 1987          215           15.445        33.9          19.4          6.86 \r\n 1987          216           21.748        26.1          13.9          0 \r\n 1987          217           23.434        27.8          13.9          0 \r\n 1987          218           19.926        28.3          20            0 \r\n 1987          219           14.4          27.8          18.3          2.03 \r\n 1987          220           12.141        26.1          18.3          7.62 \r\n 1987          221           24.448        30            11.7          3.3 \r\n 1987          222           24.281        31.1          17.8          0 \r\n 1987          223           20.646        31.1          17.8          0 \r\n 1987          224           13.709        31.1          17.8          3.56 \r\n 1987          225           18.371        27.2          17.8          0 \r\n 1987          226           18.371        28.9          18.3          0 \r\n 1987          227           13.683        32.2          20            0 \r\n 1987          228           14.986        31.7          17.8          48.26 \r\n 1987          229           20.057        26.1          14.4          0 \r\n 1987          230           15.366        23.9          11.7          18.29 \r\n 1987          231           19.756        24.4          12.2          5.84 \r\n 1987          232           14.295        26.1          13.3          0 \r\n 1987          233           19.434        29.4          17.2          0 \r\n 1987          234           22.007        29.4          12.8          0 \r\n 1987          235           21.529        21.7          10.6          0 \r\n 1987          236           18.842        21.7          11.7          0 \r\n 1987          237           9.342         17.8          8.9           8.38 \r\n 1987          238           5.345         16.1          12.8          0.51 \r\n 1987          239           12.576        20.6          13.3          0 \r\n 1987          240           18.883        22.2          10            0 \r\n 1987          241           22.472        28.9          12.8          0 \r\n 1987          242           21.689        28.3          11.1          0 \r\n 1987          243           22.153        22.8          6.1           0 \r\n 1987          244           22.144        28.9          10.6          0 \r\n 1987          245           21.798        28.3          9.4           0 \r\n 1987          246           19.561        26.1          11.1          0 \r\n 1987          247           19.413        29.4          10            0 \r\n 1987          248           16.033        28.9          17.2          5.08 \r\n 1987          249           13.532        25.6          14.4          2.54 \r\n 1987          250           13.868        26.1          12.2          3.3 \r\n 1987          251           19.558        23.3          7.2           0.25 \r\n 1987          252           17.53         23.9          11.1          0 \r\n 1987          253           17.684        24.4          10.6          0.51 \r\n 1987          254           19.121        23.3          7.2           0 \r\n 1987          255           17.262        21.1          7.8           0.76 \r\n 1987          256           12.126        22.8          10            0.76 \r\n 1987          257           15.43         22.2          12.8          10.16 \r\n 1987          258           8.777         18.9          12.8          6.6 \r\n 1987          259           4.916         18.9          15.6          34.29 \r\n 1987          260           7.444         21.7          13.9          2.54 \r\n 1987          261           14.91         21.7          8.9           0 \r\n 1987          262           10.869        18.9          6.7           0.51 \r\n 1987          263           13.962        17.8          6.7           0.76 \r\n 1987          264           14.792        18.9          6.1           0 \r\n 1987          265           16.319        21.7          5.6           0 \r\n 1987          266           17.416        26.7          7.8           0 \r\n 1987          267           17.004        27.2          10.6          0 \r\n 1987          268           17.14         26.7          7.8           0 \r\n 1987          269           16.191        30.6          13.9          0 \r\n 1987          270           14.032        30.6          17.8          0 \r\n 1987          271           14.051        28.9          16.7          0 \r\n 1987          272           14.051        22.2          5             0 \r\n 1987          273           14.2          21.7          5.6           0 \r\n 1987          274           14.731        26.7          7.8           0 \r\n 1987          275           16.845        26.1          0.6           0 \r\n 1987          276           15.792        18.9         -0.6           0 \r\n 1987          277           15.79         28.3          6.1           0 \r\n 1987          278           12.81         27.2          10            0 \r\n 1987          279           12.292        15            2.2           0 \r\n 1987          280           14.24         13.3         -3.9           0 \r\n 1987          281           14.368        20.6          2.8           0 \r\n 1987          282           14.117        20           -0.6           0 \r\n 1987          283           10.938        6.7          -6.1           0 \r\n 1987          284           13.742        13.3         -5             0 \r\n 1987          285           13.868        20            0             0 \r\n 1987          286           13.872        23.9          5             0 \r\n 1987          287           8.748         22.2          7.2           5.08 \r\n 1987          288           2.849         11.1          6.1           5.59 \r\n 1987          289           3.716         9.4           3.3           2.54 \r\n 1987          290           9.33          16.1          5.6           0.25 \r\n 1987          291           9.698         15            1.1           0 \r\n 1987          292           9.367         10.6         -0.6           0 \r\n 1987          293           8.759         8.9          -2.8           0 \r\n 1987          294           8.92          6.7          -6.7           0 \r\n 1987          295           8.8           11.1          0             0 \r\n 1987          296           11.09         11.7         -3.3           0 \r\n 1987          297           10.152        11.7         -5             0 \r\n 1987          298           7.764         7.8           1.1           0 \r\n 1987          299           6.627         12.8          6.7           0.51 \r\n 1987          300           8.757         11.1         -2.2           0 \r\n 1987          301           10.082        13.3         -2.2           0 \r\n 1987          302           10.902        21.1         -0.6           0 \r\n 1987          303           10.451        20            6.1           0 \r\n 1987          304           8.593         16.1          3.3           2.54 \r\n 1987          305           3.105         13.9          7.8           0 \r\n 1987          306           4.371         17.2          11.1          0 \r\n 1987          307           4.371         16.7          11.7          0.25 \r\n 1987          308           7.062         16.7          3.3           0 \r\n 1987          309           9.341         10           -4.4           0 \r\n 1987          310           8.122         16.1          3.9           0 \r\n 1987          311           8.009         14.4          2.8           0 \r\n 1987          312           7.149         12.8          0.6           0.76 \r\n 1987          313           8.489         6.1          -7.2           0 \r\n 1987          314           9.048         10           -5             0 \r\n 1987          315           8.737         12.2         -3.3           0 \r\n 1987          316           9.069         15.6         -1.1           0 \r\n 1987          317           7.741         13.3          3.9           0 \r\n 1987          318           8.211         15.6         -0.6           0 \r\n 1987          319           5.912         15            8.9           0.76 \r\n 1987          320           4.227         13.3         -0.6           6.1 \r\n 1987          321           4.66          3.3          -1.1           0.51 \r\n 1987          322           6.503         7.2          -7.2           0 \r\n 1987          323           6.329         7.2          -2.2           0 \r\n 1987          324           7.187         2.8          -9.4           0 \r\n 1987          325           7.509         11.1         -5             0 \r\n 1987          326           7.08          12.8          1.1           0 \r\n 1987          327           6.37          10.6         -2.2           0 \r\n 1987          328           6.689         6.7          -6.1           0 \r\n 1987          329           4.778         3.3          -5.6           0 \r\n 1987          330           2.311         2.8           0             0 \r\n 1987          331           1.996         1.1          -1.7           0 \r\n 1987          332           1.366         0            -3.3           0 \r\n 1987          333           1.366         0            -2.2           12.7 \r\n 1987          334           2.183        -1.7          -5.6           0 \r\n 1987          335           2.599        -2.2          -6.1           0 \r\n 1987          336           2.911        -2.2          -7.8           0 \r\n 1987          337           3.534        -1.1          -6.1           0 \r\n 1987          338           6.237        -1.1          -12.2          0 \r\n 1987          339           5.657         1.1          -7.2           0 \r\n 1987          340           2.571         1.1           0             0 \r\n 1987          341           1.029         0.6          -1.1           0 \r\n 1987          342           1.44          2.8           0             2.03 \r\n 1987          343           2.777         3.3          -1.7           2.29 \r\n 1987          344           6.685         7.2          -3.9           0 \r\n 1987          345           5.901         7.2          -0.6           0 \r\n 1987          346           4.782         5.6          -2.2           0 \r\n 1987          347           3.256         0            -3.9           0 \r\n 1987          348           4.07         -1.7          -6.7           0 \r\n 1987          349           4.578        -2.2          -7.8           0 \r\n 1987          350           7.02         -2.2          -14.4          0 \r\n 1987          351           7.427        -0.6          -11.7          0 \r\n 1987          352           7.122         3.9          -5.6           0 \r\n 1987          353           5.901         1.7          -3.3           0 \r\n 1987          354           7.02          2.2          -8.3           0 \r\n 1987          355           7.631         8.3          -8.3           0 \r\n 1987          356           7.224         3.9          -6.1           0 \r\n 1987          357           5.392         2.2          -2.2           0 \r\n 1987          358           6.613         1.1          -8.3           0 \r\n 1987          359           7.122        -6.7          -13.9          0 \r\n 1987          360           7.936         0.6          -15            0 \r\n 1987          361           5.392        -2.2          -9.4           1.52 \r\n 1987          362           2.544        -2.2          -6.1           12.7 \r\n 1987          363           5.087        -3.9          -11.1          0 \r\n 1987          364           6.206         0            -7.8           0 \r\n 1987          365           8.125         0            -15            0 \r\n 1988          1             8.385        -6.124        -20.717        0 \r\n 1988          2             8.388        -6.073        -15.771        0 \r\n 1988          3             6.962        -11.622       -22.535        0 \r\n 1988          4             8.491        -18.565       -28.909        0 \r\n 1988          5             8.601        -18.109       -31.864        0 \r\n 1988          6             7.277        -11.84        -26.356        0 \r\n 1988          7             8.154        -11.888       -22.119        0 \r\n 1988          8             8.016        -14.078       -28.441        0 \r\n 1988          9             8.8          -9.77         -24.033        0 \r\n 1988          10            8.559        -2.626        -12.328        0 \r\n 1988          11            6.248         0.036        -16.208        0 \r\n 1988          12            6.191        -10.832       -23.732        0.76 \r\n 1988          13            9.004        -3.46         -19.216        0 \r\n 1988          14            8.008         1.806        -10.699        0 \r\n 1988          15            7.748         4.367        -3.693         0 \r\n 1988          16            7.031         4.556        -7.535         0 \r\n 1988          17            7.824         2.446        -9.079         0 \r\n 1988          18            4.847         0.551        -3.674         0 \r\n 1988          19            3.315        -1.269        -12.364        17.27 \r\n 1988          20            7.989        -8.997        -21.934        0 \r\n 1988          21            8.641        -3.935        -18.868        0 \r\n 1988          22            6.366        -1.401        -18.49         0 \r\n 1988          23            7.086         0.127        -17.609        5.08 \r\n 1988          24            6.722        -7.568        -23.045        0 \r\n 1988          25            10.149       -14.377       -28.285        0 \r\n 1988          26            7.674        -2.581        -18.273        0 \r\n 1988          27            10.197        0.152        -9.534         0 \r\n 1988          28            10.476        3.621        -4.074         0 \r\n 1988          29            9.093         5.567        -0.951         0 \r\n 1988          30            9.097         2.292        -13.051        0 \r\n 1988          31            8.384        -12.128       -21.862        0 \r\n 1988          32            8.669        -11.828       -24.896        0.25 \r\n 1988          33            8.011        -10.008       -19.344        0 \r\n 1988          34            7.556        -14.289       -20.637        0 \r\n 1988          35            10.857       -16.91        -26.785        0 \r\n 1988          36            11.82        -11.412       -24.41         0 \r\n 1988          37            11.019       -7.221        -16.888        0 \r\n 1988          38            11.771       -2.802        -15.882        0 \r\n 1988          39            9.668        -4.9          -17.236        0 \r\n 1988          40            7.296        -13.202       -22.573        1.02 \r\n 1988          41            10.671       -18.754       -32.67         7.62 \r\n 1988          42            13.427       -12.579       -29.229        0 \r\n 1988          43            11.486       -3.359        -13.042        0.51 \r\n 1988          44            12.174       -2.799        -11.085        0 \r\n 1988          45            5.107        -4.64         -20.847        0 \r\n 1988          46            13.649        2.12         -9.686         0 \r\n 1988          47            13.383        4.233        -8.279         5.08 \r\n 1988          48            14.497        6.665        -4.841         0 \r\n 1988          49            14.054        5.832        -4.613         0 \r\n 1988          50            10.195        1.042        -15.499        0 \r\n 1988          51            12.357        4.247        -13.661        0 \r\n 1988          52            12.841        6.571        -3.598         0 \r\n 1988          53            11.659       -0.424        -10.071        0 \r\n 1988          54            10.802       -3.216        -12.293        0 \r\n 1988          55            15.909        3.018        -13.007        0 \r\n 1988          56            15.925        8.496        -4.5           0 \r\n 1988          57            16.302        9.416        -3.925         0 \r\n 1988          58            16.277        6.91         -0.878         0 \r\n 1988          59            14.599        8.443        -3.851         0 \r\n 1988          60            16.829        11.092       -2.588         0 \r\n 1988          61            14.521        6.306        -5.484         0 \r\n 1988          62            12.658        1.943        -9.542         0 \r\n 1988          63            15.304        3.106        -8.783         0 \r\n 1988          64            12.459        6.323        -5.769         0 \r\n 1988          65            14.894        13.474       -2.523         0 \r\n 1988          66            15.816        13.263        0.056         0 \r\n 1988          67            4.877         9.403        -0.532         0 \r\n 1988          68            5.805         8.764        -5.473         0 \r\n 1988          69            17.064        14.101       -0.737         0 \r\n 1988          70            15.818        16.294        0.203         0 \r\n 1988          71            11.503        8.258        -7.32          0 \r\n 1988          72            12.445       -1.352        -12.113        0 \r\n 1988          73            17.931        0.449        -12.667        0 \r\n 1988          74            18.718        0.114        -11.875        0 \r\n 1988          75            18.187        3.363        -8.052         0 \r\n 1988          76            16.88         5.326        -5.866         0 \r\n 1988          77            17.529        6.194        -6.783         0 \r\n 1988          78            17.484        9.532        -5.008         0 \r\n 1988          79            16.951        13.492       -4.597         0 \r\n 1988          80            18.141        13.816       -3.444         0 \r\n 1988          81            18.572        22.352       -0.015         0 \r\n 1988          82            17.836        20.782       -2.776         0 \r\n 1988          83            17.81         13.406        3.214         0 \r\n 1988          84            4.819         14.78        -0.051         2.79 \r\n 1988          85            18.211        11.691       -2.773         0 \r\n 1988          86            21.206        21.489       -2.52          0 \r\n 1988          87            19.931        22.068        3.318         0 \r\n 1988          88            6.012         8.206        -3.034         5.08 \r\n 1988          89            20.728        14.674       -3.834         0 \r\n 1988          90            15.037        14.552        1.747         0 \r\n 1988          91            14.97         11.077       -1.437         0 \r\n 1988          92            8.651         10.015        2.359         16.281 \r\n 1988          93            4.412         10.473        3.144         11.557 \r\n 1988          94            12.338        19.584        4.009         0 \r\n 1988          95            20.706        19.674        6.206         0 \r\n 1988          96            9.514         16.297        0.114         0 \r\n 1988          97            22.775        26.781        4.345         0 \r\n 1988          98            23.587        29.864        10.463        0 \r\n 1988          99            21.612        25.352        0.483         0 \r\n 1988          100           19.058        12.548       -2.434         0 \r\n 1988          101           20.973        15.44        -2.329         0 \r\n 1988          102           24.447        20.494        0.643         0 \r\n 1988          103           24.292        20.304        3.182         0 \r\n 1988          104           18.018        13.092       -3.599         0 \r\n 1988          105           24.703        12.978       -5.382         0 \r\n 1988          106           24.91         19.212       -2.636         0 \r\n 1988          107           24.075        18.94         2.848         0 \r\n 1988          108           21.923        12.201       -5.486         0 \r\n 1988          109           25.513        15.321       -6.205         0 \r\n 1988          110           25.454        16.414        2.519         0 \r\n 1988          111           24.359        13.262        0.418         0 \r\n 1988          112           8.345         4.279        -0.208         6.756 \r\n 1988          113           5.275         9.091        -0.091         5.715 \r\n 1988          114           22.611        18.436       -1.149         0 \r\n 1988          115           24.587        19.372        2.134         0 \r\n 1988          116           19.766        12.363        0.382         10.744 \r\n 1988          117           12.234        11.322       -0.764         8.407 \r\n 1988          118           26.02         16.643       -0.046         0 \r\n 1988          119           27.055        21.848        3.782         0 \r\n 1988          120           25.686        23.837        8.231         0 \r\n 1988          121           21.816        25.167        10.647        0 \r\n 1988          122           23.357        25.866        12.976        0 \r\n 1988          123           19.898        24.722        10.81         0 \r\n 1988          124           10.71         21.888        4.932         0 \r\n 1988          125           25.936        25.023        6.887         0 \r\n 1988          126           26.368        25.784        9.193         0 \r\n 1988          127           11.61         25.021        12.715        3.531 \r\n 1988          128           23.673        26.389        11.053        3.785 \r\n 1988          129           20.469        20.539        9.142         4.902 \r\n 1988          130           27.759        24.354        7.199         0 \r\n 1988          131           26.042        27.598        7.887         0 \r\n 1988          132           23.859        28.784        10.005        3.277 \r\n 1988          133           26.797        28.714        5.82          0 \r\n 1988          134           27.861        27.831        9.366         0 \r\n 1988          135           21.656        29.693        11.447        0 \r\n 1988          136           27.666        24.977        4.944         0 \r\n 1988          137           28.593        23.521        5             0 \r\n 1988          138           27.545        27.572        11.274        0 \r\n 1988          139           16.57         31.016        14.805        0 \r\n 1988          140           23.926        30.007        15.521        4.674 \r\n 1988          141           15.002        25.292        14.319        7.391 \r\n 1988          142           5.439         21.45         15.22         12.04 \r\n 1988          143           8.409         22.226        13.654        0 \r\n 1988          144           25.026        25.732        11.91         0 \r\n 1988          145           28.265        26.467        8.97          0 \r\n 1988          146           25.98         27.918        13.979        0 \r\n 1988          147           26.034        29.301        16.284        0 \r\n 1988          148           25.188        30.906        18.072        0 \r\n 1988          149           27.129        30.959        20.233        0 \r\n 1988          150           23.207        30.412        19.14         0 \r\n 1988          151           20.405        30.613        17.768        0 \r\n 1988          152           20.249        30.084        16.902        0 \r\n 1988          153           17.234        29.099        17.06         4.877 \r\n 1988          154           25.273        30.443        16.831        4.089 \r\n 1988          155           24.785        30.623        18.023        0 \r\n 1988          156           27.614        29.453        14.771        0 \r\n 1988          157           29.779        29.763        13.459        0 \r\n 1988          158           29.814        30.136        15            0 \r\n 1988          159           20.386        30.815        17.037        35.636 \r\n 1988          160           28.849        29.919        9.817         0 \r\n 1988          161           28.806        25.688        8.266         0 \r\n 1988          162           31.073        27.91         12.368        0 \r\n 1988          163           27.534        30.198        16.901        0 \r\n 1988          164           27.472        31.977        18.079        7.442 \r\n 1988          165           25.578        32.209        18.459        0 \r\n 1988          166           23.757        29.629        11.806        0 \r\n 1988          167           29.406        27.582        12.674        3.531 \r\n 1988          168           24.318        30.55         16.048        6.782 \r\n 1988          169           24.244        32.008        19.127        0 \r\n 1988          170           28.001        35.729        21.782        0 \r\n 1988          171           28.649        37.268        22.006        0 \r\n 1988          172           29.178        38.128        23.222        0 \r\n 1988          173           29.038        36.093        22.801        0 \r\n 1988          174           28.57         31.454        18.327        0 \r\n 1988          175           21.53         33.829        21.093        0 \r\n 1988          176           28.898        36.09         18.842        0 \r\n 1988          177           29.131        29.927        14.527        0 \r\n 1988          178           30.263        29.92         13.871        0 \r\n 1988          179           29.82         34.116        16.504        22.25 \r\n 1988          180           27.293        33.384        16.392        13.259 \r\n 1988          181           12.791        22.675        13.692        9.246 \r\n 1988          182           7.37          24.041        11.878        0 \r\n 1988          183           11.986        25.324        13.694        0 \r\n 1988          184           24.688        26.87         13.681        0 \r\n 1988          185           22.419        30.651        16.509        0 \r\n 1988          186           28.356        33.502        20.136        0 \r\n 1988          187           27.797        34.118        22.315        0 \r\n 1988          188           28.431        34.026        22.384        0 \r\n 1988          189           23.964        32.544        18.74         0 \r\n 1988          190           13.401        26.324        18.916        16.459 \r\n 1988          191           14.943        27.702        16.191        8.357 \r\n 1988          192           26.839        27.881        15.347        3.454 \r\n 1988          193           9.571         26.071        15.541        0 \r\n 1988          194           27.005        31.873        19.94         0 \r\n 1988          195           27.516        33.644        19.436        0 \r\n 1988          196           27.169        33.704        22.574        0 \r\n 1988          197           13.214        33.189        18.285        0 \r\n 1988          198           27.746        31.896        17.978        37.338 \r\n 1988          199           20.85         29.901        17.374        8.001 \r\n 1988          200           22.018        28.125        15.954        0 \r\n 1988          201           8.369         22.63         12.129        0 \r\n 1988          202           28.173        26.714        11.551        0 \r\n 1988          203           25.734        28.751        10.986        0 \r\n 1988          204           27.178        28.126        13.356        0 \r\n 1988          205           26.63         28.74         14.13         0 \r\n 1988          206           21.319        29.99         16.25         0 \r\n 1988          207           28.001        28.8          13.44         0 \r\n 1988          208           27.51         30.21         12.42         0 \r\n 1988          209           27.539        30.88         15.79         0 \r\n 1988          210           27.198        31.3          17.12         0 \r\n 1988          211           19.218        29.88         18.36         0 \r\n 1988          212           25.088        33.38         19.78         0 \r\n 1988          213           26.343        36.79         21.21         0 \r\n 1988          214           24.686        34.42         20.14         0 \r\n 1988          215           25.877        34.68         23.28         0 \r\n 1988          216           11.421        33.6          20.46         0 \r\n 1988          217           12.543        26            16.92         0 \r\n 1988          218           26.831        28.14         12.02         1.778 \r\n 1988          219           25.613        31.83         14.04         0 \r\n 1988          220           24.517        35.99         21.56         14.224 \r\n 1988          221           11.754        26.01         17.19         13.208 \r\n 1988          222           24.438        29.04         14.45         0 \r\n 1988          223           23.907        30.72         14.98         0 \r\n 1988          224           23.609        33.23         20.47         0 \r\n 1988          225           22.356        31.35         22.43         0 \r\n 1988          226           20.976        30.37         21.01         3.302 \r\n 1988          227           24.896        35.67         17.59         0 \r\n 1988          228           25.272        36.9          19.17         0 \r\n 1988          229           24.423        36.91         23.47         0 \r\n 1988          230           23.859        37.31         23.11         0 \r\n 1988          231           7.344         23.07         18.038        1.778 \r\n 1988          232           15.409        25.39         15.91         0.254 \r\n 1988          233           19.955        27.79         14.62         0.254 \r\n 1988          234           18.177        31.88         18.07         28.702 \r\n 1988          235           10.468        27.36         16.95         56.642 \r\n 1988          236           24.67         28.16         14.72         0 \r\n 1988          237           24.279        29.59         11.94         0 \r\n 1988          238           23.794        25.5          11.15         0 \r\n 1988          239           16.414        24.89         8.27          9.398 \r\n 1988          240           22.237        21.51         8.92          1.778 \r\n 1988          241           23.618        22.42         6.901         0 \r\n 1988          242           19.104        26.1          6.845         0 \r\n 1988          243           22.793        27.22         7.76          0 \r\n 1988          244           19.13         28.92         15.02         0 \r\n 1988          245           9.355         24.39         15.91         1.27 \r\n 1988          246           20.475        31.17         11.12         0 \r\n 1988          247           11.095        19.85         10.48         3.048 \r\n 1988          248           20.41         24.76         9.44          0 \r\n 1988          249           20.425        21.08         5.657         0 \r\n 1988          250           21.85         24.1          5.789         0 \r\n 1988          251           18.932        26.5          10.18         0 \r\n 1988          252           14.42         24.98         8.9           0 \r\n 1988          253           18.493        26.95         5.629         0 \r\n 1988          254           17.98         31.19         9.85          0 \r\n 1988          255           18.344        30.55         17.06         0 \r\n 1988          256           7.115         19.34         9             0 \r\n 1988          257           16.891        21.362        8.348         0 \r\n 1988          258           9.598         22.968        8.708         18.72 \r\n 1988          259           4.417         19.078        11.535        26.314 \r\n 1988          260           18.603        25.817        10.503        0 \r\n 1988          261           18.755        29.801        14.081        0 \r\n 1988          262           14.182        26.955        13.636        0 \r\n 1988          263           5.835         20.034        5.943         4.902 \r\n 1988          264           19.312        22.315        4.182         0 \r\n 1988          265           12.677        26.611        10.368        4.775 \r\n 1988          266           9.562         22.696        6.665         0 \r\n 1988          267           18.779        22.628        3.655         0 \r\n 1988          268           18.279        22.652        5.009         0 \r\n 1988          269           17.199        27.002        6.804         0 \r\n 1988          270           17.668        27.442        11.769        0 \r\n 1988          271           14.609        23.497        9.772         21.514 \r\n 1988          272           4.112         17.557        9.836         13.056 \r\n 1988          273           5.24          18.594        6.018         10.719 \r\n 1988          274           10.485        18.299        5.174         0 \r\n 1988          275           11.9          18.902        4.311         0 \r\n 1988          276           16.193        16.733        3.015         0 \r\n 1988          277           9.949         14.671        0.298         0 \r\n 1988          278           16.329        12.154       -3.036         0 \r\n 1988          279           16.077        13.077       -2.839         0 \r\n 1988          280           14.365        14.929        0.034         0 \r\n 1988          281           12.479        14.357       -0.739         0 \r\n 1988          282           12.7          18.105        2.036         0 \r\n 1988          283           15.015        20.894        2.809         0 \r\n 1988          284           15.3          18.01         4.628         0 \r\n 1988          285           14.964        15.02        -0.1           0 \r\n 1988          286           14.287        15.43        -0.046         0 \r\n 1988          287           13.835        20.21         3.676         0 \r\n 1988          288           13.623        22.83         7.685         0 \r\n 1988          289           10.544        25.48         8.27          0 \r\n 1988          290           10.877        17.67         6.538         1.27 \r\n 1988          291           1.903         13.68         0.659         3.3 \r\n 1988          292           11.181        14.41        -0.674         0 \r\n 1988          293           6.156         9.58         -2.574         0 \r\n 1988          294           2.554         9.25          4.275         1.02 \r\n 1988          295           12.853        12.38        -0.116         0 \r\n 1988          296           11.246        15.93        -2.17          0 \r\n 1988          297           12.383        8.39         -3.8           0 \r\n 1988          298           11.334        13.08        -4.241         0 \r\n 1988          299           12.696        8.8          -4.136         0 \r\n 1988          300           11.894        15.55        -5.712         0 \r\n 1988          301           8.001         9.92         -2.175         0 \r\n 1988          302           12.048        5.741        -7.28          0 \r\n 1988          303           7.865         4.845        -4.74          0 \r\n 1988          304           11.427        8.58         -7.88          0 \r\n 1988          305           11.467        17.36         1.262         0 \r\n 1988          306           10.774        12.06        -0.683         0 \r\n 1988          307           9.136         15.22        -0.966         0 \r\n 1988          308           6.679         19.311       -0.193         0 \r\n 1988          309           4.373         13.12         5.054         3.3 \r\n 1988          310           1.629         5.074        -1.315         0 \r\n 1988          311           11.21         8.35         -3.05          0 \r\n 1988          312           9.851         10.92        -1.533         0 \r\n 1988          313           5.279         11.08        -2.072         0 \r\n 1988          314           3.554         9.31          1.878         0 \r\n 1988          315           8.671         3.456        -6.263         0 \r\n 1988          316           5.747         6.821        -6.829         0 \r\n 1988          317           2.656         4.548        -0.767         19.05 \r\n 1988          318           9.829         14.31        -1.107         0.25 \r\n 1988          319           7.263         7.99         -0.173         0 \r\n 1988          320           1.454         17.66        -2.67          5.33 \r\n 1988          321           8.089         1.918        -5.953         5.08 \r\n 1988          322           9.407         6.542        -9.02          0 \r\n 1988          323           7.906         7.86         -0.929         0 \r\n 1988          324           6.438         2.114        -4.575         0 \r\n 1988          325           4.018        -3.773        -11.17         0 \r\n 1988          326           8.13          2.87         -11.46         0 \r\n 1988          327           6.87          6.457        -0.805         0 \r\n 1988          328           8.262         10.86        -1.278         0 \r\n 1988          329           8.248         11.93         0.903         0 \r\n 1988          330           2.968         4.918        -0.862         0 \r\n 1988          331           2.502         2.037        -0.956         11.18 \r\n 1988          332           4.574        -0.937        -11.59         1.78 \r\n 1988          333           8.219        -1.212        -15.19         0 \r\n 1988          334           5.306         2.15         -2.233         13.72 \r\n 1988          335           6.526        -0.294        -13.77         0 \r\n 1988          336           6.764        -0.306        -18.08         0 \r\n 1988          337           8.507         4.109        -4.691         0 \r\n 1988          338           7.869         2.735        -10.83         0 \r\n 1988          339           6.541         0.76         -15.69         0 \r\n 1988          340           8.106         4.136        -6.341         0 \r\n 1988          341           8.052         7.35         -4.565         0 \r\n 1988          342           7.687        -2.661        -12.9          0 \r\n 1988          343           7.341        -3.488        -15.67         0 \r\n 1988          344           5.657        -2.177        -15.28         0 \r\n 1988          345           7.854        -8.89         -22.48         0 \r\n 1988          346           3.747        -9.5          -19.672        1.27 \r\n 1988          347           5.201         1.594        -9.56          0 \r\n 1988          348           4.702         3.971        -4.47          0 \r\n 1988          349           6.317         3.504        -10.72         0 \r\n 1988          350           7.741        -9.86         -20.04         0 \r\n 1988          351           4.433        -2.596        -16.22         0 \r\n 1988          352           7.458        -2.632        -13.33         0 \r\n 1988          353           6.452         5.557        -8.26          0 \r\n 1988          354           4.425         3.725        -1.662         0 \r\n 1988          355           4.748         2.348        -7.39          0 \r\n 1988          356           7.058         0.973        -8.73          0 \r\n 1988          357           6.542         7.45         -1.788         0 \r\n 1988          358           5.348         1.944        -4.02          0 \r\n 1988          359           7.221        -1.334        -12.49         0 \r\n 1988          360           4.638        -6.352        -14.4          0 \r\n 1988          361           1             0.753        -10.61         0.51 \r\n 1988          362           6.393        -10.21        -15.1          1.52 \r\n 1988          363           6.534        -12.03        -16.68         0 \r\n 1988          364           6.979        -0.446        -16.86         0 \r\n 1988          365           7.209         3.219        -8.61          0 \r\n 1988          366           5.996         3.213        -8.64          0 \r\n 1989          1             3.23         -1.22         -14.81         0 \r\n 1989          2             6.564        -1.591        -16.61         0 \r\n 1989          3             7.654         0.263        -8.96          0 \r\n 1989          4             7.636         7.02         -8.97          0 \r\n 1989          5             0.859         0.083        -4.04          3.3 \r\n 1989          6             3.049        -0.589        -7.38          0 \r\n 1989          7             2.123        -0.464        -18.57         0.51 \r\n 1989          8             6.106        -13.36        -19.31         0 \r\n 1989          9             5.054        -3.117        -20.09         0 \r\n 1989          10            4.062        -8.41         -16.23         0 \r\n 1989          11            1.687        -2.32         -8.65          0 \r\n 1989          12            8.392        -1.381        -12.82         0 \r\n 1989          13            8.668         2.954        -11.71         0 \r\n 1989          14            8.229         4.31         -4.536         0 \r\n 1989          15            8.6           3.608        -8.49          0 \r\n 1989          16            8.521         6.208        -8.97          0 \r\n 1989          17            4.666         5.636        -5.142         0 \r\n 1989          18            8.265         6.554        -1.843         0 \r\n 1989          19            8.644         6.189        -1.996         0 \r\n 1989          20            8.98         -0.369        -7.54          0 \r\n 1989          21            9.198         6.707        -4.117         0 \r\n 1989          22            8.476         11.32        -2.242         0 \r\n 1989          23            8.198         4.843        -4.621         0 \r\n 1989          24            1.099        -0.141        -1.136         0 \r\n 1989          25            1.66          0.281        -11.7          2.54 \r\n 1989          26            8.075        -2.443        -16.9          0.25 \r\n 1989          27            6.516         6.544        -8.55          0 \r\n 1989          28            2.729         3.286        -1.999         0 \r\n 1989          29            7.375         2.346        -2.89          1.02 \r\n 1989          30            7.603         5.455        -4.04          0 \r\n 1989          31            7.576         12.34        -10.77         0 \r\n 1989          32            5.367        -10.7         -21.6          0 \r\n 1989          33            4.806        -19.551       -27.39         0.25 \r\n 1989          34            6.063        -20.637       -29.5          0 \r\n 1989          35            6.234        -16.82        -25.27         0 \r\n 1989          36            6.301        -15.99        -23.9          1.27 \r\n 1989          37            8.583        -9.86         -22.38         0 \r\n 1989          38            9.6          -2.902        -16.87         0 \r\n 1989          39            9.831        -11.36        -21.64         0 \r\n 1989          40            9.668        -0.09         -22.6          0 \r\n 1989          41            9.764         4.957        -17.31         0 \r\n 1989          42            10.029        2.999        -12.41         0 \r\n 1989          43            5.946         0.617        -12.62         0 \r\n 1989          44            8.213         1.139        -11            0.76 \r\n 1989          45            4.721        -2.433        -12.84         0 \r\n 1989          46            10.172       -2.518        -13.98         0 \r\n 1989          47            12.057       -1.808        -16.09         0 \r\n 1989          48            6.331        -5.267        -11.94         0 \r\n 1989          49            5.621        -6.129        -19.71         0 \r\n 1989          50            5.879        -6.829        -21.41         0 \r\n 1989          51            8.617        -4.078        -9.94          3.56 \r\n 1989          52            13.897       -4.041        -15.73         0 \r\n 1989          53            14.851       -12.53        -22.83         0 \r\n 1989          54            13.9         -8.12         -24.03         0 \r\n 1989          55            14.552        4.805        -9.85          0 \r\n 1989          56            13.913        7.91         -6.059         0 \r\n 1989          57            11.053       -1.855        -9.58          0 \r\n 1989          58            6.927        -0.62         -14.02         0 \r\n 1989          59            13.766       -3.611        -13.37         0.25 \r\n 1989          60            9.645        -10.34        -15.54         0 \r\n 1989          61            5.188        -13.16        -17.79         2.54 \r\n 1989          62            6.324        -8.15         -13.16         3.05 \r\n 1989          63            14.981       -8.7          -15.86         1.27 \r\n 1989          64            16.591       -7.44         -17.74         0 \r\n 1989          65            16.334       -3.701        -18.96         0 \r\n 1989          66            16.072        0.024        -10.43         0 \r\n 1989          67            15.131        4.573        -2.966         0 \r\n 1989          68            16.7          10.21        -0.827         0 \r\n 1989          69            14.855        16.4         -0.27          0 \r\n 1989          70            15.283        10.4          1.584         0 \r\n 1989          71            5.066         4.035         0.476         0 \r\n 1989          72            4.52          4.939         0.133         0 \r\n 1989          73            6.501         5.545        -9.301         6.6 \r\n 1989          74            18.45         1.761        -10.724        0.25 \r\n 1989          75            15.734        0.804        -10.41         0.25 \r\n 1989          76            6.25         -9.65         -12.75         1.27 \r\n 1989          77            18.482       -3.468        -15.86         0 \r\n 1989          78            7.809         1.891        -5.934         0 \r\n 1989          79            15.949       -0.168        -11.02         0 \r\n 1989          80            19.697        3.315        -13.57         0 \r\n 1989          81            17.065        8.55         -3.86          0 \r\n 1989          82            17.041        14.39         1.418         0 \r\n 1989          83            15.862        17.15         1.344         0 \r\n 1989          84            16.309        11.17        -0.624         0 \r\n 1989          85            19.087        24.99         1.655         0 \r\n 1989          86            18.883        25.17         7.51          0 \r\n 1989          87            15.389        12.96         1.019         0 \r\n 1989          88            9.295         11.64         1.187         0.25 \r\n 1989          89            5.688         3.543        -2.102         0 \r\n 1989          90            20.109        11.79        -4.445         0 \r\n 1989          91            16.255        15.62         0.272         0 \r\n 1989          92            17.246        17.08         0.015         6.35 \r\n 1989          93            19.136        14.64         0.614         0 \r\n 1989          94            19.779        10.35        -2.309         0.762 \r\n 1989          95            18.114        13.2         -4.652         0 \r\n 1989          96            18.655        11.24        -0.069         0 \r\n 1989          97            4.311         4.111        -3.724         8.636 \r\n 1989          98            22.704        1.309        -5.875         0 \r\n 1989          99            23.484        1.858        -7.688         0 \r\n 1989          100           22.987        6.039        -6.962         0 \r\n 1989          101           15.703        7.21         -5.431         0 \r\n 1989          102           20.443        10.25        -7.4           0 \r\n 1989          103           17.656        21.17        -1.128         0 \r\n 1989          104           17.45         16.45         0.405         0 \r\n 1989          105           22.973        18.49        -3.801         0 \r\n 1989          106           17.245        23.35         6.877         0.254 \r\n 1989          107           21.189        9.63         -2.432         0 \r\n 1989          108           15.503        13.07         1.623         0 \r\n 1989          109           23.883        20.89        -2.717         0 \r\n 1989          110           20.62         29.27         7.66          0 \r\n 1989          111           23.887        28.27         5.189         0 \r\n 1989          112           17.187        23.66         12.46         0 \r\n 1989          113           19.755        28            11.46         0 \r\n 1989          114           12.648        22.75         11.84         43.688 \r\n 1989          115           23.253        24.72         12.77         0 \r\n 1989          116           14.361        25.04         13.18         0 \r\n 1989          117           19.637        29.01         11.62         27.686 \r\n 1989          118           4.391         15.67         4.983         1.27 \r\n 1989          119           15.497        11.86         2.474         3.556 \r\n 1989          120           12.83         10.12        -0.37          0 \r\n 1989          121           14.911        11.14         0.432         0 \r\n 1989          122           19.418        14.63        -0.721         0 \r\n 1989          123           25.174        17.81         1.394         0.254 \r\n 1989          124           13.778        20.2          6.454         5.08 \r\n 1989          125           17.575        9.03         -0.294         0 \r\n 1989          126           22.063        15.22        -1.818         0 \r\n 1989          127           26.878        22.18         0.318         0 \r\n 1989          128           18.06         25.79         8.33          2.032 \r\n 1989          129           25.046        20.39         4.305         0 \r\n 1989          130           27.483        24.43         4.906         0 \r\n 1989          131           27.445        24.05         9.27          0 \r\n 1989          132           26.355        25.17         7.23          0 \r\n 1989          133           25.959        25.06         5.83          0 \r\n 1989          134           23.953        24.99         10.23         0 \r\n 1989          135           22.087        27.55         10.67         0 \r\n 1989          136           21.554        27.62         10.87         0 \r\n 1989          137           18.658        26.56         15.15         2.794 \r\n 1989          138           3.442         18.23         13.83         3.556 \r\n 1989          139           18.464        26.16         9.14          0.254 \r\n 1989          140           28.675        26.03         3.543         0 \r\n 1989          141           23.565        27.86         10.24         0 \r\n 1989          142           25.851        26.99         12.25         0 \r\n 1989          143           17.818        30.48         14.54         67.818 \r\n 1989          144           14.681        28.78         11.48         0 \r\n 1989          145           24.812        24.37         8.78          0 \r\n 1989          146           26.181        18.05         7.58          0 \r\n 1989          147           29.066        22.62         4.426         0 \r\n 1989          148           11.323        18.04         11.85         0 \r\n 1989          149           26.143        34.93         13.95         0.254 \r\n 1989          150           7.427         19.31         9.87          1.016 \r\n 1989          151           9.363         19.47         12.29         1.27 \r\n 1989          152           26.732        23.67         9.04          0 \r\n 1989          153           23.928        30.42         12.26         0 \r\n 1989          154           26.378        24.46         12.57         0 \r\n 1989          155           26.343        26.73         9.27          0 \r\n 1989          156           26.235        29.08         11.03         0 \r\n 1989          157           24            31.51         14.91         0 \r\n 1989          158           23.826        30.75         15.38         2.286 \r\n 1989          159           17.981        19            10.88         0 \r\n 1989          160           28.053        22.8          9.92          0 \r\n 1989          161           28.076        25.13         7.92          0 \r\n 1989          162           14.537        24.52         15.52         1.27 \r\n 1989          163           20.38         26.15         9.68          1.524 \r\n 1989          164           16.234        18.78         8.9           0 \r\n 1989          165           10.06         14.69         6.397         0 \r\n 1989          166           30.017        24.45         5.404         0 \r\n 1989          167           29.835        26.4          9.17          0 \r\n 1989          168           16.2          27.11         13.39         16.002 \r\n 1989          169           24.972        28.37         17.08         0 \r\n 1989          170           29.451        31.84         13.97         0 \r\n 1989          171           26.918        34.14         20.9          0 \r\n 1989          172           14.995        32.54         15.69         17.526 \r\n 1989          173           9.751         20.79         13.76         2.286 \r\n 1989          174           26.487        25.97         12.36         0 \r\n 1989          175           9.587         23.01         12.58         3.81 \r\n 1989          176           20.809        27.18         17.38         13.462 \r\n 1989          177           20.865        26.69         16.37         10.414 \r\n 1989          178           29.44         27.1          14.02         0 \r\n 1989          179           27.493        29.59         16.14         0 \r\n 1989          180           24.921        29.6          18.81         0 \r\n 1989          181           21.219        29.56         17.82         0 \r\n 1989          182           24.372        29.95         16.33         0 \r\n 1989          183           27.12         30.2          17.38         0 \r\n 1989          184           25.815        33.85         18.84         0 \r\n 1989          185           25.652        31.98         19.03         3.302 \r\n 1989          186           28.673        33.39         19            0 \r\n 1989          187           27.169        33.58         18.86         0 \r\n 1989          188           27.964        32.38         19.23         0 \r\n 1989          189           26.212        34.71         19.41         0 \r\n 1989          190           28.227        36.24         19.15         0 \r\n 1989          191           26.245        35.45         20.29         0 \r\n 1989          192           26.849        32.33         22.222        23.114 \r\n 1989          193           25.656        29.321        20.416        0 \r\n 1989          194           27.057        31.111        17.778        0 \r\n 1989          195           12.311        23.333        15.556        2.997 \r\n 1989          196           24.476        22.222        13.889        0 \r\n 1989          197           26.299        20.86         11.667        110.236 \r\n 1989          198           18.203        27.778        14.444        33.63 \r\n 1989          199           20.368        25            15.556        0 \r\n 1989          200           28.038        27.222        15            0 \r\n 1989          201           27.415        28.889        14.444        0 \r\n 1989          202           26.563        28.333        15.556        0 \r\n 1989          203           28.211        27.222        13.889        0 \r\n 1989          204           26.531        27.778        16.111        0 \r\n 1989          205           25.921        29.444        16.111        0 \r\n 1989          206           20.698        30            18.333        0 \r\n 1989          207           22.047        32.222        18.333        0 \r\n 1989          208           22.531        34.444        20            0 \r\n 1989          209           20.094        33.333        20            44.831 \r\n 1989          210           17.645        31.667        19.444        0 \r\n 1989          211           20.926        31.667        20.556        0 \r\n 1989          212           19.759        30.556        19.444        0 \r\n 1989          213           22.705        29.444        17.778        0 \r\n 1989          214           18.545        30.556        17.778        0 \r\n 1989          215           17.934        31.667        22.222        0 \r\n 1989          216           20.687        36.111        21.111        6.045 \r\n 1989          217           21.662        29.444        16.667        0 \r\n 1989          218           14.259        19.444        10            0 \r\n 1989          219           23.169        25.556        7.778         0 \r\n 1989          220           23.006        28.333        10.556        0 \r\n 1989          221           23.381        28.889        11.111        0 \r\n 1989          222           21.366        29.444        14.444        0 \r\n 1989          223           21.99         28.656        14.887        0 \r\n 1989          224           14.766        28.424        16.316        0 \r\n 1989          225           20.639        30.181        16.33         0 \r\n 1989          226           17.964        27.199        16.334        2.794 \r\n 1989          227           18.788        27.159        14.044        0 \r\n 1989          228           18.772        26.56         12.88         0 \r\n 1989          229           22.129        27.78         12.42         0 \r\n 1989          230           23.493        26.36         14.66         0 \r\n 1989          231           12.963        28.24         16.51         0.508 \r\n 1989          232           15.852        27.87         12            0 \r\n 1989          233           20.574        29.65         16.44         8.636 \r\n 1989          234           20.504        33.04         17.86         0 \r\n 1989          235           17.938        30.01         17.61         0 \r\n 1989          236           14.002        23.97         15.74         0 \r\n 1989          237           6.638         24.94         17.64         0.254 \r\n 1989          238           13.903        27.42         16.47         25.908 \r\n 1989          239           8.775         23.92         15.13         0.254 \r\n 1989          240           13.046        25.51         17.92         0 \r\n 1989          241           22.778        27.11         13            0 \r\n 1989          242           21.203        28.1          15.97         0 \r\n 1989          243           19.624        32.58         20.64         0 \r\n 1989          244           15.818        24.65         12.2          0 \r\n 1989          245           20.619        25.1          10.26         0 \r\n 1989          246           12.18         25.42         15.49         21.59 \r\n 1989          247           18.912        27.13         12.83         15.748 \r\n 1989          248           19.458        26.08         11.44         0 \r\n 1989          249           10.412        28.71         19.72         0 \r\n 1989          250           10.42         23.85         16.9          38.354 \r\n 1989          251           5.154         20.55         12.96         3.556 \r\n 1989          252           12.764        18.87         8.67          0 \r\n 1989          253           15.421        19.07         5.168         0 \r\n 1989          254           19.012        15.83         4.871         0 \r\n 1989          255           6.873         11.9          3.968         0 \r\n 1989          256           18.928        18.67         4.881         0 \r\n 1989          257           20.69         20.68         1.961         0 \r\n 1989          258           20.065        21.06         4.274         0 \r\n 1989          259           19.516        25.68         7.1           0 \r\n 1989          260           19.227        28.6          11.03         0 \r\n 1989          261           19.002        27.81         16.6          0 \r\n 1989          262           8.641         24.87         16.38         0 \r\n 1989          263           15.74         27.77         16.37         0 \r\n 1989          264           15.553        27            13.25         0.254 \r\n 1989          265           17.08         20.26         1.406         0 \r\n 1989          266           19.145        14.52        -2.121         0 \r\n 1989          267           18.092        17.77        -0.844         0 \r\n 1989          268           18.395        22.14         4.091         0 \r\n 1989          269           18.053        18.49         1.302         0 \r\n 1989          270           16.837        22.53         7.03          0 \r\n 1989          271           10.11         25.15         9.84          0 \r\n 1989          272           17.061        27.72         9.45          0 \r\n 1989          273           16.822        27.24         8.73          0 \r\n 1989          274           15.213        28.27         7.72          0 \r\n 1989          275           16.348        12.38         0.028         0 \r\n 1989          276           16.26         13.17        -1.031         0 \r\n 1989          277           5.788         12.64        -1.62          0 \r\n 1989          278           10.307        19.83         5.529         0.25 \r\n 1989          279           16.38         14.49         0.177         0 \r\n 1989          280           13.633        15.29        -4.568         0 \r\n 1989          281           15.409        17.18        -1.808         0 \r\n 1989          282           13.274        22.77         2.85          0 \r\n 1989          283           15.182        19.06        -0.068         0 \r\n 1989          284           14.507        28.17         8.54          0 \r\n 1989          285           14.794        23.41         2.066         0 \r\n 1989          286           13.94         28.27         7.27          0 \r\n 1989          287           11.515        26.01         8.55          0 \r\n 1989          288           10.927        20.8          6.546         0 \r\n 1989          289           6.685         8.31          1.379         0 \r\n 1989          290           11.341        8.78         -2.917         0 \r\n 1989          291           7.602         7.09         -4.873         0 \r\n 1989          292           13.8          8.53         -7.23          0 \r\n 1989          293           12.089        16.78        -6.694         0 \r\n 1989          294           13.579        20.28        -2.612         0 \r\n 1989          295           8.638         21.66         0.35          0 \r\n 1989          296           12.533        26.35         6.295         0 \r\n 1989          297           12.173        26.52         7.13          0 \r\n 1989          298           11.472        26.14         13.17         0 \r\n 1989          299           10.145        24.47         16.26         0 \r\n 1989          300           12.055        20.03         5.998         0 \r\n 1989          301           3.739         17.18         6.399         0 \r\n 1989          302           2.414         14.46         4.083         1.27 \r\n 1989          303           1.925         4.13         -3.877         0 \r\n 1989          304           8.997         11.25        -5.577         0 \r\n 1989          305           2.337         1.562        -4.662         0 \r\n 1989          306           4.185         1.949        -9.19          0 \r\n 1989          307           3.246         4.589        -8.82          0 \r\n 1989          308           7.631         15.15        -1.004         0 \r\n 1989          309           2.477         10.26        -4.041         0 \r\n 1989          310           2.53          7.12         -5.528         1.52 \r\n 1989          311           3.891         10.95        -2.577         0.25 \r\n 1989          312           2.919         6.015        -4.203         0 \r\n 1989          313           8.718         11.6         -3.421         0 \r\n 1989          314           8.325         10.94        -7.511         0 \r\n 1989          315           9.006         12.12        -3.259         0 \r\n 1989          316           8.505         10.33        -6.312         0 \r\n 1989          317           9.367         10.55        -3.421         0 \r\n 1989          318           7.105         8.06         -6.537         0 \r\n 1989          319           1.599         1.224        -10.82         0 \r\n 1989          320           9.551        -6.509        -14.62         0 \r\n 1989          321           7.545        -1.073        -16.4          0 \r\n 1989          322           3.461        -2.939        -17.04         0 \r\n 1989          323           7.452         16.73        -8             0 \r\n 1989          324           8.878         10.27        -6.184         0 \r\n 1989          325           3.908         3.124        -7.44          0 \r\n 1989          326           6.118         1.118        -15.11         0 \r\n 1989          327           8.721        -0.838        -15.22         0 \r\n 1989          328           5.208         7.44         -11.52         0 \r\n 1989          329           4.103         7.97         -5.664         0 \r\n 1989          330           4.249         7.7          -8.28          0 \r\n 1989          331           0.838         5.72         -14.88         4.57 \r\n 1989          332           7.795        -7.56         -18.35         0 \r\n 1989          333           8.24          3.483        -19.7          0 \r\n 1989          334           7.398         4.822        -11.64         0 \r\n 1989          335           7.661         5.415        -9.01          0 \r\n 1989          336           8.234        -1.195        -15.35         0 \r\n 1989          337           6.265        -0.506        -18.2          0 \r\n 1989          338           7.578         12.58        -1.827         0 \r\n 1989          339           5.716         12.64         0.13          0 \r\n 1989          340           7.743         0.49         -9.52          0 \r\n 1989          341           2.934        -8.82         -10.81         2.03 \r\n 1989          342           3.708        -3.176        -16.95         0 \r\n 1989          343           4.872         2.617        -6.45          0 \r\n 1989          344           4.063        -6.43         -17.15         2.54 \r\n 1989          345           7.479        -10.12        -25.12         0 \r\n 1989          346           6.384        -9.49         -27.03         0 \r\n 1989          347           6.875        -9.55         -24.81         0.51 \r\n 1989          348           7.422        -20.18        -28.74         0 \r\n 1989          349           7.306        -13.79        -27.39         0 \r\n 1989          350           7.425        -9.61         -20.078        0 \r\n 1989          351           7.378        -13.53        -22.51         0 \r\n 1989          352           4.884        -12.85        -24.84         0 \r\n 1989          353           5.779        -16.29        -28.38         0 \r\n 1989          354           4.102        -19.74        -28.69         0 \r\n 1989          355           7.561        -24.14        -32.08         0 \r\n 1989          356           7.749        -18.97        -33.43         0 \r\n 1989          357           6.397        -11.52        -32.34         0 \r\n 1989          358           2.986         0.252        -11.5          0 \r\n 1989          359           7.502         3.7          -15.58         0 \r\n 1989          360           2.393         2.225        -19.68         0 \r\n 1989          361           2.312         2.886        -3.499         0 \r\n 1989          362           6.289         7.62         -3.214         0 \r\n 1989          363           0.846        -1.014        -6.501         0 \r\n 1989          364           1.695        -2.776        -5.85          0 \r\n 1989          365           3.444        -3.289        -11.74         0 \r\n 1990          1             7.566        -0.749        -15.52         0 \r\n 1990          2             7.214         5.081        -7.69          0 \r\n 1990          3             7.443         4.015        -4.682         0 \r\n 1990          4             7.774         2.386        -10.68         0 \r\n 1990          5             4.26          3.814        -9.18          0 \r\n 1990          6             7.258         6.015        -10.62         0 \r\n 1990          7             8.209         9.62         -6.012         0 \r\n 1990          8             3.832         8.81         -1.164         0 \r\n 1990          9             3.449         3.254        -6.889         0 \r\n 1990          10            5.114         10.65        -6.616         0 \r\n 1990          11            7.141         2.175        -4.164         0 \r\n 1990          12            8.481        -2.417        -12.8          0 \r\n 1990          13            8.332         4.307        -12.9          0 \r\n 1990          14            8.148         11.8         -5.78          0 \r\n 1990          15            7.599         14.84        -5.471         0 \r\n 1990          16            0.989         6.991        -2.48          0 \r\n 1990          17            1.695         0.977        -5.218         0 \r\n 1990          18            8.445         1.271        -9.97          0 \r\n 1990          19            5.672         1.546        -10.96         0 \r\n 1990          20            2.834        -2.699        -13.78         18.03 \r\n 1990          21            6.231        -0.804        -15.43         0 \r\n 1990          22            6.705         1.847        -7.84          0 \r\n 1990          23            6.454         3.788        -5.106         0 \r\n 1990          24            4.663        -0.323        -8.75          0 \r\n 1990          25            9.663        -1.49         -12.52         0 \r\n 1990          26            9.022         5.206        -12.19         0 \r\n 1990          27            9.643         3.548        -7.5           0 \r\n 1990          28            10.609        2.772        -8.62          0 \r\n 1990          29            9.995         6.353        -10.09         0 \r\n 1990          30            10.424        1.505        -14.38         0 \r\n 1990          31            8.254         6.456        -11.26         0 \r\n 1990          32            6.241        -7.63         -16.03         0 \r\n 1990          33            3.781        -6.305        -13.77         0 \r\n 1990          34            9.853        -3.878        -11.37         0 \r\n 1990          35            10.932        5.723        -12.08         0 \r\n 1990          36            10.199        5.652        -3.903         0 \r\n 1990          37            10.198        6.337        -7.7           0 \r\n 1990          38            11.264        12.03        -4.625         0 \r\n 1990          39            7.84          5.78         -2.773         0 \r\n 1990          40            12.113        3.633        -6.099         0 \r\n 1990          41            7.811         4.337        -5.704         0 \r\n 1990          42            11.541        8.61         -3.964         0 \r\n 1990          43            8.084         13.7         -0.655         0 \r\n 1990          44            5.518        -0.683        -13.04         0 \r\n 1990          45            3.643        -8.3          -13.54         0 \r\n 1990          46            5.499        -5.125        -9.25          3.05 \r\n 1990          47            12.336       -5.693        -21.43         1.27 \r\n 1990          48            12.394       -4.177        -23.87         0 \r\n 1990          49            12.516       -1.693        -10.83         0 \r\n 1990          50            13.975       -0.757        -16.06         0 \r\n 1990          51            13.712        5.559        -11.21         0 \r\n 1990          52            7.566         8.16         -2.831         0 \r\n 1990          53            3.654         2.715        -5.375         0 \r\n 1990          54            9.6           10.42        -7.46          0 \r\n 1990          55            14.627       -4.116        -15.23         0 \r\n 1990          56            7.146        -4.474        -14.59         0 \r\n 1990          57            14.558        9.05         -9.21          0 \r\n 1990          58            15.505        3.093        -9.61          0 \r\n 1990          59            15.603        6.028        -11.9          0 \r\n 1990          60            15.938        13.8         -5.809         0 \r\n 1990          61            14.813        11.69        -6.878         0 \r\n 1990          62            16.084        4.562        -11.17         0 \r\n 1990          63            15.937        14.68        -3.857         0 \r\n 1990          64            4.737        -1.069        -7.29          0 \r\n 1990          65            2.625         0.533        -4.25          0 \r\n 1990          66            0.94         -0.041        -3.382         9.4 \r\n 1990          67            4.321         1.863        -0.202         3.56 \r\n 1990          68            14.223        12.6          0.117         0 \r\n 1990          69            3.311         9.54          0.787         0 \r\n 1990          70            6.641         18.9          9.6           5.08 \r\n 1990          71            17.316        19.51         6.839         0 \r\n 1990          72            2.894         16.6          5.387         10.92 \r\n 1990          73            3.355         16.21         1.837         16.51 \r\n 1990          74            10.807        11.589       -0.448         20.07 \r\n 1990          75            8.896         2.337        -2.147         0.76 \r\n 1990          76            16.23         5.903        -2.916         0 \r\n 1990          77            16.159       -0.804        -10.33         0 \r\n 1990          78            20.468        2.452        -14.14         0 \r\n 1990          79            19.557        13.32        -5.278         0 \r\n 1990          80            18.125        17.12         0.628         0 \r\n 1990          81            6.285         7.57         -5.877         7.87 \r\n 1990          82            15.91        -2.725        -8.86          0 \r\n 1990          83            17.38         3.029        -7.63          0 \r\n 1990          84            21.041        9.31         -6.734         0 \r\n 1990          85            21.177        8.54         -6.958         0 \r\n 1990          86            19.634        12.68        -4.565         0 \r\n 1990          87            6.473         10.07        -0.787         0 \r\n 1990          88            9.252         9.31         -1.033         0 \r\n 1990          89            20.303        14.9         -2.792         0 \r\n 1990          90            3.494         7.42          2.026         0 \r\n 1990          91            17.622        10.62        -1.675         0 \r\n 1990          92            22.756        9.7          -5.181         0 \r\n 1990          93            21.953        17.48        -7.49          0 \r\n 1990          94            21.546        15.79         1.189         0 \r\n 1990          95            23.005        5.178        -7.28          0 \r\n 1990          96            23.206        5.825        -9.894         0 \r\n 1990          97            22.102        14.83        -8.97          0 \r\n 1990          98            11.219        18.28        -3.389         0 \r\n 1990          99            3.393         12.49         2.348         10.592 \r\n 1990          100           16.325        9.33         -4.105         0 \r\n 1990          101           17.049        5.712        -7.26          0 \r\n 1990          102           24.144        11.55        -7.67          0 \r\n 1990          103           4.686         4.854        -0.476         0 \r\n 1990          104           20.126        17.9         -0.748         0 \r\n 1990          105           24.344        13.99        -2.991         3.988 \r\n 1990          106           7.48          7.8          -2.943         0 \r\n 1990          107           25.046        10.37        -6.374         0 \r\n 1990          108           16.676        14.12        -2.441         0 \r\n 1990          109           11.379        19.94         7.85          0 \r\n 1990          110           21.213        25.8          10.77         0 \r\n 1990          111           23.827        27.02         7.6           0 \r\n 1990          112           22.423        29.51         10.25         0 \r\n 1990          113           14.014        29.2          15.78         12.929 \r\n 1990          114           18.886        26.78         15.13         0 \r\n 1990          115           19.281        25.7          16.37         0 \r\n 1990          116           13.604        25.86         13.46         0 \r\n 1990          117           3.877         18.79         1.705         0 \r\n 1990          118           21.312        12.85        -1.492         0.254 \r\n 1990          119           4.124         8.99         -0.154         10.922 \r\n 1990          120           25.385        12.66        -1.013         0 \r\n 1990          121           26.653        16.33        -2.746         0 \r\n 1990          122           25.676        20.56        -0.634         0 \r\n 1990          123           18.522        19.29         2.272         0 \r\n 1990          124           17.906        21.2          6.4           0 \r\n 1990          125           13.198        19.95         4.424         0 \r\n 1990          126           27.268        24.43         2.243         0 \r\n 1990          127           27.08         31.96         12.78         0 \r\n 1990          128           16.752        21.99         9.37          0.762 \r\n 1990          129           4.256         9.44          2.319         34.29 \r\n 1990          130           26.68         16.3          0.846         0 \r\n 1990          131           8.569         16.63         4.284         3.556 \r\n 1990          132           8.126         14.05         7.07          1.016 \r\n 1990          133           16.406        16.34         3.673         0.762 \r\n 1990          134           14.023        20.09         10.97         0 \r\n 1990          135           3.322         16.69         10.01         8.128 \r\n 1990          136           17.714        16.4          7.71          0 \r\n 1990          137           27.434        20.6          6.286         0 \r\n 1990          138           23.971        24.88         3.817         9.398 \r\n 1990          139           6.216         17.36         6.507         14.224 \r\n 1990          140           10.705        13.2          6.181         0 \r\n 1990          141           17.592        16.13         7.18          0 \r\n 1990          142           25.917        22.3          4.5           0 \r\n 1990          143           23.016        21.87         12.67         19.05 \r\n 1990          144           8.319         18.28         11.61         3.048 \r\n 1990          145           3.82          16.86         14.36         10.16 \r\n 1990          146           17.615        22.53         14.49         0 \r\n 1990          147           17.427        19.87         11.66         0 \r\n 1990          148           25.257        25.94         10.64         0 \r\n 1990          149           22.439        25.72         11.49         0 \r\n 1990          150           28.106        22.97         12.45         0 \r\n 1990          151           13.376        22.12         8.72          0 \r\n 1990          152           17.216        28.58         15.62         0 \r\n 1990          153           2.976         20.99         12.62         24.13 \r\n 1990          154           8.758         12.75         4.693         1.524 \r\n 1990          155           26.563        18.59         3.966         0 \r\n 1990          156           26.495        28.19         13.44         2.54 \r\n 1990          157           11.205        20.98         11.06         0 \r\n 1990          158           14.676        20.84         9.57          0 \r\n 1990          159           21.038        28.12         14.49         0 \r\n 1990          160           29.993        29.95         10.95         0 \r\n 1990          161           19.413        30.39         13.83         0 \r\n 1990          162           20.551        33.16         19.6          0 \r\n 1990          163           18.857        32.28         22.16         0 \r\n 1990          164           26.402        32.57         16.93         3.556 \r\n 1990          165           23.296        29.35         13.7          9.398 \r\n 1990          166           21.413        25.83         15.78         0.508 \r\n 1990          167           13.105        27.55         20.49         55.372 \r\n 1990          168           29.772        26.07         17.55         0.254 \r\n 1990          169           29.443        32.74         15.58         0 \r\n 1990          170           15.191        26.38         18.13         26.67 \r\n 1990          171           29.611        27.59         17.14         0 \r\n 1990          172           14.645        23.55         14.94         38.608 \r\n 1990          173           20.058        24.68         14.34         1.778 \r\n 1990          174           27.573        26.26         12.8          0 \r\n 1990          175           27.263        28.54         13.07         0 \r\n 1990          176           29.027        31.29         18.12         0 \r\n 1990          177           27.779        34.93         21.01         0 \r\n 1990          178           26.977        34.01         19.59         0 \r\n 1990          179           19.646        29.17         18.23         26.67 \r\n 1990          180           25.252        33.71         23.24         0 \r\n 1990          181           28.982        33.24         20.78         0 \r\n 1990          182           21.267        30.56         18.73         0 \r\n 1990          183           24.099        33.33         21.54         0 \r\n 1990          184           28.5          37.7          21.11         0 \r\n 1990          185           23.472        30.08         16.47         0.254 \r\n 1990          186           26.25         27.81         15.23         0 \r\n 1990          187           22.91         27.66         14.92         0.508 \r\n 1990          188           19.298        31.52         21.19         0 \r\n 1990          189           18.38         29.09         18.22         0 \r\n 1990          190           17.274        26.85         17.71         0 \r\n 1990          191           10.936        23.31         14.52         1.016 \r\n 1990          192           11.618        25.45         13.64         35.306 \r\n 1990          193           19.767        21.21         12.23         2.286 \r\n 1990          194           28.848        22.94         10.14         0 \r\n 1990          195           28.661        26.11         10.82         0 \r\n 1990          196           28.035        28.07         11.9          0 \r\n 1990          197           24.937        29.87         15.45         0 \r\n 1990          198           24.192        30.78         21.12         0.254 \r\n 1990          199           11.227        29.17         18.31         1.27 \r\n 1990          200           7.947         23.09         18.36         33.782 \r\n 1990          201           25.223        25            17.57         7.112 \r\n 1990          202           14.708        22.26         14.86         0.254 \r\n 1990          203           25.324        24.13         11.06         0 \r\n 1990          204           28.282        26.17         11.69         0 \r\n 1990          205           16.15         25.14         14.66         2.032 \r\n 1990          206           11.721        23.8          17.73         3.048 \r\n 1990          207           15.634        26.74         20.2          6.858 \r\n 1990          208           16.111        28.64         22.44         1.778 \r\n 1990          209           17.089        30.51         18.71         1.016 \r\n 1990          210           25.646        26.97         18.05         1.016 \r\n 1990          211           25.591        23.28         13.43         0.508 \r\n 1990          212           25.765        24.69         11.69         0.762 \r\n 1990          213           24.752        25.66         12.96         0.508 \r\n 1990          214           12.044        26.93         17.91         0.508 \r\n 1990          215           16.7          26.61         17.3          0.508 \r\n 1990          216           26.622        25.51         13.47         0.508 \r\n 1990          217           26.953        23.19         11.36         1.016 \r\n 1990          218           24.425        25.16         9.04          0.254 \r\n 1990          219           26.366        24.3          9.74          0.254 \r\n 1990          220           25.624        25.08         10.35         0.254 \r\n 1990          221           22.404        30.02         14.21         0 \r\n 1990          222           15.567        28.5          17.22         4.318 \r\n 1990          223           24.262        24.61         12.15         2.286 \r\n 1990          224           24.796        23.72         12.61         0 \r\n 1990          225           22.787        25.12         12.33         0 \r\n 1990          226           23.607        28.1          16.8          0 \r\n 1990          227           23.832        29.24         15.71         0 \r\n 1990          228           15.891        27.72         17.8          0 \r\n 1990          229           21.823        31.47         22.38         0 \r\n 1990          230           21.278        31.19         19.78         0 \r\n 1990          231           6.361         25.62         19.39         0 \r\n 1990          232           5.337         22.12         18.19         0 \r\n 1990          233           12.387        22.65         17.27         0 \r\n 1990          234           8.827         23.5          16.11         0 \r\n 1990          235           14.14         29.76         18.57         0 \r\n 1990          236           11.546        27.23         19.33         0 \r\n 1990          237           22.777        31.17         18.9          0 \r\n 1990          238           22.636        31.01         21.68         0 \r\n 1990          239           22.544        32.75         21.08         0 \r\n 1990          240           19.716        31.65         20.45         0.254 \r\n 1990          241           22.298        30.22         16.46         0 \r\n 1990          242           22.219        30.13         13.43         0 \r\n 1990          243           15.927        30.51         19.52         0 \r\n 1990          244           8.79          26.87         19.71         5.893 \r\n 1990          245           14.003        25.89         19.18         1.219 \r\n 1990          246           19.454        29.79         20.3          0 \r\n 1990          247           21.005        32.52         20.66         0 \r\n 1990          248           21.074        32.48         20.26         0 \r\n 1990          249           19.342        32.29         19.14         0.102 \r\n 1990          250           16.617        30.03         17.25         0 \r\n 1990          251           20.709        27.75         14.64         0 \r\n 1990          252           16.742        30.58         13.16         0.076 \r\n 1990          253           19.223        28.57         14.4          0 \r\n 1990          254           19.577        30.16         16.66         0 \r\n 1990          255           20.122        32.04         17.21         0 \r\n 1990          256           19.697        30.37         15.89         0.457 \r\n 1990          257           18.731        22.61         10.03         0 \r\n 1990          258           19.925        28.54         8.08          0 \r\n 1990          259           19.999        18.52         4.728         0 \r\n 1990          260           14.217        18.17         6.026         7.239 \r\n 1990          261           1.943         16.99         11.9          4.648 \r\n 1990          262           16.349        20.69         9.91          0 \r\n 1990          263           6.196         20.67         11.86         0.66 \r\n 1990          264           18.221        22            9.01          0 \r\n 1990          265           14.153        13.27         4.702         0 \r\n 1990          266           19.314        17.32         0.083         0 \r\n 1990          267           18.405        26.73         5.738         0 \r\n 1990          268           18.446        30.64         9.24          0 \r\n 1990          269           17.814        30.92         10.7          0 \r\n 1990          270           5.446         19.31         9.76          0.279 \r\n 1990          271           15.971        20.19         7.07          0.178 \r\n 1990          272           8.427         16.69         8.46          1.194 \r\n 1990          273           15.216        20.24         5.062         0 \r\n 1990          274           16.773        23.02         4.587         0 \r\n 1990          275           11.926        27.03         9.41          0 \r\n 1990          276           10.823        18.14         5.815         0 \r\n 1990          277           16.643        22.22         4.767         0 \r\n 1990          278           16.136        29.74         11.72         0 \r\n 1990          279           14.436        19.17         3.438         0 \r\n 1990          280           13.635        11.68         1.868         0 \r\n 1990          281           2.466         6.786         2.794         3.81 \r\n 1990          282           12.377        11           -0.096         0 \r\n 1990          283           15.851        12.65        -2.623         0 \r\n 1990          284           14.379        17.87         2.831         0 \r\n 1990          285           15.593        14.67        -1.515         1.52 \r\n 1990          286           10.122        15.95         5.92          0 \r\n 1990          287           13.531        15.23         1.783         0 \r\n 1990          288           8.311         14.97        -0.492         0 \r\n 1990          289           11.587        22.81         3.691         0 \r\n 1990          290           1.405         19.63        -1.193         0 \r\n 1990          291           14.465        6.619        -4.721         0 \r\n 1990          292           12.905        17.01        -1.536         0 \r\n 1990          293           2.17          9.16          3.312         5.33 \r\n 1990          294           13.723        10.02        -2.215         7.87 \r\n 1990          295           11.768        16.91         0.855         0 \r\n 1990          296           12.386        19.55         2.963         0 \r\n 1990          297           11.485        12.88        -1.394         0 \r\n 1990          298           12.748        14.92        -4.166         0 \r\n 1990          299           11.46         20.74         2.822         0 \r\n 1990          300           12.395        12.92        -1.163         0 \r\n 1990          301           12.201        14.71        -4.261         0 \r\n 1990          302           12.047        23.61         4.081         0 \r\n 1990          303           11.264        17.69         3.958         0 \r\n 1990          304           11.341        24.54         2.349         0 \r\n 1990          305           7.887         21.03         10.22         0 \r\n 1990          306           5.355         10.54         3.178         0 \r\n 1990          307           2.363         3.21         -2.547         10.16 \r\n 1990          308           8.48          0.959        -5.296         0 \r\n 1990          309           10.997        4.908        -8.52          0 \r\n 1990          310           4.136         1.129        -12.13         5.33 \r\n 1990          311           11.367       -2.52         -14.32         0 \r\n 1990          312           7.151         2.074        -10.52         0 \r\n 1990          313           10.471        5.232        -3.166         0 \r\n 1990          314           5.904         5.679        -3.1           0 \r\n 1990          315           9.811         10.31        -3.232         0 \r\n 1990          316           9.519         9.79         -5.124         0 \r\n 1990          317           9.73          12.75        -2.729         0 \r\n 1990          318           10.043        20.93         4.186         0 \r\n 1990          319           9.025         18.63         4.645         0 \r\n 1990          320           9.841         11.48        -3.345         0 \r\n 1990          321           5.93          10.43        -5.124         0 \r\n 1990          322           7.211         13.58         1.384         0 \r\n 1990          323           8.056         15.34         0.223         0 \r\n 1990          324           1.002         16.64         7.05          0.25 \r\n 1990          325           8.27          17.79        -2.584         0 \r\n 1990          326           8.486         12.89        -3.07          0 \r\n 1990          327           6.183         9.57          0.196         0 \r\n 1990          328           6.582         16.91        -0.805         0 \r\n 1990          329           7.704         1.44         -6.605         0 \r\n 1990          330           0.638         5.148        -5.288         0 \r\n 1990          331           1.098        -2.254        -9.1           0 \r\n 1990          332           8.047        -0.489        -12.8          0 \r\n 1990          333           7.82          6.274        -10.12         0 \r\n 1990          334           8.075         14.03         0.731         0 \r\n 1990          335           8.131         4.234        -7.22          0 \r\n 1990          336           1.995        -0.035        -8.1           0 \r\n 1990          337           5.097        -4.366        -13.6          9.91 \r\n 1990          338           6.808        -3.108        -13.73         0 \r\n 1990          339           7.297         7.44         -3.166         0 \r\n 1990          340           7.792         3.548        -8.48          0 \r\n 1990          341           7.819         7.31         -2.796         0 \r\n 1990          342           7.75          10.94        -4.652         0 \r\n 1990          343           7.751         12.7         -2.937         0 \r\n 1990          344           7.547         11.68        -2.423         0 \r\n 1990          345           7.591         12.05        -2.984         0 \r\n 1990          346           2.528         3.095        -4.806         0 \r\n 1990          347           7.679        -0.055        -9             0 \r\n 1990          348           1.544        -0.259        -4.309         0 \r\n 1990          349           3.186        -0.239        -13.59         8.89 \r\n 1990          350           3.912         1.47         -14.13         0 \r\n 1990          351           2.584         0.914        -16.01         8.38 \r\n 1990          352           4.582        -4.463        -18.36         0 \r\n 1990          353           3.331        -4.576        -12.24         0 \r\n 1990          354           3.433        -12.2         -25.12         0 \r\n 1990          355           3.178        -22.45        -28.6          2.03 \r\n 1990          356           7.629        -20.11        -28.73         0 \r\n 1990          357           7.616        -17.22        -31.2          0 \r\n 1990          358           7.373        -5.628        -20.58         0 \r\n 1990          359           7.587        -5.648        -26.51         0 \r\n 1990          360           4.413        -11.18        -27.67         0 \r\n 1990          361           6.151        -5.763        -16.61         0 \r\n 1990          362           1.804        -1.064        -17.44         0 \r\n 1990          363           3.624        -17.37        -24.55         0 \r\n 1990          364           7.736        -18.78        -25.35         0 \r\n 1990          365           7.624        -7.72         -21.5          0 \r\n 1991          1             7.167        -1.592        -16.96         0 \r\n 1991          2             7.118        -13.42        -24.93         1.52 \r\n 1991          3             6.207        -12.37        -24.84         0 \r\n 1991          4             7.014        -10.08        -22.12         0 \r\n 1991          5             4.845        -8.71         -18.6          3.56 \r\n 1991          6             6.983        -13.79        -22.92         0 \r\n 1991          7             8.347        -9.99         -24.43         0 \r\n 1991          8             3.818        -5.781        -13.5          0 \r\n 1991          9             6.909        -7.17         -17.9          0 \r\n 1991          10            3.755        -7.43         -18.71         0 \r\n 1991          11            4.657        -6.538        -8.71          5.84 \r\n 1991          12            6.079        -7.68         -13.12         0 \r\n 1991          13            7.374         2.032        -11.36         0 \r\n 1991          14            8.229         6.626        -6.633         0 \r\n 1991          15            4.424        -1.204        -6.791         0 \r\n 1991          16            4.361        -2.271        -7.52          0 \r\n 1991          17            6.841        -0.324        -15.04         0 \r\n 1991          18            8.368         1.262        -11.92         0 \r\n 1991          19            5.171         3.841        -4.479         0 \r\n 1991          20            7.74         -4.469        -22.11         0 \r\n 1991          21            9.534        -13.09        -26.07         0 \r\n 1991          22            6.075         2.553        -18.86         0.76 \r\n 1991          23            8.558        -2.993        -18.3          0 \r\n 1991          24            7.041        -13.21        -23.87         0 \r\n 1991          25            10.051       -11.1         -21.7          1.27 \r\n 1991          26            10.183       -5.887        -20.01         0 \r\n 1991          27            10.232       -1.371        -10.72         0 \r\n 1991          28            6.809        -3.927        -14.95         0 \r\n 1991          29            9.543        -12.74        -23.78         0 \r\n 1991          30            10.353       -3.203        -22.38         0 \r\n 1991          31            10.291       -1.448        -20.71         0 \r\n 1991          32            10.675        1.375        -12.08         0 \r\n 1991          33            11.054        6.383        -6.818         0 \r\n 1991          34            8.206         4.76         -0.646         0 \r\n 1991          35            10.641        6.899        -1.854         0 \r\n 1991          36            11.653        11.48        -3.675         0 \r\n 1991          37            10.16         8.83         -6.043         0 \r\n 1991          38            11.848        6.824        -2.47          0 \r\n 1991          39            11.966        12.47        -1.23          0 \r\n 1991          40            10.894        5.882        -1.449         0 \r\n 1991          41            11.099        4.132        -4.901         0 \r\n 1991          42            10.33        -2.84         -8.42          0 \r\n 1991          43            11.106        4.797        -8.76          0 \r\n 1991          44            3.501         4.776        -7.57          0 \r\n 1991          45            12.127       -7.58         -17.43         0 \r\n 1991          46            12.442       -7.35         -20.06         0 \r\n 1991          47            7.127         6.89         -10.03         0 \r\n 1991          48            9.628         4.786        -5.179         0 \r\n 1991          49            6.431        -0.126        -5.479         11.18 \r\n 1991          50            10.647        2.527        -11.33         0 \r\n 1991          51            12.147        7.55         -6.667         0 \r\n 1991          52            11.523        11.15        -1.044         0 \r\n 1991          53            9.472         0.457        -4.594         0 \r\n 1991          54            6.306         3.263        -9.51          0 \r\n 1991          55            12.598       -3.401        -12.7          0 \r\n 1991          56            12.423       -2.869        -15.58         0 \r\n 1991          57            8.155        -1.514        -9.13          0.51 \r\n 1991          58            10.447        5.004        -6.073         0 \r\n 1991          59            14.767        11.43        -4.078         0 \r\n 1991          60            2.047         8.29         -5.739         0.25 \r\n 1991          61            8.924        -5.681        -14.68         0 \r\n 1991          62            8.441         0.477        -15.23         0 \r\n 1991          63            15.405        17.17        -6.432         0 \r\n 1991          64            13.464        21.1         -2.367         0 \r\n 1991          65            16.538       -0.015        -8.55          0 \r\n 1991          66            16.422        5.187        -12.78         0 \r\n 1991          67            11.571        10.67        -4.248         0 \r\n 1991          68            17.172        10.56        -8.56          0 \r\n 1991          69            7.054         8.56         -2.821         0 \r\n 1991          70            16.138        14.73        -0.298         0 \r\n 1991          71            0.961         3.647        -2.669         0 \r\n 1991          72            11.882       -0.92         -7.16          6.35 \r\n 1991          73            17.805        3.541        -9.44          0 \r\n 1991          74            14.859        3.873        -6.646         0 \r\n 1991          75            5.291         3.4           0.052         0 \r\n 1991          76            4.843         6.15          0.513         0 \r\n 1991          77            7.382         9.38         -0.071         0 \r\n 1991          78            19.082        16.23        -2.821         0 \r\n 1991          79            4.919         15.12         4.055         5.33 \r\n 1991          80            4.336         9.33          4.018         0 \r\n 1991          81            2.081         7.01          0.684         10.41 \r\n 1991          82            4.789         6.2           0.542         16.76 \r\n 1991          83            17.899        15.41        -0.891         0 \r\n 1991          84            10.734        20.03         2.954         0 \r\n 1991          85            16.782        24.46         8.35          0 \r\n 1991          86            5.84          9.29         -8.28          20.07 \r\n 1991          87            20.142        6.084        -9.09          0 \r\n 1991          88            21.711       -1.211        -8.55          0 \r\n 1991          89            15.879        7.95         -9.08          0 \r\n 1991          90            20.234        13.77        -0.484         0 \r\n 1991          91            21.163        15.55        -1.437         0 \r\n 1991          92            20.055        20.67         3.022         0 \r\n 1991          93            14.859        19.83         4.569         0 \r\n 1991          94            20.485        24.31         5.542         0 \r\n 1991          95            20.704        30.48         8.37          0 \r\n 1991          96            20.255        32.03         15.65         0 \r\n 1991          97            21.06         28.65         13.76         0 \r\n 1991          98            3.164         13.72         3.296         0 \r\n 1991          99            15.446        10.07        -1.996         0 \r\n 1991          100           21.628        14.03        -4.118         0 \r\n 1991          101           2.739         7.44          1.611         16.51 \r\n 1991          102           1.207         4.356         1.866         27.686 \r\n 1991          103           2.596         6.882         2.734         14.986 \r\n 1991          104           15.241        13.06         3.924         0 \r\n 1991          105           17.763        11.82         2.214         0 \r\n 1991          106           22.844        13.7          0.393         0 \r\n 1991          107           19.424        15.71         0.63          1.778 \r\n 1991          108           4.201         10.31         6.009         4.826 \r\n 1991          109           5.014         10.93         4.369         0 \r\n 1991          110           16.398        12.29         2.889         0 \r\n 1991          111           23.473        15.77         0.904         0 \r\n 1991          112           16.232        16.7          3.402         0 \r\n 1991          113           21.066        12.88         1.1           0 \r\n 1991          114           24.459        20.16        -0.136         0 \r\n 1991          115           15.143        18.2          7.63          2.794 \r\n 1991          116           3.401         15.62         7.74          20.574 \r\n 1991          117           23.485        17.36         7.28          0 \r\n 1991          118           22.168        21.3          4.932         4.572 \r\n 1991          119           9.098         16.65         5.599         3.048 \r\n 1991          120           11.617        11.16         5.027         0 \r\n 1991          121           25.428        15.06         1.346         0 \r\n 1991          122           16.16         15.55         3.341         1.524 \r\n 1991          123           1.656         10.85         4.594         16.002 \r\n 1991          124           6.221         8.8           4.474         10.16 \r\n 1991          125           7.844         7.29          2.489         0 \r\n 1991          126           17.734        12.53         1.751         0 \r\n 1991          127           14.851        12.71         0.413         16.256 \r\n 1991          128           19.928        21.51         7.81          0 \r\n 1991          129           17.262        25.43         10.72         0 \r\n 1991          130           17.092        23.25         13.6          0 \r\n 1991          131           20.201        26.97         15.61         0 \r\n 1991          132           20.639        29.57         15.91         2.286 \r\n 1991          133           27.664        29.39         14.09         0 \r\n 1991          134           20.953        31.06         15.06         0.508 \r\n 1991          135           11.39         23.92         17            0.508 \r\n 1991          136           20.563        27.6          15.99         6.35 \r\n 1991          137           3.769         17.04         9.86          7.366 \r\n 1991          138           5.271         9.88          7.5           0 \r\n 1991          139           7.965         14.58         7.79          0 \r\n 1991          140           11.564        21.07         13.69         0 \r\n 1991          141           14.257        26.6          18.11         0 \r\n 1991          142           17.882        28.27         19.02         0 \r\n 1991          143           22.237        28.45         16.63         0 \r\n 1991          144           20.624        25.18         14.75         0 \r\n 1991          145           11.231        25.24         14.48         29.21 \r\n 1991          146           24.332        27.73         17.33         0 \r\n 1991          147           27.662        30.66         16.25         0 \r\n 1991          148           19.263        32.8          18.52         0.254 \r\n 1991          149           19.919        27.42         17.08         1.016 \r\n 1991          150           24.766        28.06         18.58         26.162 \r\n 1991          151           17.459        27.13         17.76         0 \r\n 1991          152           18.091        28.31         17.98         0 \r\n 1991          153           25.4          28.98         16.4          0 \r\n 1991          154           21.283        30.58         18.9          0 \r\n 1991          155           8.266         19.83         14.42         0 \r\n 1991          156           17.875        23.53         14.61         0 \r\n 1991          157           27.807        25.06         13.81         0 \r\n 1991          158           27.463        26.23         12.37         0 \r\n 1991          159           11.995        23.19         13.36         0 \r\n 1991          160           22.879        26.68         16.68         10.922 \r\n 1991          161           19.641        28.12         17.02         0 \r\n 1991          162           27.387        30.38         15.76         0 \r\n 1991          163           29.125        32.4          17.06         0 \r\n 1991          164           12.461        25.36         18.08         4.57 \r\n 1991          165           17.192        27.82         17.32         5.08 \r\n 1991          166           17.415        24.32         13.07         12.7 \r\n 1991          167           30.706        26.17         10.8          0 \r\n 1991          168           27.802        27.86         13.23         0 \r\n 1991          169           26.586        30.16         17.66         0 \r\n 1991          170           24.268        31.34         17.48         0 \r\n 1991          171           25.242        30.9          17.79         0 \r\n 1991          172           10.253        23.13         15.98         16.76 \r\n 1991          173           6.15          16.3          13.98         0 \r\n 1991          174           9.855         19.41         14.37         0 \r\n 1991          175           16.126        25.46         16.59         0 \r\n 1991          176           26.551        30.74         19.22         0 \r\n 1991          177           25.907        34.09         23.39         0.51 \r\n 1991          178           24.429        32.62         22.74         0 \r\n 1991          179           26.977        32.64         23.18         0 \r\n 1991          180           25.256        33.58         22.42         0 \r\n 1991          181           26.726        32.75         19.68         0 \r\n 1991          182           28.961        30.25         18.77         3.05 \r\n 1991          183           25.885        28.68         16.39         0 \r\n 1991          184           18.862        24.81         14.03         0 \r\n 1991          185           23.795        28.46         13.41         0 \r\n 1991          186           26.384        32.64         14.53         0 \r\n 1991          187           26.234        30.74         17.33         4.83 \r\n 1991          188           15.722        26.74         14.67         15.24 \r\n 1991          189           22.386        24.5          12.32         0 \r\n 1991          190           9.725         25.2          15.95         0 \r\n 1991          191           20.714        27.41         17.36         0 \r\n 1991          192           9.982         25.29         18.5          14.22 \r\n 1991          193           25.781        27.41         16.63         7.37 \r\n 1991          194           19.692        24.98         14.66         0 \r\n 1991          195           28.538        27.04         13.56         0 \r\n 1991          196           27.692        31.06         15.83         0 \r\n 1991          197           27.327        33.37         20.84         0 \r\n 1991          198           26.296        33.5          21.021        0 \r\n 1991          199           24.736        33.63         21.16         0 \r\n 1991          200           17.968        32.07         20.61         2.29 \r\n 1991          201           10.947        31.6          21.61         17.78 \r\n 1991          202           23.615        30.53         20.886        0 \r\n 1991          203           16.707        30.53         18.144        42.42 \r\n 1991          204           20.614        24.87         13.62         0 \r\n 1991          205           24.91         27.37         11.62         0 \r\n 1991          206           27.023        23.35         10.21         0 \r\n 1991          207           13.506        24.82         10.43         0 \r\n 1991          208           13.478        24.73         16.17         0 \r\n 1991          209           10.049        21.68         13.62         19.3 \r\n 1991          210           24.792        25.71         11.74         0 \r\n 1991          211           24.695        28.38         13.75         0 \r\n 1991          212           26.201        29.17         17.58         0 \r\n 1991          213           23.461        30.17         15.57         0 \r\n 1991          214           13.916        28.93         17.8          4.57 \r\n 1991          215           24.362        24.84         14.82         0 \r\n 1991          216           18.611        23.43         14.08         0 \r\n 1991          217           13.651        23.09         14.41         0 \r\n 1991          218           5.154         20.32         15.94         0 \r\n 1991          219           5.757         25.36         19.21         0 \r\n 1991          220           3.504         20.78         17.34         32 \r\n 1991          221           22.918        25.5          13.64         3.81 \r\n 1991          222           24.847        26.1          12.14         0 \r\n 1991          223           25.552        26.52         13.17         0 \r\n 1991          224           21.634        28.45         12.77         0 \r\n 1991          225           24.43         28.59         14.85         0 \r\n 1991          226           24.015        27.7          12.4          0 \r\n 1991          227           23.276        29.24         15.1          0 \r\n 1991          228           8.685         26.7          15.87         7.37 \r\n 1991          229           23.18         30.11         14.68         0 \r\n 1991          230           22.501        24.89         12.46         0 \r\n 1991          231           25.344        23.98         9.85          0 \r\n 1991          232           18.466        25.23         12.09         12.95 \r\n 1991          233           23.629        31.94         16.66         0 \r\n 1991          234           22.163        27.9          14.07         0 \r\n 1991          235           15.689        29.05         17.98         1.02 \r\n 1991          236           22.497        30.21         16.71         0 \r\n 1991          237           22.323        31.91         19.44         0 \r\n 1991          238           22.565        31.83         19.81         0 \r\n 1991          239           21.905        31.67         18.19         0 \r\n 1991          240           21.2          31.04         19.31         0 \r\n 1991          241           20.632        31.73         19.32         0 \r\n 1991          242           20.308        32.42         18.28         18.54 \r\n 1991          243           22.622        27.96         14.21         0 \r\n 1991          244           21.077        27.07         14.44         0 \r\n 1991          245           11.922        28.15         19.36         0 \r\n 1991          246           18.102        24.98         9.84          4.83 \r\n 1991          247           22.093        26            6.402         0 \r\n 1991          248           17.588        27.03         13.66         0.51 \r\n 1991          249           20.273        31.1          11.42         0 \r\n 1991          250           11.559        29.64         16.4          0 \r\n 1991          251           7.651         26.4          21.02         3.05 \r\n 1991          252           17.784        30            17.56         0 \r\n 1991          253           13.177        22.88         14.92         0 \r\n 1991          254           9.909         28.67         14.76         11.18 \r\n 1991          255           3.497         23.79         19.97         0 \r\n 1991          256           14.258        29.53         19.91         12.19 \r\n 1991          257           8.319         26.82         20.31         23.11 \r\n 1991          258           17.512        25.99         11.57         0 \r\n 1991          259           19.508        22.87         9.69          0 \r\n 1991          260           6.97          20.05         5.656         0 \r\n 1991          261           8.292         7.79         -0.493         0 \r\n 1991          262           19.51         13.99        -3.364         0 \r\n 1991          263           19.28         19.39        -1.543         0 \r\n 1991          264           12.552        19.97         5.14          0 \r\n 1991          265           16.127        19.69         2.699         0 \r\n 1991          266           8.708         15.87         0.856         0 \r\n 1991          267           9.972         16.42         3.693         4.32 \r\n 1991          268           18.592        19.16         4.635         0 \r\n 1991          269           17.961        19.99        -0.419         0 \r\n 1991          270           16.185        18.12         3.41          0 \r\n 1991          271           17.655        21.31         0.506         0 \r\n 1991          272           15.343        29.04         8.67          0 \r\n 1991          273           12.573        20.6          6.085         0 \r\n 1991          274           14.636        26.44         6.486         0 \r\n 1991          275           12.874        25.55         7.29          0 \r\n 1991          276           2.702         11.31         3.998         0.76 \r\n 1991          277           8.179         13.32         3.352         0 \r\n 1991          278           10.041        8.36         -1.93          0 \r\n 1991          279           16.026        11.7         -3.994         0 \r\n 1991          280           15.343        21.79        -3.137         0 \r\n 1991          281           10.969        27.5          7.54          0 \r\n 1991          282           13.35         21.65         4.34          0 \r\n 1991          283           13.348        22.16         1.583         0 \r\n 1991          284           12.326        24.32         9.31          0 \r\n 1991          285           14.736        19.61         3.931         0 \r\n 1991          286           8.972         21.82         5.713         0 \r\n 1991          287           11.577        12.14         0.498         0 \r\n 1991          288           13.844        13.64        -5.184         0 \r\n 1991          289           13.995        27.93         4.888         0 \r\n 1991          290           12.679        24.13         3.543         0 \r\n 1991          291           5.094         5.966        -4.721         3.05 \r\n 1991          292           7.557         8.81         -7.41          0 \r\n 1991          293           11.695        16.88        -2.339         0 \r\n 1991          294           12.642        20.92         5.149         0 \r\n 1991          295           12.264        26.14         8.45          0 \r\n 1991          296           4.732         12.45         2.413         0 \r\n 1991          297           4.158         10.11        -2.365         0 \r\n 1991          298           8.764         9.88         -6.284         0 \r\n 1991          299           2.843         9.04          4.868         0 \r\n 1991          300           2.11          14.09         8.57          0 \r\n 1991          301           1.905         17.64        -0.465         4.57 \r\n 1991          302           6.301        -0.465        -7.65          0.76 \r\n 1991          303           10.831       -0.259        -9.72          0 \r\n 1991          304           3.797        -2.748        -5.646         5.84 \r\n 1991          305           5.459        -2.606        -9.28          22.35 \r\n 1991          306           9.763        -9.05         -13.77         0 \r\n 1991          307           10.874       -6.919        -19.62         0 \r\n 1991          308           9.896        -6.326        -20.86         0 \r\n 1991          309           4.026         2.413        -7.35          0.51 \r\n 1991          310           7.191        -7.37         -21.2          2.03 \r\n 1991          311           11.35        -8.85         -22.79         0 \r\n 1991          312           10.363       -4.318        -17.07         0 \r\n 1991          313           9.228         3.256        -5.725         0 \r\n 1991          314           4.48          0.137        -4.76          0 \r\n 1991          315           2.312         0.147        -3.278         0 \r\n 1991          316           8.225         3.493        -2.651         0 \r\n 1991          317           8.487         11.36        -1.732         0 \r\n 1991          318           0.902         4.04         -2.917         0.51 \r\n 1991          319           5.435         4.391        -0.637         0.51 \r\n 1991          320           7.911         4.382        -2.12          0 \r\n 1991          321           0.981         8.15          3.119         15.24 \r\n 1991          322           3.858         7.73          2.479         5.08 \r\n 1991          323           7.647         9.48         -0.598         0 \r\n 1991          324           9.07          10.82        -2.983         0 \r\n 1991          325           2.119         6.055         2.443         0.25 \r\n 1991          326           2.15          3.067        -8.27          0 \r\n 1991          327           3.507        -7.2          -11.05         0 \r\n 1991          328           8.752        -3.24         -14.29         0 \r\n 1991          329           7.269        -5.752        -17.09         0 \r\n 1991          330           1.717         1.08         -7.33          2.79 \r\n 1991          331           4.928         1.345        -3.811         0.76 \r\n 1991          332           1.626        -1.524        -6.012         1.78 \r\n 1991          333           0.384         0.119        -5.384         33.27 \r\n 1991          334           8.281        -1.912        -16.16         10.16 \r\n 1991          335           8.049         0.316        -17.41         0 \r\n 1991          336           3.731        -4.166        -17.56         0 \r\n 1991          337           4.102        -5.327        -19.93         0.51 \r\n 1991          338           3.66         -9.62         -21.82         0 \r\n 1991          339           3.814        -1.126        -13.75         0 \r\n 1991          340           5.378         3.596        -13.43         0 \r\n 1991          341           7.613         8.14         -1.571         0 \r\n 1991          342           4.388         3.577        -3.297         0 \r\n 1991          343           5.658         2.683        -2.076         0 \r\n 1991          344           5.642         4.212        -1.827         0 \r\n 1991          345           5.143         4.202        -5.848         0 \r\n 1991          346           2.997         3.274        -2.299         12.19 \r\n 1991          347           3.423         3.34         -4.777         0 \r\n 1991          348           4.746         0.625        -9.483         0 \r\n 1991          349           5.471        -0.881        -11.591        0 \r\n 1991          350           5.172         4.162        -6.423         0 \r\n 1991          351           5.643         1.476        -10.706        0 \r\n 1991          352           5.735        -3.098        -12.352        0 \r\n 1991          353           1.848         0.303        -10.236        0 \r\n 1991          354           2.951         2.64         -4.339         0 \r\n 1991          355           7.78          3.128        -4.043         0 \r\n 1991          356           3.313         1.701        -4.593         0 \r\n 1991          357           7.513         1.847        -6.991         0 \r\n 1991          358           7.459         3.799        -6.963         0 \r\n 1991          359           6.845         3.053        -7.626         0 \r\n 1991          360           7.54          0.343        -6.138         0 \r\n 1991          361           1.327        -1.407        -4.149         0 \r\n 1991          362           1.769        -0.393        -2.239         0 \r\n 1991          363           1.312        -0.891        -1.875         0 \r\n 1991          364           1.037         0.338        -1.618         0 \r\n 1991          365           1.365         0.407        -0.857         0 \r\n 1992          1             1.019         1.954         0.115         0 \r\n 1992          2             2.239         2.413        -0.379         0 \r\n 1992          3             3.999         4.27         -2.101         0 \r\n 1992          4             2.885        -0.235        -2.12          0 \r\n 1992          5             1.196         0.034        -2.186         0 \r\n 1992          6             2.083         1.061        -1.867         0 \r\n 1992          7             0.621         3.133        -3.156         1.02 \r\n 1992          8             0.989        -0.789        -11.841        2.03 \r\n 1992          9             7.582        -0.899        -11.69         0 \r\n 1992          10            7.661         5.476        -6.109         0 \r\n 1992          11            8.027         6.759        -3.059         0 \r\n 1992          12            1.432        -0.77         -8.936         0 \r\n 1992          13            5.187        -1.75         -12.314        0 \r\n 1992          14            6.56         -1.029        -25.647        0 \r\n 1992          15            9.065        -1.797        -21.748        11.43 \r\n 1992          16            6.586         2.203        -13.38         0 \r\n 1992          17            8.778        -10.089       -16.437        0 \r\n 1992          18            6.349        -1.981        -15.987        0 \r\n 1992          19            7.472         4.933        -8.609         0 \r\n 1992          20            9.186         6.41         -6.183         0 \r\n 1992          21            9.394         5.791        -2.51          0 \r\n 1992          22            2.201         1.829        -5.273         0 \r\n 1992          23            8.089        -1.191        -14.072        0 \r\n 1992          24            3.743         1.921        -12.576        0 \r\n 1992          25            8.937         0.604        -12.232        3.81 \r\n 1992          26            9.88          3.533        -7.402         0 \r\n 1992          27            3.447        -2.367        -10.683        0 \r\n 1992          28            5.41          3.607        -5.577         0 \r\n 1992          29            6.407         5.879        -2.619         0 \r\n 1992          30            7.638         5.574        -1.667         0 \r\n 1992          31            8.73          4.379        -1.904         0 \r\n 1992          32            10.332        5.871        -2.318         0 \r\n 1992          33            9.522         8.891        -0.363         0 \r\n 1992          34            6.238         2.622        -3.176         0 \r\n 1992          35            6.217         1.192        -3.875         0 \r\n 1992          36            9.162         8.722        -5.004         0 \r\n 1992          37            7.563         6.679        -0.288         0 \r\n 1992          38            5.668         2.49         -9.031         0 \r\n 1992          39            9.275        -3.384        -11.922        0 \r\n 1992          40            3.629        -3.582        -8.462         0 \r\n 1992          41            7.376        -0.219        -9.047         0 \r\n 1992          42            6.022        -5.398        -10.972        1.27 \r\n 1992          43            5.732        -0.614        -9.655         0 \r\n 1992          44            4.885         2.296        -2.92          2.03 \r\n 1992          45            2.254         0.787        -0.889         1.52 \r\n 1992          46            7.071         2.846        -0.29          7.62 \r\n 1992          47            7             4.742        -0.604         0 \r\n 1992          48            2.469         4.263         1.148         3.3 \r\n 1992          49            3.708         2.006         0.478         0 \r\n 1992          50            7.301         1.006        -4.05          3.81 \r\n 1992          51            10.659        4.424        -6.703         0 \r\n 1992          52            4.473        -1.031        -6.908         0 \r\n 1992          53            6.314         2.291        -4.528         0 \r\n 1992          54            4.093         3.351        -0.269         0 \r\n 1992          55            9.499         1.525        -4.872         2.54 \r\n 1992          56            14.643       -2.32         -10.11         0 \r\n 1992          57            10.829        8.66         -3.916         0 \r\n 1992          58            8.046         10.56         1.422         0 \r\n 1992          59            13.241        8.84         -1.051         0 \r\n 1992          60            15.105        14.48        -2.699         0 \r\n 1992          61            15.097        21.29         3.933         0 \r\n 1992          62            12.156        18.08         3.241         0 \r\n 1992          63            3.099         6.141         2.386         0 \r\n 1992          64            3.17          11.46         5.348         0 \r\n 1992          65            1.352         14.35         11.01         8.13 \r\n 1992          66            4.978         13.31         6.987         4.83 \r\n 1992          67            10.007        14.88         6.056         0 \r\n 1992          68            5.384         7.82          3.847         3.81 \r\n 1992          69            9.471         4.499        -9.76          29.21 \r\n 1992          70            17.52        -3.992        -12.23         0 \r\n 1992          71            8.842         3.503        -7.85          0.76 \r\n 1992          72            17.884       -2.319        -9.7           0 \r\n 1992          73            10.649        4.423        -8.35          0 \r\n 1992          74            13.095        4.33         -2.3           0 \r\n 1992          75            17.913        4.503        -6.76          0 \r\n 1992          76            13.052        16.33        -0.108         0 \r\n 1992          77            17.424        3.56         -2.395         0 \r\n 1992          78            12.104        3.882        -2.935         0 \r\n 1992          79            14.466        8.37         -5.335         0 \r\n 1992          80            9.463         5.597        -2.271         0 \r\n 1992          81            3.337         0.516        -5.353         0 \r\n 1992          82            19.53         8.32         -8.98          0 \r\n 1992          83            19.877        14.66        -6.01          0 \r\n 1992          84            19.396        19.61        -1.467         0 \r\n 1992          85            19.341        13.09        -2.888         0 \r\n 1992          86            20.361        4.446        -7.43          0 \r\n 1992          87            18.218        10.9         -8.56          0 \r\n 1992          88            2.108         3.789         1.356         13.97 \r\n 1992          89            5.145         5.31         -0.551         0 \r\n 1992          90            21.364        12.5         -2.159         0 \r\n 1992          91            18.68         3.713        -4.412         0 \r\n 1992          92            19.359        5.08         -6.908         0 \r\n 1992          93            21.93         9.19         -8.54          0 \r\n 1992          94            19.488        20            0.054         0 \r\n 1992          95            22.175        13.84        -3.069         0 \r\n 1992          96            21.542        21.84         2.737         0 \r\n 1992          97            17.238        20.95         6.316         0 \r\n 1992          98            16.532        17.67         1.14          0 \r\n 1992          99            2.116         6.399         0.488         6.35 \r\n 1992          100           10.995        13.4         -1.637         0 \r\n 1992          101           5.412         16.77         5.083         0.508 \r\n 1992          102           7.71          5.894        -4.135         0 \r\n 1992          103           5.019        -1.836        -5.982         0 \r\n 1992          104           3.161         3.209        -3.45          0.508 \r\n 1992          105           10.175        16.28         2.055         0 \r\n 1992          106           8.629         15.46         5.387         3.302 \r\n 1992          107           5.238         8.21          4.289         0 \r\n 1992          108           2.761         7.89          5.084         0 \r\n 1992          109           2.151         19.47         7.74          3.556 \r\n 1992          110           9.388         13.09         5.675         0 \r\n 1992          111           2.628         7.8           0.716         0 \r\n 1992          112           7.547         1.856        -1.948         0 \r\n 1992          113           12.901        3.42         -2.376         0 \r\n 1992          114           12.604        8.28         -1.477         0 \r\n 1992          115           10.956        10.7          1.007         0 \r\n 1992          116           5.919         5.695         0.092         0 \r\n 1992          117           10.172        7.58         -0.173         0 \r\n 1992          118           26.152        14.45        -0.89          0 \r\n 1992          119           22.744        23.99         4.864         0 \r\n 1992          120           24.531        28.96         7.46          0 \r\n 1992          121           24.715        32.11         7.71          0 \r\n 1992          122           25.017        33.41         13.28         0 \r\n 1992          123           25.657        23.98         8.55          0 \r\n 1992          124           26.297        22.34         4.092         0 \r\n 1992          125           22.362        22.1          4.732         0 \r\n 1992          126           27.328        16.47         0.874         0 \r\n 1992          127           27.009        21.4          1.167         0 \r\n 1992          128           27.13         25.25         6.959         0 \r\n 1992          129           26.11         27.48         8.44          0 \r\n 1992          130           24.768        30.43         14.4          0 \r\n 1992          131           23.594        28.38         14.61         10.414 \r\n 1992          132           18.012        23.32         14.77         0 \r\n 1992          133           21.437        22.77         9.27          0 \r\n 1992          134           6.726         10.59         3.467         2.286 \r\n 1992          135           23.394        24            7.65          2.032 \r\n 1992          136           15.472        26.16         11.46         24.13 \r\n 1992          137           14.947        25.56         12.32         36.576 \r\n 1992          138           10.73         17.81         7.94          0 \r\n 1992          139           25.492        21.44         6.38          0.254 \r\n 1992          140           27.349        27.49         13            0 \r\n 1992          141           23.205        29.17         16.32         0 \r\n 1992          142           10.255        23.31         17.97         16.764 \r\n 1992          143           13.884        22.64         7.25          0 \r\n 1992          144           27.78         18.05         4.816         0 \r\n 1992          145           26.861        18.04         4.28          1.016 \r\n 1992          146           3.998         10.95         3.418         2.794 \r\n 1992          147           19.989        15.68         2.709         0 \r\n 1992          148           26.224        18.72         3.644         0 \r\n 1992          149           27.857        19.85         4.806         0 \r\n 1992          150           28.252        22.29         7.01          0 \r\n 1992          151           28.654        24.12         6.862         0 \r\n 1992          152           23.922        25.07         11.74         0 \r\n 1992          153           8.485         20.64         13.32         0 \r\n 1992          154           23.541        26.21         11.26         1.016 \r\n 1992          155           25.28         28.05         12.21         0.254 \r\n 1992          156           26.385        25.93         13.59         0 \r\n 1992          157           24.164        28.6          11.56         0 \r\n 1992          158           28.131        23.29         11.6          3.556 \r\n 1992          159           20.962        26            8.84          0.508 \r\n 1992          160           8.559         21.57         12.75         1.524 \r\n 1992          161           14.925        26.08         14.84         2.286 \r\n 1992          162           21.038        27.87         15.99         0 \r\n 1992          163           27.876        29.61         14.3          0 \r\n 1992          164           21.99         30.76         15.64         0 \r\n 1992          165           27.748        31.12         15.24         0 \r\n 1992          166           22.816        29.72         15.23         0 \r\n 1992          167           24.519        30.83         17.05         4.318 \r\n 1992          168           19.23         29.16         17.15         17.78 \r\n 1992          169           23.437        23.5          15.33         0.508 \r\n 1992          170           27.725        28.1          14.87         0 \r\n 1992          171           9.912         23.11         12.41         8.128 \r\n 1992          172           15.262        18.4          8.75          0 \r\n 1992          173           15.689        21.57         5.797         0 \r\n 1992          174           20.25         26.92         14.68         0.254 \r\n 1992          175           22.973        29.13         13.35         0 \r\n 1992          176           16.229        27.66         13.4          0.254 \r\n 1992          177           21.747        23.94         10.66         0 \r\n 1992          178           22.099        23.55         9.14          0 \r\n 1992          179           9.558         23.1          9.73          0 \r\n 1992          180           19.157        29.22         15.09         0 \r\n 1992          181           14.191        20.32         15.04         1.778 \r\n 1992          182           21.703        29.55         14.25         0 \r\n 1992          183           20.011        31            16.71         6.35 \r\n 1992          184           11.154        20.75         12.29         3.81 \r\n 1992          185           26.99         24.85         10.81         0.254 \r\n 1992          186           23.772        24.22         13.4          0.254 \r\n 1992          187           22.897        23.96         13.3          0 \r\n 1992          188           21.124        25.03         11.08         0 \r\n 1992          189           16.918        28.46         18.64         9.906 \r\n 1992          190           25.571        27.8          17.81         1.27 \r\n 1992          191           14.02         26.23         15.46         56.896 \r\n 1992          192           23.677        25.15         14.64         0 \r\n 1992          193           14.142        22.9          14.44         1.27 \r\n 1992          194           10.429        23.97         16.98         69.088 \r\n 1992          195           5.684         22.75         17.08         10.922 \r\n 1992          196           24.632        23.69         14.48         0 \r\n 1992          197           7.806         22.37         14.17         0.254 \r\n 1992          198           27.021        26.45         13.13         0 \r\n 1992          199           22.553        24.75         13.17         0 \r\n 1992          200           27.602        26.63         12.92         0 \r\n 1992          201           20.789        25.89         14.15         0 \r\n 1992          202           25.826        21.04         10.43         0 \r\n 1992          203           16.069        21.48         9.48          8.636 \r\n 1992          204           4.34          19.46         12.48         20.828 \r\n 1992          205           7.07          16.98         12.45         0 \r\n 1992          206           4.848         20            14.28         8.382 \r\n 1992          207           8.649         24.93         18.92         2.286 \r\n 1992          208           24.007        26.54         15.64         0 \r\n 1992          209           26.78         27.28         14.6          0 \r\n 1992          210           18.951        27.66         16.97         0 \r\n 1992          211           11.676        20.21         14.05         2.54 \r\n 1992          212           9.845         19.39         10.65         1.016 \r\n 1992          213           25.233        24.15         8.65          0 \r\n 1992          214           25.321        27.17         12.54         0 \r\n 1992          215           25.555        25.01         15.76         21.59 \r\n 1992          216           23.994        23.61         11.63         1.524 \r\n 1992          217           18.302        21.06         9.57          0 \r\n 1992          218           16.459        21.98         13.42         0 \r\n 1992          219           8.246         22.25         15.22         0 \r\n 1992          220           20.741        28.91         18.84         23.114 \r\n 1992          221           22.191        30.95         17.14         0 \r\n 1992          222           21.926        31.21         20.75         0 \r\n 1992          223           23.58         25.84         15.17         0 \r\n 1992          224           24.766        27.09         13.92         4.064 \r\n 1992          225           22.406        21.45         11.28         5.842 \r\n 1992          226           19.962        22.84         9.34          0 \r\n 1992          227           24.07         21.01         7.18          0 \r\n 1992          228           22.937        22.05         7.2           0 \r\n 1992          229           21.449        23.43         9.5           0 \r\n 1992          230           17.431        25.85         15.03         0.762 \r\n 1992          231           23.567        24.35         12            0 \r\n 1992          232           23.367        24.5          10.06         0 \r\n 1992          233           22.125        25.9          12.75         0 \r\n 1992          234           20.508        28.28         15.33         0 \r\n 1992          235           21.838        27.13         14.24         0 \r\n 1992          236           21.321        28.54         17.24         0 \r\n 1992          237           11.53         25.72         14.13         22.606 \r\n 1992          238           4.186         16.88         13.6          41.402 \r\n 1992          239           14.722        19.11         11.95         0.254 \r\n 1992          240           16.797        21.36         10.38         0 \r\n 1992          241           21.114        25.64         8.2           0 \r\n 1992          242           18.679        24.71         10.5          0 \r\n 1992          243           21.947        20.59         8.14          0 \r\n 1992          244           20.825        23.21         7.3           0 \r\n 1992          245           5.154         19.91         11.98         10.16 \r\n 1992          246           15.376        25.04         13.28         7.366 \r\n 1992          247           21.466        25.68         10.13         0 \r\n 1992          248           17.99         27.5          15.35         0 \r\n 1992          249           5.404         23.78         15.22         6.604 \r\n 1992          250           20.561        23.39         11.51         0 \r\n 1992          251           7.749         20.72         6.26          7.112 \r\n 1992          252           15.977        16.72         2.888         0.508 \r\n 1992          253           20.099        21.09         6.854         1.27 \r\n 1992          254           18.406        19.8          5.588         0 \r\n 1992          255           19.649        22.89         5.549         0 \r\n 1992          256           12.86         23.8          15.65         0 \r\n 1992          257           7.333         26.42         18.53         1.778 \r\n 1992          258           14.497        25.17         15.41         7.112 \r\n 1992          259           14.44         27.76         16.7          0 \r\n 1992          260           15.548        28.47         14.33         0 \r\n 1992          261           9.473         26.81         13.34         0 \r\n 1992          262           18.781        15.89         4.358         0 \r\n 1992          263           18.102        19.5          3.247         0 \r\n 1992          264           13.021        25.58         8.84          0 \r\n 1992          265           12.219        25.86         7.25          0 \r\n 1992          266           18.01         17.48         2.376         0 \r\n 1992          267           17.679        22.17         4.291         0 \r\n 1992          268           17.856        21.3          9.21          0 \r\n 1992          269           17.628        22.83         7.92          1.524 \r\n 1992          270           13.589        19.34         6.517         3.302 \r\n 1992          271           16.866        24.95         3.845         0 \r\n 1992          272           17.517        14.95        -0.173         0 \r\n 1992          273           16.48         19.82        -0.579         0 \r\n 1992          274           16.438        27.42         5.72          0 \r\n 1992          275           16.745        30.6          9.2           0 \r\n 1992          276           16.639        31.02         10.4          0 \r\n 1992          277           15.88         26.77         9.52          0 \r\n 1992          278           15.164        24.37         8.23          0 \r\n 1992          279           11.606        24.5          10.62         0 \r\n 1992          280           5.226         13.91         7.78          8.64 \r\n 1992          281           0.91          8.2           6.447         49.53 \r\n 1992          282           1.17          8.52          6.357         54.1 \r\n 1992          283           7.839         12.96         5.577         0 \r\n 1992          284           11.751        14.31         2.007         0 \r\n 1992          285           14.017        19.31        -0.184         0 \r\n 1992          286           9.673         12.72         2.415         0 \r\n 1992          287           9.883         16.66         1.195         0 \r\n 1992          288           10.563        8.75          1.621         0 \r\n 1992          289           5.907         6.074        -0.05          0 \r\n 1992          290           11.792        7.07         -2.367         0 \r\n 1992          291           6.194         8.78         -4.548         0 \r\n 1992          292           12.195        7.57         -5.916         0 \r\n 1992          293           3.105         7.25         -2.461         0 \r\n 1992          294           12.585        17.21        -1.071         0 \r\n 1992          295           11.769        25.79         1.12          0 \r\n 1992          296           11.281        26.73         14.91         0 \r\n 1992          297           10.517        23.5          7.88          0 \r\n 1992          298           11.8          23.82         6.668         0 \r\n 1992          299           11.059        26.46         6.075         0 \r\n 1992          300           12.257        15.14         0.677         0 \r\n 1992          301           10.07         17.71        -0.778         0 \r\n 1992          302           11.042        11.86        -1.864         0 \r\n 1992          303           10.179        7.72         -4.577         0 \r\n 1992          304           5.755         8.18         -0.891         0 \r\n 1992          305           0.709         6.246         4.508         0 \r\n 1992          306           0.615         5.366         0.602         7.87 \r\n 1992          307           3.405         1.619        -1.761         11.18 \r\n 1992          308           6.115         0.931        -3.583         7.11 \r\n 1992          309           5.055        -1.856        -4.108         1.02 \r\n 1992          310           3.341        -2.823        -5.163         0 \r\n 1992          311           2.436        -4.415        -5.954         0 \r\n 1992          312           4.055        -1.525        -5.946         0 \r\n 1992          313           3.695         4.67         -1.535         0 \r\n 1992          314           5.054         13.39         4.318         0 \r\n 1992          315           7.651         10.34        -3.211         1.27 \r\n 1992          316           7.411         7.98         -5.424         0 \r\n 1992          317           9.157         5.672        -3.735         0 \r\n 1992          318           7.05         -1.052        -8.51          0 \r\n 1992          319           9.335         2.498        -7.39          0 \r\n 1992          320           6.089         3.256        -2.975         0 \r\n 1992          321           8.084         13.08        -3.926         0 \r\n 1992          322           1.503        -0.164        -1.449         0 \r\n 1992          323           2.886         5.327        -1.165         0 \r\n 1992          324           0.641         3.948         0.543         5.84 \r\n 1992          325           1.686         4.64         -0.042         0 \r\n 1992          326           1.134         0.316        -1.921         0 \r\n 1992          327           0.878        -1.845        -3.459         0 \r\n 1992          328           1.407         0.08         -1.913         0 \r\n 1992          329           2.541         0.015        -1.77          0 \r\n 1992          330           0.969        -0.627        -4.587         0 \r\n 1992          331           6.299         3.491        -7.17          0 \r\n 1992          332           7.893         3.387        -10.17         0 \r\n 1992          333           7.76          4.631        -9.64          0 \r\n 1992          334           1.649         1.533        -7.39          0 \r\n 1992          335           3.878         1.175        -7.67          0 \r\n 1992          336           4.102         7.06         -4.588         0 \r\n 1992          337           5.946         2.99         -6.509         0 \r\n 1992          338           2.292        -1.091        -7.33          1.52 \r\n 1992          339           7.09         -6.539        -18.54         0.25 \r\n 1992          340           7.631        -1.289        -19.67         0 \r\n 1992          341           5.672        -1.809        -8.34          2.54 \r\n 1992          342           5.23         -5.598        -14.81         0 \r\n 1992          343           6.502         1.656        -13.37         0 \r\n 1992          344           1.76          1.959         1.121         0 \r\n 1992          345           7.208         3.843        -6.42          0 \r\n 1992          346           6.3           3.406        -8.41          0 \r\n 1992          347           4.144         2.66         -3.345         0 \r\n 1992          348           0.425         1.203         0.26          5.33 \r\n 1992          349           0.89          1.429        -1.498         2.29 \r\n 1992          350           1.969         1.543        -4.116         1.02 \r\n 1992          351           1.603        -2.415        -5.267         0.51 \r\n 1992          352           4.281        -0.77         -7.68          0 \r\n 1992          353           1.106        -1.241        -4.01          1.52 \r\n 1992          354           4.47         -3.887        -15.41         0 \r\n 1992          355           5.632         0.381        -14.76         0 \r\n 1992          356           7.163         3.114        -5.288         0 \r\n 1992          357           5.398         3.607        -8.92          0 \r\n 1992          358           6.839        -6.794        -20.33         0 \r\n 1992          359           5.804         1.731        -19.95         0 \r\n 1992          360           7.031         0.777        -14.53         0 \r\n 1992          361           6.649         2.467        -13.55         0 \r\n 1992          362           7.353         5.718        -6.605         0 \r\n 1992          363           1.658        -5.964        -12.45         0 \r\n 1992          364           3.566        -9.44         -13.74         9.65 \r\n 1992          365           1.894        -13.13        -19.86         0 \r\n 1992          366           5.411        -16.06        -23.34         0 \r\n 1993          1             6.06         -8.1          -24.09         0 \r\n 1993          2             1.859        -0.119        -8.08          0.25 \r\n 1993          3             2.137         1.004        -11.22         0.25 \r\n 1993          4             7.301        -11.19        -18.56         0 \r\n 1993          5             5.775        -7.8          -21.27         0 \r\n 1993          6             6.475        -10.06        -21.08         0 \r\n 1993          7             3.138        -9.41         -18.86         0 \r\n 1993          8             5.661        -11.86        -20.3          0 \r\n 1993          9             5.512        -9.95         -13.47         0 \r\n 1993          10            7.713        -9.26         -15.78         0 \r\n 1993          11            3.316        -5.576        -13.51         4.57 \r\n 1993          12            3.582        -1.801        -6.899         10.92 \r\n 1993          13            5.157        -4.921        -9.63          1.02 \r\n 1993          14            6.784        -8.08         -19.58         0 \r\n 1993          15            4.729        -6.772        -20.13         0 \r\n 1993          16            7.092        -0.241        -15.99         0 \r\n 1993          17            9.087        -9.94         -22.39         0 \r\n 1993          18            5.096        -6.849        -14.43         0 \r\n 1993          19            8.825        -6.898        -15.94         0 \r\n 1993          20            3.585        -2.652        -11.4          3.81 \r\n 1993          21            5.094         0.655        -5.028         0 \r\n 1993          22            8.351         3.083        -7.57          0 \r\n 1993          23            6.194         2.092        -11.76         0 \r\n 1993          24            9.672        -4.663        -17.51         0 \r\n 1993          25            8.062        -2.755        -19.29         0 \r\n 1993          26            9.826         5.702        -6.117         0 \r\n 1993          27            8.604         0.505        -6.458         0 \r\n 1993          28            7.662        -0.751        -21.95         0 \r\n 1993          29            10.436       -8.41         -24.03         0 \r\n 1993          30            10.295       -0.298        -13.42         0 \r\n 1993          31            9.891         6.344        -3.202         0 \r\n 1993          32            10.753        7.28         -5.973         0 \r\n 1993          33            10.426        3.93         -6.06          0 \r\n 1993          34            7.715         4.32         -2.301         0 \r\n 1993          35            5.476         0.638        -3.563         0 \r\n 1993          36            6.705         2.084        -4.969         0 \r\n 1993          37            4.058         1.411        -1.826         0 \r\n 1993          38            5.42          2.034        -5.671         0 \r\n 1993          39            4.184        -0.307        -7.56          0 \r\n 1993          40            4.657         0.43         -0.686         0 \r\n 1993          41            1.58          0.457        -2.084         1.27 \r\n 1993          42            1.878        -1.45         -7.4           1.78 \r\n 1993          43            3.326        -5.519        -7.86          1.02 \r\n 1993          44            8.624        -3.088        -12.74         1.27 \r\n 1993          45            12.506       -5.316        -18.18         0 \r\n 1993          46            10.32        -10.65        -16.62         0 \r\n 1993          47            10.94        -10.49        -22.11         0 \r\n 1993          48            13.456       -16.09        -26.19         0 \r\n 1993          49            13.751       -7.93         -22.54         0 \r\n 1993          50            10.283       -3.574        -17.46         0 \r\n 1993          51            7.107        -6.478        -10.58         0 \r\n 1993          52            7.119        -6.517        -10.43         6.1 \r\n 1993          53            13.926       -10.44        -21.79         3.05 \r\n 1993          54            14.801       -10.16        -25.63         0 \r\n 1993          55            12.203       -6.986        -25.463        0 \r\n 1993          56            10.217       -10.04        -17.1          3.05 \r\n 1993          57            14.994       -1.517        -21.23         0 \r\n 1993          58            15.468       -8.91         -17.86         0 \r\n 1993          59            15.683        1.603        -15.87         0 \r\n 1993          60            15.668        1.932        -10.91         0 \r\n 1993          61            9.042        -0.448        -6.567         0 \r\n 1993          62            9.444         4.377        -2.13          0 \r\n 1993          63            15.949        3.125        -6.644         0 \r\n 1993          64            16.59         2.73         -8.85          0 \r\n 1993          65            11.662        2.98         -4.804         0 \r\n 1993          66            16.655        7.01         -2.783         0 \r\n 1993          67            14.852        2.834        -3.372         0 \r\n 1993          68            6.108         3.209        -4.595         0.25 \r\n 1993          69            15.67         1.79         -11.76         0.25 \r\n 1993          70            18.023       -5.76         -16.5          0 \r\n 1993          71            17.378       -5.829        -17.5          0 \r\n 1993          72            17.923       -8.12         -20.89         0 \r\n 1993          73            18.653       -7.2          -17.998        0 \r\n 1993          74            12.141        4.358        -9.76          0 \r\n 1993          75            16.175        3.692        -14.36         0 \r\n 1993          76            19.29        -7.3          -16.882        0 \r\n 1993          77            9.824        -3.564        -14.32         0 \r\n 1993          78            9.98          1.212        -3.964         0.25 \r\n 1993          79            15.401        2.63         -5.363         0 \r\n 1993          80            7.749        -0.786        -3.574         12.7 \r\n 1993          81            10.794        2.005        -1.703         10.41 \r\n 1993          82            17.09         5.132        -3.802         0 \r\n 1993          83            15.847        5.825        -3.554         0 \r\n 1993          84            8.031         3.456        -1.96          0 \r\n 1993          85            20.461        8.95         -0.779         0 \r\n 1993          86            19.336        9.8           1.79          0 \r\n 1993          87            16.036        15.08         2.579         0 \r\n 1993          88            14.243        14.36         2.473         1.52 \r\n 1993          89            1.87          13.29         6.027         7.11 \r\n 1993          90            2.681         9.5          -2.593         20.07 \r\n 1993          91            19.373        0.987        -5.787         0 \r\n 1993          92            21.491        3.748        -7.69          0 \r\n 1993          93            22.188        8.38         -0.949         0 \r\n 1993          94            22.47         9.45         -4.126         0 \r\n 1993          95            21.627        10.78        -2.568         0 \r\n 1993          96            9.688         9.77          1.185         7.62 \r\n 1993          97            1.446         11.69         4.616         7.874 \r\n 1993          98            4.903         10.01         0.252         1.016 \r\n 1993          99            21.009        14.03         0.476         0.254 \r\n 1993          100           9.524         13.67        -0.927         3.81 \r\n 1993          101           6.217         8.93          2.936         0.254 \r\n 1993          102           10.749        8.55          1.95          0 \r\n 1993          103           4.585         6.102         0.496         10.16 \r\n 1993          104           2.877         6.05          1.742         1.524 \r\n 1993          105           6.371         4.861         1.204         2.54 \r\n 1993          106           24.846        15.38         0.108         0 \r\n 1993          107           23.519        17.82         0.687         0 \r\n 1993          108           11.794        19.09         3.485         25.654 \r\n 1993          109           1.405         16.92         1.393         34.036 \r\n 1993          110           22.541        10.84        -0.041         0 \r\n 1993          111           25.591        14.82        -1.911         0 \r\n 1993          112           24.698        19.58         1.13          0 \r\n 1993          113           15.821        20.98         4.368         0 \r\n 1993          114           13.033        18.12         6             0 \r\n 1993          115           17.81         14.54         2.257         0 \r\n 1993          116           12.973        17.14        -0.267         0.508 \r\n 1993          117           8.605         18.11         6.377         2.794 \r\n 1993          118           19.758        22.2          3.542         0 \r\n 1993          119           25.821        21.07         5.408         0.254 \r\n 1993          120           5.324         10.41         7.16          11.938 \r\n 1993          121           3.123         12.17         8.58          3.048 \r\n 1993          122           7.862         10.4          4.874         0 \r\n 1993          123           14.115        15.32         5.475         0 \r\n 1993          124           24.731        22.4          6.688         0 \r\n 1993          125           19.189        23.05         9.25          0.254 \r\n 1993          126           10.426        25.89         15.45         35.56 \r\n 1993          127           14.588        25.06         15.26         2.794 \r\n 1993          128           14.998        21.65         15.08         5.588 \r\n 1993          129           9.785         18.32         12.87         0 \r\n 1993          130           4.029         16.15         11.76         10.922 \r\n 1993          131           13.4          21.56         12.11         0 \r\n 1993          132           26.219        26.69         10.8          0 \r\n 1993          133           26.539        23.13         6.096         0 \r\n 1993          134           25.552        25.84         10.19         0 \r\n 1993          135           10.891        18.16         5.322         2.286 \r\n 1993          136           28.391        21.75         3.894         0 \r\n 1993          137           3.87          15.992        9.38          8.89 \r\n 1993          138           23.916        15.18         5.96          0.254 \r\n 1993          139           13.862        13.83         5.683         0 \r\n 1993          140           21.031        18.09         1.082         0 \r\n 1993          141           28.193        22.05         5.304         0 \r\n 1993          142           10.345        22.06         13.56         0 \r\n 1993          143           11.29         20.96         11.44         4.064 \r\n 1993          144           11.864        17            10.63         0 \r\n 1993          145           27.381        21.82         4.093         0 \r\n 1993          146           22.052        24.613        8.217         0 \r\n 1993          147           24.266        27.378        13.327        0 \r\n 1993          148           8.62          19.341        9.335         7.798 \r\n 1993          149           3.387         15.612        8.821         50.521 \r\n 1993          150           9.487         18.155        8.467         0 \r\n 1993          151           24.617        19.03         9.782         3.962 \r\n 1993          152           4.507         14.2          8.672         16.154 \r\n 1993          153           4.584         13.11         11.021        2.032 \r\n 1993          154           17.224        17.47         9.454         0.762 \r\n 1993          155           10.011        18.34         10.4          0.254 \r\n 1993          156           19.103        21.73         9.4           0 \r\n 1993          157           5.104         30.622        14.53         0 \r\n 1993          158           6.215         26.428        15.511        37.338 \r\n 1993          159           26.742        24.63         13.23         0 \r\n 1993          160           22.335        24.79         13.2          0 \r\n 1993          161           25.733        30.24         12.79         0 \r\n 1993          162           23.696        30.59         13.83         3.048 \r\n 1993          163           10.962        27.936        16.203        26.416 \r\n 1993          164           14.555        25.129        16.12         20.574 \r\n 1993          165           29.076        23.53         11.45         0 \r\n 1993          166           28.261        25.38         8.9           0 \r\n 1993          167           21.327        31.476        12.04         36.068 \r\n 1993          168           8.227         26.191        15.843        4.826 \r\n 1993          169           3.288         19.683        15.514        16.764 \r\n 1993          170           6.275         20.118        15.034        0.254 \r\n 1993          171           24.957        27.18         16.76         0 \r\n 1993          172           29.468        30.35         15.28         0 \r\n 1993          173           24.954        32.17         18.31         0 \r\n 1993          174           21.776        28.49         18.98         0.508 \r\n 1993          175           24.873        24.271        13.99         30.988 \r\n 1993          176           28.341        24.88         12.72         0 \r\n 1993          177           28.831        30.82         15.06         0 \r\n 1993          178           28.123        30.55         13.88         0 \r\n 1993          179           16.244        22.75         13.13         1.778 \r\n 1993          180           5.582         25.352        16.132        27.432 \r\n 1993          181           10.625        25.553        19.38         2.794 \r\n 1993          182           4.521         23.731        20.75         1.27 \r\n 1993          183           14.295        27.915        18.97         0.508 \r\n 1993          184           22.819        31.85         19.46         2.54 \r\n 1993          185           27.265        26.88         18.36         4.572 \r\n 1993          186           9.95          24.87         17.75         4.826 \r\n 1993          187           28.65         26.75         16.02         0 \r\n 1993          188           15.747        26.02         16.01         5.588 \r\n 1993          189           22.03         30.11         18.24         0 \r\n 1993          190           25.071        28.24         17.8          0 \r\n 1993          191           11.119        24            16.27         0 \r\n 1993          192           23.631        24.16         14.16         0 \r\n 1993          193           18.558        23.44         11.53         0 \r\n 1993          194           17.445        35.64         17.07         0 \r\n 1993          195           8.512         22.87         18.46         0 \r\n 1993          196           19.664        26.62         18.33         0 \r\n 1993          197           13.479        26.56         18.7          0.762 \r\n 1993          198           12.424        43.911        21.4          60.452 \r\n 1993          199           18.246        29.45         21.86         0 \r\n 1993          200           27.591        27.55         16.87         0 \r\n 1993          201           16.388        23.51         15.98         0 \r\n 1993          202           18.372        24.31         14.98         0.254 \r\n 1993          203           4.797         25.13         18.34         1.016 \r\n 1993          204           13.252        40.111        20.84         0.762 \r\n 1993          205           16.989        32.93         19.62         0.508 \r\n 1993          206           19.187        26.96         18.5          0.254 \r\n 1993          207           17.865        28.3          15.85         0 \r\n 1993          208           18.519        28.56         19.23         7.112 \r\n 1993          209           27.182        27.11         16.26         0 \r\n 1993          210           27.427        29.06         14.35         0 \r\n 1993          211           24.188        31.41         17.84         0 \r\n 1993          212           22.654        29.47         20.43         0 \r\n 1993          213           27.617        28.59         14.43         0 \r\n 1993          214           26.395        27.96         12.78         4.064 \r\n 1993          215           19.43         21.83         12.46         0.254 \r\n 1993          216           24.021        23.16         9.89          0 \r\n 1993          217           19.372        24.41         12.32         0 \r\n 1993          218           20.077        23.58         10.62         0 \r\n 1993          219           17.232        23.25         11.98         0 \r\n 1993          220           18.128        28.08         17.1          0 \r\n 1993          221           18.862        31.9          21.2          0 \r\n 1993          222           25.57         30.98         18.82         0 \r\n 1993          223           20.994        29.07         15.68         0 \r\n 1993          224           21.663        31.32         18.18         0 \r\n 1993          225           11.503        36.07         17.73         28.448 \r\n 1993          226           8.979         29.21         22.59         3.556 \r\n 1993          227           16.197        33.3          20.28         24.384 \r\n 1993          228           23.317        29.34         18.69         20.066 \r\n 1993          229           17.508        32.38         19.53         0.254 \r\n 1993          230           10.014        30.2          18.95         5.08 \r\n 1993          231           22.163        29.5          17.62         0 \r\n 1993          232           21.363        26            15.58         0 \r\n 1993          233           22.39         25.92         15.35         0 \r\n 1993          234           11.549        29.36         19.06         6.604 \r\n 1993          235           21.906        26.94         18.87         0 \r\n 1993          236           23.9          31.16         16.88         0 \r\n 1993          237           22.92         30.39         20.06         0 \r\n 1993          238           21.287        31.61         20.34         0.254 \r\n 1993          239           16.726        25.08         16.18         0.254 \r\n 1993          240           9.928         22.6          14.68         0 \r\n 1993          241           11.907        26.27         19.7          59.182 \r\n 1993          242           7.492         38.2          11.43         15.24 \r\n 1993          243           23.061        23.14         9.57          0 \r\n 1993          244           22.349        23.06         10.2          0 \r\n 1993          245           17.546        25.53         13.65         1.016 \r\n 1993          246           20.824        21.41         9.75          0 \r\n 1993          247           22.321        24.62         11.95         0 \r\n 1993          248           13.038        17.1          11.18         0 \r\n 1993          249           19.65         21.83         7.11          0 \r\n 1993          250           8.966         20.73         9.54          12.954 \r\n 1993          251           19.991        20.86         8.38          0.254 \r\n 1993          252           17.615        21.92         8.38          0 \r\n 1993          253           20.77         21.03         7.31          0 \r\n 1993          254           19.041        25.02         8.76          0 \r\n 1993          255           18.926        29.99         15.32         0 \r\n 1993          256           3.285         23.58         6.552         14.986 \r\n 1993          257           8.496         10.77         2.452         0 \r\n 1993          258           20.597        17.51         0.592         0 \r\n 1993          259           19.618        21.32         6.381         0 \r\n 1993          260           3.206         14.77         9.98          2.54 \r\n 1993          261           7.607         16.14         10.27         0.254 \r\n 1993          262           2.116         18.01         13.17         36.576 \r\n 1993          263           3.57          21.72         12.67         1.27 \r\n 1993          264           14.035        23.62         11.678        0 \r\n 1993          265           12.19         20.67         7.65          0.254 \r\n 1993          266           18.914        18.28         2.746         0 \r\n 1993          267           15.828        20.48         6.152         0 \r\n 1993          268           14.882        21.92         8.14          0 \r\n 1993          269           8.257         13.09         0.97          0 \r\n 1993          270           11.464        21.13        -0.182         0 \r\n 1993          271           18.001        16.63         1.679         0 \r\n 1993          272           14.464        15.99        -0.254         0 \r\n 1993          273           15.61         22.98         6.859         0 \r\n 1993          274           13.385        15.79         5.405         0 \r\n 1993          275           11.403        14.67        -1.656         0 \r\n 1993          276           16.586        25.52         6.573         0 \r\n 1993          277           16.552        17.5          5.039         0 \r\n 1993          278           11.419        20.79         2.406         0 \r\n 1993          279           15.277        28.62         15.74         0 \r\n 1993          280           15.21         30.04         12.33         0 \r\n 1993          281           2.263         12.28         1.866         24.38 \r\n 1993          282           15.863        7.8          -2.33          6.86 \r\n 1993          283           15.444        12.19        -3.793         0 \r\n 1993          284           13.507        18.6          0.93          0 \r\n 1993          285           15.071        12.05         0.036         0 \r\n 1993          286           12.217        16.58        -1.911         0 \r\n 1993          287           12.631        21.79         4.69          0 \r\n 1993          288           2.958         20.36         10.93         3.56 \r\n 1993          289           2.031         15.31         9.41          0 \r\n 1993          290           3.637         11.56         4.803         0 \r\n 1993          291           7.095         14.08         3.673         0 \r\n 1993          292           11.448        15.23         4.528         0 \r\n 1993          293           3.639         13.8         -0.325         1.52 \r\n 1993          294           13.743        13.69        -0.807         0 \r\n 1993          295           13.031        22.19         0.299         0 \r\n 1993          296           12.862        21.59         6.889         0 \r\n 1993          297           12.684        24.19         5.319         0 \r\n 1993          298           10.088        19.8          6.351         0 \r\n 1993          299           2.875         8.97          2.386         0 \r\n 1993          300           11.42         9.6          -3.239         0 \r\n 1993          301           11.339        10.85        -1.921         0 \r\n 1993          302           5.809         0.336        -4.128         0 \r\n 1993          303           3.63         -2.747        -9.51          0 \r\n 1993          304           11.811        4.28         -10.87         0 \r\n 1993          305           6.575         10.29        -3.165         0 \r\n 1993          306           11.532        12.04        -0.682         0.25 \r\n 1993          307           6.427         13.06        -0.644         0 \r\n 1993          308           7.24          14.42        -0.38          0 \r\n 1993          309           3.854        -0.362        -7.68          0 \r\n 1993          310           9.002        -1.187        -12.06         0 \r\n 1993          311           9.728         11.58        -7.17          0 \r\n 1993          312           3.433         2.621        -5.374         0.25 \r\n 1993          313           8.053         12.48        -6.733         0 \r\n 1993          314           6.389         10.19        -2.395         0 \r\n 1993          315           9.856         7.45         -3.794         0 \r\n 1993          316           0.379         19.272       -4.672         10.92 \r\n 1993          317           1.617         20.122       -0.164         8.13 \r\n 1993          318           2.043         0.431        -2.613         0 \r\n 1993          319           9.313         2.885        -7.73          3.3 \r\n 1993          320           3.342         4.308        -0.834         0 \r\n 1993          321           9.357         7.86         -3.069         0 \r\n 1993          322           6.221         8.68         -0.304         0 \r\n 1993          323           9.184         5.739        -2.224         0 \r\n 1993          324           7.571         10.18        -1.677         0 \r\n 1993          325           7.504         13.51        -0.231         0 \r\n 1993          326           4.055         6.703        -1.647         0 \r\n 1993          327           1.227         4.965        -1.808         0 \r\n 1993          328           2.009         2.866        -2.767         4.57 \r\n 1993          329           8.462         1.128        -19.59         10.41 \r\n 1993          330           7.299        -11.86        -21.81         0 \r\n 1993          331           7.611        -0.291        -20.939        2.79 \r\n 1993          332           8.485        -2.426        -10.69         0 \r\n 1993          333           5.204        -2.15         -6.256         0 \r\n 1993          334           6.334         0.901        -4.693         0 \r\n 1993          335           4.171         3.236        -2.299         0 \r\n 1993          336           8.078         4.83         -8.38          0 \r\n 1993          337           2.944         0.628        -8.26          0 \r\n 1993          338           3.297         1.583        -1.552         0 \r\n 1993          339           3.512         2.221        -1.91          0 \r\n 1993          340           7.807        -1.411        -8.72          0 \r\n 1993          341           7.439         1.694        -8.35          0 \r\n 1993          342           7.546         5.233        -10.3          0 \r\n 1993          343           5.784         5.881        -2.073         0 \r\n 1993          344           7.342         1.1          -13.03         0 \r\n 1993          345           6.808         0.668        -13.86         0 \r\n 1993          346           5.242         8.52         -1.287         0 \r\n 1993          347           0.716         4.786        -3.239         3.05 \r\n 1993          348           3.436         2.877        -3.335         20.07 \r\n 1993          349           5.111         5.649        -2.888         0.25 \r\n 1993          350           4.483         4.487        -2.689         0 \r\n 1993          351           3.189         9.078         2.007         3.05 \r\n 1993          352           3.261         8.7          -0.873         0 \r\n 1993          353           4.579         1.278        -5.053         0 \r\n 1993          354           5.703        -2.226        -14.34         0 \r\n 1993          355           4.634         1.053        -14.3          0.76 \r\n 1993          356           7.023        -11.38        -18.84         0 \r\n 1993          357           5.262        -9.22         -19.48         0 \r\n 1993          358           3.84         -2.759        -18.65         1.02 \r\n 1993          359           6.328        -10.54        -17.35         0.51 \r\n 1993          360           4.724        -10.84        -14.49         3.56 \r\n 1993          361           5.642        -14.16        -23.42         0 \r\n 1993          362           3.904        -7.21         -25.27         0 \r\n 1993          363           7.352        -5.64         -20.31         0 \r\n 1993          364           6.658         2.572        -20.13         0 \r\n 1993          365           5.102         5.024        -10.64         0 \r\n 1994          1             7.144        -0.467        -11.66         0 \r\n 1994          2             4.528        -5.55         -18.25         15.75 \r\n 1994          3             4.67         -10.07        -22.63         0 \r\n 1994          4             5.201        -4.924        -17.56         4.06 \r\n 1994          5             2.213        -7.48         -14.31         2.29 \r\n 1994          6             6.904        -9.24         -25.57         0 \r\n 1994          7             7.909        -18.23        -26.04         0 \r\n 1994          8             6.428        -12.13        -26.64         1.27 \r\n 1994          9             5.23         -8.77         -22.95         0 \r\n 1994          10            7.298         2.517        -15.17         0 \r\n 1994          11            7.652        -10.35        -19.05         0 \r\n 1994          12            8.508        -1.858        -13.46         0 \r\n 1994          13            8.07         -12.92        -20.24         1.78 \r\n 1994          14            8.913        -17.72        -25.59         0 \r\n 1994          15            8.772        -21.56        -31.5          0 \r\n 1994          16            3.848        -8.96         -23.81         0.25 \r\n 1994          17            6.986        -21           -28.3          0 \r\n 1994          18            8.701        -22.11        -31.38         0 \r\n 1994          19            6.831        -15.17        -26.81         2.03 \r\n 1994          20            8.026        -14.75        -29.5          0 \r\n 1994          21            9.309        -1.25         -15.47         0 \r\n 1994          22            7.54          1.704        -13.44         0 \r\n 1994          23            9.656         6.474        -6.255         0 \r\n 1994          24            3.677        -1.498        -8.86          0 \r\n 1994          25            2.446        -1.628        -6.979         0.25 \r\n 1994          26            2.6          -6.949        -8.23          0 \r\n 1994          27            4.961        -5.938        -12.1          21.84 \r\n 1994          28            7.807        -3.193        -12.61         0.76 \r\n 1994          29            7.267        -7.71         -21.69         0 \r\n 1994          30            10.686       -14.13        -29.96         0 \r\n 1994          31            10.55        -17.02        -29.96         0 \r\n 1994          32            9.039        -9.73         -27.72         0 \r\n 1994          33            10.404       -6.932        -19.32         0 \r\n 1994          34            11.232       -9.29         -21.15         0 \r\n 1994          35            11.58        -8.5          -20.89         0 \r\n 1994          36            11.879       -2.72         -18.03         0 \r\n 1994          37            11.535       -4.441        -24.78         0 \r\n 1994          38            6.333        -22.86        -25.06         1.52 \r\n 1994          39            6.552        -19.19        -22.92         0.76 \r\n 1994          40            12.622       -20.41        -29.968        0 \r\n 1994          41            12.286       -5.958        -20.72         0 \r\n 1994          42            7.067        -6.12         -17.47         0 \r\n 1994          43            9.801        -5.029        -13.59         0 \r\n 1994          44            13.146        0.081        -13.87         0 \r\n 1994          45            12.912        3.758        -6.42          0 \r\n 1994          46            13.713        1.951        -11.1          0 \r\n 1994          47            11.749        6.008        -4.934         0 \r\n 1994          48            13.488        7.26         -6.06          0 \r\n 1994          49            10.243        11.28         2.998         0 \r\n 1994          50            3.974         10.53        -4.432         0 \r\n 1994          51            13.442       -3.554        -9.75          0 \r\n 1994          52            12.646       -4.981        -12.68         0 \r\n 1994          53            3.268        -4.875        -8.76          0 \r\n 1994          54            14.21        -7.22         -18.16         3.05 \r\n 1994          55            11.701       -7.47         -18.9          0 \r\n 1994          56            13.919       -8.91         -18.62         2.54 \r\n 1994          57            15.075       -3.061        -18.8          0 \r\n 1994          58            10.141       -4.047        -11.02         0 \r\n 1994          59            8.305        -1.674        -7.3           0 \r\n 1994          60            14.705        1.856        -9.72          0 \r\n 1994          61            13.729        6.256        -4.884         0 \r\n 1994          62            15.5          12.44         0.524         0 \r\n 1994          63            15.959        12.82         0.422         0 \r\n 1994          64            13.968        15.8          0.571         0 \r\n 1994          65            4.692         4.478        -1.826         0 \r\n 1994          66            12.303        2.053        -3.772         0 \r\n 1994          67            17.296        0.082        -7.37          0 \r\n 1994          68            10.962        1.373        -8.05          0 \r\n 1994          69            17.469        0.647        -5.24          0 \r\n 1994          70            14.814        6.888        -5.964         0 \r\n 1994          71            15.053        8.45         -1.638         0 \r\n 1994          72            18.067        10.79        -0.986         0 \r\n 1994          73            14.775        17.17         0.761         0 \r\n 1994          74            15.71         8.14         -3.562         0 \r\n 1994          75            17.385        8.483        -5.182         0 \r\n 1994          76            8.921         13.127       -1.217         0 \r\n 1994          77            19.054        13.572       -1.154         0 \r\n 1994          78            17.14         22.652        2.034         0 \r\n 1994          79            8.367         9.318        -0.842         0 \r\n 1994          80            19.745        16.621       -4.097         0 \r\n 1994          81            20.005        21.844        1.838         0 \r\n 1994          82            15.541        16.187       -1.692         0 \r\n 1994          83            17.339        4.864        -5.497         0 \r\n 1994          84            10.778        6.512        -8.004         0 \r\n 1994          85            17.939        11.028       -2.834         0 \r\n 1994          86            8.79          5.519        -4.733         0 \r\n 1994          87            12.111        3.096        -3.124         0 \r\n 1994          88            10.829        2.964        -7.041         0 \r\n 1994          89            20.783        8.758        -10.836        0 \r\n 1994          90            22.178        19.407       -1.999         0 \r\n 1994          91            22.683        14.028       -2.143         0 \r\n 1994          92            19.21         10.601       -8.958         0 \r\n 1994          93            22.374        12.813       -6.524         0 \r\n 1994          94            10.057        5.9          -9.121         0 \r\n 1994          95            17.086        4.901        -9.229         0 \r\n 1994          96            23.51         11.014       -4.822         0 \r\n 1994          97            16.495        15.486        0.886         0 \r\n 1994          98            21.271        17.359       -0.996         0 \r\n 1994          99            17.079        16.723       -1.944         0 \r\n 1994          100           23.985        15.145       -0.196         0 \r\n 1994          101           7.291         13.134        0.489         22.53 \r\n 1994          102           4.119         11.433       -0.056         3.708 \r\n 1994          103           24.378        19.629        1.886         0 \r\n 1994          104           16.021        19.8          2.268         2.972 \r\n 1994          105           20.069        14.996        1.407         0 \r\n 1994          106           25.322        22.537        2.754         0 \r\n 1994          107           22.606        28.642        6.128         0 \r\n 1994          108           23.272        28.59         1.864         0 \r\n 1994          109           18.396        16.829        3.036         0 \r\n 1994          110           9.462         15.152        4.909         0 \r\n 1994          111           17.911        19.082        1.589         0 \r\n 1994          112           24.87         23.974        4.993         0 \r\n 1994          113           22.964        28.441        11.687        0 \r\n 1994          114           19.632        29.629        14.736        0 \r\n 1994          115           20.97         28.091        8.764         6.02 \r\n 1994          116           12.409        13.288        0.474         0 \r\n 1994          117           8.178         3.322        -0.459         8.23 \r\n 1994          118           4.491         2.88         -4.282         17.399 \r\n 1994          119           15.701        4.614        -0.445         0 \r\n 1994          120           10.39         9.321        -2.446         0 \r\n 1994          121           18.933        13.979        0.793         0 \r\n 1994          122           19.749        16.581        2.394         0 \r\n 1994          123           18.121        19.368        7.23          5.283 \r\n 1994          124           21.114        18.914        3.831         0 \r\n 1994          125           8.605         10.086        2.548         14.097 \r\n 1994          126           6.316         11.397        4.209         0 \r\n 1994          127           11.871        16.357        2.649         0 \r\n 1994          128           20.703        20.622        3.169         0 \r\n 1994          129           27.666        25.095        5.58          0 \r\n 1994          130           22.754        27.324        14.536        0 \r\n 1994          131           25.549        25.162        7.105         0 \r\n 1994          132           26.171        26.192        9.497         0 \r\n 1994          133           18.842        26.483        13.17         8.382 \r\n 1994          134           11.939        21.891        9.886         0 \r\n 1994          135           26.935        26.192        10.602        0 \r\n 1994          136           26.922        28.461        14.968        0 \r\n 1994          137           25.704        28.796        12.996        0 \r\n 1994          138           26.199        29.469        12.826        0 \r\n 1994          139           26.23         28.796        11.087        0 \r\n 1994          140           28.623        29.107        13.113        0 \r\n 1994          141           20.269        30.566        14.989        0 \r\n 1994          142           24.262        30.903        18.274        0 \r\n 1994          143           25.602        30.346        15.254        4.14 \r\n 1994          144           25.104        24.711        11.242        0 \r\n 1994          145           19.48         21.808        7.441         4.039 \r\n 1994          146           26.061        23.943        8.634         0 \r\n 1994          147           29.086        27.582        12.458        0 \r\n 1994          148           27.146        29.082        15.405        0 \r\n 1994          149           25.733        31.099        16.306        0 \r\n 1994          150           28.079        31.083        13.323        0 \r\n 1994          151           28.474        25.257        12.097        0 \r\n 1994          152           8.472         21.797        12.778        0 \r\n 1994          153           19.272        24.031        8.311         0 \r\n 1994          154           28.524        26.052        11.401        0 \r\n 1994          155           17.12         27.131        14.026        43.688 \r\n 1994          156           24.849        29.097        16.556        0 \r\n 1994          157           26.823        28.717        17.082        0 \r\n 1994          158           12.708        23.169        12.481        0 \r\n 1994          159           8.248         21.292        14.018        0 \r\n 1994          160           23.622        24.901        11.644        0 \r\n 1994          161           24.786        25.044        10.706        0 \r\n 1994          162           26.789        26.407        15.77         0 \r\n 1994          163           17.24         27.441        14.423        61.824 \r\n 1994          164           25.796        30.982        20.508        0 \r\n 1994          165           27.233        32.317        19.861        0 \r\n 1994          166           14.602        27.756        20.213        0 \r\n 1994          167           10.235        28.488        21.559        0 \r\n 1994          168           19.442        31.796        18.369        27.102 \r\n 1994          169           20.759        30.018        19.277        0 \r\n 1994          170           18.763        30.633        21.028        0 \r\n 1994          171           24.503        30.217        17.246        17.678 \r\n 1994          172           25.526        29.294        18.358        0 \r\n 1994          173           10.125        25.847        14.743        48.336 \r\n 1994          174           19.181        26.336        15.901        2.794 \r\n 1994          175           25.59         27.338        16.991        0 \r\n 1994          176           22.624        25.962        13.706        0 \r\n 1994          177           26.85         25.294        15.878        0 \r\n 1994          178           27.021        26.863        14.77         0 \r\n 1994          179           27.672        26.711        14.363        0 \r\n 1994          180           28.245        28.601        12.99         0 \r\n 1994          181           27.361        29.572        16.053        20.269 \r\n 1994          182           15.9          25.906        12.048        0 \r\n 1994          183           25.044        25.288        15.607        0 \r\n 1994          184           7.95          25.472        16.928        12.243 \r\n 1994          185           26.087        29.093        18.024        5.563 \r\n 1994          186           15.404        28.159        17.93         9.042 \r\n 1994          187           22.609        27.907        18.368        3.404 \r\n 1994          188           15.788        23.777        12.258        0 \r\n 1994          189           17.634        20.998        11.912        0 \r\n 1994          190           27.335        25.325        12.74         0 \r\n 1994          191           25.83         27.905        17.607        0 \r\n 1994          192           18.384        27.057        17.141        6.833 \r\n 1994          193           17.635        22.269        15.281        32.029 \r\n 1994          194           12.898        22.571        13.312        8.484 \r\n 1994          195           20.646        24.973        13.921        0 \r\n 1994          196           12.979        26.503        15.279        0 \r\n 1994          197           23.119        26.987        13.712        0 \r\n 1994          198           26.736        28.419        16.316        0 \r\n 1994          199           23.753        29.051        19.383        0 \r\n 1994          200           16.719        28.74         14.286        0 \r\n 1994          201           23.428        27.94         15.279        0 \r\n 1994          202           19.179        25.024        13.808        0 \r\n 1994          203           26.657        27.944        12.843        0 \r\n 1994          204           26.263        27.937        12.179        0 \r\n 1994          205           22.11         26.391        15.056        0 \r\n 1994          206           24.287        25.191        9.319         0 \r\n 1994          207           24.532        24.489        10.466        0 \r\n 1994          208           24.609        23.899        9.987         0 \r\n 1994          209           21.797        24.765        10.384        0 \r\n 1994          210           25.366        26.936        13.413        0 \r\n 1994          211           23.728        29.806        16.324        0 \r\n 1994          212           23.854        30.637        18.342        0 \r\n 1994          213           22.716        29.026        17.652        0 \r\n 1994          214           20.546        27.839        19.023        3.302 \r\n 1994          215           9.474         24.352        15.268        0 \r\n 1994          216           21.657        23.313        8.067         0 \r\n 1994          217           24.547        23.441        10.68         0 \r\n 1994          218           21.892        27.303        14.697        0 \r\n 1994          219           19.654        28.096        13.036        14.935 \r\n 1994          220           17.932        21.344        11.485        0 \r\n 1994          221           10.812        21.392        15.118        7.214 \r\n 1994          222           11.432        21.589        14.044        0 \r\n 1994          223           8.222         20.322        14.481        25.984 \r\n 1994          224           9.8           23.763        14.418        0 \r\n 1994          225           17.433        24.106        7.128         0 \r\n 1994          226           25.058        22.821        8.556         0 \r\n 1994          227           24.146        24.421        11.678        0 \r\n 1994          228           21.428        26.437        16.894        0 \r\n 1994          229           17.654        27.06         15.167        0 \r\n 1994          230           22.717        27.631        17.103        0 \r\n 1994          231           21.774        23.869        10.939        0 \r\n 1994          232           20.946        23.991        10.483        0 \r\n 1994          233           24.613        25.104        12.184        0 \r\n 1994          234           22.251        27.794        14.762        0 \r\n 1994          235           22.127        30.481        13.231        0 \r\n 1994          236           21.227        30.781        16.939        2.972 \r\n 1994          237           13.706        28.804        18.059        17.297 \r\n 1994          238           18.719        29.706        19.134        0 \r\n 1994          239           20.549        30.247        12.158        0 \r\n 1994          240           17.777        23.232        10.467        0 \r\n 1994          241           19.072        24.019        15.021        0 \r\n 1994          242           15.646        23.163        11.031        0 \r\n 1994          243           12.552        18.369        10.693        0 \r\n 1994          244           8.398         17.713        9.053         7.645 \r\n 1994          245           8.554         20.792        11.886        15.773 \r\n 1994          246           15.628        21.754        14.446        20.65 \r\n 1994          247           10.48         22.237        15.843        0 \r\n 1994          248           19.249        23.656        9.688         0 \r\n 1994          249           21.461        26.034        10.772        0 \r\n 1994          250           20.218        27.427        12.791        0 \r\n 1994          251           20.248        29.337        14.975        0 \r\n 1994          252           18.327        28.893        15.463        0 \r\n 1994          253           18.904        27.688        15.918        0 \r\n 1994          254           18.951        27.687        17.288        0 \r\n 1994          255           13.904        30.152        19.363        0 \r\n 1994          256           19.344        31.713        20.279        0 \r\n 1994          257           18.589        31.518        18.408        0 \r\n 1994          258           14.646        25.835        12.932        0 \r\n 1994          259           18.836        23.579        6.759         0 \r\n 1994          260           20.163        25.944        5.914         0 \r\n 1994          261           19.97         27.232        9.542         0 \r\n 1994          262           18.85         27.536        14.51         0 \r\n 1994          263           13.251        27.652        12.479        0 \r\n 1994          264           10.664        21.881        7.469         40.411 \r\n 1994          265           2.054         12.319        7.051         20.447 \r\n 1994          266           10.864        16.783        8.907         0 \r\n 1994          267           4.508         20.601        11.602        0 \r\n 1994          268           15.418        20.272        4.388         0 \r\n 1994          269           14.91         17.774        2.042         0 \r\n 1994          270           14.066        20.567        2.583         0 \r\n 1994          271           17.834        23.231        6.511         0 \r\n 1994          272           15.309        24.886        10.828        0 \r\n 1994          273           12.443        22.867        9.946         0 \r\n 1994          274           8.762         18.806        8.886         0 \r\n 1994          275           2.532         11.786        8.161         5.08 \r\n 1994          276           5.252         11.551        8.69          5.08 \r\n 1994          277           7.189         15.283        7.803         0 \r\n 1994          278           7.669         19.241        10.692        0 \r\n 1994          279           7.441         20.719        10.771        3.3 \r\n 1994          280           6.242         14.006        2.041         0 \r\n 1994          281           14.509        15.618        0.408         0 \r\n 1994          282           15.946        17.769        0.871         0 \r\n 1994          283           15.529        19.009        4.097         0 \r\n 1994          284           15.503        18.983        3.464         0 \r\n 1994          285           15.39         18.639        2.816         0 \r\n 1994          286           10.947        19.059        4.101         0 \r\n 1994          287           12.335        19.127        8.137         0 \r\n 1994          288           1.879         14.985        11.908        0 \r\n 1994          289           3.182         17.728        14.419        13.46 \r\n 1994          290           3.537         18.394        7.503         10.16 \r\n 1994          291           12.913        18.347        7.091         1.52 \r\n 1994          292           10.95         18.609        2.386         0 \r\n 1994          293           13.657        21.561        5.461         0 \r\n 1994          294           11.853        21.578        7.396         0 \r\n 1994          295           11.287        15.098        1.392         0 \r\n 1994          296           10.189        10.678       -0.264         0 \r\n 1994          297           12.977        8.283        -3.851         0 \r\n 1994          298           12.218        12.554       -4.333         0 \r\n 1994          299           12.389        17.177        0.062         0 \r\n 1994          300           11.962        20.077        7.201         0 \r\n 1994          301           10.353        19.971        2.601         0 \r\n 1994          302           11.618        14.111       -0.453         0 \r\n 1994          303           6.582         13.823        0.5           0 \r\n 1994          304           11.431        12.403       -1.43          0 \r\n 1994          305           5.19          13.687        4.323         0 \r\n 1994          306           8.492         11.649        1.177         0 \r\n 1994          307           2.487         6.369        -0.855         0 \r\n 1994          308           4.72          10.559       -3.877         0 \r\n 1994          309           9.675         11.472       -3.834         0 \r\n 1994          310           9.894         15.197        1.634         0 \r\n 1994          311           10.431        15.338        4.356         0 \r\n 1994          312           2.525         10.752        2.594         0 \r\n 1994          313           7.141         10.894       -3.424         0 \r\n 1994          314           10.078        9.592        -0.536         0 \r\n 1994          315           2.461         9.586         2.293         0 \r\n 1994          316           2.175         14.31         7.523         0 \r\n 1994          317           4.282         12.229        2.056         0 \r\n 1994          318           8.185         9.911        -3.937         0 \r\n 1994          319           8.168         10.322       -3.102         0 \r\n 1994          320           8.398         12.103        3.027         0 \r\n 1994          321           4.18          10.772       -3.237         0 \r\n 1994          322           8.377         0.124        -8.308         0 \r\n 1994          323           1.754         3.411        -3.481         0 \r\n 1994          324           0.828         4.272        -1.208         7.11 \r\n 1994          325           9.437         2.488        -8.579         12.19 \r\n 1994          326           9.296         4.837        -9.382         0 \r\n 1994          327           9.474         8.133        -5.683         0 \r\n 1994          328           7.293         8.102        -5.564         0 \r\n 1994          329           7.977         6.647        -5.409         0 \r\n 1994          330           1.916         3.005        -2.125         0 \r\n 1994          331           2.968        -0.774        -8.052         10.16 \r\n 1994          332           8.953        -2.59         -11.351        2.54 \r\n 1994          333           5.942        -3.78         -12.683        0 \r\n 1994          334           8.481         3.367        -9.239         0 \r\n 1994          335           8.621         5.646        -5.895         0 \r\n 1994          336           8.408         4.702        -4.476         0 \r\n 1994          337           2.609         0.724        -2.959         0 \r\n 1994          338           1.272         0.309        -11.503        0 \r\n 1994          339           5.146        -9.036        -11.839        0 \r\n 1994          340           1.71         -7.717        -11.748        0 \r\n 1994          341           7.243        -5.387        -8.874         11.94 \r\n 1994          342           4.33         -5.122        -16.368        0.25 \r\n 1994          343           8.658        -7.766        -15.216        0 \r\n 1994          344           8.536        -10.076       -22.338        0 \r\n 1994          345           7.42         -7.792        -17.791        0 \r\n 1994          346           8.276        -7.328        -16.017        0 \r\n 1994          347           6.068        -6.319        -13.148        0 \r\n 1994          348           3.066        -3.204        -8.894         0 \r\n 1994          349           8.124         0.247        -7.788         4.83 \r\n 1994          350           7.363         0.036        -9.757         0 \r\n 1994          351           7.517        -1.013        -13.666        0 \r\n 1994          352           6.895        -0.475        -10.488        0 \r\n 1994          353           7.82          1.011        -6.272         0 \r\n 1994          354           5.654         1.289        -6.458         0 \r\n 1994          355           4.911         1.116        -2.252         0 \r\n 1994          356           6.844         0.539        -9.163         0 \r\n 1994          357           7.806         1.559        -8.384         0 \r\n 1994          358           7.574         2.579        -6.45          0 \r\n 1994          359           8.249         2.851        -3.647         0 \r\n 1994          360           6.955         3.171        -4.003         0 \r\n 1994          361           8.251         1.928        -3.918         0 \r\n 1994          362           3.157        -1.682        -7.302         0 \r\n 1994          363           3.347        -1.075        -5.424         0 \r\n 1994          364           2.986        -2.913        -11.959        1.52 \r\n 1994          365           5.349        -10.125       -20.357        1.02 \r\n 1995          1             8.724        -9.043        -18.988        0 \r\n 1995          2             8.117        -9.085        -22.807        0 \r\n 1995          3             9.197        -17.873       -26.223        0 \r\n 1995          4             9.001        -10.628       -24.258        0 \r\n 1995          5             5.73         -4.534        -14.084        0 \r\n 1995          6             4.748        -8.541        -24.094        0 \r\n 1995          7             9.147        -11.217       -21.204        0 \r\n 1995          8             5.094        -9.377        -14.944        0 \r\n 1995          9             7.973        -5.836        -12.002        0 \r\n 1995          10            5.75          0.776        -6.081         0 \r\n 1995          11            4.492         0.862        -1.202         0 \r\n 1995          12            3.947        -0.519        -4.626         0 \r\n 1995          13            4.387        -3.28         -8.097         0 \r\n 1995          14            3.114        -3.14         -8.204         0 \r\n 1995          15            5.389        -0.439        -6.004         0 \r\n 1995          16            5.167         1.426        -6.909         0 \r\n 1995          17            5.908        -2.648        -11.816        0.25 \r\n 1995          18            9.509        -1.062        -10.852        0 \r\n 1995          19            8.667        -2.816        -12.287        0 \r\n 1995          20            5.893        -8.76         -14.269        0 \r\n 1995          21            9.638        -9.127        -13.943        0 \r\n 1995          22            7.907        -8.256        -15.728        0 \r\n 1995          23            7.443        -5.498        -16.399        0 \r\n 1995          24            10.225       -4.748        -11.685        0 \r\n 1995          25            5.449        -1.648        -11.663        0 \r\n 1995          26            9.477         0.713        -7.175         0 \r\n 1995          27            1.759        -0.151        -5.079         3.81 \r\n 1995          28            6.589        -0.56         -8.715         0 \r\n 1995          29            9.621        -3.981        -15.957        0 \r\n 1995          30            10.753        1.849        -10.236        0 \r\n 1995          31            9.687         3.072        -4.714         0 \r\n 1995          32            7.976         0.501        -2.964         2.03 \r\n 1995          33            4.756         0.592        -3.497         0.51 \r\n 1995          34            6.881        -2.298        -12.303        0 \r\n 1995          35            6.276        -7.216        -13.54         0 \r\n 1995          36            6.974        -5.591        -12.145        0 \r\n 1995          37            6.709        -4.851        -12.416        0.51 \r\n 1995          38            11.391       -5.084        -18.918        0 \r\n 1995          39            11.661        0.582        -11.761        0 \r\n 1995          40            8.276         2.041        -11.141        0 \r\n 1995          41            11.608       -10.051       -23.633        0 \r\n 1995          42            12.269       -11.728       -21.642        0 \r\n 1995          43            12.565       -9.557        -18.972        0 \r\n 1995          44            11.97        -7.044        -16.148        0 \r\n 1995          45            2.926        -3.297        -15.274        0 \r\n 1995          46            14.163       -4.049        -16.399        0.25 \r\n 1995          47            13.951        4.275        -8.643         0 \r\n 1995          48            10.52         7.094        -1.953         0 \r\n 1995          49            10.108        5.664        -7.151         0 \r\n 1995          50            13.853        5.337        -2.926         0 \r\n 1995          51            14.515        7.432        -4.443         0 \r\n 1995          52            13.054        10.216       -1.457         0 \r\n 1995          53            13.555        9.116        -2.487         0 \r\n 1995          54            14.155        5.489        -6.156         0 \r\n 1995          55            13.644        8.258        -3.024         0 \r\n 1995          56            15.125        8.636        -3.652         0 \r\n 1995          57            2.174        -2.406        -7.065         0 \r\n 1995          58            3.874        -5.101        -16.839        0 \r\n 1995          59            14.418       -7.682        -17.614        0 \r\n 1995          60            15.001       -5.933        -18.403        0 \r\n 1995          61            15.749       -0.769        -14.614        0 \r\n 1995          62            16.473        1.242        -8.151         0 \r\n 1995          63            4.727        -2.017        -8.098         1.02 \r\n 1995          64            10.219       -5.453        -10.807        11.18 \r\n 1995          65            6.819        -8.966        -16.698        8.64 \r\n 1995          66            18.085       -10.652       -26.248        0 \r\n 1995          67            18.069       -6.349        -22.693        0 \r\n 1995          68            17.248        4.263        -8.638         0 \r\n 1995          69            18.223        11.818        1.996         0 \r\n 1995          70            18.082        14.929        5.623         0 \r\n 1995          71            9.518         14.702        6.857         0 \r\n 1995          72            7.306         12.586        4.573         3.56 \r\n 1995          73            8.46          16.061        0.149         1.27 \r\n 1995          74            17.667        19.614        4.226         0 \r\n 1995          75            16.173        19.172       -0.647         0 \r\n 1995          76            17.494        14.299        2.204         0 \r\n 1995          77            4.956         8.602         1.923         12.7 \r\n 1995          78            6.521         9.428         1.143         0 \r\n 1995          79            7.57          8.377        -3.561         4.57 \r\n 1995          80            16.835        10.87        -0.757         0 \r\n 1995          81            4.411         7.361         1.724         8.64 \r\n 1995          82            12.287        10.244        2.163         1.52 \r\n 1995          83            13.379        11.114        2.942         0 \r\n 1995          84            3.555         7.427         4.277         14.73 \r\n 1995          85            3.606         8.913         1.913         11.43 \r\n 1995          86            3.841         4.114        -0.182         1.78 \r\n 1995          87            3.854         2.478        -1.05          1.52 \r\n 1995          88            6.508         0.604        -3.214         0 \r\n 1995          89            6.255         0.17         -4.408         0 \r\n 1995          90            13.657        6.004        -4.516         0 \r\n 1995          91            20.986        17.194       -1.46          0 \r\n 1995          92            20.9          21.882        0.094         0 \r\n 1995          93            17.208        11.395       -11.411        0 \r\n 1995          94            14.152        10.057       -7.025         0 \r\n 1995          95            19.143        18.208        0.577         0 \r\n 1995          96            21.222        13.624        2.488         5.41 \r\n 1995          97            9.117         10.702        1.831         7.722 \r\n 1995          98            4.155         3.957        -2.734         0 \r\n 1995          99            2.924        -1.166        -2.869         13.411 \r\n 1995          100           3.218         0.357        -3.393         6.731 \r\n 1995          101           5.417         1.617        -1.075         7.874 \r\n 1995          102           14.113        10.502       -1.968         0 \r\n 1995          103           20.974        17.023        2.079         0 \r\n 1995          104           19.044        13.683        4.514         0 \r\n 1995          105           13.912        8.641         2.297         3.734 \r\n 1995          106           3.2           6.432         2.596         3.632 \r\n 1995          107           6.673         8.806         2.411         19.634 \r\n 1995          108           6.448         11.502       -1.002         8.179 \r\n 1995          109           21.001        12.604        1.653         4.496 \r\n 1995          110           3.615         8.237        -0.552         9.093 \r\n 1995          111           12.859        13.012       -0.737         0 \r\n 1995          112           25.45         15.263       -0.283         0 \r\n 1995          113           23.005        15.81         1.194         0 \r\n 1995          114           17.481        14.72        -0.611         0 \r\n 1995          115           18.296        15.043        2.371         0 \r\n 1995          116           9.174         11.22        -3.016         0 \r\n 1995          117           20.283        12.258        0.636         0 \r\n 1995          118           8.106         11.611        5.724         9.195 \r\n 1995          119           4.158         11.556        5.541         6.96 \r\n 1995          120           6.017         12.111        5.247         0 \r\n 1995          121           11.36         14.14         0.372         0 \r\n 1995          122           18.702        13.562        4.624         2.87 \r\n 1995          123           3.953         10.378        6.485         7.061 \r\n 1995          124           7.818         16.171        1.497         0 \r\n 1995          125           22.723        19.134        5.624         0 \r\n 1995          126           7.752         16.678        10.058        0 \r\n 1995          127           4.889         18.641        12.29         10.465 \r\n 1995          128           8.043         18.094        10.617        9.042 \r\n 1995          129           7.745         13.386        5.256         2.819 \r\n 1995          130           5.891         13.192        4.053         0 \r\n 1995          131           18.909        18.249        5.172         0 \r\n 1995          132           10.695        18.261        9.431         26.67 \r\n 1995          133           12.454        17.829        6.485         13.767 \r\n 1995          134           25.242        20.525        4.759         0 \r\n 1995          135           23.618        24.52         9.674         0 \r\n 1995          136           16.362        22.861        4.851         0 \r\n 1995          137           24.807        18.594        5.496         0 \r\n 1995          138           25.959        23.262        5.371         0 \r\n 1995          139           24.105        24.633        6.796         0 \r\n 1995          140           23.35         21.008        4.599         0 \r\n 1995          141           24.182        22.293        10.546        0 \r\n 1995          142           12.097        17.983        7.341         11.862 \r\n 1995          143           16.562        17.084        5.023         0 \r\n 1995          144           25.476        20.697        6.021         0 \r\n 1995          145           24.018        21.956        10.868        0 \r\n 1995          146           8.467         17.399        10.954        9.957 \r\n 1995          147           5.037         15.191        9.517         45.212 \r\n 1995          148           7.019         19.491        6.31          5.182 \r\n 1995          149           24.89         23.747        8.284         0 \r\n 1995          150           23.625        24.304        11.678        0 \r\n 1995          151           12.992        22.075        12.191        0 \r\n 1995          152           11.659        22.875        12.11         4.166 \r\n 1995          153           19.614        25.284        11.518        0 \r\n 1995          154           24.261        25.977        14.03         0 \r\n 1995          155           9.722         24.344        16.458        3.404 \r\n 1995          156           17.002        26.83         16.02         6.172 \r\n 1995          157           27.06         29.18         16.948        4.572 \r\n 1995          158           23.058        23.221        5.164         0 \r\n 1995          159           4.807         12.523        7.121         3.81 \r\n 1995          160           5.558         15.131        9.16          3.861 \r\n 1995          161           8.378         18.21         7.317         0 \r\n 1995          162           26.143        22.921        7.014         0 \r\n 1995          163           28.49         26.101        10.138        0 \r\n 1995          164           25.19         29.023        15.388        0 \r\n 1995          165           27.185        30.684        17.932        0 \r\n 1995          166           23.801        31.919        20.693        0 \r\n 1995          167           25.472        33.208        20.709        0 \r\n 1995          168           28.563        33.294        19.226        0 \r\n 1995          169           27.339        30.893        17.651        0 \r\n 1995          170           26.613        31.458        17.93         0 \r\n 1995          171           26.413        32.569        18.521        0 \r\n 1995          172           25.211        32.839        20.235        0 \r\n 1995          173           23.538        32.318        16.855        0 \r\n 1995          174           24.374        28.496        16.437        0 \r\n 1995          175           24.008        28.472        16.747        4.775 \r\n 1995          176           6.017         20.226        16.228        32.537 \r\n 1995          177           11.023        23.131        17.502        5.105 \r\n 1995          178           21.766        24.699        15.489        8.661 \r\n 1995          179           17.204        24.934        13.059        5.207 \r\n 1995          180           25.239        21.981        10.592        0 \r\n 1995          181           18.357        21.372        6.589         0 \r\n 1995          182           23.859        23.282        10.158        0 \r\n 1995          183           19.867        26.127        13.706        0 \r\n 1995          184           21.966        27.621        17.453        3.251 \r\n 1995          185           9.956         20.686        16.265        9.754 \r\n 1995          186           14.183        23.257        10.929        0 \r\n 1995          187           28.323        25.137        12.902        0 \r\n 1995          188           20.35         27.885        14.923        0 \r\n 1995          189           24.656        29.388        15.926        0 \r\n 1995          190           28.388        29.858        18.762        0 \r\n 1995          191           26.152        32.171        19.217        0 \r\n 1995          192           27.571        36.394        22.707        0 \r\n 1995          193           28.573        37.747        22.282        0 \r\n 1995          194           28.535        35.958        23.175        0 \r\n 1995          195           25.682        32.16         19.716        10.871 \r\n 1995          196           13.529        28.926        17.274        0 \r\n 1995          197           23.584        27.502        12.942        0 \r\n 1995          198           26.836        27.636        12.955        0 \r\n 1995          199           27.205        28.125        16.691        0 \r\n 1995          200           15.396        28.52         13.588        0 \r\n 1995          201           24.477        27.987        14.398        0 \r\n 1995          202           25.618        29.346        16.736        13.386 \r\n 1995          203           19.411        27.197        15.412        8.839 \r\n 1995          204           21.195        29.62         13.737        10.338 \r\n 1995          205           25.517        30.442        16.681        0 \r\n 1995          206           22.898        28.867        13.886        10.922 \r\n 1995          207           26.665        28.369        18.362        0 \r\n 1995          208           25.904        30.707        15.604        0 \r\n 1995          209           27.032        32.236        18.426        0 \r\n 1995          210           26.917        31.983        20.633        0 \r\n 1995          211           26.099        31.462        15.663        0 \r\n 1995          212           7.57          21.479        10.606        0 \r\n 1995          213           25.263        24.201        12.312        0 \r\n 1995          214           17.422        27.86         14.173        0 \r\n 1995          215           19.495        30.102        19.352        0 \r\n 1995          216           18.414        30.407        17.503        13.741 \r\n 1995          217           13.145        28.409        16.948        48.87 \r\n 1995          218           22.307        29.337        18.036        0 \r\n 1995          219           22.178        32.464        22.364        0 \r\n 1995          220           24.464        33.844        18.404        0 \r\n 1995          221           23.686        29.411        18.277        0 \r\n 1995          222           23.051        31.997        20.759        0 \r\n 1995          223           24.793        32.824        22.419        0 \r\n 1995          224           24.137        32.456        22.073        0 \r\n 1995          225           16.336        28.772        14.84         50.952 \r\n 1995          226           14.832        23.809        14.446        0 \r\n 1995          227           10.154        26.064        19.342        0 \r\n 1995          228           14.567        30.545        20.674        0 \r\n 1995          229           21.921        33.066        22.88         0 \r\n 1995          230           22.521        32.51         13.287        0 \r\n 1995          231           24.618        25.633        13.264        0 \r\n 1995          232           21.673        27.794        14.669        0 \r\n 1995          233           20.322        28.8          16.747        0 \r\n 1995          234           14.157        28.431        19.317        0 \r\n 1995          235           17.492        30.071        20.709        0 \r\n 1995          236           22.319        30.22         18.496        0 \r\n 1995          237           22.391        30.341        19.236        6.35 \r\n 1995          238           15.429        29.496        19.909        0 \r\n 1995          239           18.721        31.622        21.222        0 \r\n 1995          240           19.458        30.767        18.842        25.07 \r\n 1995          241           18.902        28.935        21.324        0 \r\n 1995          242           19.516        28.755        13.067        0 \r\n 1995          243           13.041        24.522        11.159        0 \r\n 1995          244           22.093        25.939        13.641        9.296 \r\n 1995          245           16.264        26.872        14.704        6.071 \r\n 1995          246           18.157        27.814        15.058        0 \r\n 1995          247           20.898        27.001        14.447        0 \r\n 1995          248           7.929         25.78         18.374        0 \r\n 1995          249           16.618        26.994        10.645        0 \r\n 1995          250           7.491         16.084        3.162         0 \r\n 1995          251           21.483        18.066        4.438         0 \r\n 1995          252           21.195        20.043        5.153         0 \r\n 1995          253           19.842        21.425        7.218         0 \r\n 1995          254           13.091        20.979        10.822        8.865 \r\n 1995          255           14.902        24.867        11.877        0 \r\n 1995          256           19.602        27.48         7.707         0 \r\n 1995          257           18.214        25.239        10.178        0 \r\n 1995          258           19.111        27.411        14.677        0 \r\n 1995          259           18.584        22.573        6.169         0 \r\n 1995          260           14.442        17.571        9.297         0 \r\n 1995          261           7.877         15.756        9.442         26.822 \r\n 1995          262           8.307         12.376        2.466         0 \r\n 1995          263           4.262         7.253         1.566         0 \r\n 1995          264           11.203        10.209       -3.169         0 \r\n 1995          265           18.955        13.409        0.559         0 \r\n 1995          266           12.911        15.676        5.002         4.496 \r\n 1995          267           15.913        18.507        1.958         0 \r\n 1995          268           18.584        22.987        4.438         0 \r\n 1995          269           18.381        25.506        6.211         0 \r\n 1995          270           18.045        26.729        9.202         0 \r\n 1995          271           16.27         26.114        14.791        13.513 \r\n 1995          272           5.42          19.853        14.316        10.77 \r\n 1995          273           6.477         21.714        6.174         4.293 \r\n 1995          274           16.802        20.198        7.04          2.54 \r\n 1995          275           9.56          16.286        4.008         3.05 \r\n 1995          276           16.672        19.821        6.412         0 \r\n 1995          277           9.673         20.831        9.16          0 \r\n 1995          278           1.629         10.618        5.837         4.57 \r\n 1995          279           5.557         11.697        0.291         5.84 \r\n 1995          280           15.884        14.272        2.617         0 \r\n 1995          281           3.28          14.673        5.036         4.06 \r\n 1995          282           14.436        21.259        3.808         1.52 \r\n 1995          283           15.762        26.203        6.782         0 \r\n 1995          284           15.284        28.891        13.207        0 \r\n 1995          285           13.213        28.58         9.357         0 \r\n 1995          286           5.359         12.041        1.243         0 \r\n 1995          287           14.499        13.814        0.303         0 \r\n 1995          288           14.448        16.81         1.235         0 \r\n 1995          289           13.033        19.429        6.821         0 \r\n 1995          290           12.765        19.853        2.504         0 \r\n 1995          291           11.109        18.792        5.617         0 \r\n 1995          292           3.156         9.729         2.366         0 \r\n 1995          293           7.811         8.364        -2.139         0 \r\n 1995          294           12.421        10.767       -2.293         0 \r\n 1995          295           11.071        9.445         0.119         0 \r\n 1995          296           2.271         7.355        -0.402         27.18 \r\n 1995          297           13.522        12.868       -1.397         1.52 \r\n 1995          298           13.173        14.654        1.156         0 \r\n 1995          299           3.597         10.804        2.525         1.02 \r\n 1995          300           2.361         8.829         3.369         1.52 \r\n 1995          301           11.786        9.229         0.025         0 \r\n 1995          302           2.919         3.177        -0.855         5.08 \r\n 1995          303           2.803         2.32         -1.42          0 \r\n 1995          304           1.359         1.005        -0.799         3.05 \r\n 1995          305           1.527         0.964        -6.941         10.67 \r\n 1995          306           9.953        -4.833        -10.392        0 \r\n 1995          307           9.649         0.673        -14.501        0 \r\n 1995          308           11.331        8.564        -5.852         0 \r\n 1995          309           10.201        10.559       -0.668         0 \r\n 1995          310           7.374         6.229        -5.043         0 \r\n 1995          311           5.615        -2.649        -11.42         0 \r\n 1995          312           5.521         6.629        -6.208         0 \r\n 1995          313           8.775         8.862        -5.121         0 \r\n 1995          314           2.053        -3.877        -13.936        0 \r\n 1995          315           10.227        0.409        -12.522        0 \r\n 1995          316           6.695         2.631        -7.458         0 \r\n 1995          317           3.745         0.294        -9.267         0 \r\n 1995          318           4.775         1.539        -5.905         0 \r\n 1995          319           2.828         2.299        -3.76          0.51 \r\n 1995          320           4.533         3.369        -3.17          0 \r\n 1995          321           2.372         6.755        -3.426         0 \r\n 1995          322           8.918         10.266       -2.398         0 \r\n 1995          323           7.542         9.013        -2.513         0 \r\n 1995          324           9.285         3.861        -6.966         0 \r\n 1995          325           8.965         4.341        -7.308         0 \r\n 1995          326           4.317         1.112        -10.737        0 \r\n 1995          327           4.855         1.118        -11.524        0 \r\n 1995          328           5.958         5.189        -6.817         0 \r\n 1995          329           6.204         1.867        -3.913         0 \r\n 1995          330           3.516        -0.269        -8.869         0 \r\n 1995          331           5.032        -5.274        -15.673        1.27 \r\n 1995          332           8.67         -3.527        -12.926        0 \r\n 1995          333           8.511         4.777        -9.615         1.27 \r\n 1995          334           6.132         7.006        -3.169         0 \r\n 1995          335           7.461         8.474        -1.488         0 \r\n 1995          336           8.051         9.311        -3.646         0 \r\n 1995          337           8.391         6.739        -7.612         0 \r\n 1995          338           5.583         5.342        -5.947         0 \r\n 1995          339           8.643         1.438        -9.639         0 \r\n 1995          340           4.295        -0.033        -7.095         0 \r\n 1995          341           5.807        -0.182        -13.981        0 \r\n 1995          342           5.252        -10.815       -22.959        6.6 \r\n 1995          343           8.854        -12.686       -22.558        0 \r\n 1995          344           3.806        -12.157       -19.458        0 \r\n 1995          345           5.597        -11.862       -19.651        0 \r\n 1995          346           5.569        -5.902        -15.153        0 \r\n 1995          347           0.88          3.19         -7.112         0 \r\n 1995          348           7.742         3.945        -9.753         0 \r\n 1995          349           7.618         4.235        -8.601         0 \r\n 1995          350           6.424         4.695        -4.544         0 \r\n 1995          351           2.023         1.518        -4.246         0 \r\n 1995          352           2.619        -1.858        -4.836         0 \r\n 1995          353           1.907        -3.388        -6.582         0 \r\n 1995          354           2.01         -4.19         -9.281         0 \r\n 1995          355           2.856        -6.721        -10.923        0 \r\n 1995          356           3.716        -4.052        -9.056         0 \r\n 1995          357           2.652        -2.531        -9.373         0 \r\n 1995          358           1.039        -3.323        -6.095         0 \r\n 1995          359           1.619        -1.961        -7.917         0 \r\n 1995          360           6.072        -0.923        -10.712        0 \r\n 1995          361           5.313        -2.466        -13.252        0 \r\n 1995          362           5.091         0.573        -10.579        0 \r\n 1995          363           4.36          0.296        -7.315         0 \r\n 1995          364           1.986        -0.427        -3.092         1.52 \r\n 1995          365           1.721         0.508        -2.827         0 \r\n 1996          1             2.053        -0.755        -6.999         4.06 \r\n 1996          2             4.043        -5.896        -21.031        2.03 \r\n 1996          3             4.46         -8.231        -17.739        0 \r\n 1996          4             6.879        -11.569       -22.693        1.27 \r\n 1996          5             6.543        -16.521       -24.644        0 \r\n 1996          6             8.471        -15.821       -28.413        0 \r\n 1996          7             8.399        -8.163        -22.79         0 \r\n 1996          8             6.991         1.233        -9.587         0 \r\n 1996          9             6.066         0.559        -6.91          0 \r\n 1996          10            1.648         1.677        -2.258         0 \r\n 1996          11            6.031         3.325        -5.764         0 \r\n 1996          12            8.583         9.56         -3.111         0 \r\n 1996          13            8.205         8.797        -7.677         0 \r\n 1996          14            5.269        -4.273        -16.932        0 \r\n 1996          15            5.793         1.115        -13.068        0 \r\n 1996          16            7.528         5.493        -8.99          0 \r\n 1996          17            1.137        -1.627        -21.041        3.3 \r\n 1996          18            3.678        -18.315       -26.377        14.99 \r\n 1996          19            6.739        -12.266       -21.143        0 \r\n 1996          20            8.317        -3.698        -14.476        0 \r\n 1996          21            7.893        -0.223        -15.702        0 \r\n 1996          22            6.424        -13.097       -18.487        0 \r\n 1996          23            6.164        -11.039       -17.543        2.54 \r\n 1996          24            9.223        -11.436       -18.564        0 \r\n 1996          25            6.909        -13.215       -20.044        2.54 \r\n 1996          26            4.084        -13.849       -21.746        0 \r\n 1996          27            10.844       -8.003        -20.077        0 \r\n 1996          28            8.621        -4.781        -24.446        0 \r\n 1996          29            8.912        -19.814       -25.77         0 \r\n 1996          30            10.443       -15.287       -27.799        0 \r\n 1996          31            11.571       -13.272       -28.933        0 \r\n 1996          32            10.941       -19.949       -33.204        0 \r\n 1996          33            12.104       -23.246       -31.753        0 \r\n 1996          34            12.072       -15.464       -29.416        0 \r\n 1996          35            11.878       -8.388        -22.156        0 \r\n 1996          36            10.216       -1.954        -14.729        0 \r\n 1996          37            9.469         6.177        -4.006         0 \r\n 1996          38            8.345         8.14          0.995         0 \r\n 1996          39            11.651        9.436        -2.453         0 \r\n 1996          40            11.235        9.303        -0.421         0 \r\n 1996          41            9.179         1.664        -5.728         0 \r\n 1996          42            10.762        1.709        -10.728        0 \r\n 1996          43            10.902        4.837        -6.342         0 \r\n 1996          44            9.878         5.529        -1.233         0 \r\n 1996          45            4.774        -0.988        -10.284        0.25 \r\n 1996          46            9.664        -2.227        -21.387        2.29 \r\n 1996          47            13.252       -0.645        -14.334        0 \r\n 1996          48            11.623       -0.829        -11.85         0 \r\n 1996          49            10.565        10.239       -6.449         0 \r\n 1996          50            12.229        11.993       -1.667         0 \r\n 1996          51            12.401        4.856        -4.061         0 \r\n 1996          52            3.744         1.718        -2.573         0 \r\n 1996          53            1.837         5.559        -0.549         0 \r\n 1996          54            11.943        12.228       -3.528         0 \r\n 1996          55            14.59         13.406       -2.578         0 \r\n 1996          56            13.37         4.592        -8.725         0 \r\n 1996          57            3.796        -4.333        -14.138        0 \r\n 1996          58            12.84        -10.147       -17.058        0 \r\n 1996          59            14.497       -6.871        -20.483        0 \r\n 1996          60            16.046       -3.038        -16.406        0 \r\n 1996          61            12.194       -3.076        -15.901        0 \r\n 1996          62            16.188       -6.014        -20.149        0 \r\n 1996          63            13.401       -0.283        -13.626        0 \r\n 1996          64            9.042         2.193        -8.853         0 \r\n 1996          65            9.43         -5.388        -14.624        0 \r\n 1996          66            13.918       -12.964       -25.037        1.27 \r\n 1996          67            11.972       -10.862       -23.623        0 \r\n 1996          68            18.201       -3.761        -20.829        0 \r\n 1996          69            18.068        5.077        -12.374        0 \r\n 1996          70            13.85         12.034       -2.214         0 \r\n 1996          71            14.802        15.17         1.719         0 \r\n 1996          72            17.031        18.104       -1.007         0 \r\n 1996          73            17.462        16.399       -0.392         0 \r\n 1996          74            15.181        8.933        -2.117         0 \r\n 1996          75            19.027        9.482        -3.353         0 \r\n 1996          76            9.993         7.831        -5.567         0 \r\n 1996          77            18.662        5.404        -6.468         0 \r\n 1996          78            12.045        1.211        -8.515         0 \r\n 1996          79            11.881        2.788        -8.088         0 \r\n 1996          80            20.23         4.548        -9.362         0 \r\n 1996          81            15.961        6.281        -9.638         0 \r\n 1996          82            18.999        7.05         -4.321         0 \r\n 1996          83            5.172         5.863        -2.448         0 \r\n 1996          84            1.88         -1.831        -15.392        24.13 \r\n 1996          85            19.163       -6.702        -19.071        11.68 \r\n 1996          86            22.146        0.692        -11.621        0 \r\n 1996          87            21.493        5.321        -5.202         0 \r\n 1996          88            17.024        7.491        -0.495         0 \r\n 1996          89            8.803         8.439        -0.952         0 \r\n 1996          90            9.169         3.276        -5.737         0 \r\n 1996          91            19.784        6.697        -4.185         0 \r\n 1996          92            19.687        13.866       -0.438         0 \r\n 1996          93            20.419        16.933       -0.356         0 \r\n 1996          94            4.813         0.445        -3.988         0 \r\n 1996          95            8.918         1.741        -6.377         0 \r\n 1996          96            18.051        5.039        -6.999         0 \r\n 1996          97            18.289        6.277        -3.087         0 \r\n 1996          98            19            6.719        -2.027         0 \r\n 1996          99            11.193        9.957        -3.87          0 \r\n 1996          100           23.025        18.046       -0.471         0 \r\n 1996          101           22.46         23.217        4.098         0 \r\n 1996          102           18.146        23.277        0.277         0 \r\n 1996          103           4.682         4.317        -3.633         0 \r\n 1996          104           13.581        4.017        -2.424         0 \r\n 1996          105           4.752         7.246        -2.093         10.211 \r\n 1996          106           22.31         12.569       -4.373         0 \r\n 1996          107           23.399        18.785        0.039         0 \r\n 1996          108           21.807        24.297        4.901         0 \r\n 1996          109           17.499        19.594        3.162         0 \r\n 1996          110           6.747         16.569        0.812         0 \r\n 1996          111           21.17         15.012        2.675         0 \r\n 1996          112           9.225         13.312       -1.621         3.2 \r\n 1996          113           25.096        14.287       -3.482         0 \r\n 1996          114           22.878        19.93         1.792         0 \r\n 1996          115           17.385        22.041        7.677         0 \r\n 1996          116           18.119        13.99        -1.495         0 \r\n 1996          117           21.073        13.457       -1.819         0 \r\n 1996          118           21.432        16.091        2.29          0 \r\n 1996          119           7.496         13.606        3.404         0 \r\n 1996          120           15.08         14.451       -2.961         0 \r\n 1996          121           19.491        15.787       -1.719         0 \r\n 1996          122           22.738        16.275       -0.756         2.896 \r\n 1996          123           9.481         14.492        2.538         3.937 \r\n 1996          124           3.852         12.039        3.563         4.42 \r\n 1996          125           12.619        15.279        6.179         0 \r\n 1996          126           17.544        13.564        2.814         0 \r\n 1996          127           10.881        16.181        2.098         0 \r\n 1996          128           19.178        19.734        7.008         0 \r\n 1996          129           10.781        18.879        9.851         0 \r\n 1996          130           3.78          12.168        4.053         5.359 \r\n 1996          131           9.322         12.045        3.833         0 \r\n 1996          132           17.522        10.564        1.969         0 \r\n 1996          133           6.875         12.223        3.406         0 \r\n 1996          134           17.775        15.894        6.901         0 \r\n 1996          135           4.277         17.719        9.578         3.531 \r\n 1996          136           12.993        23.862        13.349        0 \r\n 1996          137           15.389        30.148        17.212        0 \r\n 1996          138           24.686        32.849        12.756        0 \r\n 1996          139           23.692        32.216        16.064        0 \r\n 1996          140           22.028        24.587        12.596        0 \r\n 1996          141           12.498        21.901        8.115         0 \r\n 1996          142           24.975        23.842        12.04         0 \r\n 1996          143           7.651         19.317        12.004        7.595 \r\n 1996          144           7.852         16.437        8.142         8.026 \r\n 1996          145           6.272         13.743        8.125         8.839 \r\n 1996          146           4.081         10.501        6.358         0 \r\n 1996          147           3.137         9.946         6.586         10.947 \r\n 1996          148           2.998         11.684        6.586         13.919 \r\n 1996          149           7.906         17.969        8.93          0 \r\n 1996          150           23.224        21.539        7.99          0 \r\n 1996          151           23.718        21.938        11.02         2.743 \r\n 1996          152           10.31         22.086        12.57         0 \r\n 1996          153           21.42         22.987        11.497        0 \r\n 1996          154           15.397        17.156        7.876         0 \r\n 1996          155           9.26          18.087        3.694         0 \r\n 1996          156           24.702        21.734        11.918        3.785 \r\n 1996          157           13.888        23.672        12.523        2.946 \r\n 1996          158           13.318        22.669        10.586        9.474 \r\n 1996          159           11.796        22.248        8.454         0 \r\n 1996          160           27.642        26.461        10.829        0 \r\n 1996          161           27.383        28.567        12.601        0 \r\n 1996          162           23.789        30.269        14.142        0 \r\n 1996          163           26.07         32.231        16.317        0 \r\n 1996          164           24.154        31.997        17.339        0 \r\n 1996          165           26.283        31.425        16.368        0 \r\n 1996          166           21.738        32.238        19.359        0 \r\n 1996          167           14.194        29.524        18.347        28.372 \r\n 1996          168           9.581         24.736        17.968        5.969 \r\n 1996          169           11.462        19.984        14.603        0 \r\n 1996          170           17.836        23.252        14.68         0 \r\n 1996          171           20.301        25.609        16.565        15.189 \r\n 1996          172           8.277         25.374        17.431        62.205 \r\n 1996          173           22.468        27.994        14.992        0 \r\n 1996          174           16.619        24.704        13.888        13.106 \r\n 1996          175           20.451        26.806        13.109        0 \r\n 1996          176           25.598        27.608        15.134        0 \r\n 1996          177           23.727        30.201        18.644        0 \r\n 1996          178           25.72         31.653        20.573        0 \r\n 1996          179           24.121        32.405        22.974        0 \r\n 1996          180           24.983        32.749        24.551        0 \r\n 1996          181           24.055        32.061        17.006        0 \r\n 1996          182           26.287        31.002        16.905        0 \r\n 1996          183           22.643        29.946        16.811        2.642 \r\n 1996          184           25.767        28.232        14.321        0 \r\n 1996          185           15.158        24.03         16.406        6.02 \r\n 1996          186           11.551        26.534        16.566        0 \r\n 1996          187           25.163        28.671        18.783        0 \r\n 1996          188           15.735        29.087        14.076        4.674 \r\n 1996          189           25.286        27.882        13.669        0 \r\n 1996          190           24.72         22.386        10.281        0 \r\n 1996          191           22.47         23.72         9.23          0 \r\n 1996          192           26.372        24.817        12.895        0 \r\n 1996          193           12.216        23.984        13.659        0 \r\n 1996          194           23.098        25.357        11.701        0 \r\n 1996          195           21.511        25.223        12.097        0 \r\n 1996          196           23.355        26.392        12.718        3.48 \r\n 1996          197           26.919        28.537        13.628        0 \r\n 1996          198           11.936        29.446        17.559        22.454 \r\n 1996          199           22.868        30.254        20.234        0 \r\n 1996          200           26.103        30.443        17.677        0 \r\n 1996          201           20.495        25.232        18.142        0 \r\n 1996          202           9.067         23.698        17.469        0 \r\n 1996          203           17.256        26.367        16.842        0 \r\n 1996          204           16.981        26.872        12.087        0 \r\n 1996          205           22.449        27.135        13.044        0 \r\n 1996          206           23.542        23.993        11.24         0 \r\n 1996          207           25.401        25.532        12.495        0 \r\n 1996          208           15.135        25.995        16.092        3.835 \r\n 1996          209           19.865        25.122        14.068        9.703 \r\n 1996          210           19.643        24.666        15            3.81 \r\n 1996          211           18.668        23.962        11.273        0 \r\n 1996          212           24.029        23.958        11.171        0 \r\n 1996          213           21.209        25.222        11.513        0 \r\n 1996          214           19.778        25.961        13.936        0 \r\n 1996          215           21.408        26.265        15.488        0 \r\n 1996          216           15.036        25.516        17.349        14.351 \r\n 1996          217           2.512         24.745        17.376        48.895 \r\n 1996          218           19.745        29.189        19.368        0 \r\n 1996          219           22.334        30.734        17.814        14.961 \r\n 1996          220           23.647        27.867        13.844        0 \r\n 1996          221           24.577        28.244        14.286        0 \r\n 1996          222           23.577        28.161        17.106        0 \r\n 1996          223           14.819        24.987        13.798        19.609 \r\n 1996          224           17.193        24.603        12.834        0 \r\n 1996          225           23.47         26.835        14.039        0 \r\n 1996          226           21.285        27.411        14.296        0 \r\n 1996          227           21.988        24.922        11.093        0 \r\n 1996          228           20.385        24.043        11.748        0 \r\n 1996          229           13.034        24.383        11.531        0 \r\n 1996          230           15.791        24.934        14.366        0 \r\n 1996          231           11.842        25.352        17.981        10.084 \r\n 1996          232           14.342        26.336        13.266        0 \r\n 1996          233           20.087        27.574        16.417        0 \r\n 1996          234           20.495        28.858        18.952        0 \r\n 1996          235           15.073        24.456        11.078        0 \r\n 1996          236           23.028        25.195        11.492        0 \r\n 1996          237           22.584        27.549        13.699        0 \r\n 1996          238           20.464        27.901        16.03         7.595 \r\n 1996          239           11.081        23.614        14.297        0 \r\n 1996          240           12.932        25.292        13.661        0 \r\n 1996          241           15.612        27.351        15.564        0 \r\n 1996          242           17.412        27.133        14.554        0 \r\n 1996          243           19.566        26.047        14.54         0 \r\n 1996          244           15.247        25.995        14.347        0 \r\n 1996          245           17.952        27.324        16.937        0 \r\n 1996          246           17.742        26.974        17.932        8.712 \r\n 1996          247           14.669        27.946        17.249        0 \r\n 1996          248           19.158        28.018        18.217        0 \r\n 1996          249           19.105        27.376        15.7          0 \r\n 1996          250           17.974        26.753        15.594        0 \r\n 1996          251           6.334         22.533        14.253        6.198 \r\n 1996          252           15.683        24.214        8.742         0 \r\n 1996          253           19.995        25.987        11.741        0 \r\n 1996          254           15.535        25.652        12.201        5.817 \r\n 1996          255           19.156        18.456        4.909         0 \r\n 1996          256           13.43         17.255        4.607         0 \r\n 1996          257           18.547        18.704        2.841         0 \r\n 1996          258           18.536        19.966        2.975         0 \r\n 1996          259           13.649        20.43         6.056         0 \r\n 1996          260           15.778        20.154        6.67          0 \r\n 1996          261           15.695        18.966        7.234         0 \r\n 1996          262           8.903         17.809        9.15          0 \r\n 1996          263           3.537         15.331        9.506         23.343 \r\n 1996          264           8.487         16.293        10.102        0 \r\n 1996          265           11.772        19.184        4.934         0 \r\n 1996          266           12.702        19.446        8.628         0 \r\n 1996          267           11.582        19.254        1.751         0 \r\n 1996          268           17.152        18.646        5.793         2.997 \r\n 1996          269           2.367         11.862        7.041         15.189 \r\n 1996          270           6.782         9.691         4.926         0 \r\n 1996          271           3.962         14.21         2.293         4.394 \r\n 1996          272           16.156        17.437        5.809         0 \r\n 1996          273           15.107        22.272        6.483         0 \r\n 1996          274           15.682        26.299        12.011        0 \r\n 1996          275           15.371        24.936        3.532         0 \r\n 1996          276           15.585        11.928       -2.265         0 \r\n 1996          277           14.712        16.408        3.047         0 \r\n 1996          278           13.516        21.832        8.627         0 \r\n 1996          279           13.829        23.833        11.185        0 \r\n 1996          280           11.528        17.679        4.517         0 \r\n 1996          281           13.854        16.709        1.266         0 \r\n 1996          282           13.6          17.779        3.502         0 \r\n 1996          283           13.586        13.213       -2.961         0.25 \r\n 1996          284           15.17         16.443        0.389         0 \r\n 1996          285           13.632        22.992        5.511         0 \r\n 1996          286           13.046        26.23         7.738         0 \r\n 1996          287           13.66         26.494        10.028        0 \r\n 1996          288           12.92         25.391        6.573         0 \r\n 1996          289           14.157        23.748        7.672         0 \r\n 1996          290           11.444        23.732        4.273         0 \r\n 1996          291           3.88          8.533        -0.147         17.78 \r\n 1996          292           13.839        15.128        1.751         0 \r\n 1996          293           12.694        18.337        6.575         0 \r\n 1996          294           8.998         16.942        3.024         0 \r\n 1996          295           11.103        7.876        -0.769         0 \r\n 1996          296           2.205         8.348        -0.595         2.54 \r\n 1996          297           11.404        13.049       -2.232         6.6 \r\n 1996          298           7.492         13.025        3.178         0 \r\n 1996          299           4.536         18.898        9.241         0 \r\n 1996          300           9.78          22.067        1.171         0 \r\n 1996          301           8.114         12.383       -3.393         0 \r\n 1996          302           9.836         14.848        2.439         0 \r\n 1996          303           4.099         12.983       -7.394         18.54 \r\n 1996          304           11.46        -1.126        -7.058         2.54 \r\n 1996          305           6.099        -0.326        -10.137        0 \r\n 1996          306           6.199         2.213        -12.083        0 \r\n 1996          307           11.149        10.079       -6.706         0 \r\n 1996          308           10.467        11.77         1.214         0 \r\n 1996          309           2.128         9.267         4.909         0 \r\n 1996          310           5.225         9.474         2.944         0 \r\n 1996          311           6.733         8.971        -4.039         1.02 \r\n 1996          312           9.969         9.503        -3.912         0 \r\n 1996          313           7.588         2.993        -5.091         0 \r\n 1996          314           3.82          0.209        -7.742         0 \r\n 1996          315           4.005        -3.701        -9.812         0 \r\n 1996          316           3.869        -4.794        -12.186        0 \r\n 1996          317           2.711        -4.714        -8.419         0 \r\n 1996          318           2.364        -4.122        -11.285        0 \r\n 1996          319           2.481         4.758        -7.494         0 \r\n 1996          320           0.486         7.881        -0.618         15.49 \r\n 1996          321           0.501         0.834        -10.009        18.54 \r\n 1996          322           9.243        -3.737        -11.604        1.27 \r\n 1996          323           4.587        -3.464        -8.507         0 \r\n 1996          324           2.936        -3.383        -5.816         3.3 \r\n 1996          325           1.413        -1.966        -5.519         0.51 \r\n 1996          326           3.058        -2.451        -9.607         0.25 \r\n 1996          327           1.344        -0.427        -8.948         0.25 \r\n 1996          328           1.325        -5.475        -15.776        9.4 \r\n 1996          329           8.193        -10.921       -20.415        1.52 \r\n 1996          330           8.147        -11.878       -23.333        0 \r\n 1996          331           6.379        -7.284        -18.026        0 \r\n 1996          332           4.956        -0.982        -9.241         0 \r\n 1996          333           7.929         2.339        -3.779         0 \r\n 1996          334           0.857         0.678        -5.182         9.4 \r\n 1996          335           4.086        -1.027        -8.506         1.02 \r\n 1996          336           4.737        -5.637        -8.573         0 \r\n 1996          337           3.463        -5.703        -15.322        5.84 \r\n 1996          338           6.179        -3.344        -11.468        2.29 \r\n 1996          339           3.468        -1.814        -7.093         0 \r\n 1996          340           4.683        -2.272        -7.591         0 \r\n 1996          341           7.155        -0.774        -9.363         1.27 \r\n 1996          342           7.624        -2.146        -10.274        0 \r\n 1996          343           6.534        -3.245        -13.642        0 \r\n 1996          344           5.414        -0.357        -5.103         0 \r\n 1996          345           3.18         -0.443        -3.113         0 \r\n 1996          346           2.649         0.254        -6.916         0 \r\n 1996          347           4.785         0.303        -6.32          0 \r\n 1996          348           5.528        -2.303        -12.454        0 \r\n 1996          349           1.107        -4.455        -12.916        8.13 \r\n 1996          350           7.142        -2.258        -15.324        3.05 \r\n 1996          351           3.68         -5.617        -15.947        0 \r\n 1996          352           4.756        -13.176       -19.937        0 \r\n 1996          353           5.172        -19.254       -21.974        0 \r\n 1996          354           6.225        -12.123       -26.744        0 \r\n 1996          355           4.496        -2.277        -15.717        0 \r\n 1996          356           4.227        -8.933        -17.95         0 \r\n 1996          357           2.177        -15.483       -18.135        0 \r\n 1996          358           4.296        -16.822       -25.264        8.13 \r\n 1996          359           5.842        -20.789       -24.239        0.51 \r\n 1996          360           2.193        -19.711       -24.372        3.05 \r\n 1996          361           7.181        -9.568        -24.281        4.32 \r\n 1996          362           4.579        -7.553        -15.287        0 \r\n 1996          363           6.18         -11.158       -19.083        0 \r\n 1996          364           6.474        -12.314       -19.871        0 \r\n 1996          365           4.304        -8.562        -15.009        0 \r\n 1996          366           4.504        -1.667        -10.654        0 \r\n 1997          1             5.177         3.624        -4.174         0 \r\n 1997          2             5.027         3.902        -0.193         0 \r\n 1997          3             4.269         1.419        -0.309         0 \r\n 1997          4             1.793        -0.182        -13.604        4.57 \r\n 1997          5             4.758        -11.88        -18.716        2.54 \r\n 1997          6             6.07         -7.076        -21.514        0 \r\n 1997          7             5.327        -2.026        -12.484        0 \r\n 1997          8             4.678        -2.703        -13.587        0 \r\n 1997          9             3.233        -11.247       -25.864        2.54 \r\n 1997          10            4.326        -22.029       -26.42         1.27 \r\n 1997          11            6.361        -20.359       -27.522        0 \r\n 1997          12            5.46         -16.927       -22.41         0 \r\n 1997          13            6.267        -11.768       -21.838        0 \r\n 1997          14            2.962        -8.879        -12.793        4.06 \r\n 1997          15            5.107        -8.747        -23.943        1.02 \r\n 1997          16            7.734        -19.026       -29.638        0 \r\n 1997          17            7.821        -11.323       -26.712        0 \r\n 1997          18            4.86         -1.101        -12.784        0 \r\n 1997          19            7.411         1.676        -7.12          0 \r\n 1997          20            7.758         3.007        -4.018         0 \r\n 1997          21            2.464         3.254        -13.093        0 \r\n 1997          22            6.773        -7.717        -19.373        0 \r\n 1997          23            4.848        -6.631        -16.586        0 \r\n 1997          24            6.687        -14.481       -25.054        4.32 \r\n 1997          25            7.7          -19.455       -25.114        0 \r\n 1997          26            5.87         -16.966       -22.927        2.79 \r\n 1997          27            7.363        -16.424       -28.052        5.08 \r\n 1997          28            7.669        -11.738       -20.926        0 \r\n 1997          29            7.235        -4.997        -19.348        0 \r\n 1997          30            7.916         4.207        -6.868         0 \r\n 1997          31            7.938         3.558        -1.7           0 \r\n 1997          32            3.119         2.497        -8.006         0 \r\n 1997          33            3.151        -2.176        -6.579         0 \r\n 1997          34            2.226        -1.631        -5.182         0 \r\n 1997          35            6.262        -3.398        -6.631         23.11 \r\n 1997          36            4.945        -5.83         -8.515         0 \r\n 1997          37            6.376        -6.344        -10.081        0 \r\n 1997          38            5.447        -6.361        -19.442        0 \r\n 1997          39            9.878        -6.148        -19.496        0 \r\n 1997          40            6.893        -4.765        -15.667        0 \r\n 1997          41            5.932        -6.406        -14.127        0 \r\n 1997          42            5.438        -5.727        -23.176        2.03 \r\n 1997          43            11.319       -8.65         -20.958        0 \r\n 1997          44            8.53         -5.22         -12.597        0.51 \r\n 1997          45            10.008       -6.407        -20.971        0 \r\n 1997          46            6.076        -7.487        -15.081        4.83 \r\n 1997          47            8.525         1.413        -10.167        0 \r\n 1997          48            10.328        5.704        -0.049         0 \r\n 1997          49            10.791        4.19         -10.01         0 \r\n 1997          50            11.573        3.098        -4.634         0 \r\n 1997          51            7.81          3.429        -5.549         0 \r\n 1997          52            5.206        -1.391        -12.813        0 \r\n 1997          53            6.667         0.318        -16.559        0 \r\n 1997          54            11.47        -7.185        -14.962        0 \r\n 1997          55            11.818       -0.517        -11.308        0 \r\n 1997          56            12.393        3.948        -7.141         0 \r\n 1997          57            8.062        -2.038        -9.964         0 \r\n 1997          58            7.829        -0.184        -7.14          0 \r\n 1997          59            2.263         2.538        -4.633         3.05 \r\n 1997          60            7.357        -0.246        -10.243        5.59 \r\n 1997          61            11.345        3.123        -4.029         0 \r\n 1997          62            5.945         2.262        -9.929         0 \r\n 1997          63            6.911        -6.344        -18.343        0 \r\n 1997          64            12.17        -5.068        -16.066        0 \r\n 1997          65            12.756       -2.728        -11.565        0 \r\n 1997          66            11.851        5.539        -8.937         0 \r\n 1997          67            12.272        9.163        -3.359         0 \r\n 1997          68            14.235        6.721        -1.551         0 \r\n 1997          69            14.174        7.769        -2.186         0 \r\n 1997          70            13.752        4.527        -2.058         0 \r\n 1997          71            6.708         0.607        -2.219         0 \r\n 1997          72            0.992        -1.857        -11.941        1.78 \r\n 1997          73            14.402       -6.959        -17.166        0 \r\n 1997          74            12.559        3.641        -10.838        0 \r\n 1997          75            12.6          8.889        -1.953         0 \r\n 1997          76            9.712         1.982        -2.487         0 \r\n 1997          77            4.63          6.026        -5.054         8.38 \r\n 1997          78            12.142        13.196       -2.122         0 \r\n 1997          79            13.663        14.132        0.663         0 \r\n 1997          80            12.216        11.499       -3.307         0 \r\n 1997          81            14.355        6.922        -3.77          0 \r\n 1997          82            10.99         4.054        -1.988         0 \r\n 1997          83            1.845         4.059        -0.772         3.3 \r\n 1997          84            10.576        14.497       -2.478         0 \r\n 1997          85            19.092        22.253        2.086         0 \r\n 1997          86            18.409        21.832        1.377         0 \r\n 1997          87            3.489         8.159        -1.293         0 \r\n 1997          88            10.177        12.006       -2.533         0 \r\n 1997          89            17.579        16.428       -2.406         0 \r\n 1997          90            17.591        20.288        2.096         0 \r\n 1997          91            14.197        18.761        6.09          0 \r\n 1997          92            4.362         13.349        1.519         0 \r\n 1997          93            10.793        14.668        4.654         0 \r\n 1997          94            4.16          12.636        9.506         17.729 \r\n 1997          95            3.924         11.91        -7.791         22.047 \r\n 1997          96            10.54        -1.087        -9.163         0 \r\n 1997          97            18.98         0.013        -13.388        0 \r\n 1997          98            15.68        -1.945        -12.8          0 \r\n 1997          99            11.153       -0.183        -7.025         7.366 \r\n 1997          100           9.34         -1.034        -7.149         2.591 \r\n 1997          101           10.36         0.734        -6.411         3.378 \r\n 1997          102           18.93         5.517        -5.968         0 \r\n 1997          103           20.91         9.009        -4.973         0 \r\n 1997          104           20.961        12.183       -0.509         0 \r\n 1997          105           11.826        9.835        -4.896         0 \r\n 1997          106           21.777        10.829       -5.995         0 \r\n 1997          107           21.407        16.002        0.512         0 \r\n 1997          108           16.826        19.406        0.164         0 \r\n 1997          109           16.19         19.079        4.239         0 \r\n 1997          110           8.27          15.618        6.678         3.785 \r\n 1997          111           9.76          14.054        6.796         0 \r\n 1997          112           7.381         14.054        3.658         0 \r\n 1997          113           13.253        13.706       -0.392         0 \r\n 1997          114           16.763        15.539       -0.634         0 \r\n 1997          115           15.575        17.258        4.016         0 \r\n 1997          116           11.527        17.518        3.216         0 \r\n 1997          117           16.338        21.269        2.612         0 \r\n 1997          118           19.281        22.722        4.862         0 \r\n 1997          119           10.657        17.322        0.781         8.484 \r\n 1997          120           10.294        11.488       -3.401         0 \r\n 1997          121           16.646        15.582        2.757         15.977 \r\n 1997          122           3.045         11.198        0.374         8.484 \r\n 1997          123           18.005        18.613        0.799         0 \r\n 1997          124           22.761        21.301        7.552         0 \r\n 1997          125           22.989        21.022        2.606         0 \r\n 1997          126           12.836        19.874        7.503         10.389 \r\n 1997          127           7.111         16.149        5.546         10.77 \r\n 1997          128           13.894        15.168        0.812         0 \r\n 1997          129           23.786        22.223        2.511         0 \r\n 1997          130           22.09         25.919        7.154         0 \r\n 1997          131           13.013        13.112        0.292         0 \r\n 1997          132           15.137        15.112       -3.452         0 \r\n 1997          133           17.304        17.528        2.344         0 \r\n 1997          134           17.284        13.742       -2.151         0 \r\n 1997          135           24.363        21.114        1.387         0 \r\n 1997          136           18.648        28.756        7.272         0 \r\n 1997          137           21.303        28.952        14.098        0 \r\n 1997          138           21.966        24.109        5.374         0 \r\n 1997          139           21.087        15.018        0.941         0 \r\n 1997          140           19.356        19.837        4.165         0 \r\n 1997          141           24.08         23.712        7.969         0 \r\n 1997          142           19.473        24.101        11.344        0 \r\n 1997          143           5.942         16.942        11.796        34.315 \r\n 1997          144           3.688         14.024        10.592        0 \r\n 1997          145           2.52          12.041        6.964         0 \r\n 1997          146           3.306         10.774        5.699         6.883 \r\n 1997          147           3.162         11.113        6.918         7.061 \r\n 1997          148           4.953         12.02         8.469         0 \r\n 1997          149           11.007        17.916        7.154         0 \r\n 1997          150           20.371        24.087        8.226         0 \r\n 1997          151           24.503        26.961        10.657        0 \r\n 1997          152           22.086        27.183        12.699        0 \r\n 1997          153           15.328        26.636        15.546        0 \r\n 1997          154           7.749         25.344        12.49         0 \r\n 1997          155           14.261        27.452        12.609        0 \r\n 1997          156           17.374        27.069        11.713        0 \r\n 1997          157           20.803        26.643        11.173        0 \r\n 1997          158           18.51         25.678        10.904        0 \r\n 1997          159           24.489        25.791        10.522        0 \r\n 1997          160           18.874        26.423        11.173        0 \r\n 1997          161           17.356        26.323        12.712        0 \r\n 1997          162           11.422        24.229        14.263        12.7 \r\n 1997          163           5.454         26.304        14.018        0 \r\n 1997          164           23.16         28.808        13.096        0 \r\n 1997          165           26.01         29.077        15.641        0 \r\n 1997          166           16.164        27.467        20.083        0 \r\n 1997          167           28.755        26.882        18.252        0 \r\n 1997          168           18.273        27.973        18.606        0 \r\n 1997          169           16.42         26.524        18.863        0 \r\n 1997          170           23.773        28.416        20.477        22.911 \r\n 1997          171           12.658        27.276        17.687        27.762 \r\n 1997          172           19.198        29.282        17.988        0 \r\n 1997          173           22.549        30.853        19.136        0 \r\n 1997          174           24.519        29.969        20.179        8.433 \r\n 1997          175           15.214        28.219        15.879        6.731 \r\n 1997          176           24.403        27.207        12.71         0 \r\n 1997          177           28.105        28.619        14.945        0 \r\n 1997          178           27.906        31.435        18.457        0 \r\n 1997          179           26.738        32.308        16.964        0 \r\n 1997          180           2.8           25.614        14.737        0 \r\n 1997          181           22.897        28.671        18.651        0 \r\n 1997          182           17.72         28.674        13.614        0.279 \r\n 1997          183           19.768        20.847        12.341        0 \r\n 1997          184           9.236         19.654        9.851         0 \r\n 1997          185           20.182        23.651        9.157         0 \r\n 1997          186           21.464        25.027        10.638        0 \r\n 1997          187           23.542        25.008        12.041        0 \r\n 1997          188           15.873        27.258        15.263        0.025 \r\n 1997          189           27.118        26.497        12.596        0 \r\n 1997          190           25.469        25.154        14.649        0 \r\n 1997          191           18.347        27.386        16.511        0 \r\n 1997          192           17.994        29.817        19.785        0.025 \r\n 1997          193           20.86         29.909        20.074        0.152 \r\n 1997          194           19.713        28.946        14.296        0 \r\n 1997          195           28.847        30.881        15.532        0 \r\n 1997          196           28.028        32.543        19.738        0 \r\n 1997          197           27.559        32.837        19.736        0 \r\n 1997          198           25.524        31.855        21.549        0 \r\n 1997          199           23.492        31.414        22.029        0 \r\n 1997          200           15.825        31.739        17.412        0 \r\n 1997          201           19.725        29.166        19.008        102.36 \r\n 1997          202           19.543        28.277        19.378        3.05 \r\n 1997          203           22.011        27.907        19.134        0.51 \r\n 1997          204           18.676        29.267        21.213        15.49 \r\n 1997          205           24.688        31.827        22.913        0 \r\n 1997          206           25.995        32.758        22.584        1.02 \r\n 1997          207           25.35         31.29         22.001        0 \r\n 1997          208           9.624         26.893        18.614        0 \r\n 1997          209           25.173        25.627        13.729        0 \r\n 1997          210           20.946        24.646        15.393        0 \r\n 1997          211           16.518        24.14         14.344        0 \r\n 1997          212           22.656        27.111        16.896        0 \r\n 1997          213           19.369        30.413        17.593        0 \r\n 1997          214           25.737        31.238        18.989        0 \r\n 1997          215           25.599        29.807        17.278        0 \r\n 1997          216           24.819        27.538        13.071        0 \r\n 1997          217           24.303        25.388        13.567        0 \r\n 1997          218           20.028        26.999        15.161        0 \r\n 1997          219           21.69         27.075        15.127        2.54 \r\n 1997          220           23.543        26.207        14.817        0 \r\n 1997          221           13.283        23.248        11.611        0 \r\n 1997          222           7.833         18.743        12.258        2.79 \r\n 1997          223           11.643        19.521        13.712        0 \r\n 1997          224           8.7           21.582        11.401        3.05 \r\n 1997          225           24.513        23.999        13.211        0 \r\n 1997          226           13.311        27.85         13.026        2.29 \r\n 1997          227           24.422        29.861        15.573        1.52 \r\n 1997          228           22.437        28.472        15.137        0 \r\n 1997          229           10.351        18.945        8.408         0 \r\n 1997          230           12.241        20.633        11.671        0 \r\n 1997          231           7.365         22.728        13.707        1.02 \r\n 1997          232           21.329        24.641        9.744         2.79 \r\n 1997          233           21.896        25.779        10.294        0 \r\n 1997          234           20.307        28.543        12.323        0 \r\n 1997          235           20.812        30.566        14.134        0 \r\n 1997          236           20.784        28.258        17.131        0 \r\n 1997          237           10.416        28.844        18.619        10.67 \r\n 1997          238           18.073        29.969        19.479        0 \r\n 1997          239           7.101         25.853        17.156        6.1 \r\n 1997          240           11.783        28.949        19.363        1.02 \r\n 1997          241           19.475        30.223        18.638        0 \r\n 1997          242           17.259        28.717        15.453        3.81 \r\n 1997          243           21.519        30.041        17.666        0 \r\n 1997          244           15.82         29.764        16.402        0 \r\n 1997          245           14.545        21.772        8.369         48.01 \r\n 1997          246           21.505        20.439        8.367         0 \r\n 1997          247           16.988        24.106        11.774        0 \r\n 1997          248           16.038        28.097        13.636        0 \r\n 1997          249           20.531        28.466        15.932        0 \r\n 1997          250           15.407        25.954        16.68         7.62 \r\n 1997          251           6.475         22.464        9.828         0 \r\n 1997          252           19.045        21.981        7.178         0 \r\n 1997          253           19.961        22.779        8.158         0 \r\n 1997          254           18.168        24.889        10.822        0 \r\n 1997          255           16.338        26.635        13.206        0 \r\n 1997          256           16.356        27.006        13.854        4.06 \r\n 1997          257           14.909        27.754        15.907        0 \r\n 1997          258           18.047        27.561        18.492        0 \r\n 1997          259           6.787         25.288        9.157         0.25 \r\n 1997          260           19.073        26.771        12.483        0 \r\n 1997          261           9.83          27.631        13.274        0 \r\n 1997          262           9.842         18.12         5.489         8.13 \r\n 1997          263           18.729        16.425        1.513         0 \r\n 1997          264           13.705        14.807        5.991         0 \r\n 1997          265           2.18          16.054        9.261         22.1 \r\n 1997          266           14.907        20.481        5.397         15.49 \r\n 1997          267           18.369        25.434        7.105         0 \r\n 1997          268           18.256        28.36         9.643         0 \r\n 1997          269           13.384        26.149        14.482        0 \r\n 1997          270           12.032        24.842        7.378         0 \r\n 1997          271           17.909        22.973        9.246         0 \r\n 1997          272           17.698        24.028        5.463         0 \r\n 1997          273           17.386        25.818        6.623         0 \r\n 1997          274           14.661        30.082        11.2          0 \r\n 1997          275           15.898        31.324        17.104        0 \r\n 1997          276           15.737        29.702        7.557         0 \r\n 1997          277           16.459        23.839        13.144        0 \r\n 1997          278           16.418        24.483        16.658        0 \r\n 1997          279           14.548        26.951        16.037        0 \r\n 1997          280           10.229        25.136        18.629        0.76 \r\n 1997          281           3.913         21.822        13.764        3.05 \r\n 1997          282           16.113        16.818        6.782         1.02 \r\n 1997          283           6.111         18.177        8.641         0 \r\n 1997          284           10.3          24.592        19.86         0 \r\n 1997          285           1.086         18.711        9.356         22.86 \r\n 1997          286           13.41         11.563        1.232         8.38 \r\n 1997          287           15.772        10.92         6.774         0 \r\n 1997          288           6.43          12.85         8.12          0 \r\n 1997          289           11.227        13.4          8.65          0 \r\n 1997          290           13.994        16.92         2.253         0 \r\n 1997          291           13.444        19.34         5.683         0 \r\n 1997          292           12.973        12.93         0.591         0 \r\n 1997          293           10.883        11.02        -3.695         0 \r\n 1997          294           14.704        6.799        -5.317         0 \r\n 1997          295           6.219         7.04         -3.942         0 \r\n 1997          296           9.914         14            0.138         0 \r\n 1997          297           1.363         8.24          3.817         0 \r\n 1997          298           3.807         3.959        -0.414         0 \r\n 1997          299           11.008        4.034        -8.44          0 \r\n 1997          300           13.477        5.976        -11.23         0 \r\n 1997          301           7.973         14.47        -3.602         0 \r\n 1997          302           8.166         14.61        -3.147         0 \r\n 1997          303           10.504        15.56         1.924         0 \r\n 1997          304           4.424         14.14         1.558         0 \r\n 1997          305           6.714         9.82          2.339         2.29 \r\n 1997          306           3.224         5.398        -3.071         2.54 \r\n 1997          307           7.598        -0.953        -3.953         0 \r\n 1997          308           5.256         1.032        -4.915         0 \r\n 1997          309           5.074         0.262        -0.982         4.83 \r\n 1997          310           4.776         3.204        -0.897         0 \r\n 1997          311           3.099         4.259        -0.593         0 \r\n 1997          312           4.563         4.838        -1.893         0 \r\n 1997          313           4.522         3.015        -2.893         0.51 \r\n 1997          314           9.142        -0.697        -8.13          0 \r\n 1997          315           7.536        -0.338        -10.75         0 \r\n 1997          316           8.469        -3.033        -12.62         0 \r\n 1997          317           0.968         0.597        -3.923         0.51 \r\n 1997          318           2.322        -2.27         -5.203         10.41 \r\n 1997          319           9.782        -2.099        -10.09         0 \r\n 1997          320           10.937       -4.124        -18.08         0 \r\n 1997          321           10.584        3.958        -9.92          0 \r\n 1997          322           6.744        -5.478        -12.08         0 \r\n 1997          323           9.649         8.32         -6.621         0 \r\n 1997          324           4.689         4.461        -6.89          0 \r\n 1997          325           4.335        -1.384        -6.978         0 \r\n 1997          326           8.421        -0.501        -6.484         0 \r\n 1997          327           8.707        -2.74         -9.05          0 \r\n 1997          328           7.743         6.389        -9.55          0 \r\n 1997          329           6.429         10.65        -2.844         0 \r\n 1997          330           9.324         7.67         -2.183         0 \r\n 1997          331           7.251         11.78         0.522         0 \r\n 1997          332           8.428         7.64         -4.41          0 \r\n 1997          333           3.434         2.752        -3.877         0 \r\n 1997          334           8.897         4.518        -3.384         0 \r\n 1997          335           1.604         0.287        -1.524         0 \r\n 1997          336           0.875         1.839        -0.371         0.51 \r\n 1997          337           1.164        -0.23         -7.19          0 \r\n 1997          338           5.139        -4.219        -9.8           3.3 \r\n 1997          339           6.38         -4.983        -11.74         0 \r\n 1997          340           5.185        -3.459        -6.417         0 \r\n 1997          341           4.427        -3.326        -8.53          0 \r\n 1997          342           3.008        -2.222        -5.77          3.56 \r\n 1997          343           4.837        -2.269        -3.972         5.33 \r\n 1997          344           4.578        -1.93         -6.485         3.05 \r\n 1997          345           4.188        -3.513        -7.71          0 \r\n 1997          346           7.956        -2.668        -9.25          0 \r\n 1997          347           7.369         1.192        -6.618         0 \r\n 1997          348           7.79          5.028        -7.86          0 \r\n 1997          349           8.068         8.57         -0.971         0 \r\n 1997          350           8.236         5.56         -4.769         0 \r\n 1997          351           6.008         5.295        -5.708         0 \r\n 1997          352           5.173         11.31        -1.207         0 \r\n 1997          353           4.453         3.138        -1.448         0 \r\n 1997          354           8.283         0.975        -8.34          0 \r\n 1997          355           2.388        -2.532        -8.39          0 \r\n 1997          356           2.151         0.45         -2.56          0.25 \r\n 1997          357           4.387        -1.387        -10.77         0 \r\n 1997          358           1.375        -2.57         -4.255         0 \r\n 1997          359           3.712        -0.179        -4.235         0 \r\n 1997          360           8.045         2.867        -6.93          0 \r\n 1997          361           5.317         2.301        -10.95         0 \r\n 1997          362           1.752        -0.78         -4.921         0 \r\n 1997          363           3.656        -0.405        -9.34          0 \r\n 1997          364           4.925         1.653        -5.671         1.52 \r\n 1997          365           8.085        -1.749        -16.52         0 \r\n 1998          1             8.191         9.85         -2.393         0 \r\n 1998          2             4.776         9.61         -2.356         0 \r\n 1998          3             4.888         7.31         -12.35         0 \r\n 1998          4             0.907        -0.849        -12.07         5.08 \r\n 1998          5             1.668        -0.379        -2.139         7.87 \r\n 1998          6             2.037        -1.177        -3.527         0 \r\n 1998          7             3.884        -1.636        -5.712         0 \r\n 1998          8             6.49         -1.948        -5.011         0 \r\n 1998          9             5.184        -3.299        -16.44         0 \r\n 1998          10            10.506       -11           -17.76         0 \r\n 1998          11            4.843        -9.35         -15.65         0 \r\n 1998          12            8.945        -17.339       -23.44         0.76 \r\n 1998          13            8.518        -11.49        -24.25         0 \r\n 1998          14            7.604        -7.96         -12.01         1.52 \r\n 1998          15            5.141        -5.267        -11.33         0 \r\n 1998          16            3.682         0.053        -6.057         1.02 \r\n 1998          17            11.169       -6.057        -17.06         0 \r\n 1998          18            7.489        -5.682        -17.48         0 \r\n 1998          19            5.015        -5.203        -9.07          0 \r\n 1998          20            3.272        -5.53         -9.65          4.83 \r\n 1998          21            5.049        -5.201        -6.835         10.16 \r\n 1998          22            5.516        -3.404        -10.73         1.02 \r\n 1998          23            7.699        -4.094        -13.05         0 \r\n 1998          24            7.498        -4.134        -7.3           0 \r\n 1998          25            9.623         1.453        -8.91          0 \r\n 1998          26            5.727         0.411        -6.669         0 \r\n 1998          27            6.598        -1.517        -4.62          0 \r\n 1998          28            8.848         1.857        -5.041         0 \r\n 1998          29            9.916         1.707        -5.395         0 \r\n 1998          30            10.323        4.583        -6.55          0 \r\n 1998          31            7.081         4.661        -0.867         0 \r\n 1998          32            3.312        -0.799        -4.63          0 \r\n 1998          33            4.359        -1.24         -14.2          0.25 \r\n 1998          34            12.171       -3.652        -17.839        0 \r\n 1998          35            4.821        -3.168        -5.747         0 \r\n 1998          36            8.008        -3.744        -8.95          0 \r\n 1998          37            10.146        3.647        -9.78          0 \r\n 1998          38            8.446         5.028        -6.743         0 \r\n 1998          39            12.09         7.6          -6.684         0 \r\n 1998          40            6.435         7.12         -0.687         0 \r\n 1998          41            4.703         1.701        -1.919         0 \r\n 1998          42            1.925        -0.94         -4.256         0 \r\n 1998          43            11.642        9.39         -5.439         0 \r\n 1998          44            3.563         0.441        -4.084         0 \r\n 1998          45            4.262         2.338        -4.877         0 \r\n 1998          46            4.799         9.45          2.158         0 \r\n 1998          47            3.898         6.103         0.525         0 \r\n 1998          48            1.626         1.68          0.215         3.3 \r\n 1998          49            2.145         2.385         0.082         6.6 \r\n 1998          50            2.955         2.563         0.015         1.52 \r\n 1998          51            2.533         2.224         0.083         0.76 \r\n 1998          52            5.288         4.708        -0.144         0 \r\n 1998          53            11.895        12.79         1.303         0 \r\n 1998          54            8.775         10.72         0.433         0.51 \r\n 1998          55            11.274        12.34        -1.439         0 \r\n 1998          56            1.903         11.98         5.921         1.02 \r\n 1998          57            10.871        8.7          -0.144         0 \r\n 1998          58            1.975        -0.135        -3.915         0 \r\n 1998          59            9.468        -3.042        -5.433         2.03 \r\n 1998          60            9.265        -1.476        -8.6           1.52 \r\n 1998          61            8.582         0.497        -6.695         1.02 \r\n 1998          62            6.598        -3.554        -6.601         0 \r\n 1998          63            8.04         -2.06         -6.875         0 \r\n 1998          64            7.389        -1.137        -6.746         0 \r\n 1998          65            15.083       -2.097        -10.08         0 \r\n 1998          66            9.246        -1.657        -5.366         2.29 \r\n 1998          67            12.001       -2.891        -11.75         9.14 \r\n 1998          68            19.174       -10.36        -16.98         0 \r\n 1998          69            16.221       -10.94        -19.3          0 \r\n 1998          70            20.372       -13.1         -21.94         0 \r\n 1998          71            14.478       -8.48         -21.94         0 \r\n 1998          72            17.617        4.688        -11.59         0 \r\n 1998          73            16.204       -3.658        -12.6          0 \r\n 1998          74            5.428        -2.58         -5.381         0 \r\n 1998          75            4.467         0.203        -3.724         0 \r\n 1998          76            2.856         0.11         -1.259         2.03 \r\n 1998          77            4.95         -0.583        -1.487         5.08 \r\n 1998          78            11.963        1.189        -2.343         0 \r\n 1998          79            20.51         4.471        -5.155         0 \r\n 1998          80            16.127        5.998        -4.62          0 \r\n 1998          81            9.652         6.579        -2.664         0 \r\n 1998          82            13.524        2.865        -3.525         0.51 \r\n 1998          83            5.41          1.022        -5.403         9.14 \r\n 1998          84            10.676        15.79         7.76          0.51 \r\n 1998          85            15.294        23.82         5.988         0 \r\n 1998          86            2.769         15.37         11.46         8.38 \r\n 1998          87            11.905        14.93         6.98          22.61 \r\n 1998          88            9.702         23.76         8.61          1.27 \r\n 1998          89            4.974         9.15          3.761         1.52 \r\n 1998          90            5.288         6.171         0.805         9.91 \r\n 1998          91            5.589         3.081        -0.864         0 \r\n 1998          92            14.901        6.951        -1.778         0 \r\n 1998          93            5.384         5.513        -1.006         0 \r\n 1998          94            23.271        14.08        -1.675         0 \r\n 1998          95            14.938        13.25        -0.387         0 \r\n 1998          96            10.584        16.83         3.148         7.315 \r\n 1998          97            2.496         10.86         5.721         14.427 \r\n 1998          98            3.226         5.74          2.622         5.944 \r\n 1998          99            16.486        11.37         0.954         0 \r\n 1998          100           24.167        17.43        -0.844         0 \r\n 1998          101           22.508        22.97         4.981         3.048 \r\n 1998          102           9.777         21.98         13.26         0 \r\n 1998          103           13.132        19.24         6.816         0 \r\n 1998          104           8.91          15.42         4.217         12.624 \r\n 1998          105           3.994         9.3           3.12          13.183 \r\n 1998          106           25.088        10.86        -0.863         0 \r\n 1998          107           25.698        14.7         -2.511         0 \r\n 1998          108           18.936        16.98         0.43          0 \r\n 1998          109           17.15         17.17         3.035         13.31 \r\n 1998          110           12.397        13.87         3.779         0 \r\n 1998          111           22.58         17.25         0.583         0 \r\n 1998          112           25.914        20.55         1.59          0 \r\n 1998          113           25.957        23.03         10.17         0 \r\n 1998          114           25.264        25.6          6.313         0 \r\n 1998          115           9.298         21.03         12.99         16.739 \r\n 1998          116           2.286         13.58         8.38          0 \r\n 1998          117           24.264        15.43         1.645         0 \r\n 1998          118           22.178        18            1.24          0 \r\n 1998          119           14.305        16.52         1.593         0 \r\n 1998          120           17.436        20.41         8.74          0 \r\n 1998          121           20.777        24.8          7.18          0 \r\n 1998          122           16.514        15.74         2.403         5.842 \r\n 1998          123           24.626        24.02         6.711         0 \r\n 1998          124           23.563        28.68         7.48          6.858 \r\n 1998          125           24.987        23.6          5.901         0 \r\n 1998          126           22.099        26.24         8.333         0 \r\n 1998          127           20.713        20.11         7.54          0 \r\n 1998          128           19.505        20.69         9.82          0 \r\n 1998          129           15.235        23.76         10.12         3.556 \r\n 1998          130           21.639        23.97         10.45         0 \r\n 1998          131           16.513        25.32         11.92         7.366 \r\n 1998          132           19.67         19.22         9.96          1.778 \r\n 1998          133           25.125        26.5          8.33          0 \r\n 1998          134           15.368        27.55         17.29         0 \r\n 1998          135           5.82          23            12.55         10.414 \r\n 1998          136           23.766        25.73         11.64         0 \r\n 1998          137           16.742        29.37         15.22         0 \r\n 1998          138           22.454        32.23         17.24         0 \r\n 1998          139           24.491        32.26         17.82         0 \r\n 1998          140           24.193        26.56         14.85         1.27 \r\n 1998          141           16.223        25.07         12.74         1.778 \r\n 1998          142           11.485        18.66         11.1          7.874 \r\n 1998          143           6.44          14.63         10.67         10.16 \r\n 1998          144           16.328        19.96         10.84         0 \r\n 1998          145           10.154        18.98         10.05         0 \r\n 1998          146           23.466        22.95         8.78          0 \r\n 1998          147           22.119        27.74         11.79         0 \r\n 1998          148           16.621        30.55         17.87         14.986 \r\n 1998          149           23.438        28.02         15.84         0 \r\n 1998          150           13.445        26.72         17.06         3.81 \r\n 1998          151           26.647        20.96         9.24          0 \r\n 1998          152           13.569        21.17         7.7           10.668 \r\n 1998          153           25.068        22.96         8.36          0 \r\n 1998          154           7.831         10.02         5.02          2.54 \r\n 1998          155           9.114         15.15         6.778         6.096 \r\n 1998          156           16.035        16.44         7.39          0.762 \r\n 1998          157           20.953        18.94         7.87          0.508 \r\n 1998          158           13.24         17.97         6.541         2.54 \r\n 1998          159           4.236         15.98         12.16         12.446 \r\n 1998          160           5.547         16.01         10.59         0 \r\n 1998          161           21.776        24.07         10.95         0 \r\n 1998          162           13.642        23.69         15.06         10.922 \r\n 1998          163           23.674        22.73         12.71         1.524 \r\n 1998          164           25.906        26.77         11.31         0.254 \r\n 1998          165           5.316         19.36         15.13         38.862 \r\n 1998          166           7.763         20.89         14.73         37.338 \r\n 1998          167           26.206        24.84         12.8          0 \r\n 1998          168           21.382        26.87         15.41         1.524 \r\n 1998          169           20.881        25.89         15.18         3.556 \r\n 1998          170           28.727        29.8          15.14         0 \r\n 1998          171           13.88         28.09         15.66         0 \r\n 1998          172           26.367        28.13         12.16         0 \r\n 1998          173           22.634        29.08         15.55         0 \r\n 1998          174           17.205        29.43         16.17         12.954 \r\n 1998          175           23.175        30.31         17.46         1.524 \r\n 1998          176           26.994        30.71         17.29         0 \r\n 1998          177           24.719        32.76         19.8          0 \r\n 1998          178           20.097        32.07         17.78         0 \r\n 1998          179           28.24         30.31         16.94         0 \r\n 1998          180           18.327        29.21         16.41         5.08 \r\n 1998          181           18.696        25.38         15.11         0 \r\n 1998          182           24.814        28.73         14.02         0 \r\n 1998          183           20.485        27.82         15.95         0.254 \r\n 1998          184           9.197         26.66         18.37         2.54 \r\n 1998          185           10.74         25.42         18.58         0 \r\n 1998          186           6.047         25.9          18.92         9.652 \r\n 1998          187           5.32          26.94         19.76         10.668 \r\n 1998          188           15.898        28.85         18.02         0 \r\n 1998          189           15.023        29.79         15.91         0 \r\n 1998          190           13.148        30.48         17.48         0 \r\n 1998          191           19.418        28.71         18.87         0 \r\n 1998          192           21.281        27.91         17.89         0 \r\n 1998          193           19.811        28.67         19.11         0 \r\n 1998          194           23.599        31.71         19.03         0 \r\n 1998          195           24.126        30.44         19.77         0 \r\n 1998          196           23.823        29.8          17.24         46.228 \r\n 1998          197           24.519        26.66         16.46         1.016 \r\n 1998          198           21.462        26.91         17.75         9.398 \r\n 1998          199           23.15         30.28         16.56         4.064 \r\n 1998          200           25.314        29.6          18.25         8.382 \r\n 1998          201           22.066        32.21         21.15         0 \r\n 1998          202           10.34         24.97         16.68         4.318 \r\n 1998          203           24.471        27.21         14.96         0 \r\n 1998          204           22.567        25.71         12.74         0 \r\n 1998          205           17.53         25.36         16.31         1.524 \r\n 1998          206           12.118        24.36         15.84         0.254 \r\n 1998          207           22.978        25.31         15.23         0 \r\n 1998          208           25.494        28.6          15.88         0 \r\n 1998          209           23.299        30.9          14.23         0 \r\n 1998          210           11.095        22.76         11.89         0 \r\n 1998          211           23.742        25.13         12.03         0.254 \r\n 1998          212           25.34         24.71         9.6           0 \r\n 1998          213           22.485        25.27         14.87         0 \r\n 1998          214           2.88          20.3          17.72         16.256 \r\n 1998          215           11.582        24.42         16.87         5.334 \r\n 1998          216           4.635         20.27         17.73         0.254 \r\n 1998          217           11.2          22.79         17.64         0 \r\n 1998          218           0.97          18.94         16.35         86.614 \r\n 1998          219           9.947         22.59         14.89         1.016 \r\n 1998          220           22.095        27.11         15.15         0 \r\n 1998          221           13.826        28.4          18.76         0.254 \r\n 1998          222           21.63         25.86         15.33         0 \r\n 1998          223           23.265        28.39         13.5          0 \r\n 1998          224           12.792        25.86         16.18         0.254 \r\n 1998          225           21.659        28.28         14.74         0.254 \r\n 1998          226           21.862        30.4          15.14         0.508 \r\n 1998          227           23.38         25.23         13.32         0 \r\n 1998          228           20.33         28.96         18.67         0 \r\n 1998          229           20.91         29.05         20.12         1.016 \r\n 1998          230           15.907        29.07         21.4          0 \r\n 1998          231           22.873        31.57         22.03         0 \r\n 1998          232           18.391        30.54         20.11         12.7 \r\n 1998          233           11.59         26.47         19.37         0.254 \r\n 1998          234           20.195        30.2          21.24         0 \r\n 1998          235           18.551        31.58         18.68         0.254 \r\n 1998          236           17.145        27.51         17.17         1.27 \r\n 1998          237           22.554        27.75         13.85         0 \r\n 1998          238           17.105        26.04         14.46         0 \r\n 1998          239           4.483         23.33         17.88         10.414 \r\n 1998          240           18.181        30.46         15.77         0.254 \r\n 1998          241           22.182        29.5          13.96         0 \r\n 1998          242           21.481        26.68         14.49         0 \r\n 1998          243           12.387        23.75         13.54         1.524 \r\n 1998          244           19.228        27.12         10.71         5.588 \r\n 1998          245           20.292        26.54         10            0 \r\n 1998          246           21.197        26.89         13.46         0 \r\n 1998          247           20.682        28.23         12.93         0 \r\n 1998          248           17.503        30.55         16.66         0 \r\n 1998          249           19.558        32.82         16.81         0 \r\n 1998          250           20.988        24.14         9.78          0 \r\n 1998          251           21.607        22.99         7.98          0 \r\n 1998          252           19.682        24.06         8.84          0 \r\n 1998          253           19.55         29.23         13.91         0 \r\n 1998          254           19.734        31.45         13.42         0 \r\n 1998          255           19.796        32.34         12.28         0 \r\n 1998          256           18.341        31.17         16.64         0 \r\n 1998          257           8.188         24.8          13.89         0 \r\n 1998          258           17.99         28.58         13.86         0 \r\n 1998          259           17.822        29.7          11.98         0 \r\n 1998          260           14.633        28.22         13.82         0 \r\n 1998          261           18.021        30.81         15.21         0 \r\n 1998          262           16.189        32.84         17.01         7.874 \r\n 1998          263           12.821        26.79         10.95         0 \r\n 1998          264           6.349         14.46         5.996         0 \r\n 1998          265           19.082        18.67         3.074         0 \r\n 1998          266           6.375         17.7          5.18          11.176 \r\n 1998          267           14.63         25.53         11.07         0.254 \r\n 1998          268           12.84         29.84         14.17         0 \r\n 1998          269           16.367        32.08         17.08         0 \r\n 1998          270           17.202        26            11.84         0 \r\n 1998          271           16.638        28.62         11.47         0 \r\n 1998          272           16.806        27.85         13.7          0 \r\n 1998          273           10.324        19.4          3.591         0 \r\n 1998          274           16.169        15.71        -0.94          0 \r\n 1998          275           2.465         8.47          6.042         8.89 \r\n 1998          276           2.023         9.35          5.783         11.68 \r\n 1998          277           0.973         14.07         9.09          10.67 \r\n 1998          278           11.069        16.21         6.425         2.29 \r\n 1998          279           4.908         13.27         5.948         0 \r\n 1998          280           16.009        17.36         3.213         0 \r\n 1998          281           15.856        19.18         1.05          0 \r\n 1998          282           15.302        22.7          6.651         0 \r\n 1998          283           14.805        24.81         8.75          0 \r\n 1998          284           8.522         21.17         5.362         0 \r\n 1998          285           15.42         15.14         3.065         0 \r\n 1998          286           14.84         15.12         0.244         0 \r\n 1998          287           8.354         17.5          4.543         0 \r\n 1998          288           7.125         22.02         10.07         0.51 \r\n 1998          289           2.255         19.76         16.4          1.52 \r\n 1998          290           4.138         18.83         5.157         7.11 \r\n 1998          291           13.846        16.24         3.747         1.52 \r\n 1998          292           13.467        14.58         2.498         0 \r\n 1998          293           4.121         11.14        -0.623         0 \r\n 1998          294           13.824        16.2         -0.446         0 \r\n 1998          295           13.535        18.84         0.758         0 \r\n 1998          296           13.061        19.54         2.61          0 \r\n 1998          297           9.576         18.57         6.579         0 \r\n 1998          298           11.348        20.34         6.158         0 \r\n 1998          299           6.781         22.26         7.39          0 \r\n 1998          300           8.801         19.16         9.87          20.57 \r\n 1998          301           6.908         16.03         7.3           0 \r\n 1998          302           8.686         17.84         10.33         5.33 \r\n 1998          303           8.841         11.58         3.503         0 \r\n 1998          304           2.891         7.15          3.316         0 \r\n 1998          305           2.135         9.01          5.076         0 \r\n 1998          306           5.875         8.1           1.462         0 \r\n 1998          307           5.875         1.707        -4.286         0 \r\n 1998          308           9.634         3.647        -4.485         0 \r\n 1998          309           6.943         3.731        -2.901         0 \r\n 1998          310           8.069         3.042        -5.536         0 \r\n 1998          311           2.531        -0.208        -3.422         0.76 \r\n 1998          312           3.016         1.314        -1.241         2.29 \r\n 1998          313           0.634         5.18          1.305         8.64 \r\n 1998          314           3.018         9.09         -1.732         37.08 \r\n 1998          315           10.859        3.383        -4.514         0 \r\n 1998          316           10.675        1.988        -5.078         0 \r\n 1998          317           8.719         7.8          -2.92          0 \r\n 1998          318           6.166         8.69         -0.388         0 \r\n 1998          319           4.778         9.18         -1.486         0 \r\n 1998          320           2.926         8.15          1.332         0 \r\n 1998          321           2.742         3.495         1.116         0 \r\n 1998          322           0.871         11.69        -2.334         0 \r\n 1998          323           9.457         2.338        -6.195         0 \r\n 1998          324           9.35          3.025        -7.07          0 \r\n 1998          325           6.095         11.47        -5.161         0 \r\n 1998          326           6.683         15.94         3.585         0 \r\n 1998          327           9.334         12.24        -1.159         0 \r\n 1998          328           6.62          13.22        -1.941         0 \r\n 1998          329           9.122         12.6         -1.166         0 \r\n 1998          330           8.903         18.59        -1.42          0 \r\n 1998          331           8.39          21.33         0.24          0 \r\n 1998          332           5.197         14.12         1.116         0 \r\n 1998          333           3.068         17.17         8.09          0 \r\n 1998          334           7.472         9.39         -0.489         0 \r\n 1998          335           8.237         19.31        -0.235         0 \r\n 1998          336           6.775         15.88         6.656         0 \r\n 1998          337           8.032         17.39         1.353         0 \r\n 1998          338           1.245         12.98         1.849         0 \r\n 1998          339           1.228         11.98         0.083         0 \r\n 1998          340           3.377         1.063        -6.143         0 \r\n 1998          341           6.218         3.875        -10.12         0 \r\n 1998          342           8.271         8.16         -8.3           0 \r\n 1998          343           6.592         8.13         -7.38          0 \r\n 1998          344           8.358         6.924        -7.71          0 \r\n 1998          345           7.978         10.03        -3.203         0 \r\n 1998          346           7.89          11.51        -6.618         0 \r\n 1998          347           6.209         10.21        -3.326         0 \r\n 1998          348           7.955         13.04        -4.945         0 \r\n 1998          349           6.691         7.9          -2.777         0 \r\n 1998          350           6.083         5.304        -6.406         0 \r\n 1998          351           6.765         5.512        -8.47          0 \r\n 1998          352           6.114         4.638        -4.675         0 \r\n 1998          353           7.749        -4.267        -14.29         0 \r\n 1998          354           4.758        -12.65        -19.58         0.51 \r\n 1998          355           6.054        -15.8         -19.13         0 \r\n 1998          356           8.105        -10.96        -21.98         0 \r\n 1998          357           8.48         -7.9          -17.19         0 \r\n 1998          358           8.603        -3.942        -18.3          0 \r\n 1998          359           4.304         1.839        -13.89         0 \r\n 1998          360           2.877        -2.381        -16.68         2.54 \r\n 1998          361           8.014         0.054        -10.65         0 \r\n 1998          362           2.901         4.048        -9.84          0 \r\n 1998          363           8.734        -2.762        -19.63         0 \r\n 1998          364           3.89         -15.56        -25.07         9.65 \r\n 1998          365           6.864        -11.21        -23.28         0 \r\n 1999          1             3.306        -12.96        -19.12         5.59 \r\n 1999          2             6.411        -10.64        -13.53         6.1 \r\n 1999          3             7.981        -12.15        -22.76         0 \r\n 1999          4             9.597        -22.71        -29.19         0 \r\n 1999          5             5.026        -6.631        -26.23         0 \r\n 1999          6             6.131        -4.925        -21.78         0 \r\n 1999          7             4.88         -13.97        -22.69         0 \r\n 1999          8             8.3          -12.43        -24.12         3.05 \r\n 1999          9             8.323        -7.69         -28.63         0 \r\n 1999          10            8.13         -8.25         -19.66         0 \r\n 1999          11            8.07         -4.734        -14.44         0.25 \r\n 1999          12            4.559        -7.11         -21.57         0 \r\n 1999          13            6.112        -10.95        -23.76         0 \r\n 1999          14            9.742        -10.02        -18.58         0 \r\n 1999          15            6.655         1.877        -16.29         0 \r\n 1999          16            9.422         3.618        -6.123         0 \r\n 1999          17            4.726         2.075        -2.289         4.06 \r\n 1999          18            9.922        -2.138        -10.17         0 \r\n 1999          19            9.878        -1.374        -10.93         0 \r\n 1999          20            5.155         2.854        -9.2           0 \r\n 1999          21            5.85          0.825        -8.08          0 \r\n 1999          22            4.274        -0.969        -3.064         1.02 \r\n 1999          23            4.483        -2.163        -4.269         0 \r\n 1999          24            4.056        -3.687        -10.05         3.05 \r\n 1999          25            10.977       -5.135        -18.61         0 \r\n 1999          26            5.251         0.984        -6.165         0 \r\n 1999          27            5.117         1.341        -4.763         0.51 \r\n 1999          28            10.848        0.944        -7.222         0 \r\n 1999          29            9.349         2.627        -11.377        0 \r\n 1999          30            7.692        -2.089        -11.43         0 \r\n 1999          31            9.566         0.342        -7.229         0 \r\n 1999          32            3.512         1.618        -3.673         0.25 \r\n 1999          33            10.848        5.234        -7.958         0 \r\n 1999          34            7.849         5.453        -3.145         0 \r\n 1999          35            11.326        2.626        -11.897        0 \r\n 1999          36            7.449         7.09         -5.031         0 \r\n 1999          37            10.839        2.385        -5.304         0 \r\n 1999          38            9.853         7.918        -2.254         0 \r\n 1999          39            11.279        11.8          1.111         0 \r\n 1999          40            10.55         10.37        -1.157         0 \r\n 1999          41            3.567         14.86         2.103         0 \r\n 1999          42            3.492         2.165        -6.961         1.02 \r\n 1999          43            11.99        -3.232        -8.25          0 \r\n 1999          44            12.955        2.846        -11.59         0 \r\n 1999          45            13.193        11.36        -3.822         0 \r\n 1999          46            4.154         3.479        -1.109         0 \r\n 1999          47            3.961        -1.082        -7.06          0 \r\n 1999          48            7.522        -1.403        -7.81          0 \r\n 1999          49            7.538        -0.52         -5.21          0 \r\n 1999          50            8.89         -0.06         -8.36          0 \r\n 1999          51            11.648       -0.173        -7.3           0.51 \r\n 1999          52            14.574        1.208        -9.75          0 \r\n 1999          53            4.102        -3.339        -6.134         5.59 \r\n 1999          54            9.582        -1.236        -5.5           5.59 \r\n 1999          55            11.258        1.755        -5.95          0 \r\n 1999          56            13.929        5.778        -9.88          0 \r\n 1999          57            2.09          2.751        -0.427         0 \r\n 1999          58            3.508         3.412        -0.717         0 \r\n 1999          59            14.11         6.453        -2.495         0 \r\n 1999          60            14.587        14.85        -2.089         0 \r\n 1999          61            9.506         5.276        -5.519         0.51 \r\n 1999          62            16.209        0.991        -9.11          0 \r\n 1999          63            10.874        5.323        -3.724         0 \r\n 1999          64            5.812         0.202        -3.981         0 \r\n 1999          65            8.236        -3.971        -7.27          0 \r\n 1999          66            8.958         1.039        -6.01          0 \r\n 1999          67            7.736        -3.634        -7.26          7.11 \r\n 1999          68            14.708       -2.461        -5.824         2.03 \r\n 1999          69            11.829       -2.299        -4.553         0 \r\n 1999          70            16.045       -1.226        -9.45          3.56 \r\n 1999          71            17.343        0.165        -11.65         0 \r\n 1999          72            19.047        1.321        -11.17         0 \r\n 1999          73            19.079        4.006        -10.29         0 \r\n 1999          74            18.78         9.7          -4.578         0 \r\n 1999          75            17.822        17.31         0.187         0 \r\n 1999          76            16.267        10.63         0.242         0 \r\n 1999          77            19.44         7.38         -3.254         0 \r\n 1999          78            19.605        11.11        -3.923         0 \r\n 1999          79            19.409        9.93         -2.316         0 \r\n 1999          80            19.959        8.01         -4.629         0 \r\n 1999          81            14.102        8.31         -4.056         0 \r\n 1999          82            20.136        11.87        -5.059         0 \r\n 1999          83            21.015        5.833        -5.459         0 \r\n 1999          84            21.104        9.38         -6.038         0 \r\n 1999          85            20.805        13.6         -5.001         0 \r\n 1999          86            7.297         14.91        -0.042         0 \r\n 1999          87            14.498        12.58         1.033         5.84 \r\n 1999          88            21.087        17.48        -1.307         0 \r\n 1999          89            18.362        22.79         4.101         0 \r\n 1999          90            18.959        21.77         10.61         0 \r\n 1999          91            8.443         23.23         2.545         0 \r\n 1999          92            11.098        11.49         0.742         5.588 \r\n 1999          93            3.615         10.99         1.671         0 \r\n 1999          94            22.061        16.09        -3.458         0 \r\n 1999          95            2.016         10.8          2.46          35.052 \r\n 1999          96            21.772        15.03         1.247         0 \r\n 1999          97            22.536        22.11         6.227         0 \r\n 1999          98            1.906         10.07         4.469         33.274 \r\n 1999          99            12.12         11.83         4.811         0.508 \r\n 1999          100           1.844         11.15         4.062         7.366 \r\n 1999          101           11.687        10.76         1.971         0.508 \r\n 1999          102           20.784        15.58         0.497         0 \r\n 1999          103           17.198        17.19         8.91          0.762 \r\n 1999          104           4.985         13.44         3.827         5.08 \r\n 1999          105           7.537         5.834         0.392         4.064 \r\n 1999          106           8.642         1.556        -1.919         0.762 \r\n 1999          107           13.174        7.57         -0.704         0 \r\n 1999          108           21.363        13.74        -4.369         0 \r\n 1999          109           24.747        16.64         1.512         0 \r\n 1999          110           20.953        22.81         7.37          0.762 \r\n 1999          111           8.672         14.78         6.665         8.636 \r\n 1999          112           2.622         9.64          2.96          2.032 \r\n 1999          113           18.871        12.99         1.811         0 \r\n 1999          114           24.21         15.45         4.491         0 \r\n 1999          115           15.268        15.68         7.26          2.032 \r\n 1999          116           3.099         11.29         7.69          11.43 \r\n 1999          117           3.439         11.42         7.33          11.43 \r\n 1999          118           21.861        18.6          7.25          0 \r\n 1999          119           24.173        19.95         4.234         0 \r\n 1999          120           22.731        21.02         4.678         0 \r\n 1999          121           25.032        22.56         6.389         0 \r\n 1999          122           16.421        23.21         8.12          0 \r\n 1999          123           10.39         22.97         12.86         3.556 \r\n 1999          124           9.291         20.09         14.36         0 \r\n 1999          125           8.212         15.75         9.4           1.778 \r\n 1999          126           5.001         14.23         8.87          5.08 \r\n 1999          127           4.213         10.81         7.45          6.858 \r\n 1999          128           13.688        14.3          3.62          0 \r\n 1999          129           20.425        21.6          1.345         0 \r\n 1999          130           9.02          23.75         11.55         0.762 \r\n 1999          131           13.537        17.88         8             0.254 \r\n 1999          132           20.076        16.72         5.639         0 \r\n 1999          133           23.005        18.86         3.424         0 \r\n 1999          134           18.55         21.24         10.79         5.334 \r\n 1999          135           16.734        21.01         13.75         0 \r\n 1999          136           4.341         20.61         15.53         22.86 \r\n 1999          137           12.005        17.63         9.06          3.048 \r\n 1999          138           24.469        20.75         5.989         0 \r\n 1999          139           23.974        25.62         11.45         0 \r\n 1999          140           3.843         18.89         15.71         9.144 \r\n 1999          141           25.788        23.2          11.96         0 \r\n 1999          142           14.125        24.37         10.61         9.398 \r\n 1999          143           19.942        17.61         10.52         0 \r\n 1999          144           19.776        18.9          8.6           0.254 \r\n 1999          145           28.082        21.09         6.932         0 \r\n 1999          146           29.179        24.21         5.902         0 \r\n 1999          147           24.47         29.35         11.75         1.778 \r\n 1999          148           24.969        29.39         13.05         0 \r\n 1999          149           28.221        27.28         13.01         0 \r\n 1999          150           22.416        27.43         14.83         0 \r\n 1999          151           13.437        17.89         12.02         0.508 \r\n 1999          152           3.744         13.16         10.58         25.654 \r\n 1999          153           24.779        23.13         8.87          0 \r\n 1999          154           19.807        27.64         13.18         0 \r\n 1999          155           18.28         28.96         18.03         2.54 \r\n 1999          156           16.155        29.71         19.93         23.114 \r\n 1999          157           22.668        29.98         19.13         0 \r\n 1999          158           25.299        31.5          16.29         0 \r\n 1999          159           23.681        32.3          18.85         0 \r\n 1999          160           22.333        32.61         17.99         11.938 \r\n 1999          161           10.308        22.85         14.65         16.51 \r\n 1999          162           9.802         19.91         14.33         1.524 \r\n 1999          163           20.396        24.26         15.29         0.254 \r\n 1999          164           22.81         23.96         13.15         0 \r\n 1999          165           27.611        21.57         10.89         0 \r\n 1999          166           3.461         13.62         7.64          11.938 \r\n 1999          167           13.117        18.58         6.442         2.032 \r\n 1999          168           22.054        20.91         7.92          0 \r\n 1999          169           11.778        19.79         12.21         2.286 \r\n 1999          170           6.376         19.73         14.75         1.778 \r\n 1999          171           13.758        24.65         16.72         0 \r\n 1999          172           15.528        27.91         17.96         0 \r\n 1999          173           8.621         24.45         19.52         0 \r\n 1999          174           26.907        29.1          17.35         1.524 \r\n 1999          175           24.907        30.29         15.12         0 \r\n 1999          176           26.001        30.03         17.99         0 \r\n 1999          177           23.322        30.29         18.83         0 \r\n 1999          178           19.52         24.33         13.17         28.956 \r\n 1999          179           15.224        19.55         11.12         6.604 \r\n 1999          180           15.238        20.44         8.51          0.508 \r\n 1999          181           15.13         22.49         13.16         0 \r\n 1999          182           19.849        23.86         12.74         3.302 \r\n 1999          183           5.926         25.74         13.94         8.636 \r\n 1999          184           23.06         31.47         23.45         0.762 \r\n 1999          185           26.777        31.69         23.02         0 \r\n 1999          186           20.714        31.05         17.54         0 \r\n 1999          187           28.272        27.42         12.29         0 \r\n 1999          188           26.441        28.4          13.5          0 \r\n 1999          189           23.608        33.13         20.17         0 \r\n 1999          190           25.986        24.96         13.24         0 \r\n 1999          191           26.634        24.71         11.69         0 \r\n 1999          192           23.795        26.64         11.13         0 \r\n 1999          193           24.549        26.14         11.59         0 \r\n 1999          194           25.136        29.83         16.36         0 \r\n 1999          195           20.53         30.16         20.11         0.508 \r\n 1999          196           22.632        31.65         22.39         0 \r\n 1999          197           11.634        25.66         16.4          11.684 \r\n 1999          198           26.216        26.58         14.25         0 \r\n 1999          199           15.411        28.83         19.43         14.986 \r\n 1999          200           20.089        28.22         19.18         0.254 \r\n 1999          201           13.422        28.78         20.23         24.13 \r\n 1999          202           22.03         30.41         19.65         12.7 \r\n 1999          203           23.617        32.7          21.5          0 \r\n 1999          204           13.447        31.88         21.05         2.032 \r\n 1999          205           21.534        32.53         19.54         0 \r\n 1999          206           20.137        32.93         23.49         1.016 \r\n 1999          207           19.169        28.73         19.73         0 \r\n 1999          208           16.55         30.71         19.07         0 \r\n 1999          209           21.789        34.14         21.25         0 \r\n 1999          210           17.905        34.67         24.25         0 \r\n 1999          211           17.269        32.64         20.12         1.016 \r\n 1999          212           22.08         26.38         14.02         0 \r\n 1999          213           17.65         22.99         11.24         0 \r\n 1999          214           21.176        26.52         14.9          0 \r\n 1999          215           19.874        25.85         13.86         0 \r\n 1999          216           23.713        25.07         14.58         0 \r\n 1999          217           22.9          26.59         12.42         0 \r\n 1999          218           12.106        25.37         12.97         1.016 \r\n 1999          219           13.14         26.67         15.79         0 \r\n 1999          220           23.317        25.24         13.47         0 \r\n 1999          221           19.761        29.83         14.93         0 \r\n 1999          222           22.884        30.1          13.81         0 \r\n 1999          223           9.264         26.29         17.58         0 \r\n 1999          224           17.133        27.44         14.69         0 \r\n 1999          225           13.644        21.3          9.14          0.508 \r\n 1999          226           21.497        23.96         7.17          0 \r\n 1999          227           10.562        27.58         15.28         0 \r\n 1999          228           20.512        28.3          14.21         0 \r\n 1999          229           20.258        30.39         11.51         0 \r\n 1999          230           11.414        24.83         14.81         0 \r\n 1999          231           18.825        24.75         10.75         0 \r\n 1999          232           19.724        25.81         11.91         0 \r\n 1999          233           17.834        28.37         16.82         0 \r\n 1999          234           4.465         21.97         17.57         12.192 \r\n 1999          235           19.872        23.38         14.29         0.254 \r\n 1999          236           15.297        24.4          13.51         0 \r\n 1999          237           20.118        26.64         12.64         0 \r\n 1999          238           17.537        29.99         16.66         0 \r\n 1999          239           20.681        32.19         17.04         0 \r\n 1999          240           18.755        32.79         17.2          0 \r\n 1999          241           15.456        26.4          17.68         4.064 \r\n 1999          242           18.751        25.6          16.44         0 \r\n 1999          243           19.563        28.53         15.64         0 \r\n 1999          244           13.507        30.76         18.36         0 \r\n 1999          245           17.621        31.75         17.21         0 \r\n 1999          246           19.176        30.94         19.44         0 \r\n 1999          247           5.38          23.67         15.54         11.43 \r\n 1999          248           20.949        20.79         9.83          0 \r\n 1999          249           19.692        25.45         10.49         0 \r\n 1999          250           12.732        29.14         14.62         8.89 \r\n 1999          251           19.831        21.02         8.85          0 \r\n 1999          252           20.786        18.98         6.196         0 \r\n 1999          253           20.803        23.36         4.053         0 \r\n 1999          254           15.86         26.89         7.72          1.524 \r\n 1999          255           16.09         19.94         9.18          0.254 \r\n 1999          256           9.585         15.83         4.989         0 \r\n 1999          257           18.566        16.62         5.341         0.51 \r\n 1999          258           16.522        20.09         1.19          0 \r\n 1999          259           17.92         22.83         4.368         0 \r\n 1999          260           18.854        23.23         5.608         0 \r\n 1999          261           17.955        26.6          7             0 \r\n 1999          262           10.234        18.83         8.25          0 \r\n 1999          263           16.744        14.87        -0.54          0 \r\n 1999          264           18.712        19.47        -3.365         0 \r\n 1999          265           18.24         27.04         2.158         0 \r\n 1999          266           17.23         29.07         8.28          0 \r\n 1999          267           17.59         26.61         6.996         0 \r\n 1999          268           16.707        29.23         10.91         0 \r\n 1999          269           7.418         19.51         11.21         0 \r\n 1999          270           14.609        18.2          6.491         0 \r\n 1999          271           15.096        18.67         2.393         0 \r\n 1999          272           17.721        17.71        -1.91          0 \r\n 1999          273           17.215        19.47         1.813         0 \r\n 1999          274           4.251         8.28         -1.589         0 \r\n 1999          275           16.026        7.32         -4.172         6.35 \r\n 1999          276           13.372        10.06        -1.543         0 \r\n 1999          277           15.525        17.04        -3.516         0 \r\n 1999          278           16.192        20.29         3.345         0 \r\n 1999          279           15.267        22.06         2.14          0 \r\n 1999          280           12.603        25.99         14.8          0.51 \r\n 1999          281           14.36         21.23         7.67          22.1 \r\n 1999          282           15.064        24.96         4.46          0 \r\n 1999          283           15.015        20.25         6.322         0 \r\n 1999          284           14.852        20.61         3.828         0 \r\n 1999          285           11.455        21.96         7.72          0 \r\n 1999          286           14.812        13.56         2.404         0 \r\n 1999          287           14.224        20.82         2.366         0 \r\n 1999          288           13.427        19.34         5.311         0 \r\n 1999          289           14.059        13.1         -0.22          0 \r\n 1999          290           14.719        10.02        -4.505         0 \r\n 1999          291           5.927         10.77         0.385         0.51 \r\n 1999          292           8.553         7.52         -1.844         0 \r\n 1999          293           13.658        16.95        -5.924         0 \r\n 1999          294           11.68         22.71         3.921         0 \r\n 1999          295           14.042        11.11        -0.02          0 \r\n 1999          296           14.055        8.09         -6.058         0 \r\n 1999          297           13.414        14.36        -7.49          0 \r\n 1999          298           12.374        20.99         2.035         0 \r\n 1999          299           11.131        20.64         0.149         0 \r\n 1999          300           11.89         26.97         2.846         0 \r\n 1999          301           11.858        14.11         0.719         0 \r\n 1999          302           6.739         21.01         1.331         0 \r\n 1999          303           9.477         16.47         4.676         2.03 \r\n 1999          304           11.853        20.76        -0.183         0 \r\n 1999          305           10.796        12.16         0.512         0 \r\n 1999          306           11.903        9.73         -4.706         0 \r\n 1999          307           11.522        15.37        -5.769         0 \r\n 1999          308           8.922         18.61        -6.602         0 \r\n 1999          309           10.623        13.91        -1.412         0 \r\n 1999          310           10.556        16.18        -3.374         0 \r\n 1999          311           10.303        20.81         0.739         0 \r\n 1999          312           10.028        25.18         2.761         0 \r\n 1999          313           9.371         21.28         10.47         0 \r\n 1999          314           10.006        15.14        -1.676         0 \r\n 1999          315           8.012         14.77        -1.627         0 \r\n 1999          316           9.259         19.04        -0.218         0 \r\n 1999          317           9.807         23.28         3.637         0 \r\n 1999          318           9.759         11.5         -0.832         0 \r\n 1999          319           9.615         17           -3.545         0 \r\n 1999          320           9.629         12.61        -1.514         0 \r\n 1999          321           9.003         14.49         0.345         0 \r\n 1999          322           8.125         20.54         1.443         0 \r\n 1999          323           2.632         4.519        -5.012         0 \r\n 1999          324           6.911         9.08         -8.8           0 \r\n 1999          325           4.455         9.77         -0.239         0 \r\n 1999          326           7.566         9.85         -6.415         0 \r\n 1999          327           3.484         3.13         -1.132         7.37 \r\n 1999          328           9.65          6.112        -4.591         0 \r\n 1999          329           7.081         7.28         -4.905         0 \r\n 1999          330           6.591         8.86          1.547         0 \r\n 1999          331           8.977         7.06          0.024         0 \r\n 1999          332           4.625         7.51         -3.45          0 \r\n 1999          333           7.559         4.089        -4.619         0 \r\n 1999          334           6.962         8.87         -0.821         0 \r\n 1999          335           4.963         9.63          2.233         0 \r\n 1999          336           4.811         11.37         1.199         0 \r\n 1999          337           1.195         5.738        -0.869         3.05 \r\n 1999          338           1.953         3.564        -3.133         0 \r\n 1999          339           8.823         2.234        -10.38         0 \r\n 1999          340           6.259         5.438        -9.72          0 \r\n 1999          341           7.891         8.81         -7.16          0 \r\n 1999          342           7.69          10.9         -4.562         0 \r\n 1999          343           7.878         5.29         -6.602         0 \r\n 1999          344           6.949         4.005        -11.68         0 \r\n 1999          345           5.702         4.82         -5.866         0 \r\n 1999          346           8.141         8.18         -7.24          0 \r\n 1999          347           8.103         7.72         -10.14         0 \r\n 1999          348           5.599         1.238        -6.972         0 \r\n 1999          349           7.199        -1.705        -14.51         4.06 \r\n 1999          350           5.209        -8            -20.79         0 \r\n 1999          351           5.676        -7.71         -14.1          0.76 \r\n 1999          352           5.473        -4.39         -9.64          0 \r\n 1999          353           2.816        -0.36         -13.44         0 \r\n 1999          354           8.637        -12.59        -21.87         0 \r\n 1999          355           4.449        -13.26        -24.25         3.05 \r\n 1999          356           7.896        -13.93        -25.76         2.03 \r\n 1999          357           4.603         1.51         -19.97         0 \r\n 1999          358           4.978        -3.983        -17.35         0 \r\n 1999          359           8.327         4.119        -8.93          0 \r\n 1999          360           8.235         1.361        -6.582         0 \r\n 1999          361           7.23          1.813        -10.82         0 \r\n 1999          362           7.393         6.842        -5.352         0 \r\n 1999          363           8.019         11.61        -3.033         0 \r\n 1999          364           7.117         9.12         -4.858         0 \r\n 1999          365           7.982         9.55         -7.57          0 \r\n 2000          1             4.17          0.26         -4.676         0 \r\n 2000          2             2.868        -1.29         -3.649         0.25 \r\n 2000          3             3.93         -2.402        -10.7          1.02 \r\n 2000          4             8.858        -10.52        -17.94         0 \r\n 2000          5             2.875        -1.695        -15.21         4.57 \r\n 2000          6             7.262        -2.092        -13.71         0.51 \r\n 2000          7             8.078         3.12         -19.86         0 \r\n 2000          8             8.502         4.346        -6.271         0 \r\n 2000          9             4.619         2.121        -10.99         0 \r\n 2000          10            6.811         3.222        -6.699         0 \r\n 2000          11            4.796        -5.136        -12.78         0 \r\n 2000          12            5.923        -1.636        -13.99         0 \r\n 2000          13            8.8          -2.061        -17.51         0 \r\n 2000          14            6.67          4.743        -9.47          0 \r\n 2000          15            7.131         5.89         -9.34          0 \r\n 2000          16            4.632        -6.223        -16.26         0 \r\n 2000          17            1.506        -1.508        -6.252         0 \r\n 2000          18            8.941         2.939        -8.69          0 \r\n 2000          19            4.042         1.115        -21.03         10.16 \r\n 2000          20            9.88         -9.05         -24.78         0 \r\n 2000          21            7.245        -8.07         -23.49         0 \r\n 2000          22            8.953        -5.522        -14.48         0 \r\n 2000          23            8.204        -9.64         -20.93         0 \r\n 2000          24            7.691        -5.789        -21.28         0 \r\n 2000          25            9.671        -6.669        -21.41         0 \r\n 2000          26            10.964       -9.83         -24.43         0 \r\n 2000          27            10.998       -7.07         -19.05         0 \r\n 2000          28            8.29         -6.816        -13.26         0 \r\n 2000          29            7.746        -6.033        -11.75         0 \r\n 2000          30            10.179       -7.63         -15.66         0 \r\n 2000          31            11.259       -4.369        -15.34         0 \r\n 2000          32            7.426        -5.949        -15.63         0 \r\n 2000          33            10.016        4.412        -13.55         0 \r\n 2000          34            10.614        2.815        -6.682         0 \r\n 2000          35            6.252        -5.27         -13.14         0 \r\n 2000          36            9.596        -0.52         -14.46         0 \r\n 2000          37            11.34         1.265        -6.095         0 \r\n 2000          38            12.175       -3.972        -13.69         0 \r\n 2000          39            10.492        7.77         -13.54         0 \r\n 2000          40            8.159         3.986        -1.59          0 \r\n 2000          41            4.008        -0.144        -11.77         0 \r\n 2000          42            13.208       -3.926        -15.51         0 \r\n 2000          43            6.51         -0.678        -7.96          0 \r\n 2000          44            8.277        -3.956        -10.75         5.84 \r\n 2000          45            12.993       -1.89         -15            0 \r\n 2000          46            9.667         4.906        -7.85          0 \r\n 2000          47            13.328       -0.896        -12.82         0 \r\n 2000          48            4.343        -2.476        -4.934         2.79 \r\n 2000          49            7.724        -3.441        -6.678         0 \r\n 2000          50            14.38         2.186        -12.4          0 \r\n 2000          51            14.2          6.902        -11.3          0 \r\n 2000          52            12.672        11.74        -0.839         0 \r\n 2000          53            10.882        16.17         1.455         0 \r\n 2000          54            2.204         11.29         6.584         15.24 \r\n 2000          55            3.687         10.7          5.796         0 \r\n 2000          56            6.46          15.94         6.527         18.03 \r\n 2000          57            2.457         6.595         0.092         2.54 \r\n 2000          58            15.298        9.73         -3.47          0 \r\n 2000          59            13.332        18.16         0.705         0 \r\n 2000          60            4.984         12.35        -1.706         0 \r\n 2000          61            15.511        8.98         -3.783         0 \r\n 2000          62            15.202        9.31         -5.384         0 \r\n 2000          63            16.139        14.21        -6.029         0 \r\n 2000          64            15.875        21.42        -0.375         0 \r\n 2000          65            16.495        21.13         1.171         0 \r\n 2000          66            16.522        21.93         8.57          0 \r\n 2000          67            15.12         23.87         9.1           0 \r\n 2000          68            7.955         17.01        -0.5           1.52 \r\n 2000          69            6.405        -0.472        -6.504         4.83 \r\n 2000          70            11.001        0.336        -6.678         0 \r\n 2000          71            18.608        7.79         -9.88          0 \r\n 2000          72            7.547         3.668        -4.476         0.76 \r\n 2000          73            15.696        10.05        -8.37          0 \r\n 2000          74            18.185        14.53        -1.58          0 \r\n 2000          75            6.83          7.15         -8.24          6.6 \r\n 2000          76            20.201        1.745        -10.56         0 \r\n 2000          77            19.818        7.03         -8.03          0 \r\n 2000          78            6.163         3.401        -0.809         7.37 \r\n 2000          79            3.927         0.495        -2.204         0 \r\n 2000          80            5.751         4.847        -0.732         0 \r\n 2000          81            4.91          7.42          3.107         0 \r\n 2000          82            5.226         12.2          4.448         0 \r\n 2000          83            6.935         13.95         7.34          2.54 \r\n 2000          84            7.598         13.94         1.622         3.81 \r\n 2000          85            20.898        16.61        -0.341         0 \r\n 2000          86            16.102        17.74         0.26          0 \r\n 2000          87            20.46         14.02        -4.848         0 \r\n 2000          88            22.518        12.36        -6.503         0 \r\n 2000          89            20.738        15.04        -4.513         0 \r\n 2000          90            16.698        17.96        -0.445         0 \r\n 2000          91            13.881        14.09        -0.67          0 \r\n 2000          92            17.573        15.19         2.506         0 \r\n 2000          93            13.042        14.93         0.587         0.254 \r\n 2000          94            21.148        9.66         -5.475         0 \r\n 2000          95            23.814        12.7         -9.09          0 \r\n 2000          96            21.288        24.65         3.771         0 \r\n 2000          97            21.789        14.41        -3.327         1.778 \r\n 2000          98            12.139        2.936        -4.994         1.778 \r\n 2000          99            24.59         13.31        -8.83          0.254 \r\n 2000          100           22.937        11.57        -1.582         0 \r\n 2000          101           9.97          10.7          0.853         0 \r\n 2000          102           18.588        8.52         -0.246         0 \r\n 2000          103           14.368        13.06         0.244         0 \r\n 2000          104           19.292        21.77         7.3           0 \r\n 2000          105           19.944        26.37         1.437         0 \r\n 2000          106           3.038         1.437        -1.066         2.032 \r\n 2000          107           3.335         2.231         0.307         5.588 \r\n 2000          108           8.703         8.6           0.249         0 \r\n 2000          109           18.372        22.12         2.738         0 \r\n 2000          110           11.014        18.99         9.37          2.286 \r\n 2000          111           4.307         9.38         -0.752         0 \r\n 2000          112           24.21         19.54        -1.57          0 \r\n 2000          113           21.274        25.75         4.712         0 \r\n 2000          114           24.127        24.22         7.41          0 \r\n 2000          115           21.649        20.62         2.573         0 \r\n 2000          116           20.291        21.31         3.639         0 \r\n 2000          117           15.766        21.37         4.678         0.254 \r\n 2000          118           9.746         16.27         8.94          5.588 \r\n 2000          119           25.151        19.16         4.821         0 \r\n 2000          120           26.327        20.31         2.282         0 \r\n 2000          121           14.22         24.03         8.83          0 \r\n 2000          122           25.764        24.68         7.47          0 \r\n 2000          123           27.144        25.52         4.972         0 \r\n 2000          124           22.87         27.36         9.95          0 \r\n 2000          125           24.953        29.03         12.14         0 \r\n 2000          126           25.379        29.53         13.9          0 \r\n 2000          127           22.316        28.03         13.7          0 \r\n 2000          128           17.079        30.17         14.45         8.89 \r\n 2000          129           4.692         16.81         9.74          1.016 \r\n 2000          130           21.523        18.62         7.99          0 \r\n 2000          131           12.133        22.99         7.78          0.762 \r\n 2000          132           17.686        29.1          12.47         0.254 \r\n 2000          133           17.115        20.79         4.07          0 \r\n 2000          134           19.153        13.9          2.789         0 \r\n 2000          135           24.459        20.37         4.717         0 \r\n 2000          136           10.844        20.09         8.73          6.604 \r\n 2000          137           21.952        22.75         9.97          0.254 \r\n 2000          138           1.415         19.8          13.93         14.732 \r\n 2000          139           6.12          14.47         5.893         2.032 \r\n 2000          140           25.962        17.7          3.167         0 \r\n 2000          141           24.291        24.71         5.654         2.286 \r\n 2000          142           25.496        25.62         11.45         0 \r\n 2000          143           20.604        30.74         13.76         0.508 \r\n 2000          144           20.881        27.38         13.65         0 \r\n 2000          145           18.461        24.09         9.19          0 \r\n 2000          146           24.131        23.83         6.636         0 \r\n 2000          147           5.166         19.31         11.17         19.558 \r\n 2000          148           4.93          15.1          10.65         1.778 \r\n 2000          149           14.235        18.59         9.81          0 \r\n 2000          150           22.144        25.22         11.55         0.254 \r\n 2000          151           15.308        26.72         15.98         2.286 \r\n 2000          152           7.342         19.1          14.56         5.334 \r\n 2000          153           9.076         22.04         10.14         0 \r\n 2000          154           22.481        20.88         6.035         0 \r\n 2000          155           15.942        24.57         8.05          0 \r\n 2000          156           6.751         17.16         8.71          11.176 \r\n 2000          157           23.095        19.69         5.892         0 \r\n 2000          158           23.775        24.1          8             0 \r\n 2000          159           19.723        33.31         15.19         0 \r\n 2000          160           24.74         35.64         18.21         0 \r\n 2000          161           26.342        32.44         18.78         0 \r\n 2000          162           15.804        30.11         18.2          0.762 \r\n 2000          163           24.915        29.99         16.67         0 \r\n 2000          164           13.694        26.99         16.57         0 \r\n 2000          165           5.325         24.08         15.72         37.084 \r\n 2000          166           9.564         18.87         11.59         0.508 \r\n 2000          167           7.927         23.68         10.03         2.794 \r\n 2000          168           17.831        18.29         8.97          0 \r\n 2000          169           15.176        20.19         8.72          0 \r\n 2000          170           23.888        25            10.27         0 \r\n 2000          171           21.774        28.89         14.04         0.254 \r\n 2000          172           22.361        26.02         13.87         0.762 \r\n 2000          173           27.263        26.69         12.05         0 \r\n 2000          174           27.04         30.85         11.13         0 \r\n 2000          175           21.605        33.33         20            0 \r\n 2000          176           19.964        27.48         16            0.762 \r\n 2000          177           5.208         24.15         15.66         4.064 \r\n 2000          178           26.279        26.04         12.52         0 \r\n 2000          179           21.188        24.6          9.15          2.54 \r\n 2000          180           23.289        23.45         12.29         0.254 \r\n 2000          181           22.191        25.87         8.14          0 \r\n 2000          182           27.445        28.12         13.15         0 \r\n 2000          183           27.189        30.58         14.81         0 \r\n 2000          184           14.747        30.96         19.02         0 \r\n 2000          185           17.193        26.11         18.36         0 \r\n 2000          186           18.346        28.68         21.18         1.524 \r\n 2000          187           14.082        28.07         18.55         0 \r\n 2000          188           24.202        30.64         20.11         0 \r\n 2000          189           25.673        33.83         22.44         0 \r\n 2000          190           26.342        34.18         22.36         0 \r\n 2000          191           13.997        32.06         21.07         5.08 \r\n 2000          192           24.388        28.9          20.51         0 \r\n 2000          193           13.53         27.02         17.55         10.922 \r\n 2000          194           27.26         29.19         16.72         0.254 \r\n 2000          195           26.93         31.91         17.67         0 \r\n 2000          196           26.265        30.1          14.83         0 \r\n 2000          197           23.176        28.95         18.21         5.842 \r\n 2000          198           18.961        29.16         16.97         1.524 \r\n 2000          199           26.476        25.06         13.57         0 \r\n 2000          200           7.845         18.5          12.59         1.778 \r\n 2000          201           9.591         18.3          11.5          0.508 \r\n 2000          202           19.785        22.09         10.36         0 \r\n 2000          203           25.067        23.15         6.826         0 \r\n 2000          204           21.258        24.98         10.35         0 \r\n 2000          205           20.897        26.45         13.52         0 \r\n 2000          206           13.396        26.1          16.73         0 \r\n 2000          207           18.286        27.6          15.19         15.748 \r\n 2000          208           25.93         27.29         15.96         0 \r\n 2000          209           26.092        28.59         13.14         0 \r\n 2000          210           24.8          27.01         14.59         0 \r\n 2000          211           18.726        25.36         15.78         0 \r\n 2000          212           24.702        27.76         15.85         0 \r\n 2000          213           24.832        30.07         13.24         0 \r\n 2000          214           18.417        29.69         15.81         0 \r\n 2000          215           25.167        27.11         12.02         0 \r\n 2000          216           21.104        27.22         14.28         0 \r\n 2000          217           18.634        29.11         18.01         0 \r\n 2000          218           18.025        29.13         17.65         14.732 \r\n 2000          219           22.422        26.27         16.42         7.874 \r\n 2000          220           21.33         32.8          15.6          19.558 \r\n 2000          221           21.279        29.01         15.78         18.288 \r\n 2000          222           25.215        29.43         16.96         0 \r\n 2000          223           23.826        29.54         15.77         0 \r\n 2000          224           22.569        29.93         17.64         0 \r\n 2000          225           19.58         33.03         21.01         0 \r\n 2000          226           21.322        29.15         20.51         1.016 \r\n 2000          227           23.116        32.42         20.43         0 \r\n 2000          228           21.468        26.77         12.81         0 \r\n 2000          229           15.02         25.72         12.64         50.292 \r\n 2000          230           8.706         22.33         13.49         0 \r\n 2000          231           23.937        24.01         11.49         0 \r\n 2000          232           6.489         20.12         13.72         0.254 \r\n 2000          233           15.156        23.39         15.81         0 \r\n 2000          234           6.814         21.58         15.66         0 \r\n 2000          235           14.173        25.74         15.67         6.35 \r\n 2000          236           17.105        26.92         16.05         0 \r\n 2000          237           20.895        27.8          13.53         0 \r\n 2000          238           16.722        29.83         19.25         0 \r\n 2000          239           19.773        27.9          17.07         0 \r\n 2000          240           13.775        26.06         15.15         0 \r\n 2000          241           9.191         29.2          17.87         0 \r\n 2000          242           9.498         19.72         14.11         0 \r\n 2000          243           18.797        35.3          15.56         1.27 \r\n 2000          244           15.141        26.87         16.62         0 \r\n 2000          245           9.49          23.8          16.42         1.27 \r\n 2000          246           15.39         34.37         16.44         0 \r\n 2000          247           16.567        29.57         17.49         0 \r\n 2000          248           6.811         20.57         13.02         0 \r\n 2000          249           21.202        24.12         10.4          0 \r\n 2000          250           19.98         28.57         12.34         0 \r\n 2000          251           20.766        25.41         9.04          1.524 \r\n 2000          252           20.545        29.93         8.53          0 \r\n 2000          253           17.53         32.62         20.28         0 \r\n 2000          254           19.518        31.83         11.31         0 \r\n 2000          255           18.442        28.91         6.951         0 \r\n 2000          256           20.205        25.47         4.038         0 \r\n 2000          257           19.159        33.23         14.9          3.048 \r\n 2000          258           20.167        24.17         8.91          0 \r\n 2000          259           20.119        21.45         1.729         0 \r\n 2000          260           18.919        29.2          7.03          0 \r\n 2000          261           17.931        33.43         10.21         0 \r\n 2000          262           6.982         30.12         18.15         0 \r\n 2000          263           4.269         23.54         11.87         2.286 \r\n 2000          264           10.034        14.74         2.649         0.508 \r\n 2000          265           13.234        18.87        -1.074         0 \r\n 2000          266           2.68          13.61         8.55          10.16 \r\n 2000          267           3.972         10.06         6.374         0 \r\n 2000          268           5.36          8.81          0.69          0 \r\n 2000          269           18.689        18.72        -1.292         0 \r\n 2000          270           18.243        25.62         2.26          0 \r\n 2000          271           17.532        24.24         7.69          0 \r\n 2000          272           17.315        26.99         8.31          0 \r\n 2000          273           12.861        29.22         13.51         0 \r\n 2000          274           16.079        29.29         16.07         0 \r\n 2000          275           8.988         27.4          12.4          0 \r\n 2000          276           17.276        20.17         8.01          6.1 \r\n 2000          277           5.964         15.4          5.579         1.27 \r\n 2000          278           8.609         11.88         2.347         4.83 \r\n 2000          279           5.376         10.85        -3.081         1.27 \r\n 2000          280           8.309         3.809        -5.127         0 \r\n 2000          281           6.911         3.317        -6.097         0 \r\n 2000          282           17.385        7.87         -8.5           0 \r\n 2000          283           16.795        13.7         -6.462         0 \r\n 2000          284           16.862        16.97        -4.124         0 \r\n 2000          285           15.578        20.3          1.312         0 \r\n 2000          286           11.392        22.08         10.77         0 \r\n 2000          287           11.249        24.77         9.45          0 \r\n 2000          288           14.529        20.2          5.161         0 \r\n 2000          289           14.154        15.83         3.043         0 \r\n 2000          290           3.062         11.27         2.563         10.67 \r\n 2000          291           13.319        19.5          6.149         14.99 \r\n 2000          292           14.109        25.83         5.74          0 \r\n 2000          293           13.915        26.99         8.29          0 \r\n 2000          294           12.728        20.79         7.23          0 \r\n 2000          295           12.6          22.97         3.621         0 \r\n 2000          296           2.541         15.98         9.53          5.84 \r\n 2000          297           3.5           19.43         13.23         3.05 \r\n 2000          298           7.003         21.32         12.67         0 \r\n 2000          299           5.628         20.54         15.57         0 \r\n 2000          300           8.279         20.21         8.87          7.37 \r\n 2000          301           3.289         10.94         7.84          0 \r\n 2000          302           2.919         12.36         8.67          0 \r\n 2000          303           1.589         11.12         9.53          10.16 \r\n 2000          304           8.375         18.62         9.71          7.62 \r\n 2000          305           7.09          20.29         6.884         0 \r\n 2000          306           4.146         20.18         7.85          9.65 \r\n 2000          307           11.745        12.88         3.148         4.32 \r\n 2000          308           11.843        10.52         0.291         0 \r\n 2000          309           11.583        14.45         1.274         0 \r\n 2000          310           1.534         11.55         5.834         4.83 \r\n 2000          311           1.129         11.01         1.338         31.24 \r\n 2000          312           4.984         1.376        -5.367         6.35 \r\n 2000          313           10.378       -4.039        -7.97          0 \r\n 2000          314           3.615        -4.191        -6.32          0 \r\n 2000          315           11.173       -1.469        -9.41          0 \r\n 2000          316           2.481        -0.782        -3.061         0 \r\n 2000          317           4.391        -0.848        -5.866         4.57 \r\n 2000          318           5.369        -1.817        -5.866         0 \r\n 2000          319           11.257       -4.476        -12.88         0 \r\n 2000          320           6.911        -0.698        -13.33         0 \r\n 2000          321           9.186        -4.629        -8.25          6.35 \r\n 2000          322           10.763       -6.388        -12.59         0 \r\n 2000          323           9.487        -2.419        -10            0 \r\n 2000          324           7.929        -0.115        -11.28         0 \r\n 2000          325           9.972        -10.16        -18.18         0 \r\n 2000          326           10.237       -1.015        -19.05         0 \r\n 2000          327           9.245        -5.747        -16.53         0 \r\n 2000          328           9.268        -1.847        -11.97         0 \r\n 2000          329           8.979         4.073        -12.12         0 \r\n 2000          330           7.224        -1.779        -7.52          0 \r\n 2000          331           4.07         -2.958        -9.93          0 \r\n 2000          332           8.892         2.722        -10.6          0 \r\n 2000          333           4.772         3.073        -8.66          0.25 \r\n 2000          334           3.129        -1.385        -5.146         1.78 \r\n 2000          335           2.987        -1.733        -6.031         0 \r\n 2000          336           5.501        -1.338        -10.08         6.35 \r\n 2000          337           6.454        -3.77         -14.3          0 \r\n 2000          338           6.979        -0.621        -9.54          0 \r\n 2000          339           4.591         1.002        -14.51         0 \r\n 2000          340           6.982        -12.45        -18.44         0 \r\n 2000          341           4.56         -2.948        -12.64         0 \r\n 2000          342           5.292         3.014        -6.651         0 \r\n 2000          343           8.785        -6.185        -12.9          0 \r\n 2000          344           1.802         0.308        -6.89          0 \r\n 2000          345           6.708        -5.599        -20.37         0 \r\n 2000          346           4.624        -17.8         -23.87         11.43 \r\n 2000          347           7.169        -17.87        -27.37         0 \r\n 2000          348           5.467        -12.32        -19.21         1.52 \r\n 2000          349           7.419        -10.88        -21.93         0 \r\n 2000          350           4.922        -6.433        -12.63         0 \r\n 2000          351           5.487        -6.666        -20.52         2.29 \r\n 2000          352           7.763        -11.8         -22.34         0 \r\n 2000          353           4.629        -11.29        -17.8          1.52 \r\n 2000          354           8.821        -14.71        -21.82         0 \r\n 2000          355           5.522        -5.386        -18.4          0 \r\n 2000          356           7.165        -16.89        -23.22         0 \r\n 2000          357           7.962        -15.08        -25.43         0 \r\n 2000          358           8.524        -13.11        -22.43         2.79 \r\n 2000          359           9.406        -19.91        -28.23         0 \r\n 2000          360           4.574        -11           -26.23         0 \r\n 2000          361           7.473        -10.23        -19.89         0 \r\n 2000          362           8.002        -9.93         -20.26         0 \r\n 2000          363           3.793        -5.666        -13.21         2.79 \r\n 2000          364           8.383        -11.72        -16.63         0 \r\n 2000          365           8.072        -14           -21.77         0 \r\n 2000          366           6.734        -13.89        -21.58         0 \r\n 2001          1             6.696        -8.81         -20.11         0 \r\n 2001          2             5.66         -1.518        -20.55         0 \r\n 2001          3             7.819        -2.168        -10.32         0 \r\n 2001          4             6.109         4.13         -10.97         0 \r\n 2001          5             8.448         0.524        -6.783         0 \r\n 2001          6             8.595         3.778        -4.751         0 \r\n 2001          7             6.592         0.468        -5.337         0 \r\n 2001          8             5.003        -2.469        -10.79         0 \r\n 2001          9             8.889         1.162        -13.72         0 \r\n 2001          10            8.183         4.904        -3.099         0 \r\n 2001          11            2.964         2.489        -4.028         0 \r\n 2001          12            2.194        -3.033        -4.445         0 \r\n 2001          13            2.877        -0.142        -3.506         0 \r\n 2001          14            4.315        -0.395        -1.206         11.43 \r\n 2001          15            5.577        -1.187        -9.31          0 \r\n 2001          16            8.845        -6.841        -12.76         0 \r\n 2001          17            9.546        -6.415        -16.28         0 \r\n 2001          18            5.329        -1.129        -15.91         0 \r\n 2001          19            11.26        -15.88        -25.04         0 \r\n 2001          20            9.732        -5.491        -24.92         0 \r\n 2001          21            9.962        -9.51         -17.17         0 \r\n 2001          22            8.53          0.214        -15.51         0 \r\n 2001          23            9.463        -3.213        -13.01         0 \r\n 2001          24            10.808       -11.4         -21.18         0 \r\n 2001          25            9.868        -4.228        -22.94         0 \r\n 2001          26            5.985        -2.013        -13.44         1.02 \r\n 2001          27            11.063       -4.772        -18.21         0 \r\n 2001          28            6.777        -1.499        -11.07         0 \r\n 2001          29            2.182        -0.417        -3.355         17.53 \r\n 2001          30            7.344         1.548        -5.078         8.64 \r\n 2001          31            12.971       -2.532        -12.88         0 \r\n 2001          32            13.12        -10.42        -24.24         0 \r\n 2001          33            8.522        -13.04        -26.95         0 \r\n 2001          34            6.882         2.11         -13.6          2.54 \r\n 2001          35            8.329         1.002        -7.11          0 \r\n 2001          36            8.076         1.236        -7.51          0 \r\n 2001          37            12.476       -3.547        -12.31         0 \r\n 2001          38            2.966        -3.231        -10.29         0.51 \r\n 2001          39            3.369        -3.042        -11.67         2.03 \r\n 2001          40            11.739       -11.5         -21.84         0 \r\n 2001          41            13.807       -12.4         -22.62         0 \r\n 2001          42            9.405        -6.011        -16.39         0 \r\n 2001          43            12.029       -3.357        -12.83         0 \r\n 2001          44            4.638         0.364        -12.29         0 \r\n 2001          45            7.794        -11.19        -17.87         1.78 \r\n 2001          46            10.682       -7.77         -17.87         0 \r\n 2001          47            15.024       -12.08        -18.17         0 \r\n 2001          48            14.045       -11.39        -19.88         0 \r\n 2001          49            14.742       -0.47         -13.24         0 \r\n 2001          50            12.652       -2.268        -8.28          0 \r\n 2001          51            14.756       -7.43         -18.42         0 \r\n 2001          52            12.202       -11.63        -22.26         0 \r\n 2001          53            15.277       -4.033        -14.53         0 \r\n 2001          54            11.205       -4.382        -16.7          0 \r\n 2001          55            5.321         1.284        -4.391         8.64 \r\n 2001          56            16.07        -3.547        -12.37         9.14 \r\n 2001          57            10.953       -7.95         -14.65         0 \r\n 2001          58            12.468       -13.67        -20.19         0 \r\n 2001          59            17.181       -3.415        -21.59         0 \r\n 2001          60            12.161       -2.051        -11.48         0 \r\n 2001          61            16.656        0.803        -9.39          0 \r\n 2001          62            16.435        6.112        -13.5          0 \r\n 2001          63            17.616       -4.457        -11.41         0 \r\n 2001          64            17.859       -3.697        -13.83         0 \r\n 2001          65            16.333       -0.971        -14.15         0 \r\n 2001          66            12.926       -1.148        -8.41          0 \r\n 2001          67            13.701       -4.464        -7.719         0 \r\n 2001          68            16.237       -2.336        -8.016         0 \r\n 2001          69            9.831        -1.132        -5.984         0 \r\n 2001          70            13.651       -4.313        -10.121        0 \r\n 2001          71            14.811        0.059        -4.036         8.13 \r\n 2001          72            13.679        3.219        -1.909         0 \r\n 2001          73            17.199        8.418        -1.601         0 \r\n 2001          74            17.982       -0.541        -3.092         0 \r\n 2001          75            14.12        -0.436        -4.794         0 \r\n 2001          76            19.563        3.194        -7.551         0 \r\n 2001          77            18.467        3.496        -6.559         0 \r\n 2001          78            6.363         4.847        -2.534         0 \r\n 2001          79            18.831        11.189       -3.274         0 \r\n 2001          80            6.141         1.661        -0.874         0 \r\n 2001          81            6.384         3.374        -2.835         0 \r\n 2001          82            12.073       -1.121        -5.855         0 \r\n 2001          83            16.144       -5.711        -10.17         0 \r\n 2001          84            20.331       -6.572        -10.6          0 \r\n 2001          85            21.744       -1.687        -12.62         0 \r\n 2001          86            20.136        6.409        -10.57         0 \r\n 2001          87            4.613         4.233         0.419         0.76 \r\n 2001          88            5.909         4.334        -0.818         0.51 \r\n 2001          89            13.054        11.95        -0.827         0 \r\n 2001          90            19.45         6.186        -1.985         3.81 \r\n 2001          91            14.965        8.67         -3.327         0 \r\n 2001          92            18.213        9.6          -1.252         0 \r\n 2001          93            16.989        10.02         0.363         0 \r\n 2001          94            14.52         14.26         0.362         0 \r\n 2001          95            7.063         13.06         5.69          0 \r\n 2001          96            3.901         16.31         3.409         8.636 \r\n 2001          97            5.174         17.78         1.989         1.524 \r\n 2001          98            21.89         15.03         1.096         0 \r\n 2001          99            22.566        17.96         1.829         0 \r\n 2001          100           12.562        16.15         4.99          20.32 \r\n 2001          101           8.053         17.59         5.385         36.83 \r\n 2001          102           12.225        11.31         2.206         0.254 \r\n 2001          103           8.048         13.63        -0.723         6.096 \r\n 2001          104           14.919        17.34         1.015         0 \r\n 2001          105           23.166        10.36        -2.609         0 \r\n 2001          106           20.223        4.139        -3.648         0 \r\n 2001          107           23.535        9.55         -3.487         0 \r\n 2001          108           22.605        17.41        -3.156         0 \r\n 2001          109           13.318        19.26         6.375         0 \r\n 2001          110           19.775        25.63         9.26          53.848 \r\n 2001          111           6.773         13.17         2.947         0 \r\n 2001          112           1.588         17.96         2.253         11.176 \r\n 2001          113           11.136        11.79         0.785         0.762 \r\n 2001          114           21.663        19.85        -0.949         0 \r\n 2001          115           23.714        23.02         3.138         0 \r\n 2001          116           24.326        27.59         10.14         0 \r\n 2001          117           24.876        27.7          9.45          0 \r\n 2001          118           22.012        28.84         14.21         0 \r\n 2001          119           24.46         27.65         13.69         0 \r\n 2001          120           8.909         22.46         11.77         1.778 \r\n 2001          121           20.097        30.38         9.89          1.524 \r\n 2001          122           3.439         15.87         11.45         16.51 \r\n 2001          123           2.361         12.35         10.04         20.066 \r\n 2001          124           3.918         12.95         10.35         3.048 \r\n 2001          125           3.779         17.91         10.08         27.686 \r\n 2001          126           13.865        19.47         8.06          0.508 \r\n 2001          127           25.33         17.77         6.588         0 \r\n 2001          128           26.497        23.74         6.148         0 \r\n 2001          129           22.309        30.01         10.59         0 \r\n 2001          130           3.873         19.58         10.87         14.478 \r\n 2001          131           18.707        18.9          8.36          0 \r\n 2001          132           5.637         17.01         5.237         0 \r\n 2001          133           19.888        23.83         10.43         0 \r\n 2001          134           23.83         33.43         14.2          0 \r\n 2001          135           20.83         35            17.78         0 \r\n 2001          136           21.25         29.56         13.19         0 \r\n 2001          137           20.142        25.76         12.27         0 \r\n 2001          138           21.717        26.93         10.94         0 \r\n 2001          139           15.096        27.09         11.43         5.334 \r\n 2001          140           2.355         18.98         8.42          47.498 \r\n 2001          141           11.289        12.18         6.709         0.762 \r\n 2001          142           14.352        13.91         6.014         0 \r\n 2001          143           8.766         9.51          4.971         9.906 \r\n 2001          144           7.159         11.97         4.94          2.032 \r\n 2001          145           15.004        19.6          7.38          0 \r\n 2001          146           4.926         15.35         10.47         1.778 \r\n 2001          147           14.796        22.31         9.17          0 \r\n 2001          148           16.91         21.55         10.86         0 \r\n 2001          149           15.45         23.17         9.64          0 \r\n 2001          150           4.363         16.45         12.64         0.762 \r\n 2001          151           8.264         16.82         7.27          0.762 \r\n 2001          152           14.277        20.71         6.671         1.778 \r\n 2001          153           18.383        20.78         9.47          0 \r\n 2001          154           17.859        20.48         8.55          0 \r\n 2001          155           11.068        17.84         10.15         4.826 \r\n 2001          156           5.545         14.68         10.07         1.27 \r\n 2001          157           20.604        23.27         12.32         0 \r\n 2001          158           20.946        24.88         13.17         0 \r\n 2001          159           22.949        28.13         11.53         0 \r\n 2001          160           19.185        29.59         14.35         0 \r\n 2001          161           22.703        30.51         16.53         7.874 \r\n 2001          162           16.389        33.38         20.33         7.874 \r\n 2001          163           3.784         25.49         17.33         2.032 \r\n 2001          164           17.491        30.52         17.11         16.51 \r\n 2001          165           7.822         22.57         13.55         5.588 \r\n 2001          166           21.757        25.22         11.02         0 \r\n 2001          167           19.87         27.53         11.02         0 \r\n 2001          168           18.088        29.06         15.41         0 \r\n 2001          169           21.384        34.23         15            0 \r\n 2001          170           18.212        23.87         12.74         0 \r\n 2001          171           18.229        25.75         11.19         0 \r\n 2001          172           21.099        23.88         12.49         0 \r\n 2001          173           26.435        24.35         8.1           0 \r\n 2001          174           25.434        27.81         11.76         0 \r\n 2001          175           25.423        34.02         17.83         0 \r\n 2001          176           25.832        32.62         20.99         0 \r\n 2001          177           11.41         27.69         20.22         0 \r\n 2001          178           23.924        31.35         18.46         0 \r\n 2001          179           25.662        30.34         18.04         0 \r\n 2001          180           18.791        30.05         17.85         0 \r\n 2001          181           22.185        32.98         19.75         0 \r\n 2001          182           10.509        22.34         11.08         0 \r\n 2001          183           18.919        28.7          11.1          3.302 \r\n 2001          184           24.641        29.94         17.72         0 \r\n 2001          185           25.786        29.79         16.67         0 \r\n 2001          186           27.297        28.78         13.25         0 \r\n 2001          187           20.484        32.31         17.87         0 \r\n 2001          188           15.495        32.5          21.45         0.254 \r\n 2001          189           15.452        33.31         19.31         0 \r\n 2001          190           18.787        31.17         16.49         0 \r\n 2001          191           13.928        29.27         18.27         0 \r\n 2001          192           17.11         27.19         13.11         0 \r\n 2001          193           22.511        27.87         15.92         0 \r\n 2001          194           24.328        29.59         13.23         0 \r\n 2001          195           24.595        28.29         14.39         0 \r\n 2001          196           23.209        28.45         16.55         0 \r\n 2001          197           18.341        29.87         18.83         11.176 \r\n 2001          198           18.658        31.19         20.21         0 \r\n 2001          199           22.347        29.74         19.62         6.096 \r\n 2001          200           21.45         29.14         22.62         0 \r\n 2001          201           13.286        29.22         21.39         0 \r\n 2001          202           14.239        28.71         22.11         7.366 \r\n 2001          203           3.789         28.6          21.07         12.446 \r\n 2001          204           20.757        31.46         21.72         2.286 \r\n 2001          205           10.245        23.4          17.35         75.946 \r\n 2001          206           21.583        26.68         16.52         0 \r\n 2001          207           9.708         24.88         18.15         0 \r\n 2001          208           4.789         23.04         18.41         2.032 \r\n 2001          209           24.334        27.74         16.78         0 \r\n 2001          210           22.977        30.85         16.45         1.27 \r\n 2001          211           18.997        32.98         22.25         0 \r\n 2001          212           23.036        32.95         24.44         0 \r\n 2001          213           13.081        29.5          23.04         1.27 \r\n 2001          214           15.153        29.96         20.99         3.048 \r\n 2001          215           22.144        29.53         21.07         16.256 \r\n 2001          216           23.765        32.64         21.07         0 \r\n 2001          217           23.745        33.23         22.86         0 \r\n 2001          218           22.49         33.47         23.84         0 \r\n 2001          219           22.951        33.05         20.97         0 \r\n 2001          220           23.966        31.58         16.93         0 \r\n 2001          221           18.079        25.02         11.56         0 \r\n 2001          222           18.263        22.46         9.51          0 \r\n 2001          223           23.639        25.67         9.05          0 \r\n 2001          224           19.468        27.47         13.73         0 \r\n 2001          225           23.522        25.65         9.45          0 \r\n 2001          226           5.521         20.94         13.37         5.334 \r\n 2001          227           9.237         19.2          12.59         26.924 \r\n 2001          228           21.689        23.75         11.24         0 \r\n 2001          229           20.923        26.37         9.75          2.54 \r\n 2001          230           19.419        21.85         12.46         3.556 \r\n 2001          231           22.761        25.36         10.73         0 \r\n 2001          232           20.699        25.28         13.33         0 \r\n 2001          233           8.83          26.92         16.9          0 \r\n 2001          234           15.899        30.5          17.91         0 \r\n 2001          235           17.287        28.78         19.85         0 \r\n 2001          236           7.549         24.62         19.8          16.002 \r\n 2001          237           17.962        27.48         16.34         0 \r\n 2001          238           19.996        28.22         13.85         0 \r\n 2001          239           22.006        26.91         13.62         0 \r\n 2001          240           16.756        26.82         11.38         0 \r\n 2001          241           19.143        30.75         17.65         0.508 \r\n 2001          242           21.291        25.88         12.38         1.27 \r\n 2001          243           21.883        23.81         11.95         0 \r\n 2001          244           13.739        23.97         11.94         0 \r\n 2001          245           17.645        28.02         16.16         0.508 \r\n 2001          246           20.621        27.97         12.77         0 \r\n 2001          247           19.873        27.07         11.72         0 \r\n 2001          248           18.959        28.44         15.3          0 \r\n 2001          249           10.459        25.03         20.97         0 \r\n 2001          250           7.94          22.42         15.79         10.16 \r\n 2001          251           16.854        20.6          11.27         0.254 \r\n 2001          252           14.835        21.35         10.11         0 \r\n 2001          253           20.172        22.36         7.18          0 \r\n 2001          254           19.601        26.92         11.54         0 \r\n 2001          255           18.706        25.6          12.33         0 \r\n 2001          256           4.5           15.11         10.6          7.366 \r\n 2001          257           2.032         13.55         9.84          17.272 \r\n 2001          258           3.412         13.97         10.63         0 \r\n 2001          259           3.466         15.56         11            14.224 \r\n 2001          260           10.019        20.27         11.82         0 \r\n 2001          261           4.515         18.17         9.92          2.794 \r\n 2001          262           15.214        23.05         8.21          0 \r\n 2001          263           15.904        24.37         10.47         0 \r\n 2001          264           18.259        22.94         7.58          0 \r\n 2001          265           11.353        27.18         9.03          0 \r\n 2001          266           5.364         15.3          3.534         0 \r\n 2001          267           18.374        15.96         0.41          0 \r\n 2001          268           18.033        19.25         0.14          0 \r\n 2001          269           17.865        21.94        -0.002         0 \r\n 2001          270           17.394        25.23         3.062         0 \r\n 2001          271           17.225        24.81         4.876         0 \r\n 2001          272           17.185        21.85         6.893         0 \r\n 2001          273           15.591        26.02         6.422         0 \r\n 2001          274           16.123        27.27         7.77          0 \r\n 2001          275           15.826        30.52         11.56         0 \r\n 2001          276           14.364        18.32         6.539         0 \r\n 2001          277           3.615         14.46         4.042         0 \r\n 2001          278           14.677        13.29        -1.647         0 \r\n 2001          279           15.368        14.12        -3.83          0 \r\n 2001          280           15            21.59         2.142         0 \r\n 2001          281           12.816        22            10.88         0 \r\n 2001          282           2.303         17.89         11.88         6.1 \r\n 2001          283           6.867         17.1          5.092         5.08 \r\n 2001          284           15.315        20.87         1.943         0 \r\n 2001          285           9.882         16.86         5.928         0 \r\n 2001          286           11.802        15.42         6.223         6.35 \r\n 2001          287           5.606         10.39         1.127         0 \r\n 2001          288           8.704         9.46         -1.459         0 \r\n 2001          289           15.07         10.25        -3.887         0 \r\n 2001          290           13.595        18.23        -1.666         0 \r\n 2001          291           11.521        15.63         2.753         0 \r\n 2001          292           11.318        18.02        -0.387         0 \r\n 2001          293           11.28         19.24         1.822         0 \r\n 2001          294           12.791        19.25         4.679         0 \r\n 2001          295           3.664         14.68         5.114         0 \r\n 2001          296           10.489        19.63         4.052         0 \r\n 2001          297           7.622         9.79         -1.666         0 \r\n 2001          298           13.605        5.579        -4.592         0 \r\n 2001          299           13.716        4.914        -8.38          0 \r\n 2001          300           12.965        10.45        -9.8           0 \r\n 2001          301           11.935        21.2          4.565         0 \r\n 2001          302           9.21          13.11         3.41          0 \r\n 2001          303           6.847         14.1          5.05          0 \r\n 2001          304           5.435         18.05         10.09         0 \r\n 2001          305           8.504         18.39         4.174         0 \r\n 2001          306           11.808        17.22        -0.913         0 \r\n 2001          307           11.061        22.51         2.063         0 \r\n 2001          308           10.975        20.66        -0.482         0 \r\n 2001          309           10.772        22.14         4.467         0 \r\n 2001          310           10.094        21.33         8.12          0 \r\n 2001          311           9.888         22.77         6.377         0 \r\n 2001          312           11.246        8.65         -4.926         0 \r\n 2001          313           10.925        17.31        -4.684         0 \r\n 2001          314           10.904        15.91        -1.206         0 \r\n 2001          315           10.924        15.71        -1.863         0 \r\n 2001          316           8.938         18.61         3.525         0 \r\n 2001          317           3.583         17.77         10.39         0 \r\n 2001          318           4.823         20.33         10.26         0 \r\n 2001          319           8.302         20.7          6.844         0 \r\n 2001          320           9.334         22.44         4.232         0 \r\n 2001          321           8.184         19.72         6.147         0 \r\n 2001          322           1.895         15.47         2.411         0 \r\n 2001          323           10.184        6.41         -7.01          0 \r\n 2001          324           6.613         13.08        -7.12          0 \r\n 2001          325           9.181         18.11        -1.995         0 \r\n 2001          326           7.424         13.92         0.663         0 \r\n 2001          327           1.557         10.99         3.668         10.67 \r\n 2001          328           0.799         11.31         2.628         28.7 \r\n 2001          329           1.312         3.008        -0.625         3.56 \r\n 2001          330           0.628         5.475        -0.848         12.7 \r\n 2001          331           1.885         2.31         -4.506         5.33 \r\n 2001          332           2.82         -3.401        -6.369         0 \r\n 2001          333           1.625        -2.456        -7.07          0 \r\n 2001          334           2.092        -0.611        -3.486         0 \r\n 2001          335           8.508         5.542        -5.999         0 \r\n 2001          336           7.315         9.68         -2.334         0 \r\n 2001          337           4.093         8.34         -3.204         0 \r\n 2001          338           2.175         12.41         3.726         0 \r\n 2001          339           2.908         16.83        -1.514         3.81 \r\n 2001          340           8.196         5.91         -3.631         0 \r\n 2001          341           3.108         4.147        -3.536         1.52 \r\n 2001          342           8.641         0.938        -5.307         0 \r\n 2001          343           8.049         8.99         -3.97          0 \r\n 2001          344           7.418         6.3          -3.229         0 \r\n 2001          345           7.976         10.19        -1.402         0 \r\n 2001          346           2.017         3.78         -3.439         2.03 \r\n 2001          347           7.036         3.76         -5.171         0 \r\n 2001          348           7.318         6.521        -5.162         0 \r\n 2001          349           5.807         10.8          2.772         0 \r\n 2001          350           6.293         6.77         -5.787         0 \r\n 2001          351           7.458         8.58         -7.72          0 \r\n 2001          352           2.583         4.838        -4.876         0 \r\n 2001          353           7.919         3.913        -10.51         0 \r\n 2001          354           8.056         6.416        -7.38          0 \r\n 2001          355           4.956         4.784        -8.55          0 \r\n 2001          356           3.862         2.808        -10.22         5.08 \r\n 2001          357           8.468        -6.677        -11.24         0 \r\n 2001          358           8.822        -7.6          -15.89         0 \r\n 2001          359           7.243        -10.29        -18.44         0 \r\n 2001          360           5.385        -6.571        -14.9          0 \r\n 2001          361           3.154        -3.221        -8             0 \r\n 2001          362           5.646        -7.49         -16.13         0 \r\n 2001          363           5.854        -10.95        -17.96         0 \r\n 2001          364           8.843        -9.96         -18.17         0 \r\n 2001          365           8.758        -10.17        -20.51         0 \r\n 2002          1             5.297        -11.32        -18.23         0 \r\n 2002          2             8.885        -10.37        -18.93         0 \r\n 2002          3             8.42         -2.712        -18.09         0 \r\n 2002          4             7.753         3.694        -6.233         0 \r\n 2002          5             6.178         6.101        -3.792         0 \r\n 2002          6             4.684         0.206        -16.26         0 \r\n 2002          7             7.457         1.587        -16.98         0 \r\n 2002          8             7.047         14.46        -3.821         0 \r\n 2002          9             6.014         11.16        -1.451         0 \r\n 2002          10            2.208         2.582        -5.651         0 \r\n 2002          11            8.079         9.28         -7.4           0 \r\n 2002          12            9.038         5.988        -4.2           0 \r\n 2002          13            3.771         4.545        -1.59          0 \r\n 2002          14            5.056         0.319        -6.89          2.03 \r\n 2002          15            6.261        -3.819        -9.21          0 \r\n 2002          16            8.131        -3.124        -10.71         1.02 \r\n 2002          17            7.691        -2.448        -13.21         0 \r\n 2002          18            9.484        -5.395        -20.26         0 \r\n 2002          19            9.555         2.161        -10.21         0.25 \r\n 2002          20            8.939         5.066        -6.598         0 \r\n 2002          21            9.843         9.16         -9.66          0 \r\n 2002          22            8.842         10.38        -3.305         0 \r\n 2002          23            6.481        -3.156        -13.23         0 \r\n 2002          24            10.337        5.703        -15.49         0 \r\n 2002          25            9.875         13.15        -6.048         0 \r\n 2002          26            10.593        18.71        -3.763         0 \r\n 2002          27            7.966         11.56        -9.08          0 \r\n 2002          28            2.466        -8.76         -10.9          0 \r\n 2002          29            1.716        -8.28         -11.72         0 \r\n 2002          30            4.924        -6.6          -12.9          0 \r\n 2002          31            5.095        -5.289        -10.05         3.81 \r\n 2002          32            12.044       -6.833        -20.03         2.79 \r\n 2002          33            11.9         -0.067        -14.1          0 \r\n 2002          34            9.599        -3.157        -19.01         0 \r\n 2002          35            12.921       -7.4          -23.84         0 \r\n 2002          36            11.33        -1.235        -12.84         0 \r\n 2002          37            11.832        2.667        -10.12         0 \r\n 2002          38            11.968        7.68         -8.91          0 \r\n 2002          39            11.421        9.66         -5.152         0 \r\n 2002          40            1.147         3.744        -0.942         1.78 \r\n 2002          41            13.449       -0.932        -10.38         7.37 \r\n 2002          42            10.204        5.344        -10.48         0 \r\n 2002          43            8.654         1.473        -7.47          0 \r\n 2002          44            13.394        5.636        -9.45          0 \r\n 2002          45            9.503         8.64          0.449         0 \r\n 2002          46            11.741        7.63         -3.157         0 \r\n 2002          47            13.796        9.28         -4.315         0 \r\n 2002          48            12.161        9.83         -5.451         0 \r\n 2002          49            5.693         11.49         2.687         0 \r\n 2002          50            2.721         5.183        -0.969         0.25 \r\n 2002          51            2.638         2.252        -0.085         0 \r\n 2002          52            13.769        6.703        -5.237         0 \r\n 2002          53            8.385         5.484        -9.45          0 \r\n 2002          54            11.976        18.32         2.704         0 \r\n 2002          55            2.481         4.519        -7.31          0 \r\n 2002          56            13.084       -5.808        -12.75         0 \r\n 2002          57            13.063       -7.85         -15.6          0 \r\n 2002          58            16.118       -1.646        -19.05         0 \r\n 2002          59            12.826       -0.049        -13.49         0 \r\n 2002          60            5.581        -10.4         -15.82         0 \r\n 2002          61            18.224       -9.89         -20.64         3.81 \r\n 2002          62            18.893       -14.86        -23.96         0 \r\n 2002          63            11.426        1.135        -17.63         0 \r\n 2002          64            15.163        7.97         -7.15          0 \r\n 2002          65            3.74         -2.138        -8.94          0 \r\n 2002          66            2.15         -0.106        -10.6          0 \r\n 2002          67            2.803        -0.114        -8.61          2.03 \r\n 2002          68            17.278       -8.59         -13.88         17.02 \r\n 2002          69            17.935       -3.534        -18.16         0 \r\n 2002          70            13.539        1.541        -5.555         0 \r\n 2002          71            12.349        8.27         -6.775         0 \r\n 2002          72            6.82          4.715        -0.998         0 \r\n 2002          73            0.773        -0.124        -3.721         3.3 \r\n 2002          74            10.644       -0.443        -5.458         1.02 \r\n 2002          75            15.596        2.301        -9.03          0 \r\n 2002          76            5.883         1.989        -2.007         0 \r\n 2002          77            10.123        4.841        -5.385         0 \r\n 2002          78            5.969         0.972        -4.53          0 \r\n 2002          79            15.914        6.626        -10.05         0 \r\n 2002          80            19.975       -8.26         -13.62         0 \r\n 2002          81            21.316        1.708        -13.84         0 \r\n 2002          82            16.692        4.431        -10.91         0 \r\n 2002          83            13.283        1.7          -7.02          0 \r\n 2002          84            21.847        1.012        -11.28         0 \r\n 2002          85            17.966        5.284        -10.37         0 \r\n 2002          86            16.438        15.54        -4.417         0 \r\n 2002          87            17.328        12.22        -0.18          0 \r\n 2002          88            19.726        13.43        -0.519         0 \r\n 2002          89            12.247        8.3          -2.051         0 \r\n 2002          90            21.182        6.31         -2.287         0 \r\n 2002          91            16.514        14.97        -0.585         0 \r\n 2002          92            10.53         1.783        -6.116         0 \r\n 2002          93            18.889        0.738        -9.08          0 \r\n 2002          94            22.767        8.08         -10.94         0 \r\n 2002          95            22.842        10.78        -6.365         0 \r\n 2002          96            19.019        16.53        -3.337         0 \r\n 2002          97            4.164         12.88         8.41          0 \r\n 2002          98            16.42         14.2         -1.412         0.254 \r\n 2002          99            22.939        16.92        -6.289         0 \r\n 2002          100           18.087        24.85         8             0 \r\n 2002          101           2.686         14.24         6.9           18.796 \r\n 2002          102           19.625        19.06         4.894         0 \r\n 2002          103           11.638        19.98         6.329         0.254 \r\n 2002          104           16.949        25.57         10.7          0 \r\n 2002          105           20.759        32.61         17.95         0 \r\n 2002          106           14.852        28.94         12.01         14.224 \r\n 2002          107           24.392        20.44         4.251         0.254 \r\n 2002          108           23.918        28.05         5.519         0 \r\n 2002          109           15.562        12.21         1.952         0 \r\n 2002          110           15.857        11.83         0.522         4.826 \r\n 2002          111           7.735         4.498         0.475         6.096 \r\n 2002          112           21.728        13.32        -1.299         0 \r\n 2002          113           25.327        24.16         5.255         0 \r\n 2002          114           25.425        18.05         0.983         0 \r\n 2002          115           26.916        11.06         0.015         0 \r\n 2002          116           22.286        14.2         -2.109         0.508 \r\n 2002          117           1.816         7.76          0.957         19.812 \r\n 2002          118           7.18          6.397         0.986         0 \r\n 2002          119           25.976        19.83         1.813         0 \r\n 2002          120           17.208        19.51         6.959         0 \r\n 2002          121           3.044         9.96          2.703         9.398 \r\n 2002          122           24.602        15.19        -1.063         0 \r\n 2002          123           26.63         19.9          1.302         0 \r\n 2002          124           25.09         18.33         4.195         0 \r\n 2002          125           20.124        27.66         4.024         0 \r\n 2002          126           14.975        25.66         8.99          0 \r\n 2002          127           10.835        16.83         6.491         0.762 \r\n 2002          128           7.267         22.33         4.771         0.254 \r\n 2002          129           22.611        12.85         1.905         0 \r\n 2002          130           11.94         15.9         -0.597         0 \r\n 2002          131           3.932         12.13         7.64          36.322 \r\n 2002          132           6.373         9.54          4.221         0.254 \r\n 2002          133           27.296        19.49         2.016         0 \r\n 2002          134           27.224        21.9          1.398         0 \r\n 2002          135           21.444        25.63         13.54         0 \r\n 2002          136           12.108        15.89         5.677         0.762 \r\n 2002          137           25.822        15.04         3.693         0 \r\n 2002          138           29.162        16.03         0.413         0 \r\n 2002          139           29.746        17.32         0.262         0 \r\n 2002          140           29.806        16.73         1.343         0 \r\n 2002          141           29.251        20.59         5.011         0 \r\n 2002          142           11.312        22.65         10.77         0 \r\n 2002          143           27.523        18.56         5.246         0 \r\n 2002          144           19.469        14.46         2.019         1.016 \r\n 2002          145           27.408        23.06         5.132         0 \r\n 2002          146           19.779        27.56         10.98         1.524 \r\n 2002          147           27.262        28.47         12.13         0 \r\n 2002          148           17.019        27.25         16.25         1.27 \r\n 2002          149           22.93         29.08         16.4          0.254 \r\n 2002          150           26.177        34.44         17            0 \r\n 2002          151           21.931        31.6          15.92         0 \r\n 2002          152           23.064        32.3          16.22         0 \r\n 2002          153           10.413        21.73         15.16         7.62 \r\n 2002          154           6.21          17.71         12.32         0 \r\n 2002          155           17.998        20.85         11.63         6.858 \r\n 2002          156           21.307        23.91         8.14          0 \r\n 2002          157           23.095        29.37         12.81         0 \r\n 2002          158           19.421        31.9          18.53         0.254 \r\n 2002          159           22.702        31.49         17.86         2.54 \r\n 2002          160           23.743        32.98         21.13         0 \r\n 2002          161           11.541        30.11         19.45         0 \r\n 2002          162           15.017        25.87         15.16         26 \r\n 2002          163           17.08         25.52         15.37         0 \r\n 2002          164           24.579        21.69         11.72         0 \r\n 2002          165           24.457        25.21         10.98         0 \r\n 2002          166           26.993        24.51         11.9          0 \r\n 2002          167           29.057        26.88         7.61          0 \r\n 2002          168           20.613        26.6          13.17         2.286 \r\n 2002          169           21.6          28.2          17.52         0 \r\n 2002          170           22.576        32.15         18.76         6.35 \r\n 2002          171           18.44         25.97         15.06         0.762 \r\n 2002          172           22.168        31.47         19.52         0 \r\n 2002          173           26.614        31.89         21.7          0 \r\n 2002          174           26.265        32.48         22.87         0 \r\n 2002          175           26.579        32.06         19.87         0 \r\n 2002          176           23.347        32.6          20.24         0 \r\n 2002          177           27.465        30.92         17.18         0 \r\n 2002          178           26.232        30.49         14.71         0 \r\n 2002          179           27.116        30.87         15.74         0 \r\n 2002          180           26.987        35.18         20.55         0 \r\n 2002          181           27.752        34.52         23.07         0 \r\n 2002          182           28.51         32.08         21.6          0 \r\n 2002          183           16.658        30.32         19.08         0 \r\n 2002          184           24.873        31.26         19.71         0 \r\n 2002          185           24.753        31.55         20.07         0 \r\n 2002          186           24.778        32.61         20.8          0 \r\n 2002          187           26.74         33.28         20.5          0 \r\n 2002          188           24.255        33.44         19.65         0 \r\n 2002          189           26.545        30.29         18.84         0 \r\n 2002          190           20.328        30.53         16.36         0.762 \r\n 2002          191           20.803        27.42         17.67         13.208 \r\n 2002          192           5.275         18.41         15.9          1.524 \r\n 2002          193           27.52         24.58         12.87         0 \r\n 2002          194           27.212        27.8          12.44         0 \r\n 2002          195           27.7          28.22         11.99         0 \r\n 2002          196           26.703        30.62         15.55         0 \r\n 2002          197           25.434        31.22         17.13         0 \r\n 2002          198           25.773        33.3          17.66         0 \r\n 2002          199           23.436        34.31         21            0 \r\n 2002          200           17.978        33.2          21.86         0 \r\n 2002          201           24.482        36            22.61         0 \r\n 2002          202           22.004        33.83         21.55         9.144 \r\n 2002          203           26.752        27.78         14.6          0 \r\n 2002          204           25.843        25.45         10.74         0 \r\n 2002          205           14.96         26.81         15.45         7.62 \r\n 2002          206           22.372        28.81         18.23         0.762 \r\n 2002          207           23.903        30.81         20.29         0 \r\n 2002          208           20.978        30.88         19.57         0 \r\n 2002          209           24.354        32.24         19.62         0 \r\n 2002          210           25.718        31.06         14.56         0 \r\n 2002          211           24.072        33.86         18.99         0.254 \r\n 2002          212           24.515        34.56         21.66         2.286 \r\n 2002          213           23.987        26.17         12.18         0 \r\n 2002          214           25.767        25.71         8.27          0 \r\n 2002          215           22.478        34.1          16.63         0 \r\n 2002          216           17.099        30.27         20.64         33.53 \r\n 2002          217           11.81         27.34         20.08         31.75 \r\n 2002          218           17.06         24.33         17.12         1.52 \r\n 2002          219           20.666        26.42         17.6          0 \r\n 2002          220           24.555        25.85         15.95         0 \r\n 2002          221           15.452        26.58         13.47         0 \r\n 2002          222           24.489        27.59         16.83         0 \r\n 2002          223           17.787        29.68         18.46         0 \r\n 2002          224           3.448         20.54         13.29         25.15 \r\n 2002          225           21.363        23.11         11.94         1.52 \r\n 2002          226           24.731        27.35         10.53         0 \r\n 2002          227           23.971        24.95         14.31         0 \r\n 2002          228           10.287        25.25         10.78         24.38 \r\n 2002          229           24.404        23.51         9.47          7.37 \r\n 2002          230           16.119        20.79         6.559         0 \r\n 2002          231           24.309        23.37         9.61          0 \r\n 2002          232           17.13         28.1          11.01         0 \r\n 2002          233           9.079         28.31         21.33         27.69 \r\n 2002          234           13.015        25.46         19.85         19.81 \r\n 2002          235           12.933        25.72         15.89         0 \r\n 2002          236           18.587        26.1          14.4          0 \r\n 2002          237           22.037        28.71         16.35         0 \r\n 2002          238           19.794        27.81         13.52         0 \r\n 2002          239           19.304        27.15         16.64         0 \r\n 2002          240           20.273        28.12         18.63         0 \r\n 2002          241           16.332        26.25         17.28         0 \r\n 2002          242           18.302        25.96         17.29         0 \r\n 2002          243           20.609        28.6          17.49         0 \r\n 2002          244           14.472        29.41         18.53         0 \r\n 2002          245           21.083        27.99         11.39         0 \r\n 2002          246           22.333        27.5          9.39          0 \r\n 2002          247           19.905        28.33         13.38         0 \r\n 2002          248           17.841        31.22         17.17         0 \r\n 2002          249           20.204        32.99         19.82         0 \r\n 2002          250           19.876        32.46         20.42         0 \r\n 2002          251           20.537        33.06         17.82         0 \r\n 2002          252           19.532        30.26         17.09         0 \r\n 2002          253           19.674        24.03         10.04         0.254 \r\n 2002          254           19.24         24.52         6.913         0 \r\n 2002          255           18.033        25.13         10.62         0 \r\n 2002          256           6.188         20.55         15.51         14.986 \r\n 2002          257           10.652        21.78         8.67          17.018 \r\n 2002          258           20.975        21.87         6.168         0 \r\n 2002          259           20.223        27.64         7.38          0 \r\n 2002          260           16.29         25.72         10.58         0 \r\n 2002          261           5.848         23.55         14.92         14.478 \r\n 2002          262           4.054         17.7          12.32         0 \r\n 2002          263           18.511        24.28         10.71         2.794 \r\n 2002          264           3.945         14.21         8.29          2.286 \r\n 2002          265           18.957        17.32         2.789         0 \r\n 2002          266           18.192        14.79         1.106         0 \r\n 2002          267           13.484        19.84        -0.359         5.842 \r\n 2002          268           11.796        21.86         10.07         4.572 \r\n 2002          269           3.935         10.55         6.185         1.778 \r\n 2002          270           18.326        18.64         3.391         0.254 \r\n 2002          271           5.059         17.46         5.635         0 \r\n 2002          272           6.891         24.25         9.27          0.508 \r\n 2002          273           16.777        29.71         14.46         0 \r\n 2002          274           10.064        26.01         9.1           0 \r\n 2002          275           2.677         9.14          6.158         38.86 \r\n 2002          276           4.593         13.41         6.138         0.51 \r\n 2002          277           9.678         14.48         2.412         27.18 \r\n 2002          278           13.785        19.29         1.961         0 \r\n 2002          279           9.11          12.69        -1.11          16.76 \r\n 2002          280           15.127        17.43        -1.911         0 \r\n 2002          281           10.125        19.58         4.202         0 \r\n 2002          282           11.832        15.61         0.905         0 \r\n 2002          283           15.165        23.21         10.04         3.3 \r\n 2002          284           14.572        25.09         11.6          0 \r\n 2002          285           12.458        13.34        -1.543         0 \r\n 2002          286           15.588        15.05        -3.327         0 \r\n 2002          287           15.056        18.92         3.655         0 \r\n 2002          288           13.509        10.39        -1.731         0 \r\n 2002          289           2.428         3.279        -1.073         3.56 \r\n 2002          290           8.784         10.18        -1.28          0 \r\n 2002          291           4.877         13.08         1.803         0 \r\n 2002          292           8.216         5.142        -3.327         0 \r\n 2002          293           7.833         14.48        -3.668         0 \r\n 2002          294           6.049         7.71         -2.855         0 \r\n 2002          295           4.256         1.663        -2.949         1.02 \r\n 2002          296           5.116        -0.583        -3.96          0 \r\n 2002          297           3.522        -0.198        -4.123         6.1 \r\n 2002          298           4.295         3.676        -0.789         0 \r\n 2002          299           11.638        7.04         -3.704         0 \r\n 2002          300           1.638         2.583        -3.507         4.57 \r\n 2002          301           3.583         3.666        -0.302         5.08 \r\n 2002          302           2.341         6.006         3.344         0 \r\n 2002          303           2.491         3.972        -5.143         0 \r\n 2002          304           9.383        -1.271        -7.93          0 \r\n 2002          305           13.051        1.672        -10.23         0 \r\n 2002          306           10.823        7.31         -8.31          0 \r\n 2002          307           11.602        7.98         -4.648         0 \r\n 2002          308           5.207         0.195        -5.193         0 \r\n 2002          309           2.715         2.581        -2.239         2.54 \r\n 2002          310           9.665         10.55        -4.188         0 \r\n 2002          311           11.308        19.76        -2.061         0 \r\n 2002          312           7.521         14.87         0.271         0 \r\n 2002          313           3.982         15.54         3.29          0 \r\n 2002          314           2.643         5.351        -4.314         1.27 \r\n 2002          315           9.753         3.516        -4.666         0 \r\n 2002          316           10.179        13.48        -6.008         0 \r\n 2002          317           3.874         9.85         -3.541         0 \r\n 2002          318           1.743         2.086        -4.836         0 \r\n 2002          319           3.107        -0.276        -6.211         0 \r\n 2002          320           7.601         3.08         -8.63          0 \r\n 2002          321           7.735         5.751        -5.584         0 \r\n 2002          322           7.879         12.27        -2.164         0 \r\n 2002          323           8.808         13.04        -0.734         0 \r\n 2002          324           8.454         11.84        -3.033         0 \r\n 2002          325           1.789         5.173        -0.264         0 \r\n 2002          326           9.426         7.4          -4.971         0 \r\n 2002          327           7.796         6.712        -2.627         0 \r\n 2002          328           5.458         0.778        -11.33         0 \r\n 2002          329           9.473        -2.004        -14.12         0 \r\n 2002          330           7.049        -2.259        -10.85         0 \r\n 2002          331           7.249        -1.308        -11.44         0 \r\n 2002          332           8.697         7.94         -10.8          0 \r\n 2002          333           5.009         9.58         -7.41          0 \r\n 2002          334           9.246        -4.229        -13.51         0 \r\n 2002          335           8.783         9.87         -11.76         0 \r\n 2002          336           6.608        -1.748        -11.97         0 \r\n 2002          337           6.94         -4.296        -15.42         0 \r\n 2002          338           5.514        -5.451        -15.87         1.52 \r\n 2002          339           8.893        -7.81         -21.13         0 \r\n 2002          340           8.26          6.493        -15.05         0 \r\n 2002          341           8.593         3.091        -9.1           0 \r\n 2002          342           8.895        -1.826        -11.9          0 \r\n 2002          343           8.005         5.028        -12.81         0 \r\n 2002          344           6.048         1.311        -8.24          0 \r\n 2002          345           1.172         1.368        -2.873         0 \r\n 2002          346           6.441         8.15         -6.59          0 \r\n 2002          347           8.28          9.25         -7.75          0 \r\n 2002          348           7.693         11.64        -5.786         0 \r\n 2002          349           6.221         12.33        -3.288         0 \r\n 2002          350           1.847         0.663        -1.298         0 \r\n 2002          351           1.791         1.785        -0.997         0 \r\n 2002          352           1.789         4.141         0.279         0 \r\n 2002          353           1.837         1.427        -2.137         0 \r\n 2002          354           2.019         0.167        -3.564         0 \r\n 2002          355           3.539        -2.495        -6.269         0 \r\n 2002          356           6.892        -1.571        -8.41          0 \r\n 2002          357           7.53         -1.791        -14.52         0 \r\n 2002          358           7.456        -3.393        -16.33         0 \r\n 2002          359           6.603        -1.223        -15.7          0 \r\n 2002          360           7.077         5.429        -13.05         0 \r\n 2002          361           6.926         4.886        -7.26          0 \r\n 2002          362           6.124         14.66        -5.173         0 \r\n 2002          363           5.577         7.83         -2.204         0 \r\n 2002          364           7.764         5.418        -8.26          0 \r\n 2002          365           8.001         3.391        -11.7          0 \r\n 2003          1             1.416        -1.241        -5.18          0 \r\n 2003          2             7.292        -0.107        -11.89         0 \r\n 2003          3             4.386         2.535        -13.7          0 \r\n 2003          4             4.227         6.074        -3.81          0.51 \r\n 2003          5             1.757        -0.855        -4.799         0 \r\n 2003          6             4.434        -1.89         -7.82          0 \r\n 2003          7             7.579         13.66        -4.476         0 \r\n 2003          8             8.32          14.02        -0.677         0 \r\n 2003          9             4.83          1.56         -6.338         0 \r\n 2003          10            9.62         -6.328        -18.32         0 \r\n 2003          11            9.4          -7.88         -19.53         0 \r\n 2003          12            9.156         6.294        -18.99         0 \r\n 2003          13            4.701        -7.73         -14            0 \r\n 2003          14            9.526        -6.53         -17.77         0 \r\n 2003          15            3.607        -8.42         -19.18         0 \r\n 2003          16            9.55         -5.497        -19.49         0.76 \r\n 2003          17            10.81        -9.18         -23.89         0 \r\n 2003          18            9.983        -6.414        -18.02         0 \r\n 2003          19            4.866         1.5          -18.44         0 \r\n 2003          20            2.475        -9.13         -14.81         0 \r\n 2003          21            6.01         -10.77        -21.36         0 \r\n 2003          22            8.663        -13.55        -24.25         0 \r\n 2003          23            10.666       -15.08        -27.13         0 \r\n 2003          24            5.164        -5.078        -17.3          0 \r\n 2003          25            3.88         -8.97         -15.85         0.51 \r\n 2003          26            11.722       -13.71        -25.91         0 \r\n 2003          27            9.862        -1.279        -15.07         1.27 \r\n 2003          28            3.33          0.271        -6.98          2.54 \r\n 2003          29            4.678        -4.339        -12.46         1.02 \r\n 2003          30            5.128         1.228        -4.349         0 \r\n 2003          31            2.77          0.827        -2.117         0.25 \r\n 2003          32            7.555         10.07        -4.647         0 \r\n 2003          33            2.832         4.661        -0.235         0 \r\n 2003          34            4.307        -0.198        -11.51         0 \r\n 2003          35            10.833       -6.754        -16.31         0 \r\n 2003          36            7.602         1.324        -12.98         0 \r\n 2003          37            13.073       -11.63        -22.55         0 \r\n 2003          38            13.389       -4.257        -24.49         0 \r\n 2003          39            8.512        -2.627        -18.05         0 \r\n 2003          40            11.595        1.022        -17.68         0 \r\n 2003          41            13.512       -5.643        -20.96         2.03 \r\n 2003          42            10.859        3.996        -17.71         0 \r\n 2003          43            13.814       -0.311        -17.53         0 \r\n 2003          44            13.109        8.18         -10.83         0 \r\n 2003          45            1.69         -0.424        -7.13          16.51 \r\n 2003          46            15.028       -7.05         -16.72         5.08 \r\n 2003          47            15.724       -4.628        -19.23         0 \r\n 2003          48            13.673        1.541        -15.2          0 \r\n 2003          49            14.09         2.394        -9.17          0 \r\n 2003          50            13.494        3.516        -10.12         0 \r\n 2003          51            14.233        8.75         -0.47          0 \r\n 2003          52            3.768         2.639        -8.08          0 \r\n 2003          53            10.153       -6.145        -11.41         0 \r\n 2003          54            6.634        -10.18        -16.79         0 \r\n 2003          55            15.91        -14.71        -21.61         0.25 \r\n 2003          56            16.596       -9.29         -22.95         0 \r\n 2003          57            16.303       -2.987        -17.6          0 \r\n 2003          58            15.691        1.679        -14.02         0 \r\n 2003          59            15.196        3.733        -8.9           0 \r\n 2003          60            10.415        4.206        -12            0 \r\n 2003          61            17.918       -7.51         -19.96         0 \r\n 2003          62            7.955         2.383        -8.54          0 \r\n 2003          63            11.376       -5.621        -19.5          4.57 \r\n 2003          64            15.475       -11.07        -24.08         0 \r\n 2003          65            16.929       -1.514        -17.99         0 \r\n 2003          66            17.622       -2.683        -14.54         0 \r\n 2003          67            14.194       -7.84         -16.88         0.76 \r\n 2003          68            17.02        -11.43        -18.15         0 \r\n 2003          69            12.113       -3.746        -15.34         0 \r\n 2003          70            16.114        9.49         -7.24          0 \r\n 2003          71            9.432         3.016        -5.501         0 \r\n 2003          72            13.43         8.42         -3.849         0 \r\n 2003          73            17.843        16.99         2.022         0 \r\n 2003          74            17.395        21.57         3.354         0 \r\n 2003          75            17.803        20.58         5.475         0 \r\n 2003          76            14.82         22.03         3.723         0 \r\n 2003          77            10.607        16.32         5.274         0 \r\n 2003          78            8.771         11.62         3.374         0 \r\n 2003          79            6.166         7.19         -0.493         11.68 \r\n 2003          80            15.71         9.76         -1.413         0 \r\n 2003          81            20.432        15.16        -3.299         0 \r\n 2003          82            17.209        22.62         1.971         0 \r\n 2003          83            8.105         10.17         3.237         0 \r\n 2003          84            19.638        15.436       -0.262         0 \r\n 2003          85            9.86          15.746        0.813         0.76 \r\n 2003          86            2.379         8.379         4.694         32.26 \r\n 2003          87            10.519        6.809         0.809         0 \r\n 2003          88            18.453        5.992        -0.949         0 \r\n 2003          89            22.243        9.924        -2.947         0 \r\n 2003          90            15.05         21.957        0.002         0 \r\n 2003          91            21.818        28.248        6.81          0 \r\n 2003          92            20.218        24.836        7.162         0 \r\n 2003          93            15.747        15.016        2.032         0 \r\n 2003          94            4.314         1.031        -1.884         0 \r\n 2003          95            19.762        0.949        -3.332         0 \r\n 2003          96            6.12          3.412        -2.343         26.543 \r\n 2003          97            14.109       -1.362        -1.788         0 \r\n 2003          98            25.94         2.937        -5.069         1.27 \r\n 2003          99            25.452        10.128       -4.122         0 \r\n 2003          100           24.298        19.638        1.833         0 \r\n 2003          101           24.368        21.006        3.824         0 \r\n 2003          102           25.018        21.507        4.907         0 \r\n 2003          103           22.959        26.811        6.613         0 \r\n 2003          104           22.478        29.43         10.257        0 \r\n 2003          105           16.622        27.33         13.68         0 \r\n 2003          106           11.059        19.47         4.317         10.16 \r\n 2003          107           8.09          7.38          2.384         0.254 \r\n 2003          108           3.513         9.59          2.364         3.556 \r\n 2003          109           3.21          10.78         5.842         1.778 \r\n 2003          110           4.302         6.72          4.666         0 \r\n 2003          111           25.514        17.57         4.514         0 \r\n 2003          112           25.771        19.51         1.132         0 \r\n 2003          113           20.673        21.01         5.875         0 \r\n 2003          114           3.036         12.4          7.44          8.382 \r\n 2003          115           25.071        21.16         5.209         0 \r\n 2003          116           25.444        22.77         4.821         0 \r\n 2003          117           18.93         23.05         7.65          0 \r\n 2003          118           24.891        21.19         8.36          0 \r\n 2003          119           12.866        17.52         8.66          0.508 \r\n 2003          120           5.12          11.67         7.3           13.716 \r\n 2003          121           12.594        17.37         7.53          0 \r\n 2003          122           16.067        18.36         8.1           0 \r\n 2003          123           20.642        22.49         7.31          0 \r\n 2003          124           2.305         14.12         7.74          31.242 \r\n 2003          125           10.008        13.31         6.226         1.778 \r\n 2003          126           19.457        16.75         5.408         0 \r\n 2003          127           26.251        22.07         3.761         0 \r\n 2003          128           7.264         12.61         9.09          3.048 \r\n 2003          129           13.295        16.13         6.808         0.254 \r\n 2003          130           5.08          11.04         5.113         19.558 \r\n 2003          131           11.468        13.54         4.497         0.762 \r\n 2003          132           26.82         19.29         3.093         0 \r\n 2003          133           18.031        20.4          9.67          14.732 \r\n 2003          134           16.448        18.18         7.76          0 \r\n 2003          135           10.699        17.14         8.35          0 \r\n 2003          136           25.095        21.07         5.94          0 \r\n 2003          137           26.844        23.93         7.38          0 \r\n 2003          138           21.119        25.51         13.29         0 \r\n 2003          139           6.88          18.32         5.322         14.732 \r\n 2003          140           28.262        15.38         3.092         0 \r\n 2003          141           27.212        18.81         3.932         0 \r\n 2003          142           8.276         18.43         8.04          0 \r\n 2003          143           21.51         19.24         9.2           0 \r\n 2003          144           5.487         16.09         11.4          0 \r\n 2003          145           27.196        23.05         8.31          0 \r\n 2003          146           26.798        25.35         8.55          0 \r\n 2003          147           25.409        26.86         9.92          1.016 \r\n 2003          148           25.229        28.04         13.47         0 \r\n 2003          149           19.312        26.9          10.34         0 \r\n 2003          150           26.727        27.25         13.37         0 \r\n 2003          151           23.747        21.6          10.3          0 \r\n 2003          152           9.709         21.03         12.83         0 \r\n 2003          153           4.512         17.34         9.65          14.986 \r\n 2003          154           16.997        17.05         6.827         0 \r\n 2003          155           22.609        21.44         11.16         0.508 \r\n 2003          156           22.267        24.35         11.35         3.556 \r\n 2003          157           11.441        19.12         11.97         9.906 \r\n 2003          158           9.853         18.56         10.02         2.286 \r\n 2003          159           11.913        20.04         11.72         2.286 \r\n 2003          160           18.255        26.06         9.17          3.81 \r\n 2003          161           11.131        22.21         13.12         0 \r\n 2003          162           15.277        24.54         10.67         0 \r\n 2003          163           15.647        28.62         16.05         0 \r\n 2003          164           18.025        29.14         14.24         0 \r\n 2003          165           19.585        29.64         16.05         0 \r\n 2003          166           17.511        30.01         16.3          0 \r\n 2003          167           13.872        30.88         15.66         0 \r\n 2003          168           15.087        30.11         17.63         34.798 \r\n 2003          169           15.139        27.42         14.82         0 \r\n 2003          170           23.562        26.64         12.23         0 \r\n 2003          171           24.31         27.08         12.54         0 \r\n 2003          172           14.084        27.97         16.51         1.016 \r\n 2003          173           8.455         28.12         18.44         3.048 \r\n 2003          174           19.555        30.84         17.32         43.942 \r\n 2003          175           17.468        31.6          18.33         2.032 \r\n 2003          176           4.165         21.16         11.23         57.658 \r\n 2003          177           24.95         21.62         10.39         0 \r\n 2003          178           21.015        28.22         10.93         1.27 \r\n 2003          179           22.104        26.98         14.97         0.508 \r\n 2003          180           18.676        26.96         12.62         0.254 \r\n 2003          181           19.871        27.6          13.02         0 \r\n 2003          182           19.569        29.45         16.19         0 \r\n 2003          183           19.34         31.74         18.77         0 \r\n 2003          184           20.086        33.17         19.62         9.652 \r\n 2003          185           10.504        26.37         16.95         10.414 \r\n 2003          186           20.973        29.01         17.64         4.064 \r\n 2003          187           18.361        29.18         16.82         8.89 \r\n 2003          188           16.688        28.9          18.62         0 \r\n 2003          189           17.837        23.66         13.83         22.86 \r\n 2003          190           21.087        27.28         17.75         47.752 \r\n 2003          191           21.262        25.08         13.92         0 \r\n 2003          192           24.954        25.98         13.16         0 \r\n 2003          193           23.646        25.71         12.07         0 \r\n 2003          194           23.474        27.41         14.3          0 \r\n 2003          195           17.146        31.4          18.52         0 \r\n 2003          196           24.799        28.17         14.81         0 \r\n 2003          197           16.563        28.86         16.24         0 \r\n 2003          198           19.572        30.24         17.98         0 \r\n 2003          199           12.449        26.12         17.89         0 \r\n 2003          200           15.435        28.2          14.07         0 \r\n 2003          201           8.857         28.63         17.96         22.352 \r\n 2003          202           15.258        23.41         14.84         0 \r\n 2003          203           17.726        24.01         12.16         1.524 \r\n 2003          204           24.64         24.64         9.97          0 \r\n 2003          205           21.62         26.51         12.21         0 \r\n 2003          206           22.174        31.2          18.45         0 \r\n 2003          207           20.512        32.98         20.68         0 \r\n 2003          208           12.323        25.91         16.96         0 \r\n 2003          209           22.97         27.69         14.99         0 \r\n 2003          210           21.266        27.52         12.85         0 \r\n 2003          211           22.863        28.88         15.11         0 \r\n 2003          212           22.44         30.56         15.08         0 \r\n 2003          213           22.254        27.45         15.17         0 \r\n 2003          214           22.473        26.67         13.16         0 \r\n 2003          215           21.789        26.82         13.3          0 \r\n 2003          216           17.901        26.33         12.84         0.254 \r\n 2003          217           15.104        26.49         17.96         3.302 \r\n 2003          218           17.465        26.53         16.58         0.254 \r\n 2003          219           23.242        28.75         15.02         0 \r\n 2003          220           21.039        27.37         14.92         0 \r\n 2003          221           22.236        28.13         13.87         0 \r\n 2003          222           18.349        28.6          14.7          0 \r\n 2003          223           22.256        28.61         14.71         0 \r\n 2003          224           22.434        26.65         14.04         0 \r\n 2003          225           19.589        27.19         13.33         0 \r\n 2003          226           19.962        28.53         15.65         0 \r\n 2003          227           21.639        30.78         17.89         0 \r\n 2003          228           21.628        35.01         17.16         0 \r\n 2003          229           20.701        34.13         20.36         0 \r\n 2003          230           15.624        33.73         21.16         0.508 \r\n 2003          231           17.971        30.27         18.8          0.508 \r\n 2003          232           20.037        31.23         20.5          0.508 \r\n 2003          233           20.733        27.31         13.73         0 \r\n 2003          234           20.114        26.87         11.91         0 \r\n 2003          235           20.056        30.09         17.43         0 \r\n 2003          236           20.298        33.95         19.65         0 \r\n 2003          237           17.285        34.48         18.66         6.604 \r\n 2003          238           20.384        32.98         15.66         0 \r\n 2003          239           21.751        31.7          13.88         0 \r\n 2003          240           12.608        29.42         13.49         0 \r\n 2003          241           20.016        25.37         12.25         0 \r\n 2003          242           17.125        22.45         10.39         0 \r\n 2003          243           10.299        22.78         11.48         0 \r\n 2003          244           20.855        25.09         9.89          0 \r\n 2003          245           20.49         29.29         10.6          0 \r\n 2003          246           21.071        24.55         8.65          0 \r\n 2003          247           21.444        25.56         4.714         0 \r\n 2003          248           19.389        30.32         10.83         0 \r\n 2003          249           19.422        31.64         13.76         0 \r\n 2003          250           19.674        29.97         10.39         0 \r\n 2003          251           20.483        28.06         10.7          0 \r\n 2003          252           6.559         22.87         16.1          16.764 \r\n 2003          253           5.091         26.78         17.69         4.318 \r\n 2003          254           2.913         19.45         10.64         13.97 \r\n 2003          255           19.673        25.43         7.28          0.254 \r\n 2003          256           12.589        20.57         8.86          0 \r\n 2003          257           16.279        20.64         6.043         0 \r\n 2003          258           19.576        26.71         4.837         0 \r\n 2003          259           18.526        29.37         11.22         0 \r\n 2003          260           16.97         29.4          18.3          0 \r\n 2003          261           3.4           22.97         3.042         10.922 \r\n 2003          262           19.18         18.96         0.562         0 \r\n 2003          263           18.118        22.58         6.186         0 \r\n 2003          264           5.25          18.73         8.34          5.588 \r\n 2003          265           12.6          18.22         3.598         0.508 \r\n 2003          266           16.62         26.21         2.301         0 \r\n 2003          267           17.882        18.55         2.534         0 \r\n 2003          268           14.708        18.42        -1.695         0 \r\n 2003          269           8.728         19.96         4.44          1.27 \r\n 2003          270           8.705         13.82         3.844         0 \r\n 2003          271           17.143        14.57        -1.6           0 \r\n 2003          272           14.455        17.04        -1.506         0 \r\n 2003          273           16.056        15.55        -1.61          0 \r\n 2003          274           16.725        13.03        -4.019         0 \r\n 2003          275           15.451        17.58        -2.277         0 \r\n 2003          276           13.64         18.58         6.122         0 \r\n 2003          277           15.636        25.59         4.222         0 \r\n 2003          278           15.548        27.56         5.295         0 \r\n 2003          279           15.39         29.35         6.341         0 \r\n 2003          280           15.066        27.45         9.44          0 \r\n 2003          281           13.478        27.77         14.29         0 \r\n 2003          282           14.006        26.37         14.7          0 \r\n 2003          283           10.024        23.05         12.91         0 \r\n 2003          284           5.46          17.79         6.179         14.22 \r\n 2003          285           14.877        20.31         2.1           0 \r\n 2003          286           3.374         16.59         5.805         0 \r\n 2003          287           13.223        17.21         2.412         0 \r\n 2003          288           10.892        15.69        -1.573         0 \r\n 2003          289           5.345         9.56         -1.235         0 \r\n 2003          290           12.705        16.27        -1.959         0 \r\n 2003          291           13.572        29.17         5.813         0 \r\n 2003          292           13.468        30.71         5.22          0 \r\n 2003          293           12.383        26.57         8.06          0 \r\n 2003          294           10.038        24.62         4.698         0 \r\n 2003          295           12.459        26.02         3.254         0 \r\n 2003          296           11.832        16.67         0.205         0 \r\n 2003          297           7.154         16.3          2.085         0 \r\n 2003          298           6.823         7.82         -0.877         0 \r\n 2003          299           7.704         5.445        -7.93          0 \r\n 2003          300           5.272         9.35         -6.833         0 \r\n 2003          301           6.375         8.27          0.034         7.11 \r\n 2003          302           5.409         6.863        -1.319         0 \r\n 2003          303           4.184         7.23          1.829         0 \r\n 2003          304           5.412         4.64         -1.659         0 \r\n 2003          305           3.303         0.674        -2.58          0 \r\n 2003          306           9.148         8.36         -0.537         0 \r\n 2003          307           1.761         0.589        -0.718         10.92 \r\n 2003          308           3.781         1.654        -3.337         0 \r\n 2003          309           6.143        -1.524        -9.62          0 \r\n 2003          310           10.159        2.961        -11.53         0 \r\n 2003          311           10.382       -1.959        -12.86         0 \r\n 2003          312           9.858         0.515        -12.55         0 \r\n 2003          313           9.5           7.31         -7.75          0 \r\n 2003          314           1.835         7.93          1.726         0 \r\n 2003          315           9.029         15.51        -1.762         0 \r\n 2003          316           7.354         6.218        -3.016         0 \r\n 2003          317           10.179        7.06         -8.73          0 \r\n 2003          318           5.643         8.5          -0.144         0 \r\n 2003          319           7.531         9.15         -0.99          0 \r\n 2003          320           8.234         12.09         1.799         0 \r\n 2003          321           1.551         13.76         4.951         2.03 \r\n 2003          322           9.245         10.8          0.324         0 \r\n 2003          323           9.135         18.09         0.363         0 \r\n 2003          324           8.176         16.58         0             0 \r\n 2003          325           5.705         2.856        -4.257         0 \r\n 2003          326           0.723        -0.781        -1.675         0.51 \r\n 2003          327           5.303        -1.637        -12.19         5.84 \r\n 2003          328           8.973        -3.381        -16.18         0 \r\n 2003          329           8.143         2.97         -7.59          0 \r\n 2003          330           7.231         4.122        -8.34          0 \r\n 2003          331           8.672         1.989        -7.41          0 \r\n 2003          332           6.707        -4.305        -13.21         0 \r\n 2003          333           7.551         7.81         -12.98         0 \r\n 2003          334           8.297         10.53        -3.403         0 \r\n 2003          335           6.75          5.447        -7.14          0 \r\n 2003          336           2.099         2.265        -2.288         0 \r\n 2003          337           5.567        -1.261        -10.82         15.24 \r\n 2003          338           4.659        -0.612        -11.01         0 \r\n 2003          339           4.735        -2.637        -7.73          5.08 \r\n 2003          340           4.792        -2.494        -5.517         0 \r\n 2003          341           4.417         1.841        -5.241         0 \r\n 2003          342           5.954         1.211        -2.164         0 \r\n 2003          343           2.639        -0.254        -9.67          4.57 \r\n 2003          344           8.184        -9.61         -15.62         0 \r\n 2003          345           7.704        -13.38        -18.79         0 \r\n 2003          346           5.84         -6.904        -17.78         0 \r\n 2003          347           4.852        -3.28         -12.67         0 \r\n 2003          348           3.762        -2.903        -4.115         0 \r\n 2003          349           2.104         0.063        -4.724         0 \r\n 2003          350           6.648        -4.677        -11.65         3.56 \r\n 2003          351           3.377         2.374        -12.68         1.52 \r\n 2003          352           7.795         1.697        -4.229         0 \r\n 2003          353           6.886        -3.537        -10.76         0 \r\n 2003          354           7.615         3.529        -8.63          0 \r\n 2003          355           6.777         3.042        -2.475         0 \r\n 2003          356           4.647         2.874        -4.884         0 \r\n 2003          357           5.898        -2.483        -12.83         0 \r\n 2003          358           6.304         0.223        -15.48         0 \r\n 2003          359           6.163         2.317        -8.17          0 \r\n 2003          360           4.635         3.77         -0.077         0 \r\n 2003          361           6.739         11.03        -0.02          0 \r\n 2003          362           3.011         1.25         -2.126         0 \r\n 2003          363           4.409        -1.957        -10.01         0 \r\n 2003          364           6.479         6.111        -10.13         0 \r\n 2003          365           7.172        -1.556        -12.71         0 \r\n 2004          1             7.677         6.999        -4.903         0 \r\n 2004          2             4.195         9.7          -6.696         0 \r\n 2004          3             4.474        -6.706        -11.62         0 \r\n 2004          4             3.505        -10.31        -17.71         0 \r\n 2004          5             6.892        -16.88        -22.26         0.51 \r\n 2004          6             8.196        -5.004        -20.42         0 \r\n 2004          7             7.158        -3.848        -18.88         0 \r\n 2004          8             2.873        -3.561        -12.09         0.25 \r\n 2004          9             5.064        -5.604        -16.65         0 \r\n 2004          10            2.938        -3.667        -9.39          0 \r\n 2004          11            7.331         8.89         -7.43          0 \r\n 2004          12            7.786         8.21         -7.6           0 \r\n 2004          13            7.866         0.793        -8.64          0 \r\n 2004          14            7.399         3.439        -11.9          0 \r\n 2004          15            8.048         5.143        -13.22         0 \r\n 2004          16            5.604         4.744        -5.539         0 \r\n 2004          17            4.593         3.902        -9.02          0 \r\n 2004          18            8.557        -9.05         -19.61         0 \r\n 2004          19            5.797        -10.5         -19.54         0 \r\n 2004          20            3.177        -5.598        -11.81         0.25 \r\n 2004          21            6.094         3.688        -14.44         0 \r\n 2004          22            8.902        -7.64         -20.46         0 \r\n 2004          23            7.035         9.87         -9.65          0 \r\n 2004          24            5.588        -6.784        -13.48         0 \r\n 2004          25            2.451        -5.366        -10.38         3.05 \r\n 2004          26            5.985        -8.15         -19.05         15.49 \r\n 2004          27            10.413       -19.06        -27.84         0 \r\n 2004          28            7.513        -17.48        -23.95         0 \r\n 2004          29            9.304        -21.07        -25.31         0.76 \r\n 2004          30            10.115       -21.97        -26.1          0.76 \r\n 2004          31            6.5          -12.57        -22            0.76 \r\n 2004          32            6.853        -9.38         -12.57         5.59 \r\n 2004          33            8.22         -9.9          -20.19         10.41 \r\n 2004          34            11.205       -14.75        -26.04         0 \r\n 2004          35            6.588        -7.29         -19.2          2.29 \r\n 2004          36            5.444        -5.974        -8.93          7.87 \r\n 2004          37            9.408        -6.949        -15.17         5.84 \r\n 2004          38            12.081       -14.9         -22.26         0 \r\n 2004          39            8.315        -5.914        -21.21         0 \r\n 2004          40            11.21        -2.874        -12            0 \r\n 2004          41            12.291       -3.589        -17.17         0 \r\n 2004          42            12.183       -0.378        -11.5          0 \r\n 2004          43            12.654       -11.13        -17.45         0 \r\n 2004          44            13.078       -5.607        -16.54         0 \r\n 2004          45            13.192       -10.15        -20.24         0 \r\n 2004          46            13.347       -11.6         -24.23         0 \r\n 2004          47            12.681       -4.973        -15.51         0 \r\n 2004          48            10.269       -4.744        -17.39         0 \r\n 2004          49            13.275        3.581        -5.008         0 \r\n 2004          50            8.966         3.799        -4.702         0 \r\n 2004          51            6.193         0.525        -1.006         0 \r\n 2004          52            14.434        3.128        -7.12          0 \r\n 2004          53            14.075        5.246        -2.155         0 \r\n 2004          54            6.947         0.545        -1.014         0 \r\n 2004          55            5.631        -0.104        -2.108         0 \r\n 2004          56            5.079        -0.257        -3.182         0 \r\n 2004          57            15.158        3.26         -5.142         0 \r\n 2004          58            14.257        4.937        -1.138         0 \r\n 2004          59            11.05         7.66          1.823         0 \r\n 2004          60            2.739         7.65          3.204         0 \r\n 2004          61            4.71          7.98          0.252         6.1 \r\n 2004          62            3.73          1.861        -1.325         0 \r\n 2004          63            3.887         1.221        -1.298         2.03 \r\n 2004          64            2.534         1.841        -0.687         0 \r\n 2004          65            3.946         2.075        -0.978         14.99 \r\n 2004          66            11.422        9.55         -3.116         0 \r\n 2004          67            13.782        4.984        -1.081         0 \r\n 2004          68            15.778        13.42        -3.703         0 \r\n 2004          69            18.053        10.05        -1.533         0 \r\n 2004          70            8.133         9.5          -0.245         0 \r\n 2004          71            13.891        0.385        -12.83         0 \r\n 2004          72            18.478        8.67         -11.32         0 \r\n 2004          73            9.147         14.66         0.902         0 \r\n 2004          74            12.178        6.186        -2.096         0 \r\n 2004          75            9.548        -1.129        -3.59          3.81 \r\n 2004          76            14.251       -0.537        -7.36          1.78 \r\n 2004          77            14.787        5.997        -6.619         0 \r\n 2004          78            14.437        7.25         -1.597         0 \r\n 2004          79            15.506        18.58        -0.714         0 \r\n 2004          80            19.901        12.37        -4.735         0 \r\n 2004          81            19.285        1.668        -7.87          0 \r\n 2004          82            18.001        9.57         -6.881         0 \r\n 2004          83            17.199        17.63        -2.786         0 \r\n 2004          84            14.301        25.11         0.655         0 \r\n 2004          85            2.582         19.79         12.8          0 \r\n 2004          86            7.681         16.8          6.331         0 \r\n 2004          87            2.049         16.73         11.18         21.08 \r\n 2004          88            5.555         11.42         4.052         15.24 \r\n 2004          89            18.641        11.51        -1.477         0 \r\n 2004          90            12.861        6.38         -2.663         0 \r\n 2004          91            21.942        11.1         -5.02          0 \r\n 2004          92            22.512        13.96        -3.656         0 \r\n 2004          93            22.721        17.53        -2.456         0 \r\n 2004          94            22.504        13.38         0.777         0 \r\n 2004          95            22.602        14.65        -6.124         0 \r\n 2004          96            20.382        22.33         1.782         0 \r\n 2004          97            23.015        20.47         5.066         0 \r\n 2004          98            16.642        23.04         2.622         0 \r\n 2004          99            23.632        14.3         -1.844         0 \r\n 2004          100           8.278         10.48        -0.058         0.254 \r\n 2004          101           22.033        6.994        -5.395         0 \r\n 2004          102           12.267        5.888        -4.123         0 \r\n 2004          103           18.572        10.17        -5.174         0 \r\n 2004          104           24.156        16.18        -5.219         0 \r\n 2004          105           24.1          22.51        -0.61          0 \r\n 2004          106           14.908        24.41         0             0 \r\n 2004          107           20.931        30.45         6.731         0 \r\n 2004          108           20.142        27.08         6.09          0 \r\n 2004          109           20.346        29.32         9.93          22.606 \r\n 2004          110           15.252        13.49         5.758         0 \r\n 2004          111           5.402         16.64         5.74          11.938 \r\n 2004          112           14.474        14.75         4.829         2.54 \r\n 2004          113           13.633        13.93         2.562         0 \r\n 2004          114           16.91         17.66         4.044         0 \r\n 2004          115           3.874         13.05         2.845         23.622 \r\n 2004          116           20.255        15.87         5.103         4.064 \r\n 2004          117           25.252        14.43         1.156         0 \r\n 2004          118           23.027        24.09        -1.449         0 \r\n 2004          119           24.624        30.18         11.52         0 \r\n 2004          120           10.96         20.03         3.939         0 \r\n 2004          121           11.199        14.34         5.711         0 \r\n 2004          122           21.557        12.93        -1.066         0 \r\n 2004          123           16.708        10.99        -0.397         0 \r\n 2004          124           21.837        17.96        -2.015         0 \r\n 2004          125           24.337        20.55         7.32          0 \r\n 2004          126           22.772        31.45         6.769         0 \r\n 2004          127           19.308        25.5          12.18         0 \r\n 2004          128           11.035        17.16         9.15          0 \r\n 2004          129           22.335        27.33         8.51          0 \r\n 2004          130           23.34         30.88         16.98         0.762 \r\n 2004          131           22.586        25.16         15.03         2.54 \r\n 2004          132           22.859        28.75         14.92         0 \r\n 2004          133           15.343        21.49         7.8           0.508 \r\n 2004          134           11.66         8.31          1.884         9.398 \r\n 2004          135           26.881        14.2         -0.191         0 \r\n 2004          136           10.577        16            0.647         0 \r\n 2004          137           9.994         23.5          7.46          2.032 \r\n 2004          138           4.687         16.86         9.26          10.414 \r\n 2004          139           11.811        21.34         8.07          0 \r\n 2004          140           0.43          19.44         11.55         3.556 \r\n 2004          141           5.153         22.53         15.04         0 \r\n 2004          142           6.108         25.12         14.18         85.598 \r\n 2004          143           16.624        23.5          13.12         15.748 \r\n 2004          144           8.363         13.2          8.5           7.62 \r\n 2004          145           7.134         15            7.37          2.54 \r\n 2004          146           12.981        14.75         5.988         0 \r\n 2004          147           20.687        21.71         6.008         0 \r\n 2004          148           20.04         25.21         11.92         0 \r\n 2004          149           17.871        26.74         10.35         6.604 \r\n 2004          150           13.884        26.94         16.84         1.778 \r\n 2004          151           7.792         19.56         12.35         3.302 \r\n 2004          152           21.495        22.47         10.92         2.032 \r\n 2004          153           7.084         17.87         11.51         3.048 \r\n 2004          154           14.052        19.61         10.219        0 \r\n 2004          155           19.934        25.29         12.28         0 \r\n 2004          156           19.841        17.84         11.878        0 \r\n 2004          157           14.218        24.507        14.657        2.54 \r\n 2004          158           20.501        27.883        14.683        0 \r\n 2004          159           25.133        31.962        18.847        0 \r\n 2004          160           9.729         30.779        18.889        5.588 \r\n 2004          161           12.414        27.09         14.92         0 \r\n 2004          162           9.1           25.24         16.61         1.27 \r\n 2004          163           17.706        27.91         16.45         14.224 \r\n 2004          164           14.811        27.96         14.25         0 \r\n 2004          165           18.495        28.18         13.64         0 \r\n 2004          166           27.254        25.62         14.25         8.128 \r\n 2004          167           24.132        28.38         13.62         0 \r\n 2004          168           7.78          21.3          13.28         12.7 \r\n 2004          169           20.712        23.87         12.99         0 \r\n 2004          170           16.274        18.14         11.23         1.778 \r\n 2004          171           21.39         19.66         5.915         0 \r\n 2004          172           11.176        19.81         11.63         0 \r\n 2004          173           22.212        23.82         10.3          1.016 \r\n 2004          174           26.003        25.74         8.29          0 \r\n 2004          175           24.28         27.5          13.77         0 \r\n 2004          176           18.339        17.6          8.12          2.286 \r\n 2004          177           25.987        23.54         5.97          0 \r\n 2004          178           21.596        25.11         8.45          0 \r\n 2004          179           11.141        21.95         10.24         0 \r\n 2004          180           26.29         24.82         7.22          0 \r\n 2004          181           24.936        26.95         10.84         0 \r\n 2004          182           23.215        28.35         13.38         0 \r\n 2004          183           23.05         30.06         0             0 \r\n 2004          184           13.905        27.32         18.3          11.684 \r\n 2004          185           17.684        25.49         18.5          5.334 \r\n 2004          186           25.253        28.87         16.54         0.508 \r\n 2004          187           5.183         21.64         15.31         63.246 \r\n 2004          188           10.165        18.78         12.86         0 \r\n 2004          189           18.978        21.6          11.46         0 \r\n 2004          190           17.19         23.41         12.57         0 \r\n 2004          191           19.414        28.09         17.86         0 \r\n 2004          192           13.911        28.74         19.91         0 \r\n 2004          193           21.858        30.89         20.34         0 \r\n 2004          194           22.073        30.25         17.61         26.924 \r\n 2004          195           26.415        27.69         16.16         50.546 \r\n 2004          196           26.339        27.11         15.4          0 \r\n 2004          197           20.478        27.97         15.66         3.048 \r\n 2004          198           25.127        27.46         17.66         0 \r\n 2004          199           21.579        26.08         15.84         0 \r\n 2004          200           26.244        27.45         14.61         0 \r\n 2004          201           25.128        31.15         17.71         0 \r\n 2004          202           20.547        31.28         19.1          0 \r\n 2004          203           21.602        31.12         22.63         7.874 \r\n 2004          204           15.475        27.57         17.3          0 \r\n 2004          205           23.709        22.7          13.32         0 \r\n 2004          206           20.995        22.56         11.69         0 \r\n 2004          207           21.119        23.86         8.81          0 \r\n 2004          208           20.952        24.03         9.92          0 \r\n 2004          209           24.59         25.49         12.44         0 \r\n 2004          210           10.3          22.89         16.4          3.302 \r\n 2004          211           25.186        27.1          13.75         0 \r\n 2004          212           21.721        25.68         12.97         0 \r\n 2004          213           23.301        29.75         13.33         53.594 \r\n 2004          214           23.565        28.74         16.79         0 \r\n 2004          215           21.293        29.57         17.48         0.508 \r\n 2004          216           8.608         25.86         18.73         8.636 \r\n 2004          217           10.964        22.87         14.56         0 \r\n 2004          218           25.521        22.88         12.02         0 \r\n 2004          219           24.055        24.37         10.67         0 \r\n 2004          220           24.384        25.83         15.78         0 \r\n 2004          221           16.773        27.96         16.34         0 \r\n 2004          222           22.017        21.92         12.61         0 \r\n 2004          223           20.015        19.81         10.58         0 \r\n 2004          224           13.701        16.54         8.03          0 \r\n 2004          225           17.978        19.8          7.32          0 \r\n 2004          226           14.739        20.72         6.475         0 \r\n 2004          227           21.715        23            6.169         0 \r\n 2004          228           19.058        23.23         8.29          0 \r\n 2004          229           19.358        26.94         15.11         8.636 \r\n 2004          230           19.893        25.38         13.98         0.508 \r\n 2004          231           14.629        24.85         8.84          3.048 \r\n 2004          232           22.735        19.77         5.277         0 \r\n 2004          233           23.399        21.35         8.49          0 \r\n 2004          234           22.702        24.61         5.059         0 \r\n 2004          235           18.092        28.65         16.42         0 \r\n 2004          236           15.722        28.02         15.89         6.858 \r\n 2004          237           15.838        27.26         17.83         0 \r\n 2004          238           14.819        25.1          16.6          0 \r\n 2004          239           17.507        29.5          15.68         0 \r\n 2004          240           16.219        24.89         13.87         0 \r\n 2004          241           12.282        21.41         11.5          1.27 \r\n 2004          242           19.995        24.31         9.78          2.54 \r\n 2004          243           22.998        27.47         10.4          0.254 \r\n 2004          244           19.425        28.96         14.08         5.334 \r\n 2004          245           21.819        30.37         15.52         0 \r\n 2004          246           21.652        28.29         16.65         0 \r\n 2004          247           20.826        28.6          16.59         0 \r\n 2004          248           19.251        28.39         17.42         0 \r\n 2004          249           7.991         26.05         15.38         12.954 \r\n 2004          250           21.854        22.68         10.04         0 \r\n 2004          251           21.588        20.62         6.665         0 \r\n 2004          252           15.488        21.67         10.03         0 \r\n 2004          253           18.428        24.82         12.43         0 \r\n 2004          254           16.617        28.69         15.3          0 \r\n 2004          255           19.717        28.1          13.78         0 \r\n 2004          256           19.211        29.75         13.72         0 \r\n 2004          257           14.8          30.2          18.06         9.398 \r\n 2004          258           2.523         20.52         17.52         119.634 \r\n 2004          259           14.361        21.23         11.3          21.336 \r\n 2004          260           19.542        22.99         7.04          0 \r\n 2004          261           4.311         17.69         11.57         26.924 \r\n 2004          262           17.594        28.25         12.31         0 \r\n 2004          263           17.916        30.07         18.83         0 \r\n 2004          264           16.464        27.69         18            0 \r\n 2004          265           1.912         19.97         15.72         41.656 \r\n 2004          266           17.177        27.35         17.01         2.54 \r\n 2004          267           10.68         21.54         11.55         5.842 \r\n 2004          268           18.512        22.62         9.85          0 \r\n 2004          269           18.383        23.22         7.47          0 \r\n 2004          270           17.38         25.63         8.8           0 \r\n 2004          271           11.716        25.21         11.05         0 \r\n 2004          272           18.579        19.29         5.078         0 \r\n 2004          273           18.159        20.6          4.914         0 \r\n 2004          274           13.876        25.63         10.39         0 \r\n 2004          275           4.734         18.14         0.731         6.1 \r\n 2004          276           17.166        15.16        -2.777         0 \r\n 2004          277           16.893        24.18         5.207         0 \r\n 2004          278           16.867        13.07        -0.527         0 \r\n 2004          279           16.086        21.73         1.954         0 \r\n 2004          280           10.608        22.75         7.76          0 \r\n 2004          281           3.688         18.06         12.19         3.81 \r\n 2004          282           15.293        21.26         6.878         22.1 \r\n 2004          283           15.952        20.97         3.178         0 \r\n 2004          284           13.888        21.37         3.969         0 \r\n 2004          285           9.523         16.35         5.26          0 \r\n 2004          286           9.523         17.36         3.148         0 \r\n 2004          287           9.618         12.13         4.989         0 \r\n 2004          288           12.142        10.38         0.39          0 \r\n 2004          289           6.327         8.91          1.766         0 \r\n 2004          290           14.543        8.41         -2.203         0 \r\n 2004          291           9.711         13.61         0.803         0 \r\n 2004          292           6.962         13.62         4.82          0 \r\n 2004          293           8.471         14.46         5.797         0 \r\n 2004          294           2.085         10.4          8.14          0 \r\n 2004          295           2.14          12.31         8.49          0 \r\n 2004          296           3.472         22.18         12.3          1.52 \r\n 2004          297           6.81          18.75         4.554         0 \r\n 2004          298           12.44         22.58         2.867         0 \r\n 2004          299           12.448        14.59         2.893         0 \r\n 2004          300           3.718         13.16         5.305         0 \r\n 2004          301           2.546         12            6.597         0 \r\n 2004          302           1.52          19.53         10.61         1.52 \r\n 2004          303           8.584         24.65         7.26          0 \r\n 2004          304           3.406         7.75         -0.183         1.52 \r\n 2004          305           11.389        13.65        -2.912         0 \r\n 2004          306           1.867         7.92          5.226         15.24 \r\n 2004          307           9.106         9.89         -0.274         0.76 \r\n 2004          308           11.65         9.55         -1.958         0 \r\n 2004          309           11.763        10.22        -1.26          0 \r\n 2004          310           10.624        16.6         -3.612         0 \r\n 2004          311           11.099        22.28         2.855         0 \r\n 2004          312           10.557        9.79         -0.689         0 \r\n 2004          313           7.994         12.15        -1.035         0 \r\n 2004          314           6.338         17.87         3.091         0 \r\n 2004          315           1.381         13.34        -0.803         0 \r\n 2004          316           10.804        4.857        -6.308         0 \r\n 2004          317           9.938         7.32         -8.43          0 \r\n 2004          318           9.975         9.44         -4.483         0 \r\n 2004          319           6.699         8.05         -3.177         0 \r\n 2004          320           8.944         13.4         -1.253         0 \r\n 2004          321           4.673         16.98         5.084         0 \r\n 2004          322           5.624         16.89         6.065         0 \r\n 2004          323           2.339         9.02          5.359         2.79 \r\n 2004          324           1.277         10.16         4.572         16.26 \r\n 2004          325           5.164         4.809        -2.278         2.79 \r\n 2004          326           5.023         4.839        -4.142         0 \r\n 2004          327           5.996         8.77          1.043         0 \r\n 2004          328           7.821         2.713        -4.637         0 \r\n 2004          329           7.907         0.777        -7.23          0 \r\n 2004          330           4.998         6.351        -8.85          0 \r\n 2004          331           4.39          10.21         0.759         0 \r\n 2004          332           2.525         2.167        -3.953         10.67 \r\n 2004          333           4.259         0.3          -8.29          0 \r\n 2004          334           5.305        -0.273        -8.24          0 \r\n 2004          335           8.535         2.077        -11.34         0 \r\n 2004          336           7.997         4.15         -8.97          0 \r\n 2004          337           7.764         5.201        -4.925         0 \r\n 2004          338           5.874         6.79         -5.96          0 \r\n 2004          339           7.458         9.16         -2.25          0 \r\n 2004          340           3.126         1.83         -4.725         0 \r\n 2004          341           1.226         3.809         0.544         0 \r\n 2004          342           2.546         3.071        -2.137         0 \r\n 2004          343           3.831         7.33         -1.13          0 \r\n 2004          344           3.546         6.417        -2.201         0 \r\n 2004          345           1.695         1.409        -1.26          0 \r\n 2004          346           3.416         2.822        -4.703         0 \r\n 2004          347           4.812         6.554        -4.743         0 \r\n 2004          348           8.233        -4.781        -13.64         0 \r\n 2004          349           8.156         1.603        -16.3          0 \r\n 2004          350           7.253         7.4          -6.424         0 \r\n 2004          351           7.517         3.912        -9.61          0 \r\n 2004          352           6.153         3.123        -11.82         0 \r\n 2004          353           4.678         1.748        -17.57         0 \r\n 2004          354           5.253        -9.07         -21.61         0 \r\n 2004          355           1.453         0.788        -9.11          3.05 \r\n 2004          356           7.629         0.187        -18.16         0 \r\n 2004          357           8.2          -12.58        -20.37         0 \r\n 2004          358           7.881        -15.25        -23.25         0 \r\n 2004          359           6.375        -5.757        -24.73         0 \r\n 2004          360           2.647        -2.137        -9.16          0 \r\n 2004          361           3.654        -5.529        -9.7           0 \r\n 2004          362           5.205         0.224        -9.75          0 \r\n 2004          363           3.387         0.056        -7.82          0 \r\n 2004          364           5.878         4.015        -6.677         0 \r\n 2004          365           4.55          15.5          2.131         0 \r\n 2004          366           7.766         3.466        -7.97          0 \r\n 2005          1             0.693        -1.307        -9.42          5.84 \r\n 2005          2             7.287        -4.599        -11.81         0 \r\n 2005          3             2.771        -9.71         -13.22         0 \r\n 2005          4             2.025        -9.63         -14.02         0 \r\n 2005          5             3.959        -14.02        -17.35         10.16 \r\n 2005          6             8.475        -12.7         -20.77         1.27 \r\n 2005          7             4.553        -6.224        -16.36         0 \r\n 2005          8             7.388        -7.01         -15.57         0 \r\n 2005          9             3.753        -1.194        -11.21         0 \r\n 2005          10            5.39         -8.66         -11.31         0 \r\n 2005          11            3.731        -4.029        -14.51         0 \r\n 2005          12            2.905        -3.487        -11.14         0 \r\n 2005          13            9.306        -8.04         -22.84         0 \r\n 2005          14            7.617        -19.1         -23.5          0 \r\n 2005          15            9.012        -16.15        -25.81         0 \r\n 2005          16            9.669        -13.67        -24.01         0 \r\n 2005          17            8.24         -14.03        -24.28         0 \r\n 2005          18            4.544         2.969        -14.21         0 \r\n 2005          19            4.858         2.96         -5.184         0 \r\n 2005          20            3.915        -1.656        -4.532         0 \r\n 2005          21            1.731        -0.48         -10.28         0 \r\n 2005          22            9.235        -10.29        -18.96         0 \r\n 2005          23            7.682        -3.667        -15.26         0 \r\n 2005          24            9.761         5.123        -5.873         0 \r\n 2005          25            10.05         9.96         -2.07          0 \r\n 2005          26            5.205         2.167        -8.17          0 \r\n 2005          27            2.26         -1.091        -7.01          0 \r\n 2005          28            6.302         2.595        -5.022         0 \r\n 2005          29            2.806         1.143        -2.873         0 \r\n 2005          30            4.076        -0.208        -3.289         0 \r\n 2005          31            2.632         1.538        -0.96          0 \r\n 2005          32            3.638         3.46         -2.827         0 \r\n 2005          33            9.799         6.474        -3.583         0 \r\n 2005          34            11.072        12.72        -3.195         0 \r\n 2005          35            11.394        16.33         0.581         0 \r\n 2005          36            8.915         13.55         0.647         0 \r\n 2005          37            1.886         6.902        -9.21          0.76 \r\n 2005          38            11.735       -8.28         -13.69         0 \r\n 2005          39            6.571        -8.74         -14.21         1.27 \r\n 2005          40            12.248       -6.902        -17.88         0 \r\n 2005          41            10.893       -0.087        -17.68         0 \r\n 2005          42            12.663        8.54         -7.98          0 \r\n 2005          43            9.359         11.47        -4.655         0 \r\n 2005          44            1.431         3.59          0.437         23.88 \r\n 2005          45            10.232        11.36         0.409         0.25 \r\n 2005          46            5.907         2.583        -3.043         0 \r\n 2005          47            11.307        0.403        -8.4           0 \r\n 2005          48            11.906        1.285        -9.97          0 \r\n 2005          49            13.735        4.025        -11.87         0 \r\n 2005          50            1.475         0.629        -4.445         0.25 \r\n 2005          51            2.708         3.365        -2.845         2.54 \r\n 2005          52            2.796        -2.825        -6.078         0 \r\n 2005          53            13.124        3.384        -7.21          0 \r\n 2005          54            13.554        2.093        -8.42          0 \r\n 2005          55            3.371        -1.912        -6.814         1.78 \r\n 2005          56            15.504        3.26         -6.727         0 \r\n 2005          57            14.379        7.55         -6.774         0 \r\n 2005          58            3.638         2.933        -4.821         0 \r\n 2005          59            7.135        -4.522        -9.96          0 \r\n 2005          60            16.351       -0.162        -12.91         0 \r\n 2005          61            15.456        4.034        -7.28          0 \r\n 2005          62            15.909        9.29         -7.94          0 \r\n 2005          63            15.245        10.74        -3.488         0 \r\n 2005          64            12.251        11.52        -0.783         0 \r\n 2005          65            16.486        21.39         1.471         0 \r\n 2005          66            14.034        4.565        -6.912         0 \r\n 2005          67            17.04        -0.038        -9.57          0 \r\n 2005          68            16.895        2.263        -10.96         0 \r\n 2005          69            6.618         6.372        -2.344         0.76 \r\n 2005          70            10.018        6.942        -6.211         0 \r\n 2005          71            6.38         -5.403        -11.22         0.51 \r\n 2005          72            9.619        -0.746        -13.63         0 \r\n 2005          73            14.87         0.74         -12.62         0 \r\n 2005          74            17.687        8.5          -11.18         0 \r\n 2005          75            14.021        4.933        -8.6           0 \r\n 2005          76            11.601        7.58         -5.45          0 \r\n 2005          77            4.041         0.742        -5.125         12.7 \r\n 2005          78            19.973       -1.677        -9.49          0 \r\n 2005          79            11.405        1.579        -9.01          0 \r\n 2005          80            8.215         4.56         -1.543         0 \r\n 2005          81            9.962         3.773        -2.156         0 \r\n 2005          82            19.659        9.36         -5.645         0 \r\n 2005          83            3.535         3.724        -0.247         0 \r\n 2005          84            17.367        6.188        -3.716         1.27 \r\n 2005          85            18.809        10.18        -5.953         0 \r\n 2005          86            20.023        16.71        -2.826         0 \r\n 2005          87            17.991        24.03         1.433         0 \r\n 2005          88            14.206        22.86         10.27         0 \r\n 2005          89            8.907         13.74         3.939         2.54 \r\n 2005          90            22.178        13.94         0.037         0 \r\n 2005          91            20.789        11.88        -2.251         0 \r\n 2005          92            20.67         17.04        -6.24          0 \r\n 2005          93            21.155        23.81         0.534         0 \r\n 2005          94            20.062        26.21         9.82          0 \r\n 2005          95            12.508        22.66         12.14         0 \r\n 2005          96            14.343        16.17         5.274         8.128 \r\n 2005          97            22.993        17.81         2.631         0 \r\n 2005          98            21.905        22.09         4.196         0 \r\n 2005          99            18.917        25.12         10.38         0 \r\n 2005          100           8.184         22.37         13.37         11.176 \r\n 2005          101           6.26          17.8          8.21          18.542 \r\n 2005          102           3.105         11.71         5.066         4.064 \r\n 2005          103           21.82         16.07         3.187         0 \r\n 2005          104           22.295        19.18         1.992         0 \r\n 2005          105           12.393        20.19         6.13          0 \r\n 2005          106           13.436        22.03         10.46         0 \r\n 2005          107           15.637        27.31         9.47          0 \r\n 2005          108           17.204        25.86         13.31         0.508 \r\n 2005          109           12.554        21.59         13.4          9.144 \r\n 2005          110           3.444         15.53         11.33         1.016 \r\n 2005          111           6.059         13.73         10.14         9.144 \r\n 2005          112           9.886         10.31         0.619         5.588 \r\n 2005          113           23.473        10.64        -1.675         0 \r\n 2005          114           22.698        15.13        -3.836         0 \r\n 2005          115           12.742        12.81         2.227         1.524 \r\n 2005          116           8.621         10.86         1.876         0.254 \r\n 2005          117           18.521        12.41        -2.759         0 \r\n 2005          118           21.948        9.87         -3.202         0 \r\n 2005          119           20.435        12.26        -2.654         0 \r\n 2005          120           15.1          10.07        -3.886         0 \r\n 2005          121           10.448        6.817        -1.195         0 \r\n 2005          122           22.304        10.96        -0.207         0 \r\n 2005          123           24.779        13.53        -5.297         0 \r\n 2005          124           21.263        20.81        -1.184         0 \r\n 2005          125           21.256        22.39         6.922         1.016 \r\n 2005          126           14.813        25.57         10.87         2.286 \r\n 2005          127           14.106        26.97         13.92         2.286 \r\n 2005          128           15.858        26.81         11.85         3.302 \r\n 2005          129           11.829        18.05         11.39         0 \r\n 2005          130           17.747        24.26         7.54          2.286 \r\n 2005          131           3.671         13.89         10.39         7.62 \r\n 2005          132           3.522         10.41         5.968         40.132 \r\n 2005          133           10.408        12.71         4.743         0.254 \r\n 2005          134           13.048        8.82          4.194         0 \r\n 2005          135           23.482        15.12         0.675         0 \r\n 2005          136           15.538        21.8          7.36          0.508 \r\n 2005          137           19.413        26.76         13.81         0 \r\n 2005          138           12.536        24.07         11.03         1.016 \r\n 2005          139           26.411        27.94         8.45          0 \r\n 2005          140           22.619        24.66         11.1          0 \r\n 2005          141           13.953        26.62         13.62         3.048 \r\n 2005          142           27.709        25.22         10.12         0 \r\n 2005          143           27.162        27.92         9.16          0 \r\n 2005          144           17.594        27.39         13.31         0 \r\n 2005          145           5.219         19.6          8.56          9.906 \r\n 2005          146           21.603        20.73         7.44          2.286 \r\n 2005          147           19.039        18.78         7.61          4.826 \r\n 2005          148           25.318        22.27         6.129         0 \r\n 2005          149           22.61         18.95         8.42          0.254 \r\n 2005          150           22.018        23.38         7.23          0 \r\n 2005          151           9.661         21.09         13.96         21.336 \r\n 2005          152           7.969         22.71         14.45         7.366 \r\n 2005          153           12.168        25.73         14.22         0 \r\n 2005          154           8.077         23.16         16.63         1.778 \r\n 2005          155           14.092        24.99         16.81         3.81 \r\n 2005          156           12.142        22.57         14.04         3.556 \r\n 2005          157           24.248        31.31         13.21         0 \r\n 2005          158           20.428        31.86         20.69         0 \r\n 2005          159           19.099        25.53         15.28         24.638 \r\n 2005          160           13.94         25.46         15.05         9.906 \r\n 2005          161           13.672        25.79         17.33         0.508 \r\n 2005          162           15.769        25.54         14.71         0.508 \r\n 2005          163           17.014        24.33         11            0 \r\n 2005          164           19.4          26.21         13.45         2.794 \r\n 2005          165           13.935        22.71         14.78         1.524 \r\n 2005          166           17.847        24.03         13.64         0 \r\n 2005          167           25.678        27.14         11.59         0 \r\n 2005          168           27.465        28.37         12.95         0 \r\n 2005          169           27            29.2          14.04         0 \r\n 2005          170           26.147        30.62         17.15         0 \r\n 2005          171           21.972        33.38         19.25         5.588 \r\n 2005          172           20.389        29.79         18.37         3.81 \r\n 2005          173           25.716        32.75         19.34         0 \r\n 2005          174           26.398        33.75         21.89         0 \r\n 2005          175           8.05          25.45         15.62         19.812 \r\n 2005          176           7.031         24.19         16.97         10.16 \r\n 2005          177           19.716        31.2          20.99         0 \r\n 2005          178           16.736        30.49         20.82         1.524 \r\n 2005          179           21.95         27.84         19.4          3.048 \r\n 2005          180           16.991        29.47         15.97         5.842 \r\n 2005          181           23.792        24.87         13.56         0 \r\n 2005          182           26.684        25.58         11.19         0 \r\n 2005          183           24.465        28.37         14.46         0 \r\n 2005          184           15.776        28.55         18.13         0 \r\n 2005          185           16.864        27.31         14.35         0 \r\n 2005          186           18.646        25.78         11.54         0 \r\n 2005          187           22.086        26.95         14.77         12.446 \r\n 2005          188           14.995        27.31         17.85         0 \r\n 2005          189           10.437        27.11         18.33         6.35 \r\n 2005          190           22.396        29.99         19.4          0 \r\n 2005          191           22.048        30.11         20.9          0 \r\n 2005          192           20.886        30.39         19.15         0 \r\n 2005          193           22.085        29.54         18.76         0 \r\n 2005          194           21.728        30.21         18.31         0 \r\n 2005          195           23.016        31.57         17.64         0 \r\n 2005          196           22.794        31.62         18.21         0 \r\n 2005          197           21.113        32.63         20.86         0 \r\n 2005          198           17.949        32.16         19            7.366 \r\n 2005          199           27.134        27            15.32         0 \r\n 2005          200           26.529        29.65         13.76         0 \r\n 2005          201           24.594        31.75         19.32         13.462 \r\n 2005          202           23.608        28.34         19.69         11.176 \r\n 2005          203           21.833        30.82         19.72         0 \r\n 2005          204           24.898        34.03         23.52         0 \r\n 2005          205           23.266        31.76         21.76         0 \r\n 2005          206           11.608        26.85         18.56         36.83 \r\n 2005          207           21.654        20.36         10.4          0 \r\n 2005          208           26.139        23.71         8.16          0 \r\n 2005          209           25.877        27.8          10.94         0 \r\n 2005          210           19.061        28.43         16.94         3.048 \r\n 2005          211           15.016        27.54         18.91         0 \r\n 2005          212           22.395        27.52         19.48         0.254 \r\n 2005          213           24.619        30.09         17.11         0 \r\n 2005          214           20.647        29.04         22.11         0 \r\n 2005          215           18.531        32.64         20.24         10.922 \r\n 2005          216           19.059        25.75         13.64         4.572 \r\n 2005          217           25.877        27.08         10.23         0 \r\n 2005          218           25.272        26.35         11.27         0 \r\n 2005          219           23.287        30.75         14.91         0 \r\n 2005          220           23.148        31.82         19.38         0 \r\n 2005          221           18.777        32.61         19.11         19.05 \r\n 2005          222           20.778        26.94         16.94         0 \r\n 2005          223           8.657         25.55         18.37         21.59 \r\n 2005          224           16.996        26.12         16.11         0 \r\n 2005          225           16.208        22.84         11.37         0 \r\n 2005          226           22.315        22.89         9.13          0 \r\n 2005          227           23.108        26.09         11.04         0 \r\n 2005          228           23.293        27.27         13.96         0 \r\n 2005          229           10.635        24.31         16.95         0.254 \r\n 2005          230           22.938        28.93         18.19         0.254 \r\n 2005          231           14.401        29.17         17.22         0 \r\n 2005          232           22.397        28.61         13.78         0 \r\n 2005          233           19.645        26.51         14.11         0 \r\n 2005          234           17.862        24.539        14.041        0 \r\n 2005          235           11.911        24.412        13.784        0 \r\n 2005          236           5.428         23.624        16.181        0 \r\n 2005          237           4.705         26.222        19.243        5.359 \r\n 2005          238           16.553        26.867        13.204        0 \r\n 2005          239           20.481        28.535        12.533        0 \r\n 2005          240           19.346        28.214        10.283        0 \r\n 2005          241           20.363        29.369        11.618        0 \r\n 2005          242           20.15         29.014        13.206        0 \r\n 2005          243           17.91         25.289        11.113        0 \r\n 2005          244           20.257        29.181        7.942         0 \r\n 2005          245           19.043        29.232        9.458         0 \r\n 2005          246           19.244        31.92         13.25         0 \r\n 2005          247           19.756        32.1          19.15         0 \r\n 2005          248           12.015        28.32         18.6          11.938 \r\n 2005          249           15.587        28.91         18.13         10.922 \r\n 2005          250           9.114         23.84         15.73         0 \r\n 2005          251           14.884        26.52         16.1          38.862 \r\n 2005          252           17.962        32.94         17.02         0 \r\n 2005          253           18.542        31.81         20.13         0 \r\n 2005          254           15.978        31.39         19.32         0 \r\n 2005          255           5.798         29.87         20.21         3.302 \r\n 2005          256           5.582         22.61         8.56          0 \r\n 2005          257           14.883        25.14         6.656         0 \r\n 2005          258           14.358        25.36         8.7           0 \r\n 2005          259           14.515        26.95         9.68          0 \r\n 2005          260           4.529         21.74         11.15         0.762 \r\n 2005          261           14.26         29.86         12.88         27.94 \r\n 2005          262           12.322        25.96         12.29         0.254 \r\n 2005          263           16.83         32.27         10.61         0 \r\n 2005          264           14.403        33.36         17.18         0 \r\n 2005          265           11.934        22.16         8.1           5.334 \r\n 2005          266           15.828        23.15         6.778         0 \r\n 2005          267           6.901         24.17         15.88         8.89 \r\n 2005          268           2.176         20.02         12.93         52.832 \r\n 2005          269           15.446        21.59         10.44         0.254 \r\n 2005          270           16.303        26.65         8.37          0 \r\n 2005          271           10.828        17.12         1.163         4.064 \r\n 2005          272           17.238        19.13        -0.61          0 \r\n 2005          273           16.024        26.12         8             0 \r\n 2005          274           12.779        28.12         11.33         0 \r\n 2005          275           8.81          28.26         17.64         0 \r\n 2005          276           10.31         30.92         20.48         0 \r\n 2005          277           6.857         29.12         17.62         0 \r\n 2005          278           11.932        21.97         3.467         35.56 \r\n 2005          279           13.355        8.41          2.056         0 \r\n 2005          280           14.643        11.3         -2.87          0 \r\n 2005          281           15.088        15.29         0.337         0 \r\n 2005          282           12.297        15.51         1.249         0 \r\n 2005          283           13.619        18.41         0.516         0 \r\n 2005          284           9.808         19.08         5.701         0 \r\n 2005          285           3.273         14.91         8.75          3.56 \r\n 2005          286           13.051        19.99         6.181         0 \r\n 2005          287           13.735        24.86         6.626         0 \r\n 2005          288           13.697        21.22         2.123         0 \r\n 2005          289           10.579        24.23         6.31          0 \r\n 2005          290           12.88         23.04         7.48          0 \r\n 2005          291           12.668        27.38         7.09          0 \r\n 2005          292           9.833         13.23         3.581         0 \r\n 2005          293           12.327        15.22         0.834         0 \r\n 2005          294           6.376         15.96         0.168         0 \r\n 2005          295           6.479         8.75         -4.048         1.27 \r\n 2005          296           4.173         7.95         -1.403         0 \r\n 2005          297           11.042        9.37         -4.2           0 \r\n 2005          298           11.958        10.97        -5.308         0 \r\n 2005          299           11.488        13.99        -1.393         0 \r\n 2005          300           11.694        14.97        -2.968         0 \r\n 2005          301           11.455        17.63         0.806         0 \r\n 2005          302           6.423         20.13         9.23          0 \r\n 2005          303           4.414         15.54         7.06          0 \r\n 2005          304           11.061        13.61        -0.613         0 \r\n 2005          305           11.088        17.6         -1.017         0 \r\n 2005          306           10.032        24.77         1.518         0 \r\n 2005          307           6.901         14.27         0.401         0 \r\n 2005          308           5.217         8.38         -1.883         0 \r\n 2005          309           3.549         8.51         -0.586         0 \r\n 2005          310           9.121         13.17        -3.091         0 \r\n 2005          311           9.693         17.69         4.961         0 \r\n 2005          312           7.489         20.16         7.12          0 \r\n 2005          313           9.881         8.52         -3.365         0 \r\n 2005          314           9.517         15.34        -5.577         0 \r\n 2005          315           8.238         22.19         0.769         0 \r\n 2005          316           1.901         17.35         4.791         0 \r\n 2005          317           8.648         8.62         -2.865         0 \r\n 2005          318           4.525         8.72         -2.543         0 \r\n 2005          319           1.837         2.819        -6.437         10.16 \r\n 2005          320           9.84         -6.407        -17.82         0 \r\n 2005          321           9.081        -2.562        -17.66         0 \r\n 2005          322           8.963         5.577        -2.913         0 \r\n 2005          323           2.642         5.929        -0.086         0 \r\n 2005          324           5.523         5.872        -0.424         0 \r\n 2005          325           5.218         7.43         -1.233         0 \r\n 2005          326           4.81          7.86         -2.619         0 \r\n 2005          327           7.984         11.3         -0.005         0 \r\n 2005          328           8.42         -0.005        -9.92          0 \r\n 2005          329           4.053         3.938        -7.83          0 \r\n 2005          330           8.059         8.19         -9.29          0 \r\n 2005          331           0.615         10.99         5.485         2.54 \r\n 2005          332           1.215         9.44         -7.67          40.39 \r\n 2005          333           6.17         -5.906        -11.49         2.54 \r\n 2005          334           3.047        -6.405        -12.83         1.52 \r\n 2005          335           7.367        -8.72         -19.33         6.6 \r\n 2005          336           4.059        -11.68        -20.76         4.06 \r\n 2005          337           3.602        -9.01         -18.19         1.78 \r\n 2005          338           6.717        -13.79        -23.32         0 \r\n 2005          339           5.288        -13.32        -24.09         0 \r\n 2005          340           7.048        -18.54        -27.91         0 \r\n 2005          341           7.222        -14.53        -25.71         0 \r\n 2005          342           7.717        -12.52        -23.01         1.52 \r\n 2005          343           6.635        -9.22         -23.45         0 \r\n 2005          344           3.9           1.579        -9.38          0.25 \r\n 2005          345           3.606         2.528        -0.783         0.25 \r\n 2005          346           3.725         1.597        -5.627         0 \r\n 2005          347           5.89          3.196        -6.231         0 \r\n 2005          348           4.754         1.209        -4.783         17.02 \r\n 2005          349           4.902        -3.812        -7.59          1.02 \r\n 2005          350           6.626        -7.29         -14.3          0 \r\n 2005          351           8.137        -12.5         -17.55         0 \r\n 2005          352           8.028        -13.88        -19.41         0 \r\n 2005          353           7.718        -5.963        -20.16         0 \r\n 2005          354           7.73         -8.98         -15.11         0 \r\n 2005          355           8.247        -1.915        -15.81         0 \r\n 2005          356           6.836         7.01         -3.232         0 \r\n 2005          357           4.907         3.967        -2.61          0 \r\n 2005          358           2.829         1.841        -2.732         0 \r\n 2005          359           1.678         0.234        -2.949         0 \r\n 2005          360           2.473         1.096        -2.826         0 \r\n 2005          361           3.847        -0.527        -3.754         0 \r\n 2005          362           1.861        -0.49         -1.864         0 \r\n 2005          363           2.155         0.157        -2.741         1.27 \r\n 2005          364           2.166         0.404        -2.363         2.54 \r\n 2005          365           4.767        -0.208        -4.706         0 \r\n 2006          1             3.682        -0.186        -2.777         0 \r\n 2006          2             2.597        -0.164        -0.848         0 \r\n 2006          3             3.068         0.673        -1.496         0 \r\n 2006          4             7.109         1.716        -2.75          0 \r\n 2006          5             2.617        -2.503        -4.657         0 \r\n 2006          6             4.66          2.518        -5.76          0 \r\n 2006          7             6.644         4.573        -2.458         0 \r\n 2006          8             2.924        -0.152        -2.221         0 \r\n 2006          9             4.767        -0.16         -6.369         0 \r\n 2006          10            8.352         3.676        -6.54          0 \r\n 2006          11            7.695         7.93         -3.846         0 \r\n 2006          12            5.484         5.368        -0.886         0 \r\n 2006          13            3.57         -0.376        -7.88          0 \r\n 2006          14            8.339         7.9          -8.03          0 \r\n 2006          15            8.69          11.8         -0.001         0 \r\n 2006          16            2.42          3.142        -6.407         3.3 \r\n 2006          17            4.809        -3.629        -11.02         0 \r\n 2006          18            6.755         2.837        -12.08         0 \r\n 2006          19            6.145         3.007        -3.157         0 \r\n 2006          20            2.344        -0.32         -3.204         0 \r\n 2006          21            7.309         5.228        -6.26          0 \r\n 2006          22            3.572        -0.931        -10.62         0 \r\n 2006          23            7.234         3.93         -10.85         0 \r\n 2006          24            9.049         3.195        -6.288         0 \r\n 2006          25            9.799         6.768        -8.68          0 \r\n 2006          26            5.868         12.78        -1.749         0 \r\n 2006          27            9.636         12.68         0.908         0 \r\n 2006          28            1.565         5.266        -0.574         1.02 \r\n 2006          29            1.263         1.071        -0.189         4.06 \r\n 2006          30            3.395         0.478        -3.583         0 \r\n 2006          31            8.125         6.949        -4.572         0 \r\n 2006          32            7.988         5.272        -0.453         1.02 \r\n 2006          33            9.556         10.37        -1.882         0 \r\n 2006          34            11.045        0.61         -10.23         0 \r\n 2006          35            11.621       -3.451        -12.88         0 \r\n 2006          36            8.902        -1.308        -13.68         0 \r\n 2006          37            8.827         0.722        -13.35         0 \r\n 2006          38            6.627         2.245        -7.64          0 \r\n 2006          39            12.453       -3.982        -13.36         0 \r\n 2006          40            2.594        -0.545        -14.67         2.54 \r\n 2006          41            9.724        -0.847        -7.86          1.27 \r\n 2006          42            9.014        -5.769        -10.45         0 \r\n 2006          43            11.525       -6.484        -14.77         0 \r\n 2006          44            12.84         5.636        -14.78         0 \r\n 2006          45            9.487         8.41         -4.599         0 \r\n 2006          46            7.433        -2.213        -11.07         0 \r\n 2006          47            7.526        -10.36        -19.59         7.11 \r\n 2006          48            12.673       -16.86        -24.3          0 \r\n 2006          49            14.867       -15.59        -27.41         0 \r\n 2006          50            14.09        -7.03         -22.5          0 \r\n 2006          51            14.749       -1.279        -13.95         0 \r\n 2006          52            13.913        3.864        -14.12         0 \r\n 2006          53            14.52         6.922        -8.41          0 \r\n 2006          54            14.183       -0.22         -8.52          0 \r\n 2006          55            14.808        12.59        -6.571         0 \r\n 2006          56            15.423       -1.544        -10.87         0 \r\n 2006          57            14.234        7.72         -10.44         0 \r\n 2006          58            12.913        8.91         -5.519         0 \r\n 2006          59            10.143        8.78         -4.314         0 \r\n 2006          60            6.244         14.76        -0.105         0 \r\n 2006          61            11.935        1.238        -6.047         0 \r\n 2006          62            16.31         5.569        -10.25         0 \r\n 2006          63            4.764         4.028        -1.524         0 \r\n 2006          64            6.895         11.98        -3.269         0 \r\n 2006          65            14.202        7.76         -5.692         0 \r\n 2006          66            6.578         3.846        -2.166         3.05 \r\n 2006          67            4.107         6.704        -1.131         5.84 \r\n 2006          68            17.052        11.02        -1.234         0 \r\n 2006          69            16.864        15.24         0.553         0 \r\n 2006          70            13.895        8.77         -2.355         0 \r\n 2006          71            2.872         2.086        -4.03          1.27 \r\n 2006          72            16.89        -0.144        -8.22          10.41 \r\n 2006          73            18.614       -8.23         -10.556        0 \r\n 2006          74            14.142        4.648        -8.106         0 \r\n 2006          75            9.366         0.042        -7.097         12.19 \r\n 2006          76            19.503        3.573        -11.794        0 \r\n 2006          77            15.175        3.453        -3.137         0 \r\n 2006          78            8.459         1.345        -3.547         0 \r\n 2006          79            3.859        -0.283        -3.569         0 \r\n 2006          80            17.352       -1.998        -8.749         10.67 \r\n 2006          81            20.493        1.644        -12.253        0 \r\n 2006          82            19.615        2.73         -8.395         0 \r\n 2006          83            10.084        1.468        -6.597         0 \r\n 2006          84            10.861        1.788        -3.293         0 \r\n 2006          85            19.286        8.768        -4.444         0 \r\n 2006          86            2.249         5.525         1.728         9.4 \r\n 2006          87            8.363         7.801         0.179         0 \r\n 2006          88            12.197        17.564        0.947         0 \r\n 2006          89            2.944         17.859        5.231         9.14 \r\n 2006          90            3.41          8.081         1.893         17.53 \r\n 2006          91            7.049         12.362       -1.174         7.366 \r\n 2006          92            2.442         7.263         4.373         9.144 \r\n 2006          93            22.943        9.47         -0.863         0 \r\n 2006          94            20.841        16.19        -1.279         0 \r\n 2006          95            21.167        23.53         7.7           0 \r\n 2006          96            16.793        23.45         9.92          4.826 \r\n 2006          97            16.355        11.96        -0.415         6.35 \r\n 2006          98            22.763        11.56        -2.449         0 \r\n 2006          99            18.282        17.58        -0.923         0 \r\n 2006          100           22.859        26.66         6.016         0 \r\n 2006          101           13.682        23.82         11.6          0 \r\n 2006          102           22.697        26.04         6.007         0 \r\n 2006          103           22.348        30.91         11.59         0 \r\n 2006          104           24.057        25.35         11.38         0 \r\n 2006          105           15.291        26.78         11.22         15.494 \r\n 2006          106           2.845         13.75         10.33         3.048 \r\n 2006          107           8.714         16.78         8.68          0 \r\n 2006          108           5.496         14.01         4.206         0.762 \r\n 2006          109           14.754        14.72         0.834         0 \r\n 2006          110           11.235        13.36         3.084         1.524 \r\n 2006          111           14.179        16.66         4.963         0.508 \r\n 2006          112           23.357        19.66         2.197         0 \r\n 2006          113           24.093        22.49         3.422         0 \r\n 2006          114           10.114        16.31         2.566         3.048 \r\n 2006          115           17.505        10.79         0.412         2.286 \r\n 2006          116           25.734        16.93        -1.267         0 \r\n 2006          117           21.026        21.22         0.75          1.778 \r\n 2006          118           5.795         14.51         10.43         19.812 \r\n 2006          119           1.916         11.84         10.28         28.194 \r\n 2006          120           4.964         15.13         10.57         15.24 \r\n 2006          121           7.179         15.45         8.55          0 \r\n 2006          122           13.397        22.19         5.57          1.016 \r\n 2006          123           15.657        16.47         6.321         0 \r\n 2006          124           20.073        14.24         2.208         0 \r\n 2006          125           17.305        11.61         1.644         0 \r\n 2006          126           19.372        18.14         0.3           0 \r\n 2006          127           24.191        20.42         9.72          0 \r\n 2006          128           8.599         22.19         11.07         0 \r\n 2006          129           22.071        22.81         9.16          0 \r\n 2006          130           21.426        18.2          5.644         0.762 \r\n 2006          131           14.34         13.56         4.914         3.81 \r\n 2006          132           25.518        18.3          2.237         0 \r\n 2006          133           8.953         11.64         4.479         0 \r\n 2006          134           11.036        16            6.273         0.254 \r\n 2006          135           14.896        17.66         9.1           0.508 \r\n 2006          136           20.564        22.39         7.65          0 \r\n 2006          137           22.755        25.31         6.444         0 \r\n 2006          138           17.848        21.09         6.368         0 \r\n 2006          139           27.38         30.22         9.33          0 \r\n 2006          140           21.289        27.46         9.4           0 \r\n 2006          141           12.309        17.47         8.7           0 \r\n 2006          142           24.352        27.03         7.71          0 \r\n 2006          143           22.711        32.04         15.33         16.764 \r\n 2006          144           15.048        23.97         15.79         0.254 \r\n 2006          145           15.506        24.33         15.42         0 \r\n 2006          146           26.085        28.17         10.3          0 \r\n 2006          147           20.671        30.1          18            0 \r\n 2006          148           25.278        32.98         21.87         0 \r\n 2006          149           20.638        29.82         20.93         0 \r\n 2006          150           24.414        29.94         18.01         0 \r\n 2006          151           24.679        29.1          13.9          0 \r\n 2006          152           24.156        28.17         16.12         0 \r\n 2006          153           27.742        31.41         13.42         0 \r\n 2006          154           24.458        31.57         16.11         0 \r\n 2006          155           21.804        28.87         18.24         0 \r\n 2006          156           22.082        29.18         17.51         0 \r\n 2006          157           27.53         30.6          17.03         0 \r\n 2006          158           22.656        31.97         13.06         0 \r\n 2006          159           18.557        28.25         18.09         0 \r\n 2006          160           23.858        28.6          14.09         1.778 \r\n 2006          161           3.785         14.27         9.67          0.508 \r\n 2006          162           13.824        17.99         9.14          0 \r\n 2006          163           23.185        23.08         6.213         0 \r\n 2006          164           25.766        29.68         11.74         0 \r\n 2006          165           8.006         25.5          17.25         0.762 \r\n 2006          166           14.056        27.01         18.47         23.876 \r\n 2006          167           15.004        30.76         18.95         7.62 \r\n 2006          168           10.122        24.82         18.42         0.254 \r\n 2006          169           12.627        27.04         14.39         0.254 \r\n 2006          170           25.075        26.37         12.62         0 \r\n 2006          171           9.752         28.68         14.64         10.16 \r\n 2006          172           13.261        25.73         16.22         7.874 \r\n 2006          173           16.511        26.64         13.38         0 \r\n 2006          174           15.406        28.39         13.47         0 \r\n 2006          175           18.391        27.37         15.6          0.254 \r\n 2006          176           13.651        24.64         13.63         0 \r\n 2006          177           21.065        26.32         10.81         0 \r\n 2006          178           20.97         25.02         11.76         1.27 \r\n 2006          179           24.379        26.73         8.39          0 \r\n 2006          180           22.949        30.34         11.58         0 \r\n 2006          181           19.474        29.75         18.94         4.826 \r\n 2006          182           14.029        31.31         19.43         0 \r\n 2006          183           23.217        30.54         17.92         0 \r\n 2006          184           18.373        29.96         17.15         3.302 \r\n 2006          185           20.709        24.26         12            0 \r\n 2006          186           25.97         25.23         10.7          0 \r\n 2006          187           24.559        26.55         9.32          0 \r\n 2006          188           18.781        27.78         15.01         0 \r\n 2006          189           17.548        28.97         18.72         0 \r\n 2006          190           21.125        31.69         14.68         0 \r\n 2006          191           15.377        27.25         15.32         0 \r\n 2006          192           11.314        28.19         17.88         0 \r\n 2006          193           11.518        25.87         16.18         0 \r\n 2006          194           14.688        30.11         17.78         3.048 \r\n 2006          195           22.606        31.53         16            0 \r\n 2006          196           18.512        34.4          18.83         0 \r\n 2006          197           20.399        35.92         21.31         0 \r\n 2006          198           18.674        30.5          15.01         0 \r\n 2006          199           21.23         30.36         13.34         0 \r\n 2006          200           17.448        35.94         22.08         0 \r\n 2006          201           17.882        28.56         18.24         0 \r\n 2006          202           12.627        23.87         13.06         0 \r\n 2006          203           20.665        27.85         12.05         0 \r\n 2006          204           21.923        32.21         13.88         0 \r\n 2006          205           18.814        32.29         19.58         1.016 \r\n 2006          206           10.64         28.35         20.27         3.048 \r\n 2006          207           20.922        31.2          19.25         0 \r\n 2006          208           23.456        32.03         18.44         0 \r\n 2006          209           24.425        34.08         19.84         0 \r\n 2006          210           24.08         34.31         21.34         0 \r\n 2006          211           24.38         35.93         21.67         0 \r\n 2006          212           23.67         35.7          23.92         0.254 \r\n 2006          213           15.149        31.56         20.26         5.08 \r\n 2006          214           16.989        25.85         15.64         60.9 \r\n 2006          215           26.607        29.45         13.94         0 \r\n 2006          216           25.728        27.79         14.3          0 \r\n 2006          217           21.519        30.33         17.64         18 \r\n 2006          218           22.798        26.97         16.79         0 \r\n 2006          219           19.299        25.71         13.19         0 \r\n 2006          220           10.026        24.36         15.91         0 \r\n 2006          221           16.856        29.86         19.45         47.2 \r\n 2006          222           15.38         27.56         20.5          0 \r\n 2006          223           15.891        26.06         17.73         0 \r\n 2006          224           17.741        26.81         18.99         0 \r\n 2006          225           9.699         27.35         16.09         2.54 \r\n 2006          226           24.989        26.52         11.94         0 \r\n 2006          227           24.382        26.74         11.89         0 \r\n 2006          228           14.694        26.15         15.31         11.68 \r\n 2006          229           9             23.8          18.64         0 \r\n 2006          230           5.721         22.63         19.57         3.81 \r\n 2006          231           16.494        22.94         13.15         0 \r\n 2006          232           19.061        23.66         10.09         0 \r\n 2006          233           21.211        29.23         13.02         0 \r\n 2006          234           20.825        28.43         16.04         0 \r\n 2006          235           18.246        29.38         17.95         0 \r\n 2006          236           20.514        31.77         20.36         0 \r\n 2006          237           8.959         24.48         17.52         0 \r\n 2006          238           18.204        25.07         13.95         0 \r\n 2006          239           19.418        24.85         12.47         0 \r\n 2006          240           5.859         19.73         15.03         0.508 \r\n 2006          241           22.318        24.33         10.54         0 \r\n 2006          242           22.837        25.36         8.76          0 \r\n 2006          243           20.497        25.07         13.65         0 \r\n 2006          244           16.28         24.47         13.3          0 \r\n 2006          245           5.596         17.24         6.922         0.254 \r\n 2006          246           10.339        17.56         6.056         0.508 \r\n 2006          247           18.597        22.79         6.654         0 \r\n 2006          248           20.265        26.11         9.13          0 \r\n 2006          249           20.645        26.7          10.59         0 \r\n 2006          250           19.767        27.68         11.09         0 \r\n 2006          251           19.417        27.79         11.44         0 \r\n 2006          252           5.337         15.86         11.97         0 \r\n 2006          253           2.648         14.4          11.79         1.524 \r\n 2006          254           5.17          14.5          11.06         10.922 \r\n 2006          255           15.91         20.53         8.05          5.842 \r\n 2006          256           20.096        23.77         5.808         0 \r\n 2006          257           18.588        27.41         12.52         0 \r\n 2006          258           10.782        25.48         13.77         0 \r\n 2006          259           18.652        29.82         16.41         0 \r\n 2006          260           19.242        18.52         8.33          0 \r\n 2006          261           6.754         12.43         6.292         0 \r\n 2006          262           11.8          13.08         0.628         0 \r\n 2006          263           19.242        16.73        -1.468         0 \r\n 2006          264           1.421         13.09         9.11          25.4 \r\n 2006          265           3.687         15.3          11.28         23 \r\n 2006          266           3.016         13.66         10.37         0 \r\n 2006          267           16.839        19.28         6.579         0 \r\n 2006          268           17.346        22.65         5.103         0 \r\n 2006          269           16.955        25.91         3.377         0 \r\n 2006          270           10.248        16.65         4.423         0 \r\n 2006          271           13.132        13.99         1.822         0 \r\n 2006          272           14.161        22.44         5.15          0 \r\n 2006          273           14.028        24.86         6.12          0 \r\n 2006          274           11.803        29.4          10.64         0 \r\n 2006          275           13.903        30.82         12.78         0 \r\n 2006          276           12.771        31.87         13.67         0 \r\n 2006          277           6.214         15.26         5.315         0 \r\n 2006          278           13.837        19.83         4.018         0 \r\n 2006          279           12.342        22.24         8.32          0 \r\n 2006          280           13.001        28.11         13.79         0 \r\n 2006          281           7.107         18.33         8.26          2.03 \r\n 2006          282           5.291         10.83         2.27          5.59 \r\n 2006          283           7.158         11.77         2.856         0 \r\n 2006          284           7.18          6.817        -2.117         0 \r\n 2006          285           11.807        3.825        -5.374         0 \r\n 2006          286           15.424        10.54        -4.027         0 \r\n 2006          287           14.858        10.69        -7.51          0 \r\n 2006          288           10.616        16.76         4.801         0 \r\n 2006          289           2.603         13.45         10.18         0 \r\n 2006          290           4.975         12.46         3.581         0 \r\n 2006          291           4.492         3.572        -0.087         7.37 \r\n 2006          292           11.254        8.06         -4.381         0 \r\n 2006          293           10.745        15.61         0.168         0 \r\n 2006          294           5.554         3.647        -2.571         0 \r\n 2006          295           12.965        4.124        -6.882         0 \r\n 2006          296           13.475        6.105        -9.28          0 \r\n 2006          297           12.193        10.69        -6.115         0 \r\n 2006          298           12.408        13.32        -4.465         0 \r\n 2006          299           3.146         7.21          4.222         0 \r\n 2006          300           11.686        15.73        -0.531         0 \r\n 2006          301           8.248         12.7         -3.345         0 \r\n 2006          302           12.287        20.7         -2.939         0 \r\n 2006          303           10.804        17.96        -2.997         0 \r\n 2006          304           12.384        1.649        -8.98          0 \r\n 2006          305           11.377        2.194        -11.63         0 \r\n 2006          306           11.865        0.716        -10.04         0 \r\n 2006          307           9.528         11.58        -11.06         0 \r\n 2006          308           10.909        14.95         0.037         0 \r\n 2006          309           10.916        17.99        -1.28          0 \r\n 2006          310           7.416         15.05         3.723         0 \r\n 2006          311           9.803         21.19        -0.906         0 \r\n 2006          312           10.299        24.82         5.623         0 \r\n 2006          313           9.335         10.13         1.686         0 \r\n 2006          314           6.733         4.014        -5.98          10.16 \r\n 2006          315           10.665       -1.14         -15.77         0 \r\n 2006          316           7.234         4.694        -1.695         0 \r\n 2006          317           8.951         8.3          -2.4           3.81 \r\n 2006          318           9.02          8.88          0.524         0 \r\n 2006          319           2.087         1.998        -2.789         0 \r\n 2006          320           6.023         2.26         -4.293         0 \r\n 2006          321           6.683         4.315        -5.613         0 \r\n 2006          322           8.286         4.504        -7.19          0 \r\n 2006          323           7.59          8.29         -9.26          0 \r\n 2006          324           7.293         8.55         -7.95          0 \r\n 2006          325           7.627         11.98        -1.439         0 \r\n 2006          326           6.491         16.89        -0.409         0 \r\n 2006          327           7.338         14.28        -0.669         0 \r\n 2006          328           7.265         11.8         -2.184         0 \r\n 2006          329           5.044         11.09        -1.968         0 \r\n 2006          330           2.387         4.685        -2.524         0 \r\n 2006          331           1.293         5.499        -1.591         4.32 \r\n 2006          332           1.72          12.71        -6.562         12.95 \r\n 2006          333           6.15         -6.572        -13.16         0 \r\n 2006          334           8.764        -7.81         -15.33         0 \r\n 2006          335           8.379        -1.298        -16.5          0 \r\n 2006          336           8.531        -4.201        -14.1          0 \r\n 2006          337           7.926        -7.38         -16.98         0 \r\n 2006          338           8.48         -1.816        -13.03         0 \r\n 2006          339           3.639         4.847        -12.18         0 \r\n 2006          340           3.004         0.37         -15.95         0 \r\n 2006          341           8.417        -10.4         -20.47         0 \r\n 2006          342           7.438         1.819        -12.33         0 \r\n 2006          343           8.245         12.43        -5.492         0 \r\n 2006          344           7.982         9.33         -3.506         0 \r\n 2006          345           1.13          4.836        -5.905         0 \r\n 2006          346           0.784         1.93         -6.389         0 \r\n 2006          347           7.049         7.64         -6.321         0 \r\n 2006          348           7.109         10.59        -0.219         0 \r\n 2006          349           4.588         3.967        -5.962         0 \r\n 2006          350           6.064         9.46         -2.241         0 \r\n 2006          351           2.866         1.03         -4.85          0 \r\n 2006          352           5.74          1.489        -8.76          0 \r\n 2006          353           8.073         6.586        -9.68          0 \r\n 2006          354           0.887         1.548        -0.84          0 \r\n 2006          355           1.477         2.345         0.118         10.92 \r\n 2006          356           1.177         0.964        -2.678         0 \r\n 2006          357           6.72          2.375        -3.537         0 \r\n 2006          358           4.692         3.509        -5.038         0 \r\n 2006          359           7.972        -0.425        -7.7           0 \r\n 2006          360           7.375         3.753        -9.14          0 \r\n 2006          361           4.354         5.341        -1.78          0 \r\n 2006          362           5.856         5.681        -2.195         0 \r\n 2006          363           0.68          1.894         0.598         0 \r\n 2006          364           0.998         7.99          1.169         17.27 \r\n 2006          365           1.639         4.636        -5.954         15.24 \r\n 2007          1             8.158        -3.11         -8.73          0 \r\n 2007          2             8.307         1.368        -7.45          0 \r\n 2007          3             7.254         3.242        -2.345         0 \r\n 2007          4             6.112         6.588         0.409         0 \r\n 2007          5             3.283         1.727        -1.629         0 \r\n 2007          6             8.518         4.063        -4.847         0 \r\n 2007          7             3.804         1.221        -6.096         0 \r\n 2007          8             7.938         4.904        -5.79          0 \r\n 2007          9             7.239        -0.653        -7.79          0 \r\n 2007          10            7.914         7.08         -7.37          0 \r\n 2007          11            2.367         3.629        -13.29         0 \r\n 2007          12            7.973        -12.38        -18.64         0 \r\n 2007          13            3.098        -12.03        -18.92         0 \r\n 2007          14            2.358        -9.37         -14.26         4.83 \r\n 2007          15            9.451        -14.03        -27.93         8.38 \r\n 2007          16            9.798        -15.28        -30.05         0 \r\n 2007          17            9.564        -6.01         -16.97         0 \r\n 2007          18            6.506        -4.467        -13.44         0 \r\n 2007          19            9.73         -5.617        -16.21         0 \r\n 2007          20            8.18         -3.772        -14.01         0 \r\n 2007          21            9.406        -3.962        -6.681         7.37 \r\n 2007          22            9.286        -5.499        -12.18         0 \r\n 2007          23            7.287        -2.102        -11.92         1.02 \r\n 2007          24            6.576        -0.866        -13.06         0 \r\n 2007          25            6.536        -4.486        -9.22          0 \r\n 2007          26            10.581        2.12         -9.53          0 \r\n 2007          27            9.95         -7.36         -19.61         0 \r\n 2007          28            10.228       -12.29        -24.7          0 \r\n 2007          29            8.688        -5.583        -19.26         0 \r\n 2007          30            11.484       -16.32        -22.41         0 \r\n 2007          31            9.399        -5.856        -20.51         0 \r\n 2007          32            9.923        -9.31         -22.68         0 \r\n 2007          33            12.024       -12.43        -23.61         0 \r\n 2007          34            11.807       -20.3         -25.91         0 \r\n 2007          35            12.199       -18.85        -27.64         0 \r\n 2007          36            7.55         -17.39        -21.81         0 \r\n 2007          37            7.872        -12.97        -20.02         3.05 \r\n 2007          38            8.188        -12.27        -21.38         0 \r\n 2007          39            11.762       -12.95        -22.94         0 \r\n 2007          40            10.365       -11.76        -20.77         0 \r\n 2007          41            10.572       -11.11        -23.67         0 \r\n 2007          42            5.826        -0.951        -11.11         0 \r\n 2007          43            6.207        -5.268        -10.43         2.79 \r\n 2007          44            11.527       -10.43        -21.97         5.59 \r\n 2007          45            11.853       -14.84        -27.2          0 \r\n 2007          46            14.396       -16.49        -26.28         0 \r\n 2007          47            8.961        -5.529        -20.04         0 \r\n 2007          48            7.683        -3.984        -9.444         2.29 \r\n 2007          49            14.039        0.813        -10.23         0 \r\n 2007          50            12.316        2.534        -1.638         0 \r\n 2007          51            14.657        4.863        -4.926         0 \r\n 2007          52            14.596        6.766        -3.177         0 \r\n 2007          53            13.713        1.405        -4.926         0 \r\n 2007          54            12.331        2.497        -1.706         0 \r\n 2007          55            1.003         0.079        -3.622         9.4 \r\n 2007          56            11.199       -3.555        -7.31          12.7 \r\n 2007          57            13.098       -4.361        -9.9           0 \r\n 2007          58            12.151        1.803        -5.867         0 \r\n 2007          59            4.419        -0.998        -5.488         0.51 \r\n 2007          60            7.135        -0.865        -6.164         17.27 \r\n 2007          61            12.739       -5.829        -10.13         8.64 \r\n 2007          62            15.107       -9.7          -16.66         0 \r\n 2007          63            16.714        0.251        -17.25         0 \r\n 2007          64            15.439       -4.426        -16.2          0 \r\n 2007          65            13.419       -1.32         -15.77         0 \r\n 2007          66            12.497        1.926        -7.31          0 \r\n 2007          67            15.854        3.532        -4.458         0 \r\n 2007          68            16.101        3.918        -0.184         0 \r\n 2007          69            17.931        10.28        -1.621         0 \r\n 2007          70            16.186        12.02        -1.374         0 \r\n 2007          71            16.218        15.78         2.298         0 \r\n 2007          72            15.122        17.26         3.979         0 \r\n 2007          73            4.785         3.98          0.393         0 \r\n 2007          74            13.085        7.66         -3.583         0 \r\n 2007          75            14.534        3.409        -5.184         0 \r\n 2007          76            9.442         2.91         -2.036         1.02 \r\n 2007          77            14.111        10.24        -2.157         0 \r\n 2007          78            19.493        8.55         -2.694         0 \r\n 2007          79            10.677        9.76         -3.328         0 \r\n 2007          80            4.699         19.11         2.855         0 \r\n 2007          81            19.834        15.63        -2.184         0 \r\n 2007          82            19.756        21.37         0.573         0 \r\n 2007          83            4.954         17.43         7.89          5.08 \r\n 2007          84            17.145        20.91         10.63         2.79 \r\n 2007          85            20.841        26.68         7.74          0 \r\n 2007          86            12.416        17.22         5.702         0 \r\n 2007          87            4.242         14.27         9.63          3.3 \r\n 2007          88            4.031         12.34         9.46          0 \r\n 2007          89            8.442         19.51         9.86          20.32 \r\n 2007          90            5.82          16.8          4.045         20.32 \r\n 2007          91            6.884         9.64          2.118         0 \r\n 2007          92            9.926         9.39          0.336         0 \r\n 2007          93            7.448         5.91         -7.76          0.254 \r\n 2007          94            18.641        0.243        -9.02          0 \r\n 2007          95            23.12         1.221        -8.34          0 \r\n 2007          96            20.401       -2.109        -9.48          0 \r\n 2007          97            23.889        1.155        -11.02         0 \r\n 2007          98            23.991        3.628        -10.23         0 \r\n 2007          99            23.529        8.35         -10.21         0 \r\n 2007          100           5.077         3.025        -0.777         0 \r\n 2007          101           12.373        0.148        -2.052         21.08 \r\n 2007          102           22.117        5.234        -4.838         0 \r\n 2007          103           14.857        8.96         -3.3           0 \r\n 2007          104           22.093        12.99        -1.612         0 \r\n 2007          105           24.698        18.81        -0.342         0 \r\n 2007          106           23.834        25.49         2.725         0 \r\n 2007          107           19.722        19.25         5.581         0 \r\n 2007          108           24.912        18.07         1.623         0 \r\n 2007          109           23.205        17.87         5.541         0 \r\n 2007          110           23.206        24.38         7.88          2.286 \r\n 2007          111           21.312        28.34         12.8          0 \r\n 2007          112           7.693         19.09         10.74         14.224 \r\n 2007          113           21.219        19.12         6.817         0 \r\n 2007          114           6.444         11.81         7.66          26.924 \r\n 2007          115           3.495         10.54         6.836         1.524 \r\n 2007          116           22.769        16            5.578         0 \r\n 2007          117           19.866        21.8          5.241         0 \r\n 2007          118           25.728        24.84         6.216         0 \r\n 2007          119           24.217        32.78         8.29          0 \r\n 2007          120           25.723        32.36         11.97         0 \r\n 2007          121           25.151        21.79         7.1           0 \r\n 2007          122           25.371        22.08         5.435         0 \r\n 2007          123           5.536         14.72         9.42          0.508 \r\n 2007          124           2.827         17.42         12.21         3.556 \r\n 2007          125           3.244         20.29         14.12         17.526 \r\n 2007          126           12.262        18.77         12.8          74.422 \r\n 2007          127           7.847         19.77         12.71         0.508 \r\n 2007          128           23.255        22.21         8.97          0 \r\n 2007          129           24.757        26.4          10.61         0 \r\n 2007          130           25.354        29.69         13.11         0 \r\n 2007          131           26.361        26.7          11.68         0 \r\n 2007          132           17.425        28.23         11.91         0.762 \r\n 2007          133           26.682        31            16.61         0 \r\n 2007          134           19.17         29.42         16.15         0 \r\n 2007          135           20.711        18.86         8.02          0 \r\n 2007          136           27.263        19.26         5.596         0 \r\n 2007          137           28.602        21.16         2.893         0 \r\n 2007          138           27.246        25.26         10.36         0 \r\n 2007          139           25.89         28.84         14.61         0 \r\n 2007          140           25.264        27.85         16.65         0 \r\n 2007          141           21.373        28            17.02         0 \r\n 2007          142           11.104        23.97         18.33         0.254 \r\n 2007          143           11.333        22.66         16.46         1.27 \r\n 2007          144           12.378        17.35         7.49          10.668 \r\n 2007          145           21.755        20.27         4.999         0 \r\n 2007          146           18.687        19.93         7.45          0 \r\n 2007          147           22.383        23.07         4.033         0 \r\n 2007          148           18.752        27.33         15.69         0 \r\n 2007          149           8.858         25.86         16.9          7.366 \r\n 2007          150           10.296        20.46         11.08         11.684 \r\n 2007          151           20.779        23.86         9.79          3.048 \r\n 2007          152           12.056        22.62         13.02         0.254 \r\n 2007          153           13.687        19.88         11.69         2.286 \r\n 2007          154           14.873        23.17         13.27         13.97 \r\n 2007          155           23.455        24.11         12.48         0 \r\n 2007          156           27.202        23.07         7.6           0 \r\n 2007          157           21.81         30.79         13.54         0 \r\n 2007          158           26.443        26.46         11.73         0 \r\n 2007          159           27.968        22.23         8.91          0 \r\n 2007          160           25.582        28.05         9.43          0 \r\n 2007          161           24.076        30.43         14.79         0 \r\n 2007          162           24.78         30.17         18.2          0 \r\n 2007          163           22.494        30.59         19.03         0 \r\n 2007          164           18.874        28.58         19.22         0 \r\n 2007          165           26.212        30.33         16.82         0 \r\n 2007          166           22.544        30.59         17.35         0 \r\n 2007          167           20.882        32.25         18.45         8.636 \r\n 2007          168           24.784        29.47         18.42         0 \r\n 2007          169           19.75         25.79         12.78         0 \r\n 2007          170           25.028        25.92         10.89         0 \r\n 2007          171           27.75         30.97         12.67         0 \r\n 2007          172           15.04         30.03         18.87         0.762 \r\n 2007          173           17.238        26.13         17.4          3.302 \r\n 2007          174           17.51         26.36         17.4          0 \r\n 2007          175           25.768        26.81         15.53         0 \r\n 2007          176           26.457        32.04         16.59         0 \r\n 2007          177           25.085        31.63         17.35         0 \r\n 2007          178           24.781        27            16.09         0 \r\n 2007          179           27.946        23.13         11.66         0 \r\n 2007          180           27.173        26.46         10.95         0 \r\n 2007          181           26.19         26.16         11.92         0 \r\n 2007          182           26.976        26.89         12.27         0 \r\n 2007          183           22.435        28.6          16.86         0 \r\n 2007          184           21.994        30.57         19.49         12.954 \r\n 2007          185           26.481        29.44         16.82         0.254 \r\n 2007          186           27.869        30.47         15.8          0 \r\n 2007          187           27.595        29.43         17.21         5.08 \r\n 2007          188           27.646        33.03         18.11         0 \r\n 2007          189           26.463        33.15         19.46         0 \r\n 2007          190           24.875        28.34         17.32         0 \r\n 2007          191           26.982        24.28         12.62         0 \r\n 2007          192           23.32         24.16         10.04         0 \r\n 2007          193           18.946        25.12         11.27         0 \r\n 2007          194           27.82         27.08         6.977         0 \r\n 2007          195           26.149        28.31         16.32         0 \r\n 2007          196           26.04         28.08         14.14         0 \r\n 2007          197           24.304        31.95         16.43         0 \r\n 2007          198           25.592        33.95         17.62         0 \r\n 2007          199           11.723        30.57         20.71         1.016 \r\n 2007          200           15.907        27.3          13.31         0.254 \r\n 2007          201           17.477        25.95         10.6          0 \r\n 2007          202           15.37         27.01         16.13         0 \r\n 2007          203           12.176        29.43         18.3          0 \r\n 2007          204           14.915        30.82         20.03         0 \r\n 2007          205           14.899        30.33         20.6          0 \r\n 2007          206           15.183        32.04         20.66         0 \r\n 2007          207           14.879        31.83         20.01         38.1 \r\n 2007          208           23.318        27.76         17.49         0 \r\n 2007          209           22.132        28.11         16.14         0 \r\n 2007          210           24.122        28.55         14.84         0 \r\n 2007          211           22.269        29.33         16.27         0 \r\n 2007          212           23.367        28.65         17.35         0 \r\n 2007          213           17.707        29.94         18.45         0 \r\n 2007          214           22.007        27.97         15.67         0 \r\n 2007          215           14.243        26.91         13.61         0.254 \r\n 2007          216           15.308        31.09         16.89         59.182 \r\n 2007          217           15.143        26.02         18.71         0 \r\n 2007          218           5.868         23.71         16.84         0.762 \r\n 2007          219           11.098        26.94         17.55         0 \r\n 2007          220           5.467         23.63         17.18         6.096 \r\n 2007          221           23.044        31.41         17.16         0.254 \r\n 2007          222           16.385        28.47         18.04         0 \r\n 2007          223           21.469        31.64         22.34         0 \r\n 2007          224           19.835        27.78         17.9          0 \r\n 2007          225           22.657        30.6          18.84         0 \r\n 2007          226           13.485        27.13         21.29         0 \r\n 2007          227           14.548        27.41         18.19         0.762 \r\n 2007          228           20.116        26.45         14.3          0 \r\n 2007          229           19.317        24.6          13.02         7.112 \r\n 2007          230           8.347         28.79         15.31         3.302 \r\n 2007          231           18.62         29.69         20.05         0.762 \r\n 2007          232           13.661        27.84         18.44         40.132 \r\n 2007          233           19.559        29.73         18.28         22.352 \r\n 2007          234           1.679         22.35         17.42         16.51 \r\n 2007          235           8.898         23.45         17.25         14.224 \r\n 2007          236           18.395        23.54         14.65         0 \r\n 2007          237           21.174        24.39         11.04         0 \r\n 2007          238           17.643        27.49         16.25         0 \r\n 2007          239           21.872        31.56         20.88         0 \r\n 2007          240           10.217        26.71         17.39         13.208 \r\n 2007          241           21.896        23.05         12.1          0.254 \r\n 2007          242           22.528        24.04         9.32          0 \r\n 2007          243           22.191        26.31         12.42         0 \r\n 2007          244           22.073        26.51         14.78         0 \r\n 2007          245           15.949        27.57         16.28         2.032 \r\n 2007          246           21.221        30.05         15.32         0 \r\n 2007          247           20.952        30.55         15.16         0 \r\n 2007          248           19.813        29.15         19.08         0 \r\n 2007          249           11.066        26.71         18.81         65.278 \r\n 2007          250           20.357        23.87         12.44         0 \r\n 2007          251           14.743        25.07         10.07         1.27 \r\n 2007          252           10.922        16.54         11.2          3.81 \r\n 2007          253           10.916        16.64         9.06          6.096 \r\n 2007          254           21.218        18.47         4.568         0 \r\n 2007          255           20.171        22.05         2.321         0 \r\n 2007          256           16.625        20.53         4.961         0 \r\n 2007          257           15.514        12.57         0.027         0 \r\n 2007          258           9.678         13.31        -0.741         0 \r\n 2007          259           18.787        24.05         6.302         0 \r\n 2007          260           16.05         31.78         16.06         0 \r\n 2007          261           2.96          23.69         12.6          10.668 \r\n 2007          262           18.523        24.41         9.25          0 \r\n 2007          263           16.451        30.23         10.88         0 \r\n 2007          264           11.29         26.9          8.18          0 \r\n 2007          265           18.858        25.11         5.491         0 \r\n 2007          266           16.934        30.17         13.1          0 \r\n 2007          267           7.331         26.12         13.59         20.574 \r\n 2007          268           8.259         16.2          5.227         0 \r\n 2007          269           13.802        21.45         4.487         0 \r\n 2007          270           15.646        23.76         5.388         0 \r\n 2007          271           16.84         23.99         2.33          0 \r\n 2007          272           10.719        26.38         14.45         17.272 \r\n 2007          273           6.12          24.7          13.36         57.404 \r\n 2007          274           17.346        23.25         8.34          0 \r\n 2007          275           4.978         19.1          7.43          3.81 \r\n 2007          276           16.873        24.03         4.631         0 \r\n 2007          277           14.844        27.49         10.89         0 \r\n 2007          278           10.811        29.1          19.86         1.02 \r\n 2007          279           15.331        30.03         19.25         0 \r\n 2007          280           7.577         24.74         11.63         0 \r\n 2007          281           14.612        19.46         8.95          26.42 \r\n 2007          282           15.827        17.7          5.967         0 \r\n 2007          283           13.821        11.36         3.65          0 \r\n 2007          284           11.903        13.55         1.379         0 \r\n 2007          285           14.36         19.12         5.968         0 \r\n 2007          286           2.07          13.07         7.63          0 \r\n 2007          287           1.14          12.15         10.37         19.56 \r\n 2007          288           1.182         13.54         10.63         15.75 \r\n 2007          289           2.95          11.91         7.12          8.13 \r\n 2007          290           1.924         14.81         6.541         1.27 \r\n 2007          291           3.15          15.2          10.02         17.78 \r\n 2007          292           10.097        15.31         6.359         1.52 \r\n 2007          293           13.158        25.72         4.709         0 \r\n 2007          294           5.022         13.02         7.68          0 \r\n 2007          295           11.903        14.31         2.774         0 \r\n 2007          296           13.133        19.68        -0.365         0 \r\n 2007          297           13.27         13.98        -0.18          0 \r\n 2007          298           13.066        15.46         1.719         0 \r\n 2007          299           8.768         13.53        -0.509         0 \r\n 2007          300           12.554        12.59        -0.284         0 \r\n 2007          301           12.244        14.67        -3.052         0 \r\n 2007          302           11.98         20.86         3.894         0 \r\n 2007          303           8.2           20.28         8.58          0 \r\n 2007          304           12.064        12.01        -0.086         0 \r\n 2007          305           11.901        14.15        -3.754         0 \r\n 2007          306           11.339        12.44        -1.12          0 \r\n 2007          307           5.792         11.84        -4.847         0 \r\n 2007          308           8.215         17.02        -1.827         0 \r\n 2007          309           10.488        10.46        -2.487         0 \r\n 2007          310           10.613        3.646        -6.697         0 \r\n 2007          311           7.267         9.91         -6.386         0 \r\n 2007          312           4.852         5.683        -5.191         0 \r\n 2007          313           10.373        11.69        -6.338         0 \r\n 2007          314           4.059         12.33        -0.529         0 \r\n 2007          315           8.184         20.27         2.422         0 \r\n 2007          316           4.479         11.08        -3.157         0 \r\n 2007          317           5.388         14.45        -3.525         0 \r\n 2007          318           5.87          8.01          1.285         0 \r\n 2007          319           9.691         6.864        -5.685         0 \r\n 2007          320           8.068         14.38         1.084         0 \r\n 2007          321           6.9           6.646        -0.052         0 \r\n 2007          322           2.303         4.867         0.392         0 \r\n 2007          323           8.875         13.98         1.48          0 \r\n 2007          324           2.145         5.047        -2.147         0 \r\n 2007          325           2.65         -2.109        -7.23          0 \r\n 2007          326           2.666        -4.523        -11.64         0 \r\n 2007          327           8.56          2.788        -12.24         0 \r\n 2007          328           8.975         4.497        -5.096         0 \r\n 2007          329           8.896         9.41         -4.798         0 \r\n 2007          330           8.379         4.562        -6.658         0 \r\n 2007          331           6.088        -0.159        -12.72         0 \r\n 2007          332           5.56         -1.495        -10.39         0 \r\n 2007          333           5.678        -1.685        -10.14         0 \r\n 2007          334           7.719        -5.608        -13.23         0.76 \r\n 2007          335           1.163         0.082        -7.6           28.45 \r\n 2007          336           7.028        -2.779        -13.12         0 \r\n 2007          337           7.434         0.863        -14.18         0 \r\n 2007          338           4.803         0.092        -9.82          0 \r\n 2007          339           9.871        -5.406        -14.03         0 \r\n 2007          340           2.971        -3.546        -11.38         1.52 \r\n 2007          341           8.223        -2.885        -11.87         0 \r\n 2007          342           3.018        -11.88        -14.29         1.27 \r\n 2007          343           4.272        -11.21        -14.51         4.57 \r\n 2007          344           7.753        -6.756        -17.04         0 \r\n 2007          345           4.509        -4.562        -8.51          0 \r\n 2007          346           7.933        -5.209        -13.9          0 \r\n 2007          347           8.217        -0.058        -12.03         0 \r\n 2007          348           7.436        -11.74        -17            0 \r\n 2007          349           6.702        -8.46         -15.82         0 \r\n 2007          350           4.966        -7.43         -16.72         0 \r\n 2007          351           7.489        -0.813        -14.3          0 \r\n 2007          352           7.426        -2.04         -8.99          0 \r\n 2007          353           5.798         0.352        -12.09         0 \r\n 2007          354           6.464        -0.899        -10.74         0 \r\n 2007          355           5.068         0.352        -3.582         0 \r\n 2007          356           6.431         0.187        -15.56         0 \r\n 2007          357           7.784        -5.435        -16.49         0 \r\n 2007          358           4.062        -5.566        -8.19          0 \r\n 2007          359           4.865        -0.579        -5.547         0 \r\n 2007          360           5.414        -2.551        -15.07         3.3 \r\n 2007          361           4.153        -6.269        -10.96         0 \r\n 2007          362           5.736        -3.745        -7.86          0 \r\n 2007          363           4.572        -6.844        -18.27         0 \r\n 2007          364           4.319        -6.689        -15.72         0 \r\n 2007          365           4.736        -10.27        -15.35         0 \r\n 2008          1             8.213        -12.45        -18.76         0 \r\n 2008          2             8.4          -9.54         -21.81         0 \r\n 2008          3             8.148        -1.358        -13.3          0 \r\n 2008          4             5.674        -0.165        -9.19          0 \r\n 2008          5             7.631         3.172        -8.38          0 \r\n 2008          6             4.234         2.644        -3.09          0 \r\n 2008          7             5.349         3.011        -3.148         0 \r\n 2008          8             6.653        -0.538        -9.04          0 \r\n 2008          9             5.878         2.081        -9.89          0 \r\n 2008          10            3.574        -0.926        -6.127         3.05 \r\n 2008          11            6.446        -1.611        -10.75         0 \r\n 2008          12            5.12         -5.44         -11.34         0 \r\n 2008          13            5.295        -4.22         -14.24         0 \r\n 2008          14            9.22         -8.48         -19.22         0 \r\n 2008          15            7.38         -3.138        -19.5          0 \r\n 2008          16            4.896        -3.27         -11.93         0 \r\n 2008          17            8.87         -11.88        -17.24         0.51 \r\n 2008          18            7.901        -10.42        -23.06         0 \r\n 2008          19            10.237       -17.1         -26.33         0 \r\n 2008          20            7.268        -14.67        -24.25         0 \r\n 2008          21            6.394        -12.94        -16.17         6.1 \r\n 2008          22            10.158       -13.22        -22.87         0 \r\n 2008          23            7.497        -14.35        -26.9          0.51 \r\n 2008          24            10.726       -13.49        -28.8          0 \r\n 2008          25            7.042        -4.908        -16.92         0 \r\n 2008          26            10.491       -2.101        -14.18         0 \r\n 2008          27            10.388        4.052        -10.32         0 \r\n 2008          28            6.124         4.354         0.214         0 \r\n 2008          29            6.844         0.196        -21.25         0 \r\n 2008          30            7.743        -16.79        -23.07         0 \r\n 2008          31            10.935       -11.48        -18.79         0 \r\n 2008          32            7.437        -2.864        -16.53         0 \r\n 2008          33            8.99         -4.22         -11.86         0 \r\n 2008          34            6.706        -1.845        -12.37         0 \r\n 2008          35            5.247        -1.083        -3.547         6.35 \r\n 2008          36            7.276        -2.345        -10.97         0 \r\n 2008          37            11.282       -7.79         -12.34         0 \r\n 2008          38            11.348       -5.495        -13.9          0 \r\n 2008          39            8.92         -5.396        -13.35         0 \r\n 2008          40            10.948       -4.61         -17.64         0 \r\n 2008          41            10.975       -17.61        -23.44         0 \r\n 2008          42            7.035        -15.06        -20.4          3.05 \r\n 2008          43            11.724       -13.28        -21.66         3.05 \r\n 2008          44            9.991        -3.023        -21.72         0 \r\n 2008          45            7.904        -1.666        -20.3          0 \r\n 2008          46            14.011       -9.48         -24.07         0 \r\n 2008          47            13.859        0.042        -12.9          0 \r\n 2008          48            9.341         0.244        -11.61         0 \r\n 2008          49            14.439       -11.62        -20.2          0 \r\n 2008          50            10.387       -6.873        -25.06         0 \r\n 2008          51            15.239       -18.51        -29.88         0 \r\n 2008          52            10.233       -8.99         -21.15         0 \r\n 2008          53            14.037       -3.949        -20.34         0 \r\n 2008          54            14.257        1.405        -13.8          0 \r\n 2008          55            13.172        1.987        -6.505         0 \r\n 2008          56            5.005         0.953        -10.07         5.08 \r\n 2008          57            12.183       -4.745        -12.81         0 \r\n 2008          58            16.365       -3.283        -11.87         0 \r\n 2008          59            10.068        1.846        -7.99          0 \r\n 2008          60            16.533        2.563        -3.846         0 \r\n 2008          61            15.204        1.133        -5.411         0 \r\n 2008          62            5.202         4.336        -4.58          0 \r\n 2008          63            17.211       -4.57         -12.65         0 \r\n 2008          64            13.167        0.258        -12.09         0 \r\n 2008          65            12.987       -2.353        -13.26         2.29 \r\n 2008          66            15.965       -1.139        -16.72         0 \r\n 2008          67            18.808       -14.81        -23.67         2.03 \r\n 2008          68            13.252       -2.481        -20.01         0 \r\n 2008          69            15.737       -4.984        -12.81         0 \r\n 2008          70            17.91         2.714        -15.13         0 \r\n 2008          71            15.725        6.054        -2.42          0 \r\n 2008          72            12.691        8.48          0.742         0 \r\n 2008          73            18.77         12.03        -0.705         0 \r\n 2008          74            15.598        3.744        -2.732         0 \r\n 2008          75            10.147       -2.261        -4.875         0 \r\n 2008          76            12.126        2.309        -3.116         0 \r\n 2008          77            8.584         0.577        -0.603         8.38 \r\n 2008          78            10.007        2.949        -1.343         0 \r\n 2008          79            17.001        8.6          -2.777         0 \r\n 2008          80            17.654        11.46        -0.658         0 \r\n 2008          81            2.62          3.574        -0.181         0 \r\n 2008          82            6.92          1.654        -1.478         0 \r\n 2008          83            6.53         -0.624        -5.998         0 \r\n 2008          84            17.874        8.67         -7.8           0 \r\n 2008          85            19.603        8.7          -3.347         0 \r\n 2008          86            12.068        8.57         -4.369         0 \r\n 2008          87            10.036        0.382        -5.96          11.68 \r\n 2008          88            21.308        3.127        -10.47         0 \r\n 2008          89            14.787        7.06         -1.703         0 \r\n 2008          90            4.744         6.332         0.874         0 \r\n 2008          91            3.703         1.559        -0.886         18.03 \r\n 2008          92            22.383        3.298        -3.373         0.254 \r\n 2008          93            14.332        8.51         -4.33          0 \r\n 2008          94            9.99          9.77         -0.105         0 \r\n 2008          95            20.365        15.93        -2.882         0 \r\n 2008          96            19.397        18.17         3.165         0 \r\n 2008          97            10.637        12.12        -1.196         0 \r\n 2008          98            21.225        9.81         -1.911         0 \r\n 2008          99            8.255         7.03         -2.43          0 \r\n 2008          100           14.035        10.43        -4.039         0 \r\n 2008          101           2.111         3.79          1.672         23.114 \r\n 2008          102           5.517         3.753        -0.8           5.842 \r\n 2008          103           8.569        -0.499        -1.986         0.254 \r\n 2008          104           24.832        6.777        -5.001         0 \r\n 2008          105           25.213        12.5         -5.835         0 \r\n 2008          106           24.872        21.9          2.453         0 \r\n 2008          107           20.96         19.44         2.948         0 \r\n 2008          108           4.603         8.74          1.96          3.048 \r\n 2008          109           3.748         6.407         3.986         8.89 \r\n 2008          110           19.719        16.91         3.062         0 \r\n 2008          111           15.79         19.91         5.673         0 \r\n 2008          112           6.276         15.51         6.482         0 \r\n 2008          113           23.136        20.19         2.168         0 \r\n 2008          114           24.41         24.33         5.19          0 \r\n 2008          115           7.781         21.24         9.05          1.778 \r\n 2008          116           7.307         9.02         -1.044         42.926 \r\n 2008          117           24.141        9.5          -2.175         0 \r\n 2008          118           20.782        9.56         -2.845         0 \r\n 2008          119           25.417        7.91         -4.943         0 \r\n 2008          120           21.644        15.25        -2.834         0 \r\n 2008          121           22.535        20.79         2.563         0 \r\n 2008          122           11.579        24.35         8.37          0 \r\n 2008          123           3.649         11.02         4.373         17.78 \r\n 2008          124           26.392        13.11         0.587         0 \r\n 2008          125           26.406        20.3          0.253         0 \r\n 2008          126           26.705        23.89         5.074         0 \r\n 2008          127           18.142        25.43         11.56         14.732 \r\n 2008          128           20.994        17.28         6.903         0 \r\n 2008          129           14.62         17.56         4.838         0 \r\n 2008          130           14.226        16.06         7.45          0.508 \r\n 2008          131           4.322         11.72         3.853         11.176 \r\n 2008          132           27.207        14.87         0.975         0 \r\n 2008          133           26.051        22.16         4.915         0 \r\n 2008          134           7.396         16.81         5.314         0 \r\n 2008          135           27.324        18.25         5.577         0 \r\n 2008          136           22.785        21.3          5.637         0 \r\n 2008          137           26.81         25.68         7.1           0 \r\n 2008          138           26.807        26.09         8.62          0 \r\n 2008          139           27.41         20.79         5.969         0 \r\n 2008          140           22.758        26.94         9.82          0 \r\n 2008          141           26.012        19.8          5.313         0 \r\n 2008          142           28.525        21.93         2.177         0 \r\n 2008          143           6.704         17.79         11.73         0 \r\n 2008          144           10.826        15.72         10.12         16.256 \r\n 2008          145           11.567        17.96         9.34          8.128 \r\n 2008          146           22.46         28.48         15.15         0 \r\n 2008          147           26.901        21.83         11.32         0 \r\n 2008          148           6.298         12.778        6.111         9.881 \r\n 2008          149           15.136        16.307        7.058         0 \r\n 2008          150           2.668         17.53         11.79         60.452 \r\n 2008          151           23.036        24.28         13.93         0 \r\n 2008          152           26.55         26.95         12.39         2.794 \r\n 2008          153           25.63         28.789        14.444        0 \r\n 2008          154           12.334        24.53         16.64         2.286 \r\n 2008          155           12.139        20.18         14.49         23.368 \r\n 2008          156           17.18         23.65         15.04         7.112 \r\n 2008          157           7.882         25.023        16.728        6.909 \r\n 2008          158           17.85         23.61         14.4          0 \r\n 2008          159           15.511        28.37         16.5          11.176 \r\n 2008          160           8.905         22.92         13.92         12.446 \r\n 2008          161           26.113        23.41         12.67         0 \r\n 2008          162           24.504        27.95         11.62         0 \r\n 2008          163           7.76          26.62         16.6          29.718 \r\n 2008          164           20.985        23.37         14.64         1.27 \r\n 2008          165           27.349        23.72         10.7          0 \r\n 2008          166           28.473        30.712        12.778        0 \r\n 2008          167           23.832        25.497        15.581        0 \r\n 2008          168           28.86         23.78         9.6           0 \r\n 2008          169           27.106        25.84         9.59          0 \r\n 2008          170           26.185        27.49         14.02         0 \r\n 2008          171           20.044        27.52         14.79         0 \r\n 2008          172           26.628        29.71         13.98         0 \r\n 2008          173           24.981        27.47         13.18         0 \r\n 2008          174           27.931        26.76         13.41         0 \r\n 2008          175           22.774        25.94         11.95         0 \r\n 2008          176           21.861        27.3          14.9          2.794 \r\n 2008          177           17.604        29.59         15.24         0 \r\n 2008          178           14.896        24.89         17.05         19.304 \r\n 2008          179           19.717        26.04         15.03         3.556 \r\n 2008          180           15.925        21.1          12.55         2.794 \r\n 2008          181           21.144        25.23         13.47         0 \r\n 2008          182           23.436        26.16         10.9          0 \r\n 2008          183           23.601        28.77         13.49         0 \r\n 2008          184           20.506        26.964        14.111        0 \r\n 2008          185           28.243        24.344        9.668         0 \r\n 2008          186           25.545        27.013        12.445        0 \r\n 2008          187           25.085        27.418        17.187        5.283 \r\n 2008          188           11.463        29.59         18.87         4.064 \r\n 2008          189           18.824        29.777        18.889        8.103 \r\n 2008          190           24.678        27.37         16.43         0 \r\n 2008          191           24.238        29.054        15.556        0 \r\n 2008          192           19.739        29.89         18.16         2.54 \r\n 2008          193           27.15         32.499        22.222        0 \r\n 2008          194           21.528        24.86         14.36         0 \r\n 2008          195           29.788        27.758        12.778        0 \r\n 2008          196           22.264        29.85         12.81         0 \r\n 2008          197           20.684        30.6          16.4          0 \r\n 2008          198           22.509        29.08         17.18         0 \r\n 2008          199           11.454        28            20.19         2.54 \r\n 2008          200           13.096        26.98         18.31         0 \r\n 2008          201           13.212        27.83         17.07         8.636 \r\n 2008          202           22.437        29.5          14.19         6.35 \r\n 2008          203           23.501        26.69         17.32         3.556 \r\n 2008          204           24.786        26.94         15.67         0 \r\n 2008          205           11.888        23.48         16.11         2.54 \r\n 2008          206           13.591        25.37         17.23         9.906 \r\n 2008          207           21.345        28.89         18.1          0 \r\n 2008          208           21.692        26.92         14.7          0 \r\n 2008          209           14.268        26.94         18.98         0 \r\n 2008          210           22.711        28.88         19.7          0 \r\n 2008          211           22.093        30.6          20.2          0 \r\n 2008          212           16.436        29.53         17.57         0 \r\n 2008          213           21.013        29.83         18.4          0 \r\n 2008          214           25.777        28.07         14.72         0 \r\n 2008          215           24.463        27.17         13.73         0 \r\n 2008          216           22.384        33.79         20.48         0 \r\n 2008          217           12.889        26.74         18.85         2.286 \r\n 2008          218           19.276        27.58         15.33         0 \r\n 2008          219           12.852        26.69         14.84         4.064 \r\n 2008          220           23.627        26.73         13.25         0 \r\n 2008          221           20.673        27.29         12.41         0 \r\n 2008          222           24.017        28.77         15.74         0 \r\n 2008          223           20.698        26.16         17.33         0 \r\n 2008          224           12.135        24.28         16.55         0 \r\n 2008          225           22.889        27.82         15.25         13.208 \r\n 2008          226           21.891        27.56         13.16         0 \r\n 2008          227           23.698        27.57         13.333        0 \r\n 2008          228           19.756        24.42         13.51         0 \r\n 2008          229           23.393        26.9          12.64         0 \r\n 2008          230           22.597        26.63         11.44         0 \r\n 2008          231           23.286        28.22         14.34         0 \r\n 2008          232           18.487        27.93         14.33         0 \r\n 2008          233           21.331        26.57         13.37         0 \r\n 2008          234           7.173         21.65         16.27         0 \r\n 2008          235           14.297        27.61         13.49         0 \r\n 2008          236           23.289        23.68         8.93          0 \r\n 2008          237           21.677        24.67         8.39          0 \r\n 2008          238           22.278        24.51         9.14          0 \r\n 2008          239           21.184        24.29         11.45         0 \r\n 2008          240           8.64          24.06         16.85         12.7 \r\n 2008          241           19.485        26.6          9.71          0.254 \r\n 2008          242           21.907        27.06         7.6           0 \r\n 2008          243           21.882        28.05         11.76         0 \r\n 2008          244           16.801        28.27         15.27         0 \r\n 2008          245           20.157        29.65         18.92         0 \r\n 2008          246           9.525         22.64         7.85          36.83 \r\n 2008          247           21.25         19.37         6.024         0 \r\n 2008          248           20.285        21.29         6.883         0 \r\n 2008          249           8.593         16.86         6.767         1.524 \r\n 2008          250           11.627        18.87         8.29          0.254 \r\n 2008          251           13.688        20.26         8.38          0.254 \r\n 2008          252           13.229        18.69         5.284         6.858 \r\n 2008          253           17.745        20.22         3.723         0 \r\n 2008          254           8.311         22.36         12.81         0 \r\n 2008          255           12.607        24.68         14.69         14.732 \r\n 2008          256           6.74          17.8          13.05         0 \r\n 2008          257           9.804         22.71         11.1          2.032 \r\n 2008          258           5.96          15.1          4.771         0.762 \r\n 2008          259           19.13         22.02         2.227         0 \r\n 2008          260           19.409        27.18         7.19          0 \r\n 2008          261           18.757        28.79         9.13          0 \r\n 2008          262           18.552        26.04         11.16         0 \r\n 2008          263           18.17         26.03         11.25         0 \r\n 2008          264           17.005        26.52         11.73         0 \r\n 2008          265           17.308        25.9          12.99         0 \r\n 2008          266           10.653        23.64         16.7          0.254 \r\n 2008          267           9.572         25.07         13.24         2.794 \r\n 2008          268           17.802        25.74         7.84          0 \r\n 2008          269           11.5          26.54         13.8          5.842 \r\n 2008          270           16.775        28.56         15.49         0 \r\n 2008          271           17.016        23.86         9.06          0 \r\n 2008          272           11.932        22.53         8.48          8.89 \r\n 2008          273           16.84         20.35         4.686         0 \r\n 2008          274           16.414        22.13         2.187         0 \r\n 2008          275           16.399        17.94         4.329         0 \r\n 2008          276           16.409        21.02         0.928         0 \r\n 2008          277           15.805        19.85         4.573         0 \r\n 2008          278           14.546        22.06         6.569         0 \r\n 2008          279           8.761         23.66         12.74         4.57 \r\n 2008          280           8.643         24.43         16.71         0 \r\n 2008          281           10.035        18.42         3.203         36.83 \r\n 2008          282           15.301        22.04         1.982         0 \r\n 2008          283           12.975        18.7          2.574         0 \r\n 2008          284           13.472        23.798        9.207         0 \r\n 2008          285           6.619         20.081        11.095        0 \r\n 2008          286           6.195         24.18         16.97         0 \r\n 2008          287           5.774         19.71         1.135         9.4 \r\n 2008          288           5.784         12.756        1.078         0 \r\n 2008          289           14.008        12.034        1.183         2.79 \r\n 2008          290           11.788        13.36        -3.562         0 \r\n 2008          291           3.231         8.89          5.273         4.57 \r\n 2008          292           13.224        14.35         0.533         0 \r\n 2008          293           8.532         19.03         8.94          0 \r\n 2008          294           13.468        15.14        -0.265         0 \r\n 2008          295           3.52          6.922        -0.811         0 \r\n 2008          296           0.655         6.025         4.733         36.83 \r\n 2008          297           1.88          5.047         3.797         27.43 \r\n 2008          298           3.185         9.3           2.09          0 \r\n 2008          299           12.172        17.53         1.37          0 \r\n 2008          300           11.263        9.39          0.074         0 \r\n 2008          301           11.632        4.327        -5.45          0 \r\n 2008          302           12.232        11.74        -7.03          0 \r\n 2008          303           11.993        17.57        -2.807         0 \r\n 2008          304           10.751        22.74         2.547         0 \r\n 2008          305           11.138        18.77         1.668         0 \r\n 2008          306           10.823        18.78         1.657         0 \r\n 2008          307           10.414        23.4          10.95         0 \r\n 2008          308           10.436        24.4          12.06         0 \r\n 2008          309           8.593         22.25         8.79          0 \r\n 2008          310           4.031         19.54         6.282         0 \r\n 2008          311           5.395         7.92         -1.103         19.05 \r\n 2008          312           3.589         0.248        -2.138         3.81 \r\n 2008          313           4.439        -1.713        -5.175         0 \r\n 2008          314           6.212        -3.687        -7.89          0 \r\n 2008          315           7.765        -0.744        -8.4           0 \r\n 2008          316           2.407         0.383        -1.337         8.13 \r\n 2008          317           2.934         1.624        -0.012         0 \r\n 2008          318           1.999         7.99          1.255         2.79 \r\n 2008          319           3.252         6.005        -1.422         0 \r\n 2008          320           7.913         1.547        -4.753         1.78 \r\n 2008          321           4.915         4.214        -2.996         0 \r\n 2008          322           5.831         0.852        -8.68          0 \r\n 2008          323           5.404         1.755        -11.43         0 \r\n 2008          324           5.971         3.467        -2.959         0 \r\n 2008          325           9.262        -2.354        -14.76         0 \r\n 2008          326           7.542        -2.516        -17.54         0 \r\n 2008          327           3.435         1.267        -4.249         2.54 \r\n 2008          328           5.115         3.958        -7.4           0 \r\n 2008          329           8.963         4.535        -7.57          0 \r\n 2008          330           8.605         4.184        -10.8          0 \r\n 2008          331           8.594         7.6          -7.92          0 \r\n 2008          332           8.243         5.749        -5.527         0 \r\n 2008          333           8.809         6.434        -7.6           0 \r\n 2008          334           1.644         1.624        -6.96          0 \r\n 2008          335           6.342         0.23         -6.244         0 \r\n 2008          336           7.379        -2.355        -11.64         0 \r\n 2008          337           6.94          8.71         -11.28         0 \r\n 2008          338           7.949        -1.698        -14.38         1.52 \r\n 2008          339           7.096        -8.36         -12.31         0 \r\n 2008          340           5.109         1.161        -14.65         0 \r\n 2008          341           7.865         1.576        -16.51         0 \r\n 2008          342           6.434        -1.453        -13.7          0 \r\n 2008          343           1.718        -2.893        -7.83          0 \r\n 2008          344           7.168        -6.153        -18.04         11.94 \r\n 2008          345           4.996        -0.774        -19.37         0 \r\n 2008          346           5.193         1.038        -10.01         0 \r\n 2008          347           8.027         2.044        -10.85         0 \r\n 2008          348           6.946         5.16         -2.439         0 \r\n 2008          349           2.922         3.913        -21.68         0 \r\n 2008          350           7.741        -19.93        -24.94         2.79 \r\n 2008          351           3.633        -15.42        -23.84         5.33 \r\n 2008          352           6.182        -14           -23.35         0 \r\n 2008          353           7.191        -7.42         -16.05         0 \r\n 2008          354           5.245        -9.22         -15.72         20.57 \r\n 2008          355           5.525        -8.65         -22.65         3.05 \r\n 2008          356           7.067        -19.77        -23.52         0 \r\n 2008          357           7.049        -11.27        -27.16         0 \r\n 2008          358           6.897        -4.516        -14.16         1.27 \r\n 2008          359           7.7          -14.16        -19.84         0 \r\n 2008          360           7.267        -1.649        -18.73         0 \r\n 2008          361           3.217         6.292        -5.568         0 \r\n 2008          362           6.146        -6.111        -13.007        0 \r\n 2008          363           7.815         1.058        -13.41         0 \r\n 2008          364           7.739         0.934        -7.21          0 \r\n 2008          365           4.454        -0.728        -16.55         0 \r\n 2008          366           6.822        -7.59         -21.84         0 \r\n 2009          1             4.338         1.104        -8.73          0 \r\n 2009          2             6.923        -7.04         -13.92         0 \r\n 2009          3             0.967        -4.298        -13.61         0 \r\n 2009          4             8.773        -11.12        -20.41         0 \r\n 2009          5             8.416        -0.015        -14.71         0 \r\n 2009          6             8.113        -0.944        -8.99          0 \r\n 2009          7             6.077        -6.553        -16.5          0 \r\n 2009          8             5.517        -5.925        -18.45         0 \r\n 2009          9             6.161        -6.111        -11.667        3.56 \r\n 2009          10            8.427        -4.944        -15.558        11.43 \r\n 2009          11            4.868        -3.84         -9.92          0 \r\n 2009          12            3.621         0.632        -20.341        3.3 \r\n 2009          13            7.202        -16.09        -25.91         1.78 \r\n 2009          14            8.931        -16.84        -28.86         5.33 \r\n 2009          15            10.156       -24.99        -33.26         0 \r\n 2009          16            8.314        -7.891        -29.444        0 \r\n 2009          17            4.227         1.027        -8.871         0 \r\n 2009          18            8.076         2.019        -7.018         0.51 \r\n 2009          19            4.388        -1.297        -10.657        0 \r\n 2009          20            7.885        -2.122        -9.014         0 \r\n 2009          21            9.849         4.345        -6.644         0 \r\n 2009          22            10.087        7.248        -8.138         0 \r\n 2009          23            5.996        -1.201        -18.754        0 \r\n 2009          24            8.541        -13.048       -21.401        0 \r\n 2009          25            8.34         -12.796       -18.708        0 \r\n 2009          26            7.189        -12.173       -17.398        0.51 \r\n 2009          27            7.687        -10.083       -20.104        0 \r\n 2009          28            8.828         0.023        -19.877        0 \r\n 2009          29            9.244        -2.16         -10.494        0 \r\n 2009          30            6.724        -0.538        -12.311        0 \r\n 2009          31            11.01         8.276        -3.154         0 \r\n 2009          32            10.214        2.92         -5.012         0 \r\n 2009          33            11.247       -5.8          -20.62         0 \r\n 2009          34            11.752       -12.31        -23.04         0 \r\n 2009          35            11.539       -6.021        -21.78         0 \r\n 2009          36            11.654        3.7          -7.74          0 \r\n 2009          37            9.82          6.528        -6.55          0 \r\n 2009          38            10.985        4.429        -5.502         0 \r\n 2009          39            10.415        3.512        -9.08          0 \r\n 2009          40            3.081         9.67          1.171         1.02 \r\n 2009          41            12.276        9.79         -0.538         4.06 \r\n 2009          42            5.082         2.892        -2.139         0 \r\n 2009          43            12.915        3.42         -4.199         0 \r\n 2009          44            4.259        -4.199        -8.25          0 \r\n 2009          45            11.6         -1.452        -11.49         0 \r\n 2009          46            12.944        0.202        -12.67         0 \r\n 2009          47            11.962        4.848        -8.18          0 \r\n 2009          48            9.976         8.97         -3.764         0 \r\n 2009          49            12.107       -0.437        -14.56         0 \r\n 2009          50            13.74        -3.747        -17.19         0 \r\n 2009          51            7.666         4.622        -11.111        0 \r\n 2009          52            13.238       -4.686        -13.108        0 \r\n 2009          53            14.985       -3.052        -15.231        0 \r\n 2009          54            12.386        2.418        -14.184        0 \r\n 2009          55            14.428        13.734       -3.427         0 \r\n 2009          56            13.704        8.292        -2.994         0 \r\n 2009          57            2.205        -1.747        -14.069        9.65 \r\n 2009          58            8.315        -10.358       -16.819        0 \r\n 2009          59            15.921       -9.868        -17.549        0 \r\n 2009          60            15.758       -9.981        -22.067        0 \r\n 2009          61            14.732       -3.101        -14.284        0 \r\n 2009          62            13.419        1.099        -8.484         0 \r\n 2009          63            16.107        8.38         -4.932         0 \r\n 2009          64            15.358        13.083        1.108         0 \r\n 2009          65            16.675        11.712       -1.939         0 \r\n 2009          66            3.457         2.486        -3.715         0 \r\n 2009          67            9.359         3.973        -3.337         10.67 \r\n 2009          68            2.784         2.428        -4.171         0 \r\n 2009          69            4.556        -3.298        -16.149        1.27 \r\n 2009          70            17.473       -11.083       -19.002        0 \r\n 2009          71            16.179       -2.624        -17.517        0 \r\n 2009          72            18.065        7.249        -8.192         0 \r\n 2009          73            18.915        11.546       -3.006         0 \r\n 2009          74            18.292        14.804       -0.386         0 \r\n 2009          75            18.901        22.934        0.883         0 \r\n 2009          76            18.388        15.199        2.244         0 \r\n 2009          77            15.734        13.345       -0.545         0 \r\n 2009          78            17.257        12.95        -3.193         0 \r\n 2009          79            4.121         11.12         0.494         0 \r\n 2009          80            19.131        20.35        -1.534         0 \r\n 2009          81            7.274         17.76         6.314         0 \r\n 2009          82            2.997         15.03         7.41          10.92 \r\n 2009          83            15.085        8.03         -1.789         7.11 \r\n 2009          84            13.166        6.959        -3.051         0 \r\n 2009          85            8.563         1.33         -5.481         0 \r\n 2009          86            17.22        -0.444        -8.98          0 \r\n 2009          87            20.797        4.174        -6.445         0 \r\n 2009          88            20.867        8.63         -7.82          0 \r\n 2009          89            16.336        13.19        -0.076         0 \r\n 2009          90            4.502         7.67         -1.911         1.52 \r\n 2009          91            22.07         6.965        -4.81          0 \r\n 2009          92            19.181        8.82         -7.05          0 \r\n 2009          93            21.466        12.11        -7.52          0 \r\n 2009          94            4.528         7.35         -0.095         0 \r\n 2009          95            18.19         1.574        -4.993         0 \r\n 2009          96            21.86         2.704        -6.184         0 \r\n 2009          97            23.149        9.07         -7.67          0 \r\n 2009          98            22.271        12.28        -3.337         0 \r\n 2009          99            14.534        9.36         -2.626         0 \r\n 2009          100           20.436        10.72        -1.552         0 \r\n 2009          101           22.73         15.95        -4.887         0 \r\n 2009          102           14.092        12.79         1.671         0 \r\n 2009          103           15.637        14.01        -2.156         0 \r\n 2009          104           24.566        17.49        -4.831         0 \r\n 2009          105           17.624        19.19        -0.029         0 \r\n 2009          106           6.577         18.68         8.7           0 \r\n 2009          107           22.749        21.36         6.178         0 \r\n 2009          108           6.02          14.92         5.295         5.334 \r\n 2009          109           17.538        14.31         2.612         0 \r\n 2009          110           13.159        11.21        -1.854         0 \r\n 2009          111           17.817        15.63        -2.379         0 \r\n 2009          112           24.629        23.42        -0.492         0 \r\n 2009          113           24.981        29.06         10.39         0 \r\n 2009          114           23.155        24.24         4.328         0.508 \r\n 2009          115           7.634         8.18          2.976         8.128 \r\n 2009          116           1.569         14.88         6.52          20.066 \r\n 2009          117           8.773         7.51          0.582         0 \r\n 2009          118           18.344        14.45        -0.227         0.508 \r\n 2009          119           2.986         13.52         8.46          5.588 \r\n 2009          120           19.528        16.61         6.722         0 \r\n 2009          121           22.678        15.1          3.517         0 \r\n 2009          122           26.919        18.07         0.751         0 \r\n 2009          123           24.777        20.72         2.867         0 \r\n 2009          124           19.479        20.87         5.218         1.778 \r\n 2009          125           15.539        22.79         10.41         2.032 \r\n 2009          126           8.636         21.33         10.79         1.27 \r\n 2009          127           17.261        21.33         8.35          7.112 \r\n 2009          128           11.479        18.59         5.398         6.35 \r\n 2009          129           25.123        17.64         2.782         0 \r\n 2009          130           26.427        15.63         1.576         0 \r\n 2009          131           26.238        20.22         2.355         0 \r\n 2009          132           9.32          19.33         10.47         0.508 \r\n 2009          133           16.046        20.87         6.213         6.858 \r\n 2009          134           22.412        18.42         4.858         0 \r\n 2009          135           9.737         18.94         5.282         1.27 \r\n 2009          136           28.75         15.79         1.568         0 \r\n 2009          137           11.956        15.86         3.547         0 \r\n 2009          138           26.593        28.41         8.28          0 \r\n 2009          139           27.559        32.62         14.87         0 \r\n 2009          140           26.277        30.67         17.58         0 \r\n 2009          141           12.406        21.76         12.41         0 \r\n 2009          142           5.389         17.09         11.14         12.446 \r\n 2009          143           10.709        18.5          13.7          0 \r\n 2009          144           13.711        23.64         10.84         0 \r\n 2009          145           27.011        26.49         14.65         0 \r\n 2009          146           7.831         18.59         11.27         0 \r\n 2009          147           5.434         15.73         10.44         0 \r\n 2009          148           27.806        27.98         6.055         0 \r\n 2009          149           28.354        26.33         11.39         0 \r\n 2009          150           29.478        24.61         9.53          0 \r\n 2009          151           22.131        29.83         8.08          0 \r\n 2009          152           24.28         26.8          15.47         0 \r\n 2009          153           22.852        24.57         10.34         0 \r\n 2009          154           23.02         20.47         6.978         0 \r\n 2009          155           25.874        22.64         9.87          0 \r\n 2009          156           26.683        27.2          10.36         0.254 \r\n 2009          157           3.53          13.43         8.76          15.494 \r\n 2009          158           4.612         12.78         9.8           1.778 \r\n 2009          159           7.553         16.52         8.56          0.254 \r\n 2009          160           10.574        18.75         5.948         0 \r\n 2009          161           15.397        20.34         11.13         0 \r\n 2009          162           16.032        22.31         11.38         0 \r\n 2009          163           3.963         16.09         9.52          14.224 \r\n 2009          164           19.253        22.12         7.72          0 \r\n 2009          165           15.705        23.4          13.13         0 \r\n 2009          166           5.85          19.37         13.54         9.144 \r\n 2009          167           10.139        24.85         16.47         0 \r\n 2009          168           16.553        31.25         17.56         0.508 \r\n 2009          169           12.879        28.95         16.53         11.938 \r\n 2009          170           8.886         25.83         16.88         0.254 \r\n 2009          171           15.283        28.27         13.52         0 \r\n 2009          172           10.889        28.93         19.31         2.286 \r\n 2009          173           23.933        34.09         17.21         0 \r\n 2009          174           16.194        31.58         18.21         4.318 \r\n 2009          175           17.632        28.65         18.18         3.556 \r\n 2009          176           24.021        31.37         19.82         0.254 \r\n 2009          177           15.269        29.24         18.6          0.254 \r\n 2009          178           20.098        27.41         13.64         0.762 \r\n 2009          179           27.525        27.09         11.38         0 \r\n 2009          180           27.003        28.51         11.33         0 \r\n 2009          181           27.318        25.52         11.62         0 \r\n 2009          182           26.2          27.35         11.04         0 \r\n 2009          183           26.8          28.59         11.01         0 \r\n 2009          184           5.25          22.28         15.01         14.224 \r\n 2009          185           6.872         20.85         14.62         13.716 \r\n 2009          186           26            26.54         13.31         0 \r\n 2009          187           26.067        28.71         13.52         0 \r\n 2009          188           22.684        28.32         15.38         21.844 \r\n 2009          189           12.902        23.13         15.51         0 \r\n 2009          190           7.547         26.16         15.41         12.192 \r\n 2009          191           17.479        27.14         17.31         4.826 \r\n 2009          192           17.056        24.52         15.08         0 \r\n 2009          193           17.416        23.68         16.05         2.794 \r\n 2009          194           21.264        25.34         14.49         0.254 \r\n 2009          195           16.358        27.4          16.74         5.842 \r\n 2009          196           25.473        24.32         14.68         0.254 \r\n 2009          197           16.722        20.8          9.2           2.032 \r\n 2009          198           17.328        20.21         8.28          0 \r\n 2009          199           24.39         21.92         7.66          0 \r\n 2009          200           25.526        22.86         5.961         0 \r\n 2009          201           12.161        22.47         14.34         7.874 \r\n 2009          202           16.083        25.01         12.18         0.254 \r\n 2009          203           24.752        26.58         10.28         0.508 \r\n 2009          204           25.943        26.63         11.33         0.254 \r\n 2009          205           22.659        28.82         13.55         0 \r\n 2009          206           23.946        25.27         11.72         0 \r\n 2009          207           26.336        26.23         11.49         0 \r\n 2009          208           22.027        27.34         16.05         0 \r\n 2009          209           24.108        23.57         10.64         0 \r\n 2009          210           17.759        24.91         8.02          11.43 \r\n 2009          211           23.706        22.01         10.46         0 \r\n 2009          212           24.748        25.72         8.96          6.858 \r\n 2009          213           24.407        20.92         10.33         0 \r\n 2009          214           25.462        28.16         9.31          14.732 \r\n 2009          215           24.027        26.95         15.14         0 \r\n 2009          216           24.43         23.01         13.01         0 \r\n 2009          217           23.469        26.13         10.99         0 \r\n 2009          218           15.204        23.77         12.63         0.254 \r\n 2009          219           11.999        29.03         18.7          1.016 \r\n 2009          220           22.508        31.28         21.04         0 \r\n 2009          221           18.129        26.78         17.13         0.254 \r\n 2009          222           22.324        25.78         14.04         0 \r\n 2009          223           23.917        28.37         12.24         0 \r\n 2009          224           23.762        31.04         16.91         0 \r\n 2009          225           20.871        29.7          18.11         0 \r\n 2009          226           22.988        29.17         18.52         0 \r\n 2009          227           9.174         25.25         19.04         3.302 \r\n 2009          228           15.591        23.09         11.44         10.668 \r\n 2009          229           21.464        25.17         9.52          0 \r\n 2009          230           23.802        24.76         8.41          0 \r\n 2009          231           13.816        24.39         14.49         5.08 \r\n 2009          232           18.328        21.95         12.33         3.048 \r\n 2009          233           18.035        20.72         10.03         0 \r\n 2009          234           22            23.92         8.75          0 \r\n 2009          235           23.039        25.01         10.89         0 \r\n 2009          236           21.696        27.77         14.22         0 \r\n 2009          237           8.278         22.59         17.12         4.318 \r\n 2009          238           8.442         20.38         14.46         0 \r\n 2009          239           22.987        23.38         10.36         0 \r\n 2009          240           20.243        24.56         9.7           0 \r\n 2009          241           22.151        19.13         7.01          0 \r\n 2009          242           22.236        19.51         4.156         0 \r\n 2009          243           22.792        20.56         2.895         0 \r\n 2009          244           22.122        21.62         5.561         0 \r\n 2009          245           16.504        23.1          11.68         0 \r\n 2009          246           14.98         22.66         10.31         2.54 \r\n 2009          247           21.556        23.78         7.88          0 \r\n 2009          248           18.952        25.49         9.8           0 \r\n 2009          249           19.766        25.53         12.03         0 \r\n 2009          250           17.731        24.24         10.15         0 \r\n 2009          251           14.634        26.91         16.5          0 \r\n 2009          252           16.839        27.36         13.48         0 \r\n 2009          253           19.617        26.52         9.49          0 \r\n 2009          254           11.913        26.64         12.95         5.08 \r\n 2009          255           10.566        24            15.6          9.144 \r\n 2009          256           17.185        26.33         13.2          0 \r\n 2009          257           11.431        25.14         11.23         0 \r\n 2009          258           18.221        26.04         10.43         0 \r\n 2009          259           16.133        28.01         10.2          0 \r\n 2009          260           16.299        28.5          11.46         0 \r\n 2009          261           18.257        27.67         11.17         0 \r\n 2009          262           16.55         25.67         9.96          0 \r\n 2009          263           17.439        26.16         11.41         0 \r\n 2009          264           4.368         17.88         8.87          6.858 \r\n 2009          265           9.976         20.62         7.33          0 \r\n 2009          266           9.801         22.08         7.87          0 \r\n 2009          267           11.259        22.37         11.37         0 \r\n 2009          268           13.13         21.68         10.97         5.334 \r\n 2009          269           14.876        22.62         11.04         0 \r\n 2009          270           17.156        24.02         9.05          0 \r\n 2009          271           15.731        15.77         3.459         0 \r\n 2009          272           17.672        19.05         1.633         0 \r\n 2009          273           15.628        20.11         4.093         0 \r\n 2009          274           1.601         15.4          6.255         21.59 \r\n 2009          275           3.133         9.47          5.371         10.41 \r\n 2009          276           8.689         11.35         1.625         0.76 \r\n 2009          277           9.149         12.46         0.45          0 \r\n 2009          278           1.934         8.12          5.303         5.33 \r\n 2009          279           5.06          9.55          0.496         11.68 \r\n 2009          280           15.864        20.3         -1.083         0 \r\n 2009          281           8.439         9.81          1.446         5.59 \r\n 2009          282           14.915        9.88         -3.677         0 \r\n 2009          283           13.757        3.25         -7.45          1.52 \r\n 2009          284           6.354         2.795        -8.02          0 \r\n 2009          285           4.002         2.373        -2.911         4.06 \r\n 2009          286           7.747         5.805        -4.427         0 \r\n 2009          287           2.718         4.402        -0.303         0 \r\n 2009          288           3.097         7.05          2.78          10.41 \r\n 2009          289           2.956         4.932         2.213         0 \r\n 2009          290           8.223         8.64         -0.058         0 \r\n 2009          291           13.552        16.64         0.196         0 \r\n 2009          292           9.967         19.22         3.072         0 \r\n 2009          293           5.515         17.39         6.274         0 \r\n 2009          294           1.221         10.48         2.807         12.19 \r\n 2009          295           1.513         3.551         1.435         7.62 \r\n 2009          296           7.759         7.92         -1.402         26.16 \r\n 2009          297           6.101         10.85        -2.069         0 \r\n 2009          298           4.578         8.86         -0.998         0 \r\n 2009          299           11.566        11.7         -2.795         0 \r\n 2009          300           12.598        13.69         0.054         0 \r\n 2009          301           5.136         12.17         4.676         0 \r\n 2009          302           1.391         11.36         9.36          5.59 \r\n 2009          303           4.063         13.41         0.608         7.87 \r\n 2009          304           11.71         8.62         -2.07          0 \r\n 2009          305           10.185        19.42         2.411         0 \r\n 2009          306           11.395        11.61        -1.535         0 \r\n 2009          307           2.062         7.81         -4.895         0 \r\n 2009          308           9.974         9.22         -3.42          0 \r\n 2009          309           10.291        15.54        -3.362         0 \r\n 2009          310           9.014         20.59         4.932         0 \r\n 2009          311           10.563        18.86         3.77          0 \r\n 2009          312           10.303        19.96         3.41          0 \r\n 2009          313           9.597         16.57        -1.195         0 \r\n 2009          314           10.234        15.88        -1.512         0 \r\n 2009          315           9.036         14.6          1.849         0 \r\n 2009          316           4.311         15.3          6.304         0 \r\n 2009          317           0.897         11.51         5.587         0.25 \r\n 2009          318           5.723         9.44         -0.631         1.02 \r\n 2009          319           5.152         7.39         -5.125         0 \r\n 2009          320           6.593         8.7          -2.957         0 \r\n 2009          321           7.034         10           -3.631         0 \r\n 2009          322           5.131         10.14        -4.106         0 \r\n 2009          323           1.383         6.788         0.458         0 \r\n 2009          324           6.444         9.08         -3.271         0 \r\n 2009          325           6.014         12.2         -3.705         0 \r\n 2009          326           4.064         14.85         7.87          0 \r\n 2009          327           3.428         10.7          5.444         0 \r\n 2009          328           0.909         5.674         0.736         29.21 \r\n 2009          329           1.584         2.18          0.062         0 \r\n 2009          330           7.604         2.534        -4.122         0 \r\n 2009          331           6.837         9.63         -4.612         0 \r\n 2009          332           7.635         9.74         -3.518         0 \r\n 2009          333           2.419         1.32         -4.715         0 \r\n 2009          334           8.032         10           -6.193         0 \r\n 2009          335           6.819         10.21        -3.234         0 \r\n 2009          336           3.547         0.478        -6.921         0 \r\n 2009          337           5.112        -5.815        -14.35         0.76 \r\n 2009          338           4.888        -6.591        -14.97         0 \r\n 2009          339           6.094        -1.732        -12.34         0 \r\n 2009          340           3.49         -7.32         -12.02         0 \r\n 2009          341           6.86         -8.05         -16.13         1.02 \r\n 2009          342           2.763        -8.01         -12.7          3.81 \r\n 2009          343           6.309        -12.7         -21.87         5.59 \r\n 2009          344           7.751        -8.86         -24.55         0 \r\n 2009          345           8.03         -6.089        -20.2          0 \r\n 2009          346           6.473         0.812        -14.43         0 \r\n 2009          347           5.073        -3.187        -16.3          0 \r\n 2009          348           5.568        -11.92        -20.41         0 \r\n 2009          349           8.003        -15.83        -23.29         0 \r\n 2009          350           7.282        -6.416        -17.87         0 \r\n 2009          351           7.095        -4.03         -10.05         0 \r\n 2009          352           6.35         -3.301        -12.17         0 \r\n 2009          353           2.325        -7.03         -8.39          0 \r\n 2009          354           3.719        -2.6          -7.15          0 \r\n 2009          355           2.781        -3.859        -6.57          0 \r\n 2009          356           2.72         -3.015        -5.921         1.78 \r\n 2009          357           1.593        -1.948        -3.015         1.02 \r\n 2009          358           3.165        -2.893        -12.5          22.1 \r\n 2009          359           3.471        -0.153        -12.48         16 \r\n 2009          360           4.49         -5.077        -10.2          2.03 \r\n 2009          361           5.311        -3.202        -18.13         0.51 \r\n 2009          362           7.386        -6.796        -23.11         0 \r\n 2009          363           6.881        -11.01        -24.14         0 \r\n 2009          364           4.119        -3.622        -17.25         1.27 \r\n 2009          365           7.713        -13.34        -22.76         0 \r\n 2010          1             7.796        -17.15        -31.86         0 \r\n 2010          2             6.904        -20.8         -34.6          0 \r\n 2010          3             5.53         -16.42        -29.29         0 \r\n 2010          4             8.527        -19.15        -32.21         0 \r\n 2010          5             8.468        -14.64        -27.32         0 \r\n 2010          6             4.002        -12.6         -17.6          8.13 \r\n 2010          7             6.55         -12.93        -21.69         4.32 \r\n 2010          8             5.984        -19.28        -21.99         0 \r\n 2010          9             7.166        -16.96        -28.77         0 \r\n 2010          10            7.39         -4.974        -21.52         0 \r\n 2010          11            8.588        -6.795        -19.85         0 \r\n 2010          12            7.955        -5.068        -20.31         0 \r\n 2010          13            8.966         0.549        -7.99          0 \r\n 2010          14            5.137        -2.288        -10.01         0 \r\n 2010          15            6.159        -5.099        -8.47          0 \r\n 2010          16            8.821         0.372        -9.72          0 \r\n 2010          17            6.794        -1.395        -12.43         0 \r\n 2010          18            6.334        -4.573        -14.21         0 \r\n 2010          19            4.729        -6.535        -10.48         0 \r\n 2010          20            2.814        -2.042        -7.45          7.11 \r\n 2010          21            3.341        -0.541        -2.722         0 \r\n 2010          22            3.314         0.148        -2.402         0 \r\n 2010          23            2.201         1.312        -2.141         7.87 \r\n 2010          24            5.211        -0.189        -7.01          0 \r\n 2010          25            6.705        -5.431        -13.31         3.3 \r\n 2010          26            10.32        -11.58        -15.74         0 \r\n 2010          27            9.266        -7.88         -18.02         0 \r\n 2010          28            10.554       -15.68        -22.15         0 \r\n 2010          29            11.248       -12.63        -25.59         0 \r\n 2010          30            8.426        -8.51         -15.46         0 \r\n 2010          31            8.616        -11.28        -15.88         0 \r\n 2010          32            5.15         -7.76         -14.77         6.86 \r\n 2010          33            11.092       -11.92        -21.28         0 \r\n 2010          34            8.9          -4.487        -22.98         0 \r\n 2010          35            5.31          1.301        -4.487         1.52 \r\n 2010          36            7.752        -0.793        -3.828         2.79 \r\n 2010          37            8.354        -1.836        -6.153         0 \r\n 2010          38            7.821        -2.137        -6.484         3.56 \r\n 2010          39            12.11        -4.458        -27.78         1.52 \r\n 2010          40            10.767       -7.04         -23.57         1.78 \r\n 2010          41            12.594       -10.66        -23.87         0 \r\n 2010          42            9.37         -5.002        -18.78         0 \r\n 2010          43            8.112        -4.754        -9.65          0 \r\n 2010          44            7.062        -3.13         -9.21          3.05 \r\n 2010          45            12.859       -8.87         -14.05         4.32 \r\n 2010          46            11.323       -7.68         -10.48         1.27 \r\n 2010          47            14.079       -6.327        -15.66         0 \r\n 2010          48            14.209       -7.18         -19.01         0 \r\n 2010          49            13.23        -3.046        -17.85         0 \r\n 2010          50            10.094       -1.872        -10.82         1.02 \r\n 2010          51            12.07        -3.441        -11.5          0.25 \r\n 2010          52            11.86        -5.219        -12.08         0 \r\n 2010          53            14.26        -8.34         -14.75         0 \r\n 2010          54            14.836       -10.45        -20.67         0 \r\n 2010          55            15.795       -13.39        -26.73         0 \r\n 2010          56            15.094       -8.73         -23.52         0 \r\n 2010          57            8.68         -4.543        -10.92         0 \r\n 2010          58            16.09        -3.982        -14.25         0 \r\n 2010          59            15.64        -2.63         -19.05         0 \r\n 2010          60            16.289       -0.895        -14.44         0 \r\n 2010          61            15.498        3.155        -13.64         0 \r\n 2010          62            16.642        3.014        -15.17         0 \r\n 2010          63            16.333        1.846        -8.5           0 \r\n 2010          64            16.886        2.588        -6.356         0 \r\n 2010          65            6.451         1.114        -2.864         3.3 \r\n 2010          66            8.617         1.516         0.044         19.05 \r\n 2010          67            8.726         1.63         -0.123         0 \r\n 2010          68            6.878         1.274         0.036         5.08 \r\n 2010          69            7.76          1.321         0.131         13.21 \r\n 2010          70            7.156         1.199         0.064         10.92 \r\n 2010          71            7.357         2.233         0.167         6.86 \r\n 2010          72            7.735         1.746         0.205         0 \r\n 2010          73            10.471        3.975         0.854         0 \r\n 2010          74            5.688         4.876         0.242         0 \r\n 2010          75            4.775         4.326        -0.406         0 \r\n 2010          76            17.156        10.3          0.259         0 \r\n 2010          77            16.757        16.64         0.224         0 \r\n 2010          78            6.095         4.951        -4.669         1.52 \r\n 2010          79            19.266        2.034        -6.416         0 \r\n 2010          80            19.891        8.88         -7.72          0 \r\n 2010          81            18.485        12.65        -4.59          0 \r\n 2010          82            18.264        12.68         0.824         0 \r\n 2010          83            13.09         10.99        -0.792         0 \r\n 2010          84            20.22         6.288        -4.658         0 \r\n 2010          85            16.858        12.37        -3.743         0 \r\n 2010          86            5.073         7.37          2.176         0 \r\n 2010          87            20.764        11.84        -1.564         5.59 \r\n 2010          88            19.804        18.48        -2.599         0 \r\n 2010          89            16.766        23.74         9.44          0 \r\n 2010          90            18.339        23.82         6.487         0 \r\n 2010          91            13.878        27.85         7.45          0 \r\n 2010          92            13.252        18.24         2.621         0 \r\n 2010          93            20.43         17.64        -1.43          0 \r\n 2010          94            14.749        17.35         2.742         0 \r\n 2010          95            11.521        17.46         0.592         0 \r\n 2010          96            2.929         10.17         4.252         0 \r\n 2010          97            20.403        11.31         0.253         0 \r\n 2010          98            22.879        13.76        -3.907         0 \r\n 2010          99            22.562        21.8         -0.432         0 \r\n 2010          100           17.097        17.21         0.15          0 \r\n 2010          101           23.139        21.26        -0.49          0 \r\n 2010          102           12.963        16.95         8.96          10.67 \r\n 2010          103           19.999        25.82         9.16          0 \r\n 2010          104           7.875         20.39         13.49         4.318 \r\n 2010          105           12.36         20.64         7.76          1.27 \r\n 2010          106           21.361        15.63         2.444         0 \r\n 2010          107           23.95         17.06         0.205         0 \r\n 2010          108           18.238        18.21         0.91          0 \r\n 2010          109           22.126        19.95         4.189         0 \r\n 2010          110           18.061        21.49         3.507         0 \r\n 2010          111           20.607        22.82         5.586         0 \r\n 2010          112           22.01         22.62         3.907         0 \r\n 2010          113           2.597         13.28         6.702         2.286 \r\n 2010          114           18.92         22.22         10.99         4.826 \r\n 2010          115           6.003         12.24         7.97          0 \r\n 2010          116           4.567         8.44          4.971         10.414 \r\n 2010          117           16.184        16.45         2.406         0 \r\n 2010          118           19.374        20.73         4.269         0 \r\n 2010          119           15.803        24.52         11.78         3.048 \r\n 2010          120           14.231        18.88         7.2           0.508 \r\n 2010          121           22.114        19.62         4.75          0 \r\n 2010          122           23.058        20.44         2.643         0 \r\n 2010          123           21.449        18.35         1.949         0.254 \r\n 2010          124           18.505        27.86         5.672         0 \r\n 2010          125           21.807        15.57         2.326         3.302 \r\n 2010          126           6.15          12.54         1.05          5.334 \r\n 2010          127           8.57          8.47          3.194         0 \r\n 2010          128           13.623        11.7         -0.061         0 \r\n 2010          129           13.227        14.25        -0.96          0 \r\n 2010          130           4.064         11.29         6.307         7.366 \r\n 2010          131           6.249         7.79          4.857         3.81 \r\n 2010          132           4.119         8.41          4.782         7.112 \r\n 2010          133           2.085         10.92         5.521         0 \r\n 2010          134           4.877         20.74         3.339         0 \r\n 2010          135           3.735         21.42         5.651         0 \r\n 2010          136           4.238         21.6          6.907         0 \r\n 2010          137           4.456         22.49         8.87          0 \r\n 2010          138           6.918         24.85         7.73          0 \r\n 2010          139           7.042         24.9          6.51          0 \r\n 2010          140           4.519         24.16         9.29          0.254 \r\n 2010          141           4.067         21.68         12.27         0 \r\n 2010          142           6.47          30.62         13.06         0 \r\n 2010          143           5.929         31.75         21.47         0 \r\n 2010          144           7.325         33.24         18.15         0 \r\n 2010          145           6.632         26.7          12.49         1.27 \r\n 2010          146           7.992         27.7          12.89         0 \r\n 2010          147           8.997         30.08         9.51          0 \r\n 2010          148           9.043         30.95         11.78         0 \r\n 2010          149           9.25          31.57         15.67         0 \r\n 2010          150           3.53          22.44         9.51          0 \r\n 2010          151           16.82         27.46         6.292         0 \r\n 2010          152           8.741         27.85         13.69         13.716 \r\n 2010          153           18.49         22.84         9.65          0 \r\n 2010          154           20.944        26.69         7.99          15.494 \r\n 2010          155           24.232        28.94         15.88         0.254 \r\n 2010          156           15.898        24.83         12.72         2.032 \r\n 2010          157           29.244        25.92         12.07         0 \r\n 2010          158           7.865         21.94         14.81         0.508 \r\n 2010          159           16.621        23.93         14.58         8.382 \r\n 2010          160           28.788        26.45         12.26         0 \r\n 2010          161           5.403         23.57         14.69         28.702 \r\n 2010          162           21.072        26.9          17.23         28.194 \r\n 2010          163           15.26         22.55         14.88         20.32 \r\n 2010          164           5.591         18.66         14.55         0.762 \r\n 2010          165           6.588         18.69         14.83         2.794 \r\n 2010          166           18.177        21.91         13.2          0 \r\n 2010          167           22.749        29.54         11.21         0 \r\n 2010          168           19.261        31.54         17.81         0.254 \r\n 2010          169           18.164        27.59         14.5          9.398 \r\n 2010          170           26.556        28.31         12.6          0.762 \r\n 2010          171           19.938        27.49         17.95         20.574 \r\n 2010          172           18.682        26.85         17.72         8.89 \r\n 2010          173           25.422        30.67         17.79         22.352 \r\n 2010          174           23.312        24.81         15.41         20.066 \r\n 2010          175           18.001        26.11         13.45         0 \r\n 2010          176           19.316        30.12         15.92         30.734 \r\n 2010          177           22.323        31.83         18.89         42.926 \r\n 2010          178           19.723        26.44         16.88         10.922 \r\n 2010          179           27.724        24.68         12.89         0 \r\n 2010          180           28.31         23.92         10.71         0 \r\n 2010          181           28.198        26.81         12.33         0 \r\n 2010          182           28.777        27.74         15.73         0 \r\n 2010          183           25.007        28.82         16.32         0 \r\n 2010          184           23.209        29.59         20.53         0 \r\n 2010          185           11.07         25.53         19.35         2.286 \r\n 2010          186           12.135        26.32         18.1          8.382 \r\n 2010          187           21.062        28.9          18.81         0 \r\n 2010          188           13.967        26.57         16.05         3.81 \r\n 2010          189           27.133        26.93         14.97         0 \r\n 2010          190           26.417        28.31         14.09         0 \r\n 2010          191           26.426        28.64         14.99         0 \r\n 2010          192           21.459        27.95         17.35         8.636 \r\n 2010          193           14.764        23.56         16.16         3.556 \r\n 2010          194           24.146        29.04         15.95         0 \r\n 2010          195           19.077        31.63         17.16         0 \r\n 2010          196           27.776        28.12         13.38         0 \r\n 2010          197           25.435        30.29         15.09         0.508 \r\n 2010          198           27.164        32.33         16.13         0.508 \r\n 2010          199           25.242        27.92         17.77         0 \r\n 2010          200           14.89         26.29         16.8          13.208 \r\n 2010          201           23.398        28.94         16.32         0 \r\n 2010          202           21.834        27.7          14.84         13.716 \r\n 2010          203           16.768        29.29         19.63         87.122 \r\n 2010          204           20.476        29.81         19.09         3.81 \r\n 2010          205           21.855        26.65         16.18         1.016 \r\n 2010          206           24.306        27.21         14.4          0 \r\n 2010          207           16.539        27.65         16.75         0.762 \r\n 2010          208           25.58         31.19         20.86         0.254 \r\n 2010          209           26.244        25.64         16.13         18.796 \r\n 2010          210           9.171         23.96         16.05         14.224 \r\n 2010          211           21.588        28.44         18            42.926 \r\n 2010          212           25.316        31.4          17.11         0 \r\n 2010          213           25.018        28.87         17.98         0 \r\n 2010          214           25.018        28.87         17.98         19.05 \r\n 2010          215           14.01         29.01         19.06         0.508 \r\n 2010          216           23.428        29.13         18.36         0 \r\n 2010          217           25.11         25.79         15.23         0 \r\n 2010          218           22.548        28.06         14.02         0 \r\n 2010          219           24.465        29.04         17.98         23.622 \r\n 2010          220           22.073        32.06         20.52         30.734 \r\n 2010          221           10.239        26.58         19.52         0 \r\n 2010          222           17.322        30.31         20.19         29.718 \r\n 2010          223           23.862        32.62         20.79         0 \r\n 2010          224           23.742        31.82         20.13         0.254 \r\n 2010          225           19.281        29.93         20.19         0.762 \r\n 2010          226           19.414        29.07         14.81         0.254 \r\n 2010          227           24.214        25.08         13.36         0 \r\n 2010          228           20.14         26.55         10.88         0 \r\n 2010          229           15.43         23.99         15.26         0.508 \r\n 2010          230           18.292        25.16         15.04         0 \r\n 2010          231           21.905        29            18.74         2.794 \r\n 2010          232           17.771        29.32         19.95         1.524 \r\n 2010          233           23.407        32.28         18.47         0 \r\n 2010          234           22.795        30.87         18.86         0 \r\n 2010          235           22.25         28.96         18.51         6.604 \r\n 2010          236           21.954        24.18         11.32         2.032 \r\n 2010          237           23.448        24.52         9.96          0 \r\n 2010          238           22.87         26.55         12.23         0 \r\n 2010          239           23.343        26.86         13.15         0 \r\n 2010          240           22.34         28.48         15.15         0 \r\n 2010          241           20.314        29.92         16.88         0 \r\n 2010          242           20.167        26.12         22.222        0 \r\n 2010          243           13.653        27.563        16.335        9.398 \r\n 2010          244           18.299        24.601        12.802        0 \r\n 2010          245           11.603        21.323        12.295        5.334 \r\n 2010          246           22.11         20.105        8.886         0 \r\n 2010          247           22.15         22.6          6.485         0 \r\n 2010          248           16.628        25.323        11.671        0 \r\n 2010          249           9.24          24.646        11.593        1.016 \r\n 2010          250           21.799        20.902        8.852         0 \r\n 2010          251           15.567        20.784        7.213         17.272 \r\n 2010          252           8.962         22.91         14.711        2.032 \r\n 2010          253           2.836         19.7          14.346        12.192 \r\n 2010          254           20.55         25.051        10.248        0 \r\n 2010          255           20.629        29.342        10.629        0 \r\n 2010          256           18.788        24.772        9.827         0.254 \r\n 2010          257           12.359        26.04         12.196        0 \r\n 2010          258           11.579        26.013        13.347        6.096 \r\n 2010          259           9.739         18.284        10.771        0 \r\n 2010          260           10            22.997        10.904        0 \r\n 2010          261           5.485         13.839        5.363         7.366 \r\n 2010          262           7.968         13.091        7.296         0 \r\n 2010          263           16.422        31.043        11.196        0.254 \r\n 2010          264           13.663        24.208        15.266        4.318 \r\n 2010          265           1.856         25.673        12.133        9.398 \r\n 2010          266           2.223         22.598        10.807        18.796 \r\n 2010          267           17.071        19.402        9.093         0 \r\n 2010          268           10.357        19.238        8.187         9.906 \r\n 2010          269           18.491        19.327        5.675         0.254 \r\n 2010          270           16.484        25.264        7.157         0 \r\n 2010          271           17.79         23.917        9.678         0 \r\n 2010          272           17.06         25.489        10.201        0 \r\n 2010          273           17.508        22.736        7.422         0 \r\n 2010          274           15.512        26.171        7.099         0 \r\n 2010          275           17.684        14.724        2.729         0 \r\n 2010          276           17.177        16.072        0.144         0 \r\n 2010          277           17.033        19.047        2.693         0 \r\n 2010          278           16.175        24.12         6.934         0 \r\n 2010          279           15.68         25.2          5.866         0 \r\n 2010          280           16.262        23.95         0.049         0 \r\n 2010          281           14.936        31.17         9.59          0 \r\n 2010          282           13.406        27.84         10.63         0 \r\n 2010          283           13.99         26.92         9.68          0 \r\n 2010          284           13.613        26            9.42          0 \r\n 2010          285           14.06         22.13         4.225         0 \r\n 2010          286           14.273        18.51         1.916         0 \r\n 2010          287           14.643        20.92         0.901         0 \r\n 2010          288           14.751        19.63        -0.237         0 \r\n 2010          289           13.701        19.39         2.989         0 \r\n 2010          290           11.281        15.54         1.249         0 \r\n 2010          291           13.8          15.71         0.487         0 \r\n 2010          292           11.396        17.41        -0.63          0 \r\n 2010          293           13.158        21.23         1.456         0 \r\n 2010          294           13.481        15.93        -1.591         0 \r\n 2010          295           12.301        24.61         2.169         0 \r\n 2010          296           6.337         22.75         12.25         0 \r\n 2010          297           2.469         14.61         11.1          5.08 \r\n 2010          298           2.857         17.35         9.25          1.02 \r\n 2010          299           4.694         9.38          4.434         9.91 \r\n 2010          300           4.648         6.703         0.974         0 \r\n 2010          301           13.037        6.589        -4.723         0 \r\n 2010          302           12.17         18.29        -4.369         0 \r\n 2010          303           12.135        15.5          1.097         0 \r\n 2010          304           9.392         9.73         -0.34          0 \r\n 2010          305           10.403        12.97        -0.979         0 \r\n 2010          306           11.415        14.32        -1.496         0 \r\n 2010          307           11.591        15.13         0.982         0 \r\n 2010          308           11.832        8.73         -5.289         0 \r\n 2010          309           11.692        8.47         -8.06          0 \r\n 2010          310           10.398        16.13        -2.738         0 \r\n 2010          311           10.01         20.04         1.369         0 \r\n 2010          312           10.722        22.05         6.846         0 \r\n 2010          313           9.26          20.35         3.155         0 \r\n 2010          314           1.619         13.78         1.06          0 \r\n 2010          315           9.336         9.83          4.648         0 \r\n 2010          316           1.516         4.638        -0.077         11.18 \r\n 2010          317           7.558         1.569        -2.427         15.75 \r\n 2010          318           3.574         1.95         -2.918         0 \r\n 2010          319           8.913         7.63         -4.379         0 \r\n 2010          320           1.492         3.273         1.201         0.51 \r\n 2010          321           4.158         2.919        -2.975         0 \r\n 2010          322           4.897         1.125        -3.517         0 \r\n 2010          323           7.799         4.023        -5.604         0 \r\n 2010          324           2.712        -0.829        -7.56          0 \r\n 2010          325           1.465         0.981        -2.863         0 \r\n 2010          326           3.001        -2.824        -10.02         0 \r\n 2010          327           9.765        -3.652        -13.23         0 \r\n 2010          328           0.559        -0.857        -12            0 \r\n 2010          329           9.097        -7.01         -15.8          0 \r\n 2010          330           2.742         1.699        -11.14         0 \r\n 2010          331           7.404         6.319        -10.1          0 \r\n 2010          332           7.892         10.94        -0.104         0 \r\n 2010          333           1.061         5.636        -6.339         0 \r\n 2010          334           9.813        -5.404        -11.83         0 \r\n 2010          335           8.803        -4.984        -13.89         0 \r\n 2010          336           6.516        -1.001        -9.46          0 \r\n 2010          337           2.688        -1.375        -8.7           0 \r\n 2010          338           5.335        -3.345        -12.28         0 \r\n 2010          339           5.751        -6.504        -16.07         0 \r\n 2010          340           7.106        -4.423        -14.56         0 \r\n 2010          341           7.333        -6.022        -16.62         0 \r\n 2010          342           7.647        -3.121        -15.55         0 \r\n 2010          343           6.368         6.822        -5.681         0 \r\n 2010          344           5.263         8.22         -6.93          0 \r\n 2010          345           2.661         3.415        -17.55         9.91 \r\n 2010          346           8.886        -15.11        -21.93         2.29 \r\n 2010          347           5.779        -11.64        -22            0 \r\n 2010          348           5.469        -5.348        -12.26         0 \r\n 2010          349           3.619        -6.049        -8.98          0 \r\n 2010          350           6.149        -6.911        -16.26         1.02 \r\n 2010          351           7.089        -7.23         -15.68         0 \r\n 2010          352           8.387        -10.34        -17.31         0 \r\n 2010          353           4.051        -5.616        -19            0 \r\n 2010          354           2.822        -1.506        -6.512         0 \r\n 2010          355           8.104        -0.209        -13.54         0 \r\n 2010          356           3.71         -3.964        -13.16         0 \r\n 2010          357           2.01         -3.159        -5.954         0 \r\n 2010          358           4.753        -3.925        -7.35          8.64 \r\n 2010          359           7.331        -6.551        -16.29         0 \r\n 2010          360           7.285        -11.69        -18.57         0 \r\n 2010          361           7.536        -4.553        -19.04         0 \r\n 2010          362           8.224        -0.325        -10.54         0 \r\n 2010          363           4.964         1.989        -4.192         0 \r\n 2010          364           2.831         10.42        -11.9          0 \r\n 2010          365           2.474        -11.49        -19.47         5.33 \r\n 2011          1             6.478        -12.56        -19.49         0 \r\n 2011          2             7.909        -5.175        -18.02         0 \r\n 2011          3             6.519        -1.254        -15.16         0 \r\n 2011          4             8.661        -5.664        -17.46         0 \r\n 2011          5             5.106        -0.333        -9.51          0 \r\n 2011          6             2.493        -0.738        -5.306         0 \r\n 2011          7             4.461        -1.655        -12.48         0.76 \r\n 2011          8             9.256        -10.75        -16.77         0 \r\n 2011          9             3.925        -8.79         -15.52         0 \r\n 2011          10            5.227        -6.36         -10.43         12.45 \r\n 2011          11            7.52         -10.43        -21.19         2.79 \r\n 2011          12            8.595        -16.54        -23.24         0 \r\n 2011          13            8.272        -9.54         -22.25         0 \r\n 2011          14            4.664        -7.61         -15.12         0 \r\n 2011          15            5.535        -8.26         -20.22         0 \r\n 2011          16            5.791        -7.64         -19.14         0 \r\n 2011          17            6.526        -1.067        -12.31         3.81 \r\n 2011          18            8.133        -12.29        -21.05         0 \r\n 2011          19            9.259        -15.33        -26.42         1.78 \r\n 2011          20            10.236       -13.14        -24.35         0 \r\n 2011          21            8.306        -11.02        -24.2          0 \r\n 2011          22            6.509        -9.73         -22.74         0 \r\n 2011          23            10.54        -12.61        -27.85         0 \r\n 2011          24            8.242        -0.09         -15.27         0 \r\n 2011          25            7.43         -3.888        -16.24         0 \r\n 2011          26            6.779        -6.135        -13.65         0 \r\n 2011          27            10.516       -1.124        -8.2           0 \r\n 2011          28            9.968         1.639        -9.81          0 \r\n 2011          29            6.269        -2.194        -15.83         0 \r\n 2011          30            8.021        -8.61         -19.66         0 \r\n 2011          31            5.416        -6.138        -10.49         3.81 \r\n 2011          32            6.705        -10.44        -17.72         9.14 \r\n 2011          33            11.417       -17.34        -24.28         0 \r\n 2011          34            12.137       -7.68         -20.13         0 \r\n 2011          35            11.852       -1.761        -12.73         0 \r\n 2011          36            7.856        -1.346        -11.45         0 \r\n 2011          37            8.53         -2.348        -10.56         0 \r\n 2011          38            13.465       -10.57        -27.68         0 \r\n 2011          39            12.973       -19.37        -29.63         0 \r\n 2011          40            14.102       -16.04        -24.63         0 \r\n 2011          41            13.905       -6.87         -24.28         0 \r\n 2011          42            10.673        1.527        -6.872         0 \r\n 2011          43            12.217        3.097        -7.56          0 \r\n 2011          44            13.533        5.787        -0.452         0 \r\n 2011          45            11.807        3.861        -2.034         0 \r\n 2011          46            12.423        4.525        -1.101         0 \r\n 2011          47            12.126        8.68         -0.875         0 \r\n 2011          48            12.649        12.56        -0.829         0 \r\n 2011          49            13.526        2.939        -4.049         0 \r\n 2011          50            14.056        4.43         -5.951         0 \r\n 2011          51            1.242         0.342        -3.158         0 \r\n 2011          52            5.426        -3.052        -11.32         0 \r\n 2011          53            13.819       -1.518        -12.52         0 \r\n 2011          54            11.597        2.685        -6.513         0 \r\n 2011          55            6.043        -6.513        -14.78         0 \r\n 2011          56            9.479        -12.81        -16.76         0 \r\n 2011          57            8.757        -8.67         -16.78         0 \r\n 2011          58            7.286        -1.057        -10.24         0 \r\n 2011          59            15.669        0.887        -14.82         0 \r\n 2011          60            13.425        4.858        -15            0 \r\n 2011          61            15.912       -5.691        -17.8          0 \r\n 2011          62            12.364        10.07        -6.638         0 \r\n 2011          63            5.225        -0.104        -10.8          0 \r\n 2011          64            17.189       -4.65         -12.8          0 \r\n 2011          65            8.25          0.064        -10.93         0 \r\n 2011          66            10.594       -4.04         -7.34          0 \r\n 2011          67            7.664         1.557        -4.799         0 \r\n 2011          68            10.019       -0.268        -5.55          0 \r\n 2011          69            14.579        4.231        -8.1           0 \r\n 2011          70            15.608        11.3         -1.874         0 \r\n 2011          71            15.01        -0.321        -7.72          0 \r\n 2011          72            13.246       -1.65         -10.53         0 \r\n 2011          73            16.104        8.09         -5.547         0 \r\n 2011          74            13.374        11.06        -1.864         0 \r\n 2011          75            16.085        17.47        -1.299         0 \r\n 2011          76            13.113        14            1.847         0 \r\n 2011          77            18.232        9.53         -1.856         0 \r\n 2011          78            12.888        11.14        -3.1           0 \r\n 2011          79            5.204         12.73         1.294         5.33 \r\n 2011          80            14.084        10.3         -1.139         0 \r\n 2011          81            1.498         7.34          2.704         0 \r\n 2011          82            4.412         2.808        -4.249         6.35 \r\n 2011          83            13.336       -0.701        -6.776         0 \r\n 2011          84            7.614         0.908        -3.232         0 \r\n 2011          85            8.117         0.203        -2.912         0 \r\n 2011          86            16.116        1.085        -5.702         0 \r\n 2011          87            15.753        4.014        -5.012         0 \r\n 2011          88            11.8          1.952        -5.559         0 \r\n 2011          89            10.04         5.359        -1.346         0 \r\n 2011          90            7.954         7.7           0.268         0 \r\n 2011          91            21.755        11.57        -0.184         0 \r\n 2011          92            14.411        13.85        -2.146         0 \r\n 2011          93            16.02         17.08         2.496         1.27 \r\n 2011          94            19.506        7.76         -3.524         0 \r\n 2011          95            19.136        16.77        -4.19          0.508 \r\n 2011          96            22.453        15.39         2.463         0.762 \r\n 2011          97            13.115        15.43         2.057         0 \r\n 2011          98            17.254        16.55         6.837         0 \r\n 2011          99            7.198         24.31         7.97          5.334 \r\n 2011          100           6.334         19.12         4.765         0.762 \r\n 2011          101           23.078        16.11         1.427         0 \r\n 2011          102           22.711        22.13        -0.161         0 \r\n 2011          103           9.376         12.6          4.899         1.27 \r\n 2011          104           4.015         9.7           3.885         5.08 \r\n 2011          105           2.835         4.336         0.665         12.954 \r\n 2011          106           15.972        8.74         -0.293         0.508 \r\n 2011          107           11.792        6.138        -1.506         5.842 \r\n 2011          108           5.811         5.604         0.196         6.858 \r\n 2011          109           8.741         1.105        -0.069         8.382 \r\n 2011          110           9.603         7.23         -1.465         0.254 \r\n 2011          111           5.87          6.463        -0.941         1.016 \r\n 2011          112           6.342         11.04         4.6           0 \r\n 2011          113           4.729         8.05          0.892         0 \r\n 2011          114           20.01         14.38        -2.137         0 \r\n 2011          115           11.92         14.51        -0.264         3.81 \r\n 2011          116           4.189         8.15          2.053         1.016 \r\n 2011          117           22.309        15.17         0.901         0 \r\n 2011          118           24.682        18.44         0.129         0 \r\n 2011          119           12.084        19.94         5.114         0 \r\n 2011          120           21.324        15.19         2.735         2.032 \r\n 2011          121           27.591        13.73        -0.761         0 \r\n 2011          122           26.707        11.83        -2.88          0 \r\n 2011          123           27.865        15.08        -5.058         0 \r\n 2011          124           19.196        19.85         3.696         0.254 \r\n 2011          125           24.417        20.19         5.227         0 \r\n 2011          126           18.569        24.17         0.713         0 \r\n 2011          127           25.476        23.32         2.846         0 \r\n 2011          128           20.607        27.11         11            3.81 \r\n 2011          129           17.547        33.05         16.42         0 \r\n 2011          130           25.664        33.7          19.12         0 \r\n 2011          131           18.536        27.02         14.63         8.636 \r\n 2011          132           15.13         18.44         4.073         9.144 \r\n 2011          133           8.304         9.8           5.34          0 \r\n 2011          134           6.615         10.48         5.188         1.016 \r\n 2011          135           24.774        16.7          4.488         7.874 \r\n 2011          136           28.654        18.22         1.162         0 \r\n 2011          137           29.141        21.25         2.298         0 \r\n 2011          138           26.863        21.96         3.262         0 \r\n 2011          139           19.385        22.6          10.03         3.556 \r\n 2011          140           3.923         17.68         12.53         24.638 \r\n 2011          141           19.563        24.09         12.93         2.286 \r\n 2011          142           13.835        21.22         13.32         3.302 \r\n 2011          143           17.525        23.59         11.64         0 \r\n 2011          144           13.684        23.87         12.73         0 \r\n 2011          145           4.879         16.23         8.72          26.924 \r\n 2011          146           26.726        17.7          6.282         0 \r\n 2011          147           5.062         12.3          8.45          13.97 \r\n 2011          148           22.638        21.22         10.26         0 \r\n 2011          149           5.531         18.52         11.28         9.144 \r\n 2011          150           24.734        31.7          17.47         1.016 \r\n 2011          151           28.491        22.66         10.73         9.144 \r\n 2011          152           23.607        26.74         8.68          0 \r\n 2011          153           21.134        30.21         16.9          0 \r\n 2011          154           18.05         31.39         18.99         0.254 \r\n 2011          155           23.43         30.38         16.57         0.762 \r\n 2011          156           24.846        30.9          15.79         0.254 \r\n 2011          157           26.812        36.22         18.24         0 \r\n 2011          158           26.147        34.83         21.67         0 \r\n 2011          159           28.581        28.25         13.53         0 \r\n 2011          160           10.651        18.84         11.66         48.006 \r\n 2011          161           5.428         16.4          12.98         0 \r\n 2011          162           20.512        21.11         11.83         0 \r\n 2011          163           13.41         19.96         12.4          0.762 \r\n 2011          164           17.362        21.7          12.94         9.398 \r\n 2011          165           3.8           19.47         15.36         13.462 \r\n 2011          166           27.626        24.07         13.81         0 \r\n 2011          167           26.66         29.15         12.2          0 \r\n 2011          168           17.989        28.26         17.94         2.286 \r\n 2011          169           11.007        23.39         15.42         0 \r\n 2011          170           21.602        27.73         15.37         0 \r\n 2011          171           17.17         25.76         16.36         49.784 \r\n 2011          172           8.418         20.64         15.31         1.778 \r\n 2011          173           6.297         17.29         14.5          0.508 \r\n 2011          174           18.256        21.62         12.55         0 \r\n 2011          175           23.626        23.05         8.84          0 \r\n 2011          176           14.664        22.94         14.46         0 \r\n 2011          177           14.988        23.93         16.87         11.684 \r\n 2011          178           25.536        23.96         13.22         0 \r\n 2011          179           28.233        25.05         11.08         0 \r\n 2011          180           24.706        29.63         16.1          0 \r\n 2011          181           23.452        33.3          22.64         0 \r\n 2011          182           26.857        33.34         17.08         0 \r\n 2011          183           24.888        29.26         15.41         0 \r\n 2011          184           18.361        26.86         17.09         0 \r\n 2011          185           27.87         29            15.19         0 \r\n 2011          186           16.414        28.43         18.67         5.842 \r\n 2011          187           26.483        27.7          16.89         0 \r\n 2011          188           25.752        30.24         18.26         0 \r\n 2011          189           25.562        29.88         18.04         0 \r\n 2011          190           25.131        30.14         20.17         1.524 \r\n 2011          191           25.279        32.36         21.37         1.778 \r\n 2011          192           24.328        27.93         20.98         16.764 \r\n 2011          193           8.977         21.16         16.23         12.192 \r\n 2011          194           23.192        23.73         15.25         0 \r\n 2011          195           11.812        27.16         19.28         28.448 \r\n 2011          196           12.913        29.36         22.11         1.016 \r\n 2011          197           25.812        32.43         20.83         0 \r\n 2011          198           23.93         32.97         24.3          0 \r\n 2011          199           26.474        33.55         24.78         0 \r\n 2011          200           26.676        33.15         24.22         0 \r\n 2011          201           25.718        32.29         21.5          0 \r\n 2011          202           13.959        26            19.14         0 \r\n 2011          203           12.203        28.73         19.93         2.032 \r\n 2011          204           24.296        32.04         21.58         0.508 \r\n 2011          205           23.141        26.45         15.89         0 \r\n 2011          206           19.553        30.52         16.11         0 \r\n 2011          207           22.757        30.72         19.65         0 \r\n 2011          208           18.969        31.27         21.81         1.524 \r\n 2011          209           18.243        28.86         17.66         0 \r\n 2011          210           25.594        30.1          15.1          0 \r\n 2011          211           22.234        30.15         17.85         0 \r\n 2011          212           24.359        31.33         19.98         0 \r\n 2011          213           21.888        33.83         21.62         0 \r\n 2011          214           20.722        29.3          17.67         0 \r\n 2011          215           24.962        27.15         14.5          0 \r\n 2011          216           17.198        27.18         16.08         0 \r\n 2011          217           11.929        27.29         19.54         1.27 \r\n 2011          218           21.319        28.92         20.53         0 \r\n 2011          219           21.39         28.106        16.911        0 \r\n 2011          220           21.191        27.32         16.39         0.762 \r\n 2011          221           22.387        23.55         11.14         0 \r\n 2011          222           23.658        23.79         9.16          0 \r\n 2011          223           23.774        26.08         9.96          7.62 \r\n 2011          224           22.189        25.91         14.36         0 \r\n 2011          225           21.423        23.23         13.18         0 \r\n 2011          226           23.281        26.28         11.44         0 \r\n 2011          227           23.532        27.15         15.72         0 \r\n 2011          228           14.09         26.77         17.03         1.016 \r\n 2011          229           24.646        25.49         14.16         0 \r\n 2011          230           11.385        26.11         13.77         0 \r\n 2011          231           22.778        26.94         12.38         0 \r\n 2011          232           19.528        23.65         13.64         0.508 \r\n 2011          233           21.306        26.85         10.63         0 \r\n 2011          234           19.534        28.67         17.09         0 \r\n 2011          235           19.105        30.6          18.69         11.938 \r\n 2011          236           23.673        25.92         10.34         0 \r\n 2011          237           22.35         26.41         9.07          0 \r\n 2011          238           17.891        29.45         14.83         0 \r\n 2011          239           15.762        24.05         12.37         0 \r\n 2011          240           12.063        22.91         11.03         4.318 \r\n 2011          241           20.321        25.13         11.91         0.508 \r\n 2011          242           4.871         19.83         16.16         0.762 \r\n 2011          243           19.613        29            16.72         0.508 \r\n 2011          244           21.311        30.73         20.56         0.508 \r\n 2011          245           3.411         23.2          19.3          2.286 \r\n 2011          246           8.154         21.7          10.08         1.524 \r\n 2011          247           20.707        19.27         6.904         0 \r\n 2011          248           22.504        20.13         4.676         0 \r\n 2011          249           21.308        21.33         6.159         0 \r\n 2011          250           21.328        23.55         7.29          0 \r\n 2011          251           20.89         24.94         7.48          0 \r\n 2011          252           19.761        27.37         11.86         0 \r\n 2011          253           19.908        27.97         12.18         0 \r\n 2011          254           19.825        28.62         12.24         0 \r\n 2011          255           17.751        29.42         12.24         0 \r\n 2011          256           20.062        20.76         8.24          0 \r\n 2011          257           17.63         14.49         0.817         0 \r\n 2011          258           15.519        14.33        -0.554         0.508 \r\n 2011          259           6.918         11.97         5.228         0.508 \r\n 2011          260           3.974         12.61         9.13          0 \r\n 2011          261           5.094         17.61         6.132         0 \r\n 2011          262           19.547        25.95         5.57          0 \r\n 2011          263           18.511        21.99         11.6          1.524 \r\n 2011          264           6.168         14.9          3.034         0 \r\n 2011          265           13.353        16.39         1.7           0 \r\n 2011          266           18.814        19.54        -0.582         0 \r\n 2011          267           18.7          20.25         3.441         0 \r\n 2011          268           17.743        19.19         1.192         0 \r\n 2011          269           14.73         22.33         4.376         0 \r\n 2011          270           14.448        25.53         8.03          0 \r\n 2011          271           17.274        29.18         5.628         0 \r\n 2011          272           16.812        21            7.3           0 \r\n 2011          273           18.02         19.5          2.093         0 \r\n 2011          274           17.772        20.94         1.813         0 \r\n 2011          275           17.094        25.92         3.603         0 \r\n 2011          276           17.143        27.3          7.18          0 \r\n 2011          277           15.53         29.97         11.77         0 \r\n 2011          278           16.155        28.69         13.73         0 \r\n 2011          279           13.033        25.91         12.99         0 \r\n 2011          280           12.243        27.29         18            0 \r\n 2011          281           8.322         23.75         18.95         0 \r\n 2011          282           13.696        26.97         13.05         0 \r\n 2011          283           9.53          20.77         10.48         0 \r\n 2011          284           14.587        24.47         7.25          0 \r\n 2011          285           6.696         17.79         7.66          4.32 \r\n 2011          286           15.758        19.73         5.517         0 \r\n 2011          287           15.867        15.43         2.759         0 \r\n 2011          288           13.513        18.76        -0.051         0 \r\n 2011          289           15.854        14.5          0.146         0 \r\n 2011          290           12.112        14.22        -1.959         0 \r\n 2011          291           13.343        10.31        -3.395         0 \r\n 2011          292           8.644         6.949        -5.662         0 \r\n 2011          293           15.51         11.42        -5.118         0 \r\n 2011          294           13.955        18.9         -4.66          0 \r\n 2011          295           11.327        17.07        -0.512         0 \r\n 2011          296           12.7          22.21         1.676         0 \r\n 2011          297           12.333        21.01         0.089         0 \r\n 2011          298           11.048        14.89         2.569         0 \r\n 2011          299           7.702         10.49         0.727         0 \r\n 2011          300           12.788        11.62        -5.49          0 \r\n 2011          301           13.28         12.72        -3.443         0 \r\n 2011          302           10.499        14.39        -6.561         0 \r\n 2011          303           12.946        13.44        -2.787         0 \r\n 2011          304           13.005        15.23        -6.524         0 \r\n 2011          305           12.198        16.19         1.495         0 \r\n 2011          306           2.546         7.56         -3.639         0.51 \r\n 2011          307           12.836        11.77        -7             0 \r\n 2011          308           12.847        11.83        -6.99          0 \r\n 2011          309           9.381         15.52         1.942         0 \r\n 2011          310           12.211        10.72        -2.166         0 \r\n 2011          311           10.624        11.55        -5.451         0 \r\n 2011          312           4.392         7.61          1.93          0 \r\n 2011          313           11.898        8.53         -4.811         0 \r\n 2011          314           11.817        5.178        -7.3           0 \r\n 2011          315           11.392        15.3         -4.669         0 \r\n 2011          316           6.438         12.82        -2.619         0 \r\n 2011          317           5.344         10.08        -1.818         1.52 \r\n 2011          318           11.131        11.68        -1.837         0 \r\n 2011          319           10.979        9.69         -7.35          0 \r\n 2011          320           11.179        4.373        -10.72         0 \r\n 2011          321           10.548        5.909        -13.56         0 \r\n 2011          322           8.924         11.84        -1.516         0 \r\n 2011          323           1.103        -1.215        -10            1.27 \r\n 2011          324           9.997        -1.387        -15.07         0 \r\n 2011          325           5.001         1.35         -10.31         0 \r\n 2011          326           3.03          5.568        -3.679         0 \r\n 2011          327           6.36          6.881        -4.411         0 \r\n 2011          328           9.653         17.73        -0.951         0 \r\n 2011          329           4.099         11.97         6.243         0 \r\n 2011          330           3.074         6.766        -1.243         0 \r\n 2011          331           7.096         1.517        -10.19         0 \r\n 2011          332           9.37          7.53         -11.24         0 \r\n 2011          333           9.938         5.073        -10.12         0 \r\n 2011          334           5.463         8.5          -9.8           0 \r\n 2011          335           4.367         0.552        -16.41         0 \r\n 2011          336           9.478         1.887        -17.46         0 \r\n 2011          337           1.82         -0.292        -6.543         5.84 \r\n 2011          338           4.59         -5.528        -17.69         2.29 \r\n 2011          339           6.874        -8.1          -21.84         0 \r\n 2011          340           9.512        -8.509        -20.769        0 \r\n 2011          341           6.888        -11.56        -26.3          0 \r\n 2011          342           5.582        -1.8          -12.18         0 \r\n 2011          343           9.576        -9.86         -19.65         0 \r\n 2011          344           9.071        -3.01         -21.25         0 \r\n 2011          345           4.795         2.123        -4.991         0 \r\n 2011          346           2.666         4.261        -1.159         0 \r\n 2011          347           1.8           3.778        -1.159         0 \r\n 2011          348           1.251         6.14         -0.154         7.62 \r\n 2011          349           2.582         0.052        -9.8           0 \r\n 2011          350           4.708        -0.08         -11.45         0 \r\n 2011          351           7.986         4.873        -7.89          0 \r\n 2011          352           8.335         11.29        -5.213         0 \r\n 2011          353           7.551         1.385        -6.513         0 \r\n 2011          354           5.576        -1.507        -12.06         0 \r\n 2011          355           6.412         2.551        -10.13         0 \r\n 2011          356           8.846        -1.95         -10.68         0.76 \r\n 2011          357           6.511         2.929        -13.23         0 \r\n 2011          358           8.436         7.49         -10.93         0 \r\n 2011          359           8.657         5.755        -6.71          0 \r\n 2011          360           5.506         8.39         -5.527         0 \r\n 2011          361           8.252         1.983        -6.416         0 \r\n 2011          362           7.725         8.08         -6.834         0 \r\n 2011          363           6.698         6.894        -0.537         0 \r\n 2011          364           1.964         3.834        -1.629         11.43 \r\n 2011          365           4.646         5.996        -1.62          0 \r\n 2012          1             5.245         1.1          -3.9           0 \r\n 2012          2             5.04         -3.9          -9.4           0 \r\n 2012          3             6.788         2.2          -11.7          0 \r\n 2012          4             6.994         7.8          -5.6           0 \r\n 2012          5             7.405         14.4         -0.6           0 \r\n 2012          6             7.611         13.9         -0.6           0 \r\n 2012          7             7.381         6.7          -7.2           0 \r\n 2012          8             7.173         6.1          -7.2           0 \r\n 2012          9             7.589         8.9          -4.4           0 \r\n 2012          10            8.005         12.8         -6.7           0 \r\n 2012          11            8.316         12.2         -7.8           0 \r\n 2012          12            7.985        -5.6          -16.1          0 \r\n 2012          13            6.409        -7.2          -18.3          0 \r\n 2012          14            7.249         1.7          -8.9           0 \r\n 2012          15            7.963         7.8          -6.7           0 \r\n 2012          16            7.326         7.2          -6.7           0 \r\n 2012          17            7.75         -4.4          -13.3          2.54 \r\n 2012          18            8.175        -1.7          -17.8          0 \r\n 2012          19            9.333        -2.8          -21.1          0 \r\n 2012          20            3.862        -13.3         -18.3          0 \r\n 2012          21            6.651        -7.2          -21.1          0 \r\n 2012          22            9.646         0            -7.2           0 \r\n 2012          23            3.36          0            -6.7           0 \r\n 2012          24            3.035        -5            -7.8           0 \r\n 2012          25            3.832        -1.1          -5.6           0 \r\n 2012          26            6.46          3.3          -4.4           0 \r\n 2012          27            7.226         2.2          -5.6           0 \r\n 2012          28            8.294         0            -10.6          0 \r\n 2012          29            8.847        -1.1          -11.7          0 \r\n 2012          30            8.626         8.9          -3.3           0 \r\n 2012          31            9.271         8.3          -2.2           0 \r\n 2012          32            8.914         8.9          -1.1           0 \r\n 2012          33            9.752         8.9          -3.3           0 \r\n 2012          34            8.466         7.8          -3.3           0 \r\n 2012          35            3.788         2.2          -2.2           0 \r\n 2012          36            6.926         2.8          -5             0 \r\n 2012          37            8.441         5.6          -6.7           0 \r\n 2012          38            9.287         5            -4.4           0 \r\n 2012          39            10.926       -1.7          -14.4          0 \r\n 2012          40            11.142        2.2          -11.1          0 \r\n 2012          41            12.135        0.6          -16.7          0 \r\n 2012          42            11.025       -6.1          -20            0 \r\n 2012          43            12.028       -0.6          -19.4          0 \r\n 2012          44            9.021        -2.8          -8.3           11.68 \r\n 2012          45            7.419         0            -10.6          1.27 \r\n 2012          46            10.23         2.8          -5             0 \r\n 2012          47            12.368        2.8          -10            0 \r\n 2012          48            11.233        2.2          -7.2           0 \r\n 2012          49            12.826        1.1          -10.6          0 \r\n 2012          50            13.055        5            -10.6          0 \r\n 2012          51            10.748        1.7          -4.4           7.62 \r\n 2012          52            4.392         2.2          -2.2           4.32 \r\n 2012          53            9.796         7.2          -1.7           0 \r\n 2012          54            7.347         6.7          -0.6           5.08 \r\n 2012          55            7.649        -0.6          -7.8           1.02 \r\n 2012          56            14.003       -5            -16.7          0 \r\n 2012          57            14.128        2.2          -8.3           0 \r\n 2012          58            14.009       -1.1          -12.8          0 \r\n 2012          59            8.743         0.6          -7.8           14.22 \r\n 2012          60            7.546         1.1          -1.1           15.75 \r\n 2012          61            5.396         0.6          -4.4           0 \r\n 2012          62            5.838         1.1          -3.3           0.76 \r\n 2012          63            6.811        -1.7          -6.1           0 \r\n 2012          64            8.396        -2.2          -7.8           1.27 \r\n 2012          65            11.341        6.1          -9.4           0 \r\n 2012          66            14.848        18.3          1.7           0 \r\n 2012          67            15.508        16.7         -0.6           0.51 \r\n 2012          68            15.418        5.6          -3.9           0 \r\n 2012          69            14.309        6.1          -5.6           0 \r\n 2012          70            15.325        18.9          3.3           0 \r\n 2012          71            15.661        18.9          4.4           0 \r\n 2012          72            15.229        15            5.6           6.6 \r\n 2012          73            9.476         23.9          4.4           0 \r\n 2012          74            17.062        23.3          9.4           0 \r\n 2012          75            16.948        25            3.3           0 \r\n 2012          76            17.661        26.7          5.6           0 \r\n 2012          77            17.317        26.7          13.9          0 \r\n 2012          78            15.841        27.8          13.9          0 \r\n 2012          79            11.909        26.7          17.2          3.81 \r\n 2012          80            11.773        17.8          10.6          3.81 \r\n 2012          81            8.393         17.8          10            0 \r\n 2012          82            5.64          16.7          13.9          7.37 \r\n 2012          83            5.685         19.4          5.6           0 \r\n 2012          84            10.068        24.4          4.4           0 \r\n 2012          85            15.878        23.9          3.9           0 \r\n 2012          86            16.594        20            7.8           0 \r\n 2012          87            14.078        21.7          11.1          0 \r\n 2012          88            12.273        22.2          3.9           0 \r\n 2012          89            17.219        21.7          4.4           0 \r\n 2012          90            16.613        19.4          8.3           9.14 \r\n 2012          91            10.998        26.7          9.4           0 \r\n 2012          92            13.032        31.1          6.7           0 \r\n 2012          93            18.315        30.6          12.8          0 \r\n 2012          94            17.692        30.6          8.9           0 \r\n 2012          95            17.702        18.3          6.1           0 \r\n 2012          96            13.057        18.9          5             0 \r\n 2012          97            16.065        18.3          3.3           0 \r\n 2012          98            16.824        16.7          9.4           0 \r\n 2012          99            14.911        19.4          2.2           0 \r\n 2012          100           17.97         18.9          1.1           0 \r\n 2012          101           18.618        12.8         -2.8           0 \r\n 2012          102           18.618        11.7         -4.4           0 \r\n 2012          103           18.497        12.8         -4.4           0 \r\n 2012          104           17.721        18.9          7.2           22.35 \r\n 2012          105           9.512         21.7          9.4           0 \r\n 2012          106           12.248        22.2          13.3          34.04 \r\n 2012          107           12.338        19.4          2.8           0 \r\n 2012          108           13.65         19.4          0.6           0 \r\n 2012          109           17.715        20.6          9.4           5.33 \r\n 2012          110           13.22         17.8          3.9           12.7 \r\n 2012          111           11.185        12.8          0.6           0 \r\n 2012          112           9.853         18.9          3.3           3.81 \r\n 2012          113           12.606        15.6          3.9           0 \r\n 2012          114           16.361        18.9          1.7           0 \r\n 2012          115           18.773        30            9.4           0 \r\n 2012          116           21.474        30            16.1          0 \r\n 2012          117           19.721        29.4          9.4           0 \r\n 2012          118           19.721        18.9          5.6           4.06 \r\n 2012          119           11.367        15            3.3           12.7 \r\n 2012          120           10.82         10.6          6.7           0 \r\n 2012          121           7.533         21.1          6.7           0 \r\n 2012          122           9.204         26.7          7.2           0 \r\n 2012          123           20.952        28.9          13.3          19.05 \r\n 2012          124           14.722        29.4          17.8          0 \r\n 2012          125           17.606        29.4          15.6          20.32 \r\n 2012          126           19.408        26.7          15.6          16.51 \r\n 2012          127           13.295        21.7          13.9          3.3 \r\n 2012          128           11.461        18.3          7.8           0 \r\n 2012          129           19.694        18.9          6.1           0 \r\n 2012          130           19.694        18.3          6.1           3.81 \r\n 2012          131           18.897        26.7          8.9           0 \r\n 2012          132           22.46         27.2          12.2          0 \r\n 2012          133           22.143        21.1          8.9           0 \r\n 2012          134           20.739        23.9          10            0 \r\n 2012          135           23.858        27.8          11.1          0 \r\n 2012          136           24.645        28.3          13.9          0 \r\n 2012          137           23.232        24.4          11.1          0 \r\n 2012          138           25.116        31.7          15            0 \r\n 2012          139           24.018        33.3          18.3          0 \r\n 2012          140           21.806        31.7          15.6          0 \r\n 2012          141           21.49         30.6          10.6          20.32 \r\n 2012          142           17.337        23.9          9.4           0 \r\n 2012          143           22.745        30            13.3          0 \r\n 2012          144           23.699        31.1          16.7          0 \r\n 2012          145           22.413        31.1          14.4          44.96 \r\n 2012          146           17.29         17.8          9.4           2.29 \r\n 2012          147           12.967        28.9          13.3          1.27 \r\n 2012          148           14.889        32.2          21.1          0 \r\n 2012          149           21.108        32.2          14.4          41.15 \r\n 2012          150           16.758        21.7          9.4           0 \r\n 2012          151           21.592        19.4          5.6           0 \r\n 2012          152           22.056        16.7          8.3           11.18 \r\n 2012          153           10.938        20            7.2           0 \r\n 2012          154           22.126        24.4          9.4           1.27 \r\n 2012          155           21.635        31.7          14.4          0 \r\n 2012          156           23.929        29.4          15.6          0 \r\n 2012          157           24.247        30            15.6          0 \r\n 2012          158           23.258        28.9          16.7          0 \r\n 2012          159           20.124        30.6          16.7          0 \r\n 2012          160           20.124        31.1          17.8          0 \r\n 2012          161           19.959        31.7          18.9          0 \r\n 2012          162           20.289        31.7          21.1          0 \r\n 2012          163           18.474        23.9          14.4          2.79 \r\n 2012          164           17.43         23.9          8.3           0 \r\n 2012          165           25.066        25.6          12.8          7.62 \r\n 2012          166           15.604        30.6          18.9          0 \r\n 2012          167           16.102        28.3          18.9          6.35 \r\n 2012          168           13.114        27.2          14.4          0.51 \r\n 2012          169           13.114        30            11.7          0 \r\n 2012          170           23.738        33.3          22.8          0 \r\n 2012          171           21.912        33.3          23.9          0 \r\n 2012          172           16.766        32.2          20.6          0 \r\n 2012          173           18.924        25.6          12.8          0 \r\n 2012          174           22.244        28.3          15            0 \r\n 2012          175           23.406        28.3          17.2          5.08 \r\n 2012          176           15.604        28.9          18.3          0 \r\n 2012          177           18.592        28.9          17.2          0 \r\n 2012          178           19.754        28.3          16.1          0 \r\n 2012          179           21.912        36.1          22.2          0 \r\n 2012          180           21.248        33.9          22.8          0 \r\n 2012          181           19.754        32.2          21.7          0 \r\n 2012          182           19.256        30.6          20            0 \r\n 2012          183           21.543        33.3          20.6          0 \r\n 2012          184           21.461        33.9          23.3          0 \r\n 2012          185           19.672        34.4          22.2          0 \r\n 2012          186           20.924        35.6          23.9          0 \r\n 2012          187           20.924        34.4          24.4          0 \r\n 2012          188           19.672        36.7          24.4          0 \r\n 2012          189           21.103        36.1          21.7          0 \r\n 2012          190           24.523        27.8          18.3          0 \r\n 2012          191           22.213        30            17.8          0.51 \r\n 2012          192           23.812        28.9          18.3          0 \r\n 2012          193           26.833        29.4          18.3          0 \r\n 2012          194           25.411        31.1          18.3          0 \r\n 2012          195           24.542        32.8          20.6          0 \r\n 2012          196           22.247        33.3          22.2          0 \r\n 2012          197           23.306        36.7          21.7          0 \r\n 2012          198           24.012        34.4          21.1          0 \r\n 2012          199           22.98         36.1          22.8          0 \r\n 2012          200           23.331        36.7          22.8          0 \r\n 2012          201           22.629        36.7          20            0 \r\n 2012          202           24.051        33.3          20            0 \r\n 2012          203           24.051        32.2          21.7          0 \r\n 2012          204           21.785        35            22.2          0.51 \r\n 2012          205           20.74         34.4          24.4          0.76 \r\n 2012          206           21.296        37.2          22.2          0 \r\n 2012          207           23.374        37.2          25.6          0 \r\n 2012          208           21.816        35            18.3          0.25 \r\n 2012          209           24.941        31.1          13.9          0 \r\n 2012          210           24.769        23.9          17.8          20.32 \r\n 2012          211           14.353        28.3          17.8          0 \r\n 2012          212           12.644        35            18.3          0 \r\n 2012          213           23.067        34.4          17.8          0 \r\n 2012          214           25.173        35            20.6          0 \r\n 2012          215           22.743        35            19.4          2.03 \r\n 2012          216           16.803        33.9          19.4          0 \r\n 2012          217           21.073        33.9          17.2          29.72 \r\n 2012          218           17.364        26.1          12.2          0 \r\n 2012          219           16.745        31.1          15.6          0 \r\n 2012          220           22.605        32.2          20.6          0 \r\n 2012          221           22.285        31.7          20            3.05 \r\n 2012          222           19.625        28.3          14.4          0 \r\n 2012          223           21.454        26.7          12.8          0 \r\n 2012          224           22.628        23.3          13.3          0 \r\n 2012          225           21.472        20            15            2.54 \r\n 2012          226           17.059        25.6          12.8          0.76 \r\n 2012          227           12.63         28.3          14.4          0 \r\n 2012          228           22.479        30            17.8          0 \r\n 2012          229           21.013        28.9          12.8          7.11 \r\n 2012          230           16.984        22.2          7.2           0 \r\n 2012          231           23.777        22.2          7.2           9.65 \r\n 2012          232           22.004        23.3          10            0 \r\n 2012          233           14.616        25            12.8          0 \r\n 2012          234           21.522        27.8          12.2          0 \r\n 2012          235           22.805        32.2          15.6          0 \r\n 2012          236           21.848        31.7          19.4          0 \r\n 2012          237           20.583        31.1          18.9          0 \r\n 2012          238           18.208        28.9          18.3          12.7 \r\n 2012          239           11.318        27.2          18.9          0 \r\n 2012          240           7.703         30            17.2          0 \r\n 2012          241           19.507        31.7          19.4          0 \r\n 2012          242           19.351        35            20            0 \r\n 2012          243           18.59         35.6          20            0 \r\n 2012          244           19.83         36.1          18.3          0 \r\n 2012          245           20.452        30.6          16.1          0 \r\n 2012          246           18.065        32.8          17.8          0 \r\n 2012          247           19.265        31.1          17.8          0 \r\n 2012          248           17.19         32.2          18.9          0 \r\n 2012          249           16.18         33.3          15            17.02 \r\n 2012          250           14.12         28.3          8.3           0 \r\n 2012          251           19.269        27.8          14.4          10.67 \r\n 2012          252           13.474        27.8          6.7           0 \r\n 2012          253           19.993        23.3          7.2           0 \r\n 2012          254           19.409        28.3          11.7          0 \r\n 2012          255           18.69         33.3          15.6          0 \r\n 2012          256           17.405        33.3          11.7          4.06 \r\n 2012          257           17.833        23.3          8.3           2.03 \r\n 2012          258           11.042        26.7          10            0 \r\n 2012          259           16.562        27.2          11.7          0 \r\n 2012          260           17.135        26.1          11.7          0 \r\n 2012          261           16.152        23.9          8.9           1.27 \r\n 2012          262           15.468        18.3          1.7           0 \r\n 2012          263           12.959        25            9.4           0 \r\n 2012          264           16.451        22.8          6.1           0 \r\n 2012          265           16.451        21.7          10.6          0 \r\n 2012          266           13.439        20.6         -1.1           0 \r\n 2012          267           17.553        16.7          0.6           0 \r\n 2012          268           16.459        24.4          2.8           0 \r\n 2012          269           16.596        25.6          10            0 \r\n 2012          270           16.056        25.6          5.6           0 \r\n 2012          271           16.73         21.1          6.1           0 \r\n 2012          272           15.924        25            6.7           0 \r\n 2012          273           15.79         26.7          10            0 \r\n 2012          274           15.262        26.7          12.2          0 \r\n 2012          275           14.731        26.1          12.2          0 \r\n 2012          276           13.029        22.2          5             0 \r\n 2012          277           14.871        25.6          9.4           0 \r\n 2012          278           14.485        25.6          3.9           0 \r\n 2012          279           14.621        10.6         -2.8           0 \r\n 2012          280           11.775        8.9          -4.4           0 \r\n 2012          281           11.161        13.3         -4.4           0 \r\n 2012          282           13.085        21.1         -2.8           0 \r\n 2012          283           13.736        21.1          5.6           3.05 \r\n 2012          284           8.903         14.4         -3.9           0 \r\n 2012          285           12.229        15            4.4           0 \r\n 2012          286           11.599        12.8         -2.8           0 \r\n 2012          287           11.497        20.6          8.3           0 \r\n 2012          288           11.372        20            5             0 \r\n 2012          289           10.528        21.1          2.8           0 \r\n 2012          290           12.015        23.9          11.1          0 \r\n 2012          291           10.925        23.3          9.4           0 \r\n 2012          292           9.33          10.6          3.9           16.51 \r\n 2012          293           4.623         10            3.9           12.95 \r\n 2012          294           2.433         14.4          3.3           0 \r\n 2012          295           6.992         21.7          3.3           0 \r\n 2012          296           9.644         21.1          8.3           0 \r\n 2012          297           7.956         15.6          12.2          0 \r\n 2012          298           3.942         15            7.2           0 \r\n 2012          299           5.733         7.8          -0.6           20.83 \r\n 2012          300           5.443         2.8           0             0 \r\n 2012          301           2.603         4.4          -4.4           0 \r\n 2012          302           6.799         9.4           0             0 \r\n 2012          303           7.737         12.2          0             0 \r\n 2012          304           7.664         12.2         -0.6           0 \r\n 2012          305           8.709         11.7         -1.7           0 \r\n 2012          306           8.971         13.3         -1.1           0 \r\n 2012          307           9.316         8.9          -1.7           0 \r\n 2012          308           7.361         8.3          -1.1           0 \r\n 2012          309           7.632         11.1          3.3           0 \r\n 2012          310           7.29          10            2.8           4.06 \r\n 2012          311           4.061         8.9           2.8           0.25 \r\n 2012          312           3.271         9.4          -0.6           0 \r\n 2012          313           8.266         16.1          1.1           0 \r\n 2012          314           8.489         15            1.7           0 \r\n 2012          315           8.936         18.3          10            0 \r\n 2012          316           8.516         15.6         -6.1           13.97 \r\n 2012          317           7.299        -1.1          -8.3           0 \r\n 2012          318           5.751         7.8          -6.7           0 \r\n 2012          319           7.883         10           -3.3           0 \r\n 2012          320           8.649         10           -0.6           0 \r\n 2012          321           8.129         9.4          -6.1           0 \r\n 2012          322           8.779         13.9          2.2           0 \r\n 2012          323           8.129         15            3.9           0 \r\n 2012          324           6.866         13.3          4.4           0 \r\n 2012          325           6.436         14.4         -2.8           0 \r\n 2012          326           8.153         19.4          6.1           0 \r\n 2012          327           7.938         20            5             0 \r\n 2012          328           7.113         5            -7.2           0 \r\n 2012          329           7.644         3.3          -10.6          0 \r\n 2012          330           6.37          3.3          -4.4           0 \r\n 2012          331           5.883         1.7          -10.6          0 \r\n 2012          332           5.673         3.3          -10.6          0 \r\n 2012          333           6.199         6.1          -8.3           0 \r\n 2012          334           6.934         7.2          -6.1           0 \r\n 2012          335           6.757         6.1          -3.9           0 \r\n 2012          336           6.549         10.6          0.6           0 \r\n 2012          337           5.718         15           -0.6           0 \r\n 2012          338           6.549         14.4          5.6           0 \r\n 2012          339           6.445         11.1         -2.8           0 \r\n 2012          340           6.48          8.9          -6.7           0 \r\n 2012          341           6.377         10.6          4.4           0 \r\n 2012          342           5.04          6.1          -2.8           0 \r\n 2012          343           4.217        -0.6          -2.8           0 \r\n 2012          344           2.983         0.6          -8.3           0 \r\n 2012          345           4.32         -6.7          -18.9          0 \r\n 2012          346           6.308         1.7          -9.4           0 \r\n 2012          347           6.003         7.8          -3.9           0 \r\n 2012          348           5.291         8.9          -3.9           0 \r\n 2012          349           5.494         8.9          -7.2           0 \r\n 2012          350           6.206         7.8           3.3           17.02 \r\n 2012          351           3.866         3.9          -6.7           0 \r\n 2012          352           4.07         -2.2          -7.2           0 \r\n 2012          353           2.645        -0.6          -2.8           0 \r\n 2012          354           2.34          2.2          -3.9           0 \r\n 2012          355           3.968         0.6          -9.4           6.35 \r\n 2012          356           4.375        -4.4          -16.7          0 \r\n 2012          357           6.512        -2.2          -11.1          0 \r\n 2012          358           6.715        -4.4          -13.9          0 \r\n 2012          359           6.105        -9.4          -13.3          0 \r\n 2012          360           4.375        -13.3         -19.4          0 \r\n 2012          361           5.392        -10           -17.8          0 \r\n 2012          362           5.392        -7.2          -12.2          0 \r\n 2012          363           5.494        -7.2          -12.2          0 \r\n 2012          364           2.951        -9.4          -15            0 \r\n 2012          365           4.985        -0.6          -15.6          0 \r\n 2012          366           6.48         -1.7          -12.8          0 \r\n 2013          1             7.302        -7.8          -18.3          0 \r\n 2013          2             6.685        -1.1          -18.3          0 \r\n 2013          3             7.405        -1.1          -16.1          0 \r\n 2013          4             5.554        -4.4          -12.2          0 \r\n 2013          5             6.685        -3.9          -12.8          0 \r\n 2013          6             6.994        -3.9          -15.6          0 \r\n 2013          7             7.589         0            -9.4           0 \r\n 2013          8             6.965         0            -7.2           0 \r\n 2013          9             6.653         3.3          -7.2           0 \r\n 2013          10            6.445         3.3          -3.3           0 \r\n 2013          11            3.95          3.9           0             0.51 \r\n 2013          12            8.195         3.9          -12.8          0 \r\n 2013          13            5.148        -10.6         -16.7          0 \r\n 2013          14            6.514        -4.4          -15.6          0 \r\n 2013          15            7.75         -1.1          -10.6          0 \r\n 2013          16            7.857         6.1          -6.7           0 \r\n 2013          17            8.812         5            -11.1          0 \r\n 2013          18            8.387         8.9          -3.3           0 \r\n 2013          19            8.689         8.3          -1.1           0 \r\n 2013          20            9.762         3.3          -15.6          2.03 \r\n 2013          21            6.866        -12.2         -23.3          0 \r\n 2013          22            7.045        -10.6         -19.4          0 \r\n 2013          23            7.045        -6.7          -13.9          0 \r\n 2013          24            8.67         -10.6         -21.1          0 \r\n 2013          25            8.54         -3.3          -12.8          0 \r\n 2013          26            9.744         0            -16.1          0 \r\n 2013          27            9.306         0            -5             4.83 \r\n 2013          28            2.101         2.2           0             0 \r\n 2013          29            3.65          1.7          -1.7           0 \r\n 2013          30            8.294         0.6          -9.4           0 \r\n 2013          31            9.383        -7.8          -20.6          0 \r\n 2013          32            9.02         -8.9          -22.8          0 \r\n 2013          33            10.18        -5.6          -16.1          0 \r\n 2013          34            10.18         3.3          -12.2          0 \r\n 2013          35            9.523         2.8          -13.3          0 \r\n 2013          36            8.657         4.4          -7.2           0 \r\n 2013          37            9.739         6.1          -7.2           0 \r\n 2013          38            8.304         5.6          -3.9           0 \r\n 2013          39            6.01          0.6          -6.7           0 \r\n 2013          40            8.936         7.8          -4.4           0 \r\n 2013          41            6.398         7.2          -0.6           6.35 \r\n 2013          42            5.457         1.1          -6.1           0 \r\n 2013          43            9.355         3.3          -8.3           0 \r\n 2013          44            11.137        7.2          -5             0 \r\n 2013          45            10.792        6.7          -2.2           0 \r\n 2013          46            11.017       -0.6          -12.2          0 \r\n 2013          47            11.914        2.2          -12.8          0 \r\n 2013          48            12.708        7.8          -6.7           0 \r\n 2013          49            12.597        7.2          -6.7           0 \r\n 2013          50            12.94        -6.1          -16.1          0 \r\n 2013          51            12.944       -5.6          -20.6          0 \r\n 2013          52            12.828       -4.4          -11.7          0 \r\n 2013          53            7.347        -4.4          -8.3           10.16 \r\n 2013          54            13.411       -2.8          -17.2          0 \r\n 2013          55            13.65        -2.2          -14.4          0 \r\n 2013          56            9.649        -2.2          -6.1           0 \r\n 2013          57            7.717        -1.7          -7.8           0 \r\n 2013          58            10.566        2.8          -7.2           0 \r\n 2013          59            10.66         2.2          -6.1           0 \r\n 2013          60            6.21         -3.3          -8.9           0 \r\n 2013          61            10.918       -1.7          -11.7          0 \r\n 2013          62            11.459        1.1          -7.8           0 \r\n 2013          63            7.633        -0.6          -3.3           0 \r\n 2013          64            7.197        -1.1          -5             0 \r\n 2013          65            8.249        -3.3          -8.3           0 \r\n 2013          66            12.318        1.7          -8.3           0 \r\n 2013          67            14.42         5.6          -5.6           0 \r\n 2013          68            8.985         6.7           1.1           21.59 \r\n 2013          69            8.725         4.4          -5             0 \r\n 2013          70            5.593        -2.2          -6.7           0 \r\n 2013          71            11.168       -0.6          -7.2           0 \r\n 2013          72            13.875       -2.2          -10.6          0 \r\n 2013          73            16.152        7.2          -5             0 \r\n 2013          74            13.536        8.9           1.1           0 \r\n 2013          75            13.418        3.3          -5             0 \r\n 2013          76            15.138        0            -11.1          0 \r\n 2013          77            15.494        0            -9.4           0 \r\n 2013          78            16.881        0            -12.8          0 \r\n 2013          79            17.718       -0.6          -13.3          0 \r\n 2013          80            17.368       -2.2          -13.3          0 \r\n 2013          81            17.273       -1.1          -9.4           0 \r\n 2013          82            14.569       -0.6          -4.4           0 \r\n 2013          83            13.384       -0.6          -6.7           0 \r\n 2013          84            11.341       -0.6          -5.6           0 \r\n 2013          85            18.385        1.7          -10.6          0 \r\n 2013          86            18.891        6.1          -5             0 \r\n 2013          87            19.372        10.6         -1.7           0 \r\n 2013          88            20.251        15            0             0 \r\n 2013          89            14.794        15.6          5.6           0 \r\n 2013          90            20.408        15.6         -1.1           0 \r\n 2013          91            22.8          2.5          -7.211         0 \r\n 2013          92            23.05         7.239        -7.344         0 \r\n 2013          93            23.1          11.672       -3.744         0 \r\n 2013          94            21.53         12.3         -0.883         0 \r\n 2013          95            12.2          13.928       -2.022         0 \r\n 2013          96            14.43         16.361        0.611         0.254 \r\n 2013          97            12.28         12.178       -1.756         0 \r\n 2013          98            19.97         18.822        0.894         0 \r\n 2013          99            3.43          5.322        -0.95          26.67 \r\n 2013          100           4.33          0.389        -1.272         17.018 \r\n 2013          101           13.57         2.533        -0.717         18.796 \r\n 2013          102           12.09         0.294        -3.317         0.254 \r\n 2013          103           17.9          4.522        -5.728         0 \r\n 2013          104           6.97          13.372        1.411         7.366 \r\n 2013          105           11.1          4.683        -1.628         0 \r\n 2013          106           23.47         8.222        -2.333         0 \r\n 2013          107           3.56          2.944         0.067         19.304 \r\n 2013          108           12.23         0.328        -2.667         7.62 \r\n 2013          109           27.08         1.511        -5.789         0 \r\n 2013          110           20.2          4.772        -7.6           0 \r\n 2013          111           12.43         15.55         1.822         0.508 \r\n 2013          112           2.54          2.45         -2.894         4.064 \r\n 2013          113           25.87         1.439        -6.156         2.032 \r\n 2013          114           23.48         11.25        -5.606         0.254 \r\n 2013          115           26.8          16.672       -4.222         0 \r\n 2013          116           26.68         23            5.328         0 \r\n 2013          117           26.42         21.861        2.044         0 \r\n 2013          118           24.62         27.528        6.611         0 \r\n 2013          119           23.65         25.65         6.894         0 \r\n 2013          120           19.55         20.872        8.389         3.81 \r\n 2013          121           3.36          8.661        -0.967         23.114 \r\n 2013          122           21.42         7.872        -0.033         0 \r\n 2013          123           12.72         7.078        -2.344         0 \r\n 2013          124           4.77          4.983        -0.161         1.778 \r\n 2013          125           7.46          11.622        3.322         0 \r\n 2013          126           19.93         18.622        5.411         0 \r\n 2013          127           23.72         22.978        5.572         0 \r\n 2013          128           7.42          18.378        11.828        5.08 \r\n 2013          129           6.58          16.422        7.794         0.254 \r\n 2013          130           23.58         19.678        2.806         0 \r\n 2013          131           25.53         13.061       -0.378         0 \r\n 2013          132           26.15         16.489       -3.133         0 \r\n 2013          133           20.8          28.689        4.372         0 \r\n 2013          134           22.7          39.1          12.55         0 \r\n 2013          135           22.08         28.278        10.461        0 \r\n 2013          136           24.488        28.9          10.6          0 \r\n 2013          137           16.011        28.3          15.6          16.76 \r\n 2013          138           18.804        28.3          16.7          0 \r\n 2013          139           12.325        27.8          16.1          3.81 \r\n 2013          140           12.641        21.7          12.8          0 \r\n 2013          141           11.452        21.1          11.1          0 \r\n 2013          142           11.452        14.4          8.3           0 \r\n 2013          143           14.951        19.4          6.7           0 \r\n 2013          144           23.694        22.2          6.7           0 \r\n 2013          145           14.408        21.7          10.6          0 \r\n 2013          146           12.167        14.4          10            120.65 \r\n 2013          147           11.206        16.1          9.4           41.91 \r\n 2013          148           14.18         20            13.3          0 \r\n 2013          149           13.213        23.9          13.3          0 \r\n 2013          150           10.796        23.3          16.7          12.95 \r\n 2013          151           19.947        21.7          13.3          1.02 \r\n 2013          152           18.95         21.1          11.1          0 \r\n 2013          153           18.193        20            8.9           0 \r\n 2013          154           24.093        22.2          10            0 \r\n 2013          155           19.176        21.7          12.8          33.02 \r\n 2013          156           8.412         16.7          11.7          2.54 \r\n 2013          157           19.299        18.3          10            0 \r\n 2013          158           22.433        18.9          10            0 \r\n 2013          159           19.959        19.4          11.7          22.86 \r\n 2013          160           7.093         18.3          13.9          18.54 \r\n 2013          161           14.845        23.3          14.4          0 \r\n 2013          162           21.773        30            17.2          0 \r\n 2013          163           16.434        29.4          18.3          3.81 \r\n 2013          164           28.6          25.361        11.9          0 \r\n 2013          165           14.42         25.8          17.211        9.144 \r\n 2013          166           18.9          26.722        14.489        22.86 \r\n 2013          167           23.77         28.589        15.561        0 \r\n 2013          168           29.03         29.172        14.761        0 \r\n 2013          169           27.83         27.378        14.711        0 \r\n 2013          170           27.4          29.978        15.478        0 \r\n 2013          171           23.78         31.378        19.689        0 \r\n 2013          172           19.33         32.639        19.15         0 \r\n 2013          173           8.67          26.65         17.561        2.032 \r\n 2013          174           23.27         27.628        17.372        0.508 \r\n 2013          175           12.54         25.978        17.789        6.35 \r\n 2013          176           21.83         31.211        19.439        0 \r\n 2013          177           28.73         32.172        19.761        0 \r\n 2013          178           16.29         30.761        18.75         0.508 \r\n 2013          179           28.18         29.372        16.339        0 \r\n 2013          180           19.13         26.261        14.15         0 \r\n 2013          181           26.08         25.628        13.172        0 \r\n 2013          182           27.72         29.011        12.472        0 \r\n 2013          183           22.15         28.522        14.439        0.254 \r\n 2013          184           24.25         29.539        13.578        0 \r\n 2013          185           28.57         29.8          14.672        0 \r\n 2013          186           22.53         30.928        18.228        0 \r\n 2013          187           21.25         31.422        20.539        0 \r\n 2013          188           23.97         32.239        19.578        0 \r\n 2013          189           27.43         33.211        19.422        0 \r\n 2013          190           26.75         31.472        20.028        1.778 \r\n 2013          191           29.55         27.1          15.978        0 \r\n 2013          192           28.53         29.3          14.311        0 \r\n 2013          193           28.13         32.339        18.039        0 \r\n 2013          194           19.05         30.961        20.222        11.938 \r\n 2013          195           23.6          29.972        19.161        0 \r\n 2013          196           22.63         30.022        16.689        0 \r\n 2013          197           28.22         31.439        19.361        0 \r\n 2013          198           26.13         33.078        19.489        0 \r\n 2013          199           27.95         32.422        20.9          0 \r\n 2013          200           28.8          30.189        16.089        0 \r\n 2013          201           18.42         28.4          13.272        0 \r\n 2013          202           25.12         29.922        18.8          0.254 \r\n 2013          203           24.97         30.561        16.872        0 \r\n 2013          204           25.95         24.222        13.9          0 \r\n 2013          205           25.87         27.061        10.9          0 \r\n 2013          206           21.22         29.478        13.961        2.286 \r\n 2013          207           17.96         21.672        11.128        0.254 \r\n 2013          208           27.02         20.3          7.056         0 \r\n 2013          209           29.23         23.072        6.189         0 \r\n 2013          210           15.83         23.078        8.95          0.508 \r\n 2013          211           9.3           23.639        14.961        0.508 \r\n 2013          212           23.48         26.439        12.311        0 \r\n 2013          213           19.92         29.578        12.639        10.668 \r\n 2013          214           8.73          21.128        13.978        15.24 \r\n 2013          215           21.75         23.25         11.778        0 \r\n 2013          216           19.95         24.95         10.428        0 \r\n 2013          217           18.68         27.339        17.511        1.016 \r\n 2013          218           21.82         28.639        14.811        0 \r\n 2013          219           22.42         24.772        14.811        0 \r\n 2013          220           12.97         23.372        14            0.254 \r\n 2013          221           24.43         26.472        14.389        0 \r\n 2013          222           16.58         25.439        12.15         0.508 \r\n 2013          223           14.87         26.189        15.55         58.42 \r\n 2013          224           20.75         25.178        12.522        0 \r\n 2013          225           21.15         23.439        10.739        0 \r\n 2013          226           15.23         23.189        10.278        0 \r\n 2013          227           9.07          18.772        12.061        0.254 \r\n 2013          228           16.2          22.589        11.939        0 \r\n 2013          229           23.02         25.089        11.2          0 \r\n 2013          230           23.35         25.25         10.628        0 \r\n 2013          231           22.08         28.222        15.939        0 \r\n 2013          232           21.68         29.589        19.472        0 \r\n 2013          233           11.74         27.739        21.522        0 \r\n 2013          234           22.07         27.872        19            26.67 \r\n 2013          235           20.42         29.311        17.628        0 \r\n 2013          236           15.22         29.589        20.578        4.318 \r\n 2013          237           22.95         31.639        22.589        0 \r\n 2013          238           23.07         31.639        22.85         0 \r\n 2013          239           22.87         31.339        22.828        0 \r\n 2013          240           22.67         33.589        20.211        0 \r\n 2013          241           23.15         32.161        18.028        0 \r\n 2013          242           22.2          29.822        17.911        0 \r\n 2013          243           22.65         30.561        15.011        28.194 \r\n 2013          244           22.87         24.9          12.789        7.62 \r\n 2013          245           18.33         23.522        9.822         0 \r\n 2013          246           16.15         27.089        9.211         0 \r\n 2013          247           14.85         29.65         14.561        0 \r\n 2013          248           14.73         26.878        17.872        1.016 \r\n 2013          249           19.47         30.5          17.772        0 \r\n 2013          250           8.71          30.072        17.972        0 \r\n 2013          251           10.22         24.85         19.3          0 \r\n 2013          252           18.42         32.05         18.8          0 \r\n 2013          253           15.23         28.55         16.211        0 \r\n 2013          254           19.18         28.389        16.1          0 \r\n 2013          255           20.58         23.728        10.011        0 \r\n 2013          256           20.48         22.578        7.439         0 \r\n 2013          257           10.39         21.378        7.239         0 \r\n 2013          258           8.14          19.461        8.528         0 \r\n 2013          259           16.85         20            7.2           0 \r\n 2013          260           2.86          18.8          11.822        4.064 \r\n 2013          261           17.7          29.889        18.772        0 \r\n 2013          262           9.62          25.261        12.172        0.254 \r\n 2013          263           17.13         18.85         3.822         0 \r\n 2013          264           20.15         22.911        1.661         0 \r\n 2013          265           19.33         26.289        9.55          0 \r\n 2013          266           19.32         25.061        10.478        0 \r\n 2013          267           14.93         22.289        11.328        0.762 \r\n 2013          268           18.72         24.95         8.472         0 \r\n 2013          269           17.88         29.489        15.35         0 \r\n 2013          270           12.95         29.7          18.339        2.54 \r\n 2013          271           12.11         21.128        5.583         7.112 \r\n 2013          272           17.45         25.061        4.828         0 \r\n 2013          273           16.88         26.7          11.972        0 \r\n 2013          274           14.98         26.361        10.228        0 \r\n 2013          275           12.34         27.728        8.611         0 \r\n 2013          276           8.82          23            14.928        5.334 \r\n 2013          277           4.26          21.05         9.839         19.558 \r\n 2013          278           13.02         12.289        3.461         0 \r\n 2013          279           3.75          9.089         4.311         4.064 \r\n 2013          280           17.13         22.828        3.461         0 \r\n 2013          281           16.15         24.378        8.272         0 \r\n 2013          282           16.45         25.789        11.1          0 \r\n 2013          283           15            26.789        11.839        0 \r\n 2013          284           8.31          24.05         9.072         0 \r\n 2013          285           16.47         17.339        1.511         0 \r\n 2013          286           15.98         18.661       -1.189         0 \r\n 2013          287           1.68          11.35         5.817         26.416 \r\n 2013          288           2.38          13.061        5.45          0.508 \r\n 2013          289           14.48         12.061        0.328         0.254 \r\n 2013          290           13.5          14.372       -1.233         0 \r\n 2013          291           13.5          11.411       -1.656         0 \r\n 2013          292           11.3          13           -0.5           0.254 \r\n 2013          293           8.62          14.761        2.139         0 \r\n 2013          294           11.59         9.361        -1.25          0 \r\n 2013          295           5.86          3.906        -1.25          1.524 \r\n 2013          296           3.41          3.444        -2.344         1.778 \r\n 2013          297           12.35         8.589        -3.622         0 \r\n 2013          298           13.01         15.222       -5.1           0 \r\n 2013          299           13.98         8.861        -3.367         0 \r\n 2013          300           14.13         17.628       -5.039         0 \r\n 2013          301           7.93          7.017         0.094         0.508 \r\n 2013          302           2.97          8.422         2.006         4.572 \r\n 2013          303           1             8.789         3.967         0 \r\n 2013          304           5.6           7.417         1.367         0 \r\n 2013          305           7.016         12.2          1.7           0 \r\n 2013          306           9.086         11.7         -0.6           0 \r\n 2013          307           8.971         13.3          2.2           0 \r\n 2013          308           7.29          10.6          4.4           0 \r\n 2013          309           6.607         10            0             3.3 \r\n 2013          310           3.948         1.1          -3.3           9.65 \r\n 2013          311           7.107         1.7          -5.6           0 \r\n 2013          312           8.601         11.1         -2.8           0 \r\n 2013          313           7.596         11.7          3.3           0 \r\n 2013          314           9.159         7.2          -6.7           0 \r\n 2013          315           8.737         6.1          -7.2           0.25 \r\n 2013          316           8.737        -1.7          -16.1          0 \r\n 2013          317           9.069         10.6         -6.7           0 \r\n 2013          318           8.321         12.2         -1.1           0.25 \r\n 2013          319           8.43          12.8          0.6           0 \r\n 2013          320           7.803         13.9          3.3           0 \r\n 2013          321           7.153         13.9          2.8           1.02 \r\n 2013          322           7.153         6.1          -3.9           0 \r\n 2013          323           7.295         13.3         -1.1           0 \r\n 2013          324           6.544         12.8          5             0 \r\n 2013          325           7.402         10           -6.1           0 \r\n 2013          326           7.831        -1.1          -16.1          0.76 \r\n 2013          327           7.857        -2.2          -16.7          0 \r\n 2013          328           7.644        -0.6          -13.3          0 \r\n 2013          329           7.007         5            -5             0 \r\n 2013          330           7.564         3.9          -8.3           0 \r\n 2013          331           7.459        -2.2          -15            0 \r\n 2013          332           7.039        -2.2          -9.4           0 \r\n 2013          333           7.67          2.2          -10.6          0 \r\n 2013          334           7.277         8.3          -4.4           0 \r\n 2013          335           7.381         6.1          -4.4           0 \r\n 2013          336           4.886         8.9          -2.8           0 \r\n 2013          337           5.094         6.7          -2.2           0 \r\n 2013          338           4.47          0.6          -9.4           0.25 \r\n 2013          339           5.348        -9.4          -17.2          0 \r\n 2013          340           4.731        -15           -23.9          0 \r\n 2013          341           5.245        -15           -24.4          0 \r\n 2013          342           5.451        -11.1         -18.3          3.05 \r\n 2013          343           6.377        -11.1         -23.3          0 \r\n 2013          344           6.994        -7.2          -18.9          0 \r\n 2013          345           5.494        -8.3          -25            5.08 \r\n 2013          346           7.122        -2.8          -18.9          0 \r\n 2013          347           5.494        -2.8          -11.7          0 \r\n 2013          348           4.375        -6.7          -12.8          0 \r\n 2013          349           2.747        -11.7         -16.1          0 \r\n 2013          350           5.087        -6.7          -14.4          0 \r\n 2013          351           5.901        -0.6          -7.2           0 \r\n 2013          352           6.919         4.4          -8.3           0 \r\n 2013          353           7.122         4.4          -11.7          0 \r\n 2013          354           2.747        -8.9          -12.8          0 \r\n 2013          355           3.459        -6.7          -11.7          0 \r\n 2013          356           5.698        -6.7          -14.4          0 \r\n 2013          357           6.206        -13.3         -24.4          0 \r\n 2013          358           7.122        -8.9          -25            0 \r\n 2013          359           6.512         0            -10            0 \r\n 2013          360           6.613         3.3          -8.9           0 \r\n 2013          361           7.631         8.3          -7.2           0 \r\n 2013          362           7.834         11.7         -1.7           0 \r\n 2013          363           8.241         7.8          -21.7          0 \r\n 2013          364           5.901        -10.6         -22.2          1.27 \r\n 2013          365           5.04         -10.6         -18.9          0 \r\n 2014          1             2.674        -16.7         -20            1.02 \r\n 2014          2             4.32         -17.2         -23.3          0 \r\n 2014          3             7.2          -2.8          -22.2          0 \r\n 2014          4             7.817         2.2          -12.2          0 \r\n 2014          5             5.554        -11.7         -22.8          0 \r\n 2014          6             5.143        -21.7         -28.3          0 \r\n 2014          7             6.341        -10           -25            0 \r\n 2014          8             5.51         -10           -18.9          0 \r\n 2014          9             5.302        -2.8          -13.3          0 \r\n 2014          10            4.99         -1.1          -7.2           0 \r\n 2014          11            4.782        -1.1          -7.8           0 \r\n 2014          12            5.989         5            -5.6           0 \r\n 2014          13            5.778         4.4          -5.6           0 \r\n 2014          14            6.514         5            -6.1           0.25 \r\n 2014          15            7.644        -5.6          -17.8          0 \r\n 2014          16            8.918         3.3          -13.3          0.25 \r\n 2014          17            8.387        -6.7          -17.8          0 \r\n 2014          18            8.069         1.7          -10            0 \r\n 2014          19            8.367         11.1         -10.6          0 \r\n 2014          20            8.796         7.2          -7.2           0.76 \r\n 2014          21            9.976        -7.2          -26.1          0 \r\n 2014          22            8.237        -8.9          -17.8          0 \r\n 2014          23            8.129        -14.4         -25.6          0 \r\n 2014          24            9.538         3.3          -18.3          0 \r\n 2014          25            8.978         3.9          -12.2          0 \r\n 2014          26            9.197         4.4          -8.3           0 \r\n 2014          27            10.73        -7.8          -22.8          0 \r\n 2014          28            6.636        -12.8         -24.4          0 \r\n 2014          29            8.626         3.9          -18.3          0 \r\n 2014          30            8.184         4.4          -12.2          5.08 \r\n 2014          31            8.713        -9.4          -18.3          0 \r\n 2014          32            6.579        -7.8          -12.8          2.03 \r\n 2014          33            9.216        -7.2          -20.6          0 \r\n 2014          34            9.002        -7.2          -15            0 \r\n 2014          35            7.9          -7.8          -16.1          0.76 \r\n 2014          36            5.411        -15.6         -18.9          0 \r\n 2014          37            7.575        -16.1         -26.7          0 \r\n 2014          38            9.178        -9.4          -24.4          0 \r\n 2014          39            9.397        -8.9          -16.7          3.3 \r\n 2014          40            9.818        -12.2         -25            0 \r\n 2014          41            9.818        -16.7         -28.3          0 \r\n 2014          42            10.469       -8.3          -22.2          0 \r\n 2014          43            6.905        -7.8          -10.6          2.54 \r\n 2014          44            9.021         2.2          -10            0 \r\n 2014          45            11.242       -7.2          -14.4          1.78 \r\n 2014          46            10.567        5            -17.8          0 \r\n 2014          47            12.822        2.2          -13.9          0 \r\n 2014          48            7.489         3.9          -6.1           5.84 \r\n 2014          49            9.505         6.7          -1.1           0 \r\n 2014          50            11.91         10.6         -3.9           0 \r\n 2014          51            12.366        10           -0.6           7.62 \r\n 2014          52            8.09          0.6          -10.6          0 \r\n 2014          53            10.263       -1.1          -9.4           0 \r\n 2014          54            11.662       -3.3          -15            0 \r\n 2014          55            10.002       -4.4          -12.8          0 \r\n 2014          56            13.179       -9.4          -22.8          2.03 \r\n 2014          57            14.603       -6.1          -23.9          0 \r\n 2014          58            15.434       -5.6          -23.3          0 \r\n 2014          59            13.893       -5.6          -20.6          2.03 \r\n 2014          60            9.061        -5.6          -20            5.33 \r\n 2014          61            7.027        -18.9         -25.6          0.51 \r\n 2014          62            12.324       -12.2         -24.4          0 \r\n 2014          63            12.867       -6.7          -15.6          0 \r\n 2014          64            9.705        -5.6          -10            0 \r\n 2014          65            9.349         1.1          -8.9           0 \r\n 2014          66            9.898         1.7          -4.4           0 \r\n 2014          67            14.087       -1.1          -13.3          0 \r\n 2014          68            14.198        12.8         -7.2           0 \r\n 2014          69            15.661        15            3.3           0 \r\n 2014          70            14.654        14.4          1.1           1.52 \r\n 2014          71            9.814         3.3          -3.9           0 \r\n 2014          72            12.972        16.1         -1.1           0 \r\n 2014          73            16.607        16.7          0.6           0 \r\n 2014          74            13.422        8.9          -2.2           0 \r\n 2014          75            12.042        0            -8.3           0 \r\n 2014          76            14.106        10.6         -3.3           0 \r\n 2014          77            15.494        11.1          0             0 \r\n 2014          78            13.066        6.7          -2.2           2.03 \r\n 2014          79            16.785        12.2         -3.3           0 \r\n 2014          80            17.601        12.2         -0.6           0 \r\n 2014          81            18.448        4.4          -10            0 \r\n 2014          82            14.806        0            -11.7          0 \r\n 2014          83            14.924        1.7          -4.4           0 \r\n 2014          84            16.117        1.1          -10            0 \r\n 2014          85            17.311        13.9         -7.2           0 \r\n 2014          86            19.854        16.1          1.1           4.06 \r\n 2014          87            9.385         1.1          -5             0 \r\n 2014          88            16.371        10           -6.7           0 \r\n 2014          89            20.372        20            3.3           0 \r\n 2014          90            20.653        23.3          10            0 \r\n 2014          91            17.93         5.017        -8.772         0 \r\n 2014          92            13.93         8.139        -5.022         0 \r\n 2014          93            1.98          2.328        -2.1           0 \r\n 2014          94            17.74         1.933        -4.006         0 \r\n 2014          95            23.47         11.861       -7.211         0 \r\n 2014          96            19.96         17.028        2.806         0 \r\n 2014          97            19.19         15.261        2.744         0 \r\n 2014          98            24.67         11.922       -0.461         0 \r\n 2014          99            21.61         23.95        -1.567         0 \r\n 2014          100           23.66         17.772        3.783         0 \r\n 2014          101           23.55         22.678        1.917         0 \r\n 2014          102           19.78         25.978        8.489         0.254 \r\n 2014          103           2.86          8.211        -3.056         0 \r\n 2014          104           21.14         4.1          -5.444         0 \r\n 2014          105           24.74         6.522        -9.628         0 \r\n 2014          106           8.84          15.428       -1.656         0 \r\n 2014          107           24.4          9.5          -3.856         0 \r\n 2014          108           23.58         18.011       -2.728         0 \r\n 2014          109           16.99         23.861        7.856         0 \r\n 2014          110           12.5          17.272        14.928        0 \r\n 2014          111           24.52         22.261        2.572         0 \r\n 2014          112           24.02         19.378       -1.706         0 \r\n 2014          113           13.09         13.378        6.978         5.842 \r\n 2014          114           15.03         15.639        3.611         4.826 \r\n 2014          115           25.72         23.189        2.539         0 \r\n 2014          116           20.38         20.328        6.089         0 \r\n 2014          117           5.05          13.628        5.944         8.382 \r\n 2014          118           2.71          13.172        6.056         6.604 \r\n 2014          119           7.79          6.139         2.928         6.35 \r\n 2014          120           7.03          5.706         2.794         4.064 \r\n 2014          121           6.26          8.189         2.2           0.254 \r\n 2014          122           21.6          18.072        1.083         0 \r\n 2014          123           20.67         18.561        1.983         0 \r\n 2014          124           23.25         13.75         3.161         2.286 \r\n 2014          125           25.92         21.411        4.844         0 \r\n 2014          126           22.9          23.789        7.006         0 \r\n 2014          127           22.53         32.239        11.189        0 \r\n 2014          128           14.68         26.578        8.461         4.826 \r\n 2014          129           25.65         19.639        6.65          0 \r\n 2014          130           19.88         25.461        7.083         0.254 \r\n 2014          131           12.02         20.45         6.967         11.176 \r\n 2014          132           5.32          15.489        6.594         6.858 \r\n 2014          133           15.53         14            2.794         0 \r\n 2014          134           21.13         17.828        0.978         0 \r\n 2014          135           11.88         8.772        -0.667         0 \r\n 2014          136           19.51         13.689       -3.117         0 \r\n 2014          137           21.1          19.111        0.7           0 \r\n 2014          138           24.15         21.761        3.167         0 \r\n 2014          139           5.1           21.889        12.15         4.572 \r\n 2014          140           23.93         30.7          10.928        0 \r\n 2014          141           27.83         24.839        11.15         0 \r\n 2014          142           26.72         26.3          10.039        0 \r\n 2014          143           27.08         28.161        9.028         0 \r\n 2014          144           17.95         27.072        12.5          0 \r\n 2014          145           13.62         25.128        14.761        0 \r\n 2014          146           16.97         26.572        17.45         5.588 \r\n 2014          147           20.37         29.611        16.539        0 \r\n 2014          148           22.48         28.978        15.822        0 \r\n 2014          149           24.53         30.072        12.722        0 \r\n 2014          150           20.98         31.161        17.011        0 \r\n 2014          151           20.72         30.889        17.211        1.016 \r\n 2014          152           4.34          25.572        16.561        22.098 \r\n 2014          153           27.23         26.022        13.428        0 \r\n 2014          154           11.06         22.639        9.772         11.684 \r\n 2014          155           25.48         26.472        15.261        0 \r\n 2014          156           11.48         22.878        14.128        0 \r\n 2014          157           25.83         29.922        14.511        0 \r\n 2014          158           8.6           20.789        10.278        5.08 \r\n 2014          159           23.05         23.961        7.867         0 \r\n 2014          160           6.86          19.878        14.211        0 \r\n 2014          161           24.98         26.761        12.611        0 \r\n 2014          162           27.65         28.111        12.839        0 \r\n 2014          163           19.93         22.722        8.861         0 \r\n 2014          164           28.75         25.628        5.883         0 \r\n 2014          165           3.62          23.828        14.078        25.908 \r\n 2014          166           26.22         24.672        14.689        18.288 \r\n 2014          167           6.87          27.072        14.389        107.442 \r\n 2014          168           15.87         28.739        16.2          0.254 \r\n 2014          169           20.88         29.95         17.522        8.89 \r\n 2014          170           14.27         27.722        17.572        2.794 \r\n 2014          171           19.08         30.739        14.661        0 \r\n 2014          172           28.1          29.8          17.739        0.508 \r\n 2014          173           13.77         25.289        16.972        16.002 \r\n 2014          174           19.65         25.1          15.411        0 \r\n 2014          175           27.83         27.539        13.978        0 \r\n 2014          176           25.92         29.528        14.15         0 \r\n 2014          177           19.8          28.239        17.728        1.524 \r\n 2014          178           15.82         25.528        17.95         0 \r\n 2014          179           20.85         27.489        15.628        1.778 \r\n 2014          180           17.93         28.422        14.911        21.082 \r\n 2014          181           10.29         25.611        15.139        23.114 \r\n 2014          182           18.42         21.75         11.861        0 \r\n 2014          183           16.1          22.711        11            0 \r\n 2014          184           25.95         24.928        8.278         0 \r\n 2014          185           25.1          26.339        14.661        0.508 \r\n 2014          186           23.8          27.739        17.45         1.778 \r\n 2014          187           22.32         31.639        17.628        0 \r\n 2014          188           16.55         27.811        15.172        0 \r\n 2014          189           25.73         25.822        13.15         0 \r\n 2014          190           25.08         26.578        10.589        0 \r\n 2014          191           23.23         27.7          13.461        0 \r\n 2014          192           14.82         26.522        18.778        0.762 \r\n 2014          193           9.59          25            16.972        17.78 \r\n 2014          194           24.68         27.278        13.75         0 \r\n 2014          195           25.38         20.961        10.172        0.254 \r\n 2014          196           15.94         22.05         8.05          0 \r\n 2014          197           22            24.411        7.6           0 \r\n 2014          198           24.92         24.972        9.511         0 \r\n 2014          199           19.73         24.25         11.689        0 \r\n 2014          200           16.42         25.378        15.139        0 \r\n 2014          201           21.25         28.822        17.089        0 \r\n 2014          202           14.33         30.378        20.561        0 \r\n 2014          203           23.22         28.811        15.45         0 \r\n 2014          204           25.3          27.428        13.35         0 \r\n 2014          205           8.91          23.828        13.022        2.794 \r\n 2014          206           19.18         27.1          17.428        0.508 \r\n 2014          207           15.1          29.4          18.139        0 \r\n 2014          208           13.48         23.139        13.1          0 \r\n 2014          209           16.72         24.261        10.578        0 \r\n 2014          210           24.73         25.272        8.328         0 \r\n 2014          211           22.82         26.739        9.478         0 \r\n 2014          212           23.6          26.339        9.1           0 \r\n 2014          213           24.12         28.961        10.989        0 \r\n 2014          214           21.4          28.211        11.639        0 \r\n 2014          215           23.8          30.061        14.422        0 \r\n 2014          216           16.85         30.272        15.711        0 \r\n 2014          217           5.13          24.5          18.572        1.016 \r\n 2014          218           4.05          19.6          17.889        37.592 \r\n 2014          219           7.25          22            17.878        5.334 \r\n 2014          220           17.29         25.839        17.589        0 \r\n 2014          221           16.45         25.6          17.439        0 \r\n 2014          222           11.37         25.95         16.928        11.938 \r\n 2014          223           25.17         24.522        11.128        0.254 \r\n 2014          224           25.75         25.011        8.911         0 \r\n 2014          225           25.02         27.861        9.239         0 \r\n 2014          226           12.61         24.35         11.961        0 \r\n 2014          227           9.95          25.072        17.122        15.494 \r\n 2014          228           19.49         27.872        18.261        0 \r\n 2014          229           20.63         29.061        17.1          0 \r\n 2014          230           23.53         29.239        17.428        0 \r\n 2014          231           22.62         28.55         15.372        0 \r\n 2014          232           7.47          24.172        16.378        2.286 \r\n 2014          233           20.16         30.378        21.3          0 \r\n 2014          234           16.95         27.822        18.75         0 \r\n 2014          235           15.64         27.889        19.322        30.988 \r\n 2014          236           19.64         29.628        16.228        4.572 \r\n 2014          237           16.09         23.4          14.1          0 \r\n 2014          238           13.73         22.328        13.128        0 \r\n 2014          239           9.66          23.75         13.661        0 \r\n 2014          240           4.68          24.089        18.528        13.716 \r\n 2014          241           5.03          22.078        17.211        11.938 \r\n 2014          242           18.34         25.739        15.228        0.254 \r\n 2014          243           10.3          26.672        15.361        2.032 \r\n 2014          244           19.11         25.761        14.422        0.508 \r\n 2014          245           21.81         24.628        11.378        1.016 \r\n 2014          246           15.35         27.128        14.428        0 \r\n 2014          247           16.15         28.15         15.45         0 \r\n 2014          248           10.57         18.672        6.956         0 \r\n 2014          249           22.18         24.272        5.05          0 \r\n 2014          250           22.01         23.139        6.389         0 \r\n 2014          251           11.18         23.028        13.489        10.414 \r\n 2014          252           8.6           24.822        14.139        0 \r\n 2014          253           8.2           17.589        8.889         2.032 \r\n 2014          254           9.98          13.189        6.994         2.794 \r\n 2014          255           10.46         13.122        0.811         8.636 \r\n 2014          256           21.95         15.611       -0.261         0 \r\n 2014          257           13.23         20.361        4.211         0 \r\n 2014          258           15.09         17.672        2.672         1.016 \r\n 2014          259           20.87         19.561        2.044         0 \r\n 2014          260           17.21         25.461        7.372         0 \r\n 2014          261           19.28         23.061        8.628         0 \r\n 2014          262           16.33         29.25         13.961        3.048 \r\n 2014          263           17.84         27.989        10.161        0.254 \r\n 2014          264           19.09         22.111        5.939         0 \r\n 2014          265           19.85         22.472        4.128         0 \r\n 2014          266           5.34          17.8          9.472         1.016 \r\n 2014          267           14.48         24.461        13.622        0 \r\n 2014          268           17.32         28.122        11.389        0 \r\n 2014          269           16.46         28.472        11.222        0 \r\n 2014          270           16.24         26.728        13.772        0 \r\n 2014          271           16.6          27.6          11.289        0.762 \r\n 2014          272           11.18         21.328        11.861        0 \r\n 2014          273           6.5           19.439        10.161        8.128 \r\n 2014          274           10.49         24.772        12.722        0.254 \r\n 2014          275           3.45          14.878        6.672         7.62 \r\n 2014          276           6.2           8.828         1.317         0 \r\n 2014          277           17.79         11.4         -1.283         0 \r\n 2014          278           12.85         17.172        3.322         0 \r\n 2014          279           13.77         18.75         1.167         0 \r\n 2014          280           16.59         19.35         3.878         0 \r\n 2014          281           14            21.572       -0.472         0 \r\n 2014          282           8.09          11.65         2.994         0 \r\n 2014          283           14.83         14.45        -1.756         0 \r\n 2014          284           16.85         15.522       -3.156         0 \r\n 2014          285           14.96         18.828        2.206         0 \r\n 2014          286           1.99          12.478        9.322         1.27 \r\n 2014          287           16.46         19.078        1.867         0 \r\n 2014          288           15.91         21.928       -1.333         0 \r\n 2014          289           13.36         23.428        5.228         0 \r\n 2014          290           12.29         15.578        6.461         0 \r\n 2014          291           14.09         15.9          2.667         0 \r\n 2014          292           13.49         22.689        3.117         0 \r\n 2014          293           14.64         22.189        2.472         0 \r\n 2014          294           14.15         22.7          2.006         0 \r\n 2014          295           11.89         22.722        8.661         14.478 \r\n 2014          296           12.86         21.15         8.639         2.54 \r\n 2014          297           11.78         23.039        8.939         0 \r\n 2014          298           13.98         20.639        5.161         0 \r\n 2014          299           12.02         20.722        4.894         0 \r\n 2014          300           8.74          20.311        5.089         0 \r\n 2014          301           5.92          8.189         3.1           0 \r\n 2014          302           13.72         11.222        2.483         0 \r\n 2014          303           11.35         15.2         -0.683         0 \r\n 2014          304           13.83         4.939        -6.439         0 \r\n 2014          305           8.971         8.9          -5             0 \r\n 2014          306           8.856         14.4          2.8           0 \r\n 2014          307           6.901         14.4          7.8           1.27 \r\n 2014          308           6.493         13.9         -0.6           0 \r\n 2014          309           8.202         13.3          1.7           0 \r\n 2014          310           8.235         13.3         -1.7           0 \r\n 2014          311           7.445         11.7         -0.6           0 \r\n 2014          312           6.814         10.6          1.7           0 \r\n 2014          313           4.58          7.8           1.7           0 \r\n 2014          314           6.143         3.3          -3.3           0 \r\n 2014          315           6.193        -3.3          -9.4           1.02 \r\n 2014          316           6.193        -6.1          -13.3          0 \r\n 2014          317           6.525        -3.3          -10.6          0 \r\n 2014          318           8.54         -3.3          -16.1          0 \r\n 2014          319           7.335        -3.9          -8.9           4.32 \r\n 2014          320           7.045        -5.6          -21.1          2.29 \r\n 2014          321           7.587        -7.8          -16.1          0 \r\n 2014          322           5.311        -6.7          -17.2          0 \r\n 2014          323           5.9          -3.3          -8.9           0 \r\n 2014          324           6.866        -6.1          -16.1          0 \r\n 2014          325           8.046         0.6          -12.8          0 \r\n 2014          326           6.758         5            -1.1           0 \r\n 2014          327           7.007         10.6          3.3           0 \r\n 2014          328           8.387         4.4          -7.8           0 \r\n 2014          329           7.113         2.2          -12.8          0 \r\n 2014          330           5.883         1.7          -7.8           5.08 \r\n 2014          331           8.405        -7.2          -22.2          0 \r\n 2014          332           8.405         0            -12.2          0 \r\n 2014          333           7.88          12.2         -5.6           0 \r\n 2014          334           8.836         10.6         -14.4          0 \r\n 2014          335           5.094        -9.4          -16.7          0 \r\n 2014          336           6.133         0            -14.4          0 \r\n 2014          337           6.653        -0.6          -10.6          0 \r\n 2014          338           6.237         3.3          -6.1           0 \r\n 2014          339           5.245         1.7          -3.3           0 \r\n 2014          340           5.965         1.7          -7.8           0 \r\n 2014          341           5.04          1.7          -3.3           0 \r\n 2014          342           3.497         2.8          -0.6           0 \r\n 2014          343           4.731         0            -6.1           0 \r\n 2014          344           3.6          -2.2          -7.2           0 \r\n 2014          345           3.561         1.7          -3.3           0 \r\n 2014          346           3.765         6.7           0.6           0 \r\n 2014          347           5.087         11.1          1.7           0 \r\n 2014          348           3.561         11.7          8.9           1.27 \r\n 2014          349           3.765         11.7          0.6           13.46 \r\n 2014          350           5.392         0.6          -9.4           0 \r\n 2014          351           5.698        -4.4          -14.4          0 \r\n 2014          352           5.392        -3.3          -9.4           0 \r\n 2014          353           3.358         0            -3.9           0 \r\n 2014          354           1.628        -0.6          -2.2           0 \r\n 2014          355           3.052         3.3          -1.7           0 \r\n 2014          356           1.628         3.9           2.8           5.08 \r\n 2014          357           1.628         3.3           0             8.89 \r\n 2014          358           1.73          0.6          -1.7           0 \r\n 2014          359           3.968         3.3          -4.4           0 \r\n 2014          360           4.07          3.3          -4.4           0 \r\n 2014          361           4.985        -2.2          -12.2          3.81 \r\n 2014          362           6.817        -5.6          -13.9          0 \r\n 2014          363           7.02         -6.7          -15.6          0 \r\n 2014          364           7.834        -15           -26.1          0 \r\n 2014          365           7.611        -18.3         -25.6          0 \r\n 2015          1             8.66         -1.7          -13.9          0 \r\n 2015          2             8.42         -1.7          -6.1           0 \r\n 2015          3             6.65         -2.2          -10.6          0 \r\n 2015          4             9.47         -10.6         -22.2          3.81 \r\n 2015          5             2.68         -13.9         -25            5.59 \r\n 2015          6             6.82         -13.9         -26.1          2.03 \r\n 2015          7             10.54        -13.3         -24.4          0 \r\n 2015          8             5.89         -5.6          -24.4          0.51 \r\n 2015          9             10.27        -10           -19.4          0 \r\n 2015          10            6.97         -3.9          -20.6          0 \r\n 2015          11            7.99         -3.9          -15.6          0 \r\n 2015          12            10.85        -8.9          -20.6          0 \r\n 2015          13            9.4          -8.9          -22.8          0 \r\n 2015          14            7.96         -4.4          -12.2          0 \r\n 2015          15            10.6          0.6          -9.4           0 \r\n 2015          16            10.76         2.8          -5             0 \r\n 2015          17            4.55          3.3          -2.2           0 \r\n 2015          18            10.27         5            -4.4           0 \r\n 2015          19            5.91          5            -1.1           1.27 \r\n 2015          20            3.59          5            -1.7           0 \r\n 2015          21            6.18          2.2          -3.3           1.27 \r\n 2015          22            6.49          0.6          -5             0 \r\n 2015          23            6.55          3.3          -4.4           0 \r\n 2015          24            8.17          5            -3.9           0 \r\n 2015          25            4.7           3.3          -1.1           1.27 \r\n 2015          26            11.44         7.2          -1.1           0 \r\n 2015          27            10.8          7.2          -1.7           0 \r\n 2015          28            6.89          5            -1.7           0 \r\n 2015          29            2.73          2.2          -1.7           0 \r\n 2015          30            11.84         0.6          -10.6          0 \r\n 2015          31            1.39          1.1          -3.9           0 \r\n 2015          32            6.85         -2.8          -12.2          12.7 \r\n 2015          33            11.25        -11.7         -22.8          0 \r\n 2015          34            12.24        -5.6          -15.6          0 \r\n 2015          35            12.09        -6.1          -12.8          0 \r\n 2015          36            12.99        -8.3          -20.6          0 \r\n 2015          37            13.23         2.8          -10.6          0 \r\n 2015          38            11.87         7.8          -2.2           0 \r\n 2015          39            3.87          6.1          -2.2           0 \r\n 2015          40            3.47         -0.6          -2.2           0 \r\n 2015          41            2.4           1.1          -2.8           0 \r\n 2015          42            11.61         2.8          -8.3           0 \r\n 2015          43            10.02        -5.6          -18.9          0 \r\n 2015          44            13.74         2.8          -11.7          0 \r\n 2015          45            13.22         2.8          -14.4          0 \r\n 2015          46            5.86         -12.2         -16.7          0 \r\n 2015          47            4.88         -3.3          -12.2          0 \r\n 2015          48            13.47        -3.3          -14.4          0 \r\n 2015          49            14.36        -9.4          -21.1          0 \r\n 2015          50            13.36        -7.8          -21.1          0 \r\n 2015          51            8.03          3.3          -12.2          0 \r\n 2015          52            13.11         3.9          -9.4           0 \r\n 2015          53            15.65        -5            -17.8          0 \r\n 2015          54            16.65        -5.6          -22.2          0 \r\n 2015          55            12.72         2.2          -7.2           0 \r\n 2015          56            9.22          2.8          -10            3.05 \r\n 2015          57            16.89        -10           -23.9          0 \r\n 2015          58            17.84        -11.1         -24.4          0 \r\n 2015          59            16.45        -6.1          -18.3          0 \r\n 2015          60            14.57        -6.7          -18.3          0 \r\n 2015          61            7.83         -0.6          -13.9          0 \r\n 2015          62            12.38        -2.8          -12.2          0 \r\n 2015          63            17.51        -1.1          -17.2          0 \r\n 2015          64            18.61        -8.3          -22.2          0 \r\n 2015          65            16.02        -5            -21.7          0 \r\n 2015          66            18.36         8.3          -9.4           0 \r\n 2015          67            17.91         7.2          -2.8           0.51 \r\n 2015          68            18.28         10           -0.6           0 \r\n 2015          69            17.97         12.8         -0.6           0 \r\n 2015          70            18.12         17.8         -2.8           0 \r\n 2015          71            14.61         15            0.6           0 \r\n 2015          72            16.05         20.6          2.8           0 \r\n 2015          73            18.31         18.9         -1.7           0 \r\n 2015          74            13.76         17.8         -2.2           0 \r\n 2015          75            15.58         22.8          5.6           0 \r\n 2015          76            16.88         22.8         -3.9           0 \r\n 2015          77            10.94         7.2          -3.3           0 \r\n 2015          78            16.65         7.8          -0.6           0 \r\n 2015          79            18.99         11.7         -4.4           0 \r\n 2015          80            19.1          21.1         -5             0 \r\n 2015          81            12.4          9.4          -2.8           0 \r\n 2015          82            15.63         8.9          -1.7           0.51 \r\n 2015          83            2.17          7.8          -1.7           0 \r\n 2015          84            15.23         0.6          -1.7           12.7 \r\n 2015          85            11.81         6.1          -5             0 \r\n 2015          86            13.91         3.3          -9.4           0 \r\n 2015          87            20.29         2.2          -9.4           3.3 \r\n 2015          88            17.2          9.4          -2.8           0 \r\n 2015          89            17.99         14.4          1.1           0 \r\n 2015          90            20.73         22.8          1.1           0 \r\n 2015          91            19.05         28.6          7.822         5.842 \r\n 2015          92            16.61         18.322        2.856         0 \r\n 2015          93            21.58         8.45         -3.4           0 \r\n 2015          94            20.15         19           -3.256         0 \r\n 2015          95            18.33         21.339       -0.056         0 \r\n 2015          96            2.31          11.089        5.117         0 \r\n 2015          97            2.06          5.5           3.35          5.842 \r\n 2015          98            3.82          7.228         2.706         1.016 \r\n 2015          99            2.74          5.322         0.589         22.352 \r\n 2015          100           24.3          13.15         1.478         0 \r\n 2015          101           21.56         21.339        0.344         0 \r\n 2015          102           15.25         23.739        6.289         8.89 \r\n 2015          103           21.92         18.228        1.178         0 \r\n 2015          104           10.26         21.972        1.967         0 \r\n 2015          105           5.16          18.061        4.672         0 \r\n 2015          106           11.8          22.672        10.311        0 \r\n 2015          107           13.14         25.089        7.2           0 \r\n 2015          108           3.23          17.739        11.6          26.924 \r\n 2015          109           4.68          12.639        5.006         0.254 \r\n 2015          110           24.27         11.711       -0.217         0 \r\n 2015          111           23.66         12.161       -1.594         0 \r\n 2015          112           25.84         13.139       -4.106         0 \r\n 2015          113           24.44         16.889        0.772         0 \r\n 2015          114           15.51         18.572        7.978         2.032 \r\n 2015          115           14.14         14.589        5.139         0 \r\n 2015          116           25.68         19.211        0.539         0 \r\n 2015          117           25.46         20.178        0.117         0 \r\n 2015          118           19.73         21.9          1.906         0 \r\n 2015          119           25.58         21.289        4.039         0 \r\n 2015          120           24.9          23.761        2.794         0.254 \r\n 2015          121           17.3          20.439        8.739         1.27 \r\n 2015          122           22.37         24.561        6.128         0 \r\n 2015          123           22.57         30.55         11.228        0 \r\n 2015          124           17.8          22.622        9.622         0 \r\n 2015          125           7.42          20.772        10.9          1.27 \r\n 2015          126           10.73         22.9          15.778        0.508 \r\n 2015          127           8.47          20.622        11.128        0.508 \r\n 2015          128           11.46         14.1          5.178         0.254 \r\n 2015          129           22.04         21.528        2.35          0 \r\n 2015          130           5.34          19.078        8.628         10.16 \r\n 2015          131           6.51          8.711         3.767         0 \r\n 2015          132           23            18.439        2.044         0 \r\n 2015          133           21.38         23.189        8.05          0.254 \r\n 2015          134           4.01          16.878        10.222        23.622 \r\n 2015          135           10.53         20.3          11.861        0 \r\n 2015          136           11.91         25.889        15.239        4.318 \r\n 2015          137           17.05         22.239        5.944         4.318 \r\n 2015          138           10.78         6.028         2.572         0 \r\n 2015          139           19.74         12.161        1.661         0 \r\n 2015          140           8.92          10.872        5.339         11.43 \r\n 2015          141           25.46         24.25         3.606         0 \r\n 2015          142           19.32         24.45         4.694         0 \r\n 2015          143           14.71         21.372        12.122        0 \r\n 2015          144           4.88          17.678        14.111        0 \r\n 2015          145           16.47         25.472        14.728        0 \r\n 2015          146           5.58          16.461        12.589        0 \r\n 2015          147           23.96         29.322        10.039        0 \r\n 2015          148           19.76         27.061        12.778        0 \r\n 2015          149           11.64         23.122        9.922         16.002 \r\n 2015          150           27.89         18.111        7.772         0 \r\n 2015          151           19.24         19.528        4.594         0 \r\n 2015          152           27.52         24.472        10.311        0 \r\n 2015          153           23.11         25.65         12.322        0 \r\n 2015          154           18.89         26.861        15.678        1.524 \r\n 2015          155           17.66         28.839        15.822        0 \r\n 2015          156           20.14         28.778        15.322        0 \r\n 2015          157           14.67         26.478        17.878        9.652 \r\n 2015          158           14.53         24.272        15.539        2.032 \r\n 2015          159           24.37         30.122        14.289        0 \r\n 2015          160           23.78         36.578        15.278        0 \r\n 2015          161           24.08         30.389        16.578        3.81 \r\n 2015          162           4.61          16.778        14.028        12.954 \r\n 2015          163           7.34          19.189        13.889        0 \r\n 2015          164           13.28         25.172        16.089        0 \r\n 2015          165           18.74         28.928        15.228        0 \r\n 2015          166           13.11         23.4          13.978        6.35 \r\n 2015          167           24.46         25.739        11.6          0 \r\n 2015          168           23.09         26.411        13.811        0 \r\n 2015          169           19.65         25.722        10.711        0 \r\n 2015          170           24.46         28.511        12.55         0 \r\n 2015          171           23.53         30.3          16.95         0.762 \r\n 2015          172           22.51         30.489        15.072        0 \r\n 2015          173           21.24         28.061        13.911        9.398 \r\n 2015          174           17.77         26.628        11.139        0 \r\n 2015          175           14.06         23.328        16.089        0 \r\n 2015          176           19.05         27.05         15.4          0 \r\n 2015          177           22.74         27.178        15.1          3.302 \r\n 2015          178           20.19         28.7          12.722        0 \r\n 2015          179           25.18         27.25         16.078        0 \r\n 2015          180           16.88         27.278        14.528        0 \r\n 2015          181           12.69         26.711        15.572        0 \r\n 2015          182           15.91         23.15         13.789        0.508 \r\n 2015          183           13.89         21.661        11.822        0 \r\n 2015          184           24.25         25.25         7.217         0 \r\n 2015          185           23.34         27.278        12.661        0 \r\n 2015          186           22.7          31.011        17.05         0 \r\n 2015          187           14.58         25.722        11.461        34.29 \r\n 2015          188           27.57         20.489        8.778         0 \r\n 2015          189           25.46         22.939        9.261         0 \r\n 2015          190           24.77         26.678        11.5          0 \r\n 2015          191           22.65         26.561        14.439        0 \r\n 2015          192           23.95         29.85         17.922        0 \r\n 2015          193           25.46         32.789        22.289        0 \r\n 2015          194           27.54         31.422        21.322        0 \r\n 2015          195           25.75         30.4          17.822        0 \r\n 2015          196           10.55         24.661        18.55         0.762 \r\n 2015          197           19.91         28.589        19.278        33.02 \r\n 2015          198           24.74         31.911        18.011        4.572 \r\n 2015          199           26.69         29.211        18.089        1.778 \r\n 2015          200           26.56         27.939        15.828        0 \r\n 2015          201           25.14         25.989        14.189        4.064 \r\n 2015          202           26.03         26.411        11.45         0 \r\n 2015          203           19            25.5          14.322        0 \r\n 2015          204           25.55         28.1          13.872        0 \r\n 2015          205           22.3          31.939        20.139        0 \r\n 2015          206           17.08         28.839        17.472        6.604 \r\n 2015          207           23.14         30.7          16.261        19.304 \r\n 2015          208           16.92         28.572        19.6          17.526 \r\n 2015          209           11.54         25.789        14.128        36.83 \r\n 2015          210           26.24         26.472        12.028        0 \r\n 2015          211           23.74         28.589        13.272        0 \r\n 2015          212           22.28         29.4          15.45         0 \r\n 2015          213           18.52         27.939        14.561        0 \r\n 2015          214           20.57         29.328        15.422        0 \r\n 2015          215           21.909        26.722        11.739        0 \r\n 2015          216           18.542        25.872        14.289        0 \r\n 2015          217           16.371        25.472        13.811        0 \r\n 2015          218           13.531        27.578        17.2          0 \r\n 2015          219           21.125        31.25         17.639        0 \r\n 2015          220           11.434        28.561        19.789        0.508 \r\n 2015          221           12.322        28.861        16.228        1.524 \r\n 2015          222           20.585        25.889        14.1          0.254 \r\n 2015          223           20.909        28.161        12.278        0 \r\n 2015          224           20.667        28.639        14.061        0 \r\n 2015          225           17.111        27.089        16.578        0 \r\n 2015          226           16.68         30.311        16.122        0 \r\n 2015          227           20.289        29.472        16.639        0 \r\n 2015          228           14.883        27.761        19.378        23.114 \r\n 2015          229           7.813         20.411        15.5          30.988 \r\n 2015          230           6.57          20.622        10.828        37.084 \r\n 2015          231           15.455        19.561        9.422         2.032 \r\n 2015          232           20.149        25.078        6.733         0 \r\n 2015          233           19.592        25.822        15.361        1.524 \r\n 2015          234           13.161        26.439        12.578        0.254 \r\n 2015          235           20.153        19.278        8.2           0 \r\n 2015          236           20.028        20.572        5.683         0 \r\n 2015          237           19.728        23.072        5.028         0 \r\n 2015          238           18.3          22.95         6.5           0 \r\n 2015          239           10.707        25.111        12.578        22.352 \r\n 2015          240           5.716         17.528        14.522        20.574 \r\n 2015          241           15.495        21.7          12.989        0 \r\n 2015          242           17.427        23.589        15.861        0 \r\n 2015          243           14.936        27.689        16.078        0 \r\n 2015          244           16.856        29.322        16.489        0 \r\n 2015          245           18.183        29.2          19.811        0 \r\n 2015          246           17.931        30.15         18.828        0 \r\n 2015          247           13.94         28.822        20.178        0 \r\n 2015          248           16.585        30.95         21.761        0 \r\n 2015          249           15.717        31.022        20.411        0 \r\n 2015          250           15.785        24.75         17.35         12.192 \r\n 2015          251           12.502        24.378        12.289        15.748 \r\n 2015          252           11.96         25.922        9.639         2.54 \r\n 2015          253           14.867        23.628        10.939        0.508 \r\n 2015          254           13.655        17.228        6.156         0 \r\n 2015          255           17.814        20.239        3.444         0 \r\n 2015          256           17.374        24.139        5.883         0 \r\n 2015          257           16.871        27.978        14.15         0 \r\n 2015          258           16.654        28.15         17.311        0 \r\n 2015          259           14.428        30.011        18.061        0 \r\n 2015          260           9.034         28.822        13.6          0 \r\n 2015          261           4.111         15.539        8.089         4.572 \r\n 2015          262           15.232        19.55         4.956         0.254 \r\n 2015          263           14.717        23.789        7.6           0 \r\n 2015          264           12.348        24.078        11.611        0 \r\n 2015          265           9.496         27.689        15.928        0 \r\n 2015          266           13.456        23.628        16.528        8.89 \r\n 2015          267           4.792         19.872        17.128        13.716 \r\n 2015          268           14.963        27.9          14.128        0 \r\n 2015          269           14.902        26.7          10.972        0 \r\n 2015          270           14.962        27.328        11.589        0 \r\n 2015          271           14.396        28.739        14.372        0 \r\n 2015          272           14.784        21.822        7.217         5.842 \r\n 2015          273           13.511        19.661        4.328         0 \r\n 2015          274           14.022        17.85         4.35          0 \r\n 2015          275           14.30813      17.27         2.774         0 \r\n 2015          276           13.31626      16.62         2.703         0 \r\n 2015          277           12.37967      14.98         5.4           0 \r\n 2015          278           13.08293      20.29         8.77          0 \r\n 2015          279           13.69187      23.84         12.57         0 \r\n 2015          280           13.07886      24.1          9.1           0 \r\n 2015          281           9.995934      21.34         10.42         0 \r\n 2015          282           13.01951      17.33         5.26          0 \r\n 2015          283           13.14797      25.22         4.18          0 \r\n 2015          284           13.07073      30.02         12.54         0 \r\n 2015          285           13.01626      18.88         7.924         0 \r\n 2015          286           12.75772      22.41         1.744         0 \r\n 2015          287           12.45447      21.16         1.906         0 \r\n 2015          288           12.84634      17.95         1.996         0 \r\n 2015          289           12.61301      12.01        -2.81          0 \r\n 2015          290           12.29919      14.55         3.331         0 \r\n 2015          291           11.97805      20.76         2.481         0 \r\n 2015          292           11.4374       26.08         13.94         0 \r\n 2015          293           7.094309      25.45         9.18          0 \r\n 2015          294           10.10488      17.99         5.462         0 \r\n 2015          295           7.85935       15.2          1.348         0 \r\n 2015          296           4.21626       16.38         9.46          29.75429 \r\n 2015          297           11.32683      14.18         2.218         0 \r\n 2015          298           10.97805      16.8          0.084         0 \r\n 2015          299           4.83252       16.3          3.058         0 \r\n 2015          300           4.33496       12.74         6.512         9.745306 \r\n 2015          301           9.647967      8.63          0.266         0.2633306 \r\n 2015          302           9.972358      8.83         -0.918         0 \r\n 2015          303           6.08374       11.71        -2.648         2.369976 \r\n 2015          304           9.042276      13.87         4.734         3.686629 \r\n 2015          305           9.193496      18.48         4.057         0 \r\n 2015          306           9.603252      20.14         3.846         0 \r\n 2015          307           9.630895      21.68         5.856         0 \r\n 2015          308           8.294309      20.5          12.53         0 \r\n 2015          309           6.543089      17.77         3.906         0 \r\n 2015          310           8.136585      9.7          -0.684         0 \r\n 2015          311           9.484552      11.75        -3.074         0 \r\n 2015          312           9.262602      15.04        -0.219         0 \r\n 2015          313           9.173171      16.47         1.156         0 \r\n 2015          314           8.628455      16.26         2.855         0 \r\n 2015          315           4.673171      6.613         1.551         62.14188 \r\n 2015          316           8.956098      8.47         -0.786         0 \r\n 2015          317           8.884553      9.37         -3.774         0 \r\n 2015          318           8.426016      16.24        -0.542         0 \r\n 2015          319           8.241464      15.22         3.664         0 \r\n 2015          320           3.291057      11.12         8.89          11.59069 \r\n 2015          321           2.634146      13.34         8.95          27.39053 \r\n 2015          322           2.843089      11.19         0.034         18.17396 \r\n 2015          323           8.294309      3.552        -3.58          0 \r\n 2015          324           3.066667     -0.584        -6.176         0 \r\n 2015          325           7.68374      -5.507        -18.3          0 \r\n 2015          326           7.3          -0.006        -14.56         1.843314 \r\n 2015          327           7.48374       1.309        -7.952         0 \r\n 2015          328           7.302439      3.179        -4.938         0 \r\n 2015          329           6.197561      7.59          0.226         0 \r\n 2015          330           2.169106      0.266        -8.02          0 \r\n 2015          331           6.304065     -5.456        -9.85          0 \r\n 2015          332           7.235772      0.852        -12.2          2.369976 \r\n 2015          333           5.988618     -0.036        -2.912         0 \r\n 2015          334           1.866667     -0.694        -1.93          0.7899919 \r\n 2015          335           4.258537     -0.563        -5.568         0 \r\n 2015          336           5.40813       0.145        -11.78         0 \r\n 2015          337           7.730081     -2.426        -13.75         0 \r\n 2015          338           7.78374       3.724        -9.01          4.21329 \r\n 2015          339           7.212195      3.755         1.632         0 \r\n 2015          340           6.26748       2.32         -6.42          0 \r\n 2015          341           7.208943      5.018        -4.23          0 \r\n 2015          342           4.342277      5.4          -1.778         0 \r\n 2015          343           6.889431      10.85        -0.886         0 \r\n 2015          344           5.08374       10.28         0.651         1.843314 \r\n 2015          345           6.849594      6.996        -0.098         0 \r\n 2015          346           2.399187      3.623         0.438         1.579984 \r\n 2015          347           1.631707      3.26          1.844         5.003282 \r\n 2015          348           1.556098      2.046        -0.006         27.9089 \r\n 2015          349           2.079675      1.692        -0.725         1.053322 \r\n 2015          350           1.837398      4.199        -4.636         0.2633306 \r\n 2015          351           6.644715     -2.386        -8.75          0 \r\n 2015          352           6.218699     -4.34         -12.31         0 \r\n 2015          353           6.846342      1.662        -13.49         0 \r\n 2015          354           5.709756      6.452        -2.162         0 \r\n 2015          355           2.539837     -2.021        -5.365         0 \r\n 2015          356           5.033333      3.512        -5.801         0 \r\n 2015          357           3.052032      1.42         -2.466         3.159967 \r\n 2015          358           5.497561     -2.102        -4.928         0.2633306 \r\n 2015          359           2.846341     -2.872        -4.828         0 \r\n 2015          360           3.138211     -1.252        -7.373         0 \r\n 2015          361           7.650406     -5.446        -15.97         0 \r\n 2015          362           2.521138     -7.739        -15.75         0 \r\n 2015          363           5.38374      -5.081        -7.82          0 \r\n 2015          364           6.236585     -5.568        -13.51         0 \r\n 2015          365           7.458537     -5.791        -18.86         0 \r\n 2016          1             6.513821     -2.325        -11.4          0 \r\n 2016          2             6.468293     -3.824        -13.08         0 \r\n 2016          3             5.033333     -4.98         -12.74         0 \r\n 2016          4             5.566667     -6.633        -12.96         0 \r\n 2016          5             5.82439      -1.13         -9.42          0 \r\n 2016          6             2.799187      0.59         -4.118         1.053322 \r\n 2016          7             3.861789      0.469        -0.542         0.5266612 \r\n 2016          8             2.444715     -0.482        -10.16         0 \r\n 2016          9             6.60813      -9.53         -23.29         0 \r\n 2016          10            6.646341     -15.67        -25.72         0 \r\n 2016          11            5.926016     -4.27         -18.7          0 \r\n 2016          12            6.826016     -12.51        -21.27         0 \r\n 2016          13            6.770732      0.185        -12.53         0 \r\n 2016          14            7.151219      2.612        -7.201         0.2633306 \r\n 2016          15            6.71626      -4.96         -13.11         0 \r\n 2016          16            6.313821     -12.27        -22.99         0 \r\n 2016          17            7.686992     -20.31        -27.1          0 \r\n 2016          18            6.252033     -12.41        -20.99         0 \r\n 2016          19            4.029268     -10.79        -17.23         0 \r\n 2016          20            6.184553     -4.605        -10.79         0 \r\n 2016          21            4.371545     -3.784        -9.73          0 \r\n 2016          22            7.279675     -5.497        -13.71         0 \r\n 2016          23            5.238211     -3.672        -9.77          0 \r\n 2016          24            4.565041     -1.596        -3.682         0 \r\n 2016          25            3.638211     -2.872        -5.72          0 \r\n 2016          26            7.217886     -1.898        -7.81          0 \r\n 2016          27            7.07561       1.804        -13.39         0 \r\n 2016          28            8.665854      1.48         -7.598         0 \r\n 2016          29            7.500813      4.189        -5.526         0 \r\n 2016          30            5.595935      4.402        -4.168         0.7899919 \r\n 2016          31            9.44065       3.078        -1.98          2.369976 \r\n 2016          32            10.34146      4.27         -4.726         0 \r\n 2016          33            1.978049     -1.566        -5.487         0 \r\n 2016          34            10.71382     -5.385        -13.3          0 \r\n 2016          35            9.864227     -3.196        -14.76         0 \r\n 2016          36            8.48374      -2.466        -14.16         0 \r\n 2016          37            10.13577      2.633        -5.142         2.369976 \r\n 2016          38            9.860163      2.602        -6.46          0 \r\n 2016          39            9.847155     -6.46         -12.59         0 \r\n 2016          40            11.87642     -6.998        -15.4          0 \r\n 2016          41            8.27561      -7.354        -11.44         0 \r\n 2016          42            9.339025     -9.34         -14.85         0 \r\n 2016          43            12.26667     -9.32         -19.8          0 \r\n 2016          44            11.18699     -11.86        -21.25         0 \r\n 2016          45            9.769106     -5.254        -11.92         0 \r\n 2016          46            9.346341      4.3          -7.474         1.053322 \r\n 2016          47            7.161788      0.6          -4.696         4.47662 \r\n 2016          48            7.465041      0.61         -4.28          0.2633306 \r\n 2016          49            12.39919      4.411        -1.474         0 \r\n 2016          50            11.41382      9.27          1.996         0 \r\n 2016          51            12.33252      5.148        -0.078         0 \r\n 2016          52            8.157723      3.007        -0.604         2.633306 \r\n 2016          53            7.136585      2.067        -1.392         0 \r\n 2016          54            9.586992      2.794        -0.26          0 \r\n 2016          55            9.871545      0.226        -2.609         0 \r\n 2016          56            10.80081      0.216        -1.97          0 \r\n 2016          57            14.50488      6.028        -5.812         0 \r\n 2016          58            14.63333      17.46        -1.879         0 \r\n 2016          59            9.686992      9.23         -1.778         0 \r\n 2016          60            12.82358      2.116        -7.232         0 \r\n 2016          61            13.09431     -6.784        -13.48         0 \r\n 2016          62            13.85854      1.277        -13.59         0 \r\n 2016          63            11.49106      1.288        -4.726         0 \r\n 2016          64            10.59837      7.602        -2.528         0 \r\n 2016          65            10.33333      6.753        -1.697         0 \r\n 2016          66            14.37967      20.76         1.591         0 \r\n 2016          67            6.42439       22.44         6.108         0 \r\n 2016          68            8.394309      15.03         2.754         0 \r\n 2016          69            7.670732      10.85        -1.19          0 \r\n 2016          70            12.08537      12.75        -3.439         0 \r\n 2016          71            15.95447      21.88         0.104         0 \r\n 2016          72            15.84878      19.02         2.35          2.633306 \r\n 2016          73            1.621138      13.61         8.38          0 \r\n 2016          74            7.192683      16.75         8.52          0 \r\n 2016          75            14.93902      13.85         5.088         13.16653 \r\n 2016          76            17.15935      12.25        -0.665         0 \r\n 2016          77            17.40163      9.4          -3.996         0 \r\n 2016          78            10.3561       2.936        -6.176         0 \r\n 2016          79            7.857724      0.631        -3.298         0.2633306 \r\n 2016          80            15.86667      6.329        -6.298         0 \r\n 2016          81            18.13659      17.18        -4.452         0 \r\n 2016          82            17.51626      15.03         2.633         0 \r\n 2016          83            2.585366      6.774        -2.446         5.003282 \r\n 2016          84            17.18781      2.128        -9.1           2.106645 \r\n 2016          85            17.44146      8.52         -11.15         0 \r\n 2016          86            12.17398      4.31          0.489         8.428653 \r\n 2016          87            19.44472      7.419        -3.074         0 \r\n 2016          88            19.4065       17.09        -4.291         0 \r\n 2016          89            10.53577      15.89         2.249         0.7899919 \r\n 2016          90            9.762602      13.73         6.108         3.686629 \r\n 2016          91            7.42439       10.36         2.087         18.69233 \r\n 2016          92            15.93659      4.674        -1.232         0.5266612 \r\n 2016          93            20.3439       7.833        -1.232         0 \r\n 2016          94            19.61382      24.55         2.45          0 \r\n 2016          95            20.72276      10.65        -2.366         0 \r\n 2016          96            17.05285      15.74         0.126         2.106645 \r\n 2016          97            7.328455      8.9           0.68          0.5266612 \r\n 2016          98            6.558537      7.622        -1.738         0 \r\n 2016          99            21.35366      6.057        -6.38          0 \r\n 2016          100           20.43496      11.05        -9.38          0 \r\n 2016          101           18.8187       15.34         1.238         0.2633306 \r\n 2016          102           22.26667      8.09         -6.086         0 \r\n 2016          103           17.97968      18.53        -6.44          0 \r\n 2016          104           21.14146      24.06         5.048         0 \r\n 2016          105           21.59594      23.72         8.07          0 \r\n 2016          106           21.90569      24.82         9.35          0 \r\n 2016          107           13.9065       23.69         12.35         0 \r\n 2016          108           14.35203      24.97         12.74         0 \r\n 2016          109           8.686992      17.24         6.905         17.90441 \r\n 2016          110           10.43821      14.79         4.694         0 \r\n 2016          111           5.492683      12            6.885         24.75723 \r\n 2016          112           13.78211      18.97         9.07          1.843314 \r\n 2016          113           17.47154      18.29         6.41          0 \r\n 2016          114           22.27073      24.19         5.926         0 \r\n 2016          115           19.05366      22.44         12.7          25.01641 \r\n 2016          116           6.125203      14.49         6.532         0 \r\n 2016          117           10.37561      14.33         4.542         0 \r\n 2016          118           3.52439       8.51          4.149         41.60416 \r\n 2016          119           7.018699      6.238         3.644         2.369976 \r\n 2016          120           6.578049      7.914         3.804         0 \r\n 2016          121           3.038211      7.338         4.997         18.96188 \r\n 2016          122           8.042276      11.88         4.39          1.843314 \r\n 2016          123           21.78211      17.43         2.026         0 \r\n 2016          124           22.95203      19.6          3.836         0 \r\n 2016          125           24.96098      20.5          6.652         0 \r\n 2016          126           24.83902      25.47         3.522         0 \r\n 2016          127           24.53821      31.27         10.38         0 \r\n 2016          128           18.93658      18.79         8.83          1.843314 \r\n 2016          129           24.44959      22.61         8.13          1.316653 \r\n 2016          130           8.495122      17.66         11.45         28.70718 \r\n 2016          131           14.33         22.96         12.06         0.7899919 \r\n 2016          132           10.03         18.38         8.96          14.224 \r\n 2016          133           18.01         15.77         6.38          0 \r\n 2016          134           9.2           10.09         3.866         0.7899919 \r\n 2016          135           22.73         13.5          0.4           0 \r\n 2016          136           23.39         19.5          2.3           0 \r\n 2016          137           18.11         19.1          3.6           0 \r\n 2016          138           24.27         19.3          6.2           0 \r\n 2016          139           26.63         21.6          3.8           0 \r\n 2016          140           20.04         21.5          8.1           0 \r\n 2016          141           13.99         20.4          6.5           0 \r\n 2016          142           26.09         24.63         5.996         0 \r\n 2016          143           22.98         28.71         9.38          0 \r\n 2016          144           8.89          23.57         16.01         14.224 \r\n 2016          145           22.54         28.41         13.69         0.2633306 \r\n 2016          146           20.74         27.24         13.53         11.84988 \r\n 2016          147           19.87         25.95         13.07         3.949959 \r\n 2016          148           17.72         25.91         14.11         0.2633306 \r\n 2016          149           14.67         23.54         15.57         7.373257 \r\n 2016          150           23.79         26.53         12.36         0 \r\n 2016          151           22.62         29.59         14.64         2.633306 \r\n 2016          152           19.24         23.6          14.05         2.633306 \r\n 2016          153           26.69         23.21         11.69         0 \r\n 2016          154           28.01         27.57         8.17          0 \r\n 2016          155           9.42          26.18         12.53         1.579984 \r\n 2016          156           17.14         22.03         11.38         0 \r\n 2016          157           27.9          30.46         12.23         0 \r\n 2016          158           26.11         24.84         11.77         0 \r\n 2016          159           27.59         25.04         8.96          0 \r\n 2016          160           22.16         32.32         12.86         0 \r\n 2016          161           22.61         33.71         19.91         0 \r\n 2016          162           25.24         35.97         22.86         0.2633306 \r\n 2016          163           25.44         36.86         21.19         0 \r\n 2016          164           25.35         35.32         22.49         0 \r\n 2016          165           18.17         29.68         20.77         0 \r\n 2016          166           11.72         29.04         17.82         12.95 \r\n 2016          167           26.41         30.53         16.81         0 \r\n 2016          168           27.37         31.13         15.33         0 \r\n 2016          169           26.57         33.46         17.45         6.604 \r\n 2016          170           14.95         28.94         18.39         0.254 \r\n 2016          171           26.15         32.14         19.12         0 \r\n 2016          172           26.75         28.4          18.87         0 \r\n 2016          173           27.26         30.55         14.13         0 \r\n 2016          174           27.14         32.94         17.76         0 \r\n 2016          175           26.31         26.44         13.37         0 \r\n 2016          176           18.73         30.22         15.12         0 \r\n 2016          177           24.28         31.42         18.68         0 \r\n 2016          178           29.58         31.13         15.14         0 \r\n 2016          179           27.66         28.27         16.27         0 \r\n 2016          180           25.99         27.19         13.18         0 \r\n 2016          181           19.3          26.6          16.07         22.86 \r\n 2016          182           23.72         26.09         12.6          31.02 \r\n 2016          183           27.58         24.47         11.11         0 \r\n 2016          184           23.75         23.17         13.61         0 \r\n 2016          185           28.33         24.45         10.63         0 \r\n 2016          186           13.14         24.54         17.11         0 \r\n 2016          187           20.33         31.65         16.5          0 \r\n 2016          188           26.33         28.99         17.02         8.38 \r\n 2016          189           20.04         28.05         17.6          3.81 \r\n 2016          190           28.65         26.58         15.68         0 \r\n 2016          191           25.6          28.24         14.28         0 \r\n 2016          192           17.58         27.89         18.05         3.81 \r\n 2016          193           21.51         31.19         20.04         17.02 \r\n 2016          194           26.95         27.83         15.66         0 \r\n 2016          195           20.91         27.28         17.27         1.27 \r\n 2016          196           26.97         26.26         12.1          0 \r\n 2016          197           21.96         24.72         9.73          0 \r\n 2016          198           23.08         26.43         11.59         0 \r\n 2016          199           17.64         29.62         16.56         11.18 \r\n 2016          200           20.89         28.5          15.12         0 \r\n 2016          201           13.21         27.27         19.99         47.5 \r\n 2016          202           19.45         32.63         21.97         0 \r\n 2016          203           21.15         33.61         24.31         0 \r\n 2016          204           17.42         33.07         24.42         0 \r\n 2016          205           17.47         30.46         24.04         5.588 \r\n 2016          206           20.83         28.61         17.29         0 \r\n 2016          207           25.07         30.82         14.21         0 \r\n 2016          208           24.83         29.71         15.52         0 \r\n 2016          209           19.78         30.04         18.15         0 \r\n 2016          210           19.77         25.22         14.38         0 \r\n 2016          211           20.97         25.35         13.18         0 \r\n 2016          212           23.64         27.13         11.96         0 \r\n 2016          213           16.23         28.69         15.58         0 \r\n 2016          214           13.21         26.16         19.36         0.508 \r\n 2016          215           21.34         29.43         19.25         0 \r\n 2016          216           23.35         29.97         18.26         0 \r\n 2016          217           16.63         30.39         15.28         0 \r\n 2016          218           23.22         26.26         12            0 \r\n 2016          219           24.62         27.5          10.51         0 \r\n 2016          220           17.11         26.81         14.2          0 \r\n 2016          221           21.15         26.3          12.52         0 \r\n 2016          222           21.43         30.34         17.88         0 \r\n 2016          223           21.34         32.28         21.69         0 \r\n 2016          224           7.968         28.51         18.03         49.78 \r\n 2016          225           15.9          26.09         16.49         0.254 \r\n 2016          226           17.97         27.91         13.97         0 \r\n 2016          227           20.01         29.17         13.55         0 \r\n 2016          228           20.37         27.01         13.84         0 \r\n 2016          229           20.04         28.72         17.62         0 \r\n 2016          230           21.9          31.58         16.24         0 \r\n 2016          231           22.38         31.31         18.25         0 \r\n 2016          232           12.88         25.85         17.81         2.286 \r\n 2016          233           16.13         22.53         10.51         0 \r\n 2016          234           23.68         24.93         8.07          0 \r\n 2016          235           22.66         27.1          14.81         0 \r\n 2016          236           5.481         23.62         16.78         25.91 \r\n 2016          237           15.42         25.42         13.68         0 \r\n 2016          238           17.26         24.23         12.12         0 \r\n 2016          239           11.81         21.24         10.58         0 \r\n 2016          240           11.73         24.5          14.94         2.794 \r\n 2016          241           19.73         29.52         15.24         0 \r\n 2016          242           17.42         28.89         16.43         0 \r\n 2016          243           14.43         27.27         15.37         0 \r\n 2016          244           20.75         26            11.62         0 \r\n 2016          245           20.81         25.04         10.95         0 \r\n 2016          246           19.63         23.91         10.62         0 \r\n 2016          247           18.03         23.98         14.21         0 \r\n 2016          248           9.35          25.29         15.86         0 \r\n 2016          249           10.76         28.19         18.2          67.31 \r\n 2016          250           6.932         26.06         19.01         0.254 \r\n 2016          251           10.15         25.42         18.45         28.96 \r\n 2016          252           18.9          26.48         13            0 \r\n 2016          253           4.16          21.39         10.46         31.24 \r\n 2016          254           19.18         22.25         9.47          0 \r\n 2016          255           19.59         25.04         9.42          0 \r\n 2016          256           12.91         25.7          14.76         0 \r\n 2016          257           10.75         17.47         9.08          0 \r\n 2016          258           18.03         22.5          6.41          0 \r\n 2016          259           5.228         23.83         14.95         47.75 \r\n 2016          260           16.32         24.29         12.63         5.334 \r\n 2016          261           12.72         23.88         10.98         0 \r\n 2016          262           17.38         27.22         10.46         0 \r\n 2016          263           13.93         29.38         11.55         0 \r\n 2016          264           13.71         30.63         10.95         0 \r\n 2016          265           11.06         31.54         21.34         0 \r\n 2016          266           10.77         28.37         17.94         1.27 \r\n 2016          267           13.61         30.94         18.68         0 \r\n 2016          268           9.93          30.05         19.12         0 \r\n 2016          269           9.05          20.12         6.652         8.38 \r\n 2016          270           17.04         21.98         3.866         0 \r\n 2016          271           16.54         23.24         3.866         0 \r\n 2016          272           9.65          17.49         6.219         0 \r\n 2016          273           14.76         20.93         5.604         0 \r\n 2016          274           16            22.93         6.37          0 \r\n 2016          275           5.959         21.34         10.48         0 \r\n 2016          276           15.33         24.35         7.722         0 \r\n 2016          277           13.91         24.32         8.91          0 \r\n 2016          278           4.857         20.68         12.08         48.77 \r\n 2016          279           15.54         20.3          8.07          0.254 \r\n 2016          280           8.13          15.07         3.825         14.48 \r\n 2016          281           15.38         14.27         0.226         0 \r\n 2016          282           14.84         20.82         1.358         0 \r\n 2016          283           14.72         19.75         0.508         0 \r\n 2016          284           8.71          19.23         10.52         0 \r\n 2016          285           8.38          17.13         6.592         0 \r\n 2016          286           10.88         10.63        -2.892         0.254 \r\n 2016          287           14.35         14.19        -3.49          0 \r\n 2016          288           12.04         18.44         4.573         0 \r\n 2016          289           6.549         24.49         11.19         0 \r\n 2016          290           4.317         20.87         8.71          0 \r\n 2016          291           4.447         22.17         10.44         0.254 \r\n 2016          292           12.3          19.89         5.159         0 \r\n 2016          293           5.359         15.14         3.422         0 \r\n 2016          294           12.13         12.45        -1.758         0 \r\n 2016          295           11.59         17.09        -1.697         0 \r\n 2016          296           12.45         22.59         0.6           0 \r\n 2016          297           12.46         18.57         4.814         0 \r\n 2016          298           11.03         14.79         0.651         0 \r\n 2016          299           3.944         14.54         6.602         20.07 \r\n 2016          300           2.673         9.07          6.088         5.334 \r\n 2016          301           10.83         19.55         2.855         0 \r\n 2016          302           8.46          23.9          11.25         0 \r\n 2016          303           3.5           14.01         5.926         0 \r\n 2016          304           4.612         6.764         2.45          0 \r\n 2016          305           2             14.59         5.482         0 \r\n 2016          306           9.29          19.52         3.966         0 \r\n 2016          307           9.41          18.95         4.028         0 \r\n 2016          308           10.87         21.29         2.42          0 \r\n 2016          309           10.67         23.74         5.2           0 \r\n 2016          310           10.45         23.31         3.876         0 \r\n 2016          311           10.24         18.82         5.3           0 \r\n 2016          312           4.77          15.66         6.914         0 \r\n 2016          313           10.49         14.71        -1.048         0 \r\n 2016          314           10.24         15.28        -2.184         0 \r\n 2016          315           9.94          20.23         3.017         0 \r\n 2016          316           9.55          10.14        -3.074         0 \r\n 2016          317           10.05         12.16        -4.148         0 \r\n 2016          318           9.57          18.21         3.36          0 \r\n 2016          319           9.18          13.43        -0.34          0 \r\n 2016          320           8.56          18.21        -0.078         0 \r\n 2016          321           6.298         19.96         0.469         0 \r\n 2016          322           6.271         13.07         5.018         0 \r\n 2016          323           4.656         5.038        -2.386         8.38 \r\n 2016          324           9.42         -1.474        -9.26          0 \r\n 2016          325           8.89          3.198        -9.46          0 \r\n 2016          326           6.523         6.067        -6.238         0.762 \r\n 2016          327           0.749         1.763         0.68          21.59 \r\n 2016          328           2.053         2.106         0.67          0.254 \r\n 2016          329           1.304         1.986         0.346         0 \r\n 2016          330           8.49          9.05         -2.061         0 \r\n 2016          331           6.446         8.37         -1.96          0 \r\n 2016          332           1.751         11.51        -3.298         13.72 \r\n 2016          333           6.55          8.14          0.358         0.254 \r\n 2016          334           1.93          1.014        -0.442         0 \r\n 2016          335           3.232         0.266        -1.252         0.254 \r\n 2016          336           2.292         0.67         -0.938         0 \r\n 2016          337           3.53          1.056        -0.988         0.254 \r\n 2016          338           3.937         2.228        -3.398         0.508 \r\n 2016          339           6.626         6.794        -2.356         0.762 \r\n 2016          340           3.495         6.875        -2.466         0 \r\n 2016          341           6.124        -2.426        -10.93         0 \r\n 2016          342           5.568        -5.932        -13.1          0 \r\n 2016          343           5.755        -5.872        -13.89         0 \r\n 2016          344           5.571        -8.14         -17.99         0 \r\n 2016          345           2.934        -6.358        -11.78         0 \r\n 2016          346           3.978        -3.905        -17.97         0 \r\n 2016          347           7.805        -3.834        -20.43         0 \r\n 2016          348           7.792        -9.12         -21.38         0 \r\n 2016          349           7.852        -9.55         -18.89         0 \r\n 2016          350           5.593        -11.32        -21.76         0 \r\n 2016          351           2.264        -7.942        -13.71         0 \r\n 2016          352           4.577        -12.49        -27.36         0 \r\n 2016          353           8.29         -15.68        -31.67         0 \r\n 2016          354           7.681        -3.764        -16.89         0 \r\n 2016          355           7.387         3.654        -6.622         1.27 \r\n 2016          356           5.843         4.462        -4.006         0 \r\n 2016          357           7.088         5.371        -8.53          0 \r\n 2016          358           1.919         1.137        -5.913         2.032 \r\n 2016          359           5.078        -0.563        -11.2          0 \r\n 2016          360           0.675         6.895        -0.573         20.07 \r\n 2016          361           5.416         0.458        -8.31          0 \r\n 2016          362           7.664         2.814        -9.2           0 \r\n 2016          363           7.151         4.624        -2.223         0 \r\n 2016          364           7.865         1.996        -5.052         0 \r\n 2016          365           5.566         5.814        -8.46          0 \r\n 2016          366           6.934        -0.684        -6.48          0 \r\n 2017          1             4.256         0.388        -7.617         0 \r\n 2017          2             1.293        -0.482        -2.102         2.79 \r\n 2017          3             5.507        -0.826        -17.62         0.25 \r\n 2017          4             5.046        -14.71        -20.03         0 \r\n 2017          5             7.248        -14.1         -21.16         0 \r\n 2017          6             7.446        -8.66         -22.8          0 \r\n 2017          7             8.43         -10.33        -19.19         0 \r\n 2017          8             3.164        -5.507        -19.36         0 \r\n 2017          9             2.219        -2.71         -13.17         0 \r\n 2017          10            5.801        -2.466        -12.54         1.27 \r\n 2017          11            5.774        -8.85         -14.83         2.29 \r\n 2017          12            6.888        -6.024        -16.05         0.76 \r\n 2017          13            3.124        -10.22        -17.07         0 \r\n 2017          14            7.966         0.954        -14.39         0.51 \r\n 2017          15            7.844         2.936        -11.39         0 \r\n 2017          16            1.142        -0.36         -2.872         1.27 \r\n 2017          17            7.642        -0.542        -4.636         7.87 \r\n 2017          18            8.91          8.29         -4.798         0 \r\n 2017          19            3.83          4.472        -0.098         0 \r\n 2017          20            1.463         3.784         0.994         0 \r\n 2017          21            2.198         3.28         -0.756         0.76 \r\n 2017          22            2.747         1.844        -1.576         0 \r\n 2017          23            1.25         -0.604        -1.464         0 \r\n 2017          24            1.175        -0.806        -2.304         0 \r\n 2017          25            6.153        -2.102        -4.28          19.3 \r\n 2017          26            6.943        -4.128        -9.12          3.3 \r\n 2017          27            7.993        -3.236        -16.07         0 \r\n 2017          28            6.766        -0.289        -9.05          0 \r\n 2017          29            7.555         0.307        -2.992         0 \r\n 2017          30            8.6           4.594        -2.982         0 \r\n 2017          31            7.646         1.48         -2             0 \r\n 2017          32            6.517        -1.636        -12.68         0 \r\n 2017          33            9.19         -7.13         -13.73         0 \r\n 2017          34            9.94         -6.541        -16.16         0 \r\n 2017          35            9.41          2.734        -10.48         0 \r\n 2017          36            9.45          0.003        -10.36         0 \r\n 2017          37            6.7           6.269        -6.43          0 \r\n 2017          38            5.009         3.31         -11.58         0 \r\n 2017          39            11.02        -9.27         -14.61         2.03 \r\n 2017          40            10.87        -6.278        -15.16         0 \r\n 2017          41            10.65         7.561        -6.664         0 \r\n 2017          42            3.014         4.835         1.166         0 \r\n 2017          43            12.71         3.804        -2.609         5.84 \r\n 2017          44            12.26         7.138        -3.662         0 \r\n 2017          45            12.91         5.996        -1.96          0 \r\n 2017          46            12.96         5.583        -4.898         0 \r\n 2017          47            12.18         14.41        -1.879         0 \r\n 2017          48            13.44         14.59         0.388         0 \r\n 2017          49            13.49         16.23        -0.563         0 \r\n 2017          50            10.68         17.97         1.42          0 \r\n 2017          51            2.072         13.48         1.562         0.76 \r\n 2017          52            14.11         19.1         -1.069         5.84 \r\n 2017          53            13.44         17.15         1.358         0 \r\n 2017          54            3.096         1.379        -2.832         0 \r\n 2017          55            10.97        -2.771        -8.62          13.97 \r\n 2017          56            14.33        -2.416        -13.77         2.79 \r\n 2017          57            15.69         0.641        -11.56         0 \r\n 2017          58            14.36         4.573        -9.61          0 \r\n 2017          59            8.7           3.846        -2.162         0 \r\n 2017          60            13.25        -0.26         -7.982         1.27 \r\n 2017          61            11.22        -2.69         -11.27         0.51 \r\n 2017          62            12.32         1.682        -13.39         0.25 \r\n 2017          63            16.05         7.48         -3.844         0 \r\n 2017          64            7.136         13.74         3.613         0 \r\n 2017          65            12.97         22.96        -0.542         0 \r\n 2017          66            12.9          9.76         -0.856         4.06 \r\n 2017          67            16.49         6.753        -2.832         0.25 \r\n 2017          68            6.204         3.391        -9.26          0.25 \r\n 2017          69            8.13         -7.232        -13.61         0.25 \r\n 2017          70            6.05         -5.254        -11.4          1.78 \r\n 2017          71            4.317        -4.736        -12.74         0.76 \r\n 2017          72            17.11        -6.176        -14.71         8.64 \r\n 2017          73            17.6         -4.352        -17.22         0 \r\n 2017          74            14.01         0.126        -17.6          0 \r\n 2017          75            15.63         8.21         -5             0 \r\n 2017          76            17.51         11.22        -1.009         0 \r\n 2017          77            17.49         11.88        -3.308         0 \r\n 2017          78            15.14         22.35         0.792         0 \r\n 2017          79            15.84         14.63         2.814         0 \r\n 2017          80            14.37         5.4          -3.358         0 \r\n 2017          81            5.495         3.836        -5.061         1.02 \r\n 2017          82            3.707         11.41         3.046         0.25 \r\n 2017          83            2.905         5.866         2.956         15.75 \r\n 2017          84            2.729         3.432         1.763         1.52 \r\n 2017          85            6.228         7.138         1.844         0.51 \r\n 2017          86            7.578         8.71          0.104         0.25 \r\n 2017          87            19.38         15.62        -1.576         0 \r\n 2017          88            3.252         6.572         3.088         0.25 \r\n 2017          89            3.594         4.17          1.986         11.94 \r\n 2017          90            15.25         11.36         0.024         0 \r\n 2017          91            13.1          13.69         0.104         0 \r\n 2017          92            8.22          14.18         6.158         0 \r\n 2017          93            4.231         11.31         7.742         5.08 \r\n 2017          94            17.4          15.24         2.826         1.778 \r\n 2017          95            14.59         12.93         2.39          0 \r\n 2017          96            21.93         13.08        -2.041         0 \r\n 2017          97            19.88         17.43        -2.568         0 \r\n 2017          98            17.47         25.26         7.016         0 \r\n 2017          99            8.42          22.76         9.72          0 \r\n 2017          100           4.652         9.76          1.096         1.27 \r\n 2017          101           21.95         14.87        -4.026         0.254 \r\n 2017          102           6.147         16.94         4.472         2.794 \r\n 2017          103           8.47          14.19         7.338         0 \r\n 2017          104           6.004         17.67         10.13         6.604 \r\n 2017          105           17.13         23.16         10.57         12.19 \r\n 2017          106           23.02         20.26         3.976         0 \r\n 2017          107           22.84         20.07         5.482         0 \r\n 2017          108           19.31         20.94         8.61          9.91 \r\n 2017          109           1.989         8.66          6.158         3.556 \r\n 2017          110           6.442         8.75          2.764         0 \r\n 2017          111           16.75         14.25         0.711         0 \r\n 2017          112           24.52         19.98         1.116         0 \r\n 2017          113           22.26         21.63         2.855         0 \r\n 2017          114           14.13         20.9          9.23          0 \r\n 2017          115           2.966         11.13         3.594         6.096 \r\n 2017          116           6.458         3.846        -0.584         0.254 \r\n 2017          117           11.86         8.37         -1.859         0 \r\n 2017          118           8.94          7.52         -3.145         0 \r\n 2017          119           11.09         9.6           0.813         0 \r\n 2017          120           2.788         6.895         0.489         31.24 \r\n 2017          121           10.22         6.753         0.054         2.286 \r\n 2017          122           26.11         17.97        -0.766         0 \r\n 2017          123           12.48         16.29         5.078         0.254 \r\n 2017          124           23.96         20.47         2.886         0 \r\n 2017          125           24.85         25.09         3.442         0 \r\n 2017          126           25.47         23.98         8.54          0 \r\n 2017          127           24.79         28.39         5.986         0 \r\n 2017          128           21.43         31.7          11.84         0.254 \r\n 2017          129           22.35         25.09         9.79          0.254 \r\n 2017          130           6.193         17.85         6.43          2.54 \r\n 2017          131           25.78         20.9          5.502         0 \r\n 2017          132           25.12         26.21         2.997         0 \r\n 2017          133           26.53         27.03         10.67         0 \r\n 2017          134           25.47         28.78         14.04         0 \r\n 2017          135           13.34         25.24         13.19         3.302 \r\n 2017          136           17.5          29.97         15.62         6.604 \r\n 2017          137           8.58          23.3          12.88         13.72 \r\n 2017          138           9.02          14.01         8.72          0.762 \r\n 2017          139           5.755         8.73          5.552         15.75 \r\n 2017          140           5.228         9.39          4.31          25.65 \r\n 2017          141           12.51         12.9          2.622         0.254 \r\n 2017          142           23.12         20.95         8.02          3.302 \r\n 2017          143           14.27         14.45         6.452         2.286 \r\n 2017          144           22.06         17.38         5.421         0 \r\n 2017          145           22.27         22.95         7.328         0 \r\n 2017          146           24.95         26.56         12.12         0 \r\n 2017          147           12.8          21.32         10.38         0 \r\n 2017          148           27.14         25.54         9.48          0 \r\n 2017          149           22.867        20.5          9.05          0 \r\n 2017          150           27.19         23            8.19          0 \r\n 2017          151           29.62         24.38         4.694         0 \r\n 2017          152           29.17         29.08         7.278         0 \r\n 2017          153           27.09         32.67         14.88         0 \r\n 2017          154           23.16         32.92         18.49         0 \r\n 2017          155           29.82         33.88         15.25         0 \r\n 2017          156           28.87         30.5          16.18         0 \r\n 2017          157           27.61         29.84         14.22         0 \r\n 2017          158           25.12         30.82         14.42         0 \r\n 2017          159           22.52         31.85         16.34         9.91 \r\n 2017          160           26.37         31.47         15.39         0 \r\n 2017          161           21.27         32.36         21.16         0 \r\n 2017          162           12.5          30.16         22.73         0 \r\n 2017          163           11.96         27.49         19.68         2.032 \r\n 2017          164           24.66         33.6          18.01         2.286 \r\n 2017          165           23.94         29.63         16.19         3.048 \r\n 2017          166           24.73         31.91         14.04         0 \r\n 2017          167           16.39         30.8          14.71         1.524 \r\n 2017          168           9.17          23.9          13.77         2.032 \r\n 2017          169           20.78         24.5          11.19         0 \r\n 2017          170           22.18         26.82         12.3          0 \r\n 2017          171           22.13         28.25         12.44         0 \r\n 2017          172           20.48         30.96         14.13         11.68 \r\n 2017          173           19.46         28.14         13.29         0 \r\n 2017          174           17.62         20.9          9.07          0.254 \r\n 2017          175           24.78         23.63         6.35          0 \r\n 2017          176           27.5          22.39         7.138         0.254 \r\n 2017          177           28.53         21.75         10            2.794 \r\n 2017          178           28.25         26.34         7.581         4.826 \r\n 2017          179           20.98         29.85         17.67         2.032 \r\n 2017          180           14.02         26.04         13.81         5.842 \r\n 2017          181           18.19         25.71         12.66         0.254 \r\n 2017          182           25.4          26.99         9.78          0 \r\n 2017          183           23.21         30.54         16.24         0 \r\n 2017          184           22.53         29.87         15.76         0 \r\n 2017          185           24.77         31.84         17.37         6.858 \r\n 2017          186           26.04         30.93         16.3          0 \r\n 2017          187           25.98         33.22         19.04         0 \r\n 2017          188           26.25         29.15         16.18         0 \r\n 2017          189           26.45         30.05         14.07         0 \r\n 2017          190           26.26         32.84         13.58         0 \r\n 2017          191           19.04         27.7          17.71         0 \r\n 2017          192           18.97         32.48         17.91         4.826 \r\n 2017          193           17.3          31.24         19.02         0 \r\n 2017          194           25.9          26.69         14.22         0 \r\n 2017          195           25.85         30.06         12.86         0 \r\n 2017          196           26.34         33.47         18.27         0 \r\n 2017          197           27.08         30.6          19.3          0 \r\n 2017          198           26.13         33.64         20.46         0 \r\n 2017          199           21.56         30.54         20.53         1.27 \r\n 2017          200           22.1          33.5          20.9          0 \r\n 2017          201           16.71         30.25         20.56         0 \r\n 2017          202           11.07         27.16         21.34         5.334 \r\n 2017          203           18.53         29.21         17.15         0 \r\n 2017          204           23.09         26.06         14.37         0 \r\n 2017          205           25.64         27.24         11.89         0 \r\n 2017          206           23.54         32.7          18.9          0 \r\n 2017          207           17.28         28.66         17.3          14.99 \r\n 2017          208           20.27         27.39         15.62         0 \r\n 2017          209           18.47         27.17         15.22         0 \r\n 2017          210           20.38         26.94         15.35         0 \r\n 2017          211           21.8          27.4          12.88         0 \r\n 2017          212           19.39         27.79         13.85         0 \r\n 2017          213           20.04         29.92         14.72         2.794 \r\n 2017          214           21.86         26.56         13.25         0.254 \r\n 2017          215           17.079        19.62         8.19          2.286 \r\n 2017          216           25.89         24.63         7.46          0 \r\n 2017          217           9.7           20.28         9.05          0 \r\n 2017          218           9.09          21.83         14.68         1.27 \r\n 2017          219           23.3          24.72         11.98         1.524 \r\n 2017          220           24.27         26.91         9.42          0 \r\n 2017          221           8.64          23.42         13.78         8.89 \r\n 2017          222           22.87         22.81         13.32         0 \r\n 2017          223           23.89         24.79         9.97          0 \r\n 2017          224           21.2          26.32         10.41         0 \r\n 2017          225           14.5          24.83         15.06         0 \r\n 2017          226           21.03         26.18         12.48         0 \r\n 2017          227           7.996         21.7          13.54         2.54 \r\n 2017          228           5.87          24.14         17.95         31.24 \r\n 2017          229           19.84         24.65         12.95         0 \r\n 2017          230           21.8          26.54         12.99         2.286 \r\n 2017          231           20.67         26.54         11.13         0 \r\n 2017          232           21.51         30.09         15.26         1.27 \r\n 2017          233           6.904         25.08         14.29         24.13 \r\n 2017          234           23.72         22.07         9.67          0 \r\n 2017          235           21.07         25.22         7.804         5.334 \r\n 2017          236           14.58         23.27         15.32         1.778 \r\n 2017          237           13.6          23.79         15.96         3.556 \r\n 2017          238           7.595         24.23         14.76         20.07 \r\n 2017          239           17.34         25.33         13.12         0 \r\n 2017          240           20.07         23.81         10.84         0 \r\n 2017          241           21.85         25.86         9.15          0 \r\n 2017          242           20.85         27.74         10.19         0 \r\n 2017          243           17.58         25.29         12.88         0 \r\n 2017          244           13.97         23.58         14.43         0.762 \r\n 2017          245           17.07         25.87         12.86         0 \r\n 2017          246           17.74         28.22         11.76         0 \r\n 2017          247           11.77         21.33         8.7           0 \r\n 2017          248           16.45         18.57         5.906         0 \r\n 2017          249           16.77         19            3.502         0 \r\n 2017          250           19.67         23.68         4.594         0 \r\n 2017          251           17.71         26.11         6.926         0 \r\n 2017          252           12.31         25.9          12.76         2.794 \r\n 2017          253           15.86         26.16         15.94         0.508 \r\n 2017          254           16.9          27.86         14.62         0 \r\n 2017          255           17.66         28.68         12.04         0 \r\n 2017          256           17.95         29.93         12.94         0 \r\n 2017          257           17.3          31.5          14.98         0 \r\n 2017          258           13.27         30.38         18.67         0 \r\n 2017          259           1.871         22.88         9.72          0.254 \r\n 2017          260           13.06         21.31         3.684         0 \r\n 2017          261           4.394         21.63         11.69         14.99 \r\n 2017          262           10.41         26.3          17.49         0 \r\n 2017          263           16.72         23.81         9.25          1.016 \r\n 2017          264           11.93         29.33         9.8           0 \r\n 2017          265           16.1          33.18         22.67         0 \r\n 2017          266           14.56         31.71         19.8          0 \r\n 2017          267           10.97         30.66         15.3          9.14 \r\n 2017          268           1.76          15.26         11.93         24.38 \r\n 2017          269           10.4          16.1          6.3           4.064 \r\n 2017          270           15.03         22.43         4.088         0 \r\n 2017          271           15.2          24.95         4.228         0 \r\n 2017          272           14.67         21.59         9.11          0 \r\n 2017          273           6.885         21.95         8.77          0 \r\n 2017          274           2.791         19.84         11.24         5.08 \r\n 2017          275           1.231         21.27         12.8          21.59 \r\n 2017          276           6.461         21.71         7.238         2.794 \r\n 2017          277           10.15         19.74         4.402         0 \r\n 2017          278           0.884         16            10.11         1.778 \r\n 2017          279           1.354         13.74         10.97         29.21 \r\n 2017          280           10.77         21.3          9.17          15.24 \r\n 2017          281           14.45         22.03         8.99          0 \r\n 2017          282           5.648         13.63         3.26          5.334 \r\n 2017          283           4.083         6.794        -1.353         0.762 \r\n 2017          284           11.75         16.62        -1.656         0 \r\n 2017          285           9.89          19.08         6.35          0 \r\n 2017          286           9.35          16.21         5.452         0 \r\n 2017          287           2.503         12.8          5.886         1.016 \r\n 2017          288           13.62         14.23         0.914         0.254 \r\n 2017          289           13.91         21.61        -1.16          0 \r\n 2017          290           13.43         24.86         4.118         0 \r\n 2017          291           12.19         23.31         5.209         0 \r\n 2017          292           12.55         23.73         2.997         0 \r\n 2017          293           11.29         24.67         10.99         0 \r\n 2017          294           4.052         21.61         3.644         0 \r\n 2017          295           12.89         19            2.37          0 \r\n 2017          296           7.203         15.06         6.189         0 \r\n 2017          297           12.64         10.48         0.024         0 \r\n 2017          298           11.35         18.17         2.612         0 \r\n 2017          299           6.607         13.59        -0.34          0 \r\n 2017          300           3.819        -0.057        -2.71          0 \r\n 2017          301           8.42          8.06         -7.749         0 \r\n 2017          302           2.96          7.934        -0.38          0.762 \r\n 2017          303           3.26          3.422        -4.28          0 \r\n 2017          304           4.695         1.954        -10.09         0 \r\n 2017          305           6.126         8.29         -1.758         0 \r\n 2017          306           4.882         6.613        -1.171         0 \r\n 2017          307           8.96          5.946        -1.11          1.27 \r\n 2017          308           2.379         7.268         0.813         0.254 \r\n 2017          309           8.4           4.411        -9.93          0 \r\n 2017          310           4.002        -0.118        -9.48          0 \r\n 2017          311           7.779         5.26         -6.764         0 \r\n 2017          312           10.04         8.38         -8.99          0 \r\n 2017          313           9.16         -0.563        -9.69          0 \r\n 2017          314           1.867        -0.644        -9.97          0 \r\n 2017          315           2.238         4.956        -0.644         0 \r\n 2017          316           9.35          7.37         -5.913         0 \r\n 2017          317           1.088         5.209        -4.412         0 \r\n 2017          318           1.982         10.1          4.361         0.254 \r\n 2017          319           7.952         7.318        -8.64          0 \r\n 2017          320           1             2.35         -10.52         0 \r\n 2017          321           3.251         12.68         2.249         2.54 \r\n 2017          322           5.598         4.008        -6.095         0 \r\n 2017          323           8.15          9.05         -8.39          0 \r\n 2017          324           5.216         9.47         -2.112         0 \r\n 2017          325           9.56          4.462        -11.35         0 \r\n 2017          326           6.88          1.864        -14.04         0 \r\n 2017          327           5.528         13.2         -4.473         0 \r\n 2017          328           7.581         18.04        -0.219         0 \r\n 2017          329           6.602         10.04        -3.541         0 \r\n 2017          330           3.639         14.66        -3.864         0 \r\n 2017          331           4.751         16.73        -0.401         0 \r\n 2017          332           2.93          11.75        -4.675         0 \r\n 2017          333           8.521         8.41         -7.83          0 \r\n 2017          334           7.78          10.81        -3.499         0 \r\n 2017          335           5.417         13.07        -3.499         0 \r\n 2017          336           5.852         13.95        -5.224         0 \r\n 2017          337           3.311         14.73        -3.51          0 \r\n 2017          338           1.448         11.03        -5.365         0 \r\n 2017          339           8.46         -0.674        -7.636         0 \r\n 2017          340           4.83         -2.679        -10.14         0 \r\n 2017          341           8.33         -6.044        -15.81         0 \r\n 2017          342           2.35         -2.558        -9.59          0 \r\n 2017          343           4.26         -2.416        -9             0 \r\n 2017          344           6.96          5.614        -3.966         0 \r\n 2017          345           1             4.31         -9.55          0 \r\n 2017          346           6.4           2.836        -13.75         0 \r\n 2017          347           1             6.683        -3.48          0.254 \r\n 2017          348           1.94          0.145        -5.67          0 \r\n 2017          349           7.04          5.785        -3.764         0 \r\n 2017          350           6.21          8.27         -4.513         0 \r\n 2017          351           2.38         -0.31         -6.298         0 \r\n 2017          352           7.56          8.71         -8             0 \r\n 2017          353           1             5.38         -7.932         0 \r\n 2017          354           6.29          1.682        -8.14          0 \r\n 2017          355           0.58         -0.26         -9.14          0 \r\n 2017          356           5.76         -4.726        -12.86         0 \r\n 2017          357           6.93         -6.136        -13.25         0 \r\n 2017          358           7.93         -6.368        -15.85         0 \r\n 2017          359           7.18         -14.61        -20.58         0 \r\n 2017          360           8.25         -16.79        -23.72         0 \r\n 2017          361           7.29         -14.32        -25.97         0 \r\n 2017          362           6.24         -8.42         -16.6          0 \r\n 2017          363           1.3          -12.83        -18.7          4.826 \r\n 2017          364           6.4          -18.6         -23.5          0 \r\n 2017          365           8.83         -22.99        -30.43         0 \r\n 2018          1             8.99         -22.74        -32.68         0 \r\n 2018          2             8.41         -7.404        -29.94         0 \r\n 2018          3             8.69         -7.921        -23.05         0 \r\n 2018          4             6.67         -13.59        -23.22         0 \r\n 2018          5             8.34         -14.34        -23.62         0 \r\n 2018          6             6.55         -8.85         -23.83         0 \r\n 2018          7             4.41          0.975        -9.61          0 \r\n 2018          8             8.09          4.814        -8.64          0 \r\n 2018          9             8.25          5.462        -0.198         0 \r\n 2018          10            1             3.138        -0.016         0 \r\n 2018          11            3.06          1.52         -18.99         0.51 \r\n 2018          12            6.9          -14.43        -22.74         1.78 \r\n 2018          13            9.07         -11.38        -21.74         0 \r\n 2018          14            3.09         -4.756        -14.24         0 \r\n 2018          15            6.21         -14.2         -22.66         1.27 \r\n 2018          16            8.6          -14.69        -22.97         0 \r\n 2018          17            9.4          -1.515        -21.09         0 \r\n 2018          18            8.31          3.451        -10.35         0 \r\n 2018          19            1             8.82         -5.385         0 \r\n 2018          20            1             10.33        -4.716         0 \r\n 2018          21            1.51          3.118        -2.152         0 \r\n 2018          22            1             0.985        -4.087         6.1 \r\n 2018          23            4.08         -4.068        -6.978         16 \r\n 2018          24            4.28         -2.791        -7.739         0 \r\n 2018          25            7.26          2.683        -6.704         0 \r\n 2018          26            1             6.753        -1.636         0 \r\n 2018          27            10.38         3.218        -5.558         0 \r\n 2018          28            10.39        -3.804        -17.28         1.27 \r\n 2018          29            10.66        -8.02         -19.72         0 \r\n 2018          30            6.51          3.159        -16.46         0 \r\n 2018          31            11.1          2.572        -9.28          0 \r\n 2018          32            10.96        -9.29         -19.15         0 \r\n 2018          33            3.88         -2.791        -20.97         0 \r\n 2018          34            4.84          3.917        -11.52         0 \r\n 2018          35            11.18        -11.52        -19.7          0.51 \r\n 2018          36            1.83         -11.02        -21.35         0 \r\n 2018          37            2.8          -14.06        -26.87         6.6 \r\n 2018          38            12.6         -12.19        -22.25         1.27 \r\n 2018          39            1            -9.86         -17.91         0.51 \r\n 2018          40            13.12        -12.11        -16.54         8.89 \r\n 2018          41            13.18        -15.1         -23.8          1.27 \r\n 2018          42            14.06        -12.03        -21.34         0 \r\n 2018          43            10.83        -11.11        -20.72         0 \r\n 2018          44            13.72         0.216        -12.35         1.78 \r\n 2018          45            14.05         5.986        -8.31          0 \r\n 2018          46            8.72          1.4          -11.92         0 \r\n 2018          47            14.6         -5.548        -18.32         0 \r\n 2018          48            9.8          -0.978        -10.84         0.25 \r\n 2018          49            13.2          9.05         -9.39          1.78 \r\n 2018          50            6.68         -4.291        -8.77          0 \r\n 2018          51            11.86        -8.39         -15.59         1.52 \r\n 2018          52            14.88        -2.973        -18.7          0 \r\n 2018          53            2.61         -2.953        -9.48          1.27 \r\n 2018          54            9.07         -3.733        -11.21         6.1 \r\n 2018          55            1            -4.27         -10.69         0 \r\n 2018          56            16.58        -1.1          -12.43         3.3 \r\n 2018          57            16.68         6.753        -12.34         0 \r\n 2018          58            16.62         3.704        -4.746         0 \r\n 2018          59            1             2.492        -7.536         0 \r\n 2018          60            17.48         1.702        -8.29          0 \r\n 2018          61            2.395         5.048        -7.587         0 \r\n 2018          62            13.16         8.98          0.044         0 \r\n 2018          63            5.747         9.92          2.896         0 \r\n 2018          64            0.65          5.764        -5.588         12.19 \r\n 2018          65            10.04        -1.94         -7.739         0 \r\n 2018          66            7.76         -3.925        -10.6          0 \r\n 2018          67            15.47        -2.274        -13.04         0 \r\n 2018          68            1.41         -0.482        -6.582         0.762 \r\n 2018          69            6.919         1.744        -4.838         4.064 \r\n 2018          70            0.772        -0.36         -2.051         0 \r\n 2018          71            19.26         3.674        -6.338         0.254 \r\n 2018          72            19.32         3.31         -5.922         0 \r\n 2018          73            4.424         11.86        -4.098         0 \r\n 2018          74            0.129         6.118        -2.578         0 \r\n 2018          75            2.73          1.056        -2.486         2.794 \r\n 2018          76            2.18          3.36         -1.494         6.096 \r\n 2018          77            1.28          3.623        -0.168         0 \r\n 2018          78            4.238         6.36          0.084         0 \r\n 2018          79            4.797         1.379        -1.038         2.54 \r\n 2018          80            9.55          6.714        -1.596         0 \r\n 2018          81            14.55         10.02        -0.614         0 \r\n 2018          82            5.943         5.684         0.327         18.54 \r\n 2018          83            6.04          0.732        -3.804         3.556 \r\n 2018          84            1.33          0.084        -3.186         0 \r\n 2018          85            1.12          0.489        -1.1           0 \r\n 2018          86            3.865         11.64        -0.422         0 \r\n 2018          87            10.83         13.29        -2.152         0 \r\n 2018          88            4.919         3.784        -3.531         0 \r\n 2018          89            14.95         10.62        -2.75          0 \r\n 2018          90            14.81         7.49         -7.09          0 \r\n 2018          91            20.44         1.166        -9.14          0 \r\n 2018          92            8.12          1.591        -6.41          0 \r\n 2018          93            15.18        -0.846        -13.08         8.382 \r\n 2018          94            21.48         0.711        -16.32         0.762 \r\n 2018          95            15.03         5.835        -4.189         0.254 \r\n 2018          96            17.5         -3.014        -9.6           0 \r\n 2018          97            24.1          3.542        -12.37         0 \r\n 2018          98            2.3          -2.051        -3.804         8.636 \r\n 2018          99            11.6         -0.32         -4.878         3.556 \r\n 2018          100           13            14.01        -3.155         0 \r\n 2018          101           9             12.37         0.56          0 \r\n 2018          102           12            12.72        -0.482         0 \r\n 2018          103           5             5.3           0.772         2.032 \r\n 2018          104           6.949         1.035        -6.521         1.524 \r\n 2018          105           10.71        -2.69         -7.11          3.048 \r\n 2018          106           7             1.156        -8.94          1.016 \r\n 2018          107           24.47         2.896        -7.78          0 \r\n 2018          108           2.682         0.772        -2.548         3.81 \r\n 2018          109           14.22         4.795        -6.622         0 \r\n 2018          110           9             7.036        -4.534         0 \r\n 2018          111           7.93          10.77         1.217         0 \r\n 2018          112           13            14.67         0.742         0 \r\n 2018          113           15            19.74         1.976         0 \r\n 2018          114           9.69          16.18         4.27          0.762 \r\n 2018          115           20.91         16.72         0.508         0 \r\n 2018          116           17.83         16.28         0.508         0 \r\n 2018          117           23.85         19.44        -1.19          0 \r\n 2018          118           24.2          15.16         0.358         0 \r\n 2018          119           22.47         23.49         4.876         0 \r\n 2018          120           18.63         27.95         12.51         4.318 \r\n 2018          121           12.58         21.9          11.33         16.76 \r\n 2018          122           9.98          15.1          7.036         0 \r\n 2018          123           8.07          18.27         6.189         23.88 \r\n 2018          124           24.82         24.17         8.76          0 \r\n 2018          125           18.84         28.31         8.36          1.016 \r\n 2018          126           25.15         24.82         8.91          0 \r\n 2018          127           24.76         26.95         8             0 \r\n 2018          128           18            22.91         12.36         8.382 \r\n 2018          129           17            23.4          8.81          4.318 \r\n 2018          130           16            16.64         7.843         0 \r\n 2018          131           5             11.04         5.986         24.38 \r\n 2018          132           2.49          9.88          6.491         7.112 \r\n 2018          133           6.019         16.77         9.2           2.794 \r\n 2018          134           6.255         19.26         11.81         0.254 \r\n 2018          135           26.39         26.04         9.8           0 \r\n 2018          136           24.96         28.63         10.92         0 \r\n 2018          137           28.33         29.22         12.96         0 \r\n 2018          138           23.23         28.38         13.39         0 \r\n 2018          139           12.64         19.05         8.73          7.62 \r\n 2018          140           9.256         15.54         9.22          7.874 \r\n 2018          141           9.084         19.93         12.14         0.762 \r\n 2018          142           18.15         26.07         11.04         1.016 \r\n 2018          143           26.01         31.29         17            0 \r\n 2018          144           25.91         31.62         18.75         0 \r\n 2018          145           29.24         34.7          18.45         1.524 \r\n 2018          146           30.43         36.09         15.84         0 \r\n 2018          147           27.71         38.13         18.71         0 \r\n 2018          148           27.2          36.21         19.77         0 \r\n 2018          149           15.94         31.32         17.88         2.032 \r\n 2018          150           20.96         27.3          16.27         1.27 \r\n 2018          151           29.64         33.03         14.81         0 \r\n 2018          152           29.35         34.89         16.64         0 \r\n 2018          153           18.2          23.61         13.17         21.59 \r\n 2018          154           31.51         25.66         11.96         0 \r\n 2018          155           25.6          29.41         9.94          0 \r\n 2018          156           27.38         32.99         16.37         0 \r\n 2018          157           21.55         34.03         17.99         4.826 \r\n 2018          158           12.93         26.18         18.27         0 \r\n 2018          159           21.54         31.72         18.1          0 \r\n 2018          160           21.58         29.47         18.7          0 \r\n 2018          161           14.35         29.96         18.3          0 \r\n 2018          162           27.9          26.65         18.21         0 \r\n 2018          163           18.07         29.39         14.78         0 \r\n 2018          164           20.38         25.47         10.14         0.762 \r\n 2018          165           13.08         28.11         14.96         27.43 \r\n 2018          166           22.99         32.62         22.47         0 \r\n 2018          167           19.69         33.36         23.08         1.016 \r\n 2018          168           13.01         31.64         20.23         4.318 \r\n 2018          169           13.356        25.81         20.3          9.91 \r\n 2018          170           8.74          27.04         17.56         0.254 \r\n 2018          171           3.215         19.15         16.87         30.73 \r\n 2018          172           6.711         17.57         14.61         1.524 \r\n 2018          173           16.33         24.15         13.55         0 \r\n 2018          174           17.62         25.35         13.06         0 \r\n 2018          175           19.84         28.38         15.52         20.32 \r\n 2018          176           5.294         23.14         16.81         24.13 \r\n 2018          177           18.35         25.9          16.85         0.254 \r\n 2018          178           15.8          28.54         15.44         0 \r\n 2018          179           13.65         27.59         17.33         0 \r\n 2018          180           23.87         32.94         21.91         0 \r\n 2018          181           7.543         28.31         19.26         16.51 \r\n 2018          182           19.96         25.75         17.06         15.49 \r\n 2018          183           25.39         28.19         14.86         0 \r\n 2018          184           19.72         31.14         18.91         0 \r\n 2018          185           13.1          28.88         19.2          31.24 \r\n 2018          186           29.67         26.2          16.33         0 \r\n 2018          187           30.05         27.15         14.95         0 \r\n 2018          188           29.7          28.38         15.32         0 \r\n 2018          189           30.27         29.5          15.74         0 \r\n 2018          190           18.93         31.89         18.5          0 \r\n 2018          191           29.28         30.84         19.87         0 \r\n 2018          192           19.31         32.36         21.39         0 \r\n 2018          193           29.21         32.95         22.46         0 \r\n 2018          194           4.76          24.55         19.8          26.42 \r\n 2018          195           23.26         29.44         17.49         0 \r\n 2018          196           27.93         30.44         17.07         0 \r\n 2018          197           29.96         28.76         14.27         0 \r\n 2018          198           29.64         28.52         15.71         0 \r\n 2018          199           28.55         27.82         15.05         3.048 \r\n 2018          200           19.1          27.46         18.15         0 \r\n 2018          201           27.26         27.7          17.69         0 \r\n 2018          202           24.6          27.08         15.16         0 \r\n 2018          203           27.16         28.62         15.25         0 \r\n 2018          204           17.36         28.92         13.65         0 \r\n 2018          205           29.26         28.97         11.35         0 \r\n 2018          206           27.79         29.12         13.36         0.254 \r\n 2018          207           29.15         24.68         10.9          0 \r\n 2018          208           29.1          24.85         8.6           0 \r\n 2018          209           16.05         25.44         11.28         0 \r\n 2018          210           27.53         26.94         9.87          0 \r\n 2018          211           23.27         26.45         12.85         0 \r\n 2018          212           28.51         27.57         11.77         0.254 \r\n 2018          213           26.69         28.09         12.96         0 \r\n 2018          214           28.3          25.33         7.602         0 \r\n 2018          215           28.05         31.3          16.4          0 \r\n 2018          216           20.14         27.53         18.75         20.57 \r\n 2018          217           1.179         24.29         16.63         21.08 \r\n 2018          218           23.43         29.37         16.13         1.524 \r\n 2018          219           19.765        27.19         15.35         5.588 \r\n 2018          220           26.26         29.54         14.55         0.508 \r\n 2018          221           24.31         29.43         16.72         0 \r\n 2018          222           25.18         29.32         14.21         0.254 \r\n 2018          223           21.39         28.32         14.81         0 \r\n 2018          224           23.77         29.11         15.7          0 \r\n 2018          225           23            30.64         15.95         0 \r\n 2018          226           15.04         30.34         17.67         19.558 \r\n 2018          227           20.4          29.63         17.44         0 \r\n 2018          228           10.63         24.21         16.2          6.604 \r\n 2018          229           22.91         27.88         15.88         0.508 \r\n 2018          230           18.64         26.27         13.27         0 \r\n 2018          231           12.37         26.33         15.28         9.398 \r\n 2018          232           8.29          23.11         16.89         2.286 \r\n 2018          233           16.64         22.73         11.01         0.254 \r\n 2018          234           23.56         24.88         8.31          0.508 \r\n 2018          235           10.38         22.45         11.29         2.286 \r\n 2018          236           16.97         27.59         16.02         0.254 \r\n 2018          237           20.99         27.87         13.42         0 \r\n 2018          238           11.27         28.02         18.62         3.048 \r\n 2018          239           16.25         29.04         19.68         0 \r\n 2018          240           8.09          19.94         9.56          11.176 \r\n 2018          241           22.68         24.38         7.138         0.254 \r\n 2018          242           14.42         22.37         11.78         0 \r\n 2018          243           10.26         26.79         18.3          0 \r\n 2018          244           11.56         28.44         19.34         0 \r\n 2018          245           13.78         25.97         18.29         7.62 \r\n 2018          246           12.89         25.04         19.91         0 \r\n 2018          247           2.524         20.63         17.21         51.054 \r\n 2018          248           11.5          22.26         12.92         2.794 \r\n 2018          249           20.81         23.6          10.4          0 \r\n 2018          250           19.69         22.53         9.54          0 \r\n 2018          251           20.87         22.65         8.88          0 \r\n 2018          252           17.93         22.87         7.772         0 \r\n 2018          253           16.65         25.5          10.72         0 \r\n 2018          254           20.03         27.14         13.69         0 \r\n 2018          255           20.14         27.8          14.74         0 \r\n 2018          256           16.23         26.45         17.51         0 \r\n 2018          257           14.88         31.81         18.74         0 \r\n 2018          258           19.58         32.07         18.66         0 \r\n 2018          259           18.99         31.55         18.24         0 \r\n 2018          260           15.03         32.66         17.86         0 \r\n 2018          261           8.01          22.37         15.34         7.874 \r\n 2018          262           9.06          26.68         15.76         98.8 \r\n 2018          263           7.962         30.73         13.58         38.35 \r\n 2018          264           15.91         15.15         3.804         0 \r\n 2018          265           19.46         20.66         2.976         0 \r\n 2018          266           18.29         26.14         8.33          0 \r\n 2018          267           13.76         24.7          12.44         0 \r\n 2018          268           7.335         15.75         6.471         2.54 \r\n 2018          269           18.89         19.32         3.644         0 \r\n 2018          270           6.292         17.14         8.95          0 \r\n 2018          271           9.73          13.6          0.762         0 \r\n 2018          272           2.472         8.56          0.155         0.254 \r\n 2018          273           6.94          12.31         6.098         0 \r\n 2018          274           5.032         11.94         7.178         1.778 \r\n 2018          275           5.078         14.38         8.27          0.254 \r\n 2018          276           11.93         30.75         4.31          1.778 \r\n 2018          277           6.443         7.804         0.327         4.826 \r\n 2018          278           6.012         13.67         4.633         0.254 \r\n 2018          279           9.05          9.29          4.24          0 \r\n 2018          280           2.718         10.67         3.036         6.096 \r\n 2018          281           4.055         13.68         9.04          4.572 \r\n 2018          282           2.512         9.08          6.43          20.07 \r\n 2018          283           7.729         7.46          1.156         2.032 \r\n 2018          284           5.897         3.623        -2.548         0 \r\n 2018          285           3.012         3.36         -2.386         1.016 \r\n 2018          286           12.09         14.89        -0.098         0.762 \r\n 2018          287           5.165         3.816        -1.716         4.064 \r\n 2018          288           15.39         7.984        -4.068         0 \r\n 2018          289           13.16         16.75        -1.079         0 \r\n 2018          290           14.37         14.08        -3.116         0 \r\n 2018          291           14.15         21.43         1.014         0 \r\n 2018          292           12.97         20.35         3.34          1.524 \r\n 2018          293           14.43         8.14         -3.499         0 \r\n 2018          294           13.8          18.51        -3.986         0 \r\n 2018          295           13.87         19.27        -3.236         0 \r\n 2018          296           13.92         12.23        -5.608         0 \r\n 2018          297           9.54          14.8         -2.345         0 \r\n 2018          298           3.918         9.53          6.329         2.032 \r\n 2018          299           5.402         13.71         4.532         0.254 \r\n 2018          300           10.21         18.45         0.57          2.286 \r\n 2018          301           12.97         15.56         1.328         0 \r\n 2018          302           11.02         18.59        -0.067         0 \r\n 2018          303           6.051         12.82         0.732         0 \r\n 2018          304           10.3          14.53        -0.746         0 \r\n 2018          305           11.45         15.5         -2.304         0 \r\n 2018          306           3.557         8.65          2.734         0.254 \r\n 2018          307           1.097         5.835         2.572         11.68 \r\n 2018          308           1.89          3.502         2.067         0.762 \r\n 2018          309           2.816         6.905         0.792         8.13 \r\n 2018          310           3.732         3.229        -3.004         0 \r\n 2018          311           3.985        -1.778        -4.534         0 \r\n 2018          312           6.986         0.205        -6.622         0 \r\n 2018          313           8.11         -5.304        -14.51         0 \r\n 2018          314           3.214        -3.662        -15.22         0 \r\n 2018          315           8.85          0.012        -6.176         0 \r\n 2018          316           6.133        -4.938        -14.45         0 \r\n 2018          317           10.14         2.067        -15.71         0 \r\n 2018          318           9.77          8.77         -8.17          0 \r\n 2018          319           9.36          12.92        -4.656         0 \r\n 2018          320           5.261         3.098        -2.75          0 \r\n 2018          321           5.242        -2.012        -15.42         0 \r\n 2018          322           10.03         0.792        -15.77         0.254 \r\n 2018          323           4.012        -2.588        -12.31         0 \r\n 2018          324           8.48          5.937        -15.22         0 \r\n 2018          325           3.114         0.246        -5.973         0 \r\n 2018          326           9.55          15.1         -3.58          0 \r\n 2018          327           1.796         8.1           0.975         4.572 \r\n 2018          328           7.903         7.359        -3.51          0 \r\n 2018          329           3.001        -2.81         -9.91          0 \r\n 2018          330           8.74         -6.076        -13.53         0 \r\n 2018          331           8.92         -4.24         -15.34         0 \r\n 2018          332           2.034        -2.213        -6.329         3.048 \r\n 2018          333           3.821         0.985        -7.636         1.524 \r\n 2018          334           2.835         0.813        -2.618         0.508 \r\n 2018          335           2.273        -0.148        -1.879         6.1 \r\n 2018          336           5.767        -0.928        -5             11.43 \r\n 2018          337           3.502        -4.554        -6.602         1.02 \r\n 2018          338           5.302        -5.324        -8.44          0 \r\n 2018          339           8.7          -0.665        -10.66         0 \r\n 2018          340           7.498        -5.76         -9.94          0 \r\n 2018          341           6.659        -4.24         -16.16         0 \r\n 2018          342           8.07         -3.408        -16.32         0 \r\n 2018          343           8.52         -4.798        -11.74         0 \r\n 2018          344           8.86         -2.456        -12.45         0 \r\n 2018          345           6.446        -0.907        -13.1          0 \r\n 2018          346           5.203        -0.522        -10.93         0 \r\n 2018          347           5.668         1.4          -8.88          0 \r\n 2018          348           8.03          2.178        -13.44         0 \r\n 2018          349           8.13          3.724        -8.74          0 \r\n 2018          350           8.05          3.482        -5.112         0 \r\n 2018          351           8.13          3.471        -8.61          0 \r\n 2018          352           7.469         5.785        -0.624         0 \r\n 2018          353           5.967         2.946        -1.272         0 \r\n 2018          354           3.893         1.824        -2.568         0 \r\n 2018          355           3.705        -2.162        -5.67          0 \r\n 2018          356           4.858         2.654        -5.264         0 \r\n 2018          357           6.89         -0.198        -8.63          0 \r\n 2018          358           5.639         0.307        -9.63          0 \r\n 2018          359           2.798         0.185        -6.389         0 \r\n 2018          360           1.362         1.925        -2.69          0 \r\n 2018          361           1             3.34         -7.536         21.84 \r\n 2018          362           3.528        -7.394        -16.75         8.64 \r\n 2018          363           8.37         -5.842        -19.05         0.76 \r\n 2018          364           8.27          2.168        -6.764         0 \r\n 2018          365           1.277        -1.464        -16.81         0 \r\n 2019          1             8.28         -13.1         -20.3          0 \r\n 2019          2             8.26         -1.656        -14.51         0 \r\n 2019          3             7.826         6.714        -7.495         0 \r\n 2019          4             8.22          7.37         -3.905         0 \r\n 2019          5             7.913         8.49         -2.832         0 \r\n 2019          6             3.09          4.189        -1.656         0 \r\n 2019          7             5.363         5.906         0.044         0 \r\n 2019          8             8.68          3.068        -5.952         0 \r\n 2019          9             8.63         -5.932        -11.96         0 \r\n 2019          10            8.61          0.813        -11.86         0 \r\n 2019          11            4.553         1.864        -8.35          0 \r\n 2019          12            2.508        -1.11         -5.396         0 \r\n 2019          13            6.298         3.017        -4.432         0 \r\n 2019          14            1.595        -0.786        -3.348         0 \r\n 2019          15            2.699        -0.624        -4.554         0 \r\n 2019          16            7.221        -4.564        -14.91         0 \r\n 2019          17            3.655        -3.742        -12.17         0 \r\n 2019          18            2.095        -8.92         -14.87         0 \r\n 2019          19            9.84         -14.06        -20.52         0 \r\n 2019          20            3.972        -14.41        -18.11         0 \r\n 2019          21            6.711        -8.1          -16.26         0 \r\n 2019          22            2.377        -6.918        -12.41         0 \r\n 2019          23            9.6          -1.596        -13.25         0 \r\n 2019          24            8.31         -5.862        -21.62         0.254 \r\n 2019          25            7.661        -9.03         -22.89         0 \r\n 2019          26            4.642        -3.642        -20.29         0 \r\n 2019          27            3.165        -0.219        -21.23         0 \r\n 2019          28            9.21          1.562        -18.57         1.524 \r\n 2019          29            10.06        -16.28        -30.49         0 \r\n 2019          30            11.49        -21.58        -31.43         0 \r\n 2019          31            7.079        -11.84        -25.87         0 \r\n 2019          32            10.92         5.3          -17.93         0 \r\n 2019          33            7.928         8.21         -2.376         0 \r\n 2019          34            3.869         7.066        -4.636         0 \r\n 2019          35            11.3         -4.27         -17.41         0 \r\n 2019          36            2.34         -13.9         -17.83         0 \r\n 2019          37            3.77         -12.31        -14.98         0 \r\n 2019          38            8.33         -14.91        -21.35         0 \r\n 2019          39            12.8         -14.1         -24.54         0 \r\n 2019          40            10.28        -7.77         -19.8          0 \r\n 2019          41            4.579        -4.838        -9.63          0 \r\n 2019          42            3.876        -4.412        -9.53          3.556 \r\n 2019          43            12.44        -5.334        -18.95         0 \r\n 2019          44            10.18        -3.257        -19.87         0 \r\n 2019          45            12.25        -2.162        -19.29         0 \r\n 2019          46            10.38        -13.12        -22.76         0 \r\n 2019          47            7.791        -7.658        -18.62         0 \r\n 2019          48            7.485        -7.171        -9.34          0 \r\n 2019          49            10.27        -8.57         -22.11         0 \r\n 2019          50            10.6         -8.79         -25.11         0 \r\n 2019          51            11.4         -2.912        -13.86         7.112 \r\n 2019          52            14.72        -6.41         -19.84         0.762 \r\n 2019          53            12.34        -4.22         -12.04         3.556 \r\n 2019          54            7.625        -0.644        -8.23          9.652 \r\n 2019          55            15.72        -8.23         -20.38         0 \r\n 2019          56            10.71        -16.86        -20.51         0 \r\n 2019          57            10.93        -14.98        -19.8          0 \r\n 2019          58            16.06        -13.87        -19.33         0 \r\n 2019          59            10.49        -8.45         -14.65         0 \r\n 2019          60            11.32        -0.907        -17.66         0.254 \r\n 2019          61            13.27        -10.46        -21.71         0 \r\n 2019          62            17.72        -18.89        -27.52         0 \r\n 2019          63            17.78        -14.39        -25.81         0 \r\n 2019          64            18.24        -9.89         -18.36         0 \r\n 2019          65            17.2         -5.071        -19.4          0 \r\n 2019          66            12.67        -7.464        -13.27         0 \r\n 2019          67            14.78         0.012        -7.516         0.254 \r\n 2019          68            5.698         1.056        -4.473         33.02 \r\n 2019          69            19.47        -2.69         -9.28          0 \r\n 2019          70            19            3.623        -5.558         0.254 \r\n 2019          71            5.745         2.956        -4.554         2.794 \r\n 2019          72            2.851         6.633         1.238         35.31 \r\n 2019          73            2.976         4.835        -1.879         6.096 \r\n 2019          74            19.4          2.016        -3.652         0 \r\n 2019          75            13.75         3.734        -3.996         0 \r\n 2019          76            16.83         5.18         -2.609         0 \r\n 2019          77            17.43         5.452        -3.864         0 \r\n 2019          78            16.62         9.72         -2.456         0 \r\n 2019          79            19.28         9.46         -1.646         0 \r\n 2019          80            20.62         10.52        -3.014         0 \r\n 2019          81            20.81         12.89        -3.601         0 \r\n 2019          82            12.97         12.17        -1.636         0 \r\n 2019          83            8.52          11.13         2.522         0 \r\n 2019          84            13.9          7.682        -2.366         0 \r\n 2019          85            12.3          12.08        -3.48          0 \r\n 2019          86            18.49         19.43         4.916         0 \r\n 2019          87            11.26         9.34         -0.31          0 \r\n 2019          88            10.37         5.138        -2.284         0 \r\n 2019          89            21.38         2.774        -5.78          0 \r\n 2019          90            20.07         9.26         -8.81          0 \r\n 2019          91            8.59          3.765        -1.99          3.81 \r\n 2019          92            14.95         10.38        -6.562         4.572 \r\n 2019          93            5.046         7.561        -2.446         21.59 \r\n 2019          94            2.808         5.906         3.886         4.064 \r\n 2019          95            11.77         17.83         1.47          0.254 \r\n 2019          96            15.25         22.29         9.34          8.13 \r\n 2019          97            14.59         18.65         5.856         0 \r\n 2019          98            22.86         22.53         4.835         0 \r\n 2019          99            9.66          15.28         2.44          0 \r\n 2019          100           1.988         5.219        -0.198         16.51 \r\n 2019          101           2.555         5.866        -1.484         5.334 \r\n 2019          102           9.12          0.408        -2.73          0.254 \r\n 2019          103           21.8          7.884        -3.814         0 \r\n 2019          104           22.73         9.33         -5.628         0 \r\n 2019          105           17.38         20.28        -0.37          0 \r\n 2019          106           18.06         18.67         5.169         0.254 \r\n 2019          107           5.168         19.2          5.169         5.588 \r\n 2019          108           9.46          10.56         1.196         0 \r\n 2019          109           26.03         17.65        -1.434         0 \r\n 2019          110           25.16         27.18         2.754         0 \r\n 2019          111           16.5          26.78         12.34         0.508 \r\n 2019          112           3.544         13.78         5.552         3.81 \r\n 2019          113           26.68         19.14         0.508         0 \r\n 2019          114           25.73         25.13         2.734         0 \r\n 2019          115           18.42         20.15         7.5           11.43 \r\n 2019          116           17.01         13.83         0.661         0 \r\n 2019          117           9.66          6.743        -1.898         13.97 \r\n 2019          118           12.68         8.53         -2.244         0 \r\n 2019          119           25.71         13.46         5.057         0 \r\n 2019          120           5.267         9.07          4.31          6.35 \r\n 2019          121           6.726         8.21          3.422         2.54 \r\n 2019          122           22.69         13.67         2.804         0 \r\n 2019          123           18.26         19.16         2.42          2.286 \r\n 2019          124           23.78         21.44         4.856         0.254 \r\n 2019          125           15.51         19.24         7.804         2.032 \r\n 2019          126           13.54         13.87         5.764         0 \r\n 2019          127           18.33         17.81         4.714         0 \r\n 2019          128           4.195         11.44         1.258         24.38 \r\n 2019          129           10.86         10.16         1.248         0 \r\n 2019          130           26.5          16.69        -0.3           0 \r\n 2019          131           16.94         15.78         3.492         9.14 \r\n 2019          132           9.93          12.47         4.552         1.016 \r\n 2019          133           24.41         18.97         1.551         0 \r\n 2019          134           25            23.64         10.8          10.922 \r\n 2019          135           18.56         27.48         8.73          0 \r\n 2019          136           15.89         31.39         14.03         3.556 \r\n 2019          137           10.71         17.51         11.51         21.08 \r\n 2019          138           15.86         23.11         11.16         2.54 \r\n 2019          139           7.107         11.16         3.562         0.508 \r\n 2019          140           19.96         13.96         1.176         0 \r\n 2019          141           3.443         10.57         7.138         11.94 \r\n 2019          142           17.29         15.56         9.6           5.588 \r\n 2019          143           17.91         17.05         7.44          13.21 \r\n 2019          144           17.3          23.45         11.22         10.16 \r\n 2019          145           25.47         21.82         11.37         0 \r\n 2019          146           28.22         25.6          7.703         10.92 \r\n 2019          147           14.383        19.3          11.94         15.75 \r\n 2019          148           10.23         13.43         9.9           2.54 \r\n 2019          149           10.28         17.64         11.63         12.45 \r\n 2019          150           19.41         24.88         11.49         0 \r\n 2019          151           21.8          30.23         13.37         0 \r\n 2019          152           24.27         23.75         10.44         0 \r\n 2019          153           25.91         25.09         8.14          0 \r\n 2019          154           11.04         21.81         13.24         0 \r\n 2019          155           23.38         31.47         14.61         0 \r\n 2019          156           24.82         30.54         14.76         0 \r\n 2019          157           26.57         32.27         16.81         0 \r\n 2019          158           27.26         32.26         18.05         0 \r\n 2019          159           28.34         31.43         19.01         0 \r\n 2019          160           17.07         21.83         10.89         0 \r\n 2019          161           26.78         25.97         7.419         0 \r\n 2019          162           6.807         20.74         10.59         5.842 \r\n 2019          163           26.77         20.83         9.98          0.508 \r\n 2019          164           23.75         24.49         5.462         0 \r\n 2019          165           19.77         27.35         15.73         0 \r\n 2019          166           17.12         29.58         15.6          3.048 \r\n 2019          167           22.09         29.26         13.98         0 \r\n 2019          168           8.16          23.53         15.56         7.874 \r\n 2019          169           12.62         22.45         14.37         8.13 \r\n 2019          170           14.57         25.15         12.18         0 \r\n 2019          171           14.42         24.33         13.63         7.112 \r\n 2019          172           7.95          21.98         16.18         7.112 \r\n 2019          173           11.18         19.9          14.67         1.016 \r\n 2019          174           6.209         22.77         15.22         1.524 \r\n 2019          175           19.48         25.82         14.16         4.064 \r\n 2019          176           29            27.86         15.87         0.762 \r\n 2019          177           23.34         30.38         14.3          0 \r\n 2019          178           14.03         28.57         17.24         7.366 \r\n 2019          179           24.03         30.84         21.44         0 \r\n 2019          180           27.65         35.2          20.52         0 \r\n 2019          181           26.59         36.27         24.33         0 \r\n 2019          182           17.08         31.34         19.96         12.7 \r\n 2019          183           23.64         31.24         19.56         2.286 \r\n 2019          184           18.56         29.28         19.95         0 \r\n 2019          185           17.26         29.01         18.23         28.45 \r\n 2019          186           17.02         27.61         18.01         12.7 \r\n 2019          187           26.21         27.28         17.08         0 \r\n 2019          188           21.16         28.22         15.8          0 \r\n 2019          189           22.11         29.24         16.65         0 \r\n 2019          190           19.97         30            19.61         0 \r\n 2019          191           24.06         25.86         16.93         0 \r\n 2019          192           28.02         29.13         14.51         0 \r\n 2019          193           20.47         29.91         15.25         0 \r\n 2019          194           23.98         29.03         19.94         3.556 \r\n 2019          195           24.68         31.14         19.92         0 \r\n 2019          196           25.01         31.03         21.85         0 \r\n 2019          197           19.393        29            20.15         2.286 \r\n 2019          198           16.55         28.19         18.29         28.45 \r\n 2019          199           23.62         32.4          20.19         0 \r\n 2019          200           25.89         32.67         22.65         0 \r\n 2019          201           12.19         27.02         15.77         12.45 \r\n 2019          202           16.68         25.01         15.88         0 \r\n 2019          203           26.5          23.64         12.47         0 \r\n 2019          204           26.39         26.25         10.75         0 \r\n 2019          205           25.52         25.94         11.1          0 \r\n 2019          206           7.548         22.53         15.07         2.032 \r\n 2019          207           24.91         29.52         16.11         0 \r\n 2019          208           24.88         32.33         18.03         0 \r\n 2019          209           7.088         23.81         17.29         5.588 \r\n 2019          210           27.46         26.34         14.12         0.254 \r\n 2019          211           21.3          23.83         10.1          0 \r\n 2019          212           8.31          21.31         14.57         0.254 \r\n 2019          213           18.05         27.24         18.17         0 \r\n 2019          214           15.76         25.84         17.06         0 \r\n 2019          215           21.83         27.75         17.22         0 \r\n 2019          216           22.98         29.38         15.41         0 \r\n 2019          217           16.87         29.5          16.77         0.254 \r\n 2019          218           22.59         29.57         13.39         0 \r\n 2019          219           23.44         31.59         14.81         0 \r\n 2019          220           23.62         26.44         13.1          0 \r\n 2019          221           22.98         27.6          11.55         4.572 \r\n 2019          222           16.06         28.73         18.51         0 \r\n 2019          223           11.39         25.83         18.26         0 \r\n 2019          224           19            29.92         18.56         2.286 \r\n 2019          225           23.58         28.47         14.69         0 \r\n 2019          226           18.29         25.42         11.96         0 \r\n 2019          227           19.95         24.92         16.28         3.556 \r\n 2019          228           22.53         27.36         13.17         0.254 \r\n 2019          229           18.71         27.12         13.49         27.43 \r\n 2019          230           20.94         25.18         13.51         0.508 \r\n 2019          231           23.7          26.59         12.06         0 \r\n 2019          232           21.04         31.6          18            1.524 \r\n 2019          233           10.75         22.76         10.97         0 \r\n 2019          234           24.08         24.15         10.1          0 \r\n 2019          235           24.1          24.82         10.76         0 \r\n 2019          236           19.44         22.81         13.75         0 \r\n 2019          237           9.86          20.95         15            1.27 \r\n 2019          238           14.13         25.75         12.97         1.016 \r\n 2019          239           24.11         23.11         10.85         0 \r\n 2019          240           23.9          24.45         8.32          0 \r\n 2019          241           21.45         26.01         11.15         0 \r\n 2019          242           19.75         23.58         8.07          0 \r\n 2019          243           6.968         17.82         12.88         4.572 \r\n 2019          244           15.46         26.03         12.34         0 \r\n 2019          245           12.38         27.46         17.75         0 \r\n 2019          246           17.54         26.56         11.05         2.794 \r\n 2019          247           22.66         24.26         7.318         0 \r\n 2019          248           20.73         28.92         13.37         0 \r\n 2019          249           21.78         26.37         12.68         0 \r\n 2019          250           4.749         18.71         14.45         3.81 \r\n 2019          251           4             17.38         14.17         0.508 \r\n 2019          252           9.47          26.7          16.32         3.302 \r\n 2019          253           18.07         28.95         17.29         0 \r\n 2019          254           10.41         24.12         16.99         27.43 \r\n 2019          255           13.02         25.04         14.63         45.47 \r\n 2019          256           18.25         20.64         10.14         0 \r\n 2019          257           11.89         25.83         9.89          0.254 \r\n 2019          258           16.47         29.21         15.38         0.254 \r\n 2019          259           15.04         29.8          17.73         0 \r\n 2019          260           18.31         30.88         21.81         0 \r\n 2019          261           13.28         27.24         19.12         12.19 \r\n 2019          262           17.24         27.85         17.56         1.016 \r\n 2019          263           16.14         29.92         19            0 \r\n 2019          264           9.31          27.5          15.92         4.572 \r\n 2019          265           12.75         21.81         10.18         1.016 \r\n 2019          266           19.18         26.4          7.167         0 \r\n 2019          267           16            28.71         13.2          8.89 \r\n 2019          268           15.49         17.49         8.02          0 \r\n 2019          269           13.65         20.27         5.532         0 \r\n 2019          270           12.46         23.9          9.01          0.508 \r\n 2019          271           14.72         19.11         5.2           0.254 \r\n 2019          272           4.491         21.6          13.06         0.254 \r\n 2019          273           14.62         31.23         15.2          0 \r\n 2019          274           1.868         15.19         8.98          42.67 \r\n 2019          275           3.336         10.83         8.02          3.556 \r\n 2019          276           11.11         12.24         3.34          0.254 \r\n 2019          277           12.8          13.72         4.108         0 \r\n 2019          278           7.911         16.23         5.583         44.2 \r\n 2019          279           16.45         19.24         3.482         0 \r\n 2019          280           16.56         21.83         1.562         0 \r\n 2019          281           16.26         22.39         6.885         0 \r\n 2019          282           13.04         21.86         11.49         0 \r\n 2019          283           1.289         13.93         1.217         2.54 \r\n 2019          284           3.722         1.874        -2.082         0.254 \r\n 2019          285           5.16          3.836        -2.71          4.572 \r\n 2019          286           7.176         7.894        -2.528         0 \r\n 2019          287           15.01         17.02        -4.96          0 \r\n 2019          288           7.305         10.36         4.149         0 \r\n 2019          289           9.83          10.84         0.55          0 \r\n 2019          290           14.03         19.14        -1.19          0 \r\n 2019          291           12.98         23.62         7.44          0 \r\n 2019          292           14.09         20.44         3.866         3.048 \r\n 2019          293           7.182         16.69         2.572         1.524 \r\n 2019          294           3.379         11.14         4.766         14.22 \r\n 2019          295           13.28         10.52         0.518         0 \r\n 2019          296           3.253         4.552        -1.687         4.064 \r\n 2019          297           13.57         8.15         -3.632         0 \r\n 2019          298           13.51         13.69        -4.473         0 \r\n 2019          299           13.24         14.12         0.469         0 \r\n 2019          300           4.558         6.936        -3.034         0 \r\n 2019          301           9.25          1.763        -6.784         0 \r\n 2019          302           10.01         4.098        -7.536         0 \r\n 2019          303           8.18          0.418        -8.52          0 \r\n 2019          304           12.42         4.31         -10.46         0 \r\n 2019          305           5.657         7.178        -2.902         0 \r\n 2019          306           10.61         8.23         -3.358         0 \r\n 2019          307           4.253         5.229        -4.048         1.524 \r\n 2019          308           7.577         6.39         -4.656         0 \r\n 2019          309           4.523        -0.168        -7.424         0 \r\n 2019          310           4.599         0.145        -10.85         3.556 \r\n 2019          311           10.79        -3.317        -17.28         0 \r\n 2019          312           10.04         6.946        -8.49          0 \r\n 2019          313           8.79          13.84        -1.859         0 \r\n 2019          314           3.545         0.732        -9.08          0 \r\n 2019          315           9.9          -8.85         -19.03         0 \r\n 2019          316           10.77        -6.552        -20.42         0 \r\n 2019          317           4.469         3.299        -7.8           0 \r\n 2019          318           5.274         3.299        -12.78         0 \r\n 2019          319           4.564         12.06        -6.146         0 \r\n 2019          320           6.171         11.53         1.156         0.254 \r\n 2019          321           2.524         5.038        -3.794         0.254 \r\n 2019          322           4.393         8.3          -3.592         0.508 \r\n 2019          323           9.01          8.75         -2.872         0 \r\n 2019          324           4.809         13.57         0.489         5.842 \r\n 2019          325           2.992         8.35         -7.718         5.334 \r\n 2019          326           9.17          2.228        -11.33         0 \r\n 2019          327           8.68          6.613        -7.454         0 \r\n 2019          328           7.896         10.52        -1.13          0 \r\n 2019          329           6.714         7.965         0.692         0 \r\n 2019          330           2.187         2.036        -2.466         6.858 \r\n 2019          331           6.63         -2.284        -5.02          0 \r\n 2019          332           3.991        -2.912        -5.526         0 \r\n 2019          333           2.98         -0.3          -2.953         4.572 \r\n 2019          334           2.504         1.4          -0.35          9.4 \r\n 2019          335           4.586        -0.118        -10.54         0 \r\n 2019          336           7.955        -0.118        -13.45         0 \r\n 2019          337           8.36          2.37         -5.892         0 \r\n 2019          338           8.25          3.724        -4.554         0 \r\n 2019          339           8.02          5.674        -3.804         0.254 \r\n 2019          340           7.741        -2.466        -8.97          0 \r\n 2019          341           7.418         6.694        -4.564         0 \r\n 2019          342           6.228         3.846        -2.497         0 \r\n 2019          343           7.37         -1.869        -15.79         0 \r\n 2019          344           7.762        -9.06         -17.26         0 \r\n 2019          345           7.809        -9.93         -17.3          0 \r\n 2019          346           4.864        -4.726        -10.72         0 \r\n 2019          347           5.642        -2.81         -10.62         0 \r\n 2019          348           7.607        -5.254        -16.75         0 \r\n 2019          349           4.679        -7.982        -16.58         0 \r\n 2019          350           3.535        -4.736        -16.24         0 \r\n 2019          351           6.793        -1.434        -14.41         0 \r\n 2019          352           5.589        -0.24         -16.18         0 \r\n 2019          353           6.404         2.794        -10.41         0 \r\n 2019          354           6.722         0.044        -7.373         0 \r\n 2019          355           7.033         8.54         -8.06          0 \r\n 2019          356           5.837         6.724        -0.907         0 \r\n 2019          357           4.875         3.36         -2.953         0 \r\n 2019          358           4.511         4.856        -2.932         0 \r\n 2019          359           2.226         0.67         -1.392         0 \r\n 2019          360           1.65         -0.482        -3.844         0 \r\n 2019          361           5.974         4.956        -8.02          0 \r\n 2019          362           1             1.196        -0.24          17.78 \r\n 2019          363           1.993         0.944        -5.162         7.366 \r\n 2019          364           4.981        -4.614        -7.566         0 \r\n 2019          365           7.008        -3.723        -9.95          0 \r\n 2020          1             5.4           2.532        -8.87          0 \r\n 2020          2             3.638         1.076        -3.317         0 \r\n 2020          3             1             1.056        -3.996         0 \r\n 2020          4             6.482         0.954        -8.79          0.254 \r\n 2020          5             6.499         3.239        -2.648         0 \r\n 2020          6             3.186         1.551        -5.832         0 \r\n 2020          7             5.774         1.642        -10.7          0 \r\n 2020          8             7.167        -3.642        -13.06         0 \r\n 2020          9             1.262304      0.894        -5.406         0 \r\n 2020          10            2.823552     -4.98         -16.52         0 \r\n 2020          11            8.78688      -11.17        -18.79         0 \r\n 2020          12            1.400544     -5.324        -17            5.08 \r\n 2020          13            4.591296     -0.33         -8.48          0 \r\n 2020          14            8.84736      -0.826        -13.18         0.254 \r\n 2020          15            6.084288     -6.38         -21.01         0 \r\n 2020          16            8.57088      -15.06        -25.81         0 \r\n 2020          17            2.19024      -3.257        -15.13         8.636 \r\n 2020          18            8.36352      -2.982        -20.46         0 \r\n 2020          19            9.61632      -17.38        -24.38         0 \r\n 2020          20            9.3744       -10.05        -24.99         0 \r\n 2020          21            8.3376       -3.611        -23.36         0 \r\n 2020          22            3.452544      0.59         -3.622         3.556 \r\n 2020          23            5.082912      0.266        -1.98          0.762 \r\n 2020          24            4.346784     -1.332        -3.338         0 \r\n 2020          25            8.18208      -1.576        -9.26          0 \r\n 2020          26            9.48672       0.772        -5.75          0 \r\n 2020          27            4.543776     -0.907        -6.806         0 \r\n 2020          28            6.638112     -5.932        -8.63          0 \r\n 2020          29            8.79552      -3.226        -10.7          1.016 \r\n 2020          30            7.09344       0.894        -5.984         0 \r\n 2020          31            5.838048      1.258        -1.343         0.254 \r\n 2020          32            9.92736       4.452        -4.574         0 \r\n 2020          33            8.37216       4.594        -0.826         0 \r\n 2020          34            12.21        -0.806        -8.01          0 \r\n 2020          35            6.93792      -6.44         -11.31         0 \r\n 2020          36            11.02464     -1.009        -11.05         0 \r\n 2020          37            8.66592       0.064        -12.31         0 \r\n 2020          38            7.1712       -3.064        -17.68         0 \r\n 2020          39            12.66624     -3.226        -19.19         0 \r\n 2020          40            8.856        -0.614        -12.17         0 \r\n 2020          41            12.21696      1.935        -13.92         0 \r\n 2020          42            12.55392      1.238        -9.63          0 \r\n 2020          43            5.013792      1.035        -23.54         0 \r\n 2020          44            13.23648     -16.32        -25.77         0 \r\n 2020          45            11.7072      -4.96         -21.31         0 \r\n 2020          46            12.86496      2.896        -6.947         0 \r\n 2020          47            10.87776      3.442        -3.541         0 \r\n 2020          48            1.981152      2.188        -6.268         0.254 \r\n 2020          49            12.98592     -1.444        -11.97         0 \r\n 2020          50            11.56032     -9.2          -17.4          0 \r\n 2020          51            14.42016     -8.9          -20.44         0 \r\n 2020          52            14.35968      4.986        -10.23         0 \r\n 2020          53            12.99456      9.17         -3.56          0 \r\n 2020          54            14.07456      7.742        -2.082         0 \r\n 2020          55            12.77856      3.471        -3.004         0 \r\n 2020          56            10.89504      1.176        -6.794         0 \r\n 2020          57            12.312       -1.048        -9.95          0 \r\n 2020          58            12.84768     -0.806        -7.77          0 \r\n 2020          59            6.612192      0.346        -6.136         0 \r\n 2020          60            13.63392      11.25        -6.794         0 \r\n 2020          61            7.6032        9.66         -0.522         0 \r\n 2020          62            8.58816       6.32         -2.528         0 \r\n 2020          63            8.5104        10.16        -0.766         0.508 \r\n 2020          64            11.43072      12.97        -2.832         0 \r\n 2020          65            5.531328      7.097        -2.021         0 \r\n 2020          66            11.56896      7.581        -6.521         0 \r\n 2020          67            12.81312      19.18         1.196         0 \r\n 2020          68            13.0896       19.83         2.45          0 \r\n 2020          69            2.689632      2.471        -4.848         4.064 \r\n 2020          70            5.85792       2.45         -7.902         2.032 \r\n 2020          71            11.95776      13.26        -2.142         0 \r\n 2020          72            11.47392      10.67        -2.81          0 \r\n 2020          73            15.57792      5.845        -4.99          0 \r\n 2020          74            14.74848      0.842        -4.636         4.064 \r\n 2020          75            7.36992       0.448        -6.704         0 \r\n 2020          76            6.15168       4.916        -2.72          0 \r\n 2020          77            13.37472      5.078        -6.014         0 \r\n 2020          78            4.828896      8.14          3.26          1.524 \r\n 2020          79            2.23344       5.38         -6.014         29.21 \r\n 2020          80            21.09888     -4.412        -12.33         0 \r\n 2020          81            16.632        2.106        -11.09         1.016 \r\n 2020          82            12.43296      4.734        -1.818         0 \r\n 2020          83            4.675968      7.328         0.732         0.254 \r\n 2020          84            8.27712       12.79         3.946         0.254 \r\n 2020          85            3.660768      10.02         1.096         4.572 \r\n 2020          86            10.9728       7.804        -0.098         0 \r\n 2020          87            4.663872      8.41          2.309         0.508 \r\n 2020          88            2.437344      6.613         0.368         14.986 \r\n 2020          89            21.0816       12.98        -1.332         0 \r\n 2020          90            21.62592      16.57        -4.108         0 \r\n 2020          91            13.11552      14.91        -0.138         0.254 \r\n 2020          92            20.90016      22.09         1.702         0 \r\n 2020          93            5.082048      12.87        -4.189         0.508 \r\n 2020          94            7.37856      -2.061        -5.913         0 \r\n 2020          95            22.54176      8.59         -9.14          0.762 \r\n 2020          96            21.43584      15.46        -4.858         0 \r\n 2020          97            19.46592      19.1          8.57          0 \r\n 2020          98            21.26304      26.02         8.14          0 \r\n 2020          99            13.90176      14.1          0.286         0.254 \r\n 2020          100           14.10912      5.048        -7.09          0 \r\n 2020          101           17.80704      10.46        -8.04          0 \r\n 2020          102           9.43488       13.97         0.126         0 \r\n 2020          103           10.16928      4.896        -6.076         9.652 \r\n 2020          104           24.48576     -1.059        -12.18         1.27 \r\n 2020          105           25.29792      0.226        -10.06         0.254 \r\n 2020          106           20.20032      2.654        -9.75          0 \r\n 2020          107           15.80256      4.149        -6.602         0 \r\n 2020          108           17.39232      10.41        -2.416         0 \r\n 2020          109           20.58048      21.61         0.469         0 \r\n 2020          110           21.0816       13.3          0.266         0 \r\n 2020          111           18.6192       19.34        -0.3           0 \r\n 2020          112           23.37984      20.87        -5.101         0 \r\n 2020          113           22.66272      27.6          10.35         0 \r\n 2020          114           20.088        25.78         2.896         0 \r\n 2020          115           15.56928      17.53         3.765         0 \r\n 2020          116           20.49408      19.49         0.61          0 \r\n 2020          117           24.46848      21.02         1.014         0 \r\n 2020          118           24.39072      26.52         8.39          0 \r\n 2020          119           14.688        16.73         8.9           4.064 \r\n 2020          120           24.5808       19.9          5.906         0 \r\n 2020          121           25.97184      22.92         1.722         0 \r\n 2020          122           23.09472      31.36         11.53         0 \r\n 2020          123           9.62496       22.97         7.894         0 \r\n 2020          124           21.9456       26.38         5.946         0 \r\n 2020          125           7.75872       14.87         7.561         5.842 \r\n 2020          126           6.801408      9.11          5.4           12.446 \r\n 2020          127           19.5696       14.94         5.604         0.254 \r\n 2020          128           9.95328       14.85         2.208         3.81 \r\n 2020          129           27.23328      12.98         0.813         0 \r\n 2020          130           16.10496      17.59        -1.069         1.27 \r\n 2020          131           17.08128      9.98          0.752         0 \r\n 2020          132           28.09728      13.06         1.156         0 \r\n 2020          133           20.11392      14.59         1.137         0 \r\n 2020          134           6.161184      13.06         4.633         0.762 \r\n 2020          135           25.46208      24.15         10.57         0.254 \r\n 2020          136           24.9264       22.84         5.876         0 \r\n 2020          137           13.58208      22.65         10.56         18.034 \r\n 2020          138           5.670432      11.59         9.36          11.176 \r\n 2020          139           7.54272       13.93         8.66          0 \r\n 2020          140           9.01152       14.6          9.98          0 \r\n 2020          141           6.784992      16.83         12.1          0 \r\n 2020          142           7.69824       17.27         12.27         0 \r\n 2020          143           8.48448       20.98         11.86         6.35 \r\n 2020          144           13.84992      23.48         14.23         2.032 \r\n 2020          145           9.56448       22.09         14.51         18.034 \r\n 2020          146           10.152        22.19         13.85         5.588 \r\n 2020          147           5.721408      19.4          15.15         17.272 \r\n 2020          148           16.8048       22.86         15.19         1.524 \r\n 2020          149           26.18784      26.2          12.38         0 \r\n 2020          150           29.22048      22.53         7.742         0 \r\n 2020          151           25.47936      24.72         10.95         0 \r\n 2020          152           17.03808      25.01         10.85         0 \r\n 2020          153           28.4256       34.56         17.99         0 \r\n 2020          154           27.45792      36.96         18.45         5.842 \r\n 2020          155           26.0496       32.04         15.42         0 \r\n 2020          156           25.72128      34.28         16.24         0 \r\n 2020          157           28.30464      29.31         16.05         0.254 \r\n 2020          158           19.90656      28.74         16.69         0.762 \r\n 2020          159           28.40832      35.04         22            0 \r\n 2020          160           28.66752      34.58         22.48         0 \r\n 2020          161           20.2608       29.74         12.72         42.164 \r\n 2020          162           24.42528      22.07         12.22         0.508 \r\n 2020          163           29.65248      27.97         11.45         0 \r\n 2020          164           29.28096      30.43         11.56         0 \r\n 2020          165           27.62208      29.18         15.24         0 \r\n 2020          166           25.07328      29.7          14.7          0 \r\n 2020          167           22.4208       32.02         19.18         0 \r\n 2020          168           28.14912      32            20.14         0 \r\n 2020          169           28.84896      31.94         18.92         0 \r\n 2020          170           13.15872      28.91         17.28         14.732 \r\n 2020          171           21.49632      24.21         15.09         0 \r\n 2020          172           19.02528      25.04         13.53         1.27 \r\n 2020          173           16.60608      28.92         15.12         7.62 \r\n 2020          174           17.78112      24.1          13.63         0.254 \r\n 2020          175           20.85696      23.43         10.84         0 \r\n 2020          176           26.86176      27.65         11.48         0 \r\n 2020          177           25.3152       30.05         13.17         15.494 \r\n 2020          178           18.576        28.86         19.47         3.048 \r\n 2020          179           18.9648       29.89         18.15         0 \r\n 2020          180           17.74656      29.32         19.48         0 \r\n 2020          181           7.4736        26.28         23.22         0 \r\n 2020          182           17.83296      29.46         22.55         0 \r\n 2020          183           25.03872      29.52         19.78         0 \r\n 2020          184           25.42752      31.14         18.04         0 \r\n 2020          185           21.53088      30.56         18.35         0 \r\n 2020          186           24.9264       30.99         16.3          0 \r\n 2020          187           24.87456      31.37         16.87         0 \r\n 2020          188           22.7232       30.34         17.77         9.906 \r\n 2020          189           26.4816       30.87         18.01         0 \r\n 2020          190           27.864        32.01         21.04         0 \r\n 2020          191           16.25184      28.61         18.37         7.366 \r\n 2020          192           24.30432      29.79         16.38         0 \r\n 2020          193           25.08192      29.08         15.98         0 \r\n 2020          194           27.33696      29.23         13.3          0 \r\n 2020          195           25.30656      29.69         16.08         0.508 \r\n 2020          196           20.35584      25.58         14.62         0 \r\n 2020          197           20.6064       26.03         10.79         0 \r\n 2020          198           27.75168      28.82         9.46          0 \r\n 2020          199           21.6864       31.61         18.74         0 \r\n 2020          200           24.64992      32.97         20.86         0 \r\n 2020          201           19.19808      28.03         16.37         0 \r\n 2020          202           20.55456      28.2          15.69         0 \r\n 2020          203           22.00608      27.38         13.77         0 \r\n 2020          204           27.3024       28.7          11.23         0 \r\n 2020          205           21.28896      28.09         15.19         13.716 \r\n 2020          206           26.63712      31.51         21.55         0 \r\n 2020          207           20.64096      32.1          23.32         0.254 \r\n 2020          208           11.448        28.08         17.59         4.064 \r\n 2020          209           24.87456      28.25         13.48         0 \r\n 2020          210           17.60832      29.78         15.1          0 \r\n 2020          211           16.87392      27.65         18.83         0 \r\n 2020          212           24.90048      24.95         13.75         0 \r\n 2020          213           24.72768      26.88         12.2          0 \r\n 2020          214           19.12896      26.56         13.17         0.254 \r\n 2020          215           25.67808      23.5          12.3          0 \r\n 2020          216           24.34752      23.95         8.33          0 \r\n 2020          217           24.00192      25.38         9.76          0 \r\n 2020          218           12.6144       23.24         14.57         1.778 \r\n 2020          219           20.05344      26.02         15.78         10.922 \r\n 2020          220           18.56736      28.81         18.64         0 \r\n 2020          221           11.94912      28.76         20.46         0 \r\n 2020          222           21.43584      31.38         17.59         11.176 \r\n 2020          223           13.31424      23.95         12.18         3.302 \r\n 2020          224           25.07328      26.85         10.26         0 \r\n 2020          225           18.95616      29.44         17.69         0 \r\n 2020          226           23.39712      30.28         18.78         0 \r\n 2020          227           15.53472      29.43         16            0.254 \r\n 2020          228           23.8464       27.58         9.32          0 \r\n 2020          229           20.92608      28.57         13.84         0 \r\n 2020          230           24.09696      25.62         11.98         0.254 \r\n 2020          231           23.69088      28.34         9.82          0 \r\n 2020          232           24.2784       28.14         9.84          0 \r\n 2020          233           20.23488      28.75         15.18         0 \r\n 2020          234           22.96512      31.98         16.95         0.508 \r\n 2020          235           21.82464      32.88         17.78         0 \r\n 2020          236           21.67776      34.31         15.73         0 \r\n 2020          237           20.31264      34.44         18.5          0 \r\n 2020          238           20.92608      33.39         18.19         0 \r\n 2020          239           21.97152      33.54         17.87         0 \r\n 2020          240           21.13344      32.52         19.21         0 \r\n 2020          241           18.36         28.56         15.27         0.762 \r\n 2020          242           22.27392      25.8          10.12         0 \r\n 2020          243           20.39904      25.84         11.3          0 \r\n 2020          244           22.21344      23.97         8.17          3.048 \r\n 2020          245           14.67072      24.88         8.79          0 \r\n 2020          246           22.2912       29.98         8.65          0 \r\n 2020          247           22.47264      22.54         7.662         0 \r\n 2020          248           20.93472      28.32         7.52          0 \r\n 2020          249           20.67552      30.62         7.318         0 \r\n 2020          250           18.4464       32.93         16.77         0 \r\n 2020          251           17.68608      19.13         8.44          0 \r\n 2020          252           2.355264      8.55          4.886         14.478 \r\n 2020          253           5.17536       9.36          5.653         2.032 \r\n 2020          254           13.57344      15.7          5.674         1.016 \r\n 2020          255           3.881088      13.17         9.72          4.826 \r\n 2020          256           5.861376      15.99         7.44          2.286 \r\n 2020          257           19.5264       27.25         5.38          0 \r\n 2020          258           17.55648      27.9          9.54          0 \r\n 2020          259           18.37728      27.75         13.46         0 \r\n 2020          260           16.73568      23.43         9.3           0 \r\n 2020          261           16.77888      19.65         6.39          0 \r\n 2020          262           19.1376       20.37         3.664         0 \r\n 2020          263           15.87168      23.09         8.27          0 \r\n 2020          264           14.256        24.9          12.1          0 \r\n 2020          265           11.62944      26.2          13.18         0 \r\n 2020          266           17.76384      28.78         11.71         0 \r\n 2020          267           17.16768      26.84         10.1          0 \r\n 2020          268           16.632        28.87         14.25         0 \r\n 2020          269           16.32096      28.85         12.52         0 \r\n 2020          270           10.4544       28.12         12.06         0 \r\n 2020          271           9.288         20.91         8.02          0 \r\n 2020          272           9.1152        16.02         6.35          0 \r\n 2020          273           13.0032       25.01         2.512         0 \r\n 2020          274           17.13312      19.13         6.733         0 \r\n 2020          275           12.40704      12.12        -1.434         0 \r\n 2020          276           13.10688      13.25        -3.094         0.254 \r\n 2020          277           6.900768      12.68         2.288         0 \r\n 2020          278           16.64928      16.06        -2.932         0 \r\n 2020          279           15.2064       23.91         8.33          0 \r\n 2020          280           15.62112      28.37         5.442         0 \r\n 2020          281           15.54336      25.44         5.886         0 \r\n 2020          282           14.61888      24.43         3.594         0 \r\n 2020          283           13.176        29.09         10.96         0 \r\n 2020          284           15.336        22.97         7.944         0 \r\n 2020          285           13.63392      28.42         10.22         21.336 \r\n 2020          286           15.61248      17.69         5.906         2.286 \r\n 2020          287           14.7744       16.53         5.118         0 \r\n 2020          288           6.305472      18.49         2.309         0 \r\n 2020          289           15.05952      10.32        -3.611         0 \r\n 2020          290           13.02912      10.44        -1.656         0 \r\n 2020          291           10.03968      17.45         2.106         0 \r\n 2020          292           12.37248      4.008        -2             0 \r\n 2020          293           3.069792      0.55         -1.312         0.254 \r\n 2020          294           1.8576        5.038        -0.118         0.762 \r\n 2020          295           6.9552        6.552         0.064         0 \r\n 2020          296           2.014848      2.188        -0.3           4.572 \r\n 2020          297           5.08896       1.844        -7.718         0 \r\n 2020          298           5.479488     -1.322        -10.93         0 \r\n 2020          299           6.28992      -3.298        -10.88         0 \r\n 2020          300           10.89504     -4.513        -11.9          0.254 \r\n 2020          301           13.40928      0.651        -15.19         0 \r\n 2020          302           12.45024      10.28        -5.081         0 \r\n 2020          303           11.6208       2.814        -3.925         0 \r\n 2020          304           12.17376      9.42         -3.804         0 \r\n 2020          305           10.39392      15.42         0.67          0 \r\n 2020          306           12.15648      5.502        -5.203         0 \r\n 2020          307           11.48256      17.32        -4.098         0 \r\n 2020          308           11.74176      24.97         0.388         0 \r\n 2020          309           11.06784      24.4          0.852         0 \r\n 2020          310           10.93824      23.5          3.603         0 \r\n 2020          311           10.8432       24.3          4.734         0 \r\n 2020          312           10.8864       22.15         11.49         0 \r\n 2020          313           9.96192       21.23         11.87         0 \r\n 2020          314           1.777248      17.23        -0.938         3.556 \r\n 2020          315           2.44944      -0.756        -7.678         14.732 \r\n 2020          316           12.63168      1.884        -8.23          9.652 \r\n 2020          317           6.886944     -0.614        -13.32         0 \r\n 2020          318           10.60128      3.036        -13.78         0.254 \r\n 2020          319           6.227712      6.178        -2.184         0 \r\n 2020          320           8.96832       3.816        -4.26          0 \r\n 2020          321           9.91008       8.02         -5.061         0 \r\n 2020          322           7.0848        7.4          -7.373         0 \r\n 2020          323           8.14752       15.43        -0.118         0 \r\n 2020          324           8.35488       15.37         2.886         0 \r\n 2020          325           8.5104        9.09         -4.636         0 \r\n 2020          326           8.56224       7.167        -7.739         0 \r\n 2020          327           8.7696        5.986        -5.344         0 \r\n 2020          328           2.67408       2.896        -7.87          0 \r\n 2020          329           1.283904      2.794         0.469         6.604 \r\n 2020          330           2.484864      1.864        -1.778         0 \r\n 2020          331           8.424         4.976        -3.348         0 \r\n 2020          332           8.5968        4.997        -5.76          0 \r\n 2020          333           8.74368       9.62         -2.71          0 \r\n 2020          334           8.35488       1.41         -7.739         0 \r\n 2020          335           8.13024       3.088        -12.78         0 \r\n 2020          336           8.424         6.764        -11.58         0 \r\n 2020          337           8.23392       7.884        -9.34          0 \r\n 2020          338           7.93152       5.674        -8.27          0 \r\n 2020          339           7.87968       9.42         -6.086         0 \r\n 2020          340           7.8624        7.218        -8.59          0 \r\n 2020          341           2.446848      1.268        -6.399         0 \r\n 2020          342           7.75008       8.5          -7.474         0 \r\n 2020          343           5.964192      10.99        -7.495         0 \r\n 2020          344           7.92288       13.27        -0.928         0 \r\n 2020          345           6.589728      8.51         -2.366         0 \r\n 2020          346           3.757536      3.017        -2.466         0 \r\n 2020          347           4.69584      -1.048        -7.739         0 \r\n 2020          348           2.140992     -1.372        -11.25         0 \r\n 2020          349           3.776544     -7.861        -16.22         0 \r\n 2020          350           4.476384     -2.486        -12.39         0 \r\n 2020          351           4.443552     -1.738        -13.84         0 \r\n 2020          352           3.575232     -2.061        -7.11          0 \r\n 2020          353           4.218048      6.39         -6.156         0 \r\n 2020          354           7.92288       0.205        -15.16         0 \r\n 2020          355           6.312384      6.43         -9.53          0 \r\n 2020          356           7.93152       6.936        -8.73          0 \r\n 2020          357           7.05888       11.45        -6.248         0 \r\n 2020          358           2.093472      6.794        -16.32         0 \r\n 2020          359           8.39808      -14.14        -21.38         0 \r\n 2020          360           8.06976      -4.087        -21.19         0 \r\n 2020          361           7.45632      -1.818        -14.14         0 \r\n 2020          362           3.374784     -3.155        -8.27          0 \r\n 2020          363           8.22528      -5.365        -16.42         0 \r\n 2020          364           3.135456     -4.938        -12.45         0 \r\n 2020          365           6.6096       -3.348        -7.698         0 \r\n 2020          366           8.06112      -4.646        -14.12         0 \r\n 2021          1             6.291648     -5.487        -14.18         0 \r\n 2021          2             6.614784     -1.636        -15.37         0 \r\n 2021          3             7.30944       1.176        -13.24         0.254 \r\n 2021          4             7.81056       2.208        -11.22         0 \r\n 2021          5             5.947776      4.654        -9.91          0 \r\n 2021          6             3.92256       2.582        -0.948         0 \r\n 2021          7             4.144608      0.368        -6.136         0 \r\n 2021          8             2.547072     -2.74         -8.92          0 \r\n 2021          9             4.413312     -4.554        -8.71          0 \r\n 2021          10            3.830112     -0.108        -5.304         0 \r\n 2021          11            6.539616      3.28         -5.192         0 \r\n 2021          12            6.621696      7.46         -7.292         0 \r\n 2021          13            6.01344       7.612        -2.75          0 \r\n 2021          14            3.475008      4.976        -2.74          7.62 \r\n 2021          15            4.399488     -1.697        -4.665         5.08 \r\n 2021          16            5.874336     -4.006        -5.994         0 \r\n 2021          17            6.3936       -0.472        -7.191         0 \r\n 2021          18            8.87328      -1.079        -8.75          0 \r\n 2021          19            6.264864      0.024        -15.06         0 \r\n 2021          20            9.36576       5.462        -15.24         0 \r\n 2021          21            9.03744       1.804        -10.3          0 \r\n 2021          22            8.5968       -6.004        -14.89         0 \r\n 2021          23            5.88384      -4.716        -13.98         0 \r\n 2021          24            6.591456     -4.665        -12.43         0 \r\n 2021          25            5.327424     -7.354        -15.24         0 \r\n 2021          26            9.57312      -9.71         -11.84         0 \r\n 2021          27            10.7568      -5.507        -16.6          0.508 \r\n 2021          28            5.934816     -3.804        -17.04         0 \r\n 2021          29            9.072        -3.278        -8.18          0 \r\n 2021          30            3.612384     -2.142        -3.46          0 \r\n 2021          31            7.44768      -2.72         -5.212         0 \r\n 2021          32            7.53408      -2.892        -7.344         0 \r\n 2021          33            9.99648      -3.824        -9.44          0 \r\n 2021          34            10.4112       3.128        -7.272         0 \r\n 2021          35            10.08288      1.744        -13.53         0 \r\n 2021          36            12.1824      -9.97         -15.38         0 \r\n 2021          37            9.99648      -12.07        -23.63         0 \r\n 2021          38            9.40896      -17.27        -24.76         0 \r\n 2021          39            12.096       -17           -25.4          0 \r\n 2021          40            12.01824     -13.67        -26.03         0 \r\n 2021          41            12.6144      -8.02         -22.35         0.254 \r\n 2021          42            9.68544      -17.24        -25.46         0 \r\n 2021          43            10.56672     -20.95        -26.22         0 \r\n 2021          44            13.51296     -15.85        -26.36         0 \r\n 2021          45            12.68352     -23.64        -29.92         0 \r\n 2021          46            14.5584      -21.6         -32.93         0 \r\n 2021          47            14.35968     -14.82        -34.04         0 \r\n 2021          48            10.10016     -12.98        -19.87         0 \r\n 2021          49            14.48928     -10.42        -18.91         0 \r\n 2021          50            14.6448       0.852        -19.44         0.508 \r\n 2021          51            14.04        -4.736        -20.87         0 \r\n 2021          52            8.71776      -3.398        -9.26          9.144 \r\n 2021          53            13.54752      4.33         -10.89         2.032 \r\n 2021          54            14.58432      5.805        -5.568         0 \r\n 2021          55            13.87584      3.299        -5.304         0 \r\n 2021          56            15.05088      2.814        -7.495         0 \r\n 2021          57            13.35744      3.927        -4.818         0 \r\n 2021          58            10.61856      4.674        -5.994         0 \r\n 2021          59            13.12416      1.379        -7.851         0 \r\n 2021          60            13.10688     -0.32         -8.27          0 \r\n 2021          61            16.26048      9.14         -5.446         0 \r\n 2021          62            15.99264      11.77        -1.92          0 \r\n 2021          63            15.6816       10.05        -1.059         0 \r\n 2021          64            16.13088      10.85        -2.973         0 \r\n 2021          65            16.26912      10.71        -2.345         0 \r\n 2021          66            16.05312      16.88         1.622         0 \r\n 2021          67            15.35328      16.11        -0.178         0 \r\n 2021          68            15.81984      20.18         6.743         0 \r\n 2021          69            7.65504       12.88        -1.616         9.144 \r\n 2021          70            17.89344      9.29         -2.598         0 \r\n 2021          71            18.2736       10.24        -4.798         0 \r\n 2021          72            13.51296      13.39        -3.288         0 \r\n 2021          73            2.437344      7.016         0.195         8.89 \r\n 2021          74            6.97248       0.185        -1.96          2.032 \r\n 2021          75            9.39168       0.59         -2.102         3.556 \r\n 2021          76            9.08928       1.035        -0.704         0.254 \r\n 2021          77            19.68192      5.371        -2.386         0 \r\n 2021          78            20.3472       10.91        -5.212         0 \r\n 2021          79            19.58688      16.06        -0.665         0 \r\n 2021          80            12.04416      16.12         1.49          0 \r\n 2021          81            6.511104      11.21        -1.515         8.89 \r\n 2021          82            2.202336      8.47          4.462         29.464 \r\n 2021          83            5.018976      6.673        -0.078         0 \r\n 2021          84            8.44128       7.652        -2.356         0 \r\n 2021          85            16.09632      12.71        -2.102         0 \r\n 2021          86            7.65504       8.79          0.084         6.096 \r\n 2021          87            21.35808      11.04        -3.196         0 \r\n 2021          88            21.39264      22.71         5.491         0 \r\n 2021          89            17.6256       8.59         -5.385         0 \r\n 2021          90            22.0752       3.623        -7.252         0 \r\n 2021          91            22.09248      10.18        -10.95         0 \r\n 2021          92            21.60864      21.65         0.661         0 \r\n 2021          93            21.6432       23.45         2.916         0 \r\n 2021          94            20.5632       28.53         4.32          0 \r\n 2021          95            20.952        27.74         11.52         0 \r\n 2021          96            14.6448       23.9          9.43          2.54 \r\n 2021          97            7.97472       15.78         7.662         20.32 \r\n 2021          98            4.66992       9.27          6.228         14.224 \r\n 2021          99            8.00064       10.4          4.654         0 \r\n 2021          100           20.45088      14.23         1.954         0 \r\n 2021          101           22.99104      16.34        -1.898         0 \r\n 2021          102           22.60224      12.39         1.056         0 \r\n 2021          103           18.13536      7.258         0.226         0 \r\n 2021          104           15.18048      8.53         -1.585         0 \r\n 2021          105           13.35744      9.84          0.54          0 \r\n 2021          106           7.1712        8.91          1.196         0 \r\n 2021          107           13.824        12.68         2.087         0 \r\n 2021          108           23.10336      17.79        -1.474         0 \r\n 2021          109           17.8848       5.704        -5.822         0 \r\n 2021          110           17.29728      6.866        -8.9           0 \r\n 2021          111           20.84832      6.996        -5.142         0 \r\n 2021          112           22.7232       15.18        -3.58          0 \r\n 2021          113           16.49376      18.15         2.208         0 \r\n 2021          114           24.6672       13.36         0.145         0 \r\n 2021          115           15.88896      15.78         0.732         4.572 \r\n 2021          116           16.4592       26.74         8.86          0 \r\n 2021          117           5.327424      11.57         6.592         0 \r\n 2021          118           16.96032      17.44         4.452         0.254 \r\n 2021          119           25.37568      21.29         2.401         0 \r\n 2021          120           24.84         24.07         4.937         0 \r\n 2021          121           24.87456      33.57         12.41         0 \r\n 2021          122           16.42464      26.47         14.09         0.254 \r\n 2021          123           20.78784      19.46         7.106         0.254 \r\n 2021          124           27.70848      16.3          2.239         0 \r\n 2021          125           6.753024      13.28        -0.35          0 \r\n 2021          126           25.64352      17.97        -0.907         0 \r\n 2021          127           27.70848      18.13         3.562         0 \r\n 2021          128           2.83824       9.04          2.836         22.098 \r\n 2021          129           19.50048      15.6          3.492         0 \r\n 2021          130           23.42304      15.83         3.34          0 \r\n 2021          131           28.07136      15.85        -0.948         0 \r\n 2021          132           25.7472       18.15         1.096         0 \r\n 2021          133           20.70144      19.58         4.472         0 \r\n 2021          134           9.70272       15.58         8.96          3.048 \r\n 2021          135           24.37344      25.68         7.419         0 \r\n 2021          136           17.02944      21.82         9.01          0 \r\n 2021          137           8.1648        19.54         10.23         0 \r\n 2021          138           5.081184      18.57         13.08         0 \r\n 2021          139           6.836832      22.53         13.45         27.94 \r\n 2021          140           10.63584      23.09         16.42         0.508 \r\n 2021          141           17.83296      27.05         16.46         0 \r\n 2021          142           18.12672      28.48         18.51         0 \r\n 2021          143           16.38144      28.42         18.29         15.748 \r\n 2021          144           19.28448      26.94         15.21         0 \r\n 2021          145           23.74272      29.01         16.89         0 \r\n 2021          146           26.79264      22.91         9.85          0 \r\n 2021          147           5.733504      15.63         5.604         19.558 \r\n 2021          148           10.25568      10.55         4.228         0 \r\n 2021          149           22.21344      17.24         0.358         0 \r\n 2021          150           5.440608      14.17         8.71          8.382 \r\n 2021          151           17.26272      25.86         7.823         0 \r\n 2021          152           19.04256      27.14         6.491         0 \r\n 2021          153           22.30848      28.12         9.85          0 \r\n 2021          154           22.36896      31.09         12.68         0 \r\n 2021          155           27.15552      34.5          18.07         0 \r\n 2021          156           27.25056      34.77         19.6          0 \r\n 2021          157           28.39968      30.56         18.12         0 \r\n 2021          158           26.38656      32.41         19.35         0 \r\n 2021          159           25.0992       33.31         18.27         0 \r\n 2021          160           27.15552      33.51         18.18         0 \r\n 2021          161           25.58304      35.16         19.1          0 \r\n 2021          162           15.58656      29.17         16.95         2.54 \r\n 2021          163           30.10176      30.79         11.61         0 \r\n 2021          164           28.67616      33.56         13.08         0 \r\n 2021          165           24.2352       30.96         17.27         0 \r\n 2021          166           29.79936      32.4          12.77         0 \r\n 2021          167           24.1488       33.5          17.32         8.636 \r\n 2021          168           22.30848      35.63         21.06         0.254 \r\n 2021          169           25.38432      33.82         15            0 \r\n 2021          170           25.62624      28.33         14.36         0 \r\n 2021          171           16.3728       25.84         14.17         5.842 \r\n 2021          172           28.97856      21.49         9.33          0 \r\n 2021          173           22.68864      27.48         7.328         3.81 \r\n 2021          174           19.99296      31.16         14.39         0 \r\n 2021          175           17.064        30.86         19.4          0.762 \r\n 2021          176           17.08992      29.24         16.08         1.016 \r\n 2021          177           7.83648       21.39         17.56         6.604 \r\n 2021          178           22.45536      27.29         14.2          0 \r\n 2021          179           21.41856      28.52         15.5          0 \r\n 2021          180           23.89824      28.09         15.58         0 \r\n 2021          181           23.94144      30.07         14.15         0 \r\n 2021          182           26.32608      29.84         14.01         0 \r\n 2021          183           24.44256      30.39         16.67         0 \r\n 2021          184           25.12512      30.54         15.13         0 \r\n 2021          185           26.6112       31.6          18.14         0 \r\n 2021          186           24.54624      33.18         20.13         0 \r\n 2021          187           19.12032      31.59         19.08         2.032 \r\n 2021          188           20.3904       23.25         12.6          0 \r\n 2021          189           17.43552      22.66         10.71         1.778 \r\n 2021          190           17.96256      26.11         17.07         6.096 \r\n 2021          191           4.975776      19.7          15.57         32.004 \r\n 2021          192           26.8704       26.36         13.79         0 \r\n 2021          193           27.31968      26.82         10.67         0 \r\n 2021          194           17.17632      27.29         12.26         0 \r\n 2021          195           9.60768       25.28         15.37         18.542 \r\n 2021          196           26.3088       26.15         11.85         0.254 \r\n 2021          197           26.2224       26.23         12.94         0 \r\n 2021          198           24.55488      27.53         14.5          0 \r\n 2021          199           24.73632      28.46         13.97         0 \r\n 2021          200           26.06688      29.73         12.6          0 \r\n 2021          201           24.81408      29.69         13.97         0 \r\n 2021          202           22.7664       28.59         14.65         0 \r\n 2021          203           18.06624      28.79         18.05         0 \r\n 2021          204           25.49664      31.48         18.55         0 \r\n 2021          205           25.43616      31.53         17.85         0 \r\n 2021          206           24.69312      31.34         14.68         0 \r\n 2021          207           22.90464      30.32         17.91         0.254 \r\n 2021          208           24.39072      33.41         18.46         0 \r\n 2021          209           23.96736      33.84         20.55         0 \r\n 2021          210           20.3472       29.23         17.79         0 \r\n 2021          211           5.894208      22.67         14.96         18.542 \r\n 2021          212           17.29728      28.12         14.2          0 \r\n 2021          213           18.89568      24.88         11.16         0 \r\n 2021          214           20.39904      26.74         9.7           0 \r\n 2021          215           19.46592      26.4          11.61         0 \r\n 2021          216           20.50272      25.7          11.41         0 \r\n 2021          217           19.38816      28.73         17.38         3.048 \r\n 2021          218           22.62816      28.08         16.86         5.08 \r\n 2021          219           12.40704      27.48         21.27         0 \r\n 2021          220           13.49568      26.24         17.35         0 \r\n 2021          221           23.65632      29.61         13.79         0 \r\n 2021          222           21.9888       31.58         18.75         0 \r\n 2021          223           23.8032       29.36         16.42         0 \r\n 2021          224           23.79456      27.32         12.68         0 \r\n 2021          225           25.11648      27.22         10.19         0 \r\n 2021          226           25.08192      28.45         8.14          0 \r\n 2021          227           24.77952      27.67         10.41         0 \r\n 2021          228           23.40576      28.5          13.64         0 \r\n 2021          229           20.39904      30.11         17.33         0 \r\n 2021          230           21.80736      29.67         18.08         0 \r\n 2021          231           20.5632       30.43         17.87         0 \r\n 2021          232           12.66624      29.13         18.14         9.652 \r\n 2021          233           24.48576      23.75         10.59         0 \r\n 2021          234           19.53504      25.29         10.36         0 \r\n 2021          235           15.30144      30.08         18.92         0 \r\n 2021          236           14.43744      29.58         20.64         0.508 \r\n 2021          237           16.90848      29.57         17.11         0 \r\n 2021          238           8.64          26.39         16.95         4.572 \r\n 2021          239           12.21696      30.28         18.85         56.134 \r\n 2021          240           12.56256      30.19         18.24         11.43 \r\n 2021          241           19.72512      27.15         14.29         2.032 \r\n 2021          242           19.7856       27.17         12.03         9.398 \r\n 2021          243           18.69696      25.7          15.06         2.794 \r\n 2021          244           20.54592      25.4          11.29         0 \r\n 2021          245           3.048192      19.32         15.93         21.336 \r\n 2021          246           6.560352      22.63         16.29         0 \r\n 2021          247           18.50688      26.03         12.52         0 \r\n 2021          248           19.3968       27.32         9.92          0 \r\n 2021          249           16.83936      29.29         10.02         0 \r\n 2021          250           17.03808      25.4          10.06         0 \r\n 2021          251           17.67744      25.1          7.742         0 \r\n 2021          252           18.67968      24.72         7.551         0 \r\n 2021          253           16.10496      28.02         10.28         0 \r\n 2021          254           15.34464      30.62         13.45         0 \r\n 2021          255           12.9168       24.6          14.72         0 \r\n 2021          256           9.95328       25.38         13.11         0 \r\n 2021          257           10.69632      22.15         9.62          1.016 \r\n 2021          258           17.12448      25.15         7.338         0 \r\n 2021          259           18.99936      30.87         17            0 \r\n 2021          260           16.53696      23.58         9.48          7.366 \r\n 2021          261           17.28         28.37         7.843         0 \r\n 2021          262           17.64288      30.59         18.15         0 \r\n 2021          263           5.368032      21.67         8.75          9.652 \r\n 2021          264           18.7056       21.39         5.238         0 \r\n 2021          265           19.2672       21.98         2.43          0 \r\n 2021          266           18.62784      24.58         4.432         0 \r\n 2021          267           12.32928      21.73         2.997         0.254 \r\n 2021          268           18.37728      25.76         0.012         0 \r\n 2021          269           17.47008      30.64         11.2          0 \r\n 2021          270           17.55648      30.83         10.98         0 \r\n 2021          271           17.09856      31.5          11.32         0 \r\n 2021          272           11.664        28.87         13.06         0 \r\n 2021          273           7.6464        25.92         15.45         68.072 \r\n 2021          274           8.6832        23.96         14.29         4.572 \r\n 2021          275           3.480192      19.26         14.16         0 \r\n 2021          276           17.00352      25.29         8.24          0 \r\n 2021          277           16.59744      26.18         6.168         0 \r\n 2021          278           16.17408      24.15         7.359         0 \r\n 2021          279           8.56224       22.07         9.9           0 \r\n 2021          280           8.83008       23.88         13.28         0 \r\n 2021          281           14.43744      27.52         11.57         0 \r\n 2021          282           7.76736       25.96         14.32         0 \r\n 2021          283           7.63776       17.61         6.219         0 \r\n 2021          284           14.3424       22.99         5.26          0 \r\n 2021          285           14.7744       22.4          4.108         0 \r\n 2021          286           10.73952      19.91         7.056         12.446 \r\n 2021          287           13.67712      14.42         2.492         0 \r\n 2021          288           14.92128      15            0.823         0 \r\n 2021          289           14.67936      18.29        -1.92          0 \r\n 2021          290           14.32512      22.83         0.924         0 \r\n 2021          291           14.23872      24.09         6.016         0 \r\n 2021          292           12.49344      23.45         9.27          0 \r\n 2021          293           2.2032        14.8          2.784         0.508 \r\n 2021          294           8.71776       10.82        -0.036         0 \r\n 2021          295           7.05024       9.27         -2.012         0.508 \r\n 2021          296           12.6576       11.88        -2.507         0 \r\n 2021          297           1.770336      6.814         3.946         8.382 \r\n 2021          298           12.85632      11.08         1.551         0 \r\n 2021          299           9.59904       13.02         3.078         0 \r\n 2021          300           1.776384      10.95         7.955         25.654 \r\n 2021          301           4.57488       10.89         6.442         6.35 \r\n 2021          302           12.51072      14.64         0.55          0 \r\n 2021          303           12.24288      17.2         -2.75          0 \r\n 2021          304           11.90592      8.34         -4.189         0 \r\n 2021          305           7.5168        7.258        -5.568         0 \r\n 2021          306           11.89728      6.905        -7.841         0 \r\n 2021          307           4.559328      7.843        -4.898         0 \r\n 2021          308           5.85792       10.98        -2.851         0 \r\n 2021          309           9.72864       16.71         3.007         0 \r\n 2021          310           10.91232      18.94         1.672         0 \r\n 2021          311           8.93376       17.04         5.624         0 \r\n 2021          312           10.48896      15.47         2.006         0 \r\n 2021          313           5.90112       11.77         0.994         0 \r\n 2021          314           1.137024      8.35          2.37          6.858 \r\n 2021          315           8.5968        7.904        -0.806         0 \r\n 2021          316           4.375296     -0.756        -2.648         0 \r\n 2021          317           4.352832      4.057        -4.25          0.254 \r\n 2021          318           8.53632       2.633        -3.946         0 \r\n 2021          319           7.81056       5.684        -2.082         0 \r\n 2021          320           6.836832      17.56        -0.3           0 \r\n 2021          321           8.99424       6.158        -4.798         0 \r\n 2021          322           9.27072       0.469        -8.97          0 \r\n 2021          323           5.393952      7.814        -8.48          0 \r\n 2021          324           6.370272      10.1         -1.99          0 \r\n 2021          325           9.02016       3.664        -9.55          0 \r\n 2021          326           8.2512        6.007        -8.61          0 \r\n 2021          327           8.88192       16.43        -4.675         0.762 \r\n 2021          328           3.968352      10.09        -6.268         0 \r\n 2021          329           9.22752      -3.024        -11.74         0 \r\n 2021          330           5.360256      6.442        -7.668         0 \r\n 2021          331           8.48448       11.06        -5.132         0 \r\n 2021          332           6.71328       6.329        -8.64          0 \r\n 2021          333           8.13888       19.58        -1.444         0 \r\n 2021          334           8.43264       12.78        -3.46          0.254 \r\n 2021          335           5.739552      13.61         0.398         0.254 \r\n 2021          336           6.719328      12.33         0.55          0 \r\n 2021          337           8.01792       11.63        -2.648         0 \r\n 2021          338           1.910304      1.48         -4.96          0 \r\n 2021          339           3.986496      7.742        -3.116         0 \r\n 2021          340           8.28576      -2.74         -16.52         0 \r\n 2021          341           6.271776      2.784        -11.95         0 \r\n 2021          342           7.5168        1.715        -13.56         0 \r\n 2021          343           7.74144       10.6         -4.189         0 \r\n 2021          344           1.119744     -0.704        -4.412         3.048 \r\n 2021          345           8.38944      -1.838        -8.9           0.762 \r\n 2021          346           7.48224       3.825        -4.432         1.27 \r\n 2021          347           7.62912       6.512        -6.684         0 \r\n 2021          348           6.542208      5.4          -2.992         0 \r\n 2021          349           5.28768       17.85        -3.864         7.874 \r\n 2021          350           7.83648      -1.494        -9.42          0 \r\n 2021          351           4.167936     -0.159        -7.902         0 \r\n 2021          352           2.75184      -4.838        -10.56         0 \r\n 2021          353           6.092064      1.682        -10.75         0 \r\n 2021          354           6.689952     -0.796        -13.25         0 \r\n 2021          355           6.93792       0.975        -13.89         0 \r\n 2021          356           7.3872        6.521        -12.21         0 \r\n 2021          357           3.850848      4.795        -4.99          0 \r\n 2021          358           6.624288      12.06        -3.52          0 \r\n 2021          359           5.301504     -0.219        -9.27          0 \r\n 2021          360           1.454976      2.046        -10.54         0.254 \r\n 2021          361           7.45632       1.935        -10.89         0.254 \r\n 2021          362           6.421248      2.067        -17.13         0.254 \r\n 2021          363           6.46272      -6.562        -18.64         0 \r\n 2021          364           7.56          1.996        -14            0 \r\n 2021          365           2.277504     -8.17         -18.76         0 \r\n 2022          1             2.763936     -16.89        -22.35         0 \r\n 2022          2             8.13024      -7.77         -23.27         0 \r\n 2022          3             7.8624        8.89         -14.13         0 \r\n 2022          4             4.534272      4.997        -13.93         1.778 \r\n 2022          5             7.53408      -11.05        -19.21         0.508 \r\n 2022          6             8.02656      -17.15        -23.09         0 \r\n 2022          7             5.48208      -7.698        -21.78         0 \r\n 2022          8             7.05888       3.32         -13.51         0 \r\n 2022          9             8.82144      -5.892        -17.37         0 \r\n 2022          10            8.47584      -5.608        -15.87         0 \r\n 2022          11            8.14752       9.99         -10.44         0 \r\n 2022          12            7.83648       9.62         -2.507         0 \r\n 2022          13            8.0352        6.774        -5.02          0 \r\n 2022          14            2.074464     -1.09         -10.76         11.938 \r\n 2022          15            9.86688      -9.93         -19.96         0 \r\n 2022          16            7.8192        2.106        -18.7          0 \r\n 2022          17            7.85376       3.208        -8.58          0 \r\n 2022          18            9.34848       8.23         -10.54         0 \r\n 2022          19            9.92736      -10.54        -19.47         0 \r\n 2022          20            10.25568     -10.91        -23.8          0 \r\n 2022          21            8.25984      -3.854        -20.19         0 \r\n 2022          22            7.36992       3.594        -11.62         0 \r\n 2022          23            5.072544     -4.534        -17.95         0 \r\n 2022          24            10.03104     -0.756        -18.52         0 \r\n 2022          25            10.94688     -10.6         -23.83         0 \r\n 2022          26            10.22976      1.844        -23.19         0 \r\n 2022          27            5.392224      1.116        -18.03         0 \r\n 2022          28            10.76544     -2.466        -22.76         0 \r\n 2022          29            11.12832      7.782        -12.96         0 \r\n 2022          30            7.69824      -5.132        -12.11         0 \r\n 2022          31            8.28576       8.05         -9.85          0 \r\n 2022          32            8.65728       2.38         -13.03         0 \r\n 2022          33            9.8496       -12.37        -19.32         0 \r\n 2022          34            12.24288     -12.7         -22.33         0 \r\n 2022          35            12.28608     -9.06         -19.48         0 \r\n 2022          36            9.34848       7.622        -17.5          0 \r\n 2022          37            8.04384      -0.138        -13.39         0 \r\n 2022          38            10.91232      9.72         -13.35         0 \r\n 2022          39            9.29664       12.63        -4.656         0 \r\n 2022          40            9.52128       5.845        -4.148         0 \r\n 2022          41            7.17984       8.19         -11.81         4.318 \r\n 2022          42            7.67232       4.775        -16.14         0 \r\n 2022          43            7.35264      -8.57         -20.57         0 \r\n 2022          44            12.5712      -8.77         -19.89         0 \r\n 2022          45            14.04864     -2.335        -12.67         0 \r\n 2022          46            11.24064      9.84         -10.85         0 \r\n 2022          47            8.2944        1.056        -8.9           0 \r\n 2022          48            12.79584     -7.11         -16.26         0 \r\n 2022          49            9.91872       10.74        -12.64         0 \r\n 2022          50            13.9104      -0.442        -19.18         0 \r\n 2022          51            14.26464      15.52        -5.973         0 \r\n 2022          52            4.636224     -0.118        -9.53          0 \r\n 2022          53            9.46944      -9.5          -19.89         0 \r\n 2022          54            13.25376     -13.35        -22.31         0 \r\n 2022          55            8.01792      -12.24        -20.27         0 \r\n 2022          56            16.42464     -9.79         -23.95         0 \r\n 2022          57            16.47648      6.875        -15.57         0 \r\n 2022          58            16.32096      10.57        -10.24         0 \r\n 2022          59            16.26048      17.19        -5.324         0 \r\n 2022          60            15.12864      16.3          0.346         0 \r\n 2022          61            14.89536      15.14        -3.155         0 \r\n 2022          62            13.2624       1.439        -4.24          0 \r\n 2022          63            13.81536      10.08        -4.452         0 \r\n 2022          64            2.16864       7.612        -5.02          2.54 \r\n 2022          65            9.66816      -3.004        -6.258         0 \r\n 2022          66            18.24768      1.035        -9.48          0 \r\n 2022          67            17.83296      6.189        -9.32          0 \r\n 2022          68            13.05504     -4.087        -11.2          0 \r\n 2022          69            17.2368      -1.11         -12.21         0 \r\n 2022          70            18.90432     -7.598        -18.62         0 \r\n 2022          71            18.04896      0.934        -20.9          0 \r\n 2022          72            18.82656      15.29        -5.487         0 \r\n 2022          73            14.30784      7.944        -2.345         0 \r\n 2022          74            17.4096       14.71        -5.548         0 \r\n 2022          75            15.37056      18.66         1.734         0 \r\n 2022          76            5.272128      8.57         -1.028         0 \r\n 2022          77            12.26016      8.71         -5.182         0 \r\n 2022          78            19.25856      17.3         -8.05          0 \r\n 2022          79            18.08352      22.04        -2.568         0 \r\n 2022          80            11.016        18.27         4.896         5.334 \r\n 2022          81            4.02624       4.896         0.631         18.288 \r\n 2022          82            4.932576      1.116        -0.289         3.81 \r\n 2022          83            5.947776      4.826        -0.118         0 \r\n 2022          84            20.61504      8.41         -0.988         0 \r\n 2022          85            21.60864      2.106        -5.932         0 \r\n 2022          86            20.8656       2.228        -9.3           0 \r\n 2022          87            18.22176      7.703        -5.984         0 \r\n 2022          88            11.76768      8.67         -0.188         2.032 \r\n 2022          89            3.98736       1.156        -2.092         0.762 \r\n 2022          90            9.69408       1.4          -6.399         0.254 \r\n 2022          91            19.70784      10.97        -8.04          2.54 \r\n 2022          92            22.09248      12.58        -0.249         2.54 \r\n 2022          93            11.85408      14.85        -1.96          0 \r\n 2022          94            22.87872      13.29        -1.028         0 \r\n 2022          95            6.837696      11.54         1.43          1.016 \r\n 2022          96            6.086016      5.866         1.854         0.508 \r\n 2022          97            7.13664       2.288        -1.474         0.254 \r\n 2022          98            24.25248      8.43         -4.554         0 \r\n 2022          99            23.04288      14.87        -6.947         0 \r\n 2022          100           21.97152      17.73         2.168         0 \r\n 2022          101           22.92192      16.49        -2.943         0 \r\n 2022          102           7.75872       20.56         6.219         4.064 \r\n 2022          103           17.5824       7.419        -3.52          0 \r\n 2022          104           19.81152      5.361        -4.656         0 \r\n 2022          105           17.91072      6.43         -5.526         0 \r\n 2022          106           24.99552      7.318        -7.636         0 \r\n 2022          107           9.31392       1.258        -5.182         3.302 \r\n 2022          108           26.6544       6.36         -6.358         0 \r\n 2022          109           6.448032      4.694        -8.19          0 \r\n 2022          110           3.424032      10.12        -0.31          7.366 \r\n 2022          111           25.92864      17.24        -0.714         0 \r\n 2022          112           6.87312       24.84         9.53          0 \r\n 2022          113           19.41408      25.99         5.724         2.286 \r\n 2022          114           9.30528       9.92          1.622         0 \r\n 2022          115           14.05728      7.662        -4.098         0 \r\n 2022          116           26.0928       16.13        -7.028         0 \r\n 2022          117           19.82016      17.29         0.327         0 \r\n 2022          118           15.18912      21.92         3.198         0 \r\n 2022          119           4.690656      16.89         9.82          11.43 \r\n 2022          120           6.007392      12.57         4.542         9.144 \r\n 2022          121           8.70912       8.41          3.542         0 \r\n 2022          122           6.591456      6.35          3.078         5.334 \r\n 2022          123           15.7248       12.4          2.43          0.508 \r\n 2022          124           7.67232       11.5          0.044         0.254 \r\n 2022          125           6.647616      12.92         7.178         9.906 \r\n 2022          126           17.44416      18.73         6.824         0 \r\n 2022          127           24.65856      22.99         7.934         0 \r\n 2022          128           6.885216      15.41         10.65         3.302 \r\n 2022          129           21.06432      31            13.65         0 \r\n 2022          130           13.18464      26.33         13.55         0 \r\n 2022          131           14.4288       33.56         17.11         2.794 \r\n 2022          132           22.29984      35.81         17.02         2.032 \r\n 2022          133           22.15296      26.54         13.11         0 \r\n 2022          134           24.33888      26.2          9.69          0 \r\n 2022          135           20.06208      24.77         8.44          0 \r\n 2022          136           26.88768      27.54         7.167         0 \r\n 2022          137           6.097248      17.96         10.26         0.762 \r\n 2022          138           26.17056      29.47         8.15          0 \r\n 2022          139           20.41632      32.76         11.23         0.508 \r\n 2022          140           12.07008      17.38         6.875         0 \r\n 2022          141           11.12832      12.36         0.692         0 \r\n 2022          142           24.76224      16.33        -1.009         0 \r\n 2022          143           19.656        18.57         2.855         0 \r\n 2022          144           17.69472      19.6          7.662         3.556 \r\n 2022          145           3.574368      10.44         8.17          4.826 \r\n 2022          146           12.528        17.65         6.4           0 \r\n 2022          147           28.2096       26.56         5.057         0 \r\n 2022          148           27.48384      34.24         17.33         0 \r\n 2022          149           16.34688      30.29         18.15         0 \r\n 2022          150           14.35104      27.58         13.87         48.514 \r\n 2022          151           16.40736      19.72         9.89          0 \r\n 2022          152           19.06848      20.3          7.52          0.254 \r\n 2022          153           28.74528      25.85         6.875         0 \r\n 2022          154           26.14464      25.13         7.43          0.508 \r\n 2022          155           5.789664      17.45         12.59         1.016 \r\n 2022          156           9.12384       20.5          12.36         2.54 \r\n 2022          157           8.0784        20.58         15.42         0 \r\n 2022          158           21.01248      25.59         11.49         0.254 \r\n 2022          159           23.92416      25.2          13.25         0 \r\n 2022          160           15.80256      24.52         10.95         1.27 \r\n 2022          161           18.90432      25.4          14.98         0.762 \r\n 2022          162           17.928        30.74         15.48         1.778 \r\n 2022          163           27.57024      32.45         17.23         0.254 \r\n 2022          164           19.9584       35.5          22.92         1.524 \r\n 2022          165           25.1856       33.36         21.79         0 \r\n 2022          166           17.8416       27.32         16.54         1.778 \r\n 2022          167           30.43872      31.69         13.95         0 \r\n 2022          168           30.4992       31.55         13.58         0 \r\n 2022          169           27.87264      33.97         17.41         0 \r\n 2022          170           28.45152      34.02         21.23         0 \r\n 2022          171           28.39104      35.49         23.84         0 \r\n 2022          172           21.93696      30.23         16.81         0 \r\n 2022          173           30.20544      30.57         12.93         0 \r\n 2022          174           27.7776       31.48         15.57         0 \r\n 2022          175           27.8208       31.72         19.96         0 \r\n 2022          176           18.25632      26.24         12.1          9.906 \r\n 2022          177           29.65248      24.47         11.32         0 \r\n 2022          178           28.96128      29.17         8.44          0 \r\n 2022          179           28.30464      30.92         15.46         0 \r\n 2022          180           28.73664      34.79         13.28         0 \r\n 2022          181           15.88896      32.29         19.43         0 \r\n 2022          182           23.68224      28.66         16.22         0 \r\n 2022          183           25.272        29.26         14.36         0 \r\n 2022          184           29.01312      30.4          15.86         0 \r\n 2022          185           20.41632      31.24         20.89         14.224 \r\n 2022          186           17.39232      32.18         17.35         21.59 \r\n 2022          187           20.70144      27.26         17.12         0 \r\n 2022          188           16.70976      28.07         19.21         6.604 \r\n 2022          189           13.62528      27.62         18.65         0.508 \r\n 2022          190           24.64128      28.09         17.77         0 \r\n 2022          191           27.11232      31.56         19.21         0 \r\n 2022          192           22.23936      26.11         16.03         3.81 \r\n"
  },
  {
    "path": "scripts/yieldfx/baseline2db.py",
    "content": "\"\"\"Copy the provided baseline data to the database\"\"\"\n\nimport glob\nimport os\nfrom datetime import date, timedelta\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import convert_value, logger\n\nLOG = logger()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    pgconn = get_dbconn(\"coop\")\n    cursor = pgconn.cursor()\n\n    # Need to have a merge of windspeed and average rh\n    dsm = {}\n    ipgconn = get_dbconn(\"iem\")\n    icursor = ipgconn.cursor()\n    icursor.execute(\n        \"select day, avg_sknt, avg_rh from summary where iemid = 37004 \"\n        \"and day >= '1980-01-01' ORDER by day ASC\"\n    )\n    for row in icursor:\n        if row[1] is None or row[2] is None:\n            dsm[row[0]] = dsm[row[0] - timedelta(days=1)]\n        else:\n            dsm[row[0]] = {\n                \"wind_speed\": convert_value(row[1], \"knot\", \"meter / second\"),\n                \"avg_rh\": row[2],\n            }\n\n    os.chdir(\"baseline\")\n    for fn in glob.glob(\"*.met\"):\n        location = fn[:-4]\n        cursor.execute(\n            \"DELETE from yieldfx_baseline where station = %s\", (location,)\n        )\n        LOG.info(\"Removed %s rows for station: %s\", cursor.rowcount, location)\n        with open(fn, encoding=\"ascii\") as fh:\n            for line_in in fh:\n                line = line_in.strip()\n                if not line.startswith(\"19\") and not line.startswith(\"20\"):\n                    continue\n                tokens = line.split()\n                valid = date(int(tokens[0]), 1, 1) + timedelta(\n                    days=int(tokens[1]) - 1\n                )\n                cursor.execute(\n                    \"\"\"\n                INSERT into yieldfx_baseline (station, valid,\n                radn, maxt, mint, rain, windspeed, rh)\n                VALUES (%s, %s, %s, %s, %s, %s, %s, %s)\n                \"\"\",\n                    (\n                        location,\n                        valid,\n                        float(tokens[2]),\n                        float(tokens[3]),\n                        float(tokens[4]),\n                        float(tokens[5]),\n                        dsm[valid][\"wind_speed\"],\n                        dsm[valid][\"avg_rh\"],\n                    ),\n                )\n\n    cursor.close()\n    pgconn.commit()\n    pgconn.close()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/yieldfx/cfs2iemre_netcdf.py",
    "content": "\"\"\"Convert the CFS grib data into something mimicing IEMRE.\n\nThis will allow for downstream usage by PSIMS/Drydown. Run from RUN_NOON.sh\n\"\"\"\n\nimport os\nimport sys\nfrom datetime import date, datetime, timedelta\n\nimport click\nimport numpy as np\nimport pygrib\nfrom pyiem import iemre\nfrom pyiem.util import logger, ncopen, utc\nfrom scipy.interpolate import NearestNDInterpolator\nfrom tqdm import tqdm\n\nLOG = logger()\nDEFAULTS = {\"srad\": 0.0, \"high_tmpk\": 100.0, \"low_tmpk\": 400.0, \"p01d\": 0.0}\nMULTIPLIER = {\"p01d\": 6 * 3600.0}\nAGGFUNC = {\n    \"srad\": np.add,\n    \"high_tmpk\": np.maximum,\n    \"low_tmpk\": np.minimum,\n    \"p01d\": np.add,\n}\n\n\ndef merge(nc, valid, gribname, vname):\n    \"\"\"Merge in the grib data\"\"\"\n    fn = valid.strftime(\n        f\"/mesonet/ARCHIVE/data/%Y/%m/%d/model/cfs/%H/{gribname}\"\n        \".01.%Y%m%d%H.daily.grib2\"\n    )\n    if not os.path.isfile(fn):\n        LOG.info(\"Missing %s, aborting\", fn)\n        sys.exit()\n    grbs = pygrib.open(fn)\n    lats = None\n    lons = None\n    xi, yi = np.meshgrid(iemre.XAXIS, iemre.YAXIS)\n    ncvar = nc.variables[vname]\n    for grib in tqdm(\n        grbs, total=grbs.messages, desc=vname, disable=not sys.stdout.isatty()\n    ):\n        ftime = valid + timedelta(hours=grib.forecastTime)\n        # move us safely back to get into the proper date\n        cst = ftime - timedelta(hours=7)\n        if cst.year != valid.year:\n            continue\n        if lats is None:\n            lats, lons = grib.latlons()\n        vals = grib.values * MULTIPLIER.get(vname, 1)\n        nn = NearestNDInterpolator((lons.flat, lats.flat), vals.flat)\n        vals = nn(xi, yi)\n        tstep = iemre.daily_offset(cst.date())\n        current = ncvar[tstep, :, :]\n        if current.mask.all():\n            current[:, :] = DEFAULTS[vname]\n        ncvar[tstep, :, :] = AGGFUNC[vname](current, vals)\n\n    if vname != \"srad\":\n        return\n    # HACK so above, we added all the solar radiation data together, so we\n    # should divide this number by four to rectify it back to avg W m-2\n    for tstep in range(nc.variables[vname].shape[0]):\n        nc.variables[vname][tstep] = nc.variables[vname][tstep] / 4.0\n\n\ndef create_netcdf(valid):\n    \"\"\"Create and return the netcdf file\"\"\"\n    ncfn = \"/mesonet/data/iemre/temp_cfs_%s.nc\" % (valid.strftime(\"%Y%m%d%H\"),)\n    nc = ncopen(ncfn, \"w\")\n    nc.title = \"IEM Regridded CFS Member 1 Forecast %s\" % (valid.year,)\n    nc.platform = \"Grided Forecast\"\n    nc.description = \"IEM Regridded CFS on 0.125 degree grid\"\n    nc.institution = \"Iowa State University, Ames, IA, USA\"\n    nc.source = \"Iowa Environmental Mesonet\"\n    nc.project_id = \"IEM\"\n    nc.realization = 1\n    nc.Conventions = \"CF-1.0\"\n    nc.contact = \"Daryl Herzmann, akrherz@iastate.edu, 515-294-5978\"\n    nc.history = f\"{utc():%d %B %Y} Generated\"\n    nc.comment = \"No comment at this time\"\n\n    # Setup Dimensions\n    nc.createDimension(\"lat\", iemre.NY)\n    nc.createDimension(\"lon\", iemre.NX)\n    days = iemre.daily_offset(valid.replace(month=12, day=31)) + 1\n    nc.createDimension(\"time\", int(days))\n\n    # Setup Coordinate Variables\n    lat = nc.createVariable(\"lat\", float, (\"lat\",))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"Latitude\"\n    lat.standard_name = \"latitude\"\n    lat.axis = \"Y\"\n    lat[:] = iemre.YAXIS\n\n    lon = nc.createVariable(\"lon\", float, (\"lon\",))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"Longitude\"\n    lon.standard_name = \"longitude\"\n    lon.axis = \"X\"\n    lon[:] = iemre.XAXIS\n\n    tm = nc.createVariable(\"time\", float, (\"time\",))\n    tm.units = \"Days since %s-01-01 00:00:0.0\" % (valid.year,)\n    tm.long_name = \"Time\"\n    tm.standard_name = \"time\"\n    tm.axis = \"T\"\n    tm.calendar = \"gregorian\"\n    tm[:] = np.arange(0, int(days))\n\n    high = nc.createVariable(\n        \"high_tmpk\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    high.units = \"K\"\n    high.scale_factor = 0.01\n    high.long_name = \"2m Air Temperature Daily High\"\n    high.standard_name = \"2m Air Temperature\"\n    high.coordinates = \"lon lat\"\n\n    low = nc.createVariable(\n        \"low_tmpk\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    low.units = \"K\"\n    low.scale_factor = 0.01\n    low.long_name = \"2m Air Temperature Daily Low\"\n    low.standard_name = \"2m Air Temperature\"\n    low.coordinates = \"lon lat\"\n\n    p01d = nc.createVariable(\n        \"p01d\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    p01d.units = \"mm\"\n    p01d.scale_factor = 0.01\n    p01d.long_name = \"Precipitation\"\n    p01d.standard_name = \"Precipitation\"\n    p01d.coordinates = \"lon lat\"\n    p01d.description = \"Precipitation accumulation for the day\"\n\n    rsds = nc.createVariable(\n        \"srad\", np.uint16, (\"time\", \"lat\", \"lon\"), fill_value=65535\n    )\n    rsds.units = \"W m-2\"\n    rsds.scale_factor = 0.01\n    rsds.long_name = \"surface_downwelling_shortwave_flux_in_air\"\n    rsds.standard_name = \"surface_downwelling_shortwave_flux_in_air\"\n    rsds.coordinates = \"lon lat\"\n    rsds.description = \"Global Shortwave Irradiance\"\n\n    nc.close()\n    nc = ncopen(ncfn, \"a\")\n    return nc\n\n\ndef finalize(nc):\n    \"\"\"Cleanup after our work.\"\"\"\n    filename = nc.filepath()\n    # Close the netcdf file\n    nc.close()\n    # Rename it\n    newfilename = filename.replace(\"temp_\", \"\")\n    LOG.info(\"Renaming %s to %s\", filename, newfilename)\n    os.rename(filename, newfilename)\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), help=\"Specific date\")\ndef main(dt: datetime | None):\n    \"\"\"Go Main Go\"\"\"\n    if dt is not None:\n        today = dt.date()\n    else:\n        # Run for 12z two days ago\n        today = date.today() - timedelta(days=4)\n    LOG.info(\"running for today=%s\", today)\n    for hour in [0, 6, 12, 18]:\n        valid = utc(today.year, today.month, today.day, hour)\n        # Create netcdf file\n        nc = create_netcdf(valid)\n        # merge in the data\n        for gribname, vname in zip(\n            [\"dswsfc\", \"tmax\", \"tmin\", \"prate\"],\n            [\"srad\", \"high_tmpk\", \"low_tmpk\", \"p01d\"],\n            strict=False,\n        ):\n            merge(nc, valid, gribname, vname)\n        # profit\n        finalize(nc)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/yieldfx/cfs_tiler.py",
    "content": "\"\"\"Generate PSIMs Tiles.\n\nSeems to be unused at the moment.\n\"\"\"\n\nimport os\nfrom datetime import date, timedelta\n\nimport numpy as np\nfrom metpy.units import units\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import daily_offset, get_daily_ncname\nfrom pyiem.meteorology import gdd\nfrom pyiem.util import convert_value, logger, ncopen, utc\n\nLOG = logger()\n\n\ndef make_netcdf(fullpath, valid, west, south):\n    \"\"\"Make our netcdf\"\"\"\n    nc = ncopen(fullpath, \"w\")\n    # Dimensions\n    totaldays = (\n        valid.replace(month=12, day=31)\n        - valid.replace(year=1980, month=1, day=1)\n    ).days + 1\n    nc.createDimension(\"time\", totaldays)\n    nc.createDimension(\"lat\", 16)  # 0.125 grid over 2 degrees\n    nc.createDimension(\"lon\", 16)\n    # Coordinate Dimensions\n    time = nc.createVariable(\"time\", int, (\"time\",))\n    time.units = \"days since 1980-01-01 00:00:00\"\n    time[:] = np.arange(0, totaldays)\n\n    lat = nc.createVariable(\"lat\", float, (\"lat\"))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"latitude\"\n    lat[:] = np.arange(south + 0.125 / 2.0, south + 2.0, 0.125)\n\n    lon = nc.createVariable(\"lon\", float, (\"lon\"))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"longitude\"\n    lon[:] = np.arange(west + 0.125 / 2.0, west + 2.0, 0.125)\n\n    prcp = nc.createVariable(\n        \"prcp\", float, (\"time\", \"lat\", \"lon\"), fill_value=1e20\n    )\n    prcp.units = \"mm/day\"\n    prcp.long_name = \"daily total precipitation\"\n\n    tmax = nc.createVariable(\n        \"tmax\", float, (\"time\", \"lat\", \"lon\"), fill_value=1e20\n    )\n    tmax.units = \"degrees C\"\n    tmax.long_name = \"daily maximum temperature\"\n\n    tmin = nc.createVariable(\n        \"tmin\", float, (\"time\", \"lat\", \"lon\"), fill_value=1e20\n    )\n    tmin.units = \"degrees C\"\n    tmin.long_name = \"daily minimum temperature\"\n\n    gddf = nc.createVariable(\n        \"gdd_f\", float, (\"time\", \"lat\", \"lon\"), fill_value=1e20\n    )\n    gddf.units = \"degrees F\"\n    gddf.long_name = \"Growing Degree Days F (base 50 ceiling 86)\"\n\n    srad = nc.createVariable(\n        \"srad\", float, (\"time\", \"lat\", \"lon\"), fill_value=1e20\n    )\n    srad.units = \"MJ\"\n    srad.long_name = \"daylight average incident shortwave radiation\"\n\n    # did not do vp or cropland\n    nc.close()\n    nc = ncopen(fullpath, \"a\")\n    return nc\n\n\ndef replace_cfs(nc, valid, islice, jslice):\n    \"\"\"Copy CFS data into the given year.\"\"\"\n    tidx0 = (valid - date(1980, 1, 1)).days\n    tidx1 = (date(valid.year, 12, 31) - date(1980, 1, 1)).days\n    cfsnc = ncopen(valid.strftime(\"/mesonet/data/iemre/cfs_%Y%m%d%H.nc\"))\n    tidx = daily_offset(valid + timedelta(days=1))\n    tslice = slice(tidx0 + 1, tidx1 + 1)\n    # CFS is W m-2, we want MJ\n    nc.variables[\"srad\"][tslice, :, :] = (\n        cfsnc.variables[\"srad\"][tidx:, jslice, islice] * 86400.0 / 1000000.0\n    )\n    highc = convert_value(\n        cfsnc.variables[\"high_tmpk\"][tidx:, jslice, islice], \"degK\", \"degC\"\n    )\n    lowc = convert_value(\n        cfsnc.variables[\"low_tmpk\"][tidx:, jslice, islice], \"degK\", \"degC\"\n    )\n    nc.variables[\"tmax\"][tslice, :, :] = highc\n    nc.variables[\"tmin\"][tslice, :, :] = lowc\n    nc.variables[\"gdd_f\"][tslice, :, :] = gdd(\n        units(\"degC\") * highc, units(\"degC\") * lowc\n    )\n    nc.variables[\"prcp\"][tslice, :, :] = cfsnc.variables[\"p01d\"][\n        tidx:, jslice, islice\n    ]\n    cfsnc.close()\n\n\ndef copy_iemre(nc, fromyear, ncdate0, ncdate1, islice, jslice):\n    \"\"\"Copy IEMRE data from a given year to **inclusive** dates.\"\"\"\n    rencfn = get_daily_ncname(fromyear)\n    if not os.path.isfile(rencfn):\n        LOG.warning(\"reanalysis fn %s missing\", rencfn)\n        return\n    renc = ncopen(rencfn)\n    tidx0 = (ncdate0 - date(1980, 1, 1)).days\n    tidx1 = (ncdate1 - date(1980, 1, 1)).days\n    tslice = slice(tidx0, tidx1 + 1)\n    # time steps to fill\n    tsteps = (tidx1 - tidx0) + 1\n    # figure out the slice\n    if ncdate0.strftime(\"%m%d\") == \"0101\":\n        retslice = slice(0, tsteps)\n    else:\n        retslice = slice(0 - tsteps, None)\n    highc = convert_value(\n        renc.variables[\"high_tmpk\"][retslice, jslice, islice], \"degK\", \"degC\"\n    )\n    lowc = convert_value(\n        renc.variables[\"low_tmpk\"][retslice, jslice, islice], \"degK\", \"degC\"\n    )\n    nc.variables[\"tmax\"][tslice, :, :] = highc\n    nc.variables[\"tmin\"][tslice, :, :] = lowc\n    nc.variables[\"gdd_f\"][tslice, :, :] = gdd(\n        units(\"degC\") * highc, units(\"degC\") * lowc\n    )\n    nc.variables[\"prcp\"][tslice, :, :] = renc.variables[\"p01d\"][\n        retslice, jslice, islice\n    ]\n    for rt, nt in zip(\n        list(\n            range(\n                retslice.start, 0 if retslice.stop is None else retslice.stop\n            )\n        ),\n        list(range(tslice.start, tslice.stop)),\n        strict=False,\n    ):\n        # IEMRE power_swdn is MJ, test to see if data exists\n        srad = renc.variables[\"power_swdn\"][rt, jslice, islice]\n        # All or nothing\n        if np.isnan(np.mean(srad)) or srad.mask.any():\n            # IEMRE rsds uses W m-2, we want MJ\n            srad = (\n                renc.variables[\"rsds\"][rt, jslice, islice]\n                * 86400.0\n                / 1000000.0\n            )\n        nc.variables[\"srad\"][nt, :, :] = srad\n    renc.close()\n\n\ndef tile_extraction(nc, valid, west, south):\n    \"\"\"Do our tile extraction\"\"\"\n    # update model metadata\n    nc.valid = f\"CFS model: {valid:%Y-%m-%dT%H:%M:%S}Z\"\n    i, j = get_nav(\"IEMRE\", \"conus\").find_ij(west, south)\n    islice = slice(i, i + 16)\n    jslice = slice(j, j + 16)\n    for year in range(1980, valid.year + 1):\n        # Current year IEMRE should be substituted for this year's data\n        today = date(year, valid.month, valid.day)\n        copy_iemre(nc, valid.year, date(year, 1, 1), today, islice, jslice)\n\n        # replace CFS!\n        if year == valid.year:\n            replace_cfs(nc, valid.date(), islice, jslice)\n        else:\n            # replace rest of year with previous year\n            copy_iemre(\n                nc,\n                year,\n                today + timedelta(days=1),\n                date(year, 12, 31),\n                islice,\n                jslice,\n            )\n\n\ndef qc(nc):\n    \"\"\"Quick QC of the file.\"\"\"\n    for i, time in enumerate(nc.variables[\"time\"][:]):\n        ts = date(1980, 1, 1) + timedelta(days=int(time))\n        avgv = np.mean(nc.variables[\"srad\"][i, :, :])\n        if avgv > 0:\n            continue\n        LOG.info(\"ts: %s avgv: %s\", ts, avgv)\n    LOG.warning(\"done...\")\n\n\ndef workflow(valid, ncfn, west, south):\n    \"\"\"Make the magic happen\"\"\"\n    basedir = \"/mesonet/share/pickup/yieldfx/cfs{valid.hour:02.0f}\"\n    if not os.path.isdir(basedir):\n        os.makedirs(basedir)\n    nc = make_netcdf(f\"{basedir}/{ncfn}\", valid, west, south)\n    tile_extraction(nc, valid, west, south)\n    nc.close()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    # Run for the 12z file **two days ago**, the issue is that for a year\n    # without a leap day, previous year filling will ask for one too many\n    # days that currently does not have data\n    today = date.today() - timedelta(days=2)\n    for hour in [0, 6, 12, 18]:\n        valid = utc(today.year, today.month, today.day, hour)\n        # Create tiles to cover 12 state region\n        for west in np.arange(-104, -80, 2):\n            for south in np.arange(36, 50, 2):\n                # psims divides its data up into 2x2-degree tiles,\n                # with the first number in the file name being number\n                # of tiles since 90 degrees north, and the second number\n                # being number of tiles since -180 degrees eas\n                y = (90 - south) / 2\n                x = (180 - (0 - west)) / 2 + 1\n                ncfn = f\"clim_{y:04.0f}_{x:04.0f}.tile.nc4\"\n                workflow(valid, ncfn, west, south)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/yieldfx/cfs_tiler_lastyear.py",
    "content": "\"\"\"Generate PSIMs Tiles.\n\nRun from RUN_NOON.sh for the previous UTC date.\"\"\"\n\nimport os\nfrom datetime import date, timedelta\n\nimport numpy as np\nfrom metpy.units import units\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import daily_offset, get_daily_ncname\nfrom pyiem.meteorology import gdd\nfrom pyiem.util import convert_value, ncopen\n\n\ndef make_netcdf(fullpath, valid, west, south):\n    \"\"\"Make our netcdf\"\"\"\n    nc = ncopen(fullpath, \"w\")\n    # Dimensions\n    totaldays = (\n        valid.replace(month=12, day=31) - valid.replace(month=1, day=1)\n    ).days + 1\n    nc.createDimension(\"time\", totaldays)\n    nc.createDimension(\"lat\", 16)  # 0.125 grid over 2 degrees\n    nc.createDimension(\"lon\", 16)\n    # Coordinate Dimensions\n    time = nc.createVariable(\"time\", int, (\"time\",))\n    time.units = \"days since %s-01-01 00:00:00\" % (valid.year,)\n    time[:] = np.arange(0, totaldays)\n\n    lat = nc.createVariable(\"lat\", float, (\"lat\"))\n    lat.units = \"degrees_north\"\n    lat.long_name = \"latitude\"\n    lat[:] = np.arange(south + 0.125 / 2.0, south + 2.0, 0.125)\n\n    lon = nc.createVariable(\"lon\", float, (\"lon\"))\n    lon.units = \"degrees_east\"\n    lon.long_name = \"longitude\"\n    lon[:] = np.arange(west + 0.125 / 2.0, west + 2.0, 0.125)\n\n    prcp = nc.createVariable(\n        \"prcp\", float, (\"time\", \"lat\", \"lon\"), fill_value=1e20\n    )\n    prcp.units = \"mm/day\"\n    prcp.long_name = \"daily total precipitation\"\n\n    tmax = nc.createVariable(\n        \"tmax\", float, (\"time\", \"lat\", \"lon\"), fill_value=1e20\n    )\n    tmax.units = \"degrees C\"\n    tmax.long_name = \"daily maximum temperature\"\n\n    tmin = nc.createVariable(\n        \"tmin\", float, (\"time\", \"lat\", \"lon\"), fill_value=1e20\n    )\n    tmin.units = \"degrees C\"\n    tmin.long_name = \"daily minimum temperature\"\n\n    gddf = nc.createVariable(\n        \"gdd_f\", float, (\"time\", \"lat\", \"lon\"), fill_value=1e20\n    )\n    gddf.units = \"degrees F\"\n    gddf.long_name = \"Growing Degree Days F (base 50 ceiling 86)\"\n\n    srad = nc.createVariable(\n        \"srad\", float, (\"time\", \"lat\", \"lon\"), fill_value=1e20\n    )\n    srad.units = \"MJ\"\n    srad.long_name = \"daylight average incident shortwave radiation\"\n\n    # did not do vp or cropland\n    nc.close()\n    nc = ncopen(fullpath, \"a\")\n    return nc\n\n\ndef replace_cfs(nc, valid, islice, jslice):\n    \"\"\"Copy CFS data into the given year.\"\"\"\n    tidx0 = (valid - date(valid.year, 1, 1)).days\n    tidx1 = (date(valid.year, 12, 31) - date(valid.year, 1, 1)).days\n    cfsnc = ncopen(valid.strftime(\"/mesonet/data/iemre/cfs_%Y%m%d%H.nc\"))\n    tidx = daily_offset(valid + timedelta(days=1))\n    tslice = slice(tidx0 + 1, tidx1 + 1)\n    # CFS is W m-2, we want MJ\n    nc.variables[\"srad\"][tslice, :, :] = (\n        cfsnc.variables[\"srad\"][tidx:, jslice, islice] * 86400.0 / 1000000.0\n    )\n    highc = convert_value(\n        cfsnc.variables[\"high_tmpk\"][tidx:, jslice, islice], \"degK\", \"degC\"\n    )\n    lowc = convert_value(\n        cfsnc.variables[\"low_tmpk\"][tidx:, jslice, islice], \"degK\", \"degC\"\n    )\n    nc.variables[\"tmax\"][tslice, :, :] = highc\n    nc.variables[\"tmin\"][tslice, :, :] = lowc\n    nc.variables[\"gdd_f\"][tslice, :, :] = gdd(\n        units(\"degC\") * highc, units(\"degC\") * lowc\n    )\n    nc.variables[\"prcp\"][tslice, :, :] = cfsnc.variables[\"p01d\"][\n        tidx:, jslice, islice\n    ]\n    cfsnc.close()\n\n\ndef copy_iemre(nc, fromyear, ncdate0, ncdate1, islice, jslice):\n    \"\"\"Copy IEMRE data from a given year to **inclusive** dates.\"\"\"\n    rencfn = get_daily_ncname(fromyear)\n    if not os.path.isfile(rencfn):\n        print(\"reanalysis fn %s missing\" % (rencfn,))\n        return\n    renc = ncopen(rencfn)\n    tidx0 = (ncdate0 - date(fromyear, 1, 1)).days\n    tidx1 = (ncdate1 - date(fromyear, 1, 1)).days\n    tslice = slice(tidx0, tidx1 + 1)\n    # time steps to fill\n    tsteps = (tidx1 - tidx0) + 1\n    # figure out the slice\n    if ncdate0.strftime(\"%m%d\") == \"0101\":\n        retslice = slice(0, tsteps)\n    else:\n        retslice = slice(0 - tsteps, None)\n    highc = convert_value(\n        renc.variables[\"high_tmpk\"][retslice, jslice, islice], \"degK\", \"degC\"\n    )\n    lowc = convert_value(\n        renc.variables[\"low_tmpk\"][retslice, jslice, islice], \"degK\", \"degC\"\n    )\n    nc.variables[\"tmax\"][tslice, :, :] = highc\n    nc.variables[\"tmin\"][tslice, :, :] = lowc\n    nc.variables[\"gdd_f\"][tslice, :, :] = gdd(\n        units(\"degC\") * highc, units(\"degC\") * lowc\n    )\n    nc.variables[\"prcp\"][tslice, :, :] = renc.variables[\"p01d\"][\n        retslice, jslice, islice\n    ]\n    for rt, nt in zip(\n        list(\n            range(\n                retslice.start, 0 if retslice.stop is None else retslice.stop\n            )\n        ),\n        list(range(tslice.start, tslice.stop)),\n        strict=False,\n    ):\n        # IEMRE power_swdn is MJ, test to see if data exists\n        srad = renc.variables[\"power_swdn\"][rt, jslice, islice]\n        if srad.mask.any():\n            # IEMRE rsds uses W m-2, we want MJ\n            srad = (\n                renc.variables[\"rsds\"][rt, jslice, islice]\n                * 86400.0\n                / 1000000.0\n            )\n        nc.variables[\"srad\"][nt, :, :] = srad\n    renc.close()\n\n\ndef tile_extraction(nc, valid, west, south):\n    \"\"\"Do our tile extraction\"\"\"\n    # update model metadata\n    i, j = get_nav(\"IEMRE\", \"conus\").find_ij(west, south)\n    islice = slice(i, i + 16)\n    jslice = slice(j, j + 16)\n    # Current year IEMRE should be substituted for this year's data\n    copy_iemre(nc, valid.year, date(valid.year, 1, 1), valid, islice, jslice)\n    replace_cfs(nc, valid, islice, jslice)\n\n\ndef qc(nc):\n    \"\"\"Quick QC of the file.\"\"\"\n    for i, time in enumerate(nc.variables[\"time\"][:]):\n        ts = date(2019, 1, 1) + timedelta(days=int(time))\n        avgv = np.mean(nc.variables[\"srad\"][i, :, :])\n        if avgv > 0:\n            continue\n        print(\"ts: %s avgv: %s\" % (ts, avgv))\n\n\ndef workflow(valid, ncfn, west, south):\n    \"\"\"Make the magic happen\"\"\"\n    basedir = \"/mesonet/share/pickup/yieldfx/%s\" % (valid.year,)\n    if not os.path.isdir(basedir):\n        os.makedirs(basedir)\n    nc = make_netcdf(\"%s/%s\" % (basedir, ncfn), valid, west, south)\n    tile_extraction(nc, valid, west, south)\n    nc.close()\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    today = date.today() - timedelta(days=2)\n    # Create tiles to cover IA, IL, IN\n    for west in np.arange(-104, -80, 2):\n        for south in np.arange(36, 50, 2):\n            # psims divides its data up into 2x2-degree tiles,\n            # with the first number in the file name being number\n            # of tiles since 90 degrees north, and the second number\n            # being number of tiles since -180 degrees eas\n            ncfn = \"clim_%04i_%04i.tile.nc4\" % (\n                (90 - south) / 2,\n                (180 - (0 - west)) / 2 + 1,\n            )\n            workflow(today, ncfn, west, south)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/yieldfx/counties.csv",
    "content": "State,County,long,lat\nnm,harding,-104.0000,36.0000\nnm,harding,-104.0000,36.1250\nnm,union,-104.0000,36.2500\nnm,union,-104.0000,36.3750\nnm,union,-104.0000,36.5000\nnm,union,-104.0000,36.6250\nnm,union,-104.0000,36.7500\nnm,union,-104.0000,36.8750\nco,las animas,-104.0000,37.0000\nco,las animas,-104.0000,37.1250\nco,las animas,-104.0000,37.2500\nco,las animas,-104.0000,37.3750\nco,las animas,-104.0000,37.5000\nco,las animas,-104.0000,37.6250\nco,otero,-104.0000,37.7500\nco,otero,-104.0000,37.8750\nco,otero,-104.0000,38.0000\nco,otero,-104.0000,38.1250\nco,crowley,-104.0000,38.2500\nco,crowley,-104.0000,38.3750\nco,crowley,-104.0000,38.5000\nco,lincoln,-104.0000,38.6250\nco,lincoln,-104.0000,38.7500\nco,elbert,-104.0000,38.8750\nco,elbert,-104.0000,39.0000\nco,elbert,-104.0000,39.1250\nco,elbert,-104.0000,39.2500\nco,elbert,-104.0000,39.3750\nco,elbert,-104.0000,39.5000\nco,arapahoe,-104.0000,39.6250\nco,adams,-104.0000,39.7500\nco,adams,-104.0000,39.8750\nco,adams,-104.0000,40.0000\nco,morgan,-104.0000,40.1250\nco,morgan,-104.0000,40.2500\nco,morgan,-104.0000,40.3750\nco,morgan,-104.0000,40.5000\nco,weld,-104.0000,40.6250\nco,weld,-104.0000,40.7500\nco,weld,-104.0000,40.8750\nco,weld,-104.0000,41.0000\nne,kimball,-104.0000,41.1250\nne,kimball,-104.0000,41.2500\nne,kimball,-104.0000,41.3750\nne,banner,-104.0000,41.5000\nne,banner,-104.0000,41.6250\nne,scotts bluff,-104.0000,41.7500\nne,scotts bluff,-104.0000,41.8750\nne,scotts bluff,-104.0000,42.0000\nne,sioux,-104.0000,42.1250\nne,sioux,-104.0000,42.2500\nne,sioux,-104.0000,42.3750\nne,sioux,-104.0000,42.5000\nne,sioux,-104.0000,42.6250\nne,sioux,-104.0000,42.7500\nne,sioux,-104.0000,42.8750\nne,sioux,-104.0000,43.0000\nsd,fall river,-104.0000,43.1250\nsd,fall river,-104.0000,43.2500\nsd,fall river,-104.0000,43.3750\nsd,custer,-104.0000,43.5000\nsd,custer,-104.0000,43.6250\nsd,custer,-104.0000,43.7500\nsd,pennington,-104.0000,43.8750\nsd,pennington,-104.0000,44.0000\nsd,pennington,-104.0000,44.1250\nsd,lawrence,-104.0000,44.2500\nsd,lawrence,-104.0000,44.3750\nsd,lawrence,-104.0000,44.5000\nsd,butte,-104.0000,44.6250\nsd,butte,-104.0000,44.7500\nsd,butte,-104.0000,44.8750\nsd,butte,-104.0000,45.0000\nsd,butte,-104.0000,45.1250\nsd,harding,-104.0000,45.2500\nsd,harding,-104.0000,45.3750\nsd,harding,-104.0000,45.5000\nsd,harding,-104.0000,45.6250\nsd,harding,-104.0000,45.7500\nsd,harding,-104.0000,45.8750\nnd,bowman,-104.0000,46.0000\nnd,bowman,-104.0000,46.1250\nnd,bowman,-104.0000,46.2500\nnd,slope,-104.0000,46.3750\nnd,slope,-104.0000,46.5000\nnd,golden valley,-104.0000,46.6250\nnd,golden valley,-104.0000,46.7500\nnd,golden valley,-104.0000,46.8750\nnd,golden valley,-104.0000,47.0000\nnd,golden valley,-104.0000,47.1250\nnd,golden valley,-104.0000,47.2500\nnd,mckenzie,-104.0000,47.3750\nnd,mckenzie,-104.0000,47.5000\nnd,mckenzie,-104.0000,47.6250\nnd,mckenzie,-104.0000,47.7500\nnd,mckenzie,-104.0000,47.8750\nnd,williams,-104.0000,48.0000\nnd,williams,-104.0000,48.1250\nnd,williams,-104.0000,48.2500\nnd,williams,-104.0000,48.3750\nnd,williams,-104.0000,48.5000\nnd,williams,-104.0000,48.6250\nnd,divide,-104.0000,48.7500\nnd,divide,-104.0000,48.8750\nnm,harding,-103.8750,36.0000\nnm,harding,-103.8750,36.1250\nnm,union,-103.8750,36.2500\nnm,union,-103.8750,36.3750\nnm,union,-103.8750,36.5000\nnm,union,-103.8750,36.6250\nnm,union,-103.8750,36.7500\nnm,union,-103.8750,36.8750\nco,las animas,-103.8750,37.0000\nco,las animas,-103.8750,37.1250\nco,las animas,-103.8750,37.2500\nco,las animas,-103.8750,37.3750\nco,las animas,-103.8750,37.5000\nco,las animas,-103.8750,37.6250\nco,otero,-103.8750,37.7500\nco,otero,-103.8750,37.8750\nco,otero,-103.8750,38.0000\nco,otero,-103.8750,38.1250\nco,crowley,-103.8750,38.2500\nco,crowley,-103.8750,38.3750\nco,crowley,-103.8750,38.5000\nco,lincoln,-103.8750,38.6250\nco,lincoln,-103.8750,38.7500\nco,elbert,-103.8750,38.8750\nco,elbert,-103.8750,39.0000\nco,elbert,-103.8750,39.1250\nco,elbert,-103.8750,39.2500\nco,elbert,-103.8750,39.3750\nco,elbert,-103.8750,39.5000\nco,arapahoe,-103.8750,39.6250\nco,adams,-103.8750,39.7500\nco,adams,-103.8750,39.8750\nco,adams,-103.8750,40.0000\nco,morgan,-103.8750,40.1250\nco,morgan,-103.8750,40.2500\nco,morgan,-103.8750,40.3750\nco,morgan,-103.8750,40.5000\nco,weld,-103.8750,40.6250\nco,weld,-103.8750,40.7500\nco,weld,-103.8750,40.8750\nco,weld,-103.8750,41.0000\nne,kimball,-103.8750,41.1250\nne,kimball,-103.8750,41.2500\nne,kimball,-103.8750,41.3750\nne,banner,-103.8750,41.5000\nne,banner,-103.8750,41.6250\nne,scotts bluff,-103.8750,41.7500\nne,scotts bluff,-103.8750,41.8750\nne,scotts bluff,-103.8750,42.0000\nne,sioux,-103.8750,42.1250\nne,sioux,-103.8750,42.2500\nne,sioux,-103.8750,42.3750\nne,sioux,-103.8750,42.5000\nne,sioux,-103.8750,42.6250\nne,sioux,-103.8750,42.7500\nne,sioux,-103.8750,42.8750\nne,sioux,-103.8750,43.0000\nsd,fall river,-103.8750,43.1250\nsd,fall river,-103.8750,43.2500\nsd,fall river,-103.8750,43.3750\nsd,custer,-103.8750,43.5000\nsd,custer,-103.8750,43.6250\nsd,custer,-103.8750,43.7500\nsd,pennington,-103.8750,43.8750\nsd,pennington,-103.8750,44.0000\nsd,pennington,-103.8750,44.1250\nsd,lawrence,-103.8750,44.2500\nsd,lawrence,-103.8750,44.3750\nsd,lawrence,-103.8750,44.5000\nsd,butte,-103.8750,44.6250\nsd,butte,-103.8750,44.7500\nsd,butte,-103.8750,44.8750\nsd,butte,-103.8750,45.0000\nsd,butte,-103.8750,45.1250\nsd,harding,-103.8750,45.2500\nsd,harding,-103.8750,45.3750\nsd,harding,-103.8750,45.5000\nsd,harding,-103.8750,45.6250\nsd,harding,-103.8750,45.7500\nsd,harding,-103.8750,45.8750\nnd,bowman,-103.8750,46.0000\nnd,bowman,-103.8750,46.1250\nnd,bowman,-103.8750,46.2500\nnd,slope,-103.8750,46.3750\nnd,slope,-103.8750,46.5000\nnd,golden valley,-103.8750,46.6250\nnd,golden valley,-103.8750,46.7500\nnd,golden valley,-103.8750,46.8750\nnd,golden valley,-103.8750,47.0000\nnd,golden valley,-103.8750,47.1250\nnd,golden valley,-103.8750,47.2500\nnd,mckenzie,-103.8750,47.3750\nnd,mckenzie,-103.8750,47.5000\nnd,mckenzie,-103.8750,47.6250\nnd,mckenzie,-103.8750,47.7500\nnd,mckenzie,-103.8750,47.8750\nnd,williams,-103.8750,48.0000\nnd,williams,-103.8750,48.1250\nnd,williams,-103.8750,48.2500\nnd,williams,-103.8750,48.3750\nnd,williams,-103.8750,48.5000\nnd,williams,-103.8750,48.6250\nnd,divide,-103.8750,48.7500\nnd,divide,-103.8750,48.8750\nnm,harding,-103.7500,36.0000\nnm,union,-103.7500,36.1250\nnm,union,-103.7500,36.2500\nnm,union,-103.7500,36.3750\nnm,union,-103.7500,36.5000\nnm,union,-103.7500,36.6250\nnm,union,-103.7500,36.7500\nnm,union,-103.7500,36.8750\nco,las animas,-103.7500,37.0000\nco,las animas,-103.7500,37.1250\nco,las animas,-103.7500,37.2500\nco,las animas,-103.7500,37.3750\nco,las animas,-103.7500,37.5000\nco,las animas,-103.7500,37.6250\nco,otero,-103.7500,37.7500\nco,otero,-103.7500,37.8750\nco,otero,-103.7500,38.0000\nco,crowley,-103.7500,38.1250\nco,crowley,-103.7500,38.2500\nco,crowley,-103.7500,38.3750\nco,crowley,-103.7500,38.5000\nco,lincoln,-103.7500,38.6250\nco,lincoln,-103.7500,38.7500\nco,elbert,-103.7500,38.8750\nco,elbert,-103.7500,39.0000\nco,elbert,-103.7500,39.1250\nco,elbert,-103.7500,39.2500\nco,elbert,-103.7500,39.3750\nco,elbert,-103.7500,39.5000\nco,arapahoe,-103.7500,39.6250\nco,adams,-103.7500,39.7500\nco,adams,-103.7500,39.8750\nco,adams,-103.7500,40.0000\nco,morgan,-103.7500,40.1250\nco,morgan,-103.7500,40.2500\nco,morgan,-103.7500,40.3750\nco,morgan,-103.7500,40.5000\nco,weld,-103.7500,40.6250\nco,weld,-103.7500,40.7500\nco,weld,-103.7500,40.8750\nco,weld,-103.7500,41.0000\nne,kimball,-103.7500,41.1250\nne,kimball,-103.7500,41.2500\nne,kimball,-103.7500,41.3750\nne,banner,-103.7500,41.5000\nne,banner,-103.7500,41.6250\nne,scotts bluff,-103.7500,41.7500\nne,scotts bluff,-103.7500,41.8750\nne,scotts bluff,-103.7500,42.0000\nne,sioux,-103.7500,42.1250\nne,sioux,-103.7500,42.2500\nne,sioux,-103.7500,42.3750\nne,sioux,-103.7500,42.5000\nne,sioux,-103.7500,42.6250\nne,sioux,-103.7500,42.7500\nne,sioux,-103.7500,42.8750\nne,sioux,-103.7500,43.0000\nsd,fall river,-103.7500,43.1250\nsd,fall river,-103.7500,43.2500\nsd,fall river,-103.7500,43.3750\nsd,custer,-103.7500,43.5000\nsd,custer,-103.7500,43.6250\nsd,custer,-103.7500,43.7500\nsd,pennington,-103.7500,43.8750\nsd,pennington,-103.7500,44.0000\nsd,pennington,-103.7500,44.1250\nsd,lawrence,-103.7500,44.2500\nsd,lawrence,-103.7500,44.3750\nsd,lawrence,-103.7500,44.5000\nsd,butte,-103.7500,44.6250\nsd,butte,-103.7500,44.7500\nsd,butte,-103.7500,44.8750\nsd,butte,-103.7500,45.0000\nsd,butte,-103.7500,45.1250\nsd,harding,-103.7500,45.2500\nsd,harding,-103.7500,45.3750\nsd,harding,-103.7500,45.5000\nsd,harding,-103.7500,45.6250\nsd,harding,-103.7500,45.7500\nsd,harding,-103.7500,45.8750\nnd,bowman,-103.7500,46.0000\nnd,bowman,-103.7500,46.1250\nnd,bowman,-103.7500,46.2500\nnd,slope,-103.7500,46.3750\nnd,slope,-103.7500,46.5000\nnd,slope,-103.7500,46.6250\nnd,golden valley,-103.7500,46.7500\nnd,golden valley,-103.7500,46.8750\nnd,golden valley,-103.7500,47.0000\nnd,golden valley,-103.7500,47.1250\nnd,golden valley,-103.7500,47.2500\nnd,mckenzie,-103.7500,47.3750\nnd,mckenzie,-103.7500,47.5000\nnd,mckenzie,-103.7500,47.6250\nnd,mckenzie,-103.7500,47.7500\nnd,mckenzie,-103.7500,47.8750\nnd,mckenzie,-103.7500,48.0000\nnd,williams,-103.7500,48.1250\nnd,williams,-103.7500,48.2500\nnd,williams,-103.7500,48.3750\nnd,williams,-103.7500,48.5000\nnd,williams,-103.7500,48.6250\nnd,divide,-103.7500,48.7500\nnd,divide,-103.7500,48.8750\nnm,harding,-103.6250,36.0000\nnm,union,-103.6250,36.1250\nnm,union,-103.6250,36.2500\nnm,union,-103.6250,36.3750\nnm,union,-103.6250,36.5000\nnm,union,-103.6250,36.6250\nnm,union,-103.6250,36.7500\nnm,union,-103.6250,36.8750\nco,las animas,-103.6250,37.0000\nco,las animas,-103.6250,37.1250\nco,las animas,-103.6250,37.2500\nco,las animas,-103.6250,37.3750\nco,las animas,-103.6250,37.5000\nco,las animas,-103.6250,37.6250\nco,otero,-103.6250,37.7500\nco,otero,-103.6250,37.8750\nco,otero,-103.6250,38.0000\nco,crowley,-103.6250,38.1250\nco,crowley,-103.6250,38.2500\nco,crowley,-103.6250,38.3750\nco,crowley,-103.6250,38.5000\nco,lincoln,-103.6250,38.6250\nco,lincoln,-103.6250,38.7500\nco,lincoln,-103.6250,38.8750\nco,lincoln,-103.6250,39.0000\nco,lincoln,-103.6250,39.1250\nco,lincoln,-103.6250,39.2500\nco,lincoln,-103.6250,39.3750\nco,lincoln,-103.6250,39.5000\nco,washington,-103.6250,39.6250\nco,washington,-103.6250,39.7500\nco,washington,-103.6250,39.8750\nco,washington,-103.6250,40.0000\nco,morgan,-103.6250,40.1250\nco,morgan,-103.6250,40.2500\nco,morgan,-103.6250,40.3750\nco,morgan,-103.6250,40.5000\nco,weld,-103.6250,40.6250\nco,weld,-103.6250,40.7500\nco,weld,-103.6250,40.8750\nco,weld,-103.6250,41.0000\nne,kimball,-103.6250,41.1250\nne,kimball,-103.6250,41.2500\nne,kimball,-103.6250,41.3750\nne,banner,-103.6250,41.5000\nne,banner,-103.6250,41.6250\nne,scotts bluff,-103.6250,41.7500\nne,scotts bluff,-103.6250,41.8750\nne,scotts bluff,-103.6250,42.0000\nne,sioux,-103.6250,42.1250\nne,sioux,-103.6250,42.2500\nne,sioux,-103.6250,42.3750\nne,sioux,-103.6250,42.5000\nne,sioux,-103.6250,42.6250\nne,sioux,-103.6250,42.7500\nne,sioux,-103.6250,42.8750\nne,sioux,-103.6250,43.0000\nsd,fall river,-103.6250,43.1250\nsd,fall river,-103.6250,43.2500\nsd,fall river,-103.6250,43.3750\nsd,custer,-103.6250,43.5000\nsd,custer,-103.6250,43.6250\nsd,custer,-103.6250,43.7500\nsd,pennington,-103.6250,43.8750\nsd,pennington,-103.6250,44.0000\nsd,pennington,-103.6250,44.1250\nsd,lawrence,-103.6250,44.2500\nsd,lawrence,-103.6250,44.3750\nsd,lawrence,-103.6250,44.5000\nsd,butte,-103.6250,44.6250\nsd,butte,-103.6250,44.7500\nsd,butte,-103.6250,44.8750\nsd,butte,-103.6250,45.0000\nsd,butte,-103.6250,45.1250\nsd,harding,-103.6250,45.2500\nsd,harding,-103.6250,45.3750\nsd,harding,-103.6250,45.5000\nsd,harding,-103.6250,45.6250\nsd,harding,-103.6250,45.7500\nsd,harding,-103.6250,45.8750\nnd,bowman,-103.6250,46.0000\nnd,bowman,-103.6250,46.1250\nnd,bowman,-103.6250,46.2500\nnd,slope,-103.6250,46.3750\nnd,slope,-103.6250,46.5000\nnd,slope,-103.6250,46.6250\nnd,golden valley,-103.6250,46.7500\nnd,golden valley,-103.6250,46.8750\nnd,billings,-103.6250,47.0000\nnd,billings,-103.6250,47.1250\nnd,billings,-103.6250,47.2500\nnd,mckenzie,-103.6250,47.3750\nnd,mckenzie,-103.6250,47.5000\nnd,mckenzie,-103.6250,47.6250\nnd,mckenzie,-103.6250,47.7500\nnd,mckenzie,-103.6250,47.8750\nnd,mckenzie,-103.6250,48.0000\nnd,williams,-103.6250,48.1250\nnd,williams,-103.6250,48.2500\nnd,williams,-103.6250,48.3750\nnd,williams,-103.6250,48.5000\nnd,williams,-103.6250,48.6250\nnd,divide,-103.6250,48.7500\nnd,divide,-103.6250,48.8750\nnm,harding,-103.5000,36.0000\nnm,union,-103.5000,36.1250\nnm,union,-103.5000,36.2500\nnm,union,-103.5000,36.3750\nnm,union,-103.5000,36.5000\nnm,union,-103.5000,36.6250\nnm,union,-103.5000,36.7500\nnm,union,-103.5000,36.8750\nco,las animas,-103.5000,37.0000\nco,las animas,-103.5000,37.1250\nco,las animas,-103.5000,37.2500\nco,las animas,-103.5000,37.3750\nco,las animas,-103.5000,37.5000\nco,las animas,-103.5000,37.6250\nco,otero,-103.5000,37.7500\nco,otero,-103.5000,37.8750\nco,otero,-103.5000,38.0000\nco,otero,-103.5000,38.1250\nco,otero,-103.5000,38.2500\nco,kiowa,-103.5000,38.3750\nco,kiowa,-103.5000,38.5000\nco,lincoln,-103.5000,38.6250\nco,lincoln,-103.5000,38.7500\nco,lincoln,-103.5000,38.8750\nco,lincoln,-103.5000,39.0000\nco,lincoln,-103.5000,39.1250\nco,lincoln,-103.5000,39.2500\nco,lincoln,-103.5000,39.3750\nco,lincoln,-103.5000,39.5000\nco,washington,-103.5000,39.6250\nco,washington,-103.5000,39.7500\nco,washington,-103.5000,39.8750\nco,washington,-103.5000,40.0000\nco,morgan,-103.5000,40.1250\nco,morgan,-103.5000,40.2500\nco,morgan,-103.5000,40.3750\nco,morgan,-103.5000,40.5000\nco,logan,-103.5000,40.6250\nco,logan,-103.5000,40.7500\nco,logan,-103.5000,40.8750\nco,logan,-103.5000,41.0000\nne,kimball,-103.5000,41.1250\nne,kimball,-103.5000,41.2500\nne,kimball,-103.5000,41.3750\nne,banner,-103.5000,41.5000\nne,banner,-103.5000,41.6250\nne,scotts bluff,-103.5000,41.7500\nne,scotts bluff,-103.5000,41.8750\nne,scotts bluff,-103.5000,42.0000\nne,sioux,-103.5000,42.1250\nne,sioux,-103.5000,42.2500\nne,sioux,-103.5000,42.3750\nne,sioux,-103.5000,42.5000\nne,sioux,-103.5000,42.6250\nne,sioux,-103.5000,42.7500\nne,dawes,-103.5000,42.8750\nne,dawes,-103.5000,43.0000\nsd,fall river,-103.5000,43.1250\nsd,fall river,-103.5000,43.2500\nsd,fall river,-103.5000,43.3750\nsd,custer,-103.5000,43.5000\nsd,custer,-103.5000,43.6250\nsd,custer,-103.5000,43.7500\nsd,pennington,-103.5000,43.8750\nsd,pennington,-103.5000,44.0000\nsd,pennington,-103.5000,44.1250\nsd,lawrence,-103.5000,44.2500\nsd,meade,-103.5000,44.3750\nsd,meade,-103.5000,44.5000\nsd,butte,-103.5000,44.6250\nsd,butte,-103.5000,44.7500\nsd,butte,-103.5000,44.8750\nsd,butte,-103.5000,45.0000\nsd,butte,-103.5000,45.1250\nsd,harding,-103.5000,45.2500\nsd,harding,-103.5000,45.3750\nsd,harding,-103.5000,45.5000\nsd,harding,-103.5000,45.6250\nsd,harding,-103.5000,45.7500\nsd,harding,-103.5000,45.8750\nnd,bowman,-103.5000,46.0000\nnd,bowman,-103.5000,46.1250\nnd,bowman,-103.5000,46.2500\nnd,slope,-103.5000,46.3750\nnd,slope,-103.5000,46.5000\nnd,slope,-103.5000,46.6250\nnd,billings,-103.5000,46.7500\nnd,billings,-103.5000,46.8750\nnd,billings,-103.5000,47.0000\nnd,billings,-103.5000,47.1250\nnd,billings,-103.5000,47.2500\nnd,mckenzie,-103.5000,47.3750\nnd,mckenzie,-103.5000,47.5000\nnd,mckenzie,-103.5000,47.6250\nnd,mckenzie,-103.5000,47.7500\nnd,mckenzie,-103.5000,47.8750\nnd,mckenzie,-103.5000,48.0000\nnd,williams,-103.5000,48.1250\nnd,williams,-103.5000,48.2500\nnd,williams,-103.5000,48.3750\nnd,williams,-103.5000,48.5000\nnd,williams,-103.5000,48.6250\nnd,divide,-103.5000,48.7500\nnd,divide,-103.5000,48.8750\nnm,harding,-103.3750,36.0000\nnm,union,-103.3750,36.1250\nnm,union,-103.3750,36.2500\nnm,union,-103.3750,36.3750\nnm,union,-103.3750,36.5000\nnm,union,-103.3750,36.6250\nnm,union,-103.3750,36.7500\nnm,union,-103.3750,36.8750\nco,las animas,-103.3750,37.0000\nco,las animas,-103.3750,37.1250\nco,las animas,-103.3750,37.2500\nco,las animas,-103.3750,37.3750\nco,las animas,-103.3750,37.5000\nco,las animas,-103.3750,37.6250\nco,bent,-103.3750,37.7500\nco,bent,-103.3750,37.8750\nco,bent,-103.3750,38.0000\nco,bent,-103.3750,38.1250\nco,bent,-103.3750,38.2500\nco,kiowa,-103.3750,38.3750\nco,kiowa,-103.3750,38.5000\nco,lincoln,-103.3750,38.6250\nco,lincoln,-103.3750,38.7500\nco,lincoln,-103.3750,38.8750\nco,lincoln,-103.3750,39.0000\nco,lincoln,-103.3750,39.1250\nco,lincoln,-103.3750,39.2500\nco,lincoln,-103.3750,39.3750\nco,lincoln,-103.3750,39.5000\nco,washington,-103.3750,39.6250\nco,washington,-103.3750,39.7500\nco,washington,-103.3750,39.8750\nco,washington,-103.3750,40.0000\nco,washington,-103.3750,40.1250\nco,washington,-103.3750,40.2500\nco,washington,-103.3750,40.3750\nco,logan,-103.3750,40.5000\nco,logan,-103.3750,40.6250\nco,logan,-103.3750,40.7500\nco,logan,-103.3750,40.8750\nco,logan,-103.3750,41.0000\nne,cheyenne,-103.3750,41.1250\nne,cheyenne,-103.3750,41.2500\nne,cheyenne,-103.3750,41.3750\nne,banner,-103.3750,41.5000\nne,banner,-103.3750,41.6250\nne,scotts bluff,-103.3750,41.7500\nne,scotts bluff,-103.3750,41.8750\nne,scotts bluff,-103.3750,42.0000\nne,box butte,-103.3750,42.1250\nne,box butte,-103.3750,42.2500\nne,box butte,-103.3750,42.3750\nne,dawes,-103.3750,42.5000\nne,dawes,-103.3750,42.6250\nne,dawes,-103.3750,42.7500\nne,dawes,-103.3750,42.8750\nne,dawes,-103.3750,43.0000\nsd,fall river,-103.3750,43.1250\nsd,fall river,-103.3750,43.2500\nsd,fall river,-103.3750,43.3750\nsd,custer,-103.3750,43.5000\nsd,custer,-103.3750,43.6250\nsd,custer,-103.3750,43.7500\nsd,pennington,-103.3750,43.8750\nsd,pennington,-103.3750,44.0000\nsd,pennington,-103.3750,44.1250\nsd,meade,-103.3750,44.2500\nsd,meade,-103.3750,44.3750\nsd,meade,-103.3750,44.5000\nsd,butte,-103.3750,44.6250\nsd,butte,-103.3750,44.7500\nsd,butte,-103.3750,44.8750\nsd,butte,-103.3750,45.0000\nsd,butte,-103.3750,45.1250\nsd,harding,-103.3750,45.2500\nsd,harding,-103.3750,45.3750\nsd,harding,-103.3750,45.5000\nsd,harding,-103.3750,45.6250\nsd,harding,-103.3750,45.7500\nsd,harding,-103.3750,45.8750\nnd,bowman,-103.3750,46.0000\nnd,bowman,-103.3750,46.1250\nnd,bowman,-103.3750,46.2500\nnd,slope,-103.3750,46.3750\nnd,slope,-103.3750,46.5000\nnd,slope,-103.3750,46.6250\nnd,billings,-103.3750,46.7500\nnd,billings,-103.3750,46.8750\nnd,billings,-103.3750,47.0000\nnd,billings,-103.3750,47.1250\nnd,billings,-103.3750,47.2500\nnd,mckenzie,-103.3750,47.3750\nnd,mckenzie,-103.3750,47.5000\nnd,mckenzie,-103.3750,47.6250\nnd,mckenzie,-103.3750,47.7500\nnd,mckenzie,-103.3750,47.8750\nnd,mckenzie,-103.3750,48.0000\nnd,williams,-103.3750,48.1250\nnd,williams,-103.3750,48.2500\nnd,williams,-103.3750,48.3750\nnd,williams,-103.3750,48.5000\nnd,williams,-103.3750,48.6250\nnd,divide,-103.3750,48.7500\nnd,divide,-103.3750,48.8750\nnm,union,-103.2500,36.0000\nnm,union,-103.2500,36.1250\nnm,union,-103.2500,36.2500\nnm,union,-103.2500,36.3750\nnm,union,-103.2500,36.5000\nnm,union,-103.2500,36.6250\nnm,union,-103.2500,36.7500\nnm,union,-103.2500,36.8750\nco,las animas,-103.2500,37.0000\nco,las animas,-103.2500,37.1250\nco,las animas,-103.2500,37.2500\nco,las animas,-103.2500,37.3750\nco,las animas,-103.2500,37.5000\nco,las animas,-103.2500,37.6250\nco,bent,-103.2500,37.7500\nco,bent,-103.2500,37.8750\nco,bent,-103.2500,38.0000\nco,bent,-103.2500,38.1250\nco,bent,-103.2500,38.2500\nco,kiowa,-103.2500,38.3750\nco,kiowa,-103.2500,38.5000\nco,lincoln,-103.2500,38.6250\nco,lincoln,-103.2500,38.7500\nco,lincoln,-103.2500,38.8750\nco,lincoln,-103.2500,39.0000\nco,lincoln,-103.2500,39.1250\nco,lincoln,-103.2500,39.2500\nco,lincoln,-103.2500,39.3750\nco,lincoln,-103.2500,39.5000\nco,washington,-103.2500,39.6250\nco,washington,-103.2500,39.7500\nco,washington,-103.2500,39.8750\nco,washington,-103.2500,40.0000\nco,washington,-103.2500,40.1250\nco,washington,-103.2500,40.2500\nco,washington,-103.2500,40.3750\nco,logan,-103.2500,40.5000\nco,logan,-103.2500,40.6250\nco,logan,-103.2500,40.7500\nco,logan,-103.2500,40.8750\nco,logan,-103.2500,41.0000\nne,cheyenne,-103.2500,41.1250\nne,cheyenne,-103.2500,41.2500\nne,cheyenne,-103.2500,41.3750\nne,morrill,-103.2500,41.5000\nne,morrill,-103.2500,41.6250\nne,morrill,-103.2500,41.7500\nne,morrill,-103.2500,41.8750\nne,morrill,-103.2500,42.0000\nne,box butte,-103.2500,42.1250\nne,box butte,-103.2500,42.2500\nne,box butte,-103.2500,42.3750\nne,dawes,-103.2500,42.5000\nne,dawes,-103.2500,42.6250\nne,dawes,-103.2500,42.7500\nne,dawes,-103.2500,42.8750\nne,dawes,-103.2500,43.0000\nsd,fall river,-103.2500,43.1250\nsd,fall river,-103.2500,43.2500\nsd,fall river,-103.2500,43.3750\nsd,custer,-103.2500,43.5000\nsd,custer,-103.2500,43.6250\nsd,custer,-103.2500,43.7500\nsd,pennington,-103.2500,43.8750\nsd,pennington,-103.2500,44.0000\nsd,pennington,-103.2500,44.1250\nsd,meade,-103.2500,44.2500\nsd,meade,-103.2500,44.3750\nsd,meade,-103.2500,44.5000\nsd,butte,-103.2500,44.6250\nsd,butte,-103.2500,44.7500\nsd,butte,-103.2500,44.8750\nsd,butte,-103.2500,45.0000\nsd,butte,-103.2500,45.1250\nsd,harding,-103.2500,45.2500\nsd,harding,-103.2500,45.3750\nsd,harding,-103.2500,45.5000\nsd,harding,-103.2500,45.6250\nsd,harding,-103.2500,45.7500\nsd,harding,-103.2500,45.8750\nnd,bowman,-103.2500,46.0000\nnd,bowman,-103.2500,46.1250\nnd,bowman,-103.2500,46.2500\nnd,slope,-103.2500,46.3750\nnd,slope,-103.2500,46.5000\nnd,slope,-103.2500,46.6250\nnd,billings,-103.2500,46.7500\nnd,billings,-103.2500,46.8750\nnd,billings,-103.2500,47.0000\nnd,billings,-103.2500,47.1250\nnd,billings,-103.2500,47.2500\nnd,mckenzie,-103.2500,47.3750\nnd,mckenzie,-103.2500,47.5000\nnd,mckenzie,-103.2500,47.6250\nnd,mckenzie,-103.2500,47.7500\nnd,mckenzie,-103.2500,47.8750\nnd,mckenzie,-103.2500,48.0000\nnd,williams,-103.2500,48.1250\nnd,williams,-103.2500,48.2500\nnd,williams,-103.2500,48.3750\nnd,williams,-103.2500,48.5000\nnd,williams,-103.2500,48.6250\nnd,divide,-103.2500,48.7500\nnd,divide,-103.2500,48.8750\nnm,union,-103.1250,36.0000\nnm,union,-103.1250,36.1250\nnm,union,-103.1250,36.2500\nnm,union,-103.1250,36.3750\nnm,union,-103.1250,36.5000\nnm,union,-103.1250,36.6250\nnm,union,-103.1250,36.7500\nnm,union,-103.1250,36.8750\nnm,union,-103.1250,37.0000\nco,las animas,-103.1250,37.1250\nco,las animas,-103.1250,37.2500\nco,las animas,-103.1250,37.3750\nco,las animas,-103.1250,37.5000\nco,las animas,-103.1250,37.6250\nco,bent,-103.1250,37.7500\nco,bent,-103.1250,37.8750\nco,bent,-103.1250,38.0000\nco,bent,-103.1250,38.1250\nco,bent,-103.1250,38.2500\nco,kiowa,-103.1250,38.3750\nco,kiowa,-103.1250,38.5000\nco,cheyenne,-103.1250,38.6250\nco,cheyenne,-103.1250,38.7500\nco,cheyenne,-103.1250,38.8750\nco,cheyenne,-103.1250,39.0000\nco,kit carson,-103.1250,39.1250\nco,kit carson,-103.1250,39.2500\nco,kit carson,-103.1250,39.3750\nco,kit carson,-103.1250,39.5000\nco,washington,-103.1250,39.6250\nco,washington,-103.1250,39.7500\nco,washington,-103.1250,39.8750\nco,washington,-103.1250,40.0000\nco,washington,-103.1250,40.1250\nco,washington,-103.1250,40.2500\nco,washington,-103.1250,40.3750\nco,logan,-103.1250,40.5000\nco,logan,-103.1250,40.6250\nco,logan,-103.1250,40.7500\nco,logan,-103.1250,40.8750\nco,logan,-103.1250,41.0000\nne,cheyenne,-103.1250,41.1250\nne,cheyenne,-103.1250,41.2500\nne,cheyenne,-103.1250,41.3750\nne,morrill,-103.1250,41.5000\nne,morrill,-103.1250,41.6250\nne,morrill,-103.1250,41.7500\nne,morrill,-103.1250,41.8750\nne,morrill,-103.1250,42.0000\nne,box butte,-103.1250,42.1250\nne,box butte,-103.1250,42.2500\nne,box butte,-103.1250,42.3750\nne,dawes,-103.1250,42.5000\nne,dawes,-103.1250,42.6250\nne,dawes,-103.1250,42.7500\nne,dawes,-103.1250,42.8750\nne,dawes,-103.1250,43.0000\nsd,fall river,-103.1250,43.1250\nsd,fall river,-103.1250,43.2500\nsd,fall river,-103.1250,43.3750\nsd,custer,-103.1250,43.5000\nsd,custer,-103.1250,43.6250\nsd,custer,-103.1250,43.7500\nsd,pennington,-103.1250,43.8750\nsd,pennington,-103.1250,44.0000\nsd,pennington,-103.1250,44.1250\nsd,meade,-103.1250,44.2500\nsd,meade,-103.1250,44.3750\nsd,meade,-103.1250,44.5000\nsd,butte,-103.1250,44.6250\nsd,butte,-103.1250,44.7500\nsd,butte,-103.1250,44.8750\nsd,butte,-103.1250,45.0000\nsd,butte,-103.1250,45.1250\nsd,harding,-103.1250,45.2500\nsd,harding,-103.1250,45.3750\nsd,harding,-103.1250,45.5000\nsd,harding,-103.1250,45.6250\nsd,harding,-103.1250,45.7500\nsd,harding,-103.1250,45.8750\nnd,bowman,-103.1250,46.0000\nnd,bowman,-103.1250,46.1250\nnd,bowman,-103.1250,46.2500\nnd,slope,-103.1250,46.3750\nnd,slope,-103.1250,46.5000\nnd,slope,-103.1250,46.6250\nnd,stark,-103.1250,46.7500\nnd,stark,-103.1250,46.8750\nnd,billings,-103.1250,47.0000\nnd,billings,-103.1250,47.1250\nnd,billings,-103.1250,47.2500\nnd,mckenzie,-103.1250,47.3750\nnd,mckenzie,-103.1250,47.5000\nnd,mckenzie,-103.1250,47.6250\nnd,mckenzie,-103.1250,47.7500\nnd,mckenzie,-103.1250,47.8750\nnd,mckenzie,-103.1250,48.0000\nnd,mckenzie,-103.1250,48.1250\nnd,williams,-103.1250,48.2500\nnd,williams,-103.1250,48.3750\nnd,williams,-103.1250,48.5000\nnd,williams,-103.1250,48.6250\nnd,divide,-103.1250,48.7500\nnd,divide,-103.1250,48.8750\ntx,hartley,-103.0000,36.0000\ntx,dallam,-103.0000,36.1250\ntx,dallam,-103.0000,36.2500\ntx,dallam,-103.0000,36.3750\ntx,dallam,-103.0000,36.5000\nok,cimarron,-103.0000,36.6250\nok,cimarron,-103.0000,36.7500\nok,cimarron,-103.0000,36.8750\nco,baca,-103.0000,37.0000\nco,baca,-103.0000,37.1250\nco,baca,-103.0000,37.2500\nco,baca,-103.0000,37.3750\nco,baca,-103.0000,37.5000\nco,baca,-103.0000,37.6250\nco,bent,-103.0000,37.7500\nco,bent,-103.0000,37.8750\nco,bent,-103.0000,38.0000\nco,bent,-103.0000,38.1250\nco,bent,-103.0000,38.2500\nco,kiowa,-103.0000,38.3750\nco,kiowa,-103.0000,38.5000\nco,cheyenne,-103.0000,38.6250\nco,cheyenne,-103.0000,38.7500\nco,cheyenne,-103.0000,38.8750\nco,cheyenne,-103.0000,39.0000\nco,kit carson,-103.0000,39.1250\nco,kit carson,-103.0000,39.2500\nco,kit carson,-103.0000,39.3750\nco,kit carson,-103.0000,39.5000\nco,washington,-103.0000,39.6250\nco,washington,-103.0000,39.7500\nco,washington,-103.0000,39.8750\nco,washington,-103.0000,40.0000\nco,washington,-103.0000,40.1250\nco,washington,-103.0000,40.2500\nco,washington,-103.0000,40.3750\nco,logan,-103.0000,40.5000\nco,logan,-103.0000,40.6250\nco,logan,-103.0000,40.7500\nco,logan,-103.0000,40.8750\nco,logan,-103.0000,41.0000\nne,cheyenne,-103.0000,41.1250\nne,cheyenne,-103.0000,41.2500\nne,cheyenne,-103.0000,41.3750\nne,morrill,-103.0000,41.5000\nne,morrill,-103.0000,41.6250\nne,morrill,-103.0000,41.7500\nne,morrill,-103.0000,41.8750\nne,morrill,-103.0000,42.0000\nne,box butte,-103.0000,42.1250\nne,box butte,-103.0000,42.2500\nne,box butte,-103.0000,42.3750\nne,dawes,-103.0000,42.5000\nne,dawes,-103.0000,42.6250\nne,dawes,-103.0000,42.7500\nne,dawes,-103.0000,42.8750\nne,dawes,-103.0000,43.0000\nsd,shannon,-103.0000,43.1250\nsd,shannon,-103.0000,43.2500\nsd,shannon,-103.0000,43.3750\nsd,shannon,-103.0000,43.5000\nsd,custer,-103.0000,43.6250\nsd,custer,-103.0000,43.7500\nsd,pennington,-103.0000,43.8750\nsd,pennington,-103.0000,44.0000\nsd,pennington,-103.0000,44.1250\nsd,meade,-103.0000,44.2500\nsd,meade,-103.0000,44.3750\nsd,meade,-103.0000,44.5000\nsd,butte,-103.0000,44.6250\nsd,butte,-103.0000,44.7500\nsd,butte,-103.0000,44.8750\nsd,butte,-103.0000,45.0000\nsd,butte,-103.0000,45.1250\nsd,harding,-103.0000,45.2500\nsd,harding,-103.0000,45.3750\nsd,harding,-103.0000,45.5000\nsd,harding,-103.0000,45.6250\nsd,harding,-103.0000,45.7500\nsd,harding,-103.0000,45.8750\nnd,bowman,-103.0000,46.0000\nnd,bowman,-103.0000,46.1250\nnd,bowman,-103.0000,46.2500\nnd,slope,-103.0000,46.3750\nnd,slope,-103.0000,46.5000\nnd,slope,-103.0000,46.6250\nnd,stark,-103.0000,46.7500\nnd,stark,-103.0000,46.8750\nnd,dunn,-103.0000,47.0000\nnd,dunn,-103.0000,47.1250\nnd,dunn,-103.0000,47.2500\nnd,dunn,-103.0000,47.3750\nnd,dunn,-103.0000,47.5000\nnd,dunn,-103.0000,47.6250\nnd,mckenzie,-103.0000,47.7500\nnd,mckenzie,-103.0000,47.8750\nnd,mckenzie,-103.0000,48.0000\nnd,mckenzie,-103.0000,48.1250\nnd,williams,-103.0000,48.2500\nnd,williams,-103.0000,48.3750\nnd,williams,-103.0000,48.5000\nnd,williams,-103.0000,48.6250\nnd,divide,-103.0000,48.7500\nnd,divide,-103.0000,48.8750\ntx,hartley,-102.8750,36.0000\ntx,dallam,-102.8750,36.1250\ntx,dallam,-102.8750,36.2500\ntx,dallam,-102.8750,36.3750\ntx,dallam,-102.8750,36.5000\nok,cimarron,-102.8750,36.6250\nok,cimarron,-102.8750,36.7500\nok,cimarron,-102.8750,36.8750\nco,baca,-102.8750,37.0000\nco,baca,-102.8750,37.1250\nco,baca,-102.8750,37.2500\nco,baca,-102.8750,37.3750\nco,baca,-102.8750,37.5000\nco,baca,-102.8750,37.6250\nco,bent,-102.8750,37.7500\nco,bent,-102.8750,37.8750\nco,bent,-102.8750,38.0000\nco,bent,-102.8750,38.1250\nco,bent,-102.8750,38.2500\nco,kiowa,-102.8750,38.3750\nco,kiowa,-102.8750,38.5000\nco,cheyenne,-102.8750,38.6250\nco,cheyenne,-102.8750,38.7500\nco,cheyenne,-102.8750,38.8750\nco,cheyenne,-102.8750,39.0000\nco,kit carson,-102.8750,39.1250\nco,kit carson,-102.8750,39.2500\nco,kit carson,-102.8750,39.3750\nco,kit carson,-102.8750,39.5000\nco,washington,-102.8750,39.6250\nco,washington,-102.8750,39.7500\nco,washington,-102.8750,39.8750\nco,washington,-102.8750,40.0000\nco,washington,-102.8750,40.1250\nco,washington,-102.8750,40.2500\nco,washington,-102.8750,40.3750\nco,logan,-102.8750,40.5000\nco,logan,-102.8750,40.6250\nco,logan,-102.8750,40.7500\nco,logan,-102.8750,40.8750\nco,logan,-102.8750,41.0000\nne,cheyenne,-102.8750,41.1250\nne,cheyenne,-102.8750,41.2500\nne,cheyenne,-102.8750,41.3750\nne,morrill,-102.8750,41.5000\nne,morrill,-102.8750,41.6250\nne,morrill,-102.8750,41.7500\nne,morrill,-102.8750,41.8750\nne,morrill,-102.8750,42.0000\nne,box butte,-102.8750,42.1250\nne,box butte,-102.8750,42.2500\nne,box butte,-102.8750,42.3750\nne,dawes,-102.8750,42.5000\nne,dawes,-102.8750,42.6250\nne,dawes,-102.8750,42.7500\nne,dawes,-102.8750,42.8750\nne,dawes,-102.8750,43.0000\nsd,shannon,-102.8750,43.1250\nsd,shannon,-102.8750,43.2500\nsd,shannon,-102.8750,43.3750\nsd,shannon,-102.8750,43.5000\nsd,shannon,-102.8750,43.6250\nsd,custer,-102.8750,43.7500\nsd,pennington,-102.8750,43.8750\nsd,pennington,-102.8750,44.0000\nsd,pennington,-102.8750,44.1250\nsd,meade,-102.8750,44.2500\nsd,meade,-102.8750,44.3750\nsd,meade,-102.8750,44.5000\nsd,meade,-102.8750,44.6250\nsd,meade,-102.8750,44.7500\nsd,meade,-102.8750,44.8750\nsd,meade,-102.8750,45.0000\nsd,perkins,-102.8750,45.1250\nsd,perkins,-102.8750,45.2500\nsd,perkins,-102.8750,45.3750\nsd,perkins,-102.8750,45.5000\nsd,perkins,-102.8750,45.6250\nsd,perkins,-102.8750,45.7500\nsd,perkins,-102.8750,45.8750\nnd,adams,-102.8750,46.0000\nnd,adams,-102.8750,46.1250\nnd,adams,-102.8750,46.2500\nnd,hettinger,-102.8750,46.3750\nnd,hettinger,-102.8750,46.5000\nnd,hettinger,-102.8750,46.6250\nnd,stark,-102.8750,46.7500\nnd,stark,-102.8750,46.8750\nnd,dunn,-102.8750,47.0000\nnd,dunn,-102.8750,47.1250\nnd,dunn,-102.8750,47.2500\nnd,dunn,-102.8750,47.3750\nnd,dunn,-102.8750,47.5000\nnd,dunn,-102.8750,47.6250\nnd,mckenzie,-102.8750,47.7500\nnd,mckenzie,-102.8750,47.8750\nnd,mckenzie,-102.8750,48.0000\nnd,mckenzie,-102.8750,48.1250\nnd,williams,-102.8750,48.2500\nnd,mountrail,-102.8750,48.3750\nnd,mountrail,-102.8750,48.5000\nnd,burke,-102.8750,48.6250\nnd,burke,-102.8750,48.7500\nnd,burke,-102.8750,48.8750\ntx,hartley,-102.7500,36.0000\ntx,dallam,-102.7500,36.1250\ntx,dallam,-102.7500,36.2500\ntx,dallam,-102.7500,36.3750\ntx,dallam,-102.7500,36.5000\nok,cimarron,-102.7500,36.6250\nok,cimarron,-102.7500,36.7500\nok,cimarron,-102.7500,36.8750\nco,baca,-102.7500,37.0000\nco,baca,-102.7500,37.1250\nco,baca,-102.7500,37.2500\nco,baca,-102.7500,37.3750\nco,baca,-102.7500,37.5000\nco,baca,-102.7500,37.6250\nco,bent,-102.7500,37.7500\nco,bent,-102.7500,37.8750\nco,bent,-102.7500,38.0000\nco,bent,-102.7500,38.1250\nco,bent,-102.7500,38.2500\nco,kiowa,-102.7500,38.3750\nco,kiowa,-102.7500,38.5000\nco,cheyenne,-102.7500,38.6250\nco,cheyenne,-102.7500,38.7500\nco,cheyenne,-102.7500,38.8750\nco,cheyenne,-102.7500,39.0000\nco,kit carson,-102.7500,39.1250\nco,kit carson,-102.7500,39.2500\nco,kit carson,-102.7500,39.3750\nco,kit carson,-102.7500,39.5000\nco,yuma,-102.7500,39.6250\nco,yuma,-102.7500,39.7500\nco,yuma,-102.7500,39.8750\nco,yuma,-102.7500,40.0000\nco,yuma,-102.7500,40.1250\nco,yuma,-102.7500,40.2500\nco,yuma,-102.7500,40.3750\nco,logan,-102.7500,40.5000\nco,logan,-102.7500,40.6250\nco,logan,-102.7500,40.7500\nco,logan,-102.7500,40.8750\nco,logan,-102.7500,41.0000\nne,cheyenne,-102.7500,41.1250\nne,cheyenne,-102.7500,41.2500\nne,cheyenne,-102.7500,41.3750\nne,morrill,-102.7500,41.5000\nne,morrill,-102.7500,41.6250\nne,morrill,-102.7500,41.7500\nne,morrill,-102.7500,41.8750\nne,morrill,-102.7500,42.0000\nne,box butte,-102.7500,42.1250\nne,box butte,-102.7500,42.2500\nne,sheridan,-102.7500,42.3750\nne,sheridan,-102.7500,42.5000\nne,sheridan,-102.7500,42.6250\nne,sheridan,-102.7500,42.7500\nne,sheridan,-102.7500,42.8750\nne,sheridan,-102.7500,43.0000\nsd,shannon,-102.7500,43.1250\nsd,shannon,-102.7500,43.2500\nsd,shannon,-102.7500,43.3750\nsd,shannon,-102.7500,43.5000\nsd,shannon,-102.7500,43.6250\nsd,pennington,-102.7500,43.7500\nsd,pennington,-102.7500,43.8750\nsd,pennington,-102.7500,44.0000\nsd,pennington,-102.7500,44.1250\nsd,meade,-102.7500,44.2500\nsd,meade,-102.7500,44.3750\nsd,meade,-102.7500,44.5000\nsd,meade,-102.7500,44.6250\nsd,meade,-102.7500,44.7500\nsd,meade,-102.7500,44.8750\nsd,meade,-102.7500,45.0000\nsd,perkins,-102.7500,45.1250\nsd,perkins,-102.7500,45.2500\nsd,perkins,-102.7500,45.3750\nsd,perkins,-102.7500,45.5000\nsd,perkins,-102.7500,45.6250\nsd,perkins,-102.7500,45.7500\nsd,perkins,-102.7500,45.8750\nnd,adams,-102.7500,46.0000\nnd,adams,-102.7500,46.1250\nnd,adams,-102.7500,46.2500\nnd,hettinger,-102.7500,46.3750\nnd,hettinger,-102.7500,46.5000\nnd,hettinger,-102.7500,46.6250\nnd,stark,-102.7500,46.7500\nnd,stark,-102.7500,46.8750\nnd,dunn,-102.7500,47.0000\nnd,dunn,-102.7500,47.1250\nnd,dunn,-102.7500,47.2500\nnd,dunn,-102.7500,47.3750\nnd,dunn,-102.7500,47.5000\nnd,dunn,-102.7500,47.6250\nnd,mckenzie,-102.7500,47.7500\nnd,mckenzie,-102.7500,47.8750\nnd,mckenzie,-102.7500,48.0000\nnd,mckenzie,-102.7500,48.1250\nnd,mountrail,-102.7500,48.2500\nnd,mountrail,-102.7500,48.3750\nnd,mountrail,-102.7500,48.5000\nnd,burke,-102.7500,48.6250\nnd,burke,-102.7500,48.7500\nnd,burke,-102.7500,48.8750\ntx,hartley,-102.6250,36.0000\ntx,dallam,-102.6250,36.1250\ntx,dallam,-102.6250,36.2500\ntx,dallam,-102.6250,36.3750\ntx,dallam,-102.6250,36.5000\nok,cimarron,-102.6250,36.6250\nok,cimarron,-102.6250,36.7500\nok,cimarron,-102.6250,36.8750\nco,baca,-102.6250,37.0000\nco,baca,-102.6250,37.1250\nco,baca,-102.6250,37.2500\nco,baca,-102.6250,37.3750\nco,baca,-102.6250,37.5000\nco,baca,-102.6250,37.6250\nco,prowers,-102.6250,37.7500\nco,prowers,-102.6250,37.8750\nco,prowers,-102.6250,38.0000\nco,prowers,-102.6250,38.1250\nco,prowers,-102.6250,38.2500\nco,kiowa,-102.6250,38.3750\nco,kiowa,-102.6250,38.5000\nco,cheyenne,-102.6250,38.6250\nco,cheyenne,-102.6250,38.7500\nco,cheyenne,-102.6250,38.8750\nco,cheyenne,-102.6250,39.0000\nco,kit carson,-102.6250,39.1250\nco,kit carson,-102.6250,39.2500\nco,kit carson,-102.6250,39.3750\nco,kit carson,-102.6250,39.5000\nco,yuma,-102.6250,39.6250\nco,yuma,-102.6250,39.7500\nco,yuma,-102.6250,39.8750\nco,yuma,-102.6250,40.0000\nco,yuma,-102.6250,40.1250\nco,yuma,-102.6250,40.2500\nco,yuma,-102.6250,40.3750\nco,phillips,-102.6250,40.5000\nco,phillips,-102.6250,40.6250\nco,sedgwick,-102.6250,40.7500\nco,sedgwick,-102.6250,40.8750\nco,sedgwick,-102.6250,41.0000\nne,cheyenne,-102.6250,41.1250\nne,cheyenne,-102.6250,41.2500\nne,cheyenne,-102.6250,41.3750\nne,garden,-102.6250,41.5000\nne,garden,-102.6250,41.6250\nne,garden,-102.6250,41.7500\nne,garden,-102.6250,41.8750\nne,garden,-102.6250,42.0000\nne,sheridan,-102.6250,42.1250\nne,sheridan,-102.6250,42.2500\nne,sheridan,-102.6250,42.3750\nne,sheridan,-102.6250,42.5000\nne,sheridan,-102.6250,42.6250\nne,sheridan,-102.6250,42.7500\nne,sheridan,-102.6250,42.8750\nsd,shannon,-102.6250,43.0000\nsd,shannon,-102.6250,43.1250\nsd,shannon,-102.6250,43.2500\nsd,shannon,-102.6250,43.3750\nsd,shannon,-102.6250,43.5000\nsd,shannon,-102.6250,43.6250\nsd,pennington,-102.6250,43.7500\nsd,pennington,-102.6250,43.8750\nsd,pennington,-102.6250,44.0000\nsd,pennington,-102.6250,44.1250\nsd,meade,-102.6250,44.2500\nsd,meade,-102.6250,44.3750\nsd,meade,-102.6250,44.5000\nsd,meade,-102.6250,44.6250\nsd,meade,-102.6250,44.7500\nsd,meade,-102.6250,44.8750\nsd,meade,-102.6250,45.0000\nsd,perkins,-102.6250,45.1250\nsd,perkins,-102.6250,45.2500\nsd,perkins,-102.6250,45.3750\nsd,perkins,-102.6250,45.5000\nsd,perkins,-102.6250,45.6250\nsd,perkins,-102.6250,45.7500\nsd,perkins,-102.6250,45.8750\nnd,adams,-102.6250,46.0000\nnd,adams,-102.6250,46.1250\nnd,adams,-102.6250,46.2500\nnd,hettinger,-102.6250,46.3750\nnd,hettinger,-102.6250,46.5000\nnd,hettinger,-102.6250,46.6250\nnd,stark,-102.6250,46.7500\nnd,stark,-102.6250,46.8750\nnd,dunn,-102.6250,47.0000\nnd,dunn,-102.6250,47.1250\nnd,dunn,-102.6250,47.2500\nnd,dunn,-102.6250,47.3750\nnd,dunn,-102.6250,47.5000\nnd,dunn,-102.6250,47.6250\nnd,dunn,-102.6250,47.7500\nnd,mountrail,-102.6250,47.8750\nnd,mckenzie,-102.6250,48.0000\nnd,mountrail,-102.6250,48.1250\nnd,mountrail,-102.6250,48.2500\nnd,mountrail,-102.6250,48.3750\nnd,mountrail,-102.6250,48.5000\nnd,burke,-102.6250,48.6250\nnd,burke,-102.6250,48.7500\nnd,burke,-102.6250,48.8750\ntx,hartley,-102.5000,36.0000\ntx,dallam,-102.5000,36.1250\ntx,dallam,-102.5000,36.2500\ntx,dallam,-102.5000,36.3750\ntx,dallam,-102.5000,36.5000\nok,cimarron,-102.5000,36.6250\nok,cimarron,-102.5000,36.7500\nok,cimarron,-102.5000,36.8750\nco,baca,-102.5000,37.0000\nco,baca,-102.5000,37.1250\nco,baca,-102.5000,37.2500\nco,baca,-102.5000,37.3750\nco,baca,-102.5000,37.5000\nco,baca,-102.5000,37.6250\nco,prowers,-102.5000,37.7500\nco,prowers,-102.5000,37.8750\nco,prowers,-102.5000,38.0000\nco,prowers,-102.5000,38.1250\nco,prowers,-102.5000,38.2500\nco,kiowa,-102.5000,38.3750\nco,kiowa,-102.5000,38.5000\nco,cheyenne,-102.5000,38.6250\nco,cheyenne,-102.5000,38.7500\nco,cheyenne,-102.5000,38.8750\nco,cheyenne,-102.5000,39.0000\nco,kit carson,-102.5000,39.1250\nco,kit carson,-102.5000,39.2500\nco,kit carson,-102.5000,39.3750\nco,kit carson,-102.5000,39.5000\nco,yuma,-102.5000,39.6250\nco,yuma,-102.5000,39.7500\nco,yuma,-102.5000,39.8750\nco,yuma,-102.5000,40.0000\nco,yuma,-102.5000,40.1250\nco,yuma,-102.5000,40.2500\nco,yuma,-102.5000,40.3750\nco,phillips,-102.5000,40.5000\nco,phillips,-102.5000,40.6250\nco,sedgwick,-102.5000,40.7500\nco,sedgwick,-102.5000,40.8750\nco,sedgwick,-102.5000,41.0000\nne,deuel,-102.5000,41.1250\nne,garden,-102.5000,41.2500\nne,garden,-102.5000,41.3750\nne,garden,-102.5000,41.5000\nne,garden,-102.5000,41.6250\nne,garden,-102.5000,41.7500\nne,garden,-102.5000,41.8750\nne,garden,-102.5000,42.0000\nne,sheridan,-102.5000,42.1250\nne,sheridan,-102.5000,42.2500\nne,sheridan,-102.5000,42.3750\nne,sheridan,-102.5000,42.5000\nne,sheridan,-102.5000,42.6250\nne,sheridan,-102.5000,42.7500\nne,sheridan,-102.5000,42.8750\nsd,shannon,-102.5000,43.0000\nsd,shannon,-102.5000,43.1250\nsd,shannon,-102.5000,43.2500\nsd,shannon,-102.5000,43.3750\nsd,shannon,-102.5000,43.5000\nsd,shannon,-102.5000,43.6250\nsd,pennington,-102.5000,43.7500\nsd,pennington,-102.5000,43.8750\nsd,pennington,-102.5000,44.0000\nsd,pennington,-102.5000,44.1250\nsd,meade,-102.5000,44.2500\nsd,meade,-102.5000,44.3750\nsd,meade,-102.5000,44.5000\nsd,meade,-102.5000,44.6250\nsd,meade,-102.5000,44.7500\nsd,meade,-102.5000,44.8750\nsd,meade,-102.5000,45.0000\nsd,perkins,-102.5000,45.1250\nsd,perkins,-102.5000,45.2500\nsd,perkins,-102.5000,45.3750\nsd,perkins,-102.5000,45.5000\nsd,perkins,-102.5000,45.6250\nsd,perkins,-102.5000,45.7500\nsd,perkins,-102.5000,45.8750\nnd,adams,-102.5000,46.0000\nnd,adams,-102.5000,46.1250\nnd,adams,-102.5000,46.2500\nnd,hettinger,-102.5000,46.3750\nnd,hettinger,-102.5000,46.5000\nnd,hettinger,-102.5000,46.6250\nnd,stark,-102.5000,46.7500\nnd,stark,-102.5000,46.8750\nnd,stark,-102.5000,47.0000\nnd,dunn,-102.5000,47.1250\nnd,dunn,-102.5000,47.2500\nnd,dunn,-102.5000,47.3750\nnd,dunn,-102.5000,47.5000\nnd,dunn,-102.5000,47.6250\nnd,dunn,-102.5000,47.7500\nnd,mountrail,-102.5000,47.8750\nnd,mountrail,-102.5000,48.0000\nnd,mountrail,-102.5000,48.1250\nnd,mountrail,-102.5000,48.2500\nnd,mountrail,-102.5000,48.3750\nnd,mountrail,-102.5000,48.5000\nnd,burke,-102.5000,48.6250\nnd,burke,-102.5000,48.7500\nnd,burke,-102.5000,48.8750\ntx,hartley,-102.3750,36.0000\ntx,dallam,-102.3750,36.1250\ntx,dallam,-102.3750,36.2500\ntx,dallam,-102.3750,36.3750\ntx,dallam,-102.3750,36.5000\nok,cimarron,-102.3750,36.6250\nok,cimarron,-102.3750,36.7500\nok,cimarron,-102.3750,36.8750\nco,baca,-102.3750,37.0000\nco,baca,-102.3750,37.1250\nco,baca,-102.3750,37.2500\nco,baca,-102.3750,37.3750\nco,baca,-102.3750,37.5000\nco,baca,-102.3750,37.6250\nco,prowers,-102.3750,37.7500\nco,prowers,-102.3750,37.8750\nco,prowers,-102.3750,38.0000\nco,prowers,-102.3750,38.1250\nco,prowers,-102.3750,38.2500\nco,kiowa,-102.3750,38.3750\nco,kiowa,-102.3750,38.5000\nco,cheyenne,-102.3750,38.6250\nco,cheyenne,-102.3750,38.7500\nco,cheyenne,-102.3750,38.8750\nco,cheyenne,-102.3750,39.0000\nco,kit carson,-102.3750,39.1250\nco,kit carson,-102.3750,39.2500\nco,kit carson,-102.3750,39.3750\nco,kit carson,-102.3750,39.5000\nco,yuma,-102.3750,39.6250\nco,yuma,-102.3750,39.7500\nco,yuma,-102.3750,39.8750\nco,yuma,-102.3750,40.0000\nco,yuma,-102.3750,40.1250\nco,yuma,-102.3750,40.2500\nco,yuma,-102.3750,40.3750\nco,phillips,-102.3750,40.5000\nco,phillips,-102.3750,40.6250\nco,sedgwick,-102.3750,40.7500\nco,sedgwick,-102.3750,40.8750\nco,sedgwick,-102.3750,41.0000\nne,deuel,-102.3750,41.1250\nne,garden,-102.3750,41.2500\nne,garden,-102.3750,41.3750\nne,garden,-102.3750,41.5000\nne,garden,-102.3750,41.6250\nne,garden,-102.3750,41.7500\nne,garden,-102.3750,41.8750\nne,garden,-102.3750,42.0000\nne,sheridan,-102.3750,42.1250\nne,sheridan,-102.3750,42.2500\nne,sheridan,-102.3750,42.3750\nne,sheridan,-102.3750,42.5000\nne,sheridan,-102.3750,42.6250\nne,sheridan,-102.3750,42.7500\nne,sheridan,-102.3750,42.8750\nsd,shannon,-102.3750,43.0000\nsd,shannon,-102.3750,43.1250\nsd,shannon,-102.3750,43.2500\nsd,shannon,-102.3750,43.3750\nsd,shannon,-102.3750,43.5000\nsd,shannon,-102.3750,43.6250\nsd,pennington,-102.3750,43.7500\nsd,pennington,-102.3750,43.8750\nsd,pennington,-102.3750,44.0000\nsd,pennington,-102.3750,44.1250\nsd,meade,-102.3750,44.2500\nsd,meade,-102.3750,44.3750\nsd,meade,-102.3750,44.5000\nsd,meade,-102.3750,44.6250\nsd,meade,-102.3750,44.7500\nsd,meade,-102.3750,44.8750\nsd,meade,-102.3750,45.0000\nsd,perkins,-102.3750,45.1250\nsd,perkins,-102.3750,45.2500\nsd,perkins,-102.3750,45.3750\nsd,perkins,-102.3750,45.5000\nsd,perkins,-102.3750,45.6250\nsd,perkins,-102.3750,45.7500\nsd,perkins,-102.3750,45.8750\nnd,adams,-102.3750,46.0000\nnd,adams,-102.3750,46.1250\nnd,hettinger,-102.3750,46.2500\nnd,hettinger,-102.3750,46.3750\nnd,hettinger,-102.3750,46.5000\nnd,hettinger,-102.3750,46.6250\nnd,stark,-102.3750,46.7500\nnd,stark,-102.3750,46.8750\nnd,stark,-102.3750,47.0000\nnd,dunn,-102.3750,47.1250\nnd,dunn,-102.3750,47.2500\nnd,dunn,-102.3750,47.3750\nnd,dunn,-102.3750,47.5000\nnd,dunn,-102.3750,47.6250\nnd,dunn,-102.3750,47.7500\nnd,mountrail,-102.3750,47.8750\nnd,mountrail,-102.3750,48.0000\nnd,mountrail,-102.3750,48.1250\nnd,mountrail,-102.3750,48.2500\nnd,mountrail,-102.3750,48.3750\nnd,mountrail,-102.3750,48.5000\nnd,burke,-102.3750,48.6250\nnd,burke,-102.3750,48.7500\nnd,burke,-102.3750,48.8750\ntx,hartley,-102.2500,36.0000\ntx,dallam,-102.2500,36.1250\ntx,dallam,-102.2500,36.2500\ntx,dallam,-102.2500,36.3750\ntx,dallam,-102.2500,36.5000\nok,cimarron,-102.2500,36.6250\nok,cimarron,-102.2500,36.7500\nok,cimarron,-102.2500,36.8750\nco,baca,-102.2500,37.0000\nco,baca,-102.2500,37.1250\nco,baca,-102.2500,37.2500\nco,baca,-102.2500,37.3750\nco,baca,-102.2500,37.5000\nco,baca,-102.2500,37.6250\nco,prowers,-102.2500,37.7500\nco,prowers,-102.2500,37.8750\nco,prowers,-102.2500,38.0000\nco,prowers,-102.2500,38.1250\nco,prowers,-102.2500,38.2500\nco,kiowa,-102.2500,38.3750\nco,kiowa,-102.2500,38.5000\nco,cheyenne,-102.2500,38.6250\nco,cheyenne,-102.2500,38.7500\nco,cheyenne,-102.2500,38.8750\nco,cheyenne,-102.2500,39.0000\nco,kit carson,-102.2500,39.1250\nco,kit carson,-102.2500,39.2500\nco,kit carson,-102.2500,39.3750\nco,kit carson,-102.2500,39.5000\nco,yuma,-102.2500,39.6250\nco,yuma,-102.2500,39.7500\nco,yuma,-102.2500,39.8750\nco,yuma,-102.2500,40.0000\nco,yuma,-102.2500,40.1250\nco,yuma,-102.2500,40.2500\nco,yuma,-102.2500,40.3750\nco,phillips,-102.2500,40.5000\nco,phillips,-102.2500,40.6250\nco,sedgwick,-102.2500,40.7500\nco,sedgwick,-102.2500,40.8750\nco,sedgwick,-102.2500,41.0000\nne,deuel,-102.2500,41.1250\nne,garden,-102.2500,41.2500\nne,garden,-102.2500,41.3750\nne,garden,-102.2500,41.5000\nne,garden,-102.2500,41.6250\nne,garden,-102.2500,41.7500\nne,garden,-102.2500,41.8750\nne,garden,-102.2500,42.0000\nne,sheridan,-102.2500,42.1250\nne,sheridan,-102.2500,42.2500\nne,sheridan,-102.2500,42.3750\nne,sheridan,-102.2500,42.5000\nne,sheridan,-102.2500,42.6250\nne,sheridan,-102.2500,42.7500\nne,sheridan,-102.2500,42.8750\nsd,shannon,-102.2500,43.0000\nsd,shannon,-102.2500,43.1250\nsd,shannon,-102.2500,43.2500\nsd,shannon,-102.2500,43.3750\nsd,shannon,-102.2500,43.5000\nsd,shannon,-102.2500,43.6250\nsd,pennington,-102.2500,43.7500\nsd,pennington,-102.2500,43.8750\nsd,pennington,-102.2500,44.0000\nsd,pennington,-102.2500,44.1250\nsd,pennington,-102.2500,44.2500\nsd,pennington,-102.2500,44.3750\nsd,meade,-102.2500,44.5000\nsd,meade,-102.2500,44.6250\nsd,meade,-102.2500,44.7500\nsd,meade,-102.2500,44.8750\nsd,meade,-102.2500,45.0000\nsd,perkins,-102.2500,45.1250\nsd,perkins,-102.2500,45.2500\nsd,perkins,-102.2500,45.3750\nsd,perkins,-102.2500,45.5000\nsd,perkins,-102.2500,45.6250\nsd,perkins,-102.2500,45.7500\nsd,perkins,-102.2500,45.8750\nnd,adams,-102.2500,46.0000\nnd,adams,-102.2500,46.1250\nnd,hettinger,-102.2500,46.2500\nnd,hettinger,-102.2500,46.3750\nnd,hettinger,-102.2500,46.5000\nnd,hettinger,-102.2500,46.6250\nnd,stark,-102.2500,46.7500\nnd,stark,-102.2500,46.8750\nnd,stark,-102.2500,47.0000\nnd,dunn,-102.2500,47.1250\nnd,dunn,-102.2500,47.2500\nnd,dunn,-102.2500,47.3750\nnd,dunn,-102.2500,47.5000\nnd,mclean,-102.2500,47.6250\nnd,mclean,-102.2500,47.7500\nnd,mountrail,-102.2500,47.8750\nnd,mountrail,-102.2500,48.0000\nnd,mountrail,-102.2500,48.1250\nnd,mountrail,-102.2500,48.2500\nnd,mountrail,-102.2500,48.3750\nnd,mountrail,-102.2500,48.5000\nnd,burke,-102.2500,48.6250\nnd,burke,-102.2500,48.7500\nnd,burke,-102.2500,48.8750\ntx,moore,-102.1250,36.0000\ntx,sherman,-102.1250,36.1250\ntx,sherman,-102.1250,36.2500\ntx,sherman,-102.1250,36.3750\ntx,sherman,-102.1250,36.5000\nok,cimarron,-102.1250,36.6250\nok,cimarron,-102.1250,36.7500\nok,cimarron,-102.1250,36.8750\nco,baca,-102.1250,37.0000\nco,baca,-102.1250,37.1250\nco,baca,-102.1250,37.2500\nco,baca,-102.1250,37.3750\nco,baca,-102.1250,37.5000\nco,baca,-102.1250,37.6250\nco,prowers,-102.1250,37.7500\nco,prowers,-102.1250,37.8750\nco,prowers,-102.1250,38.0000\nco,prowers,-102.1250,38.1250\nco,prowers,-102.1250,38.2500\nco,kiowa,-102.1250,38.3750\nco,kiowa,-102.1250,38.5000\nco,cheyenne,-102.1250,38.6250\nco,cheyenne,-102.1250,38.7500\nco,cheyenne,-102.1250,38.8750\nco,cheyenne,-102.1250,39.0000\nco,kit carson,-102.1250,39.1250\nco,kit carson,-102.1250,39.2500\nco,kit carson,-102.1250,39.3750\nco,kit carson,-102.1250,39.5000\nco,yuma,-102.1250,39.6250\nco,yuma,-102.1250,39.7500\nco,yuma,-102.1250,39.8750\nco,yuma,-102.1250,40.0000\nco,yuma,-102.1250,40.1250\nco,yuma,-102.1250,40.2500\nco,yuma,-102.1250,40.3750\nco,phillips,-102.1250,40.5000\nco,phillips,-102.1250,40.6250\nco,sedgwick,-102.1250,40.7500\nco,sedgwick,-102.1250,40.8750\nco,sedgwick,-102.1250,41.0000\nne,deuel,-102.1250,41.1250\nne,garden,-102.1250,41.2500\nne,garden,-102.1250,41.3750\nne,garden,-102.1250,41.5000\nne,garden,-102.1250,41.6250\nne,garden,-102.1250,41.7500\nne,garden,-102.1250,41.8750\nne,garden,-102.1250,42.0000\nne,sheridan,-102.1250,42.1250\nne,sheridan,-102.1250,42.2500\nne,sheridan,-102.1250,42.3750\nne,sheridan,-102.1250,42.5000\nne,sheridan,-102.1250,42.6250\nne,sheridan,-102.1250,42.7500\nne,sheridan,-102.1250,42.8750\nsd,shannon,-102.1250,43.0000\nsd,shannon,-102.1250,43.1250\nsd,shannon,-102.1250,43.2500\nsd,shannon,-102.1250,43.3750\nsd,jackson,-102.1250,43.5000\nsd,jackson,-102.1250,43.6250\nsd,pennington,-102.1250,43.7500\nsd,pennington,-102.1250,43.8750\nsd,pennington,-102.1250,44.0000\nsd,pennington,-102.1250,44.1250\nsd,pennington,-102.1250,44.2500\nsd,pennington,-102.1250,44.3750\nsd,meade,-102.1250,44.5000\nsd,meade,-102.1250,44.6250\nsd,meade,-102.1250,44.7500\nsd,meade,-102.1250,44.8750\nsd,meade,-102.1250,45.0000\nsd,perkins,-102.1250,45.1250\nsd,perkins,-102.1250,45.2500\nsd,perkins,-102.1250,45.3750\nsd,perkins,-102.1250,45.5000\nsd,perkins,-102.1250,45.6250\nsd,perkins,-102.1250,45.7500\nsd,perkins,-102.1250,45.8750\nnd,adams,-102.1250,46.0000\nnd,adams,-102.1250,46.1250\nnd,hettinger,-102.1250,46.2500\nnd,hettinger,-102.1250,46.3750\nnd,hettinger,-102.1250,46.5000\nnd,hettinger,-102.1250,46.6250\nnd,stark,-102.1250,46.7500\nnd,stark,-102.1250,46.8750\nnd,mercer,-102.1250,47.0000\nnd,mercer,-102.1250,47.1250\nnd,mercer,-102.1250,47.2500\nnd,mercer,-102.1250,47.3750\nnd,mercer,-102.1250,47.5000\nnd,mclean,-102.1250,47.6250\nnd,mclean,-102.1250,47.7500\nnd,mountrail,-102.1250,47.8750\nnd,mountrail,-102.1250,48.0000\nnd,mountrail,-102.1250,48.1250\nnd,mountrail,-102.1250,48.2500\nnd,mountrail,-102.1250,48.3750\nnd,mountrail,-102.1250,48.5000\nnd,ward,-102.1250,48.6250\nnd,ward,-102.1250,48.7500\nnd,burke,-102.1250,48.8750\ntx,moore,-102.0000,36.0000\ntx,sherman,-102.0000,36.1250\ntx,sherman,-102.0000,36.2500\ntx,sherman,-102.0000,36.3750\ntx,sherman,-102.0000,36.5000\nok,texas,-102.0000,36.6250\nok,texas,-102.0000,36.7500\nok,texas,-102.0000,36.8750\nks,morton,-102.0000,37.0000\nks,morton,-102.0000,37.1250\nks,morton,-102.0000,37.2500\nks,morton,-102.0000,37.3750\nks,stanton,-102.0000,37.5000\nks,stanton,-102.0000,37.6250\nks,hamilton,-102.0000,37.7500\nks,hamilton,-102.0000,37.8750\nks,hamilton,-102.0000,38.0000\nks,hamilton,-102.0000,38.1250\nks,hamilton,-102.0000,38.2500\nks,greeley,-102.0000,38.3750\nks,greeley,-102.0000,38.5000\nks,greeley,-102.0000,38.6250\nks,wallace,-102.0000,38.7500\nks,wallace,-102.0000,38.8750\nks,wallace,-102.0000,39.0000\nks,wallace,-102.0000,39.1250\nks,sherman,-102.0000,39.2500\nks,sherman,-102.0000,39.3750\nks,sherman,-102.0000,39.5000\nks,cheyenne,-102.0000,39.6250\nks,cheyenne,-102.0000,39.7500\nks,cheyenne,-102.0000,39.8750\nks,cheyenne,-102.0000,40.0000\nne,dundy,-102.0000,40.1250\nne,dundy,-102.0000,40.2500\nne,chase,-102.0000,40.3750\nne,chase,-102.0000,40.5000\nne,chase,-102.0000,40.6250\nne,perkins,-102.0000,40.7500\nne,perkins,-102.0000,40.8750\nne,perkins,-102.0000,41.0000\nne,keith,-102.0000,41.1250\nne,keith,-102.0000,41.2500\nne,keith,-102.0000,41.3750\nne,garden,-102.0000,41.5000\nne,garden,-102.0000,41.6250\nne,grant,-102.0000,41.7500\nne,grant,-102.0000,41.8750\nne,grant,-102.0000,42.0000\nne,cherry,-102.0000,42.1250\nne,cherry,-102.0000,42.2500\nne,cherry,-102.0000,42.3750\nne,cherry,-102.0000,42.5000\nne,cherry,-102.0000,42.6250\nne,cherry,-102.0000,42.7500\nne,cherry,-102.0000,42.8750\nsd,bennett,-102.0000,43.0000\nsd,bennett,-102.0000,43.1250\nsd,bennett,-102.0000,43.2500\nsd,bennett,-102.0000,43.3750\nsd,jackson,-102.0000,43.5000\nsd,jackson,-102.0000,43.6250\nsd,jackson,-102.0000,43.7500\nsd,jackson,-102.0000,43.8750\nsd,haakon,-102.0000,44.0000\nsd,haakon,-102.0000,44.1250\nsd,haakon,-102.0000,44.2500\nsd,haakon,-102.0000,44.3750\nsd,haakon,-102.0000,44.5000\nsd,ziebach,-102.0000,44.6250\nsd,ziebach,-102.0000,44.7500\nsd,ziebach,-102.0000,44.8750\nsd,ziebach,-102.0000,45.0000\nsd,ziebach,-102.0000,45.1250\nsd,perkins,-102.0000,45.2500\nsd,perkins,-102.0000,45.3750\nsd,corson,-102.0000,45.5000\nsd,corson,-102.0000,45.6250\nsd,corson,-102.0000,45.7500\nsd,corson,-102.0000,45.8750\nnd,adams,-102.0000,46.0000\nnd,adams,-102.0000,46.1250\nnd,hettinger,-102.0000,46.2500\nnd,grant,-102.0000,46.3750\nnd,grant,-102.0000,46.5000\nnd,grant,-102.0000,46.6250\nnd,morton,-102.0000,46.7500\nnd,morton,-102.0000,46.8750\nnd,mercer,-102.0000,47.0000\nnd,mercer,-102.0000,47.1250\nnd,mercer,-102.0000,47.2500\nnd,mercer,-102.0000,47.3750\nnd,mercer,-102.0000,47.5000\nnd,mclean,-102.0000,47.6250\nnd,mclean,-102.0000,47.7500\nnd,mountrail,-102.0000,47.8750\nnd,mountrail,-102.0000,48.0000\nnd,mountrail,-102.0000,48.1250\nnd,mountrail,-102.0000,48.2500\nnd,mountrail,-102.0000,48.3750\nnd,mountrail,-102.0000,48.5000\nnd,ward,-102.0000,48.6250\nnd,renville,-102.0000,48.7500\nnd,renville,-102.0000,48.8750\ntx,moore,-101.8750,36.0000\ntx,sherman,-101.8750,36.1250\ntx,sherman,-101.8750,36.2500\ntx,sherman,-101.8750,36.3750\ntx,sherman,-101.8750,36.5000\nok,texas,-101.8750,36.6250\nok,texas,-101.8750,36.7500\nok,texas,-101.8750,36.8750\nks,morton,-101.8750,37.0000\nks,morton,-101.8750,37.1250\nks,morton,-101.8750,37.2500\nks,morton,-101.8750,37.3750\nks,stanton,-101.8750,37.5000\nks,stanton,-101.8750,37.6250\nks,hamilton,-101.8750,37.7500\nks,hamilton,-101.8750,37.8750\nks,hamilton,-101.8750,38.0000\nks,hamilton,-101.8750,38.1250\nks,hamilton,-101.8750,38.2500\nks,greeley,-101.8750,38.3750\nks,greeley,-101.8750,38.5000\nks,greeley,-101.8750,38.6250\nks,wallace,-101.8750,38.7500\nks,wallace,-101.8750,38.8750\nks,wallace,-101.8750,39.0000\nks,wallace,-101.8750,39.1250\nks,sherman,-101.8750,39.2500\nks,sherman,-101.8750,39.3750\nks,sherman,-101.8750,39.5000\nks,cheyenne,-101.8750,39.6250\nks,cheyenne,-101.8750,39.7500\nks,cheyenne,-101.8750,39.8750\nks,cheyenne,-101.8750,40.0000\nne,dundy,-101.8750,40.1250\nne,dundy,-101.8750,40.2500\nne,chase,-101.8750,40.3750\nne,chase,-101.8750,40.5000\nne,chase,-101.8750,40.6250\nne,perkins,-101.8750,40.7500\nne,perkins,-101.8750,40.8750\nne,perkins,-101.8750,41.0000\nne,keith,-101.8750,41.1250\nne,keith,-101.8750,41.2500\nne,keith,-101.8750,41.3750\nne,arthur,-101.8750,41.5000\nne,arthur,-101.8750,41.6250\nne,grant,-101.8750,41.7500\nne,grant,-101.8750,41.8750\nne,grant,-101.8750,42.0000\nne,cherry,-101.8750,42.1250\nne,cherry,-101.8750,42.2500\nne,cherry,-101.8750,42.3750\nne,cherry,-101.8750,42.5000\nne,cherry,-101.8750,42.6250\nne,cherry,-101.8750,42.7500\nne,cherry,-101.8750,42.8750\nsd,bennett,-101.8750,43.0000\nsd,bennett,-101.8750,43.1250\nsd,bennett,-101.8750,43.2500\nsd,bennett,-101.8750,43.3750\nsd,jackson,-101.8750,43.5000\nsd,jackson,-101.8750,43.6250\nsd,jackson,-101.8750,43.7500\nsd,jackson,-101.8750,43.8750\nsd,haakon,-101.8750,44.0000\nsd,haakon,-101.8750,44.1250\nsd,haakon,-101.8750,44.2500\nsd,haakon,-101.8750,44.3750\nsd,haakon,-101.8750,44.5000\nsd,ziebach,-101.8750,44.6250\nsd,ziebach,-101.8750,44.7500\nsd,ziebach,-101.8750,44.8750\nsd,ziebach,-101.8750,45.0000\nsd,ziebach,-101.8750,45.1250\nsd,ziebach,-101.8750,45.2500\nsd,ziebach,-101.8750,45.3750\nsd,corson,-101.8750,45.5000\nsd,corson,-101.8750,45.6250\nsd,corson,-101.8750,45.7500\nsd,corson,-101.8750,45.8750\nnd,sioux,-101.8750,46.0000\nnd,grant,-101.8750,46.1250\nnd,grant,-101.8750,46.2500\nnd,grant,-101.8750,46.3750\nnd,grant,-101.8750,46.5000\nnd,grant,-101.8750,46.6250\nnd,morton,-101.8750,46.7500\nnd,morton,-101.8750,46.8750\nnd,mercer,-101.8750,47.0000\nnd,mercer,-101.8750,47.1250\nnd,mercer,-101.8750,47.2500\nnd,mercer,-101.8750,47.3750\nnd,mercer,-101.8750,47.5000\nnd,mclean,-101.8750,47.6250\nnd,mclean,-101.8750,47.7500\nnd,mountrail,-101.8750,47.8750\nnd,mountrail,-101.8750,48.0000\nnd,ward,-101.8750,48.1250\nnd,ward,-101.8750,48.2500\nnd,ward,-101.8750,48.3750\nnd,ward,-101.8750,48.5000\nnd,ward,-101.8750,48.6250\nnd,renville,-101.8750,48.7500\nnd,renville,-101.8750,48.8750\ntx,moore,-101.7500,36.0000\ntx,sherman,-101.7500,36.1250\ntx,sherman,-101.7500,36.2500\ntx,sherman,-101.7500,36.3750\nok,texas,-101.7500,36.5000\nok,texas,-101.7500,36.6250\nok,texas,-101.7500,36.7500\nok,texas,-101.7500,36.8750\nks,morton,-101.7500,37.0000\nks,morton,-101.7500,37.1250\nks,morton,-101.7500,37.2500\nks,morton,-101.7500,37.3750\nks,stanton,-101.7500,37.5000\nks,stanton,-101.7500,37.6250\nks,hamilton,-101.7500,37.7500\nks,hamilton,-101.7500,37.8750\nks,hamilton,-101.7500,38.0000\nks,hamilton,-101.7500,38.1250\nks,hamilton,-101.7500,38.2500\nks,greeley,-101.7500,38.3750\nks,greeley,-101.7500,38.5000\nks,greeley,-101.7500,38.6250\nks,wallace,-101.7500,38.7500\nks,wallace,-101.7500,38.8750\nks,wallace,-101.7500,39.0000\nks,wallace,-101.7500,39.1250\nks,sherman,-101.7500,39.2500\nks,sherman,-101.7500,39.3750\nks,sherman,-101.7500,39.5000\nks,cheyenne,-101.7500,39.6250\nks,cheyenne,-101.7500,39.7500\nks,cheyenne,-101.7500,39.8750\nks,cheyenne,-101.7500,40.0000\nne,dundy,-101.7500,40.1250\nne,dundy,-101.7500,40.2500\nne,chase,-101.7500,40.3750\nne,chase,-101.7500,40.5000\nne,chase,-101.7500,40.6250\nne,perkins,-101.7500,40.7500\nne,perkins,-101.7500,40.8750\nne,perkins,-101.7500,41.0000\nne,keith,-101.7500,41.1250\nne,keith,-101.7500,41.2500\nne,keith,-101.7500,41.3750\nne,arthur,-101.7500,41.5000\nne,arthur,-101.7500,41.6250\nne,grant,-101.7500,41.7500\nne,grant,-101.7500,41.8750\nne,grant,-101.7500,42.0000\nne,cherry,-101.7500,42.1250\nne,cherry,-101.7500,42.2500\nne,cherry,-101.7500,42.3750\nne,cherry,-101.7500,42.5000\nne,cherry,-101.7500,42.6250\nne,cherry,-101.7500,42.7500\nne,cherry,-101.7500,42.8750\nsd,bennett,-101.7500,43.0000\nsd,bennett,-101.7500,43.1250\nsd,bennett,-101.7500,43.2500\nsd,bennett,-101.7500,43.3750\nsd,jackson,-101.7500,43.5000\nsd,jackson,-101.7500,43.6250\nsd,jackson,-101.7500,43.7500\nsd,jackson,-101.7500,43.8750\nsd,haakon,-101.7500,44.0000\nsd,haakon,-101.7500,44.1250\nsd,haakon,-101.7500,44.2500\nsd,haakon,-101.7500,44.3750\nsd,haakon,-101.7500,44.5000\nsd,ziebach,-101.7500,44.6250\nsd,ziebach,-101.7500,44.7500\nsd,ziebach,-101.7500,44.8750\nsd,ziebach,-101.7500,45.0000\nsd,ziebach,-101.7500,45.1250\nsd,ziebach,-101.7500,45.2500\nsd,ziebach,-101.7500,45.3750\nsd,corson,-101.7500,45.5000\nsd,corson,-101.7500,45.6250\nsd,corson,-101.7500,45.7500\nsd,corson,-101.7500,45.8750\nnd,sioux,-101.7500,46.0000\nnd,grant,-101.7500,46.1250\nnd,grant,-101.7500,46.2500\nnd,grant,-101.7500,46.3750\nnd,grant,-101.7500,46.5000\nnd,grant,-101.7500,46.6250\nnd,morton,-101.7500,46.7500\nnd,morton,-101.7500,46.8750\nnd,oliver,-101.7500,47.0000\nnd,oliver,-101.7500,47.1250\nnd,mercer,-101.7500,47.2500\nnd,mercer,-101.7500,47.3750\nnd,mercer,-101.7500,47.5000\nnd,mclean,-101.7500,47.6250\nnd,mclean,-101.7500,47.7500\nnd,ward,-101.7500,47.8750\nnd,ward,-101.7500,48.0000\nnd,ward,-101.7500,48.1250\nnd,ward,-101.7500,48.2500\nnd,ward,-101.7500,48.3750\nnd,renville,-101.7500,48.5000\nnd,renville,-101.7500,48.6250\nnd,renville,-101.7500,48.7500\nnd,renville,-101.7500,48.8750\ntx,moore,-101.6250,36.0000\ntx,sherman,-101.6250,36.1250\ntx,sherman,-101.6250,36.2500\ntx,sherman,-101.6250,36.3750\nok,texas,-101.6250,36.5000\nok,texas,-101.6250,36.6250\nok,texas,-101.6250,36.7500\nok,texas,-101.6250,36.8750\nks,morton,-101.6250,37.0000\nks,morton,-101.6250,37.1250\nks,morton,-101.6250,37.2500\nks,morton,-101.6250,37.3750\nks,stanton,-101.6250,37.5000\nks,stanton,-101.6250,37.6250\nks,hamilton,-101.6250,37.7500\nks,hamilton,-101.6250,37.8750\nks,hamilton,-101.6250,38.0000\nks,hamilton,-101.6250,38.1250\nks,hamilton,-101.6250,38.2500\nks,greeley,-101.6250,38.3750\nks,greeley,-101.6250,38.5000\nks,greeley,-101.6250,38.6250\nks,wallace,-101.6250,38.7500\nks,wallace,-101.6250,38.8750\nks,wallace,-101.6250,39.0000\nks,wallace,-101.6250,39.1250\nks,sherman,-101.6250,39.2500\nks,sherman,-101.6250,39.3750\nks,sherman,-101.6250,39.5000\nks,cheyenne,-101.6250,39.6250\nks,cheyenne,-101.6250,39.7500\nks,cheyenne,-101.6250,39.8750\nks,cheyenne,-101.6250,40.0000\nne,dundy,-101.6250,40.1250\nne,dundy,-101.6250,40.2500\nne,chase,-101.6250,40.3750\nne,chase,-101.6250,40.5000\nne,chase,-101.6250,40.6250\nne,perkins,-101.6250,40.7500\nne,perkins,-101.6250,40.8750\nne,perkins,-101.6250,41.0000\nne,keith,-101.6250,41.1250\nne,keith,-101.6250,41.2500\nne,keith,-101.6250,41.3750\nne,arthur,-101.6250,41.5000\nne,arthur,-101.6250,41.6250\nne,grant,-101.6250,41.7500\nne,grant,-101.6250,41.8750\nne,grant,-101.6250,42.0000\nne,cherry,-101.6250,42.1250\nne,cherry,-101.6250,42.2500\nne,cherry,-101.6250,42.3750\nne,cherry,-101.6250,42.5000\nne,cherry,-101.6250,42.6250\nne,cherry,-101.6250,42.7500\nne,cherry,-101.6250,42.8750\nsd,bennett,-101.6250,43.0000\nsd,bennett,-101.6250,43.1250\nsd,bennett,-101.6250,43.2500\nsd,bennett,-101.6250,43.3750\nsd,jackson,-101.6250,43.5000\nsd,jackson,-101.6250,43.6250\nsd,jackson,-101.6250,43.7500\nsd,jackson,-101.6250,43.8750\nsd,haakon,-101.6250,44.0000\nsd,haakon,-101.6250,44.1250\nsd,haakon,-101.6250,44.2500\nsd,haakon,-101.6250,44.3750\nsd,haakon,-101.6250,44.5000\nsd,ziebach,-101.6250,44.6250\nsd,ziebach,-101.6250,44.7500\nsd,ziebach,-101.6250,44.8750\nsd,ziebach,-101.6250,45.0000\nsd,ziebach,-101.6250,45.1250\nsd,ziebach,-101.6250,45.2500\nsd,ziebach,-101.6250,45.3750\nsd,corson,-101.6250,45.5000\nsd,corson,-101.6250,45.6250\nsd,corson,-101.6250,45.7500\nsd,corson,-101.6250,45.8750\nnd,sioux,-101.6250,46.0000\nnd,grant,-101.6250,46.1250\nnd,grant,-101.6250,46.2500\nnd,grant,-101.6250,46.3750\nnd,grant,-101.6250,46.5000\nnd,grant,-101.6250,46.6250\nnd,morton,-101.6250,46.7500\nnd,morton,-101.6250,46.8750\nnd,oliver,-101.6250,47.0000\nnd,oliver,-101.6250,47.1250\nnd,mercer,-101.6250,47.2500\nnd,mercer,-101.6250,47.3750\nnd,mercer,-101.6250,47.5000\nnd,mclean,-101.6250,47.6250\nnd,mclean,-101.6250,47.7500\nnd,ward,-101.6250,47.8750\nnd,ward,-101.6250,48.0000\nnd,ward,-101.6250,48.1250\nnd,ward,-101.6250,48.2500\nnd,ward,-101.6250,48.3750\nnd,renville,-101.6250,48.5000\nnd,renville,-101.6250,48.6250\nnd,renville,-101.6250,48.7500\nnd,renville,-101.6250,48.8750\ntx,hutchinson,-101.5000,36.0000\ntx,hansford,-101.5000,36.1250\ntx,hansford,-101.5000,36.2500\ntx,hansford,-101.5000,36.3750\nok,texas,-101.5000,36.5000\nok,texas,-101.5000,36.6250\nok,texas,-101.5000,36.7500\nok,texas,-101.5000,36.8750\nks,stevens,-101.5000,37.0000\nks,stevens,-101.5000,37.1250\nks,stevens,-101.5000,37.2500\nks,stevens,-101.5000,37.3750\nks,grant,-101.5000,37.5000\nks,grant,-101.5000,37.6250\nks,kearny,-101.5000,37.7500\nks,kearny,-101.5000,37.8750\nks,kearny,-101.5000,38.0000\nks,kearny,-101.5000,38.1250\nks,kearny,-101.5000,38.2500\nks,wichita,-101.5000,38.3750\nks,wichita,-101.5000,38.5000\nks,wichita,-101.5000,38.6250\nks,wallace,-101.5000,38.7500\nks,wallace,-101.5000,38.8750\nks,wallace,-101.5000,39.0000\nks,wallace,-101.5000,39.1250\nks,sherman,-101.5000,39.2500\nks,sherman,-101.5000,39.3750\nks,sherman,-101.5000,39.5000\nks,cheyenne,-101.5000,39.6250\nks,cheyenne,-101.5000,39.7500\nks,cheyenne,-101.5000,39.8750\nks,cheyenne,-101.5000,40.0000\nne,dundy,-101.5000,40.1250\nne,dundy,-101.5000,40.2500\nne,chase,-101.5000,40.3750\nne,chase,-101.5000,40.5000\nne,chase,-101.5000,40.6250\nne,perkins,-101.5000,40.7500\nne,perkins,-101.5000,40.8750\nne,perkins,-101.5000,41.0000\nne,keith,-101.5000,41.1250\nne,keith,-101.5000,41.2500\nne,keith,-101.5000,41.3750\nne,arthur,-101.5000,41.5000\nne,arthur,-101.5000,41.6250\nne,grant,-101.5000,41.7500\nne,grant,-101.5000,41.8750\nne,grant,-101.5000,42.0000\nne,cherry,-101.5000,42.1250\nne,cherry,-101.5000,42.2500\nne,cherry,-101.5000,42.3750\nne,cherry,-101.5000,42.5000\nne,cherry,-101.5000,42.6250\nne,cherry,-101.5000,42.7500\nne,cherry,-101.5000,42.8750\nsd,bennett,-101.5000,43.0000\nsd,bennett,-101.5000,43.1250\nsd,bennett,-101.5000,43.2500\nsd,bennett,-101.5000,43.3750\nsd,jackson,-101.5000,43.5000\nsd,jackson,-101.5000,43.6250\nsd,jackson,-101.5000,43.7500\nsd,jackson,-101.5000,43.8750\nsd,haakon,-101.5000,44.0000\nsd,haakon,-101.5000,44.1250\nsd,haakon,-101.5000,44.2500\nsd,haakon,-101.5000,44.3750\nsd,haakon,-101.5000,44.5000\nsd,ziebach,-101.5000,44.6250\nsd,ziebach,-101.5000,44.7500\nsd,ziebach,-101.5000,44.8750\nsd,dewey,-101.5000,45.0000\nsd,ziebach,-101.5000,45.1250\nsd,ziebach,-101.5000,45.2500\nsd,ziebach,-101.5000,45.3750\nsd,corson,-101.5000,45.5000\nsd,corson,-101.5000,45.6250\nsd,corson,-101.5000,45.7500\nsd,corson,-101.5000,45.8750\nnd,sioux,-101.5000,46.0000\nnd,grant,-101.5000,46.1250\nnd,grant,-101.5000,46.2500\nnd,grant,-101.5000,46.3750\nnd,grant,-101.5000,46.5000\nnd,grant,-101.5000,46.6250\nnd,morton,-101.5000,46.7500\nnd,morton,-101.5000,46.8750\nnd,oliver,-101.5000,47.0000\nnd,oliver,-101.5000,47.1250\nnd,mercer,-101.5000,47.2500\nnd,mercer,-101.5000,47.3750\nnd,mercer,-101.5000,47.5000\nnd,mclean,-101.5000,47.6250\nnd,mclean,-101.5000,47.7500\nnd,ward,-101.5000,47.8750\nnd,ward,-101.5000,48.0000\nnd,ward,-101.5000,48.1250\nnd,ward,-101.5000,48.2500\nnd,ward,-101.5000,48.3750\nnd,renville,-101.5000,48.5000\nnd,renville,-101.5000,48.6250\nnd,renville,-101.5000,48.7500\nnd,renville,-101.5000,48.8750\ntx,hutchinson,-101.3750,36.0000\ntx,hansford,-101.3750,36.1250\ntx,hansford,-101.3750,36.2500\ntx,hansford,-101.3750,36.3750\nok,texas,-101.3750,36.5000\nok,texas,-101.3750,36.6250\nok,texas,-101.3750,36.7500\nok,texas,-101.3750,36.8750\nks,stevens,-101.3750,37.0000\nks,stevens,-101.3750,37.1250\nks,stevens,-101.3750,37.2500\nks,stevens,-101.3750,37.3750\nks,grant,-101.3750,37.5000\nks,grant,-101.3750,37.6250\nks,kearny,-101.3750,37.7500\nks,kearny,-101.3750,37.8750\nks,kearny,-101.3750,38.0000\nks,kearny,-101.3750,38.1250\nks,kearny,-101.3750,38.2500\nks,wichita,-101.3750,38.3750\nks,wichita,-101.3750,38.5000\nks,wichita,-101.3750,38.6250\nks,logan,-101.3750,38.7500\nks,logan,-101.3750,38.8750\nks,logan,-101.3750,39.0000\nks,logan,-101.3750,39.1250\nks,thomas,-101.3750,39.2500\nks,thomas,-101.3750,39.3750\nks,thomas,-101.3750,39.5000\nks,rawlins,-101.3750,39.6250\nks,rawlins,-101.3750,39.7500\nks,rawlins,-101.3750,39.8750\nks,rawlins,-101.3750,40.0000\nne,dundy,-101.3750,40.1250\nne,dundy,-101.3750,40.2500\nne,chase,-101.3750,40.3750\nne,chase,-101.3750,40.5000\nne,chase,-101.3750,40.6250\nne,perkins,-101.3750,40.7500\nne,perkins,-101.3750,40.8750\nne,perkins,-101.3750,41.0000\nne,keith,-101.3750,41.1250\nne,keith,-101.3750,41.2500\nne,keith,-101.3750,41.3750\nne,mcpherson,-101.3750,41.5000\nne,mcpherson,-101.3750,41.6250\nne,hooker,-101.3750,41.7500\nne,hooker,-101.3750,41.8750\nne,hooker,-101.3750,42.0000\nne,cherry,-101.3750,42.1250\nne,cherry,-101.3750,42.2500\nne,cherry,-101.3750,42.3750\nne,cherry,-101.3750,42.5000\nne,cherry,-101.3750,42.6250\nne,cherry,-101.3750,42.7500\nne,cherry,-101.3750,42.8750\nsd,bennett,-101.3750,43.0000\nsd,bennett,-101.3750,43.1250\nsd,bennett,-101.3750,43.2500\nsd,bennett,-101.3750,43.3750\nsd,jackson,-101.3750,43.5000\nsd,jackson,-101.3750,43.6250\nsd,jackson,-101.3750,43.7500\nsd,jackson,-101.3750,43.8750\nsd,haakon,-101.3750,44.0000\nsd,haakon,-101.3750,44.1250\nsd,haakon,-101.3750,44.2500\nsd,haakon,-101.3750,44.3750\nsd,haakon,-101.3750,44.5000\nsd,haakon,-101.3750,44.6250\nsd,ziebach,-101.3750,44.7500\nsd,ziebach,-101.3750,44.8750\nsd,dewey,-101.3750,45.0000\nsd,dewey,-101.3750,45.1250\nsd,dewey,-101.3750,45.2500\nsd,dewey,-101.3750,45.3750\nsd,corson,-101.3750,45.5000\nsd,corson,-101.3750,45.6250\nsd,corson,-101.3750,45.7500\nsd,corson,-101.3750,45.8750\nnd,sioux,-101.3750,46.0000\nnd,grant,-101.3750,46.1250\nnd,grant,-101.3750,46.2500\nnd,grant,-101.3750,46.3750\nnd,grant,-101.3750,46.5000\nnd,grant,-101.3750,46.6250\nnd,morton,-101.3750,46.7500\nnd,morton,-101.3750,46.8750\nnd,oliver,-101.3750,47.0000\nnd,oliver,-101.3750,47.1250\nnd,mercer,-101.3750,47.2500\nnd,mclean,-101.3750,47.3750\nnd,mclean,-101.3750,47.5000\nnd,mclean,-101.3750,47.6250\nnd,mclean,-101.3750,47.7500\nnd,ward,-101.3750,47.8750\nnd,ward,-101.3750,48.0000\nnd,ward,-101.3750,48.1250\nnd,ward,-101.3750,48.2500\nnd,ward,-101.3750,48.3750\nnd,renville,-101.3750,48.5000\nnd,bottineau,-101.3750,48.6250\nnd,bottineau,-101.3750,48.7500\nnd,bottineau,-101.3750,48.8750\ntx,hutchinson,-101.2500,36.0000\ntx,hansford,-101.2500,36.1250\ntx,hansford,-101.2500,36.2500\ntx,hansford,-101.2500,36.3750\nok,texas,-101.2500,36.5000\nok,texas,-101.2500,36.6250\nok,texas,-101.2500,36.7500\nok,texas,-101.2500,36.8750\nks,stevens,-101.2500,37.0000\nks,stevens,-101.2500,37.1250\nks,stevens,-101.2500,37.2500\nks,stevens,-101.2500,37.3750\nks,grant,-101.2500,37.5000\nks,grant,-101.2500,37.6250\nks,kearny,-101.2500,37.7500\nks,kearny,-101.2500,37.8750\nks,kearny,-101.2500,38.0000\nks,kearny,-101.2500,38.1250\nks,kearny,-101.2500,38.2500\nks,wichita,-101.2500,38.3750\nks,wichita,-101.2500,38.5000\nks,wichita,-101.2500,38.6250\nks,logan,-101.2500,38.7500\nks,logan,-101.2500,38.8750\nks,logan,-101.2500,39.0000\nks,logan,-101.2500,39.1250\nks,thomas,-101.2500,39.2500\nks,thomas,-101.2500,39.3750\nks,thomas,-101.2500,39.5000\nks,rawlins,-101.2500,39.6250\nks,rawlins,-101.2500,39.7500\nks,rawlins,-101.2500,39.8750\nks,rawlins,-101.2500,40.0000\nne,hitchcock,-101.2500,40.1250\nne,hitchcock,-101.2500,40.2500\nne,hayes,-101.2500,40.3750\nne,hayes,-101.2500,40.5000\nne,hayes,-101.2500,40.6250\nne,perkins,-101.2500,40.7500\nne,perkins,-101.2500,40.8750\nne,perkins,-101.2500,41.0000\nne,lincoln,-101.2500,41.1250\nne,lincoln,-101.2500,41.2500\nne,lincoln,-101.2500,41.3750\nne,mcpherson,-101.2500,41.5000\nne,mcpherson,-101.2500,41.6250\nne,hooker,-101.2500,41.7500\nne,hooker,-101.2500,41.8750\nne,hooker,-101.2500,42.0000\nne,cherry,-101.2500,42.1250\nne,cherry,-101.2500,42.2500\nne,cherry,-101.2500,42.3750\nne,cherry,-101.2500,42.5000\nne,cherry,-101.2500,42.6250\nne,cherry,-101.2500,42.7500\nne,cherry,-101.2500,42.8750\nsd,bennett,-101.2500,43.0000\nsd,bennett,-101.2500,43.1250\nsd,bennett,-101.2500,43.2500\nsd,bennett,-101.2500,43.3750\nsd,jackson,-101.2500,43.5000\nsd,jackson,-101.2500,43.6250\nsd,jackson,-101.2500,43.7500\nsd,jackson,-101.2500,43.8750\nsd,haakon,-101.2500,44.0000\nsd,haakon,-101.2500,44.1250\nsd,haakon,-101.2500,44.2500\nsd,haakon,-101.2500,44.3750\nsd,haakon,-101.2500,44.5000\nsd,haakon,-101.2500,44.6250\nsd,ziebach,-101.2500,44.7500\nsd,ziebach,-101.2500,44.8750\nsd,dewey,-101.2500,45.0000\nsd,dewey,-101.2500,45.1250\nsd,dewey,-101.2500,45.2500\nsd,dewey,-101.2500,45.3750\nsd,corson,-101.2500,45.5000\nsd,corson,-101.2500,45.6250\nsd,corson,-101.2500,45.7500\nsd,corson,-101.2500,45.8750\nnd,sioux,-101.2500,46.0000\nnd,sioux,-101.2500,46.1250\nnd,grant,-101.2500,46.2500\nnd,morton,-101.2500,46.3750\nnd,morton,-101.2500,46.5000\nnd,morton,-101.2500,46.6250\nnd,morton,-101.2500,46.7500\nnd,morton,-101.2500,46.8750\nnd,oliver,-101.2500,47.0000\nnd,oliver,-101.2500,47.1250\nnd,oliver,-101.2500,47.2500\nnd,mclean,-101.2500,47.3750\nnd,mclean,-101.2500,47.5000\nnd,mclean,-101.2500,47.6250\nnd,mclean,-101.2500,47.7500\nnd,ward,-101.2500,47.8750\nnd,ward,-101.2500,48.0000\nnd,ward,-101.2500,48.1250\nnd,ward,-101.2500,48.2500\nnd,ward,-101.2500,48.3750\nnd,renville,-101.2500,48.5000\nnd,bottineau,-101.2500,48.6250\nnd,bottineau,-101.2500,48.7500\nnd,bottineau,-101.2500,48.8750\ntx,hutchinson,-101.1250,36.0000\ntx,hansford,-101.1250,36.1250\ntx,hansford,-101.1250,36.2500\ntx,hansford,-101.1250,36.3750\nok,texas,-101.1250,36.5000\nok,texas,-101.1250,36.6250\nok,texas,-101.1250,36.7500\nok,texas,-101.1250,36.8750\nks,stevens,-101.1250,37.0000\nks,stevens,-101.1250,37.1250\nks,stevens,-101.1250,37.2500\nks,stevens,-101.1250,37.3750\nks,grant,-101.1250,37.5000\nks,grant,-101.1250,37.6250\nks,kearny,-101.1250,37.7500\nks,kearny,-101.1250,37.8750\nks,kearny,-101.1250,38.0000\nks,kearny,-101.1250,38.1250\nks,kearny,-101.1250,38.2500\nks,scott,-101.1250,38.3750\nks,scott,-101.1250,38.5000\nks,scott,-101.1250,38.6250\nks,logan,-101.1250,38.7500\nks,logan,-101.1250,38.8750\nks,logan,-101.1250,39.0000\nks,logan,-101.1250,39.1250\nks,thomas,-101.1250,39.2500\nks,thomas,-101.1250,39.3750\nks,thomas,-101.1250,39.5000\nks,rawlins,-101.1250,39.6250\nks,rawlins,-101.1250,39.7500\nks,rawlins,-101.1250,39.8750\nks,rawlins,-101.1250,40.0000\nne,hitchcock,-101.1250,40.1250\nne,hitchcock,-101.1250,40.2500\nne,hayes,-101.1250,40.3750\nne,hayes,-101.1250,40.5000\nne,hayes,-101.1250,40.6250\nne,lincoln,-101.1250,40.7500\nne,lincoln,-101.1250,40.8750\nne,lincoln,-101.1250,41.0000\nne,lincoln,-101.1250,41.1250\nne,lincoln,-101.1250,41.2500\nne,lincoln,-101.1250,41.3750\nne,mcpherson,-101.1250,41.5000\nne,mcpherson,-101.1250,41.6250\nne,hooker,-101.1250,41.7500\nne,hooker,-101.1250,41.8750\nne,hooker,-101.1250,42.0000\nne,cherry,-101.1250,42.1250\nne,cherry,-101.1250,42.2500\nne,cherry,-101.1250,42.3750\nne,cherry,-101.1250,42.5000\nne,cherry,-101.1250,42.6250\nne,cherry,-101.1250,42.7500\nne,cherry,-101.1250,42.8750\nsd,todd,-101.1250,43.0000\nsd,todd,-101.1250,43.1250\nsd,todd,-101.1250,43.2500\nsd,todd,-101.1250,43.3750\nsd,mellette,-101.1250,43.5000\nsd,mellette,-101.1250,43.6250\nsd,mellette,-101.1250,43.7500\nsd,jackson,-101.1250,43.8750\nsd,haakon,-101.1250,44.0000\nsd,haakon,-101.1250,44.1250\nsd,stanley,-101.1250,44.2500\nsd,stanley,-101.1250,44.3750\nsd,stanley,-101.1250,44.5000\nsd,stanley,-101.1250,44.6250\nsd,dewey,-101.1250,44.7500\nsd,dewey,-101.1250,44.8750\nsd,dewey,-101.1250,45.0000\nsd,dewey,-101.1250,45.1250\nsd,dewey,-101.1250,45.2500\nsd,dewey,-101.1250,45.3750\nsd,corson,-101.1250,45.5000\nsd,corson,-101.1250,45.6250\nsd,corson,-101.1250,45.7500\nsd,corson,-101.1250,45.8750\nnd,sioux,-101.1250,46.0000\nnd,sioux,-101.1250,46.1250\nnd,grant,-101.1250,46.2500\nnd,morton,-101.1250,46.3750\nnd,morton,-101.1250,46.5000\nnd,morton,-101.1250,46.6250\nnd,morton,-101.1250,46.7500\nnd,morton,-101.1250,46.8750\nnd,oliver,-101.1250,47.0000\nnd,oliver,-101.1250,47.1250\nnd,oliver,-101.1250,47.2500\nnd,mclean,-101.1250,47.3750\nnd,mclean,-101.1250,47.5000\nnd,mclean,-101.1250,47.6250\nnd,mclean,-101.1250,47.7500\nnd,ward,-101.1250,47.8750\nnd,ward,-101.1250,48.0000\nnd,ward,-101.1250,48.1250\nnd,ward,-101.1250,48.2500\nnd,ward,-101.1250,48.3750\nnd,renville,-101.1250,48.5000\nnd,bottineau,-101.1250,48.6250\nnd,bottineau,-101.1250,48.7500\nnd,bottineau,-101.1250,48.8750\ntx,roberts,-101.0000,36.0000\ntx,ochiltree,-101.0000,36.1250\ntx,ochiltree,-101.0000,36.2500\ntx,ochiltree,-101.0000,36.3750\nok,texas,-101.0000,36.5000\nok,texas,-101.0000,36.6250\nok,texas,-101.0000,36.7500\nok,texas,-101.0000,36.8750\nks,seward,-101.0000,37.0000\nks,seward,-101.0000,37.1250\nks,seward,-101.0000,37.2500\nks,seward,-101.0000,37.3750\nks,haskell,-101.0000,37.5000\nks,haskell,-101.0000,37.6250\nks,finney,-101.0000,37.7500\nks,finney,-101.0000,37.8750\nks,finney,-101.0000,38.0000\nks,finney,-101.0000,38.1250\nks,finney,-101.0000,38.2500\nks,scott,-101.0000,38.3750\nks,scott,-101.0000,38.5000\nks,scott,-101.0000,38.6250\nks,logan,-101.0000,38.7500\nks,logan,-101.0000,38.8750\nks,logan,-101.0000,39.0000\nks,logan,-101.0000,39.1250\nks,thomas,-101.0000,39.2500\nks,thomas,-101.0000,39.3750\nks,thomas,-101.0000,39.5000\nks,rawlins,-101.0000,39.6250\nks,rawlins,-101.0000,39.7500\nks,rawlins,-101.0000,39.8750\nks,rawlins,-101.0000,40.0000\nne,hitchcock,-101.0000,40.1250\nne,hitchcock,-101.0000,40.2500\nne,hayes,-101.0000,40.3750\nne,hayes,-101.0000,40.5000\nne,hayes,-101.0000,40.6250\nne,lincoln,-101.0000,40.7500\nne,lincoln,-101.0000,40.8750\nne,lincoln,-101.0000,41.0000\nne,lincoln,-101.0000,41.1250\nne,lincoln,-101.0000,41.2500\nne,lincoln,-101.0000,41.3750\nne,mcpherson,-101.0000,41.5000\nne,mcpherson,-101.0000,41.6250\nne,hooker,-101.0000,41.7500\nne,hooker,-101.0000,41.8750\nne,hooker,-101.0000,42.0000\nne,cherry,-101.0000,42.1250\nne,cherry,-101.0000,42.2500\nne,cherry,-101.0000,42.3750\nne,cherry,-101.0000,42.5000\nne,cherry,-101.0000,42.6250\nne,cherry,-101.0000,42.7500\nne,cherry,-101.0000,42.8750\nsd,todd,-101.0000,43.0000\nsd,todd,-101.0000,43.1250\nsd,todd,-101.0000,43.2500\nsd,todd,-101.0000,43.3750\nsd,mellette,-101.0000,43.5000\nsd,mellette,-101.0000,43.6250\nsd,mellette,-101.0000,43.7500\nsd,jones,-101.0000,43.8750\nsd,jones,-101.0000,44.0000\nsd,jones,-101.0000,44.1250\nsd,stanley,-101.0000,44.2500\nsd,stanley,-101.0000,44.3750\nsd,stanley,-101.0000,44.5000\nsd,stanley,-101.0000,44.6250\nsd,dewey,-101.0000,44.7500\nsd,dewey,-101.0000,44.8750\nsd,dewey,-101.0000,45.0000\nsd,dewey,-101.0000,45.1250\nsd,dewey,-101.0000,45.2500\nsd,dewey,-101.0000,45.3750\nsd,corson,-101.0000,45.5000\nsd,corson,-101.0000,45.6250\nsd,corson,-101.0000,45.7500\nsd,corson,-101.0000,45.8750\nnd,sioux,-101.0000,46.0000\nnd,sioux,-101.0000,46.1250\nnd,sioux,-101.0000,46.2500\nnd,morton,-101.0000,46.3750\nnd,morton,-101.0000,46.5000\nnd,morton,-101.0000,46.6250\nnd,morton,-101.0000,46.7500\nnd,morton,-101.0000,46.8750\nnd,oliver,-101.0000,47.0000\nnd,oliver,-101.0000,47.1250\nnd,oliver,-101.0000,47.2500\nnd,mclean,-101.0000,47.3750\nnd,mclean,-101.0000,47.5000\nnd,mclean,-101.0000,47.6250\nnd,mclean,-101.0000,47.7500\nnd,ward,-101.0000,47.8750\nnd,ward,-101.0000,48.0000\nnd,mchenry,-101.0000,48.1250\nnd,mchenry,-101.0000,48.2500\nnd,mchenry,-101.0000,48.3750\nnd,mchenry,-101.0000,48.5000\nnd,mchenry,-101.0000,48.6250\nnd,bottineau,-101.0000,48.7500\nnd,bottineau,-101.0000,48.8750\ntx,roberts,-100.8750,36.0000\ntx,ochiltree,-100.8750,36.1250\ntx,ochiltree,-100.8750,36.2500\ntx,ochiltree,-100.8750,36.3750\nok,beaver,-100.8750,36.5000\nok,beaver,-100.8750,36.6250\nok,beaver,-100.8750,36.7500\nok,beaver,-100.8750,36.8750\nks,seward,-100.8750,37.0000\nks,seward,-100.8750,37.1250\nks,seward,-100.8750,37.2500\nks,seward,-100.8750,37.3750\nks,haskell,-100.8750,37.5000\nks,haskell,-100.8750,37.6250\nks,finney,-100.8750,37.7500\nks,finney,-100.8750,37.8750\nks,finney,-100.8750,38.0000\nks,finney,-100.8750,38.1250\nks,finney,-100.8750,38.2500\nks,scott,-100.8750,38.3750\nks,scott,-100.8750,38.5000\nks,scott,-100.8750,38.6250\nks,logan,-100.8750,38.7500\nks,logan,-100.8750,38.8750\nks,logan,-100.8750,39.0000\nks,logan,-100.8750,39.1250\nks,thomas,-100.8750,39.2500\nks,thomas,-100.8750,39.3750\nks,thomas,-100.8750,39.5000\nks,rawlins,-100.8750,39.6250\nks,rawlins,-100.8750,39.7500\nks,rawlins,-100.8750,39.8750\nks,rawlins,-100.8750,40.0000\nne,hitchcock,-100.8750,40.1250\nne,hitchcock,-100.8750,40.2500\nne,hayes,-100.8750,40.3750\nne,hayes,-100.8750,40.5000\nne,hayes,-100.8750,40.6250\nne,lincoln,-100.8750,40.7500\nne,lincoln,-100.8750,40.8750\nne,lincoln,-100.8750,41.0000\nne,lincoln,-100.8750,41.1250\nne,lincoln,-100.8750,41.2500\nne,lincoln,-100.8750,41.3750\nne,mcpherson,-100.8750,41.5000\nne,mcpherson,-100.8750,41.6250\nne,hooker,-100.8750,41.7500\nne,hooker,-100.8750,41.8750\nne,hooker,-100.8750,42.0000\nne,cherry,-100.8750,42.1250\nne,cherry,-100.8750,42.2500\nne,cherry,-100.8750,42.3750\nne,cherry,-100.8750,42.5000\nne,cherry,-100.8750,42.6250\nne,cherry,-100.8750,42.7500\nne,cherry,-100.8750,42.8750\nsd,todd,-100.8750,43.0000\nsd,todd,-100.8750,43.1250\nsd,todd,-100.8750,43.2500\nsd,todd,-100.8750,43.3750\nsd,mellette,-100.8750,43.5000\nsd,mellette,-100.8750,43.6250\nsd,mellette,-100.8750,43.7500\nsd,jones,-100.8750,43.8750\nsd,jones,-100.8750,44.0000\nsd,jones,-100.8750,44.1250\nsd,stanley,-100.8750,44.2500\nsd,stanley,-100.8750,44.3750\nsd,stanley,-100.8750,44.5000\nsd,stanley,-100.8750,44.6250\nsd,stanley,-100.8750,44.7500\nsd,dewey,-100.8750,44.8750\nsd,dewey,-100.8750,45.0000\nsd,dewey,-100.8750,45.1250\nsd,dewey,-100.8750,45.2500\nsd,dewey,-100.8750,45.3750\nsd,corson,-100.8750,45.5000\nsd,corson,-100.8750,45.6250\nsd,corson,-100.8750,45.7500\nsd,corson,-100.8750,45.8750\nnd,sioux,-100.8750,46.0000\nnd,sioux,-100.8750,46.1250\nnd,sioux,-100.8750,46.2500\nnd,sioux,-100.8750,46.3750\nnd,morton,-100.8750,46.5000\nnd,morton,-100.8750,46.6250\nnd,morton,-100.8750,46.7500\nnd,burleigh,-100.8750,46.8750\nnd,burleigh,-100.8750,47.0000\nnd,burleigh,-100.8750,47.1250\nnd,mclean,-100.8750,47.2500\nnd,mclean,-100.8750,47.3750\nnd,mclean,-100.8750,47.5000\nnd,mclean,-100.8750,47.6250\nnd,mclean,-100.8750,47.7500\nnd,mchenry,-100.8750,47.8750\nnd,mchenry,-100.8750,48.0000\nnd,mchenry,-100.8750,48.1250\nnd,mchenry,-100.8750,48.2500\nnd,mchenry,-100.8750,48.3750\nnd,mchenry,-100.8750,48.5000\nnd,mchenry,-100.8750,48.6250\nnd,bottineau,-100.8750,48.7500\nnd,bottineau,-100.8750,48.8750\ntx,roberts,-100.7500,36.0000\ntx,ochiltree,-100.7500,36.1250\ntx,ochiltree,-100.7500,36.2500\ntx,ochiltree,-100.7500,36.3750\nok,beaver,-100.7500,36.5000\nok,beaver,-100.7500,36.6250\nok,beaver,-100.7500,36.7500\nok,beaver,-100.7500,36.8750\nks,seward,-100.7500,37.0000\nks,seward,-100.7500,37.1250\nks,seward,-100.7500,37.2500\nks,seward,-100.7500,37.3750\nks,haskell,-100.7500,37.5000\nks,haskell,-100.7500,37.6250\nks,finney,-100.7500,37.7500\nks,finney,-100.7500,37.8750\nks,finney,-100.7500,38.0000\nks,finney,-100.7500,38.1250\nks,finney,-100.7500,38.2500\nks,scott,-100.7500,38.3750\nks,scott,-100.7500,38.5000\nks,scott,-100.7500,38.6250\nks,gove,-100.7500,38.7500\nks,gove,-100.7500,38.8750\nks,gove,-100.7500,39.0000\nks,gove,-100.7500,39.1250\nks,thomas,-100.7500,39.2500\nks,thomas,-100.7500,39.3750\nks,thomas,-100.7500,39.5000\nks,rawlins,-100.7500,39.6250\nks,rawlins,-100.7500,39.7500\nks,rawlins,-100.7500,39.8750\nks,rawlins,-100.7500,40.0000\nne,red willow,-100.7500,40.1250\nne,red willow,-100.7500,40.2500\nne,frontier,-100.7500,40.3750\nne,frontier,-100.7500,40.5000\nne,frontier,-100.7500,40.6250\nne,lincoln,-100.7500,40.7500\nne,lincoln,-100.7500,40.8750\nne,lincoln,-100.7500,41.0000\nne,lincoln,-100.7500,41.1250\nne,lincoln,-100.7500,41.2500\nne,lincoln,-100.7500,41.3750\nne,mcpherson,-100.7500,41.5000\nne,mcpherson,-100.7500,41.6250\nne,thomas,-100.7500,41.7500\nne,thomas,-100.7500,41.8750\nne,thomas,-100.7500,42.0000\nne,cherry,-100.7500,42.1250\nne,cherry,-100.7500,42.2500\nne,cherry,-100.7500,42.3750\nne,cherry,-100.7500,42.5000\nne,cherry,-100.7500,42.6250\nne,cherry,-100.7500,42.7500\nne,cherry,-100.7500,42.8750\nsd,todd,-100.7500,43.0000\nsd,todd,-100.7500,43.1250\nsd,todd,-100.7500,43.2500\nsd,todd,-100.7500,43.3750\nsd,mellette,-100.7500,43.5000\nsd,mellette,-100.7500,43.6250\nsd,jones,-100.7500,43.7500\nsd,jones,-100.7500,43.8750\nsd,jones,-100.7500,44.0000\nsd,jones,-100.7500,44.1250\nsd,stanley,-100.7500,44.2500\nsd,stanley,-100.7500,44.3750\nsd,stanley,-100.7500,44.5000\nsd,stanley,-100.7500,44.6250\nsd,stanley,-100.7500,44.7500\nsd,dewey,-100.7500,44.8750\nsd,dewey,-100.7500,45.0000\nsd,dewey,-100.7500,45.1250\nsd,dewey,-100.7500,45.2500\nsd,dewey,-100.7500,45.3750\nsd,corson,-100.7500,45.5000\nsd,corson,-100.7500,45.6250\nsd,corson,-100.7500,45.7500\nsd,corson,-100.7500,45.8750\nnd,sioux,-100.7500,46.0000\nnd,sioux,-100.7500,46.1250\nnd,sioux,-100.7500,46.2500\nnd,sioux,-100.7500,46.3750\nnd,morton,-100.7500,46.5000\nnd,morton,-100.7500,46.6250\nnd,burleigh,-100.7500,46.7500\nnd,burleigh,-100.7500,46.8750\nnd,burleigh,-100.7500,47.0000\nnd,burleigh,-100.7500,47.1250\nnd,mclean,-100.7500,47.2500\nnd,mclean,-100.7500,47.3750\nnd,mclean,-100.7500,47.5000\nnd,mclean,-100.7500,47.6250\nnd,mclean,-100.7500,47.7500\nnd,mchenry,-100.7500,47.8750\nnd,mchenry,-100.7500,48.0000\nnd,mchenry,-100.7500,48.1250\nnd,mchenry,-100.7500,48.2500\nnd,mchenry,-100.7500,48.3750\nnd,mchenry,-100.7500,48.5000\nnd,mchenry,-100.7500,48.6250\nnd,bottineau,-100.7500,48.7500\nnd,bottineau,-100.7500,48.8750\ntx,roberts,-100.6250,36.0000\ntx,ochiltree,-100.6250,36.1250\ntx,ochiltree,-100.6250,36.2500\ntx,ochiltree,-100.6250,36.3750\nok,beaver,-100.6250,36.5000\nok,beaver,-100.6250,36.6250\nok,beaver,-100.6250,36.7500\nok,beaver,-100.6250,36.8750\nok,beaver,-100.6250,37.0000\nks,meade,-100.6250,37.1250\nks,meade,-100.6250,37.2500\nks,meade,-100.6250,37.3750\nks,gray,-100.6250,37.5000\nks,gray,-100.6250,37.6250\nks,gray,-100.6250,37.7500\nks,gray,-100.6250,37.8750\nks,gray,-100.6250,38.0000\nks,finney,-100.6250,38.1250\nks,finney,-100.6250,38.2500\nks,lane,-100.6250,38.3750\nks,lane,-100.6250,38.5000\nks,lane,-100.6250,38.6250\nks,gove,-100.6250,38.7500\nks,gove,-100.6250,38.8750\nks,gove,-100.6250,39.0000\nks,gove,-100.6250,39.1250\nks,sheridan,-100.6250,39.2500\nks,sheridan,-100.6250,39.3750\nks,sheridan,-100.6250,39.5000\nks,decatur,-100.6250,39.6250\nks,decatur,-100.6250,39.7500\nks,decatur,-100.6250,39.8750\nks,decatur,-100.6250,40.0000\nne,red willow,-100.6250,40.1250\nne,red willow,-100.6250,40.2500\nne,frontier,-100.6250,40.3750\nne,frontier,-100.6250,40.5000\nne,frontier,-100.6250,40.6250\nne,lincoln,-100.6250,40.7500\nne,lincoln,-100.6250,40.8750\nne,lincoln,-100.6250,41.0000\nne,lincoln,-100.6250,41.1250\nne,lincoln,-100.6250,41.2500\nne,lincoln,-100.6250,41.3750\nne,logan,-100.6250,41.5000\nne,logan,-100.6250,41.6250\nne,thomas,-100.6250,41.7500\nne,thomas,-100.6250,41.8750\nne,thomas,-100.6250,42.0000\nne,cherry,-100.6250,42.1250\nne,cherry,-100.6250,42.2500\nne,cherry,-100.6250,42.3750\nne,cherry,-100.6250,42.5000\nne,cherry,-100.6250,42.6250\nne,cherry,-100.6250,42.7500\nne,cherry,-100.6250,42.8750\nsd,todd,-100.6250,43.0000\nsd,todd,-100.6250,43.1250\nsd,todd,-100.6250,43.2500\nsd,todd,-100.6250,43.3750\nsd,mellette,-100.6250,43.5000\nsd,mellette,-100.6250,43.6250\nsd,jones,-100.6250,43.7500\nsd,jones,-100.6250,43.8750\nsd,jones,-100.6250,44.0000\nsd,jones,-100.6250,44.1250\nsd,stanley,-100.6250,44.2500\nsd,stanley,-100.6250,44.3750\nsd,stanley,-100.6250,44.5000\nsd,sully,-100.6250,44.6250\nsd,sully,-100.6250,44.7500\nsd,dewey,-100.6250,44.8750\nsd,dewey,-100.6250,45.0000\nsd,dewey,-100.6250,45.1250\nsd,dewey,-100.6250,45.2500\nsd,dewey,-100.6250,45.3750\nsd,corson,-100.6250,45.5000\nsd,corson,-100.6250,45.6250\nsd,corson,-100.6250,45.7500\nsd,corson,-100.6250,45.8750\nnd,sioux,-100.6250,46.0000\nnd,sioux,-100.6250,46.1250\nnd,sioux,-100.6250,46.2500\nnd,sioux,-100.6250,46.3750\nnd,morton,-100.6250,46.5000\nnd,emmons,-100.6250,46.6250\nnd,burleigh,-100.6250,46.7500\nnd,burleigh,-100.6250,46.8750\nnd,burleigh,-100.6250,47.0000\nnd,burleigh,-100.6250,47.1250\nnd,burleigh,-100.6250,47.2500\nnd,sheridan,-100.6250,47.3750\nnd,sheridan,-100.6250,47.5000\nnd,sheridan,-100.6250,47.6250\nnd,mclean,-100.6250,47.7500\nnd,mchenry,-100.6250,47.8750\nnd,mchenry,-100.6250,48.0000\nnd,mchenry,-100.6250,48.1250\nnd,mchenry,-100.6250,48.2500\nnd,mchenry,-100.6250,48.3750\nnd,mchenry,-100.6250,48.5000\nnd,mchenry,-100.6250,48.6250\nnd,bottineau,-100.6250,48.7500\nnd,bottineau,-100.6250,48.8750\ntx,hemphill,-100.5000,36.0000\ntx,lipscomb,-100.5000,36.1250\ntx,lipscomb,-100.5000,36.2500\ntx,lipscomb,-100.5000,36.3750\nok,beaver,-100.5000,36.5000\nok,beaver,-100.5000,36.6250\nok,beaver,-100.5000,36.7500\nok,beaver,-100.5000,36.8750\nok,beaver,-100.5000,37.0000\nks,meade,-100.5000,37.1250\nks,meade,-100.5000,37.2500\nks,meade,-100.5000,37.3750\nks,gray,-100.5000,37.5000\nks,gray,-100.5000,37.6250\nks,gray,-100.5000,37.7500\nks,gray,-100.5000,37.8750\nks,gray,-100.5000,38.0000\nks,finney,-100.5000,38.1250\nks,finney,-100.5000,38.2500\nks,lane,-100.5000,38.3750\nks,lane,-100.5000,38.5000\nks,lane,-100.5000,38.6250\nks,gove,-100.5000,38.7500\nks,gove,-100.5000,38.8750\nks,gove,-100.5000,39.0000\nks,gove,-100.5000,39.1250\nks,sheridan,-100.5000,39.2500\nks,sheridan,-100.5000,39.3750\nks,sheridan,-100.5000,39.5000\nks,decatur,-100.5000,39.6250\nks,decatur,-100.5000,39.7500\nks,decatur,-100.5000,39.8750\nks,decatur,-100.5000,40.0000\nne,red willow,-100.5000,40.1250\nne,red willow,-100.5000,40.2500\nne,frontier,-100.5000,40.3750\nne,frontier,-100.5000,40.5000\nne,frontier,-100.5000,40.6250\nne,lincoln,-100.5000,40.7500\nne,lincoln,-100.5000,40.8750\nne,lincoln,-100.5000,41.0000\nne,lincoln,-100.5000,41.1250\nne,lincoln,-100.5000,41.2500\nne,lincoln,-100.5000,41.3750\nne,logan,-100.5000,41.5000\nne,logan,-100.5000,41.6250\nne,thomas,-100.5000,41.7500\nne,thomas,-100.5000,41.8750\nne,thomas,-100.5000,42.0000\nne,cherry,-100.5000,42.1250\nne,cherry,-100.5000,42.2500\nne,cherry,-100.5000,42.3750\nne,cherry,-100.5000,42.5000\nne,cherry,-100.5000,42.6250\nne,cherry,-100.5000,42.7500\nne,cherry,-100.5000,42.8750\nsd,todd,-100.5000,43.0000\nsd,todd,-100.5000,43.1250\nsd,todd,-100.5000,43.2500\nsd,todd,-100.5000,43.3750\nsd,mellette,-100.5000,43.5000\nsd,mellette,-100.5000,43.6250\nsd,jones,-100.5000,43.7500\nsd,jones,-100.5000,43.8750\nsd,jones,-100.5000,44.0000\nsd,jones,-100.5000,44.1250\nsd,stanley,-100.5000,44.2500\nsd,stanley,-100.5000,44.3750\nsd,hughes,-100.5000,44.5000\nsd,sully,-100.5000,44.6250\nsd,sully,-100.5000,44.7500\nsd,dewey,-100.5000,44.8750\nsd,dewey,-100.5000,45.0000\nsd,dewey,-100.5000,45.1250\nsd,dewey,-100.5000,45.2500\nsd,dewey,-100.5000,45.3750\nsd,corson,-100.5000,45.5000\nsd,corson,-100.5000,45.6250\nsd,corson,-100.5000,45.7500\nsd,corson,-100.5000,45.8750\nnd,emmons,-100.5000,46.0000\nnd,emmons,-100.5000,46.1250\nnd,emmons,-100.5000,46.2500\nnd,emmons,-100.5000,46.3750\nnd,emmons,-100.5000,46.5000\nnd,emmons,-100.5000,46.6250\nnd,burleigh,-100.5000,46.7500\nnd,burleigh,-100.5000,46.8750\nnd,burleigh,-100.5000,47.0000\nnd,burleigh,-100.5000,47.1250\nnd,burleigh,-100.5000,47.2500\nnd,sheridan,-100.5000,47.3750\nnd,sheridan,-100.5000,47.5000\nnd,sheridan,-100.5000,47.6250\nnd,sheridan,-100.5000,47.7500\nnd,mchenry,-100.5000,47.8750\nnd,mchenry,-100.5000,48.0000\nnd,mchenry,-100.5000,48.1250\nnd,mchenry,-100.5000,48.2500\nnd,mchenry,-100.5000,48.3750\nnd,mchenry,-100.5000,48.5000\nnd,mchenry,-100.5000,48.6250\nnd,bottineau,-100.5000,48.7500\nnd,bottineau,-100.5000,48.8750\ntx,hemphill,-100.3750,36.0000\ntx,lipscomb,-100.3750,36.1250\ntx,lipscomb,-100.3750,36.2500\ntx,lipscomb,-100.3750,36.3750\nok,beaver,-100.3750,36.5000\nok,beaver,-100.3750,36.6250\nok,beaver,-100.3750,36.7500\nok,beaver,-100.3750,36.8750\nok,beaver,-100.3750,37.0000\nks,meade,-100.3750,37.1250\nks,meade,-100.3750,37.2500\nks,meade,-100.3750,37.3750\nks,gray,-100.3750,37.5000\nks,gray,-100.3750,37.6250\nks,gray,-100.3750,37.7500\nks,gray,-100.3750,37.8750\nks,gray,-100.3750,38.0000\nks,finney,-100.3750,38.1250\nks,finney,-100.3750,38.2500\nks,lane,-100.3750,38.3750\nks,lane,-100.3750,38.5000\nks,lane,-100.3750,38.6250\nks,gove,-100.3750,38.7500\nks,gove,-100.3750,38.8750\nks,gove,-100.3750,39.0000\nks,gove,-100.3750,39.1250\nks,sheridan,-100.3750,39.2500\nks,sheridan,-100.3750,39.3750\nks,sheridan,-100.3750,39.5000\nks,decatur,-100.3750,39.6250\nks,decatur,-100.3750,39.7500\nks,decatur,-100.3750,39.8750\nks,decatur,-100.3750,40.0000\nne,red willow,-100.3750,40.1250\nne,red willow,-100.3750,40.2500\nne,frontier,-100.3750,40.3750\nne,frontier,-100.3750,40.5000\nne,frontier,-100.3750,40.6250\nne,lincoln,-100.3750,40.7500\nne,lincoln,-100.3750,40.8750\nne,lincoln,-100.3750,41.0000\nne,lincoln,-100.3750,41.1250\nne,lincoln,-100.3750,41.2500\nne,lincoln,-100.3750,41.3750\nne,logan,-100.3750,41.5000\nne,logan,-100.3750,41.6250\nne,thomas,-100.3750,41.7500\nne,thomas,-100.3750,41.8750\nne,thomas,-100.3750,42.0000\nne,cherry,-100.3750,42.1250\nne,cherry,-100.3750,42.2500\nne,cherry,-100.3750,42.3750\nne,cherry,-100.3750,42.5000\nne,cherry,-100.3750,42.6250\nne,cherry,-100.3750,42.7500\nne,cherry,-100.3750,42.8750\nsd,todd,-100.3750,43.0000\nsd,todd,-100.3750,43.1250\nsd,todd,-100.3750,43.2500\nsd,todd,-100.3750,43.3750\nsd,mellette,-100.3750,43.5000\nsd,mellette,-100.3750,43.6250\nsd,jones,-100.3750,43.7500\nsd,jones,-100.3750,43.8750\nsd,jones,-100.3750,44.0000\nsd,jones,-100.3750,44.1250\nsd,stanley,-100.3750,44.2500\nsd,stanley,-100.3750,44.3750\nsd,hughes,-100.3750,44.5000\nsd,sully,-100.3750,44.6250\nsd,sully,-100.3750,44.7500\nsd,sully,-100.3750,44.8750\nsd,potter,-100.3750,45.0000\nsd,dewey,-100.3750,45.1250\nsd,dewey,-100.3750,45.2500\nsd,dewey,-100.3750,45.3750\nsd,corson,-100.3750,45.5000\nsd,campbell,-100.3750,45.6250\nsd,corson,-100.3750,45.7500\nsd,campbell,-100.3750,45.8750\nnd,emmons,-100.3750,46.0000\nnd,emmons,-100.3750,46.1250\nnd,emmons,-100.3750,46.2500\nnd,emmons,-100.3750,46.3750\nnd,emmons,-100.3750,46.5000\nnd,emmons,-100.3750,46.6250\nnd,burleigh,-100.3750,46.7500\nnd,burleigh,-100.3750,46.8750\nnd,burleigh,-100.3750,47.0000\nnd,burleigh,-100.3750,47.1250\nnd,burleigh,-100.3750,47.2500\nnd,sheridan,-100.3750,47.3750\nnd,sheridan,-100.3750,47.5000\nnd,sheridan,-100.3750,47.6250\nnd,sheridan,-100.3750,47.7500\nnd,mchenry,-100.3750,47.8750\nnd,mchenry,-100.3750,48.0000\nnd,mchenry,-100.3750,48.1250\nnd,mchenry,-100.3750,48.2500\nnd,mchenry,-100.3750,48.3750\nnd,mchenry,-100.3750,48.5000\nnd,bottineau,-100.3750,48.6250\nnd,bottineau,-100.3750,48.7500\nnd,bottineau,-100.3750,48.8750\ntx,hemphill,-100.2500,36.0000\ntx,lipscomb,-100.2500,36.1250\ntx,lipscomb,-100.2500,36.2500\ntx,lipscomb,-100.2500,36.3750\nok,beaver,-100.2500,36.5000\nok,beaver,-100.2500,36.6250\nok,beaver,-100.2500,36.7500\nok,beaver,-100.2500,36.8750\nok,beaver,-100.2500,37.0000\nks,meade,-100.2500,37.1250\nks,meade,-100.2500,37.2500\nks,meade,-100.2500,37.3750\nks,gray,-100.2500,37.5000\nks,gray,-100.2500,37.6250\nks,gray,-100.2500,37.7500\nks,gray,-100.2500,37.8750\nks,gray,-100.2500,38.0000\nks,finney,-100.2500,38.1250\nks,finney,-100.2500,38.2500\nks,lane,-100.2500,38.3750\nks,lane,-100.2500,38.5000\nks,lane,-100.2500,38.6250\nks,gove,-100.2500,38.7500\nks,gove,-100.2500,38.8750\nks,gove,-100.2500,39.0000\nks,gove,-100.2500,39.1250\nks,sheridan,-100.2500,39.2500\nks,sheridan,-100.2500,39.3750\nks,sheridan,-100.2500,39.5000\nks,decatur,-100.2500,39.6250\nks,decatur,-100.2500,39.7500\nks,decatur,-100.2500,39.8750\nks,decatur,-100.2500,40.0000\nne,red willow,-100.2500,40.1250\nne,red willow,-100.2500,40.2500\nne,frontier,-100.2500,40.3750\nne,frontier,-100.2500,40.5000\nne,frontier,-100.2500,40.6250\nne,lincoln,-100.2500,40.7500\nne,lincoln,-100.2500,40.8750\nne,lincoln,-100.2500,41.0000\nne,lincoln,-100.2500,41.1250\nne,lincoln,-100.2500,41.2500\nne,lincoln,-100.2500,41.3750\nne,custer,-100.2500,41.5000\nne,custer,-100.2500,41.6250\nne,blaine,-100.2500,41.7500\nne,blaine,-100.2500,41.8750\nne,blaine,-100.2500,42.0000\nne,cherry,-100.2500,42.1250\nne,cherry,-100.2500,42.2500\nne,cherry,-100.2500,42.3750\nne,cherry,-100.2500,42.5000\nne,cherry,-100.2500,42.6250\nne,cherry,-100.2500,42.7500\nne,cherry,-100.2500,42.8750\nsd,todd,-100.2500,43.0000\nsd,todd,-100.2500,43.1250\nsd,todd,-100.2500,43.2500\nsd,todd,-100.2500,43.3750\nsd,mellette,-100.2500,43.5000\nsd,mellette,-100.2500,43.6250\nsd,lyman,-100.2500,43.7500\nsd,lyman,-100.2500,43.8750\nsd,lyman,-100.2500,44.0000\nsd,lyman,-100.2500,44.1250\nsd,stanley,-100.2500,44.2500\nsd,hughes,-100.2500,44.3750\nsd,hughes,-100.2500,44.5000\nsd,sully,-100.2500,44.6250\nsd,sully,-100.2500,44.7500\nsd,sully,-100.2500,44.8750\nsd,potter,-100.2500,45.0000\nsd,potter,-100.2500,45.1250\nsd,walworth,-100.2500,45.2500\nsd,walworth,-100.2500,45.3750\nsd,walworth,-100.2500,45.5000\nsd,campbell,-100.2500,45.6250\nsd,campbell,-100.2500,45.7500\nsd,campbell,-100.2500,45.8750\nnd,emmons,-100.2500,46.0000\nnd,emmons,-100.2500,46.1250\nnd,emmons,-100.2500,46.2500\nnd,emmons,-100.2500,46.3750\nnd,emmons,-100.2500,46.5000\nnd,emmons,-100.2500,46.6250\nnd,burleigh,-100.2500,46.7500\nnd,burleigh,-100.2500,46.8750\nnd,burleigh,-100.2500,47.0000\nnd,burleigh,-100.2500,47.1250\nnd,burleigh,-100.2500,47.2500\nnd,sheridan,-100.2500,47.3750\nnd,sheridan,-100.2500,47.5000\nnd,sheridan,-100.2500,47.6250\nnd,sheridan,-100.2500,47.7500\nnd,mchenry,-100.2500,47.8750\nnd,mchenry,-100.2500,48.0000\nnd,mchenry,-100.2500,48.1250\nnd,mchenry,-100.2500,48.2500\nnd,pierce,-100.2500,48.3750\nnd,pierce,-100.2500,48.5000\nnd,bottineau,-100.2500,48.6250\nnd,bottineau,-100.2500,48.7500\nnd,bottineau,-100.2500,48.8750\ntx,hemphill,-100.1250,36.0000\ntx,lipscomb,-100.1250,36.1250\ntx,lipscomb,-100.1250,36.2500\ntx,lipscomb,-100.1250,36.3750\nok,beaver,-100.1250,36.5000\nok,beaver,-100.1250,36.6250\nok,beaver,-100.1250,36.7500\nok,beaver,-100.1250,36.8750\nok,beaver,-100.1250,37.0000\nks,meade,-100.1250,37.1250\nks,meade,-100.1250,37.2500\nks,meade,-100.1250,37.3750\nks,ford,-100.1250,37.5000\nks,ford,-100.1250,37.6250\nks,ford,-100.1250,37.7500\nks,ford,-100.1250,37.8750\nks,hodgeman,-100.1250,38.0000\nks,hodgeman,-100.1250,38.1250\nks,hodgeman,-100.1250,38.2500\nks,ness,-100.1250,38.3750\nks,ness,-100.1250,38.5000\nks,ness,-100.1250,38.6250\nks,trego,-100.1250,38.7500\nks,trego,-100.1250,38.8750\nks,trego,-100.1250,39.0000\nks,trego,-100.1250,39.1250\nks,graham,-100.1250,39.2500\nks,graham,-100.1250,39.3750\nks,graham,-100.1250,39.5000\nks,norton,-100.1250,39.6250\nks,norton,-100.1250,39.7500\nks,norton,-100.1250,39.8750\nks,norton,-100.1250,40.0000\nne,furnas,-100.1250,40.1250\nne,furnas,-100.1250,40.2500\nne,frontier,-100.1250,40.3750\nne,frontier,-100.1250,40.5000\nne,frontier,-100.1250,40.6250\nne,dawson,-100.1250,40.7500\nne,dawson,-100.1250,40.8750\nne,dawson,-100.1250,41.0000\nne,custer,-100.1250,41.1250\nne,custer,-100.1250,41.2500\nne,custer,-100.1250,41.3750\nne,custer,-100.1250,41.5000\nne,custer,-100.1250,41.6250\nne,blaine,-100.1250,41.7500\nne,blaine,-100.1250,41.8750\nne,blaine,-100.1250,42.0000\nne,brown,-100.1250,42.1250\nne,brown,-100.1250,42.2500\nne,brown,-100.1250,42.3750\nne,brown,-100.1250,42.5000\nne,brown,-100.1250,42.6250\nne,brown,-100.1250,42.7500\nne,keya paha,-100.1250,42.8750\nsd,tripp,-100.1250,43.0000\nsd,tripp,-100.1250,43.1250\nsd,tripp,-100.1250,43.2500\nsd,tripp,-100.1250,43.3750\nsd,tripp,-100.1250,43.5000\nsd,tripp,-100.1250,43.6250\nsd,lyman,-100.1250,43.7500\nsd,lyman,-100.1250,43.8750\nsd,lyman,-100.1250,44.0000\nsd,lyman,-100.1250,44.1250\nsd,stanley,-100.1250,44.2500\nsd,hughes,-100.1250,44.3750\nsd,hughes,-100.1250,44.5000\nsd,sully,-100.1250,44.6250\nsd,sully,-100.1250,44.7500\nsd,sully,-100.1250,44.8750\nsd,potter,-100.1250,45.0000\nsd,potter,-100.1250,45.1250\nsd,walworth,-100.1250,45.2500\nsd,walworth,-100.1250,45.3750\nsd,walworth,-100.1250,45.5000\nsd,campbell,-100.1250,45.6250\nsd,campbell,-100.1250,45.7500\nsd,campbell,-100.1250,45.8750\nnd,emmons,-100.1250,46.0000\nnd,emmons,-100.1250,46.1250\nnd,emmons,-100.1250,46.2500\nnd,emmons,-100.1250,46.3750\nnd,emmons,-100.1250,46.5000\nnd,emmons,-100.1250,46.6250\nnd,burleigh,-100.1250,46.7500\nnd,burleigh,-100.1250,46.8750\nnd,burleigh,-100.1250,47.0000\nnd,burleigh,-100.1250,47.1250\nnd,burleigh,-100.1250,47.2500\nnd,sheridan,-100.1250,47.3750\nnd,sheridan,-100.1250,47.5000\nnd,sheridan,-100.1250,47.6250\nnd,sheridan,-100.1250,47.7500\nnd,pierce,-100.1250,47.8750\nnd,pierce,-100.1250,48.0000\nnd,pierce,-100.1250,48.1250\nnd,pierce,-100.1250,48.2500\nnd,pierce,-100.1250,48.3750\nnd,pierce,-100.1250,48.5000\nnd,rolette,-100.1250,48.6250\nnd,rolette,-100.1250,48.7500\nnd,rolette,-100.1250,48.8750\nok,ellis,-100.0000,36.0000\nok,ellis,-100.0000,36.1250\nok,ellis,-100.0000,36.2500\nok,ellis,-100.0000,36.3750\nok,ellis,-100.0000,36.5000\nok,harper,-100.0000,36.6250\nok,harper,-100.0000,36.7500\nok,harper,-100.0000,36.8750\nok,harper,-100.0000,37.0000\nks,clark,-100.0000,37.1250\nks,clark,-100.0000,37.2500\nks,clark,-100.0000,37.3750\nks,ford,-100.0000,37.5000\nks,ford,-100.0000,37.6250\nks,ford,-100.0000,37.7500\nks,ford,-100.0000,37.8750\nks,hodgeman,-100.0000,38.0000\nks,hodgeman,-100.0000,38.1250\nks,hodgeman,-100.0000,38.2500\nks,ness,-100.0000,38.3750\nks,ness,-100.0000,38.5000\nks,ness,-100.0000,38.6250\nks,trego,-100.0000,38.7500\nks,trego,-100.0000,38.8750\nks,trego,-100.0000,39.0000\nks,trego,-100.0000,39.1250\nks,graham,-100.0000,39.2500\nks,graham,-100.0000,39.3750\nks,graham,-100.0000,39.5000\nks,norton,-100.0000,39.6250\nks,norton,-100.0000,39.7500\nks,norton,-100.0000,39.8750\nks,norton,-100.0000,40.0000\nne,furnas,-100.0000,40.1250\nne,furnas,-100.0000,40.2500\nne,gosper,-100.0000,40.3750\nne,frontier,-100.0000,40.5000\nne,frontier,-100.0000,40.6250\nne,dawson,-100.0000,40.7500\nne,dawson,-100.0000,40.8750\nne,dawson,-100.0000,41.0000\nne,custer,-100.0000,41.1250\nne,custer,-100.0000,41.2500\nne,custer,-100.0000,41.3750\nne,custer,-100.0000,41.5000\nne,custer,-100.0000,41.6250\nne,blaine,-100.0000,41.7500\nne,blaine,-100.0000,41.8750\nne,blaine,-100.0000,42.0000\nne,brown,-100.0000,42.1250\nne,brown,-100.0000,42.2500\nne,brown,-100.0000,42.3750\nne,brown,-100.0000,42.5000\nne,brown,-100.0000,42.6250\nne,brown,-100.0000,42.7500\nne,keya paha,-100.0000,42.8750\nsd,tripp,-100.0000,43.0000\nsd,tripp,-100.0000,43.1250\nsd,tripp,-100.0000,43.2500\nsd,tripp,-100.0000,43.3750\nsd,tripp,-100.0000,43.5000\nsd,tripp,-100.0000,43.6250\nsd,lyman,-100.0000,43.7500\nsd,lyman,-100.0000,43.8750\nsd,lyman,-100.0000,44.0000\nsd,lyman,-100.0000,44.1250\nsd,stanley,-100.0000,44.2500\nsd,hughes,-100.0000,44.3750\nsd,hughes,-100.0000,44.5000\nsd,sully,-100.0000,44.6250\nsd,sully,-100.0000,44.7500\nsd,sully,-100.0000,44.8750\nsd,potter,-100.0000,45.0000\nsd,potter,-100.0000,45.1250\nsd,walworth,-100.0000,45.2500\nsd,walworth,-100.0000,45.3750\nsd,walworth,-100.0000,45.5000\nsd,campbell,-100.0000,45.6250\nsd,campbell,-100.0000,45.7500\nsd,campbell,-100.0000,45.8750\nnd,emmons,-100.0000,46.0000\nnd,emmons,-100.0000,46.1250\nnd,emmons,-100.0000,46.2500\nnd,emmons,-100.0000,46.3750\nnd,emmons,-100.0000,46.5000\nnd,emmons,-100.0000,46.6250\nnd,kidder,-100.0000,46.7500\nnd,kidder,-100.0000,46.8750\nnd,kidder,-100.0000,47.0000\nnd,kidder,-100.0000,47.1250\nnd,kidder,-100.0000,47.2500\nnd,wells,-100.0000,47.3750\nnd,wells,-100.0000,47.5000\nnd,wells,-100.0000,47.6250\nnd,wells,-100.0000,47.7500\nnd,pierce,-100.0000,47.8750\nnd,pierce,-100.0000,48.0000\nnd,pierce,-100.0000,48.1250\nnd,pierce,-100.0000,48.2500\nnd,pierce,-100.0000,48.3750\nnd,pierce,-100.0000,48.5000\nnd,rolette,-100.0000,48.6250\nnd,rolette,-100.0000,48.7500\nnd,rolette,-100.0000,48.8750\nok,ellis,-99.8750,36.0000\nok,ellis,-99.8750,36.1250\nok,ellis,-99.8750,36.2500\nok,ellis,-99.8750,36.3750\nok,ellis,-99.8750,36.5000\nok,harper,-99.8750,36.6250\nok,harper,-99.8750,36.7500\nok,harper,-99.8750,36.8750\nok,harper,-99.8750,37.0000\nks,clark,-99.8750,37.1250\nks,clark,-99.8750,37.2500\nks,clark,-99.8750,37.3750\nks,ford,-99.8750,37.5000\nks,ford,-99.8750,37.6250\nks,ford,-99.8750,37.7500\nks,ford,-99.8750,37.8750\nks,hodgeman,-99.8750,38.0000\nks,hodgeman,-99.8750,38.1250\nks,hodgeman,-99.8750,38.2500\nks,ness,-99.8750,38.3750\nks,ness,-99.8750,38.5000\nks,ness,-99.8750,38.6250\nks,trego,-99.8750,38.7500\nks,trego,-99.8750,38.8750\nks,trego,-99.8750,39.0000\nks,trego,-99.8750,39.1250\nks,graham,-99.8750,39.2500\nks,graham,-99.8750,39.3750\nks,graham,-99.8750,39.5000\nks,norton,-99.8750,39.6250\nks,norton,-99.8750,39.7500\nks,norton,-99.8750,39.8750\nks,norton,-99.8750,40.0000\nne,furnas,-99.8750,40.1250\nne,furnas,-99.8750,40.2500\nne,gosper,-99.8750,40.3750\nne,gosper,-99.8750,40.5000\nne,gosper,-99.8750,40.6250\nne,dawson,-99.8750,40.7500\nne,dawson,-99.8750,40.8750\nne,dawson,-99.8750,41.0000\nne,custer,-99.8750,41.1250\nne,custer,-99.8750,41.2500\nne,custer,-99.8750,41.3750\nne,custer,-99.8750,41.5000\nne,custer,-99.8750,41.6250\nne,blaine,-99.8750,41.7500\nne,blaine,-99.8750,41.8750\nne,blaine,-99.8750,42.0000\nne,brown,-99.8750,42.1250\nne,brown,-99.8750,42.2500\nne,brown,-99.8750,42.3750\nne,brown,-99.8750,42.5000\nne,brown,-99.8750,42.6250\nne,brown,-99.8750,42.7500\nne,keya paha,-99.8750,42.8750\nsd,tripp,-99.8750,43.0000\nsd,tripp,-99.8750,43.1250\nsd,tripp,-99.8750,43.2500\nsd,tripp,-99.8750,43.3750\nsd,tripp,-99.8750,43.5000\nsd,tripp,-99.8750,43.6250\nsd,lyman,-99.8750,43.7500\nsd,lyman,-99.8750,43.8750\nsd,lyman,-99.8750,44.0000\nsd,lyman,-99.8750,44.1250\nsd,hughes,-99.8750,44.2500\nsd,hughes,-99.8750,44.3750\nsd,hughes,-99.8750,44.5000\nsd,sully,-99.8750,44.6250\nsd,sully,-99.8750,44.7500\nsd,sully,-99.8750,44.8750\nsd,potter,-99.8750,45.0000\nsd,potter,-99.8750,45.1250\nsd,walworth,-99.8750,45.2500\nsd,walworth,-99.8750,45.3750\nsd,walworth,-99.8750,45.5000\nsd,campbell,-99.8750,45.6250\nsd,campbell,-99.8750,45.7500\nsd,campbell,-99.8750,45.8750\nnd,mcintosh,-99.8750,46.0000\nnd,mcintosh,-99.8750,46.1250\nnd,mcintosh,-99.8750,46.2500\nnd,logan,-99.8750,46.3750\nnd,logan,-99.8750,46.5000\nnd,logan,-99.8750,46.6250\nnd,kidder,-99.8750,46.7500\nnd,kidder,-99.8750,46.8750\nnd,kidder,-99.8750,47.0000\nnd,kidder,-99.8750,47.1250\nnd,kidder,-99.8750,47.2500\nnd,wells,-99.8750,47.3750\nnd,wells,-99.8750,47.5000\nnd,wells,-99.8750,47.6250\nnd,wells,-99.8750,47.7500\nnd,pierce,-99.8750,47.8750\nnd,pierce,-99.8750,48.0000\nnd,pierce,-99.8750,48.1250\nnd,pierce,-99.8750,48.2500\nnd,pierce,-99.8750,48.3750\nnd,pierce,-99.8750,48.5000\nnd,rolette,-99.8750,48.6250\nnd,rolette,-99.8750,48.7500\nnd,rolette,-99.8750,48.8750\nok,ellis,-99.7500,36.0000\nok,ellis,-99.7500,36.1250\nok,ellis,-99.7500,36.2500\nok,ellis,-99.7500,36.3750\nok,ellis,-99.7500,36.5000\nok,harper,-99.7500,36.6250\nok,harper,-99.7500,36.7500\nok,harper,-99.7500,36.8750\nok,harper,-99.7500,37.0000\nks,clark,-99.7500,37.1250\nks,clark,-99.7500,37.2500\nks,clark,-99.7500,37.3750\nks,ford,-99.7500,37.5000\nks,ford,-99.7500,37.6250\nks,ford,-99.7500,37.7500\nks,ford,-99.7500,37.8750\nks,hodgeman,-99.7500,38.0000\nks,hodgeman,-99.7500,38.1250\nks,hodgeman,-99.7500,38.2500\nks,ness,-99.7500,38.3750\nks,ness,-99.7500,38.5000\nks,ness,-99.7500,38.6250\nks,trego,-99.7500,38.7500\nks,trego,-99.7500,38.8750\nks,trego,-99.7500,39.0000\nks,trego,-99.7500,39.1250\nks,graham,-99.7500,39.2500\nks,graham,-99.7500,39.3750\nks,graham,-99.7500,39.5000\nks,norton,-99.7500,39.6250\nks,norton,-99.7500,39.7500\nks,norton,-99.7500,39.8750\nks,norton,-99.7500,40.0000\nne,furnas,-99.7500,40.1250\nne,furnas,-99.7500,40.2500\nne,gosper,-99.7500,40.3750\nne,gosper,-99.7500,40.5000\nne,gosper,-99.7500,40.6250\nne,dawson,-99.7500,40.7500\nne,dawson,-99.7500,40.8750\nne,dawson,-99.7500,41.0000\nne,custer,-99.7500,41.1250\nne,custer,-99.7500,41.2500\nne,custer,-99.7500,41.3750\nne,custer,-99.7500,41.5000\nne,custer,-99.7500,41.6250\nne,blaine,-99.7500,41.7500\nne,blaine,-99.7500,41.8750\nne,blaine,-99.7500,42.0000\nne,brown,-99.7500,42.1250\nne,brown,-99.7500,42.2500\nne,brown,-99.7500,42.3750\nne,brown,-99.7500,42.5000\nne,brown,-99.7500,42.6250\nne,keya paha,-99.7500,42.7500\nne,keya paha,-99.7500,42.8750\nsd,tripp,-99.7500,43.0000\nsd,tripp,-99.7500,43.1250\nsd,tripp,-99.7500,43.2500\nsd,tripp,-99.7500,43.3750\nsd,tripp,-99.7500,43.5000\nsd,tripp,-99.7500,43.6250\nsd,lyman,-99.7500,43.7500\nsd,lyman,-99.7500,43.8750\nsd,lyman,-99.7500,44.0000\nsd,lyman,-99.7500,44.1250\nsd,hughes,-99.7500,44.2500\nsd,hughes,-99.7500,44.3750\nsd,hughes,-99.7500,44.5000\nsd,sully,-99.7500,44.6250\nsd,sully,-99.7500,44.7500\nsd,sully,-99.7500,44.8750\nsd,potter,-99.7500,45.0000\nsd,potter,-99.7500,45.1250\nsd,walworth,-99.7500,45.2500\nsd,walworth,-99.7500,45.3750\nsd,walworth,-99.7500,45.5000\nsd,campbell,-99.7500,45.6250\nsd,campbell,-99.7500,45.7500\nsd,campbell,-99.7500,45.8750\nnd,mcintosh,-99.7500,46.0000\nnd,mcintosh,-99.7500,46.1250\nnd,mcintosh,-99.7500,46.2500\nnd,logan,-99.7500,46.3750\nnd,logan,-99.7500,46.5000\nnd,logan,-99.7500,46.6250\nnd,kidder,-99.7500,46.7500\nnd,kidder,-99.7500,46.8750\nnd,kidder,-99.7500,47.0000\nnd,kidder,-99.7500,47.1250\nnd,kidder,-99.7500,47.2500\nnd,wells,-99.7500,47.3750\nnd,wells,-99.7500,47.5000\nnd,wells,-99.7500,47.6250\nnd,wells,-99.7500,47.7500\nnd,benson,-99.7500,47.8750\nnd,benson,-99.7500,48.0000\nnd,benson,-99.7500,48.1250\nnd,benson,-99.7500,48.2500\nnd,pierce,-99.7500,48.3750\nnd,pierce,-99.7500,48.5000\nnd,rolette,-99.7500,48.6250\nnd,rolette,-99.7500,48.7500\nnd,rolette,-99.7500,48.8750\nok,ellis,-99.6250,36.0000\nok,ellis,-99.6250,36.1250\nok,ellis,-99.6250,36.2500\nok,ellis,-99.6250,36.3750\nok,ellis,-99.6250,36.5000\nok,harper,-99.6250,36.6250\nok,harper,-99.6250,36.7500\nok,harper,-99.6250,36.8750\nks,clark,-99.6250,37.0000\nks,clark,-99.6250,37.1250\nks,clark,-99.6250,37.2500\nks,clark,-99.6250,37.3750\nks,ford,-99.6250,37.5000\nks,ford,-99.6250,37.6250\nks,ford,-99.6250,37.7500\nks,ford,-99.6250,37.8750\nks,hodgeman,-99.6250,38.0000\nks,hodgeman,-99.6250,38.1250\nks,hodgeman,-99.6250,38.2500\nks,ness,-99.6250,38.3750\nks,ness,-99.6250,38.5000\nks,ness,-99.6250,38.6250\nks,trego,-99.6250,38.7500\nks,trego,-99.6250,38.8750\nks,trego,-99.6250,39.0000\nks,trego,-99.6250,39.1250\nks,graham,-99.6250,39.2500\nks,graham,-99.6250,39.3750\nks,graham,-99.6250,39.5000\nks,phillips,-99.6250,39.6250\nks,phillips,-99.6250,39.7500\nks,phillips,-99.6250,39.8750\nks,phillips,-99.6250,40.0000\nne,harlan,-99.6250,40.1250\nne,harlan,-99.6250,40.2500\nne,phelps,-99.6250,40.3750\nne,phelps,-99.6250,40.5000\nne,phelps,-99.6250,40.6250\nne,dawson,-99.6250,40.7500\nne,dawson,-99.6250,40.8750\nne,dawson,-99.6250,41.0000\nne,custer,-99.6250,41.1250\nne,custer,-99.6250,41.2500\nne,custer,-99.6250,41.3750\nne,custer,-99.6250,41.5000\nne,custer,-99.6250,41.6250\nne,loup,-99.6250,41.7500\nne,loup,-99.6250,41.8750\nne,loup,-99.6250,42.0000\nne,rock,-99.6250,42.1250\nne,rock,-99.6250,42.2500\nne,rock,-99.6250,42.3750\nne,rock,-99.6250,42.5000\nne,rock,-99.6250,42.6250\nne,keya paha,-99.6250,42.7500\nne,keya paha,-99.6250,42.8750\nsd,tripp,-99.6250,43.0000\nsd,tripp,-99.6250,43.1250\nsd,tripp,-99.6250,43.2500\nsd,tripp,-99.6250,43.3750\nsd,tripp,-99.6250,43.5000\nsd,tripp,-99.6250,43.6250\nsd,lyman,-99.6250,43.7500\nsd,lyman,-99.6250,43.8750\nsd,lyman,-99.6250,44.0000\nsd,hughes,-99.6250,44.1250\nsd,hyde,-99.6250,44.2500\nsd,hyde,-99.6250,44.3750\nsd,hyde,-99.6250,44.5000\nsd,hyde,-99.6250,44.6250\nsd,hyde,-99.6250,44.7500\nsd,hyde,-99.6250,44.8750\nsd,potter,-99.6250,45.0000\nsd,potter,-99.6250,45.1250\nsd,edmunds,-99.6250,45.2500\nsd,edmunds,-99.6250,45.3750\nsd,edmunds,-99.6250,45.5000\nsd,mcpherson,-99.6250,45.6250\nsd,mcpherson,-99.6250,45.7500\nsd,mcpherson,-99.6250,45.8750\nnd,mcintosh,-99.6250,46.0000\nnd,mcintosh,-99.6250,46.1250\nnd,mcintosh,-99.6250,46.2500\nnd,logan,-99.6250,46.3750\nnd,logan,-99.6250,46.5000\nnd,logan,-99.6250,46.6250\nnd,kidder,-99.6250,46.7500\nnd,kidder,-99.6250,46.8750\nnd,kidder,-99.6250,47.0000\nnd,kidder,-99.6250,47.1250\nnd,kidder,-99.6250,47.2500\nnd,wells,-99.6250,47.3750\nnd,wells,-99.6250,47.5000\nnd,wells,-99.6250,47.6250\nnd,wells,-99.6250,47.7500\nnd,benson,-99.6250,47.8750\nnd,benson,-99.6250,48.0000\nnd,benson,-99.6250,48.1250\nnd,benson,-99.6250,48.2500\nnd,pierce,-99.6250,48.3750\nnd,pierce,-99.6250,48.5000\nnd,rolette,-99.6250,48.6250\nnd,rolette,-99.6250,48.7500\nnd,rolette,-99.6250,48.8750\nok,ellis,-99.5000,36.0000\nok,ellis,-99.5000,36.1250\nok,woodward,-99.5000,36.2500\nok,woodward,-99.5000,36.3750\nok,woodward,-99.5000,36.5000\nok,harper,-99.5000,36.6250\nok,harper,-99.5000,36.7500\nok,harper,-99.5000,36.8750\nks,comanche,-99.5000,37.0000\nks,comanche,-99.5000,37.1250\nks,comanche,-99.5000,37.2500\nks,comanche,-99.5000,37.3750\nks,kiowa,-99.5000,37.5000\nks,kiowa,-99.5000,37.6250\nks,edwards,-99.5000,37.7500\nks,edwards,-99.5000,37.8750\nks,edwards,-99.5000,38.0000\nks,pawnee,-99.5000,38.1250\nks,pawnee,-99.5000,38.2500\nks,rush,-99.5000,38.3750\nks,rush,-99.5000,38.5000\nks,rush,-99.5000,38.6250\nks,ellis,-99.5000,38.7500\nks,ellis,-99.5000,38.8750\nks,ellis,-99.5000,39.0000\nks,ellis,-99.5000,39.1250\nks,rooks,-99.5000,39.2500\nks,rooks,-99.5000,39.3750\nks,rooks,-99.5000,39.5000\nks,phillips,-99.5000,39.6250\nks,phillips,-99.5000,39.7500\nks,phillips,-99.5000,39.8750\nks,phillips,-99.5000,40.0000\nne,harlan,-99.5000,40.1250\nne,harlan,-99.5000,40.2500\nne,phelps,-99.5000,40.3750\nne,phelps,-99.5000,40.5000\nne,phelps,-99.5000,40.6250\nne,dawson,-99.5000,40.7500\nne,dawson,-99.5000,40.8750\nne,dawson,-99.5000,41.0000\nne,custer,-99.5000,41.1250\nne,custer,-99.5000,41.2500\nne,custer,-99.5000,41.3750\nne,custer,-99.5000,41.5000\nne,custer,-99.5000,41.6250\nne,loup,-99.5000,41.7500\nne,loup,-99.5000,41.8750\nne,loup,-99.5000,42.0000\nne,rock,-99.5000,42.1250\nne,rock,-99.5000,42.2500\nne,rock,-99.5000,42.3750\nne,rock,-99.5000,42.5000\nne,rock,-99.5000,42.6250\nne,keya paha,-99.5000,42.7500\nne,keya paha,-99.5000,42.8750\nsd,gregory,-99.5000,43.0000\nsd,gregory,-99.5000,43.1250\nsd,gregory,-99.5000,43.2500\nsd,gregory,-99.5000,43.3750\nsd,lyman,-99.5000,43.5000\nsd,lyman,-99.5000,43.6250\nsd,lyman,-99.5000,43.7500\nsd,lyman,-99.5000,43.8750\nsd,lyman,-99.5000,44.0000\nsd,buffalo,-99.5000,44.1250\nsd,hyde,-99.5000,44.2500\nsd,hyde,-99.5000,44.3750\nsd,hyde,-99.5000,44.5000\nsd,hyde,-99.5000,44.6250\nsd,hyde,-99.5000,44.7500\nsd,hyde,-99.5000,44.8750\nsd,faulk,-99.5000,45.0000\nsd,faulk,-99.5000,45.1250\nsd,edmunds,-99.5000,45.2500\nsd,edmunds,-99.5000,45.3750\nsd,edmunds,-99.5000,45.5000\nsd,mcpherson,-99.5000,45.6250\nsd,mcpherson,-99.5000,45.7500\nsd,mcpherson,-99.5000,45.8750\nnd,mcintosh,-99.5000,46.0000\nnd,mcintosh,-99.5000,46.1250\nnd,mcintosh,-99.5000,46.2500\nnd,logan,-99.5000,46.3750\nnd,logan,-99.5000,46.5000\nnd,logan,-99.5000,46.6250\nnd,kidder,-99.5000,46.7500\nnd,kidder,-99.5000,46.8750\nnd,kidder,-99.5000,47.0000\nnd,kidder,-99.5000,47.1250\nnd,kidder,-99.5000,47.2500\nnd,wells,-99.5000,47.3750\nnd,wells,-99.5000,47.5000\nnd,wells,-99.5000,47.6250\nnd,wells,-99.5000,47.7500\nnd,benson,-99.5000,47.8750\nnd,benson,-99.5000,48.0000\nnd,benson,-99.5000,48.1250\nnd,benson,-99.5000,48.2500\nnd,pierce,-99.5000,48.3750\nnd,pierce,-99.5000,48.5000\nnd,rolette,-99.5000,48.6250\nnd,towner,-99.5000,48.7500\nnd,towner,-99.5000,48.8750\nok,dewey,-99.3750,36.0000\nok,dewey,-99.3750,36.1250\nok,woodward,-99.3750,36.2500\nok,woodward,-99.3750,36.3750\nok,woodward,-99.3750,36.5000\nok,harper,-99.3750,36.6250\nok,harper,-99.3750,36.7500\nok,harper,-99.3750,36.8750\nok,woods,-99.3750,37.0000\nks,comanche,-99.3750,37.1250\nks,comanche,-99.3750,37.2500\nks,comanche,-99.3750,37.3750\nks,kiowa,-99.3750,37.5000\nks,kiowa,-99.3750,37.6250\nks,edwards,-99.3750,37.7500\nks,edwards,-99.3750,37.8750\nks,edwards,-99.3750,38.0000\nks,pawnee,-99.3750,38.1250\nks,pawnee,-99.3750,38.2500\nks,rush,-99.3750,38.3750\nks,rush,-99.3750,38.5000\nks,rush,-99.3750,38.6250\nks,ellis,-99.3750,38.7500\nks,ellis,-99.3750,38.8750\nks,ellis,-99.3750,39.0000\nks,ellis,-99.3750,39.1250\nks,rooks,-99.3750,39.2500\nks,rooks,-99.3750,39.3750\nks,rooks,-99.3750,39.5000\nks,phillips,-99.3750,39.6250\nks,phillips,-99.3750,39.7500\nks,phillips,-99.3750,39.8750\nks,phillips,-99.3750,40.0000\nne,harlan,-99.3750,40.1250\nne,harlan,-99.3750,40.2500\nne,phelps,-99.3750,40.3750\nne,phelps,-99.3750,40.5000\nne,phelps,-99.3750,40.6250\nne,buffalo,-99.3750,40.7500\nne,buffalo,-99.3750,40.8750\nne,buffalo,-99.3750,41.0000\nne,custer,-99.3750,41.1250\nne,custer,-99.3750,41.2500\nne,custer,-99.3750,41.3750\nne,custer,-99.3750,41.5000\nne,custer,-99.3750,41.6250\nne,loup,-99.3750,41.7500\nne,loup,-99.3750,41.8750\nne,loup,-99.3750,42.0000\nne,rock,-99.3750,42.1250\nne,rock,-99.3750,42.2500\nne,rock,-99.3750,42.3750\nne,rock,-99.3750,42.5000\nne,rock,-99.3750,42.6250\nne,rock,-99.3750,42.7500\nne,keya paha,-99.3750,42.8750\nsd,gregory,-99.3750,43.0000\nsd,gregory,-99.3750,43.1250\nsd,gregory,-99.3750,43.2500\nsd,gregory,-99.3750,43.3750\nsd,lyman,-99.3750,43.5000\nsd,lyman,-99.3750,43.6250\nsd,brule,-99.3750,43.7500\nsd,lyman,-99.3750,43.8750\nsd,lyman,-99.3750,44.0000\nsd,buffalo,-99.3750,44.1250\nsd,hyde,-99.3750,44.2500\nsd,hyde,-99.3750,44.3750\nsd,hyde,-99.3750,44.5000\nsd,hyde,-99.3750,44.6250\nsd,hyde,-99.3750,44.7500\nsd,hyde,-99.3750,44.8750\nsd,faulk,-99.3750,45.0000\nsd,faulk,-99.3750,45.1250\nsd,edmunds,-99.3750,45.2500\nsd,edmunds,-99.3750,45.3750\nsd,edmunds,-99.3750,45.5000\nsd,mcpherson,-99.3750,45.6250\nsd,mcpherson,-99.3750,45.7500\nsd,mcpherson,-99.3750,45.8750\nnd,mcintosh,-99.3750,46.0000\nnd,mcintosh,-99.3750,46.1250\nnd,mcintosh,-99.3750,46.2500\nnd,logan,-99.3750,46.3750\nnd,logan,-99.3750,46.5000\nnd,logan,-99.3750,46.6250\nnd,stutsman,-99.3750,46.7500\nnd,stutsman,-99.3750,46.8750\nnd,stutsman,-99.3750,47.0000\nnd,stutsman,-99.3750,47.1250\nnd,stutsman,-99.3750,47.2500\nnd,wells,-99.3750,47.3750\nnd,wells,-99.3750,47.5000\nnd,wells,-99.3750,47.6250\nnd,wells,-99.3750,47.7500\nnd,benson,-99.3750,47.8750\nnd,benson,-99.3750,48.0000\nnd,benson,-99.3750,48.1250\nnd,benson,-99.3750,48.2500\nnd,towner,-99.3750,48.3750\nnd,towner,-99.3750,48.5000\nnd,towner,-99.3750,48.6250\nnd,towner,-99.3750,48.7500\nnd,towner,-99.3750,48.8750\nok,dewey,-99.2500,36.0000\nok,dewey,-99.2500,36.1250\nok,woodward,-99.2500,36.2500\nok,woodward,-99.2500,36.3750\nok,woodward,-99.2500,36.5000\nok,woodward,-99.2500,36.6250\nok,woodward,-99.2500,36.7500\nok,woods,-99.2500,36.8750\nks,comanche,-99.2500,37.0000\nks,comanche,-99.2500,37.1250\nks,comanche,-99.2500,37.2500\nks,comanche,-99.2500,37.3750\nks,kiowa,-99.2500,37.5000\nks,kiowa,-99.2500,37.6250\nks,edwards,-99.2500,37.7500\nks,edwards,-99.2500,37.8750\nks,edwards,-99.2500,38.0000\nks,pawnee,-99.2500,38.1250\nks,pawnee,-99.2500,38.2500\nks,rush,-99.2500,38.3750\nks,rush,-99.2500,38.5000\nks,rush,-99.2500,38.6250\nks,ellis,-99.2500,38.7500\nks,ellis,-99.2500,38.8750\nks,ellis,-99.2500,39.0000\nks,ellis,-99.2500,39.1250\nks,rooks,-99.2500,39.2500\nks,rooks,-99.2500,39.3750\nks,rooks,-99.2500,39.5000\nks,phillips,-99.2500,39.6250\nks,phillips,-99.2500,39.7500\nks,phillips,-99.2500,39.8750\nks,phillips,-99.2500,40.0000\nne,harlan,-99.2500,40.1250\nne,harlan,-99.2500,40.2500\nne,phelps,-99.2500,40.3750\nne,phelps,-99.2500,40.5000\nne,phelps,-99.2500,40.6250\nne,buffalo,-99.2500,40.7500\nne,buffalo,-99.2500,40.8750\nne,buffalo,-99.2500,41.0000\nne,custer,-99.2500,41.1250\nne,custer,-99.2500,41.2500\nne,custer,-99.2500,41.3750\nne,custer,-99.2500,41.5000\nne,custer,-99.2500,41.6250\nne,loup,-99.2500,41.7500\nne,loup,-99.2500,41.8750\nne,loup,-99.2500,42.0000\nne,rock,-99.2500,42.1250\nne,rock,-99.2500,42.2500\nne,rock,-99.2500,42.3750\nne,rock,-99.2500,42.5000\nne,rock,-99.2500,42.6250\nne,rock,-99.2500,42.7500\nne,boyd,-99.2500,42.8750\nsd,gregory,-99.2500,43.0000\nsd,gregory,-99.2500,43.1250\nsd,gregory,-99.2500,43.2500\nsd,gregory,-99.2500,43.3750\nsd,brule,-99.2500,43.5000\nsd,brule,-99.2500,43.6250\nsd,brule,-99.2500,43.7500\nsd,brule,-99.2500,43.8750\nsd,buffalo,-99.2500,44.0000\nsd,buffalo,-99.2500,44.1250\nsd,hand,-99.2500,44.2500\nsd,hand,-99.2500,44.3750\nsd,hand,-99.2500,44.5000\nsd,hand,-99.2500,44.6250\nsd,hand,-99.2500,44.7500\nsd,hand,-99.2500,44.8750\nsd,faulk,-99.2500,45.0000\nsd,faulk,-99.2500,45.1250\nsd,edmunds,-99.2500,45.2500\nsd,edmunds,-99.2500,45.3750\nsd,edmunds,-99.2500,45.5000\nsd,mcpherson,-99.2500,45.6250\nsd,mcpherson,-99.2500,45.7500\nsd,mcpherson,-99.2500,45.8750\nnd,mcintosh,-99.2500,46.0000\nnd,mcintosh,-99.2500,46.1250\nnd,mcintosh,-99.2500,46.2500\nnd,logan,-99.2500,46.3750\nnd,logan,-99.2500,46.5000\nnd,logan,-99.2500,46.6250\nnd,stutsman,-99.2500,46.7500\nnd,stutsman,-99.2500,46.8750\nnd,stutsman,-99.2500,47.0000\nnd,stutsman,-99.2500,47.1250\nnd,stutsman,-99.2500,47.2500\nnd,foster,-99.2500,47.3750\nnd,foster,-99.2500,47.5000\nnd,eddy,-99.2500,47.6250\nnd,eddy,-99.2500,47.7500\nnd,benson,-99.2500,47.8750\nnd,benson,-99.2500,48.0000\nnd,benson,-99.2500,48.1250\nnd,benson,-99.2500,48.2500\nnd,towner,-99.2500,48.3750\nnd,towner,-99.2500,48.5000\nnd,towner,-99.2500,48.6250\nnd,towner,-99.2500,48.7500\nnd,towner,-99.2500,48.8750\nok,dewey,-99.1250,36.0000\nok,dewey,-99.1250,36.1250\nok,woodward,-99.1250,36.2500\nok,woodward,-99.1250,36.3750\nok,woodward,-99.1250,36.5000\nok,woodward,-99.1250,36.6250\nok,woodward,-99.1250,36.7500\nok,woods,-99.1250,36.8750\nks,comanche,-99.1250,37.0000\nks,comanche,-99.1250,37.1250\nks,comanche,-99.1250,37.2500\nks,comanche,-99.1250,37.3750\nks,kiowa,-99.1250,37.5000\nks,kiowa,-99.1250,37.6250\nks,edwards,-99.1250,37.7500\nks,edwards,-99.1250,37.8750\nks,pawnee,-99.1250,38.0000\nks,pawnee,-99.1250,38.1250\nks,pawnee,-99.1250,38.2500\nks,rush,-99.1250,38.3750\nks,rush,-99.1250,38.5000\nks,rush,-99.1250,38.6250\nks,ellis,-99.1250,38.7500\nks,ellis,-99.1250,38.8750\nks,ellis,-99.1250,39.0000\nks,ellis,-99.1250,39.1250\nks,rooks,-99.1250,39.2500\nks,rooks,-99.1250,39.3750\nks,rooks,-99.1250,39.5000\nks,phillips,-99.1250,39.6250\nks,phillips,-99.1250,39.7500\nks,phillips,-99.1250,39.8750\nks,phillips,-99.1250,40.0000\nne,franklin,-99.1250,40.1250\nne,franklin,-99.1250,40.2500\nne,kearney,-99.1250,40.3750\nne,kearney,-99.1250,40.5000\nne,kearney,-99.1250,40.6250\nne,buffalo,-99.1250,40.7500\nne,buffalo,-99.1250,40.8750\nne,buffalo,-99.1250,41.0000\nne,sherman,-99.1250,41.1250\nne,sherman,-99.1250,41.2500\nne,sherman,-99.1250,41.3750\nne,valley,-99.1250,41.5000\nne,valley,-99.1250,41.6250\nne,garfield,-99.1250,41.7500\nne,garfield,-99.1250,41.8750\nne,garfield,-99.1250,42.0000\nne,holt,-99.1250,42.1250\nne,holt,-99.1250,42.2500\nne,holt,-99.1250,42.3750\nne,holt,-99.1250,42.5000\nne,holt,-99.1250,42.6250\nne,holt,-99.1250,42.7500\nne,boyd,-99.1250,42.8750\nsd,gregory,-99.1250,43.0000\nsd,gregory,-99.1250,43.1250\nsd,gregory,-99.1250,43.2500\nsd,gregory,-99.1250,43.3750\nsd,brule,-99.1250,43.5000\nsd,brule,-99.1250,43.6250\nsd,brule,-99.1250,43.7500\nsd,brule,-99.1250,43.8750\nsd,buffalo,-99.1250,44.0000\nsd,buffalo,-99.1250,44.1250\nsd,hand,-99.1250,44.2500\nsd,hand,-99.1250,44.3750\nsd,hand,-99.1250,44.5000\nsd,hand,-99.1250,44.6250\nsd,hand,-99.1250,44.7500\nsd,hand,-99.1250,44.8750\nsd,faulk,-99.1250,45.0000\nsd,faulk,-99.1250,45.1250\nsd,edmunds,-99.1250,45.2500\nsd,edmunds,-99.1250,45.3750\nsd,edmunds,-99.1250,45.5000\nsd,mcpherson,-99.1250,45.6250\nsd,mcpherson,-99.1250,45.7500\nsd,mcpherson,-99.1250,45.8750\nnd,mcintosh,-99.1250,46.0000\nnd,mcintosh,-99.1250,46.1250\nnd,mcintosh,-99.1250,46.2500\nnd,logan,-99.1250,46.3750\nnd,logan,-99.1250,46.5000\nnd,logan,-99.1250,46.6250\nnd,stutsman,-99.1250,46.7500\nnd,stutsman,-99.1250,46.8750\nnd,stutsman,-99.1250,47.0000\nnd,stutsman,-99.1250,47.1250\nnd,stutsman,-99.1250,47.2500\nnd,foster,-99.1250,47.3750\nnd,foster,-99.1250,47.5000\nnd,eddy,-99.1250,47.6250\nnd,eddy,-99.1250,47.7500\nnd,benson,-99.1250,47.8750\nnd,benson,-99.1250,48.0000\nnd,benson,-99.1250,48.1250\nnd,ramsey,-99.1250,48.2500\nnd,towner,-99.1250,48.3750\nnd,towner,-99.1250,48.5000\nnd,towner,-99.1250,48.6250\nnd,towner,-99.1250,48.7500\nnd,towner,-99.1250,48.8750\nok,dewey,-99.0000,36.0000\nok,dewey,-99.0000,36.1250\nok,woodward,-99.0000,36.2500\nok,woodward,-99.0000,36.3750\nok,woodward,-99.0000,36.5000\nok,woodward,-99.0000,36.6250\nok,woods,-99.0000,36.7500\nok,woods,-99.0000,36.8750\nks,barber,-99.0000,37.0000\nks,barber,-99.0000,37.1250\nks,barber,-99.0000,37.2500\nks,barber,-99.0000,37.3750\nks,pratt,-99.0000,37.5000\nks,pratt,-99.0000,37.6250\nks,pratt,-99.0000,37.7500\nks,stafford,-99.0000,37.8750\nks,stafford,-99.0000,38.0000\nks,pawnee,-99.0000,38.1250\nks,pawnee,-99.0000,38.2500\nks,barton,-99.0000,38.3750\nks,barton,-99.0000,38.5000\nks,barton,-99.0000,38.6250\nks,russell,-99.0000,38.7500\nks,russell,-99.0000,38.8750\nks,russell,-99.0000,39.0000\nks,russell,-99.0000,39.1250\nks,osborne,-99.0000,39.2500\nks,osborne,-99.0000,39.3750\nks,osborne,-99.0000,39.5000\nks,smith,-99.0000,39.6250\nks,smith,-99.0000,39.7500\nks,smith,-99.0000,39.8750\nks,smith,-99.0000,40.0000\nne,franklin,-99.0000,40.1250\nne,franklin,-99.0000,40.2500\nne,kearney,-99.0000,40.3750\nne,kearney,-99.0000,40.5000\nne,kearney,-99.0000,40.6250\nne,buffalo,-99.0000,40.7500\nne,buffalo,-99.0000,40.8750\nne,buffalo,-99.0000,41.0000\nne,sherman,-99.0000,41.1250\nne,sherman,-99.0000,41.2500\nne,sherman,-99.0000,41.3750\nne,valley,-99.0000,41.5000\nne,valley,-99.0000,41.6250\nne,garfield,-99.0000,41.7500\nne,garfield,-99.0000,41.8750\nne,garfield,-99.0000,42.0000\nne,holt,-99.0000,42.1250\nne,holt,-99.0000,42.2500\nne,holt,-99.0000,42.3750\nne,holt,-99.0000,42.5000\nne,holt,-99.0000,42.6250\nne,holt,-99.0000,42.7500\nne,holt,-99.0000,42.8750\nsd,gregory,-99.0000,43.0000\nsd,gregory,-99.0000,43.1250\nsd,gregory,-99.0000,43.2500\nsd,charles mix,-99.0000,43.3750\nsd,brule,-99.0000,43.5000\nsd,brule,-99.0000,43.6250\nsd,brule,-99.0000,43.7500\nsd,brule,-99.0000,43.8750\nsd,buffalo,-99.0000,44.0000\nsd,buffalo,-99.0000,44.1250\nsd,hand,-99.0000,44.2500\nsd,hand,-99.0000,44.3750\nsd,hand,-99.0000,44.5000\nsd,hand,-99.0000,44.6250\nsd,hand,-99.0000,44.7500\nsd,hand,-99.0000,44.8750\nsd,faulk,-99.0000,45.0000\nsd,faulk,-99.0000,45.1250\nsd,edmunds,-99.0000,45.2500\nsd,edmunds,-99.0000,45.3750\nsd,edmunds,-99.0000,45.5000\nsd,mcpherson,-99.0000,45.6250\nsd,mcpherson,-99.0000,45.7500\nsd,mcpherson,-99.0000,45.8750\nnd,dickey,-99.0000,46.0000\nnd,dickey,-99.0000,46.1250\nnd,dickey,-99.0000,46.2500\nnd,lamoure,-99.0000,46.3750\nnd,lamoure,-99.0000,46.5000\nnd,lamoure,-99.0000,46.6250\nnd,stutsman,-99.0000,46.7500\nnd,stutsman,-99.0000,46.8750\nnd,stutsman,-99.0000,47.0000\nnd,stutsman,-99.0000,47.1250\nnd,stutsman,-99.0000,47.2500\nnd,foster,-99.0000,47.3750\nnd,foster,-99.0000,47.5000\nnd,eddy,-99.0000,47.6250\nnd,eddy,-99.0000,47.7500\nnd,benson,-99.0000,47.8750\nnd,benson,-99.0000,48.0000\nnd,ramsey,-99.0000,48.1250\nnd,ramsey,-99.0000,48.2500\nnd,towner,-99.0000,48.3750\nnd,towner,-99.0000,48.5000\nnd,towner,-99.0000,48.6250\nnd,cavalier,-99.0000,48.7500\nnd,cavalier,-99.0000,48.8750\nok,dewey,-98.8750,36.0000\nok,dewey,-98.8750,36.1250\nok,major,-98.8750,36.2500\nok,major,-98.8750,36.3750\nok,major,-98.8750,36.5000\nok,woods,-98.8750,36.6250\nok,woods,-98.8750,36.7500\nok,woods,-98.8750,36.8750\nks,barber,-98.8750,37.0000\nks,barber,-98.8750,37.1250\nks,barber,-98.8750,37.2500\nks,barber,-98.8750,37.3750\nks,pratt,-98.8750,37.5000\nks,pratt,-98.8750,37.6250\nks,pratt,-98.8750,37.7500\nks,stafford,-98.8750,37.8750\nks,stafford,-98.8750,38.0000\nks,stafford,-98.8750,38.1250\nks,stafford,-98.8750,38.2500\nks,barton,-98.8750,38.3750\nks,barton,-98.8750,38.5000\nks,barton,-98.8750,38.6250\nks,russell,-98.8750,38.7500\nks,russell,-98.8750,38.8750\nks,russell,-98.8750,39.0000\nks,russell,-98.8750,39.1250\nks,osborne,-98.8750,39.2500\nks,osborne,-98.8750,39.3750\nks,osborne,-98.8750,39.5000\nks,smith,-98.8750,39.6250\nks,smith,-98.8750,39.7500\nks,smith,-98.8750,39.8750\nks,smith,-98.8750,40.0000\nne,franklin,-98.8750,40.1250\nne,franklin,-98.8750,40.2500\nne,kearney,-98.8750,40.3750\nne,kearney,-98.8750,40.5000\nne,kearney,-98.8750,40.6250\nne,buffalo,-98.8750,40.7500\nne,buffalo,-98.8750,40.8750\nne,buffalo,-98.8750,41.0000\nne,sherman,-98.8750,41.1250\nne,sherman,-98.8750,41.2500\nne,sherman,-98.8750,41.3750\nne,valley,-98.8750,41.5000\nne,valley,-98.8750,41.6250\nne,garfield,-98.8750,41.7500\nne,garfield,-98.8750,41.8750\nne,garfield,-98.8750,42.0000\nne,holt,-98.8750,42.1250\nne,holt,-98.8750,42.2500\nne,holt,-98.8750,42.3750\nne,holt,-98.8750,42.5000\nne,holt,-98.8750,42.6250\nne,holt,-98.8750,42.7500\nne,boyd,-98.8750,42.8750\nsd,gregory,-98.8750,43.0000\nsd,gregory,-98.8750,43.1250\nsd,charles mix,-98.8750,43.2500\nsd,charles mix,-98.8750,43.3750\nsd,brule,-98.8750,43.5000\nsd,brule,-98.8750,43.6250\nsd,brule,-98.8750,43.7500\nsd,brule,-98.8750,43.8750\nsd,jerauld,-98.8750,44.0000\nsd,jerauld,-98.8750,44.1250\nsd,hand,-98.8750,44.2500\nsd,hand,-98.8750,44.3750\nsd,hand,-98.8750,44.5000\nsd,hand,-98.8750,44.6250\nsd,hand,-98.8750,44.7500\nsd,hand,-98.8750,44.8750\nsd,faulk,-98.8750,45.0000\nsd,faulk,-98.8750,45.1250\nsd,edmunds,-98.8750,45.2500\nsd,edmunds,-98.8750,45.3750\nsd,edmunds,-98.8750,45.5000\nsd,mcpherson,-98.8750,45.6250\nsd,mcpherson,-98.8750,45.7500\nsd,mcpherson,-98.8750,45.8750\nnd,dickey,-98.8750,46.0000\nnd,dickey,-98.8750,46.1250\nnd,dickey,-98.8750,46.2500\nnd,lamoure,-98.8750,46.3750\nnd,lamoure,-98.8750,46.5000\nnd,lamoure,-98.8750,46.6250\nnd,stutsman,-98.8750,46.7500\nnd,stutsman,-98.8750,46.8750\nnd,stutsman,-98.8750,47.0000\nnd,stutsman,-98.8750,47.1250\nnd,stutsman,-98.8750,47.2500\nnd,foster,-98.8750,47.3750\nnd,foster,-98.8750,47.5000\nnd,eddy,-98.8750,47.6250\nnd,eddy,-98.8750,47.7500\nnd,benson,-98.8750,47.8750\nnd,benson,-98.8750,48.0000\nnd,ramsey,-98.8750,48.1250\nnd,ramsey,-98.8750,48.2500\nnd,ramsey,-98.8750,48.3750\nnd,ramsey,-98.8750,48.5000\nnd,cavalier,-98.8750,48.6250\nnd,cavalier,-98.8750,48.7500\nnd,cavalier,-98.8750,48.8750\nok,dewey,-98.7500,36.0000\nok,dewey,-98.7500,36.1250\nok,major,-98.7500,36.2500\nok,major,-98.7500,36.3750\nok,woods,-98.7500,36.5000\nok,woods,-98.7500,36.6250\nok,woods,-98.7500,36.7500\nok,woods,-98.7500,36.8750\nks,barber,-98.7500,37.0000\nks,barber,-98.7500,37.1250\nks,barber,-98.7500,37.2500\nks,barber,-98.7500,37.3750\nks,pratt,-98.7500,37.5000\nks,pratt,-98.7500,37.6250\nks,pratt,-98.7500,37.7500\nks,stafford,-98.7500,37.8750\nks,stafford,-98.7500,38.0000\nks,stafford,-98.7500,38.1250\nks,stafford,-98.7500,38.2500\nks,barton,-98.7500,38.3750\nks,barton,-98.7500,38.5000\nks,barton,-98.7500,38.6250\nks,russell,-98.7500,38.7500\nks,russell,-98.7500,38.8750\nks,russell,-98.7500,39.0000\nks,russell,-98.7500,39.1250\nks,osborne,-98.7500,39.2500\nks,osborne,-98.7500,39.3750\nks,osborne,-98.7500,39.5000\nks,smith,-98.7500,39.6250\nks,smith,-98.7500,39.7500\nks,smith,-98.7500,39.8750\nks,smith,-98.7500,40.0000\nne,franklin,-98.7500,40.1250\nne,franklin,-98.7500,40.2500\nne,kearney,-98.7500,40.3750\nne,kearney,-98.7500,40.5000\nne,kearney,-98.7500,40.6250\nne,buffalo,-98.7500,40.7500\nne,buffalo,-98.7500,40.8750\nne,buffalo,-98.7500,41.0000\nne,sherman,-98.7500,41.1250\nne,sherman,-98.7500,41.2500\nne,sherman,-98.7500,41.3750\nne,greeley,-98.7500,41.5000\nne,greeley,-98.7500,41.6250\nne,wheeler,-98.7500,41.7500\nne,wheeler,-98.7500,41.8750\nne,wheeler,-98.7500,42.0000\nne,holt,-98.7500,42.1250\nne,holt,-98.7500,42.2500\nne,holt,-98.7500,42.3750\nne,holt,-98.7500,42.5000\nne,holt,-98.7500,42.6250\nne,holt,-98.7500,42.7500\nne,boyd,-98.7500,42.8750\nsd,gregory,-98.7500,43.0000\nsd,gregory,-98.7500,43.1250\nsd,charles mix,-98.7500,43.2500\nsd,charles mix,-98.7500,43.3750\nsd,aurora,-98.7500,43.5000\nsd,aurora,-98.7500,43.6250\nsd,aurora,-98.7500,43.7500\nsd,aurora,-98.7500,43.8750\nsd,jerauld,-98.7500,44.0000\nsd,jerauld,-98.7500,44.1250\nsd,hand,-98.7500,44.2500\nsd,hand,-98.7500,44.3750\nsd,hand,-98.7500,44.5000\nsd,hand,-98.7500,44.6250\nsd,hand,-98.7500,44.7500\nsd,hand,-98.7500,44.8750\nsd,faulk,-98.7500,45.0000\nsd,faulk,-98.7500,45.1250\nsd,edmunds,-98.7500,45.2500\nsd,edmunds,-98.7500,45.3750\nsd,edmunds,-98.7500,45.5000\nsd,mcpherson,-98.7500,45.6250\nsd,mcpherson,-98.7500,45.7500\nsd,mcpherson,-98.7500,45.8750\nnd,dickey,-98.7500,46.0000\nnd,dickey,-98.7500,46.1250\nnd,dickey,-98.7500,46.2500\nnd,lamoure,-98.7500,46.3750\nnd,lamoure,-98.7500,46.5000\nnd,lamoure,-98.7500,46.6250\nnd,stutsman,-98.7500,46.7500\nnd,stutsman,-98.7500,46.8750\nnd,stutsman,-98.7500,47.0000\nnd,stutsman,-98.7500,47.1250\nnd,stutsman,-98.7500,47.2500\nnd,foster,-98.7500,47.3750\nnd,foster,-98.7500,47.5000\nnd,eddy,-98.7500,47.6250\nnd,eddy,-98.7500,47.7500\nnd,benson,-98.7500,47.8750\nnd,ramsey,-98.7500,48.0000\nnd,ramsey,-98.7500,48.1250\nnd,ramsey,-98.7500,48.2500\nnd,ramsey,-98.7500,48.3750\nnd,ramsey,-98.7500,48.5000\nnd,cavalier,-98.7500,48.6250\nnd,cavalier,-98.7500,48.7500\nnd,cavalier,-98.7500,48.8750\nok,blaine,-98.6250,36.0000\nok,blaine,-98.6250,36.1250\nok,major,-98.6250,36.2500\nok,major,-98.6250,36.3750\nok,woods,-98.6250,36.5000\nok,woods,-98.6250,36.6250\nok,woods,-98.6250,36.7500\nok,woods,-98.6250,36.8750\nks,barber,-98.6250,37.0000\nks,barber,-98.6250,37.1250\nks,barber,-98.6250,37.2500\nks,barber,-98.6250,37.3750\nks,pratt,-98.6250,37.5000\nks,pratt,-98.6250,37.6250\nks,pratt,-98.6250,37.7500\nks,stafford,-98.6250,37.8750\nks,stafford,-98.6250,38.0000\nks,stafford,-98.6250,38.1250\nks,stafford,-98.6250,38.2500\nks,barton,-98.6250,38.3750\nks,barton,-98.6250,38.5000\nks,barton,-98.6250,38.6250\nks,russell,-98.6250,38.7500\nks,russell,-98.6250,38.8750\nks,russell,-98.6250,39.0000\nks,russell,-98.6250,39.1250\nks,osborne,-98.6250,39.2500\nks,osborne,-98.6250,39.3750\nks,osborne,-98.6250,39.5000\nks,smith,-98.6250,39.6250\nks,smith,-98.6250,39.7500\nks,smith,-98.6250,39.8750\nks,smith,-98.6250,40.0000\nne,webster,-98.6250,40.1250\nne,webster,-98.6250,40.2500\nne,adams,-98.6250,40.3750\nne,adams,-98.6250,40.5000\nne,adams,-98.6250,40.6250\nne,hall,-98.6250,40.7500\nne,hall,-98.6250,40.8750\nne,hall,-98.6250,41.0000\nne,howard,-98.6250,41.1250\nne,howard,-98.6250,41.2500\nne,howard,-98.6250,41.3750\nne,greeley,-98.6250,41.5000\nne,greeley,-98.6250,41.6250\nne,wheeler,-98.6250,41.7500\nne,wheeler,-98.6250,41.8750\nne,wheeler,-98.6250,42.0000\nne,holt,-98.6250,42.1250\nne,holt,-98.6250,42.2500\nne,holt,-98.6250,42.3750\nne,holt,-98.6250,42.5000\nne,holt,-98.6250,42.6250\nne,holt,-98.6250,42.7500\nne,boyd,-98.6250,42.8750\nsd,gregory,-98.6250,43.0000\nsd,charles mix,-98.6250,43.1250\nsd,charles mix,-98.6250,43.2500\nsd,douglas,-98.6250,43.3750\nsd,aurora,-98.6250,43.5000\nsd,aurora,-98.6250,43.6250\nsd,aurora,-98.6250,43.7500\nsd,aurora,-98.6250,43.8750\nsd,jerauld,-98.6250,44.0000\nsd,jerauld,-98.6250,44.1250\nsd,beadle,-98.6250,44.2500\nsd,beadle,-98.6250,44.3750\nsd,beadle,-98.6250,44.5000\nsd,beadle,-98.6250,44.6250\nsd,spink,-98.6250,44.7500\nsd,spink,-98.6250,44.8750\nsd,spink,-98.6250,45.0000\nsd,spink,-98.6250,45.1250\nsd,brown,-98.6250,45.2500\nsd,brown,-98.6250,45.3750\nsd,brown,-98.6250,45.5000\nsd,brown,-98.6250,45.6250\nsd,brown,-98.6250,45.7500\nsd,brown,-98.6250,45.8750\nnd,dickey,-98.6250,46.0000\nnd,dickey,-98.6250,46.1250\nnd,dickey,-98.6250,46.2500\nnd,lamoure,-98.6250,46.3750\nnd,lamoure,-98.6250,46.5000\nnd,lamoure,-98.6250,46.6250\nnd,stutsman,-98.6250,46.7500\nnd,stutsman,-98.6250,46.8750\nnd,stutsman,-98.6250,47.0000\nnd,stutsman,-98.6250,47.1250\nnd,stutsman,-98.6250,47.2500\nnd,foster,-98.6250,47.3750\nnd,foster,-98.6250,47.5000\nnd,eddy,-98.6250,47.6250\nnd,eddy,-98.6250,47.7500\nnd,benson,-98.6250,47.8750\nnd,ramsey,-98.6250,48.0000\nnd,ramsey,-98.6250,48.1250\nnd,ramsey,-98.6250,48.2500\nnd,ramsey,-98.6250,48.3750\nnd,ramsey,-98.6250,48.5000\nnd,cavalier,-98.6250,48.6250\nnd,cavalier,-98.6250,48.7500\nnd,cavalier,-98.6250,48.8750\nok,blaine,-98.5000,36.0000\nok,blaine,-98.5000,36.1250\nok,major,-98.5000,36.2500\nok,major,-98.5000,36.3750\nok,alfalfa,-98.5000,36.5000\nok,alfalfa,-98.5000,36.6250\nok,alfalfa,-98.5000,36.7500\nok,alfalfa,-98.5000,36.8750\nks,barber,-98.5000,37.0000\nks,barber,-98.5000,37.1250\nks,barber,-98.5000,37.2500\nks,barber,-98.5000,37.3750\nks,pratt,-98.5000,37.5000\nks,pratt,-98.5000,37.6250\nks,pratt,-98.5000,37.7500\nks,stafford,-98.5000,37.8750\nks,stafford,-98.5000,38.0000\nks,stafford,-98.5000,38.1250\nks,stafford,-98.5000,38.2500\nks,barton,-98.5000,38.3750\nks,barton,-98.5000,38.5000\nks,barton,-98.5000,38.6250\nks,russell,-98.5000,38.7500\nks,russell,-98.5000,38.8750\nks,russell,-98.5000,39.0000\nks,russell,-98.5000,39.1250\nks,osborne,-98.5000,39.2500\nks,osborne,-98.5000,39.3750\nks,osborne,-98.5000,39.5000\nks,jewell,-98.5000,39.6250\nks,jewell,-98.5000,39.7500\nks,jewell,-98.5000,39.8750\nks,jewell,-98.5000,40.0000\nne,webster,-98.5000,40.1250\nne,webster,-98.5000,40.2500\nne,adams,-98.5000,40.3750\nne,adams,-98.5000,40.5000\nne,adams,-98.5000,40.6250\nne,hall,-98.5000,40.7500\nne,hall,-98.5000,40.8750\nne,hall,-98.5000,41.0000\nne,howard,-98.5000,41.1250\nne,howard,-98.5000,41.2500\nne,howard,-98.5000,41.3750\nne,greeley,-98.5000,41.5000\nne,greeley,-98.5000,41.6250\nne,wheeler,-98.5000,41.7500\nne,wheeler,-98.5000,41.8750\nne,wheeler,-98.5000,42.0000\nne,holt,-98.5000,42.1250\nne,holt,-98.5000,42.2500\nne,holt,-98.5000,42.3750\nne,holt,-98.5000,42.5000\nne,holt,-98.5000,42.6250\nne,holt,-98.5000,42.7500\nne,boyd,-98.5000,42.8750\nsd,gregory,-98.5000,43.0000\nsd,charles mix,-98.5000,43.1250\nsd,charles mix,-98.5000,43.2500\nsd,douglas,-98.5000,43.3750\nsd,aurora,-98.5000,43.5000\nsd,aurora,-98.5000,43.6250\nsd,aurora,-98.5000,43.7500\nsd,aurora,-98.5000,43.8750\nsd,jerauld,-98.5000,44.0000\nsd,jerauld,-98.5000,44.1250\nsd,beadle,-98.5000,44.2500\nsd,beadle,-98.5000,44.3750\nsd,beadle,-98.5000,44.5000\nsd,beadle,-98.5000,44.6250\nsd,spink,-98.5000,44.7500\nsd,spink,-98.5000,44.8750\nsd,spink,-98.5000,45.0000\nsd,spink,-98.5000,45.1250\nsd,brown,-98.5000,45.2500\nsd,brown,-98.5000,45.3750\nsd,brown,-98.5000,45.5000\nsd,brown,-98.5000,45.6250\nsd,brown,-98.5000,45.7500\nsd,brown,-98.5000,45.8750\nnd,dickey,-98.5000,46.0000\nnd,dickey,-98.5000,46.1250\nnd,dickey,-98.5000,46.2500\nnd,lamoure,-98.5000,46.3750\nnd,lamoure,-98.5000,46.5000\nnd,lamoure,-98.5000,46.6250\nnd,stutsman,-98.5000,46.7500\nnd,stutsman,-98.5000,46.8750\nnd,stutsman,-98.5000,47.0000\nnd,stutsman,-98.5000,47.1250\nnd,stutsman,-98.5000,47.2500\nnd,foster,-98.5000,47.3750\nnd,foster,-98.5000,47.5000\nnd,griggs,-98.5000,47.6250\nnd,nelson,-98.5000,47.7500\nnd,nelson,-98.5000,47.8750\nnd,nelson,-98.5000,48.0000\nnd,ramsey,-98.5000,48.1250\nnd,ramsey,-98.5000,48.2500\nnd,ramsey,-98.5000,48.3750\nnd,ramsey,-98.5000,48.5000\nnd,cavalier,-98.5000,48.6250\nnd,cavalier,-98.5000,48.7500\nnd,cavalier,-98.5000,48.8750\nok,blaine,-98.3750,36.0000\nok,blaine,-98.3750,36.1250\nok,major,-98.3750,36.2500\nok,major,-98.3750,36.3750\nok,alfalfa,-98.3750,36.5000\nok,alfalfa,-98.3750,36.6250\nok,alfalfa,-98.3750,36.7500\nok,alfalfa,-98.3750,36.8750\nks,barber,-98.3750,37.0000\nks,barber,-98.3750,37.1250\nks,barber,-98.3750,37.2500\nks,barber,-98.3750,37.3750\nks,kingman,-98.3750,37.5000\nks,kingman,-98.3750,37.6250\nks,reno,-98.3750,37.7500\nks,reno,-98.3750,37.8750\nks,reno,-98.3750,38.0000\nks,reno,-98.3750,38.1250\nks,rice,-98.3750,38.2500\nks,rice,-98.3750,38.3750\nks,rice,-98.3750,38.5000\nks,ellsworth,-98.3750,38.6250\nks,ellsworth,-98.3750,38.7500\nks,lincoln,-98.3750,38.8750\nks,lincoln,-98.3750,39.0000\nks,lincoln,-98.3750,39.1250\nks,mitchell,-98.3750,39.2500\nks,mitchell,-98.3750,39.3750\nks,mitchell,-98.3750,39.5000\nks,jewell,-98.3750,39.6250\nks,jewell,-98.3750,39.7500\nks,jewell,-98.3750,39.8750\nks,jewell,-98.3750,40.0000\nne,webster,-98.3750,40.1250\nne,webster,-98.3750,40.2500\nne,adams,-98.3750,40.3750\nne,adams,-98.3750,40.5000\nne,adams,-98.3750,40.6250\nne,hall,-98.3750,40.7500\nne,hall,-98.3750,40.8750\nne,hall,-98.3750,41.0000\nne,howard,-98.3750,41.1250\nne,howard,-98.3750,41.2500\nne,howard,-98.3750,41.3750\nne,greeley,-98.3750,41.5000\nne,greeley,-98.3750,41.6250\nne,wheeler,-98.3750,41.7500\nne,wheeler,-98.3750,41.8750\nne,wheeler,-98.3750,42.0000\nne,holt,-98.3750,42.1250\nne,holt,-98.3750,42.2500\nne,holt,-98.3750,42.3750\nne,holt,-98.3750,42.5000\nne,holt,-98.3750,42.6250\nne,holt,-98.3750,42.7500\nne,boyd,-98.3750,42.8750\nsd,charles mix,-98.3750,43.0000\nsd,charles mix,-98.3750,43.1250\nsd,charles mix,-98.3750,43.2500\nsd,douglas,-98.3750,43.3750\nsd,aurora,-98.3750,43.5000\nsd,aurora,-98.3750,43.6250\nsd,aurora,-98.3750,43.7500\nsd,aurora,-98.3750,43.8750\nsd,jerauld,-98.3750,44.0000\nsd,jerauld,-98.3750,44.1250\nsd,beadle,-98.3750,44.2500\nsd,beadle,-98.3750,44.3750\nsd,beadle,-98.3750,44.5000\nsd,beadle,-98.3750,44.6250\nsd,spink,-98.3750,44.7500\nsd,spink,-98.3750,44.8750\nsd,spink,-98.3750,45.0000\nsd,spink,-98.3750,45.1250\nsd,brown,-98.3750,45.2500\nsd,brown,-98.3750,45.3750\nsd,brown,-98.3750,45.5000\nsd,brown,-98.3750,45.6250\nsd,brown,-98.3750,45.7500\nsd,brown,-98.3750,45.8750\nnd,dickey,-98.3750,46.0000\nnd,dickey,-98.3750,46.1250\nnd,dickey,-98.3750,46.2500\nnd,lamoure,-98.3750,46.3750\nnd,lamoure,-98.3750,46.5000\nnd,lamoure,-98.3750,46.6250\nnd,barnes,-98.3750,46.7500\nnd,barnes,-98.3750,46.8750\nnd,barnes,-98.3750,47.0000\nnd,barnes,-98.3750,47.1250\nnd,griggs,-98.3750,47.2500\nnd,griggs,-98.3750,47.3750\nnd,griggs,-98.3750,47.5000\nnd,griggs,-98.3750,47.6250\nnd,nelson,-98.3750,47.7500\nnd,nelson,-98.3750,47.8750\nnd,nelson,-98.3750,48.0000\nnd,nelson,-98.3750,48.1250\nnd,ramsey,-98.3750,48.2500\nnd,ramsey,-98.3750,48.3750\nnd,ramsey,-98.3750,48.5000\nnd,cavalier,-98.3750,48.6250\nnd,cavalier,-98.3750,48.7500\nnd,cavalier,-98.3750,48.8750\nok,blaine,-98.2500,36.0000\nok,blaine,-98.2500,36.1250\nok,major,-98.2500,36.2500\nok,major,-98.2500,36.3750\nok,alfalfa,-98.2500,36.5000\nok,alfalfa,-98.2500,36.6250\nok,alfalfa,-98.2500,36.7500\nok,alfalfa,-98.2500,36.8750\nks,harper,-98.2500,37.0000\nks,harper,-98.2500,37.1250\nks,harper,-98.2500,37.2500\nks,harper,-98.2500,37.3750\nks,kingman,-98.2500,37.5000\nks,kingman,-98.2500,37.6250\nks,reno,-98.2500,37.7500\nks,reno,-98.2500,37.8750\nks,reno,-98.2500,38.0000\nks,reno,-98.2500,38.1250\nks,rice,-98.2500,38.2500\nks,rice,-98.2500,38.3750\nks,rice,-98.2500,38.5000\nks,ellsworth,-98.2500,38.6250\nks,ellsworth,-98.2500,38.7500\nks,lincoln,-98.2500,38.8750\nks,lincoln,-98.2500,39.0000\nks,lincoln,-98.2500,39.1250\nks,mitchell,-98.2500,39.2500\nks,mitchell,-98.2500,39.3750\nks,mitchell,-98.2500,39.5000\nks,jewell,-98.2500,39.6250\nks,jewell,-98.2500,39.7500\nks,jewell,-98.2500,39.8750\nks,jewell,-98.2500,40.0000\nne,nuckolls,-98.2500,40.1250\nne,nuckolls,-98.2500,40.2500\nne,clay,-98.2500,40.3750\nne,clay,-98.2500,40.5000\nne,clay,-98.2500,40.6250\nne,hamilton,-98.2500,40.7500\nne,hamilton,-98.2500,40.8750\nne,merrick,-98.2500,41.0000\nne,merrick,-98.2500,41.1250\nne,merrick,-98.2500,41.2500\nne,nance,-98.2500,41.3750\nne,boone,-98.2500,41.5000\nne,boone,-98.2500,41.6250\nne,boone,-98.2500,41.7500\nne,boone,-98.2500,41.8750\nne,antelope,-98.2500,42.0000\nne,antelope,-98.2500,42.1250\nne,antelope,-98.2500,42.2500\nne,antelope,-98.2500,42.3750\nne,knox,-98.2500,42.5000\nne,knox,-98.2500,42.6250\nne,knox,-98.2500,42.7500\nsd,charles mix,-98.2500,42.8750\nsd,charles mix,-98.2500,43.0000\nsd,charles mix,-98.2500,43.1250\nsd,douglas,-98.2500,43.2500\nsd,douglas,-98.2500,43.3750\nsd,davison,-98.2500,43.5000\nsd,davison,-98.2500,43.6250\nsd,davison,-98.2500,43.7500\nsd,sanborn,-98.2500,43.8750\nsd,sanborn,-98.2500,44.0000\nsd,sanborn,-98.2500,44.1250\nsd,beadle,-98.2500,44.2500\nsd,beadle,-98.2500,44.3750\nsd,beadle,-98.2500,44.5000\nsd,beadle,-98.2500,44.6250\nsd,spink,-98.2500,44.7500\nsd,spink,-98.2500,44.8750\nsd,spink,-98.2500,45.0000\nsd,spink,-98.2500,45.1250\nsd,brown,-98.2500,45.2500\nsd,brown,-98.2500,45.3750\nsd,brown,-98.2500,45.5000\nsd,brown,-98.2500,45.6250\nsd,brown,-98.2500,45.7500\nsd,brown,-98.2500,45.8750\nnd,dickey,-98.2500,46.0000\nnd,dickey,-98.2500,46.1250\nnd,dickey,-98.2500,46.2500\nnd,lamoure,-98.2500,46.3750\nnd,lamoure,-98.2500,46.5000\nnd,lamoure,-98.2500,46.6250\nnd,barnes,-98.2500,46.7500\nnd,barnes,-98.2500,46.8750\nnd,barnes,-98.2500,47.0000\nnd,barnes,-98.2500,47.1250\nnd,griggs,-98.2500,47.2500\nnd,griggs,-98.2500,47.3750\nnd,griggs,-98.2500,47.5000\nnd,griggs,-98.2500,47.6250\nnd,nelson,-98.2500,47.7500\nnd,nelson,-98.2500,47.8750\nnd,nelson,-98.2500,48.0000\nnd,nelson,-98.2500,48.1250\nnd,walsh,-98.2500,48.2500\nnd,walsh,-98.2500,48.3750\nnd,walsh,-98.2500,48.5000\nnd,cavalier,-98.2500,48.6250\nnd,cavalier,-98.2500,48.7500\nnd,cavalier,-98.2500,48.8750\nok,kingfisher,-98.1250,36.0000\nok,kingfisher,-98.1250,36.1250\nok,major,-98.1250,36.2500\nok,major,-98.1250,36.3750\nok,alfalfa,-98.1250,36.5000\nok,alfalfa,-98.1250,36.6250\nok,alfalfa,-98.1250,36.7500\nok,alfalfa,-98.1250,36.8750\nks,harper,-98.1250,37.0000\nks,harper,-98.1250,37.1250\nks,harper,-98.1250,37.2500\nks,harper,-98.1250,37.3750\nks,kingman,-98.1250,37.5000\nks,kingman,-98.1250,37.6250\nks,reno,-98.1250,37.7500\nks,reno,-98.1250,37.8750\nks,reno,-98.1250,38.0000\nks,reno,-98.1250,38.1250\nks,rice,-98.1250,38.2500\nks,rice,-98.1250,38.3750\nks,rice,-98.1250,38.5000\nks,ellsworth,-98.1250,38.6250\nks,ellsworth,-98.1250,38.7500\nks,lincoln,-98.1250,38.8750\nks,lincoln,-98.1250,39.0000\nks,lincoln,-98.1250,39.1250\nks,mitchell,-98.1250,39.2500\nks,mitchell,-98.1250,39.3750\nks,mitchell,-98.1250,39.5000\nks,jewell,-98.1250,39.6250\nks,jewell,-98.1250,39.7500\nks,jewell,-98.1250,39.8750\nks,jewell,-98.1250,40.0000\nne,nuckolls,-98.1250,40.1250\nne,nuckolls,-98.1250,40.2500\nne,clay,-98.1250,40.3750\nne,clay,-98.1250,40.5000\nne,clay,-98.1250,40.6250\nne,hamilton,-98.1250,40.7500\nne,hamilton,-98.1250,40.8750\nne,hamilton,-98.1250,41.0000\nne,merrick,-98.1250,41.1250\nne,merrick,-98.1250,41.2500\nne,nance,-98.1250,41.3750\nne,boone,-98.1250,41.5000\nne,boone,-98.1250,41.6250\nne,boone,-98.1250,41.7500\nne,boone,-98.1250,41.8750\nne,antelope,-98.1250,42.0000\nne,antelope,-98.1250,42.1250\nne,antelope,-98.1250,42.2500\nne,antelope,-98.1250,42.3750\nne,knox,-98.1250,42.5000\nne,knox,-98.1250,42.6250\nne,knox,-98.1250,42.7500\nsd,charles mix,-98.1250,42.8750\nsd,charles mix,-98.1250,43.0000\nsd,charles mix,-98.1250,43.1250\nsd,douglas,-98.1250,43.2500\nsd,douglas,-98.1250,43.3750\nsd,davison,-98.1250,43.5000\nsd,davison,-98.1250,43.6250\nsd,davison,-98.1250,43.7500\nsd,sanborn,-98.1250,43.8750\nsd,sanborn,-98.1250,44.0000\nsd,sanborn,-98.1250,44.1250\nsd,beadle,-98.1250,44.2500\nsd,beadle,-98.1250,44.3750\nsd,beadle,-98.1250,44.5000\nsd,beadle,-98.1250,44.6250\nsd,spink,-98.1250,44.7500\nsd,spink,-98.1250,44.8750\nsd,spink,-98.1250,45.0000\nsd,spink,-98.1250,45.1250\nsd,brown,-98.1250,45.2500\nsd,brown,-98.1250,45.3750\nsd,brown,-98.1250,45.5000\nsd,brown,-98.1250,45.6250\nsd,brown,-98.1250,45.7500\nsd,brown,-98.1250,45.8750\nnd,dickey,-98.1250,46.0000\nnd,dickey,-98.1250,46.1250\nnd,dickey,-98.1250,46.2500\nnd,lamoure,-98.1250,46.3750\nnd,lamoure,-98.1250,46.5000\nnd,lamoure,-98.1250,46.6250\nnd,barnes,-98.1250,46.7500\nnd,barnes,-98.1250,46.8750\nnd,barnes,-98.1250,47.0000\nnd,barnes,-98.1250,47.1250\nnd,griggs,-98.1250,47.2500\nnd,griggs,-98.1250,47.3750\nnd,griggs,-98.1250,47.5000\nnd,griggs,-98.1250,47.6250\nnd,nelson,-98.1250,47.7500\nnd,nelson,-98.1250,47.8750\nnd,nelson,-98.1250,48.0000\nnd,nelson,-98.1250,48.1250\nnd,walsh,-98.1250,48.2500\nnd,walsh,-98.1250,48.3750\nnd,walsh,-98.1250,48.5000\nnd,cavalier,-98.1250,48.6250\nnd,cavalier,-98.1250,48.7500\nnd,cavalier,-98.1250,48.8750\nok,kingfisher,-98.0000,36.0000\nok,kingfisher,-98.0000,36.1250\nok,garfield,-98.0000,36.2500\nok,garfield,-98.0000,36.3750\nok,garfield,-98.0000,36.5000\nok,grant,-98.0000,36.6250\nok,grant,-98.0000,36.7500\nok,grant,-98.0000,36.8750\nks,harper,-98.0000,37.0000\nks,harper,-98.0000,37.1250\nks,harper,-98.0000,37.2500\nks,harper,-98.0000,37.3750\nks,kingman,-98.0000,37.5000\nks,kingman,-98.0000,37.6250\nks,reno,-98.0000,37.7500\nks,reno,-98.0000,37.8750\nks,reno,-98.0000,38.0000\nks,reno,-98.0000,38.1250\nks,rice,-98.0000,38.2500\nks,rice,-98.0000,38.3750\nks,rice,-98.0000,38.5000\nks,ellsworth,-98.0000,38.6250\nks,ellsworth,-98.0000,38.7500\nks,lincoln,-98.0000,38.8750\nks,lincoln,-98.0000,39.0000\nks,lincoln,-98.0000,39.1250\nks,mitchell,-98.0000,39.2500\nks,mitchell,-98.0000,39.3750\nks,mitchell,-98.0000,39.5000\nks,jewell,-98.0000,39.6250\nks,jewell,-98.0000,39.7500\nks,jewell,-98.0000,39.8750\nks,jewell,-98.0000,40.0000\nne,nuckolls,-98.0000,40.1250\nne,nuckolls,-98.0000,40.2500\nne,clay,-98.0000,40.3750\nne,clay,-98.0000,40.5000\nne,clay,-98.0000,40.6250\nne,hamilton,-98.0000,40.7500\nne,hamilton,-98.0000,40.8750\nne,hamilton,-98.0000,41.0000\nne,merrick,-98.0000,41.1250\nne,merrick,-98.0000,41.2500\nne,nance,-98.0000,41.3750\nne,nance,-98.0000,41.5000\nne,boone,-98.0000,41.6250\nne,boone,-98.0000,41.7500\nne,boone,-98.0000,41.8750\nne,antelope,-98.0000,42.0000\nne,antelope,-98.0000,42.1250\nne,antelope,-98.0000,42.2500\nne,antelope,-98.0000,42.3750\nne,knox,-98.0000,42.5000\nne,knox,-98.0000,42.6250\nne,knox,-98.0000,42.7500\nsd,bon homme,-98.0000,42.8750\nsd,bon homme,-98.0000,43.0000\nsd,bon homme,-98.0000,43.1250\nsd,hutchinson,-98.0000,43.2500\nsd,hutchinson,-98.0000,43.3750\nsd,davison,-98.0000,43.5000\nsd,davison,-98.0000,43.6250\nsd,davison,-98.0000,43.7500\nsd,sanborn,-98.0000,43.8750\nsd,sanborn,-98.0000,44.0000\nsd,sanborn,-98.0000,44.1250\nsd,beadle,-98.0000,44.2500\nsd,beadle,-98.0000,44.3750\nsd,beadle,-98.0000,44.5000\nsd,beadle,-98.0000,44.6250\nsd,spink,-98.0000,44.7500\nsd,spink,-98.0000,44.8750\nsd,spink,-98.0000,45.0000\nsd,spink,-98.0000,45.1250\nsd,brown,-98.0000,45.2500\nsd,brown,-98.0000,45.3750\nsd,brown,-98.0000,45.5000\nsd,brown,-98.0000,45.6250\nsd,brown,-98.0000,45.7500\nsd,brown,-98.0000,45.8750\nnd,sargent,-98.0000,46.0000\nnd,sargent,-98.0000,46.1250\nnd,sargent,-98.0000,46.2500\nnd,ransom,-98.0000,46.3750\nnd,ransom,-98.0000,46.5000\nnd,ransom,-98.0000,46.6250\nnd,barnes,-98.0000,46.7500\nnd,barnes,-98.0000,46.8750\nnd,barnes,-98.0000,47.0000\nnd,barnes,-98.0000,47.1250\nnd,griggs,-98.0000,47.2500\nnd,griggs,-98.0000,47.3750\nnd,griggs,-98.0000,47.5000\nnd,griggs,-98.0000,47.6250\nnd,nelson,-98.0000,47.7500\nnd,nelson,-98.0000,47.8750\nnd,nelson,-98.0000,48.0000\nnd,nelson,-98.0000,48.1250\nnd,walsh,-98.0000,48.2500\nnd,walsh,-98.0000,48.3750\nnd,walsh,-98.0000,48.5000\nnd,cavalier,-98.0000,48.6250\nnd,cavalier,-98.0000,48.7500\nnd,cavalier,-98.0000,48.8750\nok,kingfisher,-97.8750,36.0000\nok,kingfisher,-97.8750,36.1250\nok,garfield,-97.8750,36.2500\nok,garfield,-97.8750,36.3750\nok,garfield,-97.8750,36.5000\nok,grant,-97.8750,36.6250\nok,grant,-97.8750,36.7500\nok,grant,-97.8750,36.8750\nks,harper,-97.8750,37.0000\nks,harper,-97.8750,37.1250\nks,harper,-97.8750,37.2500\nks,harper,-97.8750,37.3750\nks,kingman,-97.8750,37.5000\nks,kingman,-97.8750,37.6250\nks,reno,-97.8750,37.7500\nks,reno,-97.8750,37.8750\nks,reno,-97.8750,38.0000\nks,reno,-97.8750,38.1250\nks,mcpherson,-97.8750,38.2500\nks,mcpherson,-97.8750,38.3750\nks,mcpherson,-97.8750,38.5000\nks,saline,-97.8750,38.6250\nks,saline,-97.8750,38.7500\nks,saline,-97.8750,38.8750\nks,ottawa,-97.8750,39.0000\nks,ottawa,-97.8750,39.1250\nks,ottawa,-97.8750,39.2500\nks,cloud,-97.8750,39.3750\nks,cloud,-97.8750,39.5000\nks,cloud,-97.8750,39.6250\nks,republic,-97.8750,39.7500\nks,republic,-97.8750,39.8750\nks,republic,-97.8750,40.0000\nne,nuckolls,-97.8750,40.1250\nne,nuckolls,-97.8750,40.2500\nne,clay,-97.8750,40.3750\nne,clay,-97.8750,40.5000\nne,clay,-97.8750,40.6250\nne,hamilton,-97.8750,40.7500\nne,hamilton,-97.8750,40.8750\nne,hamilton,-97.8750,41.0000\nne,merrick,-97.8750,41.1250\nne,merrick,-97.8750,41.2500\nne,nance,-97.8750,41.3750\nne,nance,-97.8750,41.5000\nne,boone,-97.8750,41.6250\nne,boone,-97.8750,41.7500\nne,boone,-97.8750,41.8750\nne,antelope,-97.8750,42.0000\nne,antelope,-97.8750,42.1250\nne,antelope,-97.8750,42.2500\nne,antelope,-97.8750,42.3750\nne,knox,-97.8750,42.5000\nne,knox,-97.8750,42.6250\nne,knox,-97.8750,42.7500\nsd,bon homme,-97.8750,42.8750\nsd,bon homme,-97.8750,43.0000\nsd,bon homme,-97.8750,43.1250\nsd,hutchinson,-97.8750,43.2500\nsd,hutchinson,-97.8750,43.3750\nsd,hanson,-97.8750,43.5000\nsd,hanson,-97.8750,43.6250\nsd,hanson,-97.8750,43.7500\nsd,sanborn,-97.8750,43.8750\nsd,sanborn,-97.8750,44.0000\nsd,sanborn,-97.8750,44.1250\nsd,beadle,-97.8750,44.2500\nsd,beadle,-97.8750,44.3750\nsd,beadle,-97.8750,44.5000\nsd,beadle,-97.8750,44.6250\nsd,clark,-97.8750,44.7500\nsd,clark,-97.8750,44.8750\nsd,clark,-97.8750,45.0000\nsd,clark,-97.8750,45.1250\nsd,day,-97.8750,45.2500\nsd,day,-97.8750,45.3750\nsd,day,-97.8750,45.5000\nsd,marshall,-97.8750,45.6250\nsd,marshall,-97.8750,45.7500\nsd,marshall,-97.8750,45.8750\nnd,sargent,-97.8750,46.0000\nnd,sargent,-97.8750,46.1250\nnd,sargent,-97.8750,46.2500\nnd,ransom,-97.8750,46.3750\nnd,ransom,-97.8750,46.5000\nnd,ransom,-97.8750,46.6250\nnd,barnes,-97.8750,46.7500\nnd,barnes,-97.8750,46.8750\nnd,barnes,-97.8750,47.0000\nnd,barnes,-97.8750,47.1250\nnd,steele,-97.8750,47.2500\nnd,steele,-97.8750,47.3750\nnd,steele,-97.8750,47.5000\nnd,steele,-97.8750,47.6250\nnd,grand forks,-97.8750,47.7500\nnd,grand forks,-97.8750,47.8750\nnd,grand forks,-97.8750,48.0000\nnd,grand forks,-97.8750,48.1250\nnd,walsh,-97.8750,48.2500\nnd,walsh,-97.8750,48.3750\nnd,walsh,-97.8750,48.5000\nnd,pembina,-97.8750,48.6250\nnd,pembina,-97.8750,48.7500\nnd,pembina,-97.8750,48.8750\nok,kingfisher,-97.7500,36.0000\nok,kingfisher,-97.7500,36.1250\nok,garfield,-97.7500,36.2500\nok,garfield,-97.7500,36.3750\nok,garfield,-97.7500,36.5000\nok,grant,-97.7500,36.6250\nok,grant,-97.7500,36.7500\nok,grant,-97.7500,36.8750\nks,sumner,-97.7500,37.0000\nks,sumner,-97.7500,37.1250\nks,sumner,-97.7500,37.2500\nks,sumner,-97.7500,37.3750\nks,sedgwick,-97.7500,37.5000\nks,sedgwick,-97.7500,37.6250\nks,reno,-97.7500,37.7500\nks,reno,-97.7500,37.8750\nks,reno,-97.7500,38.0000\nks,reno,-97.7500,38.1250\nks,mcpherson,-97.7500,38.2500\nks,mcpherson,-97.7500,38.3750\nks,mcpherson,-97.7500,38.5000\nks,saline,-97.7500,38.6250\nks,saline,-97.7500,38.7500\nks,saline,-97.7500,38.8750\nks,ottawa,-97.7500,39.0000\nks,ottawa,-97.7500,39.1250\nks,ottawa,-97.7500,39.2500\nks,cloud,-97.7500,39.3750\nks,cloud,-97.7500,39.5000\nks,cloud,-97.7500,39.6250\nks,republic,-97.7500,39.7500\nks,republic,-97.7500,39.8750\nks,republic,-97.7500,40.0000\nne,thayer,-97.7500,40.1250\nne,thayer,-97.7500,40.2500\nne,fillmore,-97.7500,40.3750\nne,fillmore,-97.7500,40.5000\nne,fillmore,-97.7500,40.6250\nne,york,-97.7500,40.7500\nne,york,-97.7500,40.8750\nne,york,-97.7500,41.0000\nne,polk,-97.7500,41.1250\nne,merrick,-97.7500,41.2500\nne,nance,-97.7500,41.3750\nne,nance,-97.7500,41.5000\nne,platte,-97.7500,41.6250\nne,madison,-97.7500,41.7500\nne,madison,-97.7500,41.8750\nne,madison,-97.7500,42.0000\nne,pierce,-97.7500,42.1250\nne,pierce,-97.7500,42.2500\nne,pierce,-97.7500,42.3750\nne,knox,-97.7500,42.5000\nne,knox,-97.7500,42.6250\nne,knox,-97.7500,42.7500\nsd,bon homme,-97.7500,42.8750\nsd,bon homme,-97.7500,43.0000\nsd,bon homme,-97.7500,43.1250\nsd,hutchinson,-97.7500,43.2500\nsd,hutchinson,-97.7500,43.3750\nsd,hanson,-97.7500,43.5000\nsd,hanson,-97.7500,43.6250\nsd,hanson,-97.7500,43.7500\nsd,miner,-97.7500,43.8750\nsd,miner,-97.7500,44.0000\nsd,miner,-97.7500,44.1250\nsd,kingsbury,-97.7500,44.2500\nsd,kingsbury,-97.7500,44.3750\nsd,kingsbury,-97.7500,44.5000\nsd,clark,-97.7500,44.6250\nsd,clark,-97.7500,44.7500\nsd,clark,-97.7500,44.8750\nsd,clark,-97.7500,45.0000\nsd,clark,-97.7500,45.1250\nsd,day,-97.7500,45.2500\nsd,day,-97.7500,45.3750\nsd,day,-97.7500,45.5000\nsd,marshall,-97.7500,45.6250\nsd,marshall,-97.7500,45.7500\nsd,marshall,-97.7500,45.8750\nnd,sargent,-97.7500,46.0000\nnd,sargent,-97.7500,46.1250\nnd,sargent,-97.7500,46.2500\nnd,ransom,-97.7500,46.3750\nnd,ransom,-97.7500,46.5000\nnd,ransom,-97.7500,46.6250\nnd,barnes,-97.7500,46.7500\nnd,barnes,-97.7500,46.8750\nnd,barnes,-97.7500,47.0000\nnd,barnes,-97.7500,47.1250\nnd,steele,-97.7500,47.2500\nnd,steele,-97.7500,47.3750\nnd,steele,-97.7500,47.5000\nnd,steele,-97.7500,47.6250\nnd,grand forks,-97.7500,47.7500\nnd,grand forks,-97.7500,47.8750\nnd,grand forks,-97.7500,48.0000\nnd,grand forks,-97.7500,48.1250\nnd,walsh,-97.7500,48.2500\nnd,walsh,-97.7500,48.3750\nnd,walsh,-97.7500,48.5000\nnd,pembina,-97.7500,48.6250\nnd,pembina,-97.7500,48.7500\nnd,pembina,-97.7500,48.8750\nok,logan,-97.6250,36.0000\nok,logan,-97.6250,36.1250\nok,garfield,-97.6250,36.2500\nok,garfield,-97.6250,36.3750\nok,garfield,-97.6250,36.5000\nok,grant,-97.6250,36.6250\nok,grant,-97.6250,36.7500\nok,grant,-97.6250,36.8750\nks,sumner,-97.6250,37.0000\nks,sumner,-97.6250,37.1250\nks,sumner,-97.6250,37.2500\nks,sumner,-97.6250,37.3750\nks,sedgwick,-97.6250,37.5000\nks,sedgwick,-97.6250,37.6250\nks,sedgwick,-97.6250,37.7500\nks,sedgwick,-97.6250,37.8750\nks,harvey,-97.6250,38.0000\nks,harvey,-97.6250,38.1250\nks,mcpherson,-97.6250,38.2500\nks,mcpherson,-97.6250,38.3750\nks,mcpherson,-97.6250,38.5000\nks,saline,-97.6250,38.6250\nks,saline,-97.6250,38.7500\nks,saline,-97.6250,38.8750\nks,ottawa,-97.6250,39.0000\nks,ottawa,-97.6250,39.1250\nks,ottawa,-97.6250,39.2500\nks,cloud,-97.6250,39.3750\nks,cloud,-97.6250,39.5000\nks,cloud,-97.6250,39.6250\nks,republic,-97.6250,39.7500\nks,republic,-97.6250,39.8750\nks,republic,-97.6250,40.0000\nne,thayer,-97.6250,40.1250\nne,thayer,-97.6250,40.2500\nne,fillmore,-97.6250,40.3750\nne,fillmore,-97.6250,40.5000\nne,fillmore,-97.6250,40.6250\nne,york,-97.6250,40.7500\nne,york,-97.6250,40.8750\nne,york,-97.6250,41.0000\nne,polk,-97.6250,41.1250\nne,polk,-97.6250,41.2500\nne,merrick,-97.6250,41.3750\nne,platte,-97.6250,41.5000\nne,platte,-97.6250,41.6250\nne,madison,-97.6250,41.7500\nne,madison,-97.6250,41.8750\nne,madison,-97.6250,42.0000\nne,pierce,-97.6250,42.1250\nne,pierce,-97.6250,42.2500\nne,pierce,-97.6250,42.3750\nne,knox,-97.6250,42.5000\nne,knox,-97.6250,42.6250\nne,knox,-97.6250,42.7500\nsd,yankton,-97.6250,42.8750\nsd,yankton,-97.6250,43.0000\nsd,yankton,-97.6250,43.1250\nsd,hutchinson,-97.6250,43.2500\nsd,hutchinson,-97.6250,43.3750\nsd,hanson,-97.6250,43.5000\nsd,hanson,-97.6250,43.6250\nsd,hanson,-97.6250,43.7500\nsd,miner,-97.6250,43.8750\nsd,miner,-97.6250,44.0000\nsd,miner,-97.6250,44.1250\nsd,kingsbury,-97.6250,44.2500\nsd,kingsbury,-97.6250,44.3750\nsd,kingsbury,-97.6250,44.5000\nsd,clark,-97.6250,44.6250\nsd,clark,-97.6250,44.7500\nsd,clark,-97.6250,44.8750\nsd,clark,-97.6250,45.0000\nsd,clark,-97.6250,45.1250\nsd,day,-97.6250,45.2500\nsd,day,-97.6250,45.3750\nsd,day,-97.6250,45.5000\nsd,marshall,-97.6250,45.6250\nsd,marshall,-97.6250,45.7500\nsd,marshall,-97.6250,45.8750\nnd,sargent,-97.6250,46.0000\nnd,sargent,-97.6250,46.1250\nnd,sargent,-97.6250,46.2500\nnd,ransom,-97.6250,46.3750\nnd,ransom,-97.6250,46.5000\nnd,ransom,-97.6250,46.6250\nnd,cass,-97.6250,46.7500\nnd,cass,-97.6250,46.8750\nnd,cass,-97.6250,47.0000\nnd,cass,-97.6250,47.1250\nnd,steele,-97.6250,47.2500\nnd,steele,-97.6250,47.3750\nnd,steele,-97.6250,47.5000\nnd,steele,-97.6250,47.6250\nnd,grand forks,-97.6250,47.7500\nnd,grand forks,-97.6250,47.8750\nnd,grand forks,-97.6250,48.0000\nnd,grand forks,-97.6250,48.1250\nnd,walsh,-97.6250,48.2500\nnd,walsh,-97.6250,48.3750\nnd,walsh,-97.6250,48.5000\nnd,pembina,-97.6250,48.6250\nnd,pembina,-97.6250,48.7500\nnd,pembina,-97.6250,48.8750\nok,logan,-97.5000,36.0000\nok,logan,-97.5000,36.1250\nok,garfield,-97.5000,36.2500\nok,garfield,-97.5000,36.3750\nok,garfield,-97.5000,36.5000\nok,grant,-97.5000,36.6250\nok,grant,-97.5000,36.7500\nok,grant,-97.5000,36.8750\nks,sumner,-97.5000,37.0000\nks,sumner,-97.5000,37.1250\nks,sumner,-97.5000,37.2500\nks,sumner,-97.5000,37.3750\nks,sedgwick,-97.5000,37.5000\nks,sedgwick,-97.5000,37.6250\nks,sedgwick,-97.5000,37.7500\nks,sedgwick,-97.5000,37.8750\nks,harvey,-97.5000,38.0000\nks,harvey,-97.5000,38.1250\nks,mcpherson,-97.5000,38.2500\nks,mcpherson,-97.5000,38.3750\nks,mcpherson,-97.5000,38.5000\nks,saline,-97.5000,38.6250\nks,saline,-97.5000,38.7500\nks,saline,-97.5000,38.8750\nks,ottawa,-97.5000,39.0000\nks,ottawa,-97.5000,39.1250\nks,ottawa,-97.5000,39.2500\nks,cloud,-97.5000,39.3750\nks,cloud,-97.5000,39.5000\nks,cloud,-97.5000,39.6250\nks,republic,-97.5000,39.7500\nks,republic,-97.5000,39.8750\nks,republic,-97.5000,40.0000\nne,thayer,-97.5000,40.1250\nne,thayer,-97.5000,40.2500\nne,fillmore,-97.5000,40.3750\nne,fillmore,-97.5000,40.5000\nne,fillmore,-97.5000,40.6250\nne,york,-97.5000,40.7500\nne,york,-97.5000,40.8750\nne,york,-97.5000,41.0000\nne,polk,-97.5000,41.1250\nne,polk,-97.5000,41.2500\nne,platte,-97.5000,41.3750\nne,platte,-97.5000,41.5000\nne,platte,-97.5000,41.6250\nne,madison,-97.5000,41.7500\nne,madison,-97.5000,41.8750\nne,madison,-97.5000,42.0000\nne,pierce,-97.5000,42.1250\nne,pierce,-97.5000,42.2500\nne,pierce,-97.5000,42.3750\nne,knox,-97.5000,42.5000\nne,knox,-97.5000,42.6250\nne,knox,-97.5000,42.7500\nsd,yankton,-97.5000,42.8750\nsd,yankton,-97.5000,43.0000\nsd,yankton,-97.5000,43.1250\nsd,hutchinson,-97.5000,43.2500\nsd,hutchinson,-97.5000,43.3750\nsd,mccook,-97.5000,43.5000\nsd,mccook,-97.5000,43.6250\nsd,mccook,-97.5000,43.7500\nsd,miner,-97.5000,43.8750\nsd,miner,-97.5000,44.0000\nsd,miner,-97.5000,44.1250\nsd,kingsbury,-97.5000,44.2500\nsd,kingsbury,-97.5000,44.3750\nsd,kingsbury,-97.5000,44.5000\nsd,clark,-97.5000,44.6250\nsd,clark,-97.5000,44.7500\nsd,clark,-97.5000,44.8750\nsd,clark,-97.5000,45.0000\nsd,clark,-97.5000,45.1250\nsd,day,-97.5000,45.2500\nsd,day,-97.5000,45.3750\nsd,day,-97.5000,45.5000\nsd,marshall,-97.5000,45.6250\nsd,marshall,-97.5000,45.7500\nsd,marshall,-97.5000,45.8750\nnd,sargent,-97.5000,46.0000\nnd,sargent,-97.5000,46.1250\nnd,sargent,-97.5000,46.2500\nnd,ransom,-97.5000,46.3750\nnd,ransom,-97.5000,46.5000\nnd,ransom,-97.5000,46.6250\nnd,cass,-97.5000,46.7500\nnd,cass,-97.5000,46.8750\nnd,cass,-97.5000,47.0000\nnd,cass,-97.5000,47.1250\nnd,steele,-97.5000,47.2500\nnd,steele,-97.5000,47.3750\nnd,steele,-97.5000,47.5000\nnd,steele,-97.5000,47.6250\nnd,grand forks,-97.5000,47.7500\nnd,grand forks,-97.5000,47.8750\nnd,grand forks,-97.5000,48.0000\nnd,grand forks,-97.5000,48.1250\nnd,walsh,-97.5000,48.2500\nnd,walsh,-97.5000,48.3750\nnd,walsh,-97.5000,48.5000\nnd,pembina,-97.5000,48.6250\nnd,pembina,-97.5000,48.7500\nnd,pembina,-97.5000,48.8750\nok,logan,-97.3750,36.0000\nok,logan,-97.3750,36.1250\nok,noble,-97.3750,36.2500\nok,noble,-97.3750,36.3750\nok,noble,-97.3750,36.5000\nok,kay,-97.3750,36.6250\nok,kay,-97.3750,36.7500\nok,kay,-97.3750,36.8750\nks,sumner,-97.3750,37.0000\nks,sumner,-97.3750,37.1250\nks,sumner,-97.3750,37.2500\nks,sumner,-97.3750,37.3750\nks,sedgwick,-97.3750,37.5000\nks,sedgwick,-97.3750,37.6250\nks,sedgwick,-97.3750,37.7500\nks,sedgwick,-97.3750,37.8750\nks,harvey,-97.3750,38.0000\nks,harvey,-97.3750,38.1250\nks,mcpherson,-97.3750,38.2500\nks,mcpherson,-97.3750,38.3750\nks,mcpherson,-97.3750,38.5000\nks,saline,-97.3750,38.6250\nks,saline,-97.3750,38.7500\nks,saline,-97.3750,38.8750\nks,ottawa,-97.3750,39.0000\nks,ottawa,-97.3750,39.1250\nks,ottawa,-97.3750,39.2500\nks,cloud,-97.3750,39.3750\nks,cloud,-97.3750,39.5000\nks,cloud,-97.3750,39.6250\nks,republic,-97.3750,39.7500\nks,republic,-97.3750,39.8750\nks,republic,-97.3750,40.0000\nne,thayer,-97.3750,40.1250\nne,thayer,-97.3750,40.2500\nne,fillmore,-97.3750,40.3750\nne,fillmore,-97.3750,40.5000\nne,fillmore,-97.3750,40.6250\nne,york,-97.3750,40.7500\nne,york,-97.3750,40.8750\nne,york,-97.3750,41.0000\nne,polk,-97.3750,41.1250\nne,polk,-97.3750,41.2500\nne,polk,-97.3750,41.3750\nne,platte,-97.3750,41.5000\nne,platte,-97.3750,41.6250\nne,madison,-97.3750,41.7500\nne,madison,-97.3750,41.8750\nne,madison,-97.3750,42.0000\nne,pierce,-97.3750,42.1250\nne,pierce,-97.3750,42.2500\nne,pierce,-97.3750,42.3750\nne,cedar,-97.3750,42.5000\nne,cedar,-97.3750,42.6250\nne,cedar,-97.3750,42.7500\nsd,yankton,-97.3750,42.8750\nsd,yankton,-97.3750,43.0000\nsd,yankton,-97.3750,43.1250\nsd,turner,-97.3750,43.2500\nsd,turner,-97.3750,43.3750\nsd,mccook,-97.3750,43.5000\nsd,mccook,-97.3750,43.6250\nsd,mccook,-97.3750,43.7500\nsd,miner,-97.3750,43.8750\nsd,miner,-97.3750,44.0000\nsd,miner,-97.3750,44.1250\nsd,kingsbury,-97.3750,44.2500\nsd,kingsbury,-97.3750,44.3750\nsd,kingsbury,-97.3750,44.5000\nsd,hamlin,-97.3750,44.6250\nsd,hamlin,-97.3750,44.7500\nsd,codington,-97.3750,44.8750\nsd,codington,-97.3750,45.0000\nsd,codington,-97.3750,45.1250\nsd,day,-97.3750,45.2500\nsd,day,-97.3750,45.3750\nsd,day,-97.3750,45.5000\nsd,marshall,-97.3750,45.6250\nsd,marshall,-97.3750,45.7500\nsd,marshall,-97.3750,45.8750\nnd,sargent,-97.3750,46.0000\nnd,sargent,-97.3750,46.1250\nnd,sargent,-97.3750,46.2500\nnd,ransom,-97.3750,46.3750\nnd,ransom,-97.3750,46.5000\nnd,ransom,-97.3750,46.6250\nnd,cass,-97.3750,46.7500\nnd,cass,-97.3750,46.8750\nnd,cass,-97.3750,47.0000\nnd,cass,-97.3750,47.1250\nnd,traill,-97.3750,47.2500\nnd,traill,-97.3750,47.3750\nnd,traill,-97.3750,47.5000\nnd,traill,-97.3750,47.6250\nnd,grand forks,-97.3750,47.7500\nnd,grand forks,-97.3750,47.8750\nnd,grand forks,-97.3750,48.0000\nnd,grand forks,-97.3750,48.1250\nnd,walsh,-97.3750,48.2500\nnd,walsh,-97.3750,48.3750\nnd,walsh,-97.3750,48.5000\nnd,pembina,-97.3750,48.6250\nnd,pembina,-97.3750,48.7500\nnd,pembina,-97.3750,48.8750\nok,payne,-97.2500,36.0000\nok,payne,-97.2500,36.1250\nok,noble,-97.2500,36.2500\nok,noble,-97.2500,36.3750\nok,noble,-97.2500,36.5000\nok,kay,-97.2500,36.6250\nok,kay,-97.2500,36.7500\nok,kay,-97.2500,36.8750\nks,sumner,-97.2500,37.0000\nks,sumner,-97.2500,37.1250\nks,sumner,-97.2500,37.2500\nks,sumner,-97.2500,37.3750\nks,sedgwick,-97.2500,37.5000\nks,sedgwick,-97.2500,37.6250\nks,sedgwick,-97.2500,37.7500\nks,sedgwick,-97.2500,37.8750\nks,harvey,-97.2500,38.0000\nks,harvey,-97.2500,38.1250\nks,marion,-97.2500,38.2500\nks,marion,-97.2500,38.3750\nks,marion,-97.2500,38.5000\nks,dickinson,-97.2500,38.6250\nks,dickinson,-97.2500,38.7500\nks,dickinson,-97.2500,38.8750\nks,dickinson,-97.2500,39.0000\nks,dickinson,-97.2500,39.1250\nks,clay,-97.2500,39.2500\nks,clay,-97.2500,39.3750\nks,clay,-97.2500,39.5000\nks,washington,-97.2500,39.6250\nks,washington,-97.2500,39.7500\nks,washington,-97.2500,39.8750\nks,washington,-97.2500,40.0000\nne,jefferson,-97.2500,40.1250\nne,jefferson,-97.2500,40.2500\nne,saline,-97.2500,40.3750\nne,saline,-97.2500,40.5000\nne,saline,-97.2500,40.6250\nne,seward,-97.2500,40.7500\nne,seward,-97.2500,40.8750\nne,seward,-97.2500,41.0000\nne,butler,-97.2500,41.1250\nne,butler,-97.2500,41.2500\nne,butler,-97.2500,41.3750\nne,colfax,-97.2500,41.5000\nne,colfax,-97.2500,41.6250\nne,stanton,-97.2500,41.7500\nne,stanton,-97.2500,41.8750\nne,stanton,-97.2500,42.0000\nne,wayne,-97.2500,42.1250\nne,wayne,-97.2500,42.2500\nne,cedar,-97.2500,42.3750\nne,cedar,-97.2500,42.5000\nne,cedar,-97.2500,42.6250\nne,cedar,-97.2500,42.7500\nsd,yankton,-97.2500,42.8750\nsd,yankton,-97.2500,43.0000\nsd,yankton,-97.2500,43.1250\nsd,turner,-97.2500,43.2500\nsd,turner,-97.2500,43.3750\nsd,mccook,-97.2500,43.5000\nsd,mccook,-97.2500,43.6250\nsd,mccook,-97.2500,43.7500\nsd,lake,-97.2500,43.8750\nsd,lake,-97.2500,44.0000\nsd,lake,-97.2500,44.1250\nsd,kingsbury,-97.2500,44.2500\nsd,kingsbury,-97.2500,44.3750\nsd,kingsbury,-97.2500,44.5000\nsd,hamlin,-97.2500,44.6250\nsd,hamlin,-97.2500,44.7500\nsd,codington,-97.2500,44.8750\nsd,codington,-97.2500,45.0000\nsd,codington,-97.2500,45.1250\nsd,day,-97.2500,45.2500\nsd,day,-97.2500,45.3750\nsd,day,-97.2500,45.5000\nsd,marshall,-97.2500,45.6250\nsd,marshall,-97.2500,45.7500\nsd,marshall,-97.2500,45.8750\nnd,richland,-97.2500,46.0000\nnd,richland,-97.2500,46.1250\nnd,richland,-97.2500,46.2500\nnd,richland,-97.2500,46.3750\nnd,richland,-97.2500,46.5000\nnd,richland,-97.2500,46.6250\nnd,cass,-97.2500,46.7500\nnd,cass,-97.2500,46.8750\nnd,cass,-97.2500,47.0000\nnd,cass,-97.2500,47.1250\nnd,traill,-97.2500,47.2500\nnd,traill,-97.2500,47.3750\nnd,traill,-97.2500,47.5000\nnd,traill,-97.2500,47.6250\nnd,grand forks,-97.2500,47.7500\nnd,grand forks,-97.2500,47.8750\nnd,grand forks,-97.2500,48.0000\nnd,grand forks,-97.2500,48.1250\nnd,walsh,-97.2500,48.2500\nnd,walsh,-97.2500,48.3750\nnd,walsh,-97.2500,48.5000\nnd,pembina,-97.2500,48.6250\nnd,pembina,-97.2500,48.7500\nnd,pembina,-97.2500,48.8750\nok,payne,-97.1250,36.0000\nok,payne,-97.1250,36.1250\nok,noble,-97.1250,36.2500\nok,noble,-97.1250,36.3750\nok,noble,-97.1250,36.5000\nok,kay,-97.1250,36.6250\nok,kay,-97.1250,36.7500\nok,kay,-97.1250,36.8750\nks,cowley,-97.1250,37.0000\nks,cowley,-97.1250,37.1250\nks,cowley,-97.1250,37.2500\nks,cowley,-97.1250,37.3750\nks,butler,-97.1250,37.5000\nks,butler,-97.1250,37.6250\nks,butler,-97.1250,37.7500\nks,butler,-97.1250,37.8750\nks,butler,-97.1250,38.0000\nks,marion,-97.1250,38.1250\nks,marion,-97.1250,38.2500\nks,marion,-97.1250,38.3750\nks,marion,-97.1250,38.5000\nks,dickinson,-97.1250,38.6250\nks,dickinson,-97.1250,38.7500\nks,dickinson,-97.1250,38.8750\nks,dickinson,-97.1250,39.0000\nks,dickinson,-97.1250,39.1250\nks,clay,-97.1250,39.2500\nks,clay,-97.1250,39.3750\nks,clay,-97.1250,39.5000\nks,washington,-97.1250,39.6250\nks,washington,-97.1250,39.7500\nks,washington,-97.1250,39.8750\nks,washington,-97.1250,40.0000\nne,jefferson,-97.1250,40.1250\nne,jefferson,-97.1250,40.2500\nne,saline,-97.1250,40.3750\nne,saline,-97.1250,40.5000\nne,saline,-97.1250,40.6250\nne,seward,-97.1250,40.7500\nne,seward,-97.1250,40.8750\nne,seward,-97.1250,41.0000\nne,butler,-97.1250,41.1250\nne,butler,-97.1250,41.2500\nne,butler,-97.1250,41.3750\nne,colfax,-97.1250,41.5000\nne,colfax,-97.1250,41.6250\nne,stanton,-97.1250,41.7500\nne,stanton,-97.1250,41.8750\nne,stanton,-97.1250,42.0000\nne,wayne,-97.1250,42.1250\nne,wayne,-97.1250,42.2500\nne,cedar,-97.1250,42.3750\nne,cedar,-97.1250,42.5000\nne,cedar,-97.1250,42.6250\nne,cedar,-97.1250,42.7500\nsd,clay,-97.1250,42.8750\nsd,clay,-97.1250,43.0000\nsd,turner,-97.1250,43.1250\nsd,turner,-97.1250,43.2500\nsd,turner,-97.1250,43.3750\nsd,minnehaha,-97.1250,43.5000\nsd,minnehaha,-97.1250,43.6250\nsd,minnehaha,-97.1250,43.7500\nsd,lake,-97.1250,43.8750\nsd,lake,-97.1250,44.0000\nsd,lake,-97.1250,44.1250\nsd,brookings,-97.1250,44.2500\nsd,brookings,-97.1250,44.3750\nsd,brookings,-97.1250,44.5000\nsd,hamlin,-97.1250,44.6250\nsd,hamlin,-97.1250,44.7500\nsd,codington,-97.1250,44.8750\nsd,codington,-97.1250,45.0000\nsd,codington,-97.1250,45.1250\nsd,grant,-97.1250,45.2500\nsd,roberts,-97.1250,45.3750\nsd,roberts,-97.1250,45.5000\nsd,roberts,-97.1250,45.6250\nsd,roberts,-97.1250,45.7500\nsd,roberts,-97.1250,45.8750\nnd,richland,-97.1250,46.0000\nnd,richland,-97.1250,46.1250\nnd,richland,-97.1250,46.2500\nnd,richland,-97.1250,46.3750\nnd,richland,-97.1250,46.5000\nnd,richland,-97.1250,46.6250\nnd,cass,-97.1250,46.7500\nnd,cass,-97.1250,46.8750\nnd,cass,-97.1250,47.0000\nnd,cass,-97.1250,47.1250\nnd,traill,-97.1250,47.2500\nnd,traill,-97.1250,47.3750\nnd,traill,-97.1250,47.5000\nnd,traill,-97.1250,47.6250\nnd,grand forks,-97.1250,47.7500\nnd,grand forks,-97.1250,47.8750\nnd,grand forks,-97.1250,48.0000\nmn,polk,-97.1250,48.1250\nmn,marshall,-97.1250,48.2500\nmn,marshall,-97.1250,48.3750\nmn,marshall,-97.1250,48.5000\nnd,pembina,-97.1250,48.6250\nmn,kittson,-97.1250,48.7500\nmn,kittson,-97.1250,48.8750\nok,payne,-97.0000,36.0000\nok,payne,-97.0000,36.1250\nok,noble,-97.0000,36.2500\nok,pawnee,-97.0000,36.3750\nok,osage,-97.0000,36.5000\nok,osage,-97.0000,36.6250\nok,kay,-97.0000,36.7500\nok,kay,-97.0000,36.8750\nks,cowley,-97.0000,37.0000\nks,cowley,-97.0000,37.1250\nks,cowley,-97.0000,37.2500\nks,cowley,-97.0000,37.3750\nks,butler,-97.0000,37.5000\nks,butler,-97.0000,37.6250\nks,butler,-97.0000,37.7500\nks,butler,-97.0000,37.8750\nks,butler,-97.0000,38.0000\nks,marion,-97.0000,38.1250\nks,marion,-97.0000,38.2500\nks,marion,-97.0000,38.3750\nks,marion,-97.0000,38.5000\nks,dickinson,-97.0000,38.6250\nks,dickinson,-97.0000,38.7500\nks,dickinson,-97.0000,38.8750\nks,dickinson,-97.0000,39.0000\nks,dickinson,-97.0000,39.1250\nks,clay,-97.0000,39.2500\nks,clay,-97.0000,39.3750\nks,clay,-97.0000,39.5000\nks,washington,-97.0000,39.6250\nks,washington,-97.0000,39.7500\nks,washington,-97.0000,39.8750\nks,washington,-97.0000,40.0000\nne,jefferson,-97.0000,40.1250\nne,jefferson,-97.0000,40.2500\nne,saline,-97.0000,40.3750\nne,saline,-97.0000,40.5000\nne,saline,-97.0000,40.6250\nne,seward,-97.0000,40.7500\nne,seward,-97.0000,40.8750\nne,seward,-97.0000,41.0000\nne,butler,-97.0000,41.1250\nne,butler,-97.0000,41.2500\nne,butler,-97.0000,41.3750\nne,colfax,-97.0000,41.5000\nne,colfax,-97.0000,41.6250\nne,cuming,-97.0000,41.7500\nne,cuming,-97.0000,41.8750\nne,cuming,-97.0000,42.0000\nne,wayne,-97.0000,42.1250\nne,wayne,-97.0000,42.2500\nne,dixon,-97.0000,42.3750\nne,dixon,-97.0000,42.5000\nne,dixon,-97.0000,42.6250\nne,dixon,-97.0000,42.7500\nsd,clay,-97.0000,42.8750\nsd,clay,-97.0000,43.0000\nsd,turner,-97.0000,43.1250\nsd,turner,-97.0000,43.2500\nsd,turner,-97.0000,43.3750\nsd,minnehaha,-97.0000,43.5000\nsd,minnehaha,-97.0000,43.6250\nsd,minnehaha,-97.0000,43.7500\nsd,lake,-97.0000,43.8750\nsd,lake,-97.0000,44.0000\nsd,lake,-97.0000,44.1250\nsd,brookings,-97.0000,44.2500\nsd,brookings,-97.0000,44.3750\nsd,brookings,-97.0000,44.5000\nsd,hamlin,-97.0000,44.6250\nsd,hamlin,-97.0000,44.7500\nsd,codington,-97.0000,44.8750\nsd,codington,-97.0000,45.0000\nsd,codington,-97.0000,45.1250\nsd,grant,-97.0000,45.2500\nsd,roberts,-97.0000,45.3750\nsd,roberts,-97.0000,45.5000\nsd,roberts,-97.0000,45.6250\nsd,roberts,-97.0000,45.7500\nsd,roberts,-97.0000,45.8750\nnd,richland,-97.0000,46.0000\nnd,richland,-97.0000,46.1250\nnd,richland,-97.0000,46.2500\nnd,richland,-97.0000,46.3750\nnd,richland,-97.0000,46.5000\nnd,richland,-97.0000,46.6250\nnd,cass,-97.0000,46.7500\nnd,cass,-97.0000,46.8750\nnd,cass,-97.0000,47.0000\nnd,cass,-97.0000,47.1250\nnd,traill,-97.0000,47.2500\nnd,traill,-97.0000,47.3750\nnd,traill,-97.0000,47.5000\nnd,traill,-97.0000,47.6250\nnd,grand forks,-97.0000,47.7500\nmn,polk,-97.0000,47.8750\nmn,polk,-97.0000,48.0000\nmn,polk,-97.0000,48.1250\nmn,marshall,-97.0000,48.2500\nmn,marshall,-97.0000,48.3750\nmn,marshall,-97.0000,48.5000\nmn,kittson,-97.0000,48.6250\nmn,kittson,-97.0000,48.7500\nmn,kittson,-97.0000,48.8750\nok,payne,-96.8750,36.0000\nok,payne,-96.8750,36.1250\nok,pawnee,-96.8750,36.2500\nok,pawnee,-96.8750,36.3750\nok,osage,-96.8750,36.5000\nok,osage,-96.8750,36.6250\nok,osage,-96.8750,36.7500\nok,kay,-96.8750,36.8750\nks,cowley,-96.8750,37.0000\nks,cowley,-96.8750,37.1250\nks,cowley,-96.8750,37.2500\nks,cowley,-96.8750,37.3750\nks,butler,-96.8750,37.5000\nks,butler,-96.8750,37.6250\nks,butler,-96.8750,37.7500\nks,butler,-96.8750,37.8750\nks,butler,-96.8750,38.0000\nks,marion,-96.8750,38.1250\nks,marion,-96.8750,38.2500\nks,marion,-96.8750,38.3750\nks,marion,-96.8750,38.5000\nks,morris,-96.8750,38.6250\nks,morris,-96.8750,38.7500\nks,geary,-96.8750,38.8750\nks,geary,-96.8750,39.0000\nks,geary,-96.8750,39.1250\nks,riley,-96.8750,39.2500\nks,riley,-96.8750,39.3750\nks,riley,-96.8750,39.5000\nks,washington,-96.8750,39.6250\nks,washington,-96.8750,39.7500\nks,washington,-96.8750,39.8750\nks,washington,-96.8750,40.0000\nne,gage,-96.8750,40.1250\nne,gage,-96.8750,40.2500\nne,gage,-96.8750,40.3750\nne,gage,-96.8750,40.5000\nne,lancaster,-96.8750,40.6250\nne,lancaster,-96.8750,40.7500\nne,lancaster,-96.8750,40.8750\nne,lancaster,-96.8750,41.0000\nne,saunders,-96.8750,41.1250\nne,saunders,-96.8750,41.2500\nne,saunders,-96.8750,41.3750\nne,dodge,-96.8750,41.5000\nne,dodge,-96.8750,41.6250\nne,cuming,-96.8750,41.7500\nne,cuming,-96.8750,41.8750\nne,cuming,-96.8750,42.0000\nne,wayne,-96.8750,42.1250\nne,wayne,-96.8750,42.2500\nne,dixon,-96.8750,42.3750\nne,dixon,-96.8750,42.5000\nne,dixon,-96.8750,42.6250\nsd,clay,-96.8750,42.7500\nsd,clay,-96.8750,42.8750\nsd,clay,-96.8750,43.0000\nsd,lincoln,-96.8750,43.1250\nsd,lincoln,-96.8750,43.2500\nsd,lincoln,-96.8750,43.3750\nsd,lincoln,-96.8750,43.5000\nsd,minnehaha,-96.8750,43.6250\nsd,minnehaha,-96.8750,43.7500\nsd,moody,-96.8750,43.8750\nsd,moody,-96.8750,44.0000\nsd,moody,-96.8750,44.1250\nsd,brookings,-96.8750,44.2500\nsd,brookings,-96.8750,44.3750\nsd,brookings,-96.8750,44.5000\nsd,deuel,-96.8750,44.6250\nsd,deuel,-96.8750,44.7500\nsd,deuel,-96.8750,44.8750\nsd,grant,-96.8750,45.0000\nsd,grant,-96.8750,45.1250\nsd,grant,-96.8750,45.2500\nsd,roberts,-96.8750,45.3750\nsd,roberts,-96.8750,45.5000\nsd,roberts,-96.8750,45.6250\nsd,roberts,-96.8750,45.7500\nsd,roberts,-96.8750,45.8750\nnd,richland,-96.8750,46.0000\nnd,richland,-96.8750,46.1250\nnd,richland,-96.8750,46.2500\nnd,richland,-96.8750,46.3750\nnd,richland,-96.8750,46.5000\nnd,richland,-96.8750,46.6250\nnd,cass,-96.8750,46.7500\nnd,cass,-96.8750,46.8750\nnd,cass,-96.8750,47.0000\nnd,cass,-96.8750,47.1250\nnd,traill,-96.8750,47.2500\nnd,traill,-96.8750,47.3750\nnd,traill,-96.8750,47.5000\nmn,polk,-96.8750,47.6250\nmn,polk,-96.8750,47.7500\nmn,polk,-96.8750,47.8750\nmn,polk,-96.8750,48.0000\nmn,polk,-96.8750,48.1250\nmn,marshall,-96.8750,48.2500\nmn,marshall,-96.8750,48.3750\nmn,marshall,-96.8750,48.5000\nmn,kittson,-96.8750,48.6250\nmn,kittson,-96.8750,48.7500\nmn,kittson,-96.8750,48.8750\nok,payne,-96.7500,36.0000\nok,payne,-96.7500,36.1250\nok,pawnee,-96.7500,36.2500\nok,pawnee,-96.7500,36.3750\nok,pawnee,-96.7500,36.5000\nok,osage,-96.7500,36.6250\nok,osage,-96.7500,36.7500\nok,osage,-96.7500,36.8750\nks,cowley,-96.7500,37.0000\nks,cowley,-96.7500,37.1250\nks,cowley,-96.7500,37.2500\nks,cowley,-96.7500,37.3750\nks,butler,-96.7500,37.5000\nks,butler,-96.7500,37.6250\nks,butler,-96.7500,37.7500\nks,butler,-96.7500,37.8750\nks,butler,-96.7500,38.0000\nks,chase,-96.7500,38.1250\nks,chase,-96.7500,38.2500\nks,chase,-96.7500,38.3750\nks,chase,-96.7500,38.5000\nks,morris,-96.7500,38.6250\nks,morris,-96.7500,38.7500\nks,geary,-96.7500,38.8750\nks,geary,-96.7500,39.0000\nks,riley,-96.7500,39.1250\nks,riley,-96.7500,39.2500\nks,riley,-96.7500,39.3750\nks,riley,-96.7500,39.5000\nks,marshall,-96.7500,39.6250\nks,marshall,-96.7500,39.7500\nks,marshall,-96.7500,39.8750\nks,marshall,-96.7500,40.0000\nne,gage,-96.7500,40.1250\nne,gage,-96.7500,40.2500\nne,gage,-96.7500,40.3750\nne,gage,-96.7500,40.5000\nne,lancaster,-96.7500,40.6250\nne,lancaster,-96.7500,40.7500\nne,lancaster,-96.7500,40.8750\nne,lancaster,-96.7500,41.0000\nne,saunders,-96.7500,41.1250\nne,saunders,-96.7500,41.2500\nne,saunders,-96.7500,41.3750\nne,dodge,-96.7500,41.5000\nne,dodge,-96.7500,41.6250\nne,cuming,-96.7500,41.7500\nne,cuming,-96.7500,41.8750\nne,cuming,-96.7500,42.0000\nne,thurston,-96.7500,42.1250\nne,thurston,-96.7500,42.2500\nne,dixon,-96.7500,42.3750\nne,dixon,-96.7500,42.5000\nne,dixon,-96.7500,42.6250\nsd,union,-96.7500,42.7500\nsd,union,-96.7500,42.8750\nsd,union,-96.7500,43.0000\nsd,lincoln,-96.7500,43.1250\nsd,lincoln,-96.7500,43.2500\nsd,lincoln,-96.7500,43.3750\nsd,lincoln,-96.7500,43.5000\nsd,minnehaha,-96.7500,43.6250\nsd,minnehaha,-96.7500,43.7500\nsd,moody,-96.7500,43.8750\nsd,moody,-96.7500,44.0000\nsd,moody,-96.7500,44.1250\nsd,brookings,-96.7500,44.2500\nsd,brookings,-96.7500,44.3750\nsd,brookings,-96.7500,44.5000\nsd,deuel,-96.7500,44.6250\nsd,deuel,-96.7500,44.7500\nsd,deuel,-96.7500,44.8750\nsd,grant,-96.7500,45.0000\nsd,grant,-96.7500,45.1250\nsd,grant,-96.7500,45.2500\nsd,roberts,-96.7500,45.3750\nmn,big stone,-96.7500,45.5000\nmn,traverse,-96.7500,45.6250\nsd,roberts,-96.7500,45.7500\nsd,roberts,-96.7500,45.8750\nnd,richland,-96.7500,46.0000\nnd,richland,-96.7500,46.1250\nnd,richland,-96.7500,46.2500\nnd,richland,-96.7500,46.3750\nnd,richland,-96.7500,46.5000\nmn,wilkin,-96.7500,46.6250\nmn,clay,-96.7500,46.7500\nmn,clay,-96.7500,46.8750\nmn,clay,-96.7500,47.0000\nmn,clay,-96.7500,47.1250\nmn,norman,-96.7500,47.2500\nmn,norman,-96.7500,47.3750\nmn,polk,-96.7500,47.5000\nmn,polk,-96.7500,47.6250\nmn,polk,-96.7500,47.7500\nmn,polk,-96.7500,47.8750\nmn,polk,-96.7500,48.0000\nmn,polk,-96.7500,48.1250\nmn,marshall,-96.7500,48.2500\nmn,marshall,-96.7500,48.3750\nmn,marshall,-96.7500,48.5000\nmn,kittson,-96.7500,48.6250\nmn,kittson,-96.7500,48.7500\nmn,kittson,-96.7500,48.8750\nok,payne,-96.6250,36.0000\nok,payne,-96.6250,36.1250\nok,pawnee,-96.6250,36.2500\nok,pawnee,-96.6250,36.3750\nok,osage,-96.6250,36.5000\nok,osage,-96.6250,36.6250\nok,osage,-96.6250,36.7500\nok,osage,-96.6250,36.8750\nks,cowley,-96.6250,37.0000\nks,cowley,-96.6250,37.1250\nks,cowley,-96.6250,37.2500\nks,cowley,-96.6250,37.3750\nks,butler,-96.6250,37.5000\nks,butler,-96.6250,37.6250\nks,butler,-96.6250,37.7500\nks,butler,-96.6250,37.8750\nks,butler,-96.6250,38.0000\nks,chase,-96.6250,38.1250\nks,chase,-96.6250,38.2500\nks,chase,-96.6250,38.3750\nks,chase,-96.6250,38.5000\nks,morris,-96.6250,38.6250\nks,morris,-96.6250,38.7500\nks,geary,-96.6250,38.8750\nks,geary,-96.6250,39.0000\nks,riley,-96.6250,39.1250\nks,riley,-96.6250,39.2500\nks,pottawatomie,-96.6250,39.3750\nks,pottawatomie,-96.6250,39.5000\nks,marshall,-96.6250,39.6250\nks,marshall,-96.6250,39.7500\nks,marshall,-96.6250,39.8750\nks,marshall,-96.6250,40.0000\nne,gage,-96.6250,40.1250\nne,gage,-96.6250,40.2500\nne,gage,-96.6250,40.3750\nne,gage,-96.6250,40.5000\nne,lancaster,-96.6250,40.6250\nne,lancaster,-96.6250,40.7500\nne,lancaster,-96.6250,40.8750\nne,lancaster,-96.6250,41.0000\nne,saunders,-96.6250,41.1250\nne,saunders,-96.6250,41.2500\nne,saunders,-96.6250,41.3750\nne,dodge,-96.6250,41.5000\nne,dodge,-96.6250,41.6250\nne,cuming,-96.6250,41.7500\nne,cuming,-96.6250,41.8750\nne,cuming,-96.6250,42.0000\nne,thurston,-96.6250,42.1250\nne,thurston,-96.6250,42.2500\nne,dakota,-96.6250,42.3750\nne,dakota,-96.6250,42.5000\nsd,union,-96.6250,42.6250\nia,plymouth,-96.6250,42.7500\nsd,union,-96.6250,42.8750\nsd,union,-96.6250,43.0000\nsd,lincoln,-96.6250,43.1250\nsd,lincoln,-96.6250,43.2500\nsd,lincoln,-96.6250,43.3750\nsd,lincoln,-96.6250,43.5000\nsd,minnehaha,-96.6250,43.6250\nsd,minnehaha,-96.6250,43.7500\nsd,moody,-96.6250,43.8750\nsd,moody,-96.6250,44.0000\nsd,moody,-96.6250,44.1250\nsd,brookings,-96.6250,44.2500\nsd,brookings,-96.6250,44.3750\nsd,brookings,-96.6250,44.5000\nsd,deuel,-96.6250,44.6250\nsd,deuel,-96.6250,44.7500\nsd,deuel,-96.6250,44.8750\nsd,grant,-96.6250,45.0000\nsd,grant,-96.6250,45.1250\nsd,grant,-96.6250,45.2500\nsd,roberts,-96.6250,45.3750\nmn,big stone,-96.6250,45.5000\nmn,traverse,-96.6250,45.6250\nmn,traverse,-96.6250,45.7500\nsd,roberts,-96.6250,45.8750\nnd,richland,-96.6250,46.0000\nnd,richland,-96.6250,46.1250\nnd,richland,-96.6250,46.2500\nmn,wilkin,-96.6250,46.3750\nmn,wilkin,-96.6250,46.5000\nmn,wilkin,-96.6250,46.6250\nmn,clay,-96.6250,46.7500\nmn,clay,-96.6250,46.8750\nmn,clay,-96.6250,47.0000\nmn,clay,-96.6250,47.1250\nmn,norman,-96.6250,47.2500\nmn,norman,-96.6250,47.3750\nmn,polk,-96.6250,47.5000\nmn,polk,-96.6250,47.6250\nmn,polk,-96.6250,47.7500\nmn,polk,-96.6250,47.8750\nmn,polk,-96.6250,48.0000\nmn,polk,-96.6250,48.1250\nmn,marshall,-96.6250,48.2500\nmn,marshall,-96.6250,48.3750\nmn,marshall,-96.6250,48.5000\nmn,kittson,-96.6250,48.6250\nmn,kittson,-96.6250,48.7500\nmn,kittson,-96.6250,48.8750\nok,creek,-96.5000,36.0000\nok,creek,-96.5000,36.1250\nok,pawnee,-96.5000,36.2500\nok,osage,-96.5000,36.3750\nok,osage,-96.5000,36.5000\nok,osage,-96.5000,36.6250\nok,osage,-96.5000,36.7500\nok,osage,-96.5000,36.8750\nks,chautauqua,-96.5000,37.0000\nks,chautauqua,-96.5000,37.1250\nks,chautauqua,-96.5000,37.2500\nks,elk,-96.5000,37.3750\nks,elk,-96.5000,37.5000\nks,greenwood,-96.5000,37.6250\nks,greenwood,-96.5000,37.7500\nks,greenwood,-96.5000,37.8750\nks,greenwood,-96.5000,38.0000\nks,chase,-96.5000,38.1250\nks,chase,-96.5000,38.2500\nks,chase,-96.5000,38.3750\nks,chase,-96.5000,38.5000\nks,morris,-96.5000,38.6250\nks,morris,-96.5000,38.7500\nks,wabaunsee,-96.5000,38.8750\nks,wabaunsee,-96.5000,39.0000\nks,riley,-96.5000,39.1250\nks,pottawatomie,-96.5000,39.2500\nks,pottawatomie,-96.5000,39.3750\nks,pottawatomie,-96.5000,39.5000\nks,marshall,-96.5000,39.6250\nks,marshall,-96.5000,39.7500\nks,marshall,-96.5000,39.8750\nks,marshall,-96.5000,40.0000\nne,gage,-96.5000,40.1250\nne,gage,-96.5000,40.2500\nne,gage,-96.5000,40.3750\nne,gage,-96.5000,40.5000\nne,lancaster,-96.5000,40.6250\nne,lancaster,-96.5000,40.7500\nne,lancaster,-96.5000,40.8750\nne,lancaster,-96.5000,41.0000\nne,saunders,-96.5000,41.1250\nne,saunders,-96.5000,41.2500\nne,saunders,-96.5000,41.3750\nne,dodge,-96.5000,41.5000\nne,dodge,-96.5000,41.6250\nne,burt,-96.5000,41.7500\nne,burt,-96.5000,41.8750\nne,burt,-96.5000,42.0000\nne,thurston,-96.5000,42.1250\nne,thurston,-96.5000,42.2500\nne,dakota,-96.5000,42.3750\nsd,union,-96.5000,42.5000\nia,plymouth,-96.5000,42.6250\nia,plymouth,-96.5000,42.7500\nia,plymouth,-96.5000,42.8750\nsd,union,-96.5000,43.0000\nsd,lincoln,-96.5000,43.1250\nia,sioux,-96.5000,43.2500\nia,lyon,-96.5000,43.3750\nia,lyon,-96.5000,43.5000\nsd,minnehaha,-96.5000,43.6250\nsd,minnehaha,-96.5000,43.7500\nsd,moody,-96.5000,43.8750\nsd,moody,-96.5000,44.0000\nsd,moody,-96.5000,44.1250\nsd,brookings,-96.5000,44.2500\nsd,brookings,-96.5000,44.3750\nsd,brookings,-96.5000,44.5000\nsd,deuel,-96.5000,44.6250\nsd,deuel,-96.5000,44.7500\nsd,deuel,-96.5000,44.8750\nsd,grant,-96.5000,45.0000\nsd,grant,-96.5000,45.1250\nsd,grant,-96.5000,45.2500\nmn,big stone,-96.5000,45.3750\nmn,big stone,-96.5000,45.5000\nmn,traverse,-96.5000,45.6250\nmn,traverse,-96.5000,45.7500\nmn,traverse,-96.5000,45.8750\nmn,traverse,-96.5000,46.0000\nmn,wilkin,-96.5000,46.1250\nmn,wilkin,-96.5000,46.2500\nmn,wilkin,-96.5000,46.3750\nmn,wilkin,-96.5000,46.5000\nmn,wilkin,-96.5000,46.6250\nmn,clay,-96.5000,46.7500\nmn,clay,-96.5000,46.8750\nmn,clay,-96.5000,47.0000\nmn,clay,-96.5000,47.1250\nmn,norman,-96.5000,47.2500\nmn,norman,-96.5000,47.3750\nmn,polk,-96.5000,47.5000\nmn,polk,-96.5000,47.6250\nmn,polk,-96.5000,47.7500\nmn,polk,-96.5000,47.8750\nmn,polk,-96.5000,48.0000\nmn,pennington,-96.5000,48.1250\nmn,marshall,-96.5000,48.2500\nmn,marshall,-96.5000,48.3750\nmn,marshall,-96.5000,48.5000\nmn,kittson,-96.5000,48.6250\nmn,kittson,-96.5000,48.7500\nmn,kittson,-96.5000,48.8750\nok,creek,-96.3750,36.0000\nok,creek,-96.3750,36.1250\nok,pawnee,-96.3750,36.2500\nok,osage,-96.3750,36.3750\nok,osage,-96.3750,36.5000\nok,osage,-96.3750,36.6250\nok,osage,-96.3750,36.7500\nok,osage,-96.3750,36.8750\nks,chautauqua,-96.3750,37.0000\nks,chautauqua,-96.3750,37.1250\nks,chautauqua,-96.3750,37.2500\nks,elk,-96.3750,37.3750\nks,elk,-96.3750,37.5000\nks,greenwood,-96.3750,37.6250\nks,greenwood,-96.3750,37.7500\nks,greenwood,-96.3750,37.8750\nks,greenwood,-96.3750,38.0000\nks,chase,-96.3750,38.1250\nks,chase,-96.3750,38.2500\nks,chase,-96.3750,38.3750\nks,chase,-96.3750,38.5000\nks,morris,-96.3750,38.6250\nks,wabaunsee,-96.3750,38.7500\nks,wabaunsee,-96.3750,38.8750\nks,wabaunsee,-96.3750,39.0000\nks,wabaunsee,-96.3750,39.1250\nks,pottawatomie,-96.3750,39.2500\nks,pottawatomie,-96.3750,39.3750\nks,pottawatomie,-96.3750,39.5000\nks,marshall,-96.3750,39.6250\nks,marshall,-96.3750,39.7500\nks,marshall,-96.3750,39.8750\nks,marshall,-96.3750,40.0000\nne,pawnee,-96.3750,40.1250\nne,pawnee,-96.3750,40.2500\nne,johnson,-96.3750,40.3750\nne,johnson,-96.3750,40.5000\nne,otoe,-96.3750,40.6250\nne,otoe,-96.3750,40.7500\nne,cass,-96.3750,40.8750\nne,cass,-96.3750,41.0000\nne,saunders,-96.3750,41.1250\nne,saunders,-96.3750,41.2500\nne,douglas,-96.3750,41.3750\nne,washington,-96.3750,41.5000\nne,washington,-96.3750,41.6250\nne,burt,-96.3750,41.7500\nne,burt,-96.3750,41.8750\nne,burt,-96.3750,42.0000\nne,thurston,-96.3750,42.1250\nne,thurston,-96.3750,42.2500\nia,woodbury,-96.3750,42.3750\nia,woodbury,-96.3750,42.5000\nia,plymouth,-96.3750,42.6250\nia,plymouth,-96.3750,42.7500\nia,plymouth,-96.3750,42.8750\nia,sioux,-96.3750,43.0000\nia,sioux,-96.3750,43.1250\nia,sioux,-96.3750,43.2500\nia,lyon,-96.3750,43.3750\nia,lyon,-96.3750,43.5000\nmn,rock,-96.3750,43.6250\nmn,rock,-96.3750,43.7500\nmn,pipestone,-96.3750,43.8750\nmn,pipestone,-96.3750,44.0000\nmn,pipestone,-96.3750,44.1250\nmn,lincoln,-96.3750,44.2500\nmn,lincoln,-96.3750,44.3750\nmn,lincoln,-96.3750,44.5000\nmn,lincoln,-96.3750,44.6250\nmn,yellow medicine,-96.3750,44.7500\nmn,lac qui parle,-96.3750,44.8750\nmn,lac qui parle,-96.3750,45.0000\nmn,lac qui parle,-96.3750,45.1250\nmn,lac qui parle,-96.3750,45.2500\nmn,big stone,-96.3750,45.3750\nmn,big stone,-96.3750,45.5000\nmn,traverse,-96.3750,45.6250\nmn,traverse,-96.3750,45.7500\nmn,traverse,-96.3750,45.8750\nmn,traverse,-96.3750,46.0000\nmn,wilkin,-96.3750,46.1250\nmn,wilkin,-96.3750,46.2500\nmn,wilkin,-96.3750,46.3750\nmn,wilkin,-96.3750,46.5000\nmn,wilkin,-96.3750,46.6250\nmn,clay,-96.3750,46.7500\nmn,clay,-96.3750,46.8750\nmn,clay,-96.3750,47.0000\nmn,clay,-96.3750,47.1250\nmn,norman,-96.3750,47.2500\nmn,norman,-96.3750,47.3750\nmn,polk,-96.3750,47.5000\nmn,polk,-96.3750,47.6250\nmn,polk,-96.3750,47.7500\nmn,red lake,-96.3750,47.8750\nmn,pennington,-96.3750,48.0000\nmn,pennington,-96.3750,48.1250\nmn,marshall,-96.3750,48.2500\nmn,marshall,-96.3750,48.3750\nmn,marshall,-96.3750,48.5000\nmn,roseau,-96.3750,48.6250\nmn,roseau,-96.3750,48.7500\nmn,roseau,-96.3750,48.8750\nok,creek,-96.2500,36.0000\nok,tulsa,-96.2500,36.1250\nok,osage,-96.2500,36.2500\nok,osage,-96.2500,36.3750\nok,osage,-96.2500,36.5000\nok,osage,-96.2500,36.6250\nok,osage,-96.2500,36.7500\nok,osage,-96.2500,36.8750\nks,chautauqua,-96.2500,37.0000\nks,chautauqua,-96.2500,37.1250\nks,chautauqua,-96.2500,37.2500\nks,elk,-96.2500,37.3750\nks,elk,-96.2500,37.5000\nks,greenwood,-96.2500,37.6250\nks,greenwood,-96.2500,37.7500\nks,greenwood,-96.2500,37.8750\nks,greenwood,-96.2500,38.0000\nks,greenwood,-96.2500,38.1250\nks,lyon,-96.2500,38.2500\nks,lyon,-96.2500,38.3750\nks,lyon,-96.2500,38.5000\nks,lyon,-96.2500,38.6250\nks,wabaunsee,-96.2500,38.7500\nks,wabaunsee,-96.2500,38.8750\nks,wabaunsee,-96.2500,39.0000\nks,wabaunsee,-96.2500,39.1250\nks,pottawatomie,-96.2500,39.2500\nks,pottawatomie,-96.2500,39.3750\nks,pottawatomie,-96.2500,39.5000\nks,marshall,-96.2500,39.6250\nks,marshall,-96.2500,39.7500\nks,marshall,-96.2500,39.8750\nks,marshall,-96.2500,40.0000\nne,pawnee,-96.2500,40.1250\nne,pawnee,-96.2500,40.2500\nne,johnson,-96.2500,40.3750\nne,johnson,-96.2500,40.5000\nne,otoe,-96.2500,40.6250\nne,otoe,-96.2500,40.7500\nne,cass,-96.2500,40.8750\nne,cass,-96.2500,41.0000\nne,sarpy,-96.2500,41.1250\nne,douglas,-96.2500,41.2500\nne,douglas,-96.2500,41.3750\nne,washington,-96.2500,41.5000\nne,washington,-96.2500,41.6250\nne,burt,-96.2500,41.7500\nne,burt,-96.2500,41.8750\nne,burt,-96.2500,42.0000\nia,monona,-96.2500,42.1250\nia,woodbury,-96.2500,42.2500\nia,woodbury,-96.2500,42.3750\nia,woodbury,-96.2500,42.5000\nia,plymouth,-96.2500,42.6250\nia,plymouth,-96.2500,42.7500\nia,plymouth,-96.2500,42.8750\nia,sioux,-96.2500,43.0000\nia,sioux,-96.2500,43.1250\nia,sioux,-96.2500,43.2500\nia,lyon,-96.2500,43.3750\nia,lyon,-96.2500,43.5000\nmn,rock,-96.2500,43.6250\nmn,rock,-96.2500,43.7500\nmn,pipestone,-96.2500,43.8750\nmn,pipestone,-96.2500,44.0000\nmn,pipestone,-96.2500,44.1250\nmn,lincoln,-96.2500,44.2500\nmn,lincoln,-96.2500,44.3750\nmn,lincoln,-96.2500,44.5000\nmn,lincoln,-96.2500,44.6250\nmn,yellow medicine,-96.2500,44.7500\nmn,lac qui parle,-96.2500,44.8750\nmn,lac qui parle,-96.2500,45.0000\nmn,lac qui parle,-96.2500,45.1250\nmn,big stone,-96.2500,45.2500\nmn,big stone,-96.2500,45.3750\nmn,big stone,-96.2500,45.5000\nmn,stevens,-96.2500,45.6250\nmn,stevens,-96.2500,45.7500\nmn,grant,-96.2500,45.8750\nmn,grant,-96.2500,46.0000\nmn,otter tail,-96.2500,46.1250\nmn,otter tail,-96.2500,46.2500\nmn,otter tail,-96.2500,46.3750\nmn,otter tail,-96.2500,46.5000\nmn,otter tail,-96.2500,46.6250\nmn,clay,-96.2500,46.7500\nmn,clay,-96.2500,46.8750\nmn,clay,-96.2500,47.0000\nmn,clay,-96.2500,47.1250\nmn,norman,-96.2500,47.2500\nmn,norman,-96.2500,47.3750\nmn,polk,-96.2500,47.5000\nmn,polk,-96.2500,47.6250\nmn,polk,-96.2500,47.7500\nmn,red lake,-96.2500,47.8750\nmn,pennington,-96.2500,48.0000\nmn,pennington,-96.2500,48.1250\nmn,marshall,-96.2500,48.2500\nmn,marshall,-96.2500,48.3750\nmn,marshall,-96.2500,48.5000\nmn,roseau,-96.2500,48.6250\nmn,roseau,-96.2500,48.7500\nmn,roseau,-96.2500,48.8750\nok,creek,-96.1250,36.0000\nok,tulsa,-96.1250,36.1250\nok,osage,-96.1250,36.2500\nok,osage,-96.1250,36.3750\nok,osage,-96.1250,36.5000\nok,osage,-96.1250,36.6250\nok,osage,-96.1250,36.7500\nok,osage,-96.1250,36.8750\nks,chautauqua,-96.1250,37.0000\nks,chautauqua,-96.1250,37.1250\nks,chautauqua,-96.1250,37.2500\nks,elk,-96.1250,37.3750\nks,elk,-96.1250,37.5000\nks,greenwood,-96.1250,37.6250\nks,greenwood,-96.1250,37.7500\nks,greenwood,-96.1250,37.8750\nks,greenwood,-96.1250,38.0000\nks,greenwood,-96.1250,38.1250\nks,lyon,-96.1250,38.2500\nks,lyon,-96.1250,38.3750\nks,lyon,-96.1250,38.5000\nks,lyon,-96.1250,38.6250\nks,wabaunsee,-96.1250,38.7500\nks,wabaunsee,-96.1250,38.8750\nks,wabaunsee,-96.1250,39.0000\nks,wabaunsee,-96.1250,39.1250\nks,pottawatomie,-96.1250,39.2500\nks,pottawatomie,-96.1250,39.3750\nks,pottawatomie,-96.1250,39.5000\nks,nemaha,-96.1250,39.6250\nks,nemaha,-96.1250,39.7500\nks,nemaha,-96.1250,39.8750\nks,nemaha,-96.1250,40.0000\nne,pawnee,-96.1250,40.1250\nne,pawnee,-96.1250,40.2500\nne,johnson,-96.1250,40.3750\nne,johnson,-96.1250,40.5000\nne,otoe,-96.1250,40.6250\nne,otoe,-96.1250,40.7500\nne,cass,-96.1250,40.8750\nne,cass,-96.1250,41.0000\nne,sarpy,-96.1250,41.1250\nne,douglas,-96.1250,41.2500\nne,douglas,-96.1250,41.3750\nne,washington,-96.1250,41.5000\nne,washington,-96.1250,41.6250\nne,burt,-96.1250,41.7500\nia,monona,-96.1250,41.8750\nia,monona,-96.1250,42.0000\nia,monona,-96.1250,42.1250\nia,woodbury,-96.1250,42.2500\nia,woodbury,-96.1250,42.3750\nia,woodbury,-96.1250,42.5000\nia,plymouth,-96.1250,42.6250\nia,plymouth,-96.1250,42.7500\nia,plymouth,-96.1250,42.8750\nia,sioux,-96.1250,43.0000\nia,sioux,-96.1250,43.1250\nia,sioux,-96.1250,43.2500\nia,lyon,-96.1250,43.3750\nia,lyon,-96.1250,43.5000\nmn,rock,-96.1250,43.6250\nmn,rock,-96.1250,43.7500\nmn,pipestone,-96.1250,43.8750\nmn,pipestone,-96.1250,44.0000\nmn,pipestone,-96.1250,44.1250\nmn,lincoln,-96.1250,44.2500\nmn,lincoln,-96.1250,44.3750\nmn,lincoln,-96.1250,44.5000\nmn,lincoln,-96.1250,44.6250\nmn,yellow medicine,-96.1250,44.7500\nmn,lac qui parle,-96.1250,44.8750\nmn,lac qui parle,-96.1250,45.0000\nmn,lac qui parle,-96.1250,45.1250\nmn,big stone,-96.1250,45.2500\nmn,big stone,-96.1250,45.3750\nmn,stevens,-96.1250,45.5000\nmn,stevens,-96.1250,45.6250\nmn,stevens,-96.1250,45.7500\nmn,grant,-96.1250,45.8750\nmn,grant,-96.1250,46.0000\nmn,otter tail,-96.1250,46.1250\nmn,otter tail,-96.1250,46.2500\nmn,otter tail,-96.1250,46.3750\nmn,otter tail,-96.1250,46.5000\nmn,otter tail,-96.1250,46.6250\nmn,becker,-96.1250,46.7500\nmn,becker,-96.1250,46.8750\nmn,becker,-96.1250,47.0000\nmn,becker,-96.1250,47.1250\nmn,norman,-96.1250,47.2500\nmn,norman,-96.1250,47.3750\nmn,polk,-96.1250,47.5000\nmn,polk,-96.1250,47.6250\nmn,polk,-96.1250,47.7500\nmn,red lake,-96.1250,47.8750\nmn,pennington,-96.1250,48.0000\nmn,pennington,-96.1250,48.1250\nmn,marshall,-96.1250,48.2500\nmn,marshall,-96.1250,48.3750\nmn,marshall,-96.1250,48.5000\nmn,roseau,-96.1250,48.6250\nmn,roseau,-96.1250,48.7500\nmn,roseau,-96.1250,48.8750\nok,tulsa,-96.0000,36.0000\nok,tulsa,-96.0000,36.1250\nok,tulsa,-96.0000,36.2500\nok,tulsa,-96.0000,36.3750\nok,washington,-96.0000,36.5000\nok,washington,-96.0000,36.6250\nok,washington,-96.0000,36.7500\nok,washington,-96.0000,36.8750\nks,chautauqua,-96.0000,37.0000\nks,chautauqua,-96.0000,37.1250\nks,chautauqua,-96.0000,37.2500\nks,elk,-96.0000,37.3750\nks,elk,-96.0000,37.5000\nks,greenwood,-96.0000,37.6250\nks,greenwood,-96.0000,37.7500\nks,greenwood,-96.0000,37.8750\nks,greenwood,-96.0000,38.0000\nks,greenwood,-96.0000,38.1250\nks,lyon,-96.0000,38.2500\nks,lyon,-96.0000,38.3750\nks,lyon,-96.0000,38.5000\nks,lyon,-96.0000,38.6250\nks,wabaunsee,-96.0000,38.7500\nks,wabaunsee,-96.0000,38.8750\nks,wabaunsee,-96.0000,39.0000\nks,wabaunsee,-96.0000,39.1250\nks,jackson,-96.0000,39.2500\nks,jackson,-96.0000,39.3750\nks,jackson,-96.0000,39.5000\nks,nemaha,-96.0000,39.6250\nks,nemaha,-96.0000,39.7500\nks,nemaha,-96.0000,39.8750\nks,nemaha,-96.0000,40.0000\nne,richardson,-96.0000,40.1250\nne,richardson,-96.0000,40.2500\nne,nemaha,-96.0000,40.3750\nne,nemaha,-96.0000,40.5000\nne,otoe,-96.0000,40.6250\nne,otoe,-96.0000,40.7500\nne,cass,-96.0000,40.8750\nne,cass,-96.0000,41.0000\nne,sarpy,-96.0000,41.1250\nne,douglas,-96.0000,41.2500\nne,douglas,-96.0000,41.3750\nia,pottawattamie,-96.0000,41.5000\nia,harrison,-96.0000,41.6250\nia,harrison,-96.0000,41.7500\nia,monona,-96.0000,41.8750\nia,monona,-96.0000,42.0000\nia,monona,-96.0000,42.1250\nia,woodbury,-96.0000,42.2500\nia,woodbury,-96.0000,42.3750\nia,woodbury,-96.0000,42.5000\nia,plymouth,-96.0000,42.6250\nia,plymouth,-96.0000,42.7500\nia,plymouth,-96.0000,42.8750\nia,sioux,-96.0000,43.0000\nia,sioux,-96.0000,43.1250\nia,sioux,-96.0000,43.2500\nia,lyon,-96.0000,43.3750\nia,lyon,-96.0000,43.5000\nmn,nobles,-96.0000,43.6250\nmn,nobles,-96.0000,43.7500\nmn,murray,-96.0000,43.8750\nmn,murray,-96.0000,44.0000\nmn,murray,-96.0000,44.1250\nmn,lyon,-96.0000,44.2500\nmn,lyon,-96.0000,44.3750\nmn,lyon,-96.0000,44.5000\nmn,lyon,-96.0000,44.6250\nmn,yellow medicine,-96.0000,44.7500\nmn,lac qui parle,-96.0000,44.8750\nmn,lac qui parle,-96.0000,45.0000\nmn,chippewa,-96.0000,45.1250\nmn,swift,-96.0000,45.2500\nmn,swift,-96.0000,45.3750\nmn,stevens,-96.0000,45.5000\nmn,stevens,-96.0000,45.6250\nmn,stevens,-96.0000,45.7500\nmn,grant,-96.0000,45.8750\nmn,grant,-96.0000,46.0000\nmn,otter tail,-96.0000,46.1250\nmn,otter tail,-96.0000,46.2500\nmn,otter tail,-96.0000,46.3750\nmn,otter tail,-96.0000,46.5000\nmn,otter tail,-96.0000,46.6250\nmn,becker,-96.0000,46.7500\nmn,becker,-96.0000,46.8750\nmn,becker,-96.0000,47.0000\nmn,becker,-96.0000,47.1250\nmn,mahnomen,-96.0000,47.2500\nmn,mahnomen,-96.0000,47.3750\nmn,polk,-96.0000,47.5000\nmn,polk,-96.0000,47.6250\nmn,polk,-96.0000,47.7500\nmn,red lake,-96.0000,47.8750\nmn,pennington,-96.0000,48.0000\nmn,pennington,-96.0000,48.1250\nmn,marshall,-96.0000,48.2500\nmn,marshall,-96.0000,48.3750\nmn,marshall,-96.0000,48.5000\nmn,roseau,-96.0000,48.6250\nmn,roseau,-96.0000,48.7500\nmn,roseau,-96.0000,48.8750\nok,tulsa,-95.8750,36.0000\nok,tulsa,-95.8750,36.1250\nok,tulsa,-95.8750,36.2500\nok,tulsa,-95.8750,36.3750\nok,washington,-95.8750,36.5000\nok,washington,-95.8750,36.6250\nok,washington,-95.8750,36.7500\nok,washington,-95.8750,36.8750\nks,montgomery,-95.8750,37.0000\nks,montgomery,-95.8750,37.1250\nks,montgomery,-95.8750,37.2500\nks,montgomery,-95.8750,37.3750\nks,wilson,-95.8750,37.5000\nks,wilson,-95.8750,37.6250\nks,woodson,-95.8750,37.7500\nks,woodson,-95.8750,37.8750\nks,woodson,-95.8750,38.0000\nks,coffey,-95.8750,38.1250\nks,coffey,-95.8750,38.2500\nks,coffey,-95.8750,38.3750\nks,osage,-95.8750,38.5000\nks,osage,-95.8750,38.6250\nks,osage,-95.8750,38.7500\nks,shawnee,-95.8750,38.8750\nks,shawnee,-95.8750,39.0000\nks,shawnee,-95.8750,39.1250\nks,jackson,-95.8750,39.2500\nks,jackson,-95.8750,39.3750\nks,jackson,-95.8750,39.5000\nks,nemaha,-95.8750,39.6250\nks,nemaha,-95.8750,39.7500\nks,nemaha,-95.8750,39.8750\nks,nemaha,-95.8750,40.0000\nne,richardson,-95.8750,40.1250\nne,richardson,-95.8750,40.2500\nne,nemaha,-95.8750,40.3750\nne,nemaha,-95.8750,40.5000\nne,otoe,-95.8750,40.6250\nia,fremont,-95.8750,40.7500\nne,cass,-95.8750,40.8750\nne,cass,-95.8750,41.0000\nne,sarpy,-95.8750,41.1250\nia,pottawattamie,-95.8750,41.2500\nia,pottawattamie,-95.8750,41.3750\nia,pottawattamie,-95.8750,41.5000\nia,harrison,-95.8750,41.6250\nia,harrison,-95.8750,41.7500\nia,monona,-95.8750,41.8750\nia,monona,-95.8750,42.0000\nia,monona,-95.8750,42.1250\nia,woodbury,-95.8750,42.2500\nia,woodbury,-95.8750,42.3750\nia,woodbury,-95.8750,42.5000\nia,plymouth,-95.8750,42.6250\nia,plymouth,-95.8750,42.7500\nia,plymouth,-95.8750,42.8750\nia,sioux,-95.8750,43.0000\nia,sioux,-95.8750,43.1250\nia,sioux,-95.8750,43.2500\nia,lyon,-95.8750,43.3750\nia,lyon,-95.8750,43.5000\nmn,nobles,-95.8750,43.6250\nmn,nobles,-95.8750,43.7500\nmn,murray,-95.8750,43.8750\nmn,murray,-95.8750,44.0000\nmn,murray,-95.8750,44.1250\nmn,lyon,-95.8750,44.2500\nmn,lyon,-95.8750,44.3750\nmn,lyon,-95.8750,44.5000\nmn,lyon,-95.8750,44.6250\nmn,yellow medicine,-95.8750,44.7500\nmn,lac qui parle,-95.8750,44.8750\nmn,lac qui parle,-95.8750,45.0000\nmn,chippewa,-95.8750,45.1250\nmn,swift,-95.8750,45.2500\nmn,swift,-95.8750,45.3750\nmn,stevens,-95.8750,45.5000\nmn,stevens,-95.8750,45.6250\nmn,stevens,-95.8750,45.7500\nmn,grant,-95.8750,45.8750\nmn,grant,-95.8750,46.0000\nmn,otter tail,-95.8750,46.1250\nmn,otter tail,-95.8750,46.2500\nmn,otter tail,-95.8750,46.3750\nmn,otter tail,-95.8750,46.5000\nmn,otter tail,-95.8750,46.6250\nmn,becker,-95.8750,46.7500\nmn,becker,-95.8750,46.8750\nmn,becker,-95.8750,47.0000\nmn,becker,-95.8750,47.1250\nmn,mahnomen,-95.8750,47.2500\nmn,mahnomen,-95.8750,47.3750\nmn,polk,-95.8750,47.5000\nmn,polk,-95.8750,47.6250\nmn,polk,-95.8750,47.7500\nmn,red lake,-95.8750,47.8750\nmn,pennington,-95.8750,48.0000\nmn,pennington,-95.8750,48.1250\nmn,marshall,-95.8750,48.2500\nmn,marshall,-95.8750,48.3750\nmn,marshall,-95.8750,48.5000\nmn,roseau,-95.8750,48.6250\nmn,roseau,-95.8750,48.7500\nmn,roseau,-95.8750,48.8750\nok,wagoner,-95.7500,36.0000\nok,wagoner,-95.7500,36.1250\nok,rogers,-95.7500,36.2500\nok,rogers,-95.7500,36.3750\nok,rogers,-95.7500,36.5000\nok,nowata,-95.7500,36.6250\nok,nowata,-95.7500,36.7500\nok,nowata,-95.7500,36.8750\nks,montgomery,-95.7500,37.0000\nks,montgomery,-95.7500,37.1250\nks,montgomery,-95.7500,37.2500\nks,montgomery,-95.7500,37.3750\nks,wilson,-95.7500,37.5000\nks,wilson,-95.7500,37.6250\nks,woodson,-95.7500,37.7500\nks,woodson,-95.7500,37.8750\nks,woodson,-95.7500,38.0000\nks,coffey,-95.7500,38.1250\nks,coffey,-95.7500,38.2500\nks,coffey,-95.7500,38.3750\nks,osage,-95.7500,38.5000\nks,osage,-95.7500,38.6250\nks,osage,-95.7500,38.7500\nks,shawnee,-95.7500,38.8750\nks,shawnee,-95.7500,39.0000\nks,shawnee,-95.7500,39.1250\nks,jackson,-95.7500,39.2500\nks,jackson,-95.7500,39.3750\nks,jackson,-95.7500,39.5000\nks,jackson,-95.7500,39.6250\nks,brown,-95.7500,39.7500\nks,brown,-95.7500,39.8750\nks,brown,-95.7500,40.0000\nne,richardson,-95.7500,40.1250\nne,richardson,-95.7500,40.2500\nne,nemaha,-95.7500,40.3750\nne,nemaha,-95.7500,40.5000\nia,fremont,-95.7500,40.6250\nia,fremont,-95.7500,40.7500\nia,fremont,-95.7500,40.8750\nia,mills,-95.7500,41.0000\nia,mills,-95.7500,41.1250\nia,pottawattamie,-95.7500,41.2500\nia,pottawattamie,-95.7500,41.3750\nia,pottawattamie,-95.7500,41.5000\nia,harrison,-95.7500,41.6250\nia,harrison,-95.7500,41.7500\nia,monona,-95.7500,41.8750\nia,monona,-95.7500,42.0000\nia,monona,-95.7500,42.1250\nia,woodbury,-95.7500,42.2500\nia,woodbury,-95.7500,42.3750\nia,woodbury,-95.7500,42.5000\nia,cherokee,-95.7500,42.6250\nia,cherokee,-95.7500,42.7500\nia,cherokee,-95.7500,42.8750\nia,o'brien,-95.7500,43.0000\nia,o'brien,-95.7500,43.1250\nia,o'brien,-95.7500,43.2500\nia,osceola,-95.7500,43.3750\nmn,nobles,-95.7500,43.5000\nmn,nobles,-95.7500,43.6250\nmn,nobles,-95.7500,43.7500\nmn,murray,-95.7500,43.8750\nmn,murray,-95.7500,44.0000\nmn,murray,-95.7500,44.1250\nmn,lyon,-95.7500,44.2500\nmn,lyon,-95.7500,44.3750\nmn,lyon,-95.7500,44.5000\nmn,lyon,-95.7500,44.6250\nmn,yellow medicine,-95.7500,44.7500\nmn,yellow medicine,-95.7500,44.8750\nmn,chippewa,-95.7500,45.0000\nmn,chippewa,-95.7500,45.1250\nmn,swift,-95.7500,45.2500\nmn,swift,-95.7500,45.3750\nmn,stevens,-95.7500,45.5000\nmn,pope,-95.7500,45.6250\nmn,pope,-95.7500,45.7500\nmn,douglas,-95.7500,45.8750\nmn,douglas,-95.7500,46.0000\nmn,otter tail,-95.7500,46.1250\nmn,otter tail,-95.7500,46.2500\nmn,otter tail,-95.7500,46.3750\nmn,otter tail,-95.7500,46.5000\nmn,otter tail,-95.7500,46.6250\nmn,becker,-95.7500,46.7500\nmn,becker,-95.7500,46.8750\nmn,becker,-95.7500,47.0000\nmn,becker,-95.7500,47.1250\nmn,mahnomen,-95.7500,47.2500\nmn,mahnomen,-95.7500,47.3750\nmn,polk,-95.7500,47.5000\nmn,polk,-95.7500,47.6250\nmn,polk,-95.7500,47.7500\nmn,red lake,-95.7500,47.8750\nmn,pennington,-95.7500,48.0000\nmn,pennington,-95.7500,48.1250\nmn,marshall,-95.7500,48.2500\nmn,marshall,-95.7500,48.3750\nmn,marshall,-95.7500,48.5000\nmn,roseau,-95.7500,48.6250\nmn,roseau,-95.7500,48.7500\nmn,roseau,-95.7500,48.8750\nok,wagoner,-95.6250,36.0000\nok,wagoner,-95.6250,36.1250\nok,rogers,-95.6250,36.2500\nok,rogers,-95.6250,36.3750\nok,rogers,-95.6250,36.5000\nok,nowata,-95.6250,36.6250\nok,nowata,-95.6250,36.7500\nok,nowata,-95.6250,36.8750\nks,montgomery,-95.6250,37.0000\nks,montgomery,-95.6250,37.1250\nks,montgomery,-95.6250,37.2500\nks,montgomery,-95.6250,37.3750\nks,wilson,-95.6250,37.5000\nks,wilson,-95.6250,37.6250\nks,woodson,-95.6250,37.7500\nks,woodson,-95.6250,37.8750\nks,woodson,-95.6250,38.0000\nks,coffey,-95.6250,38.1250\nks,coffey,-95.6250,38.2500\nks,coffey,-95.6250,38.3750\nks,osage,-95.6250,38.5000\nks,osage,-95.6250,38.6250\nks,osage,-95.6250,38.7500\nks,shawnee,-95.6250,38.8750\nks,shawnee,-95.6250,39.0000\nks,shawnee,-95.6250,39.1250\nks,jackson,-95.6250,39.2500\nks,jackson,-95.6250,39.3750\nks,jackson,-95.6250,39.5000\nks,jackson,-95.6250,39.6250\nks,brown,-95.6250,39.7500\nks,brown,-95.6250,39.8750\nks,brown,-95.6250,40.0000\nne,richardson,-95.6250,40.1250\nne,richardson,-95.6250,40.2500\nmo,atchison,-95.6250,40.3750\nmo,atchison,-95.6250,40.5000\nia,fremont,-95.6250,40.6250\nia,fremont,-95.6250,40.7500\nia,fremont,-95.6250,40.8750\nia,mills,-95.6250,41.0000\nia,mills,-95.6250,41.1250\nia,pottawattamie,-95.6250,41.2500\nia,pottawattamie,-95.6250,41.3750\nia,pottawattamie,-95.6250,41.5000\nia,harrison,-95.6250,41.6250\nia,harrison,-95.6250,41.7500\nia,crawford,-95.6250,41.8750\nia,crawford,-95.6250,42.0000\nia,crawford,-95.6250,42.1250\nia,ida,-95.6250,42.2500\nia,ida,-95.6250,42.3750\nia,ida,-95.6250,42.5000\nia,cherokee,-95.6250,42.6250\nia,cherokee,-95.6250,42.7500\nia,cherokee,-95.6250,42.8750\nia,o'brien,-95.6250,43.0000\nia,o'brien,-95.6250,43.1250\nia,o'brien,-95.6250,43.2500\nia,osceola,-95.6250,43.3750\nmn,nobles,-95.6250,43.5000\nmn,nobles,-95.6250,43.6250\nmn,nobles,-95.6250,43.7500\nmn,murray,-95.6250,43.8750\nmn,murray,-95.6250,44.0000\nmn,murray,-95.6250,44.1250\nmn,lyon,-95.6250,44.2500\nmn,lyon,-95.6250,44.3750\nmn,lyon,-95.6250,44.5000\nmn,lyon,-95.6250,44.6250\nmn,yellow medicine,-95.6250,44.7500\nmn,chippewa,-95.6250,44.8750\nmn,chippewa,-95.6250,45.0000\nmn,chippewa,-95.6250,45.1250\nmn,swift,-95.6250,45.2500\nmn,swift,-95.6250,45.3750\nmn,pope,-95.6250,45.5000\nmn,pope,-95.6250,45.6250\nmn,pope,-95.6250,45.7500\nmn,douglas,-95.6250,45.8750\nmn,douglas,-95.6250,46.0000\nmn,otter tail,-95.6250,46.1250\nmn,otter tail,-95.6250,46.2500\nmn,otter tail,-95.6250,46.3750\nmn,otter tail,-95.6250,46.5000\nmn,otter tail,-95.6250,46.6250\nmn,becker,-95.6250,46.7500\nmn,becker,-95.6250,46.8750\nmn,becker,-95.6250,47.0000\nmn,becker,-95.6250,47.1250\nmn,mahnomen,-95.6250,47.2500\nmn,mahnomen,-95.6250,47.3750\nmn,polk,-95.6250,47.5000\nmn,polk,-95.6250,47.6250\nmn,polk,-95.6250,47.7500\nmn,polk,-95.6250,47.8750\nmn,pennington,-95.6250,48.0000\nmn,pennington,-95.6250,48.1250\nmn,marshall,-95.6250,48.2500\nmn,marshall,-95.6250,48.3750\nmn,marshall,-95.6250,48.5000\nmn,roseau,-95.6250,48.6250\nmn,roseau,-95.6250,48.7500\nmn,roseau,-95.6250,48.8750\nok,wagoner,-95.5000,36.0000\nok,rogers,-95.5000,36.1250\nok,rogers,-95.5000,36.2500\nok,rogers,-95.5000,36.3750\nok,rogers,-95.5000,36.5000\nok,nowata,-95.5000,36.6250\nok,nowata,-95.5000,36.7500\nok,nowata,-95.5000,36.8750\nks,labette,-95.5000,37.0000\nks,labette,-95.5000,37.1250\nks,labette,-95.5000,37.2500\nks,labette,-95.5000,37.3750\nks,neosho,-95.5000,37.5000\nks,neosho,-95.5000,37.6250\nks,allen,-95.5000,37.7500\nks,allen,-95.5000,37.8750\nks,allen,-95.5000,38.0000\nks,anderson,-95.5000,38.1250\nks,anderson,-95.5000,38.2500\nks,anderson,-95.5000,38.3750\nks,franklin,-95.5000,38.5000\nks,franklin,-95.5000,38.6250\nks,douglas,-95.5000,38.7500\nks,douglas,-95.5000,38.8750\nks,douglas,-95.5000,39.0000\nks,jefferson,-95.5000,39.1250\nks,jefferson,-95.5000,39.2500\nks,jefferson,-95.5000,39.3750\nks,atchison,-95.5000,39.5000\nks,atchison,-95.5000,39.6250\nks,brown,-95.5000,39.7500\nks,brown,-95.5000,39.8750\nks,brown,-95.5000,40.0000\nne,richardson,-95.5000,40.1250\nmo,holt,-95.5000,40.2500\nmo,atchison,-95.5000,40.3750\nmo,atchison,-95.5000,40.5000\nia,fremont,-95.5000,40.6250\nia,fremont,-95.5000,40.7500\nia,fremont,-95.5000,40.8750\nia,mills,-95.5000,41.0000\nia,mills,-95.5000,41.1250\nia,pottawattamie,-95.5000,41.2500\nia,pottawattamie,-95.5000,41.3750\nia,pottawattamie,-95.5000,41.5000\nia,shelby,-95.5000,41.6250\nia,shelby,-95.5000,41.7500\nia,crawford,-95.5000,41.8750\nia,crawford,-95.5000,42.0000\nia,crawford,-95.5000,42.1250\nia,ida,-95.5000,42.2500\nia,ida,-95.5000,42.3750\nia,ida,-95.5000,42.5000\nia,cherokee,-95.5000,42.6250\nia,cherokee,-95.5000,42.7500\nia,cherokee,-95.5000,42.8750\nia,o'brien,-95.5000,43.0000\nia,o'brien,-95.5000,43.1250\nia,o'brien,-95.5000,43.2500\nia,osceola,-95.5000,43.3750\nia,osceola,-95.5000,43.5000\nmn,nobles,-95.5000,43.6250\nmn,nobles,-95.5000,43.7500\nmn,murray,-95.5000,43.8750\nmn,murray,-95.5000,44.0000\nmn,murray,-95.5000,44.1250\nmn,redwood,-95.5000,44.2500\nmn,redwood,-95.5000,44.3750\nmn,redwood,-95.5000,44.5000\nmn,yellow medicine,-95.5000,44.6250\nmn,yellow medicine,-95.5000,44.7500\nmn,chippewa,-95.5000,44.8750\nmn,chippewa,-95.5000,45.0000\nmn,chippewa,-95.5000,45.1250\nmn,swift,-95.5000,45.2500\nmn,swift,-95.5000,45.3750\nmn,pope,-95.5000,45.5000\nmn,pope,-95.5000,45.6250\nmn,pope,-95.5000,45.7500\nmn,douglas,-95.5000,45.8750\nmn,douglas,-95.5000,46.0000\nmn,otter tail,-95.5000,46.1250\nmn,otter tail,-95.5000,46.2500\nmn,otter tail,-95.5000,46.3750\nmn,otter tail,-95.5000,46.5000\nmn,otter tail,-95.5000,46.6250\nmn,becker,-95.5000,46.7500\nmn,becker,-95.5000,46.8750\nmn,becker,-95.5000,47.0000\nmn,becker,-95.5000,47.1250\nmn,clearwater,-95.5000,47.2500\nmn,clearwater,-95.5000,47.3750\nmn,clearwater,-95.5000,47.5000\nmn,clearwater,-95.5000,47.6250\nmn,clearwater,-95.5000,47.7500\nmn,clearwater,-95.5000,47.8750\nmn,clearwater,-95.5000,48.0000\nmn,beltrami,-95.5000,48.1250\nmn,beltrami,-95.5000,48.2500\nmn,beltrami,-95.5000,48.3750\nmn,beltrami,-95.5000,48.5000\nmn,roseau,-95.5000,48.6250\nmn,roseau,-95.5000,48.7500\nmn,roseau,-95.5000,48.8750\nok,wagoner,-95.3750,36.0000\nok,mayes,-95.3750,36.1250\nok,mayes,-95.3750,36.2500\nok,mayes,-95.3750,36.3750\nok,mayes,-95.3750,36.5000\nok,craig,-95.3750,36.6250\nok,craig,-95.3750,36.7500\nok,craig,-95.3750,36.8750\nks,labette,-95.3750,37.0000\nks,labette,-95.3750,37.1250\nks,labette,-95.3750,37.2500\nks,labette,-95.3750,37.3750\nks,neosho,-95.3750,37.5000\nks,neosho,-95.3750,37.6250\nks,allen,-95.3750,37.7500\nks,allen,-95.3750,37.8750\nks,allen,-95.3750,38.0000\nks,anderson,-95.3750,38.1250\nks,anderson,-95.3750,38.2500\nks,anderson,-95.3750,38.3750\nks,franklin,-95.3750,38.5000\nks,franklin,-95.3750,38.6250\nks,douglas,-95.3750,38.7500\nks,douglas,-95.3750,38.8750\nks,douglas,-95.3750,39.0000\nks,jefferson,-95.3750,39.1250\nks,jefferson,-95.3750,39.2500\nks,jefferson,-95.3750,39.3750\nks,atchison,-95.3750,39.5000\nks,atchison,-95.3750,39.6250\nks,brown,-95.3750,39.7500\nks,brown,-95.3750,39.8750\nks,brown,-95.3750,40.0000\nmo,holt,-95.3750,40.1250\nmo,holt,-95.3750,40.2500\nmo,atchison,-95.3750,40.3750\nmo,atchison,-95.3750,40.5000\nia,fremont,-95.3750,40.6250\nia,page,-95.3750,40.7500\nia,page,-95.3750,40.8750\nia,montgomery,-95.3750,41.0000\nia,montgomery,-95.3750,41.1250\nia,pottawattamie,-95.3750,41.2500\nia,pottawattamie,-95.3750,41.3750\nia,pottawattamie,-95.3750,41.5000\nia,shelby,-95.3750,41.6250\nia,shelby,-95.3750,41.7500\nia,crawford,-95.3750,41.8750\nia,crawford,-95.3750,42.0000\nia,crawford,-95.3750,42.1250\nia,ida,-95.3750,42.2500\nia,ida,-95.3750,42.3750\nia,sac,-95.3750,42.5000\nia,buena vista,-95.3750,42.6250\nia,buena vista,-95.3750,42.7500\nia,buena vista,-95.3750,42.8750\nia,clay,-95.3750,43.0000\nia,clay,-95.3750,43.1250\nia,clay,-95.3750,43.2500\nia,dickinson,-95.3750,43.3750\nia,dickinson,-95.3750,43.5000\nmn,jackson,-95.3750,43.6250\nmn,jackson,-95.3750,43.7500\nmn,cottonwood,-95.3750,43.8750\nmn,cottonwood,-95.3750,44.0000\nmn,cottonwood,-95.3750,44.1250\nmn,redwood,-95.3750,44.2500\nmn,redwood,-95.3750,44.3750\nmn,redwood,-95.3750,44.5000\nmn,yellow medicine,-95.3750,44.6250\nmn,renville,-95.3750,44.7500\nmn,renville,-95.3750,44.8750\nmn,chippewa,-95.3750,45.0000\nmn,chippewa,-95.3750,45.1250\nmn,swift,-95.3750,45.2500\nmn,swift,-95.3750,45.3750\nmn,pope,-95.3750,45.5000\nmn,pope,-95.3750,45.6250\nmn,pope,-95.3750,45.7500\nmn,douglas,-95.3750,45.8750\nmn,douglas,-95.3750,46.0000\nmn,otter tail,-95.3750,46.1250\nmn,otter tail,-95.3750,46.2500\nmn,otter tail,-95.3750,46.3750\nmn,otter tail,-95.3750,46.5000\nmn,otter tail,-95.3750,46.6250\nmn,becker,-95.3750,46.7500\nmn,becker,-95.3750,46.8750\nmn,becker,-95.3750,47.0000\nmn,becker,-95.3750,47.1250\nmn,clearwater,-95.3750,47.2500\nmn,clearwater,-95.3750,47.3750\nmn,clearwater,-95.3750,47.5000\nmn,clearwater,-95.3750,47.6250\nmn,clearwater,-95.3750,47.7500\nmn,clearwater,-95.3750,47.8750\nmn,clearwater,-95.3750,48.0000\nmn,beltrami,-95.3750,48.1250\nmn,beltrami,-95.3750,48.2500\nmn,beltrami,-95.3750,48.3750\nmn,beltrami,-95.3750,48.5000\nmn,roseau,-95.3750,48.6250\nmn,roseau,-95.3750,48.7500\nmn,roseau,-95.3750,48.8750\nok,wagoner,-95.2500,36.0000\nok,mayes,-95.2500,36.1250\nok,mayes,-95.2500,36.2500\nok,mayes,-95.2500,36.3750\nok,mayes,-95.2500,36.5000\nok,craig,-95.2500,36.6250\nok,craig,-95.2500,36.7500\nok,craig,-95.2500,36.8750\nks,labette,-95.2500,37.0000\nks,labette,-95.2500,37.1250\nks,labette,-95.2500,37.2500\nks,labette,-95.2500,37.3750\nks,neosho,-95.2500,37.5000\nks,neosho,-95.2500,37.6250\nks,allen,-95.2500,37.7500\nks,allen,-95.2500,37.8750\nks,allen,-95.2500,38.0000\nks,anderson,-95.2500,38.1250\nks,anderson,-95.2500,38.2500\nks,anderson,-95.2500,38.3750\nks,franklin,-95.2500,38.5000\nks,franklin,-95.2500,38.6250\nks,douglas,-95.2500,38.7500\nks,douglas,-95.2500,38.8750\nks,douglas,-95.2500,39.0000\nks,jefferson,-95.2500,39.1250\nks,jefferson,-95.2500,39.2500\nks,jefferson,-95.2500,39.3750\nks,atchison,-95.2500,39.5000\nks,atchison,-95.2500,39.6250\nks,doniphan,-95.2500,39.7500\nks,doniphan,-95.2500,39.8750\nmo,holt,-95.2500,40.0000\nmo,holt,-95.2500,40.1250\nmo,holt,-95.2500,40.2500\nmo,atchison,-95.2500,40.3750\nmo,atchison,-95.2500,40.5000\nia,page,-95.2500,40.6250\nia,page,-95.2500,40.7500\nia,page,-95.2500,40.8750\nia,montgomery,-95.2500,41.0000\nia,montgomery,-95.2500,41.1250\nia,pottawattamie,-95.2500,41.2500\nia,pottawattamie,-95.2500,41.3750\nia,pottawattamie,-95.2500,41.5000\nia,shelby,-95.2500,41.6250\nia,shelby,-95.2500,41.7500\nia,crawford,-95.2500,41.8750\nia,crawford,-95.2500,42.0000\nia,crawford,-95.2500,42.1250\nia,sac,-95.2500,42.2500\nia,sac,-95.2500,42.3750\nia,sac,-95.2500,42.5000\nia,buena vista,-95.2500,42.6250\nia,buena vista,-95.2500,42.7500\nia,buena vista,-95.2500,42.8750\nia,clay,-95.2500,43.0000\nia,clay,-95.2500,43.1250\nia,clay,-95.2500,43.2500\nia,dickinson,-95.2500,43.3750\nia,dickinson,-95.2500,43.5000\nmn,jackson,-95.2500,43.6250\nmn,jackson,-95.2500,43.7500\nmn,cottonwood,-95.2500,43.8750\nmn,cottonwood,-95.2500,44.0000\nmn,cottonwood,-95.2500,44.1250\nmn,redwood,-95.2500,44.2500\nmn,redwood,-95.2500,44.3750\nmn,redwood,-95.2500,44.5000\nmn,redwood,-95.2500,44.6250\nmn,renville,-95.2500,44.7500\nmn,renville,-95.2500,44.8750\nmn,chippewa,-95.2500,45.0000\nmn,chippewa,-95.2500,45.1250\nmn,kandiyohi,-95.2500,45.2500\nmn,kandiyohi,-95.2500,45.3750\nmn,pope,-95.2500,45.5000\nmn,pope,-95.2500,45.6250\nmn,pope,-95.2500,45.7500\nmn,douglas,-95.2500,45.8750\nmn,douglas,-95.2500,46.0000\nmn,otter tail,-95.2500,46.1250\nmn,otter tail,-95.2500,46.2500\nmn,otter tail,-95.2500,46.3750\nmn,otter tail,-95.2500,46.5000\nmn,otter tail,-95.2500,46.6250\nmn,becker,-95.2500,46.7500\nmn,becker,-95.2500,46.8750\nmn,becker,-95.2500,47.0000\nmn,becker,-95.2500,47.1250\nmn,clearwater,-95.2500,47.2500\nmn,clearwater,-95.2500,47.3750\nmn,clearwater,-95.2500,47.5000\nmn,clearwater,-95.2500,47.6250\nmn,clearwater,-95.2500,47.7500\nmn,clearwater,-95.2500,47.8750\nmn,beltrami,-95.2500,48.0000\nmn,beltrami,-95.2500,48.1250\nmn,beltrami,-95.2500,48.2500\nmn,beltrami,-95.2500,48.3750\nmn,beltrami,-95.2500,48.5000\nmn,lake of the woods,-95.2500,48.6250\nmn,roseau,-95.2500,48.7500\nmn,roseau,-95.2500,48.8750\nok,cherokee,-95.1250,36.0000\nok,mayes,-95.1250,36.1250\nok,mayes,-95.1250,36.2500\nok,mayes,-95.1250,36.3750\nok,mayes,-95.1250,36.5000\nok,craig,-95.1250,36.6250\nok,craig,-95.1250,36.7500\nok,craig,-95.1250,36.8750\nks,labette,-95.1250,37.0000\nks,labette,-95.1250,37.1250\nks,labette,-95.1250,37.2500\nks,labette,-95.1250,37.3750\nks,neosho,-95.1250,37.5000\nks,neosho,-95.1250,37.6250\nks,allen,-95.1250,37.7500\nks,allen,-95.1250,37.8750\nks,allen,-95.1250,38.0000\nks,anderson,-95.1250,38.1250\nks,anderson,-95.1250,38.2500\nks,anderson,-95.1250,38.3750\nks,franklin,-95.1250,38.5000\nks,franklin,-95.1250,38.6250\nks,douglas,-95.1250,38.7500\nks,douglas,-95.1250,38.8750\nks,leavenworth,-95.1250,39.0000\nks,leavenworth,-95.1250,39.1250\nks,leavenworth,-95.1250,39.2500\nks,leavenworth,-95.1250,39.3750\nks,atchison,-95.1250,39.5000\nks,atchison,-95.1250,39.6250\nks,doniphan,-95.1250,39.7500\nmo,holt,-95.1250,39.8750\nmo,holt,-95.1250,40.0000\nmo,holt,-95.1250,40.1250\nmo,holt,-95.1250,40.2500\nmo,nodaway,-95.1250,40.3750\nmo,nodaway,-95.1250,40.5000\nia,page,-95.1250,40.6250\nia,page,-95.1250,40.7500\nia,page,-95.1250,40.8750\nia,montgomery,-95.1250,41.0000\nia,montgomery,-95.1250,41.1250\nia,cass,-95.1250,41.2500\nia,cass,-95.1250,41.3750\nia,cass,-95.1250,41.5000\nia,shelby,-95.1250,41.6250\nia,shelby,-95.1250,41.7500\nia,crawford,-95.1250,41.8750\nia,crawford,-95.1250,42.0000\nia,crawford,-95.1250,42.1250\nia,sac,-95.1250,42.2500\nia,sac,-95.1250,42.3750\nia,sac,-95.1250,42.5000\nia,buena vista,-95.1250,42.6250\nia,buena vista,-95.1250,42.7500\nia,buena vista,-95.1250,42.8750\nia,clay,-95.1250,43.0000\nia,clay,-95.1250,43.1250\nia,clay,-95.1250,43.2500\nia,dickinson,-95.1250,43.3750\nia,dickinson,-95.1250,43.5000\nmn,jackson,-95.1250,43.6250\nmn,jackson,-95.1250,43.7500\nmn,cottonwood,-95.1250,43.8750\nmn,cottonwood,-95.1250,44.0000\nmn,cottonwood,-95.1250,44.1250\nmn,redwood,-95.1250,44.2500\nmn,redwood,-95.1250,44.3750\nmn,redwood,-95.1250,44.5000\nmn,renville,-95.1250,44.6250\nmn,renville,-95.1250,44.7500\nmn,renville,-95.1250,44.8750\nmn,kandiyohi,-95.1250,45.0000\nmn,kandiyohi,-95.1250,45.1250\nmn,kandiyohi,-95.1250,45.2500\nmn,kandiyohi,-95.1250,45.3750\nmn,stearns,-95.1250,45.5000\nmn,stearns,-95.1250,45.6250\nmn,stearns,-95.1250,45.7500\nmn,todd,-95.1250,45.8750\nmn,todd,-95.1250,46.0000\nmn,todd,-95.1250,46.1250\nmn,todd,-95.1250,46.2500\nmn,wadena,-95.1250,46.3750\nmn,wadena,-95.1250,46.5000\nmn,wadena,-95.1250,46.6250\nmn,wadena,-95.1250,46.7500\nmn,hubbard,-95.1250,46.8750\nmn,hubbard,-95.1250,47.0000\nmn,hubbard,-95.1250,47.1250\nmn,hubbard,-95.1250,47.2500\nmn,hubbard,-95.1250,47.3750\nmn,beltrami,-95.1250,47.5000\nmn,beltrami,-95.1250,47.6250\nmn,beltrami,-95.1250,47.7500\nmn,beltrami,-95.1250,47.8750\nmn,beltrami,-95.1250,48.0000\nmn,beltrami,-95.1250,48.1250\nmn,beltrami,-95.1250,48.2500\nmn,lake of the woods,-95.1250,48.3750\nmn,lake of the woods,-95.1250,48.5000\nmn,lake of the woods,-95.1250,48.6250\nmn,roseau,-95.1250,48.7500\nmn,roseau,-95.1250,48.8750\nmn,lake of the woods,-95.1250,49.0000\nmn,lake of the woods,-95.1250,49.1250\nmn,lake of the woods,-95.1250,49.2500\nok,cherokee,-95.0000,36.0000\nok,cherokee,-95.0000,36.1250\nok,delaware,-95.0000,36.2500\nok,delaware,-95.0000,36.3750\nok,delaware,-95.0000,36.5000\nok,craig,-95.0000,36.6250\nok,craig,-95.0000,36.7500\nok,craig,-95.0000,36.8750\nks,cherokee,-95.0000,37.0000\nks,cherokee,-95.0000,37.1250\nks,cherokee,-95.0000,37.2500\nks,crawford,-95.0000,37.3750\nks,crawford,-95.0000,37.5000\nks,crawford,-95.0000,37.6250\nks,bourbon,-95.0000,37.7500\nks,bourbon,-95.0000,37.8750\nks,bourbon,-95.0000,38.0000\nks,linn,-95.0000,38.1250\nks,linn,-95.0000,38.2500\nks,linn,-95.0000,38.3750\nks,miami,-95.0000,38.5000\nks,miami,-95.0000,38.6250\nks,johnson,-95.0000,38.7500\nks,johnson,-95.0000,38.8750\nks,leavenworth,-95.0000,39.0000\nks,leavenworth,-95.0000,39.1250\nks,leavenworth,-95.0000,39.2500\nks,leavenworth,-95.0000,39.3750\nmo,platte,-95.0000,39.5000\nmo,buchanan,-95.0000,39.6250\nks,doniphan,-95.0000,39.7500\nks,doniphan,-95.0000,39.8750\nmo,andrew,-95.0000,40.0000\nmo,andrew,-95.0000,40.1250\nmo,nodaway,-95.0000,40.2500\nmo,nodaway,-95.0000,40.3750\nmo,nodaway,-95.0000,40.5000\nia,page,-95.0000,40.6250\nia,page,-95.0000,40.7500\nia,page,-95.0000,40.8750\nia,montgomery,-95.0000,41.0000\nia,montgomery,-95.0000,41.1250\nia,cass,-95.0000,41.2500\nia,cass,-95.0000,41.3750\nia,cass,-95.0000,41.5000\nia,audubon,-95.0000,41.6250\nia,audubon,-95.0000,41.7500\nia,carroll,-95.0000,41.8750\nia,carroll,-95.0000,42.0000\nia,carroll,-95.0000,42.1250\nia,sac,-95.0000,42.2500\nia,sac,-95.0000,42.3750\nia,sac,-95.0000,42.5000\nia,buena vista,-95.0000,42.6250\nia,buena vista,-95.0000,42.7500\nia,buena vista,-95.0000,42.8750\nia,clay,-95.0000,43.0000\nia,clay,-95.0000,43.1250\nia,clay,-95.0000,43.2500\nia,dickinson,-95.0000,43.3750\nia,dickinson,-95.0000,43.5000\nmn,jackson,-95.0000,43.6250\nmn,jackson,-95.0000,43.7500\nmn,cottonwood,-95.0000,43.8750\nmn,cottonwood,-95.0000,44.0000\nmn,brown,-95.0000,44.1250\nmn,brown,-95.0000,44.2500\nmn,redwood,-95.0000,44.3750\nmn,redwood,-95.0000,44.5000\nmn,renville,-95.0000,44.6250\nmn,renville,-95.0000,44.7500\nmn,renville,-95.0000,44.8750\nmn,kandiyohi,-95.0000,45.0000\nmn,kandiyohi,-95.0000,45.1250\nmn,kandiyohi,-95.0000,45.2500\nmn,kandiyohi,-95.0000,45.3750\nmn,stearns,-95.0000,45.5000\nmn,stearns,-95.0000,45.6250\nmn,stearns,-95.0000,45.7500\nmn,todd,-95.0000,45.8750\nmn,todd,-95.0000,46.0000\nmn,todd,-95.0000,46.1250\nmn,todd,-95.0000,46.2500\nmn,wadena,-95.0000,46.3750\nmn,wadena,-95.0000,46.5000\nmn,wadena,-95.0000,46.6250\nmn,wadena,-95.0000,46.7500\nmn,hubbard,-95.0000,46.8750\nmn,hubbard,-95.0000,47.0000\nmn,hubbard,-95.0000,47.1250\nmn,hubbard,-95.0000,47.2500\nmn,hubbard,-95.0000,47.3750\nmn,beltrami,-95.0000,47.5000\nmn,beltrami,-95.0000,47.6250\nmn,beltrami,-95.0000,47.7500\nmn,beltrami,-95.0000,47.8750\nmn,beltrami,-95.0000,48.0000\nmn,beltrami,-95.0000,48.1250\nmn,beltrami,-95.0000,48.2500\nmn,lake of the woods,-95.0000,48.3750\nmn,lake of the woods,-95.0000,48.5000\nmn,lake of the woods,-95.0000,48.6250\nmn,lake of the woods,-95.0000,48.7500\nmn,lake of the woods,-95.0000,48.8750\nmn,lake of the woods,-95.0000,49.0000\nmn,lake of the woods,-95.0000,49.1250\nmn,lake of the woods,-95.0000,49.2500\nok,cherokee,-94.8750,36.0000\nok,cherokee,-94.8750,36.1250\nok,delaware,-94.8750,36.2500\nok,delaware,-94.8750,36.3750\nok,delaware,-94.8750,36.5000\nok,delaware,-94.8750,36.6250\nok,ottawa,-94.8750,36.7500\nok,ottawa,-94.8750,36.8750\nks,cherokee,-94.8750,37.0000\nks,cherokee,-94.8750,37.1250\nks,cherokee,-94.8750,37.2500\nks,crawford,-94.8750,37.3750\nks,crawford,-94.8750,37.5000\nks,crawford,-94.8750,37.6250\nks,bourbon,-94.8750,37.7500\nks,bourbon,-94.8750,37.8750\nks,bourbon,-94.8750,38.0000\nks,linn,-94.8750,38.1250\nks,linn,-94.8750,38.2500\nks,linn,-94.8750,38.3750\nks,miami,-94.8750,38.5000\nks,miami,-94.8750,38.6250\nks,johnson,-94.8750,38.7500\nks,johnson,-94.8750,38.8750\nks,johnson,-94.8750,39.0000\nks,wyandotte,-94.8750,39.1250\nks,leavenworth,-94.8750,39.2500\nmo,platte,-94.8750,39.3750\nmo,platte,-94.8750,39.5000\nmo,buchanan,-94.8750,39.6250\nks,doniphan,-94.8750,39.7500\nmo,andrew,-94.8750,39.8750\nmo,andrew,-94.8750,40.0000\nmo,andrew,-94.8750,40.1250\nmo,nodaway,-94.8750,40.2500\nmo,nodaway,-94.8750,40.3750\nmo,nodaway,-94.8750,40.5000\nia,taylor,-94.8750,40.6250\nia,taylor,-94.8750,40.7500\nia,taylor,-94.8750,40.8750\nia,adams,-94.8750,41.0000\nia,adams,-94.8750,41.1250\nia,cass,-94.8750,41.2500\nia,cass,-94.8750,41.3750\nia,cass,-94.8750,41.5000\nia,audubon,-94.8750,41.6250\nia,audubon,-94.8750,41.7500\nia,carroll,-94.8750,41.8750\nia,carroll,-94.8750,42.0000\nia,carroll,-94.8750,42.1250\nia,sac,-94.8750,42.2500\nia,sac,-94.8750,42.3750\nia,calhoun,-94.8750,42.5000\nia,pocahontas,-94.8750,42.6250\nia,pocahontas,-94.8750,42.7500\nia,pocahontas,-94.8750,42.8750\nia,palo alto,-94.8750,43.0000\nia,palo alto,-94.8750,43.1250\nia,palo alto,-94.8750,43.2500\nia,emmet,-94.8750,43.3750\nia,emmet,-94.8750,43.5000\nmn,jackson,-94.8750,43.6250\nmn,jackson,-94.8750,43.7500\nmn,cottonwood,-94.8750,43.8750\nmn,cottonwood,-94.8750,44.0000\nmn,brown,-94.8750,44.1250\nmn,brown,-94.8750,44.2500\nmn,redwood,-94.8750,44.3750\nmn,redwood,-94.8750,44.5000\nmn,renville,-94.8750,44.6250\nmn,renville,-94.8750,44.7500\nmn,renville,-94.8750,44.8750\nmn,kandiyohi,-94.8750,45.0000\nmn,kandiyohi,-94.8750,45.1250\nmn,kandiyohi,-94.8750,45.2500\nmn,kandiyohi,-94.8750,45.3750\nmn,stearns,-94.8750,45.5000\nmn,stearns,-94.8750,45.6250\nmn,stearns,-94.8750,45.7500\nmn,todd,-94.8750,45.8750\nmn,todd,-94.8750,46.0000\nmn,todd,-94.8750,46.1250\nmn,todd,-94.8750,46.2500\nmn,wadena,-94.8750,46.3750\nmn,wadena,-94.8750,46.5000\nmn,wadena,-94.8750,46.6250\nmn,wadena,-94.8750,46.7500\nmn,hubbard,-94.8750,46.8750\nmn,hubbard,-94.8750,47.0000\nmn,hubbard,-94.8750,47.1250\nmn,hubbard,-94.8750,47.2500\nmn,hubbard,-94.8750,47.3750\nmn,beltrami,-94.8750,47.5000\nmn,beltrami,-94.8750,47.6250\nmn,beltrami,-94.8750,47.7500\nmn,beltrami,-94.8750,47.8750\nmn,beltrami,-94.8750,48.0000\nmn,beltrami,-94.8750,48.1250\nmn,beltrami,-94.8750,48.2500\nmn,lake of the woods,-94.8750,48.3750\nmn,lake of the woods,-94.8750,48.5000\nmn,lake of the woods,-94.8750,48.6250\nmn,lake of the woods,-94.8750,48.7500\nmn,lake of the woods,-94.8750,48.8750\nmn,lake of the woods,-94.8750,49.0000\nmn,lake of the woods,-94.8750,49.1250\nmn,lake of the woods,-94.8750,49.2500\nok,adair,-94.7500,36.0000\nok,adair,-94.7500,36.1250\nok,delaware,-94.7500,36.2500\nok,delaware,-94.7500,36.3750\nok,delaware,-94.7500,36.5000\nok,delaware,-94.7500,36.6250\nok,ottawa,-94.7500,36.7500\nok,ottawa,-94.7500,36.8750\nks,cherokee,-94.7500,37.0000\nks,cherokee,-94.7500,37.1250\nks,cherokee,-94.7500,37.2500\nks,crawford,-94.7500,37.3750\nks,crawford,-94.7500,37.5000\nks,crawford,-94.7500,37.6250\nks,bourbon,-94.7500,37.7500\nks,bourbon,-94.7500,37.8750\nks,bourbon,-94.7500,38.0000\nks,linn,-94.7500,38.1250\nks,linn,-94.7500,38.2500\nks,linn,-94.7500,38.3750\nks,miami,-94.7500,38.5000\nks,miami,-94.7500,38.6250\nks,johnson,-94.7500,38.7500\nks,johnson,-94.7500,38.8750\nks,johnson,-94.7500,39.0000\nks,wyandotte,-94.7500,39.1250\nmo,platte,-94.7500,39.2500\nmo,platte,-94.7500,39.3750\nmo,platte,-94.7500,39.5000\nmo,buchanan,-94.7500,39.6250\nmo,buchanan,-94.7500,39.7500\nmo,andrew,-94.7500,39.8750\nmo,andrew,-94.7500,40.0000\nmo,andrew,-94.7500,40.1250\nmo,nodaway,-94.7500,40.2500\nmo,nodaway,-94.7500,40.3750\nmo,nodaway,-94.7500,40.5000\nia,taylor,-94.7500,40.6250\nia,taylor,-94.7500,40.7500\nia,taylor,-94.7500,40.8750\nia,adams,-94.7500,41.0000\nia,adams,-94.7500,41.1250\nia,cass,-94.7500,41.2500\nia,cass,-94.7500,41.3750\nia,cass,-94.7500,41.5000\nia,audubon,-94.7500,41.6250\nia,audubon,-94.7500,41.7500\nia,carroll,-94.7500,41.8750\nia,carroll,-94.7500,42.0000\nia,carroll,-94.7500,42.1250\nia,calhoun,-94.7500,42.2500\nia,calhoun,-94.7500,42.3750\nia,calhoun,-94.7500,42.5000\nia,pocahontas,-94.7500,42.6250\nia,pocahontas,-94.7500,42.7500\nia,pocahontas,-94.7500,42.8750\nia,palo alto,-94.7500,43.0000\nia,palo alto,-94.7500,43.1250\nia,palo alto,-94.7500,43.2500\nia,emmet,-94.7500,43.3750\nia,emmet,-94.7500,43.5000\nmn,martin,-94.7500,43.6250\nmn,martin,-94.7500,43.7500\nmn,watonwan,-94.7500,43.8750\nmn,watonwan,-94.7500,44.0000\nmn,brown,-94.7500,44.1250\nmn,brown,-94.7500,44.2500\nmn,brown,-94.7500,44.3750\nmn,renville,-94.7500,44.5000\nmn,renville,-94.7500,44.6250\nmn,renville,-94.7500,44.7500\nmn,renville,-94.7500,44.8750\nmn,meeker,-94.7500,45.0000\nmn,meeker,-94.7500,45.1250\nmn,meeker,-94.7500,45.2500\nmn,stearns,-94.7500,45.3750\nmn,stearns,-94.7500,45.5000\nmn,stearns,-94.7500,45.6250\nmn,stearns,-94.7500,45.7500\nmn,todd,-94.7500,45.8750\nmn,todd,-94.7500,46.0000\nmn,todd,-94.7500,46.1250\nmn,todd,-94.7500,46.2500\nmn,wadena,-94.7500,46.3750\nmn,cass,-94.7500,46.5000\nmn,cass,-94.7500,46.6250\nmn,cass,-94.7500,46.7500\nmn,hubbard,-94.7500,46.8750\nmn,hubbard,-94.7500,47.0000\nmn,hubbard,-94.7500,47.1250\nmn,hubbard,-94.7500,47.2500\nmn,hubbard,-94.7500,47.3750\nmn,beltrami,-94.7500,47.5000\nmn,beltrami,-94.7500,47.6250\nmn,beltrami,-94.7500,47.7500\nmn,beltrami,-94.7500,47.8750\nmn,beltrami,-94.7500,48.0000\nmn,beltrami,-94.7500,48.1250\nmn,beltrami,-94.7500,48.2500\nmn,lake of the woods,-94.7500,48.3750\nmn,lake of the woods,-94.7500,48.5000\nmn,lake of the woods,-94.7500,48.6250\nmn,lake of the woods,-94.7500,48.7500\nmn,lake of the woods,-94.7500,48.8750\nmn,lake of the woods,-94.7500,49.0000\nok,adair,-94.6250,36.0000\nok,adair,-94.6250,36.1250\nok,delaware,-94.6250,36.2500\nok,delaware,-94.6250,36.3750\nok,delaware,-94.6250,36.5000\nok,delaware,-94.6250,36.6250\nok,ottawa,-94.6250,36.7500\nok,ottawa,-94.6250,36.8750\nks,cherokee,-94.6250,37.0000\nks,cherokee,-94.6250,37.1250\nks,cherokee,-94.6250,37.2500\nks,crawford,-94.6250,37.3750\nks,crawford,-94.6250,37.5000\nks,crawford,-94.6250,37.6250\nks,bourbon,-94.6250,37.7500\nks,bourbon,-94.6250,37.8750\nks,bourbon,-94.6250,38.0000\nks,linn,-94.6250,38.1250\nks,linn,-94.6250,38.2500\nks,linn,-94.6250,38.3750\nks,miami,-94.6250,38.5000\nks,miami,-94.6250,38.6250\nks,johnson,-94.6250,38.7500\nks,johnson,-94.6250,38.8750\nks,johnson,-94.6250,39.0000\nks,wyandotte,-94.6250,39.1250\nmo,platte,-94.6250,39.2500\nmo,platte,-94.6250,39.3750\nmo,platte,-94.6250,39.5000\nmo,buchanan,-94.6250,39.6250\nmo,buchanan,-94.6250,39.7500\nmo,andrew,-94.6250,39.8750\nmo,andrew,-94.6250,40.0000\nmo,andrew,-94.6250,40.1250\nmo,nodaway,-94.6250,40.2500\nmo,nodaway,-94.6250,40.3750\nmo,worth,-94.6250,40.5000\nia,taylor,-94.6250,40.6250\nia,taylor,-94.6250,40.7500\nia,taylor,-94.6250,40.8750\nia,adams,-94.6250,41.0000\nia,adams,-94.6250,41.1250\nia,adair,-94.6250,41.2500\nia,adair,-94.6250,41.3750\nia,adair,-94.6250,41.5000\nia,guthrie,-94.6250,41.6250\nia,guthrie,-94.6250,41.7500\nia,greene,-94.6250,41.8750\nia,greene,-94.6250,42.0000\nia,greene,-94.6250,42.1250\nia,calhoun,-94.6250,42.2500\nia,calhoun,-94.6250,42.3750\nia,calhoun,-94.6250,42.5000\nia,pocahontas,-94.6250,42.6250\nia,pocahontas,-94.6250,42.7500\nia,pocahontas,-94.6250,42.8750\nia,palo alto,-94.6250,43.0000\nia,palo alto,-94.6250,43.1250\nia,palo alto,-94.6250,43.2500\nia,emmet,-94.6250,43.3750\nia,emmet,-94.6250,43.5000\nmn,martin,-94.6250,43.6250\nmn,martin,-94.6250,43.7500\nmn,watonwan,-94.6250,43.8750\nmn,watonwan,-94.6250,44.0000\nmn,brown,-94.6250,44.1250\nmn,brown,-94.6250,44.2500\nmn,brown,-94.6250,44.3750\nmn,renville,-94.6250,44.5000\nmn,sibley,-94.6250,44.6250\nmn,renville,-94.6250,44.7500\nmn,renville,-94.6250,44.8750\nmn,meeker,-94.6250,45.0000\nmn,meeker,-94.6250,45.1250\nmn,meeker,-94.6250,45.2500\nmn,stearns,-94.6250,45.3750\nmn,stearns,-94.6250,45.5000\nmn,stearns,-94.6250,45.6250\nmn,stearns,-94.6250,45.7500\nmn,morrison,-94.6250,45.8750\nmn,morrison,-94.6250,46.0000\nmn,morrison,-94.6250,46.1250\nmn,morrison,-94.6250,46.2500\nmn,cass,-94.6250,46.3750\nmn,cass,-94.6250,46.5000\nmn,cass,-94.6250,46.6250\nmn,cass,-94.6250,46.7500\nmn,cass,-94.6250,46.8750\nmn,cass,-94.6250,47.0000\nmn,cass,-94.6250,47.1250\nmn,cass,-94.6250,47.2500\nmn,cass,-94.6250,47.3750\nmn,beltrami,-94.6250,47.5000\nmn,beltrami,-94.6250,47.6250\nmn,beltrami,-94.6250,47.7500\nmn,beltrami,-94.6250,47.8750\nmn,beltrami,-94.6250,48.0000\nmn,beltrami,-94.6250,48.1250\nmn,beltrami,-94.6250,48.2500\nmn,lake of the woods,-94.6250,48.3750\nmn,lake of the woods,-94.6250,48.5000\nmn,lake of the woods,-94.6250,48.6250\nar,washington,-94.5000,36.0000\nar,benton,-94.5000,36.1250\nar,benton,-94.5000,36.2500\nar,benton,-94.5000,36.3750\nmo,mcdonald,-94.5000,36.5000\nmo,mcdonald,-94.5000,36.6250\nmo,mcdonald,-94.5000,36.7500\nmo,newton,-94.5000,36.8750\nmo,newton,-94.5000,37.0000\nmo,jasper,-94.5000,37.1250\nmo,jasper,-94.5000,37.2500\nmo,barton,-94.5000,37.3750\nmo,barton,-94.5000,37.5000\nmo,barton,-94.5000,37.6250\nmo,vernon,-94.5000,37.7500\nmo,vernon,-94.5000,37.8750\nmo,vernon,-94.5000,38.0000\nmo,bates,-94.5000,38.1250\nmo,bates,-94.5000,38.2500\nmo,bates,-94.5000,38.3750\nmo,cass,-94.5000,38.5000\nmo,cass,-94.5000,38.6250\nmo,cass,-94.5000,38.7500\nmo,jackson,-94.5000,38.8750\nmo,jackson,-94.5000,39.0000\nmo,jackson,-94.5000,39.1250\nmo,clay,-94.5000,39.2500\nmo,clay,-94.5000,39.3750\nmo,clinton,-94.5000,39.5000\nmo,clinton,-94.5000,39.6250\nmo,dekalb,-94.5000,39.7500\nmo,dekalb,-94.5000,39.8750\nmo,dekalb,-94.5000,40.0000\nmo,gentry,-94.5000,40.1250\nmo,gentry,-94.5000,40.2500\nmo,gentry,-94.5000,40.3750\nmo,worth,-94.5000,40.5000\nia,taylor,-94.5000,40.6250\nia,taylor,-94.5000,40.7500\nia,taylor,-94.5000,40.8750\nia,adams,-94.5000,41.0000\nia,adams,-94.5000,41.1250\nia,adair,-94.5000,41.2500\nia,adair,-94.5000,41.3750\nia,adair,-94.5000,41.5000\nia,guthrie,-94.5000,41.6250\nia,guthrie,-94.5000,41.7500\nia,greene,-94.5000,41.8750\nia,greene,-94.5000,42.0000\nia,greene,-94.5000,42.1250\nia,calhoun,-94.5000,42.2500\nia,calhoun,-94.5000,42.3750\nia,calhoun,-94.5000,42.5000\nia,pocahontas,-94.5000,42.6250\nia,pocahontas,-94.5000,42.7500\nia,pocahontas,-94.5000,42.8750\nia,palo alto,-94.5000,43.0000\nia,palo alto,-94.5000,43.1250\nia,palo alto,-94.5000,43.2500\nia,emmet,-94.5000,43.3750\nia,emmet,-94.5000,43.5000\nmn,martin,-94.5000,43.6250\nmn,martin,-94.5000,43.7500\nmn,watonwan,-94.5000,43.8750\nmn,watonwan,-94.5000,44.0000\nmn,brown,-94.5000,44.1250\nmn,brown,-94.5000,44.2500\nmn,nicollet,-94.5000,44.3750\nmn,sibley,-94.5000,44.5000\nmn,sibley,-94.5000,44.6250\nmn,renville,-94.5000,44.7500\nmn,renville,-94.5000,44.8750\nmn,meeker,-94.5000,45.0000\nmn,meeker,-94.5000,45.1250\nmn,meeker,-94.5000,45.2500\nmn,stearns,-94.5000,45.3750\nmn,stearns,-94.5000,45.5000\nmn,stearns,-94.5000,45.6250\nmn,stearns,-94.5000,45.7500\nmn,morrison,-94.5000,45.8750\nmn,morrison,-94.5000,46.0000\nmn,morrison,-94.5000,46.1250\nmn,morrison,-94.5000,46.2500\nmn,cass,-94.5000,46.3750\nmn,cass,-94.5000,46.5000\nmn,cass,-94.5000,46.6250\nmn,cass,-94.5000,46.7500\nmn,cass,-94.5000,46.8750\nmn,cass,-94.5000,47.0000\nmn,cass,-94.5000,47.1250\nmn,cass,-94.5000,47.2500\nmn,cass,-94.5000,47.3750\nmn,beltrami,-94.5000,47.5000\nmn,beltrami,-94.5000,47.6250\nmn,beltrami,-94.5000,47.7500\nmn,beltrami,-94.5000,47.8750\nmn,beltrami,-94.5000,48.0000\nmn,beltrami,-94.5000,48.1250\nmn,beltrami,-94.5000,48.2500\nmn,lake of the woods,-94.5000,48.3750\nmn,lake of the woods,-94.5000,48.5000\nmn,lake of the woods,-94.5000,48.6250\nar,washington,-94.3750,36.0000\nar,washington,-94.3750,36.1250\nar,benton,-94.3750,36.2500\nar,benton,-94.3750,36.3750\nmo,mcdonald,-94.3750,36.5000\nmo,mcdonald,-94.3750,36.6250\nmo,mcdonald,-94.3750,36.7500\nmo,newton,-94.3750,36.8750\nmo,newton,-94.3750,37.0000\nmo,jasper,-94.3750,37.1250\nmo,jasper,-94.3750,37.2500\nmo,barton,-94.3750,37.3750\nmo,barton,-94.3750,37.5000\nmo,barton,-94.3750,37.6250\nmo,vernon,-94.3750,37.7500\nmo,vernon,-94.3750,37.8750\nmo,vernon,-94.3750,38.0000\nmo,bates,-94.3750,38.1250\nmo,bates,-94.3750,38.2500\nmo,bates,-94.3750,38.3750\nmo,cass,-94.3750,38.5000\nmo,cass,-94.3750,38.6250\nmo,cass,-94.3750,38.7500\nmo,jackson,-94.3750,38.8750\nmo,jackson,-94.3750,39.0000\nmo,jackson,-94.3750,39.1250\nmo,clay,-94.3750,39.2500\nmo,clay,-94.3750,39.3750\nmo,clinton,-94.3750,39.5000\nmo,clinton,-94.3750,39.6250\nmo,dekalb,-94.3750,39.7500\nmo,dekalb,-94.3750,39.8750\nmo,dekalb,-94.3750,40.0000\nmo,gentry,-94.3750,40.1250\nmo,gentry,-94.3750,40.2500\nmo,gentry,-94.3750,40.3750\nmo,worth,-94.3750,40.5000\nia,ringgold,-94.3750,40.6250\nia,ringgold,-94.3750,40.7500\nia,ringgold,-94.3750,40.8750\nia,union,-94.3750,41.0000\nia,union,-94.3750,41.1250\nia,adair,-94.3750,41.2500\nia,adair,-94.3750,41.3750\nia,adair,-94.3750,41.5000\nia,guthrie,-94.3750,41.6250\nia,guthrie,-94.3750,41.7500\nia,greene,-94.3750,41.8750\nia,greene,-94.3750,42.0000\nia,greene,-94.3750,42.1250\nia,webster,-94.3750,42.2500\nia,webster,-94.3750,42.3750\nia,webster,-94.3750,42.5000\nia,webster,-94.3750,42.6250\nia,humboldt,-94.3750,42.7500\nia,humboldt,-94.3750,42.8750\nia,kossuth,-94.3750,43.0000\nia,kossuth,-94.3750,43.1250\nia,kossuth,-94.3750,43.2500\nia,kossuth,-94.3750,43.3750\nia,kossuth,-94.3750,43.5000\nmn,martin,-94.3750,43.6250\nmn,martin,-94.3750,43.7500\nmn,watonwan,-94.3750,43.8750\nmn,watonwan,-94.3750,44.0000\nmn,brown,-94.3750,44.1250\nmn,brown,-94.3750,44.2500\nmn,nicollet,-94.3750,44.3750\nmn,sibley,-94.3750,44.5000\nmn,sibley,-94.3750,44.6250\nmn,mcleod,-94.3750,44.7500\nmn,mcleod,-94.3750,44.8750\nmn,meeker,-94.3750,45.0000\nmn,meeker,-94.3750,45.1250\nmn,meeker,-94.3750,45.2500\nmn,stearns,-94.3750,45.3750\nmn,stearns,-94.3750,45.5000\nmn,stearns,-94.3750,45.6250\nmn,stearns,-94.3750,45.7500\nmn,morrison,-94.3750,45.8750\nmn,morrison,-94.3750,46.0000\nmn,morrison,-94.3750,46.1250\nmn,morrison,-94.3750,46.2500\nmn,cass,-94.3750,46.3750\nmn,cass,-94.3750,46.5000\nmn,cass,-94.3750,46.6250\nmn,cass,-94.3750,46.7500\nmn,cass,-94.3750,46.8750\nmn,cass,-94.3750,47.0000\nmn,cass,-94.3750,47.1250\nmn,cass,-94.3750,47.2500\nmn,cass,-94.3750,47.3750\nmn,itasca,-94.3750,47.5000\nmn,itasca,-94.3750,47.6250\nmn,itasca,-94.3750,47.7500\nmn,koochiching,-94.3750,47.8750\nmn,koochiching,-94.3750,48.0000\nmn,koochiching,-94.3750,48.1250\nmn,koochiching,-94.3750,48.2500\nmn,koochiching,-94.3750,48.3750\nmn,koochiching,-94.3750,48.5000\nmn,koochiching,-94.3750,48.6250\nar,washington,-94.2500,36.0000\nar,washington,-94.2500,36.1250\nar,benton,-94.2500,36.2500\nar,benton,-94.2500,36.3750\nmo,mcdonald,-94.2500,36.5000\nmo,mcdonald,-94.2500,36.6250\nmo,mcdonald,-94.2500,36.7500\nmo,newton,-94.2500,36.8750\nmo,newton,-94.2500,37.0000\nmo,jasper,-94.2500,37.1250\nmo,jasper,-94.2500,37.2500\nmo,barton,-94.2500,37.3750\nmo,barton,-94.2500,37.5000\nmo,barton,-94.2500,37.6250\nmo,vernon,-94.2500,37.7500\nmo,vernon,-94.2500,37.8750\nmo,vernon,-94.2500,38.0000\nmo,bates,-94.2500,38.1250\nmo,bates,-94.2500,38.2500\nmo,bates,-94.2500,38.3750\nmo,cass,-94.2500,38.5000\nmo,cass,-94.2500,38.6250\nmo,cass,-94.2500,38.7500\nmo,jackson,-94.2500,38.8750\nmo,jackson,-94.2500,39.0000\nmo,jackson,-94.2500,39.1250\nmo,clay,-94.2500,39.2500\nmo,clay,-94.2500,39.3750\nmo,clinton,-94.2500,39.5000\nmo,clinton,-94.2500,39.6250\nmo,dekalb,-94.2500,39.7500\nmo,dekalb,-94.2500,39.8750\nmo,dekalb,-94.2500,40.0000\nmo,gentry,-94.2500,40.1250\nmo,gentry,-94.2500,40.2500\nmo,gentry,-94.2500,40.3750\nmo,worth,-94.2500,40.5000\nia,ringgold,-94.2500,40.6250\nia,ringgold,-94.2500,40.7500\nia,ringgold,-94.2500,40.8750\nia,union,-94.2500,41.0000\nia,union,-94.2500,41.1250\nia,adair,-94.2500,41.2500\nia,adair,-94.2500,41.3750\nia,adair,-94.2500,41.5000\nia,dallas,-94.2500,41.6250\nia,dallas,-94.2500,41.7500\nia,greene,-94.2500,41.8750\nia,greene,-94.2500,42.0000\nia,greene,-94.2500,42.1250\nia,webster,-94.2500,42.2500\nia,webster,-94.2500,42.3750\nia,webster,-94.2500,42.5000\nia,webster,-94.2500,42.6250\nia,humboldt,-94.2500,42.7500\nia,humboldt,-94.2500,42.8750\nia,kossuth,-94.2500,43.0000\nia,kossuth,-94.2500,43.1250\nia,kossuth,-94.2500,43.2500\nia,kossuth,-94.2500,43.3750\nia,kossuth,-94.2500,43.5000\nmn,martin,-94.2500,43.6250\nmn,martin,-94.2500,43.7500\nmn,blue earth,-94.2500,43.8750\nmn,blue earth,-94.2500,44.0000\nmn,blue earth,-94.2500,44.1250\nmn,nicollet,-94.2500,44.2500\nmn,nicollet,-94.2500,44.3750\nmn,sibley,-94.2500,44.5000\nmn,sibley,-94.2500,44.6250\nmn,mcleod,-94.2500,44.7500\nmn,mcleod,-94.2500,44.8750\nmn,wright,-94.2500,45.0000\nmn,wright,-94.2500,45.1250\nmn,wright,-94.2500,45.2500\nmn,stearns,-94.2500,45.3750\nmn,stearns,-94.2500,45.5000\nmn,stearns,-94.2500,45.6250\nmn,benton,-94.2500,45.7500\nmn,morrison,-94.2500,45.8750\nmn,morrison,-94.2500,46.0000\nmn,morrison,-94.2500,46.1250\nmn,crow wing,-94.2500,46.2500\nmn,crow wing,-94.2500,46.3750\nmn,crow wing,-94.2500,46.5000\nmn,crow wing,-94.2500,46.6250\nmn,crow wing,-94.2500,46.7500\nmn,cass,-94.2500,46.8750\nmn,cass,-94.2500,47.0000\nmn,cass,-94.2500,47.1250\nmn,cass,-94.2500,47.2500\nmn,cass,-94.2500,47.3750\nmn,itasca,-94.2500,47.5000\nmn,itasca,-94.2500,47.6250\nmn,itasca,-94.2500,47.7500\nmn,koochiching,-94.2500,47.8750\nmn,koochiching,-94.2500,48.0000\nmn,koochiching,-94.2500,48.1250\nmn,koochiching,-94.2500,48.2500\nmn,koochiching,-94.2500,48.3750\nmn,koochiching,-94.2500,48.5000\nmn,koochiching,-94.2500,48.6250\nar,washington,-94.1250,36.0000\nar,washington,-94.1250,36.1250\nar,benton,-94.1250,36.2500\nar,benton,-94.1250,36.3750\nmo,mcdonald,-94.1250,36.5000\nmo,mcdonald,-94.1250,36.6250\nmo,newton,-94.1250,36.7500\nmo,newton,-94.1250,36.8750\nmo,newton,-94.1250,37.0000\nmo,jasper,-94.1250,37.1250\nmo,jasper,-94.1250,37.2500\nmo,barton,-94.1250,37.3750\nmo,barton,-94.1250,37.5000\nmo,barton,-94.1250,37.6250\nmo,vernon,-94.1250,37.7500\nmo,vernon,-94.1250,37.8750\nmo,vernon,-94.1250,38.0000\nmo,bates,-94.1250,38.1250\nmo,bates,-94.1250,38.2500\nmo,bates,-94.1250,38.3750\nmo,cass,-94.1250,38.5000\nmo,cass,-94.1250,38.6250\nmo,cass,-94.1250,38.7500\nmo,jackson,-94.1250,38.8750\nmo,jackson,-94.1250,39.0000\nmo,jackson,-94.1250,39.1250\nmo,ray,-94.1250,39.2500\nmo,ray,-94.1250,39.3750\nmo,ray,-94.1250,39.5000\nmo,caldwell,-94.1250,39.6250\nmo,caldwell,-94.1250,39.7500\nmo,daviess,-94.1250,39.8750\nmo,daviess,-94.1250,40.0000\nmo,daviess,-94.1250,40.1250\nmo,harrison,-94.1250,40.2500\nmo,harrison,-94.1250,40.3750\nmo,harrison,-94.1250,40.5000\nia,ringgold,-94.1250,40.6250\nia,ringgold,-94.1250,40.7500\nia,ringgold,-94.1250,40.8750\nia,union,-94.1250,41.0000\nia,union,-94.1250,41.1250\nia,madison,-94.1250,41.2500\nia,madison,-94.1250,41.3750\nia,madison,-94.1250,41.5000\nia,dallas,-94.1250,41.6250\nia,dallas,-94.1250,41.7500\nia,boone,-94.1250,41.8750\nia,boone,-94.1250,42.0000\nia,boone,-94.1250,42.1250\nia,webster,-94.1250,42.2500\nia,webster,-94.1250,42.3750\nia,webster,-94.1250,42.5000\nia,webster,-94.1250,42.6250\nia,humboldt,-94.1250,42.7500\nia,humboldt,-94.1250,42.8750\nia,kossuth,-94.1250,43.0000\nia,kossuth,-94.1250,43.1250\nia,kossuth,-94.1250,43.2500\nia,kossuth,-94.1250,43.3750\nia,kossuth,-94.1250,43.5000\nmn,faribault,-94.1250,43.6250\nmn,faribault,-94.1250,43.7500\nmn,blue earth,-94.1250,43.8750\nmn,blue earth,-94.1250,44.0000\nmn,blue earth,-94.1250,44.1250\nmn,nicollet,-94.1250,44.2500\nmn,nicollet,-94.1250,44.3750\nmn,sibley,-94.1250,44.5000\nmn,sibley,-94.1250,44.6250\nmn,mcleod,-94.1250,44.7500\nmn,mcleod,-94.1250,44.8750\nmn,wright,-94.1250,45.0000\nmn,wright,-94.1250,45.1250\nmn,wright,-94.1250,45.2500\nmn,stearns,-94.1250,45.3750\nmn,sherburne,-94.1250,45.5000\nmn,benton,-94.1250,45.6250\nmn,benton,-94.1250,45.7500\nmn,morrison,-94.1250,45.8750\nmn,morrison,-94.1250,46.0000\nmn,morrison,-94.1250,46.1250\nmn,crow wing,-94.1250,46.2500\nmn,crow wing,-94.1250,46.3750\nmn,crow wing,-94.1250,46.5000\nmn,crow wing,-94.1250,46.6250\nmn,crow wing,-94.1250,46.7500\nmn,cass,-94.1250,46.8750\nmn,cass,-94.1250,47.0000\nmn,cass,-94.1250,47.1250\nmn,cass,-94.1250,47.2500\nmn,cass,-94.1250,47.3750\nmn,itasca,-94.1250,47.5000\nmn,itasca,-94.1250,47.6250\nmn,itasca,-94.1250,47.7500\nmn,koochiching,-94.1250,47.8750\nmn,koochiching,-94.1250,48.0000\nmn,koochiching,-94.1250,48.1250\nmn,koochiching,-94.1250,48.2500\nmn,koochiching,-94.1250,48.3750\nmn,koochiching,-94.1250,48.5000\nmn,koochiching,-94.1250,48.6250\nar,washington,-94.0000,36.0000\nar,washington,-94.0000,36.1250\nar,benton,-94.0000,36.2500\nar,benton,-94.0000,36.3750\nmo,barry,-94.0000,36.5000\nmo,barry,-94.0000,36.6250\nmo,barry,-94.0000,36.7500\nmo,barry,-94.0000,36.8750\nmo,lawrence,-94.0000,37.0000\nmo,lawrence,-94.0000,37.1250\nmo,lawrence,-94.0000,37.2500\nmo,dade,-94.0000,37.3750\nmo,dade,-94.0000,37.5000\nmo,cedar,-94.0000,37.6250\nmo,cedar,-94.0000,37.7500\nmo,cedar,-94.0000,37.8750\nmo,st. clair,-94.0000,38.0000\nmo,st. clair,-94.0000,38.1250\nmo,henry,-94.0000,38.2500\nmo,henry,-94.0000,38.3750\nmo,henry,-94.0000,38.5000\nmo,johnson,-94.0000,38.6250\nmo,johnson,-94.0000,38.7500\nmo,johnson,-94.0000,38.8750\nmo,lafayette,-94.0000,39.0000\nmo,lafayette,-94.0000,39.1250\nmo,ray,-94.0000,39.2500\nmo,ray,-94.0000,39.3750\nmo,ray,-94.0000,39.5000\nmo,caldwell,-94.0000,39.6250\nmo,caldwell,-94.0000,39.7500\nmo,daviess,-94.0000,39.8750\nmo,daviess,-94.0000,40.0000\nmo,daviess,-94.0000,40.1250\nmo,harrison,-94.0000,40.2500\nmo,harrison,-94.0000,40.3750\nmo,harrison,-94.0000,40.5000\nia,decatur,-94.0000,40.6250\nia,decatur,-94.0000,40.7500\nia,decatur,-94.0000,40.8750\nia,clarke,-94.0000,41.0000\nia,clarke,-94.0000,41.1250\nia,madison,-94.0000,41.2500\nia,madison,-94.0000,41.3750\nia,madison,-94.0000,41.5000\nia,dallas,-94.0000,41.6250\nia,dallas,-94.0000,41.7500\nia,boone,-94.0000,41.8750\nia,boone,-94.0000,42.0000\nia,boone,-94.0000,42.1250\nia,webster,-94.0000,42.2500\nia,webster,-94.0000,42.3750\nia,webster,-94.0000,42.5000\nia,webster,-94.0000,42.6250\nia,humboldt,-94.0000,42.7500\nia,humboldt,-94.0000,42.8750\nia,kossuth,-94.0000,43.0000\nia,kossuth,-94.0000,43.1250\nia,kossuth,-94.0000,43.2500\nia,kossuth,-94.0000,43.3750\nmn,faribault,-94.0000,43.5000\nmn,faribault,-94.0000,43.6250\nmn,faribault,-94.0000,43.7500\nmn,blue earth,-94.0000,43.8750\nmn,blue earth,-94.0000,44.0000\nmn,blue earth,-94.0000,44.1250\nmn,le sueur,-94.0000,44.2500\nmn,nicollet,-94.0000,44.3750\nmn,sibley,-94.0000,44.5000\nmn,sibley,-94.0000,44.6250\nmn,carver,-94.0000,44.7500\nmn,carver,-94.0000,44.8750\nmn,wright,-94.0000,45.0000\nmn,wright,-94.0000,45.1250\nmn,wright,-94.0000,45.2500\nmn,wright,-94.0000,45.3750\nmn,sherburne,-94.0000,45.5000\nmn,benton,-94.0000,45.6250\nmn,benton,-94.0000,45.7500\nmn,morrison,-94.0000,45.8750\nmn,morrison,-94.0000,46.0000\nmn,morrison,-94.0000,46.1250\nmn,crow wing,-94.0000,46.2500\nmn,crow wing,-94.0000,46.3750\nmn,crow wing,-94.0000,46.5000\nmn,crow wing,-94.0000,46.6250\nmn,crow wing,-94.0000,46.7500\nmn,cass,-94.0000,46.8750\nmn,cass,-94.0000,47.0000\nmn,cass,-94.0000,47.1250\nmn,cass,-94.0000,47.2500\nmn,itasca,-94.0000,47.3750\nmn,itasca,-94.0000,47.5000\nmn,itasca,-94.0000,47.6250\nmn,itasca,-94.0000,47.7500\nmn,koochiching,-94.0000,47.8750\nmn,koochiching,-94.0000,48.0000\nmn,koochiching,-94.0000,48.1250\nmn,koochiching,-94.0000,48.2500\nmn,koochiching,-94.0000,48.3750\nmn,koochiching,-94.0000,48.5000\nmn,koochiching,-94.0000,48.6250\nar,madison,-93.8750,36.0000\nar,madison,-93.8750,36.1250\nar,benton,-93.8750,36.2500\nar,carroll,-93.8750,36.3750\nmo,barry,-93.8750,36.5000\nmo,barry,-93.8750,36.6250\nmo,barry,-93.8750,36.7500\nmo,barry,-93.8750,36.8750\nmo,lawrence,-93.8750,37.0000\nmo,lawrence,-93.8750,37.1250\nmo,lawrence,-93.8750,37.2500\nmo,dade,-93.8750,37.3750\nmo,dade,-93.8750,37.5000\nmo,cedar,-93.8750,37.6250\nmo,cedar,-93.8750,37.7500\nmo,cedar,-93.8750,37.8750\nmo,st. clair,-93.8750,38.0000\nmo,st. clair,-93.8750,38.1250\nmo,henry,-93.8750,38.2500\nmo,henry,-93.8750,38.3750\nmo,henry,-93.8750,38.5000\nmo,johnson,-93.8750,38.6250\nmo,johnson,-93.8750,38.7500\nmo,johnson,-93.8750,38.8750\nmo,lafayette,-93.8750,39.0000\nmo,lafayette,-93.8750,39.1250\nmo,ray,-93.8750,39.2500\nmo,ray,-93.8750,39.3750\nmo,ray,-93.8750,39.5000\nmo,caldwell,-93.8750,39.6250\nmo,caldwell,-93.8750,39.7500\nmo,daviess,-93.8750,39.8750\nmo,daviess,-93.8750,40.0000\nmo,daviess,-93.8750,40.1250\nmo,harrison,-93.8750,40.2500\nmo,harrison,-93.8750,40.3750\nmo,harrison,-93.8750,40.5000\nia,decatur,-93.8750,40.6250\nia,decatur,-93.8750,40.7500\nia,decatur,-93.8750,40.8750\nia,clarke,-93.8750,41.0000\nia,clarke,-93.8750,41.1250\nia,madison,-93.8750,41.2500\nia,madison,-93.8750,41.3750\nia,madison,-93.8750,41.5000\nia,dallas,-93.8750,41.6250\nia,dallas,-93.8750,41.7500\nia,boone,-93.8750,41.8750\nia,boone,-93.8750,42.0000\nia,boone,-93.8750,42.1250\nia,hamilton,-93.8750,42.2500\nia,hamilton,-93.8750,42.3750\nia,hamilton,-93.8750,42.5000\nia,wright,-93.8750,42.6250\nia,wright,-93.8750,42.7500\nia,wright,-93.8750,42.8750\nia,hancock,-93.8750,43.0000\nia,hancock,-93.8750,43.1250\nia,hancock,-93.8750,43.2500\nia,winnebago,-93.8750,43.3750\nmn,faribault,-93.8750,43.5000\nmn,faribault,-93.8750,43.6250\nmn,faribault,-93.8750,43.7500\nmn,blue earth,-93.8750,43.8750\nmn,blue earth,-93.8750,44.0000\nmn,blue earth,-93.8750,44.1250\nmn,le sueur,-93.8750,44.2500\nmn,le sueur,-93.8750,44.3750\nmn,le sueur,-93.8750,44.5000\nmn,sibley,-93.8750,44.6250\nmn,carver,-93.8750,44.7500\nmn,carver,-93.8750,44.8750\nmn,wright,-93.8750,45.0000\nmn,wright,-93.8750,45.1250\nmn,wright,-93.8750,45.2500\nmn,sherburne,-93.8750,45.3750\nmn,sherburne,-93.8750,45.5000\nmn,benton,-93.8750,45.6250\nmn,benton,-93.8750,45.7500\nmn,morrison,-93.8750,45.8750\nmn,morrison,-93.8750,46.0000\nmn,morrison,-93.8750,46.1250\nmn,crow wing,-93.8750,46.2500\nmn,crow wing,-93.8750,46.3750\nmn,crow wing,-93.8750,46.5000\nmn,crow wing,-93.8750,46.6250\nmn,crow wing,-93.8750,46.7500\nmn,cass,-93.8750,46.8750\nmn,cass,-93.8750,47.0000\nmn,cass,-93.8750,47.1250\nmn,cass,-93.8750,47.2500\nmn,itasca,-93.8750,47.3750\nmn,itasca,-93.8750,47.5000\nmn,itasca,-93.8750,47.6250\nmn,itasca,-93.8750,47.7500\nmn,koochiching,-93.8750,47.8750\nmn,koochiching,-93.8750,48.0000\nmn,koochiching,-93.8750,48.1250\nmn,koochiching,-93.8750,48.2500\nmn,koochiching,-93.8750,48.3750\nmn,koochiching,-93.8750,48.5000\nmn,koochiching,-93.8750,48.6250\nar,madison,-93.7500,36.0000\nar,madison,-93.7500,36.1250\nar,madison,-93.7500,36.2500\nar,carroll,-93.7500,36.3750\nmo,barry,-93.7500,36.5000\nmo,barry,-93.7500,36.6250\nmo,barry,-93.7500,36.7500\nmo,barry,-93.7500,36.8750\nmo,lawrence,-93.7500,37.0000\nmo,lawrence,-93.7500,37.1250\nmo,lawrence,-93.7500,37.2500\nmo,dade,-93.7500,37.3750\nmo,dade,-93.7500,37.5000\nmo,cedar,-93.7500,37.6250\nmo,cedar,-93.7500,37.7500\nmo,st. clair,-93.7500,37.8750\nmo,st. clair,-93.7500,38.0000\nmo,st. clair,-93.7500,38.1250\nmo,henry,-93.7500,38.2500\nmo,henry,-93.7500,38.3750\nmo,henry,-93.7500,38.5000\nmo,johnson,-93.7500,38.6250\nmo,johnson,-93.7500,38.7500\nmo,johnson,-93.7500,38.8750\nmo,lafayette,-93.7500,39.0000\nmo,lafayette,-93.7500,39.1250\nmo,carroll,-93.7500,39.2500\nmo,carroll,-93.7500,39.3750\nmo,carroll,-93.7500,39.5000\nmo,livingston,-93.7500,39.6250\nmo,livingston,-93.7500,39.7500\nmo,livingston,-93.7500,39.8750\nmo,grundy,-93.7500,40.0000\nmo,grundy,-93.7500,40.1250\nmo,grundy,-93.7500,40.2500\nmo,mercer,-93.7500,40.3750\nmo,mercer,-93.7500,40.5000\nia,decatur,-93.7500,40.6250\nia,decatur,-93.7500,40.7500\nia,decatur,-93.7500,40.8750\nia,clarke,-93.7500,41.0000\nia,clarke,-93.7500,41.1250\nia,warren,-93.7500,41.2500\nia,warren,-93.7500,41.3750\nia,warren,-93.7500,41.5000\nia,polk,-93.7500,41.6250\nia,polk,-93.7500,41.7500\nia,boone,-93.7500,41.8750\nia,boone,-93.7500,42.0000\nia,boone,-93.7500,42.1250\nia,hamilton,-93.7500,42.2500\nia,hamilton,-93.7500,42.3750\nia,hamilton,-93.7500,42.5000\nia,wright,-93.7500,42.6250\nia,wright,-93.7500,42.7500\nia,wright,-93.7500,42.8750\nia,hancock,-93.7500,43.0000\nia,hancock,-93.7500,43.1250\nia,hancock,-93.7500,43.2500\nia,winnebago,-93.7500,43.3750\nmn,faribault,-93.7500,43.5000\nmn,faribault,-93.7500,43.6250\nmn,faribault,-93.7500,43.7500\nmn,waseca,-93.7500,43.8750\nmn,waseca,-93.7500,44.0000\nmn,waseca,-93.7500,44.1250\nmn,le sueur,-93.7500,44.2500\nmn,le sueur,-93.7500,44.3750\nmn,le sueur,-93.7500,44.5000\nmn,scott,-93.7500,44.6250\nmn,carver,-93.7500,44.7500\nmn,carver,-93.7500,44.8750\nmn,hennepin,-93.7500,45.0000\nmn,wright,-93.7500,45.1250\nmn,wright,-93.7500,45.2500\nmn,sherburne,-93.7500,45.3750\nmn,sherburne,-93.7500,45.5000\nmn,mille lacs,-93.7500,45.6250\nmn,mille lacs,-93.7500,45.7500\nmn,mille lacs,-93.7500,45.8750\nmn,mille lacs,-93.7500,46.0000\nmn,mille lacs,-93.7500,46.1250\nmn,aitkin,-93.7500,46.2500\nmn,aitkin,-93.7500,46.3750\nmn,aitkin,-93.7500,46.5000\nmn,aitkin,-93.7500,46.6250\nmn,aitkin,-93.7500,46.7500\nmn,aitkin,-93.7500,46.8750\nmn,aitkin,-93.7500,47.0000\nmn,itasca,-93.7500,47.1250\nmn,itasca,-93.7500,47.2500\nmn,itasca,-93.7500,47.3750\nmn,itasca,-93.7500,47.5000\nmn,itasca,-93.7500,47.6250\nmn,itasca,-93.7500,47.7500\nmn,itasca,-93.7500,47.8750\nmn,koochiching,-93.7500,48.0000\nmn,koochiching,-93.7500,48.1250\nmn,koochiching,-93.7500,48.2500\nmn,koochiching,-93.7500,48.3750\nmn,koochiching,-93.7500,48.5000\nar,madison,-93.6250,36.0000\nar,madison,-93.6250,36.1250\nar,madison,-93.6250,36.2500\nar,carroll,-93.6250,36.3750\nmo,barry,-93.6250,36.5000\nmo,barry,-93.6250,36.6250\nmo,barry,-93.6250,36.7500\nmo,barry,-93.6250,36.8750\nmo,lawrence,-93.6250,37.0000\nmo,lawrence,-93.6250,37.1250\nmo,lawrence,-93.6250,37.2500\nmo,dade,-93.6250,37.3750\nmo,dade,-93.6250,37.5000\nmo,cedar,-93.6250,37.6250\nmo,polk,-93.6250,37.7500\nmo,st. clair,-93.6250,37.8750\nmo,st. clair,-93.6250,38.0000\nmo,st. clair,-93.6250,38.1250\nmo,henry,-93.6250,38.2500\nmo,henry,-93.6250,38.3750\nmo,henry,-93.6250,38.5000\nmo,johnson,-93.6250,38.6250\nmo,johnson,-93.6250,38.7500\nmo,johnson,-93.6250,38.8750\nmo,lafayette,-93.6250,39.0000\nmo,lafayette,-93.6250,39.1250\nmo,carroll,-93.6250,39.2500\nmo,carroll,-93.6250,39.3750\nmo,carroll,-93.6250,39.5000\nmo,livingston,-93.6250,39.6250\nmo,livingston,-93.6250,39.7500\nmo,livingston,-93.6250,39.8750\nmo,grundy,-93.6250,40.0000\nmo,grundy,-93.6250,40.1250\nmo,grundy,-93.6250,40.2500\nmo,mercer,-93.6250,40.3750\nmo,mercer,-93.6250,40.5000\nia,decatur,-93.6250,40.6250\nia,decatur,-93.6250,40.7500\nia,decatur,-93.6250,40.8750\nia,clarke,-93.6250,41.0000\nia,clarke,-93.6250,41.1250\nia,warren,-93.6250,41.2500\nia,warren,-93.6250,41.3750\nia,warren,-93.6250,41.5000\nia,polk,-93.6250,41.6250\nia,polk,-93.6250,41.7500\nia,story,-93.6250,41.8750\nia,story,-93.6250,42.0000\nia,story,-93.6250,42.1250\nia,hamilton,-93.6250,42.2500\nia,hamilton,-93.6250,42.3750\nia,hamilton,-93.6250,42.5000\nia,wright,-93.6250,42.6250\nia,wright,-93.6250,42.7500\nia,wright,-93.6250,42.8750\nia,hancock,-93.6250,43.0000\nia,hancock,-93.6250,43.1250\nia,hancock,-93.6250,43.2500\nia,winnebago,-93.6250,43.3750\nmn,freeborn,-93.6250,43.5000\nmn,freeborn,-93.6250,43.6250\nmn,freeborn,-93.6250,43.7500\nmn,waseca,-93.6250,43.8750\nmn,waseca,-93.6250,44.0000\nmn,waseca,-93.6250,44.1250\nmn,le sueur,-93.6250,44.2500\nmn,le sueur,-93.6250,44.3750\nmn,le sueur,-93.6250,44.5000\nmn,scott,-93.6250,44.6250\nmn,carver,-93.6250,44.7500\nmn,carver,-93.6250,44.8750\nmn,hennepin,-93.6250,45.0000\nmn,hennepin,-93.6250,45.1250\nmn,wright,-93.6250,45.2500\nmn,sherburne,-93.6250,45.3750\nmn,sherburne,-93.6250,45.5000\nmn,mille lacs,-93.6250,45.6250\nmn,mille lacs,-93.6250,45.7500\nmn,mille lacs,-93.6250,45.8750\nmn,mille lacs,-93.6250,46.0000\nmn,mille lacs,-93.6250,46.1250\nmn,aitkin,-93.6250,46.2500\nmn,aitkin,-93.6250,46.3750\nmn,aitkin,-93.6250,46.5000\nmn,aitkin,-93.6250,46.6250\nmn,aitkin,-93.6250,46.7500\nmn,aitkin,-93.6250,46.8750\nmn,aitkin,-93.6250,47.0000\nmn,itasca,-93.6250,47.1250\nmn,itasca,-93.6250,47.2500\nmn,itasca,-93.6250,47.3750\nmn,itasca,-93.6250,47.5000\nmn,itasca,-93.6250,47.6250\nmn,itasca,-93.6250,47.7500\nmn,itasca,-93.6250,47.8750\nmn,koochiching,-93.6250,48.0000\nmn,koochiching,-93.6250,48.1250\nmn,koochiching,-93.6250,48.2500\nmn,koochiching,-93.6250,48.3750\nmn,koochiching,-93.6250,48.5000\nar,madison,-93.5000,36.0000\nar,madison,-93.5000,36.1250\nar,carroll,-93.5000,36.2500\nar,carroll,-93.5000,36.3750\nmo,stone,-93.5000,36.5000\nmo,stone,-93.5000,36.6250\nmo,stone,-93.5000,36.7500\nmo,stone,-93.5000,36.8750\nmo,christian,-93.5000,37.0000\nmo,greene,-93.5000,37.1250\nmo,greene,-93.5000,37.2500\nmo,greene,-93.5000,37.3750\nmo,polk,-93.5000,37.5000\nmo,polk,-93.5000,37.6250\nmo,polk,-93.5000,37.7500\nmo,hickory,-93.5000,37.8750\nmo,hickory,-93.5000,38.0000\nmo,benton,-93.5000,38.1250\nmo,benton,-93.5000,38.2500\nmo,benton,-93.5000,38.3750\nmo,benton,-93.5000,38.5000\nmo,pettis,-93.5000,38.6250\nmo,pettis,-93.5000,38.7500\nmo,johnson,-93.5000,38.8750\nmo,lafayette,-93.5000,39.0000\nmo,lafayette,-93.5000,39.1250\nmo,carroll,-93.5000,39.2500\nmo,carroll,-93.5000,39.3750\nmo,carroll,-93.5000,39.5000\nmo,livingston,-93.5000,39.6250\nmo,livingston,-93.5000,39.7500\nmo,livingston,-93.5000,39.8750\nmo,grundy,-93.5000,40.0000\nmo,grundy,-93.5000,40.1250\nmo,grundy,-93.5000,40.2500\nmo,mercer,-93.5000,40.3750\nmo,mercer,-93.5000,40.5000\nia,wayne,-93.5000,40.6250\nia,wayne,-93.5000,40.7500\nia,wayne,-93.5000,40.8750\nia,lucas,-93.5000,41.0000\nia,lucas,-93.5000,41.1250\nia,warren,-93.5000,41.2500\nia,warren,-93.5000,41.3750\nia,warren,-93.5000,41.5000\nia,polk,-93.5000,41.6250\nia,polk,-93.5000,41.7500\nia,story,-93.5000,41.8750\nia,story,-93.5000,42.0000\nia,story,-93.5000,42.1250\nia,hamilton,-93.5000,42.2500\nia,hamilton,-93.5000,42.3750\nia,hamilton,-93.5000,42.5000\nia,wright,-93.5000,42.6250\nia,wright,-93.5000,42.7500\nia,wright,-93.5000,42.8750\nia,hancock,-93.5000,43.0000\nia,hancock,-93.5000,43.1250\nia,hancock,-93.5000,43.2500\nia,winnebago,-93.5000,43.3750\nmn,freeborn,-93.5000,43.5000\nmn,freeborn,-93.5000,43.6250\nmn,freeborn,-93.5000,43.7500\nmn,waseca,-93.5000,43.8750\nmn,waseca,-93.5000,44.0000\nmn,waseca,-93.5000,44.1250\nmn,rice,-93.5000,44.2500\nmn,rice,-93.5000,44.3750\nmn,rice,-93.5000,44.5000\nmn,scott,-93.5000,44.6250\nmn,scott,-93.5000,44.7500\nmn,hennepin,-93.5000,44.8750\nmn,hennepin,-93.5000,45.0000\nmn,hennepin,-93.5000,45.1250\nmn,anoka,-93.5000,45.2500\nmn,anoka,-93.5000,45.3750\nmn,isanti,-93.5000,45.5000\nmn,isanti,-93.5000,45.6250\nmn,kanabec,-93.5000,45.7500\nmn,kanabec,-93.5000,45.8750\nmn,mille lacs,-93.5000,46.0000\nmn,mille lacs,-93.5000,46.1250\nmn,aitkin,-93.5000,46.2500\nmn,aitkin,-93.5000,46.3750\nmn,aitkin,-93.5000,46.5000\nmn,aitkin,-93.5000,46.6250\nmn,aitkin,-93.5000,46.7500\nmn,aitkin,-93.5000,46.8750\nmn,aitkin,-93.5000,47.0000\nmn,itasca,-93.5000,47.1250\nmn,itasca,-93.5000,47.2500\nmn,itasca,-93.5000,47.3750\nmn,itasca,-93.5000,47.5000\nmn,itasca,-93.5000,47.6250\nmn,itasca,-93.5000,47.7500\nmn,itasca,-93.5000,47.8750\nmn,koochiching,-93.5000,48.0000\nmn,koochiching,-93.5000,48.1250\nmn,koochiching,-93.5000,48.2500\nmn,koochiching,-93.5000,48.3750\nmn,koochiching,-93.5000,48.5000\nar,newton,-93.3750,36.0000\nar,carroll,-93.3750,36.1250\nar,carroll,-93.3750,36.2500\nar,carroll,-93.3750,36.3750\nmo,stone,-93.3750,36.5000\nmo,stone,-93.3750,36.6250\nmo,stone,-93.3750,36.7500\nmo,stone,-93.3750,36.8750\nmo,christian,-93.3750,37.0000\nmo,greene,-93.3750,37.1250\nmo,greene,-93.3750,37.2500\nmo,greene,-93.3750,37.3750\nmo,polk,-93.3750,37.5000\nmo,polk,-93.3750,37.6250\nmo,polk,-93.3750,37.7500\nmo,hickory,-93.3750,37.8750\nmo,hickory,-93.3750,38.0000\nmo,benton,-93.3750,38.1250\nmo,benton,-93.3750,38.2500\nmo,benton,-93.3750,38.3750\nmo,benton,-93.3750,38.5000\nmo,pettis,-93.3750,38.6250\nmo,pettis,-93.3750,38.7500\nmo,pettis,-93.3750,38.8750\nmo,saline,-93.3750,39.0000\nmo,saline,-93.3750,39.1250\nmo,carroll,-93.3750,39.2500\nmo,carroll,-93.3750,39.3750\nmo,carroll,-93.3750,39.5000\nmo,livingston,-93.3750,39.6250\nmo,livingston,-93.3750,39.7500\nmo,livingston,-93.3750,39.8750\nmo,grundy,-93.3750,40.0000\nmo,grundy,-93.3750,40.1250\nmo,grundy,-93.3750,40.2500\nmo,mercer,-93.3750,40.3750\nmo,mercer,-93.3750,40.5000\nia,wayne,-93.3750,40.6250\nia,wayne,-93.3750,40.7500\nia,wayne,-93.3750,40.8750\nia,lucas,-93.3750,41.0000\nia,lucas,-93.3750,41.1250\nia,warren,-93.3750,41.2500\nia,warren,-93.3750,41.3750\nia,polk,-93.3750,41.5000\nia,polk,-93.3750,41.6250\nia,polk,-93.3750,41.7500\nia,story,-93.3750,41.8750\nia,story,-93.3750,42.0000\nia,story,-93.3750,42.1250\nia,hardin,-93.3750,42.2500\nia,hardin,-93.3750,42.3750\nia,hardin,-93.3750,42.5000\nia,franklin,-93.3750,42.6250\nia,franklin,-93.3750,42.7500\nia,franklin,-93.3750,42.8750\nia,cerro gordo,-93.3750,43.0000\nia,cerro gordo,-93.3750,43.1250\nia,cerro gordo,-93.3750,43.2500\nia,worth,-93.3750,43.3750\nmn,freeborn,-93.3750,43.5000\nmn,freeborn,-93.3750,43.6250\nmn,freeborn,-93.3750,43.7500\nmn,steele,-93.3750,43.8750\nmn,steele,-93.3750,44.0000\nmn,steele,-93.3750,44.1250\nmn,rice,-93.3750,44.2500\nmn,rice,-93.3750,44.3750\nmn,rice,-93.3750,44.5000\nmn,scott,-93.3750,44.6250\nmn,scott,-93.3750,44.7500\nmn,hennepin,-93.3750,44.8750\nmn,hennepin,-93.3750,45.0000\nmn,hennepin,-93.3750,45.1250\nmn,anoka,-93.3750,45.2500\nmn,anoka,-93.3750,45.3750\nmn,isanti,-93.3750,45.5000\nmn,isanti,-93.3750,45.6250\nmn,kanabec,-93.3750,45.7500\nmn,kanabec,-93.3750,45.8750\nmn,kanabec,-93.3750,46.0000\nmn,kanabec,-93.3750,46.1250\nmn,aitkin,-93.3750,46.2500\nmn,aitkin,-93.3750,46.3750\nmn,aitkin,-93.3750,46.5000\nmn,aitkin,-93.3750,46.6250\nmn,aitkin,-93.3750,46.7500\nmn,aitkin,-93.3750,46.8750\nmn,aitkin,-93.3750,47.0000\nmn,itasca,-93.3750,47.1250\nmn,itasca,-93.3750,47.2500\nmn,itasca,-93.3750,47.3750\nmn,itasca,-93.3750,47.5000\nmn,itasca,-93.3750,47.6250\nmn,itasca,-93.3750,47.7500\nmn,itasca,-93.3750,47.8750\nmn,koochiching,-93.3750,48.0000\nmn,koochiching,-93.3750,48.1250\nmn,koochiching,-93.3750,48.2500\nmn,koochiching,-93.3750,48.3750\nmn,koochiching,-93.3750,48.5000\nar,newton,-93.2500,36.0000\nar,boone,-93.2500,36.1250\nar,boone,-93.2500,36.2500\nar,boone,-93.2500,36.3750\nmo,taney,-93.2500,36.5000\nmo,taney,-93.2500,36.6250\nmo,taney,-93.2500,36.7500\nmo,christian,-93.2500,36.8750\nmo,christian,-93.2500,37.0000\nmo,greene,-93.2500,37.1250\nmo,greene,-93.2500,37.2500\nmo,greene,-93.2500,37.3750\nmo,polk,-93.2500,37.5000\nmo,polk,-93.2500,37.6250\nmo,polk,-93.2500,37.7500\nmo,hickory,-93.2500,37.8750\nmo,hickory,-93.2500,38.0000\nmo,benton,-93.2500,38.1250\nmo,benton,-93.2500,38.2500\nmo,benton,-93.2500,38.3750\nmo,benton,-93.2500,38.5000\nmo,pettis,-93.2500,38.6250\nmo,pettis,-93.2500,38.7500\nmo,pettis,-93.2500,38.8750\nmo,saline,-93.2500,39.0000\nmo,saline,-93.2500,39.1250\nmo,saline,-93.2500,39.2500\nmo,carroll,-93.2500,39.3750\nmo,chariton,-93.2500,39.5000\nmo,chariton,-93.2500,39.6250\nmo,linn,-93.2500,39.7500\nmo,linn,-93.2500,39.8750\nmo,linn,-93.2500,40.0000\nmo,sullivan,-93.2500,40.1250\nmo,sullivan,-93.2500,40.2500\nmo,sullivan,-93.2500,40.3750\nmo,putnam,-93.2500,40.5000\nia,wayne,-93.2500,40.6250\nia,wayne,-93.2500,40.7500\nia,wayne,-93.2500,40.8750\nia,lucas,-93.2500,41.0000\nia,lucas,-93.2500,41.1250\nia,marion,-93.2500,41.2500\nia,marion,-93.2500,41.3750\nia,marion,-93.2500,41.5000\nia,jasper,-93.2500,41.6250\nia,jasper,-93.2500,41.7500\nia,story,-93.2500,41.8750\nia,story,-93.2500,42.0000\nia,story,-93.2500,42.1250\nia,hardin,-93.2500,42.2500\nia,hardin,-93.2500,42.3750\nia,hardin,-93.2500,42.5000\nia,franklin,-93.2500,42.6250\nia,franklin,-93.2500,42.7500\nia,franklin,-93.2500,42.8750\nia,cerro gordo,-93.2500,43.0000\nia,cerro gordo,-93.2500,43.1250\nia,cerro gordo,-93.2500,43.2500\nia,worth,-93.2500,43.3750\nmn,freeborn,-93.2500,43.5000\nmn,freeborn,-93.2500,43.6250\nmn,freeborn,-93.2500,43.7500\nmn,steele,-93.2500,43.8750\nmn,steele,-93.2500,44.0000\nmn,steele,-93.2500,44.1250\nmn,rice,-93.2500,44.2500\nmn,rice,-93.2500,44.3750\nmn,dakota,-93.2500,44.5000\nmn,dakota,-93.2500,44.6250\nmn,dakota,-93.2500,44.7500\nmn,hennepin,-93.2500,44.8750\nmn,hennepin,-93.2500,45.0000\nmn,anoka,-93.2500,45.1250\nmn,anoka,-93.2500,45.2500\nmn,anoka,-93.2500,45.3750\nmn,isanti,-93.2500,45.5000\nmn,isanti,-93.2500,45.6250\nmn,kanabec,-93.2500,45.7500\nmn,kanabec,-93.2500,45.8750\nmn,kanabec,-93.2500,46.0000\nmn,kanabec,-93.2500,46.1250\nmn,aitkin,-93.2500,46.2500\nmn,aitkin,-93.2500,46.3750\nmn,aitkin,-93.2500,46.5000\nmn,aitkin,-93.2500,46.6250\nmn,aitkin,-93.2500,46.7500\nmn,aitkin,-93.2500,46.8750\nmn,aitkin,-93.2500,47.0000\nmn,itasca,-93.2500,47.1250\nmn,itasca,-93.2500,47.2500\nmn,itasca,-93.2500,47.3750\nmn,itasca,-93.2500,47.5000\nmn,itasca,-93.2500,47.6250\nmn,itasca,-93.2500,47.7500\nmn,itasca,-93.2500,47.8750\nmn,koochiching,-93.2500,48.0000\nmn,koochiching,-93.2500,48.1250\nmn,koochiching,-93.2500,48.2500\nmn,koochiching,-93.2500,48.3750\nmn,koochiching,-93.2500,48.5000\nmn,koochiching,-93.2500,48.6250\nar,newton,-93.1250,36.0000\nar,boone,-93.1250,36.1250\nar,boone,-93.1250,36.2500\nar,boone,-93.1250,36.3750\nmo,taney,-93.1250,36.5000\nmo,taney,-93.1250,36.6250\nmo,taney,-93.1250,36.7500\nmo,christian,-93.1250,36.8750\nmo,christian,-93.1250,37.0000\nmo,greene,-93.1250,37.1250\nmo,greene,-93.1250,37.2500\nmo,greene,-93.1250,37.3750\nmo,dallas,-93.1250,37.5000\nmo,dallas,-93.1250,37.6250\nmo,dallas,-93.1250,37.7500\nmo,dallas,-93.1250,37.8750\nmo,hickory,-93.1250,38.0000\nmo,benton,-93.1250,38.1250\nmo,benton,-93.1250,38.2500\nmo,benton,-93.1250,38.3750\nmo,benton,-93.1250,38.5000\nmo,pettis,-93.1250,38.6250\nmo,pettis,-93.1250,38.7500\nmo,pettis,-93.1250,38.8750\nmo,saline,-93.1250,39.0000\nmo,saline,-93.1250,39.1250\nmo,saline,-93.1250,39.2500\nmo,saline,-93.1250,39.3750\nmo,chariton,-93.1250,39.5000\nmo,chariton,-93.1250,39.6250\nmo,linn,-93.1250,39.7500\nmo,linn,-93.1250,39.8750\nmo,linn,-93.1250,40.0000\nmo,sullivan,-93.1250,40.1250\nmo,sullivan,-93.1250,40.2500\nmo,sullivan,-93.1250,40.3750\nmo,putnam,-93.1250,40.5000\nia,wayne,-93.1250,40.6250\nia,wayne,-93.1250,40.7500\nia,wayne,-93.1250,40.8750\nia,lucas,-93.1250,41.0000\nia,lucas,-93.1250,41.1250\nia,marion,-93.1250,41.2500\nia,marion,-93.1250,41.3750\nia,marion,-93.1250,41.5000\nia,jasper,-93.1250,41.6250\nia,jasper,-93.1250,41.7500\nia,marshall,-93.1250,41.8750\nia,marshall,-93.1250,42.0000\nia,marshall,-93.1250,42.1250\nia,hardin,-93.1250,42.2500\nia,hardin,-93.1250,42.3750\nia,hardin,-93.1250,42.5000\nia,franklin,-93.1250,42.6250\nia,franklin,-93.1250,42.7500\nia,franklin,-93.1250,42.8750\nia,cerro gordo,-93.1250,43.0000\nia,cerro gordo,-93.1250,43.1250\nia,cerro gordo,-93.1250,43.2500\nia,worth,-93.1250,43.3750\nmn,freeborn,-93.1250,43.5000\nmn,freeborn,-93.1250,43.6250\nmn,freeborn,-93.1250,43.7500\nmn,steele,-93.1250,43.8750\nmn,steele,-93.1250,44.0000\nmn,steele,-93.1250,44.1250\nmn,rice,-93.1250,44.2500\nmn,rice,-93.1250,44.3750\nmn,dakota,-93.1250,44.5000\nmn,dakota,-93.1250,44.6250\nmn,dakota,-93.1250,44.7500\nmn,dakota,-93.1250,44.8750\nmn,ramsey,-93.1250,45.0000\nmn,anoka,-93.1250,45.1250\nmn,anoka,-93.1250,45.2500\nmn,anoka,-93.1250,45.3750\nmn,isanti,-93.1250,45.5000\nmn,chisago,-93.1250,45.6250\nmn,pine,-93.1250,45.7500\nmn,pine,-93.1250,45.8750\nmn,kanabec,-93.1250,46.0000\nmn,kanabec,-93.1250,46.1250\nmn,aitkin,-93.1250,46.2500\nmn,aitkin,-93.1250,46.3750\nmn,aitkin,-93.1250,46.5000\nmn,aitkin,-93.1250,46.6250\nmn,aitkin,-93.1250,46.7500\nmn,aitkin,-93.1250,46.8750\nmn,aitkin,-93.1250,47.0000\nmn,itasca,-93.1250,47.1250\nmn,itasca,-93.1250,47.2500\nmn,itasca,-93.1250,47.3750\nmn,itasca,-93.1250,47.5000\nmn,itasca,-93.1250,47.6250\nmn,itasca,-93.1250,47.7500\nmn,itasca,-93.1250,47.8750\nmn,koochiching,-93.1250,48.0000\nmn,koochiching,-93.1250,48.1250\nmn,koochiching,-93.1250,48.2500\nmn,koochiching,-93.1250,48.3750\nmn,koochiching,-93.1250,48.5000\nmn,koochiching,-93.1250,48.6250\nar,newton,-93.0000,36.0000\nar,boone,-93.0000,36.1250\nar,boone,-93.0000,36.2500\nar,boone,-93.0000,36.3750\nmo,taney,-93.0000,36.5000\nmo,taney,-93.0000,36.6250\nmo,taney,-93.0000,36.7500\nmo,christian,-93.0000,36.8750\nmo,christian,-93.0000,37.0000\nmo,webster,-93.0000,37.1250\nmo,webster,-93.0000,37.2500\nmo,webster,-93.0000,37.3750\nmo,dallas,-93.0000,37.5000\nmo,dallas,-93.0000,37.6250\nmo,dallas,-93.0000,37.7500\nmo,dallas,-93.0000,37.8750\nmo,camden,-93.0000,38.0000\nmo,camden,-93.0000,38.1250\nmo,morgan,-93.0000,38.2500\nmo,morgan,-93.0000,38.3750\nmo,morgan,-93.0000,38.5000\nmo,morgan,-93.0000,38.6250\nmo,cooper,-93.0000,38.7500\nmo,cooper,-93.0000,38.8750\nmo,cooper,-93.0000,39.0000\nmo,saline,-93.0000,39.1250\nmo,saline,-93.0000,39.2500\nmo,chariton,-93.0000,39.3750\nmo,chariton,-93.0000,39.5000\nmo,chariton,-93.0000,39.6250\nmo,linn,-93.0000,39.7500\nmo,linn,-93.0000,39.8750\nmo,linn,-93.0000,40.0000\nmo,sullivan,-93.0000,40.1250\nmo,sullivan,-93.0000,40.2500\nmo,sullivan,-93.0000,40.3750\nmo,putnam,-93.0000,40.5000\nia,appanoose,-93.0000,40.6250\nia,appanoose,-93.0000,40.7500\nia,appanoose,-93.0000,40.8750\nia,monroe,-93.0000,41.0000\nia,monroe,-93.0000,41.1250\nia,marion,-93.0000,41.2500\nia,marion,-93.0000,41.3750\nia,marion,-93.0000,41.5000\nia,jasper,-93.0000,41.6250\nia,jasper,-93.0000,41.7500\nia,marshall,-93.0000,41.8750\nia,marshall,-93.0000,42.0000\nia,marshall,-93.0000,42.1250\nia,grundy,-93.0000,42.2500\nia,grundy,-93.0000,42.3750\nia,grundy,-93.0000,42.5000\nia,butler,-93.0000,42.6250\nia,butler,-93.0000,42.7500\nia,butler,-93.0000,42.8750\nia,floyd,-93.0000,43.0000\nia,floyd,-93.0000,43.1250\nia,mitchell,-93.0000,43.2500\nia,mitchell,-93.0000,43.3750\nmn,mower,-93.0000,43.5000\nmn,mower,-93.0000,43.6250\nmn,mower,-93.0000,43.7500\nmn,dodge,-93.0000,43.8750\nmn,dodge,-93.0000,44.0000\nmn,dodge,-93.0000,44.1250\nmn,goodhue,-93.0000,44.2500\nmn,goodhue,-93.0000,44.3750\nmn,goodhue,-93.0000,44.5000\nmn,dakota,-93.0000,44.6250\nmn,dakota,-93.0000,44.7500\nmn,washington,-93.0000,44.8750\nmn,ramsey,-93.0000,45.0000\nmn,washington,-93.0000,45.1250\nmn,washington,-93.0000,45.2500\nmn,chisago,-93.0000,45.3750\nmn,chisago,-93.0000,45.5000\nmn,chisago,-93.0000,45.6250\nmn,pine,-93.0000,45.7500\nmn,pine,-93.0000,45.8750\nmn,pine,-93.0000,46.0000\nmn,pine,-93.0000,46.1250\nmn,pine,-93.0000,46.2500\nmn,pine,-93.0000,46.3750\nmn,carlton,-93.0000,46.5000\nmn,carlton,-93.0000,46.6250\nmn,carlton,-93.0000,46.7500\nmn,st. louis,-93.0000,46.8750\nmn,st. louis,-93.0000,47.0000\nmn,st. louis,-93.0000,47.1250\nmn,st. louis,-93.0000,47.2500\nmn,st. louis,-93.0000,47.3750\nmn,st. louis,-93.0000,47.5000\nmn,st. louis,-93.0000,47.6250\nmn,st. louis,-93.0000,47.7500\nmn,st. louis,-93.0000,47.8750\nmn,st. louis,-93.0000,48.0000\nmn,st. louis,-93.0000,48.1250\nmn,st. louis,-93.0000,48.2500\nmn,st. louis,-93.0000,48.3750\nmn,st. louis,-93.0000,48.5000\nar,searcy,-92.8750,36.0000\nar,marion,-92.8750,36.1250\nar,marion,-92.8750,36.2500\nar,marion,-92.8750,36.3750\nmo,taney,-92.8750,36.5000\nmo,taney,-92.8750,36.6250\nmo,taney,-92.8750,36.7500\nmo,douglas,-92.8750,36.8750\nmo,douglas,-92.8750,37.0000\nmo,webster,-92.8750,37.1250\nmo,webster,-92.8750,37.2500\nmo,webster,-92.8750,37.3750\nmo,dallas,-92.8750,37.5000\nmo,dallas,-92.8750,37.6250\nmo,dallas,-92.8750,37.7500\nmo,dallas,-92.8750,37.8750\nmo,camden,-92.8750,38.0000\nmo,camden,-92.8750,38.1250\nmo,morgan,-92.8750,38.2500\nmo,morgan,-92.8750,38.3750\nmo,morgan,-92.8750,38.5000\nmo,morgan,-92.8750,38.6250\nmo,cooper,-92.8750,38.7500\nmo,cooper,-92.8750,38.8750\nmo,cooper,-92.8750,39.0000\nmo,howard,-92.8750,39.1250\nmo,chariton,-92.8750,39.2500\nmo,chariton,-92.8750,39.3750\nmo,chariton,-92.8750,39.5000\nmo,chariton,-92.8750,39.6250\nmo,linn,-92.8750,39.7500\nmo,linn,-92.8750,39.8750\nmo,linn,-92.8750,40.0000\nmo,sullivan,-92.8750,40.1250\nmo,sullivan,-92.8750,40.2500\nmo,sullivan,-92.8750,40.3750\nmo,putnam,-92.8750,40.5000\nia,appanoose,-92.8750,40.6250\nia,appanoose,-92.8750,40.7500\nia,appanoose,-92.8750,40.8750\nia,monroe,-92.8750,41.0000\nia,monroe,-92.8750,41.1250\nia,marion,-92.8750,41.2500\nia,marion,-92.8750,41.3750\nia,marion,-92.8750,41.5000\nia,jasper,-92.8750,41.6250\nia,jasper,-92.8750,41.7500\nia,marshall,-92.8750,41.8750\nia,marshall,-92.8750,42.0000\nia,marshall,-92.8750,42.1250\nia,grundy,-92.8750,42.2500\nia,grundy,-92.8750,42.3750\nia,grundy,-92.8750,42.5000\nia,butler,-92.8750,42.6250\nia,butler,-92.8750,42.7500\nia,butler,-92.8750,42.8750\nia,floyd,-92.8750,43.0000\nia,floyd,-92.8750,43.1250\nia,mitchell,-92.8750,43.2500\nia,mitchell,-92.8750,43.3750\nmn,mower,-92.8750,43.5000\nmn,mower,-92.8750,43.6250\nmn,mower,-92.8750,43.7500\nmn,dodge,-92.8750,43.8750\nmn,dodge,-92.8750,44.0000\nmn,dodge,-92.8750,44.1250\nmn,goodhue,-92.8750,44.2500\nmn,goodhue,-92.8750,44.3750\nmn,goodhue,-92.8750,44.5000\nmn,dakota,-92.8750,44.6250\nmn,dakota,-92.8750,44.7500\nmn,washington,-92.8750,44.8750\nmn,washington,-92.8750,45.0000\nmn,washington,-92.8750,45.1250\nmn,washington,-92.8750,45.2500\nmn,chisago,-92.8750,45.3750\nmn,chisago,-92.8750,45.5000\nwi,polk,-92.8750,45.6250\nmn,pine,-92.8750,45.7500\nmn,pine,-92.8750,45.8750\nmn,pine,-92.8750,46.0000\nmn,pine,-92.8750,46.1250\nmn,pine,-92.8750,46.2500\nmn,pine,-92.8750,46.3750\nmn,carlton,-92.8750,46.5000\nmn,carlton,-92.8750,46.6250\nmn,carlton,-92.8750,46.7500\nmn,st. louis,-92.8750,46.8750\nmn,st. louis,-92.8750,47.0000\nmn,st. louis,-92.8750,47.1250\nmn,st. louis,-92.8750,47.2500\nmn,st. louis,-92.8750,47.3750\nmn,st. louis,-92.8750,47.5000\nmn,st. louis,-92.8750,47.6250\nmn,st. louis,-92.8750,47.7500\nmn,st. louis,-92.8750,47.8750\nmn,st. louis,-92.8750,48.0000\nmn,st. louis,-92.8750,48.1250\nmn,st. louis,-92.8750,48.2500\nmn,st. louis,-92.8750,48.3750\nmn,st. louis,-92.8750,48.5000\nar,searcy,-92.7500,36.0000\nar,marion,-92.7500,36.1250\nar,marion,-92.7500,36.2500\nar,marion,-92.7500,36.3750\nmo,ozark,-92.7500,36.5000\nmo,ozark,-92.7500,36.6250\nmo,ozark,-92.7500,36.7500\nmo,douglas,-92.7500,36.8750\nmo,douglas,-92.7500,37.0000\nmo,webster,-92.7500,37.1250\nmo,webster,-92.7500,37.2500\nmo,webster,-92.7500,37.3750\nmo,laclede,-92.7500,37.5000\nmo,laclede,-92.7500,37.6250\nmo,laclede,-92.7500,37.7500\nmo,laclede,-92.7500,37.8750\nmo,camden,-92.7500,38.0000\nmo,camden,-92.7500,38.1250\nmo,morgan,-92.7500,38.2500\nmo,morgan,-92.7500,38.3750\nmo,morgan,-92.7500,38.5000\nmo,moniteau,-92.7500,38.6250\nmo,cooper,-92.7500,38.7500\nmo,cooper,-92.7500,38.8750\nmo,howard,-92.7500,39.0000\nmo,howard,-92.7500,39.1250\nmo,howard,-92.7500,39.2500\nmo,chariton,-92.7500,39.3750\nmo,chariton,-92.7500,39.5000\nmo,chariton,-92.7500,39.6250\nmo,macon,-92.7500,39.7500\nmo,macon,-92.7500,39.8750\nmo,macon,-92.7500,40.0000\nmo,adair,-92.7500,40.1250\nmo,adair,-92.7500,40.2500\nmo,putnam,-92.7500,40.3750\nmo,putnam,-92.7500,40.5000\nia,appanoose,-92.7500,40.6250\nia,appanoose,-92.7500,40.7500\nia,appanoose,-92.7500,40.8750\nia,monroe,-92.7500,41.0000\nia,monroe,-92.7500,41.1250\nia,mahaska,-92.7500,41.2500\nia,mahaska,-92.7500,41.3750\nia,mahaska,-92.7500,41.5000\nia,poweshiek,-92.7500,41.6250\nia,poweshiek,-92.7500,41.7500\nia,tama,-92.7500,41.8750\nia,tama,-92.7500,42.0000\nia,tama,-92.7500,42.1250\nia,tama,-92.7500,42.2500\nia,grundy,-92.7500,42.3750\nia,grundy,-92.7500,42.5000\nia,butler,-92.7500,42.6250\nia,butler,-92.7500,42.7500\nia,butler,-92.7500,42.8750\nia,floyd,-92.7500,43.0000\nia,floyd,-92.7500,43.1250\nia,mitchell,-92.7500,43.2500\nia,mitchell,-92.7500,43.3750\nia,mitchell,-92.7500,43.5000\nmn,mower,-92.7500,43.6250\nmn,mower,-92.7500,43.7500\nmn,dodge,-92.7500,43.8750\nmn,dodge,-92.7500,44.0000\nmn,dodge,-92.7500,44.1250\nmn,goodhue,-92.7500,44.2500\nmn,goodhue,-92.7500,44.3750\nmn,goodhue,-92.7500,44.5000\nmn,goodhue,-92.7500,44.6250\nwi,pierce,-92.7500,44.7500\nwi,st. croix,-92.7500,44.8750\nwi,st. croix,-92.7500,45.0000\nmn,washington,-92.7500,45.1250\nwi,polk,-92.7500,45.2500\nmn,chisago,-92.7500,45.3750\nmn,chisago,-92.7500,45.5000\nwi,polk,-92.7500,45.6250\nwi,burnett,-92.7500,45.7500\nmn,pine,-92.7500,45.8750\nmn,pine,-92.7500,46.0000\nmn,pine,-92.7500,46.1250\nmn,pine,-92.7500,46.2500\nmn,pine,-92.7500,46.3750\nmn,carlton,-92.7500,46.5000\nmn,carlton,-92.7500,46.6250\nmn,carlton,-92.7500,46.7500\nmn,st. louis,-92.7500,46.8750\nmn,st. louis,-92.7500,47.0000\nmn,st. louis,-92.7500,47.1250\nmn,st. louis,-92.7500,47.2500\nmn,st. louis,-92.7500,47.3750\nmn,st. louis,-92.7500,47.5000\nmn,st. louis,-92.7500,47.6250\nmn,st. louis,-92.7500,47.7500\nmn,st. louis,-92.7500,47.8750\nmn,st. louis,-92.7500,48.0000\nmn,st. louis,-92.7500,48.1250\nmn,st. louis,-92.7500,48.2500\nmn,st. louis,-92.7500,48.3750\nmn,st. louis,-92.7500,48.5000\nar,searcy,-92.6250,36.0000\nar,marion,-92.6250,36.1250\nar,marion,-92.6250,36.2500\nar,marion,-92.6250,36.3750\nmo,ozark,-92.6250,36.5000\nmo,ozark,-92.6250,36.6250\nmo,ozark,-92.6250,36.7500\nmo,douglas,-92.6250,36.8750\nmo,douglas,-92.6250,37.0000\nmo,wright,-92.6250,37.1250\nmo,wright,-92.6250,37.2500\nmo,wright,-92.6250,37.3750\nmo,laclede,-92.6250,37.5000\nmo,laclede,-92.6250,37.6250\nmo,laclede,-92.6250,37.7500\nmo,laclede,-92.6250,37.8750\nmo,camden,-92.6250,38.0000\nmo,camden,-92.6250,38.1250\nmo,miller,-92.6250,38.2500\nmo,miller,-92.6250,38.3750\nmo,moniteau,-92.6250,38.5000\nmo,moniteau,-92.6250,38.6250\nmo,cooper,-92.6250,38.7500\nmo,cooper,-92.6250,38.8750\nmo,howard,-92.6250,39.0000\nmo,howard,-92.6250,39.1250\nmo,howard,-92.6250,39.2500\nmo,randolph,-92.6250,39.3750\nmo,randolph,-92.6250,39.5000\nmo,macon,-92.6250,39.6250\nmo,macon,-92.6250,39.7500\nmo,macon,-92.6250,39.8750\nmo,macon,-92.6250,40.0000\nmo,adair,-92.6250,40.1250\nmo,adair,-92.6250,40.2500\nmo,schuyler,-92.6250,40.3750\nmo,schuyler,-92.6250,40.5000\nia,davis,-92.6250,40.6250\nia,davis,-92.6250,40.7500\nia,davis,-92.6250,40.8750\nia,wapello,-92.6250,41.0000\nia,wapello,-92.6250,41.1250\nia,mahaska,-92.6250,41.2500\nia,mahaska,-92.6250,41.3750\nia,mahaska,-92.6250,41.5000\nia,poweshiek,-92.6250,41.6250\nia,poweshiek,-92.6250,41.7500\nia,tama,-92.6250,41.8750\nia,tama,-92.6250,42.0000\nia,tama,-92.6250,42.1250\nia,tama,-92.6250,42.2500\nia,grundy,-92.6250,42.3750\nia,grundy,-92.6250,42.5000\nia,butler,-92.6250,42.6250\nia,butler,-92.6250,42.7500\nia,butler,-92.6250,42.8750\nia,floyd,-92.6250,43.0000\nia,floyd,-92.6250,43.1250\nia,mitchell,-92.6250,43.2500\nia,mitchell,-92.6250,43.3750\nia,mitchell,-92.6250,43.5000\nmn,mower,-92.6250,43.6250\nmn,mower,-92.6250,43.7500\nmn,olmsted,-92.6250,43.8750\nmn,olmsted,-92.6250,44.0000\nmn,olmsted,-92.6250,44.1250\nmn,goodhue,-92.6250,44.2500\nmn,goodhue,-92.6250,44.3750\nmn,goodhue,-92.6250,44.5000\nmn,goodhue,-92.6250,44.6250\nwi,pierce,-92.6250,44.7500\nwi,st. croix,-92.6250,44.8750\nwi,st. croix,-92.6250,45.0000\nwi,st. croix,-92.6250,45.1250\nwi,polk,-92.6250,45.2500\nwi,polk,-92.6250,45.3750\nwi,polk,-92.6250,45.5000\nwi,polk,-92.6250,45.6250\nwi,burnett,-92.6250,45.7500\nwi,burnett,-92.6250,45.8750\nmn,pine,-92.6250,46.0000\nmn,pine,-92.6250,46.1250\nmn,pine,-92.6250,46.2500\nmn,pine,-92.6250,46.3750\nmn,carlton,-92.6250,46.5000\nmn,carlton,-92.6250,46.6250\nmn,carlton,-92.6250,46.7500\nmn,st. louis,-92.6250,46.8750\nmn,st. louis,-92.6250,47.0000\nmn,st. louis,-92.6250,47.1250\nmn,st. louis,-92.6250,47.2500\nmn,st. louis,-92.6250,47.3750\nmn,st. louis,-92.6250,47.5000\nmn,st. louis,-92.6250,47.6250\nmn,st. louis,-92.6250,47.7500\nmn,st. louis,-92.6250,47.8750\nmn,st. louis,-92.6250,48.0000\nmn,st. louis,-92.6250,48.1250\nmn,st. louis,-92.6250,48.2500\nmn,st. louis,-92.6250,48.3750\nar,searcy,-92.5000,36.0000\nar,marion,-92.5000,36.1250\nar,marion,-92.5000,36.2500\nar,baxter,-92.5000,36.3750\nmo,ozark,-92.5000,36.5000\nmo,ozark,-92.5000,36.6250\nmo,ozark,-92.5000,36.7500\nmo,douglas,-92.5000,36.8750\nmo,douglas,-92.5000,37.0000\nmo,wright,-92.5000,37.1250\nmo,wright,-92.5000,37.2500\nmo,wright,-92.5000,37.3750\nmo,laclede,-92.5000,37.5000\nmo,laclede,-92.5000,37.6250\nmo,laclede,-92.5000,37.7500\nmo,camden,-92.5000,37.8750\nmo,camden,-92.5000,38.0000\nmo,miller,-92.5000,38.1250\nmo,miller,-92.5000,38.2500\nmo,miller,-92.5000,38.3750\nmo,moniteau,-92.5000,38.5000\nmo,moniteau,-92.5000,38.6250\nmo,moniteau,-92.5000,38.7500\nmo,moniteau,-92.5000,38.8750\nmo,boone,-92.5000,39.0000\nmo,howard,-92.5000,39.1250\nmo,howard,-92.5000,39.2500\nmo,randolph,-92.5000,39.3750\nmo,randolph,-92.5000,39.5000\nmo,macon,-92.5000,39.6250\nmo,macon,-92.5000,39.7500\nmo,macon,-92.5000,39.8750\nmo,macon,-92.5000,40.0000\nmo,adair,-92.5000,40.1250\nmo,adair,-92.5000,40.2500\nmo,schuyler,-92.5000,40.3750\nmo,schuyler,-92.5000,40.5000\nia,davis,-92.5000,40.6250\nia,davis,-92.5000,40.7500\nia,davis,-92.5000,40.8750\nia,wapello,-92.5000,41.0000\nia,wapello,-92.5000,41.1250\nia,mahaska,-92.5000,41.2500\nia,mahaska,-92.5000,41.3750\nia,mahaska,-92.5000,41.5000\nia,poweshiek,-92.5000,41.6250\nia,poweshiek,-92.5000,41.7500\nia,tama,-92.5000,41.8750\nia,tama,-92.5000,42.0000\nia,tama,-92.5000,42.1250\nia,tama,-92.5000,42.2500\nia,black hawk,-92.5000,42.3750\nia,black hawk,-92.5000,42.5000\nia,black hawk,-92.5000,42.6250\nia,bremer,-92.5000,42.7500\nia,bremer,-92.5000,42.8750\nia,chickasaw,-92.5000,43.0000\nia,chickasaw,-92.5000,43.1250\nia,howard,-92.5000,43.2500\nia,howard,-92.5000,43.3750\nia,howard,-92.5000,43.5000\nmn,mower,-92.5000,43.6250\nmn,mower,-92.5000,43.7500\nmn,olmsted,-92.5000,43.8750\nmn,olmsted,-92.5000,44.0000\nmn,olmsted,-92.5000,44.1250\nmn,wabasha,-92.5000,44.2500\nmn,goodhue,-92.5000,44.3750\nmn,goodhue,-92.5000,44.5000\nwi,pierce,-92.5000,44.6250\nwi,pierce,-92.5000,44.7500\nwi,st. croix,-92.5000,44.8750\nwi,st. croix,-92.5000,45.0000\nwi,st. croix,-92.5000,45.1250\nwi,polk,-92.5000,45.2500\nwi,polk,-92.5000,45.3750\nwi,polk,-92.5000,45.5000\nwi,polk,-92.5000,45.6250\nwi,burnett,-92.5000,45.7500\nwi,burnett,-92.5000,45.8750\nmn,pine,-92.5000,46.0000\nmn,pine,-92.5000,46.1250\nmn,pine,-92.5000,46.2500\nmn,pine,-92.5000,46.3750\nmn,carlton,-92.5000,46.5000\nmn,carlton,-92.5000,46.6250\nmn,carlton,-92.5000,46.7500\nmn,st. louis,-92.5000,46.8750\nmn,st. louis,-92.5000,47.0000\nmn,st. louis,-92.5000,47.1250\nmn,st. louis,-92.5000,47.2500\nmn,st. louis,-92.5000,47.3750\nmn,st. louis,-92.5000,47.5000\nmn,st. louis,-92.5000,47.6250\nmn,st. louis,-92.5000,47.7500\nmn,st. louis,-92.5000,47.8750\nmn,st. louis,-92.5000,48.0000\nmn,st. louis,-92.5000,48.1250\nmn,st. louis,-92.5000,48.2500\nmn,st. louis,-92.5000,48.3750\nar,baxter,-92.3750,36.0000\nar,baxter,-92.3750,36.1250\nar,baxter,-92.3750,36.2500\nar,baxter,-92.3750,36.3750\nmo,ozark,-92.3750,36.5000\nmo,ozark,-92.3750,36.6250\nmo,ozark,-92.3750,36.7500\nmo,douglas,-92.3750,36.8750\nmo,douglas,-92.3750,37.0000\nmo,wright,-92.3750,37.1250\nmo,wright,-92.3750,37.2500\nmo,wright,-92.3750,37.3750\nmo,laclede,-92.3750,37.5000\nmo,laclede,-92.3750,37.6250\nmo,pulaski,-92.3750,37.7500\nmo,pulaski,-92.3750,37.8750\nmo,pulaski,-92.3750,38.0000\nmo,miller,-92.3750,38.1250\nmo,miller,-92.3750,38.2500\nmo,cole,-92.3750,38.3750\nmo,cole,-92.3750,38.5000\nmo,cole,-92.3750,38.6250\nmo,boone,-92.3750,38.7500\nmo,boone,-92.3750,38.8750\nmo,boone,-92.3750,39.0000\nmo,boone,-92.3750,39.1250\nmo,randolph,-92.3750,39.2500\nmo,randolph,-92.3750,39.3750\nmo,randolph,-92.3750,39.5000\nmo,macon,-92.3750,39.6250\nmo,macon,-92.3750,39.7500\nmo,macon,-92.3750,39.8750\nmo,macon,-92.3750,40.0000\nmo,adair,-92.3750,40.1250\nmo,adair,-92.3750,40.2500\nmo,schuyler,-92.3750,40.3750\nmo,schuyler,-92.3750,40.5000\nia,davis,-92.3750,40.6250\nia,davis,-92.3750,40.7500\nia,davis,-92.3750,40.8750\nia,wapello,-92.3750,41.0000\nia,wapello,-92.3750,41.1250\nia,keokuk,-92.3750,41.2500\nia,keokuk,-92.3750,41.3750\nia,keokuk,-92.3750,41.5000\nia,poweshiek,-92.3750,41.6250\nia,poweshiek,-92.3750,41.7500\nia,tama,-92.3750,41.8750\nia,tama,-92.3750,42.0000\nia,tama,-92.3750,42.1250\nia,tama,-92.3750,42.2500\nia,black hawk,-92.3750,42.3750\nia,black hawk,-92.3750,42.5000\nia,black hawk,-92.3750,42.6250\nia,bremer,-92.3750,42.7500\nia,bremer,-92.3750,42.8750\nia,chickasaw,-92.3750,43.0000\nia,chickasaw,-92.3750,43.1250\nia,howard,-92.3750,43.2500\nia,howard,-92.3750,43.3750\nia,howard,-92.3750,43.5000\nmn,fillmore,-92.3750,43.6250\nmn,fillmore,-92.3750,43.7500\nmn,olmsted,-92.3750,43.8750\nmn,olmsted,-92.3750,44.0000\nmn,olmsted,-92.3750,44.1250\nmn,wabasha,-92.3750,44.2500\nmn,wabasha,-92.3750,44.3750\nmn,goodhue,-92.3750,44.5000\nwi,pierce,-92.3750,44.6250\nwi,pierce,-92.3750,44.7500\nwi,st. croix,-92.3750,44.8750\nwi,st. croix,-92.3750,45.0000\nwi,st. croix,-92.3750,45.1250\nwi,polk,-92.3750,45.2500\nwi,polk,-92.3750,45.3750\nwi,polk,-92.3750,45.5000\nwi,polk,-92.3750,45.6250\nwi,burnett,-92.3750,45.7500\nwi,burnett,-92.3750,45.8750\nwi,burnett,-92.3750,46.0000\nmn,pine,-92.3750,46.1250\nmn,pine,-92.3750,46.2500\nmn,pine,-92.3750,46.3750\nmn,carlton,-92.3750,46.5000\nmn,carlton,-92.3750,46.6250\nmn,carlton,-92.3750,46.7500\nmn,st. louis,-92.3750,46.8750\nmn,st. louis,-92.3750,47.0000\nmn,st. louis,-92.3750,47.1250\nmn,st. louis,-92.3750,47.2500\nmn,st. louis,-92.3750,47.3750\nmn,st. louis,-92.3750,47.5000\nmn,st. louis,-92.3750,47.6250\nmn,st. louis,-92.3750,47.7500\nmn,st. louis,-92.3750,47.8750\nmn,st. louis,-92.3750,48.0000\nmn,st. louis,-92.3750,48.1250\nar,stone,-92.2500,36.0000\nar,baxter,-92.2500,36.1250\nar,baxter,-92.2500,36.2500\nar,baxter,-92.2500,36.3750\nmo,ozark,-92.2500,36.5000\nmo,ozark,-92.2500,36.6250\nmo,ozark,-92.2500,36.7500\nmo,douglas,-92.2500,36.8750\nmo,douglas,-92.2500,37.0000\nmo,wright,-92.2500,37.1250\nmo,wright,-92.2500,37.2500\nmo,texas,-92.2500,37.3750\nmo,texas,-92.2500,37.5000\nmo,laclede,-92.2500,37.6250\nmo,pulaski,-92.2500,37.7500\nmo,pulaski,-92.2500,37.8750\nmo,pulaski,-92.2500,38.0000\nmo,miller,-92.2500,38.1250\nmo,miller,-92.2500,38.2500\nmo,cole,-92.2500,38.3750\nmo,cole,-92.2500,38.5000\nmo,cole,-92.2500,38.6250\nmo,boone,-92.2500,38.7500\nmo,boone,-92.2500,38.8750\nmo,boone,-92.2500,39.0000\nmo,boone,-92.2500,39.1250\nmo,audrain,-92.2500,39.2500\nmo,monroe,-92.2500,39.3750\nmo,monroe,-92.2500,39.5000\nmo,shelby,-92.2500,39.6250\nmo,shelby,-92.2500,39.7500\nmo,shelby,-92.2500,39.8750\nmo,knox,-92.2500,40.0000\nmo,knox,-92.2500,40.1250\nmo,knox,-92.2500,40.2500\nmo,scotland,-92.2500,40.3750\nmo,scotland,-92.2500,40.5000\nia,davis,-92.2500,40.6250\nia,davis,-92.2500,40.7500\nia,davis,-92.2500,40.8750\nia,wapello,-92.2500,41.0000\nia,wapello,-92.2500,41.1250\nia,keokuk,-92.2500,41.2500\nia,keokuk,-92.2500,41.3750\nia,keokuk,-92.2500,41.5000\nia,iowa,-92.2500,41.6250\nia,iowa,-92.2500,41.7500\nia,benton,-92.2500,41.8750\nia,benton,-92.2500,42.0000\nia,benton,-92.2500,42.1250\nia,benton,-92.2500,42.2500\nia,black hawk,-92.2500,42.3750\nia,black hawk,-92.2500,42.5000\nia,black hawk,-92.2500,42.6250\nia,bremer,-92.2500,42.7500\nia,bremer,-92.2500,42.8750\nia,chickasaw,-92.2500,43.0000\nia,chickasaw,-92.2500,43.1250\nia,howard,-92.2500,43.2500\nia,howard,-92.2500,43.3750\nia,howard,-92.2500,43.5000\nmn,fillmore,-92.2500,43.6250\nmn,fillmore,-92.2500,43.7500\nmn,olmsted,-92.2500,43.8750\nmn,olmsted,-92.2500,44.0000\nmn,wabasha,-92.2500,44.1250\nmn,wabasha,-92.2500,44.2500\nmn,wabasha,-92.2500,44.3750\nwi,pepin,-92.2500,44.5000\nwi,pierce,-92.2500,44.6250\nwi,pierce,-92.2500,44.7500\nwi,st. croix,-92.2500,44.8750\nwi,st. croix,-92.2500,45.0000\nwi,st. croix,-92.2500,45.1250\nwi,polk,-92.2500,45.2500\nwi,polk,-92.2500,45.3750\nwi,polk,-92.2500,45.5000\nwi,polk,-92.2500,45.6250\nwi,burnett,-92.2500,45.7500\nwi,burnett,-92.2500,45.8750\nwi,burnett,-92.2500,46.0000\nwi,burnett,-92.2500,46.1250\nwi,douglas,-92.2500,46.2500\nwi,douglas,-92.2500,46.3750\nwi,douglas,-92.2500,46.5000\nwi,douglas,-92.2500,46.6250\nmn,st. louis,-92.2500,46.7500\nmn,st. louis,-92.2500,46.8750\nmn,st. louis,-92.2500,47.0000\nmn,st. louis,-92.2500,47.1250\nmn,st. louis,-92.2500,47.2500\nmn,st. louis,-92.2500,47.3750\nmn,st. louis,-92.2500,47.5000\nmn,st. louis,-92.2500,47.6250\nmn,st. louis,-92.2500,47.7500\nmn,st. louis,-92.2500,47.8750\nmn,st. louis,-92.2500,48.0000\nmn,st. louis,-92.2500,48.1250\nmn,st. louis,-92.2500,48.2500\nar,stone,-92.1250,36.0000\nar,izard,-92.1250,36.1250\nar,izard,-92.1250,36.2500\nar,fulton,-92.1250,36.3750\nmo,ozark,-92.1250,36.5000\nmo,ozark,-92.1250,36.6250\nmo,ozark,-92.1250,36.7500\nmo,douglas,-92.1250,36.8750\nmo,douglas,-92.1250,37.0000\nmo,texas,-92.1250,37.1250\nmo,texas,-92.1250,37.2500\nmo,texas,-92.1250,37.3750\nmo,texas,-92.1250,37.5000\nmo,pulaski,-92.1250,37.6250\nmo,pulaski,-92.1250,37.7500\nmo,pulaski,-92.1250,37.8750\nmo,pulaski,-92.1250,38.0000\nmo,maries,-92.1250,38.1250\nmo,maries,-92.1250,38.2500\nmo,osage,-92.1250,38.3750\nmo,cole,-92.1250,38.5000\nmo,callaway,-92.1250,38.6250\nmo,callaway,-92.1250,38.7500\nmo,callaway,-92.1250,38.8750\nmo,callaway,-92.1250,39.0000\nmo,boone,-92.1250,39.1250\nmo,audrain,-92.1250,39.2500\nmo,monroe,-92.1250,39.3750\nmo,monroe,-92.1250,39.5000\nmo,monroe,-92.1250,39.6250\nmo,shelby,-92.1250,39.7500\nmo,shelby,-92.1250,39.8750\nmo,knox,-92.1250,40.0000\nmo,knox,-92.1250,40.1250\nmo,knox,-92.1250,40.2500\nmo,scotland,-92.1250,40.3750\nmo,scotland,-92.1250,40.5000\nia,van buren,-92.1250,40.6250\nia,van buren,-92.1250,40.7500\nia,van buren,-92.1250,40.8750\nia,jefferson,-92.1250,41.0000\nia,jefferson,-92.1250,41.1250\nia,keokuk,-92.1250,41.2500\nia,keokuk,-92.1250,41.3750\nia,keokuk,-92.1250,41.5000\nia,iowa,-92.1250,41.6250\nia,iowa,-92.1250,41.7500\nia,benton,-92.1250,41.8750\nia,benton,-92.1250,42.0000\nia,benton,-92.1250,42.1250\nia,benton,-92.1250,42.2500\nia,black hawk,-92.1250,42.3750\nia,black hawk,-92.1250,42.5000\nia,black hawk,-92.1250,42.6250\nia,bremer,-92.1250,42.7500\nia,bremer,-92.1250,42.8750\nia,chickasaw,-92.1250,43.0000\nia,chickasaw,-92.1250,43.1250\nia,howard,-92.1250,43.2500\nia,howard,-92.1250,43.3750\nia,howard,-92.1250,43.5000\nmn,fillmore,-92.1250,43.6250\nmn,fillmore,-92.1250,43.7500\nmn,olmsted,-92.1250,43.8750\nmn,olmsted,-92.1250,44.0000\nmn,wabasha,-92.1250,44.1250\nmn,wabasha,-92.1250,44.2500\nmn,wabasha,-92.1250,44.3750\nwi,pepin,-92.1250,44.5000\nwi,pepin,-92.1250,44.6250\nwi,dunn,-92.1250,44.7500\nwi,dunn,-92.1250,44.8750\nwi,dunn,-92.1250,45.0000\nwi,dunn,-92.1250,45.1250\nwi,barron,-92.1250,45.2500\nwi,barron,-92.1250,45.3750\nwi,barron,-92.1250,45.5000\nwi,barron,-92.1250,45.6250\nwi,burnett,-92.1250,45.7500\nwi,burnett,-92.1250,45.8750\nwi,burnett,-92.1250,46.0000\nwi,burnett,-92.1250,46.1250\nwi,douglas,-92.1250,46.2500\nwi,douglas,-92.1250,46.3750\nwi,douglas,-92.1250,46.5000\nwi,douglas,-92.1250,46.6250\nmn,st. louis,-92.1250,46.8750\nmn,st. louis,-92.1250,47.0000\nmn,st. louis,-92.1250,47.1250\nmn,st. louis,-92.1250,47.2500\nmn,st. louis,-92.1250,47.3750\nmn,st. louis,-92.1250,47.5000\nmn,st. louis,-92.1250,47.6250\nmn,st. louis,-92.1250,47.7500\nmn,st. louis,-92.1250,47.8750\nmn,st. louis,-92.1250,48.0000\nmn,st. louis,-92.1250,48.1250\nmn,st. louis,-92.1250,48.2500\nar,izard,-92.0000,36.0000\nar,izard,-92.0000,36.1250\nar,izard,-92.0000,36.2500\nar,fulton,-92.0000,36.3750\nmo,howell,-92.0000,36.5000\nmo,howell,-92.0000,36.6250\nmo,howell,-92.0000,36.7500\nmo,howell,-92.0000,36.8750\nmo,howell,-92.0000,37.0000\nmo,texas,-92.0000,37.1250\nmo,texas,-92.0000,37.2500\nmo,texas,-92.0000,37.3750\nmo,texas,-92.0000,37.5000\nmo,phelps,-92.0000,37.6250\nmo,phelps,-92.0000,37.7500\nmo,phelps,-92.0000,37.8750\nmo,phelps,-92.0000,38.0000\nmo,maries,-92.0000,38.1250\nmo,maries,-92.0000,38.2500\nmo,osage,-92.0000,38.3750\nmo,osage,-92.0000,38.5000\nmo,callaway,-92.0000,38.6250\nmo,callaway,-92.0000,38.7500\nmo,callaway,-92.0000,38.8750\nmo,callaway,-92.0000,39.0000\nmo,audrain,-92.0000,39.1250\nmo,audrain,-92.0000,39.2500\nmo,monroe,-92.0000,39.3750\nmo,monroe,-92.0000,39.5000\nmo,monroe,-92.0000,39.6250\nmo,shelby,-92.0000,39.7500\nmo,shelby,-92.0000,39.8750\nmo,knox,-92.0000,40.0000\nmo,knox,-92.0000,40.1250\nmo,knox,-92.0000,40.2500\nmo,scotland,-92.0000,40.3750\nmo,scotland,-92.0000,40.5000\nia,van buren,-92.0000,40.6250\nia,van buren,-92.0000,40.7500\nia,van buren,-92.0000,40.8750\nia,jefferson,-92.0000,41.0000\nia,jefferson,-92.0000,41.1250\nia,keokuk,-92.0000,41.2500\nia,keokuk,-92.0000,41.3750\nia,keokuk,-92.0000,41.5000\nia,iowa,-92.0000,41.6250\nia,iowa,-92.0000,41.7500\nia,benton,-92.0000,41.8750\nia,benton,-92.0000,42.0000\nia,benton,-92.0000,42.1250\nia,benton,-92.0000,42.2500\nia,buchanan,-92.0000,42.3750\nia,buchanan,-92.0000,42.5000\nia,buchanan,-92.0000,42.6250\nia,fayette,-92.0000,42.7500\nia,fayette,-92.0000,42.8750\nia,fayette,-92.0000,43.0000\nia,winneshiek,-92.0000,43.1250\nia,winneshiek,-92.0000,43.2500\nia,winneshiek,-92.0000,43.3750\nia,winneshiek,-92.0000,43.5000\nmn,fillmore,-92.0000,43.6250\nmn,fillmore,-92.0000,43.7500\nmn,winona,-92.0000,43.8750\nmn,winona,-92.0000,44.0000\nmn,winona,-92.0000,44.1250\nmn,wabasha,-92.0000,44.2500\nmn,wabasha,-92.0000,44.3750\nwi,buffalo,-92.0000,44.5000\nwi,pepin,-92.0000,44.6250\nwi,dunn,-92.0000,44.7500\nwi,dunn,-92.0000,44.8750\nwi,dunn,-92.0000,45.0000\nwi,dunn,-92.0000,45.1250\nwi,barron,-92.0000,45.2500\nwi,barron,-92.0000,45.3750\nwi,barron,-92.0000,45.5000\nwi,barron,-92.0000,45.6250\nwi,washburn,-92.0000,45.7500\nwi,washburn,-92.0000,45.8750\nwi,washburn,-92.0000,46.0000\nwi,washburn,-92.0000,46.1250\nwi,douglas,-92.0000,46.2500\nwi,douglas,-92.0000,46.3750\nwi,douglas,-92.0000,46.5000\nwi,douglas,-92.0000,46.6250\nmn,st. louis,-92.0000,46.8750\nmn,st. louis,-92.0000,47.0000\nmn,st. louis,-92.0000,47.1250\nmn,st. louis,-92.0000,47.2500\nmn,st. louis,-92.0000,47.3750\nmn,st. louis,-92.0000,47.5000\nmn,st. louis,-92.0000,47.6250\nmn,st. louis,-92.0000,47.7500\nmn,st. louis,-92.0000,47.8750\nmn,st. louis,-92.0000,48.0000\nmn,st. louis,-92.0000,48.1250\nmn,st. louis,-92.0000,48.2500\nar,izard,-91.8750,36.0000\nar,izard,-91.8750,36.1250\nar,izard,-91.8750,36.2500\nar,fulton,-91.8750,36.3750\nmo,howell,-91.8750,36.5000\nmo,howell,-91.8750,36.6250\nmo,howell,-91.8750,36.7500\nmo,howell,-91.8750,36.8750\nmo,howell,-91.8750,37.0000\nmo,texas,-91.8750,37.1250\nmo,texas,-91.8750,37.2500\nmo,texas,-91.8750,37.3750\nmo,texas,-91.8750,37.5000\nmo,phelps,-91.8750,37.6250\nmo,phelps,-91.8750,37.7500\nmo,phelps,-91.8750,37.8750\nmo,phelps,-91.8750,38.0000\nmo,maries,-91.8750,38.1250\nmo,maries,-91.8750,38.2500\nmo,osage,-91.8750,38.3750\nmo,osage,-91.8750,38.5000\nmo,osage,-91.8750,38.6250\nmo,callaway,-91.8750,38.7500\nmo,callaway,-91.8750,38.8750\nmo,callaway,-91.8750,39.0000\nmo,audrain,-91.8750,39.1250\nmo,audrain,-91.8750,39.2500\nmo,monroe,-91.8750,39.3750\nmo,monroe,-91.8750,39.5000\nmo,monroe,-91.8750,39.6250\nmo,shelby,-91.8750,39.7500\nmo,shelby,-91.8750,39.8750\nmo,lewis,-91.8750,40.0000\nmo,lewis,-91.8750,40.1250\nmo,lewis,-91.8750,40.2500\nmo,clark,-91.8750,40.3750\nmo,clark,-91.8750,40.5000\nia,van buren,-91.8750,40.6250\nia,van buren,-91.8750,40.7500\nia,van buren,-91.8750,40.8750\nia,jefferson,-91.8750,41.0000\nia,jefferson,-91.8750,41.1250\nia,washington,-91.8750,41.2500\nia,washington,-91.8750,41.3750\nia,washington,-91.8750,41.5000\nia,iowa,-91.8750,41.6250\nia,iowa,-91.8750,41.7500\nia,benton,-91.8750,41.8750\nia,benton,-91.8750,42.0000\nia,benton,-91.8750,42.1250\nia,benton,-91.8750,42.2500\nia,buchanan,-91.8750,42.3750\nia,buchanan,-91.8750,42.5000\nia,buchanan,-91.8750,42.6250\nia,fayette,-91.8750,42.7500\nia,fayette,-91.8750,42.8750\nia,fayette,-91.8750,43.0000\nia,winneshiek,-91.8750,43.1250\nia,winneshiek,-91.8750,43.2500\nia,winneshiek,-91.8750,43.3750\nia,winneshiek,-91.8750,43.5000\nmn,fillmore,-91.8750,43.6250\nmn,fillmore,-91.8750,43.7500\nmn,winona,-91.8750,43.8750\nmn,winona,-91.8750,44.0000\nmn,winona,-91.8750,44.1250\nwi,buffalo,-91.8750,44.2500\nwi,buffalo,-91.8750,44.3750\nwi,buffalo,-91.8750,44.5000\nwi,pepin,-91.8750,44.6250\nwi,dunn,-91.8750,44.7500\nwi,dunn,-91.8750,44.8750\nwi,dunn,-91.8750,45.0000\nwi,dunn,-91.8750,45.1250\nwi,barron,-91.8750,45.2500\nwi,barron,-91.8750,45.3750\nwi,barron,-91.8750,45.5000\nwi,barron,-91.8750,45.6250\nwi,washburn,-91.8750,45.7500\nwi,washburn,-91.8750,45.8750\nwi,washburn,-91.8750,46.0000\nwi,washburn,-91.8750,46.1250\nwi,douglas,-91.8750,46.2500\nwi,douglas,-91.8750,46.3750\nwi,douglas,-91.8750,46.5000\nwi,douglas,-91.8750,46.6250\nmn,st. louis,-91.8750,47.0000\nmn,st. louis,-91.8750,47.1250\nmn,st. louis,-91.8750,47.2500\nmn,st. louis,-91.8750,47.3750\nmn,st. louis,-91.8750,47.5000\nmn,st. louis,-91.8750,47.6250\nmn,st. louis,-91.8750,47.7500\nmn,st. louis,-91.8750,47.8750\nmn,st. louis,-91.8750,48.0000\nmn,st. louis,-91.8750,48.1250\nar,izard,-91.7500,36.0000\nar,izard,-91.7500,36.1250\nar,izard,-91.7500,36.2500\nar,fulton,-91.7500,36.3750\nmo,howell,-91.7500,36.5000\nmo,howell,-91.7500,36.6250\nmo,howell,-91.7500,36.7500\nmo,howell,-91.7500,36.8750\nmo,howell,-91.7500,37.0000\nmo,texas,-91.7500,37.1250\nmo,texas,-91.7500,37.2500\nmo,texas,-91.7500,37.3750\nmo,dent,-91.7500,37.5000\nmo,dent,-91.7500,37.6250\nmo,dent,-91.7500,37.7500\nmo,phelps,-91.7500,37.8750\nmo,phelps,-91.7500,38.0000\nmo,maries,-91.7500,38.1250\nmo,maries,-91.7500,38.2500\nmo,osage,-91.7500,38.3750\nmo,osage,-91.7500,38.5000\nmo,osage,-91.7500,38.6250\nmo,callaway,-91.7500,38.7500\nmo,callaway,-91.7500,38.8750\nmo,callaway,-91.7500,39.0000\nmo,audrain,-91.7500,39.1250\nmo,audrain,-91.7500,39.2500\nmo,monroe,-91.7500,39.3750\nmo,monroe,-91.7500,39.5000\nmo,monroe,-91.7500,39.6250\nmo,marion,-91.7500,39.7500\nmo,marion,-91.7500,39.8750\nmo,lewis,-91.7500,40.0000\nmo,lewis,-91.7500,40.1250\nmo,lewis,-91.7500,40.2500\nmo,clark,-91.7500,40.3750\nmo,clark,-91.7500,40.5000\nia,van buren,-91.7500,40.6250\nia,van buren,-91.7500,40.7500\nia,van buren,-91.7500,40.8750\nia,jefferson,-91.7500,41.0000\nia,jefferson,-91.7500,41.1250\nia,washington,-91.7500,41.2500\nia,washington,-91.7500,41.3750\nia,washington,-91.7500,41.5000\nia,johnson,-91.7500,41.6250\nia,johnson,-91.7500,41.7500\nia,linn,-91.7500,41.8750\nia,linn,-91.7500,42.0000\nia,linn,-91.7500,42.1250\nia,linn,-91.7500,42.2500\nia,buchanan,-91.7500,42.3750\nia,buchanan,-91.7500,42.5000\nia,buchanan,-91.7500,42.6250\nia,fayette,-91.7500,42.7500\nia,fayette,-91.7500,42.8750\nia,fayette,-91.7500,43.0000\nia,winneshiek,-91.7500,43.1250\nia,winneshiek,-91.7500,43.2500\nia,winneshiek,-91.7500,43.3750\nia,winneshiek,-91.7500,43.5000\nmn,fillmore,-91.7500,43.6250\nmn,fillmore,-91.7500,43.7500\nmn,winona,-91.7500,43.8750\nmn,winona,-91.7500,44.0000\nmn,winona,-91.7500,44.1250\nwi,buffalo,-91.7500,44.2500\nwi,buffalo,-91.7500,44.3750\nwi,buffalo,-91.7500,44.5000\nwi,pepin,-91.7500,44.6250\nwi,dunn,-91.7500,44.7500\nwi,dunn,-91.7500,44.8750\nwi,dunn,-91.7500,45.0000\nwi,dunn,-91.7500,45.1250\nwi,barron,-91.7500,45.2500\nwi,barron,-91.7500,45.3750\nwi,barron,-91.7500,45.5000\nwi,barron,-91.7500,45.6250\nwi,washburn,-91.7500,45.7500\nwi,washburn,-91.7500,45.8750\nwi,washburn,-91.7500,46.0000\nwi,washburn,-91.7500,46.1250\nwi,douglas,-91.7500,46.2500\nwi,douglas,-91.7500,46.3750\nwi,douglas,-91.7500,46.5000\nwi,douglas,-91.7500,46.6250\nmn,lake,-91.7500,47.0000\nmn,lake,-91.7500,47.1250\nmn,lake,-91.7500,47.2500\nmn,lake,-91.7500,47.3750\nmn,lake,-91.7500,47.5000\nmn,lake,-91.7500,47.6250\nmn,lake,-91.7500,47.7500\nmn,lake,-91.7500,47.8750\nmn,lake,-91.7500,48.0000\nmn,lake,-91.7500,48.1250\nar,sharp,-91.6250,36.0000\nar,sharp,-91.6250,36.1250\nar,sharp,-91.6250,36.2500\nar,fulton,-91.6250,36.3750\nmo,oregon,-91.6250,36.5000\nmo,oregon,-91.6250,36.6250\nmo,oregon,-91.6250,36.7500\nmo,oregon,-91.6250,36.8750\nmo,shannon,-91.6250,37.0000\nmo,shannon,-91.6250,37.1250\nmo,shannon,-91.6250,37.2500\nmo,shannon,-91.6250,37.3750\nmo,dent,-91.6250,37.5000\nmo,dent,-91.6250,37.6250\nmo,dent,-91.6250,37.7500\nmo,phelps,-91.6250,37.8750\nmo,phelps,-91.6250,38.0000\nmo,phelps,-91.6250,38.1250\nmo,gasconade,-91.6250,38.2500\nmo,gasconade,-91.6250,38.3750\nmo,gasconade,-91.6250,38.5000\nmo,gasconade,-91.6250,38.6250\nmo,montgomery,-91.6250,38.7500\nmo,montgomery,-91.6250,38.8750\nmo,montgomery,-91.6250,39.0000\nmo,montgomery,-91.6250,39.1250\nmo,audrain,-91.6250,39.2500\nmo,ralls,-91.6250,39.3750\nmo,ralls,-91.6250,39.5000\nmo,ralls,-91.6250,39.6250\nmo,marion,-91.6250,39.7500\nmo,marion,-91.6250,39.8750\nmo,lewis,-91.6250,40.0000\nmo,lewis,-91.6250,40.1250\nmo,lewis,-91.6250,40.2500\nmo,clark,-91.6250,40.3750\nmo,clark,-91.6250,40.5000\nia,lee,-91.6250,40.6250\nia,lee,-91.6250,40.7500\nia,henry,-91.6250,40.8750\nia,henry,-91.6250,41.0000\nia,henry,-91.6250,41.1250\nia,washington,-91.6250,41.2500\nia,washington,-91.6250,41.3750\nia,washington,-91.6250,41.5000\nia,johnson,-91.6250,41.6250\nia,johnson,-91.6250,41.7500\nia,linn,-91.6250,41.8750\nia,linn,-91.6250,42.0000\nia,linn,-91.6250,42.1250\nia,linn,-91.6250,42.2500\nia,buchanan,-91.6250,42.3750\nia,buchanan,-91.6250,42.5000\nia,buchanan,-91.6250,42.6250\nia,fayette,-91.6250,42.7500\nia,fayette,-91.6250,42.8750\nia,fayette,-91.6250,43.0000\nia,winneshiek,-91.6250,43.1250\nia,winneshiek,-91.6250,43.2500\nia,winneshiek,-91.6250,43.3750\nia,winneshiek,-91.6250,43.5000\nmn,houston,-91.6250,43.6250\nmn,houston,-91.6250,43.7500\nmn,winona,-91.6250,43.8750\nmn,winona,-91.6250,44.0000\nwi,buffalo,-91.6250,44.1250\nwi,buffalo,-91.6250,44.2500\nwi,buffalo,-91.6250,44.3750\nwi,buffalo,-91.6250,44.5000\nwi,eau claire,-91.6250,44.6250\nwi,eau claire,-91.6250,44.7500\nwi,chippewa,-91.6250,44.8750\nwi,chippewa,-91.6250,45.0000\nwi,chippewa,-91.6250,45.1250\nwi,barron,-91.6250,45.2500\nwi,barron,-91.6250,45.3750\nwi,barron,-91.6250,45.5000\nwi,barron,-91.6250,45.6250\nwi,washburn,-91.6250,45.7500\nwi,washburn,-91.6250,45.8750\nwi,washburn,-91.6250,46.0000\nwi,washburn,-91.6250,46.1250\nwi,douglas,-91.6250,46.2500\nwi,douglas,-91.6250,46.3750\nwi,douglas,-91.6250,46.5000\nwi,douglas,-91.6250,46.6250\nmn,lake,-91.6250,47.1250\nmn,lake,-91.6250,47.2500\nmn,lake,-91.6250,47.3750\nmn,lake,-91.6250,47.5000\nmn,lake,-91.6250,47.6250\nmn,lake,-91.6250,47.7500\nmn,lake,-91.6250,47.8750\nmn,lake,-91.6250,48.0000\nar,sharp,-91.5000,36.0000\nar,sharp,-91.5000,36.1250\nar,sharp,-91.5000,36.2500\nar,fulton,-91.5000,36.3750\nmo,oregon,-91.5000,36.5000\nmo,oregon,-91.5000,36.6250\nmo,oregon,-91.5000,36.7500\nmo,oregon,-91.5000,36.8750\nmo,shannon,-91.5000,37.0000\nmo,shannon,-91.5000,37.1250\nmo,shannon,-91.5000,37.2500\nmo,shannon,-91.5000,37.3750\nmo,dent,-91.5000,37.5000\nmo,dent,-91.5000,37.6250\nmo,dent,-91.5000,37.7500\nmo,crawford,-91.5000,37.8750\nmo,crawford,-91.5000,38.0000\nmo,crawford,-91.5000,38.1250\nmo,gasconade,-91.5000,38.2500\nmo,gasconade,-91.5000,38.3750\nmo,gasconade,-91.5000,38.5000\nmo,gasconade,-91.5000,38.6250\nmo,montgomery,-91.5000,38.7500\nmo,montgomery,-91.5000,38.8750\nmo,montgomery,-91.5000,39.0000\nmo,montgomery,-91.5000,39.1250\nmo,audrain,-91.5000,39.2500\nmo,ralls,-91.5000,39.3750\nmo,ralls,-91.5000,39.5000\nmo,ralls,-91.5000,39.6250\nmo,marion,-91.5000,39.7500\nmo,marion,-91.5000,39.8750\nmo,lewis,-91.5000,40.0000\nil,adams,-91.5000,40.1250\nmo,clark,-91.5000,40.2500\nmo,clark,-91.5000,40.3750\nia,lee,-91.5000,40.5000\nia,lee,-91.5000,40.6250\nia,lee,-91.5000,40.7500\nia,henry,-91.5000,40.8750\nia,henry,-91.5000,41.0000\nia,henry,-91.5000,41.1250\nia,washington,-91.5000,41.2500\nia,washington,-91.5000,41.3750\nia,johnson,-91.5000,41.5000\nia,johnson,-91.5000,41.6250\nia,johnson,-91.5000,41.7500\nia,linn,-91.5000,41.8750\nia,linn,-91.5000,42.0000\nia,linn,-91.5000,42.1250\nia,linn,-91.5000,42.2500\nia,delaware,-91.5000,42.3750\nia,delaware,-91.5000,42.5000\nia,delaware,-91.5000,42.6250\nia,clayton,-91.5000,42.7500\nia,clayton,-91.5000,42.8750\nia,clayton,-91.5000,43.0000\nia,allamakee,-91.5000,43.1250\nia,allamakee,-91.5000,43.2500\nia,allamakee,-91.5000,43.3750\nia,allamakee,-91.5000,43.5000\nmn,houston,-91.5000,43.6250\nmn,houston,-91.5000,43.7500\nmn,winona,-91.5000,43.8750\nmn,winona,-91.5000,44.0000\nwi,trempealeau,-91.5000,44.1250\nwi,trempealeau,-91.5000,44.2500\nwi,trempealeau,-91.5000,44.3750\nwi,trempealeau,-91.5000,44.5000\nwi,eau claire,-91.5000,44.6250\nwi,eau claire,-91.5000,44.7500\nwi,chippewa,-91.5000,44.8750\nwi,chippewa,-91.5000,45.0000\nwi,chippewa,-91.5000,45.1250\nwi,chippewa,-91.5000,45.2500\nwi,rusk,-91.5000,45.3750\nwi,rusk,-91.5000,45.5000\nwi,rusk,-91.5000,45.6250\nwi,sawyer,-91.5000,45.7500\nwi,sawyer,-91.5000,45.8750\nwi,sawyer,-91.5000,46.0000\nwi,sawyer,-91.5000,46.1250\nwi,bayfield,-91.5000,46.2500\nwi,bayfield,-91.5000,46.3750\nwi,bayfield,-91.5000,46.5000\nwi,bayfield,-91.5000,46.6250\nwi,bayfield,-91.5000,46.7500\nmn,lake,-91.5000,47.1250\nmn,lake,-91.5000,47.2500\nmn,lake,-91.5000,47.3750\nmn,lake,-91.5000,47.5000\nmn,lake,-91.5000,47.6250\nmn,lake,-91.5000,47.7500\nmn,lake,-91.5000,47.8750\nmn,lake,-91.5000,48.0000\nar,sharp,-91.3750,36.0000\nar,sharp,-91.3750,36.1250\nar,sharp,-91.3750,36.2500\nar,sharp,-91.3750,36.3750\nmo,oregon,-91.3750,36.5000\nmo,oregon,-91.3750,36.6250\nmo,oregon,-91.3750,36.7500\nmo,oregon,-91.3750,36.8750\nmo,shannon,-91.3750,37.0000\nmo,shannon,-91.3750,37.1250\nmo,shannon,-91.3750,37.2500\nmo,shannon,-91.3750,37.3750\nmo,dent,-91.3750,37.5000\nmo,dent,-91.3750,37.6250\nmo,dent,-91.3750,37.7500\nmo,crawford,-91.3750,37.8750\nmo,crawford,-91.3750,38.0000\nmo,crawford,-91.3750,38.1250\nmo,gasconade,-91.3750,38.2500\nmo,gasconade,-91.3750,38.3750\nmo,gasconade,-91.3750,38.5000\nmo,gasconade,-91.3750,38.6250\nmo,warren,-91.3750,38.7500\nmo,montgomery,-91.3750,38.8750\nmo,montgomery,-91.3750,39.0000\nmo,montgomery,-91.3750,39.1250\nmo,pike,-91.3750,39.2500\nmo,pike,-91.3750,39.3750\nmo,ralls,-91.3750,39.5000\nmo,ralls,-91.3750,39.6250\nmo,marion,-91.3750,39.7500\nil,adams,-91.3750,39.8750\nil,adams,-91.3750,40.0000\nil,adams,-91.3750,40.1250\nil,hancock,-91.3750,40.2500\nil,hancock,-91.3750,40.3750\nia,lee,-91.3750,40.5000\nia,lee,-91.3750,40.6250\nia,lee,-91.3750,40.7500\nia,henry,-91.3750,40.8750\nia,henry,-91.3750,41.0000\nia,henry,-91.3750,41.1250\nia,louisa,-91.3750,41.2500\nia,louisa,-91.3750,41.3750\nia,johnson,-91.3750,41.5000\nia,johnson,-91.3750,41.6250\nia,johnson,-91.3750,41.7500\nia,linn,-91.3750,41.8750\nia,linn,-91.3750,42.0000\nia,linn,-91.3750,42.1250\nia,linn,-91.3750,42.2500\nia,delaware,-91.3750,42.3750\nia,delaware,-91.3750,42.5000\nia,delaware,-91.3750,42.6250\nia,clayton,-91.3750,42.7500\nia,clayton,-91.3750,42.8750\nia,clayton,-91.3750,43.0000\nia,allamakee,-91.3750,43.1250\nia,allamakee,-91.3750,43.2500\nia,allamakee,-91.3750,43.3750\nia,allamakee,-91.3750,43.5000\nmn,houston,-91.3750,43.6250\nmn,houston,-91.3750,43.7500\nmn,winona,-91.3750,43.8750\nwi,trempealeau,-91.3750,44.0000\nwi,trempealeau,-91.3750,44.1250\nwi,trempealeau,-91.3750,44.2500\nwi,trempealeau,-91.3750,44.3750\nwi,trempealeau,-91.3750,44.5000\nwi,eau claire,-91.3750,44.6250\nwi,eau claire,-91.3750,44.7500\nwi,chippewa,-91.3750,44.8750\nwi,chippewa,-91.3750,45.0000\nwi,chippewa,-91.3750,45.1250\nwi,chippewa,-91.3750,45.2500\nwi,rusk,-91.3750,45.3750\nwi,rusk,-91.3750,45.5000\nwi,rusk,-91.3750,45.6250\nwi,sawyer,-91.3750,45.7500\nwi,sawyer,-91.3750,45.8750\nwi,sawyer,-91.3750,46.0000\nwi,sawyer,-91.3750,46.1250\nwi,bayfield,-91.3750,46.2500\nwi,bayfield,-91.3750,46.3750\nwi,bayfield,-91.3750,46.5000\nwi,bayfield,-91.3750,46.6250\nwi,bayfield,-91.3750,46.7500\nmn,lake,-91.3750,47.2500\nmn,lake,-91.3750,47.3750\nmn,lake,-91.3750,47.5000\nmn,lake,-91.3750,47.6250\nmn,lake,-91.3750,47.7500\nmn,lake,-91.3750,47.8750\nmn,lake,-91.3750,48.0000\nar,lawrence,-91.2500,36.0000\nar,lawrence,-91.2500,36.1250\nar,lawrence,-91.2500,36.2500\nar,randolph,-91.2500,36.3750\nmo,oregon,-91.2500,36.5000\nmo,oregon,-91.2500,36.6250\nmo,oregon,-91.2500,36.7500\nmo,oregon,-91.2500,36.8750\nmo,shannon,-91.2500,37.0000\nmo,shannon,-91.2500,37.1250\nmo,shannon,-91.2500,37.2500\nmo,shannon,-91.2500,37.3750\nmo,dent,-91.2500,37.5000\nmo,dent,-91.2500,37.6250\nmo,crawford,-91.2500,37.7500\nmo,crawford,-91.2500,37.8750\nmo,crawford,-91.2500,38.0000\nmo,crawford,-91.2500,38.1250\nmo,franklin,-91.2500,38.2500\nmo,franklin,-91.2500,38.3750\nmo,franklin,-91.2500,38.5000\nmo,franklin,-91.2500,38.6250\nmo,warren,-91.2500,38.7500\nmo,warren,-91.2500,38.8750\nmo,lincoln,-91.2500,39.0000\nmo,lincoln,-91.2500,39.1250\nmo,pike,-91.2500,39.2500\nmo,pike,-91.2500,39.3750\nmo,pike,-91.2500,39.5000\nmo,ralls,-91.2500,39.6250\nil,pike,-91.2500,39.7500\nil,adams,-91.2500,39.8750\nil,adams,-91.2500,40.0000\nil,adams,-91.2500,40.1250\nil,hancock,-91.2500,40.2500\nil,hancock,-91.2500,40.3750\nil,hancock,-91.2500,40.5000\nil,hancock,-91.2500,40.6250\nia,lee,-91.2500,40.7500\nia,des moines,-91.2500,40.8750\nia,des moines,-91.2500,41.0000\nia,louisa,-91.2500,41.1250\nia,louisa,-91.2500,41.2500\nia,muscatine,-91.2500,41.3750\nia,muscatine,-91.2500,41.5000\nia,cedar,-91.2500,41.6250\nia,cedar,-91.2500,41.7500\nia,cedar,-91.2500,41.8750\nia,jones,-91.2500,42.0000\nia,jones,-91.2500,42.1250\nia,jones,-91.2500,42.2500\nia,delaware,-91.2500,42.3750\nia,delaware,-91.2500,42.5000\nia,delaware,-91.2500,42.6250\nia,clayton,-91.2500,42.7500\nia,clayton,-91.2500,42.8750\nia,clayton,-91.2500,43.0000\nia,allamakee,-91.2500,43.1250\nia,allamakee,-91.2500,43.2500\nia,allamakee,-91.2500,43.3750\nia,allamakee,-91.2500,43.5000\nwi,vernon,-91.2500,43.6250\nwi,la crosse,-91.2500,43.7500\nwi,la crosse,-91.2500,43.8750\nwi,la crosse,-91.2500,44.0000\nwi,trempealeau,-91.2500,44.1250\nwi,trempealeau,-91.2500,44.2500\nwi,trempealeau,-91.2500,44.3750\nwi,trempealeau,-91.2500,44.5000\nwi,eau claire,-91.2500,44.6250\nwi,eau claire,-91.2500,44.7500\nwi,chippewa,-91.2500,44.8750\nwi,chippewa,-91.2500,45.0000\nwi,chippewa,-91.2500,45.1250\nwi,chippewa,-91.2500,45.2500\nwi,rusk,-91.2500,45.3750\nwi,rusk,-91.2500,45.5000\nwi,rusk,-91.2500,45.6250\nwi,sawyer,-91.2500,45.7500\nwi,sawyer,-91.2500,45.8750\nwi,sawyer,-91.2500,46.0000\nwi,sawyer,-91.2500,46.1250\nwi,bayfield,-91.2500,46.2500\nwi,bayfield,-91.2500,46.3750\nwi,bayfield,-91.2500,46.5000\nwi,bayfield,-91.2500,46.6250\nwi,bayfield,-91.2500,46.7500\nmn,lake,-91.2500,47.3750\nmn,lake,-91.2500,47.5000\nmn,lake,-91.2500,47.6250\nmn,lake,-91.2500,47.7500\nmn,lake,-91.2500,47.8750\nmn,lake,-91.2500,48.0000\nar,lawrence,-91.1250,36.0000\nar,lawrence,-91.1250,36.1250\nar,randolph,-91.1250,36.2500\nar,randolph,-91.1250,36.3750\nmo,ripley,-91.1250,36.5000\nmo,oregon,-91.1250,36.6250\nmo,oregon,-91.1250,36.7500\nmo,carter,-91.1250,36.8750\nmo,carter,-91.1250,37.0000\nmo,shannon,-91.1250,37.1250\nmo,shannon,-91.1250,37.2500\nmo,reynolds,-91.1250,37.3750\nmo,reynolds,-91.1250,37.5000\nmo,iron,-91.1250,37.6250\nmo,crawford,-91.1250,37.7500\nmo,crawford,-91.1250,37.8750\nmo,crawford,-91.1250,38.0000\nmo,crawford,-91.1250,38.1250\nmo,franklin,-91.1250,38.2500\nmo,franklin,-91.1250,38.3750\nmo,franklin,-91.1250,38.5000\nmo,warren,-91.1250,38.6250\nmo,warren,-91.1250,38.7500\nmo,warren,-91.1250,38.8750\nmo,lincoln,-91.1250,39.0000\nmo,lincoln,-91.1250,39.1250\nmo,pike,-91.1250,39.2500\nmo,pike,-91.1250,39.3750\nmo,pike,-91.1250,39.5000\nil,pike,-91.1250,39.6250\nil,pike,-91.1250,39.7500\nil,adams,-91.1250,39.8750\nil,adams,-91.1250,40.0000\nil,adams,-91.1250,40.1250\nil,hancock,-91.1250,40.2500\nil,hancock,-91.1250,40.3750\nil,hancock,-91.1250,40.5000\nil,hancock,-91.1250,40.6250\nia,des moines,-91.1250,40.7500\nia,des moines,-91.1250,40.8750\nia,des moines,-91.1250,41.0000\nia,louisa,-91.1250,41.1250\nia,louisa,-91.1250,41.2500\nia,muscatine,-91.1250,41.3750\nia,muscatine,-91.1250,41.5000\nia,cedar,-91.1250,41.6250\nia,cedar,-91.1250,41.7500\nia,cedar,-91.1250,41.8750\nia,jones,-91.1250,42.0000\nia,jones,-91.1250,42.1250\nia,jones,-91.1250,42.2500\nia,dubuque,-91.1250,42.3750\nia,dubuque,-91.1250,42.5000\nia,dubuque,-91.1250,42.6250\nia,clayton,-91.1250,42.7500\nia,clayton,-91.1250,42.8750\nwi,crawford,-91.1250,43.0000\nwi,crawford,-91.1250,43.1250\nia,allamakee,-91.1250,43.2500\nwi,crawford,-91.1250,43.3750\nwi,vernon,-91.1250,43.5000\nwi,vernon,-91.1250,43.6250\nwi,la crosse,-91.1250,43.7500\nwi,la crosse,-91.1250,43.8750\nwi,la crosse,-91.1250,44.0000\nwi,jackson,-91.1250,44.1250\nwi,jackson,-91.1250,44.2500\nwi,jackson,-91.1250,44.3750\nwi,jackson,-91.1250,44.5000\nwi,eau claire,-91.1250,44.6250\nwi,eau claire,-91.1250,44.7500\nwi,chippewa,-91.1250,44.8750\nwi,chippewa,-91.1250,45.0000\nwi,chippewa,-91.1250,45.1250\nwi,chippewa,-91.1250,45.2500\nwi,rusk,-91.1250,45.3750\nwi,rusk,-91.1250,45.5000\nwi,rusk,-91.1250,45.6250\nwi,sawyer,-91.1250,45.7500\nwi,sawyer,-91.1250,45.8750\nwi,sawyer,-91.1250,46.0000\nwi,sawyer,-91.1250,46.1250\nwi,bayfield,-91.1250,46.2500\nwi,bayfield,-91.1250,46.3750\nwi,bayfield,-91.1250,46.5000\nwi,bayfield,-91.1250,46.6250\nwi,bayfield,-91.1250,46.7500\nmn,lake,-91.1250,47.5000\nmn,lake,-91.1250,47.6250\nmn,lake,-91.1250,47.7500\nmn,lake,-91.1250,47.8750\nmn,lake,-91.1250,48.0000\nmn,lake,-91.1250,48.1250\nar,lawrence,-91.0000,36.0000\nar,lawrence,-91.0000,36.1250\nar,randolph,-91.0000,36.2500\nar,randolph,-91.0000,36.3750\nmo,ripley,-91.0000,36.5000\nmo,ripley,-91.0000,36.6250\nmo,ripley,-91.0000,36.7500\nmo,carter,-91.0000,36.8750\nmo,carter,-91.0000,37.0000\nmo,reynolds,-91.0000,37.1250\nmo,reynolds,-91.0000,37.2500\nmo,reynolds,-91.0000,37.3750\nmo,reynolds,-91.0000,37.5000\nmo,iron,-91.0000,37.6250\nmo,washington,-91.0000,37.7500\nmo,washington,-91.0000,37.8750\nmo,washington,-91.0000,38.0000\nmo,washington,-91.0000,38.1250\nmo,franklin,-91.0000,38.2500\nmo,franklin,-91.0000,38.3750\nmo,franklin,-91.0000,38.5000\nmo,warren,-91.0000,38.6250\nmo,warren,-91.0000,38.7500\nmo,lincoln,-91.0000,38.8750\nmo,lincoln,-91.0000,39.0000\nmo,lincoln,-91.0000,39.1250\nmo,pike,-91.0000,39.2500\nmo,pike,-91.0000,39.3750\nil,pike,-91.0000,39.5000\nil,pike,-91.0000,39.6250\nil,pike,-91.0000,39.7500\nil,adams,-91.0000,39.8750\nil,adams,-91.0000,40.0000\nil,adams,-91.0000,40.1250\nil,hancock,-91.0000,40.2500\nil,hancock,-91.0000,40.3750\nil,hancock,-91.0000,40.5000\nil,hancock,-91.0000,40.6250\nil,henderson,-91.0000,40.7500\nil,henderson,-91.0000,40.8750\nia,des moines,-91.0000,41.0000\nia,louisa,-91.0000,41.1250\nil,mercer,-91.0000,41.2500\nil,rock island,-91.0000,41.3750\nia,muscatine,-91.0000,41.5000\nia,cedar,-91.0000,41.6250\nia,cedar,-91.0000,41.7500\nia,cedar,-91.0000,41.8750\nia,jones,-91.0000,42.0000\nia,jones,-91.0000,42.1250\nia,jones,-91.0000,42.2500\nia,dubuque,-91.0000,42.3750\nia,dubuque,-91.0000,42.5000\nia,dubuque,-91.0000,42.6250\nwi,grant,-91.0000,42.7500\nwi,grant,-91.0000,42.8750\nwi,grant,-91.0000,43.0000\nwi,crawford,-91.0000,43.1250\nwi,crawford,-91.0000,43.2500\nwi,crawford,-91.0000,43.3750\nwi,vernon,-91.0000,43.5000\nwi,vernon,-91.0000,43.6250\nwi,la crosse,-91.0000,43.7500\nwi,la crosse,-91.0000,43.8750\nwi,la crosse,-91.0000,44.0000\nwi,jackson,-91.0000,44.1250\nwi,jackson,-91.0000,44.2500\nwi,jackson,-91.0000,44.3750\nwi,jackson,-91.0000,44.5000\nwi,eau claire,-91.0000,44.6250\nwi,eau claire,-91.0000,44.7500\nwi,chippewa,-91.0000,44.8750\nwi,chippewa,-91.0000,45.0000\nwi,chippewa,-91.0000,45.1250\nwi,chippewa,-91.0000,45.2500\nwi,rusk,-91.0000,45.3750\nwi,rusk,-91.0000,45.5000\nwi,rusk,-91.0000,45.6250\nwi,sawyer,-91.0000,45.7500\nwi,sawyer,-91.0000,45.8750\nwi,sawyer,-91.0000,46.0000\nwi,sawyer,-91.0000,46.1250\nwi,bayfield,-91.0000,46.2500\nwi,bayfield,-91.0000,46.3750\nwi,bayfield,-91.0000,46.5000\nwi,bayfield,-91.0000,46.6250\nwi,bayfield,-91.0000,46.7500\nwi,bayfield,-91.0000,46.8750\nmn,cook,-91.0000,47.5000\nmn,cook,-91.0000,47.6250\nmn,cook,-91.0000,47.7500\nmn,cook,-91.0000,47.8750\nmn,cook,-91.0000,48.0000\nmn,cook,-91.0000,48.1250\nar,lawrence,-90.8750,36.0000\nar,lawrence,-90.8750,36.1250\nar,randolph,-90.8750,36.2500\nar,randolph,-90.8750,36.3750\nmo,ripley,-90.8750,36.5000\nmo,ripley,-90.8750,36.6250\nmo,ripley,-90.8750,36.7500\nmo,carter,-90.8750,36.8750\nmo,carter,-90.8750,37.0000\nmo,reynolds,-90.8750,37.1250\nmo,reynolds,-90.8750,37.2500\nmo,reynolds,-90.8750,37.3750\nmo,reynolds,-90.8750,37.5000\nmo,iron,-90.8750,37.6250\nmo,washington,-90.8750,37.7500\nmo,washington,-90.8750,37.8750\nmo,washington,-90.8750,38.0000\nmo,washington,-90.8750,38.1250\nmo,franklin,-90.8750,38.2500\nmo,franklin,-90.8750,38.3750\nmo,franklin,-90.8750,38.5000\nmo,st. charles,-90.8750,38.6250\nmo,st. charles,-90.8750,38.7500\nmo,st. charles,-90.8750,38.8750\nmo,lincoln,-90.8750,39.0000\nmo,lincoln,-90.8750,39.1250\nmo,pike,-90.8750,39.2500\nil,calhoun,-90.8750,39.3750\nil,pike,-90.8750,39.5000\nil,pike,-90.8750,39.6250\nil,pike,-90.8750,39.7500\nil,brown,-90.8750,39.8750\nil,brown,-90.8750,40.0000\nil,schuyler,-90.8750,40.1250\nil,schuyler,-90.8750,40.2500\nil,mcdonough,-90.8750,40.3750\nil,mcdonough,-90.8750,40.5000\nil,mcdonough,-90.8750,40.6250\nil,henderson,-90.8750,40.7500\nil,henderson,-90.8750,40.8750\nil,henderson,-90.8750,41.0000\nil,mercer,-90.8750,41.1250\nil,mercer,-90.8750,41.2500\nil,rock island,-90.8750,41.3750\nia,muscatine,-90.8750,41.5000\nia,scott,-90.8750,41.6250\nia,scott,-90.8750,41.7500\nia,clinton,-90.8750,41.8750\nia,clinton,-90.8750,42.0000\nia,jackson,-90.8750,42.1250\nia,jackson,-90.8750,42.2500\nia,dubuque,-90.8750,42.3750\nia,dubuque,-90.8750,42.5000\nia,dubuque,-90.8750,42.6250\nwi,grant,-90.8750,42.7500\nwi,grant,-90.8750,42.8750\nwi,grant,-90.8750,43.0000\nwi,crawford,-90.8750,43.1250\nwi,crawford,-90.8750,43.2500\nwi,crawford,-90.8750,43.3750\nwi,vernon,-90.8750,43.5000\nwi,vernon,-90.8750,43.6250\nwi,monroe,-90.8750,43.7500\nwi,monroe,-90.8750,43.8750\nwi,monroe,-90.8750,44.0000\nwi,monroe,-90.8750,44.1250\nwi,jackson,-90.8750,44.2500\nwi,jackson,-90.8750,44.3750\nwi,jackson,-90.8750,44.5000\nwi,clark,-90.8750,44.6250\nwi,clark,-90.8750,44.7500\nwi,clark,-90.8750,44.8750\nwi,clark,-90.8750,45.0000\nwi,taylor,-90.8750,45.1250\nwi,taylor,-90.8750,45.2500\nwi,taylor,-90.8750,45.3750\nwi,rusk,-90.8750,45.5000\nwi,rusk,-90.8750,45.6250\nwi,sawyer,-90.8750,45.7500\nwi,sawyer,-90.8750,45.8750\nwi,ashland,-90.8750,46.0000\nwi,ashland,-90.8750,46.1250\nwi,ashland,-90.8750,46.2500\nwi,ashland,-90.8750,46.3750\nwi,ashland,-90.8750,46.5000\nwi,bayfield,-90.8750,46.8750\nmn,cook,-90.8750,47.6250\nmn,cook,-90.8750,47.7500\nmn,cook,-90.8750,47.8750\nmn,cook,-90.8750,48.0000\nmn,cook,-90.8750,48.1250\nar,greene,-90.7500,36.0000\nar,greene,-90.7500,36.1250\nar,greene,-90.7500,36.2500\nar,randolph,-90.7500,36.3750\nmo,ripley,-90.7500,36.5000\nmo,ripley,-90.7500,36.6250\nmo,ripley,-90.7500,36.7500\nmo,carter,-90.7500,36.8750\nmo,carter,-90.7500,37.0000\nmo,wayne,-90.7500,37.1250\nmo,reynolds,-90.7500,37.2500\nmo,iron,-90.7500,37.3750\nmo,iron,-90.7500,37.5000\nmo,iron,-90.7500,37.6250\nmo,washington,-90.7500,37.7500\nmo,washington,-90.7500,37.8750\nmo,washington,-90.7500,38.0000\nmo,washington,-90.7500,38.1250\nmo,jefferson,-90.7500,38.2500\nmo,franklin,-90.7500,38.3750\nmo,franklin,-90.7500,38.5000\nmo,franklin,-90.7500,38.6250\nmo,st. charles,-90.7500,38.7500\nmo,st. charles,-90.7500,38.8750\nmo,lincoln,-90.7500,39.0000\nmo,lincoln,-90.7500,39.1250\nmo,pike,-90.7500,39.2500\nil,calhoun,-90.7500,39.3750\nil,pike,-90.7500,39.5000\nil,pike,-90.7500,39.6250\nil,pike,-90.7500,39.7500\nil,brown,-90.7500,39.8750\nil,brown,-90.7500,40.0000\nil,schuyler,-90.7500,40.1250\nil,schuyler,-90.7500,40.2500\nil,mcdonough,-90.7500,40.3750\nil,mcdonough,-90.7500,40.5000\nil,mcdonough,-90.7500,40.6250\nil,warren,-90.7500,40.7500\nil,warren,-90.7500,40.8750\nil,warren,-90.7500,41.0000\nil,mercer,-90.7500,41.1250\nil,mercer,-90.7500,41.2500\nil,rock island,-90.7500,41.3750\nia,scott,-90.7500,41.5000\nia,scott,-90.7500,41.6250\nia,clinton,-90.7500,41.7500\nia,clinton,-90.7500,41.8750\nia,clinton,-90.7500,42.0000\nia,jackson,-90.7500,42.1250\nia,jackson,-90.7500,42.2500\nia,dubuque,-90.7500,42.3750\nia,dubuque,-90.7500,42.5000\nia,dubuque,-90.7500,42.6250\nwi,grant,-90.7500,42.7500\nwi,grant,-90.7500,42.8750\nwi,grant,-90.7500,43.0000\nwi,crawford,-90.7500,43.1250\nwi,crawford,-90.7500,43.2500\nwi,crawford,-90.7500,43.3750\nwi,vernon,-90.7500,43.5000\nwi,vernon,-90.7500,43.6250\nwi,monroe,-90.7500,43.7500\nwi,monroe,-90.7500,43.8750\nwi,monroe,-90.7500,44.0000\nwi,monroe,-90.7500,44.1250\nwi,jackson,-90.7500,44.2500\nwi,jackson,-90.7500,44.3750\nwi,clark,-90.7500,44.5000\nwi,clark,-90.7500,44.6250\nwi,clark,-90.7500,44.7500\nwi,clark,-90.7500,44.8750\nwi,clark,-90.7500,45.0000\nwi,taylor,-90.7500,45.1250\nwi,taylor,-90.7500,45.2500\nwi,taylor,-90.7500,45.3750\nwi,rusk,-90.7500,45.5000\nwi,rusk,-90.7500,45.6250\nwi,sawyer,-90.7500,45.7500\nwi,sawyer,-90.7500,45.8750\nwi,ashland,-90.7500,46.0000\nwi,ashland,-90.7500,46.1250\nwi,ashland,-90.7500,46.2500\nwi,ashland,-90.7500,46.3750\nwi,ashland,-90.7500,46.5000\nwi,ashland,-90.7500,46.6250\nmn,cook,-90.7500,47.6250\nmn,cook,-90.7500,47.7500\nmn,cook,-90.7500,47.8750\nmn,cook,-90.7500,48.0000\nar,greene,-90.6250,36.0000\nar,greene,-90.6250,36.1250\nar,greene,-90.6250,36.2500\nar,clay,-90.6250,36.3750\nmo,ripley,-90.6250,36.5000\nmo,ripley,-90.6250,36.6250\nmo,butler,-90.6250,36.7500\nmo,butler,-90.6250,36.8750\nmo,wayne,-90.6250,37.0000\nmo,wayne,-90.6250,37.1250\nmo,wayne,-90.6250,37.2500\nmo,iron,-90.6250,37.3750\nmo,iron,-90.6250,37.5000\nmo,iron,-90.6250,37.6250\nmo,st. francois,-90.6250,37.7500\nmo,st. francois,-90.6250,37.8750\nmo,st. francois,-90.6250,38.0000\nmo,jefferson,-90.6250,38.1250\nmo,jefferson,-90.6250,38.2500\nmo,jefferson,-90.6250,38.3750\nmo,st. louis,-90.6250,38.5000\nmo,st. louis,-90.6250,38.6250\nmo,st. charles,-90.6250,38.7500\nmo,st. charles,-90.6250,38.8750\nil,calhoun,-90.6250,39.0000\nil,calhoun,-90.6250,39.1250\nil,calhoun,-90.6250,39.2500\nil,calhoun,-90.6250,39.3750\nil,pike,-90.6250,39.5000\nil,pike,-90.6250,39.6250\nil,pike,-90.6250,39.7500\nil,brown,-90.6250,39.8750\nil,brown,-90.6250,40.0000\nil,schuyler,-90.6250,40.1250\nil,schuyler,-90.6250,40.2500\nil,mcdonough,-90.6250,40.3750\nil,mcdonough,-90.6250,40.5000\nil,mcdonough,-90.6250,40.6250\nil,warren,-90.6250,40.7500\nil,warren,-90.6250,40.8750\nil,warren,-90.6250,41.0000\nil,mercer,-90.6250,41.1250\nil,mercer,-90.6250,41.2500\nil,rock island,-90.6250,41.3750\nia,scott,-90.6250,41.5000\nia,scott,-90.6250,41.6250\nia,scott,-90.6250,41.7500\nia,clinton,-90.6250,41.8750\nia,clinton,-90.6250,42.0000\nia,jackson,-90.6250,42.1250\nia,jackson,-90.6250,42.2500\nia,jackson,-90.6250,42.3750\nil,jo daviess,-90.6250,42.5000\nwi,grant,-90.6250,42.6250\nwi,grant,-90.6250,42.7500\nwi,grant,-90.6250,42.8750\nwi,grant,-90.6250,43.0000\nwi,grant,-90.6250,43.1250\nwi,richland,-90.6250,43.2500\nwi,richland,-90.6250,43.3750\nwi,richland,-90.6250,43.5000\nwi,vernon,-90.6250,43.6250\nwi,monroe,-90.6250,43.7500\nwi,monroe,-90.6250,43.8750\nwi,monroe,-90.6250,44.0000\nwi,monroe,-90.6250,44.1250\nwi,jackson,-90.6250,44.2500\nwi,jackson,-90.6250,44.3750\nwi,clark,-90.6250,44.5000\nwi,clark,-90.6250,44.6250\nwi,clark,-90.6250,44.7500\nwi,clark,-90.6250,44.8750\nwi,clark,-90.6250,45.0000\nwi,taylor,-90.6250,45.1250\nwi,taylor,-90.6250,45.2500\nwi,taylor,-90.6250,45.3750\nwi,price,-90.6250,45.5000\nwi,price,-90.6250,45.6250\nwi,price,-90.6250,45.7500\nwi,price,-90.6250,45.8750\nwi,ashland,-90.6250,46.0000\nwi,ashland,-90.6250,46.1250\nwi,ashland,-90.6250,46.2500\nwi,ashland,-90.6250,46.3750\nwi,ashland,-90.6250,46.5000\nmn,cook,-90.6250,47.7500\nmn,cook,-90.6250,47.8750\nmn,cook,-90.6250,48.0000\nar,greene,-90.5000,36.0000\nar,greene,-90.5000,36.1250\nar,greene,-90.5000,36.2500\nar,clay,-90.5000,36.3750\nmo,butler,-90.5000,36.5000\nmo,butler,-90.5000,36.6250\nmo,butler,-90.5000,36.7500\nmo,butler,-90.5000,36.8750\nmo,wayne,-90.5000,37.0000\nmo,wayne,-90.5000,37.1250\nmo,wayne,-90.5000,37.2500\nmo,madison,-90.5000,37.3750\nmo,madison,-90.5000,37.5000\nmo,madison,-90.5000,37.6250\nmo,st. francois,-90.5000,37.7500\nmo,st. francois,-90.5000,37.8750\nmo,st. francois,-90.5000,38.0000\nmo,jefferson,-90.5000,38.1250\nmo,jefferson,-90.5000,38.2500\nmo,jefferson,-90.5000,38.3750\nmo,jefferson,-90.5000,38.5000\nmo,st. louis,-90.5000,38.6250\nmo,st. louis,-90.5000,38.7500\nmo,st. charles,-90.5000,38.8750\nil,jersey,-90.5000,39.0000\nil,jersey,-90.5000,39.1250\nil,greene,-90.5000,39.2500\nil,greene,-90.5000,39.3750\nil,greene,-90.5000,39.5000\nil,scott,-90.5000,39.6250\nil,scott,-90.5000,39.7500\nil,morgan,-90.5000,39.8750\nil,schuyler,-90.5000,40.0000\nil,schuyler,-90.5000,40.1250\nil,schuyler,-90.5000,40.2500\nil,mcdonough,-90.5000,40.3750\nil,mcdonough,-90.5000,40.5000\nil,mcdonough,-90.5000,40.6250\nil,warren,-90.5000,40.7500\nil,warren,-90.5000,40.8750\nil,warren,-90.5000,41.0000\nil,mercer,-90.5000,41.1250\nil,mercer,-90.5000,41.2500\nil,rock island,-90.5000,41.3750\nil,rock island,-90.5000,41.5000\nia,scott,-90.5000,41.6250\nia,scott,-90.5000,41.7500\nia,clinton,-90.5000,41.8750\nia,clinton,-90.5000,42.0000\nia,jackson,-90.5000,42.1250\nia,jackson,-90.5000,42.2500\nia,jackson,-90.5000,42.3750\nil,jo daviess,-90.5000,42.5000\nwi,grant,-90.5000,42.6250\nwi,grant,-90.5000,42.7500\nwi,grant,-90.5000,42.8750\nwi,grant,-90.5000,43.0000\nwi,grant,-90.5000,43.1250\nwi,richland,-90.5000,43.2500\nwi,richland,-90.5000,43.3750\nwi,richland,-90.5000,43.5000\nwi,vernon,-90.5000,43.6250\nwi,monroe,-90.5000,43.7500\nwi,monroe,-90.5000,43.8750\nwi,monroe,-90.5000,44.0000\nwi,monroe,-90.5000,44.1250\nwi,jackson,-90.5000,44.2500\nwi,jackson,-90.5000,44.3750\nwi,clark,-90.5000,44.5000\nwi,clark,-90.5000,44.6250\nwi,clark,-90.5000,44.7500\nwi,clark,-90.5000,44.8750\nwi,clark,-90.5000,45.0000\nwi,taylor,-90.5000,45.1250\nwi,taylor,-90.5000,45.2500\nwi,taylor,-90.5000,45.3750\nwi,price,-90.5000,45.5000\nwi,price,-90.5000,45.6250\nwi,price,-90.5000,45.7500\nwi,price,-90.5000,45.8750\nwi,ashland,-90.5000,46.0000\nwi,ashland,-90.5000,46.1250\nwi,iron,-90.5000,46.2500\nwi,iron,-90.5000,46.3750\nwi,iron,-90.5000,46.5000\nwi,ashland,-90.5000,46.8750\nmn,cook,-90.5000,47.7500\nmn,cook,-90.5000,47.8750\nmn,cook,-90.5000,48.0000\nar,greene,-90.3750,36.0000\nar,greene,-90.3750,36.1250\nar,greene,-90.3750,36.2500\nar,clay,-90.3750,36.3750\nmo,butler,-90.3750,36.5000\nmo,butler,-90.3750,36.6250\nmo,butler,-90.3750,36.7500\nmo,butler,-90.3750,36.8750\nmo,wayne,-90.3750,37.0000\nmo,wayne,-90.3750,37.1250\nmo,wayne,-90.3750,37.2500\nmo,madison,-90.3750,37.3750\nmo,madison,-90.3750,37.5000\nmo,madison,-90.3750,37.6250\nmo,st. francois,-90.3750,37.7500\nmo,ste. genevieve,-90.3750,37.8750\nmo,st. francois,-90.3750,38.0000\nmo,jefferson,-90.3750,38.1250\nmo,jefferson,-90.3750,38.2500\nmo,jefferson,-90.3750,38.3750\nmo,st. louis,-90.3750,38.5000\nmo,st. louis,-90.3750,38.6250\nmo,st. louis,-90.3750,38.7500\nmo,st. charles,-90.3750,38.8750\nil,jersey,-90.3750,39.0000\nil,jersey,-90.3750,39.1250\nil,greene,-90.3750,39.2500\nil,greene,-90.3750,39.3750\nil,greene,-90.3750,39.5000\nil,scott,-90.3750,39.6250\nil,scott,-90.3750,39.7500\nil,cass,-90.3750,39.8750\nil,cass,-90.3750,40.0000\nil,schuyler,-90.3750,40.1250\nil,fulton,-90.3750,40.2500\nil,fulton,-90.3750,40.3750\nil,fulton,-90.3750,40.5000\nil,fulton,-90.3750,40.6250\nil,knox,-90.3750,40.7500\nil,knox,-90.3750,40.8750\nil,knox,-90.3750,41.0000\nil,knox,-90.3750,41.1250\nil,henry,-90.3750,41.2500\nil,henry,-90.3750,41.3750\nil,rock island,-90.3750,41.5000\nia,scott,-90.3750,41.6250\nia,clinton,-90.3750,41.7500\nia,clinton,-90.3750,41.8750\nia,clinton,-90.3750,42.0000\nia,jackson,-90.3750,42.1250\nil,jo daviess,-90.3750,42.2500\nil,jo daviess,-90.3750,42.3750\nil,jo daviess,-90.3750,42.5000\nwi,lafayette,-90.3750,42.6250\nwi,lafayette,-90.3750,42.7500\nwi,iowa,-90.3750,42.8750\nwi,iowa,-90.3750,43.0000\nwi,iowa,-90.3750,43.1250\nwi,richland,-90.3750,43.2500\nwi,richland,-90.3750,43.3750\nwi,richland,-90.3750,43.5000\nwi,vernon,-90.3750,43.6250\nwi,monroe,-90.3750,43.7500\nwi,monroe,-90.3750,43.8750\nwi,monroe,-90.3750,44.0000\nwi,monroe,-90.3750,44.1250\nwi,jackson,-90.3750,44.2500\nwi,jackson,-90.3750,44.3750\nwi,clark,-90.3750,44.5000\nwi,clark,-90.3750,44.6250\nwi,clark,-90.3750,44.7500\nwi,clark,-90.3750,44.8750\nwi,clark,-90.3750,45.0000\nwi,taylor,-90.3750,45.1250\nwi,taylor,-90.3750,45.2500\nwi,taylor,-90.3750,45.3750\nwi,price,-90.3750,45.5000\nwi,price,-90.3750,45.6250\nwi,price,-90.3750,45.7500\nwi,price,-90.3750,45.8750\nwi,ashland,-90.3750,46.0000\nwi,ashland,-90.3750,46.1250\nwi,iron,-90.3750,46.2500\nwi,iron,-90.3750,46.3750\nwi,iron,-90.3750,46.5000\nmn,cook,-90.3750,47.7500\nmn,cook,-90.3750,47.8750\nmn,cook,-90.3750,48.0000\nmo,dunklin,-90.2500,36.0000\nmo,dunklin,-90.2500,36.1250\nar,clay,-90.2500,36.2500\nar,clay,-90.2500,36.3750\nmo,butler,-90.2500,36.5000\nmo,butler,-90.2500,36.6250\nmo,butler,-90.2500,36.7500\nmo,stoddard,-90.2500,36.8750\nmo,wayne,-90.2500,37.0000\nmo,wayne,-90.2500,37.1250\nmo,wayne,-90.2500,37.2500\nmo,madison,-90.2500,37.3750\nmo,madison,-90.2500,37.5000\nmo,madison,-90.2500,37.6250\nmo,ste. genevieve,-90.2500,37.7500\nmo,ste. genevieve,-90.2500,37.8750\nmo,ste. genevieve,-90.2500,38.0000\nmo,ste. genevieve,-90.2500,38.1250\nil,monroe,-90.2500,38.2500\nil,monroe,-90.2500,38.3750\nil,monroe,-90.2500,38.5000\nmo,st. louis city,-90.2500,38.6250\nmo,st. louis,-90.2500,38.7500\nmo,st. charles,-90.2500,38.8750\nil,jersey,-90.2500,39.0000\nil,jersey,-90.2500,39.1250\nil,greene,-90.2500,39.2500\nil,greene,-90.2500,39.3750\nil,greene,-90.2500,39.5000\nil,morgan,-90.2500,39.6250\nil,morgan,-90.2500,39.7500\nil,cass,-90.2500,39.8750\nil,cass,-90.2500,40.0000\nil,mason,-90.2500,40.1250\nil,fulton,-90.2500,40.2500\nil,fulton,-90.2500,40.3750\nil,fulton,-90.2500,40.5000\nil,fulton,-90.2500,40.6250\nil,knox,-90.2500,40.7500\nil,knox,-90.2500,40.8750\nil,knox,-90.2500,41.0000\nil,knox,-90.2500,41.1250\nil,henry,-90.2500,41.2500\nil,henry,-90.2500,41.3750\nil,henry,-90.2500,41.5000\nil,rock island,-90.2500,41.6250\nil,rock island,-90.2500,41.7500\nia,clinton,-90.2500,41.8750\nia,clinton,-90.2500,42.0000\nia,jackson,-90.2500,42.1250\nil,jo daviess,-90.2500,42.2500\nil,jo daviess,-90.2500,42.3750\nil,jo daviess,-90.2500,42.5000\nwi,lafayette,-90.2500,42.6250\nwi,lafayette,-90.2500,42.7500\nwi,iowa,-90.2500,42.8750\nwi,iowa,-90.2500,43.0000\nwi,iowa,-90.2500,43.1250\nwi,richland,-90.2500,43.2500\nwi,richland,-90.2500,43.3750\nwi,richland,-90.2500,43.5000\nwi,sauk,-90.2500,43.6250\nwi,juneau,-90.2500,43.7500\nwi,juneau,-90.2500,43.8750\nwi,juneau,-90.2500,44.0000\nwi,juneau,-90.2500,44.1250\nwi,wood,-90.2500,44.2500\nwi,wood,-90.2500,44.3750\nwi,wood,-90.2500,44.5000\nwi,wood,-90.2500,44.6250\nwi,marathon,-90.2500,44.7500\nwi,marathon,-90.2500,44.8750\nwi,marathon,-90.2500,45.0000\nwi,taylor,-90.2500,45.1250\nwi,taylor,-90.2500,45.2500\nwi,taylor,-90.2500,45.3750\nwi,price,-90.2500,45.5000\nwi,price,-90.2500,45.6250\nwi,price,-90.2500,45.7500\nwi,price,-90.2500,45.8750\nwi,iron,-90.2500,46.0000\nwi,iron,-90.2500,46.1250\nwi,iron,-90.2500,46.2500\nwi,iron,-90.2500,46.3750\nwi,iron,-90.2500,46.5000\nmn,cook,-90.2500,47.8750\nmn,cook,-90.2500,48.0000\nmo,dunklin,-90.1250,36.0000\nmo,dunklin,-90.1250,36.1250\nar,clay,-90.1250,36.2500\nar,clay,-90.1250,36.3750\nmo,dunklin,-90.1250,36.5000\nmo,dunklin,-90.1250,36.6250\nmo,stoddard,-90.1250,36.7500\nmo,stoddard,-90.1250,36.8750\nmo,stoddard,-90.1250,37.0000\nmo,bollinger,-90.1250,37.1250\nmo,bollinger,-90.1250,37.2500\nmo,bollinger,-90.1250,37.3750\nmo,bollinger,-90.1250,37.5000\nmo,perry,-90.1250,37.6250\nmo,ste. genevieve,-90.1250,37.7500\nmo,ste. genevieve,-90.1250,37.8750\nmo,ste. genevieve,-90.1250,38.0000\nil,monroe,-90.1250,38.1250\nil,monroe,-90.1250,38.2500\nil,monroe,-90.1250,38.3750\nil,st. clair,-90.1250,38.5000\nil,st. clair,-90.1250,38.6250\nil,madison,-90.1250,38.7500\nil,madison,-90.1250,38.8750\nil,macoupin,-90.1250,39.0000\nil,macoupin,-90.1250,39.1250\nil,macoupin,-90.1250,39.2500\nil,macoupin,-90.1250,39.3750\nil,macoupin,-90.1250,39.5000\nil,morgan,-90.1250,39.6250\nil,morgan,-90.1250,39.7500\nil,cass,-90.1250,39.8750\nil,cass,-90.1250,40.0000\nil,mason,-90.1250,40.1250\nil,fulton,-90.1250,40.2500\nil,fulton,-90.1250,40.3750\nil,fulton,-90.1250,40.5000\nil,fulton,-90.1250,40.6250\nil,knox,-90.1250,40.7500\nil,knox,-90.1250,40.8750\nil,knox,-90.1250,41.0000\nil,knox,-90.1250,41.1250\nil,henry,-90.1250,41.2500\nil,henry,-90.1250,41.3750\nil,henry,-90.1250,41.5000\nil,whiteside,-90.1250,41.6250\nil,whiteside,-90.1250,41.7500\nil,whiteside,-90.1250,41.8750\nil,carroll,-90.1250,42.0000\nil,carroll,-90.1250,42.1250\nil,jo daviess,-90.1250,42.2500\nil,jo daviess,-90.1250,42.3750\nil,jo daviess,-90.1250,42.5000\nwi,lafayette,-90.1250,42.6250\nwi,lafayette,-90.1250,42.7500\nwi,iowa,-90.1250,42.8750\nwi,iowa,-90.1250,43.0000\nwi,iowa,-90.1250,43.1250\nwi,sauk,-90.1250,43.2500\nwi,sauk,-90.1250,43.3750\nwi,sauk,-90.1250,43.5000\nwi,sauk,-90.1250,43.6250\nwi,juneau,-90.1250,43.7500\nwi,juneau,-90.1250,43.8750\nwi,juneau,-90.1250,44.0000\nwi,juneau,-90.1250,44.1250\nwi,wood,-90.1250,44.2500\nwi,wood,-90.1250,44.3750\nwi,wood,-90.1250,44.5000\nwi,wood,-90.1250,44.6250\nwi,marathon,-90.1250,44.7500\nwi,marathon,-90.1250,44.8750\nwi,marathon,-90.1250,45.0000\nwi,taylor,-90.1250,45.1250\nwi,taylor,-90.1250,45.2500\nwi,taylor,-90.1250,45.3750\nwi,price,-90.1250,45.5000\nwi,price,-90.1250,45.6250\nwi,price,-90.1250,45.7500\nwi,price,-90.1250,45.8750\nwi,iron,-90.1250,46.0000\nwi,iron,-90.1250,46.1250\nwi,iron,-90.1250,46.2500\nmi,gogebic,-90.1250,46.3750\nmi,gogebic,-90.1250,46.5000\nmi,gogebic,-90.1250,46.6250\nmn,cook,-90.1250,47.8750\nmn,cook,-90.1250,48.0000\nmo,dunklin,-90.0000,36.0000\nmo,dunklin,-90.0000,36.1250\nmo,dunklin,-90.0000,36.2500\nmo,dunklin,-90.0000,36.3750\nmo,dunklin,-90.0000,36.5000\nmo,dunklin,-90.0000,36.6250\nmo,stoddard,-90.0000,36.7500\nmo,stoddard,-90.0000,36.8750\nmo,stoddard,-90.0000,37.0000\nmo,bollinger,-90.0000,37.1250\nmo,bollinger,-90.0000,37.2500\nmo,bollinger,-90.0000,37.3750\nmo,bollinger,-90.0000,37.5000\nmo,perry,-90.0000,37.6250\nmo,perry,-90.0000,37.7500\nmo,ste. genevieve,-90.0000,37.8750\nil,randolph,-90.0000,38.0000\nil,randolph,-90.0000,38.1250\nil,monroe,-90.0000,38.2500\nil,st. clair,-90.0000,38.3750\nil,st. clair,-90.0000,38.5000\nil,st. clair,-90.0000,38.6250\nil,madison,-90.0000,38.7500\nil,madison,-90.0000,38.8750\nil,macoupin,-90.0000,39.0000\nil,macoupin,-90.0000,39.1250\nil,macoupin,-90.0000,39.2500\nil,macoupin,-90.0000,39.3750\nil,macoupin,-90.0000,39.5000\nil,morgan,-90.0000,39.6250\nil,morgan,-90.0000,39.7500\nil,cass,-90.0000,39.8750\nil,cass,-90.0000,40.0000\nil,mason,-90.0000,40.1250\nil,mason,-90.0000,40.2500\nil,mason,-90.0000,40.3750\nil,fulton,-90.0000,40.5000\nil,fulton,-90.0000,40.6250\nil,knox,-90.0000,40.7500\nil,knox,-90.0000,40.8750\nil,knox,-90.0000,41.0000\nil,knox,-90.0000,41.1250\nil,henry,-90.0000,41.2500\nil,henry,-90.0000,41.3750\nil,henry,-90.0000,41.5000\nil,whiteside,-90.0000,41.6250\nil,whiteside,-90.0000,41.7500\nil,whiteside,-90.0000,41.8750\nil,carroll,-90.0000,42.0000\nil,carroll,-90.0000,42.1250\nil,jo daviess,-90.0000,42.2500\nil,jo daviess,-90.0000,42.3750\nil,jo daviess,-90.0000,42.5000\nwi,lafayette,-90.0000,42.6250\nwi,lafayette,-90.0000,42.7500\nwi,iowa,-90.0000,42.8750\nwi,iowa,-90.0000,43.0000\nwi,iowa,-90.0000,43.1250\nwi,sauk,-90.0000,43.2500\nwi,sauk,-90.0000,43.3750\nwi,sauk,-90.0000,43.5000\nwi,sauk,-90.0000,43.6250\nwi,juneau,-90.0000,43.7500\nwi,juneau,-90.0000,43.8750\nwi,juneau,-90.0000,44.0000\nwi,juneau,-90.0000,44.1250\nwi,wood,-90.0000,44.2500\nwi,wood,-90.0000,44.3750\nwi,wood,-90.0000,44.5000\nwi,wood,-90.0000,44.6250\nwi,marathon,-90.0000,44.7500\nwi,marathon,-90.0000,44.8750\nwi,marathon,-90.0000,45.0000\nwi,lincoln,-90.0000,45.1250\nwi,lincoln,-90.0000,45.2500\nwi,lincoln,-90.0000,45.3750\nwi,lincoln,-90.0000,45.5000\nwi,oneida,-90.0000,45.6250\nwi,oneida,-90.0000,45.7500\nwi,oneida,-90.0000,45.8750\nwi,iron,-90.0000,46.0000\nwi,iron,-90.0000,46.1250\nwi,iron,-90.0000,46.2500\nmi,gogebic,-90.0000,46.3750\nmi,gogebic,-90.0000,46.5000\nmi,gogebic,-90.0000,46.6250\nmn,cook,-90.0000,47.8750\nmn,cook,-90.0000,48.0000\nmo,pemiscot,-89.8750,36.0000\nmo,pemiscot,-89.8750,36.1250\nmo,pemiscot,-89.8750,36.2500\nmo,pemiscot,-89.8750,36.3750\nmo,new madrid,-89.8750,36.5000\nmo,new madrid,-89.8750,36.6250\nmo,stoddard,-89.8750,36.7500\nmo,stoddard,-89.8750,36.8750\nmo,stoddard,-89.8750,37.0000\nmo,stoddard,-89.8750,37.1250\nmo,bollinger,-89.8750,37.2500\nmo,bollinger,-89.8750,37.3750\nmo,bollinger,-89.8750,37.5000\nmo,perry,-89.8750,37.6250\nmo,perry,-89.8750,37.7500\nmo,perry,-89.8750,37.8750\nil,randolph,-89.8750,38.0000\nil,randolph,-89.8750,38.1250\nil,st. clair,-89.8750,38.2500\nil,st. clair,-89.8750,38.3750\nil,st. clair,-89.8750,38.5000\nil,st. clair,-89.8750,38.6250\nil,madison,-89.8750,38.7500\nil,madison,-89.8750,38.8750\nil,macoupin,-89.8750,39.0000\nil,macoupin,-89.8750,39.1250\nil,macoupin,-89.8750,39.2500\nil,macoupin,-89.8750,39.3750\nil,macoupin,-89.8750,39.5000\nil,sangamon,-89.8750,39.6250\nil,sangamon,-89.8750,39.7500\nil,sangamon,-89.8750,39.8750\nil,menard,-89.8750,40.0000\nil,menard,-89.8750,40.1250\nil,mason,-89.8750,40.2500\nil,mason,-89.8750,40.3750\nil,tazewell,-89.8750,40.5000\nil,peoria,-89.8750,40.6250\nil,peoria,-89.8750,40.7500\nil,peoria,-89.8750,40.8750\nil,stark,-89.8750,41.0000\nil,stark,-89.8750,41.1250\nil,henry,-89.8750,41.2500\nil,henry,-89.8750,41.3750\nil,henry,-89.8750,41.5000\nil,whiteside,-89.8750,41.6250\nil,whiteside,-89.8750,41.7500\nil,whiteside,-89.8750,41.8750\nil,carroll,-89.8750,42.0000\nil,carroll,-89.8750,42.1250\nil,stephenson,-89.8750,42.2500\nil,stephenson,-89.8750,42.3750\nil,stephenson,-89.8750,42.5000\nwi,lafayette,-89.8750,42.6250\nwi,lafayette,-89.8750,42.7500\nwi,iowa,-89.8750,42.8750\nwi,iowa,-89.8750,43.0000\nwi,iowa,-89.8750,43.1250\nwi,sauk,-89.8750,43.2500\nwi,sauk,-89.8750,43.3750\nwi,sauk,-89.8750,43.5000\nwi,sauk,-89.8750,43.6250\nwi,juneau,-89.8750,43.7500\nwi,adams,-89.8750,43.8750\nwi,adams,-89.8750,44.0000\nwi,adams,-89.8750,44.1250\nwi,wood,-89.8750,44.2500\nwi,wood,-89.8750,44.3750\nwi,wood,-89.8750,44.5000\nwi,wood,-89.8750,44.6250\nwi,marathon,-89.8750,44.7500\nwi,marathon,-89.8750,44.8750\nwi,marathon,-89.8750,45.0000\nwi,lincoln,-89.8750,45.1250\nwi,lincoln,-89.8750,45.2500\nwi,lincoln,-89.8750,45.3750\nwi,lincoln,-89.8750,45.5000\nwi,oneida,-89.8750,45.6250\nwi,oneida,-89.8750,45.7500\nwi,oneida,-89.8750,45.8750\nwi,vilas,-89.8750,46.0000\nwi,vilas,-89.8750,46.1250\nwi,vilas,-89.8750,46.2500\nmi,gogebic,-89.8750,46.3750\nmi,gogebic,-89.8750,46.5000\nmi,gogebic,-89.8750,46.6250\nmi,gogebic,-89.8750,46.7500\nmn,cook,-89.8750,47.8750\nar,mississippi,-89.7500,36.0000\nmo,pemiscot,-89.7500,36.1250\nmo,pemiscot,-89.7500,36.2500\nmo,pemiscot,-89.7500,36.3750\nmo,new madrid,-89.7500,36.5000\nmo,new madrid,-89.7500,36.6250\nmo,stoddard,-89.7500,36.7500\nmo,stoddard,-89.7500,36.8750\nmo,stoddard,-89.7500,37.0000\nmo,scott,-89.7500,37.1250\nmo,cape girardeau,-89.7500,37.2500\nmo,cape girardeau,-89.7500,37.3750\nmo,cape girardeau,-89.7500,37.5000\nmo,perry,-89.7500,37.6250\nmo,perry,-89.7500,37.7500\nil,randolph,-89.7500,37.8750\nil,randolph,-89.7500,38.0000\nil,randolph,-89.7500,38.1250\nil,st. clair,-89.7500,38.2500\nil,st. clair,-89.7500,38.3750\nil,st. clair,-89.7500,38.5000\nil,st. clair,-89.7500,38.6250\nil,madison,-89.7500,38.7500\nil,madison,-89.7500,38.8750\nil,macoupin,-89.7500,39.0000\nil,macoupin,-89.7500,39.1250\nil,macoupin,-89.7500,39.2500\nil,macoupin,-89.7500,39.3750\nil,macoupin,-89.7500,39.5000\nil,sangamon,-89.7500,39.6250\nil,sangamon,-89.7500,39.7500\nil,sangamon,-89.7500,39.8750\nil,menard,-89.7500,40.0000\nil,menard,-89.7500,40.1250\nil,mason,-89.7500,40.2500\nil,mason,-89.7500,40.3750\nil,tazewell,-89.7500,40.5000\nil,peoria,-89.7500,40.6250\nil,peoria,-89.7500,40.7500\nil,peoria,-89.7500,40.8750\nil,stark,-89.7500,41.0000\nil,stark,-89.7500,41.1250\nil,bureau,-89.7500,41.2500\nil,bureau,-89.7500,41.3750\nil,bureau,-89.7500,41.5000\nil,whiteside,-89.7500,41.6250\nil,whiteside,-89.7500,41.7500\nil,whiteside,-89.7500,41.8750\nil,carroll,-89.7500,42.0000\nil,carroll,-89.7500,42.1250\nil,stephenson,-89.7500,42.2500\nil,stephenson,-89.7500,42.3750\nil,stephenson,-89.7500,42.5000\nwi,green,-89.7500,42.6250\nwi,green,-89.7500,42.7500\nwi,dane,-89.7500,42.8750\nwi,dane,-89.7500,43.0000\nwi,dane,-89.7500,43.1250\nwi,sauk,-89.7500,43.2500\nwi,sauk,-89.7500,43.3750\nwi,sauk,-89.7500,43.5000\nwi,columbia,-89.7500,43.6250\nwi,adams,-89.7500,43.7500\nwi,adams,-89.7500,43.8750\nwi,adams,-89.7500,44.0000\nwi,adams,-89.7500,44.1250\nwi,wood,-89.7500,44.2500\nwi,wood,-89.7500,44.3750\nwi,wood,-89.7500,44.5000\nwi,portage,-89.7500,44.6250\nwi,marathon,-89.7500,44.7500\nwi,marathon,-89.7500,44.8750\nwi,marathon,-89.7500,45.0000\nwi,lincoln,-89.7500,45.1250\nwi,lincoln,-89.7500,45.2500\nwi,lincoln,-89.7500,45.3750\nwi,lincoln,-89.7500,45.5000\nwi,oneida,-89.7500,45.6250\nwi,oneida,-89.7500,45.7500\nwi,oneida,-89.7500,45.8750\nwi,vilas,-89.7500,46.0000\nwi,vilas,-89.7500,46.1250\nwi,vilas,-89.7500,46.2500\nmi,gogebic,-89.7500,46.3750\nmi,gogebic,-89.7500,46.5000\nmi,ontonagon,-89.7500,46.6250\nmi,ontonagon,-89.7500,46.7500\nmn,cook,-89.7500,48.0000\ntn,dyer,-89.6250,36.0000\nmo,pemiscot,-89.6250,36.1250\nmo,pemiscot,-89.6250,36.2500\nmo,pemiscot,-89.6250,36.3750\nmo,new madrid,-89.6250,36.5000\nmo,new madrid,-89.6250,36.6250\nmo,new madrid,-89.6250,36.7500\nmo,scott,-89.6250,36.8750\nmo,scott,-89.6250,37.0000\nmo,scott,-89.6250,37.1250\nmo,cape girardeau,-89.6250,37.2500\nmo,cape girardeau,-89.6250,37.3750\nmo,cape girardeau,-89.6250,37.5000\nmo,perry,-89.6250,37.6250\nil,jackson,-89.6250,37.7500\nil,jackson,-89.6250,37.8750\nil,randolph,-89.6250,38.0000\nil,randolph,-89.6250,38.1250\nil,washington,-89.6250,38.2500\nil,washington,-89.6250,38.3750\nil,clinton,-89.6250,38.5000\nil,clinton,-89.6250,38.6250\nil,madison,-89.6250,38.7500\nil,bond,-89.6250,38.8750\nil,montgomery,-89.6250,39.0000\nil,montgomery,-89.6250,39.1250\nil,montgomery,-89.6250,39.2500\nil,montgomery,-89.6250,39.3750\nil,montgomery,-89.6250,39.5000\nil,sangamon,-89.6250,39.6250\nil,sangamon,-89.6250,39.7500\nil,sangamon,-89.6250,39.8750\nil,menard,-89.6250,40.0000\nil,menard,-89.6250,40.1250\nil,mason,-89.6250,40.2500\nil,tazewell,-89.6250,40.3750\nil,tazewell,-89.6250,40.5000\nil,tazewell,-89.6250,40.6250\nil,peoria,-89.6250,40.7500\nil,peoria,-89.6250,40.8750\nil,marshall,-89.6250,41.0000\nil,marshall,-89.6250,41.1250\nil,bureau,-89.6250,41.2500\nil,bureau,-89.6250,41.3750\nil,bureau,-89.6250,41.5000\nil,lee,-89.6250,41.6250\nil,lee,-89.6250,41.7500\nil,lee,-89.6250,41.8750\nil,ogle,-89.6250,42.0000\nil,ogle,-89.6250,42.1250\nil,stephenson,-89.6250,42.2500\nil,stephenson,-89.6250,42.3750\nil,stephenson,-89.6250,42.5000\nwi,green,-89.6250,42.6250\nwi,green,-89.6250,42.7500\nwi,dane,-89.6250,42.8750\nwi,dane,-89.6250,43.0000\nwi,dane,-89.6250,43.1250\nwi,dane,-89.6250,43.2500\nwi,sauk,-89.6250,43.3750\nwi,sauk,-89.6250,43.5000\nwi,columbia,-89.6250,43.6250\nwi,adams,-89.6250,43.7500\nwi,adams,-89.6250,43.8750\nwi,adams,-89.6250,44.0000\nwi,adams,-89.6250,44.1250\nwi,portage,-89.6250,44.2500\nwi,portage,-89.6250,44.3750\nwi,portage,-89.6250,44.5000\nwi,portage,-89.6250,44.6250\nwi,marathon,-89.6250,44.7500\nwi,marathon,-89.6250,44.8750\nwi,marathon,-89.6250,45.0000\nwi,lincoln,-89.6250,45.1250\nwi,lincoln,-89.6250,45.2500\nwi,lincoln,-89.6250,45.3750\nwi,lincoln,-89.6250,45.5000\nwi,oneida,-89.6250,45.6250\nwi,oneida,-89.6250,45.7500\nwi,oneida,-89.6250,45.8750\nwi,vilas,-89.6250,46.0000\nwi,vilas,-89.6250,46.1250\nmi,gogebic,-89.6250,46.2500\nmi,gogebic,-89.6250,46.3750\nmi,gogebic,-89.6250,46.5000\nmi,ontonagon,-89.6250,46.6250\nmi,ontonagon,-89.6250,46.7500\nmn,cook,-89.6250,48.0000\ntn,dyer,-89.5000,36.0000\ntn,dyer,-89.5000,36.1250\ntn,lake,-89.5000,36.2500\ntn,lake,-89.5000,36.3750\nky,fulton,-89.5000,36.5000\nmo,new madrid,-89.5000,36.6250\nmo,new madrid,-89.5000,36.7500\nmo,mississippi,-89.5000,36.8750\nmo,scott,-89.5000,37.0000\nmo,scott,-89.5000,37.1250\nmo,cape girardeau,-89.5000,37.2500\nmo,cape girardeau,-89.5000,37.3750\nmo,cape girardeau,-89.5000,37.5000\nil,jackson,-89.5000,37.6250\nil,jackson,-89.5000,37.7500\nil,jackson,-89.5000,37.8750\nil,perry,-89.5000,38.0000\nil,perry,-89.5000,38.1250\nil,washington,-89.5000,38.2500\nil,washington,-89.5000,38.3750\nil,clinton,-89.5000,38.5000\nil,clinton,-89.5000,38.6250\nil,bond,-89.5000,38.7500\nil,bond,-89.5000,38.8750\nil,bond,-89.5000,39.0000\nil,montgomery,-89.5000,39.1250\nil,montgomery,-89.5000,39.2500\nil,christian,-89.5000,39.3750\nil,christian,-89.5000,39.5000\nil,christian,-89.5000,39.6250\nil,sangamon,-89.5000,39.7500\nil,sangamon,-89.5000,39.8750\nil,logan,-89.5000,40.0000\nil,logan,-89.5000,40.1250\nil,logan,-89.5000,40.2500\nil,tazewell,-89.5000,40.3750\nil,tazewell,-89.5000,40.5000\nil,tazewell,-89.5000,40.6250\nil,woodford,-89.5000,40.7500\nil,peoria,-89.5000,40.8750\nil,marshall,-89.5000,41.0000\nil,marshall,-89.5000,41.1250\nil,bureau,-89.5000,41.2500\nil,bureau,-89.5000,41.3750\nil,bureau,-89.5000,41.5000\nil,lee,-89.5000,41.6250\nil,lee,-89.5000,41.7500\nil,lee,-89.5000,41.8750\nil,ogle,-89.5000,42.0000\nil,ogle,-89.5000,42.1250\nil,stephenson,-89.5000,42.2500\nil,stephenson,-89.5000,42.3750\nil,stephenson,-89.5000,42.5000\nwi,green,-89.5000,42.6250\nwi,green,-89.5000,42.7500\nwi,dane,-89.5000,42.8750\nwi,dane,-89.5000,43.0000\nwi,dane,-89.5000,43.1250\nwi,dane,-89.5000,43.2500\nwi,columbia,-89.5000,43.3750\nwi,columbia,-89.5000,43.5000\nwi,columbia,-89.5000,43.6250\nwi,marquette,-89.5000,43.7500\nwi,marquette,-89.5000,43.8750\nwi,waushara,-89.5000,44.0000\nwi,waushara,-89.5000,44.1250\nwi,portage,-89.5000,44.2500\nwi,portage,-89.5000,44.3750\nwi,portage,-89.5000,44.5000\nwi,portage,-89.5000,44.6250\nwi,marathon,-89.5000,44.7500\nwi,marathon,-89.5000,44.8750\nwi,marathon,-89.5000,45.0000\nwi,lincoln,-89.5000,45.1250\nwi,lincoln,-89.5000,45.2500\nwi,lincoln,-89.5000,45.3750\nwi,lincoln,-89.5000,45.5000\nwi,oneida,-89.5000,45.6250\nwi,oneida,-89.5000,45.7500\nwi,oneida,-89.5000,45.8750\nwi,vilas,-89.5000,46.0000\nwi,vilas,-89.5000,46.1250\nmi,gogebic,-89.5000,46.2500\nmi,gogebic,-89.5000,46.3750\nmi,gogebic,-89.5000,46.5000\nmi,ontonagon,-89.5000,46.6250\nmi,ontonagon,-89.5000,46.7500\ntn,dyer,-89.3750,36.0000\ntn,dyer,-89.3750,36.1250\ntn,obion,-89.3750,36.2500\ntn,obion,-89.3750,36.3750\ntn,lake,-89.3750,36.5000\nmo,new madrid,-89.3750,36.6250\nmo,mississippi,-89.3750,36.7500\nmo,mississippi,-89.3750,36.8750\nmo,scott,-89.3750,37.0000\nil,alexander,-89.3750,37.1250\nil,alexander,-89.3750,37.2500\nil,union,-89.3750,37.3750\nil,union,-89.3750,37.5000\nil,jackson,-89.3750,37.6250\nil,jackson,-89.3750,37.7500\nil,jackson,-89.3750,37.8750\nil,perry,-89.3750,38.0000\nil,perry,-89.3750,38.1250\nil,washington,-89.3750,38.2500\nil,washington,-89.3750,38.3750\nil,clinton,-89.3750,38.5000\nil,clinton,-89.3750,38.6250\nil,bond,-89.3750,38.7500\nil,bond,-89.3750,38.8750\nil,bond,-89.3750,39.0000\nil,montgomery,-89.3750,39.1250\nil,montgomery,-89.3750,39.2500\nil,christian,-89.3750,39.3750\nil,christian,-89.3750,39.5000\nil,christian,-89.3750,39.6250\nil,christian,-89.3750,39.7500\nil,sangamon,-89.3750,39.8750\nil,logan,-89.3750,40.0000\nil,logan,-89.3750,40.1250\nil,logan,-89.3750,40.2500\nil,tazewell,-89.3750,40.3750\nil,tazewell,-89.3750,40.5000\nil,tazewell,-89.3750,40.6250\nil,woodford,-89.3750,40.7500\nil,woodford,-89.3750,40.8750\nil,marshall,-89.3750,41.0000\nil,marshall,-89.3750,41.1250\nil,bureau,-89.3750,41.2500\nil,bureau,-89.3750,41.3750\nil,bureau,-89.3750,41.5000\nil,lee,-89.3750,41.6250\nil,lee,-89.3750,41.7500\nil,lee,-89.3750,41.8750\nil,ogle,-89.3750,42.0000\nil,ogle,-89.3750,42.1250\nil,winnebago,-89.3750,42.2500\nil,winnebago,-89.3750,42.3750\nil,winnebago,-89.3750,42.5000\nwi,green,-89.3750,42.6250\nwi,green,-89.3750,42.7500\nwi,dane,-89.3750,42.8750\nwi,dane,-89.3750,43.0000\nwi,dane,-89.3750,43.1250\nwi,dane,-89.3750,43.2500\nwi,columbia,-89.3750,43.3750\nwi,columbia,-89.3750,43.5000\nwi,columbia,-89.3750,43.6250\nwi,marquette,-89.3750,43.7500\nwi,marquette,-89.3750,43.8750\nwi,waushara,-89.3750,44.0000\nwi,waushara,-89.3750,44.1250\nwi,portage,-89.3750,44.2500\nwi,portage,-89.3750,44.3750\nwi,portage,-89.3750,44.5000\nwi,portage,-89.3750,44.6250\nwi,marathon,-89.3750,44.7500\nwi,marathon,-89.3750,44.8750\nwi,marathon,-89.3750,45.0000\nwi,langlade,-89.3750,45.1250\nwi,langlade,-89.3750,45.2500\nwi,langlade,-89.3750,45.3750\nwi,oneida,-89.3750,45.5000\nwi,oneida,-89.3750,45.6250\nwi,oneida,-89.3750,45.7500\nwi,oneida,-89.3750,45.8750\nwi,vilas,-89.3750,46.0000\nwi,vilas,-89.3750,46.1250\nmi,gogebic,-89.3750,46.2500\nmi,gogebic,-89.3750,46.3750\nmi,gogebic,-89.3750,46.5000\nmi,ontonagon,-89.3750,46.6250\nmi,ontonagon,-89.3750,46.7500\ntn,dyer,-89.2500,36.0000\ntn,dyer,-89.2500,36.1250\ntn,obion,-89.2500,36.2500\ntn,obion,-89.2500,36.3750\ntn,obion,-89.2500,36.5000\nmo,mississippi,-89.2500,36.6250\nmo,mississippi,-89.2500,36.7500\nmo,mississippi,-89.2500,36.8750\nmo,mississippi,-89.2500,37.0000\nil,pulaski,-89.2500,37.1250\nil,alexander,-89.2500,37.2500\nil,union,-89.2500,37.3750\nil,union,-89.2500,37.5000\nil,jackson,-89.2500,37.6250\nil,jackson,-89.2500,37.7500\nil,jackson,-89.2500,37.8750\nil,perry,-89.2500,38.0000\nil,perry,-89.2500,38.1250\nil,washington,-89.2500,38.2500\nil,washington,-89.2500,38.3750\nil,washington,-89.2500,38.5000\nil,clinton,-89.2500,38.6250\nil,fayette,-89.2500,38.7500\nil,fayette,-89.2500,38.8750\nil,fayette,-89.2500,39.0000\nil,fayette,-89.2500,39.1250\nil,montgomery,-89.2500,39.2500\nil,christian,-89.2500,39.3750\nil,christian,-89.2500,39.5000\nil,christian,-89.2500,39.6250\nil,christian,-89.2500,39.7500\nil,sangamon,-89.2500,39.8750\nil,logan,-89.2500,40.0000\nil,logan,-89.2500,40.1250\nil,logan,-89.2500,40.2500\nil,mclean,-89.2500,40.3750\nil,mclean,-89.2500,40.5000\nil,woodford,-89.2500,40.6250\nil,woodford,-89.2500,40.7500\nil,woodford,-89.2500,40.8750\nil,marshall,-89.2500,41.0000\nil,putnam,-89.2500,41.1250\nil,putnam,-89.2500,41.2500\nil,bureau,-89.2500,41.3750\nil,bureau,-89.2500,41.5000\nil,lee,-89.2500,41.6250\nil,lee,-89.2500,41.7500\nil,lee,-89.2500,41.8750\nil,ogle,-89.2500,42.0000\nil,ogle,-89.2500,42.1250\nil,winnebago,-89.2500,42.2500\nil,winnebago,-89.2500,42.3750\nwi,rock,-89.2500,42.5000\nwi,rock,-89.2500,42.6250\nwi,rock,-89.2500,42.7500\nwi,dane,-89.2500,42.8750\nwi,dane,-89.2500,43.0000\nwi,dane,-89.2500,43.1250\nwi,dane,-89.2500,43.2500\nwi,columbia,-89.2500,43.3750\nwi,columbia,-89.2500,43.5000\nwi,columbia,-89.2500,43.6250\nwi,marquette,-89.2500,43.7500\nwi,marquette,-89.2500,43.8750\nwi,waushara,-89.2500,44.0000\nwi,waushara,-89.2500,44.1250\nwi,portage,-89.2500,44.2500\nwi,portage,-89.2500,44.3750\nwi,portage,-89.2500,44.5000\nwi,portage,-89.2500,44.6250\nwi,marathon,-89.2500,44.7500\nwi,marathon,-89.2500,44.8750\nwi,marathon,-89.2500,45.0000\nwi,langlade,-89.2500,45.1250\nwi,langlade,-89.2500,45.2500\nwi,langlade,-89.2500,45.3750\nwi,oneida,-89.2500,45.5000\nwi,oneida,-89.2500,45.6250\nwi,oneida,-89.2500,45.7500\nwi,vilas,-89.2500,45.8750\nwi,vilas,-89.2500,46.0000\nwi,vilas,-89.2500,46.1250\nmi,gogebic,-89.2500,46.2500\nmi,ontonagon,-89.2500,46.3750\nmi,ontonagon,-89.2500,46.5000\nmi,ontonagon,-89.2500,46.6250\nmi,ontonagon,-89.2500,46.7500\nmi,ontonagon,-89.2500,46.8750\nmi,keweenaw,-89.2500,47.8750\ntn,gibson,-89.1250,36.0000\ntn,gibson,-89.1250,36.1250\ntn,obion,-89.1250,36.2500\ntn,obion,-89.1250,36.3750\ntn,obion,-89.1250,36.5000\nky,fulton,-89.1250,36.6250\nky,hickman,-89.1250,36.7500\nky,carlisle,-89.1250,36.8750\nky,ballard,-89.1250,37.0000\nil,pulaski,-89.1250,37.1250\nil,pulaski,-89.1250,37.2500\nil,union,-89.1250,37.3750\nil,union,-89.1250,37.5000\nil,williamson,-89.1250,37.6250\nil,williamson,-89.1250,37.7500\nil,franklin,-89.1250,37.8750\nil,franklin,-89.1250,38.0000\nil,jefferson,-89.1250,38.1250\nil,jefferson,-89.1250,38.2500\nil,jefferson,-89.1250,38.3750\nil,marion,-89.1250,38.5000\nil,marion,-89.1250,38.6250\nil,marion,-89.1250,38.7500\nil,fayette,-89.1250,38.8750\nil,fayette,-89.1250,39.0000\nil,fayette,-89.1250,39.1250\nil,shelby,-89.1250,39.2500\nil,christian,-89.1250,39.3750\nil,christian,-89.1250,39.5000\nil,christian,-89.1250,39.6250\nil,macon,-89.1250,39.7500\nil,macon,-89.1250,39.8750\nil,macon,-89.1250,40.0000\nil,de witt,-89.1250,40.1250\nil,de witt,-89.1250,40.2500\nil,mclean,-89.1250,40.3750\nil,mclean,-89.1250,40.5000\nil,woodford,-89.1250,40.6250\nil,woodford,-89.1250,40.7500\nil,woodford,-89.1250,40.8750\nil,marshall,-89.1250,41.0000\nil,la salle,-89.1250,41.1250\nil,la salle,-89.1250,41.2500\nil,la salle,-89.1250,41.3750\nil,la salle,-89.1250,41.5000\nil,la salle,-89.1250,41.6250\nil,lee,-89.1250,41.7500\nil,lee,-89.1250,41.8750\nil,ogle,-89.1250,42.0000\nil,ogle,-89.1250,42.1250\nil,winnebago,-89.1250,42.2500\nil,winnebago,-89.1250,42.3750\nwi,rock,-89.1250,42.5000\nwi,rock,-89.1250,42.6250\nwi,rock,-89.1250,42.7500\nwi,dane,-89.1250,42.8750\nwi,dane,-89.1250,43.0000\nwi,dane,-89.1250,43.1250\nwi,dane,-89.1250,43.2500\nwi,columbia,-89.1250,43.3750\nwi,columbia,-89.1250,43.5000\nwi,columbia,-89.1250,43.6250\nwi,green lake,-89.1250,43.7500\nwi,green lake,-89.1250,43.8750\nwi,waushara,-89.1250,44.0000\nwi,waushara,-89.1250,44.1250\nwi,waupaca,-89.1250,44.2500\nwi,waupaca,-89.1250,44.3750\nwi,waupaca,-89.1250,44.5000\nwi,waupaca,-89.1250,44.6250\nwi,shawano,-89.1250,44.7500\nwi,shawano,-89.1250,44.8750\nwi,shawano,-89.1250,45.0000\nwi,langlade,-89.1250,45.1250\nwi,langlade,-89.1250,45.2500\nwi,langlade,-89.1250,45.3750\nwi,oneida,-89.1250,45.5000\nwi,oneida,-89.1250,45.6250\nwi,oneida,-89.1250,45.7500\nwi,oneida,-89.1250,45.8750\nwi,vilas,-89.1250,46.0000\nwi,vilas,-89.1250,46.1250\nmi,gogebic,-89.1250,46.2500\nmi,ontonagon,-89.1250,46.3750\nmi,ontonagon,-89.1250,46.5000\nmi,ontonagon,-89.1250,46.6250\nmi,ontonagon,-89.1250,46.7500\nmi,ontonagon,-89.1250,46.8750\nmi,keweenaw,-89.1250,47.8750\ntn,gibson,-89.0000,36.0000\ntn,gibson,-89.0000,36.1250\ntn,obion,-89.0000,36.2500\ntn,obion,-89.0000,36.3750\ntn,obion,-89.0000,36.5000\nky,hickman,-89.0000,36.6250\nky,hickman,-89.0000,36.7500\nky,carlisle,-89.0000,36.8750\nky,ballard,-89.0000,37.0000\nky,ballard,-89.0000,37.1250\nil,pulaski,-89.0000,37.2500\nil,johnson,-89.0000,37.3750\nil,johnson,-89.0000,37.5000\nil,williamson,-89.0000,37.6250\nil,williamson,-89.0000,37.7500\nil,franklin,-89.0000,37.8750\nil,franklin,-89.0000,38.0000\nil,franklin,-89.0000,38.1250\nil,jefferson,-89.0000,38.2500\nil,jefferson,-89.0000,38.3750\nil,marion,-89.0000,38.5000\nil,marion,-89.0000,38.6250\nil,marion,-89.0000,38.7500\nil,fayette,-89.0000,38.8750\nil,fayette,-89.0000,39.0000\nil,fayette,-89.0000,39.1250\nil,shelby,-89.0000,39.2500\nil,shelby,-89.0000,39.3750\nil,shelby,-89.0000,39.5000\nil,shelby,-89.0000,39.6250\nil,macon,-89.0000,39.7500\nil,macon,-89.0000,39.8750\nil,macon,-89.0000,40.0000\nil,de witt,-89.0000,40.1250\nil,de witt,-89.0000,40.2500\nil,mclean,-89.0000,40.3750\nil,mclean,-89.0000,40.5000\nil,mclean,-89.0000,40.6250\nil,woodford,-89.0000,40.7500\nil,woodford,-89.0000,40.8750\nil,la salle,-89.0000,41.0000\nil,la salle,-89.0000,41.1250\nil,la salle,-89.0000,41.2500\nil,la salle,-89.0000,41.3750\nil,la salle,-89.0000,41.5000\nil,la salle,-89.0000,41.6250\nil,lee,-89.0000,41.7500\nil,lee,-89.0000,41.8750\nil,ogle,-89.0000,42.0000\nil,ogle,-89.0000,42.1250\nil,winnebago,-89.0000,42.2500\nil,winnebago,-89.0000,42.3750\nwi,rock,-89.0000,42.5000\nwi,rock,-89.0000,42.6250\nwi,rock,-89.0000,42.7500\nwi,jefferson,-89.0000,42.8750\nwi,jefferson,-89.0000,43.0000\nwi,jefferson,-89.0000,43.1250\nwi,dodge,-89.0000,43.2500\nwi,dodge,-89.0000,43.3750\nwi,dodge,-89.0000,43.5000\nwi,dodge,-89.0000,43.6250\nwi,green lake,-89.0000,43.7500\nwi,green lake,-89.0000,43.8750\nwi,waushara,-89.0000,44.0000\nwi,waushara,-89.0000,44.1250\nwi,waupaca,-89.0000,44.2500\nwi,waupaca,-89.0000,44.3750\nwi,waupaca,-89.0000,44.5000\nwi,waupaca,-89.0000,44.6250\nwi,shawano,-89.0000,44.7500\nwi,shawano,-89.0000,44.8750\nwi,shawano,-89.0000,45.0000\nwi,langlade,-89.0000,45.1250\nwi,langlade,-89.0000,45.2500\nwi,langlade,-89.0000,45.3750\nwi,forest,-89.0000,45.5000\nwi,forest,-89.0000,45.6250\nwi,forest,-89.0000,45.7500\nwi,forest,-89.0000,45.8750\nwi,vilas,-89.0000,46.0000\nmi,gogebic,-89.0000,46.1250\nmi,gogebic,-89.0000,46.2500\nmi,ontonagon,-89.0000,46.3750\nmi,ontonagon,-89.0000,46.5000\nmi,ontonagon,-89.0000,46.6250\nmi,ontonagon,-89.0000,46.7500\nmi,ontonagon,-89.0000,46.8750\nmi,keweenaw,-89.0000,47.8750\ntn,gibson,-88.8750,36.0000\ntn,gibson,-88.8750,36.1250\ntn,weakley,-88.8750,36.2500\ntn,weakley,-88.8750,36.3750\ntn,obion,-88.8750,36.5000\nky,hickman,-88.8750,36.6250\nky,hickman,-88.8750,36.7500\nky,carlisle,-88.8750,36.8750\nky,ballard,-88.8750,37.0000\nky,mccracken,-88.8750,37.1250\nil,massac,-88.8750,37.2500\nil,johnson,-88.8750,37.3750\nil,johnson,-88.8750,37.5000\nil,williamson,-88.8750,37.6250\nil,williamson,-88.8750,37.7500\nil,franklin,-88.8750,37.8750\nil,franklin,-88.8750,38.0000\nil,franklin,-88.8750,38.1250\nil,jefferson,-88.8750,38.2500\nil,jefferson,-88.8750,38.3750\nil,marion,-88.8750,38.5000\nil,marion,-88.8750,38.6250\nil,marion,-88.8750,38.7500\nil,fayette,-88.8750,38.8750\nil,fayette,-88.8750,39.0000\nil,fayette,-88.8750,39.1250\nil,shelby,-88.8750,39.2500\nil,shelby,-88.8750,39.3750\nil,shelby,-88.8750,39.5000\nil,shelby,-88.8750,39.6250\nil,macon,-88.8750,39.7500\nil,macon,-88.8750,39.8750\nil,macon,-88.8750,40.0000\nil,de witt,-88.8750,40.1250\nil,de witt,-88.8750,40.2500\nil,mclean,-88.8750,40.3750\nil,mclean,-88.8750,40.5000\nil,mclean,-88.8750,40.6250\nil,mclean,-88.8750,40.7500\nil,livingston,-88.8750,40.8750\nil,livingston,-88.8750,41.0000\nil,la salle,-88.8750,41.1250\nil,la salle,-88.8750,41.2500\nil,la salle,-88.8750,41.3750\nil,la salle,-88.8750,41.5000\nil,la salle,-88.8750,41.6250\nil,de kalb,-88.8750,41.7500\nil,de kalb,-88.8750,41.8750\nil,de kalb,-88.8750,42.0000\nil,de kalb,-88.8750,42.1250\nil,boone,-88.8750,42.2500\nil,boone,-88.8750,42.3750\nwi,rock,-88.8750,42.5000\nwi,rock,-88.8750,42.6250\nwi,rock,-88.8750,42.7500\nwi,jefferson,-88.8750,42.8750\nwi,jefferson,-88.8750,43.0000\nwi,jefferson,-88.8750,43.1250\nwi,dodge,-88.8750,43.2500\nwi,dodge,-88.8750,43.3750\nwi,dodge,-88.8750,43.5000\nwi,dodge,-88.8750,43.6250\nwi,fond du lac,-88.8750,43.7500\nwi,fond du lac,-88.8750,43.8750\nwi,winnebago,-88.8750,44.0000\nwi,winnebago,-88.8750,44.1250\nwi,waupaca,-88.8750,44.2500\nwi,waupaca,-88.8750,44.3750\nwi,waupaca,-88.8750,44.5000\nwi,waupaca,-88.8750,44.6250\nwi,shawano,-88.8750,44.7500\nwi,shawano,-88.8750,44.8750\nwi,menominee,-88.8750,45.0000\nwi,langlade,-88.8750,45.1250\nwi,langlade,-88.8750,45.2500\nwi,langlade,-88.8750,45.3750\nwi,forest,-88.8750,45.5000\nwi,forest,-88.8750,45.6250\nwi,forest,-88.8750,45.7500\nwi,forest,-88.8750,45.8750\nwi,forest,-88.8750,46.0000\nmi,iron,-88.8750,46.1250\nmi,iron,-88.8750,46.2500\nmi,iron,-88.8750,46.3750\nmi,houghton,-88.8750,46.5000\nmi,houghton,-88.8750,46.6250\nmi,ontonagon,-88.8750,46.7500\nmi,houghton,-88.8750,46.8750\nmi,houghton,-88.8750,47.0000\nmi,keweenaw,-88.8750,48.0000\ntn,gibson,-88.7500,36.0000\ntn,weakley,-88.7500,36.1250\ntn,weakley,-88.7500,36.2500\ntn,weakley,-88.7500,36.3750\ntn,weakley,-88.7500,36.5000\nky,graves,-88.7500,36.6250\nky,graves,-88.7500,36.7500\nky,graves,-88.7500,36.8750\nky,mccracken,-88.7500,37.0000\nky,mccracken,-88.7500,37.1250\nil,massac,-88.7500,37.2500\nil,johnson,-88.7500,37.3750\nil,johnson,-88.7500,37.5000\nil,williamson,-88.7500,37.6250\nil,williamson,-88.7500,37.7500\nil,franklin,-88.7500,37.8750\nil,franklin,-88.7500,38.0000\nil,franklin,-88.7500,38.1250\nil,jefferson,-88.7500,38.2500\nil,jefferson,-88.7500,38.3750\nil,marion,-88.7500,38.5000\nil,marion,-88.7500,38.6250\nil,marion,-88.7500,38.7500\nil,fayette,-88.7500,38.8750\nil,effingham,-88.7500,39.0000\nil,effingham,-88.7500,39.1250\nil,shelby,-88.7500,39.2500\nil,shelby,-88.7500,39.3750\nil,shelby,-88.7500,39.5000\nil,moultrie,-88.7500,39.6250\nil,moultrie,-88.7500,39.7500\nil,macon,-88.7500,39.8750\nil,macon,-88.7500,40.0000\nil,de witt,-88.7500,40.1250\nil,de witt,-88.7500,40.2500\nil,mclean,-88.7500,40.3750\nil,mclean,-88.7500,40.5000\nil,mclean,-88.7500,40.6250\nil,mclean,-88.7500,40.7500\nil,livingston,-88.7500,40.8750\nil,livingston,-88.7500,41.0000\nil,la salle,-88.7500,41.1250\nil,la salle,-88.7500,41.2500\nil,la salle,-88.7500,41.3750\nil,la salle,-88.7500,41.5000\nil,la salle,-88.7500,41.6250\nil,de kalb,-88.7500,41.7500\nil,de kalb,-88.7500,41.8750\nil,de kalb,-88.7500,42.0000\nil,de kalb,-88.7500,42.1250\nil,boone,-88.7500,42.2500\nil,boone,-88.7500,42.3750\nwi,walworth,-88.7500,42.5000\nwi,walworth,-88.7500,42.6250\nwi,walworth,-88.7500,42.7500\nwi,jefferson,-88.7500,42.8750\nwi,jefferson,-88.7500,43.0000\nwi,jefferson,-88.7500,43.1250\nwi,dodge,-88.7500,43.2500\nwi,dodge,-88.7500,43.3750\nwi,dodge,-88.7500,43.5000\nwi,dodge,-88.7500,43.6250\nwi,fond du lac,-88.7500,43.7500\nwi,fond du lac,-88.7500,43.8750\nwi,winnebago,-88.7500,44.0000\nwi,winnebago,-88.7500,44.1250\nwi,waupaca,-88.7500,44.2500\nwi,waupaca,-88.7500,44.3750\nwi,waupaca,-88.7500,44.5000\nwi,waupaca,-88.7500,44.6250\nwi,shawano,-88.7500,44.7500\nwi,shawano,-88.7500,44.8750\nwi,menominee,-88.7500,45.0000\nwi,langlade,-88.7500,45.1250\nwi,langlade,-88.7500,45.2500\nwi,langlade,-88.7500,45.3750\nwi,forest,-88.7500,45.5000\nwi,forest,-88.7500,45.6250\nwi,forest,-88.7500,45.7500\nwi,forest,-88.7500,45.8750\nwi,forest,-88.7500,46.0000\nmi,iron,-88.7500,46.1250\nmi,iron,-88.7500,46.2500\nmi,iron,-88.7500,46.3750\nmi,houghton,-88.7500,46.5000\nmi,houghton,-88.7500,46.6250\nmi,houghton,-88.7500,46.7500\nmi,houghton,-88.7500,46.8750\nmi,houghton,-88.7500,47.0000\nmi,houghton,-88.7500,47.1250\nmi,keweenaw,-88.7500,48.0000\ntn,carroll,-88.6250,36.0000\ntn,weakley,-88.6250,36.1250\ntn,weakley,-88.6250,36.2500\ntn,weakley,-88.6250,36.3750\ntn,weakley,-88.6250,36.5000\nky,graves,-88.6250,36.6250\nky,graves,-88.6250,36.7500\nky,graves,-88.6250,36.8750\nky,mccracken,-88.6250,37.0000\nil,massac,-88.6250,37.1250\nil,massac,-88.6250,37.2500\nil,pope,-88.6250,37.3750\nil,pope,-88.6250,37.5000\nil,saline,-88.6250,37.6250\nil,saline,-88.6250,37.7500\nil,saline,-88.6250,37.8750\nil,hamilton,-88.6250,38.0000\nil,hamilton,-88.6250,38.1250\nil,hamilton,-88.6250,38.2500\nil,wayne,-88.6250,38.3750\nil,wayne,-88.6250,38.5000\nil,clay,-88.6250,38.6250\nil,clay,-88.6250,38.7500\nil,clay,-88.6250,38.8750\nil,effingham,-88.6250,39.0000\nil,effingham,-88.6250,39.1250\nil,shelby,-88.6250,39.2500\nil,shelby,-88.6250,39.3750\nil,shelby,-88.6250,39.5000\nil,moultrie,-88.6250,39.6250\nil,moultrie,-88.6250,39.7500\nil,piatt,-88.6250,39.8750\nil,piatt,-88.6250,40.0000\nil,piatt,-88.6250,40.1250\nil,de witt,-88.6250,40.2500\nil,mclean,-88.6250,40.3750\nil,mclean,-88.6250,40.5000\nil,mclean,-88.6250,40.6250\nil,mclean,-88.6250,40.7500\nil,livingston,-88.6250,40.8750\nil,livingston,-88.6250,41.0000\nil,la salle,-88.6250,41.1250\nil,la salle,-88.6250,41.2500\nil,la salle,-88.6250,41.3750\nil,la salle,-88.6250,41.5000\nil,la salle,-88.6250,41.6250\nil,de kalb,-88.6250,41.7500\nil,de kalb,-88.6250,41.8750\nil,de kalb,-88.6250,42.0000\nil,de kalb,-88.6250,42.1250\nil,mchenry,-88.6250,42.2500\nil,mchenry,-88.6250,42.3750\nwi,walworth,-88.6250,42.5000\nwi,walworth,-88.6250,42.6250\nwi,walworth,-88.6250,42.7500\nwi,jefferson,-88.6250,42.8750\nwi,jefferson,-88.6250,43.0000\nwi,jefferson,-88.6250,43.1250\nwi,dodge,-88.6250,43.2500\nwi,dodge,-88.6250,43.3750\nwi,dodge,-88.6250,43.5000\nwi,dodge,-88.6250,43.6250\nwi,fond du lac,-88.6250,43.7500\nwi,fond du lac,-88.6250,43.8750\nwi,winnebago,-88.6250,44.0000\nwi,winnebago,-88.6250,44.1250\nwi,outagamie,-88.6250,44.2500\nwi,outagamie,-88.6250,44.3750\nwi,outagamie,-88.6250,44.5000\nwi,waupaca,-88.6250,44.6250\nwi,shawano,-88.6250,44.7500\nwi,menominee,-88.6250,44.8750\nwi,menominee,-88.6250,45.0000\nwi,oconto,-88.6250,45.1250\nwi,oconto,-88.6250,45.2500\nwi,oconto,-88.6250,45.3750\nwi,forest,-88.6250,45.5000\nwi,forest,-88.6250,45.6250\nwi,florence,-88.6250,45.7500\nwi,florence,-88.6250,45.8750\nmi,iron,-88.6250,46.0000\nmi,iron,-88.6250,46.1250\nmi,iron,-88.6250,46.2500\nmi,iron,-88.6250,46.3750\nmi,baraga,-88.6250,46.5000\nmi,baraga,-88.6250,46.6250\nmi,baraga,-88.6250,46.7500\nmi,houghton,-88.6250,46.8750\nmi,houghton,-88.6250,47.0000\nmi,houghton,-88.6250,47.1250\nmi,keweenaw,-88.6250,48.1250\ntn,carroll,-88.5000,36.0000\ntn,carroll,-88.5000,36.1250\ntn,henry,-88.5000,36.2500\ntn,henry,-88.5000,36.3750\ntn,henry,-88.5000,36.5000\nky,graves,-88.5000,36.6250\nky,graves,-88.5000,36.7500\nky,graves,-88.5000,36.8750\nky,mccracken,-88.5000,37.0000\nil,massac,-88.5000,37.1250\nil,pope,-88.5000,37.2500\nil,pope,-88.5000,37.3750\nil,pope,-88.5000,37.5000\nil,saline,-88.5000,37.6250\nil,saline,-88.5000,37.7500\nil,saline,-88.5000,37.8750\nil,hamilton,-88.5000,38.0000\nil,hamilton,-88.5000,38.1250\nil,hamilton,-88.5000,38.2500\nil,wayne,-88.5000,38.3750\nil,wayne,-88.5000,38.5000\nil,clay,-88.5000,38.6250\nil,clay,-88.5000,38.7500\nil,clay,-88.5000,38.8750\nil,effingham,-88.5000,39.0000\nil,effingham,-88.5000,39.1250\nil,shelby,-88.5000,39.2500\nil,shelby,-88.5000,39.3750\nil,moultrie,-88.5000,39.5000\nil,moultrie,-88.5000,39.6250\nil,moultrie,-88.5000,39.7500\nil,piatt,-88.5000,39.8750\nil,piatt,-88.5000,40.0000\nil,piatt,-88.5000,40.1250\nil,piatt,-88.5000,40.2500\nil,mclean,-88.5000,40.3750\nil,mclean,-88.5000,40.5000\nil,livingston,-88.5000,40.6250\nil,livingston,-88.5000,40.7500\nil,livingston,-88.5000,40.8750\nil,livingston,-88.5000,41.0000\nil,grundy,-88.5000,41.1250\nil,grundy,-88.5000,41.2500\nil,grundy,-88.5000,41.3750\nil,kendall,-88.5000,41.5000\nil,kendall,-88.5000,41.6250\nil,kane,-88.5000,41.7500\nil,kane,-88.5000,41.8750\nil,kane,-88.5000,42.0000\nil,kane,-88.5000,42.1250\nil,mchenry,-88.5000,42.2500\nil,mchenry,-88.5000,42.3750\nwi,walworth,-88.5000,42.5000\nwi,walworth,-88.5000,42.6250\nwi,walworth,-88.5000,42.7500\nwi,waukesha,-88.5000,42.8750\nwi,waukesha,-88.5000,43.0000\nwi,waukesha,-88.5000,43.1250\nwi,dodge,-88.5000,43.2500\nwi,dodge,-88.5000,43.3750\nwi,dodge,-88.5000,43.5000\nwi,dodge,-88.5000,43.6250\nwi,fond du lac,-88.5000,43.7500\nwi,fond du lac,-88.5000,43.8750\nwi,winnebago,-88.5000,44.0000\nwi,winnebago,-88.5000,44.1250\nwi,outagamie,-88.5000,44.2500\nwi,outagamie,-88.5000,44.3750\nwi,outagamie,-88.5000,44.5000\nwi,shawano,-88.5000,44.6250\nwi,shawano,-88.5000,44.7500\nwi,menominee,-88.5000,44.8750\nwi,menominee,-88.5000,45.0000\nwi,oconto,-88.5000,45.1250\nwi,oconto,-88.5000,45.2500\nwi,oconto,-88.5000,45.3750\nwi,forest,-88.5000,45.5000\nwi,forest,-88.5000,45.6250\nwi,florence,-88.5000,45.7500\nwi,florence,-88.5000,45.8750\nwi,florence,-88.5000,46.0000\nmi,iron,-88.5000,46.1250\nmi,iron,-88.5000,46.2500\nmi,iron,-88.5000,46.3750\nmi,baraga,-88.5000,46.5000\nmi,baraga,-88.5000,46.6250\nmi,baraga,-88.5000,46.7500\nmi,baraga,-88.5000,46.8750\nmi,houghton,-88.5000,47.0000\nmi,houghton,-88.5000,47.1250\nmi,houghton,-88.5000,47.2500\ntn,carroll,-88.3750,36.0000\ntn,carroll,-88.3750,36.1250\ntn,henry,-88.3750,36.2500\ntn,henry,-88.3750,36.3750\ntn,henry,-88.3750,36.5000\nky,calloway,-88.3750,36.6250\nky,calloway,-88.3750,36.7500\nky,marshall,-88.3750,36.8750\nky,marshall,-88.3750,37.0000\nky,livingston,-88.3750,37.1250\nky,livingston,-88.3750,37.2500\nky,livingston,-88.3750,37.3750\nil,hardin,-88.3750,37.5000\nil,saline,-88.3750,37.6250\nil,saline,-88.3750,37.7500\nil,saline,-88.3750,37.8750\nil,hamilton,-88.3750,38.0000\nil,hamilton,-88.3750,38.1250\nil,hamilton,-88.3750,38.2500\nil,wayne,-88.3750,38.3750\nil,wayne,-88.3750,38.5000\nil,clay,-88.3750,38.6250\nil,clay,-88.3750,38.7500\nil,clay,-88.3750,38.8750\nil,effingham,-88.3750,39.0000\nil,effingham,-88.3750,39.1250\nil,cumberland,-88.3750,39.2500\nil,coles,-88.3750,39.3750\nil,coles,-88.3750,39.5000\nil,coles,-88.3750,39.6250\nil,douglas,-88.3750,39.7500\nil,douglas,-88.3750,39.8750\nil,champaign,-88.3750,40.0000\nil,champaign,-88.3750,40.1250\nil,champaign,-88.3750,40.2500\nil,champaign,-88.3750,40.3750\nil,ford,-88.3750,40.5000\nil,livingston,-88.3750,40.6250\nil,livingston,-88.3750,40.7500\nil,livingston,-88.3750,40.8750\nil,livingston,-88.3750,41.0000\nil,grundy,-88.3750,41.1250\nil,grundy,-88.3750,41.2500\nil,grundy,-88.3750,41.3750\nil,kendall,-88.3750,41.5000\nil,kendall,-88.3750,41.6250\nil,kane,-88.3750,41.7500\nil,kane,-88.3750,41.8750\nil,kane,-88.3750,42.0000\nil,kane,-88.3750,42.1250\nil,mchenry,-88.3750,42.2500\nil,mchenry,-88.3750,42.3750\nwi,walworth,-88.3750,42.5000\nwi,walworth,-88.3750,42.6250\nwi,walworth,-88.3750,42.7500\nwi,waukesha,-88.3750,42.8750\nwi,waukesha,-88.3750,43.0000\nwi,waukesha,-88.3750,43.1250\nwi,washington,-88.3750,43.2500\nwi,washington,-88.3750,43.3750\nwi,washington,-88.3750,43.5000\nwi,fond du lac,-88.3750,43.6250\nwi,fond du lac,-88.3750,43.7500\nwi,fond du lac,-88.3750,43.8750\nwi,calumet,-88.3750,44.0000\nwi,calumet,-88.3750,44.1250\nwi,outagamie,-88.3750,44.2500\nwi,outagamie,-88.3750,44.3750\nwi,outagamie,-88.3750,44.5000\nwi,shawano,-88.3750,44.6250\nwi,shawano,-88.3750,44.7500\nwi,oconto,-88.3750,44.8750\nwi,oconto,-88.3750,45.0000\nwi,oconto,-88.3750,45.1250\nwi,oconto,-88.3750,45.2500\nwi,oconto,-88.3750,45.3750\nwi,marinette,-88.3750,45.5000\nwi,marinette,-88.3750,45.6250\nwi,florence,-88.3750,45.7500\nwi,florence,-88.3750,45.8750\nmi,iron,-88.3750,46.0000\nmi,iron,-88.3750,46.1250\nmi,iron,-88.3750,46.2500\nmi,iron,-88.3750,46.3750\nmi,baraga,-88.3750,46.5000\nmi,baraga,-88.3750,46.6250\nmi,baraga,-88.3750,46.7500\nmi,houghton,-88.3750,47.1250\nmi,houghton,-88.3750,47.2500\nmi,keweenaw,-88.3750,47.3750\ntn,carroll,-88.2500,36.0000\ntn,carroll,-88.2500,36.1250\ntn,henry,-88.2500,36.2500\ntn,henry,-88.2500,36.3750\nky,calloway,-88.2500,36.5000\nky,calloway,-88.2500,36.6250\nky,marshall,-88.2500,36.7500\nky,marshall,-88.2500,36.8750\nky,livingston,-88.2500,37.0000\nky,livingston,-88.2500,37.1250\nky,livingston,-88.2500,37.2500\nky,crittenden,-88.2500,37.3750\nil,hardin,-88.2500,37.5000\nil,gallatin,-88.2500,37.6250\nil,gallatin,-88.2500,37.7500\nil,gallatin,-88.2500,37.8750\nil,white,-88.2500,38.0000\nil,white,-88.2500,38.1250\nil,white,-88.2500,38.2500\nil,wayne,-88.2500,38.3750\nil,wayne,-88.2500,38.5000\nil,richland,-88.2500,38.6250\nil,richland,-88.2500,38.7500\nil,jasper,-88.2500,38.8750\nil,jasper,-88.2500,39.0000\nil,jasper,-88.2500,39.1250\nil,cumberland,-88.2500,39.2500\nil,coles,-88.2500,39.3750\nil,coles,-88.2500,39.5000\nil,coles,-88.2500,39.6250\nil,douglas,-88.2500,39.7500\nil,douglas,-88.2500,39.8750\nil,champaign,-88.2500,40.0000\nil,champaign,-88.2500,40.1250\nil,champaign,-88.2500,40.2500\nil,champaign,-88.2500,40.3750\nil,ford,-88.2500,40.5000\nil,livingston,-88.2500,40.6250\nil,livingston,-88.2500,40.7500\nil,livingston,-88.2500,40.8750\nil,livingston,-88.2500,41.0000\nil,grundy,-88.2500,41.1250\nil,grundy,-88.2500,41.2500\nil,grundy,-88.2500,41.3750\nil,will,-88.2500,41.5000\nil,will,-88.2500,41.6250\nil,dupage,-88.2500,41.7500\nil,dupage,-88.2500,41.8750\nil,cook,-88.2500,42.0000\nil,kane,-88.2500,42.1250\nil,mchenry,-88.2500,42.2500\nil,mchenry,-88.2500,42.3750\nwi,kenosha,-88.2500,42.5000\nwi,racine,-88.2500,42.6250\nwi,racine,-88.2500,42.7500\nwi,waukesha,-88.2500,42.8750\nwi,waukesha,-88.2500,43.0000\nwi,waukesha,-88.2500,43.1250\nwi,washington,-88.2500,43.2500\nwi,washington,-88.2500,43.3750\nwi,washington,-88.2500,43.5000\nwi,fond du lac,-88.2500,43.6250\nwi,fond du lac,-88.2500,43.7500\nwi,fond du lac,-88.2500,43.8750\nwi,calumet,-88.2500,44.0000\nwi,calumet,-88.2500,44.1250\nwi,outagamie,-88.2500,44.2500\nwi,outagamie,-88.2500,44.3750\nwi,outagamie,-88.2500,44.5000\nwi,shawano,-88.2500,44.6250\nwi,shawano,-88.2500,44.7500\nwi,oconto,-88.2500,44.8750\nwi,oconto,-88.2500,45.0000\nwi,oconto,-88.2500,45.1250\nwi,marinette,-88.2500,45.2500\nwi,marinette,-88.2500,45.3750\nwi,marinette,-88.2500,45.5000\nwi,marinette,-88.2500,45.6250\nwi,florence,-88.2500,45.7500\nwi,florence,-88.2500,45.8750\nmi,iron,-88.2500,46.0000\nmi,iron,-88.2500,46.1250\nmi,iron,-88.2500,46.2500\nmi,iron,-88.2500,46.3750\nmi,baraga,-88.2500,46.5000\nmi,baraga,-88.2500,46.6250\nmi,baraga,-88.2500,46.7500\nmi,baraga,-88.2500,46.8750\nmi,keweenaw,-88.2500,47.2500\nmi,keweenaw,-88.2500,47.3750\ntn,benton,-88.1250,36.0000\ntn,benton,-88.1250,36.1250\ntn,henry,-88.1250,36.2500\ntn,henry,-88.1250,36.3750\nky,calloway,-88.1250,36.5000\nky,calloway,-88.1250,36.6250\nky,marshall,-88.1250,36.7500\nky,trigg,-88.1250,36.8750\nky,lyon,-88.1250,37.0000\nky,lyon,-88.1250,37.1250\nky,crittenden,-88.1250,37.2500\nky,crittenden,-88.1250,37.3750\nil,hardin,-88.1250,37.5000\nky,union,-88.1250,37.6250\nil,gallatin,-88.1250,37.7500\nil,gallatin,-88.1250,37.8750\nil,white,-88.1250,38.0000\nil,white,-88.1250,38.1250\nil,white,-88.1250,38.2500\nil,edwards,-88.1250,38.3750\nil,edwards,-88.1250,38.5000\nil,richland,-88.1250,38.6250\nil,richland,-88.1250,38.7500\nil,jasper,-88.1250,38.8750\nil,jasper,-88.1250,39.0000\nil,jasper,-88.1250,39.1250\nil,cumberland,-88.1250,39.2500\nil,cumberland,-88.1250,39.3750\nil,coles,-88.1250,39.5000\nil,coles,-88.1250,39.6250\nil,douglas,-88.1250,39.7500\nil,douglas,-88.1250,39.8750\nil,champaign,-88.1250,40.0000\nil,champaign,-88.1250,40.1250\nil,champaign,-88.1250,40.2500\nil,champaign,-88.1250,40.3750\nil,ford,-88.1250,40.5000\nil,ford,-88.1250,40.6250\nil,ford,-88.1250,40.7500\nil,iroquois,-88.1250,40.8750\nil,kankakee,-88.1250,41.0000\nil,kankakee,-88.1250,41.1250\nil,will,-88.1250,41.2500\nil,will,-88.1250,41.3750\nil,will,-88.1250,41.5000\nil,will,-88.1250,41.6250\nil,dupage,-88.1250,41.7500\nil,dupage,-88.1250,41.8750\nil,cook,-88.1250,42.0000\nil,cook,-88.1250,42.1250\nil,lake,-88.1250,42.2500\nil,lake,-88.1250,42.3750\nwi,kenosha,-88.1250,42.5000\nwi,kenosha,-88.1250,42.6250\nwi,racine,-88.1250,42.7500\nwi,waukesha,-88.1250,42.8750\nwi,waukesha,-88.1250,43.0000\nwi,waukesha,-88.1250,43.1250\nwi,washington,-88.1250,43.2500\nwi,washington,-88.1250,43.3750\nwi,washington,-88.1250,43.5000\nwi,sheboygan,-88.1250,43.6250\nwi,sheboygan,-88.1250,43.7500\nwi,sheboygan,-88.1250,43.8750\nwi,calumet,-88.1250,44.0000\nwi,calumet,-88.1250,44.1250\nwi,brown,-88.1250,44.2500\nwi,brown,-88.1250,44.3750\nwi,brown,-88.1250,44.5000\nwi,brown,-88.1250,44.6250\nwi,oconto,-88.1250,44.7500\nwi,oconto,-88.1250,44.8750\nwi,oconto,-88.1250,45.0000\nwi,marinette,-88.1250,45.1250\nwi,marinette,-88.1250,45.2500\nwi,marinette,-88.1250,45.3750\nwi,marinette,-88.1250,45.5000\nwi,marinette,-88.1250,45.6250\nwi,florence,-88.1250,45.7500\nwi,florence,-88.1250,45.8750\nmi,iron,-88.1250,46.0000\nmi,iron,-88.1250,46.1250\nmi,iron,-88.1250,46.2500\nmi,iron,-88.1250,46.3750\nmi,baraga,-88.1250,46.5000\nmi,baraga,-88.1250,46.6250\nmi,baraga,-88.1250,46.7500\nmi,baraga,-88.1250,46.8750\nmi,keweenaw,-88.1250,47.2500\nmi,keweenaw,-88.1250,47.3750\ntn,humphreys,-88.0000,36.0000\ntn,benton,-88.0000,36.1250\ntn,benton,-88.0000,36.2500\ntn,stewart,-88.0000,36.3750\ntn,stewart,-88.0000,36.5000\ntn,stewart,-88.0000,36.6250\nky,trigg,-88.0000,36.7500\nky,trigg,-88.0000,36.8750\nky,lyon,-88.0000,37.0000\nky,caldwell,-88.0000,37.1250\nky,caldwell,-88.0000,37.2500\nky,crittenden,-88.0000,37.3750\nky,crittenden,-88.0000,37.5000\nky,union,-88.0000,37.6250\nky,union,-88.0000,37.7500\nin,posey,-88.0000,37.8750\nin,posey,-88.0000,38.0000\nil,white,-88.0000,38.1250\nil,white,-88.0000,38.2500\nil,edwards,-88.0000,38.3750\nil,edwards,-88.0000,38.5000\nil,richland,-88.0000,38.6250\nil,richland,-88.0000,38.7500\nil,jasper,-88.0000,38.8750\nil,jasper,-88.0000,39.0000\nil,jasper,-88.0000,39.1250\nil,clark,-88.0000,39.2500\nil,clark,-88.0000,39.3750\nil,coles,-88.0000,39.5000\nil,coles,-88.0000,39.6250\nil,douglas,-88.0000,39.7500\nil,douglas,-88.0000,39.8750\nil,champaign,-88.0000,40.0000\nil,champaign,-88.0000,40.1250\nil,champaign,-88.0000,40.2500\nil,champaign,-88.0000,40.3750\nil,iroquois,-88.0000,40.5000\nil,iroquois,-88.0000,40.6250\nil,iroquois,-88.0000,40.7500\nil,iroquois,-88.0000,40.8750\nil,iroquois,-88.0000,41.0000\nil,kankakee,-88.0000,41.1250\nil,kankakee,-88.0000,41.2500\nil,will,-88.0000,41.3750\nil,will,-88.0000,41.5000\nil,will,-88.0000,41.6250\nil,dupage,-88.0000,41.7500\nil,dupage,-88.0000,41.8750\nil,cook,-88.0000,42.0000\nil,cook,-88.0000,42.1250\nil,lake,-88.0000,42.2500\nil,lake,-88.0000,42.3750\nwi,kenosha,-88.0000,42.5000\nwi,kenosha,-88.0000,42.6250\nwi,racine,-88.0000,42.7500\nwi,milwaukee,-88.0000,42.8750\nwi,milwaukee,-88.0000,43.0000\nwi,milwaukee,-88.0000,43.1250\nwi,ozaukee,-88.0000,43.2500\nwi,ozaukee,-88.0000,43.3750\nwi,ozaukee,-88.0000,43.5000\nwi,sheboygan,-88.0000,43.6250\nwi,sheboygan,-88.0000,43.7500\nwi,sheboygan,-88.0000,43.8750\nwi,manitowoc,-88.0000,44.0000\nwi,manitowoc,-88.0000,44.1250\nwi,brown,-88.0000,44.2500\nwi,brown,-88.0000,44.3750\nwi,brown,-88.0000,44.5000\nwi,oconto,-88.0000,44.7500\nwi,oconto,-88.0000,44.8750\nwi,oconto,-88.0000,45.0000\nwi,marinette,-88.0000,45.1250\nwi,marinette,-88.0000,45.2500\nwi,marinette,-88.0000,45.3750\nwi,marinette,-88.0000,45.5000\nwi,marinette,-88.0000,45.6250\nwi,marinette,-88.0000,45.7500\nmi,dickinson,-88.0000,45.8750\nmi,dickinson,-88.0000,46.0000\nmi,dickinson,-88.0000,46.1250\nmi,marquette,-88.0000,46.2500\nmi,marquette,-88.0000,46.3750\nmi,marquette,-88.0000,46.5000\nmi,marquette,-88.0000,46.6250\nmi,baraga,-88.0000,46.7500\nmi,marquette,-88.0000,46.8750\ntn,humphreys,-87.8750,36.0000\ntn,humphreys,-87.8750,36.1250\ntn,houston,-87.8750,36.2500\ntn,stewart,-87.8750,36.3750\ntn,stewart,-87.8750,36.5000\ntn,stewart,-87.8750,36.6250\nky,trigg,-87.8750,36.7500\nky,trigg,-87.8750,36.8750\nky,caldwell,-87.8750,37.0000\nky,caldwell,-87.8750,37.1250\nky,caldwell,-87.8750,37.2500\nky,crittenden,-87.8750,37.3750\nky,webster,-87.8750,37.5000\nky,union,-87.8750,37.6250\nky,union,-87.8750,37.7500\nky,henderson,-87.8750,37.8750\nin,posey,-87.8750,38.0000\nin,posey,-87.8750,38.1250\nin,gibson,-87.8750,38.2500\nil,wabash,-87.8750,38.3750\nil,wabash,-87.8750,38.5000\nil,lawrence,-87.8750,38.6250\nil,lawrence,-87.8750,38.7500\nil,crawford,-87.8750,38.8750\nil,crawford,-87.8750,39.0000\nil,crawford,-87.8750,39.1250\nil,clark,-87.8750,39.2500\nil,clark,-87.8750,39.3750\nil,edgar,-87.8750,39.5000\nil,edgar,-87.8750,39.6250\nil,edgar,-87.8750,39.7500\nil,edgar,-87.8750,39.8750\nil,vermilion,-87.8750,40.0000\nil,vermilion,-87.8750,40.1250\nil,vermilion,-87.8750,40.2500\nil,vermilion,-87.8750,40.3750\nil,iroquois,-87.8750,40.5000\nil,iroquois,-87.8750,40.6250\nil,iroquois,-87.8750,40.7500\nil,iroquois,-87.8750,40.8750\nil,iroquois,-87.8750,41.0000\nil,kankakee,-87.8750,41.1250\nil,kankakee,-87.8750,41.2500\nil,will,-87.8750,41.3750\nil,will,-87.8750,41.5000\nil,cook,-87.8750,41.6250\nil,cook,-87.8750,41.7500\nil,cook,-87.8750,41.8750\nil,cook,-87.8750,42.0000\nil,cook,-87.8750,42.1250\nil,lake,-87.8750,42.2500\nil,lake,-87.8750,42.3750\nwi,kenosha,-87.8750,42.5000\nwi,kenosha,-87.8750,42.6250\nwi,racine,-87.8750,42.7500\nwi,milwaukee,-87.8750,42.8750\nwi,ozaukee,-87.8750,43.3750\nwi,ozaukee,-87.8750,43.5000\nwi,sheboygan,-87.8750,43.6250\nwi,sheboygan,-87.8750,43.7500\nwi,sheboygan,-87.8750,43.8750\nwi,manitowoc,-87.8750,44.0000\nwi,manitowoc,-87.8750,44.1250\nwi,manitowoc,-87.8750,44.2500\nwi,brown,-87.8750,44.3750\nwi,brown,-87.8750,44.5000\nwi,oconto,-87.8750,44.8750\nwi,marinette,-87.8750,45.0000\nwi,marinette,-87.8750,45.1250\nwi,marinette,-87.8750,45.2500\nwi,marinette,-87.8750,45.3750\nwi,marinette,-87.8750,45.5000\nwi,marinette,-87.8750,45.6250\nwi,marinette,-87.8750,45.7500\nmi,dickinson,-87.8750,45.8750\nmi,dickinson,-87.8750,46.0000\nmi,dickinson,-87.8750,46.1250\nmi,marquette,-87.8750,46.2500\nmi,marquette,-87.8750,46.3750\nmi,marquette,-87.8750,46.5000\nmi,marquette,-87.8750,46.6250\nmi,marquette,-87.8750,46.7500\nmi,marquette,-87.8750,46.8750\ntn,humphreys,-87.7500,36.0000\ntn,humphreys,-87.7500,36.1250\ntn,houston,-87.7500,36.2500\ntn,stewart,-87.7500,36.3750\ntn,stewart,-87.7500,36.5000\ntn,stewart,-87.7500,36.6250\nky,trigg,-87.7500,36.7500\nky,trigg,-87.7500,36.8750\nky,caldwell,-87.7500,37.0000\nky,caldwell,-87.7500,37.1250\nky,hopkins,-87.7500,37.2500\nky,hopkins,-87.7500,37.3750\nky,webster,-87.7500,37.5000\nky,union,-87.7500,37.6250\nky,henderson,-87.7500,37.7500\nky,henderson,-87.7500,37.8750\nin,posey,-87.7500,38.0000\nin,posey,-87.7500,38.1250\nin,gibson,-87.7500,38.2500\nin,gibson,-87.7500,38.3750\nil,wabash,-87.7500,38.5000\nil,lawrence,-87.7500,38.6250\nil,lawrence,-87.7500,38.7500\nil,crawford,-87.7500,38.8750\nil,crawford,-87.7500,39.0000\nil,crawford,-87.7500,39.1250\nil,clark,-87.7500,39.2500\nil,clark,-87.7500,39.3750\nil,edgar,-87.7500,39.5000\nil,edgar,-87.7500,39.6250\nil,edgar,-87.7500,39.7500\nil,edgar,-87.7500,39.8750\nil,vermilion,-87.7500,40.0000\nil,vermilion,-87.7500,40.1250\nil,vermilion,-87.7500,40.2500\nil,vermilion,-87.7500,40.3750\nil,iroquois,-87.7500,40.5000\nil,iroquois,-87.7500,40.6250\nil,iroquois,-87.7500,40.7500\nil,iroquois,-87.7500,40.8750\nil,iroquois,-87.7500,41.0000\nil,kankakee,-87.7500,41.1250\nil,kankakee,-87.7500,41.2500\nil,will,-87.7500,41.3750\nil,cook,-87.7500,41.5000\nil,cook,-87.7500,41.6250\nil,cook,-87.7500,41.7500\nil,cook,-87.7500,41.8750\nil,cook,-87.7500,42.0000\nil,cook,-87.7500,42.1250\nwi,sheboygan,-87.7500,43.6250\nwi,sheboygan,-87.7500,43.7500\nwi,sheboygan,-87.7500,43.8750\nwi,manitowoc,-87.7500,44.0000\nwi,manitowoc,-87.7500,44.1250\nwi,manitowoc,-87.7500,44.2500\nwi,kewaunee,-87.7500,44.3750\nwi,kewaunee,-87.7500,44.5000\nwi,kewaunee,-87.7500,44.6250\nwi,marinette,-87.7500,45.0000\nwi,marinette,-87.7500,45.1250\nwi,marinette,-87.7500,45.2500\nmi,menominee,-87.7500,45.3750\nmi,menominee,-87.7500,45.5000\nmi,menominee,-87.7500,45.6250\nmi,dickinson,-87.7500,45.7500\nmi,dickinson,-87.7500,45.8750\nmi,dickinson,-87.7500,46.0000\nmi,dickinson,-87.7500,46.1250\nmi,marquette,-87.7500,46.2500\nmi,marquette,-87.7500,46.3750\nmi,marquette,-87.7500,46.5000\nmi,marquette,-87.7500,46.6250\nmi,marquette,-87.7500,46.7500\ntn,humphreys,-87.6250,36.0000\ntn,humphreys,-87.6250,36.1250\ntn,houston,-87.6250,36.2500\ntn,stewart,-87.6250,36.3750\ntn,stewart,-87.6250,36.5000\ntn,montgomery,-87.6250,36.6250\nky,christian,-87.6250,36.7500\nky,christian,-87.6250,36.8750\nky,christian,-87.6250,37.0000\nky,christian,-87.6250,37.1250\nky,hopkins,-87.6250,37.2500\nky,hopkins,-87.6250,37.3750\nky,webster,-87.6250,37.5000\nky,webster,-87.6250,37.6250\nky,henderson,-87.6250,37.7500\nin,vanderburgh,-87.6250,37.8750\nin,vanderburgh,-87.6250,38.0000\nin,vanderburgh,-87.6250,38.1250\nin,gibson,-87.6250,38.2500\nin,gibson,-87.6250,38.3750\nin,knox,-87.6250,38.5000\nil,lawrence,-87.6250,38.6250\nil,lawrence,-87.6250,38.7500\nil,crawford,-87.6250,38.8750\nil,crawford,-87.6250,39.0000\nin,sullivan,-87.6250,39.1250\nil,clark,-87.6250,39.2500\nil,clark,-87.6250,39.3750\nil,edgar,-87.6250,39.5000\nil,edgar,-87.6250,39.6250\nil,edgar,-87.6250,39.7500\nil,edgar,-87.6250,39.8750\nil,vermilion,-87.6250,40.0000\nil,vermilion,-87.6250,40.1250\nil,vermilion,-87.6250,40.2500\nil,vermilion,-87.6250,40.3750\nil,iroquois,-87.6250,40.5000\nil,iroquois,-87.6250,40.6250\nil,iroquois,-87.6250,40.7500\nil,iroquois,-87.6250,40.8750\nil,iroquois,-87.6250,41.0000\nil,kankakee,-87.6250,41.1250\nil,kankakee,-87.6250,41.2500\nil,will,-87.6250,41.3750\nil,cook,-87.6250,41.5000\nil,cook,-87.6250,41.6250\nil,cook,-87.6250,41.7500\nil,cook,-87.6250,41.8750\nwi,manitowoc,-87.6250,44.1250\nwi,manitowoc,-87.6250,44.2500\nwi,kewaunee,-87.6250,44.3750\nwi,kewaunee,-87.6250,44.5000\nwi,kewaunee,-87.6250,44.6250\nwi,door,-87.6250,44.7500\nmi,menominee,-87.6250,45.1250\nmi,menominee,-87.6250,45.2500\nmi,menominee,-87.6250,45.3750\nmi,menominee,-87.6250,45.5000\nmi,menominee,-87.6250,45.6250\nmi,menominee,-87.6250,45.7500\nmi,menominee,-87.6250,45.8750\nmi,dickinson,-87.6250,46.0000\nmi,dickinson,-87.6250,46.1250\nmi,marquette,-87.6250,46.2500\nmi,marquette,-87.6250,46.3750\nmi,marquette,-87.6250,46.5000\nmi,marquette,-87.6250,46.6250\nmi,marquette,-87.6250,46.7500\ntn,dickson,-87.5000,36.0000\ntn,dickson,-87.5000,36.1250\ntn,dickson,-87.5000,36.2500\ntn,montgomery,-87.5000,36.3750\ntn,montgomery,-87.5000,36.5000\ntn,montgomery,-87.5000,36.6250\nky,christian,-87.5000,36.7500\nky,christian,-87.5000,36.8750\nky,christian,-87.5000,37.0000\nky,hopkins,-87.5000,37.1250\nky,hopkins,-87.5000,37.2500\nky,hopkins,-87.5000,37.3750\nky,webster,-87.5000,37.5000\nky,webster,-87.5000,37.6250\nky,henderson,-87.5000,37.7500\nky,henderson,-87.5000,37.8750\nin,vanderburgh,-87.5000,38.0000\nin,vanderburgh,-87.5000,38.1250\nin,gibson,-87.5000,38.2500\nin,gibson,-87.5000,38.3750\nin,knox,-87.5000,38.5000\nin,knox,-87.5000,38.6250\nin,knox,-87.5000,38.7500\nin,knox,-87.5000,38.8750\nin,sullivan,-87.5000,39.0000\nin,sullivan,-87.5000,39.1250\nin,sullivan,-87.5000,39.2500\nin,vigo,-87.5000,39.3750\nin,vigo,-87.5000,39.5000\nin,vermillion,-87.5000,39.6250\nin,vermillion,-87.5000,39.7500\nin,vermillion,-87.5000,39.8750\nin,vermillion,-87.5000,40.0000\nin,vermillion,-87.5000,40.1250\nin,warren,-87.5000,40.2500\nin,warren,-87.5000,40.3750\nin,benton,-87.5000,40.5000\nin,benton,-87.5000,40.6250\nin,newton,-87.5000,40.7500\nin,newton,-87.5000,40.8750\nin,newton,-87.5000,41.0000\nin,newton,-87.5000,41.1250\nin,lake,-87.5000,41.2500\nin,lake,-87.5000,41.3750\nin,lake,-87.5000,41.5000\nin,lake,-87.5000,41.6250\nwi,kewaunee,-87.5000,44.5000\nwi,kewaunee,-87.5000,44.6250\nwi,door,-87.5000,44.7500\nmi,menominee,-87.5000,45.2500\nmi,menominee,-87.5000,45.3750\nmi,menominee,-87.5000,45.5000\nmi,menominee,-87.5000,45.6250\nmi,menominee,-87.5000,45.7500\nmi,menominee,-87.5000,45.8750\nmi,marquette,-87.5000,46.0000\nmi,marquette,-87.5000,46.1250\nmi,marquette,-87.5000,46.2500\nmi,marquette,-87.5000,46.3750\nmi,marquette,-87.5000,46.5000\nmi,marquette,-87.5000,46.6250\ntn,dickson,-87.3750,36.0000\ntn,dickson,-87.3750,36.1250\ntn,dickson,-87.3750,36.2500\ntn,montgomery,-87.3750,36.3750\ntn,montgomery,-87.3750,36.5000\ntn,montgomery,-87.3750,36.6250\nky,christian,-87.3750,36.7500\nky,christian,-87.3750,36.8750\nky,christian,-87.3750,37.0000\nky,christian,-87.3750,37.1250\nky,hopkins,-87.3750,37.2500\nky,hopkins,-87.3750,37.3750\nky,hopkins,-87.3750,37.5000\nky,mclean,-87.3750,37.6250\nky,henderson,-87.3750,37.7500\nky,henderson,-87.3750,37.8750\nin,warrick,-87.3750,38.0000\nin,warrick,-87.3750,38.1250\nin,gibson,-87.3750,38.2500\nin,gibson,-87.3750,38.3750\nin,pike,-87.3750,38.5000\nin,knox,-87.3750,38.6250\nin,knox,-87.3750,38.7500\nin,knox,-87.3750,38.8750\nin,sullivan,-87.3750,39.0000\nin,sullivan,-87.3750,39.1250\nin,sullivan,-87.3750,39.2500\nin,vigo,-87.3750,39.3750\nin,vigo,-87.3750,39.5000\nin,parke,-87.3750,39.6250\nin,parke,-87.3750,39.7500\nin,parke,-87.3750,39.8750\nin,fountain,-87.3750,40.0000\nin,fountain,-87.3750,40.1250\nin,warren,-87.3750,40.2500\nin,warren,-87.3750,40.3750\nin,benton,-87.3750,40.5000\nin,benton,-87.3750,40.6250\nin,newton,-87.3750,40.7500\nin,newton,-87.3750,40.8750\nin,newton,-87.3750,41.0000\nin,newton,-87.3750,41.1250\nin,lake,-87.3750,41.2500\nin,lake,-87.3750,41.3750\nin,lake,-87.3750,41.5000\nin,lake,-87.3750,41.6250\nwi,door,-87.3750,44.7500\nwi,door,-87.3750,44.8750\nmi,menominee,-87.3750,45.5000\nmi,menominee,-87.3750,45.6250\nmi,menominee,-87.3750,45.7500\nmi,menominee,-87.3750,45.8750\nmi,marquette,-87.3750,46.0000\nmi,marquette,-87.3750,46.1250\nmi,marquette,-87.3750,46.2500\nmi,marquette,-87.3750,46.3750\nmi,marquette,-87.3750,46.5000\ntn,dickson,-87.2500,36.0000\ntn,dickson,-87.2500,36.1250\ntn,dickson,-87.2500,36.2500\ntn,cheatham,-87.2500,36.3750\ntn,montgomery,-87.2500,36.5000\ntn,montgomery,-87.2500,36.6250\nky,todd,-87.2500,36.7500\nky,todd,-87.2500,36.8750\nky,todd,-87.2500,37.0000\nky,muhlenberg,-87.2500,37.1250\nky,muhlenberg,-87.2500,37.2500\nky,muhlenberg,-87.2500,37.3750\nky,mclean,-87.2500,37.5000\nky,daviess,-87.2500,37.6250\nky,daviess,-87.2500,37.7500\nin,spencer,-87.2500,37.8750\nin,warrick,-87.2500,38.0000\nin,warrick,-87.2500,38.1250\nin,pike,-87.2500,38.2500\nin,pike,-87.2500,38.3750\nin,pike,-87.2500,38.5000\nin,knox,-87.2500,38.6250\nin,knox,-87.2500,38.7500\nin,knox,-87.2500,38.8750\nin,sullivan,-87.2500,39.0000\nin,sullivan,-87.2500,39.1250\nin,sullivan,-87.2500,39.2500\nin,vigo,-87.2500,39.3750\nin,vigo,-87.2500,39.5000\nin,parke,-87.2500,39.6250\nin,parke,-87.2500,39.7500\nin,parke,-87.2500,39.8750\nin,fountain,-87.2500,40.0000\nin,fountain,-87.2500,40.1250\nin,fountain,-87.2500,40.2500\nin,warren,-87.2500,40.3750\nin,benton,-87.2500,40.5000\nin,benton,-87.2500,40.6250\nin,jasper,-87.2500,40.7500\nin,jasper,-87.2500,40.8750\nin,jasper,-87.2500,41.0000\nin,jasper,-87.2500,41.1250\nin,lake,-87.2500,41.2500\nin,lake,-87.2500,41.3750\nin,lake,-87.2500,41.5000\nwi,door,-87.2500,44.8750\nwi,door,-87.2500,45.0000\nwi,door,-87.2500,45.1250\nmi,delta,-87.2500,45.6250\nmi,delta,-87.2500,45.7500\nmi,delta,-87.2500,45.8750\nmi,marquette,-87.2500,46.0000\nmi,marquette,-87.2500,46.1250\nmi,marquette,-87.2500,46.2500\nmi,marquette,-87.2500,46.3750\ntn,williamson,-87.1250,36.0000\ntn,cheatham,-87.1250,36.1250\ntn,cheatham,-87.1250,36.2500\ntn,cheatham,-87.1250,36.3750\ntn,montgomery,-87.1250,36.5000\ntn,robertson,-87.1250,36.6250\nky,todd,-87.1250,36.7500\nky,todd,-87.1250,36.8750\nky,todd,-87.1250,37.0000\nky,muhlenberg,-87.1250,37.1250\nky,muhlenberg,-87.1250,37.2500\nky,muhlenberg,-87.1250,37.3750\nky,mclean,-87.1250,37.5000\nky,daviess,-87.1250,37.6250\nky,daviess,-87.1250,37.7500\nin,spencer,-87.1250,37.8750\nin,spencer,-87.1250,38.0000\nin,warrick,-87.1250,38.1250\nin,pike,-87.1250,38.2500\nin,pike,-87.1250,38.3750\nin,pike,-87.1250,38.5000\nin,daviess,-87.1250,38.6250\nin,daviess,-87.1250,38.7500\nin,knox,-87.1250,38.8750\nin,greene,-87.1250,39.0000\nin,greene,-87.1250,39.1250\nin,clay,-87.1250,39.2500\nin,clay,-87.1250,39.3750\nin,clay,-87.1250,39.5000\nin,parke,-87.1250,39.6250\nin,parke,-87.1250,39.7500\nin,parke,-87.1250,39.8750\nin,fountain,-87.1250,40.0000\nin,fountain,-87.1250,40.1250\nin,fountain,-87.1250,40.2500\nin,warren,-87.1250,40.3750\nin,benton,-87.1250,40.5000\nin,benton,-87.1250,40.6250\nin,jasper,-87.1250,40.7500\nin,jasper,-87.1250,40.8750\nin,jasper,-87.1250,41.0000\nin,jasper,-87.1250,41.1250\nin,jasper,-87.1250,41.2500\nin,porter,-87.1250,41.3750\nin,porter,-87.1250,41.5000\nin,porter,-87.1250,41.6250\nwi,door,-87.1250,45.1250\nmi,delta,-87.1250,45.7500\nmi,delta,-87.1250,45.8750\nmi,delta,-87.1250,46.0000\nmi,delta,-87.1250,46.1250\nmi,marquette,-87.1250,46.2500\nmi,marquette,-87.1250,46.3750\ntn,williamson,-87.0000,36.0000\ntn,davidson,-87.0000,36.1250\ntn,cheatham,-87.0000,36.2500\ntn,cheatham,-87.0000,36.3750\ntn,robertson,-87.0000,36.5000\ntn,robertson,-87.0000,36.6250\nky,logan,-87.0000,36.7500\nky,logan,-87.0000,36.8750\nky,logan,-87.0000,37.0000\nky,muhlenberg,-87.0000,37.1250\nky,muhlenberg,-87.0000,37.2500\nky,ohio,-87.0000,37.3750\nky,ohio,-87.0000,37.5000\nky,daviess,-87.0000,37.6250\nky,daviess,-87.0000,37.7500\nky,daviess,-87.0000,37.8750\nin,spencer,-87.0000,38.0000\nin,spencer,-87.0000,38.1250\nin,dubois,-87.0000,38.2500\nin,dubois,-87.0000,38.3750\nin,dubois,-87.0000,38.5000\nin,daviess,-87.0000,38.6250\nin,daviess,-87.0000,38.7500\nin,daviess,-87.0000,38.8750\nin,greene,-87.0000,39.0000\nin,greene,-87.0000,39.1250\nin,owen,-87.0000,39.2500\nin,clay,-87.0000,39.3750\nin,putnam,-87.0000,39.5000\nin,putnam,-87.0000,39.6250\nin,putnam,-87.0000,39.7500\nin,montgomery,-87.0000,39.8750\nin,montgomery,-87.0000,40.0000\nin,montgomery,-87.0000,40.1250\nin,tippecanoe,-87.0000,40.2500\nin,tippecanoe,-87.0000,40.3750\nin,tippecanoe,-87.0000,40.5000\nin,white,-87.0000,40.6250\nin,white,-87.0000,40.7500\nin,jasper,-87.0000,40.8750\nin,jasper,-87.0000,41.0000\nin,jasper,-87.0000,41.1250\nin,porter,-87.0000,41.2500\nin,porter,-87.0000,41.3750\nin,porter,-87.0000,41.5000\nin,porter,-87.0000,41.6250\nwi,door,-87.0000,45.2500\nmi,delta,-87.0000,46.0000\nmi,delta,-87.0000,46.1250\nmi,alger,-87.0000,46.2500\nmi,alger,-87.0000,46.3750\nmi,alger,-87.0000,46.5000\ntn,williamson,-86.8750,36.0000\ntn,davidson,-86.8750,36.1250\ntn,davidson,-86.8750,36.2500\ntn,robertson,-86.8750,36.3750\ntn,robertson,-86.8750,36.5000\ntn,robertson,-86.8750,36.6250\nky,logan,-86.8750,36.7500\nky,logan,-86.8750,36.8750\nky,logan,-86.8750,37.0000\nky,butler,-86.8750,37.1250\nky,ohio,-86.8750,37.2500\nky,ohio,-86.8750,37.3750\nky,ohio,-86.8750,37.5000\nky,ohio,-86.8750,37.6250\nky,daviess,-86.8750,37.7500\nky,hancock,-86.8750,37.8750\nin,spencer,-86.8750,38.0000\nin,spencer,-86.8750,38.1250\nin,dubois,-86.8750,38.2500\nin,dubois,-86.8750,38.3750\nin,dubois,-86.8750,38.5000\nin,martin,-86.8750,38.6250\nin,martin,-86.8750,38.7500\nin,martin,-86.8750,38.8750\nin,greene,-86.8750,39.0000\nin,greene,-86.8750,39.1250\nin,owen,-86.8750,39.2500\nin,owen,-86.8750,39.3750\nin,putnam,-86.8750,39.5000\nin,putnam,-86.8750,39.6250\nin,putnam,-86.8750,39.7500\nin,montgomery,-86.8750,39.8750\nin,montgomery,-86.8750,40.0000\nin,montgomery,-86.8750,40.1250\nin,tippecanoe,-86.8750,40.2500\nin,tippecanoe,-86.8750,40.3750\nin,tippecanoe,-86.8750,40.5000\nin,white,-86.8750,40.6250\nin,white,-86.8750,40.7500\nin,white,-86.8750,40.8750\nin,pulaski,-86.8750,41.0000\nin,pulaski,-86.8750,41.1250\nin,starke,-86.8750,41.2500\nin,la porte,-86.8750,41.3750\nin,la porte,-86.8750,41.5000\nin,la porte,-86.8750,41.6250\nwi,door,-86.8750,45.3750\nmi,delta,-86.8750,45.7500\nmi,delta,-86.8750,45.8750\nmi,delta,-86.8750,46.0000\nmi,delta,-86.8750,46.1250\nmi,alger,-86.8750,46.2500\nmi,alger,-86.8750,46.3750\ntn,williamson,-86.7500,36.0000\ntn,davidson,-86.7500,36.1250\ntn,davidson,-86.7500,36.2500\ntn,davidson,-86.7500,36.3750\ntn,robertson,-86.7500,36.5000\ntn,robertson,-86.7500,36.6250\nky,logan,-86.7500,36.7500\nky,logan,-86.7500,36.8750\nky,logan,-86.7500,37.0000\nky,butler,-86.7500,37.1250\nky,butler,-86.7500,37.2500\nky,ohio,-86.7500,37.3750\nky,ohio,-86.7500,37.5000\nky,ohio,-86.7500,37.6250\nky,hancock,-86.7500,37.7500\nky,hancock,-86.7500,37.8750\nin,perry,-86.7500,38.0000\nin,perry,-86.7500,38.1250\nin,dubois,-86.7500,38.2500\nin,dubois,-86.7500,38.3750\nin,dubois,-86.7500,38.5000\nin,martin,-86.7500,38.6250\nin,martin,-86.7500,38.7500\nin,martin,-86.7500,38.8750\nin,greene,-86.7500,39.0000\nin,greene,-86.7500,39.1250\nin,owen,-86.7500,39.2500\nin,owen,-86.7500,39.3750\nin,putnam,-86.7500,39.5000\nin,putnam,-86.7500,39.6250\nin,putnam,-86.7500,39.7500\nin,montgomery,-86.7500,39.8750\nin,montgomery,-86.7500,40.0000\nin,montgomery,-86.7500,40.1250\nin,tippecanoe,-86.7500,40.2500\nin,tippecanoe,-86.7500,40.3750\nin,tippecanoe,-86.7500,40.5000\nin,carroll,-86.7500,40.6250\nin,white,-86.7500,40.7500\nin,white,-86.7500,40.8750\nin,pulaski,-86.7500,41.0000\nin,pulaski,-86.7500,41.1250\nin,starke,-86.7500,41.2500\nin,la porte,-86.7500,41.3750\nin,la porte,-86.7500,41.5000\nin,la porte,-86.7500,41.6250\nin,la porte,-86.7500,41.7500\nmi,delta,-86.7500,45.8750\nmi,delta,-86.7500,46.0000\nmi,delta,-86.7500,46.1250\nmi,alger,-86.7500,46.2500\nmi,alger,-86.7500,46.3750\ntn,davidson,-86.6250,36.0000\ntn,davidson,-86.6250,36.1250\ntn,davidson,-86.6250,36.2500\ntn,sumner,-86.6250,36.3750\ntn,sumner,-86.6250,36.5000\ntn,robertson,-86.6250,36.6250\nky,simpson,-86.6250,36.7500\nky,simpson,-86.6250,36.8750\nky,warren,-86.6250,37.0000\nky,warren,-86.6250,37.1250\nky,butler,-86.6250,37.2500\nky,butler,-86.6250,37.3750\nky,grayson,-86.6250,37.5000\nky,breckinridge,-86.6250,37.6250\nky,breckinridge,-86.6250,37.7500\nin,perry,-86.6250,37.8750\nin,perry,-86.6250,38.0000\nin,perry,-86.6250,38.1250\nin,perry,-86.6250,38.2500\nin,crawford,-86.6250,38.3750\nin,orange,-86.6250,38.5000\nin,orange,-86.6250,38.6250\nin,lawrence,-86.6250,38.7500\nin,lawrence,-86.6250,38.8750\nin,monroe,-86.6250,39.0000\nin,monroe,-86.6250,39.1250\nin,monroe,-86.6250,39.2500\nin,morgan,-86.6250,39.3750\nin,morgan,-86.6250,39.5000\nin,hendricks,-86.6250,39.6250\nin,hendricks,-86.6250,39.7500\nin,hendricks,-86.6250,39.8750\nin,boone,-86.6250,40.0000\nin,boone,-86.6250,40.1250\nin,clinton,-86.6250,40.2500\nin,clinton,-86.6250,40.3750\nin,carroll,-86.6250,40.5000\nin,carroll,-86.6250,40.6250\nin,white,-86.6250,40.7500\nin,white,-86.6250,40.8750\nin,pulaski,-86.6250,41.0000\nin,pulaski,-86.6250,41.1250\nin,starke,-86.6250,41.2500\nin,starke,-86.6250,41.3750\nin,la porte,-86.6250,41.5000\nin,la porte,-86.6250,41.6250\nin,la porte,-86.6250,41.7500\nmi,berrien,-86.6250,41.8750\nmi,delta,-86.6250,45.6250\nmi,delta,-86.6250,45.7500\nmi,delta,-86.6250,45.8750\nmi,delta,-86.6250,46.0000\nmi,delta,-86.6250,46.1250\nmi,alger,-86.6250,46.2500\nmi,alger,-86.6250,46.3750\ntn,rutherford,-86.5000,36.0000\ntn,wilson,-86.5000,36.1250\ntn,wilson,-86.5000,36.2500\ntn,sumner,-86.5000,36.3750\ntn,sumner,-86.5000,36.5000\ntn,sumner,-86.5000,36.6250\nky,simpson,-86.5000,36.7500\nky,warren,-86.5000,36.8750\nky,warren,-86.5000,37.0000\nky,warren,-86.5000,37.1250\nky,butler,-86.5000,37.2500\nky,grayson,-86.5000,37.3750\nky,grayson,-86.5000,37.5000\nky,breckinridge,-86.5000,37.6250\nky,breckinridge,-86.5000,37.7500\nky,breckinridge,-86.5000,37.8750\nky,breckinridge,-86.5000,38.0000\nin,perry,-86.5000,38.1250\nin,crawford,-86.5000,38.2500\nin,crawford,-86.5000,38.3750\nin,orange,-86.5000,38.5000\nin,orange,-86.5000,38.6250\nin,lawrence,-86.5000,38.7500\nin,lawrence,-86.5000,38.8750\nin,monroe,-86.5000,39.0000\nin,monroe,-86.5000,39.1250\nin,monroe,-86.5000,39.2500\nin,morgan,-86.5000,39.3750\nin,morgan,-86.5000,39.5000\nin,hendricks,-86.5000,39.6250\nin,hendricks,-86.5000,39.7500\nin,hendricks,-86.5000,39.8750\nin,boone,-86.5000,40.0000\nin,boone,-86.5000,40.1250\nin,clinton,-86.5000,40.2500\nin,clinton,-86.5000,40.3750\nin,carroll,-86.5000,40.5000\nin,carroll,-86.5000,40.6250\nin,cass,-86.5000,40.7500\nin,cass,-86.5000,40.8750\nin,pulaski,-86.5000,41.0000\nin,pulaski,-86.5000,41.1250\nin,starke,-86.5000,41.2500\nin,starke,-86.5000,41.3750\nin,st. joseph,-86.5000,41.5000\nin,la porte,-86.5000,41.6250\nin,st. joseph,-86.5000,41.7500\nmi,berrien,-86.5000,41.8750\nmi,berrien,-86.5000,42.0000\nmi,oceana,-86.5000,43.6250\nmi,delta,-86.5000,45.7500\nmi,delta,-86.5000,45.8750\nmi,delta,-86.5000,46.0000\nmi,delta,-86.5000,46.1250\nmi,schoolcraft,-86.5000,46.2500\nmi,alger,-86.5000,46.3750\nmi,alger,-86.5000,46.5000\ntn,rutherford,-86.3750,36.0000\ntn,wilson,-86.3750,36.1250\ntn,wilson,-86.3750,36.2500\ntn,sumner,-86.3750,36.3750\ntn,sumner,-86.3750,36.5000\ntn,sumner,-86.3750,36.6250\nky,allen,-86.3750,36.7500\nky,warren,-86.3750,36.8750\nky,warren,-86.3750,37.0000\nky,warren,-86.3750,37.1250\nky,edmonson,-86.3750,37.2500\nky,grayson,-86.3750,37.3750\nky,grayson,-86.3750,37.5000\nky,breckinridge,-86.3750,37.6250\nky,breckinridge,-86.3750,37.7500\nky,breckinridge,-86.3750,37.8750\nky,meade,-86.3750,38.0000\nky,meade,-86.3750,38.1250\nin,crawford,-86.3750,38.2500\nin,crawford,-86.3750,38.3750\nin,orange,-86.3750,38.5000\nin,orange,-86.3750,38.6250\nin,lawrence,-86.3750,38.7500\nin,lawrence,-86.3750,38.8750\nin,monroe,-86.3750,39.0000\nin,monroe,-86.3750,39.1250\nin,monroe,-86.3750,39.2500\nin,morgan,-86.3750,39.3750\nin,morgan,-86.3750,39.5000\nin,morgan,-86.3750,39.6250\nin,hendricks,-86.3750,39.7500\nin,hendricks,-86.3750,39.8750\nin,boone,-86.3750,40.0000\nin,boone,-86.3750,40.1250\nin,clinton,-86.3750,40.2500\nin,clinton,-86.3750,40.3750\nin,howard,-86.3750,40.5000\nin,carroll,-86.3750,40.6250\nin,cass,-86.3750,40.7500\nin,cass,-86.3750,40.8750\nin,fulton,-86.3750,41.0000\nin,fulton,-86.3750,41.1250\nin,marshall,-86.3750,41.2500\nin,marshall,-86.3750,41.3750\nin,st. joseph,-86.3750,41.5000\nin,st. joseph,-86.3750,41.6250\nin,st. joseph,-86.3750,41.7500\nmi,berrien,-86.3750,41.8750\nmi,berrien,-86.3750,42.0000\nmi,berrien,-86.3750,42.1250\nmi,muskegon,-86.3750,43.3750\nmi,oceana,-86.3750,43.5000\nmi,oceana,-86.3750,43.6250\nmi,oceana,-86.3750,43.7500\nmi,mason,-86.3750,43.8750\nmi,mason,-86.3750,44.0000\nmi,mason,-86.3750,44.1250\nmi,schoolcraft,-86.3750,45.8750\nmi,schoolcraft,-86.3750,46.0000\nmi,schoolcraft,-86.3750,46.1250\nmi,schoolcraft,-86.3750,46.2500\nmi,alger,-86.3750,46.3750\nmi,alger,-86.3750,46.5000\ntn,wilson,-86.2500,36.0000\ntn,wilson,-86.2500,36.1250\ntn,wilson,-86.2500,36.2500\ntn,trousdale,-86.2500,36.3750\ntn,sumner,-86.2500,36.5000\ntn,sumner,-86.2500,36.6250\nky,allen,-86.2500,36.7500\nky,allen,-86.2500,36.8750\nky,warren,-86.2500,37.0000\nky,edmonson,-86.2500,37.1250\nky,edmonson,-86.2500,37.2500\nky,grayson,-86.2500,37.3750\nky,grayson,-86.2500,37.5000\nky,hardin,-86.2500,37.6250\nky,breckinridge,-86.2500,37.7500\nky,breckinridge,-86.2500,37.8750\nky,meade,-86.2500,38.0000\nin,harrison,-86.2500,38.1250\nin,harrison,-86.2500,38.2500\nin,harrison,-86.2500,38.3750\nin,washington,-86.2500,38.5000\nin,washington,-86.2500,38.6250\nin,washington,-86.2500,38.7500\nin,jackson,-86.2500,38.8750\nin,jackson,-86.2500,39.0000\nin,brown,-86.2500,39.1250\nin,brown,-86.2500,39.2500\nin,johnson,-86.2500,39.3750\nin,johnson,-86.2500,39.5000\nin,morgan,-86.2500,39.6250\nin,marion,-86.2500,39.7500\nin,marion,-86.2500,39.8750\nin,boone,-86.2500,40.0000\nin,boone,-86.2500,40.1250\nin,clinton,-86.2500,40.2500\nin,howard,-86.2500,40.3750\nin,howard,-86.2500,40.5000\nin,cass,-86.2500,40.6250\nin,cass,-86.2500,40.7500\nin,cass,-86.2500,40.8750\nin,fulton,-86.2500,41.0000\nin,fulton,-86.2500,41.1250\nin,marshall,-86.2500,41.2500\nin,marshall,-86.2500,41.3750\nin,st. joseph,-86.2500,41.5000\nin,st. joseph,-86.2500,41.6250\nin,st. joseph,-86.2500,41.7500\nmi,berrien,-86.2500,41.8750\nmi,berrien,-86.2500,42.0000\nmi,berrien,-86.2500,42.1250\nmi,van buren,-86.2500,42.2500\nmi,van buren,-86.2500,42.3750\nmi,muskegon,-86.2500,43.1250\nmi,muskegon,-86.2500,43.3750\nmi,oceana,-86.2500,43.5000\nmi,oceana,-86.2500,43.6250\nmi,oceana,-86.2500,43.7500\nmi,mason,-86.2500,43.8750\nmi,mason,-86.2500,44.0000\nmi,mason,-86.2500,44.1250\nmi,manistee,-86.2500,44.2500\nmi,manistee,-86.2500,44.3750\nmi,schoolcraft,-86.2500,46.0000\nmi,schoolcraft,-86.2500,46.1250\nmi,schoolcraft,-86.2500,46.2500\nmi,schoolcraft,-86.2500,46.3750\nmi,schoolcraft,-86.2500,46.5000\nmi,alger,-86.2500,46.6250\ntn,wilson,-86.1250,36.0000\ntn,wilson,-86.1250,36.1250\ntn,wilson,-86.1250,36.2500\ntn,trousdale,-86.1250,36.3750\ntn,macon,-86.1250,36.5000\ntn,macon,-86.1250,36.6250\nky,allen,-86.1250,36.7500\nky,allen,-86.1250,36.8750\nky,barren,-86.1250,37.0000\nky,edmonson,-86.1250,37.1250\nky,edmonson,-86.1250,37.2500\nky,grayson,-86.1250,37.3750\nky,grayson,-86.1250,37.5000\nky,hardin,-86.1250,37.6250\nky,hardin,-86.1250,37.7500\nky,meade,-86.1250,37.8750\nky,meade,-86.1250,38.0000\nin,harrison,-86.1250,38.1250\nin,harrison,-86.1250,38.2500\nin,harrison,-86.1250,38.3750\nin,washington,-86.1250,38.5000\nin,washington,-86.1250,38.6250\nin,washington,-86.1250,38.7500\nin,jackson,-86.1250,38.8750\nin,jackson,-86.1250,39.0000\nin,brown,-86.1250,39.1250\nin,brown,-86.1250,39.2500\nin,johnson,-86.1250,39.3750\nin,johnson,-86.1250,39.5000\nin,johnson,-86.1250,39.6250\nin,marion,-86.1250,39.7500\nin,marion,-86.1250,39.8750\nin,hamilton,-86.1250,40.0000\nin,hamilton,-86.1250,40.1250\nin,tipton,-86.1250,40.2500\nin,tipton,-86.1250,40.3750\nin,howard,-86.1250,40.5000\nin,miami,-86.1250,40.6250\nin,miami,-86.1250,40.7500\nin,miami,-86.1250,40.8750\nin,fulton,-86.1250,41.0000\nin,fulton,-86.1250,41.1250\nin,marshall,-86.1250,41.2500\nin,marshall,-86.1250,41.3750\nin,st. joseph,-86.1250,41.5000\nin,st. joseph,-86.1250,41.6250\nin,st. joseph,-86.1250,41.7500\nmi,cass,-86.1250,41.8750\nmi,cass,-86.1250,42.0000\nmi,van buren,-86.1250,42.1250\nmi,van buren,-86.1250,42.2500\nmi,van buren,-86.1250,42.3750\nmi,allegan,-86.1250,42.5000\nmi,allegan,-86.1250,42.6250\nmi,allegan,-86.1250,42.7500\nmi,ottawa,-86.1250,42.8750\nmi,ottawa,-86.1250,43.0000\nmi,muskegon,-86.1250,43.1250\nmi,muskegon,-86.1250,43.2500\nmi,muskegon,-86.1250,43.3750\nmi,oceana,-86.1250,43.5000\nmi,oceana,-86.1250,43.6250\nmi,oceana,-86.1250,43.7500\nmi,mason,-86.1250,43.8750\nmi,mason,-86.1250,44.0000\nmi,mason,-86.1250,44.1250\nmi,manistee,-86.1250,44.2500\nmi,manistee,-86.1250,44.3750\nmi,manistee,-86.1250,44.5000\nmi,benzie,-86.1250,44.6250\nmi,leelanau,-86.1250,45.0000\nmi,schoolcraft,-86.1250,46.0000\nmi,schoolcraft,-86.1250,46.1250\nmi,schoolcraft,-86.1250,46.2500\nmi,schoolcraft,-86.1250,46.3750\nmi,schoolcraft,-86.1250,46.5000\nmi,alger,-86.1250,46.6250\ntn,de kalb,-86.0000,36.0000\ntn,smith,-86.0000,36.1250\ntn,smith,-86.0000,36.2500\ntn,smith,-86.0000,36.3750\ntn,macon,-86.0000,36.5000\ntn,macon,-86.0000,36.6250\nky,allen,-86.0000,36.7500\nky,barren,-86.0000,36.8750\nky,barren,-86.0000,37.0000\nky,barren,-86.0000,37.1250\nky,hart,-86.0000,37.2500\nky,hart,-86.0000,37.3750\nky,hardin,-86.0000,37.5000\nky,hardin,-86.0000,37.6250\nky,hardin,-86.0000,37.7500\nky,meade,-86.0000,37.8750\nin,harrison,-86.0000,38.0000\nin,harrison,-86.0000,38.1250\nin,harrison,-86.0000,38.2500\nin,floyd,-86.0000,38.3750\nin,washington,-86.0000,38.5000\nin,washington,-86.0000,38.6250\nin,washington,-86.0000,38.7500\nin,jackson,-86.0000,38.8750\nin,jackson,-86.0000,39.0000\nin,bartholomew,-86.0000,39.1250\nin,bartholomew,-86.0000,39.2500\nin,johnson,-86.0000,39.3750\nin,johnson,-86.0000,39.5000\nin,johnson,-86.0000,39.6250\nin,marion,-86.0000,39.7500\nin,marion,-86.0000,39.8750\nin,hamilton,-86.0000,40.0000\nin,hamilton,-86.0000,40.1250\nin,tipton,-86.0000,40.2500\nin,tipton,-86.0000,40.3750\nin,howard,-86.0000,40.5000\nin,miami,-86.0000,40.6250\nin,miami,-86.0000,40.7500\nin,miami,-86.0000,40.8750\nin,fulton,-86.0000,41.0000\nin,kosciusko,-86.0000,41.1250\nin,kosciusko,-86.0000,41.2500\nin,kosciusko,-86.0000,41.3750\nin,elkhart,-86.0000,41.5000\nin,elkhart,-86.0000,41.6250\nin,elkhart,-86.0000,41.7500\nmi,cass,-86.0000,41.8750\nmi,cass,-86.0000,42.0000\nmi,van buren,-86.0000,42.1250\nmi,van buren,-86.0000,42.2500\nmi,van buren,-86.0000,42.3750\nmi,allegan,-86.0000,42.5000\nmi,allegan,-86.0000,42.6250\nmi,allegan,-86.0000,42.7500\nmi,ottawa,-86.0000,42.8750\nmi,ottawa,-86.0000,43.0000\nmi,muskegon,-86.0000,43.1250\nmi,muskegon,-86.0000,43.2500\nmi,newaygo,-86.0000,43.3750\nmi,newaygo,-86.0000,43.5000\nmi,newaygo,-86.0000,43.6250\nmi,newaygo,-86.0000,43.7500\nmi,lake,-86.0000,43.8750\nmi,lake,-86.0000,44.0000\nmi,lake,-86.0000,44.1250\nmi,manistee,-86.0000,44.2500\nmi,manistee,-86.0000,44.3750\nmi,manistee,-86.0000,44.5000\nmi,benzie,-86.0000,44.6250\nmi,benzie,-86.0000,44.7500\nmi,leelanau,-86.0000,44.8750\nmi,leelanau,-86.0000,45.1250\nmi,schoolcraft,-86.0000,46.0000\nmi,schoolcraft,-86.0000,46.1250\nmi,schoolcraft,-86.0000,46.2500\nmi,schoolcraft,-86.0000,46.3750\nmi,schoolcraft,-86.0000,46.5000\nmi,alger,-86.0000,46.6250\ntn,de kalb,-85.8750,36.0000\ntn,smith,-85.8750,36.1250\ntn,smith,-85.8750,36.2500\ntn,smith,-85.8750,36.3750\ntn,macon,-85.8750,36.5000\nky,monroe,-85.8750,36.6250\nky,monroe,-85.8750,36.7500\nky,barren,-85.8750,36.8750\nky,barren,-85.8750,37.0000\nky,barren,-85.8750,37.1250\nky,hart,-85.8750,37.2500\nky,hart,-85.8750,37.3750\nky,larue,-85.8750,37.5000\nky,hardin,-85.8750,37.6250\nky,hardin,-85.8750,37.7500\nky,hardin,-85.8750,37.8750\nky,bullitt,-85.8750,38.0000\nky,jefferson,-85.8750,38.1250\nin,floyd,-85.8750,38.2500\nin,floyd,-85.8750,38.3750\nin,clark,-85.8750,38.5000\nin,scott,-85.8750,38.6250\nin,jackson,-85.8750,38.7500\nin,jackson,-85.8750,38.8750\nin,jackson,-85.8750,39.0000\nin,bartholomew,-85.8750,39.1250\nin,bartholomew,-85.8750,39.2500\nin,shelby,-85.8750,39.3750\nin,shelby,-85.8750,39.5000\nin,shelby,-85.8750,39.6250\nin,hancock,-85.8750,39.7500\nin,hancock,-85.8750,39.8750\nin,hamilton,-85.8750,40.0000\nin,hamilton,-85.8750,40.1250\nin,tipton,-85.8750,40.2500\nin,tipton,-85.8750,40.3750\nin,howard,-85.8750,40.5000\nin,miami,-85.8750,40.6250\nin,wabash,-85.8750,40.7500\nin,wabash,-85.8750,40.8750\nin,wabash,-85.8750,41.0000\nin,kosciusko,-85.8750,41.1250\nin,kosciusko,-85.8750,41.2500\nin,kosciusko,-85.8750,41.3750\nin,elkhart,-85.8750,41.5000\nin,elkhart,-85.8750,41.6250\nin,elkhart,-85.8750,41.7500\nmi,cass,-85.8750,41.8750\nmi,cass,-85.8750,42.0000\nmi,van buren,-85.8750,42.1250\nmi,van buren,-85.8750,42.2500\nmi,van buren,-85.8750,42.3750\nmi,allegan,-85.8750,42.5000\nmi,allegan,-85.8750,42.6250\nmi,allegan,-85.8750,42.7500\nmi,ottawa,-85.8750,42.8750\nmi,ottawa,-85.8750,43.0000\nmi,ottawa,-85.8750,43.1250\nmi,muskegon,-85.8750,43.2500\nmi,newaygo,-85.8750,43.3750\nmi,newaygo,-85.8750,43.5000\nmi,newaygo,-85.8750,43.6250\nmi,newaygo,-85.8750,43.7500\nmi,lake,-85.8750,43.8750\nmi,lake,-85.8750,44.0000\nmi,lake,-85.8750,44.1250\nmi,manistee,-85.8750,44.2500\nmi,manistee,-85.8750,44.3750\nmi,manistee,-85.8750,44.5000\nmi,benzie,-85.8750,44.6250\nmi,benzie,-85.8750,44.7500\nmi,leelanau,-85.8750,44.8750\nmi,schoolcraft,-85.8750,46.0000\nmi,schoolcraft,-85.8750,46.1250\nmi,schoolcraft,-85.8750,46.2500\nmi,schoolcraft,-85.8750,46.3750\nmi,schoolcraft,-85.8750,46.5000\nmi,alger,-85.8750,46.6250\ntn,de kalb,-85.7500,36.0000\ntn,putnam,-85.7500,36.1250\ntn,jackson,-85.7500,36.2500\ntn,jackson,-85.7500,36.3750\ntn,clay,-85.7500,36.5000\nky,monroe,-85.7500,36.6250\nky,monroe,-85.7500,36.7500\nky,barren,-85.7500,36.8750\nky,metcalfe,-85.7500,37.0000\nky,metcalfe,-85.7500,37.1250\nky,hart,-85.7500,37.2500\nky,hart,-85.7500,37.3750\nky,larue,-85.7500,37.5000\nky,larue,-85.7500,37.6250\nky,hardin,-85.7500,37.7500\nky,bullitt,-85.7500,37.8750\nky,bullitt,-85.7500,38.0000\nky,jefferson,-85.7500,38.1250\nky,jefferson,-85.7500,38.2500\nin,clark,-85.7500,38.3750\nin,clark,-85.7500,38.5000\nin,scott,-85.7500,38.6250\nin,scott,-85.7500,38.7500\nin,jennings,-85.7500,38.8750\nin,jennings,-85.7500,39.0000\nin,jennings,-85.7500,39.1250\nin,bartholomew,-85.7500,39.2500\nin,shelby,-85.7500,39.3750\nin,shelby,-85.7500,39.5000\nin,shelby,-85.7500,39.6250\nin,hancock,-85.7500,39.7500\nin,hancock,-85.7500,39.8750\nin,madison,-85.7500,40.0000\nin,madison,-85.7500,40.1250\nin,madison,-85.7500,40.2500\nin,madison,-85.7500,40.3750\nin,grant,-85.7500,40.5000\nin,grant,-85.7500,40.6250\nin,wabash,-85.7500,40.7500\nin,wabash,-85.7500,40.8750\nin,wabash,-85.7500,41.0000\nin,kosciusko,-85.7500,41.1250\nin,kosciusko,-85.7500,41.2500\nin,kosciusko,-85.7500,41.3750\nin,elkhart,-85.7500,41.5000\nin,elkhart,-85.7500,41.6250\nin,elkhart,-85.7500,41.7500\nmi,st. joseph,-85.7500,41.8750\nmi,st. joseph,-85.7500,42.0000\nmi,kalamazoo,-85.7500,42.1250\nmi,kalamazoo,-85.7500,42.2500\nmi,kalamazoo,-85.7500,42.3750\nmi,allegan,-85.7500,42.5000\nmi,allegan,-85.7500,42.6250\nmi,allegan,-85.7500,42.7500\nmi,kent,-85.7500,42.8750\nmi,kent,-85.7500,43.0000\nmi,kent,-85.7500,43.1250\nmi,kent,-85.7500,43.2500\nmi,newaygo,-85.7500,43.3750\nmi,newaygo,-85.7500,43.5000\nmi,newaygo,-85.7500,43.6250\nmi,newaygo,-85.7500,43.7500\nmi,lake,-85.7500,43.8750\nmi,lake,-85.7500,44.0000\nmi,lake,-85.7500,44.1250\nmi,wexford,-85.7500,44.2500\nmi,wexford,-85.7500,44.3750\nmi,wexford,-85.7500,44.5000\nmi,grand traverse,-85.7500,44.6250\nmi,grand traverse,-85.7500,44.7500\nmi,leelanau,-85.7500,44.8750\nmi,leelanau,-85.7500,45.0000\nmi,mackinac,-85.7500,46.0000\nmi,mackinac,-85.7500,46.1250\nmi,luce,-85.7500,46.2500\nmi,luce,-85.7500,46.3750\nmi,luce,-85.7500,46.5000\nmi,luce,-85.7500,46.6250\ntn,white,-85.6250,36.0000\ntn,putnam,-85.6250,36.1250\ntn,jackson,-85.6250,36.2500\ntn,jackson,-85.6250,36.3750\ntn,clay,-85.6250,36.5000\nky,monroe,-85.6250,36.6250\nky,monroe,-85.6250,36.7500\nky,metcalfe,-85.6250,36.8750\nky,metcalfe,-85.6250,37.0000\nky,green,-85.6250,37.1250\nky,green,-85.6250,37.2500\nky,green,-85.6250,37.3750\nky,larue,-85.6250,37.5000\nky,larue,-85.6250,37.6250\nky,nelson,-85.6250,37.7500\nky,bullitt,-85.6250,37.8750\nky,bullitt,-85.6250,38.0000\nky,jefferson,-85.6250,38.1250\nky,jefferson,-85.6250,38.2500\nky,oldham,-85.6250,38.3750\nin,clark,-85.6250,38.5000\nin,scott,-85.6250,38.6250\nin,jefferson,-85.6250,38.7500\nin,jennings,-85.6250,38.8750\nin,jennings,-85.6250,39.0000\nin,jennings,-85.6250,39.1250\nin,decatur,-85.6250,39.2500\nin,decatur,-85.6250,39.3750\nin,rush,-85.6250,39.5000\nin,rush,-85.6250,39.6250\nin,rush,-85.6250,39.7500\nin,hancock,-85.6250,39.8750\nin,madison,-85.6250,40.0000\nin,madison,-85.6250,40.1250\nin,madison,-85.6250,40.2500\nin,madison,-85.6250,40.3750\nin,grant,-85.6250,40.5000\nin,grant,-85.6250,40.6250\nin,huntington,-85.6250,40.7500\nin,huntington,-85.6250,40.8750\nin,huntington,-85.6250,41.0000\nin,whitley,-85.6250,41.1250\nin,whitley,-85.6250,41.2500\nin,noble,-85.6250,41.3750\nin,noble,-85.6250,41.5000\nin,lagrange,-85.6250,41.6250\nin,lagrange,-85.6250,41.7500\nmi,st. joseph,-85.6250,41.8750\nmi,st. joseph,-85.6250,42.0000\nmi,kalamazoo,-85.6250,42.1250\nmi,kalamazoo,-85.6250,42.2500\nmi,kalamazoo,-85.6250,42.3750\nmi,allegan,-85.6250,42.5000\nmi,allegan,-85.6250,42.6250\nmi,allegan,-85.6250,42.7500\nmi,kent,-85.6250,42.8750\nmi,kent,-85.6250,43.0000\nmi,kent,-85.6250,43.1250\nmi,kent,-85.6250,43.2500\nmi,newaygo,-85.6250,43.3750\nmi,newaygo,-85.6250,43.5000\nmi,newaygo,-85.6250,43.6250\nmi,newaygo,-85.6250,43.7500\nmi,lake,-85.6250,43.8750\nmi,lake,-85.6250,44.0000\nmi,lake,-85.6250,44.1250\nmi,wexford,-85.6250,44.2500\nmi,wexford,-85.6250,44.3750\nmi,wexford,-85.6250,44.5000\nmi,grand traverse,-85.6250,44.6250\nmi,grand traverse,-85.6250,44.7500\nmi,leelanau,-85.6250,45.1250\nmi,mackinac,-85.6250,46.1250\nmi,luce,-85.6250,46.2500\nmi,luce,-85.6250,46.3750\nmi,luce,-85.6250,46.5000\nmi,luce,-85.6250,46.6250\ntn,white,-85.5000,36.0000\ntn,putnam,-85.5000,36.1250\ntn,putnam,-85.5000,36.2500\ntn,jackson,-85.5000,36.3750\ntn,clay,-85.5000,36.5000\nky,monroe,-85.5000,36.6250\nky,cumberland,-85.5000,36.7500\nky,metcalfe,-85.5000,36.8750\nky,metcalfe,-85.5000,37.0000\nky,green,-85.5000,37.1250\nky,green,-85.5000,37.2500\nky,green,-85.5000,37.3750\nky,larue,-85.5000,37.5000\nky,nelson,-85.5000,37.6250\nky,nelson,-85.5000,37.7500\nky,nelson,-85.5000,37.8750\nky,spencer,-85.5000,38.0000\nky,jefferson,-85.5000,38.1250\nky,jefferson,-85.5000,38.2500\nky,oldham,-85.5000,38.3750\nin,clark,-85.5000,38.5000\nin,jefferson,-85.5000,38.6250\nin,jefferson,-85.5000,38.7500\nin,jefferson,-85.5000,38.8750\nin,jennings,-85.5000,39.0000\nin,jennings,-85.5000,39.1250\nin,decatur,-85.5000,39.2500\nin,decatur,-85.5000,39.3750\nin,rush,-85.5000,39.5000\nin,rush,-85.5000,39.6250\nin,rush,-85.5000,39.7500\nin,henry,-85.5000,39.8750\nin,henry,-85.5000,40.0000\nin,delaware,-85.5000,40.1250\nin,delaware,-85.5000,40.2500\nin,delaware,-85.5000,40.3750\nin,grant,-85.5000,40.5000\nin,grant,-85.5000,40.6250\nin,huntington,-85.5000,40.7500\nin,huntington,-85.5000,40.8750\nin,huntington,-85.5000,41.0000\nin,whitley,-85.5000,41.1250\nin,whitley,-85.5000,41.2500\nin,noble,-85.5000,41.3750\nin,noble,-85.5000,41.5000\nin,lagrange,-85.5000,41.6250\nin,lagrange,-85.5000,41.7500\nmi,st. joseph,-85.5000,41.8750\nmi,st. joseph,-85.5000,42.0000\nmi,kalamazoo,-85.5000,42.1250\nmi,kalamazoo,-85.5000,42.2500\nmi,kalamazoo,-85.5000,42.3750\nmi,barry,-85.5000,42.5000\nmi,barry,-85.5000,42.6250\nmi,barry,-85.5000,42.7500\nmi,kent,-85.5000,42.8750\nmi,kent,-85.5000,43.0000\nmi,kent,-85.5000,43.1250\nmi,kent,-85.5000,43.2500\nmi,montcalm,-85.5000,43.3750\nmi,mecosta,-85.5000,43.5000\nmi,mecosta,-85.5000,43.6250\nmi,mecosta,-85.5000,43.7500\nmi,osceola,-85.5000,43.8750\nmi,osceola,-85.5000,44.0000\nmi,osceola,-85.5000,44.1250\nmi,wexford,-85.5000,44.2500\nmi,wexford,-85.5000,44.3750\nmi,wexford,-85.5000,44.5000\nmi,grand traverse,-85.5000,44.6250\nmi,grand traverse,-85.5000,44.7500\nmi,grand traverse,-85.5000,44.8750\nmi,charlevoix,-85.5000,45.6250\nmi,charlevoix,-85.5000,45.7500\nmi,mackinac,-85.5000,46.1250\nmi,luce,-85.5000,46.2500\nmi,luce,-85.5000,46.3750\nmi,luce,-85.5000,46.5000\nmi,luce,-85.5000,46.6250\ntn,white,-85.3750,36.0000\ntn,putnam,-85.3750,36.1250\ntn,overton,-85.3750,36.2500\ntn,overton,-85.3750,36.3750\ntn,overton,-85.3750,36.5000\nky,cumberland,-85.3750,36.6250\nky,cumberland,-85.3750,36.7500\nky,cumberland,-85.3750,36.8750\nky,adair,-85.3750,37.0000\nky,adair,-85.3750,37.1250\nky,taylor,-85.3750,37.2500\nky,taylor,-85.3750,37.3750\nky,marion,-85.3750,37.5000\nky,marion,-85.3750,37.6250\nky,nelson,-85.3750,37.7500\nky,nelson,-85.3750,37.8750\nky,spencer,-85.3750,38.0000\nky,spencer,-85.3750,38.1250\nky,shelby,-85.3750,38.2500\nky,oldham,-85.3750,38.3750\nky,oldham,-85.3750,38.5000\nky,trimble,-85.3750,38.6250\nin,jefferson,-85.3750,38.7500\nin,jefferson,-85.3750,38.8750\nin,ripley,-85.3750,39.0000\nin,ripley,-85.3750,39.1250\nin,decatur,-85.3750,39.2500\nin,decatur,-85.3750,39.3750\nin,rush,-85.3750,39.5000\nin,rush,-85.3750,39.6250\nin,rush,-85.3750,39.7500\nin,henry,-85.3750,39.8750\nin,henry,-85.3750,40.0000\nin,delaware,-85.3750,40.1250\nin,delaware,-85.3750,40.2500\nin,delaware,-85.3750,40.3750\nin,blackford,-85.3750,40.5000\nin,wells,-85.3750,40.6250\nin,huntington,-85.3750,40.7500\nin,huntington,-85.3750,40.8750\nin,huntington,-85.3750,41.0000\nin,whitley,-85.3750,41.1250\nin,whitley,-85.3750,41.2500\nin,noble,-85.3750,41.3750\nin,noble,-85.3750,41.5000\nin,lagrange,-85.3750,41.6250\nin,lagrange,-85.3750,41.7500\nmi,st. joseph,-85.3750,41.8750\nmi,st. joseph,-85.3750,42.0000\nmi,kalamazoo,-85.3750,42.1250\nmi,kalamazoo,-85.3750,42.2500\nmi,kalamazoo,-85.3750,42.3750\nmi,barry,-85.3750,42.5000\nmi,barry,-85.3750,42.6250\nmi,barry,-85.3750,42.7500\nmi,kent,-85.3750,42.8750\nmi,kent,-85.3750,43.0000\nmi,kent,-85.3750,43.1250\nmi,kent,-85.3750,43.2500\nmi,montcalm,-85.3750,43.3750\nmi,mecosta,-85.3750,43.5000\nmi,mecosta,-85.3750,43.6250\nmi,mecosta,-85.3750,43.7500\nmi,osceola,-85.3750,43.8750\nmi,osceola,-85.3750,44.0000\nmi,osceola,-85.3750,44.1250\nmi,wexford,-85.3750,44.2500\nmi,wexford,-85.3750,44.3750\nmi,wexford,-85.3750,44.5000\nmi,grand traverse,-85.3750,44.6250\nmi,grand traverse,-85.3750,44.7500\nmi,antrim,-85.3750,44.8750\nmi,antrim,-85.3750,45.0000\nmi,charlevoix,-85.3750,45.2500\nmi,mackinac,-85.3750,46.1250\nmi,luce,-85.3750,46.2500\nmi,luce,-85.3750,46.3750\nmi,luce,-85.3750,46.5000\nmi,luce,-85.3750,46.6250\ntn,cumberland,-85.2500,36.0000\ntn,putnam,-85.2500,36.1250\ntn,overton,-85.2500,36.2500\ntn,overton,-85.2500,36.3750\ntn,overton,-85.2500,36.5000\ntn,pickett,-85.2500,36.6250\nky,cumberland,-85.2500,36.7500\nky,cumberland,-85.2500,36.8750\nky,adair,-85.2500,37.0000\nky,adair,-85.2500,37.1250\nky,adair,-85.2500,37.2500\nky,taylor,-85.2500,37.3750\nky,marion,-85.2500,37.5000\nky,marion,-85.2500,37.6250\nky,washington,-85.2500,37.7500\nky,nelson,-85.2500,37.8750\nky,spencer,-85.2500,38.0000\nky,shelby,-85.2500,38.1250\nky,shelby,-85.2500,38.2500\nky,henry,-85.2500,38.3750\nky,henry,-85.2500,38.5000\nky,trimble,-85.2500,38.6250\nin,jefferson,-85.2500,38.7500\nin,jefferson,-85.2500,38.8750\nin,ripley,-85.2500,39.0000\nin,ripley,-85.2500,39.1250\nin,ripley,-85.2500,39.2500\nin,franklin,-85.2500,39.3750\nin,franklin,-85.2500,39.5000\nin,fayette,-85.2500,39.6250\nin,fayette,-85.2500,39.7500\nin,henry,-85.2500,39.8750\nin,henry,-85.2500,40.0000\nin,delaware,-85.2500,40.1250\nin,delaware,-85.2500,40.2500\nin,delaware,-85.2500,40.3750\nin,blackford,-85.2500,40.5000\nin,wells,-85.2500,40.6250\nin,wells,-85.2500,40.7500\nin,wells,-85.2500,40.8750\nin,allen,-85.2500,41.0000\nin,allen,-85.2500,41.1250\nin,allen,-85.2500,41.2500\nin,noble,-85.2500,41.3750\nin,noble,-85.2500,41.5000\nin,lagrange,-85.2500,41.6250\nin,lagrange,-85.2500,41.7500\nmi,branch,-85.2500,41.8750\nmi,branch,-85.2500,42.0000\nmi,calhoun,-85.2500,42.1250\nmi,calhoun,-85.2500,42.2500\nmi,calhoun,-85.2500,42.3750\nmi,barry,-85.2500,42.5000\nmi,barry,-85.2500,42.6250\nmi,barry,-85.2500,42.7500\nmi,ionia,-85.2500,42.8750\nmi,ionia,-85.2500,43.0000\nmi,montcalm,-85.2500,43.1250\nmi,montcalm,-85.2500,43.2500\nmi,montcalm,-85.2500,43.3750\nmi,mecosta,-85.2500,43.5000\nmi,mecosta,-85.2500,43.6250\nmi,mecosta,-85.2500,43.7500\nmi,osceola,-85.2500,43.8750\nmi,osceola,-85.2500,44.0000\nmi,osceola,-85.2500,44.1250\nmi,missaukee,-85.2500,44.2500\nmi,missaukee,-85.2500,44.3750\nmi,missaukee,-85.2500,44.5000\nmi,kalkaska,-85.2500,44.6250\nmi,kalkaska,-85.2500,44.7500\nmi,antrim,-85.2500,44.8750\nmi,antrim,-85.2500,45.0000\nmi,antrim,-85.2500,45.1250\nmi,charlevoix,-85.2500,45.2500\nmi,mackinac,-85.2500,46.1250\nmi,luce,-85.2500,46.2500\nmi,luce,-85.2500,46.3750\nmi,luce,-85.2500,46.5000\nmi,luce,-85.2500,46.6250\nmi,luce,-85.2500,46.7500\ntn,cumberland,-85.1250,36.0000\ntn,cumberland,-85.1250,36.1250\ntn,overton,-85.1250,36.2500\ntn,overton,-85.1250,36.3750\ntn,pickett,-85.1250,36.5000\nky,clinton,-85.1250,36.6250\nky,clinton,-85.1250,36.7500\nky,russell,-85.1250,36.8750\nky,russell,-85.1250,37.0000\nky,adair,-85.1250,37.1250\nky,adair,-85.1250,37.2500\nky,casey,-85.1250,37.3750\nky,marion,-85.1250,37.5000\nky,marion,-85.1250,37.6250\nky,washington,-85.1250,37.7500\nky,washington,-85.1250,37.8750\nky,anderson,-85.1250,38.0000\nky,shelby,-85.1250,38.1250\nky,shelby,-85.1250,38.2500\nky,henry,-85.1250,38.3750\nky,henry,-85.1250,38.5000\nky,carroll,-85.1250,38.6250\nin,switzerland,-85.1250,38.7500\nin,switzerland,-85.1250,38.8750\nin,ripley,-85.1250,39.0000\nin,ripley,-85.1250,39.1250\nin,ripley,-85.1250,39.2500\nin,franklin,-85.1250,39.3750\nin,franklin,-85.1250,39.5000\nin,fayette,-85.1250,39.6250\nin,wayne,-85.1250,39.7500\nin,wayne,-85.1250,39.8750\nin,wayne,-85.1250,40.0000\nin,randolph,-85.1250,40.1250\nin,randolph,-85.1250,40.2500\nin,jay,-85.1250,40.3750\nin,jay,-85.1250,40.5000\nin,wells,-85.1250,40.6250\nin,wells,-85.1250,40.7500\nin,wells,-85.1250,40.8750\nin,allen,-85.1250,41.0000\nin,allen,-85.1250,41.1250\nin,allen,-85.1250,41.2500\nin,de kalb,-85.1250,41.3750\nin,de kalb,-85.1250,41.5000\nin,steuben,-85.1250,41.6250\nin,steuben,-85.1250,41.7500\nmi,branch,-85.1250,41.8750\nmi,branch,-85.1250,42.0000\nmi,calhoun,-85.1250,42.1250\nmi,calhoun,-85.1250,42.2500\nmi,calhoun,-85.1250,42.3750\nmi,barry,-85.1250,42.5000\nmi,barry,-85.1250,42.6250\nmi,barry,-85.1250,42.7500\nmi,ionia,-85.1250,42.8750\nmi,ionia,-85.1250,43.0000\nmi,montcalm,-85.1250,43.1250\nmi,montcalm,-85.1250,43.2500\nmi,montcalm,-85.1250,43.3750\nmi,mecosta,-85.1250,43.5000\nmi,mecosta,-85.1250,43.6250\nmi,mecosta,-85.1250,43.7500\nmi,osceola,-85.1250,43.8750\nmi,osceola,-85.1250,44.0000\nmi,osceola,-85.1250,44.1250\nmi,missaukee,-85.1250,44.2500\nmi,missaukee,-85.1250,44.3750\nmi,missaukee,-85.1250,44.5000\nmi,kalkaska,-85.1250,44.6250\nmi,kalkaska,-85.1250,44.7500\nmi,antrim,-85.1250,44.8750\nmi,antrim,-85.1250,45.0000\nmi,charlevoix,-85.1250,45.1250\nmi,charlevoix,-85.1250,45.2500\nmi,mackinac,-85.1250,46.1250\nmi,chippewa,-85.1250,46.2500\nmi,chippewa,-85.1250,46.3750\nmi,chippewa,-85.1250,46.5000\nmi,chippewa,-85.1250,46.6250\nmi,chippewa,-85.1250,46.7500\ntn,cumberland,-85.0000,36.0000\ntn,cumberland,-85.0000,36.1250\ntn,fentress,-85.0000,36.2500\ntn,fentress,-85.0000,36.3750\ntn,fentress,-85.0000,36.5000\nky,clinton,-85.0000,36.6250\nky,wayne,-85.0000,36.7500\nky,wayne,-85.0000,36.8750\nky,russell,-85.0000,37.0000\nky,russell,-85.0000,37.1250\nky,casey,-85.0000,37.2500\nky,casey,-85.0000,37.3750\nky,casey,-85.0000,37.5000\nky,boyle,-85.0000,37.6250\nky,mercer,-85.0000,37.7500\nky,mercer,-85.0000,37.8750\nky,anderson,-85.0000,38.0000\nky,anderson,-85.0000,38.1250\nky,shelby,-85.0000,38.2500\nky,henry,-85.0000,38.3750\nky,henry,-85.0000,38.5000\nky,owen,-85.0000,38.6250\nky,gallatin,-85.0000,38.7500\nin,switzerland,-85.0000,38.8750\nin,dearborn,-85.0000,39.0000\nin,dearborn,-85.0000,39.1250\nin,dearborn,-85.0000,39.2500\nin,franklin,-85.0000,39.3750\nin,franklin,-85.0000,39.5000\nin,union,-85.0000,39.6250\nin,wayne,-85.0000,39.7500\nin,wayne,-85.0000,39.8750\nin,wayne,-85.0000,40.0000\nin,randolph,-85.0000,40.1250\nin,randolph,-85.0000,40.2500\nin,jay,-85.0000,40.3750\nin,jay,-85.0000,40.5000\nin,adams,-85.0000,40.6250\nin,adams,-85.0000,40.7500\nin,adams,-85.0000,40.8750\nin,allen,-85.0000,41.0000\nin,allen,-85.0000,41.1250\nin,allen,-85.0000,41.2500\nin,de kalb,-85.0000,41.3750\nin,de kalb,-85.0000,41.5000\nin,steuben,-85.0000,41.6250\nin,steuben,-85.0000,41.7500\nmi,branch,-85.0000,41.8750\nmi,branch,-85.0000,42.0000\nmi,calhoun,-85.0000,42.1250\nmi,calhoun,-85.0000,42.2500\nmi,calhoun,-85.0000,42.3750\nmi,eaton,-85.0000,42.5000\nmi,eaton,-85.0000,42.6250\nmi,eaton,-85.0000,42.7500\nmi,ionia,-85.0000,42.8750\nmi,ionia,-85.0000,43.0000\nmi,montcalm,-85.0000,43.1250\nmi,montcalm,-85.0000,43.2500\nmi,montcalm,-85.0000,43.3750\nmi,isabella,-85.0000,43.5000\nmi,isabella,-85.0000,43.6250\nmi,isabella,-85.0000,43.7500\nmi,clare,-85.0000,43.8750\nmi,clare,-85.0000,44.0000\nmi,clare,-85.0000,44.1250\nmi,missaukee,-85.0000,44.2500\nmi,missaukee,-85.0000,44.3750\nmi,missaukee,-85.0000,44.5000\nmi,kalkaska,-85.0000,44.6250\nmi,kalkaska,-85.0000,44.7500\nmi,antrim,-85.0000,44.8750\nmi,antrim,-85.0000,45.0000\nmi,charlevoix,-85.0000,45.1250\nmi,charlevoix,-85.0000,45.2500\nmi,emmet,-85.0000,45.5000\nmi,emmet,-85.0000,45.6250\nmi,mackinac,-85.0000,46.1250\nmi,chippewa,-85.0000,46.2500\nmi,chippewa,-85.0000,46.3750\nmi,chippewa,-85.0000,46.7500\ntn,cumberland,-84.8750,36.0000\ntn,cumberland,-84.8750,36.1250\ntn,morgan,-84.8750,36.2500\ntn,fentress,-84.8750,36.3750\ntn,fentress,-84.8750,36.5000\nky,wayne,-84.8750,36.6250\nky,wayne,-84.8750,36.7500\nky,wayne,-84.8750,36.8750\nky,russell,-84.8750,37.0000\nky,pulaski,-84.8750,37.1250\nky,casey,-84.8750,37.2500\nky,casey,-84.8750,37.3750\nky,casey,-84.8750,37.5000\nky,boyle,-84.8750,37.6250\nky,mercer,-84.8750,37.7500\nky,mercer,-84.8750,37.8750\nky,anderson,-84.8750,38.0000\nky,franklin,-84.8750,38.1250\nky,franklin,-84.8750,38.2500\nky,owen,-84.8750,38.3750\nky,owen,-84.8750,38.5000\nky,owen,-84.8750,38.6250\nky,gallatin,-84.8750,38.7500\nin,switzerland,-84.8750,38.8750\nin,ohio,-84.8750,39.0000\nin,dearborn,-84.8750,39.1250\nin,dearborn,-84.8750,39.2500\nin,franklin,-84.8750,39.3750\nin,franklin,-84.8750,39.5000\nin,union,-84.8750,39.6250\nin,wayne,-84.8750,39.7500\nin,wayne,-84.8750,39.8750\nin,wayne,-84.8750,40.0000\nin,randolph,-84.8750,40.1250\nin,randolph,-84.8750,40.2500\nin,jay,-84.8750,40.3750\nin,jay,-84.8750,40.5000\nin,adams,-84.8750,40.6250\nin,adams,-84.8750,40.7500\nin,adams,-84.8750,40.8750\nin,allen,-84.8750,41.0000\nin,allen,-84.8750,41.1250\nin,allen,-84.8750,41.2500\nin,de kalb,-84.8750,41.3750\nin,de kalb,-84.8750,41.5000\nin,steuben,-84.8750,41.6250\nin,steuben,-84.8750,41.7500\nmi,branch,-84.8750,41.8750\nmi,branch,-84.8750,42.0000\nmi,calhoun,-84.8750,42.1250\nmi,calhoun,-84.8750,42.2500\nmi,calhoun,-84.8750,42.3750\nmi,eaton,-84.8750,42.5000\nmi,eaton,-84.8750,42.6250\nmi,eaton,-84.8750,42.7500\nmi,ionia,-84.8750,42.8750\nmi,ionia,-84.8750,43.0000\nmi,montcalm,-84.8750,43.1250\nmi,montcalm,-84.8750,43.2500\nmi,montcalm,-84.8750,43.3750\nmi,isabella,-84.8750,43.5000\nmi,isabella,-84.8750,43.6250\nmi,isabella,-84.8750,43.7500\nmi,clare,-84.8750,43.8750\nmi,clare,-84.8750,44.0000\nmi,clare,-84.8750,44.1250\nmi,missaukee,-84.8750,44.2500\nmi,missaukee,-84.8750,44.3750\nmi,missaukee,-84.8750,44.5000\nmi,kalkaska,-84.8750,44.6250\nmi,kalkaska,-84.8750,44.7500\nmi,antrim,-84.8750,44.8750\nmi,antrim,-84.8750,45.0000\nmi,charlevoix,-84.8750,45.1250\nmi,charlevoix,-84.8750,45.2500\nmi,emmet,-84.8750,45.3750\nmi,emmet,-84.8750,45.5000\nmi,emmet,-84.8750,45.6250\nmi,emmet,-84.8750,45.7500\nmi,mackinac,-84.8750,46.0000\nmi,mackinac,-84.8750,46.1250\nmi,chippewa,-84.8750,46.2500\nmi,chippewa,-84.8750,46.3750\ntn,cumberland,-84.7500,36.0000\ntn,morgan,-84.7500,36.1250\ntn,morgan,-84.7500,36.2500\ntn,fentress,-84.7500,36.3750\ntn,fentress,-84.7500,36.5000\nky,mccreary,-84.7500,36.6250\nky,wayne,-84.7500,36.7500\nky,wayne,-84.7500,36.8750\nky,pulaski,-84.7500,37.0000\nky,pulaski,-84.7500,37.1250\nky,casey,-84.7500,37.2500\nky,lincoln,-84.7500,37.3750\nky,lincoln,-84.7500,37.5000\nky,boyle,-84.7500,37.6250\nky,mercer,-84.7500,37.7500\nky,woodford,-84.7500,37.8750\nky,woodford,-84.7500,38.0000\nky,woodford,-84.7500,38.1250\nky,franklin,-84.7500,38.2500\nky,owen,-84.7500,38.3750\nky,owen,-84.7500,38.5000\nky,grant,-84.7500,38.6250\nky,grant,-84.7500,38.7500\nky,boone,-84.7500,38.8750\nky,boone,-84.7500,39.0000\nky,boone,-84.7500,39.1250\noh,hamilton,-84.7500,39.2500\noh,butler,-84.7500,39.3750\noh,butler,-84.7500,39.5000\noh,preble,-84.7500,39.6250\noh,preble,-84.7500,39.7500\noh,preble,-84.7500,39.8750\noh,darke,-84.7500,40.0000\noh,darke,-84.7500,40.1250\noh,darke,-84.7500,40.2500\noh,mercer,-84.7500,40.3750\noh,mercer,-84.7500,40.5000\noh,mercer,-84.7500,40.6250\noh,van wert,-84.7500,40.7500\noh,van wert,-84.7500,40.8750\noh,paulding,-84.7500,41.0000\noh,paulding,-84.7500,41.1250\noh,paulding,-84.7500,41.2500\noh,defiance,-84.7500,41.3750\noh,williams,-84.7500,41.5000\noh,williams,-84.7500,41.6250\nmi,hillsdale,-84.7500,41.7500\nmi,hillsdale,-84.7500,41.8750\nmi,hillsdale,-84.7500,42.0000\nmi,calhoun,-84.7500,42.1250\nmi,calhoun,-84.7500,42.2500\nmi,calhoun,-84.7500,42.3750\nmi,eaton,-84.7500,42.5000\nmi,eaton,-84.7500,42.6250\nmi,eaton,-84.7500,42.7500\nmi,clinton,-84.7500,42.8750\nmi,clinton,-84.7500,43.0000\nmi,gratiot,-84.7500,43.1250\nmi,gratiot,-84.7500,43.2500\nmi,gratiot,-84.7500,43.3750\nmi,isabella,-84.7500,43.5000\nmi,isabella,-84.7500,43.6250\nmi,isabella,-84.7500,43.7500\nmi,clare,-84.7500,43.8750\nmi,clare,-84.7500,44.0000\nmi,clare,-84.7500,44.1250\nmi,roscommon,-84.7500,44.2500\nmi,roscommon,-84.7500,44.3750\nmi,roscommon,-84.7500,44.5000\nmi,crawford,-84.7500,44.6250\nmi,crawford,-84.7500,44.7500\nmi,otsego,-84.7500,44.8750\nmi,otsego,-84.7500,45.0000\nmi,charlevoix,-84.7500,45.1250\nmi,charlevoix,-84.7500,45.2500\nmi,emmet,-84.7500,45.3750\nmi,emmet,-84.7500,45.5000\nmi,emmet,-84.7500,45.6250\nmi,emmet,-84.7500,45.7500\nmi,mackinac,-84.7500,45.8750\nmi,mackinac,-84.7500,46.0000\nmi,mackinac,-84.7500,46.1250\nmi,chippewa,-84.7500,46.2500\nmi,chippewa,-84.7500,46.3750\ntn,morgan,-84.6250,36.0000\ntn,morgan,-84.6250,36.1250\ntn,morgan,-84.6250,36.2500\ntn,scott,-84.6250,36.3750\ntn,scott,-84.6250,36.5000\nky,mccreary,-84.6250,36.6250\nky,mccreary,-84.6250,36.7500\nky,wayne,-84.6250,36.8750\nky,pulaski,-84.6250,37.0000\nky,pulaski,-84.6250,37.1250\nky,pulaski,-84.6250,37.2500\nky,lincoln,-84.6250,37.3750\nky,lincoln,-84.6250,37.5000\nky,garrard,-84.6250,37.6250\nky,garrard,-84.6250,37.7500\nky,jessamine,-84.6250,37.8750\nky,fayette,-84.6250,38.0000\nky,scott,-84.6250,38.1250\nky,scott,-84.6250,38.2500\nky,scott,-84.6250,38.3750\nky,grant,-84.6250,38.5000\nky,grant,-84.6250,38.6250\nky,grant,-84.6250,38.7500\nky,boone,-84.6250,38.8750\nky,boone,-84.6250,39.0000\noh,hamilton,-84.6250,39.1250\noh,hamilton,-84.6250,39.2500\noh,butler,-84.6250,39.3750\noh,butler,-84.6250,39.5000\noh,preble,-84.6250,39.6250\noh,preble,-84.6250,39.7500\noh,preble,-84.6250,39.8750\noh,darke,-84.6250,40.0000\noh,darke,-84.6250,40.1250\noh,darke,-84.6250,40.2500\noh,mercer,-84.6250,40.3750\noh,mercer,-84.6250,40.5000\noh,mercer,-84.6250,40.6250\noh,van wert,-84.6250,40.7500\noh,van wert,-84.6250,40.8750\noh,paulding,-84.6250,41.0000\noh,paulding,-84.6250,41.1250\noh,paulding,-84.6250,41.2500\noh,defiance,-84.6250,41.3750\noh,williams,-84.6250,41.5000\noh,williams,-84.6250,41.6250\nmi,hillsdale,-84.6250,41.7500\nmi,hillsdale,-84.6250,41.8750\nmi,hillsdale,-84.6250,42.0000\nmi,jackson,-84.6250,42.1250\nmi,jackson,-84.6250,42.2500\nmi,jackson,-84.6250,42.3750\nmi,eaton,-84.6250,42.5000\nmi,eaton,-84.6250,42.6250\nmi,eaton,-84.6250,42.7500\nmi,clinton,-84.6250,42.8750\nmi,clinton,-84.6250,43.0000\nmi,gratiot,-84.6250,43.1250\nmi,gratiot,-84.6250,43.2500\nmi,gratiot,-84.6250,43.3750\nmi,isabella,-84.6250,43.5000\nmi,isabella,-84.6250,43.6250\nmi,isabella,-84.6250,43.7500\nmi,clare,-84.6250,43.8750\nmi,clare,-84.6250,44.0000\nmi,clare,-84.6250,44.1250\nmi,roscommon,-84.6250,44.2500\nmi,roscommon,-84.6250,44.3750\nmi,roscommon,-84.6250,44.5000\nmi,crawford,-84.6250,44.6250\nmi,crawford,-84.6250,44.7500\nmi,otsego,-84.6250,44.8750\nmi,otsego,-84.6250,45.0000\nmi,otsego,-84.6250,45.1250\nmi,cheboygan,-84.6250,45.2500\nmi,cheboygan,-84.6250,45.3750\nmi,cheboygan,-84.6250,45.5000\nmi,cheboygan,-84.6250,45.6250\nmi,mackinac,-84.6250,45.8750\nmi,mackinac,-84.6250,46.1250\nmi,chippewa,-84.6250,46.2500\nmi,chippewa,-84.6250,46.3750\ntn,morgan,-84.5000,36.0000\ntn,morgan,-84.5000,36.1250\ntn,scott,-84.5000,36.2500\ntn,scott,-84.5000,36.3750\ntn,scott,-84.5000,36.5000\nky,mccreary,-84.5000,36.6250\nky,mccreary,-84.5000,36.7500\nky,mccreary,-84.5000,36.8750\nky,pulaski,-84.5000,37.0000\nky,pulaski,-84.5000,37.1250\nky,pulaski,-84.5000,37.2500\nky,lincoln,-84.5000,37.3750\nky,lincoln,-84.5000,37.5000\nky,garrard,-84.5000,37.6250\nky,madison,-84.5000,37.7500\nky,jessamine,-84.5000,37.8750\nky,fayette,-84.5000,38.0000\nky,fayette,-84.5000,38.1250\nky,scott,-84.5000,38.2500\nky,scott,-84.5000,38.3750\nky,harrison,-84.5000,38.5000\nky,grant,-84.5000,38.6250\nky,pendleton,-84.5000,38.7500\nky,kenton,-84.5000,38.8750\nky,kenton,-84.5000,39.0000\noh,hamilton,-84.5000,39.1250\noh,hamilton,-84.5000,39.2500\noh,butler,-84.5000,39.3750\noh,butler,-84.5000,39.5000\noh,preble,-84.5000,39.6250\noh,preble,-84.5000,39.7500\noh,preble,-84.5000,39.8750\noh,darke,-84.5000,40.0000\noh,darke,-84.5000,40.1250\noh,darke,-84.5000,40.2500\noh,mercer,-84.5000,40.3750\noh,mercer,-84.5000,40.5000\noh,mercer,-84.5000,40.6250\noh,van wert,-84.5000,40.7500\noh,van wert,-84.5000,40.8750\noh,paulding,-84.5000,41.0000\noh,paulding,-84.5000,41.1250\noh,paulding,-84.5000,41.2500\noh,defiance,-84.5000,41.3750\noh,williams,-84.5000,41.5000\noh,williams,-84.5000,41.6250\nmi,hillsdale,-84.5000,41.7500\nmi,hillsdale,-84.5000,41.8750\nmi,hillsdale,-84.5000,42.0000\nmi,jackson,-84.5000,42.1250\nmi,jackson,-84.5000,42.2500\nmi,jackson,-84.5000,42.3750\nmi,ingham,-84.5000,42.5000\nmi,ingham,-84.5000,42.6250\nmi,ingham,-84.5000,42.7500\nmi,clinton,-84.5000,42.8750\nmi,clinton,-84.5000,43.0000\nmi,gratiot,-84.5000,43.1250\nmi,gratiot,-84.5000,43.2500\nmi,gratiot,-84.5000,43.3750\nmi,midland,-84.5000,43.5000\nmi,midland,-84.5000,43.6250\nmi,midland,-84.5000,43.7500\nmi,gladwin,-84.5000,43.8750\nmi,gladwin,-84.5000,44.0000\nmi,gladwin,-84.5000,44.1250\nmi,roscommon,-84.5000,44.2500\nmi,roscommon,-84.5000,44.3750\nmi,roscommon,-84.5000,44.5000\nmi,crawford,-84.5000,44.6250\nmi,crawford,-84.5000,44.7500\nmi,otsego,-84.5000,44.8750\nmi,otsego,-84.5000,45.0000\nmi,otsego,-84.5000,45.1250\nmi,cheboygan,-84.5000,45.2500\nmi,cheboygan,-84.5000,45.3750\nmi,cheboygan,-84.5000,45.5000\nmi,cheboygan,-84.5000,45.6250\nmi,mackinac,-84.5000,45.7500\nmi,mackinac,-84.5000,46.0000\nmi,mackinac,-84.5000,46.1250\nmi,chippewa,-84.5000,46.2500\nmi,chippewa,-84.5000,46.3750\ntn,roane,-84.3750,36.0000\ntn,anderson,-84.3750,36.1250\ntn,scott,-84.3750,36.2500\ntn,scott,-84.3750,36.3750\ntn,scott,-84.3750,36.5000\nky,mccreary,-84.3750,36.6250\nky,mccreary,-84.3750,36.7500\nky,mccreary,-84.3750,36.8750\nky,pulaski,-84.3750,37.0000\nky,pulaski,-84.3750,37.1250\nky,rockcastle,-84.3750,37.2500\nky,rockcastle,-84.3750,37.3750\nky,garrard,-84.3750,37.5000\nky,madison,-84.3750,37.6250\nky,madison,-84.3750,37.7500\nky,fayette,-84.3750,37.8750\nky,fayette,-84.3750,38.0000\nky,fayette,-84.3750,38.1250\nky,bourbon,-84.3750,38.2500\nky,harrison,-84.3750,38.3750\nky,harrison,-84.3750,38.5000\nky,pendleton,-84.3750,38.6250\nky,pendleton,-84.3750,38.7500\nky,campbell,-84.3750,38.8750\nky,campbell,-84.3750,39.0000\noh,hamilton,-84.3750,39.1250\noh,hamilton,-84.3750,39.2500\noh,butler,-84.3750,39.3750\noh,butler,-84.3750,39.5000\noh,montgomery,-84.3750,39.6250\noh,montgomery,-84.3750,39.7500\noh,montgomery,-84.3750,39.8750\noh,miami,-84.3750,40.0000\noh,miami,-84.3750,40.1250\noh,shelby,-84.3750,40.2500\noh,shelby,-84.3750,40.3750\noh,auglaize,-84.3750,40.5000\noh,auglaize,-84.3750,40.6250\noh,allen,-84.3750,40.7500\noh,van wert,-84.3750,40.8750\noh,paulding,-84.3750,41.0000\noh,paulding,-84.3750,41.1250\noh,defiance,-84.3750,41.2500\noh,defiance,-84.3750,41.3750\noh,williams,-84.3750,41.5000\noh,fulton,-84.3750,41.6250\nmi,hillsdale,-84.3750,41.7500\nmi,hillsdale,-84.3750,41.8750\nmi,hillsdale,-84.3750,42.0000\nmi,jackson,-84.3750,42.1250\nmi,jackson,-84.3750,42.2500\nmi,jackson,-84.3750,42.3750\nmi,ingham,-84.3750,42.5000\nmi,ingham,-84.3750,42.6250\nmi,ingham,-84.3750,42.7500\nmi,clinton,-84.3750,42.8750\nmi,clinton,-84.3750,43.0000\nmi,gratiot,-84.3750,43.1250\nmi,gratiot,-84.3750,43.2500\nmi,gratiot,-84.3750,43.3750\nmi,midland,-84.3750,43.5000\nmi,midland,-84.3750,43.6250\nmi,midland,-84.3750,43.7500\nmi,gladwin,-84.3750,43.8750\nmi,gladwin,-84.3750,44.0000\nmi,gladwin,-84.3750,44.1250\nmi,roscommon,-84.3750,44.2500\nmi,roscommon,-84.3750,44.3750\nmi,roscommon,-84.3750,44.5000\nmi,crawford,-84.3750,44.6250\nmi,crawford,-84.3750,44.7500\nmi,otsego,-84.3750,44.8750\nmi,otsego,-84.3750,45.0000\nmi,otsego,-84.3750,45.1250\nmi,cheboygan,-84.3750,45.2500\nmi,cheboygan,-84.3750,45.3750\nmi,cheboygan,-84.3750,45.5000\nmi,cheboygan,-84.3750,45.6250\nmi,mackinac,-84.3750,45.7500\nmi,mackinac,-84.3750,46.0000\nmi,mackinac,-84.3750,46.1250\nmi,chippewa,-84.3750,46.2500\nmi,chippewa,-84.3750,46.3750\ntn,anderson,-84.2500,36.0000\ntn,anderson,-84.2500,36.1250\ntn,campbell,-84.2500,36.2500\ntn,campbell,-84.2500,36.3750\ntn,campbell,-84.2500,36.5000\nky,whitley,-84.2500,36.6250\nky,whitley,-84.2500,36.7500\nky,whitley,-84.2500,36.8750\nky,laurel,-84.2500,37.0000\nky,laurel,-84.2500,37.1250\nky,rockcastle,-84.2500,37.2500\nky,rockcastle,-84.2500,37.3750\nky,rockcastle,-84.2500,37.5000\nky,madison,-84.2500,37.6250\nky,madison,-84.2500,37.7500\nky,madison,-84.2500,37.8750\nky,clark,-84.2500,38.0000\nky,bourbon,-84.2500,38.1250\nky,bourbon,-84.2500,38.2500\nky,harrison,-84.2500,38.3750\nky,harrison,-84.2500,38.5000\nky,pendleton,-84.2500,38.6250\nky,pendleton,-84.2500,38.7500\nky,campbell,-84.2500,38.8750\noh,clermont,-84.2500,39.0000\noh,clermont,-84.2500,39.1250\noh,clermont,-84.2500,39.2500\noh,warren,-84.2500,39.3750\noh,warren,-84.2500,39.5000\noh,montgomery,-84.2500,39.6250\noh,montgomery,-84.2500,39.7500\noh,montgomery,-84.2500,39.8750\noh,miami,-84.2500,40.0000\noh,miami,-84.2500,40.1250\noh,shelby,-84.2500,40.2500\noh,shelby,-84.2500,40.3750\noh,auglaize,-84.2500,40.5000\noh,auglaize,-84.2500,40.6250\noh,allen,-84.2500,40.7500\noh,putnam,-84.2500,40.8750\noh,putnam,-84.2500,41.0000\noh,putnam,-84.2500,41.1250\noh,defiance,-84.2500,41.2500\noh,defiance,-84.2500,41.3750\noh,fulton,-84.2500,41.5000\noh,fulton,-84.2500,41.6250\nmi,lenawee,-84.2500,41.7500\nmi,lenawee,-84.2500,41.8750\nmi,lenawee,-84.2500,42.0000\nmi,jackson,-84.2500,42.1250\nmi,jackson,-84.2500,42.2500\nmi,jackson,-84.2500,42.3750\nmi,ingham,-84.2500,42.5000\nmi,ingham,-84.2500,42.6250\nmi,ingham,-84.2500,42.7500\nmi,shiawassee,-84.2500,42.8750\nmi,shiawassee,-84.2500,43.0000\nmi,shiawassee,-84.2500,43.1250\nmi,saginaw,-84.2500,43.2500\nmi,saginaw,-84.2500,43.3750\nmi,midland,-84.2500,43.5000\nmi,midland,-84.2500,43.6250\nmi,midland,-84.2500,43.7500\nmi,gladwin,-84.2500,43.8750\nmi,gladwin,-84.2500,44.0000\nmi,gladwin,-84.2500,44.1250\nmi,ogemaw,-84.2500,44.2500\nmi,ogemaw,-84.2500,44.3750\nmi,ogemaw,-84.2500,44.5000\nmi,oscoda,-84.2500,44.6250\nmi,oscoda,-84.2500,44.7500\nmi,montmorency,-84.2500,44.8750\nmi,montmorency,-84.2500,45.0000\nmi,montmorency,-84.2500,45.1250\nmi,cheboygan,-84.2500,45.2500\nmi,cheboygan,-84.2500,45.3750\nmi,cheboygan,-84.2500,45.5000\nmi,presque isle,-84.2500,45.6250\nmi,mackinac,-84.2500,46.0000\nmi,chippewa,-84.2500,46.1250\nmi,chippewa,-84.2500,46.2500\nmi,chippewa,-84.2500,46.3750\nmi,chippewa,-84.2500,46.5000\ntn,anderson,-84.1250,36.0000\ntn,anderson,-84.1250,36.1250\ntn,campbell,-84.1250,36.2500\ntn,campbell,-84.1250,36.3750\ntn,campbell,-84.1250,36.5000\nky,whitley,-84.1250,36.6250\nky,whitley,-84.1250,36.7500\nky,whitley,-84.1250,36.8750\nky,laurel,-84.1250,37.0000\nky,laurel,-84.1250,37.1250\nky,laurel,-84.1250,37.2500\nky,jackson,-84.1250,37.3750\nky,jackson,-84.1250,37.5000\nky,madison,-84.1250,37.6250\nky,madison,-84.1250,37.7500\nky,clark,-84.1250,37.8750\nky,clark,-84.1250,38.0000\nky,bourbon,-84.1250,38.1250\nky,bourbon,-84.1250,38.2500\nky,nicholas,-84.1250,38.3750\nky,robertson,-84.1250,38.5000\nky,bracken,-84.1250,38.6250\nky,bracken,-84.1250,38.7500\noh,clermont,-84.1250,38.8750\noh,clermont,-84.1250,39.0000\noh,clermont,-84.1250,39.1250\noh,clermont,-84.1250,39.2500\noh,warren,-84.1250,39.3750\noh,warren,-84.1250,39.5000\noh,montgomery,-84.1250,39.6250\noh,montgomery,-84.1250,39.7500\noh,montgomery,-84.1250,39.8750\noh,miami,-84.1250,40.0000\noh,miami,-84.1250,40.1250\noh,shelby,-84.1250,40.2500\noh,shelby,-84.1250,40.3750\noh,auglaize,-84.1250,40.5000\noh,auglaize,-84.1250,40.6250\noh,allen,-84.1250,40.7500\noh,putnam,-84.1250,40.8750\noh,putnam,-84.1250,41.0000\noh,putnam,-84.1250,41.1250\noh,henry,-84.1250,41.2500\noh,henry,-84.1250,41.3750\noh,fulton,-84.1250,41.5000\noh,fulton,-84.1250,41.6250\nmi,lenawee,-84.1250,41.7500\nmi,lenawee,-84.1250,41.8750\nmi,lenawee,-84.1250,42.0000\nmi,washtenaw,-84.1250,42.1250\nmi,washtenaw,-84.1250,42.2500\nmi,washtenaw,-84.1250,42.3750\nmi,livingston,-84.1250,42.5000\nmi,livingston,-84.1250,42.6250\nmi,livingston,-84.1250,42.7500\nmi,shiawassee,-84.1250,42.8750\nmi,shiawassee,-84.1250,43.0000\nmi,shiawassee,-84.1250,43.1250\nmi,saginaw,-84.1250,43.2500\nmi,saginaw,-84.1250,43.3750\nmi,saginaw,-84.1250,43.5000\nmi,bay,-84.1250,43.6250\nmi,bay,-84.1250,43.7500\nmi,bay,-84.1250,43.8750\nmi,arenac,-84.1250,44.0000\nmi,arenac,-84.1250,44.1250\nmi,ogemaw,-84.1250,44.2500\nmi,ogemaw,-84.1250,44.3750\nmi,ogemaw,-84.1250,44.5000\nmi,oscoda,-84.1250,44.6250\nmi,oscoda,-84.1250,44.7500\nmi,montmorency,-84.1250,44.8750\nmi,montmorency,-84.1250,45.0000\nmi,montmorency,-84.1250,45.1250\nmi,presque isle,-84.1250,45.2500\nmi,presque isle,-84.1250,45.3750\nmi,presque isle,-84.1250,45.5000\nmi,chippewa,-84.1250,46.0000\nmi,chippewa,-84.1250,46.1250\nmi,chippewa,-84.1250,46.2500\ntn,knox,-84.0000,36.0000\ntn,knox,-84.0000,36.1250\ntn,anderson,-84.0000,36.2500\ntn,campbell,-84.0000,36.3750\ntn,campbell,-84.0000,36.5000\nky,whitley,-84.0000,36.6250\nky,whitley,-84.0000,36.7500\nky,knox,-84.0000,36.8750\nky,laurel,-84.0000,37.0000\nky,laurel,-84.0000,37.1250\nky,laurel,-84.0000,37.2500\nky,jackson,-84.0000,37.3750\nky,jackson,-84.0000,37.5000\nky,estill,-84.0000,37.6250\nky,estill,-84.0000,37.7500\nky,clark,-84.0000,37.8750\nky,montgomery,-84.0000,38.0000\nky,montgomery,-84.0000,38.1250\nky,nicholas,-84.0000,38.2500\nky,nicholas,-84.0000,38.3750\nky,robertson,-84.0000,38.5000\nky,bracken,-84.0000,38.6250\nky,bracken,-84.0000,38.7500\noh,brown,-84.0000,38.8750\noh,brown,-84.0000,39.0000\noh,brown,-84.0000,39.1250\noh,clermont,-84.0000,39.2500\noh,warren,-84.0000,39.3750\noh,warren,-84.0000,39.5000\noh,greene,-84.0000,39.6250\noh,greene,-84.0000,39.7500\noh,clark,-84.0000,39.8750\noh,clark,-84.0000,40.0000\noh,champaign,-84.0000,40.1250\noh,champaign,-84.0000,40.2500\noh,logan,-84.0000,40.3750\noh,auglaize,-84.0000,40.5000\noh,auglaize,-84.0000,40.6250\noh,allen,-84.0000,40.7500\noh,allen,-84.0000,40.8750\noh,putnam,-84.0000,41.0000\noh,putnam,-84.0000,41.1250\noh,henry,-84.0000,41.2500\noh,henry,-84.0000,41.3750\noh,fulton,-84.0000,41.5000\noh,fulton,-84.0000,41.6250\nmi,lenawee,-84.0000,41.7500\nmi,lenawee,-84.0000,41.8750\nmi,lenawee,-84.0000,42.0000\nmi,washtenaw,-84.0000,42.1250\nmi,washtenaw,-84.0000,42.2500\nmi,washtenaw,-84.0000,42.3750\nmi,livingston,-84.0000,42.5000\nmi,livingston,-84.0000,42.6250\nmi,livingston,-84.0000,42.7500\nmi,shiawassee,-84.0000,42.8750\nmi,shiawassee,-84.0000,43.0000\nmi,shiawassee,-84.0000,43.1250\nmi,saginaw,-84.0000,43.2500\nmi,saginaw,-84.0000,43.3750\nmi,saginaw,-84.0000,43.5000\nmi,bay,-84.0000,43.6250\nmi,bay,-84.0000,43.7500\nmi,bay,-84.0000,43.8750\nmi,arenac,-84.0000,44.0000\nmi,arenac,-84.0000,44.1250\nmi,ogemaw,-84.0000,44.2500\nmi,ogemaw,-84.0000,44.3750\nmi,ogemaw,-84.0000,44.5000\nmi,oscoda,-84.0000,44.6250\nmi,oscoda,-84.0000,44.7500\nmi,montmorency,-84.0000,44.8750\nmi,montmorency,-84.0000,45.0000\nmi,montmorency,-84.0000,45.1250\nmi,presque isle,-84.0000,45.2500\nmi,presque isle,-84.0000,45.3750\nmi,chippewa,-84.0000,46.0000\ntn,knox,-83.8750,36.0000\ntn,knox,-83.8750,36.1250\ntn,union,-83.8750,36.2500\ntn,union,-83.8750,36.3750\ntn,claiborne,-83.8750,36.5000\nky,bell,-83.8750,36.6250\nky,knox,-83.8750,36.7500\nky,knox,-83.8750,36.8750\nky,knox,-83.8750,37.0000\nky,clay,-83.8750,37.1250\nky,clay,-83.8750,37.2500\nky,jackson,-83.8750,37.3750\nky,owsley,-83.8750,37.5000\nky,estill,-83.8750,37.6250\nky,estill,-83.8750,37.7500\nky,powell,-83.8750,37.8750\nky,montgomery,-83.8750,38.0000\nky,montgomery,-83.8750,38.1250\nky,bath,-83.8750,38.2500\nky,fleming,-83.8750,38.3750\nky,mason,-83.8750,38.5000\nky,mason,-83.8750,38.6250\nky,mason,-83.8750,38.7500\noh,brown,-83.8750,38.8750\noh,brown,-83.8750,39.0000\noh,brown,-83.8750,39.1250\noh,clinton,-83.8750,39.2500\noh,clinton,-83.8750,39.3750\noh,clinton,-83.8750,39.5000\noh,greene,-83.8750,39.6250\noh,greene,-83.8750,39.7500\noh,clark,-83.8750,39.8750\noh,clark,-83.8750,40.0000\noh,champaign,-83.8750,40.1250\noh,champaign,-83.8750,40.2500\noh,logan,-83.8750,40.3750\noh,logan,-83.8750,40.5000\noh,hardin,-83.8750,40.6250\noh,hardin,-83.8750,40.7500\noh,hancock,-83.8750,40.8750\noh,hancock,-83.8750,41.0000\noh,hancock,-83.8750,41.1250\noh,wood,-83.8750,41.2500\noh,wood,-83.8750,41.3750\noh,lucas,-83.8750,41.5000\noh,lucas,-83.8750,41.6250\nmi,lenawee,-83.8750,41.7500\nmi,lenawee,-83.8750,41.8750\nmi,lenawee,-83.8750,42.0000\nmi,washtenaw,-83.8750,42.1250\nmi,washtenaw,-83.8750,42.2500\nmi,washtenaw,-83.8750,42.3750\nmi,livingston,-83.8750,42.5000\nmi,livingston,-83.8750,42.6250\nmi,livingston,-83.8750,42.7500\nmi,genesee,-83.8750,42.8750\nmi,genesee,-83.8750,43.0000\nmi,genesee,-83.8750,43.1250\nmi,saginaw,-83.8750,43.2500\nmi,saginaw,-83.8750,43.3750\nmi,saginaw,-83.8750,43.5000\nmi,bay,-83.8750,43.6250\nmi,arenac,-83.8750,44.0000\nmi,arenac,-83.8750,44.1250\nmi,iosco,-83.8750,44.2500\nmi,iosco,-83.8750,44.3750\nmi,iosco,-83.8750,44.5000\nmi,alcona,-83.8750,44.6250\nmi,alcona,-83.8750,44.7500\nmi,alpena,-83.8750,44.8750\nmi,alpena,-83.8750,45.0000\nmi,alpena,-83.8750,45.1250\nmi,presque isle,-83.8750,45.2500\nmi,presque isle,-83.8750,45.3750\nmi,chippewa,-83.8750,46.0000\ntn,knox,-83.7500,36.0000\ntn,knox,-83.7500,36.1250\ntn,union,-83.7500,36.2500\ntn,union,-83.7500,36.3750\ntn,claiborne,-83.7500,36.5000\nky,bell,-83.7500,36.6250\nky,bell,-83.7500,36.7500\nky,knox,-83.7500,36.8750\nky,knox,-83.7500,37.0000\nky,clay,-83.7500,37.1250\nky,clay,-83.7500,37.2500\nky,owsley,-83.7500,37.3750\nky,lee,-83.7500,37.5000\nky,lee,-83.7500,37.6250\nky,powell,-83.7500,37.7500\nky,powell,-83.7500,37.8750\nky,bath,-83.7500,38.0000\nky,bath,-83.7500,38.1250\nky,bath,-83.7500,38.2500\nky,fleming,-83.7500,38.3750\nky,mason,-83.7500,38.5000\nky,mason,-83.7500,38.6250\noh,brown,-83.7500,38.7500\noh,brown,-83.7500,38.8750\noh,brown,-83.7500,39.0000\noh,highland,-83.7500,39.1250\noh,highland,-83.7500,39.2500\noh,clinton,-83.7500,39.3750\noh,clinton,-83.7500,39.5000\noh,greene,-83.7500,39.6250\noh,greene,-83.7500,39.7500\noh,clark,-83.7500,39.8750\noh,clark,-83.7500,40.0000\noh,champaign,-83.7500,40.1250\noh,logan,-83.7500,40.2500\noh,logan,-83.7500,40.3750\noh,logan,-83.7500,40.5000\noh,hardin,-83.7500,40.6250\noh,hardin,-83.7500,40.7500\noh,hancock,-83.7500,40.8750\noh,hancock,-83.7500,41.0000\noh,hancock,-83.7500,41.1250\noh,wood,-83.7500,41.2500\noh,wood,-83.7500,41.3750\noh,lucas,-83.7500,41.5000\noh,lucas,-83.7500,41.6250\nmi,monroe,-83.7500,41.7500\nmi,monroe,-83.7500,41.8750\nmi,monroe,-83.7500,42.0000\nmi,washtenaw,-83.7500,42.1250\nmi,washtenaw,-83.7500,42.2500\nmi,washtenaw,-83.7500,42.3750\nmi,livingston,-83.7500,42.5000\nmi,livingston,-83.7500,42.6250\nmi,livingston,-83.7500,42.7500\nmi,genesee,-83.7500,42.8750\nmi,genesee,-83.7500,43.0000\nmi,genesee,-83.7500,43.1250\nmi,saginaw,-83.7500,43.2500\nmi,saginaw,-83.7500,43.3750\nmi,bay,-83.7500,43.5000\nmi,bay,-83.7500,43.6250\nmi,arenac,-83.7500,44.1250\nmi,iosco,-83.7500,44.2500\nmi,iosco,-83.7500,44.3750\nmi,iosco,-83.7500,44.5000\nmi,alcona,-83.7500,44.6250\nmi,alcona,-83.7500,44.7500\nmi,alpena,-83.7500,44.8750\nmi,alpena,-83.7500,45.0000\nmi,alpena,-83.7500,45.1250\nmi,presque isle,-83.7500,45.2500\nmi,presque isle,-83.7500,45.3750\nmi,chippewa,-83.7500,46.0000\ntn,sevier,-83.6250,36.0000\ntn,jefferson,-83.6250,36.1250\ntn,grainger,-83.6250,36.2500\ntn,claiborne,-83.6250,36.3750\ntn,claiborne,-83.6250,36.5000\nva,lee,-83.6250,36.6250\nky,bell,-83.6250,36.7500\nky,bell,-83.6250,36.8750\nky,clay,-83.6250,37.0000\nky,clay,-83.6250,37.1250\nky,clay,-83.6250,37.2500\nky,owsley,-83.6250,37.3750\nky,owsley,-83.6250,37.5000\nky,lee,-83.6250,37.6250\nky,wolfe,-83.6250,37.7500\nky,menifee,-83.6250,37.8750\nky,menifee,-83.6250,38.0000\nky,bath,-83.6250,38.1250\nky,fleming,-83.6250,38.2500\nky,fleming,-83.6250,38.3750\nky,fleming,-83.6250,38.5000\nky,lewis,-83.6250,38.6250\noh,adams,-83.6250,38.7500\noh,adams,-83.6250,38.8750\noh,adams,-83.6250,39.0000\noh,highland,-83.6250,39.1250\noh,highland,-83.6250,39.2500\noh,clinton,-83.6250,39.3750\noh,clinton,-83.6250,39.5000\noh,fayette,-83.6250,39.6250\noh,madison,-83.6250,39.7500\noh,clark,-83.6250,39.8750\noh,clark,-83.6250,40.0000\noh,champaign,-83.6250,40.1250\noh,logan,-83.6250,40.2500\noh,logan,-83.6250,40.3750\noh,logan,-83.6250,40.5000\noh,hardin,-83.6250,40.6250\noh,hardin,-83.6250,40.7500\noh,hancock,-83.6250,40.8750\noh,hancock,-83.6250,41.0000\noh,hancock,-83.6250,41.1250\noh,wood,-83.6250,41.2500\noh,wood,-83.6250,41.3750\noh,wood,-83.6250,41.5000\noh,lucas,-83.6250,41.6250\nmi,monroe,-83.6250,41.7500\nmi,monroe,-83.6250,41.8750\nmi,monroe,-83.6250,42.0000\nmi,washtenaw,-83.6250,42.1250\nmi,washtenaw,-83.6250,42.2500\nmi,washtenaw,-83.6250,42.3750\nmi,oakland,-83.6250,42.5000\nmi,oakland,-83.6250,42.6250\nmi,oakland,-83.6250,42.7500\nmi,genesee,-83.6250,42.8750\nmi,genesee,-83.6250,43.0000\nmi,genesee,-83.6250,43.1250\nmi,tuscola,-83.6250,43.2500\nmi,tuscola,-83.6250,43.3750\nmi,tuscola,-83.6250,43.5000\nmi,tuscola,-83.6250,43.6250\nmi,arenac,-83.6250,44.1250\nmi,iosco,-83.6250,44.2500\nmi,iosco,-83.6250,44.3750\nmi,iosco,-83.6250,44.5000\nmi,alcona,-83.6250,44.6250\nmi,alcona,-83.6250,44.7500\nmi,alpena,-83.6250,44.8750\nmi,alpena,-83.6250,45.0000\nmi,alpena,-83.6250,45.1250\nmi,presque isle,-83.6250,45.2500\nmi,chippewa,-83.6250,46.0000\ntn,jefferson,-83.5000,36.0000\ntn,jefferson,-83.5000,36.1250\ntn,grainger,-83.5000,36.2500\ntn,claiborne,-83.5000,36.3750\ntn,claiborne,-83.5000,36.5000\nva,lee,-83.5000,36.6250\nky,bell,-83.5000,36.7500\nky,bell,-83.5000,36.8750\nky,leslie,-83.5000,37.0000\nky,leslie,-83.5000,37.1250\nky,perry,-83.5000,37.2500\nky,breathitt,-83.5000,37.3750\nky,breathitt,-83.5000,37.5000\nky,breathitt,-83.5000,37.6250\nky,wolfe,-83.5000,37.7500\nky,menifee,-83.5000,37.8750\nky,menifee,-83.5000,38.0000\nky,rowan,-83.5000,38.1250\nky,rowan,-83.5000,38.2500\nky,fleming,-83.5000,38.3750\nky,lewis,-83.5000,38.5000\nky,lewis,-83.5000,38.6250\noh,adams,-83.5000,38.7500\noh,adams,-83.5000,38.8750\noh,adams,-83.5000,39.0000\noh,highland,-83.5000,39.1250\noh,highland,-83.5000,39.2500\noh,highland,-83.5000,39.3750\noh,fayette,-83.5000,39.5000\noh,fayette,-83.5000,39.6250\noh,madison,-83.5000,39.7500\noh,madison,-83.5000,39.8750\noh,madison,-83.5000,40.0000\noh,union,-83.5000,40.1250\noh,union,-83.5000,40.2500\noh,union,-83.5000,40.3750\noh,union,-83.5000,40.5000\noh,hardin,-83.5000,40.6250\noh,hardin,-83.5000,40.7500\noh,wyandot,-83.5000,40.8750\noh,hancock,-83.5000,41.0000\noh,hancock,-83.5000,41.1250\noh,wood,-83.5000,41.2500\noh,wood,-83.5000,41.3750\noh,wood,-83.5000,41.5000\noh,lucas,-83.5000,41.6250\nmi,monroe,-83.5000,41.7500\nmi,monroe,-83.5000,41.8750\nmi,monroe,-83.5000,42.0000\nmi,wayne,-83.5000,42.1250\nmi,wayne,-83.5000,42.2500\nmi,wayne,-83.5000,42.3750\nmi,oakland,-83.5000,42.5000\nmi,oakland,-83.5000,42.6250\nmi,oakland,-83.5000,42.7500\nmi,oakland,-83.5000,42.8750\nmi,genesee,-83.5000,43.0000\nmi,genesee,-83.5000,43.1250\nmi,tuscola,-83.5000,43.2500\nmi,tuscola,-83.5000,43.3750\nmi,tuscola,-83.5000,43.5000\nmi,tuscola,-83.5000,43.6250\nmi,iosco,-83.5000,44.3750\nmi,iosco,-83.5000,44.5000\nmi,alcona,-83.5000,44.6250\nmi,alcona,-83.5000,44.7500\nmi,alpena,-83.5000,44.8750\nmi,alpena,-83.5000,45.0000\nmi,alpena,-83.5000,45.1250\nmi,presque isle,-83.5000,45.2500\nmi,chippewa,-83.5000,46.0000\ntn,jefferson,-83.3750,36.0000\ntn,jefferson,-83.3750,36.1250\ntn,hamblen,-83.3750,36.2500\ntn,grainger,-83.3750,36.3750\ntn,hancock,-83.3750,36.5000\nva,lee,-83.3750,36.6250\nky,harlan,-83.3750,36.7500\nky,harlan,-83.3750,36.8750\nky,leslie,-83.3750,37.0000\nky,leslie,-83.3750,37.1250\nky,leslie,-83.3750,37.2500\nky,breathitt,-83.3750,37.3750\nky,breathitt,-83.3750,37.5000\nky,breathitt,-83.3750,37.6250\nky,wolfe,-83.3750,37.7500\nky,morgan,-83.3750,37.8750\nky,morgan,-83.3750,38.0000\nky,rowan,-83.3750,38.1250\nky,rowan,-83.3750,38.2500\nky,lewis,-83.3750,38.3750\nky,lewis,-83.3750,38.5000\nky,lewis,-83.3750,38.6250\noh,adams,-83.3750,38.7500\noh,adams,-83.3750,38.8750\noh,adams,-83.3750,39.0000\noh,highland,-83.3750,39.1250\noh,ross,-83.3750,39.2500\noh,highland,-83.3750,39.3750\noh,fayette,-83.3750,39.5000\noh,fayette,-83.3750,39.6250\noh,madison,-83.3750,39.7500\noh,madison,-83.3750,39.8750\noh,madison,-83.3750,40.0000\noh,union,-83.3750,40.1250\noh,union,-83.3750,40.2500\noh,union,-83.3750,40.3750\noh,union,-83.3750,40.5000\noh,marion,-83.3750,40.6250\noh,wyandot,-83.3750,40.7500\noh,wyandot,-83.3750,40.8750\noh,seneca,-83.3750,41.0000\noh,seneca,-83.3750,41.1250\noh,seneca,-83.3750,41.2500\noh,sandusky,-83.3750,41.3750\noh,sandusky,-83.3750,41.5000\noh,lucas,-83.3750,41.6250\nmi,monroe,-83.3750,41.8750\nmi,monroe,-83.3750,42.0000\nmi,wayne,-83.3750,42.1250\nmi,wayne,-83.3750,42.2500\nmi,wayne,-83.3750,42.3750\nmi,oakland,-83.3750,42.5000\nmi,oakland,-83.3750,42.6250\nmi,oakland,-83.3750,42.7500\nmi,oakland,-83.3750,42.8750\nmi,lapeer,-83.3750,43.0000\nmi,lapeer,-83.3750,43.1250\nmi,tuscola,-83.3750,43.2500\nmi,tuscola,-83.3750,43.3750\nmi,tuscola,-83.3750,43.5000\nmi,tuscola,-83.3750,43.6250\nmi,huron,-83.3750,43.7500\nmi,iosco,-83.3750,44.3750\nmi,iosco,-83.3750,44.5000\nmi,alcona,-83.3750,44.6250\nmi,alcona,-83.3750,44.7500\nmi,alpena,-83.3750,44.8750\nmi,alpena,-83.3750,45.1250\ntn,cocke,-83.2500,36.0000\ntn,hamblen,-83.2500,36.1250\ntn,hamblen,-83.2500,36.2500\ntn,hawkins,-83.2500,36.3750\ntn,hancock,-83.2500,36.5000\nva,lee,-83.2500,36.6250\nky,harlan,-83.2500,36.7500\nky,harlan,-83.2500,36.8750\nky,leslie,-83.2500,37.0000\nky,leslie,-83.2500,37.1250\nky,perry,-83.2500,37.2500\nky,perry,-83.2500,37.3750\nky,breathitt,-83.2500,37.5000\nky,breathitt,-83.2500,37.6250\nky,magoffin,-83.2500,37.7500\nky,morgan,-83.2500,37.8750\nky,morgan,-83.2500,38.0000\nky,elliott,-83.2500,38.1250\nky,carter,-83.2500,38.2500\nky,lewis,-83.2500,38.3750\nky,lewis,-83.2500,38.5000\nky,lewis,-83.2500,38.6250\noh,scioto,-83.2500,38.7500\noh,scioto,-83.2500,38.8750\noh,scioto,-83.2500,39.0000\noh,pike,-83.2500,39.1250\noh,ross,-83.2500,39.2500\noh,ross,-83.2500,39.3750\noh,ross,-83.2500,39.5000\noh,pickaway,-83.2500,39.6250\noh,madison,-83.2500,39.7500\noh,madison,-83.2500,39.8750\noh,franklin,-83.2500,40.0000\noh,union,-83.2500,40.1250\noh,union,-83.2500,40.2500\noh,union,-83.2500,40.3750\noh,union,-83.2500,40.5000\noh,marion,-83.2500,40.6250\noh,wyandot,-83.2500,40.7500\noh,wyandot,-83.2500,40.8750\noh,seneca,-83.2500,41.0000\noh,seneca,-83.2500,41.1250\noh,seneca,-83.2500,41.2500\noh,sandusky,-83.2500,41.3750\noh,ottawa,-83.2500,41.5000\noh,lucas,-83.2500,41.6250\nmi,monroe,-83.2500,42.0000\nmi,wayne,-83.2500,42.1250\nmi,wayne,-83.2500,42.2500\nmi,wayne,-83.2500,42.3750\nmi,oakland,-83.2500,42.5000\nmi,oakland,-83.2500,42.6250\nmi,oakland,-83.2500,42.7500\nmi,oakland,-83.2500,42.8750\nmi,lapeer,-83.2500,43.0000\nmi,lapeer,-83.2500,43.1250\nmi,lapeer,-83.2500,43.2500\nmi,tuscola,-83.2500,43.3750\nmi,tuscola,-83.2500,43.5000\nmi,tuscola,-83.2500,43.6250\nmi,huron,-83.2500,43.7500\nmi,huron,-83.2500,43.8750\ntn,cocke,-83.1250,36.0000\ntn,greene,-83.1250,36.1250\ntn,hamblen,-83.1250,36.2500\ntn,hawkins,-83.1250,36.3750\ntn,hawkins,-83.1250,36.5000\nva,lee,-83.1250,36.6250\nva,lee,-83.1250,36.7500\nky,harlan,-83.1250,36.8750\nky,harlan,-83.1250,37.0000\nky,perry,-83.1250,37.1250\nky,perry,-83.1250,37.2500\nky,perry,-83.1250,37.3750\nky,breathitt,-83.1250,37.5000\nky,magoffin,-83.1250,37.6250\nky,magoffin,-83.1250,37.7500\nky,morgan,-83.1250,37.8750\nky,morgan,-83.1250,38.0000\nky,elliott,-83.1250,38.1250\nky,carter,-83.1250,38.2500\nky,carter,-83.1250,38.3750\nky,greenup,-83.1250,38.5000\nky,lewis,-83.1250,38.6250\noh,scioto,-83.1250,38.7500\noh,scioto,-83.1250,38.8750\noh,pike,-83.1250,39.0000\noh,pike,-83.1250,39.1250\noh,ross,-83.1250,39.2500\noh,ross,-83.1250,39.3750\noh,ross,-83.1250,39.5000\noh,pickaway,-83.1250,39.6250\noh,pickaway,-83.1250,39.7500\noh,franklin,-83.1250,39.8750\noh,franklin,-83.1250,40.0000\noh,franklin,-83.1250,40.1250\noh,delaware,-83.1250,40.2500\noh,delaware,-83.1250,40.3750\noh,marion,-83.1250,40.5000\noh,marion,-83.1250,40.6250\noh,wyandot,-83.1250,40.7500\noh,wyandot,-83.1250,40.8750\noh,seneca,-83.1250,41.0000\noh,seneca,-83.1250,41.1250\noh,seneca,-83.1250,41.2500\noh,sandusky,-83.1250,41.3750\noh,ottawa,-83.1250,41.5000\nmi,wayne,-83.1250,42.3750\nmi,oakland,-83.1250,42.5000\nmi,oakland,-83.1250,42.6250\nmi,oakland,-83.1250,42.7500\nmi,oakland,-83.1250,42.8750\nmi,lapeer,-83.1250,43.0000\nmi,lapeer,-83.1250,43.1250\nmi,lapeer,-83.1250,43.2500\nmi,tuscola,-83.1250,43.3750\nmi,tuscola,-83.1250,43.5000\nmi,tuscola,-83.1250,43.6250\nmi,huron,-83.1250,43.7500\nmi,huron,-83.1250,43.8750\ntn,cocke,-83.0000,36.0000\ntn,greene,-83.0000,36.1250\ntn,greene,-83.0000,36.2500\ntn,hawkins,-83.0000,36.3750\ntn,hawkins,-83.0000,36.5000\nva,lee,-83.0000,36.6250\nva,lee,-83.0000,36.7500\nky,harlan,-83.0000,36.8750\nky,letcher,-83.0000,37.0000\nky,letcher,-83.0000,37.1250\nky,knott,-83.0000,37.2500\nky,knott,-83.0000,37.3750\nky,knott,-83.0000,37.5000\nky,magoffin,-83.0000,37.6250\nky,magoffin,-83.0000,37.7500\nky,morgan,-83.0000,37.8750\nky,lawrence,-83.0000,38.0000\nky,elliott,-83.0000,38.1250\nky,carter,-83.0000,38.2500\nky,carter,-83.0000,38.3750\nky,greenup,-83.0000,38.5000\nky,greenup,-83.0000,38.6250\noh,scioto,-83.0000,38.7500\noh,scioto,-83.0000,38.8750\noh,pike,-83.0000,39.0000\noh,pike,-83.0000,39.1250\noh,ross,-83.0000,39.2500\noh,ross,-83.0000,39.3750\noh,ross,-83.0000,39.5000\noh,pickaway,-83.0000,39.6250\noh,pickaway,-83.0000,39.7500\noh,franklin,-83.0000,39.8750\noh,franklin,-83.0000,40.0000\noh,franklin,-83.0000,40.1250\noh,delaware,-83.0000,40.2500\noh,delaware,-83.0000,40.3750\noh,marion,-83.0000,40.5000\noh,marion,-83.0000,40.6250\noh,crawford,-83.0000,40.7500\noh,crawford,-83.0000,40.8750\noh,seneca,-83.0000,41.0000\noh,seneca,-83.0000,41.1250\noh,seneca,-83.0000,41.2500\noh,sandusky,-83.0000,41.3750\noh,ottawa,-83.0000,41.5000\nmi,wayne,-83.0000,42.3750\nmi,macomb,-83.0000,42.5000\nmi,macomb,-83.0000,42.6250\nmi,macomb,-83.0000,42.7500\nmi,macomb,-83.0000,42.8750\nmi,lapeer,-83.0000,43.0000\nmi,lapeer,-83.0000,43.1250\nmi,lapeer,-83.0000,43.2500\nmi,sanilac,-83.0000,43.3750\nmi,sanilac,-83.0000,43.5000\nmi,sanilac,-83.0000,43.6250\nmi,huron,-83.0000,43.7500\nmi,huron,-83.0000,43.8750\nmi,huron,-83.0000,44.0000\ntn,greene,-82.8750,36.0000\ntn,greene,-82.8750,36.1250\ntn,greene,-82.8750,36.2500\ntn,hawkins,-82.8750,36.3750\ntn,hawkins,-82.8750,36.5000\nva,scott,-82.8750,36.6250\nva,lee,-82.8750,36.7500\nva,lee,-82.8750,36.8750\nky,letcher,-82.8750,37.0000\nky,letcher,-82.8750,37.1250\nky,knott,-82.8750,37.2500\nky,knott,-82.8750,37.3750\nky,floyd,-82.8750,37.5000\nky,floyd,-82.8750,37.6250\nky,johnson,-82.8750,37.7500\nky,johnson,-82.8750,37.8750\nky,lawrence,-82.8750,38.0000\nky,lawrence,-82.8750,38.1250\nky,carter,-82.8750,38.2500\nky,carter,-82.8750,38.3750\nky,greenup,-82.8750,38.5000\nky,greenup,-82.8750,38.6250\noh,scioto,-82.8750,38.7500\noh,scioto,-82.8750,38.8750\noh,pike,-82.8750,39.0000\noh,pike,-82.8750,39.1250\noh,ross,-82.8750,39.2500\noh,ross,-82.8750,39.3750\noh,pickaway,-82.8750,39.5000\noh,pickaway,-82.8750,39.6250\noh,pickaway,-82.8750,39.7500\noh,franklin,-82.8750,39.8750\noh,franklin,-82.8750,40.0000\noh,franklin,-82.8750,40.1250\noh,delaware,-82.8750,40.2500\noh,morrow,-82.8750,40.3750\noh,morrow,-82.8750,40.5000\noh,morrow,-82.8750,40.6250\noh,crawford,-82.8750,40.7500\noh,crawford,-82.8750,40.8750\noh,seneca,-82.8750,41.0000\noh,seneca,-82.8750,41.1250\noh,seneca,-82.8750,41.2500\noh,sandusky,-82.8750,41.3750\noh,ottawa,-82.8750,41.5000\nmi,macomb,-82.8750,42.6250\nmi,macomb,-82.8750,42.7500\nmi,macomb,-82.8750,42.8750\nmi,st. clair,-82.8750,43.0000\nmi,st. clair,-82.8750,43.1250\nmi,sanilac,-82.8750,43.2500\nmi,sanilac,-82.8750,43.3750\nmi,sanilac,-82.8750,43.5000\nmi,sanilac,-82.8750,43.6250\nmi,huron,-82.8750,43.7500\nmi,huron,-82.8750,43.8750\nmi,huron,-82.8750,44.0000\nnc,madison,-82.7500,36.0000\ntn,greene,-82.7500,36.1250\ntn,greene,-82.7500,36.2500\ntn,greene,-82.7500,36.3750\ntn,hawkins,-82.7500,36.5000\nva,scott,-82.7500,36.6250\nva,scott,-82.7500,36.7500\nva,wise,-82.7500,36.8750\nva,wise,-82.7500,37.0000\nky,letcher,-82.7500,37.1250\nky,letcher,-82.7500,37.2500\nky,floyd,-82.7500,37.3750\nky,floyd,-82.7500,37.5000\nky,floyd,-82.7500,37.6250\nky,floyd,-82.7500,37.7500\nky,johnson,-82.7500,37.8750\nky,lawrence,-82.7500,38.0000\nky,lawrence,-82.7500,38.1250\nky,boyd,-82.7500,38.2500\nky,boyd,-82.7500,38.3750\nky,greenup,-82.7500,38.5000\noh,lawrence,-82.7500,38.6250\noh,scioto,-82.7500,38.7500\noh,jackson,-82.7500,38.8750\noh,jackson,-82.7500,39.0000\noh,jackson,-82.7500,39.1250\noh,vinton,-82.7500,39.2500\noh,ross,-82.7500,39.3750\noh,pickaway,-82.7500,39.5000\noh,fairfield,-82.7500,39.6250\noh,fairfield,-82.7500,39.7500\noh,fairfield,-82.7500,39.8750\noh,licking,-82.7500,40.0000\noh,licking,-82.7500,40.1250\noh,licking,-82.7500,40.2500\noh,morrow,-82.7500,40.3750\noh,morrow,-82.7500,40.5000\noh,morrow,-82.7500,40.6250\noh,crawford,-82.7500,40.7500\noh,crawford,-82.7500,40.8750\noh,huron,-82.7500,41.0000\noh,huron,-82.7500,41.1250\noh,huron,-82.7500,41.2500\noh,erie,-82.7500,41.3750\nmi,macomb,-82.7500,42.7500\nmi,macomb,-82.7500,42.8750\nmi,st. clair,-82.7500,43.0000\nmi,st. clair,-82.7500,43.1250\nmi,sanilac,-82.7500,43.2500\nmi,sanilac,-82.7500,43.3750\nmi,sanilac,-82.7500,43.5000\nmi,sanilac,-82.7500,43.6250\nmi,huron,-82.7500,43.7500\nmi,huron,-82.7500,43.8750\nnc,madison,-82.6250,36.0000\ntn,greene,-82.6250,36.1250\ntn,washington,-82.6250,36.2500\ntn,washington,-82.6250,36.3750\ntn,sullivan,-82.6250,36.5000\nva,scott,-82.6250,36.6250\nva,scott,-82.6250,36.7500\nva,scott,-82.6250,36.8750\nva,wise,-82.6250,37.0000\nva,wise,-82.6250,37.1250\nky,pike,-82.6250,37.2500\nky,pike,-82.6250,37.3750\nky,floyd,-82.6250,37.5000\nky,floyd,-82.6250,37.6250\nky,martin,-82.6250,37.7500\nky,johnson,-82.6250,37.8750\nky,lawrence,-82.6250,38.0000\nky,lawrence,-82.6250,38.1250\nky,lawrence,-82.6250,38.2500\nky,boyd,-82.6250,38.3750\noh,lawrence,-82.6250,38.5000\noh,lawrence,-82.6250,38.6250\noh,lawrence,-82.6250,38.7500\noh,jackson,-82.6250,38.8750\noh,jackson,-82.6250,39.0000\noh,jackson,-82.6250,39.1250\noh,vinton,-82.6250,39.2500\noh,vinton,-82.6250,39.3750\noh,hocking,-82.6250,39.5000\noh,fairfield,-82.6250,39.6250\noh,fairfield,-82.6250,39.7500\noh,fairfield,-82.6250,39.8750\noh,licking,-82.6250,40.0000\noh,licking,-82.6250,40.1250\noh,licking,-82.6250,40.2500\noh,knox,-82.6250,40.3750\noh,knox,-82.6250,40.5000\noh,richland,-82.6250,40.6250\noh,richland,-82.6250,40.7500\noh,richland,-82.6250,40.8750\noh,huron,-82.6250,41.0000\noh,huron,-82.6250,41.1250\noh,huron,-82.6250,41.2500\noh,erie,-82.6250,41.3750\nmi,st. clair,-82.6250,42.7500\nmi,st. clair,-82.6250,42.8750\nmi,st. clair,-82.6250,43.0000\nmi,st. clair,-82.6250,43.1250\nmi,sanilac,-82.6250,43.2500\nmi,sanilac,-82.6250,43.3750\nmi,sanilac,-82.6250,43.5000\nmi,sanilac,-82.6250,43.6250\nmi,huron,-82.6250,43.7500\ntn,unicoi,-82.5000,36.0000\ntn,unicoi,-82.5000,36.1250\ntn,washington,-82.5000,36.2500\ntn,washington,-82.5000,36.3750\ntn,sullivan,-82.5000,36.5000\nva,scott,-82.5000,36.6250\nva,scott,-82.5000,36.7500\nva,scott,-82.5000,36.8750\nva,wise,-82.5000,37.0000\nva,dickenson,-82.5000,37.1250\nky,pike,-82.5000,37.2500\nky,pike,-82.5000,37.3750\nky,pike,-82.5000,37.5000\nky,pike,-82.5000,37.6250\nky,martin,-82.5000,37.7500\nky,martin,-82.5000,37.8750\nwv,wayne,-82.5000,38.0000\nwv,wayne,-82.5000,38.1250\nwv,wayne,-82.5000,38.2500\nwv,wayne,-82.5000,38.3750\noh,lawrence,-82.5000,38.5000\noh,lawrence,-82.5000,38.6250\noh,lawrence,-82.5000,38.7500\noh,jackson,-82.5000,38.8750\noh,jackson,-82.5000,39.0000\noh,jackson,-82.5000,39.1250\noh,vinton,-82.5000,39.2500\noh,vinton,-82.5000,39.3750\noh,hocking,-82.5000,39.5000\noh,fairfield,-82.5000,39.6250\noh,fairfield,-82.5000,39.7500\noh,fairfield,-82.5000,39.8750\noh,licking,-82.5000,40.0000\noh,licking,-82.5000,40.1250\noh,licking,-82.5000,40.2500\noh,knox,-82.5000,40.3750\noh,knox,-82.5000,40.5000\noh,richland,-82.5000,40.6250\noh,richland,-82.5000,40.7500\noh,richland,-82.5000,40.8750\noh,huron,-82.5000,41.0000\noh,huron,-82.5000,41.1250\noh,huron,-82.5000,41.2500\noh,erie,-82.5000,41.3750\nmi,st. clair,-82.5000,42.7500\nmi,st. clair,-82.5000,42.8750\nmi,st. clair,-82.5000,43.0000\nmi,st. clair,-82.5000,43.1250\nnc,yancey,-82.3750,36.0000\ntn,unicoi,-82.3750,36.1250\ntn,washington,-82.3750,36.2500\ntn,washington,-82.3750,36.3750\ntn,sullivan,-82.3750,36.5000\nva,scott,-82.3750,36.6250\nva,scott,-82.3750,36.7500\nva,russell,-82.3750,36.8750\nva,dickenson,-82.3750,37.0000\nva,dickenson,-82.3750,37.1250\nva,dickenson,-82.3750,37.2500\nky,pike,-82.3750,37.3750\nky,pike,-82.3750,37.5000\nky,pike,-82.3750,37.6250\nky,martin,-82.3750,37.7500\nwv,mingo,-82.3750,37.8750\nwv,wayne,-82.3750,38.0000\nwv,wayne,-82.3750,38.1250\nwv,wayne,-82.3750,38.2500\nwv,cabell,-82.3750,38.3750\noh,lawrence,-82.3750,38.5000\noh,lawrence,-82.3750,38.6250\noh,gallia,-82.3750,38.7500\noh,gallia,-82.3750,38.8750\noh,gallia,-82.3750,39.0000\noh,vinton,-82.3750,39.1250\noh,vinton,-82.3750,39.2500\noh,vinton,-82.3750,39.3750\noh,hocking,-82.3750,39.5000\noh,perry,-82.3750,39.6250\noh,perry,-82.3750,39.7500\noh,perry,-82.3750,39.8750\noh,licking,-82.3750,40.0000\noh,licking,-82.3750,40.1250\noh,knox,-82.3750,40.2500\noh,knox,-82.3750,40.3750\noh,knox,-82.3750,40.5000\noh,richland,-82.3750,40.6250\noh,ashland,-82.3750,40.7500\noh,ashland,-82.3750,40.8750\noh,ashland,-82.3750,41.0000\noh,huron,-82.3750,41.1250\noh,huron,-82.3750,41.2500\noh,erie,-82.3750,41.3750\nnc,yancey,-82.2500,36.0000\nnc,mitchell,-82.2500,36.1250\ntn,carter,-82.2500,36.2500\ntn,carter,-82.2500,36.3750\ntn,sullivan,-82.2500,36.5000\nva,washington,-82.2500,36.6250\nva,washington,-82.2500,36.7500\nva,russell,-82.2500,36.8750\nva,dickenson,-82.2500,37.0000\nva,dickenson,-82.2500,37.1250\nva,dickenson,-82.2500,37.2500\nky,pike,-82.2500,37.3750\nky,pike,-82.2500,37.5000\nky,pike,-82.2500,37.6250\nwv,mingo,-82.2500,37.7500\nwv,mingo,-82.2500,37.8750\nwv,wayne,-82.2500,38.0000\nwv,lincoln,-82.2500,38.1250\nwv,lincoln,-82.2500,38.2500\nwv,cabell,-82.2500,38.3750\nwv,cabell,-82.2500,38.5000\noh,gallia,-82.2500,38.6250\noh,gallia,-82.2500,38.7500\noh,gallia,-82.2500,38.8750\noh,gallia,-82.2500,39.0000\noh,meigs,-82.2500,39.1250\noh,athens,-82.2500,39.2500\noh,athens,-82.2500,39.3750\noh,hocking,-82.2500,39.5000\noh,perry,-82.2500,39.6250\noh,perry,-82.2500,39.7500\noh,perry,-82.2500,39.8750\noh,licking,-82.2500,40.0000\noh,licking,-82.2500,40.1250\noh,knox,-82.2500,40.2500\noh,knox,-82.2500,40.3750\noh,knox,-82.2500,40.5000\noh,ashland,-82.2500,40.6250\noh,ashland,-82.2500,40.7500\noh,ashland,-82.2500,40.8750\noh,ashland,-82.2500,41.0000\noh,lorain,-82.2500,41.1250\noh,lorain,-82.2500,41.2500\noh,lorain,-82.2500,41.3750\nnc,mitchell,-82.1250,36.0000\ntn,carter,-82.1250,36.1250\ntn,carter,-82.1250,36.2500\ntn,carter,-82.1250,36.3750\ntn,sullivan,-82.1250,36.5000\nva,city of bristol,-82.1250,36.6250\nva,washington,-82.1250,36.7500\nva,russell,-82.1250,36.8750\nva,russell,-82.1250,37.0000\nva,buchanan,-82.1250,37.1250\nva,buchanan,-82.1250,37.2500\nva,buchanan,-82.1250,37.3750\nky,pike,-82.1250,37.5000\nwv,mingo,-82.1250,37.6250\nwv,mingo,-82.1250,37.7500\nwv,logan,-82.1250,37.8750\nwv,lincoln,-82.1250,38.0000\nwv,lincoln,-82.1250,38.1250\nwv,lincoln,-82.1250,38.2500\nwv,cabell,-82.1250,38.3750\nwv,cabell,-82.1250,38.5000\nwv,mason,-82.1250,38.6250\nwv,mason,-82.1250,38.7500\nwv,mason,-82.1250,38.8750\noh,gallia,-82.1250,39.0000\noh,meigs,-82.1250,39.1250\noh,athens,-82.1250,39.2500\noh,athens,-82.1250,39.3750\noh,athens,-82.1250,39.5000\noh,perry,-82.1250,39.6250\noh,perry,-82.1250,39.7500\noh,muskingum,-82.1250,39.8750\noh,muskingum,-82.1250,40.0000\noh,muskingum,-82.1250,40.1250\noh,coshocton,-82.1250,40.2500\noh,coshocton,-82.1250,40.3750\noh,holmes,-82.1250,40.5000\noh,holmes,-82.1250,40.6250\noh,wayne,-82.1250,40.7500\noh,wayne,-82.1250,40.8750\noh,medina,-82.1250,41.0000\noh,medina,-82.1250,41.1250\noh,lorain,-82.1250,41.2500\noh,lorain,-82.1250,41.3750\nnc,avery,-82.0000,36.0000\nnc,avery,-82.0000,36.1250\ntn,carter,-82.0000,36.2500\ntn,johnson,-82.0000,36.3750\ntn,sullivan,-82.0000,36.5000\nva,washington,-82.0000,36.6250\nva,washington,-82.0000,36.7500\nva,russell,-82.0000,36.8750\nva,russell,-82.0000,37.0000\nva,buchanan,-82.0000,37.1250\nva,buchanan,-82.0000,37.2500\nva,buchanan,-82.0000,37.3750\nva,buchanan,-82.0000,37.5000\nwv,mingo,-82.0000,37.6250\nwv,logan,-82.0000,37.7500\nwv,logan,-82.0000,37.8750\nwv,logan,-82.0000,38.0000\nwv,lincoln,-82.0000,38.1250\nwv,lincoln,-82.0000,38.2500\nwv,putnam,-82.0000,38.3750\nwv,putnam,-82.0000,38.5000\nwv,putnam,-82.0000,38.6250\nwv,mason,-82.0000,38.7500\nwv,mason,-82.0000,38.8750\nwv,mason,-82.0000,39.0000\noh,meigs,-82.0000,39.1250\noh,athens,-82.0000,39.2500\noh,athens,-82.0000,39.3750\noh,morgan,-82.0000,39.5000\noh,morgan,-82.0000,39.6250\noh,morgan,-82.0000,39.7500\noh,muskingum,-82.0000,39.8750\noh,muskingum,-82.0000,40.0000\noh,muskingum,-82.0000,40.1250\noh,coshocton,-82.0000,40.2500\noh,coshocton,-82.0000,40.3750\noh,holmes,-82.0000,40.5000\noh,holmes,-82.0000,40.6250\noh,wayne,-82.0000,40.7500\noh,wayne,-82.0000,40.8750\noh,medina,-82.0000,41.0000\noh,medina,-82.0000,41.1250\noh,lorain,-82.0000,41.2500\noh,lorain,-82.0000,41.3750\noh,lorain,-82.0000,41.5000\nnc,avery,-81.8750,36.0000\nnc,avery,-81.8750,36.1250\nnc,watauga,-81.8750,36.2500\ntn,johnson,-81.8750,36.3750\ntn,johnson,-81.8750,36.5000\nva,washington,-81.8750,36.6250\nva,washington,-81.8750,36.7500\nva,washington,-81.8750,36.8750\nva,russell,-81.8750,37.0000\nva,tazewell,-81.8750,37.1250\nva,buchanan,-81.8750,37.2500\nwv,mcdowell,-81.8750,37.3750\nwv,mcdowell,-81.8750,37.5000\nwv,mingo,-81.8750,37.6250\nwv,logan,-81.8750,37.7500\nwv,logan,-81.8750,37.8750\nwv,boone,-81.8750,38.0000\nwv,boone,-81.8750,38.1250\nwv,lincoln,-81.8750,38.2500\nwv,kanawha,-81.8750,38.3750\nwv,putnam,-81.8750,38.5000\nwv,putnam,-81.8750,38.6250\nwv,mason,-81.8750,38.7500\nwv,jackson,-81.8750,38.8750\noh,meigs,-81.8750,39.0000\noh,meigs,-81.8750,39.1250\noh,athens,-81.8750,39.2500\noh,athens,-81.8750,39.3750\noh,morgan,-81.8750,39.5000\noh,morgan,-81.8750,39.6250\noh,morgan,-81.8750,39.7500\noh,muskingum,-81.8750,39.8750\noh,muskingum,-81.8750,40.0000\noh,muskingum,-81.8750,40.1250\noh,coshocton,-81.8750,40.2500\noh,coshocton,-81.8750,40.3750\noh,holmes,-81.8750,40.5000\noh,holmes,-81.8750,40.6250\noh,wayne,-81.8750,40.7500\noh,wayne,-81.8750,40.8750\noh,medina,-81.8750,41.0000\noh,medina,-81.8750,41.1250\noh,medina,-81.8750,41.2500\noh,cuyahoga,-81.8750,41.3750\nnc,caldwell,-81.7500,36.0000\nnc,watauga,-81.7500,36.1250\nnc,watauga,-81.7500,36.2500\ntn,johnson,-81.7500,36.3750\ntn,johnson,-81.7500,36.5000\nva,washington,-81.7500,36.6250\nva,washington,-81.7500,36.7500\nva,smyth,-81.7500,36.8750\nva,tazewell,-81.7500,37.0000\nva,tazewell,-81.7500,37.1250\nva,buchanan,-81.7500,37.2500\nwv,mcdowell,-81.7500,37.3750\nwv,mcdowell,-81.7500,37.5000\nwv,wyoming,-81.7500,37.6250\nwv,wyoming,-81.7500,37.7500\nwv,boone,-81.7500,37.8750\nwv,boone,-81.7500,38.0000\nwv,boone,-81.7500,38.1250\nwv,kanawha,-81.7500,38.2500\nwv,kanawha,-81.7500,38.3750\nwv,putnam,-81.7500,38.5000\nwv,putnam,-81.7500,38.6250\nwv,jackson,-81.7500,38.7500\nwv,jackson,-81.7500,38.8750\nwv,jackson,-81.7500,39.0000\noh,meigs,-81.7500,39.1250\noh,athens,-81.7500,39.2500\noh,washington,-81.7500,39.3750\noh,morgan,-81.7500,39.5000\noh,morgan,-81.7500,39.6250\noh,morgan,-81.7500,39.7500\noh,muskingum,-81.7500,39.8750\noh,muskingum,-81.7500,40.0000\noh,muskingum,-81.7500,40.1250\noh,coshocton,-81.7500,40.2500\noh,coshocton,-81.7500,40.3750\noh,holmes,-81.7500,40.5000\noh,holmes,-81.7500,40.6250\noh,wayne,-81.7500,40.7500\noh,wayne,-81.7500,40.8750\noh,medina,-81.7500,41.0000\noh,medina,-81.7500,41.1250\noh,medina,-81.7500,41.2500\noh,cuyahoga,-81.7500,41.3750\nnc,caldwell,-81.6250,36.0000\nnc,watauga,-81.6250,36.1250\nnc,watauga,-81.6250,36.2500\nnc,ashe,-81.6250,36.3750\nnc,ashe,-81.6250,36.5000\nva,washington,-81.6250,36.6250\nva,smyth,-81.6250,36.7500\nva,smyth,-81.6250,36.8750\nva,tazewell,-81.6250,37.0000\nva,tazewell,-81.6250,37.1250\nwv,mcdowell,-81.6250,37.2500\nwv,mcdowell,-81.6250,37.3750\nwv,mcdowell,-81.6250,37.5000\nwv,wyoming,-81.6250,37.6250\nwv,wyoming,-81.6250,37.7500\nwv,boone,-81.6250,37.8750\nwv,boone,-81.6250,38.0000\nwv,boone,-81.6250,38.1250\nwv,kanawha,-81.6250,38.2500\nwv,kanawha,-81.6250,38.3750\nwv,kanawha,-81.6250,38.5000\nwv,jackson,-81.6250,38.6250\nwv,jackson,-81.6250,38.7500\nwv,jackson,-81.6250,38.8750\nwv,jackson,-81.6250,39.0000\nwv,wood,-81.6250,39.1250\nwv,wood,-81.6250,39.2500\noh,washington,-81.6250,39.3750\noh,washington,-81.6250,39.5000\noh,morgan,-81.6250,39.6250\noh,noble,-81.6250,39.7500\noh,guernsey,-81.6250,39.8750\noh,guernsey,-81.6250,40.0000\noh,guernsey,-81.6250,40.1250\noh,coshocton,-81.6250,40.2500\noh,tuscarawas,-81.6250,40.3750\noh,tuscarawas,-81.6250,40.5000\noh,tuscarawas,-81.6250,40.6250\noh,stark,-81.6250,40.7500\noh,stark,-81.6250,40.8750\noh,summit,-81.6250,41.0000\noh,summit,-81.6250,41.1250\noh,summit,-81.6250,41.2500\noh,cuyahoga,-81.6250,41.3750\noh,cuyahoga,-81.6250,41.5000\nnc,caldwell,-81.5000,36.0000\nnc,wilkes,-81.5000,36.1250\nnc,watauga,-81.5000,36.2500\nnc,ashe,-81.5000,36.3750\nnc,ashe,-81.5000,36.5000\nva,grayson,-81.5000,36.6250\nva,smyth,-81.5000,36.7500\nva,smyth,-81.5000,36.8750\nva,smyth,-81.5000,37.0000\nva,tazewell,-81.5000,37.1250\nva,tazewell,-81.5000,37.2500\nwv,mcdowell,-81.5000,37.3750\nwv,wyoming,-81.5000,37.5000\nwv,wyoming,-81.5000,37.6250\nwv,wyoming,-81.5000,37.7500\nwv,raleigh,-81.5000,37.8750\nwv,boone,-81.5000,38.0000\nwv,kanawha,-81.5000,38.1250\nwv,kanawha,-81.5000,38.2500\nwv,kanawha,-81.5000,38.3750\nwv,kanawha,-81.5000,38.5000\nwv,roane,-81.5000,38.6250\nwv,roane,-81.5000,38.7500\nwv,roane,-81.5000,38.8750\nwv,wirt,-81.5000,39.0000\nwv,wood,-81.5000,39.1250\nwv,wood,-81.5000,39.2500\nwv,wood,-81.5000,39.3750\noh,washington,-81.5000,39.5000\noh,noble,-81.5000,39.6250\noh,noble,-81.5000,39.7500\noh,noble,-81.5000,39.8750\noh,guernsey,-81.5000,40.0000\noh,guernsey,-81.5000,40.1250\noh,tuscarawas,-81.5000,40.2500\noh,tuscarawas,-81.5000,40.3750\noh,tuscarawas,-81.5000,40.5000\noh,tuscarawas,-81.5000,40.6250\noh,stark,-81.5000,40.7500\noh,stark,-81.5000,40.8750\noh,summit,-81.5000,41.0000\noh,summit,-81.5000,41.1250\noh,summit,-81.5000,41.2500\noh,cuyahoga,-81.5000,41.3750\noh,cuyahoga,-81.5000,41.5000\nnc,caldwell,-81.3750,36.0000\nnc,wilkes,-81.3750,36.1250\nnc,wilkes,-81.3750,36.2500\nnc,ashe,-81.3750,36.3750\nnc,ashe,-81.3750,36.5000\nva,grayson,-81.3750,36.6250\nva,smyth,-81.3750,36.7500\nva,smyth,-81.3750,36.8750\nva,bland,-81.3750,37.0000\nva,tazewell,-81.3750,37.1250\nva,tazewell,-81.3750,37.2500\nwv,mcdowell,-81.3750,37.3750\nwv,wyoming,-81.3750,37.5000\nwv,wyoming,-81.3750,37.6250\nwv,raleigh,-81.3750,37.7500\nwv,raleigh,-81.3750,37.8750\nwv,kanawha,-81.3750,38.0000\nwv,kanawha,-81.3750,38.1250\nwv,kanawha,-81.3750,38.2500\nwv,kanawha,-81.3750,38.3750\nwv,kanawha,-81.3750,38.5000\nwv,roane,-81.3750,38.6250\nwv,roane,-81.3750,38.7500\nwv,roane,-81.3750,38.8750\nwv,wirt,-81.3750,39.0000\nwv,wirt,-81.3750,39.1250\nwv,wood,-81.3750,39.2500\noh,washington,-81.3750,39.3750\noh,washington,-81.3750,39.5000\noh,noble,-81.3750,39.6250\noh,noble,-81.3750,39.7500\noh,noble,-81.3750,39.8750\noh,guernsey,-81.3750,40.0000\noh,guernsey,-81.3750,40.1250\noh,tuscarawas,-81.3750,40.2500\noh,tuscarawas,-81.3750,40.3750\noh,tuscarawas,-81.3750,40.5000\noh,tuscarawas,-81.3750,40.6250\noh,stark,-81.3750,40.7500\noh,stark,-81.3750,40.8750\noh,portage,-81.3750,41.0000\noh,portage,-81.3750,41.1250\noh,portage,-81.3750,41.2500\noh,geauga,-81.3750,41.3750\noh,geauga,-81.3750,41.5000\noh,lake,-81.3750,41.6250\nnc,alexander,-81.2500,36.0000\nnc,wilkes,-81.2500,36.1250\nnc,wilkes,-81.2500,36.2500\nnc,ashe,-81.2500,36.3750\nnc,alleghany,-81.2500,36.5000\nva,grayson,-81.2500,36.6250\nva,grayson,-81.2500,36.7500\nva,wythe,-81.2500,36.8750\nva,wythe,-81.2500,37.0000\nva,bland,-81.2500,37.1250\nva,tazewell,-81.2500,37.2500\nwv,mercer,-81.2500,37.3750\nwv,mercer,-81.2500,37.5000\nwv,raleigh,-81.2500,37.6250\nwv,raleigh,-81.2500,37.7500\nwv,raleigh,-81.2500,37.8750\nwv,fayette,-81.2500,38.0000\nwv,fayette,-81.2500,38.1250\nwv,kanawha,-81.2500,38.2500\nwv,clay,-81.2500,38.3750\nwv,kanawha,-81.2500,38.5000\nwv,roane,-81.2500,38.6250\nwv,roane,-81.2500,38.7500\nwv,roane,-81.2500,38.8750\nwv,wirt,-81.2500,39.0000\nwv,ritchie,-81.2500,39.1250\nwv,ritchie,-81.2500,39.2500\nwv,pleasants,-81.2500,39.3750\noh,washington,-81.2500,39.5000\noh,monroe,-81.2500,39.6250\noh,monroe,-81.2500,39.7500\noh,noble,-81.2500,39.8750\noh,guernsey,-81.2500,40.0000\noh,guernsey,-81.2500,40.1250\noh,harrison,-81.2500,40.2500\noh,harrison,-81.2500,40.3750\noh,carroll,-81.2500,40.5000\noh,carroll,-81.2500,40.6250\noh,stark,-81.2500,40.7500\noh,stark,-81.2500,40.8750\noh,portage,-81.2500,41.0000\noh,portage,-81.2500,41.1250\noh,portage,-81.2500,41.2500\noh,geauga,-81.2500,41.3750\noh,geauga,-81.2500,41.5000\noh,geauga,-81.2500,41.6250\noh,lake,-81.2500,41.7500\nnc,alexander,-81.1250,36.0000\nnc,wilkes,-81.1250,36.1250\nnc,wilkes,-81.1250,36.2500\nnc,wilkes,-81.1250,36.3750\nnc,alleghany,-81.1250,36.5000\nva,grayson,-81.1250,36.6250\nva,grayson,-81.1250,36.7500\nva,wythe,-81.1250,36.8750\nva,wythe,-81.1250,37.0000\nva,bland,-81.1250,37.1250\nva,bland,-81.1250,37.2500\nwv,mercer,-81.1250,37.3750\nwv,mercer,-81.1250,37.5000\nwv,raleigh,-81.1250,37.6250\nwv,raleigh,-81.1250,37.7500\nwv,raleigh,-81.1250,37.8750\nwv,fayette,-81.1250,38.0000\nwv,fayette,-81.1250,38.1250\nwv,nicholas,-81.1250,38.2500\nwv,clay,-81.1250,38.3750\nwv,clay,-81.1250,38.5000\nwv,roane,-81.1250,38.6250\nwv,calhoun,-81.1250,38.7500\nwv,calhoun,-81.1250,38.8750\nwv,calhoun,-81.1250,39.0000\nwv,ritchie,-81.1250,39.1250\nwv,ritchie,-81.1250,39.2500\nwv,pleasants,-81.1250,39.3750\noh,washington,-81.1250,39.5000\noh,monroe,-81.1250,39.6250\noh,monroe,-81.1250,39.7500\noh,belmont,-81.1250,39.8750\noh,belmont,-81.1250,40.0000\noh,belmont,-81.1250,40.1250\noh,harrison,-81.1250,40.2500\noh,harrison,-81.1250,40.3750\noh,carroll,-81.1250,40.5000\noh,carroll,-81.1250,40.6250\noh,stark,-81.1250,40.7500\noh,stark,-81.1250,40.8750\noh,portage,-81.1250,41.0000\noh,portage,-81.1250,41.1250\noh,portage,-81.1250,41.2500\noh,geauga,-81.1250,41.3750\noh,geauga,-81.1250,41.5000\noh,geauga,-81.1250,41.6250\noh,lake,-81.1250,41.7500\nnc,iredell,-81.0000,36.0000\nnc,wilkes,-81.0000,36.1250\nnc,wilkes,-81.0000,36.2500\nnc,alleghany,-81.0000,36.3750\nnc,alleghany,-81.0000,36.5000\nva,grayson,-81.0000,36.6250\nva,grayson,-81.0000,36.7500\nva,wythe,-81.0000,36.8750\nva,wythe,-81.0000,37.0000\nva,bland,-81.0000,37.1250\nva,bland,-81.0000,37.2500\nwv,mercer,-81.0000,37.3750\nwv,mercer,-81.0000,37.5000\nwv,summers,-81.0000,37.6250\nwv,raleigh,-81.0000,37.7500\nwv,fayette,-81.0000,37.8750\nwv,fayette,-81.0000,38.0000\nwv,fayette,-81.0000,38.1250\nwv,nicholas,-81.0000,38.2500\nwv,clay,-81.0000,38.3750\nwv,clay,-81.0000,38.5000\nwv,clay,-81.0000,38.6250\nwv,calhoun,-81.0000,38.7500\nwv,gilmer,-81.0000,38.8750\nwv,gilmer,-81.0000,39.0000\nwv,ritchie,-81.0000,39.1250\nwv,ritchie,-81.0000,39.2500\nwv,tyler,-81.0000,39.3750\nwv,tyler,-81.0000,39.5000\noh,monroe,-81.0000,39.6250\noh,monroe,-81.0000,39.7500\noh,belmont,-81.0000,39.8750\noh,belmont,-81.0000,40.0000\noh,belmont,-81.0000,40.1250\noh,harrison,-81.0000,40.2500\noh,harrison,-81.0000,40.3750\noh,carroll,-81.0000,40.5000\noh,carroll,-81.0000,40.6250\noh,columbiana,-81.0000,40.7500\noh,columbiana,-81.0000,40.8750\noh,portage,-81.0000,41.0000\noh,portage,-81.0000,41.1250\noh,portage,-81.0000,41.2500\noh,trumbull,-81.0000,41.3750\noh,trumbull,-81.0000,41.5000\noh,ashtabula,-81.0000,41.6250\noh,ashtabula,-81.0000,41.7500\nnc,iredell,-80.8750,36.0000\nnc,yadkin,-80.8750,36.1250\nnc,wilkes,-80.8750,36.2500\nnc,surry,-80.8750,36.3750\nnc,surry,-80.8750,36.5000\nva,carroll,-80.8750,36.6250\nva,carroll,-80.8750,36.7500\nva,wythe,-80.8750,36.8750\nva,wythe,-80.8750,37.0000\nva,pulaski,-80.8750,37.1250\nva,giles,-80.8750,37.2500\nva,giles,-80.8750,37.3750\nwv,summers,-80.8750,37.5000\nwv,summers,-80.8750,37.6250\nwv,summers,-80.8750,37.7500\nwv,fayette,-80.8750,37.8750\nwv,fayette,-80.8750,38.0000\nwv,nicholas,-80.8750,38.1250\nwv,nicholas,-80.8750,38.2500\nwv,nicholas,-80.8750,38.3750\nwv,clay,-80.8750,38.5000\nwv,braxton,-80.8750,38.6250\nwv,braxton,-80.8750,38.7500\nwv,gilmer,-80.8750,38.8750\nwv,gilmer,-80.8750,39.0000\nwv,ritchie,-80.8750,39.1250\nwv,doddridge,-80.8750,39.2500\nwv,tyler,-80.8750,39.3750\nwv,tyler,-80.8750,39.5000\nwv,wetzel,-80.8750,39.6250\noh,monroe,-80.8750,39.7500\noh,belmont,-80.8750,39.8750\noh,belmont,-80.8750,40.0000\noh,belmont,-80.8750,40.1250\noh,jefferson,-80.8750,40.2500\noh,harrison,-80.8750,40.3750\noh,jefferson,-80.8750,40.5000\noh,carroll,-80.8750,40.6250\noh,columbiana,-80.8750,40.7500\noh,columbiana,-80.8750,40.8750\noh,mahoning,-80.8750,41.0000\noh,mahoning,-80.8750,41.1250\noh,trumbull,-80.8750,41.2500\noh,trumbull,-80.8750,41.3750\noh,trumbull,-80.8750,41.5000\noh,ashtabula,-80.8750,41.6250\noh,ashtabula,-80.8750,41.7500\noh,ashtabula,-80.8750,41.8750\nnc,iredell,-80.7500,36.0000\nnc,yadkin,-80.7500,36.1250\nnc,yadkin,-80.7500,36.2500\nnc,surry,-80.7500,36.3750\nnc,surry,-80.7500,36.5000\nva,carroll,-80.7500,36.6250\nva,carroll,-80.7500,36.7500\nva,carroll,-80.7500,36.8750\nva,pulaski,-80.7500,37.0000\nva,pulaski,-80.7500,37.1250\nva,giles,-80.7500,37.2500\nva,giles,-80.7500,37.3750\nwv,monroe,-80.7500,37.5000\nwv,summers,-80.7500,37.6250\nwv,summers,-80.7500,37.7500\nwv,greenbrier,-80.7500,37.8750\nwv,greenbrier,-80.7500,38.0000\nwv,nicholas,-80.7500,38.1250\nwv,nicholas,-80.7500,38.2500\nwv,nicholas,-80.7500,38.3750\nwv,nicholas,-80.7500,38.5000\nwv,braxton,-80.7500,38.6250\nwv,braxton,-80.7500,38.7500\nwv,gilmer,-80.7500,38.8750\nwv,gilmer,-80.7500,39.0000\nwv,doddridge,-80.7500,39.1250\nwv,doddridge,-80.7500,39.2500\nwv,doddridge,-80.7500,39.3750\nwv,tyler,-80.7500,39.5000\nwv,wetzel,-80.7500,39.6250\nwv,marshall,-80.7500,39.7500\nwv,marshall,-80.7500,39.8750\noh,belmont,-80.7500,40.0000\noh,belmont,-80.7500,40.1250\noh,jefferson,-80.7500,40.2500\noh,jefferson,-80.7500,40.3750\noh,jefferson,-80.7500,40.5000\noh,columbiana,-80.7500,40.6250\noh,columbiana,-80.7500,40.7500\noh,columbiana,-80.7500,40.8750\noh,mahoning,-80.7500,41.0000\noh,mahoning,-80.7500,41.1250\noh,trumbull,-80.7500,41.2500\noh,trumbull,-80.7500,41.3750\noh,trumbull,-80.7500,41.5000\noh,ashtabula,-80.7500,41.6250\noh,ashtabula,-80.7500,41.7500\noh,ashtabula,-80.7500,41.8750\nnc,davie,-80.6250,36.0000\nnc,yadkin,-80.6250,36.1250\nnc,yadkin,-80.6250,36.2500\nnc,surry,-80.6250,36.3750\nnc,surry,-80.6250,36.5000\nva,carroll,-80.6250,36.6250\nva,carroll,-80.6250,36.7500\nva,carroll,-80.6250,36.8750\nva,pulaski,-80.6250,37.0000\nva,pulaski,-80.6250,37.1250\nva,giles,-80.6250,37.2500\nva,giles,-80.6250,37.3750\nwv,monroe,-80.6250,37.5000\nwv,monroe,-80.6250,37.6250\nwv,greenbrier,-80.6250,37.7500\nwv,greenbrier,-80.6250,37.8750\nwv,greenbrier,-80.6250,38.0000\nwv,greenbrier,-80.6250,38.1250\nwv,nicholas,-80.6250,38.2500\nwv,webster,-80.6250,38.3750\nwv,webster,-80.6250,38.5000\nwv,braxton,-80.6250,38.6250\nwv,braxton,-80.6250,38.7500\nwv,braxton,-80.6250,38.8750\nwv,lewis,-80.6250,39.0000\nwv,lewis,-80.6250,39.1250\nwv,doddridge,-80.6250,39.2500\nwv,doddridge,-80.6250,39.3750\nwv,wetzel,-80.6250,39.5000\nwv,wetzel,-80.6250,39.6250\nwv,marshall,-80.6250,39.7500\nwv,marshall,-80.6250,39.8750\nwv,marshall,-80.6250,40.0000\nwv,ohio,-80.6250,40.1250\nwv,brooke,-80.6250,40.2500\noh,jefferson,-80.6250,40.3750\noh,jefferson,-80.6250,40.5000\noh,columbiana,-80.6250,40.6250\noh,columbiana,-80.6250,40.7500\noh,columbiana,-80.6250,40.8750\noh,mahoning,-80.6250,41.0000\noh,mahoning,-80.6250,41.1250\noh,trumbull,-80.6250,41.2500\noh,trumbull,-80.6250,41.3750\noh,ashtabula,-80.6250,41.5000\noh,ashtabula,-80.6250,41.6250\noh,ashtabula,-80.6250,41.7500\noh,ashtabula,-80.6250,41.8750\nnc,davie,-80.5000,36.0000\nnc,yadkin,-80.5000,36.1250\nnc,yadkin,-80.5000,36.2500\nnc,surry,-80.5000,36.3750\nnc,surry,-80.5000,36.5000\nva,patrick,-80.5000,36.6250\nva,carroll,-80.5000,36.7500\nva,floyd,-80.5000,36.8750\nva,montgomery,-80.5000,37.0000\nva,montgomery,-80.5000,37.1250\nva,montgomery,-80.5000,37.2500\nva,giles,-80.5000,37.3750\nwv,monroe,-80.5000,37.5000\nwv,monroe,-80.5000,37.6250\nwv,greenbrier,-80.5000,37.7500\nwv,greenbrier,-80.5000,37.8750\nwv,greenbrier,-80.5000,38.0000\nwv,greenbrier,-80.5000,38.1250\nwv,nicholas,-80.5000,38.2500\nwv,webster,-80.5000,38.3750\nwv,webster,-80.5000,38.5000\nwv,webster,-80.5000,38.6250\nwv,braxton,-80.5000,38.7500\nwv,lewis,-80.5000,38.8750\nwv,lewis,-80.5000,39.0000\nwv,lewis,-80.5000,39.1250\nwv,harrison,-80.5000,39.2500\nwv,harrison,-80.5000,39.3750\nwv,wetzel,-80.5000,39.5000\nwv,wetzel,-80.5000,39.6250\npa,greene,-80.5000,39.7500\npa,greene,-80.5000,39.8750\npa,washington,-80.5000,40.0000\npa,washington,-80.5000,40.1250\npa,washington,-80.5000,40.2500\npa,washington,-80.5000,40.3750\npa,beaver,-80.5000,40.5000\npa,beaver,-80.5000,40.6250\npa,beaver,-80.5000,40.7500\npa,lawrence,-80.5000,40.8750\npa,lawrence,-80.5000,41.0000\npa,lawrence,-80.5000,41.1250\npa,mercer,-80.5000,41.2500\npa,mercer,-80.5000,41.3750\npa,crawford,-80.5000,41.5000\npa,crawford,-80.5000,41.6250\npa,crawford,-80.5000,41.7500\npa,erie,-80.5000,41.8750\nnc,forsyth,-80.3750,36.0000\nnc,forsyth,-80.3750,36.1250\nnc,forsyth,-80.3750,36.2500\nnc,stokes,-80.3750,36.3750\nnc,stokes,-80.3750,36.5000\nva,patrick,-80.3750,36.6250\nva,patrick,-80.3750,36.7500\nva,floyd,-80.3750,36.8750\nva,floyd,-80.3750,37.0000\nva,montgomery,-80.3750,37.1250\nva,montgomery,-80.3750,37.2500\nva,craig,-80.3750,37.3750\nwv,monroe,-80.3750,37.5000\nwv,monroe,-80.3750,37.6250\nwv,greenbrier,-80.3750,37.7500\nwv,greenbrier,-80.3750,37.8750\nwv,greenbrier,-80.3750,38.0000\nwv,greenbrier,-80.3750,38.1250\nwv,webster,-80.3750,38.2500\nwv,webster,-80.3750,38.3750\nwv,webster,-80.3750,38.5000\nwv,webster,-80.3750,38.6250\nwv,upshur,-80.3750,38.7500\nwv,upshur,-80.3750,38.8750\nwv,lewis,-80.3750,39.0000\nwv,harrison,-80.3750,39.1250\nwv,harrison,-80.3750,39.2500\nwv,harrison,-80.3750,39.3750\nwv,marion,-80.3750,39.5000\nwv,marion,-80.3750,39.6250\npa,greene,-80.3750,39.7500\npa,greene,-80.3750,39.8750\npa,washington,-80.3750,40.0000\npa,washington,-80.3750,40.1250\npa,washington,-80.3750,40.2500\npa,washington,-80.3750,40.3750\npa,beaver,-80.3750,40.5000\npa,beaver,-80.3750,40.6250\npa,beaver,-80.3750,40.7500\npa,lawrence,-80.3750,40.8750\npa,lawrence,-80.3750,41.0000\npa,lawrence,-80.3750,41.1250\npa,mercer,-80.3750,41.2500\npa,mercer,-80.3750,41.3750\npa,crawford,-80.3750,41.5000\npa,crawford,-80.3750,41.6250\npa,crawford,-80.3750,41.7500\npa,erie,-80.3750,41.8750\npa,erie,-80.3750,42.0000\nnc,forsyth,-80.2500,36.0000\nnc,forsyth,-80.2500,36.1250\nnc,forsyth,-80.2500,36.2500\nnc,stokes,-80.2500,36.3750\nnc,stokes,-80.2500,36.5000\nva,patrick,-80.2500,36.6250\nva,patrick,-80.2500,36.7500\nva,floyd,-80.2500,36.8750\nva,floyd,-80.2500,37.0000\nva,montgomery,-80.2500,37.1250\nva,montgomery,-80.2500,37.2500\nva,craig,-80.2500,37.3750\nva,craig,-80.2500,37.5000\nwv,monroe,-80.2500,37.6250\nva,alleghany,-80.2500,37.7500\nwv,greenbrier,-80.2500,37.8750\nwv,greenbrier,-80.2500,38.0000\nwv,pocahontas,-80.2500,38.1250\nwv,pocahontas,-80.2500,38.2500\nwv,pocahontas,-80.2500,38.3750\nwv,webster,-80.2500,38.5000\nwv,webster,-80.2500,38.6250\nwv,upshur,-80.2500,38.7500\nwv,upshur,-80.2500,38.8750\nwv,upshur,-80.2500,39.0000\nwv,harrison,-80.2500,39.1250\nwv,harrison,-80.2500,39.2500\nwv,harrison,-80.2500,39.3750\nwv,marion,-80.2500,39.5000\nwv,monongalia,-80.2500,39.6250\npa,greene,-80.2500,39.7500\npa,greene,-80.2500,39.8750\npa,greene,-80.2500,40.0000\npa,washington,-80.2500,40.1250\npa,washington,-80.2500,40.2500\npa,washington,-80.2500,40.3750\npa,allegheny,-80.2500,40.5000\npa,beaver,-80.2500,40.6250\npa,beaver,-80.2500,40.7500\npa,lawrence,-80.2500,40.8750\npa,lawrence,-80.2500,41.0000\npa,mercer,-80.2500,41.1250\npa,mercer,-80.2500,41.2500\npa,mercer,-80.2500,41.3750\npa,crawford,-80.2500,41.5000\npa,crawford,-80.2500,41.6250\npa,crawford,-80.2500,41.7500\npa,erie,-80.2500,41.8750\npa,erie,-80.2500,42.0000\nnc,davidson,-80.1250,36.0000\nnc,forsyth,-80.1250,36.1250\nnc,forsyth,-80.1250,36.2500\nnc,stokes,-80.1250,36.3750\nnc,stokes,-80.1250,36.5000\nva,patrick,-80.1250,36.6250\nva,patrick,-80.1250,36.7500\nva,franklin,-80.1250,36.8750\nva,franklin,-80.1250,37.0000\nva,franklin,-80.1250,37.1250\nva,roanoke,-80.1250,37.2500\nva,roanoke,-80.1250,37.3750\nva,craig,-80.1250,37.5000\nva,alleghany,-80.1250,37.6250\nva,alleghany,-80.1250,37.7500\nva,alleghany,-80.1250,37.8750\nwv,greenbrier,-80.1250,38.0000\nwv,pocahontas,-80.1250,38.1250\nwv,pocahontas,-80.1250,38.2500\nwv,pocahontas,-80.1250,38.3750\nwv,randolph,-80.1250,38.5000\nwv,randolph,-80.1250,38.6250\nwv,upshur,-80.1250,38.7500\nwv,upshur,-80.1250,38.8750\nwv,upshur,-80.1250,39.0000\nwv,barbour,-80.1250,39.1250\nwv,taylor,-80.1250,39.2500\nwv,taylor,-80.1250,39.3750\nwv,marion,-80.1250,39.5000\nwv,monongalia,-80.1250,39.6250\npa,greene,-80.1250,39.7500\npa,greene,-80.1250,39.8750\npa,washington,-80.1250,40.0000\npa,washington,-80.1250,40.1250\npa,washington,-80.1250,40.2500\npa,allegheny,-80.1250,40.3750\npa,allegheny,-80.1250,40.5000\npa,allegheny,-80.1250,40.6250\npa,butler,-80.1250,40.7500\npa,butler,-80.1250,40.8750\npa,butler,-80.1250,41.0000\npa,mercer,-80.1250,41.1250\npa,mercer,-80.1250,41.2500\npa,mercer,-80.1250,41.3750\npa,crawford,-80.1250,41.5000\npa,crawford,-80.1250,41.6250\npa,crawford,-80.1250,41.7500\npa,erie,-80.1250,41.8750\npa,erie,-80.1250,42.0000\n"
  },
  {
    "path": "scripts/yieldfx/county_csv.py",
    "content": "\"\"\"Here we are, dumping CSV.\"\"\"\n\nimport os\nimport subprocess\nfrom datetime import date, timedelta\n\nimport numpy as np\nimport pandas as pd\nfrom pyiem.util import logger, ncopen\n\nLOG = logger()\n\n\ndef process(df, ncfn, south, west):\n    \"\"\"Do some extraction.\"\"\"\n    fn1 = f\"/mesonet/share/pickup/yieldfx/baseline/{ncfn}\"\n    fn2 = f\"/mesonet/share/pickup/yieldfx/2019/{ncfn}\"\n    if not os.path.isfile(fn1) or not os.path.isfile(fn2):\n        LOG.warning(\"Missing %s or %s\", fn1, fn2)\n        return\n\n    with ncopen(fn1) as nc, ncopen(fn2) as nc2019:\n        for _, row in df.iterrows():\n            if row[\"State\"] not in [\n                \"nd\",\n                \"sd\",\n                \"ne\",\n                \"ks\",\n                \"mo\",\n                \"ia\",\n                \"mn\",\n                \"wi\",\n                \"il\",\n                \"in\",\n                \"ky\",\n                \"oh\",\n                \"mi\",\n            ]:\n                continue\n            i = int((row[\"long\"] - west) / 0.1250)\n            j = int((row[\"lat\"] - south) / 0.1250)\n            nc_prcp = nc.variables[\"prcp\"][:, j, i]\n            nc_tmax = nc.variables[\"tmax\"][:, j, i]\n            nc_tmin = nc.variables[\"tmin\"][:, j, i]\n            nc_srad = nc.variables[\"srad\"][:, j, i]\n            nc2019_prcp = nc2019.variables[\"prcp\"][:, j, i]\n            nc2019_tmax = nc2019.variables[\"tmax\"][:, j, i]\n            nc2019_tmin = nc2019.variables[\"tmin\"][:, j, i]\n            nc2019_srad = nc2019.variables[\"srad\"][:, j, i]\n\n            with open(\n                (\"/mesonet/share/pickup/yieldfx/county/%s_%s_%.4f_%.4f.csv\")\n                % (\n                    row[\"State\"].replace(\" \", \"_\"),\n                    row[\"County\"].replace(\" \", \"_\"),\n                    0 - row[\"long\"],\n                    row[\"lat\"],\n                ),\n                \"w\",\n            ) as fp:\n                fp.write(\n                    \"year,yday,prcp (mm/day),srad (W/m^2),tmax (deg c),\"\n                    \"tmin (deg c)\\n\"\n                )\n                base = date(1980, 1, 1)\n                for tstep, days in enumerate(nc.variables[\"time\"]):\n                    ts = base + timedelta(days=int(days))\n                    fp.write(\n                        \"%s,%s,%.3f,%.3f,%.3f,%.3f\\n\"\n                        % (\n                            ts.year,\n                            int(ts.strftime(\"%j\")),\n                            nc_prcp[tstep],\n                            nc_srad[tstep] * 1e6 / 86400.0,\n                            nc_tmax[tstep],\n                            nc_tmin[tstep],\n                        )\n                    )\n                base = date(2019, 1, 1)\n                for tstep, days in enumerate(nc2019.variables[\"time\"]):\n                    ts = base + timedelta(days=int(days))\n                    fp.write(\n                        \"%s,%s,%.3f,%.3f,%.3f,%.3f\\n\"\n                        % (\n                            ts.year,\n                            int(ts.strftime(\"%j\")),\n                            nc2019_prcp[tstep],\n                            nc2019_srad[tstep] * 1e6 / 86400.0,\n                            nc2019_tmax[tstep],\n                            nc2019_tmin[tstep],\n                        )\n                    )\n\n\ndef main():\n    \"\"\"Go Main Go.\"\"\"\n    df = pd.read_csv(\"counties.csv\", header=0)\n    for west in np.arange(-104, -80, 2):\n        east = west + 2.0\n        for south in np.arange(36, 50, 2):\n            north = south + 2.0\n            ncfn = \"clim_%04i_%04i.tile.nc4\" % (\n                (90 - south) / 2,\n                (180 - (0 - west)) / 2 + 1,\n            )\n            df2 = df[\n                (df[\"lat\"] >= south)\n                & (df[\"lat\"] < north)\n                & (df[\"long\"] >= west)\n                & (df[\"long\"] < east)\n            ]\n            if df2.empty:\n                continue\n            process(df2, ncfn, south, west)\n\n    os.chdir(\"/mesonet/share/pickup/yieldfx\")\n    subprocess.call([\"zip\", \"-q\", \"-r\", \"counties.zip\", \"county\"])\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/yieldfx/dump_hybridmaize.py",
    "content": "\"\"\"Create a hybrid maize dump file.\n\nCalled from RUN_12Z.sh\n\"\"\"\n\nimport subprocess\nfrom datetime import date, timedelta\n\nfrom pyiem.database import get_dbconn\nfrom pyiem.network import Table as NetworkTable\nfrom pyiem.util import convert_value, logger\n\nLOG = logger()\nSITES = [\"ames\", \"nashua\", \"sutherland\", \"crawfordsville\", \"lewis\"]\nXREF = [\"BOOI4\", \"NASI4\", \"CAMI4\", \"CRFI4\", \"OKLI4\"]\nDIRPATH = \"/mesonet/share/pickup/yieldfx\"\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    nt = NetworkTable(\"ISUSM\")\n    ipgconn = get_dbconn(\"iem\")\n    icursor = ipgconn.cursor()\n    today = date.today()\n    for i, site in enumerate(SITES):\n        # Need to figure out this year's data\n        thisyear = {}\n        # get values from latest yieldfx dump\n        with open(f\"{DIRPATH}/{site}.met\", encoding=\"utf-8\") as fh:\n            for line_in in fh:\n                line = line_in.strip()\n                if not line.startswith(\"2016\"):\n                    continue\n                tokens = line.split()\n                valid = date(int(tokens[0]), 1, 1) + timedelta(\n                    days=int(tokens[1]) - 1\n                )\n                if valid >= today:\n                    break\n                thisyear[valid.strftime(\"%m%d\")] = {\n                    \"radn\": float(tokens[2]),\n                    \"maxt\": float(tokens[3]),\n                    \"mint\": float(tokens[4]),\n                    \"rain\": float(tokens[5]),\n                    \"windspeed\": None,\n                    \"rh\": None,\n                }\n        # Supplement with DSM data\n        icursor.execute(\n            \"\"\"\n        select day, avg_sknt, avg_rh from summary where iemid = 37004\n        and day >= '2021-09-01' ORDER by day ASC\"\"\"\n        )\n        for row in icursor:\n            if row[1] is None or row[2] is None:\n                continue\n            thisyear[row[0].strftime(\"%m%d\")][\"windspeed\"] = convert_value(\n                row[1], \"knot\", \"meter / second\"\n            )\n            thisyear[row[0].strftime(\"%m%d\")][\"rh\"] = row[2]\n\n        fn = f\"{site}_HM_{today:%Y%m%d}.wth\"\n        with open(fn, \"w\", encoding=\"ascii\") as fh:\n            fh.write(\n                \"\"\"\\\n%s        IA   Lat.(deg)= %.2f  Long.(deg)=%.2f  Elev.(m)=%.0f.\\r\n%.2f (Lat.)\\r\nyear    day     Solar   T-High  T-Low   RelHum  Precip  WndSpd\\r\n                MJ/m2   oC      oC      %%       mm      km/hr\\r\n\"\"\"\n                % (\n                    site.upper(),\n                    nt.sts[XREF[i]][\"lat\"],\n                    nt.sts[XREF[i]][\"lon\"],\n                    nt.sts[XREF[i]][\"lat\"],\n                    nt.sts[XREF[i]][\"elevation\"],\n                )\n            )\n\n            # Get the baseline obs\n            sts = date(2021, 9, 1)\n            ets = today\n            now = sts\n            while now < ets:\n                idx = now.strftime(\"%m%d\")\n                ws = convert_value(\n                    thisyear[idx][\"windspeed\"],\n                    \"meter / second\",\n                    \"kilometer / hour\",\n                )\n                fh.write(\n                    f\"{now:%Y}\\t\"\n                    f\"{now.timetuple().tm_yday:4.0f}\\t\"\n                    f\"{thisyear[idx]['radn']:.3f}\\t\"\n                    f\"{thisyear[idx]['maxt']:.1f}\\t\"\n                    f\"{thisyear[idx]['mint']:.1f}\\t\"\n                    f\"{thisyear[idx]['rh']:.0f}\\t\"\n                    f\"{thisyear[idx]['rain']:.1f}\\t\"\n                    f\"{ws:.1f}\\r\\n\"\n                )\n                now += timedelta(days=1)\n        try:\n            subprocess.call(\n                [\"mv\", fn, f\"/mesonet/share/pickup/yieldfx/{site}.wth\"],\n            )\n        except Exception as exp:\n            LOG.exception(exp)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/yieldfx/dumpbaseline.py",
    "content": "\"\"\"Dump baseline file as CSV, with GDD computed\"\"\"\n\nimport glob\nimport os\nfrom datetime import date, timedelta\n\nimport pyiem.meteorology as met\nfrom metpy.units import units\n\n\ndef main():\n    \"\"\"Go Main Go\"\"\"\n    os.chdir(\"baseline\")\n    for fn in glob.glob(\"*.met\"):\n        location = fn[:-4]\n        with (\n            open(f\"{location}.csv\", \"w\", encoding=\"ascii\") as fh,\n            open(fn, encoding=\"ascii\") as fhh,\n        ):\n            fh.write(\"date,high[F],low[F],precip[inch],gdd[F]\\n\")\n            for line_in in fhh:\n                line = line_in.strip()\n                if (\n                    not line.startswith(\"2012\")\n                    and not line.startswith(\"2015\")\n                    and not line.startswith(\"2016\")\n                ):\n                    continue\n                tokens = line.split()\n                valid = date(int(tokens[0]), 1, 1) + timedelta(\n                    days=int(tokens[1]) - 1\n                )\n                high = units(\"degC\") * float(tokens[3])\n                low = units(\"degC\") * float(tokens[4])\n                gdd = met.gdd(high, low, 50, 86)\n                precip = units(\"millimeter\") * float(tokens[5])\n                fh.write(\n                    f\"{valid:%Y-%m-%d},{high.to('degF').m:.1f},\"\n                    f\"{low.to('degF').m:.1f},{precip.to('inch').m:.2f},\"\n                    f\"{gdd:.1f}\\n\"\n                )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/yieldfx/psims_baseline.py",
    "content": "\"\"\"Generate PSIMs Tiles for baseline.\n\nRun from RUN_2AM.sh for yesterday and eight days ago, so to pick up POWER.\n\"\"\"\n\nimport os\nimport sys\nfrom datetime import date, datetime, timedelta\n\nimport click\nimport numpy as np\nfrom metpy.units import units\nfrom pyiem.grid.nav import get_nav\nfrom pyiem.iemre import get_daily_ncname\nfrom pyiem.meteorology import gdd\nfrom pyiem.util import convert_value, logger, ncopen\nfrom tqdm import tqdm\n\nLOG = logger()\n\n\ndef make_netcdf(ncfn, valid, west, south):\n    \"\"\"Make our netcdf\"\"\"\n    totaldays = (\n        valid.replace(month=12, day=31)\n        - valid.replace(year=1980, month=1, day=1)\n    ).days + 1\n    with ncopen(ncfn, \"w\") as nc:\n        # Dimensions\n        nc.createDimension(\"time\", totaldays)\n        nc.createDimension(\"lat\", 16)  # 0.125 grid over 2 degrees\n        nc.createDimension(\"lon\", 16)\n        # Coordinate Dimensions\n        time = nc.createVariable(\"time\", int, (\"time\",))\n        time.units = \"days since 1980-01-01 00:00:00\"\n        time[:] = np.arange(0, totaldays)\n\n        lat = nc.createVariable(\"lat\", float, (\"lat\"))\n        lat.units = \"degrees_north\"\n        lat.long_name = \"latitude\"\n        lat[:] = np.arange(south + 0.125 / 2.0, south + 2.0, 0.125)\n\n        lon = nc.createVariable(\"lon\", float, (\"lon\"))\n        lon.units = \"degrees_east\"\n        lon.long_name = \"longitude\"\n        lon[:] = np.arange(west + 0.125 / 2.0, west + 2.0, 0.125)\n\n        prcp = nc.createVariable(\n            \"prcp\", float, (\"time\", \"lat\", \"lon\"), fill_value=1e20\n        )\n        prcp.units = \"mm/day\"\n        prcp.long_name = \"daily total precipitation\"\n\n        tmax = nc.createVariable(\n            \"tmax\", float, (\"time\", \"lat\", \"lon\"), fill_value=1e20\n        )\n        tmax.units = \"degrees C\"\n        tmax.long_name = \"daily maximum temperature\"\n\n        tmin = nc.createVariable(\n            \"tmin\", float, (\"time\", \"lat\", \"lon\"), fill_value=1e20\n        )\n        tmin.units = \"degrees C\"\n        tmin.long_name = \"daily minimum temperature\"\n\n        gddf = nc.createVariable(\n            \"gdd_f\", float, (\"time\", \"lat\", \"lon\"), fill_value=1e20\n        )\n        gddf.units = \"degrees F\"\n        gddf.long_name = \"Growing Degree Days F (base 50 ceiling 86)\"\n\n        srad = nc.createVariable(\n            \"srad\", float, (\"time\", \"lat\", \"lon\"), fill_value=1e20\n        )\n        srad.units = \"MJ\"\n        srad.long_name = \"daylight average incident shortwave radiation\"\n\n\ndef copy_iemre(nc, ncdate0: date, ncdate1: date, islice, jslice):\n    \"\"\"Copy IEMRE data from a given year to **inclusive** dates.\"\"\"\n    rencfn = get_daily_ncname(ncdate0.year)\n    if not os.path.isfile(rencfn):\n        LOG.info(\"reanalysis fn %s missing\", rencfn)\n        return\n    with ncopen(rencfn) as renc:\n        # Compute offsets for yieldfx file\n        tidx0 = (ncdate0 - date(1980, 1, 1)).days\n        tidx1 = (ncdate1 - date(1980, 1, 1)).days\n        yfx_slice = slice(tidx0, tidx1 + 1)\n        # Compute offsets for the reanalysis file\n        tidx0 = (ncdate0 - date(ncdate0.year, 1, 1)).days\n        tidx1 = (ncdate1 - date(ncdate0.year, 1, 1)).days\n        re_slice = slice(tidx0, tidx1 + 1)\n\n        highc = convert_value(\n            renc.variables[\"high_tmpk\"][re_slice, jslice, islice],\n            \"degK\",\n            \"degC\",\n        )\n        lowc = convert_value(\n            renc.variables[\"low_tmpk\"][re_slice, jslice, islice],\n            \"degK\",\n            \"degC\",\n        )\n        nc.variables[\"tmax\"][yfx_slice, :, :] = highc\n        nc.variables[\"tmin\"][yfx_slice, :, :] = lowc\n        nc.variables[\"gdd_f\"][yfx_slice, :, :] = gdd(\n            units(\"degC\") * highc, units(\"degC\") * lowc\n        )\n        nc.variables[\"prcp\"][yfx_slice, :, :] = renc.variables[\"p01d\"][\n            re_slice, jslice, islice\n        ]\n        # Special care needed for solar radiation filling\n        for rt, nt in zip(\n            list(range(re_slice.start, re_slice.stop)),\n            list(range(yfx_slice.start, yfx_slice.stop)),\n            strict=False,\n        ):\n            # IEMRE power_swdn is MJ, test to see if data exists\n            srad = renc.variables[\"power_swdn\"][rt, jslice, islice]\n            if srad.mask.any():\n                # IEMRE rsds uses W m-2, we want MJ\n                srad = (\n                    renc.variables[\"rsds\"][rt, jslice, islice]\n                    * 86400.0\n                    / 1000000.0\n                )\n            nc.variables[\"srad\"][nt, :, :] = srad\n\n\ndef tile_extraction(nc, valid, west: float, south: float, fullmode):\n    \"\"\"Do our tile extraction\"\"\"\n    # update model metadata\n    i, j = get_nav(\"IEMRE\", \"conus\").find_ij(west, south)\n    if i is None or j is None:\n        LOG.warning(\"Failed to find i,j for %s %s\", west, south)\n        return\n    islice = slice(i, i + 16)\n    jslice = slice(j, j + 16)\n    if fullmode:\n        for year in range(1980, valid.year + 1):\n            copy_iemre(\n                nc,\n                date(year, 1, 1),\n                date(year, 12, 31),\n                islice,\n                jslice,\n            )\n    else:\n        copy_iemre(nc, valid, valid, islice, jslice)\n\n\ndef qc(nc):\n    \"\"\"Quick QC of the file.\"\"\"\n    for i, time in enumerate(nc.variables[\"time\"][:]):\n        ts = date(1980, 1, 1) + timedelta(days=int(time))\n        avgv = np.mean(nc.variables[\"srad\"][i, :, :])\n        if avgv > 0:\n            continue\n        print(f\"ts: {ts} avgv: {avgv}\")\n    print(\"done...\")\n\n\ndef workflow(valid, ncfn, west, south, fullmode):\n    \"\"\"Make the magic happen\"\"\"\n    basedir = \"/mesonet/share/pickup/yieldfx/baseline\"\n    if not os.path.isdir(basedir):\n        os.makedirs(basedir)\n    fullpath = f\"{basedir}/{ncfn}\"\n    if fullmode:\n        make_netcdf(fullpath, valid, west, south)\n    with ncopen(fullpath, \"a\") as nc:\n        tile_extraction(nc, valid, west, south, fullmode)\n        if fullmode:\n            qc(nc)\n\n\n@click.command()\n@click.option(\"--date\", \"dt\", type=click.DateTime(), help=\"Date to process\")\n@click.option(\"--full\", is_flag=True, help=\"Full replacement mode\")\ndef main(dt: datetime | None, full: bool):\n    \"\"\"Go Main Go\"\"\"\n    if dt is not None:\n        dt: date = dt.date()\n    # Create tiles to cover 12 states\n    progress = tqdm(np.arange(-104, -80, 2), disable=not sys.stdout.isatty())\n    for west in progress:\n        progress.set_description(f\"{west:.2f}\")\n        for south in np.arange(36, 50, 2):\n            # psims divides its data up into 2x2-degree tiles,\n            # with the first number in the file name being number\n            # of tiles since 90 degrees north, and the second number\n            # being number of tiles since -180 degrees eas\n            yt = (90 - south) / 2\n            xt = (180 - (0 - west)) / 2 + 1\n            ncfn = f\"clim_{yt:04.0f}_{xt:04.0f}.tile.nc4\"\n            workflow(dt, ncfn, west, south, full)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/yieldfx/yieldfx_workflow.py",
    "content": "\"\"\"The Daily Processor of Wx Data for Yield Forecast Project\n\n- Read the baseline from the database\n- Add columns GDD(F) ST4(C) ST12 ST24 ST50 SM12[frac] SM24 SM50\n- For each year, replace the Jan 1 to yesterday data with actual data\n- Replace today to day + 3 with forecast data\n- For this year, replace day + 4 to Dec 31 with CFS :)\n- Upload the resulting file <site>_YYYYmmdd.met\n\"\"\"\n\nimport os\nimport subprocess\nimport tempfile\nfrom datetime import date, datetime, timedelta, timezone\nfrom io import StringIO\n\nimport click\nimport numpy as np\nimport pandas as pd\nfrom metpy.units import units\nfrom pyiem.database import get_dbconn, get_sqlalchemy_conn\nfrom pyiem.meteorology import gdd\nfrom pyiem.util import convert_value, logger\n\nLOG = logger()\nXREF = {\n    \"ames\": {\"isusm\": \"BOOI4\", \"climodat\": \"IA0200\"},\n    \"cobs\": {\"isusm\": None, \"station\": \"OT0012\", \"climodat\": \"IA0200\"},\n    \"crawfordsville\": {\"isusm\": \"CRFI4\", \"climodat\": \"IA8688\"},\n    \"lewis\": {\"isusm\": \"OKLI4\", \"climodat\": \"IA0364\"},\n    \"nashua\": {\"isusm\": \"NASI4\", \"climodat\": \"IA1402\"},\n    \"sutherland\": {\"isusm\": \"CAMI4\", \"climodat\": \"IA1442\"},\n    \"kanawha\": {\"isusm\": \"KNAI4\", \"climodat\": \"IA2977\"},\n    \"mcnay\": {\"isusm\": \"CHAI4\", \"climodat\": \"IA1394\"},\n    \"muscatine\": {\"isusm\": \"FRUI4\", \"climodat\": \"IA5837\"},\n}\n\n\ndef p(val, prec):\n    \"\"\"Use 99 for missing values, which Dr A says is wrong, sigh\"\"\"\n    if val is None or np.isnan(val):\n        return \"99\"\n    _fmt = f\"%.{prec}f\"\n    return _fmt % (val,)\n\n\ndef write_and_upload(df, location):\n    \"\"\"We are done, whew!\"\"\"\n    (tmpfd, tmpfn) = tempfile.mkstemp(text=True)\n    sio = StringIO()\n    with open(f\"baseline/{location}.met\", encoding=\"utf-8\") as fh:  # skipcq\n        for line in fh:\n            if line.startswith(\"year\"):\n                break\n            sio.write(line.strip() + \"\\r\\n\")\n    sio.write(\n        (\"! auto-generated at %sZ by daryl akrherz@iastate.edu\\r\\n\")\n        % (datetime.now(timezone.utc).isoformat(),)\n    )\n    fmt = (\n        \"%-10s%-10s%-10s%-10s%-10s%-10s\"\n        \"%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-10s\\r\\n\"\n    )\n    sio.write(\n        fmt\n        % (\n            \"year\",\n            \"day\",\n            \"radn\",\n            \"maxt\",\n            \"mint\",\n            \"rain\",\n            \"gdd\",\n            \"st4\",\n            \"st12\",\n            \"st24\",\n            \"st50\",\n            \"sm12\",\n            \"sm24\",\n            \"sm50\",\n        )\n    )\n    sio.write(\n        fmt\n        % (\n            \"()\",\n            \"()\",\n            \"(MJ/m^2)\",\n            \"(oC)\",\n            \"(oC)\",\n            \"(mm)\",\n            \"(oF)\",\n            \"(oC)\",\n            \"(oC)\",\n            \"(oC)\",\n            \"(oC)\",\n            \"(mm/mm)\",\n            \"(mm/mm)\",\n            \"(mm/mm)\",\n        )\n    )\n    fmt = (\n        \" %-9i%-10i%-10s%-10s%-10s%-10s%-10s\"\n        \"%-10s%-10s%-10s%-10s%-10s%-10s%-10s\\r\\n\"\n    )\n    for valid, row in df.iterrows():\n        sio.write(\n            fmt\n            % (\n                valid.year,\n                int(valid.strftime(\"%j\")),\n                p(row[\"radn\"], 3),\n                p(row[\"maxt\"], 1),\n                p(row[\"mint\"], 1),\n                p(row[\"rain\"], 2),\n                p(row[\"gdd\"], 1),\n                p(row[\"st4\"], 2),\n                p(row[\"st12\"], 2),\n                p(row[\"st24\"], 2),\n                p(row[\"st50\"], 2),\n                p(row[\"sm12\"], 2),\n                p(row[\"sm24\"], 2),\n                p(row[\"sm50\"], 2),\n            )\n        )\n    os.write(tmpfd, sio.getvalue().encode(\"utf-8\"))\n    os.close(tmpfd)\n\n    # Save file for usage by web plotting...\n    os.chmod(tmpfn, 0o644)\n    # os.rename fails here due to cross device link bug\n    subprocess.call(\n        [\"mv\", tmpfn, f\"/mesonet/share/pickup/yieldfx/{location}.met\"],\n    )\n\n\ndef qc(df):\n    \"\"\"Run some QC against the dataframe\"\"\"\n    # Make sure our frame is sorted\n    return df.sort_index()\n\n\ndef load_baseline(location: str):\n    \"\"\"return a dataframe of this location's data\"\"\"\n    with get_sqlalchemy_conn(\"coop\") as conn:\n        df = pd.read_sql(\n            \"\"\"\n            SELECT *, extract(doy from valid) as doy,\n            extract(year from valid) as year\n            from yieldfx_baseline where station = %s ORDER by valid\n            \"\"\",\n            conn,\n            params=(location,),\n            index_col=\"valid\",\n        )\n    # we want data from 1980 to this year\n    today = date.today()\n    # So now, we need to move any data that exists for this year and overwrite\n    # the previous years with that data.  This is QC'd prior to any new obs\n    # are taken from ISUSM\n    rcols = [\"radn\", \"maxt\", \"mint\", \"rain\"]\n    for dt, row in df[df[\"year\"] == today.year].iterrows():\n        for year in range(1980, today.year):\n            if dt.month == 2 and dt.day == 29 and year % 4 != 0:\n                continue\n            df.loc[dt.replace(year=year), rcols] = (\n                row[\"radn\"],\n                row[\"maxt\"],\n                row[\"mint\"],\n                row[\"rain\"],\n            )\n    # Fill out the time domain\n    dec31 = today.replace(month=12, day=31)\n    df = df.reindex(index=pd.date_range(date(1980, 1, 1), dec31).date)\n    return df\n\n\ndef replace_forecast(df: pd.DataFrame, location: str):\n    \"\"\"Replace dataframe data with forecast for this location\"\"\"\n    pgconn = get_dbconn(\"coop\")\n    cursor = pgconn.cursor()\n    today = date.today()\n    nextjan1 = date(today.year + 1, 1, 1)\n    coop = XREF[location][\"climodat\"]\n    years = [\n        int(y)\n        for y in np.arange(\n            df.index.values.min().year, df.index.values.max().year + 1\n        )\n    ]\n    cursor.execute(\n        \"\"\"\n        SELECT day, high, low, precip from alldata_forecast WHERE\n        modelid = (SELECT id from forecast_inventory WHERE model = 'NDFD'\n        ORDER by modelts DESC LIMIT 1) and station = %s and day >= %s\n        and high is not null and low is not null and precip is not null\n    \"\"\",\n        (coop, today),\n    )\n    rcols = [\"maxt\", \"mint\", \"rain\"]\n    for row in cursor:\n        valid = row[0]\n        maxc = convert_value(row[1], \"degF\", \"degC\")\n        minc = convert_value(row[2], \"degF\", \"degC\")\n        rain = convert_value(row[3], \"inch\", \"millimeter\")\n        for year in years:\n            # This fails for leap year, just silently skip it when it does.\n            try:\n                idx = valid.replace(year=year)\n            except ValueError:\n                continue\n            df.loc[idx, rcols] = (maxc, minc, rain)\n\n    # Need to get radiation from CFS\n    cursor.execute(\n        \"\"\"\n        SELECT day, srad from alldata_forecast WHERE\n        modelid = (SELECT id from forecast_inventory WHERE model = 'CFS'\n        ORDER by modelts DESC LIMIT 1) and station = %s and day >= %s\n        and day < %s\n    \"\"\",\n        (coop, today, nextjan1),\n    )\n    for row in cursor:\n        valid = row[0]\n        for year in years:\n            # This fails for leap year, just silently skip it when it does.\n            try:\n                idx = valid.replace(year=year)\n            except ValueError:\n                continue\n            df.loc[idx, \"radn\"] = row[1]\n\n\ndef replace_cfs(df: pd.DataFrame, location: str):\n    \"\"\"Replace the CFS data for this year!\"\"\"\n    pgconn = get_dbconn(\"coop\")\n    cursor = pgconn.cursor()\n    coop = XREF[location][\"climodat\"]\n    today = date.today() + timedelta(days=3)\n    dec31 = today.replace(day=31, month=12)\n    cursor.execute(\n        \"\"\"\n        SELECT day, high, low, precip, srad from alldata_forecast WHERE\n        modelid = (SELECT id from forecast_inventory WHERE model = 'CFS'\n        ORDER by modelts DESC LIMIT 1) and station = %s and day >= %s\n        and day <= %s ORDER by day ASC\n    \"\"\",\n        (coop, today, dec31),\n    )\n    rcols = [\"maxt\", \"mint\", \"rain\", \"radn\"]\n    if cursor.rowcount == 0:\n        LOG.info(\"  replace_cfs found zero rows for coop %s!\", coop)\n        return\n    row = []\n    for row in cursor:\n        maxt = convert_value(row[1], \"degF\", \"degC\")\n        mint = convert_value(row[2], \"degF\", \"degC\")\n        rain = convert_value(row[3], \"inch\", \"millimeter\")\n        radn = row[4]\n        df.loc[row[0], rcols] = [maxt, mint, rain, radn]\n\n    if row[0] == dec31:\n        return\n    now = row[0] + timedelta(days=1)\n    # OK, if our last row does not equal dec31, we have some more work to do\n    LOG.info(\"Replacing %s->%s with previous year's data\", now, dec31)\n    while now <= dec31:\n        lastyear = now.replace(year=now.year - 1)\n        df.loc[now, rcols] = df.loc[lastyear, rcols]\n        now += timedelta(days=1)\n\n\ndef replace_obs_iem(df, location):\n    \"\"\"Replace dataframe data with obs for this location\n\n    Tricky part, if the baseline already provides data for this year, we should\n    use it!\n    \"\"\"\n    pgconn = get_dbconn(\"iem\")\n    cursor = pgconn.cursor()\n    station = XREF[location][\"station\"]\n    today = date.today()\n    jan1 = today.replace(month=1, day=1)\n    years = [\n        int(y)\n        for y in np.arange(\n            df.index.values.min().year, df.index.values.max().year + 1\n        )\n    ]\n\n    cursor.execute(\n        f\"\"\"\n        select day, max_tmpf, min_tmpf, srad_mj, pday\n        from summary_{jan1.year} s JOIN stations t on (s.iemid = t.iemid)\n        WHERE t.id = %s and max_tmpf is not null\n        and day < 'TODAY' ORDER by day ASC\n        \"\"\",\n        (station,),\n    )\n    rcols = [\"maxt\", \"mint\", \"radn\", \"gdd\", \"rain\"]\n    replaced = []\n    for row in cursor:\n        valid = row[0]\n        # Does our df currently have data for this date?  If so, we shall do\n        # no more\n        dont_replace = not np.isnan(df.at[valid, \"mint\"])\n        if not dont_replace:\n            replaced.append(valid)\n        _gdd = gdd(units(\"degF\") * row[1], units(\"degF\") * row[2])\n        for year in years:\n            if valid.month == 2 and valid.day == 29 and year % 4 != 0:\n                continue\n            if dont_replace:\n                df.loc[valid.replace(year=year), rcols[3:]] = (\n                    _gdd,\n                    convert_value(row[4], \"inch\", \"millimeter\"),\n                )\n                continue\n            df.loc[valid.replace(year=year), rcols] = (\n                convert_value(row[1], \"degF\", \"degC\"),\n                convert_value(row[2], \"degF\", \"degC\"),\n                row[3],\n                _gdd,\n                convert_value(row[4], \"inch\", \"millimeter\"),\n            )\n    if replaced:\n        LOG.info(\n            \"  used IEM Access %s from %s->%s\",\n            station,\n            replaced[0],\n            replaced[-1],\n        )\n\n\ndef replace_obs(df, location):\n    \"\"\"Replace dataframe data with obs for this location\n\n    Tricky part, if the baseline already provides data for this year, we should\n    use it!\n    \"\"\"\n    pgconn = get_dbconn(\"isuag\")\n    cursor = pgconn.cursor()\n    isusm = XREF[location][\"isusm\"]\n    today = date.today()\n    jan1 = today.replace(month=1, day=1)\n    years = [\n        int(y)\n        for y in np.arange(\n            df.index.values.min().year, df.index.values.max().year + 1\n        )\n    ]\n\n    cursor.execute(\n        \"\"\"\n        select valid, tair_c_max_qc, tair_c_min_qc, slrkj_tot_qc / 1000.,\n        vwc12_qc, vwc24_qc, vwc50_qc, t4_c_avg_qc, t12_c_avg_qc,\n        t24_c_avg_qc, t50_c_avg_qc,\n        rain_in_tot_qc * 25.4 from sm_daily WHERE station = %s and valid >= %s\n        and tair_c_max_qc is not null and tair_c_min_qc is not null\n        ORDER by valid\n        \"\"\",\n        (isusm, jan1),\n    )\n    rcols = [\n        \"maxt\",\n        \"mint\",\n        \"radn\",\n        \"gdd\",\n        \"sm12\",\n        \"sm24\",\n        \"sm50\",\n        \"st4\",\n        \"st12\",\n        \"st24\",\n        \"st50\",\n        \"rain\",\n    ]\n    replaced = []\n    for row in cursor:\n        valid = row[0]\n        # Does our df currently have data for this date?  If so, we shall do\n        # no more\n        dont_replace = not np.isnan(df.at[valid, \"mint\"])\n        if not dont_replace:\n            replaced.append(valid)\n        _gdd = gdd(units(\"degC\") * row[1], units(\"degC\") * row[2])\n        for year in years:\n            if valid.month == 2 and valid.day == 29 and year % 4 != 0:\n                continue\n            if dont_replace:\n                df.loc[valid.replace(year=year), rcols[3:-1]] = (\n                    _gdd,\n                    row[4],\n                    row[5],\n                    row[6],\n                    row[7],\n                    row[8],\n                    row[9],\n                    row[10],\n                )\n                continue\n            df.loc[valid.replace(year=year), rcols] = (\n                row[1],\n                row[2],\n                row[3],\n                _gdd,\n                row[4],\n                row[5],\n                row[6],\n                row[7],\n                row[8],\n                row[9],\n                row[10],\n                row[11],\n            )\n    if replaced:\n        LOG.info(\n            \"  replaced with obs from %s for %s->%s\",\n            isusm,\n            replaced[0],\n            replaced[-1],\n        )\n\n\ndef compute_gdd(df):\n    \"\"\"Compute GDDs Please\"\"\"\n    df[\"gdd\"] = gdd(\n        units(\"degC\") * df[\"maxt\"].values, units(\"degC\") * df[\"mint\"].values\n    )\n\n\ndef do(location):\n    \"\"\"Workflow for a particular location\"\"\"\n    LOG.info(\"yieldfx_workflow: Processing '%s'\", location)\n    # 1. Read baseline\n    df = load_baseline(location)\n    # 2. Add columns and observed data\n    for colname in \"gdd st4 st12 st24 st50 sm12 sm24 sm50\".split():\n        df[colname] = None\n    # 3. Do data replacement\n    # TODO: what to do with RAIN!\n    if location == \"cobs\":\n        replace_obs_iem(df, location)\n    else:\n        replace_obs(df, location)\n    # 4. Add forecast data\n    replace_forecast(df, location)\n    # 5. Add CFS for this year\n    replace_cfs(df, location)\n    # 6. Compute GDD\n    compute_gdd(df)\n    # 7. QC\n    df = qc(df)\n    # 8. Write and upload the file\n    write_and_upload(df, location)\n\n\n@click.command()\n@click.option(\"--location\", help=\"Run for isolated location\")\ndef main(location: str | None):\n    \"\"\"Do Something\"\"\"\n    if location:\n        do(location)\n        return\n    for _location in XREF:\n        do(_location)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "src/iemjs/CHANGELOG.md",
    "content": "# Changelog\n\nAll notable changes to the iemjs package will be documented in this file.\n\n## [Unreleased] - TBD\n\n## [0.0.7] - 2025-06-09\n\nFix iemdata exports. Le Sigh.\n\n## [0.0.6] - 2025-06-09\n\nVersion 0.0.5 was an incomplete misfire.\n\n### Added\n\n- Conversion of iemdata arrays into dict variants.\n- Typescript definitions\n\n### Changed\n\n### Deprecated\n\n### Removed\n\n### Fixed\n\n### Security\n\n## [0.0.4] - 2025-06-08\n\n### Changed\n\n- Changed how `iemdata` exports and the naming of VTEC lookup arrays.\n\n## [0.0.3] - 2025-06-04\n\n### Added\n\n- `iemdata` and `domUtils` included with initial test release.\n"
  },
  {
    "path": "src/iemjs/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2005-2025 Iowa State University\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "src/iemjs/README.md",
    "content": "# IEM JavaScript Utilities\n\nA collection of JavaScript utilities for weather data applications from the Iowa Environmental Mesonet.\n\n## Installation\n\n```bash\nnpm install iemjs\n```\n\n## Usage\n\n### ES Modules (Node.js/bundlers)\n\n```javascript\n// Import specific utilities\nimport { escapeHTML, requireSelectElement } from 'iemjs/domUtils';\n\n// Or import everything\nimport * as IEM from 'iemjs';\n```\n\n### Browser ES Modules (direct import from this repo)\n\n```javascript\n// Import from web-accessible location\nimport { escapeHTML, requireSelectElement } from '/js/iemjs/domUtils.js';\n```\n\n## Modules\n\n### domUtils\n\nUtilities for safe DOM manipulation:\n\n- `escapeHTML(text)` - Escape HTML to prevent XSS\n- `getElementById(id, ElementType)` - Safe element retrieval with type checking\n- `requireSelectElement(id)` - Get select element or throw error\n- `requireInputElement(id)` - Get input element or throw error\n- `setSelectValue(selectElement, value)` - Set select value with validation\n- `clearSelect(selectElement, placeholder)` - Clear and reset select options\n- `addSelectOption(selectElement, value, text, selected)` - Add option to select\n- `createElementWithText(tag, text, className)` - Create element with text content\n- `showElement(element)` / `hideElement(element)` - Show/hide elements\n- `removeAllChildren(element)` - Remove all child nodes\n\n### iemdata\n\nWeather and climate data constants:\n\n- `iemdata.states` - US states list\n- `iemdata.vtec_phenomena` - Weather event phenomena\n- `iemdata.vtec_significance` - Weather event significance levels\n\n## License\n\nMIT\n"
  },
  {
    "path": "src/iemjs/package.json",
    "content": "{\n  \"name\": \"iemjs\",\n  \"version\": \"0.0.8-dev\",\n  \"description\": \"Iowa Environmental Mesonet JavaScript utilities for weather data applications\",\n  \"type\": \"module\",\n  \"main\": \"src/index.js\",\n  \"types\": \"src/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./src/index.js\",\n      \"types\": \"./src/index.d.ts\"\n    },\n    \"./domUtils\": {\n      \"import\": \"./src/domUtils.js\",\n      \"types\": \"./src/domUtils.d.ts\"\n    },\n    \"./iemdata\": {\n      \"import\": \"./src/iemdata.js\",\n      \"types\": \"./src/iemdata.d.ts\"\n    }\n  },\n  \"files\": [\n    \"src/**/*.js\",\n    \"src/**/*.d.ts\",\n    \"README.md\",\n    \"LICENSE\"\n  ],\n  \"scripts\": {\n    \"prepack\": \"echo 'Preparing iemjs package for publishing...'\",\n    \"test\": \"npm run test:syntax && npm run test:imports && npm run test:exports && npm run test:types\",\n    \"test:syntax\": \"node -c src/domUtils.js && node -c src/iemdata.js && node -c src/index.js && echo '✅ Syntax validation passed'\",\n    \"test:types\": \"echo '✅ TypeScript declarations exist' && ls src/*.d.ts\",\n    \"test:imports\": \"node tests/test-imports.js\",\n    \"test:exports\": \"node tests/test-exports.js\",\n    \"version\": \"echo 'Version updated to' $npm_package_version\"\n  },\n  \"keywords\": [\n    \"weather\",\n    \"meteorology\",\n    \"data-visualization\",\n    \"iowa\",\n    \"mesonet\",\n    \"javascript\",\n    \"es-modules\"\n  ],\n  \"author\": \"Iowa State University - Iowa Environmental Mesonet\",\n  \"license\": \"MIT\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/akrherz/iem.git\",\n    \"directory\": \"src/iemjs\"\n  },\n  \"homepage\": \"https://mesonet.agron.iastate.edu\",\n  \"bugs\": {\n    \"url\": \"https://github.com/akrherz/iem/issues\"\n  },\n  \"engines\": {\n    \"node\": \">=14.0.0\"\n  },\n  \"browserslist\": [\n    \"defaults\",\n    \"not IE 11\"\n  ]\n}\n"
  },
  {
    "path": "src/iemjs/src/domUtils.d.ts",
    "content": "// TypeScript declarations for domUtils.js\n\n/**\n * Escape HTML special characters to prevent XSS attacks\n */\nexport function escapeHTML(val: string): string;\n\n/**\n * Safely get an element by ID with type checking\n */\nexport function getElement<T extends HTMLElement = HTMLElement>(\n    id: string,\n    ElementType?: new (...args: any[]) => T\n): T | null;\n\n/**\n * Get an element and throw if not found (for required elements)\n */\nexport function requireElement<T extends HTMLElement = HTMLElement>(\n    id: string,\n    ElementType?: new (...args: any[]) => T\n): T;\n\n/**\n * Get an input element by ID\n */\nexport function getInputElement(id: string): HTMLInputElement | null;\n\n/**\n * Get a required input element by ID\n */\nexport function requireInputElement(id: string): HTMLInputElement;\n\n/**\n * Get a select element by ID\n */\nexport function getSelectElement(id: string): HTMLSelectElement | null;\n\n/**\n * Get a required select element by ID\n */\nexport function requireSelectElement(id: string): HTMLSelectElement;\n\n/**\n * Get a button element by ID\n */\nexport function getButtonElement(id: string): HTMLButtonElement | null;\n\n/**\n * Get a required button element by ID\n */\nexport function requireButtonElement(id: string): HTMLButtonElement;\n\n/**\n * Get multiple elements by ID with type checking\n */\nexport function getElements<T extends HTMLElement = HTMLElement>(\n    ids: string[],\n    ElementType?: new (...args: any[]) => T\n): (T | null)[];\n\n/**\n * Get multiple required elements by ID\n */\nexport function requireElements<T extends HTMLElement = HTMLElement>(\n    ids: string[],\n    ElementType?: new (...args: any[]) => T\n): T[];\n\n/**\n * Add event listeners to multiple elements by ID\n */\nexport function addEventListeners<T extends HTMLElement = HTMLElement>(\n    ids: string[],\n    event: string,\n    handler: EventListener,\n    ElementType?: new (...args: any[]) => T\n): void;\n\n/**\n * Get value from a form element safely\n */\nexport function getElementValue(id: string, defaultValue?: string): string;\n\n/**\n * Set value on a form element safely\n */\nexport function setElementValue(id: string, value: string): boolean;\n\n/**\n * Interface for elements that have been enhanced with TomSelect\n */\nexport interface TomSelectElement extends HTMLElement {\n    tomselect: any; // Using 'any' since tom-select types may not be available\n}\n\n/**\n * Get an element that has been enhanced with TomSelect\n */\nexport function getTomSelectElement(id: string): TomSelectElement | null;\n\n/**\n * Get a required element that has been enhanced with TomSelect\n */\nexport function requireTomSelectElement(id: string): TomSelectElement;\n"
  },
  {
    "path": "src/iemjs/src/domUtils.js",
    "content": "// DOM utility functions to reduce boilerplate\n\n/**\n * Escape HTML special characters to prevent XSS attacks\n * @param {string} val - String to escape\n * @returns {string} HTML-escaped string\n */\nexport function escapeHTML(val) {\n    return val\n        .replace(/&/g, '&amp;')\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/\"/g, '&quot;')\n        .replace(/'/g, '&#039;');\n}\n\n/**\n * Safely get an element by ID with type checking\n * @param {string} id - Element ID\n * @param {Function} [ElementType] - Expected element constructor (e.g., HTMLInputElement)\n * @returns {HTMLElement | null} The element or null if not found/wrong type\n */\nexport function getElement(id, ElementType) {\n    const element = document.getElementById(id);\n    if (!element) {\n        return null;\n    }\n    \n    // If no ElementType provided, return as HTMLElement\n    if (!ElementType) {\n        return element;\n    }\n    \n    if (!(element instanceof ElementType)) {\n        return null;\n    }\n    return element;\n}\n\n/**\n * Get an element and throw if not found (for required elements)\n * @param {string} id - Element ID\n * @param {Function} [ElementType] - Expected element constructor\n * @returns {HTMLElement} The element (guaranteed to exist)\n * @throws {Error} If element not found or wrong type\n */\nexport function requireElement(id, ElementType) {\n    const element = getElement(id, ElementType);\n    if (!element) {\n        throw new Error(`Required element '${id}' not found or wrong type`);\n    }\n    return element;\n}\n\n// Specialized helper functions for common element types\n\n/**\n * Get an input element by ID\n * @param {string} id - Element ID\n * @returns {HTMLInputElement | null}\n */\nexport function getInputElement(id) {\n    return /** @type {HTMLInputElement | null} */ (getElement(id, HTMLInputElement));\n}\n\n/**\n * Get a required input element by ID\n * @param {string} id - Element ID\n * @returns {HTMLInputElement}\n * @throws {Error} If element not found or wrong type\n */\nexport function requireInputElement(id) {\n    return /** @type {HTMLInputElement} */ (requireElement(id, HTMLInputElement));\n}\n\n/**\n * Get a select element by ID\n * @param {string} id - Element ID\n * @returns {HTMLSelectElement | null}\n */\nexport function getSelectElement(id) {\n    return /** @type {HTMLSelectElement | null} */ (getElement(id, HTMLSelectElement));\n}\n\n/**\n * Get a required select element by ID\n * @param {string} id - Element ID\n * @returns {HTMLSelectElement}\n * @throws {Error} If element not found or wrong type\n */\nexport function requireSelectElement(id) {\n    return /** @type {HTMLSelectElement} */ (requireElement(id, HTMLSelectElement));\n}\n\n/**\n * Get a button element by ID\n * @param {string} id - Element ID\n * @returns {HTMLButtonElement | null}\n */\nexport function getButtonElement(id) {\n    return /** @type {HTMLButtonElement | null} */ (getElement(id, HTMLButtonElement));\n}\n\n/**\n * Get a required button element by ID\n * @param {string} id - Element ID\n * @returns {HTMLButtonElement}\n * @throws {Error} If element not found or wrong type\n */\nexport function requireButtonElement(id) {\n    return /** @type {HTMLButtonElement} */ (requireElement(id, HTMLButtonElement));\n}\n\n/**\n * Get multiple elements by ID with type checking\n * @param {string[]} ids - Array of element IDs\n * @param {Function} [ElementType] - Expected element constructor\n * @returns {(HTMLElement | null)[]} Array of elements (null for missing/wrong type)\n */\nexport function getElements(ids, ElementType) {\n    return ids.map(id => getElement(id, ElementType));\n}\n\n/**\n * Get multiple required elements by ID\n * @param {string[]} ids - Array of element IDs\n * @param {Function} [ElementType] - Expected element constructor\n * @returns {HTMLElement[]} Array of elements (guaranteed to exist)\n * @throws {Error} If any element not found or wrong type\n */\nexport function requireElements(ids, ElementType) {\n    return ids.map(id => requireElement(id, ElementType));\n}\n\n/**\n * Add event listeners to multiple elements by ID\n * @param {string[]} ids - Array of element IDs\n * @param {string} event - Event type\n * @param {EventListener} handler - Event handler\n * @param {Function} [ElementType] - Expected element constructor\n */\nexport function addEventListeners(ids, event, handler, ElementType) {\n    ids.forEach(id => {\n        const element = getElement(id, ElementType);\n        if (element) {\n            element.addEventListener(event, handler);\n        }\n    });\n}\n\n/**\n * Get value from a form element safely\n * @param {string} id - Element ID\n * @param {string} [defaultValue=''] - Default value if element not found\n * @returns {string} Element value or default\n */\nexport function getElementValue(id, defaultValue = '') {\n    const element = getInputElement(id);\n    return element ? element.value : defaultValue;\n}\n\n/**\n * Set value on a form element safely\n * @param {string} id - Element ID\n * @param {string} value - Value to set\n * @returns {boolean} True if successful\n */\nexport function setElementValue(id, value) {\n    const element = getInputElement(id);\n    if (element) {\n        element.value = value;\n        return true;\n    }\n    return false;\n}\n\n/**\n * Interface for elements that have been enhanced with TomSelect\n * @typedef {HTMLElement & { tomselect: import('tom-select').default }} TomSelectElement\n */\n\n/**\n * Get an element that has been enhanced with TomSelect\n * @param {string} id - Element ID\n * @returns {TomSelectElement | null}\n */\nexport function getTomSelectElement(id) {\n    const element = getElement(id);\n    if (element && 'tomselect' in element) {\n        return /** @type {TomSelectElement} */ (element);\n    }\n    return null;\n}\n\n/**\n * Get a required element that has been enhanced with TomSelect\n * @param {string} id - Element ID\n * @returns {TomSelectElement}\n * @throws {Error} If element not found or doesn't have tomselect property\n */\nexport function requireTomSelectElement(id) {\n    const element = getTomSelectElement(id);\n    if (!element) {\n        throw new Error(`Required TomSelect element '${id}' not found or not initialized`);\n    }\n    return element;\n}\n"
  },
  {
    "path": "src/iemjs/src/iemdata.d.ts",
    "content": "// TypeScript declarations for iemdata.js\n\n/**\n * VTEC phenomena codes and descriptions\n */\nexport const vtec_phenomena: [string, string][];\n\n/**\n * VTEC event codes and descriptions\n */\nexport const vtec_phenomena_dict: { [key: string]: string };\n\n/**\n * VTEC significance codes and descriptions\n */\nexport const vtec_significance: [string, string][];\n\n/**\n * VTEC significance codes and descriptions as a dictionary\n */\nexport const vtec_significance_dict: { [key: string]: string };\n\n/**\n * Weather Forecast Office codes and names\n */\nexport const wfos: [string, string][];\n\n/**\n * Weather Forecast Office codes and names as a dictionary\n */\nexport const wfos_dict: { [key: string]: string };\n\n/**\n * US state codes and names\n */\nexport const states: [string, string][];\n\n/**\n * US state codes and names as a dictionary\n */\nexport const states_dict: { [key: string]: string };\n"
  },
  {
    "path": "src/iemjs/src/iemdata.js",
    "content": "export const vtec_phenomena = [\n    ['SV', 'Severe Thunderstorm'],\n    ['TO', 'Tornado'],\n    ['MA', 'Marine'],\n    ['AF', 'Ashfall'],\n    ['AS', 'Air Stagnation'],\n    ['AV', 'Avalanche'],\n    ['BH', 'Beach Hazard'],\n    ['BS', 'Blowing Snow'],\n    ['BW', 'Brisk Wind'],\n    ['BZ', 'Blizzard'],\n    ['CF', 'Coastal Flood'],\n    ['CW', 'Cold Weather'],\n    ['DU', 'Blowing Dust'],\n    ['DS', 'Dust Storm'],\n    ['EC', 'Extreme Cold'],\n    ['EH', 'Excessive Heat'],\n    ['EW', 'Extreme Wind'],\n    ['FA', 'Flood'],\n    ['FF', 'Flash Flood'],\n    ['FL', 'Flood'],\n    ['FR', 'Frost'],\n    ['FZ', 'Freeze'],\n    ['UP', 'Freezing Spray'],\n    ['FG', 'Dense Fog'],\n    ['FW', 'Red Flag'],\n    ['GL', 'Gale'],\n    ['HF', 'Hurricane Force Wind'],\n    ['HI', 'Inland Hurricane Wind'],\n    ['HS', 'Heavy Snow'],\n    ['HP', 'Heavy Sleet'],\n    ['HT', 'Heat'],\n    ['HU', 'Hurricane'],\n    ['HW', 'High Wind'],\n    ['HY', 'Hydrologic'],\n    ['HZ', 'Hard Freeze'],\n    ['IS', 'Ice Storm'],\n    ['IP', 'Sleet'],\n    ['LB', 'Lake Effect Snow and Blowing Snow'],\n    ['LE', 'Lake Effect Snow'],\n    ['LO', 'Low Water'],\n    ['LS', 'Lakeshore Flood'],\n    ['LW', 'Lake Wind'],\n    ['MF', 'Marine Dense Fog'],\n    ['MS', 'Marine Dense Smoke'],\n    ['RB', 'Small Craft for Rough Bar'],\n    ['RH', 'Radiological Hazard'],\n    ['RP', 'Rip Current'],\n    ['SB', 'Snow and Blowing Snow'],\n    ['SC', 'Small Craft'],\n    ['SE', 'Hazardous Seas'],\n    ['SI', 'Small Craft for Winds'],\n    ['SM', 'Dense Smoke'],\n    ['SN', 'Snow'],\n    ['SQ', 'Snow Squall'],\n    ['SR', 'Storm'],\n    ['SU', 'High Surf'],\n    ['TI', 'Inland Tropical Storm Wind'],\n    ['TR', 'Tropical Storm'],\n    ['TS', 'Tsunami'],\n    ['TY', 'Typhoon'],\n    ['VO', 'Volcano'],\n    ['WC', 'Wind Chill'],\n    ['WI', 'Wind'],\n    ['WS', 'Winter Storm'],\n    ['WW', 'Winter Weather'],\n    ['XH', 'Extreme Heat'],\n    ['ZF', 'Freezing Fog'],\n    ['ZR', 'Freezing Rain'],\n];\n\nexport const vtec_phenomena_dict = Object.fromEntries(vtec_phenomena);\n\nexport const vtec_significance = [\n    ['W', 'Warning'],\n    ['Y', 'Advisory'],\n    ['A', 'Watch'],\n    ['S', 'Statement'],\n    ['F', 'Forecast'],\n    ['O', 'Outlook'],\n    ['N', 'Synopsis'],\n];\n\nexport const vtec_significance_dict = Object.fromEntries(vtec_significance);\n\nexport const wfos = [\n    ['PAAQ', 'National Tsunami Warning Center'],\n    ['KABQ', 'ALBUQUERQUE'],\n    ['KABR', 'ABERDEEN'],\n    ['PAFC', 'ANCHORAGE'],\n    ['PAFG', 'FAIRBANKS'],\n    ['PAJK', 'JUNEAU'],\n    ['KAKQ', 'WAKEFIELD'],\n    ['KALY', 'ALBANY'],\n    ['KAMA', 'AMARILLO'],\n    ['KAPX', 'GAYLORD'],\n    ['KARX', 'LA_CROSSE'],\n    ['KBGM', 'BINGHAMTON'],\n    ['KBIS', 'BISMARCK'],\n    ['KBMX', 'BIRMINGHAM'],\n    ['KBOI', 'BOISE'],\n    ['KBOU', 'DENVER'],\n    ['KBOX', 'Boston / Norton'],\n    ['KBRO', 'BROWNSVILLE'],\n    ['KBTV', 'BURLINGTON'],\n    ['KBUF', 'BUFFALO'],\n    ['KBYZ', 'BILLINGS'],\n    ['KCAE', 'COLUMBIA'],\n    ['KCAR', 'CARIBOU'],\n    ['KCHS', 'CHARLESTON'],\n    ['KCLE', 'CLEVELAND'],\n    ['KCRP', 'CORPUS_CHRISTI'],\n    ['KCTP', 'STATE_COLLEGE'],\n    ['KCYS', 'CHEYENNE'],\n    ['KDDC', 'DODGE_CITY'],\n    ['KDLH', 'DULUTH'],\n    ['KDMX', 'DES_MOINES'],\n    ['KDTX', 'DETROIT'],\n    ['KDVN', 'QUAD_CITIES_IA'],\n    ['KEAX', 'KANSAS_CITY/PLEASANT_HILL'],\n    ['KEKA', 'EUREKA'],\n    ['KEPZ', 'EL_PASO_TX/SANTA_TERESA'],\n    ['KEWX', 'AUSTIN/SAN_ANTONIO'],\n    ['KEYW', 'KEY_WEST (EYW, pre 5/18/06)'],\n    ['KFFC', 'PEACHTREE_CITY'],\n    ['KFGF', 'EASTERN_NORTH_DAKOTA'],\n    ['KFGZ', 'FLAGSTAFF'],\n    ['KFSD', 'SIOUX_FALLS'],\n    ['KFWD', 'DALLAS/FORT_WORTH'],\n    ['KGGW', 'GLASGOW'],\n    ['KGID', 'HASTINGS'],\n    ['KGJT', 'GRAND_JUNCTION'],\n    ['KGLD', 'GOODLAND'],\n    ['KGRB', 'GREEN_BAY'],\n    ['KGRR', 'GRAND_RAPIDS'],\n    ['KGSP', 'GREENVILLE/SPARTANBURG'],\n    ['PGUM', 'GUAM'],\n    ['KGYX', 'GRAY'],\n    ['PHEB', 'Pacific Tsunami Warning Center'],\n    ['PHFO', 'HONOLULU'],\n    ['KHGX', 'HOUSTON/GALVESTON'],\n    ['KHNX', 'SAN_JOAQUIN_VALLEY/HANFORD'],\n    ['KHUN', 'HUNTSVILLE'],\n    ['KICT', 'WICHITA'],\n    ['KILM', 'WILMINGTON'],\n    ['KILN', 'WILMINGTON'],\n    ['KILX', 'LINCOLN'],\n    ['KIND', 'INDIANAPOLIS'],\n    ['KIWX', 'NORTHERN_INDIANA'],\n    ['KJAN', 'JACKSON'],\n    ['KJAX', 'JACKSONVILLE'],\n    ['KJKL', 'JACKSON'],\n    ['KKEY', 'KEY_WEST (KEY, post 5/18/06)'],\n    ['KLBF', 'NORTH_PLATTE'],\n    ['KLCH', 'LAKE_CHARLES'],\n    ['KLIX', 'NEW_ORLEANS'],\n    ['KLKN', 'ELKO'],\n    ['KLMK', 'LOUISVILLE'],\n    ['KLOT', 'CHICAGO'],\n    ['KLOX', 'LOS_ANGELES/OXNARD'],\n    ['KLSX', 'ST_LOUIS'],\n    ['KLUB', 'LUBBOCK'],\n    ['KLWX', 'BALTIMORE_MD/_WASHINGTON_DC'],\n    ['KLZK', 'LITTLE_ROCK'],\n    ['KMAF', 'MIDLAND/ODESSA'],\n    ['KMEG', 'MEMPHIS'],\n    ['KMFL', 'MIAMI'],\n    ['KMFR', 'MEDFORD'],\n    ['KMHX', 'NEWPORT/MOREHEAD_CITY'],\n    ['KMKX', 'MILWAUKEE/SULLIVAN'],\n    ['KMLB', 'MELBOURNE'],\n    ['KMOB', 'MOBILE'],\n    ['KMPX', 'TWIN_CITIES/CHANHASSEN'],\n    ['KMQT', 'MARQUETTE'],\n    ['KMRX', 'MORRISTOWN'],\n    ['KMSO', 'MISSOULA'],\n    ['KMTR', 'SAN_FRANCISCO'],\n    ['KOAX', 'OMAHA/VALLEY'],\n    ['KOHX', 'NASHVILLE'],\n    ['KOKX', 'NEW_YORK'],\n    ['KOTX', 'SPOKANE'],\n    ['KOUN', 'NORMAN'],\n    ['KPAH', 'PADUCAH'],\n    ['KPBZ', 'PITTSBURGH'],\n    ['KPDT', 'PENDLETON'],\n    ['KPHI', 'MOUNT_HOLLY'],\n    ['KPIH', 'POCATELLO/IDAHO_FALLS'],\n    ['KPQR', 'PORTLAND'],\n    ['KPSR', 'PHOENIX'],\n    ['KPUB', 'PUEBLO'],\n    ['KRAH', 'RALEIGH'],\n    ['KREV', 'RENO'],\n    ['KRIW', 'RIVERTON'],\n    ['KRLX', 'CHARLESTON'],\n    ['KRNK', 'BLACKSBURG'],\n    ['KSEW', 'SEATTLE'],\n    ['KSGF', 'SPRINGFIELD'],\n    ['KSGX', 'SAN_DIEGO'],\n    ['KSHV', 'SHREVEPORT'],\n    ['KSJT', 'SAN_ANGELO'],\n    ['TJSJ', 'SAN_JUAN'],\n    ['KSLC', 'SALT_LAKE_CITY'],\n    ['KSTO', 'SACRAMENTO'],\n    ['KTAE', 'TALLAHASSEE'],\n    ['KTBW', 'TAMPA_BAY_AREA/RUSKIN'],\n    ['KTFX', 'GREAT_FALLS'],\n    ['KTOP', 'TOPEKA'],\n    ['KTSA', 'TULSA'],\n    ['KTWC', 'TUCSON'],\n    ['KUNR', 'RAPID_CITY'],\n    ['KVEF', 'LAS_VEGAS'],\n];\n\nexport const wfos_dict = Object.fromEntries(wfos);\n\nexport const states = [\n    [\"AL\", \"Alabama\"], [\"AK\", \"Alaska\"], [\"AZ\", \"Arizona\"], [\"AR\", \"Arkansas\"],\n    [\"CA\", \"California\"], [\"CO\", \"Colorado\"], [\"CT\", \"Connecticut\"], [\"DE\", \"Delaware\"],\n    [\"FL\", \"Florida\"], [\"GA\", \"Georgia\"], [\"HI\", \"Hawaii\"], [\"ID\", \"Idaho\"],\n    [\"IL\", \"Illinois\"], [\"IN\", \"Indiana\"], [\"IA\", \"Iowa\"], [\"KS\", \"Kansas\"],\n    [\"KY\", \"Kentucky\"], [\"LA\", \"Louisiana\"], [\"ME\", \"Maine\"], [\"MD\", \"Maryland\"],\n    [\"MA\", \"Massachusetts\"], [\"MI\", \"Michigan\"], [\"MN\", \"Minnesota\"], [\"MS\", \"Mississippi\"],\n    [\"MO\", \"Missouri\"], [\"MT\", \"Montana\"], [\"NE\", \"Nebraska\"], [\"NV\", \"Nevada\"],\n    [\"NH\", \"New Hampshire\"], [\"NJ\", \"New Jersey\"], [\"NM\", \"New Mexico\"], [\"NY\", \"New York\"],\n    [\"NC\", \"North Carolina\"], [\"ND\", \"North Dakota\"], [\"OH\", \"Ohio\"], [\"OK\", \"Oklahoma\"],\n    [\"OR\", \"Oregon\"], [\"PA\", \"Pennsylvania\"], [\"RI\", \"Rhode Island\"], [\"SC\", \"South Carolina\"],\n    [\"SD\", \"South Dakota\"], [\"TN\", \"Tennessee\"], [\"TX\", \"Texas\"], [\"UT\", \"Utah\"],\n    [\"VT\", \"Vermont\"], [\"VA\", \"Virginia\"], [\"WA\", \"Washington\"], [\"WV\", \"West Virginia\"],\n    [\"WI\", \"Wisconsin\"], [\"WY\", \"Wyoming\"]\n];\n\nexport const states_dict = Object.fromEntries(states);\n"
  },
  {
    "path": "src/iemjs/src/index.d.ts",
    "content": "// TypeScript declarations for index.js\n\n// Re-export all utilities from domUtils\nexport * from './domUtils.js';\n\n// Re-export iemdata\nexport {\n    vtec_phenomena,\n    vtec_significance,\n    wfos,\n    states\n} from './iemdata.js';\n"
  },
  {
    "path": "src/iemjs/src/index.js",
    "content": "/**\n * @fileoverview Iowa Environmental Mesonet JavaScript Utilities\n * Main entry point for the IEM JS package\n */\n\n// Re-export all utilities for convenient importing\nexport * from './domUtils.js';\n\n// Re-export all iemdata exports\nexport * from './iemdata.js';\n"
  },
  {
    "path": "src/iemjs/tests/runner.js",
    "content": "#!/usr/bin/env node\n\n// Simple test runner for iemjs package\nconsole.log('🧪 Running iemjs test suite...\\n');\n\nimport { spawn } from 'child_process';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst tests = [\n    { name: 'Syntax Validation', script: 'test:syntax' },\n    { name: 'Import Tests', script: 'test:imports' },\n    { name: 'Export Tests', script: 'test:exports' }\n];\n\nfunction runTest(testName, script) {\n    return new Promise((resolve, reject) => {\n        console.log(`🔄 Running: ${testName}...`);\n        \n        const npm = spawn('npm', ['run', script], {\n            stdio: 'pipe',\n            cwd: path.join(__dirname, '..')\n        });\n        \n        let stdout = '';\n        let stderr = '';\n        \n        npm.stdout.on('data', (data) => {\n            stdout += data.toString();\n        });\n        \n        npm.stderr.on('data', (data) => {\n            stderr += data.toString();\n        });\n        \n        npm.on('close', (code) => {\n            if (code === 0) {\n                console.log(`✅ ${testName} passed`);\n                resolve(stdout);\n            } else {\n                console.error(`❌ ${testName} failed`);\n                console.error(stderr);\n                reject(new Error(`${testName} failed with code ${code}`));\n            }\n        });\n    });\n}\n\nasync function runAllTests() {\n    let passedTests = 0;\n    const totalTests = tests.length;\n    \n    for (const test of tests) {\n        try {\n            await runTest(test.name, test.script);\n            passedTests++;\n        } catch (error) {\n            console.error(`\\n💥 Test suite failed at: ${test.name}`);\n            console.error(`Error: ${error.message}`);\n            process.exit(1);\n        }\n    }\n    \n    console.log(`\\n🎉 All tests passed! (${passedTests}/${totalTests})`);\n    console.log('📦 Package is ready for publishing!');\n}\n\n// Run the tests\nrunAllTests().catch(error => {\n    console.error('💥 Test runner failed:', error.message);\n    process.exit(1);\n});\n\nexport { runAllTests };\n"
  },
  {
    "path": "src/iemjs/tests/test-exports.js",
    "content": "#!/usr/bin/env node\n\n// Test script to validate package exports configuration\nconsole.log('🧪 Testing package exports...');\n\nimport fs from 'fs';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nfunction testExports() {\n    try {\n        // Read package.json\n        const packageJsonPath = path.join(__dirname, '..', 'package.json');\n        const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));\n        console.log(`📦 Testing package: ${packageJson.name}@${packageJson.version}`);\n        \n        // Check main entry point\n        if (!packageJson.main) {\n            throw new Error('No main entry point defined');\n        }\n        \n        const mainPath = path.join(__dirname, '..', packageJson.main);\n        if (!fs.existsSync(mainPath)) {\n            throw new Error(`Main entry point does not exist: ${packageJson.main}`);\n        }\n        console.log(`✅ Main entry point exists: ${packageJson.main}`);\n        \n        // Check exports\n        if (!packageJson.exports || typeof packageJson.exports !== 'object') {\n            throw new Error('No exports defined');\n        }\n        \n        console.log('🔍 Checking exports...');\n        for (const [exportName, exportConfig] of Object.entries(packageJson.exports)) {\n            // Handle both string and object export formats\n            const exportPath = typeof exportConfig === 'string' ? exportConfig : exportConfig.import;\n            if (!exportPath) {\n                throw new Error(`No import path found for export: ${exportName}`);\n            }\n            \n            const fullExportPath = path.join(__dirname, '..', exportPath);\n            if (!fs.existsSync(fullExportPath)) {\n                throw new Error(`Export path does not exist: ${exportPath} (for export: ${exportName})`);\n            }\n            console.log(`  ✅ ${exportName} -> ${exportPath}`);\n            \n            // Also check types if defined\n            if (typeof exportConfig === 'object' && exportConfig.types) {\n                const fullTypesPath = path.join(__dirname, '..', exportConfig.types);\n                if (!fs.existsSync(fullTypesPath)) {\n                    throw new Error(`Types path does not exist: ${exportConfig.types} (for export: ${exportName})`);\n                }\n                console.log(`  ✅ ${exportName} types -> ${exportConfig.types}`);\n            }\n        }\n        \n        // Check files array\n        if (!packageJson.files || !Array.isArray(packageJson.files)) {\n            throw new Error('No files array defined');\n        }\n        \n        console.log('🔍 Checking files array...');\n        for (const filePattern of packageJson.files) {\n            // Simple check for basic patterns\n            if (filePattern.includes('**')) {\n                const baseDir = filePattern.split('**')[0];\n                if (baseDir) {\n                    const fullBaseDir = path.join(__dirname, '..', baseDir);\n                    if (!fs.existsSync(fullBaseDir)) {\n                        throw new Error(`Base directory for pattern does not exist: ${baseDir}`);\n                    }\n                }\n            } else {\n                const fullFilePath = path.join(__dirname, '..', filePattern);\n                if (!fs.existsSync(fullFilePath)) {\n                    console.warn(`⚠️  File pattern may not match any files: ${filePattern}`);\n                }\n            }\n            console.log(`  ✅ ${filePattern}`);\n        }\n        \n        // Test that we can simulate npm pack\n        console.log('📦 Validating package structure...');\n        \n        // Check for required metadata\n        const requiredFields = ['name', 'version', 'description', 'license'];\n        for (const field of requiredFields) {\n            if (!packageJson[field]) {\n                throw new Error(`Missing required field: ${field}`);\n            }\n        }\n        console.log('✅ All required package.json fields present');\n        \n        console.log('🎉 All export tests passed!');\n        \n    } catch (error) {\n        console.error('❌ Export test failed:', error.message);\n        process.exit(1);\n    }\n}\n\ntestExports();\n"
  },
  {
    "path": "src/iemjs/tests/test-imports.js",
    "content": "#!/usr/bin/env node\n\n// Test script to validate ES module imports\nconsole.log('🧪 Testing ES module imports...');\n\nasync function testImports() {\n    try {\n        // Test domUtils imports\n        const domUtils = await import('../src/domUtils.js');\n        console.log('✅ domUtils.js imported successfully');\n        \n        // Verify key functions exist\n        const expectedFunctions = ['escapeHTML', 'getElement', 'requireSelectElement', 'requireInputElement'];\n        for (const fn of expectedFunctions) {\n            if (typeof domUtils[fn] !== 'function') {\n                throw new Error(`Missing or invalid function: ${fn}`);\n            }\n        }\n        console.log(`✅ domUtils exports ${expectedFunctions.length} expected functions`);\n        \n        // Test iemdata imports\n        const iemdata = await import('../src/iemdata.js');\n        console.log('✅ iemdata.js imported successfully');\n                \n        const expectedData = ['states', 'vtec_phenomena', 'vtec_significance'];\n        for (const key of expectedData) {\n            if (!Array.isArray(iemdata[key])) {\n                throw new Error(`Missing or invalid data array: ${key}`);\n            }\n        }\n        console.log(`✅ iemdata contains ${expectedData.length} expected data arrays`);\n        \n        // Test main index imports\n        const main = await import('../src/index.js');\n        console.log('✅ index.js imported successfully');\n        \n        // Verify re-exports work\n        if (typeof main.escapeHTML !== 'function') {\n            throw new Error('escapeHTML not re-exported from index.js');\n        }\n        console.log('🎉 All import tests passed!');\n        \n    } catch (error) {\n        console.error('❌ Import test failed:', error.message);\n        process.exit(1);\n    }\n}\n\ntestImports();\n"
  },
  {
    "path": "src/release-iemjs.sh",
    "content": "#!/bin/bash\n\n# Release script for iemjs package\n# Usage: ./src/release-iemjs.sh [version]\n# Example: ./src/release-iemjs.sh 1.0.1\n\nset -e\n\nif [ -z \"$1\" ]; then\n    echo \"Usage: $0 <version>\"\n    echo \"Example: $0 1.0.1\"\n    exit 1\nfi\n\nVERSION=$1\nTAG=\"iemjs-v${VERSION}\"\n\n# Validate version format (basic semver check)\nif ! [[ $VERSION =~ ^[0-9]+\\.[0-9]+\\.[0-9]+$ ]]; then\n    echo \"Error: Version must be in semver format (e.g., 1.0.1)\"\n    exit 1\nfi\n\necho \"Preparing to release iemjs v${VERSION}\"\n\n# Check if we're in the right directory (should be run from repo root)\nif [ ! -f \"src/iemjs/package.json\" ]; then\n    echo \"Error: Must be run from the root of the iem repository\"\n    echo \"Current directory: $(pwd)\"\n    echo \"Expected to find: src/iemjs/package.json\"\n    exit 1\nfi\n\n# Check if working directory is clean\nif [ -n \"$(git status --porcelain)\" ]; then\n    echo \"Error: Working directory is not clean. Please commit or stash changes.\"\n    git status --short\n    exit 1\nfi\n\n# Update version in package.json (but don't commit yet)\ncd src/iemjs\nnpm version $VERSION --no-git-tag-version\ncd ../..\n\n# Run basic tests\necho \"Running syntax validation...\"\ncd src/iemjs\nnpm test\ncd ../..\n\necho \"Changes to be committed:\"\ngit diff src/iemjs/package.json\n\nread -p \"Commit these changes and create tag ${TAG}? (y/N) \" -n 1 -r\necho\nif [[ $REPLY =~ ^[Yy]$ ]]; then\n    # Commit the version change\n    git add src/iemjs/package.json\n    git commit -m \"Release iemjs v${VERSION}\"\n    \n    # Create and push the tag\n    git tag \"${TAG}\"\n    git push origin main\n    git push origin \"${TAG}\"\n    \n    echo \"✅ Released iemjs v${VERSION}\"\n    echo \"🚀 GitHub Actions will now publish to npm\"\n    echo \"📦 Check progress at: https://github.com/akrherz/iem/actions\"\n    echo \"📦 Package will be available at: https://www.npmjs.com/package/iemjs\"\nelse\n    # Revert the version change\n    git checkout -- src/iemjs/package.json\n    echo \"❌ Release cancelled\"\nfi\n"
  },
  {
    "path": "tests/iemweb/autoplot/test_api.py",
    "content": "\"\"\"Excerise the imports.\"\"\"\n\nimport json\n\nimport pytest\nfrom iemweb.autoplot import data as autoplot_data\nfrom iemweb.autoplot.autoplot import application as autoplot_app\nfrom iemweb.autoplot.autoplot import parser\nfrom iemweb.autoplot.index import application as index_app\nfrom iemweb.autoplot.meta import application as meta_app\nfrom pyiem.exceptions import IncompleteWebRequest\nfrom werkzeug.test import Client\n\n\ndef genmod():\n    \"\"\"Generate modules to test against.\"\"\"\n    for plot in autoplot_data[\"plots\"]:\n        for entry in plot[\"options\"]:\n            yield f\"{entry['id']}\"\n\n\ndef test_fourcolons():\n    \"\"\"Test that this raises.\"\"\"\n    with pytest.raises(IncompleteWebRequest):\n        parser(\"wfo:bah::::\")\n\n\ndef test_threecolons():\n    \"\"\"Test that this raises.\"\"\"\n    res = parser(\"network:WFO::wfo:::year:2025\")\n    assert res[\"network\"] == \"WFO\"\n    assert res[\"wfo\"] == \"\"\n    assert res[\"year\"] == \"2025\"\n\n\n@pytest.mark.parametrize(\"apid\", genmod())\ndef test_autoplot_calls_index(apid: str):\n    \"\"\"Test the HTML generation via the User frontdoor.\"\"\"\n    c = Client(index_app)\n    resp = c.get(f\"?q={apid}\")\n    assert resp.status_code == 200\n\n\n@pytest.mark.parametrize(\"apid\", genmod())\ndef test_autoplot_calls_via_frontend(apid: str):\n    \"\"\"Just import things.\"\"\"\n    c = Client(meta_app)\n    meta = json.loads(c.get(f\"?p={apid}\").data.decode(\"utf-8\"))\n    fmts = [\"png\"]\n    if meta[\"highcharts\"]:\n        fmts.append(\"js\")\n    if meta.get(\"data\"):\n        fmts.append(\"csv\")\n    if meta.get(\"raster\"):\n        fmts.append(\"geotiff\")\n    if meta.get(\"maptable\"):\n        fmts.append(\"geojson\")\n    for fmt in fmts:\n        c = Client(autoplot_app)\n        res = c.get(f\"?p={apid}&fmt={fmt}&q=_cb:1\")\n        # Crude check that numpy arrays are not being str rendered\n        if fmt == \"js\":\n            print(res.text)\n            assert res.text.find(\"np.\") == -1\n        # 400 is Rumsfeld's knowns\n        assert res.status_code in [200, 400]\n"
  },
  {
    "path": "tests/iemweb/autoplot/test_barchar.py",
    "content": "\"\"\"Test iemweb.autoplot.barchar module.\"\"\"\n\nimport pandas as pd\nimport pytest\nfrom iemweb.autoplot.barchart import barchart_with_top10\nfrom pyiem.plot import figure\n\n\n@pytest.mark.mpl_image_compare(tolerance=0.2)\ndef test_barchart_simple():\n    \"\"\"Test the barchart module.\"\"\"\n    fig = figure()\n    df = pd.DataFrame(\n        {\n            \"a\": range(20),\n        },\n        index=pd.Index(list(range(2000, 2020)), name=\"Year\"),\n    )\n    barchart_with_top10(fig, df, \"a\")\n    return fig\n"
  },
  {
    "path": "tests/iemweb/autoplot/test_extweb_failures.py",
    "content": "\"\"\"Test autoplots that call external services.\"\"\"\n\nimport responses\nfrom iemweb.autoplot.autoplot import application\nfrom werkzeug.test import Client\n\n\ndef test_ap17():\n    \"\"\"Test a failure found in prod.\"\"\"\n    with responses.RequestsMock() as rsps:\n        rsps.add(\n            method=responses.GET,\n            url=\"http://mesonet.agron.iastate.edu/api/1/daily.json\",\n            status=404,\n        )\n        c = Client(application)\n        res = c.get(\"?p=17&q=_cb:1\")\n        assert res.status_code == 400\n"
  },
  {
    "path": "tests/iemweb/autoplot/test_index.py",
    "content": "\"\"\"Run a bunch of URLs through the autoplot system.\"\"\"\n\nimport os\n\nimport pytest\nfrom iemweb.autoplot.index import application, networkselect_handler\nfrom pyiem.exceptions import BadWebRequest\nfrom werkzeug.test import Client\n\n\ndef get_test_urls():\n    \"\"\"yield a list of URLs to test.\"\"\"\n    listfn = os.path.join(os.path.dirname(__file__), \"urllist_index.txt\")\n    with open(listfn) as fh:\n        for line_in in fh:\n            line = line_in.strip()\n            if line == \"\" or line.startswith(\"#\"):\n                continue\n            yield line\n\n\n@pytest.mark.parametrize(\"url\", get_test_urls())\ndef test_urls(url):\n    \"\"\"Run the test.\"\"\"\n    c = Client(application)\n    res = c.get(url)\n    assert res.status_code == 200\n\n\ndef test_cookie_set_to_all():\n    \"\"\"Test handling of when cookie is set to _ALL.\"\"\"\n    cl = Client(application)\n    cl.set_cookie(\"station_WFO\", \"_ALL\")\n    res = cl.get(\"?q=72\")\n    assert res.status_code == 200\n\n\ndef test_bad_network():\n    \"\"\"Test the provision of a bad network.\"\"\"\n    with pytest.raises(BadWebRequest):\n        networkselect_handler(\"XXXX<script>\", {\"network\": \"\"}, {\"pltvars\": []})\n"
  },
  {
    "path": "tests/iemweb/autoplot/test_meta.py",
    "content": "\"\"\"Test the metadata service.\"\"\"\n\nfrom iemweb.autoplot.meta import find_title, get_metadict, get_timing\n\n\ndef test_find_title():\n    \"\"\"Test what we get with an invalid pid.\"\"\"\n    assert \"Unset?\" in find_title(-1)\n\n\ndef test_simple():\n    \"\"\"Test the API.\"\"\"\n    res = get_timing(0)\n    assert res == -1\n    get_metadict(0)\n    get_metadict(90)\n"
  },
  {
    "path": "tests/iemweb/autoplot/test_one_offs.py",
    "content": "\"\"\"Test things that are hard to test directly.\"\"\"\n\nfrom datetime import timedelta\n\nfrom iemweb.autoplot.scripts200.p221 import forecast2image\nfrom pyiem.plot import get_cmap\nfrom pyiem.util import utc\nfrom pytest_httpx import HTTPXMock\n\n\ndef test_forecast2image():\n    \"\"\"Walk before we run.\"\"\"\n    environ = {\n        \"cmap\": get_cmap(\"jet\"),\n        \"w\": \"cwa\",\n        \"cwa\": \"DMX\",\n        \"sector\": \"IA\",\n    }\n    fhour, buf = forecast2image(environ, utc(2025, 9, 12, 11), 1)\n    assert fhour == 1\n    assert buf\n\n\ndef test_forecast2image_future():\n    \"\"\"Test that we don't call for a file.\"\"\"\n    fhour, buf = forecast2image({}, utc() + timedelta(hours=3), 1)\n    assert fhour == 1\n    assert buf is None\n\n\ndef test_failed_archive_fetch(httpx_mock: HTTPXMock):\n    \"\"\"Test that we handle a failed archive fetch gracefully.\"\"\"\n    httpx_mock.add_response(status_code=404)\n    fhour, buf = forecast2image({}, utc(2025, 9, 12, 11), 1)\n    assert fhour == 1\n    assert buf is None\n\n\ndef test_corrupted_grib_file():\n    \"\"\"Test file messed up within CI init.\"\"\"\n    fhour, buf = forecast2image({}, utc(2024, 1, 1, 1), 1)\n    assert fhour == 1\n    assert buf is None\n"
  },
  {
    "path": "tests/iemweb/autoplot/test_urls.py",
    "content": "\"\"\"Run a bunch of URLs through the autoplot system.\"\"\"\n\nimport pathlib\n\nimport pytest\nfrom iemweb.autoplot.autoplot import application\nfrom werkzeug.test import Client\n\n\ndef get_test_urls():\n    \"\"\"yield a list of URLs to test.\"\"\"\n    listfn = pathlib.Path(__file__).parent / \"urllist.txt\"\n    with open(listfn) as fh:\n        for line_in in fh:\n            line = line_in.strip()\n            if line == \"\" or line.startswith(\"#\"):\n                continue\n            # Do apache rewrite magic here, example urllist entry\n            # 199/opt:1::date:2024-07-24::_r:t::dpi:100.png\n            num, qstr = line.split(\"/\", maxsplit=1)\n            qstr, fmt = qstr.rsplit(\".\", 1)\n            yield f\"/?p={num}&q={qstr}&fmt={fmt}\"\n\n\n@pytest.mark.parametrize(\"url\", get_test_urls())\ndef test_urls(url):\n    \"\"\"Run the test.\"\"\"\n    c = Client(application)\n    res = c.get(url)\n    assert res.status_code in [200, 400]\n"
  },
  {
    "path": "tests/iemweb/autoplot/urllist.txt",
    "content": "1/truncate:no::network:IACLIMATE::station:IATAME::threshold:44::month1:10::num1:4::var1:hdd65::month2:6::num2:2::var2:gdd41::year:2007.png\n1/truncate:no::network:IACLIMATE::station:IA0203::threshold:44::month1:10::num1:4::var1:hdd65::month2:6::num2:2::var2:gdd41::year:2007.png\n2/network:IACLIMATE::station:IA0203::month:2::year:2024::gddbase:50::gddceil:86::_r:t::dpi:100.png\n2/network:IACLIMATE::station:IATAME::month:2::year:2024::gddbase:50::gddceil:86::_r:t::dpi:100.png\n3/network:IACLIMATE::station:IATAME::month:summer::type:sum-precip::threshold:-99::syear:1850::eyear:2024::decadal:yes::_r:43::dpi:100.png\n4/year:2024::threshold:1.0::period:7::state:IA::_r:t::dpi:100.png\n5/network:IACLIMATE::station:IATAME::var:max_snow::_r:43::dpi:100.png\n6/state:IA::year:2024::month:3::type:sum-precip::_r:t::dpi:100.png\n7/network:IACLIMATE::station:IATAME::year:2024::gdd1:1135::gdd2:1660::gddbase:50::gddceil:86::cmap:jet::_r:t::dpi:100.png\n10/network:IACLIMATE::station:IATAME::direction:above2::varname:low::threshold:32::year:1893::_r:t::dpi:100.png\n10/network:IACLIMATE::station:IATAME::direction:above::varname:low::threshold:32::year:2019::_r:t::dpi:100.png\n10/network:IACLIMATE::station:IATAME::direction:above::varname:low::threshold:32::year:2024::_r:t::dpi:100.png\n10/network:IACLIMATE::station:IA0203::direction:above::varname:low::threshold:32::year:1893::_r:t::dpi:100.png\n11/network:IA_ASOS::zstation:AMW::year:2024::emphasis:-99::var:dwpf::opt:below::_r:43::dpi:100.png\n11/network:IA_ASOS::zstation:AMW::year:2024::emphasis:20::var:feel::opt:touches::_r:43::dpi:100.png\n14/network:IACLIMATE::station:IATAME::year:2024::_r:t::dpi:100.png\n15/network:IACLIMATE::station:IATAME::varname:high::year:2024::_r:t::dpi:100.png\n16/network:IA_ASOS::zstation:AMW::month:spring::syear:1900::eyear:2025::opt:tmpf_above::threshold:80::r:20::_r:88::dpi:100.png\n16/network:IA_ASOS::zstation:AMW::month:jun::syear:1900::eyear:2025::opt:tmpf_below::threshold:80::r:20::_r:88::dpi:100.png\n16/network:IA_ASOS::zstation:AMW::month:jun::syear:1900::eyear:2025::opt:dwpf_above::threshold:60::r:20::_r:88::dpi:100.png\n16/network:IA_ASOS::zstation:AMW::month:winter::syear:1900::eyear:2025::opt:dwpf_below::threshold:60::r:40::_r:88::dpi:100.png\n16/network:IA_ASOS::zstation:AMW::month:winter::syear:1900::eyear:2025::opt:relh_above::threshold:60::r:40::_r:88::dpi:100.png\n16/network:IA_ASOS::zstation:AMW::month:winter::syear:1900::eyear:2025::opt:relh_below::threshold:60::r:40::_r:88::dpi:100.png\n16/network:IA_ASOS::zstation:IKV::month:winter::syear:1900::eyear:2025::opt:relh_below::threshold:60::r:40::_r:88::dpi:100.png\n16/network:IA_ASOS::zstation:IKV::month:winter::syear:1900::eyear:2025::opt:sn::threshold:60::r:40::_r:88::dpi:100.png\n16/network:IA_ASOS::zstation:IKV::month:winter::syear:1900::eyear:2025::opt:ra::threshold:60::r:40::_r:88::dpi:100.png\n16/network:IA_ASOS::zstation:IKV::month:winter::syear:1900::eyear:2025::opt:p01i::threshold:60::r:40::_r:88::dpi:100.png\n16/network:IA_ASOS::zstation:IKV::month:winter::syear:1900::eyear:2025::opt:p01i_above::threshold:0.01::r:40::_r:88::dpi:100.png\n17/network:IA_ASOS::station:AMW::month:7::year:2024::p:temps::_r:t::dpi:100.png\n17/network:IA_ASOS::station:AMW::month:7::year:2024::p:precip::_r:t::dpi:100.png\n17/network:IA_ASOS::station:BNW::month:7::year:2024::p:temps::_r:t::dpi:100.png\n17/month:9::year:1909::station:DSM::network:IA_ASOS.png\n17/network:IA_ASOS::station:AMW::month:7::year:2024::p:dwpf::_r:t::_cb:1.png\n17/network:IA_ASOS::station:AMW::month:7::year:1993::p:feel::_r:t::dpi:100.png\n17/network:IA_ASOS::station:AMW::month:10::year:2010::p:temps::_r:t::dpi:100.png\n18/network:IA_ASOS::zstation:DSM::sdate:2023-09-01::days:365::var:alti::_r:43::dpi:100.png\n18/network:IA_ASOS::zstation:AMW::sdate:2020-01-11::days:365::var:tmpf::_r:t::dpi:100.png\n18/network:IA_ASOS::zstation:AMW::sdate:2020-01-11::days:365::var:tmpf::_r:t::dpi:100.js\n18/network:IA_ASOS::zstation:AMW::sdate:2043-09-11::days:365::var:tmpf::_r:t::dpi:100.png\n18/network:IA_ASOS::zstation:AMW::sdate:2020-09-11::days:30::var:tmpf::_r:t::dpi:100.png\n19/network:IACLIMATE::station:IATAME::binsize:4::x:-60%20130::y:-60%20130::month:all::year:2008::cmap:Blues::_r:t::dpi:100.png\n19/network:IACLIMATE::station:IA0203::binsize:4::x:-60%20130::y:-60%20130::month:all::year:2008::cmap:Blues::_r:t::dpi:100.png\n19/network:IACLIMATE::station:IATAME::binsize:4::x:-60%20130::y:-60%20130::month:winter::year:2008::cmap:Blues::_r:t::dpi:100.png\n20/network:IA_ASOS::zstation:AMW::year:2020::_r:t::dpi:100.png\n21/csector:midwest::date1:2025-08-29::date2:2025-01-29::varname:high::cmap:RdBu_r::_r:t::dpi:100.png\n23/network:IACLIMATE::station:IA0193::syear:2018::years:8::var:avg_temp::_r:t::dpi:100.png\n24/which:cd::csector:midwest::var:precip::w:rank::p:day::year:2025::month:6::sdate:2099-06-01::edate:2099-06-30::cmap:BrBG_r::_r:t::dpi:100.png\n24/which:cd::csector:midwest::var:low::w:dep::p:month::year:2000::month:winter::sdate:2025-06-30::edate:2025-07-28::cmap:BrBG_r::_r:t::dpi:100::_cb:1.png\n24/which:cd::csector:IA::var:precip::w:rank::p:month::year:2024::month:1::sdate:2024-07-23::edate:2024-08-20::cmap:BrBG_r::_r:t::dpi:100.png\n24/which:st::csector:midwest::var:precip::w:rank::p:month::year:2024::month:1::sdate:2024-07-23::edate:2024-08-20::cmap:BrBG_r::_r:t::dpi:100.png\n24/which:st::csector:midwest::var:sdd86::w:rank::p:day::year:2024::month:1::sdate:2023-02-01::edate:2023-02-08::cmap:BrBG_r::_r:43::dpi:100.png\n24/which:st::csector:midwest::var:sdd86::w:rank::p:day::year:2024::month:1::sdate:2023-02-01::edate:2024-02-08::cmap:BrBG_r::_r:43::dpi:100.png\n24/which:st::csector:midwest::var:avgt::w:val::p:day::year:2024::month:1::sdate:2022-12-15::edate:2023-01-15::cmap:BrBG_r::_r:43::dpi:100.png\n24/which:st::csector:midwest::var:aridity::w:dep::p:day::year:2024::month:1::sdate:2022-12-15::edate:2023-01-15::cmap:BrBG_r::_r:43::dpi:100.png\n27/network:IACLIMATE::station:IATAME::t1:-55::t2:-60::_r:43::dpi:100.png\n28/network:IACLIMATE::station:IATAME::opt:rank::date:2024-07-26::_r:t::dpi:100::_cb:1.png\n30/network:IACLIMATE::station:IATAME::opt:yearly::month:8::year:2020::eyear:2025::_r:96::dpi:100.png\n31/network:IACLIMATE::station:IATAME::syear:1893::eyear:2024::month:gs::how:three::var:low::days:4::stat:avg::thres:70::mdays:2::mstat:avg::fdays:4::fstat:avg::agg:month::_r:43::dpi:100.png\n31/network:IACLIMATE::station:IATAME::syear:1893::eyear:2024::month:fall::how:two::var:high::days:1::stat:max::mdays:4::mstat:max::fdays:4::fstat:max::agg:year::_r:43::dpi:100.png\n32/network:IACLIMATE::station:IATAME::year:2020::sday:0101::eday:1231::var:power_srad::gddbase:50::gddceil:86::how:diff::cmap:jet::_r:43::dpi:100.png\n32/network:IACLIMATE::station:IATAME::year:2020::sday:0101::eday:1231::var:power_srad::gddbase:50::gddceil:86::how:valrange::cmap:jet::_r:43::dpi:100.png\n32/network:IACLIMATE::station:IATAME::year:2024::var:era5land_srad::gddbase:50::gddceil:86::how:sigma::cmap:jet::_r:t::dpi:100.png\n32/network:IACLIMATE::station:IATAME::year:2024::var:era5land_srad::gddbase:50::gddceil:86::how:valrange::cmap:jet::_r:t::dpi:100.png\n32/network:IACLIMATE::station:IATAME::year:2024::var:era5land_srad::gddbase:50::gddceil:86::how:ptile::cmap:jet::_r:t::dpi:100.png\n32/network:IACLIMATE::station:IATAME::year:2024::var:era5land_soilm4_avg::y2:2023::gddbase:50::gddceil:86::how:diff::cmap:jet::_r:t::dpi:100.png\n34/network:IACLIMATE::station:IATAME::var:high_over::which:average::climo:1951::threshold:32::_r:43::dpi:100.png\n34/network:IACLIMATE::station:IATAME::var:high_under::which:average::climo:nce81::threshold:32::_r:43::dpi:100.png\n34/network:IACLIMATE::station:IATAME::var:high_under::which:average::climo:nce91::threshold:32::_r:43::dpi:100.png\n37/network:IA_ASOS::zstation:AMW::month:8::year:2024::model:NBE::var:wsp::_r:t::dpi:100::_cb:1.png\n37/network:IA_ASOS::zstation:AMW::month:8::year:2024::model:GFS::var:t::_r:t::dpi:100.png\n38/network:IACLIMATE::station:IATAME::var:best::climo:era5land_srad::year:2024::_r:t::dpi:100.png\n39/network:IACLIMATE::station:IATAME::compare:manual::year:2024::month:1::date:2024-01-03::_r:t::dpi:100.png\n39/network:IACLIMATE::station:IATAME::compare:high::year:2024::month:1::date:2024-01-03::_r:t::dpi:100.png\n40/network:IA_ASOS::zstation:DSM::month:1::ptype:vsby::year:2020::_r:t::dpi:100.png\n40/network:IA_ASOS::zstation:DSM::month:1::ptype:sky::year:2020::_r:t::dpi:100.png\n41/network:IACLIMATE::station:IATAME::month1:winter::month2:7::var:high::highlight:55::days:1::opt:max::_r:t::dpi:100.png\n41/network:IACLIMATE::station:IATAME::month1:winter::p1:1893-1950::month2:7::p2:1950-2017::var:high::highlight:55::days:7::opt:avg::_r:43::dpi:100.png\n42/network:IA_ASOS::zstation:DSM::m:octmar::yrange:1928-2024::dir:below::var:mslp::threshold:1003::t2:1000::_r:43::dpi:100.png\n43/network:IA_ASOS::station:AMW::sdate:2020-07-01::p:default::_r:88::dpi:100.png\n43/network:IA_ASOS::station:AMW::sdate:2020-07-01::p:two::_r:88::dpi:100.png\n44/plot:bar::opt:fema::network:WFO::station:DMX::state:IA::fema:7::limit:yes::c:single::phenomena:TO::significance:W::syear:1986::eyear:2024::s:jan1::_r:t::dpi:100.png\n44/plot:line::opt:fema::network:WFO::station:DMX::state:IA::fema:7::limit:no::c:svrtor::phenomena:TO::significance:W::syear:1986::eyear:2024::s:jan1::_r:t::dpi:100.png\n44/plot:bar::opt:state::network:WFO::station:_ALL::state:VA::fema:7::limit:no::c:single::phenomena:FW::significance:W::syear:1986::eyear:2024::s:jul1::_r:43::dpi:100.png\n44/plot:bar::opt:wfo::network:WFO::station:DLH::state:IA::fema:7::limit:no::c:winter::phenomena:TO::significance:W::syear:1986::eyear:2025::s:jul1::_r:43::dpi:100.png\n45/network:IA_ASOS::zstation:DSM::year:2020::which:all.png\n48/ugc:IAC169::phenomena:TO::significance:W::_r:t::dpi:100.png\n49/network:IACLIMATE::station:IA0262::syear:1893::eyear:2026::var:high::days:1::f:avg::opt:rng::threshold:40::threshold2:60::_r:43::dpi:100.png\n49/network:IACLIMATE::station:IATAME::syear:1893::eyear:2026::var:snow::days:1::f:avg::opt:rng::threshold:0.1::threshold2:4::_r:43::dpi:100.png\n50/network:WFO::station:OAX::state:IA::opt:wfo::p:count::agg:issuance::date1:2010-04-01::date2:2025-01-29::_r:43::dpi:100.png\n50/network:WFO::station:DMX::state:IA::opt:state::p:count::agg:max::date1:2010-04-01::date2:2025-01-29::_r:43::dpi:100.png\n51/network:IA_ASOS::station:AMW::sdate:2020-05-01::edate:2020-08-06::base:50::ceil:86::which:srad::_r:t::dpi:100.png\n51/network:ISUSM::station:BOOI4::sdate:2024-05-01::edate:2024-07-27::base:50::ceil:86::which:all::_r:t::dpi:100.png\n51/network:ISUSM::station:BOOI4::sdate:2024-05-01::edate:2024-07-27::base:50::ceil:86::which:gdd::_r:t::dpi:100.png\n51/network:ISUSM::station:BOOI4::sdate:2024-05-01::edate:2024-07-27::base:50::ceil:86::which:precip::_r:t::dpi:100.png\n51/network:ISUSM::station:BOOI4::sdate:2024-05-01::edate:2024-07-27::base:50::ceil:86::which:sdd::_r:t::dpi:100.png\n52/for:wfo::network:WFO::station:DMX::ugc:IAC169::sdate:2020-01-18::days:10::_r:t::dpi:100::_cb:1.png\n52/for:ugc::network:WFO::station:DMX::ugc:IAC169::sdate:2020-01-18::days:3::_r:t::dpi:100::_cb:1.png\n52/for:wfo::network:WFO::station:_ALL::ugc:IAC169::sdate:2015-01-01::days:10::_r:t::dpi:100.png\n54/network1:IA_ASOS::zstation1:DSM::network2:IA_ASOS::zstation2:AMW::varname:low::cmap:Greens::_r:t::dpi:100.png\n54/network1:IA_ASOS::zstation1:DSM::network2:IA_ASOS::zstation2:AMW::varname:high::cmap:Greens::_r:t::dpi:100.png\n56/how:week::start:jan::opt:wfo::state:IA::network:WFO::station:DMX::phenomena:TO::significance:W::_r:t::dpi:100.png\n56/how:week::start:jan::opt:fema::state:IA::network:WFO::station:DMX::fema:7::phenomena:TO::significance:W::_r:t::dpi:100.png\n59/network:IA_ASOS::station:CSQ::units:mph::_r:t::dpi:100.png\n60/network:IA_ASOS::zstation:DSM::var:tmpf::w:freq::threshold:120::direction:above::cmap:jet::_r:t::dpi:100.png\n61/var:high::sdate:2024-08-01::sector:conus::network:WFO::wfo:STO::state:IA::_r:t::dpi:100.png\n61/var:precip::sdate:2024-08-01::sector:conus::network:WFO::wfo:STO::state:IA::_r:t::dpi:100.png\n69/network:IACLIMATE::station:IA0000::var:high::which:above::unit:degrees::mag:0::month:winter::opt:percent::_r:t::dpi:100.png\n69/network:IACLIMATE::station:IATAME::var:high::which:above::unit:degrees::mag:-15::month:all::opt:percent::year:2026::_r:t::dpi:100.png\n69/network:IACLIMATE::station:IATAME::var:high::which:abs_below::unit:sigma::mag:-1::month:all::opt:percent::year:2026::_r:t::dpi:100.png\n69/network:IACLIMATE::station:IATAME::var:low::which:abs_below::unit:sigma::mag:3::month:all::opt:percent::year:2025::_r:t::dpi:100.png\n69/network:IACLIMATE::station:IATAME::var:low::which:below::unit:sigma::mag:3::month:all::opt:percent::year:2025::_r:t::dpi:100.png\n69/network:IACLIMATE::station:IATAME::var:low::which:abs_above::unit:degrees::mag:5::month:all::opt:number::year:2025::_r:t::dpi:100.png\n69/network:IACLIMATE::station:IATAME::var:low::which:abs_below::unit:degrees::mag:5::month:all::opt:number::year:2025::_r:t::dpi:100.png\n70/opt:wfo::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::split:jan1::f:daily::cmap:jet::_r:t::dpi:100.png\n70/opt:state::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::split:jul1::f:none::cmap:jet::_r:t::dpi:100.png\n70/opt:state::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::split:jan1::f:accum::cmap:jet::_r:t::dpi:100.png\n70/opt:state::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::split:jan1::f:daily::cmap:jet::_r:t::dpi:100.png\n70/opt:fema::network:WFO::station:DMX::state:IA::fema:7::phenomena:SV::significance:W::split:jan1::f:daily::cmap:jet::_r:t::dpi:100::_cb:1.png\n71/network:IA_ASOS::zstation:AMW::year:2020::month:7::units:MPH::dpi:100::_cb:1.png\n72/network:WFO::station:DMX::phenomena:TO::significance:W::season:jul.png\n72/network:WFO::station:DMX::phenomena:TO::significance:W::season:all.png\n72/network:WFO::station:OAX::phenomena:TO::significance:W::season:spring2::_r:43::dpi:100.png\n73/opt:fema::network:WFO::station:DMX::state:IA::fema:7::ugc:IAC169::limit:no::sday:0101::eday:1231::phenomena:FF::significance:W::_r:t::dpi:100::_cb:1.png\n73/opt:wfo::network:WFO::station:DMX::state:IA::ugc:IAC169::limit:yes::sday:0101::eday:1231::phenomena:TO::significance:W::_r:t::dpi:100.png\n73/opt:ugc::network:WFO::station:PQR::state:WA::ugc:WAZ660::limit:no::sday:0101::eday:1231::phenomena:FW::significance:W::_r:t::dpi:100.png\n73/opt:wfo::network:WFO::station:TSA::state:IA::ugc:IAC169::limit:udf::sday:0104::eday:0104::phenomena:SV::significance:W::_r:t::dpi:100.png\n74/network:IACLIMATE::station:IA0262::season:winter::dir:below::var:low::threshold:0::year:1893::_r:t::dpi:100.png\n75/network:IACLIMATE::station:IA0200::season:all::year:2025::_r:t::dpi:100.png\n76/network:IA_ASOS::station:DSM::season:winter::varname:dwpf::agg:mean::year:1893::w:bar::_r:t::dpi:100.png\n76/network:IA_ASOS::station:DSM::season:spring::varname:dwpf::agg:max::year:1980::w:violin::hours:14-24::_r:t::dpi:100.png\n76/network:IA_ASOS::station:DSM::season:water_year::varname:vpd::agg:mean::year:1893::w:bar::_r:t::dpi:100.png\n77/network:IACLIMATE::station:IA0262::_r:t::dpi:100.png\n78/network:IA_ASOS::zstation:DSM::month:winter::date:2024-08-01::_r:t::dpi:100.png\n79/network:IA_ASOS::zstation:DSM::month:winter::on:2024-12-31.png\n80/which:wfo::network:WFO::wfo:DMX::ugc:IAC153::phenomena:TO::significance:W::_r:t::dpi:100.png\n80/which:ugc::network:WFO::wfo:DMX::ugc:IAC153::phenomena:TO::significance:W::_r:t::dpi:100.png\n82/network:IA_ASOS::station:AMW::var:pday::sdate:2024-05-16::edate:2024-08-14::_r:t::dpi:100.png\n82/network:IA_ASOS::station:AMW::var:max_rstage::sdate:2024-05-16::edate:2024-08-14::_r:t::dpi:100.png\n82/network:IACLIMATE::station:IATAME::var:max_tmpf::sdate:2023-05-11::edate:2023-08-14::_r:t::dpi:100.png\n82/network:IA_ASOS::station:DSM::var:max_tmpf::sdate:2024-03-01::edate:2026-01-05::layout:column::colorize:yes::cmap:jet.png\n82/network:IA_ASOS::station:AMW::var:high_departure::sdate:2024-02-01::edate:2025-01-05::layout:column::colorize:yes::cmap:YlGnBu::interval:-15,16,5::_r:t::dpi:100.png\n82/network:IA_ASOS::station:AMW::var:pday::sdate:2023-12-31::edate:2024-06-01::layout:column::colorize:yes::cmap:jet::interval:0,101,0.001::_r:t::dpi:100.png\n84/sector:conus::network:WFO::src:iemre::opt:dep::usdm:no::ptype:g::sdate:2023-01-01::edate:2023-01-02::clip:no::cmap:YlGnBu::_r:43::dpi:100.png\n84/sector:northeast::network:WFO::src:stage4::opt:acc::usdm:no::ptype:g::sdate:2024-01-01::edate:2024-01-01::cmap:YlGnBu::_r:t::dpi:100.png\n84/sector:sengland::network:WFO::cwa:ALY::src:mrms::opt:dep::usdm:no::ptype:g::sdate:2024-11-10::edate:2024-10-10::cmap:YlGnBu::_r:t::dpi:100.png\n84/sector:IA::network:WFO::src:mrms::opt:acc::usdm:no::ptype:g::sdate:2024-01-01::edate:2024-01-01::cmap:YlGnBu::_r:t::dpi:100.png\n84/sector:IA::ugc:IAC153::network:WFO::src:ifc::opt:per::usdm:yesb::ptype:g::sdate:2023-08-06::edate:2023-08-13::cmap:YlGnBu::_r:t::dpi:100.png\n84/sector:IA::ugc:IAC169::network:WFO::src:ifc::opt:per::usdm:yesb::ptype:g::sdate:2023-08-06::edate:2023-08-13::cmap:YlGnBu::_r:t::dpi:100.png\n84/sector:IA::network:WFO::cwa:DMX::src:mrms::opt:dep::usdm:no::ptype:g::sdate:2024-08-06::edate:2024-08-13::cmap:YlGnBu::_r:t::dpi:100.png\n84/sector:IA::network:WFO::src:prism::opt:acc::usdm:no::ptype:g::sdate:2024-08-13::edate:2024-08-13::cmap:YlGnBu::_r:t::dpi:100.png\n84/sector:IA::network:WFO::src:iemre::opt:acc::usdm:no::ptype:g::sdate:2024-08-13::edate:2024-08-13::cmap:YlGnBu::_r:t::dpi:100.png\n84/sector:IA::network:WFO::src:ifc::opt:acc::usdm:no::ptype:g::sdate:2024-01-01::edate:2024-01-02::cmap:YlGnBu::_r:t::dpi:100.png\n84/sector:MN::network:WFO::src:stage4::opt:acc::usdm:no::ptype:c::sdate:2024-01-01::edate:2024-01-01::clip:yes::cmap:YlGnBu::_r:t::dpi:100.png\n84/sector:MN::network:WFO::src:stage4::opt:acc::usdm:no::ptype:c::sdate:2024-01-01::edate:2025-01-01::clip:yes::cmap:YlGnBu::_r:t::dpi:100.png\n86/csector:AK::var:wind_speed::ptype:c::date:2024-01-01::cmap:magma::_r:t::dpi:100.png\n86/csector:IN::var:wind_speed::ptype:c::date:2024-01-01::cmap:magma::_r:t::dpi:100.png\n86/domain:europe::csector:IN::var:rsds::ptype:c::date:2024-01-01::cmap:magma::_r:t::dpi:100.png\n86/domain:sa::csector:IN::var:rsds::ptype:c::date:2024-01-01::cmap:magma::_r:t::dpi:100.png\n86/csector:midwest::var:p01d_12z::ptype:c::date:2023-01-01::cmap:magma::_r:43::dpi:100.png\n86/csector:midwest::var:p01d_12z::ptype:g::date:2023-01-01::cmap:magma::_r:43::dpi:100.png\n86/csector:TN::var:low_tmpk_12z::ptype:c::date:2023-01-01::clip:yes::cmap:magma::_r:t::dpi:100.png\n86/csector:TN::var:range_tmpk_12z::ptype:c::date:2023-01-01::clip:yes::cmap:magma::_r:t::dpi:100.png\n86/csector:TN::var:rsds::ptype:c::date:2023-01-01::clip:yes::cmap:magma::_r:t::dpi:100.png\n89/year:2024::daythres:0.50::period:7::trailthres:0.50::state:IA::_r:t::dpi:100.png\n90/t:state::v:events::ilabel:yes::geo:ugc::drawc:yes::year:2024::year2:2024::sdate:1999-01-01%200000::edate:2024-08-12%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:state::v:events::ilabel:yes::geo:polygon::drawc:yes::year:2024::year2:2024::sdate:1999-01-01%200000::edate:2024-08-12%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:state::v:lastyear::ilabel:yes::geo:polygon::drawc:yes::year:2024::year2:2024::sdate:2006-01-01%200000::edate:2024-07-29%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100::_cb:1.png\n90/t:state::v:yearcount::ilabel:yes::geo:ugc::drawc:yes::year:2024::year2:2024::sdate:2006-01-01%200000::edate:2024-07-29%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:state::v:periodavg::ilabel:yes::geo:ugc::drawc:yes::year:2024::year2:2024::sdate:2006-01-01%200000::edate:2024-07-29%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100::_cb:1.png\n90/t:cwa::v:periodavg::ilabel:yes::geo:ugc::drawc:yes::year:2024::year2:2024::sdate:2006-01-01%200000::edate:2024-07-29%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:cwa::v:periodmax::ilabel:yes::geo:ugc::drawc:yes::year:2024::year2:2024::sdate:2006-01-01%200000::edate:2024-07-29%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:state::v:total::ilabel:yes::geo:polygon::drawc:yes::year:2024::year2:2024::sdate:1999-01-01%200000::edate:2024-08-12%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:cwa::v:hour::ilabel:yes::geo:polygon::drawc:yes::year:2024::year2:2024::sdate:2006-01-01%200000::edate:2024-09-02%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:cwa::v:periodavg::ilabel:yes::geo:polygon::drawc:yes::year:2020::year2:2024::sdate:2006-01-01%200000::edate:2024-09-02%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:cwa::v:periodmax::ilabel:yes::geo:polygon::drawc:yes::year:2020::year2:2024::sdate:2006-01-01%200000::edate:2024-09-02%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:cwa::v:events::ilabel:yes::geo:polygon::drawc:yes::year:2020::year2:2024::sdate:2006-01-01%200000::edate:2024-09-02%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:cwa::v:events::ilabel:yes::geo:ugc::drawc:yes::year:2020::year2:2024::sdate:2006-01-01%200000::edate:2024-09-02%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:cwa::v:hour::ilabel:yes::geo:ugc::drawc:yes::year:2020::year2:2024::sdate:2006-01-01%200000::edate:2024-09-02%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:cwa::v:total::ilabel:yes::geo:ugc::drawc:yes::year:2020::year2:2024::sdate:2006-01-01%200000::edate:2024-09-02%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:state::v:yearcount::ilabel:yes::geo:polygon::drawc:yes::year:2024::year2:2024::sdate:2006-01-01%200000::edate:2024-09-14%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:state::v:yearavg::ilabel:yes::geo:polygon::drawc:yes::year:2024::year2:2024::sdate:2006-01-01%200000::edate:2024-09-14%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:state::v:yearavg::ilabel:yes::geo:ugc::drawc:yes::year:2024::year2:2024::sdate:2006-01-01%200000::edate:2024-09-14%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:state::v:days::ilabel:yes::geo:polygon::drawc:yes::year:2024::year2:2024::sdate:2006-01-01%200000::edate:2024-09-14%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:state::v:lastyear::ilabel:yes::geo:ugc::drawc:yes::year:2024::year2:2024::sdate:2006-01-01%200000::edate:2024-09-14%200000::network:WFO::station:DMX::state:IA::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:fema::v:lastyear::ilabel:yes::geo:ugc::drawc:yes::year:2024::year2:2024::sdate:2006-01-01%200000::edate:2024-09-14%200000::network:WFO::station:DMX::state:IA::fema:7::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100::_cb:1.png\n90/t:state::v:periodavg::ilabel:yes::geo:polygon::drawc:yes::year:2006::year2:2025::sdate:2006-01-01%200000::edate:2025-05-04%200000::network:WFO::station:DMX::state:IA::fema:7::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:state::v:periodavg::ilabel:yes::geo:polygon::drawc:yes::year:2006::year2:2025::sdate:2006-05-17%200000::edate:2025-05-04%200000::network:WFO::station:DMX::state:IA::fema:7::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:fema::v:periodavg::ilabel:yes::geo:polygon::drawc:yes::year:2006::year2:2025::sdate:2006-05-17%200000::edate:2025-05-04%200000::network:WFO::station:DMX::state:IA::fema:7::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:fema::v:lastyear::ilabel:yes::geo:ugc::drawc:yes::year:2006::year2:2025::sdate:2006-05-17%200000::edate:2025-05-04%200000::network:WFO::station:DMX::state:IA::fema:7::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:cwa::v:lastyear::ilabel:yes::geo:ugc::drawc:yes::year:2006::year2:2025::sdate:2006-05-17%200000::edate:2025-05-04%200000::network:WFO::station:DMX::state:IA::fema:7::phenomena:TO::significance:W::cmap:jet::_r:t::dpi:100.png\n90/t:cwa::v:yearavg::ilabel:yes::geo:ugc::drawc:yes::year:2006::year2:2025::sdate:2006-05-17%200000::edate:2025-05-04%200000::network:WFO::station:DMX::state:IA::fema:7::phenomena:TO::significance:W::cmap:jet::interval:1::_r:t::dpi:100.png\n92/phenomena:TO::significance:W::e:all::edate:2025-02-03::_r:t::dpi:100::_cb:1.png\n93/network:IA_ASOS::zstation:DSM::syear:1973::eyear:2024::year:2024::var:gust::ytd:yes::inc:no::_r:t::dpi:100.png\n93/network:IA_ASOS::zstation:DSM::syear:1973::eyear:2024::year:2024::var:dwpf_cold::ytd:yes::inc:no::_r:t::dpi:100.png\n93/network:IA_ASOS::zstation:DSM::syear:1973::eyear:2024::year:2024::var:dwpf::ytd:custom::sday:0601::eday:0720::inc:no::_r:t::dpi:100.png\n93/network:IA_ASOS::zstation:DSM::syear:1973::eyear:2024::year:2024::var:dwpf::ytd:custom::sday:0720::eday:0601::inc:no::_r:t::dpi:100.png\n93/network:IA_ASOS::zstation:DEH::syear:1973::eyear:1993::year:2024::var:dwpf_cold::ytd:yes::inc:no::_r:t::dpi:100.png\n96/network:IA_ASOS::zstation:BNW::_r:t::dpi:100.png\n97/d:sector::sector:IA::network:WFO::wfo:DMX::var:cgdd_sum::gddbase:50::gddceil:86::date1:2024-01-01::usdm:no::date2:2024-09-10::p:contour::cmap:RdYlBu::c:yes::ct:climate51::_r:t::dpi:100.png\n97/d:sector::sector:IA::network:WFO::wfo:DMX::var:cgdd_sum::gddbase:50::gddceil:86::date1:2023-10-01::usdm:no::date2:2024-04-10::p:contour::cmap:RdYlBu::c:yes::ct:climate51::_r:t::dpi:100.png\n97/d:sector::sector:IA::network:WFO::wfo:DMX::var:avg_temp::bins:50%2055%2060%2065%2070%2075%2080%2085%2090%2095%20100::gddbase:55::gddceil:86::date1:2024-05-01::usdm:no::date2:2024-09-30::p:contour::cmap:RdYlBu_r::c:no::ct:ncei_climate91::_r:88::dpi:100.png\n97/d:wfo::sector:IA::network:WFO::wfo:DMX::var:precip_sum::gddbase:50::gddceil:86::date1:2024-01-11::usdm:no::date2:2024-02-10::p:contour::cmap:RdYlBu::c:yes::ct:climate51::_r:t::dpi:100.png\n97/d:sector::sector:iailin::network:WFO::wfo:MPX::var:snow_percent::gddbase:50::gddceil:86::date1:2023-03-01::usdm:no::date2:2025-04-20::p:contour::cmap:RdYlBu::c:yes::ct:climate51::_r:t::dpi:100.png\n97/d:sector::sector:IA::network:WFO::wfo:DMX::var:precip_depart::gddbase:50::gddceil:86::date1:2024-06-01::usdm:no::date2:2025-07-23::p:contour::cmap:RdYlBu::c:yes::ct:climate51::_r:t::dpi:100.png\n99/network:IACLIMATE::station:IATAME::year:2024::delta:sigma::_r:t::dpi:100::_cb:1.png\n102/network:WFO::station:DMX::year:2006::eyear:2025::_r:t::dpi:100.png\n102/network:WFO::station:DMX::year:2025::eyear:2025::_r:t::dpi:100.png\n102/network:WFO::station:DMX::ltype:TORNADO::year:2006::eyear:2025::_r:t::dpi:100.png\n104/network:IACLIMATE::station:IATAME::date1:2024-05-07::date2:2024-08-05::days:14::days2:7::_r:t::dpi:100.png\n106/network:IA_ASOS::zstation:AMW::var:tmpf::opt:tmpf_above::date:2020-09-06::month:all::threshold:80::_r:t::dpi:100::_cb:1.png\n106/network:IA_ASOS::zstation:BNW::var:tmpf::opt:tmpf_above::date:2020-09-06::month:all::threshold:80::_r:t::dpi:100::_cb:1.png\n107/network:IACLIMATE::station:IATAME::sday:0814::eday:0828::varname:avg_temp::thres:-99::base:50::ceil:86::year:2024::_r:t::dpi:100.png\n107/network:IACLIMATE::station:IATAME::sday:0814::eday:0828::varname:precip::thres:-99::base:50::ceil:86::year:2024::_r:t::dpi:100.png\n107/network:IACLIMATE::station:IATAME::sday:0814::eday:0828::varname:avg_era5land_soilt4_avg::thres:-99::base:50::ceil:86::year:2022::_r:43::dpi:100.png\n107/network:IACLIMATE::station:IATAME::sday:1225::eday:0104::stop:32::varname:min_merra_srad::thres:-99::base:50::ceil:86::year:2024::_r:43::dpi:100.png\n107/network:IACLIMATE::station:IATAME::sday:0228::eday:0301::varname:avg_temp::thres:-99::base:50::ceil:86::year:2025::_r:t::dpi:100.png\n108/network:IACLIMATE::station:IATAME::sdate:2023-09-20::edate:2024-03-07::base:50::ceil:86::which:gdd::_r:t::dpi:100.png\n108/network:IACLIMATE::station:IATAME::sdate:2023-09-20::edate:2024-03-07::base:50::ceil:86::year2:2022::which:precip::_r:t::dpi:100.png\n108/network:IACLIMATE::station:IATAME::sdate:2023-09-20::edate:2024-03-07::base:50::ceil:86::year2:2022::year3:1929::which:sdd::_r:t::dpi:100.png\n109/by:state::sdate:2024-01-01%200000::edate:2024-07-17%202359::var:days::w:set::phenomenav1:TO::significancev1:W::e:all::cmap:jet::_r:t::dpi:100.png\n109/by:state::sdate:2024-01-01%200000::edate:2024-08-20%202359::var:count_departure::w:set::phenomenav1:SV::significancev1:W::phenomenav2:TO::significancev2:W::e:all::cmap:jet::_r:t::dpi:100.png\n109/by:wfo::sdate:2024-01-01%200000::edate:2024-09-10%202359::var:count::w:set::phenomenav1:TO::significancev1:W::e:pds::cmap:jet::_r:t::dpi:100.png\n109/by:wfo::sdate:2022-01-01%200000::edate:2024-10-07%202359::var:count_rank::w:set::phenomenav1:SV::significancev1:W::e:all::cmap:jet::_r:t::dpi:100.png\n109/by:state::sdate:2022-01-01%200000::edate:2024-10-07%202359::var:tpercent::w:set::phenomenav1:SV::significancev1:W::e:all::cmap:jet::_r:t::dpi:100.png\n109/by:wfo::sdate:2023-10-01%200000::edate:2024-07-04%202359::var:count::w:set::phenomenav1:TO::significancev1:W::e:yes::cmap:jet::_r:t::dpi:100.png\n109/by:state::sdate:2023-10-01%200000::edate:2024-07-04%202359::var:days::w:set::phenomenav1:TO::significancev1:W::e:yes::cmap:jet::_r:t::dpi:100.png\n109/by:state::sdate:2023-10-01%200000::edate:2024-07-04%202359::var:days::w:all::phenomenav1:TO::significancev1:W::e:yes::cmap:jet::_r:t::dpi:100.png\n109/by:wfo::sdate:2024-01-01%200000::edate:2024-12-24%202359::var:days::w:set::phenomenav1:SV::significancev1:W::e:all::cmap:jet::_r:t::dpi:100.png\n109/by:wfo::sdate:2024-01-01%200000::edate:2024-12-24%202359::var:tpercent::w:set::phenomenav1:SV::significancev1:W::e:all::cmap:jet::_r:t::dpi:100.png\n109/by:wfo::sdate:2023-10-01%200000::edate:2024-09-01%202359::var:count_rank::w:set::phenomenav1:SV::significancev1:W::e:all::cmap:jet::_r:t::dpi:100.png\n109/by:wfo::sdate:2023-10-01%200000::edate:2024-09-01%202359::var:count_rank::w:all::phenomenav1:SV::significancev1:W::e:all::cmap:jet::_r:t::dpi:100::_cb:1.png\n109/by:state::sdate:2023-10-01%200000::edate:2024-09-01%202359::var:days::w:set::phenomenav1:SV::significancev1:W::e:all::cmap:jet::_r:t::dpi:100.png\n109/by:state::sdate:2023-10-01%200000::edate:2024-09-01%202359::var:count_rank::w:set::phenomenav1:SV::significancev1:W::e:all::cmap:jet::_r:t::dpi:100.png\n109/by:state::sdate:2023-10-01%200000::edate:2024-09-01%202359::var:count_standard::w:set::phenomenav1:SV::significancev1:W::e:all::cmap:jet::_r:t::dpi:100.png\n109/by:state::sdate:2023-10-01%200000::edate:2024-09-01%202359::var:count_mean::w:set::phenomenav1:SV::significancev1:W::e:all::cmap:jet::_r:t::dpi:100.png\n111/_cb:1.txt\n112/_cb:1.txt\n113/network:IACLIMATE::station:IATAME::var:maxmin::year1:2023::sday:0101::eday:1231::_r:43::dpi:100.png\n113/network:IACLIMATE::station:IATAME::var:precip::sday:0101::eday:1231::_r:t::dpi:100.png\n113/network:IACLIMATE::station:IATAME::var:precip::year1:2019::sday:1001::eday:0430::_r:t::dpi:100.png\n113/network:IACLIMATE::station:IATAME::var:range::year1:2019::year2:2008::sday:1001::eday:0430::_r:t::dpi:100.png\n113/network:IACLIMATE::station:IATAME::var:means::year1:2019::year2:2008::sday:1001::eday:0430::_r:t::dpi:100.png\n114/_cb:1.txt\n115/_cb:1.xlsx\n115/station:IA0133::network:IACLIMATE::_cb:1.xlsx\n117/_cb:1.txt\n118/_cb:1.txt\n121/_cb:1.txt\n122/_cb:1.txt\n123/_cb:1.txt\n124/_cb:1.txt\n125/month:all::sector:state::src:climate81::state:IA::opt:both::var:total_snow::cmap:YlGnBu::_r:t::dpi:100.png\n125/month:summer::sector:midwest::src:ncdc_climate81::state:WI::opt:both::var:avg_temp::cmap:jet::_r:t::dpi:100.png\n127/state:IA::short_desc:CH::w:last::threshold:50::cmap:jet::_r:t::dpi:100::_cb:1.png\n128/var:total_precip::network1:IACLIMATE::station1:IATAME::network2:IACLIMATE::station2:IA0000::_r:43::dpi:100::_cb:1.png\n131/network:IA_ASOS::zstation:DSM::month:winter::var:OVC::hour:0::_r:43::dpi:100.png\n132/network:IACLIMATE::station:IATDSM::var:total_snowfall::days:1::month:nov::_r:43::dpi:100::_cb:1.png\n132/network:IACLIMATE::station:IATDSM::var:max_least_high::days:2::month:nov::_r:43::dpi:100::_cb:1.png\n133/network:IACLIMATE::station:IATDSM::date:2015-12-15::year:2000.png\n134/network:OHCLIMATE::station:OHTCMH::var:warmest_hifeel::days:4::cmap:hot_r::_r:43::dpi:100.png\n134/network:IA_ASOS::station:DSM::var:coldest_lofeel::days:7::cmap:jet::_r:t::dpi:100::_cb:1.png\n134/network:IACLIMATE::station:IATAME::var:wettest::days:7::cmap:jet::_r:t::dpi:100.png\n136/network:IA_ASOS::zstation:ALO::season:2026::wind:0::todate:yes::_r:43::dpi:100.png\n136/network:IA_ASOS::zstation:DSM::season:2000::wind:0::todate:yes::_r:43::dpi:100.png\n136/network:IA_ASOS::zstation:BNW::season:2020::wind:0::todate:yes::_r:43::dpi:100.png\n139/network:IA_ASOS::zstation:AMW::v:smallest::month:winter::_r:t::dpi:100.png\n139/network:IA_ASOS::zstation:AMW::v:largest::month:all::_r:t::dpi:100::_cb:1.png\n140/network:IA_ASOS::station:DSM::syear:1928::sday:0711::eday:0725::varname:avg_temp::w:none::thres:1::year:2024::_r:t::dpi:100.png\n140/network:IA_ASOS::station:DSM::syear:1928::sday:1101::eday:0217::varname:max_wind_gust::w:aoa::thres:15::year:2025::_r:t::dpi:100.png\n141/location:ames::ptype:rain::sdate:mar15::_r:t::dpi:100.png\n141/location:ames::ptype:maxt::sdate:mar15::_r:t::dpi:100.png\n142/network:IACLIMATE::station:IATAME::p1:31::p2:91::p3:365::sdate:1990-12-05::edate:1991-11-24::pvar:precip::how:diff::_r:43::dpi:100.png\n143/opt:state::state:IA::network:WFO::station:DMX::cmap:Greens::_r:43::dpi:100.png\n144/network:ISUSM::station:AEEI4::threshold:50::hours1:48::hours2:24::_r:t::dpi:100.png\n145/network:ISUSM::station:BOOI4::var:tsoil::year:2024::_r:t::dpi:100.png\n145/network:ISUSM::station:BOOI4::var:vwc12::year:2024::_r:t::dpi:100.png\n148/network:IACLIMATE::station:IATAME::date:mlk::thedate:0101::var:high::_r:t::dpi:100.png\n148/network:IACLIMATE::station:IATAME::date:easter::thedate:0101::var:high::_r:t::dpi:100.png\n148/network:IACLIMATE::station:IATAME::date:thanksgiving::thedate:0101::offset:1::var:high::_r:t::dpi:100.png\n148/network:IACLIMATE::station:IATAME::date:exact::thedate:1225::var:snowd::_r:43::dpi:100::_cb:1.png\n148/network:IACLIMATE::station:IATAME::date:mother::thedate:0101::var:snow::_r:t::dpi:100.png\n148/network:IACLIMATE::station:IATAME::date:labor::thedate:0101::offset:2::var:precip::_r:t::dpi:100.png\n149/network:IACLIMATE::station:IATAME::days:91::days2:13::days3:0::year2:2015::year3:2023::sdate:2024-03-03::edate:2024-08-30::_r:43::dpi:100.png\n150/network:RAOB::station:_OAX::date:2024-07-19::hour:12::which:none::h:same::var:tmpc::_r:t::dpi:100.png\n151/month:all::sector:state::state:IA::opt:both::var:total_precip::r:english::threshold:-99::opt1:diff::p1syear:2000::p1eyear:2010::p2syear:2011::p2eyear:2021::cmap:seismic_r::_r:t::dpi:100.png\n151/month:custom::sday:0814::eday:0901::sector:state::state:IA::opt:both::var:total_precip::r:english::threshold:-99::opt1:diff::p1syear:1951::p1eyear:1980::p2syear:1981::p2eyear:2010::cmap:seismic_r::_r:t::dpi:100::_cb:1.png\n151/month:custom::sday:1226::eday:0103::sector:state::state:IA::opt:both::var:total_precip::r:english::threshold:-99::opt1:diff::p1syear:1951::p1eyear:1980::p2syear:1981::p2eyear:2010::cmap:seismic_r::_r:t::dpi:100.png\n152/sector:state::state:IA::opt:both::var:season::p1syear:2014::p1eyear:2024::p2syear:2015::p2eyear:2025::cmap:seismic::_r:t::dpi:100.png\n153/network:IA_ASOS::zstation:DSM::month:all::var:min_relh::_r:t::dpi:100.png\n155/network:IA_ASOS::zstation:AMW::var:max_gust::w:all::threshold:100::month:nov::_r:t::dpi:100.png\n155/network:IA_ASOS::zstation:AMW::var:above_dwpf::w:one::threshold:10::hour:12::month:nov::_r:t::dpi:100.png\n159/network:IA_ASOS::zstation:DSM::var:tmpf::dir:aoa::thres:70::month:custom::sdate:0901::edate:0917::year:2024::syear:1920::_r:43::dpi:100::_cb:1.png\n159/network:IA_ASOS::zstation:DSM::var:gust::dir:aoa::thres:20::month:custom::sdate:1221::edate:0121::year:2020::syear:1920::_r:43::dpi:100.png\n159/network:IA_ASOS::zstation:DSM::var:gust::dir:aoa::thres:20::month:jun::sdate:1221::edate:0121::year:2020::syear:1920::_r:43::dpi:100.png\n159/network:IA_ASOS::zstation:DSM::var:gust::dir:aoa::thres:20::month:ytd::sdate:1221::edate:0121::year:2020::syear:1920::_r:43::dpi:100.png\n159/network:IA_ASOS::zstation:DSM::var:dd::dir:aoa::thres:20::month:ytd::sdate:1221::edate:0121::year:2020::syear:1920::_r:43::dpi:100.png\n160/station:GTTI4::dt:2024-08-23%201620::var:primary::w:both::_r:t::dpi:100.js\n160/station:GTTI4::dt:2024-08-23%201620::var:primary::w:both::_r:t::dpi:100.png\n161/network:IA_ASOS::zstation:AMW::var:max_dwpf::dir:aoa::thres:14::month:winter::year:2020::_r:t::dpi:100.png\n161/network:IA_ASOS::zstation:DBQ::var:max_dwpf::dir:aoa::thres:14::month:winter::year:2020::_r:t::dpi:100.png\n163/csector:midwest::var:count::sdate:2024-01-01%200000::edate:2024-08-22%200000::filter:NONE::by:wfo::cmap:plasma::lbl:yes::_r:t::dpi:100.png\n163/csector:SD::var:count::sdate:2024-01-01%200000::edate:2024-08-22%200000::filter:NONE::by:ugc::cmap:plasma::lbl:yes::_r:t::dpi:100.png\n163/csector:midwest::var:days::sdate:2024-01-01%200000::edate:2024-08-26%200000::filter:NONE::by:wfo::cmap:plasma::lbl:yes::_r:t::dpi:100.png\n163/csector:midwest::var:count_rank::sdate:2024-01-01%200000::edate:2024-08-26%200000::filter:NONE::by:wfo::cmap:plasma::lbl:yes::_r:t::dpi:100.png\n163/csector:midwest::var:count_mean::sdate:2024-01-01%200000::edate:2024-08-26%200000::filter:NONE::by:wfo::cmap:plasma::lbl:yes::_r:t::dpi:100.png\n163/csector:midwest::var:count_departure::sdate:2024-01-01%200000::edate:2024-08-26%200000::filter:NONE::by:wfo::cmap:plasma::lbl:yes::_r:t::dpi:100.png\n163/csector:midwest::var:count_standard::sdate:2024-01-01%200000::edate:2024-08-26%200000::filter:NONE::by:wfo::cmap:plasma::lbl:yes::_r:t::dpi:100.png\n163/csector:IA::var:count::sdate:2024-01-01%200000::edate:2024-09-17%200000::filter:TORNADO::by:wfo::cmap:plasma::lbl:yes::_r:t::dpi:100.png\n163/csector:IA::var:count::sdate:2024-01-01%200000::edate:2024-09-17%200000::filter:TORNADO::by:ugc::cmap:plasma::lbl:yes::_r:t::dpi:100::_cb:1.png\n163/csector:IA::var:count::sdate:2024-01-01%200000::edate:2024-09-17%200000::filter:TORNADO::by:state::cmap:plasma::lbl:yes::_r:t::dpi:100::_cb:1.png\n164/sts:2024-05-01::ets:2024-09-09::var:precip::_r:t::dpi:100.png\n164/sts:2024-05-01::ets:2024-09-09::var:high::_r:t::dpi:100.png\n165/w:air::sector:IA::var:spring_below::popt:contour::year:2020::threshold:32::cmap:BrBG::_r:t::dpi:100.png\n165/w:air::sector:IA::var:spring_below::popt:contour::year:2020::threshold:32::p:50::cmap:BrBG::_r:t::dpi:100.png\n165/w:air::sector:IA::var:high_above::popt:values::year:2020::threshold:32::p:50::sday:0824::syear:1893::eyear:2024::cmap:BrBG::_r:t::dpi:100.png\n165/w:air::sector:IA::var:spring_below::popt:contour::year:2024::threshold:32::sday:1026::cmap:BrBG::_r:t::dpi:100.png\n165/w:air::sector:AZ::var:spring_below::popt:contour::year:2024::threshold:32::sday:1026::cmap:BrBG::_r:t::dpi:100.png\n166/w:state::state:IA::network:WFO::cwa:GRB::fema:7::limit:year::_r:t::dpi:100.png\n166/w:cwa::state:IA::network:WFO::cwa:DMX::fema:7::limit:year::_r:t::dpi:100::_cb:1.png\n166/w:fema::state:IA::network:WFO::cwa:DMX::fema:7::limit:year::_r:t::dpi:100::_cb:1.png\n167/network:IA_ASOS::zstation:DSM::month:9::year:2020::_r:t::dpi:100.png\n169/network:IA_ASOS::zstation:AMW::v:tmpf::hours:24::month:winter::dir:warm::how:over::_r:t::dpi:100.png\n169/network:IA_ASOS::zstation:AMW::v:alti::hours:24::month:feb::dir:cool::how:over::_r:43::dpi:100.png\n170/network:IA_ASOS::zstation:DSM::year:2025::var:PSN::w:day::_r:t::dpi:100.png\n171/opt:ugc::network:WFO::station:MEG::state:IA::ugc:IAC169::c:single::phenomena:SV::significance:W::cmap:Greens::_r:43::dpi:100.png\n171/opt:fema::network:WFO::station:DMX::state:IA::ugc:IAC169::fema:7::c:single::phenomena:TO::significance:W::cmap:Greens::_r:t::dpi:100.png\n171/opt:ugc::network:WFO::station:DLH::state:IA::ugc:IAZ068::fema:7::c:single::phenomena:FF::significance:W::cmap:Greens::_r:t::dpi:100.png\n171/opt:wfo::network:WFO::station:_ALL::state:IA::ugc:IAZ068::fema:7::c:single::phenomena:FF::significance:W::cmap:Greens::_r:t::dpi:100.png\n172/network:IACLIMATE::station:IATAME::var:snow::year1:2024::sdate:0101::edate:0102::m:3::_r:t::dpi:100::_cb:1.png\n172/network:IACLIMATE::station:IATAME::var:gdd::base:50::ceil:86::year1:2019::sdate:0501::m:3::_r:t::dpi:100.png\n173/network:IA_ASOS::zstation:AMW::units:mph::p1:0501-0510::p2:0511-0520::_r:t::dpi:100.png\n173/network:IA_ASOS::zstation:AMW::units:mph::p1:0501-0510::p2:051124-052024::_r:t::dpi:100.png\n174/network1:IA_ASOS::zstation1:DSM::network2:IA_ASOS::zstation2:AMW::var:temp::sdate:2024-01-01::edate:2024-05-08::_r:43::dpi:100.png\n175/year:2023::thres:1.0::state:IA::_r:t::dpi:100.png\n175/year:2022::thres:1.0::state:IA::_r:t::dpi:100.png\n176/network:IACLIMATE::station:IATAME::opt:1::w:monthly::_r:t::dpi:100.png\n176/network:IACLIMATE::station:IATAME::opt:0::w:yearly::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:1::sts:2024-07-18%201000::ets:2024-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:m::sts:2024-07-18%201000::ets:2024-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:8::sts:2024-07-18%201000::ets:2024-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:3::sts:2024-07-18%201000::ets:2024-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:9::sts:2024-07-18%201000::ets:2024-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:7::sts:2024-07-18%201000::ets:2024-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:4::sts:2024-07-18%201000::ets:2024-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:AMFI4::opt:5::sts:2024-07-18%201000::ets:2024-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:AMFI4::opt:encrh::sts:2024-07-18%201000::ets:2024-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:6::sts:2024-07-18%201000::ets:2024-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:10::sts:2024-07-18%201000::ets:2024-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:11::sts:2024-07-18%201000::ets:2024-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:2::sts:2024-07-18%201000::ets:2024-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:sm::sts:2024-07-18%201000::ets:2024-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:at::sts:2024-07-18%201000::ets:2024-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:1::sts:2024-07-21%201600::ets:2024-07-22%201600::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:1::sts:2023-07-18%201000::ets:2023-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:m::sts:2023-07-18%201000::ets:2023-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:8::sts:2023-07-18%201000::ets:2023-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:3::sts:2023-07-18%201000::ets:2023-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:9::sts:2023-07-18%201000::ets:2023-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:7::sts:2023-07-18%201000::ets:2023-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:4::sts:2023-07-18%201000::ets:2023-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:AMFI4::opt:5::sts:2023-07-18%201000::ets:2023-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:AMFI4::opt:encrh::sts:2023-07-18%201000::ets:2023-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:6::sts:2023-07-18%201000::ets:2023-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:10::sts:2023-07-18%201000::ets:2023-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:11::sts:2023-07-18%201000::ets:2023-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:2::sts:2023-07-18%201000::ets:2023-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:sm::sts:2023-07-18%201000::ets:2023-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:at::sts:2023-07-18%201000::ets:2023-07-25%201000::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:1::sts:2023-07-21%201600::ets:2023-07-22%201600::_r:t::dpi:100.png\n177/network:ISUSM::station:BOOI4::opt:4iemre::sts:2023-01-01%200000::ets:2023-01-02%200000.png\n178/t:state::network:WFO::wfo:DMX::state:IA::hour:1::ilabel:yes::ts:2018-01-29%201504::cmap:gist_rainbow.png\n180/v:precip::network1:IACLIMATE::station1:IATDSM::c1:1951::network2:IACLIMATE::station2:IA0000::c2:1951::s:0::sy1:1991::ey1:2020::sy2:1981::ey2:2010::_r:43::dpi:100.png\n180/v:snow::network1:IACLIMATE::station1:IATDSM::c1:custom::network2:IACLIMATE::c2:1951::s:14::sy1:1991::ey1:2020::sy2:1981::ey2:2010::_r:t::dpi:100.png\n180/v:temps::network1:IACLIMATE::station1:IATDSM::c1:1951::network2:IACLIMATE::c2:ncei81::s:0::sy1:1991::ey1:2020::sy2:1981::ey2:2010::_r:43::dpi:100.png\n180/v:temps::network1:IACLIMATE::station1:IATDSM::c1:1951::network2:IACLIMATE::c2:ncei91::s:0::sy1:1991::ey1:2020::sy2:1981::ey2:2010::_r:43::dpi:100.png\n180/v:temps::network1:IACLIMATE::station1:IATDSM::c1:1951::network2:IACLIMATE::station2:IATDSM::c2:custom::s:0::sy1:1991::ey1:2020::sy2:1981::ey2:2010::_r:43::dpi:100.png\n181/network:IACLIMATE::station:IATAME::date:2024-10-14::year:2023::var:high::r1:50-59::r2:60%2069::r3:70%2079::r4:80%2089::r5:90%2099::_r:t::dpi:100.png\n182/sector:IA::date:2024-01-02::trailing:1::threshold:0.1::_r:t::dpi:100.png\n182/sector:IA::date:2024-09-02::trailing:31::threshold:0.1::_r:t::dpi:100.png\n183/s:national::state:IA::sdate:2023-01-12::edate:2025-01-01::_r:t::dpi:100::_cb:1.png\n184/network:IACLIMATE::station:IATAME::year:2024::limit:ytd::_r:t::dpi:100.png\n185/sector:IA::date:2024-01-01::threshold:2.0::cmap:terrain::_r:t::dpi:100.png\n185/sector:IA::date:2024-05-01::threshold:2.0::cmap:terrain::_r:t::dpi:100.png\n185/sector:IA::date:2024-06-01::threshold:2.0::cmap:terrain::_r:t::dpi:100.geotiff\n189/network:IACLIMATE::station:IATAME::plot_type:annual_sum_precip::first_year:1951::last_year:2024::linregress:yes::_r:t::dpi:100.png\n191/sdate:2024-01-01::edate:2024-09-12::w:fema::network:WFO::wfo:DMX::state:IA::fema:7::ugc:IAC169::heatmap:yes::phenomenav1:TO::significancev1:W::_r:t::dpi:100.png\n191/sdate:2024-01-01::edate:2024-06-23::daytz:12z::w:ugc::network:WFO::wfo:DMX::state:IA::fema:7::ugc:IAC169::heatmap:yes::phenomenav1:SV::significancev1:W::phenomenav2:TO::significancev2:W::_r:t::dpi:100.png\n191/sdate:2023-01-01::edate:2024-06-23::daytz:central::w:state::network:WFO::wfo:DMX::state:IA::fema:7::ugc:IAC169::heatmap:yes::phenomenav1:SV::significancev1:W::phenomenav2:TO::significancev2:W::_r:43::dpi:100.png\n192/t:state::network:WFO::wfo:STO::state:IA::v:vsby::valid:2020-06-15%201400::cmap:gray::_r:t::dpi:100.png\n192/t:state::network:WFO::wfo:DMX::state:IA::v:wetbulb::valid:2019-12-24%201500::cmap:PuRd.png\n192/t:conus::network:WFO::wfo:DMX::state:IA::v:wetbulb_awips::valid:2019-12-24%201500::cmap:PuRd.png\n193/csector:conus::date:2024-07-01::z:0::f:120::opt:both::scale:auto::cmap:gist_ncar::_r:t::dpi:100.png\n193/csector:iailin::date:2024-07-01::z:0::f:120::opt:both::scale:10::cmap:gist_ncar::_r:t::dpi:100.png\n193/csector:iailin::date:2024-07-01::z:0::f:120::opt:both::scale:3.5::cmap:gist_ncar::_r:t::dpi:100.png\n193/csector:iailin::date:2024-07-01::z:0::f:168::opt:both::scale:7::cmap:gist_ncar::_r:t::dpi:100.png\n193/csector:conus::date:2000-07-01::z:0::f:120::opt:both::scale:auto::cmap:gist_ncar::_r:t::dpi:100.png\n194/csector:midwest::sdate:2020-05-01::edate:2024-07-17::d:0::w:percent::cmap:plasma::_r:t::dpi:100.png\n195/network:WFO::wfo:DMX::p:_A::limit:ANY::_r:t::dpi:100.png\n195/network:WFO::wfo:DMX::p:MA::limit:ANY::_r:t::dpi:100.png\n196/network:IA_ASOS::station:AMW::opt:no::var:chill::_r:43::dpi:100.png\n197/csector:IA::var:corn_planting::w:avg::weeks:1::date:2021-05-09::cmap:BrBG::_r:43::dpi:100.png\n197/csector:IA::var:corn_planting::w:avg::weeks:2::date:2021-05-08::cmap:BrBG::_r:43::dpi:100.png\n198/network:RAOB::station:_OAX::hour:12::month:all::agg:avg::var:tmpc::level:500::quorum:no::_r:t::dpi:100.png\n198/network:RAOB::station:_OAX::hour:ALL::month:mjj::agg:max::var:pwater_mm::level:500::quorum:no::_r:43::dpi:100.png\n198/network:RAOB::station:_OAX::hour:12::month:spring::agg:max::var:height::level:825::quorum:yes::_r:43::dpi:100.png\n199/opt:1::date:2024-07-24::_r:t::dpi:100.png\n199/opt:2::date:2024-07-24::_r:t::dpi:100.png\n199/opt:3::date:2024-07-24::_r:t::dpi:100.png\n199/opt:4::date:2024-07-24::_r:t::dpi:100.png\n199/opt:5::date:2024-07-24::_r:t::dpi:100.png\n199/opt:6::date:2024-07-24::_r:t::dpi:100.png\n199/opt:7::date:2024-07-24::_r:t::dpi:100.png\n199/opt:8::date:2024-07-24::_r:t::dpi:100.png\n199/opt:9::date:2024-07-24::_r:t::dpi:100.png\n200/month:all::p:3.C.8::level:CATEGORICAL.SLGT::t:state::network:WFO::station:FSD::csector:midwest::fema:7::drawc:no::w:avg::sdate:2002-01-01::sday:1201::eday:0110::max:-1::cmap:jet::_r:t::dpi:100.png\n200/month:all::p:2.C.7::level:CATEGORICAL.SLGT::t:state::network:WFO::station:ABR::csector:conus::fema:7::drawc:no::w:lastyear::cmap:jet::_r:t::dpi:100.png\n200/month:all::p:2.C.7::level:CATEGORICAL.SLGT::t:fema::network:WFO::station:DMX::csector:IA::fema:7::drawc:no::w:avg::cmap:jet::_r:t::dpi:100.png\n200/month:jan::p:3.C.8::level:CATEGORICAL.SLGT::t:state::network:WFO::station:DMX::csector:southeast::drawc:no::w:avg::edate:2024-09-10::cmap:jet::_r:t::dpi:100.png\n200/month:summer::p:3.C.8::level:CATEGORICAL.SLGT::t:state::network:WFO::station:DMX::csector:southeast::drawc:no::w:avg::edate:2024-09-10::cmap:jet::_r:t::dpi:100.png\n200/month:all::p:2.C.7::level:CATEGORICAL.SLGT::t:state::network:WFO::station:ABR::csector:conus::fema:7::drawc:no::w:avg::cmap:jet::_r:t::dpi:100::_cb:1.png\n200/month:all::p:2.C.7::level:CATEGORICAL.SLGT::t:state::network:WFO::station:ABR::csector:conus::fema:7::drawc:no::w:count::cmap:jet::_r:t::dpi:100.png\n201/mode:heat::sdate:2024-07-01::edate:2024-08-16::outlook_type:C::day:1::w:all::network:WFO::wfo:STO::mystate:IA::ugc:IAZ048::g:no::_r:t::dpi:100.png\n201/mode:cal::edate:2024-07-01::ddate:2024-08-16::outlook_type:C::day:1::w:all::network:WFO::wfo:STO::mystate:IA::ugc:IAZ048::g:no::_r:t::dpi:100.png\n201/mode:cal::sdate:2024-01-01::edate:2024-08-16::outlook_type:C::day:1::w:wfo::network:WFO::wfo:STO::mystate:IA::ugc:IAZ048::g:no::_r:t::dpi:100.png\n201/mode:cal::sdate:2024-08-01::edate:2024-09-11::outlook_type:C::day:1::w:fema::network:WFO::wfo:DMX::mystate:IA::ugc:IAZ048::fema:7::g:no::_r:43::dpi:100.png\n201/mode:cal::sdate:2024-08-01::edate:2024-09-11::outlook_type:C::day:1::w:wfo::network:WFO::wfo:DMX::mystate:IA::ugc:IAZ048::fema:7::g:no::_r:43::dpi:100.png\n201/mode:cal::sdate:2025-01-01::edate:2025-04-03::outlook_type:C::day:2::w:ugc::network:WFO::wfo:MPX::mystate:IA::ugc:IAZ048::fema:7::g:no::_r:t::dpi:100.png\n201/mode:cal::sdate:2025-01-01::edate:2025-04-03::outlook_type:C::day:4::w:ugc::network:WFO::wfo:MPX::mystate:IA::ugc:IAZ048::fema:7::g:no::_r:t::dpi:100.png\n201/mode:cal::sdate:2025-01-01::edate:2025-04-03::outlook_type:F::day:3::w:ugc::network:WFO::wfo:MPX::mystate:IA::ugc:IAZ048::fema:7::g:no::_r:t::dpi:100.png\n201/mode:cal::sdate:2025-01-01::edate:2025-04-03::outlook_type:T::day:2::w:state::network:WFO::wfo:MPX::mystate:IA::ugc:IAC169::fema:7::g:no::_r:t::dpi:100.png\n201/mode:cal::sdate:2025-01-01::edate:2025-04-03::outlook_type:H::day:2::w:state::network:WFO::wfo:MPX::mystate:IA::ugc:IAC169::fema:7::g:no::_r:t::dpi:100.png\n201/mode:cal::sdate:2025-01-01::edate:2025-04-03::outlook_type:W::day:1::w:wfo::network:WFO::wfo:XXX::mystate:IA::ugc:IAC169::fema:7::g:no::_r:t::dpi:100.png\n201/mode:cal::sdate:2025-01-01::edate:2025-04-03::outlook_type:T::just:0.10::day:1::w:state::network:WFO::wfo:MPX::mystate:IA::ugc:IAC169::fema:7::g:no::_r:t::dpi:100.png\n203/typ:W::sort:W::date:2024-05-21::dpi:100.png\n203/typ:W::sort:S::date:2024-05-21::dpi:100.png\n204/var:daily_high_depart::network:IACLIMATE::station:IATAME::days:31::syear:2006::eyear:2026::cmap:RdBu::_r:t::dpi:100.png\n205/network:IA_ASOS::station:DSM::max_tmpf_above:90::max_feel_above:90::_r:t::dpi:100.png\n206/t:conus::network:WFO::wfo:DMX::state:IA::v:max_gust::p:both::day:2024-04-04::cmap:viridis::_r:t::dpi:100.png\n206/t:state::network:WFO::wfo:DMX::state:IA::v:max_gust::p:both::day:2024-04-04::cmap:viridis::_r:t::dpi:100.png\n206/t:fema::network:WFO::wfo:DMX::state:IA::v:max_gust::p:both::day:2024-04-04::cmap:viridis::_r:t::dpi:100.png\n207/v:snow::t:cwa::network:WFO::wfo:RIW::csector:TN::p:contour::endts:2025-01-20%201549::hours:12::sz:50::f:linear::z:plot::coop:yes::c:yes::ct:yes::lw:1::_r:t::dpi:100.png\n207/pz:no::v:snow::t:state::network:WFO::wfo:DMX::csector:IA::p:both::endts:2024-12-31%201800::hours:12::sz:50::f:linear::z:yes::coop:no::cocorahs:yes::c:yes::ct:yes::lw:1::_r:t::dpi:100.png\n208/network:WFO::wfo:DMX::year:2024::phenomenav:TO::significancev:W::etn:47::opt:single::n:auto::_r:43::dpi:100.png\n208/valid:2024-08-27%201717::network:WFO::wfo:DMX::year:2024::phenomenav:TO::significancev:W::etn:47::opt:single::n:off::_r:43::dpi:100.png\n210/pil:AFD::var:count::w:cwa::sts:2024-01-01%200000::ets:2025-02-05%200000::cmap:jet::_r:t::dpi:100.png\n211/ptype:precip::network:IA_ASOS::zstation:AMW::sts:2024-07-10%200000::ets:2024-07-12%202359::_r:t::dpi:100.png\n211/ptype:meteo::network:IA_ASOS::zstation:AMW::sts:2024-07-10%200000::ets:2024-07-12%202359::_r:t::dpi:100.png\n211/ptype:wind::network:IA_ASOS::zstation:AMW::sts:2024-07-10%200000::ets:2024-07-12%202359::_r:t::dpi:100.png\n211/ptype:wind::network:IA_ASOS::zstation:AMW::sts:2024-07-10%200000::ets:2024-07-12%202359::_r:t::dpi:100::_cb:1.png\n211/ptype:windkt::network:IA_ASOS::zstation:AMW::sts:2024-07-10%200000::ets:2024-07-12%202359::_r:t::dpi:100.png\n212/network:RAOB::station:_OAX::year:2024::hour:both::var:pwater_in::level:300::_r:t::dpi:100::_cb:1.png\n212/network:RAOB::station:_OAX::year:2024::hour:both::var:height::level:500::_r:t::dpi:100.png\n212/network:RAOB::station:_OAX::year:2024::hour:afternoon::var:height::level:500::_r:t::dpi:100.png\n213/network:IA_ASOS::zstation:AMW::date:2020-10-25::v:tmpf::opt:week::cmap:hsv::_r:t::dpi:100.png\n213/network:IA_ASOS::zstation:AMW::date:2020-10-25::v:relh::opt:day::cmap:hsv::_r:t::dpi:100.png\n213/network:IA_ASOS::zstation:IKV::date:2020-10-25::v:relh::opt:year::cmap:hsv::_r:t::dpi:100.png\n215/network:IACLIMATE::station:IATAME::v:avgt::month:mar::sy1:1981::ey1:2010::sy2:1991::ey2:2020::_r:43::dpi:100.png\n216/network:MA_ASOS::station:BOS::var:max_dwpf::dir:above::threshold:70::_r:43::dpi:100.png\n216/network:IA_ASOS::station:AMW::var:high::dir:below::threshold:32::_r:t::dpi:100.png\n217/pid:202408100731-KMHX-WWUS82-SPSMHX::segnum:0::_r:t::dpi:100::_cb:1.png\n217/pid:202408011023-KCAR-WWUS81-SPSCAR::segnum:0::_r:t::dpi:100::_cb:1.png\n217/pid:202408011023-KCASPSCAR::segnum:0::_r:t::dpi:100::_cb:1.png\n217/pid:202408011023-KCAR-WWUS81-SPSCAR::segnum:10::_r:t::dpi:100::_cb:1.png\n217/pid:202408011600-PAJK-WWAK87-SPSAJK::segnum:0::_r:t::dpi:100::_cb:1.png\n217/pid:606%20%20WFUS52-KTBW-%20222242%20-TORTBW-FLC053-101-222315::segnum:0::n:auto::_r:t::dpi:100.png\n218/w:set::network:NWSCLI::station:KDSM::date:2024-07-26::_r:t::dpi:100.png\n219/station:PAAA::valid:2024-08-21%200413::_r:t::dpi:100.png\n219/station:PASN::valid:2024-08-21%200413::_r:t::dpi:100.png\n219/station:PAOM::valid:2024-08-21%200413::_r:t::dpi:100.png\n219/station:KDSM::valid:2024-08-21%200413::_r:t::dpi:100.png\n220/which:1C::cat:categorical::t:state::network:WFO::wfo:STO::csector:midwest::valid:2024-08-07%201706::_r:t::dpi:100.png\n220/which:5C::cat:categorical::t:state::network:WFO::wfo:STO::csector:midwest::valid:2024-08-07%201706::_r:t::dpi:100.png\n220/which:7C::cat:categorical::t:fema::network:WFO::wfo:DMX::fema:4::csector:southeast::valid:2001-09-10%201943::_r:t::dpi:100.png\n220/which:2C::cat:categorical::t:fema::network:WFO::wfo:DMX::fema:4::csector:southeast::valid:2024-08-08%200352::_r:t::dpi:100.png\n220/which:2C::cat:hail::t:cwa::network:WFO::wfo:GSP::fema:4::csector:southeast::valid:2024-08-08%200352::_r:t::dpi:100.png\n220/which:1C::cat:hail::t:state::network:WFO::wfo:DMX::fema:7::csector:conus::valid:2024-08-03%201800::_r:t::dpi:100.png\n224/which:pop::valid:2024-05-21%202100::opt:active::_r:t::dpi:100.png\n226/network:CWSU::cwsu:ZFW::num:101::issue:2024-08-11%200000::_r:t::dpi:100::_cb:1.png\n227/pid:202410012036-KDTX-FZUS73-MWSDTX::segnum:0::_r:t::dpi:100.png\n228/mode:normal::state:IA::date:2024-01-10::d1:30::d2:60::d3:90::_r:t::dpi:100::_cb:1.png\n228/mode:iadrought::state:IA::date:2024-01-10::d1:30::d2:60::d3:90::_r:t::dpi:100.png\n230/outlook_type:F::day:2::w:all::network:WFO::wfo:RAH::mystate:IA::fema:7::ugc:IAZ048::month:spring::_r:t::dpi:100.png\n230/outlook_type:E::day:4::w:ugc::network:WFO::wfo:ABR::mystate:IA::ugc:NCC001::month:all::_r:t::dpi:100.png\n230/outlook_type:C::day:1::w:all::network:WFO::wfo:DMX::mystate:IA::ugc:IAZ048::month:all::_r:t::dpi:100.png\n230/outlook_type:C::day:1::w:wfo::network:WFO::wfo:DMX::mystate:IA::ugc:IAZ048::month:all::_r:t::dpi:100::_cb:1.png\n230/outlook_type:C::day:1::w:fema::network:WFO::wfo:DMX::mystate:IA::fema:7::ugc:IAZ048::month:all::_r:43::dpi:100.png\n231/from:2024-03-01::on:2024-04-01::days:60::state:IA::_r:t::dpi:100::_cb:1.png\n232/mode:WC::network:IA_ASOS::station:AMW::valid:2020-01-17%201200::hours:72::_r:t::dpi:100.png\n232/mode:FW::network:IA_ASOS::station:AMW::valid:2020-01-17%201200::hours:72::_r:t::dpi:100.png\n232/mode:BZ::network:IA_ASOS::station:AMW::valid:2020-01-17%201200::hours:72::_r:t::dpi:100.png\n232/mode:BZ::network:IA_ASOS::station:MCW::valid:2022-12-21%201200::hours:72::_r:t::dpi:100.png\n232/mode:FG::network:IA_ASOS::station:MCW::valid:2022-12-21%201200::hours:72::_r:t::dpi:100.png\n233/sdate:2024-01-01::edate:2024-11-25::network:WFO::wfo:_ALL::heatmap:no::_r:43::dpi:100.png\n233/sdate:2024-01-01::edate:2025-11-25::network:WFO::wfo:_ALL::heatmap:no::_r:43::dpi:100.png\n234/sdate:2024-05-01::edate:2024-06-30::filter:NONE::w:cwa::network:WFO::wfo:_ALL::state:IA::heatmap:yes::cmap:viridis::_r:43::dpi:100.png\n234/sdate:2023-05-01::edate:2024-06-30::filter:NONE::w:state::network:WFO::wfo:DMQ::state:IA::heatmap:yes::cmap:viridis::_r:43::dpi:100.png\n234/sdate:2023-05-01::edate:2024-06-30::filter:NONE::w:state::network:WFO::wfo:DMX::state:IA::heatmap:yes::cmap:viridis::_r:43::dpi:100.png\n234/sdate:2024-05-01::edate:2024-06-30::filter:NONE::w:state::network:WFO::wfo:DMX::state:IA::heatmap:yes::cmap:viridis::_r:43::dpi:100.png\n236/ident:ZMP::sdate:2024-07-31::edate:2024-08-01::_r:43::dpi:100.png\n236/ident:_ALL::sdate:2024-04-11::edate:2025-04-11::_r:t::dpi:100.png\n240/network:IACLIMATE::station:IATAME::sdate:2024-04-24::_r:t::dpi:100.png\n241/sts:2000-08-06%200900::ets:2000-08-06%200900::w:min::csector:IA::mode:user::cmap:gnuplot2::_r:t::dpi:100.png\n241/sts:2024-08-06%200900::ets:2024-08-06%200900::w:min::csector:IA::mode:user::cmap:gnuplot2::_r:t::dpi:100.png\n241/sts:2024-01-01%200000::ets:2024-01-01%200100::w:min::csector:IA::mode:user::cmap:gnuplot2::_r:t::dpi:100::_cb:1.png\n241/sts:2024-01-01%200000::ets:2024-01-01%200100::w:min::csector:AK::mode:user::cmap:gnuplot2::_r:t::dpi:100.png\n241/sts:2025-02-20%201300::ets:2025-02-23%202100::w:delta::csector:midwest::mode:user::cmap:gnuplot2::_r:43::dpi:100.png\n242/pid:202405211331-KDMX-NWUS53-LSRDMX::_r:t::dpi:100.png\n242/pid:201806210250-KDMX-NWUS53-LSRDMX::_r:t::dpi:100.png\n243/opt:fema::day:cal::month:all::network:WFO::station:DMX::state:IA::fema:7::c:single::phenomena:TO::significance:W::_r:43::dpi:100.png\n243/opt:bystate::day:cal::month:all::network:WFO::station:DMX::state:IA::fema:7::c:single::phenomena:TO::significance:W::_r:43::dpi:100.png\n243/opt:wfo::day:cal::month:oct::network:WFO::station:DMX::state:IA::fema:7::c:single::phenomena:TO::significance:W::_r:t::dpi:100.png\n243/opt:wfo::day:cal::month:octmar::network:WFO::station:DMX::state:IA::fema:7::c:single::phenomena:TO::significance:W::_r:t::dpi:100.png\n243/opt:wfo::day:cal::month:all::network:WFO::station:DMX::state:IA::fema:7::c:single::phenomena:TO::significance:W::_r:t::dpi:100.png\n243/opt:state::day:cal::month:may::network:WFO::station:DMX::state:IA::fema:7::c:single::phenomena:TO::significance:W::_r:t::dpi:100.png\n243/opt:all::day:cal::days:2::month:may::network:WFO::station:DMX::state:IA::fema:7::c:single::phenomena:TO::significance:W::_r:t::dpi:100.png\n247/valid:2024-05-24%202000::opt:within::csector:cornbelt::add:stats::sc:no::dpi:100.png\n247/valid:2024-05-24%202000::opt:active::csector:nws::add:none::sc:yes::dpi:100.png\n248/year:1986::outlook_type:C::threshold:CATEGORICAL.SLGT::day:1::opt:fema::network:WFO::wfo:DMX::fema:7::state:IA::ugc:IAZ048::overlap:0::_r:t::dpi:100.png\n248/year:1986::outlook_type:C::threshold:CATEGORICAL.SLGT::day:1::opt:wfo::network:WFO::wfo:DMX::fema:7::state:IA::ugc:IAZ048::overlap:0::_r:t::dpi:100.png\n248/year:1986::outlook_type:C::threshold:CATEGORICAL.SLGT::day:1::opt:state::network:WFO::wfo:DMX::fema:7::state:IA::ugc:IAZ048::overlap:0::_r:t::dpi:100.png\n248/year:1986::outlook_type:C::threshold:CATEGORICAL.SLGT::day:1::opt:state::network:WFO::wfo:DMX::fema:7::state:IA::ugc:IAZ048::overlap:5::_r:t::dpi:100.png\n249/csector:midwest::var:rsds::ptype:c::valid:2023-01-01%200000::cmap:magma::_r:t::dpi:100.png\n250/network1:IA_ASOS::zstation1:AMW::network2:IA_ASOS::zstation2:DSM::varname:tmpf::sts:2020-01-14%200000::ets:2020-04-14%202300::cmap:Greens::diff:0::_r:t::dpi:100.png\n250/network1:IA_ASOS::zstation1:BNW::network2:IA_ASOS::zstation2:DSM::varname:tmpf::sts:2020-01-14%200000::ets:2020-04-14%202300::cmap:Greens::diff:0::_r:t::dpi:100.png\n252/var:high::w:aoa::sector:IA::popt:contour::sday:0101::eday:1231::threshold:20::syear:2020::cmap:BrBG::_r:t::dpi:100.png\n253/datglobalid:%7B495DE596-B299-41FE-9C90-13C87E43FE0B%7D::dat:2024-05-21::cmap:gist_rainbow::_r:t::dpi:100.png\n253/datglobalid:%7B495DE596-B299-41FE-9C90-13C87E43FE0B%7D::dat:2024-05-21::cmap:gist_rainbow::_r:t::dpi:100.png\n255/network:IACLIMATE::station:IATAME::sday:0901::eday:0301::depth:1::init:1.0::loss:0.15::year:2023::_r:43::dpi:100.png\n255/network:IACLIMATE::station:IATAME::sday:0901::eday:0301::depth:1::init:1.0::loss:0.15::year:1803::_r:43::dpi:100.png\n255/network:IACLIMATE::station:IA0157::sday:0901::eday:0301::depth:1::init:1.0::loss:0.15::year:2023::_r:43::dpi:100.png\n256/fmt:text::date:2024-10-22::by:wfo::wfo:DMX.txt\n256/fmt:text::date:2024-12-31::by:state::state:IA.txt\n257/valid:2024-10-29%200000::shade:no::csector:midwest::cmap:afmhot_r::_r:t::dpi:100.png\n257/valid:2024-08-16%201700::shade:yes::csector:southeast::cmap:afmhot_r::_r:t::dpi:100.png\n258/valid:2024-08-02::outlook_type:C::lat:42.0::lon:-95.0::_r:t::dpi:100::_cb:1.png\n258/valid:2024-08-03::outlook_type:C::lat:45.4::lon:-95.8::_r:43::dpi:100.png\n259/ugc:CAZ509::fire:yes::_r:t::dpi:100::_cb:1.png\n260/opt:wfo::sts:2024-05-01%200000::ets:2024-05-31%200000::network:WFO::wfo:DMX::csector:midwest::fema:7::c:single::phenomena:FF::significance:W::_r:t::dpi:100::_cb:1.png\n260/opt:csector::sts:2024-05-01%200000::ets:2024-05-31%200000::network:WFO::wfo:DMX::csector:NE::fema:7::c:single::phenomena:TO::significance:W::_r:t::dpi:100::_cb:1.png\n260/opt:fema::sts:2024-05-01%200000::ets:2024-05-31%200000::network:WFO::wfo:DMX::csector:NE::fema:7::c:single::phenomena:TO::significance:W::_r:t::dpi:100::_cb:1.png\n260/opt:data::sts:2024-05-01%200000::ets:2024-05-31%200000::network:WFO::wfo:DMX::csector:NE::fema:7::c:single::phenomena:TO::significance:W::_r:t::dpi:100.png\n260/geo:cbw::opt:csector::sts:2018-06-01%200000::ets:2018-06-30%200000::network:WFO::wfo:DMX::csector:IA::fema:7::c:single::phenomena:TO::significance:W::_r:t::dpi:100::_cb:1.png\n260/geo:cbw::opt:wfo::sts:2024-05-01%200000::ets:2024-05-30%200000::network:WFO::wfo:DMX::csector:IA::fema:7::c:single::phenomena:TO::significance:W::_r:t::dpi:100.png\n261/tzwhich:utc::network:WFO::wfo:DMX::pil:AFD::syear:2024::eyear:2025::_r:86::dpi:100::_cb:1.png\n261/tzwhich:local::network:WFO::wfo:DMX::pil:AFD::syear:2024::eyear:2025::_r:86::dpi:100::_cb:1.png\n"
  },
  {
    "path": "tests/iemweb/autoplot/urllist_index.txt",
    "content": "?nothing\n?q=51\n?q=253\n?q=230\n?q=175&year=2024&thres=1.0&state=AK&_r=t&dpi=100&_fmt=png"
  },
  {
    "path": "tests/iemweb/current/test_live.py",
    "content": "\"\"\"Test the current/live.py service.\"\"\"\n\nfrom io import BytesIO\n\nfrom iemweb.current import live\nfrom PIL import Image\nfrom pytest_httpx import HTTPXMock\nfrom werkzeug.test import Client\n\n\ndef test_offline():\n    \"\"\"Test for a webcam that is offline.\"\"\"\n    client = Client(live.application)\n    response = client.get(\"/current/live.py?id=KCRG-002\")\n    assert response.status_code == 200\n\n\ndef test_workflow(httpx_mock: HTTPXMock):\n    \"\"\"Test we can fetch an image.\"\"\"\n    image = Image.new(\"RGB\", (320, 240), (73, 109, 137))\n    buf = BytesIO()\n    image.save(buf, format=\"JPEG\")\n    image_bytes = buf.getvalue()\n    httpx_mock.add_response(\n        status_code=200,\n        content=image_bytes,\n    )\n    client = Client(live.application)\n    response = client.get(\"/current/live.py?id=KCRG-032\")  # is_vapix\n    assert response.status_code == 200\n\n\ndef test_badauth(httpx_mock: HTTPXMock):\n    \"\"\"Test that we handle bad auth.\"\"\"\n    httpx_mock.add_response(status_code=401)\n    client = Client(live.application)\n    response = client.get(\"/current/live.py?id=KCRG-003\")\n    assert response.status_code == 200\n\n\ndef test_live_webcam_image():\n    client = Client(live.application)\n    response = client.get(\"/current/live.py?id=KCCI-099\")\n    assert response.status_code == 200\n    assert response.content_type == \"image/jpeg\"\n"
  },
  {
    "path": "tests/iemweb/geojson/test_geojson_index.py",
    "content": "\"\"\"Test specialized things we are attempting to handle.\"\"\"\n\nfrom functools import partial\n\nimport pytest\nfrom iemweb.dispatch import dispatch_namespace\nfrom werkzeug.test import Client\n\n\n@pytest.fixture\ndef myapp():\n    \"\"\"Return our application.\"\"\"\n    return partial(dispatch_namespace, \"geojson\")\n\n\ndef test_invalid(myapp):\n    \"\"\"Test that invalid request goes to our /api/ page.\"\"\"\n    c = Client(myapp, response_wrapper=None)\n    resp = c.get(\"/yo_yo_yo\")\n    assert resp.status_code == 301\n\n\ndef test_7am(myapp):\n    \"\"\"Test a poor live choice.\"\"\"\n    c = Client(myapp, response_wrapper=None)\n    resp = c.get(\"/7am.geojson\")\n    assert resp.status_code == 200\n\n\ndef test_network_obs(myapp):\n    \"\"\"Test that this gets redirected.\"\"\"\n    c = Client(myapp, response_wrapper=None)\n    resp = c.get(\"/network_obs.php\")\n    assert resp.status_code == 302\n\n\ndef test_nexrad_attr_csv(myapp):\n    \"\"\"Test another one off.\"\"\"\n    c = Client(myapp, response_wrapper=None)\n    resp = c.get(\"/nexrad_attr.csv\")\n    assert resp.status_code == 200\n    assert \",\" in resp.text\n\n\ndef test_network(myapp):\n    \"\"\"Try this.\"\"\"\n    c = Client(myapp, response_wrapper=None)\n    resp = c.get(\"/network/IA_ASOS.geojson\")\n    assert \"features\" in resp.get_json()\n"
  },
  {
    "path": "tests/iemweb/geojson/test_sbw.py",
    "content": "\"\"\"Test geojson/sbw.py service.\"\"\"\n\nimport json\n\nfrom iemweb.geojson.sbw import application\nfrom werkzeug.test import Client\n\n\ndef test_260410_ts_at_issue():\n    \"\"\"Test that we get a warning issued at the given timestamp.\"\"\"\n    c = Client(application)\n    resp = c.get(\"?ts=2018-06-20T20:02:00Z\")\n    jdata = resp.get_json()\n    found = False\n    for feat in jdata[\"features\"]:\n        if feat[\"properties\"][\"eventid\"] == 21:\n            found = True\n    assert found\n\n\ndef test_250102_ts_not_working():\n    \"\"\"Test a failure found in prod.\"\"\"\n    c = Client(application)\n    res = c.get(\"?ts=2024-05-21T20:00:00Z\")\n    assert res is not None\n    jdata = json.loads(res.data.decode(\"utf-8\"))\n    assert jdata is not None\n    assert jdata[\"features\"]\n"
  },
  {
    "path": "tests/iemweb/iembot/test_mastodon.py",
    "content": "\"\"\"Exercise the mastodon configuration somewhat.\"\"\"\n\nimport responses\nfrom iemweb.projects.iembot.mastodon.index import (\n    application,\n)\nfrom werkzeug.test import Client\n\n# iem-database has a test entry for this.\nTEST_HOST = \"masto.globaleas.org\"\n\n\ndef test_no_server_provided():\n    \"\"\"Test request without a server set.\"\"\"\n    client = Client(application)\n    resp = client.get(\"/projects/iembot/mastodon/\")\n    assert resp.status_code == 200\n    assert b\"Enter your Mastodon\" in resp.data\n\n\ndef test_simple():\n    \"\"\"Walk before we run here.\"\"\"\n    client = Client(application)\n    with responses.RequestsMock() as rsps:\n        rsps.add(\n            responses.GET,\n            f\"https://{TEST_HOST}/.well-known/oauth-authorization-server\",\n            status=200,\n            json={\n                \"authorization_endpoint\": (\n                    f\"https://{TEST_HOST}/oauth/authorize\"\n                ),\n                \"token_endpoint\": f\"https://{TEST_HOST}/oauth/token\",\n            },\n        )\n        resp = client.get(f\"?s={TEST_HOST}\")\n        assert resp.status_code == 307\n\n\ndef test_oauth_code():\n    \"\"\"Test the callback when oauth is done.\"\"\"\n    client = Client(application)\n    with responses.RequestsMock() as rsps:\n        rsps.add(\n            responses.GET,\n            f\"https://{TEST_HOST}/.well-known/oauth-authorization-server\",\n            status=200,\n            json={\n                \"authorization_endpoint\": (\n                    f\"https://{TEST_HOST}/oauth/authorize\"\n                ),\n                \"token_endpoint\": f\"https://{TEST_HOST}/oauth/token\",\n                \"grant_types_supported\": [\"authorization_code\"],\n            },\n        )\n        rsps.add(\n            responses.POST,\n            f\"https://{TEST_HOST}/oauth/token\",\n            status=200,\n            json={\n                \"access_token\": \"fake_access_token\",\n                \"token_type\": \"Bearer\",\n                \"scope\": \"read write follow push\",\n            },\n        )\n        rsps.add(\n            responses.GET,\n            f\"https://{TEST_HOST}/api/v2/instance/\",\n            status=200,\n            json={\n                \"version\": \"4.4.3\",\n                \"api_versions\": {\"mastodon\": 6},\n                \"domain\": TEST_HOST,\n            },\n        )\n        rsps.add(\n            responses.GET,\n            f\"https://{TEST_HOST}/api/v1/accounts/verify_credentials\",\n            status=200,\n            json={\n                \"id\": 12345,\n                \"username\": \"testuser\",\n                \"acct\": \"testuser\",\n                \"display_name\": \"Test User\",\n            },\n        )\n        resp = client.get(f\"?code=fake_code&s={TEST_HOST}\")\n        assert resp.status_code == 200\n"
  },
  {
    "path": "tests/iemweb/json/test_json_index.py",
    "content": "\"\"\"Test specialized things we are attempting to handle.\"\"\"\n\nfrom functools import partial\n\nfrom iemweb.dispatch import dispatch_namespace\nfrom werkzeug.test import Client\n\napplication = partial(dispatch_namespace, \"json\")\n\n\ndef test_invalid():\n    \"\"\"Test that invalid request goes to our /api/ page.\"\"\"\n    c = Client(application, response_wrapper=None)\n    resp = c.get(\"/yo_yo_yo\")\n    assert resp.status_code == 301\n\n\ndef test_raob():\n    \"\"\"Test The raob rewrite.\"\"\"\n    c = Client(application, response_wrapper=None)\n    resp = c.get(\"/raob/202603100000/KALB\")\n    assert resp.status_code == 200\n\n\ndef test_stage4():\n    \"\"\"Test the stage4 rewrite.\"\"\"\n    c = Client(application, response_wrapper=None)\n    resp = c.get(\"/stage4/-97.5/40.0/2026-03-01\")\n    assert \"gridi\" in resp.get_json()\n    assert resp.status_code == 200\n\n\ndef test_index_php():\n    \"\"\"Test that index.php does not go into recursion.\"\"\"\n    c = Client(application, response_wrapper=None)\n    resp = c.get(\"/index.php\")\n    assert resp.status_code == 301\n"
  },
  {
    "path": "tests/iemweb/json/test_radar.py",
    "content": "\"\"\"Test things with the json/radar service.\"\"\"\n\nfrom pathlib import Path\n\nfrom iemweb.json import radar\nfrom pyiem.util import utc\nfrom werkzeug.test import Client\n\n\ndef test_ridge_available(tmp_path, monkeypatch):\n    \"\"\"Test we get products back for an availability request.\"\"\"\n    utcnow = utc(2010, 1, 1)\n    monkeypatch.setattr(radar, \"BASEDIR\", str(tmp_path))\n    n0qfn = (\n        Path(radar.BASEDIR)\n        / f\"{utcnow:%Y}\"\n        / f\"{utcnow:%m}\"\n        / f\"{utcnow:%d}\"\n        / \"GIS\"\n        / \"ridge\"\n        / \"ARX\"\n        / \"N0Q\"\n        / f\"ARX_N0Q_{utcnow:%Y%m%d0000}.png\"\n    )\n    Path(n0qfn).parent.mkdir(parents=True, exist_ok=True)\n    with open(n0qfn, \"w\") as fh:\n        fh.write(\"foo\")\n    c = Client(radar.application)\n    # 1. List RADARs\n    resp = c.get(\"?operation=available&start=2010-01-01T00:00Z\")\n    assert resp.status_code == 200\n    assert any(x[\"id\"] == \"ARX\" for x in resp.get_json()[\"radars\"])\n    # 2. List Products\n    resp = c.get(\"?operation=products&start=2010-01-01T00:00Z&radar=ARX\")\n    assert resp.status_code == 200\n    assert any(x[\"id\"] == \"N0Q\" for x in resp.get_json()[\"products\"])\n    # 3. List Scans\n    resp = c.get(\n        \"?operation=list&start=2010-01-01T00:00Z&radar=ARX&product=N0Q\"\n    )\n    assert resp.status_code == 200\n    needle = utcnow.strftime(\"%Y-%m-%dT%H:%MZ\")\n    assert any(x[\"ts\"] == needle for x in resp.get_json()[\"scans\"])\n"
  },
  {
    "path": "tests/iemweb/json/test_spcoutlook.py",
    "content": "\"\"\"test iemweb.json.spcoutlook\"\"\"\n\nfrom iemweb.json.spcoutlook import application\nfrom werkzeug.test import Client\n\n\ndef test_simple():\n    \"\"\"Test something simple\"\"\"\n    c = Client(application)\n    for fmt in [\"csv\", \"excel\", \"json\"]:\n        res = c.get(data={\"fmt\": fmt})\n        assert res.status_code == 200\n"
  },
  {
    "path": "tests/iemweb/onsite/test_features.py",
    "content": "\"\"\"Test things with iemweb.onsite.features\"\"\"\n\nfrom iemweb.onsite.features.content import application as content_app\nfrom iemweb.onsite.features.vote import application as vote_app\nfrom werkzeug.test import Client\n\n\ndef test_invalid_request():\n    \"\"\"Test request without a URL set.\"\"\"\n    client = Client(content_app, response_wrapper=None)\n    response = client.get(\"\")\n    assert response.status_code == 422\n    assert \"Missing parameters\" in response.text\n\n\ndef test_content_nofile():\n    \"\"\"Test the generated image placeholder.\"\"\"\n    client = Client(content_app, response_wrapper=None)\n    response = client.get(\"/onsite/features/2000/03/220325.png\")\n    assert response.status_code == 404\n\n\ndef test_content_hasfile():\n    \"\"\"Test the image returned.\"\"\"\n    client = Client(content_app, response_wrapper=None)\n    response = client.get(\"/onsite/features/2022/03/220325.png\")\n    assert response.status_code == 200\n\n\ndef test_http_range_bytes_request():\n    \"\"\"Test the image returned.\"\"\"\n    client = Client(content_app, response_wrapper=None)\n    response = client.get(\n        \"/onsite/features/2022/03/220325.png\",\n        headers={\"Range\": \"bytes=0-100\"},\n    )\n    assert response.status_code == 206\n    assert response.headers[\"Content-Range\"] == \"bytes 0-100/59811\"\n    assert response.headers[\"Content-Length\"] == \"101\"\n\n\ndef test_vote():\n    \"\"\"Test that we can vote.\"\"\"\n    client = Client(vote_app, response_wrapper=None)\n    response = client.get(\"/onsite/features/vote.py?vote=good\")\n    assert response.status_code == 200\n\n\ndef test_novote():\n    \"\"\"Test when we don't vote at all.\"\"\"\n    client = Client(vote_app, response_wrapper=None)\n    response = client.get(\"/onsite/features/vote.py\")\n    assert response.status_code == 200\n"
  },
  {
    "path": "tests/iemweb/request/gis/test_lsr.py",
    "content": "\"\"\"test cgi-bin/request/gis/lsr.py\"\"\"\n\nfrom iemweb.request.gis.lsr import application\nfrom werkzeug.test import Client\n\n\ndef test_csv_empty():\n    \"\"\"Test that we get back an empty CSV result.\"\"\"\n    c = Client(application)\n    res = c.get(\"?sts=2024-07-18T11:58:00Z&ets=2024-07-18T11:59:00Z&fmt=csv\")\n    assert res.status_code == 200\n    assert res.get_data(as_text=True).find(\"REMARK\") > 0\n"
  },
  {
    "path": "tests/iemweb/request/gis/test_watchwarn.py",
    "content": "\"\"\"test cgi-bin/request/gis/watchwarn.py\"\"\"\n\nfrom iemweb.request.gis.watchwarn import application\nfrom lxml import etree\nfrom werkzeug.test import Client\n\n\ndef test_valid_kml():\n    \"\"\"Test that we get back an empty CSV result.\"\"\"\n    c = Client(application)\n    res = c.get(\n        \"?accept=kml&at=2024-05-21T21:20Z&timeopt=2&limitps=1\"\n        \"&phenomena=TO&significance=W\"\n    )\n    assert res.status_code == 200\n    doc = etree.fromstring(res.data)\n    assert doc.tag == \"{http://www.opengis.net/kml/2.2}kml\"\n"
  },
  {
    "path": "tests/iemweb/request/test_asos.py",
    "content": "\"\"\"Test iemweb.request.asos module.\"\"\"\n\nfrom iemweb.request.asos import application\nfrom werkzeug.test import Client\n\n\ndef test_asos_request():\n    \"\"\"Test too much data with the request.\"\"\"\n    client = Client(application, None)\n    resp = client.get(\n        \"?sts=1900-01-01T00:00Z\"\n        \"&station=AWM,DSM,ALO,OTM,BRL,DBQ,CID,IOW,MCW,MIW\"\n        \"&ets=2026-01-01T00:00Z&format=comma\"\n    )\n    # exhaust the generator for coverage purposes\n    list(resp.response)\n    assert resp.status_code == 400\n\n\ndef test_asos_alldata_greater_than_24hours():\n    \"\"\"Test that we don't allow this request either.\"\"\"\n    client = Client(application, None)\n    resp = client.get(\n        \"?sts=1900-01-01T00:00Z&ets=2026-01-01T00:00Z&format=comma\"\n    )\n    # exhaust the generator for coverage purposes\n    list(resp.response)\n    assert resp.status_code == 400\n"
  },
  {
    "path": "tests/iemweb/request/test_coop.py",
    "content": "\"\"\"Test iemweb.request.coop module.\"\"\"\n\nfrom datetime import date\n\nimport pytest\nfrom iemweb.request.coop import (\n    do_apsim,\n    do_century,\n    do_daycent,\n    do_dndc,\n    do_salus,\n    do_simple,\n    do_swat,\n)\n\n\n@pytest.mark.parametrize(\"database\", [\"coop\"])\ndef test_simple(dbcursor):\n    \"\"\"Test the requests.\"\"\"\n    ctx = {\n        \"what\": \"simple\",\n        \"stations\": [\"IATDSM\"],\n        \"scenario_sts\": date(2023, 12, 2),\n        \"scenario_ets\": date(2023, 12, 31),\n        \"scenario_year\": 2023,\n        \"sts\": date(2020, 1, 1),\n        \"ets\": date(2020, 12, 1),  # Note we wish to fill out the year\n        \"inclatlon\": True,\n        \"gis\": True,\n        \"myvars\": [],\n        \"with_header\": True,\n        \"scenario\": True,\n        \"delim\": \"comma\",\n    }\n    res = do_simple(dbcursor, ctx)\n    assert len(res.decode(\"ascii\").strip().split(\"\\n\")) == (366 + 6)\n    for f in [\n        do_apsim,\n        do_century,\n        do_daycent,\n        do_dndc,\n        do_salus,\n        do_swat,\n    ]:\n        res = f(dbcursor, ctx)\n        assert res is not None\n"
  },
  {
    "path": "tests/iemweb/request/test_maxcsv.py",
    "content": "\"\"\"Test things in request/maxcsv.py\"\"\"\n\nimport numpy as np\nfrom iemweb.request.maxcsv import figure_phase\n\n\ndef test_moon_phase_calc():\n    \"\"\"Test the moon phase calculation\"\"\"\n    # lame\n    for p1 in np.arange(0, 1.1, 0.1):\n        for p2 in np.arange(0, 1.1, 0.1):\n            assert figure_phase(p1, p2) is not None\n"
  },
  {
    "path": "tests/iemweb/request/test_metars.py",
    "content": "\"\"\"Test iemweb.request.metars module.\"\"\"\n\nfrom iemweb.request import metars\nfrom werkzeug.test import Client\n\n\ndef test_load():\n    \"\"\"Test the requests.\"\"\"\n    c = Client(metars.application)\n    metars.SIMULTANEOUS_REQUESTS = -1\n    resp = c.get(\"/request/metars.py?valid=2020070100\")\n    metars.SIMULTANEOUS_REQUESTS = 10\n    assert resp.status_code == 503\n"
  },
  {
    "path": "tests/iemweb/test_afos.py",
    "content": "\"\"\"Exercise some things with afos/retrieve.py\"\"\"\n\nfrom iemweb.afos import retrieve\nfrom werkzeug.test import Client\n\n\ndef test_dsm_throttle():\n    \"\"\"Smoke test some code paths..\"\"\"\n    client = Client(retrieve.application)\n    eo = {\"REMOTE_ADDR\": \"7.7.7.7\"}\n    response = client.get(\n        \"/cgi-bin/afos/retrieve.py?pil=DSM\", environ_overrides=eo\n    )\n    assert response.status_code in [200, 429]\n\n\ndef test_query_timeout():\n    \"\"\"Test that we get a 503 when goosing the timeout.\"\"\"\n    original = retrieve.STATEMENT_TIMEOUT\n    try:\n        retrieve.STATEMENT_TIMEOUT = \"1ms\"\n        client = Client(retrieve.application)\n        eo = {\"REMOTE_ADDR\": \"7.7.7.8\"}\n        response = client.get(\n            \"/cgi-bin/afos/retrieve.py?pil=AFD\", environ_overrides=eo\n        )\n        assert response.status_code == 503\n    finally:\n        # Set it back for future tests to not be affected.\n        retrieve.STATEMENT_TIMEOUT = original\n"
  },
  {
    "path": "tests/iemweb/test_all_application.py",
    "content": "\"\"\"Smoke test anything with an application method.\"\"\"\n\nimport importlib\nimport pkgutil\n\nimport pytest\nfrom werkzeug.test import Client\n\n\ndef get_services(package_name):\n    \"\"\"Yield a list of modules with an 'application' attribute.\"\"\"\n    root = importlib.import_module(package_name)\n    for _, name, is_pkg in pkgutil.iter_modules(root.__path__):\n        mod = importlib.import_module(f\"{package_name}.{name}\")\n        if is_pkg:\n            yield from get_services(f\"{package_name}.{name}\")\n            continue\n        if hasattr(mod, \"application\"):\n            yield mod.application, f\"{package_name}.{name}\"\n\n\n@pytest.mark.parametrize((\"application\", \"appname\"), get_services(\"iemweb\"))\ndef test_all(application, appname: str):\n    \"\"\"Test all apps.\"\"\"\n    c = Client(application)\n    res = c.get()\n    # appname is useful for the pytest failure message, this appeases linters\n    assert appname.startswith(\"iemweb\")\n    # 422 when a required parameter was not provided, which is fine\n    # 301 when the app is upset about being approached via http\n    assert res.status_code in [200, 301, 422]\n"
  },
  {
    "path": "tests/iemweb/test_dispatch.py",
    "content": "\"\"\"Tests for the shared /json, /geojson, and /search dispatcher.\"\"\"\n\nfrom iemweb.dispatch import application\nfrom werkzeug.test import Client\n\n\ndef test_shared_json_mount():\n    \"\"\"Ensure the shared handler dispatches /json via SCRIPT_NAME.\"\"\"\n    client = Client(application, response_wrapper=None)\n    response = client.get(\n        \"/stage4/-97.5/40.0/2026-03-01\",\n        environ_overrides={\"SCRIPT_NAME\": \"/json\"},\n    )\n    assert response.status_code == 200\n    assert \"gridi\" in response.get_json()\n\n\ndef test_shared_geojson_mount():\n    \"\"\"Ensure the shared handler dispatches /geojson via SCRIPT_NAME.\"\"\"\n    client = Client(application, response_wrapper=None)\n    response = client.get(\n        \"/network_obs.php\",\n        environ_overrides={\"SCRIPT_NAME\": \"/geojson\"},\n    )\n    assert response.status_code == 302\n\n\ndef test_direct_search_route():\n    \"\"\"Ensure /search dispatches directly to iemweb.search via PATH_INFO.\"\"\"\n    client = Client(application, response_wrapper=None)\n    response = client.get(\"/search?q=DSM\")\n    assert response.status_code == 302\n"
  },
  {
    "path": "tests/iemweb/test_doc_urls.py",
    "content": "\"\"\"Run doctests for what is found via introspection.\"\"\"\n\nimport importlib\nimport pkgutil\n\nimport pytest\nfrom docutils.core import publish_string\nfrom werkzeug.test import Client\n\n\ndef get_mods_and_urls():\n    \"\"\"yield up things we can run.\"\"\"\n    import iemweb\n\n    package = iemweb\n    prefix = package.__name__ + \".\"\n    for _importer, modname, _ispkg in pkgutil.walk_packages(\n        package.__path__, prefix\n    ):\n        mod = importlib.import_module(modname)\n        doc = mod.__doc__\n        # Typically apache mod_rewrite is not available\n        if doc is None or doc.find(\"NODOCTEST\") > 0:\n            continue\n        for line in doc.split(\"\\n\"):\n            if not line.strip().startswith(\n                \"https://mesonet.agron.iastate.edu/\"\n            ):\n                continue\n            cgi = \"\" if line.find(\"?\") == -1 else line.split(\"?\")[1]\n            yield mod, f\"?{cgi}\"\n\n\n@pytest.mark.parametrize((\"mod\", \"cgi\"), get_mods_and_urls())\ndef test_docutils_publish_string(mod, cgi):\n    \"\"\"Test that docutils can render __doc__ without any warnings.\"\"\"\n    # mark cgi as used so linters don't complain; it's only relevant\n    # for test ids\n    _ = cgi\n    res = publish_string(source=mod.__doc__, writer=\"html\").decode(\"utf-8\")\n    pos = res.find(\"System Message\")\n    if pos > 0:\n        print(res[pos : pos + 100])\n    assert res.find(\"System Message\") == -1\n\n\n@pytest.mark.parametrize((\"mod\", \"cgi\"), get_mods_and_urls())\ndef test_urls(mod, cgi):\n    \"\"\"Test what is found via introspection.\"\"\"\n    if not hasattr(mod, \"application\"):\n        return\n    c = Client(mod.application)\n    res = c.get(cgi, headers={\"Referer\": \"http://iem.local\"})\n    # Allow apps that redirect to check OK\n    assert res.status_code in [200, 302]\n\n    # If the response is JSON, ensure the NaN string does not appear\n    ct = res.headers.get(\"Content-Type\", \"\")\n    if ct.find(\"json\") != -1:\n        assert res.data.find(b\"NaN\") == -1\n"
  },
  {
    "path": "tests/iemweb/test_fields.py",
    "content": "\"\"\"Test some field heuristics.\"\"\"\n\nimport pytest\nfrom iemweb.fields import (\n    STATION_LIST_FIELD,\n    TZ_FIELD,\n)\nfrom pydantic import BaseModel, ValidationError\n\n\n@pytest.fixture\ndef station_model():\n    \"\"\"Return a basemodel for testing.\"\"\"\n\n    class Model(BaseModel):\n        station: STATION_LIST_FIELD\n        tz: TZ_FIELD = \"UTC\"\n\n    return Model\n\n\ndef test_tz_aliases(station_model):\n    \"\"\"Test that these are handled.\"\"\"\n    assert station_model(station=\"A\", tz=\"\").tz == \"UTC\"\n    assert station_model(station=\"A\", tz=\"etc/utc\").tz == \"UTC\"\n\n\ndef test_bad_tz(station_model):\n    \"\"\"Test that this fails validation.\"\"\"\n    with pytest.raises(ValidationError, match=\"Unknown timezone: BAD!TZ\"):\n        station_model(station=\"A\", tz=\"BAD!TZ\")\n\n\ndef test_no_station(station_model):\n    \"\"\"Test what happens when no station is provided\"\"\"\n    with pytest.raises(ValidationError, match=\"Field required\"):\n        station_model()\n\n\ndef test_station_list_field(station_model):\n    \"\"\"Test the station list field.\"\"\"\n    assert station_model(station=\"DSM\").station == [\"DSM\"]\n    assert station_model(station=\"DSM, OMA\").station == [\"DSM\", \"OMA\"]\n    assert station_model(station=\" DSM , oMA \").station == [\"DSM\", \"OMA\"]\n    assert station_model(station=[\"DSM \", \"OMA\"]).station == [\"DSM\", \"OMA\"]\n\n\ndef test_naughty_station_list_field(station_model):\n    \"\"\"That that these fail validation\"\"\"\n    with pytest.raises(ValueError, match=\"Invalid parameter\"):\n        station_model(station=\"DSM, OMA, BAD!STN\")\n    with pytest.raises(ValueError, match=\"Invalid parameter\"):\n        station_model(station=\"BAD!STN\")\n"
  },
  {
    "path": "tests/iemweb/test_iemweb_urls.py",
    "content": "\"\"\"Process urls.txt into mod_wsgi requests.\"\"\"\n\nimport importlib\nimport os\n\nimport pytest\nfrom werkzeug.test import Client\n\n\ndef get_mods_and_urls(extra=\"\"):\n    \"\"\"yield up things we can run.\"\"\"\n    with open(f\"{os.path.dirname(__file__)}/urls{extra}.txt\") as fh:\n        for line in fh:\n            if line.startswith(\"#\") or line.strip() == \"\":\n                continue\n            modname = (\n                line.replace(\"/cgi-bin\", \"\")\n                .split(\"?\")[0]\n                .rsplit(\".\", maxsplit=1)[0]\n                .replace(\"/\", \".\")\n            )\n            cgi = \"\"\n            if line.find(\"?\") > 0:\n                cgi = line.split(\"?\")[1]\n            mod = importlib.import_module(f\"iemweb{modname}\")\n            yield mod.application, f\"?{cgi}\"\n\n\n@pytest.mark.parametrize(\"arg\", get_mods_and_urls())\ndef test_urls(arg):\n    \"\"\"Test what urls.txt tells us to.\"\"\"\n    c = Client(arg[0])\n    res = c.get(arg[1])\n    # Allow apps that redirect to check OK\n    assert res.status_code in [200, 301, 302]\n\n\n@pytest.mark.parametrize(\"arg\", get_mods_and_urls(\"422\"))\ndef test_urls422(arg):\n    \"\"\"Test what urls422.txt tells us to.\"\"\"\n    c = Client(arg[0])\n    res = c.get(arg[1])\n    assert res.status_code == 422\n"
  },
  {
    "path": "tests/iemweb/test_module.py",
    "content": "\"\"\"Test iemweb module.\"\"\"\n\nimport iemweb\n\n\ndef test_api():\n    \"\"\"Can we import the iemweb module?\"\"\"\n    assert iemweb.__version__ is not None\n"
  },
  {
    "path": "tests/iemweb/test_proxy_error_handler.py",
    "content": "\"\"\"Test the handler, sort of.\"\"\"\n\nfrom iemweb.proxy_error_handler import application\nfrom werkzeug.test import Client\n\n\ndef test_simple():\n    \"\"\"Test simple.\"\"\"\n    c = Client(application)\n    res = c.get(\"/\")\n    assert res.status_code == 200\n"
  },
  {
    "path": "tests/iemweb/test_util.py",
    "content": "\"\"\"Test iemweb.util functions.\"\"\"\n\nimport os\nfrom pathlib import Path\nfrom unittest.mock import patch\n\nfrom iemweb.util import acquire_slot, month2months, release_slot\n\n\ndef test_slot_acquiring():\n    \"\"\"Test that we can acquire and release a slot.\"\"\"\n    res = acquire_slot(\"test\", 1)\n    assert res is not None\n    release_slot(res)\n\n\ndef test_too_many_requests():\n    \"\"\"Test the failure.\"\"\"\n    res1 = acquire_slot(\"test\", 1)\n    assert res1 is not None\n    res2 = acquire_slot(\"test\", 1)\n    assert res2 is None\n    release_slot(res1)\n\n\ndef test_acquire_slot_creates_lock_directory():\n    \"\"\"Test that acquire_slot creates the lock directory if needed.\"\"\"\n    # Use a unique test name that doesn't exist yet\n    test_name = f\"test_create_dir_{os.getpid()}\"\n\n    # The function should create /tmp/test_create_dir_<pid>\n    expected_dir = Path(\"/tmp\") / test_name\n\n    # Clean up if it exists from previous test\n    if expected_dir.exists():\n        import shutil\n\n        shutil.rmtree(expected_dir)\n\n    res = acquire_slot(test_name, 1)\n    assert res is not None\n    assert expected_dir.exists()\n    release_slot(res)\n\n    # Clean up\n    import shutil\n\n    shutil.rmtree(expected_dir)\n\n\ndef test_acquire_slot_multiple_processes():\n    \"\"\"Test acquiring multiple slots up to max_processes.\"\"\"\n    max_processes = 3\n    slots = []\n\n    # Acquire all available slots\n    for _ in range(max_processes):\n        slot = acquire_slot(\"test_multi\", max_processes)\n        assert slot is not None\n        slots.append(slot)\n\n    # Next attempt should fail\n    slot = acquire_slot(\"test_multi\", max_processes)\n    assert slot is None\n\n    # Release all slots\n    for slot in slots:\n        release_slot(slot)\n\n\ndef test_acquire_slot_osError_handling():\n    \"\"\"Test that OSError during file operations is handled correctly.\"\"\"\n    with patch(\"os.open\") as mock_open:\n        # First call succeeds, second call raises OSError\n        mock_open.side_effect = [OSError(\"Permission denied\"), 123]\n\n        with patch(\"fcntl.flock\"), patch(\"os.close\"):\n            # First slot should fail with OSError, second should succeed\n            res = acquire_slot(\"test_error\", 2)\n            assert res == 123\n            release_slot(res)\n\n\ndef test_acquire_slot_close_exception_handling():\n    \"\"\"Test that exceptions during os.close are handled gracefully.\"\"\"\n    with patch(\"os.open\") as mock_open:\n        mock_open.side_effect = OSError(\"File operation failed\")\n\n        with patch(\"os.close\") as mock_close:\n            # Make close raise an exception too\n            mock_close.side_effect = Exception(\"Close failed\")\n\n            # Should not raise an exception, should try next slot\n            res = acquire_slot(\"test_close_error\", 1)\n            assert res is None\n\n\ndef test_release_slot_with_none():\n    \"\"\"Test that release_slot handles None input gracefully.\"\"\"\n    # Should not raise an exception\n    release_slot(None)\n\n\ndef test_release_slot_with_valid_fd():\n    \"\"\"Test normal release_slot operation.\"\"\"\n    res = acquire_slot(\"test_release\", 1)\n    assert res is not None\n\n    # This should not raise an exception\n    release_slot(res)\n\n\ndef test_release_slot_exception_handling():\n    \"\"\"Test that exceptions during release_slot are handled gracefully.\"\"\"\n    res = acquire_slot(\"test_release_error\", 1)\n    assert res is not None\n\n    with patch(\"fcntl.flock\") as mock_flock:\n        mock_flock.side_effect = Exception(\"Unlock failed\")\n\n        # Should not raise an exception\n        release_slot(res)\n\n\ndef test_release_slot_close_exception():\n    \"\"\"Test that exceptions during os.close in release_slot are handled.\"\"\"\n    res = acquire_slot(\"test_release_close_error\", 1)\n    assert res is not None\n\n    with patch(\"os.close\") as mock_close:\n        mock_close.side_effect = Exception(\"Close failed\")\n\n        # Should not raise an exception\n        release_slot(res)\n\n\ndef test_acquire_slot_all_busy_scenario():\n    \"\"\"Test scenario where all slots are busy and none can be acquired.\"\"\"\n    max_processes = 2\n\n    # Acquire all available slots\n    slot1 = acquire_slot(\"test_all_busy\", max_processes)\n    slot2 = acquire_slot(\"test_all_busy\", max_processes)\n\n    assert slot1 is not None\n    assert slot2 is not None\n\n    # Next attempt should return None\n    slot3 = acquire_slot(\"test_all_busy\", max_processes)\n    assert slot3 is None\n\n    # Release one slot\n    release_slot(slot1)\n\n    # Now we should be able to acquire again\n    slot4 = acquire_slot(\"test_all_busy\", max_processes)\n    assert slot4 is not None\n\n    # Clean up\n    release_slot(slot2)\n    release_slot(slot4)\n\n\ndef test_str_case():\n    \"\"\"Test our month2months function.\"\"\"\n    assert month2months(\"Jan\") == [1]\n    assert month2months(\"jan\") == [1]\n    assert month2months(\"JAN\") == [1]\n    assert month2months(\" 01 \") == [1]\n"
  },
  {
    "path": "tests/iemweb/urls.txt",
    "content": "/afos/retrieve.py?sdate=2024-1-31&edate=2024-1-1&pil=DSMDSM\n/afos/retrieve.py?sdate=2024-01-31&edate=2024-03-01&pil=DSMDSM&ttaaii=\n/afos/retrieve.py?pil=MTRZZZ\n/autoplot/index.py\n/cgi-bin/afos/retrieve.py?pil=AFDGRR&center=&limit=1&sdate=&edate=\n/cgi-bin/request/asos.py?station=AMW&hours=1&data=tmpf\n/cgi-bin/request/asos.py?station=AMW&hours=1&data=tmpf\n/cgi-bin/request/asos.py?station=AMW&data=all&year1=2020&month1=7&day1=1&year2=2020&month2=7&day2=28&tz=Etc%2FUTC&format=onlytdf&latlon=yes&elev=no&missing=empty&trace=null&direct=no&report_type=1&report_type=3&report_type=4\n/cgi-bin/request/coop.py?network=IACLIMATE&stations=IATAME&year1=2018&month1=1&day1=1&year2=2018&month2=7&day2=28&model=salus&what=excel&delim=comma&gis=no&scenario_year=2023\n/cgi-bin/request/coop.py?network=IACLIMATE&stations=IATAME&year1=2018&month1=1&day1=1&year2=2018&month2=7&day2=28&model=dndc&what=excel&delim=comma&gis=no&scenario_year=2023\n/cgi-bin/request/coop.py?network=IACLIMATE&stations=IATAME&year1=2018&month1=1&day1=1&year2=2018&month2=7&day2=28&model=daycent&what=excel&delim=comma&gis=no&scenario_year=2023\n/cgi-bin/request/coop.py?network=IACLIMATE&stations=IATAME&year1=2018&month1=1&day1=1&year2=2018&month2=7&day2=28&model=century&what=excel&delim=comma&gis=no&scenario_year=2023\n/cgi-bin/request/coop.py?network=IACLIMATE&stations=IATAME&year1=2018&month1=1&day1=1&year2=2018&month2=7&day2=28&model=apsim&what=excel&delim=comma&gis=no&scenario_year=2023\n/cgi-bin/request/coop.py?station=BD__ASOS&year1=1981&month1=01&day1=01&year2=2023&month2=12&day2=31&vars=high&format=comma&with_header=yes\n/cgi-bin/request/coopobs.py?network=IA_COOP&stations=_ALL&year1=2024&month1=10&day1=22&year2=2024&month2=10&day2=22&what=download&delim=comma\n/cgi-bin/request/gis/lsr.py?sts=2024-01-01T00:00Z&ets=2024-01-02T00:00Z&magge=\n/cgi-bin/request/gis/misc.py?sts=2024-10-25T23:59:59Z&ets=2024-10-25T23:59:00Z\n/cgi-bin/request/gis/nexrad_storm_attrs.py?sts=2024-01-01T00:00:00Z&ets=2024-07-31T23:59:59Z&radar=DMX,DVN,FSD,ARX\n/cgi-bin/request/gis/pireps.py?fmt=csv&degrees=3.0&lon=-91.99&lat=41.99&artcc=_ALL&year1=2024&month1=7&day1=31&hour1=0&minute1=0&year2=2024&month2=7&day2=31&hour2=23&minute2=59\n/cgi-bin/request/gis/pireps.py?fmt=shp&degrees=3.0&lon=-91.99&lat=41.99&artcc=_ALL&year1=2024&month1=7&day1=31&hour1=0&minute1=0&year2=2024&month2=7&day2=31&hour2=23&minute2=59\n/cgi-bin/request/gis/pireps.py?fmt=csv&filter=1&degrees=10.0&lon=-91.99&lat=41.99&artcc=_ALL&year1=2024&month1=7&day1=31&hour1=0&minute1=0&year2=2024&month2=7&day2=31&hour2=23&minute2=59\n/cgi-bin/request/gis/pireps.py?sts=2026-03-01T00:00:00Z&ets=2026-03-01T00:00:01Z\n/cgi-bin/request/gis/spc_mcd.py?year1=2024&month1=1&day1=1&hour1=0&minute1=0&year2=2024&month2=7&day2=29&hour2=0&minute2=0\n/cgi-bin/request/gis/watchwarn.py?wfo=KDMX&wfo=KDVN&sts=2024-05-21T00:00:00Z&ets=2024-05-21T23:59:59Z\n/cgi-bin/request/isusm.py?mode=hourly&timeres=hourly&station=AMFI4&year1=2024&month1=7&day1=1&year2=2024&month2=7&day2=25&vars=tmpf&vars=relh&vars=sv&vars=sv2&todisk=yes&format=excel&missing=-99&tz=America%2FChicago\n/cgi-bin/request/isusm.py?mode=hourly&timeres=hourly&station=AMFI4&year1=2024&month1=7&day1=1&year2=2024&month2=7&day2=25&vars=tmpf&vars=relh&vars=sv&vars=sv2&todisk=yes&format=comma&missing=-99&tz=America%2FChicago\n/cgi-bin/request/isusm.py?mode=inversion&station=BOOI4&year1=2021&month1=1&day1=1&year2=2024&month2=7&day2=25&todisk=yes&format=comma&missing=-99&tz=America%2FChicago\n/cgi-bin/request/isusm.py?mode=inversion&station=BOOI4&year1=2021&month1=7&day1=25&year2=2024&month2=7&day2=21&todisk=yes&format=comma&missing=-99&tz=America%2FChicago\n/cgi-bin/request/isusm.py?mode=daily&station=AHTI4&station=CNAI4&year1=2024&month1=7&day1=1&year2=2024&month2=7&day2=25&vars=high&vars=low&vars=bpres_avg&vars=sv&format=comma&missing=\n/cgi-bin/request/isusm.py?mode=daily&station=AHDI4&year1=2024&month1=7&day1=1&year2=2024&month2=11&day2=19&vars=chillhours&chillbase=70&chillceil=145&format=comma&missing=-99\n/cgi-bin/request/isusm.py?station=AHDI4&mode=daily&sts=2000-07-01T00:00Z&ets=2000-08-01T00:00Z&format=tab\n/cgi-bin/request/isusm.py?station=AHDI4&mode=hourly&sts=2020-07-01T00:00Z&ets=2020-08-01T00:00Z&format=comma&tz=UTC\n/cgi-bin/request/metars.py?valid=2020070100\n/cgi-bin/mywindrose.py?station=QQQ&network=IA_ASOS\n/cgi-bin/mywindrose.py?station=AMW\n/geojson/network.py?network=FPS\n/geojson/usdm.py?date=2099-01-01\n/geojson/sbw.geojson?sts=202405260500&ets=202405270500\n/geojson/sbw.geojson?sts=202405260500&ets=202405270500&wfos=\n/geojson/sbw.geojson?sts=202405260500&ets=202405270500&wfo=DMX\n/geojson/sbw.geojson?sts=202405260500&ets=202405270500&wfos=DMX,OAX\n/iemre/hourly.py?lat=42&lon=-95&date=2023-01-01\n/iemre/multiday.py?sdate=2017-01-02&edate=2017-01-01&lon=-96&lat=43&forecast=1\n/GIS/tiff/index.py?year=2000&month=1&day=1\n/json/cf6.py?station=KDSM&year=2024&fmt=json\n/json/cf6.py?station=KDSM&year=2024&fmt=csv\n/json/cli.json?station=KDSM&year=2024&fmt=csv\n/json/cli.json?station=KDSM&year=2024&fmt=json\n/json/ibw_tags.py?wfo=DMX&year=2024\n/json/ibw_tags.py?year=2024&damagetag=CONSIDERABLE\n/json/mcd_bysize.py?count=20&sort=ASC\n/json/nwstext.py?product_id=202101010000-KDMX-TTAAII-AAABBB-RRA\n/json/radar.py?radar=USCOMP&start=2020-05-07T15%3A00%3A00Z&operation=products\n/json/raob.py?station=_OAX&ts=2024-07-19T12:00:00Z\n/json/raob.py?ts=202407191200\n/json/ridge_current.py?product=N0B\n/json/sbw_by_point.py?lat=42&lon=-95&valid=2024-07-19T12:00:00Z\n/json/sbw_by_point.py?lat=42&lon=-95&sdate=2024/01/01&edate=2024-07-19\n/json/sbw_by_point.py?lat=42&lon=-95&sdate=2024/01/01&edate=2024-07-19&fmt=csv\n/json/sbw_by_point.py?lat=42&lon=-95&fmt=xlsx\n/json/spc_bysize.py?syear=2000&day=2&cat=CATEGORICAL&threshold=SLGT\n/json/stage4.py?lon=-81.7576&lat=26.1256&valid=2024-07-19\n/json/tms.json?callback=jQuery18307623279004695058_1720815997583&_=1721389351274\n/json/vtec_events_byugc.json?ugc=IAC169&fmt=csv\n/json/vtec_events_byugc.json?ugc=IAC169&fmt=excel\n/json/vtec_events_byugc.json?ugc=IAC169&fmt=json\n/request/maxcsv.py?q=monthlysummary_KDAL_2018_13.txt\n/request/maxcsv.py?q=monthlysummary_KDSM_2024_1\n/request/maxcsv.py?q=moonphase_-95.44_41.99\n/request/maxcsv.py?q=monthlysummary_CYYT_2018.txt\n/request/maxcsv.py?q=moon_-95.44_41.99\n/request/maxcsv.py?q=uvi\n/request/maxcsv.py?q=lsrsnowfall_ia\n/request/maxcsv.py?q=lsrsnowfall\n/request/maxcsv.py?q=kcrgcitycam\n/request/maxcsv.py?q=iowatoday\n/request/maxcsv.py?q=iowayesterday\n/request/maxcsv.py?q=iarwis\n/request/maxcsv.py?q=iaroadcond\n/request/maxcsv.py?q=isusm\n/request/maxcsv.py?q=ahps_DEWI4\n/request/maxcsv.py?q=ahpsfx_DEWI4\n/request/maxcsv.py?q=ahpsobs_DEWI4\n/search?q=uzak+%C5%9Fehi+r+21.+b%C3%B6l%C3%BCm\n"
  },
  {
    "path": "tests/iemweb/urls422.txt",
    "content": "/afos/retrieve.py?sdate=2024-1-1&edate=2024-1-31&pil=DSMDSMDSM\n/afos/retrieve.py?pil=MTRDSM&fmt=zip\n/autoplot/autoplot.py?q=84&sector=IA&network=WFO&src:mrms&opt=per&usdm=yes&ptype=g&date=2021-07-25\\xc2\\xa7or&edate=2021-07-31&clip=yes&cmap=BrBG::_r=t&dpi=100&fmt=geotiff\n/autoplot/index.py?edate=2013%2F10%2F14&opt=acc&ptype=c&q=84&sdate=2013%2F10%2F01§or%3DIA&src=mrms&usdm=no\n/autoplot/index.py?_opt_edate=on&_opt_sdate=on&_r=t&_wait=no&cmap=jet&dpi=100&edate=0729%C2%A7or%3Dmidwest&month=all&opt=both&q=125&sdate=0723&src=ncei_climate91&state=IA&var=avg_high\n/autoplot/index.py?network=IA_ASOS&ets=2024%2F07%2F30%201200&_r=43&_wait=no&q=211&zstation=DSM&ptype=meteo&sts=scnr_engine_sink_tracer_47ac7a1a8e11a2a64c14b1607dbac6be\n/autoplot/index.py?q=109&by=state&sdate=2025%2F01%2F01+0000&edate=&var=count&w=set&phenomenav1=FF&significancev1=W&phenomenav2=SV&significancev2=W&phenomenav3=SV&significancev3=W&phenomenav4=SV&significancev4=W&e=all&cmap=jet&_r=t&dpi=100&_fmt=png\n/autoplot/index.py?_wait=no&q=15&year=2019&varname=high&station=IATDSM&network=scnr\n/autoplot/index.py?_wait=no&q=-15\n/autoplot/index.py?q=928\n/autoplot/index.py?_wait=no&q=54&network1=IA_ASOS&zstation1=ALO&network2=iaASOS&zstation2=OLZ\n/cgi-bin/request/gis/watchwarn.py?timeopt=1\n/cgi-bin/request/gis/watchwarn.py?timeopt=1&year1=2025&month1=1&day1=1\n/cgi-bin/request/gis/watchwarn.py?timeopt=2\n/cgi-bin/mywindrose.py?nsector=36&station=_OAX&network=RAOB&day1=1&day2=31&month1=5&month2=5&year1=1947&year2=2018&hour1=12&hour2=12&minute1=0&minute2=0&units=mph&fmt=png&dpi=100&conv=from&monthlimit=1&justdata=true\n/cgi-bin/request/asos.py?station=OKC%0A&data=tmpf&data=dwpf&data=relh&data=sknt&data=mslp&year1=2023&month1=1&day1=1&year2=2023&month2=12&day2=31&tz=Etc%2FUTC&format=onlycomma&latlon=no&elev=no&missing=M&trace=T&direct=yes&report_type=3\n/cgi-bin/request/asos.py?station=OKC&network=/etc/passwd\n/cgi-bin/request/coop.py?network=%22IA%22CLIMATE&stations=%22IA%220000&year1=1988&month1=1&day1=1&year2=2024&month2=12&day2=31&vars%5B%5D=high&vars%5B%5D=highc&vars%5B%5D=low&vars%5B%5D=lowc&vars%5B%5D=precip&vars%5B%5D=precipmm&model=apsim&what=view&delim=comma&gis=no&scenario_year=2023\n/cgi-bin/request/coopobs.py?network=IA_COOP&stations=_ALL&sts=2000-01-01&ets=2020-01-01\n/cgi-bin/request/coopobs.py?network=IA_COOP&sts=2000-01-01&ets=2020-01-01\n/cgi-bin/request/coopobs.py?network=IA_COOP&ets=2024-10-22&what=download&delim=comma&stations=%2Fproc%2Fself%2Fenviron%00.&sts=2024-10-22\n/cgi-bin/request/feel.py?year1=2024&month1=7&day1=1\n/cgi-bin/request/gis/awc_gairmets.py\n/cgi-bin/request/gis/cwas.py\n/cgi-bin/request/gis/nexrad_storm_attrs.py\n/cgi-bin/request/gis/nexrad_storm_attrs.py?radar=ALL&sts=2020-01-01&ets=2024-01-01\n/cgi-bin/request/gis/nexrad_storm_attrs.py?fmt=csv&sts=2008-01-01T00:00:00Z&ets=2009-01-01T00:00:00Z\n/cgi-bin/request/gis/sigmets.py\n/cgi-bin/request/gis/watchwarn.py?location_group=states&sts=2024-05-21T00:00:00Z&ets=2024-05-21T23:59:59Z\n/cgi-bin/request/gis/watchwarn.py?sts=2022-05-21T00:00:00Z&ets=2024-05-21T23:59:59Z\n/cgi-bin/request/gis/lsr.py?west=-100\n/cgi-bin/request/gis/lsr.py?west=-100&east=-120&south=40&north=30\n/cgi-bin/request/gis/pireps.py?sts=2026-01-25T12:00:00Z\n/cgi-bin/request/gis/wpc_mpd.py?sts=2026-01-25T12:00:00Z\n/cgi-bin/request/hads.py?stations=DNKI4\n/cgi-bin/request/hads.py?stations=DNKI4,DSXI4&sts=2024-01-01T00:00:00Z&ets=2025-01-01T00:00:00Z\n/cgi-bin/request/hads.py?stations=_ALL&network=QQ_DCP&sts=2024-01-01T00:00:00Z&ets=2024-01-02T00:00:00Z\n/cgi-bin/request/hml.py?stations=DNKI4,DSXI4&sts=2024-12-01T00:00:00Z&ets=2025-01-01T00:00:00Z&tz=Bogus\n/cgi-bin/request/hourlyprecip.py\n/cgi-bin/request/hourlyprecip.py?station=DSM\n/cgi-bin/request/hourlyprecip.py?tz=Etc\n/cgi-bin/request/nlaeflux.py?syear=2000&eyear=2001&smonth=1&emonth=2&sday=1&eday=2&station=trouble*\n/cgi-bin/request/other.py?station=AAA\n/cgi-bin/request/raster2netcdf.py?dstr=201710251200&prod=bogus\n/cgi-bin/request/rwis.py?network=IA_RWIS&stations=_ALL&sts=2020-01-01&ets=2025-01-01\n/cgi-bin/request/scan.py?stations=_ALL\n/cgi-bin/request/scan.py?stations=A,B,C,D,E,F,G,H,I,J,K,L&sts=2022-02-01&ets=2025-01-01\n/cgi-bin/request/scan.py?year1=2025&month1=1&day1=1&hour1=0&year2=2025&month2=12&day2=31&hour2=23&vars=test&what=view&stations=IA0000\n/cgi-bin/request/smos.py?sts=2023-01-01T00:00Z&ets=2024-01-01T00:00Z&lat=42.0&lon=-93.0\n/cgi-bin/request/talltowers.py?station=MCAI4&var=nw_ws&z=100&agg=std&sts=2024-01-01T00:00:00Z&ets=2024-01-02T00:00:00Z\n/cgi-bin/request/wmo_bufr_srf.py?station=OT0001&sts=2025-09-01T00:00Z&ets=2025-09-30T23:59Z&format=csv\n/cgi-bin/request/wmo_bufr_srf.py?station=OT0001&sts=2025-09-01T00:00Z&ets=2025-09-30T23:59Z&format=json\n/cgi-bin/request/wmo_bufr_srf.py?station=OT0001&sts=2025-09-01T00:00Z&ets=2025-09-30T23:59Z&format=excel\n/cgi-bin/request/wmo_bufr_srf.py?stations=AAA\n/cgi-bin/mywindrose.py?station=QQQ\n/geojson/station_neighbors.py?station=XXX&network=IA_ASOS\n/geojson/sbw.geojson?sts=200809130559&ets=000007231555&wfos=HGX\n/geojson/sbw.geojson?sts=200809130559&wfos=HGX\n/geojson/sbw.py?sts=2000&sts=2000\n/geojson/lsr.geojson?east=-80&west=-70&north=42&south=40\n/geojson/lsr.geojson?east=-70&west=-80&north=40&south=50\n/geojson/lsr.geojson?east=-70&west=-80&north=40\n/geojson/convective_sigmet.py?sts=2025-04-01T00:00:00Z\n/geojson/convective_sigmet.py?ets=2025-04-01T00:00:00Z\n/geojson/convective_sigmet.py?sts=2021-04-01T00:00:00Z&ets=2025-04-01T23:59:59Z\n/GIS/tiff/index.py?service=5kmffg&ts=999999999999\n/GIS/tiff/index.py?service=5kmffg&ts=202509110100\n/iemre/daily.py?lat=89.0&lon=0.0&date=2024-01-01\n/iemre/hourly.py?lat=0&lon=0&date=2024-01-01\n/iemre/hourly.py?lat=42&lon=-95&date=2026-01-01&tz=Bogus\n/iemre/multiday.py?sdate=2025-01-01&edate=2025-01-02&lon=-140&lat=10\n/json/nwstext_center_date.py?center=KDMX\n/json/nwstext.py?product_id=202522160452-KDMX-FXUS63-AFDDMX\n/json/prism.py?lat=-140&lon=35&valid=2024-01-01\n/json/prism.py?lat=-140&lon=35\n/json/prism.py?lat=38.64293560387211&lon=-90.3077262041419&sdate=2025-07-22&edate=2024-08-10\n/json/raob.py?ts=1930-01-01T12:00:00Z\n/json/stage4.py?valid=2024-08-11&lon=-102.30&lat=45.10&tz=Boguis\n/json/snowfall_observations_v2.py?wfo=QQQ\n/json/spcoutlook.py?lat=38.907&lon=-77.037&day=4&last=1&cat=ANYS\n/json/wpcoutlook.py?time=crud\n/rainfall/mrms2img.py?year=2016&month=4&day=13&hour=18&minute=0&period=3\n"
  },
  {
    "path": "tests/iemweb/vtec/test_vtec.py",
    "content": "\"\"\"Test things in vtec/{index,f}.py\"\"\"\n\nfrom iemweb.vtec.f import application as f_app\nfrom iemweb.vtec.index import application as index_app\nfrom werkzeug.test import EnvironBuilder, run_wsgi_app\n\n\ndef test_index_unknown_vtec():\n    \"\"\"Test the index page.\"\"\"\n    builder = EnvironBuilder(\n        path=(\n            \"/vtec/?year=2024&wfo=KDMX&phenomena=TO&\"\n            \"significance=W&eventid=1045\"\n        ),\n        base_url=\"https://iem.local/vtec/\",\n    )\n    environ = builder.get_environ()\n    (_app_iter, status, _headers) = run_wsgi_app(index_app, environ)\n    assert status == \"200 OK\"\n\n\ndef test_f_http_redirect():\n    \"\"\"Test the redirect for non https requests.\"\"\"\n    builder = EnvironBuilder(\n        path=\"/vtec/f/2024-O-NEW-KDMX-TO-W-0045\",\n        base_url=\"https://iem.local/vtec/\",\n    )\n    environ = builder.get_environ()\n    environ[\"SCRIPT_URI\"] = \"/vtec/f/2024-O-NEW-KDMX-TO-W-0045\"\n    (_app_iter, status, _headers) = run_wsgi_app(f_app, environ)\n    assert status == \"200 OK\"\n\n\ndef test_index_http_redirect():\n    \"\"\"Test the redirect for non https requests.\"\"\"\n    builder = EnvironBuilder(\n        path=\"/vtec/event/2024-O-NEW-KDMX-TO-W-0045\",\n        base_url=\"https://iem.local/vtec/\",\n    )\n    environ = builder.get_environ()\n    environ[\"SCRIPT_URI\"] = \"/vtec/event/2024-O-NEW-KDMX-TO-W-0045/bah/bah\"\n    (_app_iter, status, headers) = run_wsgi_app(index_app, environ)\n    assert status == \"301 Moved Permanently\"\n    ans = \"/vtec/?wfo=KDMX&phenomena=TO&significance=W&eventid=0045&year=2024\"\n    assert headers[\"Location\"] == ans\n\n\ndef test_index_redirect():\n    \"\"\"Test the redirect.\"\"\"\n    builder = EnvironBuilder(\n        path=\"/vtec/index.py\",\n        base_url=\"https://iem.local/vtec/\",\n        query_string=\"vtec=2024-O-NEW-KDMX-TO-W-0045\",\n    )\n    environ = builder.get_environ()\n    (_app_iter, status, _headers) = run_wsgi_app(index_app, environ)\n    assert status == \"301 Moved Permanently\"\n"
  },
  {
    "path": "tests/run_feature_autoplots.py",
    "content": "\"\"\"Attempt to rerun all feature plots to see what I broke.\"\"\"\n\nimport sys\nfrom datetime import datetime\nfrom multiprocessing import Pool\n\nimport httpx\nimport pandas as pd\nfrom bs4 import BeautifulSoup\nfrom pyiem.database import get_dbconn\nfrom pyiem.util import logger\n\nLOG = logger()\n\n\ndef run_plot(uri):\n    \"\"\"Run this plot\"\"\"\n    uri = f\"http://iem.local/{uri}\"\n    try:\n        resp = httpx.get(uri, timeout=600)\n        soup = BeautifulSoup(resp.content, \"html.parser\")\n        img = soup.find_all(id=\"theimage\")\n        if not img:\n            return True\n        uri = \"http://iem.local{}\".format(img[0][\"src\"])\n        resp = httpx.get(uri, timeout=600)\n    except httpx.TimeoutException:\n        print(f\"{uri[16:]} -> Read Timeout\")\n        return False\n    # Known failures likely due to missing data\n    if resp.status_code == 400:\n        return True\n    if resp.status_code == 504:\n        print(f\"{uri} -> HTTP: {resp.status_code} (timeout)\")\n        return False\n    if resp.status_code != 200 or resp.content == \"\":\n        print(\n            f\"{uri[16:]} -> HTTP: {resp.status_code} \"\n            \"len(content): {len(res.content)}\"\n        )\n\n        return False\n\n    return True\n\n\ndef workflow(entry):\n    \"\"\"Run our queued entry of id and format\"\"\"\n    sts = datetime.now()\n    res = run_plot(entry[1])\n    if res is False:\n        return [entry[0], entry[1], False]\n    ets = datetime.now()\n    return [entry[0], entry[1], (ets - sts).total_seconds()]\n\n\ndef main():\n    \"\"\"Do Something\"\"\"\n    pgconn = get_dbconn(\"mesosite\")\n    cursor = pgconn.cursor()\n    cursor.execute(\n        \"\"\"\n        SELECT date(valid), appurl from feature\n        WHERE appurl ~* '/plotting/auto/'\n        ORDER by valid ASC\n    \"\"\"\n    )\n    queue = cursor.fetchall()\n    LOG.info(\"found %s features\", len(queue))\n    timing = []\n    failed = []\n    pool = Pool(4)\n    for res in pool.imap_unordered(workflow, queue):\n        if res[2] is False:\n            failed.append({\"i\": res[0], \"fmt\": res[1]})\n            continue\n        timing.append({\"i\": res[0], \"fmt\": res[1], \"secs\": res[2]})\n    if not timing:\n        print(\"WARNING: no timing results found!\")\n        return\n    df = (\n        pd.DataFrame(timing)\n        .set_index(\"i\")\n        .sort_values(\"secs\", ascending=False)\n    )\n    print(df.head(5))\n    if failed:\n        print(\"Failures:\")\n        for f in failed:\n            print(\"{} {}\".format(f[\"i\"], f[\"fmt\"]))\n        sys.exit(1)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "tests/run_mapserver.sh",
    "content": "# Test mapserver files\n\n# map2img is mapserver 8, shp2img is mapserver 7\nMSEXEC=\"map2img\"\nif ! command -v $MSEXEC &> /dev/null\nthen\n    MSEXEC=\"shp2img\"\nfi\n\nfor fn in $(find . -type f -name '*.map' -print); do\n  echo $fn;\n  ($MSEXEC -o /dev/null -m $fn || touch MSFAIL);\ndone\n\nif [ -e MSFAIL ]; then\n  rm -f MSFAIL\n  exit 1\nfi\n"
  },
  {
    "path": "tests/stress_tilecache.py",
    "content": "\"\"\"\nGenerate some sequential load to watch what happens to IEM's backend processing\n\"\"\"\n\nimport random\nimport sys\nfrom datetime import datetime\n\nimport requests\n\n\ndef main():\n    \"\"\"Do stressfull things\"\"\"\n    now = datetime(2012, 1, 23)\n    cnt = 0\n    start = datetime.now()\n    istart = start\n    for _ in range(10000):\n        uri = now.strftime(\n            \"http://iem.local/cache/tile.py/1.0.0/ridge::USCOMP-N0R-\"\n            \"%Y%m%d%H%M/\"\n            + str(random.randint(0, 10))\n            + \"/\"\n            + str(random.randint(0, 10))\n            + \"/\"\n            + str(random.randint(0, 10))\n            + \".png\"\n        )\n        resp = requests.get(uri, timeout=5)\n        if resp.status_code != 200:\n            print(f\"Bad response code {resp.status_code} for {uri}\")\n            sys.exit(1)\n        cnt += 1\n        if cnt % 100 == 0:\n            delta = datetime.now() - start\n            delta2 = datetime.now() - istart\n            print(\n                (\"%6i %9.5f req/s %9.5f req/s\")\n                % (\n                    cnt,\n                    100.0 / delta2.total_seconds(),\n                    (float(cnt) / delta.total_seconds()),\n                )\n            )\n            istart = datetime.now()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "tests/test_mod_wsgi.py",
    "content": "\"\"\"Test any mod_wsgi apps in this repo.\"\"\"\n\nimport os\n\nimport httpx\nimport pytest\n\n\ndef apps():\n    \"\"\"yield apps found in this repo.\"\"\"\n    # Find any files in htdocs and cgi-bin named *.py\n    # that are not named __init__.py\n    # and import them as modules.\n    # Then yield them as apps.\n    # This will allow us to test any mod_wsgi apps\n    # in this repo.\n    for _rt, _dirs, files in os.walk(\".\"):\n        if _rt.startswith(\"./htdocs/plotting/auto/scripts\"):\n            continue\n        if _rt.startswith((\"./htdocs\", \"./cgi-bin\")):\n            for file in files:\n                fullpath = os.path.join(_rt, file)\n                if fullpath.endswith(\".py\") and fullpath != \"__init__.py\":\n                    yield fullpath.replace(\"/htdocs\", \"\")[1:]  # drop the .\n\n\n@pytest.mark.parametrize(\"app\", apps())\ndef test_app(app):\n    \"\"\"Test the app.\"\"\"\n    resp = httpx.get(f\"http://iem.local{app}\", timeout=30)\n    # 422 IncompleteWebRequest when there's missing CGI params\n    # 301 The app could be upset about being approached via http\n    # 503 some of apps are now proxied, so alas\n    assert resp.status_code in [422, 301, 200, 503]\n"
  },
  {
    "path": "tests/test_php.py",
    "content": "\"\"\"Smoke test PHP calls through the webserver.\"\"\"\n\nimport os\nfrom pathlib import Path\n\nimport pytest\nimport requests\nfrom bs4 import BeautifulSoup\n\n# These mapscript apps need /mesonet/data/gis/static content\nPUNTING = [\n    \"/GIS/apps/agclimate/chill.php\",\n    \"/GIS/apps/agclimate/gsplot.php\",\n    \"/GIS/apps/agclimate/month.php\",\n    \"/GIS/apps/coop/gsplot.php\",\n    \"/GIS/apps/coop/index.php\",\n    \"/GIS/apps/coop/plot.phtml\",\n    \"/GIS/rby-overview.php\",\n    \"/GIS/apps/onsite/robins.php\",\n    \"/GIS/rad-by-year.php\",\n    \"/GIS/radmap.php\",\n    \"/GIS/apps/rview/compare.phtml\",\n    \"/roads/iem.php\",\n    \"/roads/tv.php\",\n    \"/GIS/apps/coop/request.php\",\n    \"/GIS/sbw-history.php\",\n]\n\n\ndef get_urls(extra):\n    \"\"\"yield up things we can run.\"\"\"\n    fn = Path(__file__).parent / f\"urls{extra}.txt\"\n    with open(fn) as fh:\n        for line in fh:\n            if line.startswith(\"#\") or line.strip() == \"\":\n                continue\n            yield line.strip()\n\n\ndef apps():\n    \"\"\"yield apps found in this repo.\"\"\"\n    for _rt, _dirs, files in os.walk(\"htdocs\"):\n        for file in files:\n            fullpath = os.path.join(_rt, file)\n            if fullpath.endswith((\".php\", \".phtml\")):\n                app = fullpath.replace(\"htdocs\", \"\")\n                if app in PUNTING:\n                    continue\n                yield app\n\n\n@pytest.mark.parametrize(\"app\", apps())\ndef test_php(app):\n    \"\"\"Test the app.\"\"\"\n    resp = requests.get(\n        f\"http://iem.local{app}\", timeout=30, allow_redirects=False\n    )\n    # 422 IncompleteWebRequest when there's missing CGI params\n    # 301 The app could be upset about being approached via http\n    # 302 redirect\n    # 503 Service Temporarily Unavailable\n    assert resp.status_code in [503, 422, 301, 302, 200]\n\n    # Test that the HTML generated is well formed.\n    if resp.status_code == 200 and \"html\" in resp.headers[\"Content-Type\"]:\n        soup = BeautifulSoup(resp.text, \"lxml\")\n        assert soup.find(\"title\") is not None\n\n\n@pytest.mark.parametrize(\"url\", get_urls(\"\"))\ndef test_php_urls(url):\n    \"\"\"Test the app.\"\"\"\n    resp = requests.get(\n        f\"http://iem.local{url}\", timeout=30, allow_redirects=False\n    )\n    # 422 IncompleteWebRequest when there's missing CGI params\n    # 301 The app could be upset about being approached via http\n    # 302 redirect\n    # 503 Service Temporarily Unavailable\n    assert resp.status_code in [503, 422, 301, 302, 200]\n\n\n@pytest.mark.parametrize(\"url\", get_urls(\"405\"))\ndef test_php_urls405(url):\n    \"\"\"Test the app.\"\"\"\n    resp = requests.get(\n        f\"http://iem.local{url}\", timeout=30, allow_redirects=False\n    )\n    # This stinks\n    assert resp.status_code in [301, 405]\n"
  },
  {
    "path": "tests/urls.txt",
    "content": "/GIS/apps/rview/warnings.phtml?autopilot=0&osite=AKQ&tzoff=0&lat0=36.98&lon0=-77&layers=nexrad&layers=warnings&layers=watches&layers=blank&layers=cwas&layers=uscounties&site=AKQ&tz=EST&year=2012&month=2&day=29&hour=13&minute=25&warngeo=both&zoom=250&imgsize=800x600&loop=0&frames=10&interval=5&filter=1&cu=1&sortcol=expire&sortdir=0&lsrlook=+/-&lsrwindow=15&extents=-78.333889816361,35.98,-75.666110183639,37.98\n/request/awos/1min_dl.php?station%5B%5D=AXA&tz=UTC&year1=2025&month1=1&day1=1&hour1=0&minute1=0&year2=2025&month2=1&day2=1&hour2=0&minute2=0&vars%5B%5D=tmpf&vars%5B%5D=dwpf&sample=1min&what=download&delim=comma&gis=no\n/request/coop/dl.php?network=IACLIMATE&station[]=IA8742&year1=2025&month1=03&day1=06&year2=2025&month2=03&day2=07&vars[]=high&vars[]=low&vars[]=precip&what=view&delim=comma&gis=no\n"
  },
  {
    "path": "tests/urls405.txt",
    "content": "/wx/afos/p.php?e=\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"lib\": [\"ES2020\", \"DOM\", \"DOM.Iterable\"],\n    \"allowJs\": true,\n    \"checkJs\": false,\n    \"noEmit\": true,\n    \"strict\": false,\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"resolveJsonModule\": true,\n    \"declaration\": false,\n    \"declarationMap\": false,\n    \"sourceMap\": false,\n    \"removeComments\": false,\n    \"noImplicitAny\": false,\n    \"strictNullChecks\": false,\n    \"strictFunctionTypes\": false,\n    \"noImplicitReturns\": false,\n    \"noImplicitThis\": false,\n    \"noUnusedLocals\": false,\n    \"noUnusedParameters\": false,\n    \"typeRoots\": [\"./types\", \"./node_modules/@types\"],\n    \"types\": []\n  },\n  \"include\": [\n    \"htdocs/**/*.js\",\n    \"htdocs/**/*.mjs\",\n    \"htdocs/**/*.ts\",\n    \"types/**/*.d.ts\"\n  ],\n  \"exclude\": [\n    \"node_modules\",\n    \"vendor\",\n    \"**/*.min.js\",\n    \"**/ol.js\",\n    \"**/ol-*.js\"\n  ]\n}\n"
  }
]